All functions:
  Elements:
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: p11_kit_module_for_name
      Src: /src/pdns/meson/pkcs11/p11_kit_module_for_name.cc:5,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7
      start: 3
    functionDepth: 0
    functionLinenumber: 3
    functionLinenumberEnd: 7
    functionName: main
    functionSourceFile: /src/pdns/meson/pkcs11/p11_kit_module_for_name.cc
    functionUses: 0
    functionsReached:
    - p11_kit_module_for_name
    linkageType: ''
    returnType: int
    signature: int main()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::filesystem::status
      Src: /src/pdns/meson/cxx-fs/cxx-fs.cc:6,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8
      start: 3
    functionDepth: 0
    functionLinenumber: 3
    functionLinenumberEnd: 8
    functionName: main
    functionSourceFile: /src/pdns/meson/cxx-fs/cxx-fs.cc
    functionUses: 0
    functionsReached:
    - std::filesystem::status
    linkageType: ''
    returnType: int
    signature: int main()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: __sanitizer_finish_switch_fiber
      Src: /src/pdns/meson/sanitizers/address-sanitizer-fiber-switching/sanitizer_finish_switch_fiber_3ptrs.cc:5,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7
      start: 3
    functionDepth: 0
    functionLinenumber: 3
    functionLinenumberEnd: 7
    functionName: main
    functionSourceFile: /src/pdns/meson/sanitizers/address-sanitizer-fiber-switching/sanitizer_finish_switch_fiber_3ptrs.cc
    functionUses: 0
    functionsReached:
    - __sanitizer_finish_switch_fiber
    linkageType: ''
    returnType: int
    signature: int main()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: __sanitizer_finish_switch_fiber
      Src: /src/pdns/meson/sanitizers/address-sanitizer-fiber-switching/sanitizer_finish_switch_fiber_1ptr.cc:5,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7
      start: 3
    functionDepth: 0
    functionLinenumber: 3
    functionLinenumberEnd: 7
    functionName: main
    functionSourceFile: /src/pdns/meson/sanitizers/address-sanitizer-fiber-switching/sanitizer_finish_switch_fiber_1ptr.cc
    functionUses: 0
    functionsReached:
    - __sanitizer_finish_switch_fiber
    linkageType: ''
    returnType: int
    signature: int main()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strerror_r
      Src: /src/pdns/meson/strerror/strerror_r.c:5,1
    - Dst: strerror_r
      Src: /src/pdns/meson/strerror/strerror_r.c:6,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8
      start: 3
    functionDepth: 0
    functionLinenumber: 3
    functionLinenumberEnd: 8
    functionName: main
    functionSourceFile: /src/pdns/meson/strerror/strerror_r.c
    functionUses: 0
    functionsReached:
    - strerror_r
    linkageType: ''
    returnType: int
    signature: int main ()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: __atomic_add_fetch
      Src: /src/pdns/meson/atomics/atomic_add_fetch.cc:6,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8
      start: 3
    functionDepth: 0
    functionLinenumber: 3
    functionLinenumberEnd: 8
    functionName: main
    functionSourceFile: /src/pdns/meson/atomics/atomic_add_fetch.cc
    functionUses: 0
    functionsReached:
    - __atomic_add_fetch
    linkageType: ''
    returnType: int
    signature: int main()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pthread_setname_np
      Src: /src/pdns/meson/pthread-setname/pthread_setname_np_1arg.cc:8,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 9
      start: 6
    functionDepth: 0
    functionLinenumber: 6
    functionLinenumberEnd: 9
    functionName: main
    functionSourceFile: /src/pdns/meson/pthread-setname/pthread_setname_np_1arg.cc
    functionUses: 0
    functionsReached:
    - pthread_setname_np
    linkageType: ''
    returnType: int
    signature: int main()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pthread_set_name_np
      Src: /src/pdns/meson/pthread-setname/pthread_set_name_np_void_2args.cc:8,1
    - Dst: pthread_self
      Src: /src/pdns/meson/pthread-setname/pthread_set_name_np_void_2args.cc:8,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 10
      start: 6
    functionDepth: 0
    functionLinenumber: 6
    functionLinenumberEnd: 10
    functionName: main
    functionSourceFile: /src/pdns/meson/pthread-setname/pthread_set_name_np_void_2args.cc
    functionUses: 0
    functionsReached:
    - pthread_set_name_np
    - pthread_self
    linkageType: ''
    returnType: int
    signature: int main()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pthread_setname_np
      Src: /src/pdns/meson/pthread-setname/pthread_setname_np_2args.cc:8,1
    - Dst: pthread_self
      Src: /src/pdns/meson/pthread-setname/pthread_setname_np_2args.cc:8,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 10
      start: 6
    functionDepth: 0
    functionLinenumber: 6
    functionLinenumberEnd: 10
    functionName: main
    functionSourceFile: /src/pdns/meson/pthread-setname/pthread_setname_np_2args.cc
    functionUses: 0
    functionsReached:
    - pthread_setname_np
    - pthread_self
    linkageType: ''
    returnType: int
    signature: int main()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pthread_set_name_np
      Src: /src/pdns/meson/pthread-setname/pthread_set_name_np_2args.cc:8,1
    - Dst: pthread_self
      Src: /src/pdns/meson/pthread-setname/pthread_set_name_np_2args.cc:8,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 9
      start: 6
    functionDepth: 0
    functionLinenumber: 6
    functionLinenumberEnd: 9
    functionName: main
    functionSourceFile: /src/pdns/meson/pthread-setname/pthread_set_name_np_2args.cc
    functionUses: 0
    functionsReached:
    - pthread_set_name_np
    - pthread_self
    linkageType: ''
    returnType: int
    signature: int main()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pthread_setname_np
      Src: /src/pdns/meson/pthread-setname/pthread_setname_np_3args.cc:8,1
    - Dst: pthread_self
      Src: /src/pdns/meson/pthread-setname/pthread_setname_np_3args.cc:8,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 9
      start: 6
    functionDepth: 0
    functionLinenumber: 6
    functionLinenumberEnd: 9
    functionName: main
    functionSourceFile: /src/pdns/meson/pthread-setname/pthread_setname_np_3args.cc
    functionUses: 0
    functionsReached:
    - pthread_setname_np
    - pthread_self
    linkageType: ''
    returnType: int
    signature: int main()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8
      start: 3
    functionDepth: 0
    functionLinenumber: 3
    functionLinenumberEnd: 8
    functionName: main
    functionSourceFile: /src/pdns/meson/timet-sign/timet_sign.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int main()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BN_new
      Src: /src/pdns/meson/libcrypto/bn_new.cc:5,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7
      start: 3
    functionDepth: 0
    functionLinenumber: 3
    functionLinenumberEnd: 7
    functionName: main
    functionSourceFile: /src/pdns/meson/libcrypto/bn_new.cc
    functionUses: 0
    functionsReached:
    - BN_new
    linkageType: ''
    returnType: int
    signature: int main()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::tie
      Src: /src/pdns/pdns/communicator.hh:61,1
    - Dst: std::tie
      Src: /src/pdns/pdns/communicator.hh:61,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' b'
    argTypes:
    - SuckRequest
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 59
    functionDepth: 0
    functionLinenumber: 59
    functionLinenumberEnd: 62
    functionName: operator<(const SuckRequest& b) const
    functionSourceFile: /src/pdns/pdns/communicator.hh
    functionUses: 0
    functionsReached:
    - std::tie
    linkageType: ''
    returnType: bool
    signature: bool operator<(const SuckRequest& b) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: NotificationQueue::add
      Src: /src/pdns/pdns/communicator.hh:82,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' domain'
    - ' ipstring'
    argTypes:
    - ZoneName
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 79
    functionDepth: 0
    functionLinenumber: 79
    functionLinenumberEnd: 83
    functionName: NotificationQueue::add
    functionSourceFile: /src/pdns/pdns/communicator.hh
    functionUses: 1
    functionsReached:
    - NotificationQueue::add
    linkageType: ''
    returnType: void
    signature: void add(const ZoneName& domain, const string& ipstring, time_t delay
      = 0)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/communicator.hh:89,1
    - Dst: dns_random_uint16
      Src: /src/pdns/pdns/communicator.hh:91,1
    - Dst: time
      Src: /src/pdns/pdns/communicator.hh:92,1
    - Dst: push_back
      Src: /src/pdns/pdns/communicator.hh:94,1
    - Dst: std::move
      Src: /src/pdns/pdns/communicator.hh:94,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - ' domain'
    - ' ipaddress'
    argTypes:
    - ZoneName
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 85
    functionDepth: 0
    functionLinenumber: 85
    functionLinenumberEnd: 95
    functionName: NotificationQueue::add
    functionSourceFile: /src/pdns/pdns/communicator.hh
    functionUses: 1
    functionsReached:
    - std::move
    - push_back
    - time
    - dns_random_uint16
    - toStringWithPort
    linkageType: ''
    returnType: void
    signature: void add(const ZoneName& domain, const ComboAddress& ipaddress, time_t
      delay = 0)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: begin
      Src: /src/pdns/pdns/communicator.hh:99,1
    - Dst: end
      Src: /src/pdns/pdns/communicator.hh:99,1
    - Dst: ComboAddress::addressOnlyEqual
      Src: /src/pdns/pdns/communicator.hh:101,1
    - Dst: erase
      Src: /src/pdns/pdns/communicator.hh:102,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 3
    argNames:
    - ' remote'
    - id
    - ' domain'
    argTypes:
    - ComboAddress
    - uint16_t
    - ZoneName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 107
      start: 97
    functionDepth: 0
    functionLinenumber: 97
    functionLinenumberEnd: 107
    functionName: NotificationQueue::removeIf
    functionSourceFile: /src/pdns/pdns/communicator.hh
    functionUses: 0
    functionsReached:
    - erase
    - ComboAddress::addressOnlyEqual
    - end
    - begin
    linkageType: ''
    returnType: bool
    signature: bool removeIf(const ComboAddress& remote, uint16_t id, const ZoneName&
      domain)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: begin
      Src: /src/pdns/pdns/communicator.hh:111,1
    - Dst: end
      Src: /src/pdns/pdns/communicator.hh:111,1
    - Dst: time
      Src: /src/pdns/pdns/communicator.hh:112,1
    - Dst: time
      Src: /src/pdns/pdns/communicator.hh:115,1
    - Dst: erase
      Src: /src/pdns/pdns/communicator.hh:122,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 4
    argNames:
    - ' domain'
    - ' ip'
    - id
    - ' purged'
    argTypes:
    - ZoneName
    - string
    - uint16_t*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 127
      start: 109
    functionDepth: 0
    functionLinenumber: 109
    functionLinenumberEnd: 127
    functionName: NotificationQueue::getOne
    functionSourceFile: /src/pdns/pdns/communicator.hh
    functionUses: 0
    functionsReached:
    - time
    - erase
    - end
    - begin
    linkageType: ''
    returnType: bool
    signature: bool getOne(ZoneName& domain, string& ip, uint16_t* id, bool& purged)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::max
      Src: /src/pdns/pdns/communicator.hh:131,1
    - Dst: begin
      Src: /src/pdns/pdns/communicator.hh:132,1
    - Dst: end
      Src: /src/pdns/pdns/communicator.hh:132,1
    - Dst: min
      Src: /src/pdns/pdns/communicator.hh:133,1
    - Dst: time
      Src: /src/pdns/pdns/communicator.hh:134,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 135
      start: 129
    functionDepth: 0
    functionLinenumber: 129
    functionLinenumberEnd: 135
    functionName: NotificationQueue::earliest
    functionSourceFile: /src/pdns/pdns/communicator.hh
    functionUses: 0
    functionsReached:
    - pdns::max
    - time
    - end
    - begin
    - min
    linkageType: ''
    returnType: time_t
    signature: time_t earliest()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 168
      start: 161
    functionDepth: 0
    functionLinenumber: 161
    functionLinenumberEnd: 168
    functionName: CommunicatorClass::CommunicatorClass
    functionSourceFile: /src/pdns/pdns/communicator.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void CommunicatorClass()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - slog
    argTypes:
    - Logr::log_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 172
      start: 169
    functionDepth: 0
    functionLinenumber: 169
    functionLinenumberEnd: 172
    functionName: CommunicatorClass::setSLog
    functionSourceFile: /src/pdns/pdns/communicator.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setSLog(Logr::log_t slog)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' a'
    - ' b'
    argTypes:
    - DNSPacket
    - DNSPacket
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 230
      start: 227
    functionDepth: 0
    functionLinenumber: 227
    functionLinenumberEnd: 230
    functionName: operator()(const DNSPacket& a, const DNSPacket& b) const
    functionSourceFile: /src/pdns/pdns/communicator.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool operator()(const DNSPacket& a, const DNSPacket& b) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/communicator.hh:246,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - dn
    - cc
    argTypes:
    - ZoneName
    - CommunicatorClass*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 247
      start: 245
    functionDepth: 0
    functionLinenumber: 245
    functionLinenumberEnd: 247
    functionName: CommunicatorClass::RemoveSentinel
    functionSourceFile: /src/pdns/pdns/communicator.hh
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void RemoveSentinel(ZoneName dn, CommunicatorClass* cc)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: d_data::lock
      Src: /src/pdns/pdns/communicator.hh:252,1
    - Dst: erase
      Src: /src/pdns/pdns/communicator.hh:252,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 256
      start: 249
    functionDepth: 0
    functionLinenumber: 249
    functionLinenumberEnd: 256
    functionName: ~RemoveSentinel()
    functionSourceFile: /src/pdns/pdns/communicator.hh
    functionUses: 0
    functionsReached:
    - erase
    - d_data::lock
    linkageType: ''
    returnType: void
    signature: void ~RemoveSentinel()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: FindNS::resolve_name
      Src: /src/pdns/pdns/communicator.hh:270,1
    - Dst: UeberBackend*::lookup
      Src: /src/pdns/pdns/communicator.hh:274,1
    - Dst: QType
      Src: /src/pdns/pdns/communicator.hh:274,1
    - Dst: UeberBackend*::get
      Src: /src/pdns/pdns/communicator.hh:276,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/communicator.hh:278,1
    - Dst: DNSZoneRecord::dr::getContent
      Src: /src/pdns/pdns/communicator.hh:278,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 2
    argNames:
    - ' name'
    - b
    argTypes:
    - DNSName
    - UeberBackend*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 281
      start: 266
    functionDepth: 1
    functionLinenumber: 266
    functionLinenumberEnd: 281
    functionName: FindNS::lookup
    functionSourceFile: /src/pdns/pdns/communicator.hh
    functionUses: 0
    functionsReached:
    - UeberBackend*::lookup
    - vector::push_back
    - QType
    - FindNS::resolve_name
    - UeberBackend*::get
    - DNSZoneRecord::dr::getContent
    linkageType: ''
    returnType: vector<string>
    signature: vector<string> lookup(const DNSName& name, UeberBackend* b)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/pdns/pdns/communicator.hh:288,1
    - Dst: getaddrinfo
      Src: /src/pdns/pdns/communicator.hh:294,1
    - Dst: toString
      Src: /src/pdns/pdns/communicator.hh:294,1
    - Dst: ComboAddress::setSockaddr
      Src: /src/pdns/pdns/communicator.hh:298,1
    - Dst: vector<string>*::push_back
      Src: /src/pdns/pdns/communicator.hh:299,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/communicator.hh:299,1
    - Dst: freeaddrinfo
      Src: /src/pdns/pdns/communicator.hh:302,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 2
    argNames:
    - addresses
    - ' name'
    argTypes:
    - vector<string>*
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 305
      start: 284
    functionDepth: 0
    functionLinenumber: 284
    functionLinenumberEnd: 305
    functionName: FindNS::resolve_name
    functionSourceFile: /src/pdns/pdns/communicator.hh
    functionUses: 1
    functionsReached:
    - toString
    - freeaddrinfo
    - memset
    - ComboAddress::setSockaddr
    - vector<string>*::push_back
    - getaddrinfo
    - ComboAddress::toString
    linkageType: ''
    returnType: void
    signature: void resolve_name(vector<string>* addresses, const DNSName& name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::string::resize
      Src: /src/pdns/pdns/ednspadding.cc:28,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - bytes
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 30
      start: 25
    functionDepth: 1
    functionLinenumber: 25
    functionLinenumberEnd: 30
    functionName: makeEDNSPaddingOptString
    functionSourceFile: /src/pdns/pdns/ednspadding.cc
    functionUses: 0
    functionsReached:
    - std::string::resize
    linkageType: ''
    returnType: std::string
    signature: std::string makeEDNSPaddingOptString(size_t bytes)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::Resource::encode
      Src: /src/pdns/pdns/test-protozero-trace.cc:21,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-protozero-trace.cc:26,1
    - Dst: makeHexDump
      Src: /src/pdns/pdns/test-protozero-trace.cc:26,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 27
      start: 16
    functionDepth: 0
    functionLinenumber: 16
    functionLinenumberEnd: 27
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-protozero-trace.cc
    functionUses: 0
    functionsReached:
    - makeHexDump
    - pdns::trace::Resource::encode
    - BOOST_CHECK_EQUAL
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(resource0)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::Resource::encode
      Src: /src/pdns/pdns/test-protozero-trace.cc:41,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-protozero-trace.cc:46,1
    - Dst: makeHexDump
      Src: /src/pdns/pdns/test-protozero-trace.cc:46,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 29
    functionDepth: 0
    functionLinenumber: 29
    functionLinenumberEnd: 47
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-protozero-trace.cc
    functionUses: 0
    functionsReached:
    - makeHexDump
    - pdns::trace::Resource::encode
    - BOOST_CHECK_EQUAL
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(resource1)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::AnyValue::encode
      Src: /src/pdns/pdns/test-protozero-trace.cc:55,1
    - Dst: pdns::trace::AnyValue::decode
      Src: /src/pdns/pdns/test-protozero-trace.cc:62,1
    - Dst: std::holds_alternative<pdns::trace::NoValue>
      Src: /src/pdns/pdns/test-protozero-trace.cc:63,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-protozero-trace.cc:64,1
    - Dst: std::get<T>
      Src: /src/pdns/pdns/test-protozero-trace.cc:64,1
    - Dst: std::holds_alternative<pdns::trace::ArrayValue>
      Src: /src/pdns/pdns/test-protozero-trace.cc:67,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-protozero-trace.cc:68,1
    - Dst: std::get<pdns::trace::ArrayValue>
      Src: /src/pdns/pdns/test-protozero-trace.cc:68,1
    - Dst: empty
      Src: /src/pdns/pdns/test-protozero-trace.cc:68,1
    - Dst: std::holds_alternative<pdns::trace::KeyValueList>
      Src: /src/pdns/pdns/test-protozero-trace.cc:70,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-protozero-trace.cc:71,1
    - Dst: std::get<pdns::trace::KeyValueList>
      Src: /src/pdns/pdns/test-protozero-trace.cc:71,1
    - Dst: empty
      Src: /src/pdns/pdns/test-protozero-trace.cc:71,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 1
    argNames:
    - ' testcase'
    argTypes:
    - T
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 50
    functionDepth: 0
    functionLinenumber: 50
    functionLinenumberEnd: 74
    functionName: testAny
    functionSourceFile: /src/pdns/pdns/test-protozero-trace.cc
    functionUses: 0
    functionsReached:
    - BOOST_CHECK
    - pdns::trace::AnyValue::decode
    - std::holds_alternative<pdns::trace::NoValue>
    - std::holds_alternative<pdns::trace::ArrayValue>
    - std::get<T>
    - std::get<pdns::trace::KeyValueList>
    - empty
    - std::holds_alternative<pdns::trace::KeyValueList>
    - pdns::trace::AnyValue::encode
    - std::get<pdns::trace::ArrayValue>
    linkageType: ''
    returnType: void
    signature: void testAny(const T& testcase)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: testAny
      Src: /src/pdns/pdns/test-protozero-trace.cc:78,1
    - Dst: testAny
      Src: /src/pdns/pdns/test-protozero-trace.cc:79,1
    - Dst: testAny
      Src: /src/pdns/pdns/test-protozero-trace.cc:80,1
    - Dst: testAny
      Src: /src/pdns/pdns/test-protozero-trace.cc:81,1
    - Dst: static_cast<int64_t>
      Src: /src/pdns/pdns/test-protozero-trace.cc:81,1
    - Dst: testAny
      Src: /src/pdns/pdns/test-protozero-trace.cc:82,1
    - Dst: static_cast<int64_t>
      Src: /src/pdns/pdns/test-protozero-trace.cc:82,1
    - Dst: testAny
      Src: /src/pdns/pdns/test-protozero-trace.cc:83,1
    - Dst: static_cast<int64_t>
      Src: /src/pdns/pdns/test-protozero-trace.cc:83,1
    - Dst: testAny
      Src: /src/pdns/pdns/test-protozero-trace.cc:84,1
    - Dst: pdns::min
      Src: /src/pdns/pdns/test-protozero-trace.cc:84,1
    - Dst: testAny
      Src: /src/pdns/pdns/test-protozero-trace.cc:85,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/test-protozero-trace.cc:85,1
    - Dst: testAny
      Src: /src/pdns/pdns/test-protozero-trace.cc:86,1
    - Dst: testAny
      Src: /src/pdns/pdns/test-protozero-trace.cc:87,1
    - Dst: testAny
      Src: /src/pdns/pdns/test-protozero-trace.cc:88,1
    - Dst: testAny
      Src: /src/pdns/pdns/test-protozero-trace.cc:89,1
    - Dst: pdns::min
      Src: /src/pdns/pdns/test-protozero-trace.cc:89,1
    - Dst: testAny
      Src: /src/pdns/pdns/test-protozero-trace.cc:90,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/test-protozero-trace.cc:90,1
    - Dst: testAny
      Src: /src/pdns/pdns/test-protozero-trace.cc:93,1
    - Dst: pdns::trace::ArrayValue::values::emplace_back
      Src: /src/pdns/pdns/test-protozero-trace.cc:94,1
    - Dst: pdns::trace::ArrayValue::values::emplace_back
      Src: /src/pdns/pdns/test-protozero-trace.cc:95,1
    - Dst: testAny
      Src: /src/pdns/pdns/test-protozero-trace.cc:96,1
    - Dst: testAny
      Src: /src/pdns/pdns/test-protozero-trace.cc:99,1
    - Dst: pdns::trace::KeyValueList::values::emplace_back
      Src: /src/pdns/pdns/test-protozero-trace.cc:100,1
    - Dst: pdns::trace::KeyValueList::values::emplace_back
      Src: /src/pdns/pdns/test-protozero-trace.cc:101,1
    - Dst: testAny
      Src: /src/pdns/pdns/test-protozero-trace.cc:102,1
    - Dst: testAny
      Src: /src/pdns/pdns/test-protozero-trace.cc:105,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/test-protozero-trace.cc:106,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/test-protozero-trace.cc:107,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/test-protozero-trace.cc:108,1
    - Dst: testAny
      Src: /src/pdns/pdns/test-protozero-trace.cc:109,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 27
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 76
    functionDepth: 0
    functionLinenumber: 76
    functionLinenumberEnd: 110
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-protozero-trace.cc
    functionUses: 0
    functionsReached:
    - pdns::max
    - std::vector::push_back
    - pdns::trace::KeyValueList::values::emplace_back
    - testAny
    - static_cast<int64_t>
    - pdns::trace::ArrayValue::values::emplace_back
    - pdns::min
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(any)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::TracesData::encode
      Src: /src/pdns/pdns/test-protozero-trace.cc:132,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-protozero-trace.cc:152,1
    - Dst: makeHexDump
      Src: /src/pdns/pdns/test-protozero-trace.cc:152,1
    - Dst: pdns::trace::TracesData::decode
      Src: /src/pdns/pdns/test-protozero-trace.cc:155,1
    - Dst: std::string::clear
      Src: /src/pdns/pdns/test-protozero-trace.cc:156,1
    - Dst: auto::encode
      Src: /src/pdns/pdns/test-protozero-trace.cc:158,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-protozero-trace.cc:159,1
    - Dst: makeHexDump
      Src: /src/pdns/pdns/test-protozero-trace.cc:159,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 160
      start: 112
    functionDepth: 1
    functionLinenumber: 112
    functionLinenumberEnd: 160
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-protozero-trace.cc
    functionUses: 0
    functionsReached:
    - pdns::trace::TracesData::encode
    - std::string::clear
    - BOOST_CHECK_EQUAL
    - auto::encode
    - pdns::trace::TracesData::decode
    - makeHexDump
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(traces1)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<uint32_t>
      Src: /src/pdns/pdns/test-protozero-trace.cc:187,1
    - Dst: static_cast<uint32_t>
      Src: /src/pdns/pdns/test-protozero-trace.cc:188,1
    - Dst: pdns::trace::TracesData::encode
      Src: /src/pdns/pdns/test-protozero-trace.cc:210,1
    - Dst: pdns::trace::TracesData::decode
      Src: /src/pdns/pdns/test-protozero-trace.cc:216,1
    - Dst: auto::encode
      Src: /src/pdns/pdns/test-protozero-trace.cc:219,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-protozero-trace.cc:220,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 221
      start: 162
    functionDepth: 0
    functionLinenumber: 162
    functionLinenumberEnd: 221
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-protozero-trace.cc
    functionUses: 0
    functionsReached:
    - pdns::trace::TracesData::encode
    - BOOST_CHECK_EQUAL
    - static_cast<uint32_t>
    - auto::encode
    - pdns::trace::TracesData::decode
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(traces2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::array::size
      Src: /src/pdns/pdns/test-protozero-trace.cc:229,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/test-protozero-trace.cc:233,1
    - Dst: std::array::size
      Src: /src/pdns/pdns/test-protozero-trace.cc:233,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-protozero-trace.cc:236,1
    - Dst: pdns::trace::EDNSOTTraceRecordView::getVersion
      Src: /src/pdns/pdns/test-protozero-trace.cc:236,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-protozero-trace.cc:237,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-protozero-trace.cc:240,1
    - Dst: pdns::trace::EDNSOTTraceRecordView::getReserved
      Src: /src/pdns/pdns/test-protozero-trace.cc:240,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-protozero-trace.cc:241,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-protozero-trace.cc:244,1
    - Dst: pdns::trace::EDNSOTTraceRecordView::getTraceID
      Src: /src/pdns/pdns/test-protozero-trace.cc:244,1
    - Dst: BOOST_CHECK_EQUAL_COLLECTIONS
      Src: /src/pdns/pdns/test-protozero-trace.cc:247,1
    - Dst: pdns::trace::TraceID::begin
      Src: /src/pdns/pdns/test-protozero-trace.cc:247,1
    - Dst: pdns::trace::TraceID::end
      Src: /src/pdns/pdns/test-protozero-trace.cc:247,1
    - Dst: std::array::begin
      Src: /src/pdns/pdns/test-protozero-trace.cc:247,1
    - Dst: std::array::end
      Src: /src/pdns/pdns/test-protozero-trace.cc:247,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-protozero-trace.cc:250,1
    - Dst: pdns::trace::EDNSOTTraceRecordView::getSpanID
      Src: /src/pdns/pdns/test-protozero-trace.cc:250,1
    - Dst: BOOST_CHECK_EQUAL_COLLECTIONS
      Src: /src/pdns/pdns/test-protozero-trace.cc:253,1
    - Dst: pdns::trace::SpanID::begin
      Src: /src/pdns/pdns/test-protozero-trace.cc:253,1
    - Dst: pdns::trace::SpanID::end
      Src: /src/pdns/pdns/test-protozero-trace.cc:253,1
    - Dst: std::array::begin
      Src: /src/pdns/pdns/test-protozero-trace.cc:253,1
    - Dst: std::array::end
      Src: /src/pdns/pdns/test-protozero-trace.cc:253,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-protozero-trace.cc:256,1
    - Dst: pdns::trace::EDNSOTTraceRecordView::getFlags
      Src: /src/pdns/pdns/test-protozero-trace.cc:256,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-protozero-trace.cc:257,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 258
      start: 223
    functionDepth: 0
    functionLinenumber: 223
    functionLinenumberEnd: 258
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-protozero-trace.cc
    functionUses: 0
    functionsReached:
    - pdns::trace::TraceID::end
    - pdns::trace::EDNSOTTraceRecordView::getReserved
    - pdns::trace::TraceID::begin
    - pdns::trace::EDNSOTTraceRecordView::getSpanID
    - pdns::trace::EDNSOTTraceRecordView::getTraceID
    - pdns::trace::EDNSOTTraceRecordView::getFlags
    - std::array::end
    - BOOST_CHECK_EQUAL
    - std::array::data
    - BOOST_CHECK_EQUAL_COLLECTIONS
    - std::array::begin
    - BOOST_CHECK
    - pdns::trace::SpanID::end
    - pdns::trace::EDNSOTTraceRecordView::getVersion
    - std::array::size
    - pdns::trace::SpanID::begin
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(EDNSOTTraceRecordView)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::array::data
      Src: /src/pdns/pdns/test-protozero-trace.cc:263,1
    - Dst: pdns::trace::TraceID::makeRandom
      Src: /src/pdns/pdns/test-protozero-trace.cc:267,1
    - Dst: pdns::trace::SpanID::makeRandom
      Src: /src/pdns/pdns/test-protozero-trace.cc:268,1
    - Dst: pdns::trace::EDNSOTTraceRecord::setVersion
      Src: /src/pdns/pdns/test-protozero-trace.cc:269,1
    - Dst: pdns::trace::EDNSOTTraceRecord::setReserved
      Src: /src/pdns/pdns/test-protozero-trace.cc:270,1
    - Dst: pdns::trace::EDNSOTTraceRecord::setTraceID
      Src: /src/pdns/pdns/test-protozero-trace.cc:271,1
    - Dst: pdns::trace::EDNSOTTraceRecord::setSpanID
      Src: /src/pdns/pdns/test-protozero-trace.cc:272,1
    - Dst: pdns::trace::EDNSOTTraceRecord::setFlags
      Src: /src/pdns/pdns/test-protozero-trace.cc:273,1
    - Dst: pdns::trace::TraceID::size
      Src: /src/pdns/pdns/test-protozero-trace.cc:279,1
    - Dst: pdns::trace::TraceID::data
      Src: /src/pdns/pdns/test-protozero-trace.cc:280,1
    - Dst: pdns::trace::SpanID::size
      Src: /src/pdns/pdns/test-protozero-trace.cc:282,1
    - Dst: pdns::trace::SpanID::data
      Src: /src/pdns/pdns/test-protozero-trace.cc:283,1
    - Dst: BOOST_CHECK_EQUAL_COLLECTIONS
      Src: /src/pdns/pdns/test-protozero-trace.cc:286,1
    - Dst: std::array::begin
      Src: /src/pdns/pdns/test-protozero-trace.cc:286,1
    - Dst: std::array::end
      Src: /src/pdns/pdns/test-protozero-trace.cc:286,1
    - Dst: std::array::begin
      Src: /src/pdns/pdns/test-protozero-trace.cc:286,1
    - Dst: std::array::end
      Src: /src/pdns/pdns/test-protozero-trace.cc:286,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 287
      start: 260
    functionDepth: 0
    functionLinenumber: 260
    functionLinenumberEnd: 287
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-protozero-trace.cc
    functionUses: 0
    functionsReached:
    - pdns::trace::TraceID::size
    - pdns::trace::EDNSOTTraceRecord::setSpanID
    - std::array::end
    - pdns::trace::TraceID::data
    - pdns::trace::SpanID::makeRandom
    - pdns::trace::TraceID::makeRandom
    - pdns::trace::EDNSOTTraceRecord::setTraceID
    - pdns::trace::EDNSOTTraceRecord::setFlags
    - pdns::trace::SpanID::data
    - BOOST_CHECK_EQUAL_COLLECTIONS
    - std::array::begin
    - pdns::trace::EDNSOTTraceRecord::setVersion
    - pdns::trace::EDNSOTTraceRecord::setReserved
    - std::array::data
    - pdns::trace::SpanID::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(EDNSOTTraceRecord)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 144
    functionDepth: 0
    functionLinenumber: 144
    functionLinenumberEnd: 147
    functionName: arg
    functionSourceFile: /src/pdns/pdns/auth-main.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: ArgvMap
    signature: ArgvMap & arg()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:151,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:152,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:153,1
    - Dst: string
      Src: /src/pdns/pdns/auth-main.cc:153,1
    - Dst: getenv
      Src: /src/pdns/pdns/auth-main.cc:157,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:159,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:165,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:166,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:167,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:168,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:170,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:171,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:172,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:173,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:174,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:175,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:176,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:177,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:178,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:179,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:180,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:181,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:182,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:183,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:184,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:185,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:186,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:187,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:188,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:189,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:191,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:192,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:193,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:194,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:195,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:197,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:198,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:199,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:200,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:201,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:203,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:204,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:205,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:206,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:207,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:208,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:209,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:210,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:211,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:212,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:213,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:214,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:215,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:216,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:217,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:219,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:221,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:222,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:223,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:224,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:225,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:226,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:227,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:228,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:229,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:231,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:232,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:233,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:234,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:236,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:237,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:238,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:239,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:240,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:241,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:242,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:243,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:244,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:246,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:248,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:249,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:250,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:251,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:252,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:253,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:254,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:255,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:256,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:257,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:258,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:259,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:261,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:263,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:264,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:265,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:266,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:267,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:269,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:270,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:271,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:272,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:273,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:274,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:275,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:276,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:277,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:278,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:279,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:280,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:282,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:283,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:284,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:286,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:287,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:288,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:289,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:290,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:291,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:293,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:295,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:296,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:298,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:299,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:300,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:301,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:303,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:304,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:305,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:307,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:308,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:309,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:310,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:311,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:312,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:313,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:314,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:315,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:316,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:318,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:319,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:321,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:322,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:323,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:324,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:326,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:327,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:328,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:329,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:330,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:331,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:332,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:333,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:335,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:337,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:338,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:339,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:341,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:343,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:344,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:345,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:346,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:348,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:350,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:351,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:353,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:356,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:357,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:360,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:363,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:364,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:366,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 173
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 367
      start: 149
    functionDepth: 0
    functionLinenumber: 149
    functionLinenumberEnd: 367
    functionName: declareArguments
    functionSourceFile: /src/pdns/pdns/auth-main.cc
    functionUses: 0
    functionsReached:
    - string
    - arg
    - getenv
    linkageType: ''
    returnType: void
    signature: void declareArguments()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: time
      Src: /src/pdns/pdns/auth-main.cc:372,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 373
      start: 370
    functionDepth: 0
    functionLinenumber: 370
    functionLinenumberEnd: 373
    functionName: uptimeOfProcess
    functionSourceFile: /src/pdns/pdns/auth-main.cc
    functionUses: 0
    functionsReached:
    - time
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t uptimeOfProcess(const std::string& /* str */)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: getrusage
      Src: /src/pdns/pdns/auth-main.cc:378,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - ' str'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 385
      start: 375
    functionDepth: 0
    functionLinenumber: 375
    functionLinenumberEnd: 385
    functionName: getSysUserTimeMsec
    functionSourceFile: /src/pdns/pdns/auth-main.cc
    functionUses: 0
    functionsReached:
    - getrusage
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t getSysUserTimeMsec(const std::string& str)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: numTCPConnections
      Src: /src/pdns/pdns/auth-main.cc:389,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 390
      start: 387
    functionDepth: 0
    functionLinenumber: 387
    functionLinenumberEnd: 390
    functionName: getTCPConnectionCount
    functionSourceFile: /src/pdns/pdns/auth-main.cc
    functionUses: 0
    functionsReached:
    - numTCPConnections
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t getTCPConnectionCount(const std::string& /* str */)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: getQueueSize
      Src: /src/pdns/pdns/auth-main.cc:398,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-main.cc:403,1
    - Dst: what
      Src: /src/pdns/pdns/auth-main.cc:403,1
    - Dst: error
      Src: /src/pdns/pdns/auth-main.cc:404,1
    - Dst: what
      Src: /src/pdns/pdns/auth-main.cc:404,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-main.cc:408,1
    - Dst: error
      Src: /src/pdns/pdns/auth-main.cc:409,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 411
      start: 392
    functionDepth: 0
    functionLinenumber: 392
    functionLinenumberEnd: 411
    functionName: getQCount
    functionSourceFile: /src/pdns/pdns/auth-main.cc
    functionUses: 0
    functionsReached:
    - what
    - SLOG
    - getQueueSize
    - error
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t getQCount(const std::string& /* str */)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: round
      Src: /src/pdns/pdns/auth-main.cc:415,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 416
      start: 413
    functionDepth: 0
    functionLinenumber: 413
    functionLinenumberEnd: 416
    functionName: getLatency
    functionSourceFile: /src/pdns/pdns/auth-main.cc
    functionUses: 0
    functionsReached:
    - round
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t getLatency(const std::string& /* str */)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: round
      Src: /src/pdns/pdns/auth-main.cc:420,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 421
      start: 418
    functionDepth: 0
    functionLinenumber: 418
    functionLinenumberEnd: 421
    functionName: getReceiveLatency
    functionSourceFile: /src/pdns/pdns/auth-main.cc
    functionUses: 0
    functionsReached:
    - round
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t getReceiveLatency(const std::string& /* str */)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: round
      Src: /src/pdns/pdns/auth-main.cc:425,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 426
      start: 423
    functionDepth: 0
    functionLinenumber: 423
    functionLinenumberEnd: 426
    functionName: getCacheLatency
    functionSourceFile: /src/pdns/pdns/auth-main.cc
    functionUses: 0
    functionsReached:
    - round
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t getCacheLatency(const std::string& /* str */)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: round
      Src: /src/pdns/pdns/auth-main.cc:430,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 431
      start: 428
    functionDepth: 0
    functionLinenumber: 428
    functionLinenumberEnd: 431
    functionName: getBackendLatency
    functionSourceFile: /src/pdns/pdns/auth-main.cc
    functionUses: 0
    functionsReached:
    - round
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t getBackendLatency(const std::string& /* str */)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: round
      Src: /src/pdns/pdns/auth-main.cc:435,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 436
      start: 433
    functionDepth: 0
    functionLinenumber: 433
    functionLinenumberEnd: 436
    functionName: getSendLatency
    functionSourceFile: /src/pdns/pdns/auth-main.cc
    functionUses: 0
    functionsReached:
    - round
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t getSendLatency(const std::string& /* str */)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: declare
      Src: /src/pdns/pdns/auth-main.cc:440,1
    - Dst: declare
      Src: /src/pdns/pdns/auth-main.cc:441,1
    - Dst: declare
      Src: /src/pdns/pdns/auth-main.cc:442,1
    - Dst: declare
      Src: /src/pdns/pdns/auth-main.cc:443,1
    - Dst: declare
      Src: /src/pdns/pdns/auth-main.cc:444,1
    - Dst: declare
      Src: /src/pdns/pdns/auth-main.cc:445,1
    - Dst: declare
      Src: /src/pdns/pdns/auth-main.cc:446,1
    - Dst: declare
      Src: /src/pdns/pdns/auth-main.cc:448,1
    - Dst: declare
      Src: /src/pdns/pdns/auth-main.cc:449,1
    - Dst: declare
      Src: /src/pdns/pdns/auth-main.cc:450,1
    - Dst: declare
      Src: /src/pdns/pdns/auth-main.cc:451,1
    - Dst: declare
      Src: /src/pdns/pdns/auth-main.cc:452,1
    - Dst: declare
      Src: /src/pdns/pdns/auth-main.cc:454,1
    - Dst: declare
      Src: /src/pdns/pdns/auth-main.cc:455,1
    - Dst: declare
      Src: /src/pdns/pdns/auth-main.cc:456,1
    - Dst: declare
      Src: /src/pdns/pdns/auth-main.cc:457,1
    - Dst: declare
      Src: /src/pdns/pdns/auth-main.cc:458,1
    - Dst: declare
      Src: /src/pdns/pdns/auth-main.cc:459,1
    - Dst: declare
      Src: /src/pdns/pdns/auth-main.cc:460,1
    - Dst: declare
      Src: /src/pdns/pdns/auth-main.cc:461,1
    - Dst: declare
      Src: /src/pdns/pdns/auth-main.cc:462,1
    - Dst: declare
      Src: /src/pdns/pdns/auth-main.cc:463,1
    - Dst: declare
      Src: /src/pdns/pdns/auth-main.cc:464,1
    - Dst: declare
      Src: /src/pdns/pdns/auth-main.cc:465,1
    - Dst: declare
      Src: /src/pdns/pdns/auth-main.cc:467,1
    - Dst: declare
      Src: /src/pdns/pdns/auth-main.cc:468,1
    - Dst: declare
      Src: /src/pdns/pdns/auth-main.cc:470,1
    - Dst: declare
      Src: /src/pdns/pdns/auth-main.cc:471,1
    - Dst: declare
      Src: /src/pdns/pdns/auth-main.cc:473,1
    - Dst: declare
      Src: /src/pdns/pdns/auth-main.cc:475,1
    - Dst: declare
      Src: /src/pdns/pdns/auth-main.cc:477,1
    - Dst: declare
      Src: /src/pdns/pdns/auth-main.cc:478,1
    - Dst: declare
      Src: /src/pdns/pdns/auth-main.cc:479,1
    - Dst: declare
      Src: /src/pdns/pdns/auth-main.cc:480,1
    - Dst: declare
      Src: /src/pdns/pdns/auth-main.cc:482,1
    - Dst: declare
      Src: /src/pdns/pdns/auth-main.cc:484,1
    - Dst: declare
      Src: /src/pdns/pdns/auth-main.cc:485,1
    - Dst: declare
      Src: /src/pdns/pdns/auth-main.cc:486,1
    - Dst: declare
      Src: /src/pdns/pdns/auth-main.cc:487,1
    - Dst: declare
      Src: /src/pdns/pdns/auth-main.cc:489,1
    - Dst: declare
      Src: /src/pdns/pdns/auth-main.cc:490,1
    - Dst: declare
      Src: /src/pdns/pdns/auth-main.cc:491,1
    - Dst: declare
      Src: /src/pdns/pdns/auth-main.cc:492,1
    - Dst: declare
      Src: /src/pdns/pdns/auth-main.cc:493,1
    - Dst: declare
      Src: /src/pdns/pdns/auth-main.cc:494,1
    - Dst: declare
      Src: /src/pdns/pdns/auth-main.cc:495,1
    - Dst: declare
      Src: /src/pdns/pdns/auth-main.cc:496,1
    - Dst: declare
      Src: /src/pdns/pdns/auth-main.cc:497,1
    - Dst: declare
      Src: /src/pdns/pdns/auth-main.cc:498,1
    - Dst: declare
      Src: /src/pdns/pdns/auth-main.cc:501,1
    - Dst: declare
      Src: /src/pdns/pdns/auth-main.cc:502,1
    - Dst: declare
      Src: /src/pdns/pdns/auth-main.cc:505,1
    - Dst: declare
      Src: /src/pdns/pdns/auth-main.cc:506,1
    - Dst: declare
      Src: /src/pdns/pdns/auth-main.cc:509,1
    - Dst: declare
      Src: /src/pdns/pdns/auth-main.cc:510,1
    - Dst: declare
      Src: /src/pdns/pdns/auth-main.cc:511,1
    - Dst: declare
      Src: /src/pdns/pdns/auth-main.cc:513,1
    - Dst: declare
      Src: /src/pdns/pdns/auth-main.cc:514,1
    - Dst: declare
      Src: /src/pdns/pdns/auth-main.cc:515,1
    - Dst: declare
      Src: /src/pdns/pdns/auth-main.cc:516,1
    - Dst: declare
      Src: /src/pdns/pdns/auth-main.cc:517,1
    - Dst: declare
      Src: /src/pdns/pdns/auth-main.cc:518,1
    - Dst: declare
      Src: /src/pdns/pdns/auth-main.cc:519,1
    - Dst: declare
      Src: /src/pdns/pdns/auth-main.cc:520,1
    - Dst: declare
      Src: /src/pdns/pdns/auth-main.cc:521,1
    - Dst: declare
      Src: /src/pdns/pdns/auth-main.cc:522,1
    - Dst: declare
      Src: /src/pdns/pdns/auth-main.cc:523,1
    - Dst: declare
      Src: /src/pdns/pdns/auth-main.cc:524,1
    - Dst: getSuckRequestsWaiting
      Src: /src/pdns/pdns/auth-main.cc:525,1
    - Dst: declareDNSNameQTypeRing
      Src: /src/pdns/pdns/auth-main.cc:526,1
    - Dst: declareDNSNameQTypeRing
      Src: /src/pdns/pdns/auth-main.cc:527,1
    - Dst: declareDNSNameQTypeRing
      Src: /src/pdns/pdns/auth-main.cc:528,1
    - Dst: declareDNSNameQTypeRing
      Src: /src/pdns/pdns/auth-main.cc:529,1
    - Dst: declareDNSNameQTypeRing
      Src: /src/pdns/pdns/auth-main.cc:530,1
    - Dst: declareRing
      Src: /src/pdns/pdns/auth-main.cc:531,1
    - Dst: declareComboRing
      Src: /src/pdns/pdns/auth-main.cc:532,1
    - Dst: declareComboRing
      Src: /src/pdns/pdns/auth-main.cc:533,1
    - Dst: declareComboRing
      Src: /src/pdns/pdns/auth-main.cc:534,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 80
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 535
      start: 438
    functionDepth: 0
    functionLinenumber: 438
    functionLinenumberEnd: 535
    functionName: declareStats
    functionSourceFile: /src/pdns/pdns/auth-main.cc
    functionUses: 0
    functionsReached:
    - declare
    - declareRing
    - declareComboRing
    - declareDNSNameQTypeRing
    - getSuckRequestsWaiting
    linkageType: ''
    returnType: void
    signature: void declareStats()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strstr
      Src: /src/pdns/pdns/auth-main.cc:539,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - argv
    argTypes:
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 542
      start: 537
    functionDepth: 0
    functionLinenumber: 537
    functionLinenumberEnd: 542
    functionName: isGuarded
    functionSourceFile: /src/pdns/pdns/auth-main.cc
    functionUses: 0
    functionsReached:
    - strstr
    linkageType: ''
    returnType: int
    signature: int isGuarded(char** argv)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::max
      Src: /src/pdns/pdns/auth-main.cc:546,1
    - Dst: std::max
      Src: /src/pdns/pdns/auth-main.cc:547,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - start
    - diff
    argTypes:
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 548
      start: 544
    functionDepth: 0
    functionLinenumber: 544
    functionLinenumberEnd: 548
    functionName: update_latencies
    functionSourceFile: /src/pdns/pdns/auth-main.cc
    functionUses: 0
    functionsReached:
    - std::max
    linkageType: ''
    returnType: void
    signature: void update_latencies(int start, int diff)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: d_dt::udiffNoReset
      Src: /src/pdns/pdns/auth-main.cc:556,1
    - Dst: std::max
      Src: /src/pdns/pdns/auth-main.cc:557,1
    - Dst: send
      Src: /src/pdns/pdns/auth-main.cc:560,1
    - Dst: d_dt::udiff
      Src: /src/pdns/pdns/auth-main.cc:562,1
    - Dst: update_latencies
      Src: /src/pdns/pdns/auth-main.cc:563,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-main.cc:566,1
    - Dst: what
      Src: /src/pdns/pdns/auth-main.cc:566,1
    - Dst: Logr::log_t::error
      Src: /src/pdns/pdns/auth-main.cc:567,1
    - Dst: what
      Src: /src/pdns/pdns/auth-main.cc:567,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 3
    argNames:
    - ' a'
    - slog
    - start
    argTypes:
    - std::unique_ptr<DNSPacket>
    - Logr::log_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 569
      start: 550
    functionDepth: 1
    functionLinenumber: 550
    functionLinenumberEnd: 569
    functionName: sendout
    functionSourceFile: /src/pdns/pdns/auth-main.cc
    functionUses: 0
    functionsReached:
    - SLOG
    - what
    - Logr::log_t::error
    - d_dt::udiffNoReset
    - update_latencies
    - send
    - d_dt::udiff
    - std::max
    linkageType: ''
    returnType: void
    signature: void sendout(std::unique_ptr<DNSPacket>& a, Logr::log_t slog, int start)
  - BBCount: 24
    BranchProfiles: []
    Callsites:
    - Dst: withName
      Src: /src/pdns/pdns/auth-main.cc:577,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/auth-main.cc:577,1
    - Dst: setThreadName
      Src: /src/pdns/pdns/auth-main.cc:581,1
    - Dst: Distributor<Answer,Question,Backend>::Create
      Src: /src/pdns/pdns/auth-main.cc:583,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:583,1
    - Dst: getPointer
      Src: /src/pdns/pdns/auth-main.cc:588,1
    - Dst: getPointer
      Src: /src/pdns/pdns/auth-main.cc:589,1
    - Dst: getPointer
      Src: /src/pdns/pdns/auth-main.cc:590,1
    - Dst: getPointer
      Src: /src/pdns/pdns/auth-main.cc:592,1
    - Dst: getPointer
      Src: /src/pdns/pdns/auth-main.cc:594,1
    - Dst: getPointer
      Src: /src/pdns/pdns/auth-main.cc:595,1
    - Dst: canReusePort
      Src: /src/pdns/pdns/auth-main.cc:605,1
    - Dst: empty
      Src: /src/pdns/pdns/auth-main.cc:617,1
    - Dst: std::string::resize
      Src: /src/pdns/pdns/auth-main.cc:618,1
    - Dst: std::string::resize
      Src: /src/pdns/pdns/auth-main.cc:621,1
    - Dst: shared_ptr::receive
      Src: /src/pdns/pdns/auth-main.cc:624,1
    - Dst: DNSPacket::d_dt::udiffNoReset
      Src: /src/pdns/pdns/auth-main.cc:628,1
    - Dst: std::max
      Src: /src/pdns/pdns/auth-main.cc:629,1
    - Dst: DNSPacket::getInnerRemote
      Src: /src/pdns/pdns/auth-main.cc:633,1
    - Dst: DNSPacket::hasEDNSCookie
      Src: /src/pdns/pdns/auth-main.cc:646,1
    - Dst: ringAccount
      Src: /src/pdns/pdns/auth-main.cc:654,1
    - Dst: ringAccount
      Src: /src/pdns/pdns/auth-main.cc:655,1
    - Dst: DNSPacket::getInnerRemote
      Src: /src/pdns/pdns/auth-main.cc:655,1
    - Dst: DNSPacket::getMaxReplyLen
      Src: /src/pdns/pdns/auth-main.cc:658,1
    - Dst: std::shared_ptr::info
      Src: /src/pdns/pdns/auth-main.cc:659,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-main.cc:659,1
    - Dst: DNSPacket::getRemoteString
      Src: /src/pdns/pdns/auth-main.cc:659,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-main.cc:659,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-main.cc:659,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-main.cc:659,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-main.cc:659,1
    - Dst: DNSPacket::getMaxReplyLen
      Src: /src/pdns/pdns/auth-main.cc:659,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-main.cc:659,1
    - Dst: std::shared_ptr::info
      Src: /src/pdns/pdns/auth-main.cc:662,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-main.cc:662,1
    - Dst: DNSPacket::getRemoteString
      Src: /src/pdns/pdns/auth-main.cc:662,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-main.cc:662,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-main.cc:662,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-main.cc:662,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-main.cc:662,1
    - Dst: DNSPacket::getMaxReplyLen
      Src: /src/pdns/pdns/auth-main.cc:662,1
    - Dst: DNSPacket::getRemoteString
      Src: /src/pdns/pdns/auth-main.cc:666,1
    - Dst: DNSPacket::getMaxReplyLen
      Src: /src/pdns/pdns/auth-main.cc:666,1
    - Dst: DNSPacket::getMaxReplyLen
      Src: /src/pdns/pdns/auth-main.cc:667,1
    - Dst: enabled
      Src: /src/pdns/pdns/auth-main.cc:674,1
    - Dst: DNSPacket::couldBeCached
      Src: /src/pdns/pdns/auth-main.cc:674,1
    - Dst: getViewFromNetwork
      Src: /src/pdns/pdns/auth-main.cc:683,1
    - Dst: get
      Src: /src/pdns/pdns/auth-main.cc:685,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-main.cc:688,1
    - Dst: std::shared_ptr::info
      Src: /src/pdns/pdns/auth-main.cc:689,1
    - Dst: DNSPacket::setRemote
      Src: /src/pdns/pdns/auth-main.cc:691,1
    - Dst: DNSPacket::setSocket
      Src: /src/pdns/pdns/auth-main.cc:693,1
    - Dst: DNSPacket::getSocket
      Src: /src/pdns/pdns/auth-main.cc:693,1
    - Dst: DNSPacket::setMaxReplyLen
      Src: /src/pdns/pdns/auth-main.cc:695,1
    - Dst: DNSPacket::getMaxReplyLen
      Src: /src/pdns/pdns/auth-main.cc:695,1
    - Dst: DNSPacket::commitD
      Src: /src/pdns/pdns/auth-main.cc:698,1
    - Dst: DNSPacket::d_dt::udiffNoReset
      Src: /src/pdns/pdns/auth-main.cc:700,1
    - Dst: std::max
      Src: /src/pdns/pdns/auth-main.cc:701,1
    - Dst: shared_ptr::send
      Src: /src/pdns/pdns/auth-main.cc:704,1
    - Dst: DNSPacket::d_dt::udiff
      Src: /src/pdns/pdns/auth-main.cc:706,1
    - Dst: update_latencies
      Src: /src/pdns/pdns/auth-main.cc:707,1
    - Dst: DNSPacket::d_dt::udiffNoReset
      Src: /src/pdns/pdns/auth-main.cc:710,1
    - Dst: std::max
      Src: /src/pdns/pdns/auth-main.cc:711,1
    - Dst: DNSDistributor*::isOverloaded
      Src: /src/pdns/pdns/auth-main.cc:714,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-main.cc:716,1
    - Dst: std::shared_ptr::info
      Src: /src/pdns/pdns/auth-main.cc:717,1
    - Dst: enabled
      Src: /src/pdns/pdns/auth-main.cc:724,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-main.cc:725,1
    - Dst: std::shared_ptr::info
      Src: /src/pdns/pdns/auth-main.cc:726,1
    - Dst: DNSDistributor*::question
      Src: /src/pdns/pdns/auth-main.cc:736,1
    - Dst: _exit
      Src: /src/pdns/pdns/auth-main.cc:739,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-main.cc:743,1
    - Dst: what
      Src: /src/pdns/pdns/auth-main.cc:743,1
    - Dst: std::shared_ptr::error
      Src: /src/pdns/pdns/auth-main.cc:744,1
    - Dst: what
      Src: /src/pdns/pdns/auth-main.cc:744,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-main.cc:749,1
    - Dst: std::shared_ptr::error
      Src: /src/pdns/pdns/auth-main.cc:750,1
    - Dst: _exit
      Src: /src/pdns/pdns/auth-main.cc:751,1
    CyclomaticComplexity: 36
    EdgeCount: 36
    ICount: 120
    argCount: 1
    argNames:
    - num
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 753
      start: 573
    functionDepth: 1
    functionLinenumber: 573
    functionLinenumberEnd: 753
    functionName: qthread
    functionSourceFile: /src/pdns/pdns/auth-main.cc
    functionUses: 0
    functionsReached:
    - std::to_string
    - DNSPacket::setMaxReplyLen
    - withName
    - ringAccount
    - DNSDistributor*::question
    - std::shared_ptr::error
    - DNSPacket::getSocket
    - DNSDistributor*::isOverloaded
    - std::shared_ptr::info
    - SLOG
    - shared_ptr::send
    - Logging::Loggable
    - Distributor<Answer,Question,Backend>::Create
    - DNSPacket::setSocket
    - DNSPacket::couldBeCached
    - DNSPacket::setRemote
    - std::max
    - empty
    - setThreadName
    - DNSPacket::getInnerRemote
    - DNSPacket::hasEDNSCookie
    - _exit
    - get
    - DNSPacket::getMaxReplyLen
    - std::string::resize
    - arg
    - enabled
    - getPointer
    - shared_ptr::receive
    - what
    - canReusePort
    - DNSPacket::commitD
    - update_latencies
    - DNSPacket::d_dt::udiffNoReset
    - DNSPacket::getRemoteString
    - getViewFromNetwork
    - DNSPacket::d_dt::udiff
    linkageType: ''
    returnType: void
    signature: void qthread(unsigned int num)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 757
      start: 755
    functionDepth: 0
    functionLinenumber: 755
    functionLinenumberEnd: 757
    functionName: dummyThread
    functionSourceFile: /src/pdns/pdns/auth-main.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void dummyThread()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::thread::join
      Src: /src/pdns/pdns/auth-main.cc:762,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 763
      start: 759
    functionDepth: 0
    functionLinenumber: 759
    functionLinenumberEnd: 763
    functionName: triggerLoadOfLibraries
    functionSourceFile: /src/pdns/pdns/auth-main.cc
    functionUses: 0
    functionsReached:
    - std::thread::join
    linkageType: ''
    returnType: void
    signature: void triggerLoadOfLibraries()
  - BBCount: 31
    BranchProfiles: []
    Callsites:
    - Dst: withName
      Src: /src/pdns/pdns/auth-main.cc:769,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:773,1
    - Dst: empty
      Src: /src/pdns/pdns/auth-main.cc:773,1
    - Dst: strToGID
      Src: /src/pdns/pdns/auth-main.cc:774,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:774,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:776,1
    - Dst: empty
      Src: /src/pdns/pdns/auth-main.cc:776,1
    - Dst: strToUID
      Src: /src/pdns/pdns/auth-main.cc:777,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:777,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:779,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:780,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:781,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:783,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:784,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:785,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:786,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:787,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:788,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:789,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:790,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:793,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:795,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:798,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:799,1
    - Dst: std::max
      Src: /src/pdns/pdns/auth-main.cc:801,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:801,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:802,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:803,1
    - Dst: toMasks
      Src: /src/pdns/pdns/auth-main.cc:805,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:805,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:806,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:808,1
    - Dst: size
      Src: /src/pdns/pdns/auth-main.cc:808,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:812,1
    - Dst: dns_random
      Src: /src/pdns/pdns/auth-main.cc:815,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/auth-main.cc:815,1
    - Dst: std::array::size
      Src: /src/pdns/pdns/auth-main.cc:815,1
    - Dst: std::string
      Src: /src/pdns/pdns/auth-main.cc:816,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/auth-main.cc:816,1
    - Dst: std::array::size
      Src: /src/pdns/pdns/auth-main.cc:816,1
    - Dst: size
      Src: /src/pdns/pdns/auth-main.cc:820,1
    - Dst: std::range_error
      Src: /src/pdns/pdns/auth-main.cc:821,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/auth-main.cc:821,1
    - Dst: size
      Src: /src/pdns/pdns/auth-main.cc:821,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/auth-main.cc:821,1
    - Dst: makeBytesFromHex
      Src: /src/pdns/pdns/auth-main.cc:823,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-main.cc:826,1
    - Dst: what
      Src: /src/pdns/pdns/auth-main.cc:826,1
    - Dst: std::shared_ptr::error
      Src: /src/pdns/pdns/auth-main.cc:827,1
    - Dst: what
      Src: /src/pdns/pdns/auth-main.cc:827,1
    - Dst: exit
      Src: /src/pdns/pdns/auth-main.cc:828,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-main.cc:832,1
    - Dst: std::shared_ptr::info
      Src: /src/pdns/pdns/auth-main.cc:833,1
    - Dst: exit
      Src: /src/pdns/pdns/auth-main.cc:834,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:841,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-main.cc:842,1
    - Dst: std::shared_ptr::info
      Src: /src/pdns/pdns/auth-main.cc:843,1
    - Dst: exit
      Src: /src/pdns/pdns/auth-main.cc:844,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:849,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:849,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:849,1
    - Dst: empty
      Src: /src/pdns/pdns/auth-main.cc:849,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:850,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-main.cc:851,1
    - Dst: std::shared_ptr::info
      Src: /src/pdns/pdns/auth-main.cc:852,1
    - Dst: exit
      Src: /src/pdns/pdns/auth-main.cc:853,1
    - Dst: setSLog
      Src: /src/pdns/pdns/auth-main.cc:858,1
    - Dst: setTTL
      Src: /src/pdns/pdns/auth-main.cc:859,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:859,1
    - Dst: setMaxEntries
      Src: /src/pdns/pdns/auth-main.cc:860,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:860,1
    - Dst: setSLog
      Src: /src/pdns/pdns/auth-main.cc:861,1
    - Dst: setMaxEntries
      Src: /src/pdns/pdns/auth-main.cc:862,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:862,1
    - Dst: DNSSECKeeper::setMaxEntries
      Src: /src/pdns/pdns/auth-main.cc:863,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:863,1
    - Dst: enabled
      Src: /src/pdns/pdns/auth-main.cc:865,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:865,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-main.cc:866,1
    - Dst: std::shared_ptr::info
      Src: /src/pdns/pdns/auth-main.cc:867,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:869,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-main.cc:870,1
    - Dst: std::shared_ptr::info
      Src: /src/pdns/pdns/auth-main.cc:871,1
    - Dst: stubParseResolveConf
      Src: /src/pdns/pdns/auth-main.cc:874,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:876,1
    - Dst: empty
      Src: /src/pdns/pdns/auth-main.cc:876,1
    - Dst: getenv
      Src: /src/pdns/pdns/auth-main.cc:879,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-main.cc:881,1
    - Dst: std::shared_ptr::info
      Src: /src/pdns/pdns/auth-main.cc:882,1
    - Dst: exit
      Src: /src/pdns/pdns/auth-main.cc:883,1
    - Dst: triggerLoadOfLibraries
      Src: /src/pdns/pdns/auth-main.cc:886,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:887,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:887,1
    - Dst: gethostbyname
      Src: /src/pdns/pdns/auth-main.cc:888,1
    - Dst: Utility::dropGroupPrivs
      Src: /src/pdns/pdns/auth-main.cc:889,1
    - Dst: chroot
      Src: /src/pdns/pdns/auth-main.cc:890,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:890,1
    - Dst: c_str
      Src: /src/pdns/pdns/auth-main.cc:890,1
    - Dst: chdir
      Src: /src/pdns/pdns/auth-main.cc:890,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-main.cc:891,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:891,1
    - Dst: stringerror
      Src: /src/pdns/pdns/auth-main.cc:891,1
    - Dst: std::shared_ptr::error
      Src: /src/pdns/pdns/auth-main.cc:892,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-main.cc:892,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:892,1
    - Dst: exit
      Src: /src/pdns/pdns/auth-main.cc:893,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-main.cc:896,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:896,1
    - Dst: std::shared_ptr::info
      Src: /src/pdns/pdns/auth-main.cc:897,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-main.cc:897,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:897,1
    - Dst: Utility::dropGroupPrivs
      Src: /src/pdns/pdns/auth-main.cc:900,1
    - Dst: AuthWebServer::AuthWebServer
      Src: /src/pdns/pdns/auth-main.cc:903,1
    - Dst: Utility::dropUserPrivs
      Src: /src/pdns/pdns/auth-main.cc:904,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:906,1
    - Dst: std::make_unique<DNSProxy>
      Src: /src/pdns/pdns/auth-main.cc:907,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:907,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:907,1
    - Dst: go
      Src: /src/pdns/pdns/auth-main.cc:908,1
    - Dst: doSecPoll
      Src: /src/pdns/pdns/auth-main.cc:913,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:925,1
    - Dst: empty
      Src: /src/pdns/pdns/auth-main.cc:925,1
    - Dst: DNSSEC::shorthand2algorithm
      Src: /src/pdns/pdns/auth-main.cc:927,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:927,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:929,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-main.cc:931,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:931,1
    - Dst: std::shared_ptr::info
      Src: /src/pdns/pdns/auth-main.cc:932,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-main.cc:932,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-main.cc:932,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:932,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-main.cc:936,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:936,1
    - Dst: std::shared_ptr::info
      Src: /src/pdns/pdns/auth-main.cc:937,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-main.cc:937,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-main.cc:937,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:937,1
    - Dst: exit
      Src: /src/pdns/pdns/auth-main.cc:948,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-main.cc:951,1
    - Dst: std::shared_ptr::info
      Src: /src/pdns/pdns/auth-main.cc:952,1
    - Dst: exit
      Src: /src/pdns/pdns/auth-main.cc:953,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-main.cc:956,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:956,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:956,1
    - Dst: std::shared_ptr::info
      Src: /src/pdns/pdns/auth-main.cc:957,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-main.cc:957,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:957,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-main.cc:957,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:957,1
    - Dst: exit
      Src: /src/pdns/pdns/auth-main.cc:958,1
    - Dst: pdns::parseQueryLocalAddress
      Src: /src/pdns/pdns/auth-main.cc:962,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:962,1
    - Dst: pdns::parseTrustedNotificationProxy
      Src: /src/pdns/pdns/auth-main.cc:964,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:964,1
    - Dst: stringtok
      Src: /src/pdns/pdns/auth-main.cc:968,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:968,1
    - Dst: emplace_back
      Src: /src/pdns/pdns/auth-main.cc:971,1
    - Dst: make_unique<RemoteLogger>
      Src: /src/pdns/pdns/auth-main.cc:971,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/auth-main.cc:971,1
    - Dst: UeberBackend::go
      Src: /src/pdns/pdns/auth-main.cc:975,1
    - Dst: setSLog
      Src: /src/pdns/pdns/auth-main.cc:978,1
    - Dst: setRefreshInterval
      Src: /src/pdns/pdns/auth-main.cc:979,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:979,1
    - Dst: UeberBackend::UeberBackend
      Src: /src/pdns/pdns/auth-main.cc:981,1
    - Dst: UeberBackend::updateZoneCache
      Src: /src/pdns/pdns/auth-main.cc:982,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-main.cc:985,1
    - Dst: std::shared_ptr::error
      Src: /src/pdns/pdns/auth-main.cc:986,1
    - Dst: exit
      Src: /src/pdns/pdns/auth-main.cc:987,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-main.cc:990,1
    - Dst: what
      Src: /src/pdns/pdns/auth-main.cc:990,1
    - Dst: std::shared_ptr::error
      Src: /src/pdns/pdns/auth-main.cc:991,1
    - Dst: what
      Src: /src/pdns/pdns/auth-main.cc:991,1
    - Dst: exit
      Src: /src/pdns/pdns/auth-main.cc:992,1
    - Dst: go
      Src: /src/pdns/pdns/auth-main.cc:996,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:998,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:998,1
    - Dst: AuthWebServer::go
      Src: /src/pdns/pdns/auth-main.cc:999,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:1002,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:1002,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:1002,1
    - Dst: empty
      Src: /src/pdns/pdns/auth-main.cc:1002,1
    - Dst: go
      Src: /src/pdns/pdns/auth-main.cc:1003,1
    - Dst: go
      Src: /src/pdns/pdns/auth-main.cc:1005,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:1007,1
    - Dst: resize
      Src: /src/pdns/pdns/auth-main.cc:1008,1
    - Dst: std::thread::detach
      Src: /src/pdns/pdns/auth-main.cc:1011,1
    - Dst: sd_notify
      Src: /src/pdns/pdns/auth-main.cc:1022,1
    - Dst: getRefreshInterval
      Src: /src/pdns/pdns/auth-main.cc:1029,1
    - Dst: std::min
      Src: /src/pdns/pdns/auth-main.cc:1029,1
    - Dst: getRefreshInterval
      Src: /src/pdns/pdns/auth-main.cc:1029,1
    - Dst: sleep
      Src: /src/pdns/pdns/auth-main.cc:1030,1
    - Dst: getRefreshInterval
      Src: /src/pdns/pdns/auth-main.cc:1033,1
    - Dst: UeberBackend::UeberBackend
      Src: /src/pdns/pdns/auth-main.cc:1035,1
    - Dst: UeberBackend::updateZoneCache
      Src: /src/pdns/pdns/auth-main.cc:1036,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-main.cc:1040,1
    - Dst: std::shared_ptr::error
      Src: /src/pdns/pdns/auth-main.cc:1041,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-main.cc:1044,1
    - Dst: what
      Src: /src/pdns/pdns/auth-main.cc:1044,1
    - Dst: std::shared_ptr::error
      Src: /src/pdns/pdns/auth-main.cc:1045,1
    - Dst: what
      Src: /src/pdns/pdns/auth-main.cc:1045,1
    - Dst: doSecPoll
      Src: /src/pdns/pdns/auth-main.cc:1054,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-main.cc:1062,1
    - Dst: std::shared_ptr::info
      Src: /src/pdns/pdns/auth-main.cc:1063,1
    CyclomaticComplexity: 52
    EdgeCount: 52
    ICount: 186
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1064
      start: 765
    functionDepth: 1
    functionLinenumber: 765
    functionLinenumberEnd: 1064
    functionName: mainthread
    functionSourceFile: /src/pdns/pdns/auth-main.cc
    functionUses: 0
    functionsReached:
    - Utility::dropUserPrivs
    - setTTL
    - std::to_string
    - stubParseResolveConf
    - withName
    - setMaxEntries
    - stringerror
    - strToUID
    - sd_notify
    - go
    - setRefreshInterval
    - std::shared_ptr::error
    - gethostbyname
    - emplace_back
    - std::string
    - std::shared_ptr::info
    - SLOG
    - makeBytesFromHex
    - Utility::dropGroupPrivs
    - stringtok
    - DNSSECKeeper::setMaxEntries
    - Logging::Loggable
    - setSLog
    - UeberBackend::go
    - AuthWebServer::go
    - resize
    - size
    - AuthWebServer::AuthWebServer
    - std::make_unique<DNSProxy>
    - UeberBackend::UeberBackend
    - std::max
    - empty
    - c_str
    - sleep
    - doSecPoll
    - exit
    - pdns::parseTrustedNotificationProxy
    - UeberBackend::updateZoneCache
    - std::array::data
    - arg
    - enabled
    - triggerLoadOfLibraries
    - chroot
    - DNSSEC::shorthand2algorithm
    - ComboAddress
    - chdir
    - dns_random
    - getenv
    - what
    - pdns::parseQueryLocalAddress
    - std::min
    - make_unique<RemoteLogger>
    - std::range_error
    - std::thread::detach
    - toMasks
    - strToGID
    - getRefreshInterval
    - std::array::size
    linkageType: ''
    returnType: void
    signature: void mainthread()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: fork
      Src: /src/pdns/pdns/auth-main.cc:1068,1
    - Dst: exit
      Src: /src/pdns/pdns/auth-main.cc:1069,1
    - Dst: setsid
      Src: /src/pdns/pdns/auth-main.cc:1071,1
    - Dst: open
      Src: /src/pdns/pdns/auth-main.cc:1073,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-main.cc:1075,1
    - Dst: stringerror
      Src: /src/pdns/pdns/auth-main.cc:1075,1
    - Dst: withName
      Src: /src/pdns/pdns/auth-main.cc:1076,1
    - Dst: dup2
      Src: /src/pdns/pdns/auth-main.cc:1079,1
    - Dst: dup2
      Src: /src/pdns/pdns/auth-main.cc:1080,1
    - Dst: dup2
      Src: /src/pdns/pdns/auth-main.cc:1081,1
    - Dst: close
      Src: /src/pdns/pdns/auth-main.cc:1082,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1084
      start: 1066
    functionDepth: 0
    functionLinenumber: 1066
    functionLinenumberEnd: 1084
    functionName: daemonize
    functionSourceFile: /src/pdns/pdns/auth-main.cc
    functionUses: 0
    functionsReached:
    - SLOG
    - withName
    - stringerror
    - fork
    - setsid
    - open
    - dup2
    - exit
    - close
    linkageType: ''
    returnType: void
    signature: void daemonize()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-main.cc:1090,1
    - Dst: withName
      Src: /src/pdns/pdns/auth-main.cc:1091,1
    - Dst: kill
      Src: /src/pdns/pdns/auth-main.cc:1092,1
    - Dst: exit
      Src: /src/pdns/pdns/auth-main.cc:1093,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1095
      start: 1087
    functionDepth: 0
    functionLinenumber: 1087
    functionLinenumberEnd: 1095
    functionName: takedown
    functionSourceFile: /src/pdns/pdns/auth-main.cc
    functionUses: 0
    functionsReached:
    - withName
    - exit
    - SLOG
    - kill
    linkageType: ''
    returnType: void
    signature: void takedown(int /* i */)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:1099,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:1102,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:1103,1
    - Dst: empty
      Src: /src/pdns/pdns/auth-main.cc:1103,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:1104,1
    - Dst: empty
      Src: /src/pdns/pdns/auth-main.cc:1104,1
    - Dst: std::string
      Src: /src/pdns/pdns/auth-main.cc:1105,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:1107,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:1109,1
    - Dst: empty
      Src: /src/pdns/pdns/auth-main.cc:1109,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:1109,1
    - Dst: empty
      Src: /src/pdns/pdns/auth-main.cc:1109,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:1110,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:1110,1
    - Dst: string::c_str
      Src: /src/pdns/pdns/auth-main.cc:1114,1
    - Dst: getpid
      Src: /src/pdns/pdns/auth-main.cc:1116,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-main.cc:1119,1
    - Dst: getpid
      Src: /src/pdns/pdns/auth-main.cc:1119,1
    - Dst: stringerror
      Src: /src/pdns/pdns/auth-main.cc:1119,1
    - Dst: Logr::log_t::error
      Src: /src/pdns/pdns/auth-main.cc:1120,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-main.cc:1120,1
    - Dst: getpid
      Src: /src/pdns/pdns/auth-main.cc:1120,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-main.cc:1120,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 1
    argNames:
    - slog
    argTypes:
    - Logr::log_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1122
      start: 1097
    functionDepth: 0
    functionLinenumber: 1097
    functionLinenumberEnd: 1122
    functionName: writePid
    functionSourceFile: /src/pdns/pdns/auth-main.cc
    functionUses: 0
    functionsReached:
    - string::c_str
    - SLOG
    - Logging::Loggable
    - stringerror
    - Logr::log_t::error
    - empty
    - std::string
    - getpid
    - arg
    linkageType: ''
    returnType: void
    signature: void writePid(Logr::log_t slog)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: kill
      Src: /src/pdns/pdns/auth-main.cc:1131,1
    - Dst: kill
      Src: /src/pdns/pdns/auth-main.cc:1132,1
    - Dst: sleep
      Src: /src/pdns/pdns/auth-main.cc:1133,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1135
      start: 1129
    functionDepth: 0
    functionLinenumber: 1129
    functionLinenumberEnd: 1135
    functionName: DLCycleHandler
    functionSourceFile: /src/pdns/pdns/auth-main.cc
    functionUses: 0
    functionsReached:
    - sleep
    - kill
    linkageType: ''
    returnType: string
    signature: string DLCycleHandler(const vector<string>& /* parts */, pid_t /* ppid
      */, Logr::log_t /* slog */)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: begin
      Src: /src/pdns/pdns/auth-main.cc:1141,1
    - Dst: end
      Src: /src/pdns/pdns/auth-main.cc:1141,1
    - Dst: begin
      Src: /src/pdns/pdns/auth-main.cc:1142,1
    - Dst: string::append
      Src: /src/pdns/pdns/auth-main.cc:1143,1
    - Dst: string::append
      Src: /src/pdns/pdns/auth-main.cc:1144,1
    - Dst: string::append
      Src: /src/pdns/pdns/auth-main.cc:1146,1
    - Dst: std::scoped_lock
      Src: /src/pdns/pdns/auth-main.cc:1148,1
    - Dst: writen2
      Src: /src/pdns/pdns/auth-main.cc:1151,1
    - Dst: string::c_str
      Src: /src/pdns/pdns/auth-main.cc:1151,1
    - Dst: string::size
      Src: /src/pdns/pdns/auth-main.cc:1151,1
    - Dst: fgets
      Src: /src/pdns/pdns/auth-main.cc:1158,1
    - Dst: boost::trim_right
      Src: /src/pdns/pdns/auth-main.cc:1163,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 1
    argNames:
    - ' parts'
    argTypes:
    - vector<string>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1165
      start: 1137
    functionDepth: 0
    functionLinenumber: 1137
    functionLinenumberEnd: 1165
    functionName: DLRestHandler
    functionSourceFile: /src/pdns/pdns/auth-main.cc
    functionUses: 0
    functionsReached:
    - string::c_str
    - string::size
    - writen2
    - string::append
    - end
    - fgets
    - boost::trim_right
    - begin
    - std::scoped_lock
    linkageType: ''
    returnType: string
    signature: string DLRestHandler(const vector<string>& parts, pid_t /* ppid */,
      Logr::log_t /* slog */)
  - BBCount: 22
    BranchProfiles: []
    Callsites:
    - Dst: isGuarded
      Src: /src/pdns/pdns/auth-main.cc:1169,1
    - Dst: withName
      Src: /src/pdns/pdns/auth-main.cc:1174,1
    - Dst: DynListener::registerExitFunc
      Src: /src/pdns/pdns/auth-main.cc:1180,1
    - Dst: DynListener::registerFunc
      Src: /src/pdns/pdns/auth-main.cc:1181,1
    - Dst: DynListener::registerFunc
      Src: /src/pdns/pdns/auth-main.cc:1182,1
    - Dst: DynListener::registerFunc
      Src: /src/pdns/pdns/auth-main.cc:1183,1
    - Dst: DynListener::registerRestFunc
      Src: /src/pdns/pdns/auth-main.cc:1184,1
    - Dst: DynListener::go
      Src: /src/pdns/pdns/auth-main.cc:1185,1
    - Dst: lock
      Src: /src/pdns/pdns/auth-main.cc:1191,1
    - Dst: setStatus
      Src: /src/pdns/pdns/auth-main.cc:1195,1
    - Dst: pipe
      Src: /src/pdns/pdns/auth-main.cc:1197,1
    - Dst: pipe
      Src: /src/pdns/pdns/auth-main.cc:1197,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-main.cc:1198,1
    - Dst: stringerror
      Src: /src/pdns/pdns/auth-main.cc:1198,1
    - Dst: std::shared_ptr::error
      Src: /src/pdns/pdns/auth-main.cc:1199,1
    - Dst: exit
      Src: /src/pdns/pdns/auth-main.cc:1200,1
    - Dst: fdopen
      Src: /src/pdns/pdns/auth-main.cc:1203,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-main.cc:1204,1
    - Dst: stringerror
      Src: /src/pdns/pdns/auth-main.cc:1204,1
    - Dst: std::shared_ptr::error
      Src: /src/pdns/pdns/auth-main.cc:1205,1
    - Dst: exit
      Src: /src/pdns/pdns/auth-main.cc:1206,1
    - Dst: setbuf
      Src: /src/pdns/pdns/auth-main.cc:1208,1
    - Dst: fork
      Src: /src/pdns/pdns/auth-main.cc:1210,1
    - Dst: signal
      Src: /src/pdns/pdns/auth-main.cc:1211,1
    - Dst: signal
      Src: /src/pdns/pdns/auth-main.cc:1213,1
    - Dst: signal
      Src: /src/pdns/pdns/auth-main.cc:1214,1
    - Dst: signal
      Src: /src/pdns/pdns/auth-main.cc:1215,1
    - Dst: char::char
      Src: /src/pdns/pdns/auth-main.cc:1217,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:1220,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:1221,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-main.cc:1222,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:1222,1
    - Dst: std::shared_ptr::info
      Src: /src/pdns/pdns/auth-main.cc:1223,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-main.cc:1223,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:1223,1
    - Dst: strdup
      Src: /src/pdns/pdns/auth-main.cc:1226,1
    - Dst: const_cast<char*>
      Src: /src/pdns/pdns/auth-main.cc:1226,1
    - Dst: c_str
      Src: /src/pdns/pdns/auth-main.cc:1226,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-main.cc:1232,1
    - Dst: std::shared_ptr::info
      Src: /src/pdns/pdns/auth-main.cc:1233,1
    - Dst: close
      Src: /src/pdns/pdns/auth-main.cc:1234,1
    - Dst: fclose
      Src: /src/pdns/pdns/auth-main.cc:1235,1
    - Dst: dup2
      Src: /src/pdns/pdns/auth-main.cc:1238,1
    - Dst: close
      Src: /src/pdns/pdns/auth-main.cc:1239,1
    - Dst: dup2
      Src: /src/pdns/pdns/auth-main.cc:1243,1
    - Dst: close
      Src: /src/pdns/pdns/auth-main.cc:1244,1
    - Dst: execvp
      Src: /src/pdns/pdns/auth-main.cc:1246,1
    - Dst: std::vector::reserve
      Src: /src/pdns/pdns/auth-main.cc:1251,1
    - Dst: std::shared_ptr::error
      Src: /src/pdns/pdns/auth-main.cc:1255,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-main.cc:1255,1
    - Dst: Logging::IterLoggable
      Src: /src/pdns/pdns/auth-main.cc:1255,1
    - Dst: std::vector::cbegin
      Src: /src/pdns/pdns/auth-main.cc:1255,1
    - Dst: std::vector::cend
      Src: /src/pdns/pdns/auth-main.cc:1255,1
    - Dst: stringerror
      Src: /src/pdns/pdns/auth-main.cc:1258,1
    - Dst: exit
      Src: /src/pdns/pdns/auth-main.cc:1263,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-main.cc:1265,1
    - Dst: std::shared_ptr::info
      Src: /src/pdns/pdns/auth-main.cc:1266,1
    - Dst: close
      Src: /src/pdns/pdns/auth-main.cc:1270,1
    - Dst: close
      Src: /src/pdns/pdns/auth-main.cc:1271,1
    - Dst: signal
      Src: /src/pdns/pdns/auth-main.cc:1275,1
    - Dst: signal
      Src: /src/pdns/pdns/auth-main.cc:1277,1
    - Dst: signal
      Src: /src/pdns/pdns/auth-main.cc:1278,1
    - Dst: signal
      Src: /src/pdns/pdns/auth-main.cc:1279,1
    - Dst: writePid
      Src: /src/pdns/pdns/auth-main.cc:1281,1
    - Dst: unlock
      Src: /src/pdns/pdns/auth-main.cc:1283,1
    - Dst: waitpid
      Src: /src/pdns/pdns/auth-main.cc:1287,1
    - Dst: std::shared_ptr::error
      Src: /src/pdns/pdns/auth-main.cc:1291,1
    - Dst: stringerror
      Src: /src/pdns/pdns/auth-main.cc:1294,1
    - Dst: exit
      Src: /src/pdns/pdns/auth-main.cc:1297,1
    - Dst: DLQuitPlease
      Src: /src/pdns/pdns/auth-main.cc:1303,1
    - Dst: takedown
      Src: /src/pdns/pdns/auth-main.cc:1304,1
    - Dst: setStatus
      Src: /src/pdns/pdns/auth-main.cc:1305,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/auth-main.cc:1305,1
    - Dst: sleep
      Src: /src/pdns/pdns/auth-main.cc:1306,1
    - Dst: lock
      Src: /src/pdns/pdns/auth-main.cc:1310,1
    - Dst: close
      Src: /src/pdns/pdns/auth-main.cc:1311,1
    - Dst: fclose
      Src: /src/pdns/pdns/auth-main.cc:1312,1
    - Dst: WIFEXITED
      Src: /src/pdns/pdns/auth-main.cc:1315,1
    - Dst: WEXITSTATUS
      Src: /src/pdns/pdns/auth-main.cc:1316,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-main.cc:1319,1
    - Dst: std::shared_ptr::info
      Src: /src/pdns/pdns/auth-main.cc:1320,1
    - Dst: exit
      Src: /src/pdns/pdns/auth-main.cc:1321,1
    - Dst: setStatus
      Src: /src/pdns/pdns/auth-main.cc:1323,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/auth-main.cc:1323,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-main.cc:1324,1
    - Dst: std::shared_ptr::info
      Src: /src/pdns/pdns/auth-main.cc:1325,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-main.cc:1325,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-main.cc:1325,1
    - Dst: sleep
      Src: /src/pdns/pdns/auth-main.cc:1327,1
    - Dst: WIFSIGNALED
      Src: /src/pdns/pdns/auth-main.cc:1330,1
    - Dst: WTERMSIG
      Src: /src/pdns/pdns/auth-main.cc:1331,1
    - Dst: setStatus
      Src: /src/pdns/pdns/auth-main.cc:1332,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/auth-main.cc:1332,1
    - Dst: std::shared_ptr::info
      Src: /src/pdns/pdns/auth-main.cc:1334,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-main.cc:1334,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-main.cc:1334,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-main.cc:1336,1
    - Dst: WCOREDUMP
      Src: /src/pdns/pdns/auth-main.cc:1336,1
    - Dst: WCOREDUMP
      Src: /src/pdns/pdns/auth-main.cc:1343,1
    - Dst: sleep
      Src: /src/pdns/pdns/auth-main.cc:1348,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-main.cc:1351,1
    - Dst: std::shared_ptr::info
      Src: /src/pdns/pdns/auth-main.cc:1352,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-main.cc:1355,1
    - Dst: stringerror
      Src: /src/pdns/pdns/auth-main.cc:1355,1
    - Dst: std::shared_ptr::error
      Src: /src/pdns/pdns/auth-main.cc:1356,1
    - Dst: exit
      Src: /src/pdns/pdns/auth-main.cc:1357,1
    CyclomaticComplexity: 30
    EdgeCount: 30
    ICount: 130
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1360
      start: 1167
    functionDepth: 1
    functionLinenumber: 1167
    functionLinenumberEnd: 1360
    functionName: guardian
    functionSourceFile: /src/pdns/pdns/auth-main.cc
    functionUses: 0
    functionsReached:
    - DynListener::registerExitFunc
    - isGuarded
    - std::to_string
    - withName
    - stringerror
    - strdup
    - std::shared_ptr::error
    - close
    - setbuf
    - WCOREDUMP
    - char::char
    - std::shared_ptr::info
    - SLOG
    - const_cast<char*>
    - Logging::Loggable
    - DynListener::registerRestFunc
    - lock
    - DLQuitPlease
    - Logging::IterLoggable
    - DynListener::registerFunc
    - c_str
    - std::vector::cend
    - unlock
    - writePid
    - execvp
    - WIFEXITED
    - sleep
    - fork
    - std::vector::reserve
    - WEXITSTATUS
    - fdopen
    - exit
    - arg
    - takedown
    - setStatus
    - WIFSIGNALED
    - WTERMSIG
    - fclose
    - pipe
    - std::vector::cbegin
    - dup2
    - waitpid
    - signal
    - DynListener::go
    linkageType: ''
    returnType: int
    signature: int guardian(int argc, char** argv)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: backtrace
      Src: /src/pdns/pdns/auth-main.cc:1374,1
    - Dst: backtrace_symbols
      Src: /src/pdns/pdns/auth-main.cc:1375,1
    - Dst: signal
      Src: /src/pdns/pdns/auth-main.cc:1380,1
    - Dst: abort
      Src: /src/pdns/pdns/auth-main.cc:1381,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - num
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1382
      start: 1364
    functionDepth: 0
    functionLinenumber: 1364
    functionLinenumberEnd: 1382
    functionName: tbhandler
    functionSourceFile: /src/pdns/pdns/auth-main.cc
    functionUses: 0
    functionsReached:
    - backtrace
    - backtrace_symbols
    - signal
    - abort
    linkageType: ''
    returnType: void
    signature: void tbhandler(int num)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::coverage::dumpCoverageData
      Src: /src/pdns/pdns/auth-main.cc:1388,1
    - Dst: _exit
      Src: /src/pdns/pdns/auth-main.cc:1389,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - signal
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1390
      start: 1386
    functionDepth: 0
    functionLinenumber: 1386
    functionLinenumberEnd: 1390
    functionName: sigTermHandler
    functionSourceFile: /src/pdns/pdns/auth-main.cc
    functionUses: 0
    functionsReached:
    - pdns::coverage::dumpCoverageData
    - _exit
    linkageType: ''
    returnType: void
    signature: void sigTermHandler([[maybe_unused]] int signal)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Logger::Urgency
      Src: /src/pdns/pdns/auth-main.cc:1398,1
    - Dst: std::stringstream::str
      Src: /src/pdns/pdns/auth-main.cc:1404,1
    - Dst: std::quoted
      Src: /src/pdns/pdns/auth-main.cc:1405,1
    - Dst: std::quoted
      Src: /src/pdns/pdns/auth-main.cc:1407,1
    - Dst: error::value
      Src: /src/pdns/pdns/auth-main.cc:1407,1
    - Dst: std::quoted
      Src: /src/pdns/pdns/auth-main.cc:1411,1
    - Dst: name::value
      Src: /src/pdns/pdns/auth-main.cc:1411,1
    - Dst: std::quoted
      Src: /src/pdns/pdns/auth-main.cc:1414,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/auth-main.cc:1414,1
    - Dst: std::quoted
      Src: /src/pdns/pdns/auth-main.cc:1417,1
    - Dst: Logr::Logger::toString
      Src: /src/pdns/pdns/auth-main.cc:1417,1
    - Dst: std::quoted
      Src: /src/pdns/pdns/auth-main.cc:1421,1
    - Dst: Logging::toTimestampStringMilli
      Src: /src/pdns/pdns/auth-main.cc:1421,1
    - Dst: std::quoted
      Src: /src/pdns/pdns/auth-main.cc:1424,1
    - Dst: std::stringstream::str
      Src: /src/pdns/pdns/auth-main.cc:1427,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 21
    argCount: 1
    argNames:
    - ' entry'
    argTypes:
    - Logging::Entry
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1428
      start: 1393
    functionDepth: 0
    functionLinenumber: 1393
    functionLinenumberEnd: 1428
    functionName: loggerBackend
    functionSourceFile: /src/pdns/pdns/auth-main.cc
    functionUses: 0
    functionsReached:
    - std::quoted
    - Logger::Urgency
    - std::to_string
    - Logr::Logger::toString
    - std::stringstream::str
    - name::value
    - error::value
    - Logging::toTimestampStringMilli
    linkageType: ''
    returnType: void
    signature: void loggerBackend(const Logging::Entry& entry)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:1432,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:1434,1
    - Dst: empty
      Src: /src/pdns/pdns/auth-main.cc:1434,1
    - Dst: logFacilityToLOG
      Src: /src/pdns/pdns/auth-main.cc:1435,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:1435,1
    - Dst: setFacility
      Src: /src/pdns/pdns/auth-main.cc:1437,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:1439,1
    - Dst: setLoglevel
      Src: /src/pdns/pdns/auth-main.cc:1441,1
    - Dst: toConsole
      Src: /src/pdns/pdns/auth-main.cc:1442,1
    - Dst: disableSyslog
      Src: /src/pdns/pdns/auth-main.cc:1443,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:1443,1
    - Dst: setTimestamps
      Src: /src/pdns/pdns/auth-main.cc:1444,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:1444,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:1446,1
    - Dst: Logging::Logger::create
      Src: /src/pdns/pdns/auth-main.cc:1448,1
    - Dst: setPrefixed
      Src: /src/pdns/pdns/auth-main.cc:1451,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:1451,1
    - Dst: setSLog
      Src: /src/pdns/pdns/auth-main.cc:1455,1
    - Dst: withName
      Src: /src/pdns/pdns/auth-main.cc:1455,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1457
      start: 1430
    functionDepth: 0
    functionLinenumber: 1430
    functionLinenumberEnd: 1457
    functionName: setupLogging
    functionSourceFile: /src/pdns/pdns/auth-main.cc
    functionUses: 0
    functionsReached:
    - setTimestamps
    - setLoglevel
    - withName
    - setPrefixed
    - setSLog
    - toConsole
    - Logging::Logger::create
    - setFacility
    - empty
    - logFacilityToLOG
    - disableSyslog
    - arg
    linkageType: ''
    returnType: void
    signature: void setupLogging()
  - BBCount: 41
    BranchProfiles: []
    Callsites:
    - Dst: versionSetProduct
      Src: /src/pdns/pdns/auth-main.cc:1465,1
    - Dst: reportAllTypes
      Src: /src/pdns/pdns/auth-main.cc:1466,1
    - Dst: time
      Src: /src/pdns/pdns/auth-main.cc:1469,1
    - Dst: signal
      Src: /src/pdns/pdns/auth-main.cc:1472,1
    - Dst: signal
      Src: /src/pdns/pdns/auth-main.cc:1473,1
    - Dst: signal
      Src: /src/pdns/pdns/auth-main.cc:1474,1
    - Dst: signal
      Src: /src/pdns/pdns/auth-main.cc:1475,1
    - Dst: std::ios_base::sync_with_stdio
      Src: /src/pdns/pdns/auth-main.cc:1478,1
    - Dst: toConsole
      Src: /src/pdns/pdns/auth-main.cc:1480,1
    - Dst: declareArguments
      Src: /src/pdns/pdns/auth-main.cc:1482,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:1484,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:1486,1
    - Dst: getProductVersion
      Src: /src/pdns/pdns/auth-main.cc:1487,1
    - Dst: getBuildConfiguration
      Src: /src/pdns/pdns/auth-main.cc:1488,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:1492,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:1493,1
    - Dst: setName
      Src: /src/pdns/pdns/auth-main.cc:1495,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:1497,1
    - Dst: cleanSlashes
      Src: /src/pdns/pdns/auth-main.cc:1498,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:1500,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:1500,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:1501,1
    - Dst: std::string::c_str
      Src: /src/pdns/pdns/auth-main.cc:1501,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:1503,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:1506,1
    - Dst: empty
      Src: /src/pdns/pdns/auth-main.cc:1506,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:1510,1
    - Dst: empty
      Src: /src/pdns/pdns/auth-main.cc:1510,1
    - Dst: setupLogging
      Src: /src/pdns/pdns/auth-main.cc:1515,1
    - Dst: exit
      Src: /src/pdns/pdns/auth-main.cc:1520,1
    - Dst: what
      Src: /src/pdns/pdns/auth-main.cc:1524,1
    - Dst: exit
      Src: /src/pdns/pdns/auth-main.cc:1525,1
    - Dst: withName
      Src: /src/pdns/pdns/auth-main.cc:1531,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:1532,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:1535,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:1536,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:1536,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:1539,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:1539,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:1541,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:1541,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:1542,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:1543,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:1546,1
    - Dst: isGuarded
      Src: /src/pdns/pdns/auth-main.cc:1546,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:1547,1
    - Dst: toConsole
      Src: /src/pdns/pdns/auth-main.cc:1548,1
    - Dst: daemonize
      Src: /src/pdns/pdns/auth-main.cc:1549,1
    - Dst: guardian
      Src: /src/pdns/pdns/auth-main.cc:1551,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:1557,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:1557,1
    - Dst: signal
      Src: /src/pdns/pdns/auth-main.cc:1558,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:1565,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-main.cc:1566,1
    - Dst: std::shared_ptr::info
      Src: /src/pdns/pdns/auth-main.cc:1567,1
    - Dst: signal
      Src: /src/pdns/pdns/auth-main.cc:1568,1
    - Dst: signal
      Src: /src/pdns/pdns/auth-main.cc:1569,1
    - Dst: signal
      Src: /src/pdns/pdns/auth-main.cc:1570,1
    - Dst: signal
      Src: /src/pdns/pdns/auth-main.cc:1571,1
    - Dst: sodium_init
      Src: /src/pdns/pdns/auth-main.cc:1576,1
    - Dst: exit
      Src: /src/pdns/pdns/auth-main.cc:1578,1
    - Dst: openssl_thread_setup
      Src: /src/pdns/pdns/auth-main.cc:1582,1
    - Dst: openssl_seed
      Src: /src/pdns/pdns/auth-main.cc:1583,1
    - Dst: MiniCurl::init
      Src: /src/pdns/pdns/auth-main.cc:1586,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:1589,1
    - Dst: empty
      Src: /src/pdns/pdns/auth-main.cc:1589,1
    - Dst: stringtok
      Src: /src/pdns/pdns/auth-main.cc:1592,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:1592,1
    - Dst: UeberBackend::loadModules
      Src: /src/pdns/pdns/auth-main.cc:1593,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:1593,1
    - Dst: exit
      Src: /src/pdns/pdns/auth-main.cc:1594,1
    - Dst: BackendMakers
      Src: /src/pdns/pdns/auth-main.cc:1598,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:1598,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:1600,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:1602,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:1607,1
    - Dst: exit
      Src: /src/pdns/pdns/auth-main.cc:1615,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:1618,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:1621,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:1621,1
    - Dst: exit
      Src: /src/pdns/pdns/auth-main.cc:1622,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:1625,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:1626,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:1628,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:1631,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:1635,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:1636,1
    - Dst: std::string::c_str
      Src: /src/pdns/pdns/auth-main.cc:1636,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:1637,1
    - Dst: exit
      Src: /src/pdns/pdns/auth-main.cc:1638,1
    - Dst: exit
      Src: /src/pdns/pdns/auth-main.cc:1642,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:1646,1
    - Dst: exit
      Src: /src/pdns/pdns/auth-main.cc:1648,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:1651,1
    - Dst: BackendMakers
      Src: /src/pdns/pdns/auth-main.cc:1652,1
    - Dst: _exit
      Src: /src/pdns/pdns/auth-main.cc:1657,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:1660,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-main.cc:1661,1
    - Dst: std::shared_ptr::info
      Src: /src/pdns/pdns/auth-main.cc:1662,1
    - Dst: exit
      Src: /src/pdns/pdns/auth-main.cc:1663,1
    - Dst: BackendMakers
      Src: /src/pdns/pdns/auth-main.cc:1665,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-main.cc:1666,1
    - Dst: std::shared_ptr::info
      Src: /src/pdns/pdns/auth-main.cc:1667,1
    - Dst: exit
      Src: /src/pdns/pdns/auth-main.cc:1668,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:1670,1
    - Dst: toConsole
      Src: /src/pdns/pdns/auth-main.cc:1671,1
    - Dst: isGuarded
      Src: /src/pdns/pdns/auth-main.cc:1672,1
    - Dst: daemonize
      Src: /src/pdns/pdns/auth-main.cc:1673,1
    - Dst: isGuarded
      Src: /src/pdns/pdns/auth-main.cc:1676,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-main.cc:1677,1
    - Dst: info
      Src: /src/pdns/pdns/auth-main.cc:1678,1
    - Dst: std::make_unique<DynListener>
      Src: /src/pdns/pdns/auth-main.cc:1679,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-main.cc:1682,1
    - Dst: info
      Src: /src/pdns/pdns/auth-main.cc:1683,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:1685,1
    - Dst: std::make_unique<DynListener>
      Src: /src/pdns/pdns/auth-main.cc:1686,1
    - Dst: std::make_unique<DynListener>
      Src: /src/pdns/pdns/auth-main.cc:1688,1
    - Dst: writePid
      Src: /src/pdns/pdns/auth-main.cc:1690,1
    - Dst: DynListener::registerExitFunc
      Src: /src/pdns/pdns/auth-main.cc:1692,1
    - Dst: DynListener::registerFunc
      Src: /src/pdns/pdns/auth-main.cc:1693,1
    - Dst: DynListener::registerFunc
      Src: /src/pdns/pdns/auth-main.cc:1694,1
    - Dst: DynListener::registerFunc
      Src: /src/pdns/pdns/auth-main.cc:1695,1
    - Dst: DynListener::registerFunc
      Src: /src/pdns/pdns/auth-main.cc:1696,1
    - Dst: DynListener::registerFunc
      Src: /src/pdns/pdns/auth-main.cc:1697,1
    - Dst: DynListener::registerFunc
      Src: /src/pdns/pdns/auth-main.cc:1698,1
    - Dst: DynListener::registerFunc
      Src: /src/pdns/pdns/auth-main.cc:1699,1
    - Dst: DynListener::registerFunc
      Src: /src/pdns/pdns/auth-main.cc:1700,1
    - Dst: DynListener::registerFunc
      Src: /src/pdns/pdns/auth-main.cc:1701,1
    - Dst: DynListener::registerFunc
      Src: /src/pdns/pdns/auth-main.cc:1702,1
    - Dst: DynListener::registerFunc
      Src: /src/pdns/pdns/auth-main.cc:1703,1
    - Dst: DynListener::registerFunc
      Src: /src/pdns/pdns/auth-main.cc:1704,1
    - Dst: DynListener::registerFunc
      Src: /src/pdns/pdns/auth-main.cc:1705,1
    - Dst: DynListener::registerFunc
      Src: /src/pdns/pdns/auth-main.cc:1706,1
    - Dst: DynListener::registerFunc
      Src: /src/pdns/pdns/auth-main.cc:1707,1
    - Dst: DynListener::registerFunc
      Src: /src/pdns/pdns/auth-main.cc:1708,1
    - Dst: DynListener::registerFunc
      Src: /src/pdns/pdns/auth-main.cc:1709,1
    - Dst: DynListener::registerFunc
      Src: /src/pdns/pdns/auth-main.cc:1710,1
    - Dst: DynListener::registerFunc
      Src: /src/pdns/pdns/auth-main.cc:1711,1
    - Dst: DynListener::registerFunc
      Src: /src/pdns/pdns/auth-main.cc:1712,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:1714,1
    - Dst: empty
      Src: /src/pdns/pdns/auth-main.cc:1714,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/auth-main.cc:1715,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:1715,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:1715,1
    - Dst: DynListener::DynListener
      Src: /src/pdns/pdns/auth-main.cc:1715,1
    - Dst: DynListener*::go
      Src: /src/pdns/pdns/auth-main.cc:1716,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:1720,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:1721,1
    - Dst: std::string::c_str
      Src: /src/pdns/pdns/auth-main.cc:1721,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:1722,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:1724,1
    - Dst: empty
      Src: /src/pdns/pdns/auth-main.cc:1724,1
    - Dst: gethostname
      Src: /src/pdns/pdns/auth-main.cc:1726,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:1727,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-main.cc:1730,1
    - Dst: stringerror
      Src: /src/pdns/pdns/auth-main.cc:1730,1
    - Dst: error
      Src: /src/pdns/pdns/auth-main.cc:1731,1
    - Dst: std::make_shared<UDPNameserver>
      Src: /src/pdns/pdns/auth-main.cc:1735,1
    - Dst: push_back
      Src: /src/pdns/pdns/auth-main.cc:1736,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:1738,1
    - Dst: canReusePort
      Src: /src/pdns/pdns/auth-main.cc:1739,1
    - Dst: resize
      Src: /src/pdns/pdns/auth-main.cc:1740,1
    - Dst: std::make_shared<UDPNameserver>
      Src: /src/pdns/pdns/auth-main.cc:1744,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-main.cc:1747,1
    - Dst: error
      Src: /src/pdns/pdns/auth-main.cc:1748,1
    - Dst: withName
      Src: /src/pdns/pdns/auth-main.cc:1756,1
    - Dst: make_unique<TCPNameserver>
      Src: /src/pdns/pdns/auth-main.cc:1758,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-main.cc:1761,1
    - Dst: error
      Src: /src/pdns/pdns/auth-main.cc:1762,1
    - Dst: exit
      Src: /src/pdns/pdns/auth-main.cc:1763,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-main.cc:1766,1
    - Dst: what
      Src: /src/pdns/pdns/auth-main.cc:1766,1
    - Dst: error
      Src: /src/pdns/pdns/auth-main.cc:1767,1
    - Dst: what
      Src: /src/pdns/pdns/auth-main.cc:1767,1
    - Dst: exit
      Src: /src/pdns/pdns/auth-main.cc:1768,1
    - Dst: declareStats
      Src: /src/pdns/pdns/auth-main.cc:1772,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-main.cc:1775,1
    - Dst: error
      Src: /src/pdns/pdns/auth-main.cc:1776,1
    - Dst: exit
      Src: /src/pdns/pdns/auth-main.cc:1777,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:1781,1
    - Dst: auto::empty
      Src: /src/pdns/pdns/auth-main.cc:1782,1
    - Dst: DNSName
      Src: /src/pdns/pdns/auth-main.cc:1783,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-main.cc:1787,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:1787,1
    - Dst: what
      Src: /src/pdns/pdns/auth-main.cc:1787,1
    - Dst: error
      Src: /src/pdns/pdns/auth-main.cc:1788,1
    - Dst: what
      Src: /src/pdns/pdns/auth-main.cc:1788,1
    - Dst: exit
      Src: /src/pdns/pdns/auth-main.cc:1789,1
    - Dst: blacklist
      Src: /src/pdns/pdns/auth-main.cc:1791,1
    - Dst: DLOG
      Src: /src/pdns/pdns/auth-main.cc:1793,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-main.cc:1793,1
    - Dst: info
      Src: /src/pdns/pdns/auth-main.cc:1794,1
    - Dst: getProductVersionLines
      Src: /src/pdns/pdns/auth-main.cc:1796,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-main.cc:1797,1
    - Dst: info
      Src: /src/pdns/pdns/auth-main.cc:1798,1
    - Dst: mainthread
      Src: /src/pdns/pdns/auth-main.cc:1802,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:1806,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-main.cc:1812,1
    - Dst: error
      Src: /src/pdns/pdns/auth-main.cc:1813,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-main.cc:1817,1
    - Dst: what
      Src: /src/pdns/pdns/auth-main.cc:1818,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-main.cc:1823,1
    - Dst: what
      Src: /src/pdns/pdns/auth-main.cc:1823,1
    - Dst: error
      Src: /src/pdns/pdns/auth-main.cc:1824,1
    - Dst: what
      Src: /src/pdns/pdns/auth-main.cc:1824,1
    - Dst: exit
      Src: /src/pdns/pdns/auth-main.cc:1830,1
    CyclomaticComplexity: 61
    EdgeCount: 61
    ICount: 252
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1831
      start: 1461
    functionDepth: 2
    functionLinenumber: 1461
    functionLinenumberEnd: 1831
    functionName: main
    functionSourceFile: /src/pdns/pdns/auth-main.cc
    functionUses: 0
    functionsReached:
    - DynListener::registerExitFunc
    - isGuarded
    - withName
    - stringerror
    - openssl_thread_setup
    - declareStats
    - toConsole
    - UeberBackend::loadModules
    - DynListener*::go
    - std::ios_base::sync_with_stdio
    - error
    - versionSetProduct
    - gethostname
    - getBuildConfiguration
    - std::shared_ptr::info
    - MiniCurl::init
    - SLOG
    - stringtok
    - resize
    - reportAllTypes
    - time
    - DynListener::registerFunc
    - DynListener::DynListener
    - empty
    - setName
    - sodium_init
    - openssl_seed
    - writePid
    - getProductVersion
    - getProductVersionLines
    - daemonize
    - _exit
    - std::make_shared<UDPNameserver>
    - push_back
    - declareArguments
    - make_unique<TCPNameserver>
    - DNSName
    - exit
    - std::make_unique<DynListener>
    - arg
    - ComboAddress
    - BackendMakers
    - std::string::c_str
    - what
    - guardian
    - mainthread
    - cleanSlashes
    - info
    - canReusePort
    - DLOG
    - blacklist
    - setupLogging
    - signal
    - auto::empty
    linkageType: ''
    returnType: int
    signature: int main(int argc, char** argv)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 33
      start: 33
    functionDepth: 0
    functionLinenumber: 33
    functionLinenumberEnd: 33
    functionName: EDNSCookiesOpt
    functionSourceFile: /src/pdns/pdns/ednscookies.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void EDNSCookiesOpt()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/ednscookies.hh:42,1
    - Dst: size
      Src: /src/pdns/pdns/ednscookies.hh:42,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 40
    functionDepth: 0
    functionLinenumber: 40
    functionLinenumberEnd: 43
    functionName: size
    functionSourceFile: /src/pdns/pdns/ednscookies.hh
    functionUses: 8
    functionsReached:
    - size
    linkageType: ''
    returnType: size_t
    signature: size_t size() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/ednscookies.hh:51,1
    - Dst: empty
      Src: /src/pdns/pdns/ednscookies.hh:51,1
    - Dst: size
      Src: /src/pdns/pdns/ednscookies.hh:51,1
    - Dst: size
      Src: /src/pdns/pdns/ednscookies.hh:51,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 45
    functionDepth: 0
    functionLinenumber: 45
    functionLinenumberEnd: 52
    functionName: isWellFormed
    functionSourceFile: /src/pdns/pdns/ednscookies.hh
    functionUses: 0
    functionsReached:
    - empty
    - size
    linkageType: ''
    returnType: bool
    signature: bool isWellFormed() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 60
    functionDepth: 0
    functionLinenumber: 60
    functionLinenumberEnd: 63
    functionName: getServer
    functionSourceFile: /src/pdns/pdns/ednscookies.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string getServer() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 64
    functionDepth: 0
    functionLinenumber: 64
    functionLinenumberEnd: 67
    functionName: getClient
    functionSourceFile: /src/pdns/pdns/ednscookies.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string getClient() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: shared_ptr<const DNSRecordContent>::getZoneRepresentation
      Src: /src/pdns/pdns/ixfrutils.hh:41,1
    - Dst: getZoneRepresentation
      Src: /src/pdns/pdns/ixfrutils.hh:41,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - a
    - ' b'
    argTypes:
    - shared_ptr<const DNSRecordContent>
    - shared_ptr<const DNSRecordContent>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 39
    functionDepth: 0
    functionLinenumber: 39
    functionLinenumberEnd: 42
    functionName: operator()(const shared_ptr<const DNSRecordContent>&a, const shared_ptr<const
      DNSRecordContent>& b) const
    functionSourceFile: /src/pdns/pdns/ixfrutils.hh
    functionUses: 0
    functionsReached:
    - getZoneRepresentation
    - shared_ptr<const DNSRecordContent>::getZoneRepresentation
    linkageType: ''
    returnType: bool
    signature: bool operator()(const shared_ptr<const DNSRecordContent>&a, const shared_ptr<const
      DNSRecordContent>& b) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 54
    functionDepth: 0
    functionLinenumber: 54
    functionLinenumberEnd: 54
    functionName: SSQLite3::db
    functionSourceFile: /src/pdns/pdns/ssqlite3.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: sqlite3
    signature: sqlite3 * db()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 56
    functionDepth: 0
    functionLinenumber: 56
    functionLinenumberEnd: 56
    functionName: SSQLite3::inTransaction
    functionSourceFile: /src/pdns/pdns/ssqlite3.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool inTransaction() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ZoneName
      Src: /src/pdns/pdns/bindparserclasses.hh:38,1
    - Dst: BindDomainInfo::clear
      Src: /src/pdns/pdns/bindparserclasses.hh:40,1
    - Dst: BindDomainInfo::clear
      Src: /src/pdns/pdns/bindparserclasses.hh:41,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 36
    functionDepth: 0
    functionLinenumber: 36
    functionLinenumberEnd: 44
    functionName: BindDomainInfo::clear
    functionSourceFile: /src/pdns/pdns/bindparserclasses.hh
    functionUses: 1
    functionsReached:
    - ZoneName
    - BindDomainInfo::clear
    linkageType: ''
    returnType: void
    signature: void clear()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pair
      Src: /src/pdns/pdns/bindparserclasses.hh:58,1
    - Dst: pair
      Src: /src/pdns/pdns/bindparserclasses.hh:58,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' b'
    argTypes:
    - BindDomainInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 56
    functionDepth: 0
    functionLinenumber: 56
    functionLinenumberEnd: 59
    functionName: operator<(const BindDomainInfo& b) const
    functionSourceFile: /src/pdns/pdns/bindparserclasses.hh
    functionUses: 0
    functionsReached:
    - pair
    linkageType: ''
    returnType: bool
    signature: bool operator<(const BindDomainInfo& b) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: c_str
      Src: /src/pdns/pdns/bindparserclasses.hh:73,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 67
    functionDepth: 0
    functionLinenumber: 67
    functionLinenumberEnd: 74
    functionName: BindParser::BindParser
    functionSourceFile: /src/pdns/pdns/bindparserclasses.hh
    functionUses: 0
    functionsReached:
    - c_str
    linkageType: ''
    returnType: void
    signature: void BindParser()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: fclose
      Src: /src/pdns/pdns/bindparserclasses.hh:78,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: ~BindParser()
    functionSourceFile: /src/pdns/pdns/bindparserclasses.hh
    functionUses: 0
    functionsReached:
    - fclose
    linkageType: ''
    returnType: void
    signature: void ~BindParser()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 89
    functionDepth: 0
    functionLinenumber: 89
    functionLinenumberEnd: 89
    functionName: '& getAlsoNotify()'
    functionSourceFile: /src/pdns/pdns/bindparserclasses.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: set<string>
    signature: set<string> & getAlsoNotify()
  - BBCount: 39
    BranchProfiles: []
    Callsites:
    - Dst: exit
      Src: /src/pdns/pdns/saxfr.cc:27,1
    - Dst: DNSName::DNSName
      Src: /src/pdns/pdns/saxfr.cc:36,1
    - Dst: strcmp
      Src: /src/pdns/pdns/saxfr.cc:43,1
    - Dst: strcmp
      Src: /src/pdns/pdns/saxfr.cc:45,1
    - Dst: strcmp
      Src: /src/pdns/pdns/saxfr.cc:47,1
    - Dst: strncmp
      Src: /src/pdns/pdns/saxfr.cc:49,1
    - Dst: string
      Src: /src/pdns/pdns/saxfr.cc:53,1
    - Dst: string::empty
      Src: /src/pdns/pdns/saxfr.cc:54,1
    - Dst: exit
      Src: /src/pdns/pdns/saxfr.cc:56,1
    - Dst: strncmp
      Src: /src/pdns/pdns/saxfr.cc:59,1
    - Dst: stringtok
      Src: /src/pdns/pdns/saxfr.cc:62,1
    - Dst: vector::size
      Src: /src/pdns/pdns/saxfr.cc:63,1
    - Dst: exit
      Src: /src/pdns/pdns/saxfr.cc:65,1
    - Dst: getTSIGHashEnum
      Src: /src/pdns/pdns/saxfr.cc:67,1
    - Dst: DNSName
      Src: /src/pdns/pdns/saxfr.cc:67,1
    - Dst: exit
      Src: /src/pdns/pdns/saxfr.cc:69,1
    - Dst: DNSName
      Src: /src/pdns/pdns/saxfr.cc:71,1
    - Dst: DNSName
      Src: /src/pdns/pdns/saxfr.cc:72,1
    - Dst: exit
      Src: /src/pdns/pdns/saxfr.cc:74,1
    - Dst: B64Decode
      Src: /src/pdns/pdns/saxfr.cc:76,1
    - Dst: exit
      Src: /src/pdns/pdns/saxfr.cc:78,1
    - Dst: string::size
      Src: /src/pdns/pdns/saxfr.cc:80,1
    - Dst: exit
      Src: /src/pdns/pdns/saxfr.cc:82,1
    - Dst: reportAllTypes
      Src: /src/pdns/pdns/saxfr.cc:88,1
    - Dst: atoi
      Src: /src/pdns/pdns/saxfr.cc:92,1
    - Dst: Socket::connect
      Src: /src/pdns/pdns/saxfr.cc:94,1
    - Dst: exit
      Src: /src/pdns/pdns/saxfr.cc:99,1
    - Dst: GssContext::GssContext
      Src: /src/pdns/pdns/saxfr.cc:102,1
    - Dst: GssContext::generateLabel
      Src: /src/pdns/pdns/saxfr.cc:103,1
    - Dst: GssContext::setPeerPrincipal
      Src: /src/pdns/pdns/saxfr.cc:104,1
    - Dst: GssContext::init
      Src: /src/pdns/pdns/saxfr.cc:106,1
    - Dst: GssContext::valid
      Src: /src/pdns/pdns/saxfr.cc:106,1
    - Dst: GssContext::getLabel
      Src: /src/pdns/pdns/saxfr.cc:108,1
    - Dst: TKEYRecordContent::TKEYRecordContent
      Src: /src/pdns/pdns/saxfr.cc:109,1
    - Dst: time
      Src: /src/pdns/pdns/saxfr.cc:112,1
    - Dst: size
      Src: /src/pdns/pdns/saxfr.cc:116,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/saxfr.cc:119,1
    - Dst: dns_random_uint16
      Src: /src/pdns/pdns/saxfr.cc:119,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/saxfr.cc:120,1
    - Dst: GssContext::getLabel
      Src: /src/pdns/pdns/saxfr.cc:120,1
    - Dst: TKEYRecordContent::toPacket
      Src: /src/pdns/pdns/saxfr.cc:121,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/saxfr.cc:122,1
    - Dst: GssContext::getErrorStrings
      Src: /src/pdns/pdns/saxfr.cc:123,1
    - Dst: htons
      Src: /src/pdns/pdns/saxfr.cc:127,1
    - Dst: vector::size
      Src: /src/pdns/pdns/saxfr.cc:127,1
    - Dst: Socket::write
      Src: /src/pdns/pdns/saxfr.cc:128,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/saxfr.cc:129,1
    - Dst: Socket::writen
      Src: /src/pdns/pdns/saxfr.cc:130,1
    - Dst: string
      Src: /src/pdns/pdns/saxfr.cc:130,1
    - Dst: vector::size
      Src: /src/pdns/pdns/saxfr.cc:130,1
    - Dst: Socket::read
      Src: /src/pdns/pdns/saxfr.cc:131,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/saxfr.cc:132,1
    - Dst: ntohs
      Src: /src/pdns/pdns/saxfr.cc:134,1
    - Dst: std::make_unique<char[]>
      Src: /src/pdns/pdns/saxfr.cc:135,1
    - Dst: Socket::read
      Src: /src/pdns/pdns/saxfr.cc:139,1
    - Dst: auto::get
      Src: /src/pdns/pdns/saxfr.cc:139,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/saxfr.cc:141,1
    - Dst: string
      Src: /src/pdns/pdns/saxfr.cc:145,1
    - Dst: auto::get
      Src: /src/pdns/pdns/saxfr.cc:145,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/saxfr.cc:147,1
    - Dst: string
      Src: /src/pdns/pdns/saxfr.cc:147,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/saxfr.cc:147,1
    - Dst: MOADNSParser::d_answers::begin
      Src: /src/pdns/pdns/saxfr.cc:149,1
    - Dst: MOADNSParser::d_answers::end
      Src: /src/pdns/pdns/saxfr.cc:149,1
    - Dst: TKEYRecordContent
      Src: /src/pdns/pdns/saxfr.cc:154,1
    - Dst: MOADNSParser::answers_t::const_iterator::getContent
      Src: /src/pdns/pdns/saxfr.cc:154,1
    - Dst: GssContext::valid
      Src: /src/pdns/pdns/saxfr.cc:159,1
    - Dst: exit
      Src: /src/pdns/pdns/saxfr.cc:161,1
    - Dst: DNSName
      Src: /src/pdns/pdns/saxfr.cc:164,1
    - Dst: GssContext::getLabel
      Src: /src/pdns/pdns/saxfr.cc:164,1
    - Dst: DNSName
      Src: /src/pdns/pdns/saxfr.cc:168,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/saxfr.cc:170,1
    - Dst: dns_random_uint16
      Src: /src/pdns/pdns/saxfr.cc:170,1
    - Dst: TSIGRecordContent::TSIGRecordContent
      Src: /src/pdns/pdns/saxfr.cc:173,1
    - Dst: getTSIGAlgoName
      Src: /src/pdns/pdns/saxfr.cc:174,1
    - Dst: time
      Src: /src/pdns/pdns/saxfr.cc:175,1
    - Dst: ntohs
      Src: /src/pdns/pdns/saxfr.cc:177,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/saxfr.cc:177,1
    - Dst: addTSIG
      Src: /src/pdns/pdns/saxfr.cc:179,1
    - Dst: htons
      Src: /src/pdns/pdns/saxfr.cc:182,1
    - Dst: vector::size
      Src: /src/pdns/pdns/saxfr.cc:182,1
    - Dst: Socket::write
      Src: /src/pdns/pdns/saxfr.cc:183,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/saxfr.cc:184,1
    - Dst: Socket::writen
      Src: /src/pdns/pdns/saxfr.cc:186,1
    - Dst: string
      Src: /src/pdns/pdns/saxfr.cc:186,1
    - Dst: vector::begin
      Src: /src/pdns/pdns/saxfr.cc:186,1
    - Dst: vector::end
      Src: /src/pdns/pdns/saxfr.cc:186,1
    - Dst: NSEC3PARAMRecordContent::NSEC3PARAMRecordContent
      Src: /src/pdns/pdns/saxfr.cc:193,1
    - Dst: TSIGRecordContent::TSIGRecordContent
      Src: /src/pdns/pdns/saxfr.cc:196,1
    - Dst: Socket::read
      Src: /src/pdns/pdns/saxfr.cc:198,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/saxfr.cc:199,1
    - Dst: ntohs
      Src: /src/pdns/pdns/saxfr.cc:201,1
    - Dst: std::make_unique<char[]>
      Src: /src/pdns/pdns/saxfr.cc:202,1
    - Dst: Socket::read
      Src: /src/pdns/pdns/saxfr.cc:206,1
    - Dst: auto::get
      Src: /src/pdns/pdns/saxfr.cc:206,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/saxfr.cc:208,1
    - Dst: string
      Src: /src/pdns/pdns/saxfr.cc:212,1
    - Dst: auto::get
      Src: /src/pdns/pdns/saxfr.cc:212,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/saxfr.cc:214,1
    - Dst: string
      Src: /src/pdns/pdns/saxfr.cc:214,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/saxfr.cc:214,1
    - Dst: MOADNSParser::d_answers::begin
      Src: /src/pdns/pdns/saxfr.cc:216,1
    - Dst: MOADNSParser::d_answers::end
      Src: /src/pdns/pdns/saxfr.cc:216,1
    - Dst: TSIGRecordContent
      Src: /src/pdns/pdns/saxfr.cc:222,1
    - Dst: MOADNSParser::answers_t::const_iterator::getContent
      Src: /src/pdns/pdns/saxfr.cc:222,1
    - Dst: NSEC3PARAMRecordContent
      Src: /src/pdns/pdns/saxfr.cc:230,1
    - Dst: MOADNSParser::answers_t::const_iterator::getContent
      Src: /src/pdns/pdns/saxfr.cc:230,1
    - Dst: DNSRecordContent::NumberToType
      Src: /src/pdns/pdns/saxfr.cc:235,1
    - Dst: MOADNSParser::answers_t::const_iterator::getContent
      Src: /src/pdns/pdns/saxfr.cc:238,1
    - Dst: MOADNSParser::answers_t::const_iterator::getContent
      Src: /src/pdns/pdns/saxfr.cc:242,1
    - Dst: stringtok
      Src: /src/pdns/pdns/saxfr.cc:244,1
    - Dst: MOADNSParser::answers_t::const_iterator::getContent
      Src: /src/pdns/pdns/saxfr.cc:249,1
    - Dst: stringtok
      Src: /src/pdns/pdns/saxfr.cc:251,1
    - Dst: vector::begin
      Src: /src/pdns/pdns/saxfr.cc:258,1
    - Dst: vector::end
      Src: /src/pdns/pdns/saxfr.cc:258,1
    - Dst: MOADNSParser::answers_t::const_iterator::getContent
      Src: /src/pdns/pdns/saxfr.cc:263,1
    - Dst: stringtok
      Src: /src/pdns/pdns/saxfr.cc:265,1
    - Dst: MOADNSParser::answers_t::const_iterator::getContent
      Src: /src/pdns/pdns/saxfr.cc:270,1
    - Dst: vector::emplace_back
      Src: /src/pdns/pdns/saxfr.cc:273,1
    - Dst: ostringstream::str
      Src: /src/pdns/pdns/saxfr.cc:273,1
    - Dst: set::insert
      Src: /src/pdns/pdns/saxfr.cc:277,1
    - Dst: DNSName
      Src: /src/pdns/pdns/saxfr.cc:278,1
    - Dst: DNSName::chopOff
      Src: /src/pdns/pdns/saxfr.cc:280,1
    - Dst: toBase32Hex
      Src: /src/pdns/pdns/saxfr.cc:289,1
    - Dst: hashQNameWithSalt
      Src: /src/pdns/pdns/saxfr.cc:289,1
    - Dst: map::insert
      Src: /src/pdns/pdns/saxfr.cc:290,1
    - Dst: pair<string,DNSName>
      Src: /src/pdns/pdns/saxfr.cc:290,1
    - Dst: map::find
      Src: /src/pdns/pdns/saxfr.cc:298,1
    - Dst: DNSName::makeRelative
      Src: /src/pdns/pdns/saxfr.cc:298,1
    - Dst: DNSName
      Src: /src/pdns/pdns/saxfr.cc:298,1
    - Dst: map::end
      Src: /src/pdns/pdns/saxfr.cc:299,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/saxfr.cc:302,1
    - Dst: what
      Src: /src/pdns/pdns/saxfr.cc:311,1
    CyclomaticComplexity: 65
    EdgeCount: 65
    ICount: 192
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 312
      start: 22
    functionDepth: 1
    functionLinenumber: 22
    functionLinenumberEnd: 312
    functionName: main
    functionSourceFile: /src/pdns/pdns/saxfr.cc
    functionUses: 0
    functionsReached:
    - std::to_string
    - ntohs
    - TKEYRecordContent::TKEYRecordContent
    - PDNSException
    - std::make_unique<char[]>
    - dns_random_uint16
    - DNSName::toString
    - MOADNSParser::d_answers::end
    - TSIGRecordContent::TSIGRecordContent
    - Socket::read
    - hashQNameWithSalt
    - MOADNSParser::answers_t::const_iterator::getContent
    - vector::begin
    - set::insert
    - stringtok
    - string::size
    - reportAllTypes
    - string::empty
    - GssContext::getErrorStrings
    - time
    - DNSName::chopOff
    - map::end
    - string
    - B64Decode
    - size
    - Socket::connect
    - DNSPacketWriter::getHeader
    - TKEYRecordContent::toPacket
    - GssContext::setPeerPrincipal
    - DNSRecordContent::NumberToType
    - GssContext::valid
    - DNSPacketWriter::startRecord
    - TSIGRecordContent
    - htons
    - MOADNSParser::d_answers::begin
    - GssContext::getLabel
    - auto::get
    - DNSPacketWriter::commit
    - GssContext::init
    - TKEYRecordContent
    - strncmp
    - DNSName
    - vector::end
    - getTSIGHashEnum
    - ostringstream::str
    - GssContext::generateLabel
    - DNSName::makeRelative
    - exit
    - map::insert
    - pair<string,DNSName>
    - map::find
    - GssContext::GssContext
    - addTSIG
    - atoi
    - getTSIGAlgoName
    - what
    - strcmp
    - NSEC3PARAMRecordContent::NSEC3PARAMRecordContent
    - vector::emplace_back
    - toBase32Hex
    - DNSName::DNSName
    - Socket::write
    - vector::size
    - NSEC3PARAMRecordContent
    - Socket::writen
    linkageType: ''
    returnType: int
    signature: int main(int argc, char** argv)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ERCode::to_s
      Src: /src/pdns/pdns/dns.cc:92,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - rcode
    argTypes:
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 88
    functionDepth: 0
    functionLinenumber: 88
    functionLinenumberEnd: 93
    functionName: RCode::to_s
    functionSourceFile: /src/pdns/pdns/dns.cc
    functionUses: 1
    functionsReached:
    - ERCode::to_s
    linkageType: ''
    returnType: std::string
    signature: std::string RCode::to_s(uint8_t rcode)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ERCode::to_short_s
      Src: /src/pdns/pdns/dns.cc:99,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - rcode
    argTypes:
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 95
    functionDepth: 0
    functionLinenumber: 95
    functionLinenumberEnd: 100
    functionName: RCode::to_short_s
    functionSourceFile: /src/pdns/pdns/dns.cc
    functionUses: 1
    functionsReached:
    - ERCode::to_short_s
    linkageType: ''
    returnType: std::string
    signature: std::string RCode::to_short_s(uint8_t rcode)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: std::find
      Src: /src/pdns/pdns/dns.cc:104,1
    - Dst: begin
      Src: /src/pdns/pdns/dns.cc:104,1
    - Dst: end
      Src: /src/pdns/pdns/dns.cc:104,1
    - Dst: end
      Src: /src/pdns/pdns/dns.cc:105,1
    - Dst: std::distance
      Src: /src/pdns/pdns/dns.cc:108,1
    - Dst: begin
      Src: /src/pdns/pdns/dns.cc:108,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - ' rcode_string'
    argTypes:
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 113
      start: 102
    functionDepth: 1
    functionLinenumber: 102
    functionLinenumberEnd: 113
    functionName: RCode::from_short
    functionSourceFile: /src/pdns/pdns/dns.cc
    functionUses: 0
    functionsReached:
    - end
    - std::distance
    - std::find
    - begin
    linkageType: ''
    returnType: std::optional<uint8_t>
    signature: std::optional<uint8_t> RCode::from_short(const std::string_view& rcode_string)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dns.cc:116,1
    - Dst: std::string
      Src: /src/pdns/pdns/dns.cc:117,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dns.cc:117,1
    - Dst: at
      Src: /src/pdns/pdns/dns.cc:119,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - rcode
    argTypes:
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 115
    functionDepth: 0
    functionLinenumber: 115
    functionLinenumberEnd: 120
    functionName: ERCode::to_s
    functionSourceFile: /src/pdns/pdns/dns.cc
    functionUses: 1
    functionsReached:
    - std::string
    - at
    - std::to_string
    - size
    linkageType: ''
    returnType: std::string
    signature: std::string ERCode::to_s(uint16_t rcode)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dns.cc:123,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dns.cc:124,1
    - Dst: at
      Src: /src/pdns/pdns/dns.cc:126,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - rcode
    argTypes:
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 127
      start: 122
    functionDepth: 0
    functionLinenumber: 122
    functionLinenumberEnd: 127
    functionName: ERCode::to_short_s
    functionSourceFile: /src/pdns/pdns/dns.cc
    functionUses: 1
    functionsReached:
    - at
    - std::to_string
    - size
    linkageType: ''
    returnType: std::string
    signature: std::string ERCode::to_short_s(uint16_t rcode)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::find
      Src: /src/pdns/pdns/dns.cc:131,1
    - Dst: begin
      Src: /src/pdns/pdns/dns.cc:131,1
    - Dst: end
      Src: /src/pdns/pdns/dns.cc:131,1
    - Dst: end
      Src: /src/pdns/pdns/dns.cc:132,1
    - Dst: std::distance
      Src: /src/pdns/pdns/dns.cc:135,1
    - Dst: begin
      Src: /src/pdns/pdns/dns.cc:135,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ' ercode_string'
    argTypes:
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 136
      start: 129
    functionDepth: 1
    functionLinenumber: 129
    functionLinenumberEnd: 136
    functionName: ERCode::from_short
    functionSourceFile: /src/pdns/pdns/dns.cc
    functionUses: 0
    functionsReached:
    - end
    - std::distance
    - std::find
    - begin
    linkageType: ''
    returnType: std::optional<uint16_t>
    signature: std::optional<uint16_t> ERCode::from_short(const std::string_view&
      ercode_string)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::array::size
      Src: /src/pdns/pdns/dns.cc:141,1
    - Dst: std::array::at
      Src: /src/pdns/pdns/dns.cc:141,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dns.cc:142,1
    - Dst: std::array::at
      Src: /src/pdns/pdns/dns.cc:145,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - opcode
    argTypes:
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 146
      start: 138
    functionDepth: 0
    functionLinenumber: 138
    functionLinenumberEnd: 146
    functionName: Opcode::to_s
    functionSourceFile: /src/pdns/pdns/dns.cc
    functionUses: 0
    functionsReached:
    - std::array::at
    - std::to_string
    - std::array::size
    linkageType: ''
    returnType: std::string
    signature: std::string Opcode::to_s(uint8_t opcode)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::find
      Src: /src/pdns/pdns/dns.cc:151,1
    - Dst: std::array::begin
      Src: /src/pdns/pdns/dns.cc:151,1
    - Dst: std::array::end
      Src: /src/pdns/pdns/dns.cc:151,1
    - Dst: std::array::end
      Src: /src/pdns/pdns/dns.cc:152,1
    - Dst: auto*::empty
      Src: /src/pdns/pdns/dns.cc:152,1
    - Dst: std::distance
      Src: /src/pdns/pdns/dns.cc:155,1
    - Dst: std::array::begin
      Src: /src/pdns/pdns/dns.cc:155,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - ' opcode_string'
    argTypes:
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 156
      start: 148
    functionDepth: 1
    functionLinenumber: 148
    functionLinenumberEnd: 156
    functionName: Opcode::from_lowercase_string
    functionSourceFile: /src/pdns/pdns/dns.cc
    functionUses: 0
    functionsReached:
    - std::distance
    - std::array::end
    - std::find
    - auto*::empty
    - std::array::begin
    linkageType: ''
    returnType: std::optional<uint8_t>
    signature: std::optional<uint8_t> Opcode::from_lowercase_string(const std::string_view&
      opcode_string)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pdns::views::UnsignedCharView::length
      Src: /src/pdns/pdns/dns.cc:169,1
    - Dst: burtleCI
      Src: /src/pdns/pdns/dns.cc:174,1
    - Dst: pdns::views::UnsignedCharView::data
      Src: /src/pdns/pdns/dns.cc:174,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 4
    argNames:
    - packet
    - packet_len
    - init
    - ' wasOK'
    argTypes:
    - uint8_t*
    - uint16_t
    - uint32_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 181
      start: 159
    functionDepth: 0
    functionLinenumber: 159
    functionLinenumberEnd: 181
    functionName: hashQuestion
    functionSourceFile: /src/pdns/pdns/dns.cc
    functionUses: 0
    functionsReached:
    - pdns::views::UnsignedCharView::length
    - burtleCI
    - pdns::views::UnsignedCharView::data
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t hashQuestion(const uint8_t* packet, uint16_t packet_len, uint32_t
      init, bool& wasOK)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dns.cc:192,1
    - Dst: at
      Src: /src/pdns/pdns/dns.cc:195,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - place
    argTypes:
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 196
      start: 190
    functionDepth: 0
    functionLinenumber: 190
    functionLinenumberEnd: 196
    functionName: DNSResourceRecord::placeString
    functionSourceFile: /src/pdns/pdns/dns.cc
    functionUses: 0
    functionsReached:
    - at
    - size
    linkageType: ''
    returnType: std::string
    signature: std::string DNSResourceRecord::placeString(uint8_t place)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - slog
    argTypes:
    - Logr::log_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 74
    functionDepth: 0
    functionLinenumber: 74
    functionLinenumberEnd: 74
    functionName: UeberBackend::handle::setSLog
    functionSourceFile: /src/pdns/pdns/ueberbackend.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setSLog(Logr::log_t slog)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: std::deque::empty
      Src: /src/pdns/pdns/histog.hh:46,1
    - Dst: acc
      Src: /src/pdns/pdns/histog.hh:51,1
    - Dst: cumulstats
      Src: /src/pdns/pdns/histog.hh:53,1
    - Dst: std::deque::front
      Src: /src/pdns/pdns/histog.hh:54,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/histog.hh:55,1
    - Dst: std::deque::front
      Src: /src/pdns/pdns/histog.hh:55,1
    - Dst: ba::mean
      Src: /src/pdns/pdns/histog.hh:55,1
    - Dst: ba::median
      Src: /src/pdns/pdns/histog.hh:55,1
    - Dst: sqrt
      Src: /src/pdns/pdns/histog.hh:55,1
    - Dst: ba::variance
      Src: /src/pdns/pdns/histog.hh:55,1
    - Dst: ba::mean
      Src: /src/pdns/pdns/histog.hh:55,1
    - Dst: ba::median
      Src: /src/pdns/pdns/histog.hh:55,1
    - Dst: std::deque::pop_front
      Src: /src/pdns/pdns/histog.hh:57,1
    - Dst: std::sort
      Src: /src/pdns/pdns/histog.hh:62,1
    - Dst: std::vector::begin
      Src: /src/pdns/pdns/histog.hh:62,1
    - Dst: std::vector::end
      Src: /src/pdns/pdns/histog.hh:62,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    argCount: 1
    argNames:
    - ' bins'
    argTypes:
    - T
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 29
    functionDepth: 0
    functionLinenumber: 29
    functionLinenumberEnd: 66
    functionName: createLogHistogram
    functionSourceFile: /src/pdns/pdns/histog.hh
    functionUses: 0
    functionsReached:
    - std::vector::end
    - std::vector::push_back
    - std::deque::empty
    - ba::median
    - std::deque::pop_front
    - std::vector::begin
    - cumulstats
    - std::sort
    - ba::mean
    - sqrt
    - ba::variance
    - std::deque::front
    - acc
    linkageType: ''
    returnType: std::vector<LogHistogramBin>
    signature: std::vector<LogHistogramBin> createLogHistogram(const T& bins)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: createLogHistogram
      Src: /src/pdns/pdns/histog.hh:71,1
    - Dst: flush
      Src: /src/pdns/pdns/histog.hh:91,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - ' bins'
    - ' out'
    argTypes:
    - T
    - std::ostream
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 69
    functionDepth: 1
    functionLinenumber: 69
    functionLinenumberEnd: 92
    functionName: writeLogHistogramFile
    functionSourceFile: /src/pdns/pdns/histog.hh
    functionUses: 0
    functionsReached:
    - createLogHistogram
    - flush
    linkageType: ''
    returnType: void
    signature: void writeLogHistogramFile(const T& bins, std::ostream& out)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: flush
      Src: /src/pdns/pdns/histog.hh:105,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - ' bins'
    - binMsec
    - ' out'
    argTypes:
    - T
    - double
    - std::ofstream
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 95
    functionDepth: 0
    functionLinenumber: 95
    functionLinenumberEnd: 106
    functionName: writeFullHistogramFile
    functionSourceFile: /src/pdns/pdns/histog.hh
    functionUses: 0
    functionsReached:
    - flush
    linkageType: ''
    returnType: void
    signature: void writeFullHistogramFile(const T& bins, double binMsec, std::ofstream&
      out)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: productTypeApiType
      Src: /src/pdns/pdns/ws-api.cc:59,1
    - Dst: getPDNSVersion
      Src: /src/pdns/pdns/ws-api.cc:60,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 53
    functionDepth: 0
    functionLinenumber: 53
    functionLinenumberEnd: 67
    functionName: getServerDetail
    functionSourceFile: /src/pdns/pdns/ws-api.cc
    functionUses: 0
    functionsReached:
    - productTypeApiType
    - getPDNSVersion
    linkageType: ''
    returnType: Json
    signature: Json getServerDetail()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/ws-api.cc:77,1
    - Dst: HttpResponse*::setJsonBody
      Src: /src/pdns/pdns/ws-api.cc:79,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - resp
    argTypes:
    - HttpResponse*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 72
    functionDepth: 0
    functionLinenumber: 72
    functionLinenumberEnd: 80
    functionName: apiDiscovery
    functionSourceFile: /src/pdns/pdns/ws-api.cc
    functionUses: 0
    functionsReached:
    - std::move
    - HttpResponse*::setJsonBody
    linkageType: ''
    returnType: void
    signature: void apiDiscovery(HttpRequest* /* req */, HttpResponse* resp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: HttpResponse*::setJsonBody
      Src: /src/pdns/pdns/ws-api.cc:89,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - resp
    argTypes:
    - HttpResponse*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 82
    functionDepth: 0
    functionLinenumber: 82
    functionLinenumberEnd: 90
    functionName: apiDiscoveryV1
    functionSourceFile: /src/pdns/pdns/ws-api.cc
    functionUses: 0
    functionsReached:
    - HttpResponse*::setJsonBody
    linkageType: ''
    returnType: void
    signature: void apiDiscoveryV1(HttpRequest* /* req */, HttpResponse* resp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getServerDetail
      Src: /src/pdns/pdns/ws-api.cc:94,1
    - Dst: HttpResponse*::setJsonBody
      Src: /src/pdns/pdns/ws-api.cc:95,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - resp
    argTypes:
    - HttpResponse*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 92
    functionDepth: 0
    functionLinenumber: 92
    functionLinenumberEnd: 96
    functionName: apiServer
    functionSourceFile: /src/pdns/pdns/ws-api.cc
    functionUses: 0
    functionsReached:
    - getServerDetail
    - HttpResponse*::setJsonBody
    linkageType: ''
    returnType: void
    signature: void apiServer(HttpRequest* /* req */, HttpResponse* resp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: HttpResponse*::setJsonBody
      Src: /src/pdns/pdns/ws-api.cc:100,1
    - Dst: getServerDetail
      Src: /src/pdns/pdns/ws-api.cc:100,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - resp
    argTypes:
    - HttpResponse*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 98
    functionDepth: 0
    functionLinenumber: 98
    functionLinenumberEnd: 101
    functionName: apiServerDetail
    functionSourceFile: /src/pdns/pdns/ws-api.cc
    functionUses: 0
    functionsReached:
    - getServerDetail
    - HttpResponse*::setJsonBody
    linkageType: ''
    returnType: void
    signature: void apiServerDetail(HttpRequest* /* req */, HttpResponse* resp)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: boost::ends_with
      Src: /src/pdns/pdns/ws-api.cc:106,1
    - Dst: boost::ends_with
      Src: /src/pdns/pdns/ws-api.cc:110,1
    - Dst: boost::ends_with
      Src: /src/pdns/pdns/ws-api.cc:115,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - ' setting'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 103
    functionDepth: 0
    functionLinenumber: 103
    functionLinenumberEnd: 120
    functionName: shouldBeRedacted
    functionSourceFile: /src/pdns/pdns/ws-api.cc
    functionUses: 0
    functionsReached:
    - boost::ends_with
    linkageType: ''
    returnType: bool
    signature: bool shouldBeRedacted(const std::string& setting)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: arg
      Src: /src/pdns/pdns/ws-api.cc:124,1
    - Dst: shouldBeRedacted
      Src: /src/pdns/pdns/ws-api.cc:129,1
    - Dst: arg
      Src: /src/pdns/pdns/ws-api.cc:133,1
    - Dst: Json::array::push_back
      Src: /src/pdns/pdns/ws-api.cc:136,1
    - Dst: HttpResponse*::setJsonBody
      Src: /src/pdns/pdns/ws-api.cc:142,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - resp
    argTypes:
    - HttpResponse*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 143
      start: 122
    functionDepth: 0
    functionLinenumber: 122
    functionLinenumberEnd: 143
    functionName: apiServerConfig
    functionSourceFile: /src/pdns/pdns/ws-api.cc
    functionUses: 0
    functionsReached:
    - shouldBeRedacted
    - Json::array::push_back
    - arg
    - HttpResponse*::setJsonBody
    linkageType: ''
    returnType: void
    signature: void apiServerConfig(HttpRequest* /* req */, HttpResponse* resp)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: string::empty
      Src: /src/pdns/pdns/ws-api.cc:149,1
    - Dst: productServerStatisticsFetch
      Src: /src/pdns/pdns/ws-api.cc:150,1
    - Dst: ApiException
      Src: /src/pdns/pdns/ws-api.cc:152,1
    - Dst: Json::array::push_back
      Src: /src/pdns/pdns/ws-api.cc:155,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/ws-api.cc:158,1
    - Dst: HttpResponse*::setJsonBody
      Src: /src/pdns/pdns/ws-api.cc:161,1
    - Dst: productServerStatisticsFetch
      Src: /src/pdns/pdns/ws-api.cc:168,1
    - Dst: Json::array::push_back
      Src: /src/pdns/pdns/ws-api.cc:171,1
    - Dst: sum
      Src: /src/pdns/pdns/ws-api.cc:179,1
    - Dst: auto::getQTypeResponseCounts
      Src: /src/pdns/pdns/ws-api.cc:180,1
    - Dst: auto::getSizeResponseCounts
      Src: /src/pdns/pdns/ws-api.cc:181,1
    - Dst: auto::getRCodeResponseCounts
      Src: /src/pdns/pdns/ws-api.cc:182,1
    - Dst: getQTypeResponseCounts
      Src: /src/pdns/pdns/ws-api.cc:184,1
    - Dst: getSizeResponseCounts
      Src: /src/pdns/pdns/ws-api.cc:185,1
    - Dst: getRCodeResponseCounts
      Src: /src/pdns/pdns/ws-api.cc:186,1
    - Dst: Json::array::push_back
      Src: /src/pdns/pdns/ws-api.cc:194,1
    - Dst: DNSRecordContent::NumberToType
      Src: /src/pdns/pdns/ws-api.cc:195,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/ws-api.cc:196,1
    - Dst: Json::array::push_back
      Src: /src/pdns/pdns/ws-api.cc:200,1
    - Dst: Json::array::push_back
      Src: /src/pdns/pdns/ws-api.cc:214,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/ws-api.cc:215,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/ws-api.cc:216,1
    - Dst: Json::array::push_back
      Src: /src/pdns/pdns/ws-api.cc:220,1
    - Dst: Json::array::push_back
      Src: /src/pdns/pdns/ws-api.cc:234,1
    - Dst: RCode::to_s
      Src: /src/pdns/pdns/ws-api.cc:235,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/ws-api.cc:236,1
    - Dst: Json::array::push_back
      Src: /src/pdns/pdns/ws-api.cc:240,1
    - Dst: HttpRequest*::getvars::count
      Src: /src/pdns/pdns/ws-api.cc:248,1
    - Dst: listRings
      Src: /src/pdns/pdns/ws-api.cc:249,1
    - Dst: getRing
      Src: /src/pdns/pdns/ws-api.cc:251,1
    - Dst: Json::array::push_back
      Src: /src/pdns/pdns/ws-api.cc:257,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/ws-api.cc:259,1
    - Dst: Json::array::push_back
      Src: /src/pdns/pdns/ws-api.cc:263,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/ws-api.cc:266,1
    - Dst: getRingSize
      Src: /src/pdns/pdns/ws-api.cc:266,1
    - Dst: HttpResponse*::setJsonBody
      Src: /src/pdns/pdns/ws-api.cc:273,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 43
    argCount: 2
    argNames:
    - req
    - resp
    argTypes:
    - HttpRequest*
    - HttpResponse*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 274
      start: 145
    functionDepth: 0
    functionLinenumber: 145
    functionLinenumberEnd: 274
    functionName: apiServerStatistics
    functionSourceFile: /src/pdns/pdns/ws-api.cc
    functionUses: 0
    functionsReached:
    - std::to_string
    - ApiException
    - HttpResponse*::setJsonBody
    - Json::array::push_back
    - getQTypeResponseCounts
    - RCode::to_s
    - listRings
    - HttpRequest*::getvars::count
    - getRing
    - string::empty
    - getRCodeResponseCounts
    - DNSRecordContent::NumberToType
    - getRingSize
    - auto::getSizeResponseCounts
    - sum
    - productServerStatisticsFetch
    - getSizeResponseCounts
    - auto::getRCodeResponseCounts
    - auto::getQTypeResponseCounts
    linkageType: ''
    returnType: void
    signature: void apiServerStatistics(HttpRequest* req, HttpResponse* resp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: isCanonical
      Src: /src/pdns/pdns/ws-api.cc:278,1
    - Dst: ApiException
      Src: /src/pdns/pdns/ws-api.cc:279,1
    - Dst: DNSName
      Src: /src/pdns/pdns/ws-api.cc:282,1
    - Dst: ApiException
      Src: /src/pdns/pdns/ws-api.cc:285,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 1
    argNames:
    - ' name'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 287
      start: 276
    functionDepth: 0
    functionLinenumber: 276
    functionLinenumberEnd: 287
    functionName: apiNameToDNSName
    functionSourceFile: /src/pdns/pdns/ws-api.cc
    functionUses: 0
    functionsReached:
    - DNSName
    - isCanonical
    - ApiException
    linkageType: ''
    returnType: DNSName
    signature: DNSName apiNameToDNSName(const string& name)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ZoneName::findVariantSeparator
      Src: /src/pdns/pdns/ws-api.cc:294,1
    - Dst: isCanonical
      Src: /src/pdns/pdns/ws-api.cc:295,1
    - Dst: std::string_view
      Src: /src/pdns/pdns/ws-api.cc:295,1
    - Dst: ApiException
      Src: /src/pdns/pdns/ws-api.cc:296,1
    - Dst: ZoneName
      Src: /src/pdns/pdns/ws-api.cc:299,1
    - Dst: ApiException
      Src: /src/pdns/pdns/ws-api.cc:302,1
    - Dst: ZoneName
      Src: /src/pdns/pdns/ws-api.cc:305,1
    - Dst: apiNameToDNSName
      Src: /src/pdns/pdns/ws-api.cc:305,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 1
    argNames:
    - ' name'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 306
      start: 290
    functionDepth: 0
    functionLinenumber: 290
    functionLinenumberEnd: 306
    functionName: apiNameToZoneName
    functionSourceFile: /src/pdns/pdns/ws-api.cc
    functionUses: 0
    functionsReached:
    - isCanonical
    - apiNameToDNSName
    - std::string_view
    - ApiException
    - ZoneName
    - ZoneName::findVariantSeparator
    linkageType: ''
    returnType: ZoneName
    signature: ZoneName apiNameToZoneName(const string& name)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/ws-api.cc:314,1
    - Dst: HttpBadRequestException
      Src: /src/pdns/pdns/ws-api.cc:315,1
    - Dst: find
      Src: /src/pdns/pdns/ws-api.cc:320,1
    - Dst: substr
      Src: /src/pdns/pdns/ws-api.cc:321,1
    - Dst: static_cast<char>
      Src: /src/pdns/pdns/ws-api.cc:325,1
    - Dst: static_cast<char>
      Src: /src/pdns/pdns/ws-api.cc:328,1
    - Dst: HttpBadRequestException
      Src: /src/pdns/pdns/ws-api.cc:331,1
    - Dst: static_cast<char>
      Src: /src/pdns/pdns/ws-api.cc:333,1
    - Dst: static_cast<char>
      Src: /src/pdns/pdns/ws-api.cc:337,1
    - Dst: static_cast<char>
      Src: /src/pdns/pdns/ws-api.cc:340,1
    - Dst: HttpBadRequestException
      Src: /src/pdns/pdns/ws-api.cc:343,1
    - Dst: substr
      Src: /src/pdns/pdns/ws-api.cc:351,1
    - Dst: ostringstream::str
      Src: /src/pdns/pdns/ws-api.cc:354,1
    - Dst: ZoneName
      Src: /src/pdns/pdns/ws-api.cc:357,1
    - Dst: ApiException
      Src: /src/pdns/pdns/ws-api.cc:360,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 35
    argCount: 1
    argNames:
    - ' identifier'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 362
      start: 309
    functionDepth: 0
    functionLinenumber: 309
    functionLinenumberEnd: 362
    functionName: apiZoneIdToName
    functionSourceFile: /src/pdns/pdns/ws-api.cc
    functionUses: 0
    functionsReached:
    - ApiException
    - substr
    - ostringstream::str
    - empty
    - ZoneName
    - HttpBadRequestException
    - static_cast<char>
    - find
    linkageType: ''
    returnType: ZoneName
    signature: ZoneName apiZoneIdToName(const string& identifier)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: boost::format
      Src: /src/pdns/pdns/ws-api.cc:373,1
    - Dst: ostringstream::str
      Src: /src/pdns/pdns/ws-api.cc:377,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 8
    argCount: 1
    argNames:
    - ' name'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 378
      start: 364
    functionDepth: 0
    functionLinenumber: 364
    functionLinenumberEnd: 378
    functionName: encodeName
    functionSourceFile: /src/pdns/pdns/ws-api.cc
    functionUses: 0
    functionsReached:
    - ostringstream::str
    - boost::format
    linkageType: ''
    returnType: string
    signature: string encodeName(const string& name)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: apiNameToId
      Src: /src/pdns/pdns/ws-api.cc:383,1
    - Dst: toString
      Src: /src/pdns/pdns/ws-api.cc:383,1
    - Dst: hasVariant
      Src: /src/pdns/pdns/ws-api.cc:385,1
    - Dst: encodeName
      Src: /src/pdns/pdns/ws-api.cc:387,1
    - Dst: getVariant
      Src: /src/pdns/pdns/ws-api.cc:387,1
    - Dst: apiNameToId
      Src: /src/pdns/pdns/ws-api.cc:391,1
    - Dst: toString
      Src: /src/pdns/pdns/ws-api.cc:391,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - ' dname'
    argTypes:
    - ZoneName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 393
      start: 380
    functionDepth: 0
    functionLinenumber: 380
    functionLinenumberEnd: 393
    functionName: apiZoneNameToId
    functionSourceFile: /src/pdns/pdns/ws-api.cc
    functionUses: 0
    functionsReached:
    - toString
    - getVariant
    - encodeName
    - hasVariant
    - apiNameToId
    linkageType: ''
    returnType: string
    signature: string apiZoneNameToId(const ZoneName& dname)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: encodeName
      Src: /src/pdns/pdns/ws-api.cc:397,1
    - Dst: string::empty
      Src: /src/pdns/pdns/ws-api.cc:400,1
    - Dst: string::substr
      Src: /src/pdns/pdns/ws-api.cc:400,1
    - Dst: string::size
      Src: /src/pdns/pdns/ws-api.cc:400,1
    - Dst: boost::format
      Src: /src/pdns/pdns/ws-api.cc:407,1
    - Dst: str
      Src: /src/pdns/pdns/ws-api.cc:407,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - ' name'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 410
      start: 395
    functionDepth: 0
    functionLinenumber: 395
    functionLinenumberEnd: 410
    functionName: apiNameToId
    functionSourceFile: /src/pdns/pdns/ws-api.cc
    functionUses: 1
    functionsReached:
    - string::size
    - string::empty
    - encodeName
    - string::substr
    - str
    - boost::format
    linkageType: ''
    returnType: string
    signature: string apiNameToId(const string& name)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::string_view::find_first_not_of
      Src: /src/pdns/pdns/ws-api.cc:414,1
    - Dst: ApiException
      Src: /src/pdns/pdns/ws-api.cc:415,1
    - Dst: std::string
      Src: /src/pdns/pdns/ws-api.cc:415,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - name
    argTypes:
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 417
      start: 412
    functionDepth: 0
    functionLinenumber: 412
    functionLinenumberEnd: 417
    functionName: apiCheckNameAllowedCharacters
    functionSourceFile: /src/pdns/pdns/ws-api.cc
    functionUses: 0
    functionsReached:
    - std::string
    - std::string_view::find_first_not_of
    - ApiException
    linkageType: ''
    returnType: void
    signature: void apiCheckNameAllowedCharacters(std::string_view name)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::string_view::compare
      Src: /src/pdns/pdns/ws-api.cc:421,1
    - Dst: apiCheckNameAllowedCharacters
      Src: /src/pdns/pdns/ws-api.cc:422,1
    - Dst: std::string_view::substr
      Src: /src/pdns/pdns/ws-api.cc:422,1
    - Dst: apiCheckNameAllowedCharacters
      Src: /src/pdns/pdns/ws-api.cc:425,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - qname
    argTypes:
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 427
      start: 419
    functionDepth: 0
    functionLinenumber: 419
    functionLinenumberEnd: 427
    functionName: apiCheckQNameAllowedCharacters
    functionSourceFile: /src/pdns/pdns/ws-api.cc
    functionUses: 0
    functionsReached:
    - apiCheckNameAllowedCharacters
    - std::string_view::compare
    - std::string_view::substr
    linkageType: ''
    returnType: void
    signature: void apiCheckQNameAllowedCharacters(std::string_view qname)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: string
      Src: /src/pdns/pdns/statnode.cc:6,1
    - Dst: StatNode::size
      Src: /src/pdns/pdns/statnode.cc:18,1
    - Dst: string
      Src: /src/pdns/pdns/statnode.cc:19,1
    - Dst: second::print
      Src: /src/pdns/pdns/statnode.cc:22,1
    - Dst: StatNode::size
      Src: /src/pdns/pdns/statnode.cc:22,1
    - Dst: StatNode::size
      Src: /src/pdns/pdns/statnode.cc:24,1
    - Dst: string
      Src: /src/pdns/pdns/statnode.cc:25,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 21
    argCount: 3
    argNames:
    - depth
    - newstat
    - silent
    argTypes:
    - unsigned int
    - Stat
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 36
      start: 3
    functionDepth: 0
    functionLinenumber: 3
    functionLinenumberEnd: 36
    functionName: StatNode::print
    functionSourceFile: /src/pdns/pdns/statnode.cc
    functionUses: 0
    functionsReached:
    - string
    - StatNode::size
    - second::print
    linkageType: ''
    returnType: StatNode::Stat
    signature: StatNode::Stat StatNode::print(unsigned int depth, Stat newstat, bool
      silent) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: second::visit
      Src: /src/pdns/pdns/statnode.cc:43,1
    - Dst: visitor
      Src: /src/pdns/pdns/statnode.cc:46,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - ' visitor'
    - ' newstat'
    - depth
    argTypes:
    - visitor_t
    - Stat
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 38
    functionDepth: 1
    functionLinenumber: 38
    functionLinenumberEnd: 49
    functionName: StatNode::visit
    functionSourceFile: /src/pdns/pdns/statnode.cc
    functionUses: 0
    functionsReached:
    - second::visit
    - visitor
    linkageType: ''
    returnType: void
    signature: void StatNode::visit(const visitor_t& visitor, Stat& newstat, unsigned
      int depth) const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: getRawLabels
      Src: /src/pdns/pdns/statnode.cc:54,1
    - Dst: std::vector::empty
      Src: /src/pdns/pdns/statnode.cc:55,1
    - Dst: std::vector::end
      Src: /src/pdns/pdns/statnode.cc:59,1
    - Dst: StatNode::submit
      Src: /src/pdns/pdns/statnode.cc:60,1
    - Dst: std::vector::begin
      Src: /src/pdns/pdns/statnode.cc:60,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 6
    argNames:
    - ' domain'
    - rcode
    - bytes
    - hit
    - ' remote'
    - samplingRate
    argTypes:
    - DNSName
    - int
    - unsigned int
    - bool
    - std::optional<ComboAddress>
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 51
    functionDepth: 0
    functionLinenumber: 51
    functionLinenumberEnd: 61
    functionName: StatNode::submit
    functionSourceFile: /src/pdns/pdns/statnode.cc
    functionUses: 1
    functionsReached:
    - std::vector::end
    - getRawLabels
    - StatNode::submit
    - std::vector::begin
    - std::vector::empty
    linkageType: ''
    returnType: void
    signature: void StatNode::submit(const DNSName& domain, int rcode, unsigned int
      bytes, bool hit, const std::optional<ComboAddress>& remote, size_t samplingRate)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - count
    - samplingRate
    argTypes:
    - uint32_t
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 63
    functionDepth: 0
    functionLinenumber: 63
    functionLinenumberEnd: 69
    functionName: adjustForSampling
    functionSourceFile: /src/pdns/pdns/statnode.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t adjustForSampling(uint32_t count, size_t samplingRate)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: StatNode::empty
      Src: /src/pdns/pdns/statnode.cc:85,1
    - Dst: StatNode::empty
      Src: /src/pdns/pdns/statnode.cc:95,1
    - Dst: prependRawLabel
      Src: /src/pdns/pdns/statnode.cc:97,1
    - Dst: adjustForSampling
      Src: /src/pdns/pdns/statnode.cc:101,1
    - Dst: adjustForSampling
      Src: /src/pdns/pdns/statnode.cc:102,1
    - Dst: adjustForSampling
      Src: /src/pdns/pdns/statnode.cc:104,1
    - Dst: adjustForSampling
      Src: /src/pdns/pdns/statnode.cc:107,1
    - Dst: adjustForSampling
      Src: /src/pdns/pdns/statnode.cc:110,1
    - Dst: adjustForSampling
      Src: /src/pdns/pdns/statnode.cc:113,1
    - Dst: adjustForSampling
      Src: /src/pdns/pdns/statnode.cc:121,1
    - Dst: StatNode::empty
      Src: /src/pdns/pdns/statnode.cc:125,1
    - Dst: prependRawLabel
      Src: /src/pdns/pdns/statnode.cc:127,1
    - Dst: StatNode::submit
      Src: /src/pdns/pdns/statnode.cc:132,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 40
    argCount: 9
    argNames:
    - end
    - begin
    - ' domain'
    - rcode
    - bytes
    - ' remote'
    - count
    - hit
    - samplingRate
    argTypes:
    - std::vector<string>::const_iterator
    - std::vector<string>::const_iterator
    - DNSName
    - int
    - unsigned int
    - std::optional<ComboAddress>
    - unsigned int
    - bool
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 134
      start: 79
    functionDepth: 0
    functionLinenumber: 79
    functionLinenumberEnd: 134
    functionName: StatNode::submit
    functionSourceFile: /src/pdns/pdns/statnode.cc
    functionUses: 2
    functionsReached:
    - adjustForSampling
    - StatNode::empty
    - StatNode::submit
    - prependRawLabel
    linkageType: ''
    returnType: void
    signature: void StatNode::submit(std::vector<string>::const_iterator end, std::vector<string>::const_iterator
      begin, const DNSName& domain, int rcode, unsigned int bytes, const std::optional<ComboAddress>&
      remote, unsigned int count, bool hit, size_t samplingRate)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 39
    functionDepth: 0
    functionLinenumber: 39
    functionLinenumberEnd: 43
    functionName: usage
    functionSourceFile: /src/pdns/pdns/dnspcap2calidns.cc
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void usage()
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: usage
      Src: /src/pdns/pdns/dnspcap2calidns.cc:50,1
    - Dst: usage
      Src: /src/pdns/pdns/dnspcap2calidns.cc:61,1
    - Dst: exit
      Src: /src/pdns/pdns/dnspcap2calidns.cc:62,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnspcap2calidns.cc:70,1
    - Dst: exit
      Src: /src/pdns/pdns/dnspcap2calidns.cc:71,1
    - Dst: PcapPacketReader::getUDPPacket
      Src: /src/pdns/pdns/dnspcap2calidns.cc:75,1
    - Dst: reinterpret_cast<const dnsheader*>
      Src: /src/pdns/pdns/dnspcap2calidns.cc:80,1
    - Dst: DNSName::DNSName
      Src: /src/pdns/pdns/dnspcap2calidns.cc:94,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnspcap2calidns.cc:96,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnspcap2calidns.cc:96,1
    - Dst: what
      Src: /src/pdns/pdns/dnspcap2calidns.cc:99,1
    - Dst: PcapPacketReader::getSource
      Src: /src/pdns/pdns/dnspcap2calidns.cc:103,1
    - Dst: QType
      Src: /src/pdns/pdns/dnspcap2calidns.cc:105,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/dnspcap2calidns.cc:105,1
    - Dst: what
      Src: /src/pdns/pdns/dnspcap2calidns.cc:109,1
    - Dst: ofstream::close
      Src: /src/pdns/pdns/dnspcap2calidns.cc:110,1
    - Dst: exit
      Src: /src/pdns/pdns/dnspcap2calidns.cc:111,1
    - Dst: ofstream::flush
      Src: /src/pdns/pdns/dnspcap2calidns.cc:114,1
    - Dst: ofstream::close
      Src: /src/pdns/pdns/dnspcap2calidns.cc:115,1
    - Dst: what
      Src: /src/pdns/pdns/dnspcap2calidns.cc:118,1
    - Dst: exit
      Src: /src/pdns/pdns/dnspcap2calidns.cc:119,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 54
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 45
    functionDepth: 1
    functionLinenumber: 45
    functionLinenumberEnd: 123
    functionName: main
    functionSourceFile: /src/pdns/pdns/dnspcap2calidns.cc
    functionUses: 0
    functionsReached:
    - PcapPacketReader::getUDPPacket
    - stringerror
    - what
    - QType
    - DNSName
    - reinterpret_cast<const dnsheader*>
    - PcapPacketReader::getSource
    - ofstream::close
    - reinterpret_cast<const char*>
    - usage
    - ComboAddress::toString
    - DNSName::DNSName
    - exit
    - ofstream::flush
    linkageType: ''
    returnType: int
    signature: int main(int argc, char **argv)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 39
      start: 39
    functionDepth: 0
    functionLinenumber: 39
    functionLinenumberEnd: 39
    functionName: PKCS11DNSCryptoKeyEngine::getName
    functionSourceFile: /src/pdns/pdns/pkcs11signers.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: string
    signature: string getName() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 56
    functionDepth: 0
    functionLinenumber: 56
    functionLinenumberEnd: 56
    functionName: PKCS11DNSCryptoKeyEngine::fromPublicKeyString
    functionSourceFile: /src/pdns/pdns/pkcs11signers.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void fromPublicKeyString(const std::string& /* content */) override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 85
    functionDepth: 0
    functionLinenumber: 85
    functionLinenumberEnd: 87
    functionName: UDPNameserver::canReusePort
    functionSourceFile: /src/pdns/pdns/nameserver.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool canReusePort()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ArgvMap::ArgvMap
      Src: /src/pdns/pdns/testrunner.cc:26,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 28
      start: 24
    functionDepth: 0
    functionLinenumber: 24
    functionLinenumberEnd: 28
    functionName: arg
    functionSourceFile: /src/pdns/pdns/testrunner.cc
    functionUses: 8
    functionsReached:
    - ArgvMap::ArgvMap
    linkageType: ''
    returnType: ArgvMap
    signature: ArgvMap & arg()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: reportAllTypes
      Src: /src/pdns/pdns/testrunner.cc:32,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 34
      start: 30
    functionDepth: 0
    functionLinenumber: 30
    functionLinenumberEnd: 34
    functionName: init_unit_test
    functionSourceFile: /src/pdns/pdns/testrunner.cc
    functionUses: 0
    functionsReached:
    - reportAllTypes
    linkageType: ''
    returnType: bool
    signature: bool init_unit_test()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: setenv
      Src: /src/pdns/pdns/testrunner.cc:39,1
    - Dst: boost::unit_test::unit_test_main
      Src: /src/pdns/pdns/testrunner.cc:41,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 37
    functionDepth: 0
    functionLinenumber: 37
    functionLinenumberEnd: 42
    functionName: main
    functionSourceFile: /src/pdns/pdns/testrunner.cc
    functionUses: 1
    functionsReached:
    - boost::unit_test::unit_test_main
    - setenv
    linkageType: ''
    returnType: int
    signature: int main(int argc, char* argv[])
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Logger::open
      Src: /src/pdns/pdns/logger.hh:65,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - f
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 62
    functionDepth: 0
    functionLinenumber: 62
    functionLinenumberEnd: 66
    functionName: Logger::setFacility
    functionSourceFile: /src/pdns/pdns/logger.hh
    functionUses: 0
    functionsReached:
    - Logger::open
    linkageType: ''
    returnType: void
    signature: void setFacility(int f)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Logger::open
      Src: /src/pdns/pdns/logger.hh:70,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - f
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 67
    functionDepth: 0
    functionLinenumber: 67
    functionLinenumberEnd: 71
    functionName: Logger::setFlag
    functionSourceFile: /src/pdns/pdns/logger.hh
    functionUses: 0
    functionsReached:
    - Logger::open
    linkageType: ''
    returnType: void
    signature: void setFlag(int f)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - d
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 78
    functionDepth: 0
    functionLinenumber: 78
    functionLinenumberEnd: 81
    functionName: Logger::disableSyslog
    functionSourceFile: /src/pdns/pdns/logger.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void disableSyslog(bool d)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - t
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 83
    functionDepth: 0
    functionLinenumber: 83
    functionLinenumberEnd: 86
    functionName: Logger::setTimestamps
    functionSourceFile: /src/pdns/pdns/logger.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setTimestamps(bool t)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - p
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 88
    functionDepth: 0
    functionLinenumber: 88
    functionLinenumberEnd: 91
    functionName: Logger::setPrefixed
    functionSourceFile: /src/pdns/pdns/logger.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setPrefixed(bool p)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Logger::open
      Src: /src/pdns/pdns/logger.hh:99,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 96
    functionDepth: 0
    functionLinenumber: 96
    functionLinenumberEnd: 100
    functionName: Logger::resetFlags
    functionSourceFile: /src/pdns/pdns/logger.hh
    functionUses: 0
    functionsReached:
    - Logger::open
    linkageType: ''
    returnType: void
    signature: void resetFlags()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: toString
      Src: /src/pdns/pdns/logger.hh:120,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ' qtype'
    argTypes:
    - QType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 122
      start: 118
    functionDepth: 0
    functionLinenumber: 118
    functionLinenumberEnd: 122
    functionName: '& operator<<(const QType& qtype)'
    functionSourceFile: /src/pdns/pdns/logger.hh
    functionUses: 0
    functionsReached:
    - toString
    linkageType: ''
    returnType: Logger
    signature: Logger & operator<<(const QType& qtype)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: toString
      Src: /src/pdns/pdns/logger.hh:126,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ' qclass'
    argTypes:
    - QClass
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 124
    functionDepth: 0
    functionLinenumber: 124
    functionLinenumberEnd: 128
    functionName: '& operator<<(const QClass& qclass)'
    functionSourceFile: /src/pdns/pdns/logger.hh
    functionUses: 0
    functionsReached:
    - toString
    linkageType: ''
    returnType: Logger
    signature: Logger & operator<<(const QClass& qclass)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ostringstream::str
      Src: /src/pdns/pdns/logger.hh:136,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - ' i'
    argTypes:
    - T
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 138
      start: 132
    functionDepth: 0
    functionLinenumber: 132
    functionLinenumberEnd: 138
    functionName: '& operator<<(const T& i)'
    functionSourceFile: /src/pdns/pdns/logger.hh
    functionUses: 0
    functionsReached:
    - ostringstream::str
    linkageType: ''
    returnType: Logger
    signature: Logger & operator<<(const T& i)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 169
      start: 168
    functionDepth: 0
    functionLinenumber: 168
    functionLinenumberEnd: 169
    functionName: DLOG
    functionSourceFile: /src/pdns/pdns/logger.hh
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DLOG(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 171
      start: 170
    functionDepth: 0
    functionLinenumber: 170
    functionLinenumberEnd: 171
    functionName: DLOG
    functionSourceFile: /src/pdns/pdns/logger.hh
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DLOG(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - log
    - ','
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 193
      start: 190
    functionDepth: 0
    functionLinenumber: 190
    functionLinenumberEnd: 193
    functionName: VLOG
    functionSourceFile: /src/pdns/pdns/logger.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: VLOG(log, x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - log
    - ','
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 207
      start: 204
    functionDepth: 0
    functionLinenumber: 204
    functionLinenumberEnd: 207
    functionName: VLOG_NO_PREFIX
    functionSourceFile: /src/pdns/pdns/logger.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: VLOG_NO_PREFIX(log, x)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: backtrace
      Src: /src/pdns/pdns/malloctrace.cc:37,1
    - Dst: vector<void*>
      Src: /src/pdns/pdns/malloctrace.cc:38,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 39
      start: 34
    functionDepth: 0
    functionLinenumber: 34
    functionLinenumberEnd: 39
    functionName: MallocTracer::makeBacktrace
    functionSourceFile: /src/pdns/pdns/malloctrace.cc
    functionUses: 0
    functionsReached:
    - backtrace
    - vector<void*>
    linkageType: ''
    returnType: vector<void*>
    signature: vector<void*> MallocTracer::makeBacktrace()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: __libc_malloc
      Src: /src/pdns/pdns/malloctrace.cc:49,1
    - Dst: MallocTracer::MallocTracer
      Src: /src/pdns/pdns/malloctrace.cc:50,1
    - Dst: malloc
      Src: /src/pdns/pdns/malloctrace.cc:52,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - size
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 46
    functionDepth: 0
    functionLinenumber: 46
    functionLinenumberEnd: 53
    functionName: malloc
    functionSourceFile: /src/pdns/pdns/malloctrace.cc
    functionUses: 1
    functionsReached:
    - MallocTracer::MallocTracer
    - malloc
    - __libc_malloc
    linkageType: ''
    returnType: void
    signature: void * malloc (size_t size)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/pdns/pdns/malloctrace.cc:58,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - ptr
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 55
    functionDepth: 0
    functionLinenumber: 55
    functionLinenumberEnd: 59
    functionName: free
    functionSourceFile: /src/pdns/pdns/malloctrace.cc
    functionUses: 1
    functionsReached:
    - free
    linkageType: ''
    returnType: void
    signature: void free(void* ptr)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: __libc_malloc
      Src: /src/pdns/pdns/malloctrace.cc:67,1
    - Dst: std::scoped_lock
      Src: /src/pdns/pdns/malloctrace.cc:76,1
    - Dst: MallocTracer::makeBacktrace
      Src: /src/pdns/pdns/malloctrace.cc:77,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - size
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 65
    functionDepth: 0
    functionLinenumber: 65
    functionLinenumberEnd: 85
    functionName: MallocTracer::malloc
    functionSourceFile: /src/pdns/pdns/malloctrace.cc
    functionUses: 0
    functionsReached:
    - std::scoped_lock
    - MallocTracer::makeBacktrace
    - __libc_malloc
    linkageType: ''
    returnType: void
    signature: void * MallocTracer::malloc(size_t size)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: __libc_free
      Src: /src/pdns/pdns/malloctrace.cc:89,1
    - Dst: std::scoped_lock
      Src: /src/pdns/pdns/malloctrace.cc:92,1
    - Dst: find
      Src: /src/pdns/pdns/malloctrace.cc:93,1
    - Dst: end
      Src: /src/pdns/pdns/malloctrace.cc:94,1
    - Dst: erase
      Src: /src/pdns/pdns/malloctrace.cc:96,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - ptr
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 87
    functionDepth: 0
    functionLinenumber: 87
    functionLinenumberEnd: 100
    functionName: MallocTracer::free
    functionSourceFile: /src/pdns/pdns/malloctrace.cc
    functionUses: 0
    functionsReached:
    - end
    - std::scoped_lock
    - erase
    - __libc_free
    - find
    linkageType: ''
    returnType: void
    signature: void MallocTracer::free(void* ptr)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: allocators_t::emplace_back
      Src: /src/pdns/pdns/malloctrace.cc:107,1
    - Dst: std::sort
      Src: /src/pdns/pdns/malloctrace.cc:109,1
    - Dst: allocators_t::begin
      Src: /src/pdns/pdns/malloctrace.cc:109,1
    - Dst: allocators_t::end
      Src: /src/pdns/pdns/malloctrace.cc:109,1
    - Dst: allocators_t::size
      Src: /src/pdns/pdns/malloctrace.cc:114,1
    - Dst: allocators_t::clear
      Src: /src/pdns/pdns/malloctrace.cc:115,1
    - Dst: allocators_t::erase
      Src: /src/pdns/pdns/malloctrace.cc:117,1
    - Dst: allocators_t::begin
      Src: /src/pdns/pdns/malloctrace.cc:117,1
    - Dst: allocators_t::begin
      Src: /src/pdns/pdns/malloctrace.cc:117,1
    - Dst: allocators_t::size
      Src: /src/pdns/pdns/malloctrace.cc:117,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 1
    argNames:
    - num
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 102
    functionDepth: 1
    functionLinenumber: 102
    functionLinenumberEnd: 120
    functionName: MallocTracer::topAllocators
    functionSourceFile: /src/pdns/pdns/malloctrace.cc
    functionUses: 0
    functionsReached:
    - allocators_t::erase
    - allocators_t::size
    - allocators_t::end
    - std::sort
    - allocators_t::clear
    - allocators_t::begin
    - allocators_t::emplace_back
    linkageType: ''
    returnType: MallocTracer::allocators_t
    signature: MallocTracer::allocators_t MallocTracer::topAllocators(int num)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MallocTracer::topAllocators
      Src: /src/pdns/pdns/malloctrace.cc:125,1
    - Dst: backtrace_symbols
      Src: /src/pdns/pdns/malloctrace.cc:133,1
    - Dst: second::size
      Src: /src/pdns/pdns/malloctrace.cc:133,1
    - Dst: second::size
      Src: /src/pdns/pdns/malloctrace.cc:134,1
    - Dst: std::ostringstream::str
      Src: /src/pdns/pdns/malloctrace.cc:139,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - num
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 142
      start: 122
    functionDepth: 0
    functionLinenumber: 122
    functionLinenumberEnd: 142
    functionName: MallocTracer::topAllocatorsString
    functionSourceFile: /src/pdns/pdns/malloctrace.cc
    functionUses: 0
    functionsReached:
    - backtrace_symbols
    - std::ostringstream::str
    - MallocTracer::topAllocators
    - second::size
    linkageType: ''
    returnType: std::string
    signature: std::string MallocTracer::topAllocatorsString(int num)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::scoped_lock
      Src: /src/pdns/pdns/malloctrace.cc:147,1
    - Dst: clear
      Src: /src/pdns/pdns/malloctrace.cc:148,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 150
      start: 144
    functionDepth: 1
    functionLinenumber: 144
    functionLinenumberEnd: 150
    functionName: MallocTracer::clearAllocators
    functionSourceFile: /src/pdns/pdns/malloctrace.cc
    functionUses: 0
    functionsReached:
    - std::scoped_lock
    - clear
    linkageType: ''
    returnType: void
    signature: void MallocTracer::clearAllocators()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - s
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 19
      start: 18
    functionDepth: 0
    functionLinenumber: 18
    functionLinenumberEnd: 19
    functionName: BINARY
    functionSourceFile: /src/pdns/pdns/test-proxy_protocol_cc.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BINARY(s)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeProxyHeader
      Src: /src/pdns/pdns/test-proxy_protocol_cc.cc:32,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-proxy_protocol_cc.cc:34,1
    - Dst: BINARY
      Src: /src/pdns/pdns/test-proxy_protocol_cc.cc:34,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-proxy_protocol_cc.cc:49,1
    - Dst: parseProxyHeader
      Src: /src/pdns/pdns/test-proxy_protocol_cc.cc:49,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-proxy_protocol_cc.cc:51,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-proxy_protocol_cc.cc:52,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-proxy_protocol_cc.cc:53,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-proxy_protocol_cc.cc:54,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 25
    functionDepth: 0
    functionLinenumber: 25
    functionLinenumberEnd: 55
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-proxy_protocol_cc.cc
    functionUses: 0
    functionsReached:
    - BOOST_CHECK_EQUAL
    - parseProxyHeader
    - BINARY
    - BOOST_CHECK
    - makeProxyHeader
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_roundtrip)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeLocalProxyHeader
      Src: /src/pdns/pdns/test-proxy_protocol_cc.cc:58,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-proxy_protocol_cc.cc:60,1
    - Dst: BINARY
      Src: /src/pdns/pdns/test-proxy_protocol_cc.cc:60,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-proxy_protocol_cc.cc:72,1
    - Dst: parseProxyHeader
      Src: /src/pdns/pdns/test-proxy_protocol_cc.cc:72,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-proxy_protocol_cc.cc:74,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-proxy_protocol_cc.cc:75,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-proxy_protocol_cc.cc:76,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/test-proxy_protocol_cc.cc:76,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 57
    functionDepth: 0
    functionLinenumber: 57
    functionLinenumberEnd: 77
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-proxy_protocol_cc.cc
    functionUses: 0
    functionsReached:
    - std::vector::size
    - BOOST_CHECK_EQUAL
    - makeLocalProxyHeader
    - parseProxyHeader
    - BINARY
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_local_proxy_header)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::string::resize
      Src: /src/pdns/pdns/test-proxy_protocol_cc.cc:82,1
    - Dst: makeProxyHeader
      Src: /src/pdns/pdns/test-proxy_protocol_cc.cc:88,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-proxy_protocol_cc.cc:96,1
    - Dst: parseProxyHeader
      Src: /src/pdns/pdns/test-proxy_protocol_cc.cc:96,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-proxy_protocol_cc.cc:97,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-proxy_protocol_cc.cc:98,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-proxy_protocol_cc.cc:99,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-proxy_protocol_cc.cc:100,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/test-proxy_protocol_cc.cc:101,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/test-proxy_protocol_cc.cc:101,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/test-proxy_protocol_cc.cc:101,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/test-proxy_protocol_cc.cc:102,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-proxy_protocol_cc.cc:103,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/test-proxy_protocol_cc.cc:103,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/test-proxy_protocol_cc.cc:103,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-proxy_protocol_cc.cc:104,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/test-proxy_protocol_cc.cc:104,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/test-proxy_protocol_cc.cc:104,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 79
    functionDepth: 1
    functionLinenumber: 79
    functionLinenumberEnd: 106
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-proxy_protocol_cc.cc
    functionUses: 0
    functionsReached:
    - std::vector::size
    - BOOST_CHECK_EQUAL
    - std::string::resize
    - std::vector::at
    - parseProxyHeader
    - BOOST_CHECK
    - makeProxyHeader
    - BOOST_REQUIRE_EQUAL
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_tlv_values_content_len_signedness)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::string::resize
      Src: /src/pdns/pdns/test-proxy_protocol_cc.cc:114,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-proxy_protocol_cc.cc:117,1
    - Dst: makeProxyHeader
      Src: /src/pdns/pdns/test-proxy_protocol_cc.cc:117,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 118
      start: 108
    functionDepth: 1
    functionLinenumber: 108
    functionLinenumberEnd: 118
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-proxy_protocol_cc.cc
    functionUses: 0
    functionsReached:
    - std::string::resize
    - BOOST_CHECK_THROW
    - makeProxyHeader
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_payload_too_large)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::string::resize
      Src: /src/pdns/pdns/test-proxy_protocol_cc.cc:123,1
    - Dst: makeProxyHeader
      Src: /src/pdns/pdns/test-proxy_protocol_cc.cc:129,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-proxy_protocol_cc.cc:137,1
    - Dst: parseProxyHeader
      Src: /src/pdns/pdns/test-proxy_protocol_cc.cc:137,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-proxy_protocol_cc.cc:138,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-proxy_protocol_cc.cc:139,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-proxy_protocol_cc.cc:140,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-proxy_protocol_cc.cc:141,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/test-proxy_protocol_cc.cc:142,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/test-proxy_protocol_cc.cc:142,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/test-proxy_protocol_cc.cc:142,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/test-proxy_protocol_cc.cc:143,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-proxy_protocol_cc.cc:144,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/test-proxy_protocol_cc.cc:144,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/test-proxy_protocol_cc.cc:144,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-proxy_protocol_cc.cc:145,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/test-proxy_protocol_cc.cc:145,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/test-proxy_protocol_cc.cc:145,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 120
    functionDepth: 1
    functionLinenumber: 120
    functionLinenumberEnd: 147
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-proxy_protocol_cc.cc
    functionUses: 0
    functionsReached:
    - std::vector::size
    - BOOST_CHECK_EQUAL
    - std::string::resize
    - std::vector::at
    - parseProxyHeader
    - BOOST_CHECK
    - makeProxyHeader
    - BOOST_REQUIRE_EQUAL
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_tlv_values_length_signedness)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeProxyHeader
      Src: /src/pdns/pdns/test-proxy_protocol_cc.cc:155,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-proxy_protocol_cc.cc:165,1
    - Dst: parseProxyHeader
      Src: /src/pdns/pdns/test-proxy_protocol_cc.cc:165,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-proxy_protocol_cc.cc:166,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-proxy_protocol_cc.cc:167,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-proxy_protocol_cc.cc:168,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-proxy_protocol_cc.cc:169,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-proxy_protocol_cc.cc:170,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/test-proxy_protocol_cc.cc:170,1
    - Dst: std::string::resize
      Src: /src/pdns/pdns/test-proxy_protocol_cc.cc:176,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-proxy_protocol_cc.cc:177,1
    - Dst: parseProxyHeader
      Src: /src/pdns/pdns/test-proxy_protocol_cc.cc:177,1
    - Dst: std::string::resize
      Src: /src/pdns/pdns/test-proxy_protocol_cc.cc:183,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-proxy_protocol_cc.cc:184,1
    - Dst: parseProxyHeader
      Src: /src/pdns/pdns/test-proxy_protocol_cc.cc:184,1
    - Dst: makeProxyHeader
      Src: /src/pdns/pdns/test-proxy_protocol_cc.cc:190,1
    - Dst: std::string::resize
      Src: /src/pdns/pdns/test-proxy_protocol_cc.cc:193,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-proxy_protocol_cc.cc:194,1
    - Dst: parseProxyHeader
      Src: /src/pdns/pdns/test-proxy_protocol_cc.cc:194,1
    - Dst: std::string::at
      Src: /src/pdns/pdns/test-proxy_protocol_cc.cc:200,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-proxy_protocol_cc.cc:201,1
    - Dst: parseProxyHeader
      Src: /src/pdns/pdns/test-proxy_protocol_cc.cc:201,1
    - Dst: std::string::at
      Src: /src/pdns/pdns/test-proxy_protocol_cc.cc:207,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-proxy_protocol_cc.cc:208,1
    - Dst: parseProxyHeader
      Src: /src/pdns/pdns/test-proxy_protocol_cc.cc:208,1
    - Dst: std::string::at
      Src: /src/pdns/pdns/test-proxy_protocol_cc.cc:214,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-proxy_protocol_cc.cc:215,1
    - Dst: parseProxyHeader
      Src: /src/pdns/pdns/test-proxy_protocol_cc.cc:215,1
    - Dst: std::string::at
      Src: /src/pdns/pdns/test-proxy_protocol_cc.cc:221,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-proxy_protocol_cc.cc:222,1
    - Dst: parseProxyHeader
      Src: /src/pdns/pdns/test-proxy_protocol_cc.cc:222,1
    - Dst: std::string::at
      Src: /src/pdns/pdns/test-proxy_protocol_cc.cc:228,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-proxy_protocol_cc.cc:229,1
    - Dst: parseProxyHeader
      Src: /src/pdns/pdns/test-proxy_protocol_cc.cc:229,1
    - Dst: makeProxyHeader
      Src: /src/pdns/pdns/test-proxy_protocol_cc.cc:235,1
    - Dst: std::string::at
      Src: /src/pdns/pdns/test-proxy_protocol_cc.cc:238,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-proxy_protocol_cc.cc:239,1
    - Dst: parseProxyHeader
      Src: /src/pdns/pdns/test-proxy_protocol_cc.cc:239,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 37
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 241
      start: 149
    functionDepth: 1
    functionLinenumber: 149
    functionLinenumberEnd: 241
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-proxy_protocol_cc.cc
    functionUses: 0
    functionsReached:
    - std::string::at
    - std::vector::size
    - BOOST_CHECK_EQUAL
    - std::string::resize
    - parseProxyHeader
    - BOOST_CHECK
    - makeProxyHeader
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_parsing_invalid_headers)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 84
    functionDepth: 0
    functionLinenumber: 84
    functionLinenumberEnd: 84
    functionName: ReadWriteLock::ReadWriteLock
    functionSourceFile: /src/pdns/pdns/lock.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ReadWriteLock()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 85
    functionDepth: 0
    functionLinenumber: 85
    functionLinenumberEnd: 85
    functionName: ~ReadWriteLock()
    functionSourceFile: /src/pdns/pdns/lock.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~ReadWriteLock()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - ReadWriteLock
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 87
    functionDepth: 0
    functionLinenumber: 87
    functionLinenumberEnd: 87
    functionName: ReadWriteLock::ReadWriteLock
    functionSourceFile: /src/pdns/pdns/lock.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ReadWriteLock(const ReadWriteLock& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - ReadWriteLock
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 88
    functionDepth: 0
    functionLinenumber: 88
    functionLinenumberEnd: 88
    functionName: ReadWriteLock::ReadWriteLock
    functionSourceFile: /src/pdns/pdns/lock.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ReadWriteLock(ReadWriteLock&& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 89
    functionDepth: 0
    functionLinenumber: 89
    functionLinenumberEnd: 89
    functionName: '& operator=(ReadWriteLock&&)'
    functionSourceFile: /src/pdns/pdns/lock.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: ReadWriteLock
    signature: ReadWriteLock & operator=(ReadWriteLock&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - ReadWriteLock
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 90
    functionDepth: 0
    functionLinenumber: 90
    functionLinenumberEnd: 90
    functionName: '& operator=(const ReadWriteLock& rhs)'
    functionSourceFile: /src/pdns/pdns/lock.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: ReadWriteLock
    signature: ReadWriteLock & operator=(const ReadWriteLock& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 92
    functionDepth: 0
    functionLinenumber: 92
    functionLinenumberEnd: 95
    functionName: '& getLock()'
    functionSourceFile: /src/pdns/pdns/lock.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::shared_mutex
    signature: std::shared_mutex & getLock()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getLock
      Src: /src/pdns/pdns/lock.hh:105,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' lock'
    argTypes:
    - ReadWriteLock
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 107
      start: 104
    functionDepth: 0
    functionLinenumber: 104
    functionLinenumberEnd: 107
    functionName: ReadLock::ReadLock
    functionSourceFile: /src/pdns/pdns/lock.hh
    functionUses: 0
    functionsReached:
    - getLock
    linkageType: ''
    returnType: void
    signature: void ReadLock(ReadWriteLock& lock)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ReadWriteLock*::getLock
      Src: /src/pdns/pdns/lock.hh:110,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - lock
    argTypes:
    - ReadWriteLock*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 112
      start: 109
    functionDepth: 0
    functionLinenumber: 109
    functionLinenumberEnd: 112
    functionName: ReadLock::ReadLock
    functionSourceFile: /src/pdns/pdns/lock.hh
    functionUses: 0
    functionsReached:
    - ReadWriteLock*::getLock
    linkageType: ''
    returnType: void
    signature: void ReadLock(ReadWriteLock* lock)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 114
    functionDepth: 0
    functionLinenumber: 114
    functionLinenumberEnd: 114
    functionName: ~ReadLock()
    functionSourceFile: /src/pdns/pdns/lock.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~ReadLock()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - ReadLock
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 115
      start: 115
    functionDepth: 0
    functionLinenumber: 115
    functionLinenumberEnd: 115
    functionName: ReadLock::ReadLock
    functionSourceFile: /src/pdns/pdns/lock.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ReadLock(const ReadLock& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - ReadLock
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 116
    functionDepth: 0
    functionLinenumber: 116
    functionLinenumberEnd: 116
    functionName: '& operator=(const ReadLock& rhs)'
    functionSourceFile: /src/pdns/pdns/lock.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: ReadLock
    signature: ReadLock & operator=(const ReadLock& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 117
    functionDepth: 0
    functionLinenumber: 117
    functionLinenumberEnd: 117
    functionName: '& operator=(ReadLock&&)'
    functionSourceFile: /src/pdns/pdns/lock.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: ReadLock
    signature: ReadLock & operator=(ReadLock&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/lock.hh:120,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - ReadLock
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 122
      start: 119
    functionDepth: 0
    functionLinenumber: 119
    functionLinenumberEnd: 122
    functionName: ReadLock::ReadLock
    functionSourceFile: /src/pdns/pdns/lock.hh
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void ReadLock(ReadLock&& rhs) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' lock'
    argTypes:
    - std::shared_mutex
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 125
    functionDepth: 0
    functionLinenumber: 125
    functionLinenumberEnd: 128
    functionName: ReadLock::ReadLock
    functionSourceFile: /src/pdns/pdns/lock.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ReadLock(std::shared_mutex& lock)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getLock
      Src: /src/pdns/pdns/lock.hh:137,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' lock'
    argTypes:
    - ReadWriteLock
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 139
      start: 136
    functionDepth: 0
    functionLinenumber: 136
    functionLinenumberEnd: 139
    functionName: WriteLock::WriteLock
    functionSourceFile: /src/pdns/pdns/lock.hh
    functionUses: 0
    functionsReached:
    - getLock
    linkageType: ''
    returnType: void
    signature: void WriteLock(ReadWriteLock& lock)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ReadWriteLock*::getLock
      Src: /src/pdns/pdns/lock.hh:142,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - lock
    argTypes:
    - ReadWriteLock*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 144
      start: 141
    functionDepth: 0
    functionLinenumber: 141
    functionLinenumberEnd: 144
    functionName: WriteLock::WriteLock
    functionSourceFile: /src/pdns/pdns/lock.hh
    functionUses: 0
    functionsReached:
    - ReadWriteLock*::getLock
    linkageType: ''
    returnType: void
    signature: void WriteLock(ReadWriteLock* lock)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 146
      start: 146
    functionDepth: 0
    functionLinenumber: 146
    functionLinenumberEnd: 146
    functionName: ~WriteLock()
    functionSourceFile: /src/pdns/pdns/lock.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~WriteLock()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - WriteLock
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 147
    functionDepth: 0
    functionLinenumber: 147
    functionLinenumberEnd: 147
    functionName: WriteLock::WriteLock
    functionSourceFile: /src/pdns/pdns/lock.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void WriteLock(const WriteLock& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - WriteLock
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 148
      start: 148
    functionDepth: 0
    functionLinenumber: 148
    functionLinenumberEnd: 148
    functionName: '& operator=(const WriteLock& rhs)'
    functionSourceFile: /src/pdns/pdns/lock.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: WriteLock
    signature: WriteLock & operator=(const WriteLock& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 149
      start: 149
    functionDepth: 0
    functionLinenumber: 149
    functionLinenumberEnd: 149
    functionName: '& operator=(WriteLock&&)'
    functionSourceFile: /src/pdns/pdns/lock.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: WriteLock
    signature: WriteLock & operator=(WriteLock&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/lock.hh:152,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - WriteLock
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 154
      start: 151
    functionDepth: 0
    functionLinenumber: 151
    functionLinenumberEnd: 154
    functionName: WriteLock::WriteLock
    functionSourceFile: /src/pdns/pdns/lock.hh
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void WriteLock(WriteLock&& rhs) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' lock'
    argTypes:
    - std::shared_mutex
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 160
      start: 157
    functionDepth: 0
    functionLinenumber: 157
    functionLinenumberEnd: 160
    functionName: WriteLock::WriteLock
    functionSourceFile: /src/pdns/pdns/lock.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void WriteLock(std::shared_mutex& lock)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getLock
      Src: /src/pdns/pdns/lock.hh:169,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' lock'
    argTypes:
    - ReadWriteLock
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 171
      start: 168
    functionDepth: 0
    functionLinenumber: 168
    functionLinenumberEnd: 171
    functionName: TryReadLock::TryReadLock
    functionSourceFile: /src/pdns/pdns/lock.hh
    functionUses: 0
    functionsReached:
    - getLock
    linkageType: ''
    returnType: void
    signature: void TryReadLock(ReadWriteLock& lock)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ReadWriteLock*::getLock
      Src: /src/pdns/pdns/lock.hh:174,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - lock
    argTypes:
    - ReadWriteLock*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 176
      start: 173
    functionDepth: 0
    functionLinenumber: 173
    functionLinenumberEnd: 176
    functionName: TryReadLock::TryReadLock
    functionSourceFile: /src/pdns/pdns/lock.hh
    functionUses: 0
    functionsReached:
    - ReadWriteLock*::getLock
    linkageType: ''
    returnType: void
    signature: void TryReadLock(ReadWriteLock* lock)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 178
      start: 178
    functionDepth: 0
    functionLinenumber: 178
    functionLinenumberEnd: 178
    functionName: ~TryReadLock()
    functionSourceFile: /src/pdns/pdns/lock.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~TryReadLock()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - TryReadLock
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 179
      start: 179
    functionDepth: 0
    functionLinenumber: 179
    functionLinenumberEnd: 179
    functionName: TryReadLock::TryReadLock
    functionSourceFile: /src/pdns/pdns/lock.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void TryReadLock(const TryReadLock& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 180
      start: 180
    functionDepth: 0
    functionLinenumber: 180
    functionLinenumberEnd: 180
    functionName: TryReadLock::TryReadLock
    functionSourceFile: /src/pdns/pdns/lock.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void TryReadLock(TryReadLock&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - TryReadLock
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 181
      start: 181
    functionDepth: 0
    functionLinenumber: 181
    functionLinenumberEnd: 181
    functionName: '& operator=(const TryReadLock& rhs)'
    functionSourceFile: /src/pdns/pdns/lock.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: TryReadLock
    signature: TryReadLock & operator=(const TryReadLock& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 182
      start: 182
    functionDepth: 0
    functionLinenumber: 182
    functionLinenumberEnd: 182
    functionName: '& operator=(TryReadLock&&)'
    functionSourceFile: /src/pdns/pdns/lock.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: TryReadLock
    signature: TryReadLock & operator=(TryReadLock&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: owns_lock
      Src: /src/pdns/pdns/lock.hh:186,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 187
      start: 184
    functionDepth: 0
    functionLinenumber: 184
    functionLinenumberEnd: 187
    functionName: TryReadLock::gotIt
    functionSourceFile: /src/pdns/pdns/lock.hh
    functionUses: 0
    functionsReached:
    - owns_lock
    linkageType: ''
    returnType: bool
    signature: bool gotIt() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' lock'
    argTypes:
    - std::shared_mutex
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 193
      start: 190
    functionDepth: 0
    functionLinenumber: 190
    functionLinenumberEnd: 193
    functionName: TryReadLock::TryReadLock
    functionSourceFile: /src/pdns/pdns/lock.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void TryReadLock(std::shared_mutex& lock)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getLock
      Src: /src/pdns/pdns/lock.hh:202,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' lock'
    argTypes:
    - ReadWriteLock
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 204
      start: 201
    functionDepth: 0
    functionLinenumber: 201
    functionLinenumberEnd: 204
    functionName: TryWriteLock::TryWriteLock
    functionSourceFile: /src/pdns/pdns/lock.hh
    functionUses: 0
    functionsReached:
    - getLock
    linkageType: ''
    returnType: void
    signature: void TryWriteLock(ReadWriteLock& lock)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ReadWriteLock*::getLock
      Src: /src/pdns/pdns/lock.hh:207,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - lock
    argTypes:
    - ReadWriteLock*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 209
      start: 206
    functionDepth: 0
    functionLinenumber: 206
    functionLinenumberEnd: 209
    functionName: TryWriteLock::TryWriteLock
    functionSourceFile: /src/pdns/pdns/lock.hh
    functionUses: 0
    functionsReached:
    - ReadWriteLock*::getLock
    linkageType: ''
    returnType: void
    signature: void TryWriteLock(ReadWriteLock* lock)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 211
      start: 211
    functionDepth: 0
    functionLinenumber: 211
    functionLinenumberEnd: 211
    functionName: ~TryWriteLock()
    functionSourceFile: /src/pdns/pdns/lock.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~TryWriteLock()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - TryWriteLock
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 212
      start: 212
    functionDepth: 0
    functionLinenumber: 212
    functionLinenumberEnd: 212
    functionName: TryWriteLock::TryWriteLock
    functionSourceFile: /src/pdns/pdns/lock.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void TryWriteLock(const TryWriteLock& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 213
      start: 213
    functionDepth: 0
    functionLinenumber: 213
    functionLinenumberEnd: 213
    functionName: TryWriteLock::TryWriteLock
    functionSourceFile: /src/pdns/pdns/lock.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void TryWriteLock(TryWriteLock&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - TryWriteLock
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 214
      start: 214
    functionDepth: 0
    functionLinenumber: 214
    functionLinenumberEnd: 214
    functionName: '& operator=(const TryWriteLock& rhs)'
    functionSourceFile: /src/pdns/pdns/lock.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: TryWriteLock
    signature: TryWriteLock & operator=(const TryWriteLock& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 215
      start: 215
    functionDepth: 0
    functionLinenumber: 215
    functionLinenumberEnd: 215
    functionName: '& operator=(TryWriteLock&&)'
    functionSourceFile: /src/pdns/pdns/lock.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: TryWriteLock
    signature: TryWriteLock & operator=(TryWriteLock&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: owns_lock
      Src: /src/pdns/pdns/lock.hh:219,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 220
      start: 217
    functionDepth: 0
    functionLinenumber: 217
    functionLinenumberEnd: 220
    functionName: TryWriteLock::gotIt
    functionSourceFile: /src/pdns/pdns/lock.hh
    functionUses: 0
    functionsReached:
    - owns_lock
    linkageType: ''
    returnType: bool
    signature: bool gotIt() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' lock'
    argTypes:
    - std::shared_mutex
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 226
      start: 223
    functionDepth: 0
    functionLinenumber: 223
    functionLinenumberEnd: 226
    functionName: TryWriteLock::TryWriteLock
    functionSourceFile: /src/pdns/pdns/lock.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void TryWriteLock(std::shared_mutex& lock)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - ' value'
    - ' mutex'
    argTypes:
    - T
    - std::mutex
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 238
      start: 235
    functionDepth: 0
    functionLinenumber: 235
    functionLinenumberEnd: 238
    functionName: LockGuardedHolder::LockGuardedHolder
    functionSourceFile: /src/pdns/pdns/lock.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void LockGuardedHolder(T& value, std::mutex& mutex)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 243
      start: 240
    functionDepth: 0
    functionLinenumber: 240
    functionLinenumberEnd: 243
    functionName: '& operator*() const noexcept'
    functionSourceFile: /src/pdns/pdns/lock.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: T
    signature: T & operator*() const noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 248
      start: 245
    functionDepth: 0
    functionLinenumber: 245
    functionLinenumberEnd: 248
    functionName: '* operator->() const noexcept'
    functionSourceFile: /src/pdns/pdns/lock.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: T
    signature: T * operator->() const noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - ' value'
    - ' mutex'
    argTypes:
    - T
    - std::mutex
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 262
      start: 259
    functionDepth: 0
    functionLinenumber: 259
    functionLinenumberEnd: 262
    functionName: LockGuardedTryHolder::LockGuardedTryHolder
    functionSourceFile: /src/pdns/pdns/lock.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void LockGuardedTryHolder(T& value, std::mutex& mutex)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: owns_lock
      Src: /src/pdns/pdns/lock.hh:266,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/lock.hh:267,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 270
      start: 264
    functionDepth: 0
    functionLinenumber: 264
    functionLinenumberEnd: 270
    functionName: '& operator*() const'
    functionSourceFile: /src/pdns/pdns/lock.hh
    functionUses: 0
    functionsReached:
    - owns_lock
    - std::runtime_error
    linkageType: ''
    returnType: T
    signature: T & operator*() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: owns_lock
      Src: /src/pdns/pdns/lock.hh:274,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/lock.hh:275,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 278
      start: 272
    functionDepth: 0
    functionLinenumber: 272
    functionLinenumberEnd: 278
    functionName: '* operator->() const'
    functionSourceFile: /src/pdns/pdns/lock.hh
    functionUses: 0
    functionsReached:
    - owns_lock
    - std::runtime_error
    linkageType: ''
    returnType: T
    signature: T * operator->() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: owns_lock
      Src: /src/pdns/pdns/lock.hh:282,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 283
      start: 280
    functionDepth: 0
    functionLinenumber: 280
    functionLinenumberEnd: 283
    functionName: operator bool() const noexcept
    functionSourceFile: /src/pdns/pdns/lock.hh
    functionUses: 0
    functionsReached:
    - owns_lock
    linkageType: ''
    returnType: void
    signature: void operator bool() const noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LockGuardedTryHolder::owns_lock
      Src: /src/pdns/pdns/lock.hh:287,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 288
      start: 285
    functionDepth: 0
    functionLinenumber: 285
    functionLinenumberEnd: 288
    functionName: LockGuardedTryHolder::owns_lock
    functionSourceFile: /src/pdns/pdns/lock.hh
    functionUses: 1
    functionsReached:
    - LockGuardedTryHolder::owns_lock
    linkageType: ''
    returnType: bool
    signature: bool owns_lock() const noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LockGuardedTryHolder::lock
      Src: /src/pdns/pdns/lock.hh:292,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 293
      start: 290
    functionDepth: 0
    functionLinenumber: 290
    functionLinenumberEnd: 293
    functionName: LockGuardedTryHolder::lock
    functionSourceFile: /src/pdns/pdns/lock.hh
    functionUses: 1
    functionsReached:
    - LockGuardedTryHolder::lock
    linkageType: ''
    returnType: void
    signature: void lock()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' value'
    argTypes:
    - T
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 307
      start: 304
    functionDepth: 0
    functionLinenumber: 304
    functionLinenumberEnd: 307
    functionName: LockGuarded::LockGuarded
    functionSourceFile: /src/pdns/pdns/lock.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void LockGuarded(const T& value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/lock.hh:310,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 1
    argNames:
    - ' value'
    argTypes:
    - T
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 312
      start: 309
    functionDepth: 0
    functionLinenumber: 309
    functionLinenumberEnd: 312
    functionName: LockGuarded::LockGuarded
    functionSourceFile: /src/pdns/pdns/lock.hh
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void LockGuarded(T&& value)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 314
      start: 314
    functionDepth: 0
    functionLinenumber: 314
    functionLinenumberEnd: 314
    functionName: LockGuarded::LockGuarded
    functionSourceFile: /src/pdns/pdns/lock.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void LockGuarded()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LockGuardedTryHolder<T>
      Src: /src/pdns/pdns/lock.hh:318,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 319
      start: 316
    functionDepth: 0
    functionLinenumber: 316
    functionLinenumberEnd: 319
    functionName: LockGuarded::try_lock
    functionSourceFile: /src/pdns/pdns/lock.hh
    functionUses: 0
    functionsReached:
    - LockGuardedTryHolder<T>
    linkageType: ''
    returnType: LockGuardedTryHolder<T>
    signature: LockGuardedTryHolder<T> try_lock()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LockGuardedHolder<T>
      Src: /src/pdns/pdns/lock.hh:323,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 324
      start: 321
    functionDepth: 0
    functionLinenumber: 321
    functionLinenumberEnd: 324
    functionName: LockGuarded::lock
    functionSourceFile: /src/pdns/pdns/lock.hh
    functionUses: 0
    functionsReached:
    - LockGuardedHolder<T>
    linkageType: ''
    returnType: LockGuardedHolder<T>
    signature: LockGuardedHolder<T> lock()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LockGuardedHolder<const T>
      Src: /src/pdns/pdns/lock.hh:328,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 329
      start: 326
    functionDepth: 0
    functionLinenumber: 326
    functionLinenumberEnd: 329
    functionName: LockGuarded::read_only_lock
    functionSourceFile: /src/pdns/pdns/lock.hh
    functionUses: 0
    functionsReached:
    - LockGuardedHolder<const T>
    linkageType: ''
    returnType: LockGuardedHolder<const T>
    signature: LockGuardedHolder<const T> read_only_lock()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - ' value'
    - ' mutex'
    argTypes:
    - T
    - std::recursive_mutex
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 343
      start: 340
    functionDepth: 0
    functionLinenumber: 340
    functionLinenumberEnd: 343
    functionName: RecursiveLockGuardedHolder::RecursiveLockGuardedHolder
    functionSourceFile: /src/pdns/pdns/lock.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void RecursiveLockGuardedHolder(T& value, std::recursive_mutex& mutex)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 348
      start: 345
    functionDepth: 0
    functionLinenumber: 345
    functionLinenumberEnd: 348
    functionName: '& operator*() const noexcept'
    functionSourceFile: /src/pdns/pdns/lock.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: T
    signature: T & operator*() const noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 353
      start: 350
    functionDepth: 0
    functionLinenumber: 350
    functionLinenumberEnd: 353
    functionName: '* operator->() const noexcept'
    functionSourceFile: /src/pdns/pdns/lock.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: T
    signature: T * operator->() const noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - ' value'
    - ' mutex'
    argTypes:
    - T
    - std::recursive_mutex
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 367
      start: 364
    functionDepth: 0
    functionLinenumber: 364
    functionLinenumberEnd: 367
    functionName: RecursiveLockGuardedTryHolder::RecursiveLockGuardedTryHolder
    functionSourceFile: /src/pdns/pdns/lock.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void RecursiveLockGuardedTryHolder(T& value, std::recursive_mutex&
      mutex)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: owns_lock
      Src: /src/pdns/pdns/lock.hh:371,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/lock.hh:372,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 375
      start: 369
    functionDepth: 0
    functionLinenumber: 369
    functionLinenumberEnd: 375
    functionName: '& operator*() const'
    functionSourceFile: /src/pdns/pdns/lock.hh
    functionUses: 0
    functionsReached:
    - owns_lock
    - std::runtime_error
    linkageType: ''
    returnType: T
    signature: T & operator*() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: owns_lock
      Src: /src/pdns/pdns/lock.hh:379,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/lock.hh:380,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 383
      start: 377
    functionDepth: 0
    functionLinenumber: 377
    functionLinenumberEnd: 383
    functionName: '* operator->() const'
    functionSourceFile: /src/pdns/pdns/lock.hh
    functionUses: 0
    functionsReached:
    - owns_lock
    - std::runtime_error
    linkageType: ''
    returnType: T
    signature: T * operator->() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: owns_lock
      Src: /src/pdns/pdns/lock.hh:387,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 388
      start: 385
    functionDepth: 0
    functionLinenumber: 385
    functionLinenumberEnd: 388
    functionName: operator bool() const noexcept
    functionSourceFile: /src/pdns/pdns/lock.hh
    functionUses: 0
    functionsReached:
    - owns_lock
    linkageType: ''
    returnType: void
    signature: void operator bool() const noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RecursiveLockGuardedTryHolder::owns_lock
      Src: /src/pdns/pdns/lock.hh:392,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 393
      start: 390
    functionDepth: 0
    functionLinenumber: 390
    functionLinenumberEnd: 393
    functionName: RecursiveLockGuardedTryHolder::owns_lock
    functionSourceFile: /src/pdns/pdns/lock.hh
    functionUses: 1
    functionsReached:
    - RecursiveLockGuardedTryHolder::owns_lock
    linkageType: ''
    returnType: bool
    signature: bool owns_lock() const noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RecursiveLockGuardedTryHolder::lock
      Src: /src/pdns/pdns/lock.hh:397,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 398
      start: 395
    functionDepth: 0
    functionLinenumber: 395
    functionLinenumberEnd: 398
    functionName: RecursiveLockGuardedTryHolder::lock
    functionSourceFile: /src/pdns/pdns/lock.hh
    functionUses: 1
    functionsReached:
    - RecursiveLockGuardedTryHolder::lock
    linkageType: ''
    returnType: void
    signature: void lock()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' value'
    argTypes:
    - T
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 412
      start: 409
    functionDepth: 0
    functionLinenumber: 409
    functionLinenumberEnd: 412
    functionName: RecursiveLockGuarded::RecursiveLockGuarded
    functionSourceFile: /src/pdns/pdns/lock.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void RecursiveLockGuarded(const T& value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/lock.hh:415,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 1
    argNames:
    - ' value'
    argTypes:
    - T
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 417
      start: 414
    functionDepth: 0
    functionLinenumber: 414
    functionLinenumberEnd: 417
    functionName: RecursiveLockGuarded::RecursiveLockGuarded
    functionSourceFile: /src/pdns/pdns/lock.hh
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void RecursiveLockGuarded(T&& value)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 419
      start: 419
    functionDepth: 0
    functionLinenumber: 419
    functionLinenumberEnd: 419
    functionName: RecursiveLockGuarded::RecursiveLockGuarded
    functionSourceFile: /src/pdns/pdns/lock.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void RecursiveLockGuarded()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RecursiveLockGuardedTryHolder<T>
      Src: /src/pdns/pdns/lock.hh:423,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 424
      start: 421
    functionDepth: 0
    functionLinenumber: 421
    functionLinenumberEnd: 424
    functionName: RecursiveLockGuarded::try_lock
    functionSourceFile: /src/pdns/pdns/lock.hh
    functionUses: 0
    functionsReached:
    - RecursiveLockGuardedTryHolder<T>
    linkageType: ''
    returnType: RecursiveLockGuardedTryHolder<T>
    signature: RecursiveLockGuardedTryHolder<T> try_lock()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RecursiveLockGuardedHolder<T>
      Src: /src/pdns/pdns/lock.hh:428,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 429
      start: 426
    functionDepth: 0
    functionLinenumber: 426
    functionLinenumberEnd: 429
    functionName: RecursiveLockGuarded::lock
    functionSourceFile: /src/pdns/pdns/lock.hh
    functionUses: 0
    functionsReached:
    - RecursiveLockGuardedHolder<T>
    linkageType: ''
    returnType: RecursiveLockGuardedHolder<T>
    signature: RecursiveLockGuardedHolder<T> lock()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RecursiveLockGuardedHolder<const T>
      Src: /src/pdns/pdns/lock.hh:433,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 434
      start: 431
    functionDepth: 0
    functionLinenumber: 431
    functionLinenumberEnd: 434
    functionName: RecursiveLockGuarded::read_only_lock
    functionSourceFile: /src/pdns/pdns/lock.hh
    functionUses: 0
    functionsReached:
    - RecursiveLockGuardedHolder<const T>
    linkageType: ''
    returnType: RecursiveLockGuardedHolder<const T>
    signature: RecursiveLockGuardedHolder<const T> read_only_lock()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - ' value'
    - ' mutex'
    argTypes:
    - T
    - std::shared_mutex
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 448
      start: 445
    functionDepth: 0
    functionLinenumber: 445
    functionLinenumberEnd: 448
    functionName: SharedLockGuardedHolder::SharedLockGuardedHolder
    functionSourceFile: /src/pdns/pdns/lock.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void SharedLockGuardedHolder(T& value, std::shared_mutex& mutex)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 453
      start: 450
    functionDepth: 0
    functionLinenumber: 450
    functionLinenumberEnd: 453
    functionName: '& operator*() const noexcept'
    functionSourceFile: /src/pdns/pdns/lock.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: T
    signature: T & operator*() const noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 458
      start: 455
    functionDepth: 0
    functionLinenumber: 455
    functionLinenumberEnd: 458
    functionName: '* operator->() const noexcept'
    functionSourceFile: /src/pdns/pdns/lock.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: T
    signature: T * operator->() const noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - ' value'
    - ' mutex'
    argTypes:
    - T
    - std::shared_mutex
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 472
      start: 469
    functionDepth: 0
    functionLinenumber: 469
    functionLinenumberEnd: 472
    functionName: SharedLockGuardedTryHolder::SharedLockGuardedTryHolder
    functionSourceFile: /src/pdns/pdns/lock.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void SharedLockGuardedTryHolder(T& value, std::shared_mutex& mutex)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: owns_lock
      Src: /src/pdns/pdns/lock.hh:476,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/lock.hh:477,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 480
      start: 474
    functionDepth: 0
    functionLinenumber: 474
    functionLinenumberEnd: 480
    functionName: '& operator*() const'
    functionSourceFile: /src/pdns/pdns/lock.hh
    functionUses: 0
    functionsReached:
    - owns_lock
    - std::runtime_error
    linkageType: ''
    returnType: T
    signature: T & operator*() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: owns_lock
      Src: /src/pdns/pdns/lock.hh:484,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/lock.hh:485,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 488
      start: 482
    functionDepth: 0
    functionLinenumber: 482
    functionLinenumberEnd: 488
    functionName: '* operator->() const'
    functionSourceFile: /src/pdns/pdns/lock.hh
    functionUses: 0
    functionsReached:
    - owns_lock
    - std::runtime_error
    linkageType: ''
    returnType: T
    signature: T * operator->() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: owns_lock
      Src: /src/pdns/pdns/lock.hh:492,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 493
      start: 490
    functionDepth: 0
    functionLinenumber: 490
    functionLinenumberEnd: 493
    functionName: operator bool() const noexcept
    functionSourceFile: /src/pdns/pdns/lock.hh
    functionUses: 0
    functionsReached:
    - owns_lock
    linkageType: ''
    returnType: void
    signature: void operator bool() const noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SharedLockGuardedTryHolder::owns_lock
      Src: /src/pdns/pdns/lock.hh:497,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 498
      start: 495
    functionDepth: 0
    functionLinenumber: 495
    functionLinenumberEnd: 498
    functionName: SharedLockGuardedTryHolder::owns_lock
    functionSourceFile: /src/pdns/pdns/lock.hh
    functionUses: 1
    functionsReached:
    - SharedLockGuardedTryHolder::owns_lock
    linkageType: ''
    returnType: bool
    signature: bool owns_lock() const noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - ' value'
    - ' mutex'
    argTypes:
    - T
    - std::shared_mutex
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 512
      start: 509
    functionDepth: 0
    functionLinenumber: 509
    functionLinenumberEnd: 512
    functionName: SharedLockGuardedNonExclusiveHolder::SharedLockGuardedNonExclusiveHolder
    functionSourceFile: /src/pdns/pdns/lock.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void SharedLockGuardedNonExclusiveHolder(const T& value, std::shared_mutex&
      mutex)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 517
      start: 514
    functionDepth: 0
    functionLinenumber: 514
    functionLinenumberEnd: 517
    functionName: '& operator*() const noexcept'
    functionSourceFile: /src/pdns/pdns/lock.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: T
    signature: T & operator*() const noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 522
      start: 519
    functionDepth: 0
    functionLinenumber: 519
    functionLinenumberEnd: 522
    functionName: '* operator->() const noexcept'
    functionSourceFile: /src/pdns/pdns/lock.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: T
    signature: T * operator->() const noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - ' value'
    - ' mutex'
    argTypes:
    - T
    - std::shared_mutex
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 536
      start: 533
    functionDepth: 0
    functionLinenumber: 533
    functionLinenumberEnd: 536
    functionName: SharedLockGuardedNonExclusiveTryHolder::SharedLockGuardedNonExclusiveTryHolder
    functionSourceFile: /src/pdns/pdns/lock.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void SharedLockGuardedNonExclusiveTryHolder(const T& value, std::shared_mutex&
      mutex)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: owns_lock
      Src: /src/pdns/pdns/lock.hh:540,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/lock.hh:541,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 544
      start: 538
    functionDepth: 0
    functionLinenumber: 538
    functionLinenumberEnd: 544
    functionName: '& operator*() const'
    functionSourceFile: /src/pdns/pdns/lock.hh
    functionUses: 0
    functionsReached:
    - owns_lock
    - std::runtime_error
    linkageType: ''
    returnType: T
    signature: T & operator*() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: owns_lock
      Src: /src/pdns/pdns/lock.hh:548,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/lock.hh:549,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 552
      start: 546
    functionDepth: 0
    functionLinenumber: 546
    functionLinenumberEnd: 552
    functionName: '* operator->() const'
    functionSourceFile: /src/pdns/pdns/lock.hh
    functionUses: 0
    functionsReached:
    - owns_lock
    - std::runtime_error
    linkageType: ''
    returnType: T
    signature: T * operator->() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: owns_lock
      Src: /src/pdns/pdns/lock.hh:556,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 557
      start: 554
    functionDepth: 0
    functionLinenumber: 554
    functionLinenumberEnd: 557
    functionName: operator bool() const noexcept
    functionSourceFile: /src/pdns/pdns/lock.hh
    functionUses: 0
    functionsReached:
    - owns_lock
    linkageType: ''
    returnType: void
    signature: void operator bool() const noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SharedLockGuardedNonExclusiveTryHolder::owns_lock
      Src: /src/pdns/pdns/lock.hh:561,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 562
      start: 559
    functionDepth: 0
    functionLinenumber: 559
    functionLinenumberEnd: 562
    functionName: SharedLockGuardedNonExclusiveTryHolder::owns_lock
    functionSourceFile: /src/pdns/pdns/lock.hh
    functionUses: 1
    functionsReached:
    - SharedLockGuardedNonExclusiveTryHolder::owns_lock
    linkageType: ''
    returnType: bool
    signature: bool owns_lock() const noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' value'
    argTypes:
    - T
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 576
      start: 573
    functionDepth: 0
    functionLinenumber: 573
    functionLinenumberEnd: 576
    functionName: SharedLockGuarded::SharedLockGuarded
    functionSourceFile: /src/pdns/pdns/lock.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void SharedLockGuarded(const T& value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/lock.hh:579,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 1
    argNames:
    - ' value'
    argTypes:
    - T
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 581
      start: 578
    functionDepth: 0
    functionLinenumber: 578
    functionLinenumberEnd: 581
    functionName: SharedLockGuarded::SharedLockGuarded
    functionSourceFile: /src/pdns/pdns/lock.hh
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void SharedLockGuarded(T&& value)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 583
      start: 583
    functionDepth: 0
    functionLinenumber: 583
    functionLinenumberEnd: 583
    functionName: SharedLockGuarded::SharedLockGuarded
    functionSourceFile: /src/pdns/pdns/lock.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void SharedLockGuarded()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SharedLockGuardedTryHolder<T>
      Src: /src/pdns/pdns/lock.hh:587,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 588
      start: 585
    functionDepth: 0
    functionLinenumber: 585
    functionLinenumberEnd: 588
    functionName: SharedLockGuarded::try_write_lock
    functionSourceFile: /src/pdns/pdns/lock.hh
    functionUses: 0
    functionsReached:
    - SharedLockGuardedTryHolder<T>
    linkageType: ''
    returnType: SharedLockGuardedTryHolder<T>
    signature: SharedLockGuardedTryHolder<T> try_write_lock()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SharedLockGuardedHolder<T>
      Src: /src/pdns/pdns/lock.hh:592,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 593
      start: 590
    functionDepth: 0
    functionLinenumber: 590
    functionLinenumberEnd: 593
    functionName: SharedLockGuarded::write_lock
    functionSourceFile: /src/pdns/pdns/lock.hh
    functionUses: 0
    functionsReached:
    - SharedLockGuardedHolder<T>
    linkageType: ''
    returnType: SharedLockGuardedHolder<T>
    signature: SharedLockGuardedHolder<T> write_lock()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SharedLockGuardedNonExclusiveTryHolder<T>
      Src: /src/pdns/pdns/lock.hh:597,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 598
      start: 595
    functionDepth: 0
    functionLinenumber: 595
    functionLinenumberEnd: 598
    functionName: SharedLockGuarded::try_read_lock
    functionSourceFile: /src/pdns/pdns/lock.hh
    functionUses: 0
    functionsReached:
    - SharedLockGuardedNonExclusiveTryHolder<T>
    linkageType: ''
    returnType: SharedLockGuardedNonExclusiveTryHolder<T>
    signature: SharedLockGuardedNonExclusiveTryHolder<T> try_read_lock()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SharedLockGuardedNonExclusiveHolder<T>
      Src: /src/pdns/pdns/lock.hh:602,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 603
      start: 600
    functionDepth: 0
    functionLinenumber: 600
    functionLinenumberEnd: 603
    functionName: SharedLockGuarded::read_lock
    functionSourceFile: /src/pdns/pdns/lock.hh
    functionUses: 0
    functionsReached:
    - SharedLockGuardedNonExclusiveHolder<T>
    linkageType: ''
    returnType: SharedLockGuardedNonExclusiveHolder<T>
    signature: SharedLockGuardedNonExclusiveHolder<T> read_lock()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hashPassword
      Src: /src/pdns/pdns/test-credentials_cc.cc:27,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-credentials_cc.cc:28,1
    - Dst: auto::empty
      Src: /src/pdns/pdns/test-credentials_cc.cc:28,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-credentials_cc.cc:30,1
    - Dst: verifyPassword
      Src: /src/pdns/pdns/test-credentials_cc.cc:30,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-credentials_cc.cc:31,1
    - Dst: verifyPassword
      Src: /src/pdns/pdns/test-credentials_cc.cc:31,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-credentials_cc.cc:33,1
    - Dst: verifyPassword
      Src: /src/pdns/pdns/test-credentials_cc.cc:33,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-credentials_cc.cc:34,1
    - Dst: verifyPassword
      Src: /src/pdns/pdns/test-credentials_cc.cc:34,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-credentials_cc.cc:35,1
    - Dst: verifyPassword
      Src: /src/pdns/pdns/test-credentials_cc.cc:35,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-credentials_cc.cc:37,1
    - Dst: isPasswordHashed
      Src: /src/pdns/pdns/test-credentials_cc.cc:37,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-credentials_cc.cc:38,1
    - Dst: isPasswordHashed
      Src: /src/pdns/pdns/test-credentials_cc.cc:38,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-credentials_cc.cc:39,1
    - Dst: isPasswordHashed
      Src: /src/pdns/pdns/test-credentials_cc.cc:39,1
    - Dst: hashPassword
      Src: /src/pdns/pdns/test-credentials_cc.cc:43,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-credentials_cc.cc:45,1
    - Dst: boost::starts_with
      Src: /src/pdns/pdns/test-credentials_cc.cc:45,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-credentials_cc.cc:47,1
    - Dst: verifyPassword
      Src: /src/pdns/pdns/test-credentials_cc.cc:47,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-credentials_cc.cc:52,1
    - Dst: hashPassword
      Src: /src/pdns/pdns/test-credentials_cc.cc:52,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-credentials_cc.cc:53,1
    - Dst: hashPassword
      Src: /src/pdns/pdns/test-credentials_cc.cc:53,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-credentials_cc.cc:54,1
    - Dst: hashPassword
      Src: /src/pdns/pdns/test-credentials_cc.cc:54,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-credentials_cc.cc:58,1
    - Dst: isPasswordHashed
      Src: /src/pdns/pdns/test-credentials_cc.cc:58,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-credentials_cc.cc:60,1
    - Dst: isPasswordHashed
      Src: /src/pdns/pdns/test-credentials_cc.cc:60,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-credentials_cc.cc:62,1
    - Dst: isPasswordHashed
      Src: /src/pdns/pdns/test-credentials_cc.cc:62,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-credentials_cc.cc:64,1
    - Dst: isPasswordHashed
      Src: /src/pdns/pdns/test-credentials_cc.cc:64,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-credentials_cc.cc:66,1
    - Dst: isPasswordHashed
      Src: /src/pdns/pdns/test-credentials_cc.cc:66,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-credentials_cc.cc:68,1
    - Dst: isPasswordHashed
      Src: /src/pdns/pdns/test-credentials_cc.cc:68,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-credentials_cc.cc:70,1
    - Dst: isPasswordHashed
      Src: /src/pdns/pdns/test-credentials_cc.cc:70,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-credentials_cc.cc:72,1
    - Dst: isPasswordHashed
      Src: /src/pdns/pdns/test-credentials_cc.cc:72,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-credentials_cc.cc:74,1
    - Dst: isPasswordHashed
      Src: /src/pdns/pdns/test-credentials_cc.cc:74,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-credentials_cc.cc:76,1
    - Dst: isPasswordHashed
      Src: /src/pdns/pdns/test-credentials_cc.cc:76,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-credentials_cc.cc:78,1
    - Dst: isPasswordHashed
      Src: /src/pdns/pdns/test-credentials_cc.cc:78,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-credentials_cc.cc:80,1
    - Dst: isPasswordHashed
      Src: /src/pdns/pdns/test-credentials_cc.cc:80,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-credentials_cc.cc:82,1
    - Dst: isPasswordHashed
      Src: /src/pdns/pdns/test-credentials_cc.cc:82,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-credentials_cc.cc:85,1
    - Dst: verifyPassword
      Src: /src/pdns/pdns/test-credentials_cc.cc:85,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-credentials_cc.cc:87,1
    - Dst: verifyPassword
      Src: /src/pdns/pdns/test-credentials_cc.cc:87,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-credentials_cc.cc:89,1
    - Dst: verifyPassword
      Src: /src/pdns/pdns/test-credentials_cc.cc:89,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-credentials_cc.cc:91,1
    - Dst: verifyPassword
      Src: /src/pdns/pdns/test-credentials_cc.cc:91,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-credentials_cc.cc:93,1
    - Dst: verifyPassword
      Src: /src/pdns/pdns/test-credentials_cc.cc:93,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-credentials_cc.cc:95,1
    - Dst: verifyPassword
      Src: /src/pdns/pdns/test-credentials_cc.cc:95,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-credentials_cc.cc:97,1
    - Dst: verifyPassword
      Src: /src/pdns/pdns/test-credentials_cc.cc:97,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-credentials_cc.cc:99,1
    - Dst: verifyPassword
      Src: /src/pdns/pdns/test-credentials_cc.cc:99,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-credentials_cc.cc:101,1
    - Dst: verifyPassword
      Src: /src/pdns/pdns/test-credentials_cc.cc:101,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-credentials_cc.cc:103,1
    - Dst: verifyPassword
      Src: /src/pdns/pdns/test-credentials_cc.cc:103,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-credentials_cc.cc:105,1
    - Dst: verifyPassword
      Src: /src/pdns/pdns/test-credentials_cc.cc:105,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 41
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 21
    functionDepth: 0
    functionLinenumber: 21
    functionLinenumberEnd: 106
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-credentials_cc.cc
    functionUses: 0
    functionsReached:
    - hashPassword
    - boost::starts_with
    - isPasswordHashed
    - BOOST_CHECK_THROW
    - BOOST_CHECK
    - verifyPassword
    - auto::empty
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_CredentialsUtils)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CredentialsHolder
      Src: /src/pdns/pdns/test-credentials_cc.cc:113,1
    - Dst: std::string
      Src: /src/pdns/pdns/test-credentials_cc.cc:113,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-credentials_cc.cc:115,1
    - Dst: auto::matches
      Src: /src/pdns/pdns/test-credentials_cc.cc:115,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-credentials_cc.cc:116,1
    - Dst: auto::matches
      Src: /src/pdns/pdns/test-credentials_cc.cc:116,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-credentials_cc.cc:117,1
    - Dst: auto::wasHashed
      Src: /src/pdns/pdns/test-credentials_cc.cc:117,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-credentials_cc.cc:118,1
    - Dst: auto::isHashed
      Src: /src/pdns/pdns/test-credentials_cc.cc:118,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-credentials_cc.cc:121,1
    - Dst: CredentialsHolder::isHashingAvailable
      Src: /src/pdns/pdns/test-credentials_cc.cc:121,1
    - Dst: CredentialsHolder
      Src: /src/pdns/pdns/test-credentials_cc.cc:124,1
    - Dst: std::string
      Src: /src/pdns/pdns/test-credentials_cc.cc:124,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-credentials_cc.cc:125,1
    - Dst: auto::wasHashed
      Src: /src/pdns/pdns/test-credentials_cc.cc:125,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-credentials_cc.cc:126,1
    - Dst: auto::isHashed
      Src: /src/pdns/pdns/test-credentials_cc.cc:126,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-credentials_cc.cc:127,1
    - Dst: auto::matches
      Src: /src/pdns/pdns/test-credentials_cc.cc:127,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-credentials_cc.cc:128,1
    - Dst: auto::matches
      Src: /src/pdns/pdns/test-credentials_cc.cc:128,1
    - Dst: CredentialsHolder
      Src: /src/pdns/pdns/test-credentials_cc.cc:130,1
    - Dst: std::string
      Src: /src/pdns/pdns/test-credentials_cc.cc:130,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-credentials_cc.cc:131,1
    - Dst: auto::wasHashed
      Src: /src/pdns/pdns/test-credentials_cc.cc:131,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-credentials_cc.cc:132,1
    - Dst: auto::isHashed
      Src: /src/pdns/pdns/test-credentials_cc.cc:132,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-credentials_cc.cc:133,1
    - Dst: auto::matches
      Src: /src/pdns/pdns/test-credentials_cc.cc:133,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-credentials_cc.cc:134,1
    - Dst: auto::matches
      Src: /src/pdns/pdns/test-credentials_cc.cc:134,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-credentials_cc.cc:136,1
    - Dst: CredentialsHolder::isHashingAvailable
      Src: /src/pdns/pdns/test-credentials_cc.cc:136,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 138
      start: 109
    functionDepth: 0
    functionLinenumber: 109
    functionLinenumberEnd: 138
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-credentials_cc.cc
    functionUses: 0
    functionsReached:
    - auto::isHashed
    - auto::wasHashed
    - auto::matches
    - CredentialsHolder::isHashingAvailable
    - CredentialsHolder
    - std::string
    - BOOST_CHECK
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_CredentialsHolder)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-credentials_cc.cc:144,1
    - Dst: SensitiveData::getString
      Src: /src/pdns/pdns/test-credentials_cc.cc:144,1
    - Dst: std::move
      Src: /src/pdns/pdns/test-credentials_cc.cc:147,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-credentials_cc.cc:148,1
    - Dst: SensitiveData::getString
      Src: /src/pdns/pdns/test-credentials_cc.cc:148,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-credentials_cc.cc:149,1
    - Dst: SensitiveData::getString
      Src: /src/pdns/pdns/test-credentials_cc.cc:149,1
    - Dst: SensitiveData::clear
      Src: /src/pdns/pdns/test-credentials_cc.cc:151,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-credentials_cc.cc:152,1
    - Dst: SensitiveData::getString
      Src: /src/pdns/pdns/test-credentials_cc.cc:152,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 153
      start: 140
    functionDepth: 0
    functionLinenumber: 140
    functionLinenumberEnd: 153
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-credentials_cc.cc
    functionUses: 0
    functionsReached:
    - SensitiveData::clear
    - std::move
    - SensitiveData::getString
    - BOOST_CHECK_EQUAL
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_SensitiveData)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 51
    functionDepth: 0
    functionLinenumber: 51
    functionLinenumberEnd: 53
    functionName: usage
    functionSourceFile: /src/pdns/pdns/notify.cc
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void usage()
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: usage
      Src: /src/pdns/pdns/notify.cc:62,1
    - Dst: usage
      Src: /src/pdns/pdns/notify.cc:73,1
    - Dst: exit
      Src: /src/pdns/pdns/notify.cc:74,1
    - Dst: set::emplace
      Src: /src/pdns/pdns/notify.cc:84,1
    - Dst: NetmaskTree::TreeNode::split
      Src: /src/pdns/pdns/notify.cc:89,1
    - Dst: vector::size
      Src: /src/pdns/pdns/notify.cc:90,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/notify.cc:91,1
    - Dst: vector::size
      Src: /src/pdns/pdns/notify.cc:92,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/notify.cc:93,1
    - Dst: getaddrinfo
      Src: /src/pdns/pdns/notify.cc:94,1
    - Dst: c_str
      Src: /src/pdns/pdns/notify.cc:94,1
    - Dst: c_str
      Src: /src/pdns/pdns/notify.cc:94,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/notify.cc:95,1
    - Dst: string
      Src: /src/pdns/pdns/notify.cc:95,1
    - Dst: set::emplace
      Src: /src/pdns/pdns/notify.cc:97,1
    - Dst: close
      Src: /src/pdns/pdns/notify.cc:102,1
    - Dst: socket
      Src: /src/pdns/pdns/notify.cc:103,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/notify.cc:105,1
    - Dst: stringerror
      Src: /src/pdns/pdns/notify.cc:105,1
    - Dst: connect
      Src: /src/pdns/pdns/notify.cc:106,1
    - Dst: getSocklen
      Src: /src/pdns/pdns/notify.cc:106,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/notify.cc:107,1
    - Dst: stringerror
      Src: /src/pdns/pdns/notify.cc:107,1
    - Dst: DNSName
      Src: /src/pdns/pdns/notify.cc:111,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/notify.cc:112,1
    - Dst: dns_random_uint16
      Src: /src/pdns/pdns/notify.cc:112,1
    - Dst: send
      Src: /src/pdns/pdns/notify.cc:114,1
    - Dst: vector::size
      Src: /src/pdns/pdns/notify.cc:114,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/notify.cc:115,1
    - Dst: stringerror
      Src: /src/pdns/pdns/notify.cc:115,1
    - Dst: FD_ZERO
      Src: /src/pdns/pdns/notify.cc:121,1
    - Dst: FD_SET
      Src: /src/pdns/pdns/notify.cc:122,1
    - Dst: FD_ZERO
      Src: /src/pdns/pdns/notify.cc:124,1
    - Dst: FD_SET
      Src: /src/pdns/pdns/notify.cc:125,1
    - Dst: select
      Src: /src/pdns/pdns/notify.cc:133,1
    - Dst: recv
      Src: /src/pdns/pdns/notify.cc:134,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/notify.cc:141,1
    - Dst: stringerror
      Src: /src/pdns/pdns/notify.cc:141,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/notify.cc:144,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/notify.cc:147,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/notify.cc:155,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/notify.cc:157,1
    - Dst: RCode::to_s
      Src: /src/pdns/pdns/notify.cc:157,1
    - Dst: what
      Src: /src/pdns/pdns/notify.cc:163,1
    CyclomaticComplexity: 30
    EdgeCount: 30
    ICount: 77
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 164
      start: 55
    functionDepth: 1
    functionLinenumber: 55
    functionLinenumberEnd: 164
    functionName: main
    functionSourceFile: /src/pdns/pdns/notify.cc
    functionUses: 1
    functionsReached:
    - select
    - stringerror
    - runtime_error
    - dns_random_uint16
    - set::emplace
    - RCode::to_s
    - recv
    - string
    - DNSPacketWriter::getHeader
    - usage
    - send
    - c_str
    - getaddrinfo
    - FD_ZERO
    - connect
    - vector::push_back
    - DNSName
    - exit
    - toStringWithPort
    - getSocklen
    - socket
    - NetmaskTree::TreeNode::split
    - FD_SET
    - what
    - vector::size
    - close
    linkageType: ''
    returnType: int
    signature: int main(int argc, char** argv)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: time
      Src: /src/pdns/pdns/test-tsig.cc:43,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/test-tsig.cc:47,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/test-tsig.cc:48,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/test-tsig.cc:49,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/test-tsig.cc:50,1
    - Dst: DNSPacketWriter::xfr32BitInt
      Src: /src/pdns/pdns/test-tsig.cc:51,1
    - Dst: DNSPacketWriter::addOpt
      Src: /src/pdns/pdns/test-tsig.cc:52,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/test-tsig.cc:53,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/test-tsig.cc:61,1
    - Dst: getTSIGHashEnum
      Src: /src/pdns/pdns/test-tsig.cc:61,1
    - Dst: TSIGRecordContent::TSIGRecordContent
      Src: /src/pdns/pdns/test-tsig.cc:63,1
    - Dst: getTSIGAlgoName
      Src: /src/pdns/pdns/test-tsig.cc:64,1
    - Dst: ntohs
      Src: /src/pdns/pdns/test-tsig.cc:67,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/test-tsig.cc:67,1
    - Dst: addTSIG
      Src: /src/pdns/pdns/test-tsig.cc:70,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 19
    argCount: 4
    argNames:
    - ' qname'
    - ' tsigName'
    - ' tsigAlgo'
    - ' tsigSecret'
    argTypes:
    - DNSName
    - DNSName
    - DNSName
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 43
    functionDepth: 1
    functionLinenumber: 43
    functionLinenumberEnd: 72
    functionName: generateTSIGQuery
    functionSourceFile: /src/pdns/pdns/test-tsig.cc
    functionUses: 0
    functionsReached:
    - addTSIG
    - DNSPacketWriter::commit
    - ntohs
    - getTSIGAlgoName
    - time
    - DNSPacketWriter::getHeader
    - DNSPacketWriter::addOpt
    - getTSIGHashEnum
    - BOOST_REQUIRE
    - DNSPacketWriter::xfr32BitInt
    - TSIGRecordContent::TSIGRecordContent
    - DNSPacketWriter::startRecord
    linkageType: ''
    returnType: vector<uint8_t>
    signature: vector<uint8_t> generateTSIGQuery(const DNSName& qname, const DNSName&
      tsigName, const DNSName& tsigAlgo, const string& tsigSecret, uint16_t fudge=300,
      time_t tsigTime=time(nullptr))
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/test-tsig.cc:76,1
    - Dst: data
      Src: /src/pdns/pdns/test-tsig.cc:76,1
    - Dst: size
      Src: /src/pdns/pdns/test-tsig.cc:76,1
    - Dst: DNSName::DNSName
      Src: /src/pdns/pdns/test-tsig.cc:81,1
    - Dst: TSIGRecordContent::TSIGRecordContent
      Src: /src/pdns/pdns/test-tsig.cc:82,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-tsig.cc:86,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-tsig.cc:87,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-tsig.cc:88,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-tsig.cc:89,1
    - Dst: getRR
      Src: /src/pdns/pdns/test-tsig.cc:91,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/test-tsig.cc:113,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-tsig.cc:119,1
    - Dst: validateTSIG
      Src: /src/pdns/pdns/test-tsig.cc:119,1
    - Dst: MOADNSParser::getTSIGPos
      Src: /src/pdns/pdns/test-tsig.cc:119,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 28
    argCount: 4
    argNames:
    - ' tsigName'
    - ' tsigAlgo'
    - ' tsigSecret'
    - ' packet'
    argTypes:
    - DNSName
    - DNSName
    - string
    - vector<uint8_t>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 74
    functionDepth: 0
    functionLinenumber: 74
    functionLinenumberEnd: 120
    functionName: checkTSIG
    functionSourceFile: /src/pdns/pdns/test-tsig.cc
    functionUses: 0
    functionsReached:
    - getRR
    - BOOST_CHECK
    - validateTSIG
    - size
    - BOOST_CHECK_EQUAL
    - MOADNSParser::getTSIGPos
    - reinterpret_cast<const char*>
    - BOOST_REQUIRE
    - data
    - DNSName::DNSName
    - TSIGRecordContent::TSIGRecordContent
    linkageType: ''
    returnType: void
    signature: void checkTSIG(const DNSName& tsigName, const DNSName& tsigAlgo, const
      string& tsigSecret, const vector<uint8_t>& packet, const string* overrideMac=nullptr,
      uint16_t* overrideExtendedRCode=nullptr, uint16_t* overrideOrigID=nullptr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: generateTSIGQuery
      Src: /src/pdns/pdns/test-tsig.cc:128,1
    - Dst: checkTSIG
      Src: /src/pdns/pdns/test-tsig.cc:130,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 130
      start: 122
    functionDepth: 0
    functionLinenumber: 122
    functionLinenumberEnd: 130
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-tsig.cc
    functionUses: 0
    functionsReached:
    - generateTSIGQuery
    - checkTSIG
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_TSIG_valid)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: generateTSIGQuery
      Src: /src/pdns/pdns/test-tsig.cc:139,1
    - Dst: checkTSIG
      Src: /src/pdns/pdns/test-tsig.cc:141,1
    - Dst: DNSName::makeLowerCase
      Src: /src/pdns/pdns/test-tsig.cc:141,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 142
      start: 133
    functionDepth: 0
    functionLinenumber: 133
    functionLinenumberEnd: 142
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-tsig.cc
    functionUses: 0
    functionsReached:
    - generateTSIGQuery
    - DNSName::makeLowerCase
    - checkTSIG
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_TSIG_different_case_algo)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: generateTSIGQuery
      Src: /src/pdns/pdns/test-tsig.cc:150,1
    - Dst: checkTSIG
      Src: /src/pdns/pdns/test-tsig.cc:152,1
    - Dst: DNSName::makeLowerCase
      Src: /src/pdns/pdns/test-tsig.cc:152,1
    - Dst: DNSName::makeLowerCase
      Src: /src/pdns/pdns/test-tsig.cc:152,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 153
      start: 144
    functionDepth: 0
    functionLinenumber: 144
    functionLinenumberEnd: 153
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-tsig.cc
    functionUses: 0
    functionsReached:
    - generateTSIGQuery
    - DNSName::makeLowerCase
    - checkTSIG
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_TSIG_different_case_name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: generateTSIGQuery
      Src: /src/pdns/pdns/test-tsig.cc:161,1
    - Dst: checkTSIG
      Src: /src/pdns/pdns/test-tsig.cc:163,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 164
      start: 155
    functionDepth: 0
    functionLinenumber: 155
    functionLinenumberEnd: 164
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-tsig.cc
    functionUses: 0
    functionsReached:
    - generateTSIGQuery
    - checkTSIG
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_TSIG_different_name_same_algo)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: generateTSIGQuery
      Src: /src/pdns/pdns/test-tsig.cc:172,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-tsig.cc:174,1
    - Dst: checkTSIG
      Src: /src/pdns/pdns/test-tsig.cc:174,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-tsig.cc:174,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 175
      start: 166
    functionDepth: 0
    functionLinenumber: 166
    functionLinenumberEnd: 175
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-tsig.cc
    functionUses: 0
    functionsReached:
    - generateTSIGQuery
    - DNSName
    - BOOST_CHECK_THROW
    - checkTSIG
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_TSIG_bad_key_name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: generateTSIGQuery
      Src: /src/pdns/pdns/test-tsig.cc:183,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-tsig.cc:185,1
    - Dst: checkTSIG
      Src: /src/pdns/pdns/test-tsig.cc:185,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-tsig.cc:185,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 186
      start: 177
    functionDepth: 0
    functionLinenumber: 177
    functionLinenumberEnd: 186
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-tsig.cc
    functionUses: 0
    functionsReached:
    - generateTSIGQuery
    - DNSName
    - BOOST_CHECK_THROW
    - checkTSIG
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_TSIG_bad_algo)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: generateTSIGQuery
      Src: /src/pdns/pdns/test-tsig.cc:194,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-tsig.cc:196,1
    - Dst: checkTSIG
      Src: /src/pdns/pdns/test-tsig.cc:196,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 197
      start: 188
    functionDepth: 0
    functionLinenumber: 188
    functionLinenumberEnd: 197
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-tsig.cc
    functionUses: 0
    functionsReached:
    - generateTSIGQuery
    - BOOST_CHECK_THROW
    - checkTSIG
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_TSIG_bad_secret)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: generateTSIGQuery
      Src: /src/pdns/pdns/test-tsig.cc:205,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-tsig.cc:208,1
    - Dst: checkTSIG
      Src: /src/pdns/pdns/test-tsig.cc:208,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 209
      start: 199
    functionDepth: 0
    functionLinenumber: 199
    functionLinenumberEnd: 209
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-tsig.cc
    functionUses: 0
    functionsReached:
    - generateTSIGQuery
    - BOOST_CHECK_THROW
    - checkTSIG
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_TSIG_bad_ercode)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: generateTSIGQuery
      Src: /src/pdns/pdns/test-tsig.cc:217,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-tsig.cc:220,1
    - Dst: checkTSIG
      Src: /src/pdns/pdns/test-tsig.cc:220,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 221
      start: 211
    functionDepth: 0
    functionLinenumber: 211
    functionLinenumberEnd: 221
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-tsig.cc
    functionUses: 0
    functionsReached:
    - generateTSIGQuery
    - BOOST_CHECK_THROW
    - checkTSIG
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_TSIG_bad_origID)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: generateTSIGQuery
      Src: /src/pdns/pdns/test-tsig.cc:229,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-tsig.cc:232,1
    - Dst: checkTSIG
      Src: /src/pdns/pdns/test-tsig.cc:232,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 233
      start: 223
    functionDepth: 0
    functionLinenumber: 223
    functionLinenumberEnd: 233
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-tsig.cc
    functionUses: 0
    functionsReached:
    - generateTSIGQuery
    - BOOST_CHECK_THROW
    - checkTSIG
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_TSIG_bad_mac)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: generateTSIGQuery
      Src: /src/pdns/pdns/test-tsig.cc:241,1
    - Dst: time
      Src: /src/pdns/pdns/test-tsig.cc:241,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-tsig.cc:243,1
    - Dst: checkTSIG
      Src: /src/pdns/pdns/test-tsig.cc:243,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 244
      start: 235
    functionDepth: 0
    functionLinenumber: 235
    functionLinenumberEnd: 244
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-tsig.cc
    functionUses: 0
    functionsReached:
    - generateTSIGQuery
    - time
    - BOOST_CHECK_THROW
    - checkTSIG
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_TSIG_signature_expired)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: generateTSIGQuery
      Src: /src/pdns/pdns/test-tsig.cc:252,1
    - Dst: time
      Src: /src/pdns/pdns/test-tsig.cc:252,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-tsig.cc:254,1
    - Dst: checkTSIG
      Src: /src/pdns/pdns/test-tsig.cc:254,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 255
      start: 246
    functionDepth: 0
    functionLinenumber: 246
    functionLinenumberEnd: 255
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-tsig.cc
    functionUses: 0
    functionsReached:
    - generateTSIGQuery
    - time
    - BOOST_CHECK_THROW
    - checkTSIG
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_TSIG_signature_too_far_in_the_future)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - ProxyProtocolValue
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 35
      start: 32
    functionDepth: 0
    functionLinenumber: 32
    functionLinenumberEnd: 35
    functionName: operator==(const ProxyProtocolValue& rhs) const
    functionSourceFile: /src/pdns/pdns/proxy-protocol.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool operator==(const ProxyProtocolValue& rhs) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: time
      Src: /src/pdns/pdns/ixfrdist-stats.hh:34,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 35
      start: 33
    functionDepth: 0
    functionLinenumber: 33
    functionLinenumberEnd: 35
    functionName: ixfrdistStats::ixfrdistStats
    functionSourceFile: /src/pdns/pdns/ixfrdist-stats.hh
    functionUses: 0
    functionsReached:
    - time
    linkageType: ''
    returnType: void
    signature: void ixfrdistStats()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ixfrdistStats::getRegisteredDomain
      Src: /src/pdns/pdns/ixfrdist-stats.hh:40,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ' d'
    - serial
    argTypes:
    - ZoneName
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 39
    functionDepth: 1
    functionLinenumber: 39
    functionLinenumberEnd: 43
    functionName: ixfrdistStats::setSOASerial
    functionSourceFile: /src/pdns/pdns/ixfrdist-stats.hh
    functionUses: 0
    functionsReached:
    - ixfrdistStats::getRegisteredDomain
    linkageType: ''
    returnType: void
    signature: void setSOASerial(const ZoneName& d, const uint32_t serial)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ixfrdistStats::getRegisteredDomain
      Src: /src/pdns/pdns/ixfrdist-stats.hh:45,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' d'
    argTypes:
    - ZoneName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 44
    functionDepth: 1
    functionLinenumber: 44
    functionLinenumberEnd: 46
    functionName: ixfrdistStats::incrementSOAChecks
    functionSourceFile: /src/pdns/pdns/ixfrdist-stats.hh
    functionUses: 0
    functionsReached:
    - ixfrdistStats::getRegisteredDomain
    linkageType: ''
    returnType: void
    signature: void incrementSOAChecks(const ZoneName& d, const uint64_t amount =
      1)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ixfrdistStats::getRegisteredDomain
      Src: /src/pdns/pdns/ixfrdist-stats.hh:48,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' d'
    argTypes:
    - ZoneName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 47
    functionDepth: 1
    functionLinenumber: 47
    functionLinenumberEnd: 49
    functionName: ixfrdistStats::incrementSOAChecksFailed
    functionSourceFile: /src/pdns/pdns/ixfrdist-stats.hh
    functionUses: 0
    functionsReached:
    - ixfrdistStats::getRegisteredDomain
    linkageType: ''
    returnType: void
    signature: void incrementSOAChecksFailed(const ZoneName& d, const uint64_t amount
      = 1)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ixfrdistStats::getRegisteredDomain
      Src: /src/pdns/pdns/ixfrdist-stats.hh:51,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' d'
    argTypes:
    - ZoneName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 50
    functionDepth: 1
    functionLinenumber: 50
    functionLinenumberEnd: 52
    functionName: ixfrdistStats::incrementSOAinQueries
    functionSourceFile: /src/pdns/pdns/ixfrdist-stats.hh
    functionUses: 0
    functionsReached:
    - ixfrdistStats::getRegisteredDomain
    linkageType: ''
    returnType: void
    signature: void incrementSOAinQueries(const ZoneName& d, const uint64_t amount
      = 1)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ixfrdistStats::getRegisteredDomain
      Src: /src/pdns/pdns/ixfrdist-stats.hh:54,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' d'
    argTypes:
    - ZoneName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 53
    functionDepth: 1
    functionLinenumber: 53
    functionLinenumberEnd: 55
    functionName: ixfrdistStats::incrementAXFRinQueries
    functionSourceFile: /src/pdns/pdns/ixfrdist-stats.hh
    functionUses: 0
    functionsReached:
    - ixfrdistStats::getRegisteredDomain
    linkageType: ''
    returnType: void
    signature: void incrementAXFRinQueries(const ZoneName& d, const uint64_t amount
      = 1)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ixfrdistStats::getRegisteredDomain
      Src: /src/pdns/pdns/ixfrdist-stats.hh:57,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' d'
    argTypes:
    - ZoneName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 56
    functionDepth: 1
    functionLinenumber: 56
    functionLinenumberEnd: 58
    functionName: ixfrdistStats::incrementIXFRinQueries
    functionSourceFile: /src/pdns/pdns/ixfrdist-stats.hh
    functionUses: 0
    functionsReached:
    - ixfrdistStats::getRegisteredDomain
    linkageType: ''
    returnType: void
    signature: void incrementIXFRinQueries(const ZoneName& d, const uint64_t amount
      = 1)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ixfrdistStats::getRegisteredDomain
      Src: /src/pdns/pdns/ixfrdist-stats.hh:60,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' d'
    argTypes:
    - ZoneName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 59
    functionDepth: 1
    functionLinenumber: 59
    functionLinenumberEnd: 61
    functionName: ixfrdistStats::incrementAXFRFailures
    functionSourceFile: /src/pdns/pdns/ixfrdist-stats.hh
    functionUses: 0
    functionsReached:
    - ixfrdistStats::getRegisteredDomain
    linkageType: ''
    returnType: void
    signature: void incrementAXFRFailures(const ZoneName& d, const uint64_t amount
      = 1)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ixfrdistStats::getRegisteredDomain
      Src: /src/pdns/pdns/ixfrdist-stats.hh:63,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' d'
    argTypes:
    - ZoneName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 62
    functionDepth: 1
    functionLinenumber: 62
    functionLinenumberEnd: 64
    functionName: ixfrdistStats::incrementIXFRFailures
    functionSourceFile: /src/pdns/pdns/ixfrdist-stats.hh
    functionUses: 0
    functionsReached:
    - ixfrdistStats::getRegisteredDomain
    linkageType: ''
    returnType: void
    signature: void incrementIXFRFailures(const ZoneName& d, const uint64_t amount
      = 1)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' d'
    argTypes:
    - ZoneName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 65
    functionDepth: 0
    functionLinenumber: 65
    functionLinenumberEnd: 67
    functionName: ixfrdistStats::registerDomain
    functionSourceFile: /src/pdns/pdns/ixfrdist-stats.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void registerDomain(const ZoneName& d)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 69
    functionDepth: 0
    functionLinenumber: 69
    functionLinenumberEnd: 72
    functionName: ixfrdistStats::incrementUnknownDomainInQueries
    functionSourceFile: /src/pdns/pdns/ixfrdist-stats.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void incrementUnknownDomainInQueries(const ZoneName& /* d */)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: at
      Src: /src/pdns/pdns/ixfrdist-stats.hh:76,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - opcode
    argTypes:
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 74
    functionDepth: 0
    functionLinenumber: 74
    functionLinenumberEnd: 77
    functionName: ixfrdistStats::incrementNotImplemented
    functionSourceFile: /src/pdns/pdns/ixfrdist-stats.hh
    functionUses: 0
    functionsReached:
    - at
    linkageType: ''
    returnType: void
    signature: void incrementNotImplemented(uint8_t opcode)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: find
      Src: /src/pdns/pdns/ixfrdist-stats.hh:106,1
    - Dst: end
      Src: /src/pdns/pdns/ixfrdist-stats.hh:107,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/ixfrdist-stats.hh:108,1
    - Dst: toLogString
      Src: /src/pdns/pdns/ixfrdist-stats.hh:108,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - ' d'
    argTypes:
    - ZoneName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 111
      start: 105
    functionDepth: 0
    functionLinenumber: 105
    functionLinenumberEnd: 111
    functionName: ixfrdistStats::getRegisteredDomain
    functionSourceFile: /src/pdns/pdns/ixfrdist-stats.hh
    functionUses: 8
    functionsReached:
    - PDNSException
    - toLogString
    - end
    - find
    linkageType: ''
    returnType: std::map<ZoneName, perDomainStat>::iterator
    signature: std::map<ZoneName, perDomainStat>::iterator getRegisteredDomain(const
      ZoneName& d)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 35
      start: 35
    functionDepth: 0
    functionLinenumber: 35
    functionLinenumberEnd: 35
    functionName: RemoteLoggerPool::RemoteLoggerPool
    functionSourceFile: /src/pdns/pdns/remote_logger_pool.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void RemoteLoggerPool(const RemoteLoggerPool&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 36
      start: 36
    functionDepth: 0
    functionLinenumber: 36
    functionLinenumberEnd: 36
    functionName: RemoteLoggerPool::RemoteLoggerPool
    functionSourceFile: /src/pdns/pdns/remote_logger_pool.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void RemoteLoggerPool(RemoteLoggerPool&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 37
    functionDepth: 0
    functionLinenumber: 37
    functionLinenumberEnd: 37
    functionName: '& operator=(const RemoteLoggerPool&)'
    functionSourceFile: /src/pdns/pdns/remote_logger_pool.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: RemoteLoggerPool
    signature: RemoteLoggerPool & operator=(const RemoteLoggerPool&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 38
    functionDepth: 0
    functionLinenumber: 38
    functionLinenumberEnd: 38
    functionName: '& operator=(RemoteLoggerPool&&)'
    functionSourceFile: /src/pdns/pdns/remote_logger_pool.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: RemoteLoggerPool
    signature: RemoteLoggerPool & operator=(RemoteLoggerPool&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 41
    functionDepth: 0
    functionLinenumber: 41
    functionLinenumberEnd: 44
    functionName: RemoteLoggerPool::address
    functionSourceFile: /src/pdns/pdns/remote_logger_pool.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string address() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::to_string
      Src: /src/pdns/pdns/remote_logger_pool.hh:48,1
    - Dst: size
      Src: /src/pdns/pdns/remote_logger_pool.hh:48,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 46
    functionDepth: 0
    functionLinenumber: 46
    functionLinenumberEnd: 49
    functionName: RemoteLoggerPool::name
    functionSourceFile: /src/pdns/pdns/remote_logger_pool.hh
    functionUses: 0
    functionsReached:
    - std::to_string
    - size
    linkageType: ''
    returnType: std::string
    signature: std::string name() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RemoteLoggerPool::getStats
      Src: /src/pdns/pdns/remote_logger_pool.hh:57,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 53
    functionDepth: 0
    functionLinenumber: 53
    functionLinenumberEnd: 60
    functionName: RemoteLoggerPool::getStats
    functionSourceFile: /src/pdns/pdns/remote_logger_pool.hh
    functionUses: 1
    functionsReached:
    - RemoteLoggerPool::getStats
    linkageType: ''
    returnType: RemoteLoggerInterface::Stats
    signature: RemoteLoggerInterface::Stats getStats() override
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: getLocal
      Src: /src/pdns/pdns/test-sholder_hh.cc:26,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/test-sholder_hh.cc:29,1
    - Dst: store
      Src: /src/pdns/pdns/test-sholder_hh.cc:30,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 34
      start: 24
    functionDepth: 0
    functionLinenumber: 24
    functionLinenumberEnd: 34
    functionName: treader
    functionSourceFile: /src/pdns/pdns/test-sholder_hh.cc
    functionUses: 0
    functionsReached:
    - getLocal
    - store
    - std::to_string
    linkageType: ''
    returnType: void
    signature: void treader()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: setState
      Src: /src/pdns/pdns/test-sholder_hh.cc:38,1
    - Dst: setState
      Src: /src/pdns/pdns/test-sholder_hh.cc:42,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/test-sholder_hh.cc:42,1
    - Dst: modify
      Src: /src/pdns/pdns/test-sholder_hh.cc:43,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/test-sholder_hh.cc:43,1
    - Dst: std::thread::join
      Src: /src/pdns/pdns/test-sholder_hh.cc:45,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-sholder_hh.cc:46,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 36
    functionDepth: 0
    functionLinenumber: 36
    functionLinenumberEnd: 47
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-sholder_hh.cc
    functionUses: 0
    functionsReached:
    - setState
    - modify
    - std::to_string
    - std::thread::join
    - BOOST_CHECK_EQUAL
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_sholder)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/packetcache.hh:38,1
    - Dst: assert
      Src: /src/pdns/pdns/packetcache.hh:39,1
    - Dst: data
      Src: /src/pdns/pdns/packetcache.hh:47,1
    - Dst: dnsheader_aligned::get
      Src: /src/pdns/pdns/packetcache.hh:48,1
    - Dst: ntohs
      Src: /src/pdns/pdns/packetcache.hh:49,1
    - Dst: ntohs
      Src: /src/pdns/pdns/packetcache.hh:49,1
    - Dst: ntohs
      Src: /src/pdns/pdns/packetcache.hh:49,1
    - Dst: ntohs
      Src: /src/pdns/pdns/packetcache.hh:49,1
    - Dst: burtle
      Src: /src/pdns/pdns/packetcache.hh:51,1
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/packetcache.hh:51,1
    - Dst: at
      Src: /src/pdns/pdns/packetcache.hh:51,1
    - Dst: empty
      Src: /src/pdns/pdns/packetcache.hh:56,1
    - Dst: burtle
      Src: /src/pdns/pdns/packetcache.hh:57,1
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/packetcache.hh:57,1
    - Dst: at
      Src: /src/pdns/pdns/packetcache.hh:57,1
    - Dst: begin
      Src: /src/pdns/pdns/packetcache.hh:60,1
    - Dst: begin
      Src: /src/pdns/pdns/packetcache.hh:60,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/packetcache.hh:61,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/packetcache.hh:61,1
    - Dst: std::upper_bound
      Src: /src/pdns/pdns/packetcache.hh:62,1
    - Dst: begin
      Src: /src/pdns/pdns/packetcache.hh:62,1
    - Dst: end
      Src: /src/pdns/pdns/packetcache.hh:62,1
    - Dst: begin
      Src: /src/pdns/pdns/packetcache.hh:63,1
    - Dst: burtle
      Src: /src/pdns/pdns/packetcache.hh:68,1
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/packetcache.hh:68,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/packetcache.hh:68,1
    - Dst: static_cast<uint16_t>
      Src: /src/pdns/pdns/packetcache.hh:79,1
    - Dst: at
      Src: /src/pdns/pdns/packetcache.hh:79,1
    - Dst: static_cast<uint16_t>
      Src: /src/pdns/pdns/packetcache.hh:79,1
    - Dst: at
      Src: /src/pdns/pdns/packetcache.hh:79,1
    - Dst: burtle
      Src: /src/pdns/pdns/packetcache.hh:86,1
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/packetcache.hh:86,1
    - Dst: at
      Src: /src/pdns/pdns/packetcache.hh:86,1
    - Dst: getNextEDNSOption
      Src: /src/pdns/pdns/packetcache.hh:95,1
    - Dst: at
      Src: /src/pdns/pdns/packetcache.hh:95,1
    - Dst: burtle
      Src: /src/pdns/pdns/packetcache.hh:98,1
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/packetcache.hh:98,1
    - Dst: at
      Src: /src/pdns/pdns/packetcache.hh:98,1
    - Dst: count
      Src: /src/pdns/pdns/packetcache.hh:103,1
    - Dst: burtle
      Src: /src/pdns/pdns/packetcache.hh:105,1
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/packetcache.hh:105,1
    - Dst: at
      Src: /src/pdns/pdns/packetcache.hh:105,1
    - Dst: burtle
      Src: /src/pdns/pdns/packetcache.hh:109,1
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/packetcache.hh:109,1
    - Dst: at
      Src: /src/pdns/pdns/packetcache.hh:109,1
    - Dst: burtle
      Src: /src/pdns/pdns/packetcache.hh:117,1
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/packetcache.hh:117,1
    - Dst: at
      Src: /src/pdns/pdns/packetcache.hh:117,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 48
    argCount: 3
    argNames:
    - ' packet'
    - currentHash
    - pos
    argTypes:
    - std::string_view
    - uint32_t
    - size_t
    assertStmts:
    - condition: (packetSize >= sizeof(dnsheader))
      pos:
        line_end: 38
        line_start: 38
        source_file: /src/pdns/pdns/packetcache.hh
    constantsTouched: []
    func_position:
      end: 121
      start: 36
    functionDepth: 0
    functionLinenumber: 36
    functionLinenumberEnd: 121
    functionName: PacketCache::hashAfterQname
    functionSourceFile: /src/pdns/pdns/packetcache.hh
    functionUses: 0
    functionsReached:
    - dnsheader_aligned::get
    - ntohs
    - count
    - end
    - assert
    - size
    - begin
    - empty
    - reinterpret_cast<const unsigned char*>
    - std::vector::at
    - std::upper_bound
    - static_cast<uint16_t>
    - data
    - burtle
    - getNextEDNSOption
    - at
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t hashAfterQname(const std::string_view& packet, uint32_t currentHash,
      size_t pos, const std::unordered_set<uint16_t>& optionsToSkip = {EDNSOptionCode::COOKIE},
      const std::vector<uint16_t>& payloadRanks = {})
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/packetcache.hh:125,1
    - Dst: assert
      Src: /src/pdns/pdns/packetcache.hh:126,1
    - Dst: burtle
      Src: /src/pdns/pdns/packetcache.hh:131,1
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/packetcache.hh:131,1
    - Dst: at
      Src: /src/pdns/pdns/packetcache.hh:131,1
    - Dst: static_cast<unsigned char>
      Src: /src/pdns/pdns/packetcache.hh:134,1
    - Dst: at
      Src: /src/pdns/pdns/packetcache.hh:134,1
    - Dst: std::min
      Src: /src/pdns/pdns/packetcache.hh:139,1
    - Dst: burtleCI
      Src: /src/pdns/pdns/packetcache.hh:141,1
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/packetcache.hh:141,1
    - Dst: at
      Src: /src/pdns/pdns/packetcache.hh:141,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - ' packet'
    - ' pos'
    argTypes:
    - std::string
    - size_t
    assertStmts:
    - condition: (packetSize >= sizeof(dnsheader))
      pos:
        line_end: 125
        line_start: 125
        source_file: /src/pdns/pdns/packetcache.hh
    constantsTouched: []
    func_position:
      end: 142
      start: 123
    functionDepth: 0
    functionLinenumber: 123
    functionLinenumberEnd: 142
    functionName: PacketCache::hashHeaderAndQName
    functionSourceFile: /src/pdns/pdns/packetcache.hh
    functionUses: 0
    functionsReached:
    - burtleCI
    - std::min
    - assert
    - size
    - reinterpret_cast<const unsigned char*>
    - burtle
    - at
    - static_cast<unsigned char>
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t hashHeaderAndQName(const std::string& packet, size_t& pos)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PacketCache::hashHeaderAndQName
      Src: /src/pdns/pdns/packetcache.hh:152,1
    - Dst: size
      Src: /src/pdns/pdns/packetcache.hh:154,1
    - Dst: PacketCache::hashAfterQname
      Src: /src/pdns/pdns/packetcache.hh:158,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ' packet'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 159
      start: 149
    functionDepth: 0
    functionLinenumber: 149
    functionLinenumberEnd: 159
    functionName: PacketCache::canHashPacket
    functionSourceFile: /src/pdns/pdns/packetcache.hh
    functionUses: 0
    functionsReached:
    - PacketCache::hashHeaderAndQName
    - size
    - PacketCache::hashAfterQname
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t canHashPacket(const std::string& packet, const std::unordered_set<uint16_t>&
      optionsToSkip = {EDNSOptionCode::COOKIE})
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/packetcache.hh:163,1
    - Dst: size
      Src: /src/pdns/pdns/packetcache.hh:163,1
    - Dst: compare
      Src: /src/pdns/pdns/packetcache.hh:167,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - ' cachedQuery'
    - ' query'
    argTypes:
    - std::string
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 168
      start: 161
    functionDepth: 0
    functionLinenumber: 161
    functionLinenumberEnd: 168
    functionName: PacketCache::queryHeaderMatches
    functionSourceFile: /src/pdns/pdns/packetcache.hh
    functionUses: 0
    functionsReached:
    - compare
    - size
    linkageType: ''
    returnType: bool
    signature: bool queryHeaderMatches(const std::string& cachedQuery, const std::string&
      query)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/packetcache.hh:172,1
    - Dst: size
      Src: /src/pdns/pdns/packetcache.hh:173,1
    - Dst: PacketCache::queryHeaderMatches
      Src: /src/pdns/pdns/packetcache.hh:178,1
    - Dst: wirelength
      Src: /src/pdns/pdns/packetcache.hh:182,1
    - Dst: data
      Src: /src/pdns/pdns/packetcache.hh:189,1
    - Dst: dnsheader_aligned::get
      Src: /src/pdns/pdns/packetcache.hh:190,1
    - Dst: ntohs
      Src: /src/pdns/pdns/packetcache.hh:191,1
    - Dst: ntohs
      Src: /src/pdns/pdns/packetcache.hh:191,1
    - Dst: ntohs
      Src: /src/pdns/pdns/packetcache.hh:191,1
    - Dst: ntohs
      Src: /src/pdns/pdns/packetcache.hh:191,1
    - Dst: empty
      Src: /src/pdns/pdns/packetcache.hh:191,1
    - Dst: compare
      Src: /src/pdns/pdns/packetcache.hh:192,1
    - Dst: compare
      Src: /src/pdns/pdns/packetcache.hh:196,1
    - Dst: static_cast<unsigned char>
      Src: /src/pdns/pdns/packetcache.hh:205,1
    - Dst: at
      Src: /src/pdns/pdns/packetcache.hh:205,1
    - Dst: static_cast<unsigned char>
      Src: /src/pdns/pdns/packetcache.hh:205,1
    - Dst: at
      Src: /src/pdns/pdns/packetcache.hh:205,1
    - Dst: compare
      Src: /src/pdns/pdns/packetcache.hh:212,1
    - Dst: getNextEDNSOption
      Src: /src/pdns/pdns/packetcache.hh:219,1
    - Dst: at
      Src: /src/pdns/pdns/packetcache.hh:219,1
    - Dst: compare
      Src: /src/pdns/pdns/packetcache.hh:221,1
    - Dst: compare
      Src: /src/pdns/pdns/packetcache.hh:225,1
    - Dst: count
      Src: /src/pdns/pdns/packetcache.hh:231,1
    - Dst: compare
      Src: /src/pdns/pdns/packetcache.hh:232,1
    - Dst: compare
      Src: /src/pdns/pdns/packetcache.hh:244,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 39
    argCount: 4
    argNames:
    - ' cachedQuery'
    - ' query'
    - ' qname'
    - ' optionsToIgnore'
    argTypes:
    - std::string
    - std::string
    - DNSName
    - std::unordered_set<uint16_t>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 245
      start: 170
    functionDepth: 0
    functionLinenumber: 170
    functionLinenumberEnd: 245
    functionName: PacketCache::queryMatches
    functionSourceFile: /src/pdns/pdns/packetcache.hh
    functionUses: 0
    functionsReached:
    - wirelength
    - dnsheader_aligned::get
    - ntohs
    - count
    - PacketCache::queryHeaderMatches
    - size
    - compare
    - getNextEDNSOption
    - data
    - empty
    - at
    - static_cast<unsigned char>
    linkageType: ''
    returnType: bool
    signature: bool queryMatches(const std::string& cachedQuery, const std::string&
      query, const DNSName& qname, const std::unordered_set<uint16_t>& optionsToIgnore)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: stringerror
      Src: /src/pdns/pdns/lua-base4.cc:25,1
    - Dst: SLOG
      Src: /src/pdns/pdns/lua-base4.cc:26,1
    - Dst: withName
      Src: /src/pdns/pdns/lua-base4.cc:27,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/lua-base4.cc:27,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/lua-base4.cc:28,1
    - Dst: BaseLua4::loadStream
      Src: /src/pdns/pdns/lua-base4.cc:30,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - ' fname'
    - doPostLoad
    argTypes:
    - std::string
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 31
      start: 20
    functionDepth: 0
    functionLinenumber: 20
    functionLinenumberEnd: 31
    functionName: BaseLua4::loadFile
    functionSourceFile: /src/pdns/pdns/lua-base4.cc
    functionUses: 0
    functionsReached:
    - BaseLua4::loadStream
    - SLOG
    - std::runtime_error
    - withName
    - stringerror
    - Logging::Loggable
    linkageType: ''
    returnType: void
    signature: void BaseLua4::loadFile(const std::string& fname, bool doPostLoad)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BaseLua4::loadStream
      Src: /src/pdns/pdns/lua-base4.cc:35,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - script
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 36
      start: 33
    functionDepth: 0
    functionLinenumber: 33
    functionLinenumberEnd: 36
    functionName: BaseLua4::loadString
    functionSourceFile: /src/pdns/pdns/lua-base4.cc
    functionUses: 0
    functionsReached:
    - BaseLua4::loadStream
    linkageType: ''
    returnType: void
    signature: void BaseLua4::loadString(const std::string &script)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pdns::visit_directory
      Src: /src/pdns/pdns/lua-base4.cc:41,1
    - Dst: boost::starts_with
      Src: /src/pdns/pdns/lua-base4.cc:43,1
    - Dst: boost::ends_with
      Src: /src/pdns/pdns/lua-base4.cc:46,1
    - Dst: std::string
      Src: /src/pdns/pdns/lua-base4.cc:48,1
    - Dst: stat
      Src: /src/pdns/pdns/lua-base4.cc:53,1
    - Dst: string::c_str
      Src: /src/pdns/pdns/lua-base4.cc:53,1
    - Dst: S_ISREG
      Src: /src/pdns/pdns/lua-base4.cc:53,1
    - Dst: SLOG
      Src: /src/pdns/pdns/lua-base4.cc:55,1
    - Dst: withName
      Src: /src/pdns/pdns/lua-base4.cc:56,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/lua-base4.cc:56,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/lua-base4.cc:57,1
    - Dst: std::move
      Src: /src/pdns/pdns/lua-base4.cc:57,1
    - Dst: std::vector::emplace_back
      Src: /src/pdns/pdns/lua-base4.cc:59,1
    - Dst: stringerror
      Src: /src/pdns/pdns/lua-base4.cc:66,1
    - Dst: SLOG
      Src: /src/pdns/pdns/lua-base4.cc:67,1
    - Dst: withName
      Src: /src/pdns/pdns/lua-base4.cc:68,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/lua-base4.cc:68,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/lua-base4.cc:69,1
    - Dst: std::move
      Src: /src/pdns/pdns/lua-base4.cc:69,1
    - Dst: std::sort
      Src: /src/pdns/pdns/lua-base4.cc:72,1
    - Dst: std::vector::begin
      Src: /src/pdns/pdns/lua-base4.cc:72,1
    - Dst: std::vector::end
      Src: /src/pdns/pdns/lua-base4.cc:72,1
    - Dst: CIStringComparePOSIX
      Src: /src/pdns/pdns/lua-base4.cc:72,1
    - Dst: BaseLua4::loadFile
      Src: /src/pdns/pdns/lua-base4.cc:75,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 21
    argCount: 1
    argNames:
    - ' directory'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 38
    functionDepth: 0
    functionLinenumber: 38
    functionLinenumberEnd: 77
    functionName: BaseLua4::includePath
    functionSourceFile: /src/pdns/pdns/lua-base4.cc
    functionUses: 0
    functionsReached:
    - withName
    - PDNSException
    - stringerror
    - BaseLua4::loadFile
    - std::string
    - SLOG
    - Logging::Loggable
    - std::vector::begin
    - boost::starts_with
    - stat
    - boost::ends_with
    - std::vector::end
    - string::c_str
    - pdns::visit_directory
    - S_ISREG
    - std::move
    - std::sort
    - std::vector::emplace_back
    - CIStringComparePOSIX
    linkageType: ''
    returnType: void
    signature: void BaseLua4::includePath(const std::string& directory)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 80
    functionDepth: 0
    functionLinenumber: 80
    functionLinenumberEnd: 80
    functionName: BaseLua4::getFeatures
    functionSourceFile: /src/pdns/pdns/lua-base4.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void BaseLua4::getFeatures(Features &)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: std::make_unique<LuaContext>
      Src: /src/pdns/pdns/lua-base4.cc:83,1
    - Dst: BaseLua4::getFeatures
      Src: /src/pdns/pdns/lua-base4.cc:87,1
    - Dst: writeVariable
      Src: /src/pdns/pdns/lua-base4.cc:88,1
    - Dst: ntohs
      Src: /src/pdns/pdns/lua-base4.cc:91,1
    - Dst: ntohs
      Src: /src/pdns/pdns/lua-base4.cc:100,1
    - Dst: ntohs
      Src: /src/pdns/pdns/lua-base4.cc:101,1
    - Dst: ntohs
      Src: /src/pdns/pdns/lua-base4.cc:102,1
    - Dst: ntohs
      Src: /src/pdns/pdns/lua-base4.cc:103,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/lua-base4.cc:106,1
    - Dst: DNSName
      Src: /src/pdns/pdns/lua-base4.cc:106,1
    - Dst: registerFunction
      Src: /src/pdns/pdns/lua-base4.cc:107,1
    - Dst: canonCompare
      Src: /src/pdns/pdns/lua-base4.cc:108,1
    - Dst: DNSName
      Src: /src/pdns/pdns/lua-base4.cc:109,1
    - Dst: makeRelative
      Src: /src/pdns/pdns/lua-base4.cc:109,1
    - Dst: isPartOf
      Src: /src/pdns/pdns/lua-base4.cc:110,1
    - Dst: registerFunction
      Src: /src/pdns/pdns/lua-base4.cc:111,1
    - Dst: registerFunction
      Src: /src/pdns/pdns/lua-base4.cc:112,1
    - Dst: countLabels
      Src: /src/pdns/pdns/lua-base4.cc:112,1
    - Dst: wirelength
      Src: /src/pdns/pdns/lua-base4.cc:113,1
    - Dst: wirelength
      Src: /src/pdns/pdns/lua-base4.cc:114,1
    - Dst: DNSName
      Src: /src/pdns/pdns/lua-base4.cc:115,1
    - Dst: registerEqFunction
      Src: /src/pdns/pdns/lua-base4.cc:116,1
    - Dst: string
      Src: /src/pdns/pdns/lua-base4.cc:117,1
    - Dst: toString
      Src: /src/pdns/pdns/lua-base4.cc:117,1
    - Dst: string
      Src: /src/pdns/pdns/lua-base4.cc:118,1
    - Dst: toString
      Src: /src/pdns/pdns/lua-base4.cc:118,1
    - Dst: string
      Src: /src/pdns/pdns/lua-base4.cc:119,1
    - Dst: toStringNoDot
      Src: /src/pdns/pdns/lua-base4.cc:119,1
    - Dst: chopOff
      Src: /src/pdns/pdns/lua-base4.cc:120,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/lua-base4.cc:123,1
    - Dst: DNSResourceRecord
      Src: /src/pdns/pdns/lua-base4.cc:124,1
    - Dst: auto::setContent
      Src: /src/pdns/pdns/lua-base4.cc:128,1
    - Dst: registerEqFunction
      Src: /src/pdns/pdns/lua-base4.cc:135,1
    - Dst: registerFunction
      Src: /src/pdns/pdns/lua-base4.cc:136,1
    - Dst: string
      Src: /src/pdns/pdns/lua-base4.cc:137,1
    - Dst: getZoneRepresentation
      Src: /src/pdns/pdns/lua-base4.cc:137,1
    - Dst: string
      Src: /src/pdns/pdns/lua-base4.cc:138,1
    - Dst: getZoneRepresentation
      Src: /src/pdns/pdns/lua-base4.cc:138,1
    - Dst: DNSName
      Src: /src/pdns/pdns/lua-base4.cc:139,1
    - Dst: DNSName
      Src: /src/pdns/pdns/lua-base4.cc:140,1
    - Dst: string
      Src: /src/pdns/pdns/lua-base4.cc:141,1
    - Dst: time_t
      Src: /src/pdns/pdns/lua-base4.cc:142,1
    - Dst: qtype::getCode
      Src: /src/pdns/pdns/lua-base4.cc:146,1
    - Dst: ntohs
      Src: /src/pdns/pdns/lua-base4.cc:155,1
    - Dst: isMappedIPv4
      Src: /src/pdns/pdns/lua-base4.cc:156,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/lua-base4.cc:157,1
    - Dst: mapToIPv4
      Src: /src/pdns/pdns/lua-base4.cc:157,1
    - Dst: truncate
      Src: /src/pdns/pdns/lua-base4.cc:158,1
    - Dst: string
      Src: /src/pdns/pdns/lua-base4.cc:159,1
    - Dst: toString
      Src: /src/pdns/pdns/lua-base4.cc:159,1
    - Dst: string
      Src: /src/pdns/pdns/lua-base4.cc:160,1
    - Dst: toString
      Src: /src/pdns/pdns/lua-base4.cc:160,1
    - Dst: string
      Src: /src/pdns/pdns/lua-base4.cc:161,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/lua-base4.cc:161,1
    - Dst: string
      Src: /src/pdns/pdns/lua-base4.cc:162,1
    - Dst: toByteString
      Src: /src/pdns/pdns/lua-base4.cc:162,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/lua-base4.cc:164,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/lua-base4.cc:164,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/lua-base4.cc:165,1
    - Dst: size
      Src: /src/pdns/pdns/lua-base4.cc:166,1
    - Dst: memset
      Src: /src/pdns/pdns/lua-base4.cc:168,1
    - Dst: memcpy
      Src: /src/pdns/pdns/lua-base4.cc:170,1
    - Dst: c_str
      Src: /src/pdns/pdns/lua-base4.cc:170,1
    - Dst: size
      Src: /src/pdns/pdns/lua-base4.cc:170,1
    - Dst: htons
      Src: /src/pdns/pdns/lua-base4.cc:172,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/lua-base4.cc:174,1
    - Dst: size
      Src: /src/pdns/pdns/lua-base4.cc:176,1
    - Dst: memset
      Src: /src/pdns/pdns/lua-base4.cc:178,1
    - Dst: memcpy
      Src: /src/pdns/pdns/lua-base4.cc:180,1
    - Dst: c_str
      Src: /src/pdns/pdns/lua-base4.cc:180,1
    - Dst: size
      Src: /src/pdns/pdns/lua-base4.cc:180,1
    - Dst: htons
      Src: /src/pdns/pdns/lua-base4.cc:182,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/lua-base4.cc:184,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/lua-base4.cc:186,1
    - Dst: ComboAddress::addressOnlyEqual
      Src: /src/pdns/pdns/lua-base4.cc:189,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/lua-base4.cc:192,1
    - Dst: cas_t
      Src: /src/pdns/pdns/lua-base4.cc:192,1
    - Dst: boost::get<string>
      Src: /src/pdns/pdns/lua-base4.cc:197,1
    - Dst: insert
      Src: /src/pdns/pdns/lua-base4.cc:198,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/lua-base4.cc:198,1
    - Dst: boost::get<vector<pair<unsigned int, string> > >
      Src: /src/pdns/pdns/lua-base4.cc:200,1
    - Dst: insert
      Src: /src/pdns/pdns/lua-base4.cc:202,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/lua-base4.cc:202,1
    - Dst: insert
      Src: /src/pdns/pdns/lua-base4.cc:205,1
    - Dst: boost::get<ComboAddress>
      Src: /src/pdns/pdns/lua-base4.cc:205,1
    - Dst: SLOG
      Src: /src/pdns/pdns/lua-base4.cc:208,1
    - Dst: what
      Src: /src/pdns/pdns/lua-base4.cc:208,1
    - Dst: withName
      Src: /src/pdns/pdns/lua-base4.cc:209,1
    - Dst: what
      Src: /src/pdns/pdns/lua-base4.cc:209,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/lua-base4.cc:209,1
    - Dst: count
      Src: /src/pdns/pdns/lua-base4.cc:212,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/lua-base4.cc:215,1
    - Dst: QType::QType
      Src: /src/pdns/pdns/lua-base4.cc:215,1
    - Dst: registerFunction
      Src: /src/pdns/pdns/lua-base4.cc:216,1
    - Dst: registerFunction
      Src: /src/pdns/pdns/lua-base4.cc:217,1
    - Dst: registerToStringFunction
      Src: /src/pdns/pdns/lua-base4.cc:219,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/lua-base4.cc:222,1
    - Dst: Netmask
      Src: /src/pdns/pdns/lua-base4.cc:222,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/lua-base4.cc:223,1
    - Dst: getNetwork
      Src: /src/pdns/pdns/lua-base4.cc:223,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/lua-base4.cc:224,1
    - Dst: getMaskedNetwork
      Src: /src/pdns/pdns/lua-base4.cc:224,1
    - Dst: registerFunction
      Src: /src/pdns/pdns/lua-base4.cc:225,1
    - Dst: registerFunction
      Src: /src/pdns/pdns/lua-base4.cc:226,1
    - Dst: registerFunction
      Src: /src/pdns/pdns/lua-base4.cc:227,1
    - Dst: registerFunction
      Src: /src/pdns/pdns/lua-base4.cc:228,1
    - Dst: registerFunction
      Src: /src/pdns/pdns/lua-base4.cc:229,1
    - Dst: registerFunction
      Src: /src/pdns/pdns/lua-base4.cc:230,1
    - Dst: registerFunction
      Src: /src/pdns/pdns/lua-base4.cc:231,1
    - Dst: registerFunction
      Src: /src/pdns/pdns/lua-base4.cc:232,1
    - Dst: registerEqFunction
      Src: /src/pdns/pdns/lua-base4.cc:233,1
    - Dst: registerToStringFunction
      Src: /src/pdns/pdns/lua-base4.cc:234,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/lua-base4.cc:237,1
    - Dst: NetmaskGroup
      Src: /src/pdns/pdns/lua-base4.cc:238,1
    - Dst: auto::addMask
      Src: /src/pdns/pdns/lua-base4.cc:242,1
    - Dst: auto::addMask
      Src: /src/pdns/pdns/lua-base4.cc:249,1
    - Dst: auto::addMask
      Src: /src/pdns/pdns/lua-base4.cc:250,1
    - Dst: registerFunction
      Src: /src/pdns/pdns/lua-base4.cc:251,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/lua-base4.cc:254,1
    - Dst: QType::QType
      Src: /src/pdns/pdns/lua-base4.cc:254,1
    - Dst: DNSRecord
      Src: /src/pdns/pdns/lua-base4.cc:254,1
    - Dst: QType::getCode
      Src: /src/pdns/pdns/lua-base4.cc:254,1
    - Dst: auto::setContent
      Src: /src/pdns/pdns/lua-base4.cc:254,1
    - Dst: shared_ptr<DNSRecordContent>
      Src: /src/pdns/pdns/lua-base4.cc:254,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/lua-base4.cc:254,1
    - Dst: static_cast<DNSResourceRecord::Place>
      Src: /src/pdns/pdns/lua-base4.cc:254,1
    - Dst: registerMember
      Src: /src/pdns/pdns/lua-base4.cc:255,1
    - Dst: registerMember
      Src: /src/pdns/pdns/lua-base4.cc:256,1
    - Dst: registerMember
      Src: /src/pdns/pdns/lua-base4.cc:257,1
    - Dst: registerMember
      Src: /src/pdns/pdns/lua-base4.cc:258,1
    - Dst: string
      Src: /src/pdns/pdns/lua-base4.cc:259,1
    - Dst: auto::getContent
      Src: /src/pdns/pdns/lua-base4.cc:259,1
    - Dst: boost::optional<ComboAddress>
      Src: /src/pdns/pdns/lua-base4.cc:260,1
    - Dst: getRR
      Src: /src/pdns/pdns/lua-base4.cc:263,1
    - Dst: auto::getCA
      Src: /src/pdns/pdns/lua-base4.cc:264,1
    - Dst: getRR
      Src: /src/pdns/pdns/lua-base4.cc:265,1
    - Dst: auto::getCA
      Src: /src/pdns/pdns/lua-base4.cc:266,1
    - Dst: auto::setContent
      Src: /src/pdns/pdns/lua-base4.cc:269,1
    - Dst: shared_ptr<DNSRecordContent>
      Src: /src/pdns/pdns/lua-base4.cc:269,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/lua-base4.cc:269,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/lua-base4.cc:273,1
    - Dst: withName
      Src: /src/pdns/pdns/lua-base4.cc:275,1
    - Dst: auto::info
      Src: /src/pdns/pdns/lua-base4.cc:276,1
    - Dst: static_cast<Logr::Priority>
      Src: /src/pdns/pdns/lua-base4.cc:276,1
    - Dst: get_value_or
      Src: /src/pdns/pdns/lua-base4.cc:276,1
    - Dst: get_value_or
      Src: /src/pdns/pdns/lua-base4.cc:279,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/lua-base4.cc:283,1
    - Dst: withName
      Src: /src/pdns/pdns/lua-base4.cc:284,1
    - Dst: auto::withValues
      Src: /src/pdns/pdns/lua-base4.cc:287,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/lua-base4.cc:287,1
    - Dst: auto::info
      Src: /src/pdns/pdns/lua-base4.cc:290,1
    - Dst: static_cast<Logr::Priority>
      Src: /src/pdns/pdns/lua-base4.cc:290,1
    - Dst: get_value_or
      Src: /src/pdns/pdns/lua-base4.cc:290,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/lua-base4.cc:293,1
    - Dst: get_value_or
      Src: /src/pdns/pdns/lua-base4.cc:294,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/lua-base4.cc:298,1
    - Dst: dns_random
      Src: /src/pdns/pdns/lua-base4.cc:299,1
    - Dst: dns_random_uint32
      Src: /src/pdns/pdns/lua-base4.cc:299,1
    - Dst: push_back
      Src: /src/pdns/pdns/lua-base4.cc:317,1
    - Dst: push_back
      Src: /src/pdns/pdns/lua-base4.cc:319,1
    - Dst: push_back
      Src: /src/pdns/pdns/lua-base4.cc:326,1
    - Dst: push_back
      Src: /src/pdns/pdns/lua-base4.cc:338,1
    - Dst: registerMember
      Src: /src/pdns/pdns/lua-base4.cc:340,1
    - Dst: registerMember
      Src: /src/pdns/pdns/lua-base4.cc:341,1
    - Dst: postPrepareContext
      Src: /src/pdns/pdns/lua-base4.cc:343,1
    - Dst: writeVariable
      Src: /src/pdns/pdns/lua-base4.cc:346,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 311
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 347
      start: 82
    functionDepth: 1
    functionLinenumber: 82
    functionLinenumberEnd: 347
    functionName: BaseLua4::prepareContext
    functionSourceFile: /src/pdns/pdns/lua-base4.cc
    functionUses: 0
    functionsReached:
    - getZoneRepresentation
    - makeRelative
    - toString
    - wirelength
    - ntohs
    - withName
    - boost::optional<ComboAddress>
    - getMaskedNetwork
    - postPrepareContext
    - toStringNoDot
    - writeVariable
    - auto::withValues
    - auto::getContent
    - insert
    - dns_random_uint32
    - countLabels
    - NetmaskGroup
    - SLOG
    - auto::setContent
    - boost::get<string>
    - Logging::Loggable
    - auto::addMask
    - string
    - ComboAddress::addressOnlyEqual
    - mapToIPv4
    - size
    - memset
    - registerMember
    - boost::get<ComboAddress>
    - time_t
    - getNetwork
    - DNSRecordContent::make
    - c_str
    - static_cast<DNSResourceRecord::Place>
    - writeFunction
    - auto::getCA
    - static_cast<Logr::Priority>
    - htons
    - cas_t
    - DNSResourceRecord
    - Netmask
    - isPartOf
    - auto::info
    - canonCompare
    - push_back
    - registerFunction
    - registerEqFunction
    - DNSRecord
    - DNSName
    - chopOff
    - qtype::getCode
    - toByteString
    - boost::get<vector<pair<unsigned int, string> > >
    - truncate
    - shared_ptr<DNSRecordContent>
    - get_value_or
    - std::make_unique<LuaContext>
    - toStringWithPort
    - ComboAddress
    - memcpy
    - getRR
    - QType::QType
    - dns_random
    - isMappedIPv4
    - count
    - what
    - registerToStringFunction
    - BaseLua4::getFeatures
    - QType::getCode
    linkageType: ''
    returnType: void
    signature: void BaseLua4::prepareContext()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: executeCode
      Src: /src/pdns/pdns/lua-base4.cc:350,1
    - Dst: postLoad
      Src: /src/pdns/pdns/lua-base4.cc:353,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - stream
    - doPostLoad
    argTypes:
    - std::istream
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 355
      start: 349
    functionDepth: 0
    functionLinenumber: 349
    functionLinenumberEnd: 355
    functionName: BaseLua4::loadStream
    functionSourceFile: /src/pdns/pdns/lua-base4.cc
    functionUses: 2
    functionsReached:
    - postLoad
    - executeCode
    linkageType: ''
    returnType: void
    signature: void BaseLua4::loadStream(std::istream &stream, bool doPostLoad)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 357
      start: 357
    functionDepth: 0
    functionLinenumber: 357
    functionLinenumberEnd: 357
    functionName: BaseLua4::~BaseLua4()
    functionSourceFile: /src/pdns/pdns/lua-base4.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void BaseLua4::~BaseLua4()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 30
      start: 30
    functionDepth: 0
    functionLinenumber: 30
    functionLinenumberEnd: 30
    functionName: SensitiveData::SensitiveData
    functionSourceFile: /src/pdns/pdns/credentials.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void SensitiveData(const SensitiveData&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 31
      start: 31
    functionDepth: 0
    functionLinenumber: 31
    functionLinenumberEnd: 31
    functionName: SensitiveData::SensitiveData
    functionSourceFile: /src/pdns/pdns/credentials.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void SensitiveData(SensitiveData&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 32
      start: 32
    functionDepth: 0
    functionLinenumber: 32
    functionLinenumberEnd: 32
    functionName: '& operator=(const SensitiveData&)'
    functionSourceFile: /src/pdns/pdns/credentials.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: SensitiveData
    signature: SensitiveData & operator=(const SensitiveData&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 39
    functionDepth: 0
    functionLinenumber: 39
    functionLinenumberEnd: 42
    functionName: '& getString() const'
    functionSourceFile: /src/pdns/pdns/credentials.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string & getString() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 46
    functionName: '& getString()'
    functionSourceFile: /src/pdns/pdns/credentials.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string & getString()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 63
    functionDepth: 0
    functionLinenumber: 63
    functionLinenumberEnd: 63
    functionName: CredentialsHolder::CredentialsHolder
    functionSourceFile: /src/pdns/pdns/credentials.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void CredentialsHolder(CredentialsHolder&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 64
    functionDepth: 0
    functionLinenumber: 64
    functionLinenumberEnd: 64
    functionName: '& operator=(CredentialsHolder&&)'
    functionSourceFile: /src/pdns/pdns/credentials.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: CredentialsHolder
    signature: CredentialsHolder & operator=(CredentialsHolder&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 73
    functionDepth: 0
    functionLinenumber: 73
    functionLinenumberEnd: 73
    functionName: CredentialsHolder::CredentialsHolder
    functionSourceFile: /src/pdns/pdns/credentials.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void CredentialsHolder(const CredentialsHolder&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 74
    functionDepth: 0
    functionLinenumber: 74
    functionLinenumberEnd: 74
    functionName: '& operator=(const CredentialsHolder&)'
    functionSourceFile: /src/pdns/pdns/credentials.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: CredentialsHolder
    signature: CredentialsHolder & operator=(const CredentialsHolder&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 78
    functionDepth: 0
    functionLinenumber: 78
    functionLinenumberEnd: 81
    functionName: CredentialsHolder::wasHashed
    functionSourceFile: /src/pdns/pdns/credentials.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool wasHashed() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 83
    functionDepth: 0
    functionLinenumber: 83
    functionLinenumberEnd: 86
    functionName: CredentialsHolder::isHashed
    functionSourceFile: /src/pdns/pdns/credentials.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool isHashed() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 55
    functionDepth: 0
    functionLinenumber: 55
    functionLinenumberEnd: 55
    functionName: DynMessenger::DynMessenger
    functionSourceFile: /src/pdns/pdns/dynmessenger.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void DynMessenger(const DynMessenger&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 56
    functionDepth: 0
    functionLinenumber: 56
    functionLinenumberEnd: 56
    functionName: '& operator=(const DynMessenger&)'
    functionSourceFile: /src/pdns/pdns/dynmessenger.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: DynMessenger
    signature: DynMessenger & operator=(const DynMessenger&)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: get
      Src: /src/pdns/pdns/lua-auth4.cc:18,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 19
      start: 16
    functionDepth: 0
    functionLinenumber: 16
    functionLinenumberEnd: 19
    functionName: AuthLua4::getLua
    functionSourceFile: /src/pdns/pdns/lua-auth4.cc
    functionUses: 0
    functionsReached:
    - get
    linkageType: ''
    returnType: LuaContext
    signature: LuaContext * AuthLua4::getLua()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: writeFunction
      Src: /src/pdns/pdns/lua-auth4.cc:22,1
    - Dst: withName
      Src: /src/pdns/pdns/lua-auth4.cc:27,1
    - Dst: stubDoResolve
      Src: /src/pdns/pdns/lua-auth4.cc:29,1
    - Dst: DNSName
      Src: /src/pdns/pdns/lua-auth4.cc:29,1
    - Dst: DNSResourceRecord::fromWire
      Src: /src/pdns/pdns/lua-auth4.cc:32,1
    - Dst: registerFunction
      Src: /src/pdns/pdns/lua-auth4.cc:39,1
    - Dst: noparse
      Src: /src/pdns/pdns/lua-auth4.cc:39,1
    - Dst: registerFunction
      Src: /src/pdns/pdns/lua-auth4.cc:40,1
    - Dst: parse
      Src: /src/pdns/pdns/lua-auth4.cc:40,1
    - Dst: registerFunction
      Src: /src/pdns/pdns/lua-auth4.cc:41,1
    - Dst: getString
      Src: /src/pdns/pdns/lua-auth4.cc:41,1
    - Dst: registerFunction
      Src: /src/pdns/pdns/lua-auth4.cc:42,1
    - Dst: setRemote
      Src: /src/pdns/pdns/lua-auth4.cc:42,1
    - Dst: registerFunction
      Src: /src/pdns/pdns/lua-auth4.cc:43,1
    - Dst: getInnerRemote
      Src: /src/pdns/pdns/lua-auth4.cc:43,1
    - Dst: registerFunction
      Src: /src/pdns/pdns/lua-auth4.cc:44,1
    - Dst: getRealRemote
      Src: /src/pdns/pdns/lua-auth4.cc:44,1
    - Dst: registerFunction
      Src: /src/pdns/pdns/lua-auth4.cc:45,1
    - Dst: getLocal
      Src: /src/pdns/pdns/lua-auth4.cc:45,1
    - Dst: registerFunction
      Src: /src/pdns/pdns/lua-auth4.cc:46,1
    - Dst: getInnerRemote
      Src: /src/pdns/pdns/lua-auth4.cc:46,1
    - Dst: registerFunction
      Src: /src/pdns/pdns/lua-auth4.cc:47,1
    - Dst: std::tuple
      Src: /src/pdns/pdns/lua-auth4.cc:47,1
    - Dst: qdomain::toString
      Src: /src/pdns/pdns/lua-auth4.cc:47,1
    - Dst: static_cast<unsigned int>
      Src: /src/pdns/pdns/lua-auth4.cc:47,1
    - Dst: qtype::getCode
      Src: /src/pdns/pdns/lua-auth4.cc:47,1
    - Dst: registerFunction
      Src: /src/pdns/pdns/lua-auth4.cc:48,1
    - Dst: setA
      Src: /src/pdns/pdns/lua-auth4.cc:48,1
    - Dst: registerFunction
      Src: /src/pdns/pdns/lua-auth4.cc:49,1
    - Dst: setID
      Src: /src/pdns/pdns/lua-auth4.cc:49,1
    - Dst: static_cast<uint16_t>
      Src: /src/pdns/pdns/lua-auth4.cc:49,1
    - Dst: registerFunction
      Src: /src/pdns/pdns/lua-auth4.cc:50,1
    - Dst: setRA
      Src: /src/pdns/pdns/lua-auth4.cc:50,1
    - Dst: registerFunction
      Src: /src/pdns/pdns/lua-auth4.cc:51,1
    - Dst: setRD
      Src: /src/pdns/pdns/lua-auth4.cc:51,1
    - Dst: registerFunction
      Src: /src/pdns/pdns/lua-auth4.cc:52,1
    - Dst: setAnswer
      Src: /src/pdns/pdns/lua-auth4.cc:52,1
    - Dst: registerFunction
      Src: /src/pdns/pdns/lua-auth4.cc:53,1
    - Dst: setOpcode
      Src: /src/pdns/pdns/lua-auth4.cc:53,1
    - Dst: static_cast<uint16_t>
      Src: /src/pdns/pdns/lua-auth4.cc:53,1
    - Dst: registerFunction
      Src: /src/pdns/pdns/lua-auth4.cc:54,1
    - Dst: setRcode
      Src: /src/pdns/pdns/lua-auth4.cc:54,1
    - Dst: registerFunction
      Src: /src/pdns/pdns/lua-auth4.cc:55,1
    - Dst: clearRecords
      Src: /src/pdns/pdns/lua-auth4.cc:55,1
    - Dst: registerFunction
      Src: /src/pdns/pdns/lua-auth4.cc:56,1
    - Dst: addRecord
      Src: /src/pdns/pdns/lua-auth4.cc:56,1
    - Dst: std::move
      Src: /src/pdns/pdns/lua-auth4.cc:56,1
    - Dst: registerFunction
      Src: /src/pdns/pdns/lua-auth4.cc:57,1
    - Dst: std::get<1>
      Src: /src/pdns/pdns/lua-auth4.cc:57,1
    - Dst: addRecord
      Src: /src/pdns/pdns/lua-auth4.cc:57,1
    - Dst: std::move
      Src: /src/pdns/pdns/lua-auth4.cc:57,1
    - Dst: registerFunction
      Src: /src/pdns/pdns/lua-auth4.cc:58,1
    - Dst: QType::QType
      Src: /src/pdns/pdns/lua-auth4.cc:58,1
    - Dst: setQuestion
      Src: /src/pdns/pdns/lua-auth4.cc:58,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/lua-auth4.cc:58,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/lua-auth4.cc:58,1
    - Dst: QType::getCode
      Src: /src/pdns/pdns/lua-auth4.cc:58,1
    - Dst: registerFunction
      Src: /src/pdns/pdns/lua-auth4.cc:59,1
    - Dst: isEmpty
      Src: /src/pdns/pdns/lua-auth4.cc:59,1
    - Dst: registerFunction
      Src: /src/pdns/pdns/lua-auth4.cc:60,1
    - Dst: replyPacket
      Src: /src/pdns/pdns/lua-auth4.cc:60,1
    - Dst: registerFunction
      Src: /src/pdns/pdns/lua-auth4.cc:61,1
    - Dst: hasEDNSSubnet
      Src: /src/pdns/pdns/lua-auth4.cc:61,1
    - Dst: registerFunction
      Src: /src/pdns/pdns/lua-auth4.cc:62,1
    - Dst: hasEDNS
      Src: /src/pdns/pdns/lua-auth4.cc:62,1
    - Dst: registerFunction
      Src: /src/pdns/pdns/lua-auth4.cc:63,1
    - Dst: getEDNSVersion
      Src: /src/pdns/pdns/lua-auth4.cc:63,1
    - Dst: registerFunction
      Src: /src/pdns/pdns/lua-auth4.cc:64,1
    - Dst: setEDNSRcode
      Src: /src/pdns/pdns/lua-auth4.cc:64,1
    - Dst: static_cast<uint16_t>
      Src: /src/pdns/pdns/lua-auth4.cc:64,1
    - Dst: registerFunction
      Src: /src/pdns/pdns/lua-auth4.cc:65,1
    - Dst: getEDNSRCode
      Src: /src/pdns/pdns/lua-auth4.cc:65,1
    - Dst: registerFunction
      Src: /src/pdns/pdns/lua-auth4.cc:66,1
    - Dst: getTSIGKeyname
      Src: /src/pdns/pdns/lua-auth4.cc:66,1
    - Dst: registerFunction
      Src: /src/pdns/pdns/lua-auth4.cc:67,1
    - Dst: getRRS
      Src: /src/pdns/pdns/lua-auth4.cc:67,1
    - Dst: std::unordered_map::insert
      Src: /src/pdns/pdns/lua-auth4.cc:67,1
    - Dst: registerMember
      Src: /src/pdns/pdns/lua-auth4.cc:68,1
    - Dst: registerMember
      Src: /src/pdns/pdns/lua-auth4.cc:69,1
    - Dst: registerMember
      Src: /src/pdns/pdns/lua-auth4.cc:70,1
    - Dst: ZoneName
      Src: /src/pdns/pdns/lua-auth4.cc:70,1
    - Dst: registerMember
      Src: /src/pdns/pdns/lua-auth4.cc:72,1
    - Dst: registerMember
      Src: /src/pdns/pdns/lua-auth4.cc:73,1
    - Dst: qtype::toString
      Src: /src/pdns/pdns/lua-auth4.cc:73,1
    - Dst: DNSName
      Src: /src/pdns/pdns/lua-auth4.cc:78,1
    - Dst: DNSName
      Src: /src/pdns/pdns/lua-auth4.cc:79,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/lua-auth4.cc:81,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/lua-auth4.cc:82,1
    - Dst: Netmask
      Src: /src/pdns/pdns/lua-auth4.cc:83,1
    - Dst: DNSName
      Src: /src/pdns/pdns/lua-auth4.cc:84,1
    - Dst: std::string
      Src: /src/pdns/pdns/lua-auth4.cc:85,1
    - Dst: empty
      Src: /src/pdns/pdns/lua-auth4.cc:87,1
    - Dst: includePath
      Src: /src/pdns/pdns/lua-auth4.cc:88,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 158
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 21
    functionDepth: 1
    functionLinenumber: 21
    functionLinenumberEnd: 90
    functionName: AuthLua4::postPrepareContext
    functionSourceFile: /src/pdns/pdns/lua-auth4.cc
    functionUses: 0
    functionsReached:
    - noparse
    - hasEDNSSubnet
    - withName
    - getEDNSRCode
    - setA
    - setRemote
    - clearRecords
    - getEDNSVersion
    - setEDNSRcode
    - std::string
    - setAnswer
    - static_cast<int>
    - getRRS
    - replyPacket
    - getLocal
    - getTSIGKeyname
    - static_cast<uint16_t>
    - registerMember
    - addRecord
    - getInnerRemote
    - empty
    - setRcode
    - writeFunction
    - setQuestion
    - Netmask
    - includePath
    - DNSResourceRecord::fromWire
    - stubDoResolve
    - registerFunction
    - setOpcode
    - setRD
    - DNSName
    - static_cast<unsigned int>
    - qtype::getCode
    - std::tuple
    - ComboAddress
    - std::move
    - QType::QType
    - parse
    - qtype::toString
    - getRealRemote
    - std::get<1>
    - hasEDNS
    - QType::getCode
    - std::unordered_map::insert
    - qdomain::toString
    - ZoneName
    - getString
    - setID
    - isEmpty
    - setRA
    linkageType: ''
    returnType: void
    signature: void AuthLua4::postPrepareContext()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: readVariable
      Src: /src/pdns/pdns/lua-auth4.cc:93,1
    - Dst: readVariable
      Src: /src/pdns/pdns/lua-auth4.cc:94,1
    - Dst: readVariable
      Src: /src/pdns/pdns/lua-auth4.cc:95,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 92
    functionDepth: 0
    functionLinenumber: 92
    functionLinenumberEnd: 96
    functionName: AuthLua4::postLoad
    functionSourceFile: /src/pdns/pdns/lua-auth4.cc
    functionUses: 0
    functionsReached:
    - readVariable
    linkageType: ''
    returnType: void
    signature: void AuthLua4::postLoad()
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: d_axfr_filter
      Src: /src/pdns/pdns/lua-auth4.cc:103,1
    - Dst: push_back
      Src: /src/pdns/pdns/lua-auth4.cc:113,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/lua-auth4.cc:116,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/lua-auth4.cc:116,1
    - Dst: QType
      Src: /src/pdns/pdns/lua-auth4.cc:123,1
    - Dst: boost::get<unsigned int>
      Src: /src/pdns/pdns/lua-auth4.cc:123,1
    - Dst: at
      Src: /src/pdns/pdns/lua-auth4.cc:123,1
    - Dst: DNSName
      Src: /src/pdns/pdns/lua-auth4.cc:124,1
    - Dst: boost::get<std::string>
      Src: /src/pdns/pdns/lua-auth4.cc:124,1
    - Dst: at
      Src: /src/pdns/pdns/lua-auth4.cc:124,1
    - Dst: DNSResourceRecord::qname::makeUsLowerCase
      Src: /src/pdns/pdns/lua-auth4.cc:125,1
    - Dst: count
      Src: /src/pdns/pdns/lua-auth4.cc:126,1
    - Dst: boost::get<unsigned int>
      Src: /src/pdns/pdns/lua-auth4.cc:127,1
    - Dst: at
      Src: /src/pdns/pdns/lua-auth4.cc:127,1
    - Dst: DNSResourceRecord::setContent
      Src: /src/pdns/pdns/lua-auth4.cc:129,1
    - Dst: boost::get<std::string>
      Src: /src/pdns/pdns/lua-auth4.cc:129,1
    - Dst: at
      Src: /src/pdns/pdns/lua-auth4.cc:129,1
    - Dst: push_back
      Src: /src/pdns/pdns/lua-auth4.cc:131,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/lua-auth4.cc:135,1
    - Dst: std::string
      Src: /src/pdns/pdns/lua-auth4.cc:135,1
    - Dst: what
      Src: /src/pdns/pdns/lua-auth4.cc:135,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/lua-auth4.cc:138,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 29
    argCount: 4
    argNames:
    - ' remote'
    - ' zone'
    - ' in'
    - ' out'
    argTypes:
    - ComboAddress
    - DNSName
    - DNSResourceRecord
    - vector<DNSResourceRecord>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 142
      start: 98
    functionDepth: 0
    functionLinenumber: 98
    functionLinenumberEnd: 142
    functionName: AuthLua4::axfrfilter
    functionSourceFile: /src/pdns/pdns/lua-auth4.cc
    functionUses: 0
    functionsReached:
    - std::to_string
    - d_axfr_filter
    - push_back
    - PDNSException
    - QType
    - count
    - what
    - DNSName
    - boost::get<std::string>
    - DNSResourceRecord::qname::makeUsLowerCase
    - boost::get<unsigned int>
    - DNSResourceRecord::setContent
    - at
    - std::string
    linkageType: ''
    returnType: bool
    signature: bool AuthLua4::axfrfilter(const ComboAddress& remote, const DNSName&
      zone, const DNSResourceRecord& in, vector<DNSResourceRecord>& out)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: getCode
      Src: /src/pdns/pdns/lua-auth4.cc:151,1
    - Dst: getLocal
      Src: /src/pdns/pdns/lua-auth4.cc:153,1
    - Dst: getInnerRemote
      Src: /src/pdns/pdns/lua-auth4.cc:154,1
    - Dst: getRealRemote
      Src: /src/pdns/pdns/lua-auth4.cc:155,1
    - Dst: getTSIGKeyname
      Src: /src/pdns/pdns/lua-auth4.cc:156,1
    - Dst: d_update_policy
      Src: /src/pdns/pdns/lua-auth4.cc:159,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 4
    argNames:
    - qname
    - ' qtype'
    - zonename
    - ' packet'
    argTypes:
    - DNSName
    - QType
    - DNSName
    - DNSPacket
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 160
      start: 145
    functionDepth: 0
    functionLinenumber: 145
    functionLinenumberEnd: 160
    functionName: AuthLua4::updatePolicy
    functionSourceFile: /src/pdns/pdns/lua-auth4.cc
    functionUses: 0
    functionsReached:
    - getRealRemote
    - getLocal
    - d_update_policy
    - getTSIGKeyname
    - getInnerRemote
    - getCode
    linkageType: ''
    returnType: bool
    signature: bool AuthLua4::updatePolicy(const DNSName &qname, const QType& qtype,
      const DNSName &zonename, const DNSPacket& packet)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: replyPacket
      Src: /src/pdns/pdns/lua-auth4.cc:165,1
    - Dst: d_prequery
      Src: /src/pdns/pdns/lua-auth4.cc:166,1
    - Dst: auto::get
      Src: /src/pdns/pdns/lua-auth4.cc:166,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - ' q'
    argTypes:
    - DNSPacket
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 170
      start: 162
    functionDepth: 1
    functionLinenumber: 162
    functionLinenumberEnd: 170
    functionName: AuthLua4::prequery
    functionSourceFile: /src/pdns/pdns/lua-auth4.cc
    functionUses: 0
    functionsReached:
    - d_prequery
    - auto::get
    - replyPacket
    linkageType: ''
    returnType: std::unique_ptr<DNSPacket>
    signature: std::unique_ptr<DNSPacket> AuthLua4::prequery(const DNSPacket& q)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 172
      start: 172
    functionDepth: 0
    functionLinenumber: 172
    functionLinenumberEnd: 172
    functionName: AuthLua4::~AuthLua4()
    functionSourceFile: /src/pdns/pdns/lua-auth4.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void AuthLua4::~AuthLua4()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dns_cc.cc:37,1
    - Dst: RCode::to_s
      Src: /src/pdns/pdns/test-dns_cc.cc:37,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dns_cc.cc:38,1
    - Dst: RCode::to_short_s
      Src: /src/pdns/pdns/test-dns_cc.cc:38,1
    - Dst: RCode::to_s
      Src: /src/pdns/pdns/test-dns_cc.cc:41,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dns_cc.cc:42,1
    - Dst: auto::size
      Src: /src/pdns/pdns/test-dns_cc.cc:42,1
    - Dst: RCode::to_short_s
      Src: /src/pdns/pdns/test-dns_cc.cc:43,1
    - Dst: RCode::from_short
      Src: /src/pdns/pdns/test-dns_cc.cc:44,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dns_cc.cc:45,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dns_cc.cc:46,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dns_cc.cc:49,1
    - Dst: RCode::to_s
      Src: /src/pdns/pdns/test-dns_cc.cc:49,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dns_cc.cc:50,1
    - Dst: RCode::from_short
      Src: /src/pdns/pdns/test-dns_cc.cc:50,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 35
    functionDepth: 0
    functionLinenumber: 35
    functionLinenumberEnd: 51
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-dns_cc.cc
    functionUses: 0
    functionsReached:
    - RCode::from_short
    - BOOST_CHECK_EQUAL
    - RCode::to_s
    - RCode::to_short_s
    - BOOST_CHECK
    - auto::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_rcode)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ERCode::to_s
      Src: /src/pdns/pdns/test-dns_cc.cc:56,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dns_cc.cc:57,1
    - Dst: auto::size
      Src: /src/pdns/pdns/test-dns_cc.cc:57,1
    - Dst: ERCode::to_short_s
      Src: /src/pdns/pdns/test-dns_cc.cc:58,1
    - Dst: ERCode::from_short
      Src: /src/pdns/pdns/test-dns_cc.cc:59,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dns_cc.cc:60,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dns_cc.cc:61,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dns_cc.cc:64,1
    - Dst: ERCode::to_s
      Src: /src/pdns/pdns/test-dns_cc.cc:64,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 53
    functionDepth: 0
    functionLinenumber: 53
    functionLinenumberEnd: 65
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-dns_cc.cc
    functionUses: 0
    functionsReached:
    - ERCode::from_short
    - ERCode::to_s
    - BOOST_CHECK_EQUAL
    - ERCode::to_short_s
    - BOOST_CHECK
    - auto::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_ercode)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Opcode::to_s
      Src: /src/pdns/pdns/test-dns_cc.cc:70,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dns_cc.cc:71,1
    - Dst: auto::size
      Src: /src/pdns/pdns/test-dns_cc.cc:71,1
    - Dst: boost::to_lower
      Src: /src/pdns/pdns/test-dns_cc.cc:72,1
    - Dst: Opcode::from_lowercase_string
      Src: /src/pdns/pdns/test-dns_cc.cc:73,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dns_cc.cc:75,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dns_cc.cc:76,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dns_cc.cc:79,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dns_cc.cc:80,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dns_cc.cc:84,1
    - Dst: Opcode::to_s
      Src: /src/pdns/pdns/test-dns_cc.cc:84,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/test-dns_cc.cc:84,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dns_cc.cc:85,1
    - Dst: Opcode::from_lowercase_string
      Src: /src/pdns/pdns/test-dns_cc.cc:85,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 67
    functionDepth: 0
    functionLinenumber: 67
    functionLinenumberEnd: 86
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-dns_cc.cc
    functionUses: 0
    functionsReached:
    - Opcode::from_lowercase_string
    - std::to_string
    - BOOST_CHECK_EQUAL
    - Opcode::to_s
    - boost::to_lower
    - BOOST_CHECK
    - auto::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_opcode)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSResourceRecord::placeString
      Src: /src/pdns/pdns/test-dns_cc.cc:91,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dns_cc.cc:92,1
    - Dst: auto::size
      Src: /src/pdns/pdns/test-dns_cc.cc:92,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dns_cc.cc:95,1
    - Dst: DNSResourceRecord::placeString
      Src: /src/pdns/pdns/test-dns_cc.cc:95,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 88
    functionDepth: 0
    functionLinenumber: 88
    functionLinenumberEnd: 96
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-dns_cc.cc
    functionUses: 0
    functionsReached:
    - DNSResourceRecord::placeString
    - BOOST_CHECK
    - BOOST_CHECK_EQUAL
    - auto::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_resource_record_place)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: FDMultiplexer::getMultiplexerMap
      Src: /src/pdns/pdns/pollmplexer.cc:15,1
    - Dst: second
      Src: /src/pdns/pdns/pollmplexer.cc:17,1
    - Dst: std::min
      Src: /src/pdns/pdns/pollmplexer.cc:17,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - maxEventsHint
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 26
      start: 12
    functionDepth: 0
    functionLinenumber: 12
    functionLinenumberEnd: 26
    functionName: FDMultiplexer::getMultiplexerSilent
    functionSourceFile: /src/pdns/pdns/pollmplexer.cc
    functionUses: 0
    functionsReached:
    - FDMultiplexer::getMultiplexerMap
    - std::min
    - second
    linkageType: ''
    returnType: FDMultiplexer
    signature: FDMultiplexer * FDMultiplexer::getMultiplexerSilent(unsigned int maxEventsHint)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 32
      start: 31
    functionDepth: 0
    functionLinenumber: 31
    functionLinenumberEnd: 32
    functionName: PollFDMultiplexer::PollFDMultiplexer
    functionSourceFile: /src/pdns/pdns/pollmplexer.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void PollFDMultiplexer(unsigned int /* maxEventsHint */)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 40
    functionDepth: 0
    functionLinenumber: 40
    functionLinenumberEnd: 43
    functionName: PollFDMultiplexer::getName
    functionSourceFile: /src/pdns/pdns/pollmplexer.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: string
    signature: string getName() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PollFDMultiplexer::PollFDMultiplexer
      Src: /src/pdns/pdns/pollmplexer.cc:52,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - maxEventsHint
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 50
    functionDepth: 0
    functionLinenumber: 50
    functionLinenumberEnd: 53
    functionName: make
    functionSourceFile: /src/pdns/pdns/pollmplexer.cc
    functionUses: 1
    functionsReached:
    - PollFDMultiplexer::PollFDMultiplexer
    linkageType: ''
    returnType: FDMultiplexer
    signature: FDMultiplexer * make(unsigned int maxEventsHint)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: FDMultiplexer::getMultiplexerMap
      Src: /src/pdns/pdns/pollmplexer.cc:59,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 57
    functionDepth: 0
    functionLinenumber: 57
    functionLinenumberEnd: 60
    functionName: RegisterOurselves
    functionSourceFile: /src/pdns/pdns/pollmplexer.cc
    functionUses: 0
    functionsReached:
    - FDMultiplexer::getMultiplexerMap
    linkageType: ''
    returnType: void
    signature: void RegisterOurselves()
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/pollmplexer.cc:73,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - kind
    argTypes:
    - FDMultiplexer::EventKind
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 63
    functionDepth: 0
    functionLinenumber: 63
    functionLinenumberEnd: 74
    functionName: convertEventKind
    functionSourceFile: /src/pdns/pdns/pollmplexer.cc
    functionUses: 0
    functionsReached:
    - std::runtime_error
    linkageType: ''
    returnType: int
    signature: int convertEventKind(FDMultiplexer::EventKind kind)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: count
      Src: /src/pdns/pdns/pollmplexer.cc:78,1
    - Dst: at
      Src: /src/pdns/pdns/pollmplexer.cc:83,1
    - Dst: convertEventKind
      Src: /src/pdns/pdns/pollmplexer.cc:84,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - fd
    - kind
    argTypes:
    - int
    - FDMultiplexer::EventKind
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 76
    functionDepth: 0
    functionLinenumber: 76
    functionLinenumberEnd: 85
    functionName: PollFDMultiplexer::addFD
    functionSourceFile: /src/pdns/pdns/pollmplexer.cc
    functionUses: 0
    functionsReached:
    - at
    - convertEventKind
    - count
    linkageType: ''
    returnType: void
    signature: void PollFDMultiplexer::addFD(int fd, FDMultiplexer::EventKind kind)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: erase
      Src: /src/pdns/pdns/pollmplexer.cc:89,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - fd
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 87
    functionDepth: 0
    functionLinenumber: 87
    functionLinenumberEnd: 90
    functionName: PollFDMultiplexer::removeFD
    functionSourceFile: /src/pdns/pdns/pollmplexer.cc
    functionUses: 0
    functionsReached:
    - erase
    linkageType: ''
    returnType: void
    signature: void PollFDMultiplexer::removeFD(int fd, FDMultiplexer::EventKind)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::vector::reserve
      Src: /src/pdns/pdns/pollmplexer.cc:95,1
    - Dst: size
      Src: /src/pdns/pdns/pollmplexer.cc:95,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/pollmplexer.cc:97,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 92
    functionDepth: 0
    functionLinenumber: 92
    functionLinenumberEnd: 101
    functionName: PollFDMultiplexer::preparePollFD
    functionSourceFile: /src/pdns/pdns/pollmplexer.cc
    functionUses: 0
    functionsReached:
    - std::vector::reserve
    - std::vector::push_back
    - size
    linkageType: ''
    returnType: vector<struct pollfd>
    signature: vector<struct pollfd> PollFDMultiplexer::preparePollFD() const
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: PollFDMultiplexer::preparePollFD
      Src: /src/pdns/pdns/pollmplexer.cc:105,1
    - Dst: auto::empty
      Src: /src/pdns/pdns/pollmplexer.cc:106,1
    - Dst: poll
      Src: /src/pdns/pdns/pollmplexer.cc:110,1
    - Dst: auto::size
      Src: /src/pdns/pdns/pollmplexer.cc:110,1
    - Dst: FDMultiplexerException
      Src: /src/pdns/pdns/pollmplexer.cc:113,1
    - Dst: stringerror
      Src: /src/pdns/pdns/pollmplexer.cc:113,1
    - Dst: push_back
      Src: /src/pdns/pdns/pollmplexer.cc:118,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 11
    argCount: 2
    argNames:
    - ' fds'
    - timeout
    argTypes:
    - std::vector<int>
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 103
    functionDepth: 0
    functionLinenumber: 103
    functionLinenumberEnd: 121
    functionName: PollFDMultiplexer::getAvailableFDs
    functionSourceFile: /src/pdns/pdns/pollmplexer.cc
    functionUses: 0
    functionsReached:
    - push_back
    - stringerror
    - PollFDMultiplexer::preparePollFD
    - poll
    - FDMultiplexerException
    - auto::size
    - auto::empty
    linkageType: ''
    returnType: void
    signature: void PollFDMultiplexer::getAvailableFDs(std::vector<int>& fds, int
      timeout)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: PollFDMultiplexer::preparePollFD
      Src: /src/pdns/pdns/pollmplexer.cc:127,1
    - Dst: auto::empty
      Src: /src/pdns/pdns/pollmplexer.cc:128,1
    - Dst: gettimeofday
      Src: /src/pdns/pdns/pollmplexer.cc:129,1
    - Dst: poll
      Src: /src/pdns/pdns/pollmplexer.cc:133,1
    - Dst: auto::size
      Src: /src/pdns/pdns/pollmplexer.cc:133,1
    - Dst: gettimeofday
      Src: /src/pdns/pdns/pollmplexer.cc:134,1
    - Dst: FDMultiplexerException
      Src: /src/pdns/pdns/pollmplexer.cc:137,1
    - Dst: stringerror
      Src: /src/pdns/pdns/pollmplexer.cc:137,1
    - Dst: find
      Src: /src/pdns/pdns/pollmplexer.cc:143,1
    - Dst: end
      Src: /src/pdns/pdns/pollmplexer.cc:144,1
    - Dst: d_callback
      Src: /src/pdns/pdns/pollmplexer.cc:145,1
    - Dst: find
      Src: /src/pdns/pdns/pollmplexer.cc:151,1
    - Dst: end
      Src: /src/pdns/pdns/pollmplexer.cc:152,1
    - Dst: d_callback
      Src: /src/pdns/pdns/pollmplexer.cc:153,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 23
    argCount: 2
    argNames:
    - now
    - timeout
    argTypes:
    - struct timeval*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 160
      start: 123
    functionDepth: 0
    functionLinenumber: 123
    functionLinenumberEnd: 160
    functionName: PollFDMultiplexer::run
    functionSourceFile: /src/pdns/pdns/pollmplexer.cc
    functionUses: 0
    functionsReached:
    - stringerror
    - end
    - PollFDMultiplexer::preparePollFD
    - d_callback
    - find
    - poll
    - gettimeofday
    - FDMultiplexerException
    - auto::size
    - auto::empty
    linkageType: ''
    returnType: int
    signature: int PollFDMultiplexer::run(struct timeval* now, int timeout)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: boost::any_cast<Socket*>
      Src: /src/pdns/pdns/pollmplexer.cc:167,1
    - Dst: Socket*::recvFrom
      Src: /src/pdns/pdns/pollmplexer.cc:170,1
    - Dst: string::size
      Src: /src/pdns/pdns/pollmplexer.cc:171,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - fd
    - ' parameter'
    argTypes:
    - int
    - boost::any
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 172
      start: 164
    functionDepth: 0
    functionLinenumber: 164
    functionLinenumberEnd: 172
    functionName: acceptData
    functionSourceFile: /src/pdns/pdns/pollmplexer.cc
    functionUses: 0
    functionsReached:
    - string::size
    - boost::any_cast<Socket*>
    - Socket*::recvFrom
    linkageType: ''
    returnType: void
    signature: void acceptData(int fd, boost::any& parameter)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Socket::bind
      Src: /src/pdns/pdns/pollmplexer.cc:180,1
    - Dst: PollFDMultiplexer::PollFDMultiplexer
      Src: /src/pdns/pdns/pollmplexer.cc:182,1
    - Dst: PollFDMultiplexer::addReadFD
      Src: /src/pdns/pdns/pollmplexer.cc:184,1
    - Dst: Socket::getHandle
      Src: /src/pdns/pdns/pollmplexer.cc:184,1
    - Dst: PollFDMultiplexer::run
      Src: /src/pdns/pdns/pollmplexer.cc:187,1
    - Dst: PollFDMultiplexer::removeReadFD
      Src: /src/pdns/pdns/pollmplexer.cc:189,1
    - Dst: Socket::getHandle
      Src: /src/pdns/pdns/pollmplexer.cc:189,1
    - Dst: PollFDMultiplexer::removeReadFD
      Src: /src/pdns/pdns/pollmplexer.cc:190,1
    - Dst: Socket::getHandle
      Src: /src/pdns/pdns/pollmplexer.cc:190,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 191
      start: 175
    functionDepth: 0
    functionLinenumber: 175
    functionLinenumberEnd: 191
    functionName: main
    functionSourceFile: /src/pdns/pdns/pollmplexer.cc
    functionUses: 9
    functionsReached:
    - PollFDMultiplexer::removeReadFD
    - Socket::getHandle
    - PollFDMultiplexer::addReadFD
    - PollFDMultiplexer::run
    - PollFDMultiplexer::PollFDMultiplexer
    - Socket::bind
    linkageType: ''
    returnType: int
    signature: int main()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ArgvMap::ArgvMap
      Src: /src/pdns/pdns/ixfrdist.cc:77,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 75
    functionDepth: 0
    functionLinenumber: 75
    functionLinenumberEnd: 79
    functionName: arg
    functionSourceFile: /src/pdns/pdns/ixfrdist.cc
    functionUses: 8
    functionsReached:
    - ArgvMap::ArgvMap
    linkageType: ''
    returnType: ArgvMap
    signature: ArgvMap &arg()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Node
      Src: /src/pdns/pdns/ixfrdist.cc:89,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/ixfrdist.cc:89,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 88
    functionDepth: 0
    functionLinenumber: 88
    functionLinenumberEnd: 90
    functionName: YAML::encode
    functionSourceFile: /src/pdns/pdns/ixfrdist.cc
    functionUses: 0
    functionsReached:
    - toStringWithPort
    - Node
    linkageType: ''
    returnType: Node
    signature: Node encode(const ComboAddress& rhs)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: IsScalar
      Src: /src/pdns/pdns/ixfrdist.cc:92,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/ixfrdist.cc:96,1
    - Dst: as
      Src: /src/pdns/pdns/ixfrdist.cc:96,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 2
    argNames:
    - ' node'
    - ' rhs'
    argTypes:
    - Node
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 91
    functionDepth: 0
    functionLinenumber: 91
    functionLinenumberEnd: 103
    functionName: YAML::decode
    functionSourceFile: /src/pdns/pdns/ixfrdist.cc
    functionUses: 0
    functionsReached:
    - IsScalar
    - as
    - ComboAddress
    linkageType: ''
    returnType: bool
    signature: bool decode(const Node& node, ComboAddress& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Node
      Src: /src/pdns/pdns/ixfrdist.cc:109,1
    - Dst: toStringRootDot
      Src: /src/pdns/pdns/ixfrdist.cc:109,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - ZoneName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 108
    functionDepth: 0
    functionLinenumber: 108
    functionLinenumberEnd: 110
    functionName: YAML::encode
    functionSourceFile: /src/pdns/pdns/ixfrdist.cc
    functionUses: 0
    functionsReached:
    - toStringRootDot
    - Node
    linkageType: ''
    returnType: Node
    signature: Node encode(const ZoneName& rhs)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: IsScalar
      Src: /src/pdns/pdns/ixfrdist.cc:112,1
    - Dst: ZoneName
      Src: /src/pdns/pdns/ixfrdist.cc:116,1
    - Dst: as
      Src: /src/pdns/pdns/ixfrdist.cc:116,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 2
    argNames:
    - ' node'
    - ' rhs'
    argTypes:
    - Node
    - ZoneName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 111
    functionDepth: 0
    functionLinenumber: 111
    functionLinenumberEnd: 123
    functionName: YAML::decode
    functionSourceFile: /src/pdns/pdns/ixfrdist.cc
    functionUses: 0
    functionsReached:
    - IsScalar
    - ZoneName
    - as
    linkageType: ''
    returnType: bool
    signature: bool decode(const Node& node, ZoneName& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Node
      Src: /src/pdns/pdns/ixfrdist.cc:129,1
    - Dst: toString
      Src: /src/pdns/pdns/ixfrdist.cc:129,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - Netmask
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 130
      start: 128
    functionDepth: 0
    functionLinenumber: 128
    functionLinenumberEnd: 130
    functionName: YAML::encode
    functionSourceFile: /src/pdns/pdns/ixfrdist.cc
    functionUses: 0
    functionsReached:
    - toString
    - Node
    linkageType: ''
    returnType: Node
    signature: Node encode(const Netmask& rhs)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: IsScalar
      Src: /src/pdns/pdns/ixfrdist.cc:132,1
    - Dst: Netmask
      Src: /src/pdns/pdns/ixfrdist.cc:136,1
    - Dst: as
      Src: /src/pdns/pdns/ixfrdist.cc:136,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 2
    argNames:
    - ' node'
    - ' rhs'
    argTypes:
    - Node
    - Netmask
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 143
      start: 131
    functionDepth: 0
    functionLinenumber: 131
    functionLinenumberEnd: 143
    functionName: YAML::decode
    functionSourceFile: /src/pdns/pdns/ixfrdist.cc
    functionUses: 0
    functionsReached:
    - IsScalar
    - Netmask
    - as
    linkageType: ''
    returnType: bool
    signature: bool decode(const Node& node, Netmask& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Node
      Src: /src/pdns/pdns/ixfrdist.cc:89,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/ixfrdist.cc:89,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 88
    functionDepth: 0
    functionLinenumber: 88
    functionLinenumberEnd: 90
    functionName: YAML::encode
    functionSourceFile: /src/pdns/pdns/ixfrdist.cc
    functionUses: 0
    functionsReached:
    - toStringWithPort
    - Node
    linkageType: ''
    returnType: Node
    signature: Node encode(const ComboAddress& rhs)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: IsScalar
      Src: /src/pdns/pdns/ixfrdist.cc:92,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/ixfrdist.cc:96,1
    - Dst: as
      Src: /src/pdns/pdns/ixfrdist.cc:96,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 2
    argNames:
    - ' node'
    - ' rhs'
    argTypes:
    - Node
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 91
    functionDepth: 0
    functionLinenumber: 91
    functionLinenumberEnd: 103
    functionName: YAML::decode
    functionSourceFile: /src/pdns/pdns/ixfrdist.cc
    functionUses: 0
    functionsReached:
    - IsScalar
    - as
    - ComboAddress
    linkageType: ''
    returnType: bool
    signature: bool decode(const Node& node, ComboAddress& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Node
      Src: /src/pdns/pdns/ixfrdist.cc:109,1
    - Dst: toStringRootDot
      Src: /src/pdns/pdns/ixfrdist.cc:109,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - ZoneName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 108
    functionDepth: 0
    functionLinenumber: 108
    functionLinenumberEnd: 110
    functionName: YAML::encode
    functionSourceFile: /src/pdns/pdns/ixfrdist.cc
    functionUses: 0
    functionsReached:
    - toStringRootDot
    - Node
    linkageType: ''
    returnType: Node
    signature: Node encode(const ZoneName& rhs)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: IsScalar
      Src: /src/pdns/pdns/ixfrdist.cc:112,1
    - Dst: ZoneName
      Src: /src/pdns/pdns/ixfrdist.cc:116,1
    - Dst: as
      Src: /src/pdns/pdns/ixfrdist.cc:116,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 2
    argNames:
    - ' node'
    - ' rhs'
    argTypes:
    - Node
    - ZoneName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 111
    functionDepth: 0
    functionLinenumber: 111
    functionLinenumberEnd: 123
    functionName: YAML::decode
    functionSourceFile: /src/pdns/pdns/ixfrdist.cc
    functionUses: 0
    functionsReached:
    - IsScalar
    - ZoneName
    - as
    linkageType: ''
    returnType: bool
    signature: bool decode(const Node& node, ZoneName& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Node
      Src: /src/pdns/pdns/ixfrdist.cc:129,1
    - Dst: toString
      Src: /src/pdns/pdns/ixfrdist.cc:129,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - Netmask
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 130
      start: 128
    functionDepth: 0
    functionLinenumber: 128
    functionLinenumberEnd: 130
    functionName: YAML::encode
    functionSourceFile: /src/pdns/pdns/ixfrdist.cc
    functionUses: 0
    functionsReached:
    - toString
    - Node
    linkageType: ''
    returnType: Node
    signature: Node encode(const Netmask& rhs)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: IsScalar
      Src: /src/pdns/pdns/ixfrdist.cc:132,1
    - Dst: Netmask
      Src: /src/pdns/pdns/ixfrdist.cc:136,1
    - Dst: as
      Src: /src/pdns/pdns/ixfrdist.cc:136,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 2
    argNames:
    - ' node'
    - ' rhs'
    argTypes:
    - Node
    - Netmask
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 143
      start: 131
    functionDepth: 0
    functionLinenumber: 131
    functionLinenumberEnd: 143
    functionName: YAML::decode
    functionSourceFile: /src/pdns/pdns/ixfrdist.cc
    functionUses: 0
    functionsReached:
    - IsScalar
    - Netmask
    - as
    linkageType: ''
    returnType: bool
    signature: bool decode(const Node& node, Netmask& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getStats
      Src: /src/pdns/pdns/ixfrdist.cc:200,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 201
      start: 199
    functionDepth: 0
    functionLinenumber: 199
    functionLinenumberEnd: 201
    functionName: doGetStats
    functionSourceFile: /src/pdns/pdns/ixfrdist.cc
    functionUses: 0
    functionsReached:
    - getStats
    linkageType: ''
    returnType: string
    signature: string doGetStats()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strsignal
      Src: /src/pdns/pdns/ixfrdist.cc:204,1
    - Dst: exit
      Src: /src/pdns/pdns/ixfrdist.cc:207,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - signum
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 211
      start: 203
    functionDepth: 0
    functionLinenumber: 203
    functionLinenumberEnd: 211
    functionName: handleSignal
    functionSourceFile: /src/pdns/pdns/ixfrdist.cc
    functionUses: 0
    functionsReached:
    - exit
    - strsignal
    linkageType: ''
    returnType: void
    signature: void handleSignal(int signum)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - desc
    argTypes:
    - po::options_description
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 216
      start: 213
    functionDepth: 0
    functionLinenumber: 213
    functionLinenumberEnd: 216
    functionName: usage
    functionSourceFile: /src/pdns/pdns/ixfrdist.cc
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void usage(po::options_description &desc)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: toString
      Src: /src/pdns/pdns/ixfrdist.cc:219,1
    - Dst: pdns::visit_directory
      Src: /src/pdns/pdns/ixfrdist.cc:221,1
    - Dst: pdns::checked_stoi<uint32_t>
      Src: /src/pdns/pdns/ixfrdist.cc:224,1
    - Dst: std::string
      Src: /src/pdns/pdns/ixfrdist.cc:224,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/ixfrdist.cc:225,1
    - Dst: vector::size
      Src: /src/pdns/pdns/ixfrdist.cc:237,1
    - Dst: vector::size
      Src: /src/pdns/pdns/ixfrdist.cc:238,1
    - Dst: vector::size
      Src: /src/pdns/pdns/ixfrdist.cc:242,1
    - Dst: std::sort
      Src: /src/pdns/pdns/ixfrdist.cc:245,1
    - Dst: vector::begin
      Src: /src/pdns/pdns/ixfrdist.cc:245,1
    - Dst: vector::end
      Src: /src/pdns/pdns/ixfrdist.cc:245,1
    - Dst: lock
      Src: /src/pdns/pdns/ixfrdist.cc:250,1
    - Dst: vector::cbegin
      Src: /src/pdns/pdns/ixfrdist.cc:251,1
    - Dst: vector::cend
      Src: /src/pdns/pdns/ixfrdist.cc:251,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/ixfrdist.cc:252,1
    - Dst: unlink
      Src: /src/pdns/pdns/ixfrdist.cc:254,1
    - Dst: string::c_str
      Src: /src/pdns/pdns/ixfrdist.cc:254,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 24
    argCount: 3
    argNames:
    - ' domain'
    - ' keep'
    - ' workdir'
    argTypes:
    - ZoneName
    - uint16_t
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 257
      start: 218
    functionDepth: 0
    functionLinenumber: 218
    functionLinenumberEnd: 257
    functionName: cleanUpDomain
    functionSourceFile: /src/pdns/pdns/ixfrdist.cc
    functionUses: 0
    functionsReached:
    - vector::begin
    - string::c_str
    - vector::push_back
    - toString
    - std::to_string
    - std::sort
    - pdns::visit_directory
    - vector::end
    - lock
    - unlink
    - vector::cend
    - vector::cbegin
    - pdns::checked_stoi<uint32_t>
    - std::string
    - vector::size
    linkageType: ''
    returnType: void
    signature: void cleanUpDomain(const ZoneName& domain, const uint16_t& keep, const
      string& workdir)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: getRR
      Src: /src/pdns/pdns/ixfrdist.cc:262,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/ixfrdist.cc:264,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/ixfrdist.cc:270,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 3
    argNames:
    - ' records'
    - ' soa'
    - ' soaTTL'
    argTypes:
    - records_t
    - shared_ptr<const SOARecordContent>
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 271
      start: 259
    functionDepth: 0
    functionLinenumber: 259
    functionLinenumberEnd: 271
    functionName: getSOAFromRecords
    functionSourceFile: /src/pdns/pdns/ixfrdist.cc
    functionUses: 0
    functionsReached:
    - PDNSException
    - getRR
    linkageType: ''
    returnType: void
    signature: void getSOAFromRecords(const records_t& records, shared_ptr<const SOARecordContent>&
      soa, uint32_t& soaTTL)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: set_difference
      Src: /src/pdns/pdns/ixfrdist.cc:274,1
    - Dst: cbegin
      Src: /src/pdns/pdns/ixfrdist.cc:274,1
    - Dst: cend
      Src: /src/pdns/pdns/ixfrdist.cc:274,1
    - Dst: cbegin
      Src: /src/pdns/pdns/ixfrdist.cc:274,1
    - Dst: cend
      Src: /src/pdns/pdns/ixfrdist.cc:274,1
    - Dst: back_inserter
      Src: /src/pdns/pdns/ixfrdist.cc:274,1
    - Dst: value_comp
      Src: /src/pdns/pdns/ixfrdist.cc:274,1
    - Dst: set_difference
      Src: /src/pdns/pdns/ixfrdist.cc:275,1
    - Dst: cbegin
      Src: /src/pdns/pdns/ixfrdist.cc:275,1
    - Dst: cend
      Src: /src/pdns/pdns/ixfrdist.cc:275,1
    - Dst: cbegin
      Src: /src/pdns/pdns/ixfrdist.cc:275,1
    - Dst: cend
      Src: /src/pdns/pdns/ixfrdist.cc:275,1
    - Dst: back_inserter
      Src: /src/pdns/pdns/ixfrdist.cc:275,1
    - Dst: value_comp
      Src: /src/pdns/pdns/ixfrdist.cc:275,1
    - Dst: getSOAFromRecords
      Src: /src/pdns/pdns/ixfrdist.cc:279,1
    - Dst: getSOAFromRecords
      Src: /src/pdns/pdns/ixfrdist.cc:284,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 3
    argNames:
    - ' from'
    - ' to'
    - ' diff'
    argTypes:
    - records_t
    - records_t
    - std::shared_ptr<ixfrdiff_t>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 286
      start: 273
    functionDepth: 1
    functionLinenumber: 273
    functionLinenumberEnd: 286
    functionName: makeIXFRDiff
    functionSourceFile: /src/pdns/pdns/ixfrdist.cc
    functionUses: 0
    functionsReached:
    - value_comp
    - set_difference
    - cbegin
    - cend
    - back_inserter
    - getSOAFromRecords
    linkageType: ''
    returnType: void
    signature: void makeIXFRDiff(const records_t& from, const records_t& to, std::shared_ptr<ixfrdiff_t>&
      diff, const shared_ptr<const SOARecordContent>& fromSOA = nullptr, uint32_t
      fromSOATTL=0, const shared_ptr<const SOARecordContent>& toSOA = nullptr, uint32_t
      toSOATTL = 0)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/ixfrdist.cc:291,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' domain'
    argTypes:
    - ZoneName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 292
      start: 289
    functionDepth: 0
    functionLinenumber: 289
    functionLinenumberEnd: 292
    functionName: getCurrentZoneInfo
    functionSourceFile: /src/pdns/pdns/ixfrdist.cc
    functionUses: 0
    functionsReached:
    - lock
    linkageType: ''
    returnType: std::shared_ptr<ixfrinfo_t>
    signature: std::shared_ptr<ixfrinfo_t> getCurrentZoneInfo(const ZoneName& domain)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/ixfrdist.cc:296,1
    - Dst: setSOASerial
      Src: /src/pdns/pdns/ixfrdist.cc:298,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ' domain'
    - ' newInfo'
    argTypes:
    - ZoneName
    - std::shared_ptr<ixfrinfo_t>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 300
      start: 294
    functionDepth: 0
    functionLinenumber: 294
    functionLinenumberEnd: 300
    functionName: updateCurrentZoneInfo
    functionSourceFile: /src/pdns/pdns/ixfrdist.cc
    functionUses: 0
    functionsReached:
    - setSOASerial
    - lock
    linkageType: ''
    returnType: void
    signature: void updateCurrentZoneInfo(const ZoneName& domain, std::shared_ptr<ixfrinfo_t>&
      newInfo)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/ixfrdist.cc:307,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/ixfrdist.cc:308,1
    - Dst: sendto
      Src: /src/pdns/pdns/ixfrdist.cc:311,1
    - Dst: std::vector::data
      Src: /src/pdns/pdns/ixfrdist.cc:311,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/ixfrdist.cc:311,1
    - Dst: reinterpret_cast<const struct sockaddr*>
      Src: /src/pdns/pdns/ixfrdist.cc:311,1
    - Dst: getSocklen
      Src: /src/pdns/pdns/ixfrdist.cc:311,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/ixfrdist.cc:312,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/ixfrdist.cc:312,1
    - Dst: stringerror
      Src: /src/pdns/pdns/ixfrdist.cc:312,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 4
    argNames:
    - sock
    - ' domain'
    - ' remote'
    - notificationId
    argTypes:
    - int
    - ZoneName
    - ComboAddress
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 314
      start: 302
    functionDepth: 1
    functionLinenumber: 302
    functionLinenumberEnd: 314
    functionName: sendNotification
    functionSourceFile: /src/pdns/pdns/ixfrdist.cc
    functionUses: 0
    functionsReached:
    - std::vector::size
    - std::runtime_error
    - stringerror
    - toStringWithPort
    - DNSPacketWriter::getHeader
    - reinterpret_cast<const struct sockaddr*>
    - sendto
    - getSocklen
    - std::vector::data
    linkageType: ''
    returnType: void
    signature: void sendNotification(int sock, const ZoneName& domain, const ComboAddress&
      remote, uint16_t notificationId)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: std::set::insert
      Src: /src/pdns/pdns/ixfrdist.cc:320,1
    - Dst: waitForMultiData
      Src: /src/pdns/pdns/ixfrdist.cc:327,1
    - Dst: recvfrom
      Src: /src/pdns/pdns/ixfrdist.cc:330,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/ixfrdist.cc:330,1
    - Dst: std::array::size
      Src: /src/pdns/pdns/ixfrdist.cc:330,1
    - Dst: reinterpret_cast<struct sockaddr*>
      Src: /src/pdns/pdns/ixfrdist.cc:330,1
    - Dst: DNSPacket::setRemote
      Src: /src/pdns/pdns/ixfrdist.cc:335,1
    - Dst: DNSPacket::parse
      Src: /src/pdns/pdns/ixfrdist.cc:337,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/ixfrdist.cc:337,1
    - Dst: DNSPacket::getRemote
      Src: /src/pdns/pdns/ixfrdist.cc:338,1
    - Dst: ComboAddress::toStringWithPort
      Src: /src/pdns/pdns/ixfrdist.cc:343,1
    - Dst: RCode::to_s
      Src: /src/pdns/pdns/ixfrdist.cc:343,1
    - Dst: lock
      Src: /src/pdns/pdns/ixfrdist.cc:346,1
    - Dst: ZoneName
      Src: /src/pdns/pdns/ixfrdist.cc:346,1
    - Dst: ComboAddress::toStringWithPort
      Src: /src/pdns/pdns/ixfrdist.cc:347,1
    - Dst: RCode::to_s
      Src: /src/pdns/pdns/ixfrdist.cc:347,1
    - Dst: ComboAddress::toStringWithPort
      Src: /src/pdns/pdns/ixfrdist.cc:350,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 22
    argCount: 2
    argNames:
    - sock4
    - sock6
    argTypes:
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 353
      start: 316
    functionDepth: 1
    functionLinenumber: 316
    functionLinenumberEnd: 353
    functionName: communicatorReceiveNotificationAnswers
    functionSourceFile: /src/pdns/pdns/ixfrdist.cc
    functionUses: 0
    functionsReached:
    - waitForMultiData
    - ComboAddress::toStringWithPort
    - recvfrom
    - lock
    - DNSPacket::parse
    - std::set::insert
    - DNSPacket::setRemote
    - RCode::to_s
    - DNSPacket::getRemote
    - ZoneName
    - std::array::data
    - std::array::size
    - reinterpret_cast<struct sockaddr*>
    linkageType: ''
    returnType: void
    signature: void communicatorReceiveNotificationAnswers(const int sock4, const
      int sock6)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ZoneName::ZoneName
      Src: /src/pdns/pdns/ixfrdist.cc:357,1
    - Dst: lock
      Src: /src/pdns/pdns/ixfrdist.cc:362,1
    - Dst: sendNotification
      Src: /src/pdns/pdns/ixfrdist.cc:366,1
    - Dst: sendNotification
      Src: /src/pdns/pdns/ixfrdist.cc:368,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 2
    argNames:
    - sock4
    - sock6
    argTypes:
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 376
      start: 355
    functionDepth: 2
    functionLinenumber: 355
    functionLinenumberEnd: 376
    functionName: communicatorSendNotifications
    functionSourceFile: /src/pdns/pdns/ixfrdist.cc
    functionUses: 0
    functionsReached:
    - ZoneName::ZoneName
    - sendNotification
    - lock
    linkageType: ''
    returnType: void
    signature: void communicatorSendNotifications(const int sock4, const int sock6)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: setThreadName
      Src: /src/pdns/pdns/ixfrdist.cc:380,1
    - Dst: makeQuerySocket
      Src: /src/pdns/pdns/ixfrdist.cc:381,1
    - Dst: pdns::getQueryLocalAddress
      Src: /src/pdns/pdns/ixfrdist.cc:381,1
    - Dst: makeQuerySocket
      Src: /src/pdns/pdns/ixfrdist.cc:382,1
    - Dst: pdns::getQueryLocalAddress
      Src: /src/pdns/pdns/ixfrdist.cc:382,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/ixfrdist.cc:385,1
    - Dst: communicatorReceiveNotificationAnswers
      Src: /src/pdns/pdns/ixfrdist.cc:394,1
    - Dst: communicatorSendNotifications
      Src: /src/pdns/pdns/ixfrdist.cc:395,1
    - Dst: std::this_thread::sleep_for
      Src: /src/pdns/pdns/ixfrdist.cc:396,1
    - Dst: std::chrono::seconds
      Src: /src/pdns/pdns/ixfrdist.cc:396,1
    - Dst: closesocket
      Src: /src/pdns/pdns/ixfrdist.cc:399,1
    - Dst: closesocket
      Src: /src/pdns/pdns/ixfrdist.cc:402,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 20
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 404
      start: 378
    functionDepth: 3
    functionLinenumber: 378
    functionLinenumberEnd: 404
    functionName: communicatorThread
    functionSourceFile: /src/pdns/pdns/ixfrdist.cc
    functionUses: 0
    functionsReached:
    - communicatorReceiveNotificationAnswers
    - std::this_thread::sleep_for
    - pdns::getQueryLocalAddress
    - makeQuerySocket
    - std::runtime_error
    - std::chrono::seconds
    - closesocket
    - communicatorSendNotifications
    - setThreadName
    linkageType: ''
    returnType: void
    signature: void communicatorThread()
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: setThreadName
      Src: /src/pdns/pdns/ixfrdist.cc:407,1
    - Dst: ZoneName::toString
      Src: /src/pdns/pdns/ixfrdist.cc:414,1
    - Dst: getSerialFromDir
      Src: /src/pdns/pdns/ixfrdist.cc:417,1
    - Dst: ZoneName::toString
      Src: /src/pdns/pdns/ixfrdist.cc:421,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/ixfrdist.cc:421,1
    - Dst: loadSOAFromDisk
      Src: /src/pdns/pdns/ixfrdist.cc:422,1
    - Dst: unlink
      Src: /src/pdns/pdns/ixfrdist.cc:426,1
    - Dst: string::c_str
      Src: /src/pdns/pdns/ixfrdist.cc:426,1
    - Dst: loadZoneFromDisk
      Src: /src/pdns/pdns/ixfrdist.cc:428,1
    - Dst: std::make_shared<ixfrinfo_t>
      Src: /src/pdns/pdns/ixfrdist.cc:429,1
    - Dst: std::move
      Src: /src/pdns/pdns/ixfrdist.cc:430,1
    - Dst: updateCurrentZoneInfo
      Src: /src/pdns/pdns/ixfrdist.cc:433,1
    - Dst: cleanUpDomain
      Src: /src/pdns/pdns/ixfrdist.cc:438,1
    - Dst: what
      Src: /src/pdns/pdns/ixfrdist.cc:442,1
    - Dst: mkdir
      Src: /src/pdns/pdns/ixfrdist.cc:444,1
    - Dst: string::c_str
      Src: /src/pdns/pdns/ixfrdist.cc:444,1
    - Dst: stringerror
      Src: /src/pdns/pdns/ixfrdist.cc:445,1
    - Dst: _exit
      Src: /src/pdns/pdns/ixfrdist.cc:446,1
    - Dst: time
      Src: /src/pdns/pdns/ixfrdist.cc:458,1
    - Dst: getCurrentZoneInfo
      Src: /src/pdns/pdns/ixfrdist.cc:467,1
    - Dst: std::min
      Src: /src/pdns/pdns/ixfrdist.cc:479,1
    - Dst: lock
      Src: /src/pdns/pdns/ixfrdist.cc:484,1
    - Dst: second::primaries::begin
      Src: /src/pdns/pdns/ixfrdist.cc:489,1
    - Dst: std::advance
      Src: /src/pdns/pdns/ixfrdist.cc:490,1
    - Dst: dns_random
      Src: /src/pdns/pdns/ixfrdist.cc:490,1
    - Dst: second::primaries::size
      Src: /src/pdns/pdns/ixfrdist.cc:490,1
    - Dst: ZoneName::toString
      Src: /src/pdns/pdns/ixfrdist.cc:493,1
    - Dst: ComboAddress::toStringWithPort
      Src: /src/pdns/pdns/ixfrdist.cc:494,1
    - Dst: incrementSOAChecks
      Src: /src/pdns/pdns/ixfrdist.cc:498,1
    - Dst: getSerialFromPrimary
      Src: /src/pdns/pdns/ixfrdist.cc:499,1
    - Dst: ComboAddress::toStringWithPort
      Src: /src/pdns/pdns/ixfrdist.cc:501,1
    - Dst: ComboAddress::toStringWithPort
      Src: /src/pdns/pdns/ixfrdist.cc:509,1
    - Dst: what
      Src: /src/pdns/pdns/ixfrdist.cc:509,1
    - Dst: incrementSOAChecksFailed
      Src: /src/pdns/pdns/ixfrdist.cc:510,1
    - Dst: ComboAddress::isIPv4
      Src: /src/pdns/pdns/ixfrdist.cc:515,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/ixfrdist.cc:515,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/ixfrdist.cc:515,1
    - Dst: time
      Src: /src/pdns/pdns/ixfrdist.cc:527,1
    - Dst: time
      Src: /src/pdns/pdns/ixfrdist.cc:528,1
    - Dst: AXFRRetriever::getChunk
      Src: /src/pdns/pdns/ixfrdist.cc:529,1
    - Dst: d_name::isPartOf
      Src: /src/pdns/pdns/ixfrdist.cc:533,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/ixfrdist.cc:534,1
    - Dst: ZoneName::toLogString
      Src: /src/pdns/pdns/ixfrdist.cc:534,1
    - Dst: d_name::makeUsRelative
      Src: /src/pdns/pdns/ixfrdist.cc:536,1
    - Dst: records_t::insert
      Src: /src/pdns/pdns/ixfrdist.cc:537,1
    - Dst: getRR
      Src: /src/pdns/pdns/ixfrdist.cc:540,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/ixfrdist.cc:545,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/ixfrdist.cc:545,1
    - Dst: time
      Src: /src/pdns/pdns/ixfrdist.cc:547,1
    - Dst: incrementAXFRFailures
      Src: /src/pdns/pdns/ixfrdist.cc:549,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/ixfrdist.cc:550,1
    - Dst: incrementAXFRFailures
      Src: /src/pdns/pdns/ixfrdist.cc:554,1
    - Dst: incrementAXFRFailures
      Src: /src/pdns/pdns/ixfrdist.cc:560,1
    - Dst: incrementAXFRFailures
      Src: /src/pdns/pdns/ixfrdist.cc:564,1
    - Dst: what
      Src: /src/pdns/pdns/ixfrdist.cc:565,1
    - Dst: writeZoneToDisk
      Src: /src/pdns/pdns/ixfrdist.cc:571,1
    - Dst: getCurrentZoneInfo
      Src: /src/pdns/pdns/ixfrdist.cc:574,1
    - Dst: std::make_shared<ixfrinfo_t>
      Src: /src/pdns/pdns/ixfrdist.cc:575,1
    - Dst: auto::latestAXFR::empty
      Src: /src/pdns/pdns/ixfrdist.cc:577,1
    - Dst: std::make_shared<ixfrdiff_t>
      Src: /src/pdns/pdns/ixfrdist.cc:578,1
    - Dst: makeIXFRDiff
      Src: /src/pdns/pdns/ixfrdist.cc:581,1
    - Dst: auto::removals::size
      Src: /src/pdns/pdns/ixfrdist.cc:582,1
    - Dst: auto::additions::size
      Src: /src/pdns/pdns/ixfrdist.cc:582,1
    - Dst: auto::ixfrDiffs::push_back
      Src: /src/pdns/pdns/ixfrdist.cc:583,1
    - Dst: std::move
      Src: /src/pdns/pdns/ixfrdist.cc:583,1
    - Dst: auto::ixfrDiffs::size
      Src: /src/pdns/pdns/ixfrdist.cc:587,1
    - Dst: auto::ixfrDiffs::erase
      Src: /src/pdns/pdns/ixfrdist.cc:588,1
    - Dst: auto::ixfrDiffs::begin
      Src: /src/pdns/pdns/ixfrdist.cc:588,1
    - Dst: auto::latestAXFR::size
      Src: /src/pdns/pdns/ixfrdist.cc:591,1
    - Dst: records_t::size
      Src: /src/pdns/pdns/ixfrdist.cc:591,1
    - Dst: std::move
      Src: /src/pdns/pdns/ixfrdist.cc:592,1
    - Dst: std::move
      Src: /src/pdns/pdns/ixfrdist.cc:593,1
    - Dst: updateCurrentZoneInfo
      Src: /src/pdns/pdns/ixfrdist.cc:595,1
    - Dst: incrementAXFRFailures
      Src: /src/pdns/pdns/ixfrdist.cc:597,1
    - Dst: incrementAXFRFailures
      Src: /src/pdns/pdns/ixfrdist.cc:600,1
    - Dst: what
      Src: /src/pdns/pdns/ixfrdist.cc:601,1
    - Dst: cleanUpDomain
      Src: /src/pdns/pdns/ixfrdist.cc:605,1
    - Dst: sleep
      Src: /src/pdns/pdns/ixfrdist.cc:607,1
    CyclomaticComplexity: 44
    EdgeCount: 44
    ICount: 136
    argCount: 5
    argNames:
    - ' workdir'
    - ' keep'
    - ' axfrTimeout'
    - ' soaRetry'
    - axfrMaxRecords
    argTypes:
    - string
    - uint16_t
    - uint16_t
    - uint16_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 609
      start: 406
    functionDepth: 2
    functionLinenumber: 406
    functionLinenumberEnd: 609
    functionName: updateThread
    functionSourceFile: /src/pdns/pdns/ixfrdist.cc
    functionUses: 0
    functionsReached:
    - auto::ixfrDiffs::size
    - std::to_string
    - cleanUpDomain
    - PDNSException
    - stringerror
    - mkdir
    - records_t::insert
    - records_t::size
    - auto::ixfrDiffs::erase
    - auto::ixfrDiffs::begin
    - std::make_shared<ixfrinfo_t>
    - auto::latestAXFR::size
    - auto::removals::size
    - ComboAddress::isIPv4
    - time
    - getSerialFromPrimary
    - lock
    - getCurrentZoneInfo
    - second::primaries::size
    - ZoneName::toLogString
    - makeIXFRDiff
    - d_name::isPartOf
    - setThreadName
    - string::c_str
    - incrementSOAChecksFailed
    - ZoneName::toString
    - _exit
    - incrementAXFRFailures
    - second::primaries::begin
    - sleep
    - updateCurrentZoneInfo
    - getSerialFromDir
    - std::advance
    - d_name::makeUsRelative
    - ComboAddress::toStringWithPort
    - ComboAddress
    - std::make_shared<ixfrdiff_t>
    - std::move
    - getRR
    - writeZoneToDisk
    - dns_random
    - AXFRRetriever::getChunk
    - what
    - std::min
    - auto::latestAXFR::empty
    - loadZoneFromDisk
    - loadSOAFromDisk
    - unlink
    - auto::additions::size
    - auto::ixfrDiffs::push_back
    - incrementSOAChecks
    linkageType: ''
    returnType: void
    signature: void updateThread(const string& workdir, const uint16_t& keep, const
      uint16_t& axfrTimeout, const uint16_t& soaRetry, const uint32_t axfrMaxRecords)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: QType
      Src: /src/pdns/pdns/ixfrdist.cc:624,1
    - Dst: Opcode::to_s
      Src: /src/pdns/pdns/ixfrdist.cc:624,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/ixfrdist.cc:624,1
    - Dst: find
      Src: /src/pdns/pdns/ixfrdist.cc:627,1
    - Dst: end
      Src: /src/pdns/pdns/ixfrdist.cc:628,1
    - Dst: d_qname::toLogString
      Src: /src/pdns/pdns/ixfrdist.cc:629,1
    - Dst: ComboAddress::addressOnlyEqual
      Src: /src/pdns/pdns/ixfrdist.cc:638,1
    - Dst: lock
      Src: /src/pdns/pdns/ixfrdist.cc:645,1
    - Dst: auto::second::notify::empty
      Src: /src/pdns/pdns/ixfrdist.cc:647,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/ixfrdist.cc:649,1
    - Dst: lock
      Src: /src/pdns/pdns/ixfrdist.cc:650,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 24
    argCount: 2
    argNames:
    - ' mdp'
    - ' saddr'
    argTypes:
    - MOADNSParser
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 657
      start: 619
    functionDepth: 0
    functionLinenumber: 619
    functionLinenumberEnd: 657
    functionName: maybeHandleNotify
    functionSourceFile: /src/pdns/pdns/ixfrdist.cc
    functionUses: 0
    functionsReached:
    - auto::second::notify::empty
    - d_qname::toLogString
    - QType
    - end
    - ComboAddress::addressOnlyEqual
    - lock
    - Opcode::to_s
    - toStringWithPort
    - find
    linkageType: ''
    returnType: ResponseType
    signature: ResponseType maybeHandleNotify(const MOADNSParser& mdp, const ComboAddress&
      saddr, const string& logPrefix="")
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: QType
      Src: /src/pdns/pdns/ixfrdist.cc:664,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/ixfrdist.cc:664,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/ixfrdist.cc:667,1
    - Dst: Opcode::to_s
      Src: /src/pdns/pdns/ixfrdist.cc:667,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/ixfrdist.cc:672,1
    - Dst: QType
      Src: /src/pdns/pdns/ixfrdist.cc:672,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/ixfrdist.cc:677,1
    - Dst: QType
      Src: /src/pdns/pdns/ixfrdist.cc:677,1
    - Dst: find
      Src: /src/pdns/pdns/ixfrdist.cc:683,1
    - Dst: end
      Src: /src/pdns/pdns/ixfrdist.cc:683,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/ixfrdist.cc:684,1
    - Dst: d_qname::toLogString
      Src: /src/pdns/pdns/ixfrdist.cc:684,1
    - Dst: getCurrentZoneInfo
      Src: /src/pdns/pdns/ixfrdist.cc:688,1
    - Dst: vector::emplace_back
      Src: /src/pdns/pdns/ixfrdist.cc:690,1
    - Dst: vector::empty
      Src: /src/pdns/pdns/ixfrdist.cc:697,1
    - Dst: QType
      Src: /src/pdns/pdns/ixfrdist.cc:698,1
    - Dst: Opcode::to_s
      Src: /src/pdns/pdns/ixfrdist.cc:698,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/ixfrdist.cc:698,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 37
    argCount: 2
    argNames:
    - ' mdp'
    - ' saddr'
    argTypes:
    - MOADNSParser
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 713
      start: 659
    functionDepth: 1
    functionLinenumber: 659
    functionLinenumberEnd: 713
    functionName: checkQuery
    functionSourceFile: /src/pdns/pdns/ixfrdist.cc
    functionUses: 0
    functionsReached:
    - vector::push_back
    - d_qname::toLogString
    - QType
    - end
    - Opcode::to_s
    - vector::empty
    - getCurrentZoneInfo
    - vector::emplace_back
    - toStringWithPort
    - find
    linkageType: ''
    returnType: ResponseType
    signature: ResponseType checkQuery(const MOADNSParser& mdp, const ComboAddress&
      saddr, const bool udp = true, const string& logPrefix="")
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/ixfrdist.cc:721,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/ixfrdist.cc:722,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/ixfrdist.cc:723,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/ixfrdist.cc:724,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/ixfrdist.cc:725,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/ixfrdist.cc:727,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 2
    argNames:
    - ' mdp'
    - ' packet'
    argTypes:
    - MOADNSParser
    - vector<uint8_t>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 730
      start: 719
    functionDepth: 1
    functionLinenumber: 719
    functionLinenumberEnd: 730
    functionName: makeEmptyNoErrorPacket
    functionSourceFile: /src/pdns/pdns/ixfrdist.cc
    functionUses: 0
    functionsReached:
    - DNSPacketWriter::commit
    - DNSPacketWriter::getHeader
    linkageType: ''
    returnType: bool
    signature: bool makeEmptyNoErrorPacket(const MOADNSParser& mdp, vector<uint8_t>&
      packet)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: getCurrentZoneInfo
      Src: /src/pdns/pdns/ixfrdist.cc:738,1
    - Dst: ZoneName
      Src: /src/pdns/pdns/ixfrdist.cc:738,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/ixfrdist.cc:744,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/ixfrdist.cc:745,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/ixfrdist.cc:746,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/ixfrdist.cc:747,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/ixfrdist.cc:748,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/ixfrdist.cc:750,1
    - Dst: auto::soa::toPacket
      Src: /src/pdns/pdns/ixfrdist.cc:751,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/ixfrdist.cc:752,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 2
    argNames:
    - ' mdp'
    - ' packet'
    argTypes:
    - MOADNSParser
    - vector<uint8_t>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 755
      start: 736
    functionDepth: 1
    functionLinenumber: 736
    functionLinenumberEnd: 755
    functionName: makeSOAPacket
    functionSourceFile: /src/pdns/pdns/ixfrdist.cc
    functionUses: 0
    functionsReached:
    - auto::soa::toPacket
    - DNSPacketWriter::commit
    - DNSPacketWriter::getHeader
    - getCurrentZoneInfo
    - ZoneName
    - DNSPacketWriter::startRecord
    linkageType: ''
    returnType: bool
    signature: bool makeSOAPacket(const MOADNSParser& mdp, vector<uint8_t>& packet)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/ixfrdist.cc:763,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/ixfrdist.cc:764,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/ixfrdist.cc:765,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/ixfrdist.cc:766,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/ixfrdist.cc:767,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - ' mdp'
    - ' packet'
    argTypes:
    - MOADNSParser
    - vector<uint8_t>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 770
      start: 761
    functionDepth: 1
    functionLinenumber: 761
    functionLinenumberEnd: 770
    functionName: makeRefusedPacket
    functionSourceFile: /src/pdns/pdns/ixfrdist.cc
    functionUses: 0
    functionsReached:
    - DNSPacketWriter::getHeader
    linkageType: ''
    returnType: bool
    signature: bool makeRefusedPacket(const MOADNSParser& mdp, vector<uint8_t>& packet)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/ixfrdist.cc:778,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/ixfrdist.cc:779,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/ixfrdist.cc:780,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/ixfrdist.cc:781,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/ixfrdist.cc:782,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - ' mdp'
    - ' packet'
    argTypes:
    - MOADNSParser
    - vector<uint8_t>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 785
      start: 776
    functionDepth: 1
    functionLinenumber: 776
    functionLinenumberEnd: 785
    functionName: makeNotimpPacket
    functionSourceFile: /src/pdns/pdns/ixfrdist.cc
    functionUses: 0
    functionsReached:
    - DNSPacketWriter::getHeader
    linkageType: ''
    returnType: bool
    signature: bool makeNotimpPacket(const MOADNSParser& mdp, vector<uint8_t>& packet)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/ixfrdist.cc:790,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/ixfrdist.cc:791,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/ixfrdist.cc:792,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/ixfrdist.cc:795,1
    - Dst: toPacket
      Src: /src/pdns/pdns/ixfrdist.cc:796,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/ixfrdist.cc:797,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 3
    argNames:
    - ' mdp'
    - ' soa'
    - soaTTL
    argTypes:
    - MOADNSParser
    - shared_ptr<const SOARecordContent>
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 799
      start: 787
    functionDepth: 1
    functionLinenumber: 787
    functionLinenumberEnd: 799
    functionName: getSOAPacket
    functionSourceFile: /src/pdns/pdns/ixfrdist.cc
    functionUses: 0
    functionsReached:
    - DNSPacketWriter::commit
    - toPacket
    - DNSPacketWriter::startRecord
    - DNSPacketWriter::getHeader
    linkageType: ''
    returnType: vector<uint8_t>
    signature: vector<uint8_t> getSOAPacket(const MOADNSParser& mdp, const shared_ptr<const
      SOARecordContent>& soa, uint32_t soaTTL)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/ixfrdist.cc:804,1
    - Dst: size
      Src: /src/pdns/pdns/ixfrdist.cc:805,1
    - Dst: writen2
      Src: /src/pdns/pdns/ixfrdist.cc:807,1
    - Dst: writen2
      Src: /src/pdns/pdns/ixfrdist.cc:808,1
    - Dst: size
      Src: /src/pdns/pdns/ixfrdist.cc:808,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - fd
    - ' packet'
    argTypes:
    - int
    - std::vector<uint8_t>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 810
      start: 801
    functionDepth: 0
    functionLinenumber: 801
    functionLinenumberEnd: 810
    functionName: sendPacketOverTCP
    functionSourceFile: /src/pdns/pdns/ixfrdist.cc
    functionUses: 0
    functionsReached:
    - writen2
    - size
    linkageType: ''
    returnType: bool
    signature: bool sendPacketOverTCP(int fd, const std::vector<uint8_t>& packet)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: startRecord
      Src: /src/pdns/pdns/ixfrdist.cc:814,1
    - Dst: getContent
      Src: /src/pdns/pdns/ixfrdist.cc:815,1
    - Dst: size
      Src: /src/pdns/pdns/ixfrdist.cc:816,1
    - Dst: rollback
      Src: /src/pdns/pdns/ixfrdist.cc:817,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 4
    argNames:
    - ' pw'
    - ' zoneName'
    - ' record'
    - compress
    argTypes:
    - DNSPacketWriter
    - DNSName
    - DNSRecord
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 821
      start: 812
    functionDepth: 0
    functionLinenumber: 812
    functionLinenumberEnd: 821
    functionName: addRecordToWriter
    functionSourceFile: /src/pdns/pdns/ixfrdist.cc
    functionUses: 0
    functionsReached:
    - rollback
    - startRecord
    - size
    - getContent
    linkageType: ''
    returnType: bool
    signature: bool addRecordToWriter(DNSPacketWriter& pw, const DNSName& zoneName,
      const DNSRecord& record, bool compress)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: cbegin
      Src: /src/pdns/pdns/ixfrdist.cc:827,1
    - Dst: cend
      Src: /src/pdns/pdns/ixfrdist.cc:827,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/ixfrdist.cc:829,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/ixfrdist.cc:831,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/ixfrdist.cc:832,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/ixfrdist.cc:833,1
    - Dst: cend
      Src: /src/pdns/pdns/ixfrdist.cc:835,1
    - Dst: addRecordToWriter
      Src: /src/pdns/pdns/ixfrdist.cc:841,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/ixfrdist.cc:847,1
    - Dst: sendPacketOverTCP
      Src: /src/pdns/pdns/ixfrdist.cc:848,1
    - Dst: cbegin
      Src: /src/pdns/pdns/ixfrdist.cc:850,1
    - Dst: cend
      Src: /src/pdns/pdns/ixfrdist.cc:859,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/ixfrdist.cc:860,1
    - Dst: sendPacketOverTCP
      Src: /src/pdns/pdns/ixfrdist.cc:861,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 31
    argCount: 3
    argNames:
    - fd
    - ' mdp'
    - ' records'
    argTypes:
    - int
    - MOADNSParser
    - T
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 866
      start: 823
    functionDepth: 1
    functionLinenumber: 823
    functionLinenumberEnd: 866
    functionName: sendRecordsOverTCP
    functionSourceFile: /src/pdns/pdns/ixfrdist.cc
    functionUses: 0
    functionsReached:
    - addRecordToWriter
    - DNSPacketWriter::commit
    - DNSPacketWriter::getHeader
    - cbegin
    - cend
    - sendPacketOverTCP
    - vector::clear
    linkageType: ''
    returnType: bool
    signature: bool sendRecordsOverTCP(int fd, const MOADNSParser& mdp, const T& records)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: incrementAXFRinQueries
      Src: /src/pdns/pdns/ixfrdist.cc:876,1
    - Dst: getCurrentZoneInfo
      Src: /src/pdns/pdns/ixfrdist.cc:878,1
    - Dst: getSOAPacket
      Src: /src/pdns/pdns/ixfrdist.cc:888,1
    - Dst: sendPacketOverTCP
      Src: /src/pdns/pdns/ixfrdist.cc:889,1
    - Dst: sendRecordsOverTCP
      Src: /src/pdns/pdns/ixfrdist.cc:893,1
    - Dst: sendPacketOverTCP
      Src: /src/pdns/pdns/ixfrdist.cc:898,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 2
    argNames:
    - fd
    - ' mdp'
    argTypes:
    - int
    - MOADNSParser
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 903
      start: 869
    functionDepth: 2
    functionLinenumber: 869
    functionLinenumberEnd: 903
    functionName: handleAXFR
    functionSourceFile: /src/pdns/pdns/ixfrdist.cc
    functionUses: 0
    functionsReached:
    - incrementAXFRinQueries
    - sendRecordsOverTCP
    - getCurrentZoneInfo
    - sendPacketOverTCP
    - getSOAPacket
    linkageType: ''
    returnType: bool
    signature: bool handleAXFR(int fd, const MOADNSParser& mdp)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: incrementIXFRinQueries
      Src: /src/pdns/pdns/ixfrdist.cc:917,1
    - Dst: getCurrentZoneInfo
      Src: /src/pdns/pdns/ixfrdist.cc:919,1
    - Dst: rfc1982LessThanOrEqual
      Src: /src/pdns/pdns/ixfrdist.cc:926,1
    - Dst: makeSOAPacket
      Src: /src/pdns/pdns/ixfrdist.cc:933,1
    - Dst: sendPacketOverTCP
      Src: /src/pdns/pdns/ixfrdist.cc:935,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/ixfrdist.cc:945,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/ixfrdist.cc:949,1
    - Dst: vector::empty
      Src: /src/pdns/pdns/ixfrdist.cc:955,1
    - Dst: handleAXFR
      Src: /src/pdns/pdns/ixfrdist.cc:958,1
    - Dst: getSOAPacket
      Src: /src/pdns/pdns/ixfrdist.cc:980,1
    - Dst: sendPacketOverTCP
      Src: /src/pdns/pdns/ixfrdist.cc:981,1
    - Dst: getSOAPacket
      Src: /src/pdns/pdns/ixfrdist.cc:986,1
    - Dst: getSOAPacket
      Src: /src/pdns/pdns/ixfrdist.cc:987,1
    - Dst: sendPacketOverTCP
      Src: /src/pdns/pdns/ixfrdist.cc:989,1
    - Dst: sendRecordsOverTCP
      Src: /src/pdns/pdns/ixfrdist.cc:993,1
    - Dst: sendPacketOverTCP
      Src: /src/pdns/pdns/ixfrdist.cc:997,1
    - Dst: sendRecordsOverTCP
      Src: /src/pdns/pdns/ixfrdist.cc:1001,1
    - Dst: sendPacketOverTCP
      Src: /src/pdns/pdns/ixfrdist.cc:1006,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 44
    argCount: 3
    argNames:
    - fd
    - ' mdp'
    - ' clientSOA'
    argTypes:
    - int
    - MOADNSParser
    - shared_ptr<const SOARecordContent>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1011
      start: 908
    functionDepth: 3
    functionLinenumber: 908
    functionLinenumberEnd: 1011
    functionName: handleIXFR
    functionSourceFile: /src/pdns/pdns/ixfrdist.cc
    functionUses: 0
    functionsReached:
    - incrementIXFRinQueries
    - vector::push_back
    - sendRecordsOverTCP
    - rfc1982LessThanOrEqual
    - handleAXFR
    - vector::empty
    - makeSOAPacket
    - getCurrentZoneInfo
    - sendPacketOverTCP
    - getSOAPacket
    linkageType: ''
    returnType: bool
    signature: bool handleIXFR(int fd, const MOADNSParser& mdp, const shared_ptr<const
      SOARecordContent>& clientSOA)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: match
      Src: /src/pdns/pdns/ixfrdist.cc:1015,1
    - Dst: match
      Src: /src/pdns/pdns/ixfrdist.cc:1018,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ' addr'
    argTypes:
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1019
      start: 1013
    functionDepth: 0
    functionLinenumber: 1013
    functionLinenumberEnd: 1019
    functionName: allowedByACL
    functionSourceFile: /src/pdns/pdns/ixfrdist.cc
    functionUses: 0
    functionsReached:
    - match
    linkageType: ''
    returnType: bool
    signature: bool allowedByACL(const ComboAddress& addr, bool forNotify = false)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: recvfrom
      Src: /src/pdns/pdns/ixfrdist.cc:1028,1
    - Dst: ComboAddress::toStringWithPort
      Src: /src/pdns/pdns/ixfrdist.cc:1031,1
    - Dst: ComboAddress::toStringWithPort
      Src: /src/pdns/pdns/ixfrdist.cc:1037,1
    - Dst: strerror
      Src: /src/pdns/pdns/ixfrdist.cc:1037,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/ixfrdist.cc:1041,1
    - Dst: allowedByACL
      Src: /src/pdns/pdns/ixfrdist.cc:1046,1
    - Dst: allowedByACL
      Src: /src/pdns/pdns/ixfrdist.cc:1046,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/ixfrdist.cc:1047,1
    - Dst: string
      Src: /src/pdns/pdns/ixfrdist.cc:1051,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/ixfrdist.cc:1051,1
    - Dst: allowedByACL
      Src: /src/pdns/pdns/ixfrdist.cc:1056,1
    - Dst: maybeHandleNotify
      Src: /src/pdns/pdns/ixfrdist.cc:1057,1
    - Dst: allowedByACL
      Src: /src/pdns/pdns/ixfrdist.cc:1059,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/ixfrdist.cc:1060,1
    - Dst: checkQuery
      Src: /src/pdns/pdns/ixfrdist.cc:1066,1
    - Dst: incrementSOAinQueries
      Src: /src/pdns/pdns/ixfrdist.cc:1080,1
    - Dst: ZoneName
      Src: /src/pdns/pdns/ixfrdist.cc:1080,1
    - Dst: makeSOAPacket
      Src: /src/pdns/pdns/ixfrdist.cc:1081,1
    - Dst: makeEmptyNoErrorPacket
      Src: /src/pdns/pdns/ixfrdist.cc:1083,1
    - Dst: incrementUnknownDomainInQueries
      Src: /src/pdns/pdns/ixfrdist.cc:1085,1
    - Dst: ZoneName
      Src: /src/pdns/pdns/ixfrdist.cc:1085,1
    - Dst: makeRefusedPacket
      Src: /src/pdns/pdns/ixfrdist.cc:1086,1
    - Dst: incrementNotImplemented
      Src: /src/pdns/pdns/ixfrdist.cc:1088,1
    - Dst: makeNotimpPacket
      Src: /src/pdns/pdns/ixfrdist.cc:1089,1
    - Dst: sendto
      Src: /src/pdns/pdns/ixfrdist.cc:1092,1
    - Dst: vector::size
      Src: /src/pdns/pdns/ixfrdist.cc:1092,1
    - Dst: QType
      Src: /src/pdns/pdns/ixfrdist.cc:1094,1
    - Dst: ComboAddress::toStringWithPort
      Src: /src/pdns/pdns/ixfrdist.cc:1094,1
    - Dst: strerror
      Src: /src/pdns/pdns/ixfrdist.cc:1094,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 49
    argCount: 1
    argNames:
    - fd
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1100
      start: 1021
    functionDepth: 2
    functionLinenumber: 1021
    functionLinenumberEnd: 1100
    functionName: handleUDPRequest
    functionSourceFile: /src/pdns/pdns/ixfrdist.cc
    functionUses: 0
    functionsReached:
    - maybeHandleNotify
    - makeRefusedPacket
    - incrementNotImplemented
    - static_cast<size_t>
    - QType
    - recvfrom
    - string
    - makeSOAPacket
    - makeEmptyNoErrorPacket
    - incrementUnknownDomainInQueries
    - strerror
    - incrementSOAinQueries
    - allowedByACL
    - ComboAddress::toStringWithPort
    - ComboAddress
    - checkQuery
    - makeNotimpPacket
    - ComboAddress::toString
    - sendto
    - ZoneName
    - vector::size
    linkageType: ''
    returnType: void
    signature: void handleUDPRequest(int fd, boost::any& /*unused*/)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: SAccept
      Src: /src/pdns/pdns/ixfrdist.cc:1108,1
    - Dst: setBlocking
      Src: /src/pdns/pdns/ixfrdist.cc:1109,1
    - Dst: what
      Src: /src/pdns/pdns/ixfrdist.cc:1111,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/ixfrdist.cc:1115,1
    - Dst: close
      Src: /src/pdns/pdns/ixfrdist.cc:1117,1
    - Dst: allowedByACL
      Src: /src/pdns/pdns/ixfrdist.cc:1123,1
    - Dst: allowedByACL
      Src: /src/pdns/pdns/ixfrdist.cc:1123,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/ixfrdist.cc:1124,1
    - Dst: close
      Src: /src/pdns/pdns/ixfrdist.cc:1125,1
    - Dst: std::scoped_lock
      Src: /src/pdns/pdns/ixfrdist.cc:1130,1
    - Dst: push
      Src: /src/pdns/pdns/ixfrdist.cc:1131,1
    - Dst: notify_one
      Src: /src/pdns/pdns/ixfrdist.cc:1133,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 21
    argCount: 1
    argNames:
    - fd
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1134
      start: 1103
    functionDepth: 1
    functionLinenumber: 1103
    functionLinenumberEnd: 1134
    functionName: handleTCPRequest
    functionSourceFile: /src/pdns/pdns/ixfrdist.cc
    functionUses: 0
    functionsReached:
    - push
    - what
    - setBlocking
    - SAccept
    - allowedByACL
    - notify_one
    - ComboAddress::toString
    - std::scoped_lock
    - close
    - ComboAddress
    linkageType: ''
    returnType: void
    signature: void handleTCPRequest(int fd, boost::any&)
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: setThreadName
      Src: /src/pdns/pdns/ixfrdist.cc:1139,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/ixfrdist.cc:1140,1
    - Dst: wait
      Src: /src/pdns/pdns/ixfrdist.cc:1145,1
    - Dst: size
      Src: /src/pdns/pdns/ixfrdist.cc:1145,1
    - Dst: front
      Src: /src/pdns/pdns/ixfrdist.cc:1151,1
    - Dst: pop
      Src: /src/pdns/pdns/ixfrdist.cc:1152,1
    - Dst: std::unique_lock::unlock
      Src: /src/pdns/pdns/ixfrdist.cc:1153,1
    - Dst: readn2
      Src: /src/pdns/pdns/ixfrdist.cc:1162,1
    - Dst: std::min
      Src: /src/pdns/pdns/ixfrdist.cc:1163,1
    - Dst: ntohs
      Src: /src/pdns/pdns/ixfrdist.cc:1163,1
    - Dst: static_cast<uint16_t>
      Src: /src/pdns/pdns/ixfrdist.cc:1163,1
    - Dst: readn2WithTimeout
      Src: /src/pdns/pdns/ixfrdist.cc:1164,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/ixfrdist.cc:1165,1
    - Dst: ComboAddress::toStringWithPort
      Src: /src/pdns/pdns/ixfrdist.cc:1165,1
    - Dst: ComboAddress::toStringWithPort
      Src: /src/pdns/pdns/ixfrdist.cc:1167,1
    - Dst: what
      Src: /src/pdns/pdns/ixfrdist.cc:1167,1
    - Dst: close
      Src: /src/pdns/pdns/ixfrdist.cc:1168,1
    - Dst: string
      Src: /src/pdns/pdns/ixfrdist.cc:1173,1
    - Dst: allowedByACL
      Src: /src/pdns/pdns/ixfrdist.cc:1178,1
    - Dst: maybeHandleNotify
      Src: /src/pdns/pdns/ixfrdist.cc:1179,1
    - Dst: allowedByACL
      Src: /src/pdns/pdns/ixfrdist.cc:1181,1
    - Dst: close
      Src: /src/pdns/pdns/ixfrdist.cc:1182,1
    - Dst: checkQuery
      Src: /src/pdns/pdns/ixfrdist.cc:1187,1
    - Dst: close
      Src: /src/pdns/pdns/ixfrdist.cc:1191,1
    - Dst: makeEmptyNoErrorPacket
      Src: /src/pdns/pdns/ixfrdist.cc:1198,1
    - Dst: close
      Src: /src/pdns/pdns/ixfrdist.cc:1200,1
    - Dst: sendPacketOverTCP
      Src: /src/pdns/pdns/ixfrdist.cc:1203,1
    - Dst: makeSOAPacket
      Src: /src/pdns/pdns/ixfrdist.cc:1206,1
    - Dst: close
      Src: /src/pdns/pdns/ixfrdist.cc:1208,1
    - Dst: sendPacketOverTCP
      Src: /src/pdns/pdns/ixfrdist.cc:1211,1
    - Dst: handleAXFR
      Src: /src/pdns/pdns/ixfrdist.cc:1214,1
    - Dst: close
      Src: /src/pdns/pdns/ixfrdist.cc:1215,1
    - Dst: getRR
      Src: /src/pdns/pdns/ixfrdist.cc:1230,1
    - Dst: close
      Src: /src/pdns/pdns/ixfrdist.cc:1239,1
    - Dst: handleIXFR
      Src: /src/pdns/pdns/ixfrdist.cc:1243,1
    - Dst: close
      Src: /src/pdns/pdns/ixfrdist.cc:1244,1
    - Dst: shutdown
      Src: /src/pdns/pdns/ixfrdist.cc:1249,1
    - Dst: ComboAddress::toStringWithPort
      Src: /src/pdns/pdns/ixfrdist.cc:1251,1
    - Dst: what
      Src: /src/pdns/pdns/ixfrdist.cc:1251,1
    - Dst: ComboAddress::toStringWithPort
      Src: /src/pdns/pdns/ixfrdist.cc:1253,1
    - Dst: what
      Src: /src/pdns/pdns/ixfrdist.cc:1253,1
    - Dst: close
      Src: /src/pdns/pdns/ixfrdist.cc:1256,1
    CyclomaticComplexity: 35
    EdgeCount: 35
    ICount: 88
    argCount: 1
    argNames:
    - tid
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1262
      start: 1138
    functionDepth: 4
    functionLinenumber: 1138
    functionLinenumberEnd: 1262
    functionName: tcpWorker
    functionSourceFile: /src/pdns/pdns/ixfrdist.cc
    functionUses: 0
    functionsReached:
    - maybeHandleNotify
    - std::to_string
    - std::unique_lock::unlock
    - ntohs
    - handleAXFR
    - shutdown
    - front
    - string
    - size
    - makeEmptyNoErrorPacket
    - static_cast<uint16_t>
    - makeSOAPacket
    - handleIXFR
    - setThreadName
    - readn2WithTimeout
    - allowedByACL
    - pop
    - ComboAddress::toStringWithPort
    - wait
    - getRR
    - checkQuery
    - std::min
    - what
    - sendPacketOverTCP
    - readn2
    - close
    linkageType: ''
    returnType: void
    signature: void tcpWorker(int tid)
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: YAML::LoadFile
      Src: /src/pdns/pdns/ixfrdist.cc:1271,1
    - Dst: what
      Src: /src/pdns/pdns/ixfrdist.cc:1273,1
    - Dst: as
      Src: /src/pdns/pdns/ixfrdist.cc:1281,1
    - Dst: what
      Src: /src/pdns/pdns/ixfrdist.cc:1283,1
    - Dst: as
      Src: /src/pdns/pdns/ixfrdist.cc:1292,1
    - Dst: what
      Src: /src/pdns/pdns/ixfrdist.cc:1294,1
    - Dst: as
      Src: /src/pdns/pdns/ixfrdist.cc:1302,1
    - Dst: what
      Src: /src/pdns/pdns/ixfrdist.cc:1304,1
    - Dst: as
      Src: /src/pdns/pdns/ixfrdist.cc:1312,1
    - Dst: what
      Src: /src/pdns/pdns/ixfrdist.cc:1314,1
    - Dst: as
      Src: /src/pdns/pdns/ixfrdist.cc:1322,1
    - Dst: what
      Src: /src/pdns/pdns/ixfrdist.cc:1324,1
    - Dst: as
      Src: /src/pdns/pdns/ixfrdist.cc:1332,1
    - Dst: what
      Src: /src/pdns/pdns/ixfrdist.cc:1334,1
    - Dst: push_back
      Src: /src/pdns/pdns/ixfrdist.cc:1338,1
    - Dst: push_back
      Src: /src/pdns/pdns/ixfrdist.cc:1339,1
    - Dst: as
      Src: /src/pdns/pdns/ixfrdist.cc:1344,1
    - Dst: what
      Src: /src/pdns/pdns/ixfrdist.cc:1346,1
    - Dst: push_back
      Src: /src/pdns/pdns/ixfrdist.cc:1350,1
    - Dst: push_back
      Src: /src/pdns/pdns/ixfrdist.cc:1351,1
    - Dst: as
      Src: /src/pdns/pdns/ixfrdist.cc:1356,1
    - Dst: what
      Src: /src/pdns/pdns/ixfrdist.cc:1358,1
    - Dst: getcwd
      Src: /src/pdns/pdns/ixfrdist.cc:1363,1
    - Dst: string
      Src: /src/pdns/pdns/ixfrdist.cc:1363,1
    - Dst: as
      Src: /src/pdns/pdns/ixfrdist.cc:1368,1
    - Dst: what
      Src: /src/pdns/pdns/ixfrdist.cc:1370,1
    - Dst: as
      Src: /src/pdns/pdns/ixfrdist.cc:1377,1
    - Dst: what
      Src: /src/pdns/pdns/ixfrdist.cc:1379,1
    - Dst: size
      Src: /src/pdns/pdns/ixfrdist.cc:1385,1
    - Dst: as
      Src: /src/pdns/pdns/ixfrdist.cc:1396,1
    - Dst: as
      Src: /src/pdns/pdns/ixfrdist.cc:1398,1
    - Dst: what
      Src: /src/pdns/pdns/ixfrdist.cc:1398,1
    - Dst: as
      Src: /src/pdns/pdns/ixfrdist.cc:1402,1
    - Dst: as
      Src: /src/pdns/pdns/ixfrdist.cc:1406,1
    - Dst: as
      Src: /src/pdns/pdns/ixfrdist.cc:1408,1
    - Dst: addMask
      Src: /src/pdns/pdns/ixfrdist.cc:1410,1
    - Dst: as
      Src: /src/pdns/pdns/ixfrdist.cc:1412,1
    - Dst: what
      Src: /src/pdns/pdns/ixfrdist.cc:1412,1
    - Dst: as
      Src: /src/pdns/pdns/ixfrdist.cc:1417,1
    - Dst: as
      Src: /src/pdns/pdns/ixfrdist.cc:1419,1
    - Dst: what
      Src: /src/pdns/pdns/ixfrdist.cc:1419,1
    - Dst: as
      Src: /src/pdns/pdns/ixfrdist.cc:1430,1
    - Dst: what
      Src: /src/pdns/pdns/ixfrdist.cc:1433,1
    - Dst: as
      Src: /src/pdns/pdns/ixfrdist.cc:1443,1
    - Dst: what
      Src: /src/pdns/pdns/ixfrdist.cc:1446,1
    - Dst: as
      Src: /src/pdns/pdns/ixfrdist.cc:1453,1
    - Dst: what
      Src: /src/pdns/pdns/ixfrdist.cc:1456,1
    - Dst: as
      Src: /src/pdns/pdns/ixfrdist.cc:1463,1
    - Dst: what
      Src: /src/pdns/pdns/ixfrdist.cc:1466,1
    CyclomaticComplexity: 40
    EdgeCount: 40
    ICount: 177
    argCount: 2
    argNames:
    - ' configpath'
    - ' config'
    argTypes:
    - string
    - YAML::Node
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1472
      start: 1268
    functionDepth: 0
    functionLinenumber: 1268
    functionLinenumberEnd: 1472
    functionName: parseAndCheckConfig
    functionSourceFile: /src/pdns/pdns/ixfrdist.cc
    functionUses: 0
    functionsReached:
    - push_back
    - what
    - string
    - size
    - addMask
    - as
    - getcwd
    - YAML::LoadFile
    linkageType: ''
    returnType: bool
    signature: bool parseAndCheckConfig(const string& configpath, YAML::Node& config)
  - BBCount: 25
    BranchProfiles: []
    Callsites:
    - Dst: po::options_description::add_options
      Src: /src/pdns/pdns/ixfrdist.cc:1501,1
    - Dst: po::value<string>
      Src: /src/pdns/pdns/ixfrdist.cc:1506,1
    - Dst: string
      Src: /src/pdns/pdns/ixfrdist.cc:1506,1
    - Dst: pdns::stat_t_trait::store
      Src: /src/pdns/pdns/ixfrdist.cc:1509,1
    - Dst: po::command_line_parser
      Src: /src/pdns/pdns/ixfrdist.cc:1509,1
    - Dst: pdns::channel::Notifier::notify
      Src: /src/pdns/pdns/ixfrdist.cc:1510,1
    - Dst: po::variables_map::count
      Src: /src/pdns/pdns/ixfrdist.cc:1512,1
    - Dst: usage
      Src: /src/pdns/pdns/ixfrdist.cc:1513,1
    - Dst: po::variables_map::count
      Src: /src/pdns/pdns/ixfrdist.cc:1518,1
    - Dst: as
      Src: /src/pdns/pdns/ixfrdist.cc:1524,1
    - Dst: what
      Src: /src/pdns/pdns/ixfrdist.cc:1527,1
    - Dst: what
      Src: /src/pdns/pdns/ixfrdist.cc:1531,1
    - Dst: po::variables_map::count
      Src: /src/pdns/pdns/ixfrdist.cc:1537,1
    - Dst: setLoglevel
      Src: /src/pdns/pdns/ixfrdist.cc:1538,1
    - Dst: toConsole
      Src: /src/pdns/pdns/ixfrdist.cc:1539,1
    - Dst: po::variables_map::count
      Src: /src/pdns/pdns/ixfrdist.cc:1542,1
    - Dst: setLoglevel
      Src: /src/pdns/pdns/ixfrdist.cc:1543,1
    - Dst: toConsole
      Src: /src/pdns/pdns/ixfrdist.cc:1544,1
    - Dst: parseAndCheckConfig
      Src: /src/pdns/pdns/ixfrdist.cc:1551,1
    - Dst: set::insert
      Src: /src/pdns/pdns/ixfrdist.cc:1560,1
    - Dst: as
      Src: /src/pdns/pdns/ixfrdist.cc:1560,1
    - Dst: as
      Src: /src/pdns/pdns/ixfrdist.cc:1561,1
    - Dst: IsDefined
      Src: /src/pdns/pdns/ixfrdist.cc:1562,1
    - Dst: as
      Src: /src/pdns/pdns/ixfrdist.cc:1563,1
    - Dst: as
      Src: /src/pdns/pdns/ixfrdist.cc:1563,1
    - Dst: IsDefined
      Src: /src/pdns/pdns/ixfrdist.cc:1565,1
    - Dst: as
      Src: /src/pdns/pdns/ixfrdist.cc:1566,1
    - Dst: IsScalar
      Src: /src/pdns/pdns/ixfrdist.cc:1567,1
    - Dst: as
      Src: /src/pdns/pdns/ixfrdist.cc:1568,1
    - Dst: emplace
      Src: /src/pdns/pdns/ixfrdist.cc:1570,1
    - Dst: IsSequence
      Src: /src/pdns/pdns/ixfrdist.cc:1575,1
    - Dst: as
      Src: /src/pdns/pdns/ixfrdist.cc:1577,1
    - Dst: emplace
      Src: /src/pdns/pdns/ixfrdist.cc:1579,1
    - Dst: registerDomain
      Src: /src/pdns/pdns/ixfrdist.cc:1587,1
    - Dst: as
      Src: /src/pdns/pdns/ixfrdist.cc:1587,1
    - Dst: as
      Src: /src/pdns/pdns/ixfrdist.cc:1590,1
    - Dst: addMask
      Src: /src/pdns/pdns/ixfrdist.cc:1592,1
    - Dst: what
      Src: /src/pdns/pdns/ixfrdist.cc:1595,1
    - Dst: toString
      Src: /src/pdns/pdns/ixfrdist.cc:1605,1
    - Dst: what
      Src: /src/pdns/pdns/ixfrdist.cc:1608,1
    - Dst: toString
      Src: /src/pdns/pdns/ixfrdist.cc:1611,1
    - Dst: IsDefined
      Src: /src/pdns/pdns/ixfrdist.cc:1613,1
    - Dst: as
      Src: /src/pdns/pdns/ixfrdist.cc:1614,1
    - Dst: as
      Src: /src/pdns/pdns/ixfrdist.cc:1620,1
    - Dst: SSocket
      Src: /src/pdns/pdns/ixfrdist.cc:1623,1
    - Dst: setNonBlocking
      Src: /src/pdns/pdns/ixfrdist.cc:1624,1
    - Dst: setReuseAddr
      Src: /src/pdns/pdns/ixfrdist.cc:1625,1
    - Dst: isIPv6
      Src: /src/pdns/pdns/ixfrdist.cc:1626,1
    - Dst: setsockopt
      Src: /src/pdns/pdns/ixfrdist.cc:1628,1
    - Dst: SBind
      Src: /src/pdns/pdns/ixfrdist.cc:1631,1
    - Dst: SListen
      Src: /src/pdns/pdns/ixfrdist.cc:1633,1
    - Dst: addReadFD
      Src: /src/pdns/pdns/ixfrdist.cc:1635,1
    - Dst: IXFRDistConfiguration::listeningSockets::insert
      Src: /src/pdns/pdns/ixfrdist.cc:1636,1
    - Dst: what
      Src: /src/pdns/pdns/ixfrdist.cc:1639,1
    - Dst: IsDefined
      Src: /src/pdns/pdns/ixfrdist.cc:1651,1
    - Dst: as
      Src: /src/pdns/pdns/ixfrdist.cc:1653,1
    - Dst: pdns::checked_stoi<gid_t>
      Src: /src/pdns/pdns/ixfrdist.cc:1655,1
    - Dst: getgrnam
      Src: /src/pdns/pdns/ixfrdist.cc:1663,1
    - Dst: auto::c_str
      Src: /src/pdns/pdns/ixfrdist.cc:1663,1
    - Dst: IsDefined
      Src: /src/pdns/pdns/ixfrdist.cc:1673,1
    - Dst: as
      Src: /src/pdns/pdns/ixfrdist.cc:1674,1
    - Dst: IXFRDistConfiguration::wsACL::addMask
      Src: /src/pdns/pdns/ixfrdist.cc:1677,1
    - Dst: IXFRDistConfiguration::wsACL::addMask
      Src: /src/pdns/pdns/ixfrdist.cc:1678,1
    - Dst: IsDefined
      Src: /src/pdns/pdns/ixfrdist.cc:1680,1
    - Dst: IXFRDistConfiguration::wsACL::clear
      Src: /src/pdns/pdns/ixfrdist.cc:1681,1
    - Dst: as
      Src: /src/pdns/pdns/ixfrdist.cc:1682,1
    - Dst: IXFRDistConfiguration::wsACL::addMask
      Src: /src/pdns/pdns/ixfrdist.cc:1683,1
    - Dst: what
      Src: /src/pdns/pdns/ixfrdist.cc:1692,1
    - Dst: as
      Src: /src/pdns/pdns/ixfrdist.cc:1697,1
    - Dst: IsDefined
      Src: /src/pdns/pdns/ixfrdist.cc:1701,1
    - Dst: as
      Src: /src/pdns/pdns/ixfrdist.cc:1703,1
    - Dst: pdns::checked_stoi<uid_t>
      Src: /src/pdns/pdns/ixfrdist.cc:1705,1
    - Dst: getpwnam
      Src: /src/pdns/pdns/ixfrdist.cc:1713,1
    - Dst: auto::c_str
      Src: /src/pdns/pdns/ixfrdist.cc:1713,1
    - Dst: getpwuid
      Src: /src/pdns/pdns/ixfrdist.cc:1724,1
    - Dst: as
      Src: /src/pdns/pdns/ixfrdist.cc:1728,1
    - Dst: as
      Src: /src/pdns/pdns/ixfrdist.cc:1729,1
    - Dst: as
      Src: /src/pdns/pdns/ixfrdist.cc:1730,1
    - Dst: as
      Src: /src/pdns/pdns/ixfrdist.cc:1731,1
    - Dst: as
      Src: /src/pdns/pdns/ixfrdist.cc:1732,1
    - Dst: as
      Src: /src/pdns/pdns/ixfrdist.cc:1733,1
    CyclomaticComplexity: 42
    EdgeCount: 42
    ICount: 177
    argCount: 3
    argNames:
    - argc
    - argv
    - ' fdm'
    argTypes:
    - int
    - char**
    - FDMultiplexer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1745
      start: 1493
    functionDepth: 1
    functionLinenumber: 1493
    functionLinenumberEnd: 1745
    functionName: parseConfiguration
    functionSourceFile: /src/pdns/pdns/ixfrdist.cc
    functionUses: 0
    functionsReached:
    - toString
    - toConsole
    - addMask
    - IXFRDistConfiguration::wsACL::clear
    - SBind
    - set::insert
    - setLoglevel
    - setReuseAddr
    - pdns::checked_stoi<gid_t>
    - setNonBlocking
    - addReadFD
    - IsSequence
    - registerDomain
    - string
    - setsockopt
    - pdns::channel::Notifier::notify
    - usage
    - parseAndCheckConfig
    - SListen
    - IsDefined
    - isIPv6
    - SSocket
    - auto::c_str
    - IsScalar
    - po::options_description::add_options
    - getpwnam
    - po::variables_map::count
    - what
    - IXFRDistConfiguration::wsACL::addMask
    - pdns::stat_t_trait::store
    - getpwuid
    - as
    - IXFRDistConfiguration::listeningSockets::insert
    - getgrnam
    - po::command_line_parser
    - po::value<string>
    - pdns::checked_stoi<uid_t>
    - emplace
    linkageType: ''
    returnType: std::optional<IXFRDistConfiguration>
    signature: std::optional<IXFRDistConfiguration> parseConfiguration(int argc, char**
      argv, FDMultiplexer& fdm)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: setLoglevel
      Src: /src/pdns/pdns/ixfrdist.cc:1753,1
    - Dst: toConsole
      Src: /src/pdns/pdns/ixfrdist.cc:1754,1
    - Dst: setPrefixed
      Src: /src/pdns/pdns/ixfrdist.cc:1755,1
    - Dst: disableSyslog
      Src: /src/pdns/pdns/ixfrdist.cc:1756,1
    - Dst: setTimestamps
      Src: /src/pdns/pdns/ixfrdist.cc:1757,1
    - Dst: std::unique_ptr<FDMultiplexer>
      Src: /src/pdns/pdns/ixfrdist.cc:1759,1
    - Dst: FDMultiplexer::getMultiplexerSilent
      Src: /src/pdns/pdns/ixfrdist.cc:1759,1
    - Dst: parseConfiguration
      Src: /src/pdns/pdns/ixfrdist.cc:1765,1
    - Dst: setgid
      Src: /src/pdns/pdns/ixfrdist.cc:1783,1
    - Dst: stringerror
      Src: /src/pdns/pdns/ixfrdist.cc:1784,1
    - Dst: signal
      Src: /src/pdns/pdns/ixfrdist.cc:1790,1
    - Dst: signal
      Src: /src/pdns/pdns/ixfrdist.cc:1791,1
    - Dst: signal
      Src: /src/pdns/pdns/ixfrdist.cc:1793,1
    - Dst: std::thread
      Src: /src/pdns/pdns/ixfrdist.cc:1797,1
    - Dst: IXFRDistWebServer
      Src: /src/pdns/pdns/ixfrdist.cc:1797,1
    - Dst: what
      Src: /src/pdns/pdns/ixfrdist.cc:1800,1
    - Dst: setgroups
      Src: /src/pdns/pdns/ixfrdist.cc:1810,1
    - Dst: stringerror
      Src: /src/pdns/pdns/ixfrdist.cc:1811,1
    - Dst: initgroups
      Src: /src/pdns/pdns/ixfrdist.cc:1815,1
    - Dst: stringerror
      Src: /src/pdns/pdns/ixfrdist.cc:1816,1
    - Dst: setuid
      Src: /src/pdns/pdns/ixfrdist.cc:1822,1
    - Dst: stringerror
      Src: /src/pdns/pdns/ixfrdist.cc:1823,1
    - Dst: reportAllTypes
      Src: /src/pdns/pdns/ixfrdist.cc:1839,1
    - Dst: vector::reserve
      Src: /src/pdns/pdns/ixfrdist.cc:1850,1
    - Dst: vector::capacity
      Src: /src/pdns/pdns/ixfrdist.cc:1851,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/ixfrdist.cc:1852,1
    - Dst: std::thread
      Src: /src/pdns/pdns/ixfrdist.cc:1852,1
    - Dst: gettimeofday
      Src: /src/pdns/pdns/ixfrdist.cc:1857,1
    - Dst: std::unique_ptr::run
      Src: /src/pdns/pdns/ixfrdist.cc:1858,1
    - Dst: closesocket
      Src: /src/pdns/pdns/ixfrdist.cc:1863,1
    - Dst: notify_all
      Src: /src/pdns/pdns/ixfrdist.cc:1873,1
    - Dst: std::thread::join
      Src: /src/pdns/pdns/ixfrdist.cc:1874,1
    - Dst: std::thread::join
      Src: /src/pdns/pdns/ixfrdist.cc:1875,1
    - Dst: join
      Src: /src/pdns/pdns/ixfrdist.cc:1877,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 100
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1887
      start: 1747
    functionDepth: 2
    functionLinenumber: 1747
    functionLinenumberEnd: 1887
    functionName: main
    functionSourceFile: /src/pdns/pdns/ixfrdist.cc
    functionUses: 11
    functionsReached:
    - stringerror
    - toConsole
    - gettimeofday
    - setgroups
    - vector::reserve
    - vector::capacity
    - notify_all
    - setLoglevel
    - reportAllTypes
    - std::thread
    - setgid
    - vector::push_back
    - setuid
    - initgroups
    - std::thread::join
    - join
    - IXFRDistWebServer
    - FDMultiplexer::getMultiplexerSilent
    - disableSyslog
    - setTimestamps
    - closesocket
    - setPrefixed
    - what
    - std::unique_ptr<FDMultiplexer>
    - std::unique_ptr::run
    - parseConfiguration
    - signal
    linkageType: ''
    returnType: int
    signature: int main(int argc, char** argv)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ArgvMap::ArgvMap
      Src: /src/pdns/pdns/pdnsutil.cc:612,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 614
      start: 610
    functionDepth: 0
    functionLinenumber: 610
    functionLinenumberEnd: 614
    functionName: arg
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 8
    functionsReached:
    - ArgvMap::ArgvMap
    linkageType: ''
    returnType: ArgvMap
    signature: ArgvMap &arg()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vector::reserve
      Src: /src/pdns/pdns/pdnsutil.cc:618,1
    - Dst: size
      Src: /src/pdns/pdns/pdnsutil.cc:618,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/pdnsutil.cc:620,1
    - Dst: toStringWithPortExcept
      Src: /src/pdns/pdns/pdnsutil.cc:620,1
    - Dst: boost::join
      Src: /src/pdns/pdns/pdnsutil.cc:622,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ' vec'
    argTypes:
    - std::vector<ComboAddress>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 623
      start: 616
    functionDepth: 0
    functionLinenumber: 616
    functionLinenumberEnd: 623
    functionName: comboAddressVecToString
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 0
    functionsReached:
    - vector::push_back
    - size
    - boost::join
    - vector::reserve
    - toStringWithPortExcept
    linkageType: ''
    returnType: std::string
    signature: std::string comboAddressVecToString(const std::vector<ComboAddress>&
      vec)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Logger::Urgency
      Src: /src/pdns/pdns/pdnsutil.cc:630,1
    - Dst: std::stringstream::str
      Src: /src/pdns/pdns/pdnsutil.cc:636,1
    - Dst: std::quoted
      Src: /src/pdns/pdns/pdnsutil.cc:637,1
    - Dst: std::quoted
      Src: /src/pdns/pdns/pdnsutil.cc:639,1
    - Dst: error::value
      Src: /src/pdns/pdns/pdnsutil.cc:639,1
    - Dst: std::quoted
      Src: /src/pdns/pdns/pdnsutil.cc:643,1
    - Dst: name::value
      Src: /src/pdns/pdns/pdnsutil.cc:643,1
    - Dst: std::quoted
      Src: /src/pdns/pdns/pdnsutil.cc:645,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/pdnsutil.cc:645,1
    - Dst: std::quoted
      Src: /src/pdns/pdns/pdnsutil.cc:647,1
    - Dst: Logr::Logger::toString
      Src: /src/pdns/pdns/pdnsutil.cc:647,1
    - Dst: std::quoted
      Src: /src/pdns/pdns/pdnsutil.cc:650,1
    - Dst: Logging::toTimestampStringMilli
      Src: /src/pdns/pdns/pdnsutil.cc:650,1
    - Dst: std::quoted
      Src: /src/pdns/pdns/pdnsutil.cc:653,1
    - Dst: std::stringstream::str
      Src: /src/pdns/pdns/pdnsutil.cc:656,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 21
    argCount: 1
    argNames:
    - ' entry'
    argTypes:
    - Logging::Entry
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 657
      start: 625
    functionDepth: 0
    functionLinenumber: 625
    functionLinenumberEnd: 657
    functionName: pdnsutilLoggerBackend
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 0
    functionsReached:
    - std::quoted
    - Logger::Urgency
    - std::to_string
    - Logr::Logger::toString
    - std::stringstream::str
    - name::value
    - error::value
    - Logging::toTimestampStringMilli
    linkageType: ''
    returnType: void
    signature: void pdnsutilLoggerBackend(const Logging::Entry& entry)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: arg
      Src: /src/pdns/pdns/pdnsutil.cc:662,1
    - Dst: arg
      Src: /src/pdns/pdns/pdnsutil.cc:663,1
    - Dst: arg
      Src: /src/pdns/pdns/pdnsutil.cc:665,1
    - Dst: arg
      Src: /src/pdns/pdns/pdnsutil.cc:666,1
    - Dst: arg
      Src: /src/pdns/pdns/pdnsutil.cc:667,1
    - Dst: arg
      Src: /src/pdns/pdns/pdnsutil.cc:668,1
    - Dst: arg
      Src: /src/pdns/pdns/pdnsutil.cc:669,1
    - Dst: as
      Src: /src/pdns/pdns/pdnsutil.cc:669,1
    - Dst: arg
      Src: /src/pdns/pdns/pdnsutil.cc:670,1
    - Dst: arg
      Src: /src/pdns/pdns/pdnsutil.cc:671,1
    - Dst: arg
      Src: /src/pdns/pdns/pdnsutil.cc:674,1
    - Dst: arg
      Src: /src/pdns/pdns/pdnsutil.cc:676,1
    - Dst: arg
      Src: /src/pdns/pdns/pdnsutil.cc:676,1
    - Dst: exit
      Src: /src/pdns/pdns/pdnsutil.cc:677,1
    - Dst: arg
      Src: /src/pdns/pdns/pdnsutil.cc:680,1
    - Dst: empty
      Src: /src/pdns/pdns/pdnsutil.cc:680,1
    - Dst: arg
      Src: /src/pdns/pdns/pdnsutil.cc:681,1
    - Dst: arg
      Src: /src/pdns/pdns/pdnsutil.cc:683,1
    - Dst: cleanSlashes
      Src: /src/pdns/pdns/pdnsutil.cc:684,1
    - Dst: arg
      Src: /src/pdns/pdns/pdnsutil.cc:686,1
    - Dst: arg
      Src: /src/pdns/pdns/pdnsutil.cc:687,1
    - Dst: arg
      Src: /src/pdns/pdns/pdnsutil.cc:688,1
    - Dst: arg
      Src: /src/pdns/pdns/pdnsutil.cc:689,1
    - Dst: arg
      Src: /src/pdns/pdns/pdnsutil.cc:690,1
    - Dst: arg
      Src: /src/pdns/pdns/pdnsutil.cc:691,1
    - Dst: arg
      Src: /src/pdns/pdns/pdnsutil.cc:692,1
    - Dst: arg
      Src: /src/pdns/pdns/pdnsutil.cc:693,1
    - Dst: arg
      Src: /src/pdns/pdns/pdnsutil.cc:694,1
    - Dst: arg
      Src: /src/pdns/pdns/pdnsutil.cc:695,1
    - Dst: arg
      Src: /src/pdns/pdns/pdnsutil.cc:696,1
    - Dst: arg
      Src: /src/pdns/pdns/pdnsutil.cc:697,1
    - Dst: arg
      Src: /src/pdns/pdns/pdnsutil.cc:698,1
    - Dst: arg
      Src: /src/pdns/pdns/pdnsutil.cc:699,1
    - Dst: arg
      Src: /src/pdns/pdns/pdnsutil.cc:700,1
    - Dst: arg
      Src: /src/pdns/pdns/pdnsutil.cc:701,1
    - Dst: arg
      Src: /src/pdns/pdns/pdnsutil.cc:702,1
    - Dst: arg
      Src: /src/pdns/pdns/pdnsutil.cc:703,1
    - Dst: arg
      Src: /src/pdns/pdns/pdnsutil.cc:705,1
    - Dst: arg
      Src: /src/pdns/pdns/pdnsutil.cc:706,1
    - Dst: arg
      Src: /src/pdns/pdns/pdnsutil.cc:709,1
    - Dst: empty
      Src: /src/pdns/pdns/pdnsutil.cc:709,1
    - Dst: arg
      Src: /src/pdns/pdns/pdnsutil.cc:713,1
    - Dst: empty
      Src: /src/pdns/pdns/pdnsutil.cc:713,1
    - Dst: arg
      Src: /src/pdns/pdns/pdnsutil.cc:718,1
    - Dst: empty
      Src: /src/pdns/pdns/pdnsutil.cc:718,1
    - Dst: stringtok
      Src: /src/pdns/pdns/pdnsutil.cc:721,1
    - Dst: arg
      Src: /src/pdns/pdns/pdnsutil.cc:721,1
    - Dst: UeberBackend::loadModules
      Src: /src/pdns/pdns/pdnsutil.cc:722,1
    - Dst: arg
      Src: /src/pdns/pdns/pdnsutil.cc:722,1
    - Dst: exit
      Src: /src/pdns/pdns/pdnsutil.cc:723,1
    - Dst: toConsole
      Src: /src/pdns/pdns/pdnsutil.cc:727,1
    - Dst: arg
      Src: /src/pdns/pdns/pdnsutil.cc:729,1
    - Dst: Logging::Logger::create
      Src: /src/pdns/pdns/pdnsutil.cc:732,1
    - Dst: withName
      Src: /src/pdns/pdns/pdnsutil.cc:733,1
    - Dst: arg
      Src: /src/pdns/pdns/pdnsutil.cc:734,1
    - Dst: BackendMakers
      Src: /src/pdns/pdns/pdnsutil.cc:737,1
    - Dst: arg
      Src: /src/pdns/pdns/pdnsutil.cc:737,1
    - Dst: arg
      Src: /src/pdns/pdns/pdnsutil.cc:738,1
    - Dst: toConsole
      Src: /src/pdns/pdns/pdnsutil.cc:739,1
    - Dst: arg
      Src: /src/pdns/pdns/pdnsutil.cc:739,1
    - Dst: declare
      Src: /src/pdns/pdns/pdnsutil.cc:743,1
    - Dst: arg
      Src: /src/pdns/pdns/pdnsutil.cc:745,1
    - Dst: arg
      Src: /src/pdns/pdns/pdnsutil.cc:746,1
    - Dst: arg
      Src: /src/pdns/pdns/pdnsutil.cc:747,1
    - Dst: arg
      Src: /src/pdns/pdns/pdnsutil.cc:748,1
    - Dst: arg
      Src: /src/pdns/pdns/pdnsutil.cc:749,1
    - Dst: arg
      Src: /src/pdns/pdns/pdnsutil.cc:750,1
    - Dst: arg
      Src: /src/pdns/pdns/pdnsutil.cc:751,1
    - Dst: arg
      Src: /src/pdns/pdns/pdnsutil.cc:752,1
    - Dst: arg
      Src: /src/pdns/pdns/pdnsutil.cc:753,1
    - Dst: arg
      Src: /src/pdns/pdns/pdnsutil.cc:754,1
    - Dst: arg
      Src: /src/pdns/pdns/pdnsutil.cc:755,1
    - Dst: arg
      Src: /src/pdns/pdns/pdnsutil.cc:758,1
    - Dst: stringerror
      Src: /src/pdns/pdns/pdnsutil.cc:759,1
    - Dst: sodium_init
      Src: /src/pdns/pdns/pdnsutil.cc:763,1
    - Dst: exit
      Src: /src/pdns/pdns/pdnsutil.cc:765,1
    - Dst: openssl_seed
      Src: /src/pdns/pdns/pdnsutil.cc:768,1
    - Dst: arg
      Src: /src/pdns/pdns/pdnsutil.cc:770,1
    - Dst: empty
      Src: /src/pdns/pdns/pdnsutil.cc:770,1
    - Dst: chroot
      Src: /src/pdns/pdns/pdnsutil.cc:771,1
    - Dst: arg
      Src: /src/pdns/pdns/pdnsutil.cc:771,1
    - Dst: c_str
      Src: /src/pdns/pdns/pdnsutil.cc:771,1
    - Dst: chdir
      Src: /src/pdns/pdns/pdnsutil.cc:771,1
    - Dst: arg
      Src: /src/pdns/pdns/pdnsutil.cc:772,1
    - Dst: strerror
      Src: /src/pdns/pdns/pdnsutil.cc:772,1
    - Dst: exit
      Src: /src/pdns/pdns/pdnsutil.cc:773,1
    - Dst: UeberBackend::go
      Src: /src/pdns/pdns/pdnsutil.cc:777,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 86
    argCount: 1
    argNames:
    - ' configdir'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 778
      start: 659
    functionDepth: 1
    functionLinenumber: 659
    functionLinenumberEnd: 778
    functionName: loadMainConfig
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 0
    functionsReached:
    - withName
    - stringerror
    - toConsole
    - UeberBackend::loadModules
    - declare
    - stringtok
    - UeberBackend::go
    - strerror
    - c_str
    - sodium_init
    - empty
    - openssl_seed
    - exit
    - chroot
    - arg
    - BackendMakers
    - chdir
    - cleanSlashes
    - Logging::Logger::create
    - as
    linkageType: ''
    returnType: void
    signature: void loadMainConfig(const std::string& configdir)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 785
      start: 785
    functionDepth: 0
    functionLinenumber: 785
    functionLinenumberEnd: 785
    functionName: UtilBackend::UtilBackend
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void UtilBackend(const string& pname = "default")
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 786
      start: 786
    functionDepth: 0
    functionLinenumber: 786
    functionLinenumberEnd: 786
    functionName: UtilBackend::UtilBackend
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void UtilBackend(const UtilBackend &)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 787
      start: 787
    functionDepth: 0
    functionLinenumber: 787
    functionLinenumberEnd: 787
    functionName: UtilBackend::UtilBackend
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void UtilBackend(UtilBackend &&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 788
      start: 788
    functionDepth: 0
    functionLinenumber: 788
    functionLinenumberEnd: 788
    functionName: '& operator=(const UtilBackend&)'
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: UtilBackend
    signature: UtilBackend & operator=(const UtilBackend&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 789
      start: 789
    functionDepth: 0
    functionLinenumber: 789
    functionLinenumberEnd: 789
    functionName: '& operator=(UtilBackend&&)'
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: UtilBackend
    signature: UtilBackend & operator=(UtilBackend&&)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: hasCreatedLocalFiles
      Src: /src/pdns/pdns/pdnsutil.cc:795,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 800
      start: 793
    functionDepth: 0
    functionLinenumber: 793
    functionLinenumberEnd: 800
    functionName: UtilBackend::~UtilBackend()
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 0
    functionsReached:
    - hasCreatedLocalFiles
    linkageType: ''
    returnType: void
    signature: void UtilBackend::~UtilBackend()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - synopsis
    argTypes:
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 807
      start: 802
    functionDepth: 0
    functionLinenumber: 802
    functionLinenumberEnd: 807
    functionName: usage
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int usage(const std::string_view synopsis)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: d_name::toString
      Src: /src/pdns/pdns/pdnsutil.cc:813,1
    - Dst: std::string::append
      Src: /src/pdns/pdns/pdnsutil.cc:814,1
    - Dst: std::string::append
      Src: /src/pdns/pdns/pdnsutil.cc:815,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/pdnsutil.cc:815,1
    - Dst: std::string::append
      Src: /src/pdns/pdns/pdnsutil.cc:816,1
    - Dst: std::string::append
      Src: /src/pdns/pdns/pdnsutil.cc:817,1
    - Dst: QClass
      Src: /src/pdns/pdns/pdnsutil.cc:817,1
    - Dst: std::string::append
      Src: /src/pdns/pdns/pdnsutil.cc:818,1
    - Dst: std::string::append
      Src: /src/pdns/pdns/pdnsutil.cc:819,1
    - Dst: DNSRecordContent::NumberToType
      Src: /src/pdns/pdns/pdnsutil.cc:819,1
    - Dst: std::string::append
      Src: /src/pdns/pdns/pdnsutil.cc:820,1
    - Dst: std::string::append
      Src: /src/pdns/pdns/pdnsutil.cc:821,1
    - Dst: getContent
      Src: /src/pdns/pdns/pdnsutil.cc:821,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 1
    argNames:
    - ' rec'
    argTypes:
    - DNSRecord
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 823
      start: 811
    functionDepth: 0
    functionLinenumber: 811
    functionLinenumberEnd: 823
    functionName: formatRecord
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 0
    functionsReached:
    - d_name::toString
    - std::string::append
    - std::to_string
    - QClass
    - getContent
    - DNSRecordContent::NumberToType
    linkageType: ''
    returnType: std::string
    signature: std::string formatRecord(const DNSRecord& rec, std::string_view separator
      = "\t")
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: rectifyZone
      Src: /src/pdns/pdns/pdnsutil.cc:829,1
    - Dst: string::empty
      Src: /src/pdns/pdns/pdnsutil.cc:832,1
    - Dst: string::empty
      Src: /src/pdns/pdns/pdnsutil.cc:835,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 10
    argCount: 2
    argNames:
    - ' dsk'
    - ' zone'
    argTypes:
    - DNSSECKeeper
    - ZoneName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 840
      start: 825
    functionDepth: 1
    functionLinenumber: 825
    functionLinenumberEnd: 840
    functionName: rectifyZone
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 1
    functionsReached:
    - rectifyZone
    - string::empty
    linkageType: ''
    returnType: bool
    signature: bool rectifyZone(DNSSECKeeper& dsk, const ZoneName& zone, bool quiet
      = false, bool rectifyTransaction = true)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: arg
      Src: /src/pdns/pdns/pdnsutil.cc:844,1
    - Dst: arg
      Src: /src/pdns/pdns/pdnsutil.cc:845,1
    - Dst: empty
      Src: /src/pdns/pdns/pdnsutil.cc:849,1
    - Dst: c_str
      Src: /src/pdns/pdns/pdnsutil.cc:850,1
    - Dst: getline
      Src: /src/pdns/pdns/pdnsutil.cc:855,1
    - Dst: Utility::trim
      Src: /src/pdns/pdns/pdnsutil.cc:856,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/pdnsutil.cc:857,1
    - Dst: vector::empty
      Src: /src/pdns/pdns/pdnsutil.cc:860,1
    - Dst: vector::emplace_back
      Src: /src/pdns/pdns/pdnsutil.cc:861,1
    - Dst: DTime::DTime
      Src: /src/pdns/pdns/pdnsutil.cc:865,1
    - Dst: DTime::set
      Src: /src/pdns/pdns/pdnsutil.cc:866,1
    - Dst: dns_random
      Src: /src/pdns/pdns/pdnsutil.cc:869,1
    - Dst: vector::size
      Src: /src/pdns/pdns/pdnsutil.cc:869,1
    - Dst: UtilBackend::lookup
      Src: /src/pdns/pdns/pdnsutil.cc:871,1
    - Dst: QType
      Src: /src/pdns/pdns/pdnsutil.cc:871,1
    - Dst: UtilBackend::get
      Src: /src/pdns/pdns/pdnsutil.cc:872,1
    - Dst: UtilBackend::lookup
      Src: /src/pdns/pdns/pdnsutil.cc:876,1
    - Dst: QType
      Src: /src/pdns/pdns/pdnsutil.cc:876,1
    - Dst: DNSName
      Src: /src/pdns/pdns/pdnsutil.cc:876,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/pdnsutil.cc:876,1
    - Dst: dns_random_uint32
      Src: /src/pdns/pdns/pdnsutil.cc:876,1
    - Dst: UtilBackend::lookupEnd
      Src: /src/pdns/pdns/pdnsutil.cc:877,1
    - Dst: DTime::udiff
      Src: /src/pdns/pdns/pdnsutil.cc:881,1
    - Dst: read
      Src: /src/pdns/pdns/pdnsutil.cc:883,1
    - Dst: read
      Src: /src/pdns/pdns/pdnsutil.cc:883,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 27
    argCount: 1
    argNames:
    - ' fname'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 884
      start: 842
    functionDepth: 0
    functionLinenumber: 842
    functionLinenumberEnd: 884
    functionName: dbBench
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 0
    functionsReached:
    - std::to_string
    - getline
    - DTime::set
    - UtilBackend::lookupEnd
    - dns_random_uint32
    - QType
    - DTime::DTime
    - c_str
    - empty
    - vector::push_back
    - DTime::udiff
    - UtilBackend::get
    - DNSName
    - vector::empty
    - Utility::trim
    - UtilBackend::lookup
    - arg
    - dns_random
    - read
    - vector::emplace_back
    - vector::size
    linkageType: ''
    returnType: void
    signature: void dbBench(const std::string& fname)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: UtilBackend::getAllDomains
      Src: /src/pdns/pdns/pdnsutil.cc:892,1
    - Dst: rectifyZone
      Src: /src/pdns/pdns/pdnsutil.cc:897,1
    - Dst: vector::size
      Src: /src/pdns/pdns/pdnsutil.cc:902,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 1
    argNames:
    - dk
    argTypes:
    - DNSSECKeeper
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 905
      start: 886
    functionDepth: 2
    functionLinenumber: 886
    functionLinenumberEnd: 905
    functionName: rectifyAllZones
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 0
    functionsReached:
    - rectifyZone
    - vector::size
    - UtilBackend::getAllDomains
    linkageType: ''
    returnType: bool
    signature: bool rectifyAllZones(DNSSECKeeper &dk, bool quiet = false)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: ::isprint
      Src: /src/pdns/pdns/pdnsutil.cc:914,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/pdnsutil.cc:914,1
    - Dst: std::string::reserve
      Src: /src/pdns/pdns/pdnsutil.cc:923,1
    - Dst: size
      Src: /src/pdns/pdns/pdnsutil.cc:923,1
    - Dst: ::isprint
      Src: /src/pdns/pdns/pdnsutil.cc:925,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/pdnsutil.cc:925,1
    - Dst: std::string::push_back
      Src: /src/pdns/pdns/pdnsutil.cc:926,1
    - Dst: std::string::append
      Src: /src/pdns/pdns/pdnsutil.cc:931,1
    - Dst: std::string::append
      Src: /src/pdns/pdns/pdnsutil.cc:934,1
    - Dst: std::string::append
      Src: /src/pdns/pdns/pdnsutil.cc:937,1
    - Dst: snprintf
      Src: /src/pdns/pdns/pdnsutil.cc:940,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/pdnsutil.cc:940,1
    - Dst: std::array::size
      Src: /src/pdns/pdns/pdnsutil.cc:940,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/pdnsutil.cc:940,1
    - Dst: std::string::append
      Src: /src/pdns/pdns/pdnsutil.cc:941,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/pdnsutil.cc:941,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 29
    argCount: 1
    argNames:
    - ' input'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 946
      start: 910
    functionDepth: 0
    functionLinenumber: 910
    functionLinenumberEnd: 946
    functionName: terminalSafe
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 0
    functionsReached:
    - ::isprint
    - std::string::append
    - snprintf
    - std::string::reserve
    - size
    - std::string::push_back
    - std::array::data
    - std::array::size
    - static_cast<int>
    linkageType: ''
    returnType: std::string
    signature: std::string terminalSafe(const std::string& input)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: backend::getDomainMetadataOne
      Src: /src/pdns/pdns/pdnsutil.cc:951,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ' zonename'
    - ' info'
    argTypes:
    - ZoneName
    - DomainInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 954
      start: 948
    functionDepth: 0
    functionLinenumber: 948
    functionLinenumberEnd: 954
    functionName: areUnderscoresAllowed
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 0
    functionsReached:
    - backend::getDomainMetadataOne
    linkageType: ''
    returnType: bool
    signature: bool areUnderscoresAllowed(const ZoneName& zonename, DomainInfo& info)
  - BBCount: 116
    BranchProfiles: []
    Callsites:
    - Dst: UeberBackend::getDomainInfo
      Src: /src/pdns/pdns/pdnsutil.cc:963,1
    - Dst: DomainInfo::backend::getCapabilities
      Src: /src/pdns/pdns/pdnsutil.cc:974,1
    - Dst: UeberBackend::getSOAUncached
      Src: /src/pdns/pdns/pdnsutil.cc:981,1
    - Dst: what
      Src: /src/pdns/pdns/pdnsutil.cc:996,1
    - Dst: NSEC3PARAMRecordContent::NSEC3PARAMRecordContent
      Src: /src/pdns/pdns/pdnsutil.cc:1003,1
    - Dst: DNSSECKeeper::getNSEC3PARAM
      Src: /src/pdns/pdns/pdnsutil.cc:1005,1
    - Dst: DNSSECKeeper::isSecuredZone
      Src: /src/pdns/pdns/pdnsutil.cc:1008,1
    - Dst: DNSSECKeeper::isPresigned
      Src: /src/pdns/pdns/pdnsutil.cc:1009,1
    - Dst: DNSSECKeeper::checkKeys
      Src: /src/pdns/pdns/pdnsutil.cc:1011,1
    - Dst: wirelength
      Src: /src/pdns/pdns/pdnsutil.cc:1014,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/pdnsutil.cc:1022,1
    - Dst: NSEC3PARAMRecordContent::d_salt::empty
      Src: /src/pdns/pdns/pdnsutil.cc:1025,1
    - Dst: UeberBackend::getDomainKeys
      Src: /src/pdns/pdns/pdnsutil.cc:1031,1
    - Dst: DNSKEYRecordContent::DNSKEYRecordContent
      Src: /src/pdns/pdns/pdnsutil.cc:1034,1
    - Dst: DNSCryptoKeyEngine::makeFromISCString
      Src: /src/pdns/pdns/pdnsutil.cc:1035,1
    - Dst: ZoneName::chopOff
      Src: /src/pdns/pdns/pdnsutil.cc:1054,1
    - Dst: UeberBackend::getSOAUncached
      Src: /src/pdns/pdns/pdnsutil.cc:1056,1
    - Dst: UeberBackend::lookup
      Src: /src/pdns/pdns/pdnsutil.cc:1059,1
    - Dst: QType
      Src: /src/pdns/pdns/pdnsutil.cc:1059,1
    - Dst: UeberBackend::get
      Src: /src/pdns/pdns/pdnsutil.cc:1060,1
    - Dst: UeberBackend::lookupEnd
      Src: /src/pdns/pdns/pdnsutil.cc:1063,1
    - Dst: SOAData::db::list
      Src: /src/pdns/pdns/pdnsutil.cc:1092,1
    - Dst: SOAData::db::get_unsafe
      Src: /src/pdns/pdns/pdnsutil.cc:1093,1
    - Dst: std::vector::empty
      Src: /src/pdns/pdns/pdnsutil.cc:1094,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/pdnsutil.cc:1095,1
    - Dst: DNSResourceRecord::qname::empty
      Src: /src/pdns/pdns/pdnsutil.cc:1104,1
    - Dst: terminalSafe
      Src: /src/pdns/pdns/pdnsutil.cc:1116,1
    - Dst: areUnderscoresAllowed
      Src: /src/pdns/pdns/pdnsutil.cc:1125,1
    - Dst: qtype::getCode
      Src: /src/pdns/pdns/pdnsutil.cc:1128,1
    - Dst: set::insert
      Src: /src/pdns/pdns/pdnsutil.cc:1129,1
    - Dst: qtype::getCode
      Src: /src/pdns/pdns/pdnsutil.cc:1130,1
    - Dst: qtype::getCode
      Src: /src/pdns/pdns/pdnsutil.cc:1130,1
    - Dst: insert
      Src: /src/pdns/pdns/pdnsutil.cc:1131,1
    - Dst: qtype::getCode
      Src: /src/pdns/pdns/pdnsutil.cc:1134,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/pdnsutil.cc:1135,1
    - Dst: qtype::getCode
      Src: /src/pdns/pdns/pdnsutil.cc:1135,1
    - Dst: std::dynamic_pointer_cast<LUARecordContent>
      Src: /src/pdns/pdns/pdnsutil.cc:1136,1
    - Dst: insert
      Src: /src/pdns/pdns/pdnsutil.cc:1139,1
    - Dst: qtype::getCode
      Src: /src/pdns/pdns/pdnsutil.cc:1143,1
    - Dst: insert
      Src: /src/pdns/pdns/pdnsutil.cc:1144,1
    - Dst: qtype::getCode
      Src: /src/pdns/pdns/pdnsutil.cc:1146,1
    - Dst: insert
      Src: /src/pdns/pdns/pdnsutil.cc:1147,1
    - Dst: qtype::getCode
      Src: /src/pdns/pdns/pdnsutil.cc:1149,1
    - Dst: stringtok
      Src: /src/pdns/pdns/pdnsutil.cc:1151,1
    - Dst: vector::size
      Src: /src/pdns/pdns/pdnsutil.cc:1153,1
    - Dst: qtype::toString
      Src: /src/pdns/pdns/pdnsutil.cc:1154,1
    - Dst: vector::size
      Src: /src/pdns/pdns/pdnsutil.cc:1157,1
    - Dst: find
      Src: /src/pdns/pdns/pdnsutil.cc:1158,1
    - Dst: qtype::toString
      Src: /src/pdns/pdns/pdnsutil.cc:1159,1
    - Dst: vector::size
      Src: /src/pdns/pdns/pdnsutil.cc:1166,1
    - Dst: ostringstream::str
      Src: /src/pdns/pdns/pdnsutil.cc:1169,1
    - Dst: qtype::getCode
      Src: /src/pdns/pdns/pdnsutil.cc:1172,1
    - Dst: content::empty
      Src: /src/pdns/pdns/pdnsutil.cc:1172,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/pdnsutil.cc:1176,1
    - Dst: qtype::getCode
      Src: /src/pdns/pdns/pdnsutil.cc:1176,1
    - Dst: shared_ptr::serialize
      Src: /src/pdns/pdns/pdnsutil.cc:1177,1
    - Dst: shared_ptr::getZoneRepresentation
      Src: /src/pdns/pdns/pdnsutil.cc:1178,1
    - Dst: qtype::getCode
      Src: /src/pdns/pdns/pdnsutil.cc:1179,1
    - Dst: pdns_iequals
      Src: /src/pdns/pdns/pdnsutil.cc:1180,1
    - Dst: qtype::getCode
      Src: /src/pdns/pdns/pdnsutil.cc:1181,1
    - Dst: shared_ptr::getZoneRepresentation
      Src: /src/pdns/pdns/pdnsutil.cc:1182,1
    - Dst: pdns_iequals
      Src: /src/pdns/pdns/pdnsutil.cc:1184,1
    - Dst: qtype::toString
      Src: /src/pdns/pdns/pdnsutil.cc:1185,1
    - Dst: inet_pton
      Src: /src/pdns/pdns/pdnsutil.cc:1191,1
    - Dst: content::c_str
      Src: /src/pdns/pdns/pdnsutil.cc:1191,1
    - Dst: qtype::toString
      Src: /src/pdns/pdns/pdnsutil.cc:1192,1
    - Dst: qtype::toString
      Src: /src/pdns/pdns/pdnsutil.cc:1199,1
    - Dst: what
      Src: /src/pdns/pdns/pdnsutil.cc:1200,1
    - Dst: qname::isPartOf
      Src: /src/pdns/pdns/pdnsutil.cc:1205,1
    - Dst: qtype::toString
      Src: /src/pdns/pdns/pdnsutil.cc:1206,1
    - Dst: qtype::getCode
      Src: /src/pdns/pdns/pdnsutil.cc:1211,1
    - Dst: qtype::getCode
      Src: /src/pdns/pdns/pdnsutil.cc:1211,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/pdnsutil.cc:1212,1
    - Dst: qtype::getCode
      Src: /src/pdns/pdns/pdnsutil.cc:1212,1
    - Dst: std::dynamic_pointer_cast<SVCBBaseRecordContent>
      Src: /src/pdns/pdns/pdnsutil.cc:1214,1
    - Dst: auto::getPriority
      Src: /src/pdns/pdns/pdnsutil.cc:1215,1
    - Dst: auto::hasParams
      Src: /src/pdns/pdns/pdnsutil.cc:1215,1
    - Dst: qtype::toString
      Src: /src/pdns/pdns/pdnsutil.cc:1216,1
    - Dst: auto::getPriority
      Src: /src/pdns/pdns/pdnsutil.cc:1220,1
    - Dst: auto::hasParam
      Src: /src/pdns/pdns/pdnsutil.cc:1222,1
    - Dst: auto::hasParam
      Src: /src/pdns/pdns/pdnsutil.cc:1222,1
    - Dst: qtype::toString
      Src: /src/pdns/pdns/pdnsutil.cc:1228,1
    - Dst: auto::hasParam
      Src: /src/pdns/pdns/pdnsutil.cc:1231,1
    - Dst: auto::getParam
      Src: /src/pdns/pdns/pdnsutil.cc:1232,1
    - Dst: auto::hasParam
      Src: /src/pdns/pdns/pdnsutil.cc:1234,1
    - Dst: qtype::toString
      Src: /src/pdns/pdns/pdnsutil.cc:1235,1
    - Dst: SvcParam::keyToString
      Src: /src/pdns/pdns/pdnsutil.cc:1235,1
    - Dst: qtype::getCode
      Src: /src/pdns/pdns/pdnsutil.cc:1242,1
    - Dst: auto::getPriority
      Src: /src/pdns/pdns/pdnsutil.cc:1244,1
    - Dst: find
      Src: /src/pdns/pdns/pdnsutil.cc:1245,1
    - Dst: end
      Src: /src/pdns/pdns/pdnsutil.cc:1245,1
    - Dst: insert
      Src: /src/pdns/pdns/pdnsutil.cc:1249,1
    - Dst: set::emplace
      Src: /src/pdns/pdns/pdnsutil.cc:1251,1
    - Dst: auto::getPriority
      Src: /src/pdns/pdns/pdnsutil.cc:1251,1
    - Dst: auto::getTarget
      Src: /src/pdns/pdns/pdnsutil.cc:1251,1
    - Dst: auto::autoHint
      Src: /src/pdns/pdns/pdnsutil.cc:1251,1
    - Dst: auto::autoHint
      Src: /src/pdns/pdns/pdnsutil.cc:1251,1
    - Dst: insert
      Src: /src/pdns/pdns/pdnsutil.cc:1252,1
    - Dst: auto::getPriority
      Src: /src/pdns/pdns/pdnsutil.cc:1255,1
    - Dst: find
      Src: /src/pdns/pdns/pdnsutil.cc:1256,1
    - Dst: end
      Src: /src/pdns/pdns/pdnsutil.cc:1256,1
    - Dst: insert
      Src: /src/pdns/pdns/pdnsutil.cc:1260,1
    - Dst: emplace
      Src: /src/pdns/pdns/pdnsutil.cc:1262,1
    - Dst: auto::getPriority
      Src: /src/pdns/pdns/pdnsutil.cc:1262,1
    - Dst: auto::getTarget
      Src: /src/pdns/pdns/pdnsutil.cc:1262,1
    - Dst: auto::autoHint
      Src: /src/pdns/pdns/pdnsutil.cc:1262,1
    - Dst: auto::autoHint
      Src: /src/pdns/pdns/pdnsutil.cc:1262,1
    - Dst: insert
      Src: /src/pdns/pdns/pdnsutil.cc:1263,1
    - Dst: ostringstream::str
      Src: /src/pdns/pdns/pdnsutil.cc:1268,1
    - Dst: qtype::toString
      Src: /src/pdns/pdns/pdnsutil.cc:1269,1
    - Dst: ostringstream::str
      Src: /src/pdns/pdns/pdnsutil.cc:1270,1
    - Dst: qtype::getCode
      Src: /src/pdns/pdns/pdnsutil.cc:1271,1
    - Dst: toLower
      Src: /src/pdns/pdns/pdnsutil.cc:1272,1
    - Dst: set::count
      Src: /src/pdns/pdns/pdnsutil.cc:1274,1
    - Dst: qtype::toString
      Src: /src/pdns/pdns/pdnsutil.cc:1275,1
    - Dst: set::insert
      Src: /src/pdns/pdns/pdnsutil.cc:1279,1
    - Dst: std::move
      Src: /src/pdns/pdns/pdnsutil.cc:1279,1
    - Dst: ostringstream::str
      Src: /src/pdns/pdns/pdnsutil.cc:1281,1
    - Dst: qtype::toString
      Src: /src/pdns/pdns/pdnsutil.cc:1282,1
    - Dst: qtype::getCode
      Src: /src/pdns/pdns/pdnsutil.cc:1283,1
    - Dst: DNSRecordContent::NumberToType
      Src: /src/pdns/pdns/pdnsutil.cc:1285,1
    - Dst: map::insert
      Src: /src/pdns/pdns/pdnsutil.cc:1287,1
    - Dst: pair<string, unsigned int>
      Src: /src/pdns/pdns/pdnsutil.cc:1287,1
    - Dst: toLower
      Src: /src/pdns/pdns/pdnsutil.cc:1287,1
    - Dst: ostringstream::str
      Src: /src/pdns/pdns/pdnsutil.cc:1287,1
    - Dst: qtype::toString
      Src: /src/pdns/pdns/pdnsutil.cc:1289,1
    - Dst: qname::hasLabels
      Src: /src/pdns/pdns/pdnsutil.cc:1294,1
    - Dst: qname::getRawLabel
      Src: /src/pdns/pdns/pdnsutil.cc:1294,1
    - Dst: qtype::toString
      Src: /src/pdns/pdns/pdnsutil.cc:1295,1
    - Dst: qtype::getCode
      Src: /src/pdns/pdns/pdnsutil.cc:1302,1
    - Dst: qtype::getCode
      Src: /src/pdns/pdns/pdnsutil.cc:1304,1
    - Dst: qtype::getCode
      Src: /src/pdns/pdns/pdnsutil.cc:1310,1
    - Dst: qtype::toString
      Src: /src/pdns/pdns/pdnsutil.cc:1311,1
    - Dst: qtype::getCode
      Src: /src/pdns/pdns/pdnsutil.cc:1315,1
    - Dst: qtype::toString
      Src: /src/pdns/pdns/pdnsutil.cc:1316,1
    - Dst: qtype::getCode
      Src: /src/pdns/pdns/pdnsutil.cc:1318,1
    - Dst: DNSName
      Src: /src/pdns/pdns/pdnsutil.cc:1319,1
    - Dst: insert
      Src: /src/pdns/pdns/pdnsutil.cc:1320,1
    - Dst: DNSName
      Src: /src/pdns/pdns/pdnsutil.cc:1320,1
    - Dst: toLower
      Src: /src/pdns/pdns/pdnsutil.cc:1320,1
    - Dst: set::insert
      Src: /src/pdns/pdns/pdnsutil.cc:1322,1
    - Dst: qtype::getCode
      Src: /src/pdns/pdns/pdnsutil.cc:1323,1
    - Dst: qtype::getCode
      Src: /src/pdns/pdns/pdnsutil.cc:1323,1
    - Dst: insert
      Src: /src/pdns/pdns/pdnsutil.cc:1324,1
    - Dst: set::insert
      Src: /src/pdns/pdns/pdnsutil.cc:1330,1
    - Dst: qtype::getCode
      Src: /src/pdns/pdns/pdnsutil.cc:1333,1
    - Dst: qtype::getCode
      Src: /src/pdns/pdns/pdnsutil.cc:1333,1
    - Dst: qname::isWildcard
      Src: /src/pdns/pdns/pdnsutil.cc:1333,1
    - Dst: qname::isHostname
      Src: /src/pdns/pdns/pdnsutil.cc:1333,1
    - Dst: qname::toString
      Src: /src/pdns/pdns/pdnsutil.cc:1334,1
    - Dst: qtype::toString
      Src: /src/pdns/pdns/pdnsutil.cc:1334,1
    - Dst: checkHostnameCorrectness
      Src: /src/pdns/pdns/pdnsutil.cc:1338,1
    - Dst: qtype::toString
      Src: /src/pdns/pdns/pdnsutil.cc:1340,1
    - Dst: what
      Src: /src/pdns/pdns/pdnsutil.cc:1340,1
    - Dst: qtype::getCode
      Src: /src/pdns/pdns/pdnsutil.cc:1344,1
    - Dst: count
      Src: /src/pdns/pdns/pdnsutil.cc:1345,1
    - Dst: insert
      Src: /src/pdns/pdns/pdnsutil.cc:1346,1
    - Dst: qtype::getCode
      Src: /src/pdns/pdns/pdnsutil.cc:1354,1
    - Dst: insert
      Src: /src/pdns/pdns/pdnsutil.cc:1361,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/pdnsutil.cc:1365,1
    - Dst: qtype::getCode
      Src: /src/pdns/pdns/pdnsutil.cc:1368,1
    - Dst: qtype::getCode
      Src: /src/pdns/pdns/pdnsutil.cc:1368,1
    - Dst: qtype::getCode
      Src: /src/pdns/pdns/pdnsutil.cc:1375,1
    - Dst: arg
      Src: /src/pdns/pdns/pdnsutil.cc:1377,1
    - Dst: find
      Src: /src/pdns/pdns/pdnsutil.cc:1394,1
    - Dst: end
      Src: /src/pdns/pdns/pdnsutil.cc:1394,1
    - Dst: DNSName
      Src: /src/pdns/pdns/pdnsutil.cc:1401,1
    - Dst: DNSName::trimToLabels
      Src: /src/pdns/pdns/pdnsutil.cc:1402,1
    - Dst: DNSName::countLabels
      Src: /src/pdns/pdns/pdnsutil.cc:1402,1
    - Dst: find
      Src: /src/pdns/pdns/pdnsutil.cc:1403,1
    - Dst: end
      Src: /src/pdns/pdns/pdnsutil.cc:1403,1
    - Dst: find
      Src: /src/pdns/pdns/pdnsutil.cc:1403,1
    - Dst: end
      Src: /src/pdns/pdns/pdnsutil.cc:1403,1
    - Dst: DNSName::chopOff
      Src: /src/pdns/pdns/pdnsutil.cc:1408,1
    - Dst: DNSName::prependRawLabel
      Src: /src/pdns/pdns/pdnsutil.cc:1409,1
    - Dst: find
      Src: /src/pdns/pdns/pdnsutil.cc:1410,1
    - Dst: end
      Src: /src/pdns/pdns/pdnsutil.cc:1410,1
    - Dst: find
      Src: /src/pdns/pdns/pdnsutil.cc:1410,1
    - Dst: end
      Src: /src/pdns/pdns/pdnsutil.cc:1410,1
    - Dst: isPartOf
      Src: /src/pdns/pdns/pdnsutil.cc:1427,1
    - Dst: find
      Src: /src/pdns/pdns/pdnsutil.cc:1428,1
    - Dst: end
      Src: /src/pdns/pdns/pdnsutil.cc:1428,1
    - Dst: find
      Src: /src/pdns/pdns/pdnsutil.cc:1432,1
    - Dst: end
      Src: /src/pdns/pdns/pdnsutil.cc:1432,1
    - Dst: find
      Src: /src/pdns/pdns/pdnsutil.cc:1432,1
    - Dst: end
      Src: /src/pdns/pdns/pdnsutil.cc:1432,1
    - Dst: isRoot
      Src: /src/pdns/pdns/pdnsutil.cc:1439,1
    - Dst: find
      Src: /src/pdns/pdns/pdnsutil.cc:1441,1
    - Dst: end
      Src: /src/pdns/pdns/pdnsutil.cc:1441,1
    - Dst: find
      Src: /src/pdns/pdns/pdnsutil.cc:1445,1
    - Dst: end
      Src: /src/pdns/pdns/pdnsutil.cc:1445,1
    - Dst: isPartOf
      Src: /src/pdns/pdns/pdnsutil.cc:1459,1
    - Dst: find
      Src: /src/pdns/pdns/pdnsutil.cc:1460,1
    - Dst: end
      Src: /src/pdns/pdns/pdnsutil.cc:1460,1
    - Dst: find
      Src: /src/pdns/pdns/pdnsutil.cc:1464,1
    - Dst: end
      Src: /src/pdns/pdns/pdnsutil.cc:1464,1
    - Dst: find
      Src: /src/pdns/pdns/pdnsutil.cc:1464,1
    - Dst: end
      Src: /src/pdns/pdns/pdnsutil.cc:1464,1
    - Dst: isRoot
      Src: /src/pdns/pdns/pdnsutil.cc:1471,1
    - Dst: find
      Src: /src/pdns/pdns/pdnsutil.cc:1473,1
    - Dst: end
      Src: /src/pdns/pdns/pdnsutil.cc:1473,1
    - Dst: find
      Src: /src/pdns/pdns/pdnsutil.cc:1477,1
    - Dst: end
      Src: /src/pdns/pdns/pdnsutil.cc:1477,1
    - Dst: count
      Src: /src/pdns/pdns/pdnsutil.cc:1490,1
    - Dst: qname::isPartOf
      Src: /src/pdns/pdns/pdnsutil.cc:1506,1
    - Dst: qtype::getCode
      Src: /src/pdns/pdns/pdnsutil.cc:1516,1
    - Dst: qtype::getCode
      Src: /src/pdns/pdns/pdnsutil.cc:1516,1
    - Dst: qtype::toString
      Src: /src/pdns/pdns/pdnsutil.cc:1517,1
    - Dst: DNSName::DNSName
      Src: /src/pdns/pdns/pdnsutil.cc:1531,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/pdnsutil.cc:1532,1
    - Dst: qtype::getCode
      Src: /src/pdns/pdns/pdnsutil.cc:1532,1
    - Dst: std::dynamic_pointer_cast<MXRecordContent>
      Src: /src/pdns/pdns/pdnsutil.cc:1535,1
    - Dst: std::dynamic_pointer_cast<SRVRecordContent>
      Src: /src/pdns/pdns/pdnsutil.cc:1538,1
    - Dst: std::dynamic_pointer_cast<NSRecordContent>
      Src: /src/pdns/pdns/pdnsutil.cc:1541,1
    - Dst: DNSName::isPartOf
      Src: /src/pdns/pdns/pdnsutil.cc:1547,1
    - Dst: count
      Src: /src/pdns/pdns/pdnsutil.cc:1547,1
    - Dst: qtype::toString
      Src: /src/pdns/pdns/pdnsutil.cc:1548,1
    - Dst: SOAData::db::doesDNSSEC
      Src: /src/pdns/pdns/pdnsutil.cc:1557,1
    - Dst: qname::isPartOf
      Src: /src/pdns/pdns/pdnsutil.cc:1567,1
    - Dst: first::isPartOf
      Src: /src/pdns/pdns/pdnsutil.cc:1570,1
    - Dst: qname::isPartOf
      Src: /src/pdns/pdns/pdnsutil.cc:1573,1
    - Dst: qtype::getCode
      Src: /src/pdns/pdns/pdnsutil.cc:1579,1
    - Dst: qtype::toString
      Src: /src/pdns/pdns/pdnsutil.cc:1584,1
    - Dst: UeberBackend::getAllDomainMetadata
      Src: /src/pdns/pdns/pdnsutil.cc:1590,1
    - Dst: set::count
      Src: /src/pdns/pdns/pdnsutil.cc:1596,1
    - Dst: set::insert
      Src: /src/pdns/pdns/pdnsutil.cc:1597,1
    - Dst: set::count
      Src: /src/pdns/pdns/pdnsutil.cc:1599,1
    - Dst: set::insert
      Src: /src/pdns/pdns/pdnsutil.cc:1602,1
    - Dst: vector::size
      Src: /src/pdns/pdns/pdnsutil.cc:1608,1
    CyclomaticComplexity: 206
    EdgeCount: 206
    ICount: 482
    argCount: 3
    argNames:
    - dk
    - B
    - ' zone'
    argTypes:
    - DNSSECKeeper
    - UeberBackend
    - ZoneName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1610
      start: 956
    functionDepth: 1
    functionLinenumber: 956
    functionLinenumberEnd: 1610
    functionName: checkZone
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 0
    functionsReached:
    - DNSSECKeeper::isSecuredZone
    - inet_pton
    - DNSCryptoKeyEngine::makeFromISCString
    - DNSName::trimToLabels
    - SOAData::db::list
    - UeberBackend::getDomainInfo
    - shared_ptr::serialize
    - DNSName::chopOff
    - DNSName::isPartOf
    - vector::push_back
    - pdns_iequals
    - qname::toString
    - DNSName::prependRawLabel
    - DNSSECKeeper::checkKeys
    - arg
    - DNSKEYRecordContent::DNSKEYRecordContent
    - auto::getPriority
    - DNSName::countLabels
    - std::dynamic_pointer_cast<LUARecordContent>
    - DNSSECKeeper::isPresigned
    - wirelength
    - auto::getParam
    - qname::hasLabels
    - UeberBackend::lookupEnd
    - NSEC3PARAMRecordContent::d_salt::empty
    - SOAData::db::doesDNSSEC
    - isPartOf
    - toLower
    - DNSName
    - qtype::getCode
    - auto::hasParam
    - auto::autoHint
    - std::vector::empty
    - std::dynamic_pointer_cast<SRVRecordContent>
    - qname::isWildcard
    - auto::getTarget
    - end
    - std::dynamic_pointer_cast<SVCBBaseRecordContent>
    - qname::isPartOf
    - SvcParam::keyToString
    - vector::size
    - UeberBackend::getDomainKeys
    - content::empty
    - isRoot
    - find
    - shared_ptr::getZoneRepresentation
    - std::dynamic_pointer_cast<MXRecordContent>
    - set::insert
    - QType
    - auto::hasParams
    - ostringstream::str
    - content::c_str
    - map::insert
    - first::isPartOf
    - std::move
    - qtype::toString
    - count
    - qname::getRawLabel
    - checkHostnameCorrectness
    - ZoneName::chopOff
    - SOAData::db::get_unsafe
    - set::count
    - std::to_string
    - DNSResourceRecord::qname::empty
    - areUnderscoresAllowed
    - insert
    - set::emplace
    - UeberBackend::getSOAUncached
    - stringtok
    - terminalSafe
    - UeberBackend::get
    - qname::isHostname
    - DNSRecordContent::make
    - DNSRecordContent::NumberToType
    - DNSSECKeeper::getNSEC3PARAM
    - what
    - UeberBackend::getAllDomainMetadata
    - std::dynamic_pointer_cast<NSRecordContent>
    - pair<string, unsigned int>
    - NSEC3PARAMRecordContent::NSEC3PARAMRecordContent
    - DomainInfo::backend::getCapabilities
    - UeberBackend::lookup
    - DNSName::DNSName
    - emplace
    linkageType: ''
    returnType: int
    signature: int checkZone(DNSSECKeeper &dk, UeberBackend &B, const ZoneName& zone,
      const vector<DNSResourceRecord>* suppliedrecords=nullptr)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: multi_index_container::get
      Src: /src/pdns/pdns/pdnsutil.cc:1623,1
    - Dst: multi_index_container::get
      Src: /src/pdns/pdns/pdnsutil.cc:1624,1
    - Dst: UtilBackend::getAllDomains
      Src: /src/pdns/pdns/pdnsutil.cc:1626,1
    - Dst: checkZone
      Src: /src/pdns/pdns/pdnsutil.cc:1629,1
    - Dst: find
      Src: /src/pdns/pdns/pdnsutil.cc:1633,1
    - Dst: end
      Src: /src/pdns/pdns/pdnsutil.cc:1634,1
    - Dst: find
      Src: /src/pdns/pdns/pdnsutil.cc:1639,1
    - Dst: end
      Src: /src/pdns/pdns/pdnsutil.cc:1640,1
    - Dst: backend::getPrefix
      Src: /src/pdns/pdns/pdnsutil.cc:1641,1
    - Dst: auto::backend::getPrefix
      Src: /src/pdns/pdns/pdnsutil.cc:1641,1
    - Dst: multi_index_container::insert
      Src: /src/pdns/pdns/pdnsutil.cc:1645,1
    - Dst: std::move
      Src: /src/pdns/pdns/pdnsutil.cc:1645,1
    - Dst: vector::size
      Src: /src/pdns/pdns/pdnsutil.cc:1651,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 23
    argCount: 2
    argNames:
    - dk
    - exitOnError
    argTypes:
    - DNSSECKeeper
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1656
      start: 1612
    functionDepth: 2
    functionLinenumber: 1612
    functionLinenumberEnd: 1656
    functionName: checkAllZones
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 0
    functionsReached:
    - checkZone
    - auto::backend::getPrefix
    - std::move
    - multi_index_container::insert
    - end
    - multi_index_container::get
    - UtilBackend::getAllDomains
    - vector::size
    - backend::getPrefix
    - find
    linkageType: ''
    returnType: int
    signature: int checkAllZones(DNSSECKeeper &dk, bool exitOnError)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: UtilBackend::getSOAUncached
      Src: /src/pdns/pdns/pdnsutil.cc:1662,1
    - Dst: DNSSECKeeper::isPresigned
      Src: /src/pdns/pdns/pdnsutil.cc:1667,1
    - Dst: UtilBackend::getDomainInfo
      Src: /src/pdns/pdns/pdnsutil.cc:1673,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/pdnsutil.cc:1676,1
    - Dst: DomainInfo::isSecondaryType
      Src: /src/pdns/pdns/pdnsutil.cc:1680,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/pdnsutil.cc:1681,1
    - Dst: DNSSECKeeper::getSoaEdit
      Src: /src/pdns/pdns/pdnsutil.cc:1686,1
    - Dst: makeIncreasedSOARecord
      Src: /src/pdns/pdns/pdnsutil.cc:1689,1
    - Dst: SOAData::db::startTransaction
      Src: /src/pdns/pdns/pdnsutil.cc:1691,1
    - Dst: SOAData::db::replaceRRSet
      Src: /src/pdns/pdns/pdnsutil.cc:1694,1
    - Dst: SOAData::db::abortTransaction
      Src: /src/pdns/pdns/pdnsutil.cc:1696,1
    - Dst: SOAData::db::doesDNSSEC
      Src: /src/pdns/pdns/pdnsutil.cc:1700,1
    - Dst: NSEC3PARAMRecordContent::NSEC3PARAMRecordContent
      Src: /src/pdns/pdns/pdnsutil.cc:1701,1
    - Dst: DNSSECKeeper::getNSEC3PARAM
      Src: /src/pdns/pdns/pdnsutil.cc:1703,1
    - Dst: DNSName::DNSName
      Src: /src/pdns/pdns/pdnsutil.cc:1705,1
    - Dst: DNSName
      Src: /src/pdns/pdns/pdnsutil.cc:1708,1
    - Dst: toBase32Hex
      Src: /src/pdns/pdns/pdnsutil.cc:1708,1
    - Dst: hashQNameWithSalt
      Src: /src/pdns/pdns/pdnsutil.cc:1708,1
    - Dst: DNSName
      Src: /src/pdns/pdns/pdnsutil.cc:1710,1
    - Dst: SOAData::db::updateDNSSECOrderNameAndAuth
      Src: /src/pdns/pdns/pdnsutil.cc:1713,1
    - Dst: SOAData::db::commitTransaction
      Src: /src/pdns/pdns/pdnsutil.cc:1716,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 40
    argCount: 2
    argNames:
    - ' zone'
    - dsk
    argTypes:
    - ZoneName
    - DNSSECKeeper
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1720
      start: 1658
    functionDepth: 1
    functionLinenumber: 1658
    functionLinenumberEnd: 1720
    functionName: increaseSerial
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 0
    functionsReached:
    - DomainInfo::isSecondaryType
    - PDNSException
    - SOAData::db::updateDNSSECOrderNameAndAuth
    - SOAData::db::replaceRRSet
    - hashQNameWithSalt
    - SOAData::db::doesDNSSEC
    - DNSName
    - DNSSECKeeper::getSoaEdit
    - makeIncreasedSOARecord
    - SOAData::db::commitTransaction
    - DNSSECKeeper::getNSEC3PARAM
    - UtilBackend::getSOAUncached
    - SOAData::db::abortTransaction
    - UtilBackend::getDomainInfo
    - SOAData::db::startTransaction
    - NSEC3PARAMRecordContent::NSEC3PARAMRecordContent
    - toBase32Hex
    - DNSName::DNSName
    - DNSSECKeeper::isPresigned
    linkageType: ''
    returnType: int
    signature: int increaseSerial(const ZoneName& zone, DNSSECKeeper &dsk)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: UtilBackend::UtilBackend
      Src: /src/pdns/pdns/pdnsutil.cc:1723,1
    - Dst: UtilBackend::getDomainInfo
      Src: /src/pdns/pdns/pdnsutil.cc:1725,1
    - Dst: DomainInfo::backend::startTransaction
      Src: /src/pdns/pdns/pdnsutil.cc:1730,1
    - Dst: DomainInfo::backend::deleteDomain
      Src: /src/pdns/pdns/pdnsutil.cc:1732,1
    - Dst: DomainInfo::backend::commitTransaction
      Src: /src/pdns/pdns/pdnsutil.cc:1733,1
    - Dst: DomainInfo::backend::abortTransaction
      Src: /src/pdns/pdns/pdnsutil.cc:1738,1
    - Dst: DomainInfo::backend::abortTransaction
      Src: /src/pdns/pdns/pdnsutil.cc:1747,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 22
    argCount: 1
    argNames:
    - zone
    argTypes:
    - ZoneName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1752
      start: 1722
    functionDepth: 1
    functionLinenumber: 1722
    functionLinenumberEnd: 1752
    functionName: deleteZone
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 0
    functionsReached:
    - DomainInfo::backend::abortTransaction
    - UtilBackend::UtilBackend
    - UtilBackend::getDomainInfo
    - DomainInfo::backend::commitTransaction
    - DomainInfo::backend::deleteDomain
    - DomainInfo::backend::startTransaction
    linkageType: ''
    returnType: int
    signature: int deleteZone(const ZoneName &zone)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: getKeys
      Src: /src/pdns/pdns/pdnsutil.cc:1760,1
    - Dst: DomainInfo::zone::toStringNoDot
      Src: /src/pdns/pdns/pdnsutil.cc:1762,1
    - Dst: string
      Src: /src/pdns/pdns/pdnsutil.cc:1763,1
    - Dst: string
      Src: /src/pdns/pdns/pdnsutil.cc:1765,1
    - Dst: DomainInfo::zone::toStringNoDot
      Src: /src/pdns/pdns/pdnsutil.cc:1765,1
    - Dst: DNSSEC::keyTypeToString
      Src: /src/pdns/pdns/pdnsutil.cc:1767,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/pdnsutil.cc:1781,1
    - Dst: first::getKey
      Src: /src/pdns/pdns/pdnsutil.cc:1781,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/pdnsutil.cc:1781,1
    - Dst: first::getKey
      Src: /src/pdns/pdns/pdnsutil.cc:1781,1
    - Dst: first::getKey
      Src: /src/pdns/pdns/pdnsutil.cc:1782,1
    - Dst: first::getKey
      Src: /src/pdns/pdns/pdnsutil.cc:1786,1
    - Dst: string
      Src: /src/pdns/pdns/pdnsutil.cc:1786,1
    - Dst: DNSSEC::algorithm2name
      Src: /src/pdns/pdns/pdnsutil.cc:1788,1
    - Dst: first::getAlgorithm
      Src: /src/pdns/pdns/pdnsutil.cc:1788,1
    - Dst: string::length
      Src: /src/pdns/pdns/pdnsutil.cc:1789,1
    - Dst: string::length
      Src: /src/pdns/pdns/pdnsutil.cc:1789,1
    - Dst: string
      Src: /src/pdns/pdns/pdnsutil.cc:1790,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/pdnsutil.cc:1792,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/pdnsutil.cc:1792,1
    - Dst: string
      Src: /src/pdns/pdns/pdnsutil.cc:1793,1
    - Dst: first::getKey
      Src: /src/pdns/pdns/pdnsutil.cc:1796,1
    - Dst: string::empty
      Src: /src/pdns/pdns/pdnsutil.cc:1809,1
    - Dst: string::empty
      Src: /src/pdns/pdns/pdnsutil.cc:1809,1
    - Dst: string::length
      Src: /src/pdns/pdns/pdnsutil.cc:1812,1
    - Dst: string::length
      Src: /src/pdns/pdns/pdnsutil.cc:1812,1
    - Dst: string::length
      Src: /src/pdns/pdns/pdnsutil.cc:1812,1
    - Dst: string::length
      Src: /src/pdns/pdns/pdnsutil.cc:1812,1
    - Dst: string::length
      Src: /src/pdns/pdns/pdnsutil.cc:1812,1
    - Dst: string::length
      Src: /src/pdns/pdns/pdnsutil.cc:1812,1
    - Dst: string
      Src: /src/pdns/pdns/pdnsutil.cc:1813,1
    - Dst: first::getDNSKEY
      Src: /src/pdns/pdns/pdnsutil.cc:1818,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 46
    argCount: 2
    argNames:
    - di
    - ' dk'
    argTypes:
    - DomainInfo
    - DNSSECKeeper
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1820
      start: 1754
    functionDepth: 0
    functionLinenumber: 1754
    functionLinenumberEnd: 1820
    functionName: listKey
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 0
    functionsReached:
    - std::to_string
    - getKeys
    - string::empty
    - DNSSEC::keyTypeToString
    - string
    - DNSSEC::algorithm2name
    - first::getAlgorithm
    - DomainInfo::zone::toStringNoDot
    - first::getDNSKEY
    - first::getKey
    - string::length
    linkageType: ''
    returnType: void
    signature: void listKey(DomainInfo const &di, DNSSECKeeper& dk, bool printHeader
      = true)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: string::empty
      Src: /src/pdns/pdns/pdnsutil.cc:1825,1
    - Dst: UtilBackend::getDomainInfo
      Src: /src/pdns/pdns/pdnsutil.cc:1827,1
    - Dst: ZoneName
      Src: /src/pdns/pdns/pdnsutil.cc:1827,1
    - Dst: listKey
      Src: /src/pdns/pdns/pdnsutil.cc:1831,1
    - Dst: UtilBackend::getAllDomains
      Src: /src/pdns/pdns/pdnsutil.cc:1834,1
    - Dst: listKey
      Src: /src/pdns/pdns/pdnsutil.cc:1837,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 2
    argNames:
    - zname
    - ' dk'
    argTypes:
    - string
    - DNSSECKeeper
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1842
      start: 1822
    functionDepth: 1
    functionLinenumber: 1822
    functionLinenumberEnd: 1842
    functionName: listKeys
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 0
    functionsReached:
    - string::empty
    - UtilBackend::getDomainInfo
    - listKey
    - UtilBackend::getAllDomains
    - ZoneName
    linkageType: ''
    returnType: int
    signature: int listKeys(const string &zname, DNSSECKeeper& dk)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: UtilBackend::UtilBackend
      Src: /src/pdns/pdns/pdnsutil.cc:1845,1
    - Dst: UtilBackend::getDomainInfo
      Src: /src/pdns/pdns/pdnsutil.cc:1848,1
    - Dst: DomainInfo::backend::getCapabilities
      Src: /src/pdns/pdns/pdnsutil.cc:1852,1
    - Dst: std::ostream::sync_with_stdio
      Src: /src/pdns/pdns/pdnsutil.cc:1857,1
    - Dst: DomainInfo::backend::list
      Src: /src/pdns/pdns/pdnsutil.cc:1870,1
    - Dst: DomainInfo::backend::get
      Src: /src/pdns/pdns/pdnsutil.cc:1871,1
    - Dst: DNSResourceRecord::qtype::getCode
      Src: /src/pdns/pdns/pdnsutil.cc:1872,1
    - Dst: std::vector::emplace_back
      Src: /src/pdns/pdns/pdnsutil.cc:1873,1
    - Dst: DNSRecord
      Src: /src/pdns/pdns/pdnsutil.cc:1873,1
    - Dst: sort
      Src: /src/pdns/pdns/pdnsutil.cc:1876,1
    - Dst: std::vector::begin
      Src: /src/pdns/pdns/pdnsutil.cc:1876,1
    - Dst: std::vector::end
      Src: /src/pdns/pdns/pdnsutil.cc:1876,1
    - Dst: formatRecord
      Src: /src/pdns/pdns/pdnsutil.cc:1878,1
    - Dst: DomainInfo::backend::list
      Src: /src/pdns/pdns/pdnsutil.cc:1882,1
    - Dst: DomainInfo::backend::get
      Src: /src/pdns/pdns/pdnsutil.cc:1883,1
    - Dst: DNSResourceRecord::qtype::getCode
      Src: /src/pdns/pdns/pdnsutil.cc:1884,1
    - Dst: formatRecord
      Src: /src/pdns/pdns/pdnsutil.cc:1885,1
    - Dst: DNSRecord
      Src: /src/pdns/pdns/pdnsutil.cc:1885,1
    - Dst: flush
      Src: /src/pdns/pdns/pdnsutil.cc:1890,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 31
    argCount: 1
    argNames:
    - zone
    argTypes:
    - ZoneName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1892
      start: 1844
    functionDepth: 1
    functionLinenumber: 1844
    functionLinenumberEnd: 1892
    functionName: listZone
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 0
    functionsReached:
    - std::vector::end
    - std::vector::begin
    - UtilBackend::UtilBackend
    - UtilBackend::getDomainInfo
    - DomainInfo::backend::get
    - std::vector::emplace_back
    - DNSRecord
    - DomainInfo::backend::list
    - formatRecord
    - DomainInfo::backend::getCapabilities
    - DNSResourceRecord::qtype::getCode
    - sort
    - std::ostream::sync_with_stdio
    - flush
    linkageType: ''
    returnType: int
    signature: int listZone(const ZoneName &zone)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: UtilBackend::UtilBackend
      Src: /src/pdns/pdns/pdnsutil.cc:1895,1
    - Dst: UtilBackend::getDomainInfo
      Src: /src/pdns/pdns/pdnsutil.cc:1898,1
    - Dst: DomainInfo::backend::getCapabilities
      Src: /src/pdns/pdns/pdnsutil.cc:1902,1
    - Dst: DomainInfo::backend::listComments
      Src: /src/pdns/pdns/pdnsutil.cc:1909,1
    - Dst: DomainInfo::backend::getComment
      Src: /src/pdns/pdns/pdnsutil.cc:1910,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 1
    argNames:
    - zone
    argTypes:
    - ZoneName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1914
      start: 1894
    functionDepth: 1
    functionLinenumber: 1894
    functionLinenumberEnd: 1914
    functionName: listComments
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 1
    functionsReached:
    - UtilBackend::UtilBackend
    - UtilBackend::getDomainInfo
    - DomainInfo::backend::listComments
    - DomainInfo::backend::getCapabilities
    - DomainInfo::backend::getComment
    linkageType: ''
    returnType: int
    signature: int listComments(const ZoneName &zone)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: tcgetattr
      Src: /src/pdns/pdns/pdnsutil.cc:1926,1
    - Dst: tcsetattr
      Src: /src/pdns/pdns/pdnsutil.cc:1936,1
    - Dst: getchar
      Src: /src/pdns/pdns/pdnsutil.cc:1938,1
    - Dst: tcsetattr
      Src: /src/pdns/pdns/pdnsutil.cc:1941,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1944
      start: 1919
    functionDepth: 0
    functionLinenumber: 1919
    functionLinenumberEnd: 1944
    functionName: read1char
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 0
    functionsReached:
    - tcsetattr
    - tcgetattr
    - getchar
    linkageType: ''
    returnType: int
    signature: int read1char()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: UtilBackend::UtilBackend
      Src: /src/pdns/pdns/pdnsutil.cc:1947,1
    - Dst: UtilBackend::getDomainInfo
      Src: /src/pdns/pdns/pdnsutil.cc:1950,1
    - Dst: DomainInfo::backend::startTransaction
      Src: /src/pdns/pdns/pdnsutil.cc:1954,1
    - Dst: DomainInfo::backend::commitTransaction
      Src: /src/pdns/pdns/pdnsutil.cc:1958,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - zone
    argTypes:
    - ZoneName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1960
      start: 1946
    functionDepth: 1
    functionLinenumber: 1946
    functionLinenumberEnd: 1960
    functionName: clearZone
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 0
    functionsReached:
    - DomainInfo::backend::startTransaction
    - UtilBackend::UtilBackend
    - DomainInfo::backend::commitTransaction
    - UtilBackend::getDomainInfo
    linkageType: ''
    returnType: int
    signature: int clearZone(const ZoneName &zone)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: zone::hasVariant
      Src: /src/pdns/pdns/pdnsutil.cc:1979,1
    - Dst: DNSBackend*::getCapabilities
      Src: /src/pdns/pdns/pdnsutil.cc:1979,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/pdnsutil.cc:1981,1
    - Dst: DNSBackend*::createDomain
      Src: /src/pdns/pdns/pdnsutil.cc:1985,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/pdnsutil.cc:1986,1
    - Dst: toLogString
      Src: /src/pdns/pdns/pdnsutil.cc:1986,1
    - Dst: DNSBackend*::getDomainInfo
      Src: /src/pdns/pdns/pdnsutil.cc:1988,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/pdnsutil.cc:1989,1
    - Dst: toLogString
      Src: /src/pdns/pdns/pdnsutil.cc:1989,1
    - Dst: DNSBackend*::list
      Src: /src/pdns/pdns/pdnsutil.cc:1993,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/pdnsutil.cc:1994,1
    - Dst: zone::toLogString
      Src: /src/pdns/pdns/pdnsutil.cc:1994,1
    - Dst: DNSBackend*::startTransaction
      Src: /src/pdns/pdns/pdnsutil.cc:1999,1
    - Dst: DNSBackend*::get
      Src: /src/pdns/pdns/pdnsutil.cc:2001,1
    - Dst: DNSResourceRecord::qname::makeUsRelative
      Src: /src/pdns/pdns/pdnsutil.cc:2004,1
    - Dst: DNSBackend*::feedRecord
      Src: /src/pdns/pdns/pdnsutil.cc:2009,1
    - Dst: DNSName
      Src: /src/pdns/pdns/pdnsutil.cc:2009,1
    - Dst: DNSBackend*::abortTransaction
      Src: /src/pdns/pdns/pdnsutil.cc:2010,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/pdnsutil.cc:2011,1
    - Dst: DNSResourceRecord::qname::toLogString
      Src: /src/pdns/pdns/pdnsutil.cc:2011,1
    - Dst: toLogString
      Src: /src/pdns/pdns/pdnsutil.cc:2011,1
    - Dst: DNSBackend*::listComments
      Src: /src/pdns/pdns/pdnsutil.cc:2017,1
    - Dst: DNSBackend*::getComment
      Src: /src/pdns/pdns/pdnsutil.cc:2021,1
    - Dst: DNSBackend*::getCapabilities
      Src: /src/pdns/pdns/pdnsutil.cc:2024,1
    - Dst: DNSBackend*::abortTransaction
      Src: /src/pdns/pdns/pdnsutil.cc:2029,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/pdnsutil.cc:2030,1
    - Dst: Comment::qname::makeUsRelative
      Src: /src/pdns/pdns/pdnsutil.cc:2037,1
    - Dst: DNSBackend*::feedComment
      Src: /src/pdns/pdns/pdnsutil.cc:2040,1
    - Dst: DNSBackend*::abortTransaction
      Src: /src/pdns/pdns/pdnsutil.cc:2041,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/pdnsutil.cc:2042,1
    - Dst: DNSBackend*::getAllDomainMetadata
      Src: /src/pdns/pdns/pdnsutil.cc:2051,1
    - Dst: DNSBackend*::setDomainMetadata
      Src: /src/pdns/pdns/pdnsutil.cc:2053,1
    - Dst: DNSBackend*::abortTransaction
      Src: /src/pdns/pdns/pdnsutil.cc:2054,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/pdnsutil.cc:2055,1
    - Dst: DNSBackend*::getDomainKeys
      Src: /src/pdns/pdns/pdnsutil.cc:2064,1
    - Dst: DNSBackend*::addDomainKey
      Src: /src/pdns/pdns/pdnsutil.cc:2066,1
    - Dst: DNSBackend*::commitTransaction
      Src: /src/pdns/pdns/pdnsutil.cc:2071,1
    CyclomaticComplexity: 29
    EdgeCount: 29
    ICount: 70
    argCount: 3
    argNames:
    - ' srcinfo'
    - ' dstzone'
    - tgt
    argTypes:
    - DomainInfo
    - ZoneName
    - DNSBackend*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2073
      start: 1964
    functionDepth: 2
    functionLinenumber: 1964
    functionLinenumberEnd: 2073
    functionName: copyZoneContents
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 0
    functionsReached:
    - DNSBackend*::list
    - toLogString
    - DNSBackend*::addDomainKey
    - PDNSException
    - DNSBackend*::createDomain
    - DNSBackend*::startTransaction
    - DNSBackend*::getDomainKeys
    - zone::toLogString
    - DNSResourceRecord::qname::toLogString
    - Comment::qname::makeUsRelative
    - DNSBackend*::getComment
    - DNSBackend*::feedRecord
    - DNSBackend*::getAllDomainMetadata
    - DNSBackend*::listComments
    - DNSBackend*::get
    - DNSBackend*::feedComment
    - DNSResourceRecord::qname::makeUsRelative
    - zone::hasVariant
    - DNSBackend*::getCapabilities
    - DNSName
    - DNSBackend*::commitTransaction
    - DNSBackend*::getDomainInfo
    - DNSBackend*::abortTransaction
    - DNSBackend*::setDomainMetadata
    linkageType: ''
    returnType: void
    signature: void copyZoneContents(const DomainInfo& srcinfo, const ZoneName& dstzone,
      DNSBackend* tgt)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: isatty
      Src: /src/pdns/pdns/pdnsutil.cc:2079,1
    - Dst: getenv
      Src: /src/pdns/pdns/pdnsutil.cc:2079,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 1
    argCount: 1
    argNames:
    - nocolors
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2081
      start: 2078
    functionDepth: 0
    functionLinenumber: 2078
    functionLinenumberEnd: 2081
    functionName: PDNSColors::PDNSColors
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 0
    functionsReached:
    - isatty
    - getenv
    linkageType: ''
    returnType: void
    signature: void PDNSColors(bool nocolors)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2085
      start: 2082
    functionDepth: 0
    functionLinenumber: 2082
    functionLinenumberEnd: 2085
    functionName: PDNSColors::red
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: string
    signature: string red() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2089
      start: 2086
    functionDepth: 0
    functionLinenumber: 2086
    functionLinenumberEnd: 2089
    functionName: PDNSColors::green
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: string
    signature: string green() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2093
      start: 2090
    functionDepth: 0
    functionLinenumber: 2090
    functionLinenumberEnd: 2093
    functionName: PDNSColors::bold
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: string
    signature: string bold() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2097
      start: 2094
    functionDepth: 0
    functionLinenumber: 2094
    functionLinenumberEnd: 2097
    functionName: PDNSColors::rst
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: string
    signature: string rst() const
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: sigemptyset
      Src: /src/pdns/pdns/pdnsutil.cc:2108,1
    - Dst: sigaddset
      Src: /src/pdns/pdns/pdnsutil.cc:2109,1
    - Dst: sigaddset
      Src: /src/pdns/pdns/pdnsutil.cc:2110,1
    - Dst: sigaddset
      Src: /src/pdns/pdns/pdnsutil.cc:2111,1
    - Dst: sigprocmask
      Src: /src/pdns/pdns/pdnsutil.cc:2112,1
    - Dst: fork
      Src: /src/pdns/pdns/pdnsutil.cc:2114,1
    - Dst: stringtok
      Src: /src/pdns/pdns/pdnsutil.cc:2119,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/pdnsutil.cc:2122,1
    - Dst: std::vector::emplace_back
      Src: /src/pdns/pdns/pdnsutil.cc:2123,1
    - Dst: std::vector::reserve
      Src: /src/pdns/pdns/pdnsutil.cc:2126,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/pdnsutil.cc:2126,1
    - Dst: std::vector::emplace_back
      Src: /src/pdns/pdns/pdnsutil.cc:2128,1
    - Dst: c_str
      Src: /src/pdns/pdns/pdnsutil.cc:2128,1
    - Dst: std::vector::emplace_back
      Src: /src/pdns/pdns/pdnsutil.cc:2130,1
    - Dst: std::string_view::data
      Src: /src/pdns/pdns/pdnsutil.cc:2130,1
    - Dst: std::vector::emplace_back
      Src: /src/pdns/pdns/pdnsutil.cc:2131,1
    - Dst: ::execvp
      Src: /src/pdns/pdns/pdnsutil.cc:2132,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/pdnsutil.cc:2132,1
    - Dst: const_cast<char * const*>
      Src: /src/pdns/pdns/pdnsutil.cc:2132,1
    - Dst: std::vector::data
      Src: /src/pdns/pdns/pdnsutil.cc:2132,1
    - Dst: ::exit
      Src: /src/pdns/pdns/pdnsutil.cc:2133,1
    - Dst: unixDie
      Src: /src/pdns/pdns/pdnsutil.cc:2139,1
    - Dst: waitpid
      Src: /src/pdns/pdns/pdnsutil.cc:2146,1
    - Dst: sigprocmask
      Src: /src/pdns/pdns/pdnsutil.cc:2148,1
    - Dst: WIFEXITED
      Src: /src/pdns/pdns/pdnsutil.cc:2152,1
    - Dst: WEXITSTATUS
      Src: /src/pdns/pdns/pdnsutil.cc:2153,1
    - Dst: WIFSIGNALED
      Src: /src/pdns/pdns/pdnsutil.cc:2156,1
    - Dst: WTERMSIG
      Src: /src/pdns/pdns/pdnsutil.cc:2157,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 46
    argCount: 4
    argNames:
    - ' editor'
    - tmpfile
    - gotoline
    - result
    argTypes:
    - std::string
    - std::string_view
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2164
      start: 2102
    functionDepth: 0
    functionLinenumber: 2102
    functionLinenumberEnd: 2164
    functionName: spawnEditor
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 0
    functionsReached:
    - std::to_string
    - std::string_view::data
    - std::vector::at
    - std::vector::data
    - stringtok
    - std::vector::size
    - unixDie
    - ::execvp
    - c_str
    - WIFEXITED
    - sigaddset
    - fork
    - std::vector::reserve
    - sigemptyset
    - WEXITSTATUS
    - sigprocmask
    - WIFSIGNALED
    - WTERMSIG
    - std::vector::emplace_back
    - waitpid
    - ::exit
    - const_cast<char * const*>
    linkageType: ''
    returnType: bool
    signature: bool spawnEditor(const std::string& editor, std::string_view tmpfile,
      int gotoline, int &result)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: backend::list
      Src: /src/pdns/pdns/pdnsutil.cc:2174,1
    - Dst: open
      Src: /src/pdns/pdns/pdnsutil.cc:2175,1
    - Dst: unixDie
      Src: /src/pdns/pdns/pdnsutil.cc:2176,1
    - Dst: string
      Src: /src/pdns/pdns/pdnsutil.cc:2176,1
    - Dst: write
      Src: /src/pdns/pdns/pdnsutil.cc:2179,1
    - Dst: std::string_view::data
      Src: /src/pdns/pdns/pdnsutil.cc:2179,1
    - Dst: std::string_view::length
      Src: /src/pdns/pdns/pdnsutil.cc:2179,1
    - Dst: unixDie
      Src: /src/pdns/pdns/pdnsutil.cc:2180,1
    - Dst: backend::get
      Src: /src/pdns/pdns/pdnsutil.cc:2183,1
    - Dst: DNSResourceRecord::qtype::getCode
      Src: /src/pdns/pdns/pdnsutil.cc:2184,1
    - Dst: std::vector::emplace_back
      Src: /src/pdns/pdns/pdnsutil.cc:2188,1
    - Dst: std::move
      Src: /src/pdns/pdns/pdnsutil.cc:2188,1
    - Dst: sort
      Src: /src/pdns/pdns/pdnsutil.cc:2190,1
    - Dst: std::vector::begin
      Src: /src/pdns/pdns/pdnsutil.cc:2190,1
    - Dst: std::vector::end
      Src: /src/pdns/pdns/pdnsutil.cc:2190,1
    - Dst: formatRecord
      Src: /src/pdns/pdns/pdnsutil.cc:2193,1
    - Dst: write
      Src: /src/pdns/pdns/pdnsutil.cc:2194,1
    - Dst: ostringstream::str
      Src: /src/pdns/pdns/pdnsutil.cc:2194,1
    - Dst: ostringstream::str
      Src: /src/pdns/pdns/pdnsutil.cc:2194,1
    - Dst: unixDie
      Src: /src/pdns/pdns/pdnsutil.cc:2195,1
    - Dst: close
      Src: /src/pdns/pdns/pdnsutil.cc:2198,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 23
    argCount: 3
    argNames:
    - ' tmpfd'
    - tmpnam
    - ' info'
    argTypes:
    - int
    - char*
    - DomainInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2201
      start: 2170
    functionDepth: 1
    functionLinenumber: 2170
    functionLinenumberEnd: 2201
    functionName: fillTempZoneFile
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 0
    functionsReached:
    - backend::get
    - std::vector::end
    - std::move
    - std::string_view::length
    - unixDie
    - std::string_view::data
    - std::vector::begin
    - string
    - std::vector::emplace_back
    - open
    - formatRecord
    - write
    - DNSResourceRecord::qtype::getCode
    - backend::list
    - sort
    - ostringstream::str
    - close
    linkageType: ''
    returnType: std::vector<DNSRecord>
    signature: std::vector<DNSRecord> fillTempZoneFile(int& tmpfd, const char* tmpnam,
      DomainInfo& info)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: clear
      Src: /src/pdns/pdns/pdnsutil.cc:2209,1
    - Dst: ZoneParserTNG::setMaxGenerateSteps
      Src: /src/pdns/pdns/pdnsutil.cc:2211,1
    - Dst: arg
      Src: /src/pdns/pdns/pdnsutil.cc:2211,1
    - Dst: ZoneParserTNG::setMaxIncludes
      Src: /src/pdns/pdns/pdnsutil.cc:2212,1
    - Dst: arg
      Src: /src/pdns/pdns/pdnsutil.cc:2212,1
    - Dst: ZoneParserTNG::get
      Src: /src/pdns/pdns/pdnsutil.cc:2215,1
    - Dst: push_back
      Src: /src/pdns/pdns/pdnsutil.cc:2217,1
    - Dst: std::move
      Src: /src/pdns/pdns/pdnsutil.cc:2217,1
    - Dst: what
      Src: /src/pdns/pdns/pdnsutil.cc:2221,1
    - Dst: ZoneParserTNG::getLineOfFile
      Src: /src/pdns/pdns/pdnsutil.cc:2221,1
    - Dst: ZoneParserTNG::getLineNumAndFile
      Src: /src/pdns/pdns/pdnsutil.cc:2222,1
    - Dst: clear
      Src: /src/pdns/pdns/pdnsutil.cc:2224,1
    - Dst: ZoneParserTNG::getLineOfFile
      Src: /src/pdns/pdns/pdnsutil.cc:2228,1
    - Dst: ZoneParserTNG::getLineNumAndFile
      Src: /src/pdns/pdns/pdnsutil.cc:2229,1
    - Dst: clear
      Src: /src/pdns/pdns/pdnsutil.cc:2231,1
    - Dst: sort
      Src: /src/pdns/pdns/pdnsutil.cc:2234,1
    - Dst: begin
      Src: /src/pdns/pdns/pdnsutil.cc:2234,1
    - Dst: end
      Src: /src/pdns/pdns/pdnsutil.cc:2234,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 21
    argCount: 3
    argNames:
    - tmpnam
    - ' errorline'
    - ' records'
    argTypes:
    - char*
    - int
    - std::vector<DNSRecord>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2236
      start: 2207
    functionDepth: 1
    functionLinenumber: 2207
    functionLinenumberEnd: 2236
    functionName: parseZoneFile
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 0
    functionsReached:
    - ZoneParserTNG::setMaxIncludes
    - std::move
    - ZoneParserTNG::setMaxGenerateSteps
    - ZoneParserTNG::getLineNumAndFile
    - push_back
    - what
    - end
    - begin
    - ZoneParserTNG::getLineOfFile
    - sort
    - ZoneParserTNG::get
    - clear
    - arg
    linkageType: ''
    returnType: bool
    signature: bool parseZoneFile(const char* tmpnam, int& errorline, std::vector<DNSRecord>&
      records)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::find_if
      Src: /src/pdns/pdns/pdnsutil.cc:2241,1
    - Dst: begin
      Src: /src/pdns/pdns/pdnsutil.cc:2241,1
    - Dst: end
      Src: /src/pdns/pdns/pdnsutil.cc:2241,1
    - Dst: end
      Src: /src/pdns/pdns/pdnsutil.cc:2244,1
    - Dst: fillSOAData
      Src: /src/pdns/pdns/pdnsutil.cc:2248,1
    - Dst: auto::getContent
      Src: /src/pdns/pdns/pdnsutil.cc:2248,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - ' soa'
    - ' info'
    - ' records'
    argTypes:
    - SOAData
    - DomainInfo
    - std::vector<DNSRecord>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2250
      start: 2239
    functionDepth: 1
    functionLinenumber: 2239
    functionLinenumberEnd: 2250
    functionName: isSameZoneSerial
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 0
    functionsReached:
    - std::find_if
    - end
    - auto::getContent
    - begin
    - fillSOAData
    linkageType: ''
    returnType: bool
    signature: bool isSameZoneSerial(const SOAData& soa, DomainInfo& info, std::vector<DNSRecord>&
      records)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::find_if
      Src: /src/pdns/pdns/pdnsutil.cc:2256,1
    - Dst: begin
      Src: /src/pdns/pdns/pdnsutil.cc:2256,1
    - Dst: end
      Src: /src/pdns/pdns/pdnsutil.cc:2256,1
    - Dst: end
      Src: /src/pdns/pdns/pdnsutil.cc:2260,1
    - Dst: fillSOAData
      Src: /src/pdns/pdns/pdnsutil.cc:2267,1
    - Dst: DNSRecord::getContent
      Src: /src/pdns/pdns/pdnsutil.cc:2267,1
    - Dst: getSoaEdit
      Src: /src/pdns/pdns/pdnsutil.cc:2275,1
    - Dst: makeIncreasedSOARecord
      Src: /src/pdns/pdns/pdnsutil.cc:2278,1
    - Dst: red
      Src: /src/pdns/pdns/pdnsutil.cc:2282,1
    - Dst: formatRecord
      Src: /src/pdns/pdns/pdnsutil.cc:2282,1
    - Dst: rst
      Src: /src/pdns/pdns/pdnsutil.cc:2282,1
    - Dst: green
      Src: /src/pdns/pdns/pdnsutil.cc:2283,1
    - Dst: formatRecord
      Src: /src/pdns/pdns/pdnsutil.cc:2283,1
    - Dst: rst
      Src: /src/pdns/pdns/pdnsutil.cc:2283,1
    - Dst: ostringstream::str
      Src: /src/pdns/pdns/pdnsutil.cc:2284,1
    - Dst: std::move
      Src: /src/pdns/pdns/pdnsutil.cc:2286,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 4
    argNames:
    - ' dsk'
    - ' info'
    - ' records'
    - ' col'
    argTypes:
    - DNSSECKeeper
    - DomainInfo
    - std::vector<DNSRecord>
    - PDNSColors
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2289
      start: 2254
    functionDepth: 1
    functionLinenumber: 2254
    functionLinenumberEnd: 2289
    functionName: increaseZoneSerial
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 0
    functionsReached:
    - std::move
    - std::find_if
    - end
    - green
    - formatRecord
    - ostringstream::str
    - DNSRecord::getContent
    - rst
    - makeIncreasedSOARecord
    - begin
    - getSoaEdit
    - fillSOAData
    - red
    linkageType: ''
    returnType: bool
    signature: bool increaseZoneSerial(DNSSECKeeper& dsk, DomainInfo& info, std::vector<DNSRecord>&
      records, const PDNSColors& col)
  - BBCount: 39
    BranchProfiles: []
    Callsites:
    - Dst: UtilBackend::UtilBackend
      Src: /src/pdns/pdns/pdnsutil.cc:2294,1
    - Dst: UtilBackend::getDomainInfo
      Src: /src/pdns/pdns/pdnsutil.cc:2300,1
    - Dst: DomainInfo::backend::getCapabilities
      Src: /src/pdns/pdns/pdnsutil.cc:2304,1
    - Dst: isatty
      Src: /src/pdns/pdns/pdnsutil.cc:2309,1
    - Dst: DomainInfo::isSecondaryType
      Src: /src/pdns/pdns/pdnsutil.cc:2314,1
    - Dst: dns_tolower
      Src: /src/pdns/pdns/pdnsutil.cc:2318,1
    - Dst: read1char
      Src: /src/pdns/pdns/pdnsutil.cc:2318,1
    - Dst: UtilBackend::getSOAUncached
      Src: /src/pdns/pdns/pdnsutil.cc:2334,1
    - Dst: umask
      Src: /src/pdns/pdns/pdnsutil.cc:2339,1
    - Dst: mkstemp
      Src: /src/pdns/pdns/pdnsutil.cc:2342,1
    - Dst: static_cast<char *>
      Src: /src/pdns/pdns/pdnsutil.cc:2342,1
    - Dst: unixDie
      Src: /src/pdns/pdns/pdnsutil.cc:2344,1
    - Dst: string
      Src: /src/pdns/pdns/pdnsutil.cc:2344,1
    - Dst: static_cast<const char*>
      Src: /src/pdns/pdns/pdnsutil.cc:2344,1
    - Dst: unlink
      Src: /src/pdns/pdns/pdnsutil.cc:2347,1
    - Dst: c_str
      Src: /src/pdns/pdns/pdnsutil.cc:2347,1
    - Dst: std::move
      Src: /src/pdns/pdns/pdnsutil.cc:2348,1
    - Dst: getenv
      Src: /src/pdns/pdns/pdnsutil.cc:2358,1
    - Dst: fillTempZoneFile
      Src: /src/pdns/pdns/pdnsutil.cc:2370,1
    - Dst: static_cast<const char *>
      Src: /src/pdns/pdns/pdnsutil.cc:2370,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/pdnsutil.cc:2374,1
    - Dst: spawnEditor
      Src: /src/pdns/pdns/pdnsutil.cc:2377,1
    - Dst: unixDie
      Src: /src/pdns/pdns/pdnsutil.cc:2378,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/pdnsutil.cc:2381,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/pdnsutil.cc:2381,1
    - Dst: parseZoneFile
      Src: /src/pdns/pdns/pdnsutil.cc:2384,1
    - Dst: static_cast<const char *>
      Src: /src/pdns/pdns/pdnsutil.cc:2384,1
    - Dst: vector::reserve
      Src: /src/pdns/pdns/pdnsutil.cc:2390,1
    - Dst: vector::size
      Src: /src/pdns/pdns/pdnsutil.cc:2390,1
    - Dst: DNSResourceRecord::fromWire
      Src: /src/pdns/pdns/pdnsutil.cc:2392,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/pdnsutil.cc:2394,1
    - Dst: std::move
      Src: /src/pdns/pdns/pdnsutil.cc:2394,1
    - Dst: checkZone
      Src: /src/pdns/pdns/pdnsutil.cc:2396,1
    - Dst: red
      Src: /src/pdns/pdns/pdnsutil.cc:2404,1
    - Dst: bold
      Src: /src/pdns/pdns/pdnsutil.cc:2404,1
    - Dst: rst
      Src: /src/pdns/pdns/pdnsutil.cc:2404,1
    - Dst: dns_tolower
      Src: /src/pdns/pdns/pdnsutil.cc:2405,1
    - Dst: read1char
      Src: /src/pdns/pdns/pdnsutil.cc:2405,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/pdnsutil.cc:2411,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/pdnsutil.cc:2415,1
    - Dst: map::clear
      Src: /src/pdns/pdns/pdnsutil.cc:2429,1
    - Dst: set_difference
      Src: /src/pdns/pdns/pdnsutil.cc:2430,1
    - Dst: vector::cbegin
      Src: /src/pdns/pdns/pdnsutil.cc:2430,1
    - Dst: vector::cend
      Src: /src/pdns/pdns/pdnsutil.cc:2430,1
    - Dst: vector::cbegin
      Src: /src/pdns/pdns/pdnsutil.cc:2430,1
    - Dst: vector::cend
      Src: /src/pdns/pdns/pdnsutil.cc:2430,1
    - Dst: back_inserter
      Src: /src/pdns/pdns/pdnsutil.cc:2430,1
    - Dst: red
      Src: /src/pdns/pdns/pdnsutil.cc:2433,1
    - Dst: formatRecord
      Src: /src/pdns/pdns/pdnsutil.cc:2433,1
    - Dst: rst
      Src: /src/pdns/pdns/pdnsutil.cc:2433,1
    - Dst: ostringstream::str
      Src: /src/pdns/pdns/pdnsutil.cc:2434,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/pdnsutil.cc:2436,1
    - Dst: set_difference
      Src: /src/pdns/pdns/pdnsutil.cc:2437,1
    - Dst: vector::cbegin
      Src: /src/pdns/pdns/pdnsutil.cc:2437,1
    - Dst: vector::cend
      Src: /src/pdns/pdns/pdnsutil.cc:2437,1
    - Dst: vector::cbegin
      Src: /src/pdns/pdns/pdnsutil.cc:2437,1
    - Dst: vector::cend
      Src: /src/pdns/pdns/pdnsutil.cc:2437,1
    - Dst: back_inserter
      Src: /src/pdns/pdns/pdnsutil.cc:2437,1
    - Dst: green
      Src: /src/pdns/pdns/pdnsutil.cc:2440,1
    - Dst: formatRecord
      Src: /src/pdns/pdns/pdnsutil.cc:2440,1
    - Dst: rst
      Src: /src/pdns/pdns/pdnsutil.cc:2440,1
    - Dst: ostringstream::str
      Src: /src/pdns/pdns/pdnsutil.cc:2441,1
    - Dst: map::empty
      Src: /src/pdns/pdns/pdnsutil.cc:2444,1
    - Dst: second::clear
      Src: /src/pdns/pdns/pdnsutil.cc:2454,1
    - Dst: isSameZoneSerial
      Src: /src/pdns/pdns/pdnsutil.cc:2458,1
    - Dst: dns_tolower
      Src: /src/pdns/pdns/pdnsutil.cc:2468,1
    - Dst: read1char
      Src: /src/pdns/pdns/pdnsutil.cc:2468,1
    - Dst: increaseZoneSerial
      Src: /src/pdns/pdns/pdnsutil.cc:2475,1
    - Dst: dns_tolower
      Src: /src/pdns/pdns/pdnsutil.cc:2498,1
    - Dst: read1char
      Src: /src/pdns/pdns/pdnsutil.cc:2498,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/pdnsutil.cc:2518,1
    - Dst: DomainInfo::backend::startTransaction
      Src: /src/pdns/pdns/pdnsutil.cc:2519,1
    - Dst: push_back
      Src: /src/pdns/pdns/pdnsutil.cc:2523,1
    - Dst: DNSResourceRecord::fromWire
      Src: /src/pdns/pdns/pdnsutil.cc:2528,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/pdnsutil.cc:2530,1
    - Dst: std::move
      Src: /src/pdns/pdns/pdnsutil.cc:2530,1
    - Dst: DomainInfo::backend::replaceRRSet
      Src: /src/pdns/pdns/pdnsutil.cc:2533,1
    - Dst: QType
      Src: /src/pdns/pdns/pdnsutil.cc:2533,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/pdnsutil.cc:2536,1
    - Dst: rectifyZone
      Src: /src/pdns/pdns/pdnsutil.cc:2537,1
    - Dst: DomainInfo::backend::commitTransaction
      Src: /src/pdns/pdns/pdnsutil.cc:2538,1
    CyclomaticComplexity: 54
    EdgeCount: 54
    ICount: 183
    argCount: 2
    argNames:
    - zone
    - ' col'
    argTypes:
    - ZoneName
    - PDNSColors
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2542
      start: 2292
    functionDepth: 2
    functionLinenumber: 2292
    functionLinenumberEnd: 2542
    functionName: editZone
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 0
    functionsReached:
    - std::to_string
    - DomainInfo::isSecondaryType
    - static_cast<const char*>
    - map::clear
    - DomainInfo::backend::replaceRRSet
    - formatRecord
    - vector::cend
    - static_cast<char *>
    - vector::reserve
    - DomainInfo::backend::startTransaction
    - isSameZoneSerial
    - checkZone
    - increaseZoneSerial
    - dns_tolower
    - unixDie
    - QType
    - parseZoneFile
    - string
    - second::clear
    - read1char
    - rectifyZone
    - c_str
    - bold
    - vector::clear
    - back_inserter
    - map::empty
    - mkstemp
    - spawnEditor
    - vector::push_back
    - DNSResourceRecord::fromWire
    - std::runtime_error
    - push_back
    - DomainInfo::backend::commitTransaction
    - green
    - ostringstream::str
    - rst
    - red
    - std::move
    - UtilBackend::getSOAUncached
    - getenv
    - fillTempZoneFile
    - UtilBackend::UtilBackend
    - UtilBackend::getDomainInfo
    - static_cast<const char *>
    - set_difference
    - unlink
    - DomainInfo::backend::getCapabilities
    - umask
    - vector::cbegin
    - vector::size
    - isatty
    linkageType: ''
    returnType: int
    signature: int editZone(const ZoneName &zone, const PDNSColors& col)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: unlink
      Src: /src/pdns/pdns/pdnsutil.cc:2347,1
    - Dst: c_str
      Src: /src/pdns/pdns/pdnsutil.cc:2347,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2347
      start: 2347
    functionDepth: 0
    functionLinenumber: 2347
    functionLinenumberEnd: 2347
    functionName: ~deleteme()
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 0
    functionsReached:
    - c_str
    - unlink
    linkageType: ''
    returnType: void
    signature: void ~deleteme()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/pdnsutil.cc:2348,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - name
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2348
      start: 2348
    functionDepth: 0
    functionLinenumber: 2348
    functionLinenumberEnd: 2348
    functionName: deleteme
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void deleteme(string name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2349
      start: 2349
    functionDepth: 0
    functionLinenumber: 2349
    functionLinenumberEnd: 2349
    functionName: deleteme
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void deleteme(const deleteme &)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2350
      start: 2350
    functionDepth: 0
    functionLinenumber: 2350
    functionLinenumberEnd: 2350
    functionName: deleteme
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void deleteme(deleteme &&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2351
      start: 2351
    functionDepth: 0
    functionLinenumber: 2351
    functionLinenumberEnd: 2351
    functionName: operator=(const deleteme &)
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: deleteme
    signature: deleteme operator=(const deleteme &)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2352
      start: 2352
    functionDepth: 0
    functionLinenumber: 2352
    functionLinenumberEnd: 2352
    functionName: operator=(deleteme &&)
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: deleteme
    signature: deleteme operator=(deleteme &&)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: encryptCA
      Src: /src/pdns/pdns/pdnsutil.cc:2551,1
    - Dst: decryptCA
      Src: /src/pdns/pdns/pdnsutil.cc:2554,1
    - Dst: toString
      Src: /src/pdns/pdns/pdnsutil.cc:2557,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 3
    argNames:
    - encrypt
    - ' ip'
    - ' rkey'
    argTypes:
    - bool
    - std::string
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2559
      start: 2546
    functionDepth: 0
    functionLinenumber: 2546
    functionLinenumberEnd: 2559
    functionName: xcryptIP
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 0
    functionsReached:
    - decryptCA
    - toString
    - encryptCA
    linkageType: ''
    returnType: int
    signature: int xcryptIP(bool encrypt, const std::string& ip, const std::string&
      rkey)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ZoneParserTNG::setMaxGenerateSteps
      Src: /src/pdns/pdns/pdnsutil.cc:2564,1
    - Dst: arg
      Src: /src/pdns/pdns/pdnsutil.cc:2564,1
    - Dst: testZoneMD
      Src: /src/pdns/pdns/pdnsutil.cc:2569,1
    - Dst: auto::readRecords
      Src: /src/pdns/pdns/pdnsutil.cc:2570,1
    - Dst: auto::verify
      Src: /src/pdns/pdns/pdnsutil.cc:2571,1
    - Dst: what
      Src: /src/pdns/pdns/pdnsutil.cc:2578,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 22
    argCount: 2
    argNames:
    - ' zone'
    - ' fname'
    argTypes:
    - ZoneName
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2593
      start: 2562
    functionDepth: 1
    functionLinenumber: 2562
    functionLinenumberEnd: 2593
    functionName: zonemdVerifyFile
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 0
    functionsReached:
    - ZoneParserTNG::setMaxGenerateSteps
    - auto::readRecords
    - what
    - auto::verify
    - testZoneMD
    - arg
    linkageType: ''
    returnType: int
    signature: int zonemdVerifyFile(const ZoneName& zone, const string& fname)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: UtilBackend::createDomain
      Src: /src/pdns/pdns/pdnsutil.cc:2599,1
    - Dst: UtilBackend::getDomainInfo
      Src: /src/pdns/pdns/pdnsutil.cc:2600,1
    - Dst: DomainInfo::backend::startTransaction
      Src: /src/pdns/pdns/pdnsutil.cc:2604,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/pdnsutil.cc:2604,1
    - Dst: DomainInfo::backend::setDomainMetadataOne
      Src: /src/pdns/pdns/pdnsutil.cc:2605,1
    - Dst: DomainInfo::backend::commitTransaction
      Src: /src/pdns/pdns/pdnsutil.cc:2606,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 5
    argNames:
    - backend
    - info
    - ' zone'
    - kind
    - ' primaries'
    argTypes:
    - UtilBackend
    - DomainInfo
    - ZoneName
    - DomainInfo::DomainKind
    - vector<ComboAddress>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2608
      start: 2597
    functionDepth: 0
    functionLinenumber: 2597
    functionLinenumberEnd: 2608
    functionName: createZoneWithDefaults
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 0
    functionsReached:
    - UtilBackend::createDomain
    - UtilBackend::getDomainInfo
    - DomainInfo::backend::commitTransaction
    - DomainInfo::backend::setDomainMetadataOne
    - DomainInfo::backend::startTransaction
    - static_cast<int>
    linkageType: ''
    returnType: bool
    signature: bool createZoneWithDefaults(UtilBackend &backend, DomainInfo &info,
      const ZoneName& zone, DomainInfo::DomainKind kind, const vector<ComboAddress>&
      primaries)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: UtilBackend::UtilBackend
      Src: /src/pdns/pdns/pdnsutil.cc:2611,1
    - Dst: UtilBackend::getDomainInfo
      Src: /src/pdns/pdns/pdnsutil.cc:2614,1
    - Dst: UtilBackend::getCapabilities
      Src: /src/pdns/pdns/pdnsutil.cc:2618,1
    - Dst: hasVariant
      Src: /src/pdns/pdns/pdnsutil.cc:2623,1
    - Dst: UtilBackend::getCapabilities
      Src: /src/pdns/pdns/pdnsutil.cc:2623,1
    - Dst: createZoneWithDefaults
      Src: /src/pdns/pdns/pdnsutil.cc:2629,1
    - Dst: vector<ComboAddress>
      Src: /src/pdns/pdns/pdnsutil.cc:2629,1
    - Dst: ZoneParserTNG::setDefaultTTL
      Src: /src/pdns/pdns/pdnsutil.cc:2635,1
    - Dst: arg
      Src: /src/pdns/pdns/pdnsutil.cc:2635,1
    - Dst: ZoneParserTNG::setMaxGenerateSteps
      Src: /src/pdns/pdns/pdnsutil.cc:2636,1
    - Dst: arg
      Src: /src/pdns/pdns/pdnsutil.cc:2636,1
    - Dst: DNSBackend*::startTransaction
      Src: /src/pdns/pdns/pdnsutil.cc:2639,1
    - Dst: ZoneParserTNG::get
      Src: /src/pdns/pdns/pdnsutil.cc:2645,1
    - Dst: DNSResourceRecord::qname::isPartOf
      Src: /src/pdns/pdns/pdnsutil.cc:2646,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/pdnsutil.cc:2656,1
    - Dst: DNSResourceRecord::qtype::toString
      Src: /src/pdns/pdns/pdnsutil.cc:2659,1
    - Dst: DNSResourceRecord::qtype::toString
      Src: /src/pdns/pdns/pdnsutil.cc:2663,1
    - Dst: what
      Src: /src/pdns/pdns/pdnsutil.cc:2663,1
    - Dst: DNSBackend*::feedRecord
      Src: /src/pdns/pdns/pdnsutil.cc:2666,1
    - Dst: DNSName
      Src: /src/pdns/pdns/pdnsutil.cc:2666,1
    - Dst: DNSBackend*::commitTransaction
      Src: /src/pdns/pdns/pdnsutil.cc:2668,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 49
    argCount: 2
    argNames:
    - ' zone'
    - ' fname'
    argTypes:
    - ZoneName
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2670
      start: 2610
    functionDepth: 1
    functionLinenumber: 2610
    functionLinenumberEnd: 2670
    functionName: loadZone
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 0
    functionsReached:
    - vector<ComboAddress>
    - ZoneParserTNG::setMaxGenerateSteps
    - DNSBackend*::feedRecord
    - DNSResourceRecord::qtype::toString
    - what
    - UtilBackend::UtilBackend
    - UtilBackend::getDomainInfo
    - ZoneParserTNG::setDefaultTTL
    - DNSBackend*::startTransaction
    - hasVariant
    - DNSResourceRecord::qname::isPartOf
    - DNSName
    - DNSBackend*::commitTransaction
    - DNSRecordContent::make
    - ZoneParserTNG::get
    - createZoneWithDefaults
    - UtilBackend::getCapabilities
    - arg
    linkageType: ''
    returnType: int
    signature: int loadZone(const ZoneName& zone, const string& fname)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: UtilBackend::UtilBackend
      Src: /src/pdns/pdns/pdnsutil.cc:2673,1
    - Dst: UtilBackend::getDomainInfo
      Src: /src/pdns/pdns/pdnsutil.cc:2675,1
    - Dst: UtilBackend::getCapabilities
      Src: /src/pdns/pdns/pdnsutil.cc:2679,1
    - Dst: ZoneName::hasVariant
      Src: /src/pdns/pdns/pdnsutil.cc:2684,1
    - Dst: UtilBackend::getCapabilities
      Src: /src/pdns/pdns/pdnsutil.cc:2684,1
    - Dst: arg
      Src: /src/pdns/pdns/pdnsutil.cc:2693,1
    - Dst: arg
      Src: /src/pdns/pdns/pdnsutil.cc:2696,1
    - Dst: boost::replace_all
      Src: /src/pdns/pdns/pdnsutil.cc:2697,1
    - Dst: toStringNoDot
      Src: /src/pdns/pdns/pdnsutil.cc:2697,1
    - Dst: fillSOAData
      Src: /src/pdns/pdns/pdnsutil.cc:2700,1
    - Dst: what
      Src: /src/pdns/pdns/pdnsutil.cc:2703,1
    - Dst: makeSOAContent
      Src: /src/pdns/pdns/pdnsutil.cc:2713,1
    - Dst: createZoneWithDefaults
      Src: /src/pdns/pdns/pdnsutil.cc:2716,1
    - Dst: vector<ComboAddress>
      Src: /src/pdns/pdns/pdnsutil.cc:2716,1
    - Dst: DomainInfo::backend::startTransaction
      Src: /src/pdns/pdns/pdnsutil.cc:2721,1
    - Dst: DomainInfo::backend::feedRecord
      Src: /src/pdns/pdns/pdnsutil.cc:2722,1
    - Dst: DNSName
      Src: /src/pdns/pdns/pdnsutil.cc:2722,1
    - Dst: empty
      Src: /src/pdns/pdns/pdnsutil.cc:2723,1
    - Dst: toStringNoDot
      Src: /src/pdns/pdns/pdnsutil.cc:2726,1
    - Dst: DomainInfo::backend::feedRecord
      Src: /src/pdns/pdns/pdnsutil.cc:2727,1
    - Dst: DNSName
      Src: /src/pdns/pdns/pdnsutil.cc:2727,1
    - Dst: DomainInfo::backend::commitTransaction
      Src: /src/pdns/pdns/pdnsutil.cc:2730,1
    - Dst: arg
      Src: /src/pdns/pdns/pdnsutil.cc:2736,1
    - Dst: string::empty
      Src: /src/pdns/pdns/pdnsutil.cc:2737,1
    - Dst: pdns_iequals
      Src: /src/pdns/pdns/pdnsutil.cc:2737,1
    - Dst: arg
      Src: /src/pdns/pdns/pdnsutil.cc:2742,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 57
    argCount: 2
    argNames:
    - zone
    - ' nsname'
    argTypes:
    - ZoneName
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2748
      start: 2672
    functionDepth: 1
    functionLinenumber: 2672
    functionLinenumberEnd: 2748
    functionName: createZone
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 0
    functionsReached:
    - toStringNoDot
    - DomainInfo::backend::startTransaction
    - vector<ComboAddress>
    - DomainInfo::backend::feedRecord
    - string::empty
    - makeSOAContent
    - boost::replace_all
    - empty
    - UtilBackend::getCapabilities
    - pdns_iequals
    - DomainInfo::backend::commitTransaction
    - DNSName
    - arg
    - fillSOAData
    - what
    - UtilBackend::UtilBackend
    - UtilBackend::getDomainInfo
    - createZoneWithDefaults
    - ZoneName::hasVariant
    linkageType: ''
    returnType: int
    signature: int createZone(const ZoneName &zone, const DNSName& nsname)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/pdnsutil.cc:2752,1
    - Dst: usage
      Src: /src/pdns/pdns/pdnsutil.cc:2753,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:2756,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:2757,1
    - Dst: UtilBackend::UtilBackend
      Src: /src/pdns/pdns/pdnsutil.cc:2759,1
    - Dst: UtilBackend::getDomainInfo
      Src: /src/pdns/pdns/pdnsutil.cc:2762,1
    - Dst: UtilBackend::getCapabilities
      Src: /src/pdns/pdns/pdnsutil.cc:2766,1
    - Dst: ZoneName::hasVariant
      Src: /src/pdns/pdns/pdnsutil.cc:2771,1
    - Dst: UtilBackend::getCapabilities
      Src: /src/pdns/pdns/pdnsutil.cc:2771,1
    - Dst: UtilBackend::getDomainInfo
      Src: /src/pdns/pdns/pdnsutil.cc:2776,1
    - Dst: copyZoneContents
      Src: /src/pdns/pdns/pdnsutil.cc:2781,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 26
    argCount: 2
    argNames:
    - ' cmds'
    - synopsis
    argTypes:
    - vector<string>
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2786
      start: 2750
    functionDepth: 3
    functionLinenumber: 2750
    functionLinenumberEnd: 2786
    functionName: copyZone
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 0
    functionsReached:
    - UtilBackend::getDomainInfo
    - UtilBackend::UtilBackend
    - size
    - usage
    - ZoneName::hasVariant
    - UtilBackend::getCapabilities
    - at
    - copyZoneContents
    linkageType: ''
    returnType: int
    signature: int copyZone(vector<string>& cmds, const std::string_view synopsis)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:2793,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:2794,1
    - Dst: DNSName::isPartOf
      Src: /src/pdns/pdns/pdnsutil.cc:2795,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/pdnsutil.cc:2796,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/pdnsutil.cc:2796,1
    - Dst: ZoneName::toString
      Src: /src/pdns/pdns/pdnsutil.cc:2796,1
    - Dst: UtilBackend::UtilBackend
      Src: /src/pdns/pdns/pdnsutil.cc:2799,1
    - Dst: UtilBackend::getDomainInfo
      Src: /src/pdns/pdns/pdnsutil.cc:2801,1
    - Dst: DomainInfo::isSecondaryType
      Src: /src/pdns/pdns/pdnsutil.cc:2805,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/pdnsutil.cc:2806,1
    - Dst: DNSRecordContent::TypeToNumber
      Src: /src/pdns/pdns/pdnsutil.cc:2809,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:2809,1
    - Dst: arg
      Src: /src/pdns/pdns/pdnsutil.cc:2810,1
    - Dst: size
      Src: /src/pdns/pdns/pdnsutil.cc:2816,1
    - Dst: atoi
      Src: /src/pdns/pdns/pdnsutil.cc:2817,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:2817,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/pdnsutil.cc:2818,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:2818,1
    - Dst: size
      Src: /src/pdns/pdns/pdnsutil.cc:2825,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/pdnsutil.cc:2826,1
    - Dst: DNSResourceRecord::qtype::getCode
      Src: /src/pdns/pdns/pdnsutil.cc:2826,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:2826,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/pdnsutil.cc:2837,1
    - Dst: areUnderscoresAllowed
      Src: /src/pdns/pdns/pdnsutil.cc:2841,1
    - Dst: DomainInfo::backend::startTransaction
      Src: /src/pdns/pdns/pdnsutil.cc:2843,1
    - Dst: DomainInfo::backend::lookup
      Src: /src/pdns/pdns/pdnsutil.cc:2850,1
    - Dst: QType
      Src: /src/pdns/pdns/pdnsutil.cc:2850,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/pdnsutil.cc:2850,1
    - Dst: DomainInfo::backend::get
      Src: /src/pdns/pdns/pdnsutil.cc:2851,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/pdnsutil.cc:2852,1
    - Dst: vector::begin
      Src: /src/pdns/pdns/pdnsutil.cc:2853,1
    - Dst: vector::end
      Src: /src/pdns/pdns/pdnsutil.cc:2853,1
    - Dst: vector::erase
      Src: /src/pdns/pdns/pdnsutil.cc:2855,1
    - Dst: vector::insert
      Src: /src/pdns/pdns/pdnsutil.cc:2860,1
    - Dst: vector::end
      Src: /src/pdns/pdns/pdnsutil.cc:2860,1
    - Dst: vector::begin
      Src: /src/pdns/pdns/pdnsutil.cc:2860,1
    - Dst: vector::end
      Src: /src/pdns/pdns/pdnsutil.cc:2860,1
    - Dst: static_cast<Check::RRSetFlags>
      Src: /src/pdns/pdns/pdnsutil.cc:2866,1
    - Dst: Check::checkRRSet
      Src: /src/pdns/pdns/pdnsutil.cc:2868,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/pdnsutil.cc:2869,1
    - Dst: std::vector::empty
      Src: /src/pdns/pdns/pdnsutil.cc:2870,1
    - Dst: qname::toString
      Src: /src/pdns/pdns/pdnsutil.cc:2873,1
    - Dst: qtype::toString
      Src: /src/pdns/pdns/pdnsutil.cc:2873,1
    - Dst: vector::erase
      Src: /src/pdns/pdns/pdnsutil.cc:2882,1
    - Dst: std::remove_if
      Src: /src/pdns/pdns/pdnsutil.cc:2883,1
    - Dst: vector::begin
      Src: /src/pdns/pdns/pdnsutil.cc:2883,1
    - Dst: vector::end
      Src: /src/pdns/pdns/pdnsutil.cc:2883,1
    - Dst: vector::end
      Src: /src/pdns/pdns/pdnsutil.cc:2885,1
    - Dst: DNSResourceRecord::qtype::toString
      Src: /src/pdns/pdns/pdnsutil.cc:2888,1
    - Dst: DomainInfo::backend::replaceRRSet
      Src: /src/pdns/pdns/pdnsutil.cc:2891,1
    - Dst: DomainInfo::backend::lookup
      Src: /src/pdns/pdns/pdnsutil.cc:2896,1
    - Dst: DomainInfo::backend::get
      Src: /src/pdns/pdns/pdnsutil.cc:2899,1
    - Dst: std::vector::emplace_back
      Src: /src/pdns/pdns/pdnsutil.cc:2900,1
    - Dst: DNSRecord
      Src: /src/pdns/pdns/pdnsutil.cc:2900,1
    - Dst: sort
      Src: /src/pdns/pdns/pdnsutil.cc:2902,1
    - Dst: std::vector::begin
      Src: /src/pdns/pdns/pdnsutil.cc:2902,1
    - Dst: std::vector::end
      Src: /src/pdns/pdns/pdnsutil.cc:2902,1
    - Dst: formatRecord
      Src: /src/pdns/pdns/pdnsutil.cc:2904,1
    - Dst: DomainInfo::backend::commitTransaction
      Src: /src/pdns/pdns/pdnsutil.cc:2906,1
    CyclomaticComplexity: 25
    EdgeCount: 25
    ICount: 79
    argCount: 2
    argNames:
    - isAdd
    - ' cmds'
    argTypes:
    - bool
    - vector<string>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2908
      start: 2789
    functionDepth: 1
    functionLinenumber: 2789
    functionLinenumberEnd: 2908
    functionName: addOrReplaceRecord
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 0
    functionsReached:
    - std::to_string
    - DomainInfo::isSecondaryType
    - PDNSException
    - DomainInfo::backend::replaceRRSet
    - areUnderscoresAllowed
    - formatRecord
    - DNSName::toString
    - sort
    - static_cast<Check::RRSetFlags>
    - DomainInfo::backend::startTransaction
    - static_cast<int>
    - vector::begin
    - DNSResourceRecord::qtype::toString
    - std::vector::begin
    - QType
    - size
    - DNSRecordContent::make
    - vector::erase
    - DomainInfo::backend::lookup
    - DNSName::isPartOf
    - DNSRecordContent::TypeToNumber
    - vector::clear
    - at
    - Check::checkRRSet
    - vector::insert
    - std::vector::end
    - ZoneName::toString
    - vector::push_back
    - qname::toString
    - DomainInfo::backend::get
    - DNSRecord
    - DomainInfo::backend::commitTransaction
    - vector::end
    - DNSResourceRecord::qtype::getCode
    - std::vector::empty
    - arg
    - qtype::toString
    - atoi
    - UtilBackend::UtilBackend
    - UtilBackend::getDomainInfo
    - std::remove_if
    - std::vector::emplace_back
    linkageType: ''
    returnType: int
    signature: int addOrReplaceRecord(bool isAdd, const vector<string>& cmds)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: UtilBackend::autoPrimaryAdd
      Src: /src/pdns/pdns/pdnsutil.cc:2915,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - ' IP'
    - ' nameserver'
    - ' account'
    argTypes:
    - std::string
    - std::string
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2920
      start: 2911
    functionDepth: 0
    functionLinenumber: 2911
    functionLinenumberEnd: 2920
    functionName: addAutoPrimary
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 0
    functionsReached:
    - UtilBackend::autoPrimaryAdd
    linkageType: ''
    returnType: int
    signature: int addAutoPrimary(const std::string& IP, const std::string& nameserver,
      const std::string& account)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: UtilBackend::autoPrimaryRemove
      Src: /src/pdns/pdns/pdnsutil.cc:2926,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - IP
    - nameserver
    argTypes:
    - std::string
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2931
      start: 2922
    functionDepth: 0
    functionLinenumber: 2922
    functionLinenumberEnd: 2931
    functionName: removeAutoPrimary
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 0
    functionsReached:
    - UtilBackend::autoPrimaryRemove
    linkageType: ''
    returnType: int
    signature: int removeAutoPrimary(const std::string &IP, const std::string &nameserver)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: UtilBackend::autoPrimariesList
      Src: /src/pdns/pdns/pdnsutil.cc:2937,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2947
      start: 2933
    functionDepth: 0
    functionLinenumber: 2933
    functionLinenumberEnd: 2947
    functionName: listAutoPrimaries
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 0
    functionsReached:
    - UtilBackend::autoPrimariesList
    linkageType: ''
    returnType: int
    signature: int listAutoPrimaries()
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: UtilBackend::UtilBackend
      Src: /src/pdns/pdns/pdnsutil.cc:2952,1
    - Dst: UtilBackend::getDomainInfo
      Src: /src/pdns/pdns/pdnsutil.cc:2955,1
    - Dst: DomainInfo::isSecondaryType
      Src: /src/pdns/pdns/pdnsutil.cc:2959,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/pdnsutil.cc:2960,1
    - Dst: DNSName
      Src: /src/pdns/pdns/pdnsutil.cc:2963,1
    - Dst: DNSName::isPartOf
      Src: /src/pdns/pdns/pdnsutil.cc:2964,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/pdnsutil.cc:2965,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/pdnsutil.cc:2965,1
    - Dst: ZoneName::toString
      Src: /src/pdns/pdns/pdnsutil.cc:2965,1
    - Dst: QType::chartocode
      Src: /src/pdns/pdns/pdnsutil.cc:2968,1
    - Dst: c_str
      Src: /src/pdns/pdns/pdnsutil.cc:2968,1
    - Dst: DomainInfo::backend::startTransaction
      Src: /src/pdns/pdns/pdnsutil.cc:2969,1
    - Dst: DomainInfo::backend::replaceRRSet
      Src: /src/pdns/pdns/pdnsutil.cc:2970,1
    - Dst: vector<DNSResourceRecord>
      Src: /src/pdns/pdns/pdnsutil.cc:2970,1
    - Dst: DomainInfo::backend::commitTransaction
      Src: /src/pdns/pdns/pdnsutil.cc:2971,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 3
    argNames:
    - ' zone_'
    - ' name_'
    - ' type_'
    argTypes:
    - std::string
    - std::string
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2973
      start: 2950
    functionDepth: 1
    functionLinenumber: 2950
    functionLinenumberEnd: 2973
    functionName: deleteRRSet
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 0
    functionsReached:
    - ZoneName::toString
    - DomainInfo::backend::startTransaction
    - DomainInfo::isSecondaryType
    - PDNSException
    - UtilBackend::UtilBackend
    - UtilBackend::getDomainInfo
    - DomainInfo::backend::replaceRRSet
    - vector<DNSResourceRecord>
    - DNSName
    - DomainInfo::backend::commitTransaction
    - DNSName::toString
    - QType::chartocode
    - DNSName::isPartOf
    - c_str
    linkageType: ''
    returnType: int
    signature: int deleteRRSet(const std::string& zone_, const std::string& name_,
      const std::string& type_)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/pdnsutil.cc:2978,1
    - Dst: toUpper
      Src: /src/pdns/pdns/pdnsutil.cc:2979,1
    - Dst: toUpper
      Src: /src/pdns/pdns/pdnsutil.cc:2979,1
    - Dst: toUpper
      Src: /src/pdns/pdns/pdnsutil.cc:2981,1
    - Dst: toUpper
      Src: /src/pdns/pdns/pdnsutil.cc:2981,1
    - Dst: toUpper
      Src: /src/pdns/pdns/pdnsutil.cc:2983,1
    - Dst: toUpper
      Src: /src/pdns/pdns/pdnsutil.cc:2985,1
    - Dst: toUpper
      Src: /src/pdns/pdns/pdnsutil.cc:2987,1
    - Dst: usage
      Src: /src/pdns/pdns/pdnsutil.cc:2990,1
    - Dst: UtilBackend::getAllDomains
      Src: /src/pdns/pdns/pdnsutil.cc:2997,1
    - Dst: std::sort
      Src: /src/pdns/pdns/pdnsutil.cc:3001,1
    - Dst: vector::begin
      Src: /src/pdns/pdns/pdnsutil.cc:3001,1
    - Dst: vector::end
      Src: /src/pdns/pdns/pdnsutil.cc:3001,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 28
    argCount: 1
    argNames:
    - synopsis
    argTypes:
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3019
      start: 2975
    functionDepth: 0
    functionLinenumber: 2975
    functionLinenumberEnd: 3019
    functionName: listAllZones
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 0
    functionsReached:
    - vector::begin
    - std::sort
    - toUpper
    - vector::end
    - UtilBackend::getAllDomains
    - usage
    - empty
    linkageType: ''
    returnType: int
    signature: int listAllZones(const std::string_view synopsis, const string &type="")
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: UtilBackend::getDomainInfo
      Src: /src/pdns/pdns/pdnsutil.cc:3028,1
    - Dst: DomainInfo::isCatalogType
      Src: /src/pdns/pdns/pdnsutil.cc:3032,1
    - Dst: DomainInfo::backend::getCatalogMembers
      Src: /src/pdns/pdns/pdnsutil.cc:3046,1
    - Dst: vector::size
      Src: /src/pdns/pdns/pdnsutil.cc:3056,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 24
    argCount: 1
    argNames:
    - ' catalog'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3060
      start: 3021
    functionDepth: 0
    functionLinenumber: 3021
    functionLinenumberEnd: 3060
    functionName: listMemberZones
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 0
    functionsReached:
    - DomainInfo::backend::getCatalogMembers
    - UtilBackend::getDomainInfo
    - vector::size
    - DomainInfo::isCatalogType
    linkageType: ''
    returnType: int
    signature: int listMemberZones(const string& catalog)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSCryptoKeyEngine::testOne
      Src: /src/pdns/pdns/pdnsutil.cc:3064,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - algo
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3065
      start: 3062
    functionDepth: 0
    functionLinenumber: 3062
    functionLinenumberEnd: 3065
    functionName: testAlgorithm
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 0
    functionsReached:
    - DNSCryptoKeyEngine::testOne
    linkageType: ''
    returnType: bool
    signature: bool testAlgorithm(int algo)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSCryptoKeyEngine::testAll
      Src: /src/pdns/pdns/pdnsutil.cc:3069,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3070
      start: 3067
    functionDepth: 0
    functionLinenumber: 3067
    functionLinenumberEnd: 3070
    functionName: testAlgorithms
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 0
    functionsReached:
    - DNSCryptoKeyEngine::testAll
    linkageType: ''
    returnType: bool
    signature: bool testAlgorithms()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: DNSName
      Src: /src/pdns/pdns/pdnsutil.cc:3075,1
    - Dst: UtilBackend::backends::empty
      Src: /src/pdns/pdns/pdnsutil.cc:3083,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/pdnsutil.cc:3085,1
    - Dst: DTime::DTime
      Src: /src/pdns/pdns/pdnsutil.cc:3094,1
    - Dst: DTime::set
      Src: /src/pdns/pdns/pdnsutil.cc:3095,1
    - Dst: dns_random_uint32
      Src: /src/pdns/pdns/pdnsutil.cc:3097,1
    - Dst: snprintf
      Src: /src/pdns/pdns/pdnsutil.cc:3098,1
    - Dst: snprintf
      Src: /src/pdns/pdns/pdnsutil.cc:3102,1
    - Dst: DNSName
      Src: /src/pdns/pdns/pdnsutil.cc:3103,1
    - Dst: static_cast<const char *>
      Src: /src/pdns/pdns/pdnsutil.cc:3103,1
    - Dst: DNSRecord
      Src: /src/pdns/pdns/pdnsutil.cc:3105,1
    - Dst: ChunkedSigningPipe::submit
      Src: /src/pdns/pdns/pdnsutil.cc:3106,1
    - Dst: ChunkedSigningPipe::getChunk
      Src: /src/pdns/pdns/pdnsutil.cc:3107,1
    - Dst: vector::empty
      Src: /src/pdns/pdns/pdnsutil.cc:3107,1
    - Dst: DTime::udiffNoReset
      Src: /src/pdns/pdns/pdnsutil.cc:3111,1
    - Dst: ChunkedSigningPipe::getChunk
      Src: /src/pdns/pdns/pdnsutil.cc:3112,1
    - Dst: vector::empty
      Src: /src/pdns/pdns/pdnsutil.cc:3112,1
    - Dst: DTime::udiff
      Src: /src/pdns/pdns/pdnsutil.cc:3115,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 27
    argCount: 2
    argNames:
    - ' zone'
    - cores
    argTypes:
    - ZoneName
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3116
      start: 3072
    functionDepth: 1
    functionLinenumber: 3072
    functionLinenumberEnd: 3116
    functionName: testSpeed
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 0
    functionsReached:
    - dns_random_uint32
    - snprintf
    - ChunkedSigningPipe::getChunk
    - runtime_error
    - UtilBackend::backends::empty
    - DNSName
    - DTime::DTime
    - static_cast<const char *>
    - DNSRecord
    - vector::empty
    - ChunkedSigningPipe::submit
    - DTime::udiffNoReset
    - DTime::udiff
    - DTime::set
    linkageType: ''
    returnType: void
    signature: void testSpeed(const ZoneName& zone, int cores)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ZoneParserTNG::setMaxGenerateSteps
      Src: /src/pdns/pdns/pdnsutil.cc:3121,1
    - Dst: arg
      Src: /src/pdns/pdns/pdnsutil.cc:3121,1
    - Dst: DNSKEYRecordContent::DNSKEYRecordContent
      Src: /src/pdns/pdns/pdnsutil.cc:3123,1
    - Dst: RRSIGRecordContent::RRSIGRecordContent
      Src: /src/pdns/pdns/pdnsutil.cc:3124,1
    - Dst: DSRecordContent::DSRecordContent
      Src: /src/pdns/pdns/pdnsutil.cc:3125,1
    - Dst: DNSName::DNSName
      Src: /src/pdns/pdns/pdnsutil.cc:3127,1
    - Dst: ZoneParserTNG::get
      Src: /src/pdns/pdns/pdnsutil.cc:3129,1
    - Dst: DNSResourceRecord::qtype::getCode
      Src: /src/pdns/pdns/pdnsutil.cc:3130,1
    - Dst: std::dynamic_pointer_cast<DNSKEYRecordContent>
      Src: /src/pdns/pdns/pdnsutil.cc:3133,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/pdnsutil.cc:3133,1
    - Dst: DNSResourceRecord::qtype::getCode
      Src: /src/pdns/pdns/pdnsutil.cc:3135,1
    - Dst: std::dynamic_pointer_cast<RRSIGRecordContent>
      Src: /src/pdns/pdns/pdnsutil.cc:3137,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/pdnsutil.cc:3137,1
    - Dst: DNSResourceRecord::qtype::getCode
      Src: /src/pdns/pdns/pdnsutil.cc:3139,1
    - Dst: std::dynamic_pointer_cast<DSRecordContent>
      Src: /src/pdns/pdns/pdnsutil.cc:3141,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/pdnsutil.cc:3141,1
    - Dst: sortedRecords_t::insert
      Src: /src/pdns/pdns/pdnsutil.cc:3145,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/pdnsutil.cc:3145,1
    - Dst: DNSResourceRecord::qtype::getCode
      Src: /src/pdns/pdns/pdnsutil.cc:3145,1
    - Dst: getMessageForRRSET
      Src: /src/pdns/pdns/pdnsutil.cc:3149,1
    - Dst: DNSCryptoKeyEngine::makeFromPublicKeyString
      Src: /src/pdns/pdns/pdnsutil.cc:3150,1
    - Dst: toString
      Src: /src/pdns/pdns/pdnsutil.cc:3152,1
    - Dst: makeDSFromDNSKey
      Src: /src/pdns/pdns/pdnsutil.cc:3152,1
    - Dst: toString
      Src: /src/pdns/pdns/pdnsutil.cc:3153,1
    - Dst: DSRecordContent::getZoneRepresentation
      Src: /src/pdns/pdns/pdnsutil.cc:3153,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 26
    argCount: 1
    argNames:
    - ' zone'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3155
      start: 3118
    functionDepth: 1
    functionLinenumber: 3118
    functionLinenumberEnd: 3155
    functionName: verifyCrypto
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 0
    functionsReached:
    - std::dynamic_pointer_cast<DSRecordContent>
    - getMessageForRRSET
    - ZoneParserTNG::setMaxGenerateSteps
    - std::dynamic_pointer_cast<DNSKEYRecordContent>
    - toString
    - DSRecordContent::getZoneRepresentation
    - RRSIGRecordContent::RRSIGRecordContent
    - std::dynamic_pointer_cast<RRSIGRecordContent>
    - sortedRecords_t::insert
    - DSRecordContent::DSRecordContent
    - DNSResourceRecord::qtype::getCode
    - DNSRecordContent::make
    - makeDSFromDNSKey
    - ZoneParserTNG::get
    - DNSName::DNSName
    - DNSCryptoKeyEngine::makeFromPublicKeyString
    - arg
    - DNSKEYRecordContent::DNSKEYRecordContent
    linkageType: ''
    returnType: void
    signature: void verifyCrypto(const string& zone)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: UtilBackend::getDomainInfo
      Src: /src/pdns/pdns/pdnsutil.cc:3162,1
    - Dst: unSecureZone
      Src: /src/pdns/pdns/pdnsutil.cc:3168,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - ' dsk'
    - ' zone'
    argTypes:
    - DNSSECKeeper
    - ZoneName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3173
      start: 3157
    functionDepth: 0
    functionLinenumber: 3157
    functionLinenumberEnd: 3173
    functionName: disableDNSSECOnZone
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 0
    functionsReached:
    - unSecureZone
    - UtilBackend::getDomainInfo
    linkageType: ''
    returnType: bool
    signature: bool disableDNSSECOnZone(DNSSECKeeper& dsk, const ZoneName& zone)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: UtilBackend::getDomainInfo
      Src: /src/pdns/pdns/pdnsutil.cc:3180,1
    - Dst: DomainInfo::backend::setOptions
      Src: /src/pdns/pdns/pdnsutil.cc:3184,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - ' zone'
    - ' options'
    argTypes:
    - ZoneName
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3189
      start: 3175
    functionDepth: 0
    functionLinenumber: 3175
    functionLinenumberEnd: 3189
    functionName: setZoneOptionsJson
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 0
    functionsReached:
    - DomainInfo::backend::setOptions
    - UtilBackend::getDomainInfo
    linkageType: ''
    returnType: int
    signature: int setZoneOptionsJson(const ZoneName& zone, const string& options)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: CatalogInfo::CatalogInfo
      Src: /src/pdns/pdns/pdnsutil.cc:3195,1
    - Dst: UtilBackend::getDomainInfo
      Src: /src/pdns/pdns/pdnsutil.cc:3197,1
    - Dst: CatalogInfo::fromJson
      Src: /src/pdns/pdns/pdnsutil.cc:3210,1
    - Dst: empty
      Src: /src/pdns/pdns/pdnsutil.cc:3213,1
    - Dst: DNSName
      Src: /src/pdns/pdns/pdnsutil.cc:3213,1
    - Dst: begin
      Src: /src/pdns/pdns/pdnsutil.cc:3213,1
    - Dst: DNSName
      Src: /src/pdns/pdns/pdnsutil.cc:3213,1
    - Dst: empty
      Src: /src/pdns/pdns/pdnsutil.cc:3216,1
    - Dst: DNSName
      Src: /src/pdns/pdns/pdnsutil.cc:3216,1
    - Dst: begin
      Src: /src/pdns/pdns/pdnsutil.cc:3216,1
    - Dst: DNSName
      Src: /src/pdns/pdns/pdnsutil.cc:3216,1
    - Dst: DomainInfo::backend::setOptions
      Src: /src/pdns/pdns/pdnsutil.cc:3222,1
    - Dst: CatalogInfo::toJson
      Src: /src/pdns/pdns/pdnsutil.cc:3222,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 25
    argCount: 4
    argNames:
    - ' zone'
    - ' type'
    - ' option'
    - ' values'
    argTypes:
    - ZoneName
    - string
    - string
    - set<string>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3228
      start: 3191
    functionDepth: 1
    functionLinenumber: 3191
    functionLinenumberEnd: 3228
    functionName: setZoneOption
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 0
    functionsReached:
    - CatalogInfo::toJson
    - CatalogInfo::fromJson
    - UtilBackend::getDomainInfo
    - DNSName
    - CatalogInfo::CatalogInfo
    - DomainInfo::backend::setOptions
    - begin
    - empty
    linkageType: ''
    returnType: int
    signature: int setZoneOption(const ZoneName& zone, const string& type, const string&
      option, const set<string>& values)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: UtilBackend::getDomainInfo
      Src: /src/pdns/pdns/pdnsutil.cc:3235,1
    - Dst: DomainInfo::backend::setCatalog
      Src: /src/pdns/pdns/pdnsutil.cc:3239,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - ' zone'
    - ' catalog'
    argTypes:
    - ZoneName
    - ZoneName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3244
      start: 3230
    functionDepth: 1
    functionLinenumber: 3230
    functionLinenumberEnd: 3244
    functionName: setZoneCatalog
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 0
    functionsReached:
    - UtilBackend::getDomainInfo
    - DomainInfo::backend::setCatalog
    linkageType: ''
    returnType: int
    signature: int setZoneCatalog(const ZoneName& zone, const ZoneName& catalog)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: UtilBackend::getDomainInfo
      Src: /src/pdns/pdns/pdnsutil.cc:3251,1
    - Dst: DomainInfo::backend::setAccount
      Src: /src/pdns/pdns/pdnsutil.cc:3255,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - ' zone'
    - account
    argTypes:
    - ZoneName
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3260
      start: 3246
    functionDepth: 1
    functionLinenumber: 3246
    functionLinenumberEnd: 3260
    functionName: setZoneAccount
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 0
    functionsReached:
    - DomainInfo::backend::setAccount
    - UtilBackend::getDomainInfo
    linkageType: ''
    returnType: int
    signature: int setZoneAccount(const ZoneName& zone, const string &account)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: UtilBackend::getDomainInfo
      Src: /src/pdns/pdns/pdnsutil.cc:3267,1
    - Dst: DomainInfo::backend::setKind
      Src: /src/pdns/pdns/pdnsutil.cc:3271,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - ' zone'
    - kind
    argTypes:
    - ZoneName
    - DomainInfo::DomainKind
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3276
      start: 3262
    functionDepth: 1
    functionLinenumber: 3262
    functionLinenumberEnd: 3276
    functionName: setZoneKind
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 0
    functionsReached:
    - UtilBackend::getDomainInfo
    - DomainInfo::backend::setKind
    linkageType: ''
    returnType: int
    signature: int setZoneKind(const ZoneName& zone, const DomainInfo::DomainKind
      kind)
  - BBCount: 40
    BranchProfiles: []
    Callsites:
    - Dst: UtilBackend::getDomainInfo
      Src: /src/pdns/pdns/pdnsutil.cc:3283,1
    - Dst: DomainInfo::account::empty
      Src: /src/pdns/pdns/pdnsutil.cc:3288,1
    - Dst: getKindString
      Src: /src/pdns/pdns/pdnsutil.cc:3292,1
    - Dst: DomainInfo::zone::getVariant
      Src: /src/pdns/pdns/pdnsutil.cc:3297,1
    - Dst: auto::empty
      Src: /src/pdns/pdns/pdnsutil.cc:3298,1
    - Dst: DomainInfo::isPrimaryType
      Src: /src/pdns/pdns/pdnsutil.cc:3301,1
    - Dst: UtilBackend::getSOAUncached
      Src: /src/pdns/pdns/pdnsutil.cc:3304,1
    - Dst: DomainInfo::isSecondaryType
      Src: /src/pdns/pdns/pdnsutil.cc:3312,1
    - Dst: addS
      Src: /src/pdns/pdns/pdnsutil.cc:3313,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/pdnsutil.cc:3315,1
    - Dst: localtime_r
      Src: /src/pdns/pdns/pdnsutil.cc:3318,1
    - Dst: strftime
      Src: /src/pdns/pdns/pdnsutil.cc:3321,1
    - Dst: strncpy
      Src: /src/pdns/pdns/pdnsutil.cc:3324,1
    - Dst: UtilBackend::getSOAUncached
      Src: /src/pdns/pdns/pdnsutil.cc:3329,1
    - Dst: isSecuredZone
      Src: /src/pdns/pdns/pdnsutil.cc:3338,1
    - Dst: NSEC3PARAMRecordContent::NSEC3PARAMRecordContent
      Src: /src/pdns/pdns/pdnsutil.cc:3348,1
    - Dst: getNSEC3PARAM
      Src: /src/pdns/pdns/pdnsutil.cc:3350,1
    - Dst: getKeys
      Src: /src/pdns/pdns/pdnsutil.cc:3352,1
    - Dst: UtilBackend::getDomainMetadata
      Src: /src/pdns/pdns/pdnsutil.cc:3357,1
    - Dst: std::vector::empty
      Src: /src/pdns/pdns/pdnsutil.cc:3357,1
    - Dst: boost::join
      Src: /src/pdns/pdns/pdnsutil.cc:3358,1
    - Dst: std::vector::clear
      Src: /src/pdns/pdns/pdnsutil.cc:3361,1
    - Dst: UtilBackend::getDomainMetadata
      Src: /src/pdns/pdns/pdnsutil.cc:3362,1
    - Dst: std::vector::empty
      Src: /src/pdns/pdns/pdnsutil.cc:3362,1
    - Dst: std::vector::front
      Src: /src/pdns/pdns/pdnsutil.cc:3366,1
    - Dst: UtilBackend::getAllDomainMetadata
      Src: /src/pdns/pdns/pdnsutil.cc:3370,1
    - Dst: std::map::empty
      Src: /src/pdns/pdns/pdnsutil.cc:3372,1
    - Dst: isPresigned
      Src: /src/pdns/pdns/pdnsutil.cc:3384,1
    - Dst: DomainInfo::backend::lookup
      Src: /src/pdns/pdns/pdnsutil.cc:3393,1
    - Dst: QType
      Src: /src/pdns/pdns/pdnsutil.cc:3393,1
    - Dst: DomainInfo::backend::get
      Src: /src/pdns/pdns/pdnsutil.cc:3394,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/pdnsutil.cc:3395,1
    - Dst: getRR
      Src: /src/pdns/pdns/pdnsutil.cc:3395,1
    - Dst: vector::empty
      Src: /src/pdns/pdns/pdnsutil.cc:3398,1
    - Dst: NSEC3PARAMRecordContent::getZoneRepresentation
      Src: /src/pdns/pdns/pdnsutil.cc:3407,1
    - Dst: sort
      Src: /src/pdns/pdns/pdnsutil.cc:3411,1
    - Dst: vector::begin
      Src: /src/pdns/pdns/pdnsutil.cc:3411,1
    - Dst: vector::end
      Src: /src/pdns/pdns/pdnsutil.cc:3411,1
    - Dst: reverse
      Src: /src/pdns/pdns/pdnsutil.cc:3412,1
    - Dst: vector::begin
      Src: /src/pdns/pdns/pdnsutil.cc:3412,1
    - Dst: vector::end
      Src: /src/pdns/pdns/pdnsutil.cc:3412,1
    - Dst: DNSSEC::algorithm2name
      Src: /src/pdns/pdns/pdnsutil.cc:3414,1
    - Dst: DNSCryptoKeyEngine::makeFromPublicKeyString
      Src: /src/pdns/pdns/pdnsutil.cc:3418,1
    - Dst: auto::getBits
      Src: /src/pdns/pdns/pdnsutil.cc:3419,1
    - Dst: what
      Src: /src/pdns/pdns/pdnsutil.cc:3422,1
    - Dst: getTag
      Src: /src/pdns/pdns/pdnsutil.cc:3425,1
    - Dst: toString
      Src: /src/pdns/pdns/pdnsutil.cc:3426,1
    - Dst: getZoneRepresentation
      Src: /src/pdns/pdns/pdnsutil.cc:3426,1
    - Dst: toString
      Src: /src/pdns/pdns/pdnsutil.cc:3431,1
    - Dst: makeDSFromDNSKey
      Src: /src/pdns/pdns/pdnsutil.cc:3431,1
    - Dst: toString
      Src: /src/pdns/pdns/pdnsutil.cc:3433,1
    - Dst: makeDSFromDNSKey
      Src: /src/pdns/pdns/pdnsutil.cc:3433,1
    - Dst: makeDSFromDNSKey
      Src: /src/pdns/pdns/pdnsutil.cc:3436,1
    - Dst: toString
      Src: /src/pdns/pdns/pdnsutil.cc:3437,1
    - Dst: makeDSFromDNSKey
      Src: /src/pdns/pdns/pdnsutil.cc:3443,1
    - Dst: toString
      Src: /src/pdns/pdns/pdnsutil.cc:3444,1
    - Dst: DNSSECKeeper::keyset_t::empty
      Src: /src/pdns/pdns/pdnsutil.cc:3450,1
    - Dst: NSEC3PARAMRecordContent::getZoneRepresentation
      Src: /src/pdns/pdns/pdnsutil.cc:3458,1
    - Dst: DNSSEC::algorithm2name
      Src: /src/pdns/pdns/pdnsutil.cc:3463,1
    - Dst: first::getAlgorithm
      Src: /src/pdns/pdns/pdnsutil.cc:3463,1
    - Dst: DNSSEC::keyTypeToString
      Src: /src/pdns/pdns/pdnsutil.cc:3465,1
    - Dst: first::getKey
      Src: /src/pdns/pdns/pdnsutil.cc:3467,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/pdnsutil.cc:3472,1
    - Dst: first::getFlags
      Src: /src/pdns/pdns/pdnsutil.cc:3472,1
    - Dst: first::getDNSKEY
      Src: /src/pdns/pdns/pdnsutil.cc:3473,1
    - Dst: first::getAlgorithm
      Src: /src/pdns/pdns/pdnsutil.cc:3474,1
    - Dst: first::getKey
      Src: /src/pdns/pdns/pdnsutil.cc:3474,1
    - Dst: arg
      Src: /src/pdns/pdns/pdnsutil.cc:3478,1
    - Dst: DNSSEC::keyTypeToString
      Src: /src/pdns/pdns/pdnsutil.cc:3479,1
    - Dst: toString
      Src: /src/pdns/pdns/pdnsutil.cc:3479,1
    - Dst: first::getDNSKEY
      Src: /src/pdns/pdns/pdnsutil.cc:3479,1
    - Dst: first::getDNSKEY
      Src: /src/pdns/pdns/pdnsutil.cc:3483,1
    - Dst: toString
      Src: /src/pdns/pdns/pdnsutil.cc:3486,1
    - Dst: makeDSFromDNSKey
      Src: /src/pdns/pdns/pdnsutil.cc:3486,1
    - Dst: toString
      Src: /src/pdns/pdns/pdnsutil.cc:3488,1
    - Dst: makeDSFromDNSKey
      Src: /src/pdns/pdns/pdnsutil.cc:3488,1
    - Dst: makeDSFromDNSKey
      Src: /src/pdns/pdns/pdnsutil.cc:3491,1
    - Dst: toString
      Src: /src/pdns/pdns/pdnsutil.cc:3492,1
    - Dst: makeDSFromDNSKey
      Src: /src/pdns/pdns/pdnsutil.cc:3498,1
    - Dst: toString
      Src: /src/pdns/pdns/pdnsutil.cc:3499,1
    - Dst: DomainInfo::options::empty
      Src: /src/pdns/pdns/pdnsutil.cc:3506,1
    - Dst: DomainInfo::catalog::empty
      Src: /src/pdns/pdns/pdnsutil.cc:3510,1
    CyclomaticComplexity: 56
    EdgeCount: 56
    ICount: 166
    argCount: 2
    argNames:
    - ' dnsseckeeper'
    - ' zone'
    argTypes:
    - DNSSECKeeper
    - ZoneName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3515
      start: 3278
    functionDepth: 1
    functionLinenumber: 3278
    functionLinenumberEnd: 3515
    functionName: showZone
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 0
    functionsReached:
    - getZoneRepresentation
    - toString
    - addS
    - std::map::empty
    - DomainInfo::isSecondaryType
    - std::to_string
    - DNSSEC::keyTypeToString
    - sort
    - DomainInfo::isPrimaryType
    - isSecuredZone
    - strftime
    - boost::join
    - UtilBackend::getDomainMetadata
    - first::getKey
    - vector::begin
    - first::getFlags
    - UtilBackend::getAllDomainMetadata
    - localtime_r
    - QType
    - DomainInfo::account::empty
    - first::getDNSKEY
    - DomainInfo::backend::lookup
    - DomainInfo::catalog::empty
    - DNSCryptoKeyEngine::makeFromPublicKeyString
    - vector::push_back
    - DNSSECKeeper::keyset_t::empty
    - strncpy
    - getKeys
    - DomainInfo::backend::get
    - NSEC3PARAMRecordContent::getZoneRepresentation
    - vector::end
    - vector::empty
    - getKindString
    - makeDSFromDNSKey
    - first::getAlgorithm
    - getNSEC3PARAM
    - std::vector::empty
    - std::vector::front
    - toStringWithPort
    - std::vector::clear
    - arg
    - getRR
    - UtilBackend::getSOAUncached
    - DomainInfo::zone::getVariant
    - UtilBackend::getDomainInfo
    - reverse
    - auto::getBits
    - what
    - DNSSEC::algorithm2name
    - NSEC3PARAMRecordContent::NSEC3PARAMRecordContent
    - DomainInfo::options::empty
    - getTag
    - isPresigned
    - auto::empty
    linkageType: ''
    returnType: bool
    signature: bool showZone(DNSSECKeeper& dnsseckeeper, const ZoneName& zone, bool
      exportDS = false)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: arg
      Src: /src/pdns/pdns/pdnsutil.cc:3523,1
    - Dst: arg
      Src: /src/pdns/pdns/pdnsutil.cc:3524,1
    - Dst: arg
      Src: /src/pdns/pdns/pdnsutil.cc:3525,1
    - Dst: arg
      Src: /src/pdns/pdns/pdnsutil.cc:3526,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/pdnsutil.cc:3529,1
    - Dst: string::empty
      Src: /src/pdns/pdns/pdnsutil.cc:3532,1
    - Dst: string::empty
      Src: /src/pdns/pdns/pdnsutil.cc:3532,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/pdnsutil.cc:3533,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/pdnsutil.cc:3537,1
    - Dst: isSecuredZone
      Src: /src/pdns/pdns/pdnsutil.cc:3540,1
    - Dst: UtilBackend::getDomainInfo
      Src: /src/pdns/pdns/pdnsutil.cc:3548,1
    - Dst: string::empty
      Src: /src/pdns/pdns/pdnsutil.cc:3558,1
    - Dst: string::empty
      Src: /src/pdns/pdns/pdnsutil.cc:3564,1
    - Dst: DNSSEC::shorthand2algorithm
      Src: /src/pdns/pdns/pdnsutil.cc:3566,1
    - Dst: addKey
      Src: /src/pdns/pdns/pdnsutil.cc:3568,1
    - Dst: string::empty
      Src: /src/pdns/pdns/pdnsutil.cc:3577,1
    - Dst: string::empty
      Src: /src/pdns/pdns/pdnsutil.cc:3578,1
    - Dst: DNSSEC::shorthand2algorithm
      Src: /src/pdns/pdns/pdnsutil.cc:3580,1
    - Dst: addKey
      Src: /src/pdns/pdns/pdnsutil.cc:3582,1
    - Dst: isSecuredZone
      Src: /src/pdns/pdns/pdnsutil.cc:3591,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 55
    argCount: 2
    argNames:
    - ' dsk'
    - ' zone'
    argTypes:
    - DNSSECKeeper
    - ZoneName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3604
      start: 3517
    functionDepth: 0
    functionLinenumber: 3517
    functionLinenumberEnd: 3604
    functionName: secureZone
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 0
    functionsReached:
    - addKey
    - string::empty
    - UtilBackend::getDomainInfo
    - runtime_error
    - isSecuredZone
    - DNSSEC::shorthand2algorithm
    - arg
    linkageType: ''
    returnType: bool
    signature: bool secureZone(DNSSECKeeper& dsk, const ZoneName& zone)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: get
      Src: /src/pdns/pdns/pdnsutil.cc:3615,1
    - Dst: DNSBackend*::createSecondaryDomain
      Src: /src/pdns/pdns/pdnsutil.cc:3617,1
    - Dst: UtilBackend::getDomainInfo
      Src: /src/pdns/pdns/pdnsutil.cc:3622,1
    - Dst: DNSBackend*::startTransaction
      Src: /src/pdns/pdns/pdnsutil.cc:3629,1
    - Dst: DNSBackend*::feedRecord
      Src: /src/pdns/pdns/pdnsutil.cc:3638,1
    - Dst: DNSName
      Src: /src/pdns/pdns/pdnsutil.cc:3638,1
    - Dst: DNSBackend*::feedRecord
      Src: /src/pdns/pdns/pdnsutil.cc:3643,1
    - Dst: DNSName
      Src: /src/pdns/pdns/pdnsutil.cc:3643,1
    - Dst: DNSBackend*::commitTransaction
      Src: /src/pdns/pdns/pdnsutil.cc:3645,1
    - Dst: DNSBackend*::lookup
      Src: /src/pdns/pdns/pdnsutil.cc:3647,1
    - Dst: QType
      Src: /src/pdns/pdns/pdnsutil.cc:3647,1
    - Dst: DNSBackend*::get
      Src: /src/pdns/pdns/pdnsutil.cc:3648,1
    - Dst: DNSBackend*::get
      Src: /src/pdns/pdns/pdnsutil.cc:3651,1
    - Dst: content::size
      Src: /src/pdns/pdns/pdnsutil.cc:3656,1
    - Dst: DNSBackend*::startTransaction
      Src: /src/pdns/pdns/pdnsutil.cc:3666,1
    - Dst: DNSBackend*::feedRecord
      Src: /src/pdns/pdns/pdnsutil.cc:3675,1
    - Dst: DNSName
      Src: /src/pdns/pdns/pdnsutil.cc:3675,1
    - Dst: DNSName
      Src: /src/pdns/pdns/pdnsutil.cc:3678,1
    - Dst: DNSBackend*::feedRecord
      Src: /src/pdns/pdns/pdnsutil.cc:3680,1
    - Dst: DNSName
      Src: /src/pdns/pdns/pdnsutil.cc:3680,1
    - Dst: DNSName
      Src: /src/pdns/pdns/pdnsutil.cc:3682,1
    - Dst: DNSBackend*::commitTransaction
      Src: /src/pdns/pdns/pdnsutil.cc:3684,1
    - Dst: secureZone
      Src: /src/pdns/pdns/pdnsutil.cc:3687,1
    - Dst: rectifyZone
      Src: /src/pdns/pdns/pdnsutil.cc:3689,1
    - Dst: DNSName::DNSName
      Src: /src/pdns/pdns/pdnsutil.cc:3691,1
    - Dst: DNSBackend*::getBeforeAndAfterNames
      Src: /src/pdns/pdns/pdnsutil.cc:3692,1
    - Dst: DNSName
      Src: /src/pdns/pdns/pdnsutil.cc:3692,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/pdnsutil.cc:3693,1
    - Dst: toString
      Src: /src/pdns/pdns/pdnsutil.cc:3693,1
    - Dst: toString
      Src: /src/pdns/pdns/pdnsutil.cc:3693,1
    - Dst: DNSName
      Src: /src/pdns/pdns/pdnsutil.cc:3694,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/pdnsutil.cc:3696,1
    - Dst: toString
      Src: /src/pdns/pdns/pdnsutil.cc:3696,1
    - Dst: toString
      Src: /src/pdns/pdns/pdnsutil.cc:3701,1
    - Dst: toString
      Src: /src/pdns/pdns/pdnsutil.cc:3701,1
    - Dst: DNSBackend*::setNotified
      Src: /src/pdns/pdns/pdnsutil.cc:3706,1
    - Dst: DNSBackend*::getDomainInfo
      Src: /src/pdns/pdns/pdnsutil.cc:3707,1
    - Dst: DNSBackend*::setNotified
      Src: /src/pdns/pdns/pdnsutil.cc:3714,1
    - Dst: DNSBackend*::getDomainInfo
      Src: /src/pdns/pdns/pdnsutil.cc:3720,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 101
    argCount: 2
    argNames:
    - ' dsk'
    - ' zone'
    argTypes:
    - DNSSECKeeper
    - ZoneName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3730
      start: 3606
    functionDepth: 2
    functionLinenumber: 3606
    functionLinenumberEnd: 3730
    functionName: testSchema
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 0
    functionsReached:
    - toString
    - DNSBackend*::startTransaction
    - DNSBackend*::lookup
    - DNSName::toString
    - DNSBackend*::feedRecord
    - QType
    - rectifyZone
    - DNSBackend*::createSecondaryDomain
    - DNSBackend*::get
    - DNSBackend*::setNotified
    - DNSName
    - get
    - DNSBackend*::commitTransaction
    - DNSBackend*::getDomainInfo
    - DNSBackend*::getBeforeAndAfterNames
    - secureZone
    - UtilBackend::getDomainInfo
    - DNSName::DNSName
    - content::size
    linkageType: ''
    returnType: int
    signature: int testSchema(DNSSECKeeper& dsk, const ZoneName& zone)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: UtilBackend::getDomainInfo
      Src: /src/pdns/pdns/pdnsutil.cc:3736,1
    - Dst: UtilBackend::getDomainMetadata
      Src: /src/pdns/pdns/pdnsutil.cc:3744,1
    - Dst: vector::insert
      Src: /src/pdns/pdns/pdnsutil.cc:3747,1
    - Dst: vector::end
      Src: /src/pdns/pdns/pdnsutil.cc:3747,1
    - Dst: begin
      Src: /src/pdns/pdns/pdnsutil.cc:3747,1
    - Dst: end
      Src: /src/pdns/pdns/pdnsutil.cc:3747,1
    - Dst: UtilBackend::setDomainMetadata
      Src: /src/pdns/pdns/pdnsutil.cc:3749,1
    - Dst: boost::join
      Src: /src/pdns/pdns/pdnsutil.cc:3754,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 4
    argNames:
    - ' zone'
    - ' kind'
    - ' values'
    - clobber
    argTypes:
    - ZoneName
    - string
    - vector<string>
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3756
      start: 3732
    functionDepth: 1
    functionLinenumber: 3732
    functionLinenumberEnd: 3756
    functionName: addOrSetMeta
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 0
    functionsReached:
    - UtilBackend::setDomainMetadata
    - UtilBackend::getDomainInfo
    - end
    - vector::end
    - boost::join
    - begin
    - UtilBackend::getDomainMetadata
    - vector::insert
    linkageType: ''
    returnType: int
    signature: int addOrSetMeta(const ZoneName& zone, const string& kind, const vector<string>&
      values, bool clobber)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ' cmds'
    - synopsis
    argTypes:
    - vector<string>
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3764
      start: 3760
    functionDepth: 0
    functionLinenumber: 3760
    functionLinenumberEnd: 3764
    functionName: lmdbGetBackendVersion
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int lmdbGetBackendVersion([[maybe_unused]] vector<string>& cmds, [[maybe_unused]]
      const std::string_view synopsis)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/pdnsutil.cc:3768,1
    - Dst: usage
      Src: /src/pdns/pdns/pdnsutil.cc:3769,1
    - Dst: testAlgorithm
      Src: /src/pdns/pdns/pdnsutil.cc:3771,1
    - Dst: pdns::checked_stoi<int>
      Src: /src/pdns/pdns/pdnsutil.cc:3771,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:3771,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - ' cmds'
    - synopsis
    argTypes:
    - vector<string>
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3775
      start: 3766
    functionDepth: 1
    functionLinenumber: 3766
    functionLinenumberEnd: 3775
    functionName: testAlgorithm
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 1
    functionsReached:
    - pdns::checked_stoi<int>
    - size
    - testAlgorithm
    - usage
    - at
    linkageType: ''
    returnType: int
    signature: int testAlgorithm(vector<string>& cmds, const std::string_view synopsis)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/pdnsutil.cc:3780,1
    - Dst: size
      Src: /src/pdns/pdns/pdnsutil.cc:3780,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:3780,1
    - Dst: usage
      Src: /src/pdns/pdns/pdnsutil.cc:3781,1
    - Dst: size
      Src: /src/pdns/pdns/pdnsutil.cc:3784,1
    - Dst: B64Decode
      Src: /src/pdns/pdns/pdnsutil.cc:3785,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:3785,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:3786,1
    - Dst: makeIPCipherKey
      Src: /src/pdns/pdns/pdnsutil.cc:3791,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:3791,1
    - Dst: xcryptIP
      Src: /src/pdns/pdns/pdnsutil.cc:3793,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:3793,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 3
    argNames:
    - ' cmds'
    - synopsis
    - encrypt
    argTypes:
    - vector<string>
    - std::string_view
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3794
      start: 3778
    functionDepth: 1
    functionLinenumber: 3778
    functionLinenumberEnd: 3794
    functionName: ipDecryptOrEncrypt
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 0
    functionsReached:
    - makeIPCipherKey
    - xcryptIP
    - B64Decode
    - size
    - usage
    - at
    linkageType: ''
    returnType: int
    signature: int ipDecryptOrEncrypt(vector<string>& cmds, const std::string_view
      synopsis, bool encrypt)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ipDecryptOrEncrypt
      Src: /src/pdns/pdns/pdnsutil.cc:3800,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - ' cmds'
    - synopsis
    argTypes:
    - vector<string>
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3805
      start: 3797
    functionDepth: 2
    functionLinenumber: 3797
    functionLinenumberEnd: 3805
    functionName: ipDecrypt
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 0
    functionsReached:
    - ipDecryptOrEncrypt
    linkageType: ''
    returnType: int
    signature: int ipDecrypt(vector<string>& cmds, const std::string_view synopsis)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ipDecryptOrEncrypt
      Src: /src/pdns/pdns/pdnsutil.cc:3810,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - ' cmds'
    - synopsis
    argTypes:
    - vector<string>
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3815
      start: 3807
    functionDepth: 2
    functionLinenumber: 3807
    functionLinenumberEnd: 3815
    functionName: ipEncrypt
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 0
    functionsReached:
    - ipDecryptOrEncrypt
    linkageType: ''
    returnType: int
    signature: int ipEncrypt(vector<string>& cmds, const std::string_view synopsis)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: testAlgorithms
      Src: /src/pdns/pdns/pdnsutil.cc:3820,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - ' cmds'
    - synopsis
    argTypes:
    - vector<string>
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3824
      start: 3818
    functionDepth: 1
    functionLinenumber: 3818
    functionLinenumberEnd: 3824
    functionName: testAlgorithms
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 1
    functionsReached:
    - testAlgorithms
    linkageType: ''
    returnType: int
    signature: int testAlgorithms([[maybe_unused]] vector<string>& cmds, [[maybe_unused]]
      const std::string_view synopsis)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/pdnsutil.cc:3828,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:3828,1
    - Dst: size
      Src: /src/pdns/pdns/pdnsutil.cc:3829,1
    - Dst: size
      Src: /src/pdns/pdns/pdnsutil.cc:3829,1
    - Dst: usage
      Src: /src/pdns/pdns/pdnsutil.cc:3830,1
    - Dst: DNSCryptoKeyEngine::listAllAlgosWithBackend
      Src: /src/pdns/pdns/pdnsutil.cc:3835,1
    - Dst: DNSSEC::algorithm2name
      Src: /src/pdns/pdns/pdnsutil.cc:3837,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/pdnsutil.cc:3838,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 12
    argCount: 2
    argNames:
    - ' cmds'
    - synopsis
    argTypes:
    - vector<string>
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3845
      start: 3826
    functionDepth: 0
    functionLinenumber: 3826
    functionLinenumberEnd: 3845
    functionName: listAlgorithms
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 0
    functionsReached:
    - std::to_string
    - size
    - DNSSEC::algorithm2name
    - usage
    - DNSCryptoKeyEngine::listAllAlgosWithBackend
    - at
    linkageType: ''
    returnType: int
    signature: int listAlgorithms(vector<string>& cmds, const std::string_view synopsis)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/pdnsutil.cc:3852,1
    - Dst: usage
      Src: /src/pdns/pdns/pdnsutil.cc:3853,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:3856,1
    - Dst: stringtok
      Src: /src/pdns/pdns/pdnsutil.cc:3858,1
    - Dst: static_cast<char *>
      Src: /src/pdns/pdns/pdnsutil.cc:3858,1
    - Dst: SSQLite3::execute
      Src: /src/pdns/pdns/pdnsutil.cc:3860,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/pdnsutil.cc:3864,1
    - Dst: txtReason
      Src: /src/pdns/pdns/pdnsutil.cc:3864,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 2
    argNames:
    - ' cmds'
    - synopsis
    argTypes:
    - vector<string>
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3871
      start: 3849
    functionDepth: 1
    functionLinenumber: 3849
    functionLinenumberEnd: 3871
    functionName: createBindDb
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 0
    functionsReached:
    - stringtok
    - PDNSException
    - size
    - usage
    - static_cast<char *>
    - SSQLite3::execute
    - txtReason
    - at
    linkageType: ''
    returnType: int
    signature: int createBindDb([[maybe_unused]] vector<string>& cmds, [[maybe_unused]]
      const std::string_view synopsis)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/pdnsutil.cc:3875,1
    - Dst: usage
      Src: /src/pdns/pdns/pdnsutil.cc:3876,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/pdnsutil.cc:3882,1
    - Dst: DNSRecordContent::TypeToNumber
      Src: /src/pdns/pdns/pdnsutil.cc:3882,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:3882,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:3882,1
    - Dst: makeLuaString
      Src: /src/pdns/pdns/pdnsutil.cc:3883,1
    - Dst: auto::serialize
      Src: /src/pdns/pdns/pdnsutil.cc:3883,1
    - Dst: DNSName
      Src: /src/pdns/pdns/pdnsutil.cc:3883,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - ' cmds'
    - synopsis
    argTypes:
    - vector<string>
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3886
      start: 3873
    functionDepth: 0
    functionLinenumber: 3873
    functionLinenumberEnd: 3886
    functionName: rawLuaFromContent
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 0
    functionsReached:
    - makeLuaString
    - auto::serialize
    - size
    - DNSName
    - DNSRecordContent::make
    - usage
    - DNSRecordContent::TypeToNumber
    - at
    linkageType: ''
    returnType: int
    signature: int rawLuaFromContent(vector<string>& cmds, const std::string_view
      synopsis)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/pdnsutil.cc:3891,1
    - Dst: pdns::checked_stoi_into
      Src: /src/pdns/pdns/pdnsutil.cc:3893,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:3893,1
    - Dst: what
      Src: /src/pdns/pdns/pdnsutil.cc:3896,1
    - Dst: CredentialsHolder::readFromTerminal
      Src: /src/pdns/pdns/pdnsutil.cc:3901,1
    - Dst: hashPassword
      Src: /src/pdns/pdns/pdnsutil.cc:3904,1
    - Dst: auto::getString
      Src: /src/pdns/pdns/pdnsutil.cc:3904,1
    - Dst: what
      Src: /src/pdns/pdns/pdnsutil.cc:3908,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 2
    argNames:
    - ' cmds'
    - synopsis
    argTypes:
    - vector<string>
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3911
      start: 3888
    functionDepth: 0
    functionLinenumber: 3888
    functionLinenumberEnd: 3911
    functionName: hashPassword
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 2
    functionsReached:
    - hashPassword
    - what
    - auto::getString
    - empty
    - pdns::checked_stoi_into
    - at
    - CredentialsHolder::readFromTerminal
    linkageType: ''
    returnType: int
    signature: int hashPassword(vector<string>& cmds, [[maybe_unused]] const std::string_view
      synopsis)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/pdnsutil.cc:3915,1
    - Dst: usage
      Src: /src/pdns/pdns/pdnsutil.cc:3916,1
    - Dst: clear
      Src: /src/pdns/pdns/pdnsutil.cc:3919,1
    - Dst: zonemdVerifyFile
      Src: /src/pdns/pdns/pdnsutil.cc:3922,1
    - Dst: ZoneName
      Src: /src/pdns/pdns/pdnsutil.cc:3922,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - ' cmds'
    - synopsis
    argTypes:
    - vector<string>
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3923
      start: 3913
    functionDepth: 1
    functionLinenumber: 3913
    functionLinenumberEnd: 3923
    functionName: zonemdVerifyFile
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 1
    functionsReached:
    - zonemdVerifyFile
    - size
    - usage
    - clear
    - ZoneName
    linkageType: ''
    returnType: int
    signature: int zonemdVerifyFile(vector<string>& cmds, const std::string_view synopsis)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/pdnsutil.cc:3929,1
    - Dst: usage
      Src: /src/pdns/pdns/pdnsutil.cc:3930,1
    - Dst: testSchema
      Src: /src/pdns/pdns/pdnsutil.cc:3933,1
    - Dst: ZoneName
      Src: /src/pdns/pdns/pdnsutil.cc:3933,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:3933,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - ' cmds'
    - synopsis
    argTypes:
    - vector<string>
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3934
      start: 3927
    functionDepth: 1
    functionLinenumber: 3927
    functionLinenumberEnd: 3934
    functionName: testSchema
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 1
    functionsReached:
    - size
    - usage
    - ZoneName
    - at
    - testSchema
    linkageType: ''
    returnType: int
    signature: int testSchema(vector<string>& cmds, const std::string_view synopsis)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/pdnsutil.cc:3938,1
    - Dst: usage
      Src: /src/pdns/pdns/pdnsutil.cc:3939,1
    - Dst: rectifyZone
      Src: /src/pdns/pdns/pdnsutil.cc:3944,1
    - Dst: ZoneName
      Src: /src/pdns/pdns/pdnsutil.cc:3944,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - ' cmds'
    - synopsis
    argTypes:
    - vector<string>
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3949
      start: 3936
    functionDepth: 1
    functionLinenumber: 3936
    functionLinenumberEnd: 3949
    functionName: rectifyZone
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 5
    functionsReached:
    - empty
    - rectifyZone
    - usage
    - ZoneName
    linkageType: ''
    returnType: int
    signature: int rectifyZone(vector<string>& cmds, const std::string_view synopsis)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/pdnsutil.cc:3953,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:3953,1
    - Dst: rectifyAllZones
      Src: /src/pdns/pdns/pdnsutil.cc:3955,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 5
    argCount: 2
    argNames:
    - ' cmds'
    - synopsis
    argTypes:
    - vector<string>
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3959
      start: 3951
    functionDepth: 1
    functionLinenumber: 3951
    functionLinenumberEnd: 3959
    functionName: rectifyAllZones
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 1
    functionsReached:
    - empty
    - rectifyAllZones
    - at
    linkageType: ''
    returnType: int
    signature: int rectifyAllZones(vector<string>& cmds, [[maybe_unused]] const std::string_view
      synopsis)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/pdnsutil.cc:3963,1
    - Dst: usage
      Src: /src/pdns/pdns/pdnsutil.cc:3964,1
    - Dst: checkZone
      Src: /src/pdns/pdns/pdnsutil.cc:3968,1
    - Dst: ZoneName
      Src: /src/pdns/pdns/pdnsutil.cc:3968,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:3968,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - ' cmds'
    - synopsis
    argTypes:
    - vector<string>
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3969
      start: 3961
    functionDepth: 1
    functionLinenumber: 3961
    functionLinenumberEnd: 3969
    functionName: checkZone
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 3
    functionsReached:
    - checkZone
    - size
    - usage
    - ZoneName
    - at
    linkageType: ''
    returnType: int
    signature: int checkZone(vector<string>& cmds, const std::string_view synopsis)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dbBench
      Src: /src/pdns/pdns/pdnsutil.cc:3973,1
    - Dst: empty
      Src: /src/pdns/pdns/pdnsutil.cc:3973,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:3973,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ' cmds'
    - synopsis
    argTypes:
    - vector<string>
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3975
      start: 3971
    functionDepth: 1
    functionLinenumber: 3971
    functionLinenumberEnd: 3975
    functionName: benchDb
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 0
    functionsReached:
    - empty
    - at
    - dbBench
    linkageType: ''
    returnType: int
    signature: int benchDb(vector<string>& cmds, [[maybe_unused]] const std::string_view
      synopsis)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/pdnsutil.cc:3979,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:3979,1
    - Dst: checkAllZones
      Src: /src/pdns/pdns/pdnsutil.cc:3981,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 2
    argNames:
    - ' cmds'
    - synopsis
    argTypes:
    - vector<string>
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3982
      start: 3977
    functionDepth: 1
    functionLinenumber: 3977
    functionLinenumberEnd: 3982
    functionName: checkAllZones
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 1
    functionsReached:
    - empty
    - at
    - checkAllZones
    linkageType: ''
    returnType: int
    signature: int checkAllZones(vector<string>& cmds, [[maybe_unused]] const std::string_view
      synopsis)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/pdnsutil.cc:3986,1
    - Dst: usage
      Src: /src/pdns/pdns/pdnsutil.cc:3987,1
    - Dst: size
      Src: /src/pdns/pdns/pdnsutil.cc:3989,1
    - Dst: listAllZones
      Src: /src/pdns/pdns/pdnsutil.cc:3990,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:3990,1
    - Dst: listAllZones
      Src: /src/pdns/pdns/pdnsutil.cc:3992,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - ' cmds'
    - synopsis
    argTypes:
    - vector<string>
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3993
      start: 3984
    functionDepth: 1
    functionLinenumber: 3984
    functionLinenumberEnd: 3993
    functionName: listAllZones
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 1
    functionsReached:
    - listAllZones
    - at
    - usage
    - size
    linkageType: ''
    returnType: int
    signature: int listAllZones(vector<string>& cmds, const std::string_view synopsis)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/pdnsutil.cc:3997,1
    - Dst: usage
      Src: /src/pdns/pdns/pdnsutil.cc:3998,1
    - Dst: listMemberZones
      Src: /src/pdns/pdns/pdnsutil.cc:4000,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:4000,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - ' cmds'
    - synopsis
    argTypes:
    - vector<string>
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4001
      start: 3995
    functionDepth: 1
    functionLinenumber: 3995
    functionLinenumberEnd: 4001
    functionName: listMemberZones
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 1
    functionsReached:
    - at
    - usage
    - listMemberZones
    - size
    linkageType: ''
    returnType: int
    signature: int listMemberZones(vector<string>& cmds, const std::string_view synopsis)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/pdnsutil.cc:4005,1
    - Dst: usage
      Src: /src/pdns/pdns/pdnsutil.cc:4006,1
    - Dst: testSpeed
      Src: /src/pdns/pdns/pdnsutil.cc:4008,1
    - Dst: ZoneName
      Src: /src/pdns/pdns/pdnsutil.cc:4008,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:4008,1
    - Dst: pdns::checked_stoi<int>
      Src: /src/pdns/pdns/pdnsutil.cc:4008,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:4008,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - ' cmds'
    - synopsis
    argTypes:
    - vector<string>
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4010
      start: 4003
    functionDepth: 1
    functionLinenumber: 4003
    functionLinenumberEnd: 4010
    functionName: testSpeed
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 1
    functionsReached:
    - pdns::checked_stoi<int>
    - size
    - testSpeed
    - usage
    - ZoneName
    - at
    linkageType: ''
    returnType: int
    signature: int testSpeed(vector<string>& cmds, const std::string_view synopsis)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/pdnsutil.cc:4014,1
    - Dst: usage
      Src: /src/pdns/pdns/pdnsutil.cc:4015,1
    - Dst: verifyCrypto
      Src: /src/pdns/pdns/pdnsutil.cc:4017,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:4017,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - ' cmds'
    - synopsis
    argTypes:
    - vector<string>
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4019
      start: 4012
    functionDepth: 1
    functionLinenumber: 4012
    functionLinenumberEnd: 4019
    functionName: verifyCrypto
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 1
    functionsReached:
    - verifyCrypto
    - at
    - usage
    - size
    linkageType: ''
    returnType: int
    signature: int verifyCrypto(vector<string>& cmds, const std::string_view synopsis)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/pdnsutil.cc:4023,1
    - Dst: usage
      Src: /src/pdns/pdns/pdnsutil.cc:4024,1
    - Dst: showZone
      Src: /src/pdns/pdns/pdnsutil.cc:4027,1
    - Dst: ZoneName
      Src: /src/pdns/pdns/pdnsutil.cc:4027,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:4027,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - ' cmds'
    - synopsis
    argTypes:
    - vector<string>
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4031
      start: 4021
    functionDepth: 1
    functionLinenumber: 4021
    functionLinenumberEnd: 4031
    functionName: showZone
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 1
    functionsReached:
    - showZone
    - size
    - usage
    - ZoneName
    - at
    linkageType: ''
    returnType: int
    signature: int showZone(vector<string>& cmds, const std::string_view synopsis)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/pdnsutil.cc:4035,1
    - Dst: usage
      Src: /src/pdns/pdns/pdnsutil.cc:4036,1
    - Dst: showZone
      Src: /src/pdns/pdns/pdnsutil.cc:4039,1
    - Dst: ZoneName
      Src: /src/pdns/pdns/pdnsutil.cc:4039,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:4039,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - ' cmds'
    - synopsis
    argTypes:
    - vector<string>
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4043
      start: 4033
    functionDepth: 2
    functionLinenumber: 4033
    functionLinenumberEnd: 4043
    functionName: exportZoneDS
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 0
    functionsReached:
    - showZone
    - size
    - usage
    - ZoneName
    - at
    linkageType: ''
    returnType: int
    signature: int exportZoneDS(vector<string>& cmds, const std::string_view synopsis)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/pdnsutil.cc:4047,1
    - Dst: usage
      Src: /src/pdns/pdns/pdnsutil.cc:4048,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:4051,1
    - Dst: disableDNSSECOnZone
      Src: /src/pdns/pdns/pdnsutil.cc:4052,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - ' cmds'
    - synopsis
    argTypes:
    - vector<string>
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4057
      start: 4045
    functionDepth: 1
    functionLinenumber: 4045
    functionLinenumberEnd: 4057
    functionName: disableDNSSEC
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 0
    functionsReached:
    - at
    - disableDNSSECOnZone
    - usage
    - size
    linkageType: ''
    returnType: int
    signature: int disableDNSSEC(vector<string>& cmds, const std::string_view synopsis)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/pdnsutil.cc:4061,1
    - Dst: usage
      Src: /src/pdns/pdns/pdnsutil.cc:4062,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:4064,1
    - Dst: atoi
      Src: /src/pdns/pdns/pdnsutil.cc:4066,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:4066,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:4069,1
    - Dst: DNSSECKeeper::getKeyById
      Src: /src/pdns/pdns/pdnsutil.cc:4074,1
    - Dst: what
      Src: /src/pdns/pdns/pdnsutil.cc:4076,1
    - Dst: DNSSECKeeper::activateKey
      Src: /src/pdns/pdns/pdnsutil.cc:4079,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 2
    argNames:
    - ' cmds'
    - synopsis
    argTypes:
    - vector<string>
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4084
      start: 4059
    functionDepth: 1
    functionLinenumber: 4059
    functionLinenumberEnd: 4084
    functionName: activateZoneKey
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 0
    functionsReached:
    - atoi
    - what
    - size
    - DNSSECKeeper::getKeyById
    - usage
    - DNSSECKeeper::activateKey
    - at
    linkageType: ''
    returnType: int
    signature: int activateZoneKey(vector<string>& cmds, const std::string_view synopsis)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/pdnsutil.cc:4088,1
    - Dst: usage
      Src: /src/pdns/pdns/pdnsutil.cc:4089,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:4091,1
    - Dst: pdns::checked_stoi<unsigned int>
      Src: /src/pdns/pdns/pdnsutil.cc:4092,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:4092,1
    - Dst: DNSSECKeeper::getKeyById
      Src: /src/pdns/pdns/pdnsutil.cc:4100,1
    - Dst: what
      Src: /src/pdns/pdns/pdnsutil.cc:4102,1
    - Dst: DNSSECKeeper::deactivateKey
      Src: /src/pdns/pdns/pdnsutil.cc:4105,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 2
    argNames:
    - ' cmds'
    - synopsis
    argTypes:
    - vector<string>
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4110
      start: 4086
    functionDepth: 1
    functionLinenumber: 4086
    functionLinenumberEnd: 4110
    functionName: deactivateZoneKey
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 0
    functionsReached:
    - DNSSECKeeper::deactivateKey
    - what
    - size
    - DNSSECKeeper::getKeyById
    - pdns::checked_stoi<unsigned int>
    - usage
    - at
    linkageType: ''
    returnType: int
    signature: int deactivateZoneKey(vector<string>& cmds, const std::string_view
      synopsis)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/pdnsutil.cc:4114,1
    - Dst: usage
      Src: /src/pdns/pdns/pdnsutil.cc:4115,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:4117,1
    - Dst: atoi
      Src: /src/pdns/pdns/pdnsutil.cc:4119,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:4119,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:4122,1
    - Dst: DNSSECKeeper::getKeyById
      Src: /src/pdns/pdns/pdnsutil.cc:4127,1
    - Dst: what
      Src: /src/pdns/pdns/pdnsutil.cc:4129,1
    - Dst: DNSSECKeeper::publishKey
      Src: /src/pdns/pdns/pdnsutil.cc:4132,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 2
    argNames:
    - ' cmds'
    - synopsis
    argTypes:
    - vector<string>
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4137
      start: 4112
    functionDepth: 1
    functionLinenumber: 4112
    functionLinenumberEnd: 4137
    functionName: publishZoneKey
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 0
    functionsReached:
    - DNSSECKeeper::publishKey
    - atoi
    - what
    - size
    - DNSSECKeeper::getKeyById
    - usage
    - at
    linkageType: ''
    returnType: int
    signature: int publishZoneKey(vector<string>& cmds, const std::string_view synopsis)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/pdnsutil.cc:4141,1
    - Dst: usage
      Src: /src/pdns/pdns/pdnsutil.cc:4142,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:4144,1
    - Dst: atoi
      Src: /src/pdns/pdns/pdnsutil.cc:4146,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:4146,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:4149,1
    - Dst: DNSSECKeeper::getKeyById
      Src: /src/pdns/pdns/pdnsutil.cc:4154,1
    - Dst: what
      Src: /src/pdns/pdns/pdnsutil.cc:4156,1
    - Dst: DNSSECKeeper::unpublishKey
      Src: /src/pdns/pdns/pdnsutil.cc:4159,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 2
    argNames:
    - ' cmds'
    - synopsis
    argTypes:
    - vector<string>
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4164
      start: 4139
    functionDepth: 1
    functionLinenumber: 4139
    functionLinenumberEnd: 4164
    functionName: unpublishZoneKey
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 0
    functionsReached:
    - atoi
    - what
    - DNSSECKeeper::unpublishKey
    - size
    - DNSSECKeeper::getKeyById
    - usage
    - at
    linkageType: ''
    returnType: int
    signature: int unpublishZoneKey(vector<string>& cmds, const std::string_view synopsis)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: std::to_string
      Src: /src/pdns/pdns/pdnsutil.cc:4169,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/pdnsutil.cc:4173,1
    - Dst: DNSSECKeeper::getKeyById
      Src: /src/pdns/pdns/pdnsutil.cc:4177,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/pdnsutil.cc:4178,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/pdnsutil.cc:4180,1
    - Dst: what
      Src: /src/pdns/pdns/pdnsutil.cc:4180,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 3
    argNames:
    - dsk
    - zone
    - keyId
    argTypes:
    - DNSSECKeeper
    - ZoneName
    - int64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4184
      start: 4166
    functionDepth: 1
    functionLinenumber: 4166
    functionLinenumberEnd: 4184
    functionName: checkZoneKey
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 0
    functionsReached:
    - DNSSECKeeper::getKeyById
    - what
    - std::to_string
    linkageType: ''
    returnType: int
    signature: int checkZoneKey(DNSSECKeeper &dsk, ZoneName &zone, int64_t keyId)
  - BBCount: 23
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/pdnsutil.cc:4188,1
    - Dst: usage
      Src: /src/pdns/pdns/pdnsutil.cc:4189,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:4192,1
    - Dst: UtilBackend::getDomainInfo
      Src: /src/pdns/pdns/pdnsutil.cc:4197,1
    - Dst: size
      Src: /src/pdns/pdns/pdnsutil.cc:4209,1
    - Dst: pdns_iequals
      Src: /src/pdns/pdns/pdnsutil.cc:4210,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:4210,1
    - Dst: pdns_iequals
      Src: /src/pdns/pdns/pdnsutil.cc:4213,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:4213,1
    - Dst: DNSSEC::shorthand2algorithm
      Src: /src/pdns/pdns/pdnsutil.cc:4216,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:4216,1
    - Dst: pdns_iequals
      Src: /src/pdns/pdns/pdnsutil.cc:4219,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:4219,1
    - Dst: pdns_iequals
      Src: /src/pdns/pdns/pdnsutil.cc:4222,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:4222,1
    - Dst: pdns_iequals
      Src: /src/pdns/pdns/pdnsutil.cc:4222,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:4222,1
    - Dst: pdns_iequals
      Src: /src/pdns/pdns/pdnsutil.cc:4225,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:4225,1
    - Dst: pdns_iequals
      Src: /src/pdns/pdns/pdnsutil.cc:4228,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:4228,1
    - Dst: pdns::checked_stoi<int>
      Src: /src/pdns/pdns/pdnsutil.cc:4231,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:4231,1
    - Dst: pdns::checked_stoi_into
      Src: /src/pdns/pdns/pdnsutil.cc:4232,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:4232,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:4235,1
    - Dst: arg
      Src: /src/pdns/pdns/pdnsutil.cc:4242,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/pdnsutil.cc:4244,1
    - Dst: arg
      Src: /src/pdns/pdns/pdnsutil.cc:4248,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/pdnsutil.cc:4250,1
    - Dst: arg
      Src: /src/pdns/pdns/pdnsutil.cc:4257,1
    - Dst: string::empty
      Src: /src/pdns/pdns/pdnsutil.cc:4258,1
    - Dst: DNSSEC::shorthand2algorithm
      Src: /src/pdns/pdns/pdnsutil.cc:4259,1
    - Dst: arg
      Src: /src/pdns/pdns/pdnsutil.cc:4268,1
    - Dst: string::empty
      Src: /src/pdns/pdns/pdnsutil.cc:4269,1
    - Dst: DNSSEC::shorthand2algorithm
      Src: /src/pdns/pdns/pdnsutil.cc:4270,1
    - Dst: DNSSECKeeper::addKey
      Src: /src/pdns/pdns/pdnsutil.cc:4280,1
    - Dst: checkZoneKey
      Src: /src/pdns/pdns/pdnsutil.cc:4288,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 79
    argCount: 2
    argNames:
    - ' cmds'
    - synopsis
    argTypes:
    - vector<string>
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4289
      start: 4186
    functionDepth: 2
    functionLinenumber: 4186
    functionLinenumberEnd: 4289
    functionName: addZoneKey
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 0
    functionsReached:
    - string::empty
    - checkZoneKey
    - pdns_iequals
    - UtilBackend::getDomainInfo
    - pdns::checked_stoi<int>
    - runtime_error
    - size
    - DNSSECKeeper::addKey
    - usage
    - pdns::checked_stoi_into
    - at
    - arg
    - DNSSEC::shorthand2algorithm
    linkageType: ''
    returnType: int
    signature: int addZoneKey(vector<string>& cmds, const std::string_view synopsis)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/pdnsutil.cc:4293,1
    - Dst: usage
      Src: /src/pdns/pdns/pdnsutil.cc:4294,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:4297,1
    - Dst: pdns::checked_stoi<unsigned int>
      Src: /src/pdns/pdns/pdnsutil.cc:4298,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:4298,1
    - Dst: DNSSECKeeper::removeKey
      Src: /src/pdns/pdns/pdnsutil.cc:4299,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - ' cmds'
    - synopsis
    argTypes:
    - vector<string>
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4304
      start: 4291
    functionDepth: 1
    functionLinenumber: 4291
    functionLinenumberEnd: 4304
    functionName: removeZoneKey
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 0
    functionsReached:
    - DNSSECKeeper::removeKey
    - size
    - pdns::checked_stoi<unsigned int>
    - usage
    - at
    linkageType: ''
    returnType: int
    signature: int removeZoneKey(vector<string>& cmds, const std::string_view synopsis)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/pdnsutil.cc:4308,1
    - Dst: usage
      Src: /src/pdns/pdns/pdnsutil.cc:4309,1
    - Dst: deleteZone
      Src: /src/pdns/pdns/pdnsutil.cc:4311,1
    - Dst: ZoneName
      Src: /src/pdns/pdns/pdnsutil.cc:4311,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:4311,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - ' cmds'
    - synopsis
    argTypes:
    - vector<string>
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4312
      start: 4306
    functionDepth: 1
    functionLinenumber: 4306
    functionLinenumberEnd: 4312
    functionName: deleteZone
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 1
    functionsReached:
    - size
    - usage
    - deleteZone
    - ZoneName
    - at
    linkageType: ''
    returnType: int
    signature: int deleteZone(vector<string>& cmds, const std::string_view synopsis)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/pdnsutil.cc:4316,1
    - Dst: size
      Src: /src/pdns/pdns/pdnsutil.cc:4316,1
    - Dst: usage
      Src: /src/pdns/pdns/pdnsutil.cc:4317,1
    - Dst: createZone
      Src: /src/pdns/pdns/pdnsutil.cc:4319,1
    - Dst: ZoneName
      Src: /src/pdns/pdns/pdnsutil.cc:4319,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:4319,1
    - Dst: size
      Src: /src/pdns/pdns/pdnsutil.cc:4319,1
    - Dst: DNSName
      Src: /src/pdns/pdns/pdnsutil.cc:4319,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:4319,1
    - Dst: DNSName
      Src: /src/pdns/pdns/pdnsutil.cc:4319,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - ' cmds'
    - synopsis
    argTypes:
    - vector<string>
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4320
      start: 4314
    functionDepth: 1
    functionLinenumber: 4314
    functionLinenumberEnd: 4320
    functionName: createZone
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 1
    functionsReached:
    - size
    - DNSName
    - usage
    - ZoneName
    - at
    - createZone
    linkageType: ''
    returnType: int
    signature: int createZone(vector<string>& cmds, const std::string_view synopsis)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/pdnsutil.cc:4324,1
    - Dst: usage
      Src: /src/pdns/pdns/pdnsutil.cc:4325,1
    - Dst: UtilBackend::UtilBackend
      Src: /src/pdns/pdns/pdnsutil.cc:4327,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:4329,1
    - Dst: UtilBackend::getDomainInfo
      Src: /src/pdns/pdns/pdnsutil.cc:4330,1
    - Dst: UtilBackend::getCapabilities
      Src: /src/pdns/pdns/pdnsutil.cc:4334,1
    - Dst: ZoneName::hasVariant
      Src: /src/pdns/pdns/pdnsutil.cc:4339,1
    - Dst: UtilBackend::getCapabilities
      Src: /src/pdns/pdns/pdnsutil.cc:4339,1
    - Dst: size
      Src: /src/pdns/pdns/pdnsutil.cc:4345,1
    - Dst: vector::emplace_back
      Src: /src/pdns/pdns/pdnsutil.cc:4346,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:4346,1
    - Dst: comboAddressVecToString
      Src: /src/pdns/pdns/pdnsutil.cc:4348,1
    - Dst: createZoneWithDefaults
      Src: /src/pdns/pdns/pdnsutil.cc:4349,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 27
    argCount: 2
    argNames:
    - ' cmds'
    - synopsis
    argTypes:
    - vector<string>
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4354
      start: 4322
    functionDepth: 1
    functionLinenumber: 4322
    functionLinenumberEnd: 4354
    functionName: createSecondaryZone
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 0
    functionsReached:
    - UtilBackend::getDomainInfo
    - UtilBackend::UtilBackend
    - size
    - usage
    - vector::emplace_back
    - createZoneWithDefaults
    - ZoneName::hasVariant
    - UtilBackend::getCapabilities
    - at
    - comboAddressVecToString
    linkageType: ''
    returnType: int
    signature: int createSecondaryZone(vector<string>& cmds, const std::string_view
      synopsis)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/pdnsutil.cc:4358,1
    - Dst: usage
      Src: /src/pdns/pdns/pdnsutil.cc:4359,1
    - Dst: UtilBackend::UtilBackend
      Src: /src/pdns/pdns/pdnsutil.cc:4361,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:4363,1
    - Dst: UtilBackend::getDomainInfo
      Src: /src/pdns/pdns/pdnsutil.cc:4364,1
    - Dst: size
      Src: /src/pdns/pdns/pdnsutil.cc:4369,1
    - Dst: vector::emplace_back
      Src: /src/pdns/pdns/pdnsutil.cc:4370,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:4370,1
    - Dst: comboAddressVecToString
      Src: /src/pdns/pdns/pdnsutil.cc:4372,1
    - Dst: DomainInfo::backend::setPrimaries
      Src: /src/pdns/pdns/pdnsutil.cc:4374,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 2
    argNames:
    - ' cmds'
    - synopsis
    argTypes:
    - vector<string>
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4381
      start: 4356
    functionDepth: 1
    functionLinenumber: 4356
    functionLinenumberEnd: 4381
    functionName: changeSecondaryZonePrimary
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 0
    functionsReached:
    - UtilBackend::getDomainInfo
    - UtilBackend::UtilBackend
    - size
    - DomainInfo::backend::setPrimaries
    - usage
    - vector::emplace_back
    - at
    - comboAddressVecToString
    linkageType: ''
    returnType: int
    signature: int changeSecondaryZonePrimary(vector<string>& cmds, const std::string_view
      synopsis)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/pdnsutil.cc:4385,1
    - Dst: usage
      Src: /src/pdns/pdns/pdnsutil.cc:4386,1
    - Dst: UtilBackend::UtilBackend
      Src: /src/pdns/pdns/pdnsutil.cc:4389,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:4391,1
    - Dst: UtilBackend::getDomainInfo
      Src: /src/pdns/pdns/pdnsutil.cc:4392,1
    - Dst: DNSName
      Src: /src/pdns/pdns/pdnsutil.cc:4400,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:4400,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:4401,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:4402,1
    - Dst: size
      Src: /src/pdns/pdns/pdnsutil.cc:4403,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:4404,1
    - Dst: time
      Src: /src/pdns/pdns/pdnsutil.cc:4406,1
    - Dst: Comment::qname::isPartOf
      Src: /src/pdns/pdns/pdnsutil.cc:4408,1
    - Dst: Comment::qname::toString
      Src: /src/pdns/pdns/pdnsutil.cc:4409,1
    - Dst: ZoneName::toString
      Src: /src/pdns/pdns/pdnsutil.cc:4409,1
    - Dst: DomainInfo::backend::startTransaction
      Src: /src/pdns/pdns/pdnsutil.cc:4413,1
    - Dst: DomainInfo::backend::feedComment
      Src: /src/pdns/pdns/pdnsutil.cc:4414,1
    - Dst: DomainInfo::backend::abortTransaction
      Src: /src/pdns/pdns/pdnsutil.cc:4416,1
    - Dst: DomainInfo::backend::commitTransaction
      Src: /src/pdns/pdns/pdnsutil.cc:4420,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 28
    argCount: 2
    argNames:
    - ' cmds'
    - synopsis
    argTypes:
    - vector<string>
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4422
      start: 4383
    functionDepth: 1
    functionLinenumber: 4383
    functionLinenumberEnd: 4422
    functionName: addComment
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 0
    functionsReached:
    - Comment::qname::isPartOf
    - ZoneName::toString
    - Comment::qname::toString
    - DomainInfo::backend::abortTransaction
    - time
    - UtilBackend::getDomainInfo
    - UtilBackend::UtilBackend
    - DomainInfo::backend::commitTransaction
    - size
    - DNSName
    - usage
    - DomainInfo::backend::startTransaction
    - DomainInfo::backend::feedComment
    - at
    linkageType: ''
    returnType: int
    signature: int addComment(vector<string>& cmds, const std::string_view synopsis)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/pdnsutil.cc:4426,1
    - Dst: usage
      Src: /src/pdns/pdns/pdnsutil.cc:4427,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:4429,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:4430,1
    - Dst: listComments
      Src: /src/pdns/pdns/pdnsutil.cc:4433,1
    - Dst: ZoneName
      Src: /src/pdns/pdns/pdnsutil.cc:4433,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:4433,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - ' cmds'
    - synopsis
    argTypes:
    - vector<string>
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4434
      start: 4424
    functionDepth: 1
    functionLinenumber: 4424
    functionLinenumberEnd: 4434
    functionName: listComments
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 3
    functionsReached:
    - listComments
    - size
    - usage
    - ZoneName
    - at
    linkageType: ''
    returnType: int
    signature: int listComments(vector<string>& cmds, const std::string_view synopsis)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/pdnsutil.cc:4439,1
    - Dst: usage
      Src: /src/pdns/pdns/pdnsutil.cc:4440,1
    - Dst: addOrReplaceRecord
      Src: /src/pdns/pdns/pdnsutil.cc:4442,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - ' cmds'
    - synopsis
    argTypes:
    - vector<string>
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4443
      start: 4437
    functionDepth: 2
    functionLinenumber: 4437
    functionLinenumberEnd: 4443
    functionName: addRecord
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 1
    functionsReached:
    - addOrReplaceRecord
    - usage
    - size
    linkageType: ''
    returnType: int
    signature: int addRecord(vector<string>& cmds, const std::string_view synopsis)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/pdnsutil.cc:4447,1
    - Dst: usage
      Src: /src/pdns/pdns/pdnsutil.cc:4448,1
    - Dst: addAutoPrimary
      Src: /src/pdns/pdns/pdnsutil.cc:4450,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:4450,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:4450,1
    - Dst: size
      Src: /src/pdns/pdns/pdnsutil.cc:4450,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:4450,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - ' cmds'
    - synopsis
    argTypes:
    - vector<string>
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4451
      start: 4445
    functionDepth: 1
    functionLinenumber: 4445
    functionLinenumberEnd: 4451
    functionName: addAutoprimary
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 0
    functionsReached:
    - at
    - usage
    - addAutoPrimary
    - size
    linkageType: ''
    returnType: int
    signature: int addAutoprimary(vector<string>& cmds, const std::string_view synopsis)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/pdnsutil.cc:4455,1
    - Dst: usage
      Src: /src/pdns/pdns/pdnsutil.cc:4456,1
    - Dst: removeAutoPrimary
      Src: /src/pdns/pdns/pdnsutil.cc:4458,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:4458,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:4458,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - ' cmds'
    - synopsis
    argTypes:
    - vector<string>
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4459
      start: 4453
    functionDepth: 1
    functionLinenumber: 4453
    functionLinenumberEnd: 4459
    functionName: removeAutoprimary
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 0
    functionsReached:
    - removeAutoPrimary
    - at
    - usage
    - size
    linkageType: ''
    returnType: int
    signature: int removeAutoprimary(vector<string>& cmds, const std::string_view
      synopsis)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: listAutoPrimaries
      Src: /src/pdns/pdns/pdnsutil.cc:4463,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' cmds'
    - synopsis
    argTypes:
    - vector<string>
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4464
      start: 4461
    functionDepth: 1
    functionLinenumber: 4461
    functionLinenumberEnd: 4464
    functionName: listAutoprimaries
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 0
    functionsReached:
    - listAutoPrimaries
    linkageType: ''
    returnType: int
    signature: int listAutoprimaries([[maybe_unused]] vector<string>& cmds, [[maybe_unused]]
      const std::string_view synopsis)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/pdnsutil.cc:4468,1
    - Dst: usage
      Src: /src/pdns/pdns/pdnsutil.cc:4469,1
    - Dst: addOrReplaceRecord
      Src: /src/pdns/pdns/pdnsutil.cc:4471,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - ' cmds'
    - synopsis
    argTypes:
    - vector<string>
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4472
      start: 4466
    functionDepth: 2
    functionLinenumber: 4466
    functionLinenumberEnd: 4472
    functionName: replaceRRSet
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 4
    functionsReached:
    - addOrReplaceRecord
    - usage
    - size
    linkageType: ''
    returnType: int
    signature: int replaceRRSet(vector<string>& cmds, const std::string_view synopsis)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/pdnsutil.cc:4476,1
    - Dst: usage
      Src: /src/pdns/pdns/pdnsutil.cc:4477,1
    - Dst: deleteRRSet
      Src: /src/pdns/pdns/pdnsutil.cc:4479,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:4479,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:4479,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:4479,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - ' cmds'
    - synopsis
    argTypes:
    - vector<string>
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4480
      start: 4474
    functionDepth: 1
    functionLinenumber: 4474
    functionLinenumberEnd: 4480
    functionName: deleteRRSet
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 1
    functionsReached:
    - deleteRRSet
    - at
    - usage
    - size
    linkageType: ''
    returnType: int
    signature: int deleteRRSet(vector<string>& cmds, const std::string_view synopsis)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/pdnsutil.cc:4484,1
    - Dst: usage
      Src: /src/pdns/pdns/pdnsutil.cc:4485,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:4487,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:4488,1
    - Dst: listZone
      Src: /src/pdns/pdns/pdnsutil.cc:4491,1
    - Dst: ZoneName
      Src: /src/pdns/pdns/pdnsutil.cc:4491,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:4491,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - ' cmds'
    - synopsis
    argTypes:
    - vector<string>
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4492
      start: 4482
    functionDepth: 1
    functionLinenumber: 4482
    functionLinenumberEnd: 4492
    functionName: listZone
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 1
    functionsReached:
    - size
    - usage
    - listZone
    - ZoneName
    - at
    linkageType: ''
    returnType: int
    signature: int listZone(vector<string>& cmds, const std::string_view synopsis)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/pdnsutil.cc:4496,1
    - Dst: usage
      Src: /src/pdns/pdns/pdnsutil.cc:4497,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:4499,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:4500,1
    - Dst: count
      Src: /src/pdns/pdns/pdnsutil.cc:4503,1
    - Dst: editZone
      Src: /src/pdns/pdns/pdnsutil.cc:4504,1
    - Dst: ZoneName
      Src: /src/pdns/pdns/pdnsutil.cc:4504,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:4504,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - ' cmds'
    - synopsis
    argTypes:
    - vector<string>
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4505
      start: 4494
    functionDepth: 1
    functionLinenumber: 4494
    functionLinenumberEnd: 4505
    functionName: editZone
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 1
    functionsReached:
    - count
    - editZone
    - size
    - usage
    - ZoneName
    - at
    linkageType: ''
    returnType: int
    signature: int editZone(vector<string>& cmds, const std::string_view synopsis)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/pdnsutil.cc:4509,1
    - Dst: usage
      Src: /src/pdns/pdns/pdnsutil.cc:4510,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:4512,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:4513,1
    - Dst: clearZone
      Src: /src/pdns/pdns/pdnsutil.cc:4516,1
    - Dst: ZoneName
      Src: /src/pdns/pdns/pdnsutil.cc:4516,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:4516,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - ' cmds'
    - synopsis
    argTypes:
    - vector<string>
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4517
      start: 4507
    functionDepth: 1
    functionLinenumber: 4507
    functionLinenumberEnd: 4517
    functionName: clearZone
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 1
    functionsReached:
    - clearZone
    - size
    - usage
    - ZoneName
    - at
    linkageType: ''
    returnType: int
    signature: int clearZone(vector<string>& cmds, const std::string_view synopsis)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/pdnsutil.cc:4521,1
    - Dst: usage
      Src: /src/pdns/pdns/pdnsutil.cc:4522,1
    - Dst: size
      Src: /src/pdns/pdns/pdnsutil.cc:4526,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:4527,1
    - Dst: listKeys
      Src: /src/pdns/pdns/pdnsutil.cc:4529,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - ' cmds'
    - synopsis
    argTypes:
    - vector<string>
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4530
      start: 4519
    functionDepth: 1
    functionLinenumber: 4519
    functionLinenumberEnd: 4530
    functionName: listKeys
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 1
    functionsReached:
    - at
    - listKeys
    - usage
    - size
    linkageType: ''
    returnType: int
    signature: int listKeys(vector<string>& cmds, const std::string_view synopsis)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/pdnsutil.cc:4534,1
    - Dst: usage
      Src: /src/pdns/pdns/pdnsutil.cc:4535,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:4537,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:4538,1
    - Dst: size
      Src: /src/pdns/pdns/pdnsutil.cc:4541,1
    - Dst: loadZone
      Src: /src/pdns/pdns/pdnsutil.cc:4542,1
    - Dst: ZoneName
      Src: /src/pdns/pdns/pdnsutil.cc:4542,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:4542,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:4542,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 2
    argNames:
    - ' cmds'
    - synopsis
    argTypes:
    - vector<string>
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4548
      start: 4532
    functionDepth: 1
    functionLinenumber: 4532
    functionLinenumberEnd: 4548
    functionName: loadZone
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 1
    functionsReached:
    - loadZone
    - size
    - usage
    - ZoneName
    - at
    linkageType: ''
    returnType: int
    signature: int loadZone(vector<string>& cmds, const std::string_view synopsis)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/pdnsutil.cc:4552,1
    - Dst: usage
      Src: /src/pdns/pdns/pdnsutil.cc:4553,1
    - Dst: DNSSECKeeper::startTransaction
      Src: /src/pdns/pdns/pdnsutil.cc:4560,1
    - Dst: secureZone
      Src: /src/pdns/pdns/pdnsutil.cc:4561,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/pdnsutil.cc:4562,1
    - Dst: std::move
      Src: /src/pdns/pdns/pdnsutil.cc:4562,1
    - Dst: DNSSECKeeper::commitTransaction
      Src: /src/pdns/pdns/pdnsutil.cc:4566,1
    - Dst: rectifyZone
      Src: /src/pdns/pdns/pdnsutil.cc:4570,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 2
    argNames:
    - ' cmds'
    - synopsis
    argTypes:
    - vector<string>
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4577
      start: 4550
    functionDepth: 2
    functionLinenumber: 4550
    functionLinenumberEnd: 4577
    functionName: secureZone
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 2
    functionsReached:
    - DNSSECKeeper::commitTransaction
    - std::move
    - vector::push_back
    - secureZone
    - rectifyZone
    - usage
    - DNSSECKeeper::startTransaction
    - empty
    linkageType: ''
    returnType: int
    signature: int secureZone(vector<string>& cmds, const std::string_view synopsis)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/pdnsutil.cc:4581,1
    - Dst: pdns_iequals
      Src: /src/pdns/pdns/pdnsutil.cc:4581,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:4581,1
    - Dst: usage
      Src: /src/pdns/pdns/pdnsutil.cc:4582,1
    - Dst: UtilBackend::getAllDomains
      Src: /src/pdns/pdns/pdnsutil.cc:4589,1
    - Dst: DNSSECKeeper::isSecuredZone
      Src: /src/pdns/pdns/pdnsutil.cc:4594,1
    - Dst: secureZone
      Src: /src/pdns/pdns/pdnsutil.cc:4596,1
    - Dst: size
      Src: /src/pdns/pdns/pdnsutil.cc:4598,1
    - Dst: increaseSerial
      Src: /src/pdns/pdns/pdnsutil.cc:4599,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 25
    argCount: 2
    argNames:
    - ' cmds'
    - synopsis
    argTypes:
    - vector<string>
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4616
      start: 4579
    functionDepth: 1
    functionLinenumber: 4579
    functionLinenumberEnd: 4616
    functionName: secureAllZones
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 0
    functionsReached:
    - DNSSECKeeper::isSecuredZone
    - pdns_iequals
    - secureZone
    - size
    - UtilBackend::getAllDomains
    - usage
    - empty
    - increaseSerial
    - at
    linkageType: ''
    returnType: int
    signature: int secureAllZones(vector<string>& cmds, const std::string_view synopsis)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/pdnsutil.cc:4620,1
    - Dst: usage
      Src: /src/pdns/pdns/pdnsutil.cc:4621,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:4623,1
    - Dst: stringToKind
      Src: /src/pdns/pdns/pdnsutil.cc:4624,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:4624,1
    - Dst: setZoneKind
      Src: /src/pdns/pdns/pdnsutil.cc:4625,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - ' cmds'
    - synopsis
    argTypes:
    - vector<string>
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4626
      start: 4618
    functionDepth: 2
    functionLinenumber: 4618
    functionLinenumberEnd: 4626
    functionName: setKind
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 1
    functionsReached:
    - stringToKind
    - size
    - usage
    - setZoneKind
    - at
    linkageType: ''
    returnType: int
    signature: int setKind(vector<string>& cmds, const std::string_view synopsis)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/pdnsutil.cc:4630,1
    - Dst: usage
      Src: /src/pdns/pdns/pdnsutil.cc:4631,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:4635,1
    - Dst: json11::Json::parse
      Src: /src/pdns/pdns/pdnsutil.cc:4637,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:4637,1
    - Dst: json11::Json::is_null
      Src: /src/pdns/pdns/pdnsutil.cc:4638,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:4644,1
    - Dst: setZoneOptionsJson
      Src: /src/pdns/pdns/pdnsutil.cc:4646,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:4646,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - ' cmds'
    - synopsis
    argTypes:
    - vector<string>
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4647
      start: 4628
    functionDepth: 1
    functionLinenumber: 4628
    functionLinenumberEnd: 4647
    functionName: setOptionsJson
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 0
    functionsReached:
    - json11::Json::is_null
    - json11::Json::parse
    - size
    - setZoneOptionsJson
    - usage
    - at
    linkageType: ''
    returnType: int
    signature: int setOptionsJson(vector<string>& cmds, const std::string_view synopsis)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/pdnsutil.cc:4651,1
    - Dst: size
      Src: /src/pdns/pdns/pdnsutil.cc:4651,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:4651,1
    - Dst: usage
      Src: /src/pdns/pdns/pdnsutil.cc:4652,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:4654,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:4654,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:4654,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:4654,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:4654,1
    - Dst: usage
      Src: /src/pdns/pdns/pdnsutil.cc:4655,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:4658,1
    - Dst: size
      Src: /src/pdns/pdns/pdnsutil.cc:4660,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:4661,1
    - Dst: set::insert
      Src: /src/pdns/pdns/pdnsutil.cc:4662,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:4662,1
    - Dst: setZoneOption
      Src: /src/pdns/pdns/pdnsutil.cc:4666,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:4666,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:4666,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 13
    argCount: 2
    argNames:
    - ' cmds'
    - synopsis
    argTypes:
    - vector<string>
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4667
      start: 4649
    functionDepth: 2
    functionLinenumber: 4649
    functionLinenumberEnd: 4667
    functionName: setOption
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 0
    functionsReached:
    - set::insert
    - size
    - setZoneOption
    - usage
    - at
    linkageType: ''
    returnType: int
    signature: int setOption(vector<string>& cmds, const std::string_view synopsis)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/pdnsutil.cc:4671,1
    - Dst: usage
      Src: /src/pdns/pdns/pdnsutil.cc:4672,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:4674,1
    - Dst: ZoneName::ZoneName
      Src: /src/pdns/pdns/pdnsutil.cc:4675,1
    - Dst: size
      Src: /src/pdns/pdns/pdnsutil.cc:4676,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:4676,1
    - Dst: ZoneName
      Src: /src/pdns/pdns/pdnsutil.cc:4677,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:4677,1
    - Dst: setZoneCatalog
      Src: /src/pdns/pdns/pdnsutil.cc:4679,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - ' cmds'
    - synopsis
    argTypes:
    - vector<string>
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4680
      start: 4669
    functionDepth: 2
    functionLinenumber: 4669
    functionLinenumberEnd: 4680
    functionName: setCatalog
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 1
    functionsReached:
    - setZoneCatalog
    - ZoneName::ZoneName
    - size
    - usage
    - empty
    - ZoneName
    - at
    linkageType: ''
    returnType: int
    signature: int setCatalog(vector<string>& cmds, const std::string_view synopsis)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/pdnsutil.cc:4684,1
    - Dst: usage
      Src: /src/pdns/pdns/pdnsutil.cc:4685,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:4687,1
    - Dst: setZoneAccount
      Src: /src/pdns/pdns/pdnsutil.cc:4688,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:4688,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - ' cmds'
    - synopsis
    argTypes:
    - vector<string>
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4689
      start: 4682
    functionDepth: 2
    functionLinenumber: 4682
    functionLinenumberEnd: 4689
    functionName: setAccount
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 1
    functionsReached:
    - setZoneAccount
    - at
    - usage
    - size
    linkageType: ''
    returnType: int
    signature: int setAccount(vector<string>& cmds, const std::string_view synopsis)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/pdnsutil.cc:4693,1
    - Dst: usage
      Src: /src/pdns/pdns/pdnsutil.cc:4694,1
    - Dst: size
      Src: /src/pdns/pdns/pdnsutil.cc:4696,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:4696,1
    - Dst: size
      Src: /src/pdns/pdns/pdnsutil.cc:4697,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:4697,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:4701,1
    - Dst: NSEC3PARAMRecordContent::d_salt::empty
      Src: /src/pdns/pdns/pdnsutil.cc:4707,1
    - Dst: DNSSECKeeper::setNSEC3PARAM
      Src: /src/pdns/pdns/pdnsutil.cc:4712,1
    - Dst: what
      Src: /src/pdns/pdns/pdnsutil.cc:4718,1
    - Dst: DNSSECKeeper::isSecuredZone
      Src: /src/pdns/pdns/pdnsutil.cc:4729,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 30
    argCount: 2
    argNames:
    - ' cmds'
    - synopsis
    argTypes:
    - vector<string>
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4737
      start: 4691
    functionDepth: 1
    functionLinenumber: 4691
    functionLinenumberEnd: 4737
    functionName: setNsec3
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 0
    functionsReached:
    - DNSSECKeeper::isSecuredZone
    - DNSSECKeeper::setNSEC3PARAM
    - NSEC3PARAMRecordContent::d_salt::empty
    - what
    - size
    - usage
    - empty
    - at
    linkageType: ''
    returnType: int
    signature: int setNsec3(vector<string>& cmds, const std::string_view synopsis)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/pdnsutil.cc:4741,1
    - Dst: usage
      Src: /src/pdns/pdns/pdnsutil.cc:4742,1
    - Dst: DNSSECKeeper::setPresigned
      Src: /src/pdns/pdns/pdnsutil.cc:4745,1
    - Dst: ZoneName
      Src: /src/pdns/pdns/pdnsutil.cc:4745,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:4745,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:4746,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - ' cmds'
    - synopsis
    argTypes:
    - vector<string>
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4750
      start: 4739
    functionDepth: 0
    functionLinenumber: 4739
    functionLinenumberEnd: 4750
    functionName: setPresigned
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 1
    functionsReached:
    - DNSSECKeeper::setPresigned
    - usage
    - empty
    - ZoneName
    - at
    linkageType: ''
    returnType: int
    signature: int setPresigned(vector<string>& cmds, const std::string_view synopsis)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/pdnsutil.cc:4754,1
    - Dst: size
      Src: /src/pdns/pdns/pdnsutil.cc:4754,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:4754,1
    - Dst: usage
      Src: /src/pdns/pdns/pdnsutil.cc:4755,1
    - Dst: DNSSECKeeper::setPublishCDNSKEY
      Src: /src/pdns/pdns/pdnsutil.cc:4758,1
    - Dst: ZoneName
      Src: /src/pdns/pdns/pdnsutil.cc:4758,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:4758,1
    - Dst: size
      Src: /src/pdns/pdns/pdnsutil.cc:4758,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:4758,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:4759,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 9
    argCount: 2
    argNames:
    - ' cmds'
    - synopsis
    argTypes:
    - vector<string>
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4763
      start: 4752
    functionDepth: 1
    functionLinenumber: 4752
    functionLinenumberEnd: 4763
    functionName: setPublishCDNSKey
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 0
    functionsReached:
    - size
    - usage
    - empty
    - ZoneName
    - at
    - DNSSECKeeper::setPublishCDNSKEY
    linkageType: ''
    returnType: int
    signature: int setPublishCDNSKey(vector<string>& cmds, const std::string_view
      synopsis)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/pdnsutil.cc:4767,1
    - Dst: usage
      Src: /src/pdns/pdns/pdnsutil.cc:4768,1
    - Dst: size
      Src: /src/pdns/pdns/pdnsutil.cc:4772,1
    - Dst: emplace_back
      Src: /src/pdns/pdns/pdnsutil.cc:4773,1
    - Dst: DNSSECKeeper::setPublishCDS
      Src: /src/pdns/pdns/pdnsutil.cc:4777,1
    - Dst: ZoneName
      Src: /src/pdns/pdns/pdnsutil.cc:4777,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:4777,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:4777,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:4778,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 2
    argNames:
    - ' cmds'
    - synopsis
    argTypes:
    - vector<string>
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4782
      start: 4765
    functionDepth: 1
    functionLinenumber: 4765
    functionLinenumberEnd: 4782
    functionName: setPublishCDs
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 0
    functionsReached:
    - DNSSECKeeper::setPublishCDS
    - size
    - usage
    - emplace_back
    - empty
    - ZoneName
    - at
    linkageType: ''
    returnType: int
    signature: int setPublishCDs(vector<string>& cmds, const std::string_view synopsis)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/pdnsutil.cc:4786,1
    - Dst: usage
      Src: /src/pdns/pdns/pdnsutil.cc:4787,1
    - Dst: size
      Src: /src/pdns/pdns/pdnsutil.cc:4790,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:4795,1
    - Dst: hasLabels
      Src: /src/pdns/pdns/pdnsutil.cc:4797,1
    - Dst: pdns_iequals
      Src: /src/pdns/pdns/pdnsutil.cc:4797,1
    - Dst: getRawLabel
      Src: /src/pdns/pdns/pdnsutil.cc:4797,1
    - Dst: DNSSECKeeper::isSecuredZone
      Src: /src/pdns/pdns/pdnsutil.cc:4805,1
    - Dst: DNSSECKeeper::startTransaction
      Src: /src/pdns/pdns/pdnsutil.cc:4806,1
    - Dst: secureZone
      Src: /src/pdns/pdns/pdnsutil.cc:4807,1
    - Dst: DNSSECKeeper::commitTransaction
      Src: /src/pdns/pdns/pdnsutil.cc:4808,1
    - Dst: DNSSECKeeper::setNSEC3PARAM
      Src: /src/pdns/pdns/pdnsutil.cc:4816,1
    - Dst: NSEC3PARAMRecordContent
      Src: /src/pdns/pdns/pdnsutil.cc:4816,1
    - Dst: what
      Src: /src/pdns/pdns/pdnsutil.cc:4822,1
    - Dst: rectifyZone
      Src: /src/pdns/pdns/pdnsutil.cc:4827,1
    - Dst: addOrSetMeta
      Src: /src/pdns/pdns/pdnsutil.cc:4833,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 38
    argCount: 2
    argNames:
    - ' cmds'
    - synopsis
    argTypes:
    - vector<string>
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4840
      start: 4784
    functionDepth: 2
    functionLinenumber: 4784
    functionLinenumberEnd: 4840
    functionName: setSignalingZone
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 0
    functionsReached:
    - getRawLabel
    - DNSSECKeeper::isSecuredZone
    - DNSSECKeeper::commitTransaction
    - DNSSECKeeper::setNSEC3PARAM
    - pdns_iequals
    - secureZone
    - what
    - size
    - rectifyZone
    - usage
    - DNSSECKeeper::startTransaction
    - hasLabels
    - empty
    - addOrSetMeta
    - at
    - NSEC3PARAMRecordContent
    linkageType: ''
    returnType: int
    signature: int setSignalingZone(vector<string>& cmds, const std::string_view synopsis)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/pdnsutil.cc:4844,1
    - Dst: usage
      Src: /src/pdns/pdns/pdnsutil.cc:4845,1
    - Dst: DNSSECKeeper::unsetPresigned
      Src: /src/pdns/pdns/pdnsutil.cc:4848,1
    - Dst: ZoneName
      Src: /src/pdns/pdns/pdnsutil.cc:4848,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:4848,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:4849,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - ' cmds'
    - synopsis
    argTypes:
    - vector<string>
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4853
      start: 4842
    functionDepth: 0
    functionLinenumber: 4842
    functionLinenumberEnd: 4853
    functionName: unsetPresigned
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 1
    functionsReached:
    - at
    - usage
    - empty
    - ZoneName
    - DNSSECKeeper::unsetPresigned
    linkageType: ''
    returnType: int
    signature: int unsetPresigned(vector<string>& cmds, const std::string_view synopsis)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/pdnsutil.cc:4857,1
    - Dst: usage
      Src: /src/pdns/pdns/pdnsutil.cc:4858,1
    - Dst: DNSSECKeeper::unsetPublishCDNSKEY
      Src: /src/pdns/pdns/pdnsutil.cc:4861,1
    - Dst: ZoneName
      Src: /src/pdns/pdns/pdnsutil.cc:4861,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:4861,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:4862,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - ' cmds'
    - synopsis
    argTypes:
    - vector<string>
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4866
      start: 4855
    functionDepth: 1
    functionLinenumber: 4855
    functionLinenumberEnd: 4866
    functionName: unsetPublishCDNSKey
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 0
    functionsReached:
    - DNSSECKeeper::unsetPublishCDNSKEY
    - usage
    - empty
    - ZoneName
    - at
    linkageType: ''
    returnType: int
    signature: int unsetPublishCDNSKey(vector<string>& cmds, const std::string_view
      synopsis)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/pdnsutil.cc:4870,1
    - Dst: usage
      Src: /src/pdns/pdns/pdnsutil.cc:4871,1
    - Dst: DNSSECKeeper::unsetPublishCDS
      Src: /src/pdns/pdns/pdnsutil.cc:4874,1
    - Dst: ZoneName
      Src: /src/pdns/pdns/pdnsutil.cc:4874,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:4874,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:4875,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - ' cmds'
    - synopsis
    argTypes:
    - vector<string>
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4879
      start: 4868
    functionDepth: 1
    functionLinenumber: 4868
    functionLinenumberEnd: 4879
    functionName: unsetPublishCDs
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 0
    functionsReached:
    - DNSSECKeeper::unsetPublishCDS
    - usage
    - empty
    - ZoneName
    - at
    linkageType: ''
    returnType: int
    signature: int unsetPublishCDs(vector<string>& cmds, const std::string_view synopsis)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/pdnsutil.cc:4883,1
    - Dst: usage
      Src: /src/pdns/pdns/pdnsutil.cc:4884,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:4887,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:4888,1
    - Dst: NSEC3PARAMRecordContent::NSEC3PARAMRecordContent
      Src: /src/pdns/pdns/pdnsutil.cc:4889,1
    - Dst: DNSSECKeeper::getNSEC3PARAM
      Src: /src/pdns/pdns/pdnsutil.cc:4891,1
    - Dst: toBase32Hex
      Src: /src/pdns/pdns/pdnsutil.cc:4899,1
    - Dst: hashQNameWithSalt
      Src: /src/pdns/pdns/pdnsutil.cc:4899,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 2
    argNames:
    - ' cmds'
    - synopsis
    argTypes:
    - vector<string>
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4901
      start: 4881
    functionDepth: 1
    functionLinenumber: 4881
    functionLinenumberEnd: 4901
    functionName: hashZoneRecord
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 0
    functionsReached:
    - size
    - NSEC3PARAMRecordContent::NSEC3PARAMRecordContent
    - usage
    - toBase32Hex
    - DNSSECKeeper::getNSEC3PARAM
    - at
    - hashQNameWithSalt
    linkageType: ''
    returnType: int
    signature: int hashZoneRecord(vector<string>& cmds, const std::string_view synopsis)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/pdnsutil.cc:4905,1
    - Dst: usage
      Src: /src/pdns/pdns/pdnsutil.cc:4906,1
    - Dst: DNSSECKeeper::unsetNSEC3PARAM
      Src: /src/pdns/pdns/pdnsutil.cc:4909,1
    - Dst: ZoneName
      Src: /src/pdns/pdns/pdnsutil.cc:4909,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:4909,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:4910,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - ' cmds'
    - synopsis
    argTypes:
    - vector<string>
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4916
      start: 4903
    functionDepth: 1
    functionLinenumber: 4903
    functionLinenumberEnd: 4916
    functionName: unsetNSec3
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 0
    functionsReached:
    - DNSSECKeeper::unsetNSEC3PARAM
    - usage
    - empty
    - ZoneName
    - at
    linkageType: ''
    returnType: int
    signature: int unsetNSec3(vector<string>& cmds, const std::string_view synopsis)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/pdnsutil.cc:4920,1
    - Dst: usage
      Src: /src/pdns/pdns/pdnsutil.cc:4921,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:4925,1
    - Dst: pdns::checked_stoi<unsigned int>
      Src: /src/pdns/pdns/pdnsutil.cc:4926,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:4926,1
    - Dst: DNSSECKeeper::getKeyById
      Src: /src/pdns/pdns/pdnsutil.cc:4927,1
    - Dst: ZoneName
      Src: /src/pdns/pdns/pdnsutil.cc:4927,1
    - Dst: DNSSECPrivateKey::getKey
      Src: /src/pdns/pdns/pdnsutil.cc:4928,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - ' cmds'
    - synopsis
    argTypes:
    - vector<string>
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4930
      start: 4918
    functionDepth: 1
    functionLinenumber: 4918
    functionLinenumberEnd: 4930
    functionName: exportZoneKey
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 0
    functionsReached:
    - size
    - DNSSECKeeper::getKeyById
    - pdns::checked_stoi<unsigned int>
    - usage
    - ZoneName
    - DNSSECPrivateKey::getKey
    - at
    linkageType: ''
    returnType: int
    signature: int exportZoneKey(vector<string>& cmds, const std::string_view synopsis)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/pdnsutil.cc:4934,1
    - Dst: usage
      Src: /src/pdns/pdns/pdnsutil.cc:4935,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:4939,1
    - Dst: pdns::checked_stoi<unsigned int>
      Src: /src/pdns/pdns/pdnsutil.cc:4940,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:4940,1
    - Dst: DNSSECKeeper::getKeyById
      Src: /src/pdns/pdns/pdnsutil.cc:4941,1
    - Dst: ZoneName
      Src: /src/pdns/pdns/pdnsutil.cc:4941,1
    - Dst: DNSSECPrivateKey::getKey
      Src: /src/pdns/pdns/pdnsutil.cc:4942,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - ' cmds'
    - synopsis
    argTypes:
    - vector<string>
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4944
      start: 4932
    functionDepth: 1
    functionLinenumber: 4932
    functionLinenumberEnd: 4944
    functionName: exportZoneKeyPEM
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 0
    functionsReached:
    - size
    - DNSSECKeeper::getKeyById
    - pdns::checked_stoi<unsigned int>
    - usage
    - ZoneName
    - DNSSECPrivateKey::getKey
    - at
    linkageType: ''
    returnType: int
    signature: int exportZoneKeyPEM(vector<string>& cmds, const std::string_view synopsis)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/pdnsutil.cc:4948,1
    - Dst: usage
      Src: /src/pdns/pdns/pdnsutil.cc:4949,1
    - Dst: increaseSerial
      Src: /src/pdns/pdns/pdnsutil.cc:4952,1
    - Dst: ZoneName
      Src: /src/pdns/pdns/pdnsutil.cc:4952,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:4952,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - ' cmds'
    - synopsis
    argTypes:
    - vector<string>
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4953
      start: 4946
    functionDepth: 0
    functionLinenumber: 4946
    functionLinenumberEnd: 4953
    functionName: increaseSerial
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 2
    functionsReached:
    - usage
    - empty
    - ZoneName
    - increaseSerial
    - at
    linkageType: ''
    returnType: int
    signature: int increaseSerial(vector<string>& cmds, const std::string_view synopsis)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/pdnsutil.cc:4957,1
    - Dst: usage
      Src: /src/pdns/pdns/pdnsutil.cc:4958,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:4961,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:4962,1
    - Dst: pdns::checked_stoi<unsigned int>
      Src: /src/pdns/pdns/pdnsutil.cc:4963,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:4963,1
    - Dst: std::fopen
      Src: /src/pdns/pdns/pdnsutil.cc:4966,1
    - Dst: string::c_str
      Src: /src/pdns/pdns/pdnsutil.cc:4966,1
    - Dst: pdns::getMessageFromErrno
      Src: /src/pdns/pdns/pdnsutil.cc:4968,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/pdnsutil.cc:4969,1
    - Dst: DNSKEYRecordContent::DNSKEYRecordContent
      Src: /src/pdns/pdns/pdnsutil.cc:4972,1
    - Dst: DNSCryptoKeyEngine::makeFromPEMFile
      Src: /src/pdns/pdns/pdnsutil.cc:4973,1
    - Dst: pdns::checked_stoi_into
      Src: /src/pdns/pdns/pdnsutil.cc:4982,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:4982,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/pdnsutil.cc:4987,1
    - Dst: size
      Src: /src/pdns/pdns/pdnsutil.cc:4990,1
    - Dst: pdns_iequals
      Src: /src/pdns/pdns/pdnsutil.cc:4991,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:4991,1
    - Dst: pdns_iequals
      Src: /src/pdns/pdns/pdnsutil.cc:4994,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:4994,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:4998,1
    - Dst: DNSSECPrivateKey::setKey
      Src: /src/pdns/pdns/pdnsutil.cc:5005,1
    - Dst: DNSSECKeeper::addKey
      Src: /src/pdns/pdns/pdnsutil.cc:5009,1
    - Dst: checkZoneKey
      Src: /src/pdns/pdns/pdnsutil.cc:5013,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 36
    argCount: 2
    argNames:
    - ' cmds'
    - synopsis
    argTypes:
    - vector<string>
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5014
      start: 4955
    functionDepth: 2
    functionLinenumber: 4955
    functionLinenumberEnd: 5014
    functionName: importZoneKeyPEM
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 0
    functionsReached:
    - DNSCryptoKeyEngine::makeFromPEMFile
    - string::c_str
    - std::to_string
    - checkZoneKey
    - pdns_iequals
    - runtime_error
    - DNSSECPrivateKey::setKey
    - size
    - pdns::getMessageFromErrno
    - DNSSECKeeper::addKey
    - pdns::checked_stoi<unsigned int>
    - usage
    - pdns::checked_stoi_into
    - at
    - DNSKEYRecordContent::DNSKEYRecordContent
    - std::fopen
    linkageType: ''
    returnType: int
    signature: int importZoneKeyPEM(vector<string>& cmds, const std::string_view synopsis)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/pdnsutil.cc:5018,1
    - Dst: usage
      Src: /src/pdns/pdns/pdnsutil.cc:5019,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:5021,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:5022,1
    - Dst: DNSKEYRecordContent::DNSKEYRecordContent
      Src: /src/pdns/pdns/pdnsutil.cc:5023,1
    - Dst: DNSCryptoKeyEngine::makeFromISCFile
      Src: /src/pdns/pdns/pdnsutil.cc:5024,1
    - Dst: string::c_str
      Src: /src/pdns/pdns/pdnsutil.cc:5024,1
    - Dst: size
      Src: /src/pdns/pdns/pdnsutil.cc:5030,1
    - Dst: pdns_iequals
      Src: /src/pdns/pdns/pdnsutil.cc:5031,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:5031,1
    - Dst: pdns_iequals
      Src: /src/pdns/pdns/pdnsutil.cc:5034,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:5034,1
    - Dst: pdns_iequals
      Src: /src/pdns/pdns/pdnsutil.cc:5037,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:5037,1
    - Dst: pdns_iequals
      Src: /src/pdns/pdns/pdnsutil.cc:5040,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:5040,1
    - Dst: pdns_iequals
      Src: /src/pdns/pdns/pdnsutil.cc:5040,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:5040,1
    - Dst: pdns_iequals
      Src: /src/pdns/pdns/pdnsutil.cc:5043,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:5043,1
    - Dst: pdns_iequals
      Src: /src/pdns/pdns/pdnsutil.cc:5046,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:5046,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:5050,1
    - Dst: shared_ptr::getAlgorithm
      Src: /src/pdns/pdns/pdnsutil.cc:5056,1
    - Dst: DNSSECPrivateKey::setKey
      Src: /src/pdns/pdns/pdnsutil.cc:5060,1
    - Dst: DNSSECKeeper::addKey
      Src: /src/pdns/pdns/pdnsutil.cc:5064,1
    - Dst: checkZoneKey
      Src: /src/pdns/pdns/pdnsutil.cc:5068,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 36
    argCount: 2
    argNames:
    - ' cmds'
    - synopsis
    argTypes:
    - vector<string>
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5069
      start: 5016
    functionDepth: 2
    functionLinenumber: 5016
    functionLinenumberEnd: 5069
    functionName: importZoneKey
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 0
    functionsReached:
    - DNSCryptoKeyEngine::makeFromISCFile
    - string::c_str
    - checkZoneKey
    - pdns_iequals
    - DNSSECPrivateKey::setKey
    - size
    - DNSSECKeeper::addKey
    - usage
    - shared_ptr::getAlgorithm
    - at
    - DNSKEYRecordContent::DNSKEYRecordContent
    linkageType: ''
    returnType: int
    signature: int importZoneKey(vector<string>& cmds, const std::string_view synopsis)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/pdnsutil.cc:5073,1
    - Dst: usage
      Src: /src/pdns/pdns/pdnsutil.cc:5074,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:5078,1
    - Dst: pdns::checked_stoi<unsigned int>
      Src: /src/pdns/pdns/pdnsutil.cc:5079,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:5079,1
    - Dst: DNSSECKeeper::getKeyById
      Src: /src/pdns/pdns/pdnsutil.cc:5080,1
    - Dst: DNSSECPrivateKey::getDNSKEY
      Src: /src/pdns/pdns/pdnsutil.cc:5081,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - ' cmds'
    - synopsis
    argTypes:
    - vector<string>
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5083
      start: 5071
    functionDepth: 1
    functionLinenumber: 5071
    functionLinenumberEnd: 5083
    functionName: exportZoneDNSKey
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 0
    functionsReached:
    - size
    - DNSSECKeeper::getKeyById
    - pdns::checked_stoi<unsigned int>
    - usage
    - DNSSECPrivateKey::getDNSKEY
    - at
    linkageType: ''
    returnType: int
    signature: int exportZoneDNSKey(vector<string>& cmds, const std::string_view synopsis)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/pdnsutil.cc:5087,1
    - Dst: usage
      Src: /src/pdns/pdns/pdnsutil.cc:5088,1
    - Dst: pdns_iequals
      Src: /src/pdns/pdns/pdnsutil.cc:5096,1
    - Dst: pdns_iequals
      Src: /src/pdns/pdns/pdnsutil.cc:5099,1
    - Dst: DNSSEC::shorthand2algorithm
      Src: /src/pdns/pdns/pdnsutil.cc:5102,1
    - Dst: pdns::checked_stoi<int>
      Src: /src/pdns/pdns/pdnsutil.cc:5105,1
    - Dst: pdns::checked_stoi_into
      Src: /src/pdns/pdns/pdnsutil.cc:5106,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/pdnsutil.cc:5134,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/pdnsutil.cc:5134,1
    - Dst: shared_ptr::create
      Src: /src/pdns/pdns/pdnsutil.cc:5138,1
    - Dst: DNSSECPrivateKey::setKey
      Src: /src/pdns/pdns/pdnsutil.cc:5140,1
    - Dst: DNSSECPrivateKey::getFlags
      Src: /src/pdns/pdns/pdnsutil.cc:5143,1
    - Dst: DNSSECPrivateKey::getKey
      Src: /src/pdns/pdns/pdnsutil.cc:5144,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 45
    argCount: 2
    argNames:
    - ' cmds'
    - synopsis
    argTypes:
    - vector<string>
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5146
      start: 5085
    functionDepth: 1
    functionLinenumber: 5085
    functionLinenumberEnd: 5146
    functionName: generateZoneKey
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 0
    functionsReached:
    - std::to_string
    - pdns_iequals
    - pdns::checked_stoi<int>
    - runtime_error
    - DNSSECPrivateKey::setKey
    - shared_ptr::create
    - usage
    - DNSSECPrivateKey::getFlags
    - empty
    - pdns::checked_stoi_into
    - DNSSECPrivateKey::getKey
    - DNSSEC::shorthand2algorithm
    linkageType: ''
    returnType: int
    signature: int generateZoneKey(vector<string>& cmds, const std::string_view synopsis)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/pdnsutil.cc:5150,1
    - Dst: usage
      Src: /src/pdns/pdns/pdnsutil.cc:5151,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:5153,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:5154,1
    - Dst: makeTSIGKey
      Src: /src/pdns/pdns/pdnsutil.cc:5157,1
    - Dst: UtilBackend::setTSIGKey
      Src: /src/pdns/pdns/pdnsutil.cc:5164,1
    - Dst: DNSName
      Src: /src/pdns/pdns/pdnsutil.cc:5164,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 2
    argNames:
    - ' cmds'
    - synopsis
    argTypes:
    - vector<string>
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5171
      start: 5148
    functionDepth: 1
    functionLinenumber: 5148
    functionLinenumberEnd: 5171
    functionName: generateTSIGKey
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 0
    functionsReached:
    - size
    - makeTSIGKey
    - DNSName
    - usage
    - UtilBackend::setTSIGKey
    - at
    linkageType: ''
    returnType: int
    signature: int generateTSIGKey(vector<string>& cmds, const std::string_view synopsis)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/pdnsutil.cc:5175,1
    - Dst: usage
      Src: /src/pdns/pdns/pdnsutil.cc:5176,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:5178,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:5179,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:5180,1
    - Dst: UtilBackend::setTSIGKey
      Src: /src/pdns/pdns/pdnsutil.cc:5183,1
    - Dst: DNSName
      Src: /src/pdns/pdns/pdnsutil.cc:5183,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - ' cmds'
    - synopsis
    argTypes:
    - vector<string>
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5191
      start: 5173
    functionDepth: 0
    functionLinenumber: 5173
    functionLinenumberEnd: 5191
    functionName: importTSIGKey
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 0
    functionsReached:
    - DNSName
    - size
    - usage
    - UtilBackend::setTSIGKey
    - at
    linkageType: ''
    returnType: int
    signature: int importTSIGKey(vector<string>& cmds, const std::string_view synopsis)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/pdnsutil.cc:5195,1
    - Dst: usage
      Src: /src/pdns/pdns/pdnsutil.cc:5196,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:5198,1
    - Dst: UtilBackend::deleteTSIGKey
      Src: /src/pdns/pdns/pdnsutil.cc:5201,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - ' cmds'
    - synopsis
    argTypes:
    - vector<string>
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5209
      start: 5193
    functionDepth: 1
    functionLinenumber: 5193
    functionLinenumberEnd: 5209
    functionName: deleteTSIGKey
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 1
    functionsReached:
    - empty
    - UtilBackend::deleteTSIGKey
    - usage
    - at
    linkageType: ''
    returnType: int
    signature: int deleteTSIGKey(vector<string>& cmds, const std::string_view synopsis)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: UtilBackend::getTSIGKeys
      Src: /src/pdns/pdns/pdnsutil.cc:5215,1
    - Dst: name::toString
      Src: /src/pdns/pdns/pdnsutil.cc:5217,1
    - Dst: algorithm::toString
      Src: /src/pdns/pdns/pdnsutil.cc:5217,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - ' cmds'
    - synopsis
    argTypes:
    - vector<string>
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5221
      start: 5211
    functionDepth: 0
    functionLinenumber: 5211
    functionLinenumberEnd: 5221
    functionName: listTSIGKeys
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 0
    functionsReached:
    - algorithm::toString
    - UtilBackend::getTSIGKeys
    - name::toString
    linkageType: ''
    returnType: int
    signature: int listTSIGKeys([[maybe_unused]] vector<string>& cmds, [[maybe_unused]]
      const std::string_view synopsis)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/pdnsutil.cc:5226,1
    - Dst: usage
      Src: /src/pdns/pdns/pdnsutil.cc:5227,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:5229,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:5230,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:5231,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:5231,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:5234,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:5234,1
    - Dst: usage
      Src: /src/pdns/pdns/pdnsutil.cc:5238,1
    - Dst: UtilBackend::getDomainInfo
      Src: /src/pdns/pdns/pdnsutil.cc:5242,1
    - Dst: UtilBackend::getDomainMetadata
      Src: /src/pdns/pdns/pdnsutil.cc:5247,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/pdnsutil.cc:5259,1
    - Dst: UtilBackend::setDomainMetadata
      Src: /src/pdns/pdns/pdnsutil.cc:5260,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 37
    argCount: 2
    argNames:
    - ' cmds'
    - synopsis
    argTypes:
    - vector<string>
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5272
      start: 5223
    functionDepth: 0
    functionLinenumber: 5223
    functionLinenumberEnd: 5272
    functionName: activateTSIGKey
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 0
    functionsReached:
    - std::vector::push_back
    - UtilBackend::setDomainMetadata
    - UtilBackend::getDomainInfo
    - size
    - usage
    - UtilBackend::getDomainMetadata
    - at
    linkageType: ''
    returnType: int
    signature: int activateTSIGKey(vector<string>& cmds, const std::string_view synopsis)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/pdnsutil.cc:5277,1
    - Dst: usage
      Src: /src/pdns/pdns/pdnsutil.cc:5278,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:5280,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:5281,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:5282,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:5282,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:5285,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:5285,1
    - Dst: usage
      Src: /src/pdns/pdns/pdnsutil.cc:5289,1
    - Dst: UtilBackend::getDomainInfo
      Src: /src/pdns/pdns/pdnsutil.cc:5294,1
    - Dst: UtilBackend::getDomainMetadata
      Src: /src/pdns/pdns/pdnsutil.cc:5299,1
    - Dst: std::vector::begin
      Src: /src/pdns/pdns/pdnsutil.cc:5303,1
    - Dst: std::vector::end
      Src: /src/pdns/pdns/pdnsutil.cc:5304,1
    - Dst: std::vector::end
      Src: /src/pdns/pdns/pdnsutil.cc:5309,1
    - Dst: std::vector::erase
      Src: /src/pdns/pdns/pdnsutil.cc:5310,1
    - Dst: UtilBackend::setDomainMetadata
      Src: /src/pdns/pdns/pdnsutil.cc:5311,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 37
    argCount: 2
    argNames:
    - ' cmds'
    - synopsis
    argTypes:
    - vector<string>
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5323
      start: 5274
    functionDepth: 0
    functionLinenumber: 5274
    functionLinenumberEnd: 5323
    functionName: deactivateTSIGKey
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 0
    functionsReached:
    - std::vector::end
    - UtilBackend::setDomainMetadata
    - std::vector::begin
    - UtilBackend::getDomainInfo
    - size
    - std::vector::erase
    - usage
    - UtilBackend::getDomainMetadata
    - at
    linkageType: ''
    returnType: int
    signature: int deactivateTSIGKey(vector<string>& cmds, const std::string_view
      synopsis)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/pdnsutil.cc:5327,1
    - Dst: usage
      Src: /src/pdns/pdns/pdnsutil.cc:5328,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:5331,1
    - Dst: UtilBackend::getDomainInfo
      Src: /src/pdns/pdns/pdnsutil.cc:5335,1
    - Dst: size
      Src: /src/pdns/pdns/pdnsutil.cc:5340,1
    - Dst: vector::assign
      Src: /src/pdns/pdns/pdnsutil.cc:5341,1
    - Dst: begin
      Src: /src/pdns/pdns/pdnsutil.cc:5341,1
    - Dst: end
      Src: /src/pdns/pdns/pdnsutil.cc:5341,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/pdnsutil.cc:5345,1
    - Dst: UtilBackend::getDomainMetadata
      Src: /src/pdns/pdns/pdnsutil.cc:5346,1
    - Dst: boost::join
      Src: /src/pdns/pdns/pdnsutil.cc:5347,1
    - Dst: UtilBackend::getAllDomainMetadata
      Src: /src/pdns/pdns/pdnsutil.cc:5353,1
    - Dst: boost::join
      Src: /src/pdns/pdns/pdnsutil.cc:5355,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 23
    argCount: 2
    argNames:
    - ' cmds'
    - synopsis
    argTypes:
    - vector<string>
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5359
      start: 5325
    functionDepth: 1
    functionLinenumber: 5325
    functionLinenumberEnd: 5359
    functionName: getMeta
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 0
    functionsReached:
    - UtilBackend::getAllDomainMetadata
    - UtilBackend::getDomainInfo
    - vector::assign
    - end
    - size
    - usage
    - boost::join
    - begin
    - empty
    - UtilBackend::getDomainMetadata
    - vector::clear
    - at
    linkageType: ''
    returnType: int
    signature: int getMeta(vector<string>& cmds, const std::string_view synopsis)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/pdnsutil.cc:5363,1
    - Dst: usage
      Src: /src/pdns/pdns/pdnsutil.cc:5364,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:5366,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:5367,1
    - Dst: find
      Src: /src/pdns/pdns/pdnsutil.cc:5371,1
    - Dst: std::array::begin
      Src: /src/pdns/pdns/pdnsutil.cc:5371,1
    - Dst: std::array::end
      Src: /src/pdns/pdns/pdnsutil.cc:5371,1
    - Dst: std::array::end
      Src: /src/pdns/pdns/pdnsutil.cc:5371,1
    - Dst: string::find
      Src: /src/pdns/pdns/pdnsutil.cc:5371,1
    - Dst: size
      Src: /src/pdns/pdns/pdnsutil.cc:5377,1
    - Dst: begin
      Src: /src/pdns/pdns/pdnsutil.cc:5382,1
    - Dst: end
      Src: /src/pdns/pdns/pdnsutil.cc:5382,1
    - Dst: addOrSetMeta
      Src: /src/pdns/pdns/pdnsutil.cc:5383,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 3
    argNames:
    - ' cmds'
    - synopsis
    - clobber
    argTypes:
    - vector<string>
    - std::string_view
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5384
      start: 5361
    functionDepth: 2
    functionLinenumber: 5361
    functionLinenumberEnd: 5384
    functionName: setMetaInternal
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 0
    functionsReached:
    - std::array::end
    - string::find
    - size
    - end
    - usage
    - begin
    - std::array::begin
    - addOrSetMeta
    - at
    - find
    linkageType: ''
    returnType: int
    signature: int setMetaInternal(vector<string>& cmds, const std::string_view synopsis,
      bool clobber)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: setMetaInternal
      Src: /src/pdns/pdns/pdnsutil.cc:5388,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' cmds'
    - synopsis
    argTypes:
    - vector<string>
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5389
      start: 5386
    functionDepth: 3
    functionLinenumber: 5386
    functionLinenumberEnd: 5389
    functionName: addMeta
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 0
    functionsReached:
    - setMetaInternal
    linkageType: ''
    returnType: int
    signature: int addMeta(vector<string>& cmds, const std::string_view synopsis)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: setMetaInternal
      Src: /src/pdns/pdns/pdnsutil.cc:5392,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' cmds'
    - synopsis
    argTypes:
    - vector<string>
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5393
      start: 5390
    functionDepth: 3
    functionLinenumber: 5390
    functionLinenumberEnd: 5393
    functionName: setMeta
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 0
    functionsReached:
    - setMetaInternal
    linkageType: ''
    returnType: int
    signature: int setMeta(vector<string>& cmds, const std::string_view synopsis)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/pdnsutil.cc:5403,1
    - Dst: usage
      Src: /src/pdns/pdns/pdnsutil.cc:5404,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:5408,1
    - Dst: UtilBackend::getDomainInfo
      Src: /src/pdns/pdns/pdnsutil.cc:5411,1
    - Dst: DNSSEC::shorthand2algorithm
      Src: /src/pdns/pdns/pdnsutil.cc:5416,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:5416,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:5418,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:5422,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:5423,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:5424,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:5425,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:5426,1
    - Dst: size
      Src: /src/pdns/pdns/pdnsutil.cc:5428,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:5429,1
    - Dst: DNSKEYRecordContent::DNSKEYRecordContent
      Src: /src/pdns/pdns/pdnsutil.cc:5444,1
    - Dst: DNSCryptoKeyEngine::makeFromISCString
      Src: /src/pdns/pdns/pdnsutil.cc:5446,1
    - Dst: std::ostringstream::str
      Src: /src/pdns/pdns/pdnsutil.cc:5446,1
    - Dst: shared_ptr::checkKey
      Src: /src/pdns/pdns/pdnsutil.cc:5447,1
    - Dst: DNSSECPrivateKey::setKey
      Src: /src/pdns/pdns/pdnsutil.cc:5452,1
    - Dst: UtilBackend::getDomainKeys
      Src: /src/pdns/pdns/pdnsutil.cc:5455,1
    - Dst: std::ostringstream::str
      Src: /src/pdns/pdns/pdnsutil.cc:5459,1
    - Dst: DNSSECKeeper::addKey
      Src: /src/pdns/pdns/pdnsutil.cc:5472,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 39
    argCount: 2
    argNames:
    - ' cmds'
    - synopsis
    argTypes:
    - vector<string>
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5480
      start: 5397
    functionDepth: 1
    functionLinenumber: 5397
    functionLinenumberEnd: 5480
    functionName: HSMAssign
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 0
    functionsReached:
    - UtilBackend::getDomainKeys
    - shared_ptr::checkKey
    - std::ostringstream::str
    - UtilBackend::getDomainInfo
    - DNSCryptoKeyEngine::makeFromISCString
    - DNSSECPrivateKey::setKey
    - size
    - DNSSECKeeper::addKey
    - usage
    - at
    - DNSKEYRecordContent::DNSKEYRecordContent
    - DNSSEC::shorthand2algorithm
    linkageType: ''
    returnType: int
    signature: int HSMAssign(vector<string>& cmds, const std::string_view synopsis)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/pdnsutil.cc:5484,1
    - Dst: usage
      Src: /src/pdns/pdns/pdnsutil.cc:5485,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:5489,1
    - Dst: UtilBackend::getDomainInfo
      Src: /src/pdns/pdns/pdnsutil.cc:5493,1
    - Dst: pdns::checked_stoi_into
      Src: /src/pdns/pdns/pdnsutil.cc:5498,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:5498,1
    - Dst: UtilBackend::getDomainKeys
      Src: /src/pdns/pdns/pdnsutil.cc:5500,1
    - Dst: DNSKEYRecordContent::DNSKEYRecordContent
      Src: /src/pdns/pdns/pdnsutil.cc:5510,1
    - Dst: DNSCryptoKeyEngine::makeFromISCString
      Src: /src/pdns/pdns/pdnsutil.cc:5511,1
    - Dst: size
      Src: /src/pdns/pdns/pdnsutil.cc:5519,1
    - Dst: pdns::checked_stoi_into
      Src: /src/pdns/pdns/pdnsutil.cc:5520,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:5520,1
    - Dst: std::unique_ptr::create
      Src: /src/pdns/pdns/pdnsutil.cc:5527,1
    - Dst: std::unique_ptr::getBits
      Src: /src/pdns/pdns/pdnsutil.cc:5533,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 36
    argCount: 2
    argNames:
    - ' cmds'
    - synopsis
    argTypes:
    - vector<string>
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5535
      start: 5482
    functionDepth: 1
    functionLinenumber: 5482
    functionLinenumberEnd: 5535
    functionName: HSMCreateKey
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 0
    functionsReached:
    - UtilBackend::getDomainKeys
    - std::unique_ptr::getBits
    - UtilBackend::getDomainInfo
    - DNSCryptoKeyEngine::makeFromISCString
    - size
    - std::unique_ptr::create
    - usage
    - pdns::checked_stoi_into
    - at
    - DNSKEYRecordContent::DNSKEYRecordContent
    linkageType: ''
    returnType: int
    signature: int HSMCreateKey(vector<string>& cmds, const std::string_view synopsis)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ' cmds'
    - synopsis
    argTypes:
    - vector<string>
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5543
      start: 5539
    functionDepth: 0
    functionLinenumber: 5539
    functionLinenumberEnd: 5543
    functionName: HSM
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int HSM([[maybe_unused]] vector<string>& cmds, [[maybe_unused]] const
      std::string_view synopsis)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/pdnsutil.cc:5549,1
    - Dst: usage
      Src: /src/pdns/pdns/pdnsutil.cc:5550,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:5553,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:5553,1
    - Dst: BackendMakers
      Src: /src/pdns/pdns/pdnsutil.cc:5561,1
    - Dst: getPrefix
      Src: /src/pdns/pdns/pdnsutil.cc:5562,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:5562,1
    - Dst: std::move
      Src: /src/pdns/pdns/pdnsutil.cc:5563,1
    - Dst: getPrefix
      Src: /src/pdns/pdns/pdnsutil.cc:5565,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:5565,1
    - Dst: std::move
      Src: /src/pdns/pdns/pdnsutil.cc:5566,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:5571,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:5575,1
    - Dst: unique_ptr::getCapabilities
      Src: /src/pdns/pdns/pdnsutil.cc:5579,1
    - Dst: unique_ptr::getCapabilities
      Src: /src/pdns/pdns/pdnsutil.cc:5583,1
    - Dst: unique_ptr::getPrefix
      Src: /src/pdns/pdns/pdnsutil.cc:5588,1
    - Dst: unique_ptr::getPrefix
      Src: /src/pdns/pdns/pdnsutil.cc:5588,1
    - Dst: unique_ptr::getAllDomains
      Src: /src/pdns/pdns/pdnsutil.cc:5592,1
    - Dst: vector::empty
      Src: /src/pdns/pdns/pdnsutil.cc:5593,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/pdnsutil.cc:5594,1
    - Dst: unique_ptr::getAllDomains
      Src: /src/pdns/pdns/pdnsutil.cc:5597,1
    - Dst: copyZoneContents
      Src: /src/pdns/pdns/pdnsutil.cc:5602,1
    - Dst: unique_ptr::get
      Src: /src/pdns/pdns/pdnsutil.cc:5602,1
    - Dst: unique_ptr::getTSIGKeys
      Src: /src/pdns/pdns/pdnsutil.cc:5608,1
    - Dst: unique_ptr::setTSIGKey
      Src: /src/pdns/pdns/pdnsutil.cc:5610,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/pdnsutil.cc:5611,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 50
    argCount: 2
    argNames:
    - ' cmds'
    - synopsis
    argTypes:
    - vector<string>
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5621
      start: 5547
    functionDepth: 3
    functionLinenumber: 5547
    functionLinenumberEnd: 5621
    functionName: B2BMigrate
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 0
    functionsReached:
    - BackendMakers
    - std::move
    - unique_ptr::getPrefix
    - PDNSException
    - unique_ptr::get
    - unique_ptr::getTSIGKeys
    - unique_ptr::getCapabilities
    - size
    - vector::empty
    - unique_ptr::getAllDomains
    - usage
    - unique_ptr::setTSIGKey
    - getPrefix
    - at
    - copyZoneContents
    linkageType: ''
    returnType: int
    signature: int B2BMigrate(vector<string>& cmds, const std::string_view synopsis)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/pdnsutil.cc:5625,1
    - Dst: usage
      Src: /src/pdns/pdns/pdnsutil.cc:5626,1
    - Dst: BackendMakers
      Src: /src/pdns/pdns/pdnsutil.cc:5631,1
    - Dst: getPrefix
      Src: /src/pdns/pdns/pdnsutil.cc:5632,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:5632,1
    - Dst: std::move
      Src: /src/pdns/pdns/pdnsutil.cc:5633,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:5638,1
    - Dst: std::unique_ptr::getCapabilities
      Src: /src/pdns/pdns/pdnsutil.cc:5642,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:5643,1
    - Dst: size
      Src: /src/pdns/pdns/pdnsutil.cc:5647,1
    - Dst: std::unique_ptr::directBackendCmd
      Src: /src/pdns/pdns/pdnsutil.cc:5649,1
    - Dst: next
      Src: /src/pdns/pdns/pdnsutil.cc:5652,1
    - Dst: begin
      Src: /src/pdns/pdns/pdnsutil.cc:5652,1
    - Dst: end
      Src: /src/pdns/pdns/pdnsutil.cc:5652,1
    - Dst: size
      Src: /src/pdns/pdns/pdnsutil.cc:5653,1
    - Dst: std::unique_ptr::directBackendCmd
      Src: /src/pdns/pdns/pdnsutil.cc:5656,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 27
    argCount: 2
    argNames:
    - ' cmds'
    - synopsis
    argTypes:
    - vector<string>
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5661
      start: 5623
    functionDepth: 1
    functionLinenumber: 5623
    functionLinenumberEnd: 5661
    functionName: backendCmd
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 0
    functionsReached:
    - BackendMakers
    - next
    - std::move
    - std::unique_ptr::getCapabilities
    - end
    - size
    - begin
    - usage
    - std::unique_ptr::directBackendCmd
    - empty
    - getPrefix
    - at
    linkageType: ''
    returnType: int
    signature: int backendCmd(vector<string>& cmds, const std::string_view synopsis)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/pdnsutil.cc:5665,1
    - Dst: usage
      Src: /src/pdns/pdns/pdnsutil.cc:5666,1
    - Dst: BackendMakers
      Src: /src/pdns/pdns/pdnsutil.cc:5671,1
    - Dst: getPrefix
      Src: /src/pdns/pdns/pdnsutil.cc:5672,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:5672,1
    - Dst: std::move
      Src: /src/pdns/pdns/pdnsutil.cc:5673,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:5678,1
    - Dst: size
      Src: /src/pdns/pdns/pdnsutil.cc:5683,1
    - Dst: DNSRecordContent::TypeToNumber
      Src: /src/pdns/pdns/pdnsutil.cc:5684,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:5684,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:5687,1
    - Dst: ZoneName::hasVariant
      Src: /src/pdns/pdns/pdnsutil.cc:5690,1
    - Dst: std::unique_ptr::getSOA
      Src: /src/pdns/pdns/pdnsutil.cc:5694,1
    - Dst: ZoneName::chopOff
      Src: /src/pdns/pdns/pdnsutil.cc:5698,1
    - Dst: Netmask::Netmask
      Src: /src/pdns/pdns/pdnsutil.cc:5706,1
    - Dst: size
      Src: /src/pdns/pdns/pdnsutil.cc:5707,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:5708,1
    - Dst: DNSPacket::setRealRemote
      Src: /src/pdns/pdns/pdnsutil.cc:5709,1
    - Dst: std::unique_ptr::lookup
      Src: /src/pdns/pdns/pdnsutil.cc:5712,1
    - Dst: std::unique_ptr::get
      Src: /src/pdns/pdns/pdnsutil.cc:5716,1
    - Dst: formatRecord
      Src: /src/pdns/pdns/pdnsutil.cc:5717,1
    - Dst: Netmask::setBits
      Src: /src/pdns/pdns/pdnsutil.cc:5719,1
    - Dst: Netmask::toString
      Src: /src/pdns/pdns/pdnsutil.cc:5720,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 50
    argCount: 2
    argNames:
    - ' cmds'
    - synopsis
    argTypes:
    - vector<string>
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5735
      start: 5663
    functionDepth: 1
    functionLinenumber: 5663
    functionLinenumberEnd: 5735
    functionName: backendLookup
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 0
    functionsReached:
    - BackendMakers
    - std::unique_ptr::get
    - std::move
    - Netmask::toString
    - Netmask::Netmask
    - std::unique_ptr::lookup
    - size
    - std::unique_ptr::getSOA
    - DNSPacket::setRealRemote
    - Netmask::setBits
    - formatRecord
    - usage
    - ZoneName::chopOff
    - DNSRecordContent::TypeToNumber
    - ZoneName::hasVariant
    - getPrefix
    - at
    linkageType: ''
    returnType: int
    signature: int backendLookup(vector<string>& cmds, const std::string_view synopsis)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/pdnsutil.cc:5739,1
    - Dst: usage
      Src: /src/pdns/pdns/pdnsutil.cc:5740,1
    - Dst: UtilBackend::getCapabilities
      Src: /src/pdns/pdns/pdnsutil.cc:5745,1
    - Dst: UtilBackend::viewListZones
      Src: /src/pdns/pdns/pdnsutil.cc:5751,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:5751,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 2
    argNames:
    - ' cmds'
    - synopsis
    argTypes:
    - vector<string>
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5757
      start: 5737
    functionDepth: 0
    functionLinenumber: 5737
    functionLinenumberEnd: 5757
    functionName: listView
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 0
    functionsReached:
    - size
    - UtilBackend::viewListZones
    - usage
    - UtilBackend::getCapabilities
    - at
    linkageType: ''
    returnType: int
    signature: int listView(vector<string>& cmds, const std::string_view synopsis)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/pdnsutil.cc:5761,1
    - Dst: usage
      Src: /src/pdns/pdns/pdnsutil.cc:5762,1
    - Dst: UtilBackend::getCapabilities
      Src: /src/pdns/pdns/pdnsutil.cc:5767,1
    - Dst: UtilBackend::viewList
      Src: /src/pdns/pdns/pdnsutil.cc:5774,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - ' cmds'
    - synopsis
    argTypes:
    - vector<string>
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5780
      start: 5759
    functionDepth: 0
    functionLinenumber: 5759
    functionLinenumberEnd: 5780
    functionName: listViews
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 0
    functionsReached:
    - empty
    - UtilBackend::getCapabilities
    - usage
    - UtilBackend::viewList
    linkageType: ''
    returnType: int
    signature: int listViews(vector<string>& cmds, const std::string_view synopsis)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/pdnsutil.cc:5784,1
    - Dst: usage
      Src: /src/pdns/pdns/pdnsutil.cc:5785,1
    - Dst: UtilBackend::getCapabilities
      Src: /src/pdns/pdns/pdnsutil.cc:5790,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:5795,1
    - Dst: Check::validateViewName
      Src: /src/pdns/pdns/pdnsutil.cc:5797,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:5801,1
    - Dst: UtilBackend::viewAddZone
      Src: /src/pdns/pdns/pdnsutil.cc:5802,1
    - Dst: UtilBackend::getDomainInfo
      Src: /src/pdns/pdns/pdnsutil.cc:5808,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 23
    argCount: 2
    argNames:
    - ' cmds'
    - synopsis
    argTypes:
    - vector<string>
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5814
      start: 5782
    functionDepth: 1
    functionLinenumber: 5782
    functionLinenumberEnd: 5814
    functionName: viewAddZone
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 1
    functionsReached:
    - UtilBackend::viewAddZone
    - Check::validateViewName
    - UtilBackend::getDomainInfo
    - size
    - usage
    - UtilBackend::getCapabilities
    - at
    linkageType: ''
    returnType: int
    signature: int viewAddZone(vector<string>& cmds, const std::string_view synopsis)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/pdnsutil.cc:5818,1
    - Dst: usage
      Src: /src/pdns/pdns/pdnsutil.cc:5819,1
    - Dst: UtilBackend::getCapabilities
      Src: /src/pdns/pdns/pdnsutil.cc:5824,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:5829,1
    - Dst: Check::validateViewName
      Src: /src/pdns/pdns/pdnsutil.cc:5831,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:5835,1
    - Dst: UtilBackend::viewDelZone
      Src: /src/pdns/pdns/pdnsutil.cc:5836,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 2
    argNames:
    - ' cmds'
    - synopsis
    argTypes:
    - vector<string>
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5841
      start: 5816
    functionDepth: 1
    functionLinenumber: 5816
    functionLinenumberEnd: 5841
    functionName: viewDelZone
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 1
    functionsReached:
    - Check::validateViewName
    - size
    - UtilBackend::viewDelZone
    - usage
    - UtilBackend::getCapabilities
    - at
    linkageType: ''
    returnType: int
    signature: int viewDelZone(vector<string>& cmds, const std::string_view synopsis)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/pdnsutil.cc:5845,1
    - Dst: usage
      Src: /src/pdns/pdns/pdnsutil.cc:5846,1
    - Dst: UtilBackend::getCapabilities
      Src: /src/pdns/pdns/pdnsutil.cc:5851,1
    - Dst: UtilBackend::networkList
      Src: /src/pdns/pdns/pdnsutil.cc:5858,1
    - Dst: toString
      Src: /src/pdns/pdns/pdnsutil.cc:5861,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 2
    argNames:
    - ' cmds'
    - synopsis
    argTypes:
    - vector<string>
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5864
      start: 5843
    functionDepth: 0
    functionLinenumber: 5843
    functionLinenumberEnd: 5864
    functionName: listNetwork
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 0
    functionsReached:
    - toString
    - UtilBackend::networkList
    - usage
    - empty
    - UtilBackend::getCapabilities
    linkageType: ''
    returnType: int
    signature: int listNetwork(vector<string>& cmds, const std::string_view synopsis)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/pdnsutil.cc:5868,1
    - Dst: usage
      Src: /src/pdns/pdns/pdnsutil.cc:5869,1
    - Dst: UtilBackend::getCapabilities
      Src: /src/pdns/pdns/pdnsutil.cc:5874,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:5879,1
    - Dst: size
      Src: /src/pdns/pdns/pdnsutil.cc:5881,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:5882,1
    - Dst: UtilBackend::networkSet
      Src: /src/pdns/pdns/pdnsutil.cc:5884,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 2
    argNames:
    - ' cmds'
    - synopsis
    argTypes:
    - vector<string>
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5889
      start: 5866
    functionDepth: 0
    functionLinenumber: 5866
    functionLinenumberEnd: 5889
    functionName: setNetwork
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 0
    functionsReached:
    - size
    - usage
    - UtilBackend::networkSet
    - empty
    - UtilBackend::getCapabilities
    - at
    linkageType: ''
    returnType: int
    signature: int setNetwork(vector<string>& cmds, const std::string_view synopsis)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: second::help::empty
      Src: /src/pdns/pdns/pdnsutil.cc:5899,1
    - Dst: std::string_view::empty
      Src: /src/pdns/pdns/pdnsutil.cc:5902,1
    - Dst: second::synopsis::empty
      Src: /src/pdns/pdns/pdnsutil.cc:5906,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 2
    argNames:
    - ' dispatcher'
    - prefix
    argTypes:
    - groupCommandDispatcher
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5913
      start: 5892
    functionDepth: 0
    functionLinenumber: 5892
    functionLinenumberEnd: 5913
    functionName: displayCommandGroup
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 0
    functionsReached:
    - second::help::empty
    - std::string_view::empty
    - second::synopsis::empty
    linkageType: ''
    returnType: void
    signature: void displayCommandGroup(const groupCommandDispatcher& dispatcher,
      std::string_view prefix)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::transform
      Src: /src/pdns/pdns/pdnsutil.cc:5919,1
    - Dst: std::string::begin
      Src: /src/pdns/pdns/pdnsutil.cc:5919,1
    - Dst: std::string::end
      Src: /src/pdns/pdns/pdnsutil.cc:5919,1
    - Dst: std::string::begin
      Src: /src/pdns/pdns/pdnsutil.cc:5919,1
    - Dst: std::tolower
      Src: /src/pdns/pdns/pdnsutil.cc:5920,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - ' input'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5922
      start: 5916
    functionDepth: 0
    functionLinenumber: 5916
    functionLinenumberEnd: 5922
    functionName: lowercase
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 0
    functionsReached:
    - std::string::begin
    - std::transform
    - std::string::end
    - std::tolower
    linkageType: ''
    returnType: std::string
    signature: std::string lowercase(const std::string& input)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:5931,1
    - Dst: lowercase
      Src: /src/pdns/pdns/pdnsutil.cc:5933,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:5933,1
    - Dst: find
      Src: /src/pdns/pdns/pdnsutil.cc:5936,1
    - Dst: end
      Src: /src/pdns/pdns/pdnsutil.cc:5936,1
    - Dst: size
      Src: /src/pdns/pdns/pdnsutil.cc:5937,1
    - Dst: lowercase
      Src: /src/pdns/pdns/pdnsutil.cc:5937,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:5937,1
    - Dst: displayCommandGroup
      Src: /src/pdns/pdns/pdnsutil.cc:5942,1
    - Dst: clear
      Src: /src/pdns/pdns/pdnsutil.cc:5944,1
    - Dst: append
      Src: /src/pdns/pdns/pdnsutil.cc:5949,1
    - Dst: append
      Src: /src/pdns/pdns/pdnsutil.cc:5950,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:5950,1
    - Dst: lowercase
      Src: /src/pdns/pdns/pdnsutil.cc:5952,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:5952,1
    - Dst: std::vector::insert
      Src: /src/pdns/pdns/pdnsutil.cc:5953,1
    - Dst: std::vector::begin
      Src: /src/pdns/pdns/pdnsutil.cc:5953,1
    - Dst: second::second::begin
      Src: /src/pdns/pdns/pdnsutil.cc:5953,1
    - Dst: second::second::end
      Src: /src/pdns/pdns/pdnsutil.cc:5953,1
    - Dst: std::vector::emplace_back
      Src: /src/pdns/pdns/pdnsutil.cc:5957,1
    - Dst: second::find
      Src: /src/pdns/pdns/pdnsutil.cc:5961,1
    - Dst: second::end
      Src: /src/pdns/pdns/pdnsutil.cc:5961,1
    - Dst: erase
      Src: /src/pdns/pdns/pdnsutil.cc:5962,1
    - Dst: begin
      Src: /src/pdns/pdns/pdnsutil.cc:5962,1
    - Dst: begin
      Src: /src/pdns/pdns/pdnsutil.cc:5962,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 27
    argCount: 3
    argNames:
    - ' cmds'
    - ' writtencommand'
    - ' command'
    argTypes:
    - std::vector<std::string>
    - std::string
    - commandEntry
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5968
      start: 5927
    functionDepth: 1
    functionLinenumber: 5927
    functionLinenumberEnd: 5968
    functionName: parseCommandExact
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 0
    functionsReached:
    - std::vector::insert
    - std::vector::begin
    - second::find
    - append
    - end
    - std::vector::emplace_back
    - size
    - lowercase
    - second::end
    - begin
    - clear
    - erase
    - second::second::begin
    - displayCommandGroup
    - at
    - find
    - second::second::end
    linkageType: ''
    returnType: bool
    signature: bool parseCommandExact(std::vector<std::string>& cmds, std::string&
      writtencommand, commandEntry& command)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: parseCommandExact
      Src: /src/pdns/pdns/pdnsutil.cc:5973,1
    - Dst: std::unordered_map::find
      Src: /src/pdns/pdns/pdnsutil.cc:6051,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:6051,1
    - Dst: std::unordered_map::end
      Src: /src/pdns/pdns/pdnsutil.cc:6051,1
    - Dst: second::find
      Src: /src/pdns/pdns/pdnsutil.cc:6053,1
    - Dst: second::end
      Src: /src/pdns/pdns/pdnsutil.cc:6053,1
    - Dst: at
      Src: /src/pdns/pdns/pdnsutil.cc:6054,1
    - Dst: erase
      Src: /src/pdns/pdns/pdnsutil.cc:6055,1
    - Dst: begin
      Src: /src/pdns/pdns/pdnsutil.cc:6055,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 3
    argNames:
    - ' cmds'
    - ' writtencommand'
    - ' command'
    argTypes:
    - std::vector<std::string>
    - std::string
    - commandEntry
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6061
      start: 5970
    functionDepth: 2
    functionLinenumber: 5970
    functionLinenumberEnd: 6061
    functionName: parseCommand
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 0
    functionsReached:
    - parseCommandExact
    - std::unordered_map::find
    - second::end
    - begin
    - erase
    - second::find
    - at
    - std::unordered_map::end
    linkageType: ''
    returnType: bool
    signature: bool parseCommand(std::vector<std::string>& cmds, std::string& writtencommand,
      commandEntry& command)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::make_pair
      Src: /src/pdns/pdns/pdnsutil.cc:6070,1
    - Dst: std::make_pair
      Src: /src/pdns/pdns/pdnsutil.cc:6071,1
    - Dst: std::make_pair
      Src: /src/pdns/pdns/pdnsutil.cc:6072,1
    - Dst: std::make_pair
      Src: /src/pdns/pdns/pdnsutil.cc:6073,1
    - Dst: std::make_pair
      Src: /src/pdns/pdns/pdnsutil.cc:6074,1
    - Dst: std::make_pair
      Src: /src/pdns/pdns/pdnsutil.cc:6075,1
    - Dst: std::make_pair
      Src: /src/pdns/pdns/pdnsutil.cc:6076,1
    - Dst: std::make_pair
      Src: /src/pdns/pdns/pdnsutil.cc:6077,1
    - Dst: std::make_pair
      Src: /src/pdns/pdns/pdnsutil.cc:6078,1
    - Dst: std::make_pair
      Src: /src/pdns/pdns/pdnsutil.cc:6079,1
    - Dst: std::make_pair
      Src: /src/pdns/pdns/pdnsutil.cc:6080,1
    - Dst: std::make_pair
      Src: /src/pdns/pdns/pdnsutil.cc:6081,1
    - Dst: std::make_pair
      Src: /src/pdns/pdns/pdnsutil.cc:6082,1
    - Dst: std::make_pair
      Src: /src/pdns/pdns/pdnsutil.cc:6083,1
    - Dst: std::make_pair
      Src: /src/pdns/pdns/pdnsutil.cc:6084,1
    - Dst: std::make_pair
      Src: /src/pdns/pdns/pdnsutil.cc:6085,1
    - Dst: std::make_pair
      Src: /src/pdns/pdns/pdnsutil.cc:6086,1
    - Dst: std::make_pair
      Src: /src/pdns/pdns/pdnsutil.cc:6087,1
    - Dst: std::make_pair
      Src: /src/pdns/pdns/pdnsutil.cc:6088,1
    - Dst: std::make_pair
      Src: /src/pdns/pdns/pdnsutil.cc:6089,1
    - Dst: std::make_pair
      Src: /src/pdns/pdns/pdnsutil.cc:6090,1
    - Dst: std::make_pair
      Src: /src/pdns/pdns/pdnsutil.cc:6091,1
    - Dst: std::make_pair
      Src: /src/pdns/pdns/pdnsutil.cc:6092,1
    - Dst: std::make_pair
      Src: /src/pdns/pdns/pdnsutil.cc:6093,1
    - Dst: std::make_pair
      Src: /src/pdns/pdns/pdnsutil.cc:6094,1
    - Dst: std::make_pair
      Src: /src/pdns/pdns/pdnsutil.cc:6095,1
    - Dst: std::make_pair
      Src: /src/pdns/pdns/pdnsutil.cc:6096,1
    - Dst: std::make_pair
      Src: /src/pdns/pdns/pdnsutil.cc:6097,1
    - Dst: std::make_pair
      Src: /src/pdns/pdns/pdnsutil.cc:6098,1
    - Dst: std::make_pair
      Src: /src/pdns/pdns/pdnsutil.cc:6099,1
    - Dst: std::make_pair
      Src: /src/pdns/pdns/pdnsutil.cc:6100,1
    - Dst: std::make_pair
      Src: /src/pdns/pdns/pdnsutil.cc:6101,1
    - Dst: std::make_pair
      Src: /src/pdns/pdns/pdnsutil.cc:6102,1
    - Dst: std::make_pair
      Src: /src/pdns/pdns/pdnsutil.cc:6104,1
    - Dst: std::make_pair
      Src: /src/pdns/pdns/pdnsutil.cc:6106,1
    - Dst: std::make_pair
      Src: /src/pdns/pdns/pdnsutil.cc:6107,1
    - Dst: std::make_pair
      Src: /src/pdns/pdns/pdnsutil.cc:6108,1
    - Dst: std::make_pair
      Src: /src/pdns/pdns/pdnsutil.cc:6109,1
    - Dst: std::make_pair
      Src: /src/pdns/pdns/pdnsutil.cc:6110,1
    - Dst: std::make_pair
      Src: /src/pdns/pdns/pdnsutil.cc:6111,1
    - Dst: std::make_pair
      Src: /src/pdns/pdns/pdnsutil.cc:6112,1
    - Dst: std::make_pair
      Src: /src/pdns/pdns/pdnsutil.cc:6113,1
    - Dst: std::make_pair
      Src: /src/pdns/pdns/pdnsutil.cc:6114,1
    - Dst: std::make_pair
      Src: /src/pdns/pdns/pdnsutil.cc:6115,1
    - Dst: std::make_pair
      Src: /src/pdns/pdns/pdnsutil.cc:6116,1
    - Dst: std::make_pair
      Src: /src/pdns/pdns/pdnsutil.cc:6117,1
    - Dst: std::make_pair
      Src: /src/pdns/pdns/pdnsutil.cc:6118,1
    - Dst: std::make_pair
      Src: /src/pdns/pdns/pdnsutil.cc:6119,1
    - Dst: std::make_pair
      Src: /src/pdns/pdns/pdnsutil.cc:6120,1
    - Dst: std::make_pair
      Src: /src/pdns/pdns/pdnsutil.cc:6121,1
    - Dst: std::make_pair
      Src: /src/pdns/pdns/pdnsutil.cc:6122,1
    - Dst: std::make_pair
      Src: /src/pdns/pdns/pdnsutil.cc:6123,1
    - Dst: std::make_pair
      Src: /src/pdns/pdns/pdnsutil.cc:6124,1
    - Dst: std::make_pair
      Src: /src/pdns/pdns/pdnsutil.cc:6125,1
    - Dst: std::make_pair
      Src: /src/pdns/pdns/pdnsutil.cc:6126,1
    - Dst: std::make_pair
      Src: /src/pdns/pdns/pdnsutil.cc:6127,1
    - Dst: std::make_pair
      Src: /src/pdns/pdns/pdnsutil.cc:6128,1
    - Dst: std::make_pair
      Src: /src/pdns/pdns/pdnsutil.cc:6129,1
    - Dst: std::make_pair
      Src: /src/pdns/pdns/pdnsutil.cc:6130,1
    - Dst: std::make_pair
      Src: /src/pdns/pdns/pdnsutil.cc:6131,1
    - Dst: std::make_pair
      Src: /src/pdns/pdns/pdnsutil.cc:6132,1
    - Dst: std::make_pair
      Src: /src/pdns/pdns/pdnsutil.cc:6133,1
    - Dst: std::make_pair
      Src: /src/pdns/pdns/pdnsutil.cc:6134,1
    - Dst: std::make_pair
      Src: /src/pdns/pdns/pdnsutil.cc:6135,1
    - Dst: std::make_pair
      Src: /src/pdns/pdns/pdnsutil.cc:6136,1
    - Dst: std::make_pair
      Src: /src/pdns/pdns/pdnsutil.cc:6137,1
    - Dst: std::make_pair
      Src: /src/pdns/pdns/pdnsutil.cc:6138,1
    - Dst: std::make_pair
      Src: /src/pdns/pdns/pdnsutil.cc:6139,1
    - Dst: std::make_pair
      Src: /src/pdns/pdns/pdnsutil.cc:6140,1
    - Dst: std::make_pair
      Src: /src/pdns/pdns/pdnsutil.cc:6141,1
    - Dst: std::make_pair
      Src: /src/pdns/pdns/pdnsutil.cc:6142,1
    - Dst: std::make_pair
      Src: /src/pdns/pdns/pdnsutil.cc:6143,1
    - Dst: std::make_pair
      Src: /src/pdns/pdns/pdnsutil.cc:6144,1
    - Dst: std::make_pair
      Src: /src/pdns/pdns/pdnsutil.cc:6145,1
    - Dst: std::make_pair
      Src: /src/pdns/pdns/pdnsutil.cc:6146,1
    - Dst: std::make_pair
      Src: /src/pdns/pdns/pdnsutil.cc:6147,1
    - Dst: std::make_pair
      Src: /src/pdns/pdns/pdnsutil.cc:6148,1
    - Dst: std::make_pair
      Src: /src/pdns/pdns/pdnsutil.cc:6149,1
    - Dst: std::make_pair
      Src: /src/pdns/pdns/pdnsutil.cc:6150,1
    - Dst: std::make_pair
      Src: /src/pdns/pdns/pdnsutil.cc:6151,1
    - Dst: std::make_pair
      Src: /src/pdns/pdns/pdnsutil.cc:6152,1
    - Dst: std::make_pair
      Src: /src/pdns/pdns/pdnsutil.cc:6153,1
    - Dst: std::make_pair
      Src: /src/pdns/pdns/pdnsutil.cc:6154,1
    - Dst: std::make_pair
      Src: /src/pdns/pdns/pdnsutil.cc:6155,1
    - Dst: std::make_pair
      Src: /src/pdns/pdns/pdnsutil.cc:6156,1
    - Dst: std::make_pair
      Src: /src/pdns/pdns/pdnsutil.cc:6157,1
    - Dst: std::make_pair
      Src: /src/pdns/pdns/pdnsutil.cc:6159,1
    - Dst: std::make_pair
      Src: /src/pdns/pdns/pdnsutil.cc:6160,1
    - Dst: parseCommand
      Src: /src/pdns/pdns/pdnsutil.cc:6166,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6170
      start: 6069
    functionDepth: 3
    functionLinenumber: 6069
    functionLinenumberEnd: 6170
    functionName: tests
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 0
    functionsReached:
    - parseCommand
    - std::make_pair
    linkageType: ''
    returnType: std::array
    signature: std::array tests
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: po::options_description::add_options
      Src: /src/pdns/pdns/pdnsutil.cc:6177,1
    - Dst: po::value<string>
      Src: /src/pdns/pdns/pdnsutil.cc:6184,1
    - Dst: po::value<string>
      Src: /src/pdns/pdns/pdnsutil.cc:6185,1
    - Dst: po::value<vector<string> >
      Src: /src/pdns/pdns/pdnsutil.cc:6187,1
    - Dst: po::positional_options_description::add
      Src: /src/pdns/pdns/pdnsutil.cc:6190,1
    - Dst: pdns::stat_t_trait::store
      Src: /src/pdns/pdns/pdnsutil.cc:6191,1
    - Dst: po::command_line_parser
      Src: /src/pdns/pdns/pdnsutil.cc:6191,1
    - Dst: pdns::channel::Notifier::notify
      Src: /src/pdns/pdns/pdnsutil.cc:6192,1
    - Dst: checkCommandSyntax
      Src: /src/pdns/pdns/pdnsutil.cc:6195,1
    - Dst: count
      Src: /src/pdns/pdns/pdnsutil.cc:6200,1
    - Dst: as
      Src: /src/pdns/pdns/pdnsutil.cc:6201,1
    - Dst: count
      Src: /src/pdns/pdns/pdnsutil.cc:6204,1
    - Dst: count
      Src: /src/pdns/pdns/pdnsutil.cc:6205,1
    - Dst: count
      Src: /src/pdns/pdns/pdnsutil.cc:6206,1
    - Dst: count
      Src: /src/pdns/pdns/pdnsutil.cc:6207,1
    - Dst: count
      Src: /src/pdns/pdns/pdnsutil.cc:6209,1
    - Dst: vector::empty
      Src: /src/pdns/pdns/pdnsutil.cc:6214,1
    - Dst: count
      Src: /src/pdns/pdns/pdnsutil.cc:6214,1
    - Dst: lowercase
      Src: /src/pdns/pdns/pdnsutil.cc:6214,1
    - Dst: vector::at
      Src: /src/pdns/pdns/pdnsutil.cc:6214,1
    - Dst: displayCommandGroup
      Src: /src/pdns/pdns/pdnsutil.cc:6222,1
    - Dst: displayCommandGroup
      Src: /src/pdns/pdns/pdnsutil.cc:6226,1
    - Dst: loadMainConfig
      Src: /src/pdns/pdns/pdnsutil.cc:6232,1
    - Dst: as
      Src: /src/pdns/pdns/pdnsutil.cc:6232,1
    - Dst: parseCommand
      Src: /src/pdns/pdns/pdnsutil.cc:6235,1
    - Dst: reportAllTypes
      Src: /src/pdns/pdns/pdnsutil.cc:6237,1
    - Dst: commandEntry::handler
      Src: /src/pdns/pdns/pdnsutil.cc:6239,1
    - Dst: std::string::append
      Src: /src/pdns/pdns/pdnsutil.cc:6239,1
    - Dst: std::string::empty
      Src: /src/pdns/pdns/pdnsutil.cc:6242,1
    - Dst: what
      Src: /src/pdns/pdns/pdnsutil.cc:6252,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 51
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6258
      start: 6173
    functionDepth: 3
    functionLinenumber: 6173
    functionLinenumberEnd: 6258
    functionName: main
    functionSourceFile: /src/pdns/pdns/pdnsutil.cc
    functionUses: 15
    functionsReached:
    - po::value<vector<string> >
    - parseCommand
    - po::positional_options_description::add
    - vector::at
    - std::string::append
    - loadMainConfig
    - reportAllTypes
    - pdns::channel::Notifier::notify
    - std::string::empty
    - displayCommandGroup
    - commandEntry::handler
    - vector::empty
    - po::options_description::add_options
    - count
    - checkCommandSyntax
    - what
    - pdns::stat_t_trait::store
    - as
    - lowercase
    - po::command_line_parser
    - po::value<string>
    linkageType: ''
    returnType: int
    signature: int main(int argc, char** argv)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: getCode
      Src: /src/pdns/pdns/dnsrecords.cc:34,1
    - Dst: size
      Src: /src/pdns/pdns/dnsrecords.cc:37,1
    - Dst: rbegin
      Src: /src/pdns/pdns/dnsrecords.cc:37,1
    - Dst: size
      Src: /src/pdns/pdns/dnsrecords.cc:47,1
    - Dst: rbegin
      Src: /src/pdns/pdns/dnsrecords.cc:47,1
    - Dst: boost::erase_tail
      Src: /src/pdns/pdns/dnsrecords.cc:48,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 1
    argNames:
    - cont
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 32
    functionDepth: 0
    functionLinenumber: 32
    functionLinenumberEnd: 50
    functionName: DNSResourceRecord::setContent
    functionSourceFile: /src/pdns/pdns/dnsrecords.cc
    functionUses: 1
    functionsReached:
    - rbegin
    - getCode
    - boost::erase_tail
    - size
    linkageType: ''
    returnType: void
    signature: void DNSResourceRecord::setContent(const string &cont)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: getCode
      Src: /src/pdns/pdns/dnsrecords.cc:57,1
    - Dst: stringtok
      Src: /src/pdns/pdns/dnsrecords.cc:60,1
    - Dst: vector::empty
      Src: /src/pdns/pdns/dnsrecords.cc:61,1
    - Dst: vector::rbegin
      Src: /src/pdns/pdns/dnsrecords.cc:63,1
    - Dst: string::rbegin
      Src: /src/pdns/pdns/dnsrecords.cc:67,1
    - Dst: rbegin
      Src: /src/pdns/pdns/dnsrecords.cc:78,1
    - Dst: ostringstream::str
      Src: /src/pdns/pdns/dnsrecords.cc:85,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 28
    argCount: 1
    argNames:
    - noDot
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 52
    functionDepth: 0
    functionLinenumber: 52
    functionLinenumberEnd: 86
    functionName: DNSResourceRecord::getZoneRepresentation
    functionSourceFile: /src/pdns/pdns/dnsrecords.cc
    functionUses: 0
    functionsReached:
    - stringtok
    - rbegin
    - vector::empty
    - string::rbegin
    - ostringstream::str
    - vector::rbegin
    - getCode
    linkageType: ''
    returnType: string
    signature: string DNSResourceRecord::getZoneRepresentation(bool noDot) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: toLower
      Src: /src/pdns/pdns/dnsrecords.cc:90,1
    - Dst: toLower
      Src: /src/pdns/pdns/dnsrecords.cc:91,1
    - Dst: std::tie
      Src: /src/pdns/pdns/dnsrecords.cc:94,1
    - Dst: std::tie
      Src: /src/pdns/pdns/dnsrecords.cc:95,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - DNSResourceRecord
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 88
    functionDepth: 0
    functionLinenumber: 88
    functionLinenumberEnd: 96
    functionName: DNSResourceRecord::operator==(const DNSResourceRecord& rhs) const
    functionSourceFile: /src/pdns/pdns/dnsrecords.cc
    functionUses: 0
    functionsReached:
    - toLower
    - std::tie
    linkageType: ''
    returnType: bool
    signature: bool DNSResourceRecord::operator==(const DNSResourceRecord& rhs) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ip
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 102
    functionDepth: 0
    functionLinenumber: 102
    functionLinenumberEnd: 105
    functionName: ARecordContent::ARecordContent
    functionSourceFile: /src/pdns/pdns/dnsrecords.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ARecordContent::ARecordContent(uint32_t ip)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' ca'
    argTypes:
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 107
    functionDepth: 0
    functionLinenumber: 107
    functionLinenumberEnd: 110
    functionName: ARecordContent::ARecordContent
    functionSourceFile: /src/pdns/pdns/dnsrecords.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ARecordContent::ARecordContent(const ComboAddress& ca)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assign
      Src: /src/pdns/pdns/dnsrecords.cc:114,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' ca'
    argTypes:
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 115
      start: 112
    functionDepth: 1
    functionLinenumber: 112
    functionLinenumberEnd: 115
    functionName: AAAARecordContent::AAAARecordContent
    functionSourceFile: /src/pdns/pdns/dnsrecords.cc
    functionUses: 0
    functionsReached:
    - assign
    linkageType: ''
    returnType: void
    signature: void AAAARecordContent::AAAARecordContent(const ComboAddress& ca)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: htons
      Src: /src/pdns/pdns/dnsrecords.cc:123,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsrecords.cc:124,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - port
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 119
    functionDepth: 0
    functionLinenumber: 119
    functionLinenumberEnd: 126
    functionName: ARecordContent::getCA
    functionSourceFile: /src/pdns/pdns/dnsrecords.cc
    functionUses: 0
    functionsReached:
    - memcpy
    - htons
    linkageType: ''
    returnType: ComboAddress
    signature: ComboAddress ARecordContent::getCA(int port) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ComboAddress::reset
      Src: /src/pdns/pdns/dnsrecords.cc:131,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsrecords.cc:134,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsrecords.cc:135,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsrecords.cc:135,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - port
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 137
      start: 128
    functionDepth: 0
    functionLinenumber: 128
    functionLinenumberEnd: 137
    functionName: AAAARecordContent::getCA
    functionSourceFile: /src/pdns/pdns/dnsrecords.cc
    functionUses: 0
    functionsReached:
    - c_str
    - memcpy
    - ComboAddress::reset
    - htons
    linkageType: ''
    returnType: ComboAddress
    signature: ComboAddress AAAARecordContent::getCA(int port) const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: MOADNSException
      Src: /src/pdns/pdns/dnsrecords.cc:143,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsrecords.cc:143,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 3
    argCount: 1
    argNames:
    - ' dr'
    argTypes:
    - DNSRecord
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 144
      start: 140
    functionDepth: 0
    functionLinenumber: 140
    functionLinenumberEnd: 144
    functionName: ARecordContent::doRecordCheck
    functionSourceFile: /src/pdns/pdns/dnsrecords.cc
    functionUses: 0
    functionsReached:
    - MOADNSException
    - std::to_string
    linkageType: ''
    returnType: void
    signature: void ARecordContent::doRecordCheck(const DNSRecord& dr)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: stringtok
      Src: /src/pdns/pdns/dnsrecords.cc:199,1
    - Dst: string::append
      Src: /src/pdns/pdns/dnsrecords.cc:204,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 215
      start: 195
    functionDepth: 0
    functionLinenumber: 195
    functionLinenumberEnd: 215
    functionName: LUARecordContent::getCode
    functionSourceFile: /src/pdns/pdns/dnsrecords.cc
    functionUses: 0
    functionsReached:
    - string::append
    - stringtok
    linkageType: ''
    returnType: string
    signature: string LUARecordContent::getCode() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsrecords.cc:222,1
    - Dst: at
      Src: /src/pdns/pdns/dnsrecords.cc:223,1
    - Dst: at
      Src: /src/pdns/pdns/dnsrecords.cc:223,1
    - Dst: at
      Src: /src/pdns/pdns/dnsrecords.cc:224,1
    - Dst: at
      Src: /src/pdns/pdns/dnsrecords.cc:224,1
    - Dst: size
      Src: /src/pdns/pdns/dnsrecords.cc:227,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsrecords.cc:230,1
    - Dst: emplace_back
      Src: /src/pdns/pdns/dnsrecords.cc:232,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsrecords.cc:232,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - ' options'
    argTypes:
    - vector<pair<uint16_t, string> >
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 234
      start: 218
    functionDepth: 0
    functionLinenumber: 218
    functionLinenumberEnd: 234
    functionName: OPTRecordContent::getData
    functionSourceFile: /src/pdns/pdns/dnsrecords.cc
    functionUses: 0
    functionsReached:
    - std::move
    - size
    - emplace_back
    - c_str
    - at
    linkageType: ''
    returnType: void
    signature: void OPTRecordContent::getData(vector<pair<uint16_t, string> >& options)
      const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsrecords.cc:252,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - preference
    - mxname
    argTypes:
    - uint16_t
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 254
      start: 252
    functionDepth: 0
    functionLinenumber: 252
    functionLinenumberEnd: 254
    functionName: MXRecordContent::MXRecordContent
    functionSourceFile: /src/pdns/pdns/dnsrecords.cc
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void MXRecordContent::MXRecordContent(uint16_t preference, DNSName  mxname)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsrecords.cc:321,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 4
    argNames:
    - preference
    - weight
    - port
    - target
    argTypes:
    - uint16_t
    - uint16_t
    - uint16_t
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 322
      start: 320
    functionDepth: 0
    functionLinenumber: 320
    functionLinenumberEnd: 322
    functionName: SRVRecordContent::SRVRecordContent
    functionSourceFile: /src/pdns/pdns/dnsrecords.cc
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void SRVRecordContent::SRVRecordContent(uint16_t preference, uint16_t
      weight, uint16_t port, DNSName  target)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsrecords.cc:332,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsrecords.cc:332,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 3
    argNames:
    - mname
    - rname
    - ' st'
    argTypes:
    - DNSName
    - DNSName
    - struct soatimes
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 334
      start: 331
    functionDepth: 0
    functionLinenumber: 331
    functionLinenumberEnd: 334
    functionName: SOARecordContent::SOARecordContent
    functionSourceFile: /src/pdns/pdns/dnsrecords.cc
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void SOARecordContent::SOARecordContent(DNSName  mname, DNSName  rname,
      const struct soatimes& st)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 412
      start: 412
    functionDepth: 0
    functionLinenumber: 412
    functionLinenumberEnd: 412
    functionName: DSRecordContent::DSRecordContent
    functionSourceFile: /src/pdns/pdns/dnsrecords.cc
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void DSRecordContent::DSRecordContent()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 420
      start: 420
    functionDepth: 0
    functionLinenumber: 420
    functionLinenumberEnd: 420
    functionName: CDSRecordContent::CDSRecordContent
    functionSourceFile: /src/pdns/pdns/dnsrecords.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void CDSRecordContent::CDSRecordContent()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 428
      start: 428
    functionDepth: 0
    functionLinenumber: 428
    functionLinenumberEnd: 428
    functionName: DLVRecordContent::DLVRecordContent
    functionSourceFile: /src/pdns/pdns/dnsrecords.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void DLVRecordContent::DLVRecordContent()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 455
      start: 455
    functionDepth: 0
    functionLinenumber: 455
    functionLinenumberEnd: 455
    functionName: RRSIGRecordContent::RRSIGRecordContent
    functionSourceFile: /src/pdns/pdns/dnsrecords.cc
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void RRSIGRecordContent::RRSIGRecordContent()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 463
      start: 463
    functionDepth: 0
    functionLinenumber: 463
    functionLinenumberEnd: 463
    functionName: DNSKEYRecordContent::DNSKEYRecordContent
    functionSourceFile: /src/pdns/pdns/dnsrecords.cc
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void DNSKEYRecordContent::DNSKEYRecordContent()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 471
      start: 471
    functionDepth: 0
    functionLinenumber: 471
    functionLinenumberEnd: 471
    functionName: CDNSKEYRecordContent::CDNSKEYRecordContent
    functionSourceFile: /src/pdns/pdns/dnsrecords.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void CDNSKEYRecordContent::CDNSKEYRecordContent()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 479
      start: 479
    functionDepth: 0
    functionLinenumber: 479
    functionLinenumberEnd: 479
    functionName: RKEYRecordContent::RKEYRecordContent
    functionSourceFile: /src/pdns/pdns/dnsrecords.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void RKEYRecordContent::RKEYRecordContent()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: regist
      Src: /src/pdns/pdns/dnsrecords.cc:501,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 502
      start: 499
    functionDepth: 0
    functionLinenumber: 499
    functionLinenumberEnd: 502
    functionName: EUI48RecordContent::report
    functionSourceFile: /src/pdns/pdns/dnsrecords.cc
    functionUses: 0
    functionsReached:
    - regist
    linkageType: ''
    returnType: void
    signature: void EUI48RecordContent::report(const ReportIsOnlyCallableByReportAllTypes&
      /* unused */)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: MOADNSException
      Src: /src/pdns/pdns/dnsrecords.cc:506,1
    - Dst: std::make_shared<EUI48RecordContent>
      Src: /src/pdns/pdns/dnsrecords.cc:508,1
    - Dst: copyRecord
      Src: /src/pdns/pdns/dnsrecords.cc:509,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - dr
    - ' pr'
    argTypes:
    - DNSRecord
    - PacketReader
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 511
      start: 503
    functionDepth: 0
    functionLinenumber: 503
    functionLinenumberEnd: 511
    functionName: EUI48RecordContent::make
    functionSourceFile: /src/pdns/pdns/dnsrecords.cc
    functionUses: 0
    functionsReached:
    - std::make_shared<EUI48RecordContent>
    - MOADNSException
    - copyRecord
    linkageType: ''
    returnType: std::shared_ptr<DNSRecordContent>
    signature: std::shared_ptr<DNSRecordContent> EUI48RecordContent::make(const DNSRecord
      &dr, PacketReader& pr)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<EUI48RecordContent>
      Src: /src/pdns/pdns/dnsrecords.cc:515,1
    - Dst: sscanf
      Src: /src/pdns/pdns/dnsrecords.cc:517,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsrecords.cc:517,1
    - Dst: MOADNSException
      Src: /src/pdns/pdns/dnsrecords.cc:520,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - ' zone'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 523
      start: 512
    functionDepth: 0
    functionLinenumber: 512
    functionLinenumberEnd: 523
    functionName: EUI48RecordContent::make
    functionSourceFile: /src/pdns/pdns/dnsrecords.cc
    functionUses: 0
    functionsReached:
    - std::make_shared<EUI48RecordContent>
    - c_str
    - MOADNSException
    - sscanf
    linkageType: ''
    returnType: std::shared_ptr<DNSRecordContent>
    signature: std::shared_ptr<DNSRecordContent> EUI48RecordContent::make(const string&
      zone)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: xfrBlob
      Src: /src/pdns/pdns/dnsrecords.cc:527,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' pw'
    argTypes:
    - DNSPacketWriter
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 528
      start: 524
    functionDepth: 0
    functionLinenumber: 524
    functionLinenumberEnd: 528
    functionName: EUI48RecordContent::toPacket
    functionSourceFile: /src/pdns/pdns/dnsrecords.cc
    functionUses: 0
    functionsReached:
    - xfrBlob
    linkageType: ''
    returnType: void
    signature: void EUI48RecordContent::toPacket(DNSPacketWriter& pw) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/pdns/pdns/dnsrecords.cc:533,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 537
      start: 530
    functionDepth: 0
    functionLinenumber: 530
    functionLinenumberEnd: 537
    functionName: EUI48RecordContent::getZoneRepresentation
    functionSourceFile: /src/pdns/pdns/dnsrecords.cc
    functionUses: 0
    functionsReached:
    - snprintf
    linkageType: ''
    returnType: string
    signature: string EUI48RecordContent::getZoneRepresentation(bool /* noDot */)
      const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: regist
      Src: /src/pdns/pdns/dnsrecords.cc:545,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 546
      start: 543
    functionDepth: 0
    functionLinenumber: 543
    functionLinenumberEnd: 546
    functionName: EUI64RecordContent::report
    functionSourceFile: /src/pdns/pdns/dnsrecords.cc
    functionUses: 0
    functionsReached:
    - regist
    linkageType: ''
    returnType: void
    signature: void EUI64RecordContent::report(const ReportIsOnlyCallableByReportAllTypes&
      /* unused */)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: MOADNSException
      Src: /src/pdns/pdns/dnsrecords.cc:550,1
    - Dst: std::make_shared<EUI64RecordContent>
      Src: /src/pdns/pdns/dnsrecords.cc:552,1
    - Dst: copyRecord
      Src: /src/pdns/pdns/dnsrecords.cc:553,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - dr
    - ' pr'
    argTypes:
    - DNSRecord
    - PacketReader
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 555
      start: 547
    functionDepth: 0
    functionLinenumber: 547
    functionLinenumberEnd: 555
    functionName: EUI64RecordContent::make
    functionSourceFile: /src/pdns/pdns/dnsrecords.cc
    functionUses: 0
    functionsReached:
    - std::make_shared<EUI64RecordContent>
    - MOADNSException
    - copyRecord
    linkageType: ''
    returnType: std::shared_ptr<DNSRecordContent>
    signature: std::shared_ptr<DNSRecordContent> EUI64RecordContent::make(const DNSRecord
      &dr, PacketReader& pr)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<EUI64RecordContent>
      Src: /src/pdns/pdns/dnsrecords.cc:559,1
    - Dst: sscanf
      Src: /src/pdns/pdns/dnsrecords.cc:561,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsrecords.cc:561,1
    - Dst: MOADNSException
      Src: /src/pdns/pdns/dnsrecords.cc:565,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - ' zone'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 568
      start: 556
    functionDepth: 0
    functionLinenumber: 556
    functionLinenumberEnd: 568
    functionName: EUI64RecordContent::make
    functionSourceFile: /src/pdns/pdns/dnsrecords.cc
    functionUses: 0
    functionsReached:
    - c_str
    - std::make_shared<EUI64RecordContent>
    - MOADNSException
    - sscanf
    linkageType: ''
    returnType: std::shared_ptr<DNSRecordContent>
    signature: std::shared_ptr<DNSRecordContent> EUI64RecordContent::make(const string&
      zone)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: xfrBlob
      Src: /src/pdns/pdns/dnsrecords.cc:572,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' pw'
    argTypes:
    - DNSPacketWriter
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 573
      start: 569
    functionDepth: 0
    functionLinenumber: 569
    functionLinenumberEnd: 573
    functionName: EUI64RecordContent::toPacket
    functionSourceFile: /src/pdns/pdns/dnsrecords.cc
    functionUses: 0
    functionsReached:
    - xfrBlob
    linkageType: ''
    returnType: void
    signature: void EUI64RecordContent::toPacket(DNSPacketWriter& pw) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/pdns/pdns/dnsrecords.cc:578,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 583
      start: 575
    functionDepth: 0
    functionLinenumber: 575
    functionLinenumberEnd: 583
    functionName: EUI64RecordContent::getZoneRepresentation
    functionSourceFile: /src/pdns/pdns/dnsrecords.cc
    functionUses: 0
    functionsReached:
    - snprintf
    linkageType: ''
    returnType: string
    signature: string EUI64RecordContent::getZoneRepresentation(bool /* noDot */)
      const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: regist
      Src: /src/pdns/pdns/dnsrecords.cc:591,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 592
      start: 589
    functionDepth: 0
    functionLinenumber: 589
    functionLinenumberEnd: 592
    functionName: APLRecordContent::report
    functionSourceFile: /src/pdns/pdns/dnsrecords.cc
    functionUses: 0
    functionsReached:
    - regist
    linkageType: ''
    returnType: void
    signature: void APLRecordContent::report(const ReportIsOnlyCallableByReportAllTypes&
      /* unused */)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<APLRecordContent>
      Src: /src/pdns/pdns/dnsrecords.cc:600,1
    - Dst: xfr16BitInt
      Src: /src/pdns/pdns/dnsrecords.cc:603,1
    - Dst: xfr8BitInt
      Src: /src/pdns/pdns/dnsrecords.cc:604,1
    - Dst: xfr8BitInt
      Src: /src/pdns/pdns/dnsrecords.cc:605,1
    - Dst: MOADNSException
      Src: /src/pdns/pdns/dnsrecords.cc:611,1
    - Dst: memset
      Src: /src/pdns/pdns/dnsrecords.cc:613,1
    - Dst: xfr8BitInt
      Src: /src/pdns/pdns/dnsrecords.cc:615,1
    - Dst: MOADNSException
      Src: /src/pdns/pdns/dnsrecords.cc:618,1
    - Dst: memset
      Src: /src/pdns/pdns/dnsrecords.cc:620,1
    - Dst: xfr8BitInt
      Src: /src/pdns/pdns/dnsrecords.cc:622,1
    - Dst: MOADNSException
      Src: /src/pdns/pdns/dnsrecords.cc:624,1
    - Dst: auto::aplrdata::push_back
      Src: /src/pdns/pdns/dnsrecords.cc:628,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 28
    argCount: 2
    argNames:
    - dr
    - ' pr'
    argTypes:
    - DNSRecord
    - PacketReader
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 632
      start: 595
    functionDepth: 0
    functionLinenumber: 595
    functionLinenumberEnd: 632
    functionName: APLRecordContent::make
    functionSourceFile: /src/pdns/pdns/dnsrecords.cc
    functionUses: 0
    functionsReached:
    - auto::aplrdata::push_back
    - xfr8BitInt
    - xfr16BitInt
    - memset
    - std::make_shared<APLRecordContent>
    - MOADNSException
    linkageType: ''
    returnType: std::shared_ptr<DNSRecordContent>
    signature: std::shared_ptr<DNSRecordContent> APLRecordContent::make(const DNSRecord
      &dr, PacketReader& pr)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: Netmask::Netmask
      Src: /src/pdns/pdns/dnsrecords.cc:637,1
    - Dst: at
      Src: /src/pdns/pdns/dnsrecords.cc:643,1
    - Dst: substr
      Src: /src/pdns/pdns/dnsrecords.cc:645,1
    - Dst: length
      Src: /src/pdns/pdns/dnsrecords.cc:645,1
    - Dst: string::find
      Src: /src/pdns/pdns/dnsrecords.cc:651,1
    - Dst: MOADNSException
      Src: /src/pdns/pdns/dnsrecords.cc:652,1
    - Dst: string::find
      Src: /src/pdns/pdns/dnsrecords.cc:656,1
    - Dst: Netmask
      Src: /src/pdns/pdns/dnsrecords.cc:664,1
    - Dst: string::substr
      Src: /src/pdns/pdns/dnsrecords.cc:664,1
    - Dst: string::length
      Src: /src/pdns/pdns/dnsrecords.cc:664,1
    - Dst: Netmask::getBits
      Src: /src/pdns/pdns/dnsrecords.cc:665,1
    - Dst: Netmask::getNetwork
      Src: /src/pdns/pdns/dnsrecords.cc:667,1
    - Dst: MOADNSException
      Src: /src/pdns/pdns/dnsrecords.cc:668,1
    - Dst: ntohl
      Src: /src/pdns/pdns/dnsrecords.cc:672,1
    - Dst: Netmask::getNetwork
      Src: /src/pdns/pdns/dnsrecords.cc:672,1
    - Dst: memset
      Src: /src/pdns/pdns/dnsrecords.cc:673,1
    - Dst: string::find
      Src: /src/pdns/pdns/dnsrecords.cc:688,1
    - Dst: Netmask
      Src: /src/pdns/pdns/dnsrecords.cc:692,1
    - Dst: string::substr
      Src: /src/pdns/pdns/dnsrecords.cc:692,1
    - Dst: string::length
      Src: /src/pdns/pdns/dnsrecords.cc:692,1
    - Dst: Netmask::getBits
      Src: /src/pdns/pdns/dnsrecords.cc:693,1
    - Dst: Netmask::getNetwork
      Src: /src/pdns/pdns/dnsrecords.cc:695,1
    - Dst: MOADNSException
      Src: /src/pdns/pdns/dnsrecords.cc:696,1
    - Dst: memset
      Src: /src/pdns/pdns/dnsrecords.cc:700,1
    - Dst: Netmask::getNetwork
      Src: /src/pdns/pdns/dnsrecords.cc:704,1
    - Dst: Netmask::getNetwork
      Src: /src/pdns/pdns/dnsrecords.cc:705,1
    - Dst: MOADNSException
      Src: /src/pdns/pdns/dnsrecords.cc:715,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 54
    argCount: 1
    argNames:
    - ' element'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 719
      start: 635
    functionDepth: 0
    functionLinenumber: 635
    functionLinenumberEnd: 719
    functionName: APLRecordContent::parseAPLElement
    functionSourceFile: /src/pdns/pdns/dnsrecords.cc
    functionUses: 0
    functionsReached:
    - length
    - Netmask
    - Netmask::getNetwork
    - ntohl
    - Netmask::Netmask
    - string::find
    - Netmask::getBits
    - memset
    - substr
    - string::substr
    - MOADNSException
    - string::length
    - at
    linkageType: ''
    returnType: APLRDataElement
    signature: APLRDataElement APLRecordContent::parseAPLElement(const string& element)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<APLRecordContent>
      Src: /src/pdns/pdns/dnsrecords.cc:726,1
    - Dst: NetmaskTree::TreeNode::split
      Src: /src/pdns/pdns/dnsrecords.cc:728,1
    - Dst: boost::is_any_of
      Src: /src/pdns/pdns/dnsrecords.cc:728,1
    - Dst: empty
      Src: /src/pdns/pdns/dnsrecords.cc:730,1
    - Dst: auto::parseAPLElement
      Src: /src/pdns/pdns/dnsrecords.cc:731,1
    - Dst: auto::aplrdata::push_back
      Src: /src/pdns/pdns/dnsrecords.cc:732,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - ' zone'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 736
      start: 722
    functionDepth: 0
    functionLinenumber: 722
    functionLinenumberEnd: 736
    functionName: APLRecordContent::make
    functionSourceFile: /src/pdns/pdns/dnsrecords.cc
    functionUses: 0
    functionsReached:
    - NetmaskTree::TreeNode::split
    - auto::aplrdata::push_back
    - boost::is_any_of
    - std::make_shared<APLRecordContent>
    - empty
    - auto::parseAPLElement
    linkageType: ''
    returnType: std::shared_ptr<DNSRecordContent>
    signature: std::shared_ptr<DNSRecordContent> APLRecordContent::make(const string&
      zone)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: xfr16BitInt
      Src: /src/pdns/pdns/dnsrecords.cc:742,1
    - Dst: xfr8BitInt
      Src: /src/pdns/pdns/dnsrecords.cc:743,1
    - Dst: xfr8BitInt
      Src: /src/pdns/pdns/dnsrecords.cc:744,1
    - Dst: xfr8BitInt
      Src: /src/pdns/pdns/dnsrecords.cc:747,1
    - Dst: xfr8BitInt
      Src: /src/pdns/pdns/dnsrecords.cc:751,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 1
    argNames:
    - ' pw'
    argTypes:
    - DNSPacketWriter
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 755
      start: 740
    functionDepth: 0
    functionLinenumber: 740
    functionLinenumberEnd: 755
    functionName: APLRecordContent::toPacket
    functionSourceFile: /src/pdns/pdns/dnsrecords.cc
    functionUses: 0
    functionsReached:
    - xfr16BitInt
    - xfr8BitInt
    linkageType: ''
    returnType: void
    signature: void APLRecordContent::toPacket(DNSPacketWriter& pw) const
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Netmask::Netmask
      Src: /src/pdns/pdns/dnsrecords.cc:761,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsrecords.cc:765,1
    - Dst: end
      Src: /src/pdns/pdns/dnsrecords.cc:765,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsrecords.cc:775,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsrecords.cc:776,1
    - Dst: memset
      Src: /src/pdns/pdns/dnsrecords.cc:777,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsrecords.cc:779,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsrecords.cc:781,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsrecords.cc:782,1
    - Dst: memset
      Src: /src/pdns/pdns/dnsrecords.cc:784,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsrecords.cc:786,1
    - Dst: MOADNSException
      Src: /src/pdns/pdns/dnsrecords.cc:788,1
    - Dst: Netmask
      Src: /src/pdns/pdns/dnsrecords.cc:791,1
    - Dst: Netmask::toString
      Src: /src/pdns/pdns/dnsrecords.cc:793,1
    - Dst: std::next
      Src: /src/pdns/pdns/dnsrecords.cc:794,1
    - Dst: end
      Src: /src/pdns/pdns/dnsrecords.cc:794,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 29
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 798
      start: 758
    functionDepth: 0
    functionLinenumber: 758
    functionLinenumberEnd: 798
    functionName: APLRecordContent::getZoneRepresentation
    functionSourceFile: /src/pdns/pdns/dnsrecords.cc
    functionUses: 0
    functionsReached:
    - memcpy
    - Netmask
    - std::to_string
    - Netmask::toString
    - Netmask::Netmask
    - end
    - std::next
    - memset
    - begin
    - MOADNSException
    - ComboAddress
    linkageType: ''
    returnType: string
    signature: string APLRecordContent::getZoneRepresentation(bool /* noDot */) const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SVCBBaseRecordContent::getParamIt
      Src: /src/pdns/pdns/dnsrecords.cc:804,1
    - Dst: end
      Src: /src/pdns/pdns/dnsrecords.cc:805,1
    - Dst: auto::getAutoHint
      Src: /src/pdns/pdns/dnsrecords.cc:808,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - key
    argTypes:
    - SvcParam::SvcParamKey
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 809
      start: 803
    functionDepth: 0
    functionLinenumber: 803
    functionLinenumberEnd: 809
    functionName: SVCBBaseRecordContent::autoHint
    functionSourceFile: /src/pdns/pdns/dnsrecords.cc
    functionUses: 0
    functionsReached:
    - SVCBBaseRecordContent::getParamIt
    - end
    - auto::getAutoHint
    linkageType: ''
    returnType: bool
    signature: bool SVCBBaseRecordContent::autoHint(const SvcParam::SvcParamKey &key)
      const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SVCBBaseRecordContent::getParamIt
      Src: /src/pdns/pdns/dnsrecords.cc:812,1
    - Dst: end
      Src: /src/pdns/pdns/dnsrecords.cc:813,1
    - Dst: std::vector::reserve
      Src: /src/pdns/pdns/dnsrecords.cc:818,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/dnsrecords.cc:818,1
    - Dst: std::vector<ComboAddress>::size
      Src: /src/pdns/pdns/dnsrecords.cc:818,1
    - Dst: std::vector::insert
      Src: /src/pdns/pdns/dnsrecords.cc:819,1
    - Dst: std::vector::end
      Src: /src/pdns/pdns/dnsrecords.cc:819,1
    - Dst: std::vector<ComboAddress>::begin
      Src: /src/pdns/pdns/dnsrecords.cc:819,1
    - Dst: std::vector<ComboAddress>::end
      Src: /src/pdns/pdns/dnsrecords.cc:819,1
    - Dst: SvcParam
      Src: /src/pdns/pdns/dnsrecords.cc:822,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsrecords.cc:822,1
    - Dst: erase
      Src: /src/pdns/pdns/dnsrecords.cc:823,1
    - Dst: insert
      Src: /src/pdns/pdns/dnsrecords.cc:824,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsrecords.cc:824,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 2
    argNames:
    - key
    - addresses
    argTypes:
    - SvcParam::SvcParamKey
    - std::vector<ComboAddress>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 829
      start: 811
    functionDepth: 1
    functionLinenumber: 811
    functionLinenumberEnd: 829
    functionName: SVCBBaseRecordContent::setHints
    functionSourceFile: /src/pdns/pdns/dnsrecords.cc
    functionUses: 0
    functionsReached:
    - SVCBBaseRecordContent::getParamIt
    - std::vector::end
    - std::move
    - std::vector<ComboAddress>::size
    - std::vector::size
    - std::vector::insert
    - SvcParam
    - end
    - std::vector::reserve
    - std::vector<ComboAddress>::begin
    - insert
    - erase
    - std::vector<ComboAddress>::end
    linkageType: ''
    returnType: void
    signature: void SVCBBaseRecordContent::setHints(const SvcParam::SvcParamKey &key,
      const std::vector<ComboAddress> &addresses)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SVCBBaseRecordContent::getParamIt
      Src: /src/pdns/pdns/dnsrecords.cc:832,1
    - Dst: end
      Src: /src/pdns/pdns/dnsrecords.cc:833,1
    - Dst: erase
      Src: /src/pdns/pdns/dnsrecords.cc:836,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - key
    argTypes:
    - SvcParam::SvcParamKey
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 837
      start: 831
    functionDepth: 0
    functionLinenumber: 831
    functionLinenumberEnd: 837
    functionName: SVCBBaseRecordContent::removeParam
    functionSourceFile: /src/pdns/pdns/dnsrecords.cc
    functionUses: 0
    functionsReached:
    - SVCBBaseRecordContent::getParamIt
    - erase
    - end
    linkageType: ''
    returnType: void
    signature: void SVCBBaseRecordContent::removeParam(const SvcParam::SvcParamKey
      &key)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/dnsrecords.cc:840,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 841
      start: 839
    functionDepth: 0
    functionLinenumber: 839
    functionLinenumberEnd: 841
    functionName: SVCBBaseRecordContent::hasParams
    functionSourceFile: /src/pdns/pdns/dnsrecords.cc
    functionUses: 0
    functionsReached:
    - empty
    linkageType: ''
    returnType: bool
    signature: bool SVCBBaseRecordContent::hasParams() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SVCBBaseRecordContent::getParamIt
      Src: /src/pdns/pdns/dnsrecords.cc:844,1
    - Dst: end
      Src: /src/pdns/pdns/dnsrecords.cc:844,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - key
    argTypes:
    - SvcParam::SvcParamKey
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 845
      start: 843
    functionDepth: 0
    functionLinenumber: 843
    functionLinenumberEnd: 845
    functionName: SVCBBaseRecordContent::hasParam
    functionSourceFile: /src/pdns/pdns/dnsrecords.cc
    functionUses: 0
    functionsReached:
    - SVCBBaseRecordContent::getParamIt
    - end
    linkageType: ''
    returnType: bool
    signature: bool SVCBBaseRecordContent::hasParam(const SvcParam::SvcParamKey &key)
      const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SVCBBaseRecordContent::getParamIt
      Src: /src/pdns/pdns/dnsrecords.cc:848,1
    - Dst: end
      Src: /src/pdns/pdns/dnsrecords.cc:849,1
    - Dst: std::out_of_range
      Src: /src/pdns/pdns/dnsrecords.cc:850,1
    - Dst: SvcParam::keyToString
      Src: /src/pdns/pdns/dnsrecords.cc:850,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - key
    argTypes:
    - SvcParam::SvcParamKey
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 853
      start: 847
    functionDepth: 0
    functionLinenumber: 847
    functionLinenumberEnd: 853
    functionName: SVCBBaseRecordContent::getParam
    functionSourceFile: /src/pdns/pdns/dnsrecords.cc
    functionUses: 0
    functionsReached:
    - SVCBBaseRecordContent::getParamIt
    - SvcParam::keyToString
    - end
    - std::out_of_range
    linkageType: ''
    returnType: SvcParam
    signature: SvcParam SVCBBaseRecordContent::getParam(const SvcParam::SvcParamKey
      &key) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::find
      Src: /src/pdns/pdns/dnsrecords.cc:856,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsrecords.cc:856,1
    - Dst: end
      Src: /src/pdns/pdns/dnsrecords.cc:856,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - key
    argTypes:
    - SvcParam::SvcParamKey
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 857
      start: 855
    functionDepth: 0
    functionLinenumber: 855
    functionLinenumberEnd: 857
    functionName: SVCBBaseRecordContent::getParamIt
    functionSourceFile: /src/pdns/pdns/dnsrecords.cc
    functionUses: 5
    functionsReached:
    - end
    - std::find
    - begin
    linkageType: ''
    returnType: set<SvcParam>::const_iterator
    signature: set<SvcParam>::const_iterator SVCBBaseRecordContent::getParamIt(const
      SvcParam::SvcParamKey &key) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::shared_ptr<SVCBBaseRecordContent>
      Src: /src/pdns/pdns/dnsrecords.cc:861,1
    - Dst: std::make_shared<SVCBRecordContent>
      Src: /src/pdns/pdns/dnsrecords.cc:861,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 862
      start: 859
    functionDepth: 0
    functionLinenumber: 859
    functionLinenumberEnd: 862
    functionName: SVCBRecordContent::clone
    functionSourceFile: /src/pdns/pdns/dnsrecords.cc
    functionUses: 0
    functionsReached:
    - std::shared_ptr<SVCBBaseRecordContent>
    - std::make_shared<SVCBRecordContent>
    linkageType: ''
    returnType: std::shared_ptr<SVCBBaseRecordContent>
    signature: std::shared_ptr<SVCBBaseRecordContent> SVCBRecordContent::clone() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::shared_ptr<SVCBBaseRecordContent>
      Src: /src/pdns/pdns/dnsrecords.cc:866,1
    - Dst: std::make_shared<HTTPSRecordContent>
      Src: /src/pdns/pdns/dnsrecords.cc:866,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 867
      start: 864
    functionDepth: 0
    functionLinenumber: 864
    functionLinenumberEnd: 867
    functionName: HTTPSRecordContent::clone
    functionSourceFile: /src/pdns/pdns/dnsrecords.cc
    functionUses: 0
    functionsReached:
    - std::make_shared<HTTPSRecordContent>
    - std::shared_ptr<SVCBBaseRecordContent>
    linkageType: ''
    returnType: std::shared_ptr<SVCBBaseRecordContent>
    signature: std::shared_ptr<SVCBBaseRecordContent> HTTPSRecordContent::clone()
      const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<HHITRecordContent>
      Src: /src/pdns/pdns/dnsrecords.cc:873,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 874
      start: 871
    functionDepth: 0
    functionLinenumber: 871
    functionLinenumberEnd: 874
    functionName: HHITRecordContent::clone
    functionSourceFile: /src/pdns/pdns/dnsrecords.cc
    functionUses: 0
    functionsReached:
    - std::make_shared<HHITRecordContent>
    linkageType: ''
    returnType: std::shared_ptr<DRIPBaseRecordContent>
    signature: std::shared_ptr<DRIPBaseRecordContent> HHITRecordContent::clone() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<BRIDRecordContent>
      Src: /src/pdns/pdns/dnsrecords.cc:878,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 879
      start: 876
    functionDepth: 0
    functionLinenumber: 876
    functionLinenumberEnd: 879
    functionName: BRIDRecordContent::clone
    functionSourceFile: /src/pdns/pdns/dnsrecords.cc
    functionUses: 0
    functionsReached:
    - std::make_shared<BRIDRecordContent>
    linkageType: ''
    returnType: std::shared_ptr<DRIPBaseRecordContent>
    signature: std::shared_ptr<DRIPBaseRecordContent> BRIDRecordContent::clone() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: c_str
      Src: /src/pdns/pdns/dnsrecords.cc:911,1
    - Dst: length
      Src: /src/pdns/pdns/dnsrecords.cc:912,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ' data'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 921
      start: 909
    functionDepth: 0
    functionLinenumber: 909
    functionLinenumberEnd: 921
    functionName: makeTag
    functionSourceFile: /src/pdns/pdns/dnsrecords.cc
    functionUses: 0
    functionsReached:
    - c_str
    - length
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t makeTag(const std::string& data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeTag
      Src: /src/pdns/pdns/dnsrecords.cc:925,1
    - Dst: DNSKEYRecordContent::serialize
      Src: /src/pdns/pdns/dnsrecords.cc:925,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsrecords.cc:925,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 926
      start: 923
    functionDepth: 0
    functionLinenumber: 923
    functionLinenumberEnd: 926
    functionName: DNSKEYRecordContent::getTag
    functionSourceFile: /src/pdns/pdns/dnsrecords.cc
    functionUses: 0
    functionsReached:
    - makeTag
    - DNSName
    - DNSKEYRecordContent::serialize
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t DNSKEYRecordContent::getTag() const
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: d_answers::empty
      Src: /src/pdns/pdns/dnsrecords.cc:935,1
    - Dst: ntohl
      Src: /src/pdns/pdns/dnsrecords.cc:941,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsrecords.cc:943,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsrecords.cc:947,1
    - Dst: getRR
      Src: /src/pdns/pdns/dnsrecords.cc:948,1
    - Dst: auto::getData
      Src: /src/pdns/pdns/dnsrecords.cc:951,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 2
    argNames:
    - ' mdp'
    - eo
    argTypes:
    - MOADNSParser
    - EDNSOpts*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 957
      start: 932
    functionDepth: 0
    functionLinenumber: 932
    functionLinenumberEnd: 957
    functionName: getEDNSOpts
    functionSourceFile: /src/pdns/pdns/dnsrecords.cc
    functionUses: 0
    functionsReached:
    - ntohl
    - getRR
    - memcpy
    - ntohs
    - d_answers::empty
    - auto::getData
    linkageType: ''
    returnType: bool
    signature: bool getEDNSOpts(const MOADNSParser& mdp, EDNSOpts* eo)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EUI48RecordContent::report
      Src: /src/pdns/pdns/dnsrecords.cc:961,1
    - Dst: EUI48RecordContent::report
      Src: /src/pdns/pdns/dnsrecords.cc:962,1
    - Dst: EUI48RecordContent::report
      Src: /src/pdns/pdns/dnsrecords.cc:963,1
    - Dst: EUI48RecordContent::report
      Src: /src/pdns/pdns/dnsrecords.cc:964,1
    - Dst: EUI48RecordContent::report
      Src: /src/pdns/pdns/dnsrecords.cc:965,1
    - Dst: EUI48RecordContent::report
      Src: /src/pdns/pdns/dnsrecords.cc:966,1
    - Dst: EUI48RecordContent::report
      Src: /src/pdns/pdns/dnsrecords.cc:967,1
    - Dst: EUI48RecordContent::report
      Src: /src/pdns/pdns/dnsrecords.cc:968,1
    - Dst: DNSRecordContent::regist
      Src: /src/pdns/pdns/dnsrecords.cc:969,1
    - Dst: EUI48RecordContent::report
      Src: /src/pdns/pdns/dnsrecords.cc:970,1
    - Dst: EUI48RecordContent::report
      Src: /src/pdns/pdns/dnsrecords.cc:972,1
    - Dst: DNSRecordContent::regist
      Src: /src/pdns/pdns/dnsrecords.cc:974,1
    - Dst: DNSRecordContent::regist
      Src: /src/pdns/pdns/dnsrecords.cc:975,1
    - Dst: DNSRecordContent::regist
      Src: /src/pdns/pdns/dnsrecords.cc:976,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 15
    argCount: 1
    argNames:
    - ' guard'
    argTypes:
    - ReportIsOnlyCallableByReportAllTypes
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 977
      start: 959
    functionDepth: 0
    functionLinenumber: 959
    functionLinenumberEnd: 977
    functionName: reportBasicTypes
    functionSourceFile: /src/pdns/pdns/dnsrecords.cc
    functionUses: 0
    functionsReached:
    - EUI48RecordContent::report
    - DNSRecordContent::regist
    linkageType: ''
    returnType: void
    signature: void reportBasicTypes(const ReportIsOnlyCallableByReportAllTypes& guard)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EUI48RecordContent::report
      Src: /src/pdns/pdns/dnsrecords.cc:981,1
    - Dst: EUI48RecordContent::report
      Src: /src/pdns/pdns/dnsrecords.cc:982,1
    - Dst: EUI48RecordContent::report
      Src: /src/pdns/pdns/dnsrecords.cc:983,1
    - Dst: EUI48RecordContent::report
      Src: /src/pdns/pdns/dnsrecords.cc:984,1
    - Dst: EUI48RecordContent::report
      Src: /src/pdns/pdns/dnsrecords.cc:985,1
    - Dst: EUI48RecordContent::report
      Src: /src/pdns/pdns/dnsrecords.cc:987,1
    - Dst: EUI48RecordContent::report
      Src: /src/pdns/pdns/dnsrecords.cc:989,1
    - Dst: EUI48RecordContent::report
      Src: /src/pdns/pdns/dnsrecords.cc:990,1
    - Dst: EUI48RecordContent::report
      Src: /src/pdns/pdns/dnsrecords.cc:991,1
    - Dst: LOCRecordContent::report
      Src: /src/pdns/pdns/dnsrecords.cc:992,1
    - Dst: EUI48RecordContent::report
      Src: /src/pdns/pdns/dnsrecords.cc:993,1
    - Dst: EUI48RecordContent::report
      Src: /src/pdns/pdns/dnsrecords.cc:994,1
    - Dst: EUI48RecordContent::report
      Src: /src/pdns/pdns/dnsrecords.cc:995,1
    - Dst: EUI48RecordContent::report
      Src: /src/pdns/pdns/dnsrecords.cc:996,1
    - Dst: EUI48RecordContent::report
      Src: /src/pdns/pdns/dnsrecords.cc:997,1
    - Dst: EUI48RecordContent::report
      Src: /src/pdns/pdns/dnsrecords.cc:998,1
    - Dst: EUI48RecordContent::report
      Src: /src/pdns/pdns/dnsrecords.cc:999,1
    - Dst: EUI48RecordContent::report
      Src: /src/pdns/pdns/dnsrecords.cc:1000,1
    - Dst: EUI48RecordContent::report
      Src: /src/pdns/pdns/dnsrecords.cc:1001,1
    - Dst: EUI48RecordContent::report
      Src: /src/pdns/pdns/dnsrecords.cc:1002,1
    - Dst: EUI48RecordContent::report
      Src: /src/pdns/pdns/dnsrecords.cc:1003,1
    - Dst: EUI48RecordContent::report
      Src: /src/pdns/pdns/dnsrecords.cc:1004,1
    - Dst: EUI48RecordContent::report
      Src: /src/pdns/pdns/dnsrecords.cc:1005,1
    - Dst: NSECRecordContent::report
      Src: /src/pdns/pdns/dnsrecords.cc:1006,1
    - Dst: NSEC3RecordContent::report
      Src: /src/pdns/pdns/dnsrecords.cc:1007,1
    - Dst: NSEC3PARAMRecordContent::report
      Src: /src/pdns/pdns/dnsrecords.cc:1008,1
    - Dst: EUI48RecordContent::report
      Src: /src/pdns/pdns/dnsrecords.cc:1009,1
    - Dst: EUI48RecordContent::report
      Src: /src/pdns/pdns/dnsrecords.cc:1010,1
    - Dst: EUI48RecordContent::report
      Src: /src/pdns/pdns/dnsrecords.cc:1011,1
    - Dst: EUI48RecordContent::report
      Src: /src/pdns/pdns/dnsrecords.cc:1012,1
    - Dst: EUI48RecordContent::report
      Src: /src/pdns/pdns/dnsrecords.cc:1013,1
    - Dst: EUI48RecordContent::report
      Src: /src/pdns/pdns/dnsrecords.cc:1014,1
    - Dst: EUI48RecordContent::report
      Src: /src/pdns/pdns/dnsrecords.cc:1015,1
    - Dst: EUI48RecordContent::report
      Src: /src/pdns/pdns/dnsrecords.cc:1016,1
    - Dst: DNSRecordContent::regist
      Src: /src/pdns/pdns/dnsrecords.cc:1017,1
    - Dst: DNSRecordContent::regist
      Src: /src/pdns/pdns/dnsrecords.cc:1018,1
    - Dst: EUI48RecordContent::report
      Src: /src/pdns/pdns/dnsrecords.cc:1020,1
    - Dst: EUI48RecordContent::report
      Src: /src/pdns/pdns/dnsrecords.cc:1021,1
    - Dst: EUI64RecordContent::report
      Src: /src/pdns/pdns/dnsrecords.cc:1022,1
    - Dst: EUI48RecordContent::report
      Src: /src/pdns/pdns/dnsrecords.cc:1023,1
    - Dst: EUI48RecordContent::report
      Src: /src/pdns/pdns/dnsrecords.cc:1024,1
    - Dst: EUI48RecordContent::report
      Src: /src/pdns/pdns/dnsrecords.cc:1025,1
    - Dst: EUI48RecordContent::report
      Src: /src/pdns/pdns/dnsrecords.cc:1026,1
    - Dst: APLRecordContent::report
      Src: /src/pdns/pdns/dnsrecords.cc:1027,1
    - Dst: EUI48RecordContent::report
      Src: /src/pdns/pdns/dnsrecords.cc:1028,1
    - Dst: CSYNCRecordContent::report
      Src: /src/pdns/pdns/dnsrecords.cc:1029,1
    - Dst: EUI48RecordContent::report
      Src: /src/pdns/pdns/dnsrecords.cc:1030,1
    - Dst: EUI48RecordContent::report
      Src: /src/pdns/pdns/dnsrecords.cc:1031,1
    - Dst: EUI48RecordContent::report
      Src: /src/pdns/pdns/dnsrecords.cc:1032,1
    - Dst: EUI48RecordContent::report
      Src: /src/pdns/pdns/dnsrecords.cc:1033,1
    - Dst: EUI48RecordContent::report
      Src: /src/pdns/pdns/dnsrecords.cc:1034,1
    - Dst: EUI48RecordContent::report
      Src: /src/pdns/pdns/dnsrecords.cc:1035,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 53
    argCount: 1
    argNames:
    - ' guard'
    argTypes:
    - ReportIsOnlyCallableByReportAllTypes
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1036
      start: 979
    functionDepth: 0
    functionLinenumber: 979
    functionLinenumberEnd: 1036
    functionName: reportOtherTypes
    functionSourceFile: /src/pdns/pdns/dnsrecords.cc
    functionUses: 0
    functionsReached:
    - LOCRecordContent::report
    - NSEC3RecordContent::report
    - NSEC3PARAMRecordContent::report
    - DNSRecordContent::regist
    - EUI64RecordContent::report
    - APLRecordContent::report
    - NSECRecordContent::report
    - CSYNCRecordContent::report
    - EUI48RecordContent::report
    linkageType: ''
    returnType: void
    signature: void reportOtherTypes(const ReportIsOnlyCallableByReportAllTypes& guard)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: reportBasicTypes
      Src: /src/pdns/pdns/dnsrecords.cc:1045,1
    - Dst: reportOtherTypes
      Src: /src/pdns/pdns/dnsrecords.cc:1046,1
    - Dst: DNSRecordContent::lock
      Src: /src/pdns/pdns/dnsrecords.cc:1047,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1048
      start: 1042
    functionDepth: 0
    functionLinenumber: 1042
    functionLinenumberEnd: 1048
    functionName: reportAllTypes
    functionSourceFile: /src/pdns/pdns/dnsrecords.cc
    functionUses: 5
    functionsReached:
    - reportBasicTypes
    - reportOtherTypes
    - DNSRecordContent::lock
    linkageType: ''
    returnType: void
    signature: void reportAllTypes()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: getRR
      Src: /src/pdns/pdns/dnsrecords.cc:1052,1
    - Dst: auto::getCA
      Src: /src/pdns/pdns/dnsrecords.cc:1053,1
    - Dst: getRR
      Src: /src/pdns/pdns/dnsrecords.cc:1055,1
    - Dst: auto::getCA
      Src: /src/pdns/pdns/dnsrecords.cc:1056,1
    - Dst: std::invalid_argument
      Src: /src/pdns/pdns/dnsrecords.cc:1058,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - ' dr'
    - defport
    argTypes:
    - DNSRecord
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1059
      start: 1050
    functionDepth: 0
    functionLinenumber: 1050
    functionLinenumberEnd: 1059
    functionName: getAddr
    functionSourceFile: /src/pdns/pdns/dnsrecords.cc
    functionUses: 0
    functionsReached:
    - std::invalid_argument
    - getRR
    - auto::getCA
    linkageType: ''
    returnType: ComboAddress
    signature: ComboAddress getAddr(const DNSRecord& dr, uint16_t defport)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: qtype::getCode
      Src: /src/pdns/pdns/dnsrecords.cc:1066,1
    - Dst: qtype::getCode
      Src: /src/pdns/pdns/dnsrecords.cc:1066,1
    - Dst: qtype::getCode
      Src: /src/pdns/pdns/dnsrecords.cc:1066,1
    - Dst: DNSName::DNSName
      Src: /src/pdns/pdns/dnsrecords.cc:1067,1
    - Dst: qtype::getCode
      Src: /src/pdns/pdns/dnsrecords.cc:1068,1
    - Dst: stringtok
      Src: /src/pdns/pdns/dnsrecords.cc:1070,1
    - Dst: getZoneRepresentation
      Src: /src/pdns/pdns/dnsrecords.cc:1070,1
    - Dst: vector::size
      Src: /src/pdns/pdns/dnsrecords.cc:1071,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsrecords.cc:1071,1
    - Dst: qtype::getCode
      Src: /src/pdns/pdns/dnsrecords.cc:1072,1
    - Dst: stringtok
      Src: /src/pdns/pdns/dnsrecords.cc:1074,1
    - Dst: getZoneRepresentation
      Src: /src/pdns/pdns/dnsrecords.cc:1074,1
    - Dst: vector::size
      Src: /src/pdns/pdns/dnsrecords.cc:1075,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsrecords.cc:1075,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsrecords.cc:1077,1
    - Dst: DNSName::empty
      Src: /src/pdns/pdns/dnsrecords.cc:1080,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsrecords.cc:1081,1
    - Dst: qtype::getCode
      Src: /src/pdns/pdns/dnsrecords.cc:1083,1
    - Dst: qtype::getCode
      Src: /src/pdns/pdns/dnsrecords.cc:1083,1
    - Dst: DNSName::isHostname
      Src: /src/pdns/pdns/dnsrecords.cc:1085,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsrecords.cc:1086,1
    - Dst: sqlstr
      Src: /src/pdns/pdns/dnsrecords.cc:1086,1
    - Dst: boost::format
      Src: /src/pdns/pdns/dnsrecords.cc:1086,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/dnsrecords.cc:1086,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 23
    argCount: 2
    argNames:
    - ' rr'
    - allowUnderscore
    argTypes:
    - DNSResourceRecord
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1089
      start: 1064
    functionDepth: 1
    functionLinenumber: 1064
    functionLinenumberEnd: 1089
    functionName: checkHostnameCorrectness
    functionSourceFile: /src/pdns/pdns/dnsrecords.cc
    functionUses: 1
    functionsReached:
    - getZoneRepresentation
    - stringtok
    - std::runtime_error
    - DNSName
    - qtype::getCode
    - DNSName::isHostname
    - DNSName::toString
    - DNSName::empty
    - sqlstr
    - boost::format
    - DNSName::DNSName
    - vector::size
    linkageType: ''
    returnType: void
    signature: void checkHostnameCorrectness(const DNSResourceRecord& rr, bool allowUnderscore)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: cbegin
      Src: /src/pdns/pdns/dnsrecords.cc:1093,1
    - Dst: cend
      Src: /src/pdns/pdns/dnsrecords.cc:1093,1
    - Dst: cend
      Src: /src/pdns/pdns/dnsrecords.cc:1098,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - optionCode
    argTypes:
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1099
      start: 1091
    functionDepth: 0
    functionLinenumber: 1091
    functionLinenumberEnd: 1099
    functionName: EDNSOpts::getFirstOption
    functionSourceFile: /src/pdns/pdns/dnsrecords.cc
    functionUses: 0
    functionsReached:
    - cbegin
    - cend
    linkageType: ''
    returnType: vector<pair<uint16_t, string>>::const_iterator
    signature: vector<pair<uint16_t, string>>::const_iterator EDNSOpts::getFirstOption(uint16_t
      optionCode) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: reportAllTypes
      Src: /src/pdns/pdns/dnsrecords.cc:1106,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1107
      start: 1104
    functionDepth: 0
    functionLinenumber: 1104
    functionLinenumberEnd: 1107
    functionName: Reporter
    functionSourceFile: /src/pdns/pdns/dnsrecords.cc
    functionUses: 0
    functionsReached:
    - reportAllTypes
    linkageType: ''
    returnType: void
    signature: void Reporter()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 43
    functionName: ChunkedSigningPipe::ChunkedSigningPipe
    functionSourceFile: /src/pdns/pdns/signingpipe.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ChunkedSigningPipe(const ChunkedSigningPipe&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 44
    functionDepth: 0
    functionLinenumber: 44
    functionLinenumberEnd: 44
    functionName: operator=(const ChunkedSigningPipe&)
    functionSourceFile: /src/pdns/pdns/signingpipe.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void operator=(const ChunkedSigningPipe&)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ArgvMap::ArgvMap
      Src: /src/pdns/pdns/tsig-tests.cc:25,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 27
      start: 23
    functionDepth: 0
    functionLinenumber: 23
    functionLinenumberEnd: 27
    functionName: arg
    functionSourceFile: /src/pdns/pdns/tsig-tests.cc
    functionUses: 20
    functionsReached:
    - ArgvMap::ArgvMap
    linkageType: ''
    returnType: ArgvMap
    signature: ArgvMap & arg()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pdns::parseQueryLocalAddress
      Src: /src/pdns/pdns/tsig-tests.cc:32,1
    - Dst: reportAllTypes
      Src: /src/pdns/pdns/tsig-tests.cc:34,1
    - Dst: exit
      Src: /src/pdns/pdns/tsig-tests.cc:39,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/tsig-tests.cc:46,1
    - Dst: htons
      Src: /src/pdns/pdns/tsig-tests.cc:46,1
    - Dst: B64Decode
      Src: /src/pdns/pdns/tsig-tests.cc:49,1
    - Dst: TSIGRecordContent::TSIGRecordContent
      Src: /src/pdns/pdns/tsig-tests.cc:53,1
    - Dst: time
      Src: /src/pdns/pdns/tsig-tests.cc:55,1
    - Dst: ntohs
      Src: /src/pdns/pdns/tsig-tests.cc:57,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/tsig-tests.cc:57,1
    - Dst: addTSIG
      Src: /src/pdns/pdns/tsig-tests.cc:60,1
    - Dst: atoi
      Src: /src/pdns/pdns/tsig-tests.cc:63,1
    - Dst: Base64Encode
      Src: /src/pdns/pdns/tsig-tests.cc:64,1
    - Dst: ZoneName
      Src: /src/pdns/pdns/tsig-tests.cc:69,1
    - Dst: AXFRRetriever::getChunk
      Src: /src/pdns/pdns/tsig-tests.cc:71,1
    - Dst: what
      Src: /src/pdns/pdns/tsig-tests.cc:77,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 30
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 29
    functionDepth: 1
    functionLinenumber: 29
    functionLinenumberEnd: 84
    functionName: main
    functionSourceFile: /src/pdns/pdns/tsig-tests.cc
    functionUses: 15
    functionsReached:
    - addTSIG
    - reportAllTypes
    - ntohs
    - atoi
    - time
    - AXFRRetriever::getChunk
    - what
    - B64Decode
    - DNSPacketWriter::getHeader
    - Base64Encode
    - ZoneName
    - exit
    - TSIGRecordContent::TSIGRecordContent
    - pdns::parseQueryLocalAddress
    - htons
    linkageType: ''
    returnType: int
    signature: int main(int argc, char** argv)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: LLVMFuzzerInitialize
      Src: /src/pdns/pdns/standalone_fuzz_target_runner.cc:16,1
    - Dst: stat
      Src: /src/pdns/pdns/standalone_fuzz_target_runner.cc:22,1
    - Dst: S_ISREG
      Src: /src/pdns/pdns/standalone_fuzz_target_runner.cc:22,1
    - Dst: std::string
      Src: /src/pdns/pdns/standalone_fuzz_target_runner.cc:23,1
    - Dst: std::string
      Src: /src/pdns/pdns/standalone_fuzz_target_runner.cc:27,1
    - Dst: std::ifstream::seekg
      Src: /src/pdns/pdns/standalone_fuzz_target_runner.cc:30,1
    - Dst: std::ifstream::tellg
      Src: /src/pdns/pdns/standalone_fuzz_target_runner.cc:31,1
    - Dst: std::ifstream::seekg
      Src: /src/pdns/pdns/standalone_fuzz_target_runner.cc:32,1
    - Dst: std::vector::resize
      Src: /src/pdns/pdns/standalone_fuzz_target_runner.cc:35,1
    - Dst: std::ifstream::read
      Src: /src/pdns/pdns/standalone_fuzz_target_runner.cc:37,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/standalone_fuzz_target_runner.cc:37,1
    - Dst: std::vector::data
      Src: /src/pdns/pdns/standalone_fuzz_target_runner.cc:37,1
    - Dst: std::ifstream::fail
      Src: /src/pdns/pdns/standalone_fuzz_target_runner.cc:39,1
    - Dst: std::ifstream::close
      Src: /src/pdns/pdns/standalone_fuzz_target_runner.cc:40,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/standalone_fuzz_target_runner.cc:41,1
    - Dst: std::string
      Src: /src/pdns/pdns/standalone_fuzz_target_runner.cc:41,1
    - Dst: std::ifstream::close
      Src: /src/pdns/pdns/standalone_fuzz_target_runner.cc:44,1
    - Dst: LLVMFuzzerTestOneInput
      Src: /src/pdns/pdns/standalone_fuzz_target_runner.cc:46,1
    - Dst: reinterpret_cast<const uint8_t*>
      Src: /src/pdns/pdns/standalone_fuzz_target_runner.cc:46,1
    - Dst: std::vector::data
      Src: /src/pdns/pdns/standalone_fuzz_target_runner.cc:46,1
    - Dst: std::string
      Src: /src/pdns/pdns/standalone_fuzz_target_runner.cc:48,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 24
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 11
    functionDepth: 1
    functionLinenumber: 11
    functionLinenumberEnd: 52
    functionName: main
    functionSourceFile: /src/pdns/pdns/standalone_fuzz_target_runner.cc
    functionUses: 15
    functionsReached:
    - reinterpret_cast<char*>
    - std::vector::resize
    - LLVMFuzzerInitialize
    - std::ifstream::close
    - reinterpret_cast<const uint8_t*>
    - std::runtime_error
    - std::ifstream::seekg
    - std::ifstream::read
    - std::ifstream::tellg
    - S_ISREG
    - LLVMFuzzerTestOneInput
    - std::ifstream::fail
    - std::string
    - stat
    - std::vector::data
    linkageType: ''
    returnType: int
    signature: int main(int argc, char** argv)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: shared_from_this
      Src: /src/pdns/pdns/logging.cc:32,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 33
      start: 30
    functionDepth: 0
    functionLinenumber: 30
    functionLinenumberEnd: 33
    functionName: Logging::Logger::getptr
    functionSourceFile: /src/pdns/pdns/logging.cc
    functionUses: 0
    functionsReached:
    - shared_from_this
    linkageType: ''
    returnType: std::shared_ptr<const Logger>
    signature: std::shared_ptr<const Logger> Logger::getptr() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Logging::Logger::logMessage
      Src: /src/pdns/pdns/logging.cc:37,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - prio
    - ' msg'
    argTypes:
    - Logr::Priority
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 35
    functionDepth: 0
    functionLinenumber: 35
    functionLinenumberEnd: 38
    functionName: Logging::Logger::info
    functionSourceFile: /src/pdns/pdns/logging.cc
    functionUses: 0
    functionsReached:
    - Logging::Logger::logMessage
    linkageType: ''
    returnType: void
    signature: void Logger::info(Logr::Priority prio, const std::string& msg) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Utility::gettimeofday
      Src: /src/pdns/pdns/logging.cc:45,1
    - Dst: Entry::values::insert
      Src: /src/pdns/pdns/logging.cc:50,1
    - Dst: begin
      Src: /src/pdns/pdns/logging.cc:50,1
    - Dst: end
      Src: /src/pdns/pdns/logging.cc:50,1
    - Dst: Entry::values::insert
      Src: /src/pdns/pdns/logging.cc:52,1
    - Dst: auto::_values::begin
      Src: /src/pdns/pdns/logging.cc:52,1
    - Dst: auto::_values::end
      Src: /src/pdns/pdns/logging.cc:52,1
    - Dst: _callback
      Src: /src/pdns/pdns/logging.cc:55,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 3
    argNames:
    - ' msg'
    - prio
    - ' err'
    argTypes:
    - std::string
    - Logr::Priority
    - std::optional<std::string>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 40
    functionDepth: 1
    functionLinenumber: 40
    functionLinenumberEnd: 56
    functionName: Logging::Logger::logMessage
    functionSourceFile: /src/pdns/pdns/logging.cc
    functionUses: 1
    functionsReached:
    - _callback
    - Entry::values::insert
    - end
    - Utility::gettimeofday
    - begin
    - auto::_values::begin
    - auto::_values::end
    linkageType: ''
    returnType: void
    signature: void Logger::logMessage(const std::string& msg, Logr::Priority prio,
      const std::optional<std::string>& err) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Logging::Logger::logMessage
      Src: /src/pdns/pdns/logging.cc:60,1
    - Dst: std::string
      Src: /src/pdns/pdns/logging.cc:60,1
    - Dst: stringerror
      Src: /src/pdns/pdns/logging.cc:60,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - prio
    - err
    - ' msg'
    argTypes:
    - Logr::Priority
    - int
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 58
    functionDepth: 0
    functionLinenumber: 58
    functionLinenumberEnd: 61
    functionName: Logging::Logger::error
    functionSourceFile: /src/pdns/pdns/logging.cc
    functionUses: 0
    functionsReached:
    - Logging::Logger::logMessage
    - stringerror
    - std::string
    linkageType: ''
    returnType: void
    signature: void Logger::error(Logr::Priority prio, int err, const std::string&
      msg) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Logging::Logger::logMessage
      Src: /src/pdns/pdns/logging.cc:65,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - prio
    - ' err'
    - ' msg'
    argTypes:
    - Logr::Priority
    - std::string
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 63
    functionDepth: 0
    functionLinenumber: 63
    functionLinenumberEnd: 66
    functionName: Logging::Logger::error
    functionSourceFile: /src/pdns/pdns/logging.cc
    functionUses: 0
    functionsReached:
    - Logging::Logger::logMessage
    linkageType: ''
    returnType: void
    signature: void Logger::error(Logr::Priority prio, const std::string& err, const
      std::string& msg) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<Logger>
      Src: /src/pdns/pdns/logging.cc:70,1
    - Dst: Logging::Logger::getptr
      Src: /src/pdns/pdns/logging.cc:70,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - level
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 68
    functionDepth: 0
    functionLinenumber: 68
    functionLinenumberEnd: 72
    functionName: Logging::Logger::v
    functionSourceFile: /src/pdns/pdns/logging.cc
    functionUses: 0
    functionsReached:
    - Logging::Logger::getptr
    - std::make_shared<Logger>
    linkageType: ''
    returnType: std::shared_ptr<Logr::Logger>
    signature: std::shared_ptr<Logr::Logger> Logger::v(size_t level) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<Logger>
      Src: /src/pdns/pdns/logging.cc:76,1
    - Dst: Logging::Logger::getptr
      Src: /src/pdns/pdns/logging.cc:76,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ' values'
    argTypes:
    - std::map<std::string, std::string>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 74
    functionDepth: 0
    functionLinenumber: 74
    functionLinenumberEnd: 79
    functionName: Logging::Logger::withValues
    functionSourceFile: /src/pdns/pdns/logging.cc
    functionUses: 0
    functionsReached:
    - Logging::Logger::getptr
    - std::make_shared<Logger>
    linkageType: ''
    returnType: std::shared_ptr<Logr::Logger>
    signature: std::shared_ptr<Logr::Logger> Logger::withValues(const std::map<std::string,
      std::string>& values) const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<Logger>
      Src: /src/pdns/pdns/logging.cc:85,1
    - Dst: Logging::Logger::getptr
      Src: /src/pdns/pdns/logging.cc:85,1
    - Dst: value
      Src: /src/pdns/pdns/logging.cc:85,1
    - Dst: std::make_shared<Logger>
      Src: /src/pdns/pdns/logging.cc:88,1
    - Dst: Logging::Logger::getptr
      Src: /src/pdns/pdns/logging.cc:88,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - ' name'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 81
    functionDepth: 0
    functionLinenumber: 81
    functionLinenumberEnd: 91
    functionName: Logging::Logger::withName
    functionSourceFile: /src/pdns/pdns/logging.cc
    functionUses: 0
    functionsReached:
    - Logging::Logger::getptr
    - std::make_shared<Logger>
    - value
    linkageType: ''
    returnType: std::shared_ptr<Logr::Logger>
    signature: std::shared_ptr<Logr::Logger> Logger::withName(const std::string& name)
      const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<Logger>
      Src: /src/pdns/pdns/logging.cc:94,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - callback
    argTypes:
    - EntryLogger
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 92
    functionDepth: 0
    functionLinenumber: 92
    functionLinenumberEnd: 95
    functionName: Logging::Logger::create
    functionSourceFile: /src/pdns/pdns/logging.cc
    functionUses: 2
    functionsReached:
    - std::make_shared<Logger>
    linkageType: ''
    returnType: std::shared_ptr<Logger>
    signature: std::shared_ptr<Logger> Logger::create(EntryLogger callback)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<Logger>
      Src: /src/pdns/pdns/logging.cc:98,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - callback
    - ' name'
    argTypes:
    - EntryLogger
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 96
    functionDepth: 0
    functionLinenumber: 96
    functionLinenumberEnd: 99
    functionName: Logging::Logger::create
    functionSourceFile: /src/pdns/pdns/logging.cc
    functionUses: 2
    functionsReached:
    - std::make_shared<Logger>
    linkageType: ''
    returnType: std::shared_ptr<Logger>
    signature: std::shared_ptr<Logger> Logger::create(EntryLogger callback, const
      std::string& name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - callback
    argTypes:
    - EntryLogger
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 104
      start: 101
    functionDepth: 0
    functionLinenumber: 101
    functionLinenumberEnd: 104
    functionName: Logging::Logger::Logger
    functionSourceFile: /src/pdns/pdns/logging.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Logger::Logger(EntryLogger callback)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/logging.cc:106,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - callback
    - name
    argTypes:
    - EntryLogger
    - std::optional<std::string>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 105
    functionDepth: 0
    functionLinenumber: 105
    functionLinenumberEnd: 108
    functionName: Logging::Logger::Logger
    functionSourceFile: /src/pdns/pdns/logging.cc
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void Logger::Logger(EntryLogger callback, std::optional<std::string>
      name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/logging.cc:110,1
    - Dst: std::move
      Src: /src/pdns/pdns/logging.cc:110,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 4
    argNames:
    - parent
    - name
    - lvl
    - callback
    argTypes:
    - std::shared_ptr<const Logger>
    - std::optional<std::string>
    - size_t
    - EntryLogger
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 112
      start: 109
    functionDepth: 0
    functionLinenumber: 109
    functionLinenumberEnd: 112
    functionName: Logging::Logger::Logger
    functionSourceFile: /src/pdns/pdns/logging.cc
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void Logger::Logger(std::shared_ptr<const Logger> parent, std::optional<std::string>
      name, size_t lvl, EntryLogger callback)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 114
    functionDepth: 0
    functionLinenumber: 114
    functionLinenumberEnd: 114
    functionName: Logger::~Logger()
    functionSourceFile: /src/pdns/pdns/logging.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Logger::~Logger()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: shared_from_this
      Src: /src/pdns/pdns/logging.cc:32,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 33
      start: 30
    functionDepth: 0
    functionLinenumber: 30
    functionLinenumberEnd: 33
    functionName: Logging::Logger::getptr
    functionSourceFile: /src/pdns/pdns/logging.cc
    functionUses: 3
    functionsReached:
    - shared_from_this
    linkageType: ''
    returnType: std::shared_ptr<const Logger>
    signature: std::shared_ptr<const Logger> Logger::getptr() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Logging::Logger::logMessage
      Src: /src/pdns/pdns/logging.cc:37,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - prio
    - ' msg'
    argTypes:
    - Logr::Priority
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 35
    functionDepth: 0
    functionLinenumber: 35
    functionLinenumberEnd: 38
    functionName: Logging::Logger::info
    functionSourceFile: /src/pdns/pdns/logging.cc
    functionUses: 0
    functionsReached:
    - Logging::Logger::logMessage
    linkageType: ''
    returnType: void
    signature: void Logger::info(Logr::Priority prio, const std::string& msg) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Utility::gettimeofday
      Src: /src/pdns/pdns/logging.cc:45,1
    - Dst: Entry::values::insert
      Src: /src/pdns/pdns/logging.cc:50,1
    - Dst: begin
      Src: /src/pdns/pdns/logging.cc:50,1
    - Dst: end
      Src: /src/pdns/pdns/logging.cc:50,1
    - Dst: Entry::values::insert
      Src: /src/pdns/pdns/logging.cc:52,1
    - Dst: auto::_values::begin
      Src: /src/pdns/pdns/logging.cc:52,1
    - Dst: auto::_values::end
      Src: /src/pdns/pdns/logging.cc:52,1
    - Dst: _callback
      Src: /src/pdns/pdns/logging.cc:55,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 3
    argNames:
    - ' msg'
    - prio
    - ' err'
    argTypes:
    - std::string
    - Logr::Priority
    - std::optional<std::string>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 40
    functionDepth: 1
    functionLinenumber: 40
    functionLinenumberEnd: 56
    functionName: Logging::Logger::logMessage
    functionSourceFile: /src/pdns/pdns/logging.cc
    functionUses: 4
    functionsReached:
    - _callback
    - Entry::values::insert
    - end
    - Utility::gettimeofday
    - begin
    - auto::_values::begin
    - auto::_values::end
    linkageType: ''
    returnType: void
    signature: void Logger::logMessage(const std::string& msg, Logr::Priority prio,
      const std::optional<std::string>& err) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Logging::Logger::logMessage
      Src: /src/pdns/pdns/logging.cc:60,1
    - Dst: std::string
      Src: /src/pdns/pdns/logging.cc:60,1
    - Dst: stringerror
      Src: /src/pdns/pdns/logging.cc:60,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - prio
    - err
    - ' msg'
    argTypes:
    - Logr::Priority
    - int
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 58
    functionDepth: 0
    functionLinenumber: 58
    functionLinenumberEnd: 61
    functionName: Logging::Logger::error
    functionSourceFile: /src/pdns/pdns/logging.cc
    functionUses: 0
    functionsReached:
    - Logging::Logger::logMessage
    - stringerror
    - std::string
    linkageType: ''
    returnType: void
    signature: void Logger::error(Logr::Priority prio, int err, const std::string&
      msg) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Logging::Logger::logMessage
      Src: /src/pdns/pdns/logging.cc:65,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - prio
    - ' err'
    - ' msg'
    argTypes:
    - Logr::Priority
    - std::string
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 63
    functionDepth: 0
    functionLinenumber: 63
    functionLinenumberEnd: 66
    functionName: Logging::Logger::error
    functionSourceFile: /src/pdns/pdns/logging.cc
    functionUses: 0
    functionsReached:
    - Logging::Logger::logMessage
    linkageType: ''
    returnType: void
    signature: void Logger::error(Logr::Priority prio, const std::string& err, const
      std::string& msg) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<Logger>
      Src: /src/pdns/pdns/logging.cc:70,1
    - Dst: Logging::Logger::getptr
      Src: /src/pdns/pdns/logging.cc:70,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - level
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 68
    functionDepth: 0
    functionLinenumber: 68
    functionLinenumberEnd: 72
    functionName: Logging::Logger::v
    functionSourceFile: /src/pdns/pdns/logging.cc
    functionUses: 0
    functionsReached:
    - Logging::Logger::getptr
    - std::make_shared<Logger>
    linkageType: ''
    returnType: std::shared_ptr<Logr::Logger>
    signature: std::shared_ptr<Logr::Logger> Logger::v(size_t level) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<Logger>
      Src: /src/pdns/pdns/logging.cc:76,1
    - Dst: Logging::Logger::getptr
      Src: /src/pdns/pdns/logging.cc:76,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ' values'
    argTypes:
    - std::map<std::string, std::string>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 74
    functionDepth: 0
    functionLinenumber: 74
    functionLinenumberEnd: 79
    functionName: Logging::Logger::withValues
    functionSourceFile: /src/pdns/pdns/logging.cc
    functionUses: 0
    functionsReached:
    - Logging::Logger::getptr
    - std::make_shared<Logger>
    linkageType: ''
    returnType: std::shared_ptr<Logr::Logger>
    signature: std::shared_ptr<Logr::Logger> Logger::withValues(const std::map<std::string,
      std::string>& values) const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<Logger>
      Src: /src/pdns/pdns/logging.cc:85,1
    - Dst: Logging::Logger::getptr
      Src: /src/pdns/pdns/logging.cc:85,1
    - Dst: value
      Src: /src/pdns/pdns/logging.cc:85,1
    - Dst: std::make_shared<Logger>
      Src: /src/pdns/pdns/logging.cc:88,1
    - Dst: Logging::Logger::getptr
      Src: /src/pdns/pdns/logging.cc:88,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - ' name'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 81
    functionDepth: 0
    functionLinenumber: 81
    functionLinenumberEnd: 91
    functionName: Logging::Logger::withName
    functionSourceFile: /src/pdns/pdns/logging.cc
    functionUses: 0
    functionsReached:
    - Logging::Logger::getptr
    - std::make_shared<Logger>
    - value
    linkageType: ''
    returnType: std::shared_ptr<Logr::Logger>
    signature: std::shared_ptr<Logr::Logger> Logger::withName(const std::string& name)
      const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<Logger>
      Src: /src/pdns/pdns/logging.cc:94,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - callback
    argTypes:
    - EntryLogger
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 92
    functionDepth: 0
    functionLinenumber: 92
    functionLinenumberEnd: 95
    functionName: Logging::Logger::create
    functionSourceFile: /src/pdns/pdns/logging.cc
    functionUses: 2
    functionsReached:
    - std::make_shared<Logger>
    linkageType: ''
    returnType: std::shared_ptr<Logger>
    signature: std::shared_ptr<Logger> Logger::create(EntryLogger callback)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<Logger>
      Src: /src/pdns/pdns/logging.cc:98,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - callback
    - ' name'
    argTypes:
    - EntryLogger
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 96
    functionDepth: 0
    functionLinenumber: 96
    functionLinenumberEnd: 99
    functionName: Logging::Logger::create
    functionSourceFile: /src/pdns/pdns/logging.cc
    functionUses: 2
    functionsReached:
    - std::make_shared<Logger>
    linkageType: ''
    returnType: std::shared_ptr<Logger>
    signature: std::shared_ptr<Logger> Logger::create(EntryLogger callback, const
      std::string& name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - callback
    argTypes:
    - EntryLogger
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 104
      start: 101
    functionDepth: 0
    functionLinenumber: 101
    functionLinenumberEnd: 104
    functionName: Logging::Logger::Logger
    functionSourceFile: /src/pdns/pdns/logging.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Logger::Logger(EntryLogger callback)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/logging.cc:106,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - callback
    - name
    argTypes:
    - EntryLogger
    - std::optional<std::string>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 105
    functionDepth: 0
    functionLinenumber: 105
    functionLinenumberEnd: 108
    functionName: Logging::Logger::Logger
    functionSourceFile: /src/pdns/pdns/logging.cc
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void Logger::Logger(EntryLogger callback, std::optional<std::string>
      name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/logging.cc:110,1
    - Dst: std::move
      Src: /src/pdns/pdns/logging.cc:110,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 4
    argNames:
    - parent
    - name
    - lvl
    - callback
    argTypes:
    - std::shared_ptr<const Logger>
    - std::optional<std::string>
    - size_t
    - EntryLogger
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 112
      start: 109
    functionDepth: 0
    functionLinenumber: 109
    functionLinenumberEnd: 112
    functionName: Logging::Logger::Logger
    functionSourceFile: /src/pdns/pdns/logging.cc
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void Logger::Logger(std::shared_ptr<const Logger> parent, std::optional<std::string>
      name, size_t lvl, EntryLogger callback)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 114
    functionDepth: 0
    functionLinenumber: 114
    functionLinenumberEnd: 114
    functionName: Logger::~Logger()
    functionSourceFile: /src/pdns/pdns/logging.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Logger::~Logger()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: std::scoped_lock
      Src: /src/pdns/pdns/logging.cc:125,1
    - Dst: strftime
      Src: /src/pdns/pdns/logging.cc:128,1
    - Dst: data
      Src: /src/pdns/pdns/logging.cc:128,1
    - Dst: size
      Src: /src/pdns/pdns/logging.cc:128,1
    - Dst: c_str
      Src: /src/pdns/pdns/logging.cc:128,1
    - Dst: localtime_r
      Src: /src/pdns/pdns/logging.cc:128,1
    - Dst: snprintf
      Src: /src/pdns/pdns/logging.cc:131,1
    - Dst: data
      Src: /src/pdns/pdns/logging.cc:131,1
    - Dst: size
      Src: /src/pdns/pdns/logging.cc:131,1
    - Dst: static_cast<long long>
      Src: /src/pdns/pdns/logging.cc:131,1
    - Dst: snprintf
      Src: /src/pdns/pdns/logging.cc:134,1
    - Dst: at
      Src: /src/pdns/pdns/logging.cc:134,1
    - Dst: size
      Src: /src/pdns/pdns/logging.cc:134,1
    - Dst: static_cast<long>
      Src: /src/pdns/pdns/logging.cc:134,1
    - Dst: data
      Src: /src/pdns/pdns/logging.cc:135,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 3
    argNames:
    - ' tval'
    - ' buf'
    - ' format'
    argTypes:
    - struct timeval
    - std::array<char, 64>
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 136
      start: 119
    functionDepth: 0
    functionLinenumber: 119
    functionLinenumberEnd: 136
    functionName: Logging::toTimestampStringMilli
    functionSourceFile: /src/pdns/pdns/logging.cc
    functionUses: 2
    functionsReached:
    - strftime
    - snprintf
    - localtime_r
    - c_str
    - static_cast<long long>
    - size
    - static_cast<long>
    - data
    - std::scoped_lock
    - at
    linkageType: ''
    returnType: char
    signature: char * Logging::toTimestampStringMilli(const struct timeval& tval,
      std::array<char, 64>& buf, const std::string& format)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: encryptCA
      Src: /src/pdns/pdns/test-ipcrypt_cc.cc:24,1
    - Dst: decryptCA
      Src: /src/pdns/pdns/test-ipcrypt_cc.cc:26,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-ipcrypt_cc.cc:27,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/test-ipcrypt_cc.cc:27,1
    - Dst: auto::toString
      Src: /src/pdns/pdns/test-ipcrypt_cc.cc:27,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 28
      start: 20
    functionDepth: 0
    functionLinenumber: 20
    functionLinenumberEnd: 28
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-ipcrypt_cc.cc
    functionUses: 0
    functionsReached:
    - BOOST_CHECK_EQUAL
    - decryptCA
    - auto::toString
    - ComboAddress::toString
    - encryptCA
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_ipcrypt4)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: encryptCA
      Src: /src/pdns/pdns/test-ipcrypt_cc.cc:40,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-ipcrypt_cc.cc:40,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-ipcrypt_cc.cc:41,1
    - Dst: auto::toString
      Src: /src/pdns/pdns/test-ipcrypt_cc.cc:41,1
    - Dst: decryptCA
      Src: /src/pdns/pdns/test-ipcrypt_cc.cc:42,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-ipcrypt_cc.cc:43,1
    - Dst: auto::toString
      Src: /src/pdns/pdns/test-ipcrypt_cc.cc:43,1
    - Dst: string::append
      Src: /src/pdns/pdns/test-ipcrypt_cc.cc:52,1
    - Dst: encryptCA
      Src: /src/pdns/pdns/test-ipcrypt_cc.cc:56,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-ipcrypt_cc.cc:64,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/test-ipcrypt_cc.cc:64,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/test-ipcrypt_cc.cc:64,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 30
    functionDepth: 0
    functionLinenumber: 30
    functionLinenumberEnd: 65
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-ipcrypt_cc.cc
    functionUses: 0
    functionsReached:
    - string::append
    - BOOST_CHECK_EQUAL
    - auto::toString
    - decryptCA
    - ComboAddress::toString
    - encryptCA
    - ComboAddress
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_ipcrypt4_vector)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: encryptCA
      Src: /src/pdns/pdns/test-ipcrypt_cc.cc:71,1
    - Dst: decryptCA
      Src: /src/pdns/pdns/test-ipcrypt_cc.cc:73,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-ipcrypt_cc.cc:74,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/test-ipcrypt_cc.cc:74,1
    - Dst: auto::toString
      Src: /src/pdns/pdns/test-ipcrypt_cc.cc:74,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 67
    functionDepth: 0
    functionLinenumber: 67
    functionLinenumberEnd: 75
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-ipcrypt_cc.cc
    functionUses: 0
    functionsReached:
    - BOOST_CHECK_EQUAL
    - decryptCA
    - auto::toString
    - ComboAddress::toString
    - encryptCA
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_ipcrypt6)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: time
      Src: /src/pdns/pdns/auth-packetcache.cc:33,1
    - Dst: declare
      Src: /src/pdns/pdns/auth-packetcache.cc:35,1
    - Dst: declare
      Src: /src/pdns/pdns/auth-packetcache.cc:36,1
    - Dst: declare
      Src: /src/pdns/pdns/auth-packetcache.cc:37,1
    - Dst: declare
      Src: /src/pdns/pdns/auth-packetcache.cc:38,1
    - Dst: declare
      Src: /src/pdns/pdns/auth-packetcache.cc:39,1
    - Dst: getPointer
      Src: /src/pdns/pdns/auth-packetcache.cc:41,1
    - Dst: getPointer
      Src: /src/pdns/pdns/auth-packetcache.cc:42,1
    - Dst: getPointer
      Src: /src/pdns/pdns/auth-packetcache.cc:43,1
    - Dst: write_lock
      Src: /src/pdns/pdns/auth-packetcache.cc:46,1
    - Dst: AuthPacketCache::createViewMap
      Src: /src/pdns/pdns/auth-packetcache.cc:48,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 1
    argNames:
    - mapsCount
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 33
    functionDepth: 1
    functionLinenumber: 33
    functionLinenumberEnd: 49
    functionName: AuthPacketCache::AuthPacketCache
    functionSourceFile: /src/pdns/pdns/auth-packetcache.cc
    functionUses: 0
    functionsReached:
    - declare
    - getPointer
    - time
    - AuthPacketCache::createViewMap
    - write_lock
    linkageType: ''
    returnType: void
    signature: void AuthPacketCache::AuthPacketCache(size_t mapsCount)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: emplace
      Src: /src/pdns/pdns/auth-packetcache.cc:56,1
    - Dst: std::make_unique<vector<MapCombo>>
      Src: /src/pdns/pdns/auth-packetcache.cc:56,1
    - Dst: auto::second::get
      Src: /src/pdns/pdns/auth-packetcache.cc:58,1
    - Dst: reserve
      Src: /src/pdns/pdns/auth-packetcache.cc:62,1
    - Dst: auto*::size
      Src: /src/pdns/pdns/auth-packetcache.cc:62,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - ' cache'
    - ' view'
    argTypes:
    - cache_t
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 54
    functionDepth: 0
    functionLinenumber: 54
    functionLinenumberEnd: 65
    functionName: AuthPacketCache::createViewMap
    functionSourceFile: /src/pdns/pdns/auth-packetcache.cc
    functionUses: 1
    functionsReached:
    - std::make_unique<vector<MapCombo>>
    - auto*::size
    - reserve
    - emplace
    - auto::second::get
    linkageType: ''
    returnType: std::unordered_map<std::string, std::unique_ptr<vector<AuthPacketCache::MapCombo>>>::iterator
    signature: std::unordered_map<std::string, std::unique_ptr<vector<AuthPacketCache::MapCombo>>>::iterator
      AuthPacketCache::createViewMap(cache_t& cache, const std::string& view)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: write_lock
      Src: /src/pdns/pdns/auth-packetcache.cc:70,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - numberOfEntries
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 67
    functionDepth: 0
    functionLinenumber: 67
    functionLinenumberEnd: 72
    functionName: AuthPacketCache::MapCombo::reserve(size_t numberOfEntries)
    functionSourceFile: /src/pdns/pdns/auth-packetcache.cc
    functionUses: 0
    functionsReached:
    - write_lock
    linkageType: ''
    returnType: void
    signature: void AuthPacketCache::MapCombo::reserve(size_t numberOfEntries)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: AuthPacketCache::cleanupIfNeeded
      Src: /src/pdns/pdns/auth-packetcache.cc:80,1
    - Dst: canHashPacket
      Src: /src/pdns/pdns/auth-packetcache.cc:83,1
    - Dst: getString
      Src: /src/pdns/pdns/auth-packetcache.cc:83,1
    - Dst: setHash
      Src: /src/pdns/pdns/auth-packetcache.cc:84,1
    - Dst: time
      Src: /src/pdns/pdns/auth-packetcache.cc:88,1
    - Dst: read_lock
      Src: /src/pdns/pdns/auth-packetcache.cc:90,1
    - Dst: auto::find
      Src: /src/pdns/pdns/auth-packetcache.cc:91,1
    - Dst: auto::end
      Src: /src/pdns/pdns/auth-packetcache.cc:92,1
    - Dst: getMap
      Src: /src/pdns/pdns/auth-packetcache.cc:97,1
    - Dst: d_map::try_read_lock
      Src: /src/pdns/pdns/auth-packetcache.cc:99,1
    - Dst: auto::owns_lock
      Src: /src/pdns/pdns/auth-packetcache.cc:100,1
    - Dst: inc
      Src: /src/pdns/pdns/auth-packetcache.cc:101,1
    - Dst: AuthPacketCache::getEntryLocked
      Src: /src/pdns/pdns/auth-packetcache.cc:105,1
    - Dst: getString
      Src: /src/pdns/pdns/auth-packetcache.cc:105,1
    - Dst: qtype::getCode
      Src: /src/pdns/pdns/auth-packetcache.cc:105,1
    - Dst: noparse
      Src: /src/pdns/pdns/auth-packetcache.cc:114,1
    - Dst: string::c_str
      Src: /src/pdns/pdns/auth-packetcache.cc:114,1
    - Dst: string::size
      Src: /src/pdns/pdns/auth-packetcache.cc:114,1
    - Dst: spoofQuestion
      Src: /src/pdns/pdns/auth-packetcache.cc:119,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 29
    argCount: 3
    argNames:
    - ' pkt'
    - ' cached'
    - ' view'
    argTypes:
    - DNSPacket
    - DNSPacket
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 124
      start: 74
    functionDepth: 1
    functionLinenumber: 74
    functionLinenumberEnd: 124
    functionName: AuthPacketCache::get
    functionSourceFile: /src/pdns/pdns/auth-packetcache.cc
    functionUses: 0
    functionsReached:
    - canHashPacket
    - AuthPacketCache::getEntryLocked
    - noparse
    - string::c_str
    - string::size
    - auto::end
    - time
    - inc
    - AuthPacketCache::cleanupIfNeeded
    - read_lock
    - getMap
    - auto::owns_lock
    - qtype::getCode
    - setHash
    - getString
    - auto::find
    - d_map::try_read_lock
    - spoofQuestion
    linkageType: ''
    returnType: bool
    signature: bool AuthPacketCache::get(DNSPacket& pkt, DNSPacket& cached, const
      std::string& view)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: queryMatches
      Src: /src/pdns/pdns/auth-packetcache.cc:129,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 2
    argCount: 5
    argNames:
    - ' iter'
    - ' query'
    - ' qname'
    - qtype
    - tcp
    argTypes:
    - cmap_t::index<HashTag>::type::iterator
    - std::string
    - DNSName
    - uint16_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 130
      start: 126
    functionDepth: 0
    functionLinenumber: 126
    functionLinenumberEnd: 130
    functionName: AuthPacketCache::entryMatches
    functionSourceFile: /src/pdns/pdns/auth-packetcache.cc
    functionUses: 0
    functionsReached:
    - queryMatches
    linkageType: ''
    returnType: bool
    signature: bool AuthPacketCache::entryMatches(cmap_t::index<HashTag>::type::iterator&
      iter, const std::string& query, const DNSName& qname, uint16_t qtype, bool tcp)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: AuthPacketCache::cleanupIfNeeded
      Src: /src/pdns/pdns/auth-packetcache.cc:138,1
    - Dst: ntohs
      Src: /src/pdns/pdns/auth-packetcache.cc:140,1
    - Dst: std::min
      Src: /src/pdns/pdns/auth-packetcache.cc:148,1
    - Dst: getHash
      Src: /src/pdns/pdns/auth-packetcache.cc:153,1
    - Dst: time
      Src: /src/pdns/pdns/auth-packetcache.cc:154,1
    - Dst: qtype::getCode
      Src: /src/pdns/pdns/auth-packetcache.cc:160,1
    - Dst: getString
      Src: /src/pdns/pdns/auth-packetcache.cc:161,1
    - Dst: getString
      Src: /src/pdns/pdns/auth-packetcache.cc:163,1
    - Dst: write_lock
      Src: /src/pdns/pdns/auth-packetcache.cc:166,1
    - Dst: auto::find
      Src: /src/pdns/pdns/auth-packetcache.cc:167,1
    - Dst: auto::end
      Src: /src/pdns/pdns/auth-packetcache.cc:168,1
    - Dst: AuthPacketCache::createViewMap
      Src: /src/pdns/pdns/auth-packetcache.cc:170,1
    - Dst: getMap
      Src: /src/pdns/pdns/auth-packetcache.cc:172,1
    - Dst: d_map::try_write_lock
      Src: /src/pdns/pdns/auth-packetcache.cc:174,1
    - Dst: auto::owns_lock
      Src: /src/pdns/pdns/auth-packetcache.cc:175,1
    - Dst: inc
      Src: /src/pdns/pdns/auth-packetcache.cc:176,1
    - Dst: auto::get
      Src: /src/pdns/pdns/auth-packetcache.cc:180,1
    - Dst: equal_range
      Src: /src/pdns/pdns/auth-packetcache.cc:181,1
    - Dst: AuthPacketCache::entryMatches
      Src: /src/pdns/pdns/auth-packetcache.cc:185,1
    - Dst: moveCacheItemToBack
      Src: /src/pdns/pdns/auth-packetcache.cc:189,1
    - Dst: auto::insert
      Src: /src/pdns/pdns/auth-packetcache.cc:197,1
    - Dst: std::move
      Src: /src/pdns/pdns/auth-packetcache.cc:197,1
    - Dst: auto::get
      Src: /src/pdns/pdns/auth-packetcache.cc:201,1
    - Dst: pop_front
      Src: /src/pdns/pdns/auth-packetcache.cc:202,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 47
    argCount: 4
    argNames:
    - ' query'
    - ' response'
    - maxTTL
    - ' view'
    argTypes:
    - DNSPacket
    - DNSPacket
    - unsigned int
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 209
      start: 132
    functionDepth: 1
    functionLinenumber: 132
    functionLinenumberEnd: 209
    functionName: AuthPacketCache::insert
    functionSourceFile: /src/pdns/pdns/auth-packetcache.cc
    functionUses: 0
    functionsReached:
    - ntohs
    - auto::owns_lock
    - time
    - getString
    - auto::get
    - AuthPacketCache::createViewMap
    - getMap
    - qtype::getCode
    - moveCacheItemToBack
    - pop_front
    - auto::insert
    - AuthPacketCache::entryMatches
    - auto::find
    - std::move
    - std::min
    - inc
    - equal_range
    - AuthPacketCache::cleanupIfNeeded
    - getHash
    - write_lock
    - d_map::try_write_lock
    - auto::end
    linkageType: ''
    returnType: void
    signature: void AuthPacketCache::insert(DNSPacket& query, DNSPacket& response,
      unsigned int maxTTL, const std::string& view)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: AuthPacketCache::get
      Src: /src/pdns/pdns/auth-packetcache.cc:213,1
    - Dst: equal_range
      Src: /src/pdns/pdns/auth-packetcache.cc:214,1
    - Dst: AuthPacketCache::entryMatches
      Src: /src/pdns/pdns/auth-packetcache.cc:221,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 8
    argNames:
    - ' map'
    - ' query'
    - hash
    - qname
    - qtype
    - tcp
    - now
    - ' value'
    argTypes:
    - cmap_t
    - std::string
    - uint32_t
    - DNSName
    - uint16_t
    - bool
    - time_t
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 229
      start: 211
    functionDepth: 1
    functionLinenumber: 211
    functionLinenumberEnd: 229
    functionName: AuthPacketCache::getEntryLocked
    functionSourceFile: /src/pdns/pdns/auth-packetcache.cc
    functionUses: 1
    functionsReached:
    - AuthPacketCache::get
    - equal_range
    - AuthPacketCache::entryMatches
    linkageType: ''
    returnType: bool
    signature: bool AuthPacketCache::getEntryLocked(const cmap_t& map, const std::string&
      query, uint32_t hash, const DNSName &qname, uint16_t qtype, bool tcp, time_t
      now, string& value)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: store
      Src: /src/pdns/pdns/auth-packetcache.cc:238,1
    - Dst: write_lock
      Src: /src/pdns/pdns/auth-packetcache.cc:242,1
    - Dst: second::get
      Src: /src/pdns/pdns/auth-packetcache.cc:244,1
    - Dst: purgeLockedCollectionsVector
      Src: /src/pdns/pdns/auth-packetcache.cc:245,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 249
      start: 232
    functionDepth: 0
    functionLinenumber: 232
    functionLinenumberEnd: 249
    functionName: AuthPacketCache::purge
    functionSourceFile: /src/pdns/pdns/auth-packetcache.cc
    functionUses: 0
    functionsReached:
    - second::get
    - store
    - write_lock
    - purgeLockedCollectionsVector
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t AuthPacketCache::purge()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: write_lock
      Src: /src/pdns/pdns/auth-packetcache.cc:256,1
    - Dst: getMap
      Src: /src/pdns/pdns/auth-packetcache.cc:258,1
    - Dst: purgeExactLockedCollection
      Src: /src/pdns/pdns/auth-packetcache.cc:259,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - ' qname'
    argTypes:
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 266
      start: 251
    functionDepth: 1
    functionLinenumber: 251
    functionLinenumberEnd: 266
    functionName: AuthPacketCache::purgeExact
    functionSourceFile: /src/pdns/pdns/auth-packetcache.cc
    functionUses: 0
    functionsReached:
    - purgeExactLockedCollection
    - getMap
    - write_lock
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t AuthPacketCache::purgeExact(const DNSName& qname)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: write_lock
      Src: /src/pdns/pdns/auth-packetcache.cc:273,1
    - Dst: auto::find
      Src: /src/pdns/pdns/auth-packetcache.cc:274,1
    - Dst: auto::end
      Src: /src/pdns/pdns/auth-packetcache.cc:274,1
    - Dst: auto::second::get
      Src: /src/pdns/pdns/auth-packetcache.cc:275,1
    - Dst: purgeLockedCollectionsVector
      Src: /src/pdns/pdns/auth-packetcache.cc:276,1
    - Dst: auto::erase
      Src: /src/pdns/pdns/auth-packetcache.cc:277,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - ' view'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 284
      start: 268
    functionDepth: 0
    functionLinenumber: 268
    functionLinenumberEnd: 284
    functionName: AuthPacketCache::purgeView
    functionSourceFile: /src/pdns/pdns/auth-packetcache.cc
    functionUses: 0
    functionsReached:
    - purgeLockedCollectionsVector
    - write_lock
    - auto::end
    - auto::erase
    - auto::find
    - auto::second::get
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t AuthPacketCache::purgeView(const std::string& view)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: boost::ends_with
      Src: /src/pdns/pdns/auth-packetcache.cc:295,1
    - Dst: write_lock
      Src: /src/pdns/pdns/auth-packetcache.cc:297,1
    - Dst: second::get
      Src: /src/pdns/pdns/auth-packetcache.cc:299,1
    - Dst: purgeLockedCollectionsVector
      Src: /src/pdns/pdns/auth-packetcache.cc:300,1
    - Dst: AuthPacketCache::purgeExact
      Src: /src/pdns/pdns/auth-packetcache.cc:306,1
    - Dst: DNSName
      Src: /src/pdns/pdns/auth-packetcache.cc:306,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 1
    argNames:
    - match
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 310
      start: 287
    functionDepth: 2
    functionLinenumber: 287
    functionLinenumberEnd: 310
    functionName: AuthPacketCache::purge
    functionSourceFile: /src/pdns/pdns/auth-packetcache.cc
    functionUses: 0
    functionsReached:
    - AuthPacketCache::purgeExact
    - second::get
    - purgeLockedCollectionsVector
    - DNSName
    - write_lock
    - boost::ends_with
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t AuthPacketCache::purge(const string &match)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: write_lock
      Src: /src/pdns/pdns/auth-packetcache.cc:321,1
    - Dst: auto::find
      Src: /src/pdns/pdns/auth-packetcache.cc:322,1
    - Dst: auto::end
      Src: /src/pdns/pdns/auth-packetcache.cc:322,1
    - Dst: boost::ends_with
      Src: /src/pdns/pdns/auth-packetcache.cc:323,1
    - Dst: auto::second::get
      Src: /src/pdns/pdns/auth-packetcache.cc:324,1
    - Dst: purgeLockedCollectionsVector
      Src: /src/pdns/pdns/auth-packetcache.cc:325,1
    - Dst: getMap
      Src: /src/pdns/pdns/auth-packetcache.cc:329,1
    - Dst: purgeExactLockedCollection
      Src: /src/pdns/pdns/auth-packetcache.cc:330,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 2
    argNames:
    - ' view'
    - ' match'
    argTypes:
    - std::string
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 338
      start: 312
    functionDepth: 1
    functionLinenumber: 312
    functionLinenumberEnd: 338
    functionName: AuthPacketCache::purge
    functionSourceFile: /src/pdns/pdns/auth-packetcache.cc
    functionUses: 0
    functionsReached:
    - purgeLockedCollectionsVector
    - getMap
    - purgeExactLockedCollection
    - write_lock
    - auto::end
    - boost::ends_with
    - auto::find
    - auto::second::get
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t AuthPacketCache::purge(const std::string& view, const std::string&
      match)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: write_lock
      Src: /src/pdns/pdns/auth-packetcache.cc:344,1
    - Dst: second::get
      Src: /src/pdns/pdns/auth-packetcache.cc:346,1
    - Dst: pruneLockedCollectionsVector
      Src: /src/pdns/pdns/auth-packetcache.cc:347,1
    - Dst: DLOG
      Src: /src/pdns/pdns/auth-packetcache.cc:352,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-packetcache.cc:352,1
    - Dst: info
      Src: /src/pdns/pdns/auth-packetcache.cc:353,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-packetcache.cc:353,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-packetcache.cc:353,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 354
      start: 340
    functionDepth: 0
    functionLinenumber: 340
    functionLinenumberEnd: 354
    functionName: AuthPacketCache::cleanup
    functionSourceFile: /src/pdns/pdns/auth-packetcache.cc
    functionUses: 0
    functionsReached:
    - SLOG
    - Logging::Loggable
    - second::get
    - pruneLockedCollectionsVector
    - info
    - write_lock
    - DLOG
    linkageType: ''
    returnType: void
    signature: void AuthPacketCache::cleanup()
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: time
      Src: /src/pdns/pdns/auth-packetcache.cc:368,1
    - Dst: max
      Src: /src/pdns/pdns/auth-packetcache.cc:369,1
    - Dst: DLOG
      Src: /src/pdns/pdns/auth-packetcache.cc:371,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-packetcache.cc:371,1
    - Dst: info
      Src: /src/pdns/pdns/auth-packetcache.cc:372,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-packetcache.cc:372,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-packetcache.cc:372,1
    - Dst: DLOG
      Src: /src/pdns/pdns/auth-packetcache.cc:378,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-packetcache.cc:378,1
    - Dst: info
      Src: /src/pdns/pdns/auth-packetcache.cc:379,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-packetcache.cc:379,1
    - Dst: std::max
      Src: /src/pdns/pdns/auth-packetcache.cc:386,1
    - Dst: std::min
      Src: /src/pdns/pdns/auth-packetcache.cc:387,1
    - Dst: DLOG
      Src: /src/pdns/pdns/auth-packetcache.cc:389,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-packetcache.cc:389,1
    - Dst: info
      Src: /src/pdns/pdns/auth-packetcache.cc:390,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-packetcache.cc:390,1
    - Dst: AuthPacketCache::cleanup
      Src: /src/pdns/pdns/auth-packetcache.cc:397,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 21
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 399
      start: 365
    functionDepth: 1
    functionLinenumber: 365
    functionLinenumberEnd: 399
    functionName: AuthPacketCache::cleanupIfNeeded
    functionSourceFile: /src/pdns/pdns/auth-packetcache.cc
    functionUses: 2
    functionsReached:
    - max
    - SLOG
    - Logging::Loggable
    - time
    - std::min
    - AuthPacketCache::cleanup
    - info
    - DLOG
    - std::max
    linkageType: ''
    returnType: void
    signature: void AuthPacketCache::cleanupIfNeeded()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 61
    functionDepth: 0
    functionLinenumber: 61
    functionLinenumberEnd: 61
    functionName: PacketHandler::numRunning
    functionSourceFile: /src/pdns/pdns/packethandler.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int numRunning()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: arc4random_uniform
      Src: /src/pdns/pdns/dns_random.hh:31,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - upper_bound
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 32
      start: 29
    functionDepth: 0
    functionLinenumber: 29
    functionLinenumberEnd: 32
    functionName: dns_random
    functionSourceFile: /src/pdns/pdns/dns_random.hh
    functionUses: 4
    functionsReached:
    - arc4random_uniform
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t dns_random(uint32_t upper_bound)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: arc4random
      Src: /src/pdns/pdns/dns_random.hh:36,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 34
    functionDepth: 0
    functionLinenumber: 34
    functionLinenumberEnd: 37
    functionName: dns_random_uint32
    functionSourceFile: /src/pdns/pdns/dns_random.hh
    functionUses: 3
    functionsReached:
    - arc4random
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t dns_random_uint32()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: arc4random
      Src: /src/pdns/pdns/dns_random.hh:41,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 39
    functionDepth: 0
    functionLinenumber: 39
    functionLinenumberEnd: 42
    functionName: dns_random_uint16
    functionSourceFile: /src/pdns/pdns/dns_random.hh
    functionUses: 3
    functionsReached:
    - arc4random
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t dns_random_uint16()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: arc4random_buf
      Src: /src/pdns/pdns/dns_random.hh:46,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - buf
    - size
    argTypes:
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 44
    functionDepth: 0
    functionLinenumber: 44
    functionLinenumberEnd: 47
    functionName: dns_random
    functionSourceFile: /src/pdns/pdns/dns_random.hh
    functionUses: 4
    functionsReached:
    - arc4random_buf
    linkageType: ''
    returnType: void
    signature: void dns_random(void* buf, size_t size)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 56
    functionDepth: 0
    functionLinenumber: 56
    functionLinenumberEnd: 59
    functionName: pdns::min
    functionSourceFile: /src/pdns/pdns/dns_random.hh
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: result_type
    signature: result_type min()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::max
      Src: /src/pdns/pdns/dns_random.hh:63,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 61
    functionDepth: 0
    functionLinenumber: 61
    functionLinenumberEnd: 64
    functionName: pdns::max
    functionSourceFile: /src/pdns/pdns/dns_random.hh
    functionUses: 3
    functionsReached:
    - pdns::max
    linkageType: ''
    returnType: result_type
    signature: result_type max()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dns_random_uint32
      Src: /src/pdns/pdns/dns_random.hh:68,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 66
    functionDepth: 0
    functionLinenumber: 66
    functionLinenumberEnd: 69
    functionName: operator()()
    functionSourceFile: /src/pdns/pdns/dns_random.hh
    functionUses: 0
    functionsReached:
    - dns_random_uint32
    linkageType: ''
    returnType: result_type
    signature: result_type operator()()
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - upper_bound
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 73
    functionDepth: 0
    functionLinenumber: 73
    functionLinenumberEnd: 96
    functionName: pdns::random_minimum_acceptable_value
    functionSourceFile: /src/pdns/pdns/dns_random.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int random_minimum_acceptable_value(uint32_t upper_bound)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 56
    functionDepth: 0
    functionLinenumber: 56
    functionLinenumberEnd: 59
    functionName: pdns::min
    functionSourceFile: /src/pdns/pdns/dns_random.hh
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: result_type
    signature: result_type min()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::max
      Src: /src/pdns/pdns/dns_random.hh:63,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 61
    functionDepth: 0
    functionLinenumber: 61
    functionLinenumberEnd: 64
    functionName: pdns::max
    functionSourceFile: /src/pdns/pdns/dns_random.hh
    functionUses: 4
    functionsReached:
    - pdns::max
    linkageType: ''
    returnType: result_type
    signature: result_type max()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dns_random_uint32
      Src: /src/pdns/pdns/dns_random.hh:68,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 66
    functionDepth: 0
    functionLinenumber: 66
    functionLinenumberEnd: 69
    functionName: operator()()
    functionSourceFile: /src/pdns/pdns/dns_random.hh
    functionUses: 0
    functionsReached:
    - dns_random_uint32
    linkageType: ''
    returnType: result_type
    signature: result_type operator()()
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - upper_bound
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 73
    functionDepth: 0
    functionLinenumber: 73
    functionLinenumberEnd: 96
    functionName: pdns::random_minimum_acceptable_value
    functionSourceFile: /src/pdns/pdns/dns_random.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int random_minimum_acceptable_value(uint32_t upper_bound)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ArgvMap::ArgvMap
      Src: /src/pdns/pdns/dnsscope.cc:59,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 57
    functionDepth: 0
    functionLinenumber: 57
    functionLinenumberEnd: 61
    functionName: arg
    functionSourceFile: /src/pdns/pdns/dnsscope.cc
    functionUses: 20
    functionsReached:
    - ArgvMap::ArgvMap
    linkageType: ''
    returnType: ArgvMap
    signature: ArgvMap & arg()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 68
    functionDepth: 0
    functionLinenumber: 68
    functionLinenumberEnd: 71
    functionName: QuestionData
    functionSourceFile: /src/pdns/pdns/dnsscope.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void QuestionData()
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 82
    functionDepth: 0
    functionLinenumber: 82
    functionLinenumberEnd: 92
    functionName: liveQuestions
    functionSourceFile: /src/pdns/pdns/dnsscope.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int liveQuestions()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 100
    functionDepth: 0
    functionLinenumber: 100
    functionLinenumberEnd: 103
    functionName: LiveCounts
    functionSourceFile: /src/pdns/pdns/dnsscope.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void LiveCounts()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - LiveCounts
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 112
      start: 105
    functionDepth: 0
    functionLinenumber: 105
    functionLinenumberEnd: 112
    functionName: operator-(const LiveCounts& rhs)
    functionSourceFile: /src/pdns/pdns/dnsscope.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: LiveCounts
    signature: LiveCounts operator-(const LiveCounts& rhs)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: StatNode*::size
      Src: /src/pdns/pdns/dnsscope.cc:119,1
    - Dst: StatNode*::size
      Src: /src/pdns/pdns/dnsscope.cc:122,1
    - Dst: remotes::size
      Src: /src/pdns/pdns/dnsscope.cc:123,1
    - Dst: StatNode*::size
      Src: /src/pdns/pdns/dnsscope.cc:123,1
    - Dst: first::toString
      Src: /src/pdns/pdns/dnsscope.cc:126,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 2
    argNames:
    - node
    - ' childstat'
    argTypes:
    - StatNode*
    - StatNode::Stat
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 129
      start: 115
    functionDepth: 0
    functionLinenumber: 115
    functionLinenumberEnd: 129
    functionName: visitor
    functionSourceFile: /src/pdns/pdns/dnsscope.cc
    functionUses: 1
    functionsReached:
    - first::toString
    - StatNode*::size
    - remotes::size
    linkageType: ''
    returnType: void
    signature: void visitor(const StatNode* node, const StatNode::Stat& /* selfstat
      */, const StatNode::Stat& childstat)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<suseconds_t>
      Src: /src/pdns/pdns/dnsscope.cc:133,1
    - Dst: static_cast<suseconds_t>
      Src: /src/pdns/pdns/dnsscope.cc:133,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' lhs'
    - ' rhs'
    argTypes:
    - struct pdns_timeval
    - struct pdns_timeval
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 135
      start: 131
    functionDepth: 0
    functionLinenumber: 131
    functionLinenumberEnd: 135
    functionName: operator-(const struct pdns_timeval& lhs, const struct pdns_timeval&
      rhs)
    functionSourceFile: /src/pdns/pdns/dnsscope.cc
    functionUses: 0
    functionsReached:
    - static_cast<suseconds_t>
    linkageType: ''
    returnType: struct timeval
    signature: struct timeval operator-(const struct pdns_timeval& lhs, const struct
      pdns_timeval& rhs)
  - BBCount: 53
    BranchProfiles: []
    Callsites:
    - Dst: po::options_description::add_options
      Src: /src/pdns/pdns/dnsscope.cc:142,1
    - Dst: po::value<bool>
      Src: /src/pdns/pdns/dnsscope.cc:145,1
    - Dst: po::value<bool>
      Src: /src/pdns/pdns/dnsscope.cc:146,1
    - Dst: po::value<bool>
      Src: /src/pdns/pdns/dnsscope.cc:147,1
    - Dst: po::value<double>
      Src: /src/pdns/pdns/dnsscope.cc:149,1
    - Dst: po::value<string>
      Src: /src/pdns/pdns/dnsscope.cc:150,1
    - Dst: po::value<string>
      Src: /src/pdns/pdns/dnsscope.cc:151,1
    - Dst: po::value<uint16_t>
      Src: /src/pdns/pdns/dnsscope.cc:153,1
    - Dst: po::value<string>
      Src: /src/pdns/pdns/dnsscope.cc:155,1
    - Dst: po::value<string>
      Src: /src/pdns/pdns/dnsscope.cc:156,1
    - Dst: add_options
      Src: /src/pdns/pdns/dnsscope.cc:159,1
    - Dst: po::value<vector<string> >
      Src: /src/pdns/pdns/dnsscope.cc:160,1
    - Dst: add
      Src: /src/pdns/pdns/dnsscope.cc:162,1
    - Dst: po::positional_options_description::add
      Src: /src/pdns/pdns/dnsscope.cc:165,1
    - Dst: pdns::stat_t_trait::store
      Src: /src/pdns/pdns/dnsscope.cc:167,1
    - Dst: po::command_line_parser
      Src: /src/pdns/pdns/dnsscope.cc:167,1
    - Dst: pdns::channel::Notifier::notify
      Src: /src/pdns/pdns/dnsscope.cc:168,1
    - Dst: count
      Src: /src/pdns/pdns/dnsscope.cc:171,1
    - Dst: as
      Src: /src/pdns/pdns/dnsscope.cc:172,1
    - Dst: count
      Src: /src/pdns/pdns/dnsscope.cc:174,1
    - Dst: exit
      Src: /src/pdns/pdns/dnsscope.cc:176,1
    - Dst: vector::empty
      Src: /src/pdns/pdns/dnsscope.cc:179,1
    - Dst: count
      Src: /src/pdns/pdns/dnsscope.cc:179,1
    - Dst: exit
      Src: /src/pdns/pdns/dnsscope.cc:182,1
    - Dst: DNSName::DNSName
      Src: /src/pdns/pdns/dnsscope.cc:185,1
    - Dst: count
      Src: /src/pdns/pdns/dnsscope.cc:186,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsscope.cc:187,1
    - Dst: as
      Src: /src/pdns/pdns/dnsscope.cc:187,1
    - Dst: count
      Src: /src/pdns/pdns/dnsscope.cc:192,1
    - Dst: count
      Src: /src/pdns/pdns/dnsscope.cc:195,1
    - Dst: as
      Src: /src/pdns/pdns/dnsscope.cc:196,1
    - Dst: as
      Src: /src/pdns/pdns/dnsscope.cc:203,1
    - Dst: as
      Src: /src/pdns/pdns/dnsscope.cc:204,1
    - Dst: count
      Src: /src/pdns/pdns/dnsscope.cc:205,1
    - Dst: count
      Src: /src/pdns/pdns/dnsscope.cc:206,1
    - Dst: as
      Src: /src/pdns/pdns/dnsscope.cc:235,1
    - Dst: reportAllTypes
      Src: /src/pdns/pdns/dnsscope.cc:237,1
    - Dst: vector::size
      Src: /src/pdns/pdns/dnsscope.cc:239,1
    - Dst: as
      Src: /src/pdns/pdns/dnsscope.cc:242,1
    - Dst: std::make_unique<PcapPacketWriter>
      Src: /src/pdns/pdns/dnsscope.cc:243,1
    - Dst: as
      Src: /src/pdns/pdns/dnsscope.cc:243,1
    - Dst: PcapPacketReader::getUDPPacket
      Src: /src/pdns/pdns/dnsscope.cc:246,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsscope.cc:254,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsscope.cc:254,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsscope.cc:261,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsscope.cc:261,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsscope.cc:262,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsscope.cc:262,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsscope.cc:274,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsscope.cc:283,1
    - Dst: DNSName::empty
      Src: /src/pdns/pdns/dnsscope.cc:290,1
    - Dst: DNSName::isPartOf
      Src: /src/pdns/pdns/dnsscope.cc:290,1
    - Dst: getEDNSUDPPayloadSizeAndZ
      Src: /src/pdns/pdns/dnsscope.cc:297,1
    - Dst: liveQuestions
      Src: /src/pdns/pdns/dnsscope.cc:318,1
    - Dst: pcounts_t::emplace_back
      Src: /src/pdns/pdns/dnsscope.cc:321,1
    - Dst: min
      Src: /src/pdns/pdns/dnsscope.cc:327,1
    - Dst: max
      Src: /src/pdns/pdns/dnsscope.cc:329,1
    - Dst: Logging::Logger::create
      Src: /src/pdns/pdns/dnsscope.cc:331,1
    - Dst: PcapPacketReader::getSource
      Src: /src/pdns/pdns/dnsscope.cc:331,1
    - Dst: PcapPacketReader::getDest
      Src: /src/pdns/pdns/dnsscope.cc:331,1
    - Dst: PcapPacketReader::getSource
      Src: /src/pdns/pdns/dnsscope.cc:339,1
    - Dst: std::unordered_set::insert
      Src: /src/pdns/pdns/dnsscope.cc:341,1
    - Dst: makeFloat
      Src: /src/pdns/pdns/dnsscope.cc:348,1
    - Dst: insert
      Src: /src/pdns/pdns/dnsscope.cc:366,1
    - Dst: PcapPacketReader::getDest
      Src: /src/pdns/pdns/dnsscope.cc:366,1
    - Dst: PcapPacketReader::getDest
      Src: /src/pdns/pdns/dnsscope.cc:370,1
    - Dst: insert
      Src: /src/pdns/pdns/dnsscope.cc:372,1
    - Dst: PcapPacketReader::getDest
      Src: /src/pdns/pdns/dnsscope.cc:391,1
    - Dst: StatNode::submit
      Src: /src/pdns/pdns/dnsscope.cc:395,1
    - Dst: erase
      Src: /src/pdns/pdns/dnsscope.cc:401,1
    - Dst: what
      Src: /src/pdns/pdns/dnsscope.cc:410,1
    - Dst: std::unique_ptr::write
      Src: /src/pdns/pdns/dnsscope.cc:413,1
    - Dst: DNSName::empty
      Src: /src/pdns/pdns/dnsscope.cc:434,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsscope.cc:443,1
    - Dst: end
      Src: /src/pdns/pdns/dnsscope.cc:443,1
    - Dst: boost::format
      Src: /src/pdns/pdns/dnsscope.cc:450,1
    - Dst: size
      Src: /src/pdns/pdns/dnsscope.cc:451,1
    - Dst: size
      Src: /src/pdns/pdns/dnsscope.cc:452,1
    - Dst: size
      Src: /src/pdns/pdns/dnsscope.cc:452,1
    - Dst: boost::format
      Src: /src/pdns/pdns/dnsscope.cc:457,1
    - Dst: rcodes_t::begin
      Src: /src/pdns/pdns/dnsscope.cc:458,1
    - Dst: rcodes_t::end
      Src: /src/pdns/pdns/dnsscope.cc:458,1
    - Dst: boost::format
      Src: /src/pdns/pdns/dnsscope.cc:459,1
    - Dst: RCode::to_s
      Src: /src/pdns/pdns/dnsscope.cc:459,1
    - Dst: cumul_t::begin
      Src: /src/pdns/pdns/dnsscope.cc:466,1
    - Dst: cumul_t::end
      Src: /src/pdns/pdns/dnsscope.cc:466,1
    - Dst: setf
      Src: /src/pdns/pdns/dnsscope.cc:477,1
    - Dst: precision
      Src: /src/pdns/pdns/dnsscope.cc:478,1
    - Dst: count
      Src: /src/pdns/pdns/dnsscope.cc:481,1
    - Dst: as
      Src: /src/pdns/pdns/dnsscope.cc:482,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/dnsscope.cc:485,1
    - Dst: writeLogHistogramFile
      Src: /src/pdns/pdns/dnsscope.cc:487,1
    - Dst: count
      Src: /src/pdns/pdns/dnsscope.cc:490,1
    - Dst: as
      Src: /src/pdns/pdns/dnsscope.cc:491,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/dnsscope.cc:494,1
    - Dst: writeFullHistogramFile
      Src: /src/pdns/pdns/dnsscope.cc:495,1
    - Dst: as
      Src: /src/pdns/pdns/dnsscope.cc:495,1
    - Dst: cumul_t::begin
      Src: /src/pdns/pdns/dnsscope.cc:502,1
    - Dst: cumul_t::end
      Src: /src/pdns/pdns/dnsscope.cc:502,1
    - Dst: done_t::begin
      Src: /src/pdns/pdns/dnsscope.cc:503,1
    - Dst: done_t::end
      Src: /src/pdns/pdns/dnsscope.cc:503,1
    - Dst: done_t::begin
      Src: /src/pdns/pdns/dnsscope.cc:521,1
    - Dst: done_t::end
      Src: /src/pdns/pdns/dnsscope.cc:521,1
    - Dst: done_t::rbegin
      Src: /src/pdns/pdns/dnsscope.cc:536,1
    - Dst: as
      Src: /src/pdns/pdns/dnsscope.cc:540,1
    - Dst: as
      Src: /src/pdns/pdns/dnsscope.cc:541,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/dnsscope.cc:543,1
    - Dst: as
      Src: /src/pdns/pdns/dnsscope.cc:543,1
    - Dst: std::unordered_set::size
      Src: /src/pdns/pdns/dnsscope.cc:550,1
    - Dst: size
      Src: /src/pdns/pdns/dnsscope.cc:550,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/dnsscope.cc:553,1
    - Dst: set_difference
      Src: /src/pdns/pdns/dnsscope.cc:557,1
    - Dst: std::unordered_set::begin
      Src: /src/pdns/pdns/dnsscope.cc:557,1
    - Dst: std::unordered_set::end
      Src: /src/pdns/pdns/dnsscope.cc:557,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsscope.cc:557,1
    - Dst: end
      Src: /src/pdns/pdns/dnsscope.cc:557,1
    - Dst: back_inserter
      Src: /src/pdns/pdns/dnsscope.cc:557,1
    - Dst: ComboAddress::addressOnlyLessThan
      Src: /src/pdns/pdns/dnsscope.cc:557,1
    - Dst: vector::size
      Src: /src/pdns/pdns/dnsscope.cc:558,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/dnsscope.cc:562,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/dnsscope.cc:566,1
    - Dst: StatNode::visit
      Src: /src/pdns/pdns/dnsscope.cc:571,1
    - Dst: what
      Src: /src/pdns/pdns/dnsscope.cc:577,1
    CyclomaticComplexity: 96
    EdgeCount: 96
    ICount: 241
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 578
      start: 138
    functionDepth: 2
    functionLinenumber: 138
    functionLinenumberEnd: 578
    functionName: main
    functionSourceFile: /src/pdns/pdns/dnsscope.cc
    functionUses: 15
    functionsReached:
    - add
    - po::value<double>
    - po::value<vector<string> >
    - PcapPacketReader::getUDPPacket
    - StatNode::submit
    - rcodes_t::end
    - ntohs
    - ComboAddress::addressOnlyLessThan
    - std::unordered_set::insert
    - runtime_error
    - setf
    - done_t::end
    - insert
    - RCode::to_s
    - cumul_t::end
    - makeFloat
    - erase
    - std::unordered_set::end
    - po::positional_options_description::add
    - getEDNSUDPPayloadSizeAndZ
    - reportAllTypes
    - po::value<uint16_t>
    - size
    - pdns::channel::Notifier::notify
    - rcodes_t::begin
    - std::unordered_set::size
    - DNSName::isPartOf
    - begin
    - std::unordered_set::begin
    - back_inserter
    - min
    - po::value<bool>
    - PcapPacketReader::getDest
    - std::make_unique<PcapPacketWriter>
    - max
    - add_options
    - cumul_t::begin
    - DNSName
    - done_t::begin
    - StatNode::visit
    - vector::empty
    - PcapPacketReader::getSource
    - DNSName::empty
    - exit
    - writeFullHistogramFile
    - po::options_description::add_options
    - writeLogHistogramFile
    - memcpy
    - pcounts_t::emplace_back
    - count
    - what
    - end
    - pdns::stat_t_trait::store
    - std::unique_ptr::write
    - precision
    - Logging::Logger::create
    - set_difference
    - as
    - liveQuestions
    - done_t::rbegin
    - ComboAddress::toString
    - boost::format
    - DNSName::DNSName
    - po::command_line_parser
    - vector::size
    - po::value<string>
    linkageType: ''
    returnType: int
    signature: int main(int argc, char** argv)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - ' name_'
    - type_
    argTypes:
    - string
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 67
    functionDepth: 0
    functionLinenumber: 67
    functionLinenumberEnd: 67
    functionName: TypedQuery
    functionSourceFile: /src/pdns/pdns/dnsbulktest.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void TypedQuery(const string& name_, uint16_t type_)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: make_unique<acc_t>
      Src: /src/pdns/pdns/dnsbulktest.cc:100,1
    - Dst: acc_t
      Src: /src/pdns/pdns/dnsbulktest.cc:100,1
    - Dst: setReuseAddr
      Src: /src/pdns/pdns/dnsbulktest.cc:102,1
    - Dst: connect
      Src: /src/pdns/pdns/dnsbulktest.cc:104,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsbulktest.cc:105,1
    - Dst: push_back
      Src: /src/pdns/pdns/dnsbulktest.cc:106,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - ' remoteAddr'
    - port
    argTypes:
    - std::string
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 98
    functionDepth: 0
    functionLinenumber: 98
    functionLinenumberEnd: 108
    functionName: SendReceive
    functionSourceFile: /src/pdns/pdns/dnsbulktest.cc
    functionUses: 0
    functionsReached:
    - pdns::max
    - acc_t
    - setReuseAddr
    - push_back
    - make_unique<acc_t>
    - connect
    linkageType: ''
    returnType: void
    signature: void SendReceive(const std::string& remoteAddr, uint16_t port)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/dnsbulktest.cc:119,1
    - Dst: exit
      Src: /src/pdns/pdns/dnsbulktest.cc:121,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsbulktest.cc:123,1
    - Dst: front
      Src: /src/pdns/pdns/dnsbulktest.cc:123,1
    - Dst: pop_front
      Src: /src/pdns/pdns/dnsbulktest.cc:124,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsbulktest.cc:125,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsbulktest.cc:126,1
    - Dst: Socket::send
      Src: /src/pdns/pdns/dnsbulktest.cc:128,1
    - Dst: getHandle
      Src: /src/pdns/pdns/dnsbulktest.cc:128,1
    - Dst: vector::begin
      Src: /src/pdns/pdns/dnsbulktest.cc:128,1
    - Dst: vector::size
      Src: /src/pdns/pdns/dnsbulktest.cc:128,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsbulktest.cc:133,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsbulktest.cc:135,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 1
    argNames:
    - ' domain'
    argTypes:
    - TypedQuery
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 136
      start: 110
    functionDepth: 1
    functionLinenumber: 110
    functionLinenumberEnd: 136
    functionName: send
    functionSourceFile: /src/pdns/pdns/dnsbulktest.cc
    functionUses: 4
    functionsReached:
    - vector::begin
    - Socket::send
    - vector::size
    - getHandle
    - DNSPacketWriter::getHeader
    - pop_front
    - empty
    - exit
    - front
    linkageType: ''
    returnType: Identifier
    signature: Identifier send(TypedQuery& domain)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: waitForData
      Src: /src/pdns/pdns/dnsbulktest.cc:140,1
    - Dst: getHandle
      Src: /src/pdns/pdns/dnsbulktest.cc:140,1
    - Dst: recv
      Src: /src/pdns/pdns/dnsbulktest.cc:144,1
    - Dst: getHandle
      Src: /src/pdns/pdns/dnsbulktest.cc:144,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/dnsbulktest.cc:144,1
    - Dst: std::array::size
      Src: /src/pdns/pdns/dnsbulktest.cc:144,1
    - Dst: string
      Src: /src/pdns/pdns/dnsbulktest.cc:152,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/dnsbulktest.cc:152,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/dnsbulktest.cc:152,1
    - Dst: DNSRecordContent::NumberToType
      Src: /src/pdns/pdns/dnsbulktest.cc:154,1
    - Dst: MOADNSParser::d_answers::begin
      Src: /src/pdns/pdns/dnsbulktest.cc:159,1
    - Dst: MOADNSParser::d_answers::end
      Src: /src/pdns/pdns/dnsbulktest.cc:159,1
    - Dst: ips::emplace_back
      Src: /src/pdns/pdns/dnsbulktest.cc:161,1
    - Dst: auto::getContent
      Src: /src/pdns/pdns/dnsbulktest.cc:161,1
    - Dst: DNSRecordContent::NumberToType
      Src: /src/pdns/pdns/dnsbulktest.cc:167,1
    - Dst: auto::getContent
      Src: /src/pdns/pdns/dnsbulktest.cc:168,1
    - Dst: push_back
      Src: /src/pdns/pdns/dnsbulktest.cc:173,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 30
    argCount: 2
    argNames:
    - ' iden'
    - ' dnsResult'
    argTypes:
    - Identifier
    - DNSResult
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 179
      start: 138
    functionDepth: 0
    functionLinenumber: 138
    functionLinenumberEnd: 179
    functionName: receive
    functionSourceFile: /src/pdns/pdns/dnsbulktest.cc
    functionUses: 1
    functionsReached:
    - recv
    - static_cast<size_t>
    - push_back
    - getHandle
    - waitForData
    - string
    - ips::emplace_back
    - MOADNSParser::d_answers::end
    - auto::getContent
    - DNSRecordContent::NumberToType
    - std::array::data
    - std::array::size
    - MOADNSParser::d_answers::begin
    linkageType: ''
    returnType: bool
    signature: bool receive(Identifier& iden, DNSResult& dnsResult)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: push_back
      Src: /src/pdns/pdns/dnsbulktest.cc:186,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ' id'
    argTypes:
    - Identifier
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 187
      start: 181
    functionDepth: 0
    functionLinenumber: 181
    functionLinenumberEnd: 187
    functionName: deliverTimeout
    functionSourceFile: /src/pdns/pdns/dnsbulktest.cc
    functionUses: 0
    functionsReached:
    - push_back
    linkageType: ''
    returnType: void
    signature: void deliverTimeout(const Identifier& id)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: DNSRecordContent::NumberToType
      Src: /src/pdns/pdns/dnsbulktest.cc:195,1
    - Dst: toString
      Src: /src/pdns/pdns/dnsbulktest.cc:197,1
    - Dst: ips::empty
      Src: /src/pdns/pdns/dnsbulktest.cc:207,1
    - Dst: ips::empty
      Src: /src/pdns/pdns/dnsbulktest.cc:210,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 25
    argCount: 3
    argNames:
    - ' domain'
    - ' dnsResult'
    - usec
    argTypes:
    - TypedQuery
    - DNSResult
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 219
      start: 189
    functionDepth: 0
    functionLinenumber: 189
    functionLinenumberEnd: 219
    functionName: deliverAnswer
    functionSourceFile: /src/pdns/pdns/dnsbulktest.cc
    functionUses: 0
    functionsReached:
    - ips::empty
    - toString
    - DNSRecordContent::NumberToType
    linkageType: ''
    returnType: void
    signature: void deliverAnswer(TypedQuery& domain, const DNSResult& dnsResult,
      unsigned int usec)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - desc
    argTypes:
    - po::options_description
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 225
      start: 222
    functionDepth: 0
    functionLinenumber: 222
    functionLinenumberEnd: 225
    functionName: usage
    functionSourceFile: /src/pdns/pdns/dnsbulktest.cc
    functionUses: 86
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void usage(po::options_description &desc)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: po::options_description::add_options
      Src: /src/pdns/pdns/dnsbulktest.cc:231,1
    - Dst: po::value<string>
      Src: /src/pdns/pdns/dnsbulktest.cc:234,1
    - Dst: po::value<bool>
      Src: /src/pdns/pdns/dnsbulktest.cc:237,1
    - Dst: po::options_description::add_options
      Src: /src/pdns/pdns/dnsbulktest.cc:242,1
    - Dst: po::value<string>
      Src: /src/pdns/pdns/dnsbulktest.cc:243,1
    - Dst: po::value<uint16_t>
      Src: /src/pdns/pdns/dnsbulktest.cc:244,1
    - Dst: po::value<uint32_t>
      Src: /src/pdns/pdns/dnsbulktest.cc:245,1
    - Dst: po::options_description::add
      Src: /src/pdns/pdns/dnsbulktest.cc:247,1
    - Dst: po::positional_options_description::add
      Src: /src/pdns/pdns/dnsbulktest.cc:249,1
    - Dst: po::positional_options_description::add
      Src: /src/pdns/pdns/dnsbulktest.cc:250,1
    - Dst: po::positional_options_description::add
      Src: /src/pdns/pdns/dnsbulktest.cc:251,1
    - Dst: pdns::stat_t_trait::store
      Src: /src/pdns/pdns/dnsbulktest.cc:253,1
    - Dst: po::command_line_parser
      Src: /src/pdns/pdns/dnsbulktest.cc:253,1
    - Dst: pdns::channel::Notifier::notify
      Src: /src/pdns/pdns/dnsbulktest.cc:254,1
    - Dst: count
      Src: /src/pdns/pdns/dnsbulktest.cc:256,1
    - Dst: usage
      Src: /src/pdns/pdns/dnsbulktest.cc:257,1
    - Dst: count
      Src: /src/pdns/pdns/dnsbulktest.cc:261,1
    - Dst: count
      Src: /src/pdns/pdns/dnsbulktest.cc:266,1
    - Dst: usage
      Src: /src/pdns/pdns/dnsbulktest.cc:268,1
    - Dst: as
      Src: /src/pdns/pdns/dnsbulktest.cc:272,1
    - Dst: count
      Src: /src/pdns/pdns/dnsbulktest.cc:273,1
    - Dst: count
      Src: /src/pdns/pdns/dnsbulktest.cc:274,1
    - Dst: reportAllTypes
      Src: /src/pdns/pdns/dnsbulktest.cc:276,1
    - Dst: DNSRecordContent::TypeToNumber
      Src: /src/pdns/pdns/dnsbulktest.cc:278,1
    - Dst: as
      Src: /src/pdns/pdns/dnsbulktest.cc:278,1
    - Dst: what
      Src: /src/pdns/pdns/dnsbulktest.cc:281,1
    - Dst: as
      Src: /src/pdns/pdns/dnsbulktest.cc:285,1
    - Dst: as
      Src: /src/pdns/pdns/dnsbulktest.cc:285,1
    - Dst: as
      Src: /src/pdns/pdns/dnsbulktest.cc:286,1
    - Dst: stringfgets
      Src: /src/pdns/pdns/dnsbulktest.cc:298,1
    - Dst: vector::size
      Src: /src/pdns/pdns/dnsbulktest.cc:299,1
    - Dst: boost::trim_right
      Src: /src/pdns/pdns/dnsbulktest.cc:302,1
    - Dst: string::empty
      Src: /src/pdns/pdns/dnsbulktest.cc:303,1
    - Dst: splitField
      Src: /src/pdns/pdns/dnsbulktest.cc:305,1
    - Dst: pair::second::empty
      Src: /src/pdns/pdns/dnsbulktest.cc:306,1
    - Dst: splitField
      Src: /src/pdns/pdns/dnsbulktest.cc:307,1
    - Dst: pair::second::find
      Src: /src/pdns/pdns/dnsbulktest.cc:308,1
    - Dst: pair::second::find
      Src: /src/pdns/pdns/dnsbulktest.cc:310,1
    - Dst: pair::second::resize
      Src: /src/pdns/pdns/dnsbulktest.cc:312,1
    - Dst: std::none_of
      Src: /src/pdns/pdns/dnsbulktest.cc:313,1
    - Dst: pair::second::begin
      Src: /src/pdns/pdns/dnsbulktest.cc:313,1
    - Dst: pair::second::end
      Src: /src/pdns/pdns/dnsbulktest.cc:313,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/dnsbulktest.cc:316,1
    - Dst: TypedQuery
      Src: /src/pdns/pdns/dnsbulktest.cc:316,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/dnsbulktest.cc:318,1
    - Dst: TypedQuery
      Src: /src/pdns/pdns/dnsbulktest.cc:318,1
    - Dst: vector::size
      Src: /src/pdns/pdns/dnsbulktest.cc:320,1
    - Dst: shuffle
      Src: /src/pdns/pdns/dnsbulktest.cc:321,1
    - Dst: vector::begin
      Src: /src/pdns/pdns/dnsbulktest.cc:321,1
    - Dst: vector::end
      Src: /src/pdns/pdns/dnsbulktest.cc:321,1
    - Dst: pdns::dns_random_engine
      Src: /src/pdns/pdns/dnsbulktest.cc:321,1
    - Dst: Inflighter::run
      Src: /src/pdns/pdns/dnsbulktest.cc:327,1
    - Dst: what
      Src: /src/pdns/pdns/dnsbulktest.cc:331,1
    - Dst: vector::size
      Src: /src/pdns/pdns/dnsbulktest.cc:336,1
    - Dst: Inflighter::getTimeouts
      Src: /src/pdns/pdns/dnsbulktest.cc:337,1
    - Dst: Inflighter::getUnexpecteds
      Src: /src/pdns/pdns/dnsbulktest.cc:338,1
    - Dst: vector::size
      Src: /src/pdns/pdns/dnsbulktest.cc:340,1
    - Dst: Inflighter::getTimeouts
      Src: /src/pdns/pdns/dnsbulktest.cc:340,1
    - Dst: Inflighter::getUnexpecteds
      Src: /src/pdns/pdns/dnsbulktest.cc:340,1
    - Dst: Inflighter::getTimeouts
      Src: /src/pdns/pdns/dnsbulktest.cc:350,1
    - Dst: Inflighter::getTimeouts
      Src: /src/pdns/pdns/dnsbulktest.cc:351,1
    - Dst: mean
      Src: /src/pdns/pdns/dnsbulktest.cc:354,1
    - Dst: median
      Src: /src/pdns/pdns/dnsbulktest.cc:354,1
    - Dst: size
      Src: /src/pdns/pdns/dnsbulktest.cc:358,1
    - Dst: extended_p_square
      Src: /src/pdns/pdns/dnsbulktest.cc:359,1
    - Dst: at
      Src: /src/pdns/pdns/dnsbulktest.cc:359,1
    - Dst: vector::size
      Src: /src/pdns/pdns/dnsbulktest.cc:363,1
    - Dst: Inflighter::getTimeouts
      Src: /src/pdns/pdns/dnsbulktest.cc:371,1
    - Dst: Inflighter::getUnexpecteds
      Src: /src/pdns/pdns/dnsbulktest.cc:372,1
    - Dst: vector::size
      Src: /src/pdns/pdns/dnsbulktest.cc:373,1
    - Dst: vector::size
      Src: /src/pdns/pdns/dnsbulktest.cc:374,1
    - Dst: _exit
      Src: /src/pdns/pdns/dnsbulktest.cc:380,1
    - Dst: what
      Src: /src/pdns/pdns/dnsbulktest.cc:383,1
    - Dst: _exit
      Src: /src/pdns/pdns/dnsbulktest.cc:384,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 106
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 385
      start: 227
    functionDepth: 1
    functionLinenumber: 227
    functionLinenumberEnd: 385
    functionName: main
    functionSourceFile: /src/pdns/pdns/dnsbulktest.cc
    functionUses: 15
    functionsReached:
    - TypedQuery
    - std::none_of
    - po::positional_options_description::add
    - vector::begin
    - splitField
    - po::value<uint32_t>
    - reportAllTypes
    - po::value<uint16_t>
    - string::empty
    - stringfgets
    - pair::second::resize
    - size
    - pdns::channel::Notifier::notify
    - shuffle
    - pair::second::empty
    - usage
    - pair::second::find
    - Inflighter::getTimeouts
    - mean
    - DNSRecordContent::TypeToNumber
    - pdns::dns_random_engine
    - at
    - po::value<bool>
    - vector::push_back
    - _exit
    - vector::end
    - extended_p_square
    - boost::trim_right
    - po::options_description::add
    - Inflighter::run
    - po::options_description::add_options
    - median
    - count
    - what
    - pdns::stat_t_trait::store
    - pair::second::end
    - Inflighter::getUnexpecteds
    - as
    - po::command_line_parser
    - vector::size
    - po::value<string>
    - pair::second::begin
    linkageType: ''
    returnType: int
    signature: int main(int argc, char** argv)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EDNSCookiesOpt::getEDNSCookiesOptFromString
      Src: /src/pdns/pdns/ednscookies.cc:35,1
    - Dst: c_str
      Src: /src/pdns/pdns/ednscookies.cc:35,1
    - Dst: length
      Src: /src/pdns/pdns/ednscookies.cc:35,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' option'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 36
      start: 33
    functionDepth: 0
    functionLinenumber: 33
    functionLinenumberEnd: 36
    functionName: EDNSCookiesOpt::EDNSCookiesOpt
    functionSourceFile: /src/pdns/pdns/ednscookies.cc
    functionUses: 0
    functionsReached:
    - EDNSCookiesOpt::getEDNSCookiesOptFromString
    - length
    - c_str
    linkageType: ''
    returnType: void
    signature: void EDNSCookiesOpt::EDNSCookiesOpt(const std::string& option)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EDNSCookiesOpt::getEDNSCookiesOptFromString
      Src: /src/pdns/pdns/ednscookies.cc:40,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - option
    - len
    argTypes:
    - char*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 38
    functionDepth: 0
    functionLinenumber: 38
    functionLinenumberEnd: 41
    functionName: EDNSCookiesOpt::EDNSCookiesOpt
    functionSourceFile: /src/pdns/pdns/ednscookies.cc
    functionUses: 0
    functionsReached:
    - EDNSCookiesOpt::getEDNSCookiesOptFromString
    linkageType: ''
    returnType: void
    signature: void EDNSCookiesOpt::EDNSCookiesOpt(const char* option, unsigned int
      len)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EDNSCookiesOpt::getEDNSCookiesOptFromString
      Src: /src/pdns/pdns/ednscookies.cc:45,1
    - Dst: c_str
      Src: /src/pdns/pdns/ednscookies.cc:45,1
    - Dst: length
      Src: /src/pdns/pdns/ednscookies.cc:45,1
    - Dst: isWellFormed
      Src: /src/pdns/pdns/ednscookies.cc:46,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ' option'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 47
    functionName: EDNSCookiesOpt::makeFromString
    functionSourceFile: /src/pdns/pdns/ednscookies.cc
    functionUses: 0
    functionsReached:
    - EDNSCookiesOpt::getEDNSCookiesOptFromString
    - length
    - isWellFormed
    - c_str
    linkageType: ''
    returnType: bool
    signature: bool EDNSCookiesOpt::makeFromString(const std::string& option)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EDNSCookiesOpt::getEDNSCookiesOptFromString
      Src: /src/pdns/pdns/ednscookies.cc:51,1
    - Dst: isWellFormed
      Src: /src/pdns/pdns/ednscookies.cc:52,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - option
    - len
    argTypes:
    - char*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 49
    functionDepth: 0
    functionLinenumber: 49
    functionLinenumberEnd: 53
    functionName: EDNSCookiesOpt::makeFromString
    functionSourceFile: /src/pdns/pdns/ednscookies.cc
    functionUses: 0
    functionsReached:
    - EDNSCookiesOpt::getEDNSCookiesOptFromString
    - isWellFormed
    linkageType: ''
    returnType: bool
    signature: bool EDNSCookiesOpt::makeFromString(const char* option, unsigned int
      len)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: isWellFormed
      Src: /src/pdns/pdns/ednscookies.cc:58,1
    - Dst: string::assign
      Src: /src/pdns/pdns/ednscookies.cc:61,1
    - Dst: length
      Src: /src/pdns/pdns/ednscookies.cc:62,1
    - Dst: string::append
      Src: /src/pdns/pdns/ednscookies.cc:63,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 55
    functionDepth: 1
    functionLinenumber: 55
    functionLinenumberEnd: 66
    functionName: EDNSCookiesOpt::makeOptString
    functionSourceFile: /src/pdns/pdns/ednscookies.cc
    functionUses: 0
    functionsReached:
    - string::append
    - length
    - string::assign
    - isWellFormed
    linkageType: ''
    returnType: string
    signature: string EDNSCookiesOpt::makeOptString() const
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: makeHexDump
      Src: /src/pdns/pdns/ednscookies.cc:71,1
    - Dst: empty
      Src: /src/pdns/pdns/ednscookies.cc:72,1
    - Dst: length
      Src: /src/pdns/pdns/ednscookies.cc:74,1
    - Dst: makeHexDump
      Src: /src/pdns/pdns/ednscookies.cc:76,1
    - Dst: makeHexDump
      Src: /src/pdns/pdns/ednscookies.cc:80,1
    - Dst: substr
      Src: /src/pdns/pdns/ednscookies.cc:80,1
    - Dst: makeHexDump
      Src: /src/pdns/pdns/ednscookies.cc:82,1
    - Dst: substr
      Src: /src/pdns/pdns/ednscookies.cc:82,1
    - Dst: makeHexDump
      Src: /src/pdns/pdns/ednscookies.cc:84,1
    - Dst: substr
      Src: /src/pdns/pdns/ednscookies.cc:84,1
    - Dst: makeHexDump
      Src: /src/pdns/pdns/ednscookies.cc:86,1
    - Dst: substr
      Src: /src/pdns/pdns/ednscookies.cc:86,1
    - Dst: std::ostringstream::str
      Src: /src/pdns/pdns/ednscookies.cc:89,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 68
    functionDepth: 0
    functionLinenumber: 68
    functionLinenumberEnd: 90
    functionName: EDNSCookiesOpt::toDisplayString
    functionSourceFile: /src/pdns/pdns/ednscookies.cc
    functionUses: 0
    functionsReached:
    - length
    - std::ostringstream::str
    - substr
    - empty
    - makeHexDump
    linkageType: ''
    returnType: string
    signature: string EDNSCookiesOpt::toDisplayString() const
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: clear
      Src: /src/pdns/pdns/ednscookies.cc:94,1
    - Dst: clear
      Src: /src/pdns/pdns/ednscookies.cc:95,1
    - Dst: std::string::substr
      Src: /src/pdns/pdns/ednscookies.cc:100,1
    - Dst: std::string::substr
      Src: /src/pdns/pdns/ednscookies.cc:102,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - option
    - len
    argTypes:
    - char*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 104
      start: 92
    functionDepth: 1
    functionLinenumber: 92
    functionLinenumberEnd: 104
    functionName: EDNSCookiesOpt::getEDNSCookiesOptFromString
    functionSourceFile: /src/pdns/pdns/ednscookies.cc
    functionUses: 4
    functionsReached:
    - clear
    - std::string::substr
    linkageType: ''
    returnType: void
    signature: void EDNSCookiesOpt::getEDNSCookiesOptFromString(const char* option,
      unsigned int len)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: rfc1982LessThan
      Src: /src/pdns/pdns/ednscookies.cc:113,1
    - Dst: rfc1982LessThan
      Src: /src/pdns/pdns/ednscookies.cc:113,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 2
    argNames:
    - timestamp
    - now
    argTypes:
    - uint32_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 106
    functionDepth: 0
    functionLinenumber: 106
    functionLinenumberEnd: 114
    functionName: cookieTSIsValid
    functionSourceFile: /src/pdns/pdns/ednscookies.cc
    functionUses: 0
    functionsReached:
    - rfc1982LessThan
    linkageType: ''
    returnType: bool
    signature: bool cookieTSIsValid(uint32_t timestamp, uint32_t now)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: length
      Src: /src/pdns/pdns/ednscookies.cc:119,1
    - Dst: length
      Src: /src/pdns/pdns/ednscookies.cc:119,1
    - Dst: memcpy
      Src: /src/pdns/pdns/ednscookies.cc:127,1
    - Dst: ntohl
      Src: /src/pdns/pdns/ednscookies.cc:128,1
    - Dst: static_cast<uint32_t>
      Src: /src/pdns/pdns/ednscookies.cc:130,1
    - Dst: time
      Src: /src/pdns/pdns/ednscookies.cc:130,1
    - Dst: cookieTSIsValid
      Src: /src/pdns/pdns/ednscookies.cc:131,1
    - Dst: length
      Src: /src/pdns/pdns/ednscookies.cc:134,1
    - Dst: substr
      Src: /src/pdns/pdns/ednscookies.cc:138,1
    - Dst: toByteString
      Src: /src/pdns/pdns/ednscookies.cc:138,1
    - Dst: string::resize
      Src: /src/pdns/pdns/ednscookies.cc:140,1
    - Dst: crypto_shorthash
      Src: /src/pdns/pdns/ednscookies.cc:143,1
    - Dst: reinterpret_cast<unsigned char*>
      Src: /src/pdns/pdns/ednscookies.cc:143,1
    - Dst: string::data
      Src: /src/pdns/pdns/ednscookies.cc:143,1
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/ednscookies.cc:144,1
    - Dst: string::data
      Src: /src/pdns/pdns/ednscookies.cc:144,1
    - Dst: string::length
      Src: /src/pdns/pdns/ednscookies.cc:145,1
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/ednscookies.cc:146,1
    - Dst: data
      Src: /src/pdns/pdns/ednscookies.cc:146,1
    - Dst: constantTimeStringEquals
      Src: /src/pdns/pdns/ednscookies.cc:148,1
    - Dst: substr
      Src: /src/pdns/pdns/ednscookies.cc:148,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 2
    argNames:
    - ' secret'
    - ' source'
    argTypes:
    - string
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 152
      start: 116
    functionDepth: 1
    functionLinenumber: 116
    functionLinenumberEnd: 152
    functionName: EDNSCookiesOpt::isValid
    functionSourceFile: /src/pdns/pdns/ednscookies.cc
    functionUses: 0
    functionsReached:
    - string::data
    - length
    - ntohl
    - memcpy
    - string::resize
    - time
    - crypto_shorthash
    - static_cast<uint32_t>
    - toByteString
    - reinterpret_cast<unsigned char*>
    - cookieTSIsValid
    - substr
    - reinterpret_cast<const unsigned char*>
    - data
    - constantTimeStringEquals
    - string::length
    linkageType: ''
    returnType: bool
    signature: bool EDNSCookiesOpt::isValid([[maybe_unused]] const string& secret,
      [[maybe_unused]] const ComboAddress& source) const
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/ednscookies.cc:156,1
    - Dst: memcpy
      Src: /src/pdns/pdns/ednscookies.cc:160,1
    - Dst: at
      Src: /src/pdns/pdns/ednscookies.cc:160,1
    - Dst: ntohl
      Src: /src/pdns/pdns/ednscookies.cc:161,1
    - Dst: static_cast<uint32_t>
      Src: /src/pdns/pdns/ednscookies.cc:163,1
    - Dst: time
      Src: /src/pdns/pdns/ednscookies.cc:163,1
    - Dst: cookieTSIsValid
      Src: /src/pdns/pdns/ednscookies.cc:165,1
    - Dst: rfc1982LessThan
      Src: /src/pdns/pdns/ednscookies.cc:172,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 173
      start: 154
    functionDepth: 0
    functionLinenumber: 154
    functionLinenumberEnd: 173
    functionName: EDNSCookiesOpt::shouldRefresh
    functionSourceFile: /src/pdns/pdns/ednscookies.cc
    functionUses: 0
    functionsReached:
    - memcpy
    - ntohl
    - rfc1982LessThan
    - time
    - size
    - static_cast<uint32_t>
    - cookieTSIsValid
    - at
    linkageType: ''
    returnType: bool
    signature: bool EDNSCookiesOpt::shouldRefresh() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: resize
      Src: /src/pdns/pdns/ednscookies.cc:178,1
    - Dst: dns_random
      Src: /src/pdns/pdns/ednscookies.cc:179,1
    - Dst: data
      Src: /src/pdns/pdns/ednscookies.cc:179,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 180
      start: 175
    functionDepth: 1
    functionLinenumber: 175
    functionLinenumberEnd: 180
    functionName: EDNSCookiesOpt::makeClientCookie
    functionSourceFile: /src/pdns/pdns/ednscookies.cc
    functionUses: 0
    functionsReached:
    - dns_random
    - resize
    - data
    linkageType: ''
    returnType: void
    signature: void EDNSCookiesOpt::makeClientCookie()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/ednscookies.cc:185,1
    - Dst: EDNSCookiesOpt::isValid
      Src: /src/pdns/pdns/ednscookies.cc:187,1
    - Dst: EDNSCookiesOpt::shouldRefresh
      Src: /src/pdns/pdns/ednscookies.cc:187,1
    - Dst: length
      Src: /src/pdns/pdns/ednscookies.cc:191,1
    - Dst: clear
      Src: /src/pdns/pdns/ednscookies.cc:195,1
    - Dst: reserve
      Src: /src/pdns/pdns/ednscookies.cc:196,1
    - Dst: resize
      Src: /src/pdns/pdns/ednscookies.cc:198,1
    - Dst: htonl
      Src: /src/pdns/pdns/ednscookies.cc:200,1
    - Dst: static_cast<uint32_t>
      Src: /src/pdns/pdns/ednscookies.cc:200,1
    - Dst: time
      Src: /src/pdns/pdns/ednscookies.cc:200,1
    - Dst: string
      Src: /src/pdns/pdns/ednscookies.cc:202,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/ednscookies.cc:202,1
    - Dst: resize
      Src: /src/pdns/pdns/ednscookies.cc:203,1
    - Dst: toByteString
      Src: /src/pdns/pdns/ednscookies.cc:207,1
    - Dst: resize
      Src: /src/pdns/pdns/ednscookies.cc:208,1
    - Dst: crypto_shorthash
      Src: /src/pdns/pdns/ednscookies.cc:209,1
    - Dst: reinterpret_cast<unsigned char*>
      Src: /src/pdns/pdns/ednscookies.cc:209,1
    - Dst: at
      Src: /src/pdns/pdns/ednscookies.cc:209,1
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/ednscookies.cc:210,1
    - Dst: string::data
      Src: /src/pdns/pdns/ednscookies.cc:210,1
    - Dst: string::length
      Src: /src/pdns/pdns/ednscookies.cc:211,1
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/ednscookies.cc:212,1
    - Dst: data
      Src: /src/pdns/pdns/ednscookies.cc:212,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 2
    argNames:
    - ' secret'
    - ' source'
    argTypes:
    - string
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 218
      start: 182
    functionDepth: 1
    functionLinenumber: 182
    functionLinenumberEnd: 218
    functionName: EDNSCookiesOpt::makeServerCookie
    functionSourceFile: /src/pdns/pdns/ednscookies.cc
    functionUses: 0
    functionsReached:
    - crypto_shorthash
    - static_cast<uint32_t>
    - string::data
    - static_cast<size_t>
    - resize
    - time
    - string
    - reinterpret_cast<unsigned char*>
    - reinterpret_cast<const unsigned char*>
    - EDNSCookiesOpt::isValid
    - clear
    - at
    - toByteString
    - reserve
    - reinterpret_cast<const char*>
    - string::length
    - length
    - htonl
    - EDNSCookiesOpt::shouldRefresh
    - data
    linkageType: ''
    returnType: bool
    signature: bool EDNSCookiesOpt::makeServerCookie([[maybe_unused]] const string&
      secret, [[maybe_unused]] const ComboAddress& source)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: get
      Src: /src/pdns/pdns/zonemd.cc:13,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/zonemd.cc:16,1
    - Dst: DNSResourceRecord::qname::toStringNoDot
      Src: /src/pdns/pdns/zonemd.cc:19,1
    - Dst: DNSResourceRecord::qtype::toString
      Src: /src/pdns/pdns/zonemd.cc:19,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/zonemd.cc:20,1
    - Dst: std::move
      Src: /src/pdns/pdns/zonemd.cc:20,1
    - Dst: DNSResourceRecord::qname::toStringNoDot
      Src: /src/pdns/pdns/zonemd.cc:23,1
    - Dst: DNSResourceRecord::qtype::toString
      Src: /src/pdns/pdns/zonemd.cc:23,1
    - Dst: what
      Src: /src/pdns/pdns/zonemd.cc:23,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/zonemd.cc:24,1
    - Dst: std::move
      Src: /src/pdns/pdns/zonemd.cc:24,1
    - Dst: DNSRecord::DNSRecord
      Src: /src/pdns/pdns/zonemd.cc:26,1
    - Dst: DNSRecord::setContent
      Src: /src/pdns/pdns/zonemd.cc:28,1
    - Dst: std::move
      Src: /src/pdns/pdns/zonemd.cc:28,1
    - Dst: DNSResourceRecord::content::length
      Src: /src/pdns/pdns/zonemd.cc:32,1
    - Dst: readRecord
      Src: /src/pdns/pdns/zonemd.cc:33,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 1
    argNames:
    - ' zpt'
    argTypes:
    - ZoneParserTNG
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 35
      start: 9
    functionDepth: 0
    functionLinenumber: 9
    functionLinenumberEnd: 35
    functionName: pdns::ZoneMD::readRecords(ZoneParserTNG& zpt)
    functionSourceFile: /src/pdns/pdns/zonemd.cc
    functionUses: 0
    functionsReached:
    - std::move
    - DNSResourceRecord::content::length
    - DNSRecord::DNSRecord
    - DNSResourceRecord::qtype::toString
    - PDNSException
    - what
    - get
    - DNSResourceRecord::qname::toStringNoDot
    - DNSRecordContent::make
    - DNSRecord::setContent
    - readRecord
    linkageType: ''
    returnType: void
    signature: void pdns::ZoneMD::readRecords(ZoneParserTNG& zpt)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: readRecord
      Src: /src/pdns/pdns/zonemd.cc:40,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - ' records'
    argTypes:
    - vector<DNSRecord>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 37
    functionDepth: 0
    functionLinenumber: 37
    functionLinenumberEnd: 42
    functionName: pdns::ZoneMD::readRecords(const vector<DNSRecord>& records)
    functionSourceFile: /src/pdns/pdns/zonemd.cc
    functionUses: 0
    functionsReached:
    - readRecord
    linkageType: ''
    returnType: void
    signature: void pdns::ZoneMD::readRecords(const vector<DNSRecord>& records)
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: DNSName
      Src: /src/pdns/pdns/zonemd.cc:46,1
    - Dst: getRR
      Src: /src/pdns/pdns/zonemd.cc:49,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/zonemd.cc:51,1
    - Dst: getRR
      Src: /src/pdns/pdns/zonemd.cc:56,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/zonemd.cc:58,1
    - Dst: emplace
      Src: /src/pdns/pdns/zonemd.cc:60,1
    - Dst: getRR
      Src: /src/pdns/pdns/zonemd.cc:64,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/zonemd.cc:66,1
    - Dst: insert
      Src: /src/pdns/pdns/zonemd.cc:68,1
    - Dst: pair
      Src: /src/pdns/pdns/zonemd.cc:68,1
    - Dst: getRR
      Src: /src/pdns/pdns/zonemd.cc:76,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/zonemd.cc:78,1
    - Dst: emplace_back
      Src: /src/pdns/pdns/zonemd.cc:80,1
    - Dst: signatures::emplace_back
      Src: /src/pdns/pdns/zonemd.cc:82,1
    - Dst: getRR
      Src: /src/pdns/pdns/zonemd.cc:88,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/zonemd.cc:90,1
    - Dst: records::emplace
      Src: /src/pdns/pdns/zonemd.cc:92,1
    - Dst: getRR
      Src: /src/pdns/pdns/zonemd.cc:99,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/zonemd.cc:101,1
    - Dst: emplace_back
      Src: /src/pdns/pdns/zonemd.cc:106,1
    - Dst: DNSName
      Src: /src/pdns/pdns/zonemd.cc:107,1
    - Dst: prependRawLabel
      Src: /src/pdns/pdns/zonemd.cc:108,1
    - Dst: toBase32Hex
      Src: /src/pdns/pdns/zonemd.cc:108,1
    - Dst: hashQNameWithSalt
      Src: /src/pdns/pdns/zonemd.cc:108,1
    - Dst: DNSName
      Src: /src/pdns/pdns/zonemd.cc:108,1
    - Dst: begin
      Src: /src/pdns/pdns/zonemd.cc:110,1
    - Dst: end
      Src: /src/pdns/pdns/zonemd.cc:110,1
    - Dst: erase
      Src: /src/pdns/pdns/zonemd.cc:112,1
    CyclomaticComplexity: 28
    EdgeCount: 28
    ICount: 66
    argCount: 1
    argNames:
    - ' record'
    argTypes:
    - DNSRecord
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 122
      start: 44
    functionDepth: 1
    functionLinenumber: 44
    functionLinenumberEnd: 122
    functionName: pdns::ZoneMD::processRecord(const DNSRecord& record)
    functionSourceFile: /src/pdns/pdns/zonemd.cc
    functionUses: 0
    functionsReached:
    - getRR
    - toBase32Hex
    - PDNSException
    - prependRawLabel
    - signatures::emplace_back
    - pair
    - DNSName
    - end
    - begin
    - records::emplace
    - insert
    - emplace_back
    - erase
    - hashQNameWithSalt
    - emplace
    linkageType: ''
    returnType: void
    signature: void pdns::ZoneMD::processRecord(const DNSRecord& record)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: d_name::isPartOf
      Src: /src/pdns/pdns/zonemd.cc:126,1
    - Dst: processRecord
      Src: /src/pdns/pdns/zonemd.cc:133,1
    - Dst: empty
      Src: /src/pdns/pdns/zonemd.cc:136,1
    - Dst: getRR
      Src: /src/pdns/pdns/zonemd.cc:139,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/zonemd.cc:141,1
    - Dst: records::emplace
      Src: /src/pdns/pdns/zonemd.cc:143,1
    - Dst: getRR
      Src: /src/pdns/pdns/zonemd.cc:147,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/zonemd.cc:149,1
    - Dst: signatures::emplace_back
      Src: /src/pdns/pdns/zonemd.cc:152,1
    - Dst: std::pair
      Src: /src/pdns/pdns/zonemd.cc:158,1
    - Dst: push_back
      Src: /src/pdns/pdns/zonemd.cc:159,1
    - Dst: getContent
      Src: /src/pdns/pdns/zonemd.cc:159,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 30
    argCount: 1
    argNames:
    - ' record'
    argTypes:
    - DNSRecord
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 161
      start: 124
    functionDepth: 0
    functionLinenumber: 124
    functionLinenumberEnd: 161
    functionName: pdns::ZoneMD::readRecord(const DNSRecord& record)
    functionSourceFile: /src/pdns/pdns/zonemd.cc
    functionUses: 0
    functionsReached:
    - getRR
    - PDNSException
    - push_back
    - signatures::emplace_back
    - getContent
    - records::emplace
    - std::pair
    - processRecord
    - empty
    - d_name::isPartOf
    linkageType: ''
    returnType: void
    signature: void pdns::ZoneMD::readRecord(const DNSRecord& record)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: make_unique<pdns::SHADigest>
      Src: /src/pdns/pdns/zonemd.cc:194,1
    - Dst: make_unique<pdns::SHADigest>
      Src: /src/pdns/pdns/zonemd.cc:197,1
    - Dst: unique_ptr::process
      Src: /src/pdns/pdns/zonemd.cc:210,1
    - Dst: unique_ptr::process
      Src: /src/pdns/pdns/zonemd.cc:213,1
    - Dst: DNSName
      Src: /src/pdns/pdns/zonemd.cc:221,1
    - Dst: std::dynamic_pointer_cast<const RRSIGRecordContent>
      Src: /src/pdns/pdns/zonemd.cc:228,1
    - Dst: DNSName
      Src: /src/pdns/pdns/zonemd.cc:229,1
    - Dst: sortedRecords_t::insert
      Src: /src/pdns/pdns/zonemd.cc:233,1
    - Dst: sortedRecords_t::empty
      Src: /src/pdns/pdns/zonemd.cc:236,1
    - Dst: RRSIGRecordContent::RRSIGRecordContent
      Src: /src/pdns/pdns/zonemd.cc:241,1
    - Dst: getMessageForRRSET
      Src: /src/pdns/pdns/zonemd.cc:244,1
    - Dst: hash
      Src: /src/pdns/pdns/zonemd.cc:245,1
    - Dst: std::dynamic_pointer_cast<const RRSIGRecordContent>
      Src: /src/pdns/pdns/zonemd.cc:251,1
    - Dst: RRSIGRecordContent::RRSIGRecordContent
      Src: /src/pdns/pdns/zonemd.cc:252,1
    - Dst: pair
      Src: /src/pdns/pdns/zonemd.cc:253,1
    - Dst: getMessageForRRSET
      Src: /src/pdns/pdns/zonemd.cc:255,1
    - Dst: hash
      Src: /src/pdns/pdns/zonemd.cc:256,1
    - Dst: unique_ptr::digest
      Src: /src/pdns/pdns/zonemd.cc:266,1
    - Dst: constantTimeStringEquals
      Src: /src/pdns/pdns/zonemd.cc:267,1
    - Dst: unique_ptr::digest
      Src: /src/pdns/pdns/zonemd.cc:274,1
    - Dst: constantTimeStringEquals
      Src: /src/pdns/pdns/zonemd.cc:275,1
    CyclomaticComplexity: 35
    EdgeCount: 35
    ICount: 64
    argCount: 2
    argNames:
    - ' validationDone'
    - ' validationOK'
    argTypes:
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 281
      start: 163
    functionDepth: 1
    functionLinenumber: 163
    functionLinenumberEnd: 281
    functionName: pdns::ZoneMD::verify(bool& validationDone, bool& validationOK)
    functionSourceFile: /src/pdns/pdns/zonemd.cc
    functionUses: 0
    functionsReached:
    - hash
    - getMessageForRRSET
    - make_unique<pdns::SHADigest>
    - sortedRecords_t::empty
    - unique_ptr::digest
    - DNSName
    - RRSIGRecordContent::RRSIGRecordContent
    - sortedRecords_t::insert
    - constantTimeStringEquals
    - unique_ptr::process
    - std::dynamic_pointer_cast<const RRSIGRecordContent>
    - pair
    linkageType: ''
    returnType: void
    signature: void pdns::ZoneMD::verify(bool& validationDone, bool& validationOK)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::count
      Src: /src/pdns/pdns/secpoll.cc:31,1
    - Dst: std::string::begin
      Src: /src/pdns/pdns/secpoll.cc:31,1
    - Dst: std::string::end
      Src: /src/pdns/pdns/secpoll.cc:31,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - version
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 32
      start: 30
    functionDepth: 0
    functionLinenumber: 30
    functionLinenumberEnd: 32
    functionName: isReleaseVersion
    functionSourceFile: /src/pdns/pdns/secpoll.cc
    functionUses: 0
    functionsReached:
    - std::string::begin
    - std::string::end
    - std::count
    linkageType: ''
    returnType: bool
    signature: bool isReleaseVersion(const std::string &version)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - secPollStatus
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 34
    functionDepth: 0
    functionLinenumber: 34
    functionLinenumberEnd: 38
    functionName: setSecPollToUnknownOnOK
    functionSourceFile: /src/pdns/pdns/secpoll.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setSecPollToUnknownOnOK(int &secPollStatus)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: std::string::clear
      Src: /src/pdns/pdns/secpoll.cc:41,1
    - Dst: setSecPollToUnknownOnOK
      Src: /src/pdns/pdns/secpoll.cc:43,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/secpoll.cc:44,1
    - Dst: RCode::to_s
      Src: /src/pdns/pdns/secpoll.cc:44,1
    - Dst: std::vector<DNSRecord>::empty
      Src: /src/pdns/pdns/secpoll.cc:47,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/secpoll.cc:51,1
    - Dst: DNSRecord::DNSRecord
      Src: /src/pdns/pdns/secpoll.cc:54,1
    - Dst: DNSRecord::d_name::empty
      Src: /src/pdns/pdns/secpoll.cc:62,1
    - Dst: setSecPollToUnknownOnOK
      Src: /src/pdns/pdns/secpoll.cc:63,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/secpoll.cc:64,1
    - Dst: getRR
      Src: /src/pdns/pdns/secpoll.cc:67,1
    - Dst: setSecPollToUnknownOnOK
      Src: /src/pdns/pdns/secpoll.cc:69,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/secpoll.cc:70,1
    - Dst: splitField
      Src: /src/pdns/pdns/secpoll.cc:74,1
    - Dst: unquotify
      Src: /src/pdns/pdns/secpoll.cc:74,1
    - Dst: std::stoi
      Src: /src/pdns/pdns/secpoll.cc:77,1
    - Dst: setSecPollToUnknownOnOK
      Src: /src/pdns/pdns/secpoll.cc:79,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/secpoll.cc:80,1
    - Dst: std::string
      Src: /src/pdns/pdns/secpoll.cc:80,1
    - Dst: what
      Src: /src/pdns/pdns/secpoll.cc:80,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 32
    argCount: 4
    argNames:
    - res
    - ret
    - secPollStatus
    - secPollMessage
    argTypes:
    - int
    - std::vector<DNSRecord>
    - int
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 40
    functionDepth: 1
    functionLinenumber: 40
    functionLinenumberEnd: 83
    functionName: processSecPoll
    functionSourceFile: /src/pdns/pdns/secpoll.cc
    functionUses: 0
    functionsReached:
    - getRR
    - splitField
    - DNSRecord::DNSRecord
    - unquotify
    - PDNSException
    - what
    - std::string::clear
    - std::vector<DNSRecord>::empty
    - RCode::to_s
    - std::stoi
    - std::string
    - setSecPollToUnknownOnOK
    - DNSRecord::d_name::empty
    linkageType: ''
    returnType: void
    signature: void processSecPoll(const int res, const std::vector<DNSRecord> &ret,
      int &secPollStatus, std::string &secPollMessage)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' tv'
    argTypes:
    - struct timeval
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 62
    functionDepth: 0
    functionLinenumber: 62
    functionLinenumberEnd: 65
    functionName: makeUsec
    functionSourceFile: /src/pdns/pdns/dnstcpbench.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int makeUsec(const struct timeval& tv)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - ' qname_'
    - qtype_
    argTypes:
    - std::string
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 72
    functionDepth: 0
    functionLinenumber: 72
    functionLinenumberEnd: 72
    functionName: BenchQuery
    functionSourceFile: /src/pdns/pdns/dnstcpbench.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void BenchQuery(const std::string& qname_, uint16_t qtype_)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 73
    functionDepth: 0
    functionLinenumber: 73
    functionLinenumberEnd: 73
    functionName: BenchQuery
    functionSourceFile: /src/pdns/pdns/dnstcpbench.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void BenchQuery()
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: gettimeofday
      Src: /src/pdns/pdns/dnstcpbench.cc:89,1
    - Dst: Socket::sendTo
      Src: /src/pdns/pdns/dnstcpbench.cc:94,1
    - Dst: string
      Src: /src/pdns/pdns/dnstcpbench.cc:94,1
    - Dst: vector::begin
      Src: /src/pdns/pdns/dnstcpbench.cc:94,1
    - Dst: vector::end
      Src: /src/pdns/pdns/dnstcpbench.cc:94,1
    - Dst: waitForData
      Src: /src/pdns/pdns/dnstcpbench.cc:96,1
    - Dst: Socket::getHandle
      Src: /src/pdns/pdns/dnstcpbench.cc:96,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/dnstcpbench.cc:96,1
    - Dst: NetworkError
      Src: /src/pdns/pdns/dnstcpbench.cc:98,1
    - Dst: Socket::recvFrom
      Src: /src/pdns/pdns/dnstcpbench.cc:104,1
    - Dst: gettimeofday
      Src: /src/pdns/pdns/dnstcpbench.cc:106,1
    - Dst: makeUsec
      Src: /src/pdns/pdns/dnstcpbench.cc:107,1
    - Dst: setsockopt
      Src: /src/pdns/pdns/dnstcpbench.cc:118,1
    - Dst: Socket::getHandle
      Src: /src/pdns/pdns/dnstcpbench.cc:118,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/dnstcpbench.cc:119,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnstcpbench.cc:119,1
    - Dst: setsockopt
      Src: /src/pdns/pdns/dnstcpbench.cc:122,1
    - Dst: Socket::getHandle
      Src: /src/pdns/pdns/dnstcpbench.cc:122,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/dnstcpbench.cc:123,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnstcpbench.cc:123,1
    - Dst: Socket::connect
      Src: /src/pdns/pdns/dnstcpbench.cc:126,1
    - Dst: htons
      Src: /src/pdns/pdns/dnstcpbench.cc:127,1
    - Dst: vector::size
      Src: /src/pdns/pdns/dnstcpbench.cc:127,1
    - Dst: string::append
      Src: /src/pdns/pdns/dnstcpbench.cc:129,1
    - Dst: vector::begin
      Src: /src/pdns/pdns/dnstcpbench.cc:129,1
    - Dst: vector::end
      Src: /src/pdns/pdns/dnstcpbench.cc:129,1
    - Dst: Socket::writen
      Src: /src/pdns/pdns/dnstcpbench.cc:131,1
    - Dst: waitForData
      Src: /src/pdns/pdns/dnstcpbench.cc:133,1
    - Dst: Socket::getHandle
      Src: /src/pdns/pdns/dnstcpbench.cc:133,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/dnstcpbench.cc:133,1
    - Dst: NetworkError
      Src: /src/pdns/pdns/dnstcpbench.cc:135,1
    - Dst: Socket::read
      Src: /src/pdns/pdns/dnstcpbench.cc:141,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/dnstcpbench.cc:142,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnstcpbench.cc:144,1
    - Dst: std::make_unique<char[]>
      Src: /src/pdns/pdns/dnstcpbench.cc:145,1
    - Dst: Socket::read
      Src: /src/pdns/pdns/dnstcpbench.cc:149,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnstcpbench.cc:149,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/dnstcpbench.cc:151,1
    - Dst: string
      Src: /src/pdns/pdns/dnstcpbench.cc:155,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnstcpbench.cc:155,1
    - Dst: gettimeofday
      Src: /src/pdns/pdns/dnstcpbench.cc:157,1
    - Dst: makeUsec
      Src: /src/pdns/pdns/dnstcpbench.cc:158,1
    - Dst: what
      Src: /src/pdns/pdns/dnstcpbench.cc:169,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 57
    argCount: 1
    argNames:
    - q
    argTypes:
    - BenchQuery*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 175
      start: 80
    functionDepth: 1
    functionLinenumber: 80
    functionLinenumberEnd: 175
    functionName: doQuery
    functionSourceFile: /src/pdns/pdns/dnstcpbench.cc
    functionUses: 0
    functionsReached:
    - makeUsec
    - ntohs
    - PDNSException
    - stringerror
    - std::make_unique<char[]>
    - runtime_error
    - gettimeofday
    - Socket::read
    - static_cast<int>
    - vector::begin
    - string
    - setsockopt
    - Socket::connect
    - NetworkError
    - htons
    - auto::get
    - vector::end
    - Socket::sendTo
    - Socket::getHandle
    - Socket::recvFrom
    - what
    - string::append
    - waitForData
    - vector::size
    - Socket::writen
    linkageType: ''
    returnType: void
    signature: void doQuery(BenchQuery* q)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: setThreadName
      Src: /src/pdns/pdns/dnstcpbench.cc:187,1
    - Dst: size
      Src: /src/pdns/pdns/dnstcpbench.cc:190,1
    - Dst: doQuery
      Src: /src/pdns/pdns/dnstcpbench.cc:193,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 195
      start: 185
    functionDepth: 2
    functionLinenumber: 185
    functionLinenumberEnd: 195
    functionName: worker
    functionSourceFile: /src/pdns/pdns/dnstcpbench.cc
    functionUses: 0
    functionsReached:
    - setThreadName
    - size
    - doQuery
    linkageType: ''
    returnType: void
    signature: void worker()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - desc
    argTypes:
    - po::options_description
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 201
      start: 197
    functionDepth: 0
    functionLinenumber: 197
    functionLinenumberEnd: 201
    functionName: usage
    functionSourceFile: /src/pdns/pdns/dnstcpbench.cc
    functionUses: 87
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void usage(po::options_description &desc)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: po::options_description::add_options
      Src: /src/pdns/pdns/dnstcpbench.cc:207,1
    - Dst: po::value<string>
      Src: /src/pdns/pdns/dnstcpbench.cc:212,1
    - Dst: po::value<bool>
      Src: /src/pdns/pdns/dnstcpbench.cc:213,1
    - Dst: po::value<int>
      Src: /src/pdns/pdns/dnstcpbench.cc:214,1
    - Dst: po::value<int>
      Src: /src/pdns/pdns/dnstcpbench.cc:215,1
    - Dst: add_options
      Src: /src/pdns/pdns/dnstcpbench.cc:217,1
    - Dst: po::value<string>
      Src: /src/pdns/pdns/dnstcpbench.cc:218,1
    - Dst: po::value<int>
      Src: /src/pdns/pdns/dnstcpbench.cc:219,1
    - Dst: add
      Src: /src/pdns/pdns/dnstcpbench.cc:220,1
    - Dst: po::positional_options_description::add
      Src: /src/pdns/pdns/dnstcpbench.cc:223,1
    - Dst: po::positional_options_description::add
      Src: /src/pdns/pdns/dnstcpbench.cc:224,1
    - Dst: pdns::stat_t_trait::store
      Src: /src/pdns/pdns/dnstcpbench.cc:226,1
    - Dst: po::command_line_parser
      Src: /src/pdns/pdns/dnstcpbench.cc:226,1
    - Dst: pdns::channel::Notifier::notify
      Src: /src/pdns/pdns/dnstcpbench.cc:227,1
    - Dst: count
      Src: /src/pdns/pdns/dnstcpbench.cc:229,1
    - Dst: exit
      Src: /src/pdns/pdns/dnstcpbench.cc:231,1
    - Dst: count
      Src: /src/pdns/pdns/dnstcpbench.cc:234,1
    - Dst: usage
      Src: /src/pdns/pdns/dnstcpbench.cc:235,1
    - Dst: exit
      Src: /src/pdns/pdns/dnstcpbench.cc:236,1
    - Dst: as
      Src: /src/pdns/pdns/dnstcpbench.cc:238,1
    - Dst: count
      Src: /src/pdns/pdns/dnstcpbench.cc:240,1
    - Dst: count
      Src: /src/pdns/pdns/dnstcpbench.cc:241,1
    - Dst: as
      Src: /src/pdns/pdns/dnstcpbench.cc:242,1
    - Dst: reportAllTypes
      Src: /src/pdns/pdns/dnstcpbench.cc:244,1
    - Dst: empty
      Src: /src/pdns/pdns/dnstcpbench.cc:246,1
    - Dst: usage
      Src: /src/pdns/pdns/dnstcpbench.cc:247,1
    - Dst: exit
      Src: /src/pdns/pdns/dnstcpbench.cc:248,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnstcpbench.cc:251,1
    - Dst: as
      Src: /src/pdns/pdns/dnstcpbench.cc:251,1
    - Dst: as
      Src: /src/pdns/pdns/dnstcpbench.cc:251,1
    - Dst: as
      Src: /src/pdns/pdns/dnstcpbench.cc:253,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/dnstcpbench.cc:256,1
    - Dst: std::vector::reserve
      Src: /src/pdns/pdns/dnstcpbench.cc:264,1
    - Dst: count
      Src: /src/pdns/pdns/dnstcpbench.cc:267,1
    - Dst: pdns::UniqueFilePtr
      Src: /src/pdns/pdns/dnstcpbench.cc:268,1
    - Dst: fdopen
      Src: /src/pdns/pdns/dnstcpbench.cc:268,1
    - Dst: pdns::UniqueFilePtr
      Src: /src/pdns/pdns/dnstcpbench.cc:271,1
    - Dst: fopen
      Src: /src/pdns/pdns/dnstcpbench.cc:271,1
    - Dst: as
      Src: /src/pdns/pdns/dnstcpbench.cc:271,1
    - Dst: unixDie
      Src: /src/pdns/pdns/dnstcpbench.cc:273,1
    - Dst: as
      Src: /src/pdns/pdns/dnstcpbench.cc:273,1
    - Dst: stringfgets
      Src: /src/pdns/pdns/dnstcpbench.cc:278,1
    - Dst: pdns::UniqueFilePtr::get
      Src: /src/pdns/pdns/dnstcpbench.cc:278,1
    - Dst: boost::trim_right
      Src: /src/pdns/pdns/dnstcpbench.cc:279,1
    - Dst: splitField
      Src: /src/pdns/pdns/dnstcpbench.cc:280,1
    - Dst: push_back
      Src: /src/pdns/pdns/dnstcpbench.cc:281,1
    - Dst: BenchQuery
      Src: /src/pdns/pdns/dnstcpbench.cc:281,1
    - Dst: DNSRecordContent::TypeToNumber
      Src: /src/pdns/pdns/dnstcpbench.cc:281,1
    - Dst: pdns::UniqueFilePtr::reset
      Src: /src/pdns/pdns/dnstcpbench.cc:283,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/dnstcpbench.cc:286,1
    - Dst: std::thread
      Src: /src/pdns/pdns/dnstcpbench.cc:286,1
    - Dst: join
      Src: /src/pdns/pdns/dnstcpbench.cc:289,1
    - Dst: udpspeeds
      Src: /src/pdns/pdns/dnstcpbench.cc:307,1
    - Dst: tcpspeeds
      Src: /src/pdns/pdns/dnstcpbench.cc:308,1
    - Dst: qps
      Src: /src/pdns/pdns/dnstcpbench.cc:312,1
    - Dst: mean
      Src: /src/pdns/pdns/dnstcpbench.cc:315,1
    - Dst: median
      Src: /src/pdns/pdns/dnstcpbench.cc:315,1
    - Dst: mean
      Src: /src/pdns/pdns/dnstcpbench.cc:316,1
    - Dst: median
      Src: /src/pdns/pdns/dnstcpbench.cc:316,1
    - Dst: mean
      Src: /src/pdns/pdns/dnstcpbench.cc:317,1
    - Dst: median
      Src: /src/pdns/pdns/dnstcpbench.cc:317,1
    - Dst: what
      Src: /src/pdns/pdns/dnstcpbench.cc:325,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 67
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 326
      start: 203
    functionDepth: 1
    functionLinenumber: 203
    functionLinenumberEnd: 326
    functionName: main
    functionSourceFile: /src/pdns/pdns/dnstcpbench.cc
    functionUses: 15
    functionsReached:
    - add
    - fopen
    - pdns::UniqueFilePtr
    - pdns::UniqueFilePtr::get
    - po::positional_options_description::add
    - std::vector::push_back
    - splitField
    - reportAllTypes
    - unixDie
    - stringfgets
    - pdns::channel::Notifier::notify
    - std::thread
    - usage
    - mean
    - empty
    - DNSRecordContent::TypeToNumber
    - po::value<bool>
    - po::value<int>
    - add_options
    - push_back
    - BenchQuery
    - udpspeeds
    - std::vector::reserve
    - tcpspeeds
    - join
    - boost::trim_right
    - fdopen
    - exit
    - qps
    - toStringWithPort
    - po::options_description::add_options
    - ComboAddress
    - median
    - count
    - what
    - pdns::stat_t_trait::store
    - as
    - po::command_line_parser
    - po::value<string>
    - pdns::UniqueFilePtr::reset
    linkageType: ''
    returnType: int
    signature: int main(int argc, char** argv)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: PDNSException
      Src: /src/pdns/pdns/unix_semaphore.cc:49,1
    - Dst: pthread_mutex_init
      Src: /src/pdns/pdns/unix_semaphore.cc:54,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/unix_semaphore.cc:55,1
    - Dst: pthread_cond_init
      Src: /src/pdns/pdns/unix_semaphore.cc:58,1
    - Dst: pthread_mutex_destroy
      Src: /src/pdns/pdns/unix_semaphore.cc:59,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/unix_semaphore.cc:60,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 1
    argNames:
    - value
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 46
    functionDepth: 0
    functionLinenumber: 46
    functionLinenumberEnd: 66
    functionName: Semaphore::Semaphore
    functionSourceFile: /src/pdns/pdns/unix_semaphore.cc
    functionUses: 0
    functionsReached:
    - PDNSException
    - pthread_mutex_destroy
    - pthread_mutex_init
    - pthread_cond_init
    linkageType: ''
    returnType: void
    signature: void Semaphore::Semaphore(unsigned int value)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pthread_mutex_lock
      Src: /src/pdns/pdns/unix_semaphore.cc:70,1
    - Dst: pthread_cond_signal
      Src: /src/pdns/pdns/unix_semaphore.cc:74,1
    - Dst: pthread_mutex_unlock
      Src: /src/pdns/pdns/unix_semaphore.cc:77,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 68
    functionDepth: 0
    functionLinenumber: 68
    functionLinenumberEnd: 80
    functionName: Semaphore::post
    functionSourceFile: /src/pdns/pdns/unix_semaphore.cc
    functionUses: 0
    functionsReached:
    - pthread_mutex_lock
    - pthread_mutex_unlock
    - pthread_cond_signal
    linkageType: ''
    returnType: int
    signature: int Semaphore::post()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pthread_mutex_lock
      Src: /src/pdns/pdns/unix_semaphore.cc:84,1
    - Dst: pthread_cond_wait
      Src: /src/pdns/pdns/unix_semaphore.cc:88,1
    - Dst: pthread_mutex_unlock
      Src: /src/pdns/pdns/unix_semaphore.cc:94,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 82
    functionDepth: 0
    functionLinenumber: 82
    functionLinenumberEnd: 97
    functionName: Semaphore::wait
    functionSourceFile: /src/pdns/pdns/unix_semaphore.cc
    functionUses: 0
    functionsReached:
    - pthread_mutex_lock
    - pthread_cond_wait
    - pthread_mutex_unlock
    linkageType: ''
    returnType: int
    signature: int Semaphore::wait()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pthread_mutex_lock
      Src: /src/pdns/pdns/unix_semaphore.cc:103,1
    - Dst: pthread_mutex_unlock
      Src: /src/pdns/pdns/unix_semaphore.cc:112,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 115
      start: 99
    functionDepth: 0
    functionLinenumber: 99
    functionLinenumberEnd: 115
    functionName: Semaphore::tryWait
    functionSourceFile: /src/pdns/pdns/unix_semaphore.cc
    functionUses: 0
    functionsReached:
    - pthread_mutex_lock
    - pthread_mutex_unlock
    linkageType: ''
    returnType: int
    signature: int Semaphore::tryWait()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pthread_mutex_lock
      Src: /src/pdns/pdns/unix_semaphore.cc:119,1
    - Dst: pthread_mutex_unlock
      Src: /src/pdns/pdns/unix_semaphore.cc:121,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - sval
    argTypes:
    - Semaphore::sem_value_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 124
      start: 117
    functionDepth: 0
    functionLinenumber: 117
    functionLinenumberEnd: 124
    functionName: Semaphore::getValue
    functionSourceFile: /src/pdns/pdns/unix_semaphore.cc
    functionUses: 0
    functionsReached:
    - pthread_mutex_lock
    - pthread_mutex_unlock
    linkageType: ''
    returnType: int
    signature: int Semaphore::getValue(Semaphore::sem_value_t *sval)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pthread_mutex_lock
      Src: /src/pdns/pdns/unix_semaphore.cc:130,1
    - Dst: pthread_mutex_unlock
      Src: /src/pdns/pdns/unix_semaphore.cc:132,1
    - Dst: pthread_mutex_unlock
      Src: /src/pdns/pdns/unix_semaphore.cc:136,1
    - Dst: pthread_mutex_destroy
      Src: /src/pdns/pdns/unix_semaphore.cc:140,1
    - Dst: pthread_cond_destroy
      Src: /src/pdns/pdns/unix_semaphore.cc:141,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 145
      start: 126
    functionDepth: 0
    functionLinenumber: 126
    functionLinenumberEnd: 145
    functionName: Semaphore::~Semaphore()
    functionSourceFile: /src/pdns/pdns/unix_semaphore.cc
    functionUses: 0
    functionsReached:
    - pthread_mutex_destroy
    - pthread_mutex_lock
    - pthread_mutex_unlock
    - pthread_cond_destroy
    linkageType: ''
    returnType: void
    signature: void Semaphore::~Semaphore()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: make_unique<sem_t>
      Src: /src/pdns/pdns/unix_semaphore.cc:152,1
    - Dst: sem_init
      Src: /src/pdns/pdns/unix_semaphore.cc:153,1
    - Dst: get
      Src: /src/pdns/pdns/unix_semaphore.cc:153,1
    - Dst: SLOG
      Src: /src/pdns/pdns/unix_semaphore.cc:154,1
    - Dst: stringerror
      Src: /src/pdns/pdns/unix_semaphore.cc:154,1
    - Dst: error
      Src: /src/pdns/pdns/unix_semaphore.cc:155,1
    - Dst: exit
      Src: /src/pdns/pdns/unix_semaphore.cc:156,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - value
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 158
      start: 150
    functionDepth: 0
    functionLinenumber: 150
    functionLinenumberEnd: 158
    functionName: Semaphore::Semaphore
    functionSourceFile: /src/pdns/pdns/unix_semaphore.cc
    functionUses: 0
    functionsReached:
    - SLOG
    - stringerror
    - get
    - sem_init
    - make_unique<sem_t>
    - error
    - exit
    linkageType: ''
    returnType: void
    signature: void Semaphore::Semaphore(unsigned int value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sem_post
      Src: /src/pdns/pdns/unix_semaphore.cc:162,1
    - Dst: get
      Src: /src/pdns/pdns/unix_semaphore.cc:162,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 163
      start: 160
    functionDepth: 0
    functionLinenumber: 160
    functionLinenumberEnd: 163
    functionName: Semaphore::post
    functionSourceFile: /src/pdns/pdns/unix_semaphore.cc
    functionUses: 0
    functionsReached:
    - sem_post
    - get
    linkageType: ''
    returnType: int
    signature: int Semaphore::post()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sem_wait
      Src: /src/pdns/pdns/unix_semaphore.cc:169,1
    - Dst: get
      Src: /src/pdns/pdns/unix_semaphore.cc:169,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 172
      start: 165
    functionDepth: 0
    functionLinenumber: 165
    functionLinenumberEnd: 172
    functionName: Semaphore::wait
    functionSourceFile: /src/pdns/pdns/unix_semaphore.cc
    functionUses: 0
    functionsReached:
    - sem_wait
    - get
    linkageType: ''
    returnType: int
    signature: int Semaphore::wait()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sem_trywait
      Src: /src/pdns/pdns/unix_semaphore.cc:175,1
    - Dst: get
      Src: /src/pdns/pdns/unix_semaphore.cc:175,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 176
      start: 173
    functionDepth: 0
    functionLinenumber: 173
    functionLinenumberEnd: 176
    functionName: Semaphore::tryWait
    functionSourceFile: /src/pdns/pdns/unix_semaphore.cc
    functionUses: 0
    functionsReached:
    - sem_trywait
    - get
    linkageType: ''
    returnType: int
    signature: int Semaphore::tryWait()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sem_getvalue
      Src: /src/pdns/pdns/unix_semaphore.cc:180,1
    - Dst: get
      Src: /src/pdns/pdns/unix_semaphore.cc:180,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - sval
    argTypes:
    - Semaphore::sem_value_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 181
      start: 178
    functionDepth: 0
    functionLinenumber: 178
    functionLinenumberEnd: 181
    functionName: Semaphore::getValue
    functionSourceFile: /src/pdns/pdns/unix_semaphore.cc
    functionUses: 0
    functionsReached:
    - sem_getvalue
    - get
    linkageType: ''
    returnType: int
    signature: int Semaphore::getValue(Semaphore::sem_value_t *sval)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 185
      start: 183
    functionDepth: 0
    functionLinenumber: 183
    functionLinenumberEnd: 185
    functionName: Semaphore::~Semaphore()
    functionSourceFile: /src/pdns/pdns/unix_semaphore.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Semaphore::~Semaphore()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-iputils_hh.cc:20,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-iputils_hh.cc:21,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-iputils_hh.cc:22,1
    - Dst: htons
      Src: /src/pdns/pdns/test-iputils_hh.cc:22,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-iputils_hh.cc:23,1
    - Dst: htonl
      Src: /src/pdns/pdns/test-iputils_hh.cc:23,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-iputils_hh.cc:26,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-iputils_hh.cc:27,1
    - Dst: htons
      Src: /src/pdns/pdns/test-iputils_hh.cc:27,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-iputils_hh.cc:30,1
    - Dst: htons
      Src: /src/pdns/pdns/test-iputils_hh.cc:30,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-iputils_hh.cc:33,1
    - Dst: htons
      Src: /src/pdns/pdns/test-iputils_hh.cc:33,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-iputils_hh.cc:35,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-iputils_hh.cc:36,1
    - Dst: htons
      Src: /src/pdns/pdns/test-iputils_hh.cc:36,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-iputils_hh.cc:38,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-iputils_hh.cc:39,1
    - Dst: htons
      Src: /src/pdns/pdns/test-iputils_hh.cc:39,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-iputils_hh.cc:42,1
    - Dst: htons
      Src: /src/pdns/pdns/test-iputils_hh.cc:42,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-iputils_hh.cc:44,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-iputils_hh.cc:45,1
    - Dst: htons
      Src: /src/pdns/pdns/test-iputils_hh.cc:45,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-iputils_hh.cc:47,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-iputils_hh.cc:48,1
    - Dst: htons
      Src: /src/pdns/pdns/test-iputils_hh.cc:48,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-iputils_hh.cc:52,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-iputils_hh.cc:53,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-iputils_hh.cc:54,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-iputils_hh.cc:57,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-iputils_hh.cc:58,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-iputils_hh.cc:59,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-iputils_hh.cc:61,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-iputils_hh.cc:62,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-iputils_hh.cc:63,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-iputils_hh.cc:64,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-iputils_hh.cc:65,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-iputils_hh.cc:68,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-iputils_hh.cc:68,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-iputils_hh.cc:69,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-iputils_hh.cc:69,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-iputils_hh.cc:70,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-iputils_hh.cc:70,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-iputils_hh.cc:71,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-iputils_hh.cc:71,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 28
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 18
    functionDepth: 0
    functionLinenumber: 18
    functionLinenumberEnd: 72
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-iputils_hh.cc
    functionUses: 0
    functionsReached:
    - htonl
    - BOOST_CHECK_EQUAL
    - htons
    - BOOST_CHECK_THROW
    - BOOST_CHECK
    - ComboAddress
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_ComboAddress)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-iputils_hh.cc:76,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-iputils_hh.cc:77,1
    - Dst: htons
      Src: /src/pdns/pdns/test-iputils_hh.cc:77,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-iputils_hh.cc:78,1
    - Dst: htonl
      Src: /src/pdns/pdns/test-iputils_hh.cc:78,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-iputils_hh.cc:81,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-iputils_hh.cc:84,1
    - Dst: htons
      Src: /src/pdns/pdns/test-iputils_hh.cc:84,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-iputils_hh.cc:87,1
    - Dst: htons
      Src: /src/pdns/pdns/test-iputils_hh.cc:87,1
    - Dst: SockaddrWrapper
      Src: /src/pdns/pdns/test-iputils_hh.cc:89,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-iputils_hh.cc:90,1
    - Dst: htons
      Src: /src/pdns/pdns/test-iputils_hh.cc:90,1
    - Dst: SockaddrWrapper
      Src: /src/pdns/pdns/test-iputils_hh.cc:92,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-iputils_hh.cc:93,1
    - Dst: htons
      Src: /src/pdns/pdns/test-iputils_hh.cc:93,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-iputils_hh.cc:96,1
    - Dst: htons
      Src: /src/pdns/pdns/test-iputils_hh.cc:96,1
    - Dst: SockaddrWrapper
      Src: /src/pdns/pdns/test-iputils_hh.cc:98,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-iputils_hh.cc:99,1
    - Dst: htons
      Src: /src/pdns/pdns/test-iputils_hh.cc:99,1
    - Dst: SockaddrWrapper
      Src: /src/pdns/pdns/test-iputils_hh.cc:101,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-iputils_hh.cc:102,1
    - Dst: htons
      Src: /src/pdns/pdns/test-iputils_hh.cc:102,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-iputils_hh.cc:104,1
    - Dst: SockaddrWrapper
      Src: /src/pdns/pdns/test-iputils_hh.cc:104,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-iputils_hh.cc:105,1
    - Dst: SockaddrWrapper
      Src: /src/pdns/pdns/test-iputils_hh.cc:105,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-iputils_hh.cc:106,1
    - Dst: SockaddrWrapper
      Src: /src/pdns/pdns/test-iputils_hh.cc:106,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-iputils_hh.cc:107,1
    - Dst: SockaddrWrapper
      Src: /src/pdns/pdns/test-iputils_hh.cc:107,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-iputils_hh.cc:109,1
    - Dst: SockaddrWrapper
      Src: /src/pdns/pdns/test-iputils_hh.cc:109,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-iputils_hh.cc:110,1
    - Dst: SockaddrWrapper
      Src: /src/pdns/pdns/test-iputils_hh.cc:110,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 22
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 111
      start: 74
    functionDepth: 0
    functionLinenumber: 74
    functionLinenumberEnd: 111
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-iputils_hh.cc
    functionUses: 0
    functionsReached:
    - SockaddrWrapper
    - htonl
    - BOOST_CHECK_EQUAL
    - BOOST_CHECK_THROW
    - htons
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_SockaddrWrapper)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ComboAddress::reset
      Src: /src/pdns/pdns/test-iputils_hh.cc:115,1
    - Dst: reset
      Src: /src/pdns/pdns/test-iputils_hh.cc:116,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-iputils_hh.cc:117,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-iputils_hh.cc:118,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 119
      start: 113
    functionDepth: 0
    functionLinenumber: 113
    functionLinenumberEnd: 119
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-iputils_hh.cc
    functionUses: 0
    functionsReached:
    - reset
    - ComboAddress::reset
    - BOOST_CHECK
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_ComboAddressCompare)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ComboAddress::truncate
      Src: /src/pdns/pdns/test-iputils_hh.cc:123,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-iputils_hh.cc:124,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/test-iputils_hh.cc:124,1
    - Dst: ComboAddress::truncate
      Src: /src/pdns/pdns/test-iputils_hh.cc:125,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-iputils_hh.cc:126,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/test-iputils_hh.cc:126,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-iputils_hh.cc:130,1
    - Dst: ComboAddress::truncate
      Src: /src/pdns/pdns/test-iputils_hh.cc:133,1
    - Dst: memcpy
      Src: /src/pdns/pdns/test-iputils_hh.cc:136,1
    - Dst: memcpy
      Src: /src/pdns/pdns/test-iputils_hh.cc:139,1
    - Dst: std::bitset::set
      Src: /src/pdns/pdns/test-iputils_hh.cc:144,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-iputils_hh.cc:146,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-iputils_hh.cc:149,1
    - Dst: ComboAddress::truncate
      Src: /src/pdns/pdns/test-iputils_hh.cc:150,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-iputils_hh.cc:151,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/test-iputils_hh.cc:151,1
    - Dst: ComboAddress::truncate
      Src: /src/pdns/pdns/test-iputils_hh.cc:153,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-iputils_hh.cc:154,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/test-iputils_hh.cc:154,1
    - Dst: ComboAddress::truncate
      Src: /src/pdns/pdns/test-iputils_hh.cc:156,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-iputils_hh.cc:157,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/test-iputils_hh.cc:157,1
    - Dst: ComboAddress::truncate
      Src: /src/pdns/pdns/test-iputils_hh.cc:159,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-iputils_hh.cc:160,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/test-iputils_hh.cc:160,1
    - Dst: ComboAddress::truncate
      Src: /src/pdns/pdns/test-iputils_hh.cc:162,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-iputils_hh.cc:163,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/test-iputils_hh.cc:163,1
    - Dst: ComboAddress::truncate
      Src: /src/pdns/pdns/test-iputils_hh.cc:165,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-iputils_hh.cc:166,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/test-iputils_hh.cc:166,1
    - Dst: ComboAddress::truncate
      Src: /src/pdns/pdns/test-iputils_hh.cc:169,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-iputils_hh.cc:170,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/test-iputils_hh.cc:170,1
    - Dst: ComboAddress::truncate
      Src: /src/pdns/pdns/test-iputils_hh.cc:171,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-iputils_hh.cc:172,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/test-iputils_hh.cc:172,1
    - Dst: ComboAddress::truncate
      Src: /src/pdns/pdns/test-iputils_hh.cc:173,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-iputils_hh.cc:174,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/test-iputils_hh.cc:174,1
    - Dst: ComboAddress::truncate
      Src: /src/pdns/pdns/test-iputils_hh.cc:175,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-iputils_hh.cc:176,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/test-iputils_hh.cc:176,1
    - Dst: ComboAddress::truncate
      Src: /src/pdns/pdns/test-iputils_hh.cc:177,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-iputils_hh.cc:178,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/test-iputils_hh.cc:178,1
    - Dst: ComboAddress::truncate
      Src: /src/pdns/pdns/test-iputils_hh.cc:179,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-iputils_hh.cc:180,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/test-iputils_hh.cc:180,1
    - Dst: ComboAddress::truncate
      Src: /src/pdns/pdns/test-iputils_hh.cc:181,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-iputils_hh.cc:182,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/test-iputils_hh.cc:182,1
    - Dst: ComboAddress::truncate
      Src: /src/pdns/pdns/test-iputils_hh.cc:183,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-iputils_hh.cc:184,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/test-iputils_hh.cc:184,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-iputils_hh.cc:187,1
    - Dst: ComboAddress::truncate
      Src: /src/pdns/pdns/test-iputils_hh.cc:189,1
    - Dst: std::bitset<128>
      Src: /src/pdns/pdns/test-iputils_hh.cc:194,1
    - Dst: std::bitset<128>
      Src: /src/pdns/pdns/test-iputils_hh.cc:197,1
    - Dst: std::bitset::set
      Src: /src/pdns/pdns/test-iputils_hh.cc:202,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-iputils_hh.cc:204,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 56
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 206
      start: 121
    functionDepth: 0
    functionLinenumber: 121
    functionLinenumberEnd: 206
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-iputils_hh.cc
    functionUses: 0
    functionsReached:
    - memcpy
    - std::bitset::set
    - BOOST_CHECK_EQUAL
    - std::bitset<128>
    - ComboAddress::truncate
    - ComboAddress::toString
    - ComboAddress
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_ComboAddressTruncate)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-iputils_hh.cc:211,1
    - Dst: ComboAddress::toStringReversed
      Src: /src/pdns/pdns/test-iputils_hh.cc:211,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-iputils_hh.cc:214,1
    - Dst: ComboAddress::toStringReversed
      Src: /src/pdns/pdns/test-iputils_hh.cc:214,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-iputils_hh.cc:217,1
    - Dst: ComboAddress::toStringReversed
      Src: /src/pdns/pdns/test-iputils_hh.cc:217,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-iputils_hh.cc:220,1
    - Dst: ComboAddress::toStringReversed
      Src: /src/pdns/pdns/test-iputils_hh.cc:220,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-iputils_hh.cc:223,1
    - Dst: ComboAddress::toStringReversed
      Src: /src/pdns/pdns/test-iputils_hh.cc:223,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-iputils_hh.cc:226,1
    - Dst: ComboAddress::toStringReversed
      Src: /src/pdns/pdns/test-iputils_hh.cc:226,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 227
      start: 208
    functionDepth: 0
    functionLinenumber: 208
    functionLinenumberEnd: 227
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-iputils_hh.cc
    functionUses: 0
    functionsReached:
    - ComboAddress::toStringReversed
    - BOOST_CHECK_EQUAL
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_ComboAddressReverse)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-iputils_hh.cc:232,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/test-iputils_hh.cc:232,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 233
      start: 229
    functionDepth: 0
    functionLinenumber: 229
    functionLinenumberEnd: 233
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-iputils_hh.cc
    functionUses: 0
    functionsReached:
    - BOOST_CHECK_EQUAL
    - ComboAddress::toString
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_Mapping)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-iputils_hh.cc:240,1
    - Dst: Netmask::getBits
      Src: /src/pdns/pdns/test-iputils_hh.cc:240,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-iputils_hh.cc:241,1
    - Dst: Netmask::match
      Src: /src/pdns/pdns/test-iputils_hh.cc:241,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-iputils_hh.cc:242,1
    - Dst: Netmask::match
      Src: /src/pdns/pdns/test-iputils_hh.cc:242,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-iputils_hh.cc:243,1
    - Dst: Netmask::isIPv4
      Src: /src/pdns/pdns/test-iputils_hh.cc:243,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-iputils_hh.cc:244,1
    - Dst: Netmask::isIPv6
      Src: /src/pdns/pdns/test-iputils_hh.cc:244,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-iputils_hh.cc:247,1
    - Dst: Netmask::getBits
      Src: /src/pdns/pdns/test-iputils_hh.cc:247,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-iputils_hh.cc:248,1
    - Dst: Netmask::match
      Src: /src/pdns/pdns/test-iputils_hh.cc:248,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-iputils_hh.cc:249,1
    - Dst: Netmask::match
      Src: /src/pdns/pdns/test-iputils_hh.cc:249,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-iputils_hh.cc:250,1
    - Dst: Netmask::isIPv4
      Src: /src/pdns/pdns/test-iputils_hh.cc:250,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-iputils_hh.cc:251,1
    - Dst: Netmask::isIPv6
      Src: /src/pdns/pdns/test-iputils_hh.cc:251,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-iputils_hh.cc:254,1
    - Dst: Netmask::match
      Src: /src/pdns/pdns/test-iputils_hh.cc:254,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-iputils_hh.cc:257,1
    - Dst: Netmask::match
      Src: /src/pdns/pdns/test-iputils_hh.cc:257,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-iputils_hh.cc:258,1
    - Dst: Netmask::match
      Src: /src/pdns/pdns/test-iputils_hh.cc:258,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-iputils_hh.cc:261,1
    - Dst: Netmask::match
      Src: /src/pdns/pdns/test-iputils_hh.cc:261,1
    - Dst: Netmask::match
      Src: /src/pdns/pdns/test-iputils_hh.cc:261,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-iputils_hh.cc:264,1
    - Dst: Netmask::match
      Src: /src/pdns/pdns/test-iputils_hh.cc:264,1
    - Dst: Netmask::match
      Src: /src/pdns/pdns/test-iputils_hh.cc:264,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-iputils_hh.cc:267,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-iputils_hh.cc:268,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-iputils_hh.cc:269,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-iputils_hh.cc:270,1
    - Dst: Netmask::match
      Src: /src/pdns/pdns/test-iputils_hh.cc:270,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-iputils_hh.cc:271,1
    - Dst: Netmask::match
      Src: /src/pdns/pdns/test-iputils_hh.cc:271,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-iputils_hh.cc:271,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-iputils_hh.cc:272,1
    - Dst: Netmask::getNetwork
      Src: /src/pdns/pdns/test-iputils_hh.cc:272,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-iputils_hh.cc:272,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-iputils_hh.cc:273,1
    - Dst: Netmask::getMaskedNetwork
      Src: /src/pdns/pdns/test-iputils_hh.cc:273,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-iputils_hh.cc:273,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-iputils_hh.cc:276,1
    - Dst: Netmask::getBits
      Src: /src/pdns/pdns/test-iputils_hh.cc:276,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-iputils_hh.cc:277,1
    - Dst: Netmask::getNetwork
      Src: /src/pdns/pdns/test-iputils_hh.cc:277,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-iputils_hh.cc:277,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-iputils_hh.cc:278,1
    - Dst: Netmask::getMaskedNetwork
      Src: /src/pdns/pdns/test-iputils_hh.cc:278,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-iputils_hh.cc:278,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-iputils_hh.cc:285,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-iputils_hh.cc:286,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-iputils_hh.cc:287,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-iputils_hh.cc:288,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-iputils_hh.cc:292,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-iputils_hh.cc:293,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-iputils_hh.cc:294,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-iputils_hh.cc:298,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-iputils_hh.cc:299,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-iputils_hh.cc:300,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-iputils_hh.cc:305,1
    - Dst: Netmask::match
      Src: /src/pdns/pdns/test-iputils_hh.cc:305,1
    - Dst: Netmask::getNetwork
      Src: /src/pdns/pdns/test-iputils_hh.cc:305,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-iputils_hh.cc:306,1
    - Dst: Netmask::match
      Src: /src/pdns/pdns/test-iputils_hh.cc:306,1
    - Dst: Netmask::getNetwork
      Src: /src/pdns/pdns/test-iputils_hh.cc:306,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-iputils_hh.cc:307,1
    - Dst: Netmask::match
      Src: /src/pdns/pdns/test-iputils_hh.cc:307,1
    - Dst: Netmask::getNetwork
      Src: /src/pdns/pdns/test-iputils_hh.cc:307,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-iputils_hh.cc:308,1
    - Dst: Netmask::match
      Src: /src/pdns/pdns/test-iputils_hh.cc:308,1
    - Dst: Netmask::getNetwork
      Src: /src/pdns/pdns/test-iputils_hh.cc:308,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-iputils_hh.cc:309,1
    - Dst: Netmask::match
      Src: /src/pdns/pdns/test-iputils_hh.cc:309,1
    - Dst: Netmask::getNetwork
      Src: /src/pdns/pdns/test-iputils_hh.cc:309,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-iputils_hh.cc:310,1
    - Dst: Netmask::match
      Src: /src/pdns/pdns/test-iputils_hh.cc:310,1
    - Dst: Netmask::getNetwork
      Src: /src/pdns/pdns/test-iputils_hh.cc:310,1
    - Dst: Netmask
      Src: /src/pdns/pdns/test-iputils_hh.cc:314,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-iputils_hh.cc:316,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-iputils_hh.cc:317,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-iputils_hh.cc:318,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-iputils_hh.cc:319,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-iputils_hh.cc:324,1
    - Dst: Netmask::getBits
      Src: /src/pdns/pdns/test-iputils_hh.cc:324,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-iputils_hh.cc:325,1
    - Dst: Netmask::getNetwork
      Src: /src/pdns/pdns/test-iputils_hh.cc:325,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-iputils_hh.cc:325,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-iputils_hh.cc:327,1
    - Dst: Netmask::getBits
      Src: /src/pdns/pdns/test-iputils_hh.cc:327,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-iputils_hh.cc:328,1
    - Dst: Netmask::getNetwork
      Src: /src/pdns/pdns/test-iputils_hh.cc:328,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-iputils_hh.cc:328,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-iputils_hh.cc:331,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-iputils_hh.cc:332,1
    - Dst: Netmask::getBits
      Src: /src/pdns/pdns/test-iputils_hh.cc:332,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-iputils_hh.cc:333,1
    - Dst: Netmask::getNetwork
      Src: /src/pdns/pdns/test-iputils_hh.cc:333,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-iputils_hh.cc:333,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-iputils_hh.cc:334,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-iputils_hh.cc:335,1
    - Dst: Netmask::getBits
      Src: /src/pdns/pdns/test-iputils_hh.cc:335,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-iputils_hh.cc:336,1
    - Dst: Netmask::getNetwork
      Src: /src/pdns/pdns/test-iputils_hh.cc:336,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-iputils_hh.cc:336,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 54
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 338
      start: 235
    functionDepth: 0
    functionLinenumber: 235
    functionLinenumberEnd: 338
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-iputils_hh.cc
    functionUses: 0
    functionsReached:
    - Netmask
    - Netmask::getNetwork
    - Netmask::getBits
    - ComboAddress
    - Netmask::getMaskedNetwork
    - BOOST_CHECK_EQUAL
    - Netmask::isIPv4
    - Netmask::match
    - BOOST_CHECK
    - Netmask::isIPv6
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_Netmask)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: stringtok
      Src: /src/pdns/pdns/test-iputils_hh.cc:343,1
    - Dst: std::sort
      Src: /src/pdns/pdns/test-iputils_hh.cc:344,1
    - Dst: std::vector::begin
      Src: /src/pdns/pdns/test-iputils_hh.cc:344,1
    - Dst: std::vector::end
      Src: /src/pdns/pdns/test-iputils_hh.cc:344,1
    - Dst: std::string::empty
      Src: /src/pdns/pdns/test-iputils_hh.cc:347,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - ' str'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 354
      start: 340
    functionDepth: 0
    functionLinenumber: 340
    functionLinenumberEnd: 354
    functionName: NMGOutputToSorted
    functionSourceFile: /src/pdns/pdns/test-iputils_hh.cc
    functionUses: 0
    functionsReached:
    - std::vector::end
    - stringtok
    - std::vector::begin
    - std::sort
    - std::string::empty
    linkageType: ''
    returnType: std::string
    signature: std::string NMGOutputToSorted(const std::string& str)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: NetmaskGroup::NetmaskGroup
      Src: /src/pdns/pdns/test-iputils_hh.cc:359,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-iputils_hh.cc:360,1
    - Dst: NetmaskGroup::empty
      Src: /src/pdns/pdns/test-iputils_hh.cc:360,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-iputils_hh.cc:361,1
    - Dst: NetmaskGroup::size
      Src: /src/pdns/pdns/test-iputils_hh.cc:361,1
    - Dst: NetmaskGroup::addMask
      Src: /src/pdns/pdns/test-iputils_hh.cc:362,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-iputils_hh.cc:363,1
    - Dst: NetmaskGroup::empty
      Src: /src/pdns/pdns/test-iputils_hh.cc:363,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-iputils_hh.cc:364,1
    - Dst: NetmaskGroup::size
      Src: /src/pdns/pdns/test-iputils_hh.cc:364,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-iputils_hh.cc:365,1
    - Dst: NetmaskGroup::match
      Src: /src/pdns/pdns/test-iputils_hh.cc:365,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-iputils_hh.cc:365,1
    - Dst: NetmaskGroup::toMasks
      Src: /src/pdns/pdns/test-iputils_hh.cc:366,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-iputils_hh.cc:367,1
    - Dst: NetmaskGroup::size
      Src: /src/pdns/pdns/test-iputils_hh.cc:367,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-iputils_hh.cc:368,1
    - Dst: NetmaskGroup::match
      Src: /src/pdns/pdns/test-iputils_hh.cc:368,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-iputils_hh.cc:368,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-iputils_hh.cc:369,1
    - Dst: NetmaskGroup::match
      Src: /src/pdns/pdns/test-iputils_hh.cc:369,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-iputils_hh.cc:369,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-iputils_hh.cc:370,1
    - Dst: NetmaskGroup::match
      Src: /src/pdns/pdns/test-iputils_hh.cc:370,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-iputils_hh.cc:370,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-iputils_hh.cc:371,1
    - Dst: NetmaskGroup::match
      Src: /src/pdns/pdns/test-iputils_hh.cc:371,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-iputils_hh.cc:371,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-iputils_hh.cc:372,1
    - Dst: NetmaskGroup::match
      Src: /src/pdns/pdns/test-iputils_hh.cc:372,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-iputils_hh.cc:372,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-iputils_hh.cc:373,1
    - Dst: NetmaskGroup::match
      Src: /src/pdns/pdns/test-iputils_hh.cc:373,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-iputils_hh.cc:373,1
    - Dst: NetmaskGroup::addMask
      Src: /src/pdns/pdns/test-iputils_hh.cc:374,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-iputils_hh.cc:375,1
    - Dst: NetmaskGroup::size
      Src: /src/pdns/pdns/test-iputils_hh.cc:375,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-iputils_hh.cc:376,1
    - Dst: NetmaskGroup::match
      Src: /src/pdns/pdns/test-iputils_hh.cc:376,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-iputils_hh.cc:376,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-iputils_hh.cc:377,1
    - Dst: NetmaskGroup::match
      Src: /src/pdns/pdns/test-iputils_hh.cc:377,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-iputils_hh.cc:377,1
    - Dst: NetmaskGroup::addMask
      Src: /src/pdns/pdns/test-iputils_hh.cc:378,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-iputils_hh.cc:379,1
    - Dst: NetmaskGroup::size
      Src: /src/pdns/pdns/test-iputils_hh.cc:379,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-iputils_hh.cc:380,1
    - Dst: NetmaskGroup::match
      Src: /src/pdns/pdns/test-iputils_hh.cc:380,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-iputils_hh.cc:380,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-iputils_hh.cc:381,1
    - Dst: NetmaskGroup::match
      Src: /src/pdns/pdns/test-iputils_hh.cc:381,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-iputils_hh.cc:381,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-iputils_hh.cc:382,1
    - Dst: NMGOutputToSorted
      Src: /src/pdns/pdns/test-iputils_hh.cc:382,1
    - Dst: NetmaskGroup::toString
      Src: /src/pdns/pdns/test-iputils_hh.cc:382,1
    - Dst: NMGOutputToSorted
      Src: /src/pdns/pdns/test-iputils_hh.cc:382,1
    - Dst: NetmaskGroup::addMask
      Src: /src/pdns/pdns/test-iputils_hh.cc:385,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-iputils_hh.cc:386,1
    - Dst: NetmaskGroup::size
      Src: /src/pdns/pdns/test-iputils_hh.cc:386,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-iputils_hh.cc:387,1
    - Dst: NetmaskGroup::match
      Src: /src/pdns/pdns/test-iputils_hh.cc:387,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-iputils_hh.cc:387,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-iputils_hh.cc:388,1
    - Dst: NetmaskGroup::match
      Src: /src/pdns/pdns/test-iputils_hh.cc:388,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-iputils_hh.cc:388,1
    - Dst: NetmaskGroup::addMask
      Src: /src/pdns/pdns/test-iputils_hh.cc:389,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-iputils_hh.cc:390,1
    - Dst: NetmaskGroup::size
      Src: /src/pdns/pdns/test-iputils_hh.cc:390,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-iputils_hh.cc:391,1
    - Dst: NetmaskGroup::match
      Src: /src/pdns/pdns/test-iputils_hh.cc:391,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-iputils_hh.cc:391,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-iputils_hh.cc:392,1
    - Dst: NetmaskGroup::match
      Src: /src/pdns/pdns/test-iputils_hh.cc:392,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-iputils_hh.cc:392,1
    - Dst: NetmaskGroup::addMask
      Src: /src/pdns/pdns/test-iputils_hh.cc:393,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-iputils_hh.cc:394,1
    - Dst: NetmaskGroup::size
      Src: /src/pdns/pdns/test-iputils_hh.cc:394,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-iputils_hh.cc:395,1
    - Dst: NetmaskGroup::match
      Src: /src/pdns/pdns/test-iputils_hh.cc:395,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-iputils_hh.cc:395,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-iputils_hh.cc:396,1
    - Dst: NetmaskGroup::match
      Src: /src/pdns/pdns/test-iputils_hh.cc:396,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-iputils_hh.cc:396,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-iputils_hh.cc:398,1
    - Dst: NetmaskGroup::match
      Src: /src/pdns/pdns/test-iputils_hh.cc:398,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-iputils_hh.cc:398,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-iputils_hh.cc:401,1
    - Dst: NetmaskGroup::match
      Src: /src/pdns/pdns/test-iputils_hh.cc:401,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-iputils_hh.cc:401,1
    - Dst: NetmaskGroup::addMask
      Src: /src/pdns/pdns/test-iputils_hh.cc:402,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-iputils_hh.cc:403,1
    - Dst: NetmaskGroup::size
      Src: /src/pdns/pdns/test-iputils_hh.cc:403,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-iputils_hh.cc:404,1
    - Dst: NetmaskGroup::match
      Src: /src/pdns/pdns/test-iputils_hh.cc:404,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-iputils_hh.cc:404,1
    - Dst: NetmaskGroup::addMask
      Src: /src/pdns/pdns/test-iputils_hh.cc:405,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-iputils_hh.cc:406,1
    - Dst: NetmaskGroup::size
      Src: /src/pdns/pdns/test-iputils_hh.cc:406,1
    - Dst: NetmaskGroup::addMask
      Src: /src/pdns/pdns/test-iputils_hh.cc:407,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-iputils_hh.cc:408,1
    - Dst: NetmaskGroup::size
      Src: /src/pdns/pdns/test-iputils_hh.cc:408,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-iputils_hh.cc:409,1
    - Dst: NetmaskGroup::match
      Src: /src/pdns/pdns/test-iputils_hh.cc:409,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-iputils_hh.cc:409,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-iputils_hh.cc:411,1
    - Dst: NetmaskGroup::match
      Src: /src/pdns/pdns/test-iputils_hh.cc:411,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-iputils_hh.cc:411,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-iputils_hh.cc:413,1
    - Dst: NMGOutputToSorted
      Src: /src/pdns/pdns/test-iputils_hh.cc:413,1
    - Dst: NetmaskGroup::toString
      Src: /src/pdns/pdns/test-iputils_hh.cc:413,1
    - Dst: NMGOutputToSorted
      Src: /src/pdns/pdns/test-iputils_hh.cc:413,1
    - Dst: NetmaskGroup::NetmaskGroup
      Src: /src/pdns/pdns/test-iputils_hh.cc:418,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-iputils_hh.cc:419,1
    - Dst: NetmaskGroup::empty
      Src: /src/pdns/pdns/test-iputils_hh.cc:419,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-iputils_hh.cc:420,1
    - Dst: NetmaskGroup::size
      Src: /src/pdns/pdns/test-iputils_hh.cc:420,1
    - Dst: NetmaskGroup::addMask
      Src: /src/pdns/pdns/test-iputils_hh.cc:421,1
    - Dst: Netmask
      Src: /src/pdns/pdns/test-iputils_hh.cc:421,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-iputils_hh.cc:422,1
    - Dst: NetmaskGroup::empty
      Src: /src/pdns/pdns/test-iputils_hh.cc:422,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-iputils_hh.cc:423,1
    - Dst: NetmaskGroup::size
      Src: /src/pdns/pdns/test-iputils_hh.cc:423,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-iputils_hh.cc:424,1
    - Dst: NetmaskGroup::match
      Src: /src/pdns/pdns/test-iputils_hh.cc:424,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-iputils_hh.cc:424,1
    - Dst: NetmaskGroup::addMask
      Src: /src/pdns/pdns/test-iputils_hh.cc:425,1
    - Dst: Netmask
      Src: /src/pdns/pdns/test-iputils_hh.cc:425,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-iputils_hh.cc:426,1
    - Dst: NetmaskGroup::size
      Src: /src/pdns/pdns/test-iputils_hh.cc:426,1
    - Dst: NetmaskGroup::addMask
      Src: /src/pdns/pdns/test-iputils_hh.cc:427,1
    - Dst: Netmask
      Src: /src/pdns/pdns/test-iputils_hh.cc:427,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-iputils_hh.cc:428,1
    - Dst: NetmaskGroup::size
      Src: /src/pdns/pdns/test-iputils_hh.cc:428,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-iputils_hh.cc:429,1
    - Dst: NetmaskGroup::match
      Src: /src/pdns/pdns/test-iputils_hh.cc:429,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-iputils_hh.cc:429,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-iputils_hh.cc:430,1
    - Dst: NetmaskGroup::match
      Src: /src/pdns/pdns/test-iputils_hh.cc:430,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-iputils_hh.cc:430,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-iputils_hh.cc:431,1
    - Dst: NetmaskGroup::match
      Src: /src/pdns/pdns/test-iputils_hh.cc:431,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-iputils_hh.cc:431,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-iputils_hh.cc:432,1
    - Dst: NetmaskGroup::match
      Src: /src/pdns/pdns/test-iputils_hh.cc:432,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-iputils_hh.cc:432,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-iputils_hh.cc:433,1
    - Dst: NetmaskGroup::match
      Src: /src/pdns/pdns/test-iputils_hh.cc:433,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-iputils_hh.cc:433,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-iputils_hh.cc:434,1
    - Dst: NetmaskGroup::match
      Src: /src/pdns/pdns/test-iputils_hh.cc:434,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-iputils_hh.cc:434,1
    - Dst: NetmaskGroup::addMask
      Src: /src/pdns/pdns/test-iputils_hh.cc:435,1
    - Dst: Netmask
      Src: /src/pdns/pdns/test-iputils_hh.cc:435,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-iputils_hh.cc:436,1
    - Dst: NetmaskGroup::size
      Src: /src/pdns/pdns/test-iputils_hh.cc:436,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-iputils_hh.cc:437,1
    - Dst: NetmaskGroup::match
      Src: /src/pdns/pdns/test-iputils_hh.cc:437,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-iputils_hh.cc:437,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-iputils_hh.cc:438,1
    - Dst: NetmaskGroup::match
      Src: /src/pdns/pdns/test-iputils_hh.cc:438,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-iputils_hh.cc:438,1
    - Dst: NetmaskGroup::addMask
      Src: /src/pdns/pdns/test-iputils_hh.cc:439,1
    - Dst: Netmask
      Src: /src/pdns/pdns/test-iputils_hh.cc:439,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-iputils_hh.cc:440,1
    - Dst: NetmaskGroup::size
      Src: /src/pdns/pdns/test-iputils_hh.cc:440,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-iputils_hh.cc:441,1
    - Dst: NetmaskGroup::match
      Src: /src/pdns/pdns/test-iputils_hh.cc:441,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-iputils_hh.cc:441,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-iputils_hh.cc:442,1
    - Dst: NetmaskGroup::match
      Src: /src/pdns/pdns/test-iputils_hh.cc:442,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-iputils_hh.cc:442,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-iputils_hh.cc:443,1
    - Dst: NMGOutputToSorted
      Src: /src/pdns/pdns/test-iputils_hh.cc:443,1
    - Dst: NetmaskGroup::toString
      Src: /src/pdns/pdns/test-iputils_hh.cc:443,1
    - Dst: NMGOutputToSorted
      Src: /src/pdns/pdns/test-iputils_hh.cc:443,1
    - Dst: NetmaskGroup::addMask
      Src: /src/pdns/pdns/test-iputils_hh.cc:446,1
    - Dst: Netmask
      Src: /src/pdns/pdns/test-iputils_hh.cc:446,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-iputils_hh.cc:447,1
    - Dst: NetmaskGroup::size
      Src: /src/pdns/pdns/test-iputils_hh.cc:447,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-iputils_hh.cc:448,1
    - Dst: NetmaskGroup::match
      Src: /src/pdns/pdns/test-iputils_hh.cc:448,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-iputils_hh.cc:448,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-iputils_hh.cc:449,1
    - Dst: NetmaskGroup::match
      Src: /src/pdns/pdns/test-iputils_hh.cc:449,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-iputils_hh.cc:449,1
    - Dst: NetmaskGroup::addMask
      Src: /src/pdns/pdns/test-iputils_hh.cc:450,1
    - Dst: Netmask
      Src: /src/pdns/pdns/test-iputils_hh.cc:450,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-iputils_hh.cc:451,1
    - Dst: NetmaskGroup::size
      Src: /src/pdns/pdns/test-iputils_hh.cc:451,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-iputils_hh.cc:452,1
    - Dst: NetmaskGroup::match
      Src: /src/pdns/pdns/test-iputils_hh.cc:452,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-iputils_hh.cc:452,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-iputils_hh.cc:453,1
    - Dst: NetmaskGroup::match
      Src: /src/pdns/pdns/test-iputils_hh.cc:453,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-iputils_hh.cc:453,1
    - Dst: NetmaskGroup::addMask
      Src: /src/pdns/pdns/test-iputils_hh.cc:454,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-iputils_hh.cc:455,1
    - Dst: NetmaskGroup::size
      Src: /src/pdns/pdns/test-iputils_hh.cc:455,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-iputils_hh.cc:456,1
    - Dst: NetmaskGroup::match
      Src: /src/pdns/pdns/test-iputils_hh.cc:456,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-iputils_hh.cc:456,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-iputils_hh.cc:457,1
    - Dst: NetmaskGroup::match
      Src: /src/pdns/pdns/test-iputils_hh.cc:457,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-iputils_hh.cc:457,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-iputils_hh.cc:459,1
    - Dst: NetmaskGroup::match
      Src: /src/pdns/pdns/test-iputils_hh.cc:459,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-iputils_hh.cc:459,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-iputils_hh.cc:461,1
    - Dst: NMGOutputToSorted
      Src: /src/pdns/pdns/test-iputils_hh.cc:461,1
    - Dst: NetmaskGroup::toString
      Src: /src/pdns/pdns/test-iputils_hh.cc:461,1
    - Dst: NMGOutputToSorted
      Src: /src/pdns/pdns/test-iputils_hh.cc:461,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 89
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 463
      start: 356
    functionDepth: 0
    functionLinenumber: 356
    functionLinenumberEnd: 463
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-iputils_hh.cc
    functionUses: 0
    functionsReached:
    - Netmask
    - NetmaskGroup::NetmaskGroup
    - NMGOutputToSorted
    - NetmaskGroup::match
    - BOOST_CHECK_EQUAL
    - NetmaskGroup::toMasks
    - NetmaskGroup::addMask
    - NetmaskGroup::size
    - NetmaskGroup::toString
    - BOOST_CHECK
    - NetmaskGroup::empty
    - ComboAddress
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_NetmaskGroup)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: NetmaskTree::NetmaskTree
      Src: /src/pdns/pdns/test-iputils_hh.cc:466,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-iputils_hh.cc:467,1
    - Dst: NetmaskTree::empty
      Src: /src/pdns/pdns/test-iputils_hh.cc:467,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-iputils_hh.cc:468,1
    - Dst: NetmaskTree::size
      Src: /src/pdns/pdns/test-iputils_hh.cc:468,1
    - Dst: NetmaskTree::insert
      Src: /src/pdns/pdns/test-iputils_hh.cc:469,1
    - Dst: Netmask
      Src: /src/pdns/pdns/test-iputils_hh.cc:469,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-iputils_hh.cc:470,1
    - Dst: NetmaskTree::empty
      Src: /src/pdns/pdns/test-iputils_hh.cc:470,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-iputils_hh.cc:471,1
    - Dst: NetmaskTree::size
      Src: /src/pdns/pdns/test-iputils_hh.cc:471,1
    - Dst: NetmaskTree::insert
      Src: /src/pdns/pdns/test-iputils_hh.cc:472,1
    - Dst: Netmask
      Src: /src/pdns/pdns/test-iputils_hh.cc:472,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-iputils_hh.cc:473,1
    - Dst: NetmaskTree::size
      Src: /src/pdns/pdns/test-iputils_hh.cc:473,1
    - Dst: NetmaskTree::insert
      Src: /src/pdns/pdns/test-iputils_hh.cc:474,1
    - Dst: Netmask
      Src: /src/pdns/pdns/test-iputils_hh.cc:474,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-iputils_hh.cc:475,1
    - Dst: NetmaskTree::size
      Src: /src/pdns/pdns/test-iputils_hh.cc:475,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-iputils_hh.cc:477,1
    - Dst: NetmaskTree::lookup
      Src: /src/pdns/pdns/test-iputils_hh.cc:477,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-iputils_hh.cc:477,1
    - Dst: NetmaskTree::lookup
      Src: /src/pdns/pdns/test-iputils_hh.cc:478,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-iputils_hh.cc:478,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-iputils_hh.cc:479,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-iputils_hh.cc:480,1
    - Dst: NetmaskTree::lookup
      Src: /src/pdns/pdns/test-iputils_hh.cc:481,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-iputils_hh.cc:481,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-iputils_hh.cc:482,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-iputils_hh.cc:483,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-iputils_hh.cc:485,1
    - Dst: NetmaskTree::lookup
      Src: /src/pdns/pdns/test-iputils_hh.cc:485,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-iputils_hh.cc:485,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-iputils_hh.cc:486,1
    - Dst: NetmaskTree::lookup
      Src: /src/pdns/pdns/test-iputils_hh.cc:486,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-iputils_hh.cc:486,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-iputils_hh.cc:487,1
    - Dst: NetmaskTree::lookup
      Src: /src/pdns/pdns/test-iputils_hh.cc:487,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-iputils_hh.cc:487,1
    - Dst: NetmaskTree::lookup
      Src: /src/pdns/pdns/test-iputils_hh.cc:489,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-iputils_hh.cc:489,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-iputils_hh.cc:490,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-iputils_hh.cc:491,1
    - Dst: NetmaskTree::insert
      Src: /src/pdns/pdns/test-iputils_hh.cc:493,1
    - Dst: Netmask
      Src: /src/pdns/pdns/test-iputils_hh.cc:493,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-iputils_hh.cc:494,1
    - Dst: NetmaskTree::size
      Src: /src/pdns/pdns/test-iputils_hh.cc:494,1
    - Dst: NetmaskTree::insert
      Src: /src/pdns/pdns/test-iputils_hh.cc:495,1
    - Dst: Netmask
      Src: /src/pdns/pdns/test-iputils_hh.cc:495,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-iputils_hh.cc:496,1
    - Dst: NetmaskTree::size
      Src: /src/pdns/pdns/test-iputils_hh.cc:496,1
    - Dst: NetmaskTree::insert
      Src: /src/pdns/pdns/test-iputils_hh.cc:497,1
    - Dst: Netmask
      Src: /src/pdns/pdns/test-iputils_hh.cc:497,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-iputils_hh.cc:498,1
    - Dst: NetmaskTree::size
      Src: /src/pdns/pdns/test-iputils_hh.cc:498,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-iputils_hh.cc:499,1
    - Dst: NetmaskTree::lookup
      Src: /src/pdns/pdns/test-iputils_hh.cc:499,1
    - Dst: Netmask
      Src: /src/pdns/pdns/test-iputils_hh.cc:499,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-iputils_hh.cc:500,1
    - Dst: NetmaskTree::lookup
      Src: /src/pdns/pdns/test-iputils_hh.cc:500,1
    - Dst: Netmask
      Src: /src/pdns/pdns/test-iputils_hh.cc:500,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-iputils_hh.cc:501,1
    - Dst: NetmaskTree::lookup
      Src: /src/pdns/pdns/test-iputils_hh.cc:501,1
    - Dst: Netmask
      Src: /src/pdns/pdns/test-iputils_hh.cc:501,1
    - Dst: NetmaskTree::clear
      Src: /src/pdns/pdns/test-iputils_hh.cc:503,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-iputils_hh.cc:504,1
    - Dst: NetmaskTree::empty
      Src: /src/pdns/pdns/test-iputils_hh.cc:504,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-iputils_hh.cc:505,1
    - Dst: NetmaskTree::size
      Src: /src/pdns/pdns/test-iputils_hh.cc:505,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-iputils_hh.cc:506,1
    - Dst: NetmaskTree::lookup
      Src: /src/pdns/pdns/test-iputils_hh.cc:506,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-iputils_hh.cc:506,1
    - Dst: NetmaskTree::insert
      Src: /src/pdns/pdns/test-iputils_hh.cc:508,1
    - Dst: Netmask
      Src: /src/pdns/pdns/test-iputils_hh.cc:508,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-iputils_hh.cc:509,1
    - Dst: NetmaskTree::empty
      Src: /src/pdns/pdns/test-iputils_hh.cc:509,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-iputils_hh.cc:510,1
    - Dst: NetmaskTree::size
      Src: /src/pdns/pdns/test-iputils_hh.cc:510,1
    - Dst: NetmaskTree::insert
      Src: /src/pdns/pdns/test-iputils_hh.cc:511,1
    - Dst: Netmask
      Src: /src/pdns/pdns/test-iputils_hh.cc:511,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-iputils_hh.cc:512,1
    - Dst: NetmaskTree::size
      Src: /src/pdns/pdns/test-iputils_hh.cc:512,1
    - Dst: NetmaskTree::insert
      Src: /src/pdns/pdns/test-iputils_hh.cc:513,1
    - Dst: Netmask
      Src: /src/pdns/pdns/test-iputils_hh.cc:513,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-iputils_hh.cc:514,1
    - Dst: NetmaskTree::size
      Src: /src/pdns/pdns/test-iputils_hh.cc:514,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-iputils_hh.cc:515,1
    - Dst: NetmaskTree::lookup
      Src: /src/pdns/pdns/test-iputils_hh.cc:515,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-iputils_hh.cc:515,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-iputils_hh.cc:516,1
    - Dst: NetmaskTree::lookup
      Src: /src/pdns/pdns/test-iputils_hh.cc:516,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-iputils_hh.cc:516,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-iputils_hh.cc:517,1
    - Dst: NetmaskTree::lookup
      Src: /src/pdns/pdns/test-iputils_hh.cc:517,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-iputils_hh.cc:517,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-iputils_hh.cc:518,1
    - Dst: NetmaskTree::lookup
      Src: /src/pdns/pdns/test-iputils_hh.cc:518,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-iputils_hh.cc:518,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-iputils_hh.cc:519,1
    - Dst: NetmaskTree::lookup
      Src: /src/pdns/pdns/test-iputils_hh.cc:519,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-iputils_hh.cc:519,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 47
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 520
      start: 465
    functionDepth: 1
    functionLinenumber: 465
    functionLinenumberEnd: 520
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-iputils_hh.cc
    functionUses: 0
    functionsReached:
    - Netmask
    - NetmaskTree::empty
    - NetmaskTree::size
    - BOOST_CHECK_EQUAL
    - NetmaskTree::lookup
    - NetmaskTree::clear
    - NetmaskTree::insert
    - BOOST_CHECK
    - NetmaskTree::NetmaskTree
    - ComboAddress
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_NetmaskTree)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: NetmaskTree::NetmaskTree
      Src: /src/pdns/pdns/test-iputils_hh.cc:523,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-iputils_hh.cc:524,1
    - Dst: NetmaskTree::empty
      Src: /src/pdns/pdns/test-iputils_hh.cc:524,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-iputils_hh.cc:525,1
    - Dst: NetmaskTree::size
      Src: /src/pdns/pdns/test-iputils_hh.cc:525,1
    - Dst: NetmaskTree::insert
      Src: /src/pdns/pdns/test-iputils_hh.cc:526,1
    - Dst: Netmask
      Src: /src/pdns/pdns/test-iputils_hh.cc:526,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-iputils_hh.cc:527,1
    - Dst: NetmaskTree::empty
      Src: /src/pdns/pdns/test-iputils_hh.cc:527,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-iputils_hh.cc:528,1
    - Dst: NetmaskTree::size
      Src: /src/pdns/pdns/test-iputils_hh.cc:528,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-iputils_hh.cc:529,1
    - Dst: NetmaskTree::lookup
      Src: /src/pdns/pdns/test-iputils_hh.cc:529,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-iputils_hh.cc:529,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 530
      start: 522
    functionDepth: 1
    functionLinenumber: 522
    functionLinenumberEnd: 530
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-iputils_hh.cc
    functionUses: 0
    functionsReached:
    - Netmask
    - NetmaskTree::empty
    - NetmaskTree::size
    - BOOST_CHECK_EQUAL
    - NetmaskTree::lookup
    - NetmaskTree::insert
    - NetmaskTree::NetmaskTree
    - ComboAddress
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_single)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: NetmaskTree::NetmaskTree
      Src: /src/pdns/pdns/test-iputils_hh.cc:534,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-iputils_hh.cc:535,1
    - Dst: NetmaskTree::size
      Src: /src/pdns/pdns/test-iputils_hh.cc:535,1
    - Dst: NetmaskTree::insert
      Src: /src/pdns/pdns/test-iputils_hh.cc:538,1
    - Dst: Netmask
      Src: /src/pdns/pdns/test-iputils_hh.cc:538,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/test-iputils_hh.cc:538,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/test-iputils_hh.cc:538,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-iputils_hh.cc:539,1
    - Dst: NetmaskTree::size
      Src: /src/pdns/pdns/test-iputils_hh.cc:539,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-iputils_hh.cc:545,1
    - Dst: NetmaskTree::lookup
      Src: /src/pdns/pdns/test-iputils_hh.cc:545,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-iputils_hh.cc:545,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/test-iputils_hh.cc:545,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/test-iputils_hh.cc:545,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-iputils_hh.cc:552,1
    - Dst: NetmaskTree::lookup
      Src: /src/pdns/pdns/test-iputils_hh.cc:552,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-iputils_hh.cc:552,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/test-iputils_hh.cc:552,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/test-iputils_hh.cc:552,1
    - Dst: NetmaskTree::insert
      Src: /src/pdns/pdns/test-iputils_hh.cc:559,1
    - Dst: Netmask
      Src: /src/pdns/pdns/test-iputils_hh.cc:559,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/test-iputils_hh.cc:559,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/test-iputils_hh.cc:559,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-iputils_hh.cc:560,1
    - Dst: NetmaskTree::size
      Src: /src/pdns/pdns/test-iputils_hh.cc:560,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-iputils_hh.cc:566,1
    - Dst: NetmaskTree::lookup
      Src: /src/pdns/pdns/test-iputils_hh.cc:566,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-iputils_hh.cc:566,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/test-iputils_hh.cc:566,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/test-iputils_hh.cc:566,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/test-iputils_hh.cc:566,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/test-iputils_hh.cc:566,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-iputils_hh.cc:573,1
    - Dst: NetmaskTree::lookup
      Src: /src/pdns/pdns/test-iputils_hh.cc:573,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-iputils_hh.cc:573,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/test-iputils_hh.cc:573,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/test-iputils_hh.cc:573,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/test-iputils_hh.cc:573,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/test-iputils_hh.cc:573,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 37
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 576
      start: 532
    functionDepth: 1
    functionLinenumber: 532
    functionLinenumberEnd: 576
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-iputils_hh.cc
    functionUses: 0
    functionsReached:
    - Netmask
    - std::to_string
    - NetmaskTree::size
    - BOOST_CHECK_EQUAL
    - NetmaskTree::lookup
    - NetmaskTree::insert
    - NetmaskTree::NetmaskTree
    - ComboAddress
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_scale)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: NetmaskTree::NetmaskTree
      Src: /src/pdns/pdns/test-iputils_hh.cc:580,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-iputils_hh.cc:581,1
    - Dst: NetmaskTree::empty
      Src: /src/pdns/pdns/test-iputils_hh.cc:581,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-iputils_hh.cc:582,1
    - Dst: NetmaskTree::size
      Src: /src/pdns/pdns/test-iputils_hh.cc:582,1
    - Dst: NetmaskTree::insert
      Src: /src/pdns/pdns/test-iputils_hh.cc:587,1
    - Dst: Netmask
      Src: /src/pdns/pdns/test-iputils_hh.cc:587,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/test-iputils_hh.cc:587,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/test-iputils_hh.cc:587,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-iputils_hh.cc:589,1
    - Dst: NetmaskTree::size
      Src: /src/pdns/pdns/test-iputils_hh.cc:589,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/test-iputils_hh.cc:594,1
    - Dst: NetmaskTree::lookup
      Src: /src/pdns/pdns/test-iputils_hh.cc:595,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-iputils_hh.cc:596,1
    - Dst: auto::first::getBits
      Src: /src/pdns/pdns/test-iputils_hh.cc:596,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-iputils_hh.cc:597,1
    - Dst: auto::first::getMaskedNetwork
      Src: /src/pdns/pdns/test-iputils_hh.cc:597,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/test-iputils_hh.cc:597,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-iputils_hh.cc:598,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/test-iputils_hh.cc:603,1
    - Dst: NetmaskTree::erase
      Src: /src/pdns/pdns/test-iputils_hh.cc:604,1
    - Dst: Netmask
      Src: /src/pdns/pdns/test-iputils_hh.cc:604,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-iputils_hh.cc:606,1
    - Dst: NetmaskTree::size
      Src: /src/pdns/pdns/test-iputils_hh.cc:606,1
    - Dst: NetmaskTree::lookup
      Src: /src/pdns/pdns/test-iputils_hh.cc:607,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/test-iputils_hh.cc:610,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-iputils_hh.cc:611,1
    - Dst: auto::first::getBits
      Src: /src/pdns/pdns/test-iputils_hh.cc:611,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-iputils_hh.cc:612,1
    - Dst: auto::first::getMaskedNetwork
      Src: /src/pdns/pdns/test-iputils_hh.cc:612,1
    - Dst: Netmask
      Src: /src/pdns/pdns/test-iputils_hh.cc:612,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-iputils_hh.cc:613,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-iputils_hh.cc:616,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-iputils_hh.cc:621,1
    - Dst: NetmaskTree::size
      Src: /src/pdns/pdns/test-iputils_hh.cc:621,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-iputils_hh.cc:622,1
    - Dst: NetmaskTree::empty
      Src: /src/pdns/pdns/test-iputils_hh.cc:622,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 32
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 623
      start: 578
    functionDepth: 1
    functionLinenumber: 578
    functionLinenumberEnd: 623
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-iputils_hh.cc
    functionUses: 0
    functionsReached:
    - auto::first::getMaskedNetwork
    - Netmask
    - auto::first::getBits
    - NetmaskTree::empty
    - std::to_string
    - NetmaskTree::size
    - NetmaskTree::erase
    - BOOST_CHECK_EQUAL
    - NetmaskTree::lookup
    - NetmaskTree::insert
    - BOOST_REQUIRE
    - ComboAddress::toString
    - BOOST_CHECK
    - NetmaskTree::NetmaskTree
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_removal)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: NetmaskTree::NetmaskTree
      Src: /src/pdns/pdns/test-iputils_hh.cc:626,1
    - Dst: Netmask::Netmask
      Src: /src/pdns/pdns/test-iputils_hh.cc:633,1
    - Dst: Netmask
      Src: /src/pdns/pdns/test-iputils_hh.cc:636,1
    - Dst: std::stringstream::str
      Src: /src/pdns/pdns/test-iputils_hh.cc:636,1
    - Dst: NetmaskTree::insert
      Src: /src/pdns/pdns/test-iputils_hh.cc:637,1
    - Dst: std::set::insert
      Src: /src/pdns/pdns/test-iputils_hh.cc:638,1
    - Dst: Netmask::getNormalized
      Src: /src/pdns/pdns/test-iputils_hh.cc:638,1
    - Dst: std::stringstream::str
      Src: /src/pdns/pdns/test-iputils_hh.cc:640,1
    - Dst: Netmask
      Src: /src/pdns/pdns/test-iputils_hh.cc:642,1
    - Dst: std::stringstream::str
      Src: /src/pdns/pdns/test-iputils_hh.cc:642,1
    - Dst: NetmaskTree::insert
      Src: /src/pdns/pdns/test-iputils_hh.cc:643,1
    - Dst: std::set::insert
      Src: /src/pdns/pdns/test-iputils_hh.cc:644,1
    - Dst: Netmask::getNormalized
      Src: /src/pdns/pdns/test-iputils_hh.cc:644,1
    - Dst: std::stringstream::str
      Src: /src/pdns/pdns/test-iputils_hh.cc:646,1
    - Dst: Netmask
      Src: /src/pdns/pdns/test-iputils_hh.cc:648,1
    - Dst: std::stringstream::str
      Src: /src/pdns/pdns/test-iputils_hh.cc:648,1
    - Dst: NetmaskTree::insert
      Src: /src/pdns/pdns/test-iputils_hh.cc:649,1
    - Dst: std::set::insert
      Src: /src/pdns/pdns/test-iputils_hh.cc:650,1
    - Dst: Netmask::getNormalized
      Src: /src/pdns/pdns/test-iputils_hh.cc:650,1
    - Dst: std::stringstream::str
      Src: /src/pdns/pdns/test-iputils_hh.cc:652,1
    - Dst: Netmask
      Src: /src/pdns/pdns/test-iputils_hh.cc:654,1
    - Dst: std::stringstream::str
      Src: /src/pdns/pdns/test-iputils_hh.cc:654,1
    - Dst: NetmaskTree::insert
      Src: /src/pdns/pdns/test-iputils_hh.cc:655,1
    - Dst: std::set::insert
      Src: /src/pdns/pdns/test-iputils_hh.cc:656,1
    - Dst: Netmask::getNormalized
      Src: /src/pdns/pdns/test-iputils_hh.cc:656,1
    - Dst: std::stringstream::str
      Src: /src/pdns/pdns/test-iputils_hh.cc:658,1
    - Dst: Netmask
      Src: /src/pdns/pdns/test-iputils_hh.cc:660,1
    - Dst: std::stringstream::str
      Src: /src/pdns/pdns/test-iputils_hh.cc:660,1
    - Dst: NetmaskTree::insert
      Src: /src/pdns/pdns/test-iputils_hh.cc:661,1
    - Dst: std::set::insert
      Src: /src/pdns/pdns/test-iputils_hh.cc:662,1
    - Dst: Netmask::getNormalized
      Src: /src/pdns/pdns/test-iputils_hh.cc:662,1
    - Dst: std::stringstream::str
      Src: /src/pdns/pdns/test-iputils_hh.cc:664,1
    - Dst: Netmask
      Src: /src/pdns/pdns/test-iputils_hh.cc:666,1
    - Dst: std::stringstream::str
      Src: /src/pdns/pdns/test-iputils_hh.cc:666,1
    - Dst: NetmaskTree::insert
      Src: /src/pdns/pdns/test-iputils_hh.cc:667,1
    - Dst: std::set::insert
      Src: /src/pdns/pdns/test-iputils_hh.cc:668,1
    - Dst: Netmask::getNormalized
      Src: /src/pdns/pdns/test-iputils_hh.cc:668,1
    - Dst: std::stringstream::str
      Src: /src/pdns/pdns/test-iputils_hh.cc:670,1
    - Dst: Netmask
      Src: /src/pdns/pdns/test-iputils_hh.cc:672,1
    - Dst: std::stringstream::str
      Src: /src/pdns/pdns/test-iputils_hh.cc:672,1
    - Dst: NetmaskTree::insert
      Src: /src/pdns/pdns/test-iputils_hh.cc:673,1
    - Dst: std::set::insert
      Src: /src/pdns/pdns/test-iputils_hh.cc:674,1
    - Dst: Netmask::getNormalized
      Src: /src/pdns/pdns/test-iputils_hh.cc:674,1
    - Dst: std::stringstream::str
      Src: /src/pdns/pdns/test-iputils_hh.cc:676,1
    - Dst: Netmask
      Src: /src/pdns/pdns/test-iputils_hh.cc:678,1
    - Dst: std::stringstream::str
      Src: /src/pdns/pdns/test-iputils_hh.cc:678,1
    - Dst: NetmaskTree::insert
      Src: /src/pdns/pdns/test-iputils_hh.cc:679,1
    - Dst: std::set::insert
      Src: /src/pdns/pdns/test-iputils_hh.cc:680,1
    - Dst: Netmask::getNormalized
      Src: /src/pdns/pdns/test-iputils_hh.cc:680,1
    - Dst: std::stringstream::str
      Src: /src/pdns/pdns/test-iputils_hh.cc:682,1
    - Dst: Netmask
      Src: /src/pdns/pdns/test-iputils_hh.cc:684,1
    - Dst: std::stringstream::str
      Src: /src/pdns/pdns/test-iputils_hh.cc:684,1
    - Dst: NetmaskTree::insert
      Src: /src/pdns/pdns/test-iputils_hh.cc:685,1
    - Dst: std::set::insert
      Src: /src/pdns/pdns/test-iputils_hh.cc:686,1
    - Dst: Netmask::getNormalized
      Src: /src/pdns/pdns/test-iputils_hh.cc:686,1
    - Dst: Netmask::Netmask
      Src: /src/pdns/pdns/test-iputils_hh.cc:690,1
    - Dst: Netmask
      Src: /src/pdns/pdns/test-iputils_hh.cc:693,1
    - Dst: std::stringstream::str
      Src: /src/pdns/pdns/test-iputils_hh.cc:693,1
    - Dst: NetmaskTree::insert
      Src: /src/pdns/pdns/test-iputils_hh.cc:694,1
    - Dst: std::set::insert
      Src: /src/pdns/pdns/test-iputils_hh.cc:695,1
    - Dst: Netmask::getNormalized
      Src: /src/pdns/pdns/test-iputils_hh.cc:695,1
    - Dst: std::stringstream::str
      Src: /src/pdns/pdns/test-iputils_hh.cc:697,1
    - Dst: Netmask
      Src: /src/pdns/pdns/test-iputils_hh.cc:699,1
    - Dst: std::stringstream::str
      Src: /src/pdns/pdns/test-iputils_hh.cc:699,1
    - Dst: NetmaskTree::insert
      Src: /src/pdns/pdns/test-iputils_hh.cc:700,1
    - Dst: std::set::insert
      Src: /src/pdns/pdns/test-iputils_hh.cc:701,1
    - Dst: Netmask::getNormalized
      Src: /src/pdns/pdns/test-iputils_hh.cc:701,1
    - Dst: Netmask::Netmask
      Src: /src/pdns/pdns/test-iputils_hh.cc:705,1
    - Dst: Netmask
      Src: /src/pdns/pdns/test-iputils_hh.cc:708,1
    - Dst: std::stringstream::str
      Src: /src/pdns/pdns/test-iputils_hh.cc:708,1
    - Dst: NetmaskTree::insert
      Src: /src/pdns/pdns/test-iputils_hh.cc:709,1
    - Dst: std::set::insert
      Src: /src/pdns/pdns/test-iputils_hh.cc:710,1
    - Dst: Netmask::getNormalized
      Src: /src/pdns/pdns/test-iputils_hh.cc:710,1
    - Dst: std::stringstream::str
      Src: /src/pdns/pdns/test-iputils_hh.cc:712,1
    - Dst: Netmask
      Src: /src/pdns/pdns/test-iputils_hh.cc:714,1
    - Dst: std::stringstream::str
      Src: /src/pdns/pdns/test-iputils_hh.cc:714,1
    - Dst: NetmaskTree::insert
      Src: /src/pdns/pdns/test-iputils_hh.cc:715,1
    - Dst: std::set::insert
      Src: /src/pdns/pdns/test-iputils_hh.cc:716,1
    - Dst: Netmask::getNormalized
      Src: /src/pdns/pdns/test-iputils_hh.cc:716,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-iputils_hh.cc:721,1
    - Dst: NetmaskTree::size
      Src: /src/pdns/pdns/test-iputils_hh.cc:721,1
    - Dst: std::set::size
      Src: /src/pdns/pdns/test-iputils_hh.cc:721,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-iputils_hh.cc:722,1
    - Dst: std::distance
      Src: /src/pdns/pdns/test-iputils_hh.cc:722,1
    - Dst: NetmaskTree::begin
      Src: /src/pdns/pdns/test-iputils_hh.cc:722,1
    - Dst: NetmaskTree::end
      Src: /src/pdns/pdns/test-iputils_hh.cc:722,1
    - Dst: std::distance
      Src: /src/pdns/pdns/test-iputils_hh.cc:723,1
    - Dst: std::set::begin
      Src: /src/pdns/pdns/test-iputils_hh.cc:723,1
    - Dst: std::set::end
      Src: /src/pdns/pdns/test-iputils_hh.cc:723,1
    - Dst: first::getNormalized
      Src: /src/pdns/pdns/test-iputils_hh.cc:725,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-iputils_hh.cc:727,1
    - Dst: std::set::find
      Src: /src/pdns/pdns/test-iputils_hh.cc:727,1
    - Dst: std::set::end
      Src: /src/pdns/pdns/test-iputils_hh.cc:727,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-iputils_hh.cc:730,1
    - Dst: NetmaskTree::lookup
      Src: /src/pdns/pdns/test-iputils_hh.cc:730,1
    - Dst: NetmaskTree::insert
      Src: /src/pdns/pdns/test-iputils_hh.cc:737,1
    - Dst: NetmaskTree::erase
      Src: /src/pdns/pdns/test-iputils_hh.cc:738,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-iputils_hh.cc:741,1
    - Dst: NetmaskTree::size
      Src: /src/pdns/pdns/test-iputils_hh.cc:741,1
    - Dst: std::set::size
      Src: /src/pdns/pdns/test-iputils_hh.cc:741,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-iputils_hh.cc:742,1
    - Dst: std::distance
      Src: /src/pdns/pdns/test-iputils_hh.cc:742,1
    - Dst: NetmaskTree::begin
      Src: /src/pdns/pdns/test-iputils_hh.cc:742,1
    - Dst: NetmaskTree::end
      Src: /src/pdns/pdns/test-iputils_hh.cc:742,1
    - Dst: std::distance
      Src: /src/pdns/pdns/test-iputils_hh.cc:743,1
    - Dst: std::set::begin
      Src: /src/pdns/pdns/test-iputils_hh.cc:743,1
    - Dst: std::set::end
      Src: /src/pdns/pdns/test-iputils_hh.cc:743,1
    - Dst: first::getNormalized
      Src: /src/pdns/pdns/test-iputils_hh.cc:745,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-iputils_hh.cc:747,1
    - Dst: std::set::find
      Src: /src/pdns/pdns/test-iputils_hh.cc:747,1
    - Dst: std::set::end
      Src: /src/pdns/pdns/test-iputils_hh.cc:747,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-iputils_hh.cc:750,1
    - Dst: NetmaskTree::lookup
      Src: /src/pdns/pdns/test-iputils_hh.cc:750,1
    - Dst: NetmaskTree::insert
      Src: /src/pdns/pdns/test-iputils_hh.cc:757,1
    - Dst: NetmaskTree::erase
      Src: /src/pdns/pdns/test-iputils_hh.cc:758,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-iputils_hh.cc:761,1
    - Dst: NetmaskTree::size
      Src: /src/pdns/pdns/test-iputils_hh.cc:761,1
    - Dst: std::set::size
      Src: /src/pdns/pdns/test-iputils_hh.cc:761,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-iputils_hh.cc:762,1
    - Dst: std::distance
      Src: /src/pdns/pdns/test-iputils_hh.cc:762,1
    - Dst: NetmaskTree::begin
      Src: /src/pdns/pdns/test-iputils_hh.cc:762,1
    - Dst: NetmaskTree::end
      Src: /src/pdns/pdns/test-iputils_hh.cc:762,1
    - Dst: std::distance
      Src: /src/pdns/pdns/test-iputils_hh.cc:763,1
    - Dst: std::set::begin
      Src: /src/pdns/pdns/test-iputils_hh.cc:763,1
    - Dst: std::set::end
      Src: /src/pdns/pdns/test-iputils_hh.cc:763,1
    - Dst: first::getNormalized
      Src: /src/pdns/pdns/test-iputils_hh.cc:765,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-iputils_hh.cc:767,1
    - Dst: std::set::find
      Src: /src/pdns/pdns/test-iputils_hh.cc:767,1
    - Dst: std::set::end
      Src: /src/pdns/pdns/test-iputils_hh.cc:767,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-iputils_hh.cc:770,1
    - Dst: NetmaskTree::lookup
      Src: /src/pdns/pdns/test-iputils_hh.cc:770,1
    - Dst: NetmaskTree::NetmaskTree
      Src: /src/pdns/pdns/test-iputils_hh.cc:774,1
    - Dst: NetmaskTree::swap
      Src: /src/pdns/pdns/test-iputils_hh.cc:775,1
    - Dst: NetmaskTree::insert
      Src: /src/pdns/pdns/test-iputils_hh.cc:778,1
    - Dst: NetmaskTree::erase
      Src: /src/pdns/pdns/test-iputils_hh.cc:779,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-iputils_hh.cc:782,1
    - Dst: NetmaskTree::size
      Src: /src/pdns/pdns/test-iputils_hh.cc:782,1
    - Dst: std::set::size
      Src: /src/pdns/pdns/test-iputils_hh.cc:782,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-iputils_hh.cc:783,1
    - Dst: std::distance
      Src: /src/pdns/pdns/test-iputils_hh.cc:783,1
    - Dst: NetmaskTree::begin
      Src: /src/pdns/pdns/test-iputils_hh.cc:783,1
    - Dst: NetmaskTree::end
      Src: /src/pdns/pdns/test-iputils_hh.cc:783,1
    - Dst: std::distance
      Src: /src/pdns/pdns/test-iputils_hh.cc:784,1
    - Dst: std::set::begin
      Src: /src/pdns/pdns/test-iputils_hh.cc:784,1
    - Dst: std::set::end
      Src: /src/pdns/pdns/test-iputils_hh.cc:784,1
    - Dst: first::getNormalized
      Src: /src/pdns/pdns/test-iputils_hh.cc:786,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-iputils_hh.cc:788,1
    - Dst: std::set::find
      Src: /src/pdns/pdns/test-iputils_hh.cc:788,1
    - Dst: std::set::end
      Src: /src/pdns/pdns/test-iputils_hh.cc:788,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-iputils_hh.cc:791,1
    - Dst: NetmaskTree::lookup
      Src: /src/pdns/pdns/test-iputils_hh.cc:791,1
    - Dst: NetmaskTree::begin
      Src: /src/pdns/pdns/test-iputils_hh.cc:795,1
    - Dst: NetmaskTree::end
      Src: /src/pdns/pdns/test-iputils_hh.cc:795,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-iputils_hh.cc:798,1
    - Dst: std::set::size
      Src: /src/pdns/pdns/test-iputils_hh.cc:798,1
    - Dst: std::set::size
      Src: /src/pdns/pdns/test-iputils_hh.cc:798,1
    - Dst: first::getNormalized
      Src: /src/pdns/pdns/test-iputils_hh.cc:800,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-iputils_hh.cc:802,1
    - Dst: std::set::find
      Src: /src/pdns/pdns/test-iputils_hh.cc:802,1
    - Dst: std::set::end
      Src: /src/pdns/pdns/test-iputils_hh.cc:802,1
    - Dst: Netmask::getNormalized
      Src: /src/pdns/pdns/test-iputils_hh.cc:805,1
    - Dst: first::getNormalized
      Src: /src/pdns/pdns/test-iputils_hh.cc:808,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-iputils_hh.cc:813,1
    - Dst: Netmask::Netmask
      Src: /src/pdns/pdns/test-iputils_hh.cc:821,1
    - Dst: Netmask
      Src: /src/pdns/pdns/test-iputils_hh.cc:823,1
    - Dst: NetmaskTree::erase
      Src: /src/pdns/pdns/test-iputils_hh.cc:824,1
    - Dst: std::set::erase
      Src: /src/pdns/pdns/test-iputils_hh.cc:825,1
    - Dst: Netmask::getNormalized
      Src: /src/pdns/pdns/test-iputils_hh.cc:825,1
    - Dst: Netmask
      Src: /src/pdns/pdns/test-iputils_hh.cc:827,1
    - Dst: NetmaskTree::erase
      Src: /src/pdns/pdns/test-iputils_hh.cc:828,1
    - Dst: std::set::erase
      Src: /src/pdns/pdns/test-iputils_hh.cc:829,1
    - Dst: Netmask::getNormalized
      Src: /src/pdns/pdns/test-iputils_hh.cc:829,1
    - Dst: Netmask
      Src: /src/pdns/pdns/test-iputils_hh.cc:831,1
    - Dst: NetmaskTree::erase
      Src: /src/pdns/pdns/test-iputils_hh.cc:832,1
    - Dst: std::set::erase
      Src: /src/pdns/pdns/test-iputils_hh.cc:833,1
    - Dst: Netmask::getNormalized
      Src: /src/pdns/pdns/test-iputils_hh.cc:833,1
    - Dst: Netmask
      Src: /src/pdns/pdns/test-iputils_hh.cc:835,1
    - Dst: NetmaskTree::erase
      Src: /src/pdns/pdns/test-iputils_hh.cc:836,1
    - Dst: std::set::erase
      Src: /src/pdns/pdns/test-iputils_hh.cc:837,1
    - Dst: Netmask::getNormalized
      Src: /src/pdns/pdns/test-iputils_hh.cc:837,1
    - Dst: Netmask
      Src: /src/pdns/pdns/test-iputils_hh.cc:839,1
    - Dst: NetmaskTree::erase
      Src: /src/pdns/pdns/test-iputils_hh.cc:840,1
    - Dst: std::set::erase
      Src: /src/pdns/pdns/test-iputils_hh.cc:841,1
    - Dst: Netmask::getNormalized
      Src: /src/pdns/pdns/test-iputils_hh.cc:841,1
    - Dst: Netmask
      Src: /src/pdns/pdns/test-iputils_hh.cc:843,1
    - Dst: NetmaskTree::erase
      Src: /src/pdns/pdns/test-iputils_hh.cc:844,1
    - Dst: std::set::erase
      Src: /src/pdns/pdns/test-iputils_hh.cc:845,1
    - Dst: Netmask::getNormalized
      Src: /src/pdns/pdns/test-iputils_hh.cc:845,1
    - Dst: Netmask
      Src: /src/pdns/pdns/test-iputils_hh.cc:847,1
    - Dst: NetmaskTree::erase
      Src: /src/pdns/pdns/test-iputils_hh.cc:848,1
    - Dst: std::set::erase
      Src: /src/pdns/pdns/test-iputils_hh.cc:849,1
    - Dst: Netmask::getNormalized
      Src: /src/pdns/pdns/test-iputils_hh.cc:849,1
    - Dst: Netmask
      Src: /src/pdns/pdns/test-iputils_hh.cc:851,1
    - Dst: NetmaskTree::erase
      Src: /src/pdns/pdns/test-iputils_hh.cc:852,1
    - Dst: std::set::erase
      Src: /src/pdns/pdns/test-iputils_hh.cc:853,1
    - Dst: Netmask::getNormalized
      Src: /src/pdns/pdns/test-iputils_hh.cc:853,1
    - Dst: Netmask
      Src: /src/pdns/pdns/test-iputils_hh.cc:855,1
    - Dst: NetmaskTree::erase
      Src: /src/pdns/pdns/test-iputils_hh.cc:856,1
    - Dst: std::set::erase
      Src: /src/pdns/pdns/test-iputils_hh.cc:857,1
    - Dst: Netmask::getNormalized
      Src: /src/pdns/pdns/test-iputils_hh.cc:857,1
    - Dst: Netmask
      Src: /src/pdns/pdns/test-iputils_hh.cc:859,1
    - Dst: NetmaskTree::erase
      Src: /src/pdns/pdns/test-iputils_hh.cc:860,1
    - Dst: std::set::erase
      Src: /src/pdns/pdns/test-iputils_hh.cc:861,1
    - Dst: Netmask::getNormalized
      Src: /src/pdns/pdns/test-iputils_hh.cc:861,1
    - Dst: Netmask
      Src: /src/pdns/pdns/test-iputils_hh.cc:863,1
    - Dst: NetmaskTree::erase
      Src: /src/pdns/pdns/test-iputils_hh.cc:864,1
    - Dst: std::set::erase
      Src: /src/pdns/pdns/test-iputils_hh.cc:865,1
    - Dst: Netmask::getNormalized
      Src: /src/pdns/pdns/test-iputils_hh.cc:865,1
    - Dst: Netmask
      Src: /src/pdns/pdns/test-iputils_hh.cc:867,1
    - Dst: NetmaskTree::erase
      Src: /src/pdns/pdns/test-iputils_hh.cc:868,1
    - Dst: std::set::erase
      Src: /src/pdns/pdns/test-iputils_hh.cc:869,1
    - Dst: Netmask::getNormalized
      Src: /src/pdns/pdns/test-iputils_hh.cc:869,1
    - Dst: Netmask
      Src: /src/pdns/pdns/test-iputils_hh.cc:871,1
    - Dst: NetmaskTree::erase
      Src: /src/pdns/pdns/test-iputils_hh.cc:872,1
    - Dst: std::set::erase
      Src: /src/pdns/pdns/test-iputils_hh.cc:873,1
    - Dst: Netmask::getNormalized
      Src: /src/pdns/pdns/test-iputils_hh.cc:873,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-iputils_hh.cc:877,1
    - Dst: NetmaskTree::size
      Src: /src/pdns/pdns/test-iputils_hh.cc:877,1
    - Dst: std::set::size
      Src: /src/pdns/pdns/test-iputils_hh.cc:877,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-iputils_hh.cc:878,1
    - Dst: std::distance
      Src: /src/pdns/pdns/test-iputils_hh.cc:878,1
    - Dst: NetmaskTree::begin
      Src: /src/pdns/pdns/test-iputils_hh.cc:878,1
    - Dst: NetmaskTree::end
      Src: /src/pdns/pdns/test-iputils_hh.cc:878,1
    - Dst: std::distance
      Src: /src/pdns/pdns/test-iputils_hh.cc:879,1
    - Dst: std::set::begin
      Src: /src/pdns/pdns/test-iputils_hh.cc:879,1
    - Dst: std::set::end
      Src: /src/pdns/pdns/test-iputils_hh.cc:879,1
    - Dst: first::getNormalized
      Src: /src/pdns/pdns/test-iputils_hh.cc:881,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-iputils_hh.cc:883,1
    - Dst: std::set::find
      Src: /src/pdns/pdns/test-iputils_hh.cc:883,1
    - Dst: std::set::end
      Src: /src/pdns/pdns/test-iputils_hh.cc:883,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-iputils_hh.cc:886,1
    - Dst: NetmaskTree::lookup
      Src: /src/pdns/pdns/test-iputils_hh.cc:886,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 154
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 888
      start: 625
    functionDepth: 1
    functionLinenumber: 625
    functionLinenumberEnd: 888
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-iputils_hh.cc
    functionUses: 0
    functionsReached:
    - std::set::erase
    - std::distance
    - NetmaskTree::begin
    - NetmaskTree::lookup
    - std::stringstream::str
    - first::getNormalized
    - std::set::size
    - NetmaskTree::end
    - std::set::insert
    - Netmask
    - std::set::end
    - Netmask::getNormalized
    - NetmaskTree::swap
    - std::set::find
    - NetmaskTree::size
    - NetmaskTree::erase
    - Netmask::Netmask
    - BOOST_CHECK_EQUAL
    - NetmaskTree::insert
    - std::set::begin
    - BOOST_CHECK
    - NetmaskTree::NetmaskTree
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_iterator)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: caContainerToString
      Src: /src/pdns/pdns/test-iputils_hh.cc:899,1
    - Dst: caContainerToString
      Src: /src/pdns/pdns/test-iputils_hh.cc:900,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-iputils_hh.cc:901,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-iputils_hh.cc:902,1
    - Dst: caContainerToString
      Src: /src/pdns/pdns/test-iputils_hh.cc:904,1
    - Dst: caContainerToString
      Src: /src/pdns/pdns/test-iputils_hh.cc:905,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-iputils_hh.cc:906,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-iputils_hh.cc:907,1
    - Dst: caContainerToString
      Src: /src/pdns/pdns/test-iputils_hh.cc:909,1
    - Dst: caContainerToString
      Src: /src/pdns/pdns/test-iputils_hh.cc:910,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-iputils_hh.cc:911,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-iputils_hh.cc:912,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 913
      start: 890
    functionDepth: 0
    functionLinenumber: 890
    functionLinenumberEnd: 913
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-iputils_hh.cc
    functionUses: 0
    functionsReached:
    - caContainerToString
    - BOOST_CHECK_EQUAL
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_ComboAddress_caContainerToString)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-iputils_hh.cc:939,1
    - Dst: parseIPAndPort
      Src: /src/pdns/pdns/test-iputils_hh.cc:939,1
    - Dst: parseIPAndPort
      Src: /src/pdns/pdns/test-iputils_hh.cc:941,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-iputils_hh.cc:942,1
    - Dst: ComboAddress::toStringWithPort
      Src: /src/pdns/pdns/test-iputils_hh.cc:942,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-iputils_hh.cc:942,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 945
      start: 915
    functionDepth: 0
    functionLinenumber: 915
    functionLinenumberEnd: 945
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-iputils_hh.cc
    functionUses: 0
    functionsReached:
    - ComboAddress::toStringWithPort
    - BOOST_CHECK_EQUAL
    - BOOST_CHECK_THROW
    - parseIPAndPort
    - ComboAddress
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_parseIPAndPort)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-iputils_hh.cc:967,1
    - Dst: ComboAddress::isUnspecified
      Src: /src/pdns/pdns/test-iputils_hh.cc:967,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 969
      start: 947
    functionDepth: 0
    functionLinenumber: 947
    functionLinenumberEnd: 969
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-iputils_hh.cc
    functionUses: 0
    functionsReached:
    - BOOST_CHECK_EQUAL
    - ComboAddress::isUnspecified
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_unspecified)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/histogram.hh:40,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 3
    argNames:
    - name
    - boundary
    - val
    argTypes:
    - std::string
    - uint64_t
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 39
    functionDepth: 0
    functionLinenumber: 39
    functionLinenumberEnd: 40
    functionName: pdns::Bucket
    functionSourceFile: /src/pdns/pdns/histogram.hh
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void Bucket(std::string name, uint64_t boundary, uint64_t val)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 45
    functionDepth: 0
    functionLinenumber: 45
    functionLinenumberEnd: 45
    functionName: pdns::Bucket
    functionSourceFile: /src/pdns/pdns/histogram.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Bucket(const Bucket&)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/pdns/pdns/histogram.hh:48,1
    - Dst: assert
      Src: /src/pdns/pdns/histogram.hh:49,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - Bucket
    assertStmts:
    - condition: (d_name == rhs.d_name)
      pos:
        line_end: 47
        line_start: 47
        source_file: /src/pdns/pdns/histogram.hh
    - condition: (d_boundary == rhs.d_boundary)
      pos:
        line_end: 48
        line_start: 48
        source_file: /src/pdns/pdns/histogram.hh
    constantsTouched: []
    func_position:
      end: 52
      start: 46
    functionDepth: 0
    functionLinenumber: 46
    functionLinenumberEnd: 52
    functionName: '& operator=(const Bucket& rhs)'
    functionSourceFile: /src/pdns/pdns/histogram.hh
    functionUses: 0
    functionsReached:
    - assert
    linkageType: ''
    returnType: Bucket
    signature: Bucket & operator=(const Bucket& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 58
    functionDepth: 0
    functionLinenumber: 58
    functionLinenumberEnd: 58
    functionName: pdns::AtomicBucket
    functionSourceFile: /src/pdns/pdns/histogram.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void AtomicBucket()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/histogram.hh:60,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 3
    argNames:
    - name
    - boundary
    - val
    argTypes:
    - std::string
    - uint64_t
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 59
    functionDepth: 0
    functionLinenumber: 59
    functionLinenumberEnd: 60
    functionName: pdns::AtomicBucket
    functionSourceFile: /src/pdns/pdns/histogram.hh
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void AtomicBucket(std::string name, uint64_t boundary, uint64_t val)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: d_count::load
      Src: /src/pdns/pdns/histogram.hh:62,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - AtomicBucket
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 61
    functionDepth: 0
    functionLinenumber: 61
    functionLinenumberEnd: 62
    functionName: pdns::AtomicBucket
    functionSourceFile: /src/pdns/pdns/histogram.hh
    functionUses: 0
    functionsReached:
    - d_count::load
    linkageType: ''
    returnType: void
    signature: void AtomicBucket(const AtomicBucket& rhs)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: std::is_sorted
      Src: /src/pdns/pdns/histogram.hh:76,1
    - Dst: cbegin
      Src: /src/pdns/pdns/histogram.hh:76,1
    - Dst: cend
      Src: /src/pdns/pdns/histogram.hh:76,1
    - Dst: std::invalid_argument
      Src: /src/pdns/pdns/histogram.hh:77,1
    - Dst: size
      Src: /src/pdns/pdns/histogram.hh:79,1
    - Dst: std::invalid_argument
      Src: /src/pdns/pdns/histogram.hh:80,1
    - Dst: std::invalid_argument
      Src: /src/pdns/pdns/histogram.hh:83,1
    - Dst: reserve
      Src: /src/pdns/pdns/histogram.hh:85,1
    - Dst: size
      Src: /src/pdns/pdns/histogram.hh:85,1
    - Dst: std::invalid_argument
      Src: /src/pdns/pdns/histogram.hh:89,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/histogram.hh:91,1
    - Dst: emplace_back
      Src: /src/pdns/pdns/histogram.hh:92,1
    - Dst: emplace_back
      Src: /src/pdns/pdns/histogram.hh:97,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/histogram.hh:97,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 18
    argCount: 2
    argNames:
    - ' prefix'
    - ' boundaries'
    argTypes:
    - std::string
    - std::vector<uint64_t>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 73
    functionDepth: 0
    functionLinenumber: 73
    functionLinenumberEnd: 98
    functionName: pdns::BaseHistogram::BaseHistogram
    functionSourceFile: /src/pdns/pdns/histogram.hh
    functionUses: 0
    functionsReached:
    - pdns::max
    - std::to_string
    - std::invalid_argument
    - size
    - reserve
    - cbegin
    - cend
    - emplace_back
    - std::is_sorted
    linkageType: ''
    returnType: void
    signature: void BaseHistogram(const std::string& prefix, const std::vector<uint64_t>&
      boundaries)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::BaseHistogram::to125
      Src: /src/pdns/pdns/histogram.hh:101,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 3
    argNames:
    - ' prefix'
    - start
    - num
    argTypes:
    - std::string
    - uint64_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 100
    functionDepth: 0
    functionLinenumber: 100
    functionLinenumberEnd: 103
    functionName: pdns::BaseHistogram::BaseHistogram
    functionSourceFile: /src/pdns/pdns/histogram.hh
    functionUses: 0
    functionsReached:
    - pdns::BaseHistogram::to125
    linkageType: ''
    returnType: void
    signature: void BaseHistogram(const std::string& prefix, uint64_t start, int num)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 105
    functionDepth: 0
    functionLinenumber: 105
    functionLinenumberEnd: 108
    functionName: pdns::BaseHistogram::getName
    functionSourceFile: /src/pdns/pdns/histogram.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string getName() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 113
      start: 110
    functionDepth: 0
    functionLinenumber: 110
    functionLinenumberEnd: 113
    functionName: pdns::BaseHistogram::getSum
    functionSourceFile: /src/pdns/pdns/histogram.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t getSum() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 118
      start: 115
    functionDepth: 0
    functionLinenumber: 115
    functionLinenumberEnd: 118
    functionName: '& getRawData() const'
    functionSourceFile: /src/pdns/pdns/histogram.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::vector<B>
    signature: std::vector<B> & getRawData() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - i
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 120
    functionDepth: 0
    functionLinenumber: 120
    functionLinenumberEnd: 123
    functionName: pdns::BaseHistogram::getCount
    functionSourceFile: /src/pdns/pdns/histogram.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t getCount(size_t i) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::vector::reserve
      Src: /src/pdns/pdns/histogram.hh:128,1
    - Dst: size
      Src: /src/pdns/pdns/histogram.hh:128,1
    - Dst: std::vector::emplace_back
      Src: /src/pdns/pdns/histogram.hh:132,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 135
      start: 125
    functionDepth: 0
    functionLinenumber: 125
    functionLinenumberEnd: 135
    functionName: pdns::BaseHistogram::getCumulativeBuckets
    functionSourceFile: /src/pdns/pdns/histogram.hh
    functionUses: 0
    functionsReached:
    - std::vector::reserve
    - std::vector::emplace_back
    - size
    linkageType: ''
    returnType: std::vector<B>
    signature: std::vector<B> getCumulativeBuckets() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::vector::reserve
      Src: /src/pdns/pdns/histogram.hh:140,1
    - Dst: size
      Src: /src/pdns/pdns/histogram.hh:140,1
    - Dst: std::vector::emplace_back
      Src: /src/pdns/pdns/histogram.hh:144,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 137
    functionDepth: 0
    functionLinenumber: 137
    functionLinenumberEnd: 147
    functionName: pdns::BaseHistogram::getCumulativeCounts
    functionSourceFile: /src/pdns/pdns/histogram.hh
    functionUses: 0
    functionsReached:
    - std::vector::reserve
    - std::vector::emplace_back
    - size
    linkageType: ''
    returnType: std::vector<uint64_t>
    signature: std::vector<uint64_t> getCumulativeCounts() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - b
    - ' bu'
    argTypes:
    - uint64_t
    - B
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 152
      start: 149
    functionDepth: 0
    functionLinenumber: 149
    functionLinenumberEnd: 152
    functionName: pdns::BaseHistogram::lessOrEqual
    functionSourceFile: /src/pdns/pdns/histogram.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool lessOrEqual(uint64_t b, const B& bu)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::upper_bound
      Src: /src/pdns/pdns/histogram.hh:156,1
    - Dst: begin
      Src: /src/pdns/pdns/histogram.hh:156,1
    - Dst: end
      Src: /src/pdns/pdns/histogram.hh:156,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - d
    argTypes:
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 160
      start: 154
    functionDepth: 0
    functionLinenumber: 154
    functionLinenumberEnd: 160
    functionName: operator()(uint64_t d) const
    functionSourceFile: /src/pdns/pdns/histogram.hh
    functionUses: 0
    functionsReached:
    - std::upper_bound
    - end
    - begin
    linkageType: ''
    returnType: void
    signature: void operator()(uint64_t d) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/pdns/pdns/histogram.hh:164,1
    - Dst: assert
      Src: /src/pdns/pdns/histogram.hh:165,1
    - Dst: size
      Src: /src/pdns/pdns/histogram.hh:165,1
    - Dst: d_buckets::size
      Src: /src/pdns/pdns/histogram.hh:165,1
    - Dst: size
      Src: /src/pdns/pdns/histogram.hh:166,1
    - Dst: assert
      Src: /src/pdns/pdns/histogram.hh:167,1
    - Dst: assert
      Src: /src/pdns/pdns/histogram.hh:168,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - BaseHistogram
    assertStmts:
    - condition: (d_name == rhs.d_name)
      pos:
        line_end: 163
        line_start: 163
        source_file: /src/pdns/pdns/histogram.hh
    - condition: (d_buckets.size() == rhs.d_buckets.size())
      pos:
        line_end: 164
        line_start: 164
        source_file: /src/pdns/pdns/histogram.hh
    - condition: (d_buckets[bucket].d_name == rhs.d_buckets[bucket].d_name)
      pos:
        line_end: 166
        line_start: 166
        source_file: /src/pdns/pdns/histogram.hh
    - condition: (d_buckets[bucket].d_boundary == rhs.d_buckets[bucket].d_boundary)
      pos:
        line_end: 167
        line_start: 167
        source_file: /src/pdns/pdns/histogram.hh
    constantsTouched: []
    func_position:
      end: 173
      start: 162
    functionDepth: 0
    functionLinenumber: 162
    functionLinenumberEnd: 173
    functionName: '& operator+=(const BaseHistogram& rhs)'
    functionSourceFile: /src/pdns/pdns/histogram.hh
    functionUses: 0
    functionsReached:
    - d_buckets::size
    - size
    - assert
    linkageType: ''
    returnType: BaseHistogram
    signature: BaseHistogram & operator+=(const BaseHistogram& rhs)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: std::vector::reserve
      Src: /src/pdns/pdns/histogram.hh:183,1
    - Dst: std::vector::emplace_back
      Src: /src/pdns/pdns/histogram.hh:184,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/histogram.hh:190,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/histogram.hh:194,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/histogram.hh:198,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 19
    argCount: 2
    argNames:
    - start
    - num
    argTypes:
    - uint64_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 202
      start: 180
    functionDepth: 0
    functionLinenumber: 180
    functionLinenumberEnd: 202
    functionName: pdns::BaseHistogram::to125
    functionSourceFile: /src/pdns/pdns/histogram.hh
    functionUses: 1
    functionsReached:
    - std::vector::reserve
    - std::vector::push_back
    - std::vector::emplace_back
    linkageType: ''
    returnType: std::vector<uint64_t>
    signature: std::vector<uint64_t> to125(uint64_t start, int num)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/histogram.hh:40,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 3
    argNames:
    - name
    - boundary
    - val
    argTypes:
    - std::string
    - uint64_t
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 39
    functionDepth: 0
    functionLinenumber: 39
    functionLinenumberEnd: 40
    functionName: pdns::Bucket
    functionSourceFile: /src/pdns/pdns/histogram.hh
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void Bucket(std::string name, uint64_t boundary, uint64_t val)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 45
    functionDepth: 0
    functionLinenumber: 45
    functionLinenumberEnd: 45
    functionName: pdns::Bucket
    functionSourceFile: /src/pdns/pdns/histogram.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Bucket(const Bucket&)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/pdns/pdns/histogram.hh:48,1
    - Dst: assert
      Src: /src/pdns/pdns/histogram.hh:49,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - Bucket
    assertStmts:
    - condition: (d_name == rhs.d_name)
      pos:
        line_end: 47
        line_start: 47
        source_file: /src/pdns/pdns/histogram.hh
    - condition: (d_boundary == rhs.d_boundary)
      pos:
        line_end: 48
        line_start: 48
        source_file: /src/pdns/pdns/histogram.hh
    constantsTouched: []
    func_position:
      end: 52
      start: 46
    functionDepth: 0
    functionLinenumber: 46
    functionLinenumberEnd: 52
    functionName: '& operator=(const Bucket& rhs)'
    functionSourceFile: /src/pdns/pdns/histogram.hh
    functionUses: 0
    functionsReached:
    - assert
    linkageType: ''
    returnType: Bucket
    signature: Bucket & operator=(const Bucket& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 58
    functionDepth: 0
    functionLinenumber: 58
    functionLinenumberEnd: 58
    functionName: pdns::AtomicBucket
    functionSourceFile: /src/pdns/pdns/histogram.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void AtomicBucket()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/histogram.hh:60,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 3
    argNames:
    - name
    - boundary
    - val
    argTypes:
    - std::string
    - uint64_t
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 59
    functionDepth: 0
    functionLinenumber: 59
    functionLinenumberEnd: 60
    functionName: pdns::AtomicBucket
    functionSourceFile: /src/pdns/pdns/histogram.hh
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void AtomicBucket(std::string name, uint64_t boundary, uint64_t val)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: d_count::load
      Src: /src/pdns/pdns/histogram.hh:62,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - AtomicBucket
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 61
    functionDepth: 0
    functionLinenumber: 61
    functionLinenumberEnd: 62
    functionName: pdns::AtomicBucket
    functionSourceFile: /src/pdns/pdns/histogram.hh
    functionUses: 0
    functionsReached:
    - d_count::load
    linkageType: ''
    returnType: void
    signature: void AtomicBucket(const AtomicBucket& rhs)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: std::is_sorted
      Src: /src/pdns/pdns/histogram.hh:76,1
    - Dst: cbegin
      Src: /src/pdns/pdns/histogram.hh:76,1
    - Dst: cend
      Src: /src/pdns/pdns/histogram.hh:76,1
    - Dst: std::invalid_argument
      Src: /src/pdns/pdns/histogram.hh:77,1
    - Dst: size
      Src: /src/pdns/pdns/histogram.hh:79,1
    - Dst: std::invalid_argument
      Src: /src/pdns/pdns/histogram.hh:80,1
    - Dst: std::invalid_argument
      Src: /src/pdns/pdns/histogram.hh:83,1
    - Dst: reserve
      Src: /src/pdns/pdns/histogram.hh:85,1
    - Dst: size
      Src: /src/pdns/pdns/histogram.hh:85,1
    - Dst: std::invalid_argument
      Src: /src/pdns/pdns/histogram.hh:89,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/histogram.hh:91,1
    - Dst: emplace_back
      Src: /src/pdns/pdns/histogram.hh:92,1
    - Dst: emplace_back
      Src: /src/pdns/pdns/histogram.hh:97,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/histogram.hh:97,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 18
    argCount: 2
    argNames:
    - ' prefix'
    - ' boundaries'
    argTypes:
    - std::string
    - std::vector<uint64_t>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 73
    functionDepth: 0
    functionLinenumber: 73
    functionLinenumberEnd: 98
    functionName: pdns::BaseHistogram::BaseHistogram
    functionSourceFile: /src/pdns/pdns/histogram.hh
    functionUses: 0
    functionsReached:
    - pdns::max
    - std::to_string
    - std::invalid_argument
    - size
    - reserve
    - cbegin
    - cend
    - emplace_back
    - std::is_sorted
    linkageType: ''
    returnType: void
    signature: void BaseHistogram(const std::string& prefix, const std::vector<uint64_t>&
      boundaries)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::BaseHistogram::to125
      Src: /src/pdns/pdns/histogram.hh:101,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 3
    argNames:
    - ' prefix'
    - start
    - num
    argTypes:
    - std::string
    - uint64_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 100
    functionDepth: 0
    functionLinenumber: 100
    functionLinenumberEnd: 103
    functionName: pdns::BaseHistogram::BaseHistogram
    functionSourceFile: /src/pdns/pdns/histogram.hh
    functionUses: 0
    functionsReached:
    - pdns::BaseHistogram::to125
    linkageType: ''
    returnType: void
    signature: void BaseHistogram(const std::string& prefix, uint64_t start, int num)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 105
    functionDepth: 0
    functionLinenumber: 105
    functionLinenumberEnd: 108
    functionName: pdns::BaseHistogram::getName
    functionSourceFile: /src/pdns/pdns/histogram.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string getName() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 113
      start: 110
    functionDepth: 0
    functionLinenumber: 110
    functionLinenumberEnd: 113
    functionName: pdns::BaseHistogram::getSum
    functionSourceFile: /src/pdns/pdns/histogram.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t getSum() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 118
      start: 115
    functionDepth: 0
    functionLinenumber: 115
    functionLinenumberEnd: 118
    functionName: '& getRawData() const'
    functionSourceFile: /src/pdns/pdns/histogram.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::vector<B>
    signature: std::vector<B> & getRawData() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - i
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 120
    functionDepth: 0
    functionLinenumber: 120
    functionLinenumberEnd: 123
    functionName: pdns::BaseHistogram::getCount
    functionSourceFile: /src/pdns/pdns/histogram.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t getCount(size_t i) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::vector::reserve
      Src: /src/pdns/pdns/histogram.hh:128,1
    - Dst: size
      Src: /src/pdns/pdns/histogram.hh:128,1
    - Dst: std::vector::emplace_back
      Src: /src/pdns/pdns/histogram.hh:132,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 135
      start: 125
    functionDepth: 0
    functionLinenumber: 125
    functionLinenumberEnd: 135
    functionName: pdns::BaseHistogram::getCumulativeBuckets
    functionSourceFile: /src/pdns/pdns/histogram.hh
    functionUses: 0
    functionsReached:
    - std::vector::reserve
    - std::vector::emplace_back
    - size
    linkageType: ''
    returnType: std::vector<B>
    signature: std::vector<B> getCumulativeBuckets() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::vector::reserve
      Src: /src/pdns/pdns/histogram.hh:140,1
    - Dst: size
      Src: /src/pdns/pdns/histogram.hh:140,1
    - Dst: std::vector::emplace_back
      Src: /src/pdns/pdns/histogram.hh:144,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 137
    functionDepth: 0
    functionLinenumber: 137
    functionLinenumberEnd: 147
    functionName: pdns::BaseHistogram::getCumulativeCounts
    functionSourceFile: /src/pdns/pdns/histogram.hh
    functionUses: 0
    functionsReached:
    - std::vector::reserve
    - std::vector::emplace_back
    - size
    linkageType: ''
    returnType: std::vector<uint64_t>
    signature: std::vector<uint64_t> getCumulativeCounts() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - b
    - ' bu'
    argTypes:
    - uint64_t
    - B
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 152
      start: 149
    functionDepth: 0
    functionLinenumber: 149
    functionLinenumberEnd: 152
    functionName: pdns::BaseHistogram::lessOrEqual
    functionSourceFile: /src/pdns/pdns/histogram.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool lessOrEqual(uint64_t b, const B& bu)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::upper_bound
      Src: /src/pdns/pdns/histogram.hh:156,1
    - Dst: begin
      Src: /src/pdns/pdns/histogram.hh:156,1
    - Dst: end
      Src: /src/pdns/pdns/histogram.hh:156,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - d
    argTypes:
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 160
      start: 154
    functionDepth: 0
    functionLinenumber: 154
    functionLinenumberEnd: 160
    functionName: operator()(uint64_t d) const
    functionSourceFile: /src/pdns/pdns/histogram.hh
    functionUses: 0
    functionsReached:
    - std::upper_bound
    - end
    - begin
    linkageType: ''
    returnType: void
    signature: void operator()(uint64_t d) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/pdns/pdns/histogram.hh:164,1
    - Dst: assert
      Src: /src/pdns/pdns/histogram.hh:165,1
    - Dst: size
      Src: /src/pdns/pdns/histogram.hh:165,1
    - Dst: d_buckets::size
      Src: /src/pdns/pdns/histogram.hh:165,1
    - Dst: size
      Src: /src/pdns/pdns/histogram.hh:166,1
    - Dst: assert
      Src: /src/pdns/pdns/histogram.hh:167,1
    - Dst: assert
      Src: /src/pdns/pdns/histogram.hh:168,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - BaseHistogram
    assertStmts:
    - condition: (d_name == rhs.d_name)
      pos:
        line_end: 163
        line_start: 163
        source_file: /src/pdns/pdns/histogram.hh
    - condition: (d_buckets.size() == rhs.d_buckets.size())
      pos:
        line_end: 164
        line_start: 164
        source_file: /src/pdns/pdns/histogram.hh
    - condition: (d_buckets[bucket].d_name == rhs.d_buckets[bucket].d_name)
      pos:
        line_end: 166
        line_start: 166
        source_file: /src/pdns/pdns/histogram.hh
    - condition: (d_buckets[bucket].d_boundary == rhs.d_buckets[bucket].d_boundary)
      pos:
        line_end: 167
        line_start: 167
        source_file: /src/pdns/pdns/histogram.hh
    constantsTouched: []
    func_position:
      end: 173
      start: 162
    functionDepth: 0
    functionLinenumber: 162
    functionLinenumberEnd: 173
    functionName: '& operator+=(const BaseHistogram& rhs)'
    functionSourceFile: /src/pdns/pdns/histogram.hh
    functionUses: 0
    functionsReached:
    - d_buckets::size
    - size
    - assert
    linkageType: ''
    returnType: BaseHistogram
    signature: BaseHistogram & operator+=(const BaseHistogram& rhs)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: std::vector::reserve
      Src: /src/pdns/pdns/histogram.hh:183,1
    - Dst: std::vector::emplace_back
      Src: /src/pdns/pdns/histogram.hh:184,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/histogram.hh:190,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/histogram.hh:194,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/histogram.hh:198,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 19
    argCount: 2
    argNames:
    - start
    - num
    argTypes:
    - uint64_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 202
      start: 180
    functionDepth: 0
    functionLinenumber: 180
    functionLinenumberEnd: 202
    functionName: pdns::BaseHistogram::to125
    functionSourceFile: /src/pdns/pdns/histogram.hh
    functionUses: 2
    functionsReached:
    - std::vector::reserve
    - std::vector::push_back
    - std::vector::emplace_back
    linkageType: ''
    returnType: std::vector<uint64_t>
    signature: std::vector<uint64_t> to125(uint64_t start, int num)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - data_
    - size_
    argTypes:
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 35
      start: 32
    functionDepth: 0
    functionLinenumber: 32
    functionLinenumberEnd: 35
    functionName: pdns::views::UnsignedCharView::UnsignedCharView
    functionSourceFile: /src/pdns/pdns/views.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void UnsignedCharView(const char* data_, size_t size_)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/views.hh:38,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - data_
    - size_
    argTypes:
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 37
    functionDepth: 0
    functionLinenumber: 37
    functionLinenumberEnd: 40
    functionName: pdns::views::UnsignedCharView::UnsignedCharView
    functionSourceFile: /src/pdns/pdns/views.hh
    functionUses: 0
    functionsReached:
    - reinterpret_cast<const char*>
    linkageType: ''
    returnType: void
    signature: void UnsignedCharView(const unsigned char* data_, size_t size_)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: reinterpret_cast<const unsigned char&>
      Src: /src/pdns/pdns/views.hh:45,1
    - Dst: at
      Src: /src/pdns/pdns/views.hh:45,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - pos
    argTypes:
    - size_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 46
    functionName: '& at(size_type pos) const'
    functionSourceFile: /src/pdns/pdns/views.hh
    functionUses: 0
    functionsReached:
    - reinterpret_cast<const unsigned char&>
    - at
    linkageType: ''
    returnType: unsigned char
    signature: unsigned char & at(size_type pos) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: reinterpret_cast<const unsigned char&>
      Src: /src/pdns/pdns/views.hh:50,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - pos
    argTypes:
    - size_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 48
    functionDepth: 0
    functionLinenumber: 48
    functionLinenumberEnd: 51
    functionName: '& operator[](size_type pos) const'
    functionSourceFile: /src/pdns/pdns/views.hh
    functionUses: 0
    functionsReached:
    - reinterpret_cast<const unsigned char&>
    linkageType: ''
    returnType: unsigned char
    signature: unsigned char & operator[](size_type pos) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/views.hh:55,1
    - Dst: pdns::views::UnsignedCharView::data
      Src: /src/pdns/pdns/views.hh:55,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 53
    functionDepth: 0
    functionLinenumber: 53
    functionLinenumberEnd: 56
    functionName: pdns::views::UnsignedCharView::data
    functionSourceFile: /src/pdns/pdns/views.hh
    functionUses: 2
    functionsReached:
    - reinterpret_cast<const unsigned char*>
    - pdns::views::UnsignedCharView::data
    linkageType: ''
    returnType: unsigned char
    signature: unsigned char * data() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::views::UnsignedCharView::size
      Src: /src/pdns/pdns/views.hh:61,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 59
    functionDepth: 0
    functionLinenumber: 59
    functionLinenumberEnd: 62
    functionName: pdns::views::UnsignedCharView::size
    functionSourceFile: /src/pdns/pdns/views.hh
    functionUses: 1
    functionsReached:
    - pdns::views::UnsignedCharView::size
    linkageType: ''
    returnType: size_t
    signature: size_t size() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::views::UnsignedCharView::length
      Src: /src/pdns/pdns/views.hh:66,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 64
    functionDepth: 0
    functionLinenumber: 64
    functionLinenumberEnd: 67
    functionName: pdns::views::UnsignedCharView::length
    functionSourceFile: /src/pdns/pdns/views.hh
    functionUses: 2
    functionsReached:
    - pdns::views::UnsignedCharView::length
    linkageType: ''
    returnType: size_t
    signature: size_t length() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - data_
    - size_
    argTypes:
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 35
      start: 32
    functionDepth: 0
    functionLinenumber: 32
    functionLinenumberEnd: 35
    functionName: pdns::views::UnsignedCharView::UnsignedCharView
    functionSourceFile: /src/pdns/pdns/views.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void UnsignedCharView(const char* data_, size_t size_)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/views.hh:38,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - data_
    - size_
    argTypes:
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 37
    functionDepth: 0
    functionLinenumber: 37
    functionLinenumberEnd: 40
    functionName: pdns::views::UnsignedCharView::UnsignedCharView
    functionSourceFile: /src/pdns/pdns/views.hh
    functionUses: 0
    functionsReached:
    - reinterpret_cast<const char*>
    linkageType: ''
    returnType: void
    signature: void UnsignedCharView(const unsigned char* data_, size_t size_)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: reinterpret_cast<const unsigned char&>
      Src: /src/pdns/pdns/views.hh:45,1
    - Dst: at
      Src: /src/pdns/pdns/views.hh:45,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - pos
    argTypes:
    - size_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 46
    functionName: '& at(size_type pos) const'
    functionSourceFile: /src/pdns/pdns/views.hh
    functionUses: 0
    functionsReached:
    - reinterpret_cast<const unsigned char&>
    - at
    linkageType: ''
    returnType: unsigned char
    signature: unsigned char & at(size_type pos) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: reinterpret_cast<const unsigned char&>
      Src: /src/pdns/pdns/views.hh:50,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - pos
    argTypes:
    - size_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 48
    functionDepth: 0
    functionLinenumber: 48
    functionLinenumberEnd: 51
    functionName: '& operator[](size_type pos) const'
    functionSourceFile: /src/pdns/pdns/views.hh
    functionUses: 0
    functionsReached:
    - reinterpret_cast<const unsigned char&>
    linkageType: ''
    returnType: unsigned char
    signature: unsigned char & operator[](size_type pos) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/views.hh:55,1
    - Dst: pdns::views::UnsignedCharView::data
      Src: /src/pdns/pdns/views.hh:55,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 53
    functionDepth: 0
    functionLinenumber: 53
    functionLinenumberEnd: 56
    functionName: pdns::views::UnsignedCharView::data
    functionSourceFile: /src/pdns/pdns/views.hh
    functionUses: 3
    functionsReached:
    - reinterpret_cast<const unsigned char*>
    - pdns::views::UnsignedCharView::data
    linkageType: ''
    returnType: unsigned char
    signature: unsigned char * data() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::views::UnsignedCharView::size
      Src: /src/pdns/pdns/views.hh:61,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 59
    functionDepth: 0
    functionLinenumber: 59
    functionLinenumberEnd: 62
    functionName: pdns::views::UnsignedCharView::size
    functionSourceFile: /src/pdns/pdns/views.hh
    functionUses: 2
    functionsReached:
    - pdns::views::UnsignedCharView::size
    linkageType: ''
    returnType: size_t
    signature: size_t size() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::views::UnsignedCharView::length
      Src: /src/pdns/pdns/views.hh:66,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 64
    functionDepth: 0
    functionLinenumber: 64
    functionLinenumberEnd: 67
    functionName: pdns::views::UnsignedCharView::length
    functionSourceFile: /src/pdns/pdns/views.hh
    functionUses: 3
    functionsReached:
    - pdns::views::UnsignedCharView::length
    linkageType: ''
    returnType: size_t
    signature: size_t length() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: purge
      Src: /src/pdns/pdns/auth-caches.cc:35,1
    - Dst: purge
      Src: /src/pdns/pdns/auth-caches.cc:36,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 31
    functionDepth: 0
    functionLinenumber: 31
    functionLinenumberEnd: 38
    functionName: purgeAuthCaches
    functionSourceFile: /src/pdns/pdns/auth-caches.cc
    functionUses: 0
    functionsReached:
    - purge
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t purgeAuthCaches()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: purge
      Src: /src/pdns/pdns/auth-caches.cc:45,1
    - Dst: purge
      Src: /src/pdns/pdns/auth-caches.cc:46,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - ' match'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 41
    functionDepth: 0
    functionLinenumber: 41
    functionLinenumberEnd: 48
    functionName: purgeAuthCaches
    functionSourceFile: /src/pdns/pdns/auth-caches.cc
    functionUses: 0
    functionsReached:
    - purge
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t purgeAuthCaches(const std::string& match)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: purgeExact
      Src: /src/pdns/pdns/auth-caches.cc:55,1
    - Dst: purgeExact
      Src: /src/pdns/pdns/auth-caches.cc:56,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - ' qname'
    argTypes:
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 51
    functionDepth: 0
    functionLinenumber: 51
    functionLinenumberEnd: 58
    functionName: purgeAuthCachesExact
    functionSourceFile: /src/pdns/pdns/auth-caches.cc
    functionUses: 0
    functionsReached:
    - purgeExact
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t purgeAuthCachesExact(const DNSName& qname)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 89
    functionDepth: 0
    functionLinenumber: 89
    functionLinenumberEnd: 91
    functionName: P11KitAttribute::Init
    functionSourceFile: /src/pdns/pdns/pkcs11signers.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Init()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: P11KitAttribute::Init
      Src: /src/pdns/pdns/pkcs11signers.cc:94,1
    - Dst: P11KitAttribute::setString
      Src: /src/pdns/pdns/pkcs11signers.cc:96,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - type_
    - ' value'
    argTypes:
    - CK_ATTRIBUTE_TYPE
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 93
    functionDepth: 1
    functionLinenumber: 93
    functionLinenumberEnd: 97
    functionName: P11KitAttribute::P11KitAttribute
    functionSourceFile: /src/pdns/pdns/pkcs11signers.cc
    functionUses: 0
    functionsReached:
    - P11KitAttribute::Init
    - P11KitAttribute::setString
    linkageType: ''
    returnType: void
    signature: void P11KitAttribute(CK_ATTRIBUTE_TYPE type_, const std::string& value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: P11KitAttribute::Init
      Src: /src/pdns/pdns/pkcs11signers.cc:100,1
    - Dst: P11KitAttribute::setByte
      Src: /src/pdns/pdns/pkcs11signers.cc:102,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - type_
    - value
    argTypes:
    - CK_ATTRIBUTE_TYPE
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 99
    functionDepth: 1
    functionLinenumber: 99
    functionLinenumberEnd: 103
    functionName: P11KitAttribute::P11KitAttribute
    functionSourceFile: /src/pdns/pdns/pkcs11signers.cc
    functionUses: 0
    functionsReached:
    - P11KitAttribute::Init
    - P11KitAttribute::setByte
    linkageType: ''
    returnType: void
    signature: void P11KitAttribute(CK_ATTRIBUTE_TYPE type_, char value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: P11KitAttribute::Init
      Src: /src/pdns/pdns/pkcs11signers.cc:106,1
    - Dst: P11KitAttribute::setByte
      Src: /src/pdns/pdns/pkcs11signers.cc:108,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - type_
    - value
    argTypes:
    - CK_ATTRIBUTE_TYPE
    - unsigned char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 105
    functionDepth: 1
    functionLinenumber: 105
    functionLinenumberEnd: 109
    functionName: P11KitAttribute::P11KitAttribute
    functionSourceFile: /src/pdns/pdns/pkcs11signers.cc
    functionUses: 0
    functionsReached:
    - P11KitAttribute::Init
    - P11KitAttribute::setByte
    linkageType: ''
    returnType: void
    signature: void P11KitAttribute(CK_ATTRIBUTE_TYPE type_, unsigned char value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: P11KitAttribute::Init
      Src: /src/pdns/pdns/pkcs11signers.cc:112,1
    - Dst: P11KitAttribute::setLong
      Src: /src/pdns/pdns/pkcs11signers.cc:114,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - type_
    - value
    argTypes:
    - CK_ATTRIBUTE_TYPE
    - unsigned long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 115
      start: 111
    functionDepth: 1
    functionLinenumber: 111
    functionLinenumberEnd: 115
    functionName: P11KitAttribute::P11KitAttribute
    functionSourceFile: /src/pdns/pdns/pkcs11signers.cc
    functionUses: 0
    functionsReached:
    - P11KitAttribute::Init
    - P11KitAttribute::setLong
    linkageType: ''
    returnType: void
    signature: void P11KitAttribute(CK_ATTRIBUTE_TYPE type_, unsigned long value)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 119
      start: 117
    functionDepth: 0
    functionLinenumber: 117
    functionLinenumberEnd: 119
    functionName: P11KitAttribute::valueType
    functionSourceFile: /src/pdns/pdns/pkcs11signers.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: CkaValueType
    signature: CkaValueType valueType() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 121
    functionDepth: 0
    functionLinenumber: 121
    functionLinenumberEnd: 123
    functionName: '&str() const'
    functionSourceFile: /src/pdns/pdns/pkcs11signers.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string &str() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 127
      start: 125
    functionDepth: 0
    functionLinenumber: 125
    functionLinenumberEnd: 127
    functionName: P11KitAttribute::byte
    functionSourceFile: /src/pdns/pdns/pkcs11signers.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: unsigned char
    signature: unsigned char byte() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 131
      start: 129
    functionDepth: 0
    functionLinenumber: 129
    functionLinenumberEnd: 131
    functionName: P11KitAttribute::ulong
    functionSourceFile: /src/pdns/pdns/pkcs11signers.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: unsigned long
    signature: unsigned long ulong() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ' value'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 136
      start: 133
    functionDepth: 0
    functionLinenumber: 133
    functionLinenumberEnd: 136
    functionName: P11KitAttribute::setString
    functionSourceFile: /src/pdns/pdns/pkcs11signers.cc
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setString(const std::string& value)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - value
    argTypes:
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 141
      start: 138
    functionDepth: 0
    functionLinenumber: 138
    functionLinenumberEnd: 141
    functionName: P11KitAttribute::setByte
    functionSourceFile: /src/pdns/pdns/pkcs11signers.cc
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setByte(char value)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - value
    argTypes:
    - unsigned char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 146
      start: 143
    functionDepth: 0
    functionLinenumber: 143
    functionLinenumberEnd: 146
    functionName: P11KitAttribute::setByte
    functionSourceFile: /src/pdns/pdns/pkcs11signers.cc
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setByte(unsigned char value)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - value
    argTypes:
    - unsigned long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 151
      start: 148
    functionDepth: 0
    functionLinenumber: 148
    functionLinenumberEnd: 151
    functionName: P11KitAttribute::setLong
    functionSourceFile: /src/pdns/pdns/pkcs11signers.cc
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setLong(unsigned long value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::make_unique<unsigned char[]>
      Src: /src/pdns/pdns/pkcs11signers.cc:156,1
    - Dst: get
      Src: /src/pdns/pdns/pkcs11signers.cc:158,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - amount
    argTypes:
    - CK_ULONG
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 159
      start: 155
    functionDepth: 0
    functionLinenumber: 155
    functionLinenumberEnd: 159
    functionName: P11KitAttribute::allocate
    functionSourceFile: /src/pdns/pdns/pkcs11signers.cc
    functionUses: 0
    functionsReached:
    - std::make_unique<unsigned char[]>
    - get
    linkageType: ''
    returnType: CK_BYTE_PTR
    signature: CK_BYTE_PTR allocate(CK_ULONG amount)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: P11KitAttribute::ckString::assign
      Src: /src/pdns/pdns/pkcs11signers.cc:164,1
    - Dst: get
      Src: /src/pdns/pdns/pkcs11signers.cc:164,1
    - Dst: reset
      Src: /src/pdns/pdns/pkcs11signers.cc:166,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - amount
    argTypes:
    - CK_ULONG
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 168
      start: 162
    functionDepth: 1
    functionLinenumber: 162
    functionLinenumberEnd: 168
    functionName: P11KitAttribute::commit
    functionSourceFile: /src/pdns/pdns/pkcs11signers.cc
    functionUses: 0
    functionsReached:
    - reset
    - P11KitAttribute::ckString::assign
    - get
    linkageType: ''
    returnType: void
    signature: void commit(CK_ULONG amount)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: get
      Src: /src/pdns/pdns/pkcs11signers.cc:185,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 1
    argNames:
    - attr
    argTypes:
    - CK_ATTRIBUTE_PTR
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 189
      start: 171
    functionDepth: 0
    functionLinenumber: 171
    functionLinenumberEnd: 189
    functionName: P11KitAttribute::wattr
    functionSourceFile: /src/pdns/pdns/pkcs11signers.cc
    functionUses: 0
    functionsReached:
    - get
    linkageType: ''
    returnType: void
    signature: void wattr(CK_ATTRIBUTE_PTR attr)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: c_str
      Src: /src/pdns/pdns/pkcs11signers.cc:206,1
    - Dst: size
      Src: /src/pdns/pdns/pkcs11signers.cc:207,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 1
    argNames:
    - attr
    argTypes:
    - CK_ATTRIBUTE_PTR
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 210
      start: 192
    functionDepth: 0
    functionLinenumber: 192
    functionLinenumberEnd: 210
    functionName: P11KitAttribute::rattr
    functionSourceFile: /src/pdns/pdns/pkcs11signers.cc
    functionUses: 0
    functionsReached:
    - c_str
    - size
    linkageType: ''
    returnType: void
    signature: void rattr(CK_ATTRIBUTE_PTR attr) const
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: error
      Src: /src/pdns/pdns/pkcs11signers.cc:227,1
    - Dst: p11_kit_strerror
      Src: /src/pdns/pdns/pkcs11signers.cc:227,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/pkcs11signers.cc:227,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/pkcs11signers.cc:227,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/pkcs11signers.cc:227,1
    - Dst: p11_kit_message
      Src: /src/pdns/pdns/pkcs11signers.cc:227,1
    - Dst: sqlstr
      Src: /src/pdns/pdns/pkcs11signers.cc:230,1
    - Dst: boost::format
      Src: /src/pdns/pdns/pkcs11signers.cc:230,1
    - Dst: p11_kit_strerror
      Src: /src/pdns/pdns/pkcs11signers.cc:230,1
    - Dst: p11_kit_message
      Src: /src/pdns/pdns/pkcs11signers.cc:230,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - ' operation'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 234
      start: 224
    functionDepth: 1
    functionLinenumber: 224
    functionLinenumberEnd: 234
    functionName: Pkcs11Slot::logError
    functionSourceFile: /src/pdns/pdns/pkcs11signers.cc
    functionUses: 0
    functionsReached:
    - p11_kit_strerror
    - boost::format
    - Logging::Loggable
    - p11_kit_message
    - sqlstr
    - error
    linkageType: ''
    returnType: void
    signature: void logError(const std::string& operation) const
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: C_OpenSession
      Src: /src/pdns/pdns/pkcs11signers.cc:246,1
    - Dst: Pkcs11Slot::logError
      Src: /src/pdns/pdns/pkcs11signers.cc:247,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/pkcs11signers.cc:248,1
    - Dst: C_GetTokenInfo
      Src: /src/pdns/pdns/pkcs11signers.cc:251,1
    - Dst: Pkcs11Slot::logError
      Src: /src/pdns/pdns/pkcs11signers.cc:254,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/pkcs11signers.cc:255,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/pkcs11signers.cc:255,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 3
    argNames:
    - slog
    - functions
    - ' slot'
    argTypes:
    - Logr::log_t
    - CK_FUNCTION_LIST*
    - CK_SLOT_ID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 257
      start: 237
    functionDepth: 2
    functionLinenumber: 237
    functionLinenumberEnd: 257
    functionName: Pkcs11Slot::Pkcs11Slot
    functionSourceFile: /src/pdns/pdns/pkcs11signers.cc
    functionUses: 0
    functionsReached:
    - std::to_string
    - PDNSException
    - C_OpenSession
    - C_GetTokenInfo
    - Pkcs11Slot::logError
    linkageType: ''
    returnType: void
    signature: void Pkcs11Slot(Logr::log_t slog, CK_FUNCTION_LIST* functions, const
      CK_SLOT_ID& slot)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: std::make_unique<unsigned char[]>
      Src: /src/pdns/pdns/pkcs11signers.cc:264,1
    - Dst: size
      Src: /src/pdns/pdns/pkcs11signers.cc:264,1
    - Dst: memcpy
      Src: /src/pdns/pdns/pkcs11signers.cc:265,1
    - Dst: auto::get
      Src: /src/pdns/pdns/pkcs11signers.cc:265,1
    - Dst: c_str
      Src: /src/pdns/pdns/pkcs11signers.cc:265,1
    - Dst: size
      Src: /src/pdns/pdns/pkcs11signers.cc:265,1
    - Dst: C_Login
      Src: /src/pdns/pdns/pkcs11signers.cc:266,1
    - Dst: auto::get
      Src: /src/pdns/pdns/pkcs11signers.cc:266,1
    - Dst: size
      Src: /src/pdns/pdns/pkcs11signers.cc:266,1
    - Dst: Pkcs11Slot::logError
      Src: /src/pdns/pdns/pkcs11signers.cc:267,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 1
    argNames:
    - ' pin'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 275
      start: 259
    functionDepth: 2
    functionLinenumber: 259
    functionLinenumberEnd: 275
    functionName: Pkcs11Slot::Login
    functionSourceFile: /src/pdns/pdns/pkcs11signers.cc
    functionUses: 0
    functionsReached:
    - std::make_unique<unsigned char[]>
    - memcpy
    - auto::get
    - size
    - c_str
    - Pkcs11Slot::logError
    - C_Login
    linkageType: ''
    returnType: bool
    signature: bool Login(const std::string& pin, CK_USER_TYPE userType=CKU_USER)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Pkcs11Slot::Login
      Src: /src/pdns/pdns/pkcs11signers.cc:278,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 279
      start: 277
    functionDepth: 3
    functionLinenumber: 277
    functionLinenumberEnd: 279
    functionName: Pkcs11Slot::Relogin
    functionSourceFile: /src/pdns/pdns/pkcs11signers.cc
    functionUses: 0
    functionsReached:
    - Pkcs11Slot::Login
    linkageType: ''
    returnType: bool
    signature: bool Relogin()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 281
      start: 281
    functionDepth: 0
    functionLinenumber: 281
    functionLinenumberEnd: 281
    functionName: Pkcs11Slot::LoggedIn
    functionSourceFile: /src/pdns/pdns/pkcs11signers.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool LoggedIn() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 283
      start: 283
    functionDepth: 0
    functionLinenumber: 283
    functionLinenumberEnd: 283
    functionName: '& Session()'
    functionSourceFile: /src/pdns/pdns/pkcs11signers.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: CK_SESSION_HANDLE
    signature: CK_SESSION_HANDLE & Session()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 285
      start: 285
    functionDepth: 0
    functionLinenumber: 285
    functionLinenumberEnd: 285
    functionName: Pkcs11Slot::f
    functionSourceFile: /src/pdns/pdns/pkcs11signers.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: CK_FUNCTION_LIST
    signature: CK_FUNCTION_LIST * f()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: error
      Src: /src/pdns/pdns/pkcs11signers.cc:316,1
    - Dst: p11_kit_strerror
      Src: /src/pdns/pdns/pkcs11signers.cc:316,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/pkcs11signers.cc:316,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/pkcs11signers.cc:316,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/pkcs11signers.cc:316,1
    - Dst: p11_kit_message
      Src: /src/pdns/pdns/pkcs11signers.cc:316,1
    - Dst: sqlstr
      Src: /src/pdns/pdns/pkcs11signers.cc:319,1
    - Dst: boost::format
      Src: /src/pdns/pdns/pkcs11signers.cc:319,1
    - Dst: p11_kit_strerror
      Src: /src/pdns/pdns/pkcs11signers.cc:319,1
    - Dst: p11_kit_message
      Src: /src/pdns/pdns/pkcs11signers.cc:319,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - ' operation'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 323
      start: 313
    functionDepth: 1
    functionLinenumber: 313
    functionLinenumberEnd: 323
    functionName: Pkcs11Token::logError
    functionSourceFile: /src/pdns/pdns/pkcs11signers.cc
    functionUses: 0
    functionsReached:
    - p11_kit_strerror
    - boost::format
    - Logging::Loggable
    - p11_kit_message
    - sqlstr
    - error
    linkageType: ''
    returnType: void
    signature: void logError(const std::string& operation) const
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/pkcs11signers.cc:339,1
    - Dst: c_str
      Src: /src/pdns/pdns/pkcs11signers.cc:339,1
    - Dst: Key
      Src: /src/pdns/pdns/pkcs11signers.cc:341,1
    - Dst: d2i_KeyParams
      Src: /src/pdns/pdns/pkcs11signers.cc:341,1
    - Dst: static_cast<long>
      Src: /src/pdns/pdns/pkcs11signers.cc:341,1
    - Dst: size
      Src: /src/pdns/pdns/pkcs11signers.cc:341,1
    - Dst: Key
      Src: /src/pdns/pdns/pkcs11signers.cc:343,1
    - Dst: d2i_ECParameters
      Src: /src/pdns/pdns/pkcs11signers.cc:343,1
    - Dst: static_cast<long>
      Src: /src/pdns/pdns/pkcs11signers.cc:343,1
    - Dst: size
      Src: /src/pdns/pdns/pkcs11signers.cc:343,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/pkcs11signers.cc:346,1
    - Dst: EVP_PKEY_get_bits
      Src: /src/pdns/pdns/pkcs11signers.cc:350,1
    - Dst: auto::get
      Src: /src/pdns/pdns/pkcs11signers.cc:350,1
    - Dst: EC_KEY_get0_group
      Src: /src/pdns/pdns/pkcs11signers.cc:352,1
    - Dst: auto::get
      Src: /src/pdns/pdns/pkcs11signers.cc:352,1
    - Dst: BigNum
      Src: /src/pdns/pdns/pkcs11signers.cc:353,1
    - Dst: BN_new
      Src: /src/pdns/pdns/pkcs11signers.cc:353,1
    - Dst: EC_GROUP_get_order
      Src: /src/pdns/pdns/pkcs11signers.cc:354,1
    - Dst: auto::get
      Src: /src/pdns/pdns/pkcs11signers.cc:354,1
    - Dst: BN_num_bits
      Src: /src/pdns/pdns/pkcs11signers.cc:355,1
    - Dst: auto::get
      Src: /src/pdns/pdns/pkcs11signers.cc:355,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/pkcs11signers.cc:360,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/pkcs11signers.cc:367,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 17
    argCount: 1
    argNames:
    - ' obj'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 369
      start: 325
    functionDepth: 0
    functionLinenumber: 325
    functionLinenumberEnd: 369
    functionName: Pkcs11Token::ecparam2bits
    functionSourceFile: /src/pdns/pdns/pkcs11signers.cc
    functionUses: 0
    functionsReached:
    - BN_num_bits
    - BN_new
    - auto::get
    - EVP_PKEY_get_bits
    - BigNum
    - d2i_ECParameters
    - EC_KEY_get0_group
    - EC_GROUP_get_order
    - PDNSException
    - size
    - reinterpret_cast<const unsigned char*>
    - static_cast<long>
    - d2i_KeyParams
    - Key
    - c_str
    - Logging::Logger::error
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int ecparam2bits(const std::string& obj) const
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/pkcs11signers.cc:376,1
    - Dst: lock
      Src: /src/pdns/pdns/pkcs11signers.cc:377,1
    - Dst: Pkcs11Token::LoadAttributes
      Src: /src/pdns/pdns/pkcs11signers.cc:378,1
    - Dst: Pkcs11Token::LoggedIn
      Src: /src/pdns/pdns/pkcs11signers.cc:381,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - ' pin'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 382
      start: 375
    functionDepth: 1
    functionLinenumber: 375
    functionLinenumberEnd: 382
    functionName: Pkcs11Token::Login
    functionSourceFile: /src/pdns/pdns/pkcs11signers.cc
    functionUses: 0
    functionsReached:
    - empty
    - Pkcs11Token::LoggedIn
    - Pkcs11Token::LoadAttributes
    - lock
    linkageType: ''
    returnType: bool
    signature: bool Login(const std::string& pin)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/pkcs11signers.cc:385,1
    - Dst: Pkcs11Token::LoadAttributes
      Src: /src/pdns/pdns/pkcs11signers.cc:386,1
    - Dst: lock
      Src: /src/pdns/pdns/pkcs11signers.cc:388,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 389
      start: 384
    functionDepth: 1
    functionLinenumber: 384
    functionLinenumberEnd: 389
    functionName: Pkcs11Token::LoggedIn
    functionSourceFile: /src/pdns/pdns/pkcs11signers.cc
    functionUses: 1
    functionsReached:
    - Pkcs11Token::LoadAttributes
    - lock
    linkageType: ''
    returnType: bool
    signature: bool LoggedIn()
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/pkcs11signers.cc:392,1
    - Dst: std::vector::emplace_back
      Src: /src/pdns/pdns/pkcs11signers.cc:395,1
    - Dst: std::vector::emplace_back
      Src: /src/pdns/pdns/pkcs11signers.cc:396,1
    - Dst: Pkcs11Token::FindObjects2
      Src: /src/pdns/pdns/pkcs11signers.cc:397,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/pkcs11signers.cc:398,1
    - Dst: SLOG
      Src: /src/pdns/pdns/pkcs11signers.cc:399,1
    - Dst: info
      Src: /src/pdns/pdns/pkcs11signers.cc:400,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/pkcs11signers.cc:400,1
    - Dst: std::vector::clear
      Src: /src/pdns/pdns/pkcs11signers.cc:404,1
    - Dst: std::vector::emplace_back
      Src: /src/pdns/pdns/pkcs11signers.cc:405,1
    - Dst: Pkcs11Token::GetAttributeValue2
      Src: /src/pdns/pdns/pkcs11signers.cc:406,1
    - Dst: byte
      Src: /src/pdns/pdns/pkcs11signers.cc:407,1
    - Dst: std::vector::clear
      Src: /src/pdns/pdns/pkcs11signers.cc:409,1
    - Dst: std::vector::emplace_back
      Src: /src/pdns/pdns/pkcs11signers.cc:410,1
    - Dst: std::vector::emplace_back
      Src: /src/pdns/pdns/pkcs11signers.cc:411,1
    - Dst: Pkcs11Token::FindObjects2
      Src: /src/pdns/pdns/pkcs11signers.cc:412,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/pkcs11signers.cc:413,1
    - Dst: SLOG
      Src: /src/pdns/pdns/pkcs11signers.cc:414,1
    - Dst: info
      Src: /src/pdns/pdns/pkcs11signers.cc:415,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/pkcs11signers.cc:415,1
    - Dst: std::vector::clear
      Src: /src/pdns/pdns/pkcs11signers.cc:420,1
    - Dst: std::vector::emplace_back
      Src: /src/pdns/pdns/pkcs11signers.cc:421,1
    - Dst: Pkcs11Token::GetAttributeValue2
      Src: /src/pdns/pdns/pkcs11signers.cc:423,1
    - Dst: ulong
      Src: /src/pdns/pdns/pkcs11signers.cc:424,1
    - Dst: std::vector::clear
      Src: /src/pdns/pdns/pkcs11signers.cc:426,1
    - Dst: std::vector::emplace_back
      Src: /src/pdns/pdns/pkcs11signers.cc:427,1
    - Dst: std::vector::emplace_back
      Src: /src/pdns/pdns/pkcs11signers.cc:428,1
    - Dst: std::vector::emplace_back
      Src: /src/pdns/pdns/pkcs11signers.cc:429,1
    - Dst: Pkcs11Token::GetAttributeValue2
      Src: /src/pdns/pdns/pkcs11signers.cc:431,1
    - Dst: str
      Src: /src/pdns/pdns/pkcs11signers.cc:432,1
    - Dst: str
      Src: /src/pdns/pdns/pkcs11signers.cc:433,1
    - Dst: ulong
      Src: /src/pdns/pdns/pkcs11signers.cc:434,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/pkcs11signers.cc:436,1
    - Dst: std::vector::clear
      Src: /src/pdns/pdns/pkcs11signers.cc:439,1
    - Dst: std::vector::emplace_back
      Src: /src/pdns/pdns/pkcs11signers.cc:440,1
    - Dst: std::vector::emplace_back
      Src: /src/pdns/pdns/pkcs11signers.cc:441,1
    - Dst: Pkcs11Token::GetAttributeValue2
      Src: /src/pdns/pdns/pkcs11signers.cc:442,1
    - Dst: str
      Src: /src/pdns/pdns/pkcs11signers.cc:443,1
    - Dst: Pkcs11Token::ecparam2bits
      Src: /src/pdns/pdns/pkcs11signers.cc:444,1
    - Dst: str
      Src: /src/pdns/pdns/pkcs11signers.cc:445,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/pkcs11signers.cc:445,1
    - Dst: str
      Src: /src/pdns/pdns/pkcs11signers.cc:446,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/pkcs11signers.cc:448,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/pkcs11signers.cc:451,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/pkcs11signers.cc:454,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 60
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 458
      start: 391
    functionDepth: 1
    functionLinenumber: 391
    functionLinenumberEnd: 458
    functionName: Pkcs11Token::LoadAttributes
    functionSourceFile: /src/pdns/pdns/pkcs11signers.cc
    functionUses: 2
    functionsReached:
    - SLOG
    - Pkcs11Token::FindObjects2
    - std::vector::size
    - Logging::Loggable
    - PDNSException
    - std::vector::emplace_back
    - info
    - lock
    - str
    - Pkcs11Token::ecparam2bits
    - byte
    - ulong
    - std::vector::clear
    - Pkcs11Token::GetAttributeValue2
    linkageType: ''
    returnType: void
    signature: void LoadAttributes()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/pkcs11signers.cc:462,1
    - Dst: std::make_unique<CK_ATTRIBUTE[]>
      Src: /src/pdns/pdns/pkcs11signers.cc:465,1
    - Dst: size
      Src: /src/pdns/pdns/pkcs11signers.cc:465,1
    - Dst: std::make_unique<CK_ATTRIBUTE[]>
      Src: /src/pdns/pdns/pkcs11signers.cc:466,1
    - Dst: size
      Src: /src/pdns/pdns/pkcs11signers.cc:466,1
    - Dst: rattr
      Src: /src/pdns/pdns/pkcs11signers.cc:470,1
    - Dst: auto::get
      Src: /src/pdns/pdns/pkcs11signers.cc:470,1
    - Dst: rattr
      Src: /src/pdns/pdns/pkcs11signers.cc:476,1
    - Dst: auto::get
      Src: /src/pdns/pdns/pkcs11signers.cc:476,1
    - Dst: auto::f
      Src: /src/pdns/pdns/pkcs11signers.cc:480,1
    - Dst: auto::Session
      Src: /src/pdns/pdns/pkcs11signers.cc:480,1
    - Dst: auto::get
      Src: /src/pdns/pdns/pkcs11signers.cc:480,1
    - Dst: size
      Src: /src/pdns/pdns/pkcs11signers.cc:480,1
    - Dst: auto::get
      Src: /src/pdns/pdns/pkcs11signers.cc:480,1
    - Dst: size
      Src: /src/pdns/pdns/pkcs11signers.cc:480,1
    - Dst: Pkcs11Token::logError
      Src: /src/pdns/pdns/pkcs11signers.cc:481,1
    - Dst: Pkcs11Token::LoadAttributes
      Src: /src/pdns/pdns/pkcs11signers.cc:484,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 5
    argNames:
    - mechanism
    - ' pubAttributes'
    - ' privAttributes'
    - pubKey
    - privKey
    argTypes:
    - CK_MECHANISM_PTR
    - std::vector<P11KitAttribute>
    - std::vector<P11KitAttribute>
    - CK_OBJECT_HANDLE_PTR
    - CK_OBJECT_HANDLE_PTR
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 487
      start: 460
    functionDepth: 2
    functionLinenumber: 460
    functionLinenumberEnd: 487
    functionName: Pkcs11Token::GenerateKeyPair
    functionSourceFile: /src/pdns/pdns/pkcs11signers.cc
    functionUses: 0
    functionsReached:
    - auto::get
    - std::make_unique<CK_ATTRIBUTE[]>
    - Pkcs11Token::LoadAttributes
    - size
    - lock
    - auto::Session
    - rattr
    - Pkcs11Token::logError
    - auto::f
    linkageType: ''
    returnType: int
    signature: int GenerateKeyPair(CK_MECHANISM_PTR mechanism, std::vector<P11KitAttribute>&
      pubAttributes, std::vector<P11KitAttribute>& privAttributes, CK_OBJECT_HANDLE_PTR
      pubKey, CK_OBJECT_HANDLE_PTR privKey)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/pkcs11signers.cc:492,1
    - Dst: auto::f
      Src: /src/pdns/pdns/pkcs11signers.cc:494,1
    - Dst: auto::Session
      Src: /src/pdns/pdns/pkcs11signers.cc:494,1
    - Dst: Pkcs11Token::logError
      Src: /src/pdns/pdns/pkcs11signers.cc:494,1
    - Dst: auto::Relogin
      Src: /src/pdns/pdns/pkcs11signers.cc:497,1
    - Dst: auto::f
      Src: /src/pdns/pdns/pkcs11signers.cc:500,1
    - Dst: auto::Session
      Src: /src/pdns/pdns/pkcs11signers.cc:500,1
    - Dst: c_str
      Src: /src/pdns/pdns/pkcs11signers.cc:500,1
    - Dst: size
      Src: /src/pdns/pdns/pkcs11signers.cc:500,1
    - Dst: assign
      Src: /src/pdns/pdns/pkcs11signers.cc:503,1
    - Dst: memset
      Src: /src/pdns/pdns/pkcs11signers.cc:506,1
    - Dst: Pkcs11Token::logError
      Src: /src/pdns/pdns/pkcs11signers.cc:507,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 3
    argNames:
    - ' data'
    - ' result'
    - mechanism
    argTypes:
    - std::string
    - std::string
    - CK_MECHANISM_PTR
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 509
      start: 489
    functionDepth: 2
    functionLinenumber: 489
    functionLinenumberEnd: 509
    functionName: Pkcs11Token::Sign
    functionSourceFile: /src/pdns/pdns/pkcs11signers.cc
    functionUses: 0
    functionsReached:
    - assign
    - Pkcs11Token::logError
    - auto::Session
    - lock
    - size
    - memset
    - auto::Relogin
    - c_str
    - auto::f
    linkageType: ''
    returnType: int
    signature: int Sign(const std::string& data, std::string& result, CK_MECHANISM_PTR
      mechanism)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/pkcs11signers.cc:512,1
    - Dst: auto::f
      Src: /src/pdns/pdns/pkcs11signers.cc:514,1
    - Dst: auto::Session
      Src: /src/pdns/pdns/pkcs11signers.cc:514,1
    - Dst: Pkcs11Token::logError
      Src: /src/pdns/pdns/pkcs11signers.cc:514,1
    - Dst: auto::Relogin
      Src: /src/pdns/pdns/pkcs11signers.cc:517,1
    - Dst: auto::f
      Src: /src/pdns/pdns/pkcs11signers.cc:520,1
    - Dst: auto::Session
      Src: /src/pdns/pdns/pkcs11signers.cc:520,1
    - Dst: c_str
      Src: /src/pdns/pdns/pkcs11signers.cc:520,1
    - Dst: size
      Src: /src/pdns/pdns/pkcs11signers.cc:520,1
    - Dst: c_str
      Src: /src/pdns/pdns/pkcs11signers.cc:520,1
    - Dst: size
      Src: /src/pdns/pdns/pkcs11signers.cc:520,1
    - Dst: Pkcs11Token::logError
      Src: /src/pdns/pdns/pkcs11signers.cc:521,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 3
    argNames:
    - ' data'
    - ' signature'
    - mechanism
    argTypes:
    - std::string
    - std::string
    - CK_MECHANISM_PTR
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 523
      start: 511
    functionDepth: 2
    functionLinenumber: 511
    functionLinenumberEnd: 523
    functionName: Pkcs11Token::Verify
    functionSourceFile: /src/pdns/pdns/pkcs11signers.cc
    functionUses: 0
    functionsReached:
    - Pkcs11Token::logError
    - auto::Session
    - lock
    - size
    - auto::Relogin
    - c_str
    - auto::f
    linkageType: ''
    returnType: int
    signature: int Verify(const std::string& data, const std::string& signature, CK_MECHANISM_PTR
      mechanism)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/pkcs11signers.cc:529,1
    - Dst: auto::f
      Src: /src/pdns/pdns/pkcs11signers.cc:530,1
    - Dst: auto::Session
      Src: /src/pdns/pdns/pkcs11signers.cc:530,1
    - Dst: Pkcs11Token::logError
      Src: /src/pdns/pdns/pkcs11signers.cc:530,1
    - Dst: auto::f
      Src: /src/pdns/pdns/pkcs11signers.cc:531,1
    - Dst: auto::Session
      Src: /src/pdns/pdns/pkcs11signers.cc:531,1
    - Dst: c_str
      Src: /src/pdns/pdns/pkcs11signers.cc:531,1
    - Dst: size
      Src: /src/pdns/pdns/pkcs11signers.cc:531,1
    - Dst: assign
      Src: /src/pdns/pdns/pkcs11signers.cc:533,1
    - Dst: memset
      Src: /src/pdns/pdns/pkcs11signers.cc:535,1
    - Dst: Pkcs11Token::logError
      Src: /src/pdns/pdns/pkcs11signers.cc:536,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 3
    argNames:
    - ' data'
    - ' result'
    - mechanism
    argTypes:
    - std::string
    - std::string
    - CK_MECHANISM_PTR
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 538
      start: 525
    functionDepth: 2
    functionLinenumber: 525
    functionLinenumberEnd: 538
    functionName: Pkcs11Token::Digest
    functionSourceFile: /src/pdns/pdns/pkcs11signers.cc
    functionUses: 0
    functionsReached:
    - assign
    - Pkcs11Token::logError
    - auto::Session
    - lock
    - size
    - memset
    - c_str
    - auto::f
    linkageType: ''
    returnType: int
    signature: int Digest(const std::string& data, std::string& result, CK_MECHANISM_PTR
      mechanism)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: f
      Src: /src/pdns/pdns/pkcs11signers.cc:541,1
    - Dst: Session
      Src: /src/pdns/pdns/pkcs11signers.cc:541,1
    - Dst: Pkcs11Token::logError
      Src: /src/pdns/pdns/pkcs11signers.cc:542,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - ' slot'
    - mechanism
    argTypes:
    - Pkcs11Slot
    - CK_MECHANISM_PTR
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 544
      start: 540
    functionDepth: 2
    functionLinenumber: 540
    functionLinenumberEnd: 544
    functionName: Pkcs11Token::DigestInit
    functionSourceFile: /src/pdns/pdns/pkcs11signers.cc
    functionUses: 0
    functionsReached:
    - Session
    - Pkcs11Token::logError
    - f
    linkageType: ''
    returnType: int
    signature: int DigestInit(Pkcs11Slot& slot, CK_MECHANISM_PTR mechanism)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: f
      Src: /src/pdns/pdns/pkcs11signers.cc:547,1
    - Dst: Session
      Src: /src/pdns/pdns/pkcs11signers.cc:547,1
    - Dst: c_str
      Src: /src/pdns/pdns/pkcs11signers.cc:547,1
    - Dst: size
      Src: /src/pdns/pdns/pkcs11signers.cc:547,1
    - Dst: Pkcs11Token::logError
      Src: /src/pdns/pdns/pkcs11signers.cc:548,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - ' slot'
    - ' data'
    argTypes:
    - Pkcs11Slot
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 550
      start: 546
    functionDepth: 2
    functionLinenumber: 546
    functionLinenumberEnd: 550
    functionName: Pkcs11Token::DigestUpdate
    functionSourceFile: /src/pdns/pdns/pkcs11signers.cc
    functionUses: 0
    functionsReached:
    - size
    - Pkcs11Token::logError
    - c_str
    - Session
    - f
    linkageType: ''
    returnType: int
    signature: int DigestUpdate(Pkcs11Slot& slot, const std::string& data)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: f
      Src: /src/pdns/pdns/pkcs11signers.cc:556,1
    - Dst: Session
      Src: /src/pdns/pdns/pkcs11signers.cc:556,1
    - Dst: assign
      Src: /src/pdns/pdns/pkcs11signers.cc:558,1
    - Dst: memset
      Src: /src/pdns/pdns/pkcs11signers.cc:560,1
    - Dst: Pkcs11Token::logError
      Src: /src/pdns/pdns/pkcs11signers.cc:561,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - ' slot'
    - ' result'
    argTypes:
    - Pkcs11Slot
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 563
      start: 552
    functionDepth: 2
    functionLinenumber: 552
    functionLinenumberEnd: 563
    functionName: Pkcs11Token::DigestFinal
    functionSourceFile: /src/pdns/pdns/pkcs11signers.cc
    functionUses: 0
    functionsReached:
    - assign
    - Pkcs11Token::logError
    - memset
    - Session
    - f
    linkageType: ''
    returnType: int
    signature: int DigestFinal(Pkcs11Slot& slot, std::string& result)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: std::make_unique<CK_OBJECT_HANDLE[]>
      Src: /src/pdns/pdns/pkcs11signers.cc:570,1
    - Dst: std::make_unique<CK_ATTRIBUTE[]>
      Src: /src/pdns/pdns/pkcs11signers.cc:571,1
    - Dst: size
      Src: /src/pdns/pdns/pkcs11signers.cc:571,1
    - Dst: rattr
      Src: /src/pdns/pdns/pkcs11signers.cc:575,1
    - Dst: auto::get
      Src: /src/pdns/pdns/pkcs11signers.cc:575,1
    - Dst: f
      Src: /src/pdns/pdns/pkcs11signers.cc:580,1
    - Dst: Session
      Src: /src/pdns/pdns/pkcs11signers.cc:580,1
    - Dst: auto::get
      Src: /src/pdns/pdns/pkcs11signers.cc:580,1
    - Dst: Pkcs11Token::logError
      Src: /src/pdns/pdns/pkcs11signers.cc:583,1
    - Dst: f
      Src: /src/pdns/pdns/pkcs11signers.cc:588,1
    - Dst: Session
      Src: /src/pdns/pdns/pkcs11signers.cc:588,1
    - Dst: auto::get
      Src: /src/pdns/pdns/pkcs11signers.cc:588,1
    - Dst: clear
      Src: /src/pdns/pdns/pkcs11signers.cc:589,1
    - Dst: push_back
      Src: /src/pdns/pdns/pkcs11signers.cc:593,1
    - Dst: auto::get
      Src: /src/pdns/pdns/pkcs11signers.cc:593,1
    - Dst: Pkcs11Token::logError
      Src: /src/pdns/pdns/pkcs11signers.cc:597,1
    - Dst: f
      Src: /src/pdns/pdns/pkcs11signers.cc:599,1
    - Dst: Session
      Src: /src/pdns/pdns/pkcs11signers.cc:599,1
    - Dst: Pkcs11Token::logError
      Src: /src/pdns/pdns/pkcs11signers.cc:600,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 22
    argCount: 4
    argNames:
    - ' slot'
    - ' attributes'
    - ' objects'
    - maxobjects
    argTypes:
    - Pkcs11Slot
    - std::vector<P11KitAttribute>
    - std::vector<CK_OBJECT_HANDLE>
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 603
      start: 565
    functionDepth: 2
    functionLinenumber: 565
    functionLinenumberEnd: 603
    functionName: Pkcs11Token::FindObjects2
    functionSourceFile: /src/pdns/pdns/pkcs11signers.cc
    functionUses: 1
    functionsReached:
    - auto::get
    - std::make_unique<CK_ATTRIBUTE[]>
    - push_back
    - std::make_unique<CK_OBJECT_HANDLE[]>
    - size
    - Pkcs11Token::logError
    - rattr
    - clear
    - Session
    - f
    linkageType: ''
    returnType: int
    signature: int FindObjects2(Pkcs11Slot& slot, const std::vector<P11KitAttribute>&
      attributes, std::vector<CK_OBJECT_HANDLE>& objects, int maxobjects)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: std::make_unique<CK_ATTRIBUTE[]>
      Src: /src/pdns/pdns/pkcs11signers.cc:608,1
    - Dst: size
      Src: /src/pdns/pdns/pkcs11signers.cc:608,1
    - Dst: wattr
      Src: /src/pdns/pdns/pkcs11signers.cc:612,1
    - Dst: auto::get
      Src: /src/pdns/pdns/pkcs11signers.cc:612,1
    - Dst: f
      Src: /src/pdns/pdns/pkcs11signers.cc:617,1
    - Dst: Session
      Src: /src/pdns/pdns/pkcs11signers.cc:617,1
    - Dst: auto::get
      Src: /src/pdns/pdns/pkcs11signers.cc:617,1
    - Dst: size
      Src: /src/pdns/pdns/pkcs11signers.cc:617,1
    - Dst: Pkcs11Token::logError
      Src: /src/pdns/pdns/pkcs11signers.cc:618,1
    - Dst: size
      Src: /src/pdns/pdns/pkcs11signers.cc:624,1
    - Dst: valueType
      Src: /src/pdns/pdns/pkcs11signers.cc:625,1
    - Dst: auto::get
      Src: /src/pdns/pdns/pkcs11signers.cc:626,1
    - Dst: allocate
      Src: /src/pdns/pdns/pkcs11signers.cc:626,1
    - Dst: auto::get
      Src: /src/pdns/pdns/pkcs11signers.cc:626,1
    - Dst: f
      Src: /src/pdns/pdns/pkcs11signers.cc:631,1
    - Dst: Session
      Src: /src/pdns/pdns/pkcs11signers.cc:631,1
    - Dst: auto::get
      Src: /src/pdns/pdns/pkcs11signers.cc:631,1
    - Dst: size
      Src: /src/pdns/pdns/pkcs11signers.cc:631,1
    - Dst: Pkcs11Token::logError
      Src: /src/pdns/pdns/pkcs11signers.cc:632,1
    - Dst: size
      Src: /src/pdns/pdns/pkcs11signers.cc:635,1
    - Dst: valueType
      Src: /src/pdns/pdns/pkcs11signers.cc:636,1
    - Dst: commit
      Src: /src/pdns/pdns/pkcs11signers.cc:637,1
    - Dst: auto::get
      Src: /src/pdns/pdns/pkcs11signers.cc:637,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 23
    argCount: 3
    argNames:
    - ' slot'
    - ' object'
    - ' attributes'
    argTypes:
    - Pkcs11Slot
    - CK_OBJECT_HANDLE
    - std::vector<P11KitAttribute>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 642
      start: 605
    functionDepth: 2
    functionLinenumber: 605
    functionLinenumberEnd: 642
    functionName: Pkcs11Token::GetAttributeValue2
    functionSourceFile: /src/pdns/pdns/pkcs11signers.cc
    functionUses: 1
    functionsReached:
    - auto::get
    - std::make_unique<CK_ATTRIBUTE[]>
    - wattr
    - commit
    - size
    - Pkcs11Token::logError
    - valueType
    - Session
    - allocate
    - f
    linkageType: ''
    returnType: int
    signature: int GetAttributeValue2(Pkcs11Slot& slot, const CK_OBJECT_HANDLE& object,
      std::vector<P11KitAttribute>& attributes)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 646
      start: 644
    functionDepth: 0
    functionLinenumber: 644
    functionLinenumberEnd: 646
    functionName: '& Modulus()'
    functionSourceFile: /src/pdns/pdns/pkcs11signers.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string & Modulus()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 650
      start: 648
    functionDepth: 0
    functionLinenumber: 648
    functionLinenumberEnd: 650
    functionName: '& Exponent()'
    functionSourceFile: /src/pdns/pdns/pkcs11signers.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string & Exponent()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 654
      start: 652
    functionDepth: 0
    functionLinenumber: 652
    functionLinenumberEnd: 654
    functionName: '& ECPoint()'
    functionSourceFile: /src/pdns/pdns/pkcs11signers.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string & ECPoint()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 658
      start: 656
    functionDepth: 0
    functionLinenumber: 656
    functionLinenumberEnd: 658
    functionName: '& ECParameters()'
    functionSourceFile: /src/pdns/pdns/pkcs11signers.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string & ECParameters()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 662
      start: 660
    functionDepth: 0
    functionLinenumber: 660
    functionLinenumberEnd: 662
    functionName: Pkcs11Token::KeyType
    functionSourceFile: /src/pdns/pdns/pkcs11signers.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: CK_KEY_TYPE
    signature: CK_KEY_TYPE KeyType()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 666
      start: 664
    functionDepth: 0
    functionLinenumber: 664
    functionLinenumberEnd: 666
    functionName: Pkcs11Token::Bits
    functionSourceFile: /src/pdns/pdns/pkcs11signers.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: CK_ULONG
    signature: CK_ULONG Bits()
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: CK_FUNCTION_LIST*::C_GetSlotList
      Src: /src/pdns/pdns/pkcs11signers.cc:683,1
    - Dst: SLOG
      Src: /src/pdns/pdns/pkcs11signers.cc:685,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/pkcs11signers.cc:686,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/pkcs11signers.cc:686,1
    - Dst: CK_FUNCTION_LIST*::C_GetSlotList
      Src: /src/pdns/pdns/pkcs11signers.cc:692,1
    - Dst: std::vector::data
      Src: /src/pdns/pdns/pkcs11signers.cc:692,1
    - Dst: SLOG
      Src: /src/pdns/pdns/pkcs11signers.cc:694,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/pkcs11signers.cc:695,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/pkcs11signers.cc:695,1
    - Dst: static_cast<CK_SLOT_ID>
      Src: /src/pdns/pdns/pkcs11signers.cc:702,1
    - Dst: CK_FUNCTION_LIST*::C_GetSlotInfo
      Src: /src/pdns/pdns/pkcs11signers.cc:704,1
    - Dst: SLOG
      Src: /src/pdns/pdns/pkcs11signers.cc:705,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/pkcs11signers.cc:706,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/pkcs11signers.cc:706,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/pkcs11signers.cc:706,1
    - Dst: CK_FUNCTION_LIST*::C_GetTokenInfo
      Src: /src/pdns/pdns/pkcs11signers.cc:709,1
    - Dst: SLOG
      Src: /src/pdns/pdns/pkcs11signers.cc:710,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/pkcs11signers.cc:711,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/pkcs11signers.cc:711,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/pkcs11signers.cc:711,1
    - Dst: std::string::assign
      Src: /src/pdns/pdns/pkcs11signers.cc:715,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/pkcs11signers.cc:715,1
    - Dst: Utility::trim
      Src: /src/pdns/pdns/pkcs11signers.cc:717,1
    - Dst: pdns_iequals
      Src: /src/pdns/pdns/pkcs11signers.cc:719,1
    - Dst: pdns::checked_stoi_into
      Src: /src/pdns/pdns/pkcs11signers.cc:726,1
    - Dst: CK_FUNCTION_LIST*::C_GetSlotInfo
      Src: /src/pdns/pdns/pkcs11signers.cc:727,1
    - Dst: SLOG
      Src: /src/pdns/pdns/pkcs11signers.cc:728,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/pkcs11signers.cc:729,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/pkcs11signers.cc:729,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/pkcs11signers.cc:729,1
    - Dst: SLOG
      Src: /src/pdns/pdns/pkcs11signers.cc:732,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/pkcs11signers.cc:733,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 41
    argCount: 5
    argNames:
    - slog
    - ' tokenId'
    - slotId
    - info
    - functions
    argTypes:
    - Logr::log_t
    - string
    - CK_SLOT_ID
    - _CK_SLOT_INFO*
    - CK_FUNCTION_LIST*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 739
      start: 674
    functionDepth: 1
    functionLinenumber: 674
    functionLinenumberEnd: 739
    functionName: Pkcs11Slot::HuntSlot
    functionSourceFile: /src/pdns/pdns/pkcs11signers.cc
    functionUses: 0
    functionsReached:
    - reinterpret_cast<char*>
    - SLOG
    - Logr::log_t::info
    - Logging::Loggable
    - CK_FUNCTION_LIST*::C_GetSlotInfo
    - pdns_iequals
    - CK_FUNCTION_LIST*::C_GetSlotList
    - static_cast<CK_SLOT_ID>
    - std::string::assign
    - Utility::trim
    - CK_FUNCTION_LIST*::C_GetTokenInfo
    - pdns::checked_stoi_into
    - std::vector::data
    linkageType: ''
    returnType: CK_RV
    signature: CK_RV Pkcs11Slot::HuntSlot(Logr::log_t slog, const string& tokenId,
      CK_SLOT_ID &slotId, _CK_SLOT_INFO* info, CK_FUNCTION_LIST* functions)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: std::string::append
      Src: /src/pdns/pdns/pkcs11signers.cc:744,1
    - Dst: std::string::append
      Src: /src/pdns/pdns/pkcs11signers.cc:745,1
    - Dst: find
      Src: /src/pdns/pdns/pkcs11signers.cc:751,1
    - Dst: end
      Src: /src/pdns/pdns/pkcs11signers.cc:751,1
    - Dst: p11_kit_module_for_name
      Src: /src/pdns/pdns/pkcs11signers.cc:756,1
    - Dst: c_str
      Src: /src/pdns/pdns/pkcs11signers.cc:756,1
    - Dst: p11_kit_registered_name_to_module
      Src: /src/pdns/pdns/pkcs11signers.cc:758,1
    - Dst: c_str
      Src: /src/pdns/pdns/pkcs11signers.cc:758,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/pkcs11signers.cc:760,1
    - Dst: CK_FUNCTION_LIST*::C_Initialize
      Src: /src/pdns/pdns/pkcs11signers.cc:761,1
    - Dst: Pkcs11Slot::HuntSlot
      Src: /src/pdns/pdns/pkcs11signers.cc:767,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/pkcs11signers.cc:768,1
    - Dst: std::string
      Src: /src/pdns/pdns/pkcs11signers.cc:768,1
    - Dst: std::string
      Src: /src/pdns/pdns/pkcs11signers.cc:768,1
    - Dst: std::string
      Src: /src/pdns/pdns/pkcs11signers.cc:768,1
    - Dst: sqlstr
      Src: /src/pdns/pdns/pkcs11signers.cc:768,1
    - Dst: boost::format
      Src: /src/pdns/pdns/pkcs11signers.cc:768,1
    - Dst: p11_kit_strerror
      Src: /src/pdns/pdns/pkcs11signers.cc:768,1
    - Dst: std::make_shared<LockGuarded<Pkcs11Slot>>
      Src: /src/pdns/pdns/pkcs11signers.cc:772,1
    - Dst: Pkcs11Slot::Pkcs11Slot
      Src: /src/pdns/pdns/pkcs11signers.cc:772,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 3
    argNames:
    - slog
    - ' module'
    - ' tokenId'
    argTypes:
    - Logr::log_t
    - std::string
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 775
      start: 741
    functionDepth: 3
    functionLinenumber: 741
    functionLinenumberEnd: 775
    functionName: Pkcs11Slot::GetSlot
    functionSourceFile: /src/pdns/pdns/pkcs11signers.cc
    functionUses: 0
    functionsReached:
    - p11_kit_strerror
    - std::string::append
    - p11_kit_module_for_name
    - Pkcs11Slot::HuntSlot
    - PDNSException
    - end
    - p11_kit_registered_name_to_module
    - sqlstr
    - boost::format
    - c_str
    - std::string
    - CK_FUNCTION_LIST*::C_Initialize
    - Pkcs11Slot::Pkcs11Slot
    - std::make_shared<LockGuarded<Pkcs11Slot>>
    - find
    linkageType: ''
    returnType: std::shared_ptr<LockGuarded<Pkcs11Slot>>
    signature: std::shared_ptr<LockGuarded<Pkcs11Slot>> Pkcs11Slot::GetSlot(Logr::log_t
      slog, const std::string& module, const string& tokenId)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::string::append
      Src: /src/pdns/pdns/pkcs11signers.cc:780,1
    - Dst: std::string::append
      Src: /src/pdns/pdns/pkcs11signers.cc:781,1
    - Dst: std::string::append
      Src: /src/pdns/pdns/pkcs11signers.cc:782,1
    - Dst: std::string::append
      Src: /src/pdns/pdns/pkcs11signers.cc:783,1
    - Dst: find
      Src: /src/pdns/pdns/pkcs11signers.cc:785,1
    - Dst: end
      Src: /src/pdns/pdns/pkcs11signers.cc:785,1
    - Dst: Pkcs11Slot::GetSlot
      Src: /src/pdns/pdns/pkcs11signers.cc:787,1
    - Dst: std::make_shared<Pkcs11Token>
      Src: /src/pdns/pdns/pkcs11signers.cc:788,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 5
    argNames:
    - slog
    - ' module'
    - ' tokenId'
    - ' label'
    - ' pub_label'
    argTypes:
    - Logr::log_t
    - std::string
    - string
    - std::string
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 790
      start: 777
    functionDepth: 4
    functionLinenumber: 777
    functionLinenumberEnd: 790
    functionName: Pkcs11Token::GetToken
    functionSourceFile: /src/pdns/pdns/pkcs11signers.cc
    functionUses: 0
    functionsReached:
    - std::string::append
    - Pkcs11Slot::GetSlot
    - end
    - std::make_shared<Pkcs11Token>
    - find
    linkageType: ''
    returnType: std::shared_ptr<Pkcs11Token>
    signature: std::shared_ptr<Pkcs11Token> Pkcs11Token::GetToken(Logr::log_t slog,
      const std::string& module, const string& tokenId, const std::string& label,
      const std::string& pub_label)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Pkcs11Token::d_slot::lock
      Src: /src/pdns/pdns/pkcs11signers.cc:802,1
    - Dst: Pkcs11Token::LoadAttributes
      Src: /src/pdns/pdns/pkcs11signers.cc:802,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 4
    argNames:
    - slog
    - ' slot'
    - ' label'
    - ' pub_label'
    argTypes:
    - Logr::log_t
    - std::shared_ptr<LockGuarded<Pkcs11Slot>>
    - std::string
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 803
      start: 792
    functionDepth: 2
    functionLinenumber: 792
    functionLinenumberEnd: 803
    functionName: Pkcs11Token::Pkcs11Token
    functionSourceFile: /src/pdns/pdns/pkcs11signers.cc
    functionUses: 0
    functionsReached:
    - Pkcs11Token::d_slot::lock
    - Pkcs11Token::LoadAttributes
    linkageType: ''
    returnType: void
    signature: void Pkcs11Token::Pkcs11Token(Logr::log_t slog, const std::shared_ptr<LockGuarded<Pkcs11Slot>>&
      slot, const std::string& label, const std::string& pub_label)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 805
      start: 805
    functionDepth: 0
    functionLinenumber: 805
    functionLinenumberEnd: 805
    functionName: Pkcs11Token::~Pkcs11Token()
    functionSourceFile: /src/pdns/pdns/pkcs11signers.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Pkcs11Token::~Pkcs11Token()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Pkcs11Slot::GetSlot
      Src: /src/pdns/pdns/pkcs11signers.cc:809,1
    - Dst: std::shared_ptr::lock
      Src: /src/pdns/pdns/pkcs11signers.cc:810,1
    - Dst: std::shared_ptr::lock
      Src: /src/pdns/pdns/pkcs11signers.cc:811,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 4
    argNames:
    - slog
    - ' module'
    - ' tokenId'
    - ' pin'
    argTypes:
    - Logr::log_t
    - std::string
    - string
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 812
      start: 807
    functionDepth: 4
    functionLinenumber: 807
    functionLinenumberEnd: 812
    functionName: PKCS11ModuleSlotLogin
    functionSourceFile: /src/pdns/pdns/pkcs11signers.cc
    functionUses: 0
    functionsReached:
    - std::shared_ptr::lock
    - Pkcs11Slot::GetSlot
    linkageType: ''
    returnType: bool
    signature: bool PKCS11ModuleSlotLogin(Logr::log_t slog, const std::string& module,
      const string& tokenId, const std::string& pin)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - slog
    - algorithm
    argTypes:
    - Logr::log_t
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 814
      start: 814
    functionDepth: 0
    functionLinenumber: 814
    functionLinenumberEnd: 814
    functionName: PKCS11DNSCryptoKeyEngine::PKCS11DNSCryptoKeyEngine
    functionSourceFile: /src/pdns/pdns/pkcs11signers.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void PKCS11DNSCryptoKeyEngine::PKCS11DNSCryptoKeyEngine(Logr::log_t
      slog, unsigned int algorithm)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 815
      start: 815
    functionDepth: 0
    functionLinenumber: 815
    functionLinenumberEnd: 815
    functionName: PKCS11DNSCryptoKeyEngine::~PKCS11DNSCryptoKeyEngine()
    functionSourceFile: /src/pdns/pdns/pkcs11signers.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void PKCS11DNSCryptoKeyEngine::~PKCS11DNSCryptoKeyEngine()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' orig'
    argTypes:
    - PKCS11DNSCryptoKeyEngine
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 816
      start: 816
    functionDepth: 0
    functionLinenumber: 816
    functionLinenumberEnd: 816
    functionName: PKCS11DNSCryptoKeyEngine::PKCS11DNSCryptoKeyEngine
    functionSourceFile: /src/pdns/pdns/pkcs11signers.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void PKCS11DNSCryptoKeyEngine::PKCS11DNSCryptoKeyEngine(const PKCS11DNSCryptoKeyEngine&
      orig)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: Pkcs11Token::GetToken
      Src: /src/pdns/pdns/pkcs11signers.cc:824,1
    - Dst: std::shared_ptr::LoggedIn
      Src: /src/pdns/pdns/pkcs11signers.cc:825,1
    - Dst: std::shared_ptr::Login
      Src: /src/pdns/pdns/pkcs11signers.cc:826,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/pkcs11signers.cc:827,1
    - Dst: at
      Src: /src/pdns/pdns/pkcs11signers.cc:832,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/pkcs11signers.cc:834,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/pkcs11signers.cc:834,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/pkcs11signers.cc:841,1
    - Dst: P11KitAttribute
      Src: /src/pdns/pdns/pkcs11signers.cc:841,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/pkcs11signers.cc:842,1
    - Dst: P11KitAttribute
      Src: /src/pdns/pdns/pkcs11signers.cc:842,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/pkcs11signers.cc:843,1
    - Dst: P11KitAttribute
      Src: /src/pdns/pdns/pkcs11signers.cc:843,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/pkcs11signers.cc:844,1
    - Dst: P11KitAttribute
      Src: /src/pdns/pdns/pkcs11signers.cc:844,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/pkcs11signers.cc:845,1
    - Dst: P11KitAttribute
      Src: /src/pdns/pdns/pkcs11signers.cc:845,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/pkcs11signers.cc:846,1
    - Dst: P11KitAttribute
      Src: /src/pdns/pdns/pkcs11signers.cc:846,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/pkcs11signers.cc:847,1
    - Dst: P11KitAttribute
      Src: /src/pdns/pdns/pkcs11signers.cc:847,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/pkcs11signers.cc:848,1
    - Dst: P11KitAttribute
      Src: /src/pdns/pdns/pkcs11signers.cc:848,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/pkcs11signers.cc:849,1
    - Dst: P11KitAttribute
      Src: /src/pdns/pdns/pkcs11signers.cc:849,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/pkcs11signers.cc:851,1
    - Dst: P11KitAttribute
      Src: /src/pdns/pdns/pkcs11signers.cc:851,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/pkcs11signers.cc:852,1
    - Dst: P11KitAttribute
      Src: /src/pdns/pdns/pkcs11signers.cc:852,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/pkcs11signers.cc:853,1
    - Dst: P11KitAttribute
      Src: /src/pdns/pdns/pkcs11signers.cc:853,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/pkcs11signers.cc:854,1
    - Dst: P11KitAttribute
      Src: /src/pdns/pdns/pkcs11signers.cc:854,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/pkcs11signers.cc:856,1
    - Dst: P11KitAttribute
      Src: /src/pdns/pdns/pkcs11signers.cc:856,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/pkcs11signers.cc:857,1
    - Dst: P11KitAttribute
      Src: /src/pdns/pdns/pkcs11signers.cc:857,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/pkcs11signers.cc:858,1
    - Dst: P11KitAttribute
      Src: /src/pdns/pdns/pkcs11signers.cc:858,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/pkcs11signers.cc:859,1
    - Dst: P11KitAttribute
      Src: /src/pdns/pdns/pkcs11signers.cc:859,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/pkcs11signers.cc:860,1
    - Dst: P11KitAttribute
      Src: /src/pdns/pdns/pkcs11signers.cc:860,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/pkcs11signers.cc:861,1
    - Dst: P11KitAttribute
      Src: /src/pdns/pdns/pkcs11signers.cc:861,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/pkcs11signers.cc:863,1
    - Dst: P11KitAttribute
      Src: /src/pdns/pdns/pkcs11signers.cc:863,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/pkcs11signers.cc:864,1
    - Dst: P11KitAttribute
      Src: /src/pdns/pdns/pkcs11signers.cc:864,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/pkcs11signers.cc:865,1
    - Dst: P11KitAttribute
      Src: /src/pdns/pdns/pkcs11signers.cc:865,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/pkcs11signers.cc:866,1
    - Dst: P11KitAttribute
      Src: /src/pdns/pdns/pkcs11signers.cc:866,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/pkcs11signers.cc:867,1
    - Dst: P11KitAttribute
      Src: /src/pdns/pdns/pkcs11signers.cc:867,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/pkcs11signers.cc:868,1
    - Dst: P11KitAttribute
      Src: /src/pdns/pdns/pkcs11signers.cc:868,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/pkcs11signers.cc:869,1
    - Dst: P11KitAttribute
      Src: /src/pdns/pdns/pkcs11signers.cc:869,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/pkcs11signers.cc:870,1
    - Dst: P11KitAttribute
      Src: /src/pdns/pdns/pkcs11signers.cc:870,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/pkcs11signers.cc:871,1
    - Dst: P11KitAttribute
      Src: /src/pdns/pdns/pkcs11signers.cc:871,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/pkcs11signers.cc:872,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/pkcs11signers.cc:872,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/pkcs11signers.cc:874,1
    - Dst: P11KitAttribute
      Src: /src/pdns/pdns/pkcs11signers.cc:874,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/pkcs11signers.cc:875,1
    - Dst: P11KitAttribute
      Src: /src/pdns/pdns/pkcs11signers.cc:875,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/pkcs11signers.cc:876,1
    - Dst: P11KitAttribute
      Src: /src/pdns/pdns/pkcs11signers.cc:876,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/pkcs11signers.cc:877,1
    - Dst: P11KitAttribute
      Src: /src/pdns/pdns/pkcs11signers.cc:877,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/pkcs11signers.cc:879,1
    - Dst: P11KitAttribute
      Src: /src/pdns/pdns/pkcs11signers.cc:879,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/pkcs11signers.cc:880,1
    - Dst: P11KitAttribute
      Src: /src/pdns/pdns/pkcs11signers.cc:880,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/pkcs11signers.cc:881,1
    - Dst: P11KitAttribute
      Src: /src/pdns/pdns/pkcs11signers.cc:881,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/pkcs11signers.cc:882,1
    - Dst: P11KitAttribute
      Src: /src/pdns/pdns/pkcs11signers.cc:882,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/pkcs11signers.cc:883,1
    - Dst: P11KitAttribute
      Src: /src/pdns/pdns/pkcs11signers.cc:883,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/pkcs11signers.cc:884,1
    - Dst: P11KitAttribute
      Src: /src/pdns/pdns/pkcs11signers.cc:884,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/pkcs11signers.cc:886,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/pkcs11signers.cc:886,1
    - Dst: std::shared_ptr::GenerateKeyPair
      Src: /src/pdns/pdns/pkcs11signers.cc:890,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/pkcs11signers.cc:891,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 62
    argCount: 1
    argNames:
    - bits
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 893
      start: 818
    functionDepth: 5
    functionLinenumber: 818
    functionLinenumberEnd: 893
    functionName: PKCS11DNSCryptoKeyEngine::create
    functionSourceFile: /src/pdns/pdns/pkcs11signers.cc
    functionUses: 0
    functionsReached:
    - std::vector::push_back
    - std::to_string
    - Pkcs11Token::GetToken
    - PDNSException
    - P11KitAttribute
    - std::shared_ptr::GenerateKeyPair
    - std::shared_ptr::LoggedIn
    - at
    - std::shared_ptr::Login
    linkageType: ''
    returnType: void
    signature: void PKCS11DNSCryptoKeyEngine::create(unsigned int bits)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: Pkcs11Token::GetToken
      Src: /src/pdns/pdns/pkcs11signers.cc:898,1
    - Dst: std::shared_ptr::LoggedIn
      Src: /src/pdns/pdns/pkcs11signers.cc:899,1
    - Dst: std::shared_ptr::Login
      Src: /src/pdns/pdns/pkcs11signers.cc:900,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/pkcs11signers.cc:901,1
    - Dst: std::shared_ptr::Sign
      Src: /src/pdns/pdns/pkcs11signers.cc:909,1
    - Dst: PKCS11DNSCryptoKeyEngine::hash
      Src: /src/pdns/pdns/pkcs11signers.cc:909,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/pkcs11signers.cc:909,1
    - Dst: std::shared_ptr::Sign
      Src: /src/pdns/pdns/pkcs11signers.cc:911,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/pkcs11signers.cc:911,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 16
    argCount: 1
    argNames:
    - ' msg'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 914
      start: 895
    functionDepth: 5
    functionLinenumber: 895
    functionLinenumberEnd: 914
    functionName: PKCS11DNSCryptoKeyEngine::sign
    functionSourceFile: /src/pdns/pdns/pkcs11signers.cc
    functionUses: 0
    functionsReached:
    - Pkcs11Token::GetToken
    - PDNSException
    - std::shared_ptr::Sign
    - PKCS11DNSCryptoKeyEngine::hash
    - std::shared_ptr::LoggedIn
    - std::shared_ptr::Login
    linkageType: ''
    returnType: std::string
    signature: std::string PKCS11DNSCryptoKeyEngine::sign(const std::string& msg)
      const
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: Pkcs11Token::GetToken
      Src: /src/pdns/pdns/pkcs11signers.cc:923,1
    - Dst: std::shared_ptr::LoggedIn
      Src: /src/pdns/pdns/pkcs11signers.cc:924,1
    - Dst: std::shared_ptr::Login
      Src: /src/pdns/pdns/pkcs11signers.cc:925,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/pkcs11signers.cc:926,1
    - Dst: std::shared_ptr::Digest
      Src: /src/pdns/pdns/pkcs11signers.cc:928,1
    - Dst: SLOG
      Src: /src/pdns/pdns/pkcs11signers.cc:929,1
    - Dst: info
      Src: /src/pdns/pdns/pkcs11signers.cc:930,1
    - Dst: pdns::sha1sum
      Src: /src/pdns/pdns/pkcs11signers.cc:934,1
    - Dst: pdns::sha256sum
      Src: /src/pdns/pdns/pkcs11signers.cc:937,1
    - Dst: pdns::sha512sum
      Src: /src/pdns/pdns/pkcs11signers.cc:940,1
    - Dst: pdns::sha256sum
      Src: /src/pdns/pdns/pkcs11signers.cc:943,1
    - Dst: pdns::sha384sum
      Src: /src/pdns/pdns/pkcs11signers.cc:946,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 31
    argCount: 1
    argNames:
    - ' msg'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 951
      start: 916
    functionDepth: 5
    functionLinenumber: 916
    functionLinenumberEnd: 951
    functionName: PKCS11DNSCryptoKeyEngine::hash
    functionSourceFile: /src/pdns/pdns/pkcs11signers.cc
    functionUses: 1
    functionsReached:
    - std::shared_ptr::Digest
    - pdns::sha1sum
    - SLOG
    - pdns::sha512sum
    - Pkcs11Token::GetToken
    - PDNSException
    - info
    - pdns::sha384sum
    - pdns::sha256sum
    - std::shared_ptr::LoggedIn
    - std::shared_ptr::Login
    linkageType: ''
    returnType: std::string
    signature: std::string PKCS11DNSCryptoKeyEngine::hash(const std::string& msg)
      const
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Pkcs11Token::GetToken
      Src: /src/pdns/pdns/pkcs11signers.cc:955,1
    - Dst: std::shared_ptr::LoggedIn
      Src: /src/pdns/pdns/pkcs11signers.cc:956,1
    - Dst: std::shared_ptr::Login
      Src: /src/pdns/pdns/pkcs11signers.cc:957,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/pkcs11signers.cc:958,1
    - Dst: std::shared_ptr::Verify
      Src: /src/pdns/pdns/pkcs11signers.cc:965,1
    - Dst: PKCS11DNSCryptoKeyEngine::hash
      Src: /src/pdns/pdns/pkcs11signers.cc:965,1
    - Dst: std::shared_ptr::Verify
      Src: /src/pdns/pdns/pkcs11signers.cc:967,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 2
    argNames:
    - ' msg'
    - ' signature'
    argTypes:
    - std::string
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 969
      start: 953
    functionDepth: 5
    functionLinenumber: 953
    functionLinenumberEnd: 969
    functionName: PKCS11DNSCryptoKeyEngine::verify
    functionSourceFile: /src/pdns/pdns/pkcs11signers.cc
    functionUses: 0
    functionsReached:
    - std::shared_ptr::Verify
    - Pkcs11Token::GetToken
    - PDNSException
    - PKCS11DNSCryptoKeyEngine::hash
    - std::shared_ptr::LoggedIn
    - std::shared_ptr::Login
    linkageType: ''
    returnType: bool
    signature: bool PKCS11DNSCryptoKeyEngine::verify(const std::string& msg, const
      std::string& signature) const
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Pkcs11Token::GetToken
      Src: /src/pdns/pdns/pkcs11signers.cc:974,1
    - Dst: std::shared_ptr::LoggedIn
      Src: /src/pdns/pdns/pkcs11signers.cc:975,1
    - Dst: std::shared_ptr::Login
      Src: /src/pdns/pdns/pkcs11signers.cc:976,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/pkcs11signers.cc:977,1
    - Dst: std::shared_ptr::KeyType
      Src: /src/pdns/pdns/pkcs11signers.cc:979,1
    - Dst: std::shared_ptr::Exponent
      Src: /src/pdns/pdns/pkcs11signers.cc:980,1
    - Dst: std::string::assign
      Src: /src/pdns/pdns/pkcs11signers.cc:981,1
    - Dst: std::shared_ptr::Exponent
      Src: /src/pdns/pdns/pkcs11signers.cc:981,1
    - Dst: std::string::assign
      Src: /src/pdns/pdns/pkcs11signers.cc:983,1
    - Dst: htons
      Src: /src/pdns/pdns/pkcs11signers.cc:984,1
    - Dst: std::shared_ptr::Exponent
      Src: /src/pdns/pdns/pkcs11signers.cc:984,1
    - Dst: std::string::append
      Src: /src/pdns/pdns/pkcs11signers.cc:985,1
    - Dst: std::string::append
      Src: /src/pdns/pdns/pkcs11signers.cc:987,1
    - Dst: std::shared_ptr::Exponent
      Src: /src/pdns/pdns/pkcs11signers.cc:987,1
    - Dst: std::string::append
      Src: /src/pdns/pdns/pkcs11signers.cc:988,1
    - Dst: std::shared_ptr::Modulus
      Src: /src/pdns/pdns/pkcs11signers.cc:988,1
    - Dst: std::string::append
      Src: /src/pdns/pdns/pkcs11signers.cc:990,1
    - Dst: std::shared_ptr::ECPoint
      Src: /src/pdns/pdns/pkcs11signers.cc:990,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 993
      start: 971
    functionDepth: 5
    functionLinenumber: 971
    functionLinenumberEnd: 993
    functionName: PKCS11DNSCryptoKeyEngine::getPublicKeyString
    functionSourceFile: /src/pdns/pdns/pkcs11signers.cc
    functionUses: 0
    functionsReached:
    - std::string::append
    - Pkcs11Token::GetToken
    - PDNSException
    - std::shared_ptr::KeyType
    - std::shared_ptr::ECPoint
    - std::shared_ptr::Exponent
    - std::string::assign
    - std::shared_ptr::Modulus
    - std::shared_ptr::LoggedIn
    - std::shared_ptr::Login
    - htons
    linkageType: ''
    returnType: std::string
    signature: std::string PKCS11DNSCryptoKeyEngine::getPublicKeyString() const
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Pkcs11Token::GetToken
      Src: /src/pdns/pdns/pkcs11signers.cc:997,1
    - Dst: std::shared_ptr::LoggedIn
      Src: /src/pdns/pdns/pkcs11signers.cc:998,1
    - Dst: std::shared_ptr::Login
      Src: /src/pdns/pdns/pkcs11signers.cc:999,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/pkcs11signers.cc:1000,1
    - Dst: std::shared_ptr::Bits
      Src: /src/pdns/pdns/pkcs11signers.cc:1002,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1003
      start: 995
    functionDepth: 5
    functionLinenumber: 995
    functionLinenumberEnd: 1003
    functionName: PKCS11DNSCryptoKeyEngine::getBits
    functionSourceFile: /src/pdns/pdns/pkcs11signers.cc
    functionUses: 0
    functionsReached:
    - Pkcs11Token::GetToken
    - PDNSException
    - std::shared_ptr::Bits
    - std::shared_ptr::LoggedIn
    - std::shared_ptr::Login
    linkageType: ''
    returnType: int
    signature: int PKCS11DNSCryptoKeyEngine::getBits() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::to_string
      Src: /src/pdns/pdns/pkcs11signers.cc:1007,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1015
      start: 1005
    functionDepth: 0
    functionLinenumber: 1005
    functionLinenumberEnd: 1015
    functionName: PKCS11DNSCryptoKeyEngine::convertToISCVector
    functionSourceFile: /src/pdns/pdns/pkcs11signers.cc
    functionUses: 0
    functionsReached:
    - std::to_string
    linkageType: ''
    returnType: DNSCryptoKeyEngine::storvector_t
    signature: DNSCryptoKeyEngine::storvector_t PKCS11DNSCryptoKeyEngine::convertToISCVector()
      const
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: pdns::checked_stoi_into
      Src: /src/pdns/pdns/pkcs11signers.cc:1018,1
    - Dst: Utility::trim
      Src: /src/pdns/pdns/pkcs11signers.cc:1021,1
    - Dst: find
      Src: /src/pdns/pdns/pkcs11signers.cc:1024,1
    - Dst: end
      Src: /src/pdns/pdns/pkcs11signers.cc:1024,1
    - Dst: Pkcs11Token::GetToken
      Src: /src/pdns/pdns/pkcs11signers.cc:1031,1
    - Dst: std::shared_ptr::LoggedIn
      Src: /src/pdns/pdns/pkcs11signers.cc:1032,1
    - Dst: std::shared_ptr::Login
      Src: /src/pdns/pdns/pkcs11signers.cc:1033,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/pkcs11signers.cc:1034,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 2
    argNames:
    - ' drc'
    - ' stormap'
    argTypes:
    - DNSKEYRecordContent
    - stormap_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1035
      start: 1017
    functionDepth: 5
    functionLinenumber: 1017
    functionLinenumberEnd: 1035
    functionName: PKCS11DNSCryptoKeyEngine::fromISCMap
    functionSourceFile: /src/pdns/pdns/pkcs11signers.cc
    functionUses: 0
    functionsReached:
    - Pkcs11Token::GetToken
    - PDNSException
    - end
    - Utility::trim
    - std::shared_ptr::LoggedIn
    - pdns::checked_stoi_into
    - std::shared_ptr::Login
    - find
    linkageType: ''
    returnType: void
    signature: void PKCS11DNSCryptoKeyEngine::fromISCMap(DNSKEYRecordContent& drc,
      stormap_t& stormap)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: make_unique<PKCS11DNSCryptoKeyEngine>
      Src: /src/pdns/pdns/pkcs11signers.cc:1039,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - slog
    - algorithm
    argTypes:
    - Logr::log_t
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1040
      start: 1037
    functionDepth: 0
    functionLinenumber: 1037
    functionLinenumberEnd: 1040
    functionName: PKCS11DNSCryptoKeyEngine::maker
    functionSourceFile: /src/pdns/pdns/pkcs11signers.cc
    functionUses: 0
    functionsReached:
    - make_unique<PKCS11DNSCryptoKeyEngine>
    linkageType: ''
    returnType: std::unique_ptr<DNSCryptoKeyEngine>
    signature: std::unique_ptr<DNSCryptoKeyEngine> PKCS11DNSCryptoKeyEngine::maker(Logr::log_t
      slog, unsigned int algorithm)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: p11_kit_modules_load_and_initialize
      Src: /src/pdns/pdns/pkcs11signers.cc:1049,1
    - Dst: p11_kit_initialize_registered
      Src: /src/pdns/pdns/pkcs11signers.cc:1051,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1053
      start: 1046
    functionDepth: 0
    functionLinenumber: 1046
    functionLinenumberEnd: 1053
    functionName: LoaderStruct
    functionSourceFile: /src/pdns/pdns/pkcs11signers.cc
    functionUses: 0
    functionsReached:
    - p11_kit_initialize_registered
    - p11_kit_modules_load_and_initialize
    linkageType: ''
    returnType: void
    signature: void LoaderStruct()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: p11_kit_modules_finalize_and_release
      Src: /src/pdns/pdns/pkcs11signers.cc:1056,1
    - Dst: p11_kit_finalize_registered
      Src: /src/pdns/pdns/pkcs11signers.cc:1058,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1060
      start: 1054
    functionDepth: 0
    functionLinenumber: 1054
    functionLinenumberEnd: 1060
    functionName: ~LoaderStruct()
    functionSourceFile: /src/pdns/pdns/pkcs11signers.cc
    functionUses: 0
    functionsReached:
    - p11_kit_finalize_registered
    - p11_kit_modules_finalize_and_release
    linkageType: ''
    returnType: void
    signature: void ~LoaderStruct()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: p11_kit_modules_load_and_initialize
      Src: /src/pdns/pdns/pkcs11signers.cc:1049,1
    - Dst: p11_kit_initialize_registered
      Src: /src/pdns/pdns/pkcs11signers.cc:1051,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1053
      start: 1046
    functionDepth: 0
    functionLinenumber: 1046
    functionLinenumberEnd: 1053
    functionName: LoaderStruct
    functionSourceFile: /src/pdns/pdns/pkcs11signers.cc
    functionUses: 0
    functionsReached:
    - p11_kit_initialize_registered
    - p11_kit_modules_load_and_initialize
    linkageType: ''
    returnType: void
    signature: void LoaderStruct()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: p11_kit_modules_finalize_and_release
      Src: /src/pdns/pdns/pkcs11signers.cc:1056,1
    - Dst: p11_kit_finalize_registered
      Src: /src/pdns/pdns/pkcs11signers.cc:1058,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1060
      start: 1054
    functionDepth: 0
    functionLinenumber: 1054
    functionLinenumberEnd: 1060
    functionName: ~LoaderStruct()
    functionSourceFile: /src/pdns/pdns/pkcs11signers.cc
    functionUses: 0
    functionsReached:
    - p11_kit_finalize_registered
    - p11_kit_modules_finalize_and_release
    linkageType: ''
    returnType: void
    signature: void ~LoaderStruct()
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: GssContext::getCounts
      Src: /src/pdns/pdns/tkey.cc:11,1
    - Dst: SLOG
      Src: /src/pdns/pdns/tkey.cc:12,1
    - Dst: info
      Src: /src/pdns/pdns/tkey.cc:13,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/tkey.cc:13,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/tkey.cc:13,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/tkey.cc:13,1
    - Dst: TKEYRecordContent::TKEYRecordContent
      Src: /src/pdns/pdns/tkey.cc:17,1
    - Dst: TKEYRecordContent::TKEYRecordContent
      Src: /src/pdns/pdns/tkey.cc:18,1
    - Dst: DNSName::DNSName
      Src: /src/pdns/pdns/tkey.cc:19,1
    - Dst: getTKEYRecord
      Src: /src/pdns/pdns/tkey.cc:24,1
    - Dst: SLOG
      Src: /src/pdns/pdns/tkey.cc:25,1
    - Dst: info
      Src: /src/pdns/pdns/tkey.cc:26,1
    - Dst: setRcode
      Src: /src/pdns/pdns/tkey.cc:27,1
    - Dst: time
      Src: /src/pdns/pdns/tkey.cc:31,1
    - Dst: getDomainMetadata
      Src: /src/pdns/pdns/tkey.cc:47,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/tkey.cc:47,1
    - Dst: ZoneName::chopOff
      Src: /src/pdns/pdns/tkey.cc:50,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/tkey.cc:52,1
    - Dst: GssContext::setLocalPrincipal
      Src: /src/pdns/pdns/tkey.cc:56,1
    - Dst: GssContext::accept
      Src: /src/pdns/pdns/tkey.cc:58,1
    - Dst: GssContext::destroy
      Src: /src/pdns/pdns/tkey.cc:59,1
    - Dst: SLOG
      Src: /src/pdns/pdns/tkey.cc:74,1
    - Dst: info
      Src: /src/pdns/pdns/tkey.cc:75,1
    - Dst: SLOG
      Src: /src/pdns/pdns/tkey.cc:77,1
    - Dst: info
      Src: /src/pdns/pdns/tkey.cc:78,1
    - Dst: setRcode
      Src: /src/pdns/pdns/tkey.cc:84,1
    - Dst: setRcode
      Src: /src/pdns/pdns/tkey.cc:86,1
    - Dst: GssContext::valid
      Src: /src/pdns/pdns/tkey.cc:90,1
    - Dst: GssContext::destroy
      Src: /src/pdns/pdns/tkey.cc:91,1
    - Dst: setRcode
      Src: /src/pdns/pdns/tkey.cc:99,1
    - Dst: setRcode
      Src: /src/pdns/pdns/tkey.cc:101,1
    - Dst: std::shared_ptr::d_key::size
      Src: /src/pdns/pdns/tkey.cc:107,1
    - Dst: std::shared_ptr::d_other::size
      Src: /src/pdns/pdns/tkey.cc:108,1
    - Dst: DNSZoneRecord::dr::setContent
      Src: /src/pdns/pdns/tkey.cc:116,1
    - Dst: std::move
      Src: /src/pdns/pdns/tkey.cc:116,1
    - Dst: addRecord
      Src: /src/pdns/pdns/tkey.cc:118,1
    - Dst: std::move
      Src: /src/pdns/pdns/tkey.cc:118,1
    - Dst: TSIGRecordContent::TSIGRecordContent
      Src: /src/pdns/pdns/tkey.cc:123,1
    - Dst: setTSIGDetails
      Src: /src/pdns/pdns/tkey.cc:132,1
    - Dst: DNSName::toStringNoDot
      Src: /src/pdns/pdns/tkey.cc:132,1
    - Dst: commitD
      Src: /src/pdns/pdns/tkey.cc:136,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 83
    argCount: 2
    argNames:
    - ' p'
    - ' r'
    argTypes:
    - DNSPacket
    - std::unique_ptr<DNSPacket>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 137
      start: 8
    functionDepth: 3
    functionLinenumber: 8
    functionLinenumberEnd: 137
    functionName: PacketHandler::tkeyHandler
    functionSourceFile: /src/pdns/pdns/tkey.cc
    functionUses: 0
    functionsReached:
    - TKEYRecordContent::TKEYRecordContent
    - std::shared_ptr::d_key::size
    - TSIGRecordContent::TSIGRecordContent
    - GssContext::accept
    - GssContext::getCounts
    - getDomainMetadata
    - SLOG
    - std::vector::size
    - Logging::Loggable
    - time
    - DNSZoneRecord::dr::setContent
    - addRecord
    - GssContext::valid
    - setRcode
    - commitD
    - getTKEYRecord
    - setTSIGDetails
    - GssContext::destroy
    - GssContext::setLocalPrincipal
    - std::shared_ptr::d_other::size
    - std::move
    - info
    - DNSName::toStringNoDot
    - ZoneName::chopOff
    - DNSName::DNSName
    linkageType: ''
    returnType: void
    signature: void PacketHandler::tkeyHandler(const DNSPacket& p, std::unique_ptr<DNSPacket>&
      r)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: syslog
      Src: /src/pdns/pdns/nproxy.cc:74,1
    - Dst: str
      Src: /src/pdns/pdns/nproxy.cc:74,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ' fmt'
    argTypes:
    - boost::format
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 71
    functionDepth: 0
    functionLinenumber: 71
    functionLinenumberEnd: 75
    functionName: syslogFmt
    functionSourceFile: /src/pdns/pdns/nproxy.cc
    functionUses: 0
    functionsReached:
    - syslog
    - str
    linkageType: ''
    returnType: void
    signature: void syslogFmt(const boost::format& fmt)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: struct NotificationInFlight::source::getSocklen
      Src: /src/pdns/pdns/nproxy.cc:86,1
    - Dst: recvfrom
      Src: /src/pdns/pdns/nproxy.cc:88,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/nproxy.cc:93,1
    - Dst: stringerror
      Src: /src/pdns/pdns/nproxy.cc:93,1
    - Dst: string
      Src: /src/pdns/pdns/nproxy.cc:95,1
    - Dst: MOADNSParser::d_answers::empty
      Src: /src/pdns/pdns/nproxy.cc:100,1
    - Dst: MOADNSParser::d_qname::toString
      Src: /src/pdns/pdns/nproxy.cc:100,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/nproxy.cc:104,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/nproxy.cc:105,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/nproxy.cc:106,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/nproxy.cc:108,1
    - Dst: TXTRecordContent::toPacket
      Src: /src/pdns/pdns/nproxy.cc:111,1
    - Dst: ARecordContent::toPacket
      Src: /src/pdns/pdns/nproxy.cc:115,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/nproxy.cc:117,1
    - Dst: sendto
      Src: /src/pdns/pdns/nproxy.cc:119,1
    - Dst: vector::size
      Src: /src/pdns/pdns/nproxy.cc:119,1
    - Dst: syslogFmt
      Src: /src/pdns/pdns/nproxy.cc:120,1
    - Dst: boost::format
      Src: /src/pdns/pdns/nproxy.cc:120,1
    - Dst: struct NotificationInFlight::source::toStringWithPort
      Src: /src/pdns/pdns/nproxy.cc:120,1
    - Dst: stringerror
      Src: /src/pdns/pdns/nproxy.cc:120,1
    - Dst: syslogFmt
      Src: /src/pdns/pdns/nproxy.cc:126,1
    - Dst: boost::format
      Src: /src/pdns/pdns/nproxy.cc:126,1
    - Dst: struct NotificationInFlight::domain::toString
      Src: /src/pdns/pdns/nproxy.cc:126,1
    - Dst: struct NotificationInFlight::source::toStringWithPort
      Src: /src/pdns/pdns/nproxy.cc:126,1
    - Dst: syslogFmt
      Src: /src/pdns/pdns/nproxy.cc:129,1
    - Dst: boost::format
      Src: /src/pdns/pdns/nproxy.cc:129,1
    - Dst: struct NotificationInFlight::domain::toString
      Src: /src/pdns/pdns/nproxy.cc:129,1
    - Dst: struct NotificationInFlight::source::toStringWithPort
      Src: /src/pdns/pdns/nproxy.cc:129,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/nproxy.cc:134,1
    - Dst: send
      Src: /src/pdns/pdns/nproxy.cc:136,1
    - Dst: vector::size
      Src: /src/pdns/pdns/nproxy.cc:136,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/nproxy.cc:137,1
    - Dst: stringerror
      Src: /src/pdns/pdns/nproxy.cc:137,1
    - Dst: time
      Src: /src/pdns/pdns/nproxy.cc:139,1
    - Dst: syslogFmt
      Src: /src/pdns/pdns/nproxy.cc:145,1
    - Dst: boost::format
      Src: /src/pdns/pdns/nproxy.cc:145,1
    - Dst: what
      Src: /src/pdns/pdns/nproxy.cc:145,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 40
    argCount: 1
    argNames:
    - fd
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 146
      start: 77
    functionDepth: 1
    functionLinenumber: 77
    functionLinenumberEnd: 146
    functionName: handleOutsideUDPPacket
    functionSourceFile: /src/pdns/pdns/nproxy.cc
    functionUses: 0
    functionsReached:
    - stringerror
    - MOADNSParser::d_answers::empty
    - runtime_error
    - struct NotificationInFlight::source::toStringWithPort
    - time
    - recvfrom
    - string
    - DNSPacketWriter::getHeader
    - sendto
    - send
    - struct NotificationInFlight::source::getSocklen
    - DNSPacketWriter::startRecord
    - DNSPacketWriter::commit
    - what
    - ARecordContent::toPacket
    - TXTRecordContent::toPacket
    - boost::format
    - syslogFmt
    - vector::size
    - MOADNSParser::d_qname::toString
    - struct NotificationInFlight::domain::toString
    linkageType: ''
    returnType: void
    signature: void handleOutsideUDPPacket(int fd, boost::any&)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: struct NotificationInFlight::source::getSocklen
      Src: /src/pdns/pdns/nproxy.cc:157,1
    - Dst: recvfrom
      Src: /src/pdns/pdns/nproxy.cc:159,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/nproxy.cc:164,1
    - Dst: stringerror
      Src: /src/pdns/pdns/nproxy.cc:164,1
    - Dst: count
      Src: /src/pdns/pdns/nproxy.cc:171,1
    - Dst: syslogFmt
      Src: /src/pdns/pdns/nproxy.cc:172,1
    - Dst: boost::format
      Src: /src/pdns/pdns/nproxy.cc:172,1
    - Dst: syslogFmt
      Src: /src/pdns/pdns/nproxy.cc:179,1
    - Dst: boost::format
      Src: /src/pdns/pdns/nproxy.cc:179,1
    - Dst: MOADNSParser::d_qname::toString
      Src: /src/pdns/pdns/nproxy.cc:179,1
    - Dst: struct NotificationInFlight::domain::toString
      Src: /src/pdns/pdns/nproxy.cc:179,1
    - Dst: sendto
      Src: /src/pdns/pdns/nproxy.cc:181,1
    - Dst: struct NotificationInFlight::source::getSocklen
      Src: /src/pdns/pdns/nproxy.cc:181,1
    - Dst: syslogFmt
      Src: /src/pdns/pdns/nproxy.cc:182,1
    - Dst: boost::format
      Src: /src/pdns/pdns/nproxy.cc:182,1
    - Dst: struct NotificationInFlight::source::toStringWithPort
      Src: /src/pdns/pdns/nproxy.cc:182,1
    - Dst: stringerror
      Src: /src/pdns/pdns/nproxy.cc:182,1
    - Dst: syslogFmt
      Src: /src/pdns/pdns/nproxy.cc:185,1
    - Dst: boost::format
      Src: /src/pdns/pdns/nproxy.cc:185,1
    - Dst: struct NotificationInFlight::source::toStringWithPort
      Src: /src/pdns/pdns/nproxy.cc:185,1
    - Dst: struct NotificationInFlight::domain::toString
      Src: /src/pdns/pdns/nproxy.cc:185,1
    - Dst: erase
      Src: /src/pdns/pdns/nproxy.cc:187,1
    - Dst: syslogFmt
      Src: /src/pdns/pdns/nproxy.cc:192,1
    - Dst: boost::format
      Src: /src/pdns/pdns/nproxy.cc:192,1
    - Dst: what
      Src: /src/pdns/pdns/nproxy.cc:192,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 23
    argCount: 1
    argNames:
    - fd
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 193
      start: 149
    functionDepth: 1
    functionLinenumber: 149
    functionLinenumberEnd: 193
    functionName: handleInsideUDPPacket
    functionSourceFile: /src/pdns/pdns/nproxy.cc
    functionUses: 0
    functionsReached:
    - count
    - stringerror
    - what
    - recvfrom
    - runtime_error
    - struct NotificationInFlight::source::toStringWithPort
    - sendto
    - boost::format
    - syslogFmt
    - struct NotificationInFlight::source::getSocklen
    - erase
    - MOADNSParser::d_qname::toString
    - struct NotificationInFlight::domain::toString
    linkageType: ''
    returnType: void
    signature: void handleInsideUDPPacket(int fd, boost::any&)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: time
      Src: /src/pdns/pdns/nproxy.cc:197,1
    - Dst: begin
      Src: /src/pdns/pdns/nproxy.cc:198,1
    - Dst: end
      Src: /src/pdns/pdns/nproxy.cc:198,1
    - Dst: syslogFmt
      Src: /src/pdns/pdns/nproxy.cc:200,1
    - Dst: boost::format
      Src: /src/pdns/pdns/nproxy.cc:200,1
    - Dst: nifs_t::iterator::second::domain::toString
      Src: /src/pdns/pdns/nproxy.cc:200,1
    - Dst: erase
      Src: /src/pdns/pdns/nproxy.cc:201,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 206
      start: 195
    functionDepth: 1
    functionLinenumber: 195
    functionLinenumberEnd: 206
    functionName: expireOldNotifications
    functionSourceFile: /src/pdns/pdns/nproxy.cc
    functionUses: 0
    functionsReached:
    - nifs_t::iterator::second::domain::toString
    - time
    - end
    - begin
    - boost::format
    - syslogFmt
    - erase
    linkageType: ''
    returnType: void
    signature: void expireOldNotifications()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: fork
      Src: /src/pdns/pdns/nproxy.cc:210,1
    - Dst: exit
      Src: /src/pdns/pdns/nproxy.cc:211,1
    - Dst: setsid
      Src: /src/pdns/pdns/nproxy.cc:213,1
    - Dst: dup2
      Src: /src/pdns/pdns/nproxy.cc:215,1
    - Dst: dup2
      Src: /src/pdns/pdns/nproxy.cc:216,1
    - Dst: dup2
      Src: /src/pdns/pdns/nproxy.cc:217,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - null_fd
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 218
      start: 208
    functionDepth: 0
    functionLinenumber: 208
    functionLinenumberEnd: 218
    functionName: daemonize
    functionSourceFile: /src/pdns/pdns/nproxy.cc
    functionUses: 1
    functionsReached:
    - exit
    - dup2
    - fork
    - setsid
    linkageType: ''
    returnType: void
    signature: void daemonize(int null_fd)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - desc
    argTypes:
    - po::options_description
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 223
      start: 220
    functionDepth: 0
    functionLinenumber: 220
    functionLinenumberEnd: 223
    functionName: usage
    functionSourceFile: /src/pdns/pdns/nproxy.cc
    functionUses: 88
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void usage(po::options_description &desc)
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: reportAllTypes
      Src: /src/pdns/pdns/nproxy.cc:228,1
    - Dst: openlog
      Src: /src/pdns/pdns/nproxy.cc:229,1
    - Dst: FDMultiplexer::getMultiplexerSilent
      Src: /src/pdns/pdns/nproxy.cc:231,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/nproxy.cc:233,1
    - Dst: po::options_description::add_options
      Src: /src/pdns/pdns/nproxy.cc:237,1
    - Dst: po::value<string>
      Src: /src/pdns/pdns/nproxy.cc:240,1
    - Dst: po::value<string>
      Src: /src/pdns/pdns/nproxy.cc:241,1
    - Dst: po::value<int>
      Src: /src/pdns/pdns/nproxy.cc:242,1
    - Dst: po::value<int>
      Src: /src/pdns/pdns/nproxy.cc:243,1
    - Dst: po::value<string>
      Src: /src/pdns/pdns/nproxy.cc:244,1
    - Dst: po::value<vector<string> >
      Src: /src/pdns/pdns/nproxy.cc:245,1
    - Dst: po::value<int>
      Src: /src/pdns/pdns/nproxy.cc:246,1
    - Dst: po::value<bool>
      Src: /src/pdns/pdns/nproxy.cc:247,1
    - Dst: pdns::stat_t_trait::store
      Src: /src/pdns/pdns/nproxy.cc:250,1
    - Dst: po::command_line_parser
      Src: /src/pdns/pdns/nproxy.cc:250,1
    - Dst: pdns::channel::Notifier::notify
      Src: /src/pdns/pdns/nproxy.cc:251,1
    - Dst: count
      Src: /src/pdns/pdns/nproxy.cc:253,1
    - Dst: usage
      Src: /src/pdns/pdns/nproxy.cc:254,1
    - Dst: count
      Src: /src/pdns/pdns/nproxy.cc:258,1
    - Dst: count
      Src: /src/pdns/pdns/nproxy.cc:263,1
    - Dst: usage
      Src: /src/pdns/pdns/nproxy.cc:265,1
    - Dst: count
      Src: /src/pdns/pdns/nproxy.cc:269,1
    - Dst: count
      Src: /src/pdns/pdns/nproxy.cc:274,1
    - Dst: as
      Src: /src/pdns/pdns/nproxy.cc:275,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/nproxy.cc:277,1
    - Dst: syslogFmt
      Src: /src/pdns/pdns/nproxy.cc:281,1
    - Dst: boost::format
      Src: /src/pdns/pdns/nproxy.cc:281,1
    - Dst: vector::begin
      Src: /src/pdns/pdns/nproxy.cc:282,1
    - Dst: vector::end
      Src: /src/pdns/pdns/nproxy.cc:282,1
    - Dst: as
      Src: /src/pdns/pdns/nproxy.cc:283,1
    - Dst: socket
      Src: /src/pdns/pdns/nproxy.cc:284,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/nproxy.cc:286,1
    - Dst: stringerror
      Src: /src/pdns/pdns/nproxy.cc:286,1
    - Dst: Socket::bind
      Src: /src/pdns/pdns/nproxy.cc:288,1
    - Dst: ComboAddress::getSocklen
      Src: /src/pdns/pdns/nproxy.cc:288,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/nproxy.cc:289,1
    - Dst: ComboAddress::toStringWithPort
      Src: /src/pdns/pdns/nproxy.cc:289,1
    - Dst: stringerror
      Src: /src/pdns/pdns/nproxy.cc:289,1
    - Dst: addReadFD
      Src: /src/pdns/pdns/nproxy.cc:291,1
    - Dst: syslogFmt
      Src: /src/pdns/pdns/nproxy.cc:292,1
    - Dst: boost::format
      Src: /src/pdns/pdns/nproxy.cc:292,1
    - Dst: ComboAddress::toStringWithPort
      Src: /src/pdns/pdns/nproxy.cc:292,1
    - Dst: as
      Src: /src/pdns/pdns/nproxy.cc:296,1
    - Dst: socket
      Src: /src/pdns/pdns/nproxy.cc:297,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/nproxy.cc:299,1
    - Dst: stringerror
      Src: /src/pdns/pdns/nproxy.cc:299,1
    - Dst: Socket::bind
      Src: /src/pdns/pdns/nproxy.cc:302,1
    - Dst: ComboAddress::getSocklen
      Src: /src/pdns/pdns/nproxy.cc:302,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/nproxy.cc:303,1
    - Dst: ComboAddress::toStringWithPort
      Src: /src/pdns/pdns/nproxy.cc:303,1
    - Dst: stringerror
      Src: /src/pdns/pdns/nproxy.cc:303,1
    - Dst: as
      Src: /src/pdns/pdns/nproxy.cc:306,1
    - Dst: connect
      Src: /src/pdns/pdns/nproxy.cc:307,1
    - Dst: ComboAddress::getSocklen
      Src: /src/pdns/pdns/nproxy.cc:307,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/nproxy.cc:308,1
    - Dst: ComboAddress::toStringWithPort
      Src: /src/pdns/pdns/nproxy.cc:308,1
    - Dst: stringerror
      Src: /src/pdns/pdns/nproxy.cc:308,1
    - Dst: syslogFmt
      Src: /src/pdns/pdns/nproxy.cc:310,1
    - Dst: boost::format
      Src: /src/pdns/pdns/nproxy.cc:310,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/nproxy.cc:310,1
    - Dst: ComboAddress::toStringWithPort
      Src: /src/pdns/pdns/nproxy.cc:310,1
    - Dst: addReadFD
      Src: /src/pdns/pdns/nproxy.cc:312,1
    - Dst: open
      Src: /src/pdns/pdns/nproxy.cc:314,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/nproxy.cc:316,1
    - Dst: stringerror
      Src: /src/pdns/pdns/nproxy.cc:316,1
    - Dst: count
      Src: /src/pdns/pdns/nproxy.cc:318,1
    - Dst: chroot
      Src: /src/pdns/pdns/nproxy.cc:319,1
    - Dst: as
      Src: /src/pdns/pdns/nproxy.cc:319,1
    - Dst: chdir
      Src: /src/pdns/pdns/nproxy.cc:319,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/nproxy.cc:320,1
    - Dst: as
      Src: /src/pdns/pdns/nproxy.cc:320,1
    - Dst: syslogFmt
      Src: /src/pdns/pdns/nproxy.cc:321,1
    - Dst: boost::format
      Src: /src/pdns/pdns/nproxy.cc:321,1
    - Dst: as
      Src: /src/pdns/pdns/nproxy.cc:321,1
    - Dst: count
      Src: /src/pdns/pdns/nproxy.cc:324,1
    - Dst: setgid
      Src: /src/pdns/pdns/nproxy.cc:325,1
    - Dst: as
      Src: /src/pdns/pdns/nproxy.cc:325,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/nproxy.cc:326,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/nproxy.cc:326,1
    - Dst: as
      Src: /src/pdns/pdns/nproxy.cc:326,1
    - Dst: syslogFmt
      Src: /src/pdns/pdns/nproxy.cc:327,1
    - Dst: boost::format
      Src: /src/pdns/pdns/nproxy.cc:327,1
    - Dst: as
      Src: /src/pdns/pdns/nproxy.cc:327,1
    - Dst: setgroups
      Src: /src/pdns/pdns/nproxy.cc:328,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/nproxy.cc:329,1
    - Dst: count
      Src: /src/pdns/pdns/nproxy.cc:332,1
    - Dst: setuid
      Src: /src/pdns/pdns/nproxy.cc:333,1
    - Dst: as
      Src: /src/pdns/pdns/nproxy.cc:333,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/nproxy.cc:334,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/nproxy.cc:334,1
    - Dst: as
      Src: /src/pdns/pdns/nproxy.cc:334,1
    - Dst: syslogFmt
      Src: /src/pdns/pdns/nproxy.cc:335,1
    - Dst: boost::format
      Src: /src/pdns/pdns/nproxy.cc:335,1
    - Dst: as
      Src: /src/pdns/pdns/nproxy.cc:335,1
    - Dst: as
      Src: /src/pdns/pdns/nproxy.cc:338,1
    - Dst: syslogFmt
      Src: /src/pdns/pdns/nproxy.cc:339,1
    - Dst: boost::format
      Src: /src/pdns/pdns/nproxy.cc:339,1
    - Dst: daemonize
      Src: /src/pdns/pdns/nproxy.cc:340,1
    - Dst: close
      Src: /src/pdns/pdns/nproxy.cc:342,1
    - Dst: syslogFmt
      Src: /src/pdns/pdns/nproxy.cc:343,1
    - Dst: boost::format
      Src: /src/pdns/pdns/nproxy.cc:343,1
    - Dst: gettimeofday
      Src: /src/pdns/pdns/nproxy.cc:349,1
    - Dst: run
      Src: /src/pdns/pdns/nproxy.cc:350,1
    - Dst: expireOldNotifications
      Src: /src/pdns/pdns/nproxy.cc:352,1
    - Dst: syslogFmt
      Src: /src/pdns/pdns/nproxy.cc:357,1
    - Dst: boost::format
      Src: /src/pdns/pdns/nproxy.cc:357,1
    - Dst: what
      Src: /src/pdns/pdns/nproxy.cc:357,1
    - Dst: syslogFmt
      Src: /src/pdns/pdns/nproxy.cc:361,1
    - Dst: boost::format
      Src: /src/pdns/pdns/nproxy.cc:361,1
    - Dst: what
      Src: /src/pdns/pdns/nproxy.cc:361,1
    - Dst: syslogFmt
      Src: /src/pdns/pdns/nproxy.cc:365,1
    - Dst: boost::format
      Src: /src/pdns/pdns/nproxy.cc:365,1
    CyclomaticComplexity: 35
    EdgeCount: 35
    ICount: 84
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 366
      start: 225
    functionDepth: 2
    functionLinenumber: 225
    functionLinenumberEnd: 366
    functionName: main
    functionSourceFile: /src/pdns/pdns/nproxy.cc
    functionUses: 15
    functionsReached:
    - po::value<vector<string> >
    - std::to_string
    - expireOldNotifications
    - stringerror
    - runtime_error
    - gettimeofday
    - setgroups
    - close
    - ComboAddress::getSocklen
    - vector::begin
    - reportAllTypes
    - addReadFD
    - pdns::channel::Notifier::notify
    - usage
    - run
    - connect
    - po::value<bool>
    - vector::push_back
    - daemonize
    - std::runtime_error
    - po::value<int>
    - setuid
    - vector::end
    - open
    - FDMultiplexer::getMultiplexerSilent
    - po::options_description::add_options
    - chroot
    - ComboAddress::toStringWithPort
    - socket
    - chdir
    - count
    - what
    - openlog
    - pdns::stat_t_trait::store
    - as
    - ComboAddress::toString
    - boost::format
    - syslogFmt
    - po::command_line_parser
    - Socket::bind
    - po::value<string>
    - setgid
    linkageType: ''
    returnType: int
    signature: int main(int argc, char** argv)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 40
    functionDepth: 0
    functionLinenumber: 40
    functionLinenumberEnd: 49
    functionName: compilerVersion
    functionSourceFile: /src/pdns/pdns/version.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: string
    signature: string compilerVersion()
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 52
    functionDepth: 0
    functionLinenumber: 52
    functionLinenumberEnd: 61
    functionName: productName
    functionSourceFile: /src/pdns/pdns/version.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: string
    signature: string productName()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 63
    functionDepth: 0
    functionLinenumber: 63
    functionLinenumberEnd: 66
    functionName: getPDNSVersion
    functionSourceFile: /src/pdns/pdns/version.cc
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: string
    signature: string getPDNSVersion()
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 69
    functionDepth: 0
    functionLinenumber: 69
    functionLinenumberEnd: 78
    functionName: productTypeApiType
    functionSourceFile: /src/pdns/pdns/version.cc
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: string
    signature: string productTypeApiType()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::getline
      Src: /src/pdns/pdns/version.cc:84,1
    - Dst: vector::emplace_back
      Src: /src/pdns/pdns/version.cc:85,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 80
    functionDepth: 0
    functionLinenumber: 80
    functionLinenumberEnd: 88
    functionName: getProductVersionLines
    functionSourceFile: /src/pdns/pdns/version.cc
    functionUses: 1
    functionsReached:
    - std::getline
    - vector::emplace_back
    linkageType: ''
    returnType: vector<string>
    signature: vector<string> getProductVersionLines()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: productName
      Src: /src/pdns/pdns/version.cc:93,1
    - Dst: compilerVersion
      Src: /src/pdns/pdns/version.cc:98,1
    - Dst: ostringstream::str
      Src: /src/pdns/pdns/version.cc:107,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 90
    functionDepth: 0
    functionLinenumber: 90
    functionLinenumberEnd: 108
    functionName: getProductVersion
    functionSourceFile: /src/pdns/pdns/version.cc
    functionUses: 1
    functionsReached:
    - productName
    - ostringstream::str
    - compilerVersion
    linkageType: ''
    returnType: string
    signature: string getProductVersion()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::rust::misc::rust_features
      Src: /src/pdns/pdns/version.cc:185,1
    - Dst: BackendMakers
      Src: /src/pdns/pdns/version.cc:191,1
    - Dst: boost::join
      Src: /src/pdns/pdns/version.cc:192,1
    - Dst: escape_quotes
      Src: /src/pdns/pdns/version.cc:199,1
    - Dst: ostringstream::str
      Src: /src/pdns/pdns/version.cc:203,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 204
      start: 110
    functionDepth: 1
    functionLinenumber: 110
    functionLinenumberEnd: 204
    functionName: getBuildConfiguration
    functionSourceFile: /src/pdns/pdns/version.cc
    functionUses: 1
    functionsReached:
    - BackendMakers
    - ostringstream::str
    - boost::join
    - escape_quotes
    - pdns::rust::misc::rust_features
    linkageType: ''
    returnType: string
    signature: string getBuildConfiguration()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - s
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 197
      start: 196
    functionDepth: 0
    functionLinenumber: 196
    functionLinenumberEnd: 197
    functionName: double_escape
    functionSourceFile: /src/pdns/pdns/version.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: double_escape(s)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - s
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 198
      start: 197
    functionDepth: 0
    functionLinenumber: 197
    functionLinenumberEnd: 198
    functionName: escape_quotes
    functionSourceFile: /src/pdns/pdns/version.cc
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: escape_quotes(s)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: productName
      Src: /src/pdns/pdns/version.cc:209,1
    - Dst: ostringstream::str
      Src: /src/pdns/pdns/version.cc:213,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 214
      start: 206
    functionDepth: 0
    functionLinenumber: 206
    functionLinenumberEnd: 214
    functionName: fullVersionString
    functionSourceFile: /src/pdns/pdns/version.cc
    functionUses: 0
    functionsReached:
    - productName
    - ostringstream::str
    linkageType: ''
    returnType: string
    signature: string fullVersionString()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - productType_
    argTypes:
    - ProductType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 219
      start: 216
    functionDepth: 0
    functionLinenumber: 216
    functionLinenumberEnd: 219
    functionName: versionSetProduct
    functionSourceFile: /src/pdns/pdns/version.cc
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void versionSetProduct(ProductType productType_)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 224
      start: 221
    functionDepth: 0
    functionLinenumber: 221
    functionLinenumberEnd: 224
    functionName: versionGetProduct
    functionSourceFile: /src/pdns/pdns/version.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: ProductType
    signature: ProductType versionGetProduct()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 48
    functionDepth: 0
    functionLinenumber: 48
    functionLinenumberEnd: 50
    functionName: usage
    functionSourceFile: /src/pdns/pdns/dnsscan.cc
    functionUses: 89
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void usage()
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: usage
      Src: /src/pdns/pdns/dnsscan.cc:64,1
    - Dst: exit
      Src: /src/pdns/pdns/dnsscan.cc:65,1
    - Dst: usage
      Src: /src/pdns/pdns/dnsscan.cc:70,1
    - Dst: PcapPacketReader::getUDPPacket
      Src: /src/pdns/pdns/dnsscan.cc:87,1
    - Dst: PcapPacketReader::getSource
      Src: /src/pdns/pdns/dnsscan.cc:95,1
    - Dst: what
      Src: /src/pdns/pdns/dnsscan.cc:95,1
    - Dst: what
      Src: /src/pdns/pdns/dnsscan.cc:108,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 34
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 52
    functionDepth: 1
    functionLinenumber: 52
    functionLinenumberEnd: 109
    functionName: main
    functionSourceFile: /src/pdns/pdns/dnsscan.cc
    functionUses: 15
    functionsReached:
    - PcapPacketReader::getUDPPacket
    - what
    - PcapPacketReader::getSource
    - usage
    - exit
    linkageType: ''
    returnType: int
    signature: int main(int argc, char** argv)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: parseProxyHeader
      Src: /src/pdns/pdns/fuzz_proxyprotocol.cc:39,1
    - Dst: std::string
      Src: /src/pdns/pdns/fuzz_proxyprotocol.cc:39,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/fuzz_proxyprotocol.cc:39,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - data
    - size
    argTypes:
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 29
    functionDepth: 0
    functionLinenumber: 29
    functionLinenumberEnd: 47
    functionName: LLVMFuzzerTestOneInput
    functionSourceFile: /src/pdns/pdns/fuzz_proxyprotocol.cc
    functionUses: 1
    functionsReached:
    - std::string
    - reinterpret_cast<const char*>
    - parseProxyHeader
    linkageType: ''
    returnType: int
    signature: int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 50
    functionDepth: 0
    functionLinenumber: 50
    functionLinenumberEnd: 50
    functionName: SvcParam::SvcParam
    functionSourceFile: /src/pdns/pdns/svc-records.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void SvcParam()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' key'
    argTypes:
    - SvcParamKey
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 91
    functionDepth: 0
    functionLinenumber: 91
    functionLinenumberEnd: 94
    functionName: operator==(const SvcParamKey& key) const
    functionSourceFile: /src/pdns/pdns/svc-records.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool operator==(const SvcParamKey& key) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 96
    functionDepth: 0
    functionLinenumber: 96
    functionLinenumberEnd: 99
    functionName: SvcParam::getKey
    functionSourceFile: /src/pdns/pdns/svc-records.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: SvcParamKey
    signature: SvcParamKey getKey() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 109
    functionDepth: 0
    functionLinenumber: 109
    functionLinenumberEnd: 109
    functionName: SvcParam::getAutoHint
    functionSourceFile: /src/pdns/pdns/svc-records.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool getAutoHint() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - value
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 110
    functionDepth: 0
    functionLinenumber: 110
    functionLinenumberEnd: 110
    functionName: SvcParam::setAutoHint
    functionSourceFile: /src/pdns/pdns/svc-records.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setAutoHint(const bool value)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/dynlistener.cc:63,1
    - Dst: unlink
      Src: /src/pdns/pdns/dynlistener.cc:64,1
    - Dst: c_str
      Src: /src/pdns/pdns/dynlistener.cc:64,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 61
    functionDepth: 0
    functionLinenumber: 61
    functionLinenumberEnd: 65
    functionName: DynListener::~DynListener()
    functionSourceFile: /src/pdns/pdns/dynlistener.cc
    functionUses: 0
    functionsReached:
    - empty
    - unlink
    - c_str
    linkageType: ''
    returnType: void
    signature: void DynListener::~DynListener()
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: socket
      Src: /src/pdns/pdns/dynlistener.cc:69,1
    - Dst: setCloseOnExec
      Src: /src/pdns/pdns/dynlistener.cc:70,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dynlistener.cc:74,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dynlistener.cc:74,1
    - Dst: error
      Src: /src/pdns/pdns/dynlistener.cc:75,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dynlistener.cc:75,1
    - Dst: reinterpret_cast<struct sockaddr_un*>
      Src: /src/pdns/pdns/dynlistener.cc:75,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dynlistener.cc:78,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/dynlistener.cc:78,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dynlistener.cc:78,1
    - Dst: error
      Src: /src/pdns/pdns/dynlistener.cc:79,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dynlistener.cc:79,1
    - Dst: reinterpret_cast<ComboAddress*>
      Src: /src/pdns/pdns/dynlistener.cc:79,1
    - Dst: exit
      Src: /src/pdns/pdns/dynlistener.cc:81,1
    - Dst: setsockopt
      Src: /src/pdns/pdns/dynlistener.cc:85,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/dynlistener.cc:86,1
    - Dst: string
      Src: /src/pdns/pdns/dynlistener.cc:86,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dynlistener.cc:86,1
    - Dst: bind
      Src: /src/pdns/pdns/dynlistener.cc:88,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dynlistener.cc:90,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dynlistener.cc:90,1
    - Dst: error
      Src: /src/pdns/pdns/dynlistener.cc:91,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dynlistener.cc:91,1
    - Dst: reinterpret_cast<struct sockaddr_un*>
      Src: /src/pdns/pdns/dynlistener.cc:91,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dynlistener.cc:94,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/dynlistener.cc:94,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dynlistener.cc:94,1
    - Dst: error
      Src: /src/pdns/pdns/dynlistener.cc:95,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dynlistener.cc:95,1
    - Dst: reinterpret_cast<ComboAddress*>
      Src: /src/pdns/pdns/dynlistener.cc:95,1
    - Dst: exit
      Src: /src/pdns/pdns/dynlistener.cc:97,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 3
    argNames:
    - family
    - local
    - len
    argTypes:
    - int
    - struct sockaddr*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 67
    functionDepth: 0
    functionLinenumber: 67
    functionLinenumberEnd: 99
    functionName: DynListener::createSocketAndBind
    functionSourceFile: /src/pdns/pdns/dynlistener.cc
    functionUses: 0
    functionsReached:
    - socket
    - SLOG
    - reinterpret_cast<ComboAddress*>
    - Logging::Loggable
    - PDNSException
    - stringerror
    - string
    - bind
    - setsockopt
    - setCloseOnExec
    - error
    - exit
    - toStringWithPort
    - reinterpret_cast<struct sockaddr_un*>
    linkageType: ''
    returnType: void
    signature: void DynListener::createSocketAndBind(int family, struct sockaddr*local,
      size_t len)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: socket
      Src: /src/pdns/pdns/dynlistener.cc:107,1
    - Dst: makeUNsockaddr
      Src: /src/pdns/pdns/dynlistener.cc:112,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dynlistener.cc:113,1
    - Dst: info
      Src: /src/pdns/pdns/dynlistener.cc:114,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dynlistener.cc:114,1
    - Dst: exit
      Src: /src/pdns/pdns/dynlistener.cc:115,1
    - Dst: connect
      Src: /src/pdns/pdns/dynlistener.cc:118,1
    - Dst: close
      Src: /src/pdns/pdns/dynlistener.cc:119,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - ' fname'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 104
    functionDepth: 0
    functionLinenumber: 104
    functionLinenumberEnd: 121
    functionName: DynListener::testLive
    functionSourceFile: /src/pdns/pdns/dynlistener.cc
    functionUses: 0
    functionsReached:
    - socket
    - SLOG
    - Logging::Loggable
    - info
    - exit
    - makeUNsockaddr
    - connect
    - close
    linkageType: ''
    returnType: bool
    signature: bool DynListener::testLive(const string& fname)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: DynListener::testLive
      Src: /src/pdns/pdns/dynlistener.cc:125,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dynlistener.cc:126,1
    - Dst: info
      Src: /src/pdns/pdns/dynlistener.cc:127,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dynlistener.cc:127,1
    - Dst: exit
      Src: /src/pdns/pdns/dynlistener.cc:128,1
    - Dst: unlink
      Src: /src/pdns/pdns/dynlistener.cc:130,1
    - Dst: c_str
      Src: /src/pdns/pdns/dynlistener.cc:130,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dynlistener.cc:132,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dynlistener.cc:132,1
    - Dst: error
      Src: /src/pdns/pdns/dynlistener.cc:133,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dynlistener.cc:133,1
    - Dst: exit
      Src: /src/pdns/pdns/dynlistener.cc:134,1
    - Dst: makeUNsockaddr
      Src: /src/pdns/pdns/dynlistener.cc:138,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dynlistener.cc:139,1
    - Dst: info
      Src: /src/pdns/pdns/dynlistener.cc:140,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dynlistener.cc:140,1
    - Dst: exit
      Src: /src/pdns/pdns/dynlistener.cc:141,1
    - Dst: DynListener::createSocketAndBind
      Src: /src/pdns/pdns/dynlistener.cc:144,1
    - Dst: arg
      Src: /src/pdns/pdns/dynlistener.cc:146,1
    - Dst: empty
      Src: /src/pdns/pdns/dynlistener.cc:146,1
    - Dst: chmod
      Src: /src/pdns/pdns/dynlistener.cc:147,1
    - Dst: c_str
      Src: /src/pdns/pdns/dynlistener.cc:147,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dynlistener.cc:148,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dynlistener.cc:148,1
    - Dst: error
      Src: /src/pdns/pdns/dynlistener.cc:149,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dynlistener.cc:149,1
    - Dst: chown
      Src: /src/pdns/pdns/dynlistener.cc:151,1
    - Dst: c_str
      Src: /src/pdns/pdns/dynlistener.cc:151,1
    - Dst: static_cast<uid_t>
      Src: /src/pdns/pdns/dynlistener.cc:151,1
    - Dst: strToGID
      Src: /src/pdns/pdns/dynlistener.cc:151,1
    - Dst: arg
      Src: /src/pdns/pdns/dynlistener.cc:151,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dynlistener.cc:152,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dynlistener.cc:152,1
    - Dst: error
      Src: /src/pdns/pdns/dynlistener.cc:153,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dynlistener.cc:153,1
    - Dst: listen
      Src: /src/pdns/pdns/dynlistener.cc:157,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dynlistener.cc:159,1
    - Dst: info
      Src: /src/pdns/pdns/dynlistener.cc:160,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dynlistener.cc:160,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 26
    argCount: 1
    argNames:
    - ' fname'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 162
      start: 123
    functionDepth: 1
    functionLinenumber: 123
    functionLinenumberEnd: 162
    functionName: DynListener::listenOnUnixDomain
    functionSourceFile: /src/pdns/pdns/dynlistener.cc
    functionUses: 0
    functionsReached:
    - listen
    - SLOG
    - makeUNsockaddr
    - Logging::Loggable
    - chmod
    - stringerror
    - info
    - DynListener::testLive
    - DynListener::createSocketAndBind
    - unlink
    - empty
    - chown
    - static_cast<uid_t>
    - error
    - c_str
    - exit
    - strToGID
    - arg
    linkageType: ''
    returnType: void
    signature: void DynListener::listenOnUnixDomain(const string& fname)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: isIPv4
      Src: /src/pdns/pdns/dynlistener.cc:166,1
    - Dst: DynListener::createSocketAndBind
      Src: /src/pdns/pdns/dynlistener.cc:167,1
    - Dst: getSocklen
      Src: /src/pdns/pdns/dynlistener.cc:167,1
    - Dst: isIPv6
      Src: /src/pdns/pdns/dynlistener.cc:168,1
    - Dst: DynListener::createSocketAndBind
      Src: /src/pdns/pdns/dynlistener.cc:169,1
    - Dst: getSocklen
      Src: /src/pdns/pdns/dynlistener.cc:169,1
    - Dst: listen
      Src: /src/pdns/pdns/dynlistener.cc:171,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dynlistener.cc:174,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/dynlistener.cc:174,1
    - Dst: info
      Src: /src/pdns/pdns/dynlistener.cc:175,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dynlistener.cc:175,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/dynlistener.cc:175,1
    - Dst: arg
      Src: /src/pdns/pdns/dynlistener.cc:179,1
    - Dst: empty
      Src: /src/pdns/pdns/dynlistener.cc:179,1
    - Dst: toMasks
      Src: /src/pdns/pdns/dynlistener.cc:180,1
    - Dst: arg
      Src: /src/pdns/pdns/dynlistener.cc:180,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dynlistener.cc:181,1
    - Dst: toString
      Src: /src/pdns/pdns/dynlistener.cc:181,1
    - Dst: info
      Src: /src/pdns/pdns/dynlistener.cc:182,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dynlistener.cc:182,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 1
    argNames:
    - ' local'
    argTypes:
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 184
      start: 164
    functionDepth: 1
    functionLinenumber: 164
    functionLinenumberEnd: 184
    functionName: DynListener::listenOnTCP
    functionSourceFile: /src/pdns/pdns/dynlistener.cc
    functionUses: 0
    functionsReached:
    - isIPv6
    - SLOG
    - toString
    - Logging::Loggable
    - toStringWithPort
    - info
    - DynListener::createSocketAndBind
    - isIPv4
    - getSocklen
    - toMasks
    - empty
    - listen
    - arg
    linkageType: ''
    returnType: void
    signature: void DynListener::listenOnTCP(const ComboAddress& local)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DynListener::listenOnTCP
      Src: /src/pdns/pdns/dynlistener.cc:191,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - slog
    - ' local'
    argTypes:
    - Logr::log_t
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 192
      start: 187
    functionDepth: 2
    functionLinenumber: 187
    functionLinenumberEnd: 192
    functionName: DynListener::DynListener
    functionSourceFile: /src/pdns/pdns/dynlistener.cc
    functionUses: 1
    functionsReached:
    - DynListener::listenOnTCP
    linkageType: ''
    returnType: void
    signature: void DynListener::DynListener(Logr::log_t slog, const ComboAddress&
      local)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: string::empty
      Src: /src/pdns/pdns/dynlistener.cc:198,1
    - Dst: arg
      Src: /src/pdns/pdns/dynlistener.cc:199,1
    - Dst: arg
      Src: /src/pdns/pdns/dynlistener.cc:200,1
    - Dst: empty
      Src: /src/pdns/pdns/dynlistener.cc:200,1
    - Dst: arg
      Src: /src/pdns/pdns/dynlistener.cc:201,1
    - Dst: empty
      Src: /src/pdns/pdns/dynlistener.cc:201,1
    - Dst: std::string
      Src: /src/pdns/pdns/dynlistener.cc:202,1
    - Dst: arg
      Src: /src/pdns/pdns/dynlistener.cc:204,1
    - Dst: arg
      Src: /src/pdns/pdns/dynlistener.cc:205,1
    - Dst: empty
      Src: /src/pdns/pdns/dynlistener.cc:205,1
    - Dst: arg
      Src: /src/pdns/pdns/dynlistener.cc:205,1
    - Dst: empty
      Src: /src/pdns/pdns/dynlistener.cc:205,1
    - Dst: arg
      Src: /src/pdns/pdns/dynlistener.cc:206,1
    - Dst: arg
      Src: /src/pdns/pdns/dynlistener.cc:206,1
    - Dst: cleanSlashes
      Src: /src/pdns/pdns/dynlistener.cc:209,1
    - Dst: mkdir
      Src: /src/pdns/pdns/dynlistener.cc:211,1
    - Dst: string::c_str
      Src: /src/pdns/pdns/dynlistener.cc:211,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dynlistener.cc:212,1
    - Dst: info
      Src: /src/pdns/pdns/dynlistener.cc:213,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dynlistener.cc:213,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dynlistener.cc:216,1
    - Dst: error
      Src: /src/pdns/pdns/dynlistener.cc:217,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dynlistener.cc:217,1
    - Dst: exit
      Src: /src/pdns/pdns/dynlistener.cc:218,1
    - Dst: DynListener::listenOnUnixDomain
      Src: /src/pdns/pdns/dynlistener.cc:222,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 24
    argCount: 2
    argNames:
    - slog
    - progname
    argTypes:
    - Logr::log_t
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 226
      start: 194
    functionDepth: 2
    functionLinenumber: 194
    functionLinenumberEnd: 226
    functionName: DynListener::DynListener
    functionSourceFile: /src/pdns/pdns/dynlistener.cc
    functionUses: 1
    functionsReached:
    - string::c_str
    - SLOG
    - string::empty
    - Logging::Loggable
    - cleanSlashes
    - mkdir
    - info
    - DynListener::listenOnUnixDomain
    - exit
    - error
    - empty
    - std::string
    - arg
    linkageType: ''
    returnType: void
    signature: void DynListener::DynListener(Logr::log_t slog, const string &progname)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getpid
      Src: /src/pdns/pdns/dynlistener.cc:230,1
    - Dst: DynListener::theListener
      Src: /src/pdns/pdns/dynlistener.cc:231,1
    - Dst: std::thread::detach
      Src: /src/pdns/pdns/dynlistener.cc:232,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 233
      start: 228
    functionDepth: 1
    functionLinenumber: 228
    functionLinenumberEnd: 233
    functionName: DynListener::go
    functionSourceFile: /src/pdns/pdns/dynlistener.cc
    functionUses: 1
    functionsReached:
    - DynListener::theListener
    - getpid
    - std::thread::detach
    linkageType: ''
    returnType: void
    signature: void DynListener::go()
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: vector::resize
      Src: /src/pdns/pdns/dynlistener.cc:238,1
    - Dst: ComboAddress::getSocklen
      Src: /src/pdns/pdns/dynlistener.cc:241,1
    - Dst: accept
      Src: /src/pdns/pdns/dynlistener.cc:245,1
    - Dst: reinterpret_cast<sockaddr *>
      Src: /src/pdns/pdns/dynlistener.cc:245,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dynlistener.cc:248,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dynlistener.cc:248,1
    - Dst: error
      Src: /src/pdns/pdns/dynlistener.cc:249,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dynlistener.cc:249,1
    - Dst: match
      Src: /src/pdns/pdns/dynlistener.cc:254,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dynlistener.cc:255,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/dynlistener.cc:255,1
    - Dst: info
      Src: /src/pdns/pdns/dynlistener.cc:256,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dynlistener.cc:256,1
    - Dst: writen2
      Src: /src/pdns/pdns/dynlistener.cc:257,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/dynlistener.cc:257,1
    - Dst: close
      Src: /src/pdns/pdns/dynlistener.cc:258,1
    - Dst: std::shared_ptr<FILE>
      Src: /src/pdns/pdns/dynlistener.cc:262,1
    - Dst: fdopen
      Src: /src/pdns/pdns/dynlistener.cc:262,1
    - Dst: dup
      Src: /src/pdns/pdns/dynlistener.cc:262,1
    - Dst: fgets
      Src: /src/pdns/pdns/dynlistener.cc:264,1
    - Dst: vector::data
      Src: /src/pdns/pdns/dynlistener.cc:264,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/dynlistener.cc:264,1
    - Dst: vector::size
      Src: /src/pdns/pdns/dynlistener.cc:264,1
    - Dst: std::shared_ptr::get
      Src: /src/pdns/pdns/dynlistener.cc:264,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dynlistener.cc:265,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dynlistener.cc:265,1
    - Dst: error
      Src: /src/pdns/pdns/dynlistener.cc:266,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dynlistener.cc:266,1
    - Dst: close
      Src: /src/pdns/pdns/dynlistener.cc:267,1
    - Dst: vector::data
      Src: /src/pdns/pdns/dynlistener.cc:270,1
    - Dst: Utility::trim
      Src: /src/pdns/pdns/dynlistener.cc:271,1
    - Dst: string::empty
      Src: /src/pdns/pdns/dynlistener.cc:272,1
    - Dst: constantTimeStringEquals
      Src: /src/pdns/pdns/dynlistener.cc:272,1
    - Dst: arg
      Src: /src/pdns/pdns/dynlistener.cc:272,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dynlistener.cc:273,1
    - Dst: info
      Src: /src/pdns/pdns/dynlistener.cc:274,1
    - Dst: writen2
      Src: /src/pdns/pdns/dynlistener.cc:275,1
    - Dst: close
      Src: /src/pdns/pdns/dynlistener.cc:277,1
    - Dst: fgets
      Src: /src/pdns/pdns/dynlistener.cc:282,1
    - Dst: vector::data
      Src: /src/pdns/pdns/dynlistener.cc:282,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/dynlistener.cc:282,1
    - Dst: vector::size
      Src: /src/pdns/pdns/dynlistener.cc:282,1
    - Dst: std::shared_ptr::get
      Src: /src/pdns/pdns/dynlistener.cc:282,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dynlistener.cc:284,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dynlistener.cc:284,1
    - Dst: error
      Src: /src/pdns/pdns/dynlistener.cc:285,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dynlistener.cc:285,1
    - Dst: close
      Src: /src/pdns/pdns/dynlistener.cc:287,1
    - Dst: strlen
      Src: /src/pdns/pdns/dynlistener.cc:291,1
    - Dst: vector::data
      Src: /src/pdns/pdns/dynlistener.cc:291,1
    - Dst: vector::size
      Src: /src/pdns/pdns/dynlistener.cc:291,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dynlistener.cc:292,1
    - Dst: info
      Src: /src/pdns/pdns/dynlistener.cc:293,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dynlistener.cc:293,1
    - Dst: close
      Src: /src/pdns/pdns/dynlistener.cc:294,1
    - Dst: isatty
      Src: /src/pdns/pdns/dynlistener.cc:301,1
    - Dst: write
      Src: /src/pdns/pdns/dynlistener.cc:302,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/dynlistener.cc:303,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dynlistener.cc:303,1
    - Dst: read
      Src: /src/pdns/pdns/dynlistener.cc:307,1
    - Dst: vector::data
      Src: /src/pdns/pdns/dynlistener.cc:307,1
    - Dst: vector::size
      Src: /src/pdns/pdns/dynlistener.cc:307,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/dynlistener.cc:309,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dynlistener.cc:309,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/dynlistener.cc:318,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/dynlistener.cc:323,1
    - Dst: vector::size
      Src: /src/pdns/pdns/dynlistener.cc:323,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/dynlistener.cc:324,1
    - Dst: vector::data
      Src: /src/pdns/pdns/dynlistener.cc:330,1
    CyclomaticComplexity: 30
    EdgeCount: 30
    ICount: 67
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 331
      start: 235
    functionDepth: 1
    functionLinenumber: 235
    functionLinenumberEnd: 331
    functionName: DynListener::getLine
    functionSourceFile: /src/pdns/pdns/dynlistener.cc
    functionUses: 0
    functionsReached:
    - writen2
    - PDNSException
    - stringerror
    - fgets
    - error
    - vector::resize
    - constantTimeStringEquals
    - ComboAddress::getSocklen
    - static_cast<int>
    - SLOG
    - static_cast<size_t>
    - Logging::Loggable
    - accept
    - string::empty
    - match
    - vector::data
    - std::shared_ptr::get
    - std::shared_ptr<FILE>
    - dup
    - write
    - Utility::trim
    - fdopen
    - reinterpret_cast<sockaddr *>
    - arg
    - read
    - info
    - strlen
    - ComboAddress::toString
    - vector::size
    - isatty
    - close
    linkageType: ''
    returnType: string
    signature: string DynListener::getLine()
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: string::length
      Src: /src/pdns/pdns/dynlistener.cc:338,1
    - Dst: send
      Src: /src/pdns/pdns/dynlistener.cc:339,1
    - Dst: string::c_str
      Src: /src/pdns/pdns/dynlistener.cc:339,1
    - Dst: string::length
      Src: /src/pdns/pdns/dynlistener.cc:339,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dynlistener.cc:342,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dynlistener.cc:342,1
    - Dst: error
      Src: /src/pdns/pdns/dynlistener.cc:343,1
    - Dst: close
      Src: /src/pdns/pdns/dynlistener.cc:348,1
    - Dst: string::empty
      Src: /src/pdns/pdns/dynlistener.cc:351,1
    - Dst: string::length
      Src: /src/pdns/pdns/dynlistener.cc:351,1
    - Dst: string::append
      Src: /src/pdns/pdns/dynlistener.cc:352,1
    - Dst: string::append
      Src: /src/pdns/pdns/dynlistener.cc:353,1
    - Dst: string::append
      Src: /src/pdns/pdns/dynlistener.cc:354,1
    - Dst: write
      Src: /src/pdns/pdns/dynlistener.cc:355,1
    - Dst: string::c_str
      Src: /src/pdns/pdns/dynlistener.cc:355,1
    - Dst: string::length
      Src: /src/pdns/pdns/dynlistener.cc:355,1
    - Dst: string::length
      Src: /src/pdns/pdns/dynlistener.cc:355,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dynlistener.cc:356,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dynlistener.cc:356,1
    - Dst: error
      Src: /src/pdns/pdns/dynlistener.cc:357,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 20
    argCount: 1
    argNames:
    - l
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 360
      start: 333
    functionDepth: 0
    functionLinenumber: 333
    functionLinenumberEnd: 360
    functionName: DynListener::sendlines
    functionSourceFile: /src/pdns/pdns/dynlistener.cc
    functionUses: 0
    functionsReached:
    - string::c_str
    - SLOG
    - string::empty
    - stringerror
    - string::append
    - write
    - send
    - error
    - string::length
    - close
    linkageType: ''
    returnType: void
    signature: void DynListener::sendlines(const string &l)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dynlistener.cc:366,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - name
    - gf
    argTypes:
    - string
    - g_funk_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 367
      start: 362
    functionDepth: 0
    functionLinenumber: 362
    functionLinenumberEnd: 367
    functionName: DynListener::registerExitFunc
    functionSourceFile: /src/pdns/pdns/dynlistener.cc
    functionUses: 2
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void DynListener::registerExitFunc(const string &name, g_funk_t *gf)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dynlistener.cc:372,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - name
    - gf
    - usage
    - args
    argTypes:
    - string
    - g_funk_t*
    - string
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 373
      start: 369
    functionDepth: 0
    functionLinenumber: 369
    functionLinenumberEnd: 373
    functionName: DynListener::registerFunc
    functionSourceFile: /src/pdns/pdns/dynlistener.cc
    functionUses: 2
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void DynListener::registerFunc(const string &name, g_funk_t *gf, const
      string &usage, const string &args)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - gf
    argTypes:
    - g_funk_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 378
      start: 375
    functionDepth: 0
    functionLinenumber: 375
    functionLinenumberEnd: 378
    functionName: DynListener::registerRestFunc
    functionSourceFile: /src/pdns/pdns/dynlistener.cc
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void DynListener::registerRestFunc(g_funk_t *gf)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: setThreadName
      Src: /src/pdns/pdns/dynlistener.cc:382,1
    - Dst: signal
      Src: /src/pdns/pdns/dynlistener.cc:385,1
    - Dst: DynListener::getLine
      Src: /src/pdns/pdns/dynlistener.cc:388,1
    - Dst: string::empty
      Src: /src/pdns/pdns/dynlistener.cc:389,1
    - Dst: boost::trim_right
      Src: /src/pdns/pdns/dynlistener.cc:392,1
    - Dst: stringtok
      Src: /src/pdns/pdns/dynlistener.cc:395,1
    - Dst: vector::empty
      Src: /src/pdns/pdns/dynlistener.cc:396,1
    - Dst: DynListener::sendlines
      Src: /src/pdns/pdns/dynlistener.cc:397,1
    - Dst: toUpper
      Src: /src/pdns/pdns/dynlistener.cc:402,1
    - Dst: count
      Src: /src/pdns/pdns/dynlistener.cc:403,1
    - Dst: DynListener::sendlines
      Src: /src/pdns/pdns/dynlistener.cc:404,1
    - Dst: DynListener::sendlines
      Src: /src/pdns/pdns/dynlistener.cc:406,1
    - Dst: DynListener::getHelp
      Src: /src/pdns/pdns/dynlistener.cc:406,1
    - Dst: DynListener::sendlines
      Src: /src/pdns/pdns/dynlistener.cc:408,1
    - Dst: DynListener::sendlines
      Src: /src/pdns/pdns/dynlistener.cc:410,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dynlistener.cc:413,1
    - Dst: error
      Src: /src/pdns/pdns/dynlistener.cc:414,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dynlistener.cc:414,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dynlistener.cc:417,1
    - Dst: error
      Src: /src/pdns/pdns/dynlistener.cc:418,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dynlistener.cc:418,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dynlistener.cc:421,1
    - Dst: what
      Src: /src/pdns/pdns/dynlistener.cc:421,1
    - Dst: error
      Src: /src/pdns/pdns/dynlistener.cc:422,1
    - Dst: what
      Src: /src/pdns/pdns/dynlistener.cc:422,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dynlistener.cc:422,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dynlistener.cc:425,1
    - Dst: error
      Src: /src/pdns/pdns/dynlistener.cc:426,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dynlistener.cc:426,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dynlistener.cc:431,1
    - Dst: error
      Src: /src/pdns/pdns/dynlistener.cc:432,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dynlistener.cc:435,1
    - Dst: error
      Src: /src/pdns/pdns/dynlistener.cc:436,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dynlistener.cc:439,1
    - Dst: what
      Src: /src/pdns/pdns/dynlistener.cc:439,1
    - Dst: error
      Src: /src/pdns/pdns/dynlistener.cc:440,1
    - Dst: what
      Src: /src/pdns/pdns/dynlistener.cc:440,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dynlistener.cc:443,1
    - Dst: error
      Src: /src/pdns/pdns/dynlistener.cc:444,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 42
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 446
      start: 380
    functionDepth: 2
    functionLinenumber: 380
    functionLinenumberEnd: 446
    functionName: DynListener::theListener
    functionSourceFile: /src/pdns/pdns/dynlistener.cc
    functionUses: 1
    functionsReached:
    - SLOG
    - stringtok
    - string::empty
    - DynListener::sendlines
    - count
    - Logging::Loggable
    - toUpper
    - what
    - vector::empty
    - DynListener::getHelp
    - boost::trim_right
    - error
    - setThreadName
    - DynListener::getLine
    - signal
    linkageType: ''
    returnType: void
    signature: void DynListener::theListener()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: vector::push_back
      Src: /src/pdns/pdns/dynlistener.cc:460,1
    - Dst: NetmaskTree::TreeNode::split
      Src: /src/pdns/pdns/dynlistener.cc:462,1
    - Dst: boost::is_any_of
      Src: /src/pdns/pdns/dynlistener.cc:462,1
    - Dst: begin
      Src: /src/pdns/pdns/dynlistener.cc:467,1
    - Dst: end
      Src: /src/pdns/pdns/dynlistener.cc:467,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/dynlistener.cc:468,1
    - Dst: str
      Src: /src/pdns/pdns/dynlistener.cc:468,1
    - Dst: boost::format
      Src: /src/pdns/pdns/dynlistener.cc:468,1
    - Dst: toLower
      Src: /src/pdns/pdns/dynlistener.cc:468,1
    - Dst: sort
      Src: /src/pdns/pdns/dynlistener.cc:470,1
    - Dst: vector::begin
      Src: /src/pdns/pdns/dynlistener.cc:470,1
    - Dst: vector::end
      Src: /src/pdns/pdns/dynlistener.cc:470,1
    - Dst: vector::resize
      Src: /src/pdns/pdns/dynlistener.cc:473,1
    - Dst: unique
      Src: /src/pdns/pdns/dynlistener.cc:473,1
    - Dst: vector::begin
      Src: /src/pdns/pdns/dynlistener.cc:473,1
    - Dst: vector::end
      Src: /src/pdns/pdns/dynlistener.cc:473,1
    - Dst: vector::begin
      Src: /src/pdns/pdns/dynlistener.cc:473,1
    - Dst: boost::join
      Src: /src/pdns/pdns/dynlistener.cc:474,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 475
      start: 449
    functionDepth: 1
    functionLinenumber: 449
    functionLinenumberEnd: 475
    functionName: DynListener::getHelp
    functionSourceFile: /src/pdns/pdns/dynlistener.cc
    functionUses: 1
    functionsReached:
    - vector::begin
    - vector::push_back
    - boost::format
    - NetmaskTree::TreeNode::split
    - toLower
    - end
    - vector::end
    - boost::is_any_of
    - str
    - sort
    - boost::join
    - begin
    - vector::resize
    - unique
    linkageType: ''
    returnType: string
    signature: string DynListener::getHelp()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - source
    argTypes:
    - GlobalStateHolder<T>*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 60
    functionDepth: 0
    functionLinenumber: 60
    functionLinenumberEnd: 62
    functionName: LocalStateHolder::LocalStateHolder
    functionSourceFile: /src/pdns/pdns/sholder.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void LocalStateHolder(GlobalStateHolder<T>* source)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: getGeneration
      Src: /src/pdns/pdns/sholder.hh:66,1
    - Dst: getState
      Src: /src/pdns/pdns/sholder.hh:67,1
    - Dst: get
      Src: /src/pdns/pdns/sholder.hh:70,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 64
    functionDepth: 0
    functionLinenumber: 64
    functionLinenumberEnd: 71
    functionName: '* operator->()'
    functionSourceFile: /src/pdns/pdns/sholder.hh
    functionUses: 0
    functionsReached:
    - getGeneration
    - get
    - getState
    linkageType: ''
    returnType: T
    signature: T * operator->()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 72
    functionDepth: 0
    functionLinenumber: 72
    functionLinenumberEnd: 75
    functionName: '& operator*()'
    functionSourceFile: /src/pdns/pdns/sholder.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: T
    signature: T & operator*()
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 80
    functionDepth: 0
    functionLinenumber: 80
    functionLinenumberEnd: 86
    functionName: '& get(bool allowedOutdated = false)'
    functionSourceFile: /src/pdns/pdns/sholder.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: T
    signature: T & get(bool allowedOutdated = false)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LocalStateHolder::reset
      Src: /src/pdns/pdns/sholder.hh:91,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 88
    functionDepth: 0
    functionLinenumber: 88
    functionLinenumberEnd: 92
    functionName: LocalStateHolder::reset
    functionSourceFile: /src/pdns/pdns/sholder.hh
    functionUses: 1
    functionsReached:
    - LocalStateHolder::reset
    linkageType: ''
    returnType: void
    signature: void reset()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<T>
      Src: /src/pdns/pdns/sholder.hh:105,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 104
    functionDepth: 0
    functionLinenumber: 104
    functionLinenumberEnd: 106
    functionName: GlobalStateHolder::GlobalStateHolder
    functionSourceFile: /src/pdns/pdns/sholder.hh
    functionUses: 0
    functionsReached:
    - std::make_shared<T>
    linkageType: ''
    returnType: void
    signature: void GlobalStateHolder()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LocalStateHolder<T>
      Src: /src/pdns/pdns/sholder.hh:109,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 107
    functionDepth: 0
    functionLinenumber: 107
    functionLinenumberEnd: 110
    functionName: GlobalStateHolder::getLocal
    functionSourceFile: /src/pdns/pdns/sholder.hh
    functionUses: 0
    functionsReached:
    - LocalStateHolder<T>
    linkageType: ''
    returnType: LocalStateHolder<T>
    signature: LocalStateHolder<T> getLocal()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<T>
      Src: /src/pdns/pdns/sholder.hh:114,1
    - Dst: lock
      Src: /src/pdns/pdns/sholder.hh:116,1
    - Dst: std::move
      Src: /src/pdns/pdns/sholder.hh:116,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - ' state'
    argTypes:
    - T
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 119
      start: 112
    functionDepth: 0
    functionLinenumber: 112
    functionLinenumberEnd: 119
    functionName: GlobalStateHolder::setState
    functionSourceFile: /src/pdns/pdns/sholder.hh
    functionUses: 0
    functionsReached:
    - std::make_shared<T>
    - std::move
    - lock
    linkageType: ''
    returnType: void
    signature: void setState(const T& state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<T>
      Src: /src/pdns/pdns/sholder.hh:123,1
    - Dst: std::move
      Src: /src/pdns/pdns/sholder.hh:123,1
    - Dst: lock
      Src: /src/pdns/pdns/sholder.hh:125,1
    - Dst: std::move
      Src: /src/pdns/pdns/sholder.hh:125,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ' state'
    argTypes:
    - T
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 121
    functionDepth: 0
    functionLinenumber: 121
    functionLinenumberEnd: 128
    functionName: GlobalStateHolder::setState
    functionSourceFile: /src/pdns/pdns/sholder.hh
    functionUses: 0
    functionsReached:
    - std::make_shared<T>
    - std::move
    - lock
    linkageType: ''
    returnType: void
    signature: void setState(T&& state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/sholder.hh:132,1
    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: GlobalStateHolder::getCopy
    functionSourceFile: /src/pdns/pdns/sholder.hh
    functionUses: 0
    functionsReached:
    - lock
    linkageType: ''
    returnType: T
    signature: T getCopy() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/sholder.hh:139,1
    - Dst: act
      Src: /src/pdns/pdns/sholder.hh:141,1
    - Dst: std::make_shared<T>
      Src: /src/pdns/pdns/sholder.hh:142,1
    - Dst: std::move
      Src: /src/pdns/pdns/sholder.hh:142,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - act
    argTypes:
    - F
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 144
      start: 137
    functionDepth: 0
    functionLinenumber: 137
    functionLinenumberEnd: 144
    functionName: GlobalStateHolder::modify
    functionSourceFile: /src/pdns/pdns/sholder.hh
    functionUses: 0
    functionsReached:
    - std::make_shared<T>
    - std::move
    - act
    - lock
    linkageType: ''
    returnType: void
    signature: void modify(F act)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 152
      start: 149
    functionDepth: 0
    functionLinenumber: 149
    functionLinenumberEnd: 152
    functionName: GlobalStateHolder::getGeneration
    functionSourceFile: /src/pdns/pdns/sholder.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int getGeneration() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/sholder.hh:155,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - state
    - generation
    argTypes:
    - std::shared_ptr<T>*
    - unsigned int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 157
      start: 153
    functionDepth: 0
    functionLinenumber: 153
    functionLinenumberEnd: 157
    functionName: GlobalStateHolder::getState
    functionSourceFile: /src/pdns/pdns/sholder.hh
    functionUses: 0
    functionsReached:
    - lock
    linkageType: ''
    returnType: void
    signature: void getState(std::shared_ptr<T>* state, unsigned int* generation)
      const
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: time
      Src: /src/pdns/pdns/ixfrdist-stats.cc:32,1
    - Dst: getCPUTimeSystem
      Src: /src/pdns/pdns/ixfrdist-stats.cc:36,1
    - Dst: getCPUTimeUser
      Src: /src/pdns/pdns/ixfrdist-stats.cc:40,1
    - Dst: getOpenFileDescriptors
      Src: /src/pdns/pdns/ixfrdist-stats.cc:44,1
    - Dst: getRealMemoryUsage
      Src: /src/pdns/pdns/ixfrdist-stats.cc:48,1
    - Dst: size
      Src: /src/pdns/pdns/ixfrdist-stats.cc:52,1
    - Dst: empty
      Src: /src/pdns/pdns/ixfrdist-stats.cc:54,1
    - Dst: empty
      Src: /src/pdns/pdns/ixfrdist-stats.cc:88,1
    - Dst: size
      Src: /src/pdns/pdns/ixfrdist-stats.cc:93,1
    - Dst: at
      Src: /src/pdns/pdns/ixfrdist-stats.cc:94,1
    - Dst: Opcode::to_s
      Src: /src/pdns/pdns/ixfrdist-stats.cc:97,1
    - Dst: std::stringstream::str
      Src: /src/pdns/pdns/ixfrdist-stats.cc:105,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 61
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 26
    functionDepth: 0
    functionLinenumber: 26
    functionLinenumberEnd: 106
    functionName: ixfrdistStats::getStats
    functionSourceFile: /src/pdns/pdns/ixfrdist-stats.cc
    functionUses: 0
    functionsReached:
    - time
    - getRealMemoryUsage
    - size
    - getCPUTimeUser
    - getOpenFileDescriptors
    - Opcode::to_s
    - std::stringstream::str
    - getCPUTimeSystem
    - empty
    - at
    linkageType: ''
    returnType: std::string
    signature: std::string ixfrdistStats::getStats()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: at
      Src: /src/pdns/pdns/opensslsigners.cc:64,1
    - Dst: at
      Src: /src/pdns/pdns/opensslsigners.cc:67,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 4
    argNames:
    - mode
    - type
    - file
    - line
    argTypes:
    - int
    - int
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 61
    functionDepth: 0
    functionLinenumber: 61
    functionLinenumberEnd: 69
    functionName: openssl_pthreads_locking_callback
    functionSourceFile: /src/pdns/pdns/opensslsigners.cc
    functionUses: 0
    functionsReached:
    - at
    linkageType: ''
    returnType: void
    signature: void openssl_pthreads_locking_callback(int mode, int type, const char*
      file, int line)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pthread_self
      Src: /src/pdns/pdns/opensslsigners.cc:73,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 71
    functionDepth: 0
    functionLinenumber: 71
    functionLinenumberEnd: 74
    functionName: openssl_pthreads_id_callback
    functionSourceFile: /src/pdns/pdns/opensslsigners.cc
    functionUses: 0
    functionsReached:
    - pthread_self
    linkageType: ''
    returnType: unsigned long
    signature: unsigned long openssl_pthreads_id_callback(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::vector<std::mutex>
      Src: /src/pdns/pdns/opensslsigners.cc:79,1
    - Dst: CRYPTO_num_locks
      Src: /src/pdns/pdns/opensslsigners.cc:79,1
    - Dst: CRYPTO_set_id_callback
      Src: /src/pdns/pdns/opensslsigners.cc:80,1
    - Dst: CRYPTO_set_locking_callback
      Src: /src/pdns/pdns/opensslsigners.cc:81,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 77
    functionDepth: 0
    functionLinenumber: 77
    functionLinenumberEnd: 82
    functionName: openssl_thread_setup
    functionSourceFile: /src/pdns/pdns/opensslsigners.cc
    functionUses: 1
    functionsReached:
    - CRYPTO_set_locking_callback
    - std::vector<std::mutex>
    - CRYPTO_set_id_callback
    - CRYPTO_num_locks
    linkageType: ''
    returnType: void
    signature: void openssl_thread_setup()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CRYPTO_set_locking_callback
      Src: /src/pdns/pdns/opensslsigners.cc:86,1
    - Dst: clear
      Src: /src/pdns/pdns/opensslsigners.cc:87,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 84
    functionDepth: 1
    functionLinenumber: 84
    functionLinenumberEnd: 88
    functionName: openssl_thread_cleanup
    functionSourceFile: /src/pdns/pdns/opensslsigners.cc
    functionUses: 0
    functionsReached:
    - clear
    - CRYPTO_set_locking_callback
    linkageType: ''
    returnType: void
    signature: void openssl_thread_cleanup()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 4
    argNames:
    - rsakey
    - n
    - e
    - d
    argTypes:
    - RSA*
    - BIGNUM**
    - BIGNUM**
    - BIGNUM**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 93
    functionDepth: 0
    functionLinenumber: 93
    functionLinenumberEnd: 98
    functionName: RSA_get0_key
    functionSourceFile: /src/pdns/pdns/opensslsigners.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void RSA_get0_key(const RSA* rsakey, const BIGNUM** n, const BIGNUM**
      e, const BIGNUM** d)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: BN_clear_free
      Src: /src/pdns/pdns/opensslsigners.cc:103,1
    - Dst: BN_clear_free
      Src: /src/pdns/pdns/opensslsigners.cc:107,1
    - Dst: BN_clear_free
      Src: /src/pdns/pdns/opensslsigners.cc:111,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 4
    argNames:
    - rsakey
    - n
    - e
    - d
    argTypes:
    - RSA*
    - BIGNUM*
    - BIGNUM*
    - BIGNUM*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 115
      start: 100
    functionDepth: 0
    functionLinenumber: 100
    functionLinenumberEnd: 115
    functionName: RSA_set0_key
    functionSourceFile: /src/pdns/pdns/opensslsigners.cc
    functionUses: 0
    functionsReached:
    - BN_clear_free
    linkageType: ''
    returnType: int
    signature: int RSA_set0_key(RSA* rsakey, BIGNUM* n, BIGNUM* e, BIGNUM* d)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - rsakey
    - p
    - q
    argTypes:
    - RSA*
    - BIGNUM**
    - BIGNUM**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 117
    functionDepth: 0
    functionLinenumber: 117
    functionLinenumberEnd: 121
    functionName: RSA_get0_factors
    functionSourceFile: /src/pdns/pdns/opensslsigners.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void RSA_get0_factors(const RSA* rsakey, const BIGNUM** p, const BIGNUM**
      q)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BN_clear_free
      Src: /src/pdns/pdns/opensslsigners.cc:125,1
    - Dst: BN_clear_free
      Src: /src/pdns/pdns/opensslsigners.cc:127,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 3
    argNames:
    - rsakey
    - p
    - q
    argTypes:
    - RSA*
    - BIGNUM*
    - BIGNUM*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 130
      start: 123
    functionDepth: 0
    functionLinenumber: 123
    functionLinenumberEnd: 130
    functionName: RSA_set0_factors
    functionSourceFile: /src/pdns/pdns/opensslsigners.cc
    functionUses: 0
    functionsReached:
    - BN_clear_free
    linkageType: ''
    returnType: int
    signature: int RSA_set0_factors(RSA* rsakey, BIGNUM* p, BIGNUM* q)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 4
    argNames:
    - rsakey
    - dmp1
    - dmq1
    - iqmp
    argTypes:
    - RSA*
    - BIGNUM**
    - BIGNUM**
    - BIGNUM**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 137
      start: 132
    functionDepth: 0
    functionLinenumber: 132
    functionLinenumberEnd: 137
    functionName: RSA_get0_crt_params
    functionSourceFile: /src/pdns/pdns/opensslsigners.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void RSA_get0_crt_params(const RSA* rsakey, const BIGNUM** dmp1, const
      BIGNUM** dmq1, const BIGNUM** iqmp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BN_clear_free
      Src: /src/pdns/pdns/opensslsigners.cc:141,1
    - Dst: BN_clear_free
      Src: /src/pdns/pdns/opensslsigners.cc:143,1
    - Dst: BN_clear_free
      Src: /src/pdns/pdns/opensslsigners.cc:145,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 4
    argNames:
    - rsakey
    - dmp1
    - dmq1
    - iqmp
    argTypes:
    - RSA*
    - BIGNUM*
    - BIGNUM*
    - BIGNUM*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 148
      start: 139
    functionDepth: 0
    functionLinenumber: 139
    functionLinenumberEnd: 148
    functionName: RSA_set0_crt_params
    functionSourceFile: /src/pdns/pdns/opensslsigners.cc
    functionUses: 0
    functionsReached:
    - BN_clear_free
    linkageType: ''
    returnType: int
    signature: int RSA_set0_crt_params(RSA* rsakey, BIGNUM* dmp1, BIGNUM* dmq1, BIGNUM*
      iqmp)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - signature
    - pr
    - ps
    argTypes:
    - ECDSA_SIG*
    - BIGNUM**
    - BIGNUM**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 151
    functionDepth: 0
    functionLinenumber: 151
    functionLinenumberEnd: 155
    functionName: ECDSA_SIG_get0
    functionSourceFile: /src/pdns/pdns/opensslsigners.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ECDSA_SIG_get0(const ECDSA_SIG* signature, const BIGNUM** pr,
      const BIGNUM** ps)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BN_clear_free
      Src: /src/pdns/pdns/opensslsigners.cc:159,1
    - Dst: BN_clear_free
      Src: /src/pdns/pdns/opensslsigners.cc:160,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 3
    argNames:
    - signature
    - pr
    - ps
    argTypes:
    - ECDSA_SIG*
    - BIGNUM*
    - BIGNUM*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 164
      start: 157
    functionDepth: 0
    functionLinenumber: 157
    functionLinenumberEnd: 164
    functionName: ECDSA_SIG_set0
    functionSourceFile: /src/pdns/pdns/opensslsigners.cc
    functionUses: 0
    functionsReached:
    - BN_clear_free
    linkageType: ''
    returnType: int
    signature: int ECDSA_SIG_set0(ECDSA_SIG* signature, BIGNUM* pr, BIGNUM* ps)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 170
      start: 170
    functionDepth: 0
    functionLinenumber: 170
    functionLinenumberEnd: 170
    functionName: openssl_thread_setup
    functionSourceFile: /src/pdns/pdns/opensslsigners.cc
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void openssl_thread_setup()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 171
      start: 171
    functionDepth: 0
    functionLinenumber: 171
    functionLinenumberEnd: 171
    functionName: openssl_thread_cleanup
    functionSourceFile: /src/pdns/pdns/opensslsigners.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void openssl_thread_cleanup()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::string::reserve
      Src: /src/pdns/pdns/opensslsigners.cc:178,1
    - Dst: dns_random_uint32
      Src: /src/pdns/pdns/opensslsigners.cc:182,1
    - Dst: std::string::append
      Src: /src/pdns/pdns/opensslsigners.cc:183,1
    - Dst: RAND_seed
      Src: /src/pdns/pdns/opensslsigners.cc:186,1
    - Dst: std::string::c_str
      Src: /src/pdns/pdns/opensslsigners.cc:186,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 187
      start: 175
    functionDepth: 0
    functionLinenumber: 175
    functionLinenumberEnd: 187
    functionName: openssl_seed
    functionSourceFile: /src/pdns/pdns/opensslsigners.cc
    functionUses: 2
    functionsReached:
    - dns_random_uint32
    - std::string::append
    - std::string::reserve
    - std::string::c_str
    - RAND_seed
    linkageType: ''
    returnType: void
    signature: void openssl_seed()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: at
      Src: /src/pdns/pdns/opensslsigners.cc:193,1
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/opensslsigners.cc:196,1
    - Dst: c_str
      Src: /src/pdns/pdns/opensslsigners.cc:196,1
    - Dst: BN_bin2bn
      Src: /src/pdns/pdns/opensslsigners.cc:197,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/opensslsigners.cc:197,1
    - Dst: length
      Src: /src/pdns/pdns/opensslsigners.cc:197,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/opensslsigners.cc:199,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 3
    argNames:
    - ' componentName'
    - ' stormap'
    - ' key'
    argTypes:
    - std::string
    - std::map<std::string, std::string>
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 203
      start: 191
    functionDepth: 0
    functionLinenumber: 191
    functionLinenumberEnd: 203
    functionName: mapToBN
    functionSourceFile: /src/pdns/pdns/opensslsigners.cc
    functionUses: 0
    functionsReached:
    - length
    - BN_bin2bn
    - reinterpret_cast<const unsigned char*>
    - c_str
    - at
    - Logging::Logger::error
    - static_cast<int>
    linkageType: ''
    returnType: auto
    signature: auto mapToBN(const std::string& componentName, const std::map<std::string,
      std::string>& stormap, const std::string& key) -> BigNum
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 210
      start: 210
    functionDepth: 0
    functionLinenumber: 210
    functionLinenumberEnd: 210
    functionName: OpenSSLRSADNSCryptoKeyEngine::getName
    functionSourceFile: /src/pdns/pdns/opensslsigners.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: string
    signature: string getName() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: make_unique<OpenSSLRSADNSCryptoKeyEngine>
      Src: /src/pdns/pdns/opensslsigners.cc:255,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - slog
    - algorithm
    argTypes:
    - Logr::log_t
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 256
      start: 253
    functionDepth: 0
    functionLinenumber: 253
    functionLinenumberEnd: 256
    functionName: OpenSSLRSADNSCryptoKeyEngine::maker
    functionSourceFile: /src/pdns/pdns/opensslsigners.cc
    functionUses: 0
    functionsReached:
    - make_unique<OpenSSLRSADNSCryptoKeyEngine>
    linkageType: ''
    returnType: std::unique_ptr<DNSCryptoKeyEngine>
    signature: std::unique_ptr<DNSCryptoKeyEngine> maker(Logr::log_t slog, unsigned
      int algorithm)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Key
      Src: /src/pdns/pdns/opensslsigners.cc:295,1
    - Dst: Key
      Src: /src/pdns/pdns/opensslsigners.cc:297,1
    - Dst: RAND_status
      Src: /src/pdns/pdns/opensslsigners.cc:300,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/opensslsigners.cc:302,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/opensslsigners.cc:302,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 2
    argNames:
    - slog
    - algo
    argTypes:
    - Logr::log_t
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 304
      start: 292
    functionDepth: 0
    functionLinenumber: 292
    functionLinenumberEnd: 304
    functionName: OpenSSLRSADNSCryptoKeyEngine::OpenSSLRSADNSCryptoKeyEngine
    functionSourceFile: /src/pdns/pdns/opensslsigners.cc
    functionUses: 0
    functionsReached:
    - OpenSSLRSADNSCryptoKeyEngine::getName
    - RAND_status
    - runtime_error
    - Key
    linkageType: ''
    returnType: void
    signature: void OpenSSLRSADNSCryptoKeyEngine::OpenSSLRSADNSCryptoKeyEngine(Logr::log_t
      slog, unsigned int algo)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EVP_PKEY_get_bits
      Src: /src/pdns/pdns/opensslsigners.cc:309,1
    - Dst: get
      Src: /src/pdns/pdns/opensslsigners.cc:309,1
    - Dst: RSA_size
      Src: /src/pdns/pdns/opensslsigners.cc:311,1
    - Dst: get
      Src: /src/pdns/pdns/opensslsigners.cc:311,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 313
      start: 306
    functionDepth: 0
    functionLinenumber: 306
    functionLinenumberEnd: 313
    functionName: OpenSSLRSADNSCryptoKeyEngine::getBits
    functionSourceFile: /src/pdns/pdns/opensslsigners.cc
    functionUses: 0
    functionsReached:
    - RSA_size
    - EVP_PKEY_get_bits
    - get
    linkageType: ''
    returnType: int
    signature: int OpenSSLRSADNSCryptoKeyEngine::getBits() const
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: runtime_error
      Src: /src/pdns/pdns/opensslsigners.cc:320,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/opensslsigners.cc:320,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/opensslsigners.cc:320,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/opensslsigners.cc:324,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/opensslsigners.cc:324,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/opensslsigners.cc:324,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/opensslsigners.cc:328,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/opensslsigners.cc:328,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/opensslsigners.cc:328,1
    - Dst: BigNum
      Src: /src/pdns/pdns/opensslsigners.cc:331,1
    - Dst: BN_new
      Src: /src/pdns/pdns/opensslsigners.cc:331,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/opensslsigners.cc:333,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/opensslsigners.cc:333,1
    - Dst: BN_set_word
      Src: /src/pdns/pdns/opensslsigners.cc:337,1
    - Dst: auto::get
      Src: /src/pdns/pdns/opensslsigners.cc:337,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/opensslsigners.cc:340,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/opensslsigners.cc:340,1
    - Dst: KeyContext
      Src: /src/pdns/pdns/opensslsigners.cc:344,1
    - Dst: EVP_PKEY_CTX_new_from_name
      Src: /src/pdns/pdns/opensslsigners.cc:344,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/opensslsigners.cc:346,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/opensslsigners.cc:346,1
    - Dst: EVP_PKEY_keygen_init
      Src: /src/pdns/pdns/opensslsigners.cc:349,1
    - Dst: auto::get
      Src: /src/pdns/pdns/opensslsigners.cc:349,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/opensslsigners.cc:350,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/opensslsigners.cc:350,1
    - Dst: EVP_PKEY_CTX_set_rsa_keygen_bits
      Src: /src/pdns/pdns/opensslsigners.cc:353,1
    - Dst: auto::get
      Src: /src/pdns/pdns/opensslsigners.cc:353,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/opensslsigners.cc:354,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/opensslsigners.cc:354,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/opensslsigners.cc:354,1
    - Dst: EVP_PKEY_CTX_set1_rsa_keygen_pubexp
      Src: /src/pdns/pdns/opensslsigners.cc:357,1
    - Dst: auto::get
      Src: /src/pdns/pdns/opensslsigners.cc:357,1
    - Dst: auto::get
      Src: /src/pdns/pdns/opensslsigners.cc:357,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/opensslsigners.cc:358,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/opensslsigners.cc:358,1
    - Dst: EVP_PKEY_generate
      Src: /src/pdns/pdns/opensslsigners.cc:362,1
    - Dst: auto::get
      Src: /src/pdns/pdns/opensslsigners.cc:362,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/opensslsigners.cc:363,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/opensslsigners.cc:363,1
    - Dst: reset
      Src: /src/pdns/pdns/opensslsigners.cc:366,1
    - Dst: Key
      Src: /src/pdns/pdns/opensslsigners.cc:368,1
    - Dst: RSA_new
      Src: /src/pdns/pdns/opensslsigners.cc:368,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/opensslsigners.cc:370,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/opensslsigners.cc:370,1
    - Dst: RSA_generate_key_ex
      Src: /src/pdns/pdns/opensslsigners.cc:373,1
    - Dst: auto::get
      Src: /src/pdns/pdns/opensslsigners.cc:373,1
    - Dst: auto::get
      Src: /src/pdns/pdns/opensslsigners.cc:373,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/opensslsigners.cc:375,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/opensslsigners.cc:375,1
    - Dst: std::move
      Src: /src/pdns/pdns/opensslsigners.cc:378,1
    CyclomaticComplexity: 31
    EdgeCount: 31
    ICount: 40
    argCount: 1
    argNames:
    - bits
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 380
      start: 315
    functionDepth: 0
    functionLinenumber: 315
    functionLinenumberEnd: 380
    functionName: OpenSSLRSADNSCryptoKeyEngine::create
    functionSourceFile: /src/pdns/pdns/opensslsigners.cc
    functionUses: 0
    functionsReached:
    - EVP_PKEY_generate
    - std::to_string
    - runtime_error
    - BN_new
    - reset
    - OpenSSLRSADNSCryptoKeyEngine::getName
    - EVP_PKEY_CTX_set1_rsa_keygen_pubexp
    - RSA_new
    - RSA_generate_key_ex
    - auto::get
    - BigNum
    - Key
    - EVP_PKEY_CTX_new_from_name
    - std::move
    - BN_set_word
    - EVP_PKEY_keygen_init
    - EVP_PKEY_CTX_set_rsa_keygen_bits
    - KeyContext
    - Logging::Logger::error
    linkageType: ''
    returnType: void
    signature: void OpenSSLRSADNSCryptoKeyEngine::create(unsigned int bits)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: PEM_read_PrivateKey
      Src: /src/pdns/pdns/opensslsigners.cc:388,1
    - Dst: std::optional<std::reference_wrapper<const std::string>>::has_value
      Src: /src/pdns/pdns/opensslsigners.cc:389,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/opensslsigners.cc:390,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/opensslsigners.cc:390,1
    - Dst: std::optional<std::reference_wrapper<const std::string>>::get
      Src: /src/pdns/pdns/opensslsigners.cc:390,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/opensslsigners.cc:393,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/opensslsigners.cc:393,1
    - Dst: reset
      Src: /src/pdns/pdns/opensslsigners.cc:396,1
    - Dst: Key
      Src: /src/pdns/pdns/opensslsigners.cc:398,1
    - Dst: PEM_read_RSAPrivateKey
      Src: /src/pdns/pdns/opensslsigners.cc:398,1
    - Dst: std::optional<std::reference_wrapper<const std::string>>::has_value
      Src: /src/pdns/pdns/opensslsigners.cc:400,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/opensslsigners.cc:401,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/opensslsigners.cc:401,1
    - Dst: std::optional<std::reference_wrapper<const std::string>>::get
      Src: /src/pdns/pdns/opensslsigners.cc:401,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/opensslsigners.cc:404,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/opensslsigners.cc:404,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 16
    argCount: 3
    argNames:
    - ' drc'
    - ' inputFile'
    - filename
    argTypes:
    - DNSKEYRecordContent
    - std::FILE
    - std::optional<std::reference_wrapper<const std::string>>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 407
      start: 382
    functionDepth: 0
    functionLinenumber: 382
    functionLinenumberEnd: 407
    functionName: OpenSSLRSADNSCryptoKeyEngine::createFromPEMFile
    functionSourceFile: /src/pdns/pdns/opensslsigners.cc
    functionUses: 0
    functionsReached:
    - reset
    - runtime_error
    - PEM_read_PrivateKey
    - OpenSSLRSADNSCryptoKeyEngine::getName
    - std::optional<std::reference_wrapper<const std::string>>::has_value
    - std::optional<std::reference_wrapper<const std::string>>::get
    - Key
    - Logging::Logger::error
    - PEM_read_RSAPrivateKey
    linkageType: ''
    returnType: void
    signature: void OpenSSLRSADNSCryptoKeyEngine::createFromPEMFile(DNSKEYRecordContent&
      drc, std::FILE& inputFile, const std::optional<std::reference_wrapper<const
      std::string>> filename)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PEM_write_PrivateKey
      Src: /src/pdns/pdns/opensslsigners.cc:412,1
    - Dst: get
      Src: /src/pdns/pdns/opensslsigners.cc:412,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/opensslsigners.cc:413,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/opensslsigners.cc:413,1
    - Dst: PEM_write_RSAPrivateKey
      Src: /src/pdns/pdns/opensslsigners.cc:416,1
    - Dst: get
      Src: /src/pdns/pdns/opensslsigners.cc:416,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/opensslsigners.cc:418,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/opensslsigners.cc:418,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 7
    argCount: 1
    argNames:
    - ' outputFile'
    argTypes:
    - std::FILE
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 421
      start: 409
    functionDepth: 0
    functionLinenumber: 409
    functionLinenumberEnd: 421
    functionName: OpenSSLRSADNSCryptoKeyEngine::convertToPEMFile
    functionSourceFile: /src/pdns/pdns/opensslsigners.cc
    functionUses: 0
    functionsReached:
    - runtime_error
    - get
    - OpenSSLRSADNSCryptoKeyEngine::getName
    - PEM_write_RSAPrivateKey
    - PEM_write_PrivateKey
    - Logging::Logger::error
    linkageType: ''
    returnType: void
    signature: void OpenSSLRSADNSCryptoKeyEngine::convertToPEMFile(std::FILE& outputFile)
      const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: EVP_PKEY_get_bn_param
      Src: /src/pdns/pdns/opensslsigners.cc:427,1
    - Dst: get
      Src: /src/pdns/pdns/opensslsigners.cc:427,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/opensslsigners.cc:428,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/opensslsigners.cc:428,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 431
      start: 424
    functionDepth: 0
    functionLinenumber: 424
    functionLinenumberEnd: 431
    functionName: OpenSSLRSADNSCryptoKeyEngine::getKeyParamModulus
    functionSourceFile: /src/pdns/pdns/opensslsigners.cc
    functionUses: 0
    functionsReached:
    - OpenSSLRSADNSCryptoKeyEngine::getName
    - EVP_PKEY_get_bn_param
    - Logging::Logger::error
    - get
    linkageType: ''
    returnType: BigNum
    signature: BigNum OpenSSLRSADNSCryptoKeyEngine::getKeyParamModulus() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: EVP_PKEY_get_bn_param
      Src: /src/pdns/pdns/opensslsigners.cc:436,1
    - Dst: get
      Src: /src/pdns/pdns/opensslsigners.cc:436,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/opensslsigners.cc:437,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/opensslsigners.cc:437,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 440
      start: 433
    functionDepth: 0
    functionLinenumber: 433
    functionLinenumberEnd: 440
    functionName: OpenSSLRSADNSCryptoKeyEngine::getKeyParamPublicExponent
    functionSourceFile: /src/pdns/pdns/opensslsigners.cc
    functionUses: 0
    functionsReached:
    - OpenSSLRSADNSCryptoKeyEngine::getName
    - EVP_PKEY_get_bn_param
    - Logging::Logger::error
    - get
    linkageType: ''
    returnType: BigNum
    signature: BigNum OpenSSLRSADNSCryptoKeyEngine::getKeyParamPublicExponent() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: EVP_PKEY_get_bn_param
      Src: /src/pdns/pdns/opensslsigners.cc:445,1
    - Dst: get
      Src: /src/pdns/pdns/opensslsigners.cc:445,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/opensslsigners.cc:446,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/opensslsigners.cc:446,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 449
      start: 442
    functionDepth: 0
    functionLinenumber: 442
    functionLinenumberEnd: 449
    functionName: OpenSSLRSADNSCryptoKeyEngine::getKeyParamPrivateExponent
    functionSourceFile: /src/pdns/pdns/opensslsigners.cc
    functionUses: 0
    functionsReached:
    - OpenSSLRSADNSCryptoKeyEngine::getName
    - EVP_PKEY_get_bn_param
    - Logging::Logger::error
    - get
    linkageType: ''
    returnType: BigNum
    signature: BigNum OpenSSLRSADNSCryptoKeyEngine::getKeyParamPrivateExponent() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: EVP_PKEY_get_bn_param
      Src: /src/pdns/pdns/opensslsigners.cc:454,1
    - Dst: get
      Src: /src/pdns/pdns/opensslsigners.cc:454,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/opensslsigners.cc:455,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/opensslsigners.cc:455,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 458
      start: 451
    functionDepth: 0
    functionLinenumber: 451
    functionLinenumberEnd: 458
    functionName: OpenSSLRSADNSCryptoKeyEngine::getKeyParamPrime1
    functionSourceFile: /src/pdns/pdns/opensslsigners.cc
    functionUses: 0
    functionsReached:
    - OpenSSLRSADNSCryptoKeyEngine::getName
    - EVP_PKEY_get_bn_param
    - Logging::Logger::error
    - get
    linkageType: ''
    returnType: BigNum
    signature: BigNum OpenSSLRSADNSCryptoKeyEngine::getKeyParamPrime1() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: EVP_PKEY_get_bn_param
      Src: /src/pdns/pdns/opensslsigners.cc:463,1
    - Dst: get
      Src: /src/pdns/pdns/opensslsigners.cc:463,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/opensslsigners.cc:464,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/opensslsigners.cc:464,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 467
      start: 460
    functionDepth: 0
    functionLinenumber: 460
    functionLinenumberEnd: 467
    functionName: OpenSSLRSADNSCryptoKeyEngine::getKeyParamPrime2
    functionSourceFile: /src/pdns/pdns/opensslsigners.cc
    functionUses: 0
    functionsReached:
    - OpenSSLRSADNSCryptoKeyEngine::getName
    - EVP_PKEY_get_bn_param
    - Logging::Logger::error
    - get
    linkageType: ''
    returnType: BigNum
    signature: BigNum OpenSSLRSADNSCryptoKeyEngine::getKeyParamPrime2() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: EVP_PKEY_get_bn_param
      Src: /src/pdns/pdns/opensslsigners.cc:472,1
    - Dst: get
      Src: /src/pdns/pdns/opensslsigners.cc:472,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/opensslsigners.cc:473,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/opensslsigners.cc:473,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 476
      start: 469
    functionDepth: 0
    functionLinenumber: 469
    functionLinenumberEnd: 476
    functionName: OpenSSLRSADNSCryptoKeyEngine::getKeyParamDmp1
    functionSourceFile: /src/pdns/pdns/opensslsigners.cc
    functionUses: 0
    functionsReached:
    - OpenSSLRSADNSCryptoKeyEngine::getName
    - EVP_PKEY_get_bn_param
    - Logging::Logger::error
    - get
    linkageType: ''
    returnType: BigNum
    signature: BigNum OpenSSLRSADNSCryptoKeyEngine::getKeyParamDmp1() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: EVP_PKEY_get_bn_param
      Src: /src/pdns/pdns/opensslsigners.cc:481,1
    - Dst: get
      Src: /src/pdns/pdns/opensslsigners.cc:481,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/opensslsigners.cc:482,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/opensslsigners.cc:482,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 485
      start: 478
    functionDepth: 0
    functionLinenumber: 478
    functionLinenumberEnd: 485
    functionName: OpenSSLRSADNSCryptoKeyEngine::getKeyParamDmq1
    functionSourceFile: /src/pdns/pdns/opensslsigners.cc
    functionUses: 0
    functionsReached:
    - OpenSSLRSADNSCryptoKeyEngine::getName
    - EVP_PKEY_get_bn_param
    - Logging::Logger::error
    - get
    linkageType: ''
    returnType: BigNum
    signature: BigNum OpenSSLRSADNSCryptoKeyEngine::getKeyParamDmq1() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: EVP_PKEY_get_bn_param
      Src: /src/pdns/pdns/opensslsigners.cc:490,1
    - Dst: get
      Src: /src/pdns/pdns/opensslsigners.cc:490,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/opensslsigners.cc:491,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/opensslsigners.cc:491,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 494
      start: 487
    functionDepth: 0
    functionLinenumber: 487
    functionLinenumberEnd: 494
    functionName: OpenSSLRSADNSCryptoKeyEngine::getKeyParamIqmp
    functionSourceFile: /src/pdns/pdns/opensslsigners.cc
    functionUses: 0
    functionsReached:
    - OpenSSLRSADNSCryptoKeyEngine::getName
    - EVP_PKEY_get_bn_param
    - Logging::Logger::error
    - get
    linkageType: ''
    returnType: BigNum
    signature: BigNum OpenSSLRSADNSCryptoKeyEngine::getKeyParamIqmp() const
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: ParamsBuilder
      Src: /src/pdns/pdns/opensslsigners.cc:500,1
    - Dst: OSSL_PARAM_BLD_new
      Src: /src/pdns/pdns/opensslsigners.cc:500,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/opensslsigners.cc:502,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/opensslsigners.cc:502,1
    - Dst: OSSL_PARAM_BLD_push_BN
      Src: /src/pdns/pdns/opensslsigners.cc:505,1
    - Dst: auto::get
      Src: /src/pdns/pdns/opensslsigners.cc:505,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/opensslsigners.cc:506,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/opensslsigners.cc:506,1
    - Dst: OSSL_PARAM_BLD_push_BN
      Src: /src/pdns/pdns/opensslsigners.cc:509,1
    - Dst: auto::get
      Src: /src/pdns/pdns/opensslsigners.cc:509,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/opensslsigners.cc:510,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/opensslsigners.cc:510,1
    - Dst: OSSL_PARAM_BLD_push_BN
      Src: /src/pdns/pdns/opensslsigners.cc:513,1
    - Dst: auto::get
      Src: /src/pdns/pdns/opensslsigners.cc:513,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/opensslsigners.cc:514,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/opensslsigners.cc:514,1
    - Dst: OSSL_PARAM_BLD_push_BN
      Src: /src/pdns/pdns/opensslsigners.cc:517,1
    - Dst: auto::get
      Src: /src/pdns/pdns/opensslsigners.cc:517,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/opensslsigners.cc:518,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/opensslsigners.cc:518,1
    - Dst: OSSL_PARAM_BLD_push_BN
      Src: /src/pdns/pdns/opensslsigners.cc:521,1
    - Dst: auto::get
      Src: /src/pdns/pdns/opensslsigners.cc:521,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/opensslsigners.cc:522,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/opensslsigners.cc:522,1
    - Dst: OSSL_PARAM_BLD_push_BN
      Src: /src/pdns/pdns/opensslsigners.cc:525,1
    - Dst: auto::get
      Src: /src/pdns/pdns/opensslsigners.cc:525,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/opensslsigners.cc:526,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/opensslsigners.cc:526,1
    - Dst: OSSL_PARAM_BLD_push_BN
      Src: /src/pdns/pdns/opensslsigners.cc:529,1
    - Dst: auto::get
      Src: /src/pdns/pdns/opensslsigners.cc:529,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/opensslsigners.cc:530,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/opensslsigners.cc:530,1
    - Dst: OSSL_PARAM_BLD_push_BN
      Src: /src/pdns/pdns/opensslsigners.cc:533,1
    - Dst: auto::get
      Src: /src/pdns/pdns/opensslsigners.cc:533,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/opensslsigners.cc:534,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/opensslsigners.cc:534,1
    - Dst: Params
      Src: /src/pdns/pdns/opensslsigners.cc:537,1
    - Dst: OSSL_PARAM_BLD_to_param
      Src: /src/pdns/pdns/opensslsigners.cc:537,1
    - Dst: auto::get
      Src: /src/pdns/pdns/opensslsigners.cc:537,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/opensslsigners.cc:539,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/opensslsigners.cc:539,1
    CyclomaticComplexity: 28
    EdgeCount: 28
    ICount: 32
    argCount: 8
    argNames:
    - modulus
    - publicExponent
    - privateExponent
    - prime1
    - prime2
    - dmp1
    - dmq1
    - iqmp
    argTypes:
    - BIGNUM*
    - BIGNUM*
    - BIGNUM*
    - BIGNUM*
    - BIGNUM*
    - BIGNUM*
    - BIGNUM*
    - BIGNUM*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 543
      start: 498
    functionDepth: 0
    functionLinenumber: 498
    functionLinenumberEnd: 543
    functionName: OpenSSLRSADNSCryptoKeyEngine::makeKeyParams
    functionSourceFile: /src/pdns/pdns/opensslsigners.cc
    functionUses: 0
    functionsReached:
    - OSSL_PARAM_BLD_new
    - auto::get
    - OSSL_PARAM_BLD_to_param
    - Params
    - OpenSSLRSADNSCryptoKeyEngine::getName
    - OSSL_PARAM_BLD_push_BN
    - ParamsBuilder
    - Logging::Logger::error
    linkageType: ''
    returnType: auto
    signature: auto OpenSSLRSADNSCryptoKeyEngine::makeKeyParams(const BIGNUM* modulus,
      const BIGNUM* publicExponent, const BIGNUM* privateExponent, const BIGNUM* prime1,
      const BIGNUM* prime2, const BIGNUM* dmp1, const BIGNUM* dmq1, const BIGNUM*
      iqmp) const -> Params
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: OpenSSLRSADNSCryptoKeyEngine::getKeyParamModulus
      Src: /src/pdns/pdns/opensslsigners.cc:554,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::getKeyParamPublicExponent
      Src: /src/pdns/pdns/opensslsigners.cc:555,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::getKeyParamPrivateExponent
      Src: /src/pdns/pdns/opensslsigners.cc:556,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::getKeyParamPrime1
      Src: /src/pdns/pdns/opensslsigners.cc:557,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::getKeyParamPrime2
      Src: /src/pdns/pdns/opensslsigners.cc:558,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::getKeyParamDmp1
      Src: /src/pdns/pdns/opensslsigners.cc:559,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::getKeyParamDmq1
      Src: /src/pdns/pdns/opensslsigners.cc:560,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::getKeyParamIqmp
      Src: /src/pdns/pdns/opensslsigners.cc:561,1
    - Dst: BigNum::get
      Src: /src/pdns/pdns/opensslsigners.cc:564,1
    - Dst: BigNum::get
      Src: /src/pdns/pdns/opensslsigners.cc:565,1
    - Dst: BigNum::get
      Src: /src/pdns/pdns/opensslsigners.cc:566,1
    - Dst: BigNum::get
      Src: /src/pdns/pdns/opensslsigners.cc:567,1
    - Dst: BigNum::get
      Src: /src/pdns/pdns/opensslsigners.cc:568,1
    - Dst: BigNum::get
      Src: /src/pdns/pdns/opensslsigners.cc:569,1
    - Dst: BigNum::get
      Src: /src/pdns/pdns/opensslsigners.cc:570,1
    - Dst: BigNum::get
      Src: /src/pdns/pdns/opensslsigners.cc:571,1
    - Dst: RSA_get0_key
      Src: /src/pdns/pdns/opensslsigners.cc:581,1
    - Dst: get
      Src: /src/pdns/pdns/opensslsigners.cc:581,1
    - Dst: RSA_get0_factors
      Src: /src/pdns/pdns/opensslsigners.cc:582,1
    - Dst: get
      Src: /src/pdns/pdns/opensslsigners.cc:582,1
    - Dst: RSA_get0_crt_params
      Src: /src/pdns/pdns/opensslsigners.cc:583,1
    - Dst: get
      Src: /src/pdns/pdns/opensslsigners.cc:583,1
    - Dst: outputs_t::emplace_back
      Src: /src/pdns/pdns/opensslsigners.cc:586,1
    - Dst: outputs_t::emplace_back
      Src: /src/pdns/pdns/opensslsigners.cc:587,1
    - Dst: outputs_t::emplace_back
      Src: /src/pdns/pdns/opensslsigners.cc:588,1
    - Dst: outputs_t::emplace_back
      Src: /src/pdns/pdns/opensslsigners.cc:589,1
    - Dst: outputs_t::emplace_back
      Src: /src/pdns/pdns/opensslsigners.cc:590,1
    - Dst: outputs_t::emplace_back
      Src: /src/pdns/pdns/opensslsigners.cc:591,1
    - Dst: outputs_t::emplace_back
      Src: /src/pdns/pdns/opensslsigners.cc:592,1
    - Dst: outputs_t::emplace_back
      Src: /src/pdns/pdns/opensslsigners.cc:593,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/opensslsigners.cc:595,1
    - Dst: storvector_t::emplace_back
      Src: /src/pdns/pdns/opensslsigners.cc:610,1
    - Dst: std::string::resize
      Src: /src/pdns/pdns/opensslsigners.cc:614,1
    - Dst: BN_num_bytes
      Src: /src/pdns/pdns/opensslsigners.cc:614,1
    - Dst: BN_bn2bin
      Src: /src/pdns/pdns/opensslsigners.cc:616,1
    - Dst: reinterpret_cast<unsigned char*>
      Src: /src/pdns/pdns/opensslsigners.cc:616,1
    - Dst: std::string::data
      Src: /src/pdns/pdns/opensslsigners.cc:616,1
    - Dst: std::string::resize
      Src: /src/pdns/pdns/opensslsigners.cc:618,1
    - Dst: storvector_t::emplace_back
      Src: /src/pdns/pdns/opensslsigners.cc:619,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 34
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 624
      start: 546
    functionDepth: 1
    functionLinenumber: 546
    functionLinenumberEnd: 624
    functionName: OpenSSLRSADNSCryptoKeyEngine::convertToISCVector
    functionSourceFile: /src/pdns/pdns/opensslsigners.cc
    functionUses: 0
    functionsReached:
    - std::to_string
    - OpenSSLRSADNSCryptoKeyEngine::getKeyParamPrivateExponent
    - OpenSSLRSADNSCryptoKeyEngine::getKeyParamPublicExponent
    - BN_bn2bin
    - OpenSSLRSADNSCryptoKeyEngine::getKeyParamModulus
    - storvector_t::emplace_back
    - OpenSSLRSADNSCryptoKeyEngine::getKeyParamDmp1
    - reinterpret_cast<unsigned char*>
    - RSA_get0_factors
    - RSA_get0_key
    - outputs_t::emplace_back
    - OpenSSLRSADNSCryptoKeyEngine::getKeyParamDmq1
    - std::string::data
    - get
    - std::string::resize
    - OpenSSLRSADNSCryptoKeyEngine::getKeyParamPrime1
    - OpenSSLRSADNSCryptoKeyEngine::getKeyParamIqmp
    - OpenSSLRSADNSCryptoKeyEngine::getKeyParamPrime2
    - RSA_get0_crt_params
    - BN_num_bytes
    - BigNum::get
    linkageType: ''
    returnType: DNSCryptoKeyEngine::storvector_t
    signature: DNSCryptoKeyEngine::storvector_t OpenSSLRSADNSCryptoKeyEngine::convertToISCVector()
      const
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: runtime_error
      Src: /src/pdns/pdns/opensslsigners.cc:637,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/opensslsigners.cc:637,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/opensslsigners.cc:637,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 639
      start: 626
    functionDepth: 0
    functionLinenumber: 626
    functionLinenumberEnd: 639
    functionName: OpenSSLRSADNSCryptoKeyEngine::hashSize
    functionSourceFile: /src/pdns/pdns/opensslsigners.cc
    functionUses: 0
    functionsReached:
    - OpenSSLRSADNSCryptoKeyEngine::getName
    - runtime_error
    - std::to_string
    linkageType: ''
    returnType: std::size_t
    signature: std::size_t OpenSSLRSADNSCryptoKeyEngine::hashSize() const
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: EVP_sha1
      Src: /src/pdns/pdns/opensslsigners.cc:648,1
    - Dst: EVP_sha256
      Src: /src/pdns/pdns/opensslsigners.cc:651,1
    - Dst: EVP_sha512
      Src: /src/pdns/pdns/opensslsigners.cc:654,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/opensslsigners.cc:657,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/opensslsigners.cc:657,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/opensslsigners.cc:657,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/opensslsigners.cc:661,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/opensslsigners.cc:661,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::hashSize
      Src: /src/pdns/pdns/opensslsigners.cc:661,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 19
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 665
      start: 641
    functionDepth: 0
    functionLinenumber: 641
    functionLinenumberEnd: 665
    functionName: OpenSSLRSADNSCryptoKeyEngine::hasher
    functionSourceFile: /src/pdns/pdns/opensslsigners.cc
    functionUses: 0
    functionsReached:
    - OpenSSLRSADNSCryptoKeyEngine::hashSize
    - std::to_string
    - std::runtime_error
    - runtime_error
    - EVP_sha256
    - OpenSSLRSADNSCryptoKeyEngine::getName
    - EVP_sha512
    - EVP_sha1
    linkageType: ''
    returnType: EVP_MD
    signature: EVP_MD * OpenSSLRSADNSCryptoKeyEngine::hasher() const
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: std::string::resize
      Src: /src/pdns/pdns/opensslsigners.cc:671,1
    - Dst: SHA1
      Src: /src/pdns/pdns/opensslsigners.cc:673,1
    - Dst: reinterpret_cast<unsigned char*>
      Src: /src/pdns/pdns/opensslsigners.cc:673,1
    - Dst: const_cast<char*>
      Src: /src/pdns/pdns/opensslsigners.cc:673,1
    - Dst: c_str
      Src: /src/pdns/pdns/opensslsigners.cc:673,1
    - Dst: length
      Src: /src/pdns/pdns/opensslsigners.cc:673,1
    - Dst: reinterpret_cast<unsigned char*>
      Src: /src/pdns/pdns/opensslsigners.cc:673,1
    - Dst: std::string::data
      Src: /src/pdns/pdns/opensslsigners.cc:673,1
    - Dst: std::string::resize
      Src: /src/pdns/pdns/opensslsigners.cc:679,1
    - Dst: SHA256
      Src: /src/pdns/pdns/opensslsigners.cc:681,1
    - Dst: reinterpret_cast<unsigned char*>
      Src: /src/pdns/pdns/opensslsigners.cc:681,1
    - Dst: const_cast<char*>
      Src: /src/pdns/pdns/opensslsigners.cc:681,1
    - Dst: c_str
      Src: /src/pdns/pdns/opensslsigners.cc:681,1
    - Dst: length
      Src: /src/pdns/pdns/opensslsigners.cc:681,1
    - Dst: reinterpret_cast<unsigned char*>
      Src: /src/pdns/pdns/opensslsigners.cc:681,1
    - Dst: std::string::data
      Src: /src/pdns/pdns/opensslsigners.cc:681,1
    - Dst: std::string::resize
      Src: /src/pdns/pdns/opensslsigners.cc:687,1
    - Dst: SHA512
      Src: /src/pdns/pdns/opensslsigners.cc:689,1
    - Dst: reinterpret_cast<unsigned char*>
      Src: /src/pdns/pdns/opensslsigners.cc:689,1
    - Dst: const_cast<char*>
      Src: /src/pdns/pdns/opensslsigners.cc:689,1
    - Dst: c_str
      Src: /src/pdns/pdns/opensslsigners.cc:689,1
    - Dst: length
      Src: /src/pdns/pdns/opensslsigners.cc:689,1
    - Dst: reinterpret_cast<unsigned char*>
      Src: /src/pdns/pdns/opensslsigners.cc:689,1
    - Dst: std::string::data
      Src: /src/pdns/pdns/opensslsigners.cc:689,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/opensslsigners.cc:693,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/opensslsigners.cc:693,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/opensslsigners.cc:693,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 1
    argNames:
    - ' message'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 694
      start: 667
    functionDepth: 1
    functionLinenumber: 667
    functionLinenumberEnd: 694
    functionName: OpenSSLRSADNSCryptoKeyEngine::hash
    functionSourceFile: /src/pdns/pdns/opensslsigners.cc
    functionUses: 0
    functionsReached:
    - length
    - SHA512
    - const_cast<char*>
    - std::to_string
    - c_str
    - runtime_error
    - std::string::data
    - reinterpret_cast<unsigned char*>
    - OpenSSLRSADNSCryptoKeyEngine::getName
    - std::string::resize
    - SHA256
    - SHA1
    linkageType: ''
    returnType: std::string
    signature: std::string OpenSSLRSADNSCryptoKeyEngine::hash(const std::string& message)
      const
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: runtime_error
      Src: /src/pdns/pdns/opensslsigners.cc:708,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/opensslsigners.cc:708,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 1
    argNames:
    - hashSize
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 710
      start: 696
    functionDepth: 0
    functionLinenumber: 696
    functionLinenumberEnd: 710
    functionName: OpenSSLRSADNSCryptoKeyEngine::hashSizeToKind
    functionSourceFile: /src/pdns/pdns/opensslsigners.cc
    functionUses: 0
    functionsReached:
    - runtime_error
    - std::to_string
    linkageType: ''
    returnType: int
    signature: int OpenSSLRSADNSCryptoKeyEngine::hashSizeToKind(const size_t hashSize)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: MessageDigestContext
      Src: /src/pdns/pdns/opensslsigners.cc:717,1
    - Dst: EVP_MD_CTX_new
      Src: /src/pdns/pdns/opensslsigners.cc:717,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/opensslsigners.cc:719,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/opensslsigners.cc:719,1
    - Dst: EVP_DigestSignInit
      Src: /src/pdns/pdns/opensslsigners.cc:722,1
    - Dst: auto::get
      Src: /src/pdns/pdns/opensslsigners.cc:722,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::hasher
      Src: /src/pdns/pdns/opensslsigners.cc:722,1
    - Dst: get
      Src: /src/pdns/pdns/opensslsigners.cc:722,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/opensslsigners.cc:723,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/opensslsigners.cc:723,1
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/opensslsigners.cc:728,1
    - Dst: data
      Src: /src/pdns/pdns/opensslsigners.cc:728,1
    - Dst: EVP_DigestSign
      Src: /src/pdns/pdns/opensslsigners.cc:729,1
    - Dst: auto::get
      Src: /src/pdns/pdns/opensslsigners.cc:729,1
    - Dst: size
      Src: /src/pdns/pdns/opensslsigners.cc:729,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/opensslsigners.cc:730,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/opensslsigners.cc:730,1
    - Dst: std::string::resize
      Src: /src/pdns/pdns/opensslsigners.cc:733,1
    - Dst: reinterpret_cast<unsigned char*>
      Src: /src/pdns/pdns/opensslsigners.cc:736,1
    - Dst: std::string::data
      Src: /src/pdns/pdns/opensslsigners.cc:736,1
    - Dst: EVP_DigestSign
      Src: /src/pdns/pdns/opensslsigners.cc:737,1
    - Dst: auto::get
      Src: /src/pdns/pdns/opensslsigners.cc:737,1
    - Dst: size
      Src: /src/pdns/pdns/opensslsigners.cc:737,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/opensslsigners.cc:738,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/opensslsigners.cc:738,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::hash
      Src: /src/pdns/pdns/opensslsigners.cc:742,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::hashSizeToKind
      Src: /src/pdns/pdns/opensslsigners.cc:743,1
    - Dst: string::size
      Src: /src/pdns/pdns/opensslsigners.cc:743,1
    - Dst: std::string::resize
      Src: /src/pdns/pdns/opensslsigners.cc:744,1
    - Dst: RSA_size
      Src: /src/pdns/pdns/opensslsigners.cc:744,1
    - Dst: get
      Src: /src/pdns/pdns/opensslsigners.cc:744,1
    - Dst: RSA_sign
      Src: /src/pdns/pdns/opensslsigners.cc:747,1
    - Dst: reinterpret_cast<unsigned char*>
      Src: /src/pdns/pdns/opensslsigners.cc:747,1
    - Dst: string::at
      Src: /src/pdns/pdns/opensslsigners.cc:747,1
    - Dst: string::length
      Src: /src/pdns/pdns/opensslsigners.cc:747,1
    - Dst: reinterpret_cast<unsigned char*>
      Src: /src/pdns/pdns/opensslsigners.cc:747,1
    - Dst: std::string::at
      Src: /src/pdns/pdns/opensslsigners.cc:747,1
    - Dst: get
      Src: /src/pdns/pdns/opensslsigners.cc:747,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/opensslsigners.cc:749,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/opensslsigners.cc:749,1
    - Dst: std::string::resize
      Src: /src/pdns/pdns/opensslsigners.cc:752,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 20
    argCount: 1
    argNames:
    - ' message'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 756
      start: 712
    functionDepth: 1
    functionLinenumber: 712
    functionLinenumberEnd: 756
    functionName: OpenSSLRSADNSCryptoKeyEngine::sign
    functionSourceFile: /src/pdns/pdns/opensslsigners.cc
    functionUses: 0
    functionsReached:
    - runtime_error
    - EVP_DigestSign
    - OpenSSLRSADNSCryptoKeyEngine::hasher
    - EVP_DigestSignInit
    - string::at
    - MessageDigestContext
    - std::string::at
    - string::size
    - size
    - OpenSSLRSADNSCryptoKeyEngine::getName
    - reinterpret_cast<unsigned char*>
    - reinterpret_cast<const unsigned char*>
    - RSA_sign
    - auto::get
    - OpenSSLRSADNSCryptoKeyEngine::hashSizeToKind
    - OpenSSLRSADNSCryptoKeyEngine::hash
    - std::string::data
    - get
    - std::string::resize
    - string::length
    - RSA_size
    - data
    - EVP_MD_CTX_new
    - Logging::Logger::error
    linkageType: ''
    returnType: std::string
    signature: std::string OpenSSLRSADNSCryptoKeyEngine::sign(const std::string& message)
      const
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: MessageDigestContext
      Src: /src/pdns/pdns/opensslsigners.cc:761,1
    - Dst: EVP_MD_CTX_new
      Src: /src/pdns/pdns/opensslsigners.cc:761,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/opensslsigners.cc:763,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/opensslsigners.cc:763,1
    - Dst: EVP_DigestVerifyInit
      Src: /src/pdns/pdns/opensslsigners.cc:766,1
    - Dst: auto::get
      Src: /src/pdns/pdns/opensslsigners.cc:766,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::hasher
      Src: /src/pdns/pdns/opensslsigners.cc:766,1
    - Dst: get
      Src: /src/pdns/pdns/opensslsigners.cc:766,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/opensslsigners.cc:767,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/opensslsigners.cc:767,1
    - Dst: EVP_DigestVerify
      Src: /src/pdns/pdns/opensslsigners.cc:771,1
    - Dst: auto::get
      Src: /src/pdns/pdns/opensslsigners.cc:771,1
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/opensslsigners.cc:771,1
    - Dst: data
      Src: /src/pdns/pdns/opensslsigners.cc:771,1
    - Dst: size
      Src: /src/pdns/pdns/opensslsigners.cc:771,1
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/opensslsigners.cc:771,1
    - Dst: data
      Src: /src/pdns/pdns/opensslsigners.cc:771,1
    - Dst: size
      Src: /src/pdns/pdns/opensslsigners.cc:771,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/opensslsigners.cc:773,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/opensslsigners.cc:773,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::hash
      Src: /src/pdns/pdns/opensslsigners.cc:778,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::hashSizeToKind
      Src: /src/pdns/pdns/opensslsigners.cc:779,1
    - Dst: string::size
      Src: /src/pdns/pdns/opensslsigners.cc:779,1
    - Dst: RSA_verify
      Src: /src/pdns/pdns/opensslsigners.cc:781,1
    - Dst: string::c_str
      Src: /src/pdns/pdns/opensslsigners.cc:781,1
    - Dst: string::length
      Src: /src/pdns/pdns/opensslsigners.cc:781,1
    - Dst: c_str
      Src: /src/pdns/pdns/opensslsigners.cc:781,1
    - Dst: length
      Src: /src/pdns/pdns/opensslsigners.cc:781,1
    - Dst: get
      Src: /src/pdns/pdns/opensslsigners.cc:781,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 12
    argCount: 2
    argNames:
    - ' message'
    - ' signature'
    argTypes:
    - std::string
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 785
      start: 758
    functionDepth: 0
    functionLinenumber: 758
    functionLinenumberEnd: 785
    functionName: OpenSSLRSADNSCryptoKeyEngine::verify
    functionSourceFile: /src/pdns/pdns/opensslsigners.cc
    functionUses: 0
    functionsReached:
    - OpenSSLRSADNSCryptoKeyEngine::hasher
    - MessageDigestContext
    - string::size
    - size
    - OpenSSLRSADNSCryptoKeyEngine::getName
    - reinterpret_cast<const unsigned char*>
    - c_str
    - RSA_verify
    - string::c_str
    - auto::get
    - EVP_DigestVerifyInit
    - EVP_DigestVerify
    - OpenSSLRSADNSCryptoKeyEngine::hashSizeToKind
    - OpenSSLRSADNSCryptoKeyEngine::hash
    - get
    - string::length
    - length
    - data
    - EVP_MD_CTX_new
    - Logging::Logger::error
    linkageType: ''
    returnType: bool
    signature: bool OpenSSLRSADNSCryptoKeyEngine::verify(const std::string& message,
      const std::string& signature) const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: OpenSSLRSADNSCryptoKeyEngine::getKeyParamModulus
      Src: /src/pdns/pdns/opensslsigners.cc:791,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::getKeyParamPublicExponent
      Src: /src/pdns/pdns/opensslsigners.cc:792,1
    - Dst: BigNum::get
      Src: /src/pdns/pdns/opensslsigners.cc:795,1
    - Dst: BigNum::get
      Src: /src/pdns/pdns/opensslsigners.cc:796,1
    - Dst: RSA_get0_key
      Src: /src/pdns/pdns/opensslsigners.cc:801,1
    - Dst: get
      Src: /src/pdns/pdns/opensslsigners.cc:801,1
    - Dst: std::string::resize
      Src: /src/pdns/pdns/opensslsigners.cc:806,1
    - Dst: std::max
      Src: /src/pdns/pdns/opensslsigners.cc:806,1
    - Dst: BN_num_bytes
      Src: /src/pdns/pdns/opensslsigners.cc:806,1
    - Dst: BN_num_bytes
      Src: /src/pdns/pdns/opensslsigners.cc:806,1
    - Dst: BN_bn2bin
      Src: /src/pdns/pdns/opensslsigners.cc:809,1
    - Dst: reinterpret_cast<unsigned char*>
      Src: /src/pdns/pdns/opensslsigners.cc:809,1
    - Dst: std::string::at
      Src: /src/pdns/pdns/opensslsigners.cc:809,1
    - Dst: string::assign
      Src: /src/pdns/pdns/opensslsigners.cc:811,1
    - Dst: string::assign
      Src: /src/pdns/pdns/opensslsigners.cc:814,1
    - Dst: htons
      Src: /src/pdns/pdns/opensslsigners.cc:816,1
    - Dst: string::append
      Src: /src/pdns/pdns/opensslsigners.cc:817,1
    - Dst: string::append
      Src: /src/pdns/pdns/opensslsigners.cc:819,1
    - Dst: std::string::at
      Src: /src/pdns/pdns/opensslsigners.cc:819,1
    - Dst: BN_bn2bin
      Src: /src/pdns/pdns/opensslsigners.cc:822,1
    - Dst: reinterpret_cast<unsigned char*>
      Src: /src/pdns/pdns/opensslsigners.cc:822,1
    - Dst: std::string::at
      Src: /src/pdns/pdns/opensslsigners.cc:822,1
    - Dst: string::append
      Src: /src/pdns/pdns/opensslsigners.cc:823,1
    - Dst: std::string::at
      Src: /src/pdns/pdns/opensslsigners.cc:823,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 826
      start: 787
    functionDepth: 1
    functionLinenumber: 787
    functionLinenumberEnd: 826
    functionName: OpenSSLRSADNSCryptoKeyEngine::getPublicKeyString
    functionSourceFile: /src/pdns/pdns/opensslsigners.cc
    functionUses: 0
    functionsReached:
    - std::string::at
    - string::assign
    - BN_num_bytes
    - string::append
    - OpenSSLRSADNSCryptoKeyEngine::getKeyParamPublicExponent
    - get
    - BN_bn2bin
    - reinterpret_cast<unsigned char*>
    - std::string::resize
    - RSA_get0_key
    - std::max
    - OpenSSLRSADNSCryptoKeyEngine::getKeyParamModulus
    - BigNum::get
    - htons
    linkageType: ''
    returnType: std::string
    signature: std::string OpenSSLRSADNSCryptoKeyEngine::getPublicKeyString() const
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: mapToBN
      Src: /src/pdns/pdns/opensslsigners.cc:830,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/opensslsigners.cc:830,1
    - Dst: mapToBN
      Src: /src/pdns/pdns/opensslsigners.cc:831,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/opensslsigners.cc:831,1
    - Dst: mapToBN
      Src: /src/pdns/pdns/opensslsigners.cc:832,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/opensslsigners.cc:832,1
    - Dst: mapToBN
      Src: /src/pdns/pdns/opensslsigners.cc:834,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/opensslsigners.cc:834,1
    - Dst: mapToBN
      Src: /src/pdns/pdns/opensslsigners.cc:835,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/opensslsigners.cc:835,1
    - Dst: mapToBN
      Src: /src/pdns/pdns/opensslsigners.cc:837,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/opensslsigners.cc:837,1
    - Dst: mapToBN
      Src: /src/pdns/pdns/opensslsigners.cc:838,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/opensslsigners.cc:838,1
    - Dst: mapToBN
      Src: /src/pdns/pdns/opensslsigners.cc:839,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/opensslsigners.cc:839,1
    - Dst: pdns::checked_stoi_into
      Src: /src/pdns/pdns/opensslsigners.cc:841,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/opensslsigners.cc:844,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/opensslsigners.cc:844,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/opensslsigners.cc:844,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/opensslsigners.cc:844,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::makeKeyParams
      Src: /src/pdns/pdns/opensslsigners.cc:848,1
    - Dst: auto::get
      Src: /src/pdns/pdns/opensslsigners.cc:848,1
    - Dst: auto::get
      Src: /src/pdns/pdns/opensslsigners.cc:848,1
    - Dst: auto::get
      Src: /src/pdns/pdns/opensslsigners.cc:848,1
    - Dst: auto::get
      Src: /src/pdns/pdns/opensslsigners.cc:848,1
    - Dst: auto::get
      Src: /src/pdns/pdns/opensslsigners.cc:848,1
    - Dst: auto::get
      Src: /src/pdns/pdns/opensslsigners.cc:848,1
    - Dst: auto::get
      Src: /src/pdns/pdns/opensslsigners.cc:848,1
    - Dst: auto::get
      Src: /src/pdns/pdns/opensslsigners.cc:848,1
    - Dst: KeyContext
      Src: /src/pdns/pdns/opensslsigners.cc:850,1
    - Dst: EVP_PKEY_CTX_new_from_name
      Src: /src/pdns/pdns/opensslsigners.cc:850,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/opensslsigners.cc:852,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/opensslsigners.cc:852,1
    - Dst: EVP_PKEY_fromdata_init
      Src: /src/pdns/pdns/opensslsigners.cc:855,1
    - Dst: auto::get
      Src: /src/pdns/pdns/opensslsigners.cc:855,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/opensslsigners.cc:856,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/opensslsigners.cc:856,1
    - Dst: EVP_PKEY_fromdata
      Src: /src/pdns/pdns/opensslsigners.cc:860,1
    - Dst: auto::get
      Src: /src/pdns/pdns/opensslsigners.cc:860,1
    - Dst: auto::get
      Src: /src/pdns/pdns/opensslsigners.cc:860,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/opensslsigners.cc:861,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/opensslsigners.cc:861,1
    - Dst: reset
      Src: /src/pdns/pdns/opensslsigners.cc:864,1
    - Dst: Key
      Src: /src/pdns/pdns/opensslsigners.cc:866,1
    - Dst: RSA_new
      Src: /src/pdns/pdns/opensslsigners.cc:866,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/opensslsigners.cc:868,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/opensslsigners.cc:868,1
    - Dst: RSA_set0_key
      Src: /src/pdns/pdns/opensslsigners.cc:872,1
    - Dst: auto::get
      Src: /src/pdns/pdns/opensslsigners.cc:872,1
    - Dst: auto::release
      Src: /src/pdns/pdns/opensslsigners.cc:872,1
    - Dst: auto::release
      Src: /src/pdns/pdns/opensslsigners.cc:872,1
    - Dst: auto::release
      Src: /src/pdns/pdns/opensslsigners.cc:872,1
    - Dst: RSA_set0_factors
      Src: /src/pdns/pdns/opensslsigners.cc:873,1
    - Dst: auto::get
      Src: /src/pdns/pdns/opensslsigners.cc:873,1
    - Dst: auto::release
      Src: /src/pdns/pdns/opensslsigners.cc:873,1
    - Dst: auto::release
      Src: /src/pdns/pdns/opensslsigners.cc:873,1
    - Dst: RSA_set0_crt_params
      Src: /src/pdns/pdns/opensslsigners.cc:874,1
    - Dst: auto::get
      Src: /src/pdns/pdns/opensslsigners.cc:874,1
    - Dst: auto::release
      Src: /src/pdns/pdns/opensslsigners.cc:874,1
    - Dst: auto::release
      Src: /src/pdns/pdns/opensslsigners.cc:874,1
    - Dst: auto::release
      Src: /src/pdns/pdns/opensslsigners.cc:874,1
    - Dst: std::move
      Src: /src/pdns/pdns/opensslsigners.cc:876,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 22
    argCount: 2
    argNames:
    - ' drc'
    - ' stormap'
    argTypes:
    - DNSKEYRecordContent
    - std::map<std::string, std::string>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 878
      start: 828
    functionDepth: 0
    functionLinenumber: 828
    functionLinenumberEnd: 878
    functionName: OpenSSLRSADNSCryptoKeyEngine::fromISCMap
    functionSourceFile: /src/pdns/pdns/opensslsigners.cc
    functionUses: 0
    functionsReached:
    - std::to_string
    - runtime_error
    - OpenSSLRSADNSCryptoKeyEngine::makeKeyParams
    - mapToBN
    - reset
    - EVP_PKEY_fromdata_init
    - OpenSSLRSADNSCryptoKeyEngine::getName
    - EVP_PKEY_fromdata
    - RSA_new
    - pdns::checked_stoi_into
    - auto::get
    - Key
    - RSA_set0_crt_params
    - EVP_PKEY_CTX_new_from_name
    - std::move
    - RSA_set0_factors
    - RSA_set0_key
    - KeyContext
    - auto::release
    - Logging::Logger::error
    linkageType: ''
    returnType: void
    signature: void OpenSSLRSADNSCryptoKeyEngine::fromISCMap(DNSKEYRecordContent&
      drc, std::map<std::string, std::string>& stormap)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: length
      Src: /src/pdns/pdns/opensslsigners.cc:923,1
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/opensslsigners.cc:926,1
    - Dst: c_str
      Src: /src/pdns/pdns/opensslsigners.cc:926,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/opensslsigners.cc:929,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/opensslsigners.cc:929,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/opensslsigners.cc:935,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/opensslsigners.cc:935,1
    - Dst: substr
      Src: /src/pdns/pdns/opensslsigners.cc:937,1
    - Dst: substr
      Src: /src/pdns/pdns/opensslsigners.cc:938,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/opensslsigners.cc:942,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/opensslsigners.cc:942,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/opensslsigners.cc:944,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/opensslsigners.cc:946,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/opensslsigners.cc:946,1
    - Dst: substr
      Src: /src/pdns/pdns/opensslsigners.cc:948,1
    - Dst: substr
      Src: /src/pdns/pdns/opensslsigners.cc:949,1
    - Dst: BigNum
      Src: /src/pdns/pdns/opensslsigners.cc:953,1
    - Dst: BN_bin2bn
      Src: /src/pdns/pdns/opensslsigners.cc:953,1
    - Dst: reinterpret_cast<unsigned char*>
      Src: /src/pdns/pdns/opensslsigners.cc:953,1
    - Dst: const_cast<char*>
      Src: /src/pdns/pdns/opensslsigners.cc:953,1
    - Dst: string::c_str
      Src: /src/pdns/pdns/opensslsigners.cc:953,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/opensslsigners.cc:953,1
    - Dst: string::length
      Src: /src/pdns/pdns/opensslsigners.cc:953,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/opensslsigners.cc:955,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/opensslsigners.cc:955,1
    - Dst: BigNum
      Src: /src/pdns/pdns/opensslsigners.cc:959,1
    - Dst: BN_bin2bn
      Src: /src/pdns/pdns/opensslsigners.cc:959,1
    - Dst: reinterpret_cast<unsigned char*>
      Src: /src/pdns/pdns/opensslsigners.cc:959,1
    - Dst: const_cast<char*>
      Src: /src/pdns/pdns/opensslsigners.cc:959,1
    - Dst: string::c_str
      Src: /src/pdns/pdns/opensslsigners.cc:959,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/opensslsigners.cc:959,1
    - Dst: string::length
      Src: /src/pdns/pdns/opensslsigners.cc:959,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/opensslsigners.cc:961,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/opensslsigners.cc:961,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::makeKeyParams
      Src: /src/pdns/pdns/opensslsigners.cc:965,1
    - Dst: auto::get
      Src: /src/pdns/pdns/opensslsigners.cc:965,1
    - Dst: auto::get
      Src: /src/pdns/pdns/opensslsigners.cc:965,1
    - Dst: KeyContext
      Src: /src/pdns/pdns/opensslsigners.cc:967,1
    - Dst: EVP_PKEY_CTX_new_from_name
      Src: /src/pdns/pdns/opensslsigners.cc:967,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/opensslsigners.cc:969,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/opensslsigners.cc:969,1
    - Dst: EVP_PKEY_fromdata_init
      Src: /src/pdns/pdns/opensslsigners.cc:972,1
    - Dst: auto::get
      Src: /src/pdns/pdns/opensslsigners.cc:972,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/opensslsigners.cc:973,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/opensslsigners.cc:973,1
    - Dst: EVP_PKEY_fromdata
      Src: /src/pdns/pdns/opensslsigners.cc:977,1
    - Dst: auto::get
      Src: /src/pdns/pdns/opensslsigners.cc:977,1
    - Dst: auto::get
      Src: /src/pdns/pdns/opensslsigners.cc:977,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/opensslsigners.cc:978,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/opensslsigners.cc:978,1
    - Dst: reset
      Src: /src/pdns/pdns/opensslsigners.cc:981,1
    - Dst: Key
      Src: /src/pdns/pdns/opensslsigners.cc:983,1
    - Dst: RSA_new
      Src: /src/pdns/pdns/opensslsigners.cc:983,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/opensslsigners.cc:985,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/opensslsigners.cc:985,1
    - Dst: RSA_set0_key
      Src: /src/pdns/pdns/opensslsigners.cc:988,1
    - Dst: auto::get
      Src: /src/pdns/pdns/opensslsigners.cc:988,1
    - Dst: auto::release
      Src: /src/pdns/pdns/opensslsigners.cc:988,1
    - Dst: auto::release
      Src: /src/pdns/pdns/opensslsigners.cc:988,1
    - Dst: std::move
      Src: /src/pdns/pdns/opensslsigners.cc:989,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 41
    argCount: 1
    argNames:
    - ' content'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 991
      start: 919
    functionDepth: 0
    functionLinenumber: 919
    functionLinenumberEnd: 991
    functionName: OpenSSLRSADNSCryptoKeyEngine::fromPublicKeyString
    functionSourceFile: /src/pdns/pdns/opensslsigners.cc
    functionUses: 0
    functionsReached:
    - runtime_error
    - OpenSSLRSADNSCryptoKeyEngine::makeKeyParams
    - static_cast<int>
    - reset
    - static_cast<size_t>
    - const_cast<char*>
    - EVP_PKEY_fromdata_init
    - OpenSSLRSADNSCryptoKeyEngine::getName
    - reinterpret_cast<unsigned char*>
    - reinterpret_cast<const unsigned char*>
    - substr
    - EVP_PKEY_fromdata
    - RSA_new
    - BN_bin2bn
    - c_str
    - string::c_str
    - auto::get
    - BigNum
    - Key
    - string::length
    - EVP_PKEY_CTX_new_from_name
    - length
    - std::move
    - RSA_set0_key
    - KeyContext
    - auto::release
    - Logging::Logger::error
    linkageType: ''
    returnType: void
    signature: void OpenSSLRSADNSCryptoKeyEngine::fromPublicKeyString(const std::string&
      content)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 999
      start: 999
    functionDepth: 0
    functionLinenumber: 999
    functionLinenumberEnd: 999
    functionName: OpenSSLECDSADNSCryptoKeyEngine::getName
    functionSourceFile: /src/pdns/pdns/opensslsigners.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: string
    signature: string getName() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: make_unique<OpenSSLECDSADNSCryptoKeyEngine>
      Src: /src/pdns/pdns/opensslsigners.cc:1047,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - slog
    - algorithm
    argTypes:
    - Logr::log_t
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1048
      start: 1045
    functionDepth: 0
    functionLinenumber: 1045
    functionLinenumberEnd: 1048
    functionName: OpenSSLECDSADNSCryptoKeyEngine::maker
    functionSourceFile: /src/pdns/pdns/opensslsigners.cc
    functionUses: 0
    functionsReached:
    - make_unique<OpenSSLECDSADNSCryptoKeyEngine>
    linkageType: ''
    returnType: std::unique_ptr<DNSCryptoKeyEngine>
    signature: std::unique_ptr<DNSCryptoKeyEngine> maker(Logr::log_t slog, unsigned
      int algorithm)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1085
      start: 1082
    functionDepth: 0
    functionLinenumber: 1082
    functionLinenumberEnd: 1085
    functionName: OpenSSLECDSADNSCryptoKeyEngine::getBits
    functionSourceFile: /src/pdns/pdns/opensslsigners.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int OpenSSLECDSADNSCryptoKeyEngine::getBits() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: d_eckey
      Src: /src/pdns/pdns/opensslsigners.cc:1091,1
    - Dst: Key
      Src: /src/pdns/pdns/opensslsigners.cc:1091,1
    - Dst: EC_KEY_new
      Src: /src/pdns/pdns/opensslsigners.cc:1091,1
    - Dst: RAND_status
      Src: /src/pdns/pdns/opensslsigners.cc:1094,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/opensslsigners.cc:1096,1
    - Dst: OpenSSLECDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/opensslsigners.cc:1096,1
    - Dst: if
      Src: /src/pdns/pdns/opensslsigners.cc:1100,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/opensslsigners.cc:1101,1
    - Dst: OpenSSLECDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/opensslsigners.cc:1101,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - slog
    - algo
    argTypes:
    - Logr::log_t
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1111
      start: 1087
    functionDepth: 0
    functionLinenumber: 1087
    functionLinenumberEnd: 1111
    functionName: OpenSSLECDSADNSCryptoKeyEngine::OpenSSLECDSADNSCryptoKeyEngine
    functionSourceFile: /src/pdns/pdns/opensslsigners.cc
    functionUses: 0
    functionsReached:
    - runtime_error
    - d_eckey
    - OpenSSLECDSADNSCryptoKeyEngine::getName
    - if
    - EC_KEY_new
    - Key
    - RAND_status
    linkageType: ''
    returnType: void
    signature: void OpenSSLECDSADNSCryptoKeyEngine::OpenSSLECDSADNSCryptoKeyEngine(Logr::log_t
      slog, unsigned int algo)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<unsigned int>
      Src: /src/pdns/pdns/opensslsigners.cc:1136,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/opensslsigners.cc:1137,1
    - Dst: OpenSSLECDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/opensslsigners.cc:1137,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/opensslsigners.cc:1137,1
    - Dst: EVP_PKEY_Q_keygen
      Src: /src/pdns/pdns/opensslsigners.cc:1142,1
    - Dst: c_str
      Src: /src/pdns/pdns/opensslsigners.cc:1142,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/opensslsigners.cc:1144,1
    - Dst: OpenSSLECDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/opensslsigners.cc:1144,1
    - Dst: reset
      Src: /src/pdns/pdns/opensslsigners.cc:1147,1
    - Dst: EC_KEY_generate_key
      Src: /src/pdns/pdns/opensslsigners.cc:1149,1
    - Dst: get
      Src: /src/pdns/pdns/opensslsigners.cc:1149,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/opensslsigners.cc:1151,1
    - Dst: OpenSSLECDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/opensslsigners.cc:1151,1
    - Dst: EC_KEY_set_asn1_flag
      Src: /src/pdns/pdns/opensslsigners.cc:1154,1
    - Dst: get
      Src: /src/pdns/pdns/opensslsigners.cc:1154,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 12
    argCount: 1
    argNames:
    - bits
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1156
      start: 1134
    functionDepth: 0
    functionLinenumber: 1134
    functionLinenumberEnd: 1156
    functionName: OpenSSLECDSADNSCryptoKeyEngine::create
    functionSourceFile: /src/pdns/pdns/opensslsigners.cc
    functionUses: 0
    functionsReached:
    - EVP_PKEY_Q_keygen
    - reset
    - std::to_string
    - runtime_error
    - EC_KEY_set_asn1_flag
    - OpenSSLECDSADNSCryptoKeyEngine::getName
    - get
    - static_cast<unsigned int>
    - c_str
    - Logging::Logger::error
    - EC_KEY_generate_key
    linkageType: ''
    returnType: void
    signature: void OpenSSLECDSADNSCryptoKeyEngine::create(unsigned int bits)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: PEM_read_PrivateKey
      Src: /src/pdns/pdns/opensslsigners.cc:1164,1
    - Dst: std::optional<std::reference_wrapper<const std::string>>::has_value
      Src: /src/pdns/pdns/opensslsigners.cc:1165,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/opensslsigners.cc:1166,1
    - Dst: OpenSSLECDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/opensslsigners.cc:1166,1
    - Dst: std::optional<std::reference_wrapper<const std::string>>::get
      Src: /src/pdns/pdns/opensslsigners.cc:1166,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/opensslsigners.cc:1169,1
    - Dst: OpenSSLECDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/opensslsigners.cc:1169,1
    - Dst: reset
      Src: /src/pdns/pdns/opensslsigners.cc:1172,1
    - Dst: Key
      Src: /src/pdns/pdns/opensslsigners.cc:1174,1
    - Dst: PEM_read_ECPrivateKey
      Src: /src/pdns/pdns/opensslsigners.cc:1174,1
    - Dst: std::optional<std::reference_wrapper<const std::string>>::has_value
      Src: /src/pdns/pdns/opensslsigners.cc:1176,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/opensslsigners.cc:1177,1
    - Dst: OpenSSLECDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/opensslsigners.cc:1177,1
    - Dst: std::optional<std::reference_wrapper<const std::string>>::get
      Src: /src/pdns/pdns/opensslsigners.cc:1177,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/opensslsigners.cc:1180,1
    - Dst: OpenSSLECDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/opensslsigners.cc:1180,1
    - Dst: EC_KEY_set_group
      Src: /src/pdns/pdns/opensslsigners.cc:1183,1
    - Dst: get
      Src: /src/pdns/pdns/opensslsigners.cc:1183,1
    - Dst: get
      Src: /src/pdns/pdns/opensslsigners.cc:1183,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/opensslsigners.cc:1185,1
    - Dst: OpenSSLECDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/opensslsigners.cc:1185,1
    - Dst: EC_KEY_get0_private_key
      Src: /src/pdns/pdns/opensslsigners.cc:1188,1
    - Dst: get
      Src: /src/pdns/pdns/opensslsigners.cc:1188,1
    - Dst: Point
      Src: /src/pdns/pdns/opensslsigners.cc:1190,1
    - Dst: EC_POINT_new
      Src: /src/pdns/pdns/opensslsigners.cc:1190,1
    - Dst: get
      Src: /src/pdns/pdns/opensslsigners.cc:1190,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/opensslsigners.cc:1192,1
    - Dst: OpenSSLECDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/opensslsigners.cc:1192,1
    - Dst: EC_POINT_mul
      Src: /src/pdns/pdns/opensslsigners.cc:1195,1
    - Dst: get
      Src: /src/pdns/pdns/opensslsigners.cc:1195,1
    - Dst: auto::get
      Src: /src/pdns/pdns/opensslsigners.cc:1195,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/opensslsigners.cc:1197,1
    - Dst: OpenSSLECDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/opensslsigners.cc:1197,1
    - Dst: EC_KEY_set_public_key
      Src: /src/pdns/pdns/opensslsigners.cc:1200,1
    - Dst: get
      Src: /src/pdns/pdns/opensslsigners.cc:1200,1
    - Dst: auto::get
      Src: /src/pdns/pdns/opensslsigners.cc:1200,1
    - Dst: ERR_print_errors_fp
      Src: /src/pdns/pdns/opensslsigners.cc:1202,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/opensslsigners.cc:1203,1
    - Dst: OpenSSLECDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/opensslsigners.cc:1203,1
    - Dst: EC_KEY_set_asn1_flag
      Src: /src/pdns/pdns/opensslsigners.cc:1206,1
    - Dst: get
      Src: /src/pdns/pdns/opensslsigners.cc:1206,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 32
    argCount: 3
    argNames:
    - ' drc'
    - ' inputFile'
    - filename
    argTypes:
    - DNSKEYRecordContent
    - std::FILE
    - std::optional<std::reference_wrapper<const std::string>>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1208
      start: 1158
    functionDepth: 0
    functionLinenumber: 1158
    functionLinenumberEnd: 1208
    functionName: OpenSSLECDSADNSCryptoKeyEngine::createFromPEMFile
    functionSourceFile: /src/pdns/pdns/opensslsigners.cc
    functionUses: 0
    functionsReached:
    - runtime_error
    - std::optional<std::reference_wrapper<const std::string>>::has_value
    - EC_KEY_set_asn1_flag
    - EC_KEY_set_group
    - reset
    - ERR_print_errors_fp
    - std::optional<std::reference_wrapper<const std::string>>::get
    - EC_KEY_set_public_key
    - auto::get
    - OpenSSLECDSADNSCryptoKeyEngine::getName
    - PEM_read_PrivateKey
    - get
    - EC_KEY_get0_private_key
    - EC_POINT_new
    - Key
    - EC_POINT_mul
    - PEM_read_ECPrivateKey
    - Point
    - Logging::Logger::error
    linkageType: ''
    returnType: void
    signature: void OpenSSLECDSADNSCryptoKeyEngine::createFromPEMFile(DNSKEYRecordContent&
      drc, std::FILE& inputFile, std::optional<std::reference_wrapper<const std::string>>
      filename)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PEM_write_PrivateKey
      Src: /src/pdns/pdns/opensslsigners.cc:1213,1
    - Dst: get
      Src: /src/pdns/pdns/opensslsigners.cc:1213,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/opensslsigners.cc:1214,1
    - Dst: OpenSSLECDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/opensslsigners.cc:1214,1
    - Dst: PEM_write_ECPrivateKey
      Src: /src/pdns/pdns/opensslsigners.cc:1217,1
    - Dst: get
      Src: /src/pdns/pdns/opensslsigners.cc:1217,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/opensslsigners.cc:1219,1
    - Dst: OpenSSLECDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/opensslsigners.cc:1219,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 7
    argCount: 1
    argNames:
    - ' outputFile'
    argTypes:
    - std::FILE
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1222
      start: 1210
    functionDepth: 0
    functionLinenumber: 1210
    functionLinenumberEnd: 1222
    functionName: OpenSSLECDSADNSCryptoKeyEngine::convertToPEMFile
    functionSourceFile: /src/pdns/pdns/opensslsigners.cc
    functionUses: 0
    functionsReached:
    - runtime_error
    - OpenSSLECDSADNSCryptoKeyEngine::getName
    - get
    - PEM_write_PrivateKey
    - PEM_write_ECPrivateKey
    - Logging::Logger::error
    linkageType: ''
    returnType: void
    signature: void OpenSSLECDSADNSCryptoKeyEngine::convertToPEMFile(std::FILE& outputFile)
      const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: EVP_PKEY_get_bn_param
      Src: /src/pdns/pdns/opensslsigners.cc:1228,1
    - Dst: get
      Src: /src/pdns/pdns/opensslsigners.cc:1228,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/opensslsigners.cc:1229,1
    - Dst: OpenSSLECDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/opensslsigners.cc:1229,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1232
      start: 1225
    functionDepth: 0
    functionLinenumber: 1225
    functionLinenumberEnd: 1232
    functionName: OpenSSLECDSADNSCryptoKeyEngine::getPrivateKey
    functionSourceFile: /src/pdns/pdns/opensslsigners.cc
    functionUses: 0
    functionsReached:
    - EVP_PKEY_get_bn_param
    - Logging::Logger::error
    - OpenSSLECDSADNSCryptoKeyEngine::getName
    - get
    linkageType: ''
    returnType: auto
    signature: auto OpenSSLECDSADNSCryptoKeyEngine::getPrivateKey() const -> BigNum
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: storvector_t::emplace_back
      Src: /src/pdns/pdns/opensslsigners.cc:1250,1
    - Dst: OpenSSLECDSADNSCryptoKeyEngine::getPrivateKey
      Src: /src/pdns/pdns/opensslsigners.cc:1253,1
    - Dst: std::string::resize
      Src: /src/pdns/pdns/opensslsigners.cc:1256,1
    - Dst: BN_num_bytes
      Src: /src/pdns/pdns/opensslsigners.cc:1256,1
    - Dst: auto::get
      Src: /src/pdns/pdns/opensslsigners.cc:1256,1
    - Dst: BN_bn2bin
      Src: /src/pdns/pdns/opensslsigners.cc:1258,1
    - Dst: auto::get
      Src: /src/pdns/pdns/opensslsigners.cc:1258,1
    - Dst: reinterpret_cast<unsigned char*>
      Src: /src/pdns/pdns/opensslsigners.cc:1258,1
    - Dst: std::string::data
      Src: /src/pdns/pdns/opensslsigners.cc:1258,1
    - Dst: std::string::resize
      Src: /src/pdns/pdns/opensslsigners.cc:1260,1
    - Dst: std::string::append
      Src: /src/pdns/pdns/opensslsigners.cc:1264,1
    - Dst: storvector_t::emplace_back
      Src: /src/pdns/pdns/opensslsigners.cc:1267,1
    - Dst: EC_KEY_get0_private_key
      Src: /src/pdns/pdns/opensslsigners.cc:1270,1
    - Dst: get
      Src: /src/pdns/pdns/opensslsigners.cc:1270,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/opensslsigners.cc:1272,1
    - Dst: OpenSSLECDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/opensslsigners.cc:1272,1
    - Dst: std::string::resize
      Src: /src/pdns/pdns/opensslsigners.cc:1276,1
    - Dst: BN_num_bytes
      Src: /src/pdns/pdns/opensslsigners.cc:1276,1
    - Dst: BN_bn2bin
      Src: /src/pdns/pdns/opensslsigners.cc:1277,1
    - Dst: reinterpret_cast<unsigned char*>
      Src: /src/pdns/pdns/opensslsigners.cc:1277,1
    - Dst: std::string::at
      Src: /src/pdns/pdns/opensslsigners.cc:1277,1
    - Dst: string::append
      Src: /src/pdns/pdns/opensslsigners.cc:1281,1
    - Dst: storvector_t::emplace_back
      Src: /src/pdns/pdns/opensslsigners.cc:1284,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 27
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1288
      start: 1235
    functionDepth: 1
    functionLinenumber: 1235
    functionLinenumberEnd: 1288
    functionName: OpenSSLECDSADNSCryptoKeyEngine::convertToISCVector
    functionSourceFile: /src/pdns/pdns/opensslsigners.cc
    functionUses: 0
    functionsReached:
    - std::string::at
    - storvector_t::emplace_back
    - BN_num_bytes
    - auto::get
    - std::string::append
    - string::append
    - runtime_error
    - std::string::data
    - OpenSSLECDSADNSCryptoKeyEngine::getName
    - EC_KEY_get0_private_key
    - BN_bn2bin
    - reinterpret_cast<unsigned char*>
    - std::string::resize
    - get
    - OpenSSLECDSADNSCryptoKeyEngine::getPrivateKey
    linkageType: ''
    returnType: DNSCryptoKeyEngine::storvector_t
    signature: DNSCryptoKeyEngine::storvector_t OpenSSLECDSADNSCryptoKeyEngine::convertToISCVector()
      const
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: OpenSSLECDSADNSCryptoKeyEngine::getBits
      Src: /src/pdns/pdns/opensslsigners.cc:1292,1
    - Dst: std::string::resize
      Src: /src/pdns/pdns/opensslsigners.cc:1294,1
    - Dst: SHA256
      Src: /src/pdns/pdns/opensslsigners.cc:1296,1
    - Dst: reinterpret_cast<unsigned char*>
      Src: /src/pdns/pdns/opensslsigners.cc:1296,1
    - Dst: const_cast<char*>
      Src: /src/pdns/pdns/opensslsigners.cc:1296,1
    - Dst: c_str
      Src: /src/pdns/pdns/opensslsigners.cc:1296,1
    - Dst: length
      Src: /src/pdns/pdns/opensslsigners.cc:1296,1
    - Dst: reinterpret_cast<unsigned char*>
      Src: /src/pdns/pdns/opensslsigners.cc:1296,1
    - Dst: std::string::data
      Src: /src/pdns/pdns/opensslsigners.cc:1296,1
    - Dst: OpenSSLECDSADNSCryptoKeyEngine::getBits
      Src: /src/pdns/pdns/opensslsigners.cc:1300,1
    - Dst: std::string::resize
      Src: /src/pdns/pdns/opensslsigners.cc:1302,1
    - Dst: SHA384
      Src: /src/pdns/pdns/opensslsigners.cc:1304,1
    - Dst: reinterpret_cast<unsigned char*>
      Src: /src/pdns/pdns/opensslsigners.cc:1304,1
    - Dst: const_cast<char*>
      Src: /src/pdns/pdns/opensslsigners.cc:1304,1
    - Dst: c_str
      Src: /src/pdns/pdns/opensslsigners.cc:1304,1
    - Dst: length
      Src: /src/pdns/pdns/opensslsigners.cc:1304,1
    - Dst: reinterpret_cast<unsigned char*>
      Src: /src/pdns/pdns/opensslsigners.cc:1304,1
    - Dst: std::string::data
      Src: /src/pdns/pdns/opensslsigners.cc:1304,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/opensslsigners.cc:1308,1
    - Dst: OpenSSLECDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/opensslsigners.cc:1308,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/opensslsigners.cc:1308,1
    - Dst: OpenSSLECDSADNSCryptoKeyEngine::getBits
      Src: /src/pdns/pdns/opensslsigners.cc:1308,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - ' message'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1309
      start: 1290
    functionDepth: 1
    functionLinenumber: 1290
    functionLinenumberEnd: 1309
    functionName: OpenSSLECDSADNSCryptoKeyEngine::hash
    functionSourceFile: /src/pdns/pdns/opensslsigners.cc
    functionUses: 0
    functionsReached:
    - length
    - const_cast<char*>
    - std::to_string
    - runtime_error
    - std::string::data
    - SHA384
    - OpenSSLECDSADNSCryptoKeyEngine::getName
    - reinterpret_cast<unsigned char*>
    - std::string::resize
    - SHA256
    - c_str
    - OpenSSLECDSADNSCryptoKeyEngine::getBits
    linkageType: ''
    returnType: std::string
    signature: std::string OpenSSLECDSADNSCryptoKeyEngine::hash(const std::string&
      message) const
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: EVP_sha256
      Src: /src/pdns/pdns/opensslsigners.cc:1317,1
    - Dst: EVP_sha384
      Src: /src/pdns/pdns/opensslsigners.cc:1320,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/opensslsigners.cc:1323,1
    - Dst: OpenSSLECDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/opensslsigners.cc:1323,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/opensslsigners.cc:1323,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/opensslsigners.cc:1327,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/opensslsigners.cc:1327,1
    - Dst: OpenSSLECDSADNSCryptoKeyEngine::hashSize
      Src: /src/pdns/pdns/opensslsigners.cc:1327,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1331
      start: 1311
    functionDepth: 0
    functionLinenumber: 1311
    functionLinenumberEnd: 1331
    functionName: OpenSSLECDSADNSCryptoKeyEngine::hasher
    functionSourceFile: /src/pdns/pdns/opensslsigners.cc
    functionUses: 0
    functionsReached:
    - EVP_sha384
    - std::to_string
    - std::runtime_error
    - runtime_error
    - OpenSSLECDSADNSCryptoKeyEngine::getName
    - EVP_sha256
    - OpenSSLECDSADNSCryptoKeyEngine::hashSize
    linkageType: ''
    returnType: EVP_MD
    signature: EVP_MD * OpenSSLECDSADNSCryptoKeyEngine::hasher() const
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: runtime_error
      Src: /src/pdns/pdns/opensslsigners.cc:1341,1
    - Dst: OpenSSLECDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/opensslsigners.cc:1341,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/opensslsigners.cc:1341,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1343
      start: 1333
    functionDepth: 0
    functionLinenumber: 1333
    functionLinenumberEnd: 1343
    functionName: OpenSSLECDSADNSCryptoKeyEngine::hashSize
    functionSourceFile: /src/pdns/pdns/opensslsigners.cc
    functionUses: 1
    functionsReached:
    - runtime_error
    - std::to_string
    - OpenSSLECDSADNSCryptoKeyEngine::getName
    linkageType: ''
    returnType: std::size_t
    signature: std::size_t OpenSSLECDSADNSCryptoKeyEngine::hashSize() const
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: MessageDigestContext
      Src: /src/pdns/pdns/opensslsigners.cc:1348,1
    - Dst: EVP_MD_CTX_new
      Src: /src/pdns/pdns/opensslsigners.cc:1348,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/opensslsigners.cc:1350,1
    - Dst: OpenSSLECDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/opensslsigners.cc:1350,1
    - Dst: EVP_DigestSignInit
      Src: /src/pdns/pdns/opensslsigners.cc:1353,1
    - Dst: auto::get
      Src: /src/pdns/pdns/opensslsigners.cc:1353,1
    - Dst: OpenSSLECDSADNSCryptoKeyEngine::hasher
      Src: /src/pdns/pdns/opensslsigners.cc:1353,1
    - Dst: get
      Src: /src/pdns/pdns/opensslsigners.cc:1353,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/opensslsigners.cc:1354,1
    - Dst: OpenSSLECDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/opensslsigners.cc:1354,1
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/opensslsigners.cc:1360,1
    - Dst: data
      Src: /src/pdns/pdns/opensslsigners.cc:1360,1
    - Dst: EVP_DigestSign
      Src: /src/pdns/pdns/opensslsigners.cc:1361,1
    - Dst: auto::get
      Src: /src/pdns/pdns/opensslsigners.cc:1361,1
    - Dst: size
      Src: /src/pdns/pdns/opensslsigners.cc:1361,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/opensslsigners.cc:1362,1
    - Dst: OpenSSLECDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/opensslsigners.cc:1362,1
    - Dst: std::string::resize
      Src: /src/pdns/pdns/opensslsigners.cc:1366,1
    - Dst: reinterpret_cast<unsigned char*>
      Src: /src/pdns/pdns/opensslsigners.cc:1369,1
    - Dst: std::string::data
      Src: /src/pdns/pdns/opensslsigners.cc:1369,1
    - Dst: EVP_DigestSign
      Src: /src/pdns/pdns/opensslsigners.cc:1370,1
    - Dst: auto::get
      Src: /src/pdns/pdns/opensslsigners.cc:1370,1
    - Dst: size
      Src: /src/pdns/pdns/opensslsigners.cc:1370,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/opensslsigners.cc:1371,1
    - Dst: OpenSSLECDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/opensslsigners.cc:1371,1
    - Dst: std::string::resize
      Src: /src/pdns/pdns/opensslsigners.cc:1374,1
    - Dst: Signature
      Src: /src/pdns/pdns/opensslsigners.cc:1377,1
    - Dst: d2i_ECDSA_SIG
      Src: /src/pdns/pdns/opensslsigners.cc:1377,1
    - Dst: const_cast<const unsigned char**>
      Src: /src/pdns/pdns/opensslsigners.cc:1377,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/opensslsigners.cc:1379,1
    - Dst: OpenSSLECDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/opensslsigners.cc:1379,1
    - Dst: OpenSSLECDSADNSCryptoKeyEngine::hash
      Src: /src/pdns/pdns/opensslsigners.cc:1382,1
    - Dst: Signature
      Src: /src/pdns/pdns/opensslsigners.cc:1384,1
    - Dst: ECDSA_do_sign
      Src: /src/pdns/pdns/opensslsigners.cc:1384,1
    - Dst: string::c_str
      Src: /src/pdns/pdns/opensslsigners.cc:1384,1
    - Dst: string::length
      Src: /src/pdns/pdns/opensslsigners.cc:1384,1
    - Dst: get
      Src: /src/pdns/pdns/opensslsigners.cc:1384,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/opensslsigners.cc:1386,1
    - Dst: OpenSSLECDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/opensslsigners.cc:1386,1
    - Dst: std::string::resize
      Src: /src/pdns/pdns/opensslsigners.cc:1392,1
    - Dst: ECDSA_SIG_get0
      Src: /src/pdns/pdns/opensslsigners.cc:1396,1
    - Dst: auto::get
      Src: /src/pdns/pdns/opensslsigners.cc:1396,1
    - Dst: BN_bn2bin
      Src: /src/pdns/pdns/opensslsigners.cc:1398,1
    - Dst: reinterpret_cast<unsigned char*>
      Src: /src/pdns/pdns/opensslsigners.cc:1398,1
    - Dst: std::string::at
      Src: /src/pdns/pdns/opensslsigners.cc:1398,1
    - Dst: string::append
      Src: /src/pdns/pdns/opensslsigners.cc:1400,1
    - Dst: string::append
      Src: /src/pdns/pdns/opensslsigners.cc:1402,1
    - Dst: std::string::at
      Src: /src/pdns/pdns/opensslsigners.cc:1402,1
    - Dst: BN_bn2bin
      Src: /src/pdns/pdns/opensslsigners.cc:1405,1
    - Dst: reinterpret_cast<unsigned char*>
      Src: /src/pdns/pdns/opensslsigners.cc:1405,1
    - Dst: std::string::at
      Src: /src/pdns/pdns/opensslsigners.cc:1405,1
    - Dst: string::append
      Src: /src/pdns/pdns/opensslsigners.cc:1407,1
    - Dst: string::append
      Src: /src/pdns/pdns/opensslsigners.cc:1409,1
    - Dst: std::string::at
      Src: /src/pdns/pdns/opensslsigners.cc:1409,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 33
    argCount: 1
    argNames:
    - ' message'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1412
      start: 1345
    functionDepth: 1
    functionLinenumber: 1345
    functionLinenumberEnd: 1412
    functionName: OpenSSLECDSADNSCryptoKeyEngine::sign
    functionSourceFile: /src/pdns/pdns/opensslsigners.cc
    functionUses: 0
    functionsReached:
    - runtime_error
    - EVP_DigestSign
    - const_cast<const unsigned char**>
    - BN_bn2bin
    - EVP_DigestSignInit
    - MessageDigestContext
    - OpenSSLECDSADNSCryptoKeyEngine::hasher
    - std::string::at
    - ECDSA_do_sign
    - size
    - reinterpret_cast<unsigned char*>
    - reinterpret_cast<const unsigned char*>
    - Signature
    - ECDSA_SIG_get0
    - string::c_str
    - auto::get
    - std::string::data
    - OpenSSLECDSADNSCryptoKeyEngine::getName
    - get
    - d2i_ECDSA_SIG
    - std::string::resize
    - OpenSSLECDSADNSCryptoKeyEngine::hash
    - string::length
    - string::append
    - data
    - EVP_MD_CTX_new
    - Logging::Logger::error
    linkageType: ''
    returnType: std::string
    signature: std::string OpenSSLECDSADNSCryptoKeyEngine::sign(const std::string&
      message) const
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: length
      Src: /src/pdns/pdns/opensslsigners.cc:1416,1
    - Dst: static_cast<unsigned long>
      Src: /src/pdns/pdns/opensslsigners.cc:1416,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/opensslsigners.cc:1417,1
    - Dst: OpenSSLECDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/opensslsigners.cc:1417,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/opensslsigners.cc:1417,1
    - Dst: length
      Src: /src/pdns/pdns/opensslsigners.cc:1417,1
    - Dst: const_cast<unsigned char*>
      Src: /src/pdns/pdns/opensslsigners.cc:1421,1
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/opensslsigners.cc:1421,1
    - Dst: c_str
      Src: /src/pdns/pdns/opensslsigners.cc:1421,1
    - Dst: BigNum
      Src: /src/pdns/pdns/opensslsigners.cc:1422,1
    - Dst: BN_bin2bn
      Src: /src/pdns/pdns/opensslsigners.cc:1422,1
    - Dst: BigNum
      Src: /src/pdns/pdns/opensslsigners.cc:1423,1
    - Dst: BN_bin2bn
      Src: /src/pdns/pdns/opensslsigners.cc:1423,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/opensslsigners.cc:1425,1
    - Dst: OpenSSLECDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/opensslsigners.cc:1425,1
    - Dst: Signature
      Src: /src/pdns/pdns/opensslsigners.cc:1428,1
    - Dst: ECDSA_SIG_new
      Src: /src/pdns/pdns/opensslsigners.cc:1428,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/opensslsigners.cc:1430,1
    - Dst: OpenSSLECDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/opensslsigners.cc:1430,1
    - Dst: ECDSA_SIG_set0
      Src: /src/pdns/pdns/opensslsigners.cc:1432,1
    - Dst: auto::get
      Src: /src/pdns/pdns/opensslsigners.cc:1432,1
    - Dst: auto::release
      Src: /src/pdns/pdns/opensslsigners.cc:1432,1
    - Dst: auto::release
      Src: /src/pdns/pdns/opensslsigners.cc:1432,1
    - Dst: i2d_ECDSA_SIG
      Src: /src/pdns/pdns/opensslsigners.cc:1436,1
    - Dst: auto::get
      Src: /src/pdns/pdns/opensslsigners.cc:1436,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/opensslsigners.cc:1438,1
    - Dst: OpenSSLECDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/opensslsigners.cc:1438,1
    - Dst: OPENSSL_free
      Src: /src/pdns/pdns/opensslsigners.cc:1441,1
    - Dst: MessageDigestContext
      Src: /src/pdns/pdns/opensslsigners.cc:1443,1
    - Dst: EVP_MD_CTX_new
      Src: /src/pdns/pdns/opensslsigners.cc:1443,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/opensslsigners.cc:1445,1
    - Dst: OpenSSLECDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/opensslsigners.cc:1445,1
    - Dst: EVP_DigestVerifyInit
      Src: /src/pdns/pdns/opensslsigners.cc:1448,1
    - Dst: auto::get
      Src: /src/pdns/pdns/opensslsigners.cc:1448,1
    - Dst: OpenSSLECDSADNSCryptoKeyEngine::hasher
      Src: /src/pdns/pdns/opensslsigners.cc:1448,1
    - Dst: get
      Src: /src/pdns/pdns/opensslsigners.cc:1448,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/opensslsigners.cc:1449,1
    - Dst: OpenSSLECDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/opensslsigners.cc:1449,1
    - Dst: EVP_DigestVerify
      Src: /src/pdns/pdns/opensslsigners.cc:1453,1
    - Dst: auto::get
      Src: /src/pdns/pdns/opensslsigners.cc:1453,1
    - Dst: auto::get
      Src: /src/pdns/pdns/opensslsigners.cc:1453,1
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/opensslsigners.cc:1453,1
    - Dst: data
      Src: /src/pdns/pdns/opensslsigners.cc:1453,1
    - Dst: size
      Src: /src/pdns/pdns/opensslsigners.cc:1453,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/opensslsigners.cc:1455,1
    - Dst: OpenSSLECDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/opensslsigners.cc:1455,1
    - Dst: OpenSSLECDSADNSCryptoKeyEngine::hash
      Src: /src/pdns/pdns/opensslsigners.cc:1460,1
    - Dst: ECDSA_do_verify
      Src: /src/pdns/pdns/opensslsigners.cc:1462,1
    - Dst: string::c_str
      Src: /src/pdns/pdns/opensslsigners.cc:1462,1
    - Dst: string::length
      Src: /src/pdns/pdns/opensslsigners.cc:1462,1
    - Dst: auto::get
      Src: /src/pdns/pdns/opensslsigners.cc:1462,1
    - Dst: get
      Src: /src/pdns/pdns/opensslsigners.cc:1462,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/opensslsigners.cc:1464,1
    - Dst: OpenSSLECDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/opensslsigners.cc:1464,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 30
    argCount: 2
    argNames:
    - ' message'
    - ' signature'
    argTypes:
    - std::string
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1469
      start: 1414
    functionDepth: 0
    functionLinenumber: 1414
    functionLinenumberEnd: 1469
    functionName: OpenSSLECDSADNSCryptoKeyEngine::verify
    functionSourceFile: /src/pdns/pdns/opensslsigners.cc
    functionUses: 0
    functionsReached:
    - std::to_string
    - runtime_error
    - OPENSSL_free
    - MessageDigestContext
    - OpenSSLECDSADNSCryptoKeyEngine::hasher
    - ECDSA_SIG_set0
    - ECDSA_do_verify
    - size
    - reinterpret_cast<const unsigned char*>
    - Signature
    - BN_bin2bn
    - c_str
    - string::c_str
    - auto::get
    - const_cast<unsigned char*>
    - BigNum
    - EVP_DigestVerifyInit
    - ECDSA_SIG_new
    - EVP_DigestVerify
    - OpenSSLECDSADNSCryptoKeyEngine::getName
    - get
    - OpenSSLECDSADNSCryptoKeyEngine::hash
    - string::length
    - length
    - EVP_MD_CTX_new
    - i2d_ECDSA_SIG
    - data
    - auto::release
    - static_cast<unsigned long>
    - Logging::Logger::error
    linkageType: ''
    returnType: bool
    signature: bool OpenSSLECDSADNSCryptoKeyEngine::verify(const std::string& message,
      const std::string& signature) const
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: EVP_PKEY_get_octet_string_param
      Src: /src/pdns/pdns/opensslsigners.cc:1475,1
    - Dst: get
      Src: /src/pdns/pdns/opensslsigners.cc:1475,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/opensslsigners.cc:1476,1
    - Dst: OpenSSLECDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/opensslsigners.cc:1476,1
    - Dst: std::string::resize
      Src: /src/pdns/pdns/opensslsigners.cc:1480,1
    - Dst: const_cast<unsigned char*>
      Src: /src/pdns/pdns/opensslsigners.cc:1483,1
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/opensslsigners.cc:1483,1
    - Dst: std::string::c_str
      Src: /src/pdns/pdns/opensslsigners.cc:1483,1
    - Dst: EVP_PKEY_get_octet_string_param
      Src: /src/pdns/pdns/opensslsigners.cc:1484,1
    - Dst: get
      Src: /src/pdns/pdns/opensslsigners.cc:1484,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/opensslsigners.cc:1485,1
    - Dst: OpenSSLECDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/opensslsigners.cc:1485,1
    - Dst: std::string::resize
      Src: /src/pdns/pdns/opensslsigners.cc:1488,1
    - Dst: Point
      Src: /src/pdns/pdns/opensslsigners.cc:1490,1
    - Dst: EC_POINT_new
      Src: /src/pdns/pdns/opensslsigners.cc:1490,1
    - Dst: get
      Src: /src/pdns/pdns/opensslsigners.cc:1490,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/opensslsigners.cc:1492,1
    - Dst: OpenSSLECDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/opensslsigners.cc:1492,1
    - Dst: BigNumContext
      Src: /src/pdns/pdns/opensslsigners.cc:1495,1
    - Dst: BN_CTX_new
      Src: /src/pdns/pdns/opensslsigners.cc:1495,1
    - Dst: const_cast<unsigned char*>
      Src: /src/pdns/pdns/opensslsigners.cc:1498,1
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/opensslsigners.cc:1498,1
    - Dst: std::string::c_str
      Src: /src/pdns/pdns/opensslsigners.cc:1498,1
    - Dst: EC_POINT_oct2point
      Src: /src/pdns/pdns/opensslsigners.cc:1499,1
    - Dst: get
      Src: /src/pdns/pdns/opensslsigners.cc:1499,1
    - Dst: auto::get
      Src: /src/pdns/pdns/opensslsigners.cc:1499,1
    - Dst: std::string::length
      Src: /src/pdns/pdns/opensslsigners.cc:1499,1
    - Dst: auto::get
      Src: /src/pdns/pdns/opensslsigners.cc:1499,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/opensslsigners.cc:1500,1
    - Dst: OpenSSLECDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/opensslsigners.cc:1500,1
    - Dst: EC_POINT_point2oct
      Src: /src/pdns/pdns/opensslsigners.cc:1504,1
    - Dst: get
      Src: /src/pdns/pdns/opensslsigners.cc:1504,1
    - Dst: auto::get
      Src: /src/pdns/pdns/opensslsigners.cc:1504,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/opensslsigners.cc:1506,1
    - Dst: OpenSSLECDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/opensslsigners.cc:1506,1
    - Dst: std::string::resize
      Src: /src/pdns/pdns/opensslsigners.cc:1508,1
    - Dst: const_cast<unsigned char*>
      Src: /src/pdns/pdns/opensslsigners.cc:1511,1
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/opensslsigners.cc:1511,1
    - Dst: std::string::c_str
      Src: /src/pdns/pdns/opensslsigners.cc:1511,1
    - Dst: EC_POINT_point2oct
      Src: /src/pdns/pdns/opensslsigners.cc:1512,1
    - Dst: get
      Src: /src/pdns/pdns/opensslsigners.cc:1512,1
    - Dst: auto::get
      Src: /src/pdns/pdns/opensslsigners.cc:1512,1
    - Dst: std::string::length
      Src: /src/pdns/pdns/opensslsigners.cc:1512,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/opensslsigners.cc:1514,1
    - Dst: OpenSSLECDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/opensslsigners.cc:1514,1
    - Dst: std::string::erase
      Src: /src/pdns/pdns/opensslsigners.cc:1520,1
    - Dst: std::string::resize
      Src: /src/pdns/pdns/opensslsigners.cc:1525,1
    - Dst: EC_POINT_point2oct
      Src: /src/pdns/pdns/opensslsigners.cc:1527,1
    - Dst: get
      Src: /src/pdns/pdns/opensslsigners.cc:1527,1
    - Dst: EC_KEY_get0_public_key
      Src: /src/pdns/pdns/opensslsigners.cc:1527,1
    - Dst: get
      Src: /src/pdns/pdns/opensslsigners.cc:1527,1
    - Dst: reinterpret_cast<unsigned char*>
      Src: /src/pdns/pdns/opensslsigners.cc:1527,1
    - Dst: std::string::at
      Src: /src/pdns/pdns/opensslsigners.cc:1527,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/opensslsigners.cc:1527,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/opensslsigners.cc:1529,1
    - Dst: OpenSSLECDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/opensslsigners.cc:1529,1
    - Dst: std::string::erase
      Src: /src/pdns/pdns/opensslsigners.cc:1535,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 33
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1538
      start: 1471
    functionDepth: 1
    functionLinenumber: 1471
    functionLinenumberEnd: 1538
    functionName: OpenSSLECDSADNSCryptoKeyEngine::getPublicKeyString
    functionSourceFile: /src/pdns/pdns/opensslsigners.cc
    functionUses: 0
    functionsReached:
    - std::string::length
    - EC_POINT_oct2point
    - runtime_error
    - EC_POINT_point2oct
    - EC_KEY_get0_public_key
    - std::string::size
    - std::string::at
    - std::string::erase
    - reinterpret_cast<unsigned char*>
    - reinterpret_cast<const unsigned char*>
    - auto::get
    - const_cast<unsigned char*>
    - OpenSSLECDSADNSCryptoKeyEngine::getName
    - EVP_PKEY_get_octet_string_param
    - get
    - std::string::resize
    - EC_POINT_new
    - std::string::c_str
    - BigNumContext
    - Point
    - BN_CTX_new
    - Logging::Logger::error
    linkageType: ''
    returnType: std::string
    signature: std::string OpenSSLECDSADNSCryptoKeyEngine::getPublicKeyString() const
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: ParamsBuilder
      Src: /src/pdns/pdns/opensslsigners.cc:1543,1
    - Dst: OSSL_PARAM_BLD_new
      Src: /src/pdns/pdns/opensslsigners.cc:1543,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/opensslsigners.cc:1545,1
    - Dst: OpenSSLECDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/opensslsigners.cc:1545,1
    - Dst: empty
      Src: /src/pdns/pdns/opensslsigners.cc:1548,1
    - Dst: OSSL_PARAM_BLD_push_utf8_string
      Src: /src/pdns/pdns/opensslsigners.cc:1548,1
    - Dst: auto::get
      Src: /src/pdns/pdns/opensslsigners.cc:1548,1
    - Dst: c_str
      Src: /src/pdns/pdns/opensslsigners.cc:1548,1
    - Dst: length
      Src: /src/pdns/pdns/opensslsigners.cc:1548,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/opensslsigners.cc:1549,1
    - Dst: OpenSSLECDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/opensslsigners.cc:1549,1
    - Dst: OSSL_PARAM_BLD_push_BN
      Src: /src/pdns/pdns/opensslsigners.cc:1552,1
    - Dst: auto::get
      Src: /src/pdns/pdns/opensslsigners.cc:1552,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/opensslsigners.cc:1553,1
    - Dst: OpenSSLECDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/opensslsigners.cc:1553,1
    - Dst: has_value
      Src: /src/pdns/pdns/opensslsigners.cc:1556,1
    - Dst: OSSL_PARAM_BLD_push_octet_string
      Src: /src/pdns/pdns/opensslsigners.cc:1557,1
    - Dst: auto::get
      Src: /src/pdns/pdns/opensslsigners.cc:1557,1
    - Dst: c_str
      Src: /src/pdns/pdns/opensslsigners.cc:1557,1
    - Dst: length
      Src: /src/pdns/pdns/opensslsigners.cc:1557,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/opensslsigners.cc:1558,1
    - Dst: OpenSSLECDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/opensslsigners.cc:1558,1
    - Dst: Params
      Src: /src/pdns/pdns/opensslsigners.cc:1562,1
    - Dst: OSSL_PARAM_BLD_to_param
      Src: /src/pdns/pdns/opensslsigners.cc:1562,1
    - Dst: auto::get
      Src: /src/pdns/pdns/opensslsigners.cc:1562,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/opensslsigners.cc:1564,1
    - Dst: OpenSSLECDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/opensslsigners.cc:1564,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 19
    argCount: 3
    argNames:
    - ' group_name'
    - privateKey
    - ' publicKey'
    argTypes:
    - std::string
    - BIGNUM*
    - std::optional<std::string>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1568
      start: 1541
    functionDepth: 0
    functionLinenumber: 1541
    functionLinenumberEnd: 1568
    functionName: OpenSSLECDSADNSCryptoKeyEngine::makeKeyParams
    functionSourceFile: /src/pdns/pdns/opensslsigners.cc
    functionUses: 0
    functionsReached:
    - length
    - OSSL_PARAM_BLD_new
    - has_value
    - auto::get
    - OSSL_PARAM_BLD_to_param
    - c_str
    - Params
    - OpenSSLECDSADNSCryptoKeyEngine::getName
    - OSSL_PARAM_BLD_push_BN
    - empty
    - OSSL_PARAM_BLD_push_utf8_string
    - ParamsBuilder
    - Logging::Logger::error
    - OSSL_PARAM_BLD_push_octet_string
    linkageType: ''
    returnType: auto
    signature: auto OpenSSLECDSADNSCryptoKeyEngine::makeKeyParams(const std::string&
      group_name, const BIGNUM* privateKey, const std::optional<std::string>& publicKey)
      const -> Params
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: atoi
      Src: /src/pdns/pdns/opensslsigners.cc:1573,1
    - Dst: c_str
      Src: /src/pdns/pdns/opensslsigners.cc:1573,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/opensslsigners.cc:1576,1
    - Dst: OpenSSLECDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/opensslsigners.cc:1576,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/opensslsigners.cc:1576,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/opensslsigners.cc:1576,1
    - Dst: mapToBN
      Src: /src/pdns/pdns/opensslsigners.cc:1579,1
    - Dst: OpenSSLECDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/opensslsigners.cc:1579,1
    - Dst: Point
      Src: /src/pdns/pdns/opensslsigners.cc:1582,1
    - Dst: EC_POINT_new
      Src: /src/pdns/pdns/opensslsigners.cc:1582,1
    - Dst: get
      Src: /src/pdns/pdns/opensslsigners.cc:1582,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/opensslsigners.cc:1584,1
    - Dst: OpenSSLECDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/opensslsigners.cc:1584,1
    - Dst: EC_POINT_mul
      Src: /src/pdns/pdns/opensslsigners.cc:1587,1
    - Dst: get
      Src: /src/pdns/pdns/opensslsigners.cc:1587,1
    - Dst: auto::get
      Src: /src/pdns/pdns/opensslsigners.cc:1587,1
    - Dst: auto::get
      Src: /src/pdns/pdns/opensslsigners.cc:1587,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/opensslsigners.cc:1588,1
    - Dst: OpenSSLECDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/opensslsigners.cc:1588,1
    - Dst: EC_POINT_point2oct
      Src: /src/pdns/pdns/opensslsigners.cc:1592,1
    - Dst: get
      Src: /src/pdns/pdns/opensslsigners.cc:1592,1
    - Dst: auto::get
      Src: /src/pdns/pdns/opensslsigners.cc:1592,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/opensslsigners.cc:1594,1
    - Dst: OpenSSLECDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/opensslsigners.cc:1594,1
    - Dst: std::string::resize
      Src: /src/pdns/pdns/opensslsigners.cc:1596,1
    - Dst: reinterpret_cast<unsigned char*>
      Src: /src/pdns/pdns/opensslsigners.cc:1599,1
    - Dst: std::string::data
      Src: /src/pdns/pdns/opensslsigners.cc:1599,1
    - Dst: EC_POINT_point2oct
      Src: /src/pdns/pdns/opensslsigners.cc:1600,1
    - Dst: get
      Src: /src/pdns/pdns/opensslsigners.cc:1600,1
    - Dst: auto::get
      Src: /src/pdns/pdns/opensslsigners.cc:1600,1
    - Dst: std::string::length
      Src: /src/pdns/pdns/opensslsigners.cc:1600,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/opensslsigners.cc:1602,1
    - Dst: OpenSSLECDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/opensslsigners.cc:1602,1
    - Dst: OpenSSLECDSADNSCryptoKeyEngine::makeKeyParams
      Src: /src/pdns/pdns/opensslsigners.cc:1605,1
    - Dst: auto::get
      Src: /src/pdns/pdns/opensslsigners.cc:1605,1
    - Dst: std::make_optional
      Src: /src/pdns/pdns/opensslsigners.cc:1605,1
    - Dst: KeyContext
      Src: /src/pdns/pdns/opensslsigners.cc:1607,1
    - Dst: EVP_PKEY_CTX_new_from_name
      Src: /src/pdns/pdns/opensslsigners.cc:1607,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/opensslsigners.cc:1609,1
    - Dst: OpenSSLECDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/opensslsigners.cc:1609,1
    - Dst: EVP_PKEY_fromdata_init
      Src: /src/pdns/pdns/opensslsigners.cc:1612,1
    - Dst: auto::get
      Src: /src/pdns/pdns/opensslsigners.cc:1612,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/opensslsigners.cc:1613,1
    - Dst: OpenSSLECDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/opensslsigners.cc:1613,1
    - Dst: EVP_PKEY_fromdata
      Src: /src/pdns/pdns/opensslsigners.cc:1617,1
    - Dst: auto::get
      Src: /src/pdns/pdns/opensslsigners.cc:1617,1
    - Dst: auto::get
      Src: /src/pdns/pdns/opensslsigners.cc:1617,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/opensslsigners.cc:1618,1
    - Dst: OpenSSLECDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/opensslsigners.cc:1618,1
    - Dst: reset
      Src: /src/pdns/pdns/opensslsigners.cc:1621,1
    - Dst: EC_KEY_set_private_key
      Src: /src/pdns/pdns/opensslsigners.cc:1623,1
    - Dst: get
      Src: /src/pdns/pdns/opensslsigners.cc:1623,1
    - Dst: auto::get
      Src: /src/pdns/pdns/opensslsigners.cc:1623,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/opensslsigners.cc:1625,1
    - Dst: OpenSSLECDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/opensslsigners.cc:1625,1
    - Dst: Point
      Src: /src/pdns/pdns/opensslsigners.cc:1628,1
    - Dst: EC_POINT_new
      Src: /src/pdns/pdns/opensslsigners.cc:1628,1
    - Dst: get
      Src: /src/pdns/pdns/opensslsigners.cc:1628,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/opensslsigners.cc:1630,1
    - Dst: OpenSSLECDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/opensslsigners.cc:1630,1
    - Dst: EC_POINT_mul
      Src: /src/pdns/pdns/opensslsigners.cc:1633,1
    - Dst: get
      Src: /src/pdns/pdns/opensslsigners.cc:1633,1
    - Dst: auto::get
      Src: /src/pdns/pdns/opensslsigners.cc:1633,1
    - Dst: auto::get
      Src: /src/pdns/pdns/opensslsigners.cc:1633,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/opensslsigners.cc:1635,1
    - Dst: OpenSSLECDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/opensslsigners.cc:1635,1
    - Dst: EC_KEY_set_public_key
      Src: /src/pdns/pdns/opensslsigners.cc:1638,1
    - Dst: get
      Src: /src/pdns/pdns/opensslsigners.cc:1638,1
    - Dst: auto::get
      Src: /src/pdns/pdns/opensslsigners.cc:1638,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/opensslsigners.cc:1640,1
    - Dst: OpenSSLECDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/opensslsigners.cc:1640,1
    - Dst: EC_KEY_set_asn1_flag
      Src: /src/pdns/pdns/opensslsigners.cc:1643,1
    - Dst: get
      Src: /src/pdns/pdns/opensslsigners.cc:1643,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 44
    argCount: 2
    argNames:
    - ' drc'
    - ' stormap'
    argTypes:
    - DNSKEYRecordContent
    - std::map<std::string, std::string>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1645
      start: 1571
    functionDepth: 1
    functionLinenumber: 1571
    functionLinenumberEnd: 1645
    functionName: OpenSSLECDSADNSCryptoKeyEngine::fromISCMap
    functionSourceFile: /src/pdns/pdns/opensslsigners.cc
    functionUses: 0
    functionsReached:
    - std::string::length
    - std::to_string
    - runtime_error
    - EC_POINT_point2oct
    - EC_KEY_set_asn1_flag
    - mapToBN
    - reset
    - EVP_PKEY_fromdata_init
    - reinterpret_cast<unsigned char*>
    - EVP_PKEY_fromdata
    - EC_KEY_set_public_key
    - c_str
    - auto::get
    - EC_KEY_set_private_key
    - std::string::data
    - OpenSSLECDSADNSCryptoKeyEngine::getName
    - get
    - std::string::resize
    - EC_POINT_new
    - std::make_optional
    - EC_POINT_mul
    - EVP_PKEY_CTX_new_from_name
    - OpenSSLECDSADNSCryptoKeyEngine::makeKeyParams
    - atoi
    - KeyContext
    - Point
    - Logging::Logger::error
    linkageType: ''
    returnType: void
    signature: void OpenSSLECDSADNSCryptoKeyEngine::fromISCMap(DNSKEYRecordContent&
      drc, std::map<std::string, std::string>& stormap)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: EVP_PKEY_CTX_new_from_pkey
      Src: /src/pdns/pdns/opensslsigners.cc:1650,1
    - Dst: get
      Src: /src/pdns/pdns/opensslsigners.cc:1650,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/opensslsigners.cc:1652,1
    - Dst: OpenSSLECDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/opensslsigners.cc:1652,1
    - Dst: std::optional<std::reference_wrapper<std::vector<std::string>>>::has_value
      Src: /src/pdns/pdns/opensslsigners.cc:1662,1
    - Dst: ERR_reason_error_string
      Src: /src/pdns/pdns/opensslsigners.cc:1663,1
    - Dst: ERR_get_error
      Src: /src/pdns/pdns/opensslsigners.cc:1663,1
    - Dst: std::optional<std::reference_wrapper<std::vector<std::string>>>::get
      Src: /src/pdns/pdns/opensslsigners.cc:1665,1
    - Dst: std::optional<std::reference_wrapper<std::vector<std::string>>>::get
      Src: /src/pdns/pdns/opensslsigners.cc:1668,1
    - Dst: addOpenSSLErrorMessageOnFail
      Src: /src/pdns/pdns/opensslsigners.cc:1674,1
    - Dst: EVP_PKEY_param_check
      Src: /src/pdns/pdns/opensslsigners.cc:1674,1
    - Dst: auto::get
      Src: /src/pdns/pdns/opensslsigners.cc:1674,1
    - Dst: OpenSSLECDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/opensslsigners.cc:1674,1
    - Dst: addOpenSSLErrorMessageOnFail
      Src: /src/pdns/pdns/opensslsigners.cc:1675,1
    - Dst: EVP_PKEY_public_check
      Src: /src/pdns/pdns/opensslsigners.cc:1675,1
    - Dst: auto::get
      Src: /src/pdns/pdns/opensslsigners.cc:1675,1
    - Dst: OpenSSLECDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/opensslsigners.cc:1675,1
    - Dst: addOpenSSLErrorMessageOnFail
      Src: /src/pdns/pdns/opensslsigners.cc:1676,1
    - Dst: EVP_PKEY_private_check
      Src: /src/pdns/pdns/opensslsigners.cc:1676,1
    - Dst: auto::get
      Src: /src/pdns/pdns/opensslsigners.cc:1676,1
    - Dst: OpenSSLECDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/opensslsigners.cc:1676,1
    - Dst: addOpenSSLErrorMessageOnFail
      Src: /src/pdns/pdns/opensslsigners.cc:1677,1
    - Dst: EVP_PKEY_pairwise_check
      Src: /src/pdns/pdns/opensslsigners.cc:1677,1
    - Dst: auto::get
      Src: /src/pdns/pdns/opensslsigners.cc:1677,1
    - Dst: OpenSSLECDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/opensslsigners.cc:1677,1
    - Dst: EC_KEY_check_key
      Src: /src/pdns/pdns/opensslsigners.cc:1682,1
    - Dst: get
      Src: /src/pdns/pdns/opensslsigners.cc:1682,1
    - Dst: std::optional<std::reference_wrapper<std::vector<std::string>>>::has_value
      Src: /src/pdns/pdns/opensslsigners.cc:1684,1
    - Dst: ERR_reason_error_string
      Src: /src/pdns/pdns/opensslsigners.cc:1685,1
    - Dst: ERR_get_error
      Src: /src/pdns/pdns/opensslsigners.cc:1685,1
    - Dst: std::optional<std::reference_wrapper<std::vector<std::string>>>::get
      Src: /src/pdns/pdns/opensslsigners.cc:1689,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 30
    argCount: 1
    argNames:
    - errorMessages
    argTypes:
    - std::optional<std::reference_wrapper<std::vector<std::string>>>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1694
      start: 1647
    functionDepth: 0
    functionLinenumber: 1647
    functionLinenumberEnd: 1694
    functionName: OpenSSLECDSADNSCryptoKeyEngine::checkKey
    functionSourceFile: /src/pdns/pdns/opensslsigners.cc
    functionUses: 0
    functionsReached:
    - ERR_get_error
    - auto::get
    - EVP_PKEY_private_check
    - addOpenSSLErrorMessageOnFail
    - ERR_reason_error_string
    - std::optional<std::reference_wrapper<std::vector<std::string>>>::get
    - std::optional<std::reference_wrapper<std::vector<std::string>>>::has_value
    - EC_KEY_check_key
    - OpenSSLECDSADNSCryptoKeyEngine::getName
    - get
    - EVP_PKEY_public_check
    - EVP_PKEY_pairwise_check
    - EVP_PKEY_param_check
    - Logging::Logger::error
    - EVP_PKEY_CTX_new_from_pkey
    linkageType: ''
    returnType: bool
    signature: bool OpenSSLECDSADNSCryptoKeyEngine::checkKey(std::optional<std::reference_wrapper<std::vector<std::string>>>
      errorMessages) const
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: std::string::append
      Src: /src/pdns/pdns/opensslsigners.cc:1703,1
    - Dst: OpenSSLECDSADNSCryptoKeyEngine::makeKeyParams
      Src: /src/pdns/pdns/opensslsigners.cc:1705,1
    - Dst: std::make_optional
      Src: /src/pdns/pdns/opensslsigners.cc:1705,1
    - Dst: KeyContext
      Src: /src/pdns/pdns/opensslsigners.cc:1707,1
    - Dst: EVP_PKEY_CTX_new_from_name
      Src: /src/pdns/pdns/opensslsigners.cc:1707,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/opensslsigners.cc:1709,1
    - Dst: OpenSSLECDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/opensslsigners.cc:1709,1
    - Dst: EVP_PKEY_fromdata_init
      Src: /src/pdns/pdns/opensslsigners.cc:1712,1
    - Dst: auto::get
      Src: /src/pdns/pdns/opensslsigners.cc:1712,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/opensslsigners.cc:1713,1
    - Dst: OpenSSLECDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/opensslsigners.cc:1713,1
    - Dst: EVP_PKEY_fromdata
      Src: /src/pdns/pdns/opensslsigners.cc:1717,1
    - Dst: auto::get
      Src: /src/pdns/pdns/opensslsigners.cc:1717,1
    - Dst: auto::get
      Src: /src/pdns/pdns/opensslsigners.cc:1717,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/opensslsigners.cc:1718,1
    - Dst: OpenSSLECDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/opensslsigners.cc:1718,1
    - Dst: reset
      Src: /src/pdns/pdns/opensslsigners.cc:1721,1
    - Dst: string::append
      Src: /src/pdns/pdns/opensslsigners.cc:1727,1
    - Dst: Point
      Src: /src/pdns/pdns/opensslsigners.cc:1729,1
    - Dst: EC_POINT_new
      Src: /src/pdns/pdns/opensslsigners.cc:1729,1
    - Dst: get
      Src: /src/pdns/pdns/opensslsigners.cc:1729,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/opensslsigners.cc:1731,1
    - Dst: OpenSSLECDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/opensslsigners.cc:1731,1
    - Dst: EC_POINT_oct2point
      Src: /src/pdns/pdns/opensslsigners.cc:1734,1
    - Dst: get
      Src: /src/pdns/pdns/opensslsigners.cc:1734,1
    - Dst: auto::get
      Src: /src/pdns/pdns/opensslsigners.cc:1734,1
    - Dst: string::c_str
      Src: /src/pdns/pdns/opensslsigners.cc:1734,1
    - Dst: string::length
      Src: /src/pdns/pdns/opensslsigners.cc:1734,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/opensslsigners.cc:1736,1
    - Dst: OpenSSLECDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/opensslsigners.cc:1736,1
    - Dst: EC_KEY_set_private_key
      Src: /src/pdns/pdns/opensslsigners.cc:1739,1
    - Dst: get
      Src: /src/pdns/pdns/opensslsigners.cc:1739,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/opensslsigners.cc:1741,1
    - Dst: OpenSSLECDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/opensslsigners.cc:1741,1
    - Dst: EC_KEY_set_public_key
      Src: /src/pdns/pdns/opensslsigners.cc:1744,1
    - Dst: get
      Src: /src/pdns/pdns/opensslsigners.cc:1744,1
    - Dst: auto::get
      Src: /src/pdns/pdns/opensslsigners.cc:1744,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/opensslsigners.cc:1746,1
    - Dst: OpenSSLECDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/opensslsigners.cc:1746,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 27
    argCount: 1
    argNames:
    - ' content'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1749
      start: 1696
    functionDepth: 0
    functionLinenumber: 1696
    functionLinenumberEnd: 1749
    functionName: OpenSSLECDSADNSCryptoKeyEngine::fromPublicKeyString
    functionSourceFile: /src/pdns/pdns/opensslsigners.cc
    functionUses: 0
    functionsReached:
    - EC_POINT_oct2point
    - runtime_error
    - reset
    - std::string::append
    - EVP_PKEY_fromdata_init
    - EVP_PKEY_fromdata
    - EC_KEY_set_public_key
    - string::c_str
    - auto::get
    - EC_KEY_set_private_key
    - OpenSSLECDSADNSCryptoKeyEngine::getName
    - get
    - EC_POINT_new
    - std::make_optional
    - string::length
    - EVP_PKEY_CTX_new_from_name
    - OpenSSLECDSADNSCryptoKeyEngine::makeKeyParams
    - string::append
    - KeyContext
    - Point
    - Logging::Logger::error
    linkageType: ''
    returnType: void
    signature: void OpenSSLECDSADNSCryptoKeyEngine::fromPublicKeyString(const std::string&
      content)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1758
      start: 1758
    functionDepth: 0
    functionLinenumber: 1758
    functionLinenumberEnd: 1758
    functionName: OpenSSLEDDSADNSCryptoKeyEngine::getName
    functionSourceFile: /src/pdns/pdns/opensslsigners.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: string
    signature: string getName() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: make_unique<OpenSSLEDDSADNSCryptoKeyEngine>
      Src: /src/pdns/pdns/opensslsigners.cc:1800,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - slog
    - algorithm
    argTypes:
    - Logr::log_t
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1801
      start: 1798
    functionDepth: 0
    functionLinenumber: 1798
    functionLinenumberEnd: 1801
    functionName: OpenSSLEDDSADNSCryptoKeyEngine::maker
    functionSourceFile: /src/pdns/pdns/opensslsigners.cc
    functionUses: 0
    functionsReached:
    - make_unique<OpenSSLEDDSADNSCryptoKeyEngine>
    linkageType: ''
    returnType: std::unique_ptr<DNSCryptoKeyEngine>
    signature: std::unique_ptr<DNSCryptoKeyEngine> maker(Logr::log_t slog, unsigned
      int algorithm)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Key
      Src: /src/pdns/pdns/opensslsigners.cc:1816,1
    - Dst: RAND_status
      Src: /src/pdns/pdns/opensslsigners.cc:1818,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/opensslsigners.cc:1820,1
    - Dst: OpenSSLEDDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/opensslsigners.cc:1820,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/opensslsigners.cc:1836,1
    - Dst: OpenSSLEDDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/opensslsigners.cc:1836,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/opensslsigners.cc:1836,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 2
    argNames:
    - slog
    - algo
    argTypes:
    - Logr::log_t
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1838
      start: 1814
    functionDepth: 0
    functionLinenumber: 1814
    functionLinenumberEnd: 1838
    functionName: OpenSSLEDDSADNSCryptoKeyEngine::OpenSSLEDDSADNSCryptoKeyEngine
    functionSourceFile: /src/pdns/pdns/opensslsigners.cc
    functionUses: 0
    functionsReached:
    - OpenSSLEDDSADNSCryptoKeyEngine::getName
    - std::to_string
    - runtime_error
    - Key
    - RAND_status
    linkageType: ''
    returnType: void
    signature: void OpenSSLEDDSADNSCryptoKeyEngine::OpenSSLEDDSADNSCryptoKeyEngine(Logr::log_t
      slog, unsigned int algo)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1843
      start: 1840
    functionDepth: 0
    functionLinenumber: 1840
    functionLinenumberEnd: 1843
    functionName: OpenSSLEDDSADNSCryptoKeyEngine::getBits
    functionSourceFile: /src/pdns/pdns/opensslsigners.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int OpenSSLEDDSADNSCryptoKeyEngine::getBits() const
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: EVP_PKEY_CTX_new_from_pkey
      Src: /src/pdns/pdns/opensslsigners.cc:1848,1
    - Dst: get
      Src: /src/pdns/pdns/opensslsigners.cc:1848,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/opensslsigners.cc:1850,1
    - Dst: OpenSSLEDDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/opensslsigners.cc:1850,1
    - Dst: std::optional<std::reference_wrapper<std::vector<std::string>>>::has_value
      Src: /src/pdns/pdns/opensslsigners.cc:1860,1
    - Dst: ERR_reason_error_string
      Src: /src/pdns/pdns/opensslsigners.cc:1861,1
    - Dst: ERR_get_error
      Src: /src/pdns/pdns/opensslsigners.cc:1861,1
    - Dst: std::optional<std::reference_wrapper<std::vector<std::string>>>::get
      Src: /src/pdns/pdns/opensslsigners.cc:1863,1
    - Dst: std::optional<std::reference_wrapper<std::vector<std::string>>>::get
      Src: /src/pdns/pdns/opensslsigners.cc:1866,1
    - Dst: addOpenSSLErrorMessageOnFail
      Src: /src/pdns/pdns/opensslsigners.cc:1872,1
    - Dst: EVP_PKEY_param_check
      Src: /src/pdns/pdns/opensslsigners.cc:1872,1
    - Dst: auto::get
      Src: /src/pdns/pdns/opensslsigners.cc:1872,1
    - Dst: OpenSSLEDDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/opensslsigners.cc:1872,1
    - Dst: addOpenSSLErrorMessageOnFail
      Src: /src/pdns/pdns/opensslsigners.cc:1873,1
    - Dst: EVP_PKEY_public_check
      Src: /src/pdns/pdns/opensslsigners.cc:1873,1
    - Dst: auto::get
      Src: /src/pdns/pdns/opensslsigners.cc:1873,1
    - Dst: OpenSSLEDDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/opensslsigners.cc:1873,1
    - Dst: addOpenSSLErrorMessageOnFail
      Src: /src/pdns/pdns/opensslsigners.cc:1874,1
    - Dst: EVP_PKEY_private_check
      Src: /src/pdns/pdns/opensslsigners.cc:1874,1
    - Dst: auto::get
      Src: /src/pdns/pdns/opensslsigners.cc:1874,1
    - Dst: OpenSSLEDDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/opensslsigners.cc:1874,1
    - Dst: addOpenSSLErrorMessageOnFail
      Src: /src/pdns/pdns/opensslsigners.cc:1875,1
    - Dst: EVP_PKEY_pairwise_check
      Src: /src/pdns/pdns/opensslsigners.cc:1875,1
    - Dst: auto::get
      Src: /src/pdns/pdns/opensslsigners.cc:1875,1
    - Dst: OpenSSLEDDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/opensslsigners.cc:1875,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 1
    argNames:
    - errorMessages
    argTypes:
    - std::optional<std::reference_wrapper<std::vector<std::string>>>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1881
      start: 1845
    functionDepth: 0
    functionLinenumber: 1845
    functionLinenumberEnd: 1881
    functionName: OpenSSLEDDSADNSCryptoKeyEngine::checkKey
    functionSourceFile: /src/pdns/pdns/opensslsigners.cc
    functionUses: 0
    functionsReached:
    - OpenSSLEDDSADNSCryptoKeyEngine::getName
    - ERR_get_error
    - auto::get
    - EVP_PKEY_private_check
    - addOpenSSLErrorMessageOnFail
    - ERR_reason_error_string
    - std::optional<std::reference_wrapper<std::vector<std::string>>>::get
    - std::optional<std::reference_wrapper<std::vector<std::string>>>::has_value
    - EVP_PKEY_public_check
    - get
    - EVP_PKEY_pairwise_check
    - EVP_PKEY_param_check
    - Logging::Logger::error
    - EVP_PKEY_CTX_new_from_pkey
    linkageType: ''
    returnType: bool
    signature: bool OpenSSLEDDSADNSCryptoKeyEngine::checkKey([[maybe_unused]] std::optional<std::reference_wrapper<std::vector<std::string>>>
      errorMessages) const
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: KeyContext
      Src: /src/pdns/pdns/opensslsigners.cc:1885,1
    - Dst: EVP_PKEY_CTX_new_id
      Src: /src/pdns/pdns/opensslsigners.cc:1885,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/opensslsigners.cc:1887,1
    - Dst: OpenSSLEDDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/opensslsigners.cc:1887,1
    - Dst: EVP_PKEY_keygen_init
      Src: /src/pdns/pdns/opensslsigners.cc:1890,1
    - Dst: auto::get
      Src: /src/pdns/pdns/opensslsigners.cc:1890,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/opensslsigners.cc:1891,1
    - Dst: OpenSSLEDDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/opensslsigners.cc:1891,1
    - Dst: EVP_PKEY_keygen
      Src: /src/pdns/pdns/opensslsigners.cc:1895,1
    - Dst: auto::get
      Src: /src/pdns/pdns/opensslsigners.cc:1895,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/opensslsigners.cc:1896,1
    - Dst: OpenSSLEDDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/opensslsigners.cc:1896,1
    - Dst: reset
      Src: /src/pdns/pdns/opensslsigners.cc:1899,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1900
      start: 1883
    functionDepth: 0
    functionLinenumber: 1883
    functionLinenumberEnd: 1900
    functionName: OpenSSLEDDSADNSCryptoKeyEngine::create
    functionSourceFile: /src/pdns/pdns/opensslsigners.cc
    functionUses: 0
    functionsReached:
    - OpenSSLEDDSADNSCryptoKeyEngine::getName
    - reset
    - auto::get
    - EVP_PKEY_keygen
    - EVP_PKEY_keygen_init
    - KeyContext
    - EVP_PKEY_CTX_new_id
    - Logging::Logger::error
    linkageType: ''
    returnType: void
    signature: void OpenSSLEDDSADNSCryptoKeyEngine::create(unsigned int /* bits */)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Key
      Src: /src/pdns/pdns/opensslsigners.cc:1905,1
    - Dst: PEM_read_PrivateKey
      Src: /src/pdns/pdns/opensslsigners.cc:1905,1
    - Dst: std::optional<std::reference_wrapper<const std::string>>::has_value
      Src: /src/pdns/pdns/opensslsigners.cc:1907,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/opensslsigners.cc:1908,1
    - Dst: OpenSSLEDDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/opensslsigners.cc:1908,1
    - Dst: std::optional<std::reference_wrapper<const std::string>>::get
      Src: /src/pdns/pdns/opensslsigners.cc:1908,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/opensslsigners.cc:1911,1
    - Dst: OpenSSLEDDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/opensslsigners.cc:1911,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 3
    argNames:
    - ' drc'
    - ' inputFile'
    - filename
    argTypes:
    - DNSKEYRecordContent
    - std::FILE
    - std::optional<std::reference_wrapper<const std::string>>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1913
      start: 1902
    functionDepth: 0
    functionLinenumber: 1902
    functionLinenumberEnd: 1913
    functionName: OpenSSLEDDSADNSCryptoKeyEngine::createFromPEMFile
    functionSourceFile: /src/pdns/pdns/opensslsigners.cc
    functionUses: 0
    functionsReached:
    - OpenSSLEDDSADNSCryptoKeyEngine::getName
    - PEM_read_PrivateKey
    - std::optional<std::reference_wrapper<const std::string>>::has_value
    - std::optional<std::reference_wrapper<const std::string>>::get
    - Key
    - Logging::Logger::error
    linkageType: ''
    returnType: void
    signature: void OpenSSLEDDSADNSCryptoKeyEngine::createFromPEMFile(DNSKEYRecordContent&
      drc, std::FILE& inputFile, std::optional<std::reference_wrapper<const std::string>>
      filename)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PEM_write_PrivateKey
      Src: /src/pdns/pdns/opensslsigners.cc:1917,1
    - Dst: get
      Src: /src/pdns/pdns/opensslsigners.cc:1917,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/opensslsigners.cc:1919,1
    - Dst: OpenSSLEDDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/opensslsigners.cc:1919,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - ' outputFile'
    argTypes:
    - std::FILE
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1921
      start: 1915
    functionDepth: 0
    functionLinenumber: 1915
    functionLinenumberEnd: 1921
    functionName: OpenSSLEDDSADNSCryptoKeyEngine::convertToPEMFile
    functionSourceFile: /src/pdns/pdns/opensslsigners.cc
    functionUses: 0
    functionsReached:
    - OpenSSLEDDSADNSCryptoKeyEngine::getName
    - PEM_write_PrivateKey
    - Logging::Logger::error
    - get
    linkageType: ''
    returnType: void
    signature: void OpenSSLEDDSADNSCryptoKeyEngine::convertToPEMFile(std::FILE& outputFile)
      const
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: string::empty
      Src: /src/pdns/pdns/opensslsigners.cc:1938,1
    - Dst: storvector_t::emplace_back
      Src: /src/pdns/pdns/opensslsigners.cc:1942,1
    - Dst: string::resize
      Src: /src/pdns/pdns/opensslsigners.cc:1946,1
    - Dst: EVP_PKEY_get_raw_private_key
      Src: /src/pdns/pdns/opensslsigners.cc:1949,1
    - Dst: get
      Src: /src/pdns/pdns/opensslsigners.cc:1949,1
    - Dst: reinterpret_cast<unsigned char*>
      Src: /src/pdns/pdns/opensslsigners.cc:1949,1
    - Dst: string::at
      Src: /src/pdns/pdns/opensslsigners.cc:1949,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/opensslsigners.cc:1950,1
    - Dst: OpenSSLEDDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/opensslsigners.cc:1950,1
    - Dst: storvector_t::emplace_back
      Src: /src/pdns/pdns/opensslsigners.cc:1952,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1954
      start: 1923
    functionDepth: 1
    functionLinenumber: 1923
    functionLinenumberEnd: 1954
    functionName: OpenSSLEDDSADNSCryptoKeyEngine::convertToISCVector
    functionSourceFile: /src/pdns/pdns/opensslsigners.cc
    functionUses: 0
    functionsReached:
    - string::resize
    - EVP_PKEY_get_raw_private_key
    - OpenSSLEDDSADNSCryptoKeyEngine::getName
    - storvector_t::emplace_back
    - string::empty
    - get
    - reinterpret_cast<unsigned char*>
    - string::at
    - Logging::Logger::error
    linkageType: ''
    returnType: DNSCryptoKeyEngine::storvector_t
    signature: DNSCryptoKeyEngine::storvector_t OpenSSLEDDSADNSCryptoKeyEngine::convertToISCVector()
      const
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: MessageDigestContext
      Src: /src/pdns/pdns/opensslsigners.cc:1958,1
    - Dst: EVP_MD_CTX_new
      Src: /src/pdns/pdns/opensslsigners.cc:1958,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/opensslsigners.cc:1960,1
    - Dst: OpenSSLEDDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/opensslsigners.cc:1960,1
    - Dst: EVP_DigestSignInit
      Src: /src/pdns/pdns/opensslsigners.cc:1962,1
    - Dst: auto::get
      Src: /src/pdns/pdns/opensslsigners.cc:1962,1
    - Dst: get
      Src: /src/pdns/pdns/opensslsigners.cc:1962,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/opensslsigners.cc:1963,1
    - Dst: OpenSSLEDDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/opensslsigners.cc:1963,1
    - Dst: string::resize
      Src: /src/pdns/pdns/opensslsigners.cc:1970,1
    - Dst: EVP_DigestSign
      Src: /src/pdns/pdns/opensslsigners.cc:1972,1
    - Dst: auto::get
      Src: /src/pdns/pdns/opensslsigners.cc:1972,1
    - Dst: reinterpret_cast<unsigned char*>
      Src: /src/pdns/pdns/opensslsigners.cc:1974,1
    - Dst: string::at
      Src: /src/pdns/pdns/opensslsigners.cc:1974,1
    - Dst: reinterpret_cast<unsigned char*>
      Src: /src/pdns/pdns/opensslsigners.cc:1976,1
    - Dst: string::at
      Src: /src/pdns/pdns/opensslsigners.cc:1976,1
    - Dst: string::length
      Src: /src/pdns/pdns/opensslsigners.cc:1976,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/opensslsigners.cc:1978,1
    - Dst: OpenSSLEDDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/opensslsigners.cc:1978,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 12
    argCount: 1
    argNames:
    - ' msg'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1982
      start: 1956
    functionDepth: 1
    functionLinenumber: 1956
    functionLinenumberEnd: 1982
    functionName: OpenSSLEDDSADNSCryptoKeyEngine::sign
    functionSourceFile: /src/pdns/pdns/opensslsigners.cc
    functionUses: 0
    functionsReached:
    - OpenSSLEDDSADNSCryptoKeyEngine::getName
    - string::resize
    - auto::get
    - MessageDigestContext
    - get
    - EVP_DigestSign
    - reinterpret_cast<unsigned char*>
    - EVP_DigestSignInit
    - string::at
    - string::length
    - EVP_MD_CTX_new
    - Logging::Logger::error
    linkageType: ''
    returnType: std::string
    signature: std::string OpenSSLEDDSADNSCryptoKeyEngine::sign(const std::string&
      msg) const
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: MessageDigestContext
      Src: /src/pdns/pdns/opensslsigners.cc:1986,1
    - Dst: EVP_MD_CTX_new
      Src: /src/pdns/pdns/opensslsigners.cc:1986,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/opensslsigners.cc:1988,1
    - Dst: OpenSSLEDDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/opensslsigners.cc:1988,1
    - Dst: EVP_DigestVerifyInit
      Src: /src/pdns/pdns/opensslsigners.cc:1990,1
    - Dst: auto::get
      Src: /src/pdns/pdns/opensslsigners.cc:1990,1
    - Dst: get
      Src: /src/pdns/pdns/opensslsigners.cc:1990,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/opensslsigners.cc:1991,1
    - Dst: OpenSSLEDDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/opensslsigners.cc:1991,1
    - Dst: EVP_DigestVerify
      Src: /src/pdns/pdns/opensslsigners.cc:1994,1
    - Dst: auto::get
      Src: /src/pdns/pdns/opensslsigners.cc:1994,1
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/opensslsigners.cc:1996,1
    - Dst: at
      Src: /src/pdns/pdns/opensslsigners.cc:1996,1
    - Dst: length
      Src: /src/pdns/pdns/opensslsigners.cc:1996,1
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/opensslsigners.cc:1998,1
    - Dst: at
      Src: /src/pdns/pdns/opensslsigners.cc:1998,1
    - Dst: length
      Src: /src/pdns/pdns/opensslsigners.cc:1998,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/opensslsigners.cc:2000,1
    - Dst: OpenSSLEDDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/opensslsigners.cc:2000,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 11
    argCount: 2
    argNames:
    - ' message'
    - ' signature'
    argTypes:
    - std::string
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2004
      start: 1984
    functionDepth: 0
    functionLinenumber: 1984
    functionLinenumberEnd: 2004
    functionName: OpenSSLEDDSADNSCryptoKeyEngine::verify
    functionSourceFile: /src/pdns/pdns/opensslsigners.cc
    functionUses: 0
    functionsReached:
    - OpenSSLEDDSADNSCryptoKeyEngine::getName
    - length
    - auto::get
    - at
    - EVP_DigestVerifyInit
    - MessageDigestContext
    - EVP_DigestVerify
    - get
    - reinterpret_cast<const unsigned char*>
    - EVP_MD_CTX_new
    - Logging::Logger::error
    linkageType: ''
    returnType: bool
    signature: bool OpenSSLEDDSADNSCryptoKeyEngine::verify(const std::string& message,
      const std::string& signature) const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: string::resize
      Src: /src/pdns/pdns/opensslsigners.cc:2010,1
    - Dst: EVP_PKEY_get_raw_public_key
      Src: /src/pdns/pdns/opensslsigners.cc:2013,1
    - Dst: get
      Src: /src/pdns/pdns/opensslsigners.cc:2013,1
    - Dst: reinterpret_cast<unsigned char*>
      Src: /src/pdns/pdns/opensslsigners.cc:2013,1
    - Dst: string::at
      Src: /src/pdns/pdns/opensslsigners.cc:2013,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/opensslsigners.cc:2014,1
    - Dst: OpenSSLEDDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/opensslsigners.cc:2014,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2018
      start: 2006
    functionDepth: 1
    functionLinenumber: 2006
    functionLinenumberEnd: 2018
    functionName: OpenSSLEDDSADNSCryptoKeyEngine::getPublicKeyString
    functionSourceFile: /src/pdns/pdns/opensslsigners.cc
    functionUses: 0
    functionsReached:
    - string::resize
    - OpenSSLEDDSADNSCryptoKeyEngine::getName
    - get
    - reinterpret_cast<unsigned char*>
    - EVP_PKEY_get_raw_public_key
    - string::at
    - Logging::Logger::error
    linkageType: ''
    returnType: std::string
    signature: std::string OpenSSLEDDSADNSCryptoKeyEngine::getPublicKeyString() const
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: atoi
      Src: /src/pdns/pdns/opensslsigners.cc:2022,1
    - Dst: c_str
      Src: /src/pdns/pdns/opensslsigners.cc:2022,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/opensslsigners.cc:2024,1
    - Dst: OpenSSLEDDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/opensslsigners.cc:2024,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/opensslsigners.cc:2024,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/opensslsigners.cc:2024,1
    - Dst: Key
      Src: /src/pdns/pdns/opensslsigners.cc:2028,1
    - Dst: EVP_PKEY_new_raw_private_key
      Src: /src/pdns/pdns/opensslsigners.cc:2028,1
    - Dst: reinterpret_cast<unsigned char*>
      Src: /src/pdns/pdns/opensslsigners.cc:2028,1
    - Dst: at
      Src: /src/pdns/pdns/opensslsigners.cc:2028,1
    - Dst: length
      Src: /src/pdns/pdns/opensslsigners.cc:2028,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/opensslsigners.cc:2030,1
    - Dst: OpenSSLEDDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/opensslsigners.cc:2030,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 2
    argNames:
    - ' drc'
    - ' stormap'
    argTypes:
    - DNSKEYRecordContent
    - std::map<std::string, std::string>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2032
      start: 2020
    functionDepth: 0
    functionLinenumber: 2020
    functionLinenumberEnd: 2032
    functionName: OpenSSLEDDSADNSCryptoKeyEngine::fromISCMap
    functionSourceFile: /src/pdns/pdns/opensslsigners.cc
    functionUses: 0
    functionsReached:
    - OpenSSLEDDSADNSCryptoKeyEngine::getName
    - length
    - std::to_string
    - atoi
    - EVP_PKEY_new_raw_private_key
    - runtime_error
    - reinterpret_cast<unsigned char*>
    - Key
    - c_str
    - at
    - Logging::Logger::error
    linkageType: ''
    returnType: void
    signature: void OpenSSLEDDSADNSCryptoKeyEngine::fromISCMap(DNSKEYRecordContent&
      drc, std::map<std::string, std::string>& stormap)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: length
      Src: /src/pdns/pdns/opensslsigners.cc:2036,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/opensslsigners.cc:2037,1
    - Dst: OpenSSLEDDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/opensslsigners.cc:2037,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/opensslsigners.cc:2037,1
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/opensslsigners.cc:2041,1
    - Dst: c_str
      Src: /src/pdns/pdns/opensslsigners.cc:2041,1
    - Dst: Key
      Src: /src/pdns/pdns/opensslsigners.cc:2043,1
    - Dst: EVP_PKEY_new_raw_public_key
      Src: /src/pdns/pdns/opensslsigners.cc:2043,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/opensslsigners.cc:2045,1
    - Dst: OpenSSLEDDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/opensslsigners.cc:2045,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 1
    argNames:
    - ' content'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2047
      start: 2034
    functionDepth: 0
    functionLinenumber: 2034
    functionLinenumberEnd: 2047
    functionName: OpenSSLEDDSADNSCryptoKeyEngine::fromPublicKeyString
    functionSourceFile: /src/pdns/pdns/opensslsigners.cc
    functionUses: 0
    functionsReached:
    - length
    - OpenSSLEDDSADNSCryptoKeyEngine::getName
    - std::to_string
    - runtime_error
    - EVP_PKEY_new_raw_public_key
    - reinterpret_cast<const unsigned char*>
    - Key
    - c_str
    - Logging::Logger::error
    linkageType: ''
    returnType: void
    signature: void OpenSSLEDDSADNSCryptoKeyEngine::fromPublicKeyString(const std::string&
      content)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSCryptoKeyEngine::report
      Src: /src/pdns/pdns/opensslsigners.cc:2056,1
    - Dst: DNSCryptoKeyEngine::report
      Src: /src/pdns/pdns/opensslsigners.cc:2057,1
    - Dst: DNSCryptoKeyEngine::report
      Src: /src/pdns/pdns/opensslsigners.cc:2058,1
    - Dst: DNSCryptoKeyEngine::report
      Src: /src/pdns/pdns/opensslsigners.cc:2059,1
    - Dst: DNSCryptoKeyEngine::report
      Src: /src/pdns/pdns/opensslsigners.cc:2061,1
    - Dst: DNSCryptoKeyEngine::report
      Src: /src/pdns/pdns/opensslsigners.cc:2062,1
    - Dst: DNSCryptoKeyEngine::report
      Src: /src/pdns/pdns/opensslsigners.cc:2065,1
    - Dst: DNSCryptoKeyEngine::report
      Src: /src/pdns/pdns/opensslsigners.cc:2068,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2070
      start: 2054
    functionDepth: 0
    functionLinenumber: 2054
    functionLinenumberEnd: 2070
    functionName: LoaderStruct
    functionSourceFile: /src/pdns/pdns/opensslsigners.cc
    functionUses: 0
    functionsReached:
    - DNSCryptoKeyEngine::report
    linkageType: ''
    returnType: void
    signature: void LoaderStruct()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSCryptoKeyEngine::report
      Src: /src/pdns/pdns/opensslsigners.cc:2056,1
    - Dst: DNSCryptoKeyEngine::report
      Src: /src/pdns/pdns/opensslsigners.cc:2057,1
    - Dst: DNSCryptoKeyEngine::report
      Src: /src/pdns/pdns/opensslsigners.cc:2058,1
    - Dst: DNSCryptoKeyEngine::report
      Src: /src/pdns/pdns/opensslsigners.cc:2059,1
    - Dst: DNSCryptoKeyEngine::report
      Src: /src/pdns/pdns/opensslsigners.cc:2061,1
    - Dst: DNSCryptoKeyEngine::report
      Src: /src/pdns/pdns/opensslsigners.cc:2062,1
    - Dst: DNSCryptoKeyEngine::report
      Src: /src/pdns/pdns/opensslsigners.cc:2065,1
    - Dst: DNSCryptoKeyEngine::report
      Src: /src/pdns/pdns/opensslsigners.cc:2068,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2070
      start: 2054
    functionDepth: 0
    functionLinenumber: 2054
    functionLinenumberEnd: 2070
    functionName: LoaderStruct
    functionSourceFile: /src/pdns/pdns/opensslsigners.cc
    functionUses: 0
    functionsReached:
    - DNSCryptoKeyEngine::report
    linkageType: ''
    returnType: void
    signature: void LoaderStruct()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: GssName::setName
      Src: /src/pdns/pdns/gss_context.hh: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: GssName::GssName
    functionSourceFile: /src/pdns/pdns/gss_context.hh
    functionUses: 0
    functionsReached:
    - GssName::setName
    linkageType: ''
    returnType: void
    signature: void GssName()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: GssName::setName
      Src: /src/pdns/pdns/gss_context.hh:78,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' name'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 76
    functionDepth: 0
    functionLinenumber: 76
    functionLinenumberEnd: 79
    functionName: GssName::GssName
    functionSourceFile: /src/pdns/pdns/gss_context.hh
    functionUses: 0
    functionsReached:
    - GssName::setName
    linkageType: ''
    returnType: void
    signature: void GssName(const std::string& name)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/gss_context.hh:88,1
    - Dst: size
      Src: /src/pdns/pdns/gss_context.hh:89,1
    - Dst: c_str
      Src: /src/pdns/pdns/gss_context.hh:90,1
    - Dst: gss_import_name
      Src: /src/pdns/pdns/gss_context.hh:91,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - ' name'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 83
    functionDepth: 0
    functionLinenumber: 83
    functionLinenumberEnd: 96
    functionName: GssName::setName
    functionSourceFile: /src/pdns/pdns/gss_context.hh
    functionUses: 2
    functionsReached:
    - empty
    - c_str
    - gss_import_name
    - size
    linkageType: ''
    returnType: bool
    signature: bool setName(const std::string& name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 98
    functionDepth: 0
    functionLinenumber: 98
    functionLinenumberEnd: 101
    functionName: GssName::setName
    functionSourceFile: /src/pdns/pdns/gss_context.hh
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool setName(const std::string& /* name */)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: gss_release_name
      Src: /src/pdns/pdns/gss_context.hh:108,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 104
    functionDepth: 0
    functionLinenumber: 104
    functionLinenumberEnd: 110
    functionName: ~GssName()
    functionSourceFile: /src/pdns/pdns/gss_context.hh
    functionUses: 0
    functionsReached:
    - gss_release_name
    linkageType: ''
    returnType: void
    signature: void ~GssName()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: gss_compare_name
      Src: /src/pdns/pdns/gss_context.hh:119,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - GssName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 115
    functionDepth: 0
    functionLinenumber: 115
    functionLinenumberEnd: 121
    functionName: operator==(const GssName& rhs)
    functionSourceFile: /src/pdns/pdns/gss_context.hh
    functionUses: 0
    functionsReached:
    - gss_compare_name
    linkageType: ''
    returnType: bool
    signature: bool operator==(const GssName& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 123
    functionDepth: 0
    functionLinenumber: 123
    functionLinenumberEnd: 126
    functionName: operator==(const GssName& /* rhs */)
    functionSourceFile: /src/pdns/pdns/gss_context.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool operator==(const GssName& /* rhs */)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/gss_context.hh:138,1
    - Dst: c_str
      Src: /src/pdns/pdns/gss_context.hh:139,1
    - Dst: gss_import_name
      Src: /src/pdns/pdns/gss_context.hh:140,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/gss_context.hh:142,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/gss_context.hh:142,1
    - Dst: string
      Src: /src/pdns/pdns/gss_context.hh:142,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/gss_context.hh:142,1
    - Dst: gss_compare_name
      Src: /src/pdns/pdns/gss_context.hh:144,1
    - Dst: gss_release_name
      Src: /src/pdns/pdns/gss_context.hh:145,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - ' name'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 132
    functionDepth: 0
    functionLinenumber: 132
    functionLinenumberEnd: 147
    functionName: GssName::match
    functionSourceFile: /src/pdns/pdns/gss_context.hh
    functionUses: 0
    functionsReached:
    - std::to_string
    - gss_compare_name
    - PDNSException
    - string
    - size
    - gss_import_name
    - c_str
    - gss_release_name
    linkageType: ''
    returnType: bool
    signature: bool match(const std::string& name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 152
      start: 149
    functionDepth: 0
    functionLinenumber: 149
    functionLinenumberEnd: 152
    functionName: GssName::match
    functionSourceFile: /src/pdns/pdns/gss_context.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool match(const std::string& /* name */)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 163
      start: 156
    functionDepth: 0
    functionLinenumber: 156
    functionLinenumberEnd: 163
    functionName: GssName::valid
    functionSourceFile: /src/pdns/pdns/gss_context.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool valid()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 187
      start: 187
    functionDepth: 0
    functionLinenumber: 187
    functionLinenumberEnd: 187
    functionName: '& getLabel()'
    functionSourceFile: /src/pdns/pdns/gss_context.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: DNSName
    signature: DNSName & getLabel()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 199
      start: 199
    functionDepth: 0
    functionLinenumber: 199
    functionLinenumberEnd: 199
    functionName: GssContext::getErrorStrings
    functionSourceFile: /src/pdns/pdns/gss_context.hh
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: std::vector<std::string>
    signature: std::vector<std::string> getErrorStrings()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::vector::emplace_back
      Src: /src/pdns/pdns/test-lock_hh.cc:25,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 27
      start: 21
    functionDepth: 0
    functionLinenumber: 21
    functionLinenumberEnd: 27
    functionName: lthread
    functionSourceFile: /src/pdns/pdns/test-lock_hh.cc
    functionUses: 0
    functionsReached:
    - std::vector::emplace_back
    linkageType: ''
    returnType: void
    signature: void lthread()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::vector::emplace_back
      Src: /src/pdns/pdns/test-lock_hh.cc:33,1
    - Dst: std::thread::join
      Src: /src/pdns/pdns/test-lock_hh.cc:36,1
    - Dst: std::vector::clear
      Src: /src/pdns/pdns/test-lock_hh.cc:37,1
    - Dst: std::vector::emplace_back
      Src: /src/pdns/pdns/test-lock_hh.cc:41,1
    - Dst: at
      Src: /src/pdns/pdns/test-lock_hh.cc:47,1
    - Dst: TryReadLock::gotIt
      Src: /src/pdns/pdns/test-lock_hh.cc:48,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-lock_hh.cc:53,1
    - Dst: std::vector::clear
      Src: /src/pdns/pdns/test-lock_hh.cc:55,1
    - Dst: at
      Src: /src/pdns/pdns/test-lock_hh.cc:58,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-lock_hh.cc:59,1
    - Dst: TryReadLock::gotIt
      Src: /src/pdns/pdns/test-lock_hh.cc:59,1
    - Dst: clear
      Src: /src/pdns/pdns/test-lock_hh.cc:62,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 29
    functionDepth: 1
    functionLinenumber: 29
    functionLinenumberEnd: 63
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-lock_hh.cc
    functionUses: 0
    functionsReached:
    - TryReadLock::gotIt
    - std::thread::join
    - std::vector::emplace_back
    - clear
    - BOOST_CHECK
    - std::vector::clear
    - at
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_pdns_lock)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: map::emplace
      Src: /src/pdns/pdns/qtype.cc:111,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ' names'
    argTypes:
    - map<const string, uint16_t>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 107
    functionDepth: 0
    functionLinenumber: 107
    functionLinenumberEnd: 114
    functionName: swapElements
    functionSourceFile: /src/pdns/pdns/qtype.cc
    functionUses: 0
    functionsReached:
    - map::emplace
    linkageType: ''
    returnType: map<uint16_t, const string>
    signature: map<uint16_t, const string> swapElements(const map<const string, uint16_t>&
      names)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: count
      Src: /src/pdns/pdns/qtype.cc:121,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 122
      start: 119
    functionDepth: 0
    functionLinenumber: 119
    functionLinenumberEnd: 122
    functionName: QType::isSupportedType
    functionSourceFile: /src/pdns/pdns/qtype.cc
    functionUses: 0
    functionsReached:
    - count
    linkageType: ''
    returnType: bool
    signature: bool QType::isSupportedType() const
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 131
      start: 124
    functionDepth: 0
    functionLinenumber: 124
    functionLinenumberEnd: 131
    functionName: QType::isMetadataType
    functionSourceFile: /src/pdns/pdns/qtype.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool QType::isMetadataType() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: find
      Src: /src/pdns/pdns/qtype.cc:135,1
    - Dst: cend
      Src: /src/pdns/pdns/qtype.cc:136,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/qtype.cc:139,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 133
    functionDepth: 0
    functionLinenumber: 133
    functionLinenumberEnd: 140
    functionName: QType::toString
    functionSourceFile: /src/pdns/pdns/qtype.cc
    functionUses: 0
    functionsReached:
    - cend
    - std::to_string
    - find
    linkageType: ''
    returnType: string
    signature: string QType::toString() const
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: toUpper
      Src: /src/pdns/pdns/qtype.cc:144,1
    - Dst: find
      Src: /src/pdns/pdns/qtype.cc:146,1
    - Dst: cend
      Src: /src/pdns/pdns/qtype.cc:147,1
    - Dst: static_cast<uint16_t>
      Src: /src/pdns/pdns/qtype.cc:151,1
    - Dst: atoi
      Src: /src/pdns/pdns/qtype.cc:151,1
    - Dst: boost::starts_with
      Src: /src/pdns/pdns/qtype.cc:154,1
    - Dst: static_cast<uint16_t>
      Src: /src/pdns/pdns/qtype.cc:155,1
    - Dst: atoi
      Src: /src/pdns/pdns/qtype.cc:155,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - p
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 159
      start: 142
    functionDepth: 0
    functionLinenumber: 142
    functionLinenumberEnd: 159
    functionName: QType::chartocode
    functionSourceFile: /src/pdns/pdns/qtype.cc
    functionUses: 1
    functionsReached:
    - atoi
    - boost::starts_with
    - toUpper
    - static_cast<uint16_t>
    - cend
    - find
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t QType::chartocode(const char *p)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: chartocode
      Src: /src/pdns/pdns/qtype.cc:163,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - p
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 165
      start: 161
    functionDepth: 0
    functionLinenumber: 161
    functionLinenumberEnd: 165
    functionName: '&QType::operator=(const char *p)'
    functionSourceFile: /src/pdns/pdns/qtype.cc
    functionUses: 0
    functionsReached:
    - chartocode
    linkageType: ''
    returnType: QType
    signature: QType &QType::operator=(const char *p)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: chartocode
      Src: /src/pdns/pdns/qtype.cc:169,1
    - Dst: string::c_str
      Src: /src/pdns/pdns/qtype.cc:169,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - s
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 171
      start: 167
    functionDepth: 0
    functionLinenumber: 167
    functionLinenumberEnd: 171
    functionName: '&QType::operator=(const string &s)'
    functionSourceFile: /src/pdns/pdns/qtype.cc
    functionUses: 0
    functionsReached:
    - string::c_str
    - chartocode
    linkageType: ''
    returnType: QType
    signature: QType &QType::operator=(const string &s)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: find
      Src: /src/pdns/pdns/qtype.cc:182,1
    - Dst: end
      Src: /src/pdns/pdns/qtype.cc:183,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/qtype.cc:184,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - ' code'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 187
      start: 180
    functionDepth: 0
    functionLinenumber: 180
    functionLinenumberEnd: 187
    functionName: QClass::QClass
    functionSourceFile: /src/pdns/pdns/qtype.cc
    functionUses: 0
    functionsReached:
    - end
    - find
    - std::runtime_error
    linkageType: ''
    returnType: void
    signature: void QClass::QClass(const std::string& code)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: std::to_string
      Src: /src/pdns/pdns/qtype.cc:201,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 203
      start: 189
    functionDepth: 0
    functionLinenumber: 189
    functionLinenumberEnd: 203
    functionName: QClass::toString
    functionSourceFile: /src/pdns/pdns/qtype.cc
    functionUses: 0
    functionsReached:
    - std::to_string
    linkageType: ''
    returnType: std::string
    signature: std::string QClass::toString() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSRecordContent::TypeToNumber
      Src: /src/pdns/pdns/test-dnsparser_hh.cc:18,1
    - Dst: DNSRecordContent::TypeToNumber
      Src: /src/pdns/pdns/test-dnsparser_hh.cc:19,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsparser_hh.cc:20,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsparser_hh.cc:21,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 22
      start: 14
    functionDepth: 0
    functionLinenumber: 14
    functionLinenumberEnd: 22
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-dnsparser_hh.cc
    functionUses: 0
    functionsReached:
    - DNSRecordContent::TypeToNumber
    - BOOST_CHECK_EQUAL
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_type_lowercase)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/tcounters.hh:83,1
    - Dst: auto::d_instances::emplace
      Src: /src/pdns/pdns/tcounters.hh:84,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ptr
    argTypes:
    - TLocalCounters<Counters>*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 81
    functionDepth: 0
    functionLinenumber: 81
    functionLinenumberEnd: 85
    functionName: pdns::GlobalCounters::subscribe
    functionSourceFile: /src/pdns/pdns/tcounters.hh
    functionUses: 0
    functionsReached:
    - auto::d_instances::emplace
    - lock
    linkageType: ''
    returnType: void
    signature: void subscribe(TLocalCounters<Counters>* ptr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/tcounters.hh:90,1
    - Dst: auto::d_instances::erase
      Src: /src/pdns/pdns/tcounters.hh:91,1
    - Dst: auto::d_history::merge
      Src: /src/pdns/pdns/tcounters.hh:92,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ptr
    - ' data'
    argTypes:
    - TLocalCounters<Counters>*
    - Counters
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 88
    functionDepth: 0
    functionLinenumber: 88
    functionLinenumberEnd: 93
    functionName: pdns::GlobalCounters::unsubscribe
    functionSourceFile: /src/pdns/pdns/tcounters.hh
    functionUses: 0
    functionsReached:
    - auto::d_history::merge
    - auto::d_instances::erase
    - lock
    linkageType: ''
    returnType: void
    signature: void unsubscribe(TLocalCounters<Counters>* ptr, const Counters& data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/tcounters.hh:109,1
    - Dst: Counters
      Src: /src/pdns/pdns/tcounters.hh: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: pdns::GlobalCounters::reset
    functionSourceFile: /src/pdns/pdns/tcounters.hh
    functionUses: 0
    functionsReached:
    - Counters
    - lock
    linkageType: ''
    returnType: void
    signature: void reset()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: subscribe
      Src: /src/pdns/pdns/tcounters.hh:133,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' collector'
    argTypes:
    - GlobalCounters<Counters>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 134
      start: 130
    functionDepth: 0
    functionLinenumber: 130
    functionLinenumberEnd: 134
    functionName: pdns::TLocalCounters::TLocalCounters
    functionSourceFile: /src/pdns/pdns/tcounters.hh
    functionUses: 0
    functionsReached:
    - subscribe
    linkageType: ''
    returnType: void
    signature: void TLocalCounters(GlobalCounters<Counters>& collector, timeval interval
      = timeval{0, defaultSnapUpdatePeriodus})
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: unsubscribe
      Src: /src/pdns/pdns/tcounters.hh:138,1
    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: ~TLocalCounters()
    functionSourceFile: /src/pdns/pdns/tcounters.hh
    functionUses: 0
    functionsReached:
    - unsubscribe
    linkageType: ''
    returnType: void
    signature: void ~TLocalCounters()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 141
      start: 141
    functionDepth: 0
    functionLinenumber: 141
    functionLinenumberEnd: 141
    functionName: pdns::TLocalCounters::TLocalCounters
    functionSourceFile: /src/pdns/pdns/tcounters.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void TLocalCounters(const TLocalCounters&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 142
      start: 142
    functionDepth: 0
    functionLinenumber: 142
    functionLinenumberEnd: 142
    functionName: pdns::TLocalCounters::TLocalCounters
    functionSourceFile: /src/pdns/pdns/tcounters.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void TLocalCounters(TLocalCounters&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 143
      start: 143
    functionDepth: 0
    functionLinenumber: 143
    functionLinenumberEnd: 143
    functionName: '& operator=(const TLocalCounters&)'
    functionSourceFile: /src/pdns/pdns/tcounters.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: TLocalCounters
    signature: TLocalCounters & operator=(const TLocalCounters&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 144
      start: 144
    functionDepth: 0
    functionLinenumber: 144
    functionLinenumberEnd: 144
    functionName: '& operator=(TLocalCounters&&)'
    functionSourceFile: /src/pdns/pdns/tcounters.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: TLocalCounters
    signature: TLocalCounters & operator=(TLocalCounters&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::TLocalCounters::at
      Src: /src/pdns/pdns/tcounters.hh:149,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - index
    argTypes:
    - Enum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 150
      start: 147
    functionDepth: 0
    functionLinenumber: 147
    functionLinenumberEnd: 150
    functionName: pdns::TLocalCounters::at
    functionSourceFile: /src/pdns/pdns/tcounters.hh
    functionUses: 1
    functionsReached:
    - pdns::TLocalCounters::at
    linkageType: ''
    returnType: auto
    signature: auto & at(Enum index)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/tcounters.hh:156,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - index
    argTypes:
    - Enum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 157
      start: 154
    functionDepth: 0
    functionLinenumber: 154
    functionLinenumberEnd: 157
    functionName: pdns::TLocalCounters::snapAt
    functionSourceFile: /src/pdns/pdns/tcounters.hh
    functionUses: 0
    functionsReached:
    - lock
    linkageType: ''
    returnType: auto
    signature: auto snapAt(Enum index)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/tcounters.hh:161,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 162
      start: 159
    functionDepth: 0
    functionLinenumber: 159
    functionLinenumberEnd: 162
    functionName: pdns::TLocalCounters::getSnap
    functionSourceFile: /src/pdns/pdns/tcounters.hh
    functionUses: 0
    functionsReached:
    - lock
    linkageType: ''
    returnType: Counters
    signature: Counters getSnap()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: timersub
      Src: /src/pdns/pdns/tcounters.hh:169,1
    - Dst: timercmp
      Src: /src/pdns/pdns/tcounters.hh:171,1
    - Dst: lock
      Src: /src/pdns/pdns/tcounters.hh:173,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - ' tv_now'
    argTypes:
    - timeval
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 178
      start: 164
    functionDepth: 0
    functionLinenumber: 164
    functionLinenumberEnd: 178
    functionName: pdns::TLocalCounters::updateSnap
    functionSourceFile: /src/pdns/pdns/tcounters.hh
    functionUses: 0
    functionsReached:
    - timersub
    - timercmp
    - lock
    linkageType: ''
    returnType: bool
    signature: bool updateSnap(const timeval& tv_now, bool force = false)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: gettimeofday
      Src: /src/pdns/pdns/tcounters.hh:185,1
    - Dst: pdns::TLocalCounters::updateSnap
      Src: /src/pdns/pdns/tcounters.hh:187,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 188
      start: 180
    functionDepth: 0
    functionLinenumber: 180
    functionLinenumberEnd: 188
    functionName: pdns::TLocalCounters::updateSnap
    functionSourceFile: /src/pdns/pdns/tcounters.hh
    functionUses: 1
    functionsReached:
    - gettimeofday
    - pdns::TLocalCounters::updateSnap
    linkageType: ''
    returnType: bool
    signature: bool updateSnap(bool force = false)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/tcounters.hh:205,1
    - Dst: auto::d_history::at
      Src: /src/pdns/pdns/tcounters.hh:206,1
    - Dst: snapAt
      Src: /src/pdns/pdns/tcounters.hh:208,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - index
    argTypes:
    - Enum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 211
      start: 203
    functionDepth: 0
    functionLinenumber: 203
    functionLinenumberEnd: 211
    functionName: pdns::GlobalCounters<Counters>::sum
    functionSourceFile: /src/pdns/pdns/tcounters.hh
    functionUses: 0
    functionsReached:
    - auto::d_history::at
    - snapAt
    - lock
    linkageType: ''
    returnType: auto
    signature: auto GlobalCounters<Counters>::sum(Enum index)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/tcounters.hh:220,1
    - Dst: auto::d_history::at
      Src: /src/pdns/pdns/tcounters.hh:221,1
    - Dst: snapAt
      Src: /src/pdns/pdns/tcounters.hh:225,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - index
    argTypes:
    - Enum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 230
      start: 218
    functionDepth: 0
    functionLinenumber: 218
    functionLinenumberEnd: 230
    functionName: pdns::GlobalCounters<Counters>::avg
    functionSourceFile: /src/pdns/pdns/tcounters.hh
    functionUses: 0
    functionsReached:
    - auto::d_history::at
    - snapAt
    - lock
    linkageType: ''
    returnType: auto
    signature: auto GlobalCounters<Counters>::avg(Enum index)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/tcounters.hh:239,1
    - Dst: pdns::GlobalCounters<Counters>::max
      Src: /src/pdns/pdns/tcounters.hh:242,1
    - Dst: snapAt
      Src: /src/pdns/pdns/tcounters.hh:242,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - index
    argTypes:
    - Enum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 245
      start: 237
    functionDepth: 0
    functionLinenumber: 237
    functionLinenumberEnd: 245
    functionName: pdns::GlobalCounters<Counters>::max
    functionSourceFile: /src/pdns/pdns/tcounters.hh
    functionUses: 1
    functionsReached:
    - pdns::GlobalCounters<Counters>::max
    - snapAt
    - lock
    linkageType: ''
    returnType: auto
    signature: auto GlobalCounters<Counters>::max(Enum index)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/tcounters.hh:251,1
    - Dst: getSnap
      Src: /src/pdns/pdns/tcounters.hh:254,1
    - Dst: Counters::merge
      Src: /src/pdns/pdns/tcounters.hh:255,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 258
      start: 249
    functionDepth: 0
    functionLinenumber: 249
    functionLinenumberEnd: 258
    functionName: pdns::GlobalCounters<Counters>::aggregatedSnap
    functionSourceFile: /src/pdns/pdns/tcounters.hh
    functionUses: 0
    functionsReached:
    - Counters::merge
    - getSnap
    - lock
    linkageType: ''
    returnType: Counters
    signature: Counters GlobalCounters<Counters>::aggregatedSnap()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/tcounters.hh:83,1
    - Dst: auto::d_instances::emplace
      Src: /src/pdns/pdns/tcounters.hh:84,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ptr
    argTypes:
    - TLocalCounters<Counters>*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 81
    functionDepth: 0
    functionLinenumber: 81
    functionLinenumberEnd: 85
    functionName: pdns::GlobalCounters::subscribe
    functionSourceFile: /src/pdns/pdns/tcounters.hh
    functionUses: 0
    functionsReached:
    - auto::d_instances::emplace
    - lock
    linkageType: ''
    returnType: void
    signature: void subscribe(TLocalCounters<Counters>* ptr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/tcounters.hh:90,1
    - Dst: auto::d_instances::erase
      Src: /src/pdns/pdns/tcounters.hh:91,1
    - Dst: auto::d_history::merge
      Src: /src/pdns/pdns/tcounters.hh:92,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ptr
    - ' data'
    argTypes:
    - TLocalCounters<Counters>*
    - Counters
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 88
    functionDepth: 0
    functionLinenumber: 88
    functionLinenumberEnd: 93
    functionName: pdns::GlobalCounters::unsubscribe
    functionSourceFile: /src/pdns/pdns/tcounters.hh
    functionUses: 0
    functionsReached:
    - auto::d_history::merge
    - auto::d_instances::erase
    - lock
    linkageType: ''
    returnType: void
    signature: void unsubscribe(TLocalCounters<Counters>* ptr, const Counters& data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/tcounters.hh:109,1
    - Dst: Counters
      Src: /src/pdns/pdns/tcounters.hh: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: pdns::GlobalCounters::reset
    functionSourceFile: /src/pdns/pdns/tcounters.hh
    functionUses: 0
    functionsReached:
    - Counters
    - lock
    linkageType: ''
    returnType: void
    signature: void reset()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: subscribe
      Src: /src/pdns/pdns/tcounters.hh:133,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' collector'
    argTypes:
    - GlobalCounters<Counters>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 134
      start: 130
    functionDepth: 0
    functionLinenumber: 130
    functionLinenumberEnd: 134
    functionName: pdns::TLocalCounters::TLocalCounters
    functionSourceFile: /src/pdns/pdns/tcounters.hh
    functionUses: 0
    functionsReached:
    - subscribe
    linkageType: ''
    returnType: void
    signature: void TLocalCounters(GlobalCounters<Counters>& collector, timeval interval
      = timeval{0, defaultSnapUpdatePeriodus})
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: unsubscribe
      Src: /src/pdns/pdns/tcounters.hh:138,1
    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: ~TLocalCounters()
    functionSourceFile: /src/pdns/pdns/tcounters.hh
    functionUses: 0
    functionsReached:
    - unsubscribe
    linkageType: ''
    returnType: void
    signature: void ~TLocalCounters()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 141
      start: 141
    functionDepth: 0
    functionLinenumber: 141
    functionLinenumberEnd: 141
    functionName: pdns::TLocalCounters::TLocalCounters
    functionSourceFile: /src/pdns/pdns/tcounters.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void TLocalCounters(const TLocalCounters&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 142
      start: 142
    functionDepth: 0
    functionLinenumber: 142
    functionLinenumberEnd: 142
    functionName: pdns::TLocalCounters::TLocalCounters
    functionSourceFile: /src/pdns/pdns/tcounters.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void TLocalCounters(TLocalCounters&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 143
      start: 143
    functionDepth: 0
    functionLinenumber: 143
    functionLinenumberEnd: 143
    functionName: '& operator=(const TLocalCounters&)'
    functionSourceFile: /src/pdns/pdns/tcounters.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: TLocalCounters
    signature: TLocalCounters & operator=(const TLocalCounters&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 144
      start: 144
    functionDepth: 0
    functionLinenumber: 144
    functionLinenumberEnd: 144
    functionName: '& operator=(TLocalCounters&&)'
    functionSourceFile: /src/pdns/pdns/tcounters.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: TLocalCounters
    signature: TLocalCounters & operator=(TLocalCounters&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::TLocalCounters::at
      Src: /src/pdns/pdns/tcounters.hh:149,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - index
    argTypes:
    - Enum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 150
      start: 147
    functionDepth: 0
    functionLinenumber: 147
    functionLinenumberEnd: 150
    functionName: pdns::TLocalCounters::at
    functionSourceFile: /src/pdns/pdns/tcounters.hh
    functionUses: 2
    functionsReached:
    - pdns::TLocalCounters::at
    linkageType: ''
    returnType: auto
    signature: auto & at(Enum index)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/tcounters.hh:156,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - index
    argTypes:
    - Enum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 157
      start: 154
    functionDepth: 0
    functionLinenumber: 154
    functionLinenumberEnd: 157
    functionName: pdns::TLocalCounters::snapAt
    functionSourceFile: /src/pdns/pdns/tcounters.hh
    functionUses: 0
    functionsReached:
    - lock
    linkageType: ''
    returnType: auto
    signature: auto snapAt(Enum index)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/tcounters.hh:161,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 162
      start: 159
    functionDepth: 0
    functionLinenumber: 159
    functionLinenumberEnd: 162
    functionName: pdns::TLocalCounters::getSnap
    functionSourceFile: /src/pdns/pdns/tcounters.hh
    functionUses: 0
    functionsReached:
    - lock
    linkageType: ''
    returnType: Counters
    signature: Counters getSnap()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: timersub
      Src: /src/pdns/pdns/tcounters.hh:169,1
    - Dst: timercmp
      Src: /src/pdns/pdns/tcounters.hh:171,1
    - Dst: lock
      Src: /src/pdns/pdns/tcounters.hh:173,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - ' tv_now'
    argTypes:
    - timeval
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 178
      start: 164
    functionDepth: 0
    functionLinenumber: 164
    functionLinenumberEnd: 178
    functionName: pdns::TLocalCounters::updateSnap
    functionSourceFile: /src/pdns/pdns/tcounters.hh
    functionUses: 1
    functionsReached:
    - timersub
    - timercmp
    - lock
    linkageType: ''
    returnType: bool
    signature: bool updateSnap(const timeval& tv_now, bool force = false)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: gettimeofday
      Src: /src/pdns/pdns/tcounters.hh:185,1
    - Dst: pdns::TLocalCounters::updateSnap
      Src: /src/pdns/pdns/tcounters.hh:187,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 188
      start: 180
    functionDepth: 0
    functionLinenumber: 180
    functionLinenumberEnd: 188
    functionName: pdns::TLocalCounters::updateSnap
    functionSourceFile: /src/pdns/pdns/tcounters.hh
    functionUses: 2
    functionsReached:
    - gettimeofday
    - pdns::TLocalCounters::updateSnap
    linkageType: ''
    returnType: bool
    signature: bool updateSnap(bool force = false)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/tcounters.hh:205,1
    - Dst: auto::d_history::at
      Src: /src/pdns/pdns/tcounters.hh:206,1
    - Dst: snapAt
      Src: /src/pdns/pdns/tcounters.hh:208,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - index
    argTypes:
    - Enum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 211
      start: 203
    functionDepth: 0
    functionLinenumber: 203
    functionLinenumberEnd: 211
    functionName: pdns::GlobalCounters<Counters>::sum
    functionSourceFile: /src/pdns/pdns/tcounters.hh
    functionUses: 0
    functionsReached:
    - auto::d_history::at
    - snapAt
    - lock
    linkageType: ''
    returnType: auto
    signature: auto GlobalCounters<Counters>::sum(Enum index)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/tcounters.hh:220,1
    - Dst: auto::d_history::at
      Src: /src/pdns/pdns/tcounters.hh:221,1
    - Dst: snapAt
      Src: /src/pdns/pdns/tcounters.hh:225,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - index
    argTypes:
    - Enum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 230
      start: 218
    functionDepth: 0
    functionLinenumber: 218
    functionLinenumberEnd: 230
    functionName: pdns::GlobalCounters<Counters>::avg
    functionSourceFile: /src/pdns/pdns/tcounters.hh
    functionUses: 0
    functionsReached:
    - auto::d_history::at
    - snapAt
    - lock
    linkageType: ''
    returnType: auto
    signature: auto GlobalCounters<Counters>::avg(Enum index)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/tcounters.hh:239,1
    - Dst: pdns::GlobalCounters<Counters>::max
      Src: /src/pdns/pdns/tcounters.hh:242,1
    - Dst: snapAt
      Src: /src/pdns/pdns/tcounters.hh:242,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - index
    argTypes:
    - Enum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 245
      start: 237
    functionDepth: 0
    functionLinenumber: 237
    functionLinenumberEnd: 245
    functionName: pdns::GlobalCounters<Counters>::max
    functionSourceFile: /src/pdns/pdns/tcounters.hh
    functionUses: 2
    functionsReached:
    - pdns::GlobalCounters<Counters>::max
    - snapAt
    - lock
    linkageType: ''
    returnType: auto
    signature: auto GlobalCounters<Counters>::max(Enum index)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/tcounters.hh:251,1
    - Dst: getSnap
      Src: /src/pdns/pdns/tcounters.hh:254,1
    - Dst: Counters::merge
      Src: /src/pdns/pdns/tcounters.hh:255,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 258
      start: 249
    functionDepth: 0
    functionLinenumber: 249
    functionLinenumberEnd: 258
    functionName: pdns::GlobalCounters<Counters>::aggregatedSnap
    functionSourceFile: /src/pdns/pdns/tcounters.hh
    functionUses: 0
    functionsReached:
    - Counters::merge
    - getSnap
    - lock
    linkageType: ''
    returnType: Counters
    signature: Counters GlobalCounters<Counters>::aggregatedSnap()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::md5
      Src: /src/pdns/pdns/test-digests_hh.cc:22,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-digests_hh.cc:24,1
    - Dst: makeHexDump
      Src: /src/pdns/pdns/test-digests_hh.cc:24,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 25
      start: 19
    functionDepth: 1
    functionLinenumber: 19
    functionLinenumberEnd: 25
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-digests_hh.cc
    functionUses: 0
    functionsReached:
    - pdns::md5
    - makeHexDump
    - BOOST_CHECK_EQUAL
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_pdns_md5sum)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::sha1
      Src: /src/pdns/pdns/test-digests_hh.cc:30,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-digests_hh.cc:32,1
    - Dst: makeHexDump
      Src: /src/pdns/pdns/test-digests_hh.cc:32,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 33
      start: 27
    functionDepth: 1
    functionLinenumber: 27
    functionLinenumberEnd: 33
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-digests_hh.cc
    functionUses: 0
    functionsReached:
    - makeHexDump
    - BOOST_CHECK_EQUAL
    - pdns::sha1
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_pdns_sha1sum)
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - keyType
    argTypes:
    - keytype_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 61
    functionDepth: 0
    functionLinenumber: 61
    functionLinenumberEnd: 73
    functionName: DNSSEC::keyTypeToString
    functionSourceFile: /src/pdns/pdns/dnssec.hh
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string keyTypeToString(keytype_t keyType)
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: pdns_iequals
      Src: /src/pdns/pdns/dnssec.hh:82,1
    - Dst: pdns_iequals
      Src: /src/pdns/pdns/dnssec.hh:85,1
    - Dst: pdns_iequals
      Src: /src/pdns/pdns/dnssec.hh:88,1
    - Dst: pdns_iequals
      Src: /src/pdns/pdns/dnssec.hh:91,1
    - Dst: pdns_iequals
      Src: /src/pdns/pdns/dnssec.hh:94,1
    - Dst: pdns_iequals
      Src: /src/pdns/pdns/dnssec.hh:97,1
    - Dst: pdns_iequals
      Src: /src/pdns/pdns/dnssec.hh:100,1
    - Dst: pdns_iequals
      Src: /src/pdns/pdns/dnssec.hh:103,1
    - Dst: pdns_iequals
      Src: /src/pdns/pdns/dnssec.hh:106,1
    - Dst: pdns_iequals
      Src: /src/pdns/pdns/dnssec.hh:109,1
    - Dst: pdns_iequals
      Src: /src/pdns/pdns/dnssec.hh:112,1
    - Dst: pdns_iequals
      Src: /src/pdns/pdns/dnssec.hh:115,1
    - Dst: pdns_iequals
      Src: /src/pdns/pdns/dnssec.hh:118,1
    - Dst: pdns_iequals
      Src: /src/pdns/pdns/dnssec.hh:121,1
    - Dst: pdns_iequals
      Src: /src/pdns/pdns/dnssec.hh:124,1
    - Dst: pdns_iequals
      Src: /src/pdns/pdns/dnssec.hh:127,1
    - Dst: pdns_iequals
      Src: /src/pdns/pdns/dnssec.hh:130,1
    - Dst: pdns_iequals
      Src: /src/pdns/pdns/dnssec.hh:133,1
    - Dst: pdns_iequals
      Src: /src/pdns/pdns/dnssec.hh:136,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 59
    argCount: 1
    argNames:
    - ' algorithm'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 79
    functionDepth: 0
    functionLinenumber: 79
    functionLinenumberEnd: 140
    functionName: DNSSEC::shorthand2algorithm
    functionSourceFile: /src/pdns/pdns/dnssec.hh
    functionUses: 5
    functionsReached:
    - pdns_iequals
    linkageType: ''
    returnType: int
    signature: int shorthand2algorithm(const std::string& algorithm)
  - BBCount: 22
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 42
    argCount: 1
    argNames:
    - algo
    argTypes:
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 188
      start: 145
    functionDepth: 0
    functionLinenumber: 145
    functionLinenumberEnd: 188
    functionName: DNSSEC::algorithm2name
    functionSourceFile: /src/pdns/pdns/dnssec.hh
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string algorithm2name(uint8_t algo)
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - alpn
    - client
    argTypes:
    - TLSFrontend::ALPN
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 36
      start: 18
    functionDepth: 0
    functionLinenumber: 18
    functionLinenumberEnd: 36
    functionName: getALPNVector
    functionSourceFile: /src/pdns/pdns/tcpiohandler.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::vector<std::vector<uint8_t>>
    signature: std::vector<std::vector<uint8_t>> getALPNVector(TLSFrontend::ALPN alpn,
      bool client)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/tcpiohandler.cc:44,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 41
    functionDepth: 1
    functionLinenumber: 41
    functionLinenumberEnd: 50
    functionName: shouldDoVerboseLogging
    functionSourceFile: /src/pdns/pdns/tcpiohandler.cc
    functionUses: 0
    functionsReached:
    - dnsdist::configuration::getCurrentRuntimeConfiguration
    linkageType: ''
    returnType: bool
    signature: bool shouldDoVerboseLogging()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/tcpiohandler.cc:44,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 41
    functionDepth: 1
    functionLinenumber: 41
    functionLinenumberEnd: 50
    functionName: shouldDoVerboseLogging
    functionSourceFile: /src/pdns/pdns/tcpiohandler.cc
    functionUses: 0
    functionsReached:
    - dnsdist::configuration::getCurrentRuntimeConfiguration
    linkageType: ''
    returnType: bool
    signature: bool shouldDoVerboseLogging()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: registerOpenSSLUser
      Src: /src/pdns/pdns/tcpiohandler.cc:68,1
    - Dst: libssl_init_server_context
      Src: /src/pdns/pdns/tcpiohandler.cc:70,1
    - Dst: SLOG
      Src: /src/pdns/pdns/tcpiohandler.cc:73,1
    - Dst: warnlog
      Src: /src/pdns/pdns/tcpiohandler.cc:73,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/tcpiohandler.cc:74,1
    - Dst: warnlog
      Src: /src/pdns/pdns/tcpiohandler.cc:76,1
    - Dst: std::move
      Src: /src/pdns/pdns/tcpiohandler.cc:80,1
    - Dst: std::move
      Src: /src/pdns/pdns/tcpiohandler.cc:82,1
    - Dst: std::move
      Src: /src/pdns/pdns/tcpiohandler.cc:84,1
    - Dst: SSL_CTX_set_tlsext_servername_callback
      Src: /src/pdns/pdns/tcpiohandler.cc:86,1
    - Dst: second::get
      Src: /src/pdns/pdns/tcpiohandler.cc:86,1
    - Dst: ERR_print_errors_fp
      Src: /src/pdns/pdns/tcpiohandler.cc:90,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/tcpiohandler.cc:91,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/tcpiohandler.cc:91,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 2
    argNames:
    - ' addr'
    - ' tlsConfig'
    argTypes:
    - ComboAddress
    - TLSConfig
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 66
    functionDepth: 1
    functionLinenumber: 66
    functionLinenumberEnd: 93
    functionName: OpenSSLFrontendContext::OpenSSLFrontendContext
    functionSourceFile: /src/pdns/pdns/tcpiohandler.cc
    functionUses: 0
    functionsReached:
    - SSL_CTX_set_tlsext_servername_callback
    - std::move
    - SLOG
    - std::runtime_error
    - libssl_init_server_context
    - second::get
    - warnlog
    - ERR_print_errors_fp
    - registerOpenSSLUser
    - dnsdist::logging::getTopLogger
    - toStringWithPort
    linkageType: ''
    returnType: void
    signature: void OpenSSLFrontendContext(const ComboAddress& addr, const TLSConfig&
      tlsConfig)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: reset
      Src: /src/pdns/pdns/tcpiohandler.cc:97,1
    - Dst: unregisterOpenSSLUser
      Src: /src/pdns/pdns/tcpiohandler.cc:99,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 95
    functionDepth: 0
    functionLinenumber: 95
    functionLinenumberEnd: 100
    functionName: OpenSSLFrontendContext::cleanup
    functionSourceFile: /src/pdns/pdns/tcpiohandler.cc
    functionUses: 0
    functionsReached:
    - reset
    - unregisterOpenSSLUser
    linkageType: ''
    returnType: void
    signature: void cleanup()
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: SSL_get_servername
      Src: /src/pdns/pdns/tcpiohandler.cc:112,1
    - Dst: reinterpret_cast<OpenSSLFrontendContext*>
      Src: /src/pdns/pdns/tcpiohandler.cc:117,1
    - Dst: libssl_get_ticket_key_callback_data
      Src: /src/pdns/pdns/tcpiohandler.cc:117,1
    - Dst: std::string_view
      Src: /src/pdns/pdns/tcpiohandler.cc:122,1
    - Dst: auto*::d_sniMap::find
      Src: /src/pdns/pdns/tcpiohandler.cc:124,1
    - Dst: auto*::d_sniMap::end
      Src: /src/pdns/pdns/tcpiohandler.cc:125,1
    - Dst: SSL_set_SSL_CTX
      Src: /src/pdns/pdns/tcpiohandler.cc:133,1
    - Dst: auto::second::get
      Src: /src/pdns/pdns/tcpiohandler.cc:133,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - ssl
    argTypes:
    - SSL*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 135
      start: 110
    functionDepth: 0
    functionLinenumber: 110
    functionLinenumberEnd: 135
    functionName: sni_server_name_callback
    functionSourceFile: /src/pdns/pdns/tcpiohandler.cc
    functionUses: 0
    functionsReached:
    - libssl_get_ticket_key_callback_data
    - auto*::d_sniMap::end
    - auto*::d_sniMap::find
    - std::string_view
    - SSL_set_SSL_CTX
    - reinterpret_cast<OpenSSLFrontendContext*>
    - SSL_get_servername
    - auto::second::get
    linkageType: ''
    returnType: int
    signature: int sni_server_name_callback(SSL* ssl, int* /* alert */, void* /* arg
      */)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/tcpiohandler.cc:140,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 1
    argNames:
    - ' sess'
    argTypes:
    - std::unique_ptr<SSL_SESSION, void(*)(SSL_SESSION*)>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 142
      start: 140
    functionDepth: 0
    functionLinenumber: 140
    functionLinenumberEnd: 142
    functionName: OpenSSLSession::OpenSSLSession
    functionSourceFile: /src/pdns/pdns/tcpiohandler.cc
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void OpenSSLSession(std::unique_ptr<SSL_SESSION, void(*)(SSL_SESSION*)>&&
      sess)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/tcpiohandler.cc:146,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 144
    functionDepth: 0
    functionLinenumber: 144
    functionLinenumberEnd: 147
    functionName: OpenSSLSession::getNative
    functionSourceFile: /src/pdns/pdns/tcpiohandler.cc
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: std::unique_ptr<SSL_SESSION, void(*)(SSL_SESSION*)>
    signature: std::unique_ptr<SSL_SESSION, void(*)(SSL_SESSION*)> getNative()
  - BBCount: 25
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/tcpiohandler.cc:159,1
    - Dst: std::move
      Src: /src/pdns/pdns/tcpiohandler.cc:159,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/tcpiohandler.cc:164,1
    - Dst: infolog
      Src: /src/pdns/pdns/tcpiohandler.cc:164,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/tcpiohandler.cc:165,1
    - Dst: shouldDoVerboseLogging
      Src: /src/pdns/pdns/tcpiohandler.cc:166,1
    - Dst: ERR_print_errors_fp
      Src: /src/pdns/pdns/tcpiohandler.cc:167,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/tcpiohandler.cc:169,1
    - Dst: SSL_set_fd
      Src: /src/pdns/pdns/tcpiohandler.cc:172,1
    - Dst: get
      Src: /src/pdns/pdns/tcpiohandler.cc:172,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/tcpiohandler.cc:173,1
    - Dst: SSL_set_ex_data
      Src: /src/pdns/pdns/tcpiohandler.cc:176,1
    - Dst: get
      Src: /src/pdns/pdns/tcpiohandler.cc:176,1
    - Dst: getConnectionIndex
      Src: /src/pdns/pdns/tcpiohandler.cc:176,1
    - Dst: std::move
      Src: /src/pdns/pdns/tcpiohandler.cc:180,1
    - Dst: std::move
      Src: /src/pdns/pdns/tcpiohandler.cc:180,1
    - Dst: std::move
      Src: /src/pdns/pdns/tcpiohandler.cc:180,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/tcpiohandler.cc:185,1
    - Dst: infolog
      Src: /src/pdns/pdns/tcpiohandler.cc:185,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/tcpiohandler.cc:186,1
    - Dst: shouldDoVerboseLogging
      Src: /src/pdns/pdns/tcpiohandler.cc:187,1
    - Dst: ERR_print_errors_fp
      Src: /src/pdns/pdns/tcpiohandler.cc:188,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/tcpiohandler.cc:190,1
    - Dst: SSL_set_fd
      Src: /src/pdns/pdns/tcpiohandler.cc:193,1
    - Dst: get
      Src: /src/pdns/pdns/tcpiohandler.cc:193,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/tcpiohandler.cc:194,1
    - Dst: empty
      Src: /src/pdns/pdns/tcpiohandler.cc:198,1
    - Dst: SSL_set_tlsext_host_name
      Src: /src/pdns/pdns/tcpiohandler.cc:198,1
    - Dst: get
      Src: /src/pdns/pdns/tcpiohandler.cc:198,1
    - Dst: c_str
      Src: /src/pdns/pdns/tcpiohandler.cc:198,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/tcpiohandler.cc:199,1
    - Dst: SSL_get0_param
      Src: /src/pdns/pdns/tcpiohandler.cc:204,1
    - Dst: get
      Src: /src/pdns/pdns/tcpiohandler.cc:204,1
    - Dst: X509_VERIFY_PARAM_set_hostflags
      Src: /src/pdns/pdns/tcpiohandler.cc:206,1
    - Dst: X509_VERIFY_PARAM_set1_ip_asc
      Src: /src/pdns/pdns/tcpiohandler.cc:207,1
    - Dst: c_str
      Src: /src/pdns/pdns/tcpiohandler.cc:207,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/tcpiohandler.cc:208,1
    - Dst: SSL_set_hostflags
      Src: /src/pdns/pdns/tcpiohandler.cc:216,1
    - Dst: get
      Src: /src/pdns/pdns/tcpiohandler.cc:216,1
    - Dst: SSL_set1_host
      Src: /src/pdns/pdns/tcpiohandler.cc:217,1
    - Dst: get
      Src: /src/pdns/pdns/tcpiohandler.cc:217,1
    - Dst: c_str
      Src: /src/pdns/pdns/tcpiohandler.cc:217,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/tcpiohandler.cc:218,1
    - Dst: SSL_get0_param
      Src: /src/pdns/pdns/tcpiohandler.cc:221,1
    - Dst: get
      Src: /src/pdns/pdns/tcpiohandler.cc:221,1
    - Dst: X509_VERIFY_PARAM_set_hostflags
      Src: /src/pdns/pdns/tcpiohandler.cc:223,1
    - Dst: X509_VERIFY_PARAM_set1_host
      Src: /src/pdns/pdns/tcpiohandler.cc:224,1
    - Dst: c_str
      Src: /src/pdns/pdns/tcpiohandler.cc:224,1
    - Dst: size
      Src: /src/pdns/pdns/tcpiohandler.cc:224,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/tcpiohandler.cc:225,1
    - Dst: SSL_set_ex_data
      Src: /src/pdns/pdns/tcpiohandler.cc:232,1
    - Dst: get
      Src: /src/pdns/pdns/tcpiohandler.cc:232,1
    - Dst: getConnectionIndex
      Src: /src/pdns/pdns/tcpiohandler.cc:232,1
    - Dst: SSL_waiting_for_async
      Src: /src/pdns/pdns/tcpiohandler.cc:239,1
    - Dst: get
      Src: /src/pdns/pdns/tcpiohandler.cc:239,1
    - Dst: SSL_get_all_async_fds
      Src: /src/pdns/pdns/tcpiohandler.cc:245,1
    - Dst: get
      Src: /src/pdns/pdns/tcpiohandler.cc:245,1
    - Dst: SSL_get_all_async_fds
      Src: /src/pdns/pdns/tcpiohandler.cc:250,1
    - Dst: get
      Src: /src/pdns/pdns/tcpiohandler.cc:250,1
    - Dst: std::vector::reserve
      Src: /src/pdns/pdns/tcpiohandler.cc:251,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/tcpiohandler.cc:253,1
    - Dst: SSL_get_error
      Src: /src/pdns/pdns/tcpiohandler.cc:261,1
    - Dst: get
      Src: /src/pdns/pdns/tcpiohandler.cc:261,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/tcpiohandler.cc:270,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/tcpiohandler.cc:273,1
    - Dst: std::string
      Src: /src/pdns/pdns/tcpiohandler.cc:273,1
    - Dst: strerror
      Src: /src/pdns/pdns/tcpiohandler.cc:273,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/tcpiohandler.cc:277,1
    - Dst: if
      Src: /src/pdns/pdns/tcpiohandler.cc:285,1
    - Dst: shouldDoVerboseLogging
      Src: /src/pdns/pdns/tcpiohandler.cc:285,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/tcpiohandler.cc:286,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/tcpiohandler.cc:286,1
    - Dst: libssl_get_error_string
      Src: /src/pdns/pdns/tcpiohandler.cc:286,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/tcpiohandler.cc:288,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/tcpiohandler.cc:288,1
    - Dst: convertIORequestToIOState
      Src: /src/pdns/pdns/tcpiohandler.cc:295,1
    - Dst: waitForData
      Src: /src/pdns/pdns/tcpiohandler.cc:297,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/tcpiohandler.cc:299,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/tcpiohandler.cc:302,1
    - Dst: waitForRWData
      Src: /src/pdns/pdns/tcpiohandler.cc:306,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/tcpiohandler.cc:308,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/tcpiohandler.cc:311,1
    CyclomaticComplexity: 46
    EdgeCount: 46
    ICount: 99
    argCount: 2
    argNames:
    - res
    - ' timeout'
    argTypes:
    - int
    - struct timeval
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 314
      start: 155
    functionDepth: 1
    functionLinenumber: 155
    functionLinenumberEnd: 314
    functionName: handleIORequest
    functionSourceFile: /src/pdns/pdns/tcpiohandler.cc
    functionUses: 0
    functionsReached:
    - std::to_string
    - std::string
    - std::vector::push_back
    - SSL_get0_param
    - SSL_set_tlsext_host_name
    - ERR_print_errors_fp
    - size
    - X509_VERIFY_PARAM_set1_ip_asc
    - dnsdist::logging::getTopLogger
    - strerror
    - c_str
    - empty
    - SSL_set_fd
    - X509_VERIFY_PARAM_set_hostflags
    - std::runtime_error
    - VERBOSESLOG
    - get
    - std::vector::reserve
    - SSL_set_hostflags
    - SSL_get_error
    - shouldDoVerboseLogging
    - waitForRWData
    - convertIORequestToIOState
    - X509_VERIFY_PARAM_set1_host
    - std::move
    - libssl_get_error_string
    - SSL_set1_host
    - getConnectionIndex
    - SSL_set_ex_data
    - infolog
    - waitForData
    - if
    - SSL_get_all_async_fds
    - SSL_waiting_for_async
    linkageType: ''
    returnType: "class OpenSSLTLSConnection: public TLSConnection\n{\npublic:\n  /*
      server side connection */\n  OpenSSLTLSConnection(int socket, const struct timeval&
      timeout, std::shared_ptr<const OpenSSLTLSIOCtx> tlsCtx, std::unique_ptr<SSL,
      void(*)(SSL*)>&& conn): d_tlsCtx(std::move(tlsCtx)), d_conn(std::move(conn)),
      d_timeout(timeout)\n  {\n    d_socket = socket;\n\n    if (!d_conn) {\n      VERBOSESLOG(infolog(\"Error
      creating TLS object\"),\n                  dnsdist::logging::getTopLogger(\"openssl-server-side\")->info(Logr::Info,
      \"Error creating server-side TLS object\"));\n      if (shouldDoVerboseLogging())
      {\n        ERR_print_errors_fp(stderr);\n      }\n      throw std::runtime_error(\"Error
      creating TLS object\");\n    }\n\n    if (!SSL_set_fd(d_conn.get(), d_socket))
      {\n      throw std::runtime_error(\"Error assigning socket\");\n    }\n\n    SSL_set_ex_data(d_conn.get(),
      getConnectionIndex(), this);\n  }\n\n  /* client-side connection */\n  OpenSSLTLSConnection(std::string
      hostname, bool hostIsAddr, int socket, const struct timeval& timeout, std::shared_ptr<const
      OpenSSLTLSIOCtx> tlsCtx, std::unique_ptr<SSL, void(*)(SSL*)>&& conn): d_tlsCtx(std::move(tlsCtx)),
      d_conn(std::move(conn)), d_hostname(std::move(hostname)), d_timeout(timeout),
      d_isClient(true)\n  {\n    d_socket = socket;\n\n    if (!d_conn) {\n      VERBOSESLOG(infolog(\"Error
      creating TLS object\"),\n                  dnsdist::logging::getTopLogger(\"openssl-client-side\")->info(Logr::Info,
      \"Error creating client-side TLS object\"));\n      if (shouldDoVerboseLogging())
      {\n        ERR_print_errors_fp(stderr);\n      }\n      throw std::runtime_error(\"Error
      creating TLS object\");\n    }\n\n    if (!SSL_set_fd(d_conn.get(), d_socket))
      {\n      throw std::runtime_error(\"Error assigning socket\");\n    }\n\n    /*
      set outgoing Server Name Indication */\n    if (!d_hostname.empty() && SSL_set_tlsext_host_name(d_conn.get(),
      d_hostname.c_str()) != 1) {\n      throw std::runtime_error(\"Error setting
      TLS SNI to \" + d_hostname);\n    }\n\n    if (hostIsAddr) {\n#if (OPENSSL_VERSION_NUMBER
      >= 0x10002000L)\n      X509_VERIFY_PARAM *param = SSL_get0_param(d_conn.get());\n
      \     /* Enable automatic IP checks */\n      X509_VERIFY_PARAM_set_hostflags(param,
      X509_CHECK_FLAG_NO_PARTIAL_WILDCARDS);\n      if (X509_VERIFY_PARAM_set1_ip_asc(param,
      d_hostname.c_str()) != 1) {\n        throw std::runtime_error(\"Error setting
      TLS IP for certificate validation\");\n      }\n#else\n      /* no validation
      for you, see https://wiki.openssl.org/index.php/Hostname_validation */\n#endif\n
      \   }\n    else {\n#if (OPENSSL_VERSION_NUMBER >= 0x1010000fL) && defined(HAVE_SSL_SET_HOSTFLAGS)
      // grrr libressl\n      SSL_set_hostflags(d_conn.get(), X509_CHECK_FLAG_NO_PARTIAL_WILDCARDS);\n
      \     if (SSL_set1_host(d_conn.get(), d_hostname.c_str()) != 1) {\n        throw
      std::runtime_error(\"Error setting TLS hostname for certificate validation\");\n
      \     }\n#elif (OPENSSL_VERSION_NUMBER >= 0x10002000L)\n      X509_VERIFY_PARAM
      *param = SSL_get0_param(d_conn.get());\n      /* Enable automatic hostname checks
      */\n      X509_VERIFY_PARAM_set_hostflags(param, X509_CHECK_FLAG_NO_PARTIAL_WILDCARDS);\n
      \     if (X509_VERIFY_PARAM_set1_host(param, d_hostname.c_str(), d_hostname.size())
      != 1) {\n        throw std::runtime_error(\"Error setting TLS hostname for certificate
      validation\");\n      }\n#else\n      /* no hostname validation for you, see
      https://wiki.openssl.org/index.php/Hostname_validation */\n#endif\n    }\n\n
      \   SSL_set_ex_data(d_conn.get(), getConnectionIndex(), this);\n  }\n\n  std::vector<int>
      getAsyncFDs() override\n  {\n    std::vector<int> results;\n#ifdef SSL_MODE_ASYNC\n
      \   if (SSL_waiting_for_async(d_conn.get()) != 1) {\n      return results;\n
      \   }\n\n    OSSL_ASYNC_FD fds[32];\n    size_t numfds = sizeof(fds)/sizeof(*fds);\n
      \   SSL_get_all_async_fds(d_conn.get(), nullptr, &numfds);\n    if (numfds ==
      0) {\n      return results;\n    }\n\n    SSL_get_all_async_fds(d_conn.get(),
      fds, &numfds);\n    results.reserve(numfds);\n    for (size_t idx = 0; idx <
      numfds; idx++) {\n      results.push_back(fds[idx]);\n    }\n#endif\n    return
      results;\n  }\n\n  IOState convertIORequestToIOState(int res) const\n  {\n    int
      error = SSL_get_error(d_conn.get(), res);\n    if (error == SSL_ERROR_WANT_READ)
      {\n      return IOState::NeedRead;\n    }\n    else if (error == SSL_ERROR_WANT_WRITE)
      {\n      return IOState::NeedWrite;\n    }\n    else if (error == SSL_ERROR_SYSCALL)
      {\n      if (errno == 0) {\n        throw std::runtime_error(\"TLS connection
      closed by remote end\");\n      }\n      else {\n        throw std::runtime_error(\"Syscall
      error while processing TLS connection: \" + std::string(strerror(errno)));\n
      \     }\n    }\n    else if (error == SSL_ERROR_ZERO_RETURN) {\n      throw
      std::runtime_error(\"TLS connection closed by remote end\");\n    }\n#ifdef
      SSL_MODE_ASYNC\n    else if (error == SSL_ERROR_WANT_ASYNC) {\n      return
      IOState::Async;\n    }\n#endif\n    else {\n      if (shouldDoVerboseLogging())
      {\n        throw std::runtime_error(\"Error while processing TLS connection:
      (\" + std::to_string(error) + \") \" + libssl_get_error_string());\n      }
      else {\n        throw std::runtime_error(\"Error while processing TLS connection:
      \" + std::to_string(error));\n      }\n    }"
    signature: "class OpenSSLTLSConnection: public TLSConnection\n{\npublic:\n  /*
      server side connection */\n  OpenSSLTLSConnection(int socket, const struct timeval&
      timeout, std::shared_ptr<const OpenSSLTLSIOCtx> tlsCtx, std::unique_ptr<SSL,
      void(*)(SSL*)>&& conn): d_tlsCtx(std::move(tlsCtx)), d_conn(std::move(conn)),
      d_timeout(timeout)\n  {\n    d_socket = socket;\n\n    if (!d_conn) {\n      VERBOSESLOG(infolog(\"Error
      creating TLS object\"),\n                  dnsdist::logging::getTopLogger(\"openssl-server-side\")->info(Logr::Info,
      \"Error creating server-side TLS object\"));\n      if (shouldDoVerboseLogging())
      {\n        ERR_print_errors_fp(stderr);\n      }\n      throw std::runtime_error(\"Error
      creating TLS object\");\n    }\n\n    if (!SSL_set_fd(d_conn.get(), d_socket))
      {\n      throw std::runtime_error(\"Error assigning socket\");\n    }\n\n    SSL_set_ex_data(d_conn.get(),
      getConnectionIndex(), this);\n  }\n\n  /* client-side connection */\n  OpenSSLTLSConnection(std::string
      hostname, bool hostIsAddr, int socket, const struct timeval& timeout, std::shared_ptr<const
      OpenSSLTLSIOCtx> tlsCtx, std::unique_ptr<SSL, void(*)(SSL*)>&& conn): d_tlsCtx(std::move(tlsCtx)),
      d_conn(std::move(conn)), d_hostname(std::move(hostname)), d_timeout(timeout),
      d_isClient(true)\n  {\n    d_socket = socket;\n\n    if (!d_conn) {\n      VERBOSESLOG(infolog(\"Error
      creating TLS object\"),\n                  dnsdist::logging::getTopLogger(\"openssl-client-side\")->info(Logr::Info,
      \"Error creating client-side TLS object\"));\n      if (shouldDoVerboseLogging())
      {\n        ERR_print_errors_fp(stderr);\n      }\n      throw std::runtime_error(\"Error
      creating TLS object\");\n    }\n\n    if (!SSL_set_fd(d_conn.get(), d_socket))
      {\n      throw std::runtime_error(\"Error assigning socket\");\n    }\n\n    /*
      set outgoing Server Name Indication */\n    if (!d_hostname.empty() && SSL_set_tlsext_host_name(d_conn.get(),
      d_hostname.c_str()) != 1) {\n      throw std::runtime_error(\"Error setting
      TLS SNI to \" + d_hostname);\n    }\n\n    if (hostIsAddr) {\n#if (OPENSSL_VERSION_NUMBER
      >= 0x10002000L)\n      X509_VERIFY_PARAM *param = SSL_get0_param(d_conn.get());\n
      \     /* Enable automatic IP checks */\n      X509_VERIFY_PARAM_set_hostflags(param,
      X509_CHECK_FLAG_NO_PARTIAL_WILDCARDS);\n      if (X509_VERIFY_PARAM_set1_ip_asc(param,
      d_hostname.c_str()) != 1) {\n        throw std::runtime_error(\"Error setting
      TLS IP for certificate validation\");\n      }\n#else\n      /* no validation
      for you, see https://wiki.openssl.org/index.php/Hostname_validation */\n#endif\n
      \   }\n    else {\n#if (OPENSSL_VERSION_NUMBER >= 0x1010000fL) && defined(HAVE_SSL_SET_HOSTFLAGS)
      // grrr libressl\n      SSL_set_hostflags(d_conn.get(), X509_CHECK_FLAG_NO_PARTIAL_WILDCARDS);\n
      \     if (SSL_set1_host(d_conn.get(), d_hostname.c_str()) != 1) {\n        throw
      std::runtime_error(\"Error setting TLS hostname for certificate validation\");\n
      \     }\n#elif (OPENSSL_VERSION_NUMBER >= 0x10002000L)\n      X509_VERIFY_PARAM
      *param = SSL_get0_param(d_conn.get());\n      /* Enable automatic hostname checks
      */\n      X509_VERIFY_PARAM_set_hostflags(param, X509_CHECK_FLAG_NO_PARTIAL_WILDCARDS);\n
      \     if (X509_VERIFY_PARAM_set1_host(param, d_hostname.c_str(), d_hostname.size())
      != 1) {\n        throw std::runtime_error(\"Error setting TLS hostname for certificate
      validation\");\n      }\n#else\n      /* no hostname validation for you, see
      https://wiki.openssl.org/index.php/Hostname_validation */\n#endif\n    }\n\n
      \   SSL_set_ex_data(d_conn.get(), getConnectionIndex(), this);\n  }\n\n  std::vector<int>
      getAsyncFDs() override\n  {\n    std::vector<int> results;\n#ifdef SSL_MODE_ASYNC\n
      \   if (SSL_waiting_for_async(d_conn.get()) != 1) {\n      return results;\n
      \   }\n\n    OSSL_ASYNC_FD fds[32];\n    size_t numfds = sizeof(fds)/sizeof(*fds);\n
      \   SSL_get_all_async_fds(d_conn.get(), nullptr, &numfds);\n    if (numfds ==
      0) {\n      return results;\n    }\n\n    SSL_get_all_async_fds(d_conn.get(),
      fds, &numfds);\n    results.reserve(numfds);\n    for (size_t idx = 0; idx <
      numfds; idx++) {\n      results.push_back(fds[idx]);\n    }\n#endif\n    return
      results;\n  }\n\n  IOState convertIORequestToIOState(int res) const\n  {\n    int
      error = SSL_get_error(d_conn.get(), res);\n    if (error == SSL_ERROR_WANT_READ)
      {\n      return IOState::NeedRead;\n    }\n    else if (error == SSL_ERROR_WANT_WRITE)
      {\n      return IOState::NeedWrite;\n    }\n    else if (error == SSL_ERROR_SYSCALL)
      {\n      if (errno == 0) {\n        throw std::runtime_error(\"TLS connection
      closed by remote end\");\n      }\n      else {\n        throw std::runtime_error(\"Syscall
      error while processing TLS connection: \" + std::string(strerror(errno)));\n
      \     }\n    }\n    else if (error == SSL_ERROR_ZERO_RETURN) {\n      throw
      std::runtime_error(\"TLS connection closed by remote end\");\n    }\n#ifdef
      SSL_MODE_ASYNC\n    else if (error == SSL_ERROR_WANT_ASYNC) {\n      return
      IOState::Async;\n    }\n#endif\n    else {\n      if (shouldDoVerboseLogging())
      {\n        throw std::runtime_error(\"Error while processing TLS connection:
      (\" + std::to_string(error) + \") \" + libssl_get_error_string());\n      }
      else {\n        throw std::runtime_error(\"Error while processing TLS connection:
      \" + std::to_string(error));\n      }\n    } handleIORequest(int res, const
      struct timeval& timeout)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/tcpiohandler.cc:159,1
    - Dst: std::move
      Src: /src/pdns/pdns/tcpiohandler.cc:159,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/tcpiohandler.cc:164,1
    - Dst: infolog
      Src: /src/pdns/pdns/tcpiohandler.cc:164,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/tcpiohandler.cc:165,1
    - Dst: shouldDoVerboseLogging
      Src: /src/pdns/pdns/tcpiohandler.cc:166,1
    - Dst: ERR_print_errors_fp
      Src: /src/pdns/pdns/tcpiohandler.cc:167,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/tcpiohandler.cc:169,1
    - Dst: SSL_set_fd
      Src: /src/pdns/pdns/tcpiohandler.cc:172,1
    - Dst: get
      Src: /src/pdns/pdns/tcpiohandler.cc:172,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/tcpiohandler.cc:173,1
    - Dst: SSL_set_ex_data
      Src: /src/pdns/pdns/tcpiohandler.cc:176,1
    - Dst: get
      Src: /src/pdns/pdns/tcpiohandler.cc:176,1
    - Dst: getConnectionIndex
      Src: /src/pdns/pdns/tcpiohandler.cc:176,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 13
    argCount: 4
    argNames:
    - socket
    - ' timeout'
    - tlsCtx
    - ' conn'
    argTypes:
    - int
    - struct timeval
    - std::shared_ptr<const OpenSSLTLSIOCtx>
    - std::unique_ptr<SSL, void(*)(SSL*)>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 177
      start: 159
    functionDepth: 1
    functionLinenumber: 159
    functionLinenumberEnd: 177
    functionName: OpenSSLTLSConnection::OpenSSLTLSConnection
    functionSourceFile: /src/pdns/pdns/tcpiohandler.cc
    functionUses: 0
    functionsReached:
    - std::move
    - SSL_set_fd
    - std::runtime_error
    - getConnectionIndex
    - SSL_set_ex_data
    - ERR_print_errors_fp
    - VERBOSESLOG
    - infolog
    - get
    - shouldDoVerboseLogging
    - dnsdist::logging::getTopLogger
    linkageType: ''
    returnType: void
    signature: void OpenSSLTLSConnection(int socket, const struct timeval& timeout,
      std::shared_ptr<const OpenSSLTLSIOCtx> tlsCtx, std::unique_ptr<SSL, void(*)(SSL*)>&&
      conn)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/tcpiohandler.cc:180,1
    - Dst: std::move
      Src: /src/pdns/pdns/tcpiohandler.cc:180,1
    - Dst: std::move
      Src: /src/pdns/pdns/tcpiohandler.cc:180,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/tcpiohandler.cc:185,1
    - Dst: infolog
      Src: /src/pdns/pdns/tcpiohandler.cc:185,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/tcpiohandler.cc:186,1
    - Dst: shouldDoVerboseLogging
      Src: /src/pdns/pdns/tcpiohandler.cc:187,1
    - Dst: ERR_print_errors_fp
      Src: /src/pdns/pdns/tcpiohandler.cc:188,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/tcpiohandler.cc:190,1
    - Dst: SSL_set_fd
      Src: /src/pdns/pdns/tcpiohandler.cc:193,1
    - Dst: get
      Src: /src/pdns/pdns/tcpiohandler.cc:193,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/tcpiohandler.cc:194,1
    - Dst: empty
      Src: /src/pdns/pdns/tcpiohandler.cc:198,1
    - Dst: SSL_set_tlsext_host_name
      Src: /src/pdns/pdns/tcpiohandler.cc:198,1
    - Dst: get
      Src: /src/pdns/pdns/tcpiohandler.cc:198,1
    - Dst: c_str
      Src: /src/pdns/pdns/tcpiohandler.cc:198,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/tcpiohandler.cc:199,1
    - Dst: SSL_get0_param
      Src: /src/pdns/pdns/tcpiohandler.cc:204,1
    - Dst: get
      Src: /src/pdns/pdns/tcpiohandler.cc:204,1
    - Dst: X509_VERIFY_PARAM_set_hostflags
      Src: /src/pdns/pdns/tcpiohandler.cc:206,1
    - Dst: X509_VERIFY_PARAM_set1_ip_asc
      Src: /src/pdns/pdns/tcpiohandler.cc:207,1
    - Dst: c_str
      Src: /src/pdns/pdns/tcpiohandler.cc:207,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/tcpiohandler.cc:208,1
    - Dst: SSL_set_hostflags
      Src: /src/pdns/pdns/tcpiohandler.cc:216,1
    - Dst: get
      Src: /src/pdns/pdns/tcpiohandler.cc:216,1
    - Dst: SSL_set1_host
      Src: /src/pdns/pdns/tcpiohandler.cc:217,1
    - Dst: get
      Src: /src/pdns/pdns/tcpiohandler.cc:217,1
    - Dst: c_str
      Src: /src/pdns/pdns/tcpiohandler.cc:217,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/tcpiohandler.cc:218,1
    - Dst: SSL_get0_param
      Src: /src/pdns/pdns/tcpiohandler.cc:221,1
    - Dst: get
      Src: /src/pdns/pdns/tcpiohandler.cc:221,1
    - Dst: X509_VERIFY_PARAM_set_hostflags
      Src: /src/pdns/pdns/tcpiohandler.cc:223,1
    - Dst: X509_VERIFY_PARAM_set1_host
      Src: /src/pdns/pdns/tcpiohandler.cc:224,1
    - Dst: c_str
      Src: /src/pdns/pdns/tcpiohandler.cc:224,1
    - Dst: size
      Src: /src/pdns/pdns/tcpiohandler.cc:224,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/tcpiohandler.cc:225,1
    - Dst: SSL_set_ex_data
      Src: /src/pdns/pdns/tcpiohandler.cc:232,1
    - Dst: get
      Src: /src/pdns/pdns/tcpiohandler.cc:232,1
    - Dst: getConnectionIndex
      Src: /src/pdns/pdns/tcpiohandler.cc:232,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 31
    argCount: 6
    argNames:
    - hostname
    - hostIsAddr
    - socket
    - ' timeout'
    - tlsCtx
    - ' conn'
    argTypes:
    - std::string
    - bool
    - int
    - struct timeval
    - std::shared_ptr<const OpenSSLTLSIOCtx>
    - std::unique_ptr<SSL, void(*)(SSL*)>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 233
      start: 180
    functionDepth: 1
    functionLinenumber: 180
    functionLinenumberEnd: 233
    functionName: OpenSSLTLSConnection::OpenSSLTLSConnection
    functionSourceFile: /src/pdns/pdns/tcpiohandler.cc
    functionUses: 0
    functionsReached:
    - SSL_get0_param
    - SSL_set_tlsext_host_name
    - ERR_print_errors_fp
    - size
    - X509_VERIFY_PARAM_set1_ip_asc
    - dnsdist::logging::getTopLogger
    - c_str
    - empty
    - SSL_set_fd
    - X509_VERIFY_PARAM_set_hostflags
    - std::runtime_error
    - VERBOSESLOG
    - get
    - SSL_set_hostflags
    - shouldDoVerboseLogging
    - X509_VERIFY_PARAM_set1_host
    - std::move
    - SSL_set1_host
    - getConnectionIndex
    - SSL_set_ex_data
    - infolog
    linkageType: ''
    returnType: void
    signature: void OpenSSLTLSConnection(std::string hostname, bool hostIsAddr, int
      socket, const struct timeval& timeout, std::shared_ptr<const OpenSSLTLSIOCtx>
      tlsCtx, std::unique_ptr<SSL, void(*)(SSL*)>&& conn)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: SSL_waiting_for_async
      Src: /src/pdns/pdns/tcpiohandler.cc:239,1
    - Dst: get
      Src: /src/pdns/pdns/tcpiohandler.cc:239,1
    - Dst: SSL_get_all_async_fds
      Src: /src/pdns/pdns/tcpiohandler.cc:245,1
    - Dst: get
      Src: /src/pdns/pdns/tcpiohandler.cc:245,1
    - Dst: SSL_get_all_async_fds
      Src: /src/pdns/pdns/tcpiohandler.cc:250,1
    - Dst: get
      Src: /src/pdns/pdns/tcpiohandler.cc:250,1
    - Dst: std::vector::reserve
      Src: /src/pdns/pdns/tcpiohandler.cc:251,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/tcpiohandler.cc:253,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 257
      start: 235
    functionDepth: 0
    functionLinenumber: 235
    functionLinenumberEnd: 257
    functionName: OpenSSLTLSConnection::getAsyncFDs
    functionSourceFile: /src/pdns/pdns/tcpiohandler.cc
    functionUses: 0
    functionsReached:
    - std::vector::push_back
    - get
    - std::vector::reserve
    - SSL_get_all_async_fds
    - SSL_waiting_for_async
    linkageType: ''
    returnType: std::vector<int>
    signature: std::vector<int> getAsyncFDs() override
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: SSL_get_error
      Src: /src/pdns/pdns/tcpiohandler.cc:261,1
    - Dst: get
      Src: /src/pdns/pdns/tcpiohandler.cc:261,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/tcpiohandler.cc:270,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/tcpiohandler.cc:273,1
    - Dst: std::string
      Src: /src/pdns/pdns/tcpiohandler.cc:273,1
    - Dst: strerror
      Src: /src/pdns/pdns/tcpiohandler.cc:273,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/tcpiohandler.cc:277,1
    - Dst: if
      Src: /src/pdns/pdns/tcpiohandler.cc:285,1
    - Dst: shouldDoVerboseLogging
      Src: /src/pdns/pdns/tcpiohandler.cc:285,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/tcpiohandler.cc:286,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/tcpiohandler.cc:286,1
    - Dst: libssl_get_error_string
      Src: /src/pdns/pdns/tcpiohandler.cc:286,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 20
    argCount: 1
    argNames:
    - res
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 287
      start: 259
    functionDepth: 0
    functionLinenumber: 259
    functionLinenumberEnd: 287
    functionName: OpenSSLTLSConnection::convertIORequestToIOState
    functionSourceFile: /src/pdns/pdns/tcpiohandler.cc
    functionUses: 0
    functionsReached:
    - std::to_string
    - libssl_get_error_string
    - std::runtime_error
    - get
    - if
    - SSL_get_error
    - shouldDoVerboseLogging
    - strerror
    - std::string
    linkageType: ''
    returnType: IOState
    signature: IOState convertIORequestToIOState(int res) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/tcpiohandler.cc:288,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/tcpiohandler.cc:288,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 289
      start: 287
    functionDepth: 0
    functionLinenumber: 287
    functionLinenumberEnd: 289
    functionName: ''
    functionSourceFile: /src/pdns/pdns/tcpiohandler.cc
    functionUses: 838
    functionsReached:
    - std::to_string
    - std::runtime_error
    linkageType: ''
    returnType: else
    signature: 'else '
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: SSL_connect
      Src: /src/pdns/pdns/tcpiohandler.cc:322,1
    - Dst: get
      Src: /src/pdns/pdns/tcpiohandler.cc:322,1
    - Dst: convertIORequestToIOState
      Src: /src/pdns/pdns/tcpiohandler.cc:327,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/tcpiohandler.cc:330,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - fastOpen
    - ' remote'
    argTypes:
    - bool
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 331
      start: 316
    functionDepth: 0
    functionLinenumber: 316
    functionLinenumberEnd: 331
    functionName: tryConnect
    functionSourceFile: /src/pdns/pdns/tcpiohandler.cc
    functionUses: 0
    functionsReached:
    - convertIORequestToIOState
    - std::runtime_error
    - SSL_connect
    - get
    linkageType: ''
    returnType: IOState
    signature: IOState tryConnect(bool fastOpen, const ComboAddress& remote) override
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: gettimeofday
      Src: /src/pdns/pdns/tcpiohandler.cc:342,1
    - Dst: SSL_connect
      Src: /src/pdns/pdns/tcpiohandler.cc:347,1
    - Dst: get
      Src: /src/pdns/pdns/tcpiohandler.cc:347,1
    - Dst: handleIORequest
      Src: /src/pdns/pdns/tcpiohandler.cc:349,1
    - Dst: gettimeofday
      Src: /src/pdns/pdns/tcpiohandler.cc:354,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/tcpiohandler.cc:357,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 20
    argCount: 3
    argNames:
    - fastOpen
    - ' remote'
    - timeout
    argTypes:
    - bool
    - ComboAddress
    - struct timeval
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 364
      start: 333
    functionDepth: 0
    functionLinenumber: 333
    functionLinenumberEnd: 364
    functionName: connect
    functionSourceFile: /src/pdns/pdns/tcpiohandler.cc
    functionUses: 8
    functionsReached:
    - runtime_error
    - get
    - gettimeofday
    - SSL_connect
    - handleIORequest
    linkageType: ''
    returnType: void
    signature: void connect(bool fastOpen, const ComboAddress& remote, const struct
      timeval &timeout) override
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: isClient
      Src: /src/pdns/pdns/tcpiohandler.cc:368,1
    - Dst: SSL_accept
      Src: /src/pdns/pdns/tcpiohandler.cc:383,1
    - Dst: get
      Src: /src/pdns/pdns/tcpiohandler.cc:383,1
    - Dst: convertIORequestToIOState
      Src: /src/pdns/pdns/tcpiohandler.cc:388,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/tcpiohandler.cc:391,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 392
      start: 366
    functionDepth: 0
    functionLinenumber: 366
    functionLinenumberEnd: 392
    functionName: tryHandshake
    functionSourceFile: /src/pdns/pdns/tcpiohandler.cc
    functionUses: 0
    functionsReached:
    - convertIORequestToIOState
    - std::runtime_error
    - get
    - isClient
    - SSL_accept
    linkageType: ''
    returnType: IOState
    signature: IOState tryHandshake() override
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: isClient
      Src: /src/pdns/pdns/tcpiohandler.cc:396,1
    - Dst: SSL_accept
      Src: /src/pdns/pdns/tcpiohandler.cc:403,1
    - Dst: get
      Src: /src/pdns/pdns/tcpiohandler.cc:403,1
    - Dst: handleIORequest
      Src: /src/pdns/pdns/tcpiohandler.cc:405,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/tcpiohandler.cc:411,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 413
      start: 394
    functionDepth: 0
    functionLinenumber: 394
    functionLinenumberEnd: 413
    functionName: doHandshake
    functionSourceFile: /src/pdns/pdns/tcpiohandler.cc
    functionUses: 0
    functionsReached:
    - std::runtime_error
    - get
    - isClient
    - handleIORequest
    - SSL_accept
    linkageType: ''
    returnType: void
    signature: void doHandshake() override
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: isClient
      Src: /src/pdns/pdns/tcpiohandler.cc:417,1
    - Dst: SSL_set_fd
      Src: /src/pdns/pdns/tcpiohandler.cc:420,1
    - Dst: get
      Src: /src/pdns/pdns/tcpiohandler.cc:420,1
    - Dst: SSL_get_fd
      Src: /src/pdns/pdns/tcpiohandler.cc:420,1
    - Dst: get
      Src: /src/pdns/pdns/tcpiohandler.cc:420,1
    - Dst: SSL_write
      Src: /src/pdns/pdns/tcpiohandler.cc:425,1
    - Dst: get
      Src: /src/pdns/pdns/tcpiohandler.cc:425,1
    - Dst: reinterpret_cast<const char *>
      Src: /src/pdns/pdns/tcpiohandler.cc:425,1
    - Dst: at
      Src: /src/pdns/pdns/tcpiohandler.cc:425,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/tcpiohandler.cc:425,1
    - Dst: convertIORequestToIOState
      Src: /src/pdns/pdns/tcpiohandler.cc:427,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/tcpiohandler.cc:430,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 3
    argNames:
    - ' buffer'
    - ' pos'
    - toWrite
    argTypes:
    - PacketBuffer
    - size_t
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 440
      start: 415
    functionDepth: 0
    functionLinenumber: 415
    functionLinenumberEnd: 440
    functionName: tryWrite
    functionSourceFile: /src/pdns/pdns/tcpiohandler.cc
    functionUses: 0
    functionsReached:
    - convertIORequestToIOState
    - SSL_set_fd
    - static_cast<size_t>
    - get
    - reinterpret_cast<const char *>
    - isClient
    - SSL_write
    - at
    - SSL_get_fd
    - static_cast<int>
    linkageType: ''
    returnType: IOState
    signature: IOState tryWrite(const PacketBuffer& buffer, size_t& pos, size_t toWrite)
      override
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: SSL_read
      Src: /src/pdns/pdns/tcpiohandler.cc:445,1
    - Dst: get
      Src: /src/pdns/pdns/tcpiohandler.cc:445,1
    - Dst: reinterpret_cast<char *>
      Src: /src/pdns/pdns/tcpiohandler.cc:445,1
    - Dst: at
      Src: /src/pdns/pdns/tcpiohandler.cc:445,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/tcpiohandler.cc:445,1
    - Dst: convertIORequestToIOState
      Src: /src/pdns/pdns/tcpiohandler.cc:447,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/tcpiohandler.cc:450,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 4
    argNames:
    - ' buffer'
    - ' pos'
    - toRead
    - allowIncomplete
    argTypes:
    - PacketBuffer
    - size_t
    - size_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 458
      start: 442
    functionDepth: 0
    functionLinenumber: 442
    functionLinenumberEnd: 458
    functionName: tryRead
    functionSourceFile: /src/pdns/pdns/tcpiohandler.cc
    functionUses: 0
    functionsReached:
    - convertIORequestToIOState
    - static_cast<size_t>
    - at
    - get
    - reinterpret_cast<char *>
    - SSL_read
    - static_cast<int>
    linkageType: ''
    returnType: IOState
    signature: IOState tryRead(PacketBuffer& buffer, size_t& pos, size_t toRead, bool
      allowIncomplete) override
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: gettimeofday
      Src: /src/pdns/pdns/tcpiohandler.cc:466,1
    - Dst: SSL_read
      Src: /src/pdns/pdns/tcpiohandler.cc:470,1
    - Dst: get
      Src: /src/pdns/pdns/tcpiohandler.cc:470,1
    - Dst: reinterpret_cast<char *>
      Src: /src/pdns/pdns/tcpiohandler.cc:470,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/tcpiohandler.cc:470,1
    - Dst: handleIORequest
      Src: /src/pdns/pdns/tcpiohandler.cc:472,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/tcpiohandler.cc:475,1
    - Dst: gettimeofday
      Src: /src/pdns/pdns/tcpiohandler.cc:483,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/tcpiohandler.cc:486,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 23
    argCount: 5
    argNames:
    - buffer
    - bufferSize
    - ' readTimeout'
    - ' totalTimeout'
    - allowIncomplete
    argTypes:
    - void*
    - size_t
    - struct timeval
    - struct timeval
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 495
      start: 460
    functionDepth: 0
    functionLinenumber: 460
    functionLinenumberEnd: 495
    functionName: read
    functionSourceFile: /src/pdns/pdns/tcpiohandler.cc
    functionUses: 10
    functionsReached:
    - static_cast<size_t>
    - handleIORequest
    - runtime_error
    - get
    - gettimeofday
    - reinterpret_cast<char *>
    - SSL_read
    - static_cast<int>
    linkageType: ''
    returnType: size_t
    signature: size_t read(void* buffer, size_t bufferSize, const struct timeval&
      readTimeout, const struct timeval& totalTimeout, bool allowIncomplete) override
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SSL_write
      Src: /src/pdns/pdns/tcpiohandler.cc:501,1
    - Dst: get
      Src: /src/pdns/pdns/tcpiohandler.cc:501,1
    - Dst: reinterpret_cast<const char *>
      Src: /src/pdns/pdns/tcpiohandler.cc:501,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/tcpiohandler.cc:501,1
    - Dst: handleIORequest
      Src: /src/pdns/pdns/tcpiohandler.cc:503,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/tcpiohandler.cc:506,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 3
    argNames:
    - buffer
    - bufferSize
    - ' writeTimeout'
    argTypes:
    - void*
    - size_t
    - struct timeval
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 512
      start: 497
    functionDepth: 0
    functionLinenumber: 497
    functionLinenumberEnd: 512
    functionName: write
    functionSourceFile: /src/pdns/pdns/tcpiohandler.cc
    functionUses: 7
    functionsReached:
    - static_cast<size_t>
    - get
    - reinterpret_cast<const char *>
    - SSL_write
    - handleIORequest
    - static_cast<int>
    linkageType: ''
    returnType: size_t
    signature: size_t write(const void* buffer, size_t bufferSize, const struct timeval&
      writeTimeout) override
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: SSL_peek
      Src: /src/pdns/pdns/tcpiohandler.cc:521,1
    - Dst: get
      Src: /src/pdns/pdns/tcpiohandler.cc:521,1
    - Dst: convertIORequestToIOState
      Src: /src/pdns/pdns/tcpiohandler.cc:526,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 534
      start: 514
    functionDepth: 0
    functionLinenumber: 514
    functionLinenumberEnd: 534
    functionName: isUsable
    functionSourceFile: /src/pdns/pdns/tcpiohandler.cc
    functionUses: 0
    functionsReached:
    - convertIORequestToIOState
    - SSL_peek
    - get
    linkageType: ''
    returnType: bool
    signature: bool isUsable() const override
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SSL_shutdown
      Src: /src/pdns/pdns/tcpiohandler.cc:539,1
    - Dst: get
      Src: /src/pdns/pdns/tcpiohandler.cc:539,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 541
      start: 536
    functionDepth: 0
    functionLinenumber: 536
    functionLinenumberEnd: 541
    functionName: close
    functionSourceFile: /src/pdns/pdns/tcpiohandler.cc
    functionUses: 13
    functionsReached:
    - SSL_shutdown
    - get
    linkageType: ''
    returnType: void
    signature: void close() override
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: SSL_get_servername
      Src: /src/pdns/pdns/tcpiohandler.cc:546,1
    - Dst: get
      Src: /src/pdns/pdns/tcpiohandler.cc:546,1
    - Dst: std::string
      Src: /src/pdns/pdns/tcpiohandler.cc:548,1
    - Dst: std::string
      Src: /src/pdns/pdns/tcpiohandler.cc:551,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 552
      start: 543
    functionDepth: 0
    functionLinenumber: 543
    functionLinenumberEnd: 552
    functionName: getServerNameIndication
    functionSourceFile: /src/pdns/pdns/tcpiohandler.cc
    functionUses: 0
    functionsReached:
    - std::string
    - SSL_get_servername
    - get
    linkageType: ''
    returnType: std::string
    signature: std::string getServerNameIndication() const override
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: SSL_get0_alpn_selected
      Src: /src/pdns/pdns/tcpiohandler.cc:565,1
    - Dst: get
      Src: /src/pdns/pdns/tcpiohandler.cc:565,1
    - Dst: std::vector::insert
      Src: /src/pdns/pdns/tcpiohandler.cc:569,1
    - Dst: std::vector::end
      Src: /src/pdns/pdns/tcpiohandler.cc:569,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 572
      start: 554
    functionDepth: 1
    functionLinenumber: 554
    functionLinenumberEnd: 572
    functionName: getNextProtocol
    functionSourceFile: /src/pdns/pdns/tcpiohandler.cc
    functionUses: 0
    functionsReached:
    - std::vector::end
    - std::vector::insert
    - SSL_get0_alpn_selected
    - get
    linkageType: ''
    returnType: std::vector<uint8_t>
    signature: std::vector<uint8_t> getNextProtocol() const override
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: SSL_get_verify_result
      Src: /src/pdns/pdns/tcpiohandler.cc:577,1
    - Dst: get
      Src: /src/pdns/pdns/tcpiohandler.cc:577,1
    - Dst: SSL_get_peer_certificate
      Src: /src/pdns/pdns/tcpiohandler.cc:580,1
    - Dst: get
      Src: /src/pdns/pdns/tcpiohandler.cc:580,1
    - Dst: X509_free
      Src: /src/pdns/pdns/tcpiohandler.cc:583,1
    - Dst: X509_verify_cert_error_string
      Src: /src/pdns/pdns/tcpiohandler.cc:589,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 593
      start: 574
    functionDepth: 0
    functionLinenumber: 574
    functionLinenumberEnd: 593
    functionName: getVerifyResult
    functionSourceFile: /src/pdns/pdns/tcpiohandler.cc
    functionUses: 0
    functionsReached:
    - X509_verify_cert_error_string
    - X509_free
    - get
    - SSL_get_verify_result
    - SSL_get_peer_certificate
    linkageType: ''
    returnType: std::pair<long, std::string>
    signature: std::pair<long, std::string> getVerifyResult() const override
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: SSL_version
      Src: /src/pdns/pdns/tcpiohandler.cc:597,1
    - Dst: get
      Src: /src/pdns/pdns/tcpiohandler.cc:597,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 612
      start: 595
    functionDepth: 0
    functionLinenumber: 595
    functionLinenumberEnd: 612
    functionName: getTLSVersion
    functionSourceFile: /src/pdns/pdns/tcpiohandler.cc
    functionUses: 0
    functionsReached:
    - SSL_version
    - get
    linkageType: ''
    returnType: LibsslTLSVersion
    signature: LibsslTLSVersion getTLSVersion() const override
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SSL_session_reused
      Src: /src/pdns/pdns/tcpiohandler.cc:617,1
    - Dst: get
      Src: /src/pdns/pdns/tcpiohandler.cc:617,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 620
      start: 614
    functionDepth: 0
    functionLinenumber: 614
    functionLinenumberEnd: 620
    functionName: hasSessionBeenResumed
    functionSourceFile: /src/pdns/pdns/tcpiohandler.cc
    functionUses: 0
    functionsReached:
    - SSL_session_reused
    - get
    linkageType: ''
    returnType: bool
    signature: bool hasSessionBeenResumed() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/tcpiohandler.cc:624,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 625
      start: 622
    functionDepth: 0
    functionLinenumber: 622
    functionLinenumberEnd: 625
    functionName: getSessions
    functionSourceFile: /src/pdns/pdns/tcpiohandler.cc
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: std::vector<std::unique_ptr<TLSSession>>
    signature: std::vector<std::unique_ptr<TLSSession>> getSessions() override
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dynamic_cast<OpenSSLSession*>
      Src: /src/pdns/pdns/tcpiohandler.cc:629,1
    - Dst: get
      Src: /src/pdns/pdns/tcpiohandler.cc:629,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/tcpiohandler.cc:631,1
    - Dst: auto::getNative
      Src: /src/pdns/pdns/tcpiohandler.cc:634,1
    - Dst: SSL_set_session
      Src: /src/pdns/pdns/tcpiohandler.cc:635,1
    - Dst: get
      Src: /src/pdns/pdns/tcpiohandler.cc:635,1
    - Dst: auto::get
      Src: /src/pdns/pdns/tcpiohandler.cc:635,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/tcpiohandler.cc:637,1
    - Dst: libssl_get_error_string
      Src: /src/pdns/pdns/tcpiohandler.cc:637,1
    - Dst: reset
      Src: /src/pdns/pdns/tcpiohandler.cc:639,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 1
    argNames:
    - ' session'
    argTypes:
    - std::unique_ptr<TLSSession>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 640
      start: 627
    functionDepth: 0
    functionLinenumber: 627
    functionLinenumberEnd: 640
    functionName: setSession
    functionSourceFile: /src/pdns/pdns/tcpiohandler.cc
    functionUses: 0
    functionsReached:
    - dynamic_cast<OpenSSLSession*>
    - reset
    - auto::get
    - libssl_get_error_string
    - std::runtime_error
    - get
    - SSL_set_session
    - auto::getNative
    linkageType: ''
    returnType: void
    signature: void setSession(std::unique_ptr<TLSSession>& session) override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: push_back
      Src: /src/pdns/pdns/tcpiohandler.cc:644,1
    - Dst: std::make_unique<OpenSSLSession>
      Src: /src/pdns/pdns/tcpiohandler.cc:644,1
    - Dst: std::unique_ptr<SSL_SESSION, void (*)(SSL_SESSION*)>
      Src: /src/pdns/pdns/tcpiohandler.cc:644,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - session
    argTypes:
    - SSL_SESSION*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 645
      start: 642
    functionDepth: 0
    functionLinenumber: 642
    functionLinenumberEnd: 645
    functionName: addNewTicket
    functionSourceFile: /src/pdns/pdns/tcpiohandler.cc
    functionUses: 0
    functionsReached:
    - push_back
    - std::unique_ptr<SSL_SESSION, void (*)(SSL_SESSION*)>
    - std::make_unique<OpenSSLSession>
    linkageType: ''
    returnType: void
    signature: void addNewTicket(SSL_SESSION* session)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 650
      start: 647
    functionDepth: 0
    functionLinenumber: 647
    functionLinenumberEnd: 650
    functionName: enableKTLS
    functionSourceFile: /src/pdns/pdns/tcpiohandler.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void enableKTLS()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 655
      start: 652
    functionDepth: 0
    functionLinenumber: 652
    functionLinenumberEnd: 655
    functionName: isClient
    functionSourceFile: /src/pdns/pdns/tcpiohandler.cc
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool isClient() const
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/tcpiohandler.cc:659,1
    - Dst: SSL_get_ex_new_index
      Src: /src/pdns/pdns/tcpiohandler.cc:665,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/tcpiohandler.cc:667,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 671
      start: 657
    functionDepth: 0
    functionLinenumber: 657
    functionLinenumberEnd: 671
    functionName: generateConnectionIndexIfNeeded
    functionSourceFile: /src/pdns/pdns/tcpiohandler.cc
    functionUses: 0
    functionsReached:
    - std::runtime_error
    - SSL_get_ex_new_index
    - lock
    linkageType: ''
    returnType: void
    signature: void generateConnectionIndexIfNeeded()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 676
      start: 673
    functionDepth: 0
    functionLinenumber: 673
    functionLinenumberEnd: 676
    functionName: getConnectionIndex
    functionSourceFile: /src/pdns/pdns/tcpiohandler.cc
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int getConnectionIndex()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 698
      start: 698
    functionDepth: 0
    functionLinenumber: 698
    functionLinenumberEnd: 698
    functionName: Private
    functionSourceFile: /src/pdns/pdns/tcpiohandler.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Private()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<OpenSSLTLSIOCtx>
      Src: /src/pdns/pdns/tcpiohandler.cc:704,1
    - Dst: Private
      Src: /src/pdns/pdns/tcpiohandler.cc:704,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' frontend'
    argTypes:
    - TLSFrontend
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 705
      start: 702
    functionDepth: 0
    functionLinenumber: 702
    functionLinenumberEnd: 705
    functionName: createServerSideContext
    functionSourceFile: /src/pdns/pdns/tcpiohandler.cc
    functionUses: 0
    functionsReached:
    - std::make_shared<OpenSSLTLSIOCtx>
    - Private
    linkageType: ''
    returnType: std::shared_ptr<OpenSSLTLSIOCtx>
    signature: std::shared_ptr<OpenSSLTLSIOCtx> createServerSideContext(TLSFrontend&
      frontend)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<OpenSSLTLSIOCtx>
      Src: /src/pdns/pdns/tcpiohandler.cc:709,1
    - Dst: Private
      Src: /src/pdns/pdns/tcpiohandler.cc:709,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' params'
    argTypes:
    - TLSContextParameters
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 710
      start: 707
    functionDepth: 0
    functionLinenumber: 707
    functionLinenumberEnd: 710
    functionName: createClientSideContext
    functionSourceFile: /src/pdns/pdns/tcpiohandler.cc
    functionUses: 0
    functionsReached:
    - std::make_shared<OpenSSLTLSIOCtx>
    - Private
    linkageType: ''
    returnType: std::shared_ptr<OpenSSLTLSIOCtx>
    signature: std::shared_ptr<OpenSSLTLSIOCtx> createClientSideContext(const TLSContextParameters&
      params)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: getALPNVector
      Src: /src/pdns/pdns/tcpiohandler.cc:713,1
    - Dst: std::make_unique<OpenSSLFrontendContext>
      Src: /src/pdns/pdns/tcpiohandler.cc:713,1
    - Dst: generateConnectionIndexIfNeeded
      Src: /src/pdns/pdns/tcpiohandler.cc:715,1
    - Dst: second::get
      Src: /src/pdns/pdns/tcpiohandler.cc:720,1
    - Dst: SSL_CTX_set_tlsext_ticket_key_evp_cb
      Src: /src/pdns/pdns/tcpiohandler.cc:724,1
    - Dst: SSL_CTX_set_tlsext_ticket_key_cb
      Src: /src/pdns/pdns/tcpiohandler.cc:726,1
    - Dst: libssl_set_ticket_key_callback_data
      Src: /src/pdns/pdns/tcpiohandler.cc:728,1
    - Dst: get
      Src: /src/pdns/pdns/tcpiohandler.cc:728,1
    - Dst: d_ocspResponses::empty
      Src: /src/pdns/pdns/tcpiohandler.cc:732,1
    - Dst: SSL_CTX_set_tlsext_status_cb
      Src: /src/pdns/pdns/tcpiohandler.cc:733,1
    - Dst: SSL_CTX_set_tlsext_status_arg
      Src: /src/pdns/pdns/tcpiohandler.cc:734,1
    - Dst: SSL_CTX_set_read_ahead
      Src: /src/pdns/pdns/tcpiohandler.cc:739,1
    - Dst: libssl_set_error_counters_callback
      Src: /src/pdns/pdns/tcpiohandler.cc:742,1
    - Dst: libssl_set_alpn_select_callback
      Src: /src/pdns/pdns/tcpiohandler.cc:744,1
    - Dst: d_tlsConfig::d_keyLogFile::empty
      Src: /src/pdns/pdns/tcpiohandler.cc:746,1
    - Dst: libssl_set_key_log_file
      Src: /src/pdns/pdns/tcpiohandler.cc:747,1
    - Dst: d_tlsConfig::d_ticketKeyFile::empty
      Src: /src/pdns/pdns/tcpiohandler.cc:752,1
    - Dst: handleTicketsKeyRotation
      Src: /src/pdns/pdns/tcpiohandler.cc:753,1
    - Dst: time
      Src: /src/pdns/pdns/tcpiohandler.cc:753,1
    - Dst: loadTicketsKeys
      Src: /src/pdns/pdns/tcpiohandler.cc:756,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 30
    argCount: 2
    argNames:
    - ' frontend'
    - priv
    argTypes:
    - TLSFrontend
    - Private
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 762
      start: 713
    functionDepth: 1
    functionLinenumber: 713
    functionLinenumberEnd: 762
    functionName: OpenSSLTLSIOCtx
    functionSourceFile: /src/pdns/pdns/tcpiohandler.cc
    functionUses: 0
    functionsReached:
    - d_ocspResponses::empty
    - handleTicketsKeyRotation
    - d_tlsConfig::d_ticketKeyFile::empty
    - SSL_CTX_set_tlsext_ticket_key_evp_cb
    - generateConnectionIndexIfNeeded
    - time
    - libssl_set_ticket_key_callback_data
    - SSL_CTX_set_read_ahead
    - SSL_CTX_set_tlsext_status_cb
    - std::make_unique<OpenSSLFrontendContext>
    - libssl_set_alpn_select_callback
    - SSL_CTX_set_tlsext_status_arg
    - getALPNVector
    - second::get
    - get
    - d_tlsConfig::d_keyLogFile::empty
    - libssl_set_error_counters_callback
    - loadTicketsKeys
    - libssl_set_key_log_file
    - SSL_CTX_set_tlsext_ticket_key_cb
    linkageType: ''
    returnType: void
    signature: void OpenSSLTLSIOCtx(TLSFrontend& frontend, [[maybe_unused]] Private
      priv)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: registerOpenSSLUser
      Src: /src/pdns/pdns/tcpiohandler.cc:793,1
    - Dst: generateConnectionIndexIfNeeded
      Src: /src/pdns/pdns/tcpiohandler.cc:795,1
    - Dst: std::shared_ptr<SSL_CTX>
      Src: /src/pdns/pdns/tcpiohandler.cc:798,1
    - Dst: SSL_CTX_new
      Src: /src/pdns/pdns/tcpiohandler.cc:798,1
    - Dst: TLS_client_method
      Src: /src/pdns/pdns/tcpiohandler.cc:798,1
    - Dst: std::shared_ptr<SSL_CTX>
      Src: /src/pdns/pdns/tcpiohandler.cc:800,1
    - Dst: SSL_CTX_new
      Src: /src/pdns/pdns/tcpiohandler.cc:800,1
    - Dst: SSLv23_client_method
      Src: /src/pdns/pdns/tcpiohandler.cc:800,1
    - Dst: ERR_print_errors_fp
      Src: /src/pdns/pdns/tcpiohandler.cc:803,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/tcpiohandler.cc:804,1
    - Dst: SSL_CTX_set_options
      Src: /src/pdns/pdns/tcpiohandler.cc:807,1
    - Dst: get
      Src: /src/pdns/pdns/tcpiohandler.cc:807,1
    - Dst: SSL_CTX_set_ecdh_auto
      Src: /src/pdns/pdns/tcpiohandler.cc:809,1
    - Dst: get
      Src: /src/pdns/pdns/tcpiohandler.cc:809,1
    - Dst: d_ciphers::empty
      Src: /src/pdns/pdns/tcpiohandler.cc:812,1
    - Dst: SSL_CTX_set_cipher_list
      Src: /src/pdns/pdns/tcpiohandler.cc:813,1
    - Dst: get
      Src: /src/pdns/pdns/tcpiohandler.cc:813,1
    - Dst: d_ciphers::c_str
      Src: /src/pdns/pdns/tcpiohandler.cc:813,1
    - Dst: ERR_print_errors_fp
      Src: /src/pdns/pdns/tcpiohandler.cc:814,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/tcpiohandler.cc:815,1
    - Dst: d_ciphers13::empty
      Src: /src/pdns/pdns/tcpiohandler.cc:819,1
    - Dst: SSL_CTX_set_ciphersuites
      Src: /src/pdns/pdns/tcpiohandler.cc:820,1
    - Dst: get
      Src: /src/pdns/pdns/tcpiohandler.cc:820,1
    - Dst: d_ciphers13::c_str
      Src: /src/pdns/pdns/tcpiohandler.cc:820,1
    - Dst: ERR_print_errors_fp
      Src: /src/pdns/pdns/tcpiohandler.cc:821,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/tcpiohandler.cc:822,1
    - Dst: d_caStore::empty
      Src: /src/pdns/pdns/tcpiohandler.cc:828,1
    - Dst: SSL_CTX_set_default_verify_paths
      Src: /src/pdns/pdns/tcpiohandler.cc:829,1
    - Dst: get
      Src: /src/pdns/pdns/tcpiohandler.cc:829,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/tcpiohandler.cc:830,1
    - Dst: SSL_CTX_load_verify_locations
      Src: /src/pdns/pdns/tcpiohandler.cc:833,1
    - Dst: get
      Src: /src/pdns/pdns/tcpiohandler.cc:833,1
    - Dst: d_caStore::c_str
      Src: /src/pdns/pdns/tcpiohandler.cc:833,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/tcpiohandler.cc:834,1
    - Dst: SSL_CTX_set_verify
      Src: /src/pdns/pdns/tcpiohandler.cc:838,1
    - Dst: get
      Src: /src/pdns/pdns/tcpiohandler.cc:838,1
    - Dst: SLOG
      Src: /src/pdns/pdns/tcpiohandler.cc:841,1
    - Dst: warnlog
      Src: /src/pdns/pdns/tcpiohandler.cc:841,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/tcpiohandler.cc:842,1
    - Dst: warnlog
      Src: /src/pdns/pdns/tcpiohandler.cc:844,1
    - Dst: SSL_CTX_set_session_cache_mode
      Src: /src/pdns/pdns/tcpiohandler.cc:851,1
    - Dst: get
      Src: /src/pdns/pdns/tcpiohandler.cc:851,1
    - Dst: SSL_CTX_sess_set_new_cb
      Src: /src/pdns/pdns/tcpiohandler.cc:852,1
    - Dst: get
      Src: /src/pdns/pdns/tcpiohandler.cc:852,1
    - Dst: d_keyLogFile::empty
      Src: /src/pdns/pdns/tcpiohandler.cc:854,1
    - Dst: libssl_set_key_log_file
      Src: /src/pdns/pdns/tcpiohandler.cc:855,1
    - Dst: get
      Src: /src/pdns/pdns/tcpiohandler.cc:855,1
    - Dst: libssl_set_alpn_protos
      Src: /src/pdns/pdns/tcpiohandler.cc:858,1
    - Dst: get
      Src: /src/pdns/pdns/tcpiohandler.cc:858,1
    - Dst: getALPNVector
      Src: /src/pdns/pdns/tcpiohandler.cc:858,1
    - Dst: d_client_certificate::empty
      Src: /src/pdns/pdns/tcpiohandler.cc:860,1
    - Dst: d_client_certificate_key::empty
      Src: /src/pdns/pdns/tcpiohandler.cc:862,1
    - Dst: d_client_certificate_password::empty
      Src: /src/pdns/pdns/tcpiohandler.cc:866,1
    - Dst: std::move
      Src: /src/pdns/pdns/tcpiohandler.cc:869,1
    - Dst: std::move
      Src: /src/pdns/pdns/tcpiohandler.cc:869,1
    - Dst: libssl_setup_context_no_sni
      Src: /src/pdns/pdns/tcpiohandler.cc:871,1
    - Dst: get
      Src: /src/pdns/pdns/tcpiohandler.cc:871,1
    - Dst: SSL_CTX_set_mode
      Src: /src/pdns/pdns/tcpiohandler.cc:876,1
    - Dst: get
      Src: /src/pdns/pdns/tcpiohandler.cc:876,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 63
    argCount: 2
    argNames:
    - ' params'
    - priv
    argTypes:
    - TLSContextParameters
    - Private
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 879
      start: 765
    functionDepth: 1
    functionLinenumber: 765
    functionLinenumberEnd: 879
    functionName: OpenSSLTLSIOCtx
    functionSourceFile: /src/pdns/pdns/tcpiohandler.cc
    functionUses: 0
    functionsReached:
    - SSL_CTX_set_verify
    - d_client_certificate_key::empty
    - d_client_certificate::empty
    - d_ciphers::empty
    - SLOG
    - generateConnectionIndexIfNeeded
    - SSL_CTX_set_ciphersuites
    - ERR_print_errors_fp
    - warnlog
    - registerOpenSSLUser
    - libssl_set_alpn_protos
    - dnsdist::logging::getTopLogger
    - SSL_CTX_sess_set_new_cb
    - SSL_CTX_set_options
    - SSL_CTX_new
    - SSL_CTX_load_verify_locations
    - SSL_CTX_set_session_cache_mode
    - d_ciphers13::empty
    - SSL_CTX_set_mode
    - SSL_CTX_set_cipher_list
    - d_keyLogFile::empty
    - getALPNVector
    - std::runtime_error
    - TLS_client_method
    - get
    - libssl_setup_context_no_sni
    - d_caStore::empty
    - libssl_set_key_log_file
    - std::move
    - std::shared_ptr<SSL_CTX>
    - d_ciphers13::c_str
    - SSLv23_client_method
    - SSL_CTX_set_ecdh_auto
    - d_client_certificate_password::empty
    - SSL_CTX_set_default_verify_paths
    - d_caStore::c_str
    - d_ciphers::c_str
    linkageType: ''
    returnType: void
    signature: void OpenSSLTLSIOCtx(const TLSContextParameters& params, [[maybe_unused]]
      Private priv)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 881
      start: 881
    functionDepth: 0
    functionLinenumber: 881
    functionLinenumberEnd: 881
    functionName: OpenSSLTLSIOCtx
    functionSourceFile: /src/pdns/pdns/tcpiohandler.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void OpenSSLTLSIOCtx(const OpenSSLTLSIOCtx&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 882
      start: 882
    functionDepth: 0
    functionLinenumber: 882
    functionLinenumberEnd: 882
    functionName: OpenSSLTLSIOCtx
    functionSourceFile: /src/pdns/pdns/tcpiohandler.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void OpenSSLTLSIOCtx(OpenSSLTLSIOCtx&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 883
      start: 883
    functionDepth: 0
    functionLinenumber: 883
    functionLinenumberEnd: 883
    functionName: '& operator=(const OpenSSLTLSIOCtx&)'
    functionSourceFile: /src/pdns/pdns/tcpiohandler.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: OpenSSLTLSIOCtx
    signature: OpenSSLTLSIOCtx & operator=(const OpenSSLTLSIOCtx&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 884
      start: 884
    functionDepth: 0
    functionLinenumber: 884
    functionLinenumberEnd: 884
    functionName: '& operator=(OpenSSLTLSIOCtx&&)'
    functionSourceFile: /src/pdns/pdns/tcpiohandler.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: OpenSSLTLSIOCtx
    signature: OpenSSLTLSIOCtx & operator=(OpenSSLTLSIOCtx&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: reset
      Src: /src/pdns/pdns/tcpiohandler.cc:888,1
    - Dst: unregisterOpenSSLUser
      Src: /src/pdns/pdns/tcpiohandler.cc:889,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 890
      start: 886
    functionDepth: 0
    functionLinenumber: 886
    functionLinenumberEnd: 890
    functionName: ~OpenSSLTLSIOCtx() override
    functionSourceFile: /src/pdns/pdns/tcpiohandler.cc
    functionUses: 0
    functionsReached:
    - reset
    - unregisterOpenSSLUser
    linkageType: ''
    returnType: void
    signature: void ~OpenSSLTLSIOCtx() override
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: reinterpret_cast<OpenSSLFrontendContext*>
      Src: /src/pdns/pdns/tcpiohandler.cc:898,1
    - Dst: libssl_get_ticket_key_callback_data
      Src: /src/pdns/pdns/tcpiohandler.cc:898,1
    - Dst: libssl_ticket_key_callback
      Src: /src/pdns/pdns/tcpiohandler.cc:903,1
    - Dst: reinterpret_cast<OpenSSLTLSConnection*>
      Src: /src/pdns/pdns/tcpiohandler.cc:906,1
    - Dst: SSL_get_ex_data
      Src: /src/pdns/pdns/tcpiohandler.cc:906,1
    - Dst: getConnectionIndex
      Src: /src/pdns/pdns/tcpiohandler.cc:906,1
    - Dst: auto*::setUnknownTicketKey
      Src: /src/pdns/pdns/tcpiohandler.cc:909,1
    - Dst: auto*::setResumedFromInactiveTicketKey
      Src: /src/pdns/pdns/tcpiohandler.cc:912,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 17
    argCount: 6
    argNames:
    - s
    - keyName
    - iv
    - ectx
    - hctx
    - enc
    argTypes:
    - SSL*
    - unsigned char[]
    - unsigned char*
    - EVP_CIPHER_CTX*
    - HMAC_CTX*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 919
      start: 895
    functionDepth: 0
    functionLinenumber: 895
    functionLinenumberEnd: 919
    functionName: ticketKeyCb
    functionSourceFile: /src/pdns/pdns/tcpiohandler.cc
    functionUses: 0
    functionsReached:
    - libssl_get_ticket_key_callback_data
    - reinterpret_cast<OpenSSLTLSConnection*>
    - auto*::setUnknownTicketKey
    - getConnectionIndex
    - SSL_get_ex_data
    - auto*::setResumedFromInactiveTicketKey
    - reinterpret_cast<OpenSSLFrontendContext*>
    - libssl_ticket_key_callback
    linkageType: ''
    returnType: int
    signature: int ticketKeyCb(SSL* s, unsigned char keyName[TLS_TICKETS_KEY_NAME_SIZE],
      unsigned char* iv, EVP_CIPHER_CTX* ectx, HMAC_CTX* hctx, int enc)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: reinterpret_cast<std::map<int, std::string>*>
      Src: /src/pdns/pdns/tcpiohandler.cc:927,1
    - Dst: libssl_ocsp_stapling_callback
      Src: /src/pdns/pdns/tcpiohandler.cc:928,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - ssl
    - arg
    argTypes:
    - SSL*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 929
      start: 922
    functionDepth: 0
    functionLinenumber: 922
    functionLinenumberEnd: 929
    functionName: ocspStaplingCb
    functionSourceFile: /src/pdns/pdns/tcpiohandler.cc
    functionUses: 0
    functionsReached:
    - reinterpret_cast<std::map<int, std::string>*>
    - libssl_ocsp_stapling_callback
    linkageType: ''
    returnType: int
    signature: int ocspStaplingCb(SSL* ssl, void* arg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: reinterpret_cast<OpenSSLTLSConnection*>
      Src: /src/pdns/pdns/tcpiohandler.cc:934,1
    - Dst: SSL_get_ex_data
      Src: /src/pdns/pdns/tcpiohandler.cc:934,1
    - Dst: getConnectionIndex
      Src: /src/pdns/pdns/tcpiohandler.cc:934,1
    - Dst: OpenSSLTLSConnection*::addNewTicket
      Src: /src/pdns/pdns/tcpiohandler.cc:940,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - ssl
    - session
    argTypes:
    - SSL*
    - SSL_SESSION*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 947
      start: 932
    functionDepth: 0
    functionLinenumber: 932
    functionLinenumberEnd: 947
    functionName: newTicketFromServerCb
    functionSourceFile: /src/pdns/pdns/tcpiohandler.cc
    functionUses: 0
    functionsReached:
    - reinterpret_cast<OpenSSLTLSConnection*>
    - SSL_get_ex_data
    - getConnectionIndex
    - OpenSSLTLSConnection*::addNewTicket
    linkageType: ''
    returnType: int
    signature: int newTicketFromServerCb(SSL* ssl, SSL_SESSION* session)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: d_tlsCtx::get
      Src: /src/pdns/pdns/tcpiohandler.cc:952,1
    - Dst: get
      Src: /src/pdns/pdns/tcpiohandler.cc:954,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 955
      start: 949
    functionDepth: 0
    functionLinenumber: 949
    functionLinenumberEnd: 955
    functionName: getOpenSSLContext
    functionSourceFile: /src/pdns/pdns/tcpiohandler.cc
    functionUses: 0
    functionsReached:
    - get
    - d_tlsCtx::get
    linkageType: ''
    returnType: SSL_CTX
    signature: SSL_CTX * getOpenSSLContext() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: handleTicketsKeyRotation
      Src: /src/pdns/pdns/tcpiohandler.cc:959,1
    - Dst: std::make_unique<OpenSSLTLSConnection>
      Src: /src/pdns/pdns/tcpiohandler.cc:961,1
    - Dst: shared_from_this
      Src: /src/pdns/pdns/tcpiohandler.cc:961,1
    - Dst: std::unique_ptr<SSL, void(*)(SSL*)>
      Src: /src/pdns/pdns/tcpiohandler.cc:961,1
    - Dst: SSL_new
      Src: /src/pdns/pdns/tcpiohandler.cc:961,1
    - Dst: getOpenSSLContext
      Src: /src/pdns/pdns/tcpiohandler.cc:961,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - socket
    - ' timeout'
    - now
    argTypes:
    - int
    - struct timeval
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 962
      start: 957
    functionDepth: 1
    functionLinenumber: 957
    functionLinenumberEnd: 962
    functionName: getConnection
    functionSourceFile: /src/pdns/pdns/tcpiohandler.cc
    functionUses: 0
    functionsReached:
    - handleTicketsKeyRotation
    - SSL_new
    - std::unique_ptr<SSL, void(*)(SSL*)>
    - std::make_unique<OpenSSLTLSConnection>
    - getOpenSSLContext
    - shared_from_this
    linkageType: ''
    returnType: std::unique_ptr<TLSConnection>
    signature: std::unique_ptr<TLSConnection> getConnection(int socket, const struct
      timeval& timeout, time_t now) override
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::make_unique<OpenSSLTLSConnection>
      Src: /src/pdns/pdns/tcpiohandler.cc:966,1
    - Dst: shared_from_this
      Src: /src/pdns/pdns/tcpiohandler.cc:966,1
    - Dst: std::unique_ptr<SSL, void(*)(SSL*)>
      Src: /src/pdns/pdns/tcpiohandler.cc:966,1
    - Dst: SSL_new
      Src: /src/pdns/pdns/tcpiohandler.cc:966,1
    - Dst: getOpenSSLContext
      Src: /src/pdns/pdns/tcpiohandler.cc:966,1
    - Dst: auto::enableKTLS
      Src: /src/pdns/pdns/tcpiohandler.cc:968,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 4
    argNames:
    - ' host'
    - hostIsAddr
    - socket
    - ' timeout'
    argTypes:
    - std::string
    - bool
    - int
    - struct timeval
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 971
      start: 964
    functionDepth: 0
    functionLinenumber: 964
    functionLinenumberEnd: 971
    functionName: getClientConnection
    functionSourceFile: /src/pdns/pdns/tcpiohandler.cc
    functionUses: 0
    functionsReached:
    - auto::enableKTLS
    - SSL_new
    - std::unique_ptr<SSL, void(*)(SSL*)>
    - std::make_unique<OpenSSLTLSConnection>
    - getOpenSSLContext
    - shared_from_this
    linkageType: ''
    returnType: std::unique_ptr<TLSConnection>
    signature: std::unique_ptr<TLSConnection> getClientConnection(const std::string&
      host, bool hostIsAddr, int socket, const struct timeval& timeout) override
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: d_ticketKeys::rotateTicketsKey
      Src: /src/pdns/pdns/tcpiohandler.cc:975,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - now
    argTypes:
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 980
      start: 973
    functionDepth: 0
    functionLinenumber: 973
    functionLinenumberEnd: 980
    functionName: rotateTicketsKey
    functionSourceFile: /src/pdns/pdns/tcpiohandler.cc
    functionUses: 1
    functionsReached:
    - d_ticketKeys::rotateTicketsKey
    linkageType: ''
    returnType: void
    signature: void rotateTicketsKey(time_t now) override
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: d_ticketKeys::loadTicketsKeys
      Src: /src/pdns/pdns/tcpiohandler.cc:984,1
    - Dst: time
      Src: /src/pdns/pdns/tcpiohandler.cc:987,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ' keyFile'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 989
      start: 982
    functionDepth: 0
    functionLinenumber: 982
    functionLinenumberEnd: 989
    functionName: loadTicketsKeys
    functionSourceFile: /src/pdns/pdns/tcpiohandler.cc
    functionUses: 2
    functionsReached:
    - time
    - d_ticketKeys::loadTicketsKeys
    linkageType: ''
    returnType: void
    signature: void loadTicketsKeys(const std::string& keyFile) final
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: d_ticketKeys::loadTicketsKey
      Src: /src/pdns/pdns/tcpiohandler.cc:993,1
    - Dst: time
      Src: /src/pdns/pdns/tcpiohandler.cc:996,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ' key'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 998
      start: 991
    functionDepth: 0
    functionLinenumber: 991
    functionLinenumberEnd: 998
    functionName: loadTicketsKey
    functionSourceFile: /src/pdns/pdns/tcpiohandler.cc
    functionUses: 1
    functionsReached:
    - time
    - d_ticketKeys::loadTicketsKey
    linkageType: ''
    returnType: void
    signature: void loadTicketsKey(const std::string& key) final
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: d_ticketKeys::getKeysCount
      Src: /src/pdns/pdns/tcpiohandler.cc:1002,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1003
      start: 1000
    functionDepth: 0
    functionLinenumber: 1000
    functionLinenumberEnd: 1003
    functionName: getTicketsKeysCount
    functionSourceFile: /src/pdns/pdns/tcpiohandler.cc
    functionUses: 0
    functionsReached:
    - d_ticketKeys::getKeysCount
    linkageType: ''
    returnType: size_t
    signature: size_t getTicketsKeysCount() override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1008
      start: 1005
    functionDepth: 0
    functionLinenumber: 1005
    functionLinenumberEnd: 1008
    functionName: getName
    functionSourceFile: /src/pdns/pdns/tcpiohandler.cc
    functionUses: 47
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string getName() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1013
      start: 1010
    functionDepth: 0
    functionLinenumber: 1010
    functionLinenumberEnd: 1013
    functionName: isServerContext
    functionSourceFile: /src/pdns/pdns/tcpiohandler.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool isServerContext() const
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: reinterpret_cast<OpenSSLTLSIOCtx*>
      Src: /src/pdns/pdns/tcpiohandler.cc:1023,1
    - Dst: pdns::views::UnsignedCharView::size
      Src: /src/pdns/pdns/tcpiohandler.cc:1029,1
    - Dst: pdns::views::UnsignedCharView::at
      Src: /src/pdns/pdns/tcpiohandler.cc:1030,1
    - Dst: size
      Src: /src/pdns/pdns/tcpiohandler.cc:1037,1
    - Dst: memcmp
      Src: /src/pdns/pdns/tcpiohandler.cc:1037,1
    - Dst: pdns::views::UnsignedCharView::at
      Src: /src/pdns/pdns/tcpiohandler.cc:1037,1
    - Dst: data
      Src: /src/pdns/pdns/tcpiohandler.cc:1037,1
    - Dst: size
      Src: /src/pdns/pdns/tcpiohandler.cc:1037,1
    - Dst: pdns::views::UnsignedCharView::at
      Src: /src/pdns/pdns/tcpiohandler.cc:1038,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 5
    argNames:
    - out
    - outlen
    - in
    - inlen
    - arg
    argTypes:
    - unsigned char**
    - unsigned char*
    - unsigned char*
    - unsigned int
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1047
      start: 1017
    functionDepth: 0
    functionLinenumber: 1017
    functionLinenumberEnd: 1047
    functionName: alpnServerSelectCallback
    functionSourceFile: /src/pdns/pdns/tcpiohandler.cc
    functionUses: 0
    functionsReached:
    - memcmp
    - pdns::views::UnsignedCharView::at
    - size
    - pdns::views::UnsignedCharView::size
    - reinterpret_cast<OpenSSLTLSIOCtx*>
    - data
    linkageType: ''
    returnType: int
    signature: int alpnServerSelectCallback(SSL*, const unsigned char** out, unsigned
      char* outlen, const unsigned char* in, unsigned int inlen, void* arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sodium_mlock
      Src: /src/pdns/pdns/tcpiohandler.cc:1066,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - data
    - size
    argTypes:
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1068
      start: 1063
    functionDepth: 0
    functionLinenumber: 1063
    functionLinenumberEnd: 1068
    functionName: safe_memory_lock
    functionSourceFile: /src/pdns/pdns/tcpiohandler.cc
    functionUses: 0
    functionsReached:
    - sodium_mlock
    linkageType: ''
    returnType: void
    signature: void safe_memory_lock([[maybe_unused]] void* data, [[maybe_unused]]
      size_t size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sodium_munlock
      Src: /src/pdns/pdns/tcpiohandler.cc:1073,1
    - Dst: SensitiveData::reallyClearContent
      Src: /src/pdns/pdns/tcpiohandler.cc:1075,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - data
    - size
    argTypes:
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1077
      start: 1070
    functionDepth: 0
    functionLinenumber: 1070
    functionLinenumberEnd: 1077
    functionName: safe_memory_release
    functionSourceFile: /src/pdns/pdns/tcpiohandler.cc
    functionUses: 0
    functionsReached:
    - SensitiveData::reallyClearContent
    - sodium_munlock
    linkageType: ''
    returnType: void
    signature: void safe_memory_release(void* data, size_t size)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: gnutls_session_ticket_key_generate
      Src: /src/pdns/pdns/tcpiohandler.cc:1084,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/tcpiohandler.cc:1085,1
    - Dst: safe_memory_lock
      Src: /src/pdns/pdns/tcpiohandler.cc:1088,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1089
      start: 1082
    functionDepth: 0
    functionLinenumber: 1082
    functionLinenumberEnd: 1089
    functionName: GnuTLSTicketsKey::GnuTLSTicketsKey
    functionSourceFile: /src/pdns/pdns/tcpiohandler.cc
    functionUses: 0
    functionsReached:
    - gnutls_session_ticket_key_generate
    - safe_memory_lock
    - std::runtime_error
    linkageType: ''
    returnType: void
    signature: void GnuTLSTicketsKey()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: gnutls_session_ticket_key_generate
      Src: /src/pdns/pdns/tcpiohandler.cc:1095,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/tcpiohandler.cc:1096,1
    - Dst: safe_memory_lock
      Src: /src/pdns/pdns/tcpiohandler.cc:1099,1
    - Dst: size
      Src: /src/pdns/pdns/tcpiohandler.cc:1100,1
    - Dst: safe_memory_release
      Src: /src/pdns/pdns/tcpiohandler.cc:1101,1
    - Dst: gnutls_free
      Src: /src/pdns/pdns/tcpiohandler.cc:1102,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/tcpiohandler.cc:1104,1
    - Dst: memcpy
      Src: /src/pdns/pdns/tcpiohandler.cc:1106,1
    - Dst: data
      Src: /src/pdns/pdns/tcpiohandler.cc:1106,1
    - Dst: size
      Src: /src/pdns/pdns/tcpiohandler.cc:1106,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 1
    argNames:
    - ' key'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1107
      start: 1091
    functionDepth: 0
    functionLinenumber: 1091
    functionLinenumberEnd: 1107
    functionName: GnuTLSTicketsKey::GnuTLSTicketsKey
    functionSourceFile: /src/pdns/pdns/tcpiohandler.cc
    functionUses: 0
    functionsReached:
    - memcpy
    - safe_memory_release
    - std::runtime_error
    - size
    - safe_memory_lock
    - data
    - gnutls_session_ticket_key_generate
    - gnutls_free
    linkageType: ''
    returnType: void
    signature: void GnuTLSTicketsKey(const std::string& key)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: gnutls_session_ticket_key_generate
      Src: /src/pdns/pdns/tcpiohandler.cc:1112,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/tcpiohandler.cc:1113,1
    - Dst: safe_memory_lock
      Src: /src/pdns/pdns/tcpiohandler.cc:1116,1
    - Dst: read
      Src: /src/pdns/pdns/tcpiohandler.cc:1119,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/tcpiohandler.cc:1119,1
    - Dst: fail
      Src: /src/pdns/pdns/tcpiohandler.cc:1121,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/tcpiohandler.cc:1122,1
    - Dst: safe_memory_release
      Src: /src/pdns/pdns/tcpiohandler.cc:1127,1
    - Dst: gnutls_free
      Src: /src/pdns/pdns/tcpiohandler.cc:1128,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 16
    argCount: 1
    argNames:
    - ' file'
    argTypes:
    - std::ifstream
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1132
      start: 1108
    functionDepth: 0
    functionLinenumber: 1108
    functionLinenumberEnd: 1132
    functionName: GnuTLSTicketsKey::GnuTLSTicketsKey
    functionSourceFile: /src/pdns/pdns/tcpiohandler.cc
    functionUses: 0
    functionsReached:
    - reinterpret_cast<char*>
    - safe_memory_release
    - read
    - std::runtime_error
    - fail
    - safe_memory_lock
    - gnutls_session_ticket_key_generate
    - gnutls_free
    linkageType: ''
    returnType: void
    signature: void GnuTLSTicketsKey(std::ifstream& file)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::string::append
      Src: /src/pdns/pdns/tcpiohandler.cc:1138,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/tcpiohandler.cc:1138,1
    - Dst: safe_memory_lock
      Src: /src/pdns/pdns/tcpiohandler.cc:1139,1
    - Dst: std::string::data
      Src: /src/pdns/pdns/tcpiohandler.cc:1139,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/tcpiohandler.cc:1139,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1142
      start: 1133
    functionDepth: 0
    functionLinenumber: 1133
    functionLinenumberEnd: 1142
    functionName: GnuTLSTicketsKey::content
    functionSourceFile: /src/pdns/pdns/tcpiohandler.cc
    functionUses: 0
    functionsReached:
    - std::string::append
    - std::string::data
    - safe_memory_lock
    - reinterpret_cast<const char*>
    - std::string::size
    linkageType: ''
    returnType: std::string
    signature: std::string content() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: safe_memory_release
      Src: /src/pdns/pdns/tcpiohandler.cc:1147,1
    - Dst: gnutls_free
      Src: /src/pdns/pdns/tcpiohandler.cc:1149,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1151
      start: 1144
    functionDepth: 0
    functionLinenumber: 1144
    functionLinenumberEnd: 1151
    functionName: ~GnuTLSTicketsKey()
    functionSourceFile: /src/pdns/pdns/tcpiohandler.cc
    functionUses: 0
    functionsReached:
    - safe_memory_release
    - gnutls_free
    linkageType: ''
    returnType: void
    signature: void ~GnuTLSTicketsKey()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1155
      start: 1152
    functionDepth: 0
    functionLinenumber: 1152
    functionLinenumberEnd: 1155
    functionName: '& getKey() const'
    functionSourceFile: /src/pdns/pdns/tcpiohandler.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: gnutls_datum_t
    signature: gnutls_datum_t & getKey() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ' sess'
    argTypes:
    - gnutls_datum_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1168
      start: 1164
    functionDepth: 0
    functionLinenumber: 1164
    functionLinenumberEnd: 1168
    functionName: GnuTLSSession::GnuTLSSession
    functionSourceFile: /src/pdns/pdns/tcpiohandler.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void GnuTLSSession(gnutls_datum_t& sess)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: safe_memory_release
      Src: /src/pdns/pdns/tcpiohandler.cc:1173,1
    - Dst: gnutls_free
      Src: /src/pdns/pdns/tcpiohandler.cc:1175,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1177
      start: 1170
    functionDepth: 0
    functionLinenumber: 1170
    functionLinenumberEnd: 1177
    functionName: ~GnuTLSSession() override
    functionSourceFile: /src/pdns/pdns/tcpiohandler.cc
    functionUses: 0
    functionsReached:
    - safe_memory_release
    - gnutls_free
    linkageType: ''
    returnType: void
    signature: void ~GnuTLSSession() override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1182
      start: 1179
    functionDepth: 0
    functionLinenumber: 1179
    functionLinenumberEnd: 1182
    functionName: '& getNative()'
    functionSourceFile: /src/pdns/pdns/tcpiohandler.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: gnutls_datum_t
    signature: gnutls_datum_t & getNative()
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: std::unique_ptr<gnutls_session_int, void(*)(gnutls_session_t)>
      Src: /src/pdns/pdns/tcpiohandler.cc:1192,1
    - Dst: gnutls_init
      Src: /src/pdns/pdns/tcpiohandler.cc:1202,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/tcpiohandler.cc:1203,1
    - Dst: std::unique_ptr<gnutls_session_int, void(*)(gnutls_session_t)>
      Src: /src/pdns/pdns/tcpiohandler.cc:1206,1
    - Dst: gnutls_credentials_set
      Src: /src/pdns/pdns/tcpiohandler.cc:1209,1
    - Dst: get
      Src: /src/pdns/pdns/tcpiohandler.cc:1209,1
    - Dst: get
      Src: /src/pdns/pdns/tcpiohandler.cc:1209,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/tcpiohandler.cc:1210,1
    - Dst: gnutls_priority_set
      Src: /src/pdns/pdns/tcpiohandler.cc:1213,1
    - Dst: get
      Src: /src/pdns/pdns/tcpiohandler.cc:1213,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/tcpiohandler.cc:1214,1
    - Dst: getKey
      Src: /src/pdns/pdns/tcpiohandler.cc:1218,1
    - Dst: gnutls_session_ticket_enable_server
      Src: /src/pdns/pdns/tcpiohandler.cc:1219,1
    - Dst: get
      Src: /src/pdns/pdns/tcpiohandler.cc:1219,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/tcpiohandler.cc:1220,1
    - Dst: gnutls_transport_set_int
      Src: /src/pdns/pdns/tcpiohandler.cc:1224,1
    - Dst: get
      Src: /src/pdns/pdns/tcpiohandler.cc:1224,1
    - Dst: gnutls_handshake_set_timeout
      Src: /src/pdns/pdns/tcpiohandler.cc:1227,1
    - Dst: get
      Src: /src/pdns/pdns/tcpiohandler.cc:1227,1
    - Dst: gnutls_record_set_timeout
      Src: /src/pdns/pdns/tcpiohandler.cc:1228,1
    - Dst: get
      Src: /src/pdns/pdns/tcpiohandler.cc:1228,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 22
    argCount: 6
    argNames:
    - socket
    - ' timeout'
    - ' creds'
    - priorityCache
    - ' ticketsKey'
    - enableTickets
    argTypes:
    - int
    - struct timeval
    - std::shared_ptr<gnutls_certificate_credentials_st>
    - gnutls_priority_t
    - std::shared_ptr<GnuTLSTicketsKey>
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1229
      start: 1192
    functionDepth: 0
    functionLinenumber: 1192
    functionLinenumberEnd: 1229
    functionName: GnuTLSConnection
    functionSourceFile: /src/pdns/pdns/tcpiohandler.cc
    functionUses: 0
    functionsReached:
    - gnutls_handshake_set_timeout
    - std::runtime_error
    - gnutls_transport_set_int
    - gnutls_credentials_set
    - gnutls_record_set_timeout
    - get
    - getKey
    - gnutls_session_ticket_enable_server
    - gnutls_init
    - std::unique_ptr<gnutls_session_int, void(*)(gnutls_session_t)>
    - gnutls_priority_set
    linkageType: ''
    returnType: void
    signature: void GnuTLSConnection(int socket, const struct timeval& timeout, std::shared_ptr<gnutls_certificate_credentials_st>&
      creds, const gnutls_priority_t priorityCache, std::shared_ptr<GnuTLSTicketsKey>&
      ticketsKey, bool enableTickets)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: std::unique_ptr<gnutls_session_int, void(*)(gnutls_session_t)>
      Src: /src/pdns/pdns/tcpiohandler.cc:1232,1
    - Dst: gnutls_init
      Src: /src/pdns/pdns/tcpiohandler.cc:1242,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/tcpiohandler.cc:1243,1
    - Dst: std::unique_ptr<gnutls_session_int, void(*)(gnutls_session_t)>
      Src: /src/pdns/pdns/tcpiohandler.cc:1246,1
    - Dst: gnutls_credentials_set
      Src: /src/pdns/pdns/tcpiohandler.cc:1249,1
    - Dst: get
      Src: /src/pdns/pdns/tcpiohandler.cc:1249,1
    - Dst: get
      Src: /src/pdns/pdns/tcpiohandler.cc:1249,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/tcpiohandler.cc:1251,1
    - Dst: std::string
      Src: /src/pdns/pdns/tcpiohandler.cc:1251,1
    - Dst: gnutls_strerror
      Src: /src/pdns/pdns/tcpiohandler.cc:1251,1
    - Dst: gnutls_priority_set
      Src: /src/pdns/pdns/tcpiohandler.cc:1254,1
    - Dst: get
      Src: /src/pdns/pdns/tcpiohandler.cc:1254,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/tcpiohandler.cc:1256,1
    - Dst: std::string
      Src: /src/pdns/pdns/tcpiohandler.cc:1256,1
    - Dst: gnutls_strerror
      Src: /src/pdns/pdns/tcpiohandler.cc:1256,1
    - Dst: gnutls_transport_set_int
      Src: /src/pdns/pdns/tcpiohandler.cc:1259,1
    - Dst: get
      Src: /src/pdns/pdns/tcpiohandler.cc:1259,1
    - Dst: gnutls_handshake_set_timeout
      Src: /src/pdns/pdns/tcpiohandler.cc:1262,1
    - Dst: get
      Src: /src/pdns/pdns/tcpiohandler.cc:1262,1
    - Dst: gnutls_record_set_timeout
      Src: /src/pdns/pdns/tcpiohandler.cc:1263,1
    - Dst: get
      Src: /src/pdns/pdns/tcpiohandler.cc:1263,1
    - Dst: empty
      Src: /src/pdns/pdns/tcpiohandler.cc:1266,1
    - Dst: gnutls_session_set_verify_cert
      Src: /src/pdns/pdns/tcpiohandler.cc:1267,1
    - Dst: get
      Src: /src/pdns/pdns/tcpiohandler.cc:1267,1
    - Dst: c_str
      Src: /src/pdns/pdns/tcpiohandler.cc:1267,1
    - Dst: gnutls_server_name_set
      Src: /src/pdns/pdns/tcpiohandler.cc:1268,1
    - Dst: get
      Src: /src/pdns/pdns/tcpiohandler.cc:1268,1
    - Dst: c_str
      Src: /src/pdns/pdns/tcpiohandler.cc:1268,1
    - Dst: size
      Src: /src/pdns/pdns/tcpiohandler.cc:1268,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/tcpiohandler.cc:1270,1
    - Dst: std::string
      Src: /src/pdns/pdns/tcpiohandler.cc:1270,1
    - Dst: gnutls_strerror
      Src: /src/pdns/pdns/tcpiohandler.cc:1270,1
    - Dst: gnutls_session_set_ptr
      Src: /src/pdns/pdns/tcpiohandler.cc:1278,1
    - Dst: get
      Src: /src/pdns/pdns/tcpiohandler.cc:1278,1
    - Dst: gnutls_handshake_set_hook_function
      Src: /src/pdns/pdns/tcpiohandler.cc:1279,1
    - Dst: get
      Src: /src/pdns/pdns/tcpiohandler.cc:1279,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 27
    argCount: 6
    argNames:
    - ' host'
    - socket
    - ' timeout'
    - ' creds'
    - priorityCache
    - validateCerts
    argTypes:
    - std::string
    - int
    - struct timeval
    - std::shared_ptr<gnutls_certificate_credentials_st>
    - gnutls_priority_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1280
      start: 1232
    functionDepth: 0
    functionLinenumber: 1232
    functionLinenumberEnd: 1280
    functionName: GnuTLSConnection
    functionSourceFile: /src/pdns/pdns/tcpiohandler.cc
    functionUses: 0
    functionsReached:
    - gnutls_session_set_verify_cert
    - gnutls_handshake_set_timeout
    - gnutls_session_set_ptr
    - gnutls_server_name_set
    - c_str
    - std::runtime_error
    - gnutls_transport_set_int
    - gnutls_credentials_set
    - gnutls_record_set_timeout
    - size
    - get
    - gnutls_strerror
    - gnutls_handshake_set_hook_function
    - empty
    - std::string
    - gnutls_init
    - std::unique_ptr<gnutls_session_int, void(*)(gnutls_session_t)>
    - gnutls_priority_set
    linkageType: ''
    returnType: void
    signature: void GnuTLSConnection(const std::string& host, int socket, const struct
      timeval& timeout, std::shared_ptr<gnutls_certificate_credentials_st>& creds,
      const gnutls_priority_t priorityCache, bool validateCerts)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: reinterpret_cast<GnuTLSConnection*>
      Src: /src/pdns/pdns/tcpiohandler.cc:1294,1
    - Dst: gnutls_session_get_ptr
      Src: /src/pdns/pdns/tcpiohandler.cc:1294,1
    - Dst: gnutls_session_get_data2
      Src: /src/pdns/pdns/tcpiohandler.cc:1300,1
    - Dst: gnutls_free
      Src: /src/pdns/pdns/tcpiohandler.cc:1304,1
    - Dst: auto*::d_tlsSessions::push_back
      Src: /src/pdns/pdns/tcpiohandler.cc:1308,1
    - Dst: std::make_unique<GnuTLSSession>
      Src: /src/pdns/pdns/tcpiohandler.cc:1308,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 15
    argCount: 3
    argNames:
    - session
    - htype
    - post
    argTypes:
    - gnutls_session_t
    - unsigned int
    - unsigned
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1310
      start: 1286
    functionDepth: 0
    functionLinenumber: 1286
    functionLinenumberEnd: 1310
    functionName: newTicketFromServerCb
    functionSourceFile: /src/pdns/pdns/tcpiohandler.cc
    functionUses: 0
    functionsReached:
    - reinterpret_cast<GnuTLSConnection*>
    - auto*::d_tlsSessions::push_back
    - gnutls_session_get_ptr
    - gnutls_session_get_data2
    - std::make_unique<GnuTLSSession>
    - gnutls_free
    linkageType: ''
    returnType: int
    signature: int newTicketFromServerCb(gnutls_session_t session, unsigned int htype,
      unsigned post, unsigned int /* incoming */)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: gnutls_transport_set_fastopen
      Src: /src/pdns/pdns/tcpiohandler.cc:1318,1
    - Dst: get
      Src: /src/pdns/pdns/tcpiohandler.cc:1318,1
    - Dst: const_cast<struct sockaddr*>
      Src: /src/pdns/pdns/tcpiohandler.cc:1318,1
    - Dst: reinterpret_cast<const struct sockaddr*>
      Src: /src/pdns/pdns/tcpiohandler.cc:1318,1
    - Dst: getSocklen
      Src: /src/pdns/pdns/tcpiohandler.cc:1318,1
    - Dst: gnutls_handshake
      Src: /src/pdns/pdns/tcpiohandler.cc:1323,1
    - Dst: get
      Src: /src/pdns/pdns/tcpiohandler.cc:1323,1
    - Dst: gnutls_record_get_direction
      Src: /src/pdns/pdns/tcpiohandler.cc:1329,1
    - Dst: get
      Src: /src/pdns/pdns/tcpiohandler.cc:1329,1
    - Dst: gnutls_error_is_fatal
      Src: /src/pdns/pdns/tcpiohandler.cc:1332,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/tcpiohandler.cc:1333,1
    - Dst: std::string
      Src: /src/pdns/pdns/tcpiohandler.cc:1333,1
    - Dst: gnutls_strerror
      Src: /src/pdns/pdns/tcpiohandler.cc:1333,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/tcpiohandler.cc:1337,1
    - Dst: std::string
      Src: /src/pdns/pdns/tcpiohandler.cc:1337,1
    - Dst: gnutls_strerror
      Src: /src/pdns/pdns/tcpiohandler.cc:1337,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 18
    argCount: 2
    argNames:
    - fastOpen
    - ' remote'
    argTypes:
    - bool
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1338
      start: 1312
    functionDepth: 0
    functionLinenumber: 1312
    functionLinenumberEnd: 1338
    functionName: tryConnect
    functionSourceFile: /src/pdns/pdns/tcpiohandler.cc
    functionUses: 0
    functionsReached:
    - std::runtime_error
    - gnutls_handshake
    - gnutls_record_get_direction
    - const_cast<struct sockaddr*>
    - get
    - gnutls_transport_set_fastopen
    - reinterpret_cast<const struct sockaddr*>
    - gnutls_strerror
    - std::string
    - getSocklen
    - gnutls_error_is_fatal
    linkageType: ''
    returnType: IOState
    signature: IOState tryConnect(bool fastOpen, [[maybe_unused]] const ComboAddress&
      remote) override
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: gettimeofday
      Src: /src/pdns/pdns/tcpiohandler.cc:1345,1
    - Dst: tryConnect
      Src: /src/pdns/pdns/tcpiohandler.cc:1350,1
    - Dst: waitForData
      Src: /src/pdns/pdns/tcpiohandler.cc:1355,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/tcpiohandler.cc:1357,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/tcpiohandler.cc:1357,1
    - Dst: waitForRWData
      Src: /src/pdns/pdns/tcpiohandler.cc:1361,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/tcpiohandler.cc:1363,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/tcpiohandler.cc:1363,1
    - Dst: gettimeofday
      Src: /src/pdns/pdns/tcpiohandler.cc:1369,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/tcpiohandler.cc:1372,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 28
    argCount: 3
    argNames:
    - fastOpen
    - ' remote'
    - ' timeout'
    argTypes:
    - bool
    - ComboAddress
    - struct timeval
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1379
      start: 1340
    functionDepth: 0
    functionLinenumber: 1340
    functionLinenumberEnd: 1379
    functionName: connect
    functionSourceFile: /src/pdns/pdns/tcpiohandler.cc
    functionUses: 8
    functionsReached:
    - std::to_string
    - std::runtime_error
    - tryConnect
    - runtime_error
    - waitForData
    - gettimeofday
    - waitForRWData
    linkageType: ''
    returnType: void
    signature: void connect(bool fastOpen, const ComboAddress& remote, const struct
      timeval& timeout) override
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: gnutls_handshake
      Src: /src/pdns/pdns/tcpiohandler.cc:1385,1
    - Dst: get
      Src: /src/pdns/pdns/tcpiohandler.cc:1385,1
    - Dst: gnutls_error_is_fatal
      Src: /src/pdns/pdns/tcpiohandler.cc:1386,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/tcpiohandler.cc:1388,1
    - Dst: std::string
      Src: /src/pdns/pdns/tcpiohandler.cc:1388,1
    - Dst: gnutls_strerror
      Src: /src/pdns/pdns/tcpiohandler.cc:1388,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/tcpiohandler.cc:1391,1
    - Dst: std::string
      Src: /src/pdns/pdns/tcpiohandler.cc:1391,1
    - Dst: gnutls_strerror
      Src: /src/pdns/pdns/tcpiohandler.cc:1391,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1398
      start: 1381
    functionDepth: 0
    functionLinenumber: 1381
    functionLinenumberEnd: 1398
    functionName: doHandshake
    functionSourceFile: /src/pdns/pdns/tcpiohandler.cc
    functionUses: 0
    functionsReached:
    - std::runtime_error
    - gnutls_handshake
    - get
    - gnutls_strerror
    - std::string
    - gnutls_error_is_fatal
    linkageType: ''
    returnType: void
    signature: void doHandshake() override
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: gnutls_handshake
      Src: /src/pdns/pdns/tcpiohandler.cc:1405,1
    - Dst: get
      Src: /src/pdns/pdns/tcpiohandler.cc:1405,1
    - Dst: gnutls_record_get_direction
      Src: /src/pdns/pdns/tcpiohandler.cc:1411,1
    - Dst: get
      Src: /src/pdns/pdns/tcpiohandler.cc:1411,1
    - Dst: gnutls_error_is_fatal
      Src: /src/pdns/pdns/tcpiohandler.cc:1414,1
    - Dst: gnutls_certificate_verification_status_print
      Src: /src/pdns/pdns/tcpiohandler.cc:1420,1
    - Dst: gnutls_session_get_verify_cert_status
      Src: /src/pdns/pdns/tcpiohandler.cc:1420,1
    - Dst: get
      Src: /src/pdns/pdns/tcpiohandler.cc:1420,1
    - Dst: gnutls_certificate_type_get
      Src: /src/pdns/pdns/tcpiohandler.cc:1420,1
    - Dst: get
      Src: /src/pdns/pdns/tcpiohandler.cc:1420,1
    - Dst: std::string
      Src: /src/pdns/pdns/tcpiohandler.cc:1421,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/tcpiohandler.cc:1421,1
    - Dst: gnutls_free
      Src: /src/pdns/pdns/tcpiohandler.cc:1422,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/tcpiohandler.cc:1426,1
    - Dst: std::string
      Src: /src/pdns/pdns/tcpiohandler.cc:1426,1
    - Dst: gnutls_strerror
      Src: /src/pdns/pdns/tcpiohandler.cc:1426,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/tcpiohandler.cc:1429,1
    - Dst: std::string
      Src: /src/pdns/pdns/tcpiohandler.cc:1429,1
    - Dst: gnutls_strerror
      Src: /src/pdns/pdns/tcpiohandler.cc:1429,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/tcpiohandler.cc:1435,1
    - Dst: std::string
      Src: /src/pdns/pdns/tcpiohandler.cc:1435,1
    - Dst: gnutls_strerror
      Src: /src/pdns/pdns/tcpiohandler.cc:1435,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/tcpiohandler.cc:1438,1
    - Dst: std::string
      Src: /src/pdns/pdns/tcpiohandler.cc:1438,1
    - Dst: gnutls_strerror
      Src: /src/pdns/pdns/tcpiohandler.cc:1438,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 29
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1440
      start: 1400
    functionDepth: 0
    functionLinenumber: 1400
    functionLinenumberEnd: 1440
    functionName: tryHandshake
    functionSourceFile: /src/pdns/pdns/tcpiohandler.cc
    functionUses: 0
    functionsReached:
    - gnutls_certificate_verification_status_print
    - gnutls_certificate_type_get
    - std::runtime_error
    - gnutls_handshake
    - gnutls_record_get_direction
    - get
    - gnutls_session_get_verify_cert_status
    - reinterpret_cast<const char*>
    - gnutls_strerror
    - std::string
    - gnutls_error_is_fatal
    - gnutls_free
    linkageType: ''
    returnType: IOState
    signature: IOState tryHandshake() override
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: tryHandshake
      Src: /src/pdns/pdns/tcpiohandler.cc:1447,1
    - Dst: gnutls_record_send
      Src: /src/pdns/pdns/tcpiohandler.cc:1454,1
    - Dst: get
      Src: /src/pdns/pdns/tcpiohandler.cc:1454,1
    - Dst: reinterpret_cast<const char *>
      Src: /src/pdns/pdns/tcpiohandler.cc:1454,1
    - Dst: at
      Src: /src/pdns/pdns/tcpiohandler.cc:1454,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/tcpiohandler.cc:1456,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/tcpiohandler.cc:1459,1
    - Dst: gnutls_error_is_fatal
      Src: /src/pdns/pdns/tcpiohandler.cc:1462,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/tcpiohandler.cc:1463,1
    - Dst: std::string
      Src: /src/pdns/pdns/tcpiohandler.cc:1463,1
    - Dst: gnutls_strerror
      Src: /src/pdns/pdns/tcpiohandler.cc:1463,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/tcpiohandler.cc:1468,1
    - Dst: infolog
      Src: /src/pdns/pdns/tcpiohandler.cc:1468,1
    - Dst: gnutls_strerror
      Src: /src/pdns/pdns/tcpiohandler.cc:1468,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/tcpiohandler.cc:1469,1
    - Dst: gnutls_strerror
      Src: /src/pdns/pdns/tcpiohandler.cc:1469,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/tcpiohandler.cc:1469,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 24
    argCount: 3
    argNames:
    - ' buffer'
    - ' pos'
    - toWrite
    argTypes:
    - PacketBuffer
    - size_t
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1474
      start: 1442
    functionDepth: 1
    functionLinenumber: 1442
    functionLinenumberEnd: 1474
    functionName: tryWrite
    functionSourceFile: /src/pdns/pdns/tcpiohandler.cc
    functionUses: 0
    functionsReached:
    - gnutls_record_send
    - static_cast<size_t>
    - std::runtime_error
    - Logging::Loggable
    - VERBOSESLOG
    - infolog
    - get
    - reinterpret_cast<const char *>
    - tryHandshake
    - gnutls_strerror
    - dnsdist::logging::getTopLogger
    - std::string
    - at
    - gnutls_error_is_fatal
    linkageType: ''
    returnType: IOState
    signature: IOState tryWrite(const PacketBuffer& buffer, size_t& pos, size_t toWrite)
      override
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: tryHandshake
      Src: /src/pdns/pdns/tcpiohandler.cc:1481,1
    - Dst: gnutls_record_recv
      Src: /src/pdns/pdns/tcpiohandler.cc:1488,1
    - Dst: get
      Src: /src/pdns/pdns/tcpiohandler.cc:1488,1
    - Dst: reinterpret_cast<char *>
      Src: /src/pdns/pdns/tcpiohandler.cc:1488,1
    - Dst: at
      Src: /src/pdns/pdns/tcpiohandler.cc:1488,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/tcpiohandler.cc:1490,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/tcpiohandler.cc:1493,1
    - Dst: gnutls_error_is_fatal
      Src: /src/pdns/pdns/tcpiohandler.cc:1499,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/tcpiohandler.cc:1500,1
    - Dst: std::string
      Src: /src/pdns/pdns/tcpiohandler.cc:1500,1
    - Dst: gnutls_strerror
      Src: /src/pdns/pdns/tcpiohandler.cc:1500,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/tcpiohandler.cc:1505,1
    - Dst: infolog
      Src: /src/pdns/pdns/tcpiohandler.cc:1505,1
    - Dst: gnutls_strerror
      Src: /src/pdns/pdns/tcpiohandler.cc:1505,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/tcpiohandler.cc:1506,1
    - Dst: gnutls_strerror
      Src: /src/pdns/pdns/tcpiohandler.cc:1506,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/tcpiohandler.cc:1506,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 27
    argCount: 4
    argNames:
    - ' buffer'
    - ' pos'
    - toRead
    - allowIncomplete
    argTypes:
    - PacketBuffer
    - size_t
    - size_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1511
      start: 1476
    functionDepth: 1
    functionLinenumber: 1476
    functionLinenumberEnd: 1511
    functionName: tryRead
    functionSourceFile: /src/pdns/pdns/tcpiohandler.cc
    functionUses: 0
    functionsReached:
    - static_cast<size_t>
    - gnutls_record_recv
    - std::runtime_error
    - Logging::Loggable
    - VERBOSESLOG
    - infolog
    - get
    - std::string
    - tryHandshake
    - gnutls_strerror
    - dnsdist::logging::getTopLogger
    - reinterpret_cast<char *>
    - at
    - gnutls_error_is_fatal
    linkageType: ''
    returnType: IOState
    signature: IOState tryRead(PacketBuffer& buffer, size_t& pos, size_t toRead, bool
      allowIncomplete) override
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: gettimeofday
      Src: /src/pdns/pdns/tcpiohandler.cc:1519,1
    - Dst: gnutls_record_recv
      Src: /src/pdns/pdns/tcpiohandler.cc:1523,1
    - Dst: get
      Src: /src/pdns/pdns/tcpiohandler.cc:1523,1
    - Dst: reinterpret_cast<char *>
      Src: /src/pdns/pdns/tcpiohandler.cc:1523,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/tcpiohandler.cc:1525,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/tcpiohandler.cc:1528,1
    - Dst: gnutls_error_is_fatal
      Src: /src/pdns/pdns/tcpiohandler.cc:1534,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/tcpiohandler.cc:1535,1
    - Dst: std::string
      Src: /src/pdns/pdns/tcpiohandler.cc:1535,1
    - Dst: gnutls_strerror
      Src: /src/pdns/pdns/tcpiohandler.cc:1535,1
    - Dst: waitForData
      Src: /src/pdns/pdns/tcpiohandler.cc:1538,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/tcpiohandler.cc:1540,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/tcpiohandler.cc:1540,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/tcpiohandler.cc:1544,1
    - Dst: infolog
      Src: /src/pdns/pdns/tcpiohandler.cc:1544,1
    - Dst: gnutls_strerror
      Src: /src/pdns/pdns/tcpiohandler.cc:1544,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/tcpiohandler.cc:1545,1
    - Dst: gnutls_strerror
      Src: /src/pdns/pdns/tcpiohandler.cc:1545,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/tcpiohandler.cc:1545,1
    - Dst: gettimeofday
      Src: /src/pdns/pdns/tcpiohandler.cc:1551,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/tcpiohandler.cc:1554,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 36
    argCount: 5
    argNames:
    - buffer
    - bufferSize
    - ' readTimeout'
    - ' totalTimeout'
    - allowIncomplete
    argTypes:
    - void*
    - size_t
    - struct timeval
    - struct timeval
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1563
      start: 1513
    functionDepth: 1
    functionLinenumber: 1513
    functionLinenumberEnd: 1563
    functionName: read
    functionSourceFile: /src/pdns/pdns/tcpiohandler.cc
    functionUses: 11
    functionsReached:
    - static_cast<size_t>
    - gnutls_record_recv
    - std::to_string
    - std::runtime_error
    - Logging::Loggable
    - VERBOSESLOG
    - waitForData
    - infolog
    - get
    - runtime_error
    - gnutls_strerror
    - gettimeofday
    - dnsdist::logging::getTopLogger
    - reinterpret_cast<char *>
    - std::string
    - gnutls_error_is_fatal
    linkageType: ''
    returnType: size_t
    signature: size_t read(void* buffer, size_t bufferSize, const struct timeval&
      readTimeout, const struct timeval& totalTimeout, bool allowIncomplete) override
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: gnutls_record_send
      Src: /src/pdns/pdns/tcpiohandler.cc:1570,1
    - Dst: get
      Src: /src/pdns/pdns/tcpiohandler.cc:1570,1
    - Dst: reinterpret_cast<const char *>
      Src: /src/pdns/pdns/tcpiohandler.cc:1570,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/tcpiohandler.cc:1572,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/tcpiohandler.cc:1575,1
    - Dst: gnutls_error_is_fatal
      Src: /src/pdns/pdns/tcpiohandler.cc:1578,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/tcpiohandler.cc:1579,1
    - Dst: std::string
      Src: /src/pdns/pdns/tcpiohandler.cc:1579,1
    - Dst: gnutls_strerror
      Src: /src/pdns/pdns/tcpiohandler.cc:1579,1
    - Dst: waitForRWData
      Src: /src/pdns/pdns/tcpiohandler.cc:1582,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/tcpiohandler.cc:1584,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/tcpiohandler.cc:1584,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/tcpiohandler.cc:1588,1
    - Dst: infolog
      Src: /src/pdns/pdns/tcpiohandler.cc:1588,1
    - Dst: gnutls_strerror
      Src: /src/pdns/pdns/tcpiohandler.cc:1588,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/tcpiohandler.cc:1589,1
    - Dst: gnutls_strerror
      Src: /src/pdns/pdns/tcpiohandler.cc:1589,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/tcpiohandler.cc:1589,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 22
    argCount: 3
    argNames:
    - buffer
    - bufferSize
    - ' writeTimeout'
    argTypes:
    - void*
    - size_t
    - struct timeval
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1596
      start: 1565
    functionDepth: 1
    functionLinenumber: 1565
    functionLinenumberEnd: 1596
    functionName: write
    functionSourceFile: /src/pdns/pdns/tcpiohandler.cc
    functionUses: 7
    functionsReached:
    - gnutls_record_send
    - static_cast<size_t>
    - std::to_string
    - std::runtime_error
    - Logging::Loggable
    - VERBOSESLOG
    - infolog
    - get
    - reinterpret_cast<const char *>
    - gnutls_strerror
    - dnsdist::logging::getTopLogger
    - std::string
    - waitForRWData
    - gnutls_error_is_fatal
    linkageType: ''
    returnType: size_t
    signature: size_t write(const void* buffer, size_t bufferSize, const struct timeval&
      writeTimeout) override
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: isTCPSocketUsable
      Src: /src/pdns/pdns/tcpiohandler.cc:1605,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1606
      start: 1598
    functionDepth: 0
    functionLinenumber: 1598
    functionLinenumberEnd: 1606
    functionName: isUsable
    functionSourceFile: /src/pdns/pdns/tcpiohandler.cc
    functionUses: 0
    functionsReached:
    - isTCPSocketUsable
    linkageType: ''
    returnType: bool
    signature: bool isUsable() const override
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: std::string::resize
      Src: /src/pdns/pdns/tcpiohandler.cc:1614,1
    - Dst: gnutls_server_name_get
      Src: /src/pdns/pdns/tcpiohandler.cc:1616,1
    - Dst: get
      Src: /src/pdns/pdns/tcpiohandler.cc:1616,1
    - Dst: const_cast<char*>
      Src: /src/pdns/pdns/tcpiohandler.cc:1616,1
    - Dst: std::string::c_str
      Src: /src/pdns/pdns/tcpiohandler.cc:1616,1
    - Dst: std::string::resize
      Src: /src/pdns/pdns/tcpiohandler.cc:1618,1
    - Dst: std::string
      Src: /src/pdns/pdns/tcpiohandler.cc:1622,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1623
      start: 1608
    functionDepth: 1
    functionLinenumber: 1608
    functionLinenumberEnd: 1623
    functionName: getServerNameIndication
    functionSourceFile: /src/pdns/pdns/tcpiohandler.cc
    functionUses: 0
    functionsReached:
    - gnutls_server_name_get
    - const_cast<char*>
    - std::string::c_str
    - get
    - std::string::resize
    - std::string
    linkageType: ''
    returnType: std::string
    signature: std::string getServerNameIndication() const override
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: gnutls_alpn_get_selected_protocol
      Src: /src/pdns/pdns/tcpiohandler.cc:1632,1
    - Dst: get
      Src: /src/pdns/pdns/tcpiohandler.cc:1632,1
    - Dst: std::vector::insert
      Src: /src/pdns/pdns/tcpiohandler.cc:1635,1
    - Dst: std::vector::end
      Src: /src/pdns/pdns/tcpiohandler.cc:1635,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1637
      start: 1625
    functionDepth: 1
    functionLinenumber: 1625
    functionLinenumberEnd: 1637
    functionName: getNextProtocol
    functionSourceFile: /src/pdns/pdns/tcpiohandler.cc
    functionUses: 0
    functionsReached:
    - std::vector::end
    - std::vector::insert
    - gnutls_alpn_get_selected_protocol
    - get
    linkageType: ''
    returnType: std::vector<uint8_t>
    signature: std::vector<uint8_t> getNextProtocol() const override
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: gnutls_protocol_get_version
      Src: /src/pdns/pdns/tcpiohandler.cc:1641,1
    - Dst: get
      Src: /src/pdns/pdns/tcpiohandler.cc:1641,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1656
      start: 1639
    functionDepth: 0
    functionLinenumber: 1639
    functionLinenumberEnd: 1656
    functionName: getTLSVersion
    functionSourceFile: /src/pdns/pdns/tcpiohandler.cc
    functionUses: 0
    functionsReached:
    - gnutls_protocol_get_version
    - get
    linkageType: ''
    returnType: LibsslTLSVersion
    signature: LibsslTLSVersion getTLSVersion() const override
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: gnutls_session_get_verify_cert_status
      Src: /src/pdns/pdns/tcpiohandler.cc:1661,1
    - Dst: get
      Src: /src/pdns/pdns/tcpiohandler.cc:1661,1
    - Dst: gnutls_certificate_verification_status_print
      Src: /src/pdns/pdns/tcpiohandler.cc:1663,1
    - Dst: std::string
      Src: /src/pdns/pdns/tcpiohandler.cc:1664,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/tcpiohandler.cc:1664,1
    - Dst: gnutls_free
      Src: /src/pdns/pdns/tcpiohandler.cc:1665,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1671
      start: 1658
    functionDepth: 0
    functionLinenumber: 1658
    functionLinenumberEnd: 1671
    functionName: getVerifyResult
    functionSourceFile: /src/pdns/pdns/tcpiohandler.cc
    functionUses: 0
    functionsReached:
    - gnutls_certificate_verification_status_print
    - get
    - gnutls_session_get_verify_cert_status
    - reinterpret_cast<const char*>
    - std::string
    - gnutls_free
    linkageType: ''
    returnType: std::pair<long, std::string>
    signature: std::pair<long, std::string> getVerifyResult() const override
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: gnutls_session_is_resumed
      Src: /src/pdns/pdns/tcpiohandler.cc:1676,1
    - Dst: get
      Src: /src/pdns/pdns/tcpiohandler.cc:1676,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1679
      start: 1673
    functionDepth: 0
    functionLinenumber: 1673
    functionLinenumberEnd: 1679
    functionName: hasSessionBeenResumed
    functionSourceFile: /src/pdns/pdns/tcpiohandler.cc
    functionUses: 0
    functionsReached:
    - gnutls_session_is_resumed
    - get
    linkageType: ''
    returnType: bool
    signature: bool hasSessionBeenResumed() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/tcpiohandler.cc:1683,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1684
      start: 1681
    functionDepth: 0
    functionLinenumber: 1681
    functionLinenumberEnd: 1684
    functionName: getSessions
    functionSourceFile: /src/pdns/pdns/tcpiohandler.cc
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: std::vector<std::unique_ptr<TLSSession>>
    signature: std::vector<std::unique_ptr<TLSSession>> getSessions() override
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dynamic_cast<GnuTLSSession*>
      Src: /src/pdns/pdns/tcpiohandler.cc:1688,1
    - Dst: get
      Src: /src/pdns/pdns/tcpiohandler.cc:1688,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/tcpiohandler.cc:1690,1
    - Dst: auto::getNative
      Src: /src/pdns/pdns/tcpiohandler.cc:1693,1
    - Dst: gnutls_session_set_data
      Src: /src/pdns/pdns/tcpiohandler.cc:1694,1
    - Dst: get
      Src: /src/pdns/pdns/tcpiohandler.cc:1694,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/tcpiohandler.cc:1696,1
    - Dst: std::string
      Src: /src/pdns/pdns/tcpiohandler.cc:1696,1
    - Dst: gnutls_strerror
      Src: /src/pdns/pdns/tcpiohandler.cc:1696,1
    - Dst: reset
      Src: /src/pdns/pdns/tcpiohandler.cc:1698,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 1
    argNames:
    - ' session'
    argTypes:
    - std::unique_ptr<TLSSession>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1699
      start: 1686
    functionDepth: 0
    functionLinenumber: 1686
    functionLinenumberEnd: 1699
    functionName: setSession
    functionSourceFile: /src/pdns/pdns/tcpiohandler.cc
    functionUses: 0
    functionsReached:
    - gnutls_session_set_data
    - reset
    - std::runtime_error
    - get
    - gnutls_strerror
    - std::string
    - auto::getNative
    - dynamic_cast<GnuTLSSession*>
    linkageType: ''
    returnType: void
    signature: void setSession(std::unique_ptr<TLSSession>& session) override
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: gnutls_bye
      Src: /src/pdns/pdns/tcpiohandler.cc:1704,1
    - Dst: get
      Src: /src/pdns/pdns/tcpiohandler.cc:1704,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1706
      start: 1701
    functionDepth: 0
    functionLinenumber: 1701
    functionLinenumberEnd: 1706
    functionName: close
    functionSourceFile: /src/pdns/pdns/tcpiohandler.cc
    functionUses: 13
    functionsReached:
    - gnutls_bye
    - get
    linkageType: ''
    returnType: void
    signature: void close() override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::vector::reserve
      Src: /src/pdns/pdns/tcpiohandler.cc:1711,1
    - Dst: size
      Src: /src/pdns/pdns/tcpiohandler.cc:1711,1
    - Dst: const_cast<uint8_t*>
      Src: /src/pdns/pdns/tcpiohandler.cc:1714,1
    - Dst: data
      Src: /src/pdns/pdns/tcpiohandler.cc:1714,1
    - Dst: size
      Src: /src/pdns/pdns/tcpiohandler.cc:1715,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/tcpiohandler.cc:1716,1
    - Dst: gnutls_alpn_set_protocols
      Src: /src/pdns/pdns/tcpiohandler.cc:1724,1
    - Dst: get
      Src: /src/pdns/pdns/tcpiohandler.cc:1724,1
    - Dst: std::vector::data
      Src: /src/pdns/pdns/tcpiohandler.cc:1724,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/tcpiohandler.cc:1724,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - ' protos'
    argTypes:
    - std::vector<std::vector<uint8_t>>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1725
      start: 1708
    functionDepth: 0
    functionLinenumber: 1708
    functionLinenumberEnd: 1725
    functionName: setALPNProtos
    functionSourceFile: /src/pdns/pdns/tcpiohandler.cc
    functionUses: 0
    functionsReached:
    - std::vector::push_back
    - std::vector::size
    - size
    - get
    - std::vector::reserve
    - const_cast<uint8_t*>
    - gnutls_alpn_set_protocols
    - data
    - std::vector::data
    linkageType: ''
    returnType: bool
    signature: bool setALPNProtos(const std::vector<std::vector<uint8_t>>& protos)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1730
      start: 1727
    functionDepth: 0
    functionLinenumber: 1727
    functionLinenumberEnd: 1730
    functionName: getAsyncFDs
    functionSourceFile: /src/pdns/pdns/tcpiohandler.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::vector<int>
    signature: std::vector<int> getAsyncFDs() override
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: getALPNVector
      Src: /src/pdns/pdns/tcpiohandler.cc:1746,1
    - Dst: gnutls_certificate_allocate_credentials
      Src: /src/pdns/pdns/tcpiohandler.cc:1752,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/tcpiohandler.cc:1754,1
    - Dst: d_addr::toStringWithPort
      Src: /src/pdns/pdns/tcpiohandler.cc:1754,1
    - Dst: gnutls_strerror
      Src: /src/pdns/pdns/tcpiohandler.cc:1754,1
    - Dst: std::shared_ptr<gnutls_certificate_credentials_st>
      Src: /src/pdns/pdns/tcpiohandler.cc:1757,1
    - Dst: gnutls_certificate_set_x509_key_file
      Src: /src/pdns/pdns/tcpiohandler.cc:1761,1
    - Dst: get
      Src: /src/pdns/pdns/tcpiohandler.cc:1761,1
    - Dst: d_cert::c_str
      Src: /src/pdns/pdns/tcpiohandler.cc:1761,1
    - Dst: d_key::c_str
      Src: /src/pdns/pdns/tcpiohandler.cc:1761,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/tcpiohandler.cc:1763,1
    - Dst: d_key::value
      Src: /src/pdns/pdns/tcpiohandler.cc:1763,1
    - Dst: d_addr::toStringWithPort
      Src: /src/pdns/pdns/tcpiohandler.cc:1763,1
    - Dst: gnutls_strerror
      Src: /src/pdns/pdns/tcpiohandler.cc:1763,1
    - Dst: gnutls_certificate_set_ocsp_status_request_file
      Src: /src/pdns/pdns/tcpiohandler.cc:1770,1
    - Dst: get
      Src: /src/pdns/pdns/tcpiohandler.cc:1770,1
    - Dst: c_str
      Src: /src/pdns/pdns/tcpiohandler.cc:1770,1
    - Dst: SLOG
      Src: /src/pdns/pdns/tcpiohandler.cc:1773,1
    - Dst: warnlog
      Src: /src/pdns/pdns/tcpiohandler.cc:1773,1
    - Dst: d_tlsConfig::d_certKeyPairs::at
      Src: /src/pdns/pdns/tcpiohandler.cc:1773,1
    - Dst: d_tlsConfig::d_certKeyPairs::at
      Src: /src/pdns/pdns/tcpiohandler.cc:1773,1
    - Dst: value
      Src: /src/pdns/pdns/tcpiohandler.cc:1773,1
    - Dst: d_addr::toStringWithPort
      Src: /src/pdns/pdns/tcpiohandler.cc:1773,1
    - Dst: gnutls_strerror
      Src: /src/pdns/pdns/tcpiohandler.cc:1773,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/tcpiohandler.cc:1774,1
    - Dst: gnutls_strerror
      Src: /src/pdns/pdns/tcpiohandler.cc:1774,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/tcpiohandler.cc:1774,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/tcpiohandler.cc:1774,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/tcpiohandler.cc:1774,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/tcpiohandler.cc:1774,1
    - Dst: d_tlsConfig::d_certKeyPairs::at
      Src: /src/pdns/pdns/tcpiohandler.cc:1774,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/tcpiohandler.cc:1774,1
    - Dst: d_tlsConfig::d_certKeyPairs::at
      Src: /src/pdns/pdns/tcpiohandler.cc:1774,1
    - Dst: value
      Src: /src/pdns/pdns/tcpiohandler.cc:1774,1
    - Dst: warnlog
      Src: /src/pdns/pdns/tcpiohandler.cc:1776,1
    - Dst: d_tlsConfig::d_certKeyPairs::at
      Src: /src/pdns/pdns/tcpiohandler.cc:1776,1
    - Dst: d_tlsConfig::d_certKeyPairs::at
      Src: /src/pdns/pdns/tcpiohandler.cc:1776,1
    - Dst: value
      Src: /src/pdns/pdns/tcpiohandler.cc:1776,1
    - Dst: d_addr::toStringWithPort
      Src: /src/pdns/pdns/tcpiohandler.cc:1776,1
    - Dst: gnutls_strerror
      Src: /src/pdns/pdns/tcpiohandler.cc:1776,1
    - Dst: gnutls_certificate_set_known_dh_params
      Src: /src/pdns/pdns/tcpiohandler.cc:1784,1
    - Dst: get
      Src: /src/pdns/pdns/tcpiohandler.cc:1784,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/tcpiohandler.cc:1786,1
    - Dst: d_addr::toStringWithPort
      Src: /src/pdns/pdns/tcpiohandler.cc:1786,1
    - Dst: gnutls_strerror
      Src: /src/pdns/pdns/tcpiohandler.cc:1786,1
    - Dst: gnutls_priority_init
      Src: /src/pdns/pdns/tcpiohandler.cc:1790,1
    - Dst: d_tlsConfig::d_ciphers::empty
      Src: /src/pdns/pdns/tcpiohandler.cc:1790,1
    - Dst: d_tlsConfig::d_ciphers::c_str
      Src: /src/pdns/pdns/tcpiohandler.cc:1790,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/tcpiohandler.cc:1792,1
    - Dst: gnutls_strerror
      Src: /src/pdns/pdns/tcpiohandler.cc:1792,1
    - Dst: d_addr::toStringWithPort
      Src: /src/pdns/pdns/tcpiohandler.cc:1792,1
    - Dst: d_tlsConfig::d_ticketKeyFile::empty
      Src: /src/pdns/pdns/tcpiohandler.cc:1796,1
    - Dst: handleTicketsKeyRotation
      Src: /src/pdns/pdns/tcpiohandler.cc:1797,1
    - Dst: time
      Src: /src/pdns/pdns/tcpiohandler.cc:1797,1
    - Dst: GnuTLSIOCtx::loadTicketsKeys
      Src: /src/pdns/pdns/tcpiohandler.cc:1800,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/tcpiohandler.cc:1804,1
    - Dst: d_addr::toStringWithPort
      Src: /src/pdns/pdns/tcpiohandler.cc:1804,1
    - Dst: what
      Src: /src/pdns/pdns/tcpiohandler.cc:1804,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 37
    argCount: 1
    argNames:
    - ' frontend'
    argTypes:
    - TLSFrontend
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1806
      start: 1746
    functionDepth: 1
    functionLinenumber: 1746
    functionLinenumberEnd: 1806
    functionName: GnuTLSIOCtx::GnuTLSIOCtx
    functionSourceFile: /src/pdns/pdns/tcpiohandler.cc
    functionUses: 0
    functionsReached:
    - handleTicketsKeyRotation
    - gnutls_certificate_set_ocsp_status_request_file
    - d_tlsConfig::d_ticketKeyFile::empty
    - d_key::value
    - gnutls_strerror
    - d_tlsConfig::d_certKeyPairs::at
    - SLOG
    - Logging::Loggable
    - gnutls_certificate_allocate_credentials
    - time
    - warnlog
    - d_addr::toStringWithPort
    - dnsdist::logging::getTopLogger
    - c_str
    - GnuTLSIOCtx::loadTicketsKeys
    - getALPNVector
    - std::runtime_error
    - gnutls_certificate_set_x509_key_file
    - get
    - d_cert::c_str
    - gnutls_certificate_set_known_dh_params
    - gnutls_priority_init
    - d_tlsConfig::d_ciphers::empty
    - d_key::c_str
    - value
    - std::shared_ptr<gnutls_certificate_credentials_st>
    - what
    - d_tlsConfig::d_ciphers::c_str
    linkageType: ''
    returnType: void
    signature: void GnuTLSIOCtx(TLSFrontend& frontend)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: getALPNVector
      Src: /src/pdns/pdns/tcpiohandler.cc:1809,1
    - Dst: std::make_unique<TLSContextParameters>
      Src: /src/pdns/pdns/tcpiohandler.cc:1809,1
    - Dst: gnutls_certificate_allocate_credentials
      Src: /src/pdns/pdns/tcpiohandler.cc:1814,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/tcpiohandler.cc:1816,1
    - Dst: std::string
      Src: /src/pdns/pdns/tcpiohandler.cc:1816,1
    - Dst: gnutls_strerror
      Src: /src/pdns/pdns/tcpiohandler.cc:1816,1
    - Dst: std::shared_ptr<gnutls_certificate_credentials_st>
      Src: /src/pdns/pdns/tcpiohandler.cc:1819,1
    - Dst: d_caStore::empty
      Src: /src/pdns/pdns/tcpiohandler.cc:1823,1
    - Dst: gnutls_certificate_set_x509_system_trust
      Src: /src/pdns/pdns/tcpiohandler.cc:1828,1
    - Dst: get
      Src: /src/pdns/pdns/tcpiohandler.cc:1828,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/tcpiohandler.cc:1830,1
    - Dst: std::string
      Src: /src/pdns/pdns/tcpiohandler.cc:1830,1
    - Dst: gnutls_strerror
      Src: /src/pdns/pdns/tcpiohandler.cc:1830,1
    - Dst: gnutls_certificate_set_x509_trust_file
      Src: /src/pdns/pdns/tcpiohandler.cc:1834,1
    - Dst: get
      Src: /src/pdns/pdns/tcpiohandler.cc:1834,1
    - Dst: d_caStore::c_str
      Src: /src/pdns/pdns/tcpiohandler.cc:1834,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/tcpiohandler.cc:1836,1
    - Dst: std::string
      Src: /src/pdns/pdns/tcpiohandler.cc:1836,1
    - Dst: gnutls_strerror
      Src: /src/pdns/pdns/tcpiohandler.cc:1836,1
    - Dst: gnutls_priority_init
      Src: /src/pdns/pdns/tcpiohandler.cc:1841,1
    - Dst: d_ciphers::empty
      Src: /src/pdns/pdns/tcpiohandler.cc:1841,1
    - Dst: d_ciphers::c_str
      Src: /src/pdns/pdns/tcpiohandler.cc:1841,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/tcpiohandler.cc:1843,1
    - Dst: std::string
      Src: /src/pdns/pdns/tcpiohandler.cc:1843,1
    - Dst: gnutls_strerror
      Src: /src/pdns/pdns/tcpiohandler.cc:1843,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 25
    argCount: 1
    argNames:
    - ' params'
    argTypes:
    - TLSContextParameters
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1845
      start: 1809
    functionDepth: 0
    functionLinenumber: 1809
    functionLinenumberEnd: 1845
    functionName: GnuTLSIOCtx::GnuTLSIOCtx
    functionSourceFile: /src/pdns/pdns/tcpiohandler.cc
    functionUses: 0
    functionsReached:
    - d_ciphers::empty
    - getALPNVector
    - std::runtime_error
    - std::make_unique<TLSContextParameters>
    - gnutls_certificate_allocate_credentials
    - std::shared_ptr<gnutls_certificate_credentials_st>
    - gnutls_certificate_set_x509_trust_file
    - get
    - d_caStore::empty
    - gnutls_strerror
    - gnutls_certificate_set_x509_system_trust
    - gnutls_priority_init
    - std::string
    - d_caStore::c_str
    - d_ciphers::c_str
    linkageType: ''
    returnType: void
    signature: void GnuTLSIOCtx(const TLSContextParameters& params)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: reset
      Src: /src/pdns/pdns/tcpiohandler.cc:1849,1
    - Dst: gnutls_priority_deinit
      Src: /src/pdns/pdns/tcpiohandler.cc:1852,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1854
      start: 1847
    functionDepth: 0
    functionLinenumber: 1847
    functionLinenumberEnd: 1854
    functionName: ~GnuTLSIOCtx() override
    functionSourceFile: /src/pdns/pdns/tcpiohandler.cc
    functionUses: 0
    functionsReached:
    - reset
    - gnutls_priority_deinit
    linkageType: ''
    returnType: void
    signature: void ~GnuTLSIOCtx() override
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: handleTicketsKeyRotation
      Src: /src/pdns/pdns/tcpiohandler.cc:1858,1
    - Dst: read_lock
      Src: /src/pdns/pdns/tcpiohandler.cc:1862,1
    - Dst: std::make_unique<GnuTLSConnection>
      Src: /src/pdns/pdns/tcpiohandler.cc:1865,1
    - Dst: empty
      Src: /src/pdns/pdns/tcpiohandler.cc:1866,1
    - Dst: auto::setALPNProtos
      Src: /src/pdns/pdns/tcpiohandler.cc:1867,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 3
    argNames:
    - socket
    - ' timeout'
    - now
    argTypes:
    - int
    - struct timeval
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1870
      start: 1856
    functionDepth: 1
    functionLinenumber: 1856
    functionLinenumberEnd: 1870
    functionName: GnuTLSIOCtx::getConnection
    functionSourceFile: /src/pdns/pdns/tcpiohandler.cc
    functionUses: 0
    functionsReached:
    - handleTicketsKeyRotation
    - auto::setALPNProtos
    - read_lock
    - empty
    - std::make_unique<GnuTLSConnection>
    linkageType: ''
    returnType: std::unique_ptr<TLSConnection>
    signature: std::unique_ptr<TLSConnection> getConnection(int socket, const struct
      timeval& timeout, time_t now) override
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: gnutls_certificate_allocate_credentials
      Src: /src/pdns/pdns/tcpiohandler.cc:1878,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/tcpiohandler.cc:1880,1
    - Dst: std::string
      Src: /src/pdns/pdns/tcpiohandler.cc:1880,1
    - Dst: gnutls_strerror
      Src: /src/pdns/pdns/tcpiohandler.cc:1880,1
    - Dst: std::shared_ptr<gnutls_certificate_credentials_st>
      Src: /src/pdns/pdns/tcpiohandler.cc:1883,1
    - Dst: empty
      Src: /src/pdns/pdns/tcpiohandler.cc:1887,1
    - Dst: gnutls_certificate_set_x509_system_trust
      Src: /src/pdns/pdns/tcpiohandler.cc:1888,1
    - Dst: get
      Src: /src/pdns/pdns/tcpiohandler.cc:1888,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/tcpiohandler.cc:1890,1
    - Dst: std::string
      Src: /src/pdns/pdns/tcpiohandler.cc:1890,1
    - Dst: gnutls_strerror
      Src: /src/pdns/pdns/tcpiohandler.cc:1890,1
    - Dst: gnutls_certificate_set_x509_trust_file
      Src: /src/pdns/pdns/tcpiohandler.cc:1894,1
    - Dst: get
      Src: /src/pdns/pdns/tcpiohandler.cc:1894,1
    - Dst: c_str
      Src: /src/pdns/pdns/tcpiohandler.cc:1894,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/tcpiohandler.cc:1896,1
    - Dst: std::string
      Src: /src/pdns/pdns/tcpiohandler.cc:1896,1
    - Dst: gnutls_strerror
      Src: /src/pdns/pdns/tcpiohandler.cc:1896,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 22
    argCount: 2
    argNames:
    - validate
    - ' caStore'
    argTypes:
    - bool
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1902
      start: 1872
    functionDepth: 0
    functionLinenumber: 1872
    functionLinenumberEnd: 1902
    functionName: GnuTLSIOCtx::getPerThreadCredentials
    functionSourceFile: /src/pdns/pdns/tcpiohandler.cc
    functionUses: 0
    functionsReached:
    - c_str
    - std::runtime_error
    - std::shared_ptr<gnutls_certificate_credentials_st>
    - gnutls_certificate_allocate_credentials
    - gnutls_certificate_set_x509_trust_file
    - get
    - gnutls_certificate_set_x509_system_trust
    - gnutls_strerror
    - empty
    - std::string
    linkageType: ''
    returnType: std::shared_ptr<gnutls_certificate_credentials_st>
    signature: std::shared_ptr<gnutls_certificate_credentials_st> getPerThreadCredentials(bool
      validate, const std::string& caStore)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: GnuTLSIOCtx::getPerThreadCredentials
      Src: /src/pdns/pdns/tcpiohandler.cc:1906,1
    - Dst: std::make_unique<GnuTLSConnection>
      Src: /src/pdns/pdns/tcpiohandler.cc:1907,1
    - Dst: empty
      Src: /src/pdns/pdns/tcpiohandler.cc:1908,1
    - Dst: auto::setALPNProtos
      Src: /src/pdns/pdns/tcpiohandler.cc:1909,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - ' host'
    - socket
    - ' timeout'
    argTypes:
    - std::string
    - int
    - struct timeval
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1912
      start: 1904
    functionDepth: 0
    functionLinenumber: 1904
    functionLinenumberEnd: 1912
    functionName: GnuTLSIOCtx::getClientConnection
    functionSourceFile: /src/pdns/pdns/tcpiohandler.cc
    functionUses: 0
    functionsReached:
    - empty
    - GnuTLSIOCtx::getPerThreadCredentials
    - auto::setALPNProtos
    - std::make_unique<GnuTLSConnection>
    linkageType: ''
    returnType: std::unique_ptr<TLSConnection>
    signature: std::unique_ptr<TLSConnection> getClientConnection(const std::string&
      host, bool, int socket, const struct timeval& timeout) override
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: write_lock
      Src: /src/pdns/pdns/tcpiohandler.cc:1921,1
    - Dst: std::move
      Src: /src/pdns/pdns/tcpiohandler.cc:1921,1
    - Dst: TLSCtx::hasTicketsKeyAddedHook
      Src: /src/pdns/pdns/tcpiohandler.cc:1928,1
    - Dst: read_lock
      Src: /src/pdns/pdns/tcpiohandler.cc:1929,1
    - Dst: auto::content
      Src: /src/pdns/pdns/tcpiohandler.cc:1930,1
    - Dst: TLSCtx::getTicketsKeyAddedHook
      Src: /src/pdns/pdns/tcpiohandler.cc:1931,1
    - Dst: safe_memory_release
      Src: /src/pdns/pdns/tcpiohandler.cc:1932,1
    - Dst: auto::data
      Src: /src/pdns/pdns/tcpiohandler.cc:1932,1
    - Dst: auto::size
      Src: /src/pdns/pdns/tcpiohandler.cc:1932,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 2
    argNames:
    - now
    - ' newKey'
    argTypes:
    - time_t
    - std::shared_ptr<GnuTLSTicketsKey>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1934
      start: 1914
    functionDepth: 0
    functionLinenumber: 1914
    functionLinenumberEnd: 1934
    functionName: GnuTLSIOCtx::addTicketsKey
    functionSourceFile: /src/pdns/pdns/tcpiohandler.cc
    functionUses: 0
    functionsReached:
    - std::move
    - TLSCtx::getTicketsKeyAddedHook
    - safe_memory_release
    - auto::content
    - read_lock
    - auto::data
    - TLSCtx::hasTicketsKeyAddedHook
    - write_lock
    - auto::size
    linkageType: ''
    returnType: void
    signature: void addTicketsKey(time_t now, std::shared_ptr<GnuTLSTicketsKey>&&
      newKey)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<GnuTLSTicketsKey>
      Src: /src/pdns/pdns/tcpiohandler.cc:1941,1
    - Dst: GnuTLSIOCtx::addTicketsKey
      Src: /src/pdns/pdns/tcpiohandler.cc:1942,1
    - Dst: std::move
      Src: /src/pdns/pdns/tcpiohandler.cc:1942,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - now
    argTypes:
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1943
      start: 1935
    functionDepth: 0
    functionLinenumber: 1935
    functionLinenumberEnd: 1943
    functionName: GnuTLSIOCtx::rotateTicketsKey
    functionSourceFile: /src/pdns/pdns/tcpiohandler.cc
    functionUses: 0
    functionsReached:
    - std::make_shared<GnuTLSTicketsKey>
    - std::move
    - GnuTLSIOCtx::addTicketsKey
    linkageType: ''
    returnType: void
    signature: void rotateTicketsKey(time_t now) override
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<GnuTLSTicketsKey>
      Src: /src/pdns/pdns/tcpiohandler.cc:1950,1
    - Dst: GnuTLSIOCtx::addTicketsKey
      Src: /src/pdns/pdns/tcpiohandler.cc:1951,1
    - Dst: time
      Src: /src/pdns/pdns/tcpiohandler.cc:1951,1
    - Dst: std::move
      Src: /src/pdns/pdns/tcpiohandler.cc:1951,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ' key'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1952
      start: 1944
    functionDepth: 0
    functionLinenumber: 1944
    functionLinenumberEnd: 1952
    functionName: GnuTLSIOCtx::loadTicketsKey
    functionSourceFile: /src/pdns/pdns/tcpiohandler.cc
    functionUses: 0
    functionsReached:
    - std::make_shared<GnuTLSTicketsKey>
    - time
    - std::move
    - GnuTLSIOCtx::addTicketsKey
    linkageType: ''
    returnType: void
    signature: void loadTicketsKey(const std::string& key) final
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<GnuTLSTicketsKey>
      Src: /src/pdns/pdns/tcpiohandler.cc:1961,1
    - Dst: GnuTLSIOCtx::addTicketsKey
      Src: /src/pdns/pdns/tcpiohandler.cc:1962,1
    - Dst: time
      Src: /src/pdns/pdns/tcpiohandler.cc:1962,1
    - Dst: std::move
      Src: /src/pdns/pdns/tcpiohandler.cc:1962,1
    - Dst: std::ifstream::close
      Src: /src/pdns/pdns/tcpiohandler.cc:1963,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - ' keyFile'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1964
      start: 1954
    functionDepth: 0
    functionLinenumber: 1954
    functionLinenumberEnd: 1964
    functionName: GnuTLSIOCtx::loadTicketsKeys
    functionSourceFile: /src/pdns/pdns/tcpiohandler.cc
    functionUses: 1
    functionsReached:
    - std::move
    - std::ifstream::close
    - GnuTLSIOCtx::addTicketsKey
    - time
    - std::make_shared<GnuTLSTicketsKey>
    linkageType: ''
    returnType: void
    signature: void loadTicketsKeys(const std::string& keyFile) final
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: read_lock
      Src: /src/pdns/pdns/tcpiohandler.cc:1968,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1969
      start: 1966
    functionDepth: 0
    functionLinenumber: 1966
    functionLinenumberEnd: 1969
    functionName: GnuTLSIOCtx::getTicketsKeysCount
    functionSourceFile: /src/pdns/pdns/tcpiohandler.cc
    functionUses: 0
    functionsReached:
    - read_lock
    linkageType: ''
    returnType: size_t
    signature: size_t getTicketsKeysCount() override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1974
      start: 1971
    functionDepth: 0
    functionLinenumber: 1971
    functionLinenumberEnd: 1974
    functionName: GnuTLSIOCtx::getName
    functionSourceFile: /src/pdns/pdns/tcpiohandler.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string getName() const override
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: setupTLS
      Src: /src/pdns/pdns/tcpiohandler.cc:1991,1
    - Dst: getContext
      Src: /src/pdns/pdns/tcpiohandler.cc:1996,1
    - Dst: std::atomic_store_explicit
      Src: /src/pdns/pdns/tcpiohandler.cc:1998,1
    - Dst: std::move
      Src: /src/pdns/pdns/tcpiohandler.cc:1998,1
    - Dst: std::make_shared<GnuTLSIOCtx>
      Src: /src/pdns/pdns/tcpiohandler.cc:2006,1
    - Dst: createServerSideContext
      Src: /src/pdns/pdns/tcpiohandler.cc:2011,1
    - Dst: createServerSideContext
      Src: /src/pdns/pdns/tcpiohandler.cc:2017,1
    - Dst: std::make_shared<GnuTLSIOCtx>
      Src: /src/pdns/pdns/tcpiohandler.cc:2019,1
    - Dst: std::atomic_store_explicit
      Src: /src/pdns/pdns/tcpiohandler.cc:2025,1
    - Dst: std::move
      Src: /src/pdns/pdns/tcpiohandler.cc:2025,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2028
      start: 1991
    functionDepth: 0
    functionLinenumber: 1991
    functionLinenumberEnd: 2028
    functionName: TLSFrontend
    functionSourceFile: /src/pdns/pdns/tcpiohandler.cc
    functionUses: 0
    functionsReached:
    - std::move
    - std::make_shared<GnuTLSIOCtx>
    - std::atomic_store_explicit
    - createServerSideContext
    - getContext
    - setupTLS
    linkageType: ''
    returnType: bool
    signature: bool TLSFrontend
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: d_provider::empty
      Src: /src/pdns/pdns/tcpiohandler.cc:2034,1
    - Dst: std::make_shared<GnuTLSIOCtx>
      Src: /src/pdns/pdns/tcpiohandler.cc:2037,1
    - Dst: createClientSideContext
      Src: /src/pdns/pdns/tcpiohandler.cc:2042,1
    - Dst: createClientSideContext
      Src: /src/pdns/pdns/tcpiohandler.cc:2048,1
    - Dst: std::make_shared<GnuTLSIOCtx>
      Src: /src/pdns/pdns/tcpiohandler.cc:2050,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - ' params'
    argTypes:
    - TLSContextParameters
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2057
      start: 2030
    functionDepth: 0
    functionLinenumber: 2030
    functionLinenumberEnd: 2057
    functionName: getTLSContext
    functionSourceFile: /src/pdns/pdns/tcpiohandler.cc
    functionUses: 0
    functionsReached:
    - std::make_shared<GnuTLSIOCtx>
    - d_provider::empty
    - createClientSideContext
    linkageType: ''
    returnType: std::shared_ptr<TLSCtx>
    signature: std::shared_ptr<TLSCtx> getTLSContext([[maybe_unused]] const TLSContextParameters&
      params)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:28,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:31,1
    - Dst: DNSPacketWriter::xfrIP
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:32,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:33,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:36,1
    - Dst: DNSPacketWriter::xfrIP
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:37,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:38,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:41,1
    - Dst: DNSPacketWriter::xfrIP6
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:42,1
    - Dst: std::string
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:42,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:42,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:43,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:46,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:47,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:50,1
    - Dst: DNSPacketWriter::xfrIP
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:51,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:52,1
    - Dst: generatePacket
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:57,1
    - Dst: generatePacket
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:58,1
    - Dst: editDNSPacketTTL
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:61,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:61,1
    - Dst: auto::data
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:61,1
    - Dst: auto::size
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:61,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:73,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:75,1
    - Dst: auto::size
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:75,1
    - Dst: auto::size
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:75,1
    - Dst: auto::size
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:76,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:77,1
    - Dst: auto::at
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:77,1
    - Dst: auto::at
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:77,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:79,1
    - Dst: editDNSPacketTTL
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:84,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:84,1
    - Dst: auto::data
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:84,1
    - Dst: auto::size
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:84,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:96,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:97,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 41
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 19
    functionDepth: 1
    functionLinenumber: 19
    functionLinenumberEnd: 98
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-dnsparser_cc.cc
    functionUses: 0
    functionsReached:
    - reinterpret_cast<char*>
    - DNSPacketWriter::xfrIP6
    - DNSPacketWriter::commit
    - BOOST_CHECK
    - DNSPacketWriter::getHeader
    - auto::data
    - BOOST_CHECK_EQUAL
    - reinterpret_cast<const char*>
    - generatePacket
    - editDNSPacketTTL
    - auto::at
    - std::string
    - DNSPacketWriter::startRecord
    - DNSPacketWriter::xfrIP
    - BOOST_REQUIRE_EQUAL
    - auto::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_editDNSPacketTTL)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:109,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:112,1
    - Dst: DNSPacketWriter::xfrIP
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:113,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:114,1
    - Dst: DNSPacketWriter::addOpt
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:116,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:117,1
    - Dst: generatePacket
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:122,1
    - Dst: generatePacket
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:123,1
    - Dst: auto::data
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:125,1
    - Dst: ageDNSPacket
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:126,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:126,1
    - Dst: auto::data
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:126,1
    - Dst: auto::size
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:126,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:128,1
    - Dst: auto::size
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:128,1
    - Dst: auto::size
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:128,1
    - Dst: auto::size
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:129,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:130,1
    - Dst: auto::at
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:130,1
    - Dst: auto::at
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:130,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:132,1
    - Dst: ageDNSPacket
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:136,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:136,1
    - Dst: auto::data
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:136,1
    - Dst: auto::size
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:136,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:138,1
    - Dst: ageDNSPacket
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:143,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:143,1
    - Dst: auto::data
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:143,1
    - Dst: auto::size
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:143,1
    - Dst: generatePacket
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:147,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:148,1
    - Dst: auto::size
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:148,1
    - Dst: auto::size
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:148,1
    - Dst: auto::size
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:149,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:150,1
    - Dst: auto::at
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:150,1
    - Dst: auto::at
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:150,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:152,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 24
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 153
      start: 100
    functionDepth: 1
    functionLinenumber: 100
    functionLinenumberEnd: 153
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-dnsparser_cc.cc
    functionUses: 0
    functionsReached:
    - reinterpret_cast<char*>
    - DNSPacketWriter::commit
    - BOOST_CHECK
    - DNSPacketWriter::getHeader
    - auto::data
    - DNSPacketWriter::addOpt
    - ageDNSPacket
    - BOOST_CHECK_EQUAL
    - generatePacket
    - auto::at
    - DNSPacketWriter::startRecord
    - DNSPacketWriter::xfrIP
    - BOOST_REQUIRE_EQUAL
    - auto::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_ageDNSPacket)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:165,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:166,1
    - Dst: getDNSPacketMinTTL
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:168,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:168,1
    - Dst: vector::data
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:168,1
    - Dst: vector::size
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:168,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:169,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:169,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:177,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:178,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:180,1
    - Dst: DNSPacketWriter::xfrIP
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:181,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:182,1
    - Dst: getDNSPacketMinTTL
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:184,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:184,1
    - Dst: vector::data
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:184,1
    - Dst: vector::size
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:184,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:185,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:192,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:193,1
    - Dst: DNSPacketWriter::addOpt
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:195,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:196,1
    - Dst: getDNSPacketMinTTL
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:198,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:198,1
    - Dst: vector::data
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:198,1
    - Dst: vector::size
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:198,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:199,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:199,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:206,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:207,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:209,1
    - Dst: DNSPacketWriter::xfrIP
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:210,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:211,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:213,1
    - Dst: DNSPacketWriter::xfrIP
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:214,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:215,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:217,1
    - Dst: DNSPacketWriter::xfrIP
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:218,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:219,1
    - Dst: getDNSPacketMinTTL
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:221,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:221,1
    - Dst: vector::data
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:221,1
    - Dst: vector::size
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:221,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:222,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:229,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:230,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:232,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:233,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:235,1
    - Dst: DNSPacketWriter::xfrIP
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:236,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:237,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:239,1
    - Dst: DNSPacketWriter::xfrIP
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:240,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:241,1
    - Dst: getDNSPacketMinTTL
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:244,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:244,1
    - Dst: vector::data
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:244,1
    - Dst: vector::size
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:244,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:245,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:246,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:253,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:254,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:256,1
    - Dst: DNSPacketWriter::xfrIP
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:257,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:258,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:260,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:261,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:263,1
    - Dst: DNSPacketWriter::xfrIP
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:264,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:265,1
    - Dst: getDNSPacketMinTTL
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:268,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:268,1
    - Dst: vector::data
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:268,1
    - Dst: vector::size
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:268,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:269,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:270,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:277,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:278,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:280,1
    - Dst: DNSPacketWriter::xfrIP
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:281,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:282,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:284,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:285,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:287,1
    - Dst: DNSPacketWriter::xfrIP
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:288,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:289,1
    - Dst: getDNSPacketMinTTL
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:292,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:292,1
    - Dst: vector::data
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:292,1
    - Dst: vector::size
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:292,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:293,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:294,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:301,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:302,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:304,1
    - Dst: DNSPacketWriter::xfrIP
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:305,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:306,1
    - Dst: getDNSPacketMinTTL
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:309,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:309,1
    - Dst: vector::data
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:309,1
    - Dst: vector::size
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:309,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:310,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:311,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:318,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:319,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:321,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:322,1
    - Dst: getDNSPacketMinTTL
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:325,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:325,1
    - Dst: vector::data
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:325,1
    - Dst: vector::size
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:325,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:326,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:327,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:335,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:336,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:338,1
    - Dst: DNSPacketWriter::xfrIP
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:339,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:340,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:342,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:343,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:345,1
    - Dst: DNSPacketWriter::xfrIP
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:346,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:347,1
    - Dst: getDNSPacketMinTTL
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:350,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:350,1
    - Dst: vector::data
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:350,1
    - Dst: vector::size
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:350,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:351,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:352,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 98
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 354
      start: 155
    functionDepth: 1
    functionLinenumber: 155
    functionLinenumberEnd: 354
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-dnsparser_cc.cc
    functionUses: 0
    functionsReached:
    - reinterpret_cast<char*>
    - pdns::max
    - DNSPacketWriter::xfrIP
    - DNSPacketWriter::commit
    - getDNSPacketMinTTL
    - DNSPacketWriter::getHeader
    - BOOST_CHECK_EQUAL
    - DNSPacketWriter::addOpt
    - vector::data
    - vector::size
    - DNSPacketWriter::startRecord
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_getDNSPacketMinTTL)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:366,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:367,1
    - Dst: getDNSPacketLength
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:369,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:369,1
    - Dst: vector::data
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:369,1
    - Dst: vector::size
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:369,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:370,1
    - Dst: vector::size
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:370,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:377,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:378,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:380,1
    - Dst: DNSPacketWriter::xfrIP
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:381,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:382,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:384,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:385,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:387,1
    - Dst: DNSPacketWriter::xfrIP
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:388,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:389,1
    - Dst: DNSPacketWriter::addOpt
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:391,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:392,1
    - Dst: getDNSPacketLength
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:394,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:394,1
    - Dst: vector::data
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:394,1
    - Dst: vector::size
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:394,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:395,1
    - Dst: vector::size
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:395,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:402,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:403,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:405,1
    - Dst: DNSPacketWriter::xfrIP
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:406,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:407,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:409,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:410,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:412,1
    - Dst: DNSPacketWriter::xfrIP
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:413,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:414,1
    - Dst: DNSPacketWriter::addOpt
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:416,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:417,1
    - Dst: vector::size
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:419,1
    - Dst: vector::resize
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:420,1
    - Dst: getDNSPacketLength
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:421,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:421,1
    - Dst: vector::data
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:421,1
    - Dst: vector::size
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:421,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:422,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:429,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:430,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:432,1
    - Dst: DNSPacketWriter::xfrIP
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:433,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:434,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:436,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:437,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:439,1
    - Dst: DNSPacketWriter::xfrIP
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:440,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:441,1
    - Dst: DNSPacketWriter::addOpt
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:443,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:444,1
    - Dst: vector::size
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:446,1
    - Dst: getDNSPacketLength
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:447,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:447,1
    - Dst: vector::data
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:447,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:448,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 48
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 451
      start: 356
    functionDepth: 1
    functionLinenumber: 356
    functionLinenumberEnd: 451
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-dnsparser_cc.cc
    functionUses: 0
    functionsReached:
    - reinterpret_cast<char*>
    - vector::resize
    - DNSPacketWriter::xfrIP
    - DNSPacketWriter::commit
    - DNSPacketWriter::getHeader
    - BOOST_CHECK_EQUAL
    - DNSPacketWriter::addOpt
    - vector::data
    - getDNSPacketLength
    - vector::size
    - DNSPacketWriter::startRecord
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_getDNSPacketLength)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:461,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:462,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:464,1
    - Dst: DNSPacketWriter::xfrIP
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:465,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:466,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:468,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:469,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:471,1
    - Dst: DNSPacketWriter::xfrIP
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:472,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:473,1
    - Dst: DNSPacketWriter::addOpt
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:475,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:476,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:478,1
    - Dst: getRecordsOfTypeCount
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:478,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:478,1
    - Dst: vector::data
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:478,1
    - Dst: vector::size
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:478,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:479,1
    - Dst: getRecordsOfTypeCount
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:479,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:479,1
    - Dst: vector::data
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:479,1
    - Dst: vector::size
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:479,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:480,1
    - Dst: getRecordsOfTypeCount
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:480,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:480,1
    - Dst: vector::data
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:480,1
    - Dst: vector::size
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:480,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:481,1
    - Dst: getRecordsOfTypeCount
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:481,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:481,1
    - Dst: vector::data
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:481,1
    - Dst: vector::size
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:481,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:482,1
    - Dst: getRecordsOfTypeCount
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:482,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:482,1
    - Dst: vector::data
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:482,1
    - Dst: vector::size
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:482,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:483,1
    - Dst: getRecordsOfTypeCount
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:483,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:483,1
    - Dst: vector::data
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:483,1
    - Dst: vector::size
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:483,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:484,1
    - Dst: getRecordsOfTypeCount
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:484,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:484,1
    - Dst: vector::data
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:484,1
    - Dst: vector::size
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:484,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:485,1
    - Dst: getRecordsOfTypeCount
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:485,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:485,1
    - Dst: vector::data
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:485,1
    - Dst: vector::size
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:485,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:487,1
    - Dst: getRecordsOfTypeCount
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:487,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:487,1
    - Dst: vector::data
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:487,1
    - Dst: vector::size
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:487,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 23
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 490
      start: 453
    functionDepth: 1
    functionLinenumber: 453
    functionLinenumberEnd: 490
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-dnsparser_cc.cc
    functionUses: 0
    functionsReached:
    - reinterpret_cast<char*>
    - DNSPacketWriter::commit
    - DNSPacketWriter::getHeader
    - BOOST_CHECK_EQUAL
    - DNSPacketWriter::addOpt
    - getRecordsOfTypeCount
    - vector::data
    - vector::size
    - DNSPacketWriter::startRecord
    - DNSPacketWriter::xfrIP
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_getRecordsOfTypeCount)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:501,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:502,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:504,1
    - Dst: DNSPacketWriter::xfrIP
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:505,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:506,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:509,1
    - Dst: DNSPacketWriter::xfrIP6
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:510,1
    - Dst: std::string
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:510,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:510,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:511,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:513,1
    - Dst: DNSPacketWriter::xfrIP
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:514,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:515,1
    - Dst: DNSPacketWriter::addOpt
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:517,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:518,1
    - Dst: generatePacket
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:522,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:524,1
    - Dst: getRecordsOfTypeCount
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:524,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:524,1
    - Dst: auto::data
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:524,1
    - Dst: auto::size
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:524,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:525,1
    - Dst: getRecordsOfTypeCount
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:525,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:525,1
    - Dst: auto::data
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:525,1
    - Dst: auto::size
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:525,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:526,1
    - Dst: getRecordsOfTypeCount
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:526,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:526,1
    - Dst: auto::data
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:526,1
    - Dst: auto::size
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:526,1
    - Dst: clearDNSPacketRecordTypes
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:529,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:531,1
    - Dst: getRecordsOfTypeCount
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:531,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:531,1
    - Dst: auto::data
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:531,1
    - Dst: auto::size
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:531,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:532,1
    - Dst: getRecordsOfTypeCount
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:532,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:532,1
    - Dst: auto::data
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:532,1
    - Dst: auto::size
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:532,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:533,1
    - Dst: getRecordsOfTypeCount
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:533,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:533,1
    - Dst: auto::data
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:533,1
    - Dst: auto::size
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:533,1
    - Dst: clearDNSPacketRecordTypes
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:536,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:538,1
    - Dst: getRecordsOfTypeCount
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:538,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:538,1
    - Dst: auto::data
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:538,1
    - Dst: auto::size
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:538,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:539,1
    - Dst: getRecordsOfTypeCount
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:539,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:539,1
    - Dst: auto::data
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:539,1
    - Dst: auto::size
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:539,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:540,1
    - Dst: getRecordsOfTypeCount
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:540,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:540,1
    - Dst: auto::data
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:540,1
    - Dst: auto::size
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:540,1
    - Dst: generatePacket
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:542,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:544,1
    - Dst: getRecordsOfTypeCount
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:544,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:544,1
    - Dst: auto::data
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:544,1
    - Dst: auto::size
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:544,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:545,1
    - Dst: getRecordsOfTypeCount
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:545,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:545,1
    - Dst: auto::data
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:545,1
    - Dst: auto::size
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:545,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:546,1
    - Dst: getRecordsOfTypeCount
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:546,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:546,1
    - Dst: auto::data
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:546,1
    - Dst: auto::size
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:546,1
    - Dst: clearDNSPacketRecordTypes
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:549,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:551,1
    - Dst: getRecordsOfTypeCount
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:551,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:551,1
    - Dst: auto::data
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:551,1
    - Dst: auto::size
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:551,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:552,1
    - Dst: getRecordsOfTypeCount
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:552,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:552,1
    - Dst: auto::data
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:552,1
    - Dst: auto::size
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:552,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:553,1
    - Dst: getRecordsOfTypeCount
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:553,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:553,1
    - Dst: auto::data
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:553,1
    - Dst: auto::size
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:553,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 38
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 556
      start: 492
    functionDepth: 1
    functionLinenumber: 492
    functionLinenumberEnd: 556
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-dnsparser_cc.cc
    functionUses: 0
    functionsReached:
    - reinterpret_cast<char*>
    - DNSPacketWriter::xfrIP6
    - DNSPacketWriter::commit
    - DNSPacketWriter::getHeader
    - BOOST_CHECK_EQUAL
    - DNSPacketWriter::addOpt
    - getRecordsOfTypeCount
    - auto::data
    - reinterpret_cast<const char*>
    - generatePacket
    - std::string
    - DNSPacketWriter::startRecord
    - clearDNSPacketRecordTypes
    - DNSPacketWriter::xfrIP
    - auto::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_clearDNSPacketRecordTypes)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:568,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:569,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:571,1
    - Dst: DNSPacketWriter::xfrIP
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:572,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:573,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:576,1
    - Dst: DNSPacketWriter::xfrIP6
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:577,1
    - Dst: std::string
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:577,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:577,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:578,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:580,1
    - Dst: DNSPacketWriter::xfrIP
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:581,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:582,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:584,1
    - Dst: DNSPacketWriter::xfrName
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:585,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:586,1
    - Dst: DNSPacketWriter::addOpt
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:588,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:589,1
    - Dst: generatePacket
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:593,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:595,1
    - Dst: getRecordsOfTypeCount
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:595,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:595,1
    - Dst: auto::data
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:595,1
    - Dst: auto::size
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:595,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:596,1
    - Dst: getRecordsOfTypeCount
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:596,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:596,1
    - Dst: auto::data
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:596,1
    - Dst: auto::size
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:596,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:597,1
    - Dst: getRecordsOfTypeCount
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:597,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:597,1
    - Dst: auto::data
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:597,1
    - Dst: auto::size
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:597,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:598,1
    - Dst: getRecordsOfTypeCount
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:598,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:598,1
    - Dst: auto::data
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:598,1
    - Dst: auto::size
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:598,1
    - Dst: clearDNSPacketRecordTypes
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:601,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:604,1
    - Dst: getRecordsOfTypeCount
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:604,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:604,1
    - Dst: auto::data
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:604,1
    - Dst: auto::size
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:604,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:605,1
    - Dst: getRecordsOfTypeCount
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:605,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:605,1
    - Dst: auto::data
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:605,1
    - Dst: auto::size
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:605,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:606,1
    - Dst: getRecordsOfTypeCount
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:606,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:606,1
    - Dst: auto::data
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:606,1
    - Dst: auto::size
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:606,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:607,1
    - Dst: getRecordsOfTypeCount
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:607,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:607,1
    - Dst: auto::data
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:607,1
    - Dst: auto::size
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:607,1
    - Dst: clearDNSPacketRecordTypes
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:610,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:613,1
    - Dst: getRecordsOfTypeCount
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:613,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:613,1
    - Dst: auto::data
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:613,1
    - Dst: auto::size
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:613,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:614,1
    - Dst: getRecordsOfTypeCount
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:614,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:614,1
    - Dst: auto::data
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:614,1
    - Dst: auto::size
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:614,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:615,1
    - Dst: getRecordsOfTypeCount
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:615,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:615,1
    - Dst: auto::data
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:615,1
    - Dst: auto::size
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:615,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:616,1
    - Dst: getRecordsOfTypeCount
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:616,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:616,1
    - Dst: auto::data
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:616,1
    - Dst: auto::size
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:616,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 35
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 619
      start: 558
    functionDepth: 1
    functionLinenumber: 558
    functionLinenumberEnd: 619
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-dnsparser_cc.cc
    functionUses: 0
    functionsReached:
    - reinterpret_cast<char*>
    - DNSPacketWriter::xfrIP6
    - DNSPacketWriter::commit
    - DNSPacketWriter::getHeader
    - BOOST_CHECK_EQUAL
    - DNSPacketWriter::addOpt
    - getRecordsOfTypeCount
    - auto::data
    - reinterpret_cast<const char*>
    - DNSPacketWriter::xfrName
    - generatePacket
    - std::string
    - DNSPacketWriter::startRecord
    - clearDNSPacketRecordTypes
    - DNSPacketWriter::xfrIP
    - auto::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_clearDNSPacketUnsafeRecordTypes)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::string_view
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:631,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:631,1
    - Dst: vector::data
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:631,1
    - Dst: vector::size
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:631,1
    - Dst: std::set::insert
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:637,1
    - Dst: SvcParam
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:637,1
    - Dst: std::move
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:637,1
    - Dst: BOOST_CHECK_NO_THROW
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:639,1
    - Dst: PacketReader::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:639,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:640,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 641
      start: 621
    functionDepth: 1
    functionLinenumber: 621
    functionLinenumberEnd: 641
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-dnsparser_cc.cc
    functionUses: 0
    functionsReached:
    - std::move
    - BOOST_CHECK
    - SvcParam
    - std::string_view
    - reinterpret_cast<const char*>
    - PacketReader::xfrSvcParamKeyVals
    - std::set::insert
    - vector::data
    - vector::size
    - BOOST_CHECK_NO_THROW
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_xfrSvcParamKeyVals)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::string_view
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:651,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:651,1
    - Dst: vector::data
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:651,1
    - Dst: vector::size
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:651,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:655,1
    - Dst: PacketReader::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:655,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:664,1
    - Dst: PacketReader::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:664,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 665
      start: 643
    functionDepth: 0
    functionLinenumber: 643
    functionLinenumberEnd: 665
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-dnsparser_cc.cc
    functionUses: 0
    functionsReached:
    - std::string_view
    - reinterpret_cast<const char*>
    - PacketReader::xfrSvcParamKeyVals
    - BOOST_CHECK_THROW
    - vector::data
    - vector::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_xfrSvcParamKeyVals_length_wrong)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::string_view
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:676,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:676,1
    - Dst: vector::data
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:676,1
    - Dst: vector::size
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:676,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:680,1
    - Dst: PacketReader::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:680,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:689,1
    - Dst: PacketReader::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:689,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 690
      start: 667
    functionDepth: 0
    functionLinenumber: 667
    functionLinenumberEnd: 690
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-dnsparser_cc.cc
    functionUses: 0
    functionsReached:
    - std::string_view
    - reinterpret_cast<const char*>
    - PacketReader::xfrSvcParamKeyVals
    - BOOST_CHECK_THROW
    - vector::data
    - vector::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_xfrSvcParamKeyVals_alpn_length_wrong)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::string_view
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:706,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:706,1
    - Dst: vector::data
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:706,1
    - Dst: vector::size
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:706,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:710,1
    - Dst: PacketReader::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:710,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 711
      start: 692
    functionDepth: 0
    functionLinenumber: 692
    functionLinenumberEnd: 711
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-dnsparser_cc.cc
    functionUses: 0
    functionsReached:
    - std::string_view
    - reinterpret_cast<const char*>
    - PacketReader::xfrSvcParamKeyVals
    - BOOST_CHECK_THROW
    - vector::data
    - vector::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_xfrSvcParamKeyVals_multiple)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::string_view
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:726,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:726,1
    - Dst: vector::data
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:726,1
    - Dst: vector::size
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:726,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:730,1
    - Dst: PacketReader::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/test-dnsparser_cc.cc:730,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 731
      start: 713
    functionDepth: 0
    functionLinenumber: 713
    functionLinenumberEnd: 731
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-dnsparser_cc.cc
    functionUses: 0
    functionsReached:
    - std::string_view
    - reinterpret_cast<const char*>
    - PacketReader::xfrSvcParamKeyVals
    - BOOST_CHECK_THROW
    - vector::data
    - vector::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_xfrSvcParamKeyVals_bad_ordering)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: getTSIGHashEnum
      Src: /src/pdns/pdns/tsigutils.cc:38,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/tsigutils.cc:39,1
    - Dst: toStringNoDot
      Src: /src/pdns/pdns/tsigutils.cc:39,1
    - Dst: string::resize
      Src: /src/pdns/pdns/tsigutils.cc:50,1
    - Dst: dns_random
      Src: /src/pdns/pdns/tsigutils.cc:53,1
    - Dst: string::data
      Src: /src/pdns/pdns/tsigutils.cc:53,1
    - Dst: Base64Encode
      Src: /src/pdns/pdns/tsigutils.cc:54,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 10
    argCount: 1
    argNames:
    - ' algorithm'
    argTypes:
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 36
    functionDepth: 1
    functionLinenumber: 36
    functionLinenumberEnd: 55
    functionName: makeTSIGKey
    functionSourceFile: /src/pdns/pdns/tsigutils.cc
    functionUses: 1
    functionsReached:
    - string::data
    - string::resize
    - dns_random
    - PDNSException
    - toStringNoDot
    - getTSIGHashEnum
    - Base64Encode
    linkageType: ''
    returnType: std::string
    signature: std::string makeTSIGKey(const DNSName& algorithm)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-trusted-notification-proxy_cc.cc:16,1
    - Dst: pdns::parseTrustedNotificationProxy
      Src: /src/pdns/pdns/test-trusted-notification-proxy_cc.cc:16,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-trusted-notification-proxy_cc.cc:18,1
    - Dst: pdns::parseTrustedNotificationProxy
      Src: /src/pdns/pdns/test-trusted-notification-proxy_cc.cc:18,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 19
      start: 14
    functionDepth: 1
    functionLinenumber: 14
    functionLinenumberEnd: 19
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-trusted-notification-proxy_cc.cc
    functionUses: 0
    functionsReached:
    - pdns::parseTrustedNotificationProxy
    - BOOST_CHECK_THROW
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_trusted_notification_proxy_bad_addrs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_CHECK_NO_THROW
      Src: /src/pdns/pdns/test-trusted-notification-proxy_cc.cc:23,1
    - Dst: pdns::parseTrustedNotificationProxy
      Src: /src/pdns/pdns/test-trusted-notification-proxy_cc.cc:23,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-trusted-notification-proxy_cc.cc:24,1
    - Dst: pdns::isAddressTrustedNotificationProxy
      Src: /src/pdns/pdns/test-trusted-notification-proxy_cc.cc:24,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-trusted-notification-proxy_cc.cc:24,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-trusted-notification-proxy_cc.cc:25,1
    - Dst: pdns::isAddressTrustedNotificationProxy
      Src: /src/pdns/pdns/test-trusted-notification-proxy_cc.cc:25,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-trusted-notification-proxy_cc.cc:25,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-trusted-notification-proxy_cc.cc:26,1
    - Dst: pdns::isAddressTrustedNotificationProxy
      Src: /src/pdns/pdns/test-trusted-notification-proxy_cc.cc:26,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-trusted-notification-proxy_cc.cc:26,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-trusted-notification-proxy_cc.cc:27,1
    - Dst: pdns::isAddressTrustedNotificationProxy
      Src: /src/pdns/pdns/test-trusted-notification-proxy_cc.cc:27,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-trusted-notification-proxy_cc.cc:27,1
    - Dst: BOOST_CHECK_NO_THROW
      Src: /src/pdns/pdns/test-trusted-notification-proxy_cc.cc:30,1
    - Dst: pdns::parseTrustedNotificationProxy
      Src: /src/pdns/pdns/test-trusted-notification-proxy_cc.cc:30,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-trusted-notification-proxy_cc.cc:31,1
    - Dst: pdns::isAddressTrustedNotificationProxy
      Src: /src/pdns/pdns/test-trusted-notification-proxy_cc.cc:31,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-trusted-notification-proxy_cc.cc:31,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-trusted-notification-proxy_cc.cc:32,1
    - Dst: pdns::isAddressTrustedNotificationProxy
      Src: /src/pdns/pdns/test-trusted-notification-proxy_cc.cc:32,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-trusted-notification-proxy_cc.cc:32,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-trusted-notification-proxy_cc.cc:33,1
    - Dst: pdns::isAddressTrustedNotificationProxy
      Src: /src/pdns/pdns/test-trusted-notification-proxy_cc.cc:33,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-trusted-notification-proxy_cc.cc:33,1
    - Dst: BOOST_CHECK_NO_THROW
      Src: /src/pdns/pdns/test-trusted-notification-proxy_cc.cc:36,1
    - Dst: pdns::parseTrustedNotificationProxy
      Src: /src/pdns/pdns/test-trusted-notification-proxy_cc.cc:36,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-trusted-notification-proxy_cc.cc:37,1
    - Dst: pdns::isAddressTrustedNotificationProxy
      Src: /src/pdns/pdns/test-trusted-notification-proxy_cc.cc:37,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-trusted-notification-proxy_cc.cc:37,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-trusted-notification-proxy_cc.cc:38,1
    - Dst: pdns::isAddressTrustedNotificationProxy
      Src: /src/pdns/pdns/test-trusted-notification-proxy_cc.cc:38,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-trusted-notification-proxy_cc.cc:38,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-trusted-notification-proxy_cc.cc:39,1
    - Dst: pdns::isAddressTrustedNotificationProxy
      Src: /src/pdns/pdns/test-trusted-notification-proxy_cc.cc:39,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-trusted-notification-proxy_cc.cc:39,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-trusted-notification-proxy_cc.cc:40,1
    - Dst: pdns::isAddressTrustedNotificationProxy
      Src: /src/pdns/pdns/test-trusted-notification-proxy_cc.cc:40,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-trusted-notification-proxy_cc.cc:40,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 21
    functionDepth: 1
    functionLinenumber: 21
    functionLinenumberEnd: 41
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-trusted-notification-proxy_cc.cc
    functionUses: 0
    functionsReached:
    - pdns::isAddressTrustedNotificationProxy
    - BOOST_CHECK_NO_THROW
    - pdns::parseTrustedNotificationProxy
    - BOOST_CHECK
    - ComboAddress
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_trusted_notification_proxy_addresses_only)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_CHECK_NO_THROW
      Src: /src/pdns/pdns/test-trusted-notification-proxy_cc.cc:45,1
    - Dst: pdns::parseTrustedNotificationProxy
      Src: /src/pdns/pdns/test-trusted-notification-proxy_cc.cc:45,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-trusted-notification-proxy_cc.cc:46,1
    - Dst: pdns::isAddressTrustedNotificationProxy
      Src: /src/pdns/pdns/test-trusted-notification-proxy_cc.cc:46,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-trusted-notification-proxy_cc.cc:46,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-trusted-notification-proxy_cc.cc:47,1
    - Dst: pdns::isAddressTrustedNotificationProxy
      Src: /src/pdns/pdns/test-trusted-notification-proxy_cc.cc:47,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-trusted-notification-proxy_cc.cc:47,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-trusted-notification-proxy_cc.cc:48,1
    - Dst: pdns::isAddressTrustedNotificationProxy
      Src: /src/pdns/pdns/test-trusted-notification-proxy_cc.cc:48,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-trusted-notification-proxy_cc.cc:48,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-trusted-notification-proxy_cc.cc:49,1
    - Dst: pdns::isAddressTrustedNotificationProxy
      Src: /src/pdns/pdns/test-trusted-notification-proxy_cc.cc:49,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-trusted-notification-proxy_cc.cc:49,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-trusted-notification-proxy_cc.cc:50,1
    - Dst: pdns::isAddressTrustedNotificationProxy
      Src: /src/pdns/pdns/test-trusted-notification-proxy_cc.cc:50,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-trusted-notification-proxy_cc.cc:50,1
    - Dst: BOOST_CHECK_NO_THROW
      Src: /src/pdns/pdns/test-trusted-notification-proxy_cc.cc:53,1
    - Dst: pdns::parseTrustedNotificationProxy
      Src: /src/pdns/pdns/test-trusted-notification-proxy_cc.cc:53,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-trusted-notification-proxy_cc.cc:54,1
    - Dst: pdns::isAddressTrustedNotificationProxy
      Src: /src/pdns/pdns/test-trusted-notification-proxy_cc.cc:54,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-trusted-notification-proxy_cc.cc:54,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-trusted-notification-proxy_cc.cc:55,1
    - Dst: pdns::isAddressTrustedNotificationProxy
      Src: /src/pdns/pdns/test-trusted-notification-proxy_cc.cc:55,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-trusted-notification-proxy_cc.cc:55,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-trusted-notification-proxy_cc.cc:56,1
    - Dst: pdns::isAddressTrustedNotificationProxy
      Src: /src/pdns/pdns/test-trusted-notification-proxy_cc.cc:56,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-trusted-notification-proxy_cc.cc:56,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-trusted-notification-proxy_cc.cc:57,1
    - Dst: pdns::isAddressTrustedNotificationProxy
      Src: /src/pdns/pdns/test-trusted-notification-proxy_cc.cc:57,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-trusted-notification-proxy_cc.cc:57,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-trusted-notification-proxy_cc.cc:58,1
    - Dst: pdns::isAddressTrustedNotificationProxy
      Src: /src/pdns/pdns/test-trusted-notification-proxy_cc.cc:58,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-trusted-notification-proxy_cc.cc:58,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-trusted-notification-proxy_cc.cc:59,1
    - Dst: pdns::isAddressTrustedNotificationProxy
      Src: /src/pdns/pdns/test-trusted-notification-proxy_cc.cc:59,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-trusted-notification-proxy_cc.cc:59,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-trusted-notification-proxy_cc.cc:60,1
    - Dst: pdns::isAddressTrustedNotificationProxy
      Src: /src/pdns/pdns/test-trusted-notification-proxy_cc.cc:60,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-trusted-notification-proxy_cc.cc:60,1
    - Dst: BOOST_CHECK_NO_THROW
      Src: /src/pdns/pdns/test-trusted-notification-proxy_cc.cc:63,1
    - Dst: pdns::parseTrustedNotificationProxy
      Src: /src/pdns/pdns/test-trusted-notification-proxy_cc.cc:63,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-trusted-notification-proxy_cc.cc:64,1
    - Dst: pdns::isAddressTrustedNotificationProxy
      Src: /src/pdns/pdns/test-trusted-notification-proxy_cc.cc:64,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-trusted-notification-proxy_cc.cc:64,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-trusted-notification-proxy_cc.cc:65,1
    - Dst: pdns::isAddressTrustedNotificationProxy
      Src: /src/pdns/pdns/test-trusted-notification-proxy_cc.cc:65,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-trusted-notification-proxy_cc.cc:65,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-trusted-notification-proxy_cc.cc:66,1
    - Dst: pdns::isAddressTrustedNotificationProxy
      Src: /src/pdns/pdns/test-trusted-notification-proxy_cc.cc:66,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-trusted-notification-proxy_cc.cc:66,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-trusted-notification-proxy_cc.cc:67,1
    - Dst: pdns::isAddressTrustedNotificationProxy
      Src: /src/pdns/pdns/test-trusted-notification-proxy_cc.cc:67,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-trusted-notification-proxy_cc.cc:67,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-trusted-notification-proxy_cc.cc:68,1
    - Dst: pdns::isAddressTrustedNotificationProxy
      Src: /src/pdns/pdns/test-trusted-notification-proxy_cc.cc:68,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-trusted-notification-proxy_cc.cc:68,1
    - Dst: BOOST_CHECK_NO_THROW
      Src: /src/pdns/pdns/test-trusted-notification-proxy_cc.cc:71,1
    - Dst: pdns::parseTrustedNotificationProxy
      Src: /src/pdns/pdns/test-trusted-notification-proxy_cc.cc:71,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-trusted-notification-proxy_cc.cc:72,1
    - Dst: pdns::isAddressTrustedNotificationProxy
      Src: /src/pdns/pdns/test-trusted-notification-proxy_cc.cc:72,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-trusted-notification-proxy_cc.cc:72,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-trusted-notification-proxy_cc.cc:73,1
    - Dst: pdns::isAddressTrustedNotificationProxy
      Src: /src/pdns/pdns/test-trusted-notification-proxy_cc.cc:73,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-trusted-notification-proxy_cc.cc:73,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-trusted-notification-proxy_cc.cc:74,1
    - Dst: pdns::isAddressTrustedNotificationProxy
      Src: /src/pdns/pdns/test-trusted-notification-proxy_cc.cc:74,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-trusted-notification-proxy_cc.cc:74,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-trusted-notification-proxy_cc.cc:75,1
    - Dst: pdns::isAddressTrustedNotificationProxy
      Src: /src/pdns/pdns/test-trusted-notification-proxy_cc.cc:75,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-trusted-notification-proxy_cc.cc:75,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-trusted-notification-proxy_cc.cc:76,1
    - Dst: pdns::isAddressTrustedNotificationProxy
      Src: /src/pdns/pdns/test-trusted-notification-proxy_cc.cc:76,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-trusted-notification-proxy_cc.cc:76,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-trusted-notification-proxy_cc.cc:77,1
    - Dst: pdns::isAddressTrustedNotificationProxy
      Src: /src/pdns/pdns/test-trusted-notification-proxy_cc.cc:77,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-trusted-notification-proxy_cc.cc:77,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 31
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 43
    functionDepth: 1
    functionLinenumber: 43
    functionLinenumberEnd: 78
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-trusted-notification-proxy_cc.cc
    functionUses: 0
    functionsReached:
    - pdns::isAddressTrustedNotificationProxy
    - BOOST_CHECK_NO_THROW
    - pdns::parseTrustedNotificationProxy
    - BOOST_CHECK
    - ComboAddress
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_trusted_notification_proxy_with_netmasks)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_CHECK_NO_THROW
      Src: /src/pdns/pdns/test-trusted-notification-proxy_cc.cc:82,1
    - Dst: pdns::parseTrustedNotificationProxy
      Src: /src/pdns/pdns/test-trusted-notification-proxy_cc.cc:82,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-trusted-notification-proxy_cc.cc:83,1
    - Dst: pdns::isAddressTrustedNotificationProxy
      Src: /src/pdns/pdns/test-trusted-notification-proxy_cc.cc:83,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-trusted-notification-proxy_cc.cc:83,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-trusted-notification-proxy_cc.cc:84,1
    - Dst: pdns::isAddressTrustedNotificationProxy
      Src: /src/pdns/pdns/test-trusted-notification-proxy_cc.cc:84,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-trusted-notification-proxy_cc.cc:84,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-trusted-notification-proxy_cc.cc:85,1
    - Dst: pdns::isAddressTrustedNotificationProxy
      Src: /src/pdns/pdns/test-trusted-notification-proxy_cc.cc:85,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-trusted-notification-proxy_cc.cc:85,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-trusted-notification-proxy_cc.cc:86,1
    - Dst: pdns::isAddressTrustedNotificationProxy
      Src: /src/pdns/pdns/test-trusted-notification-proxy_cc.cc:86,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-trusted-notification-proxy_cc.cc:86,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-trusted-notification-proxy_cc.cc:87,1
    - Dst: pdns::isAddressTrustedNotificationProxy
      Src: /src/pdns/pdns/test-trusted-notification-proxy_cc.cc:87,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-trusted-notification-proxy_cc.cc:87,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-trusted-notification-proxy_cc.cc:88,1
    - Dst: pdns::isAddressTrustedNotificationProxy
      Src: /src/pdns/pdns/test-trusted-notification-proxy_cc.cc:88,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-trusted-notification-proxy_cc.cc:88,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-trusted-notification-proxy_cc.cc:89,1
    - Dst: pdns::isAddressTrustedNotificationProxy
      Src: /src/pdns/pdns/test-trusted-notification-proxy_cc.cc:89,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-trusted-notification-proxy_cc.cc:89,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 80
    functionDepth: 1
    functionLinenumber: 80
    functionLinenumberEnd: 90
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-trusted-notification-proxy_cc.cc
    functionUses: 0
    functionsReached:
    - pdns::isAddressTrustedNotificationProxy
    - BOOST_CHECK_NO_THROW
    - pdns::parseTrustedNotificationProxy
    - BOOST_CHECK
    - ComboAddress
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_trusted_notification_proxy_with_netmasks_and_addresses)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: std::holds_alternative<std::string>
      Src: /src/pdns/pdns/protozero-trace.cc:35,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/protozero-trace.cc:36,1
    - Dst: std::get<std::string>
      Src: /src/pdns/pdns/protozero-trace.cc:36,1
    - Dst: std::holds_alternative<bool>
      Src: /src/pdns/pdns/protozero-trace.cc:38,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/protozero-trace.cc:39,1
    - Dst: std::get<bool>
      Src: /src/pdns/pdns/protozero-trace.cc:39,1
    - Dst: std::holds_alternative<int64_t>
      Src: /src/pdns/pdns/protozero-trace.cc:41,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/protozero-trace.cc:42,1
    - Dst: std::get<int64_t>
      Src: /src/pdns/pdns/protozero-trace.cc:42,1
    - Dst: std::holds_alternative<double>
      Src: /src/pdns/pdns/protozero-trace.cc:44,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/protozero-trace.cc:45,1
    - Dst: std::get<double>
      Src: /src/pdns/pdns/protozero-trace.cc:45,1
    - Dst: std::holds_alternative<ArrayValue>
      Src: /src/pdns/pdns/protozero-trace.cc:47,1
    - Dst: std::get<ArrayValue>
      Src: /src/pdns/pdns/protozero-trace.cc:49,1
    - Dst: std::holds_alternative<KeyValueList>
      Src: /src/pdns/pdns/protozero-trace.cc:51,1
    - Dst: std::get<KeyValueList>
      Src: /src/pdns/pdns/protozero-trace.cc:53,1
    - Dst: std::holds_alternative<std::vector<uint8_t>>
      Src: /src/pdns/pdns/protozero-trace.cc:55,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/protozero-trace.cc:56,1
    - Dst: std::get<std::vector<uint8_t>>
      Src: /src/pdns/pdns/protozero-trace.cc:56,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 22
    argCount: 1
    argNames:
    - ' writer'
    argTypes:
    - protozero::pbf_writer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 33
    functionDepth: 0
    functionLinenumber: 33
    functionLinenumberEnd: 58
    functionName: pdns::trace::AnyValue::encode
    functionSourceFile: /src/pdns/pdns/protozero-trace.cc
    functionUses: 1
    functionsReached:
    - std::get<std::vector<uint8_t>>
    - std::get<ArrayValue>
    - std::holds_alternative<std::string>
    - std::holds_alternative<ArrayValue>
    - std::holds_alternative<std::vector<uint8_t>>
    - std::get<std::string>
    - std::get<double>
    - std::holds_alternative<double>
    - std::holds_alternative<bool>
    - std::holds_alternative<KeyValueList>
    - std::holds_alternative<int64_t>
    - pdns::trace::encode
    - std::get<int64_t>
    - std::get<KeyValueList>
    - std::get<bool>
    linkageType: ''
    returnType: void
    signature: void AnyValue::encode(protozero::pbf_writer& writer) const
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: next
      Src: /src/pdns/pdns/protozero-trace.cc:62,1
    - Dst: tag
      Src: /src/pdns/pdns/protozero-trace.cc:63,1
    - Dst: get_string
      Src: /src/pdns/pdns/protozero-trace.cc:65,1
    - Dst: get_bool
      Src: /src/pdns/pdns/protozero-trace.cc:68,1
    - Dst: get_int64
      Src: /src/pdns/pdns/protozero-trace.cc:71,1
    - Dst: get_double
      Src: /src/pdns/pdns/protozero-trace.cc:74,1
    - Dst: get_message
      Src: /src/pdns/pdns/protozero-trace.cc:77,1
    - Dst: pdns::trace::ArrayValue::decode
      Src: /src/pdns/pdns/protozero-trace.cc:78,1
    - Dst: get_message
      Src: /src/pdns/pdns/protozero-trace.cc:82,1
    - Dst: pdns::trace::KeyValueList::decode
      Src: /src/pdns/pdns/protozero-trace.cc:83,1
    - Dst: get_view
      Src: /src/pdns/pdns/protozero-trace.cc:87,1
    - Dst: std::vector::reserve
      Src: /src/pdns/pdns/protozero-trace.cc:89,1
    - Dst: auto::size
      Src: /src/pdns/pdns/protozero-trace.cc:89,1
    - Dst: auto::size
      Src: /src/pdns/pdns/protozero-trace.cc:90,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/protozero-trace.cc:91,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/protozero-trace.cc:91,1
    - Dst: auto::data
      Src: /src/pdns/pdns/protozero-trace.cc:91,1
    - Dst: std::move
      Src: /src/pdns/pdns/protozero-trace.cc:93,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 36
    argCount: 1
    argNames:
    - ' reader'
    argTypes:
    - protozero::pbf_reader
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 60
    functionDepth: 0
    functionLinenumber: 60
    functionLinenumberEnd: 102
    functionName: pdns::trace::AnyValue::decode
    functionSourceFile: /src/pdns/pdns/protozero-trace.cc
    functionUses: 1
    functionsReached:
    - next
    - get_double
    - std::vector::push_back
    - std::move
    - get_bool
    - tag
    - pdns::trace::KeyValueList::decode
    - auto::data
    - get_message
    - get_int64
    - std::vector::reserve
    - static_cast<uint8_t>
    - pdns::trace::ArrayValue::decode
    - auto::size
    - get_string
    - get_view
    linkageType: ''
    returnType: AnyValue
    signature: AnyValue AnyValue::decode(protozero::pbf_reader& reader)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: std::holds_alternative<std::string>
      Src: /src/pdns/pdns/protozero-trace.cc:106,1
    - Dst: std::get<std::string>
      Src: /src/pdns/pdns/protozero-trace.cc:107,1
    - Dst: std::holds_alternative<bool>
      Src: /src/pdns/pdns/protozero-trace.cc:109,1
    - Dst: std::get<bool>
      Src: /src/pdns/pdns/protozero-trace.cc:110,1
    - Dst: std::holds_alternative<int64_t>
      Src: /src/pdns/pdns/protozero-trace.cc:115,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/protozero-trace.cc:116,1
    - Dst: std::get<int64_t>
      Src: /src/pdns/pdns/protozero-trace.cc:116,1
    - Dst: std::holds_alternative<double>
      Src: /src/pdns/pdns/protozero-trace.cc:118,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/protozero-trace.cc:119,1
    - Dst: std::get<double>
      Src: /src/pdns/pdns/protozero-trace.cc:119,1
    - Dst: std::holds_alternative<ArrayValue>
      Src: /src/pdns/pdns/protozero-trace.cc:121,1
    - Dst: std::get<ArrayValue>
      Src: /src/pdns/pdns/protozero-trace.cc:123,1
    - Dst: pdns::trace::AnyValue::toLogString
      Src: /src/pdns/pdns/protozero-trace.cc:124,1
    - Dst: std::string::resize
      Src: /src/pdns/pdns/protozero-trace.cc:126,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/protozero-trace.cc:126,1
    - Dst: std::holds_alternative<KeyValueList>
      Src: /src/pdns/pdns/protozero-trace.cc:129,1
    - Dst: std::get<KeyValueList>
      Src: /src/pdns/pdns/protozero-trace.cc:131,1
    - Dst: value::toLogString
      Src: /src/pdns/pdns/protozero-trace.cc:132,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/protozero-trace.cc:134,1
    - Dst: std::string::resize
      Src: /src/pdns/pdns/protozero-trace.cc:135,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/protozero-trace.cc:135,1
    - Dst: std::holds_alternative<std::vector<uint8_t>>
      Src: /src/pdns/pdns/protozero-trace.cc:139,1
    - Dst: std::get<std::vector<uint8_t>>
      Src: /src/pdns/pdns/protozero-trace.cc:140,1
    - Dst: Base64Encode
      Src: /src/pdns/pdns/protozero-trace.cc:141,1
    - Dst: std::string
      Src: /src/pdns/pdns/protozero-trace.cc:141,1
    - Dst: auto::begin
      Src: /src/pdns/pdns/protozero-trace.cc:141,1
    - Dst: auto::end
      Src: /src/pdns/pdns/protozero-trace.cc:141,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 34
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 144
      start: 104
    functionDepth: 1
    functionLinenumber: 104
    functionLinenumberEnd: 144
    functionName: pdns::trace::AnyValue::toLogString
    functionSourceFile: /src/pdns/pdns/protozero-trace.cc
    functionUses: 1
    functionsReached:
    - std::to_string
    - std::get<double>
    - std::holds_alternative<KeyValueList>
    - auto::begin
    - std::holds_alternative<ArrayValue>
    - std::get<int64_t>
    - std::string
    - std::get<KeyValueList>
    - std::string::size
    - value::toLogString
    - std::holds_alternative<std::vector<uint8_t>>
    - std::holds_alternative<std::string>
    - pdns::trace::AnyValue::toLogString
    - std::holds_alternative<double>
    - std::holds_alternative<bool>
    - std::string::resize
    - std::holds_alternative<int64_t>
    - std::get<std::vector<uint8_t>>
    - std::get<ArrayValue>
    - std::get<std::string>
    - auto::end
    - std::get<bool>
    - Base64Encode
    linkageType: ''
    returnType: std::string
    signature: std::string AnyValue::toLogString() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/protozero-trace.cc:148,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/protozero-trace.cc:149,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/protozero-trace.cc:151,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/protozero-trace.cc:154,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - ' writer'
    argTypes:
    - protozero::pbf_writer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 156
      start: 146
    functionDepth: 0
    functionLinenumber: 146
    functionLinenumberEnd: 156
    functionName: pdns::trace::EntityRef::encode
    functionSourceFile: /src/pdns/pdns/protozero-trace.cc
    functionUses: 0
    functionsReached:
    - pdns::trace::encode
    linkageType: ''
    returnType: void
    signature: void EntityRef::encode(protozero::pbf_writer& writer) const
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: next
      Src: /src/pdns/pdns/protozero-trace.cc:161,1
    - Dst: tag
      Src: /src/pdns/pdns/protozero-trace.cc:162,1
    - Dst: get_string
      Src: /src/pdns/pdns/protozero-trace.cc:164,1
    - Dst: get_string
      Src: /src/pdns/pdns/protozero-trace.cc:167,1
    - Dst: EntityRef::id_keys::emplace_back
      Src: /src/pdns/pdns/protozero-trace.cc:170,1
    - Dst: get_string
      Src: /src/pdns/pdns/protozero-trace.cc:170,1
    - Dst: EntityRef::description_keys::emplace_back
      Src: /src/pdns/pdns/protozero-trace.cc:173,1
    - Dst: get_string
      Src: /src/pdns/pdns/protozero-trace.cc:173,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 20
    argCount: 1
    argNames:
    - ' reader'
    argTypes:
    - protozero::pbf_reader
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 180
      start: 158
    functionDepth: 0
    functionLinenumber: 158
    functionLinenumberEnd: 180
    functionName: pdns::trace::EntityRef::decode
    functionSourceFile: /src/pdns/pdns/protozero-trace.cc
    functionUses: 0
    functionsReached:
    - next
    - tag
    - EntityRef::description_keys::emplace_back
    - EntityRef::id_keys::emplace_back
    - get_string
    linkageType: ''
    returnType: EntityRef
    signature: EntityRef EntityRef::decode(protozero::pbf_reader& reader)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/protozero-trace.cc:184,1
    - Dst: pdns::trace::KeyValue::encode
      Src: /src/pdns/pdns/protozero-trace.cc:187,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - ' writer'
    argTypes:
    - protozero::pbf_writer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 189
      start: 182
    functionDepth: 0
    functionLinenumber: 182
    functionLinenumberEnd: 189
    functionName: pdns::trace::KeyValue::encode
    functionSourceFile: /src/pdns/pdns/protozero-trace.cc
    functionUses: 1
    functionsReached:
    - pdns::trace::KeyValue::encode
    - pdns::trace::encode
    linkageType: ''
    returnType: void
    signature: void KeyValue::encode(protozero::pbf_writer& writer) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/protozero-trace.cc:193,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/protozero-trace.cc:194,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/protozero-trace.cc:195,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - ' writer'
    argTypes:
    - protozero::pbf_writer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 196
      start: 191
    functionDepth: 0
    functionLinenumber: 191
    functionLinenumberEnd: 196
    functionName: pdns::trace::Resource::encode
    functionSourceFile: /src/pdns/pdns/protozero-trace.cc
    functionUses: 2
    functionsReached:
    - pdns::trace::encode
    linkageType: ''
    returnType: void
    signature: void Resource::encode(protozero::pbf_writer& writer) const
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: next
      Src: /src/pdns/pdns/protozero-trace.cc:201,1
    - Dst: tag
      Src: /src/pdns/pdns/protozero-trace.cc:202,1
    - Dst: get_message
      Src: /src/pdns/pdns/protozero-trace.cc:204,1
    - Dst: Resource::attributes::emplace_back
      Src: /src/pdns/pdns/protozero-trace.cc:205,1
    - Dst: pdns::trace::KeyValue::decode
      Src: /src/pdns/pdns/protozero-trace.cc:205,1
    - Dst: get_uint32
      Src: /src/pdns/pdns/protozero-trace.cc:209,1
    - Dst: get_message
      Src: /src/pdns/pdns/protozero-trace.cc:212,1
    - Dst: Resource::entity_refs::emplace_back
      Src: /src/pdns/pdns/protozero-trace.cc:213,1
    - Dst: pdns::trace::EntityRef::decode
      Src: /src/pdns/pdns/protozero-trace.cc:213,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 1
    argNames:
    - ' reader'
    argTypes:
    - protozero::pbf_reader
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 221
      start: 198
    functionDepth: 0
    functionLinenumber: 198
    functionLinenumberEnd: 221
    functionName: pdns::trace::Resource::decode
    functionSourceFile: /src/pdns/pdns/protozero-trace.cc
    functionUses: 0
    functionsReached:
    - next
    - Resource::attributes::emplace_back
    - Resource::entity_refs::emplace_back
    - tag
    - get_message
    - pdns::trace::KeyValue::decode
    - get_uint32
    - pdns::trace::EntityRef::decode
    linkageType: ''
    returnType: Resource
    signature: Resource Resource::decode(protozero::pbf_reader& reader)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/protozero-trace.cc:225,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/protozero-trace.cc:226,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/protozero-trace.cc:227,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/protozero-trace.cc:228,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - ' writer'
    argTypes:
    - protozero::pbf_writer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 229
      start: 223
    functionDepth: 0
    functionLinenumber: 223
    functionLinenumberEnd: 229
    functionName: pdns::trace::InstrumentationScope::encode
    functionSourceFile: /src/pdns/pdns/protozero-trace.cc
    functionUses: 0
    functionsReached:
    - pdns::trace::encode
    linkageType: ''
    returnType: void
    signature: void InstrumentationScope::encode(protozero::pbf_writer& writer) const
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: next
      Src: /src/pdns/pdns/protozero-trace.cc:234,1
    - Dst: tag
      Src: /src/pdns/pdns/protozero-trace.cc:235,1
    - Dst: get_string
      Src: /src/pdns/pdns/protozero-trace.cc:237,1
    - Dst: get_string
      Src: /src/pdns/pdns/protozero-trace.cc:240,1
    - Dst: get_message
      Src: /src/pdns/pdns/protozero-trace.cc:243,1
    - Dst: InstrumentationScope::attributes::emplace_back
      Src: /src/pdns/pdns/protozero-trace.cc:244,1
    - Dst: pdns::trace::KeyValue::decode
      Src: /src/pdns/pdns/protozero-trace.cc:244,1
    - Dst: get_uint32
      Src: /src/pdns/pdns/protozero-trace.cc:248,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 21
    argCount: 1
    argNames:
    - ' reader'
    argTypes:
    - protozero::pbf_reader
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 255
      start: 231
    functionDepth: 0
    functionLinenumber: 231
    functionLinenumberEnd: 255
    functionName: pdns::trace::InstrumentationScope::decode
    functionSourceFile: /src/pdns/pdns/protozero-trace.cc
    functionUses: 0
    functionsReached:
    - next
    - tag
    - get_message
    - pdns::trace::KeyValue::decode
    - get_uint32
    - get_string
    - InstrumentationScope::attributes::emplace_back
    linkageType: ''
    returnType: InstrumentationScope
    signature: InstrumentationScope InstrumentationScope::decode(protozero::pbf_reader&
      reader)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/protozero-trace.cc:259,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/protozero-trace.cc:260,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ' writer'
    argTypes:
    - protozero::pbf_writer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 261
      start: 257
    functionDepth: 0
    functionLinenumber: 257
    functionLinenumberEnd: 261
    functionName: pdns::trace::Status::encode
    functionSourceFile: /src/pdns/pdns/protozero-trace.cc
    functionUses: 0
    functionsReached:
    - pdns::trace::encode
    linkageType: ''
    returnType: void
    signature: void Status::encode(protozero::pbf_writer& writer) const
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: next
      Src: /src/pdns/pdns/protozero-trace.cc:266,1
    - Dst: tag
      Src: /src/pdns/pdns/protozero-trace.cc:267,1
    - Dst: get_string
      Src: /src/pdns/pdns/protozero-trace.cc:269,1
    - Dst: static_cast<StatusCode>
      Src: /src/pdns/pdns/protozero-trace.cc:272,1
    - Dst: get_uint32
      Src: /src/pdns/pdns/protozero-trace.cc:272,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 1
    argNames:
    - ' reader'
    argTypes:
    - protozero::pbf_reader
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 279
      start: 263
    functionDepth: 0
    functionLinenumber: 263
    functionLinenumberEnd: 279
    functionName: pdns::trace::Status::decode
    functionSourceFile: /src/pdns/pdns/protozero-trace.cc
    functionUses: 0
    functionsReached:
    - next
    - tag
    - static_cast<StatusCode>
    - get_uint32
    - get_string
    linkageType: ''
    returnType: Status
    signature: Status Status::decode(protozero::pbf_reader& reader)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::encodeFixed
      Src: /src/pdns/pdns/protozero-trace.cc:283,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/protozero-trace.cc:284,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/protozero-trace.cc:285,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/protozero-trace.cc:286,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - ' writer'
    argTypes:
    - protozero::pbf_writer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 287
      start: 281
    functionDepth: 0
    functionLinenumber: 281
    functionLinenumberEnd: 287
    functionName: Span::Event::encode(protozero::pbf_writer& writer) const
    functionSourceFile: /src/pdns/pdns/protozero-trace.cc
    functionUses: 0
    functionsReached:
    - pdns::trace::encodeFixed
    - pdns::trace::encode
    linkageType: ''
    returnType: void
    signature: void Span::Event::encode(protozero::pbf_writer& writer) const
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: next
      Src: /src/pdns/pdns/protozero-trace.cc:292,1
    - Dst: tag
      Src: /src/pdns/pdns/protozero-trace.cc:293,1
    - Dst: get_fixed64
      Src: /src/pdns/pdns/protozero-trace.cc:295,1
    - Dst: get_string
      Src: /src/pdns/pdns/protozero-trace.cc:298,1
    - Dst: get_message
      Src: /src/pdns/pdns/protozero-trace.cc:301,1
    - Dst: Span::Event::attributes::emplace_back
      Src: /src/pdns/pdns/protozero-trace.cc:302,1
    - Dst: pdns::trace::KeyValue::decode
      Src: /src/pdns/pdns/protozero-trace.cc:302,1
    - Dst: get_uint32
      Src: /src/pdns/pdns/protozero-trace.cc:306,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    argCount: 1
    argNames:
    - ' reader'
    argTypes:
    - protozero::pbf_reader
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 312
      start: 289
    functionDepth: 0
    functionLinenumber: 289
    functionLinenumberEnd: 312
    functionName: Span::Event::decode(protozero::pbf_reader& reader)
    functionSourceFile: /src/pdns/pdns/protozero-trace.cc
    functionUses: 0
    functionsReached:
    - next
    - tag
    - Span::Event::attributes::emplace_back
    - get_message
    - pdns::trace::KeyValue::decode
    - get_fixed64
    - get_uint32
    - get_string
    linkageType: ''
    returnType: Span::Event
    signature: Span::Event Span::Event::decode(protozero::pbf_reader& reader)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/protozero-trace.cc:316,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/protozero-trace.cc:317,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/protozero-trace.cc:318,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/protozero-trace.cc:319,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/protozero-trace.cc:320,1
    - Dst: pdns::trace::encodeFixed
      Src: /src/pdns/pdns/protozero-trace.cc:321,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - ' writer'
    argTypes:
    - protozero::pbf_writer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 322
      start: 314
    functionDepth: 0
    functionLinenumber: 314
    functionLinenumberEnd: 322
    functionName: Span::Link::encode(protozero::pbf_writer& writer) const
    functionSourceFile: /src/pdns/pdns/protozero-trace.cc
    functionUses: 0
    functionsReached:
    - pdns::trace::encodeFixed
    - pdns::trace::encode
    linkageType: ''
    returnType: void
    signature: void Span::Link::encode(protozero::pbf_writer& writer) const
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: next
      Src: /src/pdns/pdns/protozero-trace.cc:327,1
    - Dst: tag
      Src: /src/pdns/pdns/protozero-trace.cc:328,1
    - Dst: decodeTraceID
      Src: /src/pdns/pdns/protozero-trace.cc:330,1
    - Dst: decodeSpanID
      Src: /src/pdns/pdns/protozero-trace.cc:333,1
    - Dst: get_string
      Src: /src/pdns/pdns/protozero-trace.cc:336,1
    - Dst: get_message
      Src: /src/pdns/pdns/protozero-trace.cc:339,1
    - Dst: Link::attributes::emplace_back
      Src: /src/pdns/pdns/protozero-trace.cc:340,1
    - Dst: pdns::trace::KeyValue::decode
      Src: /src/pdns/pdns/protozero-trace.cc:340,1
    - Dst: get_uint32
      Src: /src/pdns/pdns/protozero-trace.cc:344,1
    - Dst: get_fixed32
      Src: /src/pdns/pdns/protozero-trace.cc:347,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 26
    argCount: 1
    argNames:
    - ' reader'
    argTypes:
    - protozero::pbf_reader
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 353
      start: 324
    functionDepth: 0
    functionLinenumber: 324
    functionLinenumberEnd: 353
    functionName: Span::Link::decode(protozero::pbf_reader& reader)
    functionSourceFile: /src/pdns/pdns/protozero-trace.cc
    functionUses: 0
    functionsReached:
    - next
    - decodeSpanID
    - Link::attributes::emplace_back
    - decodeTraceID
    - tag
    - get_message
    - pdns::trace::KeyValue::decode
    - get_uint32
    - get_fixed32
    - get_string
    linkageType: ''
    returnType: Span::Link
    signature: Span::Link Span::Link::decode(protozero::pbf_reader& reader)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/protozero-trace.cc:357,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/protozero-trace.cc:358,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/protozero-trace.cc:359,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/protozero-trace.cc:360,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/protozero-trace.cc:361,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/protozero-trace.cc:362,1
    - Dst: pdns::trace::encodeFixed
      Src: /src/pdns/pdns/protozero-trace.cc:363,1
    - Dst: pdns::trace::encodeFixed
      Src: /src/pdns/pdns/protozero-trace.cc:364,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/protozero-trace.cc:365,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/protozero-trace.cc:366,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/protozero-trace.cc:367,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/protozero-trace.cc:368,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/protozero-trace.cc:369,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/protozero-trace.cc:370,1
    - Dst: message::empty
      Src: /src/pdns/pdns/protozero-trace.cc:371,1
    - Dst: pdns::trace::Span::encode
      Src: /src/pdns/pdns/protozero-trace.cc:373,1
    - Dst: pdns::trace::encodeFixed
      Src: /src/pdns/pdns/protozero-trace.cc:375,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 19
    argCount: 1
    argNames:
    - ' writer'
    argTypes:
    - protozero::pbf_writer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 376
      start: 355
    functionDepth: 0
    functionLinenumber: 355
    functionLinenumberEnd: 376
    functionName: pdns::trace::Span::encode
    functionSourceFile: /src/pdns/pdns/protozero-trace.cc
    functionUses: 1
    functionsReached:
    - pdns::trace::Span::encode
    - pdns::trace::encodeFixed
    - pdns::trace::encode
    - message::empty
    linkageType: ''
    returnType: void
    signature: void Span::encode(protozero::pbf_writer& writer) const
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: next
      Src: /src/pdns/pdns/protozero-trace.cc:381,1
    - Dst: tag
      Src: /src/pdns/pdns/protozero-trace.cc:382,1
    - Dst: decodeTraceID
      Src: /src/pdns/pdns/protozero-trace.cc:384,1
    - Dst: decodeSpanID
      Src: /src/pdns/pdns/protozero-trace.cc:387,1
    - Dst: get_string
      Src: /src/pdns/pdns/protozero-trace.cc:390,1
    - Dst: decodeSpanID
      Src: /src/pdns/pdns/protozero-trace.cc:393,1
    - Dst: get_string
      Src: /src/pdns/pdns/protozero-trace.cc:396,1
    - Dst: static_cast<Span::SpanKind>
      Src: /src/pdns/pdns/protozero-trace.cc:399,1
    - Dst: get_uint32
      Src: /src/pdns/pdns/protozero-trace.cc:399,1
    - Dst: get_fixed64
      Src: /src/pdns/pdns/protozero-trace.cc:402,1
    - Dst: get_fixed64
      Src: /src/pdns/pdns/protozero-trace.cc:405,1
    - Dst: get_message
      Src: /src/pdns/pdns/protozero-trace.cc:408,1
    - Dst: Span::attributes::emplace_back
      Src: /src/pdns/pdns/protozero-trace.cc:409,1
    - Dst: pdns::trace::KeyValue::decode
      Src: /src/pdns/pdns/protozero-trace.cc:409,1
    - Dst: get_uint32
      Src: /src/pdns/pdns/protozero-trace.cc:413,1
    - Dst: get_message
      Src: /src/pdns/pdns/protozero-trace.cc:416,1
    - Dst: Span::events::emplace_back
      Src: /src/pdns/pdns/protozero-trace.cc:417,1
    - Dst: YAML::decode
      Src: /src/pdns/pdns/protozero-trace.cc:417,1
    - Dst: get_uint32
      Src: /src/pdns/pdns/protozero-trace.cc:421,1
    - Dst: get_message
      Src: /src/pdns/pdns/protozero-trace.cc:424,1
    - Dst: Span::links::emplace_back
      Src: /src/pdns/pdns/protozero-trace.cc:425,1
    - Dst: YAML::decode
      Src: /src/pdns/pdns/protozero-trace.cc:425,1
    - Dst: get_uint32
      Src: /src/pdns/pdns/protozero-trace.cc:429,1
    - Dst: get_message
      Src: /src/pdns/pdns/protozero-trace.cc:432,1
    - Dst: pdns::trace::Status::decode
      Src: /src/pdns/pdns/protozero-trace.cc:433,1
    - Dst: get_fixed32
      Src: /src/pdns/pdns/protozero-trace.cc:437,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 60
    argCount: 1
    argNames:
    - ' reader'
    argTypes:
    - protozero::pbf_reader
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 444
      start: 378
    functionDepth: 1
    functionLinenumber: 378
    functionLinenumberEnd: 444
    functionName: pdns::trace::Span::decode
    functionSourceFile: /src/pdns/pdns/protozero-trace.cc
    functionUses: 0
    functionsReached:
    - next
    - Span::attributes::emplace_back
    - decodeSpanID
    - static_cast<Span::SpanKind>
    - decodeTraceID
    - tag
    - YAML::decode
    - get_message
    - pdns::trace::KeyValue::decode
    - pdns::trace::Status::decode
    - get_fixed64
    - Span::events::emplace_back
    - get_uint32
    - get_fixed32
    - get_string
    - Span::links::emplace_back
    linkageType: ''
    returnType: Span
    signature: Span Span::decode(protozero::pbf_reader& reader)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::ScopeSpans::encode
      Src: /src/pdns/pdns/protozero-trace.cc:450,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/protozero-trace.cc:452,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/protozero-trace.cc:453,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - ' writer'
    argTypes:
    - protozero::pbf_writer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 454
      start: 446
    functionDepth: 0
    functionLinenumber: 446
    functionLinenumberEnd: 454
    functionName: pdns::trace::ScopeSpans::encode
    functionSourceFile: /src/pdns/pdns/protozero-trace.cc
    functionUses: 1
    functionsReached:
    - pdns::trace::ScopeSpans::encode
    - pdns::trace::encode
    linkageType: ''
    returnType: void
    signature: void ScopeSpans::encode(protozero::pbf_writer& writer) const
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: next
      Src: /src/pdns/pdns/protozero-trace.cc:459,1
    - Dst: tag
      Src: /src/pdns/pdns/protozero-trace.cc:460,1
    - Dst: get_message
      Src: /src/pdns/pdns/protozero-trace.cc:462,1
    - Dst: pdns::trace::InstrumentationScope::decode
      Src: /src/pdns/pdns/protozero-trace.cc:463,1
    - Dst: get_message
      Src: /src/pdns/pdns/protozero-trace.cc:467,1
    - Dst: ScopeSpans::spans::emplace_back
      Src: /src/pdns/pdns/protozero-trace.cc:468,1
    - Dst: pdns::trace::Span::decode
      Src: /src/pdns/pdns/protozero-trace.cc:468,1
    - Dst: get_string
      Src: /src/pdns/pdns/protozero-trace.cc:472,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 1
    argNames:
    - ' reader'
    argTypes:
    - protozero::pbf_reader
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 478
      start: 456
    functionDepth: 0
    functionLinenumber: 456
    functionLinenumberEnd: 478
    functionName: pdns::trace::ScopeSpans::decode
    functionSourceFile: /src/pdns/pdns/protozero-trace.cc
    functionUses: 0
    functionsReached:
    - next
    - ScopeSpans::spans::emplace_back
    - tag
    - get_message
    - pdns::trace::InstrumentationScope::decode
    - get_string
    - pdns::trace::Span::decode
    linkageType: ''
    returnType: ScopeSpans
    signature: ScopeSpans ScopeSpans::decode(protozero::pbf_reader& reader)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::ResourceSpans::encode
      Src: /src/pdns/pdns/protozero-trace.cc:484,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/protozero-trace.cc:486,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/protozero-trace.cc:487,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - ' writer'
    argTypes:
    - protozero::pbf_writer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 488
      start: 480
    functionDepth: 0
    functionLinenumber: 480
    functionLinenumberEnd: 488
    functionName: pdns::trace::ResourceSpans::encode
    functionSourceFile: /src/pdns/pdns/protozero-trace.cc
    functionUses: 1
    functionsReached:
    - pdns::trace::encode
    - pdns::trace::ResourceSpans::encode
    linkageType: ''
    returnType: void
    signature: void ResourceSpans::encode(protozero::pbf_writer& writer) const
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: next
      Src: /src/pdns/pdns/protozero-trace.cc:493,1
    - Dst: tag
      Src: /src/pdns/pdns/protozero-trace.cc:494,1
    - Dst: get_message
      Src: /src/pdns/pdns/protozero-trace.cc:496,1
    - Dst: pdns::trace::Resource::decode
      Src: /src/pdns/pdns/protozero-trace.cc:497,1
    - Dst: get_message
      Src: /src/pdns/pdns/protozero-trace.cc:501,1
    - Dst: ResourceSpans::scope_spans::emplace_back
      Src: /src/pdns/pdns/protozero-trace.cc:502,1
    - Dst: pdns::trace::ScopeSpans::decode
      Src: /src/pdns/pdns/protozero-trace.cc:502,1
    - Dst: get_string
      Src: /src/pdns/pdns/protozero-trace.cc:506,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 1
    argNames:
    - ' reader'
    argTypes:
    - protozero::pbf_reader
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 512
      start: 490
    functionDepth: 0
    functionLinenumber: 490
    functionLinenumberEnd: 512
    functionName: pdns::trace::ResourceSpans::decode
    functionSourceFile: /src/pdns/pdns/protozero-trace.cc
    functionUses: 0
    functionsReached:
    - next
    - pdns::trace::Resource::decode
    - tag
    - pdns::trace::ScopeSpans::decode
    - get_message
    - ResourceSpans::scope_spans::emplace_back
    - get_string
    linkageType: ''
    returnType: ResourceSpans
    signature: ResourceSpans ResourceSpans::decode(protozero::pbf_reader& reader)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/protozero-trace.cc:516,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' writer'
    argTypes:
    - protozero::pbf_writer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 517
      start: 514
    functionDepth: 0
    functionLinenumber: 514
    functionLinenumberEnd: 517
    functionName: pdns::trace::TracesData::encode
    functionSourceFile: /src/pdns/pdns/protozero-trace.cc
    functionUses: 2
    functionsReached:
    - pdns::trace::encode
    linkageType: ''
    returnType: void
    signature: void TracesData::encode(protozero::pbf_writer& writer) const
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: next
      Src: /src/pdns/pdns/protozero-trace.cc:522,1
    - Dst: tag
      Src: /src/pdns/pdns/protozero-trace.cc:523,1
    - Dst: get_message
      Src: /src/pdns/pdns/protozero-trace.cc:525,1
    - Dst: TracesData::resource_spans::emplace_back
      Src: /src/pdns/pdns/protozero-trace.cc:526,1
    - Dst: pdns::trace::ResourceSpans::decode
      Src: /src/pdns/pdns/protozero-trace.cc:526,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 1
    argNames:
    - ' reader'
    argTypes:
    - protozero::pbf_reader
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 534
      start: 519
    functionDepth: 0
    functionLinenumber: 519
    functionLinenumberEnd: 534
    functionName: pdns::trace::TracesData::decode
    functionSourceFile: /src/pdns/pdns/protozero-trace.cc
    functionUses: 2
    functionsReached:
    - next
    - TracesData::resource_spans::emplace_back
    - tag
    - get_message
    - pdns::trace::ResourceSpans::decode
    linkageType: ''
    returnType: TracesData
    signature: TracesData TracesData::decode(protozero::pbf_reader& reader)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: next
      Src: /src/pdns/pdns/protozero-trace.cc:539,1
    - Dst: tag
      Src: /src/pdns/pdns/protozero-trace.cc:540,1
    - Dst: get_string
      Src: /src/pdns/pdns/protozero-trace.cc:542,1
    - Dst: get_message
      Src: /src/pdns/pdns/protozero-trace.cc:545,1
    - Dst: pdns::trace::AnyValue::decode
      Src: /src/pdns/pdns/protozero-trace.cc:546,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 1
    argNames:
    - ' reader'
    argTypes:
    - protozero::pbf_reader
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 554
      start: 536
    functionDepth: 0
    functionLinenumber: 536
    functionLinenumberEnd: 554
    functionName: pdns::trace::KeyValue::decode
    functionSourceFile: /src/pdns/pdns/protozero-trace.cc
    functionUses: 5
    functionsReached:
    - next
    - pdns::trace::AnyValue::decode
    - tag
    - get_message
    - get_string
    linkageType: ''
    returnType: KeyValue
    signature: KeyValue KeyValue::decode(protozero::pbf_reader& reader)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::extractOTraceIDs
      Src: /src/pdns/pdns/protozero-trace.cc:560,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' map'
    - eoc
    - ' span'
    argTypes:
    - EDNSOptionViewMap
    - EDNSOptionCode::EDNSOptionCodeEnum
    - pdns::trace::InitialSpanInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 562
      start: 556
    functionDepth: 0
    functionLinenumber: 556
    functionLinenumberEnd: 562
    functionName: pdns::trace::extractOTraceIDs
    functionSourceFile: /src/pdns/pdns/protozero-trace.cc
    functionUses: 1
    functionsReached:
    - pdns::trace::extractOTraceIDs
    linkageType: ''
    returnType: bool
    signature: bool extractOTraceIDs(const EDNSOptionViewMap& map, EDNSOptionCode::EDNSOptionCodeEnum
      eoc, pdns::trace::InitialSpanInfo& span)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: find
      Src: /src/pdns/pdns/protozero-trace.cc:580,1
    - Dst: end
      Src: /src/pdns/pdns/protozero-trace.cc:580,1
    - Dst: second::values::at
      Src: /src/pdns/pdns/protozero-trace.cc:581,1
    - Dst: reinterpret_cast<const uint8_t*>
      Src: /src/pdns/pdns/protozero-trace.cc:582,1
    - Dst: EDNSOTTraceRecordView::getVersion
      Src: /src/pdns/pdns/protozero-trace.cc:585,1
    - Dst: EDNSOTTraceRecordView::getTraceID
      Src: /src/pdns/pdns/protozero-trace.cc:586,1
    - Dst: EDNSOTTraceRecordView::getSpanID
      Src: /src/pdns/pdns/protozero-trace.cc:589,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 4
    argNames:
    - ' map'
    - eoc
    - ' traceID'
    - ' spanID'
    argTypes:
    - EDNSOptionViewMap
    - EDNSOptionCode::EDNSOptionCodeEnum
    - pdns::trace::TraceID
    - pdns::trace::SpanID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 593
      start: 573
    functionDepth: 0
    functionLinenumber: 573
    functionLinenumberEnd: 593
    functionName: pdns::trace::extractOTraceIDs
    functionSourceFile: /src/pdns/pdns/protozero-trace.cc
    functionUses: 1
    functionsReached:
    - EDNSOTTraceRecordView::getVersion
    - EDNSOTTraceRecordView::getSpanID
    - reinterpret_cast<const uint8_t*>
    - end
    - second::values::at
    - EDNSOTTraceRecordView::getTraceID
    - find
    linkageType: ''
    returnType: bool
    signature: bool extractOTraceIDs(const EDNSOptionViewMap& map, EDNSOptionCode::EDNSOptionCodeEnum
      eoc, pdns::trace::TraceID& traceID, pdns::trace::SpanID& spanID)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeHexDump
      Src: /src/pdns/pdns/protozero-trace.cc:597,1
    - Dst: std::string
      Src: /src/pdns/pdns/protozero-trace.cc:597,1
    - Dst: pdns::trace::SpanID::begin
      Src: /src/pdns/pdns/protozero-trace.cc:597,1
    - Dst: pdns::trace::SpanID::end
      Src: /src/pdns/pdns/protozero-trace.cc:597,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 598
      start: 595
    functionDepth: 0
    functionLinenumber: 595
    functionLinenumberEnd: 598
    functionName: pdns::trace::SpanID::toLogString
    functionSourceFile: /src/pdns/pdns/protozero-trace.cc
    functionUses: 0
    functionsReached:
    - std::string
    - pdns::trace::SpanID::end
    - makeHexDump
    - pdns::trace::SpanID::begin
    linkageType: ''
    returnType: std::string
    signature: std::string SpanID::toLogString() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeHexDump
      Src: /src/pdns/pdns/protozero-trace.cc:602,1
    - Dst: std::string
      Src: /src/pdns/pdns/protozero-trace.cc:602,1
    - Dst: pdns::trace::TraceID::begin
      Src: /src/pdns/pdns/protozero-trace.cc:602,1
    - Dst: pdns::trace::TraceID::end
      Src: /src/pdns/pdns/protozero-trace.cc:602,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 603
      start: 600
    functionDepth: 0
    functionLinenumber: 600
    functionLinenumberEnd: 603
    functionName: pdns::trace::TraceID::toLogString
    functionSourceFile: /src/pdns/pdns/protozero-trace.cc
    functionUses: 0
    functionsReached:
    - pdns::trace::TraceID::end
    - std::string
    - makeHexDump
    - pdns::trace::TraceID::begin
    linkageType: ''
    returnType: std::string
    signature: std::string TraceID::toLogString() const
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: std::holds_alternative<std::string>
      Src: /src/pdns/pdns/protozero-trace.cc:35,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/protozero-trace.cc:36,1
    - Dst: std::get<std::string>
      Src: /src/pdns/pdns/protozero-trace.cc:36,1
    - Dst: std::holds_alternative<bool>
      Src: /src/pdns/pdns/protozero-trace.cc:38,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/protozero-trace.cc:39,1
    - Dst: std::get<bool>
      Src: /src/pdns/pdns/protozero-trace.cc:39,1
    - Dst: std::holds_alternative<int64_t>
      Src: /src/pdns/pdns/protozero-trace.cc:41,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/protozero-trace.cc:42,1
    - Dst: std::get<int64_t>
      Src: /src/pdns/pdns/protozero-trace.cc:42,1
    - Dst: std::holds_alternative<double>
      Src: /src/pdns/pdns/protozero-trace.cc:44,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/protozero-trace.cc:45,1
    - Dst: std::get<double>
      Src: /src/pdns/pdns/protozero-trace.cc:45,1
    - Dst: std::holds_alternative<ArrayValue>
      Src: /src/pdns/pdns/protozero-trace.cc:47,1
    - Dst: std::get<ArrayValue>
      Src: /src/pdns/pdns/protozero-trace.cc:49,1
    - Dst: std::holds_alternative<KeyValueList>
      Src: /src/pdns/pdns/protozero-trace.cc:51,1
    - Dst: std::get<KeyValueList>
      Src: /src/pdns/pdns/protozero-trace.cc:53,1
    - Dst: std::holds_alternative<std::vector<uint8_t>>
      Src: /src/pdns/pdns/protozero-trace.cc:55,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/protozero-trace.cc:56,1
    - Dst: std::get<std::vector<uint8_t>>
      Src: /src/pdns/pdns/protozero-trace.cc:56,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 22
    argCount: 1
    argNames:
    - ' writer'
    argTypes:
    - protozero::pbf_writer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 33
    functionDepth: 0
    functionLinenumber: 33
    functionLinenumberEnd: 58
    functionName: pdns::trace::AnyValue::encode
    functionSourceFile: /src/pdns/pdns/protozero-trace.cc
    functionUses: 1
    functionsReached:
    - std::get<std::vector<uint8_t>>
    - std::get<ArrayValue>
    - std::holds_alternative<std::string>
    - std::holds_alternative<ArrayValue>
    - std::holds_alternative<std::vector<uint8_t>>
    - std::get<std::string>
    - std::get<double>
    - std::holds_alternative<double>
    - std::holds_alternative<bool>
    - std::holds_alternative<KeyValueList>
    - std::holds_alternative<int64_t>
    - pdns::trace::encode
    - std::get<int64_t>
    - std::get<KeyValueList>
    - std::get<bool>
    linkageType: ''
    returnType: void
    signature: void AnyValue::encode(protozero::pbf_writer& writer) const
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: next
      Src: /src/pdns/pdns/protozero-trace.cc:62,1
    - Dst: tag
      Src: /src/pdns/pdns/protozero-trace.cc:63,1
    - Dst: get_string
      Src: /src/pdns/pdns/protozero-trace.cc:65,1
    - Dst: get_bool
      Src: /src/pdns/pdns/protozero-trace.cc:68,1
    - Dst: get_int64
      Src: /src/pdns/pdns/protozero-trace.cc:71,1
    - Dst: get_double
      Src: /src/pdns/pdns/protozero-trace.cc:74,1
    - Dst: get_message
      Src: /src/pdns/pdns/protozero-trace.cc:77,1
    - Dst: pdns::trace::ArrayValue::decode
      Src: /src/pdns/pdns/protozero-trace.cc:78,1
    - Dst: get_message
      Src: /src/pdns/pdns/protozero-trace.cc:82,1
    - Dst: pdns::trace::KeyValueList::decode
      Src: /src/pdns/pdns/protozero-trace.cc:83,1
    - Dst: get_view
      Src: /src/pdns/pdns/protozero-trace.cc:87,1
    - Dst: std::vector::reserve
      Src: /src/pdns/pdns/protozero-trace.cc:89,1
    - Dst: auto::size
      Src: /src/pdns/pdns/protozero-trace.cc:89,1
    - Dst: auto::size
      Src: /src/pdns/pdns/protozero-trace.cc:90,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/protozero-trace.cc:91,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/protozero-trace.cc:91,1
    - Dst: auto::data
      Src: /src/pdns/pdns/protozero-trace.cc:91,1
    - Dst: std::move
      Src: /src/pdns/pdns/protozero-trace.cc:93,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 36
    argCount: 1
    argNames:
    - ' reader'
    argTypes:
    - protozero::pbf_reader
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 60
    functionDepth: 0
    functionLinenumber: 60
    functionLinenumberEnd: 102
    functionName: pdns::trace::AnyValue::decode
    functionSourceFile: /src/pdns/pdns/protozero-trace.cc
    functionUses: 2
    functionsReached:
    - next
    - get_double
    - std::vector::push_back
    - std::move
    - get_bool
    - tag
    - pdns::trace::KeyValueList::decode
    - auto::data
    - get_message
    - get_int64
    - std::vector::reserve
    - static_cast<uint8_t>
    - pdns::trace::ArrayValue::decode
    - auto::size
    - get_string
    - get_view
    linkageType: ''
    returnType: AnyValue
    signature: AnyValue AnyValue::decode(protozero::pbf_reader& reader)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: std::holds_alternative<std::string>
      Src: /src/pdns/pdns/protozero-trace.cc:106,1
    - Dst: std::get<std::string>
      Src: /src/pdns/pdns/protozero-trace.cc:107,1
    - Dst: std::holds_alternative<bool>
      Src: /src/pdns/pdns/protozero-trace.cc:109,1
    - Dst: std::get<bool>
      Src: /src/pdns/pdns/protozero-trace.cc:110,1
    - Dst: std::holds_alternative<int64_t>
      Src: /src/pdns/pdns/protozero-trace.cc:115,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/protozero-trace.cc:116,1
    - Dst: std::get<int64_t>
      Src: /src/pdns/pdns/protozero-trace.cc:116,1
    - Dst: std::holds_alternative<double>
      Src: /src/pdns/pdns/protozero-trace.cc:118,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/protozero-trace.cc:119,1
    - Dst: std::get<double>
      Src: /src/pdns/pdns/protozero-trace.cc:119,1
    - Dst: std::holds_alternative<ArrayValue>
      Src: /src/pdns/pdns/protozero-trace.cc:121,1
    - Dst: std::get<ArrayValue>
      Src: /src/pdns/pdns/protozero-trace.cc:123,1
    - Dst: pdns::trace::AnyValue::toLogString
      Src: /src/pdns/pdns/protozero-trace.cc:124,1
    - Dst: std::string::resize
      Src: /src/pdns/pdns/protozero-trace.cc:126,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/protozero-trace.cc:126,1
    - Dst: std::holds_alternative<KeyValueList>
      Src: /src/pdns/pdns/protozero-trace.cc:129,1
    - Dst: std::get<KeyValueList>
      Src: /src/pdns/pdns/protozero-trace.cc:131,1
    - Dst: value::toLogString
      Src: /src/pdns/pdns/protozero-trace.cc:132,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/protozero-trace.cc:134,1
    - Dst: std::string::resize
      Src: /src/pdns/pdns/protozero-trace.cc:135,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/protozero-trace.cc:135,1
    - Dst: std::holds_alternative<std::vector<uint8_t>>
      Src: /src/pdns/pdns/protozero-trace.cc:139,1
    - Dst: std::get<std::vector<uint8_t>>
      Src: /src/pdns/pdns/protozero-trace.cc:140,1
    - Dst: Base64Encode
      Src: /src/pdns/pdns/protozero-trace.cc:141,1
    - Dst: std::string
      Src: /src/pdns/pdns/protozero-trace.cc:141,1
    - Dst: auto::begin
      Src: /src/pdns/pdns/protozero-trace.cc:141,1
    - Dst: auto::end
      Src: /src/pdns/pdns/protozero-trace.cc:141,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 34
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 144
      start: 104
    functionDepth: 1
    functionLinenumber: 104
    functionLinenumberEnd: 144
    functionName: pdns::trace::AnyValue::toLogString
    functionSourceFile: /src/pdns/pdns/protozero-trace.cc
    functionUses: 2
    functionsReached:
    - std::to_string
    - std::get<double>
    - std::holds_alternative<KeyValueList>
    - auto::begin
    - std::holds_alternative<ArrayValue>
    - std::get<int64_t>
    - std::string
    - std::get<KeyValueList>
    - std::string::size
    - value::toLogString
    - std::holds_alternative<std::vector<uint8_t>>
    - std::holds_alternative<std::string>
    - pdns::trace::AnyValue::toLogString
    - std::holds_alternative<double>
    - std::holds_alternative<bool>
    - std::string::resize
    - std::holds_alternative<int64_t>
    - std::get<std::vector<uint8_t>>
    - std::get<ArrayValue>
    - std::get<std::string>
    - auto::end
    - std::get<bool>
    - Base64Encode
    linkageType: ''
    returnType: std::string
    signature: std::string AnyValue::toLogString() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/protozero-trace.cc:148,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/protozero-trace.cc:149,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/protozero-trace.cc:151,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/protozero-trace.cc:154,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - ' writer'
    argTypes:
    - protozero::pbf_writer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 156
      start: 146
    functionDepth: 0
    functionLinenumber: 146
    functionLinenumberEnd: 156
    functionName: pdns::trace::EntityRef::encode
    functionSourceFile: /src/pdns/pdns/protozero-trace.cc
    functionUses: 0
    functionsReached:
    - pdns::trace::encode
    linkageType: ''
    returnType: void
    signature: void EntityRef::encode(protozero::pbf_writer& writer) const
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: next
      Src: /src/pdns/pdns/protozero-trace.cc:161,1
    - Dst: tag
      Src: /src/pdns/pdns/protozero-trace.cc:162,1
    - Dst: get_string
      Src: /src/pdns/pdns/protozero-trace.cc:164,1
    - Dst: get_string
      Src: /src/pdns/pdns/protozero-trace.cc:167,1
    - Dst: EntityRef::id_keys::emplace_back
      Src: /src/pdns/pdns/protozero-trace.cc:170,1
    - Dst: get_string
      Src: /src/pdns/pdns/protozero-trace.cc:170,1
    - Dst: EntityRef::description_keys::emplace_back
      Src: /src/pdns/pdns/protozero-trace.cc:173,1
    - Dst: get_string
      Src: /src/pdns/pdns/protozero-trace.cc:173,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 20
    argCount: 1
    argNames:
    - ' reader'
    argTypes:
    - protozero::pbf_reader
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 180
      start: 158
    functionDepth: 0
    functionLinenumber: 158
    functionLinenumberEnd: 180
    functionName: pdns::trace::EntityRef::decode
    functionSourceFile: /src/pdns/pdns/protozero-trace.cc
    functionUses: 1
    functionsReached:
    - next
    - tag
    - EntityRef::description_keys::emplace_back
    - EntityRef::id_keys::emplace_back
    - get_string
    linkageType: ''
    returnType: EntityRef
    signature: EntityRef EntityRef::decode(protozero::pbf_reader& reader)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/protozero-trace.cc:184,1
    - Dst: pdns::trace::KeyValue::encode
      Src: /src/pdns/pdns/protozero-trace.cc:187,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - ' writer'
    argTypes:
    - protozero::pbf_writer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 189
      start: 182
    functionDepth: 0
    functionLinenumber: 182
    functionLinenumberEnd: 189
    functionName: pdns::trace::KeyValue::encode
    functionSourceFile: /src/pdns/pdns/protozero-trace.cc
    functionUses: 2
    functionsReached:
    - pdns::trace::KeyValue::encode
    - pdns::trace::encode
    linkageType: ''
    returnType: void
    signature: void KeyValue::encode(protozero::pbf_writer& writer) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/protozero-trace.cc:193,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/protozero-trace.cc:194,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/protozero-trace.cc:195,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - ' writer'
    argTypes:
    - protozero::pbf_writer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 196
      start: 191
    functionDepth: 0
    functionLinenumber: 191
    functionLinenumberEnd: 196
    functionName: pdns::trace::Resource::encode
    functionSourceFile: /src/pdns/pdns/protozero-trace.cc
    functionUses: 2
    functionsReached:
    - pdns::trace::encode
    linkageType: ''
    returnType: void
    signature: void Resource::encode(protozero::pbf_writer& writer) const
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: next
      Src: /src/pdns/pdns/protozero-trace.cc:201,1
    - Dst: tag
      Src: /src/pdns/pdns/protozero-trace.cc:202,1
    - Dst: get_message
      Src: /src/pdns/pdns/protozero-trace.cc:204,1
    - Dst: Resource::attributes::emplace_back
      Src: /src/pdns/pdns/protozero-trace.cc:205,1
    - Dst: pdns::trace::KeyValue::decode
      Src: /src/pdns/pdns/protozero-trace.cc:205,1
    - Dst: get_uint32
      Src: /src/pdns/pdns/protozero-trace.cc:209,1
    - Dst: get_message
      Src: /src/pdns/pdns/protozero-trace.cc:212,1
    - Dst: Resource::entity_refs::emplace_back
      Src: /src/pdns/pdns/protozero-trace.cc:213,1
    - Dst: pdns::trace::EntityRef::decode
      Src: /src/pdns/pdns/protozero-trace.cc:213,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 1
    argNames:
    - ' reader'
    argTypes:
    - protozero::pbf_reader
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 221
      start: 198
    functionDepth: 0
    functionLinenumber: 198
    functionLinenumberEnd: 221
    functionName: pdns::trace::Resource::decode
    functionSourceFile: /src/pdns/pdns/protozero-trace.cc
    functionUses: 1
    functionsReached:
    - next
    - Resource::attributes::emplace_back
    - Resource::entity_refs::emplace_back
    - tag
    - get_message
    - pdns::trace::KeyValue::decode
    - get_uint32
    - pdns::trace::EntityRef::decode
    linkageType: ''
    returnType: Resource
    signature: Resource Resource::decode(protozero::pbf_reader& reader)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/protozero-trace.cc:225,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/protozero-trace.cc:226,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/protozero-trace.cc:227,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/protozero-trace.cc:228,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - ' writer'
    argTypes:
    - protozero::pbf_writer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 229
      start: 223
    functionDepth: 0
    functionLinenumber: 223
    functionLinenumberEnd: 229
    functionName: pdns::trace::InstrumentationScope::encode
    functionSourceFile: /src/pdns/pdns/protozero-trace.cc
    functionUses: 0
    functionsReached:
    - pdns::trace::encode
    linkageType: ''
    returnType: void
    signature: void InstrumentationScope::encode(protozero::pbf_writer& writer) const
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: next
      Src: /src/pdns/pdns/protozero-trace.cc:234,1
    - Dst: tag
      Src: /src/pdns/pdns/protozero-trace.cc:235,1
    - Dst: get_string
      Src: /src/pdns/pdns/protozero-trace.cc:237,1
    - Dst: get_string
      Src: /src/pdns/pdns/protozero-trace.cc:240,1
    - Dst: get_message
      Src: /src/pdns/pdns/protozero-trace.cc:243,1
    - Dst: InstrumentationScope::attributes::emplace_back
      Src: /src/pdns/pdns/protozero-trace.cc:244,1
    - Dst: pdns::trace::KeyValue::decode
      Src: /src/pdns/pdns/protozero-trace.cc:244,1
    - Dst: get_uint32
      Src: /src/pdns/pdns/protozero-trace.cc:248,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 21
    argCount: 1
    argNames:
    - ' reader'
    argTypes:
    - protozero::pbf_reader
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 255
      start: 231
    functionDepth: 0
    functionLinenumber: 231
    functionLinenumberEnd: 255
    functionName: pdns::trace::InstrumentationScope::decode
    functionSourceFile: /src/pdns/pdns/protozero-trace.cc
    functionUses: 1
    functionsReached:
    - next
    - tag
    - get_message
    - pdns::trace::KeyValue::decode
    - get_uint32
    - get_string
    - InstrumentationScope::attributes::emplace_back
    linkageType: ''
    returnType: InstrumentationScope
    signature: InstrumentationScope InstrumentationScope::decode(protozero::pbf_reader&
      reader)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/protozero-trace.cc:259,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/protozero-trace.cc:260,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ' writer'
    argTypes:
    - protozero::pbf_writer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 261
      start: 257
    functionDepth: 0
    functionLinenumber: 257
    functionLinenumberEnd: 261
    functionName: pdns::trace::Status::encode
    functionSourceFile: /src/pdns/pdns/protozero-trace.cc
    functionUses: 0
    functionsReached:
    - pdns::trace::encode
    linkageType: ''
    returnType: void
    signature: void Status::encode(protozero::pbf_writer& writer) const
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: next
      Src: /src/pdns/pdns/protozero-trace.cc:266,1
    - Dst: tag
      Src: /src/pdns/pdns/protozero-trace.cc:267,1
    - Dst: get_string
      Src: /src/pdns/pdns/protozero-trace.cc:269,1
    - Dst: static_cast<StatusCode>
      Src: /src/pdns/pdns/protozero-trace.cc:272,1
    - Dst: get_uint32
      Src: /src/pdns/pdns/protozero-trace.cc:272,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 1
    argNames:
    - ' reader'
    argTypes:
    - protozero::pbf_reader
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 279
      start: 263
    functionDepth: 0
    functionLinenumber: 263
    functionLinenumberEnd: 279
    functionName: pdns::trace::Status::decode
    functionSourceFile: /src/pdns/pdns/protozero-trace.cc
    functionUses: 1
    functionsReached:
    - next
    - tag
    - static_cast<StatusCode>
    - get_uint32
    - get_string
    linkageType: ''
    returnType: Status
    signature: Status Status::decode(protozero::pbf_reader& reader)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::encodeFixed
      Src: /src/pdns/pdns/protozero-trace.cc:283,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/protozero-trace.cc:284,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/protozero-trace.cc:285,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/protozero-trace.cc:286,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - ' writer'
    argTypes:
    - protozero::pbf_writer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 287
      start: 281
    functionDepth: 0
    functionLinenumber: 281
    functionLinenumberEnd: 287
    functionName: Span::Event::encode(protozero::pbf_writer& writer) const
    functionSourceFile: /src/pdns/pdns/protozero-trace.cc
    functionUses: 0
    functionsReached:
    - pdns::trace::encodeFixed
    - pdns::trace::encode
    linkageType: ''
    returnType: void
    signature: void Span::Event::encode(protozero::pbf_writer& writer) const
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: next
      Src: /src/pdns/pdns/protozero-trace.cc:292,1
    - Dst: tag
      Src: /src/pdns/pdns/protozero-trace.cc:293,1
    - Dst: get_fixed64
      Src: /src/pdns/pdns/protozero-trace.cc:295,1
    - Dst: get_string
      Src: /src/pdns/pdns/protozero-trace.cc:298,1
    - Dst: get_message
      Src: /src/pdns/pdns/protozero-trace.cc:301,1
    - Dst: Span::Event::attributes::emplace_back
      Src: /src/pdns/pdns/protozero-trace.cc:302,1
    - Dst: pdns::trace::KeyValue::decode
      Src: /src/pdns/pdns/protozero-trace.cc:302,1
    - Dst: get_uint32
      Src: /src/pdns/pdns/protozero-trace.cc:306,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    argCount: 1
    argNames:
    - ' reader'
    argTypes:
    - protozero::pbf_reader
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 312
      start: 289
    functionDepth: 0
    functionLinenumber: 289
    functionLinenumberEnd: 312
    functionName: Span::Event::decode(protozero::pbf_reader& reader)
    functionSourceFile: /src/pdns/pdns/protozero-trace.cc
    functionUses: 0
    functionsReached:
    - next
    - tag
    - Span::Event::attributes::emplace_back
    - get_message
    - pdns::trace::KeyValue::decode
    - get_fixed64
    - get_uint32
    - get_string
    linkageType: ''
    returnType: Span::Event
    signature: Span::Event Span::Event::decode(protozero::pbf_reader& reader)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/protozero-trace.cc:316,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/protozero-trace.cc:317,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/protozero-trace.cc:318,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/protozero-trace.cc:319,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/protozero-trace.cc:320,1
    - Dst: pdns::trace::encodeFixed
      Src: /src/pdns/pdns/protozero-trace.cc:321,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - ' writer'
    argTypes:
    - protozero::pbf_writer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 322
      start: 314
    functionDepth: 0
    functionLinenumber: 314
    functionLinenumberEnd: 322
    functionName: Span::Link::encode(protozero::pbf_writer& writer) const
    functionSourceFile: /src/pdns/pdns/protozero-trace.cc
    functionUses: 0
    functionsReached:
    - pdns::trace::encodeFixed
    - pdns::trace::encode
    linkageType: ''
    returnType: void
    signature: void Span::Link::encode(protozero::pbf_writer& writer) const
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: next
      Src: /src/pdns/pdns/protozero-trace.cc:327,1
    - Dst: tag
      Src: /src/pdns/pdns/protozero-trace.cc:328,1
    - Dst: decodeTraceID
      Src: /src/pdns/pdns/protozero-trace.cc:330,1
    - Dst: decodeSpanID
      Src: /src/pdns/pdns/protozero-trace.cc:333,1
    - Dst: get_string
      Src: /src/pdns/pdns/protozero-trace.cc:336,1
    - Dst: get_message
      Src: /src/pdns/pdns/protozero-trace.cc:339,1
    - Dst: Link::attributes::emplace_back
      Src: /src/pdns/pdns/protozero-trace.cc:340,1
    - Dst: pdns::trace::KeyValue::decode
      Src: /src/pdns/pdns/protozero-trace.cc:340,1
    - Dst: get_uint32
      Src: /src/pdns/pdns/protozero-trace.cc:344,1
    - Dst: get_fixed32
      Src: /src/pdns/pdns/protozero-trace.cc:347,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 26
    argCount: 1
    argNames:
    - ' reader'
    argTypes:
    - protozero::pbf_reader
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 353
      start: 324
    functionDepth: 0
    functionLinenumber: 324
    functionLinenumberEnd: 353
    functionName: Span::Link::decode(protozero::pbf_reader& reader)
    functionSourceFile: /src/pdns/pdns/protozero-trace.cc
    functionUses: 0
    functionsReached:
    - next
    - decodeSpanID
    - Link::attributes::emplace_back
    - decodeTraceID
    - tag
    - get_message
    - pdns::trace::KeyValue::decode
    - get_uint32
    - get_fixed32
    - get_string
    linkageType: ''
    returnType: Span::Link
    signature: Span::Link Span::Link::decode(protozero::pbf_reader& reader)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/protozero-trace.cc:357,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/protozero-trace.cc:358,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/protozero-trace.cc:359,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/protozero-trace.cc:360,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/protozero-trace.cc:361,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/protozero-trace.cc:362,1
    - Dst: pdns::trace::encodeFixed
      Src: /src/pdns/pdns/protozero-trace.cc:363,1
    - Dst: pdns::trace::encodeFixed
      Src: /src/pdns/pdns/protozero-trace.cc:364,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/protozero-trace.cc:365,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/protozero-trace.cc:366,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/protozero-trace.cc:367,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/protozero-trace.cc:368,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/protozero-trace.cc:369,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/protozero-trace.cc:370,1
    - Dst: message::empty
      Src: /src/pdns/pdns/protozero-trace.cc:371,1
    - Dst: pdns::trace::Span::encode
      Src: /src/pdns/pdns/protozero-trace.cc:373,1
    - Dst: pdns::trace::encodeFixed
      Src: /src/pdns/pdns/protozero-trace.cc:375,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 19
    argCount: 1
    argNames:
    - ' writer'
    argTypes:
    - protozero::pbf_writer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 376
      start: 355
    functionDepth: 0
    functionLinenumber: 355
    functionLinenumberEnd: 376
    functionName: pdns::trace::Span::encode
    functionSourceFile: /src/pdns/pdns/protozero-trace.cc
    functionUses: 2
    functionsReached:
    - pdns::trace::Span::encode
    - pdns::trace::encodeFixed
    - pdns::trace::encode
    - message::empty
    linkageType: ''
    returnType: void
    signature: void Span::encode(protozero::pbf_writer& writer) const
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: next
      Src: /src/pdns/pdns/protozero-trace.cc:381,1
    - Dst: tag
      Src: /src/pdns/pdns/protozero-trace.cc:382,1
    - Dst: decodeTraceID
      Src: /src/pdns/pdns/protozero-trace.cc:384,1
    - Dst: decodeSpanID
      Src: /src/pdns/pdns/protozero-trace.cc:387,1
    - Dst: get_string
      Src: /src/pdns/pdns/protozero-trace.cc:390,1
    - Dst: decodeSpanID
      Src: /src/pdns/pdns/protozero-trace.cc:393,1
    - Dst: get_string
      Src: /src/pdns/pdns/protozero-trace.cc:396,1
    - Dst: static_cast<Span::SpanKind>
      Src: /src/pdns/pdns/protozero-trace.cc:399,1
    - Dst: get_uint32
      Src: /src/pdns/pdns/protozero-trace.cc:399,1
    - Dst: get_fixed64
      Src: /src/pdns/pdns/protozero-trace.cc:402,1
    - Dst: get_fixed64
      Src: /src/pdns/pdns/protozero-trace.cc:405,1
    - Dst: get_message
      Src: /src/pdns/pdns/protozero-trace.cc:408,1
    - Dst: Span::attributes::emplace_back
      Src: /src/pdns/pdns/protozero-trace.cc:409,1
    - Dst: pdns::trace::KeyValue::decode
      Src: /src/pdns/pdns/protozero-trace.cc:409,1
    - Dst: get_uint32
      Src: /src/pdns/pdns/protozero-trace.cc:413,1
    - Dst: get_message
      Src: /src/pdns/pdns/protozero-trace.cc:416,1
    - Dst: Span::events::emplace_back
      Src: /src/pdns/pdns/protozero-trace.cc:417,1
    - Dst: YAML::decode
      Src: /src/pdns/pdns/protozero-trace.cc:417,1
    - Dst: get_uint32
      Src: /src/pdns/pdns/protozero-trace.cc:421,1
    - Dst: get_message
      Src: /src/pdns/pdns/protozero-trace.cc:424,1
    - Dst: Span::links::emplace_back
      Src: /src/pdns/pdns/protozero-trace.cc:425,1
    - Dst: YAML::decode
      Src: /src/pdns/pdns/protozero-trace.cc:425,1
    - Dst: get_uint32
      Src: /src/pdns/pdns/protozero-trace.cc:429,1
    - Dst: get_message
      Src: /src/pdns/pdns/protozero-trace.cc:432,1
    - Dst: pdns::trace::Status::decode
      Src: /src/pdns/pdns/protozero-trace.cc:433,1
    - Dst: get_fixed32
      Src: /src/pdns/pdns/protozero-trace.cc:437,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 60
    argCount: 1
    argNames:
    - ' reader'
    argTypes:
    - protozero::pbf_reader
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 444
      start: 378
    functionDepth: 1
    functionLinenumber: 378
    functionLinenumberEnd: 444
    functionName: pdns::trace::Span::decode
    functionSourceFile: /src/pdns/pdns/protozero-trace.cc
    functionUses: 1
    functionsReached:
    - next
    - Span::attributes::emplace_back
    - decodeSpanID
    - static_cast<Span::SpanKind>
    - decodeTraceID
    - tag
    - YAML::decode
    - get_message
    - pdns::trace::KeyValue::decode
    - pdns::trace::Status::decode
    - get_fixed64
    - Span::events::emplace_back
    - get_uint32
    - get_fixed32
    - get_string
    - Span::links::emplace_back
    linkageType: ''
    returnType: Span
    signature: Span Span::decode(protozero::pbf_reader& reader)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::ScopeSpans::encode
      Src: /src/pdns/pdns/protozero-trace.cc:450,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/protozero-trace.cc:452,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/protozero-trace.cc:453,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - ' writer'
    argTypes:
    - protozero::pbf_writer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 454
      start: 446
    functionDepth: 0
    functionLinenumber: 446
    functionLinenumberEnd: 454
    functionName: pdns::trace::ScopeSpans::encode
    functionSourceFile: /src/pdns/pdns/protozero-trace.cc
    functionUses: 2
    functionsReached:
    - pdns::trace::ScopeSpans::encode
    - pdns::trace::encode
    linkageType: ''
    returnType: void
    signature: void ScopeSpans::encode(protozero::pbf_writer& writer) const
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: next
      Src: /src/pdns/pdns/protozero-trace.cc:459,1
    - Dst: tag
      Src: /src/pdns/pdns/protozero-trace.cc:460,1
    - Dst: get_message
      Src: /src/pdns/pdns/protozero-trace.cc:462,1
    - Dst: pdns::trace::InstrumentationScope::decode
      Src: /src/pdns/pdns/protozero-trace.cc:463,1
    - Dst: get_message
      Src: /src/pdns/pdns/protozero-trace.cc:467,1
    - Dst: ScopeSpans::spans::emplace_back
      Src: /src/pdns/pdns/protozero-trace.cc:468,1
    - Dst: pdns::trace::Span::decode
      Src: /src/pdns/pdns/protozero-trace.cc:468,1
    - Dst: get_string
      Src: /src/pdns/pdns/protozero-trace.cc:472,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 1
    argNames:
    - ' reader'
    argTypes:
    - protozero::pbf_reader
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 478
      start: 456
    functionDepth: 0
    functionLinenumber: 456
    functionLinenumberEnd: 478
    functionName: pdns::trace::ScopeSpans::decode
    functionSourceFile: /src/pdns/pdns/protozero-trace.cc
    functionUses: 1
    functionsReached:
    - next
    - ScopeSpans::spans::emplace_back
    - tag
    - get_message
    - pdns::trace::InstrumentationScope::decode
    - get_string
    - pdns::trace::Span::decode
    linkageType: ''
    returnType: ScopeSpans
    signature: ScopeSpans ScopeSpans::decode(protozero::pbf_reader& reader)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::ResourceSpans::encode
      Src: /src/pdns/pdns/protozero-trace.cc:484,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/protozero-trace.cc:486,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/protozero-trace.cc:487,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - ' writer'
    argTypes:
    - protozero::pbf_writer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 488
      start: 480
    functionDepth: 0
    functionLinenumber: 480
    functionLinenumberEnd: 488
    functionName: pdns::trace::ResourceSpans::encode
    functionSourceFile: /src/pdns/pdns/protozero-trace.cc
    functionUses: 2
    functionsReached:
    - pdns::trace::encode
    - pdns::trace::ResourceSpans::encode
    linkageType: ''
    returnType: void
    signature: void ResourceSpans::encode(protozero::pbf_writer& writer) const
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: next
      Src: /src/pdns/pdns/protozero-trace.cc:493,1
    - Dst: tag
      Src: /src/pdns/pdns/protozero-trace.cc:494,1
    - Dst: get_message
      Src: /src/pdns/pdns/protozero-trace.cc:496,1
    - Dst: pdns::trace::Resource::decode
      Src: /src/pdns/pdns/protozero-trace.cc:497,1
    - Dst: get_message
      Src: /src/pdns/pdns/protozero-trace.cc:501,1
    - Dst: ResourceSpans::scope_spans::emplace_back
      Src: /src/pdns/pdns/protozero-trace.cc:502,1
    - Dst: pdns::trace::ScopeSpans::decode
      Src: /src/pdns/pdns/protozero-trace.cc:502,1
    - Dst: get_string
      Src: /src/pdns/pdns/protozero-trace.cc:506,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 1
    argNames:
    - ' reader'
    argTypes:
    - protozero::pbf_reader
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 512
      start: 490
    functionDepth: 0
    functionLinenumber: 490
    functionLinenumberEnd: 512
    functionName: pdns::trace::ResourceSpans::decode
    functionSourceFile: /src/pdns/pdns/protozero-trace.cc
    functionUses: 1
    functionsReached:
    - next
    - pdns::trace::Resource::decode
    - tag
    - pdns::trace::ScopeSpans::decode
    - get_message
    - ResourceSpans::scope_spans::emplace_back
    - get_string
    linkageType: ''
    returnType: ResourceSpans
    signature: ResourceSpans ResourceSpans::decode(protozero::pbf_reader& reader)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/protozero-trace.cc:516,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' writer'
    argTypes:
    - protozero::pbf_writer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 517
      start: 514
    functionDepth: 0
    functionLinenumber: 514
    functionLinenumberEnd: 517
    functionName: pdns::trace::TracesData::encode
    functionSourceFile: /src/pdns/pdns/protozero-trace.cc
    functionUses: 2
    functionsReached:
    - pdns::trace::encode
    linkageType: ''
    returnType: void
    signature: void TracesData::encode(protozero::pbf_writer& writer) const
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: next
      Src: /src/pdns/pdns/protozero-trace.cc:522,1
    - Dst: tag
      Src: /src/pdns/pdns/protozero-trace.cc:523,1
    - Dst: get_message
      Src: /src/pdns/pdns/protozero-trace.cc:525,1
    - Dst: TracesData::resource_spans::emplace_back
      Src: /src/pdns/pdns/protozero-trace.cc:526,1
    - Dst: pdns::trace::ResourceSpans::decode
      Src: /src/pdns/pdns/protozero-trace.cc:526,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 1
    argNames:
    - ' reader'
    argTypes:
    - protozero::pbf_reader
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 534
      start: 519
    functionDepth: 0
    functionLinenumber: 519
    functionLinenumberEnd: 534
    functionName: pdns::trace::TracesData::decode
    functionSourceFile: /src/pdns/pdns/protozero-trace.cc
    functionUses: 2
    functionsReached:
    - next
    - TracesData::resource_spans::emplace_back
    - tag
    - get_message
    - pdns::trace::ResourceSpans::decode
    linkageType: ''
    returnType: TracesData
    signature: TracesData TracesData::decode(protozero::pbf_reader& reader)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: next
      Src: /src/pdns/pdns/protozero-trace.cc:539,1
    - Dst: tag
      Src: /src/pdns/pdns/protozero-trace.cc:540,1
    - Dst: get_string
      Src: /src/pdns/pdns/protozero-trace.cc:542,1
    - Dst: get_message
      Src: /src/pdns/pdns/protozero-trace.cc:545,1
    - Dst: pdns::trace::AnyValue::decode
      Src: /src/pdns/pdns/protozero-trace.cc:546,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 1
    argNames:
    - ' reader'
    argTypes:
    - protozero::pbf_reader
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 554
      start: 536
    functionDepth: 0
    functionLinenumber: 536
    functionLinenumberEnd: 554
    functionName: pdns::trace::KeyValue::decode
    functionSourceFile: /src/pdns/pdns/protozero-trace.cc
    functionUses: 10
    functionsReached:
    - next
    - pdns::trace::AnyValue::decode
    - tag
    - get_message
    - get_string
    linkageType: ''
    returnType: KeyValue
    signature: KeyValue KeyValue::decode(protozero::pbf_reader& reader)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::extractOTraceIDs
      Src: /src/pdns/pdns/protozero-trace.cc:560,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' map'
    - eoc
    - ' span'
    argTypes:
    - EDNSOptionViewMap
    - EDNSOptionCode::EDNSOptionCodeEnum
    - pdns::trace::InitialSpanInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 562
      start: 556
    functionDepth: 0
    functionLinenumber: 556
    functionLinenumberEnd: 562
    functionName: pdns::trace::extractOTraceIDs
    functionSourceFile: /src/pdns/pdns/protozero-trace.cc
    functionUses: 2
    functionsReached:
    - pdns::trace::extractOTraceIDs
    linkageType: ''
    returnType: bool
    signature: bool extractOTraceIDs(const EDNSOptionViewMap& map, EDNSOptionCode::EDNSOptionCodeEnum
      eoc, pdns::trace::InitialSpanInfo& span)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: find
      Src: /src/pdns/pdns/protozero-trace.cc:580,1
    - Dst: end
      Src: /src/pdns/pdns/protozero-trace.cc:580,1
    - Dst: second::values::at
      Src: /src/pdns/pdns/protozero-trace.cc:581,1
    - Dst: reinterpret_cast<const uint8_t*>
      Src: /src/pdns/pdns/protozero-trace.cc:582,1
    - Dst: EDNSOTTraceRecordView::getVersion
      Src: /src/pdns/pdns/protozero-trace.cc:585,1
    - Dst: EDNSOTTraceRecordView::getTraceID
      Src: /src/pdns/pdns/protozero-trace.cc:586,1
    - Dst: EDNSOTTraceRecordView::getSpanID
      Src: /src/pdns/pdns/protozero-trace.cc:589,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 4
    argNames:
    - ' map'
    - eoc
    - ' traceID'
    - ' spanID'
    argTypes:
    - EDNSOptionViewMap
    - EDNSOptionCode::EDNSOptionCodeEnum
    - pdns::trace::TraceID
    - pdns::trace::SpanID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 593
      start: 573
    functionDepth: 0
    functionLinenumber: 573
    functionLinenumberEnd: 593
    functionName: pdns::trace::extractOTraceIDs
    functionSourceFile: /src/pdns/pdns/protozero-trace.cc
    functionUses: 2
    functionsReached:
    - EDNSOTTraceRecordView::getVersion
    - EDNSOTTraceRecordView::getSpanID
    - reinterpret_cast<const uint8_t*>
    - end
    - second::values::at
    - EDNSOTTraceRecordView::getTraceID
    - find
    linkageType: ''
    returnType: bool
    signature: bool extractOTraceIDs(const EDNSOptionViewMap& map, EDNSOptionCode::EDNSOptionCodeEnum
      eoc, pdns::trace::TraceID& traceID, pdns::trace::SpanID& spanID)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeHexDump
      Src: /src/pdns/pdns/protozero-trace.cc:597,1
    - Dst: std::string
      Src: /src/pdns/pdns/protozero-trace.cc:597,1
    - Dst: pdns::trace::SpanID::begin
      Src: /src/pdns/pdns/protozero-trace.cc:597,1
    - Dst: pdns::trace::SpanID::end
      Src: /src/pdns/pdns/protozero-trace.cc:597,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 598
      start: 595
    functionDepth: 0
    functionLinenumber: 595
    functionLinenumberEnd: 598
    functionName: pdns::trace::SpanID::toLogString
    functionSourceFile: /src/pdns/pdns/protozero-trace.cc
    functionUses: 0
    functionsReached:
    - std::string
    - pdns::trace::SpanID::end
    - makeHexDump
    - pdns::trace::SpanID::begin
    linkageType: ''
    returnType: std::string
    signature: std::string SpanID::toLogString() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeHexDump
      Src: /src/pdns/pdns/protozero-trace.cc:602,1
    - Dst: std::string
      Src: /src/pdns/pdns/protozero-trace.cc:602,1
    - Dst: pdns::trace::TraceID::begin
      Src: /src/pdns/pdns/protozero-trace.cc:602,1
    - Dst: pdns::trace::TraceID::end
      Src: /src/pdns/pdns/protozero-trace.cc:602,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 603
      start: 600
    functionDepth: 0
    functionLinenumber: 600
    functionLinenumberEnd: 603
    functionName: pdns::trace::TraceID::toLogString
    functionSourceFile: /src/pdns/pdns/protozero-trace.cc
    functionUses: 0
    functionsReached:
    - pdns::trace::TraceID::end
    - std::string
    - makeHexDump
    - pdns::trace::TraceID::begin
    linkageType: ''
    returnType: std::string
    signature: std::string TraceID::toLogString() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: at
      Src: /src/pdns/pdns/libssl.cc:61,1
    - Dst: at
      Src: /src/pdns/pdns/libssl.cc:64,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 4
    argNames:
    - mode
    - type
    - file
    - line
    argTypes:
    - int
    - int
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 58
    functionDepth: 0
    functionLinenumber: 58
    functionLinenumberEnd: 66
    functionName: openssl_pthreads_locking_callback
    functionSourceFile: /src/pdns/pdns/libssl.cc
    functionUses: 0
    functionsReached:
    - at
    linkageType: ''
    returnType: void
    signature: void openssl_pthreads_locking_callback(int mode, int type, const char
      *file, int line)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pthread_self
      Src: /src/pdns/pdns/libssl.cc:70,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 68
    functionDepth: 0
    functionLinenumber: 68
    functionLinenumberEnd: 71
    functionName: openssl_pthreads_id_callback
    functionSourceFile: /src/pdns/pdns/libssl.cc
    functionUses: 0
    functionsReached:
    - pthread_self
    linkageType: ''
    returnType: unsigned long
    signature: unsigned long openssl_pthreads_id_callback()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::vector<std::mutex>
      Src: /src/pdns/pdns/libssl.cc:76,1
    - Dst: CRYPTO_num_locks
      Src: /src/pdns/pdns/libssl.cc:76,1
    - Dst: CRYPTO_set_id_callback
      Src: /src/pdns/pdns/libssl.cc:77,1
    - Dst: CRYPTO_set_locking_callback
      Src: /src/pdns/pdns/libssl.cc:78,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 74
    functionDepth: 0
    functionLinenumber: 74
    functionLinenumberEnd: 79
    functionName: openssl_thread_setup
    functionSourceFile: /src/pdns/pdns/libssl.cc
    functionUses: 1
    functionsReached:
    - CRYPTO_set_locking_callback
    - std::vector<std::mutex>
    - CRYPTO_set_id_callback
    - CRYPTO_num_locks
    linkageType: ''
    returnType: void
    signature: void openssl_thread_setup()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CRYPTO_set_locking_callback
      Src: /src/pdns/pdns/libssl.cc:83,1
    - Dst: clear
      Src: /src/pdns/pdns/libssl.cc:84,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 81
    functionDepth: 1
    functionLinenumber: 81
    functionLinenumberEnd: 85
    functionName: openssl_thread_cleanup
    functionSourceFile: /src/pdns/pdns/libssl.cc
    functionUses: 0
    functionsReached:
    - clear
    - CRYPTO_set_locking_callback
    linkageType: ''
    returnType: void
    signature: void openssl_thread_cleanup()
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: fetch_add
      Src: /src/pdns/pdns/libssl.cc:105,1
    - Dst: OPENSSL_init_crypto
      Src: /src/pdns/pdns/libssl.cc:126,1
    - Dst: OPENSSL_init_ssl
      Src: /src/pdns/pdns/libssl.cc:127,1
    - Dst: SSL_load_error_strings
      Src: /src/pdns/pdns/libssl.cc:132,1
    - Dst: OpenSSL_add_ssl_algorithms
      Src: /src/pdns/pdns/libssl.cc:134,1
    - Dst: openssl_thread_setup
      Src: /src/pdns/pdns/libssl.cc:135,1
    - Dst: SSL_CTX_get_ex_new_index
      Src: /src/pdns/pdns/libssl.cc:137,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/libssl.cc:140,1
    - Dst: SSL_CTX_get_ex_new_index
      Src: /src/pdns/pdns/libssl.cc:143,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/libssl.cc:146,1
    - Dst: SSL_CTX_get_ex_new_index
      Src: /src/pdns/pdns/libssl.cc:149,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/libssl.cc:152,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 21
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 103
    functionDepth: 0
    functionLinenumber: 103
    functionLinenumberEnd: 155
    functionName: registerOpenSSLUser
    functionSourceFile: /src/pdns/pdns/libssl.cc
    functionUses: 4
    functionsReached:
    - fetch_add
    - std::runtime_error
    - openssl_thread_setup
    - OpenSSL_add_ssl_algorithms
    - OPENSSL_init_crypto
    - OPENSSL_init_ssl
    - SSL_CTX_get_ex_new_index
    - SSL_load_error_strings
    linkageType: ''
    returnType: void
    signature: void registerOpenSSLUser()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: fetch_sub
      Src: /src/pdns/pdns/libssl.cc:159,1
    - Dst: lock
      Src: /src/pdns/pdns/libssl.cc:161,1
    - Dst: ENGINE_finish
      Src: /src/pdns/pdns/libssl.cc:162,1
    - Dst: get
      Src: /src/pdns/pdns/libssl.cc:162,1
    - Dst: reset
      Src: /src/pdns/pdns/libssl.cc:163,1
    - Dst: lock
      Src: /src/pdns/pdns/libssl.cc:165,1
    - Dst: ERR_free_strings
      Src: /src/pdns/pdns/libssl.cc:168,1
    - Dst: EVP_cleanup
      Src: /src/pdns/pdns/libssl.cc:170,1
    - Dst: CONF_modules_finish
      Src: /src/pdns/pdns/libssl.cc:172,1
    - Dst: CONF_modules_free
      Src: /src/pdns/pdns/libssl.cc:173,1
    - Dst: CONF_modules_unload
      Src: /src/pdns/pdns/libssl.cc:174,1
    - Dst: CRYPTO_cleanup_all_ex_data
      Src: /src/pdns/pdns/libssl.cc:176,1
    - Dst: openssl_thread_cleanup
      Src: /src/pdns/pdns/libssl.cc:177,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 180
      start: 157
    functionDepth: 0
    functionLinenumber: 157
    functionLinenumberEnd: 180
    functionName: unregisterOpenSSLUser
    functionSourceFile: /src/pdns/pdns/libssl.cc
    functionUses: 2
    functionsReached:
    - reset
    - fetch_sub
    - CONF_modules_unload
    - EVP_cleanup
    - get
    - lock
    - CONF_modules_free
    - openssl_thread_cleanup
    - CONF_modules_finish
    - CRYPTO_cleanup_all_ex_data
    - ERR_free_strings
    - ENGINE_finish
    linkageType: ''
    returnType: void
    signature: void unregisterOpenSSLUser()
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: load
      Src: /src/pdns/pdns/libssl.cc:185,1
    - Dst: registerOpenSSLUser
      Src: /src/pdns/pdns/libssl.cc:189,1
    - Dst: lock
      Src: /src/pdns/pdns/libssl.cc:192,1
    - Dst: auto::count
      Src: /src/pdns/pdns/libssl.cc:193,1
    - Dst: std::unique_ptr<OSSL_PROVIDER, decltype(&OSSL_PROVIDER_unload)>
      Src: /src/pdns/pdns/libssl.cc:197,1
    - Dst: OSSL_PROVIDER_load
      Src: /src/pdns/pdns/libssl.cc:197,1
    - Dst: c_str
      Src: /src/pdns/pdns/libssl.cc:197,1
    - Dst: auto::insert
      Src: /src/pdns/pdns/libssl.cc:202,1
    - Dst: std::move
      Src: /src/pdns/pdns/libssl.cc:202,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - ' providerName'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 204
      start: 183
    functionDepth: 1
    functionLinenumber: 183
    functionLinenumberEnd: 204
    functionName: libssl_load_provider
    functionSourceFile: /src/pdns/pdns/libssl.cc
    functionUses: 0
    functionsReached:
    - load
    - std::unique_ptr<OSSL_PROVIDER, decltype(&OSSL_PROVIDER_unload)>
    - OSSL_PROVIDER_load
    - std::move
    - lock
    - registerOpenSSLUser
    - auto::insert
    - c_str
    - auto::count
    linkageType: ''
    returnType: std::pair<bool, std::string>
    signature: std::pair<bool, std::string> libssl_load_provider(const std::string&
      providerName)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: load
      Src: /src/pdns/pdns/libssl.cc:215,1
    - Dst: registerOpenSSLUser
      Src: /src/pdns/pdns/libssl.cc:219,1
    - Dst: lock
      Src: /src/pdns/pdns/libssl.cc:222,1
    - Dst: auto::count
      Src: /src/pdns/pdns/libssl.cc:223,1
    - Dst: std::unique_ptr<ENGINE, decltype(&ENGINE_free)>
      Src: /src/pdns/pdns/libssl.cc:227,1
    - Dst: ENGINE_by_id
      Src: /src/pdns/pdns/libssl.cc:227,1
    - Dst: c_str
      Src: /src/pdns/pdns/libssl.cc:227,1
    - Dst: ENGINE_init
      Src: /src/pdns/pdns/libssl.cc:232,1
    - Dst: auto::get
      Src: /src/pdns/pdns/libssl.cc:232,1
    - Dst: ENGINE_set_default_string
      Src: /src/pdns/pdns/libssl.cc:237,1
    - Dst: auto::get
      Src: /src/pdns/pdns/libssl.cc:237,1
    - Dst: c_str
      Src: /src/pdns/pdns/libssl.cc:237,1
    - Dst: auto::insert
      Src: /src/pdns/pdns/libssl.cc:242,1
    - Dst: std::move
      Src: /src/pdns/pdns/libssl.cc:242,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 22
    argCount: 2
    argNames:
    - ' engineName'
    - ' defaultString'
    argTypes:
    - std::string
    - std::optional<std::string>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 245
      start: 208
    functionDepth: 1
    functionLinenumber: 208
    functionLinenumberEnd: 245
    functionName: libssl_load_engine
    functionSourceFile: /src/pdns/pdns/libssl.cc
    functionUses: 0
    functionsReached:
    - load
    - std::move
    - ENGINE_init
    - auto::get
    - lock
    - registerOpenSSLUser
    - std::unique_ptr<ENGINE, decltype(&ENGINE_free)>
    - auto::insert
    - ENGINE_set_default_string
    - c_str
    - auto::count
    - ENGINE_by_id
    linkageType: ''
    returnType: std::pair<bool, std::string>
    signature: std::pair<bool, std::string> libssl_load_engine([[maybe_unused]] const
      std::string& engineName, [[maybe_unused]] const std::optional<std::string>&
      defaultString)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SSL_get_SSL_CTX
      Src: /src/pdns/pdns/libssl.cc:250,1
    - Dst: SSL_CTX_get_ex_data
      Src: /src/pdns/pdns/libssl.cc:255,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - s
    argTypes:
    - SSL*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 256
      start: 248
    functionDepth: 0
    functionLinenumber: 248
    functionLinenumberEnd: 256
    functionName: libssl_get_ticket_key_callback_data
    functionSourceFile: /src/pdns/pdns/libssl.cc
    functionUses: 2
    functionsReached:
    - SSL_CTX_get_ex_data
    - SSL_get_SSL_CTX
    linkageType: ''
    returnType: void
    signature: void * libssl_get_ticket_key_callback_data(SSL* s)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SSL_CTX_set_ex_data
      Src: /src/pdns/pdns/libssl.cc:260,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ctx
    - data
    argTypes:
    - SSL_CTX*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 261
      start: 258
    functionDepth: 0
    functionLinenumber: 258
    functionLinenumberEnd: 261
    functionName: libssl_set_ticket_key_callback_data
    functionSourceFile: /src/pdns/pdns/libssl.cc
    functionUses: 1
    functionsReached:
    - SSL_CTX_set_ex_data
    linkageType: ''
    returnType: void
    signature: void libssl_set_ticket_key_callback_data(SSL_CTX* ctx, void* data)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: getEncryptionKey
      Src: /src/pdns/pdns/libssl.cc:270,1
    - Dst: auto::encrypt
      Src: /src/pdns/pdns/libssl.cc:275,1
    - Dst: getDecryptionKey
      Src: /src/pdns/pdns/libssl.cc:280,1
    - Dst: auto::decrypt
      Src: /src/pdns/pdns/libssl.cc:286,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 6
    argNames:
    - ' keyring'
    - keyName
    - iv
    - ectx
    - hctx
    - enc
    argTypes:
    - OpenSSLTLSTicketKeysRing
    - unsigned char[]
    - unsigned char*
    - EVP_CIPHER_CTX*
    - HMAC_CTX*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 296
      start: 266
    functionDepth: 0
    functionLinenumber: 266
    functionLinenumberEnd: 296
    functionName: libssl_ticket_key_callback
    functionSourceFile: /src/pdns/pdns/libssl.cc
    functionUses: 1
    functionsReached:
    - auto::decrypt
    - getEncryptionKey
    - auto::encrypt
    - getDecryptionKey
    linkageType: ''
    returnType: int
    signature: int libssl_ticket_key_callback(SSL* /* s */, OpenSSLTLSTicketKeysRing&
      keyring, unsigned char keyName[TLS_TICKETS_KEY_NAME_SIZE], unsigned char* iv,
      EVP_CIPHER_CTX* ectx, HMAC_CTX* hctx, int enc)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SSL_get_servername
      Src: /src/pdns/pdns/libssl.cc:300,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ssl
    argTypes:
    - SSL*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 305
      start: 298
    functionDepth: 0
    functionLinenumber: 298
    functionLinenumberEnd: 305
    functionName: libssl_server_name_callback
    functionSourceFile: /src/pdns/pdns/libssl.cc
    functionUses: 0
    functionsReached:
    - SSL_get_servername
    linkageType: ''
    returnType: int
    signature: int libssl_server_name_callback(SSL* ssl, int* /* alert */, void* /*
      arg */)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: SSL_get_SSL_CTX
      Src: /src/pdns/pdns/libssl.cc:309,1
    - Dst: reinterpret_cast<TLSErrorCounters*>
      Src: /src/pdns/pdns/libssl.cc:314,1
    - Dst: SSL_CTX_get_ex_data
      Src: /src/pdns/pdns/libssl.cc:314,1
    - Dst: ERR_peek_last_error
      Src: /src/pdns/pdns/libssl.cc:320,1
    - Dst: ERR_GET_REASON
      Src: /src/pdns/pdns/libssl.cc:321,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 38
    argCount: 2
    argNames:
    - ssl
    - where
    argTypes:
    - SSL*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 355
      start: 307
    functionDepth: 0
    functionLinenumber: 307
    functionLinenumberEnd: 355
    functionName: libssl_info_callback
    functionSourceFile: /src/pdns/pdns/libssl.cc
    functionUses: 0
    functionsReached:
    - ERR_peek_last_error
    - ERR_GET_REASON
    - reinterpret_cast<TLSErrorCounters*>
    - SSL_CTX_get_ex_data
    - SSL_get_SSL_CTX
    linkageType: ''
    returnType: void
    signature: void libssl_info_callback(const SSL *ssl, int where, int /* ret */)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SSL_CTX_set_ex_data
      Src: /src/pdns/pdns/libssl.cc:359,1
    - Dst: SSL_CTX_set_info_callback
      Src: /src/pdns/pdns/libssl.cc:360,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ' ctx'
    - counters
    argTypes:
    - SSL_CTX
    - TLSErrorCounters*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 361
      start: 357
    functionDepth: 0
    functionLinenumber: 357
    functionLinenumberEnd: 361
    functionName: libssl_set_error_counters_callback
    functionSourceFile: /src/pdns/pdns/libssl.cc
    functionUses: 1
    functionsReached:
    - SSL_CTX_set_info_callback
    - SSL_CTX_set_ex_data
    linkageType: ''
    returnType: void
    signature: void libssl_set_error_counters_callback(SSL_CTX& ctx, TLSErrorCounters*
      counters)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: SSL_get_privatekey
      Src: /src/pdns/pdns/libssl.cc:366,1
    - Dst: find
      Src: /src/pdns/pdns/libssl.cc:372,1
    - Dst: EVP_PKEY_base_id
      Src: /src/pdns/pdns/libssl.cc:372,1
    - Dst: end
      Src: /src/pdns/pdns/libssl.cc:373,1
    - Dst: second::size
      Src: /src/pdns/pdns/libssl.cc:377,1
    - Dst: OPENSSL_malloc
      Src: /src/pdns/pdns/libssl.cc:383,1
    - Dst: memcpy
      Src: /src/pdns/pdns/libssl.cc:388,1
    - Dst: second::data
      Src: /src/pdns/pdns/libssl.cc:388,1
    - Dst: const_cast<char*>
      Src: /src/pdns/pdns/libssl.cc:391,1
    - Dst: second::data
      Src: /src/pdns/pdns/libssl.cc:391,1
    - Dst: SSL_set_tlsext_status_ocsp_resp
      Src: /src/pdns/pdns/libssl.cc:393,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 2
    argNames:
    - ssl
    - ' ocspMap'
    argTypes:
    - SSL*
    - std::map<int, std::string>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 395
      start: 364
    functionDepth: 0
    functionLinenumber: 364
    functionLinenumberEnd: 395
    functionName: libssl_ocsp_stapling_callback
    functionSourceFile: /src/pdns/pdns/libssl.cc
    functionUses: 1
    functionsReached:
    - memcpy
    - const_cast<char*>
    - SSL_set_tlsext_status_ocsp_resp
    - end
    - OPENSSL_malloc
    - EVP_PKEY_base_id
    - SSL_get_privatekey
    - second::data
    - find
    - second::size
    linkageType: ''
    returnType: int
    signature: int libssl_ocsp_stapling_callback(SSL* ssl, const std::map<int, std::string>&
      ocspMap)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: reinterpret_cast<const unsigned char *>
      Src: /src/pdns/pdns/libssl.cc:399,1
    - Dst: data
      Src: /src/pdns/pdns/libssl.cc:399,1
    - Dst: d2i_OCSP_RESPONSE
      Src: /src/pdns/pdns/libssl.cc:400,1
    - Dst: size
      Src: /src/pdns/pdns/libssl.cc:400,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/libssl.cc:402,1
    - Dst: OCSP_response_status
      Src: /src/pdns/pdns/libssl.cc:405,1
    - Dst: std::unique_ptr::get
      Src: /src/pdns/pdns/libssl.cc:405,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/libssl.cc:407,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/libssl.cc:407,1
    - Dst: OCSP_response_get1_basic
      Src: /src/pdns/pdns/libssl.cc:410,1
    - Dst: std::unique_ptr::get
      Src: /src/pdns/pdns/libssl.cc:410,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/libssl.cc:412,1
    - Dst: OCSP_resp_count
      Src: /src/pdns/pdns/libssl.cc:415,1
    - Dst: std::unique_ptr::get
      Src: /src/pdns/pdns/libssl.cc:415,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/libssl.cc:416,1
    - Dst: OCSP_resp_get0
      Src: /src/pdns/pdns/libssl.cc:419,1
    - Dst: std::unique_ptr::get
      Src: /src/pdns/pdns/libssl.cc:419,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/libssl.cc:421,1
    - Dst: OCSP_single_get0_status
      Src: /src/pdns/pdns/libssl.cc:429,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/libssl.cc:431,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/libssl.cc:431,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/libssl.cc:434,1
    - Dst: OCSP_check_validity
      Src: /src/pdns/pdns/libssl.cc:437,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/libssl.cc:439,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 26
    argCount: 1
    argNames:
    - ' response'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 443
      start: 397
    functionDepth: 0
    functionLinenumber: 397
    functionLinenumberEnd: 443
    functionName: libssl_validate_ocsp_response
    functionSourceFile: /src/pdns/pdns/libssl.cc
    functionUses: 0
    functionsReached:
    - reinterpret_cast<const unsigned char *>
    - OCSP_single_get0_status
    - d2i_OCSP_RESPONSE
    - std::to_string
    - std::runtime_error
    - OCSP_response_status
    - size
    - OCSP_resp_get0
    - OCSP_resp_count
    - data
    - OCSP_response_get1_basic
    - std::unique_ptr::get
    - OCSP_check_validity
    linkageType: ''
    returnType: bool
    signature: bool libssl_validate_ocsp_response(const std::string& response)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/libssl.cc:449,1
    - Dst: std::vector<int>::size
      Src: /src/pdns/pdns/libssl.cc:449,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/libssl.cc:450,1
    - Dst: std::ifstream::read
      Src: /src/pdns/pdns/libssl.cc:460,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/libssl.cc:460,1
    - Dst: std::array::size
      Src: /src/pdns/pdns/libssl.cc:460,1
    - Dst: std::ifstream::bad
      Src: /src/pdns/pdns/libssl.cc:461,1
    - Dst: std::ifstream::close
      Src: /src/pdns/pdns/libssl.cc:462,1
    - Dst: push_back
      Src: /src/pdns/pdns/libssl.cc:463,1
    - Dst: std::string::append
      Src: /src/pdns/pdns/libssl.cc:466,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/libssl.cc:466,1
    - Dst: std::ifstream::gcount
      Src: /src/pdns/pdns/libssl.cc:466,1
    - Dst: std::ifstream::close
      Src: /src/pdns/pdns/libssl.cc:468,1
    - Dst: libssl_validate_ocsp_response
      Src: /src/pdns/pdns/libssl.cc:471,1
    - Dst: std::map::insert
      Src: /src/pdns/pdns/libssl.cc:472,1
    - Dst: std::vector<int>::at
      Src: /src/pdns/pdns/libssl.cc:472,1
    - Dst: std::move
      Src: /src/pdns/pdns/libssl.cc:472,1
    - Dst: push_back
      Src: /src/pdns/pdns/libssl.cc:475,1
    - Dst: what
      Src: /src/pdns/pdns/libssl.cc:475,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 23
    argCount: 3
    argNames:
    - ' ocspFiles'
    - keyTypes
    - ' warnings'
    argTypes:
    - std::vector<std::string>
    - std::vector<int>
    - std::vector<std::string>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 481
      start: 445
    functionDepth: 1
    functionLinenumber: 445
    functionLinenumberEnd: 481
    functionName: libssl_load_ocsp_responses
    functionSourceFile: /src/pdns/pdns/libssl.cc
    functionUses: 0
    functionsReached:
    - std::move
    - std::vector<int>::size
    - std::ifstream::close
    - std::runtime_error
    - push_back
    - std::string::append
    - what
    - std::map::insert
    - size
    - libssl_validate_ocsp_response
    - std::ifstream::gcount
    - std::ifstream::read
    - std::vector<int>::at
    - std::array::data
    - std::ifstream::bad
    - std::array::size
    linkageType: ''
    returnType: std::map<int, std::string>
    signature: std::map<int, std::string> libssl_load_ocsp_responses(const std::vector<std::string>&
      ocspFiles, std::vector<int> keyTypes, std::vector<std::string>& warnings)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: EVP_sha256
      Src: /src/pdns/pdns/libssl.cc:486,1
    - Dst: pdns::UniqueFilePtr
      Src: /src/pdns/pdns/libssl.cc:488,1
    - Dst: fopen
      Src: /src/pdns/pdns/libssl.cc:488,1
    - Dst: c_str
      Src: /src/pdns/pdns/libssl.cc:488,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/libssl.cc:490,1
    - Dst: std::unique_ptr<X509, void(*)(X509*)>
      Src: /src/pdns/pdns/libssl.cc:492,1
    - Dst: PEM_read_X509_AUX
      Src: /src/pdns/pdns/libssl.cc:492,1
    - Dst: auto::get
      Src: /src/pdns/pdns/libssl.cc:492,1
    - Dst: pdns::UniqueFilePtr
      Src: /src/pdns/pdns/libssl.cc:494,1
    - Dst: fopen
      Src: /src/pdns/pdns/libssl.cc:494,1
    - Dst: c_str
      Src: /src/pdns/pdns/libssl.cc:494,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/libssl.cc:496,1
    - Dst: std::unique_ptr<X509, void(*)(X509*)>
      Src: /src/pdns/pdns/libssl.cc:498,1
    - Dst: PEM_read_X509_AUX
      Src: /src/pdns/pdns/libssl.cc:498,1
    - Dst: auto::get
      Src: /src/pdns/pdns/libssl.cc:498,1
    - Dst: pdns::UniqueFilePtr
      Src: /src/pdns/pdns/libssl.cc:499,1
    - Dst: fopen
      Src: /src/pdns/pdns/libssl.cc:499,1
    - Dst: c_str
      Src: /src/pdns/pdns/libssl.cc:499,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/libssl.cc:501,1
    - Dst: std::unique_ptr<EVP_PKEY, void(*)(EVP_PKEY*)>
      Src: /src/pdns/pdns/libssl.cc:503,1
    - Dst: PEM_read_PrivateKey
      Src: /src/pdns/pdns/libssl.cc:503,1
    - Dst: auto::get
      Src: /src/pdns/pdns/libssl.cc:503,1
    - Dst: auto::reset
      Src: /src/pdns/pdns/libssl.cc:504,1
    - Dst: std::unique_ptr<OCSP_BASICRESP, void(*)(OCSP_BASICRESP*)>
      Src: /src/pdns/pdns/libssl.cc:506,1
    - Dst: OCSP_BASICRESP_new
      Src: /src/pdns/pdns/libssl.cc:506,1
    - Dst: std::unique_ptr<ASN1_TIME, void(*)(ASN1_TIME*)>
      Src: /src/pdns/pdns/libssl.cc:507,1
    - Dst: X509_gmtime_adj
      Src: /src/pdns/pdns/libssl.cc:507,1
    - Dst: std::unique_ptr<ASN1_TIME, void(*)(ASN1_TIME*)>
      Src: /src/pdns/pdns/libssl.cc:508,1
    - Dst: X509_time_adj_ex
      Src: /src/pdns/pdns/libssl.cc:508,1
    - Dst: std::unique_ptr<OCSP_CERTID, void(*)(OCSP_CERTID*)>
      Src: /src/pdns/pdns/libssl.cc:510,1
    - Dst: OCSP_cert_to_id
      Src: /src/pdns/pdns/libssl.cc:510,1
    - Dst: auto::get
      Src: /src/pdns/pdns/libssl.cc:510,1
    - Dst: auto::get
      Src: /src/pdns/pdns/libssl.cc:510,1
    - Dst: OCSP_basic_add1_status
      Src: /src/pdns/pdns/libssl.cc:511,1
    - Dst: auto::get
      Src: /src/pdns/pdns/libssl.cc:511,1
    - Dst: auto::get
      Src: /src/pdns/pdns/libssl.cc:511,1
    - Dst: auto::get
      Src: /src/pdns/pdns/libssl.cc:511,1
    - Dst: auto::get
      Src: /src/pdns/pdns/libssl.cc:511,1
    - Dst: OCSP_basic_sign
      Src: /src/pdns/pdns/libssl.cc:513,1
    - Dst: auto::get
      Src: /src/pdns/pdns/libssl.cc:513,1
    - Dst: auto::get
      Src: /src/pdns/pdns/libssl.cc:513,1
    - Dst: auto::get
      Src: /src/pdns/pdns/libssl.cc:513,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/libssl.cc:514,1
    - Dst: std::unique_ptr<OCSP_RESPONSE, void(*)(OCSP_RESPONSE*)>
      Src: /src/pdns/pdns/libssl.cc:517,1
    - Dst: OCSP_response_create
      Src: /src/pdns/pdns/libssl.cc:517,1
    - Dst: auto::get
      Src: /src/pdns/pdns/libssl.cc:517,1
    - Dst: std::unique_ptr<BIO, void(*)(BIO*)>
      Src: /src/pdns/pdns/libssl.cc:518,1
    - Dst: BIO_new_file
      Src: /src/pdns/pdns/libssl.cc:518,1
    - Dst: c_str
      Src: /src/pdns/pdns/libssl.cc:518,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/libssl.cc:520,1
    - Dst: ASN1_i2d_bio
      Src: /src/pdns/pdns/libssl.cc:524,1
    - Dst: auto::get
      Src: /src/pdns/pdns/libssl.cc:524,1
    - Dst: auto::get
      Src: /src/pdns/pdns/libssl.cc:524,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 22
    argCount: 6
    argNames:
    - ' certFile'
    - ' caCert'
    - ' caKey'
    - ' outFile'
    - ndays
    - nmin
    argTypes:
    - std::string
    - std::string
    - std::string
    - std::string
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 527
      start: 484
    functionDepth: 0
    functionLinenumber: 484
    functionLinenumberEnd: 527
    functionName: libssl_generate_ocsp_response
    functionSourceFile: /src/pdns/pdns/libssl.cc
    functionUses: 0
    functionsReached:
    - OCSP_response_create
    - std::unique_ptr<X509, void(*)(X509*)>
    - fopen
    - X509_time_adj_ex
    - std::unique_ptr<OCSP_RESPONSE, void(*)(OCSP_RESPONSE*)>
    - std::unique_ptr<BIO, void(*)(BIO*)>
    - pdns::UniqueFilePtr
    - OCSP_cert_to_id
    - OCSP_BASICRESP_new
    - std::unique_ptr<ASN1_TIME, void(*)(ASN1_TIME*)>
    - c_str
    - std::unique_ptr<OCSP_CERTID, void(*)(OCSP_CERTID*)>
    - ASN1_i2d_bio
    - auto::get
    - std::runtime_error
    - OCSP_basic_add1_status
    - PEM_read_PrivateKey
    - EVP_sha256
    - PEM_read_X509_AUX
    - BIO_new_file
    - std::unique_ptr<OCSP_BASICRESP, void(*)(OCSP_BASICRESP*)>
    - auto::reset
    - OCSP_basic_sign
    - std::unique_ptr<EVP_PKEY, void(*)(EVP_PKEY*)>
    - X509_gmtime_adj
    linkageType: ''
    returnType: bool
    signature: bool libssl_generate_ocsp_response(const std::string& certFile, const
      std::string& caCert, const std::string& caKey, const std::string& outFile, int
      ndays, int nmin)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: SSL_CTX_get0_privatekey
      Src: /src/pdns/pdns/libssl.cc:534,1
    - Dst: std::unique_ptr<SSL, void(*)(SSL*)>
      Src: /src/pdns/pdns/libssl.cc:536,1
    - Dst: SSL_new
      Src: /src/pdns/pdns/libssl.cc:536,1
    - Dst: SSL_get_privatekey
      Src: /src/pdns/pdns/libssl.cc:540,1
    - Dst: auto::get
      Src: /src/pdns/pdns/libssl.cc:540,1
    - Dst: EVP_PKEY_base_id
      Src: /src/pdns/pdns/libssl.cc:547,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - ' ctx'
    argTypes:
    - SSL_CTX
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 548
      start: 531
    functionDepth: 0
    functionLinenumber: 531
    functionLinenumberEnd: 548
    functionName: libssl_get_last_key_type
    functionSourceFile: /src/pdns/pdns/libssl.cc
    functionUses: 0
    functionsReached:
    - auto::get
    - SSL_new
    - std::unique_ptr<SSL, void(*)(SSL*)>
    - EVP_PKEY_base_id
    - SSL_get_privatekey
    - SSL_CTX_get0_privatekey
    linkageType: ''
    returnType: int
    signature: int libssl_get_last_key_type(SSL_CTX& ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sk_GENERAL_NAME_pop_free
      Src: /src/pdns/pdns/libssl.cc:553,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ptr
    argTypes:
    - STACK_OF*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 554
      start: 552
    functionDepth: 0
    functionLinenumber: 552
    functionLinenumberEnd: 554
    functionName: operator()(STACK_OF(GENERAL_NAME)* ptr) const noexcept
    functionSourceFile: /src/pdns/pdns/libssl.cc
    functionUses: 0
    functionsReached:
    - sk_GENERAL_NAME_pop_free
    linkageType: ''
    returnType: void
    signature: void operator()(STACK_OF(GENERAL_NAME)* ptr) const noexcept
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: std::unique_ptr<STACK_OF(GENERAL_NAME), StackOfNamesDeleter>
      Src: /src/pdns/pdns/libssl.cc:567,1
    - Dst: STACK_OF
      Src: /src/pdns/pdns/libssl.cc:567,1
    - Dst: static_cast<STACK_OF(GENERAL_NAME)*>
      Src: /src/pdns/pdns/libssl.cc:567,1
    - Dst: X509_get_ext_d2i
      Src: /src/pdns/pdns/libssl.cc:567,1
    - Dst: sk_GENERAL_NAME_num
      Src: /src/pdns/pdns/libssl.cc:569,1
    - Dst: auto::get
      Src: /src/pdns/pdns/libssl.cc:569,1
    - Dst: sk_GENERAL_NAME_value
      Src: /src/pdns/pdns/libssl.cc:570,1
    - Dst: auto::get
      Src: /src/pdns/pdns/libssl.cc:570,1
    - Dst: ASN1_STRING_to_UTF8
      Src: /src/pdns/pdns/libssl.cc:576,1
    - Dst: std::unordered_set::emplace
      Src: /src/pdns/pdns/libssl.cc:580,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/libssl.cc:580,1
    - Dst: OPENSSL_free
      Src: /src/pdns/pdns/libssl.cc:581,1
    - Dst: X509_get_subject_name
      Src: /src/pdns/pdns/libssl.cc:585,1
    - Dst: X509_NAME_get_index_by_NID
      Src: /src/pdns/pdns/libssl.cc:588,1
    - Dst: X509_NAME_get_entry
      Src: /src/pdns/pdns/libssl.cc:589,1
    - Dst: X509_NAME_ENTRY_get_data
      Src: /src/pdns/pdns/libssl.cc:590,1
    - Dst: ASN1_STRING_to_UTF8
      Src: /src/pdns/pdns/libssl.cc:592,1
    - Dst: std::unordered_set::emplace
      Src: /src/pdns/pdns/libssl.cc:596,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/libssl.cc:596,1
    - Dst: OPENSSL_free
      Src: /src/pdns/pdns/libssl.cc:597,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 23
    argCount: 1
    argNames:
    - certificate
    argTypes:
    - X509*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 602
      start: 564
    functionDepth: 0
    functionLinenumber: 564
    functionLinenumberEnd: 602
    functionName: get_names_from_certificate
    functionSourceFile: /src/pdns/pdns/libssl.cc
    functionUses: 0
    functionsReached:
    - sk_GENERAL_NAME_value
    - sk_GENERAL_NAME_num
    - ASN1_STRING_to_UTF8
    - auto::get
    - std::unordered_set::emplace
    - OPENSSL_free
    - X509_get_subject_name
    - X509_NAME_get_entry
    - std::unique_ptr<STACK_OF(GENERAL_NAME), StackOfNamesDeleter>
    - reinterpret_cast<const char*>
    - X509_NAME_get_index_by_NID
    - static_cast<STACK_OF(GENERAL_NAME)*>
    - STACK_OF
    - X509_get_ext_d2i
    - X509_NAME_ENTRY_get_data
    linkageType: ''
    returnType: std::unordered_set<std::string>
    signature: std::unordered_set<std::string> get_names_from_certificate(const X509*
      certificate)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SSL_CTX_get0_certificate
      Src: /src/pdns/pdns/libssl.cc:606,1
    - Dst: get_names_from_certificate
      Src: /src/pdns/pdns/libssl.cc:611,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ' ctx'
    argTypes:
    - SSL_CTX
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 612
      start: 604
    functionDepth: 0
    functionLinenumber: 604
    functionLinenumberEnd: 612
    functionName: get_names_from_last_certificate
    functionSourceFile: /src/pdns/pdns/libssl.cc
    functionUses: 0
    functionsReached:
    - SSL_CTX_get0_certificate
    - get_names_from_certificate
    linkageType: ''
    returnType: std::unordered_set<std::string>
    signature: std::unordered_set<std::string> get_names_from_last_certificate(const
      SSL_CTX& ctx)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/libssl.cc:628,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 1
    argNames:
    - ' str'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 629
      start: 614
    functionDepth: 0
    functionLinenumber: 614
    functionLinenumberEnd: 629
    functionName: libssl_tls_version_from_string
    functionSourceFile: /src/pdns/pdns/libssl.cc
    functionUses: 0
    functionsReached:
    - std::runtime_error
    linkageType: ''
    returnType: LibsslTLSVersion
    signature: LibsslTLSVersion libssl_tls_version_from_string(const std::string&
      str)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::map::find
      Src: /src/pdns/pdns/libssl.cc:640,1
    - Dst: std::map::end
      Src: /src/pdns/pdns/libssl.cc:641,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/libssl.cc:642,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/libssl.cc:642,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - version
    argTypes:
    - LibsslTLSVersion
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 645
      start: 631
    functionDepth: 0
    functionLinenumber: 631
    functionLinenumberEnd: 645
    functionName: libssl_tls_version_to_string
    functionSourceFile: /src/pdns/pdns/libssl.cc
    functionUses: 0
    functionsReached:
    - std::map::find
    - std::map::end
    - std::to_string
    - std::runtime_error
    linkageType: ''
    returnType: std::string
    signature: std::string & libssl_tls_version_to_string(LibsslTLSVersion version)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: SSL_CTX_set_min_proto_version
      Src: /src/pdns/pdns/libssl.cc:674,1
    - Dst: SSL_CTX_get_options
      Src: /src/pdns/pdns/libssl.cc:696,1
    - Dst: SSL_CTX_set_options
      Src: /src/pdns/pdns/libssl.cc:697,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 39
    argCount: 2
    argNames:
    - ' ctx'
    - version
    argTypes:
    - SSL_CTX
    - LibsslTLSVersion
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 700
      start: 647
    functionDepth: 0
    functionLinenumber: 647
    functionLinenumberEnd: 700
    functionName: libssl_set_min_tls_version
    functionSourceFile: /src/pdns/pdns/libssl.cc
    functionUses: 0
    functionsReached:
    - SSL_CTX_set_options
    - SSL_CTX_get_options
    - SSL_CTX_set_min_proto_version
    linkageType: ''
    returnType: bool
    signature: bool libssl_set_min_tls_version(SSL_CTX& ctx, LibsslTLSVersion version)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: write_lock
      Src: /src/pdns/pdns/libssl.cc:704,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - capacity
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 705
      start: 702
    functionDepth: 0
    functionLinenumber: 702
    functionLinenumberEnd: 705
    functionName: OpenSSLTLSTicketKeysRing::OpenSSLTLSTicketKeysRing
    functionSourceFile: /src/pdns/pdns/libssl.cc
    functionUses: 0
    functionsReached:
    - write_lock
    linkageType: ''
    returnType: void
    signature: void OpenSSLTLSTicketKeysRing::OpenSSLTLSTicketKeysRing(size_t capacity)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 707
      start: 707
    functionDepth: 0
    functionLinenumber: 707
    functionLinenumberEnd: 707
    functionName: OpenSSLTLSTicketKeysRing::~OpenSSLTLSTicketKeysRing()
    functionSourceFile: /src/pdns/pdns/libssl.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void OpenSSLTLSTicketKeysRing::~OpenSSLTLSTicketKeysRing()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: write_lock
      Src: /src/pdns/pdns/libssl.cc:711,1
    - Dst: std::move
      Src: /src/pdns/pdns/libssl.cc:711,1
    - Dst: TLSCtx::hasTicketsKeyAddedHook
      Src: /src/pdns/pdns/libssl.cc:712,1
    - Dst: read_lock
      Src: /src/pdns/pdns/libssl.cc:713,1
    - Dst: auto::content
      Src: /src/pdns/pdns/libssl.cc:714,1
    - Dst: TLSCtx::getTicketsKeyAddedHook
      Src: /src/pdns/pdns/libssl.cc:715,1
    - Dst: OPENSSL_cleanse
      Src: /src/pdns/pdns/libssl.cc:717,1
    - Dst: auto::data
      Src: /src/pdns/pdns/libssl.cc:717,1
    - Dst: auto::size
      Src: /src/pdns/pdns/libssl.cc:717,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - ' newKey'
    argTypes:
    - std::shared_ptr<OpenSSLTLSTicketKey>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 719
      start: 709
    functionDepth: 0
    functionLinenumber: 709
    functionLinenumberEnd: 719
    functionName: OpenSSLTLSTicketKeysRing::addKey
    functionSourceFile: /src/pdns/pdns/libssl.cc
    functionUses: 0
    functionsReached:
    - std::move
    - TLSCtx::getTicketsKeyAddedHook
    - auto::content
    - read_lock
    - auto::data
    - TLSCtx::hasTicketsKeyAddedHook
    - write_lock
    - OPENSSL_cleanse
    - auto::size
    linkageType: ''
    returnType: void
    signature: void OpenSSLTLSTicketKeysRing::addKey(std::shared_ptr<OpenSSLTLSTicketKey>&&
      newKey)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: read_lock
      Src: /src/pdns/pdns/libssl.cc:723,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 724
      start: 721
    functionDepth: 0
    functionLinenumber: 721
    functionLinenumberEnd: 724
    functionName: OpenSSLTLSTicketKeysRing::getEncryptionKey
    functionSourceFile: /src/pdns/pdns/libssl.cc
    functionUses: 0
    functionsReached:
    - read_lock
    linkageType: ''
    returnType: std::shared_ptr<OpenSSLTLSTicketKey>
    signature: std::shared_ptr<OpenSSLTLSTicketKey> OpenSSLTLSTicketKeysRing::getEncryptionKey()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: read_lock
      Src: /src/pdns/pdns/libssl.cc:728,1
    - Dst: nameMatches
      Src: /src/pdns/pdns/libssl.cc:730,1
    - Dst: auto::front
      Src: /src/pdns/pdns/libssl.cc:731,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - name
    - ' activeKey'
    argTypes:
    - unsigned char[]
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 736
      start: 726
    functionDepth: 0
    functionLinenumber: 726
    functionLinenumberEnd: 736
    functionName: OpenSSLTLSTicketKeysRing::getDecryptionKey
    functionSourceFile: /src/pdns/pdns/libssl.cc
    functionUses: 0
    functionsReached:
    - nameMatches
    - read_lock
    - auto::front
    linkageType: ''
    returnType: std::shared_ptr<OpenSSLTLSTicketKey>
    signature: std::shared_ptr<OpenSSLTLSTicketKey> OpenSSLTLSTicketKeysRing::getDecryptionKey(unsigned
      char name[TLS_TICKETS_KEY_NAME_SIZE], bool& activeKey)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: read_lock
      Src: /src/pdns/pdns/libssl.cc:740,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 741
      start: 738
    functionDepth: 0
    functionLinenumber: 738
    functionLinenumberEnd: 741
    functionName: OpenSSLTLSTicketKeysRing::getKeysCount
    functionSourceFile: /src/pdns/pdns/libssl.cc
    functionUses: 0
    functionsReached:
    - read_lock
    linkageType: ''
    returnType: size_t
    signature: size_t OpenSSLTLSTicketKeysRing::getKeysCount()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<OpenSSLTLSTicketKey>
      Src: /src/pdns/pdns/libssl.cc:749,1
    - Dst: OpenSSLTLSTicketKeysRing::addKey
      Src: /src/pdns/pdns/libssl.cc:750,1
    - Dst: std::move
      Src: /src/pdns/pdns/libssl.cc:750,1
    - Dst: std::ifstream::fail
      Src: /src/pdns/pdns/libssl.cc:753,1
    - Dst: std::ifstream::close
      Src: /src/pdns/pdns/libssl.cc:762,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 1
    argNames:
    - ' keyFile'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 763
      start: 743
    functionDepth: 0
    functionLinenumber: 743
    functionLinenumberEnd: 763
    functionName: OpenSSLTLSTicketKeysRing::loadTicketsKeys
    functionSourceFile: /src/pdns/pdns/libssl.cc
    functionUses: 0
    functionsReached:
    - std::move
    - std::ifstream::close
    - std::make_shared<OpenSSLTLSTicketKey>
    - std::ifstream::fail
    - OpenSSLTLSTicketKeysRing::addKey
    linkageType: ''
    returnType: void
    signature: void OpenSSLTLSTicketKeysRing::loadTicketsKeys(const std::string& keyFile)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<OpenSSLTLSTicketKey>
      Src: /src/pdns/pdns/libssl.cc:769,1
    - Dst: OpenSSLTLSTicketKeysRing::addKey
      Src: /src/pdns/pdns/libssl.cc:770,1
    - Dst: std::move
      Src: /src/pdns/pdns/libssl.cc:770,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - ' key'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 779
      start: 765
    functionDepth: 0
    functionLinenumber: 765
    functionLinenumberEnd: 779
    functionName: OpenSSLTLSTicketKeysRing::loadTicketsKey
    functionSourceFile: /src/pdns/pdns/libssl.cc
    functionUses: 0
    functionsReached:
    - std::move
    - OpenSSLTLSTicketKeysRing::addKey
    - std::make_shared<OpenSSLTLSTicketKey>
    linkageType: ''
    returnType: void
    signature: void OpenSSLTLSTicketKeysRing::loadTicketsKey(const std::string& key)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<OpenSSLTLSTicketKey>
      Src: /src/pdns/pdns/libssl.cc:783,1
    - Dst: OpenSSLTLSTicketKeysRing::addKey
      Src: /src/pdns/pdns/libssl.cc:784,1
    - Dst: std::move
      Src: /src/pdns/pdns/libssl.cc:784,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 785
      start: 781
    functionDepth: 0
    functionLinenumber: 781
    functionLinenumberEnd: 785
    functionName: OpenSSLTLSTicketKeysRing::rotateTicketsKey
    functionSourceFile: /src/pdns/pdns/libssl.cc
    functionUses: 0
    functionsReached:
    - std::move
    - OpenSSLTLSTicketKeysRing::addKey
    - std::make_shared<OpenSSLTLSTicketKey>
    linkageType: ''
    returnType: void
    signature: void OpenSSLTLSTicketKeysRing::rotateTicketsKey(time_t /* now */)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: RAND_bytes
      Src: /src/pdns/pdns/libssl.cc:789,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/libssl.cc:790,1
    - Dst: RAND_bytes
      Src: /src/pdns/pdns/libssl.cc:793,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/libssl.cc:794,1
    - Dst: RAND_bytes
      Src: /src/pdns/pdns/libssl.cc:797,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/libssl.cc:798,1
    - Dst: sodium_mlock
      Src: /src/pdns/pdns/libssl.cc:801,1
    - Dst: sodium_mlock
      Src: /src/pdns/pdns/libssl.cc:802,1
    - Dst: sodium_mlock
      Src: /src/pdns/pdns/libssl.cc:803,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 805
      start: 787
    functionDepth: 0
    functionLinenumber: 787
    functionLinenumberEnd: 805
    functionName: OpenSSLTLSTicketKey::OpenSSLTLSTicketKey
    functionSourceFile: /src/pdns/pdns/libssl.cc
    functionUses: 0
    functionsReached:
    - RAND_bytes
    - sodium_mlock
    - std::runtime_error
    linkageType: ''
    returnType: void
    signature: void OpenSSLTLSTicketKey::OpenSSLTLSTicketKey()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: read
      Src: /src/pdns/pdns/libssl.cc:809,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/libssl.cc:809,1
    - Dst: read
      Src: /src/pdns/pdns/libssl.cc:810,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/libssl.cc:810,1
    - Dst: read
      Src: /src/pdns/pdns/libssl.cc:811,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/libssl.cc:811,1
    - Dst: fail
      Src: /src/pdns/pdns/libssl.cc:813,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/libssl.cc:814,1
    - Dst: sodium_mlock
      Src: /src/pdns/pdns/libssl.cc:817,1
    - Dst: sodium_mlock
      Src: /src/pdns/pdns/libssl.cc:818,1
    - Dst: sodium_mlock
      Src: /src/pdns/pdns/libssl.cc:819,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - ' file'
    argTypes:
    - std::ifstream
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 821
      start: 807
    functionDepth: 0
    functionLinenumber: 807
    functionLinenumberEnd: 821
    functionName: OpenSSLTLSTicketKey::OpenSSLTLSTicketKey
    functionSourceFile: /src/pdns/pdns/libssl.cc
    functionUses: 0
    functionsReached:
    - reinterpret_cast<char*>
    - read
    - std::runtime_error
    - sodium_mlock
    - fail
    linkageType: ''
    returnType: void
    signature: void OpenSSLTLSTicketKey::OpenSSLTLSTicketKey(std::ifstream& file)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/libssl.cc:825,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/libssl.cc:826,1
    - Dst: memcpy
      Src: /src/pdns/pdns/libssl.cc:829,1
    - Dst: at
      Src: /src/pdns/pdns/libssl.cc:829,1
    - Dst: memcpy
      Src: /src/pdns/pdns/libssl.cc:831,1
    - Dst: at
      Src: /src/pdns/pdns/libssl.cc:831,1
    - Dst: memcpy
      Src: /src/pdns/pdns/libssl.cc:833,1
    - Dst: at
      Src: /src/pdns/pdns/libssl.cc:833,1
    - Dst: sodium_mlock
      Src: /src/pdns/pdns/libssl.cc:836,1
    - Dst: sodium_mlock
      Src: /src/pdns/pdns/libssl.cc:837,1
    - Dst: sodium_mlock
      Src: /src/pdns/pdns/libssl.cc:838,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 1
    argNames:
    - ' key'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 840
      start: 823
    functionDepth: 0
    functionLinenumber: 823
    functionLinenumberEnd: 840
    functionName: OpenSSLTLSTicketKey::OpenSSLTLSTicketKey
    functionSourceFile: /src/pdns/pdns/libssl.cc
    functionUses: 0
    functionsReached:
    - memcpy
    - std::runtime_error
    - sodium_mlock
    - size
    - at
    linkageType: ''
    returnType: void
    signature: void OpenSSLTLSTicketKey::OpenSSLTLSTicketKey(const std::string& key)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sodium_munlock
      Src: /src/pdns/pdns/libssl.cc:845,1
    - Dst: sodium_munlock
      Src: /src/pdns/pdns/libssl.cc:846,1
    - Dst: sodium_munlock
      Src: /src/pdns/pdns/libssl.cc:847,1
    - Dst: OPENSSL_cleanse
      Src: /src/pdns/pdns/libssl.cc:849,1
    - Dst: OPENSSL_cleanse
      Src: /src/pdns/pdns/libssl.cc:850,1
    - Dst: OPENSSL_cleanse
      Src: /src/pdns/pdns/libssl.cc:851,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 853
      start: 842
    functionDepth: 0
    functionLinenumber: 842
    functionLinenumberEnd: 853
    functionName: OpenSSLTLSTicketKey::~OpenSSLTLSTicketKey()
    functionSourceFile: /src/pdns/pdns/libssl.cc
    functionUses: 0
    functionsReached:
    - OPENSSL_cleanse
    - sodium_munlock
    linkageType: ''
    returnType: void
    signature: void OpenSSLTLSTicketKey::~OpenSSLTLSTicketKey()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/pdns/pdns/libssl.cc:857,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - name
    argTypes:
    - unsigned char[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 858
      start: 855
    functionDepth: 0
    functionLinenumber: 855
    functionLinenumberEnd: 858
    functionName: OpenSSLTLSTicketKey::nameMatches
    functionSourceFile: /src/pdns/pdns/libssl.cc
    functionUses: 0
    functionsReached:
    - memcmp
    linkageType: ''
    returnType: bool
    signature: bool OpenSSLTLSTicketKey::nameMatches(const unsigned char name[TLS_TICKETS_KEY_NAME_SIZE])
      const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::string::reserve
      Src: /src/pdns/pdns/libssl.cc:863,1
    - Dst: std::string::append
      Src: /src/pdns/pdns/libssl.cc:865,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/libssl.cc:865,1
    - Dst: std::string::append
      Src: /src/pdns/pdns/libssl.cc:866,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/libssl.cc:866,1
    - Dst: std::string::append
      Src: /src/pdns/pdns/libssl.cc:867,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/libssl.cc:867,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 871
      start: 860
    functionDepth: 0
    functionLinenumber: 860
    functionLinenumberEnd: 871
    functionName: OpenSSLTLSTicketKey::content
    functionSourceFile: /src/pdns/pdns/libssl.cc
    functionUses: 0
    functionsReached:
    - reinterpret_cast<const char*>
    - std::string::append
    - std::string::reserve
    linkageType: ''
    returnType: std::string
    signature: std::string OpenSSLTLSTicketKey::content() const
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/pdns/pdns/libssl.cc:883,1
    - Dst: RAND_bytes
      Src: /src/pdns/pdns/libssl.cc:885,1
    - Dst: EVP_EncryptInit_ex
      Src: /src/pdns/pdns/libssl.cc:889,1
    - Dst: TLS_TICKETS_CIPHER_ALGO
      Src: /src/pdns/pdns/libssl.cc:889,1
    - Dst: ParamsBuilder
      Src: /src/pdns/pdns/libssl.cc:897,1
    - Dst: OSSL_PARAM_BLD_new
      Src: /src/pdns/pdns/libssl.cc:897,1
    - Dst: OSSL_PARAM_BLD_push_utf8_string
      Src: /src/pdns/pdns/libssl.cc:902,1
    - Dst: auto::get
      Src: /src/pdns/pdns/libssl.cc:902,1
    - Dst: c_str
      Src: /src/pdns/pdns/libssl.cc:902,1
    - Dst: size
      Src: /src/pdns/pdns/libssl.cc:902,1
    - Dst: Params
      Src: /src/pdns/pdns/libssl.cc:906,1
    - Dst: OSSL_PARAM_BLD_to_param
      Src: /src/pdns/pdns/libssl.cc:906,1
    - Dst: auto::get
      Src: /src/pdns/pdns/libssl.cc:906,1
    - Dst: EVP_MAC_CTX_set_params
      Src: /src/pdns/pdns/libssl.cc:911,1
    - Dst: auto::get
      Src: /src/pdns/pdns/libssl.cc:911,1
    - Dst: EVP_MAC_init
      Src: /src/pdns/pdns/libssl.cc:915,1
    - Dst: HMAC_Init_ex
      Src: /src/pdns/pdns/libssl.cc:919,1
    - Dst: TLS_TICKETS_MAC_ALGO
      Src: /src/pdns/pdns/libssl.cc:919,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 27
    argCount: 4
    argNames:
    - keyName
    - iv
    - ectx
    - hctx
    argTypes:
    - unsigned char[]
    - unsigned char*
    - EVP_CIPHER_CTX*
    - HMAC_CTX*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 925
      start: 880
    functionDepth: 0
    functionLinenumber: 880
    functionLinenumberEnd: 925
    functionName: OpenSSLTLSTicketKey::encrypt
    functionSourceFile: /src/pdns/pdns/libssl.cc
    functionUses: 0
    functionsReached:
    - memcpy
    - OSSL_PARAM_BLD_new
    - RAND_bytes
    - auto::get
    - c_str
    - OSSL_PARAM_BLD_to_param
    - Params
    - EVP_MAC_init
    - TLS_TICKETS_MAC_ALGO
    - size
    - HMAC_Init_ex
    - EVP_EncryptInit_ex
    - TLS_TICKETS_CIPHER_ALGO
    - OSSL_PARAM_BLD_push_utf8_string
    - ParamsBuilder
    - EVP_MAC_CTX_set_params
    linkageType: ''
    returnType: int
    signature: int OpenSSLTLSTicketKey::encrypt(unsigned char keyName[TLS_TICKETS_KEY_NAME_SIZE],
      unsigned char* iv, EVP_CIPHER_CTX* ectx, HMAC_CTX* hctx) const
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: ParamsBuilder
      Src: /src/pdns/pdns/libssl.cc:937,1
    - Dst: OSSL_PARAM_BLD_new
      Src: /src/pdns/pdns/libssl.cc:937,1
    - Dst: OSSL_PARAM_BLD_push_utf8_string
      Src: /src/pdns/pdns/libssl.cc:942,1
    - Dst: auto::get
      Src: /src/pdns/pdns/libssl.cc:942,1
    - Dst: c_str
      Src: /src/pdns/pdns/libssl.cc:942,1
    - Dst: size
      Src: /src/pdns/pdns/libssl.cc:942,1
    - Dst: Params
      Src: /src/pdns/pdns/libssl.cc:946,1
    - Dst: OSSL_PARAM_BLD_to_param
      Src: /src/pdns/pdns/libssl.cc:946,1
    - Dst: auto::get
      Src: /src/pdns/pdns/libssl.cc:946,1
    - Dst: EVP_MAC_CTX_set_params
      Src: /src/pdns/pdns/libssl.cc:951,1
    - Dst: auto::get
      Src: /src/pdns/pdns/libssl.cc:951,1
    - Dst: EVP_MAC_init
      Src: /src/pdns/pdns/libssl.cc:955,1
    - Dst: HMAC_Init_ex
      Src: /src/pdns/pdns/libssl.cc:959,1
    - Dst: TLS_TICKETS_MAC_ALGO
      Src: /src/pdns/pdns/libssl.cc:959,1
    - Dst: EVP_DecryptInit_ex
      Src: /src/pdns/pdns/libssl.cc:964,1
    - Dst: TLS_TICKETS_CIPHER_ALGO
      Src: /src/pdns/pdns/libssl.cc:964,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 23
    argCount: 3
    argNames:
    - iv
    - ectx
    - hctx
    argTypes:
    - unsigned char*
    - EVP_CIPHER_CTX*
    - HMAC_CTX*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 969
      start: 930
    functionDepth: 0
    functionLinenumber: 930
    functionLinenumberEnd: 969
    functionName: OpenSSLTLSTicketKey::decrypt
    functionSourceFile: /src/pdns/pdns/libssl.cc
    functionUses: 0
    functionsReached:
    - OSSL_PARAM_BLD_new
    - auto::get
    - OSSL_PARAM_BLD_to_param
    - Params
    - EVP_MAC_init
    - TLS_TICKETS_MAC_ALGO
    - size
    - EVP_DecryptInit_ex
    - TLS_TICKETS_CIPHER_ALGO
    - c_str
    - EVP_MAC_CTX_set_params
    - OSSL_PARAM_BLD_push_utf8_string
    - ParamsBuilder
    - HMAC_Init_ex
    linkageType: ''
    returnType: bool
    signature: bool OpenSSLTLSTicketKey::decrypt(const unsigned char* iv, EVP_CIPHER_CTX*
      ectx, HMAC_CTX* hctx) const
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: std::unique_ptr<SSL_CTX, decltype(&SSL_CTX_free)>
      Src: /src/pdns/pdns/libssl.cc:973,1
    - Dst: SSL_CTX_new
      Src: /src/pdns/pdns/libssl.cc:973,1
    - Dst: SSLv23_server_method
      Src: /src/pdns/pdns/libssl.cc:973,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/libssl.cc:976,1
    - Dst: SSL_CTX_set_num_tickets
      Src: /src/pdns/pdns/libssl.cc:993,1
    - Dst: auto::get
      Src: /src/pdns/pdns/libssl.cc:993,1
    - Dst: SSL_CTX_set_timeout
      Src: /src/pdns/pdns/libssl.cc:1004,1
    - Dst: auto::get
      Src: /src/pdns/pdns/libssl.cc:1004,1
    - Dst: SSL_CTX_set_options
      Src: /src/pdns/pdns/libssl.cc:1026,1
    - Dst: auto::get
      Src: /src/pdns/pdns/libssl.cc:1026,1
    - Dst: libssl_set_min_tls_version
      Src: /src/pdns/pdns/libssl.cc:1027,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/libssl.cc:1028,1
    - Dst: libssl_tls_version_to_string
      Src: /src/pdns/pdns/libssl.cc:1028,1
    - Dst: SSL_CTX_set_ecdh_auto
      Src: /src/pdns/pdns/libssl.cc:1032,1
    - Dst: auto::get
      Src: /src/pdns/pdns/libssl.cc:1032,1
    - Dst: SSL_CTX_set_session_cache_mode
      Src: /src/pdns/pdns/libssl.cc:1037,1
    - Dst: auto::get
      Src: /src/pdns/pdns/libssl.cc:1037,1
    - Dst: SSL_CTX_set_session_cache_mode
      Src: /src/pdns/pdns/libssl.cc:1041,1
    - Dst: auto::get
      Src: /src/pdns/pdns/libssl.cc:1041,1
    - Dst: SSL_CTX_sess_set_cache_size
      Src: /src/pdns/pdns/libssl.cc:1042,1
    - Dst: auto::get
      Src: /src/pdns/pdns/libssl.cc:1042,1
    - Dst: push_back
      Src: /src/pdns/pdns/libssl.cc:1056,1
    - Dst: SSL_CTX_set_mode
      Src: /src/pdns/pdns/libssl.cc:1060,1
    - Dst: auto::get
      Src: /src/pdns/pdns/libssl.cc:1060,1
    - Dst: SSL_CTX_set_tlsext_servername_callback
      Src: /src/pdns/pdns/libssl.cc:1065,1
    - Dst: auto::get
      Src: /src/pdns/pdns/libssl.cc:1065,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 44
    argCount: 2
    argNames:
    - ' config'
    - ' warnings'
    argTypes:
    - TLSConfig
    - std::vector<std::string>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1068
      start: 971
    functionDepth: 0
    functionLinenumber: 971
    functionLinenumberEnd: 1068
    functionName: getNewServerContext
    functionSourceFile: /src/pdns/pdns/libssl.cc
    functionUses: 0
    functionsReached:
    - SSL_CTX_set_mode
    - SSL_CTX_set_tlsext_servername_callback
    - libssl_set_min_tls_version
    - auto::get
    - SSL_CTX_set_options
    - SSL_CTX_set_num_tickets
    - SSLv23_server_method
    - SSL_CTX_set_timeout
    - std::runtime_error
    - push_back
    - SSL_CTX_set_ecdh_auto
    - SSL_CTX_sess_set_cache_size
    - libssl_tls_version_to_string
    - std::unique_ptr<SSL_CTX, decltype(&SSL_CTX_free)>
    - SSL_CTX_new
    - SSL_CTX_set_session_cache_mode
    - Logging::Logger::error
    linkageType: ''
    returnType: std::unique_ptr<SSL_CTX, decltype(&SSL_CTX_free)>
    signature: std::unique_ptr<SSL_CTX, decltype(&SSL_CTX_free)> getNewServerContext(const
      TLSConfig& config, [[maybe_unused]] std::vector<std::string>& warnings)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: d_sniMap::emplace
      Src: /src/pdns/pdns/libssl.cc:1073,1
    - Dst: existingContextCallback
      Src: /src/pdns/pdns/libssl.cc:1076,1
    - Dst: d_sniMap::size
      Src: /src/pdns/pdns/libssl.cc:1078,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 4
    argNames:
    - ' serverContext'
    - newContext
    - ' names'
    - ' existingContextCallback'
    argTypes:
    - pdns::libssl::ServerContext
    - pdns::libssl::ServerContext::SharedContext
    - std::unordered_set<std::string>
    - std::function<void(pdns::libssl::ServerContext::SharedContext&)>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1082
      start: 1070
    functionDepth: 0
    functionLinenumber: 1070
    functionLinenumberEnd: 1082
    functionName: mergeNewCertificateAndKey
    functionSourceFile: /src/pdns/pdns/libssl.cc
    functionUses: 0
    functionsReached:
    - existingContextCallback
    - d_sniMap::emplace
    - d_sniMap::size
    linkageType: ''
    returnType: void
    signature: void mergeNewCertificateAndKey(pdns::libssl::ServerContext& serverContext,
      pdns::libssl::ServerContext::SharedContext newContext, std::unordered_set<std::string>&
      names, const std::function<void(pdns::libssl::ServerContext::SharedContext&)>&
      existingContextCallback)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: getNewServerContext
      Src: /src/pdns/pdns/libssl.cc:1163,1
    - Dst: libssl_setup_context_no_sni
      Src: /src/pdns/pdns/libssl.cc:1168,1
    - Dst: auto::get
      Src: /src/pdns/pdns/libssl.cc:1168,1
    - Dst: d_ocspFiles::empty
      Src: /src/pdns/pdns/libssl.cc:1172,1
    - Dst: libssl_load_ocsp_responses
      Src: /src/pdns/pdns/libssl.cc:1174,1
    - Dst: std::move
      Src: /src/pdns/pdns/libssl.cc:1174,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/libssl.cc:1177,1
    - Dst: std::string
      Src: /src/pdns/pdns/libssl.cc:1177,1
    - Dst: what
      Src: /src/pdns/pdns/libssl.cc:1177,1
    - Dst: d_ciphers::empty
      Src: /src/pdns/pdns/libssl.cc:1182,1
    - Dst: SSL_CTX_set_cipher_list
      Src: /src/pdns/pdns/libssl.cc:1182,1
    - Dst: auto::get
      Src: /src/pdns/pdns/libssl.cc:1182,1
    - Dst: d_ciphers::c_str
      Src: /src/pdns/pdns/libssl.cc:1182,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/libssl.cc:1183,1
    - Dst: d_ciphers13::empty
      Src: /src/pdns/pdns/libssl.cc:1187,1
    - Dst: SSL_CTX_set_ciphersuites
      Src: /src/pdns/pdns/libssl.cc:1187,1
    - Dst: auto::get
      Src: /src/pdns/pdns/libssl.cc:1187,1
    - Dst: d_ciphers13::c_str
      Src: /src/pdns/pdns/libssl.cc:1187,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/libssl.cc:1188,1
    - Dst: std::move
      Src: /src/pdns/pdns/libssl.cc:1192,1
    - Dst: std::move
      Src: /src/pdns/pdns/libssl.cc:1192,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 17
    argCount: 2
    argNames:
    - ' config'
    - ' ocspResponses'
    argTypes:
    - TLSConfig
    - std::map<int, std::string>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1193
      start: 1159
    functionDepth: 0
    functionLinenumber: 1159
    functionLinenumberEnd: 1193
    functionName: libssl_init_server_context_no_sni
    functionSourceFile: /src/pdns/pdns/libssl.cc
    functionUses: 0
    functionsReached:
    - std::move
    - d_ciphers::empty
    - auto::get
    - SSL_CTX_set_cipher_list
    - d_ciphers13::c_str
    - std::runtime_error
    - what
    - SSL_CTX_set_ciphersuites
    - getNewServerContext
    - d_ocspFiles::empty
    - std::string
    - libssl_load_ocsp_responses
    - libssl_setup_context_no_sni
    - d_ciphers13::empty
    - d_ciphers::c_str
    linkageType: ''
    returnType: std::pair<std::unique_ptr<SSL_CTX, decltype(&SSL_CTX_free)>, std::vector<std::string>>
    signature: "std::pair<std::unique_ptr<SSL_CTX, decltype(&SSL_CTX_free)>, std::vector<std::string>>
      libssl_init_server_context_no_sni(const TLSConfig& config,\n                                                                                                                         [[maybe_unused]]
      std::map<int, std::string>& ocspResponses)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: libssl_setup_context
      Src: /src/pdns/pdns/libssl.cc:1303,1
    - Dst: d_ocspFiles::empty
      Src: /src/pdns/pdns/libssl.cc:1307,1
    - Dst: libssl_load_ocsp_responses
      Src: /src/pdns/pdns/libssl.cc:1309,1
    - Dst: std::move
      Src: /src/pdns/pdns/libssl.cc:1309,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/libssl.cc:1312,1
    - Dst: std::string
      Src: /src/pdns/pdns/libssl.cc:1312,1
    - Dst: what
      Src: /src/pdns/pdns/libssl.cc:1312,1
    - Dst: d_ciphers::empty
      Src: /src/pdns/pdns/libssl.cc:1319,1
    - Dst: SSL_CTX_set_cipher_list
      Src: /src/pdns/pdns/libssl.cc:1319,1
    - Dst: get
      Src: /src/pdns/pdns/libssl.cc:1319,1
    - Dst: d_ciphers::c_str
      Src: /src/pdns/pdns/libssl.cc:1319,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/libssl.cc:1320,1
    - Dst: d_ciphers13::empty
      Src: /src/pdns/pdns/libssl.cc:1324,1
    - Dst: SSL_CTX_set_ciphersuites
      Src: /src/pdns/pdns/libssl.cc:1324,1
    - Dst: get
      Src: /src/pdns/pdns/libssl.cc:1324,1
    - Dst: d_ciphers13::c_str
      Src: /src/pdns/pdns/libssl.cc:1324,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/libssl.cc:1325,1
    - Dst: std::move
      Src: /src/pdns/pdns/libssl.cc:1330,1
    - Dst: std::move
      Src: /src/pdns/pdns/libssl.cc:1330,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 18
    argCount: 1
    argNames:
    - ' config'
    argTypes:
    - TLSConfig
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1331
      start: 1295
    functionDepth: 0
    functionLinenumber: 1295
    functionLinenumberEnd: 1331
    functionName: libssl_init_server_context
    functionSourceFile: /src/pdns/pdns/libssl.cc
    functionUses: 1
    functionsReached:
    - std::move
    - d_ciphers::empty
    - SSL_CTX_set_cipher_list
    - libssl_setup_context
    - d_ciphers13::c_str
    - std::runtime_error
    - what
    - SSL_CTX_set_ciphersuites
    - get
    - d_ocspFiles::empty
    - std::string
    - libssl_load_ocsp_responses
    - d_ciphers13::empty
    - d_ciphers::c_str
    linkageType: ''
    returnType: std::pair<pdns::libssl::ServerContext, std::vector<std::string>>
    signature: std::pair<pdns::libssl::ServerContext, std::vector<std::string>> libssl_init_server_context(const
      TLSConfig& config)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: SSL_get_SSL_CTX
      Src: /src/pdns/pdns/libssl.cc:1336,1
    - Dst: reinterpret_cast<FILE*>
      Src: /src/pdns/pdns/libssl.cc:1342,1
    - Dst: SSL_CTX_get_ex_data
      Src: /src/pdns/pdns/libssl.cc:1342,1
    - Dst: fprintf
      Src: /src/pdns/pdns/libssl.cc:1347,1
    - Dst: fflush
      Src: /src/pdns/pdns/libssl.cc:1348,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - ssl
    - line
    argTypes:
    - SSL*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1349
      start: 1334
    functionDepth: 0
    functionLinenumber: 1334
    functionLinenumberEnd: 1349
    functionName: libssl_key_log_file_callback
    functionSourceFile: /src/pdns/pdns/libssl.cc
    functionUses: 0
    functionsReached:
    - fprintf
    - reinterpret_cast<FILE*>
    - SSL_CTX_get_ex_data
    - fflush
    - SSL_get_SSL_CTX
    linkageType: ''
    returnType: void
    signature: void libssl_key_log_file_callback(const SSL* ssl, const char* line)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pdns::openFileForWriting
      Src: /src/pdns/pdns/libssl.cc:1355,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/libssl.cc:1358,1
    - Dst: stringerror
      Src: /src/pdns/pdns/libssl.cc:1358,1
    - Dst: SSL_CTX_set_ex_data
      Src: /src/pdns/pdns/libssl.cc:1360,1
    - Dst: auto::get
      Src: /src/pdns/pdns/libssl.cc:1360,1
    - Dst: SSL_CTX_set_keylog_callback
      Src: /src/pdns/pdns/libssl.cc:1361,1
    - Dst: pdns::UniqueFilePtr
      Src: /src/pdns/pdns/libssl.cc:1364,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - ctx
    - ' logFile'
    argTypes:
    - SSL_CTX*
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1366
      start: 1352
    functionDepth: 0
    functionLinenumber: 1352
    functionLinenumberEnd: 1366
    functionName: libssl_set_key_log_file
    functionSourceFile: /src/pdns/pdns/libssl.cc
    functionUses: 2
    functionsReached:
    - auto::get
    - std::runtime_error
    - stringerror
    - pdns::openFileForWriting
    - SSL_CTX_set_keylog_callback
    - SSL_CTX_set_ex_data
    - pdns::UniqueFilePtr
    linkageType: ''
    returnType: pdns::UniqueFilePtr
    signature: pdns::UniqueFilePtr libssl_set_key_log_file([[maybe_unused]] SSL_CTX*
      ctx, [[maybe_unused]] const std::string& logFile)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SSL_CTX_set_alpn_select_cb
      Src: /src/pdns/pdns/libssl.cc:1372,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ctx
    - arg
    argTypes:
    - SSL_CTX*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1374
      start: 1369
    functionDepth: 0
    functionLinenumber: 1369
    functionLinenumberEnd: 1374
    functionName: libssl_set_alpn_select_callback
    functionSourceFile: /src/pdns/pdns/libssl.cc
    functionUses: 1
    functionsReached:
    - SSL_CTX_set_alpn_select_cb
    linkageType: ''
    returnType: void
    signature: void libssl_set_alpn_select_callback([[maybe_unused]] SSL_CTX* ctx,
      [[maybe_unused]] int (*callback)(SSL* ssl, const unsigned char** out, unsigned
      char* outlen, const unsigned char* inPtr, unsigned int inlen, void* arg), [[maybe_unused]]
      void* arg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/libssl.cc:1381,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/libssl.cc:1381,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/libssl.cc:1382,1
    - Dst: size
      Src: /src/pdns/pdns/libssl.cc:1384,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/libssl.cc:1385,1
    - Dst: std::vector::insert
      Src: /src/pdns/pdns/libssl.cc:1386,1
    - Dst: std::vector::end
      Src: /src/pdns/pdns/libssl.cc:1386,1
    - Dst: begin
      Src: /src/pdns/pdns/libssl.cc:1386,1
    - Dst: end
      Src: /src/pdns/pdns/libssl.cc:1386,1
    - Dst: SSL_CTX_set_alpn_protos
      Src: /src/pdns/pdns/libssl.cc:1388,1
    - Dst: std::vector::data
      Src: /src/pdns/pdns/libssl.cc:1388,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/libssl.cc:1388,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - ctx
    - ' protos'
    argTypes:
    - SSL_CTX*
    - std::vector<std::vector<uint8_t>>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1392
      start: 1376
    functionDepth: 1
    functionLinenumber: 1376
    functionLinenumberEnd: 1392
    functionName: libssl_set_alpn_protos
    functionSourceFile: /src/pdns/pdns/libssl.cc
    functionUses: 1
    functionsReached:
    - std::vector::end
    - pdns::max
    - std::vector::push_back
    - std::vector::insert
    - SSL_CTX_set_alpn_protos
    - std::vector::size
    - std::runtime_error
    - end
    - size
    - begin
    - std::vector::data
    linkageType: ''
    returnType: bool
    signature: bool libssl_set_alpn_protos([[maybe_unused]] SSL_CTX* ctx, [[maybe_unused]]
      const std::vector<std::vector<uint8_t>>& protos)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: BIO_new
      Src: /src/pdns/pdns/libssl.cc:1397,1
    - Dst: BIO_s_mem
      Src: /src/pdns/pdns/libssl.cc:1397,1
    - Dst: ERR_print_errors
      Src: /src/pdns/pdns/libssl.cc:1398,1
    - Dst: BIO_get_mem_data
      Src: /src/pdns/pdns/libssl.cc:1400,1
    - Dst: std::string::empty
      Src: /src/pdns/pdns/libssl.cc:1403,1
    - Dst: std::string::back
      Src: /src/pdns/pdns/libssl.cc:1403,1
    - Dst: std::string::pop_back
      Src: /src/pdns/pdns/libssl.cc:1404,1
    - Dst: std::replace
      Src: /src/pdns/pdns/libssl.cc:1406,1
    - Dst: std::string::begin
      Src: /src/pdns/pdns/libssl.cc:1406,1
    - Dst: std::string::end
      Src: /src/pdns/pdns/libssl.cc:1406,1
    - Dst: BIO_free
      Src: /src/pdns/pdns/libssl.cc:1407,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1409
      start: 1395
    functionDepth: 0
    functionLinenumber: 1395
    functionLinenumberEnd: 1409
    functionName: libssl_get_error_string
    functionSourceFile: /src/pdns/pdns/libssl.cc
    functionUses: 3
    functionsReached:
    - std::string::back
    - std::string::begin
    - BIO_get_mem_data
    - ERR_print_errors
    - std::string::pop_back
    - std::string::end
    - std::string::empty
    - BIO_free
    - BIO_s_mem
    - std::replace
    - BIO_new
    linkageType: ''
    returnType: std::string
    signature: std::string libssl_get_error_string()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SLOG
      Src: /src/pdns/pdns/tcpreceiver.cc:86,1
    - Dst: info
      Src: /src/pdns/pdns/tcpreceiver.cc:87,1
    - Dst: lock
      Src: /src/pdns/pdns/tcpreceiver.cc:88,1
    - Dst: lock
      Src: /src/pdns/pdns/tcpreceiver.cc:90,1
    - Dst: make_unique<PacketHandler>
      Src: /src/pdns/pdns/tcpreceiver.cc:90,1
    - Dst: SLOG
      Src: /src/pdns/pdns/tcpreceiver.cc:93,1
    - Dst: error
      Src: /src/pdns/pdns/tcpreceiver.cc:94,1
    - Dst: TCPNameserver::thread
      Src: /src/pdns/pdns/tcpreceiver.cc:97,1
    - Dst: std::thread::detach
      Src: /src/pdns/pdns/tcpreceiver.cc:98,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 84
    functionDepth: 1
    functionLinenumber: 84
    functionLinenumberEnd: 99
    functionName: TCPNameserver::go
    functionSourceFile: /src/pdns/pdns/tcpreceiver.cc
    functionUses: 0
    functionsReached:
    - make_unique<PacketHandler>
    - SLOG
    - info
    - lock
    - std::thread::detach
    - error
    - TCPNameserver::thread
    linkageType: ''
    returnType: void
    signature: void TCPNameserver::go()
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: time
      Src: /src/pdns/pdns/tcpreceiver.cc:110,1
    - Dst: read
      Src: /src/pdns/pdns/tcpreceiver.cc:113,1
    - Dst: waitForData
      Src: /src/pdns/pdns/tcpreceiver.cc:116,1
    - Dst: NetworkError
      Src: /src/pdns/pdns/tcpreceiver.cc:118,1
    - Dst: NetworkError
      Src: /src/pdns/pdns/tcpreceiver.cc:120,1
    - Dst: NetworkError
      Src: /src/pdns/pdns/tcpreceiver.cc:124,1
    - Dst: stringerror
      Src: /src/pdns/pdns/tcpreceiver.cc:124,1
    - Dst: NetworkError
      Src: /src/pdns/pdns/tcpreceiver.cc:130,1
    - Dst: time
      Src: /src/pdns/pdns/tcpreceiver.cc:136,1
    - Dst: static_cast<time_t>
      Src: /src/pdns/pdns/tcpreceiver.cc:138,1
    - Dst: NetworkError
      Src: /src/pdns/pdns/tcpreceiver.cc:139,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 35
    argCount: 4
    argNames:
    - fd
    - buffer
    - n
    - idleTimeout
    argTypes:
    - int
    - void*
    - unsigned int
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 148
      start: 102
    functionDepth: 0
    functionLinenumber: 102
    functionLinenumberEnd: 148
    functionName: readnWithTimeout
    functionSourceFile: /src/pdns/pdns/tcpreceiver.cc
    functionUses: 0
    functionsReached:
    - read
    - time
    - stringerror
    - waitForData
    - NetworkError
    - static_cast<time_t>
    linkageType: ''
    returnType: int
    signature: int readnWithTimeout(int fd, void* buffer, unsigned int n, unsigned
      int idleTimeout, bool throwOnEOF=true, unsigned int totalTimeout=0)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: write
      Src: /src/pdns/pdns/tcpreceiver.cc:157,1
    - Dst: waitForRWData
      Src: /src/pdns/pdns/tcpreceiver.cc:160,1
    - Dst: NetworkError
      Src: /src/pdns/pdns/tcpreceiver.cc:162,1
    - Dst: NetworkError
      Src: /src/pdns/pdns/tcpreceiver.cc:164,1
    - Dst: NetworkError
      Src: /src/pdns/pdns/tcpreceiver.cc:168,1
    - Dst: stringerror
      Src: /src/pdns/pdns/tcpreceiver.cc:168,1
    - Dst: NetworkError
      Src: /src/pdns/pdns/tcpreceiver.cc:171,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 20
    argCount: 4
    argNames:
    - fd
    - buffer
    - n
    - idleTimeout
    argTypes:
    - int
    - void*
    - unsigned int
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 177
      start: 151
    functionDepth: 0
    functionLinenumber: 151
    functionLinenumberEnd: 177
    functionName: writenWithTimeout
    functionSourceFile: /src/pdns/pdns/tcpreceiver.cc
    functionUses: 0
    functionsReached:
    - stringerror
    - waitForRWData
    - write
    - NetworkError
    linkageType: ''
    returnType: void
    signature: void writenWithTimeout(int fd, const void *buffer, unsigned int n,
      unsigned int idleTimeout)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: htons
      Src: /src/pdns/pdns/tcpreceiver.cc:181,1
    - Dst: getString
      Src: /src/pdns/pdns/tcpreceiver.cc:181,1
    - Dst: submitResponse
      Src: /src/pdns/pdns/tcpreceiver.cc:184,1
    - Dst: string::append
      Src: /src/pdns/pdns/tcpreceiver.cc:187,1
    - Dst: getString
      Src: /src/pdns/pdns/tcpreceiver.cc:187,1
    - Dst: writenWithTimeout
      Src: /src/pdns/pdns/tcpreceiver.cc:188,1
    - Dst: string::c_str
      Src: /src/pdns/pdns/tcpreceiver.cc:188,1
    - Dst: string::length
      Src: /src/pdns/pdns/tcpreceiver.cc:188,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - ' p'
    - outsock
    - last
    argTypes:
    - std::unique_ptr<DNSPacket>
    - int
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 189
      start: 179
    functionDepth: 1
    functionLinenumber: 179
    functionLinenumberEnd: 189
    functionName: TCPNameserver::sendPacket
    functionSourceFile: /src/pdns/pdns/tcpreceiver.cc
    functionUses: 0
    functionsReached:
    - writenWithTimeout
    - string::c_str
    - submitResponse
    - string::append
    - getString
    - string::length
    - htons
    linkageType: ''
    returnType: void
    signature: void TCPNameserver::sendPacket(std::unique_ptr<DNSPacket>& p, int outsock,
      bool last)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: readnWithTimeout
      Src: /src/pdns/pdns/tcpreceiver.cc:195,1
    - Dst: NetworkError
      Src: /src/pdns/pdns/tcpreceiver.cc:198,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/tcpreceiver.cc:198,1
    - Dst: what
      Src: /src/pdns/pdns/tcpreceiver.cc:198,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 5
    argNames:
    - fd
    - mesg
    - pktlen
    - remote
    - totalTime
    argTypes:
    - int
    - char*
    - int
    - ComboAddress
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 199
      start: 192
    functionDepth: 1
    functionLinenumber: 192
    functionLinenumberEnd: 199
    functionName: TCPNameserver::getQuestion
    functionSourceFile: /src/pdns/pdns/tcpreceiver.cc
    functionUses: 0
    functionsReached:
    - NetworkError
    - what
    - readnWithTimeout
    - ComboAddress::toString
    linkageType: ''
    returnType: void
    signature: void TCPNameserver::getQuestion(int fd, char *mesg, int pktlen, const
      ComboAddress &remote, unsigned int totalTime)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: time
      Src: /src/pdns/pdns/tcpreceiver.cc:204,1
    - Dst: static_cast<unsigned int>
      Src: /src/pdns/pdns/tcpreceiver.cc:209,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 3
    argNames:
    - maxConnectionDuration
    - start
    - ' remainingTime'
    argTypes:
    - unsigned int
    - time_t
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 213
      start: 201
    functionDepth: 0
    functionLinenumber: 201
    functionLinenumberEnd: 213
    functionName: maxConnectionDurationReached
    functionSourceFile: /src/pdns/pdns/tcpreceiver.cc
    functionUses: 0
    functionsReached:
    - static_cast<unsigned int>
    - time
    linkageType: ''
    returnType: bool
    signature: bool maxConnectionDurationReached(unsigned int maxConnectionDuration,
      time_t start, unsigned int& remainingTime)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/tcpreceiver.cc:218,1
    - Dst: auto::find
      Src: /src/pdns/pdns/tcpreceiver.cc:219,1
    - Dst: auto::end
      Src: /src/pdns/pdns/tcpreceiver.cc:220,1
    - Dst: auto::erase
      Src: /src/pdns/pdns/tcpreceiver.cc:226,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - ' remote'
    argTypes:
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 229
      start: 215
    functionDepth: 0
    functionLinenumber: 215
    functionLinenumberEnd: 229
    functionName: TCPNameserver::decrementClientCount
    functionSourceFile: /src/pdns/pdns/tcpreceiver.cc
    functionUses: 0
    functionsReached:
    - auto::end
    - auto::erase
    - auto::find
    - lock
    linkageType: ''
    returnType: void
    signature: void TCPNameserver::decrementClientCount(const ComboAddress& remote)
  - BBCount: 35
    BranchProfiles: []
    Callsites:
    - Dst: setThreadName
      Src: /src/pdns/pdns/tcpreceiver.cc:234,1
    - Dst: time
      Src: /src/pdns/pdns/tcpreceiver.cc:241,1
    - Dst: getpeername
      Src: /src/pdns/pdns/tcpreceiver.cc:244,1
    - Dst: SLOG
      Src: /src/pdns/pdns/tcpreceiver.cc:245,1
    - Dst: stringerror
      Src: /src/pdns/pdns/tcpreceiver.cc:245,1
    - Dst: Logr::log_t::error
      Src: /src/pdns/pdns/tcpreceiver.cc:246,1
    - Dst: post
      Src: /src/pdns/pdns/tcpreceiver.cc:247,1
    - Dst: closesocket
      Src: /src/pdns/pdns/tcpreceiver.cc:249,1
    - Dst: SLOG
      Src: /src/pdns/pdns/tcpreceiver.cc:252,1
    - Dst: Logr::log_t::error
      Src: /src/pdns/pdns/tcpreceiver.cc:253,1
    - Dst: setNonBlocking
      Src: /src/pdns/pdns/tcpreceiver.cc:258,1
    - Dst: char::char
      Src: /src/pdns/pdns/tcpreceiver.cc:261,1
    - Dst: DLOG
      Src: /src/pdns/pdns/tcpreceiver.cc:265,1
    - Dst: SLOG
      Src: /src/pdns/pdns/tcpreceiver.cc:265,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/tcpreceiver.cc:266,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/tcpreceiver.cc:266,1
    - Dst: match
      Src: /src/pdns/pdns/tcpreceiver.cc:267,1
    - Dst: PacketBuffer::reserve
      Src: /src/pdns/pdns/tcpreceiver.cc:270,1
    - Dst: isProxyHeaderComplete
      Src: /src/pdns/pdns/tcpreceiver.cc:275,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/tcpreceiver.cc:277,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/tcpreceiver.cc:278,1
    - Dst: NetworkError
      Src: /src/pdns/pdns/tcpreceiver.cc:280,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/tcpreceiver.cc:280,1
    - Dst: PacketBuffer::resize
      Src: /src/pdns/pdns/tcpreceiver.cc:282,1
    - Dst: maxConnectionDurationReached
      Src: /src/pdns/pdns/tcpreceiver.cc:283,1
    - Dst: NetworkError
      Src: /src/pdns/pdns/tcpreceiver.cc:284,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/tcpreceiver.cc:284,1
    - Dst: readnWithTimeout
      Src: /src/pdns/pdns/tcpreceiver.cc:288,1
    - Dst: NetworkError
      Src: /src/pdns/pdns/tcpreceiver.cc:291,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/tcpreceiver.cc:291,1
    - Dst: what
      Src: /src/pdns/pdns/tcpreceiver.cc:291,1
    - Dst: NetworkError
      Src: /src/pdns/pdns/tcpreceiver.cc:295,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/tcpreceiver.cc:295,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/tcpreceiver.cc:297,1
    - Dst: NetworkError
      Src: /src/pdns/pdns/tcpreceiver.cc:298,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/tcpreceiver.cc:298,1
    - Dst: parseProxyHeader
      Src: /src/pdns/pdns/tcpreceiver.cc:308,1
    - Dst: NetworkError
      Src: /src/pdns/pdns/tcpreceiver.cc:310,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/tcpreceiver.cc:310,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/tcpreceiver.cc:312,1
    - Dst: NetworkError
      Src: /src/pdns/pdns/tcpreceiver.cc:313,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/tcpreceiver.cc:313,1
    - Dst: SLOG
      Src: /src/pdns/pdns/tcpreceiver.cc:327,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/tcpreceiver.cc:328,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/tcpreceiver.cc:328,1
    - Dst: maxConnectionDurationReached
      Src: /src/pdns/pdns/tcpreceiver.cc:331,1
    - Dst: SLOG
      Src: /src/pdns/pdns/tcpreceiver.cc:332,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/tcpreceiver.cc:333,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/tcpreceiver.cc:333,1
    - Dst: readnWithTimeout
      Src: /src/pdns/pdns/tcpreceiver.cc:338,1
    - Dst: ntohs
      Src: /src/pdns/pdns/tcpreceiver.cc:341,1
    - Dst: SLOG
      Src: /src/pdns/pdns/tcpreceiver.cc:351,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/tcpreceiver.cc:351,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/tcpreceiver.cc:352,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/tcpreceiver.cc:352,1
    - Dst: maxConnectionDurationReached
      Src: /src/pdns/pdns/tcpreceiver.cc:356,1
    - Dst: SLOG
      Src: /src/pdns/pdns/tcpreceiver.cc:357,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/tcpreceiver.cc:358,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/tcpreceiver.cc:358,1
    - Dst: TCPNameserver::getQuestion
      Src: /src/pdns/pdns/tcpreceiver.cc:362,1
    - Dst: boost::scoped_array::get
      Src: /src/pdns/pdns/tcpreceiver.cc:362,1
    - Dst: inc
      Src: /src/pdns/pdns/tcpreceiver.cc:363,1
    - Dst: inc
      Src: /src/pdns/pdns/tcpreceiver.cc:365,1
    - Dst: inc
      Src: /src/pdns/pdns/tcpreceiver.cc:367,1
    - Dst: make_unique<DNSPacket>
      Src: /src/pdns/pdns/tcpreceiver.cc:369,1
    - Dst: std::unique_ptr::setRemote
      Src: /src/pdns/pdns/tcpreceiver.cc:370,1
    - Dst: std::unique_ptr::setSocket
      Src: /src/pdns/pdns/tcpreceiver.cc:376,1
    - Dst: std::unique_ptr::parse
      Src: /src/pdns/pdns/tcpreceiver.cc:377,1
    - Dst: boost::scoped_array::get
      Src: /src/pdns/pdns/tcpreceiver.cc:377,1
    - Dst: std::unique_ptr::hasEDNSCookie
      Src: /src/pdns/pdns/tcpreceiver.cc:380,1
    - Dst: inc
      Src: /src/pdns/pdns/tcpreceiver.cc:381,1
    - Dst: std::unique_ptr::qtype::getCode
      Src: /src/pdns/pdns/tcpreceiver.cc:383,1
    - Dst: setZoneVariant
      Src: /src/pdns/pdns/tcpreceiver.cc:385,1
    - Dst: TCPNameserver::doAXFR
      Src: /src/pdns/pdns/tcpreceiver.cc:386,1
    - Dst: std::unique_ptr::qtype::getCode
      Src: /src/pdns/pdns/tcpreceiver.cc:390,1
    - Dst: setZoneVariant
      Src: /src/pdns/pdns/tcpreceiver.cc:392,1
    - Dst: TCPNameserver::doIXFR
      Src: /src/pdns/pdns/tcpreceiver.cc:393,1
    - Dst: make_unique<DNSPacket>
      Src: /src/pdns/pdns/tcpreceiver.cc:398,1
    - Dst: Logr::log_t::withValues
      Src: /src/pdns/pdns/tcpreceiver.cc:402,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/tcpreceiver.cc:402,1
    - Dst: std::unique_ptr::getRemoteString
      Src: /src/pdns/pdns/tcpreceiver.cc:402,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/tcpreceiver.cc:402,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/tcpreceiver.cc:402,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/tcpreceiver.cc:402,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/tcpreceiver.cc:402,1
    - Dst: std::unique_ptr::getMaxReplyLen
      Src: /src/pdns/pdns/tcpreceiver.cc:402,1
    - Dst: std::unique_ptr::getRemoteString
      Src: /src/pdns/pdns/tcpreceiver.cc:405,1
    - Dst: std::unique_ptr::qtype::toString
      Src: /src/pdns/pdns/tcpreceiver.cc:405,1
    - Dst: std::unique_ptr::getMaxReplyLen
      Src: /src/pdns/pdns/tcpreceiver.cc:406,1
    - Dst: enabled
      Src: /src/pdns/pdns/tcpreceiver.cc:411,1
    - Dst: std::unique_ptr::couldBeCached
      Src: /src/pdns/pdns/tcpreceiver.cc:412,1
    - Dst: std::unique_ptr::getInnerRemote
      Src: /src/pdns/pdns/tcpreceiver.cc:419,1
    - Dst: getViewFromNetwork
      Src: /src/pdns/pdns/tcpreceiver.cc:420,1
    - Dst: get
      Src: /src/pdns/pdns/tcpreceiver.cc:422,1
    - Dst: SLOG
      Src: /src/pdns/pdns/tcpreceiver.cc:424,1
    - Dst: std::shared_ptr::info
      Src: /src/pdns/pdns/tcpreceiver.cc:425,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/tcpreceiver.cc:425,1
    - Dst: auto::setRemote
      Src: /src/pdns/pdns/tcpreceiver.cc:427,1
    - Dst: auto::commitD
      Src: /src/pdns/pdns/tcpreceiver.cc:431,1
    - Dst: TCPNameserver::sendPacket
      Src: /src/pdns/pdns/tcpreceiver.cc:433,1
    - Dst: SLOG
      Src: /src/pdns/pdns/tcpreceiver.cc:438,1
    - Dst: std::shared_ptr::info
      Src: /src/pdns/pdns/tcpreceiver.cc:439,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/tcpreceiver.cc:439,1
    - Dst: SLOG
      Src: /src/pdns/pdns/tcpreceiver.cc:443,1
    - Dst: std::shared_ptr::info
      Src: /src/pdns/pdns/tcpreceiver.cc:444,1
    - Dst: lock
      Src: /src/pdns/pdns/tcpreceiver.cc:448,1
    - Dst: SLOG
      Src: /src/pdns/pdns/tcpreceiver.cc:450,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/tcpreceiver.cc:451,1
    - Dst: make_unique<PacketHandler>
      Src: /src/pdns/pdns/tcpreceiver.cc:452,1
    - Dst: doQuestion
      Src: /src/pdns/pdns/tcpreceiver.cc:455,1
    - Dst: TCPNameserver::sendPacket
      Src: /src/pdns/pdns/tcpreceiver.cc:461,1
    - Dst: std::unique_ptr::cleanupGSS
      Src: /src/pdns/pdns/tcpreceiver.cc:464,1
    - Dst: lock
      Src: /src/pdns/pdns/tcpreceiver.cc:470,1
    - Dst: SLOG
      Src: /src/pdns/pdns/tcpreceiver.cc:471,1
    - Dst: Logr::log_t::error
      Src: /src/pdns/pdns/tcpreceiver.cc:472,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/tcpreceiver.cc:472,1
    - Dst: SLOG
      Src: /src/pdns/pdns/tcpreceiver.cc:475,1
    - Dst: what
      Src: /src/pdns/pdns/tcpreceiver.cc:475,1
    - Dst: Logr::log_t::error
      Src: /src/pdns/pdns/tcpreceiver.cc:476,1
    - Dst: what
      Src: /src/pdns/pdns/tcpreceiver.cc:476,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/tcpreceiver.cc:476,1
    - Dst: lock
      Src: /src/pdns/pdns/tcpreceiver.cc:480,1
    - Dst: SLOG
      Src: /src/pdns/pdns/tcpreceiver.cc:481,1
    - Dst: what
      Src: /src/pdns/pdns/tcpreceiver.cc:481,1
    - Dst: Logr::log_t::error
      Src: /src/pdns/pdns/tcpreceiver.cc:482,1
    - Dst: what
      Src: /src/pdns/pdns/tcpreceiver.cc:482,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/tcpreceiver.cc:482,1
    - Dst: lock
      Src: /src/pdns/pdns/tcpreceiver.cc:486,1
    - Dst: SLOG
      Src: /src/pdns/pdns/tcpreceiver.cc:487,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/tcpreceiver.cc:488,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/tcpreceiver.cc:488,1
    - Dst: post
      Src: /src/pdns/pdns/tcpreceiver.cc:490,1
    - Dst: closesocket
      Src: /src/pdns/pdns/tcpreceiver.cc:493,1
    - Dst: SLOG
      Src: /src/pdns/pdns/tcpreceiver.cc:496,1
    - Dst: Logr::log_t::error
      Src: /src/pdns/pdns/tcpreceiver.cc:497,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/tcpreceiver.cc:497,1
    - Dst: TCPNameserver::decrementClientCount
      Src: /src/pdns/pdns/tcpreceiver.cc:499,1
    CyclomaticComplexity: 59
    EdgeCount: 59
    ICount: 177
    argCount: 2
    argNames:
    - fd
    - slog
    argTypes:
    - int
    - Logr::log_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 500
      start: 232
    functionDepth: 2
    functionLinenumber: 232
    functionLinenumberEnd: 500
    functionName: TCPNameserver::doConnection
    functionSourceFile: /src/pdns/pdns/tcpreceiver.cc
    functionUses: 0
    functionsReached:
    - post
    - maxConnectionDurationReached
    - readnWithTimeout
    - ntohs
    - stringerror
    - std::unique_ptr::setRemote
    - PacketBuffer::size
    - std::unique_ptr::cleanupGSS
    - std::unique_ptr::qtype::getCode
    - setZoneVariant
    - TCPNameserver::doAXFR
    - getpeername
    - std::unique_ptr::getInnerRemote
    - char::char
    - isProxyHeaderComplete
    - SLOG
    - static_cast<size_t>
    - std::unique_ptr::getMaxReplyLen
    - Logr::log_t::info
    - Logging::Loggable
    - setNonBlocking
    - time
    - std::shared_ptr::info
    - auto::commitD
    - Logr::log_t::error
    - std::unique_ptr::hasEDNSCookie
    - std::unique_ptr::qtype::toString
    - lock
    - match
    - TCPNameserver::doIXFR
    - std::unique_ptr::couldBeCached
    - Logr::log_t::withValues
    - NetworkError
    - TCPNameserver::decrementClientCount
    - setThreadName
    - TCPNameserver::sendPacket
    - std::unique_ptr::parse
    - std::unique_ptr::getRemoteString
    - get
    - auto::setRemote
    - parseProxyHeader
    - boost::scoped_array::get
    - enabled
    - make_unique<PacketHandler>
    - TCPNameserver::getQuestion
    - closesocket
    - what
    - inc
    - PacketBuffer::reserve
    - std::unique_ptr::setSocket
    - make_unique<DNSPacket>
    - PacketBuffer::resize
    - DLOG
    - getViewFromNetwork
    - doQuestion
    - ComboAddress::toString
    linkageType: ''
    returnType: void
    signature: void TCPNameserver::doConnection(int fd, Logr::log_t slog)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: arg
      Src: /src/pdns/pdns/tcpreceiver.cc:505,1
    - Dst: qdomainzone::toLogString
      Src: /src/pdns/pdns/tcpreceiver.cc:512,1
    - Dst: getInnerRemote
      Src: /src/pdns/pdns/tcpreceiver.cc:512,1
    - Dst: TSIGRecordContent::TSIGRecordContent
      Src: /src/pdns/pdns/tcpreceiver.cc:516,1
    - Dst: DNSName::DNSName
      Src: /src/pdns/pdns/tcpreceiver.cc:517,1
    - Dst: checkForCorrectTSIG
      Src: /src/pdns/pdns/tcpreceiver.cc:519,1
    - Dst: getTSIGHashEnum
      Src: /src/pdns/pdns/tcpreceiver.cc:522,1
    - Dst: GssContext::getPeerPrincipal
      Src: /src/pdns/pdns/tcpreceiver.cc:526,1
    - Dst: SLOG
      Src: /src/pdns/pdns/tcpreceiver.cc:527,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/tcpreceiver.cc:528,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/tcpreceiver.cc:528,1
    - Dst: getBackend
      Src: /src/pdns/pdns/tcpreceiver.cc:533,1
    - Dst: getBackend
      Src: /src/pdns/pdns/tcpreceiver.cc:537,1
    - Dst: SLOG
      Src: /src/pdns/pdns/tcpreceiver.cc:540,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/tcpreceiver.cc:541,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/tcpreceiver.cc:541,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/tcpreceiver.cc:541,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/tcpreceiver.cc:541,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/tcpreceiver.cc:541,1
    - Dst: SLOG
      Src: /src/pdns/pdns/tcpreceiver.cc:545,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/tcpreceiver.cc:546,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/tcpreceiver.cc:546,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/tcpreceiver.cc:546,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/tcpreceiver.cc:546,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/tcpreceiver.cc:546,1
    - Dst: DNSSECKeeper::TSIGGrantsAccess
      Src: /src/pdns/pdns/tcpreceiver.cc:550,1
    - Dst: SLOG
      Src: /src/pdns/pdns/tcpreceiver.cc:551,1
    - Dst: getTSIGAlgoName
      Src: /src/pdns/pdns/tcpreceiver.cc:551,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/tcpreceiver.cc:552,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/tcpreceiver.cc:552,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/tcpreceiver.cc:552,1
    - Dst: getInnerRemote
      Src: /src/pdns/pdns/tcpreceiver.cc:552,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/tcpreceiver.cc:552,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/tcpreceiver.cc:552,1
    - Dst: getTSIGAlgoName
      Src: /src/pdns/pdns/tcpreceiver.cc:552,1
    - Dst: SLOG
      Src: /src/pdns/pdns/tcpreceiver.cc:556,1
    - Dst: getTSIGAlgoName
      Src: /src/pdns/pdns/tcpreceiver.cc:556,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/tcpreceiver.cc:557,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/tcpreceiver.cc:557,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/tcpreceiver.cc:557,1
    - Dst: getInnerRemote
      Src: /src/pdns/pdns/tcpreceiver.cc:557,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/tcpreceiver.cc:557,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/tcpreceiver.cc:557,1
    - Dst: getTSIGAlgoName
      Src: /src/pdns/pdns/tcpreceiver.cc:557,1
    - Dst: arg
      Src: /src/pdns/pdns/tcpreceiver.cc:562,1
    - Dst: empty
      Src: /src/pdns/pdns/tcpreceiver.cc:562,1
    - Dst: match
      Src: /src/pdns/pdns/tcpreceiver.cc:562,1
    - Dst: getInnerRemote
      Src: /src/pdns/pdns/tcpreceiver.cc:562,1
    - Dst: SLOG
      Src: /src/pdns/pdns/tcpreceiver.cc:563,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/tcpreceiver.cc:564,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/tcpreceiver.cc:564,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/tcpreceiver.cc:564,1
    - Dst: getInnerRemote
      Src: /src/pdns/pdns/tcpreceiver.cc:564,1
    - Dst: getBackend
      Src: /src/pdns/pdns/tcpreceiver.cc:571,1
    - Dst: getBackend
      Src: /src/pdns/pdns/tcpreceiver.cc:573,1
    - Dst: pdns_iequals
      Src: /src/pdns/pdns/tcpreceiver.cc:575,1
    - Dst: SOAData::db::lookup
      Src: /src/pdns/pdns/tcpreceiver.cc:579,1
    - Dst: QType
      Src: /src/pdns/pdns/tcpreceiver.cc:579,1
    - Dst: SOAData::db::get
      Src: /src/pdns/pdns/tcpreceiver.cc:580,1
    - Dst: set::insert
      Src: /src/pdns/pdns/tcpreceiver.cc:581,1
    - Dst: DNSName
      Src: /src/pdns/pdns/tcpreceiver.cc:581,1
    - Dst: FindNS::lookup
      Src: /src/pdns/pdns/tcpreceiver.cc:584,1
    - Dst: getBackend
      Src: /src/pdns/pdns/tcpreceiver.cc:584,1
    - Dst: getInnerRemote
      Src: /src/pdns/pdns/tcpreceiver.cc:586,1
    - Dst: SLOG
      Src: /src/pdns/pdns/tcpreceiver.cc:588,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/tcpreceiver.cc:589,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/tcpreceiver.cc:589,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/tcpreceiver.cc:589,1
    - Dst: getInnerRemote
      Src: /src/pdns/pdns/tcpreceiver.cc:589,1
    - Dst: Netmask
      Src: /src/pdns/pdns/tcpreceiver.cc:597,1
    - Dst: Netmask::match
      Src: /src/pdns/pdns/tcpreceiver.cc:598,1
    - Dst: getInnerRemote
      Src: /src/pdns/pdns/tcpreceiver.cc:598,1
    - Dst: SLOG
      Src: /src/pdns/pdns/tcpreceiver.cc:600,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/tcpreceiver.cc:601,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/tcpreceiver.cc:601,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/tcpreceiver.cc:601,1
    - Dst: getInnerRemote
      Src: /src/pdns/pdns/tcpreceiver.cc:601,1
    - Dst: CommunicatorClass::CommunicatorClass
      Src: /src/pdns/pdns/tcpreceiver.cc:608,1
    - Dst: CommunicatorClass::justNotified
      Src: /src/pdns/pdns/tcpreceiver.cc:610,1
    - Dst: getInnerRemote
      Src: /src/pdns/pdns/tcpreceiver.cc:610,1
    - Dst: SLOG
      Src: /src/pdns/pdns/tcpreceiver.cc:611,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/tcpreceiver.cc:612,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/tcpreceiver.cc:612,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/tcpreceiver.cc:612,1
    - Dst: getInnerRemote
      Src: /src/pdns/pdns/tcpreceiver.cc:612,1
    - Dst: SLOG
      Src: /src/pdns/pdns/tcpreceiver.cc:616,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/tcpreceiver.cc:617,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/tcpreceiver.cc:617,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/tcpreceiver.cc:617,1
    - Dst: getInnerRemote
      Src: /src/pdns/pdns/tcpreceiver.cc:617,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 65
    argCount: 4
    argNames:
    - ' q'
    - isAXFR
    - ' packetHandler'
    - slog
    argTypes:
    - std::unique_ptr<DNSPacket>
    - bool
    - std::unique_ptr<PacketHandler>
    - Logr::log_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 619
      start: 503
    functionDepth: 1
    functionLinenumber: 503
    functionLinenumberEnd: 619
    functionName: TCPNameserver::canDoAXFR
    functionSourceFile: /src/pdns/pdns/tcpreceiver.cc
    functionUses: 0
    functionsReached:
    - checkForCorrectTSIG
    - TSIGRecordContent::TSIGRecordContent
    - SOAData::db::get
    - SLOG
    - set::insert
    - CommunicatorClass::justNotified
    - Logr::log_t::info
    - Logging::Loggable
    - QType
    - match
    - FindNS::lookup
    - getInnerRemote
    - empty
    - Netmask::match
    - Netmask
    - CommunicatorClass::CommunicatorClass
    - pdns_iequals
    - DNSName
    - getTSIGHashEnum
    - SOAData::db::lookup
    - arg
    - getTSIGAlgoName
    - qdomainzone::toLogString
    - getBackend
    - DNSName::DNSName
    - DNSSECKeeper::TSIGGrantsAccess
    - GssContext::getPeerPrincipal
    linkageType: ''
    returnType: bool
    signature: bool TCPNameserver::canDoAXFR(std::unique_ptr<DNSPacket>& q, bool isAXFR,
      std::unique_ptr<PacketHandler>& packetHandler, Logr::log_t slog)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::unique_ptr<DNSPacket>
      Src: /src/pdns/pdns/tcpreceiver.cc:631,1
    - Dst: replyPacket
      Src: /src/pdns/pdns/tcpreceiver.cc:631,1
    - Dst: std::unique_ptr::setCompress
      Src: /src/pdns/pdns/tcpreceiver.cc:632,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - ' q'
    argTypes:
    - std::unique_ptr<DNSPacket>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 636
      start: 629
    functionDepth: 1
    functionLinenumber: 629
    functionLinenumberEnd: 636
    functionName: getFreshAXFRPacket
    functionSourceFile: /src/pdns/pdns/tcpreceiver.cc
    functionUses: 0
    functionsReached:
    - std::unique_ptr::setCompress
    - std::unique_ptr<DNSPacket>
    - replyPacket
    linkageType: ''
    returnType: std::unique_ptr<DNSPacket>
    signature: std::unique_ptr<DNSPacket> getFreshAXFRPacket(std::unique_ptr<DNSPacket>&
      q)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::unique_ptr<DNSPacket>
      Src: /src/pdns/pdns/tcpreceiver.cc:631,1
    - Dst: replyPacket
      Src: /src/pdns/pdns/tcpreceiver.cc:631,1
    - Dst: std::unique_ptr::setCompress
      Src: /src/pdns/pdns/tcpreceiver.cc:632,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - ' q'
    argTypes:
    - std::unique_ptr<DNSPacket>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 636
      start: 629
    functionDepth: 1
    functionLinenumber: 629
    functionLinenumberEnd: 636
    functionName: getFreshAXFRPacket
    functionSourceFile: /src/pdns/pdns/tcpreceiver.cc
    functionUses: 0
    functionsReached:
    - std::unique_ptr::setCompress
    - std::unique_ptr<DNSPacket>
    - replyPacket
    linkageType: ''
    returnType: std::unique_ptr<DNSPacket>
    signature: std::unique_ptr<DNSPacket> getFreshAXFRPacket(std::unique_ptr<DNSPacket>&
      q)
  - BBCount: 89
    BranchProfiles: []
    Callsites:
    - Dst: ZoneName::toLogString
      Src: /src/pdns/pdns/tcpreceiver.cc:648,1
    - Dst: getRemoteStringWithPort
      Src: /src/pdns/pdns/tcpreceiver.cc:648,1
    - Dst: getFreshAXFRPacket
      Src: /src/pdns/pdns/tcpreceiver.cc:651,1
    - Dst: SLOG
      Src: /src/pdns/pdns/tcpreceiver.cc:656,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/tcpreceiver.cc:657,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/tcpreceiver.cc:657,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/tcpreceiver.cc:657,1
    - Dst: getRemoteStringWithPort
      Src: /src/pdns/pdns/tcpreceiver.cc:657,1
    - Dst: lock
      Src: /src/pdns/pdns/tcpreceiver.cc:662,1
    - Dst: DLOG
      Src: /src/pdns/pdns/tcpreceiver.cc:663,1
    - Dst: SLOG
      Src: /src/pdns/pdns/tcpreceiver.cc:663,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/tcpreceiver.cc:664,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/tcpreceiver.cc:664,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/tcpreceiver.cc:664,1
    - Dst: getRemoteStringWithPort
      Src: /src/pdns/pdns/tcpreceiver.cc:664,1
    - Dst: SLOG
      Src: /src/pdns/pdns/tcpreceiver.cc:666,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/tcpreceiver.cc:667,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/tcpreceiver.cc:667,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/tcpreceiver.cc:667,1
    - Dst: getRemoteStringWithPort
      Src: /src/pdns/pdns/tcpreceiver.cc:667,1
    - Dst: make_unique<PacketHandler>
      Src: /src/pdns/pdns/tcpreceiver.cc:668,1
    - Dst: TCPNameserver::canDoAXFR
      Src: /src/pdns/pdns/tcpreceiver.cc:672,1
    - Dst: SLOG
      Src: /src/pdns/pdns/tcpreceiver.cc:673,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/tcpreceiver.cc:674,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/tcpreceiver.cc:674,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/tcpreceiver.cc:674,1
    - Dst: getRemoteStringWithPort
      Src: /src/pdns/pdns/tcpreceiver.cc:674,1
    - Dst: std::unique_ptr::setRcode
      Src: /src/pdns/pdns/tcpreceiver.cc:675,1
    - Dst: TCPNameserver::sendPacket
      Src: /src/pdns/pdns/tcpreceiver.cc:676,1
    - Dst: getBackend
      Src: /src/pdns/pdns/tcpreceiver.cc:680,1
    - Dst: SLOG
      Src: /src/pdns/pdns/tcpreceiver.cc:681,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/tcpreceiver.cc:682,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/tcpreceiver.cc:682,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/tcpreceiver.cc:682,1
    - Dst: getRemoteStringWithPort
      Src: /src/pdns/pdns/tcpreceiver.cc:682,1
    - Dst: std::unique_ptr::setRcode
      Src: /src/pdns/pdns/tcpreceiver.cc:683,1
    - Dst: TCPNameserver::sendPacket
      Src: /src/pdns/pdns/tcpreceiver.cc:684,1
    - Dst: UeberBackend::UeberBackend
      Src: /src/pdns/pdns/tcpreceiver.cc:689,1
    - Dst: UeberBackend::getSOAUncached
      Src: /src/pdns/pdns/tcpreceiver.cc:690,1
    - Dst: SLOG
      Src: /src/pdns/pdns/tcpreceiver.cc:691,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/tcpreceiver.cc:692,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/tcpreceiver.cc:692,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/tcpreceiver.cc:692,1
    - Dst: getRemoteStringWithPort
      Src: /src/pdns/pdns/tcpreceiver.cc:692,1
    - Dst: std::unique_ptr::setRcode
      Src: /src/pdns/pdns/tcpreceiver.cc:693,1
    - Dst: TCPNameserver::sendPacket
      Src: /src/pdns/pdns/tcpreceiver.cc:694,1
    - Dst: SOAData::db::getDomainInfo
      Src: /src/pdns/pdns/tcpreceiver.cc:704,1
    - Dst: DomainInfo::isCatalogType
      Src: /src/pdns/pdns/tcpreceiver.cc:704,1
    - Dst: NSEC3PARAMRecordContent::NSEC3PARAMRecordContent
      Src: /src/pdns/pdns/tcpreceiver.cc:706,1
    - Dst: DNSSECKeeper::clearCaches
      Src: /src/pdns/pdns/tcpreceiver.cc:709,1
    - Dst: DNSSECKeeper::isSecuredZone
      Src: /src/pdns/pdns/tcpreceiver.cc:711,1
    - Dst: DNSSECKeeper::isPresigned
      Src: /src/pdns/pdns/tcpreceiver.cc:712,1
    - Dst: DNSSECKeeper::getNSEC3PARAM
      Src: /src/pdns/pdns/tcpreceiver.cc:715,1
    - Dst: SLOG
      Src: /src/pdns/pdns/tcpreceiver.cc:718,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/tcpreceiver.cc:719,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/tcpreceiver.cc:719,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/tcpreceiver.cc:719,1
    - Dst: getRemoteStringWithPort
      Src: /src/pdns/pdns/tcpreceiver.cc:719,1
    - Dst: std::unique_ptr::setRcode
      Src: /src/pdns/pdns/tcpreceiver.cc:720,1
    - Dst: TCPNameserver::sendPacket
      Src: /src/pdns/pdns/tcpreceiver.cc:721,1
    - Dst: TSIGRecordContent::TSIGRecordContent
      Src: /src/pdns/pdns/tcpreceiver.cc:726,1
    - Dst: DNSName::DNSName
      Src: /src/pdns/pdns/tcpreceiver.cc:727,1
    - Dst: getTSIGDetails
      Src: /src/pdns/pdns/tcpreceiver.cc:730,1
    - Dst: DNSName::empty
      Src: /src/pdns/pdns/tcpreceiver.cc:732,1
    - Dst: UeberBackend::getTSIGKey
      Src: /src/pdns/pdns/tcpreceiver.cc:739,1
    - Dst: SLOG
      Src: /src/pdns/pdns/tcpreceiver.cc:740,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/tcpreceiver.cc:741,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/tcpreceiver.cc:741,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/tcpreceiver.cc:741,1
    - Dst: getRemoteStringWithPort
      Src: /src/pdns/pdns/tcpreceiver.cc:741,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/tcpreceiver.cc:741,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/tcpreceiver.cc:741,1
    - Dst: std::unique_ptr::setRcode
      Src: /src/pdns/pdns/tcpreceiver.cc:742,1
    - Dst: TCPNameserver::sendPacket
      Src: /src/pdns/pdns/tcpreceiver.cc:743,1
    - Dst: B64Decode
      Src: /src/pdns/pdns/tcpreceiver.cc:746,1
    - Dst: SLOG
      Src: /src/pdns/pdns/tcpreceiver.cc:747,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/tcpreceiver.cc:748,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/tcpreceiver.cc:748,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/tcpreceiver.cc:748,1
    - Dst: getRemoteStringWithPort
      Src: /src/pdns/pdns/tcpreceiver.cc:748,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/tcpreceiver.cc:748,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/tcpreceiver.cc:748,1
    - Dst: std::unique_ptr::setRcode
      Src: /src/pdns/pdns/tcpreceiver.cc:749,1
    - Dst: TCPNameserver::sendPacket
      Src: /src/pdns/pdns/tcpreceiver.cc:750,1
    - Dst: DLOG
      Src: /src/pdns/pdns/tcpreceiver.cc:758,1
    - Dst: SLOG
      Src: /src/pdns/pdns/tcpreceiver.cc:758,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/tcpreceiver.cc:759,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/tcpreceiver.cc:759,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/tcpreceiver.cc:759,1
    - Dst: getRemoteStringWithPort
      Src: /src/pdns/pdns/tcpreceiver.cc:759,1
    - Dst: makeEditedDNSZRFromSOAData
      Src: /src/pdns/pdns/tcpreceiver.cc:760,1
    - Dst: std::unique_ptr::addRecord
      Src: /src/pdns/pdns/tcpreceiver.cc:761,1
    - Dst: DNSZoneRecord
      Src: /src/pdns/pdns/tcpreceiver.cc:761,1
    - Dst: set::insert
      Src: /src/pdns/pdns/tcpreceiver.cc:764,1
    - Dst: addRRSigs
      Src: /src/pdns/pdns/tcpreceiver.cc:765,1
    - Dst: std::unique_ptr::getRRS
      Src: /src/pdns/pdns/tcpreceiver.cc:765,1
    - Dst: DNSName::empty
      Src: /src/pdns/pdns/tcpreceiver.cc:768,1
    - Dst: std::unique_ptr::setTSIGDetails
      Src: /src/pdns/pdns/tcpreceiver.cc:769,1
    - Dst: TCPNameserver::sendPacket
      Src: /src/pdns/pdns/tcpreceiver.cc:771,1
    - Dst: getFreshAXFRPacket
      Src: /src/pdns/pdns/tcpreceiver.cc:774,1
    - Dst: DNSSECKeeper::getPublishCDNSKEY
      Src: /src/pdns/pdns/tcpreceiver.cc:786,1
    - Dst: DNSSECKeeper::getPublishCDS
      Src: /src/pdns/pdns/tcpreceiver.cc:787,1
    - Dst: DNSSECKeeper::getEntryPoints
      Src: /src/pdns/pdns/tcpreceiver.cc:790,1
    - Dst: set::insert
      Src: /src/pdns/pdns/tcpreceiver.cc:792,1
    - Dst: DNSSECKeeper::getKeys
      Src: /src/pdns/pdns/tcpreceiver.cc:795,1
    - Dst: DNSZoneRecord::dr::setContent
      Src: /src/pdns/pdns/tcpreceiver.cc:801,1
    - Dst: std::make_shared<DNSKEYRecordContent>
      Src: /src/pdns/pdns/tcpreceiver.cc:801,1
    - Dst: first::getDNSKEY
      Src: /src/pdns/pdns/tcpreceiver.cc:801,1
    - Dst: DNSName
      Src: /src/pdns/pdns/tcpreceiver.cc:802,1
    - Dst: toBase32Hex
      Src: /src/pdns/pdns/tcpreceiver.cc:802,1
    - Dst: hashQNameWithSalt
      Src: /src/pdns/pdns/tcpreceiver.cc:802,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/tcpreceiver.cc:803,1
    - Dst: set::count
      Src: /src/pdns/pdns/tcpreceiver.cc:806,1
    - Dst: string::empty
      Src: /src/pdns/pdns/tcpreceiver.cc:807,1
    - Dst: DNSZoneRecord::dr::setContent
      Src: /src/pdns/pdns/tcpreceiver.cc:811,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/tcpreceiver.cc:812,1
    - Dst: DNSZoneRecord::dr::setContent
      Src: /src/pdns/pdns/tcpreceiver.cc:814,1
    - Dst: std::make_shared<DNSKEYRecordContent>
      Src: /src/pdns/pdns/tcpreceiver.cc:814,1
    - Dst: first::getDNSKEY
      Src: /src/pdns/pdns/tcpreceiver.cc:814,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/tcpreceiver.cc:815,1
    - Dst: empty
      Src: /src/pdns/pdns/tcpreceiver.cc:819,1
    - Dst: stringtok
      Src: /src/pdns/pdns/tcpreceiver.cc:822,1
    - Dst: std::find
      Src: /src/pdns/pdns/tcpreceiver.cc:823,1
    - Dst: vector::begin
      Src: /src/pdns/pdns/tcpreceiver.cc:823,1
    - Dst: vector::end
      Src: /src/pdns/pdns/tcpreceiver.cc:823,1
    - Dst: vector::end
      Src: /src/pdns/pdns/tcpreceiver.cc:823,1
    - Dst: DNSZoneRecord::dr::setContent
      Src: /src/pdns/pdns/tcpreceiver.cc:825,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/tcpreceiver.cc:826,1
    - Dst: DNSZoneRecord::dr::setContent
      Src: /src/pdns/pdns/tcpreceiver.cc:829,1
    - Dst: std::make_shared<DSRecordContent>
      Src: /src/pdns/pdns/tcpreceiver.cc:829,1
    - Dst: makeDSFromDNSKey
      Src: /src/pdns/pdns/tcpreceiver.cc:829,1
    - Dst: first::getDNSKEY
      Src: /src/pdns/pdns/tcpreceiver.cc:829,1
    - Dst: pdns::checked_stoi<uint8_t>
      Src: /src/pdns/pdns/tcpreceiver.cc:829,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/tcpreceiver.cc:830,1
    - Dst: DNSZoneRecord::dr::setContent
      Src: /src/pdns/pdns/tcpreceiver.cc:843,1
    - Dst: std::make_shared<NSEC3PARAMRecordContent>
      Src: /src/pdns/pdns/tcpreceiver.cc:843,1
    - Dst: DNSName
      Src: /src/pdns/pdns/tcpreceiver.cc:845,1
    - Dst: toBase32Hex
      Src: /src/pdns/pdns/tcpreceiver.cc:845,1
    - Dst: hashQNameWithSalt
      Src: /src/pdns/pdns/tcpreceiver.cc:845,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/tcpreceiver.cc:846,1
    - Dst: arg
      Src: /src/pdns/pdns/tcpreceiver.cc:849,1
    - Dst: SOAData::db::lookup
      Src: /src/pdns/pdns/tcpreceiver.cc:855,1
    - Dst: SOAData::db::get
      Src: /src/pdns/pdns/tcpreceiver.cc:856,1
    - Dst: vector::emplace_back
      Src: /src/pdns/pdns/tcpreceiver.cc:857,1
    - Dst: vector::empty
      Src: /src/pdns/pdns/tcpreceiver.cc:859,1
    - Dst: DNSZoneRecord::dr::setContent
      Src: /src/pdns/pdns/tcpreceiver.cc:863,1
    - Dst: std::make_shared<NSRecordContent>
      Src: /src/pdns/pdns/tcpreceiver.cc:863,1
    - Dst: vector::emplace_back
      Src: /src/pdns/pdns/tcpreceiver.cc:864,1
    - Dst: vector::emplace_back
      Src: /src/pdns/pdns/tcpreceiver.cc:867,1
    - Dst: CatalogInfo::getCatalogVersionRecord
      Src: /src/pdns/pdns/tcpreceiver.cc:867,1
    - Dst: SOAData::db::getCatalogMembers
      Src: /src/pdns/pdns/tcpreceiver.cc:870,1
    - Dst: SLOG
      Src: /src/pdns/pdns/tcpreceiver.cc:871,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/tcpreceiver.cc:872,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/tcpreceiver.cc:872,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/tcpreceiver.cc:872,1
    - Dst: getRemoteStringWithPort
      Src: /src/pdns/pdns/tcpreceiver.cc:872,1
    - Dst: std::unique_ptr::setRcode
      Src: /src/pdns/pdns/tcpreceiver.cc:873,1
    - Dst: TCPNameserver::sendPacket
      Src: /src/pdns/pdns/tcpreceiver.cc:874,1
    - Dst: toDNSZoneRecords
      Src: /src/pdns/pdns/tcpreceiver.cc:878,1
    - Dst: vector::empty
      Src: /src/pdns/pdns/tcpreceiver.cc:880,1
    - Dst: SLOG
      Src: /src/pdns/pdns/tcpreceiver.cc:881,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/tcpreceiver.cc:882,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/tcpreceiver.cc:882,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/tcpreceiver.cc:882,1
    - Dst: getRemoteStringWithPort
      Src: /src/pdns/pdns/tcpreceiver.cc:882,1
    - Dst: SOAData::db::list
      Src: /src/pdns/pdns/tcpreceiver.cc:889,1
    - Dst: SLOG
      Src: /src/pdns/pdns/tcpreceiver.cc:890,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/tcpreceiver.cc:891,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/tcpreceiver.cc:891,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/tcpreceiver.cc:891,1
    - Dst: getRemoteStringWithPort
      Src: /src/pdns/pdns/tcpreceiver.cc:891,1
    - Dst: std::unique_ptr::setRcode
      Src: /src/pdns/pdns/tcpreceiver.cc:892,1
    - Dst: TCPNameserver::sendPacket
      Src: /src/pdns/pdns/tcpreceiver.cc:893,1
    - Dst: SOAData::db::get
      Src: /src/pdns/pdns/tcpreceiver.cc:897,1
    - Dst: arg
      Src: /src/pdns/pdns/tcpreceiver.cc:903,1
    - Dst: DNSZoneRecord::dr::d_name::makeUsLowerCase
      Src: /src/pdns/pdns/tcpreceiver.cc:910,1
    - Dst: DNSZoneRecord::dr::d_name::isPartOf
      Src: /src/pdns/pdns/tcpreceiver.cc:911,1
    - Dst: arg
      Src: /src/pdns/pdns/tcpreceiver.cc:912,1
    - Dst: arg
      Src: /src/pdns/pdns/tcpreceiver.cc:912,1
    - Dst: stubDoResolve
      Src: /src/pdns/pdns/tcpreceiver.cc:914,1
    - Dst: getRR
      Src: /src/pdns/pdns/tcpreceiver.cc:914,1
    - Dst: stubDoResolve
      Src: /src/pdns/pdns/tcpreceiver.cc:915,1
    - Dst: getRR
      Src: /src/pdns/pdns/tcpreceiver.cc:915,1
    - Dst: arg
      Src: /src/pdns/pdns/tcpreceiver.cc:917,1
    - Dst: SLOG
      Src: /src/pdns/pdns/tcpreceiver.cc:919,1
    - Dst: DNSZoneRecord::dr::d_name::toLogString
      Src: /src/pdns/pdns/tcpreceiver.cc:919,1
    - Dst: DNSZoneRecord::dr::getContent
      Src: /src/pdns/pdns/tcpreceiver.cc:919,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/tcpreceiver.cc:920,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/tcpreceiver.cc:920,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/tcpreceiver.cc:920,1
    - Dst: getRemoteStringWithPort
      Src: /src/pdns/pdns/tcpreceiver.cc:920,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/tcpreceiver.cc:920,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/tcpreceiver.cc:920,1
    - Dst: DNSZoneRecord::dr::getContent
      Src: /src/pdns/pdns/tcpreceiver.cc:920,1
    - Dst: SLOG
      Src: /src/pdns/pdns/tcpreceiver.cc:923,1
    - Dst: DNSZoneRecord::dr::d_name::toLogString
      Src: /src/pdns/pdns/tcpreceiver.cc:923,1
    - Dst: DNSZoneRecord::dr::getContent
      Src: /src/pdns/pdns/tcpreceiver.cc:923,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/tcpreceiver.cc:924,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/tcpreceiver.cc:924,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/tcpreceiver.cc:924,1
    - Dst: getRemoteStringWithPort
      Src: /src/pdns/pdns/tcpreceiver.cc:924,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/tcpreceiver.cc:924,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/tcpreceiver.cc:924,1
    - Dst: DNSZoneRecord::dr::getContent
      Src: /src/pdns/pdns/tcpreceiver.cc:924,1
    - Dst: SLOG
      Src: /src/pdns/pdns/tcpreceiver.cc:928,1
    - Dst: DNSZoneRecord::dr::d_name::toLogString
      Src: /src/pdns/pdns/tcpreceiver.cc:928,1
    - Dst: DNSZoneRecord::dr::getContent
      Src: /src/pdns/pdns/tcpreceiver.cc:928,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/tcpreceiver.cc:929,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/tcpreceiver.cc:929,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/tcpreceiver.cc:929,1
    - Dst: getRemoteStringWithPort
      Src: /src/pdns/pdns/tcpreceiver.cc:929,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/tcpreceiver.cc:929,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/tcpreceiver.cc:929,1
    - Dst: DNSZoneRecord::dr::getContent
      Src: /src/pdns/pdns/tcpreceiver.cc:929,1
    - Dst: std::unique_ptr::setRcode
      Src: /src/pdns/pdns/tcpreceiver.cc:930,1
    - Dst: TCPNameserver::sendPacket
      Src: /src/pdns/pdns/tcpreceiver.cc:931,1
    - Dst: DNSZoneRecord::dr::setContent
      Src: /src/pdns/pdns/tcpreceiver.cc:937,1
    - Dst: dr::getContent
      Src: /src/pdns/pdns/tcpreceiver.cc:937,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/tcpreceiver.cc:938,1
    - Dst: set::insert
      Src: /src/pdns/pdns/tcpreceiver.cc:945,1
    - Dst: insert
      Src: /src/pdns/pdns/tcpreceiver.cc:947,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/tcpreceiver.cc:953,1
    - Dst: SLOG
      Src: /src/pdns/pdns/tcpreceiver.cc:956,1
    - Dst: DNSRecordContent::NumberToType
      Src: /src/pdns/pdns/tcpreceiver.cc:956,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/tcpreceiver.cc:957,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/tcpreceiver.cc:957,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/tcpreceiver.cc:957,1
    - Dst: getRemoteStringWithPort
      Src: /src/pdns/pdns/tcpreceiver.cc:957,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/tcpreceiver.cc:957,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/tcpreceiver.cc:957,1
    - Dst: getRR
      Src: /src/pdns/pdns/tcpreceiver.cc:965,1
    - Dst: auto::clone
      Src: /src/pdns/pdns/tcpreceiver.cc:969,1
    - Dst: auto::getTarget
      Src: /src/pdns/pdns/tcpreceiver.cc:973,1
    - Dst: auto::getTarget
      Src: /src/pdns/pdns/tcpreceiver.cc:973,1
    - Dst: auto::autoHint
      Src: /src/pdns/pdns/tcpreceiver.cc:974,1
    - Dst: SOAData::db::lookup
      Src: /src/pdns/pdns/tcpreceiver.cc:975,1
    - Dst: SOAData::db::get
      Src: /src/pdns/pdns/tcpreceiver.cc:978,1
    - Dst: getRR
      Src: /src/pdns/pdns/tcpreceiver.cc:979,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/tcpreceiver.cc:980,1
    - Dst: auto::getCA
      Src: /src/pdns/pdns/tcpreceiver.cc:980,1
    - Dst: vector::size
      Src: /src/pdns/pdns/tcpreceiver.cc:982,1
    - Dst: auto::removeParam
      Src: /src/pdns/pdns/tcpreceiver.cc:983,1
    - Dst: auto::setHints
      Src: /src/pdns/pdns/tcpreceiver.cc:985,1
    - Dst: auto::autoHint
      Src: /src/pdns/pdns/tcpreceiver.cc:989,1
    - Dst: SOAData::db::lookup
      Src: /src/pdns/pdns/tcpreceiver.cc:990,1
    - Dst: SOAData::db::get
      Src: /src/pdns/pdns/tcpreceiver.cc:993,1
    - Dst: getRR
      Src: /src/pdns/pdns/tcpreceiver.cc:994,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/tcpreceiver.cc:995,1
    - Dst: auto::getCA
      Src: /src/pdns/pdns/tcpreceiver.cc:995,1
    - Dst: vector::size
      Src: /src/pdns/pdns/tcpreceiver.cc:997,1
    - Dst: auto::removeParam
      Src: /src/pdns/pdns/tcpreceiver.cc:998,1
    - Dst: auto::setHints
      Src: /src/pdns/pdns/tcpreceiver.cc:1000,1
    - Dst: dr::setContent
      Src: /src/pdns/pdns/tcpreceiver.cc:1004,1
    - Dst: std::move
      Src: /src/pdns/pdns/tcpreceiver.cc:1004,1
    - Dst: sort
      Src: /src/pdns/pdns/tcpreceiver.cc:1010,1
    - Dst: vector::begin
      Src: /src/pdns/pdns/tcpreceiver.cc:1010,1
    - Dst: vector::end
      Src: /src/pdns/pdns/tcpreceiver.cc:1010,1
    - Dst: std::tie
      Src: /src/pdns/pdns/tcpreceiver.cc:1011,1
    - Dst: std::tie
      Src: /src/pdns/pdns/tcpreceiver.cc:1011,1
    - Dst: count
      Src: /src/pdns/pdns/tcpreceiver.cc:1024,1
    - Dst: DNSName::chopOff
      Src: /src/pdns/pdns/tcpreceiver.cc:1028,1
    - Dst: arg
      Src: /src/pdns/pdns/tcpreceiver.cc:1034,1
    - Dst: DNSName::chopOff
      Src: /src/pdns/pdns/tcpreceiver.cc:1039,1
    - Dst: count
      Src: /src/pdns/pdns/tcpreceiver.cc:1041,1
    - Dst: DNSName::chopOff
      Src: /src/pdns/pdns/tcpreceiver.cc:1045,1
    - Dst: set::count
      Src: /src/pdns/pdns/tcpreceiver.cc:1050,1
    - Dst: set::insert
      Src: /src/pdns/pdns/tcpreceiver.cc:1051,1
    - Dst: DNSName::chopOff
      Src: /src/pdns/pdns/tcpreceiver.cc:1053,1
    - Dst: DNSName::chopOff
      Src: /src/pdns/pdns/tcpreceiver.cc:1059,1
    - Dst: set::count
      Src: /src/pdns/pdns/tcpreceiver.cc:1060,1
    - Dst: count
      Src: /src/pdns/pdns/tcpreceiver.cc:1060,1
    - Dst: set::count
      Src: /src/pdns/pdns/tcpreceiver.cc:1060,1
    - Dst: SLOG
      Src: /src/pdns/pdns/tcpreceiver.cc:1062,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/tcpreceiver.cc:1063,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/tcpreceiver.cc:1063,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/tcpreceiver.cc:1063,1
    - Dst: getRemoteStringWithPort
      Src: /src/pdns/pdns/tcpreceiver.cc:1063,1
    - Dst: std::unique_ptr::setRcode
      Src: /src/pdns/pdns/tcpreceiver.cc:1064,1
    - Dst: TCPNameserver::sendPacket
      Src: /src/pdns/pdns/tcpreceiver.cc:1065,1
    - Dst: insert
      Src: /src/pdns/pdns/tcpreceiver.cc:1068,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/tcpreceiver.cc:1079,1
    - Dst: arg
      Src: /src/pdns/pdns/tcpreceiver.cc:1091,1
    - Dst: arg
      Src: /src/pdns/pdns/tcpreceiver.cc:1091,1
    - Dst: DNSName::DNSName
      Src: /src/pdns/pdns/tcpreceiver.cc:1093,1
    - Dst: DTime::DTime
      Src: /src/pdns/pdns/tcpreceiver.cc:1095,1
    - Dst: DTime::set
      Src: /src/pdns/pdns/tcpreceiver.cc:1096,1
    - Dst: getRR
      Src: /src/pdns/pdns/tcpreceiver.cc:1100,1
    - Dst: dr::d_name::makeRelative
      Src: /src/pdns/pdns/tcpreceiver.cc:1101,1
    - Dst: SOAData::qname
      Src: /src/pdns/pdns/tcpreceiver.cc:1101,1
    - Dst: DNSName
      Src: /src/pdns/pdns/tcpreceiver.cc:1103,1
    - Dst: toBase32Hex
      Src: /src/pdns/pdns/tcpreceiver.cc:1103,1
    - Dst: hashQNameWithSalt
      Src: /src/pdns/pdns/tcpreceiver.cc:1103,1
    - Dst: SOAData::getNegativeTTL
      Src: /src/pdns/pdns/tcpreceiver.cc:1106,1
    - Dst: d_set::set
      Src: /src/pdns/pdns/tcpreceiver.cc:1109,1
    - Dst: ChunkedSigningPipe::submit
      Src: /src/pdns/pdns/tcpreceiver.cc:1120,1
    - Dst: std::unique_ptr::getRRS
      Src: /src/pdns/pdns/tcpreceiver.cc:1122,1
    - Dst: ChunkedSigningPipe::getChunk
      Src: /src/pdns/pdns/tcpreceiver.cc:1122,1
    - Dst: std::unique_ptr::getRRS
      Src: /src/pdns/pdns/tcpreceiver.cc:1123,1
    - Dst: DNSName::empty
      Src: /src/pdns/pdns/tcpreceiver.cc:1124,1
    - Dst: std::unique_ptr::setTSIGDetails
      Src: /src/pdns/pdns/tcpreceiver.cc:1125,1
    - Dst: TCPNameserver::sendPacket
      Src: /src/pdns/pdns/tcpreceiver.cc:1126,1
    - Dst: getFreshAXFRPacket
      Src: /src/pdns/pdns/tcpreceiver.cc:1128,1
    - Dst: nsecxrepo_t::begin
      Src: /src/pdns/pdns/tcpreceiver.cc:1137,1
    - Dst: nsecxrepo_t::end
      Src: /src/pdns/pdns/tcpreceiver.cc:1137,1
    - Dst: NSEC3RecordContent::NSEC3RecordContent
      Src: /src/pdns/pdns/tcpreceiver.cc:1139,1
    - Dst: NSEC3RecordContent::set
      Src: /src/pdns/pdns/tcpreceiver.cc:1140,1
    - Dst: NSEC3RecordContent::numberOfTypesSet
      Src: /src/pdns/pdns/tcpreceiver.cc:1141,1
    - Dst: NSEC3RecordContent::isSet
      Src: /src/pdns/pdns/tcpreceiver.cc:1142,1
    - Dst: NSEC3RecordContent::set
      Src: /src/pdns/pdns/tcpreceiver.cc:1143,1
    - Dst: nsecxrepo_t::end
      Src: /src/pdns/pdns/tcpreceiver.cc:1151,1
    - Dst: nsecxrepo_t::begin
      Src: /src/pdns/pdns/tcpreceiver.cc:1152,1
    - Dst: nsecxrepo_t::end
      Src: /src/pdns/pdns/tcpreceiver.cc:1156,1
    - Dst: nsecxrepo_t::begin
      Src: /src/pdns/pdns/tcpreceiver.cc:1157,1
    - Dst: fromBase32Hex
      Src: /src/pdns/pdns/tcpreceiver.cc:1159,1
    - Dst: nsecxrepo_t::const_iterator::first::toStringNoDot
      Src: /src/pdns/pdns/tcpreceiver.cc:1159,1
    - Dst: SOAData::qname
      Src: /src/pdns/pdns/tcpreceiver.cc:1160,1
    - Dst: SOAData::getNegativeTTL
      Src: /src/pdns/pdns/tcpreceiver.cc:1162,1
    - Dst: DNSZoneRecord::dr::setContent
      Src: /src/pdns/pdns/tcpreceiver.cc:1163,1
    - Dst: std::make_shared<NSEC3RecordContent>
      Src: /src/pdns/pdns/tcpreceiver.cc:1163,1
    - Dst: std::move
      Src: /src/pdns/pdns/tcpreceiver.cc:1163,1
    - Dst: ChunkedSigningPipe::submit
      Src: /src/pdns/pdns/tcpreceiver.cc:1167,1
    - Dst: std::unique_ptr::getRRS
      Src: /src/pdns/pdns/tcpreceiver.cc:1169,1
    - Dst: ChunkedSigningPipe::getChunk
      Src: /src/pdns/pdns/tcpreceiver.cc:1169,1
    - Dst: std::unique_ptr::getRRS
      Src: /src/pdns/pdns/tcpreceiver.cc:1170,1
    - Dst: DNSName::empty
      Src: /src/pdns/pdns/tcpreceiver.cc:1171,1
    - Dst: std::unique_ptr::setTSIGDetails
      Src: /src/pdns/pdns/tcpreceiver.cc:1172,1
    - Dst: TCPNameserver::sendPacket
      Src: /src/pdns/pdns/tcpreceiver.cc:1173,1
    - Dst: getFreshAXFRPacket
      Src: /src/pdns/pdns/tcpreceiver.cc:1175,1
    - Dst: nsecxrepo_t::begin
      Src: /src/pdns/pdns/tcpreceiver.cc:1184,1
    - Dst: nsecxrepo_t::end
      Src: /src/pdns/pdns/tcpreceiver.cc:1184,1
    - Dst: NSECRecordContent::NSECRecordContent
      Src: /src/pdns/pdns/tcpreceiver.cc:1185,1
    - Dst: NSECRecordContent::set
      Src: /src/pdns/pdns/tcpreceiver.cc:1186,1
    - Dst: NSECRecordContent::set
      Src: /src/pdns/pdns/tcpreceiver.cc:1187,1
    - Dst: NSECRecordContent::set
      Src: /src/pdns/pdns/tcpreceiver.cc:1188,1
    - Dst: MDBGenCursor::next
      Src: /src/pdns/pdns/tcpreceiver.cc:1190,1
    - Dst: nsecxrepo_t::end
      Src: /src/pdns/pdns/tcpreceiver.cc:1190,1
    - Dst: MDBGenCursor::next
      Src: /src/pdns/pdns/tcpreceiver.cc:1191,1
    - Dst: nsecxrepo_t::begin
      Src: /src/pdns/pdns/tcpreceiver.cc:1193,1
    - Dst: SOAData::getNegativeTTL
      Src: /src/pdns/pdns/tcpreceiver.cc:1196,1
    - Dst: DNSZoneRecord::dr::setContent
      Src: /src/pdns/pdns/tcpreceiver.cc:1197,1
    - Dst: std::make_shared<NSECRecordContent>
      Src: /src/pdns/pdns/tcpreceiver.cc:1197,1
    - Dst: std::move
      Src: /src/pdns/pdns/tcpreceiver.cc:1197,1
    - Dst: ChunkedSigningPipe::submit
      Src: /src/pdns/pdns/tcpreceiver.cc:1201,1
    - Dst: std::unique_ptr::getRRS
      Src: /src/pdns/pdns/tcpreceiver.cc:1203,1
    - Dst: ChunkedSigningPipe::getChunk
      Src: /src/pdns/pdns/tcpreceiver.cc:1203,1
    - Dst: std::unique_ptr::getRRS
      Src: /src/pdns/pdns/tcpreceiver.cc:1204,1
    - Dst: DNSName::empty
      Src: /src/pdns/pdns/tcpreceiver.cc:1205,1
    - Dst: std::unique_ptr::setTSIGDetails
      Src: /src/pdns/pdns/tcpreceiver.cc:1206,1
    - Dst: TCPNameserver::sendPacket
      Src: /src/pdns/pdns/tcpreceiver.cc:1207,1
    - Dst: getFreshAXFRPacket
      Src: /src/pdns/pdns/tcpreceiver.cc:1209,1
    - Dst: std::unique_ptr::getRRS
      Src: /src/pdns/pdns/tcpreceiver.cc:1218,1
    - Dst: ChunkedSigningPipe::getChunk
      Src: /src/pdns/pdns/tcpreceiver.cc:1218,1
    - Dst: std::unique_ptr::getRRS
      Src: /src/pdns/pdns/tcpreceiver.cc:1219,1
    - Dst: DNSName::empty
      Src: /src/pdns/pdns/tcpreceiver.cc:1220,1
    - Dst: std::unique_ptr::setTSIGDetails
      Src: /src/pdns/pdns/tcpreceiver.cc:1221,1
    - Dst: TCPNameserver::sendPacket
      Src: /src/pdns/pdns/tcpreceiver.cc:1223,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/tcpreceiver.cc:1226,1
    - Dst: toString
      Src: /src/pdns/pdns/tcpreceiver.cc:1226,1
    - Dst: getFreshAXFRPacket
      Src: /src/pdns/pdns/tcpreceiver.cc:1229,1
    - Dst: DTime::udiffNoReset
      Src: /src/pdns/pdns/tcpreceiver.cc:1235,1
    - Dst: SLOG
      Src: /src/pdns/pdns/tcpreceiver.cc:1237,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/tcpreceiver.cc:1238,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/tcpreceiver.cc:1238,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/tcpreceiver.cc:1238,1
    - Dst: getRemoteStringWithPort
      Src: /src/pdns/pdns/tcpreceiver.cc:1238,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/tcpreceiver.cc:1238,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/tcpreceiver.cc:1238,1
    - Dst: DLOG
      Src: /src/pdns/pdns/tcpreceiver.cc:1241,1
    - Dst: SLOG
      Src: /src/pdns/pdns/tcpreceiver.cc:1241,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/tcpreceiver.cc:1242,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/tcpreceiver.cc:1242,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/tcpreceiver.cc:1242,1
    - Dst: getRemoteStringWithPort
      Src: /src/pdns/pdns/tcpreceiver.cc:1242,1
    - Dst: getFreshAXFRPacket
      Src: /src/pdns/pdns/tcpreceiver.cc:1244,1
    - Dst: std::unique_ptr::addRecord
      Src: /src/pdns/pdns/tcpreceiver.cc:1245,1
    - Dst: std::move
      Src: /src/pdns/pdns/tcpreceiver.cc:1245,1
    - Dst: DNSName::empty
      Src: /src/pdns/pdns/tcpreceiver.cc:1246,1
    - Dst: std::unique_ptr::setTSIGDetails
      Src: /src/pdns/pdns/tcpreceiver.cc:1247,1
    - Dst: TCPNameserver::sendPacket
      Src: /src/pdns/pdns/tcpreceiver.cc:1249,1
    - Dst: DLOG
      Src: /src/pdns/pdns/tcpreceiver.cc:1251,1
    - Dst: SLOG
      Src: /src/pdns/pdns/tcpreceiver.cc:1251,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/tcpreceiver.cc:1252,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/tcpreceiver.cc:1252,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/tcpreceiver.cc:1252,1
    - Dst: getRemoteStringWithPort
      Src: /src/pdns/pdns/tcpreceiver.cc:1252,1
    - Dst: SLOG
      Src: /src/pdns/pdns/tcpreceiver.cc:1253,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/tcpreceiver.cc:1254,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/tcpreceiver.cc:1254,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/tcpreceiver.cc:1254,1
    - Dst: getRemoteStringWithPort
      Src: /src/pdns/pdns/tcpreceiver.cc:1254,1
    CyclomaticComplexity: 181
    EdgeCount: 181
    ICount: 431
    argCount: 4
    argNames:
    - targetZone
    - ' q'
    - outsock
    - slog
    argTypes:
    - ZoneName
    - std::unique_ptr<DNSPacket>
    - int
    - Logr::log_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1257
      start: 642
    functionDepth: 3
    functionLinenumber: 642
    functionLinenumberEnd: 1257
    functionName: TCPNameserver::doAXFR
    functionSourceFile: /src/pdns/pdns/tcpreceiver.cc
    functionUses: 1
    functionsReached:
    - DNSSECKeeper::isSecuredZone
    - DNSZoneRecord::dr::d_name::makeUsLowerCase
    - std::make_shared<NSRecordContent>
    - SOAData::db::list
    - ChunkedSigningPipe::submit
    - toDNSZoneRecords
    - std::make_shared<NSEC3RecordContent>
    - vector::begin
    - DNSName::chopOff
    - nsecxrepo_t::end
    - lock
    - auto::setHints
    - nsecxrepo_t::const_iterator::first::toStringNoDot
    - std::tie
    - fromBase32Hex
    - auto::getCA
    - DNSZoneRecord::dr::getContent
    - TCPNameserver::canDoAXFR
    - std::unique_ptr::getRRS
    - vector::push_back
    - DNSSECKeeper::getKeys
    - getRemoteStringWithPort
    - vector::end
    - std::unique_ptr::setRcode
    - SOAData::db::getCatalogMembers
    - DNSSECKeeper::getPublishCDS
    - arg
    - DNSZoneRecord::dr::d_name::isPartOf
    - make_unique<PacketHandler>
    - getRR
    - toBase32Hex
    - DLOG
    - DNSSECKeeper::isPresigned
    - std::unique_ptr::addRecord
    - toString
    - addRRSigs
    - DNSSECKeeper::getPublishCDNSKEY
    - dr::d_name::makeRelative
    - std::make_shared<DSRecordContent>
    - TSIGRecordContent::TSIGRecordContent
    - nsecxrepo_t::begin
    - NSECRecordContent::NSECRecordContent
    - TCPNameserver::sendPacket
    - Logr::log_t::info
    - string::empty
    - CatalogInfo::getCatalogVersionRecord
    - DNSSECKeeper::getEntryPoints
    - first::getDNSKEY
    - makeEditedDNSZRFromSOAData
    - NSEC3RecordContent::numberOfTypesSet
    - ChunkedSigningPipe::getChunk
    - stubDoResolve
    - DNSSECKeeper::clearCaches
    - std::make_shared<DNSKEYRecordContent>
    - DNSName
    - auto::autoHint
    - vector::empty
    - makeDSFromDNSKey
    - SOAData::db::lookup
    - auto::clone
    - auto::getTarget
    - auto::removeParam
    - DNSZoneRecord
    - DNSZoneRecord::dr::d_name::toLogString
    - DTime::udiffNoReset
    - getBackend
    - std::find
    - std::make_shared<NSEC3PARAMRecordContent>
    - SOAData::db::get
    - vector::size
    - PDNSException
    - DTime::set
    - hashQNameWithSalt
    - set::insert
    - DNSZoneRecord::dr::setContent
    - UeberBackend::UeberBackend
    - DTime::DTime
    - NSEC3RecordContent::NSEC3RecordContent
    - ZoneName::toLogString
    - empty
    - std::make_shared<NSECRecordContent>
    - SOAData::getNegativeTTL
    - getTSIGDetails
    - UeberBackend::getTSIGKey
    - d_set::set
    - DNSName::empty
    - NSEC3RecordContent::isSet
    - NSECRecordContent::set
    - getFreshAXFRPacket
    - std::move
    - NSEC3RecordContent::set
    - count
    - set::count
    - SOAData::qname
    - SOAData::db::getDomainInfo
    - sort
    - insert
    - UeberBackend::getSOAUncached
    - std::unique_ptr::setTSIGDetails
    - SLOG
    - stringtok
    - pdns::checked_stoi<uint8_t>
    - Logging::Loggable
    - B64Decode
    - dr::getContent
    - DNSRecordContent::NumberToType
    - MDBGenCursor::next
    - DomainInfo::isCatalogType
    - DNSSECKeeper::getNSEC3PARAM
    - dr::setContent
    - NSEC3PARAMRecordContent::NSEC3PARAMRecordContent
    - vector::emplace_back
    - DNSName::DNSName
    linkageType: ''
    returnType: int
    signature: int TCPNameserver::doAXFR(const ZoneName &targetZone, std::unique_ptr<DNSPacket>&
      q, int outsock, Logr::log_t slog)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: qdomainzone::toLogString
      Src: /src/pdns/pdns/tcpreceiver.cc:1264,1
    - Dst: getRemoteStringWithPort
      Src: /src/pdns/pdns/tcpreceiver.cc:1264,1
    - Dst: getFreshAXFRPacket
      Src: /src/pdns/pdns/tcpreceiver.cc:1267,1
    - Dst: getString
      Src: /src/pdns/pdns/tcpreceiver.cc:1272,1
    - Dst: stringtok
      Src: /src/pdns/pdns/tcpreceiver.cc:1277,1
    - Dst: DNSRecord*::getContent
      Src: /src/pdns/pdns/tcpreceiver.cc:1277,1
    - Dst: vector::size
      Src: /src/pdns/pdns/tcpreceiver.cc:1278,1
    - Dst: pdns::checked_stoi_into
      Src: /src/pdns/pdns/tcpreceiver.cc:1280,1
    - Dst: SLOG
      Src: /src/pdns/pdns/tcpreceiver.cc:1283,1
    - Dst: Logr::log_t::error
      Src: /src/pdns/pdns/tcpreceiver.cc:1284,1
    - Dst: what
      Src: /src/pdns/pdns/tcpreceiver.cc:1284,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/tcpreceiver.cc:1284,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/tcpreceiver.cc:1284,1
    - Dst: getRemoteStringWithPort
      Src: /src/pdns/pdns/tcpreceiver.cc:1284,1
    - Dst: std::unique_ptr::setRcode
      Src: /src/pdns/pdns/tcpreceiver.cc:1285,1
    - Dst: TCPNameserver::sendPacket
      Src: /src/pdns/pdns/tcpreceiver.cc:1286,1
    - Dst: SLOG
      Src: /src/pdns/pdns/tcpreceiver.cc:1290,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/tcpreceiver.cc:1291,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/tcpreceiver.cc:1291,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/tcpreceiver.cc:1291,1
    - Dst: getRemoteStringWithPort
      Src: /src/pdns/pdns/tcpreceiver.cc:1291,1
    - Dst: std::unique_ptr::setRcode
      Src: /src/pdns/pdns/tcpreceiver.cc:1292,1
    - Dst: TCPNameserver::sendPacket
      Src: /src/pdns/pdns/tcpreceiver.cc:1293,1
    - Dst: SLOG
      Src: /src/pdns/pdns/tcpreceiver.cc:1297,1
    - Dst: QType
      Src: /src/pdns/pdns/tcpreceiver.cc:1297,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/tcpreceiver.cc:1298,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/tcpreceiver.cc:1298,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/tcpreceiver.cc:1298,1
    - Dst: getRemoteStringWithPort
      Src: /src/pdns/pdns/tcpreceiver.cc:1298,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/tcpreceiver.cc:1298,1
    - Dst: std::unique_ptr::setRcode
      Src: /src/pdns/pdns/tcpreceiver.cc:1299,1
    - Dst: TCPNameserver::sendPacket
      Src: /src/pdns/pdns/tcpreceiver.cc:1300,1
    - Dst: SLOG
      Src: /src/pdns/pdns/tcpreceiver.cc:1305,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/tcpreceiver.cc:1306,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/tcpreceiver.cc:1306,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/tcpreceiver.cc:1306,1
    - Dst: getRemoteStringWithPort
      Src: /src/pdns/pdns/tcpreceiver.cc:1306,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/tcpreceiver.cc:1306,1
    - Dst: lock
      Src: /src/pdns/pdns/tcpreceiver.cc:1313,1
    - Dst: DLOG
      Src: /src/pdns/pdns/tcpreceiver.cc:1315,1
    - Dst: SLOG
      Src: /src/pdns/pdns/tcpreceiver.cc:1315,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/tcpreceiver.cc:1316,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/tcpreceiver.cc:1316,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/tcpreceiver.cc:1316,1
    - Dst: getRemoteStringWithPort
      Src: /src/pdns/pdns/tcpreceiver.cc:1316,1
    - Dst: SLOG
      Src: /src/pdns/pdns/tcpreceiver.cc:1318,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/tcpreceiver.cc:1319,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/tcpreceiver.cc:1319,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/tcpreceiver.cc:1319,1
    - Dst: getRemoteStringWithPort
      Src: /src/pdns/pdns/tcpreceiver.cc:1319,1
    - Dst: make_unique<PacketHandler>
      Src: /src/pdns/pdns/tcpreceiver.cc:1320,1
    - Dst: TCPNameserver::canDoAXFR
      Src: /src/pdns/pdns/tcpreceiver.cc:1324,1
    - Dst: getBackend
      Src: /src/pdns/pdns/tcpreceiver.cc:1324,1
    - Dst: SLOG
      Src: /src/pdns/pdns/tcpreceiver.cc:1325,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/tcpreceiver.cc:1326,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/tcpreceiver.cc:1326,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/tcpreceiver.cc:1326,1
    - Dst: getRemoteStringWithPort
      Src: /src/pdns/pdns/tcpreceiver.cc:1326,1
    - Dst: std::unique_ptr::setRcode
      Src: /src/pdns/pdns/tcpreceiver.cc:1327,1
    - Dst: TCPNameserver::sendPacket
      Src: /src/pdns/pdns/tcpreceiver.cc:1328,1
    - Dst: getBackend
      Src: /src/pdns/pdns/tcpreceiver.cc:1332,1
    - Dst: DNSSECKeeper::clearCaches
      Src: /src/pdns/pdns/tcpreceiver.cc:1333,1
    - Dst: DNSSECKeeper::isSecuredZone
      Src: /src/pdns/pdns/tcpreceiver.cc:1335,1
    - Dst: DNSSECKeeper::getNSEC3PARAM
      Src: /src/pdns/pdns/tcpreceiver.cc:1336,1
    - Dst: SLOG
      Src: /src/pdns/pdns/tcpreceiver.cc:1338,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/tcpreceiver.cc:1339,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/tcpreceiver.cc:1339,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/tcpreceiver.cc:1339,1
    - Dst: getRemoteStringWithPort
      Src: /src/pdns/pdns/tcpreceiver.cc:1339,1
    - Dst: std::unique_ptr::setRcode
      Src: /src/pdns/pdns/tcpreceiver.cc:1340,1
    - Dst: TCPNameserver::sendPacket
      Src: /src/pdns/pdns/tcpreceiver.cc:1341,1
    - Dst: rfc1982LessThan
      Src: /src/pdns/pdns/tcpreceiver.cc:1346,1
    - Dst: calculateEditSOA
      Src: /src/pdns/pdns/tcpreceiver.cc:1346,1
    - Dst: TSIGRecordContent::TSIGRecordContent
      Src: /src/pdns/pdns/tcpreceiver.cc:1351,1
    - Dst: DNSName::DNSName
      Src: /src/pdns/pdns/tcpreceiver.cc:1352,1
    - Dst: UeberBackend::UeberBackend
      Src: /src/pdns/pdns/tcpreceiver.cc:1355,1
    - Dst: getTSIGDetails
      Src: /src/pdns/pdns/tcpreceiver.cc:1358,1
    - Dst: DNSName::empty
      Src: /src/pdns/pdns/tcpreceiver.cc:1360,1
    - Dst: UeberBackend::getTSIGKey
      Src: /src/pdns/pdns/tcpreceiver.cc:1366,1
    - Dst: SLOG
      Src: /src/pdns/pdns/tcpreceiver.cc:1367,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/tcpreceiver.cc:1368,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/tcpreceiver.cc:1368,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/tcpreceiver.cc:1368,1
    - Dst: getRemoteStringWithPort
      Src: /src/pdns/pdns/tcpreceiver.cc:1368,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/tcpreceiver.cc:1368,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/tcpreceiver.cc:1368,1
    - Dst: std::unique_ptr::setRcode
      Src: /src/pdns/pdns/tcpreceiver.cc:1369,1
    - Dst: TCPNameserver::sendPacket
      Src: /src/pdns/pdns/tcpreceiver.cc:1370,1
    - Dst: B64Decode
      Src: /src/pdns/pdns/tcpreceiver.cc:1373,1
    - Dst: SLOG
      Src: /src/pdns/pdns/tcpreceiver.cc:1374,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/tcpreceiver.cc:1375,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/tcpreceiver.cc:1375,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/tcpreceiver.cc:1375,1
    - Dst: getRemoteStringWithPort
      Src: /src/pdns/pdns/tcpreceiver.cc:1375,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/tcpreceiver.cc:1375,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/tcpreceiver.cc:1375,1
    - Dst: std::unique_ptr::setRcode
      Src: /src/pdns/pdns/tcpreceiver.cc:1376,1
    - Dst: TCPNameserver::sendPacket
      Src: /src/pdns/pdns/tcpreceiver.cc:1377,1
    - Dst: DLOG
      Src: /src/pdns/pdns/tcpreceiver.cc:1383,1
    - Dst: SLOG
      Src: /src/pdns/pdns/tcpreceiver.cc:1383,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/tcpreceiver.cc:1384,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/tcpreceiver.cc:1384,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/tcpreceiver.cc:1384,1
    - Dst: getRemoteStringWithPort
      Src: /src/pdns/pdns/tcpreceiver.cc:1384,1
    - Dst: makeEditedDNSZRFromSOAData
      Src: /src/pdns/pdns/tcpreceiver.cc:1385,1
    - Dst: std::unique_ptr::addRecord
      Src: /src/pdns/pdns/tcpreceiver.cc:1386,1
    - Dst: std::move
      Src: /src/pdns/pdns/tcpreceiver.cc:1386,1
    - Dst: set::insert
      Src: /src/pdns/pdns/tcpreceiver.cc:1389,1
    - Dst: addRRSigs
      Src: /src/pdns/pdns/tcpreceiver.cc:1390,1
    - Dst: std::unique_ptr::getRRS
      Src: /src/pdns/pdns/tcpreceiver.cc:1390,1
    - Dst: DNSName::empty
      Src: /src/pdns/pdns/tcpreceiver.cc:1393,1
    - Dst: std::unique_ptr::setTSIGDetails
      Src: /src/pdns/pdns/tcpreceiver.cc:1394,1
    - Dst: TCPNameserver::sendPacket
      Src: /src/pdns/pdns/tcpreceiver.cc:1396,1
    - Dst: SLOG
      Src: /src/pdns/pdns/tcpreceiver.cc:1398,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/tcpreceiver.cc:1399,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/tcpreceiver.cc:1399,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/tcpreceiver.cc:1399,1
    - Dst: getRemoteStringWithPort
      Src: /src/pdns/pdns/tcpreceiver.cc:1399,1
    - Dst: SLOG
      Src: /src/pdns/pdns/tcpreceiver.cc:1404,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/tcpreceiver.cc:1405,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/tcpreceiver.cc:1405,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/tcpreceiver.cc:1405,1
    - Dst: getRemoteStringWithPort
      Src: /src/pdns/pdns/tcpreceiver.cc:1405,1
    - Dst: TCPNameserver::doAXFR
      Src: /src/pdns/pdns/tcpreceiver.cc:1406,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 87
    argCount: 3
    argNames:
    - ' q'
    - outsock
    - slog
    argTypes:
    - std::unique_ptr<DNSPacket>
    - int
    - Logr::log_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1407
      start: 1259
    functionDepth: 4
    functionLinenumber: 1259
    functionLinenumberEnd: 1407
    functionName: TCPNameserver::doIXFR
    functionSourceFile: /src/pdns/pdns/tcpreceiver.cc
    functionUses: 1
    functionsReached:
    - DNSSECKeeper::isSecuredZone
    - std::unique_ptr::addRecord
    - addRRSigs
    - calculateEditSOA
    - TSIGRecordContent::TSIGRecordContent
    - TCPNameserver::doAXFR
    - TCPNameserver::sendPacket
    - std::unique_ptr::setTSIGDetails
    - SLOG
    - stringtok
    - set::insert
    - Logr::log_t::info
    - Logging::Loggable
    - QType
    - Logr::log_t::error
    - B64Decode
    - UeberBackend::UeberBackend
    - lock
    - pdns::checked_stoi_into
    - makeEditedDNSZRFromSOAData
    - TCPNameserver::canDoAXFR
    - getTSIGDetails
    - std::unique_ptr::getRRS
    - getRemoteStringWithPort
    - DNSRecord*::getContent
    - DNSName::DNSName
    - DNSSECKeeper::clearCaches
    - UeberBackend::getTSIGKey
    - std::unique_ptr::setRcode
    - DNSName::empty
    - getFreshAXFRPacket
    - DNSSECKeeper::getNSEC3PARAM
    - make_unique<PacketHandler>
    - std::move
    - rfc1982LessThan
    - what
    - getBackend
    - DLOG
    - getString
    - vector::size
    - qdomainzone::toLogString
    linkageType: ''
    returnType: int
    signature: int TCPNameserver::doIXFR(std::unique_ptr<DNSPacket>& q, int outsock,
      Logr::log_t slog)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1409
      start: 1409
    functionDepth: 0
    functionLinenumber: 1409
    functionLinenumberEnd: 1409
    functionName: TCPNameserver::~TCPNameserver()
    functionSourceFile: /src/pdns/pdns/tcpreceiver.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void TCPNameserver::~TCPNameserver()
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: arg
      Src: /src/pdns/pdns/tcpreceiver.cc:1413,1
    - Dst: arg
      Src: /src/pdns/pdns/tcpreceiver.cc:1414,1
    - Dst: arg
      Src: /src/pdns/pdns/tcpreceiver.cc:1415,1
    - Dst: arg
      Src: /src/pdns/pdns/tcpreceiver.cc:1416,1
    - Dst: make_unique<Semaphore>
      Src: /src/pdns/pdns/tcpreceiver.cc:1419,1
    - Dst: arg
      Src: /src/pdns/pdns/tcpreceiver.cc:1419,1
    - Dst: arg
      Src: /src/pdns/pdns/tcpreceiver.cc:1420,1
    - Dst: stringtok
      Src: /src/pdns/pdns/tcpreceiver.cc:1423,1
    - Dst: arg
      Src: /src/pdns/pdns/tcpreceiver.cc:1423,1
    - Dst: vector::empty
      Src: /src/pdns/pdns/tcpreceiver.cc:1424,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/tcpreceiver.cc:1425,1
    - Dst: toMasks
      Src: /src/pdns/pdns/tcpreceiver.cc:1427,1
    - Dst: arg
      Src: /src/pdns/pdns/tcpreceiver.cc:1427,1
    - Dst: signal
      Src: /src/pdns/pdns/tcpreceiver.cc:1429,1
    - Dst: arg
      Src: /src/pdns/pdns/tcpreceiver.cc:1432,1
    - Dst: socket
      Src: /src/pdns/pdns/tcpreceiver.cc:1434,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/tcpreceiver.cc:1436,1
    - Dst: stringerror
      Src: /src/pdns/pdns/tcpreceiver.cc:1436,1
    - Dst: setCloseOnExec
      Src: /src/pdns/pdns/tcpreceiver.cc:1437,1
    - Dst: setsockopt
      Src: /src/pdns/pdns/tcpreceiver.cc:1440,1
    - Dst: SLOG
      Src: /src/pdns/pdns/tcpreceiver.cc:1441,1
    - Dst: error
      Src: /src/pdns/pdns/tcpreceiver.cc:1442,1
    - Dst: _exit
      Src: /src/pdns/pdns/tcpreceiver.cc:1443,1
    - Dst: arg
      Src: /src/pdns/pdns/tcpreceiver.cc:1446,1
    - Dst: arg
      Src: /src/pdns/pdns/tcpreceiver.cc:1448,1
    - Dst: setsockopt
      Src: /src/pdns/pdns/tcpreceiver.cc:1449,1
    - Dst: SLOG
      Src: /src/pdns/pdns/tcpreceiver.cc:1450,1
    - Dst: ComboAddress::toStringWithPort
      Src: /src/pdns/pdns/tcpreceiver.cc:1450,1
    - Dst: stringerror
      Src: /src/pdns/pdns/tcpreceiver.cc:1450,1
    - Dst: error
      Src: /src/pdns/pdns/tcpreceiver.cc:1451,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/tcpreceiver.cc:1451,1
    - Dst: ComboAddress::toStringWithPort
      Src: /src/pdns/pdns/tcpreceiver.cc:1451,1
    - Dst: SLOG
      Src: /src/pdns/pdns/tcpreceiver.cc:1454,1
    - Dst: info
      Src: /src/pdns/pdns/tcpreceiver.cc:1455,1
    - Dst: arg
      Src: /src/pdns/pdns/tcpreceiver.cc:1459,1
    - Dst: Utility::setBindAny
      Src: /src/pdns/pdns/tcpreceiver.cc:1460,1
    - Dst: ComboAddress::isIPv6
      Src: /src/pdns/pdns/tcpreceiver.cc:1462,1
    - Dst: setsockopt
      Src: /src/pdns/pdns/tcpreceiver.cc:1462,1
    - Dst: SLOG
      Src: /src/pdns/pdns/tcpreceiver.cc:1463,1
    - Dst: stringerror
      Src: /src/pdns/pdns/tcpreceiver.cc:1463,1
    - Dst: error
      Src: /src/pdns/pdns/tcpreceiver.cc:1464,1
    - Dst: Socket::bind
      Src: /src/pdns/pdns/tcpreceiver.cc:1467,1
    - Dst: ComboAddress::getSocklen
      Src: /src/pdns/pdns/tcpreceiver.cc:1467,1
    - Dst: close
      Src: /src/pdns/pdns/tcpreceiver.cc:1469,1
    - Dst: arg
      Src: /src/pdns/pdns/tcpreceiver.cc:1470,1
    - Dst: SLOG
      Src: /src/pdns/pdns/tcpreceiver.cc:1471,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/tcpreceiver.cc:1471,1
    - Dst: info
      Src: /src/pdns/pdns/tcpreceiver.cc:1472,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/tcpreceiver.cc:1472,1
    - Dst: SLOG
      Src: /src/pdns/pdns/tcpreceiver.cc:1475,1
    - Dst: ComboAddress::toStringWithPort
      Src: /src/pdns/pdns/tcpreceiver.cc:1475,1
    - Dst: stringerror
      Src: /src/pdns/pdns/tcpreceiver.cc:1475,1
    - Dst: error
      Src: /src/pdns/pdns/tcpreceiver.cc:1476,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/tcpreceiver.cc:1476,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/tcpreceiver.cc:1477,1
    - Dst: listen
      Src: /src/pdns/pdns/tcpreceiver.cc:1481,1
    - Dst: SLOG
      Src: /src/pdns/pdns/tcpreceiver.cc:1482,1
    - Dst: ComboAddress::toStringWithPort
      Src: /src/pdns/pdns/tcpreceiver.cc:1482,1
    - Dst: info
      Src: /src/pdns/pdns/tcpreceiver.cc:1483,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/tcpreceiver.cc:1483,1
    - Dst: push_back
      Src: /src/pdns/pdns/tcpreceiver.cc:1484,1
    - Dst: memset
      Src: /src/pdns/pdns/tcpreceiver.cc:1486,1
    - Dst: push_back
      Src: /src/pdns/pdns/tcpreceiver.cc:1489,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 49
    argCount: 1
    argNames:
    - slog
    argTypes:
    - Logr::log_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1491
      start: 1410
    functionDepth: 0
    functionLinenumber: 1410
    functionLinenumberEnd: 1491
    functionName: TCPNameserver::TCPNameserver
    functionSourceFile: /src/pdns/pdns/tcpreceiver.cc
    functionUses: 0
    functionsReached:
    - PDNSException
    - stringerror
    - error
    - close
    - ComboAddress::getSocklen
    - SLOG
    - stringtok
    - Logging::Loggable
    - setsockopt
    - memset
    - Utility::setBindAny
    - listen
    - _exit
    - push_back
    - ComboAddress::isIPv6
    - vector::empty
    - setCloseOnExec
    - arg
    - make_unique<Semaphore>
    - ComboAddress::toStringWithPort
    - socket
    - info
    - toMasks
    - ComboAddress::toString
    - Socket::bind
    - signal
    linkageType: ''
    returnType: void
    signature: void TCPNameserver::TCPNameserver(Logr::log_t slog)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: setThreadName
      Src: /src/pdns/pdns/tcpreceiver.cc:1497,1
    - Dst: ComboAddress::getSocklen
      Src: /src/pdns/pdns/tcpreceiver.cc:1502,1
    - Dst: poll
      Src: /src/pdns/pdns/tcpreceiver.cc:1504,1
    - Dst: size
      Src: /src/pdns/pdns/tcpreceiver.cc:1504,1
    - Dst: ComboAddress::getSocklen
      Src: /src/pdns/pdns/tcpreceiver.cc:1513,1
    - Dst: accept
      Src: /src/pdns/pdns/tcpreceiver.cc:1515,1
    - Dst: SLOG
      Src: /src/pdns/pdns/tcpreceiver.cc:1517,1
    - Dst: stringerror
      Src: /src/pdns/pdns/tcpreceiver.cc:1517,1
    - Dst: error
      Src: /src/pdns/pdns/tcpreceiver.cc:1518,1
    - Dst: SLOG
      Src: /src/pdns/pdns/tcpreceiver.cc:1521,1
    - Dst: info
      Src: /src/pdns/pdns/tcpreceiver.cc:1522,1
    - Dst: _exit
      Src: /src/pdns/pdns/tcpreceiver.cc:1523,1
    - Dst: lock
      Src: /src/pdns/pdns/tcpreceiver.cc:1528,1
    - Dst: SLOG
      Src: /src/pdns/pdns/tcpreceiver.cc:1530,1
    - Dst: info
      Src: /src/pdns/pdns/tcpreceiver.cc:1531,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/tcpreceiver.cc:1531,1
    - Dst: close
      Src: /src/pdns/pdns/tcpreceiver.cc:1532,1
    - Dst: wait
      Src: /src/pdns/pdns/tcpreceiver.cc:1538,1
    - Dst: getValue
      Src: /src/pdns/pdns/tcpreceiver.cc:1541,1
    - Dst: SLOG
      Src: /src/pdns/pdns/tcpreceiver.cc:1543,1
    - Dst: info
      Src: /src/pdns/pdns/tcpreceiver.cc:1544,1
    - Dst: std::thread::detach
      Src: /src/pdns/pdns/tcpreceiver.cc:1548,1
    - Dst: SLOG
      Src: /src/pdns/pdns/tcpreceiver.cc:1551,1
    - Dst: what
      Src: /src/pdns/pdns/tcpreceiver.cc:1551,1
    - Dst: error
      Src: /src/pdns/pdns/tcpreceiver.cc:1552,1
    - Dst: what
      Src: /src/pdns/pdns/tcpreceiver.cc:1552,1
    - Dst: post
      Src: /src/pdns/pdns/tcpreceiver.cc:1553,1
    - Dst: close
      Src: /src/pdns/pdns/tcpreceiver.cc:1554,1
    - Dst: TCPNameserver::decrementClientCount
      Src: /src/pdns/pdns/tcpreceiver.cc:1555,1
    - Dst: SLOG
      Src: /src/pdns/pdns/tcpreceiver.cc:1563,1
    - Dst: error
      Src: /src/pdns/pdns/tcpreceiver.cc:1564,1
    - Dst: SLOG
      Src: /src/pdns/pdns/tcpreceiver.cc:1567,1
    - Dst: info
      Src: /src/pdns/pdns/tcpreceiver.cc:1568,1
    - Dst: _exit
      Src: /src/pdns/pdns/tcpreceiver.cc:1570,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 47
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1571
      start: 1495
    functionDepth: 1
    functionLinenumber: 1495
    functionLinenumberEnd: 1571
    functionName: TCPNameserver::thread
    functionSourceFile: /src/pdns/pdns/tcpreceiver.cc
    functionUses: 1
    functionsReached:
    - post
    - stringerror
    - getValue
    - error
    - ComboAddress::getSocklen
    - SLOG
    - Logging::Loggable
    - accept
    - size
    - lock
    - poll
    - TCPNameserver::decrementClientCount
    - setThreadName
    - _exit
    - wait
    - what
    - info
    - std::thread::detach
    - close
    linkageType: ''
    returnType: void
    signature: void TCPNameserver::thread()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getValue
      Src: /src/pdns/pdns/tcpreceiver.cc:1577,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1579
      start: 1574
    functionDepth: 0
    functionLinenumber: 1574
    functionLinenumberEnd: 1579
    functionName: TCPNameserver::numTCPConnections
    functionSourceFile: /src/pdns/pdns/tcpreceiver.cc
    functionUses: 0
    functionsReached:
    - getValue
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int TCPNameserver::numTCPConnections()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::getenv
      Src: /src/pdns/pdns/test-zonemd_cc.cc:16,1
    - Dst: std::ostringstream::str
      Src: /src/pdns/pdns/test-zonemd_cc.cc:23,1
    - Dst: testZoneMD
      Src: /src/pdns/pdns/test-zonemd_cc.cc:28,1
    - Dst: auto::readRecords
      Src: /src/pdns/pdns/test-zonemd_cc.cc:29,1
    - Dst: auto::verify
      Src: /src/pdns/pdns/test-zonemd_cc.cc:30,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-zonemd_cc.cc:33,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-zonemd_cc.cc:36,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-zonemd_cc.cc:39,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-zonemd_cc.cc:40,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 5
    argNames:
    - ' zone'
    - ' file'
    - ex
    - done
    - ok
    argTypes:
    - std::string
    - std::string
    - bool
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 14
    functionDepth: 1
    functionLinenumber: 14
    functionLinenumberEnd: 41
    functionName: testZoneMD
    functionSourceFile: /src/pdns/pdns/test-zonemd_cc.cc
    functionUses: 2
    functionsReached:
    - auto::readRecords
    - std::ostringstream::str
    - auto::verify
    - testZoneMD
    - std::getenv
    - BOOST_CHECK
    linkageType: ''
    returnType: void
    signature: void testZoneMD(const std::string& zone, const std::string& file, bool
      ex, bool done, bool ok)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: testZoneMD
      Src: /src/pdns/pdns/test-zonemd_cc.cc:45,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 43
    functionDepth: 2
    functionLinenumber: 43
    functionLinenumberEnd: 46
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-zonemd_cc.cc
    functionUses: 0
    functionsReached:
    - testZoneMD
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_zonemd1)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: testZoneMD
      Src: /src/pdns/pdns/test-zonemd_cc.cc:50,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 48
    functionDepth: 2
    functionLinenumber: 48
    functionLinenumberEnd: 51
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-zonemd_cc.cc
    functionUses: 0
    functionsReached:
    - testZoneMD
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_zonemd2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: testZoneMD
      Src: /src/pdns/pdns/test-zonemd_cc.cc:55,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 53
    functionDepth: 2
    functionLinenumber: 53
    functionLinenumberEnd: 56
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-zonemd_cc.cc
    functionUses: 0
    functionsReached:
    - testZoneMD
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_zonemd3)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: testZoneMD
      Src: /src/pdns/pdns/test-zonemd_cc.cc:60,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 58
    functionDepth: 2
    functionLinenumber: 58
    functionLinenumberEnd: 61
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-zonemd_cc.cc
    functionUses: 0
    functionsReached:
    - testZoneMD
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_zonemd4)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: testZoneMD
      Src: /src/pdns/pdns/test-zonemd_cc.cc:65,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 63
    functionDepth: 2
    functionLinenumber: 63
    functionLinenumberEnd: 66
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-zonemd_cc.cc
    functionUses: 0
    functionsReached:
    - testZoneMD
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_zonemd5)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: testZoneMD
      Src: /src/pdns/pdns/test-zonemd_cc.cc:70,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 68
    functionDepth: 2
    functionLinenumber: 68
    functionLinenumberEnd: 71
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-zonemd_cc.cc
    functionUses: 0
    functionsReached:
    - testZoneMD
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_zonemd6)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: testZoneMD
      Src: /src/pdns/pdns/test-zonemd_cc.cc:75,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 73
    functionDepth: 2
    functionLinenumber: 73
    functionLinenumberEnd: 76
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-zonemd_cc.cc
    functionUses: 0
    functionsReached:
    - testZoneMD
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_zonemd7)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: testZoneMD
      Src: /src/pdns/pdns/test-zonemd_cc.cc:80,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 78
    functionDepth: 2
    functionLinenumber: 78
    functionLinenumberEnd: 81
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-zonemd_cc.cc
    functionUses: 0
    functionsReached:
    - testZoneMD
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_zonemd8)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: testZoneMD
      Src: /src/pdns/pdns/test-zonemd_cc.cc:85,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 83
    functionDepth: 2
    functionLinenumber: 83
    functionLinenumberEnd: 86
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-zonemd_cc.cc
    functionUses: 0
    functionsReached:
    - testZoneMD
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_zonemd9)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: testZoneMD
      Src: /src/pdns/pdns/test-zonemd_cc.cc:90,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 88
    functionDepth: 2
    functionLinenumber: 88
    functionLinenumberEnd: 91
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-zonemd_cc.cc
    functionUses: 0
    functionsReached:
    - testZoneMD
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_zonemd10)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: testZoneMD
      Src: /src/pdns/pdns/test-zonemd_cc.cc:95,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 93
    functionDepth: 2
    functionLinenumber: 93
    functionLinenumberEnd: 96
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-zonemd_cc.cc
    functionUses: 0
    functionsReached:
    - testZoneMD
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_zonemd11)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: testZoneMD
      Src: /src/pdns/pdns/test-zonemd_cc.cc:100,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 98
    functionDepth: 2
    functionLinenumber: 98
    functionLinenumberEnd: 101
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-zonemd_cc.cc
    functionUses: 0
    functionsReached:
    - testZoneMD
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_zonemd12)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: testZoneMD
      Src: /src/pdns/pdns/test-zonemd_cc.cc:105,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 103
    functionDepth: 2
    functionLinenumber: 103
    functionLinenumberEnd: 106
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-zonemd_cc.cc
    functionUses: 0
    functionsReached:
    - testZoneMD
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_zonemd13)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: testZoneMD
      Src: /src/pdns/pdns/test-zonemd_cc.cc:110,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 111
      start: 108
    functionDepth: 2
    functionLinenumber: 108
    functionLinenumberEnd: 111
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-zonemd_cc.cc
    functionUses: 0
    functionsReached:
    - testZoneMD
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_zonemd14)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ConcurrentConnectionManager::setMaxConcurrentConnections
      Src: /src/pdns/pdns/connection-management.hh:31,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - max
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 32
      start: 29
    functionDepth: 0
    functionLinenumber: 29
    functionLinenumberEnd: 32
    functionName: ConcurrentConnectionManager::ConcurrentConnectionManager
    functionSourceFile: /src/pdns/pdns/connection-management.hh
    functionUses: 0
    functionsReached:
    - ConcurrentConnectionManager::setMaxConcurrentConnections
    linkageType: ''
    returnType: void
    signature: void ConcurrentConnectionManager(size_t max)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/connection-management.hh:36,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - max
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 34
    functionDepth: 0
    functionLinenumber: 34
    functionLinenumberEnd: 37
    functionName: ConcurrentConnectionManager::setMaxConcurrentConnections
    functionSourceFile: /src/pdns/pdns/connection-management.hh
    functionUses: 1
    functionsReached:
    - lock
    linkageType: ''
    returnType: void
    signature: void setMaxConcurrentConnections(size_t max)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/connection-management.hh:41,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 39
    functionDepth: 0
    functionLinenumber: 39
    functionLinenumberEnd: 42
    functionName: ConcurrentConnectionManager::getMaxConcurrentConnections
    functionSourceFile: /src/pdns/pdns/connection-management.hh
    functionUses: 0
    functionsReached:
    - lock
    linkageType: ''
    returnType: size_t
    signature: size_t getMaxConcurrentConnections()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/connection-management.hh:46,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 44
    functionDepth: 0
    functionLinenumber: 44
    functionLinenumberEnd: 52
    functionName: ConcurrentConnectionManager::registerConnection
    functionSourceFile: /src/pdns/pdns/connection-management.hh
    functionUses: 0
    functionsReached:
    - lock
    linkageType: ''
    returnType: bool
    signature: bool registerConnection()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/connection-management.hh:56,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 54
    functionDepth: 0
    functionLinenumber: 54
    functionLinenumberEnd: 57
    functionName: ConcurrentConnectionManager::releaseConnection
    functionSourceFile: /src/pdns/pdns/connection-management.hh
    functionUses: 0
    functionsReached:
    - lock
    linkageType: ''
    returnType: void
    signature: void releaseConnection()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: setThreadName
      Src: /src/pdns/pdns/communicator.cc:45,1
    - Dst: wait
      Src: /src/pdns/pdns/communicator.cc:47,1
    - Dst: lock
      Src: /src/pdns/pdns/communicator.cc:50,1
    - Dst: auto::d_suckdomains::empty
      Src: /src/pdns/pdns/communicator.cc:51,1
    - Dst: auto::d_suckdomains::begin
      Src: /src/pdns/pdns/communicator.cc:55,1
    - Dst: auto::d_suckdomains::erase
      Src: /src/pdns/pdns/communicator.cc:58,1
    - Dst: auto::d_suckdomains::empty
      Src: /src/pdns/pdns/communicator.cc:59,1
    - Dst: CommunicatorClass::suck
      Src: /src/pdns/pdns/communicator.cc:63,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 43
    functionDepth: 1
    functionLinenumber: 43
    functionLinenumberEnd: 65
    functionName: CommunicatorClass::retrievalLoopThread
    functionSourceFile: /src/pdns/pdns/communicator.cc
    functionUses: 0
    functionsReached:
    - wait
    - auto::d_suckdomains::begin
    - lock
    - auto::d_suckdomains::erase
    - CommunicatorClass::suck
    - auto::d_suckdomains::empty
    - setThreadName
    linkageType: ''
    returnType: void
    signature: void CommunicatorClass::retrievalLoopThread()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: stringtok
      Src: /src/pdns/pdns/communicator.cc:70,1
    - Dst: arg
      Src: /src/pdns/pdns/communicator.cc:70,1
    - Dst: insert
      Src: /src/pdns/pdns/communicator.cc:74,1
    - Dst: ComboAddress::toStringWithPort
      Src: /src/pdns/pdns/communicator.cc:74,1
    - Dst: SLOG
      Src: /src/pdns/pdns/communicator.cc:77,1
    - Dst: error
      Src: /src/pdns/pdns/communicator.cc:78,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/communicator.cc:78,1
    - Dst: _exit
      Src: /src/pdns/pdns/communicator.cc:79,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - listname
    - ' listset'
    argTypes:
    - char*
    - set<string>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 67
    functionDepth: 1
    functionLinenumber: 67
    functionLinenumberEnd: 82
    functionName: CommunicatorClass::loadArgsIntoSet
    functionSourceFile: /src/pdns/pdns/communicator.cc
    functionUses: 0
    functionsReached:
    - SLOG
    - stringtok
    - _exit
    - Logging::Loggable
    - insert
    - error
    - arg
    - ComboAddress::toStringWithPort
    linkageType: ''
    returnType: void
    signature: void CommunicatorClass::loadArgsIntoSet(const char* listname, set<string>&
      listset)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: toMasks
      Src: /src/pdns/pdns/communicator.cc:87,1
    - Dst: arg
      Src: /src/pdns/pdns/communicator.cc:87,1
    - Dst: SLOG
      Src: /src/pdns/pdns/communicator.cc:90,1
    - Dst: error
      Src: /src/pdns/pdns/communicator.cc:91,1
    - Dst: _exit
      Src: /src/pdns/pdns/communicator.cc:92,1
    - Dst: CommunicatorClass::mainloop
      Src: /src/pdns/pdns/communicator.cc:95,1
    - Dst: std::thread::detach
      Src: /src/pdns/pdns/communicator.cc:96,1
    - Dst: arg
      Src: /src/pdns/pdns/communicator.cc:98,1
    - Dst: CommunicatorClass::retrievalLoopThread
      Src: /src/pdns/pdns/communicator.cc:99,1
    - Dst: std::thread::detach
      Src: /src/pdns/pdns/communicator.cc:100,1
    - Dst: arg
      Src: /src/pdns/pdns/communicator.cc:103,1
    - Dst: arg
      Src: /src/pdns/pdns/communicator.cc:105,1
    - Dst: static_cast<time_t>
      Src: /src/pdns/pdns/communicator.cc:107,1
    - Dst: toMasks
      Src: /src/pdns/pdns/communicator.cc:111,1
    - Dst: arg
      Src: /src/pdns/pdns/communicator.cc:111,1
    - Dst: SLOG
      Src: /src/pdns/pdns/communicator.cc:114,1
    - Dst: error
      Src: /src/pdns/pdns/communicator.cc:115,1
    - Dst: _exit
      Src: /src/pdns/pdns/communicator.cc:116,1
    - Dst: CommunicatorClass::loadArgsIntoSet
      Src: /src/pdns/pdns/communicator.cc:119,1
    - Dst: CommunicatorClass::loadArgsIntoSet
      Src: /src/pdns/pdns/communicator.cc:121,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 27
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 122
      start: 84
    functionDepth: 2
    functionLinenumber: 84
    functionLinenumberEnd: 122
    functionName: CommunicatorClass::go
    functionSourceFile: /src/pdns/pdns/communicator.cc
    functionUses: 0
    functionsReached:
    - CommunicatorClass::loadArgsIntoSet
    - SLOG
    - _exit
    - CommunicatorClass::mainloop
    - std::thread::detach
    - toMasks
    - error
    - CommunicatorClass::retrievalLoopThread
    - static_cast<time_t>
    - arg
    linkageType: ''
    returnType: void
    signature: void CommunicatorClass::go()
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: setThreadName
      Src: /src/pdns/pdns/communicator.cc:127,1
    - Dst: signal
      Src: /src/pdns/pdns/communicator.cc:128,1
    - Dst: SLOG
      Src: /src/pdns/pdns/communicator.cc:129,1
    - Dst: info
      Src: /src/pdns/pdns/communicator.cc:130,1
    - Dst: arg
      Src: /src/pdns/pdns/communicator.cc:132,1
    - Dst: CommunicatorClass::makeNotifySockets
      Src: /src/pdns/pdns/communicator.cc:138,1
    - Dst: CommunicatorClass::secondaryRefresh
      Src: /src/pdns/pdns/communicator.cc:141,1
    - Dst: CommunicatorClass::primaryUpdateCheck
      Src: /src/pdns/pdns/communicator.cc:142,1
    - Dst: CommunicatorClass::doNotifications
      Src: /src/pdns/pdns/communicator.cc:143,1
    - Dst: time
      Src: /src/pdns/pdns/communicator.cc:145,1
    - Dst: time
      Src: /src/pdns/pdns/communicator.cc:147,1
    - Dst: tryWait
      Src: /src/pdns/pdns/communicator.cc:148,1
    - Dst: Utility::sleep
      Src: /src/pdns/pdns/communicator.cc:152,1
    - Dst: lock
      Src: /src/pdns/pdns/communicator.cc:154,1
    - Dst: auto::d_tocheck::size
      Src: /src/pdns/pdns/communicator.cc:155,1
    - Dst: CommunicatorClass::secondaryRefresh
      Src: /src/pdns/pdns/communicator.cc:160,1
    - Dst: tryWait
      Src: /src/pdns/pdns/communicator.cc:164,1
    - Dst: CommunicatorClass::doNotifications
      Src: /src/pdns/pdns/communicator.cc:169,1
    - Dst: SLOG
      Src: /src/pdns/pdns/communicator.cc:174,1
    - Dst: error
      Src: /src/pdns/pdns/communicator.cc:175,1
    - Dst: Utility::sleep
      Src: /src/pdns/pdns/communicator.cc:176,1
    - Dst: _exit
      Src: /src/pdns/pdns/communicator.cc:177,1
    - Dst: SLOG
      Src: /src/pdns/pdns/communicator.cc:180,1
    - Dst: what
      Src: /src/pdns/pdns/communicator.cc:180,1
    - Dst: error
      Src: /src/pdns/pdns/communicator.cc:181,1
    - Dst: what
      Src: /src/pdns/pdns/communicator.cc:181,1
    - Dst: _exit
      Src: /src/pdns/pdns/communicator.cc:182,1
    - Dst: SLOG
      Src: /src/pdns/pdns/communicator.cc:185,1
    - Dst: info
      Src: /src/pdns/pdns/communicator.cc:186,1
    - Dst: _exit
      Src: /src/pdns/pdns/communicator.cc:187,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 41
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 189
      start: 124
    functionDepth: 1
    functionLinenumber: 124
    functionLinenumberEnd: 189
    functionName: CommunicatorClass::mainloop
    functionSourceFile: /src/pdns/pdns/communicator.cc
    functionUses: 1
    functionsReached:
    - CommunicatorClass::makeNotifySockets
    - SLOG
    - CommunicatorClass::primaryUpdateCheck
    - _exit
    - CommunicatorClass::secondaryRefresh
    - time
    - what
    - info
    - CommunicatorClass::doNotifications
    - tryWait
    - Utility::sleep
    - lock
    - auto::d_tocheck::size
    - error
    - setThreadName
    - arg
    - signal
    linkageType: ''
    returnType: void
    signature: void CommunicatorClass::mainloop()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 40
    functionDepth: 0
    functionLinenumber: 40
    functionLinenumberEnd: 40
    functionName: FrameStreamLogger::FrameStreamLogger
    functionSourceFile: /src/pdns/pdns/fstrm_logger.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void FrameStreamLogger(const FrameStreamLogger&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 41
    functionDepth: 0
    functionLinenumber: 41
    functionLinenumberEnd: 41
    functionName: FrameStreamLogger::FrameStreamLogger
    functionSourceFile: /src/pdns/pdns/fstrm_logger.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void FrameStreamLogger(FrameStreamLogger&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 42
    functionDepth: 0
    functionLinenumber: 42
    functionLinenumberEnd: 42
    functionName: '& operator=(const FrameStreamLogger&)'
    functionSourceFile: /src/pdns/pdns/fstrm_logger.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: FrameStreamLogger
    signature: FrameStreamLogger & operator=(const FrameStreamLogger&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 43
    functionName: '& operator=(FrameStreamLogger&&)'
    functionSourceFile: /src/pdns/pdns/fstrm_logger.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: FrameStreamLogger
    signature: FrameStreamLogger & operator=(FrameStreamLogger&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 47
    functionDepth: 0
    functionLinenumber: 47
    functionLinenumberEnd: 50
    functionName: FrameStreamLogger::address
    functionSourceFile: /src/pdns/pdns/fstrm_logger.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string address() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 52
    functionDepth: 0
    functionLinenumber: 52
    functionLinenumberEnd: 55
    functionName: FrameStreamLogger::name
    functionSourceFile: /src/pdns/pdns/fstrm_logger.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string name() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::to_string
      Src: /src/pdns/pdns/fstrm_logger.hh:59,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/fstrm_logger.hh:59,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/fstrm_logger.hh:59,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 57
    functionDepth: 0
    functionLinenumber: 57
    functionLinenumberEnd: 60
    functionName: FrameStreamLogger::toString
    functionSourceFile: /src/pdns/pdns/fstrm_logger.hh
    functionUses: 0
    functionsReached:
    - std::to_string
    linkageType: ''
    returnType: std::string
    signature: std::string toString() override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 62
    functionDepth: 0
    functionLinenumber: 62
    functionLinenumberEnd: 68
    functionName: FrameStreamLogger::getStats
    functionSourceFile: /src/pdns/pdns/fstrm_logger.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: RemoteLoggerInterface::Stats
    signature: RemoteLoggerInterface::Stats getStats() override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 93
    functionDepth: 0
    functionLinenumber: 93
    functionLinenumberEnd: 93
    functionName: FrameStreamLogger::FrameStreamLogger
    functionSourceFile: /src/pdns/pdns/fstrm_logger.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void FrameStreamLogger(const FrameStreamLogger&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 94
    functionDepth: 0
    functionLinenumber: 94
    functionLinenumberEnd: 94
    functionName: FrameStreamLogger::FrameStreamLogger
    functionSourceFile: /src/pdns/pdns/fstrm_logger.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void FrameStreamLogger(FrameStreamLogger&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 95
    functionDepth: 0
    functionLinenumber: 95
    functionLinenumberEnd: 95
    functionName: '& operator=(const FrameStreamLogger&)'
    functionSourceFile: /src/pdns/pdns/fstrm_logger.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: FrameStreamLogger
    signature: FrameStreamLogger & operator=(const FrameStreamLogger&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 96
    functionDepth: 0
    functionLinenumber: 96
    functionLinenumberEnd: 96
    functionName: '& operator=(FrameStreamLogger&&)'
    functionSourceFile: /src/pdns/pdns/fstrm_logger.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: FrameStreamLogger
    signature: FrameStreamLogger & operator=(FrameStreamLogger&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 33
      start: 33
    functionDepth: 0
    functionLinenumber: 33
    functionLinenumberEnd: 33
    functionName: StatNode::Stat
    functionSourceFile: /src/pdns/pdns/statnode.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Stat()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - Stat
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 44
    functionDepth: 0
    functionLinenumber: 44
    functionLinenumberEnd: 57
    functionName: '& operator+=(const Stat& rhs)'
    functionSourceFile: /src/pdns/pdns/statnode.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Stat
    signature: Stat & operator+=(const Stat& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: StatNode::empty
      Src: /src/pdns/pdns/statnode.hh:72,1
    - Dst: remotes::empty
      Src: /src/pdns/pdns/statnode.hh:72,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 70
    functionDepth: 0
    functionLinenumber: 70
    functionLinenumberEnd: 73
    functionName: StatNode::empty
    functionSourceFile: /src/pdns/pdns/statnode.hh
    functionUses: 2
    functionsReached:
    - StatNode::empty
    - remotes::empty
    linkageType: ''
    returnType: bool
    signature: bool empty() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: StatNode::size
      Src: /src/pdns/pdns/statnode.hh:76,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 74
    functionDepth: 0
    functionLinenumber: 74
    functionLinenumberEnd: 77
    functionName: StatNode::size
    functionSourceFile: /src/pdns/pdns/statnode.hh
    functionUses: 2
    functionsReached:
    - StatNode::size
    linkageType: ''
    returnType: size_t
    signature: size_t size() const
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/test-packetcache_hh.cc:34,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/test-packetcache_hh.cc:35,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/test-packetcache_hh.cc:36,1
    - Dst: vector::size
      Src: /src/pdns/pdns/test-packetcache_hh.cc:37,1
    - Dst: PacketCache::canHashPacket
      Src: /src/pdns/pdns/test-packetcache_hh.cc:38,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/test-packetcache_hh.cc:40,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/test-packetcache_hh.cc:42,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/test-packetcache_hh.cc:43,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/test-packetcache_hh.cc:44,1
    - Dst: vector::size
      Src: /src/pdns/pdns/test-packetcache_hh.cc:45,1
    - Dst: PacketCache::canHashPacket
      Src: /src/pdns/pdns/test-packetcache_hh.cc:46,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-packetcache_hh.cc:48,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-packetcache_hh.cc:49,1
    - Dst: PacketCache::queryMatches
      Src: /src/pdns/pdns/test-packetcache_hh.cc:49,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/test-packetcache_hh.cc:56,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/test-packetcache_hh.cc:57,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/test-packetcache_hh.cc:58,1
    - Dst: EDNSSubnetOpts::setSource
      Src: /src/pdns/pdns/test-packetcache_hh.cc:59,1
    - Dst: Netmask
      Src: /src/pdns/pdns/test-packetcache_hh.cc:59,1
    - Dst: DNSPacketWriter::optvect_t::clear
      Src: /src/pdns/pdns/test-packetcache_hh.cc:60,1
    - Dst: DNSPacketWriter::optvect_t::emplace_back
      Src: /src/pdns/pdns/test-packetcache_hh.cc:61,1
    - Dst: EDNSSubnetOpts::makeOptString
      Src: /src/pdns/pdns/test-packetcache_hh.cc:61,1
    - Dst: DNSPacketWriter::addOpt
      Src: /src/pdns/pdns/test-packetcache_hh.cc:62,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/test-packetcache_hh.cc:63,1
    - Dst: vector::size
      Src: /src/pdns/pdns/test-packetcache_hh.cc:65,1
    - Dst: PacketCache::canHashPacket
      Src: /src/pdns/pdns/test-packetcache_hh.cc:66,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/test-packetcache_hh.cc:68,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/test-packetcache_hh.cc:70,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/test-packetcache_hh.cc:71,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/test-packetcache_hh.cc:72,1
    - Dst: EDNSSubnetOpts::setSource
      Src: /src/pdns/pdns/test-packetcache_hh.cc:73,1
    - Dst: Netmask
      Src: /src/pdns/pdns/test-packetcache_hh.cc:73,1
    - Dst: DNSPacketWriter::optvect_t::clear
      Src: /src/pdns/pdns/test-packetcache_hh.cc:74,1
    - Dst: DNSPacketWriter::optvect_t::emplace_back
      Src: /src/pdns/pdns/test-packetcache_hh.cc:75,1
    - Dst: EDNSSubnetOpts::makeOptString
      Src: /src/pdns/pdns/test-packetcache_hh.cc:75,1
    - Dst: DNSPacketWriter::addOpt
      Src: /src/pdns/pdns/test-packetcache_hh.cc:76,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/test-packetcache_hh.cc:77,1
    - Dst: vector::size
      Src: /src/pdns/pdns/test-packetcache_hh.cc:79,1
    - Dst: PacketCache::canHashPacket
      Src: /src/pdns/pdns/test-packetcache_hh.cc:80,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-packetcache_hh.cc:82,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-packetcache_hh.cc:84,1
    - Dst: PacketCache::queryMatches
      Src: /src/pdns/pdns/test-packetcache_hh.cc:84,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/test-packetcache_hh.cc:98,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/test-packetcache_hh.cc:99,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/test-packetcache_hh.cc:100,1
    - Dst: Netmask
      Src: /src/pdns/pdns/test-packetcache_hh.cc:101,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/test-packetcache_hh.cc:101,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/test-packetcache_hh.cc:101,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/test-packetcache_hh.cc:101,1
    - Dst: DNSPacketWriter::optvect_t::clear
      Src: /src/pdns/pdns/test-packetcache_hh.cc:102,1
    - Dst: DNSPacketWriter::optvect_t::emplace_back
      Src: /src/pdns/pdns/test-packetcache_hh.cc:103,1
    - Dst: makeEDNSSubnetOptsString
      Src: /src/pdns/pdns/test-packetcache_hh.cc:103,1
    - Dst: DNSPacketWriter::addOpt
      Src: /src/pdns/pdns/test-packetcache_hh.cc:104,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/test-packetcache_hh.cc:105,1
    - Dst: PacketCache::canHashPacket
      Src: /src/pdns/pdns/test-packetcache_hh.cc:106,1
    - Dst: std::string
      Src: /src/pdns/pdns/test-packetcache_hh.cc:106,1
    - Dst: reinterpret_cast<const char *>
      Src: /src/pdns/pdns/test-packetcache_hh.cc:106,1
    - Dst: vector::data
      Src: /src/pdns/pdns/test-packetcache_hh.cc:106,1
    - Dst: vector::size
      Src: /src/pdns/pdns/test-packetcache_hh.cc:106,1
    - Dst: std::map::emplace
      Src: /src/pdns/pdns/test-packetcache_hh.cc:107,1
    - Dst: toString
      Src: /src/pdns/pdns/test-packetcache_hh.cc:111,1
    - Dst: EDNSSubnetOpts::source::toString
      Src: /src/pdns/pdns/test-packetcache_hh.cc:111,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/test-packetcache_hh.cc:128,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/test-packetcache_hh.cc:129,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/test-packetcache_hh.cc:130,1
    - Dst: EDNSSubnetOpts::setSource
      Src: /src/pdns/pdns/test-packetcache_hh.cc:131,1
    - Dst: Netmask
      Src: /src/pdns/pdns/test-packetcache_hh.cc:131,1
    - Dst: DNSPacketWriter::optvect_t::clear
      Src: /src/pdns/pdns/test-packetcache_hh.cc:132,1
    - Dst: DNSPacketWriter::optvect_t::emplace_back
      Src: /src/pdns/pdns/test-packetcache_hh.cc:133,1
    - Dst: EDNSSubnetOpts::makeOptString
      Src: /src/pdns/pdns/test-packetcache_hh.cc:133,1
    - Dst: DNSPacketWriter::addOpt
      Src: /src/pdns/pdns/test-packetcache_hh.cc:134,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/test-packetcache_hh.cc:135,1
    - Dst: vector::size
      Src: /src/pdns/pdns/test-packetcache_hh.cc:137,1
    - Dst: PacketCache::canHashPacket
      Src: /src/pdns/pdns/test-packetcache_hh.cc:138,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/test-packetcache_hh.cc:140,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/test-packetcache_hh.cc:142,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/test-packetcache_hh.cc:143,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/test-packetcache_hh.cc:144,1
    - Dst: EDNSSubnetOpts::setSource
      Src: /src/pdns/pdns/test-packetcache_hh.cc:145,1
    - Dst: Netmask
      Src: /src/pdns/pdns/test-packetcache_hh.cc:145,1
    - Dst: DNSPacketWriter::optvect_t::clear
      Src: /src/pdns/pdns/test-packetcache_hh.cc:146,1
    - Dst: DNSPacketWriter::optvect_t::emplace_back
      Src: /src/pdns/pdns/test-packetcache_hh.cc:147,1
    - Dst: EDNSSubnetOpts::makeOptString
      Src: /src/pdns/pdns/test-packetcache_hh.cc:147,1
    - Dst: DNSPacketWriter::addOpt
      Src: /src/pdns/pdns/test-packetcache_hh.cc:149,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/test-packetcache_hh.cc:150,1
    - Dst: vector::size
      Src: /src/pdns/pdns/test-packetcache_hh.cc:152,1
    - Dst: PacketCache::canHashPacket
      Src: /src/pdns/pdns/test-packetcache_hh.cc:153,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-packetcache_hh.cc:155,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-packetcache_hh.cc:157,1
    - Dst: PacketCache::queryMatches
      Src: /src/pdns/pdns/test-packetcache_hh.cc:157,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/test-packetcache_hh.cc:164,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/test-packetcache_hh.cc:165,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/test-packetcache_hh.cc:166,1
    - Dst: EDNSSubnetOpts::setSource
      Src: /src/pdns/pdns/test-packetcache_hh.cc:167,1
    - Dst: Netmask
      Src: /src/pdns/pdns/test-packetcache_hh.cc:167,1
    - Dst: DNSPacketWriter::optvect_t::clear
      Src: /src/pdns/pdns/test-packetcache_hh.cc:168,1
    - Dst: DNSPacketWriter::optvect_t::emplace_back
      Src: /src/pdns/pdns/test-packetcache_hh.cc:169,1
    - Dst: EDNSSubnetOpts::makeOptString
      Src: /src/pdns/pdns/test-packetcache_hh.cc:169,1
    - Dst: string
      Src: /src/pdns/pdns/test-packetcache_hh.cc:170,1
    - Dst: DNSPacketWriter::optvect_t::emplace_back
      Src: /src/pdns/pdns/test-packetcache_hh.cc:171,1
    - Dst: EDNSCookiesOpt::makeOptString
      Src: /src/pdns/pdns/test-packetcache_hh.cc:171,1
    - Dst: DNSPacketWriter::addOpt
      Src: /src/pdns/pdns/test-packetcache_hh.cc:172,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/test-packetcache_hh.cc:173,1
    - Dst: vector::size
      Src: /src/pdns/pdns/test-packetcache_hh.cc:175,1
    - Dst: PacketCache::canHashPacket
      Src: /src/pdns/pdns/test-packetcache_hh.cc:176,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/test-packetcache_hh.cc:178,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/test-packetcache_hh.cc:180,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/test-packetcache_hh.cc:181,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/test-packetcache_hh.cc:182,1
    - Dst: EDNSSubnetOpts::setSource
      Src: /src/pdns/pdns/test-packetcache_hh.cc:183,1
    - Dst: Netmask
      Src: /src/pdns/pdns/test-packetcache_hh.cc:183,1
    - Dst: DNSPacketWriter::optvect_t::clear
      Src: /src/pdns/pdns/test-packetcache_hh.cc:184,1
    - Dst: DNSPacketWriter::optvect_t::emplace_back
      Src: /src/pdns/pdns/test-packetcache_hh.cc:185,1
    - Dst: EDNSSubnetOpts::makeOptString
      Src: /src/pdns/pdns/test-packetcache_hh.cc:185,1
    - Dst: EDNSCookiesOpt::makeFromString
      Src: /src/pdns/pdns/test-packetcache_hh.cc:186,1
    - Dst: string
      Src: /src/pdns/pdns/test-packetcache_hh.cc:186,1
    - Dst: DNSPacketWriter::optvect_t::emplace_back
      Src: /src/pdns/pdns/test-packetcache_hh.cc:187,1
    - Dst: EDNSCookiesOpt::makeOptString
      Src: /src/pdns/pdns/test-packetcache_hh.cc:187,1
    - Dst: DNSPacketWriter::addOpt
      Src: /src/pdns/pdns/test-packetcache_hh.cc:188,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/test-packetcache_hh.cc:189,1
    - Dst: vector::size
      Src: /src/pdns/pdns/test-packetcache_hh.cc:191,1
    - Dst: PacketCache::canHashPacket
      Src: /src/pdns/pdns/test-packetcache_hh.cc:192,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-packetcache_hh.cc:194,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-packetcache_hh.cc:196,1
    - Dst: PacketCache::queryMatches
      Src: /src/pdns/pdns/test-packetcache_hh.cc:196,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-packetcache_hh.cc:198,1
    - Dst: PacketCache::queryMatches
      Src: /src/pdns/pdns/test-packetcache_hh.cc:198,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/test-packetcache_hh.cc:212,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/test-packetcache_hh.cc:213,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/test-packetcache_hh.cc:214,1
    - Dst: Netmask
      Src: /src/pdns/pdns/test-packetcache_hh.cc:215,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/test-packetcache_hh.cc:215,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/test-packetcache_hh.cc:215,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/test-packetcache_hh.cc:215,1
    - Dst: DNSPacketWriter::optvect_t::clear
      Src: /src/pdns/pdns/test-packetcache_hh.cc:216,1
    - Dst: DNSPacketWriter::optvect_t::emplace_back
      Src: /src/pdns/pdns/test-packetcache_hh.cc:217,1
    - Dst: makeEDNSSubnetOptsString
      Src: /src/pdns/pdns/test-packetcache_hh.cc:217,1
    - Dst: DNSPacketWriter::addOpt
      Src: /src/pdns/pdns/test-packetcache_hh.cc:218,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/test-packetcache_hh.cc:219,1
    - Dst: PacketCache::canHashPacket
      Src: /src/pdns/pdns/test-packetcache_hh.cc:220,1
    - Dst: std::string
      Src: /src/pdns/pdns/test-packetcache_hh.cc:220,1
    - Dst: reinterpret_cast<const char *>
      Src: /src/pdns/pdns/test-packetcache_hh.cc:220,1
    - Dst: vector::data
      Src: /src/pdns/pdns/test-packetcache_hh.cc:220,1
    - Dst: vector::size
      Src: /src/pdns/pdns/test-packetcache_hh.cc:220,1
    - Dst: std::map::emplace
      Src: /src/pdns/pdns/test-packetcache_hh.cc:221,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/test-packetcache_hh.cc:223,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/test-packetcache_hh.cc:225,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/test-packetcache_hh.cc:226,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/test-packetcache_hh.cc:227,1
    - Dst: Netmask
      Src: /src/pdns/pdns/test-packetcache_hh.cc:228,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/test-packetcache_hh.cc:228,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/test-packetcache_hh.cc:228,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/test-packetcache_hh.cc:228,1
    - Dst: DNSPacketWriter::optvect_t::clear
      Src: /src/pdns/pdns/test-packetcache_hh.cc:229,1
    - Dst: DNSPacketWriter::optvect_t::emplace_back
      Src: /src/pdns/pdns/test-packetcache_hh.cc:230,1
    - Dst: makeEDNSSubnetOptsString
      Src: /src/pdns/pdns/test-packetcache_hh.cc:230,1
    - Dst: DNSPacketWriter::addOpt
      Src: /src/pdns/pdns/test-packetcache_hh.cc:231,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/test-packetcache_hh.cc:232,1
    - Dst: PacketCache::canHashPacket
      Src: /src/pdns/pdns/test-packetcache_hh.cc:233,1
    - Dst: std::string
      Src: /src/pdns/pdns/test-packetcache_hh.cc:233,1
    - Dst: reinterpret_cast<const char *>
      Src: /src/pdns/pdns/test-packetcache_hh.cc:233,1
    - Dst: vector::data
      Src: /src/pdns/pdns/test-packetcache_hh.cc:233,1
    - Dst: vector::size
      Src: /src/pdns/pdns/test-packetcache_hh.cc:233,1
    - Dst: std::map::count
      Src: /src/pdns/pdns/test-packetcache_hh.cc:236,1
    - Dst: toString
      Src: /src/pdns/pdns/test-packetcache_hh.cc:238,1
    - Dst: EDNSSubnetOpts::source::toString
      Src: /src/pdns/pdns/test-packetcache_hh.cc:238,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 138
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 250
      start: 20
    functionDepth: 1
    functionLinenumber: 20
    functionLinenumberEnd: 250
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-packetcache_hh.cc
    functionUses: 0
    functionsReached:
    - toString
    - std::to_string
    - DNSPacketWriter::optvect_t::clear
    - reinterpret_cast<const char *>
    - std::string
    - EDNSSubnetOpts::source::toString
    - DNSPacketWriter::optvect_t::emplace_back
    - EDNSCookiesOpt::makeFromString
    - PacketCache::queryMatches
    - string
    - DNSPacketWriter::getHeader
    - std::map::emplace
    - vector::data
    - vector::size
    - vector::clear
    - Netmask
    - EDNSSubnetOpts::makeOptString
    - DNSPacketWriter::commit
    - EDNSSubnetOpts::setSource
    - EDNSCookiesOpt::makeOptString
    - std::map::count
    - PacketCache::canHashPacket
    - BOOST_CHECK_EQUAL
    - makeEDNSSubnetOptsString
    - DNSPacketWriter::addOpt
    - BOOST_CHECK
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_PacketCacheAuthCollision)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/test-packetcache_hh.cc:263,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/test-packetcache_hh.cc:264,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/test-packetcache_hh.cc:265,1
    - Dst: DNSPacketWriter::addOpt
      Src: /src/pdns/pdns/test-packetcache_hh.cc:266,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/test-packetcache_hh.cc:267,1
    - Dst: vector::size
      Src: /src/pdns/pdns/test-packetcache_hh.cc:269,1
    - Dst: reinterpret_cast<unsigned char*>
      Src: /src/pdns/pdns/test-packetcache_hh.cc:271,1
    - Dst: string::at
      Src: /src/pdns/pdns/test-packetcache_hh.cc:271,1
    - Dst: DNSName::wirelength
      Src: /src/pdns/pdns/test-packetcache_hh.cc:271,1
    - Dst: string::resize
      Src: /src/pdns/pdns/test-packetcache_hh.cc:275,1
    - Dst: string::size
      Src: /src/pdns/pdns/test-packetcache_hh.cc:275,1
    - Dst: BOOST_CHECK_NO_THROW
      Src: /src/pdns/pdns/test-packetcache_hh.cc:276,1
    - Dst: PacketCache::canHashPacket
      Src: /src/pdns/pdns/test-packetcache_hh.cc:276,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 278
      start: 252
    functionDepth: 1
    functionLinenumber: 252
    functionLinenumberEnd: 278
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-packetcache_hh.cc
    functionUses: 0
    functionsReached:
    - string::resize
    - string::size
    - DNSPacketWriter::commit
    - PacketCache::canHashPacket
    - DNSPacketWriter::getHeader
    - DNSPacketWriter::addOpt
    - reinterpret_cast<unsigned char*>
    - string::at
    - BOOST_CHECK_NO_THROW
    - vector::size
    - DNSName::wirelength
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_PacketCacheRecSimple)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/test-packetcache_hh.cc:293,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/test-packetcache_hh.cc:294,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/test-packetcache_hh.cc:295,1
    - Dst: vector::size
      Src: /src/pdns/pdns/test-packetcache_hh.cc:296,1
    - Dst: PacketCache::canHashPacket
      Src: /src/pdns/pdns/test-packetcache_hh.cc:297,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/test-packetcache_hh.cc:299,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/test-packetcache_hh.cc:301,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/test-packetcache_hh.cc:302,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/test-packetcache_hh.cc:303,1
    - Dst: vector::size
      Src: /src/pdns/pdns/test-packetcache_hh.cc:304,1
    - Dst: PacketCache::canHashPacket
      Src: /src/pdns/pdns/test-packetcache_hh.cc:305,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-packetcache_hh.cc:307,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-packetcache_hh.cc:308,1
    - Dst: PacketCache::queryMatches
      Src: /src/pdns/pdns/test-packetcache_hh.cc:308,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/test-packetcache_hh.cc:315,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/test-packetcache_hh.cc:316,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/test-packetcache_hh.cc:317,1
    - Dst: EDNSSubnetOpts::setSource
      Src: /src/pdns/pdns/test-packetcache_hh.cc:318,1
    - Dst: Netmask
      Src: /src/pdns/pdns/test-packetcache_hh.cc:318,1
    - Dst: DNSPacketWriter::optvect_t::clear
      Src: /src/pdns/pdns/test-packetcache_hh.cc:319,1
    - Dst: DNSPacketWriter::optvect_t::emplace_back
      Src: /src/pdns/pdns/test-packetcache_hh.cc:320,1
    - Dst: EDNSSubnetOpts::makeOptString
      Src: /src/pdns/pdns/test-packetcache_hh.cc:320,1
    - Dst: DNSPacketWriter::addOpt
      Src: /src/pdns/pdns/test-packetcache_hh.cc:321,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/test-packetcache_hh.cc:322,1
    - Dst: vector::size
      Src: /src/pdns/pdns/test-packetcache_hh.cc:324,1
    - Dst: PacketCache::canHashPacket
      Src: /src/pdns/pdns/test-packetcache_hh.cc:325,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/test-packetcache_hh.cc:327,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/test-packetcache_hh.cc:329,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/test-packetcache_hh.cc:330,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/test-packetcache_hh.cc:331,1
    - Dst: EDNSSubnetOpts::setSource
      Src: /src/pdns/pdns/test-packetcache_hh.cc:332,1
    - Dst: Netmask
      Src: /src/pdns/pdns/test-packetcache_hh.cc:332,1
    - Dst: DNSPacketWriter::optvect_t::clear
      Src: /src/pdns/pdns/test-packetcache_hh.cc:333,1
    - Dst: DNSPacketWriter::optvect_t::emplace_back
      Src: /src/pdns/pdns/test-packetcache_hh.cc:334,1
    - Dst: EDNSSubnetOpts::makeOptString
      Src: /src/pdns/pdns/test-packetcache_hh.cc:334,1
    - Dst: DNSPacketWriter::addOpt
      Src: /src/pdns/pdns/test-packetcache_hh.cc:335,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/test-packetcache_hh.cc:336,1
    - Dst: vector::size
      Src: /src/pdns/pdns/test-packetcache_hh.cc:338,1
    - Dst: PacketCache::canHashPacket
      Src: /src/pdns/pdns/test-packetcache_hh.cc:339,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-packetcache_hh.cc:341,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-packetcache_hh.cc:343,1
    - Dst: PacketCache::queryMatches
      Src: /src/pdns/pdns/test-packetcache_hh.cc:343,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/test-packetcache_hh.cc:350,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/test-packetcache_hh.cc:351,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/test-packetcache_hh.cc:352,1
    - Dst: EDNSSubnetOpts::setSource
      Src: /src/pdns/pdns/test-packetcache_hh.cc:353,1
    - Dst: Netmask
      Src: /src/pdns/pdns/test-packetcache_hh.cc:353,1
    - Dst: DNSPacketWriter::optvect_t::clear
      Src: /src/pdns/pdns/test-packetcache_hh.cc:354,1
    - Dst: DNSPacketWriter::optvect_t::emplace_back
      Src: /src/pdns/pdns/test-packetcache_hh.cc:355,1
    - Dst: EDNSSubnetOpts::makeOptString
      Src: /src/pdns/pdns/test-packetcache_hh.cc:355,1
    - Dst: string
      Src: /src/pdns/pdns/test-packetcache_hh.cc:356,1
    - Dst: DNSPacketWriter::optvect_t::emplace_back
      Src: /src/pdns/pdns/test-packetcache_hh.cc:357,1
    - Dst: EDNSCookiesOpt::makeOptString
      Src: /src/pdns/pdns/test-packetcache_hh.cc:357,1
    - Dst: DNSPacketWriter::addOpt
      Src: /src/pdns/pdns/test-packetcache_hh.cc:358,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/test-packetcache_hh.cc:359,1
    - Dst: vector::size
      Src: /src/pdns/pdns/test-packetcache_hh.cc:361,1
    - Dst: PacketCache::canHashPacket
      Src: /src/pdns/pdns/test-packetcache_hh.cc:362,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/test-packetcache_hh.cc:364,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/test-packetcache_hh.cc:366,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/test-packetcache_hh.cc:367,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/test-packetcache_hh.cc:368,1
    - Dst: EDNSSubnetOpts::setSource
      Src: /src/pdns/pdns/test-packetcache_hh.cc:369,1
    - Dst: Netmask
      Src: /src/pdns/pdns/test-packetcache_hh.cc:369,1
    - Dst: DNSPacketWriter::optvect_t::clear
      Src: /src/pdns/pdns/test-packetcache_hh.cc:370,1
    - Dst: DNSPacketWriter::optvect_t::emplace_back
      Src: /src/pdns/pdns/test-packetcache_hh.cc:371,1
    - Dst: EDNSSubnetOpts::makeOptString
      Src: /src/pdns/pdns/test-packetcache_hh.cc:371,1
    - Dst: EDNSCookiesOpt::makeFromString
      Src: /src/pdns/pdns/test-packetcache_hh.cc:372,1
    - Dst: string
      Src: /src/pdns/pdns/test-packetcache_hh.cc:372,1
    - Dst: DNSPacketWriter::optvect_t::emplace_back
      Src: /src/pdns/pdns/test-packetcache_hh.cc:373,1
    - Dst: EDNSCookiesOpt::makeOptString
      Src: /src/pdns/pdns/test-packetcache_hh.cc:373,1
    - Dst: DNSPacketWriter::addOpt
      Src: /src/pdns/pdns/test-packetcache_hh.cc:374,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/test-packetcache_hh.cc:375,1
    - Dst: vector::size
      Src: /src/pdns/pdns/test-packetcache_hh.cc:377,1
    - Dst: PacketCache::canHashPacket
      Src: /src/pdns/pdns/test-packetcache_hh.cc:378,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-packetcache_hh.cc:380,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-packetcache_hh.cc:383,1
    - Dst: PacketCache::queryMatches
      Src: /src/pdns/pdns/test-packetcache_hh.cc:383,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-packetcache_hh.cc:386,1
    - Dst: PacketCache::queryMatches
      Src: /src/pdns/pdns/test-packetcache_hh.cc:386,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 55
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 388
      start: 280
    functionDepth: 1
    functionLinenumber: 280
    functionLinenumberEnd: 388
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-packetcache_hh.cc
    functionUses: 0
    functionsReached:
    - Netmask
    - EDNSCookiesOpt::makeFromString
    - PacketCache::queryMatches
    - PacketCache::canHashPacket
    - BOOST_CHECK
    - EDNSSubnetOpts::makeOptString
    - DNSPacketWriter::commit
    - EDNSSubnetOpts::setSource
    - string
    - DNSPacketWriter::optvect_t::clear
    - BOOST_CHECK_EQUAL
    - DNSPacketWriter::getHeader
    - DNSPacketWriter::addOpt
    - EDNSCookiesOpt::makeOptString
    - vector::size
    - vector::clear
    - DNSPacketWriter::optvect_t::emplace_back
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_PacketCacheRecCollision)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnsname_cc.cc:25,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnsname_cc.cc:26,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnsname_cc.cc:27,1
    - Dst: DNSName::canonCompare_three_way
      Src: /src/pdns/pdns/test-dnsname_cc.cc:27,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnsname_cc.cc:28,1
    - Dst: canonCompare_three_way
      Src: /src/pdns/pdns/test-dnsname_cc.cc:28,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsname_cc.cc:33,1
    - Dst: DNSName::getRawLabels
      Src: /src/pdns/pdns/test-dnsname_cc.cc:33,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/test-dnsname_cc.cc:34,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsname_cc.cc:35,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsname_cc.cc:39,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/test-dnsname_cc.cc:39,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnsname_cc.cc:44,1
    - Dst: DNSName::isPartOf
      Src: /src/pdns/pdns/test-dnsname_cc.cc:44,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnsname_cc.cc:45,1
    - Dst: DNSName::isPartOf
      Src: /src/pdns/pdns/test-dnsname_cc.cc:45,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnsname_cc.cc:46,1
    - Dst: DNSName::isPartOf
      Src: /src/pdns/pdns/test-dnsname_cc.cc:46,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnsname_cc.cc:48,1
    - Dst: DNSName::isPartOf
      Src: /src/pdns/pdns/test-dnsname_cc.cc:48,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnsname_cc.cc:50,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnsname_cc.cc:52,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-dnsname_cc.cc:52,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-dnsname_cc.cc:52,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnsname_cc.cc:53,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-dnsname_cc.cc:53,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-dnsname_cc.cc:53,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnsname_cc.cc:55,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-dnsname_cc.cc:55,1
    - Dst: DNSName::DNSName
      Src: /src/pdns/pdns/test-dnsname_cc.cc:60,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnsname_cc.cc:61,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnsname_cc.cc:67,1
    - Dst: DNSName::isPartOf
      Src: /src/pdns/pdns/test-dnsname_cc.cc:67,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnsname_cc.cc:73,1
    - Dst: DNSName::isPartOf
      Src: /src/pdns/pdns/test-dnsname_cc.cc:73,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnsname_cc.cc:79,1
    - Dst: DNSName::isPartOf
      Src: /src/pdns/pdns/test-dnsname_cc.cc:79,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnsname_cc.cc:85,1
    - Dst: DNSName::isPartOf
      Src: /src/pdns/pdns/test-dnsname_cc.cc:85,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnsname_cc.cc:91,1
    - Dst: DNSName::isPartOf
      Src: /src/pdns/pdns/test-dnsname_cc.cc:91,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnsname_cc.cc:97,1
    - Dst: DNSName::isPartOf
      Src: /src/pdns/pdns/test-dnsname_cc.cc:97,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsname_cc.cc:103,1
    - Dst: DNSName::makeRelative
      Src: /src/pdns/pdns/test-dnsname_cc.cc:103,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-dnsname_cc.cc:103,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnsname_cc.cc:108,1
    - Dst: DNSName::labelReverse
      Src: /src/pdns/pdns/test-dnsname_cc.cc:108,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-dnsname_cc.cc:108,1
    - Dst: DNSName::DNSName
      Src: /src/pdns/pdns/test-dnsname_cc.cc:112,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnsname_cc.cc:113,1
    - Dst: DNSName::empty
      Src: /src/pdns/pdns/test-dnsname_cc.cc:113,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnsname_cc.cc:118,1
    - Dst: DNSName::empty
      Src: /src/pdns/pdns/test-dnsname_cc.cc:118,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsname_cc.cc:121,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsname_cc.cc:125,1
    - Dst: DNSName::prependRawLabel
      Src: /src/pdns/pdns/test-dnsname_cc.cc:129,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnsname_cc.cc:130,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-dnsname_cc.cc:130,1
    - Dst: DNSName::appendRawLabel
      Src: /src/pdns/pdns/test-dnsname_cc.cc:132,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnsname_cc.cc:134,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-dnsname_cc.cc:134,1
    - Dst: DNSName::DNSName
      Src: /src/pdns/pdns/test-dnsname_cc.cc:136,1
    - Dst: DNSName::appendRawLabel
      Src: /src/pdns/pdns/test-dnsname_cc.cc:138,1
    - Dst: DNSName::appendRawLabel
      Src: /src/pdns/pdns/test-dnsname_cc.cc:139,1
    - Dst: DNSName::appendRawLabel
      Src: /src/pdns/pdns/test-dnsname_cc.cc:140,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsname_cc.cc:142,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/test-dnsname_cc.cc:142,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnsname_cc.cc:147,1
    - Dst: DNSName::isPartOf
      Src: /src/pdns/pdns/test-dnsname_cc.cc:147,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnsname_cc.cc:148,1
    - Dst: DNSName::isPartOf
      Src: /src/pdns/pdns/test-dnsname_cc.cc:148,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsname_cc.cc:149,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/test-dnsname_cc.cc:149,1
    - Dst: DNSName::getRawLabels
      Src: /src/pdns/pdns/test-dnsname_cc.cc:151,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsname_cc.cc:152,1
    - Dst: auto::begin
      Src: /src/pdns/pdns/test-dnsname_cc.cc:152,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsname_cc.cc:153,1
    - Dst: auto::rbegin
      Src: /src/pdns/pdns/test-dnsname_cc.cc:153,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsname_cc.cc:154,1
    - Dst: auto::size
      Src: /src/pdns/pdns/test-dnsname_cc.cc:154,1
    - Dst: DNSName::DNSName
      Src: /src/pdns/pdns/test-dnsname_cc.cc:156,1
    - Dst: DNSName::appendRawLabel
      Src: /src/pdns/pdns/test-dnsname_cc.cc:157,1
    - Dst: DNSName::appendRawLabel
      Src: /src/pdns/pdns/test-dnsname_cc.cc:158,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsname_cc.cc:159,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/test-dnsname_cc.cc:159,1
    - Dst: DNSName::DNSName
      Src: /src/pdns/pdns/test-dnsname_cc.cc:162,1
    - Dst: DNSName::appendRawLabel
      Src: /src/pdns/pdns/test-dnsname_cc.cc:163,1
    - Dst: DNSName::appendRawLabel
      Src: /src/pdns/pdns/test-dnsname_cc.cc:164,1
    - Dst: DNSName::appendRawLabel
      Src: /src/pdns/pdns/test-dnsname_cc.cc:165,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsname_cc.cc:167,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/test-dnsname_cc.cc:167,1
    - Dst: DNSName::DNSName
      Src: /src/pdns/pdns/test-dnsname_cc.cc:171,1
    - Dst: string::append
      Src: /src/pdns/pdns/test-dnsname_cc.cc:173,1
    - Dst: string::append
      Src: /src/pdns/pdns/test-dnsname_cc.cc:174,1
    - Dst: DNSName::appendRawLabel
      Src: /src/pdns/pdns/test-dnsname_cc.cc:175,1
    - Dst: DNSName::appendRawLabel
      Src: /src/pdns/pdns/test-dnsname_cc.cc:176,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsname_cc.cc:178,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/test-dnsname_cc.cc:178,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 67
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 179
      start: 23
    functionDepth: 0
    functionLinenumber: 23
    functionLinenumberEnd: 179
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-dnsname_cc.cc
    functionUses: 0
    functionsReached:
    - DNSName::labelReverse
    - canonCompare_three_way
    - auto::rbegin
    - DNSName::prependRawLabel
    - string::append
    - BOOST_CHECK_EQUAL
    - DNSName
    - DNSName::canonCompare_three_way
    - DNSName::getRawLabels
    - DNSName::toString
    - DNSName::makeRelative
    - DNSName::empty
    - DNSName::isPartOf
    - DNSName::DNSName
    - DNSName::appendRawLabel
    - BOOST_CHECK
    - auto::begin
    - auto::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_basic)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsname_cc.cc:183,1
    - Dst: DNSName::countLabels
      Src: /src/pdns/pdns/test-dnsname_cc.cc:183,1
    - Dst: DNSName::trimToLabels
      Src: /src/pdns/pdns/test-dnsname_cc.cc:184,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsname_cc.cc:185,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/test-dnsname_cc.cc:185,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnsname_cc.cc:187,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsname_cc.cc:190,1
    - Dst: DNSName::countLabels
      Src: /src/pdns/pdns/test-dnsname_cc.cc:190,1
    - Dst: DNSName::trimToLabels
      Src: /src/pdns/pdns/test-dnsname_cc.cc:192,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnsname_cc.cc:193,1
    - Dst: DNSName::clear
      Src: /src/pdns/pdns/test-dnsname_cc.cc:195,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnsname_cc.cc:196,1
    - Dst: DNSName::empty
      Src: /src/pdns/pdns/test-dnsname_cc.cc:196,1
    - Dst: DNSName::trimToLabels
      Src: /src/pdns/pdns/test-dnsname_cc.cc:197,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnsname_cc.cc:198,1
    - Dst: DNSName::empty
      Src: /src/pdns/pdns/test-dnsname_cc.cc:198,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 199
      start: 181
    functionDepth: 0
    functionLinenumber: 181
    functionLinenumberEnd: 199
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-dnsname_cc.cc
    functionUses: 0
    functionsReached:
    - DNSName::countLabels
    - DNSName::clear
    - BOOST_CHECK_EQUAL
    - DNSName::trimToLabels
    - DNSName::toString
    - DNSName::empty
    - BOOST_CHECK
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_trim)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 206
      start: 201
    functionDepth: 0
    functionLinenumber: 201
    functionLinenumberEnd: 206
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-dnsname_cc.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_toolong)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsname_cc.cc:210,1
    - Dst: DNSName::toDNSString
      Src: /src/pdns/pdns/test-dnsname_cc.cc:210,1
    - Dst: string
      Src: /src/pdns/pdns/test-dnsname_cc.cc:210,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 211
      start: 208
    functionDepth: 0
    functionLinenumber: 208
    functionLinenumberEnd: 211
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-dnsname_cc.cc
    functionUses: 0
    functionsReached:
    - DNSName::toDNSString
    - string
    - BOOST_CHECK_EQUAL
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_dnsstrings)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSName::DNSName
      Src: /src/pdns/pdns/test-dnsname_cc.cc:214,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-dnsname_cc.cc:215,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/test-dnsname_cc.cc:215,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-dnsname_cc.cc:216,1
    - Dst: DNSName::toStringNoDot
      Src: /src/pdns/pdns/test-dnsname_cc.cc:216,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-dnsname_cc.cc:217,1
    - Dst: DNSName::toDNSString
      Src: /src/pdns/pdns/test-dnsname_cc.cc:217,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnsname_cc.cc:218,1
    - Dst: DNSName::empty
      Src: /src/pdns/pdns/test-dnsname_cc.cc:218,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnsname_cc.cc:219,1
    - Dst: DNSName::isRoot
      Src: /src/pdns/pdns/test-dnsname_cc.cc:219,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnsname_cc.cc:220,1
    - Dst: DNSName::isWildcard
      Src: /src/pdns/pdns/test-dnsname_cc.cc:220,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsname_cc.cc:221,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnsname_cc.cc:222,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnsname_cc.cc:225,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-dnsname_cc.cc:227,1
    - Dst: DNSName::isPartOf
      Src: /src/pdns/pdns/test-dnsname_cc.cc:227,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-dnsname_cc.cc:228,1
    - Dst: DNSName::isPartOf
      Src: /src/pdns/pdns/test-dnsname_cc.cc:228,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 229
      start: 213
    functionDepth: 0
    functionLinenumber: 213
    functionLinenumberEnd: 229
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-dnsname_cc.cc
    functionUses: 0
    functionsReached:
    - DNSName::isWildcard
    - DNSName::isRoot
    - DNSName::toStringNoDot
    - BOOST_CHECK_EQUAL
    - DNSName::toDNSString
    - DNSName::toString
    - BOOST_CHECK_THROW
    - DNSName::empty
    - DNSName::isPartOf
    - DNSName::DNSName
    - BOOST_CHECK
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_empty)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnsname_cc.cc:234,1
    - Dst: DNSName::isRoot
      Src: /src/pdns/pdns/test-dnsname_cc.cc:234,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnsname_cc.cc:235,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-dnsname_cc.cc:235,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnsname_cc.cc:238,1
    - Dst: DNSName::isWildcard
      Src: /src/pdns/pdns/test-dnsname_cc.cc:238,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnsname_cc.cc:241,1
    - Dst: DNSName::isWildcard
      Src: /src/pdns/pdns/test-dnsname_cc.cc:241,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 242
      start: 231
    functionDepth: 0
    functionLinenumber: 231
    functionLinenumberEnd: 242
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-dnsname_cc.cc
    functionUses: 0
    functionsReached:
    - BOOST_CHECK
    - DNSName::isRoot
    - DNSName::isWildcard
    - DNSName
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_specials)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsname_cc.cc:247,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/test-dnsname_cc.cc:247,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnsname_cc.cc:248,1
    - Dst: DNSName::chopOff
      Src: /src/pdns/pdns/test-dnsname_cc.cc:248,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsname_cc.cc:249,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/test-dnsname_cc.cc:249,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnsname_cc.cc:250,1
    - Dst: DNSName::chopOff
      Src: /src/pdns/pdns/test-dnsname_cc.cc:250,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsname_cc.cc:251,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/test-dnsname_cc.cc:251,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnsname_cc.cc:252,1
    - Dst: DNSName::chopOff
      Src: /src/pdns/pdns/test-dnsname_cc.cc:252,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsname_cc.cc:253,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/test-dnsname_cc.cc:253,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnsname_cc.cc:254,1
    - Dst: DNSName::chopOff
      Src: /src/pdns/pdns/test-dnsname_cc.cc:254,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnsname_cc.cc:255,1
    - Dst: DNSName::chopOff
      Src: /src/pdns/pdns/test-dnsname_cc.cc:255,1
    - Dst: DNSName::prependRawLabel
      Src: /src/pdns/pdns/test-dnsname_cc.cc:257,1
    - Dst: DNSName::prependRawLabel
      Src: /src/pdns/pdns/test-dnsname_cc.cc:258,1
    - Dst: DNSName::prependRawLabel
      Src: /src/pdns/pdns/test-dnsname_cc.cc:259,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsname_cc.cc:260,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/test-dnsname_cc.cc:260,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 261
      start: 245
    functionDepth: 0
    functionLinenumber: 245
    functionLinenumberEnd: 261
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-dnsname_cc.cc
    functionUses: 0
    functionsReached:
    - DNSName::chopOff
    - DNSName::prependRawLabel
    - BOOST_CHECK_EQUAL
    - DNSName::toString
    - BOOST_CHECK
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_chopping)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsname_cc.cc:267,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/test-dnsname_cc.cc:267,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnsname_cc.cc:268,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-dnsname_cc.cc:268,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnsname_cc.cc:272,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-dnsname_cc.cc:272,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 273
      start: 263
    functionDepth: 0
    functionLinenumber: 263
    functionLinenumberEnd: 273
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-dnsname_cc.cc
    functionUses: 0
    functionsReached:
    - BOOST_CHECK
    - DNSName::toString
    - DNSName
    - BOOST_CHECK_EQUAL
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_Append)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSName
      Src: /src/pdns/pdns/test-dnsname_cc.cc:277,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/test-dnsname_cc.cc:278,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-dnsname_cc.cc:278,1
    - Dst: SOARecordContent::toPacket
      Src: /src/pdns/pdns/test-dnsname_cc.cc:280,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/test-dnsname_cc.cc:282,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-dnsname_cc.cc:282,1
    - Dst: AAAARecordContent::toPacket
      Src: /src/pdns/pdns/test-dnsname_cc.cc:283,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/test-dnsname_cc.cc:284,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-dnsname_cc.cc:284,1
    - Dst: AAAARecordContent::toPacket
      Src: /src/pdns/pdns/test-dnsname_cc.cc:285,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/test-dnsname_cc.cc:286,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-dnsname_cc.cc:286,1
    - Dst: AAAARecordContent::toPacket
      Src: /src/pdns/pdns/test-dnsname_cc.cc:287,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/test-dnsname_cc.cc:288,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-dnsname_cc.cc:288,1
    - Dst: AAAARecordContent::toPacket
      Src: /src/pdns/pdns/test-dnsname_cc.cc:289,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/test-dnsname_cc.cc:290,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-dnsname_cc.cc:290,1
    - Dst: AAAARecordContent::toPacket
      Src: /src/pdns/pdns/test-dnsname_cc.cc:291,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/test-dnsname_cc.cc:292,1
    - Dst: vector::size
      Src: /src/pdns/pdns/test-dnsname_cc.cc:293,1
    - Dst: string::find
      Src: /src/pdns/pdns/test-dnsname_cc.cc:296,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsname_cc.cc:300,1
    - Dst: string::find
      Src: /src/pdns/pdns/test-dnsname_cc.cc:303,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsname_cc.cc:307,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 26
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 309
      start: 275
    functionDepth: 0
    functionLinenumber: 275
    functionLinenumberEnd: 309
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-dnsname_cc.cc
    functionUses: 0
    functionsReached:
    - DNSPacketWriter::commit
    - AAAARecordContent::toPacket
    - string::find
    - DNSName
    - SOARecordContent::toPacket
    - BOOST_CHECK_EQUAL
    - vector::size
    - DNSPacketWriter::startRecord
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_packetCompress)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/test-dnsname_cc.cc:316,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-dnsname_cc.cc:317,1
    - Dst: PTRRecordContent::toPacket
      Src: /src/pdns/pdns/test-dnsname_cc.cc:318,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/test-dnsname_cc.cc:319,1
    - Dst: vector::size
      Src: /src/pdns/pdns/test-dnsname_cc.cc:320,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsname_cc.cc:321,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/test-dnsname_cc.cc:323,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/test-dnsname_cc.cc:327,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-dnsname_cc.cc:327,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-dnsname_cc.cc:328,1
    - Dst: PTRRecordContent::toPacket
      Src: /src/pdns/pdns/test-dnsname_cc.cc:329,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/test-dnsname_cc.cc:330,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 332
      start: 311
    functionDepth: 1
    functionLinenumber: 311
    functionLinenumberEnd: 332
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-dnsname_cc.cc
    functionUses: 0
    functionsReached:
    - PTRRecordContent::toPacket
    - DNSPacketWriter::commit
    - DNSName
    - BOOST_CHECK_EQUAL
    - vector::size
    - vector::clear
    - DNSPacketWriter::startRecord
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_packetCompressLong)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vector::size
      Src: /src/pdns/pdns/test-dnsname_cc.cc:341,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsname_cc.cc:342,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-dnsname_cc.cc:351,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-dnsname_cc.cc:351,1
    - Dst: vector::size
      Src: /src/pdns/pdns/test-dnsname_cc.cc:351,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 352
      start: 337
    functionDepth: 0
    functionLinenumber: 337
    functionLinenumberEnd: 352
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-dnsname_cc.cc
    functionUses: 0
    functionsReached:
    - vector::size
    - DNSName
    - BOOST_CHECK_THROW
    - BOOST_CHECK_EQUAL
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_PacketParse)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsname_cc.cc:357,1
    - Dst: DNSName::hash
      Src: /src/pdns/pdns/test-dnsname_cc.cc:357,1
    - Dst: hash
      Src: /src/pdns/pdns/test-dnsname_cc.cc:357,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/test-dnsname_cc.cc:362,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/test-dnsname_cc.cc:362,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/test-dnsname_cc.cc:363,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/test-dnsname_cc.cc:363,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsname_cc.cc:364,1
    - Dst: DNSName::hash
      Src: /src/pdns/pdns/test-dnsname_cc.cc:364,1
    - Dst: DNSName::hash
      Src: /src/pdns/pdns/test-dnsname_cc.cc:364,1
    - Dst: DNSName::hash
      Src: /src/pdns/pdns/test-dnsname_cc.cc:365,1
    - Dst: vector::size
      Src: /src/pdns/pdns/test-dnsname_cc.cc:365,1
    - Dst: std::accumulate
      Src: /src/pdns/pdns/test-dnsname_cc.cc:368,1
    - Dst: std::begin
      Src: /src/pdns/pdns/test-dnsname_cc.cc:368,1
    - Dst: std::end
      Src: /src/pdns/pdns/test-dnsname_cc.cc:368,1
    - Dst: vector::size
      Src: /src/pdns/pdns/test-dnsname_cc.cc:369,1
    - Dst: std::for_each
      Src: /src/pdns/pdns/test-dnsname_cc.cc:372,1
    - Dst: std::begin
      Src: /src/pdns/pdns/test-dnsname_cc.cc:372,1
    - Dst: std::end
      Src: /src/pdns/pdns/test-dnsname_cc.cc:372,1
    - Dst: sqrt
      Src: /src/pdns/pdns/test-dnsname_cc.cc:376,1
    - Dst: vector::size
      Src: /src/pdns/pdns/test-dnsname_cc.cc:376,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnsname_cc.cc:377,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 378
      start: 355
    functionDepth: 1
    functionLinenumber: 355
    functionLinenumberEnd: 378
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-dnsname_cc.cc
    functionUses: 0
    functionsReached:
    - std::for_each
    - DNSName::hash
    - hash
    - std::to_string
    - std::end
    - BOOST_CHECK
    - std::begin
    - std::accumulate
    - BOOST_CHECK_EQUAL
    - sqrt
    - vector::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_hash)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::unordered_set::insert
      Src: /src/pdns/pdns/test-dnsname_cc.cc:382,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-dnsname_cc.cc:382,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnsname_cc.cc:383,1
    - Dst: std::unordered_set::count
      Src: /src/pdns/pdns/test-dnsname_cc.cc:383,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-dnsname_cc.cc:383,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsname_cc.cc:384,1
    - Dst: std::unordered_set::size
      Src: /src/pdns/pdns/test-dnsname_cc.cc:384,1
    - Dst: std::unordered_set::insert
      Src: /src/pdns/pdns/test-dnsname_cc.cc:385,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-dnsname_cc.cc:385,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsname_cc.cc:386,1
    - Dst: std::unordered_set::size
      Src: /src/pdns/pdns/test-dnsname_cc.cc:386,1
    - Dst: std::unordered_set::insert
      Src: /src/pdns/pdns/test-dnsname_cc.cc:387,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-dnsname_cc.cc:387,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsname_cc.cc:388,1
    - Dst: std::unordered_set::size
      Src: /src/pdns/pdns/test-dnsname_cc.cc:388,1
    - Dst: std::unordered_set::clear
      Src: /src/pdns/pdns/test-dnsname_cc.cc:390,1
    - Dst: std::unordered_set::insert
      Src: /src/pdns/pdns/test-dnsname_cc.cc:393,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-dnsname_cc.cc:393,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/test-dnsname_cc.cc:393,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsname_cc.cc:394,1
    - Dst: std::unordered_set::size
      Src: /src/pdns/pdns/test-dnsname_cc.cc:394,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 396
      start: 380
    functionDepth: 1
    functionLinenumber: 380
    functionLinenumberEnd: 396
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-dnsname_cc.cc
    functionUses: 0
    functionsReached:
    - std::unordered_set::clear
    - std::to_string
    - std::unordered_set::insert
    - BOOST_CHECK_EQUAL
    - DNSName
    - std::unordered_set::size
    - std::unordered_set::count
    - BOOST_CHECK
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_hashContainer)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsname_cc.cc:404,1
    - Dst: hashQuestion
      Src: /src/pdns/pdns/test-dnsname_cc.cc:404,1
    - Dst: vector::data
      Src: /src/pdns/pdns/test-dnsname_cc.cc:404,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnsname_cc.cc:405,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-dnsname_cc.cc:409,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnsname_cc.cc:410,1
    - Dst: hashQuestion
      Src: /src/pdns/pdns/test-dnsname_cc.cc:410,1
    - Dst: vector::data
      Src: /src/pdns/pdns/test-dnsname_cc.cc:410,1
    - Dst: vector::size
      Src: /src/pdns/pdns/test-dnsname_cc.cc:410,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnsname_cc.cc:411,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-dnsname_cc.cc:414,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsname_cc.cc:415,1
    - Dst: hashQuestion
      Src: /src/pdns/pdns/test-dnsname_cc.cc:415,1
    - Dst: vector::data
      Src: /src/pdns/pdns/test-dnsname_cc.cc:415,1
    - Dst: vector::size
      Src: /src/pdns/pdns/test-dnsname_cc.cc:415,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnsname_cc.cc:416,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-dnsname_cc.cc:418,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsname_cc.cc:421,1
    - Dst: hashQuestion
      Src: /src/pdns/pdns/test-dnsname_cc.cc:421,1
    - Dst: vector::data
      Src: /src/pdns/pdns/test-dnsname_cc.cc:421,1
    - Dst: vector::size
      Src: /src/pdns/pdns/test-dnsname_cc.cc:421,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnsname_cc.cc:422,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-dnsname_cc.cc:424,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsname_cc.cc:427,1
    - Dst: hashQuestion
      Src: /src/pdns/pdns/test-dnsname_cc.cc:427,1
    - Dst: vector::data
      Src: /src/pdns/pdns/test-dnsname_cc.cc:427,1
    - Dst: vector::size
      Src: /src/pdns/pdns/test-dnsname_cc.cc:427,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnsname_cc.cc:428,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-dnsname_cc.cc:430,1
    - Dst: hashQuestion
      Src: /src/pdns/pdns/test-dnsname_cc.cc:431,1
    - Dst: vector::size
      Src: /src/pdns/pdns/test-dnsname_cc.cc:431,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnsname_cc.cc:432,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-dnsname_cc.cc:433,1
    - Dst: hashQuestion
      Src: /src/pdns/pdns/test-dnsname_cc.cc:434,1
    - Dst: vector::size
      Src: /src/pdns/pdns/test-dnsname_cc.cc:434,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsname_cc.cc:435,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnsname_cc.cc:436,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/test-dnsname_cc.cc:440,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-dnsname_cc.cc:441,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/test-dnsname_cc.cc:441,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/test-dnsname_cc.cc:441,1
    - Dst: assert
      Src: /src/pdns/pdns/test-dnsname_cc.cc:442,1
    - Dst: hashQuestion
      Src: /src/pdns/pdns/test-dnsname_cc.cc:443,1
    - Dst: vector::size
      Src: /src/pdns/pdns/test-dnsname_cc.cc:443,1
    - Dst: vector::size
      Src: /src/pdns/pdns/test-dnsname_cc.cc:443,1
    - Dst: std::accumulate
      Src: /src/pdns/pdns/test-dnsname_cc.cc:446,1
    - Dst: std::begin
      Src: /src/pdns/pdns/test-dnsname_cc.cc:446,1
    - Dst: std::end
      Src: /src/pdns/pdns/test-dnsname_cc.cc:446,1
    - Dst: vector::size
      Src: /src/pdns/pdns/test-dnsname_cc.cc:447,1
    - Dst: std::for_each
      Src: /src/pdns/pdns/test-dnsname_cc.cc:450,1
    - Dst: std::begin
      Src: /src/pdns/pdns/test-dnsname_cc.cc:450,1
    - Dst: std::end
      Src: /src/pdns/pdns/test-dnsname_cc.cc:450,1
    - Dst: sqrt
      Src: /src/pdns/pdns/test-dnsname_cc.cc:454,1
    - Dst: vector::size
      Src: /src/pdns/pdns/test-dnsname_cc.cc:454,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnsname_cc.cc:455,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 25
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (ok)
      pos:
        line_end: 441
        line_start: 441
        source_file: /src/pdns/pdns/test-dnsname_cc.cc
    constantsTouched: []
    func_position:
      end: 456
      start: 399
    functionDepth: 1
    functionLinenumber: 399
    functionLinenumberEnd: 456
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-dnsname_cc.cc
    functionUses: 0
    functionsReached:
    - std::for_each
    - hashQuestion
    - std::end
    - std::to_string
    - std::begin
    - std::accumulate
    - DNSName
    - BOOST_CHECK_EQUAL
    - assert
    - sqrt
    - vector::data
    - vector::size
    - BOOST_CHECK
    - vector::clear
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_QuestionHash)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSName
      Src: /src/pdns/pdns/test-dnsname_cc.cc:460,1
    - Dst: vector::size
      Src: /src/pdns/pdns/test-dnsname_cc.cc:463,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsname_cc.cc:464,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/test-dnsname_cc.cc:464,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnsname_cc.cc:465,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsname_cc.cc:466,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/test-dnsname_cc.cc:468,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-dnsname_cc.cc:468,1
    - Dst: DNSRecordContent::TypeToNumber
      Src: /src/pdns/pdns/test-dnsname_cc.cc:468,1
    - Dst: NSRecordContent::toPacket
      Src: /src/pdns/pdns/test-dnsname_cc.cc:470,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/test-dnsname_cc.cc:472,1
    - Dst: vector::size
      Src: /src/pdns/pdns/test-dnsname_cc.cc:484,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsname_cc.cc:485,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/test-dnsname_cc.cc:485,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnsname_cc.cc:486,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsname_cc.cc:487,1
    - Dst: vector::size
      Src: /src/pdns/pdns/test-dnsname_cc.cc:489,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsname_cc.cc:490,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/test-dnsname_cc.cc:490,1
    - Dst: vector::size
      Src: /src/pdns/pdns/test-dnsname_cc.cc:492,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnsname_cc.cc:493,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 496
      start: 458
    functionDepth: 0
    functionLinenumber: 458
    functionLinenumberEnd: 496
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-dnsname_cc.cc
    functionUses: 0
    functionsReached:
    - NSRecordContent::toPacket
    - BOOST_CHECK
    - DNSPacketWriter::commit
    - BOOST_CHECK_EQUAL
    - DNSName
    - DNSName::toString
    - DNSRecordContent::TypeToNumber
    - vector::size
    - DNSPacketWriter::startRecord
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_packetParse)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: DNSName::DNSName
      Src: /src/pdns/pdns/test-dnsname_cc.cc:499,1
    - Dst: DNSName::appendRawLabel
      Src: /src/pdns/pdns/test-dnsname_cc.cc:504,1
    - Dst: string::clear
      Src: /src/pdns/pdns/test-dnsname_cc.cc:505,1
    - Dst: string::append
      Src: /src/pdns/pdns/test-dnsname_cc.cc:507,1
    - Dst: string::empty
      Src: /src/pdns/pdns/test-dnsname_cc.cc:509,1
    - Dst: DNSName::appendRawLabel
      Src: /src/pdns/pdns/test-dnsname_cc.cc:510,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/test-dnsname_cc.cc:512,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnsname_cc.cc:513,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 514
      start: 498
    functionDepth: 1
    functionLinenumber: 498
    functionLinenumberEnd: 514
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-dnsname_cc.cc
    functionUses: 0
    functionsReached:
    - string::empty
    - string::append
    - DNSName::appendRawLabel
    - DNSName::toString
    - DNSName::DNSName
    - BOOST_CHECK
    - string::clear
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_escaping)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SuffixMatchNode::add
      Src: /src/pdns/pdns/test-dnsname_cc.cc:519,1
    - Dst: DNSName::getRawLabels
      Src: /src/pdns/pdns/test-dnsname_cc.cc:519,1
    - Dst: SuffixMatchNode::add
      Src: /src/pdns/pdns/test-dnsname_cc.cc:521,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-dnsname_cc.cc:521,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnsname_cc.cc:525,1
    - Dst: SuffixMatchNode::check
      Src: /src/pdns/pdns/test-dnsname_cc.cc:525,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnsname_cc.cc:526,1
    - Dst: SuffixMatchNode::check
      Src: /src/pdns/pdns/test-dnsname_cc.cc:526,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnsname_cc.cc:528,1
    - Dst: SuffixMatchNode::check
      Src: /src/pdns/pdns/test-dnsname_cc.cc:528,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-dnsname_cc.cc:528,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnsname_cc.cc:529,1
    - Dst: SuffixMatchNode::check
      Src: /src/pdns/pdns/test-dnsname_cc.cc:529,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-dnsname_cc.cc:529,1
    - Dst: SuffixMatchNode::add
      Src: /src/pdns/pdns/test-dnsname_cc.cc:531,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-dnsname_cc.cc:531,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnsname_cc.cc:532,1
    - Dst: SuffixMatchNode::check
      Src: /src/pdns/pdns/test-dnsname_cc.cc:532,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-dnsname_cc.cc:532,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnsname_cc.cc:533,1
    - Dst: SuffixMatchNode::getBestMatch
      Src: /src/pdns/pdns/test-dnsname_cc.cc:533,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-dnsname_cc.cc:533,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-dnsname_cc.cc:533,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnsname_cc.cc:534,1
    - Dst: SuffixMatchNode::check
      Src: /src/pdns/pdns/test-dnsname_cc.cc:534,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-dnsname_cc.cc:534,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnsname_cc.cc:535,1
    - Dst: SuffixMatchNode::getBestMatch
      Src: /src/pdns/pdns/test-dnsname_cc.cc:535,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-dnsname_cc.cc:535,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-dnsname_cc.cc:535,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnsname_cc.cc:536,1
    - Dst: SuffixMatchNode::check
      Src: /src/pdns/pdns/test-dnsname_cc.cc:536,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-dnsname_cc.cc:536,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnsname_cc.cc:537,1
    - Dst: SuffixMatchNode::check
      Src: /src/pdns/pdns/test-dnsname_cc.cc:537,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-dnsname_cc.cc:537,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnsname_cc.cc:538,1
    - Dst: SuffixMatchNode::getBestMatch
      Src: /src/pdns/pdns/test-dnsname_cc.cc:538,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-dnsname_cc.cc:538,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnsname_cc.cc:540,1
    - Dst: SuffixMatchNode::check
      Src: /src/pdns/pdns/test-dnsname_cc.cc:540,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-dnsname_cc.cc:540,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnsname_cc.cc:541,1
    - Dst: SuffixMatchNode::getBestMatch
      Src: /src/pdns/pdns/test-dnsname_cc.cc:541,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-dnsname_cc.cc:541,1
    - Dst: SuffixMatchNode::add
      Src: /src/pdns/pdns/test-dnsname_cc.cc:543,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnsname_cc.cc:544,1
    - Dst: SuffixMatchNode::check
      Src: /src/pdns/pdns/test-dnsname_cc.cc:544,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-dnsname_cc.cc:544,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnsname_cc.cc:545,1
    - Dst: SuffixMatchNode::getBestMatch
      Src: /src/pdns/pdns/test-dnsname_cc.cc:545,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-dnsname_cc.cc:545,1
    - Dst: SuffixMatchNode::add
      Src: /src/pdns/pdns/test-dnsname_cc.cc:549,1
    - Dst: SuffixMatchNode::add
      Src: /src/pdns/pdns/test-dnsname_cc.cc:550,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnsname_cc.cc:551,1
    - Dst: SuffixMatchNode::check
      Src: /src/pdns/pdns/test-dnsname_cc.cc:551,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnsname_cc.cc:552,1
    - Dst: SuffixMatchNode::check
      Src: /src/pdns/pdns/test-dnsname_cc.cc:552,1
    - Dst: SuffixMatchNode::remove
      Src: /src/pdns/pdns/test-dnsname_cc.cc:555,1
    - Dst: SuffixMatchNode::remove
      Src: /src/pdns/pdns/test-dnsname_cc.cc:556,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsname_cc.cc:557,1
    - Dst: SuffixMatchNode::check
      Src: /src/pdns/pdns/test-dnsname_cc.cc:557,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnsname_cc.cc:558,1
    - Dst: SuffixMatchNode::check
      Src: /src/pdns/pdns/test-dnsname_cc.cc:558,1
    - Dst: SuffixMatchNode::add
      Src: /src/pdns/pdns/test-dnsname_cc.cc:560,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-dnsname_cc.cc:560,1
    - Dst: SuffixMatchNode::add
      Src: /src/pdns/pdns/test-dnsname_cc.cc:561,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-dnsname_cc.cc:561,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnsname_cc.cc:563,1
    - Dst: SuffixMatchNode::check
      Src: /src/pdns/pdns/test-dnsname_cc.cc:563,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-dnsname_cc.cc:563,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 31
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 564
      start: 516
    functionDepth: 0
    functionLinenumber: 516
    functionLinenumberEnd: 564
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-dnsname_cc.cc
    functionUses: 0
    functionsReached:
    - SuffixMatchNode::check
    - DNSName
    - BOOST_CHECK_EQUAL
    - SuffixMatchNode::remove
    - DNSName::getRawLabels
    - SuffixMatchNode::getBestMatch
    - BOOST_CHECK
    - SuffixMatchNode::add
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_suffixmatch)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SuffixMatchTree::add
      Src: /src/pdns/pdns/test-dnsname_cc.cc:569,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-dnsname_cc.cc:569,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-dnsname_cc.cc:571,1
    - Dst: SuffixMatchTree::add
      Src: /src/pdns/pdns/test-dnsname_cc.cc:572,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-dnsname_cc.cc:572,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/test-dnsname_cc.cc:576,1
    - Dst: SuffixMatchTree::lookup
      Src: /src/pdns/pdns/test-dnsname_cc.cc:576,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsname_cc.cc:577,1
    - Dst: SuffixMatchTree::lookup
      Src: /src/pdns/pdns/test-dnsname_cc.cc:577,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnsname_cc.cc:578,1
    - Dst: SuffixMatchTree::lookup
      Src: /src/pdns/pdns/test-dnsname_cc.cc:578,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/test-dnsname_cc.cc:580,1
    - Dst: SuffixMatchTree::lookup
      Src: /src/pdns/pdns/test-dnsname_cc.cc:580,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-dnsname_cc.cc:580,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsname_cc.cc:581,1
    - Dst: SuffixMatchTree::lookup
      Src: /src/pdns/pdns/test-dnsname_cc.cc:581,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-dnsname_cc.cc:581,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-dnsname_cc.cc:581,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/test-dnsname_cc.cc:582,1
    - Dst: SuffixMatchTree::lookup
      Src: /src/pdns/pdns/test-dnsname_cc.cc:582,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-dnsname_cc.cc:582,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsname_cc.cc:583,1
    - Dst: SuffixMatchTree::lookup
      Src: /src/pdns/pdns/test-dnsname_cc.cc:583,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-dnsname_cc.cc:583,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-dnsname_cc.cc:583,1
    - Dst: SuffixMatchTree::add
      Src: /src/pdns/pdns/test-dnsname_cc.cc:585,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-dnsname_cc.cc:585,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-dnsname_cc.cc:585,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/test-dnsname_cc.cc:586,1
    - Dst: SuffixMatchTree::lookup
      Src: /src/pdns/pdns/test-dnsname_cc.cc:586,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-dnsname_cc.cc:586,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsname_cc.cc:587,1
    - Dst: SuffixMatchTree::lookup
      Src: /src/pdns/pdns/test-dnsname_cc.cc:587,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-dnsname_cc.cc:587,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-dnsname_cc.cc:587,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/test-dnsname_cc.cc:588,1
    - Dst: SuffixMatchTree::lookup
      Src: /src/pdns/pdns/test-dnsname_cc.cc:588,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-dnsname_cc.cc:588,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsname_cc.cc:589,1
    - Dst: SuffixMatchTree::lookup
      Src: /src/pdns/pdns/test-dnsname_cc.cc:589,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-dnsname_cc.cc:589,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-dnsname_cc.cc:589,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/test-dnsname_cc.cc:590,1
    - Dst: SuffixMatchTree::lookup
      Src: /src/pdns/pdns/test-dnsname_cc.cc:590,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-dnsname_cc.cc:590,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsname_cc.cc:591,1
    - Dst: SuffixMatchTree::lookup
      Src: /src/pdns/pdns/test-dnsname_cc.cc:591,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-dnsname_cc.cc:591,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-dnsname_cc.cc:591,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnsname_cc.cc:592,1
    - Dst: SuffixMatchTree::lookup
      Src: /src/pdns/pdns/test-dnsname_cc.cc:592,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-dnsname_cc.cc:592,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnsname_cc.cc:593,1
    - Dst: SuffixMatchTree::lookup
      Src: /src/pdns/pdns/test-dnsname_cc.cc:593,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-dnsname_cc.cc:593,1
    - Dst: SuffixMatchTree::add
      Src: /src/pdns/pdns/test-dnsname_cc.cc:595,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-dnsname_cc.cc:595,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/test-dnsname_cc.cc:596,1
    - Dst: SuffixMatchTree::lookup
      Src: /src/pdns/pdns/test-dnsname_cc.cc:596,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-dnsname_cc.cc:596,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsname_cc.cc:597,1
    - Dst: SuffixMatchTree::lookup
      Src: /src/pdns/pdns/test-dnsname_cc.cc:597,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-dnsname_cc.cc:597,1
    - Dst: SuffixMatchTree::add
      Src: /src/pdns/pdns/test-dnsname_cc.cc:601,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-dnsname_cc.cc:601,1
    - Dst: SuffixMatchTree::add
      Src: /src/pdns/pdns/test-dnsname_cc.cc:602,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-dnsname_cc.cc:602,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/test-dnsname_cc.cc:603,1
    - Dst: SuffixMatchTree::lookup
      Src: /src/pdns/pdns/test-dnsname_cc.cc:603,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsname_cc.cc:604,1
    - Dst: SuffixMatchTree::lookup
      Src: /src/pdns/pdns/test-dnsname_cc.cc:604,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/test-dnsname_cc.cc:605,1
    - Dst: SuffixMatchTree::lookup
      Src: /src/pdns/pdns/test-dnsname_cc.cc:605,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsname_cc.cc:606,1
    - Dst: SuffixMatchTree::lookup
      Src: /src/pdns/pdns/test-dnsname_cc.cc:606,1
    - Dst: SuffixMatchTree::add
      Src: /src/pdns/pdns/test-dnsname_cc.cc:610,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-dnsname_cc.cc:610,1
    - Dst: SuffixMatchTree::add
      Src: /src/pdns/pdns/test-dnsname_cc.cc:611,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-dnsname_cc.cc:611,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/test-dnsname_cc.cc:612,1
    - Dst: SuffixMatchTree::lookup
      Src: /src/pdns/pdns/test-dnsname_cc.cc:612,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsname_cc.cc:613,1
    - Dst: SuffixMatchTree::lookup
      Src: /src/pdns/pdns/test-dnsname_cc.cc:613,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/test-dnsname_cc.cc:614,1
    - Dst: SuffixMatchTree::lookup
      Src: /src/pdns/pdns/test-dnsname_cc.cc:614,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsname_cc.cc:615,1
    - Dst: SuffixMatchTree::lookup
      Src: /src/pdns/pdns/test-dnsname_cc.cc:615,1
    - Dst: SuffixMatchTree::remove
      Src: /src/pdns/pdns/test-dnsname_cc.cc:618,1
    - Dst: SuffixMatchTree::remove
      Src: /src/pdns/pdns/test-dnsname_cc.cc:619,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnsname_cc.cc:620,1
    - Dst: SuffixMatchTree::lookup
      Src: /src/pdns/pdns/test-dnsname_cc.cc:620,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsname_cc.cc:621,1
    - Dst: SuffixMatchTree::lookup
      Src: /src/pdns/pdns/test-dnsname_cc.cc:621,1
    - Dst: SuffixMatchTree
      Src: /src/pdns/pdns/test-dnsname_cc.cc:623,1
    - Dst: SuffixMatchTree::add
      Src: /src/pdns/pdns/test-dnsname_cc.cc:624,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-dnsname_cc.cc:624,1
    - Dst: SuffixMatchTree::add
      Src: /src/pdns/pdns/test-dnsname_cc.cc:625,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-dnsname_cc.cc:625,1
    - Dst: SuffixMatchTree::add
      Src: /src/pdns/pdns/test-dnsname_cc.cc:626,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-dnsname_cc.cc:626,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-dnsname_cc.cc:626,1
    - Dst: SuffixMatchTree::add
      Src: /src/pdns/pdns/test-dnsname_cc.cc:627,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-dnsname_cc.cc:627,1
    - Dst: SuffixMatchTree::remove
      Src: /src/pdns/pdns/test-dnsname_cc.cc:629,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-dnsname_cc.cc:629,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/test-dnsname_cc.cc:630,1
    - Dst: SuffixMatchTree::lookup
      Src: /src/pdns/pdns/test-dnsname_cc.cc:630,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-dnsname_cc.cc:630,1
    - Dst: SuffixMatchTree::remove
      Src: /src/pdns/pdns/test-dnsname_cc.cc:631,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-dnsname_cc.cc:631,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnsname_cc.cc:632,1
    - Dst: SuffixMatchTree::lookup
      Src: /src/pdns/pdns/test-dnsname_cc.cc:632,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-dnsname_cc.cc:632,1
    - Dst: SuffixMatchTree::remove
      Src: /src/pdns/pdns/test-dnsname_cc.cc:634,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/test-dnsname_cc.cc:635,1
    - Dst: SuffixMatchTree::lookup
      Src: /src/pdns/pdns/test-dnsname_cc.cc:635,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsname_cc.cc:636,1
    - Dst: SuffixMatchTree::lookup
      Src: /src/pdns/pdns/test-dnsname_cc.cc:636,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnsname_cc.cc:637,1
    - Dst: SuffixMatchTree::lookup
      Src: /src/pdns/pdns/test-dnsname_cc.cc:637,1
    - Dst: SuffixMatchTree::remove
      Src: /src/pdns/pdns/test-dnsname_cc.cc:639,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnsname_cc.cc:640,1
    - Dst: SuffixMatchTree::lookup
      Src: /src/pdns/pdns/test-dnsname_cc.cc:640,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnsname_cc.cc:641,1
    - Dst: SuffixMatchTree::lookup
      Src: /src/pdns/pdns/test-dnsname_cc.cc:641,1
    - Dst: SuffixMatchTree::add
      Src: /src/pdns/pdns/test-dnsname_cc.cc:643,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-dnsname_cc.cc:643,1
    - Dst: SuffixMatchTree::add
      Src: /src/pdns/pdns/test-dnsname_cc.cc:644,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-dnsname_cc.cc:644,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/test-dnsname_cc.cc:645,1
    - Dst: SuffixMatchTree::lookup
      Src: /src/pdns/pdns/test-dnsname_cc.cc:645,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsname_cc.cc:646,1
    - Dst: SuffixMatchTree::lookup
      Src: /src/pdns/pdns/test-dnsname_cc.cc:646,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/test-dnsname_cc.cc:647,1
    - Dst: SuffixMatchTree::lookup
      Src: /src/pdns/pdns/test-dnsname_cc.cc:647,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsname_cc.cc:648,1
    - Dst: SuffixMatchTree::lookup
      Src: /src/pdns/pdns/test-dnsname_cc.cc:648,1
    - Dst: SuffixMatchTree::remove
      Src: /src/pdns/pdns/test-dnsname_cc.cc:650,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsname_cc.cc:651,1
    - Dst: SuffixMatchTree::lookup
      Src: /src/pdns/pdns/test-dnsname_cc.cc:651,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsname_cc.cc:652,1
    - Dst: SuffixMatchTree::lookup
      Src: /src/pdns/pdns/test-dnsname_cc.cc:652,1
    - Dst: SuffixMatchTree::remove
      Src: /src/pdns/pdns/test-dnsname_cc.cc:653,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsname_cc.cc:654,1
    - Dst: SuffixMatchTree::lookup
      Src: /src/pdns/pdns/test-dnsname_cc.cc:654,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsname_cc.cc:655,1
    - Dst: SuffixMatchTree::lookup
      Src: /src/pdns/pdns/test-dnsname_cc.cc:655,1
    - Dst: SuffixMatchTree::remove
      Src: /src/pdns/pdns/test-dnsname_cc.cc:656,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnsname_cc.cc:657,1
    - Dst: SuffixMatchTree::lookup
      Src: /src/pdns/pdns/test-dnsname_cc.cc:657,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnsname_cc.cc:658,1
    - Dst: SuffixMatchTree::lookup
      Src: /src/pdns/pdns/test-dnsname_cc.cc:658,1
    - Dst: SuffixMatchTree::remove
      Src: /src/pdns/pdns/test-dnsname_cc.cc:659,1
    - Dst: SuffixMatchTree::visit
      Src: /src/pdns/pdns/test-dnsname_cc.cc:662,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsname_cc.cc:664,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsname_cc.cc:666,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsname_cc.cc:668,1
    - Dst: SuffixMatchTree::lookup
      Src: /src/pdns/pdns/test-dnsname_cc.cc:668,1
    - Dst: SuffixMatchTree::remove
      Src: /src/pdns/pdns/test-dnsname_cc.cc:669,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnsname_cc.cc:670,1
    - Dst: SuffixMatchTree::lookup
      Src: /src/pdns/pdns/test-dnsname_cc.cc:670,1
    - Dst: SuffixMatchTree::visit
      Src: /src/pdns/pdns/test-dnsname_cc.cc:673,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsname_cc.cc:676,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 83
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 677
      start: 566
    functionDepth: 0
    functionLinenumber: 566
    functionLinenumberEnd: 677
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-dnsname_cc.cc
    functionUses: 0
    functionsReached:
    - SuffixMatchTree
    - BOOST_CHECK_EQUAL
    - DNSName
    - SuffixMatchTree::add
    - SuffixMatchTree::lookup
    - SuffixMatchTree::remove
    - SuffixMatchTree::visit
    - BOOST_REQUIRE
    - BOOST_CHECK
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_suffixmatch_tree)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsname_cc.cc:682,1
    - Dst: toString
      Src: /src/pdns/pdns/test-dnsname_cc.cc:682,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 683
      start: 680
    functionDepth: 0
    functionLinenumber: 680
    functionLinenumberEnd: 683
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-dnsname_cc.cc
    functionUses: 0
    functionsReached:
    - toString
    - BOOST_CHECK_EQUAL
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_concat)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnsname_cc.cc:686,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-dnsname_cc.cc:686,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-dnsname_cc.cc:686,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnsname_cc.cc:687,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-dnsname_cc.cc:687,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-dnsname_cc.cc:687,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnsname_cc.cc:688,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-dnsname_cc.cc:688,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-dnsname_cc.cc:688,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnsname_cc.cc:689,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-dnsname_cc.cc:689,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-dnsname_cc.cc:689,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 690
      start: 685
    functionDepth: 0
    functionLinenumber: 685
    functionLinenumberEnd: 690
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-dnsname_cc.cc
    functionUses: 0
    functionsReached:
    - BOOST_CHECK
    - DNSName
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_compare_naive)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSName::DNSName
      Src: /src/pdns/pdns/test-dnsname_cc.cc:693,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnsname_cc.cc:694,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnsname_cc.cc:695,1
    - Dst: DNSName::canonCompare_three_way
      Src: /src/pdns/pdns/test-dnsname_cc.cc:695,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 696
      start: 692
    functionDepth: 0
    functionLinenumber: 692
    functionLinenumberEnd: 696
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-dnsname_cc.cc
    functionUses: 0
    functionsReached:
    - DNSName::DNSName
    - BOOST_CHECK
    - DNSName::canonCompare_three_way
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_compare_empty)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsname_cc.cc:700,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsname_cc.cc:701,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/test-dnsname_cc.cc:701,1
    - Dst: DNSName::makeLowerCase
      Src: /src/pdns/pdns/test-dnsname_cc.cc:702,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsname_cc.cc:703,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsname_cc.cc:704,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsname_cc.cc:705,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/test-dnsname_cc.cc:705,1
    - Dst: toString
      Src: /src/pdns/pdns/test-dnsname_cc.cc:705,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsname_cc.cc:706,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/test-dnsname_cc.cc:706,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 707
      start: 698
    functionDepth: 0
    functionLinenumber: 698
    functionLinenumberEnd: 707
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-dnsname_cc.cc
    functionUses: 0
    functionsReached:
    - toString
    - DNSName::toString
    - DNSName::makeLowerCase
    - BOOST_CHECK_EQUAL
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_casing)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnsname_cc.cc:713,1
    - Dst: DNSName::canonCompare_three_way
      Src: /src/pdns/pdns/test-dnsname_cc.cc:713,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnsname_cc.cc:715,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-dnsname_cc.cc:715,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-dnsname_cc.cc:715,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnsname_cc.cc:716,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-dnsname_cc.cc:716,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-dnsname_cc.cc:716,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnsname_cc.cc:717,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-dnsname_cc.cc:717,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-dnsname_cc.cc:717,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnsname_cc.cc:720,1
    - Dst: a
      Src: /src/pdns/pdns/test-dnsname_cc.cc:720,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-dnsname_cc.cc:720,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnsname_cc.cc:721,1
    - Dst: a
      Src: /src/pdns/pdns/test-dnsname_cc.cc:721,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-dnsname_cc.cc:721,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnsname_cc.cc:722,1
    - Dst: a
      Src: /src/pdns/pdns/test-dnsname_cc.cc:722,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-dnsname_cc.cc:722,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/test-dnsname_cc.cc:728,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-dnsname_cc.cc:728,1
    - Dst: sort
      Src: /src/pdns/pdns/test-dnsname_cc.cc:730,1
    - Dst: vector::begin
      Src: /src/pdns/pdns/test-dnsname_cc.cc:730,1
    - Dst: vector::end
      Src: /src/pdns/pdns/test-dnsname_cc.cc:730,1
    - Dst: CanonDNSNameCompare
      Src: /src/pdns/pdns/test-dnsname_cc.cc:730,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/test-dnsname_cc.cc:743,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-dnsname_cc.cc:743,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnsname_cc.cc:746,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 747
      start: 711
    functionDepth: 0
    functionLinenumber: 711
    functionLinenumberEnd: 747
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-dnsname_cc.cc
    functionUses: 0
    functionsReached:
    - vector::begin
    - vector::push_back
    - CanonDNSNameCompare
    - DNSName
    - vector::end
    - DNSName::canonCompare_three_way
    - sort
    - BOOST_CHECK
    - a
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_compare_canonical)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnsname_cc.cc:750,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-dnsname_cc.cc:750,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-dnsname_cc.cc:750,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnsname_cc.cc:751,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-dnsname_cc.cc:751,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-dnsname_cc.cc:751,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnsname_cc.cc:752,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-dnsname_cc.cc:752,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-dnsname_cc.cc:752,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnsname_cc.cc:753,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-dnsname_cc.cc:753,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-dnsname_cc.cc:753,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnsname_cc.cc:754,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-dnsname_cc.cc:754,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-dnsname_cc.cc:754,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnsname_cc.cc:755,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-dnsname_cc.cc:755,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-dnsname_cc.cc:755,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 756
      start: 749
    functionDepth: 0
    functionLinenumber: 749
    functionLinenumberEnd: 756
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-dnsname_cc.cc
    functionUses: 0
    functionsReached:
    - BOOST_CHECK
    - DNSName
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_compare_pretty)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-dnsname_cc.cc:762,1
    - Dst: DNSName::appendRawLabel
      Src: /src/pdns/pdns/test-dnsname_cc.cc:762,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-dnsname_cc.cc:767,1
    - Dst: DNSName::prependRawLabel
      Src: /src/pdns/pdns/test-dnsname_cc.cc:767,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 769
      start: 758
    functionDepth: 0
    functionLinenumber: 758
    functionLinenumberEnd: 769
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-dnsname_cc.cc
    functionUses: 0
    functionsReached:
    - DNSName::prependRawLabel
    - DNSName::appendRawLabel
    - BOOST_CHECK_THROW
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_empty_label)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSName::appendRawLabel
      Src: /src/pdns/pdns/test-dnsname_cc.cc:777,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsname_cc.cc:778,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/test-dnsname_cc.cc:778,1
    - Dst: DNSName::prependRawLabel
      Src: /src/pdns/pdns/test-dnsname_cc.cc:783,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsname_cc.cc:784,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/test-dnsname_cc.cc:784,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 786
      start: 771
    functionDepth: 0
    functionLinenumber: 771
    functionLinenumberEnd: 786
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-dnsname_cc.cc
    functionUses: 0
    functionsReached:
    - DNSName::toString
    - DNSName::prependRawLabel
    - DNSName::appendRawLabel
    - BOOST_CHECK_EQUAL
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_label_length_max)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-dnsname_cc.cc:794,1
    - Dst: DNSName::appendRawLabel
      Src: /src/pdns/pdns/test-dnsname_cc.cc:794,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-dnsname_cc.cc:799,1
    - Dst: DNSName::prependRawLabel
      Src: /src/pdns/pdns/test-dnsname_cc.cc:799,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 801
      start: 788
    functionDepth: 0
    functionLinenumber: 788
    functionLinenumberEnd: 801
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-dnsname_cc.cc
    functionUses: 0
    functionsReached:
    - DNSName::prependRawLabel
    - DNSName::appendRawLabel
    - BOOST_CHECK_THROW
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_label_length_too_long)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSName::appendRawLabel
      Src: /src/pdns/pdns/test-dnsname_cc.cc:812,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsname_cc.cc:813,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/test-dnsname_cc.cc:813,1
    - Dst: DNSName::prependRawLabel
      Src: /src/pdns/pdns/test-dnsname_cc.cc:818,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsname_cc.cc:819,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/test-dnsname_cc.cc:819,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-dnsname_cc.cc:825,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsname_cc.cc:826,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/test-dnsname_cc.cc:826,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 828
      start: 803
    functionDepth: 0
    functionLinenumber: 803
    functionLinenumberEnd: 828
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-dnsname_cc.cc
    functionUses: 0
    functionsReached:
    - DNSName::prependRawLabel
    - DNSName
    - BOOST_CHECK_EQUAL
    - DNSName::toString
    - DNSName::appendRawLabel
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_name_length_max)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-dnsname_cc.cc:839,1
    - Dst: DNSName::appendRawLabel
      Src: /src/pdns/pdns/test-dnsname_cc.cc:839,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-dnsname_cc.cc:844,1
    - Dst: DNSName::prependRawLabel
      Src: /src/pdns/pdns/test-dnsname_cc.cc:844,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-dnsname_cc.cc:849,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-dnsname_cc.cc:849,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 851
      start: 830
    functionDepth: 0
    functionLinenumber: 830
    functionLinenumberEnd: 851
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-dnsname_cc.cc
    functionUses: 0
    functionsReached:
    - DNSName::prependRawLabel
    - DNSName::appendRawLabel
    - BOOST_CHECK_THROW
    - DNSName
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_name_length_too_long)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 859
      start: 854
    functionDepth: 0
    functionLinenumber: 854
    functionLinenumberEnd: 859
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-dnsname_cc.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_invalid_label_length)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: string::c_str
      Src: /src/pdns/pdns/test-dnsname_cc.cc:865,1
    - Dst: string::size
      Src: /src/pdns/pdns/test-dnsname_cc.cc:865,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsname_cc.cc:866,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/test-dnsname_cc.cc:866,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 867
      start: 861
    functionDepth: 0
    functionLinenumber: 861
    functionLinenumberEnd: 867
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-dnsname_cc.cc
    functionUses: 0
    functionsReached:
    - string::c_str
    - DNSName::toString
    - string::size
    - BOOST_CHECK_EQUAL
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_compression)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: string::c_str
      Src: /src/pdns/pdns/test-dnsname_cc.cc:876,1
    - Dst: string::size
      Src: /src/pdns/pdns/test-dnsname_cc.cc:876,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsname_cc.cc:877,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/test-dnsname_cc.cc:877,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsname_cc.cc:878,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsname_cc.cc:879,1
    - Dst: string::insert
      Src: /src/pdns/pdns/test-dnsname_cc.cc:891,1
    - Dst: string::c_str
      Src: /src/pdns/pdns/test-dnsname_cc.cc:893,1
    - Dst: string::size
      Src: /src/pdns/pdns/test-dnsname_cc.cc:893,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsname_cc.cc:894,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/test-dnsname_cc.cc:894,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsname_cc.cc:895,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsname_cc.cc:896,1
    - Dst: string::insert
      Src: /src/pdns/pdns/test-dnsname_cc.cc:902,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 906
      start: 869
    functionDepth: 1
    functionLinenumber: 869
    functionLinenumberEnd: 906
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-dnsname_cc.cc
    functionUses: 0
    functionsReached:
    - string::c_str
    - string::size
    - BOOST_CHECK_EQUAL
    - string::insert
    - DNSName::toString
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_compression_qtype_qclass)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 924
      start: 908
    functionDepth: 0
    functionLinenumber: 908
    functionLinenumberEnd: 924
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-dnsname_cc.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_compression_single_bit_set)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: string::c_str
      Src: /src/pdns/pdns/test-dnsname_cc.cc:930,1
    - Dst: string::size
      Src: /src/pdns/pdns/test-dnsname_cc.cc:930,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsname_cc.cc:931,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/test-dnsname_cc.cc:931,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 932
      start: 926
    functionDepth: 0
    functionLinenumber: 926
    functionLinenumberEnd: 932
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-dnsname_cc.cc
    functionUses: 0
    functionsReached:
    - string::c_str
    - DNSName::toString
    - string::size
    - BOOST_CHECK_EQUAL
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_pointer_pointer_root)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 939
      start: 934
    functionDepth: 0
    functionLinenumber: 934
    functionLinenumberEnd: 939
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-dnsname_cc.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_bad_compression_pointer)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 946
      start: 941
    functionDepth: 0
    functionLinenumber: 941
    functionLinenumberEnd: 946
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-dnsname_cc.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_compression_loop)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 953
      start: 948
    functionDepth: 0
    functionLinenumber: 948
    functionLinenumberEnd: 953
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-dnsname_cc.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_compression_loop1)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: string::append
      Src: /src/pdns/pdns/test-dnsname_cc.cc:960,1
    - Dst: string::append
      Src: /src/pdns/pdns/test-dnsname_cc.cc:961,1
    - Dst: string::append
      Src: /src/pdns/pdns/test-dnsname_cc.cc:966,1
    - Dst: string::append
      Src: /src/pdns/pdns/test-dnsname_cc.cc:967,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 970
      start: 955
    functionDepth: 0
    functionLinenumber: 955
    functionLinenumberEnd: 970
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-dnsname_cc.cc
    functionUses: 0
    functionsReached:
    - string::append
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_compression_loop2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsname_cc.cc:974,1
    - Dst: DNSName::wirelength
      Src: /src/pdns/pdns/test-dnsname_cc.cc:974,1
    - Dst: DNSName::prependRawLabel
      Src: /src/pdns/pdns/test-dnsname_cc.cc:977,1
    - Dst: string
      Src: /src/pdns/pdns/test-dnsname_cc.cc:977,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsname_cc.cc:978,1
    - Dst: DNSName::wirelength
      Src: /src/pdns/pdns/test-dnsname_cc.cc:978,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-dnsname_cc.cc:980,1
    - Dst: DNSName::prependRawLabel
      Src: /src/pdns/pdns/test-dnsname_cc.cc:981,1
    - Dst: string
      Src: /src/pdns/pdns/test-dnsname_cc.cc:981,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsname_cc.cc:982,1
    - Dst: DNSName::wirelength
      Src: /src/pdns/pdns/test-dnsname_cc.cc:982,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 983
      start: 972
    functionDepth: 0
    functionLinenumber: 972
    functionLinenumberEnd: 983
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-dnsname_cc.cc
    functionUses: 0
    functionsReached:
    - DNSName::prependRawLabel
    - string
    - DNSName
    - BOOST_CHECK_EQUAL
    - DNSName::wirelength
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_wirelength)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsname_cc.cc:987,1
    - Dst: DNSName::getRawLabel
      Src: /src/pdns/pdns/test-dnsname_cc.cc:987,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsname_cc.cc:988,1
    - Dst: DNSName::getRawLabel
      Src: /src/pdns/pdns/test-dnsname_cc.cc:988,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsname_cc.cc:989,1
    - Dst: DNSName::getRawLabel
      Src: /src/pdns/pdns/test-dnsname_cc.cc:989,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsname_cc.cc:990,1
    - Dst: DNSName::getRawLabel
      Src: /src/pdns/pdns/test-dnsname_cc.cc:990,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-dnsname_cc.cc:991,1
    - Dst: DNSName::getRawLabel
      Src: /src/pdns/pdns/test-dnsname_cc.cc:991,1
    - Dst: DNSName::countLabels
      Src: /src/pdns/pdns/test-dnsname_cc.cc:991,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 992
      start: 985
    functionDepth: 0
    functionLinenumber: 985
    functionLinenumberEnd: 992
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-dnsname_cc.cc
    functionUses: 0
    functionsReached:
    - DNSName::getRawLabel
    - DNSName::countLabels
    - BOOST_CHECK_THROW
    - BOOST_CHECK_EQUAL
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_getrawlabel)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSName::getRawLabelsVisitor
      Src: /src/pdns/pdns/test-dnsname_cc.cc:996,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnsname_cc.cc:997,1
    - Dst: auto::empty
      Src: /src/pdns/pdns/test-dnsname_cc.cc:997,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsname_cc.cc:998,1
    - Dst: auto::front
      Src: /src/pdns/pdns/test-dnsname_cc.cc:998,1
    - Dst: DNSName::getRawLabels
      Src: /src/pdns/pdns/test-dnsname_cc.cc:998,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsname_cc.cc:999,1
    - Dst: auto::back
      Src: /src/pdns/pdns/test-dnsname_cc.cc:999,1
    - Dst: DNSName::getRawLabels
      Src: /src/pdns/pdns/test-dnsname_cc.cc:999,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsname_cc.cc:1001,1
    - Dst: auto::back
      Src: /src/pdns/pdns/test-dnsname_cc.cc:1001,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnsname_cc.cc:1002,1
    - Dst: auto::pop_back
      Src: /src/pdns/pdns/test-dnsname_cc.cc:1002,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsname_cc.cc:1003,1
    - Dst: auto::back
      Src: /src/pdns/pdns/test-dnsname_cc.cc:1003,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnsname_cc.cc:1004,1
    - Dst: auto::pop_back
      Src: /src/pdns/pdns/test-dnsname_cc.cc:1004,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsname_cc.cc:1005,1
    - Dst: auto::back
      Src: /src/pdns/pdns/test-dnsname_cc.cc:1005,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnsname_cc.cc:1006,1
    - Dst: auto::pop_back
      Src: /src/pdns/pdns/test-dnsname_cc.cc:1006,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsname_cc.cc:1007,1
    - Dst: auto::back
      Src: /src/pdns/pdns/test-dnsname_cc.cc:1007,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnsname_cc.cc:1008,1
    - Dst: auto::pop_back
      Src: /src/pdns/pdns/test-dnsname_cc.cc:1008,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnsname_cc.cc:1009,1
    - Dst: auto::empty
      Src: /src/pdns/pdns/test-dnsname_cc.cc:1009,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnsname_cc.cc:1010,1
    - Dst: auto::pop_back
      Src: /src/pdns/pdns/test-dnsname_cc.cc:1010,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-dnsname_cc.cc:1011,1
    - Dst: auto::front
      Src: /src/pdns/pdns/test-dnsname_cc.cc:1011,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-dnsname_cc.cc:1012,1
    - Dst: auto::back
      Src: /src/pdns/pdns/test-dnsname_cc.cc:1012,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1013
      start: 994
    functionDepth: 0
    functionLinenumber: 994
    functionLinenumberEnd: 1013
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-dnsname_cc.cc
    functionUses: 0
    functionsReached:
    - auto::pop_back
    - auto::back
    - BOOST_CHECK_EQUAL
    - auto::front
    - DNSName::getRawLabels
    - BOOST_CHECK_THROW
    - DNSName::getRawLabelsVisitor
    - BOOST_CHECK
    - auto::empty
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_getrawlabels_visitor)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSName::getLastLabel
      Src: /src/pdns/pdns/test-dnsname_cc.cc:1017,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsname_cc.cc:1020,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-dnsname_cc.cc:1020,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsname_cc.cc:1023,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-dnsname_cc.cc:1023,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1024
      start: 1015
    functionDepth: 0
    functionLinenumber: 1015
    functionLinenumberEnd: 1024
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-dnsname_cc.cc
    functionUses: 0
    functionsReached:
    - DNSName::getLastLabel
    - DNSName
    - BOOST_CHECK_EQUAL
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_getlastlabel)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsname_cc.cc:1030,1
    - Dst: DNSName::getCommonLabels
      Src: /src/pdns/pdns/test-dnsname_cc.cc:1030,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsname_cc.cc:1031,1
    - Dst: DNSName::getCommonLabels
      Src: /src/pdns/pdns/test-dnsname_cc.cc:1031,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsname_cc.cc:1033,1
    - Dst: DNSName::getCommonLabels
      Src: /src/pdns/pdns/test-dnsname_cc.cc:1033,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-dnsname_cc.cc:1033,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsname_cc.cc:1034,1
    - Dst: DNSName::getCommonLabels
      Src: /src/pdns/pdns/test-dnsname_cc.cc:1034,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-dnsname_cc.cc:1034,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsname_cc.cc:1037,1
    - Dst: DNSName::getCommonLabels
      Src: /src/pdns/pdns/test-dnsname_cc.cc:1037,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsname_cc.cc:1038,1
    - Dst: DNSName::getCommonLabels
      Src: /src/pdns/pdns/test-dnsname_cc.cc:1038,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsname_cc.cc:1039,1
    - Dst: DNSName::getCommonLabels
      Src: /src/pdns/pdns/test-dnsname_cc.cc:1039,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsname_cc.cc:1040,1
    - Dst: DNSName::getCommonLabels
      Src: /src/pdns/pdns/test-dnsname_cc.cc:1040,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsname_cc.cc:1043,1
    - Dst: DNSName::getCommonLabels
      Src: /src/pdns/pdns/test-dnsname_cc.cc:1043,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsname_cc.cc:1044,1
    - Dst: DNSName::getCommonLabels
      Src: /src/pdns/pdns/test-dnsname_cc.cc:1044,1
    - Dst: DNSName::DNSName
      Src: /src/pdns/pdns/test-dnsname_cc.cc:1046,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsname_cc.cc:1047,1
    - Dst: DNSName::getCommonLabels
      Src: /src/pdns/pdns/test-dnsname_cc.cc:1047,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-dnsname_cc.cc:1047,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsname_cc.cc:1048,1
    - Dst: DNSName::getCommonLabels
      Src: /src/pdns/pdns/test-dnsname_cc.cc:1048,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-dnsname_cc.cc:1048,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1049
      start: 1026
    functionDepth: 0
    functionLinenumber: 1026
    functionLinenumberEnd: 1049
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-dnsname_cc.cc
    functionUses: 0
    functionsReached:
    - DNSName::DNSName
    - DNSName::getCommonLabels
    - DNSName
    - BOOST_CHECK_EQUAL
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_getcommonlabels)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/test-dnsname_cc.cc:1058,1
    - Dst: PacketBuffer::data
      Src: /src/pdns/pdns/test-dnsname_cc.cc:1058,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/test-dnsname_cc.cc:1058,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnsname_cc.cc:1059,1
    - Dst: DNSName::matchesUncompressedName
      Src: /src/pdns/pdns/test-dnsname_cc.cc:1059,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnsname_cc.cc:1062,1
    - Dst: DNSName::matchesUncompressedName
      Src: /src/pdns/pdns/test-dnsname_cc.cc:1062,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnsname_cc.cc:1065,1
    - Dst: DNSName::matchesUncompressedName
      Src: /src/pdns/pdns/test-dnsname_cc.cc:1065,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnsname_cc.cc:1069,1
    - Dst: DNSName::matchesUncompressedName
      Src: /src/pdns/pdns/test-dnsname_cc.cc:1069,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/test-dnsname_cc.cc:1075,1
    - Dst: PacketBuffer::data
      Src: /src/pdns/pdns/test-dnsname_cc.cc:1075,1
    - Dst: DNSName::wirelength
      Src: /src/pdns/pdns/test-dnsname_cc.cc:1075,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnsname_cc.cc:1076,1
    - Dst: DNSName::matchesUncompressedName
      Src: /src/pdns/pdns/test-dnsname_cc.cc:1076,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1078
      start: 1051
    functionDepth: 0
    functionLinenumber: 1051
    functionLinenumberEnd: 1078
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-dnsname_cc.cc
    functionUses: 0
    functionsReached:
    - PacketBuffer::data
    - DNSName::matchesUncompressedName
    - PacketBuffer::size
    - reinterpret_cast<const char*>
    - BOOST_CHECK
    - DNSName::wirelength
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_raw_data_comparison)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnsname_cc.cc:1089,1
    - Dst: ZoneName::hasVariant
      Src: /src/pdns/pdns/test-dnsname_cc.cc:1089,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnsname_cc.cc:1090,1
    - Dst: isRoot
      Src: /src/pdns/pdns/test-dnsname_cc.cc:1090,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnsname_cc.cc:1092,1
    - Dst: ZoneName::hasVariant
      Src: /src/pdns/pdns/test-dnsname_cc.cc:1092,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsname_cc.cc:1093,1
    - Dst: toString
      Src: /src/pdns/pdns/test-dnsname_cc.cc:1093,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsname_cc.cc:1094,1
    - Dst: ZoneName::getVariant
      Src: /src/pdns/pdns/test-dnsname_cc.cc:1094,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnsname_cc.cc:1096,1
    - Dst: ZoneName::hasVariant
      Src: /src/pdns/pdns/test-dnsname_cc.cc:1096,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnsname_cc.cc:1097,1
    - Dst: ZoneName::hasVariant
      Src: /src/pdns/pdns/test-dnsname_cc.cc:1097,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnsname_cc.cc:1099,1
    - Dst: ZoneName::hasVariant
      Src: /src/pdns/pdns/test-dnsname_cc.cc:1099,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsname_cc.cc:1100,1
    - Dst: toString
      Src: /src/pdns/pdns/test-dnsname_cc.cc:1100,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsname_cc.cc:1101,1
    - Dst: ZoneName::getVariant
      Src: /src/pdns/pdns/test-dnsname_cc.cc:1101,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnsname_cc.cc:1103,1
    - Dst: ZoneName::hasVariant
      Src: /src/pdns/pdns/test-dnsname_cc.cc:1103,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsname_cc.cc:1104,1
    - Dst: ZoneName::getVariant
      Src: /src/pdns/pdns/test-dnsname_cc.cc:1104,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1107
      start: 1081
    functionDepth: 0
    functionLinenumber: 1081
    functionLinenumberEnd: 1107
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-dnsname_cc.cc
    functionUses: 0
    functionsReached:
    - toString
    - ZoneName::hasVariant
    - BOOST_CHECK_EQUAL
    - isRoot
    - ZoneName::getVariant
    - BOOST_CHECK
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_variantnames)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/pdns/pdns/nsecrecords.cc:32,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' pw_'
    argTypes:
    - DNSPacketWriter
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 33
      start: 30
    functionDepth: 0
    functionLinenumber: 30
    functionLinenumberEnd: 33
    functionName: NSECBitmapGenerator::NSECBitmapGenerator
    functionSourceFile: /src/pdns/pdns/nsecrecords.cc
    functionUses: 0
    functionsReached:
    - memset
    linkageType: ''
    returnType: void
    signature: void NSECBitmapGenerator(DNSPacketWriter& pw_)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/nsecrecords.cc:38,1
    - Dst: static_cast<unsigned char>
      Src: /src/pdns/pdns/nsecrecords.cc:42,1
    - Dst: static_cast<unsigned char>
      Src: /src/pdns/pdns/nsecrecords.cc:43,1
    - Dst: assign
      Src: /src/pdns/pdns/nsecrecords.cc:44,1
    - Dst: xfrBlob
      Src: /src/pdns/pdns/nsecrecords.cc:45,1
    - Dst: memset
      Src: /src/pdns/pdns/nsecrecords.cc:47,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 1
    argNames:
    - type
    argTypes:
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 35
    functionDepth: 1
    functionLinenumber: 35
    functionLinenumberEnd: 52
    functionName: NSECBitmapGenerator::set
    functionSourceFile: /src/pdns/pdns/nsecrecords.cc
    functionUses: 0
    functionsReached:
    - assign
    - memset
    - xfrBlob
    - static_cast<unsigned char>
    - static_cast<int>
    linkageType: ''
    returnType: void
    signature: void set(uint16_t type)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<unsigned char>
      Src: /src/pdns/pdns/nsecrecords.cc:56,1
    - Dst: static_cast<unsigned char>
      Src: /src/pdns/pdns/nsecrecords.cc:57,1
    - Dst: assign
      Src: /src/pdns/pdns/nsecrecords.cc:59,1
    - Dst: xfrBlob
      Src: /src/pdns/pdns/nsecrecords.cc:60,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 54
    functionDepth: 1
    functionLinenumber: 54
    functionLinenumberEnd: 62
    functionName: NSECBitmapGenerator::finish
    functionSourceFile: /src/pdns/pdns/nsecrecords.cc
    functionUses: 0
    functionsReached:
    - assign
    - xfrBlob
    - static_cast<unsigned char>
    linkageType: ''
    returnType: void
    signature: void finish()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: NSECBitmap::count
      Src: /src/pdns/pdns/nsecrecords.cc:80,1
    - Dst: test
      Src: /src/pdns/pdns/nsecrecords.cc:82,1
    - Dst: NSECBitmapGenerator::set
      Src: /src/pdns/pdns/nsecrecords.cc:86,1
    - Dst: NSECBitmapGenerator::set
      Src: /src/pdns/pdns/nsecrecords.cc:91,1
    - Dst: NSECBitmapGenerator::finish
      Src: /src/pdns/pdns/nsecrecords.cc:95,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 1
    argNames:
    - ' pw'
    argTypes:
    - DNSPacketWriter
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 75
    functionDepth: 0
    functionLinenumber: 75
    functionLinenumberEnd: 96
    functionName: NSECBitmap::toPacket
    functionSourceFile: /src/pdns/pdns/nsecrecords.cc
    functionUses: 0
    functionsReached:
    - NSECBitmapGenerator::set
    - NSECBitmap::count
    - NSECBitmapGenerator::finish
    - test
    linkageType: ''
    returnType: void
    signature: void NSECBitmap::toPacket(DNSPacketWriter& pw) const
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: xfrBlob
      Src: /src/pdns/pdns/nsecrecords.cc:101,1
    - Dst: string::empty
      Src: /src/pdns/pdns/nsecrecords.cc:104,1
    - Dst: string::size
      Src: /src/pdns/pdns/nsecrecords.cc:108,1
    - Dst: MOADNSException
      Src: /src/pdns/pdns/nsecrecords.cc:109,1
    - Dst: string::size
      Src: /src/pdns/pdns/nsecrecords.cc:112,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/nsecrecords.cc:113,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/nsecrecords.cc:114,1
    - Dst: MOADNSException
      Src: /src/pdns/pdns/nsecrecords.cc:122,1
    - Dst: string::size
      Src: /src/pdns/pdns/nsecrecords.cc:125,1
    - Dst: MOADNSException
      Src: /src/pdns/pdns/nsecrecords.cc:126,1
    - Dst: NSECBitmap::set
      Src: /src/pdns/pdns/nsecrecords.cc:133,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 26
    argCount: 1
    argNames:
    - ' pr'
    argTypes:
    - PacketReader
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 138
      start: 98
    functionDepth: 0
    functionLinenumber: 98
    functionLinenumberEnd: 138
    functionName: NSECBitmap::fromPacket
    functionSourceFile: /src/pdns/pdns/nsecrecords.cc
    functionUses: 0
    functionsReached:
    - string::size
    - string::empty
    - static_cast<uint8_t>
    - NSECBitmap::set
    - MOADNSException
    - xfrBlob
    linkageType: ''
    returnType: void
    signature: void NSECBitmap::fromPacket(PacketReader& pr)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: NSECBitmap::count
      Src: /src/pdns/pdns/nsecrecords.cc:146,1
    - Dst: test
      Src: /src/pdns/pdns/nsecrecords.cc:148,1
    - Dst: DNSRecordContent::NumberToType
      Src: /src/pdns/pdns/nsecrecords.cc:154,1
    - Dst: DNSRecordContent::NumberToType
      Src: /src/pdns/pdns/nsecrecords.cc:160,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 165
      start: 140
    functionDepth: 0
    functionLinenumber: 140
    functionLinenumberEnd: 165
    functionName: NSECBitmap::getZoneRepresentation
    functionSourceFile: /src/pdns/pdns/nsecrecords.cc
    functionUses: 0
    functionsReached:
    - NSECBitmap::count
    - DNSRecordContent::NumberToType
    - test
    linkageType: ''
    returnType: string
    signature: string NSECBitmap::getZoneRepresentation() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: regist
      Src: /src/pdns/pdns/nsecrecords.cc:169,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 170
      start: 167
    functionDepth: 0
    functionLinenumber: 167
    functionLinenumberEnd: 170
    functionName: NSECRecordContent::report
    functionSourceFile: /src/pdns/pdns/nsecrecords.cc
    functionUses: 1
    functionsReached:
    - regist
    linkageType: ''
    returnType: void
    signature: void NSECRecordContent::report(const ReportIsOnlyCallableByReportAllTypes&
      /* unused */)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<NSECRecordContent>
      Src: /src/pdns/pdns/nsecrecords.cc:174,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' content'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 175
      start: 172
    functionDepth: 0
    functionLinenumber: 172
    functionLinenumberEnd: 175
    functionName: NSECRecordContent::make
    functionSourceFile: /src/pdns/pdns/nsecrecords.cc
    functionUses: 0
    functionsReached:
    - std::make_shared<NSECRecordContent>
    linkageType: ''
    returnType: std::shared_ptr<DNSRecordContent>
    signature: std::shared_ptr<DNSRecordContent> NSECRecordContent::make(const string&
      content)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RecordTextReader::xfrName
      Src: /src/pdns/pdns/nsecrecords.cc:180,1
    - Dst: RecordTextReader::eof
      Src: /src/pdns/pdns/nsecrecords.cc:182,1
    - Dst: RecordTextReader::xfrType
      Src: /src/pdns/pdns/nsecrecords.cc:184,1
    - Dst: NSECRecordContent::set
      Src: /src/pdns/pdns/nsecrecords.cc:185,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - ' content'
    - ' zone'
    argTypes:
    - string
    - ZoneName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 187
      start: 177
    functionDepth: 0
    functionLinenumber: 177
    functionLinenumberEnd: 187
    functionName: NSECRecordContent::NSECRecordContent
    functionSourceFile: /src/pdns/pdns/nsecrecords.cc
    functionUses: 1
    functionsReached:
    - NSECRecordContent::set
    - RecordTextReader::xfrType
    - RecordTextReader::eof
    - RecordTextReader::xfrName
    linkageType: ''
    returnType: void
    signature: void NSECRecordContent::NSECRecordContent(const string& content, const
      ZoneName& zone)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: xfrName
      Src: /src/pdns/pdns/nsecrecords.cc:191,1
    - Dst: NSECRecordContent::toPacket
      Src: /src/pdns/pdns/nsecrecords.cc:192,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ' pw'
    argTypes:
    - DNSPacketWriter
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 193
      start: 189
    functionDepth: 0
    functionLinenumber: 189
    functionLinenumberEnd: 193
    functionName: NSECRecordContent::toPacket
    functionSourceFile: /src/pdns/pdns/nsecrecords.cc
    functionUses: 1
    functionsReached:
    - xfrName
    - NSECRecordContent::toPacket
    linkageType: ''
    returnType: void
    signature: void NSECRecordContent::toPacket(DNSPacketWriter& pw) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<NSECRecordContent>
      Src: /src/pdns/pdns/nsecrecords.cc:197,1
    - Dst: xfrName
      Src: /src/pdns/pdns/nsecrecords.cc:198,1
    - Dst: auto::d_bitmap::fromPacket
      Src: /src/pdns/pdns/nsecrecords.cc:200,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - ' pr'
    argTypes:
    - PacketReader
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 203
      start: 195
    functionDepth: 0
    functionLinenumber: 195
    functionLinenumberEnd: 203
    functionName: NSECRecordContent::make
    functionSourceFile: /src/pdns/pdns/nsecrecords.cc
    functionUses: 0
    functionsReached:
    - auto::d_bitmap::fromPacket
    - std::make_shared<NSECRecordContent>
    - xfrName
    linkageType: ''
    returnType: std::shared_ptr<NSECRecordContent::DNSRecordContent>
    signature: std::shared_ptr<NSECRecordContent::DNSRecordContent> NSECRecordContent::make(const
      DNSRecord & /* dr */, PacketReader& pr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RecordTextWriter::xfrName
      Src: /src/pdns/pdns/nsecrecords.cc:209,1
    - Dst: NSECRecordContent::getZoneRepresentation
      Src: /src/pdns/pdns/nsecrecords.cc:211,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 212
      start: 205
    functionDepth: 0
    functionLinenumber: 205
    functionLinenumberEnd: 212
    functionName: NSECRecordContent::getZoneRepresentation
    functionSourceFile: /src/pdns/pdns/nsecrecords.cc
    functionUses: 1
    functionsReached:
    - NSECRecordContent::getZoneRepresentation
    - RecordTextWriter::xfrName
    linkageType: ''
    returnType: string
    signature: string NSECRecordContent::getZoneRepresentation(bool /* noDot */) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: regist
      Src: /src/pdns/pdns/nsecrecords.cc:218,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 219
      start: 216
    functionDepth: 0
    functionLinenumber: 216
    functionLinenumberEnd: 219
    functionName: NSEC3RecordContent::report
    functionSourceFile: /src/pdns/pdns/nsecrecords.cc
    functionUses: 1
    functionsReached:
    - regist
    linkageType: ''
    returnType: void
    signature: void NSEC3RecordContent::report(const ReportIsOnlyCallableByReportAllTypes&
      /* unused */)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<NSEC3RecordContent>
      Src: /src/pdns/pdns/nsecrecords.cc:223,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' content'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 224
      start: 221
    functionDepth: 0
    functionLinenumber: 221
    functionLinenumberEnd: 224
    functionName: NSEC3RecordContent::make
    functionSourceFile: /src/pdns/pdns/nsecrecords.cc
    functionUses: 0
    functionsReached:
    - std::make_shared<NSEC3RecordContent>
    linkageType: ''
    returnType: std::shared_ptr<DNSRecordContent>
    signature: std::shared_ptr<DNSRecordContent> NSEC3RecordContent::make(const string&
      content)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RecordTextReader::xfr8BitInt
      Src: /src/pdns/pdns/nsecrecords.cc:229,1
    - Dst: RecordTextReader::xfr8BitInt
      Src: /src/pdns/pdns/nsecrecords.cc:230,1
    - Dst: RecordTextReader::xfr16BitInt
      Src: /src/pdns/pdns/nsecrecords.cc:231,1
    - Dst: RecordTextReader::xfrHexBlob
      Src: /src/pdns/pdns/nsecrecords.cc:233,1
    - Dst: RecordTextReader::xfrBase32HexBlob
      Src: /src/pdns/pdns/nsecrecords.cc:234,1
    - Dst: RecordTextReader::eof
      Src: /src/pdns/pdns/nsecrecords.cc:236,1
    - Dst: RecordTextReader::xfrType
      Src: /src/pdns/pdns/nsecrecords.cc:238,1
    - Dst: NSEC3RecordContent::set
      Src: /src/pdns/pdns/nsecrecords.cc:239,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - ' content'
    - ' zone'
    argTypes:
    - string
    - ZoneName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 241
      start: 226
    functionDepth: 0
    functionLinenumber: 226
    functionLinenumberEnd: 241
    functionName: NSEC3RecordContent::NSEC3RecordContent
    functionSourceFile: /src/pdns/pdns/nsecrecords.cc
    functionUses: 1
    functionsReached:
    - RecordTextReader::xfrType
    - RecordTextReader::xfr16BitInt
    - NSEC3RecordContent::set
    - RecordTextReader::xfrHexBlob
    - RecordTextReader::xfrBase32HexBlob
    - RecordTextReader::xfr8BitInt
    - RecordTextReader::eof
    linkageType: ''
    returnType: void
    signature: void NSEC3RecordContent::NSEC3RecordContent(const string& content,
      const ZoneName& zone)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: xfr8BitInt
      Src: /src/pdns/pdns/nsecrecords.cc:245,1
    - Dst: xfr8BitInt
      Src: /src/pdns/pdns/nsecrecords.cc:246,1
    - Dst: xfr16BitInt
      Src: /src/pdns/pdns/nsecrecords.cc:247,1
    - Dst: xfr8BitInt
      Src: /src/pdns/pdns/nsecrecords.cc:248,1
    - Dst: length
      Src: /src/pdns/pdns/nsecrecords.cc:248,1
    - Dst: xfrBlob
      Src: /src/pdns/pdns/nsecrecords.cc:249,1
    - Dst: xfr8BitInt
      Src: /src/pdns/pdns/nsecrecords.cc:251,1
    - Dst: length
      Src: /src/pdns/pdns/nsecrecords.cc:251,1
    - Dst: xfrBlob
      Src: /src/pdns/pdns/nsecrecords.cc:252,1
    - Dst: NSEC3RecordContent::toPacket
      Src: /src/pdns/pdns/nsecrecords.cc:254,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 1
    argNames:
    - ' pw'
    argTypes:
    - DNSPacketWriter
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 255
      start: 243
    functionDepth: 0
    functionLinenumber: 243
    functionLinenumberEnd: 255
    functionName: NSEC3RecordContent::toPacket
    functionSourceFile: /src/pdns/pdns/nsecrecords.cc
    functionUses: 1
    functionsReached:
    - length
    - xfr8BitInt
    - xfr16BitInt
    - xfrBlob
    - NSEC3RecordContent::toPacket
    linkageType: ''
    returnType: void
    signature: void NSEC3RecordContent::toPacket(DNSPacketWriter& pw) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<NSEC3RecordContent>
      Src: /src/pdns/pdns/nsecrecords.cc:259,1
    - Dst: xfr8BitInt
      Src: /src/pdns/pdns/nsecrecords.cc:260,1
    - Dst: xfr8BitInt
      Src: /src/pdns/pdns/nsecrecords.cc:261,1
    - Dst: xfr16BitInt
      Src: /src/pdns/pdns/nsecrecords.cc:262,1
    - Dst: xfr8BitInt
      Src: /src/pdns/pdns/nsecrecords.cc:264,1
    - Dst: xfrBlob
      Src: /src/pdns/pdns/nsecrecords.cc:265,1
    - Dst: xfr8BitInt
      Src: /src/pdns/pdns/nsecrecords.cc:267,1
    - Dst: xfrBlob
      Src: /src/pdns/pdns/nsecrecords.cc:268,1
    - Dst: auto::d_bitmap::fromPacket
      Src: /src/pdns/pdns/nsecrecords.cc:270,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 1
    argNames:
    - ' pr'
    argTypes:
    - PacketReader
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 272
      start: 257
    functionDepth: 0
    functionLinenumber: 257
    functionLinenumberEnd: 272
    functionName: NSEC3RecordContent::make
    functionSourceFile: /src/pdns/pdns/nsecrecords.cc
    functionUses: 0
    functionsReached:
    - auto::d_bitmap::fromPacket
    - xfr8BitInt
    - xfr16BitInt
    - xfrBlob
    - std::make_shared<NSEC3RecordContent>
    linkageType: ''
    returnType: std::shared_ptr<NSEC3RecordContent::DNSRecordContent>
    signature: std::shared_ptr<NSEC3RecordContent::DNSRecordContent> NSEC3RecordContent::make(const
      DNSRecord& /* dr */, PacketReader& pr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RecordTextWriter::xfr8BitInt
      Src: /src/pdns/pdns/nsecrecords.cc:278,1
    - Dst: RecordTextWriter::xfr8BitInt
      Src: /src/pdns/pdns/nsecrecords.cc:279,1
    - Dst: RecordTextWriter::xfr16BitInt
      Src: /src/pdns/pdns/nsecrecords.cc:280,1
    - Dst: RecordTextWriter::xfrHexBlob
      Src: /src/pdns/pdns/nsecrecords.cc:282,1
    - Dst: RecordTextWriter::xfrBase32HexBlob
      Src: /src/pdns/pdns/nsecrecords.cc:283,1
    - Dst: NSEC3RecordContent::getZoneRepresentation
      Src: /src/pdns/pdns/nsecrecords.cc:285,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 286
      start: 274
    functionDepth: 0
    functionLinenumber: 274
    functionLinenumberEnd: 286
    functionName: NSEC3RecordContent::getZoneRepresentation
    functionSourceFile: /src/pdns/pdns/nsecrecords.cc
    functionUses: 1
    functionsReached:
    - RecordTextWriter::xfrHexBlob
    - NSEC3RecordContent::getZoneRepresentation
    - RecordTextWriter::xfrBase32HexBlob
    - RecordTextWriter::xfr8BitInt
    - RecordTextWriter::xfr16BitInt
    linkageType: ''
    returnType: string
    signature: string NSEC3RecordContent::getZoneRepresentation(bool /* noDot */)
      const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: regist
      Src: /src/pdns/pdns/nsecrecords.cc:291,1
    - Dst: regist
      Src: /src/pdns/pdns/nsecrecords.cc:292,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 293
      start: 289
    functionDepth: 0
    functionLinenumber: 289
    functionLinenumberEnd: 293
    functionName: NSEC3PARAMRecordContent::report
    functionSourceFile: /src/pdns/pdns/nsecrecords.cc
    functionUses: 1
    functionsReached:
    - regist
    linkageType: ''
    returnType: void
    signature: void NSEC3PARAMRecordContent::report(const ReportIsOnlyCallableByReportAllTypes&
      /* unused */)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<NSEC3PARAMRecordContent>
      Src: /src/pdns/pdns/nsecrecords.cc:297,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' content'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 298
      start: 295
    functionDepth: 0
    functionLinenumber: 295
    functionLinenumberEnd: 298
    functionName: NSEC3PARAMRecordContent::make
    functionSourceFile: /src/pdns/pdns/nsecrecords.cc
    functionUses: 0
    functionsReached:
    - std::make_shared<NSEC3PARAMRecordContent>
    linkageType: ''
    returnType: std::shared_ptr<DNSRecordContent>
    signature: std::shared_ptr<DNSRecordContent> NSEC3PARAMRecordContent::make(const
      string& content)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RecordTextReader::xfr8BitInt
      Src: /src/pdns/pdns/nsecrecords.cc:303,1
    - Dst: RecordTextReader::xfr8BitInt
      Src: /src/pdns/pdns/nsecrecords.cc:304,1
    - Dst: RecordTextReader::xfr16BitInt
      Src: /src/pdns/pdns/nsecrecords.cc:305,1
    - Dst: RecordTextReader::xfrHexBlob
      Src: /src/pdns/pdns/nsecrecords.cc:306,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - ' content'
    - ' zone'
    argTypes:
    - string
    - ZoneName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 307
      start: 300
    functionDepth: 0
    functionLinenumber: 300
    functionLinenumberEnd: 307
    functionName: NSEC3PARAMRecordContent::NSEC3PARAMRecordContent
    functionSourceFile: /src/pdns/pdns/nsecrecords.cc
    functionUses: 6
    functionsReached:
    - RecordTextReader::xfrHexBlob
    - RecordTextReader::xfr16BitInt
    - RecordTextReader::xfr8BitInt
    linkageType: ''
    returnType: void
    signature: void NSEC3PARAMRecordContent::NSEC3PARAMRecordContent(const string&
      content, const ZoneName& zone)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: xfr8BitInt
      Src: /src/pdns/pdns/nsecrecords.cc:311,1
    - Dst: xfr8BitInt
      Src: /src/pdns/pdns/nsecrecords.cc:312,1
    - Dst: xfr16BitInt
      Src: /src/pdns/pdns/nsecrecords.cc:313,1
    - Dst: xfr8BitInt
      Src: /src/pdns/pdns/nsecrecords.cc:314,1
    - Dst: length
      Src: /src/pdns/pdns/nsecrecords.cc:314,1
    - Dst: xfrBlob
      Src: /src/pdns/pdns/nsecrecords.cc:316,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - ' pw'
    argTypes:
    - DNSPacketWriter
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 317
      start: 309
    functionDepth: 0
    functionLinenumber: 309
    functionLinenumberEnd: 317
    functionName: NSEC3PARAMRecordContent::toPacket
    functionSourceFile: /src/pdns/pdns/nsecrecords.cc
    functionUses: 0
    functionsReached:
    - xfrBlob
    - xfr16BitInt
    - xfr8BitInt
    - length
    linkageType: ''
    returnType: void
    signature: void NSEC3PARAMRecordContent::toPacket(DNSPacketWriter& pw) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<NSEC3PARAMRecordContent>
      Src: /src/pdns/pdns/nsecrecords.cc:321,1
    - Dst: xfr8BitInt
      Src: /src/pdns/pdns/nsecrecords.cc:322,1
    - Dst: xfr8BitInt
      Src: /src/pdns/pdns/nsecrecords.cc:323,1
    - Dst: xfr16BitInt
      Src: /src/pdns/pdns/nsecrecords.cc:324,1
    - Dst: xfr8BitInt
      Src: /src/pdns/pdns/nsecrecords.cc:326,1
    - Dst: xfrHexBlob
      Src: /src/pdns/pdns/nsecrecords.cc:327,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - ' pr'
    argTypes:
    - PacketReader
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 329
      start: 319
    functionDepth: 0
    functionLinenumber: 319
    functionLinenumberEnd: 329
    functionName: NSEC3PARAMRecordContent::make
    functionSourceFile: /src/pdns/pdns/nsecrecords.cc
    functionUses: 0
    functionsReached:
    - xfr16BitInt
    - xfr8BitInt
    - xfrHexBlob
    - std::make_shared<NSEC3PARAMRecordContent>
    linkageType: ''
    returnType: std::shared_ptr<NSEC3PARAMRecordContent::DNSRecordContent>
    signature: std::shared_ptr<NSEC3PARAMRecordContent::DNSRecordContent> NSEC3PARAMRecordContent::make(const
      DNSRecord& /* dr */, PacketReader& pr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RecordTextWriter::xfr8BitInt
      Src: /src/pdns/pdns/nsecrecords.cc:335,1
    - Dst: RecordTextWriter::xfr8BitInt
      Src: /src/pdns/pdns/nsecrecords.cc:336,1
    - Dst: RecordTextWriter::xfr16BitInt
      Src: /src/pdns/pdns/nsecrecords.cc:337,1
    - Dst: RecordTextWriter::xfrHexBlob
      Src: /src/pdns/pdns/nsecrecords.cc:338,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 340
      start: 331
    functionDepth: 0
    functionLinenumber: 331
    functionLinenumberEnd: 340
    functionName: NSEC3PARAMRecordContent::getZoneRepresentation
    functionSourceFile: /src/pdns/pdns/nsecrecords.cc
    functionUses: 1
    functionsReached:
    - RecordTextWriter::xfrHexBlob
    - RecordTextWriter::xfr8BitInt
    - RecordTextWriter::xfr16BitInt
    linkageType: ''
    returnType: string
    signature: string NSEC3PARAMRecordContent::getZoneRepresentation(bool /* noDot
      */) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: regist
      Src: /src/pdns/pdns/nsecrecords.cc:348,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 349
      start: 346
    functionDepth: 0
    functionLinenumber: 346
    functionLinenumberEnd: 349
    functionName: CSYNCRecordContent::report
    functionSourceFile: /src/pdns/pdns/nsecrecords.cc
    functionUses: 1
    functionsReached:
    - regist
    linkageType: ''
    returnType: void
    signature: void CSYNCRecordContent::report(const ReportIsOnlyCallableByReportAllTypes&
      /* unused */)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<CSYNCRecordContent>
      Src: /src/pdns/pdns/nsecrecords.cc:353,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' content'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 354
      start: 351
    functionDepth: 0
    functionLinenumber: 351
    functionLinenumberEnd: 354
    functionName: CSYNCRecordContent::make
    functionSourceFile: /src/pdns/pdns/nsecrecords.cc
    functionUses: 0
    functionsReached:
    - std::make_shared<CSYNCRecordContent>
    linkageType: ''
    returnType: std::shared_ptr<DNSRecordContent>
    signature: std::shared_ptr<DNSRecordContent> CSYNCRecordContent::make(const string&
      content)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RecordTextReader::xfr32BitInt
      Src: /src/pdns/pdns/nsecrecords.cc:359,1
    - Dst: RecordTextReader::xfr16BitInt
      Src: /src/pdns/pdns/nsecrecords.cc:360,1
    - Dst: RecordTextReader::eof
      Src: /src/pdns/pdns/nsecrecords.cc:362,1
    - Dst: RecordTextReader::xfrType
      Src: /src/pdns/pdns/nsecrecords.cc:364,1
    - Dst: CSYNCRecordContent::set
      Src: /src/pdns/pdns/nsecrecords.cc:365,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - ' content'
    - ' zone'
    argTypes:
    - string
    - ZoneName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 367
      start: 356
    functionDepth: 0
    functionLinenumber: 356
    functionLinenumberEnd: 367
    functionName: CSYNCRecordContent::CSYNCRecordContent
    functionSourceFile: /src/pdns/pdns/nsecrecords.cc
    functionUses: 0
    functionsReached:
    - RecordTextReader::xfrType
    - RecordTextReader::xfr16BitInt
    - CSYNCRecordContent::set
    - RecordTextReader::eof
    - RecordTextReader::xfr32BitInt
    linkageType: ''
    returnType: void
    signature: void CSYNCRecordContent::CSYNCRecordContent(const string& content,
      const ZoneName& zone)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: xfr32BitInt
      Src: /src/pdns/pdns/nsecrecords.cc:371,1
    - Dst: xfr16BitInt
      Src: /src/pdns/pdns/nsecrecords.cc:372,1
    - Dst: CSYNCRecordContent::toPacket
      Src: /src/pdns/pdns/nsecrecords.cc:374,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - ' pw'
    argTypes:
    - DNSPacketWriter
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 375
      start: 369
    functionDepth: 0
    functionLinenumber: 369
    functionLinenumberEnd: 375
    functionName: CSYNCRecordContent::toPacket
    functionSourceFile: /src/pdns/pdns/nsecrecords.cc
    functionUses: 1
    functionsReached:
    - CSYNCRecordContent::toPacket
    - xfr16BitInt
    - xfr32BitInt
    linkageType: ''
    returnType: void
    signature: void CSYNCRecordContent::toPacket(DNSPacketWriter& pw) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<CSYNCRecordContent>
      Src: /src/pdns/pdns/nsecrecords.cc:379,1
    - Dst: xfr32BitInt
      Src: /src/pdns/pdns/nsecrecords.cc:380,1
    - Dst: xfr16BitInt
      Src: /src/pdns/pdns/nsecrecords.cc:381,1
    - Dst: auto::d_bitmap::fromPacket
      Src: /src/pdns/pdns/nsecrecords.cc:383,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - ' pr'
    argTypes:
    - PacketReader
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 385
      start: 377
    functionDepth: 0
    functionLinenumber: 377
    functionLinenumberEnd: 385
    functionName: CSYNCRecordContent::make
    functionSourceFile: /src/pdns/pdns/nsecrecords.cc
    functionUses: 0
    functionsReached:
    - std::make_shared<CSYNCRecordContent>
    - xfr16BitInt
    - xfr32BitInt
    - auto::d_bitmap::fromPacket
    linkageType: ''
    returnType: std::shared_ptr<CSYNCRecordContent::DNSRecordContent>
    signature: std::shared_ptr<CSYNCRecordContent::DNSRecordContent> CSYNCRecordContent::make(const
      DNSRecord& /* dr */, PacketReader& pr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RecordTextWriter::xfr32BitInt
      Src: /src/pdns/pdns/nsecrecords.cc:391,1
    - Dst: RecordTextWriter::xfr16BitInt
      Src: /src/pdns/pdns/nsecrecords.cc:392,1
    - Dst: CSYNCRecordContent::getZoneRepresentation
      Src: /src/pdns/pdns/nsecrecords.cc:394,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 395
      start: 387
    functionDepth: 0
    functionLinenumber: 387
    functionLinenumberEnd: 395
    functionName: CSYNCRecordContent::getZoneRepresentation
    functionSourceFile: /src/pdns/pdns/nsecrecords.cc
    functionUses: 1
    functionsReached:
    - RecordTextWriter::xfr32BitInt
    - CSYNCRecordContent::getZoneRepresentation
    - RecordTextWriter::xfr16BitInt
    linkageType: ''
    returnType: string
    signature: string CSYNCRecordContent::getZoneRepresentation(bool /* noDot */)
      const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: clock_gettime
      Src: /src/pdns/pdns/gettime.cc:34,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - tp
    - needRealTime
    argTypes:
    - struct timespec*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 35
      start: 32
    functionDepth: 0
    functionLinenumber: 32
    functionLinenumberEnd: 35
    functionName: gettime
    functionSourceFile: /src/pdns/pdns/gettime.cc
    functionUses: 1
    functionsReached:
    - clock_gettime
    linkageType: ''
    returnType: int
    signature: int gettime(struct timespec *tp, bool needRealTime)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: gettimeofday
      Src: /src/pdns/pdns/gettime.cc:45,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - tp
    argTypes:
    - struct timespec*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 41
    functionDepth: 0
    functionLinenumber: 41
    functionLinenumberEnd: 51
    functionName: gettime
    functionSourceFile: /src/pdns/pdns/gettime.cc
    functionUses: 1
    functionsReached:
    - gettimeofday
    linkageType: ''
    returnType: int
    signature: int gettime(struct timespec *tp, bool /* needRealTime */)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' what_arg'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 41
    functionDepth: 0
    functionLinenumber: 41
    functionLinenumberEnd: 42
    functionName: JsonException::JsonException
    functionSourceFile: /src/pdns/pdns/json.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void JsonException(const std::string& what_arg)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: string::length
      Src: /src/pdns/pdns/misc.hh:126,1
    - Dst: string::find_first_not_of
      Src: /src/pdns/pdns/misc.hh:131,1
    - Dst: string::find_first_of
      Src: /src/pdns/pdns/misc.hh:136,1
    - Dst: Container::push_back
      Src: /src/pdns/pdns/misc.hh:140,1
    - Dst: string::substr
      Src: /src/pdns/pdns/misc.hh:140,1
    - Dst: Container::push_back
      Src: /src/pdns/pdns/misc.hh:143,1
    - Dst: string::substr
      Src: /src/pdns/pdns/misc.hh:143,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 2
    argNames:
    - container
    - in
    argTypes:
    - Container
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 148
      start: 122
    functionDepth: 0
    functionLinenumber: 122
    functionLinenumberEnd: 148
    functionName: stringtok
    functionSourceFile: /src/pdns/pdns/misc.hh
    functionUses: 16
    functionsReached:
    - Container::push_back
    - string::length
    - string::substr
    - string::find_first_not_of
    - string::find_first_of
    linkageType: ''
    returnType: void
    signature: "void stringtok (Container &container, string const &in,\n           const
      char * const delimiters = \" \\t\\n\")"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<std::make_signed_t<T>>
      Src: /src/pdns/pdns/misc.hh:153,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - lhs
    - rhs
    argTypes:
    - T
    - T
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 154
      start: 150
    functionDepth: 0
    functionLinenumber: 150
    functionLinenumberEnd: 154
    functionName: rfc1982LessThan
    functionSourceFile: /src/pdns/pdns/misc.hh
    functionUses: 3
    functionsReached:
    - static_cast<std::make_signed_t<T>>
    linkageType: ''
    returnType: bool
    signature: bool rfc1982LessThan(T lhs, T rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<std::make_signed_t<T>>
      Src: /src/pdns/pdns/misc.hh:159,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - lhs
    - rhs
    argTypes:
    - T
    - T
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 160
      start: 156
    functionDepth: 0
    functionLinenumber: 156
    functionLinenumberEnd: 160
    functionName: rfc1982LessThanOrEqual
    functionSourceFile: /src/pdns/pdns/misc.hh
    functionUses: 1
    functionsReached:
    - static_cast<std::make_signed_t<T>>
    linkageType: ''
    returnType: bool
    signature: bool rfc1982LessThanOrEqual(T lhs, T rhs)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: string::length
      Src: /src/pdns/pdns/misc.hh:168,1
    - Dst: string::find_first_not_of
      Src: /src/pdns/pdns/misc.hh:173,1
    - Dst: string::find_first_of
      Src: /src/pdns/pdns/misc.hh:178,1
    - Dst: Container::emplace_back
      Src: /src/pdns/pdns/misc.hh:182,1
    - Dst: Container::emplace_back
      Src: /src/pdns/pdns/misc.hh:185,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 2
    argNames:
    - container
    - in
    argTypes:
    - Container
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 190
      start: 164
    functionDepth: 0
    functionLinenumber: 164
    functionLinenumberEnd: 190
    functionName: vstringtok
    functionSourceFile: /src/pdns/pdns/misc.hh
    functionUses: 0
    functionsReached:
    - Container::emplace_back
    - string::find_first_of
    - string::length
    - string::find_first_not_of
    linkageType: ''
    returnType: void
    signature: "void vstringtok (Container &container, string const &in,\n           const
      char * const delimiters = \" \\t\\n\")"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: writen2
      Src: /src/pdns/pdns/misc.hh:193,1
    - Dst: std::string::data
      Src: /src/pdns/pdns/misc.hh:193,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/misc.hh:193,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - fd
    - s
    argTypes:
    - int
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 193
      start: 193
    functionDepth: 0
    functionLinenumber: 193
    functionLinenumberEnd: 193
    functionName: writen2
    functionSourceFile: /src/pdns/pdns/misc.hh
    functionUses: 4
    functionsReached:
    - std::string::data
    - std::string::size
    - writen2
    linkageType: ''
    returnType: size_t
    signature: size_t writen2(int fd, const std::string &s)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::getMessageFromErrno
      Src: /src/pdns/pdns/misc.hh:206,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 207
      start: 204
    functionDepth: 0
    functionLinenumber: 204
    functionLinenumberEnd: 207
    functionName: stringerror
    functionSourceFile: /src/pdns/pdns/misc.hh
    functionUses: 32
    functionsReached:
    - pdns::getMessageFromErrno
    linkageType: ''
    returnType: string
    signature: string stringerror(int err = errno)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: clock_gettime
      Src: /src/pdns/pdns/misc.hh:219,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 220
      start: 217
    functionDepth: 0
    functionLinenumber: 217
    functionLinenumberEnd: 220
    functionName: CPUTime::start
    functionSourceFile: /src/pdns/pdns/misc.hh
    functionUses: 0
    functionsReached:
    - clock_gettime
    linkageType: ''
    returnType: void
    signature: void start()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: clock_gettime
      Src: /src/pdns/pdns/misc.hh:224,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 226
      start: 221
    functionDepth: 0
    functionLinenumber: 221
    functionLinenumberEnd: 226
    functionName: CPUTime::ndiff
    functionSourceFile: /src/pdns/pdns/misc.hh
    functionUses: 0
    functionsReached:
    - clock_gettime
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t ndiff()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 238
      start: 238
    functionDepth: 0
    functionLinenumber: 238
    functionLinenumberEnd: 238
    functionName: DTime::DTime
    functionSourceFile: /src/pdns/pdns/misc.hh
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void DTime()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 1
    argNames:
    - dt
    argTypes:
    - DTime
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 239
      start: 239
    functionDepth: 0
    functionLinenumber: 239
    functionLinenumberEnd: 239
    functionName: DTime::DTime
    functionSourceFile: /src/pdns/pdns/misc.hh
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void DTime(const DTime &dt)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 1
    argNames:
    - dt
    argTypes:
    - DTime
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 240
      start: 240
    functionDepth: 0
    functionLinenumber: 240
    functionLinenumberEnd: 240
    functionName: '& operator=(const DTime &dt)'
    functionSourceFile: /src/pdns/pdns/misc.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: DTime
    signature: DTime & operator=(const DTime &dt)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DTime::udiff
      Src: /src/pdns/pdns/misc.hh:247,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 248
      start: 245
    functionDepth: 0
    functionLinenumber: 245
    functionLinenumberEnd: 248
    functionName: DTime::udiffNoReset
    functionSourceFile: /src/pdns/pdns/misc.hh
    functionUses: 2
    functionsReached:
    - DTime::udiff
    linkageType: ''
    returnType: int
    signature: int udiffNoReset()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' tv'
    argTypes:
    - struct timeval
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 252
      start: 249
    functionDepth: 0
    functionLinenumber: 249
    functionLinenumberEnd: 252
    functionName: DTime::setTimeval
    functionSourceFile: /src/pdns/pdns/misc.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setTimeval(const struct timeval& tv)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 256
      start: 253
    functionDepth: 0
    functionLinenumber: 253
    functionLinenumberEnd: 256
    functionName: DTime::getTimeval
    functionSourceFile: /src/pdns/pdns/misc.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct timeval
    signature: struct timeval getTimeval() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 264
      start: 261
    functionDepth: 0
    functionLinenumber: 261
    functionLinenumberEnd: 264
    functionName: DTime::time
    functionSourceFile: /src/pdns/pdns/misc.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: time_t
    signature: time_t DTime::time() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: gettimeofday
      Src: /src/pdns/pdns/misc.hh:268,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 269
      start: 266
    functionDepth: 0
    functionLinenumber: 266
    functionLinenumberEnd: 269
    functionName: DTime::set
    functionSourceFile: /src/pdns/pdns/misc.hh
    functionUses: 3
    functionsReached:
    - gettimeofday
    linkageType: ''
    returnType: void
    signature: void DTime::set()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: gettimeofday
      Src: /src/pdns/pdns/misc.hh:274,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - reset
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 283
      start: 271
    functionDepth: 0
    functionLinenumber: 271
    functionLinenumberEnd: 283
    functionName: DTime::udiff
    functionSourceFile: /src/pdns/pdns/misc.hh
    functionUses: 3
    functionsReached:
    - gettimeofday
    linkageType: ''
    returnType: int
    signature: int DTime::udiff(bool reset)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: length
      Src: /src/pdns/pdns/misc.hh:287,1
    - Dst: dns_tolower
      Src: /src/pdns/pdns/misc.hh:290,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - ' str'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 295
      start: 285
    functionDepth: 0
    functionLinenumber: 285
    functionLinenumberEnd: 295
    functionName: toLowerInPlace
    functionSourceFile: /src/pdns/pdns/misc.hh
    functionUses: 0
    functionsReached:
    - length
    - dns_tolower
    linkageType: ''
    returnType: void
    signature: void toLowerInPlace(string& str)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: toLowerInPlace
      Src: /src/pdns/pdns/misc.hh:301,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - upper
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 304
      start: 297
    functionDepth: 0
    functionLinenumber: 297
    functionLinenumberEnd: 304
    functionName: toLower
    functionSourceFile: /src/pdns/pdns/misc.hh
    functionUses: 3
    functionsReached:
    - toLowerInPlace
    linkageType: ''
    returnType: string
    signature: string toLower(const string &upper)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: string::empty
      Src: /src/pdns/pdns/misc.hh:309,1
    - Dst: string::length
      Src: /src/pdns/pdns/misc.hh:310,1
    - Dst: string::resize
      Src: /src/pdns/pdns/misc.hh:312,1
    - Dst: toLowerInPlace
      Src: /src/pdns/pdns/misc.hh:314,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - upper
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 317
      start: 306
    functionDepth: 1
    functionLinenumber: 306
    functionLinenumberEnd: 317
    functionName: toLowerCanonic
    functionSourceFile: /src/pdns/pdns/misc.hh
    functionUses: 0
    functionsReached:
    - string::resize
    - toLowerInPlace
    - string::length
    - string::empty
    linkageType: ''
    returnType: string
    signature: string toLowerCanonic(const string &upper)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: length
      Src: /src/pdns/pdns/misc.hh:323,1
    - Dst: dns_toupper
      Src: /src/pdns/pdns/misc.hh:324,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ' s'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 327
      start: 320
    functionDepth: 0
    functionLinenumber: 320
    functionLinenumberEnd: 327
    functionName: toUpper
    functionSourceFile: /src/pdns/pdns/misc.hh
    functionUses: 3
    functionsReached:
    - length
    - dns_toupper
    linkageType: ''
    returnType: string
    signature: string toUpper( const string& s )
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: gettimeofday
      Src: /src/pdns/pdns/misc.hh:332,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 335
      start: 329
    functionDepth: 0
    functionLinenumber: 329
    functionLinenumberEnd: 335
    functionName: getTime
    functionSourceFile: /src/pdns/pdns/misc.hh
    functionUses: 0
    functionsReached:
    - gettimeofday
    linkageType: ''
    returnType: double
    signature: double getTime()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: runtime_error
      Src: /src/pdns/pdns/misc.hh:339,1
    - Dst: stringerror
      Src: /src/pdns/pdns/misc.hh:339,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - why
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 340
      start: 337
    functionDepth: 0
    functionLinenumber: 337
    functionLinenumberEnd: 340
    functionName: unixDie
    functionSourceFile: /src/pdns/pdns/misc.hh
    functionUses: 4
    functionsReached:
    - stringerror
    - runtime_error
    linkageType: ''
    returnType: void
    signature: void unixDie(const string &why)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' tv'
    argTypes:
    - struct timeval
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 353
      start: 350
    functionDepth: 0
    functionLinenumber: 350
    functionLinenumberEnd: 353
    functionName: makeFloat
    functionSourceFile: /src/pdns/pdns/misc.hh
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: float
    signature: float makeFloat(const struct timeval& tv)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' tv'
    argTypes:
    - struct timeval
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 357
      start: 354
    functionDepth: 0
    functionLinenumber: 354
    functionLinenumberEnd: 357
    functionName: uSec
    functionSourceFile: /src/pdns/pdns/misc.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t uSec(const struct timeval& tv)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::tie
      Src: /src/pdns/pdns/misc.hh:361,1
    - Dst: std::tie
      Src: /src/pdns/pdns/misc.hh:361,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' lhs'
    - ' rhs'
    argTypes:
    - struct timeval
    - struct timeval
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 362
      start: 359
    functionDepth: 0
    functionLinenumber: 359
    functionLinenumberEnd: 362
    functionName: operator<(const struct timeval& lhs, const struct timeval& rhs)
    functionSourceFile: /src/pdns/pdns/misc.hh
    functionUses: 0
    functionsReached:
    - std::tie
    linkageType: ''
    returnType: bool
    signature: bool operator<(const struct timeval& lhs, const struct timeval& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::tie
      Src: /src/pdns/pdns/misc.hh:365,1
    - Dst: std::tie
      Src: /src/pdns/pdns/misc.hh:365,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' lhs'
    - ' rhs'
    argTypes:
    - struct timeval
    - struct timeval
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 366
      start: 363
    functionDepth: 0
    functionLinenumber: 363
    functionLinenumberEnd: 366
    functionName: operator<=(const struct timeval& lhs, const struct timeval& rhs)
    functionSourceFile: /src/pdns/pdns/misc.hh
    functionUses: 0
    functionsReached:
    - std::tie
    linkageType: ''
    returnType: bool
    signature: bool operator<=(const struct timeval& lhs, const struct timeval& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::tie
      Src: /src/pdns/pdns/misc.hh:370,1
    - Dst: std::tie
      Src: /src/pdns/pdns/misc.hh:370,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' lhs'
    - ' rhs'
    argTypes:
    - struct timespec
    - struct timespec
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 371
      start: 368
    functionDepth: 0
    functionLinenumber: 368
    functionLinenumberEnd: 371
    functionName: operator<(const struct timespec& lhs, const struct timespec& rhs)
    functionSourceFile: /src/pdns/pdns/misc.hh
    functionUses: 0
    functionsReached:
    - std::tie
    linkageType: ''
    returnType: bool
    signature: bool operator<(const struct timespec& lhs, const struct timespec& rhs)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: std::string_view::data
      Src: /src/pdns/pdns/misc.hh:377,1
    - Dst: std::string_view::data
      Src: /src/pdns/pdns/misc.hh:377,1
    - Dst: std::string_view::length
      Src: /src/pdns/pdns/misc.hh:378,1
    - Dst: std::string_view::length
      Src: /src/pdns/pdns/misc.hh:378,1
    - Dst: dns_tolower
      Src: /src/pdns/pdns/misc.hh:381,1
    - Dst: dns_tolower
      Src: /src/pdns/pdns/misc.hh:381,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - std::string_view
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 400
      start: 375
    functionDepth: 0
    functionLinenumber: 375
    functionLinenumberEnd: 400
    functionName: pdns_ilexicographical_compare_three_way
    functionSourceFile: /src/pdns/pdns/misc.hh
    functionUses: 0
    functionsReached:
    - std::string_view::data
    - std::string_view::length
    - dns_tolower
    linkageType: ''
    returnType: int
    signature: int pdns_ilexicographical_compare_three_way(std::string_view a, std::string_view
      b)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns_ilexicographical_compare_three_way
      Src: /src/pdns/pdns/misc.hh:405,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' a'
    - ' b'
    argTypes:
    - std::string
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 406
      start: 403
    functionDepth: 0
    functionLinenumber: 403
    functionLinenumberEnd: 406
    functionName: pdns_ilexicographical_compare
    functionSourceFile: /src/pdns/pdns/misc.hh
    functionUses: 0
    functionsReached:
    - pdns_ilexicographical_compare_three_way
    linkageType: ''
    returnType: bool
    signature: bool pdns_ilexicographical_compare(const std::string& a, const std::string&
      b)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: length
      Src: /src/pdns/pdns/misc.hh:411,1
    - Dst: length
      Src: /src/pdns/pdns/misc.hh:411,1
    - Dst: pdns_ilexicographical_compare_three_way
      Src: /src/pdns/pdns/misc.hh:414,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - ' a'
    - ' b'
    argTypes:
    - std::string
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 415
      start: 409
    functionDepth: 0
    functionLinenumber: 409
    functionLinenumberEnd: 415
    functionName: pdns_iequals
    functionSourceFile: /src/pdns/pdns/misc.hh
    functionUses: 11
    functionsReached:
    - length
    - pdns_ilexicographical_compare_three_way
    linkageType: ''
    returnType: bool
    signature: bool pdns_iequals(const std::string& a, const std::string& b)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dns_tolower
      Src: /src/pdns/pdns/misc.hh:420,1
    - Dst: dns_tolower
      Src: /src/pdns/pdns/misc.hh:420,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - char
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 424
      start: 418
    functionDepth: 0
    functionLinenumber: 418
    functionLinenumberEnd: 424
    functionName: pdns_iequals_ch
    functionSourceFile: /src/pdns/pdns/misc.hh
    functionUses: 0
    functionsReached:
    - dns_tolower
    linkageType: ''
    returnType: bool
    signature: bool pdns_iequals_ch(const char a, const char b)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns_ilexicographical_compare
      Src: /src/pdns/pdns/misc.hh:435,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' a'
    - ' b'
    argTypes:
    - string
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 436
      start: 433
    functionDepth: 0
    functionLinenumber: 433
    functionLinenumberEnd: 436
    functionName: operator()(const string& a, const string& b) const
    functionSourceFile: /src/pdns/pdns/misc.hh
    functionUses: 0
    functionsReached:
    - pdns_ilexicographical_compare
    linkageType: ''
    returnType: bool
    signature: bool operator()(const string& a, const string& b) const
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: std::locale
      Src: /src/pdns/pdns/misc.hh:443,1
    - Dst: begin
      Src: /src/pdns/pdns/misc.hh:444,1
    - Dst: begin
      Src: /src/pdns/pdns/misc.hh:445,1
    - Dst: end
      Src: /src/pdns/pdns/misc.hh:446,1
    - Dst: end
      Src: /src/pdns/pdns/misc.hh:447,1
    - Dst: std::tolower
      Src: /src/pdns/pdns/misc.hh:447,1
    - Dst: std::tolower
      Src: /src/pdns/pdns/misc.hh:447,1
    - Dst: std::tolower
      Src: /src/pdns/pdns/misc.hh:450,1
    - Dst: std::tolower
      Src: /src/pdns/pdns/misc.hh:450,1
    - Dst: end
      Src: /src/pdns/pdns/misc.hh:455,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 2
    argNames:
    - ' lhs'
    - ' rhs'
    argTypes:
    - std::string
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 456
      start: 441
    functionDepth: 0
    functionLinenumber: 441
    functionLinenumberEnd: 456
    functionName: operator() (const std::string& lhs, const std::string& rhs) const
    functionSourceFile: /src/pdns/pdns/misc.hh
    functionUses: 0
    functionsReached:
    - std::locale
    - std::tolower
    - end
    - begin
    linkageType: ''
    returnType: bool
    signature: bool operator() (const std::string& lhs, const std::string& rhs) const
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pdns_ilexicographical_compare
      Src: /src/pdns/pdns/misc.hh:463,1
    - Dst: pdns_ilexicographical_compare
      Src: /src/pdns/pdns/misc.hh:465,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - ' a'
    - ' b'
    argTypes:
    - pair<string, uint16_t>
    - pair<string, uint16_t>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 468
      start: 461
    functionDepth: 0
    functionLinenumber: 461
    functionLinenumberEnd: 468
    functionName: operator()(const pair<string, uint16_t>& a, const pair<string, uint16_t>&
      b) const
    functionSourceFile: /src/pdns/pdns/misc.hh
    functionUses: 0
    functionsReached:
    - pdns_ilexicographical_compare
    linkageType: ''
    returnType: bool
    signature: bool operator()(const pair<string, uint16_t>& a, const pair<string,
      uint16_t>& b) const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::search
      Src: /src/pdns/pdns/misc.hh:473,1
    - Dst: begin
      Src: /src/pdns/pdns/misc.hh:473,1
    - Dst: end
      Src: /src/pdns/pdns/misc.hh:473,1
    - Dst: begin
      Src: /src/pdns/pdns/misc.hh:474,1
    - Dst: end
      Src: /src/pdns/pdns/misc.hh:474,1
    - Dst: end
      Src: /src/pdns/pdns/misc.hh:475,1
    - Dst: begin
      Src: /src/pdns/pdns/misc.hh:479,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - ' haystack'
    - ' needle'
    argTypes:
    - string
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 481
      start: 471
    functionDepth: 0
    functionLinenumber: 471
    functionLinenumberEnd: 481
    functionName: pdns_ci_find
    functionSourceFile: /src/pdns/pdns/misc.hh
    functionUses: 0
    functionsReached:
    - std::search
    - end
    - begin
    linkageType: ''
    returnType: size_t
    signature: size_t pdns_ci_find(const string& haystack, const string& needle)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: boost::ends_with
      Src: /src/pdns/pdns/misc.hh:487,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - qname
    argTypes:
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 488
      start: 485
    functionDepth: 0
    functionLinenumber: 485
    functionLinenumberEnd: 488
    functionName: isCanonical
    functionSourceFile: /src/pdns/pdns/misc.hh
    functionUses: 2
    functionsReached:
    - boost::ends_with
    linkageType: ''
    returnType: bool
    signature: bool isCanonical(std::string_view qname)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/misc.hh:492,1
    - Dst: DNSName
      Src: /src/pdns/pdns/misc.hh:493,1
    - Dst: isCanonical
      Src: /src/pdns/pdns/misc.hh:494,1
    - Dst: DNSName
      Src: /src/pdns/pdns/misc.hh:495,1
    - Dst: DNSName
      Src: /src/pdns/pdns/misc.hh:496,1
    - Dst: DNSName
      Src: /src/pdns/pdns/misc.hh:496,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 2
    argNames:
    - ' zone'
    - ' qname'
    argTypes:
    - ZoneName
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 497
      start: 490
    functionDepth: 0
    functionLinenumber: 490
    functionLinenumberEnd: 497
    functionName: toCanonic
    functionSourceFile: /src/pdns/pdns/misc.hh
    functionUses: 0
    functionsReached:
    - isCanonical
    - DNSName
    - size
    linkageType: ''
    returnType: DNSName
    signature: DNSName toCanonic(const ZoneName& zone, const string& qname)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: insert
      Src: /src/pdns/pdns/misc.hh:510,1
    - Dst: replace
      Src: /src/pdns/pdns/misc.hh:511,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - ' i'
    - ' x'
    argTypes:
    - Index
    - typename Index::value_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 513
      start: 507
    functionDepth: 1
    functionLinenumber: 507
    functionLinenumberEnd: 513
    functionName: replacing_insert
    functionSourceFile: /src/pdns/pdns/misc.hh
    functionUses: 0
    functionsReached:
    - replace
    - insert
    linkageType: ''
    returnType: std::pair<typename Index::iterator,bool>
    signature: std::pair<typename Index::iterator,bool> replacing_insert(Index& i,const
      typename Index::value_type& x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 521
      start: 521
    functionDepth: 0
    functionLinenumber: 521
    functionLinenumberEnd: 521
    functionName: Regex::Regex
    functionSourceFile: /src/pdns/pdns/misc.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Regex(const Regex&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 522
      start: 522
    functionDepth: 0
    functionLinenumber: 522
    functionLinenumberEnd: 522
    functionName: '& operator=(const Regex&)'
    functionSourceFile: /src/pdns/pdns/misc.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Regex
    signature: Regex & operator=(const Regex&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - Regex
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 523
      start: 523
    functionDepth: 0
    functionLinenumber: 523
    functionLinenumberEnd: 523
    functionName: Regex::Regex
    functionSourceFile: /src/pdns/pdns/misc.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Regex(Regex&& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - Regex
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 524
      start: 524
    functionDepth: 0
    functionLinenumber: 524
    functionLinenumberEnd: 524
    functionName: '& operator=(Regex&& rhs)'
    functionSourceFile: /src/pdns/pdns/misc.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Regex
    signature: Regex & operator=(Regex&& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 525
      start: 525
    functionDepth: 0
    functionLinenumber: 525
    functionLinenumberEnd: 525
    functionName: ~Regex()
    functionSourceFile: /src/pdns/pdns/misc.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~Regex()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: regfree
      Src: /src/pdns/pdns/misc.hh:534,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ptr
    argTypes:
    - regex_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 536
      start: 533
    functionDepth: 0
    functionLinenumber: 533
    functionLinenumberEnd: 536
    functionName: operator()(regex_t* ptr) const noexcept
    functionSourceFile: /src/pdns/pdns/misc.hh
    functionUses: 0
    functionsReached:
    - regfree
    linkageType: ''
    returnType: void
    signature: void operator()(regex_t* ptr) const noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/misc.hh:546,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - mask
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 548
      start: 545
    functionDepth: 0
    functionLinenumber: 545
    functionLinenumberEnd: 548
    functionName: SimpleMatch::SimpleMatch
    functionSourceFile: /src/pdns/pdns/misc.hh
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void SimpleMatch(string mask, bool caseFold = false)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: SimpleMatch::match
      Src: /src/pdns/pdns/misc.hh:562,1
    - Dst: dns_tolower
      Src: /src/pdns/pdns/misc.hh:570,1
    - Dst: dns_tolower
      Src: /src/pdns/pdns/misc.hh:570,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 34
    argCount: 4
    argNames:
    - mi
    - mend
    - vi
    - vend
    argTypes:
    - string::const_iterator
    - string::const_iterator
    - string::const_iterator
    - string::const_iterator
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 577
      start: 550
    functionDepth: 0
    functionLinenumber: 550
    functionLinenumberEnd: 577
    functionName: SimpleMatch::match
    functionSourceFile: /src/pdns/pdns/misc.hh
    functionUses: 1
    functionsReached:
    - SimpleMatch::match
    - dns_tolower
    linkageType: ''
    returnType: bool
    signature: bool match(string::const_iterator mi, string::const_iterator mend,
      string::const_iterator vi, string::const_iterator vend) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SimpleMatch::match
      Src: /src/pdns/pdns/misc.hh:580,1
    - Dst: begin
      Src: /src/pdns/pdns/misc.hh:580,1
    - Dst: end
      Src: /src/pdns/pdns/misc.hh:580,1
    - Dst: begin
      Src: /src/pdns/pdns/misc.hh:580,1
    - Dst: end
      Src: /src/pdns/pdns/misc.hh:580,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' value'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 581
      start: 579
    functionDepth: 0
    functionLinenumber: 579
    functionLinenumberEnd: 581
    functionName: SimpleMatch::match
    functionSourceFile: /src/pdns/pdns/misc.hh
    functionUses: 2
    functionsReached:
    - SimpleMatch::match
    - end
    - begin
    linkageType: ''
    returnType: bool
    signature: bool match(const string& value) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SimpleMatch::match
      Src: /src/pdns/pdns/misc.hh:584,1
    - Dst: toStringNoDot
      Src: /src/pdns/pdns/misc.hh:584,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' name'
    argTypes:
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 585
      start: 583
    functionDepth: 0
    functionLinenumber: 583
    functionLinenumberEnd: 585
    functionName: SimpleMatch::match
    functionSourceFile: /src/pdns/pdns/misc.hh
    functionUses: 3
    functionsReached:
    - SimpleMatch::match
    - toStringNoDot
    linkageType: ''
    returnType: bool
    signature: bool match(const DNSName& name) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SimpleMatch::match
      Src: /src/pdns/pdns/misc.hh:589,1
    - Dst: toStringNoDot
      Src: /src/pdns/pdns/misc.hh:589,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' name'
    argTypes:
    - ZoneName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 590
      start: 588
    functionDepth: 0
    functionLinenumber: 588
    functionLinenumberEnd: 590
    functionName: SimpleMatch::match
    functionSourceFile: /src/pdns/pdns/misc.hh
    functionUses: 4
    functionsReached:
    - SimpleMatch::match
    - toStringNoDot
    linkageType: ''
    returnType: bool
    signature: bool match(const ZoneName& name) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' a'
    - ' b'
    argTypes:
    - T
    - T
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 645
      start: 642
    functionDepth: 0
    functionLinenumber: 642
    functionLinenumberEnd: 645
    functionName: defTer
    functionSourceFile: /src/pdns/pdns/misc.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: T
    signature: T & defTer(const T& a, const T& b)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: T
      Src: /src/pdns/pdns/misc.hh:650,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - val
    argTypes:
    - P
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 651
      start: 648
    functionDepth: 0
    functionLinenumber: 648
    functionLinenumberEnd: 651
    functionName: valueOrEmpty
    functionSourceFile: /src/pdns/pdns/misc.hh
    functionUses: 0
    functionsReached:
    - T
    linkageType: ''
    returnType: T
    signature: T valueOrEmpty(const P val)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - siz
    argTypes:
    - Integer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 663
      start: 657
    functionDepth: 0
    functionLinenumber: 657
    functionLinenumberEnd: 663
    functionName: addS
    functionSourceFile: /src/pdns/pdns/misc.hh
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char * addS(Integer siz, const char* singular = "", const char *plural
      = "s")
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: addS
      Src: /src/pdns/pdns/misc.hh:669,1
    - Dst: size
      Src: /src/pdns/pdns/misc.hh:669,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' c'
    argTypes:
    - C
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 670
      start: 667
    functionDepth: 0
    functionLinenumber: 667
    functionLinenumberEnd: 670
    functionName: addS
    functionSourceFile: /src/pdns/pdns/misc.hh
    functionUses: 2
    functionsReached:
    - addS
    - size
    linkageType: ''
    returnType: char
    signature: char * addS(const C& c, const char* singular = "", const char *plural
      = "s")
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: find
      Src: /src/pdns/pdns/misc.hh:675,1
    - Dst: end
      Src: /src/pdns/pdns/misc.hh:676,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - ' c'
    - ' key'
    argTypes:
    - C
    - typename C::value_type::first_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 679
      start: 673
    functionDepth: 0
    functionLinenumber: 673
    functionLinenumberEnd: 679
    functionName: rplookup
    functionSourceFile: /src/pdns/pdns/misc.hh
    functionUses: 0
    functionsReached:
    - end
    - find
    linkageType: ''
    returnType: typename C::value_type::second_type
    signature: typename C::value_type::second_type * rplookup(const C& c, const typename
      C::value_type::first_type& key)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pdns::min
      Src: /src/pdns/pdns/misc.hh:709,1
    - Dst: pdns::min
      Src: /src/pdns/pdns/misc.hh:710,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/misc.hh:712,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/misc.hh:712,1
    - Dst: std::out_of_range
      Src: /src/pdns/pdns/misc.hh:713,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/misc.hh:717,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/misc.hh:718,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/misc.hh:720,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/misc.hh:720,1
    - Dst: std::out_of_range
      Src: /src/pdns/pdns/misc.hh:721,1
    - Dst: static_cast<T>
      Src: /src/pdns/pdns/misc.hh:725,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 12
    argCount: 1
    argNames:
    - from
    argTypes:
    - F
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 726
      start: 702
    functionDepth: 0
    functionLinenumber: 702
    functionLinenumberEnd: 726
    functionName: pdns::checked_conv
    functionSourceFile: /src/pdns/pdns/misc.hh
    functionUses: 0
    functionsReached:
    - pdns::max
    - std::out_of_range
    - std::to_string
    - static_cast<T>
    - pdns::min
    linkageType: ''
    returnType: auto
    signature: auto checked_conv(F from) -> T
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/misc.hh:759,1
    - Dst: pdns::checked_conv<T>
      Src: /src/pdns/pdns/misc.hh:768,1
    - Dst: std::stoull
      Src: /src/pdns/pdns/misc.hh:768,1
    - Dst: pdns::checked_conv<T>
      Src: /src/pdns/pdns/misc.hh:771,1
    - Dst: std::stoll
      Src: /src/pdns/pdns/misc.hh:771,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - ' str'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 773
      start: 755
    functionDepth: 0
    functionLinenumber: 755
    functionLinenumberEnd: 773
    functionName: pdns::checked_stoi
    functionSourceFile: /src/pdns/pdns/misc.hh
    functionUses: 0
    functionsReached:
    - empty
    - std::stoll
    - std::stoull
    - pdns::checked_conv<T>
    linkageType: ''
    returnType: auto
    signature: auto checked_stoi(const std::string& str, size_t* idx = nullptr, int
      base = 10) -> T
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pdns::checked_stoi
      Src: /src/pdns/pdns/misc.hh:797,1
    - Dst: std::out_of_range
      Src: /src/pdns/pdns/misc.hh:799,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - ' str'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 802
      start: 795
    functionDepth: 0
    functionLinenumber: 795
    functionLinenumberEnd: 802
    functionName: pdns::checked_stoi_nonzero
    functionSourceFile: /src/pdns/pdns/misc.hh
    functionUses: 0
    functionsReached:
    - std::out_of_range
    - pdns::checked_stoi
    linkageType: ''
    returnType: auto
    signature: auto checked_stoi_nonzero(const std::string& str, size_t* idx = nullptr,
      int base = 10) -> T
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::checked_stoi
      Src: /src/pdns/pdns/misc.hh:827,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' out'
    - ' str'
    argTypes:
    - T
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 828
      start: 825
    functionDepth: 0
    functionLinenumber: 825
    functionLinenumberEnd: 828
    functionName: pdns::checked_stoi_into
    functionSourceFile: /src/pdns/pdns/misc.hh
    functionUses: 9
    functionsReached:
    - pdns::checked_stoi
    linkageType: ''
    returnType: auto
    signature: auto checked_stoi_into(T& out, const std::string& str, size_t* idx
      = nullptr, int base = 10)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pdns::min
      Src: /src/pdns/pdns/misc.hh:709,1
    - Dst: pdns::min
      Src: /src/pdns/pdns/misc.hh:710,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/misc.hh:712,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/misc.hh:712,1
    - Dst: std::out_of_range
      Src: /src/pdns/pdns/misc.hh:713,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/misc.hh:717,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/misc.hh:718,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/misc.hh:720,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/misc.hh:720,1
    - Dst: std::out_of_range
      Src: /src/pdns/pdns/misc.hh:721,1
    - Dst: static_cast<T>
      Src: /src/pdns/pdns/misc.hh:725,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 12
    argCount: 1
    argNames:
    - from
    argTypes:
    - F
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 726
      start: 702
    functionDepth: 0
    functionLinenumber: 702
    functionLinenumberEnd: 726
    functionName: pdns::checked_conv
    functionSourceFile: /src/pdns/pdns/misc.hh
    functionUses: 0
    functionsReached:
    - pdns::max
    - std::out_of_range
    - std::to_string
    - static_cast<T>
    - pdns::min
    linkageType: ''
    returnType: auto
    signature: auto checked_conv(F from) -> T
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/misc.hh:759,1
    - Dst: pdns::checked_conv<T>
      Src: /src/pdns/pdns/misc.hh:768,1
    - Dst: std::stoull
      Src: /src/pdns/pdns/misc.hh:768,1
    - Dst: pdns::checked_conv<T>
      Src: /src/pdns/pdns/misc.hh:771,1
    - Dst: std::stoll
      Src: /src/pdns/pdns/misc.hh:771,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - ' str'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 773
      start: 755
    functionDepth: 0
    functionLinenumber: 755
    functionLinenumberEnd: 773
    functionName: pdns::checked_stoi
    functionSourceFile: /src/pdns/pdns/misc.hh
    functionUses: 2
    functionsReached:
    - empty
    - std::stoll
    - std::stoull
    - pdns::checked_conv<T>
    linkageType: ''
    returnType: auto
    signature: auto checked_stoi(const std::string& str, size_t* idx = nullptr, int
      base = 10) -> T
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pdns::checked_stoi
      Src: /src/pdns/pdns/misc.hh:797,1
    - Dst: std::out_of_range
      Src: /src/pdns/pdns/misc.hh:799,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - ' str'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 802
      start: 795
    functionDepth: 0
    functionLinenumber: 795
    functionLinenumberEnd: 802
    functionName: pdns::checked_stoi_nonzero
    functionSourceFile: /src/pdns/pdns/misc.hh
    functionUses: 0
    functionsReached:
    - std::out_of_range
    - pdns::checked_stoi
    linkageType: ''
    returnType: auto
    signature: auto checked_stoi_nonzero(const std::string& str, size_t* idx = nullptr,
      int base = 10) -> T
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::checked_stoi
      Src: /src/pdns/pdns/misc.hh:827,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' out'
    - ' str'
    argTypes:
    - T
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 828
      start: 825
    functionDepth: 0
    functionLinenumber: 825
    functionLinenumberEnd: 828
    functionName: pdns::checked_stoi_into
    functionSourceFile: /src/pdns/pdns/misc.hh
    functionUses: 9
    functionsReached:
    - pdns::checked_stoi
    linkageType: ''
    returnType: auto
    signature: auto checked_stoi_into(T& out, const std::string& str, size_t* idx
      = nullptr, int base = 10)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 856
      start: 856
    functionDepth: 0
    functionLinenumber: 856
    functionLinenumberEnd: 856
    functionName: FDWrapper
    functionSourceFile: /src/pdns/pdns/misc.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void FDWrapper()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - desc
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 857
      start: 857
    functionDepth: 0
    functionLinenumber: 857
    functionLinenumberEnd: 857
    functionName: FDWrapper
    functionSourceFile: /src/pdns/pdns/misc.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void FDWrapper(int desc)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 858
      start: 858
    functionDepth: 0
    functionLinenumber: 858
    functionLinenumberEnd: 858
    functionName: FDWrapper
    functionSourceFile: /src/pdns/pdns/misc.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void FDWrapper(const FDWrapper&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - FDWrapper
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 859
      start: 859
    functionDepth: 0
    functionLinenumber: 859
    functionLinenumberEnd: 859
    functionName: '& operator=(const FDWrapper& rhs)'
    functionSourceFile: /src/pdns/pdns/misc.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: FDWrapper
    signature: FDWrapper & operator=(const FDWrapper& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: reset
      Src: /src/pdns/pdns/misc.hh:864,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 865
      start: 862
    functionDepth: 0
    functionLinenumber: 862
    functionLinenumberEnd: 865
    functionName: ~FDWrapper()
    functionSourceFile: /src/pdns/pdns/misc.hh
    functionUses: 0
    functionsReached:
    - reset
    linkageType: ''
    returnType: void
    signature: void ~FDWrapper()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - FDWrapper
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 870
      start: 867
    functionDepth: 0
    functionLinenumber: 867
    functionLinenumberEnd: 870
    functionName: FDWrapper
    functionSourceFile: /src/pdns/pdns/misc.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void FDWrapper(FDWrapper&& rhs) noexcept
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: close
      Src: /src/pdns/pdns/misc.hh:875,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - FDWrapper
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 880
      start: 872
    functionDepth: 0
    functionLinenumber: 872
    functionLinenumberEnd: 880
    functionName: '& operator=(FDWrapper&& rhs) noexcept'
    functionSourceFile: /src/pdns/pdns/misc.hh
    functionUses: 0
    functionsReached:
    - close
    linkageType: ''
    returnType: FDWrapper
    signature: FDWrapper & operator=(FDWrapper&& rhs) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 885
      start: 882
    functionDepth: 0
    functionLinenumber: 882
    functionLinenumberEnd: 885
    functionName: getHandle
    functionSourceFile: /src/pdns/pdns/misc.hh
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int getHandle() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 890
      start: 887
    functionDepth: 0
    functionLinenumber: 887
    functionLinenumberEnd: 890
    functionName: operator int() const
    functionSourceFile: /src/pdns/pdns/misc.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void operator int() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: close
      Src: /src/pdns/pdns/misc.hh:896,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 900
      start: 892
    functionDepth: 0
    functionLinenumber: 892
    functionLinenumberEnd: 900
    functionName: reset
    functionSourceFile: /src/pdns/pdns/misc.hh
    functionUses: 22
    functionsReached:
    - close
    linkageType: ''
    returnType: int
    signature: int reset()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 907
      start: 902
    functionDepth: 0
    functionLinenumber: 902
    functionLinenumberEnd: 907
    functionName: release
    functionSourceFile: /src/pdns/pdns/misc.hh
    functionUses: 10
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int release()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fclose
      Src: /src/pdns/pdns/misc.hh:927,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - filePtr
    argTypes:
    - FILE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 928
      start: 926
    functionDepth: 0
    functionLinenumber: 926
    functionLinenumberEnd: 928
    functionName: operator()(FILE* filePtr) const noexcept
    functionSourceFile: /src/pdns/pdns/misc.hh
    functionUses: 0
    functionsReached:
    - fclose
    linkageType: ''
    returnType: void
    signature: void operator()(FILE* filePtr) const noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fclose
      Src: /src/pdns/pdns/misc.hh:927,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - filePtr
    argTypes:
    - FILE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 928
      start: 926
    functionDepth: 0
    functionLinenumber: 926
    functionLinenumberEnd: 928
    functionName: operator()(FILE* filePtr) const noexcept
    functionSourceFile: /src/pdns/pdns/misc.hh
    functionUses: 0
    functionsReached:
    - fclose
    linkageType: ''
    returnType: void
    signature: void operator()(FILE* filePtr) const noexcept
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: add_bytes
      Src: /src/pdns/pdns/protozero.cc:31,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/protozero.cc:31,1
    - Dst: add_bytes
      Src: /src/pdns/pdns/protozero.cc:34,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/protozero.cc:34,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - type
    - ' address'
    argTypes:
    - protozero::pbf_tag_type
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 36
      start: 28
    functionDepth: 0
    functionLinenumber: 28
    functionLinenumberEnd: 36
    functionName: pdns::ProtoZero::Message::encodeComboAddress(const protozero::pbf_tag_type
      type, const ComboAddress& address)
    functionSourceFile: /src/pdns/pdns/protozero.cc
    functionUses: 0
    functionsReached:
    - add_bytes
    - reinterpret_cast<const char*>
    linkageType: ''
    returnType: void
    signature: void pdns::ProtoZero::Message::encodeComboAddress(const protozero::pbf_tag_type
      type, const ComboAddress& address)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/protozero.cc:40,1
    - Dst: getNetwork
      Src: /src/pdns/pdns/protozero.cc:41,1
    - Dst: ComboAddress::truncate
      Src: /src/pdns/pdns/protozero.cc:42,1
    - Dst: add_bytes
      Src: /src/pdns/pdns/protozero.cc:44,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/protozero.cc:44,1
    - Dst: add_bytes
      Src: /src/pdns/pdns/protozero.cc:47,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/protozero.cc:47,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 3
    argNames:
    - type
    - ' subnet'
    - mask
    argTypes:
    - protozero::pbf_tag_type
    - Netmask
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 38
    functionDepth: 0
    functionLinenumber: 38
    functionLinenumberEnd: 50
    functionName: pdns::ProtoZero::Message::encodeNetmask(const protozero::pbf_tag_type
      type, const Netmask& subnet, uint8_t mask)
    functionSourceFile: /src/pdns/pdns/protozero.cc
    functionUses: 0
    functionsReached:
    - add_bytes
    - reinterpret_cast<const char*>
    - getNetwork
    - ComboAddress::truncate
    - empty
    linkageType: ''
    returnType: void
    signature: void pdns::ProtoZero::Message::encodeNetmask(const protozero::pbf_tag_type
      type, const Netmask& subnet, uint8_t mask)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: toString
      Src: /src/pdns/pdns/protozero.cc:57,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - ' pbf'
    - ' buffer'
    - type
    - ' name'
    argTypes:
    - protozero::pbf_writer
    - std::string
    - protozero::pbf_tag_type
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 52
    functionDepth: 0
    functionLinenumber: 52
    functionLinenumberEnd: 59
    functionName: pdns::ProtoZero::Message::encodeDNSName(protozero::pbf_writer& pbf,
      std::string& buffer, const protozero::pbf_tag_type type, const DNSName& name)
    functionSourceFile: /src/pdns/pdns/protozero.cc
    functionUses: 0
    functionsReached:
    - toString
    linkageType: ''
    returnType: void
    signature: void pdns::ProtoZero::Message::encodeDNSName(protozero::pbf_writer&
      pbf, std::string& buffer, const protozero::pbf_tag_type type, const DNSName&
      name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: setMessageIdentity
      Src: /src/pdns/pdns/protozero.cc:63,1
    - Dst: setSocketFamily
      Src: /src/pdns/pdns/protozero.cc:64,1
    - Dst: setSocketProtocol
      Src: /src/pdns/pdns/protozero.cc:65,1
    - Dst: setFrom
      Src: /src/pdns/pdns/protozero.cc:66,1
    - Dst: setTo
      Src: /src/pdns/pdns/protozero.cc:67,1
    - Dst: setInBytes
      Src: /src/pdns/pdns/protozero.cc:68,1
    - Dst: setTime
      Src: /src/pdns/pdns/protozero.cc:69,1
    - Dst: setId
      Src: /src/pdns/pdns/protozero.cc:70,1
    - Dst: setQuestion
      Src: /src/pdns/pdns/protozero.cc:71,1
    - Dst: setFromPort
      Src: /src/pdns/pdns/protozero.cc:72,1
    - Dst: getPort
      Src: /src/pdns/pdns/protozero.cc:72,1
    - Dst: setToPort
      Src: /src/pdns/pdns/protozero.cc:73,1
    - Dst: getPort
      Src: /src/pdns/pdns/protozero.cc:73,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 9
    argNames:
    - ' uniqueId'
    - ' requestor'
    - ' local'
    - ' qname'
    - qtype
    - qclass
    - qid
    - proto
    - len
    argTypes:
    - boost::uuids::uuid
    - ComboAddress
    - ComboAddress
    - DNSName
    - uint16_t
    - uint16_t
    - uint16_t
    - pdns::ProtoZero::Message::TransportProtocol
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 61
    functionDepth: 0
    functionLinenumber: 61
    functionLinenumberEnd: 74
    functionName: pdns::ProtoZero::Message::setRequest(const boost::uuids::uuid& uniqueId,
      const ComboAddress& requestor, const ComboAddress& local, const DNSName& qname,
      uint16_t qtype, uint16_t qclass, uint16_t qid, pdns::ProtoZero::Message::TransportProtocol
      proto, size_t len)
    functionSourceFile: /src/pdns/pdns/protozero.cc
    functionUses: 0
    functionsReached:
    - setQuestion
    - setTo
    - setFrom
    - setId
    - setInBytes
    - setMessageIdentity
    - setTime
    - setFromPort
    - setSocketProtocol
    - setToPort
    - getPort
    - setSocketFamily
    linkageType: ''
    returnType: void
    signature: void pdns::ProtoZero::Message::setRequest(const boost::uuids::uuid&
      uniqueId, const ComboAddress& requestor, const ComboAddress& local, const DNSName&
      qname, uint16_t qtype, uint16_t qclass, uint16_t qid, pdns::ProtoZero::Message::TransportProtocol
      proto, size_t len)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::setType
      Src: /src/pdns/pdns/protozero.cc:78,1
    - Dst: pdns::ProtoZero::Message::setQuestion
      Src: /src/pdns/pdns/protozero.cc:79,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - ' qname'
    - qtype
    - qclass
    argTypes:
    - DNSName
    - uint16_t
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 76
    functionDepth: 0
    functionLinenumber: 76
    functionLinenumberEnd: 80
    functionName: pdns::ProtoZero::Message::setResponse(const DNSName& qname, uint16_t
      qtype, uint16_t qclass)
    functionSourceFile: /src/pdns/pdns/protozero.cc
    functionUses: 0
    functionsReached:
    - pdns::ProtoZero::Message::setQuestion
    - pdns::ProtoZero::Message::setType
    linkageType: ''
    returnType: void
    signature: void pdns::ProtoZero::Message::setResponse(const DNSName& qname, uint16_t
      qtype, uint16_t qclass)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: ntohs
      Src: /src/pdns/pdns/protozero.cc:90,1
    - Dst: ntohs
      Src: /src/pdns/pdns/protozero.cc:94,1
    - Dst: DNSName::DNSName
      Src: /src/pdns/pdns/protozero.cc:101,1
    - Dst: ntohs
      Src: /src/pdns/pdns/protozero.cc:102,1
    - Dst: ntohs
      Src: /src/pdns/pdns/protozero.cc:103,1
    - Dst: PacketReader::getName
      Src: /src/pdns/pdns/protozero.cc:109,1
    - Dst: PacketReader::get16BitInt
      Src: /src/pdns/pdns/protozero.cc:110,1
    - Dst: PacketReader::get16BitInt
      Src: /src/pdns/pdns/protozero.cc:111,1
    - Dst: PacketReader::getName
      Src: /src/pdns/pdns/protozero.cc:118,1
    - Dst: PacketReader::get16BitInt
      Src: /src/pdns/pdns/protozero.cc:119,1
    - Dst: PacketReader::get16BitInt
      Src: /src/pdns/pdns/protozero.cc:120,1
    - Dst: PacketReader::getName
      Src: /src/pdns/pdns/protozero.cc:128,1
    - Dst: PacketReader::getDnsrecordheader
      Src: /src/pdns/pdns/protozero.cc:129,1
    - Dst: PacketReader::xfrBlob
      Src: /src/pdns/pdns/protozero.cc:132,1
    - Dst: addRR
      Src: /src/pdns/pdns/protozero.cc:134,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/protozero.cc:137,1
    - Dst: encodeDNSName
      Src: /src/pdns/pdns/protozero.cc:139,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/protozero.cc:139,1
    - Dst: protozero::pbf_writer::add_uint32
      Src: /src/pdns/pdns/protozero.cc:140,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/protozero.cc:140,1
    - Dst: protozero::pbf_writer::add_uint32
      Src: /src/pdns/pdns/protozero.cc:141,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/protozero.cc:141,1
    - Dst: protozero::pbf_writer::add_uint32
      Src: /src/pdns/pdns/protozero.cc:142,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/protozero.cc:142,1
    - Dst: DNSName::DNSName
      Src: /src/pdns/pdns/protozero.cc:143,1
    - Dst: PacketReader::xfrName
      Src: /src/pdns/pdns/protozero.cc:144,1
    - Dst: encodeDNSName
      Src: /src/pdns/pdns/protozero.cc:145,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/protozero.cc:145,1
    - Dst: PacketReader::xfrBlob
      Src: /src/pdns/pdns/protozero.cc:148,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 42
    argCount: 3
    argNames:
    - packet
    - len
    - includeCNAME
    argTypes:
    - char*
    - size_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 151
      start: 82
    functionDepth: 0
    functionLinenumber: 82
    functionLinenumberEnd: 151
    functionName: pdns::ProtoZero::Message::addRRsFromPacket(const char* packet, const
      size_t len, bool includeCNAME)
    functionSourceFile: /src/pdns/pdns/protozero.cc
    functionUses: 0
    functionsReached:
    - static_cast<protozero::pbf_tag_type>
    - PacketReader::getName
    - PacketReader::xfrBlob
    - ntohs
    - PacketReader::xfrName
    - encodeDNSName
    - PacketReader::get16BitInt
    - addRR
    - PacketReader::getDnsrecordheader
    - DNSName::DNSName
    - protozero::pbf_writer::add_uint32
    linkageType: ''
    returnType: void
    signature: void pdns::ProtoZero::Message::addRRsFromPacket(const char* packet,
      const size_t len, bool includeCNAME)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/protozero.cc:155,1
    - Dst: encodeDNSName
      Src: /src/pdns/pdns/protozero.cc:156,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/protozero.cc:156,1
    - Dst: protozero::pbf_writer::add_uint32
      Src: /src/pdns/pdns/protozero.cc:157,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/protozero.cc:157,1
    - Dst: protozero::pbf_writer::add_uint32
      Src: /src/pdns/pdns/protozero.cc:158,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/protozero.cc:158,1
    - Dst: protozero::pbf_writer::add_uint32
      Src: /src/pdns/pdns/protozero.cc:159,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/protozero.cc:159,1
    - Dst: protozero::pbf_writer::add_string
      Src: /src/pdns/pdns/protozero.cc:160,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/protozero.cc:160,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 5
    argNames:
    - ' name'
    - uType
    - uClass
    - uTTL
    - ' blob'
    argTypes:
    - DNSName
    - uint16_t
    - uint16_t
    - uint32_t
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 161
      start: 153
    functionDepth: 0
    functionLinenumber: 153
    functionLinenumberEnd: 161
    functionName: pdns::ProtoZero::Message::addRR(const DNSName& name, uint16_t uType,
      uint16_t uClass, uint32_t uTTL, const std::string& blob)
    functionSourceFile: /src/pdns/pdns/protozero.cc
    functionUses: 0
    functionsReached:
    - static_cast<protozero::pbf_tag_type>
    - protozero::pbf_writer::add_uint32
    - encodeDNSName
    - protozero::pbf_writer::add_string
    linkageType: ''
    returnType: void
    signature: void pdns::ProtoZero::Message::addRR(const DNSName& name, uint16_t
      uType, uint16_t uClass, uint32_t uTTL, const std::string& blob)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: NSEC3PARAMRecordContent::NSEC3PARAMRecordContent
      Src: /src/pdns/pdns/nsec3dig.cc:44,1
    - Dst: toBase32Hex
      Src: /src/pdns/pdns/nsec3dig.cc:47,1
    - Dst: hashQNameWithSalt
      Src: /src/pdns/pdns/nsec3dig.cc:47,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - qname
    - salt
    - iters
    argTypes:
    - DNSName
    - string
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 42
    functionDepth: 0
    functionLinenumber: 42
    functionLinenumberEnd: 48
    functionName: nsec3Hash
    functionSourceFile: /src/pdns/pdns/nsec3dig.cc
    functionUses: 0
    functionsReached:
    - NSEC3PARAMRecordContent::NSEC3PARAMRecordContent
    - hashQNameWithSalt
    - toBase32Hex
    linkageType: ''
    returnType: string
    signature: string nsec3Hash(const DNSName &qname, const string &salt, unsigned
      int iters)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: nsec3Hash
      Src: /src/pdns/pdns/nsec3dig.cc:52,1
    - Dst: nsec3set::begin
      Src: /src/pdns/pdns/nsec3dig.cc:56,1
    - Dst: nsec3set::end
      Src: /src/pdns/pdns/nsec3dig.cc:56,1
    - Dst: set<DNSName>::insert
      Src: /src/pdns/pdns/nsec3dig.cc:62,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/nsec3dig.cc:63,1
    - Dst: nsec3types::at
      Src: /src/pdns/pdns/nsec3dig.cc:63,1
    - Dst: set<DNSName>::insert
      Src: /src/pdns/pdns/nsec3dig.cc:67,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/nsec3dig.cc:68,1
    - Dst: set<DNSName>::insert
      Src: /src/pdns/pdns/nsec3dig.cc:73,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/nsec3dig.cc:74,1
    - Dst: set<DNSName>::insert
      Src: /src/pdns/pdns/nsec3dig.cc:78,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/nsec3dig.cc:79,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 19
    argCount: 7
    argNames:
    - nsec3s
    - nsec3t
    - qname
    - salt
    - iters
    - proven
    - denied
    argTypes:
    - nsec3set
    - nsec3types
    - DNSName
    - string
    - unsigned int
    - set<DNSName>
    - set<DNSName>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 50
    functionDepth: 1
    functionLinenumber: 50
    functionLinenumberEnd: 82
    functionName: proveOrDeny
    functionSourceFile: /src/pdns/pdns/nsec3dig.cc
    functionUses: 0
    functionsReached:
    - set<DNSName>::insert
    - nsec3set::begin
    - nsec3set::end
    - DNSName::toString
    - nsec3types::at
    - nsec3Hash
    linkageType: ''
    returnType: void
    signature: void proveOrDeny(const nsec3set &nsec3s, const nsec3types &nsec3t,
      const DNSName &qname, const string &salt, unsigned int iters, set<DNSName> &proven,
      set<DNSName> &denied)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 84
    functionDepth: 0
    functionLinenumber: 84
    functionLinenumberEnd: 87
    functionName: usage
    functionSourceFile: /src/pdns/pdns/nsec3dig.cc
    functionUses: 90
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void usage()
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: reportAllTypes
      Src: /src/pdns/pdns/nsec3dig.cc:94,1
    - Dst: usage
      Src: /src/pdns/pdns/nsec3dig.cc:98,1
    - Dst: usage
      Src: /src/pdns/pdns/nsec3dig.cc:109,1
    - Dst: exit
      Src: /src/pdns/pdns/nsec3dig.cc:110,1
    - Dst: strcmp
      Src: /src/pdns/pdns/nsec3dig.cc:113,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/nsec3dig.cc:124,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/nsec3dig.cc:125,1
    - Dst: DNSPacketWriter::addOpt
      Src: /src/pdns/pdns/nsec3dig.cc:128,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/nsec3dig.cc:129,1
    - Dst: atoi
      Src: /src/pdns/pdns/nsec3dig.cc:132,1
    - Dst: Socket::connect
      Src: /src/pdns/pdns/nsec3dig.cc:134,1
    - Dst: htons
      Src: /src/pdns/pdns/nsec3dig.cc:136,1
    - Dst: vector::size
      Src: /src/pdns/pdns/nsec3dig.cc:136,1
    - Dst: Socket::write
      Src: /src/pdns/pdns/nsec3dig.cc:137,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/nsec3dig.cc:138,1
    - Dst: Socket::writen
      Src: /src/pdns/pdns/nsec3dig.cc:140,1
    - Dst: string
      Src: /src/pdns/pdns/nsec3dig.cc:140,1
    - Dst: vector::begin
      Src: /src/pdns/pdns/nsec3dig.cc:140,1
    - Dst: vector::end
      Src: /src/pdns/pdns/nsec3dig.cc:140,1
    - Dst: Socket::read
      Src: /src/pdns/pdns/nsec3dig.cc:142,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/nsec3dig.cc:143,1
    - Dst: ntohs
      Src: /src/pdns/pdns/nsec3dig.cc:145,1
    - Dst: std::make_unique<char[]>
      Src: /src/pdns/pdns/nsec3dig.cc:146,1
    - Dst: Socket::read
      Src: /src/pdns/pdns/nsec3dig.cc:150,1
    - Dst: auto::get
      Src: /src/pdns/pdns/nsec3dig.cc:150,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/nsec3dig.cc:152,1
    - Dst: auto::get
      Src: /src/pdns/pdns/nsec3dig.cc:156,1
    - Dst: DNSRecordContent::NumberToType
      Src: /src/pdns/pdns/nsec3dig.cc:159,1
    - Dst: MOADNSParser::d_answers::begin
      Src: /src/pdns/pdns/nsec3dig.cc:170,1
    - Dst: MOADNSParser::d_answers::end
      Src: /src/pdns/pdns/nsec3dig.cc:170,1
    - Dst: getRR
      Src: /src/pdns/pdns/nsec3dig.cc:175,1
    - Dst: nsec3set::emplace
      Src: /src/pdns/pdns/nsec3dig.cc:181,1
    - Dst: toLower
      Src: /src/pdns/pdns/nsec3dig.cc:181,1
    - Dst: MOADNSParser::answers_t::const_iterator::d_name::getRawLabel
      Src: /src/pdns/pdns/nsec3dig.cc:181,1
    - Dst: toBase32Hex
      Src: /src/pdns/pdns/nsec3dig.cc:181,1
    - Dst: nsec3types::emplace
      Src: /src/pdns/pdns/nsec3dig.cc:184,1
    - Dst: toLower
      Src: /src/pdns/pdns/nsec3dig.cc:184,1
    - Dst: MOADNSParser::answers_t::const_iterator::d_name::getRawLabel
      Src: /src/pdns/pdns/nsec3dig.cc:184,1
    - Dst: auto::numberOfTypesSet
      Src: /src/pdns/pdns/nsec3dig.cc:184,1
    - Dst: set::insert
      Src: /src/pdns/pdns/nsec3dig.cc:189,1
    - Dst: set::insert
      Src: /src/pdns/pdns/nsec3dig.cc:190,1
    - Dst: set::insert
      Src: /src/pdns/pdns/nsec3dig.cc:195,1
    - Dst: DNSName
      Src: /src/pdns/pdns/nsec3dig.cc:195,1
    - Dst: MOADNSParser::answers_t::const_iterator::getContent
      Src: /src/pdns/pdns/nsec3dig.cc:195,1
    - Dst: MOADNSParser::answers_t::const_iterator::d_name::toString
      Src: /src/pdns/pdns/nsec3dig.cc:198,1
    - Dst: DNSRecordContent::NumberToType
      Src: /src/pdns/pdns/nsec3dig.cc:198,1
    - Dst: MOADNSParser::answers_t::const_iterator::getContent
      Src: /src/pdns/pdns/nsec3dig.cc:199,1
    - Dst: set::size
      Src: /src/pdns/pdns/nsec3dig.cc:203,1
    - Dst: set::begin
      Src: /src/pdns/pdns/nsec3dig.cc:204,1
    - Dst: set::end
      Src: /src/pdns/pdns/nsec3dig.cc:204,1
    - Dst: nsec3set::size
      Src: /src/pdns/pdns/nsec3dig.cc:207,1
    - Dst: nsec3set::begin
      Src: /src/pdns/pdns/nsec3dig.cc:208,1
    - Dst: nsec3set::end
      Src: /src/pdns/pdns/nsec3dig.cc:208,1
    - Dst: set::insert
      Src: /src/pdns/pdns/nsec3dig.cc:216,1
    - Dst: set::insert
      Src: /src/pdns/pdns/nsec3dig.cc:221,1
    - Dst: DNSName::chopOff
      Src: /src/pdns/pdns/nsec3dig.cc:222,1
    - Dst: proveOrDeny
      Src: /src/pdns/pdns/nsec3dig.cc:226,1
    - Dst: proveOrDeny
      Src: /src/pdns/pdns/nsec3dig.cc:227,1
    - Dst: set::count
      Src: /src/pdns/pdns/nsec3dig.cc:230,1
    - Dst: set::count
      Src: /src/pdns/pdns/nsec3dig.cc:236,1
    - Dst: exit
      Src: /src/pdns/pdns/nsec3dig.cc:239,1
    - Dst: DNSName::DNSName
      Src: /src/pdns/pdns/nsec3dig.cc:242,1
    - Dst: DNSName::DNSName
      Src: /src/pdns/pdns/nsec3dig.cc:243,1
    - Dst: DNSName::chopOff
      Src: /src/pdns/pdns/nsec3dig.cc:245,1
    - Dst: set::count
      Src: /src/pdns/pdns/nsec3dig.cc:247,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/nsec3dig.cc:251,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/nsec3dig.cc:252,1
    - Dst: DNSName::hasLabels
      Src: /src/pdns/pdns/nsec3dig.cc:257,1
    - Dst: DNSName::hasLabels
      Src: /src/pdns/pdns/nsec3dig.cc:257,1
    - Dst: set::count
      Src: /src/pdns/pdns/nsec3dig.cc:259,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/nsec3dig.cc:261,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/nsec3dig.cc:265,1
    - Dst: set::count
      Src: /src/pdns/pdns/nsec3dig.cc:268,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/nsec3dig.cc:270,1
    - Dst: set::count
      Src: /src/pdns/pdns/nsec3dig.cc:272,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/nsec3dig.cc:274,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/nsec3dig.cc:278,1
    - Dst: exit
      Src: /src/pdns/pdns/nsec3dig.cc:281,1
    - Dst: what
      Src: /src/pdns/pdns/nsec3dig.cc:285,1
    CyclomaticComplexity: 35
    EdgeCount: 35
    ICount: 116
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 290
      start: 89
    functionDepth: 2
    functionLinenumber: 89
    functionLinenumberEnd: 290
    functionName: main
    functionSourceFile: /src/pdns/pdns/nsec3dig.cc
    functionUses: 16
    functionsReached:
    - ntohs
    - PDNSException
    - std::make_unique<char[]>
    - MOADNSParser::answers_t::const_iterator::d_name::toString
    - DNSName::toString
    - MOADNSParser::d_answers::end
    - Socket::read
    - vector::begin
    - MOADNSParser::answers_t::const_iterator::getContent
    - set::insert
    - reportAllTypes
    - set::size
    - DNSName::chopOff
    - string
    - DNSPacketWriter::getHeader
    - Socket::connect
    - nsec3set::begin
    - set::end
    - usage
    - DNSRecordContent::NumberToType
    - nsec3set::emplace
    - proveOrDeny
    - htons
    - MOADNSParser::d_answers::begin
    - auto::get
    - DNSPacketWriter::commit
    - DNSName::hasLabels
    - toLower
    - DNSName
    - vector::end
    - set::begin
    - exit
    - auto::numberOfTypesSet
    - MOADNSParser::answers_t::const_iterator::d_name::getRawLabel
    - getRR
    - nsec3set::size
    - atoi
    - nsec3types::emplace
    - what
    - strcmp
    - DNSPacketWriter::addOpt
    - nsec3set::end
    - set::count
    - toBase32Hex
    - DNSName::DNSName
    - Socket::write
    - vector::size
    - Socket::writen
    linkageType: ''
    returnType: int
    signature: int main(int argc, char** argv)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 40
    functionDepth: 0
    functionLinenumber: 40
    functionLinenumberEnd: 44
    functionName: usage
    functionSourceFile: /src/pdns/pdns/dnspcap2protobuf.cc
    functionUses: 91
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void usage()
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: usage
      Src: /src/pdns/pdns/dnspcap2protobuf.cc:50,1
    - Dst: usage
      Src: /src/pdns/pdns/dnspcap2protobuf.cc:61,1
    - Dst: exit
      Src: /src/pdns/pdns/dnspcap2protobuf.cc:62,1
    - Dst: pdns::openFileForWriting
      Src: /src/pdns/pdns/dnspcap2protobuf.cc:69,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnspcap2protobuf.cc:73,1
    - Dst: exit
      Src: /src/pdns/pdns/dnspcap2protobuf.cc:74,1
    - Dst: atoi
      Src: /src/pdns/pdns/dnspcap2protobuf.cc:79,1
    - Dst: PcapPacketReader::getUDPPacket
      Src: /src/pdns/pdns/dnspcap2protobuf.cc:84,1
    - Dst: DNSName::DNSName
      Src: /src/pdns/pdns/dnspcap2protobuf.cc:96,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnspcap2protobuf.cc:98,1
    - Dst: what
      Src: /src/pdns/pdns/dnspcap2protobuf.cc:101,1
    - Dst: getUniqueID
      Src: /src/pdns/pdns/dnspcap2protobuf.cc:111,1
    - Dst: std::map::find
      Src: /src/pdns/pdns/dnspcap2protobuf.cc:115,1
    - Dst: std::map::end
      Src: /src/pdns/pdns/dnspcap2protobuf.cc:116,1
    - Dst: getUniqueID
      Src: /src/pdns/pdns/dnspcap2protobuf.cc:122,1
    - Dst: PcapPacketReader::getDest
      Src: /src/pdns/pdns/dnspcap2protobuf.cc:126,1
    - Dst: PcapPacketReader::getSource
      Src: /src/pdns/pdns/dnspcap2protobuf.cc:126,1
    - Dst: PcapPacketReader::getSource
      Src: /src/pdns/pdns/dnspcap2protobuf.cc:127,1
    - Dst: PcapPacketReader::getDest
      Src: /src/pdns/pdns/dnspcap2protobuf.cc:127,1
    - Dst: std::string::clear
      Src: /src/pdns/pdns/dnspcap2protobuf.cc:131,1
    - Dst: pdns::ProtoZero::Message::setType
      Src: /src/pdns/pdns/dnspcap2protobuf.cc:133,1
    - Dst: pdns::ProtoZero::Message::setRequest
      Src: /src/pdns/pdns/dnspcap2protobuf.cc:134,1
    - Dst: pdns::ProtoZero::Message::setTime
      Src: /src/pdns/pdns/dnspcap2protobuf.cc:135,1
    - Dst: pdns::ProtoZero::Message::startResponse
      Src: /src/pdns/pdns/dnspcap2protobuf.cc:138,1
    - Dst: pdns::ProtoZero::Message::setResponseCode
      Src: /src/pdns/pdns/dnspcap2protobuf.cc:139,1
    - Dst: pdns::ProtoZero::Message::setQueryTime
      Src: /src/pdns/pdns/dnspcap2protobuf.cc:141,1
    - Dst: pdns::ProtoZero::Message::addRRsFromPacket
      Src: /src/pdns/pdns/dnspcap2protobuf.cc:145,1
    - Dst: what
      Src: /src/pdns/pdns/dnspcap2protobuf.cc:149,1
    - Dst: htons
      Src: /src/pdns/pdns/dnspcap2protobuf.cc:157,1
    - Dst: std::string::length
      Src: /src/pdns/pdns/dnspcap2protobuf.cc:157,1
    - Dst: fwrite
      Src: /src/pdns/pdns/dnspcap2protobuf.cc:158,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnspcap2protobuf.cc:158,1
    - Dst: fwrite
      Src: /src/pdns/pdns/dnspcap2protobuf.cc:159,1
    - Dst: std::string::c_str
      Src: /src/pdns/pdns/dnspcap2protobuf.cc:159,1
    - Dst: std::string::length
      Src: /src/pdns/pdns/dnspcap2protobuf.cc:159,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnspcap2protobuf.cc:159,1
    - Dst: what
      Src: /src/pdns/pdns/dnspcap2protobuf.cc:163,1
    - Dst: exit
      Src: /src/pdns/pdns/dnspcap2protobuf.cc:164,1
    - Dst: what
      Src: /src/pdns/pdns/dnspcap2protobuf.cc:168,1
    - Dst: exit
      Src: /src/pdns/pdns/dnspcap2protobuf.cc:169,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 80
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 170
      start: 46
    functionDepth: 1
    functionLinenumber: 46
    functionLinenumberEnd: 170
    functionName: main
    functionSourceFile: /src/pdns/pdns/dnspcap2protobuf.cc
    functionUses: 16
    functionsReached:
    - std::string::length
    - PcapPacketReader::getUDPPacket
    - getUniqueID
    - stringerror
    - pdns::ProtoZero::Message::startResponse
    - pdns::ProtoZero::Message::setRequest
    - pdns::ProtoZero::Message::setQueryTime
    - usage
    - fwrite
    - std::map::find
    - pdns::ProtoZero::Message::setType
    - PcapPacketReader::getDest
    - htons
    - auto::get
    - pdns::ProtoZero::Message::setTime
    - DNSName
    - std::string::clear
    - PcapPacketReader::getSource
    - exit
    - pdns::ProtoZero::Message::setResponseCode
    - std::map::end
    - atoi
    - what
    - pdns::openFileForWriting
    - std::string::c_str
    - pdns::ProtoZero::Message::addRRsFromPacket
    - DNSName::DNSName
    linkageType: ''
    returnType: int
    signature: int main(int argc, char **argv)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 49
    functionDepth: 0
    functionLinenumber: 49
    functionLinenumberEnd: 49
    functionName: AuthQueryCache::size
    functionSourceFile: /src/pdns/pdns/auth-querycache.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: size_t size()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: reserve
      Src: /src/pdns/pdns/auth-querycache.hh:61,1
    - Dst: AuthQueryCache::size
      Src: /src/pdns/pdns/auth-querycache.hh:61,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - maxEntries
    argTypes:
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 57
    functionDepth: 0
    functionLinenumber: 57
    functionLinenumberEnd: 63
    functionName: AuthQueryCache::setMaxEntries
    functionSourceFile: /src/pdns/pdns/auth-querycache.hh
    functionUses: 0
    functionsReached:
    - reserve
    - AuthQueryCache::size
    linkageType: ''
    returnType: void
    signature: void setMaxEntries(uint64_t maxEntries)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - log
    argTypes:
    - Logr::log_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 65
    functionDepth: 0
    functionLinenumber: 65
    functionLinenumberEnd: 65
    functionName: AuthQueryCache::setSLog
    functionSourceFile: /src/pdns/pdns/auth-querycache.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setSLog(Logr::log_t log)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 98
    functionDepth: 0
    functionLinenumber: 98
    functionLinenumberEnd: 98
    functionName: AuthQueryCache::MapCombo
    functionSourceFile: /src/pdns/pdns/auth-querycache.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void MapCombo()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 99
    functionDepth: 0
    functionLinenumber: 99
    functionLinenumberEnd: 99
    functionName: ~MapCombo()
    functionSourceFile: /src/pdns/pdns/auth-querycache.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~MapCombo()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 100
    functionDepth: 0
    functionLinenumber: 100
    functionLinenumberEnd: 100
    functionName: AuthQueryCache::MapCombo
    functionSourceFile: /src/pdns/pdns/auth-querycache.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void MapCombo(const MapCombo &)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 101
    functionDepth: 0
    functionLinenumber: 101
    functionLinenumberEnd: 101
    functionName: '& operator=(const MapCombo &)'
    functionSourceFile: /src/pdns/pdns/auth-querycache.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: MapCombo
    signature: MapCombo & operator=(const MapCombo &)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash
      Src: /src/pdns/pdns/auth-querycache.hh:111,1
    - Dst: size
      Src: /src/pdns/pdns/auth-querycache.hh:111,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' qname'
    argTypes:
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 112
      start: 109
    functionDepth: 1
    functionLinenumber: 109
    functionLinenumberEnd: 112
    functionName: '& getMap(const DNSName& qname)'
    functionSourceFile: /src/pdns/pdns/auth-querycache.hh
    functionUses: 0
    functionsReached:
    - hash
    - size
    linkageType: ''
    returnType: MapCombo
    signature: MapCombo & getMap(const DNSName& qname)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 44
    functionDepth: 0
    functionLinenumber: 44
    functionLinenumberEnd: 47
    functionName: ZoneParserTNG::disableGenerate
    functionSourceFile: /src/pdns/pdns/zoneparser-tng.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void disableGenerate()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - max
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 48
    functionDepth: 0
    functionLinenumber: 48
    functionLinenumberEnd: 51
    functionName: ZoneParserTNG::setMaxGenerateSteps
    functionSourceFile: /src/pdns/pdns/zoneparser-tng.hh
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setMaxGenerateSteps(size_t max)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - max
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 52
    functionDepth: 0
    functionLinenumber: 52
    functionLinenumberEnd: 55
    functionName: ZoneParserTNG::setMaxIncludes
    functionSourceFile: /src/pdns/pdns/zoneparser-tng.hh
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setMaxIncludes(size_t max)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ttl
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 56
    functionDepth: 0
    functionLinenumber: 56
    functionLinenumberEnd: 60
    functionName: ZoneParserTNG::setDefaultTTL
    functionSourceFile: /src/pdns/pdns/zoneparser-tng.hh
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setDefaultTTL(int ttl)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 61
    functionDepth: 0
    functionLinenumber: 61
    functionLinenumberEnd: 61
    functionName: ZoneParserTNG::getFileset
    functionSourceFile: /src/pdns/pdns/zoneparser-tng.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::vector<std::pair<std::string, time_t>>
    signature: std::vector<std::pair<std::string, time_t>> getFileset() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/zoneparser-tng.hh:70,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - fp
    - filename
    argTypes:
    - FILE*
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 69
    functionDepth: 0
    functionLinenumber: 69
    functionLinenumberEnd: 70
    functionName: ZoneParserTNG::filestate
    functionSourceFile: /src/pdns/pdns/zoneparser-tng.hh
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void filestate(FILE* fp, string filename)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: load
      Src: /src/pdns/pdns/dumresp.cc:39,1
    - Dst: sleep
      Src: /src/pdns/pdns/dumresp.cc:41,1
    - Dst: load
      Src: /src/pdns/pdns/dumresp.cc:42,1
    - Dst: load
      Src: /src/pdns/pdns/dumresp.cc:42,1
    - Dst: load
      Src: /src/pdns/pdns/dumresp.cc:43,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 37
    functionDepth: 0
    functionLinenumber: 37
    functionLinenumberEnd: 45
    functionName: printStatus
    functionSourceFile: /src/pdns/pdns/dumresp.cc
    functionUses: 0
    functionsReached:
    - load
    - sleep
    linkageType: ''
    returnType: void
    signature: void printStatus()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 47
    functionDepth: 0
    functionLinenumber: 47
    functionLinenumberEnd: 49
    functionName: usage
    functionSourceFile: /src/pdns/pdns/dumresp.cc
    functionUses: 92
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void usage()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - dh
    argTypes:
    - dnsheader*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 51
    functionDepth: 0
    functionLinenumber: 51
    functionLinenumberEnd: 57
    functionName: turnQueryIntoResponse
    functionSourceFile: /src/pdns/pdns/dumresp.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void turnQueryIntoResponse(dnsheader* dh)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: reinterpret_cast<struct dnsheader*>
      Src: /src/pdns/pdns/dumresp.cc:63,1
    - Dst: read
      Src: /src/pdns/pdns/dumresp.cc:67,1
    - Dst: unixDie
      Src: /src/pdns/pdns/dumresp.cc:74,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dumresp.cc:76,1
    - Dst: unixDie
      Src: /src/pdns/pdns/dumresp.cc:79,1
    - Dst: unixDie
      Src: /src/pdns/pdns/dumresp.cc:82,1
    - Dst: read
      Src: /src/pdns/pdns/dumresp.cc:84,1
    - Dst: unixDie
      Src: /src/pdns/pdns/dumresp.cc:86,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dumresp.cc:86,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dumresp.cc:86,1
    - Dst: turnQueryIntoResponse
      Src: /src/pdns/pdns/dumresp.cc:91,1
    - Dst: htons
      Src: /src/pdns/pdns/dumresp.cc:93,1
    - Dst: write
      Src: /src/pdns/pdns/dumresp.cc:94,1
    - Dst: unixDie
      Src: /src/pdns/pdns/dumresp.cc:95,1
    - Dst: write
      Src: /src/pdns/pdns/dumresp.cc:97,1
    - Dst: unixDie
      Src: /src/pdns/pdns/dumresp.cc:98,1
    - Dst: close
      Src: /src/pdns/pdns/dumresp.cc:101,1
    - Dst: what
      Src: /src/pdns/pdns/dumresp.cc:104,1
    - Dst: close
      Src: /src/pdns/pdns/dumresp.cc:105,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 28
    argCount: 1
    argNames:
    - sock
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 59
    functionDepth: 1
    functionLinenumber: 59
    functionLinenumberEnd: 106
    functionName: tcpConnectionHandler
    functionSourceFile: /src/pdns/pdns/dumresp.cc
    functionUses: 0
    functionsReached:
    - read
    - std::to_string
    - ntohs
    - unixDie
    - turnQueryIntoResponse
    - what
    - write
    - reinterpret_cast<struct dnsheader*>
    - close
    - htons
    linkageType: ''
    returnType: void
    signature: void tcpConnectionHandler(int sock)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: setReusePort
      Src: /src/pdns/pdns/dumresp.cc:111,1
    - Dst: Socket::getHandle
      Src: /src/pdns/pdns/dumresp.cc:111,1
    - Dst: Socket::bind
      Src: /src/pdns/pdns/dumresp.cc:112,1
    - Dst: Socket::listen
      Src: /src/pdns/pdns/dumresp.cc:113,1
    - Dst: ComboAddress::getSocklen
      Src: /src/pdns/pdns/dumresp.cc:116,1
    - Dst: accept
      Src: /src/pdns/pdns/dumresp.cc:119,1
    - Dst: Socket::getHandle
      Src: /src/pdns/pdns/dumresp.cc:119,1
    - Dst: reinterpret_cast<struct sockaddr*>
      Src: /src/pdns/pdns/dumresp.cc:119,1
    - Dst: std::thread::detach
      Src: /src/pdns/pdns/dumresp.cc:125,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - local
    argTypes:
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 127
      start: 108
    functionDepth: 0
    functionLinenumber: 108
    functionLinenumberEnd: 127
    functionName: tcpAcceptor
    functionSourceFile: /src/pdns/pdns/dumresp.cc
    functionUses: 0
    functionsReached:
    - Socket::getHandle
    - accept
    - std::thread::detach
    - setReusePort
    - Socket::listen
    - Socket::bind
    - ComboAddress::getSocklen
    - reinterpret_cast<struct sockaddr*>
    linkageType: ''
    returnType: void
    signature: void tcpAcceptor(const ComboAddress local)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: std::string
      Src: /src/pdns/pdns/dumresp.cc:135,1
    - Dst: usage
      Src: /src/pdns/pdns/dumresp.cc:136,1
    - Dst: std::string
      Src: /src/pdns/pdns/dumresp.cc:140,1
    - Dst: std::string
      Src: /src/pdns/pdns/dumresp.cc:147,1
    - Dst: usage
      Src: /src/pdns/pdns/dumresp.cc:151,1
    - Dst: exit
      Src: /src/pdns/pdns/dumresp.cc:152,1
    - Dst: usage
      Src: /src/pdns/pdns/dumresp.cc:156,1
    - Dst: exit
      Src: /src/pdns/pdns/dumresp.cc:157,1
    - Dst: mmap
      Src: /src/pdns/pdns/dumresp.cc:160,1
    - Dst: std::atomic<uint64_t>::atomic<uint64_t>
      Src: /src/pdns/pdns/dumresp.cc:163,1
    - Dst: atoi
      Src: /src/pdns/pdns/dumresp.cc:165,1
    - Dst: fork
      Src: /src/pdns/pdns/dumresp.cc:170,1
    - Dst: std::thread::detach
      Src: /src/pdns/pdns/dumresp.cc:176,1
    - Dst: ComboAddress::toStringWithPort
      Src: /src/pdns/pdns/dumresp.cc:180,1
    - Dst: std::thread::detach
      Src: /src/pdns/pdns/dumresp.cc:182,1
    - Dst: setReusePort
      Src: /src/pdns/pdns/dumresp.cc:188,1
    - Dst: Socket::getHandle
      Src: /src/pdns/pdns/dumresp.cc:188,1
    - Dst: Socket::bind
      Src: /src/pdns/pdns/dumresp.cc:189,1
    - Dst: ComboAddress::toStringWithPort
      Src: /src/pdns/pdns/dumresp.cc:190,1
    - Dst: ComboAddress::getSocklen
      Src: /src/pdns/pdns/dumresp.cc:193,1
    - Dst: reinterpret_cast<struct dnsheader*>
      Src: /src/pdns/pdns/dumresp.cc:195,1
    - Dst: recvfrom
      Src: /src/pdns/pdns/dumresp.cc:198,1
    - Dst: Socket::getHandle
      Src: /src/pdns/pdns/dumresp.cc:198,1
    - Dst: reinterpret_cast<struct sockaddr*>
      Src: /src/pdns/pdns/dumresp.cc:198,1
    - Dst: unixDie
      Src: /src/pdns/pdns/dumresp.cc:201,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/dumresp.cc:203,1
    - Dst: unixDie
      Src: /src/pdns/pdns/dumresp.cc:204,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dumresp.cc:204,1
    - Dst: turnQueryIntoResponse
      Src: /src/pdns/pdns/dumresp.cc:209,1
    - Dst: sendto
      Src: /src/pdns/pdns/dumresp.cc:211,1
    - Dst: Socket::getHandle
      Src: /src/pdns/pdns/dumresp.cc:211,1
    - Dst: reinterpret_cast<const struct sockaddr*>
      Src: /src/pdns/pdns/dumresp.cc:211,1
    - Dst: unixDie
      Src: /src/pdns/pdns/dumresp.cc:212,1
    - Dst: what
      Src: /src/pdns/pdns/dumresp.cc:217,1
    - Dst: exit
      Src: /src/pdns/pdns/dumresp.cc:218,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 55
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 219
      start: 129
    functionDepth: 1
    functionLinenumber: 129
    functionLinenumberEnd: 219
    functionName: main
    functionSourceFile: /src/pdns/pdns/dumresp.cc
    functionUses: 16
    functionsReached:
    - std::to_string
    - reinterpret_cast<const struct sockaddr*>
    - setReusePort
    - std::string
    - reinterpret_cast<struct dnsheader*>
    - std::atomic<uint64_t>::atomic<uint64_t>
    - ComboAddress::getSocklen
    - reinterpret_cast<struct sockaddr*>
    - static_cast<size_t>
    - unixDie
    - recvfrom
    - usage
    - turnQueryIntoResponse
    - mmap
    - fork
    - exit
    - ComboAddress::toStringWithPort
    - Socket::getHandle
    - atoi
    - what
    - std::thread::detach
    - sendto
    - Socket::bind
    linkageType: ''
    returnType: int
    signature: int main(int argc, char** argv)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ArgvMap::ArgvMap
      Src: /src/pdns/pdns/ixplore.cc:47,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 45
    functionDepth: 0
    functionLinenumber: 45
    functionLinenumberEnd: 49
    functionName: arg
    functionSourceFile: /src/pdns/pdns/ixplore.cc
    functionUses: 31
    functionsReached:
    - ArgvMap::ArgvMap
    linkageType: ''
    returnType: ArgvMap
    signature: ArgvMap &arg()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 51
    functionDepth: 0
    functionLinenumber: 51
    functionLinenumberEnd: 54
    functionName: usage
    functionSourceFile: /src/pdns/pdns/ixplore.cc
    functionUses: 93
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void usage()
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: usage
      Src: /src/pdns/pdns/ixplore.cc:60,1
    - Dst: reportAllTypes
      Src: /src/pdns/pdns/ixplore.cc:70,1
    - Dst: usage
      Src: /src/pdns/pdns/ixplore.cc:73,1
    - Dst: exit
      Src: /src/pdns/pdns/ixplore.cc:74,1
    - Dst: loadZoneFromDisk
      Src: /src/pdns/pdns/ixplore.cc:81,1
    - Dst: records_t::size
      Src: /src/pdns/pdns/ixplore.cc:82,1
    - Dst: loadZoneFromDisk
      Src: /src/pdns/pdns/ixplore.cc:85,1
    - Dst: size
      Src: /src/pdns/pdns/ixplore.cc:86,1
    - Dst: set_difference
      Src: /src/pdns/pdns/ixplore.cc:91,1
    - Dst: records_t::cbegin
      Src: /src/pdns/pdns/ixplore.cc:91,1
    - Dst: records_t::cend
      Src: /src/pdns/pdns/ixplore.cc:91,1
    - Dst: cbegin
      Src: /src/pdns/pdns/ixplore.cc:91,1
    - Dst: cend
      Src: /src/pdns/pdns/ixplore.cc:91,1
    - Dst: back_inserter
      Src: /src/pdns/pdns/ixplore.cc:91,1
    - Dst: records_t::value_comp
      Src: /src/pdns/pdns/ixplore.cc:91,1
    - Dst: DNSRecordContent::NumberToType
      Src: /src/pdns/pdns/ixplore.cc:93,1
    - Dst: getContent
      Src: /src/pdns/pdns/ixplore.cc:93,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/ixplore.cc:95,1
    - Dst: set_difference
      Src: /src/pdns/pdns/ixplore.cc:96,1
    - Dst: cbegin
      Src: /src/pdns/pdns/ixplore.cc:96,1
    - Dst: cend
      Src: /src/pdns/pdns/ixplore.cc:96,1
    - Dst: records_t::cbegin
      Src: /src/pdns/pdns/ixplore.cc:96,1
    - Dst: records_t::cend
      Src: /src/pdns/pdns/ixplore.cc:96,1
    - Dst: back_inserter
      Src: /src/pdns/pdns/ixplore.cc:96,1
    - Dst: records_t::value_comp
      Src: /src/pdns/pdns/ixplore.cc:96,1
    - Dst: DNSRecordContent::NumberToType
      Src: /src/pdns/pdns/ixplore.cc:98,1
    - Dst: getContent
      Src: /src/pdns/pdns/ixplore.cc:98,1
    - Dst: exit
      Src: /src/pdns/pdns/ixplore.cc:100,1
    - Dst: getSerialFromDir
      Src: /src/pdns/pdns/ixplore.cc:120,1
    - Dst: DNSName
      Src: /src/pdns/pdns/ixplore.cc:126,1
    - Dst: toLower
      Src: /src/pdns/pdns/ixplore.cc:126,1
    - Dst: DNSName
      Src: /src/pdns/pdns/ixplore.cc:128,1
    - Dst: toLower
      Src: /src/pdns/pdns/ixplore.cc:128,1
    - Dst: B64Decode
      Src: /src/pdns/pdns/ixplore.cc:131,1
    - Dst: exit
      Src: /src/pdns/pdns/ixplore.cc:133,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/ixplore.cc:139,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/ixplore.cc:140,1
    - Dst: loadZoneFromDisk
      Src: /src/pdns/pdns/ixplore.cc:142,1
    - Dst: records_t::size
      Src: /src/pdns/pdns/ixplore.cc:143,1
    - Dst: what
      Src: /src/pdns/pdns/ixplore.cc:147,1
    - Dst: ComboAddress::toStringWithPort
      Src: /src/pdns/pdns/ixplore.cc:148,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/ixplore.cc:149,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/ixplore.cc:149,1
    - Dst: AXFRRetriever::getChunk
      Src: /src/pdns/pdns/ixplore.cc:157,1
    - Dst: d_name::makeUsRelative
      Src: /src/pdns/pdns/ixplore.cc:161,1
    - Dst: records_t::insert
      Src: /src/pdns/pdns/ixplore.cc:162,1
    - Dst: time
      Src: /src/pdns/pdns/ixplore.cc:166,1
    - Dst: flush
      Src: /src/pdns/pdns/ixplore.cc:169,1
    - Dst: time
      Src: /src/pdns/pdns/ixplore.cc:170,1
    - Dst: writeZoneToDisk
      Src: /src/pdns/pdns/ixplore.cc:175,1
    - Dst: DNSRecord::DNSRecord
      Src: /src/pdns/pdns/ixplore.cc:179,1
    - Dst: getSerialFromRecords
      Src: /src/pdns/pdns/ixplore.cc:180,1
    - Dst: flush
      Src: /src/pdns/pdns/ixplore.cc:183,1
    - Dst: getSerialFromPrimary
      Src: /src/pdns/pdns/ixplore.cc:185,1
    - Dst: sleep
      Src: /src/pdns/pdns/ixplore.cc:189,1
    - Dst: getIXFRDeltas
      Src: /src/pdns/pdns/ixplore.cc:194,1
    - Dst: auto::size
      Src: /src/pdns/pdns/ixplore.cc:195,1
    - Dst: getSerialFromRecords
      Src: /src/pdns/pdns/ixplore.cc:202,1
    - Dst: getRR
      Src: /src/pdns/pdns/ixplore.cc:206,1
    - Dst: size
      Src: /src/pdns/pdns/ixplore.cc:210,1
    - Dst: size
      Src: /src/pdns/pdns/ixplore.cc:210,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/ixplore.cc:211,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/ixplore.cc:211,1
    - Dst: empty
      Src: /src/pdns/pdns/ixplore.cc:212,1
    - Dst: records_t::clear
      Src: /src/pdns/pdns/ixplore.cc:215,1
    - Dst: DNSRecordContent::NumberToType
      Src: /src/pdns/pdns/ixplore.cc:221,1
    - Dst: getContent
      Src: /src/pdns/pdns/ixplore.cc:221,1
    - Dst: records_t::equal_range
      Src: /src/pdns/pdns/ixplore.cc:222,1
    - Dst: std::tie
      Src: /src/pdns/pdns/ixplore.cc:222,1
    - Dst: getContent
      Src: /src/pdns/pdns/ixplore.cc:222,1
    - Dst: ofstream::flush
      Src: /src/pdns/pdns/ixplore.cc:226,1
    - Dst: records_t::erase
      Src: /src/pdns/pdns/ixplore.cc:228,1
    - Dst: DNSRecordContent::NumberToType
      Src: /src/pdns/pdns/ixplore.cc:232,1
    - Dst: getContent
      Src: /src/pdns/pdns/ixplore.cc:232,1
    - Dst: records_t::insert
      Src: /src/pdns/pdns/ixplore.cc:233,1
    - Dst: ofstream::flush
      Src: /src/pdns/pdns/ixplore.cc:237,1
    - Dst: exit
      Src: /src/pdns/pdns/ixplore.cc:238,1
    - Dst: flush
      Src: /src/pdns/pdns/ixplore.cc:241,1
    - Dst: writeZoneToDisk
      Src: /src/pdns/pdns/ixplore.cc:242,1
    - Dst: what
      Src: /src/pdns/pdns/ixplore.cc:251,1
    CyclomaticComplexity: 33
    EdgeCount: 33
    ICount: 124
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 257
      start: 56
    functionDepth: 1
    functionLinenumber: 56
    functionLinenumberEnd: 257
    functionName: main
    functionSourceFile: /src/pdns/pdns/ixplore.cc
    functionUses: 16
    functionsReached:
    - records_t::value_comp
    - std::to_string
    - DNSRecord::DNSRecord
    - getIXFRDeltas
    - records_t::clear
    - records_t::insert
    - records_t::size
    - records_t::erase
    - records_t::equal_range
    - auto::size
    - reportAllTypes
    - time
    - getSerialFromPrimary
    - B64Decode
    - size
    - cbegin
    - usage
    - std::tie
    - cend
    - DNSRecordContent::NumberToType
    - empty
    - vector::clear
    - back_inserter
    - ofstream::flush
    - std::runtime_error
    - toLower
    - sleep
    - getSerialFromRecords
    - DNSName
    - records_t::cbegin
    - getSerialFromDir
    - records_t::cend
    - exit
    - d_name::makeUsRelative
    - flush
    - ComboAddress::toStringWithPort
    - ComboAddress
    - getRR
    - writeZoneToDisk
    - AXFRRetriever::getChunk
    - what
    - loadZoneFromDisk
    - getContent
    - set_difference
    linkageType: ''
    returnType: int
    signature: int main(int argc, char** argv)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ArgvMap::begin
      Src: /src/pdns/pdns/arguments.cc:40,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 38
    functionDepth: 0
    functionLinenumber: 38
    functionLinenumberEnd: 41
    functionName: ArgvMap::begin
    functionSourceFile: /src/pdns/pdns/arguments.cc
    functionUses: 1
    functionsReached:
    - ArgvMap::begin
    linkageType: ''
    returnType: ArgvMap::param_t::const_iterator
    signature: ArgvMap::param_t::const_iterator ArgvMap::begin()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ArgvMap::end
      Src: /src/pdns/pdns/arguments.cc:45,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 46
    functionName: ArgvMap::end
    functionSourceFile: /src/pdns/pdns/arguments.cc
    functionUses: 1
    functionsReached:
    - ArgvMap::end
    linkageType: ''
    returnType: ArgvMap::param_t::const_iterator
    signature: ArgvMap::param_t::const_iterator ArgvMap::end()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' var'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 48
    functionDepth: 0
    functionLinenumber: 48
    functionLinenumberEnd: 51
    functionName: '& ArgvMap::set(const string& var)'
    functionSourceFile: /src/pdns/pdns/arguments.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: string
    signature: string & ArgvMap::set(const string& var)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: count
      Src: /src/pdns/pdns/arguments.cc:55,1
    - Dst: insert
      Src: /src/pdns/pdns/arguments.cc:56,1
    - Dst: pair<string, string>
      Src: /src/pdns/pdns/arguments.cc:56,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - ' var'
    - ' value'
    argTypes:
    - string
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 53
    functionDepth: 1
    functionLinenumber: 53
    functionLinenumberEnd: 58
    functionName: ArgvMap::setDefault
    functionSourceFile: /src/pdns/pdns/arguments.cc
    functionUses: 0
    functionsReached:
    - pair<string, string>
    - insert
    - count
    linkageType: ''
    returnType: void
    signature: void ArgvMap::setDefault(const string& var, const string& value)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: count
      Src: /src/pdns/pdns/arguments.cc:63,1
    - Dst: insert
      Src: /src/pdns/pdns/arguments.cc:64,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 60
    functionDepth: 1
    functionLinenumber: 60
    functionLinenumberEnd: 67
    functionName: ArgvMap::setDefaults
    functionSourceFile: /src/pdns/pdns/arguments.cc
    functionUses: 0
    functionsReached:
    - insert
    - count
    linkageType: ''
    returnType: void
    signature: void ArgvMap::setDefaults()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - ' var'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 69
    functionDepth: 0
    functionLinenumber: 69
    functionLinenumberEnd: 72
    functionName: ArgvMap::mustDo
    functionSourceFile: /src/pdns/pdns/arguments.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool ArgvMap::mustDo(const string& var)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vector::reserve
      Src: /src/pdns/pdns/arguments.cc:77,1
    - Dst: size
      Src: /src/pdns/pdns/arguments.cc:77,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/arguments.cc:79,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 74
    functionDepth: 0
    functionLinenumber: 74
    functionLinenumberEnd: 82
    functionName: ArgvMap::list
    functionSourceFile: /src/pdns/pdns/arguments.cc
    functionUses: 0
    functionsReached:
    - vector::reserve
    - vector::push_back
    - size
    linkageType: ''
    returnType: vector<string>
    signature: vector<string> ArgvMap::list()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: set
      Src: /src/pdns/pdns/arguments.cc:88,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - ' var'
    - ' help'
    argTypes:
    - string
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 84
    functionDepth: 0
    functionLinenumber: 84
    functionLinenumberEnd: 89
    functionName: '& ArgvMap::set(const string& var, const string& help)'
    functionSourceFile: /src/pdns/pdns/arguments.cc
    functionUses: 0
    functionsReached:
    - set
    linkageType: ''
    returnType: string
    signature: string & ArgvMap::set(const string& var, const string& help)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: set
      Src: /src/pdns/pdns/arguments.cc:95,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - ' var'
    - ' help'
    argTypes:
    - string
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 91
    functionDepth: 0
    functionLinenumber: 91
    functionLinenumberEnd: 96
    functionName: ArgvMap::setCmd
    functionSourceFile: /src/pdns/pdns/arguments.cc
    functionUses: 0
    functionsReached:
    - set
    linkageType: ''
    returnType: void
    signature: void ArgvMap::setCmd(const string& var, const string& help)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: set
      Src: /src/pdns/pdns/arguments.cc:102,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - ' var'
    - ' help'
    argTypes:
    - string
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 98
    functionDepth: 0
    functionLinenumber: 98
    functionLinenumberEnd: 103
    functionName: '& ArgvMap::setSwitch(const string& var, const string& help)'
    functionSourceFile: /src/pdns/pdns/arguments.cc
    functionUses: 0
    functionsReached:
    - set
    linkageType: ''
    returnType: string
    signature: string & ArgvMap::setSwitch(const string& var, const string& help)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: find
      Src: /src/pdns/pdns/arguments.cc:107,1
    - Dst: ArgvMap::end
      Src: /src/pdns/pdns/arguments.cc:108,1
    - Dst: second::empty
      Src: /src/pdns/pdns/arguments.cc:108,1
    - Dst: stringtok
      Src: /src/pdns/pdns/arguments.cc:113,1
    - Dst: std::find
      Src: /src/pdns/pdns/arguments.cc:114,1
    - Dst: vector::begin
      Src: /src/pdns/pdns/arguments.cc:114,1
    - Dst: vector::end
      Src: /src/pdns/pdns/arguments.cc:114,1
    - Dst: vector::end
      Src: /src/pdns/pdns/arguments.cc:114,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - ' var'
    - ' val'
    argTypes:
    - string
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 115
      start: 105
    functionDepth: 0
    functionLinenumber: 105
    functionLinenumberEnd: 115
    functionName: ArgvMap::contains
    functionSourceFile: /src/pdns/pdns/arguments.cc
    functionUses: 0
    functionsReached:
    - vector::begin
    - stringtok
    - ArgvMap::end
    - vector::end
    - std::find
    - second::empty
    - find
    linkageType: ''
    returnType: bool
    signature: bool ArgvMap::contains(const string& var, const string& val)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: string::empty
      Src: /src/pdns/pdns/arguments.cc:126,1
    - Dst: first::find
      Src: /src/pdns/pdns/arguments.cc:126,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 21
    argCount: 1
    argNames:
    - prefix
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 148
      start: 117
    functionDepth: 0
    functionLinenumber: 117
    functionLinenumberEnd: 148
    functionName: ArgvMap::helpstring
    functionSourceFile: /src/pdns/pdns/arguments.cc
    functionUses: 0
    functionsReached:
    - first::find
    - string::empty
    linkageType: ''
    returnType: string
    signature: string ArgvMap::helpstring(string prefix)
  - BBCount: 6
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 25
    argCount: 6
    argNames:
    - running
    - full
    - ' var'
    - ' help'
    - ' theDefault'
    - ' current'
    argTypes:
    - bool
    - bool
    - string
    - string
    - string
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 183
      start: 150
    functionDepth: 0
    functionLinenumber: 150
    functionLinenumberEnd: 183
    functionName: ArgvMap::formatOne
    functionSourceFile: /src/pdns/pdns/arguments.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: string
    signature: string ArgvMap::formatOne(bool running, bool full, const string& var,
      const string& help, const string& theDefault, const string& current)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: nowTime
      Src: /src/pdns/pdns/arguments.cc:191,1
    - Dst: ArgvMap::formatOne
      Src: /src/pdns/pdns/arguments.cc:198,1
    - Dst: count
      Src: /src/pdns/pdns/arguments.cc:208,1
    - Dst: ArgException
      Src: /src/pdns/pdns/arguments.cc:209,1
    - Dst: string
      Src: /src/pdns/pdns/arguments.cc:209,1
    - Dst: ArgvMap::formatOne
      Src: /src/pdns/pdns/arguments.cc:212,1
    - Dst: ArgvMap::formatOne
      Src: /src/pdns/pdns/arguments.cc:217,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 23
    argCount: 2
    argNames:
    - running
    - full
    argTypes:
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 222
      start: 186
    functionDepth: 0
    functionLinenumber: 186
    functionLinenumberEnd: 222
    functionName: ArgvMap::configstring
    functionSourceFile: /src/pdns/pdns/arguments.cc
    functionUses: 0
    functionsReached:
    - nowTime
    - count
    - string
    - ArgvMap::formatOne
    - ArgException
    linkageType: ''
    returnType: string
    signature: string ArgvMap::configstring(bool running, bool full)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: parmIsset
      Src: /src/pdns/pdns/arguments.cc:226,1
    - Dst: ArgException
      Src: /src/pdns/pdns/arguments.cc:227,1
    - Dst: string
      Src: /src/pdns/pdns/arguments.cc:227,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - ' arg'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 231
      start: 224
    functionDepth: 0
    functionLinenumber: 224
    functionLinenumberEnd: 231
    functionName: '& ArgvMap::operator[](const string& arg)'
    functionSourceFile: /src/pdns/pdns/arguments.cc
    functionUses: 0
    functionsReached:
    - parmIsset
    - string
    - ArgException
    linkageType: ''
    returnType: string
    signature: string & ArgvMap::operator[](const string& arg)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ArgvMap::parmIsset
      Src: /src/pdns/pdns/arguments.cc:235,1
    - Dst: ArgException
      Src: /src/pdns/pdns/arguments.cc:236,1
    - Dst: string
      Src: /src/pdns/pdns/arguments.cc:236,1
    - Dst: c_str
      Src: /src/pdns/pdns/arguments.cc:239,1
    - Dst: static_cast<mode_t>
      Src: /src/pdns/pdns/arguments.cc:242,1
    - Dst: strtol
      Src: /src/pdns/pdns/arguments.cc:242,1
    - Dst: ArgException
      Src: /src/pdns/pdns/arguments.cc:244,1
    - Dst: string
      Src: /src/pdns/pdns/arguments.cc:244,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 8
    argCount: 1
    argNames:
    - ' arg'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 247
      start: 233
    functionDepth: 0
    functionLinenumber: 233
    functionLinenumberEnd: 247
    functionName: ArgvMap::asMode
    functionSourceFile: /src/pdns/pdns/arguments.cc
    functionUses: 0
    functionsReached:
    - static_cast<mode_t>
    - ArgvMap::parmIsset
    - strtol
    - string
    - ArgException
    - c_str
    linkageType: ''
    returnType: mode_t
    signature: mode_t ArgvMap::asMode(const string& arg)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ArgvMap::parmIsset
      Src: /src/pdns/pdns/arguments.cc:251,1
    - Dst: ArgException
      Src: /src/pdns/pdns/arguments.cc:252,1
    - Dst: string
      Src: /src/pdns/pdns/arguments.cc:252,1
    - Dst: c_str
      Src: /src/pdns/pdns/arguments.cc:255,1
    - Dst: static_cast<gid_t>
      Src: /src/pdns/pdns/arguments.cc:257,1
    - Dst: strtol
      Src: /src/pdns/pdns/arguments.cc:257,1
    - Dst: getgrnam
      Src: /src/pdns/pdns/arguments.cc:261,1
    - Dst: c_str
      Src: /src/pdns/pdns/arguments.cc:261,1
    - Dst: ArgException
      Src: /src/pdns/pdns/arguments.cc:263,1
    - Dst: string
      Src: /src/pdns/pdns/arguments.cc:263,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 11
    argCount: 1
    argNames:
    - ' arg'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 268
      start: 249
    functionDepth: 0
    functionLinenumber: 249
    functionLinenumberEnd: 268
    functionName: ArgvMap::asGid
    functionSourceFile: /src/pdns/pdns/arguments.cc
    functionUses: 0
    functionsReached:
    - ArgvMap::parmIsset
    - strtol
    - string
    - ArgException
    - getgrnam
    - static_cast<gid_t>
    - c_str
    linkageType: ''
    returnType: gid_t
    signature: gid_t ArgvMap::asGid(const string& arg)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ArgvMap::parmIsset
      Src: /src/pdns/pdns/arguments.cc:272,1
    - Dst: ArgException
      Src: /src/pdns/pdns/arguments.cc:273,1
    - Dst: string
      Src: /src/pdns/pdns/arguments.cc:273,1
    - Dst: c_str
      Src: /src/pdns/pdns/arguments.cc:276,1
    - Dst: static_cast<uid_t>
      Src: /src/pdns/pdns/arguments.cc:279,1
    - Dst: strtol
      Src: /src/pdns/pdns/arguments.cc:279,1
    - Dst: getpwnam
      Src: /src/pdns/pdns/arguments.cc:282,1
    - Dst: c_str
      Src: /src/pdns/pdns/arguments.cc:282,1
    - Dst: ArgException
      Src: /src/pdns/pdns/arguments.cc:284,1
    - Dst: string
      Src: /src/pdns/pdns/arguments.cc:284,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 11
    argCount: 1
    argNames:
    - ' arg'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 289
      start: 270
    functionDepth: 0
    functionLinenumber: 270
    functionLinenumberEnd: 289
    functionName: ArgvMap::asUid
    functionSourceFile: /src/pdns/pdns/arguments.cc
    functionUses: 0
    functionsReached:
    - getpwnam
    - ArgvMap::parmIsset
    - strtol
    - string
    - ArgException
    - c_str
    - static_cast<uid_t>
    linkageType: ''
    returnType: uid_t
    signature: uid_t ArgvMap::asUid(const string& arg)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ArgvMap::parmIsset
      Src: /src/pdns/pdns/arguments.cc:293,1
    - Dst: ArgException
      Src: /src/pdns/pdns/arguments.cc:294,1
    - Dst: string
      Src: /src/pdns/pdns/arguments.cc:294,1
    - Dst: empty
      Src: /src/pdns/pdns/arguments.cc:298,1
    - Dst: c_str
      Src: /src/pdns/pdns/arguments.cc:302,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/arguments.cc:304,1
    - Dst: strtol
      Src: /src/pdns/pdns/arguments.cc:304,1
    - Dst: ArgException
      Src: /src/pdns/pdns/arguments.cc:306,1
    - Dst: string
      Src: /src/pdns/pdns/arguments.cc:306,1
    - Dst: string
      Src: /src/pdns/pdns/arguments.cc:306,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 11
    argCount: 2
    argNames:
    - ' arg'
    - def
    argTypes:
    - string
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 310
      start: 291
    functionDepth: 0
    functionLinenumber: 291
    functionLinenumberEnd: 310
    functionName: ArgvMap::asNum
    functionSourceFile: /src/pdns/pdns/arguments.cc
    functionUses: 0
    functionsReached:
    - ArgvMap::parmIsset
    - strtol
    - c_str
    - string
    - ArgException
    - empty
    - static_cast<int>
    linkageType: ''
    returnType: int
    signature: int ArgvMap::asNum(const string& arg, int def)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ArgvMap::parmIsset
      Src: /src/pdns/pdns/arguments.cc:314,1
    - Dst: empty
      Src: /src/pdns/pdns/arguments.cc:317,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ' arg'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 318
      start: 312
    functionDepth: 0
    functionLinenumber: 312
    functionLinenumberEnd: 318
    functionName: ArgvMap::isEmpty
    functionSourceFile: /src/pdns/pdns/arguments.cc
    functionUses: 0
    functionsReached:
    - empty
    - ArgvMap::parmIsset
    linkageType: ''
    returnType: bool
    signature: bool ArgvMap::isEmpty(const string& arg)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ArgvMap::parmIsset
      Src: /src/pdns/pdns/arguments.cc:322,1
    - Dst: ArgException
      Src: /src/pdns/pdns/arguments.cc:323,1
    - Dst: string
      Src: /src/pdns/pdns/arguments.cc:323,1
    - Dst: empty
      Src: /src/pdns/pdns/arguments.cc:326,1
    - Dst: c_str
      Src: /src/pdns/pdns/arguments.cc:330,1
    - Dst: strtod
      Src: /src/pdns/pdns/arguments.cc:332,1
    - Dst: ArgException
      Src: /src/pdns/pdns/arguments.cc:335,1
    - Dst: string
      Src: /src/pdns/pdns/arguments.cc:335,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 11
    argCount: 1
    argNames:
    - ' arg'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 339
      start: 320
    functionDepth: 0
    functionLinenumber: 320
    functionLinenumberEnd: 339
    functionName: ArgvMap::asDouble
    functionSourceFile: /src/pdns/pdns/arguments.cc
    functionUses: 0
    functionsReached:
    - ArgvMap::parmIsset
    - c_str
    - string
    - ArgException
    - empty
    - strtod
    linkageType: ''
    returnType: double
    signature: double ArgvMap::asDouble(const string& arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: set
      Src: /src/pdns/pdns/arguments.cc:343,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 344
      start: 341
    functionDepth: 0
    functionLinenumber: 341
    functionLinenumberEnd: 344
    functionName: ArgvMap::ArgvMap
    functionSourceFile: /src/pdns/pdns/arguments.cc
    functionUses: 6
    functionsReached:
    - set
    linkageType: ''
    returnType: void
    signature: void ArgvMap::ArgvMap()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: find
      Src: /src/pdns/pdns/arguments.cc:348,1
    - Dst: ArgvMap::end
      Src: /src/pdns/pdns/arguments.cc:348,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' var'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 349
      start: 346
    functionDepth: 0
    functionLinenumber: 346
    functionLinenumberEnd: 349
    functionName: ArgvMap::parmIsset
    functionSourceFile: /src/pdns/pdns/arguments.cc
    functionUses: 6
    functionsReached:
    - ArgvMap::end
    - find
    linkageType: ''
    returnType: bool
    signature: bool ArgvMap::parmIsset(const string& var)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: find
      Src: /src/pdns/pdns/arguments.cc:359,1
    - Dst: ArgvMap::end
      Src: /src/pdns/pdns/arguments.cc:360,1
    - Dst: SLOG
      Src: /src/pdns/pdns/arguments.cc:361,1
    - Dst: info
      Src: /src/pdns/pdns/arguments.cc:362,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/arguments.cc:362,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/arguments.cc:362,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ' var'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 364
      start: 357
    functionDepth: 0
    functionLinenumber: 357
    functionLinenumberEnd: 364
    functionName: ArgvMap::warnIfDeprecated
    functionSourceFile: /src/pdns/pdns/arguments.cc
    functionUses: 0
    functionsReached:
    - SLOG
    - Logging::Loggable
    - ArgvMap::end
    - info
    - find
    linkageType: ''
    returnType: void
    signature: void ArgvMap::warnIfDeprecated(const string& var) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: find
      Src: /src/pdns/pdns/arguments.cc:368,1
    - Dst: ArgvMap::end
      Src: /src/pdns/pdns/arguments.cc:369,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' var'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 370
      start: 366
    functionDepth: 0
    functionLinenumber: 366
    functionLinenumberEnd: 370
    functionName: ArgvMap::isDeprecated
    functionSourceFile: /src/pdns/pdns/arguments.cc
    functionUses: 0
    functionsReached:
    - ArgvMap::end
    - find
    linkageType: ''
    returnType: string
    signature: string ArgvMap::isDeprecated(const string& var)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: find
      Src: /src/pdns/pdns/arguments.cc:379,1
    - Dst: find
      Src: /src/pdns/pdns/arguments.cc:379,1
    - Dst: substr
      Src: /src/pdns/pdns/arguments.cc:381,1
    - Dst: substr
      Src: /src/pdns/pdns/arguments.cc:382,1
    - Dst: find
      Src: /src/pdns/pdns/arguments.cc:385,1
    - Dst: find
      Src: /src/pdns/pdns/arguments.cc:385,1
    - Dst: substr
      Src: /src/pdns/pdns/arguments.cc:387,1
    - Dst: substr
      Src: /src/pdns/pdns/arguments.cc:388,1
    - Dst: find
      Src: /src/pdns/pdns/arguments.cc:390,1
    - Dst: find
      Src: /src/pdns/pdns/arguments.cc:390,1
    - Dst: substr
      Src: /src/pdns/pdns/arguments.cc:392,1
    - Dst: length
      Src: /src/pdns/pdns/arguments.cc:395,1
    - Dst: substr
      Src: /src/pdns/pdns/arguments.cc:396,1
    - Dst: push_back
      Src: /src/pdns/pdns/arguments.cc:400,1
    - Dst: Utility::trim
      Src: /src/pdns/pdns/arguments.cc:403,1
    - Dst: string::empty
      Src: /src/pdns/pdns/arguments.cc:405,1
    - Dst: empty
      Src: /src/pdns/pdns/arguments.cc:405,1
    - Dst: ArgvMap::warnIfDeprecated
      Src: /src/pdns/pdns/arguments.cc:407,1
    - Dst: string::find_first_not_of
      Src: /src/pdns/pdns/arguments.cc:409,1
    - Dst: string::substr
      Src: /src/pdns/pdns/arguments.cc:411,1
    - Dst: ArgvMap::parmIsset
      Src: /src/pdns/pdns/arguments.cc:413,1
    - Dst: empty
      Src: /src/pdns/pdns/arguments.cc:415,1
    - Dst: count
      Src: /src/pdns/pdns/arguments.cc:416,1
    - Dst: ArgException
      Src: /src/pdns/pdns/arguments.cc:417,1
    - Dst: insert
      Src: /src/pdns/pdns/arguments.cc:427,1
    - Dst: std::move
      Src: /src/pdns/pdns/arguments.cc:427,1
    - Dst: stringtok
      Src: /src/pdns/pdns/arguments.cc:433,1
    - Dst: find
      Src: /src/pdns/pdns/arguments.cc:434,1
    - Dst: vector::begin
      Src: /src/pdns/pdns/arguments.cc:434,1
    - Dst: vector::end
      Src: /src/pdns/pdns/arguments.cc:434,1
    - Dst: vector::end
      Src: /src/pdns/pdns/arguments.cc:434,1
    - Dst: std::move
      Src: /src/pdns/pdns/arguments.cc:435,1
    - Dst: SLOG
      Src: /src/pdns/pdns/arguments.cc:436,1
    - Dst: info
      Src: /src/pdns/pdns/arguments.cc:437,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/arguments.cc:437,1
    - Dst: ArgException
      Src: /src/pdns/pdns/arguments.cc:442,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 55
    argCount: 3
    argNames:
    - ' arg'
    - ' parseOnly'
    - lax
    argTypes:
    - string
    - string
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 446
      start: 372
    functionDepth: 1
    functionLinenumber: 372
    functionLinenumberEnd: 446
    functionName: ArgvMap::parseOne
    functionSourceFile: /src/pdns/pdns/arguments.cc
    functionUses: 0
    functionsReached:
    - ArgvMap::warnIfDeprecated
    - string::substr
    - insert
    - find
    - vector::begin
    - SLOG
    - stringtok
    - string::empty
    - Logging::Loggable
    - substr
    - string::find_first_not_of
    - empty
    - ArgvMap::parmIsset
    - push_back
    - vector::end
    - Utility::trim
    - length
    - std::move
    - count
    - info
    - ArgException
    linkageType: ''
    returnType: void
    signature: void ArgvMap::parseOne(const string& arg, const string& parseOnly,
      bool lax)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 451
      start: 448
    functionDepth: 0
    functionLinenumber: 448
    functionLinenumberEnd: 451
    functionName: '& ArgvMap::getCommands()'
    functionSourceFile: /src/pdns/pdns/arguments.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: vector<string>
    signature: vector<string> & ArgvMap::getCommands()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: clear
      Src: /src/pdns/pdns/arguments.cc:455,1
    - Dst: clear
      Src: /src/pdns/pdns/arguments.cc:456,1
    - Dst: ArgvMap::parseOne
      Src: /src/pdns/pdns/arguments.cc:458,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - ' argc'
    - argv
    - lax
    argTypes:
    - int
    - char**
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 460
      start: 453
    functionDepth: 1
    functionLinenumber: 453
    functionLinenumberEnd: 460
    functionName: ArgvMap::parse
    functionSourceFile: /src/pdns/pdns/arguments.cc
    functionUses: 0
    functionsReached:
    - clear
    - ArgvMap::parseOne
    linkageType: ''
    returnType: void
    signature: void ArgvMap::parse(int& argc, char** argv, bool lax)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: string::find
      Src: /src/pdns/pdns/arguments.cc:466,1
    - Dst: ArgvMap::parseOne
      Src: /src/pdns/pdns/arguments.cc:467,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - ' argc'
    - argv
    - ' arg'
    argTypes:
    - int
    - char**
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 470
      start: 462
    functionDepth: 0
    functionLinenumber: 462
    functionLinenumberEnd: 470
    functionName: ArgvMap::preParse
    functionSourceFile: /src/pdns/pdns/arguments.cc
    functionUses: 0
    functionsReached:
    - string::find
    - ArgvMap::parseOne
    linkageType: ''
    returnType: void
    signature: void ArgvMap::preParse(int& argc, char** argv, const string& arg)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: getline
      Src: /src/pdns/pdns/arguments.cc:482,1
    - Dst: boost::trim_right
      Src: /src/pdns/pdns/arguments.cc:483,1
    - Dst: string::empty
      Src: /src/pdns/pdns/arguments.cc:485,1
    - Dst: string::size
      Src: /src/pdns/pdns/arguments.cc:485,1
    - Dst: string::substr
      Src: /src/pdns/pdns/arguments.cc:486,1
    - Dst: string::length
      Src: /src/pdns/pdns/arguments.cc:486,1
    - Dst: string::find
      Src: /src/pdns/pdns/arguments.cc:493,1
    - Dst: std::isspace
      Src: /src/pdns/pdns/arguments.cc:497,1
    - Dst: string::substr
      Src: /src/pdns/pdns/arguments.cc:498,1
    - Dst: boost::trim_right
      Src: /src/pdns/pdns/arguments.cc:503,1
    - Dst: string::find_first_not_of
      Src: /src/pdns/pdns/arguments.cc:506,1
    - Dst: string::substr
      Src: /src/pdns/pdns/arguments.cc:508,1
    - Dst: ArgvMap::parseOne
      Src: /src/pdns/pdns/arguments.cc:513,1
    - Dst: string
      Src: /src/pdns/pdns/arguments.cc:513,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 25
    argCount: 3
    argNames:
    - ' fname'
    - ' arg'
    - lax
    argTypes:
    - string
    - string
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 518
      start: 472
    functionDepth: 0
    functionLinenumber: 472
    functionLinenumberEnd: 518
    functionName: ArgvMap::parseFile
    functionSourceFile: /src/pdns/pdns/arguments.cc
    functionUses: 0
    functionsReached:
    - string::size
    - string::empty
    - string::find
    - ArgvMap::parseOne
    - string
    - string::substr
    - getline
    - boost::trim_right
    - std::isspace
    - string::find_first_not_of
    - string::length
    linkageType: ''
    returnType: bool
    signature: bool ArgvMap::parseFile(const string& fname, const string& arg, bool
      lax)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ArgvMap::parseFile
      Src: /src/pdns/pdns/arguments.cc:524,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - ' fname'
    - ' arg'
    - ' theDefault'
    argTypes:
    - string
    - string
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 525
      start: 520
    functionDepth: 0
    functionLinenumber: 520
    functionLinenumberEnd: 525
    functionName: ArgvMap::preParseFile
    functionSourceFile: /src/pdns/pdns/arguments.cc
    functionUses: 0
    functionsReached:
    - ArgvMap::parseFile
    linkageType: ''
    returnType: bool
    signature: bool ArgvMap::preParseFile(const string& fname, const string& arg,
      const string& theDefault)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ArgvMap::file
      Src: /src/pdns/pdns/arguments.cc:529,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' fname'
    - lax
    argTypes:
    - string
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 530
      start: 527
    functionDepth: 0
    functionLinenumber: 527
    functionLinenumberEnd: 530
    functionName: ArgvMap::file
    functionSourceFile: /src/pdns/pdns/arguments.cc
    functionUses: 1
    functionsReached:
    - ArgvMap::file
    linkageType: ''
    returnType: bool
    signature: bool ArgvMap::file(const string& fname, bool lax)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ArgvMap::parmIsset
      Src: /src/pdns/pdns/arguments.cc:534,1
    - Dst: set
      Src: /src/pdns/pdns/arguments.cc:535,1
    - Dst: ArgvMap::parseFile
      Src: /src/pdns/pdns/arguments.cc:538,1
    - Dst: SLOG
      Src: /src/pdns/pdns/arguments.cc:539,1
    - Dst: info
      Src: /src/pdns/pdns/arguments.cc:540,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/arguments.cc:540,1
    - Dst: empty
      Src: /src/pdns/pdns/arguments.cc:545,1
    - Dst: ArgvMap::gatherIncludes
      Src: /src/pdns/pdns/arguments.cc:547,1
    - Dst: ArgvMap::file
      Src: /src/pdns/pdns/arguments.cc:549,1
    - Dst: c_str
      Src: /src/pdns/pdns/arguments.cc:549,1
    - Dst: SLOG
      Src: /src/pdns/pdns/arguments.cc:550,1
    - Dst: info
      Src: /src/pdns/pdns/arguments.cc:551,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/arguments.cc:551,1
    - Dst: ArgException
      Src: /src/pdns/pdns/arguments.cc:552,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 17
    argCount: 3
    argNames:
    - ' fname'
    - lax
    - included
    argTypes:
    - string
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 558
      start: 532
    functionDepth: 0
    functionLinenumber: 532
    functionLinenumberEnd: 558
    functionName: ArgvMap::file
    functionSourceFile: /src/pdns/pdns/arguments.cc
    functionUses: 2
    functionsReached:
    - SLOG
    - ArgvMap::parmIsset
    - ArgvMap::parseFile
    - c_str
    - Logging::Loggable
    - info
    - set
    - ArgException
    - empty
    - ArgvMap::file
    - ArgvMap::gatherIncludes
    linkageType: ''
    returnType: bool
    signature: bool ArgvMap::file(const string& fname, bool lax, bool included)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/arguments.cc:563,1
    - Dst: pdns::visit_directory
      Src: /src/pdns/pdns/arguments.cc:568,1
    - Dst: boost::starts_with
      Src: /src/pdns/pdns/arguments.cc:570,1
    - Dst: boost::ends_with
      Src: /src/pdns/pdns/arguments.cc:573,1
    - Dst: std::string
      Src: /src/pdns/pdns/arguments.cc:575,1
    - Dst: stat
      Src: /src/pdns/pdns/arguments.cc:578,1
    - Dst: string::c_str
      Src: /src/pdns/pdns/arguments.cc:578,1
    - Dst: S_ISREG
      Src: /src/pdns/pdns/arguments.cc:578,1
    - Dst: SLOG
      Src: /src/pdns/pdns/arguments.cc:580,1
    - Dst: info
      Src: /src/pdns/pdns/arguments.cc:581,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/arguments.cc:581,1
    - Dst: ArgException
      Src: /src/pdns/pdns/arguments.cc:582,1
    - Dst: std::move
      Src: /src/pdns/pdns/arguments.cc:582,1
    - Dst: std::vector::emplace_back
      Src: /src/pdns/pdns/arguments.cc:584,1
    - Dst: stringerror
      Src: /src/pdns/pdns/arguments.cc:591,1
    - Dst: SLOG
      Src: /src/pdns/pdns/arguments.cc:592,1
    - Dst: error
      Src: /src/pdns/pdns/arguments.cc:593,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/arguments.cc:593,1
    - Dst: ArgException
      Src: /src/pdns/pdns/arguments.cc:594,1
    - Dst: std::move
      Src: /src/pdns/pdns/arguments.cc:594,1
    - Dst: std::sort
      Src: /src/pdns/pdns/arguments.cc:597,1
    - Dst: std::vector::begin
      Src: /src/pdns/pdns/arguments.cc:597,1
    - Dst: std::vector::end
      Src: /src/pdns/pdns/arguments.cc:597,1
    - Dst: CIStringComparePOSIX
      Src: /src/pdns/pdns/arguments.cc:597,1
    - Dst: insert
      Src: /src/pdns/pdns/arguments.cc:598,1
    - Dst: ArgvMap::end
      Src: /src/pdns/pdns/arguments.cc:598,1
    - Dst: std::vector::begin
      Src: /src/pdns/pdns/arguments.cc:598,1
    - Dst: std::vector::end
      Src: /src/pdns/pdns/arguments.cc:598,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 23
    argCount: 3
    argNames:
    - ' directory'
    - ' suffix'
    - ' extraConfigs'
    argTypes:
    - std::string
    - std::string
    - std::vector<std::string>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 599
      start: 561
    functionDepth: 1
    functionLinenumber: 561
    functionLinenumberEnd: 599
    functionName: ArgvMap::gatherIncludes
    functionSourceFile: /src/pdns/pdns/arguments.cc
    functionUses: 1
    functionsReached:
    - stringerror
    - insert
    - error
    - std::string
    - SLOG
    - Logging::Loggable
    - std::vector::begin
    - boost::starts_with
    - empty
    - stat
    - boost::ends_with
    - std::vector::end
    - string::c_str
    - ArgvMap::end
    - pdns::visit_directory
    - S_ISREG
    - std::move
    - std::sort
    - info
    - std::vector::emplace_back
    - CIStringComparePOSIX
    - ArgException
    linkageType: ''
    returnType: void
    signature: void ArgvMap::gatherIncludes(const std::string& directory, const std::string&
      suffix, std::vector<std::string>& extraConfigs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: reportAllTypes
      Src: /src/pdns/pdns/fuzz_moadnsparser.cc:33,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 34
      start: 31
    functionDepth: 0
    functionLinenumber: 31
    functionLinenumberEnd: 34
    functionName: init
    functionSourceFile: /src/pdns/pdns/fuzz_moadnsparser.cc
    functionUses: 19
    functionsReached:
    - reportAllTypes
    linkageType: ''
    returnType: void
    signature: void init()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: init
      Src: /src/pdns/pdns/fuzz_moadnsparser.cc:43,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/fuzz_moadnsparser.cc:47,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/fuzz_moadnsparser.cc:52,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/fuzz_moadnsparser.cc:60,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 2
    argNames:
    - data
    - size
    argTypes:
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 38
    functionDepth: 0
    functionLinenumber: 38
    functionLinenumberEnd: 68
    functionName: LLVMFuzzerTestOneInput
    functionSourceFile: /src/pdns/pdns/fuzz_moadnsparser.cc
    functionUses: 1
    functionsReached:
    - init
    - pdns::max
    - reinterpret_cast<const char*>
    linkageType: ''
    returnType: int
    signature: int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::to_string
      Src: /src/pdns/pdns/sdig.cc:38,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ttl
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 39
      start: 33
    functionDepth: 0
    functionLinenumber: 33
    functionLinenumberEnd: 39
    functionName: ttl
    functionSourceFile: /src/pdns/pdns/sdig.cc
    functionUses: 0
    functionsReached:
    - std::to_string
    linkageType: ''
    returnType: string
    signature: string ttl(uint32_t ttl)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 41
    functionDepth: 0
    functionLinenumber: 41
    functionLinenumberEnd: 52
    functionName: usage
    functionSourceFile: /src/pdns/pdns/sdig.cc
    functionUses: 94
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void usage()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: QClass::toString
      Src: /src/pdns/pdns/sdig.cc:59,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - qclass
    - qtype
    argTypes:
    - QClass
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 54
    functionDepth: 0
    functionLinenumber: 54
    functionLinenumberEnd: 60
    functionName: nameForClass
    functionSourceFile: /src/pdns/pdns/sdig.cc
    functionUses: 0
    functionsReached:
    - QClass::toString
    linkageType: ''
    returnType: string
    signature: string nameForClass(QClass qclass, uint16_t qtype)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: getenv
      Src: /src/pdns/pdns/sdig.cc:73,1
    - Dst: getenv
      Src: /src/pdns/pdns/sdig.cc:74,1
    - Dst: atoi
      Src: /src/pdns/pdns/sdig.cc:77,1
    - Dst: EDNSSubnetOpts::setSource
      Src: /src/pdns/pdns/sdig.cc:83,1
    - Dst: DNSPacketWriter::optvect_t::emplace_back
      Src: /src/pdns/pdns/sdig.cc:84,1
    - Dst: EDNSSubnetOpts::makeOptString
      Src: /src/pdns/pdns/sdig.cc:84,1
    - Dst: EDNSCookiesOpt::EDNSCookiesOpt
      Src: /src/pdns/pdns/sdig.cc:87,1
    - Dst: EDNSCookiesOpt::makeClientCookie
      Src: /src/pdns/pdns/sdig.cc:89,1
    - Dst: makeBytesFromHex
      Src: /src/pdns/pdns/sdig.cc:92,1
    - Dst: EDNSCookiesOpt::makeFromString
      Src: /src/pdns/pdns/sdig.cc:93,1
    - Dst: DNSPacketWriter::optvect_t::emplace_back
      Src: /src/pdns/pdns/sdig.cc:97,1
    - Dst: EDNSCookiesOpt::makeOptString
      Src: /src/pdns/pdns/sdig.cc:97,1
    - Dst: std::get<0>
      Src: /src/pdns/pdns/sdig.cc:100,1
    - Dst: std::get<1>
      Src: /src/pdns/pdns/sdig.cc:101,1
    - Dst: std::get<2>
      Src: /src/pdns/pdns/sdig.cc:102,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/sdig.cc:104,1
    - Dst: pdns::trace::EDNSOTTraceRecord::setVersion
      Src: /src/pdns/pdns/sdig.cc:105,1
    - Dst: pdns::trace::EDNSOTTraceRecord::setReserved
      Src: /src/pdns/pdns/sdig.cc:106,1
    - Dst: pdns::trace::EDNSOTTraceRecord::setTraceID
      Src: /src/pdns/pdns/sdig.cc:107,1
    - Dst: pdns::trace::EDNSOTTraceRecord::setSpanID
      Src: /src/pdns/pdns/sdig.cc:108,1
    - Dst: pdns::trace::EDNSOTTraceRecord::setFlags
      Src: /src/pdns/pdns/sdig.cc:109,1
    - Dst: DNSPacketWriter::optvect_t::emplace_back
      Src: /src/pdns/pdns/sdig.cc:110,1
    - Dst: std::string_view
      Src: /src/pdns/pdns/sdig.cc:110,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/sdig.cc:110,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/sdig.cc:110,1
    - Dst: std::array::size
      Src: /src/pdns/pdns/sdig.cc:110,1
    - Dst: DNSPacketWriter::addOpt
      Src: /src/pdns/pdns/sdig.cc:112,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/sdig.cc:113,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/sdig.cc:117,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/sdig.cc:120,1
    - Dst: htons
      Src: /src/pdns/pdns/sdig.cc:120,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 34
    argCount: 11
    argNames:
    - ' packet'
    - ' q'
    - ' t'
    - dnssec
    - ' ednsnm'
    - recurse
    - qclass
    - opcode
    - qid
    - ' cookie'
    - ' otids'
    argTypes:
    - vector<uint8_t>
    - string
    - string
    - bool
    - std::optional<Netmask>
    - bool
    - QClass
    - uint8_t
    - uint16_t
    - std::optional<string>
    - OpenTelemetryData
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 66
    functionDepth: 1
    functionLinenumber: 66
    functionLinenumberEnd: 121
    functionName: fillPacket
    functionSourceFile: /src/pdns/pdns/sdig.cc
    functionUses: 0
    functionsReached:
    - EDNSCookiesOpt::EDNSCookiesOpt
    - pdns::trace::EDNSOTTraceRecord::setReserved
    - pdns::trace::EDNSOTTraceRecord::setTraceID
    - DNSPacketWriter::optvect_t::emplace_back
    - EDNSCookiesOpt::makeFromString
    - makeBytesFromHex
    - DNSPacketWriter::getHeader
    - htons
    - pdns::trace::EDNSOTTraceRecord::setSpanID
    - EDNSSubnetOpts::makeOptString
    - std::get<2>
    - DNSPacketWriter::commit
    - std::string_view
    - EDNSSubnetOpts::setSource
    - reinterpret_cast<const char*>
    - pdns::trace::EDNSOTTraceRecord::setVersion
    - std::array::data
    - getenv
    - atoi
    - EDNSCookiesOpt::makeClientCookie
    - std::get<0>
    - std::get<1>
    - DNSPacketWriter::addOpt
    - pdns::trace::EDNSOTTraceRecord::setFlags
    - EDNSCookiesOpt::makeOptString
    - std::array::size
    linkageType: ''
    returnType: void
    signature: "void fillPacket(vector<uint8_t>& packet, const string& q, const string&
      t,\n                       bool dnssec, const std::optional<Netmask>& ednsnm,\n
      \                      bool recurse, QClass qclass, uint8_t opcode, uint16_t
      qid, const std::optional<string>& cookie,\n                       OpenTelemetryData&
      otids)"
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: count
      Src: /src/pdns/pdns/sdig.cc:127,1
    - Dst: ntohs
      Src: /src/pdns/pdns/sdig.cc:127,1
    - Dst: ntohs
      Src: /src/pdns/pdns/sdig.cc:128,1
    - Dst: erase
      Src: /src/pdns/pdns/sdig.cc:130,1
    - Dst: ntohs
      Src: /src/pdns/pdns/sdig.cc:130,1
    - Dst: MOADNSParser::d_qname::toString
      Src: /src/pdns/pdns/sdig.cc:132,1
    - Dst: DNSRecordContent::NumberToType
      Src: /src/pdns/pdns/sdig.cc:133,1
    - Dst: ntohs
      Src: /src/pdns/pdns/sdig.cc:137,1
    - Dst: getEDNSOpts
      Src: /src/pdns/pdns/sdig.cc:142,1
    - Dst: ERCode::to_s
      Src: /src/pdns/pdns/sdig.cc:146,1
    - Dst: RCode::to_s
      Src: /src/pdns/pdns/sdig.cc:149,1
    - Dst: MOADNSParser::d_answers::begin
      Src: /src/pdns/pdns/sdig.cc:157,1
    - Dst: MOADNSParser::d_answers::end
      Src: /src/pdns/pdns/sdig.cc:158,1
    - Dst: MOADNSParser::answers_t::const_iterator::d_name::toString
      Src: /src/pdns/pdns/sdig.cc:159,1
    - Dst: ttl
      Src: /src/pdns/pdns/sdig.cc:160,1
    - Dst: nameForClass
      Src: /src/pdns/pdns/sdig.cc:160,1
    - Dst: DNSRecordContent::NumberToType
      Src: /src/pdns/pdns/sdig.cc:161,1
    - Dst: makeLuaString
      Src: /src/pdns/pdns/sdig.cc:163,1
    - Dst: MOADNSParser::answers_t::const_iterator::getContent
      Src: /src/pdns/pdns/sdig.cc:163,1
    - Dst: DNSName
      Src: /src/pdns/pdns/sdig.cc:163,1
    - Dst: MOADNSParser::answers_t::const_iterator::getContent
      Src: /src/pdns/pdns/sdig.cc:168,1
    - Dst: stringtok
      Src: /src/pdns/pdns/sdig.cc:170,1
    - Dst: MOADNSParser::answers_t::const_iterator::getContent
      Src: /src/pdns/pdns/sdig.cc:177,1
    - Dst: stringtok
      Src: /src/pdns/pdns/sdig.cc:179,1
    - Dst: vector::begin
      Src: /src/pdns/pdns/sdig.cc:182,1
    - Dst: vector::end
      Src: /src/pdns/pdns/sdig.cc:183,1
    - Dst: MOADNSParser::answers_t::const_iterator::getContent
      Src: /src/pdns/pdns/sdig.cc:189,1
    - Dst: stringtok
      Src: /src/pdns/pdns/sdig.cc:191,1
    - Dst: MOADNSParser::answers_t::const_iterator::getContent
      Src: /src/pdns/pdns/sdig.cc:197,1
    - Dst: stringtok
      Src: /src/pdns/pdns/sdig.cc:199,1
    - Dst: MOADNSParser::answers_t::const_iterator::getContent
      Src: /src/pdns/pdns/sdig.cc:206,1
    - Dst: EDNSSubnetOpts::getFromString
      Src: /src/pdns/pdns/sdig.cc:213,1
    - Dst: EDNSSubnetOpts::getSource
      Src: /src/pdns/pdns/sdig.cc:214,1
    - Dst: EDNSSubnetOpts::getScope
      Src: /src/pdns/pdns/sdig.cc:215,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/sdig.cc:216,1
    - Dst: EDNSSubnetOpts::getFamily
      Src: /src/pdns/pdns/sdig.cc:216,1
    - Dst: EDNSCookiesOpt::getClient
      Src: /src/pdns/pdns/sdig.cc:222,1
    - Dst: EDNSCookiesOpt::getServer
      Src: /src/pdns/pdns/sdig.cc:223,1
    - Dst: makeHexDump
      Src: /src/pdns/pdns/sdig.cc:224,1
    - Dst: makeHexDump
      Src: /src/pdns/pdns/sdig.cc:224,1
    - Dst: EDNSCookiesOpt::isWellFormed
      Src: /src/pdns/pdns/sdig.cc:225,1
    - Dst: vector<string>::iterator::second::size
      Src: /src/pdns/pdns/sdig.cc:232,1
    - Dst: getEDNSExtendedErrorOptFromString
      Src: /src/pdns/pdns/sdig.cc:235,1
    CyclomaticComplexity: 28
    EdgeCount: 28
    ICount: 75
    argCount: 4
    argNames:
    - ' reply'
    - showflags
    - hidesoadetails
    - dumpluaraw
    argTypes:
    - string
    - bool
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 243
      start: 123
    functionDepth: 1
    functionLinenumber: 123
    functionLinenumberEnd: 243
    functionName: printReply
    functionSourceFile: /src/pdns/pdns/sdig.cc
    functionUses: 0
    functionsReached:
    - std::to_string
    - ntohs
    - EDNSCookiesOpt::isWellFormed
    - MOADNSParser::answers_t::const_iterator::d_name::toString
    - MOADNSParser::d_answers::end
    - RCode::to_s
    - erase
    - makeHexDump
    - MOADNSParser::answers_t::const_iterator::getContent
    - vector::begin
    - stringtok
    - vector<string>::iterator::second::size
    - EDNSSubnetOpts::getFromString
    - DNSRecordContent::NumberToType
    - EDNSSubnetOpts::getScope
    - MOADNSParser::d_answers::begin
    - getEDNSOpts
    - nameForClass
    - getEDNSExtendedErrorOptFromString
    - DNSName
    - vector::end
    - EDNSCookiesOpt::getServer
    - EDNSSubnetOpts::getSource
    - EDNSCookiesOpt::getClient
    - ttl
    - count
    - EDNSSubnetOpts::getFamily
    - makeLuaString
    - MOADNSParser::d_qname::toString
    - ERCode::to_s
    linkageType: ''
    returnType: void
    signature: void printReply(const string& reply, bool showflags, bool hidesoadetails,
      bool dumpluaraw, bool ignoreId = false)
  - BBCount: 56
    BranchProfiles: []
    Callsites:
    - Dst: usage
      Src: /src/pdns/pdns/sdig.cc:273,1
    - Dst: exit
      Src: /src/pdns/pdns/sdig.cc:274,1
    - Dst: exit
      Src: /src/pdns/pdns/sdig.cc:279,1
    - Dst: usage
      Src: /src/pdns/pdns/sdig.cc:284,1
    - Dst: exit
      Src: /src/pdns/pdns/sdig.cc:285,1
    - Dst: reportAllTypes
      Src: /src/pdns/pdns/sdig.cc:288,1
    - Dst: strcmp
      Src: /src/pdns/pdns/sdig.cc:292,1
    - Dst: strcmp
      Src: /src/pdns/pdns/sdig.cc:294,1
    - Dst: strcmp
      Src: /src/pdns/pdns/sdig.cc:296,1
    - Dst: strcmp
      Src: /src/pdns/pdns/sdig.cc:298,1
    - Dst: strcmp
      Src: /src/pdns/pdns/sdig.cc:300,1
    - Dst: strcmp
      Src: /src/pdns/pdns/sdig.cc:302,1
    - Dst: strcmp
      Src: /src/pdns/pdns/sdig.cc:304,1
    - Dst: strcmp
      Src: /src/pdns/pdns/sdig.cc:306,1
    - Dst: strcmp
      Src: /src/pdns/pdns/sdig.cc:308,1
    - Dst: strcmp
      Src: /src/pdns/pdns/sdig.cc:310,1
    - Dst: exit
      Src: /src/pdns/pdns/sdig.cc:313,1
    - Dst: Netmask
      Src: /src/pdns/pdns/sdig.cc:315,1
    - Dst: strcmp
      Src: /src/pdns/pdns/sdig.cc:317,1
    - Dst: exit
      Src: /src/pdns/pdns/sdig.cc:320,1
    - Dst: atoi
      Src: /src/pdns/pdns/sdig.cc:322,1
    - Dst: strcmp
      Src: /src/pdns/pdns/sdig.cc:324,1
    - Dst: exit
      Src: /src/pdns/pdns/sdig.cc:327,1
    - Dst: atoi
      Src: /src/pdns/pdns/sdig.cc:329,1
    - Dst: strcmp
      Src: /src/pdns/pdns/sdig.cc:331,1
    - Dst: exit
      Src: /src/pdns/pdns/sdig.cc:334,1
    - Dst: strcmp
      Src: /src/pdns/pdns/sdig.cc:338,1
    - Dst: exit
      Src: /src/pdns/pdns/sdig.cc:341,1
    - Dst: strcmp
      Src: /src/pdns/pdns/sdig.cc:345,1
    - Dst: exit
      Src: /src/pdns/pdns/sdig.cc:348,1
    - Dst: strcmp
      Src: /src/pdns/pdns/sdig.cc:352,1
    - Dst: exit
      Src: /src/pdns/pdns/sdig.cc:355,1
    - Dst: atoi
      Src: /src/pdns/pdns/sdig.cc:357,1
    - Dst: makeProxyHeader
      Src: /src/pdns/pdns/sdig.cc:360,1
    - Dst: strcmp
      Src: /src/pdns/pdns/sdig.cc:362,1
    - Dst: exit
      Src: /src/pdns/pdns/sdig.cc:365,1
    - Dst: strcmp
      Src: /src/pdns/pdns/sdig.cc:369,1
    - Dst: strcmp
      Src: /src/pdns/pdns/sdig.cc:372,1
    - Dst: exit
      Src: /src/pdns/pdns/sdig.cc:375,1
    - Dst: std::string
      Src: /src/pdns/pdns/sdig.cc:377,1
    - Dst: pdns::trace::TraceID::makeRandom
      Src: /src/pdns/pdns/sdig.cc:383,1
    - Dst: pdns::trace::SpanID::makeRandom
      Src: /src/pdns/pdns/sdig.cc:384,1
    - Dst: makeBytesFromHex
      Src: /src/pdns/pdns/sdig.cc:387,1
    - Dst: auto::size
      Src: /src/pdns/pdns/sdig.cc:388,1
    - Dst: pdns::trace::TraceID::size
      Src: /src/pdns/pdns/sdig.cc:388,1
    - Dst: pdns::trace::SpanID::size
      Src: /src/pdns/pdns/sdig.cc:388,1
    - Dst: pdns::trace::TraceID::size
      Src: /src/pdns/pdns/sdig.cc:389,1
    - Dst: pdns::trace::SpanID::size
      Src: /src/pdns/pdns/sdig.cc:389,1
    - Dst: exit
      Src: /src/pdns/pdns/sdig.cc:390,1
    - Dst: auto::size
      Src: /src/pdns/pdns/sdig.cc:394,1
    - Dst: pdns::trace::TraceID::size
      Src: /src/pdns/pdns/sdig.cc:394,1
    - Dst: std::string
      Src: /src/pdns/pdns/sdig.cc:395,1
    - Dst: auto::begin
      Src: /src/pdns/pdns/sdig.cc:395,1
    - Dst: pdns::trace::TraceID::size
      Src: /src/pdns/pdns/sdig.cc:395,1
    - Dst: auto::end
      Src: /src/pdns/pdns/sdig.cc:395,1
    - Dst: auto::resize
      Src: /src/pdns/pdns/sdig.cc:397,1
    - Dst: pdns::trace::TraceID::size
      Src: /src/pdns/pdns/sdig.cc:397,1
    - Dst: pdns::trace::fill
      Src: /src/pdns/pdns/sdig.cc:398,1
    - Dst: std::string::empty
      Src: /src/pdns/pdns/sdig.cc:399,1
    - Dst: pdns::trace::SpanID::makeRandom
      Src: /src/pdns/pdns/sdig.cc:400,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/sdig.cc:401,1
    - Dst: pdns::trace::SpanID::size
      Src: /src/pdns/pdns/sdig.cc:401,1
    - Dst: pdns::trace::SpanID::size
      Src: /src/pdns/pdns/sdig.cc:402,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/sdig.cc:402,1
    - Dst: exit
      Src: /src/pdns/pdns/sdig.cc:403,1
    - Dst: pdns::trace::fill
      Src: /src/pdns/pdns/sdig.cc:405,1
    - Dst: std::make_tuple
      Src: /src/pdns/pdns/sdig.cc:408,1
    - Dst: exit
      Src: /src/pdns/pdns/sdig.cc:412,1
    - Dst: exit
      Src: /src/pdns/pdns/sdig.cc:425,1
    - Dst: strcmp
      Src: /src/pdns/pdns/sdig.cc:433,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/sdig.cc:436,1
    - Dst: atoi
      Src: /src/pdns/pdns/sdig.cc:436,1
    - Dst: string
      Src: /src/pdns/pdns/sdig.cc:439,1
    - Dst: string
      Src: /src/pdns/pdns/sdig.cc:440,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/sdig.cc:445,1
    - Dst: getline
      Src: /src/pdns/pdns/sdig.cc:448,1
    - Dst: splitField
      Src: /src/pdns/pdns/sdig.cc:449,1
    - Dst: vector::emplace_back
      Src: /src/pdns/pdns/sdig.cc:451,1
    - Dst: vector::emplace_back
      Src: /src/pdns/pdns/sdig.cc:454,1
    - Dst: insert
      Src: /src/pdns/pdns/sdig.cc:460,1
    - Dst: fillPacket
      Src: /src/pdns/pdns/sdig.cc:461,1
    - Dst: MiniCurl::MiniCurl
      Src: /src/pdns/pdns/sdig.cc:462,1
    - Dst: MiniCurl::MiniCurlHeaders::emplace
      Src: /src/pdns/pdns/sdig.cc:464,1
    - Dst: MiniCurl::MiniCurlHeaders::emplace
      Src: /src/pdns/pdns/sdig.cc:465,1
    - Dst: vector::begin
      Src: /src/pdns/pdns/sdig.cc:466,1
    - Dst: vector::end
      Src: /src/pdns/pdns/sdig.cc:466,1
    - Dst: MiniCurl::postURL
      Src: /src/pdns/pdns/sdig.cc:468,1
    - Dst: printReply
      Src: /src/pdns/pdns/sdig.cc:469,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/sdig.cc:471,1
    - Dst: string
      Src: /src/pdns/pdns/sdig.cc:475,1
    - Dst: parseProxyHeader
      Src: /src/pdns/pdns/sdig.cc:481,1
    - Dst: ComboAddress::toStringWithPort
      Src: /src/pdns/pdns/sdig.cc:483,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/sdig.cc:483,1
    - Dst: string::substr
      Src: /src/pdns/pdns/sdig.cc:484,1
    - Dst: string::substr
      Src: /src/pdns/pdns/sdig.cc:488,1
    - Dst: printReply
      Src: /src/pdns/pdns/sdig.cc:491,1
    - Dst: getTLSContext
      Src: /src/pdns/pdns/sdig.cc:499,1
    - Dst: Socket::setNonBlocking
      Src: /src/pdns/pdns/sdig.cc:503,1
    - Dst: setTCPNoDelay
      Src: /src/pdns/pdns/sdig.cc:504,1
    - Dst: Socket::getHandle
      Src: /src/pdns/pdns/sdig.cc:504,1
    - Dst: Socket::releaseHandle
      Src: /src/pdns/pdns/sdig.cc:505,1
    - Dst: std::move
      Src: /src/pdns/pdns/sdig.cc:505,1
    - Dst: TCPIOHandler::connect
      Src: /src/pdns/pdns/sdig.cc:506,1
    - Dst: string::size
      Src: /src/pdns/pdns/sdig.cc:508,1
    - Dst: TCPIOHandler::write
      Src: /src/pdns/pdns/sdig.cc:508,1
    - Dst: string::data
      Src: /src/pdns/pdns/sdig.cc:508,1
    - Dst: string::size
      Src: /src/pdns/pdns/sdig.cc:508,1
    - Dst: string::size
      Src: /src/pdns/pdns/sdig.cc:508,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/sdig.cc:509,1
    - Dst: insert
      Src: /src/pdns/pdns/sdig.cc:514,1
    - Dst: fillPacket
      Src: /src/pdns/pdns/sdig.cc:515,1
    - Dst: vector::size
      Src: /src/pdns/pdns/sdig.cc:519,1
    - Dst: string::reserve
      Src: /src/pdns/pdns/sdig.cc:521,1
    - Dst: vector::size
      Src: /src/pdns/pdns/sdig.cc:521,1
    - Dst: string::push_back
      Src: /src/pdns/pdns/sdig.cc:522,1
    - Dst: static_cast<char>
      Src: /src/pdns/pdns/sdig.cc:522,1
    - Dst: string::push_back
      Src: /src/pdns/pdns/sdig.cc:523,1
    - Dst: static_cast<char>
      Src: /src/pdns/pdns/sdig.cc:523,1
    - Dst: string::append
      Src: /src/pdns/pdns/sdig.cc:524,1
    - Dst: vector::begin
      Src: /src/pdns/pdns/sdig.cc:524,1
    - Dst: vector::end
      Src: /src/pdns/pdns/sdig.cc:524,1
    - Dst: TCPIOHandler::write
      Src: /src/pdns/pdns/sdig.cc:525,1
    - Dst: string::data
      Src: /src/pdns/pdns/sdig.cc:525,1
    - Dst: string::size
      Src: /src/pdns/pdns/sdig.cc:525,1
    - Dst: string::size
      Src: /src/pdns/pdns/sdig.cc:525,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/sdig.cc:526,1
    - Dst: vector::size
      Src: /src/pdns/pdns/sdig.cc:529,1
    - Dst: TCPIOHandler::read
      Src: /src/pdns/pdns/sdig.cc:531,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/sdig.cc:532,1
    - Dst: ntohs
      Src: /src/pdns/pdns/sdig.cc:534,1
    - Dst: string::resize
      Src: /src/pdns/pdns/sdig.cc:535,1
    - Dst: TCPIOHandler::read
      Src: /src/pdns/pdns/sdig.cc:536,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/sdig.cc:537,1
    - Dst: printReply
      Src: /src/pdns/pdns/sdig.cc:539,1
    - Dst: insert
      Src: /src/pdns/pdns/sdig.cc:544,1
    - Dst: fillPacket
      Src: /src/pdns/pdns/sdig.cc:545,1
    - Dst: vector::begin
      Src: /src/pdns/pdns/sdig.cc:546,1
    - Dst: vector::end
      Src: /src/pdns/pdns/sdig.cc:546,1
    - Dst: Socket::sendTo
      Src: /src/pdns/pdns/sdig.cc:549,1
    - Dst: waitForData
      Src: /src/pdns/pdns/sdig.cc:550,1
    - Dst: Socket::getHandle
      Src: /src/pdns/pdns/sdig.cc:550,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/sdig.cc:552,1
    - Dst: stringerror
      Src: /src/pdns/pdns/sdig.cc:552,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/sdig.cc:554,1
    - Dst: Socket::recvFrom
      Src: /src/pdns/pdns/sdig.cc:555,1
    - Dst: printReply
      Src: /src/pdns/pdns/sdig.cc:556,1
    - Dst: what
      Src: /src/pdns/pdns/sdig.cc:560,1
    CyclomaticComplexity: 72
    EdgeCount: 72
    ICount: 227
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 563
      start: 245
    functionDepth: 2
    functionLinenumber: 245
    functionLinenumberEnd: 563
    functionName: main
    functionSourceFile: /src/pdns/pdns/sdig.cc
    functionUses: 16
    functionsReached:
    - Socket::releaseHandle
    - ntohs
    - PDNSException
    - stringerror
    - TCPIOHandler::read
    - getline
    - auto::begin
    - fillPacket
    - insert
    - string::substr
    - std::string
    - std::string::size
    - auto::size
    - MiniCurl::postURL
    - vector::begin
    - string::data
    - string::resize
    - pdns::trace::TraceID::size
    - makeBytesFromHex
    - splitField
    - reportAllTypes
    - Socket::setNonBlocking
    - string::size
    - string
    - getTLSContext
    - pdns::trace::TraceID::makeRandom
    - pdns::trace::SpanID::makeRandom
    - TCPIOHandler::connect
    - usage
    - std::string::empty
    - makeProxyHeader
    - pdns::trace::fill
    - Netmask
    - std::runtime_error
    - std::make_tuple
    - string::push_back
    - MiniCurl::MiniCurlHeaders::emplace
    - vector::end
    - parseProxyHeader
    - Socket::sendTo
    - exit
    - toStringWithPort
    - static_cast<char>
    - pdns::trace::SpanID::size
    - ComboAddress
    - ComboAddress::toStringWithPort
    - printReply
    - MiniCurl::MiniCurl
    - Socket::getHandle
    - std::move
    - atoi
    - TCPIOHandler::write
    - setTCPNoDelay
    - string::reserve
    - string::append
    - Socket::recvFrom
    - strcmp
    - waitForData
    - what
    - auto::resize
    - vector::emplace_back
    - auto::end
    - vector::size
    linkageType: ''
    returnType: int
    signature: int main(int argc, char** argv)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: begin
      Src: /src/pdns/pdns/shuffle.cc:42,1
    - Dst: end
      Src: /src/pdns/pdns/shuffle.cc:42,1
    - Dst: end
      Src: /src/pdns/pdns/shuffle.cc:48,1
    - Dst: pdns::shuffle
      Src: /src/pdns/pdns/shuffle.cc:57,1
    - Dst: end
      Src: /src/pdns/pdns/shuffle.cc:61,1
    - Dst: end
      Src: /src/pdns/pdns/shuffle.cc:66,1
    - Dst: pdns::shuffle
      Src: /src/pdns/pdns/shuffle.cc:73,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 27
    argCount: 1
    argNames:
    - ' rrs'
    argTypes:
    - std::vector<DNSZoneRecord>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 33
    functionDepth: 0
    functionLinenumber: 33
    functionLinenumberEnd: 76
    functionName: pdns::shuffle
    functionSourceFile: /src/pdns/pdns/shuffle.cc
    functionUses: 1
    functionsReached:
    - pdns::shuffle
    - end
    - begin
    linkageType: ''
    returnType: void
    signature: void pdns::shuffle(std::vector<DNSZoneRecord>& rrs)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: begin
      Src: /src/pdns/pdns/shuffle.cc:85,1
    - Dst: end
      Src: /src/pdns/pdns/shuffle.cc:85,1
    - Dst: end
      Src: /src/pdns/pdns/shuffle.cc:90,1
    - Dst: shuffle
      Src: /src/pdns/pdns/shuffle.cc:98,1
    - Dst: end
      Src: /src/pdns/pdns/shuffle.cc:106,1
    - Dst: end
      Src: /src/pdns/pdns/shuffle.cc:111,1
    - Dst: shuffle
      Src: /src/pdns/pdns/shuffle.cc:118,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 30
    argCount: 2
    argNames:
    - ' rrs'
    - includingAdditionals
    argTypes:
    - std::vector<DNSRecord>
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 79
    functionDepth: 0
    functionLinenumber: 79
    functionLinenumberEnd: 121
    functionName: shuffle
    functionSourceFile: /src/pdns/pdns/shuffle.cc
    functionUses: 3
    functionsReached:
    - shuffle
    - end
    - begin
    linkageType: ''
    returnType: void
    signature: void shuffle(std::vector<DNSRecord>& rrs, bool includingAdditionals)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - type
    argTypes:
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 132
      start: 123
    functionDepth: 0
    functionLinenumber: 123
    functionLinenumberEnd: 132
    functionName: mapTypesToOrder
    functionSourceFile: /src/pdns/pdns/shuffle.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t mapTypesToOrder(uint16_t type)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::stable_sort
      Src: /src/pdns/pdns/shuffle.cc:138,1
    - Dst: begin
      Src: /src/pdns/pdns/shuffle.cc:138,1
    - Dst: end
      Src: /src/pdns/pdns/shuffle.cc:138,1
    - Dst: std::tuple
      Src: /src/pdns/pdns/shuffle.cc:139,1
    - Dst: mapTypesToOrder
      Src: /src/pdns/pdns/shuffle.cc:139,1
    - Dst: std::tuple
      Src: /src/pdns/pdns/shuffle.cc:139,1
    - Dst: mapTypesToOrder
      Src: /src/pdns/pdns/shuffle.cc:139,1
    - Dst: pdns::shuffle
      Src: /src/pdns/pdns/shuffle.cc:141,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - ' rrs'
    - includingAdditionals
    argTypes:
    - vector<DNSRecord>
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 142
      start: 136
    functionDepth: 0
    functionLinenumber: 136
    functionLinenumberEnd: 142
    functionName: pdns::orderAndShuffle
    functionSourceFile: /src/pdns/pdns/shuffle.cc
    functionUses: 0
    functionsReached:
    - pdns::shuffle
    - mapTypesToOrder
    - std::stable_sort
    - end
    - begin
    - std::tuple
    linkageType: ''
    returnType: void
    signature: void pdns::orderAndShuffle(vector<DNSRecord>& rrs, bool includingAdditionals)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/shuffle.cc:148,1
    - Dst: size
      Src: /src/pdns/pdns/shuffle.cc:155,1
    - Dst: std::unordered_set::reserve
      Src: /src/pdns/pdns/shuffle.cc:160,1
    - Dst: size
      Src: /src/pdns/pdns/shuffle.cc:160,1
    - Dst: getContent
      Src: /src/pdns/pdns/shuffle.cc:162,1
    - Dst: std::unordered_set::emplace
      Src: /src/pdns/pdns/shuffle.cc:164,1
    - Dst: std::move
      Src: /src/pdns/pdns/shuffle.cc:164,1
    - Dst: std::vector::reserve
      Src: /src/pdns/pdns/shuffle.cc:180,1
    - Dst: size
      Src: /src/pdns/pdns/shuffle.cc:180,1
    - Dst: size
      Src: /src/pdns/pdns/shuffle.cc:181,1
    - Dst: std::vector::emplace_back
      Src: /src/pdns/pdns/shuffle.cc:183,1
    - Dst: std::move
      Src: /src/pdns/pdns/shuffle.cc:183,1
    - Dst: std::move
      Src: /src/pdns/pdns/shuffle.cc:186,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 22
    argCount: 1
    argNames:
    - ' rrs'
    argTypes:
    - vector<DNSRecord>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 188
      start: 144
    functionDepth: 0
    functionLinenumber: 144
    functionLinenumberEnd: 188
    functionName: pdns::dedupRecords
    functionSourceFile: /src/pdns/pdns/shuffle.cc
    functionUses: 0
    functionsReached:
    - std::move
    - std::unordered_set::reserve
    - std::unordered_set::emplace
    - std::vector::emplace_back
    - getContent
    - size
    - std::vector::reserve
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int pdns::dedupRecords(vector<DNSRecord>& rrs)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: exit
      Src: /src/pdns/pdns/kvresp.cc:40,1
    - Dst: Socket::bind
      Src: /src/pdns/pdns/kvresp.cc:46,1
    - Dst: ComboAddress::toStringWithPort
      Src: /src/pdns/pdns/kvresp.cc:47,1
    - Dst: ComboAddress::getSocklen
      Src: /src/pdns/pdns/kvresp.cc:53,1
    - Dst: recvfrom
      Src: /src/pdns/pdns/kvresp.cc:55,1
    - Dst: Socket::getHandle
      Src: /src/pdns/pdns/kvresp.cc:55,1
    - Dst: unixDie
      Src: /src/pdns/pdns/kvresp.cc:57,1
    - Dst: stringtok
      Src: /src/pdns/pdns/kvresp.cc:61,1
    - Dst: vector::size
      Src: /src/pdns/pdns/kvresp.cc:62,1
    - Dst: find
      Src: /src/pdns/pdns/kvresp.cc:66,1
    - Dst: sendto
      Src: /src/pdns/pdns/kvresp.cc:73,1
    - Dst: Socket::getHandle
      Src: /src/pdns/pdns/kvresp.cc:73,1
    - Dst: string::c_str
      Src: /src/pdns/pdns/kvresp.cc:73,1
    - Dst: string::length
      Src: /src/pdns/pdns/kvresp.cc:73,1
    - Dst: unixDie
      Src: /src/pdns/pdns/kvresp.cc:74,1
    - Dst: what
      Src: /src/pdns/pdns/kvresp.cc:79,1
    - Dst: exit
      Src: /src/pdns/pdns/kvresp.cc:80,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 28
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 35
    functionDepth: 0
    functionLinenumber: 35
    functionLinenumberEnd: 81
    functionName: main
    functionSourceFile: /src/pdns/pdns/kvresp.cc
    functionUses: 16
    functionsReached:
    - string::c_str
    - Socket::getHandle
    - stringtok
    - vector::size
    - unixDie
    - what
    - string::length
    - recvfrom
    - sendto
    - exit
    - Socket::bind
    - ComboAddress::getSocklen
    - find
    - ComboAddress::toStringWithPort
    linkageType: ''
    returnType: int
    signature: int main(int argc, char** argv)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: close
      Src: /src/pdns/pdns/devpollmplexer.cc:46,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 48
    functionName: ~DevPollFDMultiplexer()
    functionSourceFile: /src/pdns/pdns/devpollmplexer.cc
    functionUses: 0
    functionsReached:
    - close
    linkageType: ''
    returnType: void
    signature: void ~DevPollFDMultiplexer()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 56
    functionDepth: 0
    functionLinenumber: 56
    functionLinenumberEnd: 59
    functionName: DevPollFDMultiplexer::getName
    functionSourceFile: /src/pdns/pdns/devpollmplexer.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: string
    signature: string getName() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DevPollFDMultiplexer::DevPollFDMultiplexer
      Src: /src/pdns/pdns/devpollmplexer.cc:67,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 65
    functionDepth: 0
    functionLinenumber: 65
    functionLinenumberEnd: 68
    functionName: makeDevPoll
    functionSourceFile: /src/pdns/pdns/devpollmplexer.cc
    functionUses: 0
    functionsReached:
    - DevPollFDMultiplexer::DevPollFDMultiplexer
    linkageType: ''
    returnType: FDMultiplexer
    signature: FDMultiplexer * makeDevPoll(unsigned int)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: FDMultiplexer::getMultiplexerMap
      Src: /src/pdns/pdns/devpollmplexer.cc:74,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 72
    functionDepth: 0
    functionLinenumber: 72
    functionLinenumberEnd: 75
    functionName: DevPollRegisterOurselves
    functionSourceFile: /src/pdns/pdns/devpollmplexer.cc
    functionUses: 0
    functionsReached:
    - FDMultiplexer::getMultiplexerMap
    linkageType: ''
    returnType: void
    signature: void DevPollRegisterOurselves()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: open
      Src: /src/pdns/pdns/devpollmplexer.cc:80,1
    - Dst: FDMultiplexerException
      Src: /src/pdns/pdns/devpollmplexer.cc:82,1
    - Dst: stringerror
      Src: /src/pdns/pdns/devpollmplexer.cc:82,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 78
    functionDepth: 0
    functionLinenumber: 78
    functionLinenumberEnd: 84
    functionName: DevPollFDMultiplexer::DevPollFDMultiplexer
    functionSourceFile: /src/pdns/pdns/devpollmplexer.cc
    functionUses: 1
    functionsReached:
    - FDMultiplexerException
    - stringerror
    - open
    linkageType: ''
    returnType: void
    signature: void DevPollFDMultiplexer::DevPollFDMultiplexer()
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/devpollmplexer.cc:96,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - kind
    argTypes:
    - FDMultiplexer::EventKind
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 86
    functionDepth: 0
    functionLinenumber: 86
    functionLinenumberEnd: 97
    functionName: convertEventKind
    functionSourceFile: /src/pdns/pdns/devpollmplexer.cc
    functionUses: 1
    functionsReached:
    - std::runtime_error
    linkageType: ''
    returnType: int
    signature: int convertEventKind(FDMultiplexer::EventKind kind)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: convertEventKind
      Src: /src/pdns/pdns/devpollmplexer.cc:103,1
    - Dst: write
      Src: /src/pdns/pdns/devpollmplexer.cc:106,1
    - Dst: FDMultiplexerException
      Src: /src/pdns/pdns/devpollmplexer.cc:107,1
    - Dst: stringerror
      Src: /src/pdns/pdns/devpollmplexer.cc:107,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - fd
    - kind
    argTypes:
    - int
    - FDMultiplexer::EventKind
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 99
    functionDepth: 0
    functionLinenumber: 99
    functionLinenumberEnd: 109
    functionName: DevPollFDMultiplexer::addFD
    functionSourceFile: /src/pdns/pdns/devpollmplexer.cc
    functionUses: 0
    functionsReached:
    - FDMultiplexerException
    - stringerror
    - write
    - convertEventKind
    linkageType: ''
    returnType: void
    signature: void DevPollFDMultiplexer::addFD(int fd, FDMultiplexer::EventKind kind)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: write
      Src: /src/pdns/pdns/devpollmplexer.cc:118,1
    - Dst: FDMultiplexerException
      Src: /src/pdns/pdns/devpollmplexer.cc:119,1
    - Dst: stringerror
      Src: /src/pdns/pdns/devpollmplexer.cc:119,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - fd
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 111
    functionDepth: 0
    functionLinenumber: 111
    functionLinenumberEnd: 121
    functionName: DevPollFDMultiplexer::removeFD
    functionSourceFile: /src/pdns/pdns/devpollmplexer.cc
    functionUses: 0
    functionsReached:
    - FDMultiplexerException
    - stringerror
    - write
    linkageType: ''
    returnType: void
    signature: void DevPollFDMultiplexer::removeFD(int fd, FDMultiplexer::EventKind)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/devpollmplexer.cc:125,1
    - Dst: size
      Src: /src/pdns/pdns/devpollmplexer.cc:125,1
    - Dst: size
      Src: /src/pdns/pdns/devpollmplexer.cc:127,1
    - Dst: size
      Src: /src/pdns/pdns/devpollmplexer.cc:127,1
    - Dst: std::vector::data
      Src: /src/pdns/pdns/devpollmplexer.cc:128,1
    - Dst: ioctl
      Src: /src/pdns/pdns/devpollmplexer.cc:130,1
    - Dst: FDMultiplexerException
      Src: /src/pdns/pdns/devpollmplexer.cc:133,1
    - Dst: stringerror
      Src: /src/pdns/pdns/devpollmplexer.cc:133,1
    - Dst: push_back
      Src: /src/pdns/pdns/devpollmplexer.cc:137,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/devpollmplexer.cc:137,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 2
    argNames:
    - ' fds'
    - timeout
    argTypes:
    - std::vector<int>
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 139
      start: 123
    functionDepth: 0
    functionLinenumber: 123
    functionLinenumberEnd: 139
    functionName: DevPollFDMultiplexer::getAvailableFDs
    functionSourceFile: /src/pdns/pdns/devpollmplexer.cc
    functionUses: 0
    functionsReached:
    - push_back
    - stringerror
    - size
    - std::vector::at
    - FDMultiplexerException
    - std::vector::data
    - ioctl
    linkageType: ''
    returnType: void
    signature: void DevPollFDMultiplexer::getAvailableFDs(std::vector<int>& fds, int
      timeout)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/devpollmplexer.cc:145,1
    - Dst: size
      Src: /src/pdns/pdns/devpollmplexer.cc:145,1
    - Dst: size
      Src: /src/pdns/pdns/devpollmplexer.cc:147,1
    - Dst: size
      Src: /src/pdns/pdns/devpollmplexer.cc:147,1
    - Dst: std::vector::data
      Src: /src/pdns/pdns/devpollmplexer.cc:148,1
    - Dst: ioctl
      Src: /src/pdns/pdns/devpollmplexer.cc:150,1
    - Dst: gettimeofday
      Src: /src/pdns/pdns/devpollmplexer.cc:152,1
    - Dst: FDMultiplexerException
      Src: /src/pdns/pdns/devpollmplexer.cc:155,1
    - Dst: stringerror
      Src: /src/pdns/pdns/devpollmplexer.cc:155,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/devpollmplexer.cc:164,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/devpollmplexer.cc:164,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/devpollmplexer.cc:164,1
    - Dst: find
      Src: /src/pdns/pdns/devpollmplexer.cc:165,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/devpollmplexer.cc:165,1
    - Dst: end
      Src: /src/pdns/pdns/devpollmplexer.cc:166,1
    - Dst: d_callback
      Src: /src/pdns/pdns/devpollmplexer.cc:167,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/devpollmplexer.cc:172,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/devpollmplexer.cc:172,1
    - Dst: find
      Src: /src/pdns/pdns/devpollmplexer.cc:173,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/devpollmplexer.cc:173,1
    - Dst: end
      Src: /src/pdns/pdns/devpollmplexer.cc:174,1
    - Dst: d_callback
      Src: /src/pdns/pdns/devpollmplexer.cc:175,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 26
    argCount: 2
    argNames:
    - now
    - timeout
    argTypes:
    - struct timeval*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 182
      start: 141
    functionDepth: 0
    functionLinenumber: 141
    functionLinenumberEnd: 182
    functionName: DevPollFDMultiplexer::run
    functionSourceFile: /src/pdns/pdns/devpollmplexer.cc
    functionUses: 0
    functionsReached:
    - stringerror
    - end
    - size
    - d_callback
    - std::vector::at
    - gettimeofday
    - FDMultiplexerException
    - std::vector::data
    - find
    - ioctl
    linkageType: ''
    returnType: int
    signature: int DevPollFDMultiplexer::run(struct timeval* now, int timeout)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: funcparam_t_cast<Socket*>
      Src: /src/pdns/pdns/devpollmplexer.cc:188,1
    - Dst: Socket*::recvFrom
      Src: /src/pdns/pdns/devpollmplexer.cc:191,1
    - Dst: string::size
      Src: /src/pdns/pdns/devpollmplexer.cc:192,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - fd
    - ' parameter'
    argTypes:
    - int
    - funcparam_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 193
      start: 185
    functionDepth: 0
    functionLinenumber: 185
    functionLinenumberEnd: 193
    functionName: acceptData
    functionSourceFile: /src/pdns/pdns/devpollmplexer.cc
    functionUses: 0
    functionsReached:
    - string::size
    - funcparam_t_cast<Socket*>
    - Socket*::recvFrom
    linkageType: ''
    returnType: void
    signature: void acceptData(int fd, funcparam_t& parameter)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Socket::bind
      Src: /src/pdns/pdns/devpollmplexer.cc:201,1
    - Dst: DevPollFDMultiplexer::DevPollFDMultiplexer
      Src: /src/pdns/pdns/devpollmplexer.cc:203,1
    - Dst: DevPollFDMultiplexer::addReadFD
      Src: /src/pdns/pdns/devpollmplexer.cc:205,1
    - Dst: Socket::getHandle
      Src: /src/pdns/pdns/devpollmplexer.cc:205,1
    - Dst: DevPollFDMultiplexer::run
      Src: /src/pdns/pdns/devpollmplexer.cc:208,1
    - Dst: DevPollFDMultiplexer::removeReadFD
      Src: /src/pdns/pdns/devpollmplexer.cc:210,1
    - Dst: Socket::getHandle
      Src: /src/pdns/pdns/devpollmplexer.cc:210,1
    - Dst: DevPollFDMultiplexer::removeReadFD
      Src: /src/pdns/pdns/devpollmplexer.cc:211,1
    - Dst: Socket::getHandle
      Src: /src/pdns/pdns/devpollmplexer.cc:211,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 212
      start: 196
    functionDepth: 0
    functionLinenumber: 196
    functionLinenumberEnd: 212
    functionName: main
    functionSourceFile: /src/pdns/pdns/devpollmplexer.cc
    functionUses: 16
    functionsReached:
    - DevPollFDMultiplexer::removeReadFD
    - Socket::getHandle
    - DevPollFDMultiplexer::run
    - DevPollFDMultiplexer::addReadFD
    - DevPollFDMultiplexer::DevPollFDMultiplexer
    - Socket::bind
    linkageType: ''
    returnType: int
    signature: int main()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 18
      start: 18
    functionDepth: 0
    functionLinenumber: 18
    functionLinenumberEnd: 18
    functionName: ~TLSSession()
    functionSourceFile: /src/pdns/pdns/tcpiohandler.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~TLSSession()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 24
      start: 24
    functionDepth: 0
    functionLinenumber: 24
    functionLinenumberEnd: 24
    functionName: ~TLSConnection()
    functionSourceFile: /src/pdns/pdns/tcpiohandler.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~TLSConnection()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 44
    functionDepth: 0
    functionLinenumber: 44
    functionLinenumberEnd: 47
    functionName: TLSConnection::setUnknownTicketKey
    functionSourceFile: /src/pdns/pdns/tcpiohandler.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setUnknownTicketKey()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 49
    functionDepth: 0
    functionLinenumber: 49
    functionLinenumberEnd: 52
    functionName: TLSConnection::getUnknownTicketKey
    functionSourceFile: /src/pdns/pdns/tcpiohandler.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool getUnknownTicketKey() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 54
    functionDepth: 0
    functionLinenumber: 54
    functionLinenumberEnd: 57
    functionName: TLSConnection::setResumedFromInactiveTicketKey
    functionSourceFile: /src/pdns/pdns/tcpiohandler.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setResumedFromInactiveTicketKey()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 59
    functionDepth: 0
    functionLinenumber: 59
    functionLinenumberEnd: 62
    functionName: TLSConnection::getResumedFromInactiveTicketKey
    functionSourceFile: /src/pdns/pdns/tcpiohandler.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool getResumedFromInactiveTicketKey() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: clear
      Src: /src/pdns/pdns/tcpiohandler.hh:75,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 73
    functionDepth: 1
    functionLinenumber: 73
    functionLinenumberEnd: 76
    functionName: TLSCtx::TLSCtx
    functionSourceFile: /src/pdns/pdns/tcpiohandler.hh
    functionUses: 0
    functionsReached:
    - clear
    linkageType: ''
    returnType: void
    signature: void TLSCtx()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 77
    functionDepth: 0
    functionLinenumber: 77
    functionLinenumberEnd: 77
    functionName: ~TLSCtx()
    functionSourceFile: /src/pdns/pdns/tcpiohandler.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~TLSCtx()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/tcpiohandler.hh:83,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 81
    functionDepth: 0
    functionLinenumber: 81
    functionLinenumberEnd: 84
    functionName: TLSCtx::loadTicketsKeys
    functionSourceFile: /src/pdns/pdns/tcpiohandler.hh
    functionUses: 0
    functionsReached:
    - std::runtime_error
    linkageType: ''
    returnType: void
    signature: void loadTicketsKeys(const std::string& /* file */)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/tcpiohandler.hh:87,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 85
    functionDepth: 0
    functionLinenumber: 85
    functionLinenumberEnd: 88
    functionName: TLSCtx::loadTicketsKey
    functionSourceFile: /src/pdns/pdns/tcpiohandler.hh
    functionUses: 0
    functionsReached:
    - std::runtime_error
    linkageType: ''
    returnType: void
    signature: void loadTicketsKey(const std::string& /* key */)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: test_and_set
      Src: /src/pdns/pdns/tcpiohandler.hh:92,1
    - Dst: rotateTicketsKey
      Src: /src/pdns/pdns/tcpiohandler.hh:97,1
    - Dst: clear
      Src: /src/pdns/pdns/tcpiohandler.hh:98,1
    - Dst: clear
      Src: /src/pdns/pdns/tcpiohandler.hh:101,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/tcpiohandler.hh:102,1
    - Dst: std::string
      Src: /src/pdns/pdns/tcpiohandler.hh:102,1
    - Dst: what
      Src: /src/pdns/pdns/tcpiohandler.hh:102,1
    - Dst: clear
      Src: /src/pdns/pdns/tcpiohandler.hh:105,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 16
    argCount: 1
    argNames:
    - now
    argTypes:
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 89
    functionDepth: 1
    functionLinenumber: 89
    functionLinenumberEnd: 109
    functionName: TLSCtx::handleTicketsKeyRotation
    functionSourceFile: /src/pdns/pdns/tcpiohandler.hh
    functionUses: 0
    functionsReached:
    - std::runtime_error
    - rotateTicketsKey
    - what
    - clear
    - std::string
    - test_and_set
    linkageType: ''
    returnType: void
    signature: void handleTicketsKeyRotation(time_t now)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 111
    functionDepth: 0
    functionLinenumber: 111
    functionLinenumberEnd: 114
    functionName: TLSCtx::getNextTicketsKeyRotation
    functionSourceFile: /src/pdns/pdns/tcpiohandler.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: time_t
    signature: time_t getNextTicketsKeyRotation() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' hook'
    argTypes:
    - tickets_key_added_hook
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 124
      start: 121
    functionDepth: 0
    functionLinenumber: 121
    functionLinenumberEnd: 124
    functionName: TLSCtx::setTicketsKeyAddedHook
    functionSourceFile: /src/pdns/pdns/tcpiohandler.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setTicketsKeyAddedHook(const tickets_key_added_hook& hook)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 125
    functionDepth: 0
    functionLinenumber: 125
    functionLinenumberEnd: 128
    functionName: '& getTicketsKeyAddedHook()'
    functionSourceFile: /src/pdns/pdns/tcpiohandler.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: tickets_key_added_hook
    signature: tickets_key_added_hook & getTicketsKeyAddedHook()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 132
      start: 129
    functionDepth: 0
    functionLinenumber: 129
    functionLinenumberEnd: 132
    functionName: TLSCtx::hasTicketsKeyAddedHook
    functionSourceFile: /src/pdns/pdns/tcpiohandler.hh
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool hasTicketsKeyAddedHook()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - alpn
    argTypes:
    - ALPN
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 149
      start: 147
    functionDepth: 0
    functionLinenumber: 147
    functionLinenumberEnd: 149
    functionName: TLSFrontend::TLSFrontend
    functionSourceFile: /src/pdns/pdns/tcpiohandler.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void TLSFrontend(ALPN alpn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/tcpiohandler.hh:151,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - std::shared_ptr<TLSCtx>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 153
      start: 151
    functionDepth: 0
    functionLinenumber: 151
    functionLinenumberEnd: 153
    functionName: TLSFrontend::TLSFrontend
    functionSourceFile: /src/pdns/pdns/tcpiohandler.hh
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void TLSFrontend(std::shared_ptr<TLSCtx> ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: TLSFrontend::rotateTicketsKey
      Src: /src/pdns/pdns/tcpiohandler.hh:160,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - now
    argTypes:
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 162
      start: 157
    functionDepth: 0
    functionLinenumber: 157
    functionLinenumberEnd: 162
    functionName: TLSFrontend::rotateTicketsKey
    functionSourceFile: /src/pdns/pdns/tcpiohandler.hh
    functionUses: 1
    functionsReached:
    - TLSFrontend::rotateTicketsKey
    linkageType: ''
    returnType: void
    signature: void rotateTicketsKey(time_t now)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: TLSFrontend::loadTicketsKeys
      Src: /src/pdns/pdns/tcpiohandler.hh:167,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - ' file'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 169
      start: 164
    functionDepth: 0
    functionLinenumber: 164
    functionLinenumberEnd: 169
    functionName: TLSFrontend::loadTicketsKeys
    functionSourceFile: /src/pdns/pdns/tcpiohandler.hh
    functionUses: 1
    functionsReached:
    - TLSFrontend::loadTicketsKeys
    linkageType: ''
    returnType: void
    signature: void loadTicketsKeys(const std::string& file)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: TLSFrontend::loadTicketsKey
      Src: /src/pdns/pdns/tcpiohandler.hh:174,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - ' key'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 176
      start: 171
    functionDepth: 0
    functionLinenumber: 171
    functionLinenumberEnd: 176
    functionName: TLSFrontend::loadTicketsKey
    functionSourceFile: /src/pdns/pdns/tcpiohandler.hh
    functionUses: 1
    functionsReached:
    - TLSFrontend::loadTicketsKey
    linkageType: ''
    returnType: void
    signature: void loadTicketsKey(const std::string& key)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::atomic_load_explicit
      Src: /src/pdns/pdns/tcpiohandler.hh:180,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 181
      start: 178
    functionDepth: 0
    functionLinenumber: 178
    functionLinenumberEnd: 181
    functionName: TLSFrontend::getContext
    functionSourceFile: /src/pdns/pdns/tcpiohandler.hh
    functionUses: 0
    functionsReached:
    - std::atomic_load_explicit
    linkageType: ''
    returnType: std::shared_ptr<TLSCtx>
    signature: std::shared_ptr<TLSCtx> getContext() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::atomic_store_explicit
      Src: /src/pdns/pdns/tcpiohandler.hh:185,1
    - Dst: std::move
      Src: /src/pdns/pdns/tcpiohandler.hh:185,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - parent
    argTypes:
    - std::shared_ptr<const TLSFrontend>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 186
      start: 183
    functionDepth: 0
    functionLinenumber: 183
    functionLinenumberEnd: 186
    functionName: TLSFrontend::setParent
    functionSourceFile: /src/pdns/pdns/tcpiohandler.hh
    functionUses: 0
    functionsReached:
    - std::move
    - std::atomic_store_explicit
    linkageType: ''
    returnType: void
    signature: void setParent(std::shared_ptr<const TLSFrontend> parent)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: reset
      Src: /src/pdns/pdns/tcpiohandler.hh:190,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 191
      start: 188
    functionDepth: 0
    functionLinenumber: 188
    functionLinenumberEnd: 191
    functionName: TLSFrontend::cleanup
    functionSourceFile: /src/pdns/pdns/tcpiohandler.hh
    functionUses: 0
    functionsReached:
    - reset
    linkageType: ''
    returnType: void
    signature: void cleanup()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: TLSFrontend::getTicketsKeysCount
      Src: /src/pdns/pdns/tcpiohandler.hh:196,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 200
      start: 193
    functionDepth: 0
    functionLinenumber: 193
    functionLinenumberEnd: 200
    functionName: TLSFrontend::getTicketsKeysCount
    functionSourceFile: /src/pdns/pdns/tcpiohandler.hh
    functionUses: 1
    functionsReached:
    - TLSFrontend::getTicketsKeysCount
    linkageType: ''
    returnType: size_t
    signature: size_t getTicketsKeysCount()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: localtime_r
      Src: /src/pdns/pdns/tcpiohandler.hh:207,1
    - Dst: strftime
      Src: /src/pdns/pdns/tcpiohandler.hh:208,1
    - Dst: std::string
      Src: /src/pdns/pdns/tcpiohandler.hh:210,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - rotationTime
    argTypes:
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 211
      start: 202
    functionDepth: 0
    functionLinenumber: 202
    functionLinenumberEnd: 211
    functionName: TLSFrontend::timeToString
    functionSourceFile: /src/pdns/pdns/tcpiohandler.hh
    functionUses: 0
    functionsReached:
    - strftime
    - std::string
    - localtime_r
    linkageType: ''
    returnType: std::string
    signature: std::string timeToString(time_t rotationTime)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 216
      start: 213
    functionDepth: 0
    functionLinenumber: 213
    functionLinenumberEnd: 216
    functionName: TLSFrontend::getTicketsKeyRotationDelay
    functionSourceFile: /src/pdns/pdns/tcpiohandler.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: time_t
    signature: time_t getTicketsKeyRotationDelay() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: TLSFrontend::timeToString
      Src: /src/pdns/pdns/tcpiohandler.hh:223,1
    - Dst: TLSFrontend::getNextTicketsKeyRotation
      Src: /src/pdns/pdns/tcpiohandler.hh:223,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 227
      start: 218
    functionDepth: 0
    functionLinenumber: 218
    functionLinenumberEnd: 227
    functionName: TLSFrontend::getNextTicketsKeyRotation
    functionSourceFile: /src/pdns/pdns/tcpiohandler.hh
    functionUses: 1
    functionsReached:
    - TLSFrontend::getNextTicketsKeyRotation
    - TLSFrontend::timeToString
    linkageType: ''
    returnType: std::string
    signature: std::string getNextTicketsKeyRotation() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 232
      start: 229
    functionDepth: 0
    functionLinenumber: 229
    functionLinenumberEnd: 232
    functionName: TLSFrontend::getRequestedProvider
    functionSourceFile: /src/pdns/pdns/tcpiohandler.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string getRequestedProvider() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: getName
      Src: /src/pdns/pdns/tcpiohandler.hh:237,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 240
      start: 234
    functionDepth: 0
    functionLinenumber: 234
    functionLinenumberEnd: 240
    functionName: TLSFrontend::getEffectiveProvider
    functionSourceFile: /src/pdns/pdns/tcpiohandler.hh
    functionUses: 0
    functionsReached:
    - getName
    linkageType: ''
    returnType: std::string
    signature: std::string getEffectiveProvider() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: getClientConnection
      Src: /src/pdns/pdns/tcpiohandler.hh:261,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 5
    argNames:
    - ' host'
    - hostIsAddr
    - socket
    - ' timeout'
    - ' ctx'
    argTypes:
    - std::string
    - bool
    - int
    - struct timeval
    - std::shared_ptr<TLSCtx>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 263
      start: 257
    functionDepth: 0
    functionLinenumber: 257
    functionLinenumberEnd: 263
    functionName: TCPIOHandler::TCPIOHandler
    functionSourceFile: /src/pdns/pdns/tcpiohandler.hh
    functionUses: 0
    functionsReached:
    - getClientConnection
    linkageType: ''
    returnType: void
    signature: void TCPIOHandler(const std::string& host, bool hostIsAddr, int socket,
      const struct timeval& timeout, const std::shared_ptr<TLSCtx>& ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: getConnection
      Src: /src/pdns/pdns/tcpiohandler.hh:269,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 4
    argNames:
    - socket
    - ' timeout'
    - ' ctx'
    - now
    argTypes:
    - int
    - struct timeval
    - std::shared_ptr<TLSCtx>
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 271
      start: 265
    functionDepth: 0
    functionLinenumber: 265
    functionLinenumberEnd: 271
    functionName: TCPIOHandler::TCPIOHandler
    functionSourceFile: /src/pdns/pdns/tcpiohandler.hh
    functionUses: 0
    functionsReached:
    - getConnection
    linkageType: ''
    returnType: void
    signature: void TCPIOHandler(int socket, const struct timeval& timeout, const
      std::shared_ptr<TLSCtx>& ctx, time_t now)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: close
      Src: /src/pdns/pdns/tcpiohandler.hh:275,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 276
      start: 273
    functionDepth: 0
    functionLinenumber: 273
    functionLinenumberEnd: 276
    functionName: ~TCPIOHandler()
    functionSourceFile: /src/pdns/pdns/tcpiohandler.hh
    functionUses: 0
    functionsReached:
    - close
    linkageType: ''
    returnType: void
    signature: void ~TCPIOHandler()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: TCPIOHandler::close
      Src: /src/pdns/pdns/tcpiohandler.hh:281,1
    - Dst: reset
      Src: /src/pdns/pdns/tcpiohandler.hh:282,1
    - Dst: shutdown
      Src: /src/pdns/pdns/tcpiohandler.hh:286,1
    - Dst: TCPIOHandler::close
      Src: /src/pdns/pdns/tcpiohandler.hh:287,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 290
      start: 278
    functionDepth: 0
    functionLinenumber: 278
    functionLinenumberEnd: 290
    functionName: TCPIOHandler::close
    functionSourceFile: /src/pdns/pdns/tcpiohandler.hh
    functionUses: 1
    functionsReached:
    - reset
    - shutdown
    - TCPIOHandler::close
    linkageType: ''
    returnType: void
    signature: void close()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 295
      start: 292
    functionDepth: 0
    functionLinenumber: 292
    functionLinenumberEnd: 295
    functionName: TCPIOHandler::getDescriptor
    functionSourceFile: /src/pdns/pdns/tcpiohandler.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int getDescriptor() const
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: setsockopt
      Src: /src/pdns/pdns/tcpiohandler.hh:304,1
    - Dst: SConnectWithTimeout
      Src: /src/pdns/pdns/tcpiohandler.hh:317,1
    - Dst: SConnectWithTimeout
      Src: /src/pdns/pdns/tcpiohandler.hh:322,1
    - Dst: TCPIOHandler::tryConnect
      Src: /src/pdns/pdns/tcpiohandler.hh:327,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 21
    argCount: 2
    argNames:
    - fastOpen
    - ' remote'
    argTypes:
    - bool
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 331
      start: 297
    functionDepth: 0
    functionLinenumber: 297
    functionLinenumberEnd: 331
    functionName: TCPIOHandler::tryConnect
    functionSourceFile: /src/pdns/pdns/tcpiohandler.hh
    functionUses: 1
    functionsReached:
    - SConnectWithTimeout
    - TCPIOHandler::tryConnect
    - setsockopt
    linkageType: ''
    returnType: IOState
    signature: IOState tryConnect(bool fastOpen, const ComboAddress& remote)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: setsockopt
      Src: /src/pdns/pdns/tcpiohandler.hh:340,1
    - Dst: SConnectWithTimeout
      Src: /src/pdns/pdns/tcpiohandler.hh:353,1
    - Dst: SConnectWithTimeout
      Src: /src/pdns/pdns/tcpiohandler.hh:358,1
    - Dst: TCPIOHandler::connect
      Src: /src/pdns/pdns/tcpiohandler.hh:363,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 20
    argCount: 3
    argNames:
    - fastOpen
    - ' remote'
    - ' timeout'
    argTypes:
    - bool
    - ComboAddress
    - struct timeval
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 365
      start: 333
    functionDepth: 0
    functionLinenumber: 333
    functionLinenumberEnd: 365
    functionName: TCPIOHandler::connect
    functionSourceFile: /src/pdns/pdns/tcpiohandler.hh
    functionUses: 2
    functionsReached:
    - TCPIOHandler::connect
    - SConnectWithTimeout
    - setsockopt
    linkageType: ''
    returnType: void
    signature: void connect(bool fastOpen, const ComboAddress& remote, const struct
      timeval& timeout)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: TCPIOHandler::tryHandshake
      Src: /src/pdns/pdns/tcpiohandler.hh:370,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 373
      start: 367
    functionDepth: 0
    functionLinenumber: 367
    functionLinenumberEnd: 373
    functionName: TCPIOHandler::tryHandshake
    functionSourceFile: /src/pdns/pdns/tcpiohandler.hh
    functionUses: 1
    functionsReached:
    - TCPIOHandler::tryHandshake
    linkageType: ''
    returnType: IOState
    signature: IOState tryHandshake()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: TCPIOHandler::read
      Src: /src/pdns/pdns/tcpiohandler.hh:378,1
    - Dst: readn2WithTimeout
      Src: /src/pdns/pdns/tcpiohandler.hh:380,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - buffer
    - bufferSize
    - ' readTimeout'
    argTypes:
    - void*
    - size_t
    - struct timeval
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 382
      start: 375
    functionDepth: 0
    functionLinenumber: 375
    functionLinenumberEnd: 382
    functionName: TCPIOHandler::read
    functionSourceFile: /src/pdns/pdns/tcpiohandler.hh
    functionUses: 2
    functionsReached:
    - readn2WithTimeout
    - TCPIOHandler::read
    linkageType: ''
    returnType: size_t
    signature: size_t read(void* buffer, size_t bufferSize, const struct timeval&
      readTimeout, const struct timeval& totalTimeout = {0,0}, bool allowIncomplete=false)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/tcpiohandler.hh:392,1
    - Dst: std::out_of_range
      Src: /src/pdns/pdns/tcpiohandler.hh:393,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/tcpiohandler.hh:393,1
    - Dst: size
      Src: /src/pdns/pdns/tcpiohandler.hh:393,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/tcpiohandler.hh:393,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/tcpiohandler.hh:393,1
    - Dst: TCPIOHandler::tryRead
      Src: /src/pdns/pdns/tcpiohandler.hh:397,1
    - Dst: TCPIOHandler::read
      Src: /src/pdns/pdns/tcpiohandler.hh:401,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/tcpiohandler.hh:401,1
    - Dst: at
      Src: /src/pdns/pdns/tcpiohandler.hh:401,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/tcpiohandler.hh:403,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/tcpiohandler.hh:410,1
    - Dst: stringerror
      Src: /src/pdns/pdns/tcpiohandler.hh:410,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/tcpiohandler.hh:414,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 24
    argCount: 3
    argNames:
    - ' buffer'
    - ' pos'
    - toRead
    argTypes:
    - PacketBuffer
    - size_t
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 422
      start: 390
    functionDepth: 0
    functionLinenumber: 390
    functionLinenumberEnd: 422
    functionName: TCPIOHandler::tryRead
    functionSourceFile: /src/pdns/pdns/tcpiohandler.hh
    functionUses: 1
    functionsReached:
    - reinterpret_cast<char*>
    - static_cast<size_t>
    - TCPIOHandler::tryRead
    - std::out_of_range
    - std::to_string
    - std::runtime_error
    - stringerror
    - runtime_error
    - size
    - TCPIOHandler::read
    - at
    linkageType: ''
    returnType: IOState
    signature: IOState tryRead(PacketBuffer& buffer, size_t& pos, size_t toRead, bool
      allowIncomplete=false, bool bypassFilters=false)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/tcpiohandler.hh:432,1
    - Dst: std::out_of_range
      Src: /src/pdns/pdns/tcpiohandler.hh:433,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/tcpiohandler.hh:433,1
    - Dst: size
      Src: /src/pdns/pdns/tcpiohandler.hh:433,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/tcpiohandler.hh:433,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/tcpiohandler.hh:433,1
    - Dst: TCPIOHandler::tryWrite
      Src: /src/pdns/pdns/tcpiohandler.hh:436,1
    - Dst: sendMsgWithOptions
      Src: /src/pdns/pdns/tcpiohandler.hh:442,1
    - Dst: reinterpret_cast<const char *>
      Src: /src/pdns/pdns/tcpiohandler.hh:442,1
    - Dst: at
      Src: /src/pdns/pdns/tcpiohandler.hh:442,1
    - Dst: TCPIOHandler::write
      Src: /src/pdns/pdns/tcpiohandler.hh:457,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/tcpiohandler.hh:457,1
    - Dst: at
      Src: /src/pdns/pdns/tcpiohandler.hh:457,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/tcpiohandler.hh:460,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/tcpiohandler.hh:467,1
    - Dst: stringerror
      Src: /src/pdns/pdns/tcpiohandler.hh:467,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/tcpiohandler.hh:471,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 31
    argCount: 3
    argNames:
    - ' buffer'
    - ' pos'
    - toWrite
    argTypes:
    - PacketBuffer
    - size_t
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 476
      start: 430
    functionDepth: 0
    functionLinenumber: 430
    functionLinenumberEnd: 476
    functionName: TCPIOHandler::tryWrite
    functionSourceFile: /src/pdns/pdns/tcpiohandler.hh
    functionUses: 1
    functionsReached:
    - TCPIOHandler::write
    - static_cast<size_t>
    - std::out_of_range
    - std::to_string
    - at
    - std::runtime_error
    - stringerror
    - runtime_error
    - size
    - reinterpret_cast<const char *>
    - reinterpret_cast<const char*>
    - TCPIOHandler::tryWrite
    - sendMsgWithOptions
    linkageType: ''
    returnType: IOState
    signature: IOState tryWrite(const PacketBuffer& buffer, size_t& pos, size_t toWrite)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: TCPIOHandler::write
      Src: /src/pdns/pdns/tcpiohandler.hh:481,1
    - Dst: sendMsgWithOptions
      Src: /src/pdns/pdns/tcpiohandler.hh:487,1
    - Dst: reinterpret_cast<const char *>
      Src: /src/pdns/pdns/tcpiohandler.hh:487,1
    - Dst: writen2WithTimeout
      Src: /src/pdns/pdns/tcpiohandler.hh:496,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 3
    argNames:
    - buffer
    - bufferSize
    - ' writeTimeout'
    argTypes:
    - void*
    - size_t
    - struct timeval
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 497
      start: 478
    functionDepth: 0
    functionLinenumber: 478
    functionLinenumberEnd: 497
    functionName: TCPIOHandler::write
    functionSourceFile: /src/pdns/pdns/tcpiohandler.hh
    functionUses: 3
    functionsReached:
    - TCPIOHandler::write
    - writen2WithTimeout
    - reinterpret_cast<const char *>
    - sendMsgWithOptions
    linkageType: ''
    returnType: size_t
    signature: size_t write(const void* buffer, size_t bufferSize, const struct timeval&
      writeTimeout)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: TCPIOHandler::getServerNameIndication
      Src: /src/pdns/pdns/tcpiohandler.hh:502,1
    - Dst: std::string
      Src: /src/pdns/pdns/tcpiohandler.hh:504,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 505
      start: 499
    functionDepth: 0
    functionLinenumber: 499
    functionLinenumberEnd: 505
    functionName: TCPIOHandler::getServerNameIndication
    functionSourceFile: /src/pdns/pdns/tcpiohandler.hh
    functionUses: 1
    functionsReached:
    - std::string
    - TCPIOHandler::getServerNameIndication
    linkageType: ''
    returnType: std::string
    signature: std::string getServerNameIndication() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: TCPIOHandler::getNextProtocol
      Src: /src/pdns/pdns/tcpiohandler.hh:510,1
    - Dst: std::vector<uint8_t>
      Src: /src/pdns/pdns/tcpiohandler.hh:512,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 513
      start: 507
    functionDepth: 0
    functionLinenumber: 507
    functionLinenumberEnd: 513
    functionName: TCPIOHandler::getNextProtocol
    functionSourceFile: /src/pdns/pdns/tcpiohandler.hh
    functionUses: 1
    functionsReached:
    - std::vector<uint8_t>
    - TCPIOHandler::getNextProtocol
    linkageType: ''
    returnType: std::vector<uint8_t>
    signature: std::vector<uint8_t> getNextProtocol() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: TCPIOHandler::getTLSVersion
      Src: /src/pdns/pdns/tcpiohandler.hh:518,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 521
      start: 515
    functionDepth: 0
    functionLinenumber: 515
    functionLinenumberEnd: 521
    functionName: TCPIOHandler::getTLSVersion
    functionSourceFile: /src/pdns/pdns/tcpiohandler.hh
    functionUses: 1
    functionsReached:
    - TCPIOHandler::getTLSVersion
    linkageType: ''
    returnType: LibsslTLSVersion
    signature: LibsslTLSVersion getTLSVersion() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 526
      start: 523
    functionDepth: 0
    functionLinenumber: 523
    functionLinenumberEnd: 526
    functionName: TCPIOHandler::isTLS
    functionSourceFile: /src/pdns/pdns/tcpiohandler.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool isTLS() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: TCPIOHandler::getVerifyResult
      Src: /src/pdns/pdns/tcpiohandler.hh:531,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 534
      start: 528
    functionDepth: 0
    functionLinenumber: 528
    functionLinenumberEnd: 534
    functionName: TCPIOHandler::getVerifyResult
    functionSourceFile: /src/pdns/pdns/tcpiohandler.hh
    functionUses: 1
    functionsReached:
    - TCPIOHandler::getVerifyResult
    linkageType: ''
    returnType: std::pair<long, std::string>
    signature: std::pair<long, std::string> getVerifyResult() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hasSessionBeenResumed
      Src: /src/pdns/pdns/tcpiohandler.hh:538,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 539
      start: 536
    functionDepth: 0
    functionLinenumber: 536
    functionLinenumberEnd: 539
    functionName: TCPIOHandler::hasTLSSessionBeenResumed
    functionSourceFile: /src/pdns/pdns/tcpiohandler.hh
    functionUses: 0
    functionsReached:
    - hasSessionBeenResumed
    linkageType: ''
    returnType: bool
    signature: bool hasTLSSessionBeenResumed() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TCPIOHandler::getResumedFromInactiveTicketKey
      Src: /src/pdns/pdns/tcpiohandler.hh:543,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 544
      start: 541
    functionDepth: 0
    functionLinenumber: 541
    functionLinenumberEnd: 544
    functionName: TCPIOHandler::getResumedFromInactiveTicketKey
    functionSourceFile: /src/pdns/pdns/tcpiohandler.hh
    functionUses: 1
    functionsReached:
    - TCPIOHandler::getResumedFromInactiveTicketKey
    linkageType: ''
    returnType: bool
    signature: bool getResumedFromInactiveTicketKey() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TCPIOHandler::getUnknownTicketKey
      Src: /src/pdns/pdns/tcpiohandler.hh:548,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 549
      start: 546
    functionDepth: 0
    functionLinenumber: 546
    functionLinenumberEnd: 549
    functionName: TCPIOHandler::getUnknownTicketKey
    functionSourceFile: /src/pdns/pdns/tcpiohandler.hh
    functionUses: 1
    functionsReached:
    - TCPIOHandler::getUnknownTicketKey
    linkageType: ''
    returnType: bool
    signature: bool getUnknownTicketKey() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: setSession
      Src: /src/pdns/pdns/tcpiohandler.hh:554,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ' session'
    argTypes:
    - std::unique_ptr<TLSSession>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 556
      start: 551
    functionDepth: 0
    functionLinenumber: 551
    functionLinenumberEnd: 556
    functionName: TCPIOHandler::setTLSSession
    functionSourceFile: /src/pdns/pdns/tcpiohandler.hh
    functionUses: 0
    functionsReached:
    - setSession
    linkageType: ''
    returnType: void
    signature: void setTLSSession(std::unique_ptr<TLSSession>& session)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/tcpiohandler.hh:561,1
    - Dst: getSessions
      Src: /src/pdns/pdns/tcpiohandler.hh:564,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 565
      start: 558
    functionDepth: 0
    functionLinenumber: 558
    functionLinenumberEnd: 565
    functionName: TCPIOHandler::getTLSSessions
    functionSourceFile: /src/pdns/pdns/tcpiohandler.hh
    functionUses: 0
    functionsReached:
    - getSessions
    - std::runtime_error
    linkageType: ''
    returnType: std::vector<std::unique_ptr<TLSSession>>
    signature: std::vector<std::unique_ptr<TLSSession>> getTLSSessions()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: isTCPSocketUsable
      Src: /src/pdns/pdns/tcpiohandler.hh:570,1
    - Dst: TCPIOHandler::isUsable
      Src: /src/pdns/pdns/tcpiohandler.hh:572,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 573
      start: 567
    functionDepth: 0
    functionLinenumber: 567
    functionLinenumberEnd: 573
    functionName: TCPIOHandler::isUsable
    functionSourceFile: /src/pdns/pdns/tcpiohandler.hh
    functionUses: 1
    functionsReached:
    - TCPIOHandler::isUsable
    - isTCPSocketUsable
    linkageType: ''
    returnType: bool
    signature: bool isUsable() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: TCPIOHandler::getAsyncFDs
      Src: /src/pdns/pdns/tcpiohandler.hh:580,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 581
      start: 575
    functionDepth: 0
    functionLinenumber: 575
    functionLinenumberEnd: 581
    functionName: TCPIOHandler::getAsyncFDs
    functionSourceFile: /src/pdns/pdns/tcpiohandler.hh
    functionUses: 1
    functionsReached:
    - TCPIOHandler::getAsyncFDs
    linkageType: ''
    returnType: std::vector<int>
    signature: std::vector<int> getAsyncFDs()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/libssl.hh:25,1
    - Dst: std::move
      Src: /src/pdns/pdns/libssl.hh:25,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' cert'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 26
      start: 24
    functionDepth: 0
    functionLinenumber: 24
    functionLinenumberEnd: 26
    functionName: TLSCertKeyPair
    functionSourceFile: /src/pdns/pdns/libssl.hh
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void TLSCertKeyPair(const std::string& cert, std::optional<std::string>
      key = std::nullopt, std::optional<std::string> password = std::nullopt)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - ' other'
    argTypes:
    - DNSResourceRecord
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 118
      start: 109
    functionDepth: 0
    functionLinenumber: 109
    functionLinenumberEnd: 118
    functionName: operator<(const DNSResourceRecord& other) const
    functionSourceFile: /src/pdns/pdns/dns.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool operator<(const DNSResourceRecord& other) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: reinterpret_cast<uintptr_t>
      Src: /src/pdns/pdns/dns.hh:195,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - mem
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 196
      start: 193
    functionDepth: 0
    functionLinenumber: 193
    functionLinenumberEnd: 196
    functionName: dnsheader_aligned::isMemoryAligned
    functionSourceFile: /src/pdns/pdns/dns.hh
    functionUses: 0
    functionsReached:
    - reinterpret_cast<uintptr_t>
    linkageType: ''
    returnType: bool
    signature: bool isMemoryAligned(const void* mem)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dnsheader_aligned::isMemoryAligned
      Src: /src/pdns/pdns/dns.hh:200,1
    - Dst: reinterpret_cast<const dnsheader*>
      Src: /src/pdns/pdns/dns.hh:201,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dns.hh:204,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - mem
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 207
      start: 198
    functionDepth: 0
    functionLinenumber: 198
    functionLinenumberEnd: 207
    functionName: dnsheader_aligned::dnsheader_aligned
    functionSourceFile: /src/pdns/pdns/dns.hh
    functionUses: 0
    functionsReached:
    - dnsheader_aligned::isMemoryAligned
    - memcpy
    - reinterpret_cast<const dnsheader*>
    linkageType: ''
    returnType: void
    signature: void dnsheader_aligned(const void* mem)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 208
      start: 208
    functionDepth: 0
    functionLinenumber: 208
    functionLinenumberEnd: 208
    functionName: dnsheader_aligned::dnsheader_aligned
    functionSourceFile: /src/pdns/pdns/dns.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void dnsheader_aligned(const dnsheader_aligned&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 209
      start: 209
    functionDepth: 0
    functionLinenumber: 209
    functionLinenumberEnd: 209
    functionName: dnsheader_aligned::dnsheader_aligned
    functionSourceFile: /src/pdns/pdns/dns.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void dnsheader_aligned(dnsheader_aligned&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 210
      start: 210
    functionDepth: 0
    functionLinenumber: 210
    functionLinenumberEnd: 210
    functionName: '& operator=(const dnsheader_aligned&)'
    functionSourceFile: /src/pdns/pdns/dns.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: dnsheader_aligned
    signature: dnsheader_aligned & operator=(const dnsheader_aligned&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 211
      start: 211
    functionDepth: 0
    functionLinenumber: 211
    functionLinenumberEnd: 211
    functionName: '& operator=(dnsheader_aligned&&)'
    functionSourceFile: /src/pdns/pdns/dns.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: dnsheader_aligned
    signature: dnsheader_aligned & operator=(dnsheader_aligned&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 212
      start: 212
    functionDepth: 0
    functionLinenumber: 212
    functionLinenumberEnd: 212
    functionName: ~dnsheader_aligned()
    functionSourceFile: /src/pdns/pdns/dns.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~dnsheader_aligned()
  - 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: dnsheader_aligned::get
    functionSourceFile: /src/pdns/pdns/dns.hh
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: dnsheader
    signature: dnsheader * get() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 222
      start: 219
    functionDepth: 0
    functionLinenumber: 219
    functionLinenumberEnd: 222
    functionName: '& operator*() const'
    functionSourceFile: /src/pdns/pdns/dns.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: dnsheader
    signature: dnsheader & operator*() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 227
      start: 224
    functionDepth: 0
    functionLinenumber: 224
    functionLinenumberEnd: 227
    functionName: '* operator->() const'
    functionSourceFile: /src/pdns/pdns/dns.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: dnsheader
    signature: dnsheader * operator->() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: reinterpret_cast<uint16_t*>
      Src: /src/pdns/pdns/dns.hh:237,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/dns.hh:237,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - dh
    argTypes:
    - dnsheader*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 238
      start: 234
    functionDepth: 0
    functionLinenumber: 234
    functionLinenumberEnd: 238
    functionName: getFlagsFromDNSHeader
    functionSourceFile: /src/pdns/pdns/dns.hh
    functionUses: 0
    functionsReached:
    - reinterpret_cast<char*>
    - reinterpret_cast<uint16_t*>
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t * getFlagsFromDNSHeader(dnsheader* dh)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: reinterpret_cast<const uint16_t*>
      Src: /src/pdns/pdns/dns.hh:243,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dns.hh:243,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - dh
    argTypes:
    - dnsheader*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 244
      start: 240
    functionDepth: 0
    functionLinenumber: 240
    functionLinenumberEnd: 244
    functionName: getFlagsFromDNSHeader
    functionSourceFile: /src/pdns/pdns/dns.hh
    functionUses: 0
    functionsReached:
    - reinterpret_cast<const char*>
    - reinterpret_cast<const uint16_t*>
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t * getFlagsFromDNSHeader(const dnsheader* dh)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ZoneName
      Src: /src/pdns/pdns/test-communicator_hh.cc:19,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-communicator_hh.cc:19,1
    - Dst: ZoneName
      Src: /src/pdns/pdns/test-communicator_hh.cc:20,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-communicator_hh.cc:20,1
    - Dst: ZoneName
      Src: /src/pdns/pdns/test-communicator_hh.cc:21,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-communicator_hh.cc:21,1
    - Dst: ZoneName
      Src: /src/pdns/pdns/test-communicator_hh.cc:22,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-communicator_hh.cc:22,1
    - Dst: ZoneName
      Src: /src/pdns/pdns/test-communicator_hh.cc:23,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-communicator_hh.cc:23,1
    - Dst: UniQueue::insert
      Src: /src/pdns/pdns/test-communicator_hh.cc:28,1
    - Dst: UniQueue::insert
      Src: /src/pdns/pdns/test-communicator_hh.cc:29,1
    - Dst: UniQueue::insert
      Src: /src/pdns/pdns/test-communicator_hh.cc:30,1
    - Dst: UniQueue::insert
      Src: /src/pdns/pdns/test-communicator_hh.cc:31,1
    - Dst: UniQueue::insert
      Src: /src/pdns/pdns/test-communicator_hh.cc:32,1
    - Dst: UniQueue::begin
      Src: /src/pdns/pdns/test-communicator_hh.cc:35,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-communicator_hh.cc:36,1
    - Dst: UniQueue::erase
      Src: /src/pdns/pdns/test-communicator_hh.cc:37,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-communicator_hh.cc:39,1
    - Dst: UniQueue::empty
      Src: /src/pdns/pdns/test-communicator_hh.cc:39,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 16
    functionDepth: 1
    functionLinenumber: 16
    functionLinenumberEnd: 40
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-communicator_hh.cc
    functionUses: 0
    functionsReached:
    - UniQueue::empty
    - BOOST_CHECK_EQUAL
    - ComboAddress
    - UniQueue::begin
    - UniQueue::erase
    - ZoneName
    - BOOST_CHECK
    - UniQueue::insert
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_axfr_queue_priority_order)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ZoneName
      Src: /src/pdns/pdns/test-communicator_hh.cc:45,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-communicator_hh.cc:45,1
    - Dst: ZoneName
      Src: /src/pdns/pdns/test-communicator_hh.cc:46,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-communicator_hh.cc:46,1
    - Dst: ZoneName
      Src: /src/pdns/pdns/test-communicator_hh.cc:47,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-communicator_hh.cc:47,1
    - Dst: ZoneName
      Src: /src/pdns/pdns/test-communicator_hh.cc:48,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-communicator_hh.cc:48,1
    - Dst: ZoneName
      Src: /src/pdns/pdns/test-communicator_hh.cc:49,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-communicator_hh.cc:49,1
    - Dst: UniQueue::insert
      Src: /src/pdns/pdns/test-communicator_hh.cc:54,1
    - Dst: UniQueue::insert
      Src: /src/pdns/pdns/test-communicator_hh.cc:55,1
    - Dst: UniQueue::insert
      Src: /src/pdns/pdns/test-communicator_hh.cc:56,1
    - Dst: UniQueue::insert
      Src: /src/pdns/pdns/test-communicator_hh.cc:57,1
    - Dst: UniQueue::insert
      Src: /src/pdns/pdns/test-communicator_hh.cc:58,1
    - Dst: UniQueue::begin
      Src: /src/pdns/pdns/test-communicator_hh.cc:61,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-communicator_hh.cc:62,1
    - Dst: UniQueue::erase
      Src: /src/pdns/pdns/test-communicator_hh.cc:63,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-communicator_hh.cc:65,1
    - Dst: UniQueue::empty
      Src: /src/pdns/pdns/test-communicator_hh.cc:65,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 42
    functionDepth: 1
    functionLinenumber: 42
    functionLinenumberEnd: 66
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-communicator_hh.cc
    functionUses: 0
    functionsReached:
    - UniQueue::empty
    - BOOST_CHECK_EQUAL
    - ComboAddress
    - UniQueue::begin
    - UniQueue::erase
    - ZoneName
    - BOOST_CHECK
    - UniQueue::insert
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_axfr_queue_insert_and_priority_order)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ZoneName
      Src: /src/pdns/pdns/test-communicator_hh.cc:71,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-communicator_hh.cc:71,1
    - Dst: ZoneName
      Src: /src/pdns/pdns/test-communicator_hh.cc:72,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-communicator_hh.cc:72,1
    - Dst: ZoneName
      Src: /src/pdns/pdns/test-communicator_hh.cc:73,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-communicator_hh.cc:73,1
    - Dst: ZoneName
      Src: /src/pdns/pdns/test-communicator_hh.cc:74,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-communicator_hh.cc:74,1
    - Dst: ZoneName
      Src: /src/pdns/pdns/test-communicator_hh.cc:75,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-communicator_hh.cc:75,1
    - Dst: ZoneName
      Src: /src/pdns/pdns/test-communicator_hh.cc:77,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-communicator_hh.cc:77,1
    - Dst: ZoneName
      Src: /src/pdns/pdns/test-communicator_hh.cc:78,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-communicator_hh.cc:78,1
    - Dst: UniQueue::insert
      Src: /src/pdns/pdns/test-communicator_hh.cc:82,1
    - Dst: UniQueue::insert
      Src: /src/pdns/pdns/test-communicator_hh.cc:83,1
    - Dst: UniQueue::insert
      Src: /src/pdns/pdns/test-communicator_hh.cc:84,1
    - Dst: UniQueue::insert
      Src: /src/pdns/pdns/test-communicator_hh.cc:85,1
    - Dst: UniQueue::insert
      Src: /src/pdns/pdns/test-communicator_hh.cc:86,1
    - Dst: UniQueue::insert
      Src: /src/pdns/pdns/test-communicator_hh.cc:88,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-communicator_hh.cc:89,1
    - Dst: UniQueue::modify
      Src: /src/pdns/pdns/test-communicator_hh.cc:90,1
    - Dst: UniQueue::insert
      Src: /src/pdns/pdns/test-communicator_hh.cc:96,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-communicator_hh.cc:97,1
    - Dst: UniQueue::modify
      Src: /src/pdns/pdns/test-communicator_hh.cc:98,1
    - Dst: UniQueue::begin
      Src: /src/pdns/pdns/test-communicator_hh.cc:105,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-communicator_hh.cc:106,1
    - Dst: UniQueue::erase
      Src: /src/pdns/pdns/test-communicator_hh.cc:107,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-communicator_hh.cc:109,1
    - Dst: UniQueue::empty
      Src: /src/pdns/pdns/test-communicator_hh.cc:109,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 24
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 68
    functionDepth: 1
    functionLinenumber: 68
    functionLinenumberEnd: 110
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-communicator_hh.cc
    functionUses: 0
    functionsReached:
    - UniQueue::empty
    - ComboAddress
    - BOOST_CHECK_EQUAL
    - UniQueue::begin
    - UniQueue::modify
    - UniQueue::erase
    - ZoneName
    - BOOST_CHECK
    - UniQueue::insert
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_axfr_queue_insert_and_priority_order_after_modify)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/auth-catalogzone.cc:33,1
    - Dst: empty
      Src: /src/pdns/pdns/auth-catalogzone.cc:38,1
    - Dst: json11::Json::parse
      Src: /src/pdns/pdns/auth-catalogzone.cc:44,1
    - Dst: is_null
      Src: /src/pdns/pdns/auth-catalogzone.cc:45,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/auth-catalogzone.cc:46,1
    - Dst: getTypeString
      Src: /src/pdns/pdns/auth-catalogzone.cc:49,1
    - Dst: is_null
      Src: /src/pdns/pdns/auth-catalogzone.cc:49,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 2
    argNames:
    - ' json'
    - type
    argTypes:
    - std::string
    - CatalogType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 30
    functionDepth: 0
    functionLinenumber: 30
    functionLinenumberEnd: 50
    functionName: CatalogInfo::parseJson
    functionSourceFile: /src/pdns/pdns/auth-catalogzone.cc
    functionUses: 0
    functionsReached:
    - getTypeString
    - json11::Json::parse
    - std::runtime_error
    - empty
    - is_null
    linkageType: ''
    returnType: bool
    signature: bool CatalogInfo::parseJson(const std::string& json, CatalogType type)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: CatalogInfo::parseJson
      Src: /src/pdns/pdns/auth-catalogzone.cc:54,1
    - Dst: getTypeString
      Src: /src/pdns/pdns/auth-catalogzone.cc:55,1
    - Dst: object_items
      Src: /src/pdns/pdns/auth-catalogzone.cc:55,1
    - Dst: is_null
      Src: /src/pdns/pdns/auth-catalogzone.cc:58,1
    - Dst: DNSName
      Src: /src/pdns/pdns/auth-catalogzone.cc:59,1
    - Dst: stringFromJson
      Src: /src/pdns/pdns/auth-catalogzone.cc:59,1
    - Dst: is_null
      Src: /src/pdns/pdns/auth-catalogzone.cc:63,1
    - Dst: DNSName
      Src: /src/pdns/pdns/auth-catalogzone.cc:64,1
    - Dst: stringFromJson
      Src: /src/pdns/pdns/auth-catalogzone.cc:64,1
    - Dst: countLabels
      Src: /src/pdns/pdns/auth-catalogzone.cc:65,1
    - Dst: std::out_of_range
      Src: /src/pdns/pdns/auth-catalogzone.cc:66,1
    - Dst: is_null
      Src: /src/pdns/pdns/auth-catalogzone.cc:71,1
    - Dst: is_array
      Src: /src/pdns/pdns/auth-catalogzone.cc:72,1
    - Dst: std::out_of_range
      Src: /src/pdns/pdns/auth-catalogzone.cc:73,1
    - Dst: array_items
      Src: /src/pdns/pdns/auth-catalogzone.cc:75,1
    - Dst: insert
      Src: /src/pdns/pdns/auth-catalogzone.cc:76,1
    - Dst: string_value
      Src: /src/pdns/pdns/auth-catalogzone.cc:76,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 19
    argCount: 2
    argNames:
    - ' json'
    - type
    argTypes:
    - std::string
    - CatalogType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 52
    functionDepth: 1
    functionLinenumber: 52
    functionLinenumberEnd: 80
    functionName: CatalogInfo::fromJson
    functionSourceFile: /src/pdns/pdns/auth-catalogzone.cc
    functionUses: 1
    functionsReached:
    - countLabels
    - CatalogInfo::parseJson
    - getTypeString
    - std::out_of_range
    - stringFromJson
    - string_value
    - DNSName
    - is_array
    - object_items
    - insert
    - is_null
    - array_items
    linkageType: ''
    returnType: void
    signature: void CatalogInfo::fromJson(const std::string& json, CatalogType type)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/auth-catalogzone.cc:85,1
    - Dst: empty
      Src: /src/pdns/pdns/auth-catalogzone.cc:90,1
    - Dst: toString
      Src: /src/pdns/pdns/auth-catalogzone.cc:91,1
    - Dst: empty
      Src: /src/pdns/pdns/auth-catalogzone.cc:95,1
    - Dst: countLabels
      Src: /src/pdns/pdns/auth-catalogzone.cc:96,1
    - Dst: std::out_of_range
      Src: /src/pdns/pdns/auth-catalogzone.cc:97,1
    - Dst: toString
      Src: /src/pdns/pdns/auth-catalogzone.cc:99,1
    - Dst: empty
      Src: /src/pdns/pdns/auth-catalogzone.cc:103,1
    - Dst: json11::Json::array::push_back
      Src: /src/pdns/pdns/auth-catalogzone.cc:106,1
    - Dst: object_items
      Src: /src/pdns/pdns/auth-catalogzone.cc:111,1
    - Dst: getTypeString
      Src: /src/pdns/pdns/auth-catalogzone.cc:112,1
    - Dst: json11::Json::dump
      Src: /src/pdns/pdns/auth-catalogzone.cc:114,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 20
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 115
      start: 82
    functionDepth: 0
    functionLinenumber: 82
    functionLinenumberEnd: 115
    functionName: CatalogInfo::toJson
    functionSourceFile: /src/pdns/pdns/auth-catalogzone.cc
    functionUses: 1
    functionsReached:
    - countLabels
    - toString
    - std::out_of_range
    - getTypeString
    - std::runtime_error
    - json11::Json::dump
    - empty
    - object_items
    - json11::Json::array::push_back
    linkageType: ''
    returnType: std::string
    signature: std::string CatalogInfo::toJson() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: CatalogInfo::CatalogInfo
      Src: /src/pdns/pdns/auth-catalogzone.cc:119,1
    - Dst: process
      Src: /src/pdns/pdns/auth-catalogzone.cc:120,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/auth-catalogzone.cc:120,1
    - Dst: zone::toLogString
      Src: /src/pdns/pdns/auth-catalogzone.cc:120,1
    - Dst: getKindString
      Src: /src/pdns/pdns/auth-catalogzone.cc:120,1
    - Dst: CatalogInfo::parseJson
      Src: /src/pdns/pdns/auth-catalogzone.cc:121,1
    - Dst: process
      Src: /src/pdns/pdns/auth-catalogzone.cc:122,1
    - Dst: dump
      Src: /src/pdns/pdns/auth-catalogzone.cc:122,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - ' hashes'
    - ' di'
    argTypes:
    - CatalogHashMap
    - DomainInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 124
      start: 117
    functionDepth: 1
    functionLinenumber: 117
    functionLinenumberEnd: 124
    functionName: CatalogInfo::updateCatalogHash
    functionSourceFile: /src/pdns/pdns/auth-catalogzone.cc
    functionUses: 0
    functionsReached:
    - process
    - CatalogInfo::parseJson
    - std::to_string
    - dump
    - zone::toLogString
    - CatalogInfo::CatalogInfo
    - getKindString
    linkageType: ''
    returnType: void
    signature: void CatalogInfo::updateCatalogHash(CatalogHashMap& hashes, const DomainInfo&
      di)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSZoneRecord::dr::setContent
      Src: /src/pdns/pdns/auth-catalogzone.cc:131,1
    - Dst: std::make_shared<TXTRecordContent>
      Src: /src/pdns/pdns/auth-catalogzone.cc:131,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - ' zone'
    argTypes:
    - ZoneName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 133
      start: 126
    functionDepth: 0
    functionLinenumber: 126
    functionLinenumberEnd: 133
    functionName: CatalogInfo::getCatalogVersionRecord
    functionSourceFile: /src/pdns/pdns/auth-catalogzone.cc
    functionUses: 1
    functionsReached:
    - std::make_shared<TXTRecordContent>
    - DNSZoneRecord::dr::setContent
    linkageType: ''
    returnType: DNSZoneRecord
    signature: DNSZoneRecord CatalogInfo::getCatalogVersionRecord(const ZoneName&
      zone)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: DNSName::DNSName
      Src: /src/pdns/pdns/auth-catalogzone.cc:137,1
    - Dst: empty
      Src: /src/pdns/pdns/auth-catalogzone.cc:138,1
    - Dst: CatalogInfo::getUnique
      Src: /src/pdns/pdns/auth-catalogzone.cc:139,1
    - Dst: DNSZoneRecord::dr::setContent
      Src: /src/pdns/pdns/auth-catalogzone.cc:150,1
    - Dst: std::make_shared<PTRRecordContent>
      Src: /src/pdns/pdns/auth-catalogzone.cc:150,1
    - Dst: emplace_back
      Src: /src/pdns/pdns/auth-catalogzone.cc:151,1
    - Dst: empty
      Src: /src/pdns/pdns/auth-catalogzone.cc:154,1
    - Dst: DNSZoneRecord::dr::setContent
      Src: /src/pdns/pdns/auth-catalogzone.cc:157,1
    - Dst: std::make_shared<PTRRecordContent>
      Src: /src/pdns/pdns/auth-catalogzone.cc:157,1
    - Dst: emplace_back
      Src: /src/pdns/pdns/auth-catalogzone.cc:158,1
    - Dst: DNSZoneRecord::dr::setContent
      Src: /src/pdns/pdns/auth-catalogzone.cc:165,1
    - Dst: std::make_shared<TXTRecordContent>
      Src: /src/pdns/pdns/auth-catalogzone.cc:165,1
    - Dst: txtEscape
      Src: /src/pdns/pdns/auth-catalogzone.cc:165,1
    - Dst: emplace_back
      Src: /src/pdns/pdns/auth-catalogzone.cc:166,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 22
    argCount: 2
    argNames:
    - ' zone'
    - ' dzrs'
    argTypes:
    - ZoneName
    - vector<DNSZoneRecord>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 168
      start: 135
    functionDepth: 0
    functionLinenumber: 135
    functionLinenumberEnd: 168
    functionName: CatalogInfo::toDNSZoneRecords
    functionSourceFile: /src/pdns/pdns/auth-catalogzone.cc
    functionUses: 0
    functionsReached:
    - DNSZoneRecord::dr::setContent
    - txtEscape
    - empty
    - CatalogInfo::getUnique
    - emplace_back
    - DNSName::DNSName
    - std::make_shared<PTRRecordContent>
    - std::make_shared<TXTRecordContent>
    linkageType: ''
    returnType: void
    signature: void CatalogInfo::toDNSZoneRecords(const ZoneName& zone, vector<DNSZoneRecord>&
      dzrs) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - state
    argTypes:
    - vState
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 64
    functionDepth: 0
    functionLinenumber: 64
    functionLinenumberEnd: 67
    functionName: vStateIsBogus
    functionSourceFile: /src/pdns/pdns/validate.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool vStateIsBogus(vState state)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' lhs'
    - ' rhs'
    argTypes:
    - shared_ptr<const DNSKEYRecordContent>
    - shared_ptr<const DNSKEYRecordContent>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 95
    functionDepth: 0
    functionLinenumber: 95
    functionLinenumberEnd: 98
    functionName: operator()(const shared_ptr<const DNSKEYRecordContent>& lhs, const
      shared_ptr<const DNSKEYRecordContent>& rhs) const
    functionSourceFile: /src/pdns/pdns/validate.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool operator()(const shared_ptr<const DNSKEYRecordContent>& lhs, const
      shared_ptr<const DNSKEYRecordContent>& rhs) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 118
    functionDepth: 0
    functionLinenumber: 118
    functionLinenumberEnd: 121
    functionName: pdns::validation::TooManySEC3IterationsException::TooManySEC3IterationsException
    functionSourceFile: /src/pdns/pdns/validate.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void TooManySEC3IterationsException()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 118
    functionDepth: 0
    functionLinenumber: 118
    functionLinenumberEnd: 121
    functionName: pdns::validation::TooManySEC3IterationsException::TooManySEC3IterationsException
    functionSourceFile: /src/pdns/pdns/validate.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void TooManySEC3IterationsException()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: isSet
      Src: /src/pdns/pdns/validate.hh:154,1
    - Dst: getCode
      Src: /src/pdns/pdns/validate.hh:154,1
    - Dst: isSet
      Src: /src/pdns/pdns/validate.hh:159,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - ' nsec'
    - ' type'
    argTypes:
    - NSEC
    - QType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 164
      start: 152
    functionDepth: 0
    functionLinenumber: 152
    functionLinenumberEnd: 164
    functionName: isTypeDenied
    functionSourceFile: /src/pdns/pdns/validate.hh
    functionUses: 0
    functionsReached:
    - isSet
    - getCode
    linkageType: ''
    returnType: bool
    signature: bool isTypeDenied(const NSEC& nsec, const QType& type)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: AuthQueryCache::AuthQueryCache
      Src: /src/pdns/pdns/test-packetcache_cc.cc:28,1
    - Dst: AuthQueryCache::setMaxEntries
      Src: /src/pdns/pdns/test-packetcache_cc.cc:29,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-packetcache_cc.cc:33,1
    - Dst: AuthQueryCache::size
      Src: /src/pdns/pdns/test-packetcache_cc.cc:33,1
    - Dst: AuthQueryCache::insert
      Src: /src/pdns/pdns/test-packetcache_cc.cc:34,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-packetcache_cc.cc:34,1
    - Dst: QType
      Src: /src/pdns/pdns/test-packetcache_cc.cc:34,1
    - Dst: vector<DNSZoneRecord>
      Src: /src/pdns/pdns/test-packetcache_cc.cc:34,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-packetcache_cc.cc:35,1
    - Dst: AuthQueryCache::size
      Src: /src/pdns/pdns/test-packetcache_cc.cc:35,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-packetcache_cc.cc:36,1
    - Dst: AuthQueryCache::purge
      Src: /src/pdns/pdns/test-packetcache_cc.cc:36,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-packetcache_cc.cc:37,1
    - Dst: AuthQueryCache::size
      Src: /src/pdns/pdns/test-packetcache_cc.cc:37,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-packetcache_cc.cc:42,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-packetcache_cc.cc:42,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/test-packetcache_cc.cc:42,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-packetcache_cc.cc:43,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-packetcache_cc.cc:43,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/test-packetcache_cc.cc:43,1
    - Dst: AuthQueryCache::insert
      Src: /src/pdns/pdns/test-packetcache_cc.cc:45,1
    - Dst: QType
      Src: /src/pdns/pdns/test-packetcache_cc.cc:45,1
    - Dst: vector<DNSZoneRecord>
      Src: /src/pdns/pdns/test-packetcache_cc.cc:45,1
    - Dst: AuthQueryCache::purge
      Src: /src/pdns/pdns/test-packetcache_cc.cc:46,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/test-packetcache_cc.cc:46,1
    - Dst: BOOST_FAIL
      Src: /src/pdns/pdns/test-packetcache_cc.cc:47,1
    - Dst: AuthQueryCache::insert
      Src: /src/pdns/pdns/test-packetcache_cc.cc:48,1
    - Dst: QType
      Src: /src/pdns/pdns/test-packetcache_cc.cc:48,1
    - Dst: vector<DNSZoneRecord>
      Src: /src/pdns/pdns/test-packetcache_cc.cc:48,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-packetcache_cc.cc:51,1
    - Dst: AuthQueryCache::size
      Src: /src/pdns/pdns/test-packetcache_cc.cc:51,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-packetcache_cc.cc:55,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-packetcache_cc.cc:55,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/test-packetcache_cc.cc:55,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-packetcache_cc.cc:56,1
    - Dst: AuthQueryCache::purge
      Src: /src/pdns/pdns/test-packetcache_cc.cc:56,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/test-packetcache_cc.cc:56,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-packetcache_cc.cc:59,1
    - Dst: AuthQueryCache::size
      Src: /src/pdns/pdns/test-packetcache_cc.cc:59,1
    - Dst: AuthQueryCache::getEntry
      Src: /src/pdns/pdns/test-packetcache_cc.cc:65,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-packetcache_cc.cc:65,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-packetcache_cc.cc:65,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/test-packetcache_cc.cc:65,1
    - Dst: QType
      Src: /src/pdns/pdns/test-packetcache_cc.cc:65,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-packetcache_cc.cc:69,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-packetcache_cc.cc:70,1
    - Dst: vector::size
      Src: /src/pdns/pdns/test-packetcache_cc.cc:70,1
    - Dst: vector::size
      Src: /src/pdns/pdns/test-packetcache_cc.cc:70,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 31
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 27
    functionDepth: 1
    functionLinenumber: 27
    functionLinenumberEnd: 77
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-packetcache_cc.cc
    functionUses: 0
    functionsReached:
    - AuthQueryCache::purge
    - std::to_string
    - QType
    - BOOST_CHECK_EQUAL
    - AuthQueryCache::size
    - DNSName
    - vector<DNSZoneRecord>
    - DNSName::toString
    - BOOST_FAIL
    - AuthQueryCache::AuthQueryCache
    - AuthQueryCache::getEntry
    - AuthQueryCache::insert
    - vector::size
    - AuthQueryCache::setMaxEntries
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_AuthQueryCacheSimple)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: insert
      Src: /src/pdns/pdns/test-packetcache_cc.cc:87,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-packetcache_cc.cc:87,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-packetcache_cc.cc:87,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/test-packetcache_cc.cc:87,1
    - Dst: QType
      Src: /src/pdns/pdns/test-packetcache_cc.cc:87,1
    - Dst: vector<DNSZoneRecord>
      Src: /src/pdns/pdns/test-packetcache_cc.cc:87,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 1
    argNames:
    - offset
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 82
    functionDepth: 1
    functionLinenumber: 82
    functionLinenumberEnd: 92
    functionName: threadQCMangler
    functionSourceFile: /src/pdns/pdns/test-packetcache_cc.cc
    functionUses: 0
    functionsReached:
    - std::to_string
    - QType
    - DNSName
    - vector<DNSZoneRecord>
    - insert
    linkageType: ''
    returnType: void
    signature: void threadQCMangler(unsigned int offset)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: getEntry
      Src: /src/pdns/pdns/test-packetcache_cc.cc:99,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-packetcache_cc.cc:99,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-packetcache_cc.cc:99,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/test-packetcache_cc.cc:99,1
    - Dst: QType
      Src: /src/pdns/pdns/test-packetcache_cc.cc:99,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 1
    argNames:
    - offset
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 94
    functionDepth: 0
    functionLinenumber: 94
    functionLinenumberEnd: 106
    functionName: threadQCReader
    functionSourceFile: /src/pdns/pdns/test-packetcache_cc.cc
    functionUses: 0
    functionsReached:
    - QType
    - getEntry
    - std::to_string
    - DNSName
    linkageType: ''
    returnType: void
    signature: void threadQCReader(unsigned int offset)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: AuthQueryCache::AuthQueryCache
      Src: /src/pdns/pdns/test-packetcache_cc.cc:111,1
    - Dst: AuthQueryCache::setMaxEntries
      Src: /src/pdns/pdns/test-packetcache_cc.cc:112,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/test-packetcache_cc.cc:116,1
    - Dst: std::thread
      Src: /src/pdns/pdns/test-packetcache_cc.cc:116,1
    - Dst: join
      Src: /src/pdns/pdns/test-packetcache_cc.cc:120,1
    - Dst: std::vector::clear
      Src: /src/pdns/pdns/test-packetcache_cc.cc:122,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-packetcache_cc.cc:124,1
    - Dst: AuthQueryCache::size
      Src: /src/pdns/pdns/test-packetcache_cc.cc:124,1
    - Dst: read
      Src: /src/pdns/pdns/test-packetcache_cc.cc:124,1
    - Dst: BOOST_CHECK_SMALL
      Src: /src/pdns/pdns/test-packetcache_cc.cc:125,1
    - Dst: read
      Src: /src/pdns/pdns/test-packetcache_cc.cc:125,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/test-packetcache_cc.cc:129,1
    - Dst: std::thread
      Src: /src/pdns/pdns/test-packetcache_cc.cc:129,1
    - Dst: join
      Src: /src/pdns/pdns/test-packetcache_cc.cc:133,1
    - Dst: std::vector::clear
      Src: /src/pdns/pdns/test-packetcache_cc.cc:135,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-packetcache_cc.cc:137,1
    - Dst: read
      Src: /src/pdns/pdns/test-packetcache_cc.cc:137,1
    - Dst: read
      Src: /src/pdns/pdns/test-packetcache_cc.cc:137,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 24
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 145
      start: 108
    functionDepth: 1
    functionLinenumber: 108
    functionLinenumberEnd: 145
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-packetcache_cc.cc
    functionUses: 0
    functionsReached:
    - std::vector::push_back
    - read
    - std::vector::clear
    - BOOST_CHECK_EQUAL
    - AuthQueryCache::size
    - std::thread
    - join
    - AuthQueryCache::AuthQueryCache
    - BOOST_CHECK_SMALL
    - BOOST_CHECK
    - AuthQueryCache::setMaxEntries
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_QueryCacheThreaded)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSName
      Src: /src/pdns/pdns/test-packetcache_cc.cc:155,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-packetcache_cc.cc:155,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/test-packetcache_cc.cc:155,1
    - Dst: DNSPacket::parse
      Src: /src/pdns/pdns/test-packetcache_cc.cc:159,1
    - Dst: vector::size
      Src: /src/pdns/pdns/test-packetcache_cc.cc:159,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/test-packetcache_cc.cc:161,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/test-packetcache_cc.cc:163,1
    - Dst: DNSPacketWriter::xfrIP
      Src: /src/pdns/pdns/test-packetcache_cc.cc:164,1
    - Dst: htonl
      Src: /src/pdns/pdns/test-packetcache_cc.cc:164,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/test-packetcache_cc.cc:165,1
    - Dst: DNSPacket::parse
      Src: /src/pdns/pdns/test-packetcache_cc.cc:168,1
    - Dst: vector::size
      Src: /src/pdns/pdns/test-packetcache_cc.cc:168,1
    - Dst: DNSPacket::setHash
      Src: /src/pdns/pdns/test-packetcache_cc.cc:174,1
    - Dst: canHashPacket
      Src: /src/pdns/pdns/test-packetcache_cc.cc:174,1
    - Dst: DNSPacket::getString
      Src: /src/pdns/pdns/test-packetcache_cc.cc:174,1
    - Dst: insert
      Src: /src/pdns/pdns/test-packetcache_cc.cc:177,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 1
    argNames:
    - offset
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 183
      start: 150
    functionDepth: 1
    functionLinenumber: 150
    functionLinenumberEnd: 183
    functionName: threadPCMangler
    functionSourceFile: /src/pdns/pdns/test-packetcache_cc.cc
    functionUses: 0
    functionsReached:
    - DNSPacket::setHash
    - canHashPacket
    - DNSPacketWriter::xfrIP
    - std::to_string
    - DNSPacketWriter::commit
    - htonl
    - DNSName
    - DNSPacket::parse
    - insert
    - DNSPacket::getString
    - vector::size
    - vector::clear
    - DNSPacketWriter::startRecord
    linkageType: ''
    returnType: void
    signature: void threadPCMangler(unsigned int offset)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DNSName
      Src: /src/pdns/pdns/test-packetcache_cc.cc:191,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-packetcache_cc.cc:191,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/test-packetcache_cc.cc:191,1
    - Dst: DNSPacket::parse
      Src: /src/pdns/pdns/test-packetcache_cc.cc:195,1
    - Dst: vector::size
      Src: /src/pdns/pdns/test-packetcache_cc.cc:195,1
    - Dst: get
      Src: /src/pdns/pdns/test-packetcache_cc.cc:198,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 1
    argNames:
    - offset
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 206
      start: 185
    functionDepth: 1
    functionLinenumber: 185
    functionLinenumberEnd: 206
    functionName: threadPCReader
    functionSourceFile: /src/pdns/pdns/test-packetcache_cc.cc
    functionUses: 0
    functionsReached:
    - std::to_string
    - DNSName
    - get
    - DNSPacket::parse
    - vector::size
    linkageType: ''
    returnType: void
    signature: void threadPCReader(unsigned int offset)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: AuthPacketCache::AuthPacketCache
      Src: /src/pdns/pdns/test-packetcache_cc.cc:210,1
    - Dst: AuthPacketCache::setMaxEntries
      Src: /src/pdns/pdns/test-packetcache_cc.cc:211,1
    - Dst: AuthPacketCache::setTTL
      Src: /src/pdns/pdns/test-packetcache_cc.cc:212,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/test-packetcache_cc.cc:218,1
    - Dst: std::thread
      Src: /src/pdns/pdns/test-packetcache_cc.cc:218,1
    - Dst: join
      Src: /src/pdns/pdns/test-packetcache_cc.cc:222,1
    - Dst: std::vector::clear
      Src: /src/pdns/pdns/test-packetcache_cc.cc:224,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-packetcache_cc.cc:226,1
    - Dst: AuthPacketCache::size
      Src: /src/pdns/pdns/test-packetcache_cc.cc:226,1
    - Dst: read
      Src: /src/pdns/pdns/test-packetcache_cc.cc:226,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-packetcache_cc.cc:227,1
    - Dst: read
      Src: /src/pdns/pdns/test-packetcache_cc.cc:227,1
    - Dst: BOOST_CHECK_SMALL
      Src: /src/pdns/pdns/test-packetcache_cc.cc:228,1
    - Dst: read
      Src: /src/pdns/pdns/test-packetcache_cc.cc:228,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/test-packetcache_cc.cc:232,1
    - Dst: std::thread
      Src: /src/pdns/pdns/test-packetcache_cc.cc:232,1
    - Dst: join
      Src: /src/pdns/pdns/test-packetcache_cc.cc:236,1
    - Dst: std::vector::clear
      Src: /src/pdns/pdns/test-packetcache_cc.cc:238,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-packetcache_cc.cc:249,1
    - Dst: read
      Src: /src/pdns/pdns/test-packetcache_cc.cc:249,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-packetcache_cc.cc:250,1
    - Dst: read
      Src: /src/pdns/pdns/test-packetcache_cc.cc:250,1
    - Dst: read
      Src: /src/pdns/pdns/test-packetcache_cc.cc:250,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 27
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 257
      start: 208
    functionDepth: 2
    functionLinenumber: 208
    functionLinenumberEnd: 257
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-packetcache_cc.cc
    functionUses: 0
    functionsReached:
    - AuthPacketCache::AuthPacketCache
    - std::vector::push_back
    - read
    - AuthPacketCache::setTTL
    - AuthPacketCache::setMaxEntries
    - BOOST_CHECK_EQUAL
    - std::thread
    - AuthPacketCache::size
    - join
    - BOOST_CHECK_SMALL
    - std::vector::clear
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_PacketCacheThreaded)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: cleanup
      Src: /src/pdns/pdns/test-packetcache_cc.cc:264,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 270
      start: 260
    functionDepth: 0
    functionLinenumber: 260
    functionLinenumberEnd: 270
    functionName: cacheCleaner
    functionSourceFile: /src/pdns/pdns/test-packetcache_cc.cc
    functionUses: 0
    functionsReached:
    - cleanup
    linkageType: ''
    returnType: void
    signature: void cacheCleaner()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: AuthQueryCache::AuthQueryCache
      Src: /src/pdns/pdns/test-packetcache_cc.cc:274,1
    - Dst: AuthQueryCache::setMaxEntries
      Src: /src/pdns/pdns/test-packetcache_cc.cc:275,1
    - Dst: AuthQueryCache::insert
      Src: /src/pdns/pdns/test-packetcache_cc.cc:279,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-packetcache_cc.cc:279,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-packetcache_cc.cc:279,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/test-packetcache_cc.cc:279,1
    - Dst: QType
      Src: /src/pdns/pdns/test-packetcache_cc.cc:279,1
    - Dst: vector<DNSZoneRecord>
      Src: /src/pdns/pdns/test-packetcache_cc.cc:279,1
    - Dst: sleep
      Src: /src/pdns/pdns/test-packetcache_cc.cc:282,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/test-packetcache_cc.cc:288,1
    - Dst: std::thread
      Src: /src/pdns/pdns/test-packetcache_cc.cc:288,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/test-packetcache_cc.cc:291,1
    - Dst: std::thread
      Src: /src/pdns/pdns/test-packetcache_cc.cc:291,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/test-packetcache_cc.cc:296,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/test-packetcache_cc.cc:300,1
    - Dst: std::vector::clear
      Src: /src/pdns/pdns/test-packetcache_cc.cc:302,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 25
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 308
      start: 272
    functionDepth: 1
    functionLinenumber: 272
    functionLinenumberEnd: 308
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-packetcache_cc.cc
    functionUses: 0
    functionsReached:
    - std::vector::push_back
    - std::to_string
    - QType
    - sleep
    - DNSName
    - std::vector::clear
    - std::thread
    - vector<DNSZoneRecord>
    - std::vector::at
    - AuthQueryCache::AuthQueryCache
    - AuthQueryCache::insert
    - AuthQueryCache::setMaxEntries
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_QueryCacheClean)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: arg
      Src: /src/pdns/pdns/test-packetcache_cc.cc:312,1
    - Dst: AuthPacketCache::AuthPacketCache
      Src: /src/pdns/pdns/test-packetcache_cc.cc:314,1
    - Dst: AuthPacketCache::setTTL
      Src: /src/pdns/pdns/test-packetcache_cc.cc:315,1
    - Dst: AuthPacketCache::setMaxEntries
      Src: /src/pdns/pdns/test-packetcache_cc.cc:316,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-packetcache_cc.cc:323,1
    - Dst: DNSPacket::parse
      Src: /src/pdns/pdns/test-packetcache_cc.cc:324,1
    - Dst: vector::size
      Src: /src/pdns/pdns/test-packetcache_cc.cc:324,1
    - Dst: parse
      Src: /src/pdns/pdns/test-packetcache_cc.cc:326,1
    - Dst: vector::size
      Src: /src/pdns/pdns/test-packetcache_cc.cc:326,1
    - Dst: setID
      Src: /src/pdns/pdns/test-packetcache_cc.cc:327,1
    - Dst: DNSPacketWriter::addOpt
      Src: /src/pdns/pdns/test-packetcache_cc.cc:329,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/test-packetcache_cc.cc:330,1
    - Dst: parse
      Src: /src/pdns/pdns/test-packetcache_cc.cc:331,1
    - Dst: vector::size
      Src: /src/pdns/pdns/test-packetcache_cc.cc:331,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/test-packetcache_cc.cc:333,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-packetcache_cc.cc:339,1
    - Dst: DNSPacketWriter::addOpt
      Src: /src/pdns/pdns/test-packetcache_cc.cc:340,1
    - Dst: DNSPacketWriter::optvect_t
      Src: /src/pdns/pdns/test-packetcache_cc.cc:340,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/test-packetcache_cc.cc:341,1
    - Dst: parse
      Src: /src/pdns/pdns/test-packetcache_cc.cc:342,1
    - Dst: vector::size
      Src: /src/pdns/pdns/test-packetcache_cc.cc:342,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/test-packetcache_cc.cc:343,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-packetcache_cc.cc:347,1
    - Dst: DNSPacketWriter::addOpt
      Src: /src/pdns/pdns/test-packetcache_cc.cc:348,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/test-packetcache_cc.cc:349,1
    - Dst: parse
      Src: /src/pdns/pdns/test-packetcache_cc.cc:350,1
    - Dst: vector::size
      Src: /src/pdns/pdns/test-packetcache_cc.cc:350,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/test-packetcache_cc.cc:351,1
    - Dst: EDNSSubnetOpts::setSource
      Src: /src/pdns/pdns/test-packetcache_cc.cc:355,1
    - Dst: Netmask
      Src: /src/pdns/pdns/test-packetcache_cc.cc:355,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-packetcache_cc.cc:355,1
    - Dst: DNSPacketWriter::optvect_t::emplace_back
      Src: /src/pdns/pdns/test-packetcache_cc.cc:356,1
    - Dst: EDNSSubnetOpts::makeOptString
      Src: /src/pdns/pdns/test-packetcache_cc.cc:356,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-packetcache_cc.cc:357,1
    - Dst: DNSPacketWriter::addOpt
      Src: /src/pdns/pdns/test-packetcache_cc.cc:358,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/test-packetcache_cc.cc:359,1
    - Dst: parse
      Src: /src/pdns/pdns/test-packetcache_cc.cc:360,1
    - Dst: vector::size
      Src: /src/pdns/pdns/test-packetcache_cc.cc:360,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/test-packetcache_cc.cc:361,1
    - Dst: DNSPacketWriter::optvect_t::clear
      Src: /src/pdns/pdns/test-packetcache_cc.cc:362,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-packetcache_cc.cc:366,1
    - Dst: EDNSSubnetOpts::setSource
      Src: /src/pdns/pdns/test-packetcache_cc.cc:367,1
    - Dst: Netmask
      Src: /src/pdns/pdns/test-packetcache_cc.cc:367,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-packetcache_cc.cc:367,1
    - Dst: DNSPacketWriter::optvect_t::emplace_back
      Src: /src/pdns/pdns/test-packetcache_cc.cc:368,1
    - Dst: EDNSSubnetOpts::makeOptString
      Src: /src/pdns/pdns/test-packetcache_cc.cc:368,1
    - Dst: DNSPacketWriter::addOpt
      Src: /src/pdns/pdns/test-packetcache_cc.cc:369,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/test-packetcache_cc.cc:370,1
    - Dst: parse
      Src: /src/pdns/pdns/test-packetcache_cc.cc:371,1
    - Dst: vector::size
      Src: /src/pdns/pdns/test-packetcache_cc.cc:371,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/test-packetcache_cc.cc:372,1
    - Dst: DNSPacketWriter::optvect_t::clear
      Src: /src/pdns/pdns/test-packetcache_cc.cc:373,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-packetcache_cc.cc:377,1
    - Dst: EDNSSubnetOpts::setSource
      Src: /src/pdns/pdns/test-packetcache_cc.cc:378,1
    - Dst: Netmask
      Src: /src/pdns/pdns/test-packetcache_cc.cc:378,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-packetcache_cc.cc:378,1
    - Dst: DNSPacketWriter::optvect_t::emplace_back
      Src: /src/pdns/pdns/test-packetcache_cc.cc:379,1
    - Dst: EDNSSubnetOpts::makeOptString
      Src: /src/pdns/pdns/test-packetcache_cc.cc:379,1
    - Dst: DNSPacketWriter::addOpt
      Src: /src/pdns/pdns/test-packetcache_cc.cc:380,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/test-packetcache_cc.cc:381,1
    - Dst: parse
      Src: /src/pdns/pdns/test-packetcache_cc.cc:382,1
    - Dst: vector::size
      Src: /src/pdns/pdns/test-packetcache_cc.cc:382,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/test-packetcache_cc.cc:383,1
    - Dst: DNSPacketWriter::optvect_t::clear
      Src: /src/pdns/pdns/test-packetcache_cc.cc:384,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-packetcache_cc.cc:388,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/test-packetcache_cc.cc:389,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-packetcache_cc.cc:389,1
    - Dst: DNSPacketWriter::xfrIP
      Src: /src/pdns/pdns/test-packetcache_cc.cc:390,1
    - Dst: htonl
      Src: /src/pdns/pdns/test-packetcache_cc.cc:390,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/test-packetcache_cc.cc:391,1
    - Dst: DNSPacket::parse
      Src: /src/pdns/pdns/test-packetcache_cc.cc:393,1
    - Dst: vector::size
      Src: /src/pdns/pdns/test-packetcache_cc.cc:393,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-packetcache_cc.cc:397,1
    - Dst: AuthPacketCache::get
      Src: /src/pdns/pdns/test-packetcache_cc.cc:397,1
    - Dst: AuthPacketCache::insert
      Src: /src/pdns/pdns/test-packetcache_cc.cc:399,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-packetcache_cc.cc:400,1
    - Dst: AuthPacketCache::size
      Src: /src/pdns/pdns/test-packetcache_cc.cc:400,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-packetcache_cc.cc:402,1
    - Dst: AuthPacketCache::get
      Src: /src/pdns/pdns/test-packetcache_cc.cc:402,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-packetcache_cc.cc:403,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-packetcache_cc.cc:406,1
    - Dst: AuthPacketCache::get
      Src: /src/pdns/pdns/test-packetcache_cc.cc:406,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-packetcache_cc.cc:407,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-packetcache_cc.cc:410,1
    - Dst: AuthPacketCache::get
      Src: /src/pdns/pdns/test-packetcache_cc.cc:410,1
    - Dst: AuthPacketCache::insert
      Src: /src/pdns/pdns/test-packetcache_cc.cc:412,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-packetcache_cc.cc:413,1
    - Dst: AuthPacketCache::size
      Src: /src/pdns/pdns/test-packetcache_cc.cc:413,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-packetcache_cc.cc:416,1
    - Dst: AuthPacketCache::get
      Src: /src/pdns/pdns/test-packetcache_cc.cc:416,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-packetcache_cc.cc:419,1
    - Dst: AuthPacketCache::get
      Src: /src/pdns/pdns/test-packetcache_cc.cc:419,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-packetcache_cc.cc:424,1
    - Dst: AuthPacketCache::get
      Src: /src/pdns/pdns/test-packetcache_cc.cc:424,1
    - Dst: AuthPacketCache::insert
      Src: /src/pdns/pdns/test-packetcache_cc.cc:428,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-packetcache_cc.cc:429,1
    - Dst: AuthPacketCache::size
      Src: /src/pdns/pdns/test-packetcache_cc.cc:429,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-packetcache_cc.cc:433,1
    - Dst: AuthPacketCache::get
      Src: /src/pdns/pdns/test-packetcache_cc.cc:433,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-packetcache_cc.cc:434,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-packetcache_cc.cc:437,1
    - Dst: AuthPacketCache::get
      Src: /src/pdns/pdns/test-packetcache_cc.cc:437,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-packetcache_cc.cc:439,1
    - Dst: AuthPacketCache::purge
      Src: /src/pdns/pdns/test-packetcache_cc.cc:439,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-packetcache_cc.cc:440,1
    - Dst: AuthPacketCache::get
      Src: /src/pdns/pdns/test-packetcache_cc.cc:440,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-packetcache_cc.cc:441,1
    - Dst: AuthPacketCache::size
      Src: /src/pdns/pdns/test-packetcache_cc.cc:441,1
    - Dst: AuthPacketCache::insert
      Src: /src/pdns/pdns/test-packetcache_cc.cc:443,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-packetcache_cc.cc:444,1
    - Dst: AuthPacketCache::size
      Src: /src/pdns/pdns/test-packetcache_cc.cc:444,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-packetcache_cc.cc:445,1
    - Dst: AuthPacketCache::get
      Src: /src/pdns/pdns/test-packetcache_cc.cc:445,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-packetcache_cc.cc:446,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-packetcache_cc.cc:447,1
    - Dst: AuthPacketCache::purge
      Src: /src/pdns/pdns/test-packetcache_cc.cc:447,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-packetcache_cc.cc:448,1
    - Dst: AuthPacketCache::get
      Src: /src/pdns/pdns/test-packetcache_cc.cc:448,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-packetcache_cc.cc:449,1
    - Dst: AuthPacketCache::size
      Src: /src/pdns/pdns/test-packetcache_cc.cc:449,1
    - Dst: AuthPacketCache::insert
      Src: /src/pdns/pdns/test-packetcache_cc.cc:451,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-packetcache_cc.cc:452,1
    - Dst: AuthPacketCache::size
      Src: /src/pdns/pdns/test-packetcache_cc.cc:452,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-packetcache_cc.cc:453,1
    - Dst: AuthPacketCache::get
      Src: /src/pdns/pdns/test-packetcache_cc.cc:453,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-packetcache_cc.cc:454,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-packetcache_cc.cc:455,1
    - Dst: AuthPacketCache::purge
      Src: /src/pdns/pdns/test-packetcache_cc.cc:455,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-packetcache_cc.cc:456,1
    - Dst: AuthPacketCache::get
      Src: /src/pdns/pdns/test-packetcache_cc.cc:456,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-packetcache_cc.cc:457,1
    - Dst: AuthPacketCache::size
      Src: /src/pdns/pdns/test-packetcache_cc.cc:457,1
    - Dst: AuthPacketCache::insert
      Src: /src/pdns/pdns/test-packetcache_cc.cc:459,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-packetcache_cc.cc:460,1
    - Dst: AuthPacketCache::size
      Src: /src/pdns/pdns/test-packetcache_cc.cc:460,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-packetcache_cc.cc:461,1
    - Dst: AuthPacketCache::get
      Src: /src/pdns/pdns/test-packetcache_cc.cc:461,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-packetcache_cc.cc:462,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-packetcache_cc.cc:463,1
    - Dst: AuthPacketCache::purge
      Src: /src/pdns/pdns/test-packetcache_cc.cc:463,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-packetcache_cc.cc:464,1
    - Dst: AuthPacketCache::get
      Src: /src/pdns/pdns/test-packetcache_cc.cc:464,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-packetcache_cc.cc:465,1
    - Dst: AuthPacketCache::size
      Src: /src/pdns/pdns/test-packetcache_cc.cc:465,1
    - Dst: AuthPacketCache::insert
      Src: /src/pdns/pdns/test-packetcache_cc.cc:467,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-packetcache_cc.cc:468,1
    - Dst: AuthPacketCache::size
      Src: /src/pdns/pdns/test-packetcache_cc.cc:468,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-packetcache_cc.cc:469,1
    - Dst: AuthPacketCache::purge
      Src: /src/pdns/pdns/test-packetcache_cc.cc:469,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-packetcache_cc.cc:470,1
    - Dst: AuthPacketCache::get
      Src: /src/pdns/pdns/test-packetcache_cc.cc:470,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-packetcache_cc.cc:471,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-packetcache_cc.cc:472,1
    - Dst: AuthPacketCache::size
      Src: /src/pdns/pdns/test-packetcache_cc.cc:472,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-packetcache_cc.cc:474,1
    - Dst: AuthPacketCache::purge
      Src: /src/pdns/pdns/test-packetcache_cc.cc:474,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-packetcache_cc.cc:475,1
    - Dst: AuthPacketCache::get
      Src: /src/pdns/pdns/test-packetcache_cc.cc:475,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-packetcache_cc.cc:476,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-packetcache_cc.cc:477,1
    - Dst: AuthPacketCache::size
      Src: /src/pdns/pdns/test-packetcache_cc.cc:477,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-packetcache_cc.cc:479,1
    - Dst: AuthPacketCache::purge
      Src: /src/pdns/pdns/test-packetcache_cc.cc:479,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-packetcache_cc.cc:480,1
    - Dst: AuthPacketCache::size
      Src: /src/pdns/pdns/test-packetcache_cc.cc:480,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 110
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 486
      start: 310
    functionDepth: 2
    functionLinenumber: 310
    functionLinenumberEnd: 486
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-packetcache_cc.cc
    functionUses: 0
    functionsReached:
    - AuthPacketCache::get
    - DNSPacketWriter::optvect_t::clear
    - DNSPacketWriter::optvect_t::emplace_back
    - DNSPacket::parse
    - DNSPacketWriter::optvect_t
    - vector::size
    - vector::clear
    - DNSPacketWriter::startRecord
    - Netmask
    - DNSPacketWriter::commit
    - AuthPacketCache::purge
    - EDNSSubnetOpts::setSource
    - AuthPacketCache::insert
    - DNSName
    - AuthPacketCache::setMaxEntries
    - arg
    - ComboAddress
    - AuthPacketCache::AuthPacketCache
    - parse
    - AuthPacketCache::setTTL
    - htonl
    - BOOST_CHECK_EQUAL
    - DNSPacketWriter::addOpt
    - AuthPacketCache::size
    - setID
    - EDNSSubnetOpts::makeOptString
    - DNSPacketWriter::xfrIP
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_AuthPacketCache)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSName
      Src: /src/pdns/pdns/test-packetcache_cc.cc:492,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/test-packetcache_cc.cc:492,1
    - Dst: DNSPacket::parse
      Src: /src/pdns/pdns/test-packetcache_cc.cc:495,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/test-packetcache_cc.cc:495,1
    - Dst: std::vector::data
      Src: /src/pdns/pdns/test-packetcache_cc.cc:495,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/test-packetcache_cc.cc:495,1
    - Dst: std::vector::clear
      Src: /src/pdns/pdns/test-packetcache_cc.cc:496,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/test-packetcache_cc.cc:498,1
    - Dst: DNSPacketWriter::xfrIP
      Src: /src/pdns/pdns/test-packetcache_cc.cc:499,1
    - Dst: htonl
      Src: /src/pdns/pdns/test-packetcache_cc.cc:499,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/test-packetcache_cc.cc:500,1
    - Dst: DNSPacket::parse
      Src: /src/pdns/pdns/test-packetcache_cc.cc:502,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/test-packetcache_cc.cc:502,1
    - Dst: std::vector::data
      Src: /src/pdns/pdns/test-packetcache_cc.cc:502,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/test-packetcache_cc.cc:502,1
    - Dst: DNSPacket::setHash
      Src: /src/pdns/pdns/test-packetcache_cc.cc:504,1
    - Dst: PacketCache::canHashPacket
      Src: /src/pdns/pdns/test-packetcache_cc.cc:504,1
    - Dst: DNSPacket::getString
      Src: /src/pdns/pdns/test-packetcache_cc.cc:504,1
    - Dst: insert
      Src: /src/pdns/pdns/test-packetcache_cc.cc:505,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 3
    argNames:
    - ' PC'
    - bits
    - ' view'
    argTypes:
    - AuthPacketCache
    - uint32_t
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 507
      start: 488
    functionDepth: 1
    functionLinenumber: 488
    functionLinenumberEnd: 507
    functionName: feedPacketCache
    functionSourceFile: /src/pdns/pdns/test-packetcache_cc.cc
    functionUses: 0
    functionsReached:
    - reinterpret_cast<char*>
    - DNSPacket::setHash
    - std::vector::size
    - std::to_string
    - DNSPacketWriter::xfrIP
    - htonl
    - DNSPacketWriter::commit
    - PacketCache::canHashPacket
    - DNSName
    - DNSPacket::parse
    - insert
    - DNSPacket::getString
    - DNSPacketWriter::startRecord
    - std::vector::clear
    - std::vector::data
    linkageType: ''
    returnType: void
    signature: void feedPacketCache(AuthPacketCache& PC, uint32_t bits, const std::string&
      view)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DNSName
      Src: /src/pdns/pdns/test-packetcache_cc.cc:513,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/test-packetcache_cc.cc:513,1
    - Dst: DNSPacket::parse
      Src: /src/pdns/pdns/test-packetcache_cc.cc:516,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/test-packetcache_cc.cc:516,1
    - Dst: std::vector::data
      Src: /src/pdns/pdns/test-packetcache_cc.cc:516,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/test-packetcache_cc.cc:516,1
    - Dst: get
      Src: /src/pdns/pdns/test-packetcache_cc.cc:519,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-packetcache_cc.cc:520,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-packetcache_cc.cc:524,1
    - Dst: DNSPacket::getString
      Src: /src/pdns/pdns/test-packetcache_cc.cc:525,1
    - Dst: c_str
      Src: /src/pdns/pdns/test-packetcache_cc.cc:526,1
    - Dst: size
      Src: /src/pdns/pdns/test-packetcache_cc.cc:526,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/test-packetcache_cc.cc:527,1
    - Dst: MOADNSParser::d_answers::size
      Src: /src/pdns/pdns/test-packetcache_cc.cc:527,1
    - Dst: MOADNSParser::d_answers::at
      Src: /src/pdns/pdns/test-packetcache_cc.cc:528,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/test-packetcache_cc.cc:529,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/test-packetcache_cc.cc:530,1
    - Dst: getRR
      Src: /src/pdns/pdns/test-packetcache_cc.cc:531,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/test-packetcache_cc.cc:532,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/test-packetcache_cc.cc:533,1
    - Dst: auto::getCA
      Src: /src/pdns/pdns/test-packetcache_cc.cc:533,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/test-packetcache_cc.cc:533,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 3
    argNames:
    - ' PC'
    - ' bits'
    - ' view'
    argTypes:
    - AuthPacketCache
    - std::string
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 535
      start: 509
    functionDepth: 1
    functionLinenumber: 509
    functionLinenumberEnd: 535
    functionName: slurpPacketCache
    functionSourceFile: /src/pdns/pdns/test-packetcache_cc.cc
    functionUses: 0
    functionsReached:
    - reinterpret_cast<char*>
    - getRR
    - std::vector::size
    - std::to_string
    - DNSName
    - get
    - BOOST_CHECK_EQUAL
    - size
    - MOADNSParser::d_answers::size
    - DNSPacket::parse
    - MOADNSParser::d_answers::at
    - BOOST_REQUIRE
    - DNSPacket::getString
    - c_str
    - auto::getCA
    - std::vector::data
    - BOOST_REQUIRE_EQUAL
    linkageType: ''
    returnType: void
    signature: void slurpPacketCache(AuthPacketCache& PC, const std::string& bits,
      const std::string& view)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: arg
      Src: /src/pdns/pdns/test-packetcache_cc.cc:539,1
    - Dst: AuthPacketCache::AuthPacketCache
      Src: /src/pdns/pdns/test-packetcache_cc.cc:541,1
    - Dst: AuthPacketCache::setMaxEntries
      Src: /src/pdns/pdns/test-packetcache_cc.cc:542,1
    - Dst: AuthPacketCache::setTTL
      Src: /src/pdns/pdns/test-packetcache_cc.cc:543,1
    - Dst: feedPacketCache
      Src: /src/pdns/pdns/test-packetcache_cc.cc:549,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/test-packetcache_cc.cc:550,1
    - Dst: AuthPacketCache::size
      Src: /src/pdns/pdns/test-packetcache_cc.cc:550,1
    - Dst: feedPacketCache
      Src: /src/pdns/pdns/test-packetcache_cc.cc:553,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/test-packetcache_cc.cc:554,1
    - Dst: AuthPacketCache::size
      Src: /src/pdns/pdns/test-packetcache_cc.cc:554,1
    - Dst: feedPacketCache
      Src: /src/pdns/pdns/test-packetcache_cc.cc:557,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/test-packetcache_cc.cc:558,1
    - Dst: AuthPacketCache::size
      Src: /src/pdns/pdns/test-packetcache_cc.cc:558,1
    - Dst: slurpPacketCache
      Src: /src/pdns/pdns/test-packetcache_cc.cc:562,1
    - Dst: slurpPacketCache
      Src: /src/pdns/pdns/test-packetcache_cc.cc:563,1
    - Dst: slurpPacketCache
      Src: /src/pdns/pdns/test-packetcache_cc.cc:564,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 570
      start: 537
    functionDepth: 2
    functionLinenumber: 537
    functionLinenumberEnd: 570
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-packetcache_cc.cc
    functionUses: 0
    functionsReached:
    - AuthPacketCache::AuthPacketCache
    - slurpPacketCache
    - AuthPacketCache::setTTL
    - feedPacketCache
    - AuthPacketCache::setMaxEntries
    - AuthPacketCache::size
    - arg
    - BOOST_REQUIRE_EQUAL
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_AuthPacketCacheNetmasks)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSPacket::parse
      Src: /src/pdns/pdns/test-packetcache_cc.cc:580,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/test-packetcache_cc.cc:580,1
    - Dst: std::vector::data
      Src: /src/pdns/pdns/test-packetcache_cc.cc:580,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/test-packetcache_cc.cc:580,1
    - Dst: std::vector::clear
      Src: /src/pdns/pdns/test-packetcache_cc.cc:581,1
    - Dst: DNSPacket::setHash
      Src: /src/pdns/pdns/test-packetcache_cc.cc:583,1
    - Dst: PacketCache::canHashPacket
      Src: /src/pdns/pdns/test-packetcache_cc.cc:583,1
    - Dst: DNSPacket::getString
      Src: /src/pdns/pdns/test-packetcache_cc.cc:583,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - ' qname'
    argTypes:
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 585
      start: 575
    functionDepth: 1
    functionLinenumber: 575
    functionLinenumberEnd: 585
    functionName: buildQuery
    functionSourceFile: /src/pdns/pdns/test-packetcache_cc.cc
    functionUses: 0
    functionsReached:
    - reinterpret_cast<char*>
    - DNSPacket::setHash
    - std::vector::size
    - PacketCache::canHashPacket
    - DNSPacket::parse
    - DNSPacket::getString
    - std::vector::clear
    - std::vector::data
    linkageType: ''
    returnType: DNSPacket
    signature: DNSPacket buildQuery(const DNSName& qname)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: buildQuery
      Src: /src/pdns/pdns/test-packetcache_cc.cc:589,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/test-packetcache_cc.cc:593,1
    - Dst: DNSPacketWriter::xfrIP
      Src: /src/pdns/pdns/test-packetcache_cc.cc:594,1
    - Dst: htonl
      Src: /src/pdns/pdns/test-packetcache_cc.cc:594,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/test-packetcache_cc.cc:595,1
    - Dst: DNSPacket::parse
      Src: /src/pdns/pdns/test-packetcache_cc.cc:597,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/test-packetcache_cc.cc:597,1
    - Dst: std::vector::data
      Src: /src/pdns/pdns/test-packetcache_cc.cc:597,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/test-packetcache_cc.cc:597,1
    - Dst: insert
      Src: /src/pdns/pdns/test-packetcache_cc.cc:599,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 4
    argNames:
    - ' PC'
    - ' view'
    - ipAddress
    - ' qname'
    argTypes:
    - AuthPacketCache
    - std::string
    - uint32_t
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 600
      start: 587
    functionDepth: 2
    functionLinenumber: 587
    functionLinenumberEnd: 600
    functionName: feedPacketCache2
    functionSourceFile: /src/pdns/pdns/test-packetcache_cc.cc
    functionUses: 0
    functionsReached:
    - reinterpret_cast<char*>
    - std::vector::size
    - DNSPacketWriter::commit
    - htonl
    - buildQuery
    - std::vector::data
    - DNSPacket::parse
    - insert
    - DNSPacketWriter::startRecord
    - DNSPacketWriter::xfrIP
    linkageType: ''
    returnType: void
    signature: void feedPacketCache2(AuthPacketCache& PC, const std::string& view,
      uint32_t ipAddress, const DNSName& qname)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: buildQuery
      Src: /src/pdns/pdns/test-packetcache_cc.cc:604,1
    - Dst: getViewFromNetwork
      Src: /src/pdns/pdns/test-packetcache_cc.cc:608,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/test-packetcache_cc.cc:609,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/test-packetcache_cc.cc:610,1
    - Dst: get
      Src: /src/pdns/pdns/test-packetcache_cc.cc:612,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-packetcache_cc.cc:614,1
    - Dst: DNSPacket::getString
      Src: /src/pdns/pdns/test-packetcache_cc.cc:615,1
    - Dst: c_str
      Src: /src/pdns/pdns/test-packetcache_cc.cc:616,1
    - Dst: size
      Src: /src/pdns/pdns/test-packetcache_cc.cc:616,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/test-packetcache_cc.cc:617,1
    - Dst: MOADNSParser::d_answers::size
      Src: /src/pdns/pdns/test-packetcache_cc.cc:617,1
    - Dst: MOADNSParser::d_answers::at
      Src: /src/pdns/pdns/test-packetcache_cc.cc:618,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/test-packetcache_cc.cc:619,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/test-packetcache_cc.cc:620,1
    - Dst: getRR
      Src: /src/pdns/pdns/test-packetcache_cc.cc:621,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/test-packetcache_cc.cc:622,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/test-packetcache_cc.cc:623,1
    - Dst: auto::getCA
      Src: /src/pdns/pdns/test-packetcache_cc.cc:623,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 7
    argNames:
    - ' PC'
    - ' ZC'
    - from
    - ' qname'
    - ' expectedMask'
    - ' expectedView'
    - ' expectedAddress'
    argTypes:
    - AuthPacketCache
    - AuthZoneCache
    - ComboAddress
    - DNSName
    - Netmask
    - std::string
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 626
      start: 602
    functionDepth: 2
    functionLinenumber: 602
    functionLinenumberEnd: 626
    functionName: queryPacketCache2
    functionSourceFile: /src/pdns/pdns/test-packetcache_cc.cc
    functionUses: 0
    functionsReached:
    - getRR
    - c_str
    - buildQuery
    - BOOST_CHECK_EQUAL
    - get
    - size
    - MOADNSParser::d_answers::size
    - MOADNSParser::d_answers::at
    - BOOST_REQUIRE
    - DNSPacket::getString
    - getViewFromNetwork
    - auto::getCA
    - BOOST_REQUIRE_EQUAL
    linkageType: ''
    returnType: bool
    signature: bool queryPacketCache2(AuthPacketCache& PC, AuthZoneCache& ZC, ComboAddress
      from, const DNSName& qname, const Netmask& expectedMask, const std::string&
      expectedView, const std::string& expectedAddress)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: AuthZoneCache::AuthZoneCache
      Src: /src/pdns/pdns/test-packetcache_cc.cc:632,1
    - Dst: AuthZoneCache::setRefreshInterval
      Src: /src/pdns/pdns/test-packetcache_cc.cc:633,1
    - Dst: AuthZoneCache::add
      Src: /src/pdns/pdns/test-packetcache_cc.cc:638,1
    - Dst: static_cast<domainid_t>
      Src: /src/pdns/pdns/test-packetcache_cc.cc:638,1
    - Dst: AuthZoneCache::add
      Src: /src/pdns/pdns/test-packetcache_cc.cc:639,1
    - Dst: static_cast<domainid_t>
      Src: /src/pdns/pdns/test-packetcache_cc.cc:639,1
    - Dst: AuthZoneCache::updateNetwork
      Src: /src/pdns/pdns/test-packetcache_cc.cc:646,1
    - Dst: AuthZoneCache::updateNetwork
      Src: /src/pdns/pdns/test-packetcache_cc.cc:647,1
    - Dst: AuthZoneCache::addToView
      Src: /src/pdns/pdns/test-packetcache_cc.cc:650,1
    - Dst: AuthZoneCache::addToView
      Src: /src/pdns/pdns/test-packetcache_cc.cc:651,1
    - Dst: AuthPacketCache::AuthPacketCache
      Src: /src/pdns/pdns/test-packetcache_cc.cc:655,1
    - Dst: AuthPacketCache::setMaxEntries
      Src: /src/pdns/pdns/test-packetcache_cc.cc:656,1
    - Dst: AuthPacketCache::setTTL
      Src: /src/pdns/pdns/test-packetcache_cc.cc:657,1
    - Dst: feedPacketCache2
      Src: /src/pdns/pdns/test-packetcache_cc.cc:661,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-packetcache_cc.cc:662,1
    - Dst: AuthPacketCache::size
      Src: /src/pdns/pdns/test-packetcache_cc.cc:662,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-packetcache_cc.cc:665,1
    - Dst: queryPacketCache2
      Src: /src/pdns/pdns/test-packetcache_cc.cc:665,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-packetcache_cc.cc:665,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-packetcache_cc.cc:668,1
    - Dst: queryPacketCache2
      Src: /src/pdns/pdns/test-packetcache_cc.cc:668,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-packetcache_cc.cc:668,1
    - Dst: feedPacketCache2
      Src: /src/pdns/pdns/test-packetcache_cc.cc:671,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-packetcache_cc.cc:672,1
    - Dst: AuthPacketCache::size
      Src: /src/pdns/pdns/test-packetcache_cc.cc:672,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-packetcache_cc.cc:675,1
    - Dst: queryPacketCache2
      Src: /src/pdns/pdns/test-packetcache_cc.cc:675,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-packetcache_cc.cc:675,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-packetcache_cc.cc:678,1
    - Dst: queryPacketCache2
      Src: /src/pdns/pdns/test-packetcache_cc.cc:678,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-packetcache_cc.cc:678,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/test-packetcache_cc.cc:681,1
    - Dst: std::string::append
      Src: /src/pdns/pdns/test-packetcache_cc.cc:682,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-packetcache_cc.cc:683,1
    - Dst: AuthPacketCache::purge
      Src: /src/pdns/pdns/test-packetcache_cc.cc:683,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-packetcache_cc.cc:684,1
    - Dst: AuthPacketCache::size
      Src: /src/pdns/pdns/test-packetcache_cc.cc:684,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-packetcache_cc.cc:687,1
    - Dst: queryPacketCache2
      Src: /src/pdns/pdns/test-packetcache_cc.cc:687,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-packetcache_cc.cc:687,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-packetcache_cc.cc:690,1
    - Dst: queryPacketCache2
      Src: /src/pdns/pdns/test-packetcache_cc.cc:690,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-packetcache_cc.cc:690,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/test-packetcache_cc.cc:693,1
    - Dst: std::string::append
      Src: /src/pdns/pdns/test-packetcache_cc.cc:694,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-packetcache_cc.cc:695,1
    - Dst: AuthPacketCache::purge
      Src: /src/pdns/pdns/test-packetcache_cc.cc:695,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-packetcache_cc.cc:696,1
    - Dst: AuthPacketCache::size
      Src: /src/pdns/pdns/test-packetcache_cc.cc:696,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-packetcache_cc.cc:699,1
    - Dst: queryPacketCache2
      Src: /src/pdns/pdns/test-packetcache_cc.cc:699,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-packetcache_cc.cc:699,1
    - Dst: feedPacketCache2
      Src: /src/pdns/pdns/test-packetcache_cc.cc:702,1
    - Dst: feedPacketCache2
      Src: /src/pdns/pdns/test-packetcache_cc.cc:703,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-packetcache_cc.cc:704,1
    - Dst: AuthPacketCache::size
      Src: /src/pdns/pdns/test-packetcache_cc.cc:704,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-packetcache_cc.cc:707,1
    - Dst: AuthPacketCache::purgeExact
      Src: /src/pdns/pdns/test-packetcache_cc.cc:707,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-packetcache_cc.cc:708,1
    - Dst: AuthPacketCache::size
      Src: /src/pdns/pdns/test-packetcache_cc.cc:708,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-packetcache_cc.cc:711,1
    - Dst: queryPacketCache2
      Src: /src/pdns/pdns/test-packetcache_cc.cc:711,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-packetcache_cc.cc:711,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-packetcache_cc.cc:714,1
    - Dst: queryPacketCache2
      Src: /src/pdns/pdns/test-packetcache_cc.cc:714,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-packetcache_cc.cc:714,1
    - Dst: feedPacketCache2
      Src: /src/pdns/pdns/test-packetcache_cc.cc:717,1
    - Dst: feedPacketCache2
      Src: /src/pdns/pdns/test-packetcache_cc.cc:718,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-packetcache_cc.cc:719,1
    - Dst: AuthPacketCache::size
      Src: /src/pdns/pdns/test-packetcache_cc.cc:719,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-packetcache_cc.cc:722,1
    - Dst: AuthPacketCache::purgeView
      Src: /src/pdns/pdns/test-packetcache_cc.cc:722,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-packetcache_cc.cc:723,1
    - Dst: AuthPacketCache::size
      Src: /src/pdns/pdns/test-packetcache_cc.cc:723,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-packetcache_cc.cc:726,1
    - Dst: AuthPacketCache::purgeView
      Src: /src/pdns/pdns/test-packetcache_cc.cc:726,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-packetcache_cc.cc:727,1
    - Dst: AuthPacketCache::size
      Src: /src/pdns/pdns/test-packetcache_cc.cc:727,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 42
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 728
      start: 628
    functionDepth: 3
    functionLinenumber: 628
    functionLinenumberEnd: 728
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-packetcache_cc.cc
    functionUses: 0
    functionsReached:
    - AuthPacketCache::purgeExact
    - AuthZoneCache::addToView
    - DNSName::toString
    - AuthZoneCache::setRefreshInterval
    - std::string::append
    - AuthZoneCache::updateNetwork
    - AuthZoneCache::add
    - AuthPacketCache::purge
    - AuthPacketCache::setMaxEntries
    - static_cast<domainid_t>
    - AuthZoneCache::AuthZoneCache
    - ComboAddress
    - AuthPacketCache::purgeView
    - AuthPacketCache::AuthPacketCache
    - AuthPacketCache::setTTL
    - feedPacketCache2
    - BOOST_CHECK_EQUAL
    - AuthPacketCache::size
    - queryPacketCache2
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_AuthViews)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - slog
    - algorithm
    argTypes:
    - Logr::log_t
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 39
      start: 39
    functionDepth: 0
    functionLinenumber: 39
    functionLinenumberEnd: 39
    functionName: DNSCryptoKeyEngine::DNSCryptoKeyEngine
    functionSourceFile: /src/pdns/pdns/dnssecinfra.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void DNSCryptoKeyEngine(Logr::log_t slog, unsigned int algorithm)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 40
    functionDepth: 0
    functionLinenumber: 40
    functionLinenumberEnd: 40
    functionName: ~DNSCryptoKeyEngine()
    functionSourceFile: /src/pdns/pdns/dnssecinfra.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~DNSCryptoKeyEngine()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: has_value
      Src: /src/pdns/pdns/dnssecinfra.hh:49,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnssecinfra.hh:50,1
    - Dst: get
      Src: /src/pdns/pdns/dnssecinfra.hh:50,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnssecinfra.hh:53,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 47
    functionDepth: 0
    functionLinenumber: 47
    functionLinenumberEnd: 54
    functionName: DNSCryptoKeyEngine::createFromPEMFile
    functionSourceFile: /src/pdns/pdns/dnssecinfra.hh
    functionUses: 0
    functionsReached:
    - has_value
    - get
    - std::runtime_error
    linkageType: ''
    returnType: void
    signature: void createFromPEMFile(DNSKEYRecordContent& /* drc */, std::FILE& /*
      inputFile */, const std::optional<std::reference_wrapper<const std::string>>
      filename = std::nullopt)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fmemopen
      Src: /src/pdns/pdns/dnssecinfra.hh:70,1
    - Dst: const_cast<char*>
      Src: /src/pdns/pdns/dnssecinfra.hh:70,1
    - Dst: data
      Src: /src/pdns/pdns/dnssecinfra.hh:70,1
    - Dst: length
      Src: /src/pdns/pdns/dnssecinfra.hh:70,1
    - Dst: DNSCryptoKeyEngine::createFromPEMFile
      Src: /src/pdns/pdns/dnssecinfra.hh:71,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' drc'
    - ' contents'
    argTypes:
    - DNSKEYRecordContent
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 67
    functionDepth: 0
    functionLinenumber: 67
    functionLinenumberEnd: 72
    functionName: DNSCryptoKeyEngine::createFromPEMString
    functionSourceFile: /src/pdns/pdns/dnssecinfra.hh
    functionUses: 0
    functionsReached:
    - length
    - const_cast<char*>
    - fmemopen
    - DNSCryptoKeyEngine::createFromPEMFile
    - data
    linkageType: ''
    returnType: void
    signature: void createFromPEMString(DNSKEYRecordContent& drc, const std::string&
      contents)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnssecinfra.hh:79,1
    - Dst: getName
      Src: /src/pdns/pdns/dnssecinfra.hh:79,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 77
    functionDepth: 0
    functionLinenumber: 77
    functionLinenumberEnd: 80
    functionName: DNSCryptoKeyEngine::convertToPEMFile
    functionSourceFile: /src/pdns/pdns/dnssecinfra.hh
    functionUses: 0
    functionsReached:
    - getName
    - std::runtime_error
    linkageType: ''
    returnType: void
    signature: void convertToPEMFile(std::FILE& /* outputFile */) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::string::resize
      Src: /src/pdns/pdns/dnssecinfra.hh:92,1
    - Dst: fmemopen
      Src: /src/pdns/pdns/dnssecinfra.hh:93,1
    - Dst: std::string::data
      Src: /src/pdns/pdns/dnssecinfra.hh:93,1
    - Dst: std::string::length
      Src: /src/pdns/pdns/dnssecinfra.hh:93,1
    - Dst: DNSCryptoKeyEngine::convertToPEMFile
      Src: /src/pdns/pdns/dnssecinfra.hh:94,1
    - Dst: std::fflush
      Src: /src/pdns/pdns/dnssecinfra.hh:95,1
    - Dst: pdns::UniqueFilePtr::get
      Src: /src/pdns/pdns/dnssecinfra.hh:95,1
    - Dst: std::string::resize
      Src: /src/pdns/pdns/dnssecinfra.hh:96,1
    - Dst: std::ftell
      Src: /src/pdns/pdns/dnssecinfra.hh:96,1
    - Dst: pdns::UniqueFilePtr::get
      Src: /src/pdns/pdns/dnssecinfra.hh:96,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 87
    functionDepth: 1
    functionLinenumber: 87
    functionLinenumberEnd: 99
    functionName: DNSCryptoKeyEngine::convertToPEMString
    functionSourceFile: /src/pdns/pdns/dnssecinfra.hh
    functionUses: 0
    functionsReached:
    - std::string::length
    - std::ftell
    - fmemopen
    - DNSCryptoKeyEngine::convertToPEMFile
    - std::fflush
    - std::string::data
    - std::string::resize
    - pdns::UniqueFilePtr::get
    linkageType: ''
    returnType: auto
    signature: auto convertToPEMString() const -> std::string
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnssecinfra.hh:105,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - ' msg'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 107
      start: 103
    functionDepth: 0
    functionLinenumber: 103
    functionLinenumberEnd: 107
    functionName: DNSCryptoKeyEngine::hash
    functionSourceFile: /src/pdns/pdns/dnssecinfra.hh
    functionUses: 6
    functionsReached:
    - std::runtime_error
    linkageType: ''
    returnType: std::string
    signature: std::string hash(const std::string& msg) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 113
    functionDepth: 0
    functionLinenumber: 113
    functionLinenumberEnd: 116
    functionName: DNSCryptoKeyEngine::getAlgorithm
    functionSourceFile: /src/pdns/pdns/dnssecinfra.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int getAlgorithm() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 124
      start: 121
    functionDepth: 0
    functionLinenumber: 121
    functionLinenumberEnd: 124
    functionName: DNSCryptoKeyEngine::checkKey
    functionSourceFile: /src/pdns/pdns/dnssecinfra.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool checkKey(std::optional<std::reference_wrapper<std::vector<std::string>>>
      /* errorMessages */ = std::nullopt) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 192
      start: 188
    functionDepth: 0
    functionLinenumber: 188
    functionLinenumberEnd: 192
    functionName: '& getMakers()'
    functionSourceFile: /src/pdns/pdns/dnssecinfra.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: makers_t
    signature: makers_t & getMakers()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 197
      start: 193
    functionDepth: 0
    functionLinenumber: 193
    functionLinenumberEnd: 197
    functionName: '& getAllMakers()'
    functionSourceFile: /src/pdns/pdns/dnssecinfra.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: allmakers_t
    signature: allmakers_t & getAllMakers()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getDNSKEY
      Src: /src/pdns/pdns/dnssecinfra.hh:210,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 211
      start: 208
    functionDepth: 0
    functionLinenumber: 208
    functionLinenumberEnd: 211
    functionName: getTag
    functionSourceFile: /src/pdns/pdns/dnssecinfra.hh
    functionUses: 1
    functionsReached:
    - getDNSKEY
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t getTag() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 216
      start: 213
    functionDepth: 0
    functionLinenumber: 213
    functionLinenumberEnd: 216
    functionName: '& getKey() const'
    functionSourceFile: /src/pdns/pdns/dnssecinfra.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::shared_ptr<DNSCryptoKeyEngine>
    signature: std::shared_ptr<DNSCryptoKeyEngine> & getKey() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getAlgorithm
      Src: /src/pdns/pdns/dnssecinfra.hh:223,1
    - Dst: computeDNSKEY
      Src: /src/pdns/pdns/dnssecinfra.hh:224,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - ' key'
    - flags
    argTypes:
    - std::shared_ptr<DNSCryptoKeyEngine>
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 225
      start: 219
    functionDepth: 0
    functionLinenumber: 219
    functionLinenumberEnd: 225
    functionName: setKey
    functionSourceFile: /src/pdns/pdns/dnssecinfra.hh
    functionUses: 4
    functionsReached:
    - computeDNSKEY
    - getAlgorithm
    linkageType: ''
    returnType: void
    signature: void setKey(std::shared_ptr<DNSCryptoKeyEngine>& key, uint16_t flags,
      std::optional<uint8_t> algorithm = std::nullopt)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnssecinfra.hh:230,1
    - Dst: getAlgorithm
      Src: /src/pdns/pdns/dnssecinfra.hh:232,1
    - Dst: computeDNSKEY
      Src: /src/pdns/pdns/dnssecinfra.hh:233,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - ' key'
    - flags
    argTypes:
    - std::unique_ptr<DNSCryptoKeyEngine>
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 234
      start: 228
    functionDepth: 0
    functionLinenumber: 228
    functionLinenumberEnd: 234
    functionName: setKey
    functionSourceFile: /src/pdns/pdns/dnssecinfra.hh
    functionUses: 4
    functionsReached:
    - computeDNSKEY
    - std::move
    - getAlgorithm
    linkageType: ''
    returnType: void
    signature: void setKey(std::unique_ptr<DNSCryptoKeyEngine>&& key, uint16_t flags,
      std::optional<uint8_t> algorithm = std::nullopt)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 241
      start: 238
    functionDepth: 0
    functionLinenumber: 238
    functionLinenumberEnd: 241
    functionName: getFlags
    functionSourceFile: /src/pdns/pdns/dnssecinfra.hh
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t getFlags() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 246
      start: 243
    functionDepth: 0
    functionLinenumber: 243
    functionLinenumberEnd: 246
    functionName: getAlgorithm
    functionSourceFile: /src/pdns/pdns/dnssecinfra.hh
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: uint8_t
    signature: uint8_t getAlgorithm() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: stringtok
      Src: /src/pdns/pdns/dnssecinfra.hh:264,1
    - Dst: stringtok
      Src: /src/pdns/pdns/dnssecinfra.hh:265,1
    - Dst: reverse
      Src: /src/pdns/pdns/dnssecinfra.hh:267,1
    - Dst: std::vector::begin
      Src: /src/pdns/pdns/dnssecinfra.hh:267,1
    - Dst: std::vector::end
      Src: /src/pdns/pdns/dnssecinfra.hh:267,1
    - Dst: reverse
      Src: /src/pdns/pdns/dnssecinfra.hh:268,1
    - Dst: begin
      Src: /src/pdns/pdns/dnssecinfra.hh:268,1
    - Dst: end
      Src: /src/pdns/pdns/dnssecinfra.hh:268,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - ' a'
    - ' b'
    argTypes:
    - std::string
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 271
      start: 261
    functionDepth: 0
    functionLinenumber: 261
    functionLinenumberEnd: 271
    functionName: operator()(const std::string& a, const std::string& b)
    functionSourceFile: /src/pdns/pdns/dnssecinfra.hh
    functionUses: 0
    functionsReached:
    - std::vector::end
    - stringtok
    - std::vector::begin
    - reverse
    - end
    - begin
    linkageType: ''
    returnType: bool
    signature: bool operator()(const std::string& a, const std::string& b)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: serialize
      Src: /src/pdns/pdns/dnssecinfra.hh:276,1
    - Dst: serialize
      Src: /src/pdns/pdns/dnssecinfra.hh:276,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' a'
    - ' b'
    argTypes:
    - shared_ptr<const DNSRecordContent>
    - shared_ptr<const DNSRecordContent>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 277
      start: 275
    functionDepth: 0
    functionLinenumber: 275
    functionLinenumberEnd: 277
    functionName: operator() (const shared_ptr<const DNSRecordContent>& a, const shared_ptr<const
      DNSRecordContent>& b) const
    functionSourceFile: /src/pdns/pdns/dnssecinfra.hh
    functionUses: 0
    functionsReached:
    - serialize
    linkageType: ''
    returnType: bool
    signature: bool operator() (const shared_ptr<const DNSRecordContent>& a, const
      shared_ptr<const DNSRecordContent>& b) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::string
      Src: /src/pdns/pdns/malloctrace.hh:40,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 40
    functionDepth: 0
    functionLinenumber: 40
    functionLinenumberEnd: 40
    functionName: MallocTracer::getAllocs
    functionSourceFile: /src/pdns/pdns/malloctrace.hh
    functionUses: 0
    functionsReached:
    - std::string
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t getAllocs(const std::string& = std::string()) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::string
      Src: /src/pdns/pdns/malloctrace.hh:41,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 41
    functionDepth: 0
    functionLinenumber: 41
    functionLinenumberEnd: 41
    functionName: MallocTracer::getAllocFlux
    functionSourceFile: /src/pdns/pdns/malloctrace.hh
    functionUses: 0
    functionsReached:
    - std::string
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t getAllocFlux(const std::string& = std::string()) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::string
      Src: /src/pdns/pdns/malloctrace.hh:42,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 42
    functionDepth: 0
    functionLinenumber: 42
    functionLinenumberEnd: 42
    functionName: MallocTracer::getTotAllocated
    functionSourceFile: /src/pdns/pdns/malloctrace.hh
    functionUses: 0
    functionsReached:
    - std::string
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t getTotAllocated(const std::string& = std::string()) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/malloctrace.hh:43,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 43
    functionName: MallocTracer::getNumOut
    functionSourceFile: /src/pdns/pdns/malloctrace.hh
    functionUses: 0
    functionsReached:
    - size
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t getNumOut()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: BindParser::BindParser
      Src: /src/pdns/pdns/test-bindparser_cc.cc:29,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-bindparser_cc.cc:30,1
    - Dst: BindParser::parse
      Src: /src/pdns/pdns/test-bindparser_cc.cc:30,1
    - Dst: BindParser::setVerbose
      Src: /src/pdns/pdns/test-bindparser_cc.cc:31,1
    - Dst: std::getenv
      Src: /src/pdns/pdns/test-bindparser_cc.cc:32,1
    - Dst: BindParser::parse
      Src: /src/pdns/pdns/test-bindparser_cc.cc:37,1
    - Dst: std::ostringstream::str
      Src: /src/pdns/pdns/test-bindparser_cc.cc:37,1
    - Dst: BindParser::getDomains
      Src: /src/pdns/pdns/test-bindparser_cc.cc:39,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-bindparser_cc.cc:40,1
    - Dst: vector::size
      Src: /src/pdns/pdns/test-bindparser_cc.cc:40,1
    - Dst: checkzone
      Src: /src/pdns/pdns/test-bindparser_cc.cc:50,1
    - Dst: checkzone
      Src: /src/pdns/pdns/test-bindparser_cc.cc:51,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-bindparser_cc.cc:52,1
    - Dst: toString
      Src: /src/pdns/pdns/test-bindparser_cc.cc:52,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-bindparser_cc.cc:52,1
    - Dst: checkzone
      Src: /src/pdns/pdns/test-bindparser_cc.cc:53,1
    - Dst: checkzone
      Src: /src/pdns/pdns/test-bindparser_cc.cc:54,1
    - Dst: checkzone
      Src: /src/pdns/pdns/test-bindparser_cc.cc:55,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-bindparser_cc.cc:56,1
    - Dst: toString
      Src: /src/pdns/pdns/test-bindparser_cc.cc:56,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-bindparser_cc.cc:56,1
    - Dst: checkzone
      Src: /src/pdns/pdns/test-bindparser_cc.cc:57,1
    - Dst: checkzone
      Src: /src/pdns/pdns/test-bindparser_cc.cc:58,1
    - Dst: checkzone
      Src: /src/pdns/pdns/test-bindparser_cc.cc:59,1
    - Dst: checkzone
      Src: /src/pdns/pdns/test-bindparser_cc.cc:60,1
    - Dst: checkzone
      Src: /src/pdns/pdns/test-bindparser_cc.cc:61,1
    - Dst: checkzone
      Src: /src/pdns/pdns/test-bindparser_cc.cc:62,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 22
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 25
    functionDepth: 1
    functionLinenumber: 25
    functionLinenumberEnd: 63
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-bindparser_cc.cc
    functionUses: 0
    functionsReached:
    - BindParser::setVerbose
    - toString
    - BindParser::parse
    - std::ostringstream::str
    - checkzone
    - std::getenv
    - BindParser::getDomains
    - BOOST_CHECK_EQUAL
    - BOOST_CHECK_THROW
    - vector::size
    - BindParser::BindParser
    - ComboAddress
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_parser)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 11
    argNames:
    - (
    - i
    - ','
    - dname
    - ','
    - fname
    - ','
    - ztype
    - ','
    - nprimaries
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 42
    functionDepth: 0
    functionLinenumber: 42
    functionLinenumberEnd: 49
    functionName: checkzone
    functionSourceFile: /src/pdns/pdns/test-bindparser_cc.cc
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: checkzone(i, dname, fname, ztype, nprimaries)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<const char*>
      Src: /src/pdns/pdns/misc.cc:78,1
    - Dst: TCPIOHandler::write
      Src: /src/pdns/pdns/misc.cc:82,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/misc.cc:85,1
    - Dst: unixDie
      Src: /src/pdns/pdns/misc.cc:87,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/misc.cc:90,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 3
    argNames:
    - fileDesc
    - buf
    - count
    argTypes:
    - int
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 76
    functionDepth: 0
    functionLinenumber: 76
    functionLinenumberEnd: 97
    functionName: writen2
    functionSourceFile: /src/pdns/pdns/misc.cc
    functionUses: 4
    functionsReached:
    - TCPIOHandler::write
    - static_cast<const char*>
    - unixDie
    - std::runtime_error
    linkageType: ''
    returnType: size_t
    signature: size_t writen2(int fileDesc, const void *buf, size_t count)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: read
      Src: /src/pdns/pdns/misc.cc:104,1
    - Dst: static_cast<char *>
      Src: /src/pdns/pdns/misc.cc:104,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/misc.cc:106,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/misc.cc:110,1
    - Dst: unixDie
      Src: /src/pdns/pdns/misc.cc:112,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/misc.cc:115,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 17
    argCount: 3
    argNames:
    - fileDesc
    - buffer
    - len
    argTypes:
    - int
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 99
    functionDepth: 0
    functionLinenumber: 99
    functionLinenumberEnd: 121
    functionName: readn2
    functionSourceFile: /src/pdns/pdns/misc.cc
    functionUses: 1
    functionsReached:
    - static_cast<size_t>
    - read
    - std::runtime_error
    - unixDie
    - runtime_error
    - static_cast<char *>
    linkageType: ''
    returnType: size_t
    signature: size_t readn2(int fileDesc, void* buffer, size_t len)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: gettimeofday
      Src: /src/pdns/pdns/misc.cc:129,1
    - Dst: read
      Src: /src/pdns/pdns/misc.cc:133,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/misc.cc:141,1
    - Dst: waitForData
      Src: /src/pdns/pdns/misc.cc:146,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/misc.cc:151,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/misc.cc:153,1
    - Dst: unixDie
      Src: /src/pdns/pdns/misc.cc:157,1
    - Dst: gettimeofday
      Src: /src/pdns/pdns/misc.cc:163,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/misc.cc:166,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 36
    argCount: 6
    argNames:
    - fd
    - buffer
    - len
    - ' idleTimeout'
    - ' totalTimeout'
    - allowIncomplete
    argTypes:
    - int
    - void*
    - size_t
    - struct timeval
    - struct timeval
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 175
      start: 123
    functionDepth: 0
    functionLinenumber: 123
    functionLinenumberEnd: 175
    functionName: readn2WithTimeout
    functionSourceFile: /src/pdns/pdns/misc.cc
    functionUses: 2
    functionsReached:
    - read
    - unixDie
    - runtime_error
    - waitForData
    - gettimeofday
    linkageType: ''
    returnType: size_t
    signature: size_t readn2WithTimeout(int fd, void* buffer, size_t len, const struct
      timeval& idleTimeout, const struct timeval& totalTimeout, bool allowIncomplete)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: write
      Src: /src/pdns/pdns/misc.cc:181,1
    - Dst: reinterpret_cast<const char *>
      Src: /src/pdns/pdns/misc.cc:181,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/misc.cc:187,1
    - Dst: waitForRWData
      Src: /src/pdns/pdns/misc.cc:190,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/misc.cc:195,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/misc.cc:197,1
    - Dst: unixDie
      Src: /src/pdns/pdns/misc.cc:201,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 21
    argCount: 4
    argNames:
    - fd
    - buffer
    - len
    - ' timeout'
    argTypes:
    - int
    - void*
    - size_t
    - struct timeval
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 208
      start: 177
    functionDepth: 0
    functionLinenumber: 177
    functionLinenumberEnd: 208
    functionName: writen2WithTimeout
    functionSourceFile: /src/pdns/pdns/misc.cc
    functionUses: 1
    functionsReached:
    - unixDie
    - runtime_error
    - reinterpret_cast<const char *>
    - write
    - waitForRWData
    linkageType: ''
    returnType: size_t
    signature: size_t writen2WithTimeout(int fd, const void * buffer, size_t len,
      const struct timeval& timeout)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::string::resize
      Src: /src/pdns/pdns/misc.cc:214,1
    - Dst: strerror_r
      Src: /src/pdns/pdns/misc.cc:218,1
    - Dst: std::string::data
      Src: /src/pdns/pdns/misc.cc:218,1
    - Dst: std::string::length
      Src: /src/pdns/pdns/misc.cc:218,1
    - Dst: strerror_r
      Src: /src/pdns/pdns/misc.cc:222,1
    - Dst: std::string::data
      Src: /src/pdns/pdns/misc.cc:222,1
    - Dst: std::string::length
      Src: /src/pdns/pdns/misc.cc:222,1
    - Dst: std::string::c_str
      Src: /src/pdns/pdns/misc.cc:223,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - errnum
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 234
      start: 210
    functionDepth: 1
    functionLinenumber: 210
    functionLinenumberEnd: 234
    functionName: pdns::getMessageFromErrno
    functionSourceFile: /src/pdns/pdns/misc.cc
    functionUses: 2
    functionsReached:
    - std::string::length
    - std::string::c_str
    - std::string::data
    - std::string::resize
    - strerror_r
    linkageType: ''
    returnType: auto
    signature: auto pdns::getMessageFromErrno(const int errnum) -> std::string
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: ERR_get_error_all
      Src: /src/pdns/pdns/misc.cc:245,1
    - Dst: std::string
      Src: /src/pdns/pdns/misc.cc:246,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/misc.cc:246,1
    - Dst: ERR_lib_error_string
      Src: /src/pdns/pdns/misc.cc:248,1
    - Dst: std::string
      Src: /src/pdns/pdns/misc.cc:250,1
    - Dst: ERR_reason_error_string
      Src: /src/pdns/pdns/misc.cc:253,1
    - Dst: std::string
      Src: /src/pdns/pdns/misc.cc:255,1
    - Dst: std::string
      Src: /src/pdns/pdns/misc.cc:259,1
    - Dst: std::string
      Src: /src/pdns/pdns/misc.cc:262,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/misc.cc:262,1
    - Dst: std::string
      Src: /src/pdns/pdns/misc.cc:265,1
    - Dst: ERR_get_error
      Src: /src/pdns/pdns/misc.cc:269,1
    - Dst: std::string
      Src: /src/pdns/pdns/misc.cc:270,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/misc.cc:270,1
    - Dst: ERR_lib_error_string
      Src: /src/pdns/pdns/misc.cc:272,1
    - Dst: std::string
      Src: /src/pdns/pdns/misc.cc:274,1
    - Dst: ERR_func_error_string
      Src: /src/pdns/pdns/misc.cc:277,1
    - Dst: std::string
      Src: /src/pdns/pdns/misc.cc:279,1
    - Dst: ERR_reason_error_string
      Src: /src/pdns/pdns/misc.cc:282,1
    - Dst: std::string
      Src: /src/pdns/pdns/misc.cc:284,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 32
    argCount: 1
    argNames:
    - ' errorMessage'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 289
      start: 237
    functionDepth: 0
    functionLinenumber: 237
    functionLinenumberEnd: 289
    functionName: pdns::OpenSSL::error(const std::string& errorMessage) -> std::runtime_error
    functionSourceFile: /src/pdns/pdns/misc.cc
    functionUses: 0
    functionsReached:
    - ERR_get_error
    - ERR_get_error_all
    - std::to_string
    - ERR_reason_error_string
    - ERR_lib_error_string
    - ERR_func_error_string
    - std::string
    linkageType: ''
    returnType: auto
    signature: auto pdns::OpenSSL::error(const std::string& errorMessage) -> std::runtime_error
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/misc.cc:293,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' componentName'
    - ' errorMessage'
    argTypes:
    - std::string
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 294
      start: 291
    functionDepth: 0
    functionLinenumber: 291
    functionLinenumberEnd: 294
    functionName: pdns::OpenSSL::error(const std::string& componentName, const std::string&
      errorMessage) -> std::runtime_error
    functionSourceFile: /src/pdns/pdns/misc.cc
    functionUses: 0
    functionsReached:
    - Logging::Logger::error
    linkageType: ''
    returnType: auto
    signature: auto pdns::OpenSSL::error(const std::string& componentName, const std::string&
      errorMessage) -> std::runtime_error
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: time
      Src: /src/pdns/pdns/misc.cc:299,1
    - Dst: localtime_r
      Src: /src/pdns/pdns/misc.cc:301,1
    - Dst: strftime
      Src: /src/pdns/pdns/misc.cc:304,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/misc.cc:304,1
    - Dst: std::array::size
      Src: /src/pdns/pdns/misc.cc:304,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/misc.cc:308,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 309
      start: 297
    functionDepth: 0
    functionLinenumber: 297
    functionLinenumberEnd: 309
    functionName: nowTime
    functionSourceFile: /src/pdns/pdns/misc.cc
    functionUses: 1
    functionsReached:
    - localtime_r
    - time
    - strftime
    - std::array::data
    - std::array::size
    linkageType: ''
    returnType: string
    signature: string nowTime()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: waitForRWData
      Src: /src/pdns/pdns/misc.cc:314,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - fileDesc
    - seconds
    - mseconds
    argTypes:
    - int
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 315
      start: 312
    functionDepth: 0
    functionLinenumber: 312
    functionLinenumberEnd: 315
    functionName: waitForData
    functionSourceFile: /src/pdns/pdns/misc.cc
    functionUses: 8
    functionsReached:
    - waitForRWData
    linkageType: ''
    returnType: int
    signature: int waitForData(int fileDesc, int seconds, int mseconds)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: waitForRWData
      Src: /src/pdns/pdns/misc.cc:319,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - fileDesc
    - timeout
    argTypes:
    - int
    - struct timeval
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 320
      start: 317
    functionDepth: 0
    functionLinenumber: 317
    functionLinenumberEnd: 320
    functionName: waitForData
    functionSourceFile: /src/pdns/pdns/misc.cc
    functionUses: 8
    functionsReached:
    - waitForRWData
    linkageType: ''
    returnType: int
    signature: int waitForData(int fileDesc, struct timeval timeout)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/pdns/pdns/misc.cc:325,1
    - Dst: poll
      Src: /src/pdns/pdns/misc.cc:335,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 6
    argNames:
    - fileDesc
    - waitForRead
    - seconds
    - mseconds
    - error
    - disconnected
    argTypes:
    - int
    - bool
    - int
    - int
    - bool*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 346
      start: 322
    functionDepth: 0
    functionLinenumber: 322
    functionLinenumberEnd: 346
    functionName: waitForRWData
    functionSourceFile: /src/pdns/pdns/misc.cc
    functionUses: 7
    functionsReached:
    - memset
    - poll
    linkageType: ''
    returnType: int
    signature: int waitForRWData(int fileDesc, bool waitForRead, int seconds, int
      mseconds, bool* error, bool* disconnected)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: waitForRWData
      Src: /src/pdns/pdns/misc.cc:350,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/misc.cc:350,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/misc.cc:350,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - fileDesc
    - waitForRead
    - timeout
    - error
    - disconnected
    argTypes:
    - int
    - bool
    - struct timeval
    - bool*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 351
      start: 348
    functionDepth: 0
    functionLinenumber: 348
    functionLinenumberEnd: 351
    functionName: waitForRWData
    functionSourceFile: /src/pdns/pdns/misc.cc
    functionUses: 8
    functionsReached:
    - waitForRWData
    - static_cast<int>
    linkageType: ''
    returnType: int
    signature: int waitForRWData(int fileDesc, bool waitForRead, struct timeval timeout,
      bool* error, bool* disconnected)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: set::count
      Src: /src/pdns/pdns/misc.cc:357,1
    - Dst: set::insert
      Src: /src/pdns/pdns/misc.cc:358,1
    - Dst: set::size
      Src: /src/pdns/pdns/misc.cc:362,1
    - Dst: memset
      Src: /src/pdns/pdns/misc.cc:363,1
    - Dst: std::vector::data
      Src: /src/pdns/pdns/misc.cc:363,1
    - Dst: set::size
      Src: /src/pdns/pdns/misc.cc:363,1
    - Dst: poll
      Src: /src/pdns/pdns/misc.cc:373,1
    - Dst: std::vector::data
      Src: /src/pdns/pdns/misc.cc:373,1
    - Dst: set::size
      Src: /src/pdns/pdns/misc.cc:373,1
    - Dst: poll
      Src: /src/pdns/pdns/misc.cc:375,1
    - Dst: std::vector::data
      Src: /src/pdns/pdns/misc.cc:375,1
    - Dst: set::size
      Src: /src/pdns/pdns/misc.cc:375,1
    - Dst: set::insert
      Src: /src/pdns/pdns/misc.cc:382,1
    - Dst: set::begin
      Src: /src/pdns/pdns/misc.cc:385,1
    - Dst: advance
      Src: /src/pdns/pdns/misc.cc:386,1
    - Dst: dns_random
      Src: /src/pdns/pdns/misc.cc:386,1
    - Dst: set::size
      Src: /src/pdns/pdns/misc.cc:386,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 22
    argCount: 4
    argNames:
    - ' fds'
    - seconds
    - mseconds
    - fdOut
    argTypes:
    - set<int>
    - int
    - int
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 389
      start: 354
    functionDepth: 1
    functionLinenumber: 354
    functionLinenumberEnd: 389
    functionName: waitForMultiData
    functionSourceFile: /src/pdns/pdns/misc.cc
    functionUses: 1
    functionsReached:
    - set::insert
    - advance
    - set::size
    - dns_random
    - memset
    - set::begin
    - set::count
    - poll
    - std::vector::data
    linkageType: ''
    returnType: int
    signature: int waitForMultiData(const set<int>& fds, const int seconds, const
      int mseconds, int* fdOut)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: std::setprecision
      Src: /src/pdns/pdns/misc.cc:397,1
    - Dst: std::setprecision
      Src: /src/pdns/pdns/misc.cc:399,1
    - Dst: std::setprecision
      Src: /src/pdns/pdns/misc.cc:401,1
    - Dst: std::setprecision
      Src: /src/pdns/pdns/misc.cc:403,1
    - Dst: ostringstream::str
      Src: /src/pdns/pdns/misc.cc:405,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 1
    argNames:
    - passed
    argTypes:
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 406
      start: 391
    functionDepth: 0
    functionLinenumber: 391
    functionLinenumberEnd: 406
    functionName: humanDuration
    functionSourceFile: /src/pdns/pdns/misc.cc
    functionUses: 0
    functionsReached:
    - std::setprecision
    - ostringstream::str
    linkageType: ''
    returnType: string
    signature: string humanDuration(time_t passed)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: string::size
      Src: /src/pdns/pdns/misc.cc:410,1
    - Dst: string::size
      Src: /src/pdns/pdns/misc.cc:413,1
    - Dst: string::substr
      Src: /src/pdns/pdns/misc.cc:421,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - item
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 422
      start: 408
    functionDepth: 0
    functionLinenumber: 408
    functionLinenumberEnd: 422
    functionName: unquotify
    functionSourceFile: /src/pdns/pdns/misc.cc
    functionUses: 1
    functionsReached:
    - string::substr
    - string::size
    linkageType: ''
    returnType: string
    signature: string unquotify(const string &item)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: string::find_first_of
      Src: /src/pdns/pdns/misc.cc:426,1
    - Dst: string::resize
      Src: /src/pdns/pdns/misc.cc:428,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - line
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 430
      start: 424
    functionDepth: 1
    functionLinenumber: 424
    functionLinenumberEnd: 430
    functionName: stripLine
    functionSourceFile: /src/pdns/pdns/misc.cc
    functionUses: 0
    functionsReached:
    - string::resize
    - string::find_first_of
    linkageType: ''
    returnType: void
    signature: void stripLine(string &line)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: string::append
      Src: /src/pdns/pdns/misc.cc:436,1
    - Dst: string::append
      Src: /src/pdns/pdns/misc.cc:437,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - text
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 439
      start: 432
    functionDepth: 0
    functionLinenumber: 432
    functionLinenumberEnd: 439
    functionName: urlEncode
    functionSourceFile: /src/pdns/pdns/misc.cc
    functionUses: 0
    functionsReached:
    - string::append
    linkageType: ''
    returnType: string
    signature: string urlEncode(const string &text)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sysconf
      Src: /src/pdns/pdns/misc.cc:448,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 456
      start: 441
    functionDepth: 0
    functionLinenumber: 441
    functionLinenumberEnd: 456
    functionName: getMaxHostNameSize
    functionSourceFile: /src/pdns/pdns/misc.cc
    functionUses: 0
    functionsReached:
    - sysconf
    linkageType: ''
    returnType: size_t
    signature: size_t getMaxHostNameSize()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: getMaxHostNameSize
      Src: /src/pdns/pdns/misc.cc:460,1
    - Dst: std::string::resize
      Src: /src/pdns/pdns/misc.cc:462,1
    - Dst: gethostname
      Src: /src/pdns/pdns/misc.cc:464,1
    - Dst: std::string::data
      Src: /src/pdns/pdns/misc.cc:464,1
    - Dst: std::string::resize
      Src: /src/pdns/pdns/misc.cc:468,1
    - Dst: strlen
      Src: /src/pdns/pdns/misc.cc:468,1
    - Dst: std::string::c_str
      Src: /src/pdns/pdns/misc.cc:468,1
    - Dst: std::make_optional
      Src: /src/pdns/pdns/misc.cc:469,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 470
      start: 458
    functionDepth: 1
    functionLinenumber: 458
    functionLinenumberEnd: 470
    functionName: getHostname
    functionSourceFile: /src/pdns/pdns/misc.cc
    functionUses: 0
    functionsReached:
    - std::string::c_str
    - getMaxHostNameSize
    - std::string::data
    - std::string::resize
    - strlen
    - std::make_optional
    - gethostname
    linkageType: ''
    returnType: std::optional<string>
    signature: std::optional<string> getHostname()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: getHostname
      Src: /src/pdns/pdns/misc.cc:474,1
    - Dst: auto::has_value
      Src: /src/pdns/pdns/misc.cc:475,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/misc.cc:476,1
    - Dst: stringerror
      Src: /src/pdns/pdns/misc.cc:476,1
    - Dst: std::replace
      Src: /src/pdns/pdns/misc.cc:479,1
    - Dst: auto::begin
      Src: /src/pdns/pdns/misc.cc:479,1
    - Dst: auto::end
      Src: /src/pdns/pdns/misc.cc:479,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 481
      start: 472
    functionDepth: 0
    functionLinenumber: 472
    functionLinenumberEnd: 481
    functionName: getCarbonHostName
    functionSourceFile: /src/pdns/pdns/misc.cc
    functionUses: 0
    functionsReached:
    - std::runtime_error
    - auto::has_value
    - stringerror
    - auto::begin
    - auto::end
    - getHostname
    - std::replace
    linkageType: ''
    returnType: std::string
    signature: std::string getCarbonHostName()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: string::append
      Src: /src/pdns/pdns/misc.cc:499,1
    - Dst: std::move
      Src: /src/pdns/pdns/misc.cc:501,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 1
    argNames:
    - str
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 502
      start: 483
    functionDepth: 0
    functionLinenumber: 483
    functionLinenumberEnd: 502
    functionName: cleanSlashes
    functionSourceFile: /src/pdns/pdns/misc.cc
    functionUses: 3
    functionsReached:
    - string::append
    - std::move
    linkageType: ''
    returnType: void
    signature: void cleanSlashes(string &str)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: string::empty
      Src: /src/pdns/pdns/misc.cc:506,1
    - Dst: inet_aton
      Src: /src/pdns/pdns/misc.cc:512,1
    - Dst: string::c_str
      Src: /src/pdns/pdns/misc.cc:512,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - str
    - ip
    argTypes:
    - string
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 517
      start: 504
    functionDepth: 0
    functionLinenumber: 504
    functionLinenumberEnd: 517
    functionName: IpToU32
    functionSourceFile: /src/pdns/pdns/misc.cc
    functionUses: 0
    functionsReached:
    - string::c_str
    - inet_aton
    - string::empty
    linkageType: ''
    returnType: bool
    signature: bool IpToU32(const string &str, uint32_t *ip)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/pdns/pdns/misc.cc:522,1
    - Dst: string
      Src: /src/pdns/pdns/misc.cc:527,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - val
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 528
      start: 519
    functionDepth: 0
    functionLinenumber: 519
    functionLinenumberEnd: 528
    functionName: U32ToIP
    functionSourceFile: /src/pdns/pdns/misc.cc
    functionUses: 0
    functionsReached:
    - string
    - snprintf
    linkageType: ''
    returnType: string
    signature: string U32ToIP(uint32_t val)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: string::reserve
      Src: /src/pdns/pdns/misc.cc:535,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/misc.cc:535,1
    - Dst: size
      Src: /src/pdns/pdns/misc.cc:535,1
    - Dst: size
      Src: /src/pdns/pdns/misc.cc:535,1
    - Dst: snprintf
      Src: /src/pdns/pdns/misc.cc:538,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/misc.cc:538,1
    - Dst: std::array::size
      Src: /src/pdns/pdns/misc.cc:538,1
    - Dst: static_cast<unsigned char>
      Src: /src/pdns/pdns/misc.cc:538,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/misc.cc:539,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - ' str'
    - ' sep'
    argTypes:
    - string
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 543
      start: 531
    functionDepth: 0
    functionLinenumber: 531
    functionLinenumberEnd: 543
    functionName: makeHexDump
    functionSourceFile: /src/pdns/pdns/misc.cc
    functionUses: 11
    functionsReached:
    - static_cast<size_t>
    - string::reserve
    - snprintf
    - size
    - static_cast<unsigned char>
    - std::array::data
    - std::array::size
    linkageType: ''
    returnType: string
    signature: string makeHexDump(const string& str, const string& sep)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: string::size
      Src: /src/pdns/pdns/misc.cc:546,1
    - Dst: std::range_error
      Src: /src/pdns/pdns/misc.cc:547,1
    - Dst: string::reserve
      Src: /src/pdns/pdns/misc.cc:550,1
    - Dst: string::size
      Src: /src/pdns/pdns/misc.cc:550,1
    - Dst: string::size
      Src: /src/pdns/pdns/misc.cc:552,1
    - Dst: string::substr
      Src: /src/pdns/pdns/misc.cc:553,1
    - Dst: sscanf
      Src: /src/pdns/pdns/misc.cc:555,1
    - Dst: auto::c_str
      Src: /src/pdns/pdns/misc.cc:555,1
    - Dst: std::range_error
      Src: /src/pdns/pdns/misc.cc:556,1
    - Dst: string::push_back
      Src: /src/pdns/pdns/misc.cc:558,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/misc.cc:558,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 1
    argNames:
    - in
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 562
      start: 545
    functionDepth: 0
    functionLinenumber: 545
    functionLinenumberEnd: 562
    functionName: makeBytesFromHex
    functionSourceFile: /src/pdns/pdns/misc.cc
    functionUses: 3
    functionsReached:
    - string::reserve
    - string::size
    - sscanf
    - auto::c_str
    - string::push_back
    - static_cast<uint8_t>
    - string::substr
    - std::range_error
    linkageType: ''
    returnType: string
    signature: string makeBytesFromHex(const string &in)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - ' tv'
    argTypes:
    - struct timeval
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 574
      start: 564
    functionDepth: 0
    functionLinenumber: 564
    functionLinenumberEnd: 574
    functionName: normalizeTV
    functionSourceFile: /src/pdns/pdns/misc.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void normalizeTV(struct timeval& tv)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: normalizeTV
      Src: /src/pdns/pdns/misc.cc:581,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - ' lhs'
    - ' rhs'
    argTypes:
    - struct timeval
    - struct timeval
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 583
      start: 576
    functionDepth: 0
    functionLinenumber: 576
    functionLinenumberEnd: 583
    functionName: operator+(const struct timeval& lhs, const struct timeval& rhs)
    functionSourceFile: /src/pdns/pdns/misc.cc
    functionUses: 0
    functionsReached:
    - normalizeTV
    linkageType: ''
    returnType: struct timeval
    signature: struct timeval operator+(const struct timeval& lhs, const struct timeval&
      rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: normalizeTV
      Src: /src/pdns/pdns/misc.cc:590,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - ' lhs'
    - ' rhs'
    argTypes:
    - struct timeval
    - struct timeval
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 592
      start: 585
    functionDepth: 0
    functionLinenumber: 585
    functionLinenumberEnd: 592
    functionName: operator-(const struct timeval& lhs, const struct timeval& rhs)
    functionSourceFile: /src/pdns/pdns/misc.cc
    functionUses: 0
    functionsReached:
    - normalizeTV
    linkageType: ''
    returnType: struct timeval
    signature: struct timeval operator-(const struct timeval& lhs, const struct timeval&
      rhs)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: find
      Src: /src/pdns/pdns/misc.cc:597,1
    - Dst: substr
      Src: /src/pdns/pdns/misc.cc:601,1
    - Dst: substr
      Src: /src/pdns/pdns/misc.cc:602,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - ' inp'
    - sepa
    argTypes:
    - string
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 605
      start: 594
    functionDepth: 0
    functionLinenumber: 594
    functionLinenumberEnd: 605
    functionName: splitField
    functionSourceFile: /src/pdns/pdns/misc.cc
    functionUses: 4
    functionsReached:
    - substr
    - find
    linkageType: ''
    returnType: pair<string, string>
    signature: pair<string, string> splitField(const string& inp, char sepa)
  - BBCount: 10
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 21
    argCount: 1
    argNames:
    - facility
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 629
      start: 607
    functionDepth: 0
    functionLinenumber: 607
    functionLinenumberEnd: 629
    functionName: logFacilityToLOG
    functionSourceFile: /src/pdns/pdns/misc.cc
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int logFacilityToLOG(unsigned int facility)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: toLowerInPlace
      Src: /src/pdns/pdns/misc.cc:678,1
    - Dst: std::unordered_map::find
      Src: /src/pdns/pdns/misc.cc:679,1
    - Dst: std::unordered_map::end
      Src: /src/pdns/pdns/misc.cc:680,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - facilityStr
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 685
      start: 631
    functionDepth: 0
    functionLinenumber: 631
    functionLinenumberEnd: 685
    functionName: logFacilityFromString
    functionSourceFile: /src/pdns/pdns/misc.cc
    functionUses: 0
    functionsReached:
    - toLowerInPlace
    - std::unordered_map::end
    - std::unordered_map::find
    linkageType: ''
    returnType: std::optional<int>
    signature: std::optional<int> logFacilityFromString(std::string facilityStr)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/misc.cc:689,1
    - Dst: size
      Src: /src/pdns/pdns/misc.cc:692,1
    - Dst: substr
      Src: /src/pdns/pdns/misc.cc:695,1
    - Dst: size
      Src: /src/pdns/pdns/misc.cc:695,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - ' dom'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 696
      start: 687
    functionDepth: 0
    functionLinenumber: 687
    functionLinenumberEnd: 696
    functionName: stripDot
    functionSourceFile: /src/pdns/pdns/misc.cc
    functionUses: 0
    functionsReached:
    - empty
    - substr
    - size
    linkageType: ''
    returnType: string
    signature: string stripDot(const string& dom)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/misc.cc:700,1
    - Dst: find
      Src: /src/pdns/pdns/misc.cc:708,1
    - Dst: string::assign
      Src: /src/pdns/pdns/misc.cc:713,1
    - Dst: c_str
      Src: /src/pdns/pdns/misc.cc:713,1
    - Dst: size
      Src: /src/pdns/pdns/misc.cc:714,1
    - Dst: size
      Src: /src/pdns/pdns/misc.cc:715,1
    - Dst: pdns::checked_stoi<uint16_t>
      Src: /src/pdns/pdns/misc.cc:720,1
    - Dst: substr
      Src: /src/pdns/pdns/misc.cc:720,1
    - Dst: std::make_optional
      Src: /src/pdns/pdns/misc.cc:721,1
    - Dst: inet_pton
      Src: /src/pdns/pdns/misc.cc:732,1
    - Dst: string::c_str
      Src: /src/pdns/pdns/misc.cc:732,1
    - Dst: std::memset
      Src: /src/pdns/pdns/misc.cc:734,1
    - Dst: getaddrinfo
      Src: /src/pdns/pdns/misc.cc:740,1
    - Dst: string::c_str
      Src: /src/pdns/pdns/misc.cc:740,1
    - Dst: memcpy
      Src: /src/pdns/pdns/misc.cc:744,1
    - Dst: freeaddrinfo
      Src: /src/pdns/pdns/misc.cc:745,1
    - Dst: std::optional::has_value
      Src: /src/pdns/pdns/misc.cc:748,1
    - Dst: htons
      Src: /src/pdns/pdns/misc.cc:749,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 36
    argCount: 2
    argNames:
    - ' addr'
    - ret
    argTypes:
    - std::string
    - struct sockaddr_in6*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 753
      start: 698
    functionDepth: 1
    functionLinenumber: 698
    functionLinenumberEnd: 753
    functionName: makeIPv6sockaddr
    functionSourceFile: /src/pdns/pdns/misc.cc
    functionUses: 0
    functionsReached:
    - inet_pton
    - string::c_str
    - string::assign
    - memcpy
    - std::memset
    - c_str
    - freeaddrinfo
    - getaddrinfo
    - size
    - pdns::checked_stoi<uint16_t>
    - substr
    - std::optional::has_value
    - empty
    - std::make_optional
    - find
    - htons
    linkageType: ''
    returnType: int
    signature: int makeIPv6sockaddr(const std::string& addr, struct sockaddr_in6*
      ret)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/misc.cc:757,1
    - Dst: find
      Src: /src/pdns/pdns/misc.cc:762,1
    - Dst: inet_aton
      Src: /src/pdns/pdns/misc.cc:764,1
    - Dst: c_str
      Src: /src/pdns/pdns/misc.cc:764,1
    - Dst: c_str
      Src: /src/pdns/pdns/misc.cc:770,1
    - Dst: const_cast<char*>
      Src: /src/pdns/pdns/misc.cc:773,1
    - Dst: c_str
      Src: /src/pdns/pdns/misc.cc:773,1
    - Dst: size
      Src: /src/pdns/pdns/misc.cc:773,1
    - Dst: strtol
      Src: /src/pdns/pdns/misc.cc:774,1
    - Dst: c_str
      Src: /src/pdns/pdns/misc.cc:774,1
    - Dst: htons
      Src: /src/pdns/pdns/misc.cc:781,1
    - Dst: inet_aton
      Src: /src/pdns/pdns/misc.cc:782,1
    - Dst: substr
      Src: /src/pdns/pdns/misc.cc:782,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 23
    argCount: 2
    argNames:
    - ' str'
    - ret
    argTypes:
    - std::string
    - struct sockaddr_in*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 787
      start: 755
    functionDepth: 0
    functionLinenumber: 755
    functionLinenumberEnd: 787
    functionName: makeIPv4sockaddr
    functionSourceFile: /src/pdns/pdns/misc.cc
    functionUses: 0
    functionsReached:
    - strtol
    - const_cast<char*>
    - c_str
    - size
    - substr
    - inet_aton
    - empty
    - find
    - htons
    linkageType: ''
    returnType: int
    signature: int makeIPv4sockaddr(const std::string& str, struct sockaddr_in* ret)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/misc.cc:791,1
    - Dst: memset
      Src: /src/pdns/pdns/misc.cc:794,1
    - Dst: length
      Src: /src/pdns/pdns/misc.cc:796,1
    - Dst: copy
      Src: /src/pdns/pdns/misc.cc:799,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - ' path'
    - ret
    argTypes:
    - std::string
    - struct sockaddr_un*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 801
      start: 789
    functionDepth: 0
    functionLinenumber: 789
    functionLinenumberEnd: 801
    functionName: makeUNsockaddr
    functionSourceFile: /src/pdns/pdns/misc.cc
    functionUses: 2
    functionsReached:
    - empty
    - memset
    - copy
    - length
    linkageType: ''
    returnType: int
    signature: int makeUNsockaddr(const std::string& path, struct sockaddr_un* ret)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: clear
      Src: /src/pdns/pdns/misc.cc:807,1
    - Dst: fgets
      Src: /src/pdns/pdns/misc.cc:810,1
    - Dst: empty
      Src: /src/pdns/pdns/misc.cc:811,1
    - Dst: append
      Src: /src/pdns/pdns/misc.cc:813,1
    - Dst: strchr
      Src: /src/pdns/pdns/misc.cc:814,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - fp
    - ' line'
    argTypes:
    - FILE*
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 816
      start: 804
    functionDepth: 1
    functionLinenumber: 804
    functionLinenumberEnd: 816
    functionName: stringfgets
    functionSourceFile: /src/pdns/pdns/misc.cc
    functionUses: 2
    functionsReached:
    - append
    - strchr
    - empty
    - fgets
    - clear
    linkageType: ''
    returnType: bool
    signature: bool stringfgets(FILE* fp, std::string& line)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::string*::clear
      Src: /src/pdns/pdns/misc.cc:820,1
    - Dst: pdns::UniqueFilePtr
      Src: /src/pdns/pdns/misc.cc:821,1
    - Dst: fopen
      Src: /src/pdns/pdns/misc.cc:821,1
    - Dst: stringfgets
      Src: /src/pdns/pdns/misc.cc:825,1
    - Dst: auto::get
      Src: /src/pdns/pdns/misc.cc:825,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - fname
    - line
    argTypes:
    - char*
    - std::string*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 826
      start: 818
    functionDepth: 1
    functionLinenumber: 818
    functionLinenumberEnd: 826
    functionName: readFileIfThere
    functionSourceFile: /src/pdns/pdns/misc.cc
    functionUses: 0
    functionsReached:
    - auto::get
    - stringfgets
    - fopen
    - std::string*::clear
    - pdns::UniqueFilePtr
    linkageType: ''
    returnType: bool
    signature: bool readFileIfThere(const char* fname, std::string* line)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: regex_t::regex_t
      Src: /src/pdns/pdns/misc.cc:829,1
    - Dst: regcomp
      Src: /src/pdns/pdns/misc.cc:831,1
    - Dst: get
      Src: /src/pdns/pdns/misc.cc:831,1
    - Dst: c_str
      Src: /src/pdns/pdns/misc.cc:831,1
    - Dst: regerror
      Src: /src/pdns/pdns/misc.cc:833,1
    - Dst: get
      Src: /src/pdns/pdns/misc.cc:833,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/misc.cc:833,1
    - Dst: std::array::size
      Src: /src/pdns/pdns/misc.cc:833,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/misc.cc:834,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/misc.cc:834,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/misc.cc:836,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 1
    argNames:
    - ' expr'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 838
      start: 828
    functionDepth: 0
    functionLinenumber: 828
    functionLinenumberEnd: 838
    functionName: Regex::Regex
    functionSourceFile: /src/pdns/pdns/misc.cc
    functionUses: 0
    functionsReached:
    - regex_t::regex_t
    - PDNSException
    - regcomp
    - regerror
    - get
    - c_str
    - std::array::data
    - std::array::size
    linkageType: ''
    returnType: void
    signature: void Regex::Regex(const string& expr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: regexec
      Src: /src/pdns/pdns/misc.cc:843,1
    - Dst: get
      Src: /src/pdns/pdns/misc.cc:843,1
    - Dst: string::c_str
      Src: /src/pdns/pdns/misc.cc:843,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - line
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 844
      start: 841
    functionDepth: 0
    functionLinenumber: 841
    functionLinenumberEnd: 844
    functionName: Regex::match
    functionSourceFile: /src/pdns/pdns/misc.cc
    functionUses: 0
    functionsReached:
    - string::c_str
    - regexec
    - get
    linkageType: ''
    returnType: bool
    signature: bool Regex::match(const string &line) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Regex::match
      Src: /src/pdns/pdns/misc.cc:848,1
    - Dst: toStringNoDot
      Src: /src/pdns/pdns/misc.cc:848,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' name'
    argTypes:
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 849
      start: 846
    functionDepth: 0
    functionLinenumber: 846
    functionLinenumberEnd: 849
    functionName: Regex::match
    functionSourceFile: /src/pdns/pdns/misc.cc
    functionUses: 1
    functionsReached:
    - Regex::match
    - toStringNoDot
    linkageType: ''
    returnType: bool
    signature: bool Regex::match(const DNSName& name) const
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: CMSG_SPACE
      Src: /src/pdns/pdns/misc.cc:865,1
    - Dst: CMSG_SPACE
      Src: /src/pdns/pdns/misc.cc:867,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/misc.cc:868,1
    - Dst: CMSG_SPACE
      Src: /src/pdns/pdns/misc.cc:871,1
    - Dst: CMSG_FIRSTHDR
      Src: /src/pdns/pdns/misc.cc:873,1
    - Dst: CMSG_LEN
      Src: /src/pdns/pdns/misc.cc:876,1
    - Dst: CMSG_DATA
      Src: /src/pdns/pdns/misc.cc:878,1
    - Dst: memset
      Src: /src/pdns/pdns/misc.cc:880,1
    - Dst: CMSG_SPACE
      Src: /src/pdns/pdns/misc.cc:880,1
    - Dst: CMSG_SPACE
      Src: /src/pdns/pdns/misc.cc:891,1
    - Dst: CMSG_SPACE
      Src: /src/pdns/pdns/misc.cc:893,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/misc.cc:894,1
    - Dst: CMSG_SPACE
      Src: /src/pdns/pdns/misc.cc:897,1
    - Dst: CMSG_FIRSTHDR
      Src: /src/pdns/pdns/misc.cc:899,1
    - Dst: CMSG_LEN
      Src: /src/pdns/pdns/misc.cc:902,1
    - Dst: CMSG_DATA
      Src: /src/pdns/pdns/misc.cc:904,1
    - Dst: memset
      Src: /src/pdns/pdns/misc.cc:906,1
    - Dst: CMSG_SPACE
      Src: /src/pdns/pdns/misc.cc:906,1
    - Dst: CMSG_SPACE
      Src: /src/pdns/pdns/misc.cc:914,1
    - Dst: CMSG_SPACE
      Src: /src/pdns/pdns/misc.cc:916,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/misc.cc:917,1
    - Dst: CMSG_SPACE
      Src: /src/pdns/pdns/misc.cc:920,1
    - Dst: CMSG_FIRSTHDR
      Src: /src/pdns/pdns/misc.cc:922,1
    - Dst: CMSG_LEN
      Src: /src/pdns/pdns/misc.cc:925,1
    - Dst: CMSG_DATA
      Src: /src/pdns/pdns/misc.cc:928,1
    - Dst: memset
      Src: /src/pdns/pdns/misc.cc:929,1
    - Dst: CMSG_SPACE
      Src: /src/pdns/pdns/misc.cc:929,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 42
    argCount: 4
    argNames:
    - msgh
    - cmsgbuf
    - source
    - itfIndex
    argTypes:
    - struct msghdr*
    - cmsgbuf_aligned*
    - ComboAddress*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 933
      start: 855
    functionDepth: 0
    functionLinenumber: 855
    functionLinenumberEnd: 933
    functionName: addCMsgSrcAddr
    functionSourceFile: /src/pdns/pdns/misc.cc
    functionUses: 0
    functionsReached:
    - CMSG_FIRSTHDR
    - std::runtime_error
    - CMSG_DATA
    - memset
    - CMSG_SPACE
    - CMSG_LEN
    linkageType: ''
    returnType: void
    signature: void addCMsgSrcAddr(struct msghdr* msgh, cmsgbuf_aligned* cmsgbuf,
      const ComboAddress* source, int itfIndex)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: getrlimit
      Src: /src/pdns/pdns/misc.cc:938,1
    - Dst: unixDie
      Src: /src/pdns/pdns/misc.cc:939,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - hardOrSoft
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 941
      start: 935
    functionDepth: 0
    functionLinenumber: 935
    functionLinenumberEnd: 941
    functionName: getFilenumLimit
    functionSourceFile: /src/pdns/pdns/misc.cc
    functionUses: 0
    functionsReached:
    - unixDie
    - getrlimit
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int getFilenumLimit(bool hardOrSoft)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: getrlimit
      Src: /src/pdns/pdns/misc.cc:947,1
    - Dst: unixDie
      Src: /src/pdns/pdns/misc.cc:948,1
    - Dst: setrlimit
      Src: /src/pdns/pdns/misc.cc:950,1
    - Dst: unixDie
      Src: /src/pdns/pdns/misc.cc:951,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - lim
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 952
      start: 943
    functionDepth: 0
    functionLinenumber: 943
    functionLinenumberEnd: 952
    functionName: setFilenumLimit
    functionSourceFile: /src/pdns/pdns/misc.cc
    functionUses: 0
    functionsReached:
    - unixDie
    - setrlimit
    - getrlimit
    linkageType: ''
    returnType: void
    signature: void setFilenumLimit(unsigned int lim)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: setsockopt
      Src: /src/pdns/pdns/misc.cc:958,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - fd
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 962
      start: 954
    functionDepth: 0
    functionLinenumber: 954
    functionLinenumberEnd: 962
    functionName: setSocketTimestamps
    functionSourceFile: /src/pdns/pdns/misc.cc
    functionUses: 0
    functionsReached:
    - setsockopt
    linkageType: ''
    returnType: bool
    signature: bool setSocketTimestamps(int fd)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: setsockopt
      Src: /src/pdns/pdns/misc.cc:967,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - sock
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 972
      start: 964
    functionDepth: 0
    functionLinenumber: 964
    functionLinenumberEnd: 972
    functionName: setTCPNoDelay
    functionSourceFile: /src/pdns/pdns/misc.cc
    functionUses: 1
    functionsReached:
    - setsockopt
    linkageType: ''
    returnType: bool
    signature: bool setTCPNoDelay(int sock)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: fcntl
      Src: /src/pdns/pdns/misc.cc:977,1
    - Dst: fcntl
      Src: /src/pdns/pdns/misc.cc:978,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - sock
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 981
      start: 975
    functionDepth: 0
    functionLinenumber: 975
    functionLinenumberEnd: 981
    functionName: setNonBlocking
    functionSourceFile: /src/pdns/pdns/misc.cc
    functionUses: 3
    functionsReached:
    - fcntl
    linkageType: ''
    returnType: bool
    signature: bool setNonBlocking(int sock)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: fcntl
      Src: /src/pdns/pdns/misc.cc:985,1
    - Dst: fcntl
      Src: /src/pdns/pdns/misc.cc:986,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - sock
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 989
      start: 983
    functionDepth: 0
    functionLinenumber: 983
    functionLinenumberEnd: 989
    functionName: setBlocking
    functionSourceFile: /src/pdns/pdns/misc.cc
    functionUses: 1
    functionsReached:
    - fcntl
    linkageType: ''
    returnType: bool
    signature: bool setBlocking(int sock)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: setsockopt
      Src: /src/pdns/pdns/misc.cc:994,1
    - Dst: static_cast<unsigned>
      Src: /src/pdns/pdns/misc.cc:994,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/misc.cc:995,1
    - Dst: string
      Src: /src/pdns/pdns/misc.cc:995,1
    - Dst: stringerror
      Src: /src/pdns/pdns/misc.cc:995,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - sock
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 997
      start: 991
    functionDepth: 0
    functionLinenumber: 991
    functionLinenumberEnd: 997
    functionName: setReuseAddr
    functionSourceFile: /src/pdns/pdns/misc.cc
    functionUses: 2
    functionsReached:
    - PDNSException
    - stringerror
    - string
    - setsockopt
    - static_cast<unsigned>
    linkageType: ''
    returnType: bool
    signature: bool setReuseAddr(int sock)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: getsockopt
      Src: /src/pdns/pdns/misc.cc:1010,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/misc.cc:1011,1
    - Dst: string
      Src: /src/pdns/pdns/misc.cc:1011,1
    - Dst: stringerror
      Src: /src/pdns/pdns/misc.cc:1011,1
    - Dst: setsockopt
      Src: /src/pdns/pdns/misc.cc:1014,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/misc.cc:1015,1
    - Dst: string
      Src: /src/pdns/pdns/misc.cc:1015,1
    - Dst: stringerror
      Src: /src/pdns/pdns/misc.cc:1015,1
    - Dst: getsockopt
      Src: /src/pdns/pdns/misc.cc:1019,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/misc.cc:1020,1
    - Dst: string
      Src: /src/pdns/pdns/misc.cc:1020,1
    - Dst: stringerror
      Src: /src/pdns/pdns/misc.cc:1020,1
    - Dst: setsockopt
      Src: /src/pdns/pdns/misc.cc:1023,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/misc.cc:1024,1
    - Dst: string
      Src: /src/pdns/pdns/misc.cc:1024,1
    - Dst: stringerror
      Src: /src/pdns/pdns/misc.cc:1024,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 22
    argCount: 3
    argNames:
    - sock
    - family
    - dscp
    argTypes:
    - int
    - unsigned short
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1027
      start: 999
    functionDepth: 0
    functionLinenumber: 999
    functionLinenumberEnd: 1027
    functionName: setDscp
    functionSourceFile: /src/pdns/pdns/misc.cc
    functionUses: 0
    functionsReached:
    - getsockopt
    - std::runtime_error
    - stringerror
    - string
    - setsockopt
    linkageType: ''
    returnType: void
    signature: void setDscp(int sock, unsigned short family, uint8_t dscp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fcntl
      Src: /src/pdns/pdns/misc.cc:1031,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - sock
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1033
      start: 1029
    functionDepth: 0
    functionLinenumber: 1029
    functionLinenumberEnd: 1033
    functionName: isNonBlocking
    functionSourceFile: /src/pdns/pdns/misc.cc
    functionUses: 0
    functionsReached:
    - fcntl
    linkageType: ''
    returnType: bool
    signature: bool isNonBlocking(int sock)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: setsockopt
      Src: /src/pdns/pdns/misc.cc:1040,1
    - Dst: setsockopt
      Src: /src/pdns/pdns/misc.cc:1042,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/misc.cc:1045,1
    - Dst: string
      Src: /src/pdns/pdns/misc.cc:1045,1
    - Dst: stringerror
      Src: /src/pdns/pdns/misc.cc:1045,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - sock
    - af
    argTypes:
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1049
      start: 1035
    functionDepth: 0
    functionLinenumber: 1035
    functionLinenumberEnd: 1049
    functionName: setReceiveSocketErrors
    functionSourceFile: /src/pdns/pdns/misc.cc
    functionUses: 0
    functionsReached:
    - PDNSException
    - stringerror
    - string
    - setsockopt
    linkageType: ''
    returnType: bool
    signature: bool setReceiveSocketErrors([[maybe_unused]] int sock, [[maybe_unused]]
      int af)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: TCPIOHandler::close
      Src: /src/pdns/pdns/misc.cc:1054,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/misc.cc:1060,1
    - Dst: stringerror
      Src: /src/pdns/pdns/misc.cc:1060,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 1
    argNames:
    - socket
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1063
      start: 1052
    functionDepth: 0
    functionLinenumber: 1052
    functionLinenumberEnd: 1063
    functionName: closesocket
    functionSourceFile: /src/pdns/pdns/misc.cc
    functionUses: 3
    functionsReached:
    - PDNSException
    - stringerror
    - TCPIOHandler::close
    linkageType: ''
    returnType: int
    signature: int closesocket(int socket)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: fcntl
      Src: /src/pdns/pdns/misc.cc:1067,1
    - Dst: fcntl
      Src: /src/pdns/pdns/misc.cc:1068,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - sock
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1071
      start: 1065
    functionDepth: 0
    functionLinenumber: 1065
    functionLinenumberEnd: 1071
    functionName: setCloseOnExec
    functionSourceFile: /src/pdns/pdns/misc.cc
    functionUses: 2
    functionsReached:
    - fcntl
    linkageType: ''
    returnType: bool
    signature: bool setCloseOnExec(int sock)
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: FDWrapper
      Src: /src/pdns/pdns/misc.cc:1085,1
    - Dst: socket
      Src: /src/pdns/pdns/misc.cc:1085,1
    - Dst: auto::getHandle
      Src: /src/pdns/pdns/misc.cc:1086,1
    - Dst: memset
      Src: /src/pdns/pdns/misc.cc:1090,1
    - Dst: NLMSG_LENGTH
      Src: /src/pdns/pdns/misc.cc:1091,1
    - Dst: send
      Src: /src/pdns/pdns/misc.cc:1097,1
    - Dst: auto::getHandle
      Src: /src/pdns/pdns/misc.cc:1097,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/misc.cc:1104,1
    - Dst: recv
      Src: /src/pdns/pdns/misc.cc:1114,1
    - Dst: auto::getHandle
      Src: /src/pdns/pdns/misc.cc:1114,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/misc.cc:1114,1
    - Dst: std::array::size
      Src: /src/pdns/pdns/misc.cc:1114,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/misc.cc:1123,1
    - Dst: reinterpret_cast<struct nlmsghdr*>
      Src: /src/pdns/pdns/misc.cc:1124,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/misc.cc:1124,1
    - Dst: NLMSG_OK
      Src: /src/pdns/pdns/misc.cc:1125,1
    - Dst: reinterpret_cast<struct nlmsghdr*>
      Src: /src/pdns/pdns/misc.cc:1126,1
    - Dst: NLMSG_NEXT
      Src: /src/pdns/pdns/misc.cc:1126,1
    - Dst: reinterpret_cast<struct ndmsg*>
      Src: /src/pdns/pdns/misc.cc:1133,1
    - Dst: NLMSG_DATA
      Src: /src/pdns/pdns/misc.cc:1133,1
    - Dst: reinterpret_cast<struct rtattr*>
      Src: /src/pdns/pdns/misc.cc:1134,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/misc.cc:1134,1
    - Dst: NLMSG_ALIGN
      Src: /src/pdns/pdns/misc.cc:1134,1
    - Dst: NLMSG_LENGTH
      Src: /src/pdns/pdns/misc.cc:1135,1
    - Dst: static_cast<int32_t>
      Src: /src/pdns/pdns/misc.cc:1141,1
    - Dst: RTA_OK
      Src: /src/pdns/pdns/misc.cc:1145,1
    - Dst: RTA_NEXT
      Src: /src/pdns/pdns/misc.cc:1145,1
    - Dst: reinterpret_cast<struct in_addr*>
      Src: /src/pdns/pdns/misc.cc:1148,1
    - Dst: RTA_DATA
      Src: /src/pdns/pdns/misc.cc:1148,1
    - Dst: reinterpret_cast<struct in6_addr *>
      Src: /src/pdns/pdns/misc.cc:1154,1
    - Dst: RTA_DATA
      Src: /src/pdns/pdns/misc.cc:1154,1
    - Dst: memcmp
      Src: /src/pdns/pdns/misc.cc:1155,1
    - Dst: memcpy
      Src: /src/pdns/pdns/misc.cc:1166,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/misc.cc:1166,1
    CyclomaticComplexity: 32
    EdgeCount: 32
    ICount: 67
    argCount: 3
    argNames:
    - ' ca'
    - dest
    - destLen
    argTypes:
    - ComboAddress
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1178
      start: 1076
    functionDepth: 0
    functionLinenumber: 1076
    functionLinenumberEnd: 1178
    functionName: getMACAddress
    functionSourceFile: /src/pdns/pdns/misc.cc
    functionUses: 0
    functionsReached:
    - reinterpret_cast<char*>
    - static_cast<int32_t>
    - reinterpret_cast<struct in_addr*>
    - memcmp
    - recv
    - static_cast<size_t>
    - auto::getHandle
    - reinterpret_cast<struct rtattr*>
    - NLMSG_NEXT
    - RTA_OK
    - memset
    - NLMSG_OK
    - send
    - reinterpret_cast<struct ndmsg*>
    - RTA_DATA
    - NLMSG_LENGTH
    - FDWrapper
    - NLMSG_DATA
    - reinterpret_cast<const char*>
    - std::array::data
    - socket
    - memcpy
    - NLMSG_ALIGN
    - RTA_NEXT
    - reinterpret_cast<struct in6_addr *>
    - reinterpret_cast<struct nlmsghdr*>
    - std::array::size
    linkageType: ''
    returnType: int
    signature: int getMACAddress(const ComboAddress& ca, char* dest, size_t destLen)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1183
      start: 1180
    functionDepth: 0
    functionLinenumber: 1180
    functionLinenumberEnd: 1183
    functionName: getMACAddress
    functionSourceFile: /src/pdns/pdns/misc.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int getMACAddress(const ComboAddress& /* ca */, char* /* dest */, size_t
      /* len */)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: getMACAddress
      Src: /src/pdns/pdns/misc.cc:1190,1
    - Dst: string::append
      Src: /src/pdns/pdns/misc.cc:1191,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ' ca'
    argTypes:
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1194
      start: 1186
    functionDepth: 0
    functionLinenumber: 1186
    functionLinenumberEnd: 1194
    functionName: getMACAddress
    functionSourceFile: /src/pdns/pdns/misc.cc
    functionUses: 1
    functionsReached:
    - string::append
    - getMACAddress
    linkageType: ''
    returnType: string
    signature: string getMACAddress(const ComboAddress& ca)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: getline
      Src: /src/pdns/pdns/misc.cc:1205,1
    - Dst: boost::starts_with
      Src: /src/pdns/pdns/misc.cc:1206,1
    - Dst: isdigit
      Src: /src/pdns/pdns/misc.cc:1206,1
    - Dst: string::at
      Src: /src/pdns/pdns/misc.cc:1206,1
    - Dst: stringtok
      Src: /src/pdns/pdns/misc.cc:1208,1
    - Dst: vector::size
      Src: /src/pdns/pdns/misc.cc:1210,1
    - Dst: std::stoull
      Src: /src/pdns/pdns/misc.cc:1215,1
    - Dst: vector::at
      Src: /src/pdns/pdns/misc.cc:1215,1
    - Dst: std::stoull
      Src: /src/pdns/pdns/misc.cc:1218,1
    - Dst: vector::at
      Src: /src/pdns/pdns/misc.cc:1218,1
    - Dst: std::stoull
      Src: /src/pdns/pdns/misc.cc:1221,1
    - Dst: vector::at
      Src: /src/pdns/pdns/misc.cc:1221,1
    - Dst: std::stoull
      Src: /src/pdns/pdns/misc.cc:1224,1
    - Dst: vector::at
      Src: /src/pdns/pdns/misc.cc:1224,1
    - Dst: vector::size
      Src: /src/pdns/pdns/misc.cc:1226,1
    - Dst: std::stoull
      Src: /src/pdns/pdns/misc.cc:1227,1
    - Dst: vector::at
      Src: /src/pdns/pdns/misc.cc:1227,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 30
    argCount: 1
    argNames:
    - ' str'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1236
      start: 1196
    functionDepth: 0
    functionLinenumber: 1196
    functionLinenumberEnd: 1236
    functionName: udpErrorStats
    functionSourceFile: /src/pdns/pdns/misc.cc
    functionUses: 0
    functionsReached:
    - isdigit
    - stringtok
    - vector::at
    - boost::starts_with
    - getline
    - string::at
    - std::stoull
    - vector::size
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t udpErrorStats([[maybe_unused]] const std::string& str)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: std::map::find
      Src: /src/pdns/pdns/misc.cc:1249,1
    - Dst: std::map::end
      Src: /src/pdns/pdns/misc.cc:1250,1
    - Dst: getline
      Src: /src/pdns/pdns/misc.cc:1260,1
    - Dst: boost::starts_with
      Src: /src/pdns/pdns/misc.cc:1261,1
    - Dst: stringtok
      Src: /src/pdns/pdns/misc.cc:1266,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/misc.cc:1268,1
    - Dst: std::stoull
      Src: /src/pdns/pdns/misc.cc:1272,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/misc.cc:1272,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 1
    argNames:
    - ' str'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1276
      start: 1238
    functionDepth: 0
    functionLinenumber: 1238
    functionLinenumberEnd: 1276
    functionName: udp6ErrorStats
    functionSourceFile: /src/pdns/pdns/misc.cc
    functionUses: 0
    functionsReached:
    - stringtok
    - std::vector::size
    - boost::starts_with
    - getline
    - std::vector::at
    - std::map::find
    - std::stoull
    - std::map::end
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t udp6ErrorStats([[maybe_unused]] const std::string& str)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: getline
      Src: /src/pdns/pdns/misc.cc:1288,1
    - Dst: string::size
      Src: /src/pdns/pdns/misc.cc:1289,1
    - Dst: boost::starts_with
      Src: /src/pdns/pdns/misc.cc:1289,1
    - Dst: isdigit
      Src: /src/pdns/pdns/misc.cc:1289,1
    - Dst: string::at
      Src: /src/pdns/pdns/misc.cc:1289,1
    - Dst: stringtok
      Src: /src/pdns/pdns/misc.cc:1290,1
    - Dst: vector::size
      Src: /src/pdns/pdns/misc.cc:1292,1
    - Dst: std::stoull
      Src: /src/pdns/pdns/misc.cc:1296,1
    - Dst: vector::at
      Src: /src/pdns/pdns/misc.cc:1296,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1301
      start: 1278
    functionDepth: 0
    functionLinenumber: 1278
    functionLinenumberEnd: 1301
    functionName: tcpErrorStats
    functionSourceFile: /src/pdns/pdns/misc.cc
    functionUses: 0
    functionsReached:
    - isdigit
    - string::size
    - stringtok
    - vector::at
    - boost::starts_with
    - getline
    - string::at
    - std::stoull
    - vector::size
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t tcpErrorStats(const std::string& /* str */)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: getline
      Src: /src/pdns/pdns/misc.cc:1313,1
    - Dst: boost::starts_with
      Src: /src/pdns/pdns/misc.cc:1314,1
    - Dst: stringtok
      Src: /src/pdns/pdns/misc.cc:1315,1
    - Dst: vector::size
      Src: /src/pdns/pdns/misc.cc:1317,1
    - Dst: std::stoull
      Src: /src/pdns/pdns/misc.cc:1321,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1326
      start: 1303
    functionDepth: 0
    functionLinenumber: 1303
    functionLinenumberEnd: 1326
    functionName: getCPUIOWait
    functionSourceFile: /src/pdns/pdns/misc.cc
    functionUses: 0
    functionsReached:
    - stringtok
    - boost::starts_with
    - getline
    - std::stoull
    - vector::size
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t getCPUIOWait(const std::string& /* str */)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: getline
      Src: /src/pdns/pdns/misc.cc:1338,1
    - Dst: boost::starts_with
      Src: /src/pdns/pdns/misc.cc:1339,1
    - Dst: stringtok
      Src: /src/pdns/pdns/misc.cc:1340,1
    - Dst: vector::size
      Src: /src/pdns/pdns/misc.cc:1342,1
    - Dst: std::stoull
      Src: /src/pdns/pdns/misc.cc:1346,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1351
      start: 1328
    functionDepth: 0
    functionLinenumber: 1328
    functionLinenumberEnd: 1351
    functionName: getCPUSteal
    functionSourceFile: /src/pdns/pdns/misc.cc
    functionUses: 0
    functionsReached:
    - stringtok
    - boost::starts_with
    - getline
    - std::stoull
    - vector::size
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t getCPUSteal(const std::string& /* str */)
  - BBCount: 8
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 25
    argCount: 2
    argNames:
    - ' algoName'
    - ' algoEnum'
    argTypes:
    - DNSName
    - TSIGHashEnum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1380
      start: 1353
    functionDepth: 0
    functionLinenumber: 1353
    functionLinenumberEnd: 1380
    functionName: getTSIGHashEnum
    functionSourceFile: /src/pdns/pdns/misc.cc
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool getTSIGHashEnum(const DNSName& algoName, TSIGHashEnum& algoEnum)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: PDNSException
      Src: /src/pdns/pdns/misc.cc:1393,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 18
    argCount: 1
    argNames:
    - ' algoEnum'
    argTypes:
    - TSIGHashEnum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1394
      start: 1382
    functionDepth: 0
    functionLinenumber: 1382
    functionLinenumberEnd: 1394
    functionName: getTSIGAlgoName
    functionSourceFile: /src/pdns/pdns/misc.cc
    functionUses: 3
    functionsReached:
    - PDNSException
    linkageType: ''
    returnType: DNSName
    signature: DNSName getTSIGAlgoName(TSIGHashEnum& algoEnum)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: std::to_string
      Src: /src/pdns/pdns/misc.cc:1400,1
    - Dst: getpid
      Src: /src/pdns/pdns/misc.cc:1400,1
    - Dst: pdns::visit_directory
      Src: /src/pdns/pdns/misc.cc:1401,1
    - Dst: pdns::checked_stoi_into
      Src: /src/pdns/pdns/misc.cc:1404,1
    - Dst: std::string
      Src: /src/pdns/pdns/misc.cc:1404,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/misc.cc:1405,1
    - Dst: getdtablecount
      Src: /src/pdns/pdns/misc.cc:1419,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1423
      start: 1396
    functionDepth: 0
    functionLinenumber: 1396
    functionLinenumberEnd: 1423
    functionName: getOpenFileDescriptors
    functionSourceFile: /src/pdns/pdns/misc.cc
    functionUses: 1
    functionsReached:
    - getdtablecount
    - std::to_string
    - pdns::visit_directory
    - std::string
    - pdns::checked_stoi_into
    - getpid
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t getOpenFileDescriptors(const std::string&)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: getpagesize
      Src: /src/pdns/pdns/misc.cc:1437,1
    - Dst: getrusage
      Src: /src/pdns/pdns/misc.cc:1440,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1444
      start: 1425
    functionDepth: 0
    functionLinenumber: 1425
    functionLinenumberEnd: 1444
    functionName: getRealMemoryUsage
    functionSourceFile: /src/pdns/pdns/misc.cc
    functionUses: 1
    functionsReached:
    - getpagesize
    - getrusage
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t getRealMemoryUsage(const std::string&)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: getline
      Src: /src/pdns/pdns/misc.cc:1456,1
    - Dst: boost::starts_with
      Src: /src/pdns/pdns/misc.cc:1457,1
    - Dst: std::stoull
      Src: /src/pdns/pdns/misc.cc:1458,1
    - Dst: string::substr
      Src: /src/pdns/pdns/misc.cc:1458,1
    - Dst: string::length
      Src: /src/pdns/pdns/misc.cc:1458,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1465
      start: 1447
    functionDepth: 0
    functionLinenumber: 1447
    functionLinenumberEnd: 1465
    functionName: getSpecialMemoryUsage
    functionSourceFile: /src/pdns/pdns/misc.cc
    functionUses: 0
    functionsReached:
    - boost::starts_with
    - getline
    - string::substr
    - std::stoull
    - string::length
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t getSpecialMemoryUsage(const std::string&)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getrusage
      Src: /src/pdns/pdns/misc.cc:1470,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1472
      start: 1467
    functionDepth: 0
    functionLinenumber: 1467
    functionLinenumberEnd: 1472
    functionName: getCPUTimeUser
    functionSourceFile: /src/pdns/pdns/misc.cc
    functionUses: 1
    functionsReached:
    - getrusage
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t getCPUTimeUser(const std::string&)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getrusage
      Src: /src/pdns/pdns/misc.cc:1477,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1479
      start: 1474
    functionDepth: 0
    functionLinenumber: 1474
    functionLinenumberEnd: 1479
    functionName: getCPUTimeSystem
    functionSourceFile: /src/pdns/pdns/misc.cc
    functionUses: 1
    functionsReached:
    - getrusage
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t getCPUTimeSystem(const std::string&)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<double>
      Src: /src/pdns/pdns/misc.cc:1490,1
    - Dst: static_cast<double>
      Src: /src/pdns/pdns/misc.cc:1490,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - ' first'
    - ' second'
    argTypes:
    - struct timespec
    - struct timespec
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1491
      start: 1481
    functionDepth: 0
    functionLinenumber: 1481
    functionLinenumberEnd: 1491
    functionName: DiffTime
    functionSourceFile: /src/pdns/pdns/misc.cc
    functionUses: 0
    functionsReached:
    - static_cast<double>
    linkageType: ''
    returnType: double
    signature: double DiffTime(const struct timespec& first, const struct timespec&
      second)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - ' first'
    - ' second'
    argTypes:
    - struct timeval
    - struct timeval
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1503
      start: 1493
    functionDepth: 0
    functionLinenumber: 1493
    functionLinenumberEnd: 1503
    functionName: DiffTime
    functionSourceFile: /src/pdns/pdns/misc.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: double
    signature: double DiffTime(const struct timeval& first, const struct timeval&
      second)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: string::c_str
      Src: /src/pdns/pdns/misc.cc:1508,1
    - Dst: getpwnam
      Src: /src/pdns/pdns/misc.cc:1509,1
    - Dst: stoll
      Src: /src/pdns/pdns/misc.cc:1515,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/misc.cc:1518,1
    - Dst: boost::format
      Src: /src/pdns/pdns/misc.cc:1518,1
    - Dst: str
      Src: /src/pdns/pdns/misc.cc:1518,1
    - Dst: pdns::min
      Src: /src/pdns/pdns/misc.cc:1521,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/misc.cc:1521,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/misc.cc:1522,1
    - Dst: boost::format
      Src: /src/pdns/pdns/misc.cc:1522,1
    - Dst: str
      Src: /src/pdns/pdns/misc.cc:1522,1
    - Dst: static_cast<uid_t>
      Src: /src/pdns/pdns/misc.cc:1525,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 1
    argNames:
    - str
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1532
      start: 1505
    functionDepth: 0
    functionLinenumber: 1505
    functionLinenumberEnd: 1532
    functionName: strToUID
    functionSourceFile: /src/pdns/pdns/misc.cc
    functionUses: 1
    functionsReached:
    - getpwnam
    - string::c_str
    - pdns::max
    - runtime_error
    - stoll
    - str
    - boost::format
    - static_cast<uid_t>
    - pdns::min
    linkageType: ''
    returnType: uid_t
    signature: uid_t strToUID(const string &str)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: string::c_str
      Src: /src/pdns/pdns/misc.cc:1537,1
    - Dst: getgrnam
      Src: /src/pdns/pdns/misc.cc:1538,1
    - Dst: stoll
      Src: /src/pdns/pdns/misc.cc:1544,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/misc.cc:1547,1
    - Dst: boost::format
      Src: /src/pdns/pdns/misc.cc:1547,1
    - Dst: str
      Src: /src/pdns/pdns/misc.cc:1547,1
    - Dst: pdns::min
      Src: /src/pdns/pdns/misc.cc:1550,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/misc.cc:1550,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/misc.cc:1551,1
    - Dst: boost::format
      Src: /src/pdns/pdns/misc.cc:1551,1
    - Dst: str
      Src: /src/pdns/pdns/misc.cc:1551,1
    - Dst: static_cast<gid_t>
      Src: /src/pdns/pdns/misc.cc:1554,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 1
    argNames:
    - str
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1561
      start: 1534
    functionDepth: 0
    functionLinenumber: 1534
    functionLinenumberEnd: 1561
    functionName: strToGID
    functionSourceFile: /src/pdns/pdns/misc.cc
    functionUses: 2
    functionsReached:
    - string::c_str
    - pdns::max
    - static_cast<gid_t>
    - runtime_error
    - stoll
    - str
    - getgrnam
    - boost::format
    - pdns::min
    linkageType: ''
    returnType: gid_t
    signature: gid_t strToGID(const string &str)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1570
      start: 1563
    functionDepth: 0
    functionLinenumber: 1563
    functionLinenumberEnd: 1570
    functionName: isSettingThreadCPUAffinitySupported
    functionSourceFile: /src/pdns/pdns/misc.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool isSettingThreadCPUAffinitySupported()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: cpuset_create
      Src: /src/pdns/pdns/misc.cc:1577,1
    - Dst: cpuset_set
      Src: /src/pdns/pdns/misc.cc:1579,1
    - Dst: pthread_setaffinity_np
      Src: /src/pdns/pdns/misc.cc:1582,1
    - Dst: cpuset_size
      Src: /src/pdns/pdns/misc.cc:1583,1
    - Dst: CPU_ZERO
      Src: /src/pdns/pdns/misc.cc:1590,1
    - Dst: CPU_SET
      Src: /src/pdns/pdns/misc.cc:1592,1
    - Dst: pthread_setaffinity_np
      Src: /src/pdns/pdns/misc.cc:1595,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - tid
    - ' cpus'
    argTypes:
    - pthread_t
    - std::set<int>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1602
      start: 1572
    functionDepth: 0
    functionLinenumber: 1572
    functionLinenumberEnd: 1602
    functionName: mapThreadToCPUList
    functionSourceFile: /src/pdns/pdns/misc.cc
    functionUses: 0
    functionsReached:
    - pthread_setaffinity_np
    - cpuset_create
    - cpuset_size
    - cpuset_set
    - CPU_SET
    - CPU_ZERO
    linkageType: ''
    returnType: int
    signature: int mapThreadToCPUList([[maybe_unused]] pthread_t tid, [[maybe_unused]]
      const std::set<int>& cpus)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: std::getline
      Src: /src/pdns/pdns/misc.cc:1614,1
    - Dst: boost::trim_right_if
      Src: /src/pdns/pdns/misc.cc:1615,1
    - Dst: boost::is_any_of
      Src: /src/pdns/pdns/misc.cc:1615,1
    - Dst: boost::trim_left
      Src: /src/pdns/pdns/misc.cc:1616,1
    - Dst: string::find_first_of
      Src: /src/pdns/pdns/misc.cc:1618,1
    - Dst: string::resize
      Src: /src/pdns/pdns/misc.cc:1620,1
    - Dst: boost::starts_with
      Src: /src/pdns/pdns/misc.cc:1623,1
    - Dst: boost::starts_with
      Src: /src/pdns/pdns/misc.cc:1623,1
    - Dst: stringtok
      Src: /src/pdns/pdns/misc.cc:1625,1
    - Dst: vector::begin
      Src: /src/pdns/pdns/misc.cc:1626,1
    - Dst: vector::end
      Src: /src/pdns/pdns/misc.cc:1626,1
    - Dst: std::vector::emplace_back
      Src: /src/pdns/pdns/misc.cc:1628,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 21
    argCount: 1
    argNames:
    - ' resolvConfPath'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1638
      start: 1604
    functionDepth: 1
    functionLinenumber: 1604
    functionLinenumberEnd: 1638
    functionName: getResolvers
    functionSourceFile: /src/pdns/pdns/misc.cc
    functionUses: 0
    functionsReached:
    - vector::begin
    - string::resize
    - stringtok
    - boost::starts_with
    - std::vector::emplace_back
    - boost::trim_right_if
    - vector::end
    - boost::is_any_of
    - boost::trim_left
    - string::find_first_of
    - std::getline
    linkageType: ''
    returnType: std::vector<ComboAddress>
    signature: std::vector<ComboAddress> getResolvers(const std::string& resolvConfPath)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: fcntl
      Src: /src/pdns/pdns/misc.cc:1643,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - fd
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1652
      start: 1640
    functionDepth: 0
    functionLinenumber: 1640
    functionLinenumberEnd: 1652
    functionName: getPipeBufferSize
    functionSourceFile: /src/pdns/pdns/misc.cc
    functionUses: 0
    functionsReached:
    - fcntl
    linkageType: ''
    returnType: size_t
    signature: size_t getPipeBufferSize([[maybe_unused]] int fd)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/misc.cc:1657,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/misc.cc:1657,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/misc.cc:1661,1
    - Dst: fcntl
      Src: /src/pdns/pdns/misc.cc:1662,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - fd
    - size
    argTypes:
    - int
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1671
      start: 1654
    functionDepth: 0
    functionLinenumber: 1654
    functionLinenumberEnd: 1671
    functionName: setPipeBufferSize
    functionSourceFile: /src/pdns/pdns/misc.cc
    functionUses: 0
    functionsReached:
    - pdns::max
    - static_cast<size_t>
    - fcntl
    - static_cast<int>
    linkageType: ''
    returnType: bool
    signature: bool setPipeBufferSize([[maybe_unused]] int fd, [[maybe_unused]] size_t
      size)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: isIPv4
      Src: /src/pdns/pdns/misc.cc:1675,1
    - Dst: reinterpret_cast<const uint8_t*>
      Src: /src/pdns/pdns/misc.cc:1677,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/misc.cc:1679,1
    - Dst: DNSName
      Src: /src/pdns/pdns/misc.cc:1681,1
    - Dst: isIPv6
      Src: /src/pdns/pdns/misc.cc:1683,1
    - Dst: reinterpret_cast<const uint8_t*>
      Src: /src/pdns/pdns/misc.cc:1685,1
    - Dst: std::stringstream::str
      Src: /src/pdns/pdns/misc.cc:1692,1
    - Dst: DNSName
      Src: /src/pdns/pdns/misc.cc:1694,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/misc.cc:1697,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 1
    argNames:
    - ' ip'
    argTypes:
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1698
      start: 1673
    functionDepth: 0
    functionLinenumber: 1673
    functionLinenumberEnd: 1698
    functionName: reverseNameFromIP
    functionSourceFile: /src/pdns/pdns/misc.cc
    functionUses: 0
    functionsReached:
    - isIPv6
    - reinterpret_cast<const uint8_t*>
    - std::to_string
    - std::runtime_error
    - DNSName
    - std::stringstream::str
    - isIPv4
    linkageType: ''
    returnType: DNSName
    signature: DNSName reverseNameFromIP(const ComboAddress& ip)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: islower
      Src: /src/pdns/pdns/misc.cc:1708,1
    - Dst: isupper
      Src: /src/pdns/pdns/misc.cc:1708,1
    - Dst: snprintf
      Src: /src/pdns/pdns/misc.cc:1713,1
    - Dst: ostringstream::str
      Src: /src/pdns/pdns/misc.cc:1720,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - ' in'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1721
      start: 1700
    functionDepth: 0
    functionLinenumber: 1700
    functionLinenumberEnd: 1721
    functionName: makeLuaString
    functionSourceFile: /src/pdns/pdns/misc.cc
    functionUses: 2
    functionsReached:
    - islower
    - ostringstream::str
    - snprintf
    - isupper
    linkageType: ''
    returnType: std::string
    signature: std::string makeLuaString(const std::string& in)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: parseRFC1035CharString
      Src: /src/pdns/pdns/misc.cc:1725,1
    - Dst: parseSVCBValueListFromParsedRFC1035CharString
      Src: /src/pdns/pdns/misc.cc:1726,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - in
    - val
    argTypes:
    - std::string
    - vector<std::string>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1728
      start: 1723
    functionDepth: 0
    functionLinenumber: 1723
    functionLinenumberEnd: 1728
    functionName: parseSVCBValueList
    functionSourceFile: /src/pdns/pdns/misc.cc
    functionUses: 0
    functionsReached:
    - parseSVCBValueListFromParsedRFC1035CharString
    - parseRFC1035CharString
    linkageType: ''
    returnType: size_t
    signature: size_t parseSVCBValueList(const std::string &in, vector<std::string>
      &val)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/misc.cc:1740,1
    - Dst: size
      Src: /src/pdns/pdns/misc.cc:1740,1
    - Dst: size
      Src: /src/pdns/pdns/misc.cc:1743,1
    - Dst: CRYPTO_memcmp
      Src: /src/pdns/pdns/misc.cc:1745,1
    - Dst: c_str
      Src: /src/pdns/pdns/misc.cc:1745,1
    - Dst: c_str
      Src: /src/pdns/pdns/misc.cc:1745,1
    - Dst: sodium_memcmp
      Src: /src/pdns/pdns/misc.cc:1748,1
    - Dst: c_str
      Src: /src/pdns/pdns/misc.cc:1748,1
    - Dst: c_str
      Src: /src/pdns/pdns/misc.cc:1748,1
    - Dst: c_str
      Src: /src/pdns/pdns/misc.cc:1750,1
    - Dst: c_str
      Src: /src/pdns/pdns/misc.cc:1751,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - ' a'
    - ' b'
    argTypes:
    - std::string
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1761
      start: 1738
    functionDepth: 0
    functionLinenumber: 1738
    functionLinenumberEnd: 1761
    functionName: constantTimeStringEquals
    functionSourceFile: /src/pdns/pdns/misc.cc
    functionUses: 3
    functionsReached:
    - c_str
    - CRYPTO_memcmp
    - size
    - sodium_memcmp
    linkageType: ''
    returnType: bool
    signature: bool constantTimeStringEquals(const std::string& a, const std::string&
      b)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: closedir
      Src: /src/pdns/pdns/misc.cc:1768,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - dir
    argTypes:
    - DIR*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1769
      start: 1767
    functionDepth: 0
    functionLinenumber: 1767
    functionLinenumberEnd: 1769
    functionName: operator()(DIR* dir) const noexcept
    functionSourceFile: /src/pdns/pdns/misc.cc
    functionUses: 0
    functionsReached:
    - closedir
    linkageType: ''
    returnType: void
    signature: void operator()(DIR* dir) const noexcept
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::unique_ptr<DIR, CloseDirDeleter>
      Src: /src/pdns/pdns/misc.cc:1774,1
    - Dst: opendir
      Src: /src/pdns/pdns/misc.cc:1774,1
    - Dst: c_str
      Src: /src/pdns/pdns/misc.cc:1774,1
    - Dst: std::string
      Src: /src/pdns/pdns/misc.cc:1777,1
    - Dst: stringerror
      Src: /src/pdns/pdns/misc.cc:1777,1
    - Dst: readdir
      Src: /src/pdns/pdns/misc.cc:1783,1
    - Dst: auto::get
      Src: /src/pdns/pdns/misc.cc:1783,1
    - Dst: std::string_view
      Src: /src/pdns/pdns/misc.cc:1785,1
    - Dst: strlen
      Src: /src/pdns/pdns/misc.cc:1785,1
    - Dst: visitor
      Src: /src/pdns/pdns/misc.cc:1786,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - ' directory'
    - ' visitor'
    argTypes:
    - std::string
    - std::function<bool(ino_t inodeNumber, const std::string_view& name)>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1790
      start: 1772
    functionDepth: 1
    functionLinenumber: 1772
    functionLinenumberEnd: 1790
    functionName: pdns::visit_directory
    functionSourceFile: /src/pdns/pdns/misc.cc
    functionUses: 4
    functionsReached:
    - std::unique_ptr<DIR, CloseDirDeleter>
    - auto::get
    - visitor
    - stringerror
    - std::string_view
    - opendir
    - strlen
    - readdir
    - c_str
    - std::string
    linkageType: ''
    returnType: std::optional<std::string>
    signature: std::optional<std::string> visit_directory(const std::string& directory,
      const std::function<bool(ino_t inodeNumber, const std::string_view& name)>&
      visitor)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: open
      Src: /src/pdns/pdns/misc.cc:1801,1
    - Dst: c_str
      Src: /src/pdns/pdns/misc.cc:1801,1
    - Dst: pdns::UniqueFilePtr
      Src: /src/pdns/pdns/misc.cc:1805,1
    - Dst: fdopen
      Src: /src/pdns/pdns/misc.cc:1805,1
    - Dst: close
      Src: /src/pdns/pdns/misc.cc:1808,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 4
    argNames:
    - ' filePath'
    - permissions
    - mustNotExist
    - appendIfExists
    argTypes:
    - std::string
    - mode_t
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1813
      start: 1792
    functionDepth: 0
    functionLinenumber: 1792
    functionLinenumberEnd: 1813
    functionName: pdns::openFileForWriting
    functionSourceFile: /src/pdns/pdns/misc.cc
    functionUses: 2
    functionsReached:
    - open
    - pdns::UniqueFilePtr
    - c_str
    - close
    - fdopen
    linkageType: ''
    returnType: UniqueFilePtr
    signature: UniqueFilePtr openFileForWriting(const std::string& filePath, mode_t
      permissions, bool mustNotExist, bool appendIfExists)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: closedir
      Src: /src/pdns/pdns/misc.cc:1768,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - dir
    argTypes:
    - DIR*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1769
      start: 1767
    functionDepth: 0
    functionLinenumber: 1767
    functionLinenumberEnd: 1769
    functionName: operator()(DIR* dir) const noexcept
    functionSourceFile: /src/pdns/pdns/misc.cc
    functionUses: 0
    functionsReached:
    - closedir
    linkageType: ''
    returnType: void
    signature: void operator()(DIR* dir) const noexcept
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::unique_ptr<DIR, CloseDirDeleter>
      Src: /src/pdns/pdns/misc.cc:1774,1
    - Dst: opendir
      Src: /src/pdns/pdns/misc.cc:1774,1
    - Dst: c_str
      Src: /src/pdns/pdns/misc.cc:1774,1
    - Dst: std::string
      Src: /src/pdns/pdns/misc.cc:1777,1
    - Dst: stringerror
      Src: /src/pdns/pdns/misc.cc:1777,1
    - Dst: readdir
      Src: /src/pdns/pdns/misc.cc:1783,1
    - Dst: auto::get
      Src: /src/pdns/pdns/misc.cc:1783,1
    - Dst: std::string_view
      Src: /src/pdns/pdns/misc.cc:1785,1
    - Dst: strlen
      Src: /src/pdns/pdns/misc.cc:1785,1
    - Dst: visitor
      Src: /src/pdns/pdns/misc.cc:1786,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - ' directory'
    - ' visitor'
    argTypes:
    - std::string
    - std::function<bool(ino_t inodeNumber, const std::string_view& name)>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1790
      start: 1772
    functionDepth: 1
    functionLinenumber: 1772
    functionLinenumberEnd: 1790
    functionName: pdns::visit_directory
    functionSourceFile: /src/pdns/pdns/misc.cc
    functionUses: 4
    functionsReached:
    - std::unique_ptr<DIR, CloseDirDeleter>
    - auto::get
    - visitor
    - stringerror
    - std::string_view
    - opendir
    - strlen
    - readdir
    - c_str
    - std::string
    linkageType: ''
    returnType: std::optional<std::string>
    signature: std::optional<std::string> visit_directory(const std::string& directory,
      const std::function<bool(ino_t inodeNumber, const std::string_view& name)>&
      visitor)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: open
      Src: /src/pdns/pdns/misc.cc:1801,1
    - Dst: c_str
      Src: /src/pdns/pdns/misc.cc:1801,1
    - Dst: pdns::UniqueFilePtr
      Src: /src/pdns/pdns/misc.cc:1805,1
    - Dst: fdopen
      Src: /src/pdns/pdns/misc.cc:1805,1
    - Dst: close
      Src: /src/pdns/pdns/misc.cc:1808,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 4
    argNames:
    - ' filePath'
    - permissions
    - mustNotExist
    - appendIfExists
    argTypes:
    - std::string
    - mode_t
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1813
      start: 1792
    functionDepth: 0
    functionLinenumber: 1792
    functionLinenumberEnd: 1813
    functionName: pdns::openFileForWriting
    functionSourceFile: /src/pdns/pdns/misc.cc
    functionUses: 2
    functionsReached:
    - open
    - pdns::UniqueFilePtr
    - c_str
    - close
    - fdopen
    linkageType: ''
    returnType: UniqueFilePtr
    signature: UniqueFilePtr openFileForWriting(const std::string& filePath, mode_t
      permissions, bool mustNotExist, bool appendIfExists)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strftime
      Src: /src/pdns/pdns/misc.cc:1821,1
    - Dst: data
      Src: /src/pdns/pdns/misc.cc:1821,1
    - Dst: size
      Src: /src/pdns/pdns/misc.cc:1821,1
    - Dst: std::string::c_str
      Src: /src/pdns/pdns/misc.cc:1821,1
    - Dst: localtime_r
      Src: /src/pdns/pdns/misc.cc:1821,1
    - Dst: snprintf
      Src: /src/pdns/pdns/misc.cc:1823,1
    - Dst: data
      Src: /src/pdns/pdns/misc.cc:1823,1
    - Dst: size
      Src: /src/pdns/pdns/misc.cc:1823,1
    - Dst: static_cast<long long>
      Src: /src/pdns/pdns/misc.cc:1823,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/misc.cc:1824,1
    - Dst: size
      Src: /src/pdns/pdns/misc.cc:1824,1
    - Dst: data
      Src: /src/pdns/pdns/misc.cc:1828,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 2
    argNames:
    - arg
    - ' buf'
    argTypes:
    - time_t
    - timebuf_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1829
      start: 1817
    functionDepth: 0
    functionLinenumber: 1817
    functionLinenumberEnd: 1829
    functionName: timestamp
    functionSourceFile: /src/pdns/pdns/misc.cc
    functionUses: 0
    functionsReached:
    - static_cast<size_t>
    - snprintf
    - localtime_r
    - std::string::c_str
    - static_cast<long long>
    - size
    - data
    - strftime
    linkageType: ''
    returnType: char
    signature: char * timestamp(time_t arg, timebuf_t& buf)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - RNAME
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 40
    functionDepth: 0
    functionLinenumber: 40
    functionLinenumberEnd: 53
    functionName: includeboilerplate
    functionSourceFile: /src/pdns/pdns/dnsrecords.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: includeboilerplate(RNAME)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 61
    functionDepth: 0
    functionLinenumber: 61
    functionLinenumberEnd: 64
    functionName: '& getFlags() const'
    functionSourceFile: /src/pdns/pdns/dnsrecords.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: string
    signature: string & getFlags() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 65
    functionDepth: 0
    functionLinenumber: 65
    functionLinenumberEnd: 68
    functionName: '& getReplacement() const'
    functionSourceFile: /src/pdns/pdns/dnsrecords.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: DNSName
    signature: DNSName & getReplacement() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: NAPTRRecordContent::sizeEstimate
      Src: /src/pdns/pdns/dnsrecords.hh:71,1
    - Dst: size
      Src: /src/pdns/pdns/dnsrecords.hh:71,1
    - Dst: size
      Src: /src/pdns/pdns/dnsrecords.hh:71,1
    - Dst: size
      Src: /src/pdns/pdns/dnsrecords.hh:71,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 69
    functionDepth: 0
    functionLinenumber: 69
    functionLinenumberEnd: 72
    functionName: NAPTRRecordContent::sizeEstimate
    functionSourceFile: /src/pdns/pdns/dnsrecords.hh
    functionUses: 1
    functionsReached:
    - NAPTRRecordContent::sizeEstimate
    - size
    linkageType: ''
    returnType: size_t
    signature: size_t sizeEstimate() const override
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: typeid
      Src: /src/pdns/pdns/dnsrecords.hh:90,1
    - Dst: typeid
      Src: /src/pdns/pdns/dnsrecords.hh:90,1
    - Dst: dynamic_cast<const ARecordContent&>
      Src: /src/pdns/pdns/dnsrecords.hh:92,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - DNSRecordContent
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 88
    functionDepth: 0
    functionLinenumber: 88
    functionLinenumberEnd: 93
    functionName: operator==(const DNSRecordContent& rhs) const override
    functionSourceFile: /src/pdns/pdns/dnsrecords.hh
    functionUses: 0
    functionsReached:
    - dynamic_cast<const ARecordContent&>
    - typeid
    linkageType: ''
    returnType: bool
    signature: bool operator==(const DNSRecordContent& rhs) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 94
    functionDepth: 0
    functionLinenumber: 94
    functionLinenumberEnd: 97
    functionName: ARecordContent::sizeEstimate
    functionSourceFile: /src/pdns/pdns/dnsrecords.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: size_t sizeEstimate() const override
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: typeid
      Src: /src/pdns/pdns/dnsrecords.hh:111,1
    - Dst: typeid
      Src: /src/pdns/pdns/dnsrecords.hh:111,1
    - Dst: dynamic_cast<const decltype(this)>
      Src: /src/pdns/pdns/dnsrecords.hh:113,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - DNSRecordContent
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 109
    functionDepth: 0
    functionLinenumber: 109
    functionLinenumberEnd: 114
    functionName: operator==(const DNSRecordContent& rhs) const override
    functionSourceFile: /src/pdns/pdns/dnsrecords.hh
    functionUses: 0
    functionsReached:
    - dynamic_cast<const decltype(this)>
    - typeid
    linkageType: ''
    returnType: bool
    signature: bool operator==(const DNSRecordContent& rhs) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsrecords.hh:117,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 118
      start: 115
    functionDepth: 0
    functionLinenumber: 115
    functionLinenumberEnd: 118
    functionName: AAAARecordContent::sizeEstimate
    functionSourceFile: /src/pdns/pdns/dnsrecords.hh
    functionUses: 0
    functionsReached:
    - size
    linkageType: ''
    returnType: size_t
    signature: size_t sizeEstimate() const override
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: typeid
      Src: /src/pdns/pdns/dnsrecords.hh:135,1
    - Dst: typeid
      Src: /src/pdns/pdns/dnsrecords.hh:135,1
    - Dst: dynamic_cast<const decltype(this)>
      Src: /src/pdns/pdns/dnsrecords.hh:137,1
    - Dst: std::tie
      Src: /src/pdns/pdns/dnsrecords.hh:138,1
    - Dst: std::tie
      Src: /src/pdns/pdns/dnsrecords.hh:138,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - DNSRecordContent
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 139
      start: 133
    functionDepth: 0
    functionLinenumber: 133
    functionLinenumberEnd: 139
    functionName: operator==(const DNSRecordContent& rhs) const override
    functionSourceFile: /src/pdns/pdns/dnsrecords.hh
    functionUses: 0
    functionsReached:
    - std::tie
    - dynamic_cast<const decltype(this)>
    - typeid
    linkageType: ''
    returnType: bool
    signature: bool operator==(const DNSRecordContent& rhs) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MXRecordContent::sizeEstimate
      Src: /src/pdns/pdns/dnsrecords.hh:142,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 143
      start: 140
    functionDepth: 0
    functionLinenumber: 140
    functionLinenumberEnd: 143
    functionName: MXRecordContent::sizeEstimate
    functionSourceFile: /src/pdns/pdns/dnsrecords.hh
    functionUses: 1
    functionsReached:
    - MXRecordContent::sizeEstimate
    linkageType: ''
    returnType: size_t
    signature: size_t sizeEstimate() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: KXRecordContent::sizeEstimate
      Src: /src/pdns/pdns/dnsrecords.hh:155,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 156
      start: 153
    functionDepth: 0
    functionLinenumber: 153
    functionLinenumberEnd: 156
    functionName: KXRecordContent::sizeEstimate
    functionSourceFile: /src/pdns/pdns/dnsrecords.hh
    functionUses: 1
    functionsReached:
    - KXRecordContent::sizeEstimate
    linkageType: ''
    returnType: size_t
    signature: size_t sizeEstimate() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: IPSECKEYRecordContent::sizeEstimate
      Src: /src/pdns/pdns/dnsrecords.hh:171,1
    - Dst: size
      Src: /src/pdns/pdns/dnsrecords.hh:171,1
    - Dst: size
      Src: /src/pdns/pdns/dnsrecords.hh:171,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 172
      start: 169
    functionDepth: 0
    functionLinenumber: 169
    functionLinenumberEnd: 172
    functionName: IPSECKEYRecordContent::sizeEstimate
    functionSourceFile: /src/pdns/pdns/dnsrecords.hh
    functionUses: 1
    functionsReached:
    - IPSECKEYRecordContent::sizeEstimate
    - size
    linkageType: ''
    returnType: size_t
    signature: size_t sizeEstimate() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsrecords.hh:187,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 188
      start: 185
    functionDepth: 0
    functionLinenumber: 185
    functionLinenumberEnd: 188
    functionName: DHCIDRecordContent::sizeEstimate
    functionSourceFile: /src/pdns/pdns/dnsrecords.hh
    functionUses: 0
    functionsReached:
    - size
    linkageType: ''
    returnType: size_t
    signature: size_t sizeEstimate() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SRVRecordContent::sizeEstimate
      Src: /src/pdns/pdns/dnsrecords.hh:203,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 204
      start: 201
    functionDepth: 0
    functionLinenumber: 201
    functionLinenumberEnd: 204
    functionName: SRVRecordContent::sizeEstimate
    functionSourceFile: /src/pdns/pdns/dnsrecords.hh
    functionUses: 1
    functionsReached:
    - SRVRecordContent::sizeEstimate
    linkageType: ''
    returnType: size_t
    signature: size_t sizeEstimate() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 215
      start: 214
    functionDepth: 0
    functionLinenumber: 214
    functionLinenumberEnd: 215
    functionName: TSIGRecordContent::TSIGRecordContent
    functionSourceFile: /src/pdns/pdns/dnsrecords.hh
    functionUses: 8
    functionsReached: []
    linkageType: ''
    returnType: includeboilerplate
    signature: includeboilerplate TSIGRecordContent()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TSIGRecordContent::sizeEstimate
      Src: /src/pdns/pdns/dnsrecords.hh:218,1
    - Dst: size
      Src: /src/pdns/pdns/dnsrecords.hh:218,1
    - Dst: size
      Src: /src/pdns/pdns/dnsrecords.hh:218,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 219
      start: 216
    functionDepth: 0
    functionLinenumber: 216
    functionLinenumberEnd: 219
    functionName: TSIGRecordContent::sizeEstimate
    functionSourceFile: /src/pdns/pdns/dnsrecords.hh
    functionUses: 1
    functionsReached:
    - size
    - TSIGRecordContent::sizeEstimate
    linkageType: ''
    returnType: size_t
    signature: size_t sizeEstimate() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsrecords.hh:241,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 242
      start: 239
    functionDepth: 0
    functionLinenumber: 239
    functionLinenumberEnd: 242
    functionName: TXTRecordContent::sizeEstimate
    functionSourceFile: /src/pdns/pdns/dnsrecords.hh
    functionUses: 0
    functionsReached:
    - size
    linkageType: ''
    returnType: size_t
    signature: size_t sizeEstimate() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LUARecordContent::getCode
      Src: /src/pdns/pdns/dnsrecords.hh:254,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 255
      start: 252
    functionDepth: 0
    functionLinenumber: 252
    functionLinenumberEnd: 255
    functionName: LUARecordContent::sizeEstimate
    functionSourceFile: /src/pdns/pdns/dnsrecords.hh
    functionUses: 0
    functionsReached:
    - LUARecordContent::getCode
    linkageType: ''
    returnType: size_t
    signature: size_t sizeEstimate() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 269
      start: 266
    functionDepth: 0
    functionLinenumber: 266
    functionLinenumberEnd: 269
    functionName: ENTRecordContent::sizeEstimate
    functionSourceFile: /src/pdns/pdns/dnsrecords.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: size_t sizeEstimate() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 279
      start: 276
    functionDepth: 0
    functionLinenumber: 276
    functionLinenumberEnd: 279
    functionName: '& getText() const'
    functionSourceFile: /src/pdns/pdns/dnsrecords.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string & getText() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsrecords.hh:282,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 283
      start: 280
    functionDepth: 0
    functionLinenumber: 280
    functionLinenumberEnd: 283
    functionName: SPFRecordContent::sizeEstimate
    functionSourceFile: /src/pdns/pdns/dnsrecords.hh
    functionUses: 0
    functionsReached:
    - size
    linkageType: ''
    returnType: size_t
    signature: size_t sizeEstimate() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsrecords.hh:294,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - content
    argTypes:
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 294
      start: 293
    functionDepth: 0
    functionLinenumber: 293
    functionLinenumberEnd: 294
    functionName: NSRecordContent::NSRecordContent
    functionSourceFile: /src/pdns/pdns/dnsrecords.hh
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void NSRecordContent(DNSName content)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 295
      start: 295
    functionDepth: 0
    functionLinenumber: 295
    functionLinenumberEnd: 295
    functionName: '& getNS() const'
    functionSourceFile: /src/pdns/pdns/dnsrecords.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: DNSName
    signature: DNSName & getNS() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: typeid
      Src: /src/pdns/pdns/dnsrecords.hh:298,1
    - Dst: typeid
      Src: /src/pdns/pdns/dnsrecords.hh:298,1
    - Dst: dynamic_cast<const decltype(this)>
      Src: /src/pdns/pdns/dnsrecords.hh:300,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - DNSRecordContent
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 302
      start: 296
    functionDepth: 0
    functionLinenumber: 296
    functionLinenumberEnd: 302
    functionName: operator==(const DNSRecordContent& rhs) const override
    functionSourceFile: /src/pdns/pdns/dnsrecords.hh
    functionUses: 0
    functionsReached:
    - dynamic_cast<const decltype(this)>
    - typeid
    linkageType: ''
    returnType: bool
    signature: bool operator==(const DNSRecordContent& rhs) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: NSRecordContent::sizeEstimate
      Src: /src/pdns/pdns/dnsrecords.hh:305,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 306
      start: 303
    functionDepth: 0
    functionLinenumber: 303
    functionLinenumberEnd: 306
    functionName: NSRecordContent::sizeEstimate
    functionSourceFile: /src/pdns/pdns/dnsrecords.hh
    functionUses: 1
    functionsReached:
    - NSRecordContent::sizeEstimate
    linkageType: ''
    returnType: size_t
    signature: size_t sizeEstimate() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsrecords.hh:315,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - content
    argTypes:
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 315
      start: 314
    functionDepth: 0
    functionLinenumber: 314
    functionLinenumberEnd: 315
    functionName: PTRRecordContent::PTRRecordContent
    functionSourceFile: /src/pdns/pdns/dnsrecords.hh
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void PTRRecordContent(DNSName content)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 316
      start: 316
    functionDepth: 0
    functionLinenumber: 316
    functionLinenumberEnd: 316
    functionName: '& getContent() const'
    functionSourceFile: /src/pdns/pdns/dnsrecords.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: DNSName
    signature: DNSName & getContent() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PTRRecordContent::sizeEstimate
      Src: /src/pdns/pdns/dnsrecords.hh:319,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 320
      start: 317
    functionDepth: 0
    functionLinenumber: 317
    functionLinenumberEnd: 320
    functionName: PTRRecordContent::sizeEstimate
    functionSourceFile: /src/pdns/pdns/dnsrecords.hh
    functionUses: 2
    functionsReached:
    - PTRRecordContent::sizeEstimate
    linkageType: ''
    returnType: size_t
    signature: size_t sizeEstimate() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsrecords.hh:330,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - content
    argTypes:
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 330
      start: 329
    functionDepth: 0
    functionLinenumber: 329
    functionLinenumberEnd: 330
    functionName: CNAMERecordContent::CNAMERecordContent
    functionSourceFile: /src/pdns/pdns/dnsrecords.hh
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void CNAMERecordContent(DNSName content)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 331
      start: 331
    functionDepth: 0
    functionLinenumber: 331
    functionLinenumberEnd: 331
    functionName: CNAMERecordContent::getTarget
    functionSourceFile: /src/pdns/pdns/dnsrecords.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: DNSName
    signature: DNSName getTarget() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CNAMERecordContent::sizeEstimate
      Src: /src/pdns/pdns/dnsrecords.hh:334,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 335
      start: 332
    functionDepth: 0
    functionLinenumber: 332
    functionLinenumberEnd: 335
    functionName: CNAMERecordContent::sizeEstimate
    functionSourceFile: /src/pdns/pdns/dnsrecords.hh
    functionUses: 1
    functionsReached:
    - CNAMERecordContent::sizeEstimate
    linkageType: ''
    returnType: size_t
    signature: size_t sizeEstimate() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 349
      start: 346
    functionDepth: 0
    functionLinenumber: 346
    functionLinenumberEnd: 349
    functionName: '& getContent() const'
    functionSourceFile: /src/pdns/pdns/dnsrecords.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: DNSName
    signature: DNSName & getContent() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ALIASRecordContent::sizeEstimate
      Src: /src/pdns/pdns/dnsrecords.hh:352,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 353
      start: 350
    functionDepth: 0
    functionLinenumber: 350
    functionLinenumberEnd: 353
    functionName: ALIASRecordContent::sizeEstimate
    functionSourceFile: /src/pdns/pdns/dnsrecords.hh
    functionUses: 1
    functionsReached:
    - ALIASRecordContent::sizeEstimate
    linkageType: ''
    returnType: size_t
    signature: size_t sizeEstimate() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsrecords.hh:364,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - content
    argTypes:
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 364
      start: 363
    functionDepth: 0
    functionLinenumber: 363
    functionLinenumberEnd: 364
    functionName: DNAMERecordContent::DNAMERecordContent
    functionSourceFile: /src/pdns/pdns/dnsrecords.hh
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void DNAMERecordContent(DNSName content)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 365
      start: 365
    functionDepth: 0
    functionLinenumber: 365
    functionLinenumberEnd: 365
    functionName: '& getTarget() const'
    functionSourceFile: /src/pdns/pdns/dnsrecords.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: DNSName
    signature: DNSName & getTarget() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNAMERecordContent::sizeEstimate
      Src: /src/pdns/pdns/dnsrecords.hh:368,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 369
      start: 366
    functionDepth: 0
    functionLinenumber: 366
    functionLinenumberEnd: 369
    functionName: DNAMERecordContent::sizeEstimate
    functionSourceFile: /src/pdns/pdns/dnsrecords.hh
    functionUses: 1
    functionsReached:
    - DNAMERecordContent::sizeEstimate
    linkageType: ''
    returnType: size_t
    signature: size_t sizeEstimate() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MBRecordContent::sizeEstimate
      Src: /src/pdns/pdns/dnsrecords.hh:381,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 382
      start: 379
    functionDepth: 0
    functionLinenumber: 379
    functionLinenumberEnd: 382
    functionName: MBRecordContent::sizeEstimate
    functionSourceFile: /src/pdns/pdns/dnsrecords.hh
    functionUses: 1
    functionsReached:
    - MBRecordContent::sizeEstimate
    linkageType: ''
    returnType: size_t
    signature: size_t sizeEstimate() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MGRecordContent::sizeEstimate
      Src: /src/pdns/pdns/dnsrecords.hh:394,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 395
      start: 392
    functionDepth: 0
    functionLinenumber: 392
    functionLinenumberEnd: 395
    functionName: MGRecordContent::sizeEstimate
    functionSourceFile: /src/pdns/pdns/dnsrecords.hh
    functionUses: 1
    functionsReached:
    - MGRecordContent::sizeEstimate
    linkageType: ''
    returnType: size_t
    signature: size_t sizeEstimate() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MRRecordContent::sizeEstimate
      Src: /src/pdns/pdns/dnsrecords.hh:407,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 408
      start: 405
    functionDepth: 0
    functionLinenumber: 405
    functionLinenumberEnd: 408
    functionName: MRRecordContent::sizeEstimate
    functionSourceFile: /src/pdns/pdns/dnsrecords.hh
    functionUses: 1
    functionsReached:
    - MRRecordContent::sizeEstimate
    linkageType: ''
    returnType: size_t
    signature: size_t sizeEstimate() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MINFORecordContent::sizeEstimate
      Src: /src/pdns/pdns/dnsrecords.hh:420,1
    - Dst: MINFORecordContent::sizeEstimate
      Src: /src/pdns/pdns/dnsrecords.hh:420,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 421
      start: 418
    functionDepth: 0
    functionLinenumber: 418
    functionLinenumberEnd: 421
    functionName: MINFORecordContent::sizeEstimate
    functionSourceFile: /src/pdns/pdns/dnsrecords.hh
    functionUses: 1
    functionsReached:
    - MINFORecordContent::sizeEstimate
    linkageType: ''
    returnType: size_t
    signature: size_t sizeEstimate() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 431
      start: 431
    functionDepth: 0
    functionLinenumber: 431
    functionLinenumberEnd: 431
    functionName: OPTRecordContent::OPTRecordContent
    functionSourceFile: /src/pdns/pdns/dnsrecords.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void OPTRecordContent()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsrecords.hh:436,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 437
      start: 434
    functionDepth: 0
    functionLinenumber: 434
    functionLinenumberEnd: 437
    functionName: OPTRecordContent::sizeEstimate
    functionSourceFile: /src/pdns/pdns/dnsrecords.hh
    functionUses: 0
    functionsReached:
    - size
    linkageType: ''
    returnType: size_t
    signature: size_t sizeEstimate() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsrecords.hh:449,1
    - Dst: size
      Src: /src/pdns/pdns/dnsrecords.hh:449,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 450
      start: 447
    functionDepth: 0
    functionLinenumber: 447
    functionLinenumberEnd: 450
    functionName: HINFORecordContent::sizeEstimate
    functionSourceFile: /src/pdns/pdns/dnsrecords.hh
    functionUses: 0
    functionsReached:
    - size
    linkageType: ''
    returnType: size_t
    signature: size_t sizeEstimate() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RPRecordContent::sizeEstimate
      Src: /src/pdns/pdns/dnsrecords.hh:462,1
    - Dst: RPRecordContent::sizeEstimate
      Src: /src/pdns/pdns/dnsrecords.hh:462,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 463
      start: 460
    functionDepth: 0
    functionLinenumber: 460
    functionLinenumberEnd: 463
    functionName: RPRecordContent::sizeEstimate
    functionSourceFile: /src/pdns/pdns/dnsrecords.hh
    functionUses: 1
    functionsReached:
    - RPRecordContent::sizeEstimate
    linkageType: ''
    returnType: size_t
    signature: size_t sizeEstimate() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::tie
      Src: /src/pdns/pdns/dnsrecords.hh:482,1
    - Dst: std::tie
      Src: /src/pdns/pdns/dnsrecords.hh:483,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - DNSKEYRecordContent
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 484
      start: 480
    functionDepth: 0
    functionLinenumber: 480
    functionLinenumberEnd: 484
    functionName: operator<(const DNSKEYRecordContent& rhs) const
    functionSourceFile: /src/pdns/pdns/dnsrecords.hh
    functionUses: 0
    functionsReached:
    - std::tie
    linkageType: ''
    returnType: bool
    signature: bool operator<(const DNSKEYRecordContent& rhs) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsrecords.hh:487,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 488
      start: 485
    functionDepth: 0
    functionLinenumber: 485
    functionLinenumberEnd: 488
    functionName: DNSKEYRecordContent::sizeEstimate
    functionSourceFile: /src/pdns/pdns/dnsrecords.hh
    functionUses: 0
    functionsReached:
    - size
    linkageType: ''
    returnType: size_t
    signature: size_t sizeEstimate() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsrecords.hh:499,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 500
      start: 497
    functionDepth: 0
    functionLinenumber: 497
    functionLinenumberEnd: 500
    functionName: CDNSKEYRecordContent::sizeEstimate
    functionSourceFile: /src/pdns/pdns/dnsrecords.hh
    functionUses: 0
    functionsReached:
    - size
    linkageType: ''
    returnType: size_t
    signature: size_t sizeEstimate() const override
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: typeid
      Src: /src/pdns/pdns/dnsrecords.hh:514,1
    - Dst: typeid
      Src: /src/pdns/pdns/dnsrecords.hh:514,1
    - Dst: dynamic_cast<const decltype(this)>
      Src: /src/pdns/pdns/dnsrecords.hh:516,1
    - Dst: std::tie
      Src: /src/pdns/pdns/dnsrecords.hh:517,1
    - Dst: std::tie
      Src: /src/pdns/pdns/dnsrecords.hh:518,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - DNSRecordContent
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 519
      start: 512
    functionDepth: 0
    functionLinenumber: 512
    functionLinenumberEnd: 519
    functionName: operator==(const DNSRecordContent& rhs) const override
    functionSourceFile: /src/pdns/pdns/dnsrecords.hh
    functionUses: 0
    functionsReached:
    - std::tie
    - dynamic_cast<const decltype(this)>
    - typeid
    linkageType: ''
    returnType: bool
    signature: bool operator==(const DNSRecordContent& rhs) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::tie
      Src: /src/pdns/pdns/dnsrecords.hh:522,1
    - Dst: std::tie
      Src: /src/pdns/pdns/dnsrecords.hh:523,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - DSRecordContent
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 524
      start: 520
    functionDepth: 0
    functionLinenumber: 520
    functionLinenumberEnd: 524
    functionName: operator<(const DSRecordContent& rhs) const
    functionSourceFile: /src/pdns/pdns/dnsrecords.hh
    functionUses: 0
    functionsReached:
    - std::tie
    linkageType: ''
    returnType: bool
    signature: bool operator<(const DSRecordContent& rhs) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsrecords.hh:529,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 530
      start: 527
    functionDepth: 0
    functionLinenumber: 527
    functionLinenumberEnd: 530
    functionName: DSRecordContent::sizeEstimate
    functionSourceFile: /src/pdns/pdns/dnsrecords.hh
    functionUses: 0
    functionsReached:
    - size
    linkageType: ''
    returnType: size_t
    signature: size_t sizeEstimate() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsrecords.hh:544,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 545
      start: 542
    functionDepth: 0
    functionLinenumber: 542
    functionLinenumberEnd: 545
    functionName: CDSRecordContent::sizeEstimate
    functionSourceFile: /src/pdns/pdns/dnsrecords.hh
    functionUses: 0
    functionsReached:
    - size
    linkageType: ''
    returnType: size_t
    signature: size_t sizeEstimate() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsrecords.hh:559,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 560
      start: 557
    functionDepth: 0
    functionLinenumber: 557
    functionLinenumberEnd: 560
    functionName: DLVRecordContent::sizeEstimate
    functionSourceFile: /src/pdns/pdns/dnsrecords.hh
    functionUses: 0
    functionsReached:
    - size
    linkageType: ''
    returnType: size_t
    signature: size_t sizeEstimate() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsrecords.hh:574,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 575
      start: 572
    functionDepth: 0
    functionLinenumber: 572
    functionLinenumberEnd: 575
    functionName: SSHFPRecordContent::sizeEstimate
    functionSourceFile: /src/pdns/pdns/dnsrecords.hh
    functionUses: 0
    functionsReached:
    - size
    linkageType: ''
    returnType: size_t
    signature: size_t sizeEstimate() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsrecords.hh:588,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 589
      start: 586
    functionDepth: 0
    functionLinenumber: 586
    functionLinenumberEnd: 589
    functionName: KEYRecordContent::sizeEstimate
    functionSourceFile: /src/pdns/pdns/dnsrecords.hh
    functionUses: 1
    functionsReached:
    - size
    linkageType: ''
    returnType: size_t
    signature: size_t sizeEstimate() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: AFSDBRecordContent::sizeEstimate
      Src: /src/pdns/pdns/dnsrecords.hh:603,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 604
      start: 601
    functionDepth: 0
    functionLinenumber: 601
    functionLinenumberEnd: 604
    functionName: AFSDBRecordContent::sizeEstimate
    functionSourceFile: /src/pdns/pdns/dnsrecords.hh
    functionUses: 1
    functionsReached:
    - AFSDBRecordContent::sizeEstimate
    linkageType: ''
    returnType: size_t
    signature: size_t sizeEstimate() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsrecords.hh:622,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 623
      start: 620
    functionDepth: 0
    functionLinenumber: 620
    functionLinenumberEnd: 623
    functionName: CERTRecordContent::sizeEstimate
    functionSourceFile: /src/pdns/pdns/dnsrecords.hh
    functionUses: 0
    functionsReached:
    - size
    linkageType: ''
    returnType: size_t
    signature: size_t sizeEstimate() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsrecords.hh:637,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 638
      start: 635
    functionDepth: 0
    functionLinenumber: 635
    functionLinenumberEnd: 638
    functionName: TLSARecordContent::sizeEstimate
    functionSourceFile: /src/pdns/pdns/dnsrecords.hh
    functionUses: 0
    functionsReached:
    - size
    linkageType: ''
    returnType: size_t
    signature: size_t sizeEstimate() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsrecords.hh:651,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 652
      start: 649
    functionDepth: 0
    functionLinenumber: 649
    functionLinenumberEnd: 652
    functionName: SMIMEARecordContent::sizeEstimate
    functionSourceFile: /src/pdns/pdns/dnsrecords.hh
    functionUses: 0
    functionsReached:
    - size
    linkageType: ''
    returnType: size_t
    signature: size_t sizeEstimate() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsrecords.hh:665,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 666
      start: 663
    functionDepth: 0
    functionLinenumber: 663
    functionLinenumberEnd: 666
    functionName: OPENPGPKEYRecordContent::sizeEstimate
    functionSourceFile: /src/pdns/pdns/dnsrecords.hh
    functionUses: 0
    functionsReached:
    - size
    linkageType: ''
    returnType: size_t
    signature: size_t sizeEstimate() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 675
      start: 675
    functionDepth: 0
    functionLinenumber: 675
    functionLinenumberEnd: 675
    functionName: '& getTarget() const'
    functionSourceFile: /src/pdns/pdns/dnsrecords.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: DNSName
    signature: DNSName & getTarget() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 676
      start: 676
    functionDepth: 0
    functionLinenumber: 676
    functionLinenumberEnd: 676
    functionName: SVCBBaseRecordContent::getPriority
    functionSourceFile: /src/pdns/pdns/dnsrecords.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t getPriority() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsrecords.hh:693,1
    - Dst: SVCBBaseRecordContent::sizeEstimate
      Src: /src/pdns/pdns/dnsrecords.hh:693,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 694
      start: 691
    functionDepth: 0
    functionLinenumber: 691
    functionLinenumberEnd: 694
    functionName: SVCBBaseRecordContent::sizeEstimate
    functionSourceFile: /src/pdns/pdns/dnsrecords.hh
    functionUses: 1
    functionsReached:
    - size
    - SVCBBaseRecordContent::sizeEstimate
    linkageType: ''
    returnType: size_t
    signature: size_t sizeEstimate() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsrecords.hh:724,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 725
      start: 722
    functionDepth: 0
    functionLinenumber: 722
    functionLinenumberEnd: 725
    functionName: DRIPBaseRecordContent::sizeEstimate
    functionSourceFile: /src/pdns/pdns/dnsrecords.hh
    functionUses: 0
    functionsReached:
    - size
    linkageType: ''
    returnType: size_t
    signature: size_t sizeEstimate() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RRSIGRecordContent::sizeEstimate
      Src: /src/pdns/pdns/dnsrecords.hh:751,1
    - Dst: size
      Src: /src/pdns/pdns/dnsrecords.hh:751,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 752
      start: 749
    functionDepth: 0
    functionLinenumber: 749
    functionLinenumberEnd: 752
    functionName: RRSIGRecordContent::sizeEstimate
    functionSourceFile: /src/pdns/pdns/dnsrecords.hh
    functionUses: 1
    functionsReached:
    - RRSIGRecordContent::sizeEstimate
    - size
    linkageType: ''
    returnType: size_t
    signature: size_t sizeEstimate() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsrecords.hh:779,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 780
      start: 777
    functionDepth: 0
    functionLinenumber: 777
    functionLinenumberEnd: 780
    functionName: RKEYRecordContent::sizeEstimate
    functionSourceFile: /src/pdns/pdns/dnsrecords.hh
    functionUses: 0
    functionsReached:
    - size
    linkageType: ''
    returnType: size_t
    signature: size_t sizeEstimate() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SOARecordContent::sizeEstimate
      Src: /src/pdns/pdns/dnsrecords.hh:794,1
    - Dst: SOARecordContent::sizeEstimate
      Src: /src/pdns/pdns/dnsrecords.hh:794,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 795
      start: 792
    functionDepth: 0
    functionLinenumber: 792
    functionLinenumberEnd: 795
    functionName: SOARecordContent::sizeEstimate
    functionSourceFile: /src/pdns/pdns/dnsrecords.hh
    functionUses: 1
    functionsReached:
    - SOARecordContent::sizeEstimate
    linkageType: ''
    returnType: size_t
    signature: size_t sizeEstimate() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsrecords.hh:809,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 810
      start: 807
    functionDepth: 0
    functionLinenumber: 807
    functionLinenumberEnd: 810
    functionName: ZONEMDRecordContent::sizeEstimate
    functionSourceFile: /src/pdns/pdns/dnsrecords.hh
    functionUses: 0
    functionsReached:
    - size
    linkageType: ''
    returnType: size_t
    signature: size_t sizeEstimate() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 822
      start: 820
    functionDepth: 0
    functionLinenumber: 820
    functionLinenumberEnd: 822
    functionName: NSECBitmap::NSECBitmap
    functionSourceFile: /src/pdns/pdns/dnsrecords.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void NSECBitmap()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::make_unique<std::bitset<nbTypes>>
      Src: /src/pdns/pdns/dnsrecords.hh:826,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - NSECBitmap
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 828
      start: 823
    functionDepth: 0
    functionLinenumber: 823
    functionLinenumberEnd: 828
    functionName: NSECBitmap::NSECBitmap
    functionSourceFile: /src/pdns/pdns/dnsrecords.hh
    functionUses: 0
    functionsReached:
    - std::make_unique<std::bitset<nbTypes>>
    linkageType: ''
    returnType: void
    signature: void NSECBitmap(const NSECBitmap& rhs)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::make_unique<std::bitset<nbTypes>>
      Src: /src/pdns/pdns/dnsrecords.hh:834,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - NSECBitmap
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 838
      start: 829
    functionDepth: 0
    functionLinenumber: 829
    functionLinenumberEnd: 838
    functionName: '& operator=(const NSECBitmap& rhs)'
    functionSourceFile: /src/pdns/pdns/dnsrecords.hh
    functionUses: 0
    functionsReached:
    - std::make_unique<std::bitset<nbTypes>>
    linkageType: ''
    returnType: NSECBitmap
    signature: NSECBitmap & operator=(const NSECBitmap& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsrecords.hh:840,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsrecords.hh:840,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - NSECBitmap
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 842
      start: 839
    functionDepth: 0
    functionLinenumber: 839
    functionLinenumberEnd: 842
    functionName: NSECBitmap::NSECBitmap
    functionSourceFile: /src/pdns/pdns/dnsrecords.hh
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void NSECBitmap(NSECBitmap&& rhs) noexcept
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: test
      Src: /src/pdns/pdns/dnsrecords.hh:846,1
    - Dst: NSECBitmap::count
      Src: /src/pdns/pdns/dnsrecords.hh:848,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - type
    argTypes:
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 849
      start: 843
    functionDepth: 0
    functionLinenumber: 843
    functionLinenumberEnd: 849
    functionName: NSECBitmap::isSet
    functionSourceFile: /src/pdns/pdns/dnsrecords.hh
    functionUses: 0
    functionsReached:
    - NSECBitmap::count
    - test
    linkageType: ''
    returnType: bool
    signature: bool isSet(uint16_t type) const
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsrecords.hh:853,1
    - Dst: NSECBitmap::migrateToBitSet
      Src: /src/pdns/pdns/dnsrecords.hh:854,1
    - Dst: NSECBitmap::set
      Src: /src/pdns/pdns/dnsrecords.hh:858,1
    - Dst: insert
      Src: /src/pdns/pdns/dnsrecords.hh:861,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - type
    argTypes:
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 863
      start: 850
    functionDepth: 1
    functionLinenumber: 850
    functionLinenumberEnd: 863
    functionName: NSECBitmap::set
    functionSourceFile: /src/pdns/pdns/dnsrecords.hh
    functionUses: 2
    functionsReached:
    - NSECBitmap::migrateToBitSet
    - NSECBitmap::set
    - insert
    - size
    linkageType: ''
    returnType: void
    signature: void set(uint16_t type)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: NSECBitmap::count
      Src: /src/pdns/pdns/dnsrecords.hh:867,1
    - Dst: size
      Src: /src/pdns/pdns/dnsrecords.hh:870,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 872
      start: 864
    functionDepth: 0
    functionLinenumber: 864
    functionLinenumberEnd: 872
    functionName: NSECBitmap::count
    functionSourceFile: /src/pdns/pdns/dnsrecords.hh
    functionUses: 4
    functionsReached:
    - NSECBitmap::count
    - size
    linkageType: ''
    returnType: size_t
    signature: size_t count() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsrecords.hh:885,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 886
      start: 880
    functionDepth: 0
    functionLinenumber: 880
    functionLinenumberEnd: 886
    functionName: NSECBitmap::sizeEstimate
    functionSourceFile: /src/pdns/pdns/dnsrecords.hh
    functionUses: 0
    functionsReached:
    - size
    linkageType: ''
    returnType: size_t
    signature: size_t sizeEstimate() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::make_unique<std::bitset<nbTypes>>
      Src: /src/pdns/pdns/dnsrecords.hh:892,1
    - Dst: NSECBitmap::set
      Src: /src/pdns/pdns/dnsrecords.hh:894,1
    - Dst: clear
      Src: /src/pdns/pdns/dnsrecords.hh:896,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 897
      start: 890
    functionDepth: 1
    functionLinenumber: 890
    functionLinenumberEnd: 897
    functionName: NSECBitmap::migrateToBitSet
    functionSourceFile: /src/pdns/pdns/dnsrecords.hh
    functionUses: 1
    functionsReached:
    - clear
    - NSECBitmap::set
    - std::make_unique<std::bitset<nbTypes>>
    linkageType: ''
    returnType: void
    signature: void migrateToBitSet()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 911
      start: 911
    functionDepth: 0
    functionLinenumber: 911
    functionLinenumberEnd: 911
    functionName: NSECRecordContent::NSECRecordContent
    functionSourceFile: /src/pdns/pdns/dnsrecords.hh
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void NSECRecordContent()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 921
      start: 918
    functionDepth: 0
    functionLinenumber: 918
    functionLinenumberEnd: 921
    functionName: NSECRecordContent::getType
    functionSourceFile: /src/pdns/pdns/dnsrecords.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t getType() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: NSECRecordContent::isSet
      Src: /src/pdns/pdns/dnsrecords.hh:924,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - type
    argTypes:
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 925
      start: 922
    functionDepth: 0
    functionLinenumber: 922
    functionLinenumberEnd: 925
    functionName: NSECRecordContent::isSet
    functionSourceFile: /src/pdns/pdns/dnsrecords.hh
    functionUses: 1
    functionsReached:
    - NSECRecordContent::isSet
    linkageType: ''
    returnType: bool
    signature: bool isSet(uint16_t type) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: NSECRecordContent::set
      Src: /src/pdns/pdns/dnsrecords.hh:928,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - type
    argTypes:
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 929
      start: 926
    functionDepth: 0
    functionLinenumber: 926
    functionLinenumberEnd: 929
    functionName: NSECRecordContent::set
    functionSourceFile: /src/pdns/pdns/dnsrecords.hh
    functionUses: 3
    functionsReached:
    - NSECRecordContent::set
    linkageType: ''
    returnType: void
    signature: void set(uint16_t type)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' bitmap'
    argTypes:
    - NSECBitmap
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 933
      start: 930
    functionDepth: 0
    functionLinenumber: 930
    functionLinenumberEnd: 933
    functionName: NSECRecordContent::set
    functionSourceFile: /src/pdns/pdns/dnsrecords.hh
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void set(const NSECBitmap& bitmap)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: count
      Src: /src/pdns/pdns/dnsrecords.hh:936,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 937
      start: 934
    functionDepth: 0
    functionLinenumber: 934
    functionLinenumberEnd: 937
    functionName: NSECRecordContent::numberOfTypesSet
    functionSourceFile: /src/pdns/pdns/dnsrecords.hh
    functionUses: 0
    functionsReached:
    - count
    linkageType: ''
    returnType: size_t
    signature: size_t numberOfTypesSet() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: NSECRecordContent::sizeEstimate
      Src: /src/pdns/pdns/dnsrecords.hh:941,1
    - Dst: NSECRecordContent::sizeEstimate
      Src: /src/pdns/pdns/dnsrecords.hh:941,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 942
      start: 939
    functionDepth: 0
    functionLinenumber: 939
    functionLinenumberEnd: 942
    functionName: NSECRecordContent::sizeEstimate
    functionSourceFile: /src/pdns/pdns/dnsrecords.hh
    functionUses: 1
    functionsReached:
    - NSECRecordContent::sizeEstimate
    linkageType: ''
    returnType: size_t
    signature: size_t sizeEstimate() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 952
      start: 952
    functionDepth: 0
    functionLinenumber: 952
    functionLinenumberEnd: 952
    functionName: NSEC3RecordContent::NSEC3RecordContent
    functionSourceFile: /src/pdns/pdns/dnsrecords.hh
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void NSEC3RecordContent()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 968
      start: 965
    functionDepth: 0
    functionLinenumber: 965
    functionLinenumberEnd: 968
    functionName: NSEC3RecordContent::getType
    functionSourceFile: /src/pdns/pdns/dnsrecords.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t getType() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: NSEC3RecordContent::isSet
      Src: /src/pdns/pdns/dnsrecords.hh:971,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - type
    argTypes:
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 972
      start: 969
    functionDepth: 0
    functionLinenumber: 969
    functionLinenumberEnd: 972
    functionName: NSEC3RecordContent::isSet
    functionSourceFile: /src/pdns/pdns/dnsrecords.hh
    functionUses: 2
    functionsReached:
    - NSEC3RecordContent::isSet
    linkageType: ''
    returnType: bool
    signature: bool isSet(uint16_t type) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: NSEC3RecordContent::set
      Src: /src/pdns/pdns/dnsrecords.hh:975,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - type
    argTypes:
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 976
      start: 973
    functionDepth: 0
    functionLinenumber: 973
    functionLinenumberEnd: 976
    functionName: NSEC3RecordContent::set
    functionSourceFile: /src/pdns/pdns/dnsrecords.hh
    functionUses: 3
    functionsReached:
    - NSEC3RecordContent::set
    linkageType: ''
    returnType: void
    signature: void set(uint16_t type)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' bitmap'
    argTypes:
    - NSECBitmap
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 980
      start: 977
    functionDepth: 0
    functionLinenumber: 977
    functionLinenumberEnd: 980
    functionName: NSEC3RecordContent::set
    functionSourceFile: /src/pdns/pdns/dnsrecords.hh
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void set(const NSECBitmap& bitmap)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: count
      Src: /src/pdns/pdns/dnsrecords.hh:983,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 984
      start: 981
    functionDepth: 0
    functionLinenumber: 981
    functionLinenumberEnd: 984
    functionName: NSEC3RecordContent::numberOfTypesSet
    functionSourceFile: /src/pdns/pdns/dnsrecords.hh
    functionUses: 1
    functionsReached:
    - count
    linkageType: ''
    returnType: size_t
    signature: size_t numberOfTypesSet() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 988
      start: 985
    functionDepth: 0
    functionLinenumber: 985
    functionLinenumberEnd: 988
    functionName: NSEC3RecordContent::isOptOut
    functionSourceFile: /src/pdns/pdns/dnsrecords.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool isOptOut() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsrecords.hh:992,1
    - Dst: size
      Src: /src/pdns/pdns/dnsrecords.hh:992,1
    - Dst: NSEC3RecordContent::sizeEstimate
      Src: /src/pdns/pdns/dnsrecords.hh:992,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 993
      start: 990
    functionDepth: 0
    functionLinenumber: 990
    functionLinenumberEnd: 993
    functionName: NSEC3RecordContent::sizeEstimate
    functionSourceFile: /src/pdns/pdns/dnsrecords.hh
    functionUses: 1
    functionsReached:
    - NSEC3RecordContent::sizeEstimate
    - size
    linkageType: ''
    returnType: size_t
    signature: size_t sizeEstimate() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1002
      start: 1002
    functionDepth: 0
    functionLinenumber: 1002
    functionLinenumberEnd: 1002
    functionName: CSYNCRecordContent::CSYNCRecordContent
    functionSourceFile: /src/pdns/pdns/dnsrecords.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void CSYNCRecordContent()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1013
      start: 1010
    functionDepth: 0
    functionLinenumber: 1010
    functionLinenumberEnd: 1013
    functionName: CSYNCRecordContent::getType
    functionSourceFile: /src/pdns/pdns/dnsrecords.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t getType() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CSYNCRecordContent::set
      Src: /src/pdns/pdns/dnsrecords.hh:1017,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - type
    argTypes:
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1018
      start: 1015
    functionDepth: 0
    functionLinenumber: 1015
    functionLinenumberEnd: 1018
    functionName: CSYNCRecordContent::set
    functionSourceFile: /src/pdns/pdns/dnsrecords.hh
    functionUses: 2
    functionsReached:
    - CSYNCRecordContent::set
    linkageType: ''
    returnType: void
    signature: void set(uint16_t type)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CSYNCRecordContent::sizeEstimate
      Src: /src/pdns/pdns/dnsrecords.hh:1022,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1023
      start: 1020
    functionDepth: 0
    functionLinenumber: 1020
    functionLinenumberEnd: 1023
    functionName: CSYNCRecordContent::sizeEstimate
    functionSourceFile: /src/pdns/pdns/dnsrecords.hh
    functionUses: 1
    functionsReached:
    - CSYNCRecordContent::sizeEstimate
    linkageType: ''
    returnType: size_t
    signature: size_t sizeEstimate() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1035
      start: 1035
    functionDepth: 0
    functionLinenumber: 1035
    functionLinenumberEnd: 1035
    functionName: NSEC3PARAMRecordContent::NSEC3PARAMRecordContent
    functionSourceFile: /src/pdns/pdns/dnsrecords.hh
    functionUses: 7
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void NSEC3PARAMRecordContent()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1046
      start: 1043
    functionDepth: 0
    functionLinenumber: 1043
    functionLinenumberEnd: 1046
    functionName: NSEC3PARAMRecordContent::getType
    functionSourceFile: /src/pdns/pdns/dnsrecords.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t getType() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsrecords.hh:1050,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1051
      start: 1048
    functionDepth: 0
    functionLinenumber: 1048
    functionLinenumberEnd: 1051
    functionName: NSEC3PARAMRecordContent::sizeEstimate
    functionSourceFile: /src/pdns/pdns/dnsrecords.hh
    functionUses: 0
    functionsReached:
    - size
    linkageType: ''
    returnType: size_t
    signature: size_t sizeEstimate() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1063
      start: 1063
    functionDepth: 0
    functionLinenumber: 1063
    functionLinenumberEnd: 1063
    functionName: LOCRecordContent::LOCRecordContent
    functionSourceFile: /src/pdns/pdns/dnsrecords.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void LOCRecordContent()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1076
      start: 1073
    functionDepth: 0
    functionLinenumber: 1073
    functionLinenumberEnd: 1076
    functionName: LOCRecordContent::getType
    functionSourceFile: /src/pdns/pdns/dnsrecords.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t getType() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1081
      start: 1078
    functionDepth: 0
    functionLinenumber: 1078
    functionLinenumberEnd: 1081
    functionName: LOCRecordContent::sizeEstimate
    functionSourceFile: /src/pdns/pdns/dnsrecords.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: size_t sizeEstimate() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1093
      start: 1090
    functionDepth: 0
    functionLinenumber: 1090
    functionLinenumberEnd: 1093
    functionName: NIDRecordContent::sizeEstimate
    functionSourceFile: /src/pdns/pdns/dnsrecords.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: size_t sizeEstimate() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1107
      start: 1104
    functionDepth: 0
    functionLinenumber: 1104
    functionLinenumberEnd: 1107
    functionName: L32RecordContent::sizeEstimate
    functionSourceFile: /src/pdns/pdns/dnsrecords.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: size_t sizeEstimate() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1121
      start: 1118
    functionDepth: 0
    functionLinenumber: 1118
    functionLinenumberEnd: 1121
    functionName: L64RecordContent::sizeEstimate
    functionSourceFile: /src/pdns/pdns/dnsrecords.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: size_t sizeEstimate() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LPRecordContent::sizeEstimate
      Src: /src/pdns/pdns/dnsrecords.hh:1134,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1135
      start: 1132
    functionDepth: 0
    functionLinenumber: 1132
    functionLinenumberEnd: 1135
    functionName: LPRecordContent::sizeEstimate
    functionSourceFile: /src/pdns/pdns/dnsrecords.hh
    functionUses: 1
    functionsReached:
    - LPRecordContent::sizeEstimate
    linkageType: ''
    returnType: size_t
    signature: size_t sizeEstimate() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsrecords.hh:1149,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1150
      start: 1147
    functionDepth: 0
    functionLinenumber: 1147
    functionLinenumberEnd: 1150
    functionName: WALLETRecordContent::sizeEstimate
    functionSourceFile: /src/pdns/pdns/dnsrecords.hh
    functionUses: 0
    functionsReached:
    - size
    linkageType: ''
    returnType: size_t
    signature: size_t sizeEstimate() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1159
      start: 1159
    functionDepth: 0
    functionLinenumber: 1159
    functionLinenumberEnd: 1159
    functionName: EUI48RecordContent::EUI48RecordContent
    functionSourceFile: /src/pdns/pdns/dnsrecords.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void EUI48RecordContent()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1165
      start: 1165
    functionDepth: 0
    functionLinenumber: 1165
    functionLinenumberEnd: 1165
    functionName: EUI48RecordContent::getType
    functionSourceFile: /src/pdns/pdns/dnsrecords.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t getType() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1169
      start: 1166
    functionDepth: 0
    functionLinenumber: 1166
    functionLinenumberEnd: 1169
    functionName: EUI48RecordContent::sizeEstimate
    functionSourceFile: /src/pdns/pdns/dnsrecords.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: size_t sizeEstimate() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1178
      start: 1178
    functionDepth: 0
    functionLinenumber: 1178
    functionLinenumberEnd: 1178
    functionName: EUI64RecordContent::EUI64RecordContent
    functionSourceFile: /src/pdns/pdns/dnsrecords.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void EUI64RecordContent()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1184
      start: 1184
    functionDepth: 0
    functionLinenumber: 1184
    functionLinenumberEnd: 1184
    functionName: EUI64RecordContent::getType
    functionSourceFile: /src/pdns/pdns/dnsrecords.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t getType() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1188
      start: 1185
    functionDepth: 0
    functionLinenumber: 1185
    functionLinenumberEnd: 1188
    functionName: EUI64RecordContent::sizeEstimate
    functionSourceFile: /src/pdns/pdns/dnsrecords.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: size_t sizeEstimate() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1209
      start: 1209
    functionDepth: 0
    functionLinenumber: 1209
    functionLinenumberEnd: 1209
    functionName: APLRecordContent::APLRecordContent
    functionSourceFile: /src/pdns/pdns/dnsrecords.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void APLRecordContent()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsrecords.hh:1213,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1214
      start: 1211
    functionDepth: 0
    functionLinenumber: 1211
    functionLinenumberEnd: 1214
    functionName: APLRecordContent::sizeEstimate
    functionSourceFile: /src/pdns/pdns/dnsrecords.hh
    functionUses: 0
    functionsReached:
    - size
    linkageType: ''
    returnType: size_t
    signature: size_t sizeEstimate() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1224
      start: 1224
    functionDepth: 0
    functionLinenumber: 1224
    functionLinenumberEnd: 1224
    functionName: TKEYRecordContent::TKEYRecordContent
    functionSourceFile: /src/pdns/pdns/dnsrecords.hh
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void TKEYRecordContent()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TKEYRecordContent::sizeEstimate
      Src: /src/pdns/pdns/dnsrecords.hh:1228,1
    - Dst: size
      Src: /src/pdns/pdns/dnsrecords.hh:1228,1
    - Dst: size
      Src: /src/pdns/pdns/dnsrecords.hh:1228,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1229
      start: 1226
    functionDepth: 0
    functionLinenumber: 1226
    functionLinenumberEnd: 1229
    functionName: TKEYRecordContent::sizeEstimate
    functionSourceFile: /src/pdns/pdns/dnsrecords.hh
    functionUses: 1
    functionsReached:
    - TKEYRecordContent::sizeEstimate
    - size
    linkageType: ''
    returnType: size_t
    signature: size_t sizeEstimate() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsrecords.hh:1251,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1252
      start: 1249
    functionDepth: 0
    functionLinenumber: 1249
    functionLinenumberEnd: 1252
    functionName: URIRecordContent::sizeEstimate
    functionSourceFile: /src/pdns/pdns/dnsrecords.hh
    functionUses: 0
    functionsReached:
    - size
    linkageType: ''
    returnType: size_t
    signature: size_t sizeEstimate() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsrecords.hh:1263,1
    - Dst: size
      Src: /src/pdns/pdns/dnsrecords.hh:1263,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1264
      start: 1261
    functionDepth: 0
    functionLinenumber: 1261
    functionLinenumberEnd: 1264
    functionName: CAARecordContent::sizeEstimate
    functionSourceFile: /src/pdns/pdns/dnsrecords.hh
    functionUses: 0
    functionsReached:
    - size
    linkageType: ''
    returnType: size_t
    signature: size_t sizeEstimate() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsrecords.hh:1277,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1278
      start: 1275
    functionDepth: 0
    functionLinenumber: 1275
    functionLinenumberEnd: 1278
    functionName: RESINFORecordContent::sizeEstimate
    functionSourceFile: /src/pdns/pdns/dnsrecords.hh
    functionUses: 0
    functionsReached:
    - size
    linkageType: ''
    returnType: size_t
    signature: size_t sizeEstimate() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<uint16_t>
      Src: /src/pdns/pdns/dnsrecords.hh:1357,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rcode
    argTypes:
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1358
      start: 1355
    functionDepth: 0
    functionLinenumber: 1355
    functionLinenumberEnd: 1358
    functionName: getCombinedERCode
    functionSourceFile: /src/pdns/pdns/dnsrecords.hh
    functionUses: 0
    functionsReached:
    - static_cast<uint16_t>
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t getCombinedERCode(uint8_t rcode) const
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: cap_get_proc
      Src: /src/pdns/pdns/capabilities.cc:39,1
    - Dst: cap_clear
      Src: /src/pdns/pdns/capabilities.cc:41,1
    - Dst: std::set<std::string>::empty
      Src: /src/pdns/pdns/capabilities.cc:43,1
    - Dst: std::vector::reserve
      Src: /src/pdns/pdns/capabilities.cc:45,1
    - Dst: std::set<std::string>::size
      Src: /src/pdns/pdns/capabilities.cc:45,1
    - Dst: cap_from_name
      Src: /src/pdns/pdns/capabilities.cc:49,1
    - Dst: c_str
      Src: /src/pdns/pdns/capabilities.cc:49,1
    - Dst: cap_free
      Src: /src/pdns/pdns/capabilities.cc:51,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/capabilities.cc:52,1
    - Dst: stringerror
      Src: /src/pdns/pdns/capabilities.cc:52,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/capabilities.cc:54,1
    - Dst: cap_set_flag
      Src: /src/pdns/pdns/capabilities.cc:57,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/capabilities.cc:57,1
    - Dst: std::vector::data
      Src: /src/pdns/pdns/capabilities.cc:57,1
    - Dst: cap_free
      Src: /src/pdns/pdns/capabilities.cc:58,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/capabilities.cc:59,1
    - Dst: stringerror
      Src: /src/pdns/pdns/capabilities.cc:59,1
    - Dst: cap_set_flag
      Src: /src/pdns/pdns/capabilities.cc:62,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/capabilities.cc:62,1
    - Dst: std::vector::data
      Src: /src/pdns/pdns/capabilities.cc:62,1
    - Dst: cap_free
      Src: /src/pdns/pdns/capabilities.cc:63,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/capabilities.cc:64,1
    - Dst: stringerror
      Src: /src/pdns/pdns/capabilities.cc:64,1
    - Dst: cap_set_proc
      Src: /src/pdns/pdns/capabilities.cc:68,1
    - Dst: cap_free
      Src: /src/pdns/pdns/capabilities.cc:69,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/capabilities.cc:73,1
    - Dst: stringerror
      Src: /src/pdns/pdns/capabilities.cc:73,1
    - Dst: cap_free
      Src: /src/pdns/pdns/capabilities.cc:76,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 31
    argCount: 1
    argNames:
    - capabilitiesToKeep
    argTypes:
    - std::set<std::string>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 36
    functionDepth: 0
    functionLinenumber: 36
    functionLinenumberEnd: 81
    functionName: dropCapabilities
    functionSourceFile: /src/pdns/pdns/capabilities.cc
    functionUses: 0
    functionsReached:
    - std::vector::push_back
    - std::vector::size
    - std::runtime_error
    - cap_get_proc
    - std::set<std::string>::empty
    - cap_clear
    - stringerror
    - cap_free
    - cap_from_name
    - cap_set_flag
    - std::vector::data
    - std::vector::reserve
    - cap_set_proc
    - c_str
    - std::set<std::string>::size
    linkageType: ''
    returnType: bool
    signature: bool dropCapabilities([[maybe_unused]] std::set<std::string> capabilitiesToKeep)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: prctl
      Src: /src/pdns/pdns/capabilities.cc:87,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 83
    functionDepth: 0
    functionLinenumber: 83
    functionLinenumberEnd: 95
    functionName: dropCapabilitiesAfterSwitchingIDs
    functionSourceFile: /src/pdns/pdns/capabilities.cc
    functionUses: 0
    functionsReached:
    - prctl
    linkageType: ''
    returnType: bool
    signature: bool dropCapabilitiesAfterSwitchingIDs()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: prctl
      Src: /src/pdns/pdns/capabilities.cc:101,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 97
    functionDepth: 0
    functionLinenumber: 97
    functionLinenumberEnd: 109
    functionName: keepCapabilitiesAfterSwitchingIDs
    functionSourceFile: /src/pdns/pdns/capabilities.cc
    functionUses: 0
    functionsReached:
    - prctl
    linkageType: ''
    returnType: bool
    signature: bool keepCapabilitiesAfterSwitchingIDs()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: clear
      Src: /src/pdns/pdns/trusted-notification-proxy.cc:29,1
    - Dst: stringtok
      Src: /src/pdns/pdns/trusted-notification-proxy.cc:31,1
    - Dst: addMask
      Src: /src/pdns/pdns/trusted-notification-proxy.cc:34,1
    - Dst: Netmask
      Src: /src/pdns/pdns/trusted-notification-proxy.cc:34,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/trusted-notification-proxy.cc:36,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/trusted-notification-proxy.cc:38,1
    - Dst: what
      Src: /src/pdns/pdns/trusted-notification-proxy.cc:38,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 1
    argNames:
    - addresses
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 28
    functionDepth: 1
    functionLinenumber: 28
    functionLinenumberEnd: 41
    functionName: pdns::parseTrustedNotificationProxy
    functionSourceFile: /src/pdns/pdns/trusted-notification-proxy.cc
    functionUses: 5
    functionsReached:
    - Netmask
    - stringtok
    - PDNSException
    - what
    - addMask
    - clear
    linkageType: ''
    returnType: void
    signature: void parseTrustedNotificationProxy(const std::string &addresses)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: match
      Src: /src/pdns/pdns/trusted-notification-proxy.cc:44,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - address
    argTypes:
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 45
    functionName: pdns::isAddressTrustedNotificationProxy
    functionSourceFile: /src/pdns/pdns/trusted-notification-proxy.cc
    functionUses: 3
    functionsReached:
    - match
    linkageType: ''
    returnType: bool
    signature: bool isAddressTrustedNotificationProxy(const ComboAddress &address)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: clear
      Src: /src/pdns/pdns/trusted-notification-proxy.cc:29,1
    - Dst: stringtok
      Src: /src/pdns/pdns/trusted-notification-proxy.cc:31,1
    - Dst: addMask
      Src: /src/pdns/pdns/trusted-notification-proxy.cc:34,1
    - Dst: Netmask
      Src: /src/pdns/pdns/trusted-notification-proxy.cc:34,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/trusted-notification-proxy.cc:36,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/trusted-notification-proxy.cc:38,1
    - Dst: what
      Src: /src/pdns/pdns/trusted-notification-proxy.cc:38,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 1
    argNames:
    - addresses
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 28
    functionDepth: 1
    functionLinenumber: 28
    functionLinenumberEnd: 41
    functionName: pdns::parseTrustedNotificationProxy
    functionSourceFile: /src/pdns/pdns/trusted-notification-proxy.cc
    functionUses: 5
    functionsReached:
    - Netmask
    - stringtok
    - PDNSException
    - what
    - addMask
    - clear
    linkageType: ''
    returnType: void
    signature: void parseTrustedNotificationProxy(const std::string &addresses)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: match
      Src: /src/pdns/pdns/trusted-notification-proxy.cc:44,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - address
    argTypes:
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 45
    functionName: pdns::isAddressTrustedNotificationProxy
    functionSourceFile: /src/pdns/pdns/trusted-notification-proxy.cc
    functionUses: 3
    functionsReached:
    - match
    linkageType: ''
    returnType: bool
    signature: bool isAddressTrustedNotificationProxy(const ComboAddress &address)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: name::empty
      Src: /src/pdns/pdns/tsigverifier.cc:8,1
    - Dst: append
      Src: /src/pdns/pdns/tsigverifier.cc:16,1
    - Dst: getTSIGPos
      Src: /src/pdns/pdns/tsigverifier.cc:17,1
    - Dst: size
      Src: /src/pdns/pdns/tsigverifier.cc:18,1
    - Dst: getTSIGPos
      Src: /src/pdns/pdns/tsigverifier.cc:21,1
    - Dst: getRR
      Src: /src/pdns/pdns/tsigverifier.cc:31,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/tsigverifier.cc:44,1
    - Dst: string::empty
      Src: /src/pdns/pdns/tsigverifier.cc:48,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/tsigverifier.cc:49,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/tsigverifier.cc:49,1
    - Dst: name::toLogString
      Src: /src/pdns/pdns/tsigverifier.cc:49,1
    - Dst: empty
      Src: /src/pdns/pdns/tsigverifier.cc:53,1
    - Dst: validateTSIG
      Src: /src/pdns/pdns/tsigverifier.cc:54,1
    - Dst: size
      Src: /src/pdns/pdns/tsigverifier.cc:54,1
    - Dst: size
      Src: /src/pdns/pdns/tsigverifier.cc:54,1
    - Dst: validateTSIG
      Src: /src/pdns/pdns/tsigverifier.cc:57,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/tsigverifier.cc:61,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/tsigverifier.cc:61,1
    - Dst: what
      Src: /src/pdns/pdns/tsigverifier.cc:61,1
    - Dst: std::move
      Src: /src/pdns/pdns/tsigverifier.cc:65,1
    - Dst: clear
      Src: /src/pdns/pdns/tsigverifier.cc:67,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 48
    argCount: 2
    argNames:
    - ' data'
    - ' mdp'
    argTypes:
    - string
    - MOADNSParser
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 6
    functionDepth: 1
    functionLinenumber: 6
    functionLinenumberEnd: 75
    functionName: TSIGTCPVerifier::check
    functionSourceFile: /src/pdns/pdns/tsigverifier.cc
    functionUses: 0
    functionsReached:
    - getRR
    - std::move
    - std::runtime_error
    - string::empty
    - what
    - append
    - getTSIGPos
    - validateTSIG
    - size
    - name::empty
    - name::toLogString
    - clear
    - empty
    - toStringWithPort
    linkageType: ''
    returnType: bool
    signature: bool TSIGTCPVerifier::check(const string& data, const MOADNSParser&
      mdp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PKCS5_PBKDF2_HMAC_SHA1
      Src: /src/pdns/pdns/ipcipher.cc:18,1
    - Dst: c_str
      Src: /src/pdns/pdns/ipcipher.cc:18,1
    - Dst: size
      Src: /src/pdns/pdns/ipcipher.cc:18,1
    - Dst: std::string
      Src: /src/pdns/pdns/ipcipher.cc:20,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ' password'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 21
      start: 13
    functionDepth: 0
    functionLinenumber: 13
    functionLinenumberEnd: 21
    functionName: makeIPCipherKey
    functionSourceFile: /src/pdns/pdns/ipcipher.cc
    functionUses: 1
    functionsReached:
    - c_str
    - std::string
    - PKCS5_PBKDF2_HMAC_SHA1
    - size
    linkageType: ''
    returnType: std::string
    signature: std::string makeIPCipherKey(const std::string& password)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/ipcipher.cc:25,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/ipcipher.cc:26,1
    - Dst: ipcrypt_encrypt
      Src: /src/pdns/pdns/ipcipher.cc:32,1
    - Dst: c_str
      Src: /src/pdns/pdns/ipcipher.cc:34,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - ' ca'
    - ' key'
    argTypes:
    - ComboAddress
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 23
    functionDepth: 0
    functionLinenumber: 23
    functionLinenumberEnd: 37
    functionName: encryptCA4
    functionSourceFile: /src/pdns/pdns/ipcipher.cc
    functionUses: 0
    functionsReached:
    - c_str
    - ipcrypt_encrypt
    - size
    - std::runtime_error
    linkageType: ''
    returnType: ComboAddress
    signature: ComboAddress encryptCA4(const ComboAddress& ca, const std::string&
      key)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/ipcipher.cc:41,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/ipcipher.cc:42,1
    - Dst: ipcrypt_decrypt
      Src: /src/pdns/pdns/ipcipher.cc:48,1
    - Dst: c_str
      Src: /src/pdns/pdns/ipcipher.cc:50,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - ' ca'
    - ' key'
    argTypes:
    - ComboAddress
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 39
    functionDepth: 0
    functionLinenumber: 39
    functionLinenumberEnd: 53
    functionName: decryptCA4
    functionSourceFile: /src/pdns/pdns/ipcipher.cc
    functionUses: 0
    functionsReached:
    - c_str
    - ipcrypt_decrypt
    - size
    - std::runtime_error
    linkageType: ''
    returnType: ComboAddress
    signature: ComboAddress decryptCA4(const ComboAddress& ca, const std::string&
      key)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/ipcipher.cc:57,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/ipcipher.cc:58,1
    - Dst: std::unique_ptr<EVP_CIPHER_CTX, decltype(&EVP_CIPHER_CTX_free)>
      Src: /src/pdns/pdns/ipcipher.cc:64,1
    - Dst: EVP_CIPHER_CTX_new
      Src: /src/pdns/pdns/ipcipher.cc:64,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/ipcipher.cc:66,1
    - Dst: std::unique_ptr<EVP_CIPHER, decltype(&EVP_CIPHER_free)>
      Src: /src/pdns/pdns/ipcipher.cc:69,1
    - Dst: EVP_CIPHER_fetch
      Src: /src/pdns/pdns/ipcipher.cc:69,1
    - Dst: EVP_EncryptInit
      Src: /src/pdns/pdns/ipcipher.cc:72,1
    - Dst: auto::get
      Src: /src/pdns/pdns/ipcipher.cc:72,1
    - Dst: auto::get
      Src: /src/pdns/pdns/ipcipher.cc:72,1
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/ipcipher.cc:72,1
    - Dst: c_str
      Src: /src/pdns/pdns/ipcipher.cc:72,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/ipcipher.cc:73,1
    - Dst: EVP_CIPHER_get_block_size
      Src: /src/pdns/pdns/ipcipher.cc:79,1
    - Dst: auto::get
      Src: /src/pdns/pdns/ipcipher.cc:79,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/ipcipher.cc:81,1
    - Dst: EVP_CIPHER_CTX_set_padding
      Src: /src/pdns/pdns/ipcipher.cc:83,1
    - Dst: auto::get
      Src: /src/pdns/pdns/ipcipher.cc:83,1
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/ipcipher.cc:87,1
    - Dst: reinterpret_cast<unsigned char*>
      Src: /src/pdns/pdns/ipcipher.cc:89,1
    - Dst: EVP_EncryptUpdate
      Src: /src/pdns/pdns/ipcipher.cc:90,1
    - Dst: auto::get
      Src: /src/pdns/pdns/ipcipher.cc:90,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/ipcipher.cc:90,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/ipcipher.cc:91,1
    - Dst: EVP_EncryptFinal_ex
      Src: /src/pdns/pdns/ipcipher.cc:95,1
    - Dst: auto::get
      Src: /src/pdns/pdns/ipcipher.cc:95,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/ipcipher.cc:96,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/ipcipher.cc:100,1
    - Dst: AES_set_encrypt_key
      Src: /src/pdns/pdns/ipcipher.cc:104,1
    - Dst: c_str
      Src: /src/pdns/pdns/ipcipher.cc:104,1
    - Dst: AES_encrypt
      Src: /src/pdns/pdns/ipcipher.cc:105,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 26
    argCount: 2
    argNames:
    - ' address'
    - ' key'
    argTypes:
    - ComboAddress
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 55
    functionDepth: 0
    functionLinenumber: 55
    functionLinenumberEnd: 110
    functionName: encryptCA6
    functionSourceFile: /src/pdns/pdns/ipcipher.cc
    functionUses: 0
    functionsReached:
    - EVP_CIPHER_fetch
    - EVP_CIPHER_get_block_size
    - EVP_EncryptUpdate
    - static_cast<int>
    - AES_set_encrypt_key
    - EVP_CIPHER_CTX_set_padding
    - size
    - reinterpret_cast<unsigned char*>
    - reinterpret_cast<const unsigned char*>
    - c_str
    - EVP_EncryptInit
    - std::unique_ptr<EVP_CIPHER, decltype(&EVP_CIPHER_free)>
    - auto::get
    - std::runtime_error
    - AES_encrypt
    - std::unique_ptr<EVP_CIPHER_CTX, decltype(&EVP_CIPHER_CTX_free)>
    - EVP_EncryptFinal_ex
    - EVP_CIPHER_CTX_new
    - Logging::Logger::error
    linkageType: ''
    returnType: ComboAddress
    signature: ComboAddress encryptCA6(const ComboAddress& address, const std::string&
      key)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/ipcipher.cc:114,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/ipcipher.cc:115,1
    - Dst: std::unique_ptr<EVP_CIPHER_CTX, decltype(&EVP_CIPHER_CTX_free)>
      Src: /src/pdns/pdns/ipcipher.cc:121,1
    - Dst: EVP_CIPHER_CTX_new
      Src: /src/pdns/pdns/ipcipher.cc:121,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/ipcipher.cc:123,1
    - Dst: std::unique_ptr<EVP_CIPHER, decltype(&EVP_CIPHER_free)>
      Src: /src/pdns/pdns/ipcipher.cc:126,1
    - Dst: EVP_CIPHER_fetch
      Src: /src/pdns/pdns/ipcipher.cc:126,1
    - Dst: EVP_DecryptInit
      Src: /src/pdns/pdns/ipcipher.cc:129,1
    - Dst: auto::get
      Src: /src/pdns/pdns/ipcipher.cc:129,1
    - Dst: auto::get
      Src: /src/pdns/pdns/ipcipher.cc:129,1
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/ipcipher.cc:129,1
    - Dst: c_str
      Src: /src/pdns/pdns/ipcipher.cc:129,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/ipcipher.cc:130,1
    - Dst: EVP_CIPHER_get_block_size
      Src: /src/pdns/pdns/ipcipher.cc:136,1
    - Dst: auto::get
      Src: /src/pdns/pdns/ipcipher.cc:136,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/ipcipher.cc:138,1
    - Dst: EVP_CIPHER_CTX_set_padding
      Src: /src/pdns/pdns/ipcipher.cc:140,1
    - Dst: auto::get
      Src: /src/pdns/pdns/ipcipher.cc:140,1
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/ipcipher.cc:144,1
    - Dst: reinterpret_cast<unsigned char*>
      Src: /src/pdns/pdns/ipcipher.cc:146,1
    - Dst: EVP_DecryptUpdate
      Src: /src/pdns/pdns/ipcipher.cc:147,1
    - Dst: auto::get
      Src: /src/pdns/pdns/ipcipher.cc:147,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/ipcipher.cc:147,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/ipcipher.cc:148,1
    - Dst: EVP_DecryptFinal_ex
      Src: /src/pdns/pdns/ipcipher.cc:152,1
    - Dst: auto::get
      Src: /src/pdns/pdns/ipcipher.cc:152,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/ipcipher.cc:153,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/ipcipher.cc:157,1
    - Dst: AES_set_decrypt_key
      Src: /src/pdns/pdns/ipcipher.cc:161,1
    - Dst: c_str
      Src: /src/pdns/pdns/ipcipher.cc:161,1
    - Dst: AES_decrypt
      Src: /src/pdns/pdns/ipcipher.cc:162,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 26
    argCount: 2
    argNames:
    - ' address'
    - ' key'
    argTypes:
    - ComboAddress
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 167
      start: 112
    functionDepth: 0
    functionLinenumber: 112
    functionLinenumberEnd: 167
    functionName: decryptCA6
    functionSourceFile: /src/pdns/pdns/ipcipher.cc
    functionUses: 0
    functionsReached:
    - AES_decrypt
    - EVP_CIPHER_fetch
    - EVP_DecryptFinal_ex
    - EVP_CIPHER_get_block_size
    - static_cast<int>
    - EVP_CIPHER_CTX_set_padding
    - size
    - reinterpret_cast<unsigned char*>
    - reinterpret_cast<const unsigned char*>
    - EVP_DecryptUpdate
    - c_str
    - std::unique_ptr<EVP_CIPHER, decltype(&EVP_CIPHER_free)>
    - auto::get
    - std::runtime_error
    - EVP_DecryptInit
    - std::unique_ptr<EVP_CIPHER_CTX, decltype(&EVP_CIPHER_CTX_free)>
    - EVP_CIPHER_CTX_new
    - AES_set_decrypt_key
    - Logging::Logger::error
    linkageType: ''
    returnType: ComboAddress
    signature: ComboAddress decryptCA6(const ComboAddress& address, const std::string&
      key)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: encryptCA4
      Src: /src/pdns/pdns/ipcipher.cc:172,1
    - Dst: encryptCA6
      Src: /src/pdns/pdns/ipcipher.cc:176,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/ipcipher.cc:179,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - ' ca'
    - ' key'
    argTypes:
    - ComboAddress
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 180
      start: 169
    functionDepth: 0
    functionLinenumber: 169
    functionLinenumberEnd: 180
    functionName: encryptCA
    functionSourceFile: /src/pdns/pdns/ipcipher.cc
    functionUses: 4
    functionsReached:
    - encryptCA6
    - encryptCA4
    - std::runtime_error
    linkageType: ''
    returnType: ComboAddress
    signature: ComboAddress encryptCA(const ComboAddress& ca, const std::string& key)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: decryptCA4
      Src: /src/pdns/pdns/ipcipher.cc:185,1
    - Dst: decryptCA6
      Src: /src/pdns/pdns/ipcipher.cc:189,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/ipcipher.cc:192,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - ' ca'
    - ' key'
    argTypes:
    - ComboAddress
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 193
      start: 182
    functionDepth: 0
    functionLinenumber: 182
    functionLinenumberEnd: 193
    functionName: decryptCA
    functionSourceFile: /src/pdns/pdns/ipcipher.cc
    functionUses: 4
    functionsReached:
    - decryptCA6
    - decryptCA4
    - std::runtime_error
    linkageType: ''
    returnType: ComboAddress
    signature: ComboAddress decryptCA(const ComboAddress& ca, const std::string& key)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/fstrm_logger.cc:19,1
    - Dst: fstrm_writer_options_init
      Src: /src/pdns/pdns/fstrm_logger.cc:22,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/fstrm_logger.cc:24,1
    - Dst: fstrm_writer_options_add_content_type
      Src: /src/pdns/pdns/fstrm_logger.cc:27,1
    - Dst: c_str
      Src: /src/pdns/pdns/fstrm_logger.cc:27,1
    - Dst: size
      Src: /src/pdns/pdns/fstrm_logger.cc:27,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/fstrm_logger.cc:29,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/fstrm_logger.cc:29,1
    - Dst: makeUNsockaddr
      Src: /src/pdns/pdns/fstrm_logger.cc:34,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/fstrm_logger.cc:35,1
    - Dst: fstrm_unix_writer_options_init
      Src: /src/pdns/pdns/fstrm_logger.cc:38,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/fstrm_logger.cc:40,1
    - Dst: fstrm_unix_writer_options_set_socket_path
      Src: /src/pdns/pdns/fstrm_logger.cc:44,1
    - Dst: c_str
      Src: /src/pdns/pdns/fstrm_logger.cc:44,1
    - Dst: fstrm_unix_writer_init
      Src: /src/pdns/pdns/fstrm_logger.cc:46,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/fstrm_logger.cc:48,1
    - Dst: fstrm_tcp_writer_options_init
      Src: /src/pdns/pdns/fstrm_logger.cc:53,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/fstrm_logger.cc:55,1
    - Dst: fstrm_tcp_writer_options_set_socket_address
      Src: /src/pdns/pdns/fstrm_logger.cc:62,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/fstrm_logger.cc:62,1
    - Dst: fstrm_tcp_writer_options_set_socket_port
      Src: /src/pdns/pdns/fstrm_logger.cc:63,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/fstrm_logger.cc:63,1
    - Dst: ComboAddress::getPort
      Src: /src/pdns/pdns/fstrm_logger.cc:63,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/fstrm_logger.cc:66,1
    - Dst: fstrm_tcp_writer_init
      Src: /src/pdns/pdns/fstrm_logger.cc:69,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/fstrm_logger.cc:71,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/fstrm_logger.cc:76,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/fstrm_logger.cc:76,1
    - Dst: fstrm_iothr_options_init
      Src: /src/pdns/pdns/fstrm_logger.cc:79,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/fstrm_logger.cc:81,1
    - Dst: fstrm_iothr_options_set_queue_model
      Src: /src/pdns/pdns/fstrm_logger.cc:84,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/fstrm_logger.cc:86,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/fstrm_logger.cc:86,1
    - Dst: find
      Src: /src/pdns/pdns/fstrm_logger.cc:102,1
    - Dst: end
      Src: /src/pdns/pdns/fstrm_logger.cc:102,1
    - Dst: function
      Src: /src/pdns/pdns/fstrm_logger.cc:103,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/fstrm_logger.cc:105,1
    - Dst: string
      Src: /src/pdns/pdns/fstrm_logger.cc:105,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/fstrm_logger.cc:105,1
    - Dst: fstrm_iothr_init
      Src: /src/pdns/pdns/fstrm_logger.cc:111,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/fstrm_logger.cc:113,1
    - Dst: fstrm_iothr_get_input_queue
      Src: /src/pdns/pdns/fstrm_logger.cc:116,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/fstrm_logger.cc:118,1
    - Dst: FrameStreamLogger::cleanup
      Src: /src/pdns/pdns/fstrm_logger.cc:123,1
    CyclomaticComplexity: 36
    EdgeCount: 36
    ICount: 70
    argCount: 4
    argNames:
    - family
    - address
    - connect
    - ' options'
    argTypes:
    - int
    - std::string
    - bool
    - std::unordered_map<string, unsigned>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 18
    functionDepth: 0
    functionLinenumber: 18
    functionLinenumberEnd: 126
    functionName: FrameStreamLogger::FrameStreamLogger
    functionSourceFile: /src/pdns/pdns/fstrm_logger.cc
    functionUses: 0
    functionsReached:
    - std::to_string
    - fstrm_iothr_init
    - fstrm_iothr_options_init
    - fstrm_writer_options_init
    - fstrm_unix_writer_options_init
    - find
    - fstrm_iothr_options_set_queue_model
    - string
    - fstrm_writer_options_add_content_type
    - size
    - fstrm_unix_writer_options_set_socket_path
    - fstrm_tcp_writer_options_init
    - ComboAddress::getPort
    - c_str
    - std::runtime_error
    - fstrm_tcp_writer_options_set_socket_port
    - makeUNsockaddr
    - FrameStreamLogger::cleanup
    - std::move
    - fstrm_tcp_writer_init
    - fstrm_iothr_get_input_queue
    - end
    - fstrm_unix_writer_init
    - ComboAddress::toString
    - function
    - fstrm_tcp_writer_options_set_socket_address
    linkageType: ''
    returnType: void
    signature: void FrameStreamLogger::FrameStreamLogger(const int family, std::string
      address, bool connect, const std::unordered_map<string, unsigned>& options)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: fstrm_iothr_destroy
      Src: /src/pdns/pdns/fstrm_logger.cc:131,1
    - Dst: fstrm_iothr_options_destroy
      Src: /src/pdns/pdns/fstrm_logger.cc:135,1
    - Dst: fstrm_writer_destroy
      Src: /src/pdns/pdns/fstrm_logger.cc:139,1
    - Dst: fstrm_unix_writer_options_destroy
      Src: /src/pdns/pdns/fstrm_logger.cc:143,1
    - Dst: fstrm_tcp_writer_options_destroy
      Src: /src/pdns/pdns/fstrm_logger.cc:148,1
    - Dst: fstrm_writer_options_destroy
      Src: /src/pdns/pdns/fstrm_logger.cc:153,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 25
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 156
      start: 128
    functionDepth: 0
    functionLinenumber: 128
    functionLinenumberEnd: 156
    functionName: FrameStreamLogger::cleanup
    functionSourceFile: /src/pdns/pdns/fstrm_logger.cc
    functionUses: 1
    functionsReached:
    - fstrm_writer_options_destroy
    - fstrm_writer_destroy
    - fstrm_iothr_destroy
    - fstrm_iothr_options_destroy
    - fstrm_unix_writer_options_destroy
    - fstrm_tcp_writer_options_destroy
    linkageType: ''
    returnType: void
    signature: void FrameStreamLogger::cleanup()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: FrameStreamLogger::cleanup
      Src: /src/pdns/pdns/fstrm_logger.cc:160,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 161
      start: 158
    functionDepth: 0
    functionLinenumber: 158
    functionLinenumberEnd: 161
    functionName: FrameStreamLogger::~FrameStreamLogger()
    functionSourceFile: /src/pdns/pdns/fstrm_logger.cc
    functionUses: 0
    functionsReached:
    - FrameStreamLogger::cleanup
    linkageType: ''
    returnType: void
    signature: void FrameStreamLogger::~FrameStreamLogger()
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/pdns/pdns/fstrm_logger.cc:169,1
    - Dst: length
      Src: /src/pdns/pdns/fstrm_logger.cc:169,1
    - Dst: memcpy
      Src: /src/pdns/pdns/fstrm_logger.cc:174,1
    - Dst: c_str
      Src: /src/pdns/pdns/fstrm_logger.cc:174,1
    - Dst: length
      Src: /src/pdns/pdns/fstrm_logger.cc:174,1
    - Dst: fstrm_iothr_submit
      Src: /src/pdns/pdns/fstrm_logger.cc:176,1
    - Dst: length
      Src: /src/pdns/pdns/fstrm_logger.cc:176,1
    - Dst: free
      Src: /src/pdns/pdns/fstrm_logger.cc:185,1
    - Dst: free
      Src: /src/pdns/pdns/fstrm_logger.cc:190,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 22
    argCount: 1
    argNames:
    - ' data'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 193
      start: 163
    functionDepth: 0
    functionLinenumber: 163
    functionLinenumberEnd: 193
    functionName: FrameStreamLogger::queueData
    functionSourceFile: /src/pdns/pdns/fstrm_logger.cc
    functionUses: 0
    functionsReached:
    - length
    - memcpy
    - fstrm_iothr_submit
    - free
    - malloc
    - c_str
    linkageType: ''
    returnType: RemoteLoggerInterface::Result
    signature: RemoteLoggerInterface::Result FrameStreamLogger::queueData(const std::string&
      data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: xfr16BitInt
      Src: /src/pdns/pdns/dnswriter.hh:94,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - val
    argTypes:
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 92
    functionDepth: 0
    functionLinenumber: 92
    functionLinenumberEnd: 95
    functionName: GenericDNSPacketWriter::xfrType
    functionSourceFile: /src/pdns/pdns/dnswriter.hh
    functionUses: 0
    functionsReached:
    - xfr16BitInt
    linkageType: ''
    returnType: void
    signature: void xfrType(uint16_t val)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: xfr32BitInt
      Src: /src/pdns/pdns/dnswriter.hh:98,1
    - Dst: htonl
      Src: /src/pdns/pdns/dnswriter.hh:98,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' val'
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 96
    functionDepth: 0
    functionLinenumber: 96
    functionLinenumberEnd: 99
    functionName: GenericDNSPacketWriter::xfrIP
    functionSourceFile: /src/pdns/pdns/dnswriter.hh
    functionUses: 0
    functionsReached:
    - xfr32BitInt
    - htonl
    linkageType: ''
    returnType: void
    signature: void xfrIP(const uint32_t& val)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: xfrBlob
      Src: /src/pdns/pdns/dnswriter.hh:102,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' val'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 100
    functionDepth: 0
    functionLinenumber: 100
    functionLinenumberEnd: 103
    functionName: GenericDNSPacketWriter::xfrIP6
    functionSourceFile: /src/pdns/pdns/dnswriter.hh
    functionUses: 0
    functionsReached:
    - xfrBlob
    linkageType: ''
    returnType: void
    signature: void xfrIP6(const std::string& val)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: GenericDNSPacketWriter::xfrIP
      Src: /src/pdns/pdns/dnswriter.hh:107,1
    - Dst: string::assign
      Src: /src/pdns/pdns/dnswriter.hh:110,1
    - Dst: xfrBlob
      Src: /src/pdns/pdns/dnswriter.hh:111,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/dnswriter.hh:113,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - version
    - val
    argTypes:
    - uint8_t
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 105
    functionDepth: 1
    functionLinenumber: 105
    functionLinenumberEnd: 114
    functionName: GenericDNSPacketWriter::xfrCAWithoutPort
    functionSourceFile: /src/pdns/pdns/dnswriter.hh
    functionUses: 0
    functionsReached:
    - string::assign
    - xfrBlob
    - runtime_error
    - GenericDNSPacketWriter::xfrIP
    linkageType: ''
    returnType: void
    signature: void xfrCAWithoutPort(uint8_t version, const ComboAddress &val)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: xfr16BitInt
      Src: /src/pdns/pdns/dnswriter.hh:120,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - val
    argTypes:
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 116
    functionDepth: 0
    functionLinenumber: 116
    functionLinenumberEnd: 121
    functionName: GenericDNSPacketWriter::xfrCAPort
    functionSourceFile: /src/pdns/pdns/dnswriter.hh
    functionUses: 0
    functionsReached:
    - xfr16BitInt
    linkageType: ''
    returnType: void
    signature: void xfrCAPort(const ComboAddress &val)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: xfr32BitInt
      Src: /src/pdns/pdns/dnswriter.hh:125,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' val'
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 123
    functionDepth: 0
    functionLinenumber: 123
    functionLinenumberEnd: 126
    functionName: GenericDNSPacketWriter::xfrTime
    functionSourceFile: /src/pdns/pdns/dnswriter.hh
    functionUses: 0
    functionsReached:
    - xfr32BitInt
    linkageType: ''
    returnType: void
    signature: void xfrTime(const uint32_t& val)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - val
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 146
      start: 143
    functionDepth: 0
    functionLinenumber: 143
    functionLinenumberEnd: 146
    functionName: GenericDNSPacketWriter::setCanonic
    functionSourceFile: /src/pdns/pdns/dnswriter.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setCanonic(bool val)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - val
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 151
      start: 148
    functionDepth: 0
    functionLinenumber: 148
    functionLinenumberEnd: 151
    functionName: GenericDNSPacketWriter::setLowercase
    functionSourceFile: /src/pdns/pdns/dnswriter.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setLowercase(bool val)
  - 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: '& getContent()'
    functionSourceFile: /src/pdns/pdns/dnswriter.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Container
    signature: Container & getContent()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 156
      start: 156
    functionDepth: 0
    functionLinenumber: 156
    functionLinenumberEnd: 156
    functionName: GenericDNSPacketWriter::eof
    functionSourceFile: /src/pdns/pdns/dnswriter.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool eof() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 160
      start: 158
    functionDepth: 0
    functionLinenumber: 158
    functionLinenumberEnd: 160
    functionName: GenericDNSPacketWriter::getRemaining
    functionSourceFile: /src/pdns/pdns/dnswriter.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string getRemaining() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 168
      start: 166
    functionDepth: 0
    functionLinenumber: 166
    functionLinenumberEnd: 168
    functionName: GenericDNSPacketWriter::consumeRemaining
    functionSourceFile: /src/pdns/pdns/dnswriter.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void consumeRemaining() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: snmp_set_var_typed_value
      Src: /src/pdns/pdns/snmp-agent.cc:44,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - request
    - value
    argTypes:
    - netsnmp_request_info*
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 38
    functionDepth: 0
    functionLinenumber: 38
    functionLinenumberEnd: 49
    functionName: SNMPAgent::setCounter64Value
    functionSourceFile: /src/pdns/pdns/snmp-agent.cc
    functionUses: 0
    functionsReached:
    - snmp_set_var_typed_value
    linkageType: ''
    returnType: int
    signature: "int SNMPAgent::setCounter64Value(netsnmp_request_info* request,\n
      \                                uint64_t value)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: snmp_varlist_add_variable
      Src: /src/pdns/pdns/snmp-agent.cc:53,1
    - Dst: data
      Src: /src/pdns/pdns/snmp-agent.cc:54,1
    - Dst: size
      Src: /src/pdns/pdns/snmp-agent.cc:55,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - varList
    - value
    - len
    argTypes:
    - netsnmp_variable_list**
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 51
    functionDepth: 0
    functionLinenumber: 51
    functionLinenumberEnd: 59
    functionName: SNMPAgent::addSNMPTrapOID
    functionSourceFile: /src/pdns/pdns/snmp-agent.cc
    functionUses: 0
    functionsReached:
    - snmp_varlist_add_variable
    - size
    - data
    linkageType: ''
    returnType: void
    signature: void SNMPAgent::addSNMPTrapOID(netsnmp_variable_list** varList, const
      void* value, size_t len)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::unique_ptr<netsnmp_variable_list, void(*)(netsnmp_variable_list*)>
      Src: /src/pdns/pdns/snmp-agent.cc:65,1
    - Dst: send
      Src: /src/pdns/pdns/snmp-agent.cc:66,1
    - Dst: std::move
      Src: /src/pdns/pdns/snmp-agent.cc:66,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - ' sender'
    - varList
    argTypes:
    - pdns::channel::Sender<netsnmp_variable_list, void(*)(netsnmp_variable_list*)>
    - netsnmp_variable_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 61
    functionDepth: 0
    functionLinenumber: 61
    functionLinenumberEnd: 71
    functionName: SNMPAgent::sendTrap
    functionSourceFile: /src/pdns/pdns/snmp-agent.cc
    functionUses: 0
    functionsReached:
    - std::unique_ptr<netsnmp_variable_list, void(*)(netsnmp_variable_list*)>
    - std::move
    - send
    linkageType: ''
    returnType: bool
    signature: "bool SNMPAgent::sendTrap(pdns::channel::Sender<netsnmp_variable_list,
      void(*)(netsnmp_variable_list*)>& sender,\n                         netsnmp_variable_list*
      varList)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: receive
      Src: /src/pdns/pdns/snmp-agent.cc:77,1
    - Dst: send_v2trap
      Src: /src/pdns/pdns/snmp-agent.cc:81,1
    - Dst: auto::get
      Src: /src/pdns/pdns/snmp-agent.cc:81,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 73
    functionDepth: 0
    functionLinenumber: 73
    functionLinenumberEnd: 86
    functionName: SNMPAgent::handleTrapsEvent
    functionSourceFile: /src/pdns/pdns/snmp-agent.cc
    functionUses: 0
    functionsReached:
    - receive
    - send_v2trap
    - auto::get
    linkageType: ''
    returnType: void
    signature: void SNMPAgent::handleTrapsEvent()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: netsnmp_large_fd_set_init
      Src: /src/pdns/pdns/snmp-agent.cc:91,1
    - Dst: NETSNMP_LARGE_FD_ZERO
      Src: /src/pdns/pdns/snmp-agent.cc:92,1
    - Dst: NETSNMP_LARGE_FD_SET
      Src: /src/pdns/pdns/snmp-agent.cc:93,1
    - Dst: snmp_read2
      Src: /src/pdns/pdns/snmp-agent.cc:94,1
    - Dst: netsnmp_large_fd_set_cleanup
      Src: /src/pdns/pdns/snmp-agent.cc:95,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - fd
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 88
    functionDepth: 0
    functionLinenumber: 88
    functionLinenumberEnd: 96
    functionName: SNMPAgent::handleSNMPQueryEvent
    functionSourceFile: /src/pdns/pdns/snmp-agent.cc
    functionUses: 0
    functionsReached:
    - snmp_read2
    - NETSNMP_LARGE_FD_ZERO
    - netsnmp_large_fd_set_cleanup
    - NETSNMP_LARGE_FD_SET
    - netsnmp_large_fd_set_init
    linkageType: ''
    returnType: void
    signature: void SNMPAgent::handleSNMPQueryEvent(int fd)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: boost::any_cast<SNMPAgent*>
      Src: /src/pdns/pdns/snmp-agent.cc:100,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/snmp-agent.cc:102,1
    - Dst: SNMPAgent::handleTrapsEvent
      Src: /src/pdns/pdns/snmp-agent.cc:104,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 4
    argCount: 1
    argNames:
    - ' var'
    argTypes:
    - FDMultiplexer::funcparam_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 98
    functionDepth: 0
    functionLinenumber: 98
    functionLinenumberEnd: 105
    functionName: SNMPAgent::handleTrapsCB
    functionSourceFile: /src/pdns/pdns/snmp-agent.cc
    functionUses: 0
    functionsReached:
    - SNMPAgent::handleTrapsEvent
    - boost::any_cast<SNMPAgent*>
    - std::runtime_error
    linkageType: ''
    returnType: void
    signature: void SNMPAgent::handleTrapsCB(int /* fd */, FDMultiplexer::funcparam_t&
      var)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: boost::any_cast<SNMPAgent*>
      Src: /src/pdns/pdns/snmp-agent.cc:109,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/snmp-agent.cc:111,1
    - Dst: SNMPAgent::handleSNMPQueryEvent
      Src: /src/pdns/pdns/snmp-agent.cc:113,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 4
    argCount: 2
    argNames:
    - fd
    - ' var'
    argTypes:
    - int
    - FDMultiplexer::funcparam_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 107
    functionDepth: 0
    functionLinenumber: 107
    functionLinenumberEnd: 114
    functionName: SNMPAgent::handleSNMPQueryCB
    functionSourceFile: /src/pdns/pdns/snmp-agent.cc
    functionUses: 0
    functionsReached:
    - SNMPAgent::handleSNMPQueryEvent
    - boost::any_cast<SNMPAgent*>
    - std::runtime_error
    linkageType: ''
    returnType: void
    signature: void SNMPAgent::handleSNMPQueryCB(int fd, FDMultiplexer::funcparam_t&
      var)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: FDMultiplexer::getMultiplexerSilent
      Src: /src/pdns/pdns/snmp-agent.cc:121,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/snmp-agent.cc:123,1
    - Dst: setThreadName
      Src: /src/pdns/pdns/snmp-agent.cc:131,1
    - Dst: FDMultiplexer*::addReadFD
      Src: /src/pdns/pdns/snmp-agent.cc:141,1
    - Dst: getDescriptor
      Src: /src/pdns/pdns/snmp-agent.cc:141,1
    - Dst: netsnmp_large_fd_set_init
      Src: /src/pdns/pdns/snmp-agent.cc:144,1
    - Dst: NETSNMP_LARGE_FD_ZERO
      Src: /src/pdns/pdns/snmp-agent.cc:145,1
    - Dst: snmp_select_info2
      Src: /src/pdns/pdns/snmp-agent.cc:149,1
    - Dst: NETSNMP_LARGE_FD_ISSET
      Src: /src/pdns/pdns/snmp-agent.cc:152,1
    - Dst: FDMultiplexer*::addReadFD
      Src: /src/pdns/pdns/snmp-agent.cc:153,1
    - Dst: FDMultiplexer*::run
      Src: /src/pdns/pdns/snmp-agent.cc:158,1
    - Dst: snmp_timeout
      Src: /src/pdns/pdns/snmp-agent.cc:162,1
    - Dst: run_alarms
      Src: /src/pdns/pdns/snmp-agent.cc:163,1
    - Dst: NETSNMP_LARGE_FD_ISSET
      Src: /src/pdns/pdns/snmp-agent.cc:167,1
    - Dst: FDMultiplexer*::removeReadFD
      Src: /src/pdns/pdns/snmp-agent.cc:169,1
    - Dst: netsnmp_large_fd_set_cleanup
      Src: /src/pdns/pdns/snmp-agent.cc:177,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 31
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 180
      start: 118
    functionDepth: 0
    functionLinenumber: 118
    functionLinenumberEnd: 180
    functionName: SNMPAgent::worker
    functionSourceFile: /src/pdns/pdns/snmp-agent.cc
    functionUses: 0
    functionsReached:
    - NETSNMP_LARGE_FD_ISSET
    - std::runtime_error
    - NETSNMP_LARGE_FD_ZERO
    - FDMultiplexer*::removeReadFD
    - netsnmp_large_fd_set_cleanup
    - run_alarms
    - FDMultiplexer*::addReadFD
    - snmp_timeout
    - getDescriptor
    - FDMultiplexer::getMultiplexerSilent
    - setThreadName
    - snmp_select_info2
    - netsnmp_large_fd_set_init
    - FDMultiplexer*::run
    linkageType: ''
    returnType: void
    signature: void SNMPAgent::worker()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: netsnmp_enable_subagent
      Src: /src/pdns/pdns/snmp-agent.cc:185,1
    - Dst: snmp_disable_log
      Src: /src/pdns/pdns/snmp-agent.cc:186,1
    - Dst: empty
      Src: /src/pdns/pdns/snmp-agent.cc:187,1
    - Dst: netsnmp_ds_set_string
      Src: /src/pdns/pdns/snmp-agent.cc:188,1
    - Dst: c_str
      Src: /src/pdns/pdns/snmp-agent.cc:190,1
    - Dst: setenv
      Src: /src/pdns/pdns/snmp-agent.cc:194,1
    - Dst: init_agent
      Src: /src/pdns/pdns/snmp-agent.cc:196,1
    - Dst: c_str
      Src: /src/pdns/pdns/snmp-agent.cc:196,1
    - Dst: netsnmp_ds_set_boolean
      Src: /src/pdns/pdns/snmp-agent.cc:202,1
    - Dst: init_snmp
      Src: /src/pdns/pdns/snmp-agent.cc:206,1
    - Dst: c_str
      Src: /src/pdns/pdns/snmp-agent.cc:206,1
    - Dst: pdns::channel::createObjectQueue<netsnmp_variable_list, void(*)(netsnmp_variable_list*)>
      Src: /src/pdns/pdns/snmp-agent.cc:208,1
    - Dst: std::move
      Src: /src/pdns/pdns/snmp-agent.cc:209,1
    - Dst: std::move
      Src: /src/pdns/pdns/snmp-agent.cc:210,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 2
    argNames:
    - ' name'
    - ' daemonSocket'
    argTypes:
    - std::string
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 212
      start: 182
    functionDepth: 0
    functionLinenumber: 182
    functionLinenumberEnd: 212
    functionName: SNMPAgent::SNMPAgent
    functionSourceFile: /src/pdns/pdns/snmp-agent.cc
    functionUses: 0
    functionsReached:
    - std::move
    - init_agent
    - netsnmp_ds_set_boolean
    - c_str
    - netsnmp_ds_set_string
    - netsnmp_enable_subagent
    - init_snmp
    - pdns::channel::createObjectQueue<netsnmp_variable_list, void(*)(netsnmp_variable_list*)>
    - setenv
    - empty
    - snmp_disable_log
    linkageType: ''
    returnType: void
    signature: void SNMPAgent::SNMPAgent([[maybe_unused]] const std::string& name,
      [[maybe_unused]] const std::string& daemonSocket)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 48
    functionDepth: 0
    functionLinenumber: 48
    functionLinenumberEnd: 48
    functionName: Socket::Socket
    functionSourceFile: /src/pdns/pdns/sstuff.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Socket(const Socket&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 49
    functionDepth: 0
    functionLinenumber: 49
    functionLinenumberEnd: 49
    functionName: '& operator=(const Socket&)'
    functionSourceFile: /src/pdns/pdns/sstuff.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Socket
    signature: Socket & operator=(const Socket&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - socketDesc
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 51
    functionDepth: 0
    functionLinenumber: 51
    functionLinenumberEnd: 54
    functionName: Socket::Socket
    functionSourceFile: /src/pdns/pdns/sstuff.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Socket(int socketDesc)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: socket
      Src: /src/pdns/pdns/sstuff.hh:58,1
    - Dst: NetworkError
      Src: /src/pdns/pdns/sstuff.hh:61,1
    - Dst: stringerror
      Src: /src/pdns/pdns/sstuff.hh:61,1
    - Dst: setCloseOnExec
      Src: /src/pdns/pdns/sstuff.hh:63,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - addressFamily
    - socketType
    argTypes:
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 57
    functionDepth: 0
    functionLinenumber: 57
    functionLinenumberEnd: 64
    functionName: Socket::Socket
    functionSourceFile: /src/pdns/pdns/sstuff.hh
    functionUses: 0
    functionsReached:
    - socket
    - stringerror
    - setCloseOnExec
    - NetworkError
    linkageType: ''
    returnType: void
    signature: void Socket(int addressFamily, int socketType, ProtocolType protocolType
      = 0)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/sstuff.hh:67,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - Socket
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 66
    functionDepth: 0
    functionLinenumber: 66
    functionLinenumberEnd: 70
    functionName: Socket::Socket
    functionSourceFile: /src/pdns/pdns/sstuff.hh
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void Socket(Socket&& rhs) noexcept
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: close
      Src: /src/pdns/pdns/sstuff.hh:75,1
    - Dst: std::move
      Src: /src/pdns/pdns/sstuff.hh:79,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - Socket
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 72
    functionDepth: 0
    functionLinenumber: 72
    functionLinenumberEnd: 81
    functionName: '& operator=(Socket&& rhs) noexcept'
    functionSourceFile: /src/pdns/pdns/sstuff.hh
    functionUses: 0
    functionsReached:
    - std::move
    - close
    linkageType: ''
    returnType: Socket
    signature: Socket & operator=(Socket&& rhs) noexcept
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: closesocket
      Src: /src/pdns/pdns/sstuff.hh:87,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 83
    functionDepth: 0
    functionLinenumber: 83
    functionLinenumberEnd: 92
    functionName: ~Socket()
    functionSourceFile: /src/pdns/pdns/sstuff.hh
    functionUses: 0
    functionsReached:
    - closesocket
    linkageType: ''
    returnType: void
    signature: void ~Socket()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/pdns/pdns/sstuff.hh:99,1
    - Dst: Socket::accept
      Src: /src/pdns/pdns/sstuff.hh:100,1
    - Dst: reinterpret_cast<sockaddr*>
      Src: /src/pdns/pdns/sstuff.hh:100,1
    - Dst: NetworkError
      Src: /src/pdns/pdns/sstuff.hh:106,1
    - Dst: stringerror
      Src: /src/pdns/pdns/sstuff.hh:106,1
    - Dst: std::make_unique<Socket>
      Src: /src/pdns/pdns/sstuff.hh:109,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 95
    functionDepth: 0
    functionLinenumber: 95
    functionLinenumberEnd: 110
    functionName: Socket::accept
    functionSourceFile: /src/pdns/pdns/sstuff.hh
    functionUses: 1
    functionsReached:
    - Socket::accept
    - stringerror
    - memset
    - NetworkError
    - std::make_unique<Socket>
    - reinterpret_cast<sockaddr*>
    linkageType: ''
    returnType: std::unique_ptr<Socket>
    signature: std::unique_ptr<Socket> accept() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getpeername
      Src: /src/pdns/pdns/sstuff.hh:116,1
    - Dst: reinterpret_cast<struct sockaddr*>
      Src: /src/pdns/pdns/sstuff.hh:116,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' remote'
    argTypes:
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 113
    functionDepth: 0
    functionLinenumber: 113
    functionLinenumberEnd: 117
    functionName: Socket::getRemote
    functionSourceFile: /src/pdns/pdns/sstuff.hh
    functionUses: 0
    functionsReached:
    - getpeername
    - reinterpret_cast<struct sockaddr*>
    linkageType: ''
    returnType: bool
    signature: bool getRemote(ComboAddress& remote) const
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Socket::getRemote
      Src: /src/pdns/pdns/sstuff.hh:123,1
    - Dst: match
      Src: /src/pdns/pdns/sstuff.hh:124,1
    - Dst: ComboAddress::isMappedIPv4
      Src: /src/pdns/pdns/sstuff.hh:128,1
    - Dst: match
      Src: /src/pdns/pdns/sstuff.hh:129,1
    - Dst: ComboAddress::mapToIPv4
      Src: /src/pdns/pdns/sstuff.hh:129,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - ' netmaskGroup'
    argTypes:
    - NetmaskGroup
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 134
      start: 120
    functionDepth: 0
    functionLinenumber: 120
    functionLinenumberEnd: 134
    functionName: Socket::acl
    functionSourceFile: /src/pdns/pdns/sstuff.hh
    functionUses: 0
    functionsReached:
    - ComboAddress::isMappedIPv4
    - match
    - ComboAddress::mapToIPv4
    - Socket::getRemote
    linkageType: ''
    returnType: bool
    signature: bool acl(const NetmaskGroup& netmaskGroup) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Socket::setNonBlocking
      Src: /src/pdns/pdns/sstuff.hh:139,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 137
    functionDepth: 0
    functionLinenumber: 137
    functionLinenumberEnd: 140
    functionName: Socket::setNonBlocking
    functionSourceFile: /src/pdns/pdns/sstuff.hh
    functionUses: 2
    functionsReached:
    - Socket::setNonBlocking
    linkageType: ''
    returnType: void
    signature: void setNonBlocking() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Socket::setBlocking
      Src: /src/pdns/pdns/sstuff.hh:145,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 146
      start: 143
    functionDepth: 0
    functionLinenumber: 143
    functionLinenumberEnd: 146
    functionName: Socket::setBlocking
    functionSourceFile: /src/pdns/pdns/sstuff.hh
    functionUses: 1
    functionsReached:
    - Socket::setBlocking
    linkageType: ''
    returnType: void
    signature: void setBlocking() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Socket::setReuseAddr
      Src: /src/pdns/pdns/sstuff.hh:151,1
    - Dst: NetworkError
      Src: /src/pdns/pdns/sstuff.hh:154,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 156
      start: 148
    functionDepth: 0
    functionLinenumber: 148
    functionLinenumberEnd: 156
    functionName: Socket::setReuseAddr
    functionSourceFile: /src/pdns/pdns/sstuff.hh
    functionUses: 1
    functionsReached:
    - Socket::setReuseAddr
    - NetworkError
    linkageType: ''
    returnType: void
    signature: void setReuseAddr() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: setsockopt
      Src: /src/pdns/pdns/sstuff.hh:162,1
    - Dst: NetworkError
      Src: /src/pdns/pdns/sstuff.hh:163,1
    - Dst: stringerror
      Src: /src/pdns/pdns/sstuff.hh:163,1
    - Dst: NetworkError
      Src: /src/pdns/pdns/sstuff.hh:166,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 168
      start: 158
    functionDepth: 0
    functionLinenumber: 158
    functionLinenumberEnd: 168
    functionName: Socket::setFastOpenConnect
    functionSourceFile: /src/pdns/pdns/sstuff.hh
    functionUses: 0
    functionsReached:
    - stringerror
    - NetworkError
    - setsockopt
    linkageType: ''
    returnType: void
    signature: void setFastOpenConnect()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: setsockopt
      Src: /src/pdns/pdns/sstuff.hh:176,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/sstuff.hh:176,1
    - Dst: NetworkError
      Src: /src/pdns/pdns/sstuff.hh:177,1
    - Dst: stringerror
      Src: /src/pdns/pdns/sstuff.hh:177,1
    - Dst: Socket::bind
      Src: /src/pdns/pdns/sstuff.hh:180,1
    - Dst: reinterpret_cast<const struct sockaddr*>
      Src: /src/pdns/pdns/sstuff.hh:180,1
    - Dst: getSocklen
      Src: /src/pdns/pdns/sstuff.hh:180,1
    - Dst: NetworkError
      Src: /src/pdns/pdns/sstuff.hh:181,1
    - Dst: stringerror
      Src: /src/pdns/pdns/sstuff.hh:181,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 7
    argCount: 1
    argNames:
    - ' local'
    argTypes:
    - T
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 183
      start: 172
    functionDepth: 0
    functionLinenumber: 172
    functionLinenumberEnd: 183
    functionName: Socket::bind
    functionSourceFile: /src/pdns/pdns/sstuff.hh
    functionUses: 8
    functionsReached:
    - reinterpret_cast<char*>
    - stringerror
    - setsockopt
    - reinterpret_cast<const struct sockaddr*>
    - NetworkError
    - Socket::bind
    - getSocklen
    linkageType: ''
    returnType: void
    signature: void bind(const T& local, bool reuseaddr = true) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SConnectWithTimeout
      Src: /src/pdns/pdns/sstuff.hh:188,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' address'
    argTypes:
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 189
      start: 186
    functionDepth: 0
    functionLinenumber: 186
    functionLinenumberEnd: 189
    functionName: Socket::connect
    functionSourceFile: /src/pdns/pdns/sstuff.hh
    functionUses: 3
    functionsReached:
    - SConnectWithTimeout
    linkageType: ''
    returnType: void
    signature: void connect(const ComboAddress& address, int timeout = 0) const
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/sstuff.hh:198,1
    - Dst: resize
      Src: /src/pdns/pdns/sstuff.hh:199,1
    - Dst: recvfrom
      Src: /src/pdns/pdns/sstuff.hh:202,1
    - Dst: data
      Src: /src/pdns/pdns/sstuff.hh:202,1
    - Dst: size
      Src: /src/pdns/pdns/sstuff.hh:202,1
    - Dst: reinterpret_cast<sockaddr*>
      Src: /src/pdns/pdns/sstuff.hh:202,1
    - Dst: NetworkError
      Src: /src/pdns/pdns/sstuff.hh:204,1
    - Dst: stringerror
      Src: /src/pdns/pdns/sstuff.hh:204,1
    - Dst: resize
      Src: /src/pdns/pdns/sstuff.hh:206,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/sstuff.hh:206,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - ' dgram'
    - ' remote'
    argTypes:
    - string
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 207
      start: 195
    functionDepth: 1
    functionLinenumber: 195
    functionLinenumberEnd: 207
    functionName: Socket::recvFrom
    functionSourceFile: /src/pdns/pdns/sstuff.hh
    functionUses: 2
    functionsReached:
    - static_cast<size_t>
    - resize
    - stringerror
    - recvfrom
    - size
    - NetworkError
    - data
    - reinterpret_cast<sockaddr*>
    linkageType: ''
    returnType: void
    signature: void recvFrom(string& dgram, ComboAddress& remote) const
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/sstuff.hh:212,1
    - Dst: resize
      Src: /src/pdns/pdns/sstuff.hh:213,1
    - Dst: recvfrom
      Src: /src/pdns/pdns/sstuff.hh:216,1
    - Dst: data
      Src: /src/pdns/pdns/sstuff.hh:216,1
    - Dst: size
      Src: /src/pdns/pdns/sstuff.hh:216,1
    - Dst: reinterpret_cast<sockaddr*>
      Src: /src/pdns/pdns/sstuff.hh:216,1
    - Dst: NetworkError
      Src: /src/pdns/pdns/sstuff.hh:219,1
    - Dst: stringerror
      Src: /src/pdns/pdns/sstuff.hh:219,1
    - Dst: resize
      Src: /src/pdns/pdns/sstuff.hh:223,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/sstuff.hh:223,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 2
    argNames:
    - ' dgram'
    - ' remote'
    argTypes:
    - PacketBuffer
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 225
      start: 209
    functionDepth: 1
    functionLinenumber: 209
    functionLinenumberEnd: 225
    functionName: Socket::recvFromAsync
    functionSourceFile: /src/pdns/pdns/sstuff.hh
    functionUses: 0
    functionsReached:
    - static_cast<size_t>
    - resize
    - stringerror
    - recvfrom
    - size
    - NetworkError
    - data
    - reinterpret_cast<sockaddr*>
    linkageType: ''
    returnType: bool
    signature: bool recvFromAsync(PacketBuffer& dgram, ComboAddress& remote) const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sendto
      Src: /src/pdns/pdns/sstuff.hh:231,1
    - Dst: reinterpret_cast<const sockaddr*>
      Src: /src/pdns/pdns/sstuff.hh:231,1
    - Dst: getSocklen
      Src: /src/pdns/pdns/sstuff.hh:231,1
    - Dst: NetworkError
      Src: /src/pdns/pdns/sstuff.hh:232,1
    - Dst: stringerror
      Src: /src/pdns/pdns/sstuff.hh:232,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 3
    argNames:
    - msg
    - len
    - ' remote'
    argTypes:
    - char*
    - size_t
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 234
      start: 228
    functionDepth: 0
    functionLinenumber: 228
    functionLinenumberEnd: 234
    functionName: Socket::sendTo
    functionSourceFile: /src/pdns/pdns/sstuff.hh
    functionUses: 2
    functionsReached:
    - stringerror
    - reinterpret_cast<const sockaddr*>
    - NetworkError
    - sendto
    - getSocklen
    linkageType: ''
    returnType: void
    signature: void sendTo(const char* msg, size_t len, const ComboAddress& remote)
      const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Socket::send
      Src: /src/pdns/pdns/sstuff.hh:239,1
    - Dst: data
      Src: /src/pdns/pdns/sstuff.hh:239,1
    - Dst: size
      Src: /src/pdns/pdns/sstuff.hh:239,1
    - Dst: NetworkError
      Src: /src/pdns/pdns/sstuff.hh:240,1
    - Dst: stringerror
      Src: /src/pdns/pdns/sstuff.hh:240,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - ' msg'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 242
      start: 237
    functionDepth: 0
    functionLinenumber: 237
    functionLinenumberEnd: 242
    functionName: Socket::send
    functionSourceFile: /src/pdns/pdns/sstuff.hh
    functionUses: 2
    functionsReached:
    - Socket::send
    - stringerror
    - size
    - NetworkError
    - data
    linkageType: ''
    returnType: void
    signature: void send(const std::string& msg) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Socket::sendTo
      Src: /src/pdns/pdns/sstuff.hh:249,1
    - Dst: data
      Src: /src/pdns/pdns/sstuff.hh:249,1
    - Dst: length
      Src: /src/pdns/pdns/sstuff.hh:249,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' dgram'
    - ' remote'
    argTypes:
    - string
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 250
      start: 247
    functionDepth: 0
    functionLinenumber: 247
    functionLinenumberEnd: 250
    functionName: Socket::sendTo
    functionSourceFile: /src/pdns/pdns/sstuff.hh
    functionUses: 3
    functionsReached:
    - Socket::sendTo
    - length
    - data
    linkageType: ''
    returnType: void
    signature: void sendTo(const string& dgram, const ComboAddress& remote) const
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/sstuff.hh:255,1
    - Dst: length
      Src: /src/pdns/pdns/sstuff.hh:259,1
    - Dst: data
      Src: /src/pdns/pdns/sstuff.hh:260,1
    - Dst: Socket::send
      Src: /src/pdns/pdns/sstuff.hh:263,1
    - Dst: NetworkError
      Src: /src/pdns/pdns/sstuff.hh:265,1
    - Dst: stringerror
      Src: /src/pdns/pdns/sstuff.hh:265,1
    - Dst: NetworkError
      Src: /src/pdns/pdns/sstuff.hh:268,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/sstuff.hh:270,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/sstuff.hh:271,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 1
    argNames:
    - ' data'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 273
      start: 253
    functionDepth: 0
    functionLinenumber: 253
    functionLinenumberEnd: 273
    functionName: Socket::writen
    functionSourceFile: /src/pdns/pdns/sstuff.hh
    functionUses: 3
    functionsReached:
    - length
    - Socket::send
    - static_cast<size_t>
    - stringerror
    - NetworkError
    - data
    - empty
    linkageType: ''
    returnType: void
    signature: void writen(const string& data) const
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Socket::send
      Src: /src/pdns/pdns/sstuff.hh:282,1
    - Dst: NetworkError
      Src: /src/pdns/pdns/sstuff.hh:284,1
    - Dst: NetworkError
      Src: /src/pdns/pdns/sstuff.hh:294,1
    - Dst: stringerror
      Src: /src/pdns/pdns/sstuff.hh:294,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 2
    argNames:
    - ptr
    - toWrite
    argTypes:
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 295
      start: 280
    functionDepth: 0
    functionLinenumber: 280
    functionLinenumberEnd: 295
    functionName: Socket::tryWrite
    functionSourceFile: /src/pdns/pdns/sstuff.hh
    functionUses: 0
    functionsReached:
    - stringerror
    - Socket::send
    - NetworkError
    linkageType: ''
    returnType: size_t
    signature: size_t tryWrite(const char* ptr, size_t toWrite) const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Socket::send
      Src: /src/pdns/pdns/sstuff.hh:301,1
    - Dst: NetworkError
      Src: /src/pdns/pdns/sstuff.hh:303,1
    - Dst: stringerror
      Src: /src/pdns/pdns/sstuff.hh:303,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - ptr
    - toWrite
    argTypes:
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 306
      start: 299
    functionDepth: 0
    functionLinenumber: 299
    functionLinenumberEnd: 306
    functionName: Socket::write
    functionSourceFile: /src/pdns/pdns/sstuff.hh
    functionUses: 2
    functionsReached:
    - stringerror
    - Socket::send
    - NetworkError
    linkageType: ''
    returnType: size_t
    signature: size_t write(const char* ptr, size_t toWrite) const
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<const char*>
      Src: /src/pdns/pdns/sstuff.hh:311,1
    - Dst: TCPIOHandler::write
      Src: /src/pdns/pdns/sstuff.hh:314,1
    - Dst: waitForRWData
      Src: /src/pdns/pdns/sstuff.hh:317,1
    - Dst: NetworkError
      Src: /src/pdns/pdns/sstuff.hh:319,1
    - Dst: NetworkError
      Src: /src/pdns/pdns/sstuff.hh:322,1
    - Dst: NetworkError
      Src: /src/pdns/pdns/sstuff.hh:326,1
    - Dst: stringerror
      Src: /src/pdns/pdns/sstuff.hh:326,1
    - Dst: NetworkError
      Src: /src/pdns/pdns/sstuff.hh:329,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/sstuff.hh:332,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/sstuff.hh:333,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 21
    argCount: 3
    argNames:
    - buffer
    - n
    - timeout
    argTypes:
    - void*
    - size_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 335
      start: 308
    functionDepth: 0
    functionLinenumber: 308
    functionLinenumberEnd: 335
    functionName: Socket::writenWithTimeout
    functionSourceFile: /src/pdns/pdns/sstuff.hh
    functionUses: 0
    functionsReached:
    - TCPIOHandler::write
    - static_cast<size_t>
    - stringerror
    - static_cast<const char*>
    - NetworkError
    - waitForRWData
    linkageType: ''
    returnType: void
    signature: void writenWithTimeout(const void* buffer, size_t n, int timeout) const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: resize
      Src: /src/pdns/pdns/sstuff.hh:340,1
    - Dst: XskSocket::recv
      Src: /src/pdns/pdns/sstuff.hh:341,1
    - Dst: data
      Src: /src/pdns/pdns/sstuff.hh:341,1
    - Dst: NetworkError
      Src: /src/pdns/pdns/sstuff.hh:343,1
    - Dst: stringerror
      Src: /src/pdns/pdns/sstuff.hh:343,1
    - Dst: assign
      Src: /src/pdns/pdns/sstuff.hh:345,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/sstuff.hh:345,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - ' data'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 346
      start: 338
    functionDepth: 1
    functionLinenumber: 338
    functionLinenumberEnd: 346
    functionName: Socket::read
    functionSourceFile: /src/pdns/pdns/sstuff.hh
    functionUses: 3
    functionsReached:
    - assign
    - static_cast<size_t>
    - XskSocket::recv
    - resize
    - stringerror
    - NetworkError
    - data
    linkageType: ''
    returnType: void
    signature: void read(string& data)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XskSocket::recv
      Src: /src/pdns/pdns/sstuff.hh:351,1
    - Dst: NetworkError
      Src: /src/pdns/pdns/sstuff.hh:353,1
    - Dst: stringerror
      Src: /src/pdns/pdns/sstuff.hh:353,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/sstuff.hh:355,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - buffer
    - bytes
    argTypes:
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 356
      start: 349
    functionDepth: 1
    functionLinenumber: 349
    functionLinenumberEnd: 356
    functionName: Socket::read
    functionSourceFile: /src/pdns/pdns/sstuff.hh
    functionUses: 3
    functionsReached:
    - stringerror
    - static_cast<size_t>
    - XskSocket::recv
    - NetworkError
    linkageType: ''
    returnType: size_t
    signature: size_t read(char* buffer, size_t bytes) const
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: waitForRWData
      Src: /src/pdns/pdns/sstuff.hh:365,1
    - Dst: NetworkError
      Src: /src/pdns/pdns/sstuff.hh:368,1
    - Dst: NetworkError
      Src: /src/pdns/pdns/sstuff.hh:371,1
    - Dst: stringerror
      Src: /src/pdns/pdns/sstuff.hh:371,1
    - Dst: Socket::read
      Src: /src/pdns/pdns/sstuff.hh:374,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 3
    argNames:
    - buffer
    - n
    - timeout
    argTypes:
    - char*
    - size_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 375
      start: 363
    functionDepth: 0
    functionLinenumber: 363
    functionLinenumberEnd: 375
    functionName: Socket::readWithTimeout
    functionSourceFile: /src/pdns/pdns/sstuff.hh
    functionUses: 0
    functionsReached:
    - stringerror
    - waitForRWData
    - Socket::read
    - NetworkError
    linkageType: ''
    returnType: size_t
    signature: size_t readWithTimeout(char* buffer, size_t n, int timeout) const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Socket::listen
      Src: /src/pdns/pdns/sstuff.hh:380,1
    - Dst: NetworkError
      Src: /src/pdns/pdns/sstuff.hh:381,1
    - Dst: stringerror
      Src: /src/pdns/pdns/sstuff.hh:381,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 383
      start: 378
    functionDepth: 0
    functionLinenumber: 378
    functionLinenumberEnd: 383
    functionName: Socket::listen
    functionSourceFile: /src/pdns/pdns/sstuff.hh
    functionUses: 2
    functionsReached:
    - stringerror
    - NetworkError
    - Socket::listen
    linkageType: ''
    returnType: void
    signature: void listen(int length = 10) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 389
      start: 386
    functionDepth: 0
    functionLinenumber: 386
    functionLinenumberEnd: 389
    functionName: Socket::getHandle
    functionSourceFile: /src/pdns/pdns/sstuff.hh
    functionUses: 7
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int getHandle() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 396
      start: 391
    functionDepth: 0
    functionLinenumber: 391
    functionLinenumberEnd: 396
    functionName: Socket::releaseHandle
    functionSourceFile: /src/pdns/pdns/sstuff.hh
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int releaseHandle()
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<NSRecordContent>
      Src: /src/pdns/pdns/test-common.hh:10,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-common.hh:10,1
    - Dst: std::make_shared<ARecordContent>
      Src: /src/pdns/pdns/test-common.hh:13,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-common.hh:13,1
    - Dst: std::make_shared<AAAARecordContent>
      Src: /src/pdns/pdns/test-common.hh:16,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-common.hh:16,1
    - Dst: std::make_shared<CNAMERecordContent>
      Src: /src/pdns/pdns/test-common.hh:19,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-common.hh:19,1
    - Dst: std::make_shared<OPTRecordContent>
      Src: /src/pdns/pdns/test-common.hh:22,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/test-common.hh:25,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 2
    argNames:
    - type
    - ' content'
    argTypes:
    - uint16_t
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 29
      start: 5
    functionDepth: 0
    functionLinenumber: 5
    functionLinenumberEnd: 29
    functionName: getRecordContent
    functionSourceFile: /src/pdns/pdns/test-common.hh
    functionUses: 0
    functionsReached:
    - std::make_shared<CNAMERecordContent>
    - DNSName
    - std::make_shared<NSRecordContent>
    - std::make_shared<OPTRecordContent>
    - DNSRecordContent::make
    - std::make_shared<ARecordContent>
    - std::make_shared<AAAARecordContent>
    - ComboAddress
    linkageType: ''
    returnType: std::shared_ptr<DNSRecordContent>
    signature: std::shared_ptr<DNSRecordContent> getRecordContent(uint16_t type, const
      std::string& content)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSRecord::DNSRecord
      Src: /src/pdns/pdns/test-common.hh:33,1
    - Dst: DNSRecord::setContent
      Src: /src/pdns/pdns/test-common.hh:39,1
    - Dst: getRecordContent
      Src: /src/pdns/pdns/test-common.hh:39,1
    - Dst: push_back
      Src: /src/pdns/pdns/test-common.hh:41,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 4
    argNames:
    - ' records'
    - ' name'
    - type
    - ' content'
    argTypes:
    - std::vector<DNSRecord>
    - DNSName
    - uint16_t
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 31
    functionDepth: 0
    functionLinenumber: 31
    functionLinenumberEnd: 42
    functionName: addRecordToList
    functionSourceFile: /src/pdns/pdns/test-common.hh
    functionUses: 0
    functionsReached:
    - push_back
    - getRecordContent
    - DNSRecord::DNSRecord
    - DNSRecord::setContent
    linkageType: ''
    returnType: void
    signature: void addRecordToList(std::vector<DNSRecord>& records, const DNSName&
      name, uint16_t type, const std::string& content, DNSResourceRecord::Place place=DNSResourceRecord::ANSWER,
      uint32_t ttl=3600)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/lua-base4.hh:18,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - includePath
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 18
      start: 17
    functionDepth: 0
    functionLinenumber: 17
    functionLinenumberEnd: 18
    functionName: BaseLua4::BaseLua4
    functionSourceFile: /src/pdns/pdns/lua-base4.hh
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void BaseLua4(std::string includePath)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 71
    functionDepth: 0
    functionLinenumber: 71
    functionLinenumberEnd: 71
    functionName: AuthPacketCache::size
    functionSourceFile: /src/pdns/pdns/auth-packetcache.hh
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t size() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: write_lock
      Src: /src/pdns/pdns/auth-packetcache.hh:77,1
    - Dst: second::get
      Src: /src/pdns/pdns/auth-packetcache.hh:79,1
    - Dst: reserve
      Src: /src/pdns/pdns/auth-packetcache.hh:82,1
    - Dst: auto*::size
      Src: /src/pdns/pdns/auth-packetcache.hh:82,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - maxEntries
    argTypes:
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 73
    functionDepth: 0
    functionLinenumber: 73
    functionLinenumberEnd: 86
    functionName: AuthPacketCache::setMaxEntries
    functionSourceFile: /src/pdns/pdns/auth-packetcache.hh
    functionUses: 4
    functionsReached:
    - reserve
    - second::get
    - auto*::size
    - write_lock
    linkageType: ''
    returnType: void
    signature: void setMaxEntries(uint64_t maxEntries)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ttl
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 87
    functionDepth: 0
    functionLinenumber: 87
    functionLinenumberEnd: 90
    functionName: AuthPacketCache::setTTL
    functionSourceFile: /src/pdns/pdns/auth-packetcache.hh
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setTTL(uint32_t ttl)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 91
    functionDepth: 0
    functionLinenumber: 91
    functionLinenumberEnd: 94
    functionName: AuthPacketCache::enabled
    functionSourceFile: /src/pdns/pdns/auth-packetcache.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool enabled() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - log
    argTypes:
    - Logr::log_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 96
    functionDepth: 0
    functionLinenumber: 96
    functionLinenumberEnd: 96
    functionName: AuthPacketCache::setSLog
    functionSourceFile: /src/pdns/pdns/auth-packetcache.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setSLog(Logr::log_t log)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 129
      start: 129
    functionDepth: 0
    functionLinenumber: 129
    functionLinenumberEnd: 129
    functionName: AuthPacketCache::MapCombo
    functionSourceFile: /src/pdns/pdns/auth-packetcache.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void MapCombo()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 130
      start: 130
    functionDepth: 0
    functionLinenumber: 130
    functionLinenumberEnd: 130
    functionName: ~MapCombo()
    functionSourceFile: /src/pdns/pdns/auth-packetcache.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~MapCombo()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 131
      start: 131
    functionDepth: 0
    functionLinenumber: 131
    functionLinenumberEnd: 131
    functionName: AuthPacketCache::MapCombo
    functionSourceFile: /src/pdns/pdns/auth-packetcache.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void MapCombo(const MapCombo&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 132
      start: 132
    functionDepth: 0
    functionLinenumber: 132
    functionLinenumberEnd: 132
    functionName: '& operator=(const MapCombo&)'
    functionSourceFile: /src/pdns/pdns/auth-packetcache.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: MapCombo
    signature: MapCombo & operator=(const MapCombo&)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash
      Src: /src/pdns/pdns/auth-packetcache.hh:143,1
    - Dst: size
      Src: /src/pdns/pdns/auth-packetcache.hh:143,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' map'
    - ' name'
    argTypes:
    - std::unique_ptr<vector<MapCombo>>
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 144
      start: 141
    functionDepth: 1
    functionLinenumber: 141
    functionLinenumberEnd: 144
    functionName: '& getMap(const std::unique_ptr<vector<MapCombo>>& map, const DNSName&
      name)'
    functionSourceFile: /src/pdns/pdns/auth-packetcache.hh
    functionUses: 0
    functionsReached:
    - hash
    - size
    linkageType: ''
    returnType: MapCombo
    signature: MapCombo & getMap(const std::unique_ptr<vector<MapCombo>>& map, const
      DNSName& name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/zoneparser-tng.cc:42,1
    - Dst: std::move
      Src: /src/pdns/pdns/zoneparser-tng.cc:42,1
    - Dst: ZoneParserTNG::stackFile
      Src: /src/pdns/pdns/zoneparser-tng.cc:46,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - ' fname'
    - zname
    - reldir
    - upgradeContent
    argTypes:
    - string
    - ZoneName
    - string
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 41
    functionDepth: 0
    functionLinenumber: 41
    functionLinenumberEnd: 47
    functionName: ZoneParserTNG::ZoneParserTNG
    functionSourceFile: /src/pdns/pdns/zoneparser-tng.cc
    functionUses: 0
    functionsReached:
    - std::move
    - ZoneParserTNG::stackFile
    linkageType: ''
    returnType: void
    signature: void ZoneParserTNG::ZoneParserTNG(const string& fname, ZoneName zname,
      string reldir, bool upgradeContent)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/zoneparser-tng.cc:50,1
    - Dst: begin
      Src: /src/pdns/pdns/zoneparser-tng.cc:54,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' zonedata'
    - zname
    - upgradeContent
    argTypes:
    - vector<string>
    - ZoneName
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 49
    functionDepth: 0
    functionLinenumber: 49
    functionLinenumberEnd: 55
    functionName: ZoneParserTNG::ZoneParserTNG
    functionSourceFile: /src/pdns/pdns/zoneparser-tng.cc
    functionUses: 0
    functionsReached:
    - std::move
    - begin
    linkageType: ''
    returnType: void
    signature: void ZoneParserTNG::ZoneParserTNG(const vector<string>& zonedata, ZoneName
      zname, bool upgradeContent)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/zoneparser-tng.cc:59,1
    - Dst: std::generic_category
      Src: /src/pdns/pdns/zoneparser-tng.cc:60,1
    - Dst: std::system_error
      Src: /src/pdns/pdns/zoneparser-tng.cc:61,1
    - Dst: open
      Src: /src/pdns/pdns/zoneparser-tng.cc:63,1
    - Dst: c_str
      Src: /src/pdns/pdns/zoneparser-tng.cc:63,1
    - Dst: std::system_error
      Src: /src/pdns/pdns/zoneparser-tng.cc:67,1
    - Dst: stringerror
      Src: /src/pdns/pdns/zoneparser-tng.cc:67,1
    - Dst: fstat
      Src: /src/pdns/pdns/zoneparser-tng.cc:71,1
    - Dst: close
      Src: /src/pdns/pdns/zoneparser-tng.cc:73,1
    - Dst: std::system_error
      Src: /src/pdns/pdns/zoneparser-tng.cc:75,1
    - Dst: stringerror
      Src: /src/pdns/pdns/zoneparser-tng.cc:75,1
    - Dst: S_ISREG
      Src: /src/pdns/pdns/zoneparser-tng.cc:77,1
    - Dst: close
      Src: /src/pdns/pdns/zoneparser-tng.cc:78,1
    - Dst: std::generic_category
      Src: /src/pdns/pdns/zoneparser-tng.cc:79,1
    - Dst: std::system_error
      Src: /src/pdns/pdns/zoneparser-tng.cc:80,1
    - Dst: fdopen
      Src: /src/pdns/pdns/zoneparser-tng.cc:82,1
    - Dst: close
      Src: /src/pdns/pdns/zoneparser-tng.cc:85,1
    - Dst: std::system_error
      Src: /src/pdns/pdns/zoneparser-tng.cc:87,1
    - Dst: stringerror
      Src: /src/pdns/pdns/zoneparser-tng.cc:87,1
    - Dst: push
      Src: /src/pdns/pdns/zoneparser-tng.cc:91,1
    - Dst: emplace_back
      Src: /src/pdns/pdns/zoneparser-tng.cc:93,1
    - Dst: std::make_pair
      Src: /src/pdns/pdns/zoneparser-tng.cc:93,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 22
    argCount: 1
    argNames:
    - ' fname'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 57
    functionDepth: 0
    functionLinenumber: 57
    functionLinenumberEnd: 94
    functionName: ZoneParserTNG::stackFile
    functionSourceFile: /src/pdns/pdns/zoneparser-tng.cc
    functionUses: 1
    functionsReached:
    - std::system_error
    - push
    - stringerror
    - size
    - open
    - S_ISREG
    - fstat
    - emplace_back
    - std::make_pair
    - c_str
    - std::generic_category
    - close
    - fdopen
    linkageType: ''
    returnType: void
    signature: void ZoneParserTNG::stackFile(const std::string& fname)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/zoneparser-tng.cc:98,1
    - Dst: fclose
      Src: /src/pdns/pdns/zoneparser-tng.cc:99,1
    - Dst: top
      Src: /src/pdns/pdns/zoneparser-tng.cc:99,1
    - Dst: pop
      Src: /src/pdns/pdns/zoneparser-tng.cc:100,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 96
    functionDepth: 0
    functionLinenumber: 96
    functionLinenumberEnd: 102
    functionName: ZoneParserTNG::~ZoneParserTNG()
    functionSourceFile: /src/pdns/pdns/zoneparser-tng.cc
    functionUses: 0
    functionsReached:
    - empty
    - top
    - fclose
    - pop
    linkageType: ''
    returnType: void
    signature: void ZoneParserTNG::~ZoneParserTNG()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: string
      Src: /src/pdns/pdns/zoneparser-tng.cc:106,1
    - Dst: c_str
      Src: /src/pdns/pdns/zoneparser-tng.cc:106,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' line'
    - ' range'
    argTypes:
    - string
    - pair<string::size_type, string::size_type>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 107
      start: 104
    functionDepth: 0
    functionLinenumber: 104
    functionLinenumberEnd: 107
    functionName: makeString
    functionSourceFile: /src/pdns/pdns/zoneparser-tng.cc
    functionUses: 0
    functionsReached:
    - c_str
    - string
    linkageType: ''
    returnType: string
    signature: string makeString(const string& line, const pair<string::size_type,
      string::size_type>& range)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/zoneparser-tng.cc:111,1
    - Dst: begin
      Src: /src/pdns/pdns/zoneparser-tng.cc:115,1
    - Dst: end
      Src: /src/pdns/pdns/zoneparser-tng.cc:115,1
    - Dst: static_cast<unsigned char>
      Src: /src/pdns/pdns/zoneparser-tng.cc:116,1
    - Dst: isdigit
      Src: /src/pdns/pdns/zoneparser-tng.cc:117,1
    - Dst: end
      Src: /src/pdns/pdns/zoneparser-tng.cc:121,1
    - Dst: static_cast<char>
      Src: /src/pdns/pdns/zoneparser-tng.cc:125,1
    - Dst: tolower
      Src: /src/pdns/pdns/zoneparser-tng.cc:125,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 14
    argCount: 1
    argNames:
    - ' nextpart'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 129
      start: 109
    functionDepth: 0
    functionLinenumber: 109
    functionLinenumberEnd: 129
    functionName: isTimeSpec
    functionSourceFile: /src/pdns/pdns/zoneparser-tng.cc
    functionUses: 0
    functionsReached:
    - isdigit
    - end
    - begin
    - empty
    - static_cast<char>
    - tolower
    - static_cast<unsigned char>
    linkageType: ''
    returnType: bool
    signature: bool isTimeSpec(const string& nextpart)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/zoneparser-tng.cc:134,1
    - Dst: pdns::checked_stoi_into
      Src: /src/pdns/pdns/zoneparser-tng.cc:139,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/zoneparser-tng.cc:142,1
    - Dst: ZoneParserTNG::getLineOfFile
      Src: /src/pdns/pdns/zoneparser-tng.cc:142,1
    - Dst: dns_tolower
      Src: /src/pdns/pdns/zoneparser-tng.cc:145,1
    - Dst: length
      Src: /src/pdns/pdns/zoneparser-tng.cc:145,1
    - Dst: isdigit
      Src: /src/pdns/pdns/zoneparser-tng.cc:146,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/zoneparser-tng.cc:167,1
    - Dst: ZoneParserTNG::getLineOfFile
      Src: /src/pdns/pdns/zoneparser-tng.cc:167,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 31
    argCount: 1
    argNames:
    - ' str'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 170
      start: 132
    functionDepth: 0
    functionLinenumber: 132
    functionLinenumberEnd: 170
    functionName: ZoneParserTNG::makeTTLFromZone
    functionSourceFile: /src/pdns/pdns/zoneparser-tng.cc
    functionUses: 0
    functionsReached:
    - length
    - isdigit
    - dns_tolower
    - PDNSException
    - ZoneParserTNG::getLineOfFile
    - empty
    - pdns::checked_stoi_into
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int ZoneParserTNG::makeTTLFromZone(const string& str)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/zoneparser-tng.cc:174,1
    - Dst: begin
      Src: /src/pdns/pdns/zoneparser-tng.cc:180,1
    - Dst: end
      Src: /src/pdns/pdns/zoneparser-tng.cc:180,1
    - Dst: begin
      Src: /src/pdns/pdns/zoneparser-tng.cc:181,1
    - Dst: makeString
      Src: /src/pdns/pdns/zoneparser-tng.cc:185,1
    - Dst: string::reserve
      Src: /src/pdns/pdns/zoneparser-tng.cc:195,1
    - Dst: string::size
      Src: /src/pdns/pdns/zoneparser-tng.cc:195,1
    - Dst: string::size
      Src: /src/pdns/pdns/zoneparser-tng.cc:198,1
    - Dst: string::append
      Src: /src/pdns/pdns/zoneparser-tng.cc:201,1
    - Dst: string::size
      Src: /src/pdns/pdns/zoneparser-tng.cc:211,1
    - Dst: string::append
      Src: /src/pdns/pdns/zoneparser-tng.cc:212,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/zoneparser-tng.cc:212,1
    - Dst: string::size
      Src: /src/pdns/pdns/zoneparser-tng.cc:220,1
    - Dst: string::size
      Src: /src/pdns/pdns/zoneparser-tng.cc:223,1
    - Dst: string::c_str
      Src: /src/pdns/pdns/zoneparser-tng.cc:228,1
    - Dst: string::c_str
      Src: /src/pdns/pdns/zoneparser-tng.cc:228,1
    - Dst: sscanf
      Src: /src/pdns/pdns/zoneparser-tng.cc:232,1
    - Dst: string::c_str
      Src: /src/pdns/pdns/zoneparser-tng.cc:232,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/zoneparser-tng.cc:234,1
    - Dst: ZoneParserTNG::getLineOfFile
      Src: /src/pdns/pdns/zoneparser-tng.cc:234,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/zoneparser-tng.cc:237,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/zoneparser-tng.cc:237,1
    - Dst: ZoneParserTNG::getLineOfFile
      Src: /src/pdns/pdns/zoneparser-tng.cc:237,1
    - Dst: std::min
      Src: /src/pdns/pdns/zoneparser-tng.cc:243,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/zoneparser-tng.cc:243,1
    - Dst: snprintf
      Src: /src/pdns/pdns/zoneparser-tng.cc:247,1
    - Dst: snprintf
      Src: /src/pdns/pdns/zoneparser-tng.cc:250,1
    - Dst: snprintf
      Src: /src/pdns/pdns/zoneparser-tng.cc:253,1
    - Dst: snprintf
      Src: /src/pdns/pdns/zoneparser-tng.cc:257,1
    - Dst: string::append
      Src: /src/pdns/pdns/zoneparser-tng.cc:263,1
    - Dst: std::move
      Src: /src/pdns/pdns/zoneparser-tng.cc:275,1
    CyclomaticComplexity: 28
    EdgeCount: 28
    ICount: 64
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 277
      start: 172
    functionDepth: 0
    functionLinenumber: 172
    functionLinenumberEnd: 277
    functionName: ZoneParserTNG::getTemplateLine
    functionSourceFile: /src/pdns/pdns/zoneparser-tng.cc
    functionUses: 0
    functionsReached:
    - string::c_str
    - std::move
    - string::reserve
    - string::size
    - std::to_string
    - sscanf
    - snprintf
    - PDNSException
    - std::min
    - string::append
    - end
    - ZoneParserTNG::getLineOfFile
    - begin
    - empty
    - makeString
    - static_cast<int>
    linkageType: ''
    returnType: bool
    signature: bool ZoneParserTNG::getTemplateLine()
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: find
      Src: /src/pdns/pdns/zoneparser-tng.cc:281,1
    - Dst: length
      Src: /src/pdns/pdns/zoneparser-tng.cc:285,1
    - Dst: resize
      Src: /src/pdns/pdns/zoneparser-tng.cc:296,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 13
    argCount: 1
    argNames:
    - ' line'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 297
      start: 279
    functionDepth: 1
    functionLinenumber: 279
    functionLinenumberEnd: 297
    functionName: chopComment
    functionSourceFile: /src/pdns/pdns/zoneparser-tng.cc
    functionUses: 0
    functionsReached:
    - length
    - resize
    - find
    linkageType: ''
    returnType: void
    signature: void chopComment(string& line)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: length
      Src: /src/pdns/pdns/zoneparser-tng.cc:301,1
    - Dst: erase
      Src: /src/pdns/pdns/zoneparser-tng.cc:312,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 14
    argCount: 2
    argNames:
    - ' line'
    - c
    argTypes:
    - string
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 316
      start: 299
    functionDepth: 0
    functionLinenumber: 299
    functionLinenumberEnd: 316
    functionName: findAndElide
    functionSourceFile: /src/pdns/pdns/zoneparser-tng.cc
    functionUses: 0
    functionsReached:
    - length
    - erase
    linkageType: ''
    returnType: bool
    signature: bool findAndElide(string& line, char c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 321
      start: 318
    functionDepth: 0
    functionLinenumber: 318
    functionLinenumberEnd: 321
    functionName: ZoneParserTNG::getZoneName
    functionSourceFile: /src/pdns/pdns/zoneparser-tng.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: ZoneName
    signature: ZoneName ZoneParserTNG::getZoneName()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/zoneparser-tng.cc:325,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/zoneparser-tng.cc:326,1
    - Dst: std::distance
      Src: /src/pdns/pdns/zoneparser-tng.cc:326,1
    - Dst: begin
      Src: /src/pdns/pdns/zoneparser-tng.cc:326,1
    - Dst: empty
      Src: /src/pdns/pdns/zoneparser-tng.cc:328,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/zoneparser-tng.cc:331,1
    - Dst: top
      Src: /src/pdns/pdns/zoneparser-tng.cc:331,1
    - Dst: top
      Src: /src/pdns/pdns/zoneparser-tng.cc:331,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 332
      start: 323
    functionDepth: 1
    functionLinenumber: 323
    functionLinenumberEnd: 332
    functionName: ZoneParserTNG::getLineOfFile
    functionSourceFile: /src/pdns/pdns/zoneparser-tng.cc
    functionUses: 3
    functionsReached:
    - std::distance
    - std::to_string
    - top
    - begin
    - empty
    linkageType: ''
    returnType: string
    signature: string ZoneParserTNG::getLineOfFile()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/zoneparser-tng.cc:336,1
    - Dst: top
      Src: /src/pdns/pdns/zoneparser-tng.cc:339,1
    - Dst: top
      Src: /src/pdns/pdns/zoneparser-tng.cc:339,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 340
      start: 334
    functionDepth: 0
    functionLinenumber: 334
    functionLinenumberEnd: 340
    functionName: ZoneParserTNG::getLineNumAndFile
    functionSourceFile: /src/pdns/pdns/zoneparser-tng.cc
    functionUses: 1
    functionsReached:
    - empty
    - top
    linkageType: ''
    returnType: pair<string,int>
    signature: pair<string,int> ZoneParserTNG::getLineNumAndFile()
  - BBCount: 63
    BranchProfiles: []
    Callsites:
    - Dst: ZoneParserTNG::getTemplateLine
      Src: /src/pdns/pdns/zoneparser-tng.cc:346,1
    - Dst: ZoneParserTNG::getLine
      Src: /src/pdns/pdns/zoneparser-tng.cc:346,1
    - Dst: boost::trim_right_if
      Src: /src/pdns/pdns/zoneparser-tng.cc:349,1
    - Dst: boost::is_any_of
      Src: /src/pdns/pdns/zoneparser-tng.cc:349,1
    - Dst: std::string*::clear
      Src: /src/pdns/pdns/zoneparser-tng.cc:351,1
    - Dst: find
      Src: /src/pdns/pdns/zoneparser-tng.cc:352,1
    - Dst: substr
      Src: /src/pdns/pdns/zoneparser-tng.cc:353,1
    - Dst: find
      Src: /src/pdns/pdns/zoneparser-tng.cc:353,1
    - Dst: clear
      Src: /src/pdns/pdns/zoneparser-tng.cc:355,1
    - Dst: vstringtok
      Src: /src/pdns/pdns/zoneparser-tng.cc:356,1
    - Dst: empty
      Src: /src/pdns/pdns/zoneparser-tng.cc:358,1
    - Dst: makeString
      Src: /src/pdns/pdns/zoneparser-tng.cc:365,1
    - Dst: pdns_iequals
      Src: /src/pdns/pdns/zoneparser-tng.cc:366,1
    - Dst: size
      Src: /src/pdns/pdns/zoneparser-tng.cc:366,1
    - Dst: ZoneParserTNG::makeTTLFromZone
      Src: /src/pdns/pdns/zoneparser-tng.cc:367,1
    - Dst: trim_right_copy_if
      Src: /src/pdns/pdns/zoneparser-tng.cc:367,1
    - Dst: makeString
      Src: /src/pdns/pdns/zoneparser-tng.cc:367,1
    - Dst: boost::is_any_of
      Src: /src/pdns/pdns/zoneparser-tng.cc:367,1
    - Dst: pdns_iequals
      Src: /src/pdns/pdns/zoneparser-tng.cc:370,1
    - Dst: size
      Src: /src/pdns/pdns/zoneparser-tng.cc:370,1
    - Dst: unquotify
      Src: /src/pdns/pdns/zoneparser-tng.cc:371,1
    - Dst: makeString
      Src: /src/pdns/pdns/zoneparser-tng.cc:371,1
    - Dst: string::find
      Src: /src/pdns/pdns/zoneparser-tng.cc:373,1
    - Dst: string::resize
      Src: /src/pdns/pdns/zoneparser-tng.cc:374,1
    - Dst: string::empty
      Src: /src/pdns/pdns/zoneparser-tng.cc:376,1
    - Dst: empty
      Src: /src/pdns/pdns/zoneparser-tng.cc:376,1
    - Dst: ZoneParserTNG::stackFile
      Src: /src/pdns/pdns/zoneparser-tng.cc:379,1
    - Dst: pdns_iequals
      Src: /src/pdns/pdns/zoneparser-tng.cc:381,1
    - Dst: size
      Src: /src/pdns/pdns/zoneparser-tng.cc:381,1
    - Dst: ZoneName
      Src: /src/pdns/pdns/zoneparser-tng.cc:382,1
    - Dst: makeString
      Src: /src/pdns/pdns/zoneparser-tng.cc:382,1
    - Dst: pdns_iequals
      Src: /src/pdns/pdns/zoneparser-tng.cc:384,1
    - Dst: size
      Src: /src/pdns/pdns/zoneparser-tng.cc:384,1
    - Dst: exception
      Src: /src/pdns/pdns/zoneparser-tng.cc:386,1
    - Dst: makeString
      Src: /src/pdns/pdns/zoneparser-tng.cc:393,1
    - Dst: at
      Src: /src/pdns/pdns/zoneparser-tng.cc:393,1
    - Dst: clear
      Src: /src/pdns/pdns/zoneparser-tng.cc:396,1
    - Dst: find
      Src: /src/pdns/pdns/zoneparser-tng.cc:398,1
    - Dst: emplace_back
      Src: /src/pdns/pdns/zoneparser-tng.cc:400,1
    - Dst: size
      Src: /src/pdns/pdns/zoneparser-tng.cc:403,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/zoneparser-tng.cc:405,1
    - Dst: find
      Src: /src/pdns/pdns/zoneparser-tng.cc:407,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/zoneparser-tng.cc:410,1
    - Dst: emplace_back
      Src: /src/pdns/pdns/zoneparser-tng.cc:412,1
    - Dst: substr
      Src: /src/pdns/pdns/zoneparser-tng.cc:412,1
    - Dst: emplace_back
      Src: /src/pdns/pdns/zoneparser-tng.cc:413,1
    - Dst: substr
      Src: /src/pdns/pdns/zoneparser-tng.cc:413,1
    - Dst: splitOnOnlyOneSeparator
      Src: /src/pdns/pdns/zoneparser-tng.cc:417,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/zoneparser-tng.cc:418,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/zoneparser-tng.cc:419,1
    - Dst: std::stoul
      Src: /src/pdns/pdns/zoneparser-tng.cc:424,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/zoneparser-tng.cc:425,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/zoneparser-tng.cc:426,1
    - Dst: static_cast<uint32_t>
      Src: /src/pdns/pdns/zoneparser-tng.cc:428,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/zoneparser-tng.cc:431,1
    - Dst: what
      Src: /src/pdns/pdns/zoneparser-tng.cc:431,1
    - Dst: parseValue
      Src: /src/pdns/pdns/zoneparser-tng.cc:435,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/zoneparser-tng.cc:435,1
    - Dst: std::move
      Src: /src/pdns/pdns/zoneparser-tng.cc:438,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/zoneparser-tng.cc:438,1
    - Dst: splitOnOnlyOneSeparator
      Src: /src/pdns/pdns/zoneparser-tng.cc:439,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/zoneparser-tng.cc:441,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/zoneparser-tng.cc:442,1
    - Dst: parseValue
      Src: /src/pdns/pdns/zoneparser-tng.cc:445,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/zoneparser-tng.cc:445,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/zoneparser-tng.cc:447,1
    - Dst: parseValue
      Src: /src/pdns/pdns/zoneparser-tng.cc:448,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/zoneparser-tng.cc:448,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/zoneparser-tng.cc:456,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/zoneparser-tng.cc:461,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/zoneparser-tng.cc:461,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/zoneparser-tng.cc:461,1
    - Dst: pop_front
      Src: /src/pdns/pdns/zoneparser-tng.cc:466,1
    - Dst: pop_front
      Src: /src/pdns/pdns/zoneparser-tng.cc:467,1
    - Dst: exception
      Src: /src/pdns/pdns/zoneparser-tng.cc:475,1
    - Dst: ZoneParserTNG::getLineOfFile
      Src: /src/pdns/pdns/zoneparser-tng.cc:475,1
    - Dst: makeString
      Src: /src/pdns/pdns/zoneparser-tng.cc:480,1
    - Dst: dns_isspace
      Src: /src/pdns/pdns/zoneparser-tng.cc:481,1
    - Dst: DNSName
      Src: /src/pdns/pdns/zoneparser-tng.cc:485,1
    - Dst: pop_front
      Src: /src/pdns/pdns/zoneparser-tng.cc:486,1
    - Dst: string::empty
      Src: /src/pdns/pdns/zoneparser-tng.cc:487,1
    - Dst: DNSName
      Src: /src/pdns/pdns/zoneparser-tng.cc:491,1
    - Dst: isCanonical
      Src: /src/pdns/pdns/zoneparser-tng.cc:492,1
    - Dst: DNSName
      Src: /src/pdns/pdns/zoneparser-tng.cc:493,1
    - Dst: empty
      Src: /src/pdns/pdns/zoneparser-tng.cc:496,1
    - Dst: exception
      Src: /src/pdns/pdns/zoneparser-tng.cc:497,1
    - Dst: ZoneParserTNG::getLineOfFile
      Src: /src/pdns/pdns/zoneparser-tng.cc:497,1
    - Dst: empty
      Src: /src/pdns/pdns/zoneparser-tng.cc:506,1
    - Dst: front
      Src: /src/pdns/pdns/zoneparser-tng.cc:507,1
    - Dst: pop_front
      Src: /src/pdns/pdns/zoneparser-tng.cc:508,1
    - Dst: makeString
      Src: /src/pdns/pdns/zoneparser-tng.cc:509,1
    - Dst: string::empty
      Src: /src/pdns/pdns/zoneparser-tng.cc:510,1
    - Dst: string::find
      Src: /src/pdns/pdns/zoneparser-tng.cc:513,1
    - Dst: pdns_iequals
      Src: /src/pdns/pdns/zoneparser-tng.cc:519,1
    - Dst: isTimeSpec
      Src: /src/pdns/pdns/zoneparser-tng.cc:523,1
    - Dst: ZoneParserTNG::makeTTLFromZone
      Src: /src/pdns/pdns/zoneparser-tng.cc:524,1
    - Dst: DNSRecordContent::TypeToNumber
      Src: /src/pdns/pdns/zoneparser-tng.cc:536,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/zoneparser-tng.cc:543,1
    - Dst: ZoneParserTNG::getLineOfFile
      Src: /src/pdns/pdns/zoneparser-tng.cc:543,1
    - Dst: exception
      Src: /src/pdns/pdns/zoneparser-tng.cc:549,1
    - Dst: ZoneParserTNG::getLineOfFile
      Src: /src/pdns/pdns/zoneparser-tng.cc:549,1
    - Dst: content::assign
      Src: /src/pdns/pdns/zoneparser-tng.cc:552,1
    - Dst: chopComment
      Src: /src/pdns/pdns/zoneparser-tng.cc:553,1
    - Dst: trim_if
      Src: /src/pdns/pdns/zoneparser-tng.cc:554,1
    - Dst: boost::is_any_of
      Src: /src/pdns/pdns/zoneparser-tng.cc:554,1
    - Dst: content::size
      Src: /src/pdns/pdns/zoneparser-tng.cc:556,1
    - Dst: DNSName
      Src: /src/pdns/pdns/zoneparser-tng.cc:557,1
    - Dst: findAndElide
      Src: /src/pdns/pdns/zoneparser-tng.cc:559,1
    - Dst: findAndElide
      Src: /src/pdns/pdns/zoneparser-tng.cc:560,1
    - Dst: ZoneParserTNG::getLine
      Src: /src/pdns/pdns/zoneparser-tng.cc:561,1
    - Dst: boost::trim_right
      Src: /src/pdns/pdns/zoneparser-tng.cc:562,1
    - Dst: chopComment
      Src: /src/pdns/pdns/zoneparser-tng.cc:563,1
    - Dst: Utility::trim
      Src: /src/pdns/pdns/zoneparser-tng.cc:564,1
    - Dst: findAndElide
      Src: /src/pdns/pdns/zoneparser-tng.cc:566,1
    - Dst: boost::trim_if
      Src: /src/pdns/pdns/zoneparser-tng.cc:573,1
    - Dst: boost::is_any_of
      Src: /src/pdns/pdns/zoneparser-tng.cc:573,1
    - Dst: DNSRecordContent::isUnknownType
      Src: /src/pdns/pdns/zoneparser-tng.cc:575,1
    - Dst: DNSRecordContent::upgradeContent
      Src: /src/pdns/pdns/zoneparser-tng.cc:576,1
    - Dst: qtype::getCode
      Src: /src/pdns/pdns/zoneparser-tng.cc:580,1
    - Dst: stringtok
      Src: /src/pdns/pdns/zoneparser-tng.cc:582,1
    - Dst: vector::size
      Src: /src/pdns/pdns/zoneparser-tng.cc:583,1
    - Dst: toCanonic
      Src: /src/pdns/pdns/zoneparser-tng.cc:586,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/zoneparser-tng.cc:588,1
    - Dst: qname::toLogString
      Src: /src/pdns/pdns/zoneparser-tng.cc:588,1
    - Dst: qtype::toString
      Src: /src/pdns/pdns/zoneparser-tng.cc:588,1
    - Dst: what
      Src: /src/pdns/pdns/zoneparser-tng.cc:588,1
    - Dst: stringtok
      Src: /src/pdns/pdns/zoneparser-tng.cc:596,1
    - Dst: vector::size
      Src: /src/pdns/pdns/zoneparser-tng.cc:597,1
    - Dst: toCanonic
      Src: /src/pdns/pdns/zoneparser-tng.cc:598,1
    - Dst: toCanonic
      Src: /src/pdns/pdns/zoneparser-tng.cc:599,1
    - Dst: stringtok
      Src: /src/pdns/pdns/zoneparser-tng.cc:605,1
    - Dst: vector::size
      Src: /src/pdns/pdns/zoneparser-tng.cc:606,1
    - Dst: toCanonic
      Src: /src/pdns/pdns/zoneparser-tng.cc:609,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/zoneparser-tng.cc:611,1
    - Dst: qname::toLogString
      Src: /src/pdns/pdns/zoneparser-tng.cc:611,1
    - Dst: qtype::toString
      Src: /src/pdns/pdns/zoneparser-tng.cc:611,1
    - Dst: what
      Src: /src/pdns/pdns/zoneparser-tng.cc:611,1
    - Dst: toCanonic
      Src: /src/pdns/pdns/zoneparser-tng.cc:626,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/zoneparser-tng.cc:628,1
    - Dst: qname::toLogString
      Src: /src/pdns/pdns/zoneparser-tng.cc:628,1
    - Dst: qtype::toString
      Src: /src/pdns/pdns/zoneparser-tng.cc:628,1
    - Dst: what
      Src: /src/pdns/pdns/zoneparser-tng.cc:628,1
    - Dst: stringtok
      Src: /src/pdns/pdns/zoneparser-tng.cc:632,1
    - Dst: vector::size
      Src: /src/pdns/pdns/zoneparser-tng.cc:633,1
    - Dst: toCanonic
      Src: /src/pdns/pdns/zoneparser-tng.cc:635,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/zoneparser-tng.cc:637,1
    - Dst: qname::toLogString
      Src: /src/pdns/pdns/zoneparser-tng.cc:637,1
    - Dst: qtype::toString
      Src: /src/pdns/pdns/zoneparser-tng.cc:637,1
    - Dst: what
      Src: /src/pdns/pdns/zoneparser-tng.cc:637,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/zoneparser-tng.cc:640,1
    - Dst: qname::toLogString
      Src: /src/pdns/pdns/zoneparser-tng.cc:640,1
    - Dst: content::clear
      Src: /src/pdns/pdns/zoneparser-tng.cc:642,1
    - Dst: vector::size
      Src: /src/pdns/pdns/zoneparser-tng.cc:643,1
    - Dst: content::append
      Src: /src/pdns/pdns/zoneparser-tng.cc:645,1
    - Dst: stringtok
      Src: /src/pdns/pdns/zoneparser-tng.cc:652,1
    - Dst: vector::size
      Src: /src/pdns/pdns/zoneparser-tng.cc:653,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/zoneparser-tng.cc:654,1
    - Dst: qname::toLogString
      Src: /src/pdns/pdns/zoneparser-tng.cc:654,1
    - Dst: vector::size
      Src: /src/pdns/pdns/zoneparser-tng.cc:655,1
    - Dst: toCanonic
      Src: /src/pdns/pdns/zoneparser-tng.cc:657,1
    - Dst: toCanonic
      Src: /src/pdns/pdns/zoneparser-tng.cc:658,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/zoneparser-tng.cc:660,1
    - Dst: qname::toLogString
      Src: /src/pdns/pdns/zoneparser-tng.cc:660,1
    - Dst: qtype::toString
      Src: /src/pdns/pdns/zoneparser-tng.cc:660,1
    - Dst: what
      Src: /src/pdns/pdns/zoneparser-tng.cc:660,1
    - Dst: content::clear
      Src: /src/pdns/pdns/zoneparser-tng.cc:663,1
    - Dst: vector::size
      Src: /src/pdns/pdns/zoneparser-tng.cc:664,1
    - Dst: content::append
      Src: /src/pdns/pdns/zoneparser-tng.cc:666,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/zoneparser-tng.cc:670,1
    - Dst: ZoneParserTNG::makeTTLFromZone
      Src: /src/pdns/pdns/zoneparser-tng.cc:670,1
    CyclomaticComplexity: 118
    EdgeCount: 118
    ICount: 263
    argCount: 2
    argNames:
    - ' rr'
    - comment
    argTypes:
    - DNSResourceRecord
    - std::string*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 678
      start: 343
    functionDepth: 1
    functionLinenumber: 343
    functionLinenumberEnd: 678
    functionName: ZoneParserTNG::get
    functionSourceFile: /src/pdns/pdns/zoneparser-tng.cc
    functionUses: 3
    functionsReached:
    - DNSRecordContent::upgradeContent
    - exception
    - std::to_string
    - PDNSException
    - runtime_error
    - static_cast<uint32_t>
    - content::assign
    - content::clear
    - std::vector::at
    - emplace_back
    - front
    - DNSRecordContent::isUnknownType
    - find
    - string::resize
    - unquotify
    - std::vector::size
    - stringtok
    - ZoneParserTNG::getTemplateLine
    - string::empty
    - qname::toLogString
    - ZoneParserTNG::stackFile
    - string::find
    - std::string*::clear
    - size
    - content::append
    - substr
    - toCanonic
    - trim_if
    - vstringtok
    - empty
    - clear
    - DNSRecordContent::TypeToNumber
    - at
    - parseValue
    - isTimeSpec
    - pdns::max
    - isCanonical
    - std::runtime_error
    - ZoneParserTNG::getLine
    - pdns_iequals
    - chopComment
    - boost::trim_right_if
    - DNSName
    - qtype::getCode
    - pop_front
    - trim_right_copy_if
    - ZoneParserTNG::getLineOfFile
    - boost::trim_right
    - Utility::trim
    - dns_isspace
    - makeString
    - ZoneParserTNG::makeTTLFromZone
    - std::move
    - qtype::toString
    - what
    - findAndElide
    - boost::is_any_of
    - splitOnOnlyOneSeparator
    - std::stoul
    - boost::trim_if
    - ZoneName
    - vector::size
    - content::size
    linkageType: ''
    returnType: bool
    signature: bool ZoneParserTNG::get(DNSResourceRecord& rr, std::string* comment)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/zoneparser-tng.cc:683,1
    - Dst: end
      Src: /src/pdns/pdns/zoneparser-tng.cc:684,1
    - Dst: empty
      Src: /src/pdns/pdns/zoneparser-tng.cc:691,1
    - Dst: stringfgets
      Src: /src/pdns/pdns/zoneparser-tng.cc:692,1
    - Dst: top
      Src: /src/pdns/pdns/zoneparser-tng.cc:692,1
    - Dst: top
      Src: /src/pdns/pdns/zoneparser-tng.cc:693,1
    - Dst: fclose
      Src: /src/pdns/pdns/zoneparser-tng.cc:696,1
    - Dst: top
      Src: /src/pdns/pdns/zoneparser-tng.cc:696,1
    - Dst: pop
      Src: /src/pdns/pdns/zoneparser-tng.cc:697,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 700
      start: 681
    functionDepth: 0
    functionLinenumber: 681
    functionLinenumberEnd: 700
    functionName: ZoneParserTNG::getLine
    functionSourceFile: /src/pdns/pdns/zoneparser-tng.cc
    functionUses: 1
    functionsReached:
    - stringfgets
    - fclose
    - end
    - top
    - empty
    - pop
    linkageType: ''
    returnType: bool
    signature: bool ZoneParserTNG::getLine()
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: stringtok
      Src: /src/pdns/pdns/dnsparser.cc:40,1
    - Dst: vector::size
      Src: /src/pdns/pdns/dnsparser.cc:42,1
    - Dst: vector::size
      Src: /src/pdns/pdns/dnsparser.cc:42,1
    - Dst: pdns_iequals
      Src: /src/pdns/pdns/dnsparser.cc:42,1
    - Dst: vector::at
      Src: /src/pdns/pdns/dnsparser.cc:42,1
    - Dst: MOADNSException
      Src: /src/pdns/pdns/dnsparser.cc:43,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsparser.cc:43,1
    - Dst: vector::size
      Src: /src/pdns/pdns/dnsparser.cc:43,1
    - Dst: vector::at
      Src: /src/pdns/pdns/dnsparser.cc:46,1
    - Dst: MOADNSException
      Src: /src/pdns/pdns/dnsparser.cc:47,1
    - Dst: vector::at
      Src: /src/pdns/pdns/dnsparser.cc:47,1
    - Dst: vector::size
      Src: /src/pdns/pdns/dnsparser.cc:50,1
    - Dst: vector::at
      Src: /src/pdns/pdns/dnsparser.cc:50,1
    - Dst: pdns::checked_stoi<unsigned int>
      Src: /src/pdns/pdns/dnsparser.cc:51,1
    - Dst: vector::at
      Src: /src/pdns/pdns/dnsparser.cc:51,1
    - Dst: size
      Src: /src/pdns/pdns/dnsparser.cc:52,1
    - Dst: size
      Src: /src/pdns/pdns/dnsparser.cc:52,1
    - Dst: MOADNSException
      Src: /src/pdns/pdns/dnsparser.cc:53,1
    - Dst: boost::format
      Src: /src/pdns/pdns/dnsparser.cc:53,1
    - Dst: size
      Src: /src/pdns/pdns/dnsparser.cc:53,1
    - Dst: str
      Src: /src/pdns/pdns/dnsparser.cc:53,1
    - Dst: string::reserve
      Src: /src/pdns/pdns/dnsparser.cc:57,1
    - Dst: sscanf
      Src: /src/pdns/pdns/dnsparser.cc:61,1
    - Dst: at
      Src: /src/pdns/pdns/dnsparser.cc:61,1
    - Dst: MOADNSException
      Src: /src/pdns/pdns/dnsparser.cc:62,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsparser.cc:62,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsparser.cc:62,1
    - Dst: size
      Src: /src/pdns/pdns/dnsparser.cc:62,1
    - Dst: string::append
      Src: /src/pdns/pdns/dnsparser.cc:64,1
    - Dst: insert
      Src: /src/pdns/pdns/dnsparser.cc:67,1
    - Dst: end
      Src: /src/pdns/pdns/dnsparser.cc:67,1
    - Dst: string::begin
      Src: /src/pdns/pdns/dnsparser.cc:67,1
    - Dst: string::end
      Src: /src/pdns/pdns/dnsparser.cc:67,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 19
    argCount: 1
    argNames:
    - ' zone'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 36
    functionDepth: 1
    functionLinenumber: 36
    functionLinenumberEnd: 68
    functionName: UnknownRecordContent::UnknownRecordContent
    functionSourceFile: /src/pdns/pdns/dnsparser.cc
    functionUses: 0
    functionsReached:
    - string::end
    - string::begin
    - string::reserve
    - stringtok
    - vector::at
    - std::to_string
    - sscanf
    - pdns_iequals
    - string::append
    - end
    - size
    - pdns::checked_stoi<unsigned int>
    - str
    - insert
    - boost::format
    - MOADNSException
    - vector::size
    - at
    linkageType: ''
    returnType: void
    signature: void UnknownRecordContent::UnknownRecordContent(const string& zone)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsparser.cc:73,1
    - Dst: snprintf
      Src: /src/pdns/pdns/dnsparser.cc:76,1
    - Dst: ostringstream::str
      Src: /src/pdns/pdns/dnsparser.cc:79,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 70
    functionDepth: 0
    functionLinenumber: 70
    functionLinenumberEnd: 80
    functionName: UnknownRecordContent::getZoneRepresentation
    functionSourceFile: /src/pdns/pdns/dnsparser.cc
    functionUses: 0
    functionsReached:
    - ostringstream::str
    - snprintf
    - size
    linkageType: ''
    returnType: string
    signature: string UnknownRecordContent::getZoneRepresentation(bool /* noDot */)
      const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: xfrBlob
      Src: /src/pdns/pdns/dnsparser.cc:84,1
    - Dst: string
      Src: /src/pdns/pdns/dnsparser.cc:84,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsparser.cc:84,1
    - Dst: end
      Src: /src/pdns/pdns/dnsparser.cc:84,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' pw'
    argTypes:
    - DNSPacketWriter
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 82
    functionDepth: 0
    functionLinenumber: 82
    functionLinenumberEnd: 85
    functionName: UnknownRecordContent::toPacket
    functionSourceFile: /src/pdns/pdns/dnsparser.cc
    functionUses: 0
    functionsReached:
    - end
    - xfrBlob
    - string
    - begin
    linkageType: ''
    returnType: void
    signature: void UnknownRecordContent::toPacket(DNSPacketWriter& pw) const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/pdns/pdns/dnsparser.cc:90,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsparser.cc:91,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsparser.cc:92,1
    - Dst: getStorage
      Src: /src/pdns/pdns/dnsparser.cc:96,1
    - Dst: PacketBuffer::resize
      Src: /src/pdns/pdns/dnsparser.cc:97,1
    - Dst: size
      Src: /src/pdns/pdns/dnsparser.cc:97,1
    - Dst: size
      Src: /src/pdns/pdns/dnsparser.cc:97,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsparser.cc:100,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsparser.cc:103,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/dnsparser.cc:103,1
    - Dst: std::array::size
      Src: /src/pdns/pdns/dnsparser.cc:103,1
    - Dst: std::array::size
      Src: /src/pdns/pdns/dnsparser.cc:103,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsparser.cc:105,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsparser.cc:105,1
    - Dst: size
      Src: /src/pdns/pdns/dnsparser.cc:105,1
    - Dst: size
      Src: /src/pdns/pdns/dnsparser.cc:105,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsparser.cc:108,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsparser.cc:109,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsparser.cc:111,1
    - Dst: size
      Src: /src/pdns/pdns/dnsparser.cc:111,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsparser.cc:113,1
    - Dst: empty
      Src: /src/pdns/pdns/dnsparser.cc:114,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsparser.cc:115,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsparser.cc:115,1
    - Dst: size
      Src: /src/pdns/pdns/dnsparser.cc:115,1
    - Dst: size
      Src: /src/pdns/pdns/dnsparser.cc:116,1
    - Dst: DNSRecord::DNSRecord
      Src: /src/pdns/pdns/dnsparser.cc:120,1
    - Dst: size
      Src: /src/pdns/pdns/dnsparser.cc:124,1
    - Dst: std::string_view
      Src: /src/pdns/pdns/dnsparser.cc:126,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsparser.cc:126,1
    - Dst: PacketBuffer::data
      Src: /src/pdns/pdns/dnsparser.cc:126,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsparser.cc:126,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsparser.cc:126,1
    - Dst: size
      Src: /src/pdns/pdns/dnsparser.cc:126,1
    - Dst: PacketReader::getDnsrecordheader
      Src: /src/pdns/pdns/dnsparser.cc:128,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/dnsparser.cc:129,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 28
    argCount: 5
    argNames:
    - ' qname'
    - qtype
    - ' serialized'
    - qclass
    - internalRepresentation
    argTypes:
    - DNSName
    - uint16_t
    - string
    - uint16_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 131
      start: 87
    functionDepth: 1
    functionLinenumber: 87
    functionLinenumberEnd: 131
    functionName: DNSRecordContent::deserialize
    functionSourceFile: /src/pdns/pdns/dnsparser.cc
    functionUses: 0
    functionsReached:
    - memcpy
    - PacketBuffer::data
    - DNSRecord::DNSRecord
    - getStorage
    - std::string_view
    - size
    - memset
    - empty
    - reinterpret_cast<const char*>
    - PacketBuffer::size
    - PacketReader::getDnsrecordheader
    - PacketBuffer::resize
    - DNSRecordContent::make
    - c_str
    - std::array::data
    - std::array::size
    - htons
    linkageType: ''
    returnType: shared_ptr<DNSRecordContent>
    signature: shared_ptr<DNSRecordContent> DNSRecordContent::deserialize(const DNSName&
      qname, uint16_t qtype, const string& serialized, uint16_t qclass, bool internalRepresentation)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: getTypemap
      Src: /src/pdns/pdns/dnsparser.cc:138,1
    - Dst: pair
      Src: /src/pdns/pdns/dnsparser.cc:138,1
    - Dst: getTypemap
      Src: /src/pdns/pdns/dnsparser.cc:139,1
    - Dst: std::make_shared<UnknownRecordContent>
      Src: /src/pdns/pdns/dnsparser.cc:140,1
    - Dst: auto::second
      Src: /src/pdns/pdns/dnsparser.cc:143,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - ' dr'
    - ' pr'
    argTypes:
    - DNSRecord
    - PacketReader
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 144
      start: 133
    functionDepth: 0
    functionLinenumber: 133
    functionLinenumberEnd: 144
    functionName: DNSRecordContent::make
    functionSourceFile: /src/pdns/pdns/dnsparser.cc
    functionUses: 9
    functionsReached:
    - auto::second
    - std::make_shared<UnknownRecordContent>
    - getTypemap
    - pair
    linkageType: ''
    returnType: std::shared_ptr<DNSRecordContent>
    signature: "std::shared_ptr<DNSRecordContent> DNSRecordContent::make(const DNSRecord&
      dr,\n                                                         PacketReader&
      pr)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: getZmakermap
      Src: /src/pdns/pdns/dnsparser.cc:149,1
    - Dst: pair
      Src: /src/pdns/pdns/dnsparser.cc:149,1
    - Dst: getZmakermap
      Src: /src/pdns/pdns/dnsparser.cc:150,1
    - Dst: std::make_shared<UnknownRecordContent>
      Src: /src/pdns/pdns/dnsparser.cc:151,1
    - Dst: auto::second
      Src: /src/pdns/pdns/dnsparser.cc:154,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - qtype
    - qclass
    - ' content'
    argTypes:
    - uint16_t
    - uint16_t
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 146
    functionDepth: 0
    functionLinenumber: 146
    functionLinenumberEnd: 155
    functionName: DNSRecordContent::make
    functionSourceFile: /src/pdns/pdns/dnsparser.cc
    functionUses: 9
    functionsReached:
    - auto::second
    - getZmakermap
    - std::make_shared<UnknownRecordContent>
    - pair
    linkageType: ''
    returnType: std::shared_ptr<DNSRecordContent>
    signature: "std::shared_ptr<DNSRecordContent> DNSRecordContent::make(uint16_t
      qtype, uint16_t qclass,\n                                                         const
      string& content)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<UnknownRecordContent>
      Src: /src/pdns/pdns/dnsparser.cc:163,1
    - Dst: getTypemap
      Src: /src/pdns/pdns/dnsparser.cc:167,1
    - Dst: pair
      Src: /src/pdns/pdns/dnsparser.cc:167,1
    - Dst: getTypemap
      Src: /src/pdns/pdns/dnsparser.cc:168,1
    - Dst: std::make_shared<UnknownRecordContent>
      Src: /src/pdns/pdns/dnsparser.cc:169,1
    - Dst: auto::second
      Src: /src/pdns/pdns/dnsparser.cc:172,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 7
    argCount: 3
    argNames:
    - ' dr'
    - ' pr'
    - oc
    argTypes:
    - DNSRecord
    - PacketReader
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 173
      start: 157
    functionDepth: 0
    functionLinenumber: 157
    functionLinenumberEnd: 173
    functionName: DNSRecordContent::make
    functionSourceFile: /src/pdns/pdns/dnsparser.cc
    functionUses: 9
    functionsReached:
    - auto::second
    - std::make_shared<UnknownRecordContent>
    - getTypemap
    - pair
    linkageType: ''
    returnType: std::shared_ptr<DNSRecordContent>
    signature: std::shared_ptr<DNSRecordContent> DNSRecordContent::make(const DNSRecord&
      dr, PacketReader& pr, uint16_t oc)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSRecordContent::deserialize
      Src: /src/pdns/pdns/dnsparser.cc:178,1
    - Dst: getCode
      Src: /src/pdns/pdns/dnsparser.cc:178,1
    - Dst: UnknownRecordContent::serialize
      Src: /src/pdns/pdns/dnsparser.cc:178,1
    - Dst: shared_ptr::getZoneRepresentation
      Src: /src/pdns/pdns/dnsparser.cc:179,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' qname'
    - ' qtype'
    - ' content'
    argTypes:
    - DNSName
    - QType
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 180
      start: 175
    functionDepth: 0
    functionLinenumber: 175
    functionLinenumberEnd: 180
    functionName: DNSRecordContent::upgradeContent
    functionSourceFile: /src/pdns/pdns/dnsparser.cc
    functionUses: 1
    functionsReached:
    - UnknownRecordContent::serialize
    - shared_ptr::getZoneRepresentation
    - getCode
    - DNSRecordContent::deserialize
    linkageType: ''
    returnType: string
    signature: string DNSRecordContent::upgradeContent(const DNSName& qname, const
      QType& qtype, const string& content)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 186
      start: 182
    functionDepth: 0
    functionLinenumber: 182
    functionLinenumberEnd: 186
    functionName: '& DNSRecordContent::getTypemap()'
    functionSourceFile: /src/pdns/pdns/dnsparser.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: DNSRecordContent::typemap_t
    signature: DNSRecordContent::typemap_t & DNSRecordContent::getTypemap()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 192
      start: 188
    functionDepth: 0
    functionLinenumber: 188
    functionLinenumberEnd: 192
    functionName: '& DNSRecordContent::getN2Typemap()'
    functionSourceFile: /src/pdns/pdns/dnsparser.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: DNSRecordContent::n2typemap_t
    signature: DNSRecordContent::n2typemap_t & DNSRecordContent::getN2Typemap()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 198
      start: 194
    functionDepth: 0
    functionLinenumber: 194
    functionLinenumberEnd: 198
    functionName: '& DNSRecordContent::getT2Namemap()'
    functionSourceFile: /src/pdns/pdns/dnsparser.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: DNSRecordContent::t2namemap_t
    signature: DNSRecordContent::t2namemap_t & DNSRecordContent::getT2Namemap()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 204
      start: 200
    functionDepth: 0
    functionLinenumber: 200
    functionLinenumberEnd: 204
    functionName: '& DNSRecordContent::getZmakermap()'
    functionSourceFile: /src/pdns/pdns/dnsparser.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: DNSRecordContent::zmakermap_t
    signature: DNSRecordContent::zmakermap_t & DNSRecordContent::getZmakermap()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getTypemap
      Src: /src/pdns/pdns/dnsparser.cc:208,1
    - Dst: pair
      Src: /src/pdns/pdns/dnsparser.cc:208,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - rtype
    - rclass
    argTypes:
    - uint16_t
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 209
      start: 206
    functionDepth: 0
    functionLinenumber: 206
    functionLinenumberEnd: 209
    functionName: DNSRecordContent::isRegisteredType
    functionSourceFile: /src/pdns/pdns/dnsparser.cc
    functionUses: 0
    functionsReached:
    - getTypemap
    - pair
    linkageType: ''
    returnType: bool
    signature: bool DNSRecordContent::isRegisteredType(uint16_t rtype, uint16_t rclass)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: qtype::getCode
      Src: /src/pdns/pdns/dnsparser.cc:213,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/dnsparser.cc:218,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - ' rr'
    argTypes:
    - DNSResourceRecord
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 219
      start: 211
    functionDepth: 0
    functionLinenumber: 211
    functionLinenumberEnd: 219
    functionName: DNSRecord::DNSRecord
    functionSourceFile: /src/pdns/pdns/dnsparser.cc
    functionUses: 5
    functionsReached:
    - qtype::getCode
    - DNSRecordContent::make
    linkageType: ''
    returnType: void
    signature: void DNSRecord::DNSRecord(const DNSResourceRecord& rr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: QType
      Src: /src/pdns/pdns/dnsparser.cc:226,1
    - Dst: getContent
      Src: /src/pdns/pdns/dnsparser.cc:228,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - ' wire'
    argTypes:
    - DNSRecord
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 232
      start: 222
    functionDepth: 0
    functionLinenumber: 222
    functionLinenumberEnd: 232
    functionName: DNSResourceRecord::fromWire
    functionSourceFile: /src/pdns/pdns/dnsparser.cc
    functionUses: 2
    functionsReached:
    - QType
    - getContent
    linkageType: ''
    returnType: DNSResourceRecord
    signature: DNSResourceRecord DNSResourceRecord::fromWire(const DNSRecord& wire)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsparser.cc:236,1
    - Dst: MOADNSException
      Src: /src/pdns/pdns/dnsparser.cc:237,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsparser.cc:239,1
    - Dst: data
      Src: /src/pdns/pdns/dnsparser.cc:239,1
    - Dst: MOADNSException
      Src: /src/pdns/pdns/dnsparser.cc:242,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsparser.cc:242,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsparser.cc:244,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsparser.cc:245,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsparser.cc:246,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsparser.cc:247,1
    - Dst: MOADNSException
      Src: /src/pdns/pdns/dnsparser.cc:250,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsparser.cc:250,1
    - Dst: PacketReader::getName
      Src: /src/pdns/pdns/dnsparser.cc:260,1
    - Dst: PacketReader::get16BitInt
      Src: /src/pdns/pdns/dnsparser.cc:261,1
    - Dst: PacketReader::get16BitInt
      Src: /src/pdns/pdns/dnsparser.cc:262,1
    - Dst: std::min
      Src: /src/pdns/pdns/dnsparser.cc:275,1
    - Dst: size
      Src: /src/pdns/pdns/dnsparser.cc:275,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/dnsparser.cc:275,1
    - Dst: reserve
      Src: /src/pdns/pdns/dnsparser.cc:276,1
    - Dst: DNSRecord::DNSRecord
      Src: /src/pdns/pdns/dnsparser.cc:278,1
    - Dst: PacketReader::getPosition
      Src: /src/pdns/pdns/dnsparser.cc:287,1
    - Dst: PacketReader::getName
      Src: /src/pdns/pdns/dnsparser.cc:289,1
    - Dst: PacketReader::getDnsrecordheader
      Src: /src/pdns/pdns/dnsparser.cc:291,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsparser.cc:296,1
    - Dst: DNSRecord::setContent
      Src: /src/pdns/pdns/dnsparser.cc:303,1
    - Dst: std::make_shared<UnknownRecordContent>
      Src: /src/pdns/pdns/dnsparser.cc:303,1
    - Dst: DNSRecord::setContent
      Src: /src/pdns/pdns/dnsparser.cc:307,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/dnsparser.cc:307,1
    - Dst: MOADNSException
      Src: /src/pdns/pdns/dnsparser.cc:311,1
    - Dst: toString
      Src: /src/pdns/pdns/dnsparser.cc:311,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsparser.cc:311,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsparser.cc:311,1
    - Dst: MOADNSException
      Src: /src/pdns/pdns/dnsparser.cc:316,1
    - Dst: toLogString
      Src: /src/pdns/pdns/dnsparser.cc:316,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsparser.cc:316,1
    - Dst: emplace_back
      Src: /src/pdns/pdns/dnsparser.cc:322,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsparser.cc:322,1
    - Dst: PacketReader::getPosition
      Src: /src/pdns/pdns/dnsparser.cc:326,1
    - Dst: size
      Src: /src/pdns/pdns/dnsparser.cc:326,1
    - Dst: MOADNSException
      Src: /src/pdns/pdns/dnsparser.cc:327,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsparser.cc:327,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsparser.cc:327,1
    - Dst: PacketReader::getPosition
      Src: /src/pdns/pdns/dnsparser.cc:327,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsparser.cc:328,1
    - Dst: size
      Src: /src/pdns/pdns/dnsparser.cc:328,1
    - Dst: MOADNSException
      Src: /src/pdns/pdns/dnsparser.cc:345,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsparser.cc:345,1
    - Dst: size
      Src: /src/pdns/pdns/dnsparser.cc:345,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsparser.cc:346,1
    - Dst: string
      Src: /src/pdns/pdns/dnsparser.cc:347,1
    - Dst: what
      Src: /src/pdns/pdns/dnsparser.cc:347,1
    CyclomaticComplexity: 43
    EdgeCount: 43
    ICount: 69
    argCount: 2
    argNames:
    - query
    - ' packet'
    argTypes:
    - bool
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 350
      start: 234
    functionDepth: 0
    functionLinenumber: 234
    functionLinenumberEnd: 350
    functionName: MOADNSParser::init
    functionSourceFile: /src/pdns/pdns/dnsparser.cc
    functionUses: 0
    functionsReached:
    - PacketReader::getName
    - toString
    - toLogString
    - std::to_string
    - DNSRecord::DNSRecord
    - ntohs
    - DNSRecord::setContent
    - emplace_back
    - static_cast<size_t>
    - string
    - size
    - PacketReader::get16BitInt
    - DNSRecordContent::make
    - PacketReader::getPosition
    - std::make_shared<UnknownRecordContent>
    - reserve
    - memcpy
    - std::move
    - std::min
    - what
    - PacketReader::getDnsrecordheader
    - data
    - MOADNSException
    linkageType: ''
    returnType: void
    signature: void MOADNSParser::init(bool query, const std::string_view& packet)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/dnsparser.cc:354,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 365
      start: 352
    functionDepth: 0
    functionLinenumber: 352
    functionLinenumberEnd: 365
    functionName: MOADNSParser::hasEDNS
    functionSourceFile: /src/pdns/pdns/dnsparser.cc
    functionUses: 0
    functionsReached:
    - empty
    linkageType: ''
    returnType: bool
    signature: bool MOADNSParser::hasEDNS() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: reinterpret_cast<unsigned char*>
      Src: /src/pdns/pdns/dnsparser.cc:369,1
    - Dst: at
      Src: /src/pdns/pdns/dnsparser.cc:372,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsparser.cc:375,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsparser.cc:376,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsparser.cc:377,1
    - Dst: ntohl
      Src: /src/pdns/pdns/dnsparser.cc:378,1
    - Dst: size
      Src: /src/pdns/pdns/dnsparser.cc:382,1
    - Dst: size
      Src: /src/pdns/pdns/dnsparser.cc:382,1
    - Dst: std::out_of_range
      Src: /src/pdns/pdns/dnsparser.cc:383,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsparser.cc:383,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsparser.cc:383,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsparser.cc:383,1
    - Dst: size
      Src: /src/pdns/pdns/dnsparser.cc:383,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 1
    argNames:
    - ah
    argTypes:
    - struct dnsrecordheader
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 385
      start: 367
    functionDepth: 0
    functionLinenumber: 367
    functionLinenumberEnd: 385
    functionName: PacketReader::getDnsrecordheader
    functionSourceFile: /src/pdns/pdns/dnsparser.cc
    functionUses: 3
    functionsReached:
    - ntohl
    - std::out_of_range
    - std::to_string
    - ntohs
    - size
    - reinterpret_cast<unsigned char*>
    - at
    linkageType: ''
    returnType: void
    signature: void PacketReader::getDnsrecordheader(struct dnsrecordheader &ah)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsparser.cc:393,1
    - Dst: std::out_of_range
      Src: /src/pdns/pdns/dnsparser.cc:394,1
    - Dst: resize
      Src: /src/pdns/pdns/dnsparser.cc:397,1
    - Dst: at
      Src: /src/pdns/pdns/dnsparser.cc:400,1
    - Dst: at
      Src: /src/pdns/pdns/dnsparser.cc:400,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 2
    argNames:
    - ' dest'
    - len
    argTypes:
    - vector<unsigned char>
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 402
      start: 388
    functionDepth: 1
    functionLinenumber: 388
    functionLinenumberEnd: 402
    functionName: PacketReader::copyRecord
    functionSourceFile: /src/pdns/pdns/dnsparser.cc
    functionUses: 0
    functionsReached:
    - at
    - std::out_of_range
    - resize
    - size
    linkageType: ''
    returnType: void
    signature: void PacketReader::copyRecord(vector<unsigned char>& dest, uint16_t
      len)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsparser.cc:406,1
    - Dst: std::out_of_range
      Src: /src/pdns/pdns/dnsparser.cc:407,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsparser.cc:410,1
    - Dst: at
      Src: /src/pdns/pdns/dnsparser.cc:410,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - dest
    - len
    argTypes:
    - unsigned char*
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 412
      start: 404
    functionDepth: 0
    functionLinenumber: 404
    functionLinenumberEnd: 412
    functionName: PacketReader::copyRecord
    functionSourceFile: /src/pdns/pdns/dnsparser.cc
    functionUses: 0
    functionsReached:
    - memcpy
    - at
    - std::out_of_range
    - size
    linkageType: ''
    returnType: void
    signature: void PacketReader::copyRecord(unsigned char* dest, uint16_t len)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsparser.cc:416,1
    - Dst: std::out_of_range
      Src: /src/pdns/pdns/dnsparser.cc:417,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsparser.cc:419,1
    - Dst: at
      Src: /src/pdns/pdns/dnsparser.cc:419,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - ' ret'
    argTypes:
    - NodeOrLocatorID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 421
      start: 414
    functionDepth: 0
    functionLinenumber: 414
    functionLinenumberEnd: 421
    functionName: PacketReader::xfrNodeOrLocatorID
    functionSourceFile: /src/pdns/pdns/dnsparser.cc
    functionUses: 0
    functionsReached:
    - memcpy
    - at
    - std::out_of_range
    - size
    linkageType: ''
    returnType: void
    signature: void PacketReader::xfrNodeOrLocatorID(NodeOrLocatorID& ret)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnsparser.cc:426,1
    - Dst: at
      Src: /src/pdns/pdns/dnsparser.cc:426,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnsparser.cc:428,1
    - Dst: at
      Src: /src/pdns/pdns/dnsparser.cc:428,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnsparser.cc:430,1
    - Dst: at
      Src: /src/pdns/pdns/dnsparser.cc:430,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnsparser.cc:432,1
    - Dst: at
      Src: /src/pdns/pdns/dnsparser.cc:432,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnsparser.cc:434,1
    - Dst: at
      Src: /src/pdns/pdns/dnsparser.cc:434,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnsparser.cc:436,1
    - Dst: at
      Src: /src/pdns/pdns/dnsparser.cc:436,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 1
    argNames:
    - ' ret'
    argTypes:
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 437
      start: 423
    functionDepth: 0
    functionLinenumber: 423
    functionLinenumberEnd: 437
    functionName: PacketReader::xfr48BitInt
    functionSourceFile: /src/pdns/pdns/dnsparser.cc
    functionUses: 0
    functionsReached:
    - at
    - static_cast<uint8_t>
    linkageType: ''
    returnType: void
    signature: void PacketReader::xfr48BitInt(uint64_t& ret)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnsparser.cc:442,1
    - Dst: at
      Src: /src/pdns/pdns/dnsparser.cc:442,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnsparser.cc:444,1
    - Dst: at
      Src: /src/pdns/pdns/dnsparser.cc:444,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnsparser.cc:446,1
    - Dst: at
      Src: /src/pdns/pdns/dnsparser.cc:446,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnsparser.cc:448,1
    - Dst: at
      Src: /src/pdns/pdns/dnsparser.cc:448,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 451
      start: 439
    functionDepth: 0
    functionLinenumber: 439
    functionLinenumberEnd: 451
    functionName: PacketReader::get32BitInt
    functionSourceFile: /src/pdns/pdns/dnsparser.cc
    functionUses: 0
    functionsReached:
    - at
    - static_cast<uint8_t>
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t PacketReader::get32BitInt()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnsparser.cc:457,1
    - Dst: at
      Src: /src/pdns/pdns/dnsparser.cc:457,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnsparser.cc:459,1
    - Dst: at
      Src: /src/pdns/pdns/dnsparser.cc:459,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 462
      start: 454
    functionDepth: 0
    functionLinenumber: 454
    functionLinenumberEnd: 462
    functionName: PacketReader::get16BitInt
    functionSourceFile: /src/pdns/pdns/dnsparser.cc
    functionUses: 2
    functionsReached:
    - at
    - static_cast<uint8_t>
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t PacketReader::get16BitInt()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: at
      Src: /src/pdns/pdns/dnsparser.cc:466,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 467
      start: 464
    functionDepth: 0
    functionLinenumber: 464
    functionLinenumberEnd: 467
    functionName: PacketReader::get8BitInt
    functionSourceFile: /src/pdns/pdns/dnsparser.cc
    functionUses: 0
    functionsReached:
    - at
    linkageType: ''
    returnType: uint8_t
    signature: uint8_t PacketReader::get8BitInt()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: data
      Src: /src/pdns/pdns/dnsparser.cc:473,1
    - Dst: size
      Src: /src/pdns/pdns/dnsparser.cc:473,1
    - Dst: std::out_of_range
      Src: /src/pdns/pdns/dnsparser.cc:479,1
    - Dst: string
      Src: /src/pdns/pdns/dnsparser.cc:479,1
    - Dst: what
      Src: /src/pdns/pdns/dnsparser.cc:479,1
    - Dst: std::out_of_range
      Src: /src/pdns/pdns/dnsparser.cc:482,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/dnsparser.cc:484,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 485
      start: 469
    functionDepth: 0
    functionLinenumber: 469
    functionLinenumberEnd: 485
    functionName: PacketReader::getName
    functionSourceFile: /src/pdns/pdns/dnsparser.cc
    functionUses: 2
    functionsReached:
    - std::out_of_range
    - PDNSException
    - what
    - string
    - size
    - data
    linkageType: ''
    returnType: DNSName
    signature: DNSName PacketReader::getName()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<unsigned char>
      Src: /src/pdns/pdns/dnsparser.cc:494,1
    - Dst: snprintf
      Src: /src/pdns/pdns/dnsparser.cc:496,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/dnsparser.cc:496,1
    - Dst: std::array::size
      Src: /src/pdns/pdns/dnsparser.cc:496,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/dnsparser.cc:497,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 1
    argNames:
    - name
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 508
      start: 488
    functionDepth: 0
    functionLinenumber: 488
    functionLinenumberEnd: 508
    functionName: txtEscape
    functionSourceFile: /src/pdns/pdns/dnsparser.cc
    functionUses: 1
    functionsReached:
    - std::array::size
    - std::array::data
    - snprintf
    - static_cast<unsigned char>
    linkageType: ''
    returnType: string
    signature: string txtEscape(const string &name)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: string::reserve
      Src: /src/pdns/pdns/dnsparser.cc:514,1
    - Dst: string::empty
      Src: /src/pdns/pdns/dnsparser.cc:516,1
    - Dst: string::append
      Src: /src/pdns/pdns/dnsparser.cc:517,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnsparser.cc:521,1
    - Dst: at
      Src: /src/pdns/pdns/dnsparser.cc:521,1
    - Dst: std::out_of_range
      Src: /src/pdns/pdns/dnsparser.cc:529,1
    - Dst: string::append
      Src: /src/pdns/pdns/dnsparser.cc:532,1
    - Dst: at
      Src: /src/pdns/pdns/dnsparser.cc:534,1
    - Dst: at
      Src: /src/pdns/pdns/dnsparser.cc:534,1
    - Dst: string::append
      Src: /src/pdns/pdns/dnsparser.cc:535,1
    - Dst: txtEscape
      Src: /src/pdns/pdns/dnsparser.cc:535,1
    - Dst: string::append
      Src: /src/pdns/pdns/dnsparser.cc:537,1
    - Dst: string::empty
      Src: /src/pdns/pdns/dnsparser.cc:544,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 28
    argCount: 2
    argNames:
    - multi
    - lenField
    argTypes:
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 549
      start: 511
    functionDepth: 0
    functionLinenumber: 511
    functionLinenumberEnd: 549
    functionName: PacketReader::getText
    functionSourceFile: /src/pdns/pdns/dnsparser.cc
    functionUses: 0
    functionsReached:
    - string::reserve
    - std::out_of_range
    - string::empty
    - string::append
    - static_cast<uint8_t>
    - txtEscape
    - at
    linkageType: ''
    returnType: string
    signature: string PacketReader::getText(bool multi, bool lenField)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnsparser.cc:555,1
    - Dst: at
      Src: /src/pdns/pdns/dnsparser.cc:555,1
    - Dst: std::out_of_range
      Src: /src/pdns/pdns/dnsparser.cc:563,1
    - Dst: std::out_of_range
      Src: /src/pdns/pdns/dnsparser.cc:569,1
    - Dst: substr
      Src: /src/pdns/pdns/dnsparser.cc:577,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 1
    argNames:
    - lenField
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 580
      start: 551
    functionDepth: 0
    functionLinenumber: 551
    functionLinenumberEnd: 580
    functionName: PacketReader::getUnquotedText
    functionSourceFile: /src/pdns/pdns/dnsparser.cc
    functionUses: 0
    functionsReached:
    - std::out_of_range
    - substr
    - at
    - static_cast<uint8_t>
    linkageType: ''
    returnType: string
    signature: string PacketReader::getUnquotedText(bool lenField)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: std::out_of_range
      Src: /src/pdns/pdns/dnsparser.cc:587,1
    - Dst: assign
      Src: /src/pdns/pdns/dnsparser.cc:589,1
    - Dst: at
      Src: /src/pdns/pdns/dnsparser.cc:589,1
    - Dst: at
      Src: /src/pdns/pdns/dnsparser.cc:589,1
    - Dst: clear
      Src: /src/pdns/pdns/dnsparser.cc:592,1
    - Dst: std::out_of_range
      Src: /src/pdns/pdns/dnsparser.cc:599,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 1
    argNames:
    - ' blob'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 601
      start: 582
    functionDepth: 1
    functionLinenumber: 582
    functionLinenumberEnd: 601
    functionName: PacketReader::xfrBlob
    functionSourceFile: /src/pdns/pdns/dnsparser.cc
    functionUses: 1
    functionsReached:
    - clear
    - assign
    - std::out_of_range
    - at
    linkageType: ''
    returnType: void
    signature: void PacketReader::xfrBlob(string& blob)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PacketReader::xfrBlob
      Src: /src/pdns/pdns/dnsparser.cc:604,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' blob'
    - length
    argTypes:
    - string
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 605
      start: 603
    functionDepth: 0
    functionLinenumber: 603
    functionLinenumberEnd: 605
    functionName: PacketReader::xfrBlobNoSpaces
    functionSourceFile: /src/pdns/pdns/dnsparser.cc
    functionUses: 0
    functionsReached:
    - PacketReader::xfrBlob
    linkageType: ''
    returnType: void
    signature: void PacketReader::xfrBlobNoSpaces(string& blob, int length)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: std::out_of_range
      Src: /src/pdns/pdns/dnsparser.cc:611,1
    - Dst: std::out_of_range
      Src: /src/pdns/pdns/dnsparser.cc:615,1
    - Dst: assign
      Src: /src/pdns/pdns/dnsparser.cc:618,1
    - Dst: at
      Src: /src/pdns/pdns/dnsparser.cc:618,1
    - Dst: at
      Src: /src/pdns/pdns/dnsparser.cc:618,1
    - Dst: clear
      Src: /src/pdns/pdns/dnsparser.cc:623,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 2
    argNames:
    - ' blob'
    - length
    argTypes:
    - string
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 625
      start: 607
    functionDepth: 1
    functionLinenumber: 607
    functionLinenumberEnd: 625
    functionName: PacketReader::xfrBlob
    functionSourceFile: /src/pdns/pdns/dnsparser.cc
    functionUses: 2
    functionsReached:
    - clear
    - assign
    - std::out_of_range
    - at
    linkageType: ''
    returnType: void
    signature: void PacketReader::xfrBlob(string& blob, int length)
  - BBCount: 22
    BranchProfiles: []
    Callsites:
    - Dst: std::out_of_range
      Src: /src/pdns/pdns/dnsparser.cc:632,1
    - Dst: PacketReader::xfr16BitInt
      Src: /src/pdns/pdns/dnsparser.cc:635,1
    - Dst: std::out_of_range
      Src: /src/pdns/pdns/dnsparser.cc:638,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsparser.cc:638,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsparser.cc:638,1
    - Dst: static_cast<SvcParam::SvcParamKey>
      Src: /src/pdns/pdns/dnsparser.cc:642,1
    - Dst: PacketReader::xfr16BitInt
      Src: /src/pdns/pdns/dnsparser.cc:645,1
    - Dst: std::out_of_range
      Src: /src/pdns/pdns/dnsparser.cc:648,1
    - Dst: std::out_of_range
      Src: /src/pdns/pdns/dnsparser.cc:655,1
    - Dst: std::out_of_range
      Src: /src/pdns/pdns/dnsparser.cc:658,1
    - Dst: PacketReader::xfr16BitInt
      Src: /src/pdns/pdns/dnsparser.cc:664,1
    - Dst: std::set::insert
      Src: /src/pdns/pdns/dnsparser.cc:665,1
    - Dst: static_cast<SvcParam::SvcParamKey>
      Src: /src/pdns/pdns/dnsparser.cc:665,1
    - Dst: set<SvcParam>::insert
      Src: /src/pdns/pdns/dnsparser.cc:667,1
    - Dst: SvcParam
      Src: /src/pdns/pdns/dnsparser.cc:667,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsparser.cc:667,1
    - Dst: PacketReader::xfr8BitInt
      Src: /src/pdns/pdns/dnsparser.cc:676,1
    - Dst: std::out_of_range
      Src: /src/pdns/pdns/dnsparser.cc:678,1
    - Dst: std::out_of_range
      Src: /src/pdns/pdns/dnsparser.cc:681,1
    - Dst: PacketReader::xfrBlob
      Src: /src/pdns/pdns/dnsparser.cc:683,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/dnsparser.cc:684,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsparser.cc:684,1
    - Dst: set<SvcParam>::insert
      Src: /src/pdns/pdns/dnsparser.cc:686,1
    - Dst: SvcParam
      Src: /src/pdns/pdns/dnsparser.cc:686,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsparser.cc:686,1
    - Dst: std::out_of_range
      Src: /src/pdns/pdns/dnsparser.cc:692,1
    - Dst: SvcParam::keyToString
      Src: /src/pdns/pdns/dnsparser.cc:692,1
    - Dst: set<SvcParam>::insert
      Src: /src/pdns/pdns/dnsparser.cc:694,1
    - Dst: SvcParam
      Src: /src/pdns/pdns/dnsparser.cc:694,1
    - Dst: std::out_of_range
      Src: /src/pdns/pdns/dnsparser.cc:699,1
    - Dst: PacketReader::xfr16BitInt
      Src: /src/pdns/pdns/dnsparser.cc:702,1
    - Dst: set<SvcParam>::insert
      Src: /src/pdns/pdns/dnsparser.cc:703,1
    - Dst: SvcParam
      Src: /src/pdns/pdns/dnsparser.cc:703,1
    - Dst: std::out_of_range
      Src: /src/pdns/pdns/dnsparser.cc:710,1
    - Dst: SvcParam::keyToString
      Src: /src/pdns/pdns/dnsparser.cc:710,1
    - Dst: PacketReader::xfrCAWithoutPort
      Src: /src/pdns/pdns/dnsparser.cc:717,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/dnsparser.cc:718,1
    - Dst: SvcParam
      Src: /src/pdns/pdns/dnsparser.cc:724,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsparser.cc:724,1
    - Dst: auto::setAutoHint
      Src: /src/pdns/pdns/dnsparser.cc:725,1
    - Dst: set<SvcParam>::insert
      Src: /src/pdns/pdns/dnsparser.cc:726,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsparser.cc:726,1
    - Dst: std::string::reserve
      Src: /src/pdns/pdns/dnsparser.cc:731,1
    - Dst: PacketReader::xfrBlobNoSpaces
      Src: /src/pdns/pdns/dnsparser.cc:732,1
    - Dst: set<SvcParam>::insert
      Src: /src/pdns/pdns/dnsparser.cc:733,1
    - Dst: SvcParam
      Src: /src/pdns/pdns/dnsparser.cc:733,1
    - Dst: std::out_of_range
      Src: /src/pdns/pdns/dnsparser.cc:738,1
    - Dst: SvcParam::keyToString
      Src: /src/pdns/pdns/dnsparser.cc:738,1
    - Dst: vector::reserve
      Src: /src/pdns/pdns/dnsparser.cc:741,1
    - Dst: PacketReader::xfr16BitInt
      Src: /src/pdns/pdns/dnsparser.cc:746,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/dnsparser.cc:747,1
    - Dst: SvcParam
      Src: /src/pdns/pdns/dnsparser.cc:749,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsparser.cc:749,1
    - Dst: set<SvcParam>::insert
      Src: /src/pdns/pdns/dnsparser.cc:750,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsparser.cc:750,1
    - Dst: std::string::reserve
      Src: /src/pdns/pdns/dnsparser.cc:755,1
    - Dst: PacketReader::xfrBlob
      Src: /src/pdns/pdns/dnsparser.cc:756,1
    - Dst: set<SvcParam>::insert
      Src: /src/pdns/pdns/dnsparser.cc:757,1
    - Dst: SvcParam
      Src: /src/pdns/pdns/dnsparser.cc:757,1
    CyclomaticComplexity: 37
    EdgeCount: 37
    ICount: 99
    argCount: 1
    argNames:
    - kvs
    argTypes:
    - set<SvcParam>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 762
      start: 627
    functionDepth: 1
    functionLinenumber: 627
    functionLinenumberEnd: 762
    functionName: PacketReader::xfrSvcParamKeyVals
    functionSourceFile: /src/pdns/pdns/dnsparser.cc
    functionUses: 5
    functionsReached:
    - std::vector::push_back
    - std::move
    - vector::push_back
    - std::out_of_range
    - std::to_string
    - PacketReader::xfr8BitInt
    - PacketReader::xfrBlob
    - set<SvcParam>::insert
    - static_cast<SvcParam::SvcParamKey>
    - SvcParam
    - PacketReader::xfrCAWithoutPort
    - auto::setAutoHint
    - std::string::reserve
    - PacketReader::xfrBlobNoSpaces
    - std::set::insert
    - vector::reserve
    - SvcParam::keyToString
    - PacketReader::xfr16BitInt
    linkageType: ''
    returnType: void
    signature: void PacketReader::xfrSvcParamKeyVals(set<SvcParam> &kvs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PacketReader::xfrBlob
      Src: /src/pdns/pdns/dnsparser.cc:767,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' blob'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 768
      start: 765
    functionDepth: 0
    functionLinenumber: 765
    functionLinenumberEnd: 768
    functionName: PacketReader::xfrHexBlob
    functionSourceFile: /src/pdns/pdns/dnsparser.cc
    functionUses: 0
    functionsReached:
    - PacketReader::xfrBlob
    linkageType: ''
    returnType: void
    signature: void PacketReader::xfrHexBlob(string& blob, bool /* keepReading */)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strchr
      Src: /src/pdns/pdns/dnsparser.cc:775,1
    - Dst: string::c_str
      Src: /src/pdns/pdns/dnsparser.cc:775,1
    - Dst: boost::replace_all
      Src: /src/pdns/pdns/dnsparser.cc:776,1
    - Dst: boost::replace_all
      Src: /src/pdns/pdns/dnsparser.cc:777,1
    - Dst: boost::replace_all
      Src: /src/pdns/pdns/dnsparser.cc:778,1
    - Dst: vstringtok
      Src: /src/pdns/pdns/dnsparser.cc:782,1
    - Dst: string::reserve
      Src: /src/pdns/pdns/dnsparser.cc:784,1
    - Dst: string::size
      Src: /src/pdns/pdns/dnsparser.cc:784,1
    - Dst: empty
      Src: /src/pdns/pdns/dnsparser.cc:786,1
    - Dst: strncasecmp
      Src: /src/pdns/pdns/dnsparser.cc:786,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsparser.cc:786,1
    - Dst: string::c_str
      Src: /src/pdns/pdns/dnsparser.cc:786,1
    - Dst: string::length
      Src: /src/pdns/pdns/dnsparser.cc:786,1
    - Dst: string::append
      Src: /src/pdns/pdns/dnsparser.cc:788,1
    - Dst: string::append
      Src: /src/pdns/pdns/dnsparser.cc:791,1
    - Dst: string::append
      Src: /src/pdns/pdns/dnsparser.cc:792,1
    - Dst: string::c_str
      Src: /src/pdns/pdns/dnsparser.cc:792,1
    - Dst: string::append
      Src: /src/pdns/pdns/dnsparser.cc:794,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 2
    argNames:
    - ' elabel'
    - ' root'
    argTypes:
    - string
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 796
      start: 771
    functionDepth: 0
    functionLinenumber: 771
    functionLinenumberEnd: 796
    functionName: simpleCompress
    functionSourceFile: /src/pdns/pdns/dnsparser.cc
    functionUses: 0
    functionsReached:
    - string::c_str
    - string::reserve
    - string::size
    - c_str
    - string::append
    - strncasecmp
    - boost::replace_all
    - strchr
    - vstringtok
    - empty
    - string::length
    linkageType: ''
    returnType: string
    signature: string simpleCompress(const string& elabel, const string& root)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsparser.cc:806,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsparser.cc:807,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsparser.cc:807,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsparser.cc:807,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsparser.cc:811,1
    - Dst: DNSPacketMangler::skipDomainName
      Src: /src/pdns/pdns/dnsparser.cc:812,1
    - Dst: DNSPacketMangler::skipBytes
      Src: /src/pdns/pdns/dnsparser.cc:814,1
    - Dst: DNSPacketMangler::skipDomainName
      Src: /src/pdns/pdns/dnsparser.cc:818,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsparser.cc:820,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsparser.cc:820,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsparser.cc:820,1
    - Dst: DNSPacketMangler::get16BitInt
      Src: /src/pdns/pdns/dnsparser.cc:821,1
    - Dst: DNSPacketMangler::get16BitInt
      Src: /src/pdns/pdns/dnsparser.cc:822,1
    - Dst: DNSPacketMangler::get32BitInt
      Src: /src/pdns/pdns/dnsparser.cc:827,1
    - Dst: visitor
      Src: /src/pdns/pdns/dnsparser.cc:828,1
    - Dst: DNSPacketMangler::rewindBytes
      Src: /src/pdns/pdns/dnsparser.cc:830,1
    - Dst: DNSPacketMangler::setAndSkip32BitInt
      Src: /src/pdns/pdns/dnsparser.cc:831,1
    - Dst: DNSPacketMangler::skipRData
      Src: /src/pdns/pdns/dnsparser.cc:833,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 22
    argCount: 3
    argNames:
    - packet
    - length
    - ' visitor'
    argTypes:
    - char*
    - size_t
    - std::function<uint32_t(uint8_t, uint16_t, uint16_t, uint32_t)>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 840
      start: 799
    functionDepth: 1
    functionLinenumber: 799
    functionLinenumberEnd: 840
    functionName: editDNSPacketTTL
    functionSourceFile: /src/pdns/pdns/dnsparser.cc
    functionUses: 1
    functionsReached:
    - DNSPacketMangler::skipDomainName
    - memcpy
    - DNSPacketMangler::get32BitInt
    - DNSPacketMangler::skipBytes
    - ntohs
    - visitor
    - DNSPacketMangler::setAndSkip32BitInt
    - DNSPacketMangler::rewindBytes
    - DNSPacketMangler::skipRData
    - DNSPacketMangler::get16BitInt
    linkageType: ''
    returnType: void
    signature: void editDNSPacketTTL(char* packet, size_t length, const std::function<uint32_t(uint8_t,
      uint16_t, uint16_t, uint32_t)>& visitor)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsparser.cc:844,1
    - Dst: data
      Src: /src/pdns/pdns/dnsparser.cc:850,1
    - Dst: const_cast<char*>
      Src: /src/pdns/pdns/dnsparser.cc:851,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsparser.cc:851,1
    - Dst: data
      Src: /src/pdns/pdns/dnsparser.cc:851,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsparser.cc:853,1
    - Dst: DNSPacketMangler::skipDomainName
      Src: /src/pdns/pdns/dnsparser.cc:855,1
    - Dst: DNSPacketMangler::skipBytes
      Src: /src/pdns/pdns/dnsparser.cc:857,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/dnsparser.cc:859,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsparser.cc:859,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsparser.cc:859,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsparser.cc:859,1
    - Dst: DNSPacketMangler::skipDomainName
      Src: /src/pdns/pdns/dnsparser.cc:861,1
    - Dst: DNSPacketMangler::get16BitInt
      Src: /src/pdns/pdns/dnsparser.cc:862,1
    - Dst: DNSPacketMangler::get16BitInt
      Src: /src/pdns/pdns/dnsparser.cc:863,1
    - Dst: count
      Src: /src/pdns/pdns/dnsparser.cc:864,1
    - Dst: DNSPacketMangler::skipBytes
      Src: /src/pdns/pdns/dnsparser.cc:868,1
    - Dst: DNSPacketMangler::skipRData
      Src: /src/pdns/pdns/dnsparser.cc:869,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    argCount: 2
    argNames:
    - ' packet'
    - ' qtypes'
    argTypes:
    - PacketBuffer
    - std::unordered_set<QType>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 876
      start: 842
    functionDepth: 0
    functionLinenumber: 842
    functionLinenumberEnd: 876
    functionName: checkIfPacketContainsRecords
    functionSourceFile: /src/pdns/pdns/dnsparser.cc
    functionUses: 0
    functionsReached:
    - DNSPacketMangler::skipDomainName
    - static_cast<size_t>
    - const_cast<char*>
    - DNSPacketMangler::skipBytes
    - ntohs
    - count
    - size
    - DNSPacketMangler::skipRData
    - reinterpret_cast<const char*>
    - data
    - DNSPacketMangler::get16BitInt
    linkageType: ''
    returnType: bool
    signature: bool checkIfPacketContainsRecords(const PacketBuffer& packet, const
      std::unordered_set<QType>& qtypes)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsparser.cc:882,1
    - Dst: data
      Src: /src/pdns/pdns/dnsparser.cc:886,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsparser.cc:888,1
    - Dst: std::string_view
      Src: /src/pdns/pdns/dnsparser.cc:890,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsparser.cc:890,1
    - Dst: data
      Src: /src/pdns/pdns/dnsparser.cc:890,1
    - Dst: size
      Src: /src/pdns/pdns/dnsparser.cc:890,1
    - Dst: DNSName::DNSName
      Src: /src/pdns/pdns/dnsparser.cc:895,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsparser.cc:896,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsparser.cc:897,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsparser.cc:898,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsparser.cc:899,1
    - Dst: PacketReader::getName
      Src: /src/pdns/pdns/dnsparser.cc:905,1
    - Dst: PacketReader::get16BitInt
      Src: /src/pdns/pdns/dnsparser.cc:906,1
    - Dst: PacketReader::get16BitInt
      Src: /src/pdns/pdns/dnsparser.cc:907,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsparser.cc:910,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsparser.cc:911,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsparser.cc:912,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsparser.cc:913,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsparser.cc:914,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsparser.cc:915,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsparser.cc:916,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsparser.cc:917,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsparser.cc:918,1
    - Dst: PacketReader::getName
      Src: /src/pdns/pdns/dnsparser.cc:923,1
    - Dst: PacketReader::get16BitInt
      Src: /src/pdns/pdns/dnsparser.cc:924,1
    - Dst: PacketReader::get16BitInt
      Src: /src/pdns/pdns/dnsparser.cc:925,1
    - Dst: PacketReader::getName
      Src: /src/pdns/pdns/dnsparser.cc:933,1
    - Dst: PacketReader::getDnsrecordheader
      Src: /src/pdns/pdns/dnsparser.cc:934,1
    - Dst: PacketReader::xfrBlob
      Src: /src/pdns/pdns/dnsparser.cc:935,1
    - Dst: find
      Src: /src/pdns/pdns/dnsparser.cc:937,1
    - Dst: end
      Src: /src/pdns/pdns/dnsparser.cc:937,1
    - Dst: find
      Src: /src/pdns/pdns/dnsparser.cc:939,1
    - Dst: end
      Src: /src/pdns/pdns/dnsparser.cc:939,1
    - Dst: clear
      Src: /src/pdns/pdns/dnsparser.cc:941,1
    - Dst: GenericDNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsparser.cc:944,1
    - Dst: GenericDNSPacketWriter::xfrBlob
      Src: /src/pdns/pdns/dnsparser.cc:945,1
    - Dst: PacketReader::getName
      Src: /src/pdns/pdns/dnsparser.cc:951,1
    - Dst: PacketReader::getDnsrecordheader
      Src: /src/pdns/pdns/dnsparser.cc:952,1
    - Dst: PacketReader::xfrBlob
      Src: /src/pdns/pdns/dnsparser.cc:953,1
    - Dst: find
      Src: /src/pdns/pdns/dnsparser.cc:955,1
    - Dst: end
      Src: /src/pdns/pdns/dnsparser.cc:955,1
    - Dst: find
      Src: /src/pdns/pdns/dnsparser.cc:956,1
    - Dst: end
      Src: /src/pdns/pdns/dnsparser.cc:956,1
    - Dst: clear
      Src: /src/pdns/pdns/dnsparser.cc:958,1
    - Dst: GenericDNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsparser.cc:961,1
    - Dst: GenericDNSPacketWriter::xfrBlob
      Src: /src/pdns/pdns/dnsparser.cc:962,1
    - Dst: PacketReader::getName
      Src: /src/pdns/pdns/dnsparser.cc:967,1
    - Dst: PacketReader::getDnsrecordheader
      Src: /src/pdns/pdns/dnsparser.cc:968,1
    - Dst: PacketReader::xfrBlob
      Src: /src/pdns/pdns/dnsparser.cc:969,1
    - Dst: find
      Src: /src/pdns/pdns/dnsparser.cc:971,1
    - Dst: end
      Src: /src/pdns/pdns/dnsparser.cc:971,1
    - Dst: find
      Src: /src/pdns/pdns/dnsparser.cc:972,1
    - Dst: end
      Src: /src/pdns/pdns/dnsparser.cc:972,1
    - Dst: clear
      Src: /src/pdns/pdns/dnsparser.cc:974,1
    - Dst: GenericDNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsparser.cc:977,1
    - Dst: GenericDNSPacketWriter::xfrBlob
      Src: /src/pdns/pdns/dnsparser.cc:978,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsparser.cc:981,1
    - Dst: clear
      Src: /src/pdns/pdns/dnsparser.cc:986,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 73
    argCount: 3
    argNames:
    - ' initialPacket'
    - ' newContent'
    - ' qtypes'
    argTypes:
    - PacketBuffer
    - PacketBuffer
    - std::unordered_set<QType>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 990
      start: 878
    functionDepth: 1
    functionLinenumber: 878
    functionLinenumberEnd: 990
    functionName: rewritePacketWithoutRecordTypes
    functionSourceFile: /src/pdns/pdns/dnsparser.cc
    functionUses: 0
    functionsReached:
    - PacketReader::getName
    - PacketReader::xfrBlob
    - ntohs
    - GenericDNSPacketWriter::startRecord
    - std::string_view
    - GenericDNSPacketWriter::getHeader
    - end
    - size
    - PacketReader::get16BitInt
    - GenericDNSPacketWriter::commit
    - reinterpret_cast<const char*>
    - PacketReader::getDnsrecordheader
    - GenericDNSPacketWriter::xfrBlob
    - clear
    - data
    - DNSName::DNSName
    - find
    linkageType: ''
    returnType: int
    signature: int rewritePacketWithoutRecordTypes(const PacketBuffer& initialPacket,
      PacketBuffer& newContent, const std::unordered_set<QType>& qtypes)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: clearDNSPacketRecordTypes
      Src: /src/pdns/pdns/dnsparser.cc:994,1
    - Dst: reinterpret_cast<PacketBuffer&>
      Src: /src/pdns/pdns/dnsparser.cc:994,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' packet'
    - ' qtypes'
    argTypes:
    - vector<uint8_t>
    - std::unordered_set<QType>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 995
      start: 992
    functionDepth: 0
    functionLinenumber: 992
    functionLinenumberEnd: 995
    functionName: clearDNSPacketRecordTypes
    functionSourceFile: /src/pdns/pdns/dnsparser.cc
    functionUses: 3
    functionsReached:
    - clearDNSPacketRecordTypes
    - reinterpret_cast<PacketBuffer&>
    linkageType: ''
    returnType: void
    signature: void clearDNSPacketRecordTypes(vector<uint8_t>& packet, const std::unordered_set<QType>&
      qtypes)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: checkIfPacketContainsRecords
      Src: /src/pdns/pdns/dnsparser.cc:999,1
    - Dst: rewritePacketWithoutRecordTypes
      Src: /src/pdns/pdns/dnsparser.cc:1005,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsparser.cc:1007,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - ' packet'
    - ' qtypes'
    argTypes:
    - PacketBuffer
    - std::unordered_set<QType>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1009
      start: 997
    functionDepth: 0
    functionLinenumber: 997
    functionLinenumberEnd: 1009
    functionName: clearDNSPacketRecordTypes
    functionSourceFile: /src/pdns/pdns/dnsparser.cc
    functionUses: 3
    functionsReached:
    - checkIfPacketContainsRecords
    - rewritePacketWithoutRecordTypes
    - std::move
    linkageType: ''
    returnType: void
    signature: void clearDNSPacketRecordTypes(PacketBuffer& packet, const std::unordered_set<QType>&
      qtypes)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: get
      Src: /src/pdns/pdns/dnsparser.cc:1018,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsparser.cc:1019,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsparser.cc:1020,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsparser.cc:1020,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsparser.cc:1020,1
    - Dst: DNSPacketMangler::skipDomainName
      Src: /src/pdns/pdns/dnsparser.cc:1024,1
    - Dst: DNSPacketMangler::skipBytes
      Src: /src/pdns/pdns/dnsparser.cc:1026,1
    - Dst: DNSPacketMangler::skipDomainName
      Src: /src/pdns/pdns/dnsparser.cc:1030,1
    - Dst: DNSPacketMangler::get16BitInt
      Src: /src/pdns/pdns/dnsparser.cc:1032,1
    - Dst: DNSPacketMangler::skipBytes
      Src: /src/pdns/pdns/dnsparser.cc:1034,1
    - Dst: DNSPacketMangler::decreaseAndSkip32BitInt
      Src: /src/pdns/pdns/dnsparser.cc:1037,1
    - Dst: DNSPacketMangler::skipBytes
      Src: /src/pdns/pdns/dnsparser.cc:1039,1
    - Dst: DNSPacketMangler::skipRData
      Src: /src/pdns/pdns/dnsparser.cc:1041,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 21
    argCount: 4
    argNames:
    - packet
    - length
    - seconds
    - ' aligned_dh'
    argTypes:
    - char*
    - size_t
    - uint32_t
    - dnsheader_aligned
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1046
      start: 1012
    functionDepth: 0
    functionLinenumber: 1012
    functionLinenumberEnd: 1046
    functionName: ageDNSPacket
    functionSourceFile: /src/pdns/pdns/dnsparser.cc
    functionUses: 1
    functionsReached:
    - DNSPacketMangler::skipDomainName
    - DNSPacketMangler::skipBytes
    - ntohs
    - DNSPacketMangler::decreaseAndSkip32BitInt
    - get
    - DNSPacketMangler::skipRData
    - DNSPacketMangler::get16BitInt
    linkageType: ''
    returnType: void
    signature: void ageDNSPacket(char* packet, size_t length, uint32_t seconds, const
      dnsheader_aligned& aligned_dh)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ageDNSPacket
      Src: /src/pdns/pdns/dnsparser.cc:1050,1
    - Dst: data
      Src: /src/pdns/pdns/dnsparser.cc:1050,1
    - Dst: length
      Src: /src/pdns/pdns/dnsparser.cc:1050,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' packet'
    - seconds
    - ' aligned_dh'
    argTypes:
    - std::string
    - uint32_t
    - dnsheader_aligned
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1051
      start: 1048
    functionDepth: 0
    functionLinenumber: 1048
    functionLinenumberEnd: 1051
    functionName: ageDNSPacket
    functionSourceFile: /src/pdns/pdns/dnsparser.cc
    functionUses: 2
    functionsReached:
    - ageDNSPacket
    - length
    - data
    linkageType: ''
    returnType: void
    signature: void ageDNSPacket(std::string& packet, uint32_t seconds, const dnsheader_aligned&
      aligned_dh)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: get
      Src: /src/pdns/pdns/dnsparser.cc:1059,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsparser.cc:1060,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsparser.cc:1068,1
    - Dst: DNSPacketMangler::skipDomainName
      Src: /src/pdns/pdns/dnsparser.cc:1071,1
    - Dst: DNSPacketMangler::skipBytes
      Src: /src/pdns/pdns/dnsparser.cc:1073,1
    - Dst: std::vector::reserve
      Src: /src/pdns/pdns/dnsparser.cc:1080,1
    - Dst: DNSPacketMangler::getOffset
      Src: /src/pdns/pdns/dnsparser.cc:1083,1
    - Dst: DNSPacketMangler::skipDomainName
      Src: /src/pdns/pdns/dnsparser.cc:1084,1
    - Dst: DNSPacketMangler::get16BitInt
      Src: /src/pdns/pdns/dnsparser.cc:1085,1
    - Dst: std::vector::empty
      Src: /src/pdns/pdns/dnsparser.cc:1087,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsparser.cc:1089,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsparser.cc:1094,1
    - Dst: DNSPacketMangler::skipBytes
      Src: /src/pdns/pdns/dnsparser.cc:1099,1
    - Dst: DNSPacketMangler::skipBytes
      Src: /src/pdns/pdns/dnsparser.cc:1102,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/dnsparser.cc:1103,1
    - Dst: DNSPacketMangler::skipRDataAndReturnOffsets
      Src: /src/pdns/pdns/dnsparser.cc:1103,1
    - Dst: std::vector::empty
      Src: /src/pdns/pdns/dnsparser.cc:1105,1
    - Dst: DNSPacketMangler::skipBytes
      Src: /src/pdns/pdns/dnsparser.cc:1109,1
    - Dst: DNSPacketMangler::skipBytes
      Src: /src/pdns/pdns/dnsparser.cc:1112,1
    - Dst: DNSPacketMangler::skipRData
      Src: /src/pdns/pdns/dnsparser.cc:1113,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/dnsparser.cc:1117,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/dnsparser.cc:1122,1
    - Dst: dist
      Src: /src/pdns/pdns/dnsparser.cc:1123,1
    - Dst: uid::param_type
      Src: /src/pdns/pdns/dnsparser.cc:1123,1
    - Dst: DNSPacketMangler::swapInPlace
      Src: /src/pdns/pdns/dnsparser.cc:1125,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsparser.cc:1125,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsparser.cc:1125,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 48
    argCount: 3
    argNames:
    - packet
    - length
    - ' aligned_dh'
    argTypes:
    - char*
    - size_t
    - dnsheader_aligned
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1132
      start: 1053
    functionDepth: 0
    functionLinenumber: 1053
    functionLinenumberEnd: 1132
    functionName: shuffleDNSPacket
    functionSourceFile: /src/pdns/pdns/dnsparser.cc
    functionUses: 0
    functionsReached:
    - DNSPacketMangler::skipDomainName
    - std::vector::push_back
    - DNSPacketMangler::skipRDataAndReturnOffsets
    - std::vector::size
    - DNSPacketMangler::skipBytes
    - ntohs
    - DNSPacketMangler::swapInPlace
    - DNSName
    - get
    - std::vector::reserve
    - DNSPacketMangler::skipRData
    - uid::param_type
    - std::vector::at
    - DNSPacketMangler::get16BitInt
    - DNSPacketMangler::getOffset
    - dist
    - std::vector::empty
    linkageType: ''
    returnType: void
    signature: void shuffleDNSPacket(char* packet, size_t length, const dnsheader_aligned&
      aligned_dh)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsparser.cc:1136,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsparser.cc:1145,1
    - Dst: DNSPacketMangler::skipDomainName
      Src: /src/pdns/pdns/dnsparser.cc:1147,1
    - Dst: DNSPacketMangler::skipBytes
      Src: /src/pdns/pdns/dnsparser.cc:1149,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsparser.cc:1151,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsparser.cc:1151,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsparser.cc:1151,1
    - Dst: DNSPacketMangler::skipDomainName
      Src: /src/pdns/pdns/dnsparser.cc:1153,1
    - Dst: DNSPacketMangler::get16BitInt
      Src: /src/pdns/pdns/dnsparser.cc:1154,1
    - Dst: DNSPacketMangler::get16BitInt
      Src: /src/pdns/pdns/dnsparser.cc:1156,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsparser.cc:1163,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsparser.cc:1163,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsparser.cc:1163,1
    - Dst: DNSPacketMangler::get32BitInt
      Src: /src/pdns/pdns/dnsparser.cc:1167,1
    - Dst: std::min
      Src: /src/pdns/pdns/dnsparser.cc:1168,1
    - Dst: DNSPacketMangler::skipRData
      Src: /src/pdns/pdns/dnsparser.cc:1170,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 23
    argCount: 3
    argNames:
    - packet
    - length
    - seenAuthSOA
    argTypes:
    - char*
    - size_t
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1177
      start: 1134
    functionDepth: 0
    functionLinenumber: 1134
    functionLinenumberEnd: 1177
    functionName: getDNSPacketMinTTL
    functionSourceFile: /src/pdns/pdns/dnsparser.cc
    functionUses: 1
    functionsReached:
    - DNSPacketMangler::skipDomainName
    - pdns::max
    - DNSPacketMangler::get32BitInt
    - DNSPacketMangler::skipBytes
    - ntohs
    - std::min
    - DNSPacketMangler::skipRData
    - DNSPacketMangler::get16BitInt
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t getDNSPacketMinTTL(const char* packet, size_t length, bool*
      seenAuthSOA)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsparser.cc:1190,1
    - Dst: DNSPacketMangler::skipDomainName
      Src: /src/pdns/pdns/dnsparser.cc:1192,1
    - Dst: DNSPacketMangler::skipBytes
      Src: /src/pdns/pdns/dnsparser.cc:1194,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsparser.cc:1196,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsparser.cc:1196,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsparser.cc:1196,1
    - Dst: DNSPacketMangler::skipDomainName
      Src: /src/pdns/pdns/dnsparser.cc:1198,1
    - Dst: DNSPacketMangler::skipBytes
      Src: /src/pdns/pdns/dnsparser.cc:1200,1
    - Dst: DNSPacketMangler::skipRData
      Src: /src/pdns/pdns/dnsparser.cc:1201,1
    - Dst: DNSPacketMangler::getOffset
      Src: /src/pdns/pdns/dnsparser.cc:1203,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 2
    argNames:
    - packet
    - length
    argTypes:
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1209
      start: 1179
    functionDepth: 0
    functionLinenumber: 1179
    functionLinenumberEnd: 1209
    functionName: getDNSPacketLength
    functionSourceFile: /src/pdns/pdns/dnsparser.cc
    functionUses: 1
    functionsReached:
    - DNSPacketMangler::skipDomainName
    - DNSPacketMangler::skipBytes
    - ntohs
    - DNSPacketMangler::skipRData
    - DNSPacketMangler::getOffset
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t getDNSPacketLength(const char* packet, size_t length)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsparser.cc:1222,1
    - Dst: DNSPacketMangler::skipDomainName
      Src: /src/pdns/pdns/dnsparser.cc:1224,1
    - Dst: DNSPacketMangler::get16BitInt
      Src: /src/pdns/pdns/dnsparser.cc:1226,1
    - Dst: DNSPacketMangler::skipBytes
      Src: /src/pdns/pdns/dnsparser.cc:1231,1
    - Dst: DNSPacketMangler::skipBytes
      Src: /src/pdns/pdns/dnsparser.cc:1234,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsparser.cc:1237,1
    - Dst: DNSPacketMangler::skipDomainName
      Src: /src/pdns/pdns/dnsparser.cc:1239,1
    - Dst: DNSPacketMangler::get16BitInt
      Src: /src/pdns/pdns/dnsparser.cc:1241,1
    - Dst: DNSPacketMangler::skipBytes
      Src: /src/pdns/pdns/dnsparser.cc:1246,1
    - Dst: DNSPacketMangler::skipBytes
      Src: /src/pdns/pdns/dnsparser.cc:1249,1
    - Dst: DNSPacketMangler::skipBytes
      Src: /src/pdns/pdns/dnsparser.cc:1252,1
    - Dst: DNSPacketMangler::skipRData
      Src: /src/pdns/pdns/dnsparser.cc:1253,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsparser.cc:1255,1
    - Dst: DNSPacketMangler::skipDomainName
      Src: /src/pdns/pdns/dnsparser.cc:1257,1
    - Dst: DNSPacketMangler::get16BitInt
      Src: /src/pdns/pdns/dnsparser.cc:1259,1
    - Dst: DNSPacketMangler::skipBytes
      Src: /src/pdns/pdns/dnsparser.cc:1264,1
    - Dst: DNSPacketMangler::skipBytes
      Src: /src/pdns/pdns/dnsparser.cc:1267,1
    - Dst: DNSPacketMangler::skipBytes
      Src: /src/pdns/pdns/dnsparser.cc:1270,1
    - Dst: DNSPacketMangler::skipRData
      Src: /src/pdns/pdns/dnsparser.cc:1271,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsparser.cc:1273,1
    - Dst: DNSPacketMangler::skipDomainName
      Src: /src/pdns/pdns/dnsparser.cc:1275,1
    - Dst: DNSPacketMangler::get16BitInt
      Src: /src/pdns/pdns/dnsparser.cc:1277,1
    - Dst: DNSPacketMangler::skipBytes
      Src: /src/pdns/pdns/dnsparser.cc:1282,1
    - Dst: DNSPacketMangler::skipBytes
      Src: /src/pdns/pdns/dnsparser.cc:1285,1
    - Dst: DNSPacketMangler::skipBytes
      Src: /src/pdns/pdns/dnsparser.cc:1288,1
    - Dst: DNSPacketMangler::skipRData
      Src: /src/pdns/pdns/dnsparser.cc:1289,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 58
    argCount: 4
    argNames:
    - packet
    - length
    - section
    - type
    argTypes:
    - char*
    - size_t
    - uint8_t
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1296
      start: 1211
    functionDepth: 0
    functionLinenumber: 1211
    functionLinenumberEnd: 1296
    functionName: getRecordsOfTypeCount
    functionSourceFile: /src/pdns/pdns/dnsparser.cc
    functionUses: 3
    functionsReached:
    - DNSPacketMangler::skipDomainName
    - DNSPacketMangler::skipBytes
    - ntohs
    - DNSPacketMangler::skipRData
    - DNSPacketMangler::get16BitInt
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t getRecordsOfTypeCount(const char* packet, size_t length, uint8_t
      section, uint16_t type)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsparser.cc:1317,1
    - Dst: DNSPacketMangler::skipDomainName
      Src: /src/pdns/pdns/dnsparser.cc:1319,1
    - Dst: DNSPacketMangler::skipBytes
      Src: /src/pdns/pdns/dnsparser.cc:1321,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsparser.cc:1323,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsparser.cc:1323,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsparser.cc:1323,1
    - Dst: DNSPacketMangler::skipDomainName
      Src: /src/pdns/pdns/dnsparser.cc:1325,1
    - Dst: DNSPacketMangler::get16BitInt
      Src: /src/pdns/pdns/dnsparser.cc:1326,1
    - Dst: DNSPacketMangler::get16BitInt
      Src: /src/pdns/pdns/dnsparser.cc:1329,1
    - Dst: DNSPacketMangler::skipBytes
      Src: /src/pdns/pdns/dnsparser.cc:1331,1
    - Dst: DNSPacketMangler::get16BitInt
      Src: /src/pdns/pdns/dnsparser.cc:1332,1
    - Dst: DNSPacketMangler::skipBytes
      Src: /src/pdns/pdns/dnsparser.cc:1337,1
    - Dst: DNSPacketMangler::skipBytes
      Src: /src/pdns/pdns/dnsparser.cc:1339,1
    - Dst: DNSPacketMangler::skipRData
      Src: /src/pdns/pdns/dnsparser.cc:1340,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 29
    argCount: 4
    argNames:
    - packet
    - length
    - payloadSize
    - z
    argTypes:
    - char*
    - size_t
    - uint16_t*
    - uint16_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1348
      start: 1298
    functionDepth: 0
    functionLinenumber: 1298
    functionLinenumberEnd: 1348
    functionName: getEDNSUDPPayloadSizeAndZ
    functionSourceFile: /src/pdns/pdns/dnsparser.cc
    functionUses: 1
    functionsReached:
    - DNSPacketMangler::skipDomainName
    - DNSPacketMangler::skipBytes
    - ntohs
    - DNSPacketMangler::skipRData
    - DNSPacketMangler::get16BitInt
    linkageType: ''
    returnType: bool
    signature: bool getEDNSUDPPayloadSizeAndZ(const char* packet, size_t length, uint16_t*
      payloadSize, uint16_t* z)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsparser.cc:1352,1
    - Dst: data
      Src: /src/pdns/pdns/dnsparser.cc:1358,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsparser.cc:1359,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsparser.cc:1359,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsparser.cc:1359,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsparser.cc:1363,1
    - Dst: PacketReader::getName
      Src: /src/pdns/pdns/dnsparser.cc:1364,1
    - Dst: PacketReader::skip
      Src: /src/pdns/pdns/dnsparser.cc:1366,1
    - Dst: PacketReader::getName
      Src: /src/pdns/pdns/dnsparser.cc:1370,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsparser.cc:1372,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsparser.cc:1372,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsparser.cc:1372,1
    - Dst: PacketReader::get16BitInt
      Src: /src/pdns/pdns/dnsparser.cc:1373,1
    - Dst: PacketReader::get16BitInt
      Src: /src/pdns/pdns/dnsparser.cc:1374,1
    - Dst: PacketReader::get32BitInt
      Src: /src/pdns/pdns/dnsparser.cc:1381,1
    - Dst: PacketReader::get16BitInt
      Src: /src/pdns/pdns/dnsparser.cc:1382,1
    - Dst: PacketReader::getPosition
      Src: /src/pdns/pdns/dnsparser.cc:1383,1
    - Dst: PacketReader::skip
      Src: /src/pdns/pdns/dnsparser.cc:1384,1
    - Dst: visitor
      Src: /src/pdns/pdns/dnsparser.cc:1386,1
    - Dst: at
      Src: /src/pdns/pdns/dnsparser.cc:1386,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 23
    argCount: 2
    argNames:
    - ' packet'
    - ' visitor'
    argTypes:
    - std::string_view
    - std::function<bool(uint8_t, uint16_t, uint16_t, uint32_t, uint16_t, const char*)>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1397
      start: 1350
    functionDepth: 1
    functionLinenumber: 1350
    functionLinenumberEnd: 1397
    functionName: visitDNSPacket
    functionSourceFile: /src/pdns/pdns/dnsparser.cc
    functionUses: 0
    functionsReached:
    - PacketReader::getName
    - ntohs
    - PacketReader::skip
    - visitor
    - size
    - PacketReader::get16BitInt
    - PacketReader::get32BitInt
    - data
    - PacketReader::getPosition
    - at
    linkageType: ''
    returnType: bool
    signature: bool visitDNSPacket(const std::string_view& packet, const std::function<bool(uint8_t,
      uint16_t, uint16_t, uint32_t, uint16_t, const char*)>& visitor)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 85
    functionDepth: 0
    functionLinenumber: 85
    functionLinenumberEnd: 87
    functionName: PcapPacketReader::EofException::EofException
    functionSourceFile: /src/pdns/pdns/dnspcap.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void EofException(const string& str="PcapPacketReader::EofException")
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PcapPacketReader::checkedFreadSize
      Src: /src/pdns/pdns/dnspcap.hh:95,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ptr
    argTypes:
    - T*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 93
    functionDepth: 1
    functionLinenumber: 93
    functionLinenumberEnd: 96
    functionName: PcapPacketReader::checkedFread
    functionSourceFile: /src/pdns/pdns/dnspcap.hh
    functionUses: 0
    functionsReached:
    - PcapPacketReader::checkedFreadSize
    linkageType: ''
    returnType: void
    signature: void checkedFread(T* ptr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' ppr'
    argTypes:
    - PcapPacketReader
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 133
      start: 133
    functionDepth: 0
    functionLinenumber: 133
    functionLinenumberEnd: 133
    functionName: PcapPacketWriter::setPPR
    functionSourceFile: /src/pdns/pdns/dnspcap.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setPPR(const PcapPacketReader& ppr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 48
    functionDepth: 0
    functionLinenumber: 48
    functionLinenumberEnd: 48
    functionName: '& operator=(const MiniCurl&)'
    functionSourceFile: /src/pdns/pdns/minicurl.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: MiniCurl
    signature: MiniCurl & operator=(const MiniCurl&)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: setThreadName
      Src: /src/pdns/pdns/auth-carbon.cc:38,1
    - Dst: StatBag::StatBag
      Src: /src/pdns/pdns/auth-carbon.cc:39,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-carbon.cc:41,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-carbon.cc:42,1
    - Dst: string::empty
      Src: /src/pdns/pdns/auth-carbon.cc:43,1
    - Dst: getCarbonHostName
      Src: /src/pdns/pdns/auth-carbon.cc:45,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/auth-carbon.cc:48,1
    - Dst: std::string
      Src: /src/pdns/pdns/auth-carbon.cc:48,1
    - Dst: what
      Src: /src/pdns/pdns/auth-carbon.cc:48,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-carbon.cc:51,1
    - Dst: stringtok
      Src: /src/pdns/pdns/auth-carbon.cc:54,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-carbon.cc:54,1
    - Dst: vector::empty
      Src: /src/pdns/pdns/auth-carbon.cc:57,1
    - Dst: sleep
      Src: /src/pdns/pdns/auth-carbon.cc:58,1
    - Dst: StatBag::getEntries
      Src: /src/pdns/pdns/auth-carbon.cc:63,1
    - Dst: time
      Src: /src/pdns/pdns/auth-carbon.cc:65,1
    - Dst: StatBag::read
      Src: /src/pdns/pdns/auth-carbon.cc:67,1
    - Dst: ostringstream::str
      Src: /src/pdns/pdns/auth-carbon.cc:69,1
    - Dst: Socket::setNonBlocking
      Src: /src/pdns/pdns/auth-carbon.cc:76,1
    - Dst: Socket::connect
      Src: /src/pdns/pdns/auth-carbon.cc:77,1
    - Dst: writen2WithTimeout
      Src: /src/pdns/pdns/auth-carbon.cc:79,1
    - Dst: Socket::getHandle
      Src: /src/pdns/pdns/auth-carbon.cc:79,1
    - Dst: string::c_str
      Src: /src/pdns/pdns/auth-carbon.cc:79,1
    - Dst: string::length
      Src: /src/pdns/pdns/auth-carbon.cc:79,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-carbon.cc:81,1
    - Dst: ComboAddress::toStringWithPort
      Src: /src/pdns/pdns/auth-carbon.cc:81,1
    - Dst: what
      Src: /src/pdns/pdns/auth-carbon.cc:81,1
    - Dst: Logr::log_t::error
      Src: /src/pdns/pdns/auth-carbon.cc:82,1
    - Dst: what
      Src: /src/pdns/pdns/auth-carbon.cc:82,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-carbon.cc:82,1
    - Dst: ComboAddress::toStringWithPort
      Src: /src/pdns/pdns/auth-carbon.cc:82,1
    - Dst: sleep
      Src: /src/pdns/pdns/auth-carbon.cc:86,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-carbon.cc:86,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-carbon.cc:90,1
    - Dst: what
      Src: /src/pdns/pdns/auth-carbon.cc:90,1
    - Dst: Logr::log_t::error
      Src: /src/pdns/pdns/auth-carbon.cc:91,1
    - Dst: what
      Src: /src/pdns/pdns/auth-carbon.cc:91,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-carbon.cc:94,1
    - Dst: Logr::log_t::error
      Src: /src/pdns/pdns/auth-carbon.cc:95,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-carbon.cc:98,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/auth-carbon.cc:99,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 37
    argCount: 1
    argNames:
    - slog
    argTypes:
    - Logr::log_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 35
    functionDepth: 1
    functionLinenumber: 35
    functionLinenumberEnd: 101
    functionName: carbonDumpThread
    functionSourceFile: /src/pdns/pdns/auth-carbon.cc
    functionUses: 0
    functionsReached:
    - StatBag::StatBag
    - StatBag::getEntries
    - std::string
    - getCarbonHostName
    - SLOG
    - stringtok
    - Logr::log_t::info
    - string::empty
    - Socket::setNonBlocking
    - time
    - Logging::Loggable
    - Logr::log_t::error
    - Socket::connect
    - setThreadName
    - StatBag::read
    - string::c_str
    - std::runtime_error
    - sleep
    - vector::empty
    - ostringstream::str
    - string::length
    - arg
    - ComboAddress::toStringWithPort
    - Socket::getHandle
    - what
    - writen2WithTimeout
    linkageType: ''
    returnType: void
    signature: void carbonDumpThread(Logr::log_t slog)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/zonemd.hh:54,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - zone
    argTypes:
    - ZoneName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 53
    functionDepth: 0
    functionLinenumber: 53
    functionLinenumberEnd: 55
    functionName: pdns::ZoneMD::ZoneMD
    functionSourceFile: /src/pdns/pdns/zonemd.hh
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void ZoneMD(ZoneName zone)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 63
    functionDepth: 0
    functionLinenumber: 63
    functionLinenumberEnd: 66
    functionName: '& getDNSKEYs() const'
    functionSourceFile: /src/pdns/pdns/zonemd.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::set<shared_ptr<const DNSKEYRecordContent>>
    signature: std::set<shared_ptr<const DNSKEYRecordContent>> & getDNSKEYs() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: count
      Src: /src/pdns/pdns/zonemd.hh:71,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - requestedType
    argTypes:
    - QType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 69
    functionDepth: 0
    functionLinenumber: 69
    functionLinenumberEnd: 75
    functionName: '& getRRSIGs(QType requestedType)'
    functionSourceFile: /src/pdns/pdns/zonemd.hh
    functionUses: 0
    functionsReached:
    - count
    linkageType: ''
    returnType: std::vector<shared_ptr<const RRSIGRecordContent>>
    signature: std::vector<shared_ptr<const RRSIGRecordContent>> & getRRSIGs(QType
      requestedType)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::vector::reserve
      Src: /src/pdns/pdns/zonemd.hh:81,1
    - Dst: size
      Src: /src/pdns/pdns/zonemd.hh:81,1
    - Dst: std::vector::emplace_back
      Src: /src/pdns/pdns/zonemd.hh:83,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 78
    functionDepth: 0
    functionLinenumber: 78
    functionLinenumberEnd: 86
    functionName: pdns::ZoneMD::getZONEMDs
    functionSourceFile: /src/pdns/pdns/zonemd.hh
    functionUses: 0
    functionsReached:
    - std::vector::reserve
    - std::vector::emplace_back
    - size
    linkageType: ''
    returnType: std::vector<shared_ptr<const ZONEMDRecordContent>>
    signature: std::vector<shared_ptr<const ZONEMDRecordContent>> getZONEMDs() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 89
    functionDepth: 0
    functionLinenumber: 89
    functionLinenumberEnd: 92
    functionName: '& getNSECs() const'
    functionSourceFile: /src/pdns/pdns/zonemd.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: ContentSigPair
    signature: ContentSigPair & getNSECs() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: find
      Src: /src/pdns/pdns/zonemd.hh:97,1
    - Dst: end
      Src: /src/pdns/pdns/zonemd.hh:98,1
    - Dst: at
      Src: /src/pdns/pdns/zonemd.hh:98,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 95
    functionDepth: 0
    functionLinenumber: 95
    functionLinenumberEnd: 99
    functionName: '& getNSEC3s() const'
    functionSourceFile: /src/pdns/pdns/zonemd.hh
    functionUses: 0
    functionsReached:
    - at
    - end
    - find
    linkageType: ''
    returnType: ContentSigPair
    signature: ContentSigPair & getNSEC3s() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 104
      start: 101
    functionDepth: 0
    functionLinenumber: 101
    functionLinenumberEnd: 104
    functionName: '& getNSEC3Label() const'
    functionSourceFile: /src/pdns/pdns/zonemd.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: DNSName
    signature: DNSName & getNSEC3Label() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 106
    functionDepth: 0
    functionLinenumber: 106
    functionLinenumberEnd: 109
    functionName: '& getNSEC3Params() const'
    functionSourceFile: /src/pdns/pdns/zonemd.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::vector<shared_ptr<const NSEC3PARAMRecordContent>>
    signature: std::vector<shared_ptr<const NSEC3PARAMRecordContent>> & getNSEC3Params()
      const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: first::canonCompare_three_way
      Src: /src/pdns/pdns/zonemd.hh:119,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - ' lhs'
    - ' rhs'
    argTypes:
    - RRSetKey_t
    - RRSetKey_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 117
    functionDepth: 0
    functionLinenumber: 117
    functionLinenumberEnd: 123
    functionName: operator()(const RRSetKey_t& lhs, const RRSetKey_t& rhs) const
    functionSourceFile: /src/pdns/pdns/zonemd.hh
    functionUses: 0
    functionsReached:
    - first::canonCompare_three_way
    linkageType: ''
    returnType: bool
    signature: bool operator()(const RRSetKey_t& lhs, const RRSetKey_t& rhs) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/zonemd.hh:54,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - zone
    argTypes:
    - ZoneName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 53
    functionDepth: 0
    functionLinenumber: 53
    functionLinenumberEnd: 55
    functionName: pdns::ZoneMD::ZoneMD
    functionSourceFile: /src/pdns/pdns/zonemd.hh
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void ZoneMD(ZoneName zone)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 63
    functionDepth: 0
    functionLinenumber: 63
    functionLinenumberEnd: 66
    functionName: '& getDNSKEYs() const'
    functionSourceFile: /src/pdns/pdns/zonemd.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::set<shared_ptr<const DNSKEYRecordContent>>
    signature: std::set<shared_ptr<const DNSKEYRecordContent>> & getDNSKEYs() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: count
      Src: /src/pdns/pdns/zonemd.hh:71,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - requestedType
    argTypes:
    - QType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 69
    functionDepth: 0
    functionLinenumber: 69
    functionLinenumberEnd: 75
    functionName: '& getRRSIGs(QType requestedType)'
    functionSourceFile: /src/pdns/pdns/zonemd.hh
    functionUses: 0
    functionsReached:
    - count
    linkageType: ''
    returnType: std::vector<shared_ptr<const RRSIGRecordContent>>
    signature: std::vector<shared_ptr<const RRSIGRecordContent>> & getRRSIGs(QType
      requestedType)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::vector::reserve
      Src: /src/pdns/pdns/zonemd.hh:81,1
    - Dst: size
      Src: /src/pdns/pdns/zonemd.hh:81,1
    - Dst: std::vector::emplace_back
      Src: /src/pdns/pdns/zonemd.hh:83,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 78
    functionDepth: 0
    functionLinenumber: 78
    functionLinenumberEnd: 86
    functionName: pdns::ZoneMD::getZONEMDs
    functionSourceFile: /src/pdns/pdns/zonemd.hh
    functionUses: 0
    functionsReached:
    - std::vector::reserve
    - std::vector::emplace_back
    - size
    linkageType: ''
    returnType: std::vector<shared_ptr<const ZONEMDRecordContent>>
    signature: std::vector<shared_ptr<const ZONEMDRecordContent>> getZONEMDs() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 89
    functionDepth: 0
    functionLinenumber: 89
    functionLinenumberEnd: 92
    functionName: '& getNSECs() const'
    functionSourceFile: /src/pdns/pdns/zonemd.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: ContentSigPair
    signature: ContentSigPair & getNSECs() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: find
      Src: /src/pdns/pdns/zonemd.hh:97,1
    - Dst: end
      Src: /src/pdns/pdns/zonemd.hh:98,1
    - Dst: at
      Src: /src/pdns/pdns/zonemd.hh:98,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 95
    functionDepth: 0
    functionLinenumber: 95
    functionLinenumberEnd: 99
    functionName: '& getNSEC3s() const'
    functionSourceFile: /src/pdns/pdns/zonemd.hh
    functionUses: 0
    functionsReached:
    - at
    - end
    - find
    linkageType: ''
    returnType: ContentSigPair
    signature: ContentSigPair & getNSEC3s() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 104
      start: 101
    functionDepth: 0
    functionLinenumber: 101
    functionLinenumberEnd: 104
    functionName: '& getNSEC3Label() const'
    functionSourceFile: /src/pdns/pdns/zonemd.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: DNSName
    signature: DNSName & getNSEC3Label() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 106
    functionDepth: 0
    functionLinenumber: 106
    functionLinenumberEnd: 109
    functionName: '& getNSEC3Params() const'
    functionSourceFile: /src/pdns/pdns/zonemd.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::vector<shared_ptr<const NSEC3PARAMRecordContent>>
    signature: std::vector<shared_ptr<const NSEC3PARAMRecordContent>> & getNSEC3Params()
      const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: first::canonCompare_three_way
      Src: /src/pdns/pdns/zonemd.hh:119,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - ' lhs'
    - ' rhs'
    argTypes:
    - RRSetKey_t
    - RRSetKey_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 117
    functionDepth: 0
    functionLinenumber: 117
    functionLinenumberEnd: 123
    functionName: operator()(const RRSetKey_t& lhs, const RRSetKey_t& rhs) const
    functionSourceFile: /src/pdns/pdns/zonemd.hh
    functionUses: 0
    functionsReached:
    - first::canonCompare_three_way
    linkageType: ''
    returnType: bool
    signature: bool operator()(const RRSetKey_t& lhs, const RRSetKey_t& rhs) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SvcParam::keyFromString
      Src: /src/pdns/pdns/svc-records.cc:42,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' k'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 39
    functionDepth: 0
    functionLinenumber: 39
    functionLinenumberEnd: 43
    functionName: SvcParam::keyFromString
    functionSourceFile: /src/pdns/pdns/svc-records.cc
    functionUses: 1
    functionsReached:
    - SvcParam::keyFromString
    linkageType: ''
    returnType: SvcParam::SvcParamKey
    signature: SvcParam::SvcParamKey SvcParam::keyFromString(const std::string& k)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: find
      Src: /src/pdns/pdns/svc-records.cc:47,1
    - Dst: end
      Src: /src/pdns/pdns/svc-records.cc:48,1
    - Dst: substr
      Src: /src/pdns/pdns/svc-records.cc:52,1
    - Dst: SvcParam::SvcParamKey
      Src: /src/pdns/pdns/svc-records.cc:55,1
    - Dst: pdns::checked_stoi<uint16_t>
      Src: /src/pdns/pdns/svc-records.cc:55,1
    - Dst: substr
      Src: /src/pdns/pdns/svc-records.cc:55,1
    - Dst: std::invalid_argument
      Src: /src/pdns/pdns/svc-records.cc:60,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 2
    argNames:
    - ' k'
    - ' generic'
    argTypes:
    - std::string
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 45
    functionDepth: 0
    functionLinenumber: 45
    functionLinenumberEnd: 61
    functionName: SvcParam::keyFromString
    functionSourceFile: /src/pdns/pdns/svc-records.cc
    functionUses: 1
    functionsReached:
    - SvcParam::SvcParamKey
    - std::invalid_argument
    - end
    - pdns::checked_stoi<uint16_t>
    - substr
    - find
    linkageType: ''
    returnType: SvcParam::SvcParamKey
    signature: SvcParam::SvcParamKey SvcParam::keyFromString(const std::string& k,
      bool& generic)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::find_if
      Src: /src/pdns/pdns/svc-records.cc:65,1
    - Dst: begin
      Src: /src/pdns/pdns/svc-records.cc:65,1
    - Dst: end
      Src: /src/pdns/pdns/svc-records.cc:65,1
    - Dst: end
      Src: /src/pdns/pdns/svc-records.cc:66,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/svc-records.cc:69,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - ' k'
    argTypes:
    - SvcParam::SvcParamKey
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 63
    functionDepth: 0
    functionLinenumber: 63
    functionLinenumberEnd: 70
    functionName: SvcParam::keyToString
    functionSourceFile: /src/pdns/pdns/svc-records.cc
    functionUses: 3
    functionsReached:
    - end
    - std::find_if
    - std::to_string
    - begin
    linkageType: ''
    returnType: std::string
    signature: std::string SvcParam::keyToString(const SvcParam::SvcParamKey& k)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::invalid_argument
      Src: /src/pdns/pdns/svc-records.cc:76,1
    - Dst: SvcParam::keyToString
      Src: /src/pdns/pdns/svc-records.cc:76,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 5
    argCount: 1
    argNames:
    - ' key'
    argTypes:
    - SvcParamKey
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 72
    functionDepth: 0
    functionLinenumber: 72
    functionLinenumberEnd: 78
    functionName: SvcParam::SvcParam
    functionSourceFile: /src/pdns/pdns/svc-records.cc
    functionUses: 0
    functionsReached:
    - SvcParam::keyToString
    - std::invalid_argument
    linkageType: ''
    returnType: void
    signature: void SvcParam::SvcParam(const SvcParamKey& key)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: std::invalid_argument
      Src: /src/pdns/pdns/svc-records.cc:84,1
    - Dst: SvcParam::keyToString
      Src: /src/pdns/pdns/svc-records.cc:84,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 10
    argCount: 2
    argNames:
    - ' key'
    - ' value'
    argTypes:
    - SvcParamKey
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 80
    functionDepth: 0
    functionLinenumber: 80
    functionLinenumberEnd: 93
    functionName: SvcParam::SvcParam
    functionSourceFile: /src/pdns/pdns/svc-records.cc
    functionUses: 0
    functionsReached:
    - SvcParam::keyToString
    - std::invalid_argument
    linkageType: ''
    returnType: void
    signature: void SvcParam::SvcParam(const SvcParamKey& key, const std::string&
      value)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: std::invalid_argument
      Src: /src/pdns/pdns/svc-records.cc:99,1
    - Dst: SvcParam::keyToString
      Src: /src/pdns/pdns/svc-records.cc:99,1
    - Dst: std::move
      Src: /src/pdns/pdns/svc-records.cc:102,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 2
    argNames:
    - ' key'
    - ' value'
    argTypes:
    - SvcParamKey
    - std::vector<std::string>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 104
      start: 95
    functionDepth: 0
    functionLinenumber: 95
    functionLinenumberEnd: 104
    functionName: SvcParam::SvcParam
    functionSourceFile: /src/pdns/pdns/svc-records.cc
    functionUses: 0
    functionsReached:
    - SvcParam::keyToString
    - std::invalid_argument
    - std::move
    linkageType: ''
    returnType: void
    signature: void SvcParam::SvcParam(const SvcParamKey& key, std::vector<std::string>&&
      value)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: std::invalid_argument
      Src: /src/pdns/pdns/svc-records.cc:110,1
    - Dst: SvcParam::keyToString
      Src: /src/pdns/pdns/svc-records.cc:110,1
    - Dst: insert
      Src: /src/pdns/pdns/svc-records.cc:114,1
    - Dst: SvcParam::keyFromString
      Src: /src/pdns/pdns/svc-records.cc:114,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 9
    argCount: 2
    argNames:
    - ' key'
    - ' value'
    argTypes:
    - SvcParamKey
    - std::set<std::string>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 106
    functionDepth: 1
    functionLinenumber: 106
    functionLinenumberEnd: 117
    functionName: SvcParam::SvcParam
    functionSourceFile: /src/pdns/pdns/svc-records.cc
    functionUses: 0
    functionsReached:
    - SvcParam::keyToString
    - std::invalid_argument
    - insert
    - SvcParam::keyFromString
    linkageType: ''
    returnType: void
    signature: void SvcParam::SvcParam(const SvcParamKey& key, std::set<std::string>&&
      value)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::invalid_argument
      Src: /src/pdns/pdns/svc-records.cc:123,1
    - Dst: SvcParam::keyToString
      Src: /src/pdns/pdns/svc-records.cc:123,1
    - Dst: std::move
      Src: /src/pdns/pdns/svc-records.cc:125,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 2
    argNames:
    - ' key'
    - ' value'
    argTypes:
    - SvcParamKey
    - std::set<SvcParam::SvcParamKey>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 119
    functionDepth: 0
    functionLinenumber: 119
    functionLinenumberEnd: 126
    functionName: SvcParam::SvcParam
    functionSourceFile: /src/pdns/pdns/svc-records.cc
    functionUses: 0
    functionsReached:
    - SvcParam::keyToString
    - std::invalid_argument
    - std::move
    linkageType: ''
    returnType: void
    signature: void SvcParam::SvcParam(const SvcParamKey& key, std::set<SvcParam::SvcParamKey>&&
      value)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: std::invalid_argument
      Src: /src/pdns/pdns/svc-records.cc:132,1
    - Dst: SvcParam::keyToString
      Src: /src/pdns/pdns/svc-records.cc:132,1
    - Dst: isIPv6
      Src: /src/pdns/pdns/svc-records.cc:135,1
    - Dst: std::invalid_argument
      Src: /src/pdns/pdns/svc-records.cc:136,1
    - Dst: toString
      Src: /src/pdns/pdns/svc-records.cc:136,1
    - Dst: SvcParam::keyToString
      Src: /src/pdns/pdns/svc-records.cc:136,1
    - Dst: isIPv4
      Src: /src/pdns/pdns/svc-records.cc:138,1
    - Dst: std::invalid_argument
      Src: /src/pdns/pdns/svc-records.cc:139,1
    - Dst: toString
      Src: /src/pdns/pdns/svc-records.cc:139,1
    - Dst: SvcParam::keyToString
      Src: /src/pdns/pdns/svc-records.cc:139,1
    - Dst: std::move
      Src: /src/pdns/pdns/svc-records.cc:142,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 13
    argCount: 2
    argNames:
    - ' key'
    - ' value'
    argTypes:
    - SvcParamKey
    - std::vector<ComboAddress>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 143
      start: 128
    functionDepth: 0
    functionLinenumber: 128
    functionLinenumberEnd: 143
    functionName: SvcParam::SvcParam
    functionSourceFile: /src/pdns/pdns/svc-records.cc
    functionUses: 0
    functionsReached:
    - std::move
    - isIPv6
    - toString
    - std::invalid_argument
    - isIPv4
    - SvcParam::keyToString
    linkageType: ''
    returnType: void
    signature: void SvcParam::SvcParam(const SvcParamKey& key, std::vector<ComboAddress>&&
      value)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::invalid_argument
      Src: /src/pdns/pdns/svc-records.cc:149,1
    - Dst: SvcParam::keyToString
      Src: /src/pdns/pdns/svc-records.cc:149,1
    - Dst: std::move
      Src: /src/pdns/pdns/svc-records.cc:151,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 5
    argCount: 2
    argNames:
    - ' key'
    - ' value'
    argTypes:
    - SvcParamKey
    - std::vector<uint16_t>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 152
      start: 145
    functionDepth: 0
    functionLinenumber: 145
    functionLinenumberEnd: 152
    functionName: SvcParam::SvcParam
    functionSourceFile: /src/pdns/pdns/svc-records.cc
    functionUses: 0
    functionsReached:
    - SvcParam::keyToString
    - std::invalid_argument
    - std::move
    linkageType: ''
    returnType: void
    signature: void SvcParam::SvcParam(const SvcParamKey& key, std::vector<uint16_t>&&
      value)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::invalid_argument
      Src: /src/pdns/pdns/svc-records.cc:158,1
    - Dst: SvcParam::keyToString
      Src: /src/pdns/pdns/svc-records.cc:158,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - ' key'
    - value
    argTypes:
    - SvcParamKey
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 161
      start: 154
    functionDepth: 0
    functionLinenumber: 154
    functionLinenumberEnd: 161
    functionName: SvcParam::SvcParam
    functionSourceFile: /src/pdns/pdns/svc-records.cc
    functionUses: 0
    functionsReached:
    - SvcParam::keyToString
    - std::invalid_argument
    linkageType: ''
    returnType: void
    signature: void SvcParam::SvcParam(const SvcParamKey& key, const uint16_t value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SvcParam::getKey
      Src: /src/pdns/pdns/svc-records.cc:166,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' other'
    argTypes:
    - SvcParam
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 167
      start: 164
    functionDepth: 0
    functionLinenumber: 164
    functionLinenumberEnd: 167
    functionName: SvcParam::operator<(const SvcParam& other) const
    functionSourceFile: /src/pdns/pdns/svc-records.cc
    functionUses: 0
    functionsReached:
    - SvcParam::getKey
    linkageType: ''
    returnType: bool
    signature: bool SvcParam::operator<(const SvcParam& other) const
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: SvcParam::getKey
      Src: /src/pdns/pdns/svc-records.cc:171,1
    - Dst: SvcParam::getKey
      Src: /src/pdns/pdns/svc-records.cc:171,1
    - Dst: SvcParam::getMandatory
      Src: /src/pdns/pdns/svc-records.cc:176,1
    - Dst: getMandatory
      Src: /src/pdns/pdns/svc-records.cc:176,1
    - Dst: SvcParam::getALPN
      Src: /src/pdns/pdns/svc-records.cc:178,1
    - Dst: getALPN
      Src: /src/pdns/pdns/svc-records.cc:178,1
    - Dst: SvcParam::getPort
      Src: /src/pdns/pdns/svc-records.cc:183,1
    - Dst: SvcParam::getPort
      Src: /src/pdns/pdns/svc-records.cc:183,1
    - Dst: SvcParam::getIPHints
      Src: /src/pdns/pdns/svc-records.cc:186,1
    - Dst: getIPHints
      Src: /src/pdns/pdns/svc-records.cc:186,1
    - Dst: SvcParam::getAutoHint
      Src: /src/pdns/pdns/svc-records.cc:186,1
    - Dst: SvcParam::getAutoHint
      Src: /src/pdns/pdns/svc-records.cc:186,1
    - Dst: SvcParam::getECH
      Src: /src/pdns/pdns/svc-records.cc:188,1
    - Dst: getECH
      Src: /src/pdns/pdns/svc-records.cc:188,1
    - Dst: SvcParam::getValue
      Src: /src/pdns/pdns/svc-records.cc:190,1
    - Dst: getValue
      Src: /src/pdns/pdns/svc-records.cc:190,1
    - Dst: SvcParam::getTLSSupportedGroups
      Src: /src/pdns/pdns/svc-records.cc:192,1
    - Dst: getTLSSupportedGroups
      Src: /src/pdns/pdns/svc-records.cc:192,1
    - Dst: SvcParam::getValue
      Src: /src/pdns/pdns/svc-records.cc:194,1
    - Dst: getValue
      Src: /src/pdns/pdns/svc-records.cc:194,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 26
    argCount: 1
    argNames:
    - ' other'
    argTypes:
    - SvcParam
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 196
      start: 169
    functionDepth: 0
    functionLinenumber: 169
    functionLinenumberEnd: 196
    functionName: SvcParam::operator==(const SvcParam& other) const
    functionSourceFile: /src/pdns/pdns/svc-records.cc
    functionUses: 0
    functionsReached:
    - getTLSSupportedGroups
    - SvcParam::getIPHints
    - SvcParam::getMandatory
    - getALPN
    - SvcParam::getKey
    - getIPHints
    - getECH
    - SvcParam::getTLSSupportedGroups
    - SvcParam::getPort
    - SvcParam::getECH
    - getValue
    - getMandatory
    - SvcParam::getAutoHint
    - SvcParam::getALPN
    - SvcParam::getValue
    linkageType: ''
    returnType: bool
    signature: bool SvcParam::operator==(const SvcParam& other) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' other'
    argTypes:
    - SvcParam
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 201
      start: 198
    functionDepth: 0
    functionLinenumber: 198
    functionLinenumberEnd: 201
    functionName: SvcParam::operator!=(const SvcParam& other) const
    functionSourceFile: /src/pdns/pdns/svc-records.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool SvcParam::operator!=(const SvcParam& other) const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::invalid_argument
      Src: /src/pdns/pdns/svc-records.cc:206,1
    - Dst: keyToString
      Src: /src/pdns/pdns/svc-records.cc:206,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 209
      start: 203
    functionDepth: 0
    functionLinenumber: 203
    functionLinenumberEnd: 209
    functionName: '& SvcParam::getIPHints() const'
    functionSourceFile: /src/pdns/pdns/svc-records.cc
    functionUses: 0
    functionsReached:
    - std::invalid_argument
    - keyToString
    linkageType: ''
    returnType: std::vector<ComboAddress>
    signature: std::vector<ComboAddress> & SvcParam::getIPHints() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::invalid_argument
      Src: /src/pdns/pdns/svc-records.cc:214,1
    - Dst: SvcParam::keyToString
      Src: /src/pdns/pdns/svc-records.cc:214,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 217
      start: 211
    functionDepth: 0
    functionLinenumber: 211
    functionLinenumberEnd: 217
    functionName: SvcParam::getPort
    functionSourceFile: /src/pdns/pdns/svc-records.cc
    functionUses: 1
    functionsReached:
    - SvcParam::keyToString
    - std::invalid_argument
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t SvcParam::getPort() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::invalid_argument
      Src: /src/pdns/pdns/svc-records.cc:222,1
    - Dst: keyToString
      Src: /src/pdns/pdns/svc-records.cc:222,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 225
      start: 219
    functionDepth: 0
    functionLinenumber: 219
    functionLinenumberEnd: 225
    functionName: '& SvcParam::getALPN() const'
    functionSourceFile: /src/pdns/pdns/svc-records.cc
    functionUses: 0
    functionsReached:
    - std::invalid_argument
    - keyToString
    linkageType: ''
    returnType: std::vector<std::string>
    signature: std::vector<std::string> & SvcParam::getALPN() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::invalid_argument
      Src: /src/pdns/pdns/svc-records.cc:230,1
    - Dst: keyToString
      Src: /src/pdns/pdns/svc-records.cc:230,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 233
      start: 227
    functionDepth: 0
    functionLinenumber: 227
    functionLinenumberEnd: 233
    functionName: '& SvcParam::getMandatory() const'
    functionSourceFile: /src/pdns/pdns/svc-records.cc
    functionUses: 0
    functionsReached:
    - std::invalid_argument
    - keyToString
    linkageType: ''
    returnType: std::set<SvcParam::SvcParamKey>
    signature: std::set<SvcParam::SvcParamKey> & SvcParam::getMandatory() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::invalid_argument
      Src: /src/pdns/pdns/svc-records.cc:238,1
    - Dst: keyToString
      Src: /src/pdns/pdns/svc-records.cc:238,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 241
      start: 235
    functionDepth: 0
    functionLinenumber: 235
    functionLinenumberEnd: 241
    functionName: '& SvcParam::getECH() const'
    functionSourceFile: /src/pdns/pdns/svc-records.cc
    functionUses: 0
    functionsReached:
    - std::invalid_argument
    - keyToString
    linkageType: ''
    returnType: std::string
    signature: std::string & SvcParam::getECH() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::invalid_argument
      Src: /src/pdns/pdns/svc-records.cc:246,1
    - Dst: keyToString
      Src: /src/pdns/pdns/svc-records.cc:246,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 249
      start: 243
    functionDepth: 0
    functionLinenumber: 243
    functionLinenumberEnd: 249
    functionName: '& SvcParam::getValue() const'
    functionSourceFile: /src/pdns/pdns/svc-records.cc
    functionUses: 0
    functionsReached:
    - std::invalid_argument
    - keyToString
    linkageType: ''
    returnType: std::string
    signature: std::string & SvcParam::getValue() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::invalid_argument
      Src: /src/pdns/pdns/svc-records.cc:254,1
    - Dst: keyToString
      Src: /src/pdns/pdns/svc-records.cc:254,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 257
      start: 251
    functionDepth: 0
    functionLinenumber: 251
    functionLinenumberEnd: 257
    functionName: '& SvcParam::getTLSSupportedGroups() const'
    functionSourceFile: /src/pdns/pdns/svc-records.cc
    functionUses: 0
    functionsReached:
    - std::invalid_argument
    - keyToString
    linkageType: ''
    returnType: std::vector<uint16_t>
    signature: std::vector<uint16_t> & SvcParam::getTLSSupportedGroups() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ArgvMap::ArgvMap
      Src: /src/pdns/pdns/dynloader.cc:54,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 52
    functionDepth: 0
    functionLinenumber: 52
    functionLinenumberEnd: 56
    functionName: arg
    functionSourceFile: /src/pdns/pdns/dynloader.cc
    functionUses: 34
    functionsReached:
    - ArgvMap::ArgvMap
    linkageType: ''
    returnType: ArgvMap
    signature: ArgvMap &arg()
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Logger::Urgency
      Src: /src/pdns/pdns/dynloader.cc:65,1
    - Dst: std::stringstream::str
      Src: /src/pdns/pdns/dynloader.cc:71,1
    - Dst: std::quoted
      Src: /src/pdns/pdns/dynloader.cc:72,1
    - Dst: std::quoted
      Src: /src/pdns/pdns/dynloader.cc:74,1
    - Dst: error::value
      Src: /src/pdns/pdns/dynloader.cc:74,1
    - Dst: std::quoted
      Src: /src/pdns/pdns/dynloader.cc:78,1
    - Dst: name::value
      Src: /src/pdns/pdns/dynloader.cc:78,1
    - Dst: std::quoted
      Src: /src/pdns/pdns/dynloader.cc:80,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dynloader.cc:80,1
    - Dst: std::quoted
      Src: /src/pdns/pdns/dynloader.cc:82,1
    - Dst: Logr::Logger::toString
      Src: /src/pdns/pdns/dynloader.cc:82,1
    - Dst: std::quoted
      Src: /src/pdns/pdns/dynloader.cc:85,1
    - Dst: Logging::toTimestampStringMilli
      Src: /src/pdns/pdns/dynloader.cc:85,1
    - Dst: std::quoted
      Src: /src/pdns/pdns/dynloader.cc:88,1
    - Dst: std::stringstream::str
      Src: /src/pdns/pdns/dynloader.cc:91,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 21
    argCount: 1
    argNames:
    - ' entry'
    argTypes:
    - Logging::Entry
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 60
    functionDepth: 0
    functionLinenumber: 60
    functionLinenumberEnd: 92
    functionName: pdnsControlLoggerBackend
    functionSourceFile: /src/pdns/pdns/dynloader.cc
    functionUses: 0
    functionsReached:
    - std::quoted
    - Logger::Urgency
    - std::to_string
    - Logr::Logger::toString
    - std::stringstream::str
    - name::value
    - error::value
    - Logging::toTimestampStringMilli
    linkageType: ''
    returnType: void
    signature: void pdnsControlLoggerBackend(const Logging::Entry& entry)
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: arg
      Src: /src/pdns/pdns/dynloader.cc:98,1
    - Dst: arg
      Src: /src/pdns/pdns/dynloader.cc:100,1
    - Dst: arg
      Src: /src/pdns/pdns/dynloader.cc:101,1
    - Dst: arg
      Src: /src/pdns/pdns/dynloader.cc:102,1
    - Dst: string
      Src: /src/pdns/pdns/dynloader.cc:102,1
    - Dst: arg
      Src: /src/pdns/pdns/dynloader.cc:103,1
    - Dst: arg
      Src: /src/pdns/pdns/dynloader.cc:104,1
    - Dst: arg
      Src: /src/pdns/pdns/dynloader.cc:105,1
    - Dst: arg
      Src: /src/pdns/pdns/dynloader.cc:107,1
    - Dst: arg
      Src: /src/pdns/pdns/dynloader.cc:108,1
    - Dst: arg
      Src: /src/pdns/pdns/dynloader.cc:109,1
    - Dst: arg
      Src: /src/pdns/pdns/dynloader.cc:110,1
    - Dst: arg
      Src: /src/pdns/pdns/dynloader.cc:111,1
    - Dst: arg
      Src: /src/pdns/pdns/dynloader.cc:113,1
    - Dst: arg
      Src: /src/pdns/pdns/dynloader.cc:115,1
    - Dst: Logging::Logger::create
      Src: /src/pdns/pdns/dynloader.cc:117,1
    - Dst: withName
      Src: /src/pdns/pdns/dynloader.cc:118,1
    - Dst: arg
      Src: /src/pdns/pdns/dynloader.cc:119,1
    - Dst: arg
      Src: /src/pdns/pdns/dynloader.cc:122,1
    - Dst: arg
      Src: /src/pdns/pdns/dynloader.cc:124,1
    - Dst: arg
      Src: /src/pdns/pdns/dynloader.cc:124,1
    - Dst: exit
      Src: /src/pdns/pdns/dynloader.cc:126,1
    - Dst: arg
      Src: /src/pdns/pdns/dynloader.cc:129,1
    - Dst: vector::empty
      Src: /src/pdns/pdns/dynloader.cc:131,1
    - Dst: arg
      Src: /src/pdns/pdns/dynloader.cc:136,1
    - Dst: arg
      Src: /src/pdns/pdns/dynloader.cc:137,1
    - Dst: arg
      Src: /src/pdns/pdns/dynloader.cc:139,1
    - Dst: cleanSlashes
      Src: /src/pdns/pdns/dynloader.cc:140,1
    - Dst: arg
      Src: /src/pdns/pdns/dynloader.cc:142,1
    - Dst: arg
      Src: /src/pdns/pdns/dynloader.cc:143,1
    - Dst: string::c_str
      Src: /src/pdns/pdns/dynloader.cc:143,1
    - Dst: arg
      Src: /src/pdns/pdns/dynloader.cc:144,1
    - Dst: arg
      Src: /src/pdns/pdns/dynloader.cc:147,1
    - Dst: arg
      Src: /src/pdns/pdns/dynloader.cc:148,1
    - Dst: empty
      Src: /src/pdns/pdns/dynloader.cc:148,1
    - Dst: arg
      Src: /src/pdns/pdns/dynloader.cc:149,1
    - Dst: empty
      Src: /src/pdns/pdns/dynloader.cc:149,1
    - Dst: std::string
      Src: /src/pdns/pdns/dynloader.cc:150,1
    - Dst: arg
      Src: /src/pdns/pdns/dynloader.cc:152,1
    - Dst: arg
      Src: /src/pdns/pdns/dynloader.cc:153,1
    - Dst: empty
      Src: /src/pdns/pdns/dynloader.cc:153,1
    - Dst: arg
      Src: /src/pdns/pdns/dynloader.cc:153,1
    - Dst: empty
      Src: /src/pdns/pdns/dynloader.cc:153,1
    - Dst: arg
      Src: /src/pdns/pdns/dynloader.cc:154,1
    - Dst: arg
      Src: /src/pdns/pdns/dynloader.cc:154,1
    - Dst: cleanSlashes
      Src: /src/pdns/pdns/dynloader.cc:158,1
    - Dst: arg
      Src: /src/pdns/pdns/dynloader.cc:163,1
    - Dst: empty
      Src: /src/pdns/pdns/dynloader.cc:163,1
    - Dst: std::make_shared<DynMessenger>
      Src: /src/pdns/pdns/dynloader.cc:164,1
    - Dst: pdns::checked_stoi_into
      Src: /src/pdns/pdns/dynloader.cc:168,1
    - Dst: arg
      Src: /src/pdns/pdns/dynloader.cc:168,1
    - Dst: arg
      Src: /src/pdns/pdns/dynloader.cc:171,1
    - Dst: exit
      Src: /src/pdns/pdns/dynloader.cc:172,1
    - Dst: std::make_shared<DynMessenger>
      Src: /src/pdns/pdns/dynloader.cc:175,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dynloader.cc:175,1
    - Dst: arg
      Src: /src/pdns/pdns/dynloader.cc:175,1
    - Dst: arg
      Src: /src/pdns/pdns/dynloader.cc:175,1
    - Dst: vector::begin
      Src: /src/pdns/pdns/dynloader.cc:179,1
    - Dst: vector::end
      Src: /src/pdns/pdns/dynloader.cc:179,1
    - Dst: vector::begin
      Src: /src/pdns/pdns/dynloader.cc:180,1
    - Dst: vector::size
      Src: /src/pdns/pdns/dynloader.cc:187,1
    - Dst: shared_ptr::send
      Src: /src/pdns/pdns/dynloader.cc:207,1
    - Dst: shared_ptr::receive
      Src: /src/pdns/pdns/dynloader.cc:212,1
    - Dst: string::compare
      Src: /src/pdns/pdns/dynloader.cc:213,1
    - Dst: what
      Src: /src/pdns/pdns/dynloader.cc:229,1
    CyclomaticComplexity: 27
    EdgeCount: 27
    ICount: 102
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 233
      start: 94
    functionDepth: 0
    functionLinenumber: 94
    functionLinenumberEnd: 233
    functionName: main
    functionSourceFile: /src/pdns/pdns/dynloader.cc
    functionUses: 16
    functionsReached:
    - withName
    - std::string
    - vector::begin
    - shared_ptr::send
    - string
    - empty
    - pdns::checked_stoi_into
    - string::c_str
    - vector::end
    - vector::empty
    - exit
    - arg
    - ComboAddress
    - string::compare
    - shared_ptr::receive
    - what
    - cleanSlashes
    - Logging::Logger::create
    - std::make_shared<DynMessenger>
    - vector::size
    linkageType: ''
    returnType: int
    signature: int main(int argc, char **argv)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-ednscookie_cc.cc:42,1
    - Dst: EDNSCookiesOpt::isWellFormed
      Src: /src/pdns/pdns/test-ednscookie_cc.cc:42,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-ednscookie_cc.cc:46,1
    - Dst: EDNSCookiesOpt::makeFromString
      Src: /src/pdns/pdns/test-ednscookie_cc.cc:46,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-ednscookie_cc.cc:50,1
    - Dst: EDNSCookiesOpt::makeFromString
      Src: /src/pdns/pdns/test-ednscookie_cc.cc:50,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-ednscookie_cc.cc:54,1
    - Dst: EDNSCookiesOpt::makeFromString
      Src: /src/pdns/pdns/test-ednscookie_cc.cc:54,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-ednscookie_cc.cc:57,1
    - Dst: EDNSCookiesOpt::makeFromString
      Src: /src/pdns/pdns/test-ednscookie_cc.cc:57,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-ednscookie_cc.cc:62,1
    - Dst: EDNSCookiesOpt::makeFromString
      Src: /src/pdns/pdns/test-ednscookie_cc.cc:62,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-ednscookie_cc.cc:65,1
    - Dst: EDNSCookiesOpt::makeFromString
      Src: /src/pdns/pdns/test-ednscookie_cc.cc:65,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-ednscookie_cc.cc:68,1
    - Dst: EDNSCookiesOpt::makeFromString
      Src: /src/pdns/pdns/test-ednscookie_cc.cc:68,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-ednscookie_cc.cc:72,1
    - Dst: EDNSCookiesOpt::makeFromString
      Src: /src/pdns/pdns/test-ednscookie_cc.cc:72,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 19
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 37
    functionDepth: 0
    functionLinenumber: 37
    functionLinenumberEnd: 73
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-ednscookie_cc.cc
    functionUses: 0
    functionsReached:
    - EDNSCookiesOpt::makeFromString
    - BOOST_CHECK
    - EDNSCookiesOpt::isWellFormed
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_getEDNSCookiesOptFromString)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EDNSCookiesOpt
      Src: /src/pdns/pdns/test-ednscookie_cc.cc:78,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-ednscookie_cc.cc:79,1
    - Dst: auto::isWellFormed
      Src: /src/pdns/pdns/test-ednscookie_cc.cc:79,1
    - Dst: EDNSCookiesOpt
      Src: /src/pdns/pdns/test-ednscookie_cc.cc:81,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-ednscookie_cc.cc:82,1
    - Dst: auto::isWellFormed
      Src: /src/pdns/pdns/test-ednscookie_cc.cc:82,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-ednscookie_cc.cc:83,1
    - Dst: auto::makeOptString
      Src: /src/pdns/pdns/test-ednscookie_cc.cc:83,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 75
    functionDepth: 0
    functionLinenumber: 75
    functionLinenumberEnd: 84
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-ednscookie_cc.cc
    functionUses: 0
    functionsReached:
    - auto::makeOptString
    - auto::isWellFormed
    - BOOST_CHECK_EQUAL
    - EDNSCookiesOpt
    - BOOST_CHECK
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_ctor)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EDNSCookiesOpt
      Src: /src/pdns/pdns/test-ednscookie_cc.cc:89,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-ednscookie_cc.cc:92,1
    - Dst: auto::isWellFormed
      Src: /src/pdns/pdns/test-ednscookie_cc.cc:92,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-ednscookie_cc.cc:96,1
    - Dst: auto::makeServerCookie
      Src: /src/pdns/pdns/test-ednscookie_cc.cc:96,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-ednscookie_cc.cc:97,1
    - Dst: auto::isWellFormed
      Src: /src/pdns/pdns/test-ednscookie_cc.cc:97,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-ednscookie_cc.cc:98,1
    - Dst: auto::isValid
      Src: /src/pdns/pdns/test-ednscookie_cc.cc:98,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-ednscookie_cc.cc:101,1
    - Dst: auto::makeServerCookie
      Src: /src/pdns/pdns/test-ednscookie_cc.cc:101,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-ednscookie_cc.cc:102,1
    - Dst: auto::isWellFormed
      Src: /src/pdns/pdns/test-ednscookie_cc.cc:102,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-ednscookie_cc.cc:103,1
    - Dst: auto::isValid
      Src: /src/pdns/pdns/test-ednscookie_cc.cc:103,1
    - Dst: auto::makeOptString
      Src: /src/pdns/pdns/test-ednscookie_cc.cc:105,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-ednscookie_cc.cc:106,1
    - Dst: EDNSCookiesOpt::isValid
      Src: /src/pdns/pdns/test-ednscookie_cc.cc:106,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-ednscookie_cc.cc:106,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-ednscookie_cc.cc:107,1
    - Dst: EDNSCookiesOpt::isValid
      Src: /src/pdns/pdns/test-ednscookie_cc.cc:107,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-ednscookie_cc.cc:108,1
    - Dst: EDNSCookiesOpt::isValid
      Src: /src/pdns/pdns/test-ednscookie_cc.cc:108,1
    - Dst: EDNSCookiesOpt
      Src: /src/pdns/pdns/test-ednscookie_cc.cc:111,1
    - Dst: std::string
      Src: /src/pdns/pdns/test-ednscookie_cc.cc:111,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-ednscookie_cc.cc:112,1
    - Dst: auto::isValid
      Src: /src/pdns/pdns/test-ednscookie_cc.cc:112,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 113
      start: 87
    functionDepth: 0
    functionLinenumber: 87
    functionLinenumberEnd: 113
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-ednscookie_cc.cc
    functionUses: 0
    functionsReached:
    - auto::makeOptString
    - auto::isWellFormed
    - auto::makeServerCookie
    - EDNSCookiesOpt
    - auto::isValid
    - BOOST_CHECK
    - EDNSCookiesOpt::isValid
    - std::string
    - ComboAddress
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_createEDNSServerCookie)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: close
      Src: /src/pdns/pdns/kqueuemplexer.cc:45,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 42
    functionDepth: 0
    functionLinenumber: 42
    functionLinenumberEnd: 47
    functionName: ~KqueueFDMultiplexer()
    functionSourceFile: /src/pdns/pdns/kqueuemplexer.cc
    functionUses: 0
    functionsReached:
    - close
    linkageType: ''
    returnType: void
    signature: void ~KqueueFDMultiplexer()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 55
    functionDepth: 0
    functionLinenumber: 55
    functionLinenumberEnd: 58
    functionName: KqueueFDMultiplexer::getName
    functionSourceFile: /src/pdns/pdns/kqueuemplexer.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: string
    signature: string getName() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: KqueueFDMultiplexer::KqueueFDMultiplexer
      Src: /src/pdns/pdns/kqueuemplexer.cc:67,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - maxEventsHint
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 65
    functionDepth: 0
    functionLinenumber: 65
    functionLinenumberEnd: 68
    functionName: make
    functionSourceFile: /src/pdns/pdns/kqueuemplexer.cc
    functionUses: 11
    functionsReached:
    - KqueueFDMultiplexer::KqueueFDMultiplexer
    linkageType: ''
    returnType: FDMultiplexer
    signature: FDMultiplexer * make(unsigned int maxEventsHint)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: FDMultiplexer::getMultiplexerMap
      Src: /src/pdns/pdns/kqueuemplexer.cc:74,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 72
    functionDepth: 0
    functionLinenumber: 72
    functionLinenumberEnd: 75
    functionName: KqueueRegisterOurselves
    functionSourceFile: /src/pdns/pdns/kqueuemplexer.cc
    functionUses: 0
    functionsReached:
    - FDMultiplexer::getMultiplexerMap
    linkageType: ''
    returnType: void
    signature: void KqueueRegisterOurselves()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: kqueue
      Src: /src/pdns/pdns/kqueuemplexer.cc:81,1
    - Dst: FDMultiplexerException
      Src: /src/pdns/pdns/kqueuemplexer.cc:83,1
    - Dst: stringerror
      Src: /src/pdns/pdns/kqueuemplexer.cc:83,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - maxEventsHint
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 78
    functionDepth: 0
    functionLinenumber: 78
    functionLinenumberEnd: 85
    functionName: KqueueFDMultiplexer::KqueueFDMultiplexer
    functionSourceFile: /src/pdns/pdns/kqueuemplexer.cc
    functionUses: 1
    functionsReached:
    - kqueue
    - FDMultiplexerException
    - stringerror
    linkageType: ''
    returnType: void
    signature: void KqueueFDMultiplexer::KqueueFDMultiplexer(unsigned int maxEventsHint)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/kqueuemplexer.cc:95,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/kqueuemplexer.cc:98,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - kind
    argTypes:
    - FDMultiplexer::EventKind
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 87
    functionDepth: 0
    functionLinenumber: 87
    functionLinenumberEnd: 99
    functionName: convertEventKind
    functionSourceFile: /src/pdns/pdns/kqueuemplexer.cc
    functionUses: 2
    functionsReached:
    - std::runtime_error
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t convertEventKind(FDMultiplexer::EventKind kind)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: EV_SET
      Src: /src/pdns/pdns/kqueuemplexer.cc:107,1
    - Dst: convertEventKind
      Src: /src/pdns/pdns/kqueuemplexer.cc:107,1
    - Dst: EV_SET
      Src: /src/pdns/pdns/kqueuemplexer.cc:112,1
    - Dst: convertEventKind
      Src: /src/pdns/pdns/kqueuemplexer.cc:112,1
    - Dst: kevent
      Src: /src/pdns/pdns/kqueuemplexer.cc:116,1
    - Dst: FDMultiplexerException
      Src: /src/pdns/pdns/kqueuemplexer.cc:117,1
    - Dst: stringerror
      Src: /src/pdns/pdns/kqueuemplexer.cc:117,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 12
    argCount: 2
    argNames:
    - fd
    - kind
    argTypes:
    - int
    - FDMultiplexer::EventKind
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 119
      start: 101
    functionDepth: 0
    functionLinenumber: 101
    functionLinenumberEnd: 119
    functionName: KqueueFDMultiplexer::addFD
    functionSourceFile: /src/pdns/pdns/kqueuemplexer.cc
    functionUses: 0
    functionsReached:
    - stringerror
    - convertEventKind
    - kevent
    - FDMultiplexerException
    - EV_SET
    linkageType: ''
    returnType: void
    signature: void KqueueFDMultiplexer::addFD(int fd, FDMultiplexer::EventKind kind)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: EV_SET
      Src: /src/pdns/pdns/kqueuemplexer.cc:127,1
    - Dst: convertEventKind
      Src: /src/pdns/pdns/kqueuemplexer.cc:127,1
    - Dst: EV_SET
      Src: /src/pdns/pdns/kqueuemplexer.cc:132,1
    - Dst: convertEventKind
      Src: /src/pdns/pdns/kqueuemplexer.cc:132,1
    - Dst: kevent
      Src: /src/pdns/pdns/kqueuemplexer.cc:136,1
    - Dst: FDMultiplexerException
      Src: /src/pdns/pdns/kqueuemplexer.cc:138,1
    - Dst: stringerror
      Src: /src/pdns/pdns/kqueuemplexer.cc:138,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 12
    argCount: 2
    argNames:
    - fd
    - kind
    argTypes:
    - int
    - FDMultiplexer::EventKind
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 121
    functionDepth: 0
    functionLinenumber: 121
    functionLinenumberEnd: 140
    functionName: KqueueFDMultiplexer::removeFD
    functionSourceFile: /src/pdns/pdns/kqueuemplexer.cc
    functionUses: 0
    functionsReached:
    - stringerror
    - convertEventKind
    - kevent
    - FDMultiplexerException
    - EV_SET
    linkageType: ''
    returnType: void
    signature: void KqueueFDMultiplexer::removeFD(int fd, FDMultiplexer::EventKind
      kind)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: kevent
      Src: /src/pdns/pdns/kqueuemplexer.cc:148,1
    - Dst: data
      Src: /src/pdns/pdns/kqueuemplexer.cc:148,1
    - Dst: size
      Src: /src/pdns/pdns/kqueuemplexer.cc:148,1
    - Dst: FDMultiplexerException
      Src: /src/pdns/pdns/kqueuemplexer.cc:151,1
    - Dst: stringerror
      Src: /src/pdns/pdns/kqueuemplexer.cc:151,1
    - Dst: std::unordered_set::reserve
      Src: /src/pdns/pdns/kqueuemplexer.cc:157,1
    - Dst: std::unordered_set::insert
      Src: /src/pdns/pdns/kqueuemplexer.cc:159,1
    - Dst: push_back
      Src: /src/pdns/pdns/kqueuemplexer.cc:163,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 2
    argNames:
    - ' fds'
    - timeout
    argTypes:
    - std::vector<int>
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 165
      start: 142
    functionDepth: 1
    functionLinenumber: 142
    functionLinenumberEnd: 165
    functionName: KqueueFDMultiplexer::getAvailableFDs
    functionSourceFile: /src/pdns/pdns/kqueuemplexer.cc
    functionUses: 0
    functionsReached:
    - push_back
    - stringerror
    - std::unordered_set::reserve
    - std::unordered_set::insert
    - size
    - data
    - kevent
    - FDMultiplexerException
    linkageType: ''
    returnType: void
    signature: void KqueueFDMultiplexer::getAvailableFDs(std::vector<int>& fds, int
      timeout)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: kevent
      Src: /src/pdns/pdns/kqueuemplexer.cc:175,1
    - Dst: data
      Src: /src/pdns/pdns/kqueuemplexer.cc:175,1
    - Dst: size
      Src: /src/pdns/pdns/kqueuemplexer.cc:175,1
    - Dst: gettimeofday
      Src: /src/pdns/pdns/kqueuemplexer.cc:176,1
    - Dst: FDMultiplexerException
      Src: /src/pdns/pdns/kqueuemplexer.cc:179,1
    - Dst: stringerror
      Src: /src/pdns/pdns/kqueuemplexer.cc:179,1
    - Dst: find
      Src: /src/pdns/pdns/kqueuemplexer.cc:189,1
    - Dst: end
      Src: /src/pdns/pdns/kqueuemplexer.cc:190,1
    - Dst: d_callback
      Src: /src/pdns/pdns/kqueuemplexer.cc:191,1
    - Dst: find
      Src: /src/pdns/pdns/kqueuemplexer.cc:196,1
    - Dst: end
      Src: /src/pdns/pdns/kqueuemplexer.cc:197,1
    - Dst: d_callback
      Src: /src/pdns/pdns/kqueuemplexer.cc:198,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 23
    argCount: 2
    argNames:
    - now
    - timeout
    argTypes:
    - struct timeval*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 204
      start: 167
    functionDepth: 0
    functionLinenumber: 167
    functionLinenumberEnd: 204
    functionName: KqueueFDMultiplexer::run
    functionSourceFile: /src/pdns/pdns/kqueuemplexer.cc
    functionUses: 0
    functionsReached:
    - stringerror
    - end
    - size
    - d_callback
    - gettimeofday
    - data
    - kevent
    - FDMultiplexerException
    - find
    linkageType: ''
    returnType: int
    signature: int KqueueFDMultiplexer::run(struct timeval* now, int timeout)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: boost::any_cast<Socket*>
      Src: /src/pdns/pdns/kqueuemplexer.cc:210,1
    - Dst: Socket*::recvFrom
      Src: /src/pdns/pdns/kqueuemplexer.cc:213,1
    - Dst: string::size
      Src: /src/pdns/pdns/kqueuemplexer.cc:214,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - fd
    - ' parameter'
    argTypes:
    - int
    - boost::any
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 215
      start: 207
    functionDepth: 0
    functionLinenumber: 207
    functionLinenumberEnd: 215
    functionName: acceptData
    functionSourceFile: /src/pdns/pdns/kqueuemplexer.cc
    functionUses: 0
    functionsReached:
    - string::size
    - boost::any_cast<Socket*>
    - Socket*::recvFrom
    linkageType: ''
    returnType: void
    signature: void acceptData(int fd, boost::any& parameter)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Socket::bind
      Src: /src/pdns/pdns/kqueuemplexer.cc:222,1
    - Dst: KqueueFDMultiplexer::KqueueFDMultiplexer
      Src: /src/pdns/pdns/kqueuemplexer.cc:224,1
    - Dst: KqueueFDMultiplexer::addReadFD
      Src: /src/pdns/pdns/kqueuemplexer.cc:226,1
    - Dst: Socket::getHandle
      Src: /src/pdns/pdns/kqueuemplexer.cc:226,1
    - Dst: KqueueFDMultiplexer::run
      Src: /src/pdns/pdns/kqueuemplexer.cc:229,1
    - Dst: KqueueFDMultiplexer::removeReadFD
      Src: /src/pdns/pdns/kqueuemplexer.cc:231,1
    - Dst: Socket::getHandle
      Src: /src/pdns/pdns/kqueuemplexer.cc:231,1
    - Dst: KqueueFDMultiplexer::removeReadFD
      Src: /src/pdns/pdns/kqueuemplexer.cc:232,1
    - Dst: Socket::getHandle
      Src: /src/pdns/pdns/kqueuemplexer.cc:232,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 233
      start: 217
    functionDepth: 0
    functionLinenumber: 217
    functionLinenumberEnd: 233
    functionName: main
    functionSourceFile: /src/pdns/pdns/kqueuemplexer.cc
    functionUses: 16
    functionsReached:
    - Socket::getHandle
    - KqueueFDMultiplexer::KqueueFDMultiplexer
    - KqueueFDMultiplexer::removeReadFD
    - KqueueFDMultiplexer::addReadFD
    - Socket::bind
    - KqueueFDMultiplexer::run
    linkageType: ''
    returnType: int
    signature: int main()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 32
      start: 32
    functionDepth: 0
    functionLinenumber: 32
    functionLinenumberEnd: 32
    functionName: PDNSException::PDNSException
    functionSourceFile: /src/pdns/pdns/pdnsexception.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void PDNSException()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/pdnsexception.hh:34,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - r
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 34
      start: 33
    functionDepth: 0
    functionLinenumber: 33
    functionLinenumberEnd: 34
    functionName: PDNSException::PDNSException
    functionSourceFile: /src/pdns/pdns/pdnsexception.hh
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void PDNSException(string r)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 42
    functionDepth: 0
    functionLinenumber: 42
    functionLinenumberEnd: 42
    functionName: TimeoutException::TimeoutException
    functionSourceFile: /src/pdns/pdns/pdnsexception.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void TimeoutException()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' r'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 43
    functionName: TimeoutException::TimeoutException
    functionSourceFile: /src/pdns/pdns/pdnsexception.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void TimeoutException(const string& r)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: AuthZoneCache::AuthZoneCache
      Src: /src/pdns/pdns/test-auth-zonecache_cc.cc:42,1
    - Dst: AuthZoneCache::setRefreshInterval
      Src: /src/pdns/pdns/test-auth-zonecache_cc.cc:43,1
    - Dst: ZoneName
      Src: /src/pdns/pdns/test-auth-zonecache_cc.cc:46,1
    - Dst: AuthZoneCache::setReplacePending
      Src: /src/pdns/pdns/test-auth-zonecache_cc.cc:48,1
    - Dst: AuthZoneCache::replace
      Src: /src/pdns/pdns/test-auth-zonecache_cc.cc:49,1
    - Dst: AuthZoneCache::getEntry
      Src: /src/pdns/pdns/test-auth-zonecache_cc.cc:53,1
    - Dst: BOOST_FAIL
      Src: /src/pdns/pdns/test-auth-zonecache_cc.cc:55,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 40
    functionDepth: 1
    functionLinenumber: 40
    functionLinenumberEnd: 57
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-auth-zonecache_cc.cc
    functionUses: 0
    functionsReached:
    - AuthZoneCache::setReplacePending
    - AuthZoneCache::setRefreshInterval
    - AuthZoneCache::replace
    - AuthZoneCache::getEntry
    - ZoneName
    - BOOST_FAIL
    - AuthZoneCache::AuthZoneCache
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_replace)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: AuthZoneCache::AuthZoneCache
      Src: /src/pdns/pdns/test-auth-zonecache_cc.cc:61,1
    - Dst: AuthZoneCache::setRefreshInterval
      Src: /src/pdns/pdns/test-auth-zonecache_cc.cc:62,1
    - Dst: ZoneName
      Src: /src/pdns/pdns/test-auth-zonecache_cc.cc:65,1
    - Dst: AuthZoneCache::setReplacePending
      Src: /src/pdns/pdns/test-auth-zonecache_cc.cc:66,1
    - Dst: AuthZoneCache::add
      Src: /src/pdns/pdns/test-auth-zonecache_cc.cc:67,1
    - Dst: ZoneName
      Src: /src/pdns/pdns/test-auth-zonecache_cc.cc:67,1
    - Dst: AuthZoneCache::replace
      Src: /src/pdns/pdns/test-auth-zonecache_cc.cc:68,1
    - Dst: AuthZoneCache::getEntry
      Src: /src/pdns/pdns/test-auth-zonecache_cc.cc:72,1
    - Dst: BOOST_FAIL
      Src: /src/pdns/pdns/test-auth-zonecache_cc.cc:74,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 59
    functionDepth: 1
    functionLinenumber: 59
    functionLinenumberEnd: 76
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-auth-zonecache_cc.cc
    functionUses: 0
    functionsReached:
    - AuthZoneCache::setReplacePending
    - AuthZoneCache::setRefreshInterval
    - AuthZoneCache::replace
    - AuthZoneCache::getEntry
    - ZoneName
    - BOOST_FAIL
    - AuthZoneCache::AuthZoneCache
    - AuthZoneCache::add
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_add_while_pending_replace)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: AuthZoneCache::AuthZoneCache
      Src: /src/pdns/pdns/test-auth-zonecache_cc.cc:80,1
    - Dst: AuthZoneCache::setRefreshInterval
      Src: /src/pdns/pdns/test-auth-zonecache_cc.cc:81,1
    - Dst: ZoneName
      Src: /src/pdns/pdns/test-auth-zonecache_cc.cc:84,1
    - Dst: AuthZoneCache::setReplacePending
      Src: /src/pdns/pdns/test-auth-zonecache_cc.cc:85,1
    - Dst: AuthZoneCache::remove
      Src: /src/pdns/pdns/test-auth-zonecache_cc.cc:86,1
    - Dst: ZoneName
      Src: /src/pdns/pdns/test-auth-zonecache_cc.cc:86,1
    - Dst: AuthZoneCache::replace
      Src: /src/pdns/pdns/test-auth-zonecache_cc.cc:87,1
    - Dst: AuthZoneCache::getEntry
      Src: /src/pdns/pdns/test-auth-zonecache_cc.cc:91,1
    - Dst: BOOST_FAIL
      Src: /src/pdns/pdns/test-auth-zonecache_cc.cc:93,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 78
    functionDepth: 1
    functionLinenumber: 78
    functionLinenumberEnd: 95
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-auth-zonecache_cc.cc
    functionUses: 0
    functionsReached:
    - AuthZoneCache::setReplacePending
    - AuthZoneCache::setRefreshInterval
    - AuthZoneCache::replace
    - AuthZoneCache::getEntry
    - AuthZoneCache::remove
    - ZoneName
    - BOOST_FAIL
    - AuthZoneCache::AuthZoneCache
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_remove_while_pending_replace)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: AuthZoneCache::AuthZoneCache
      Src: /src/pdns/pdns/test-auth-zonecache_cc.cc:100,1
    - Dst: AuthZoneCache::setRefreshInterval
      Src: /src/pdns/pdns/test-auth-zonecache_cc.cc:101,1
    - Dst: ZoneName
      Src: /src/pdns/pdns/test-auth-zonecache_cc.cc:104,1
    - Dst: ZoneName
      Src: /src/pdns/pdns/test-auth-zonecache_cc.cc:105,1
    - Dst: AuthZoneCache::setReplacePending
      Src: /src/pdns/pdns/test-auth-zonecache_cc.cc:107,1
    - Dst: AuthZoneCache::add
      Src: /src/pdns/pdns/test-auth-zonecache_cc.cc:108,1
    - Dst: ZoneName
      Src: /src/pdns/pdns/test-auth-zonecache_cc.cc:108,1
    - Dst: AuthZoneCache::replace
      Src: /src/pdns/pdns/test-auth-zonecache_cc.cc:109,1
    - Dst: AuthZoneCache::getEntry
      Src: /src/pdns/pdns/test-auth-zonecache_cc.cc:113,1
    - Dst: BOOST_FAIL
      Src: /src/pdns/pdns/test-auth-zonecache_cc.cc:115,1
    - Dst: BOOST_FAIL
      Src: /src/pdns/pdns/test-auth-zonecache_cc.cc:118,1
    - Dst: string
      Src: /src/pdns/pdns/test-auth-zonecache_cc.cc:118,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/test-auth-zonecache_cc.cc:118,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 98
    functionDepth: 1
    functionLinenumber: 98
    functionLinenumberEnd: 120
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-auth-zonecache_cc.cc
    functionUses: 0
    functionsReached:
    - AuthZoneCache::setReplacePending
    - AuthZoneCache::setRefreshInterval
    - std::to_string
    - AuthZoneCache::replace
    - AuthZoneCache::getEntry
    - string
    - ZoneName
    - BOOST_FAIL
    - AuthZoneCache::AuthZoneCache
    - AuthZoneCache::add
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_add_while_pending_replace_duplicate)
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: AuthZoneCache::AuthZoneCache
      Src: /src/pdns/pdns/test-auth-zonecache_cc.cc:124,1
    - Dst: AuthZoneCache::setRefreshInterval
      Src: /src/pdns/pdns/test-auth-zonecache_cc.cc:125,1
    - Dst: AuthZoneCache::add
      Src: /src/pdns/pdns/test-auth-zonecache_cc.cc:134,1
    - Dst: AuthZoneCache::add
      Src: /src/pdns/pdns/test-auth-zonecache_cc.cc:135,1
    - Dst: AuthZoneCache::add
      Src: /src/pdns/pdns/test-auth-zonecache_cc.cc:136,1
    - Dst: AuthZoneCache::add
      Src: /src/pdns/pdns/test-auth-zonecache_cc.cc:137,1
    - Dst: AuthZoneCache::updateNetwork
      Src: /src/pdns/pdns/test-auth-zonecache_cc.cc:145,1
    - Dst: AuthZoneCache::updateNetwork
      Src: /src/pdns/pdns/test-auth-zonecache_cc.cc:146,1
    - Dst: AuthZoneCache::addToView
      Src: /src/pdns/pdns/test-auth-zonecache_cc.cc:149,1
    - Dst: AuthZoneCache::addToView
      Src: /src/pdns/pdns/test-auth-zonecache_cc.cc:150,1
    - Dst: AuthZoneCache::getEntry
      Src: /src/pdns/pdns/test-auth-zonecache_cc.cc:158,1
    - Dst: BOOST_FAIL
      Src: /src/pdns/pdns/test-auth-zonecache_cc.cc:160,1
    - Dst: makeComboAddress
      Src: /src/pdns/pdns/test-auth-zonecache_cc.cc:164,1
    - Dst: AuthZoneCache::getViewFromNetwork
      Src: /src/pdns/pdns/test-auth-zonecache_cc.cc:165,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-auth-zonecache_cc.cc:166,1
    - Dst: AuthZoneCache::getVariantFromView
      Src: /src/pdns/pdns/test-auth-zonecache_cc.cc:167,1
    - Dst: BOOST_FAIL
      Src: /src/pdns/pdns/test-auth-zonecache_cc.cc:169,1
    - Dst: Netmask::toString
      Src: /src/pdns/pdns/test-auth-zonecache_cc.cc:169,1
    - Dst: AuthZoneCache::getEntry
      Src: /src/pdns/pdns/test-auth-zonecache_cc.cc:171,1
    - Dst: ZoneName
      Src: /src/pdns/pdns/test-auth-zonecache_cc.cc:171,1
    - Dst: BOOST_FAIL
      Src: /src/pdns/pdns/test-auth-zonecache_cc.cc:173,1
    - Dst: BOOST_FAIL
      Src: /src/pdns/pdns/test-auth-zonecache_cc.cc:176,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/test-auth-zonecache_cc.cc:176,1
    - Dst: AuthZoneCache::getVariantFromView
      Src: /src/pdns/pdns/test-auth-zonecache_cc.cc:178,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-auth-zonecache_cc.cc:179,1
    - Dst: std::string::empty
      Src: /src/pdns/pdns/test-auth-zonecache_cc.cc:179,1
    - Dst: BOOST_FAIL
      Src: /src/pdns/pdns/test-auth-zonecache_cc.cc:181,1
    - Dst: Netmask::toString
      Src: /src/pdns/pdns/test-auth-zonecache_cc.cc:181,1
    - Dst: AuthZoneCache::getEntry
      Src: /src/pdns/pdns/test-auth-zonecache_cc.cc:183,1
    - Dst: BOOST_FAIL
      Src: /src/pdns/pdns/test-auth-zonecache_cc.cc:185,1
    - Dst: BOOST_FAIL
      Src: /src/pdns/pdns/test-auth-zonecache_cc.cc:188,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/test-auth-zonecache_cc.cc:188,1
    - Dst: makeComboAddress
      Src: /src/pdns/pdns/test-auth-zonecache_cc.cc:192,1
    - Dst: AuthZoneCache::getViewFromNetwork
      Src: /src/pdns/pdns/test-auth-zonecache_cc.cc:193,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-auth-zonecache_cc.cc:194,1
    - Dst: AuthZoneCache::getVariantFromView
      Src: /src/pdns/pdns/test-auth-zonecache_cc.cc:195,1
    - Dst: BOOST_FAIL
      Src: /src/pdns/pdns/test-auth-zonecache_cc.cc:197,1
    - Dst: Netmask::toString
      Src: /src/pdns/pdns/test-auth-zonecache_cc.cc:197,1
    - Dst: AuthZoneCache::getEntry
      Src: /src/pdns/pdns/test-auth-zonecache_cc.cc:199,1
    - Dst: ZoneName
      Src: /src/pdns/pdns/test-auth-zonecache_cc.cc:199,1
    - Dst: BOOST_FAIL
      Src: /src/pdns/pdns/test-auth-zonecache_cc.cc:201,1
    - Dst: BOOST_FAIL
      Src: /src/pdns/pdns/test-auth-zonecache_cc.cc:204,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/test-auth-zonecache_cc.cc:204,1
    - Dst: AuthZoneCache::getVariantFromView
      Src: /src/pdns/pdns/test-auth-zonecache_cc.cc:206,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-auth-zonecache_cc.cc:207,1
    - Dst: std::string::empty
      Src: /src/pdns/pdns/test-auth-zonecache_cc.cc:207,1
    - Dst: BOOST_FAIL
      Src: /src/pdns/pdns/test-auth-zonecache_cc.cc:209,1
    - Dst: Netmask::toString
      Src: /src/pdns/pdns/test-auth-zonecache_cc.cc:209,1
    - Dst: AuthZoneCache::getEntry
      Src: /src/pdns/pdns/test-auth-zonecache_cc.cc:211,1
    - Dst: BOOST_FAIL
      Src: /src/pdns/pdns/test-auth-zonecache_cc.cc:213,1
    - Dst: BOOST_FAIL
      Src: /src/pdns/pdns/test-auth-zonecache_cc.cc:216,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/test-auth-zonecache_cc.cc:216,1
    - Dst: makeComboAddress
      Src: /src/pdns/pdns/test-auth-zonecache_cc.cc:220,1
    - Dst: AuthZoneCache::getViewFromNetwork
      Src: /src/pdns/pdns/test-auth-zonecache_cc.cc:221,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-auth-zonecache_cc.cc:222,1
    - Dst: AuthZoneCache::getVariantFromView
      Src: /src/pdns/pdns/test-auth-zonecache_cc.cc:223,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-auth-zonecache_cc.cc:224,1
    - Dst: std::string::empty
      Src: /src/pdns/pdns/test-auth-zonecache_cc.cc:224,1
    - Dst: AuthZoneCache::getEntry
      Src: /src/pdns/pdns/test-auth-zonecache_cc.cc:225,1
    - Dst: BOOST_FAIL
      Src: /src/pdns/pdns/test-auth-zonecache_cc.cc:227,1
    - Dst: AuthZoneCache::getViewFromNetwork
      Src: /src/pdns/pdns/test-auth-zonecache_cc.cc:229,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-auth-zonecache_cc.cc:230,1
    - Dst: AuthZoneCache::getVariantFromView
      Src: /src/pdns/pdns/test-auth-zonecache_cc.cc:231,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-auth-zonecache_cc.cc:232,1
    - Dst: std::string::empty
      Src: /src/pdns/pdns/test-auth-zonecache_cc.cc:232,1
    - Dst: AuthZoneCache::getEntry
      Src: /src/pdns/pdns/test-auth-zonecache_cc.cc:233,1
    - Dst: BOOST_FAIL
      Src: /src/pdns/pdns/test-auth-zonecache_cc.cc:235,1
    - Dst: AuthZoneCache::getViewFromNetwork
      Src: /src/pdns/pdns/test-auth-zonecache_cc.cc:237,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-auth-zonecache_cc.cc:238,1
    - Dst: AuthZoneCache::getVariantFromView
      Src: /src/pdns/pdns/test-auth-zonecache_cc.cc:239,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-auth-zonecache_cc.cc:240,1
    - Dst: std::string::empty
      Src: /src/pdns/pdns/test-auth-zonecache_cc.cc:240,1
    - Dst: AuthZoneCache::getEntry
      Src: /src/pdns/pdns/test-auth-zonecache_cc.cc:241,1
    - Dst: BOOST_FAIL
      Src: /src/pdns/pdns/test-auth-zonecache_cc.cc:243,1
    - Dst: BOOST_FAIL
      Src: /src/pdns/pdns/test-auth-zonecache_cc.cc:246,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/test-auth-zonecache_cc.cc:246,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 92
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 248
      start: 122
    functionDepth: 1
    functionLinenumber: 122
    functionLinenumberEnd: 248
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-auth-zonecache_cc.cc
    functionUses: 0
    functionsReached:
    - AuthZoneCache::setRefreshInterval
    - std::to_string
    - Netmask::toString
    - AuthZoneCache::getEntry
    - AuthZoneCache::addToView
    - BOOST_CHECK_EQUAL
    - std::string::empty
    - AuthZoneCache::updateNetwork
    - BOOST_FAIL
    - AuthZoneCache::getVariantFromView
    - ZoneName
    - AuthZoneCache::AuthZoneCache
    - BOOST_CHECK
    - AuthZoneCache::add
    - AuthZoneCache::getViewFromNetwork
    - makeComboAddress
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_netmask)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: isdigit
      Src: /src/pdns/pdns/sillyrecords.cc:31,1
    - Dst: isdigit
      Src: /src/pdns/pdns/sillyrecords.cc:36,1
    - Dst: isdigit
      Src: /src/pdns/pdns/sillyrecords.cc:38,1
    - Dst: std::min
      Src: /src/pdns/pdns/sillyrecords.cc:50,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 22
    argCount: 1
    argNames:
    - strptr
    argTypes:
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 21
    functionDepth: 0
    functionLinenumber: 21
    functionLinenumberEnd: 57
    functionName: precsize_aton
    functionSourceFile: /src/pdns/pdns/sillyrecords.cc
    functionUses: 0
    functionsReached:
    - std::min
    - isdigit
    linkageType: ''
    returnType: uint8_t
    signature: uint8_t precsize_aton(const char **strptr)
  - BBCount: 26
    BranchProfiles: []
    Callsites:
    - Dst: isdigit
      Src: /src/pdns/pdns/sillyrecords.cc:70,1
    - Dst: isspace
      Src: /src/pdns/pdns/sillyrecords.cc:73,1
    - Dst: isdigit
      Src: /src/pdns/pdns/sillyrecords.cc:76,1
    - Dst: isdigit
      Src: /src/pdns/pdns/sillyrecords.cc:79,1
    - Dst: isspace
      Src: /src/pdns/pdns/sillyrecords.cc:82,1
    - Dst: isdigit
      Src: /src/pdns/pdns/sillyrecords.cc:85,1
    - Dst: isdigit
      Src: /src/pdns/pdns/sillyrecords.cc:88,1
    - Dst: isdigit
      Src: /src/pdns/pdns/sillyrecords.cc:93,1
    - Dst: isdigit
      Src: /src/pdns/pdns/sillyrecords.cc:95,1
    - Dst: isdigit
      Src: /src/pdns/pdns/sillyrecords.cc:97,1
    - Dst: isspace
      Src: /src/pdns/pdns/sillyrecords.cc:104,1
    - Dst: isspace
      Src: /src/pdns/pdns/sillyrecords.cc:107,1
    - Dst: isspace
      Src: /src/pdns/pdns/sillyrecords.cc:148,1
    - Dst: isspace
      Src: /src/pdns/pdns/sillyrecords.cc:151,1
    CyclomaticComplexity: 29
    EdgeCount: 29
    ICount: 79
    argCount: 2
    argNames:
    - latlonstrptr
    - which
    argTypes:
    - char**
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 157
      start: 61
    functionDepth: 0
    functionLinenumber: 61
    functionLinenumberEnd: 157
    functionName: latlon2ul
    functionSourceFile: /src/pdns/pdns/sillyrecords.cc
    functionUses: 0
    functionsReached:
    - isdigit
    - isspace
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t latlon2ul(const char **latlonstrptr, int *which)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: regist
      Src: /src/pdns/pdns/sillyrecords.cc:161,1
    - Dst: regist
      Src: /src/pdns/pdns/sillyrecords.cc:162,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 163
      start: 159
    functionDepth: 0
    functionLinenumber: 159
    functionLinenumberEnd: 163
    functionName: LOCRecordContent::report
    functionSourceFile: /src/pdns/pdns/sillyrecords.cc
    functionUses: 1
    functionsReached:
    - regist
    linkageType: ''
    returnType: void
    signature: void LOCRecordContent::report(const ReportIsOnlyCallableByReportAllTypes&
      /* unused */)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<LOCRecordContent>
      Src: /src/pdns/pdns/sillyrecords.cc:167,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' content'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 168
      start: 165
    functionDepth: 0
    functionLinenumber: 165
    functionLinenumberEnd: 168
    functionName: LOCRecordContent::make
    functionSourceFile: /src/pdns/pdns/sillyrecords.cc
    functionUses: 0
    functionsReached:
    - std::make_shared<LOCRecordContent>
    linkageType: ''
    returnType: std::shared_ptr<DNSRecordContent>
    signature: std::shared_ptr<DNSRecordContent> LOCRecordContent::make(const string&
      content)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: xfr8BitInt
      Src: /src/pdns/pdns/sillyrecords.cc:173,1
    - Dst: xfr8BitInt
      Src: /src/pdns/pdns/sillyrecords.cc:174,1
    - Dst: xfr8BitInt
      Src: /src/pdns/pdns/sillyrecords.cc:175,1
    - Dst: xfr8BitInt
      Src: /src/pdns/pdns/sillyrecords.cc:176,1
    - Dst: xfr32BitInt
      Src: /src/pdns/pdns/sillyrecords.cc:178,1
    - Dst: xfr32BitInt
      Src: /src/pdns/pdns/sillyrecords.cc:179,1
    - Dst: xfr32BitInt
      Src: /src/pdns/pdns/sillyrecords.cc:180,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - ' pw'
    argTypes:
    - DNSPacketWriter
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 181
      start: 171
    functionDepth: 0
    functionLinenumber: 171
    functionLinenumberEnd: 181
    functionName: LOCRecordContent::toPacket
    functionSourceFile: /src/pdns/pdns/sillyrecords.cc
    functionUses: 0
    functionsReached:
    - xfr32BitInt
    - xfr8BitInt
    linkageType: ''
    returnType: void
    signature: void LOCRecordContent::toPacket(DNSPacketWriter& pw) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<LOCRecordContent>
      Src: /src/pdns/pdns/sillyrecords.cc:185,1
    - Dst: xfr8BitInt
      Src: /src/pdns/pdns/sillyrecords.cc:186,1
    - Dst: xfr8BitInt
      Src: /src/pdns/pdns/sillyrecords.cc:187,1
    - Dst: xfr8BitInt
      Src: /src/pdns/pdns/sillyrecords.cc:188,1
    - Dst: xfr8BitInt
      Src: /src/pdns/pdns/sillyrecords.cc:189,1
    - Dst: xfr32BitInt
      Src: /src/pdns/pdns/sillyrecords.cc:191,1
    - Dst: xfr32BitInt
      Src: /src/pdns/pdns/sillyrecords.cc:192,1
    - Dst: xfr32BitInt
      Src: /src/pdns/pdns/sillyrecords.cc:193,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 1
    argNames:
    - ' pr'
    argTypes:
    - PacketReader
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 196
      start: 183
    functionDepth: 0
    functionLinenumber: 183
    functionLinenumberEnd: 196
    functionName: LOCRecordContent::make
    functionSourceFile: /src/pdns/pdns/sillyrecords.cc
    functionUses: 0
    functionsReached:
    - xfr32BitInt
    - xfr8BitInt
    - std::make_shared<LOCRecordContent>
    linkageType: ''
    returnType: std::shared_ptr<LOCRecordContent::DNSRecordContent>
    signature: std::shared_ptr<LOCRecordContent::DNSRecordContent> LOCRecordContent::make(const
      DNSRecord& /* dr */, PacketReader& pr)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: c_str
      Src: /src/pdns/pdns/sillyrecords.cc:213,1
    - Dst: strlen
      Src: /src/pdns/pdns/sillyrecords.cc:214,1
    - Dst: c_str
      Src: /src/pdns/pdns/sillyrecords.cc:214,1
    - Dst: latlon2ul
      Src: /src/pdns/pdns/sillyrecords.cc:216,1
    - Dst: latlon2ul
      Src: /src/pdns/pdns/sillyrecords.cc:217,1
    - Dst: MOADNSException
      Src: /src/pdns/pdns/sillyrecords.cc:232,1
    - Dst: isdigit
      Src: /src/pdns/pdns/sillyrecords.cc:244,1
    - Dst: isdigit
      Src: /src/pdns/pdns/sillyrecords.cc:249,1
    - Dst: isdigit
      Src: /src/pdns/pdns/sillyrecords.cc:251,1
    - Dst: isspace
      Src: /src/pdns/pdns/sillyrecords.cc:259,1
    - Dst: isspace
      Src: /src/pdns/pdns/sillyrecords.cc:263,1
    - Dst: precsize_aton
      Src: /src/pdns/pdns/sillyrecords.cc:270,1
    - Dst: isspace
      Src: /src/pdns/pdns/sillyrecords.cc:272,1
    - Dst: isspace
      Src: /src/pdns/pdns/sillyrecords.cc:275,1
    - Dst: precsize_aton
      Src: /src/pdns/pdns/sillyrecords.cc:281,1
    - Dst: isspace
      Src: /src/pdns/pdns/sillyrecords.cc:283,1
    - Dst: isspace
      Src: /src/pdns/pdns/sillyrecords.cc:286,1
    - Dst: precsize_aton
      Src: /src/pdns/pdns/sillyrecords.cc:292,1
    CyclomaticComplexity: 31
    EdgeCount: 31
    ICount: 70
    argCount: 1
    argNames:
    - ' content'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 296
      start: 198
    functionDepth: 0
    functionLinenumber: 198
    functionLinenumberEnd: 296
    functionName: LOCRecordContent::LOCRecordContent
    functionSourceFile: /src/pdns/pdns/sillyrecords.cc
    functionUses: 0
    functionsReached:
    - latlon2ul
    - isdigit
    - precsize_aton
    - isspace
    - strlen
    - c_str
    - MOADNSException
    linkageType: ''
    returnType: void
    signature: void LOCRecordContent::LOCRecordContent(const string& content, const
      string& /* zone */)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: sqlstr
      Src: /src/pdns/pdns/sillyrecords.cc:354,1
    - Dst: boost::format
      Src: /src/pdns/pdns/sillyrecords.cc:355,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 26
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 363
      start: 299
    functionDepth: 1
    functionLinenumber: 299
    functionLinenumberEnd: 363
    functionName: LOCRecordContent::getZoneRepresentation
    functionSourceFile: /src/pdns/pdns/sillyrecords.cc
    functionUses: 0
    functionsReached:
    - sqlstr
    - boost::format
    linkageType: ''
    returnType: string
    signature: string LOCRecordContent::getZoneRepresentation(bool /* noDot */) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/remote_logger.cc:39,1
    - Dst: size
      Src: /src/pdns/pdns/remote_logger.cc:39,1
    - Dst: capacity
      Src: /src/pdns/pdns/remote_logger.cc:39,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' str'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 37
    functionDepth: 0
    functionLinenumber: 37
    functionLinenumberEnd: 40
    functionName: CircularWriteBuffer::hasRoomFor
    functionSourceFile: /src/pdns/pdns/remote_logger.cc
    functionUses: 0
    functionsReached:
    - capacity
    - size
    linkageType: ''
    returnType: bool
    signature: bool CircularWriteBuffer::hasRoomFor(const std::string& str) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/remote_logger.cc:44,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/remote_logger.cc:44,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/remote_logger.cc:44,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' str'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 42
    functionDepth: 0
    functionLinenumber: 42
    functionLinenumberEnd: 45
    functionName: CircularWriteBuffer::tooBig
    functionSourceFile: /src/pdns/pdns/remote_logger.cc
    functionUses: 0
    functionsReached:
    - pdns::max
    - size
    linkageType: ''
    returnType: bool
    signature: bool CircularWriteBuffer::tooBig(const std::string& str) const
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: CircularWriteBuffer::tooBig
      Src: /src/pdns/pdns/remote_logger.cc:49,1
    - Dst: CircularWriteBuffer::hasRoomFor
      Src: /src/pdns/pdns/remote_logger.cc:49,1
    - Dst: htons
      Src: /src/pdns/pdns/remote_logger.cc:54,1
    - Dst: size
      Src: /src/pdns/pdns/remote_logger.cc:54,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/remote_logger.cc:55,1
    - Dst: insert
      Src: /src/pdns/pdns/remote_logger.cc:56,1
    - Dst: end
      Src: /src/pdns/pdns/remote_logger.cc:56,1
    - Dst: htonl
      Src: /src/pdns/pdns/remote_logger.cc:59,1
    - Dst: size
      Src: /src/pdns/pdns/remote_logger.cc:59,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/remote_logger.cc:60,1
    - Dst: insert
      Src: /src/pdns/pdns/remote_logger.cc:61,1
    - Dst: end
      Src: /src/pdns/pdns/remote_logger.cc:61,1
    - Dst: insert
      Src: /src/pdns/pdns/remote_logger.cc:63,1
    - Dst: end
      Src: /src/pdns/pdns/remote_logger.cc:63,1
    - Dst: begin
      Src: /src/pdns/pdns/remote_logger.cc:63,1
    - Dst: end
      Src: /src/pdns/pdns/remote_logger.cc:63,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - ' str'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 47
    functionDepth: 1
    functionLinenumber: 47
    functionLinenumberEnd: 65
    functionName: CircularWriteBuffer::write
    functionSourceFile: /src/pdns/pdns/remote_logger.cc
    functionUses: 0
    functionsReached:
    - htonl
    - CircularWriteBuffer::tooBig
    - end
    - size
    - reinterpret_cast<const char*>
    - insert
    - begin
    - CircularWriteBuffer::hasRoomFor
    - htons
    linkageType: ''
    returnType: bool
    signature: bool CircularWriteBuffer::write(const std::string& str)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/remote_logger.cc:69,1
    - Dst: array_one
      Src: /src/pdns/pdns/remote_logger.cc:74,1
    - Dst: array_two
      Src: /src/pdns/pdns/remote_logger.cc:75,1
    - Dst: std::array::at
      Src: /src/pdns/pdns/remote_logger.cc:81,1
    - Dst: std::array::at
      Src: /src/pdns/pdns/remote_logger.cc:82,1
    - Dst: Utility::writev
      Src: /src/pdns/pdns/remote_logger.cc:89,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/remote_logger.cc:89,1
    - Dst: clear
      Src: /src/pdns/pdns/remote_logger.cc:102,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/remote_logger.cc:103,1
    - Dst: stringerror
      Src: /src/pdns/pdns/remote_logger.cc:103,1
    - Dst: clear
      Src: /src/pdns/pdns/remote_logger.cc:108,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/remote_logger.cc:109,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/remote_logger.cc:113,1
    - Dst: size
      Src: /src/pdns/pdns/remote_logger.cc:113,1
    - Dst: clear
      Src: /src/pdns/pdns/remote_logger.cc:114,1
    - Dst: pop_front
      Src: /src/pdns/pdns/remote_logger.cc:118,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 35
    argCount: 1
    argNames:
    - fileDesc
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 67
    functionDepth: 1
    functionLinenumber: 67
    functionLinenumberEnd: 123
    functionName: CircularWriteBuffer::flush
    functionSourceFile: /src/pdns/pdns/remote_logger.cc
    functionUses: 0
    functionsReached:
    - static_cast<size_t>
    - array_one
    - std::runtime_error
    - stringerror
    - size
    - pop_front
    - std::array::data
    - clear
    - empty
    - Utility::writev
    - std::array::at
    - array_two
    linkageType: ''
    returnType: bool
    signature: bool CircularWriteBuffer::flush(int fileDesc)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<unsigned int>
      Src: /src/pdns/pdns/remote_logger.cc:133,1
    - Dst: std::array::at
      Src: /src/pdns/pdns/remote_logger.cc:134,1
    - Dst: std::min
      Src: /src/pdns/pdns/remote_logger.cc:134,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - result
    argTypes:
    - Result
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 135
      start: 125
    functionDepth: 0
    functionLinenumber: 125
    functionLinenumberEnd: 135
    functionName: '& RemoteLoggerInterface::toErrorString(Result result)'
    functionSourceFile: /src/pdns/pdns/remote_logger.cc
    functionUses: 0
    functionsReached:
    - static_cast<unsigned int>
    - std::min
    - std::array::at
    linkageType: ''
    returnType: std::string
    signature: std::string & RemoteLoggerInterface::toErrorString(Result result)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: CircularWriteBuffer
      Src: /src/pdns/pdns/remote_logger.cc:138,1
    - Dst: RemoteLogger::reconnect
      Src: /src/pdns/pdns/remote_logger.cc:141,1
    - Dst: std::thread
      Src: /src/pdns/pdns/remote_logger.cc:144,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 6
    argNames:
    - ' remote'
    - timeout
    - maxQueuedBytes
    - reconnectWaitTime
    - asyncConnect
    - frame
    argTypes:
    - ComboAddress
    - uint16_t
    - uint64_t
    - uint8_t
    - bool
    - RemoteLogger::FrameSize
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 145
      start: 137
    functionDepth: 0
    functionLinenumber: 137
    functionLinenumberEnd: 145
    functionName: RemoteLogger::RemoteLogger
    functionSourceFile: /src/pdns/pdns/remote_logger.cc
    functionUses: 0
    functionsReached:
    - RemoteLogger::reconnect
    - CircularWriteBuffer
    - std::thread
    linkageType: ''
    returnType: void
    signature: void RemoteLogger::RemoteLogger(const ComboAddress& remote, uint16_t
      timeout, uint64_t maxQueuedBytes, uint8_t reconnectWaitTime, bool asyncConnect,
      RemoteLogger::FrameSize frame)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: make_unique<Socket>
      Src: /src/pdns/pdns/remote_logger.cc:150,1
    - Dst: auto::setNonBlocking
      Src: /src/pdns/pdns/remote_logger.cc:151,1
    - Dst: auto::connect
      Src: /src/pdns/pdns/remote_logger.cc:152,1
    - Dst: lock
      Src: /src/pdns/pdns/remote_logger.cc:157,1
    - Dst: std::move
      Src: /src/pdns/pdns/remote_logger.cc:158,1
    - Dst: SLOG
      Src: /src/pdns/pdns/remote_logger.cc:163,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/remote_logger.cc:163,1
    - Dst: what
      Src: /src/pdns/pdns/remote_logger.cc:163,1
    - Dst: withName
      Src: /src/pdns/pdns/remote_logger.cc:164,1
    - Dst: what
      Src: /src/pdns/pdns/remote_logger.cc:164,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/remote_logger.cc:164,1
    - Dst: SLOG
      Src: /src/pdns/pdns/remote_logger.cc:166,1
    - Dst: warnlog
      Src: /src/pdns/pdns/remote_logger.cc:166,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/remote_logger.cc:166,1
    - Dst: what
      Src: /src/pdns/pdns/remote_logger.cc:166,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/remote_logger.cc:167,1
    - Dst: what
      Src: /src/pdns/pdns/remote_logger.cc:167,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/remote_logger.cc:167,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 173
      start: 147
    functionDepth: 1
    functionLinenumber: 147
    functionLinenumberEnd: 173
    functionName: RemoteLogger::reconnect
    functionSourceFile: /src/pdns/pdns/remote_logger.cc
    functionUses: 1
    functionsReached:
    - std::move
    - SLOG
    - Logging::Loggable
    - withName
    - what
    - auto::connect
    - warnlog
    - lock
    - make_unique<Socket>
    - auto::setNonBlocking
    - dnsdist::logging::getTopLogger
    - toStringWithPort
    linkageType: ''
    returnType: bool
    signature: bool RemoteLogger::reconnect()
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/remote_logger.cc:177,1
    - Dst: auto::d_writer::tooBig
      Src: /src/pdns/pdns/remote_logger.cc:179,1
    - Dst: auto::d_writer::hasRoomFor
      Src: /src/pdns/pdns/remote_logger.cc:184,1
    - Dst: auto::d_writer::flush
      Src: /src/pdns/pdns/remote_logger.cc:192,1
    - Dst: auto::d_socket::getHandle
      Src: /src/pdns/pdns/remote_logger.cc:192,1
    - Dst: auto::d_writer::hasRoomFor
      Src: /src/pdns/pdns/remote_logger.cc:199,1
    - Dst: auto::d_socket::reset
      Src: /src/pdns/pdns/remote_logger.cc:207,1
    - Dst: auto::d_writer::write
      Src: /src/pdns/pdns/remote_logger.cc:213,1
    - Dst: auto::d_writer::flush
      Src: /src/pdns/pdns/remote_logger.cc:217,1
    - Dst: auto::d_socket::getHandle
      Src: /src/pdns/pdns/remote_logger.cc:217,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 31
    argCount: 1
    argNames:
    - ' data'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 222
      start: 175
    functionDepth: 1
    functionLinenumber: 175
    functionLinenumberEnd: 222
    functionName: RemoteLogger::queueData
    functionSourceFile: /src/pdns/pdns/remote_logger.cc
    functionUses: 0
    functionsReached:
    - auto::d_writer::flush
    - auto::d_socket::getHandle
    - auto::d_writer::tooBig
    - auto::d_socket::reset
    - auto::d_writer::write
    - lock
    - auto::d_writer::hasRoomFor
    linkageType: ''
    returnType: RemoteLoggerInterface::Result
    signature: RemoteLoggerInterface::Result RemoteLogger::queueData(const std::string&
      data)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: setThreadName
      Src: /src/pdns/pdns/remote_logger.cc:234,1
    - Dst: lock
      Src: /src/pdns/pdns/remote_logger.cc:242,1
    - Dst: RemoteLogger::reconnect
      Src: /src/pdns/pdns/remote_logger.cc:244,1
    - Dst: lock
      Src: /src/pdns/pdns/remote_logger.cc:251,1
    - Dst: auto::d_writer::flush
      Src: /src/pdns/pdns/remote_logger.cc:256,1
    - Dst: auto::d_socket::getHandle
      Src: /src/pdns/pdns/remote_logger.cc:256,1
    - Dst: lock
      Src: /src/pdns/pdns/remote_logger.cc:263,1
    - Dst: reset
      Src: /src/pdns/pdns/remote_logger.cc:263,1
    - Dst: RemoteLogger::reconnect
      Src: /src/pdns/pdns/remote_logger.cc:269,1
    - Dst: std::this_thread::sleep_for
      Src: /src/pdns/pdns/remote_logger.cc:272,1
    - Dst: std::chrono::seconds
      Src: /src/pdns/pdns/remote_logger.cc:272,1
    - Dst: SLOG
      Src: /src/pdns/pdns/remote_logger.cc:277,1
    - Dst: what
      Src: /src/pdns/pdns/remote_logger.cc:277,1
    - Dst: withName
      Src: /src/pdns/pdns/remote_logger.cc:278,1
    - Dst: what
      Src: /src/pdns/pdns/remote_logger.cc:278,1
    - Dst: SLOG
      Src: /src/pdns/pdns/remote_logger.cc:280,1
    - Dst: errlog
      Src: /src/pdns/pdns/remote_logger.cc:280,1
    - Dst: what
      Src: /src/pdns/pdns/remote_logger.cc:280,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/remote_logger.cc:281,1
    - Dst: what
      Src: /src/pdns/pdns/remote_logger.cc:281,1
    - Dst: SLOG
      Src: /src/pdns/pdns/remote_logger.cc:286,1
    - Dst: withName
      Src: /src/pdns/pdns/remote_logger.cc:287,1
    - Dst: SLOG
      Src: /src/pdns/pdns/remote_logger.cc:289,1
    - Dst: errlog
      Src: /src/pdns/pdns/remote_logger.cc:289,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/remote_logger.cc:290,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 34
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 293
      start: 224
    functionDepth: 1
    functionLinenumber: 224
    functionLinenumberEnd: 293
    functionName: RemoteLogger::maintenanceThread
    functionSourceFile: /src/pdns/pdns/remote_logger.cc
    functionUses: 0
    functionsReached:
    - std::this_thread::sleep_for
    - errlog
    - reset
    - SLOG
    - std::chrono::seconds
    - withName
    - auto::d_writer::flush
    - auto::d_socket::getHandle
    - what
    - lock
    - RemoteLogger::reconnect
    - dnsdist::logging::getTopLogger
    - setThreadName
    linkageType: ''
    returnType: void
    signature: void RemoteLogger::maintenanceThread()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: join
      Src: /src/pdns/pdns/remote_logger.cc:299,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 300
      start: 295
    functionDepth: 0
    functionLinenumber: 295
    functionLinenumberEnd: 300
    functionName: RemoteLogger::~RemoteLogger()
    functionSourceFile: /src/pdns/pdns/remote_logger.cc
    functionUses: 0
    functionsReached:
    - join
    linkageType: ''
    returnType: void
    signature: void RemoteLogger::~RemoteLogger()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 53
    functionDepth: 0
    functionLinenumber: 53
    functionLinenumberEnd: 53
    functionName: pdns::channel::Sender::Sender
    functionSourceFile: /src/pdns/pdns/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Sender()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/channel.hh:55,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 1
    argNames:
    - ' descriptor'
    argTypes:
    - FDWrapper
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 54
    functionDepth: 0
    functionLinenumber: 54
    functionLinenumberEnd: 57
    functionName: pdns::channel::Sender::Sender
    functionSourceFile: /src/pdns/pdns/channel.hh
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void Sender(FDWrapper&& descriptor)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 58
    functionDepth: 0
    functionLinenumber: 58
    functionLinenumberEnd: 58
    functionName: pdns::channel::Sender::Sender
    functionSourceFile: /src/pdns/pdns/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Sender(const Sender&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 59
    functionDepth: 0
    functionLinenumber: 59
    functionLinenumberEnd: 59
    functionName: '& operator=(const Sender&)'
    functionSourceFile: /src/pdns/pdns/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Sender
    signature: Sender & operator=(const Sender&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 60
    functionDepth: 0
    functionLinenumber: 60
    functionLinenumberEnd: 60
    functionName: pdns::channel::Sender::Sender
    functionSourceFile: /src/pdns/pdns/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Sender(Sender&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 61
    functionDepth: 0
    functionLinenumber: 61
    functionLinenumberEnd: 61
    functionName: '& operator=(Sender&&)'
    functionSourceFile: /src/pdns/pdns/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Sender
    signature: Sender & operator=(Sender&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 62
    functionDepth: 0
    functionLinenumber: 62
    functionLinenumberEnd: 62
    functionName: ~Sender()
    functionSourceFile: /src/pdns/pdns/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~Sender()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 86
    functionDepth: 0
    functionLinenumber: 86
    functionLinenumberEnd: 86
    functionName: pdns::channel::Receiver::Receiver
    functionSourceFile: /src/pdns/pdns/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Receiver()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/channel.hh:88,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 1
    argNames:
    - ' descriptor'
    argTypes:
    - FDWrapper
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 87
    functionDepth: 0
    functionLinenumber: 87
    functionLinenumberEnd: 90
    functionName: pdns::channel::Receiver::Receiver
    functionSourceFile: /src/pdns/pdns/channel.hh
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void Receiver(FDWrapper&& descriptor, bool throwOnEOF = true)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 91
    functionDepth: 0
    functionLinenumber: 91
    functionLinenumberEnd: 91
    functionName: pdns::channel::Receiver::Receiver
    functionSourceFile: /src/pdns/pdns/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Receiver(const Receiver&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 92
    functionDepth: 0
    functionLinenumber: 92
    functionLinenumberEnd: 92
    functionName: '& operator=(const Receiver&)'
    functionSourceFile: /src/pdns/pdns/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Receiver
    signature: Receiver & operator=(const Receiver&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 93
    functionDepth: 0
    functionLinenumber: 93
    functionLinenumberEnd: 93
    functionName: pdns::channel::Receiver::Receiver
    functionSourceFile: /src/pdns/pdns/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Receiver(Receiver&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 94
    functionDepth: 0
    functionLinenumber: 94
    functionLinenumberEnd: 94
    functionName: '& operator=(Receiver&&)'
    functionSourceFile: /src/pdns/pdns/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Receiver
    signature: Receiver & operator=(Receiver&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 95
    functionDepth: 0
    functionLinenumber: 95
    functionLinenumberEnd: 95
    functionName: ~Receiver()
    functionSourceFile: /src/pdns/pdns/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~Receiver()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getHandle
      Src: /src/pdns/pdns/channel.hh:113,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 111
    functionDepth: 0
    functionLinenumber: 111
    functionLinenumberEnd: 114
    functionName: pdns::channel::Receiver::getDescriptor
    functionSourceFile: /src/pdns/pdns/channel.hh
    functionUses: 0
    functionsReached:
    - getHandle
    linkageType: ''
    returnType: int
    signature: int getDescriptor() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 118
    functionDepth: 0
    functionLinenumber: 118
    functionLinenumberEnd: 121
    functionName: pdns::channel::Receiver::isClosed
    functionSourceFile: /src/pdns/pdns/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool isClosed() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 147
    functionDepth: 0
    functionLinenumber: 147
    functionLinenumberEnd: 147
    functionName: pdns::channel::Notifier::Notifier
    functionSourceFile: /src/pdns/pdns/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Notifier()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 149
      start: 149
    functionDepth: 0
    functionLinenumber: 149
    functionLinenumberEnd: 149
    functionName: pdns::channel::Notifier::Notifier
    functionSourceFile: /src/pdns/pdns/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Notifier(const Notifier&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 150
      start: 150
    functionDepth: 0
    functionLinenumber: 150
    functionLinenumberEnd: 150
    functionName: '& operator=(const Notifier&)'
    functionSourceFile: /src/pdns/pdns/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Notifier
    signature: Notifier & operator=(const Notifier&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 151
      start: 151
    functionDepth: 0
    functionLinenumber: 151
    functionLinenumberEnd: 151
    functionName: pdns::channel::Notifier::Notifier
    functionSourceFile: /src/pdns/pdns/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Notifier(Notifier&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 152
      start: 152
    functionDepth: 0
    functionLinenumber: 152
    functionLinenumberEnd: 152
    functionName: '& operator=(Notifier&&)'
    functionSourceFile: /src/pdns/pdns/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Notifier
    signature: Notifier & operator=(Notifier&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 153
      start: 153
    functionDepth: 0
    functionLinenumber: 153
    functionLinenumberEnd: 153
    functionName: ~Notifier()
    functionSourceFile: /src/pdns/pdns/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~Notifier()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 176
      start: 176
    functionDepth: 0
    functionLinenumber: 176
    functionLinenumberEnd: 176
    functionName: pdns::channel::Waiter::Waiter
    functionSourceFile: /src/pdns/pdns/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Waiter()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 178
      start: 178
    functionDepth: 0
    functionLinenumber: 178
    functionLinenumberEnd: 178
    functionName: pdns::channel::Waiter::Waiter
    functionSourceFile: /src/pdns/pdns/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Waiter(const Waiter&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 179
      start: 179
    functionDepth: 0
    functionLinenumber: 179
    functionLinenumberEnd: 179
    functionName: '& operator=(const Waiter&)'
    functionSourceFile: /src/pdns/pdns/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Waiter
    signature: Waiter & operator=(const Waiter&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 180
      start: 180
    functionDepth: 0
    functionLinenumber: 180
    functionLinenumberEnd: 180
    functionName: pdns::channel::Waiter::Waiter
    functionSourceFile: /src/pdns/pdns/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Waiter(Waiter&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 181
      start: 181
    functionDepth: 0
    functionLinenumber: 181
    functionLinenumberEnd: 181
    functionName: '& operator=(Waiter&&)'
    functionSourceFile: /src/pdns/pdns/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Waiter
    signature: Waiter & operator=(Waiter&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 182
      start: 182
    functionDepth: 0
    functionLinenumber: 182
    functionLinenumberEnd: 182
    functionName: ~Waiter()
    functionSourceFile: /src/pdns/pdns/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~Waiter()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 200
      start: 197
    functionDepth: 0
    functionLinenumber: 197
    functionLinenumberEnd: 200
    functionName: pdns::channel::Waiter::isClosed
    functionSourceFile: /src/pdns/pdns/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool isClosed() const
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/channel.hh:222,1
    - Dst: auto::get
      Src: /src/pdns/pdns/channel.hh:223,1
    - Dst: __tsan_release
      Src: /src/pdns/pdns/channel.hh:227,1
    - Dst: write
      Src: /src/pdns/pdns/channel.hh:229,1
    - Dst: getHandle
      Src: /src/pdns/pdns/channel.hh:229,1
    - Dst: auto::release
      Src: /src/pdns/pdns/channel.hh:233,1
    - Dst: __tsan_acquire
      Src: /src/pdns/pdns/channel.hh:238,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/channel.hh:240,1
    - Dst: __tsan_acquire
      Src: /src/pdns/pdns/channel.hh:244,1
    - Dst: std::move
      Src: /src/pdns/pdns/channel.hh:250,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/channel.hh:254,1
    - Dst: stringerror
      Src: /src/pdns/pdns/channel.hh:254,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 23
    argCount: 1
    argNames:
    - ' object'
    argTypes:
    - std::unique_ptr<T, D>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 258
      start: 218
    functionDepth: 0
    functionLinenumber: 218
    functionLinenumberEnd: 258
    functionName: pdns::channel::Sender<T, D>::send
    functionSourceFile: /src/pdns/pdns/channel.hh
    functionUses: 0
    functionsReached:
    - std::move
    - __tsan_acquire
    - auto::get
    - __tsan_release
    - std::runtime_error
    - stringerror
    - getHandle
    - write
    - auto::release
    linkageType: ''
    returnType: bool
    signature: bool Sender<T, D>::send(std::unique_ptr<T, D>&& object) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: reset
      Src: /src/pdns/pdns/channel.hh:263,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 264
      start: 261
    functionDepth: 0
    functionLinenumber: 261
    functionLinenumberEnd: 264
    functionName: pdns::channel::Sender<T, D>::close
    functionSourceFile: /src/pdns/pdns/channel.hh
    functionUses: 0
    functionsReached:
    - reset
    linkageType: ''
    returnType: void
    signature: void Sender<T, D>::close()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::channel::Receiver<T, D>::receive
      Src: /src/pdns/pdns/channel.hh:269,1
    - Dst: D
      Src: /src/pdns/pdns/channel.hh:269,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 270
      start: 267
    functionDepth: 0
    functionLinenumber: 267
    functionLinenumberEnd: 270
    functionName: pdns::channel::Receiver<T, D>::receive
    functionSourceFile: /src/pdns/pdns/channel.hh
    functionUses: 1
    functionsReached:
    - pdns::channel::Receiver<T, D>::receive
    - D
    linkageType: ''
    returnType: std::optional<std::unique_ptr<T, D>>
    signature: std::optional<std::unique_ptr<T, D>> Receiver<T, D>::receive()
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: read
      Src: /src/pdns/pdns/channel.hh:278,1
    - Dst: getHandle
      Src: /src/pdns/pdns/channel.hh:278,1
    - Dst: __tsan_acquire
      Src: /src/pdns/pdns/channel.hh:281,1
    - Dst: std::unique_ptr<T, D>
      Src: /src/pdns/pdns/channel.hh:283,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/channel.hh:290,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/channel.hh:299,1
    - Dst: stringerror
      Src: /src/pdns/pdns/channel.hh:299,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/channel.hh:302,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 25
    argCount: 1
    argNames:
    - deleter
    argTypes:
    - D
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 305
      start: 273
    functionDepth: 0
    functionLinenumber: 273
    functionLinenumberEnd: 305
    functionName: pdns::channel::Receiver<T, D>::receive
    functionSourceFile: /src/pdns/pdns/channel.hh
    functionUses: 1
    functionsReached:
    - __tsan_acquire
    - read
    - std::runtime_error
    - std::unique_ptr<T, D>
    - stringerror
    - getHandle
    linkageType: ''
    returnType: std::optional<std::unique_ptr<T, D>>
    signature: std::optional<std::unique_ptr<T, D>> Receiver<T, D>::receive(D deleter)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pipe
      Src: /src/pdns/pdns/channel.hh:311,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/channel.hh:312,1
    - Dst: stringerror
      Src: /src/pdns/pdns/channel.hh:312,1
    - Dst: setNonBlocking
      Src: /src/pdns/pdns/channel.hh:317,1
    - Dst: FDWrapper::getHandle
      Src: /src/pdns/pdns/channel.hh:317,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/channel.hh:319,1
    - Dst: stringerror
      Src: /src/pdns/pdns/channel.hh:319,1
    - Dst: setNonBlocking
      Src: /src/pdns/pdns/channel.hh:322,1
    - Dst: FDWrapper::getHandle
      Src: /src/pdns/pdns/channel.hh:322,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/channel.hh:324,1
    - Dst: stringerror
      Src: /src/pdns/pdns/channel.hh:324,1
    - Dst: getPipeBufferSize
      Src: /src/pdns/pdns/channel.hh:327,1
    - Dst: FDWrapper::getHandle
      Src: /src/pdns/pdns/channel.hh:327,1
    - Dst: setPipeBufferSize
      Src: /src/pdns/pdns/channel.hh:328,1
    - Dst: FDWrapper::getHandle
      Src: /src/pdns/pdns/channel.hh:328,1
    - Dst: Sender<T, D>
      Src: /src/pdns/pdns/channel.hh:331,1
    - Dst: std::move
      Src: /src/pdns/pdns/channel.hh:331,1
    - Dst: Receiver<T, D>
      Src: /src/pdns/pdns/channel.hh:331,1
    - Dst: std::move
      Src: /src/pdns/pdns/channel.hh:331,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 14
    argCount: 4
    argNames:
    - senderBlockingMode
    - receiverBlockingMode
    - pipeBufferSize
    - throwOnEOF
    argTypes:
    - SenderBlockingMode
    - ReceiverBlockingMode
    - size_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 332
      start: 308
    functionDepth: 0
    functionLinenumber: 308
    functionLinenumberEnd: 332
    functionName: pdns::channel::createObjectQueue
    functionSourceFile: /src/pdns/pdns/channel.hh
    functionUses: 0
    functionsReached:
    - std::move
    - FDWrapper::getHandle
    - std::runtime_error
    - setNonBlocking
    - stringerror
    - pipe
    - Receiver<T, D>
    - setPipeBufferSize
    - getPipeBufferSize
    - Sender<T, D>
    linkageType: ''
    returnType: std::pair<Sender<T, D>, Receiver<T, D>>
    signature: std::pair<Sender<T, D>, Receiver<T, D>> createObjectQueue(SenderBlockingMode
      senderBlockingMode, ReceiverBlockingMode receiverBlockingMode, size_t pipeBufferSize,
      bool throwOnEOF)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 53
    functionDepth: 0
    functionLinenumber: 53
    functionLinenumberEnd: 53
    functionName: pdns::channel::Sender::Sender
    functionSourceFile: /src/pdns/pdns/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Sender()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/channel.hh:55,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 1
    argNames:
    - ' descriptor'
    argTypes:
    - FDWrapper
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 54
    functionDepth: 0
    functionLinenumber: 54
    functionLinenumberEnd: 57
    functionName: pdns::channel::Sender::Sender
    functionSourceFile: /src/pdns/pdns/channel.hh
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void Sender(FDWrapper&& descriptor)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 58
    functionDepth: 0
    functionLinenumber: 58
    functionLinenumberEnd: 58
    functionName: pdns::channel::Sender::Sender
    functionSourceFile: /src/pdns/pdns/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Sender(const Sender&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 59
    functionDepth: 0
    functionLinenumber: 59
    functionLinenumberEnd: 59
    functionName: '& operator=(const Sender&)'
    functionSourceFile: /src/pdns/pdns/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Sender
    signature: Sender & operator=(const Sender&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 60
    functionDepth: 0
    functionLinenumber: 60
    functionLinenumberEnd: 60
    functionName: pdns::channel::Sender::Sender
    functionSourceFile: /src/pdns/pdns/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Sender(Sender&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 61
    functionDepth: 0
    functionLinenumber: 61
    functionLinenumberEnd: 61
    functionName: '& operator=(Sender&&)'
    functionSourceFile: /src/pdns/pdns/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Sender
    signature: Sender & operator=(Sender&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 62
    functionDepth: 0
    functionLinenumber: 62
    functionLinenumberEnd: 62
    functionName: ~Sender()
    functionSourceFile: /src/pdns/pdns/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~Sender()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 86
    functionDepth: 0
    functionLinenumber: 86
    functionLinenumberEnd: 86
    functionName: pdns::channel::Receiver::Receiver
    functionSourceFile: /src/pdns/pdns/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Receiver()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/channel.hh:88,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 1
    argNames:
    - ' descriptor'
    argTypes:
    - FDWrapper
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 87
    functionDepth: 0
    functionLinenumber: 87
    functionLinenumberEnd: 90
    functionName: pdns::channel::Receiver::Receiver
    functionSourceFile: /src/pdns/pdns/channel.hh
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void Receiver(FDWrapper&& descriptor, bool throwOnEOF = true)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 91
    functionDepth: 0
    functionLinenumber: 91
    functionLinenumberEnd: 91
    functionName: pdns::channel::Receiver::Receiver
    functionSourceFile: /src/pdns/pdns/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Receiver(const Receiver&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 92
    functionDepth: 0
    functionLinenumber: 92
    functionLinenumberEnd: 92
    functionName: '& operator=(const Receiver&)'
    functionSourceFile: /src/pdns/pdns/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Receiver
    signature: Receiver & operator=(const Receiver&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 93
    functionDepth: 0
    functionLinenumber: 93
    functionLinenumberEnd: 93
    functionName: pdns::channel::Receiver::Receiver
    functionSourceFile: /src/pdns/pdns/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Receiver(Receiver&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 94
    functionDepth: 0
    functionLinenumber: 94
    functionLinenumberEnd: 94
    functionName: '& operator=(Receiver&&)'
    functionSourceFile: /src/pdns/pdns/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Receiver
    signature: Receiver & operator=(Receiver&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 95
    functionDepth: 0
    functionLinenumber: 95
    functionLinenumberEnd: 95
    functionName: ~Receiver()
    functionSourceFile: /src/pdns/pdns/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~Receiver()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getHandle
      Src: /src/pdns/pdns/channel.hh:113,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 111
    functionDepth: 0
    functionLinenumber: 111
    functionLinenumberEnd: 114
    functionName: pdns::channel::Receiver::getDescriptor
    functionSourceFile: /src/pdns/pdns/channel.hh
    functionUses: 0
    functionsReached:
    - getHandle
    linkageType: ''
    returnType: int
    signature: int getDescriptor() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 118
    functionDepth: 0
    functionLinenumber: 118
    functionLinenumberEnd: 121
    functionName: pdns::channel::Receiver::isClosed
    functionSourceFile: /src/pdns/pdns/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool isClosed() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 147
    functionDepth: 0
    functionLinenumber: 147
    functionLinenumberEnd: 147
    functionName: pdns::channel::Notifier::Notifier
    functionSourceFile: /src/pdns/pdns/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Notifier()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 149
      start: 149
    functionDepth: 0
    functionLinenumber: 149
    functionLinenumberEnd: 149
    functionName: pdns::channel::Notifier::Notifier
    functionSourceFile: /src/pdns/pdns/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Notifier(const Notifier&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 150
      start: 150
    functionDepth: 0
    functionLinenumber: 150
    functionLinenumberEnd: 150
    functionName: '& operator=(const Notifier&)'
    functionSourceFile: /src/pdns/pdns/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Notifier
    signature: Notifier & operator=(const Notifier&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 151
      start: 151
    functionDepth: 0
    functionLinenumber: 151
    functionLinenumberEnd: 151
    functionName: pdns::channel::Notifier::Notifier
    functionSourceFile: /src/pdns/pdns/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Notifier(Notifier&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 152
      start: 152
    functionDepth: 0
    functionLinenumber: 152
    functionLinenumberEnd: 152
    functionName: '& operator=(Notifier&&)'
    functionSourceFile: /src/pdns/pdns/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Notifier
    signature: Notifier & operator=(Notifier&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 153
      start: 153
    functionDepth: 0
    functionLinenumber: 153
    functionLinenumberEnd: 153
    functionName: ~Notifier()
    functionSourceFile: /src/pdns/pdns/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~Notifier()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 176
      start: 176
    functionDepth: 0
    functionLinenumber: 176
    functionLinenumberEnd: 176
    functionName: pdns::channel::Waiter::Waiter
    functionSourceFile: /src/pdns/pdns/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Waiter()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 178
      start: 178
    functionDepth: 0
    functionLinenumber: 178
    functionLinenumberEnd: 178
    functionName: pdns::channel::Waiter::Waiter
    functionSourceFile: /src/pdns/pdns/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Waiter(const Waiter&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 179
      start: 179
    functionDepth: 0
    functionLinenumber: 179
    functionLinenumberEnd: 179
    functionName: '& operator=(const Waiter&)'
    functionSourceFile: /src/pdns/pdns/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Waiter
    signature: Waiter & operator=(const Waiter&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 180
      start: 180
    functionDepth: 0
    functionLinenumber: 180
    functionLinenumberEnd: 180
    functionName: pdns::channel::Waiter::Waiter
    functionSourceFile: /src/pdns/pdns/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Waiter(Waiter&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 181
      start: 181
    functionDepth: 0
    functionLinenumber: 181
    functionLinenumberEnd: 181
    functionName: '& operator=(Waiter&&)'
    functionSourceFile: /src/pdns/pdns/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Waiter
    signature: Waiter & operator=(Waiter&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 182
      start: 182
    functionDepth: 0
    functionLinenumber: 182
    functionLinenumberEnd: 182
    functionName: ~Waiter()
    functionSourceFile: /src/pdns/pdns/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~Waiter()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 200
      start: 197
    functionDepth: 0
    functionLinenumber: 197
    functionLinenumberEnd: 200
    functionName: pdns::channel::Waiter::isClosed
    functionSourceFile: /src/pdns/pdns/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool isClosed() const
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/channel.hh:222,1
    - Dst: auto::get
      Src: /src/pdns/pdns/channel.hh:223,1
    - Dst: __tsan_release
      Src: /src/pdns/pdns/channel.hh:227,1
    - Dst: write
      Src: /src/pdns/pdns/channel.hh:229,1
    - Dst: getHandle
      Src: /src/pdns/pdns/channel.hh:229,1
    - Dst: auto::release
      Src: /src/pdns/pdns/channel.hh:233,1
    - Dst: __tsan_acquire
      Src: /src/pdns/pdns/channel.hh:238,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/channel.hh:240,1
    - Dst: __tsan_acquire
      Src: /src/pdns/pdns/channel.hh:244,1
    - Dst: std::move
      Src: /src/pdns/pdns/channel.hh:250,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/channel.hh:254,1
    - Dst: stringerror
      Src: /src/pdns/pdns/channel.hh:254,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 23
    argCount: 1
    argNames:
    - ' object'
    argTypes:
    - std::unique_ptr<T, D>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 258
      start: 218
    functionDepth: 0
    functionLinenumber: 218
    functionLinenumberEnd: 258
    functionName: pdns::channel::Sender<T, D>::send
    functionSourceFile: /src/pdns/pdns/channel.hh
    functionUses: 0
    functionsReached:
    - std::move
    - __tsan_acquire
    - auto::get
    - __tsan_release
    - std::runtime_error
    - stringerror
    - getHandle
    - write
    - auto::release
    linkageType: ''
    returnType: bool
    signature: bool Sender<T, D>::send(std::unique_ptr<T, D>&& object) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: reset
      Src: /src/pdns/pdns/channel.hh:263,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 264
      start: 261
    functionDepth: 0
    functionLinenumber: 261
    functionLinenumberEnd: 264
    functionName: pdns::channel::Sender<T, D>::close
    functionSourceFile: /src/pdns/pdns/channel.hh
    functionUses: 0
    functionsReached:
    - reset
    linkageType: ''
    returnType: void
    signature: void Sender<T, D>::close()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::channel::Receiver<T, D>::receive
      Src: /src/pdns/pdns/channel.hh:269,1
    - Dst: D
      Src: /src/pdns/pdns/channel.hh:269,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 270
      start: 267
    functionDepth: 0
    functionLinenumber: 267
    functionLinenumberEnd: 270
    functionName: pdns::channel::Receiver<T, D>::receive
    functionSourceFile: /src/pdns/pdns/channel.hh
    functionUses: 2
    functionsReached:
    - pdns::channel::Receiver<T, D>::receive
    - D
    linkageType: ''
    returnType: std::optional<std::unique_ptr<T, D>>
    signature: std::optional<std::unique_ptr<T, D>> Receiver<T, D>::receive()
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: read
      Src: /src/pdns/pdns/channel.hh:278,1
    - Dst: getHandle
      Src: /src/pdns/pdns/channel.hh:278,1
    - Dst: __tsan_acquire
      Src: /src/pdns/pdns/channel.hh:281,1
    - Dst: std::unique_ptr<T, D>
      Src: /src/pdns/pdns/channel.hh:283,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/channel.hh:290,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/channel.hh:299,1
    - Dst: stringerror
      Src: /src/pdns/pdns/channel.hh:299,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/channel.hh:302,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 25
    argCount: 1
    argNames:
    - deleter
    argTypes:
    - D
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 305
      start: 273
    functionDepth: 0
    functionLinenumber: 273
    functionLinenumberEnd: 305
    functionName: pdns::channel::Receiver<T, D>::receive
    functionSourceFile: /src/pdns/pdns/channel.hh
    functionUses: 2
    functionsReached:
    - __tsan_acquire
    - read
    - std::runtime_error
    - std::unique_ptr<T, D>
    - stringerror
    - getHandle
    linkageType: ''
    returnType: std::optional<std::unique_ptr<T, D>>
    signature: std::optional<std::unique_ptr<T, D>> Receiver<T, D>::receive(D deleter)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pipe
      Src: /src/pdns/pdns/channel.hh:311,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/channel.hh:312,1
    - Dst: stringerror
      Src: /src/pdns/pdns/channel.hh:312,1
    - Dst: setNonBlocking
      Src: /src/pdns/pdns/channel.hh:317,1
    - Dst: FDWrapper::getHandle
      Src: /src/pdns/pdns/channel.hh:317,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/channel.hh:319,1
    - Dst: stringerror
      Src: /src/pdns/pdns/channel.hh:319,1
    - Dst: setNonBlocking
      Src: /src/pdns/pdns/channel.hh:322,1
    - Dst: FDWrapper::getHandle
      Src: /src/pdns/pdns/channel.hh:322,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/channel.hh:324,1
    - Dst: stringerror
      Src: /src/pdns/pdns/channel.hh:324,1
    - Dst: getPipeBufferSize
      Src: /src/pdns/pdns/channel.hh:327,1
    - Dst: FDWrapper::getHandle
      Src: /src/pdns/pdns/channel.hh:327,1
    - Dst: setPipeBufferSize
      Src: /src/pdns/pdns/channel.hh:328,1
    - Dst: FDWrapper::getHandle
      Src: /src/pdns/pdns/channel.hh:328,1
    - Dst: Sender<T, D>
      Src: /src/pdns/pdns/channel.hh:331,1
    - Dst: std::move
      Src: /src/pdns/pdns/channel.hh:331,1
    - Dst: Receiver<T, D>
      Src: /src/pdns/pdns/channel.hh:331,1
    - Dst: std::move
      Src: /src/pdns/pdns/channel.hh:331,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 14
    argCount: 4
    argNames:
    - senderBlockingMode
    - receiverBlockingMode
    - pipeBufferSize
    - throwOnEOF
    argTypes:
    - SenderBlockingMode
    - ReceiverBlockingMode
    - size_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 332
      start: 308
    functionDepth: 0
    functionLinenumber: 308
    functionLinenumberEnd: 332
    functionName: pdns::channel::createObjectQueue
    functionSourceFile: /src/pdns/pdns/channel.hh
    functionUses: 0
    functionsReached:
    - std::move
    - FDWrapper::getHandle
    - std::runtime_error
    - setNonBlocking
    - stringerror
    - pipe
    - Receiver<T, D>
    - setPipeBufferSize
    - getPipeBufferSize
    - Sender<T, D>
    linkageType: ''
    returnType: std::pair<Sender<T, D>, Receiver<T, D>>
    signature: std::pair<Sender<T, D>, Receiver<T, D>> createObjectQueue(SenderBlockingMode
      senderBlockingMode, ReceiverBlockingMode receiverBlockingMode, size_t pipeBufferSize,
      bool throwOnEOF)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 53
    functionDepth: 0
    functionLinenumber: 53
    functionLinenumberEnd: 53
    functionName: pdns::channel::Sender::Sender
    functionSourceFile: /src/pdns/pdns/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Sender()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/channel.hh:55,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 1
    argNames:
    - ' descriptor'
    argTypes:
    - FDWrapper
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 54
    functionDepth: 0
    functionLinenumber: 54
    functionLinenumberEnd: 57
    functionName: pdns::channel::Sender::Sender
    functionSourceFile: /src/pdns/pdns/channel.hh
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void Sender(FDWrapper&& descriptor)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 58
    functionDepth: 0
    functionLinenumber: 58
    functionLinenumberEnd: 58
    functionName: pdns::channel::Sender::Sender
    functionSourceFile: /src/pdns/pdns/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Sender(const Sender&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 59
    functionDepth: 0
    functionLinenumber: 59
    functionLinenumberEnd: 59
    functionName: '& operator=(const Sender&)'
    functionSourceFile: /src/pdns/pdns/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Sender
    signature: Sender & operator=(const Sender&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 60
    functionDepth: 0
    functionLinenumber: 60
    functionLinenumberEnd: 60
    functionName: pdns::channel::Sender::Sender
    functionSourceFile: /src/pdns/pdns/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Sender(Sender&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 61
    functionDepth: 0
    functionLinenumber: 61
    functionLinenumberEnd: 61
    functionName: '& operator=(Sender&&)'
    functionSourceFile: /src/pdns/pdns/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Sender
    signature: Sender & operator=(Sender&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 62
    functionDepth: 0
    functionLinenumber: 62
    functionLinenumberEnd: 62
    functionName: ~Sender()
    functionSourceFile: /src/pdns/pdns/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~Sender()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 86
    functionDepth: 0
    functionLinenumber: 86
    functionLinenumberEnd: 86
    functionName: pdns::channel::Receiver::Receiver
    functionSourceFile: /src/pdns/pdns/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Receiver()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/channel.hh:88,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 1
    argNames:
    - ' descriptor'
    argTypes:
    - FDWrapper
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 87
    functionDepth: 0
    functionLinenumber: 87
    functionLinenumberEnd: 90
    functionName: pdns::channel::Receiver::Receiver
    functionSourceFile: /src/pdns/pdns/channel.hh
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void Receiver(FDWrapper&& descriptor, bool throwOnEOF = true)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 91
    functionDepth: 0
    functionLinenumber: 91
    functionLinenumberEnd: 91
    functionName: pdns::channel::Receiver::Receiver
    functionSourceFile: /src/pdns/pdns/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Receiver(const Receiver&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 92
    functionDepth: 0
    functionLinenumber: 92
    functionLinenumberEnd: 92
    functionName: '& operator=(const Receiver&)'
    functionSourceFile: /src/pdns/pdns/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Receiver
    signature: Receiver & operator=(const Receiver&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 93
    functionDepth: 0
    functionLinenumber: 93
    functionLinenumberEnd: 93
    functionName: pdns::channel::Receiver::Receiver
    functionSourceFile: /src/pdns/pdns/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Receiver(Receiver&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 94
    functionDepth: 0
    functionLinenumber: 94
    functionLinenumberEnd: 94
    functionName: '& operator=(Receiver&&)'
    functionSourceFile: /src/pdns/pdns/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Receiver
    signature: Receiver & operator=(Receiver&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 95
    functionDepth: 0
    functionLinenumber: 95
    functionLinenumberEnd: 95
    functionName: ~Receiver()
    functionSourceFile: /src/pdns/pdns/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~Receiver()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getHandle
      Src: /src/pdns/pdns/channel.hh:113,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 111
    functionDepth: 0
    functionLinenumber: 111
    functionLinenumberEnd: 114
    functionName: pdns::channel::Receiver::getDescriptor
    functionSourceFile: /src/pdns/pdns/channel.hh
    functionUses: 0
    functionsReached:
    - getHandle
    linkageType: ''
    returnType: int
    signature: int getDescriptor() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 118
    functionDepth: 0
    functionLinenumber: 118
    functionLinenumberEnd: 121
    functionName: pdns::channel::Receiver::isClosed
    functionSourceFile: /src/pdns/pdns/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool isClosed() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 147
    functionDepth: 0
    functionLinenumber: 147
    functionLinenumberEnd: 147
    functionName: pdns::channel::Notifier::Notifier
    functionSourceFile: /src/pdns/pdns/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Notifier()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 149
      start: 149
    functionDepth: 0
    functionLinenumber: 149
    functionLinenumberEnd: 149
    functionName: pdns::channel::Notifier::Notifier
    functionSourceFile: /src/pdns/pdns/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Notifier(const Notifier&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 150
      start: 150
    functionDepth: 0
    functionLinenumber: 150
    functionLinenumberEnd: 150
    functionName: '& operator=(const Notifier&)'
    functionSourceFile: /src/pdns/pdns/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Notifier
    signature: Notifier & operator=(const Notifier&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 151
      start: 151
    functionDepth: 0
    functionLinenumber: 151
    functionLinenumberEnd: 151
    functionName: pdns::channel::Notifier::Notifier
    functionSourceFile: /src/pdns/pdns/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Notifier(Notifier&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 152
      start: 152
    functionDepth: 0
    functionLinenumber: 152
    functionLinenumberEnd: 152
    functionName: '& operator=(Notifier&&)'
    functionSourceFile: /src/pdns/pdns/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Notifier
    signature: Notifier & operator=(Notifier&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 153
      start: 153
    functionDepth: 0
    functionLinenumber: 153
    functionLinenumberEnd: 153
    functionName: ~Notifier()
    functionSourceFile: /src/pdns/pdns/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~Notifier()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 176
      start: 176
    functionDepth: 0
    functionLinenumber: 176
    functionLinenumberEnd: 176
    functionName: pdns::channel::Waiter::Waiter
    functionSourceFile: /src/pdns/pdns/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Waiter()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 178
      start: 178
    functionDepth: 0
    functionLinenumber: 178
    functionLinenumberEnd: 178
    functionName: pdns::channel::Waiter::Waiter
    functionSourceFile: /src/pdns/pdns/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Waiter(const Waiter&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 179
      start: 179
    functionDepth: 0
    functionLinenumber: 179
    functionLinenumberEnd: 179
    functionName: '& operator=(const Waiter&)'
    functionSourceFile: /src/pdns/pdns/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Waiter
    signature: Waiter & operator=(const Waiter&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 180
      start: 180
    functionDepth: 0
    functionLinenumber: 180
    functionLinenumberEnd: 180
    functionName: pdns::channel::Waiter::Waiter
    functionSourceFile: /src/pdns/pdns/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Waiter(Waiter&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 181
      start: 181
    functionDepth: 0
    functionLinenumber: 181
    functionLinenumberEnd: 181
    functionName: '& operator=(Waiter&&)'
    functionSourceFile: /src/pdns/pdns/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Waiter
    signature: Waiter & operator=(Waiter&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 182
      start: 182
    functionDepth: 0
    functionLinenumber: 182
    functionLinenumberEnd: 182
    functionName: ~Waiter()
    functionSourceFile: /src/pdns/pdns/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~Waiter()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 200
      start: 197
    functionDepth: 0
    functionLinenumber: 197
    functionLinenumberEnd: 200
    functionName: pdns::channel::Waiter::isClosed
    functionSourceFile: /src/pdns/pdns/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool isClosed() const
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/channel.hh:222,1
    - Dst: auto::get
      Src: /src/pdns/pdns/channel.hh:223,1
    - Dst: __tsan_release
      Src: /src/pdns/pdns/channel.hh:227,1
    - Dst: write
      Src: /src/pdns/pdns/channel.hh:229,1
    - Dst: getHandle
      Src: /src/pdns/pdns/channel.hh:229,1
    - Dst: auto::release
      Src: /src/pdns/pdns/channel.hh:233,1
    - Dst: __tsan_acquire
      Src: /src/pdns/pdns/channel.hh:238,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/channel.hh:240,1
    - Dst: __tsan_acquire
      Src: /src/pdns/pdns/channel.hh:244,1
    - Dst: std::move
      Src: /src/pdns/pdns/channel.hh:250,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/channel.hh:254,1
    - Dst: stringerror
      Src: /src/pdns/pdns/channel.hh:254,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 23
    argCount: 1
    argNames:
    - ' object'
    argTypes:
    - std::unique_ptr<T, D>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 258
      start: 218
    functionDepth: 0
    functionLinenumber: 218
    functionLinenumberEnd: 258
    functionName: pdns::channel::Sender<T, D>::send
    functionSourceFile: /src/pdns/pdns/channel.hh
    functionUses: 0
    functionsReached:
    - std::move
    - __tsan_acquire
    - auto::get
    - __tsan_release
    - std::runtime_error
    - stringerror
    - getHandle
    - write
    - auto::release
    linkageType: ''
    returnType: bool
    signature: bool Sender<T, D>::send(std::unique_ptr<T, D>&& object) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: reset
      Src: /src/pdns/pdns/channel.hh:263,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 264
      start: 261
    functionDepth: 0
    functionLinenumber: 261
    functionLinenumberEnd: 264
    functionName: pdns::channel::Sender<T, D>::close
    functionSourceFile: /src/pdns/pdns/channel.hh
    functionUses: 0
    functionsReached:
    - reset
    linkageType: ''
    returnType: void
    signature: void Sender<T, D>::close()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::channel::Receiver<T, D>::receive
      Src: /src/pdns/pdns/channel.hh:269,1
    - Dst: D
      Src: /src/pdns/pdns/channel.hh:269,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 270
      start: 267
    functionDepth: 0
    functionLinenumber: 267
    functionLinenumberEnd: 270
    functionName: pdns::channel::Receiver<T, D>::receive
    functionSourceFile: /src/pdns/pdns/channel.hh
    functionUses: 3
    functionsReached:
    - pdns::channel::Receiver<T, D>::receive
    - D
    linkageType: ''
    returnType: std::optional<std::unique_ptr<T, D>>
    signature: std::optional<std::unique_ptr<T, D>> Receiver<T, D>::receive()
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: read
      Src: /src/pdns/pdns/channel.hh:278,1
    - Dst: getHandle
      Src: /src/pdns/pdns/channel.hh:278,1
    - Dst: __tsan_acquire
      Src: /src/pdns/pdns/channel.hh:281,1
    - Dst: std::unique_ptr<T, D>
      Src: /src/pdns/pdns/channel.hh:283,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/channel.hh:290,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/channel.hh:299,1
    - Dst: stringerror
      Src: /src/pdns/pdns/channel.hh:299,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/channel.hh:302,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 25
    argCount: 1
    argNames:
    - deleter
    argTypes:
    - D
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 305
      start: 273
    functionDepth: 0
    functionLinenumber: 273
    functionLinenumberEnd: 305
    functionName: pdns::channel::Receiver<T, D>::receive
    functionSourceFile: /src/pdns/pdns/channel.hh
    functionUses: 3
    functionsReached:
    - __tsan_acquire
    - read
    - std::runtime_error
    - std::unique_ptr<T, D>
    - stringerror
    - getHandle
    linkageType: ''
    returnType: std::optional<std::unique_ptr<T, D>>
    signature: std::optional<std::unique_ptr<T, D>> Receiver<T, D>::receive(D deleter)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pipe
      Src: /src/pdns/pdns/channel.hh:311,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/channel.hh:312,1
    - Dst: stringerror
      Src: /src/pdns/pdns/channel.hh:312,1
    - Dst: setNonBlocking
      Src: /src/pdns/pdns/channel.hh:317,1
    - Dst: FDWrapper::getHandle
      Src: /src/pdns/pdns/channel.hh:317,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/channel.hh:319,1
    - Dst: stringerror
      Src: /src/pdns/pdns/channel.hh:319,1
    - Dst: setNonBlocking
      Src: /src/pdns/pdns/channel.hh:322,1
    - Dst: FDWrapper::getHandle
      Src: /src/pdns/pdns/channel.hh:322,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/channel.hh:324,1
    - Dst: stringerror
      Src: /src/pdns/pdns/channel.hh:324,1
    - Dst: getPipeBufferSize
      Src: /src/pdns/pdns/channel.hh:327,1
    - Dst: FDWrapper::getHandle
      Src: /src/pdns/pdns/channel.hh:327,1
    - Dst: setPipeBufferSize
      Src: /src/pdns/pdns/channel.hh:328,1
    - Dst: FDWrapper::getHandle
      Src: /src/pdns/pdns/channel.hh:328,1
    - Dst: Sender<T, D>
      Src: /src/pdns/pdns/channel.hh:331,1
    - Dst: std::move
      Src: /src/pdns/pdns/channel.hh:331,1
    - Dst: Receiver<T, D>
      Src: /src/pdns/pdns/channel.hh:331,1
    - Dst: std::move
      Src: /src/pdns/pdns/channel.hh:331,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 14
    argCount: 4
    argNames:
    - senderBlockingMode
    - receiverBlockingMode
    - pipeBufferSize
    - throwOnEOF
    argTypes:
    - SenderBlockingMode
    - ReceiverBlockingMode
    - size_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 332
      start: 308
    functionDepth: 0
    functionLinenumber: 308
    functionLinenumberEnd: 332
    functionName: pdns::channel::createObjectQueue
    functionSourceFile: /src/pdns/pdns/channel.hh
    functionUses: 0
    functionsReached:
    - std::move
    - FDWrapper::getHandle
    - std::runtime_error
    - setNonBlocking
    - stringerror
    - pipe
    - Receiver<T, D>
    - setPipeBufferSize
    - getPipeBufferSize
    - Sender<T, D>
    linkageType: ''
    returnType: std::pair<Sender<T, D>, Receiver<T, D>>
    signature: std::pair<Sender<T, D>, Receiver<T, D>> createObjectQueue(SenderBlockingMode
      senderBlockingMode, ReceiverBlockingMode receiverBlockingMode, size_t pipeBufferSize,
      bool throwOnEOF)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 53
    functionDepth: 0
    functionLinenumber: 53
    functionLinenumberEnd: 53
    functionName: pdns::channel::Sender::Sender
    functionSourceFile: /src/pdns/pdns/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Sender()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/channel.hh:55,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 1
    argNames:
    - ' descriptor'
    argTypes:
    - FDWrapper
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 54
    functionDepth: 0
    functionLinenumber: 54
    functionLinenumberEnd: 57
    functionName: pdns::channel::Sender::Sender
    functionSourceFile: /src/pdns/pdns/channel.hh
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void Sender(FDWrapper&& descriptor)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 58
    functionDepth: 0
    functionLinenumber: 58
    functionLinenumberEnd: 58
    functionName: pdns::channel::Sender::Sender
    functionSourceFile: /src/pdns/pdns/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Sender(const Sender&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 59
    functionDepth: 0
    functionLinenumber: 59
    functionLinenumberEnd: 59
    functionName: '& operator=(const Sender&)'
    functionSourceFile: /src/pdns/pdns/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Sender
    signature: Sender & operator=(const Sender&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 60
    functionDepth: 0
    functionLinenumber: 60
    functionLinenumberEnd: 60
    functionName: pdns::channel::Sender::Sender
    functionSourceFile: /src/pdns/pdns/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Sender(Sender&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 61
    functionDepth: 0
    functionLinenumber: 61
    functionLinenumberEnd: 61
    functionName: '& operator=(Sender&&)'
    functionSourceFile: /src/pdns/pdns/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Sender
    signature: Sender & operator=(Sender&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 62
    functionDepth: 0
    functionLinenumber: 62
    functionLinenumberEnd: 62
    functionName: ~Sender()
    functionSourceFile: /src/pdns/pdns/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~Sender()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 86
    functionDepth: 0
    functionLinenumber: 86
    functionLinenumberEnd: 86
    functionName: pdns::channel::Receiver::Receiver
    functionSourceFile: /src/pdns/pdns/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Receiver()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/channel.hh:88,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 1
    argNames:
    - ' descriptor'
    argTypes:
    - FDWrapper
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 87
    functionDepth: 0
    functionLinenumber: 87
    functionLinenumberEnd: 90
    functionName: pdns::channel::Receiver::Receiver
    functionSourceFile: /src/pdns/pdns/channel.hh
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void Receiver(FDWrapper&& descriptor, bool throwOnEOF = true)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 91
    functionDepth: 0
    functionLinenumber: 91
    functionLinenumberEnd: 91
    functionName: pdns::channel::Receiver::Receiver
    functionSourceFile: /src/pdns/pdns/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Receiver(const Receiver&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 92
    functionDepth: 0
    functionLinenumber: 92
    functionLinenumberEnd: 92
    functionName: '& operator=(const Receiver&)'
    functionSourceFile: /src/pdns/pdns/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Receiver
    signature: Receiver & operator=(const Receiver&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 93
    functionDepth: 0
    functionLinenumber: 93
    functionLinenumberEnd: 93
    functionName: pdns::channel::Receiver::Receiver
    functionSourceFile: /src/pdns/pdns/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Receiver(Receiver&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 94
    functionDepth: 0
    functionLinenumber: 94
    functionLinenumberEnd: 94
    functionName: '& operator=(Receiver&&)'
    functionSourceFile: /src/pdns/pdns/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Receiver
    signature: Receiver & operator=(Receiver&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 95
    functionDepth: 0
    functionLinenumber: 95
    functionLinenumberEnd: 95
    functionName: ~Receiver()
    functionSourceFile: /src/pdns/pdns/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~Receiver()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getHandle
      Src: /src/pdns/pdns/channel.hh:113,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 111
    functionDepth: 0
    functionLinenumber: 111
    functionLinenumberEnd: 114
    functionName: pdns::channel::Receiver::getDescriptor
    functionSourceFile: /src/pdns/pdns/channel.hh
    functionUses: 0
    functionsReached:
    - getHandle
    linkageType: ''
    returnType: int
    signature: int getDescriptor() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 118
    functionDepth: 0
    functionLinenumber: 118
    functionLinenumberEnd: 121
    functionName: pdns::channel::Receiver::isClosed
    functionSourceFile: /src/pdns/pdns/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool isClosed() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 147
    functionDepth: 0
    functionLinenumber: 147
    functionLinenumberEnd: 147
    functionName: pdns::channel::Notifier::Notifier
    functionSourceFile: /src/pdns/pdns/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Notifier()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 149
      start: 149
    functionDepth: 0
    functionLinenumber: 149
    functionLinenumberEnd: 149
    functionName: pdns::channel::Notifier::Notifier
    functionSourceFile: /src/pdns/pdns/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Notifier(const Notifier&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 150
      start: 150
    functionDepth: 0
    functionLinenumber: 150
    functionLinenumberEnd: 150
    functionName: '& operator=(const Notifier&)'
    functionSourceFile: /src/pdns/pdns/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Notifier
    signature: Notifier & operator=(const Notifier&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 151
      start: 151
    functionDepth: 0
    functionLinenumber: 151
    functionLinenumberEnd: 151
    functionName: pdns::channel::Notifier::Notifier
    functionSourceFile: /src/pdns/pdns/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Notifier(Notifier&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 152
      start: 152
    functionDepth: 0
    functionLinenumber: 152
    functionLinenumberEnd: 152
    functionName: '& operator=(Notifier&&)'
    functionSourceFile: /src/pdns/pdns/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Notifier
    signature: Notifier & operator=(Notifier&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 153
      start: 153
    functionDepth: 0
    functionLinenumber: 153
    functionLinenumberEnd: 153
    functionName: ~Notifier()
    functionSourceFile: /src/pdns/pdns/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~Notifier()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 176
      start: 176
    functionDepth: 0
    functionLinenumber: 176
    functionLinenumberEnd: 176
    functionName: pdns::channel::Waiter::Waiter
    functionSourceFile: /src/pdns/pdns/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Waiter()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 178
      start: 178
    functionDepth: 0
    functionLinenumber: 178
    functionLinenumberEnd: 178
    functionName: pdns::channel::Waiter::Waiter
    functionSourceFile: /src/pdns/pdns/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Waiter(const Waiter&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 179
      start: 179
    functionDepth: 0
    functionLinenumber: 179
    functionLinenumberEnd: 179
    functionName: '& operator=(const Waiter&)'
    functionSourceFile: /src/pdns/pdns/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Waiter
    signature: Waiter & operator=(const Waiter&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 180
      start: 180
    functionDepth: 0
    functionLinenumber: 180
    functionLinenumberEnd: 180
    functionName: pdns::channel::Waiter::Waiter
    functionSourceFile: /src/pdns/pdns/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Waiter(Waiter&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 181
      start: 181
    functionDepth: 0
    functionLinenumber: 181
    functionLinenumberEnd: 181
    functionName: '& operator=(Waiter&&)'
    functionSourceFile: /src/pdns/pdns/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Waiter
    signature: Waiter & operator=(Waiter&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 182
      start: 182
    functionDepth: 0
    functionLinenumber: 182
    functionLinenumberEnd: 182
    functionName: ~Waiter()
    functionSourceFile: /src/pdns/pdns/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~Waiter()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 200
      start: 197
    functionDepth: 0
    functionLinenumber: 197
    functionLinenumberEnd: 200
    functionName: pdns::channel::Waiter::isClosed
    functionSourceFile: /src/pdns/pdns/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool isClosed() const
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/channel.hh:222,1
    - Dst: auto::get
      Src: /src/pdns/pdns/channel.hh:223,1
    - Dst: __tsan_release
      Src: /src/pdns/pdns/channel.hh:227,1
    - Dst: write
      Src: /src/pdns/pdns/channel.hh:229,1
    - Dst: getHandle
      Src: /src/pdns/pdns/channel.hh:229,1
    - Dst: auto::release
      Src: /src/pdns/pdns/channel.hh:233,1
    - Dst: __tsan_acquire
      Src: /src/pdns/pdns/channel.hh:238,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/channel.hh:240,1
    - Dst: __tsan_acquire
      Src: /src/pdns/pdns/channel.hh:244,1
    - Dst: std::move
      Src: /src/pdns/pdns/channel.hh:250,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/channel.hh:254,1
    - Dst: stringerror
      Src: /src/pdns/pdns/channel.hh:254,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 23
    argCount: 1
    argNames:
    - ' object'
    argTypes:
    - std::unique_ptr<T, D>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 258
      start: 218
    functionDepth: 0
    functionLinenumber: 218
    functionLinenumberEnd: 258
    functionName: pdns::channel::Sender<T, D>::send
    functionSourceFile: /src/pdns/pdns/channel.hh
    functionUses: 0
    functionsReached:
    - std::move
    - __tsan_acquire
    - auto::get
    - __tsan_release
    - std::runtime_error
    - stringerror
    - getHandle
    - write
    - auto::release
    linkageType: ''
    returnType: bool
    signature: bool Sender<T, D>::send(std::unique_ptr<T, D>&& object) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: reset
      Src: /src/pdns/pdns/channel.hh:263,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 264
      start: 261
    functionDepth: 0
    functionLinenumber: 261
    functionLinenumberEnd: 264
    functionName: pdns::channel::Sender<T, D>::close
    functionSourceFile: /src/pdns/pdns/channel.hh
    functionUses: 0
    functionsReached:
    - reset
    linkageType: ''
    returnType: void
    signature: void Sender<T, D>::close()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::channel::Receiver<T, D>::receive
      Src: /src/pdns/pdns/channel.hh:269,1
    - Dst: D
      Src: /src/pdns/pdns/channel.hh:269,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 270
      start: 267
    functionDepth: 0
    functionLinenumber: 267
    functionLinenumberEnd: 270
    functionName: pdns::channel::Receiver<T, D>::receive
    functionSourceFile: /src/pdns/pdns/channel.hh
    functionUses: 4
    functionsReached:
    - pdns::channel::Receiver<T, D>::receive
    - D
    linkageType: ''
    returnType: std::optional<std::unique_ptr<T, D>>
    signature: std::optional<std::unique_ptr<T, D>> Receiver<T, D>::receive()
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: read
      Src: /src/pdns/pdns/channel.hh:278,1
    - Dst: getHandle
      Src: /src/pdns/pdns/channel.hh:278,1
    - Dst: __tsan_acquire
      Src: /src/pdns/pdns/channel.hh:281,1
    - Dst: std::unique_ptr<T, D>
      Src: /src/pdns/pdns/channel.hh:283,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/channel.hh:290,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/channel.hh:299,1
    - Dst: stringerror
      Src: /src/pdns/pdns/channel.hh:299,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/channel.hh:302,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 25
    argCount: 1
    argNames:
    - deleter
    argTypes:
    - D
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 305
      start: 273
    functionDepth: 0
    functionLinenumber: 273
    functionLinenumberEnd: 305
    functionName: pdns::channel::Receiver<T, D>::receive
    functionSourceFile: /src/pdns/pdns/channel.hh
    functionUses: 4
    functionsReached:
    - __tsan_acquire
    - read
    - std::runtime_error
    - std::unique_ptr<T, D>
    - stringerror
    - getHandle
    linkageType: ''
    returnType: std::optional<std::unique_ptr<T, D>>
    signature: std::optional<std::unique_ptr<T, D>> Receiver<T, D>::receive(D deleter)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pipe
      Src: /src/pdns/pdns/channel.hh:311,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/channel.hh:312,1
    - Dst: stringerror
      Src: /src/pdns/pdns/channel.hh:312,1
    - Dst: setNonBlocking
      Src: /src/pdns/pdns/channel.hh:317,1
    - Dst: FDWrapper::getHandle
      Src: /src/pdns/pdns/channel.hh:317,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/channel.hh:319,1
    - Dst: stringerror
      Src: /src/pdns/pdns/channel.hh:319,1
    - Dst: setNonBlocking
      Src: /src/pdns/pdns/channel.hh:322,1
    - Dst: FDWrapper::getHandle
      Src: /src/pdns/pdns/channel.hh:322,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/channel.hh:324,1
    - Dst: stringerror
      Src: /src/pdns/pdns/channel.hh:324,1
    - Dst: getPipeBufferSize
      Src: /src/pdns/pdns/channel.hh:327,1
    - Dst: FDWrapper::getHandle
      Src: /src/pdns/pdns/channel.hh:327,1
    - Dst: setPipeBufferSize
      Src: /src/pdns/pdns/channel.hh:328,1
    - Dst: FDWrapper::getHandle
      Src: /src/pdns/pdns/channel.hh:328,1
    - Dst: Sender<T, D>
      Src: /src/pdns/pdns/channel.hh:331,1
    - Dst: std::move
      Src: /src/pdns/pdns/channel.hh:331,1
    - Dst: Receiver<T, D>
      Src: /src/pdns/pdns/channel.hh:331,1
    - Dst: std::move
      Src: /src/pdns/pdns/channel.hh:331,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 14
    argCount: 4
    argNames:
    - senderBlockingMode
    - receiverBlockingMode
    - pipeBufferSize
    - throwOnEOF
    argTypes:
    - SenderBlockingMode
    - ReceiverBlockingMode
    - size_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 332
      start: 308
    functionDepth: 0
    functionLinenumber: 308
    functionLinenumberEnd: 332
    functionName: pdns::channel::createObjectQueue
    functionSourceFile: /src/pdns/pdns/channel.hh
    functionUses: 0
    functionsReached:
    - std::move
    - FDWrapper::getHandle
    - std::runtime_error
    - setNonBlocking
    - stringerror
    - pipe
    - Receiver<T, D>
    - setPipeBufferSize
    - getPipeBufferSize
    - Sender<T, D>
    linkageType: ''
    returnType: std::pair<Sender<T, D>, Receiver<T, D>>
    signature: std::pair<Sender<T, D>, Receiver<T, D>> createObjectQueue(SenderBlockingMode
      senderBlockingMode, ReceiverBlockingMode receiverBlockingMode, size_t pipeBufferSize,
      bool throwOnEOF)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 39
    functionDepth: 0
    functionLinenumber: 39
    functionLinenumberEnd: 43
    functionName: StatBag::StatBag
    functionSourceFile: /src/pdns/pdns/statbag.cc
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void StatBag::StatBag()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: count
      Src: /src/pdns/pdns/statbag.cc:47,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/statbag.cc:48,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - key
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 45
    functionDepth: 0
    functionLinenumber: 45
    functionLinenumberEnd: 50
    functionName: StatBag::exists
    functionSourceFile: /src/pdns/pdns/statbag.cc
    functionUses: 0
    functionsReached:
    - PDNSException
    - count
    linkageType: ''
    returnType: void
    signature: void StatBag::exists(const string &key)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: find
      Src: /src/pdns/pdns/statbag.cc:58,1
    - Dst: end
      Src: /src/pdns/pdns/statbag.cc:58,1
    - Dst: first::find
      Src: /src/pdns/pdns/statbag.cc:60,1
    - Dst: find
      Src: /src/pdns/pdns/statbag.cc:67,1
    - Dst: end
      Src: /src/pdns/pdns/statbag.cc:67,1
    - Dst: first::find
      Src: /src/pdns/pdns/statbag.cc:69,1
    - Dst: second
      Src: /src/pdns/pdns/statbag.cc:71,1
    - Dst: ostringstream::str
      Src: /src/pdns/pdns/statbag.cc:73,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 15
    argCount: 1
    argNames:
    - prefix
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 52
    functionDepth: 0
    functionLinenumber: 52
    functionLinenumberEnd: 75
    functionName: StatBag::directory
    functionSourceFile: /src/pdns/pdns/statbag.cc
    functionUses: 0
    functionsReached:
    - second
    - end
    - ostringstream::str
    - first::find
    - find
    linkageType: ''
    returnType: string
    signature: string StatBag::directory(const string &prefix)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: find
      Src: /src/pdns/pdns/statbag.cc:82,1
    - Dst: end
      Src: /src/pdns/pdns/statbag.cc:82,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/statbag.cc:84,1
    - Dst: find
      Src: /src/pdns/pdns/statbag.cc:88,1
    - Dst: end
      Src: /src/pdns/pdns/statbag.cc:88,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/statbag.cc:90,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 77
    functionDepth: 0
    functionLinenumber: 77
    functionLinenumberEnd: 96
    functionName: StatBag::getEntries
    functionSourceFile: /src/pdns/pdns/statbag.cc
    functionUses: 1
    functionsReached:
    - vector::push_back
    - end
    - find
    linkageType: ''
    returnType: vector<string>
    signature: vector<string> StatBag::getEntries()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: StatBag::exists
      Src: /src/pdns/pdns/statbag.cc:100,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - item
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 98
    functionDepth: 1
    functionLinenumber: 98
    functionLinenumberEnd: 102
    functionName: StatBag::getDescrip
    functionSourceFile: /src/pdns/pdns/statbag.cc
    functionUses: 0
    functionsReached:
    - StatBag::exists
    linkageType: ''
    returnType: string
    signature: string StatBag::getDescrip(const string &item)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: StatBag::exists
      Src: /src/pdns/pdns/statbag.cc:106,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - item
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 104
    functionDepth: 1
    functionLinenumber: 104
    functionLinenumberEnd: 108
    functionName: StatBag::getStatType
    functionSourceFile: /src/pdns/pdns/statbag.cc
    functionUses: 0
    functionsReached:
    - StatBag::exists
    linkageType: ''
    returnType: StatType
    signature: StatType StatBag::getStatType(const string &item)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: count
      Src: /src/pdns/pdns/statbag.cc:112,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/statbag.cc:118,1
    - Dst: make_unique<AtomicCounter>
      Src: /src/pdns/pdns/statbag.cc:122,1
    - Dst: std::move
      Src: /src/pdns/pdns/statbag.cc:123,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 3
    argNames:
    - key
    - descrip
    - statType
    argTypes:
    - string
    - string
    - StatType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 110
    functionDepth: 0
    functionLinenumber: 110
    functionLinenumberEnd: 126
    functionName: StatBag::declare
    functionSourceFile: /src/pdns/pdns/statbag.cc
    functionUses: 0
    functionsReached:
    - PDNSException
    - make_unique<AtomicCounter>
    - std::move
    - count
    linkageType: ''
    returnType: void
    signature: void StatBag::declare(const string &key, const string &descrip, StatType
      statType)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: count
      Src: /src/pdns/pdns/statbag.cc:130,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/statbag.cc:131,1
    - Dst: std::move
      Src: /src/pdns/pdns/statbag.cc:134,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 4
    argNames:
    - key
    - descrip
    - func
    - statType
    argTypes:
    - string
    - string
    - StatBag::func_t
    - StatType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 137
      start: 128
    functionDepth: 0
    functionLinenumber: 128
    functionLinenumberEnd: 137
    functionName: StatBag::declare
    functionSourceFile: /src/pdns/pdns/statbag.cc
    functionUses: 0
    functionsReached:
    - PDNSException
    - std::move
    - count
    linkageType: ''
    returnType: void
    signature: void StatBag::declare(const string &key, const string &descrip, StatBag::func_t
      func, StatType statType)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: StatBag::exists
      Src: /src/pdns/pdns/statbag.cc:142,1
    - Dst: store
      Src: /src/pdns/pdns/statbag.cc:143,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - key
    - value
    argTypes:
    - string
    - unsigned long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 144
      start: 140
    functionDepth: 1
    functionLinenumber: 140
    functionLinenumberEnd: 144
    functionName: StatBag::set
    functionSourceFile: /src/pdns/pdns/statbag.cc
    functionUses: 0
    functionsReached:
    - StatBag::exists
    - store
    linkageType: ''
    returnType: void
    signature: void StatBag::set(const string &key, unsigned long value)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: StatBag::exists
      Src: /src/pdns/pdns/statbag.cc:148,1
    - Dst: find
      Src: /src/pdns/pdns/statbag.cc:149,1
    - Dst: end
      Src: /src/pdns/pdns/statbag.cc:150,1
    - Dst: funcstats_t::const_iterator::second
      Src: /src/pdns/pdns/statbag.cc:151,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - key
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 154
      start: 146
    functionDepth: 1
    functionLinenumber: 146
    functionLinenumberEnd: 154
    functionName: StatBag::read
    functionSourceFile: /src/pdns/pdns/statbag.cc
    functionUses: 1
    functionsReached:
    - funcstats_t::const_iterator::second
    - StatBag::exists
    - end
    - find
    linkageType: ''
    returnType: unsigned long
    signature: unsigned long StatBag::read(const string &key)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: StatBag::read
      Src: /src/pdns/pdns/statbag.cc:159,1
    - Dst: ostringstream::str
      Src: /src/pdns/pdns/statbag.cc:160,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - key
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 161
      start: 156
    functionDepth: 0
    functionLinenumber: 156
    functionLinenumberEnd: 161
    functionName: StatBag::getValueStr
    functionSourceFile: /src/pdns/pdns/statbag.cc
    functionUses: 0
    functionsReached:
    - StatBag::read
    - ostringstream::str
    linkageType: ''
    returnType: string
    signature: string StatBag::getValueStr(const string &key)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: StatBag::exists
      Src: /src/pdns/pdns/statbag.cc:165,1
    - Dst: get
      Src: /src/pdns/pdns/statbag.cc:166,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - key
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 167
      start: 163
    functionDepth: 1
    functionLinenumber: 163
    functionLinenumberEnd: 167
    functionName: StatBag::getPointer
    functionSourceFile: /src/pdns/pdns/statbag.cc
    functionUses: 0
    functionsReached:
    - StatBag::exists
    - get
    linkageType: ''
    returnType: AtomicCounter
    signature: AtomicCounter *StatBag::getPointer(const string &key)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 169
      start: 169
    functionDepth: 0
    functionLinenumber: 169
    functionLinenumberEnd: 169
    functionName: StatBag::~StatBag()
    functionSourceFile: /src/pdns/pdns/statbag.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void StatBag::~StatBag()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: set_capacity
      Src: /src/pdns/pdns/statbag.cc:174,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - size
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 175
      start: 172
    functionDepth: 0
    functionLinenumber: 172
    functionLinenumberEnd: 175
    functionName: StatRing<T,Comp>::StatRing
    functionSourceFile: /src/pdns/pdns/statbag.cc
    functionUses: 0
    functionsReached:
    - set_capacity
    linkageType: ''
    returnType: void
    signature: void StatRing<T,Comp>::StatRing(unsigned int size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: push_back
      Src: /src/pdns/pdns/statbag.cc:180,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' t'
    argTypes:
    - T
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 181
      start: 178
    functionDepth: 0
    functionLinenumber: 178
    functionLinenumberEnd: 181
    functionName: StatRing<T,Comp>::account
    functionSourceFile: /src/pdns/pdns/statbag.cc
    functionUses: 0
    functionsReached:
    - push_back
    linkageType: ''
    returnType: void
    signature: void StatRing<T,Comp>::account(const T& t)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: capacity
      Src: /src/pdns/pdns/statbag.cc:186,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 187
      start: 184
    functionDepth: 0
    functionLinenumber: 184
    functionLinenumberEnd: 187
    functionName: StatRing<T,Comp>::getSize
    functionSourceFile: /src/pdns/pdns/statbag.cc
    functionUses: 0
    functionsReached:
    - capacity
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t StatRing<T,Comp>::getSize() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/statbag.cc:192,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 193
      start: 190
    functionDepth: 0
    functionLinenumber: 190
    functionLinenumberEnd: 193
    functionName: StatRing<T,Comp>::getEntriesCount
    functionSourceFile: /src/pdns/pdns/statbag.cc
    functionUses: 0
    functionsReached:
    - size
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t StatRing<T,Comp>::getEntriesCount() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: set_capacity
      Src: /src/pdns/pdns/statbag.cc:198,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - newsize
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 199
      start: 196
    functionDepth: 0
    functionLinenumber: 196
    functionLinenumberEnd: 199
    functionName: StatRing<T,Comp>::resize
    functionSourceFile: /src/pdns/pdns/statbag.cc
    functionUses: 0
    functionsReached:
    - set_capacity
    linkageType: ''
    returnType: void
    signature: void StatRing<T,Comp>::resize(unsigned int newsize)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - str
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 205
      start: 202
    functionDepth: 0
    functionLinenumber: 202
    functionLinenumberEnd: 205
    functionName: StatRing<T,Comp>::setHelp
    functionSourceFile: /src/pdns/pdns/statbag.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void StatRing<T,Comp>::setHelp(const string &str)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 211
      start: 208
    functionDepth: 0
    functionLinenumber: 208
    functionLinenumberEnd: 211
    functionName: StatRing<T,Comp>::getHelp
    functionSourceFile: /src/pdns/pdns/statbag.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: string
    signature: string StatRing<T,Comp>::getHelp() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: begin
      Src: /src/pdns/pdns/statbag.cc:218,1
    - Dst: end
      Src: /src/pdns/pdns/statbag.cc:218,1
    - Dst: map::begin
      Src: /src/pdns/pdns/statbag.cc:223,1
    - Dst: map::end
      Src: /src/pdns/pdns/statbag.cc:223,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/statbag.cc:224,1
    - Dst: sort
      Src: /src/pdns/pdns/statbag.cc:226,1
    - Dst: vector::begin
      Src: /src/pdns/pdns/statbag.cc:226,1
    - Dst: vector::end
      Src: /src/pdns/pdns/statbag.cc:226,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 229
      start: 215
    functionDepth: 0
    functionLinenumber: 215
    functionLinenumberEnd: 229
    functionName: StatRing<T,Comp>::get
    functionSourceFile: /src/pdns/pdns/statbag.cc
    functionUses: 0
    functionsReached:
    - vector::begin
    - vector::push_back
    - map::end
    - map::begin
    - end
    - vector::end
    - sort
    - begin
    linkageType: ''
    returnType: vector<pair<T, unsigned int> >
    signature: vector<pair<T, unsigned int> > StatRing<T,Comp>::get() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: StatBag::declare
      Src: /src/pdns/pdns/statbag.cc:233,1
    - Dst: static_cast<uint64_t>
      Src: /src/pdns/pdns/statbag.cc:233,1
    - Dst: StatBag::getRingEntriesCount
      Src: /src/pdns/pdns/statbag.cc:233,1
    - Dst: StatBag::declare
      Src: /src/pdns/pdns/statbag.cc:234,1
    - Dst: static_cast<uint64_t>
      Src: /src/pdns/pdns/statbag.cc:234,1
    - Dst: StatBag::getRingSize
      Src: /src/pdns/pdns/statbag.cc:234,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - ' name'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 235
      start: 231
    functionDepth: 1
    functionLinenumber: 231
    functionLinenumberEnd: 235
    functionName: StatBag::registerRingStats
    functionSourceFile: /src/pdns/pdns/statbag.cc
    functionUses: 0
    functionsReached:
    - StatBag::getRingEntriesCount
    - StatBag::getRingSize
    - static_cast<uint64_t>
    - StatBag::declare
    linkageType: ''
    returnType: void
    signature: void StatBag::registerRingStats(const string& name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: emplace
      Src: /src/pdns/pdns/statbag.cc:239,1
    - Dst: lock
      Src: /src/pdns/pdns/statbag.cc:240,1
    - Dst: StatBag::registerRingStats
      Src: /src/pdns/pdns/statbag.cc:241,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - name
    - help
    - size
    argTypes:
    - string
    - string
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 242
      start: 237
    functionDepth: 2
    functionLinenumber: 237
    functionLinenumberEnd: 242
    functionName: StatBag::declareRing
    functionSourceFile: /src/pdns/pdns/statbag.cc
    functionUses: 0
    functionsReached:
    - StatBag::registerRingStats
    - emplace
    - lock
    linkageType: ''
    returnType: void
    signature: void StatBag::declareRing(const string &name, const string &help, unsigned
      int size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: emplace
      Src: /src/pdns/pdns/statbag.cc:246,1
    - Dst: lock
      Src: /src/pdns/pdns/statbag.cc:247,1
    - Dst: StatBag::registerRingStats
      Src: /src/pdns/pdns/statbag.cc:248,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - name
    - help
    - size
    argTypes:
    - string
    - string
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 249
      start: 244
    functionDepth: 2
    functionLinenumber: 244
    functionLinenumberEnd: 249
    functionName: StatBag::declareComboRing
    functionSourceFile: /src/pdns/pdns/statbag.cc
    functionUses: 0
    functionsReached:
    - StatBag::registerRingStats
    - emplace
    - lock
    linkageType: ''
    returnType: void
    signature: void StatBag::declareComboRing(const string &name, const string &help,
      unsigned int size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: emplace
      Src: /src/pdns/pdns/statbag.cc:253,1
    - Dst: lock
      Src: /src/pdns/pdns/statbag.cc:254,1
    - Dst: StatBag::registerRingStats
      Src: /src/pdns/pdns/statbag.cc:255,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - name
    - help
    - size
    argTypes:
    - string
    - string
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 256
      start: 251
    functionDepth: 2
    functionLinenumber: 251
    functionLinenumberEnd: 256
    functionName: StatBag::declareDNSNameQTypeRing
    functionSourceFile: /src/pdns/pdns/statbag.cc
    functionUses: 0
    functionsReached:
    - StatBag::registerRingStats
    - emplace
    - lock
    linkageType: ''
    returnType: void
    signature: void StatBag::declareDNSNameQTypeRing(const string &name, const string
      &help, unsigned int size)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: count
      Src: /src/pdns/pdns/statbag.cc:260,1
    - Dst: lock
      Src: /src/pdns/pdns/statbag.cc:261,1
    - Dst: count
      Src: /src/pdns/pdns/statbag.cc:265,1
    - Dst: lock
      Src: /src/pdns/pdns/statbag.cc:266,1
    - Dst: vector::emplace_back
      Src: /src/pdns/pdns/statbag.cc:267,1
    - Dst: ca::toString
      Src: /src/pdns/pdns/statbag.cc:267,1
    - Dst: count
      Src: /src/pdns/pdns/statbag.cc:269,1
    - Dst: lock
      Src: /src/pdns/pdns/statbag.cc:270,1
    - Dst: vector::emplace_back
      Src: /src/pdns/pdns/statbag.cc:271,1
    - Dst: std::get<0>
      Src: /src/pdns/pdns/statbag.cc:271,1
    - Dst: std::get<1>
      Src: /src/pdns/pdns/statbag.cc:271,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 1
    argNames:
    - name
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 275
      start: 258
    functionDepth: 0
    functionLinenumber: 258
    functionLinenumberEnd: 275
    functionName: StatBag::getRing
    functionSourceFile: /src/pdns/pdns/statbag.cc
    functionUses: 0
    functionsReached:
    - count
    - std::get<0>
    - std::get<1>
    - lock
    - ca::toString
    - vector::emplace_back
    linkageType: ''
    returnType: vector<pair<string, unsigned int> >
    signature: vector<pair<string, unsigned int> > StatBag::getRing(const string &name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: clear
      Src: /src/pdns/pdns/statbag.cc:280,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 281
      start: 278
    functionDepth: 1
    functionLinenumber: 278
    functionLinenumberEnd: 281
    functionName: StatRing<T,Comp>::reset
    functionSourceFile: /src/pdns/pdns/statbag.cc
    functionUses: 0
    functionsReached:
    - clear
    linkageType: ''
    returnType: void
    signature: void StatRing<T,Comp>::reset()
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: count
      Src: /src/pdns/pdns/statbag.cc:285,1
    - Dst: lock
      Src: /src/pdns/pdns/statbag.cc:286,1
    - Dst: count
      Src: /src/pdns/pdns/statbag.cc:287,1
    - Dst: lock
      Src: /src/pdns/pdns/statbag.cc:288,1
    - Dst: count
      Src: /src/pdns/pdns/statbag.cc:289,1
    - Dst: lock
      Src: /src/pdns/pdns/statbag.cc:290,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 1
    argNames:
    - name
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 291
      start: 283
    functionDepth: 0
    functionLinenumber: 283
    functionLinenumberEnd: 291
    functionName: StatBag::resetRing
    functionSourceFile: /src/pdns/pdns/statbag.cc
    functionUses: 0
    functionsReached:
    - lock
    - count
    linkageType: ''
    returnType: void
    signature: void StatBag::resetRing(const string &name)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: count
      Src: /src/pdns/pdns/statbag.cc:295,1
    - Dst: lock
      Src: /src/pdns/pdns/statbag.cc:296,1
    - Dst: count
      Src: /src/pdns/pdns/statbag.cc:297,1
    - Dst: lock
      Src: /src/pdns/pdns/statbag.cc:298,1
    - Dst: count
      Src: /src/pdns/pdns/statbag.cc:299,1
    - Dst: lock
      Src: /src/pdns/pdns/statbag.cc:300,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 2
    argNames:
    - name
    - newsize
    argTypes:
    - string
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 301
      start: 293
    functionDepth: 0
    functionLinenumber: 293
    functionLinenumberEnd: 301
    functionName: StatBag::resizeRing
    functionSourceFile: /src/pdns/pdns/statbag.cc
    functionUses: 0
    functionsReached:
    - lock
    - count
    linkageType: ''
    returnType: void
    signature: void StatBag::resizeRing(const string &name, unsigned int newsize)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: count
      Src: /src/pdns/pdns/statbag.cc:306,1
    - Dst: lock
      Src: /src/pdns/pdns/statbag.cc:307,1
    - Dst: count
      Src: /src/pdns/pdns/statbag.cc:308,1
    - Dst: lock
      Src: /src/pdns/pdns/statbag.cc:309,1
    - Dst: count
      Src: /src/pdns/pdns/statbag.cc:310,1
    - Dst: lock
      Src: /src/pdns/pdns/statbag.cc:311,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - name
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 313
      start: 304
    functionDepth: 0
    functionLinenumber: 304
    functionLinenumberEnd: 313
    functionName: StatBag::getRingSize
    functionSourceFile: /src/pdns/pdns/statbag.cc
    functionUses: 1
    functionsReached:
    - lock
    - count
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t StatBag::getRingSize(const string &name)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: count
      Src: /src/pdns/pdns/statbag.cc:317,1
    - Dst: lock
      Src: /src/pdns/pdns/statbag.cc:318,1
    - Dst: count
      Src: /src/pdns/pdns/statbag.cc:319,1
    - Dst: lock
      Src: /src/pdns/pdns/statbag.cc:320,1
    - Dst: count
      Src: /src/pdns/pdns/statbag.cc:321,1
    - Dst: lock
      Src: /src/pdns/pdns/statbag.cc:322,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - name
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 324
      start: 315
    functionDepth: 0
    functionLinenumber: 315
    functionLinenumberEnd: 324
    functionName: StatBag::getRingEntriesCount
    functionSourceFile: /src/pdns/pdns/statbag.cc
    functionUses: 1
    functionsReached:
    - lock
    - count
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t StatBag::getRingEntriesCount(const string &name)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: count
      Src: /src/pdns/pdns/statbag.cc:328,1
    - Dst: lock
      Src: /src/pdns/pdns/statbag.cc:329,1
    - Dst: count
      Src: /src/pdns/pdns/statbag.cc:330,1
    - Dst: lock
      Src: /src/pdns/pdns/statbag.cc:331,1
    - Dst: count
      Src: /src/pdns/pdns/statbag.cc:332,1
    - Dst: lock
      Src: /src/pdns/pdns/statbag.cc:333,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - name
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 335
      start: 326
    functionDepth: 0
    functionLinenumber: 326
    functionLinenumberEnd: 335
    functionName: StatBag::getRingTitle
    functionSourceFile: /src/pdns/pdns/statbag.cc
    functionUses: 0
    functionsReached:
    - lock
    - count
    linkageType: ''
    returnType: string
    signature: string StatBag::getRingTitle(const string &name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vector::push_back
      Src: /src/pdns/pdns/statbag.cc:341,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/statbag.cc:343,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/statbag.cc:345,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 348
      start: 337
    functionDepth: 0
    functionLinenumber: 337
    functionLinenumberEnd: 348
    functionName: StatBag::listRings
    functionSourceFile: /src/pdns/pdns/statbag.cc
    functionUses: 0
    functionsReached:
    - vector::push_back
    linkageType: ''
    returnType: vector<string>
    signature: vector<string> StatBag::listRings() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: count
      Src: /src/pdns/pdns/statbag.cc:352,1
    - Dst: count
      Src: /src/pdns/pdns/statbag.cc:352,1
    - Dst: count
      Src: /src/pdns/pdns/statbag.cc:352,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 2
    argCount: 1
    argNames:
    - name
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 353
      start: 350
    functionDepth: 0
    functionLinenumber: 350
    functionLinenumberEnd: 353
    functionName: StatBag::ringExists
    functionSourceFile: /src/pdns/pdns/statbag.cc
    functionUses: 0
    functionsReached:
    - count
    linkageType: ''
    returnType: bool
    signature: bool StatBag::ringExists(const string &name) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: insert
      Src: /src/pdns/pdns/statbag.cc:356,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' str'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 357
      start: 355
    functionDepth: 1
    functionLinenumber: 355
    functionLinenumberEnd: 357
    functionName: StatBag::blacklist
    functionSourceFile: /src/pdns/pdns/statbag.cc
    functionUses: 0
    functionsReached:
    - insert
    linkageType: ''
    returnType: void
    signature: void StatBag::blacklist(const string& str)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: localtime_r
      Src: /src/pdns/pdns/serialtweaker.cc:33,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - t
    - seq
    argTypes:
    - time_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 39
      start: 30
    functionDepth: 0
    functionLinenumber: 30
    functionLinenumberEnd: 39
    functionName: localtime_format_YYYYMMDDSS
    functionSourceFile: /src/pdns/pdns/serialtweaker.cc
    functionUses: 0
    functionsReached:
    - localtime_r
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t localtime_format_YYYYMMDDSS(time_t t, uint32_t seq)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: pdns_iequals
      Src: /src/pdns/pdns/serialtweaker.cc:43,1
    - Dst: getStartOfWeek
      Src: /src/pdns/pdns/serialtweaker.cc:44,1
    - Dst: localtime_format_YYYYMMDDSS
      Src: /src/pdns/pdns/serialtweaker.cc:45,1
    - Dst: localtime_format_YYYYMMDDSS
      Src: /src/pdns/pdns/serialtweaker.cc:46,1
    - Dst: pdns_iequals
      Src: /src/pdns/pdns/serialtweaker.cc:57,1
    - Dst: getStartOfWeek
      Src: /src/pdns/pdns/serialtweaker.cc:58,1
    - Dst: pdns_iequals
      Src: /src/pdns/pdns/serialtweaker.cc:61,1
    - Dst: time
      Src: /src/pdns/pdns/serialtweaker.cc:63,1
    - Dst: pdns_iequals
      Src: /src/pdns/pdns/serialtweaker.cc:65,1
    - Dst: getStartOfWeek
      Src: /src/pdns/pdns/serialtweaker.cc:66,1
    - Dst: pdns_iequals
      Src: /src/pdns/pdns/serialtweaker.cc:70,1
    - Dst: empty
      Src: /src/pdns/pdns/serialtweaker.cc:73,1
    - Dst: SLOG
      Src: /src/pdns/pdns/serialtweaker.cc:74,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/serialtweaker.cc:75,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/serialtweaker.cc:75,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/serialtweaker.cc:75,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 28
    argCount: 4
    argNames:
    - old_serial
    - ' kind'
    - ' zonename'
    - slog
    argTypes:
    - uint32_t
    - string
    - ZoneName
    - Logr::log_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 41
    functionDepth: 1
    functionLinenumber: 41
    functionLinenumberEnd: 81
    functionName: calculateEditSOA
    functionSourceFile: /src/pdns/pdns/serialtweaker.cc
    functionUses: 1
    functionsReached:
    - localtime_format_YYYYMMDDSS
    - SLOG
    - Logr::log_t::info
    - Logging::Loggable
    - pdns_iequals
    - time
    - empty
    - getStartOfWeek
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t calculateEditSOA(uint32_t old_serial, const string& kind,
      const ZoneName& zonename, Logr::log_t slog)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getSoaEdit
      Src: /src/pdns/pdns/serialtweaker.cc:86,1
    - Dst: calculateEditSOA
      Src: /src/pdns/pdns/serialtweaker.cc:87,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - old_serial
    - ' dsk'
    - ' zonename'
    - slog
    argTypes:
    - uint32_t
    - DNSSECKeeper
    - ZoneName
    - Logr::log_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 83
    functionDepth: 1
    functionLinenumber: 83
    functionLinenumberEnd: 88
    functionName: calculateEditSOA
    functionSourceFile: /src/pdns/pdns/serialtweaker.cc
    functionUses: 2
    functionsReached:
    - getSoaEdit
    - calculateEditSOA
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t calculateEditSOA(uint32_t old_serial, DNSSECKeeper& dsk, const
      ZoneName& zonename, Logr::log_t slog)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: pdns_iequals
      Src: /src/pdns/pdns/serialtweaker.cc:93,1
    - Dst: empty
      Src: /src/pdns/pdns/serialtweaker.cc:95,1
    - Dst: pdns_iequals
      Src: /src/pdns/pdns/serialtweaker.cc:96,1
    - Dst: calculateEditSOA
      Src: /src/pdns/pdns/serialtweaker.cc:97,1
    - Dst: calculateEditSOA
      Src: /src/pdns/pdns/serialtweaker.cc:99,1
    - Dst: pdns_iequals
      Src: /src/pdns/pdns/serialtweaker.cc:107,1
    - Dst: calculateEditSOA
      Src: /src/pdns/pdns/serialtweaker.cc:108,1
    - Dst: pdns_iequals
      Src: /src/pdns/pdns/serialtweaker.cc:110,1
    - Dst: pdns_iequals
      Src: /src/pdns/pdns/serialtweaker.cc:113,1
    - Dst: time
      Src: /src/pdns/pdns/serialtweaker.cc:115,1
    - Dst: pdns_iequals
      Src: /src/pdns/pdns/serialtweaker.cc:117,1
    - Dst: time
      Src: /src/pdns/pdns/serialtweaker.cc:118,1
    - Dst: localtime_format_YYYYMMDDSS
      Src: /src/pdns/pdns/serialtweaker.cc:119,1
    - Dst: empty
      Src: /src/pdns/pdns/serialtweaker.cc:124,1
    - Dst: SLOG
      Src: /src/pdns/pdns/serialtweaker.cc:125,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/serialtweaker.cc:126,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/serialtweaker.cc:126,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/serialtweaker.cc:126,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 33
    argCount: 5
    argNames:
    - old_serial
    - ' increaseKind'
    - ' editKind'
    - ' zonename'
    - slog
    argTypes:
    - uint32_t
    - string
    - string
    - ZoneName
    - Logr::log_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 129
      start: 91
    functionDepth: 2
    functionLinenumber: 91
    functionLinenumberEnd: 129
    functionName: calculateIncreaseSOA
    functionSourceFile: /src/pdns/pdns/serialtweaker.cc
    functionUses: 0
    functionsReached:
    - localtime_format_YYYYMMDDSS
    - SLOG
    - Logr::log_t::info
    - Logging::Loggable
    - pdns_iequals
    - calculateEditSOA
    - time
    - empty
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t calculateIncreaseSOA(uint32_t old_serial, const string& increaseKind,
      const string& editKind, const ZoneName& zonename, Logr::log_t slog)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/serialtweaker.cc:139,1
    - Dst: fillSOAData
      Src: /src/pdns/pdns/serialtweaker.cc:144,1
    - Dst: calculateIncreaseSOA
      Src: /src/pdns/pdns/serialtweaker.cc:146,1
    - Dst: makeSOAContent
      Src: /src/pdns/pdns/serialtweaker.cc:147,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 5
    argNames:
    - ' rr'
    - ' increaseKind'
    - ' editKind'
    - ' zonename'
    - slog
    argTypes:
    - DNSResourceRecord
    - string
    - string
    - ZoneName
    - Logr::log_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 149
      start: 137
    functionDepth: 3
    functionLinenumber: 137
    functionLinenumberEnd: 149
    functionName: increaseSOARecord
    functionSourceFile: /src/pdns/pdns/serialtweaker.cc
    functionUses: 0
    functionsReached:
    - empty
    - makeSOAContent
    - fillSOAData
    - calculateIncreaseSOA
    linkageType: ''
    returnType: bool
    signature: bool increaseSOARecord(DNSResourceRecord& rr, const string& increaseKind,
      const string& editKind, const ZoneName& zonename, Logr::log_t slog)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/serialtweaker.cc:158,1
    - Dst: calculateIncreaseSOA
      Src: /src/pdns/pdns/serialtweaker.cc:161,1
    - Dst: qname
      Src: /src/pdns/pdns/serialtweaker.cc:162,1
    - Dst: makeSOAContent
      Src: /src/pdns/pdns/serialtweaker.cc:163,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 5
    argNames:
    - ' sd'
    - ' increaseKind'
    - ' editKind'
    - ' rrout'
    - slog
    argTypes:
    - SOAData
    - string
    - string
    - DNSResourceRecord
    - Logr::log_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 170
      start: 157
    functionDepth: 3
    functionLinenumber: 157
    functionLinenumberEnd: 170
    functionName: makeIncreasedSOARecord
    functionSourceFile: /src/pdns/pdns/serialtweaker.cc
    functionUses: 2
    functionsReached:
    - empty
    - qname
    - makeSOAContent
    - calculateIncreaseSOA
    linkageType: ''
    returnType: bool
    signature: bool makeIncreasedSOARecord(SOAData& sd, const string& increaseKind,
      const string& editKind, DNSResourceRecord& rrout, Logr::log_t slog)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: calculateEditSOA
      Src: /src/pdns/pdns/serialtweaker.cc:174,1
    - Dst: DNSRecord::DNSRecord
      Src: /src/pdns/pdns/serialtweaker.cc:176,1
    - Dst: qname
      Src: /src/pdns/pdns/serialtweaker.cc:177,1
    - Dst: DNSRecord::setContent
      Src: /src/pdns/pdns/serialtweaker.cc:181,1
    - Dst: makeSOAContent
      Src: /src/pdns/pdns/serialtweaker.cc:181,1
    - Dst: std::move
      Src: /src/pdns/pdns/serialtweaker.cc:187,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 4
    argNames:
    - ' dk'
    - ' sd'
    - place
    - slog
    argTypes:
    - DNSSECKeeper
    - SOAData
    - DNSResourceRecord::Place
    - Logr::log_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 190
      start: 172
    functionDepth: 2
    functionLinenumber: 172
    functionLinenumberEnd: 190
    functionName: makeEditedDNSZRFromSOAData
    functionSourceFile: /src/pdns/pdns/serialtweaker.cc
    functionUses: 2
    functionsReached:
    - std::move
    - DNSRecord::DNSRecord
    - calculateEditSOA
    - makeSOAContent
    - DNSRecord::setContent
    - qname
    linkageType: ''
    returnType: DNSZoneRecord
    signature: DNSZoneRecord makeEditedDNSZRFromSOAData(DNSSECKeeper& dk, const SOAData&
      sd, DNSResourceRecord::Place place, Logr::log_t slog)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: pdns::UniqueFilePtr
      Src: /src/pdns/pdns/dnssecinfra.cc:56,1
    - Dst: fopen
      Src: /src/pdns/pdns/dnssecinfra.cc:56,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/dnssecinfra.cc:58,1
    - Dst: string
      Src: /src/pdns/pdns/dnssecinfra.cc:58,1
    - Dst: stringfgets
      Src: /src/pdns/pdns/dnssecinfra.cc:61,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnssecinfra.cc:61,1
    - Dst: auto::reset
      Src: /src/pdns/pdns/dnssecinfra.cc:64,1
    - Dst: DNSCryptoKeyEngine::makeFromISCString
      Src: /src/pdns/pdns/dnssecinfra.cc:66,1
    - Dst: auto::checkKey
      Src: /src/pdns/pdns/dnssecinfra.cc:69,1
    - Dst: auto::empty
      Src: /src/pdns/pdns/dnssecinfra.cc:71,1
    - Dst: boost::algorithm::join
      Src: /src/pdns/pdns/dnssecinfra.cc:72,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/dnssecinfra.cc:74,1
    - Dst: string
      Src: /src/pdns/pdns/dnssecinfra.cc:74,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 3
    argNames:
    - slog
    - ' drc'
    - fname
    argTypes:
    - Logr::log_t
    - DNSKEYRecordContent
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 53
    functionDepth: 0
    functionLinenumber: 53
    functionLinenumberEnd: 77
    functionName: DNSCryptoKeyEngine::makeFromISCFile
    functionSourceFile: /src/pdns/pdns/dnssecinfra.cc
    functionUses: 1
    functionsReached:
    - auto::get
    - stringfgets
    - fopen
    - DNSCryptoKeyEngine::makeFromISCString
    - runtime_error
    - string
    - auto::reset
    - boost::algorithm::join
    - auto::checkKey
    - pdns::UniqueFilePtr
    - auto::empty
    linkageType: ''
    returnType: std::unique_ptr<DNSCryptoKeyEngine>
    signature: std::unique_ptr<DNSCryptoKeyEngine> DNSCryptoKeyEngine::makeFromISCFile(Logr::log_t
      slog, DNSKEYRecordContent& drc, const char* fname)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: std::getline
      Src: /src/pdns/pdns/dnssecinfra.cc:106,1
    - Dst: std::tie
      Src: /src/pdns/pdns/dnssecinfra.cc:107,1
    - Dst: splitField
      Src: /src/pdns/pdns/dnssecinfra.cc:107,1
    - Dst: Utility::trim
      Src: /src/pdns/pdns/dnssecinfra.cc:108,1
    - Dst: toLowerInPlace
      Src: /src/pdns/pdns/dnssecinfra.cc:110,1
    - Dst: std::map::find
      Src: /src/pdns/pdns/dnssecinfra.cc:111,1
    - Dst: std::map::cend
      Src: /src/pdns/pdns/dnssecinfra.cc:112,1
    - Dst: clear
      Src: /src/pdns/pdns/dnssecinfra.cc:118,1
    - Dst: B64Decode
      Src: /src/pdns/pdns/dnssecinfra.cc:119,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnssecinfra.cc:123,1
    - Dst: what
      Src: /src/pdns/pdns/dnssecinfra.cc:123,1
    - Dst: pdns::checked_stoi<unsigned int>
      Src: /src/pdns/pdns/dnssecinfra.cc:128,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnssecinfra.cc:129,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnssecinfra.cc:135,1
    - Dst: what
      Src: /src/pdns/pdns/dnssecinfra.cc:135,1
    - Dst: clear
      Src: /src/pdns/pdns/dnssecinfra.cc:141,1
    - Dst: B64Decode
      Src: /src/pdns/pdns/dnssecinfra.cc:142,1
    - Dst: map::count
      Src: /src/pdns/pdns/dnssecinfra.cc:153,1
    - Dst: map::count
      Src: /src/pdns/pdns/dnssecinfra.cc:155,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/dnssecinfra.cc:156,1
    - Dst: map::count
      Src: /src/pdns/pdns/dnssecinfra.cc:159,1
    - Dst: PKCS11DNSCryptoKeyEngine::maker
      Src: /src/pdns/pdns/dnssecinfra.cc:162,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/dnssecinfra.cc:164,1
    - Dst: DNSCryptoKeyEngine::make
      Src: /src/pdns/pdns/dnssecinfra.cc:167,1
    - Dst: std::unique_ptr::fromISCMap
      Src: /src/pdns/pdns/dnssecinfra.cc:169,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 52
    argCount: 3
    argNames:
    - slog
    - ' drc'
    - ' content'
    argTypes:
    - Logr::log_t
    - DNSKEYRecordContent
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 171
      start: 79
    functionDepth: 1
    functionLinenumber: 79
    functionLinenumberEnd: 171
    functionName: DNSCryptoKeyEngine::makeFromISCString
    functionSourceFile: /src/pdns/pdns/dnssecinfra.cc
    functionUses: 4
    functionsReached:
    - toLowerInPlace
    - splitField
    - std::to_string
    - DNSCryptoKeyEngine::make
    - std::runtime_error
    - PDNSException
    - what
    - std::map::cend
    - B64Decode
    - std::unique_ptr::fromISCMap
    - map::count
    - pdns::checked_stoi<unsigned int>
    - std::tie
    - clear
    - Utility::trim
    - std::map::find
    - PKCS11DNSCryptoKeyEngine::maker
    - std::getline
    linkageType: ''
    returnType: std::unique_ptr<DNSCryptoKeyEngine>
    signature: std::unique_ptr<DNSCryptoKeyEngine> DNSCryptoKeyEngine::makeFromISCString(Logr::log_t
      slog, DNSKEYRecordContent& drc, const std::string& content)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSCryptoKeyEngine::make
      Src: /src/pdns/pdns/dnssecinfra.cc:175,1
    - Dst: auto::createFromPEMFile
      Src: /src/pdns/pdns/dnssecinfra.cc:176,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 5
    argNames:
    - slog
    - ' drc'
    - algorithm
    - ' inputFile'
    - ' filename'
    argTypes:
    - Logr::log_t
    - DNSKEYRecordContent
    - uint8_t
    - std::FILE
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 178
      start: 173
    functionDepth: 0
    functionLinenumber: 173
    functionLinenumberEnd: 178
    functionName: DNSCryptoKeyEngine::makeFromPEMFile
    functionSourceFile: /src/pdns/pdns/dnssecinfra.cc
    functionUses: 1
    functionsReached:
    - DNSCryptoKeyEngine::make
    - auto::createFromPEMFile
    linkageType: ''
    returnType: std::unique_ptr<DNSCryptoKeyEngine>
    signature: std::unique_ptr<DNSCryptoKeyEngine> DNSCryptoKeyEngine::makeFromPEMFile(Logr::log_t
      slog, DNSKEYRecordContent& drc, const uint8_t algorithm, std::FILE& inputFile,
      const std::string& filename)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSCryptoKeyEngine::make
      Src: /src/pdns/pdns/dnssecinfra.cc:182,1
    - Dst: auto::createFromPEMString
      Src: /src/pdns/pdns/dnssecinfra.cc:183,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - slog
    - ' drc'
    - algorithm
    - ' contents'
    argTypes:
    - Logr::log_t
    - DNSKEYRecordContent
    - uint8_t
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 185
      start: 180
    functionDepth: 0
    functionLinenumber: 180
    functionLinenumberEnd: 185
    functionName: DNSCryptoKeyEngine::makeFromPEMString
    functionSourceFile: /src/pdns/pdns/dnssecinfra.cc
    functionUses: 0
    functionsReached:
    - auto::createFromPEMString
    - DNSCryptoKeyEngine::make
    linkageType: ''
    returnType: std::unique_ptr<DNSCryptoKeyEngine>
    signature: std::unique_ptr<DNSCryptoKeyEngine> DNSCryptoKeyEngine::makeFromPEMString(Logr::log_t
      slog, DNSKEYRecordContent& drc, uint8_t algorithm, const std::string& contents)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DNSCryptoKeyEngine::convertToISCVector
      Src: /src/pdns/pdns/dnssecinfra.cc:189,1
    - Dst: Base64Encode
      Src: /src/pdns/pdns/dnssecinfra.cc:197,1
    - Dst: ostringstream::str
      Src: /src/pdns/pdns/dnssecinfra.cc:204,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 205
      start: 187
    functionDepth: 0
    functionLinenumber: 187
    functionLinenumberEnd: 205
    functionName: DNSCryptoKeyEngine::convertToISC
    functionSourceFile: /src/pdns/pdns/dnssecinfra.cc
    functionUses: 0
    functionsReached:
    - ostringstream::str
    - DNSCryptoKeyEngine::convertToISCVector
    - Base64Encode
    linkageType: ''
    returnType: std::string
    signature: std::string DNSCryptoKeyEngine::convertToISC() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: getMakers
      Src: /src/pdns/pdns/dnssecinfra.cc:209,1
    - Dst: find
      Src: /src/pdns/pdns/dnssecinfra.cc:211,1
    - Dst: cend
      Src: /src/pdns/pdns/dnssecinfra.cc:212,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/dnssecinfra.cc:216,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnssecinfra.cc:216,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - slog
    - algo
    argTypes:
    - Logr::log_t
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 217
      start: 207
    functionDepth: 0
    functionLinenumber: 207
    functionLinenumberEnd: 217
    functionName: DNSCryptoKeyEngine::make
    functionSourceFile: /src/pdns/pdns/dnssecinfra.cc
    functionUses: 3
    functionsReached:
    - std::to_string
    - runtime_error
    - cend
    - getMakers
    - find
    linkageType: ''
    returnType: std::unique_ptr<DNSCryptoKeyEngine>
    signature: std::unique_ptr<DNSCryptoKeyEngine> DNSCryptoKeyEngine::make(Logr::log_t
      slog, unsigned int algo)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getMakers
      Src: /src/pdns/pdns/dnssecinfra.cc:227,1
    - Dst: second
      Src: /src/pdns/pdns/dnssecinfra.cc:228,1
    - Dst: vector::emplace_back
      Src: /src/pdns/pdns/dnssecinfra.cc:229,1
    - Dst: auto::getName
      Src: /src/pdns/pdns/dnssecinfra.cc:229,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - slog
    argTypes:
    - Logr::log_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 232
      start: 224
    functionDepth: 0
    functionLinenumber: 224
    functionLinenumberEnd: 232
    functionName: DNSCryptoKeyEngine::listAllAlgosWithBackend
    functionSourceFile: /src/pdns/pdns/dnssecinfra.cc
    functionUses: 1
    functionsReached:
    - second
    - auto::getName
    - getMakers
    - vector::emplace_back
    linkageType: ''
    returnType: vector<pair<uint8_t, string>>
    signature: vector<pair<uint8_t, string>> DNSCryptoKeyEngine::listAllAlgosWithBackend(Logr::log_t
      slog)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: DNSCryptoKeyEngine::listAllAlgosWithBackend
      Src: /src/pdns/pdns/dnssecinfra.cc:237,1
    - Dst: set::insert
      Src: /src/pdns/pdns/dnssecinfra.cc:239,1
    - Dst: string::append
      Src: /src/pdns/pdns/dnssecinfra.cc:245,1
    - Dst: string::append
      Src: /src/pdns/pdns/dnssecinfra.cc:250,1
    - Dst: DNSSEC::algorithm2name
      Src: /src/pdns/pdns/dnssecinfra.cc:250,1
    - Dst: DNSCryptoKeyEngine::isAlgorithmSwitchedOff
      Src: /src/pdns/pdns/dnssecinfra.cc:251,1
    - Dst: string::append
      Src: /src/pdns/pdns/dnssecinfra.cc:252,1
    - Dst: string::append
      Src: /src/pdns/pdns/dnssecinfra.cc:255,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 1
    argNames:
    - slog
    argTypes:
    - Logr::log_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 257
      start: 234
    functionDepth: 1
    functionLinenumber: 234
    functionLinenumberEnd: 257
    functionName: DNSCryptoKeyEngine::listSupportedAlgoNames
    functionSourceFile: /src/pdns/pdns/dnssecinfra.cc
    functionUses: 0
    functionsReached:
    - set::insert
    - string::append
    - DNSSEC::algorithm2name
    - DNSCryptoKeyEngine::isAlgorithmSwitchedOff
    - DNSCryptoKeyEngine::listAllAlgosWithBackend
    linkageType: ''
    returnType: string
    signature: string DNSCryptoKeyEngine::listSupportedAlgoNames(Logr::log_t slog)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: getAllMakers
      Src: /src/pdns/pdns/dnssecinfra.cc:261,1
    - Dst: push_back
      Src: /src/pdns/pdns/dnssecinfra.cc:261,1
    - Dst: getMakers
      Src: /src/pdns/pdns/dnssecinfra.cc:262,1
    - Dst: getMakers
      Src: /src/pdns/pdns/dnssecinfra.cc:265,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - algo
    - maker
    - fallback
    argTypes:
    - unsigned int
    - maker_t*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 266
      start: 259
    functionDepth: 0
    functionLinenumber: 259
    functionLinenumberEnd: 266
    functionName: DNSCryptoKeyEngine::report
    functionSourceFile: /src/pdns/pdns/dnssecinfra.cc
    functionUses: 2
    functionsReached:
    - push_back
    - getAllMakers
    - getMakers
    linkageType: ''
    returnType: void
    signature: void DNSCryptoKeyEngine::report(unsigned int algo, maker_t* maker,
      bool fallback)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getAllMakers
      Src: /src/pdns/pdns/dnssecinfra.cc:272,1
    - Dst: DNSCryptoKeyEngine::testMakers
      Src: /src/pdns/pdns/dnssecinfra.cc:281,1
    - Dst: what
      Src: /src/pdns/pdns/dnssecinfra.cc:285,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 1
    argNames:
    - slog
    argTypes:
    - Logr::log_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 293
      start: 268
    functionDepth: 0
    functionLinenumber: 268
    functionLinenumberEnd: 293
    functionName: DNSCryptoKeyEngine::testAll
    functionSourceFile: /src/pdns/pdns/dnssecinfra.cc
    functionUses: 1
    functionsReached:
    - what
    - DNSCryptoKeyEngine::testMakers
    - getAllMakers
    linkageType: ''
    returnType: bool
    signature: bool DNSCryptoKeyEngine::testAll(Logr::log_t slog)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getAllMakers
      Src: /src/pdns/pdns/dnssecinfra.cc:299,1
    - Dst: getAllMakers
      Src: /src/pdns/pdns/dnssecinfra.cc:301,1
    - Dst: getAllMakers
      Src: /src/pdns/pdns/dnssecinfra.cc:304,1
    - Dst: DNSCryptoKeyEngine::testMakers
      Src: /src/pdns/pdns/dnssecinfra.cc:306,1
    - Dst: what
      Src: /src/pdns/pdns/dnssecinfra.cc:310,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 2
    argNames:
    - slog
    - algo
    argTypes:
    - Logr::log_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 317
      start: 295
    functionDepth: 0
    functionLinenumber: 295
    functionLinenumberEnd: 317
    functionName: DNSCryptoKeyEngine::testOne
    functionSourceFile: /src/pdns/pdns/dnssecinfra.cc
    functionUses: 1
    functionsReached:
    - what
    - DNSCryptoKeyEngine::testMakers
    - getAllMakers
    linkageType: ''
    returnType: bool
    signature: bool DNSCryptoKeyEngine::testOne(Logr::log_t slog, int algo)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: std::getline
      Src: /src/pdns/pdns/dnssecinfra.cc:329,1
    - Dst: std::tie
      Src: /src/pdns/pdns/dnssecinfra.cc:330,1
    - Dst: splitField
      Src: /src/pdns/pdns/dnssecinfra.cc:330,1
    - Dst: Utility::trim
      Src: /src/pdns/pdns/dnssecinfra.cc:331,1
    - Dst: pdns_iequals
      Src: /src/pdns/pdns/dnssecinfra.cc:332,1
    - Dst: pdns::checked_stoi_into
      Src: /src/pdns/pdns/dnssecinfra.cc:333,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnssecinfra.cc:334,1
    - Dst: pdns_iequals
      Src: /src/pdns/pdns/dnssecinfra.cc:337,1
    - Dst: pdns_iequals
      Src: /src/pdns/pdns/dnssecinfra.cc:341,1
    - Dst: pdns_iequals
      Src: /src/pdns/pdns/dnssecinfra.cc:345,1
    - Dst: pdns::checked_stoi<int>
      Src: /src/pdns/pdns/dnssecinfra.cc:346,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnssecinfra.cc:347,1
    - Dst: pdns_iequals
      Src: /src/pdns/pdns/dnssecinfra.cc:350,1
    - Dst: pdns_iequals
      Src: /src/pdns/pdns/dnssecinfra.cc:354,1
    - Dst: string::clear
      Src: /src/pdns/pdns/dnssecinfra.cc:357,1
    - Dst: B64Decode
      Src: /src/pdns/pdns/dnssecinfra.cc:358,1
    - Dst: toLower
      Src: /src/pdns/pdns/dnssecinfra.cc:359,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 33
    argCount: 1
    argNames:
    - ' argStr'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 362
      start: 319
    functionDepth: 1
    functionLinenumber: 319
    functionLinenumberEnd: 362
    functionName: ISCStringtoMap
    functionSourceFile: /src/pdns/pdns/dnssecinfra.cc
    functionUses: 0
    functionsReached:
    - splitField
    - std::to_string
    - pdns_iequals
    - pdns::checked_stoi<int>
    - toLower
    - B64Decode
    - std::tie
    - Utility::trim
    - pdns::checked_stoi_into
    - string::clear
    - std::getline
    linkageType: ''
    returnType: map<string, string>
    signature: map<string, string> ISCStringtoMap(const string& argStr)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: runtime_error
      Src: /src/pdns/pdns/dnssecinfra.cc:385,1
    - Dst: B64Decode
      Src: /src/pdns/pdns/dnssecinfra.cc:390,1
    - Dst: B64Decode
      Src: /src/pdns/pdns/dnssecinfra.cc:391,1
    - Dst: verifier
      Src: /src/pdns/pdns/dnssecinfra.cc:392,1
    - Dst: auto::fromPublicKeyString
      Src: /src/pdns/pdns/dnssecinfra.cc:393,1
    - Dst: auto::verify
      Src: /src/pdns/pdns/dnssecinfra.cc:395,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 3
    argNames:
    - slog
    - algo
    - verifier
    argTypes:
    - Logr::log_t
    - unsigned int
    - maker_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 397
      start: 364
    functionDepth: 0
    functionLinenumber: 364
    functionLinenumberEnd: 397
    functionName: DNSCryptoKeyEngine::testVerify
    functionSourceFile: /src/pdns/pdns/dnssecinfra.cc
    functionUses: 0
    functionsReached:
    - verifier
    - auto::fromPublicKeyString
    - auto::verify
    - B64Decode
    - runtime_error
    linkageType: ''
    returnType: bool
    signature: bool DNSCryptoKeyEngine::testVerify(Logr::log_t slog, unsigned int
      algo, maker_t* verifier)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: getAllMakers
      Src: /src/pdns/pdns/dnssecinfra.cc:401,1
    - Dst: find
      Src: /src/pdns/pdns/dnssecinfra.cc:402,1
    - Dst: cend
      Src: /src/pdns/pdns/dnssecinfra.cc:404,1
    - Dst: auto::second::empty
      Src: /src/pdns/pdns/dnssecinfra.cc:408,1
    - Dst: std::all_of
      Src: /src/pdns/pdns/dnssecinfra.cc:412,1
    - Dst: auto::second::begin
      Src: /src/pdns/pdns/dnssecinfra.cc:412,1
    - Dst: auto::second::end
      Src: /src/pdns/pdns/dnssecinfra.cc:412,1
    - Dst: DNSCryptoKeyEngine::testVerify
      Src: /src/pdns/pdns/dnssecinfra.cc:414,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 2
    argNames:
    - slog
    - algo
    argTypes:
    - Logr::log_t
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 423
      start: 399
    functionDepth: 0
    functionLinenumber: 399
    functionLinenumberEnd: 423
    functionName: DNSCryptoKeyEngine::verifyOne
    functionSourceFile: /src/pdns/pdns/dnssecinfra.cc
    functionUses: 0
    functionsReached:
    - auto::second::begin
    - auto::second::empty
    - auto::second::end
    - DNSCryptoKeyEngine::testVerify
    - cend
    - std::all_of
    - getAllMakers
    - find
    linkageType: ''
    returnType: bool
    signature: bool DNSCryptoKeyEngine::verifyOne(Logr::log_t slog, unsigned int algo)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: creator
      Src: /src/pdns/pdns/dnssecinfra.cc:427,1
    - Dst: signer
      Src: /src/pdns/pdns/dnssecinfra.cc:428,1
    - Dst: verifier
      Src: /src/pdns/pdns/dnssecinfra.cc:429,1
    - Dst: DNSSEC::algorithm2name
      Src: /src/pdns/pdns/dnssecinfra.cc:431,1
    - Dst: auto::getName
      Src: /src/pdns/pdns/dnssecinfra.cc:431,1
    - Dst: auto::getName
      Src: /src/pdns/pdns/dnssecinfra.cc:431,1
    - Dst: auto::getName
      Src: /src/pdns/pdns/dnssecinfra.cc:431,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/dnssecinfra.cc:446,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnssecinfra.cc:446,1
    - Dst: DTime::DTime
      Src: /src/pdns/pdns/dnssecinfra.cc:449,1
    - Dst: DTime::set
      Src: /src/pdns/pdns/dnssecinfra.cc:449,1
    - Dst: auto::create
      Src: /src/pdns/pdns/dnssecinfra.cc:451,1
    - Dst: auto::getBits
      Src: /src/pdns/pdns/dnssecinfra.cc:452,1
    - Dst: DTime::udiff
      Src: /src/pdns/pdns/dnssecinfra.cc:453,1
    - Dst: DNSKEYRecordContent::DNSKEYRecordContent
      Src: /src/pdns/pdns/dnssecinfra.cc:456,1
    - Dst: ISCStringtoMap
      Src: /src/pdns/pdns/dnssecinfra.cc:457,1
    - Dst: auto::convertToISC
      Src: /src/pdns/pdns/dnssecinfra.cc:457,1
    - Dst: auto::fromISCMap
      Src: /src/pdns/pdns/dnssecinfra.cc:459,1
    - Dst: auto::checkKey
      Src: /src/pdns/pdns/dnssecinfra.cc:460,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/dnssecinfra.cc:461,1
    - Dst: auto::getName
      Src: /src/pdns/pdns/dnssecinfra.cc:461,1
    - Dst: auto::getName
      Src: /src/pdns/pdns/dnssecinfra.cc:461,1
    - Dst: auto::getName
      Src: /src/pdns/pdns/dnssecinfra.cc:461,1
    - Dst: DTime::set
      Src: /src/pdns/pdns/dnssecinfra.cc:468,1
    - Dst: auto::sign
      Src: /src/pdns/pdns/dnssecinfra.cc:470,1
    - Dst: DTime::udiff
      Src: /src/pdns/pdns/dnssecinfra.cc:471,1
    - Dst: auto::fromPublicKeyString
      Src: /src/pdns/pdns/dnssecinfra.cc:473,1
    - Dst: auto::getPublicKeyString
      Src: /src/pdns/pdns/dnssecinfra.cc:473,1
    - Dst: auto::getPublicKeyString
      Src: /src/pdns/pdns/dnssecinfra.cc:474,1
    - Dst: auto::getPublicKeyString
      Src: /src/pdns/pdns/dnssecinfra.cc:474,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/dnssecinfra.cc:475,1
    - Dst: DTime::set
      Src: /src/pdns/pdns/dnssecinfra.cc:477,1
    - Dst: auto::verify
      Src: /src/pdns/pdns/dnssecinfra.cc:480,1
    - Dst: DTime::udiff
      Src: /src/pdns/pdns/dnssecinfra.cc:483,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/dnssecinfra.cc:487,1
    - Dst: auto::getName
      Src: /src/pdns/pdns/dnssecinfra.cc:487,1
    - Dst: auto::getName
      Src: /src/pdns/pdns/dnssecinfra.cc:487,1
    - Dst: auto::getName
      Src: /src/pdns/pdns/dnssecinfra.cc:487,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 41
    argCount: 5
    argNames:
    - slog
    - algo
    - creator
    - signer
    - verifier
    argTypes:
    - Logr::log_t
    - unsigned int
    - maker_t*
    - maker_t*
    - maker_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 489
      start: 425
    functionDepth: 1
    functionLinenumber: 425
    functionLinenumberEnd: 489
    functionName: DNSCryptoKeyEngine::testMakers
    functionSourceFile: /src/pdns/pdns/dnssecinfra.cc
    functionUses: 2
    functionsReached:
    - std::to_string
    - verifier
    - auto::verify
    - runtime_error
    - DTime::set
    - ISCStringtoMap
    - auto::getPublicKeyString
    - auto::fromPublicKeyString
    - DTime::DTime
    - creator
    - signer
    - auto::fromISCMap
    - auto::create
    - DTime::udiff
    - auto::getName
    - auto::checkKey
    - auto::convertToISC
    - auto::sign
    - DNSKEYRecordContent::DNSKEYRecordContent
    - auto::getBits
    - DNSSEC::algorithm2name
    linkageType: ''
    returnType: void
    signature: void DNSCryptoKeyEngine::testMakers(Logr::log_t slog, unsigned int
      algo, maker_t* creator, maker_t* signer, maker_t* verifier)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSCryptoKeyEngine::make
      Src: /src/pdns/pdns/dnssecinfra.cc:493,1
    - Dst: auto::fromPublicKeyString
      Src: /src/pdns/pdns/dnssecinfra.cc:494,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - slog
    - algorithm
    - ' content'
    argTypes:
    - Logr::log_t
    - unsigned int
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 496
      start: 491
    functionDepth: 0
    functionLinenumber: 491
    functionLinenumberEnd: 496
    functionName: DNSCryptoKeyEngine::makeFromPublicKeyString
    functionSourceFile: /src/pdns/pdns/dnssecinfra.cc
    functionUses: 2
    functionsReached:
    - auto::fromPublicKeyString
    - DNSCryptoKeyEngine::make
    linkageType: ''
    returnType: std::unique_ptr<DNSCryptoKeyEngine>
    signature: std::unique_ptr<DNSCryptoKeyEngine> DNSCryptoKeyEngine::makeFromPublicKeyString(Logr::log_t
      slog, unsigned int algorithm, const std::string& content)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: string::append
      Src: /src/pdns/pdns/dnssecinfra.cc:523,1
    - Dst: serialize
      Src: /src/pdns/pdns/dnssecinfra.cc:523,1
    - Dst: string::resize
      Src: /src/pdns/pdns/dnssecinfra.cc:524,1
    - Dst: string::size
      Src: /src/pdns/pdns/dnssecinfra.cc:524,1
    - Dst: d_signature::length
      Src: /src/pdns/pdns/dnssecinfra.cc:524,1
    - Dst: toDNSStringLC
      Src: /src/pdns/pdns/dnssecinfra.cc:526,1
    - Dst: countLabels
      Src: /src/pdns/pdns/dnssecinfra.cc:530,1
    - Dst: DNSName::chopOff
      Src: /src/pdns/pdns/dnssecinfra.cc:535,1
    - Dst: DNSName::toDNSStringLC
      Src: /src/pdns/pdns/dnssecinfra.cc:537,1
    - Dst: string::append
      Src: /src/pdns/pdns/dnssecinfra.cc:546,1
    - Dst: htons
      Src: /src/pdns/pdns/dnssecinfra.cc:547,1
    - Dst: string::append
      Src: /src/pdns/pdns/dnssecinfra.cc:548,1
    - Dst: htons
      Src: /src/pdns/pdns/dnssecinfra.cc:549,1
    - Dst: string::append
      Src: /src/pdns/pdns/dnssecinfra.cc:550,1
    - Dst: htonl
      Src: /src/pdns/pdns/dnssecinfra.cc:551,1
    - Dst: string::append
      Src: /src/pdns/pdns/dnssecinfra.cc:552,1
    - Dst: serialize
      Src: /src/pdns/pdns/dnssecinfra.cc:554,1
    - Dst: getType
      Src: /src/pdns/pdns/dnssecinfra.cc:554,1
    - Dst: htons
      Src: /src/pdns/pdns/dnssecinfra.cc:555,1
    - Dst: string::length
      Src: /src/pdns/pdns/dnssecinfra.cc:555,1
    - Dst: string::append
      Src: /src/pdns/pdns/dnssecinfra.cc:556,1
    - Dst: string::append
      Src: /src/pdns/pdns/dnssecinfra.cc:557,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 26
    argCount: 5
    argNames:
    - ' qname'
    - ' rrc'
    - ' signRecords'
    - processRRSIGLabels
    - includeRRSIG_RDATA
    argTypes:
    - DNSName
    - RRSIGRecordContent
    - sortedRecords_t
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 561
      start: 511
    functionDepth: 1
    functionLinenumber: 511
    functionLinenumberEnd: 561
    functionName: getMessageForRRSET
    functionSourceFile: /src/pdns/pdns/dnssecinfra.cc
    functionUses: 2
    functionsReached:
    - string::resize
    - toDNSStringLC
    - countLabels
    - string::size
    - DNSName::chopOff
    - serialize
    - d_signature::length
    - htonl
    - string::append
    - string::length
    - DNSName::toDNSStringLC
    - getType
    - htons
    linkageType: ''
    returnType: string
    signature: string getMessageForRRSET(const DNSName& qname, const RRSIGRecordContent&
      rrc, const sortedRecords_t& signRecords, bool processRRSIGLabels, bool includeRRSIG_RDATA)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: count
      Src: /src/pdns/pdns/dnssecinfra.cc:567,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - algo
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 568
      start: 565
    functionDepth: 0
    functionLinenumber: 565
    functionLinenumberEnd: 568
    functionName: DNSCryptoKeyEngine::isAlgorithmSwitchedOff
    functionSourceFile: /src/pdns/pdns/dnssecinfra.cc
    functionUses: 1
    functionsReached:
    - count
    linkageType: ''
    returnType: bool
    signature: bool DNSCryptoKeyEngine::isAlgorithmSwitchedOff(unsigned int algo)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: insert
      Src: /src/pdns/pdns/dnssecinfra.cc:572,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - algo
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 573
      start: 570
    functionDepth: 1
    functionLinenumber: 570
    functionLinenumberEnd: 573
    functionName: DNSCryptoKeyEngine::switchOffAlgorithm
    functionSourceFile: /src/pdns/pdns/dnssecinfra.cc
    functionUses: 0
    functionsReached:
    - insert
    linkageType: ''
    returnType: void
    signature: void DNSCryptoKeyEngine::switchOffAlgorithm(unsigned int algo)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DNSCryptoKeyEngine::isAlgorithmSwitchedOff
      Src: /src/pdns/pdns/dnssecinfra.cc:577,1
    - Dst: getMakers
      Src: /src/pdns/pdns/dnssecinfra.cc:580,1
    - Dst: find
      Src: /src/pdns/pdns/dnssecinfra.cc:581,1
    - Dst: cend
      Src: /src/pdns/pdns/dnssecinfra.cc:582,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - algo
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 583
      start: 575
    functionDepth: 0
    functionLinenumber: 575
    functionLinenumberEnd: 583
    functionName: DNSCryptoKeyEngine::isAlgorithmSupported
    functionSourceFile: /src/pdns/pdns/dnssecinfra.cc
    functionUses: 0
    functionsReached:
    - cend
    - find
    - getMakers
    - DNSCryptoKeyEngine::isAlgorithmSwitchedOff
    linkageType: ''
    returnType: bool
    signature: bool DNSCryptoKeyEngine::isAlgorithmSupported(unsigned int algo)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnssecinfra.cc:597,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnssecinfra.cc:597,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 1
    argNames:
    - digest
    argTypes:
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 600
      start: 585
    functionDepth: 0
    functionLinenumber: 585
    functionLinenumberEnd: 600
    functionName: digestToAlgorithmNumber
    functionSourceFile: /src/pdns/pdns/dnssecinfra.cc
    functionUses: 0
    functionsReached:
    - std::to_string
    - std::runtime_error
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int digestToAlgorithmNumber(uint8_t digest)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: digestToAlgorithmNumber
      Src: /src/pdns/pdns/dnssecinfra.cc:605,1
    - Dst: DNSCryptoKeyEngine::isAlgorithmSupported
      Src: /src/pdns/pdns/dnssecinfra.cc:606,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - digest
    argTypes:
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 611
      start: 602
    functionDepth: 0
    functionLinenumber: 602
    functionLinenumberEnd: 611
    functionName: DNSCryptoKeyEngine::isDigestSupported
    functionSourceFile: /src/pdns/pdns/dnssecinfra.cc
    functionUses: 0
    functionsReached:
    - DNSCryptoKeyEngine::isAlgorithmSupported
    - digestToAlgorithmNumber
    linkageType: ''
    returnType: bool
    signature: bool DNSCryptoKeyEngine::isDigestSupported(uint8_t digest)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: string::assign
      Src: /src/pdns/pdns/dnssecinfra.cc:616,1
    - Dst: toDNSStringLC
      Src: /src/pdns/pdns/dnssecinfra.cc:616,1
    - Dst: string::append
      Src: /src/pdns/pdns/dnssecinfra.cc:617,1
    - Dst: serialize
      Src: /src/pdns/pdns/dnssecinfra.cc:617,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnssecinfra.cc:617,1
    - Dst: DSRecordContent::DSRecordContent
      Src: /src/pdns/pdns/dnssecinfra.cc:619,1
    - Dst: digestToAlgorithmNumber
      Src: /src/pdns/pdns/dnssecinfra.cc:621,1
    - Dst: DNSCryptoKeyEngine::make
      Src: /src/pdns/pdns/dnssecinfra.cc:622,1
    - Dst: auto::hash
      Src: /src/pdns/pdns/dnssecinfra.cc:623,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnssecinfra.cc:626,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnssecinfra.cc:626,1
    - Dst: what
      Src: /src/pdns/pdns/dnssecinfra.cc:626,1
    - Dst: const_cast<DNSKEYRecordContent&>
      Src: /src/pdns/pdns/dnssecinfra.cc:631,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 4
    argNames:
    - slog
    - ' qname'
    - ' drc'
    - digest
    argTypes:
    - Logr::log_t
    - DNSName
    - DNSKEYRecordContent
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 634
      start: 613
    functionDepth: 1
    functionLinenumber: 613
    functionLinenumberEnd: 634
    functionName: makeDSFromDNSKey
    functionSourceFile: /src/pdns/pdns/dnssecinfra.cc
    functionUses: 3
    functionsReached:
    - const_cast<DNSKEYRecordContent&>
    - toDNSStringLC
    - string::assign
    - DNSCryptoKeyEngine::make
    - std::to_string
    - serialize
    - std::runtime_error
    - what
    - string::append
    - DNSName
    - digestToAlgorithmNumber
    - DSRecordContent::DSRecordContent
    - auto::hash
    linkageType: ''
    returnType: DSRecordContent
    signature: DSRecordContent makeDSFromDNSKey(Logr::log_t slog, const DNSName& qname,
      const DNSKEYRecordContent& drc, uint8_t digest)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSKEYRecordContent::DNSKEYRecordContent
      Src: /src/pdns/pdns/dnssecinfra.cc:639,1
    - Dst: getPublicKeyString
      Src: /src/pdns/pdns/dnssecinfra.cc:645,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 3
    argNames:
    - ' pk'
    - algorithm
    - flags
    argTypes:
    - std::shared_ptr<DNSCryptoKeyEngine>
    - uint8_t
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 648
      start: 637
    functionDepth: 0
    functionLinenumber: 637
    functionLinenumberEnd: 648
    functionName: makeDNSKEYFromDNSCryptoKeyEngine
    functionSourceFile: /src/pdns/pdns/dnssecinfra.cc
    functionUses: 0
    functionsReached:
    - getPublicKeyString
    - DNSKEYRecordContent::DNSKEYRecordContent
    linkageType: ''
    returnType: DNSKEYRecordContent
    signature: DNSKEYRecordContent makeDNSKEYFromDNSCryptoKeyEngine(const std::shared_ptr<DNSCryptoKeyEngine>&
      pk, uint8_t algorithm, uint16_t flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: time
      Src: /src/pdns/pdns/dnssecinfra.cc:653,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 656
      start: 650
    functionDepth: 0
    functionLinenumber: 650
    functionLinenumberEnd: 656
    functionName: getStartOfWeek
    functionSourceFile: /src/pdns/pdns/dnssecinfra.cc
    functionUses: 1
    functionsReached:
    - time
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t getStartOfWeek()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hashQNameWithSalt
      Src: /src/pdns/pdns/dnssecinfra.cc:660,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' ns3prc'
    - ' qname'
    argTypes:
    - NSEC3PARAMRecordContent
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 661
      start: 658
    functionDepth: 0
    functionLinenumber: 658
    functionLinenumberEnd: 661
    functionName: hashQNameWithSalt
    functionSourceFile: /src/pdns/pdns/dnssecinfra.cc
    functionUses: 7
    functionsReached:
    - hashQNameWithSalt
    linkageType: ''
    returnType: string
    signature: string hashQNameWithSalt(const NSEC3PARAMRecordContent& ns3prc, const
      DNSName& qname)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: toDNSStringLC
      Src: /src/pdns/pdns/dnssecinfra.cc:668,1
    - Dst: SHA1
      Src: /src/pdns/pdns/dnssecinfra.cc:673,1
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/dnssecinfra.cc:673,1
    - Dst: string::c_str
      Src: /src/pdns/pdns/dnssecinfra.cc:673,1
    - Dst: string::length
      Src: /src/pdns/pdns/dnssecinfra.cc:673,1
    - Dst: string::assign
      Src: /src/pdns/pdns/dnssecinfra.cc:676,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/dnssecinfra.cc:676,1
    - Dst: string::capacity
      Src: /src/pdns/pdns/dnssecinfra.cc:683,1
    - Dst: size
      Src: /src/pdns/pdns/dnssecinfra.cc:683,1
    - Dst: string::reserve
      Src: /src/pdns/pdns/dnssecinfra.cc:684,1
    - Dst: size
      Src: /src/pdns/pdns/dnssecinfra.cc:684,1
    - Dst: string::assign
      Src: /src/pdns/pdns/dnssecinfra.cc:686,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/dnssecinfra.cc:686,1
    - Dst: string::append
      Src: /src/pdns/pdns/dnssecinfra.cc:687,1
    - Dst: std::copy
      Src: /src/pdns/pdns/dnssecinfra.cc:691,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/dnssecinfra.cc:691,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/dnssecinfra.cc:691,1
    - Dst: string::begin
      Src: /src/pdns/pdns/dnssecinfra.cc:691,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 3
    argNames:
    - ' salt'
    - iterations
    - ' qname'
    argTypes:
    - std::string
    - unsigned int
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 696
      start: 663
    functionDepth: 1
    functionLinenumber: 663
    functionLinenumberEnd: 696
    functionName: hashQNameWithSalt
    functionSourceFile: /src/pdns/pdns/dnssecinfra.cc
    functionUses: 7
    functionsReached:
    - reinterpret_cast<char*>
    - string::c_str
    - toDNSStringLC
    - string::assign
    - string::reserve
    - string::begin
    - string::append
    - size
    - reinterpret_cast<const unsigned char*>
    - string::capacity
    - SHA1
    - string::length
    - std::copy
    linkageType: ''
    returnType: string
    signature: string hashQNameWithSalt(const std::string& salt, unsigned int iterations,
      const DNSName& qname)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/dnssecinfra.cc:700,1
    - Dst: size
      Src: /src/pdns/pdns/dnssecinfra.cc:703,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 1
    argNames:
    - ' raw'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 711
      start: 698
    functionDepth: 0
    functionLinenumber: 698
    functionLinenumberEnd: 711
    functionName: incrementHash
    functionSourceFile: /src/pdns/pdns/dnssecinfra.cc
    functionUses: 0
    functionsReached:
    - empty
    - size
    linkageType: ''
    returnType: void
    signature: void incrementHash(std::string& raw)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/dnssecinfra.cc:715,1
    - Dst: size
      Src: /src/pdns/pdns/dnssecinfra.cc:718,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 1
    argNames:
    - ' raw'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 726
      start: 713
    functionDepth: 0
    functionLinenumber: 713
    functionLinenumberEnd: 726
    functionName: decrementHash
    functionSourceFile: /src/pdns/pdns/dnssecinfra.cc
    functionUses: 0
    functionsReached:
    - empty
    - size
    linkageType: ''
    returnType: void
    signature: void decrementHash(std::string& raw)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 731
      start: 728
    functionDepth: 0
    functionLinenumber: 728
    functionLinenumberEnd: 731
    functionName: '& DNSSECPrivateKey::getDNSKEY() const'
    functionSourceFile: /src/pdns/pdns/dnssecinfra.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: DNSKEYRecordContent
    signature: DNSKEYRecordContent & DNSSECPrivateKey::getDNSKEY() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeDNSKEYFromDNSCryptoKeyEngine
      Src: /src/pdns/pdns/dnssecinfra.cc:735,1
    - Dst: getKey
      Src: /src/pdns/pdns/dnssecinfra.cc:735,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 736
      start: 733
    functionDepth: 0
    functionLinenumber: 733
    functionLinenumberEnd: 736
    functionName: DNSSECPrivateKey::computeDNSKEY
    functionSourceFile: /src/pdns/pdns/dnssecinfra.cc
    functionUses: 0
    functionsReached:
    - getKey
    - makeDNSKEYFromDNSCryptoKeyEngine
    linkageType: ''
    returnType: void
    signature: void DNSSECPrivateKey::computeDNSKEY()
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: EVP_md5
      Src: /src/pdns/pdns/dnssecinfra.cc:745,1
    - Dst: EVP_sha1
      Src: /src/pdns/pdns/dnssecinfra.cc:748,1
    - Dst: EVP_sha224
      Src: /src/pdns/pdns/dnssecinfra.cc:751,1
    - Dst: EVP_sha256
      Src: /src/pdns/pdns/dnssecinfra.cc:754,1
    - Dst: EVP_sha384
      Src: /src/pdns/pdns/dnssecinfra.cc:757,1
    - Dst: EVP_sha512
      Src: /src/pdns/pdns/dnssecinfra.cc:760,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/dnssecinfra.cc:763,1
    - Dst: HMAC
      Src: /src/pdns/pdns/dnssecinfra.cc:766,1
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/dnssecinfra.cc:766,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnssecinfra.cc:766,1
    - Dst: size
      Src: /src/pdns/pdns/dnssecinfra.cc:766,1
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/dnssecinfra.cc:766,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnssecinfra.cc:766,1
    - Dst: size
      Src: /src/pdns/pdns/dnssecinfra.cc:766,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/dnssecinfra.cc:768,1
    - Dst: string
      Src: /src/pdns/pdns/dnssecinfra.cc:771,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 27
    argCount: 3
    argNames:
    - ' key'
    - ' text'
    - hasher
    argTypes:
    - std::string
    - std::string
    - TSIGHashEnum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 772
      start: 738
    functionDepth: 0
    functionLinenumber: 738
    functionLinenumberEnd: 772
    functionName: calculateHMAC
    functionSourceFile: /src/pdns/pdns/dnssecinfra.cc
    functionUses: 0
    functionsReached:
    - EVP_sha384
    - EVP_md5
    - PDNSException
    - EVP_sha224
    - string
    - size
    - EVP_sha256
    - reinterpret_cast<const unsigned char*>
    - EVP_sha512
    - c_str
    - HMAC
    - EVP_sha1
    linkageType: ''
    returnType: string
    signature: string calculateHMAC(const std::string& key, const std::string& text,
      TSIGHashEnum hasher)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/dnssecinfra.cc:778,1
    - Dst: htons
      Src: /src/pdns/pdns/dnssecinfra.cc:779,1
    - Dst: length
      Src: /src/pdns/pdns/dnssecinfra.cc:779,1
    - Dst: string::append
      Src: /src/pdns/pdns/dnssecinfra.cc:780,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnssecinfra.cc:780,1
    - Dst: string::append
      Src: /src/pdns/pdns/dnssecinfra.cc:781,1
    - Dst: string::append
      Src: /src/pdns/pdns/dnssecinfra.cc:784,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnssecinfra.cc:787,1
    - Dst: vector::size
      Src: /src/pdns/pdns/dnssecinfra.cc:788,1
    - Dst: DNSPacketWriter::xfrName
      Src: /src/pdns/pdns/dnssecinfra.cc:790,1
    - Dst: makeLowerCase
      Src: /src/pdns/pdns/dnssecinfra.cc:790,1
    - Dst: DNSPacketWriter::xfr16BitInt
      Src: /src/pdns/pdns/dnssecinfra.cc:791,1
    - Dst: DNSPacketWriter::xfr32BitInt
      Src: /src/pdns/pdns/dnssecinfra.cc:792,1
    - Dst: DNSPacketWriter::xfrName
      Src: /src/pdns/pdns/dnssecinfra.cc:793,1
    - Dst: d_algoName::makeLowerCase
      Src: /src/pdns/pdns/dnssecinfra.cc:793,1
    - Dst: DNSPacketWriter::xfr48BitInt
      Src: /src/pdns/pdns/dnssecinfra.cc:797,1
    - Dst: DNSPacketWriter::xfr16BitInt
      Src: /src/pdns/pdns/dnssecinfra.cc:798,1
    - Dst: DNSPacketWriter::xfr16BitInt
      Src: /src/pdns/pdns/dnssecinfra.cc:800,1
    - Dst: DNSPacketWriter::xfr16BitInt
      Src: /src/pdns/pdns/dnssecinfra.cc:801,1
    - Dst: d_otherData::length
      Src: /src/pdns/pdns/dnssecinfra.cc:801,1
    - Dst: string::append
      Src: /src/pdns/pdns/dnssecinfra.cc:804,1
    - Dst: vector::begin
      Src: /src/pdns/pdns/dnssecinfra.cc:804,1
    - Dst: vector::end
      Src: /src/pdns/pdns/dnssecinfra.cc:804,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 20
    argCount: 6
    argNames:
    - ' previous'
    - packetBegin
    - packetSize
    - ' tsigKeyName'
    - ' trc'
    - timersonly
    argTypes:
    - string
    - char*
    - size_t
    - DNSName
    - TSIGRecordContent
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 806
      start: 774
    functionDepth: 0
    functionLinenumber: 774
    functionLinenumberEnd: 806
    functionName: makeTSIGPayload
    functionSourceFile: /src/pdns/pdns/dnssecinfra.cc
    functionUses: 0
    functionsReached:
    - makeLowerCase
    - length
    - DNSPacketWriter::xfr16BitInt
    - d_algoName::makeLowerCase
    - vector::begin
    - string::append
    - DNSName
    - vector::end
    - reinterpret_cast<const char*>
    - DNSPacketWriter::xfrName
    - DNSPacketWriter::xfr48BitInt
    - d_otherData::length
    - empty
    - DNSPacketWriter::xfr32BitInt
    - vector::size
    - htons
    linkageType: ''
    returnType: string
    signature: string makeTSIGPayload(const string& previous, const char* packetBegin,
      size_t packetSize, const DNSName& tsigKeyName, const TSIGRecordContent& trc,
      bool timersonly)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: string::resize
      Src: /src/pdns/pdns/dnssecinfra.cc:813,1
    - Dst: htons
      Src: /src/pdns/pdns/dnssecinfra.cc:821,1
    - Dst: string::replace
      Src: /src/pdns/pdns/dnssecinfra.cc:822,1
    - Dst: makeTSIGPayload
      Src: /src/pdns/pdns/dnssecinfra.cc:824,1
    - Dst: string::data
      Src: /src/pdns/pdns/dnssecinfra.cc:824,1
    - Dst: string::size
      Src: /src/pdns/pdns/dnssecinfra.cc:824,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 6
    argNames:
    - ' opacket'
    - tsigOffset
    - ' keyname'
    - ' trc'
    - ' previous'
    - timersonly
    argTypes:
    - string
    - unsigned int
    - DNSName
    - TSIGRecordContent
    - string
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 825
      start: 808
    functionDepth: 1
    functionLinenumber: 808
    functionLinenumberEnd: 825
    functionName: makeTSIGMessageFromTSIGPacket
    functionSourceFile: /src/pdns/pdns/dnssecinfra.cc
    functionUses: 0
    functionsReached:
    - string::data
    - string::resize
    - string::size
    - makeTSIGPayload
    - string::replace
    - htons
    linkageType: ''
    returnType: string
    signature: string makeTSIGMessageFromTSIGPacket(const string& opacket, unsigned
      int tsigOffset, const DNSName& keyname, const TSIGRecordContent& trc, const
      string& previous, bool timersonly, unsigned int dnsHeaderOffset=0)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: getTSIGHashEnum
      Src: /src/pdns/pdns/dnssecinfra.cc:830,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/dnssecinfra.cc:831,1
    - Dst: string
      Src: /src/pdns/pdns/dnssecinfra.cc:831,1
    - Dst: d_algoName::toLogString
      Src: /src/pdns/pdns/dnssecinfra.cc:831,1
    - Dst: makeTSIGPayload
      Src: /src/pdns/pdns/dnssecinfra.cc:834,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnssecinfra.cc:834,1
    - Dst: getContent
      Src: /src/pdns/pdns/dnssecinfra.cc:834,1
    - Dst: getContent
      Src: /src/pdns/pdns/dnssecinfra.cc:834,1
    - Dst: gss_add_signature
      Src: /src/pdns/pdns/dnssecinfra.cc:837,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/dnssecinfra.cc:838,1
    - Dst: string
      Src: /src/pdns/pdns/dnssecinfra.cc:838,1
    - Dst: toLogString
      Src: /src/pdns/pdns/dnssecinfra.cc:838,1
    - Dst: string
      Src: /src/pdns/pdns/dnssecinfra.cc:838,1
    - Dst: calculateHMAC
      Src: /src/pdns/pdns/dnssecinfra.cc:841,1
    - Dst: startRecord
      Src: /src/pdns/pdns/dnssecinfra.cc:844,1
    - Dst: toPacket
      Src: /src/pdns/pdns/dnssecinfra.cc:845,1
    - Dst: commit
      Src: /src/pdns/pdns/dnssecinfra.cc:846,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 7
    argNames:
    - slog
    - ' pw'
    - ' trc'
    - ' tsigkeyname'
    - ' tsigsecret'
    - ' tsigprevious'
    - timersonly
    argTypes:
    - Logr::log_t
    - DNSPacketWriter
    - TSIGRecordContent
    - DNSName
    - string
    - string
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 847
      start: 827
    functionDepth: 0
    functionLinenumber: 827
    functionLinenumberEnd: 847
    functionName: addTSIG
    functionSourceFile: /src/pdns/pdns/dnssecinfra.cc
    functionUses: 3
    functionsReached:
    - d_algoName::toLogString
    - toLogString
    - toPacket
    - commit
    - PDNSException
    - makeTSIGPayload
    - calculateHMAC
    - string
    - getContent
    - getTSIGHashEnum
    - reinterpret_cast<const char*>
    - gss_add_signature
    - startRecord
    linkageType: ''
    returnType: void
    signature: void addTSIG(Logr::log_t slog, DNSPacketWriter& pw, TSIGRecordContent&
      trc, const DNSName& tsigkeyname, const string& tsigsecret, const string& tsigprevious,
      bool timersonly)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: std::abs
      Src: /src/pdns/pdns/dnssecinfra.cc:851,1
    - Dst: time
      Src: /src/pdns/pdns/dnssecinfra.cc:851,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnssecinfra.cc:853,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnssecinfra.cc:853,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnssecinfra.cc:853,1
    - Dst: getTSIGHashEnum
      Src: /src/pdns/pdns/dnssecinfra.cc:857,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnssecinfra.cc:858,1
    - Dst: d_algoName::toLogString
      Src: /src/pdns/pdns/dnssecinfra.cc:858,1
    - Dst: getTSIGHashEnum
      Src: /src/pdns/pdns/dnssecinfra.cc:862,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnssecinfra.cc:863,1
    - Dst: algo::toLogString
      Src: /src/pdns/pdns/dnssecinfra.cc:863,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnssecinfra.cc:867,1
    - Dst: name::toLogString
      Src: /src/pdns/pdns/dnssecinfra.cc:867,1
    - Dst: algo::toLogString
      Src: /src/pdns/pdns/dnssecinfra.cc:867,1
    - Dst: d_algoName::toLogString
      Src: /src/pdns/pdns/dnssecinfra.cc:867,1
    - Dst: makeTSIGMessageFromTSIGPacket
      Src: /src/pdns/pdns/dnssecinfra.cc:871,1
    - Dst: gss_verify_signature
      Src: /src/pdns/pdns/dnssecinfra.cc:874,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnssecinfra.cc:875,1
    - Dst: name::toLogString
      Src: /src/pdns/pdns/dnssecinfra.cc:875,1
    - Dst: calculateHMAC
      Src: /src/pdns/pdns/dnssecinfra.cc:878,1
    - Dst: constantTimeStringEquals
      Src: /src/pdns/pdns/dnssecinfra.cc:880,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnssecinfra.cc:881,1
    - Dst: name::toLogString
      Src: /src/pdns/pdns/dnssecinfra.cc:881,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 24
    argCount: 9
    argNames:
    - slog
    - ' packet'
    - sigPos
    - ' tt'
    - ' trc'
    - ' previousMAC'
    - ' theirMAC'
    - timersOnly
    - dnsHeaderOffset
    argTypes:
    - Logr::log_t
    - std::string
    - size_t
    - TSIGTriplet
    - TSIGRecordContent
    - std::string
    - std::string
    - bool
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 886
      start: 849
    functionDepth: 0
    functionLinenumber: 849
    functionLinenumberEnd: 886
    functionName: validateTSIG
    functionSourceFile: /src/pdns/pdns/dnssecinfra.cc
    functionUses: 2
    functionsReached:
    - d_algoName::toLogString
    - std::to_string
    - makeTSIGMessageFromTSIGPacket
    - std::runtime_error
    - calculateHMAC
    - time
    - constantTimeStringEquals
    - getTSIGHashEnum
    - name::toLogString
    - std::abs
    - algo::toLogString
    - gss_verify_signature
    linkageType: ''
    returnType: bool
    signature: bool validateTSIG(Logr::log_t slog, const std::string& packet, size_t
      sigPos, const TSIGTriplet& tt, const TSIGRecordContent& trc, const std::string&
      previousMAC, const std::string& theirMAC, bool timersOnly, unsigned int dnsHeaderOffset)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::make_unique<WebServer>
      Src: /src/pdns/pdns/ixfrdist-web.cc:29,1
    - Dst: toString
      Src: /src/pdns/pdns/ixfrdist-web.cc:29,1
    - Dst: getPort
      Src: /src/pdns/pdns/ixfrdist-web.cc:29,1
    - Dst: setACL
      Src: /src/pdns/pdns/ixfrdist-web.cc:31,1
    - Dst: setLogLevel
      Src: /src/pdns/pdns/ixfrdist-web.cc:32,1
    - Dst: registerWebHandler
      Src: /src/pdns/pdns/ixfrdist-web.cc:33,1
    - Dst: IXFRDistWebServer::getMetrics
      Src: /src/pdns/pdns/ixfrdist-web.cc:33,1
    - Dst: bind
      Src: /src/pdns/pdns/ixfrdist-web.cc:34,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 3
    argNames:
    - ' listenAddress'
    - ' acl'
    - ' loglevel'
    argTypes:
    - ComboAddress
    - NetmaskGroup
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 35
      start: 28
    functionDepth: 1
    functionLinenumber: 28
    functionLinenumberEnd: 35
    functionName: IXFRDistWebServer::IXFRDistWebServer
    functionSourceFile: /src/pdns/pdns/ixfrdist-web.cc
    functionUses: 0
    functionsReached:
    - registerWebHandler
    - toString
    - bind
    - setACL
    - IXFRDistWebServer::getMetrics
    - setLogLevel
    - std::make_unique<WebServer>
    - getPort
    linkageType: ''
    returnType: void
    signature: void IXFRDistWebServer::IXFRDistWebServer(const ComboAddress& listenAddress,
      const NetmaskGroup& acl, const string& loglevel)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: setThreadName
      Src: /src/pdns/pdns/ixfrdist-web.cc:38,1
    - Dst: IXFRDistWebServer::go
      Src: /src/pdns/pdns/ixfrdist-web.cc:39,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 37
    functionDepth: 1
    functionLinenumber: 37
    functionLinenumberEnd: 40
    functionName: IXFRDistWebServer::go
    functionSourceFile: /src/pdns/pdns/ixfrdist-web.cc
    functionUses: 1
    functionsReached:
    - IXFRDistWebServer::go
    - setThreadName
    linkageType: ''
    returnType: void
    signature: void IXFRDistWebServer::go()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: HttpMethodNotAllowedException
      Src: /src/pdns/pdns/ixfrdist-web.cc:44,1
    - Dst: doGetStats
      Src: /src/pdns/pdns/ixfrdist-web.cc:46,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - req
    - resp
    argTypes:
    - HttpRequest*
    - HttpResponse*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 42
    functionDepth: 1
    functionLinenumber: 42
    functionLinenumberEnd: 49
    functionName: IXFRDistWebServer::getMetrics
    functionSourceFile: /src/pdns/pdns/ixfrdist-web.cc
    functionUses: 1
    functionsReached:
    - doGetStats
    - HttpMethodNotAllowedException
    linkageType: ''
    returnType: void
    signature: void IXFRDistWebServer::getMetrics(HttpRequest* req, HttpResponse*
      resp)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 41
    functionDepth: 0
    functionLinenumber: 41
    functionLinenumberEnd: 42
    functionName: htobe16
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: htobe16(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 42
    functionDepth: 0
    functionLinenumber: 42
    functionLinenumberEnd: 43
    functionName: htole16
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: htole16(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 44
    functionName: be16toh
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: be16toh(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 44
    functionDepth: 0
    functionLinenumber: 44
    functionLinenumberEnd: 45
    functionName: le16toh
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: le16toh(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 46
    functionDepth: 0
    functionLinenumber: 46
    functionLinenumberEnd: 47
    functionName: htobe32
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: htobe32(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 47
    functionDepth: 0
    functionLinenumber: 47
    functionLinenumberEnd: 48
    functionName: htole32
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: htole32(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 48
    functionDepth: 0
    functionLinenumber: 48
    functionLinenumberEnd: 49
    functionName: be32toh
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: be32toh(x)
  - 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: le32toh
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: le32toh(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: htobe64
    functionSourceFile: /src/pdns/pdns/iputils.hh
    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: 53
      start: 52
    functionDepth: 0
    functionLinenumber: 52
    functionLinenumberEnd: 53
    functionName: htole64
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: htole64(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 53
    functionDepth: 0
    functionLinenumber: 53
    functionLinenumberEnd: 54
    functionName: be64toh
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: be64toh(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 54
    functionDepth: 0
    functionLinenumber: 54
    functionLinenumberEnd: 55
    functionName: le64toh
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: le64toh(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 64
    functionDepth: 0
    functionLinenumber: 64
    functionLinenumberEnd: 65
    functionName: htobe16
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: htobe16(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 65
    functionDepth: 0
    functionLinenumber: 65
    functionLinenumberEnd: 66
    functionName: htole16
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: htole16(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 66
    functionDepth: 0
    functionLinenumber: 66
    functionLinenumberEnd: 67
    functionName: be16toh
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: be16toh(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 67
    functionDepth: 0
    functionLinenumber: 67
    functionLinenumberEnd: 68
    functionName: le16toh
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: le16toh(x)
  - 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: htobe32
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: htobe32(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: htole32
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: htole32(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 71
    functionDepth: 0
    functionLinenumber: 71
    functionLinenumberEnd: 72
    functionName: be32toh
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: be32toh(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 72
    functionDepth: 0
    functionLinenumber: 72
    functionLinenumberEnd: 73
    functionName: le32toh
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: le32toh(x)
  - 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: 74
    functionDepth: 0
    functionLinenumber: 74
    functionLinenumberEnd: 75
    functionName: htobe64
    functionSourceFile: /src/pdns/pdns/iputils.hh
    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: 76
      start: 75
    functionDepth: 0
    functionLinenumber: 75
    functionLinenumberEnd: 76
    functionName: htole64
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: htole64(x)
  - 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: be64toh
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: be64toh(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: le64toh
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: le64toh(x)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: std::tie
      Src: /src/pdns/pdns/iputils.hh:98,1
    - Dst: std::tie
      Src: /src/pdns/pdns/iputils.hh:98,1
    - Dst: memcmp
      Src: /src/pdns/pdns/iputils.hh:104,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 96
    functionDepth: 0
    functionLinenumber: 96
    functionLinenumberEnd: 105
    functionName: operator==(const ComboAddress& rhs) const
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 0
    functionsReached:
    - memcmp
    - std::tie
    linkageType: ''
    returnType: bool
    signature: bool operator==(const ComboAddress& rhs) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 107
    functionDepth: 0
    functionLinenumber: 107
    functionLinenumberEnd: 110
    functionName: operator!=(const ComboAddress& rhs) const
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool operator!=(const ComboAddress& rhs) const
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: std::tie
      Src: /src/pdns/pdns/iputils.hh:117,1
    - Dst: std::tie
      Src: /src/pdns/pdns/iputils.hh:117,1
    - Dst: std::tie
      Src: /src/pdns/pdns/iputils.hh:120,1
    - Dst: std::tie
      Src: /src/pdns/pdns/iputils.hh:120,1
    - Dst: memcmp
      Src: /src/pdns/pdns/iputils.hh:126,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 127
      start: 112
    functionDepth: 0
    functionLinenumber: 112
    functionLinenumberEnd: 127
    functionName: operator<(const ComboAddress& rhs) const
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 0
    functionsReached:
    - memcmp
    - std::tie
    linkageType: ''
    returnType: bool
    signature: bool operator<(const ComboAddress& rhs) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: rhs
      Src: /src/pdns/pdns/iputils.hh:131,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 132
      start: 129
    functionDepth: 0
    functionLinenumber: 129
    functionLinenumberEnd: 132
    functionName: operator>(const ComboAddress& rhs) const
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 0
    functionsReached:
    - rhs
    linkageType: ''
    returnType: bool
    signature: bool operator>(const ComboAddress& rhs) const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/iputils.hh:140,1
    - Dst: burtle
      Src: /src/pdns/pdns/iputils.hh:141,1
    - Dst: burtle
      Src: /src/pdns/pdns/iputils.hh:142,1
    - Dst: reinterpret_cast<const uint8_t*>
      Src: /src/pdns/pdns/iputils.hh:142,1
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/iputils.hh:144,1
    - Dst: burtle
      Src: /src/pdns/pdns/iputils.hh:145,1
    - Dst: burtle
      Src: /src/pdns/pdns/iputils.hh:146,1
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/iputils.hh:146,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ' address'
    argTypes:
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 148
      start: 136
    functionDepth: 0
    functionLinenumber: 136
    functionLinenumberEnd: 148
    functionName: operator()(const ComboAddress& address) const
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 0
    functionsReached:
    - burtle
    - reinterpret_cast<const unsigned char*>
    - reinterpret_cast<const uint8_t*>
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t operator()(const ComboAddress& address) const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/iputils.hh:159,1
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/iputils.hh:163,1
    - Dst: burtle
      Src: /src/pdns/pdns/iputils.hh:167,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - ' address'
    argTypes:
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 168
      start: 153
    functionDepth: 0
    functionLinenumber: 153
    functionLinenumberEnd: 168
    functionName: operator()(const ComboAddress& address) const
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 0
    functionsReached:
    - burtle
    - reinterpret_cast<const unsigned char*>
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t operator()(const ComboAddress& address) const
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/pdns/pdns/iputils.hh:184,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - ' lhs'
    - ' rhs'
    argTypes:
    - ComboAddress
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 185
      start: 173
    functionDepth: 0
    functionLinenumber: 173
    functionLinenumberEnd: 185
    functionName: operator()(const ComboAddress& lhs, const ComboAddress& rhs) const
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 0
    functionsReached:
    - memcmp
    linkageType: ''
    returnType: bool
    signature: bool operator()(const ComboAddress& lhs, const ComboAddress& rhs) const
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/pdns/pdns/iputils.hh:198,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - ' lhs'
    - ' rhs'
    argTypes:
    - ComboAddress
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 199
      start: 190
    functionDepth: 0
    functionLinenumber: 190
    functionLinenumberEnd: 199
    functionName: operator()(const ComboAddress& lhs, const ComboAddress& rhs) const
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 0
    functionsReached:
    - memcmp
    linkageType: ''
    returnType: bool
    signature: bool operator()(const ComboAddress& lhs, const ComboAddress& rhs) const
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 208
      start: 202
    functionDepth: 0
    functionLinenumber: 202
    functionLinenumberEnd: 208
    functionName: getSocklen
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 15
    functionsReached: []
    linkageType: ''
    returnType: socklen_t
    signature: socklen_t getSocklen() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 217
      start: 210
    functionDepth: 0
    functionLinenumber: 210
    functionLinenumberEnd: 217
    functionName: ComboAddress
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 35
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ComboAddress()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: setSockaddr
      Src: /src/pdns/pdns/iputils.hh:221,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - socketAddress
    - salen
    argTypes:
    - struct sockaddr*
    - socklen_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 222
      start: 219
    functionDepth: 0
    functionLinenumber: 219
    functionLinenumberEnd: 222
    functionName: ComboAddress
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 35
    functionsReached:
    - setSockaddr
    linkageType: ''
    returnType: void
    signature: void ComboAddress(const struct sockaddr* socketAddress, socklen_t salen)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: setSockaddr
      Src: /src/pdns/pdns/iputils.hh:227,1
    - Dst: reinterpret_cast<const struct sockaddr*>
      Src: /src/pdns/pdns/iputils.hh:227,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - socketAddress
    argTypes:
    - struct sockaddr_in6*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 228
      start: 224
    functionDepth: 0
    functionLinenumber: 224
    functionLinenumberEnd: 228
    functionName: ComboAddress
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 35
    functionsReached:
    - reinterpret_cast<const struct sockaddr*>
    - setSockaddr
    linkageType: ''
    returnType: void
    signature: void ComboAddress(const struct sockaddr_in6* socketAddress)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: setSockaddr
      Src: /src/pdns/pdns/iputils.hh:233,1
    - Dst: reinterpret_cast<const struct sockaddr*>
      Src: /src/pdns/pdns/iputils.hh:233,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - socketAddress
    argTypes:
    - struct sockaddr_in*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 234
      start: 230
    functionDepth: 0
    functionLinenumber: 230
    functionLinenumberEnd: 234
    functionName: ComboAddress
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 35
    functionsReached:
    - reinterpret_cast<const struct sockaddr*>
    - setSockaddr
    linkageType: ''
    returnType: void
    signature: void ComboAddress(const struct sockaddr_in* socketAddress)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PDNSException
      Src: /src/pdns/pdns/iputils.hh:239,1
    - Dst: memcpy
      Src: /src/pdns/pdns/iputils.hh:241,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - socketAddress
    - salen
    argTypes:
    - struct sockaddr*
    - socklen_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 242
      start: 236
    functionDepth: 0
    functionLinenumber: 236
    functionLinenumberEnd: 242
    functionName: setSockaddr
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 4
    functionsReached:
    - PDNSException
    - memcpy
    linkageType: ''
    returnType: void
    signature: void setSockaddr(const struct sockaddr* socketAddress, socklen_t salen)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/pdns/pdns/iputils.hh:247,1
    - Dst: makeIPv4sockaddr
      Src: /src/pdns/pdns/iputils.hh:250,1
    - Dst: makeIPv6sockaddr
      Src: /src/pdns/pdns/iputils.hh:252,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/iputils.hh:253,1
    - Dst: htons
      Src: /src/pdns/pdns/iputils.hh:257,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 1
    argNames:
    - ' str'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 259
      start: 245
    functionDepth: 0
    functionLinenumber: 245
    functionLinenumberEnd: 259
    functionName: ComboAddress
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 35
    functionsReached:
    - makeIPv4sockaddr
    - PDNSException
    - memset
    - makeIPv6sockaddr
    - htons
    linkageType: ''
    returnType: void
    signature: void ComboAddress(const string& str, uint16_t port = 0)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 264
      start: 261
    functionDepth: 0
    functionLinenumber: 261
    functionLinenumberEnd: 264
    functionName: isIPv6
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool isIPv6() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 268
      start: 265
    functionDepth: 0
    functionLinenumber: 265
    functionLinenumberEnd: 268
    functionName: isIPv4
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool isIPv4() const
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/iputils.hh:278,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 290
      start: 270
    functionDepth: 0
    functionLinenumber: 270
    functionLinenumberEnd: 290
    functionName: isMappedIPv4
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 2
    functionsReached:
    - reinterpret_cast<const unsigned char*>
    linkageType: ''
    returnType: bool
    signature: bool isMappedIPv4() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ComboAddress::addressOnlyEqual
      Src: /src/pdns/pdns/iputils.hh:296,1
    - Dst: compare
      Src: /src/pdns/pdns/iputils.hh:297,1
    - Dst: compare
      Src: /src/pdns/pdns/iputils.hh:297,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 298
      start: 292
    functionDepth: 0
    functionLinenumber: 292
    functionLinenumberEnd: 298
    functionName: isUnspecified
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 1
    functionsReached:
    - compare
    - ComboAddress::addressOnlyEqual
    linkageType: ''
    returnType: bool
    signature: bool isUnspecified() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: isMappedIPv4
      Src: /src/pdns/pdns/iputils.hh:302,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/iputils.hh:303,1
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/iputils.hh:310,1
    - Dst: memcpy
      Src: /src/pdns/pdns/iputils.hh:312,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 314
      start: 300
    functionDepth: 0
    functionLinenumber: 300
    functionLinenumberEnd: 314
    functionName: mapToIPv4
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 2
    functionsReached:
    - PDNSException
    - memcpy
    - reinterpret_cast<const unsigned char*>
    - isMappedIPv4
    linkageType: ''
    returnType: ComboAddress
    signature: ComboAddress mapToIPv4() const
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: getnameinfo
      Src: /src/pdns/pdns/iputils.hh:321,1
    - Dst: reinterpret_cast<const struct sockaddr*>
      Src: /src/pdns/pdns/iputils.hh:321,1
    - Dst: getSocklen
      Src: /src/pdns/pdns/iputils.hh:321,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/iputils.hh:321,1
    - Dst: std::array::size
      Src: /src/pdns/pdns/iputils.hh:321,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/iputils.hh:323,1
    - Dst: string
      Src: /src/pdns/pdns/iputils.hh:325,1
    - Dst: gai_strerror
      Src: /src/pdns/pdns/iputils.hh:325,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 328
      start: 316
    functionDepth: 0
    functionLinenumber: 316
    functionLinenumberEnd: 328
    functionName: toString
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 86
    functionsReached:
    - gai_strerror
    - getnameinfo
    - string
    - reinterpret_cast<const struct sockaddr*>
    - getSocklen
    - std::array::data
    - std::array::size
    linkageType: ''
    returnType: string
    signature: string toString() const
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: inet_ntop
      Src: /src/pdns/pdns/iputils.hh:335,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/iputils.hh:335,1
    - Dst: std::array::size
      Src: /src/pdns/pdns/iputils.hh:335,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/iputils.hh:337,1
    - Dst: inet_ntop
      Src: /src/pdns/pdns/iputils.hh:341,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/iputils.hh:341,1
    - Dst: std::array::size
      Src: /src/pdns/pdns/iputils.hh:341,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/iputils.hh:343,1
    - Dst: stringerror
      Src: /src/pdns/pdns/iputils.hh:349,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 350
      start: 331
    functionDepth: 0
    functionLinenumber: 331
    functionLinenumberEnd: 350
    functionName: toStringNoInterface
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 0
    functionsReached:
    - stringerror
    - std::array::data
    - inet_ntop
    - std::array::size
    linkageType: ''
    returnType: string
    signature: string toStringNoInterface() const
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: isIPv4
      Src: /src/pdns/pdns/iputils.hh:354,1
    - Dst: ntohl
      Src: /src/pdns/pdns/iputils.hh:355,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/iputils.hh:360,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/iputils.hh:360,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/iputils.hh:360,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/iputils.hh:360,1
    - Dst: std::stringstream::str
      Src: /src/pdns/pdns/iputils.hh:373,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 374
      start: 352
    functionDepth: 0
    functionLinenumber: 352
    functionLinenumberEnd: 374
    functionName: toStringReversed
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 1
    functionsReached:
    - std::stringstream::str
    - ntohl
    - isIPv4
    - std::to_string
    linkageType: ''
    returnType: string
    signature: string toStringReversed() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: toString
      Src: /src/pdns/pdns/iputils.hh:379,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/iputils.hh:379,1
    - Dst: ntohs
      Src: /src/pdns/pdns/iputils.hh:379,1
    - Dst: toString
      Src: /src/pdns/pdns/iputils.hh:381,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/iputils.hh:381,1
    - Dst: ntohs
      Src: /src/pdns/pdns/iputils.hh:381,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 382
      start: 376
    functionDepth: 0
    functionLinenumber: 376
    functionLinenumberEnd: 382
    functionName: toStringWithPort
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 31
    functionsReached:
    - toString
    - std::to_string
    - ntohs
    linkageType: ''
    returnType: string
    signature: string toStringWithPort() const
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ntohs
      Src: /src/pdns/pdns/iputils.hh:386,1
    - Dst: toString
      Src: /src/pdns/pdns/iputils.hh:387,1
    - Dst: toString
      Src: /src/pdns/pdns/iputils.hh:390,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/iputils.hh:390,1
    - Dst: ntohs
      Src: /src/pdns/pdns/iputils.hh:390,1
    - Dst: toString
      Src: /src/pdns/pdns/iputils.hh:392,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/iputils.hh:392,1
    - Dst: ntohs
      Src: /src/pdns/pdns/iputils.hh:392,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - port
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 393
      start: 384
    functionDepth: 0
    functionLinenumber: 384
    functionLinenumberEnd: 393
    functionName: toStringWithPortExcept
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 1
    functionsReached:
    - toString
    - std::to_string
    - ntohs
    linkageType: ''
    returnType: string
    signature: string toStringWithPortExcept(int port) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: toStringWithPortExcept
      Src: /src/pdns/pdns/iputils.hh:397,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 398
      start: 395
    functionDepth: 0
    functionLinenumber: 395
    functionLinenumberEnd: 398
    functionName: toLogString
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 16
    functionsReached:
    - toStringWithPortExcept
    linkageType: ''
    returnType: string
    signature: string toLogString() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/iputils.hh:402,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 403
      start: 400
    functionDepth: 0
    functionLinenumber: 400
    functionLinenumberEnd: 403
    functionName: toStructuredLogString
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 0
    functionsReached:
    - toStringWithPort
    linkageType: ''
    returnType: string
    signature: string toStructuredLogString() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: isIPv4
      Src: /src/pdns/pdns/iputils.hh:408,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/iputils.hh:409,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/iputils.hh:411,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 413
      start: 405
    functionDepth: 0
    functionLinenumber: 405
    functionLinenumberEnd: 413
    functionName: toByteString
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 3
    functionsReached:
    - reinterpret_cast<const char*>
    - isIPv4
    linkageType: ''
    returnType: string
    signature: string toByteString() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 420
      start: 417
    functionDepth: 0
    functionLinenumber: 417
    functionLinenumberEnd: 420
    functionName: getNetworkOrderPort
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t getNetworkOrderPort() const noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ntohs
      Src: /src/pdns/pdns/iputils.hh:423,1
    - Dst: getNetworkOrderPort
      Src: /src/pdns/pdns/iputils.hh:423,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 424
      start: 421
    functionDepth: 0
    functionLinenumber: 421
    functionLinenumberEnd: 424
    functionName: getPort
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 4
    functionsReached:
    - getNetworkOrderPort
    - ntohs
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t getPort() const noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: htons
      Src: /src/pdns/pdns/iputils.hh:427,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - port
    argTypes:
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 428
      start: 425
    functionDepth: 0
    functionLinenumber: 425
    functionLinenumberEnd: 428
    functionName: setPort
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 0
    functionsReached:
    - htons
    linkageType: ''
    returnType: void
    signature: void setPort(uint16_t port)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/pdns/pdns/iputils.hh:432,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 433
      start: 430
    functionDepth: 0
    functionLinenumber: 430
    functionLinenumberEnd: 433
    functionName: reset
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 31
    functionsReached:
    - memset
    linkageType: ''
    returnType: void
    signature: void reset()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: isIPv4
      Src: /src/pdns/pdns/iputils.hh:438,1
    - Dst: isIPv6
      Src: /src/pdns/pdns/iputils.hh:441,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 445
      start: 436
    functionDepth: 0
    functionLinenumber: 436
    functionLinenumberEnd: 445
    functionName: getBits
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 7
    functionsReached:
    - isIPv4
    - isIPv6
    linkageType: ''
    returnType: uint8_t
    signature: uint8_t getBits() const
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: isIPv4
      Src: /src/pdns/pdns/iputils.hh:452,1
    - Dst: ntohl
      Src: /src/pdns/pdns/iputils.hh:463,1
    - Dst: isIPv6
      Src: /src/pdns/pdns/iputils.hh:467,1
    - Dst: reinterpret_cast<const uint8_t*>
      Src: /src/pdns/pdns/iputils.hh:478,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 26
    argCount: 1
    argNames:
    - index
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 485
      start: 450
    functionDepth: 0
    functionLinenumber: 450
    functionLinenumberEnd: 485
    functionName: getBit
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 0
    functionsReached:
    - ntohl
    - isIPv4
    - reinterpret_cast<const uint8_t*>
    - isIPv6
    linkageType: ''
    returnType: bool
    signature: bool getBit(int index) const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: vector::push_back
      Src: /src/pdns/pdns/iputils.hh:499,1
    - Dst: toStringWithPortExcept
      Src: /src/pdns/pdns/iputils.hh:499,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/iputils.hh:502,1
    - Dst: toString
      Src: /src/pdns/pdns/iputils.hh:502,1
    - Dst: boost::join
      Src: /src/pdns/pdns/iputils.hh:504,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - ' container'
    argTypes:
    - Container<ComboAddress, Args...>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 505
      start: 494
    functionDepth: 0
    functionLinenumber: 494
    functionLinenumberEnd: 505
    functionName: caContainerToString
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 1
    functionsReached:
    - toStringWithPortExcept
    - vector::push_back
    - toString
    - boost::join
    linkageType: ''
    returnType: string
    signature: string caContainerToString(const Container<ComboAddress, Args...>&
      container, const bool withPort = true, const uint16_t portExcept = 53)
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 526
      start: 514
    functionDepth: 0
    functionLinenumber: 514
    functionLinenumberEnd: 526
    functionName: getSocklen
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 16
    functionsReached: []
    linkageType: ''
    returnType: socklen_t
    signature: socklen_t getSocklen() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 533
      start: 528
    functionDepth: 0
    functionLinenumber: 528
    functionLinenumberEnd: 533
    functionName: SockaddrWrapper
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void SockaddrWrapper()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: setSockaddr
      Src: /src/pdns/pdns/iputils.hh:537,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - socketAddress
    - salen
    argTypes:
    - struct sockaddr*
    - socklen_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 538
      start: 535
    functionDepth: 0
    functionLinenumber: 535
    functionLinenumberEnd: 538
    functionName: SockaddrWrapper
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 1
    functionsReached:
    - setSockaddr
    linkageType: ''
    returnType: void
    signature: void SockaddrWrapper(const struct sockaddr* socketAddress, socklen_t
      salen)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: setSockaddr
      Src: /src/pdns/pdns/iputils.hh:543,1
    - Dst: reinterpret_cast<const struct sockaddr*>
      Src: /src/pdns/pdns/iputils.hh:543,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - socketAddress
    argTypes:
    - struct sockaddr_in6*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 544
      start: 540
    functionDepth: 0
    functionLinenumber: 540
    functionLinenumberEnd: 544
    functionName: SockaddrWrapper
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 1
    functionsReached:
    - reinterpret_cast<const struct sockaddr*>
    - setSockaddr
    linkageType: ''
    returnType: void
    signature: void SockaddrWrapper(const struct sockaddr_in6* socketAddress)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: setSockaddr
      Src: /src/pdns/pdns/iputils.hh:549,1
    - Dst: reinterpret_cast<const struct sockaddr*>
      Src: /src/pdns/pdns/iputils.hh:549,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - socketAddress
    argTypes:
    - struct sockaddr_in*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 550
      start: 546
    functionDepth: 0
    functionLinenumber: 546
    functionLinenumberEnd: 550
    functionName: SockaddrWrapper
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 1
    functionsReached:
    - reinterpret_cast<const struct sockaddr*>
    - setSockaddr
    linkageType: ''
    returnType: void
    signature: void SockaddrWrapper(const struct sockaddr_in* socketAddress)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: setSockaddr
      Src: /src/pdns/pdns/iputils.hh:555,1
    - Dst: reinterpret_cast<const struct sockaddr*>
      Src: /src/pdns/pdns/iputils.hh:555,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - socketAddress
    argTypes:
    - struct sockaddr_un*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 556
      start: 552
    functionDepth: 0
    functionLinenumber: 552
    functionLinenumberEnd: 556
    functionName: SockaddrWrapper
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 1
    functionsReached:
    - reinterpret_cast<const struct sockaddr*>
    - setSockaddr
    linkageType: ''
    returnType: void
    signature: void SockaddrWrapper(const struct sockaddr_un* socketAddress)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PDNSException
      Src: /src/pdns/pdns/iputils.hh:561,1
    - Dst: memcpy
      Src: /src/pdns/pdns/iputils.hh:563,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - socketAddress
    - salen
    argTypes:
    - struct sockaddr*
    - socklen_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 564
      start: 558
    functionDepth: 0
    functionLinenumber: 558
    functionLinenumberEnd: 564
    functionName: setSockaddr
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 8
    functionsReached:
    - PDNSException
    - memcpy
    linkageType: ''
    returnType: void
    signature: void setSockaddr(const struct sockaddr* socketAddress, socklen_t salen)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/pdns/pdns/iputils.hh:568,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/iputils.hh:572,1
    - Dst: makeIPv4sockaddr
      Src: /src/pdns/pdns/iputils.hh:574,1
    - Dst: makeIPv6sockaddr
      Src: /src/pdns/pdns/iputils.hh:576,1
    - Dst: find
      Src: /src/pdns/pdns/iputils.hh:579,1
    - Dst: makeUNsockaddr
      Src: /src/pdns/pdns/iputils.hh:579,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/iputils.hh:580,1
    - Dst: htons
      Src: /src/pdns/pdns/iputils.hh:585,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 19
    argCount: 1
    argNames:
    - ' str'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 587
      start: 566
    functionDepth: 0
    functionLinenumber: 566
    functionLinenumberEnd: 587
    functionName: SockaddrWrapper
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 1
    functionsReached:
    - makeIPv4sockaddr
    - PDNSException
    - memset
    - makeIPv6sockaddr
    - makeUNsockaddr
    - find
    - htons
    linkageType: ''
    returnType: void
    signature: void SockaddrWrapper(const string& str, uint16_t port = 0)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 592
      start: 589
    functionDepth: 0
    functionLinenumber: 589
    functionLinenumberEnd: 592
    functionName: isIPv6
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 8
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool isIPv6() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 596
      start: 593
    functionDepth: 0
    functionLinenumber: 593
    functionLinenumberEnd: 596
    functionName: isIPv4
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 9
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool isIPv4() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 600
      start: 597
    functionDepth: 0
    functionLinenumber: 597
    functionLinenumberEnd: 600
    functionName: isUnixSocket
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool isUnixSocket() const
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: getnameinfo
      Src: /src/pdns/pdns/iputils.hh:610,1
    - Dst: reinterpret_cast<const struct sockaddr*>
      Src: /src/pdns/pdns/iputils.hh:610,1
    - Dst: getSocklen
      Src: /src/pdns/pdns/iputils.hh:610,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/iputils.hh:610,1
    - Dst: std::array::size
      Src: /src/pdns/pdns/iputils.hh:610,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/iputils.hh:612,1
    - Dst: string
      Src: /src/pdns/pdns/iputils.hh:614,1
    - Dst: gai_strerror
      Src: /src/pdns/pdns/iputils.hh:614,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 617
      start: 602
    functionDepth: 0
    functionLinenumber: 602
    functionLinenumberEnd: 617
    functionName: toString
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 89
    functionsReached:
    - gai_strerror
    - getnameinfo
    - string
    - reinterpret_cast<const struct sockaddr*>
    - getSocklen
    - std::array::data
    - std::array::size
    linkageType: ''
    returnType: string
    signature: string toString() const
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: toString
      Src: /src/pdns/pdns/iputils.hh:622,1
    - Dst: toString
      Src: /src/pdns/pdns/iputils.hh:625,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/iputils.hh:625,1
    - Dst: ntohs
      Src: /src/pdns/pdns/iputils.hh:625,1
    - Dst: toString
      Src: /src/pdns/pdns/iputils.hh:627,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/iputils.hh:627,1
    - Dst: ntohs
      Src: /src/pdns/pdns/iputils.hh:627,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 628
      start: 619
    functionDepth: 0
    functionLinenumber: 619
    functionLinenumberEnd: 628
    functionName: toStringWithPort
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 32
    functionsReached:
    - toString
    - std::to_string
    - ntohs
    linkageType: ''
    returnType: string
    signature: string toStringWithPort() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/pdns/pdns/iputils.hh:632,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 633
      start: 630
    functionDepth: 0
    functionLinenumber: 630
    functionLinenumberEnd: 633
    functionName: reset
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 31
    functionsReached:
    - memset
    linkageType: ''
    returnType: void
    signature: void reset()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' arg'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 641
      start: 640
    functionDepth: 0
    functionLinenumber: 640
    functionLinenumberEnd: 641
    functionName: NetmaskException::NetmaskException
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void NetmaskException(const string& arg)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: inet_pton
      Src: /src/pdns/pdns/iputils.hh:648,1
    - Dst: c_str
      Src: /src/pdns/pdns/iputils.hh:648,1
    - Dst: makeIPv6sockaddr
      Src: /src/pdns/pdns/iputils.hh:650,1
    - Dst: NetmaskException
      Src: /src/pdns/pdns/iputils.hh:651,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - ' str'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 655
      start: 644
    functionDepth: 0
    functionLinenumber: 644
    functionLinenumberEnd: 655
    functionName: makeComboAddress
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 1
    functionsReached:
    - inet_pton
    - makeIPv6sockaddr
    - NetmaskException
    - c_str
    linkageType: ''
    returnType: ComboAddress
    signature: ComboAddress makeComboAddress(const string& str)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: NetmaskException
      Src: /src/pdns/pdns/iputils.hh:664,1
    - Dst: memcpy
      Src: /src/pdns/pdns/iputils.hh:666,1
    - Dst: NetmaskException
      Src: /src/pdns/pdns/iputils.hh:671,1
    - Dst: memcpy
      Src: /src/pdns/pdns/iputils.hh:673,1
    - Dst: NetmaskException
      Src: /src/pdns/pdns/iputils.hh:676,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 18
    argCount: 3
    argNames:
    - version
    - raw
    - len
    argTypes:
    - uint8_t
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 680
      start: 657
    functionDepth: 0
    functionLinenumber: 657
    functionLinenumberEnd: 680
    functionName: makeComboAddressFromRaw
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 0
    functionsReached:
    - memcpy
    - NetmaskException
    linkageType: ''
    returnType: ComboAddress
    signature: ComboAddress makeComboAddressFromRaw(uint8_t version, const char* raw,
      size_t len)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeComboAddressFromRaw
      Src: /src/pdns/pdns/iputils.hh:684,1
    - Dst: c_str
      Src: /src/pdns/pdns/iputils.hh:684,1
    - Dst: size
      Src: /src/pdns/pdns/iputils.hh:684,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - version
    - ' str'
    argTypes:
    - uint8_t
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 685
      start: 682
    functionDepth: 0
    functionLinenumber: 682
    functionLinenumberEnd: 685
    functionName: makeComboAddressFromRaw
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 1
    functionsReached:
    - c_str
    - size
    - makeComboAddressFromRaw
    linkageType: ''
    returnType: ComboAddress
    signature: ComboAddress makeComboAddressFromRaw(uint8_t version, const string&
      str)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 696
      start: 692
    functionDepth: 0
    functionLinenumber: 692
    functionLinenumberEnd: 696
    functionName: Netmask::Netmask
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Netmask()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Netmask::setBits
      Src: /src/pdns/pdns/iputils.hh:702,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ' network'
    argTypes:
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 703
      start: 698
    functionDepth: 0
    functionLinenumber: 698
    functionLinenumberEnd: 703
    functionName: Netmask::Netmask
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 4
    functionsReached:
    - Netmask::setBits
    linkageType: ''
    returnType: void
    signature: void Netmask(const ComboAddress& network, uint8_t bits = 0xff)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Netmask::setBits
      Src: /src/pdns/pdns/iputils.hh:709,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - network
    argTypes:
    - sockaddr_in*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 710
      start: 705
    functionDepth: 0
    functionLinenumber: 705
    functionLinenumberEnd: 710
    functionName: Netmask::Netmask
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 4
    functionsReached:
    - Netmask::setBits
    linkageType: ''
    returnType: void
    signature: void Netmask(const sockaddr_in* network, uint8_t bits = 0xff)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Netmask::setBits
      Src: /src/pdns/pdns/iputils.hh:715,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - network
    argTypes:
    - sockaddr_in6*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 716
      start: 711
    functionDepth: 0
    functionLinenumber: 711
    functionLinenumberEnd: 716
    functionName: Netmask::Netmask
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 4
    functionsReached:
    - Netmask::setBits
    linkageType: ''
    returnType: void
    signature: void Netmask(const sockaddr_in6* network, uint8_t bits = 0xff)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Netmask::isIPv4
      Src: /src/pdns/pdns/iputils.hh:719,1
    - Dst: std::min
      Src: /src/pdns/pdns/iputils.hh:719,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/iputils.hh:719,1
    - Dst: std::min
      Src: /src/pdns/pdns/iputils.hh:719,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/iputils.hh:719,1
    - Dst: Netmask::isIPv4
      Src: /src/pdns/pdns/iputils.hh:729,1
    - Dst: htonl
      Src: /src/pdns/pdns/iputils.hh:730,1
    - Dst: ntohl
      Src: /src/pdns/pdns/iputils.hh:730,1
    - Dst: Netmask::isIPv6
      Src: /src/pdns/pdns/iputils.hh:732,1
    - Dst: reinterpret_cast<uint8_t*>
      Src: /src/pdns/pdns/iputils.hh:734,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/iputils.hh:736,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 1
    argNames:
    - value
    argTypes:
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 746
      start: 717
    functionDepth: 0
    functionLinenumber: 717
    functionLinenumberEnd: 746
    functionName: Netmask::setBits
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 4
    functionsReached:
    - ntohl
    - htonl
    - std::min
    - reinterpret_cast<uint8_t*>
    - static_cast<uint8_t>
    - Netmask::isIPv4
    - Netmask::isIPv6
    linkageType: ''
    returnType: void
    signature: void setBits(uint8_t value)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: at
      Src: /src/pdns/pdns/iputils.hh:757,1
    - Dst: at
      Src: /src/pdns/pdns/iputils.hh:759,1
    - Dst: makeComboAddressFromRaw
      Src: /src/pdns/pdns/iputils.hh:761,1
    - Dst: substr
      Src: /src/pdns/pdns/iputils.hh:761,1
    - Dst: Netmask::setBits
      Src: /src/pdns/pdns/iputils.hh:763,1
    - Dst: splitField
      Src: /src/pdns/pdns/iputils.hh:766,1
    - Dst: makeComboAddress
      Src: /src/pdns/pdns/iputils.hh:767,1
    - Dst: pair::second::empty
      Src: /src/pdns/pdns/iputils.hh:769,1
    - Dst: Netmask::setBits
      Src: /src/pdns/pdns/iputils.hh:770,1
    - Dst: pdns::checked_stoi<uint8_t>
      Src: /src/pdns/pdns/iputils.hh:770,1
    - Dst: Netmask::setBits
      Src: /src/pdns/pdns/iputils.hh:773,1
    - Dst: Netmask::setBits
      Src: /src/pdns/pdns/iputils.hh:776,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 1
    argNames:
    - ' mask'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 779
      start: 754
    functionDepth: 0
    functionLinenumber: 754
    functionLinenumberEnd: 779
    functionName: Netmask::Netmask
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 4
    functionsReached:
    - splitField
    - pdns::checked_stoi<uint8_t>
    - at
    - makeComboAddressFromRaw
    - substr
    - pair::second::empty
    - Netmask::setBits
    - makeComboAddress
    linkageType: ''
    returnType: void
    signature: void Netmask(const string& mask, stringType type = humanString)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Netmask::match
      Src: /src/pdns/pdns/iputils.hh:783,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' address'
    argTypes:
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 784
      start: 781
    functionDepth: 0
    functionLinenumber: 781
    functionLinenumberEnd: 784
    functionName: Netmask::match
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 3
    functionsReached:
    - Netmask::match
    linkageType: ''
    returnType: bool
    signature: bool match(const ComboAddress& address) const
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Netmask::match4
      Src: /src/pdns/pdns/iputils.hh:793,1
    - Dst: htonl
      Src: /src/pdns/pdns/iputils.hh:793,1
    - Dst: reinterpret_cast<const uint8_t*>
      Src: /src/pdns/pdns/iputils.hh:799,1
    - Dst: reinterpret_cast<const uint8_t*>
      Src: /src/pdns/pdns/iputils.hh:800,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/iputils.hh:811,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 1
    argNames:
    - address
    argTypes:
    - ComboAddress*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 817
      start: 787
    functionDepth: 0
    functionLinenumber: 787
    functionLinenumberEnd: 817
    functionName: Netmask::match
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 3
    functionsReached:
    - static_cast<uint8_t>
    - Netmask::match4
    - reinterpret_cast<const uint8_t*>
    - htonl
    linkageType: ''
    returnType: bool
    signature: bool match(const ComboAddress* address) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeComboAddress
      Src: /src/pdns/pdns/iputils.hh:822,1
    - Dst: Netmask::match
      Src: /src/pdns/pdns/iputils.hh:823,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' arg'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 824
      start: 820
    functionDepth: 0
    functionLinenumber: 820
    functionLinenumberEnd: 824
    functionName: Netmask::match
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 4
    functionsReached:
    - Netmask::match
    - makeComboAddress
    linkageType: ''
    returnType: bool
    signature: bool match(const string& arg) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ntohl
      Src: /src/pdns/pdns/iputils.hh:829,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - arg
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 830
      start: 827
    functionDepth: 0
    functionLinenumber: 827
    functionLinenumberEnd: 830
    functionName: Netmask::match4
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 1
    functionsReached:
    - ntohl
    linkageType: ''
    returnType: bool
    signature: bool match4(uint32_t arg) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: toStringNoInterface
      Src: /src/pdns/pdns/iputils.hh:834,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/iputils.hh:834,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 835
      start: 832
    functionDepth: 0
    functionLinenumber: 832
    functionLinenumberEnd: 835
    functionName: Netmask::toString
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 3
    functionsReached:
    - toStringNoInterface
    - std::to_string
    linkageType: ''
    returnType: string
    signature: string toString() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: toStringNoInterface
      Src: /src/pdns/pdns/iputils.hh:839,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 840
      start: 837
    functionDepth: 0
    functionLinenumber: 837
    functionLinenumberEnd: 840
    functionName: Netmask::toStringNoMask
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 0
    functionsReached:
    - toStringNoInterface
    linkageType: ''
    returnType: string
    signature: string toStringNoMask() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Netmask::isIPv4
      Src: /src/pdns/pdns/iputils.hh:846,1
    - Dst: Netmask::toByteString
      Src: /src/pdns/pdns/iputils.hh:847,1
    - Dst: Netmask::getBits
      Src: /src/pdns/pdns/iputils.hh:848,1
    - Dst: ostringstream::str
      Src: /src/pdns/pdns/iputils.hh:850,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 851
      start: 842
    functionDepth: 0
    functionLinenumber: 842
    functionLinenumberEnd: 851
    functionName: Netmask::toByteString
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 1
    functionsReached:
    - ostringstream::str
    - Netmask::isIPv4
    - Netmask::getBits
    - Netmask::toByteString
    linkageType: ''
    returnType: string
    signature: string toByteString() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 856
      start: 853
    functionDepth: 0
    functionLinenumber: 853
    functionLinenumberEnd: 856
    functionName: '& getNetwork() const'
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: ComboAddress
    signature: ComboAddress & getNetwork() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getNetwork
      Src: /src/pdns/pdns/iputils.hh:860,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 861
      start: 858
    functionDepth: 0
    functionLinenumber: 858
    functionLinenumberEnd: 861
    functionName: '& getMaskedNetwork() const'
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 0
    functionsReached:
    - getNetwork
    linkageType: ''
    returnType: ComboAddress
    signature: ComboAddress & getMaskedNetwork() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 866
      start: 863
    functionDepth: 0
    functionLinenumber: 863
    functionLinenumberEnd: 866
    functionName: Netmask::getBits
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: uint8_t
    signature: uint8_t getBits() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 871
      start: 868
    functionDepth: 0
    functionLinenumber: 868
    functionLinenumberEnd: 871
    functionName: Netmask::isIPv6
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool isIPv6() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 876
      start: 873
    functionDepth: 0
    functionLinenumber: 873
    functionLinenumberEnd: 876
    functionName: Netmask::isIPv4
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool isIPv4() const
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/iputils.hh:880,1
    - Dst: empty
      Src: /src/pdns/pdns/iputils.hh:880,1
    - Dst: empty
      Src: /src/pdns/pdns/iputils.hh:883,1
    - Dst: empty
      Src: /src/pdns/pdns/iputils.hh:883,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - Netmask
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 894
      start: 878
    functionDepth: 0
    functionLinenumber: 878
    functionLinenumberEnd: 894
    functionName: operator<(const Netmask& rhs) const
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 0
    functionsReached:
    - empty
    linkageType: ''
    returnType: bool
    signature: bool operator<(const Netmask& rhs) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: rhs
      Src: /src/pdns/pdns/iputils.hh:898,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - Netmask
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 899
      start: 896
    functionDepth: 0
    functionLinenumber: 896
    functionLinenumberEnd: 899
    functionName: operator>(const Netmask& rhs) const
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 0
    functionsReached:
    - rhs
    linkageType: ''
    returnType: bool
    signature: bool operator>(const Netmask& rhs) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::tie
      Src: /src/pdns/pdns/iputils.hh:903,1
    - Dst: std::tie
      Src: /src/pdns/pdns/iputils.hh:903,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - Netmask
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 904
      start: 901
    functionDepth: 0
    functionLinenumber: 901
    functionLinenumberEnd: 904
    functionName: operator==(const Netmask& rhs) const
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 0
    functionsReached:
    - std::tie
    linkageType: ''
    returnType: bool
    signature: bool operator==(const Netmask& rhs) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - Netmask
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 909
      start: 906
    functionDepth: 0
    functionLinenumber: 906
    functionLinenumberEnd: 909
    functionName: operator!=(const Netmask& rhs) const
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool operator!=(const Netmask& rhs) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 914
      start: 911
    functionDepth: 0
    functionLinenumber: 911
    functionLinenumberEnd: 914
    functionName: Netmask::empty
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool empty() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getMaskedNetwork
      Src: /src/pdns/pdns/iputils.hh:919,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 920
      start: 917
    functionDepth: 0
    functionLinenumber: 917
    functionLinenumberEnd: 920
    functionName: Netmask::getNormalized
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 1
    functionsReached:
    - getMaskedNetwork
    linkageType: ''
    returnType: Netmask
    signature: Netmask getNormalized() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::min
      Src: /src/pdns/pdns/iputils.hh:924,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - bits
    argTypes:
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 925
      start: 922
    functionDepth: 0
    functionLinenumber: 922
    functionLinenumberEnd: 925
    functionName: Netmask::getSuper
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 0
    functionsReached:
    - std::min
    linkageType: ''
    returnType: Netmask
    signature: Netmask getSuper(uint8_t bits) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Netmask::getBits
      Src: /src/pdns/pdns/iputils.hh:930,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 931
      start: 928
    functionDepth: 0
    functionLinenumber: 928
    functionLinenumberEnd: 931
    functionName: Netmask::getFullBits
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 0
    functionsReached:
    - Netmask::getBits
    linkageType: ''
    returnType: uint8_t
    signature: uint8_t getFullBits() const
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: Netmask::isIPv4
      Src: /src/pdns/pdns/iputils.hh:944,1
    - Dst: Netmask::isIPv6
      Src: /src/pdns/pdns/iputils.hh:949,1
    - Dst: Netmask::getBit
      Src: /src/pdns/pdns/iputils.hh:955,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 17
    argCount: 1
    argNames:
    - bit
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 956
      start: 938
    functionDepth: 0
    functionLinenumber: 938
    functionLinenumberEnd: 956
    functionName: Netmask::getBit
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 1
    functionsReached:
    - Netmask::getBit
    - Netmask::isIPv4
    - Netmask::isIPv6
    linkageType: ''
    returnType: bool
    signature: bool getBit(int bit) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: burtle
      Src: /src/pdns/pdns/iputils.hh:962,1
    - Dst: ComboAddress::addressOnlyHash
      Src: /src/pdns/pdns/iputils.hh:962,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' netmask'
    argTypes:
    - Netmask
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 963
      start: 960
    functionDepth: 0
    functionLinenumber: 960
    functionLinenumberEnd: 963
    functionName: operator()(const Netmask& netmask) const
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 0
    functionsReached:
    - burtle
    - ComboAddress::addressOnlyHash
    linkageType: ''
    returnType: size_t
    signature: size_t operator()(const Netmask& netmask) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' netmask'
    argTypes:
    - Netmask
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 980
      start: 977
    functionDepth: 0
    functionLinenumber: 977
    functionLinenumberEnd: 980
    functionName: operator()(const Netmask& netmask) const
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: auto operator()(const Netmask& netmask) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' netmask'
    argTypes:
    - Netmask
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 980
      start: 977
    functionDepth: 0
    functionLinenumber: 977
    functionLinenumberEnd: 980
    functionName: operator()(const Netmask& netmask) const
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: auto operator()(const Netmask& netmask) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1026
      start: 1023
    functionDepth: 0
    functionLinenumber: 1023
    functionLinenumberEnd: 1026
    functionName: NetmaskTree::TreeNode::TreeNode
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void TreeNode() noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getNormalized
      Src: /src/pdns/pdns/iputils.hh:1028,1
    - Dst: value_type
      Src: /src/pdns/pdns/iputils.hh:1028,1
    - Dst: getFullBits
      Src: /src/pdns/pdns/iputils.hh:1028,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' key'
    argTypes:
    - key_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1030
      start: 1027
    functionDepth: 0
    functionLinenumber: 1027
    functionLinenumberEnd: 1030
    functionName: NetmaskTree::TreeNode::TreeNode
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 0
    functionsReached:
    - getFullBits
    - getNormalized
    - value_type
    linkageType: ''
    returnType: void
    signature: void TreeNode(const key_type& key)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: first::getBits
      Src: /src/pdns/pdns/iputils.hh:1035,1
    - Dst: make_unique<TreeNode>
      Src: /src/pdns/pdns/iputils.hh:1036,1
    - Dst: get
      Src: /src/pdns/pdns/iputils.hh:1038,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - ' key'
    argTypes:
    - key_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1039
      start: 1033
    functionDepth: 0
    functionLinenumber: 1033
    functionLinenumberEnd: 1039
    functionName: NetmaskTree::TreeNode::make_left
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 0
    functionsReached:
    - first::getBits
    - make_unique<TreeNode>
    - get
    linkageType: ''
    returnType: TreeNode
    signature: TreeNode * make_left(const key_type& key)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: first::getBits
      Src: /src/pdns/pdns/iputils.hh:1044,1
    - Dst: make_unique<TreeNode>
      Src: /src/pdns/pdns/iputils.hh:1045,1
    - Dst: get
      Src: /src/pdns/pdns/iputils.hh:1047,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - ' key'
    argTypes:
    - key_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1048
      start: 1042
    functionDepth: 0
    functionLinenumber: 1042
    functionLinenumberEnd: 1048
    functionName: NetmaskTree::TreeNode::make_right
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 0
    functionsReached:
    - first::getBits
    - make_unique<TreeNode>
    - get
    linkageType: ''
    returnType: TreeNode
    signature: TreeNode * make_right(const key_type& key)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: std::logic_error
      Src: /src/pdns/pdns/iputils.hh:1055,1
    - Dst: left::get
      Src: /src/pdns/pdns/iputils.hh:1060,1
    - Dst: get
      Src: /src/pdns/pdns/iputils.hh:1061,1
    - Dst: std::logic_error
      Src: /src/pdns/pdns/iputils.hh:1062,1
    - Dst: make_unique<TreeNode>
      Src: /src/pdns/pdns/iputils.hh:1068,1
    - Dst: auto::get
      Src: /src/pdns/pdns/iputils.hh:1071,1
    - Dst: std::swap
      Src: /src/pdns/pdns/iputils.hh:1075,1
    - Dst: std::move
      Src: /src/pdns/pdns/iputils.hh:1079,1
    - Dst: std::unique_ptr::node::first::getBit
      Src: /src/pdns/pdns/iputils.hh:1088,1
    - Dst: std::move
      Src: /src/pdns/pdns/iputils.hh:1089,1
    - Dst: std::move
      Src: /src/pdns/pdns/iputils.hh:1092,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 2
    argNames:
    - ' key'
    - bits
    argTypes:
    - key_type
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1096
      start: 1051
    functionDepth: 0
    functionLinenumber: 1051
    functionLinenumberEnd: 1096
    functionName: NetmaskTree::TreeNode::split
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 3
    functionsReached:
    - std::swap
    - std::move
    - auto::get
    - std::unique_ptr::node::first::getBit
    - make_unique<TreeNode>
    - get
    - left::get
    - std::logic_error
    linkageType: ''
    returnType: TreeNode
    signature: TreeNode * split(const key_type& key, int bits)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: std::logic_error
      Src: /src/pdns/pdns/iputils.hh:1103,1
    - Dst: left::get
      Src: /src/pdns/pdns/iputils.hh:1108,1
    - Dst: get
      Src: /src/pdns/pdns/iputils.hh:1109,1
    - Dst: std::logic_error
      Src: /src/pdns/pdns/iputils.hh:1110,1
    - Dst: std::move
      Src: /src/pdns/pdns/iputils.hh:1118,1
    - Dst: make_unique<TreeNode>
      Src: /src/pdns/pdns/iputils.hh:1120,1
    - Dst: first::getSuper
      Src: /src/pdns/pdns/iputils.hh:1120,1
    - Dst: get
      Src: /src/pdns/pdns/iputils.hh:1121,1
    - Dst: make_unique<TreeNode>
      Src: /src/pdns/pdns/iputils.hh:1126,1
    - Dst: unique_ptr::get
      Src: /src/pdns/pdns/iputils.hh:1127,1
    - Dst: unique_ptr::node::first::getBit
      Src: /src/pdns/pdns/iputils.hh:1133,1
    - Dst: std::move
      Src: /src/pdns/pdns/iputils.hh:1134,1
    - Dst: std::move
      Src: /src/pdns/pdns/iputils.hh:1135,1
    - Dst: std::move
      Src: /src/pdns/pdns/iputils.hh:1138,1
    - Dst: std::move
      Src: /src/pdns/pdns/iputils.hh:1139,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 2
    argNames:
    - ' key'
    - bits
    argTypes:
    - key_type
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1147
      start: 1099
    functionDepth: 0
    functionLinenumber: 1099
    functionLinenumberEnd: 1147
    functionName: NetmaskTree::TreeNode::fork
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 0
    functionsReached:
    - std::move
    - unique_ptr::get
    - make_unique<TreeNode>
    - get
    - left::get
    - unique_ptr::node::first::getBit
    - first::getSuper
    - std::logic_error
    linkageType: ''
    returnType: TreeNode
    signature: TreeNode * fork(const key_type& key, int bits)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TreeNode*::left::get
      Src: /src/pdns/pdns/iputils.hh:1155,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1158
      start: 1150
    functionDepth: 0
    functionLinenumber: 1150
    functionLinenumberEnd: 1158
    functionName: NetmaskTree::TreeNode::traverse_l
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 0
    functionsReached:
    - TreeNode*::left::get
    linkageType: ''
    returnType: TreeNode
    signature: TreeNode * traverse_l()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: TreeNode*::right::get
      Src: /src/pdns/pdns/iputils.hh:1168,1
    - Dst: TreeNode*::traverse_l
      Src: /src/pdns/pdns/iputils.hh:1170,1
    - Dst: TreeNode*::left::get
      Src: /src/pdns/pdns/iputils.hh:1179,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1184
      start: 1161
    functionDepth: 0
    functionLinenumber: 1161
    functionLinenumberEnd: 1184
    functionName: NetmaskTree::TreeNode::traverse_lnr
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 0
    functionsReached:
    - TreeNode*::left::get
    - TreeNode*::right::get
    - TreeNode*::traverse_l
    linkageType: ''
    returnType: TreeNode
    signature: TreeNode * traverse_lnr()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: NetmaskTree::TreeNode::traverse_lnr
      Src: /src/pdns/pdns/iputils.hh:1189,1
    - Dst: TreeNode*::traverse_lnr
      Src: /src/pdns/pdns/iputils.hh:1192,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1195
      start: 1187
    functionDepth: 0
    functionLinenumber: 1187
    functionLinenumberEnd: 1195
    functionName: NetmaskTree::TreeNode::traverse_lnr_assigned
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 0
    functionsReached:
    - TreeNode*::traverse_lnr
    - NetmaskTree::TreeNode::traverse_lnr
    linkageType: ''
    returnType: TreeNode
    signature: TreeNode * traverse_lnr_assigned()
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: TreeNode*::left::get
      Src: /src/pdns/pdns/iputils.hh:1215,1
    - Dst: TreeNode*::left::reset
      Src: /src/pdns/pdns/iputils.hh:1216,1
    - Dst: TreeNode*::right::reset
      Src: /src/pdns/pdns/iputils.hh:1219,1
    - Dst: NetmaskTree::cleanup_tree
      Src: /src/pdns/pdns/iputils.hh:1222,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 1
    argNames:
    - node
    argTypes:
    - TreeNode*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1225
      start: 1207
    functionDepth: 0
    functionLinenumber: 1207
    functionLinenumberEnd: 1225
    functionName: NetmaskTree::cleanup_tree
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 1
    functionsReached:
    - TreeNode*::left::get
    - TreeNode*::left::reset
    - NetmaskTree::cleanup_tree
    - TreeNode*::right::reset
    linkageType: ''
    returnType: void
    signature: void cleanup_tree(TreeNode* node)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: d_root::get
      Src: /src/pdns/pdns/iputils.hh:1230,1
    - Dst: TreeNode*::traverse_l
      Src: /src/pdns/pdns/iputils.hh:1232,1
    - Dst: insert
      Src: /src/pdns/pdns/iputils.hh:1236,1
    - Dst: TreeNode*::traverse_lnr
      Src: /src/pdns/pdns/iputils.hh:1238,1
    - Dst: abort
      Src: /src/pdns/pdns/iputils.hh:1242,1
    - Dst: abort
      Src: /src/pdns/pdns/iputils.hh:1245,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - NetmaskTree
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1247
      start: 1227
    functionDepth: 1
    functionLinenumber: 1227
    functionLinenumberEnd: 1247
    functionName: NetmaskTree::copyTree
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 0
    functionsReached:
    - abort
    - TreeNode*::traverse_l
    - d_root::get
    - insert
    - TreeNode*::traverse_lnr
    linkageType: ''
    returnType: void
    signature: void copyTree(const NetmaskTree& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - tree
    - node
    argTypes:
    - NetmaskTree*
    - TreeNode*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1268
      start: 1265
    functionDepth: 0
    functionLinenumber: 1265
    functionLinenumberEnd: 1268
    functionName: NetmaskTree::Iterator::Iterator
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Iterator(const NetmaskTree* tree, TreeNode* node)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1272
      start: 1271
    functionDepth: 0
    functionLinenumber: 1271
    functionLinenumberEnd: 1272
    functionName: NetmaskTree::Iterator::Iterator
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Iterator()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::logic_error
      Src: /src/pdns/pdns/iputils.hh:1277,1
    - Dst: traverse_lnr_assigned
      Src: /src/pdns/pdns/iputils.hh:1280,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1282
      start: 1274
    functionDepth: 0
    functionLinenumber: 1274
    functionLinenumberEnd: 1282
    functionName: '& operator++()'
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 0
    functionsReached:
    - traverse_lnr_assigned
    - std::logic_error
    linkageType: ''
    returnType: Iterator
    signature: Iterator & operator++()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1288
      start: 1283
    functionDepth: 0
    functionLinenumber: 1283
    functionLinenumberEnd: 1288
    functionName: operator++(int)
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Iterator
    signature: Iterator operator++(int)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::logic_error
      Src: /src/pdns/pdns/iputils.hh:1293,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1297
      start: 1290
    functionDepth: 0
    functionLinenumber: 1290
    functionLinenumberEnd: 1297
    functionName: operator*()
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 0
    functionsReached:
    - std::logic_error
    linkageType: ''
    returnType: reference
    signature: reference operator*()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::logic_error
      Src: /src/pdns/pdns/iputils.hh:1302,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1306
      start: 1299
    functionDepth: 0
    functionLinenumber: 1299
    functionLinenumberEnd: 1306
    functionName: operator->()
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 0
    functionsReached:
    - std::logic_error
    linkageType: ''
    returnType: pointer
    signature: pointer operator->()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - Iterator
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1311
      start: 1308
    functionDepth: 0
    functionLinenumber: 1308
    functionLinenumberEnd: 1311
    functionName: operator==(const Iterator& rhs) const
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool operator==(const Iterator& rhs) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - Iterator
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1315
      start: 1312
    functionDepth: 0
    functionLinenumber: 1312
    functionLinenumberEnd: 1315
    functionName: operator!=(const Iterator& rhs) const
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool operator!=(const Iterator& rhs) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TreeNode::TreeNode
      Src: /src/pdns/pdns/iputils.hh:1319,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1321
      start: 1318
    functionDepth: 0
    functionLinenumber: 1318
    functionLinenumberEnd: 1321
    functionName: NetmaskTree::NetmaskTree
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 5
    functionsReached:
    - TreeNode::TreeNode
    linkageType: ''
    returnType: void
    signature: void NetmaskTree() noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TreeNode::TreeNode
      Src: /src/pdns/pdns/iputils.hh:1324,1
    - Dst: NetmaskTree::copyTree
      Src: /src/pdns/pdns/iputils.hh:1326,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - NetmaskTree
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1327
      start: 1323
    functionDepth: 0
    functionLinenumber: 1323
    functionLinenumberEnd: 1327
    functionName: NetmaskTree::NetmaskTree
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 5
    functionsReached:
    - TreeNode::TreeNode
    - NetmaskTree::copyTree
    linkageType: ''
    returnType: void
    signature: void NetmaskTree(const NetmaskTree& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1329
      start: 1329
    functionDepth: 0
    functionLinenumber: 1329
    functionLinenumberEnd: 1329
    functionName: ~NetmaskTree()
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~NetmaskTree()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: clear
      Src: /src/pdns/pdns/iputils.hh:1334,1
    - Dst: copyTree
      Src: /src/pdns/pdns/iputils.hh:1335,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - NetmaskTree
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1338
      start: 1331
    functionDepth: 1
    functionLinenumber: 1331
    functionLinenumberEnd: 1338
    functionName: '& operator=(const NetmaskTree& rhs)'
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 0
    functionsReached:
    - clear
    - copyTree
    linkageType: ''
    returnType: NetmaskTree
    signature: NetmaskTree & operator=(const NetmaskTree& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1340
      start: 1340
    functionDepth: 0
    functionLinenumber: 1340
    functionLinenumberEnd: 1340
    functionName: NetmaskTree::NetmaskTree
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void NetmaskTree(NetmaskTree&&) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1341
      start: 1341
    functionDepth: 0
    functionLinenumber: 1341
    functionLinenumberEnd: 1341
    functionName: '& operator=(NetmaskTree&&) noexcept'
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: NetmaskTree
    signature: NetmaskTree & operator=(NetmaskTree&&) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Iterator
      Src: /src/pdns/pdns/iputils.hh:1345,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1346
      start: 1343
    functionDepth: 0
    functionLinenumber: 1343
    functionLinenumberEnd: 1346
    functionName: NetmaskTree::begin
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 1
    functionsReached:
    - Iterator
    linkageType: ''
    returnType: iterator
    signature: iterator begin() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Iterator
      Src: /src/pdns/pdns/iputils.hh:1349,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1350
      start: 1347
    functionDepth: 0
    functionLinenumber: 1347
    functionLinenumberEnd: 1350
    functionName: NetmaskTree::end
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 1
    functionsReached:
    - Iterator
    linkageType: ''
    returnType: iterator
    signature: iterator end() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Iterator
      Src: /src/pdns/pdns/iputils.hh:1353,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1354
      start: 1351
    functionDepth: 0
    functionLinenumber: 1351
    functionLinenumberEnd: 1354
    functionName: NetmaskTree::begin
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 1
    functionsReached:
    - Iterator
    linkageType: ''
    returnType: iterator
    signature: iterator begin()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Iterator
      Src: /src/pdns/pdns/iputils.hh:1357,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1358
      start: 1355
    functionDepth: 0
    functionLinenumber: 1355
    functionLinenumberEnd: 1358
    functionName: NetmaskTree::end
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 1
    functionsReached:
    - Iterator
    linkageType: ''
    returnType: iterator
    signature: iterator end()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: insert
      Src: /src/pdns/pdns/iputils.hh:1362,1
    - Dst: key_type
      Src: /src/pdns/pdns/iputils.hh:1362,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' mask'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1363
      start: 1360
    functionDepth: 1
    functionLinenumber: 1360
    functionLinenumberEnd: 1363
    functionName: '& insert(const string& mask)'
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 0
    functionsReached:
    - key_type
    - insert
    linkageType: ''
    returnType: node_type
    signature: node_type & insert(const string& mask)
  - BBCount: 22
    BranchProfiles: []
    Callsites:
    - Dst: isIPv4
      Src: /src/pdns/pdns/iputils.hh:1372,1
    - Dst: left::get
      Src: /src/pdns/pdns/iputils.hh:1373,1
    - Dst: make_unique<TreeNode>
      Src: /src/pdns/pdns/iputils.hh:1376,1
    - Dst: left::get
      Src: /src/pdns/pdns/iputils.hh:1377,1
    - Dst: get
      Src: /src/pdns/pdns/iputils.hh:1379,1
    - Dst: isIPv6
      Src: /src/pdns/pdns/iputils.hh:1385,1
    - Dst: right::get
      Src: /src/pdns/pdns/iputils.hh:1386,1
    - Dst: make_unique<TreeNode>
      Src: /src/pdns/pdns/iputils.hh:1389,1
    - Dst: right::get
      Src: /src/pdns/pdns/iputils.hh:1390,1
    - Dst: get
      Src: /src/pdns/pdns/iputils.hh:1392,1
    - Dst: NetmaskException
      Src: /src/pdns/pdns/iputils.hh:1404,1
    - Dst: getBits
      Src: /src/pdns/pdns/iputils.hh:1409,1
    - Dst: getBit
      Src: /src/pdns/pdns/iputils.hh:1410,1
    - Dst: TreeNode*::make_right
      Src: /src/pdns/pdns/iputils.hh:1420,1
    - Dst: TreeNode*::right::get
      Src: /src/pdns/pdns/iputils.hh:1423,1
    - Dst: TreeNode*::make_left
      Src: /src/pdns/pdns/iputils.hh:1428,1
    - Dst: TreeNode*::left::get
      Src: /src/pdns/pdns/iputils.hh:1431,1
    - Dst: TreeNode*::node::first::getBits
      Src: /src/pdns/pdns/iputils.hh:1435,1
    - Dst: TreeNode*::make_right
      Src: /src/pdns/pdns/iputils.hh:1442,1
    - Dst: TreeNode*::make_left
      Src: /src/pdns/pdns/iputils.hh:1445,1
    - Dst: TreeNode*::node::first::getBit
      Src: /src/pdns/pdns/iputils.hh:1449,1
    - Dst: TreeNode*::fork
      Src: /src/pdns/pdns/iputils.hh:1456,1
    - Dst: TreeNode*::node::first::getBits
      Src: /src/pdns/pdns/iputils.hh:1461,1
    - Dst: getBits
      Src: /src/pdns/pdns/iputils.hh:1461,1
    - Dst: TreeNode*::split
      Src: /src/pdns/pdns/iputils.hh:1464,1
    - Dst: getBits
      Src: /src/pdns/pdns/iputils.hh:1464,1
    - Dst: std::logic_error
      Src: /src/pdns/pdns/iputils.hh:1485,1
    CyclomaticComplexity: 31
    EdgeCount: 31
    ICount: 89
    argCount: 1
    argNames:
    - ' key'
    argTypes:
    - key_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1491
      start: 1366
    functionDepth: 0
    functionLinenumber: 1366
    functionLinenumberEnd: 1491
    functionName: '& insert(const key_type& key)'
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 0
    functionsReached:
    - getBit
    - TreeNode*::make_right
    - TreeNode*::left::get
    - isIPv6
    - NetmaskException
    - TreeNode*::fork
    - getBits
    - make_unique<TreeNode>
    - right::get
    - get
    - left::get
    - TreeNode*::make_left
    - TreeNode*::split
    - isIPv4
    - TreeNode*::node::first::getBit
    - std::logic_error
    - TreeNode*::right::get
    - TreeNode*::node::first::getBits
    linkageType: ''
    returnType: node_type
    signature: node_type & insert(const key_type& key)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: insert
      Src: /src/pdns/pdns/iputils.hh:1496,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' mask'
    - ' value'
    argTypes:
    - key_type
    - value_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1497
      start: 1494
    functionDepth: 1
    functionLinenumber: 1494
    functionLinenumberEnd: 1497
    functionName: NetmaskTree::insert_or_assign
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 0
    functionsReached:
    - insert
    linkageType: ''
    returnType: void
    signature: void insert_or_assign(const key_type& mask, const value_type& value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: insert
      Src: /src/pdns/pdns/iputils.hh:1501,1
    - Dst: key_type
      Src: /src/pdns/pdns/iputils.hh:1501,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' mask'
    - ' value'
    argTypes:
    - string
    - value_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1502
      start: 1499
    functionDepth: 1
    functionLinenumber: 1499
    functionLinenumberEnd: 1502
    functionName: NetmaskTree::insert_or_assign
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 0
    functionsReached:
    - key_type
    - insert
    linkageType: ''
    returnType: void
    signature: void insert_or_assign(const string& mask, const value_type& value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: NetmaskTree::lookup
      Src: /src/pdns/pdns/iputils.hh:1507,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - ' key'
    argTypes:
    - key_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1509
      start: 1505
    functionDepth: 0
    functionLinenumber: 1505
    functionLinenumberEnd: 1509
    functionName: NetmaskTree::has_key
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 0
    functionsReached:
    - NetmaskTree::lookup
    linkageType: ''
    returnType: bool
    signature: bool has_key(const key_type& key) const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: NetmaskTree::empty
      Src: /src/pdns/pdns/iputils.hh:1514,1
    - Dst: getBits
      Src: /src/pdns/pdns/iputils.hh:1517,1
    - Dst: NetmaskTree::lookupImpl
      Src: /src/pdns/pdns/iputils.hh:1518,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ' value'
    argTypes:
    - key_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1519
      start: 1512
    functionDepth: 0
    functionLinenumber: 1512
    functionLinenumberEnd: 1519
    functionName: NetmaskTree::lookup
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 6
    functionsReached:
    - getBits
    - NetmaskTree::lookupImpl
    - NetmaskTree::empty
    linkageType: ''
    returnType: node_type
    signature: node_type * lookup(const key_type& value) const
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: NetmaskTree::empty
      Src: /src/pdns/pdns/iputils.hh:1524,1
    - Dst: getBits
      Src: /src/pdns/pdns/iputils.hh:1527,1
    - Dst: NetmaskTree::lookupImpl
      Src: /src/pdns/pdns/iputils.hh:1532,1
    - Dst: key_type
      Src: /src/pdns/pdns/iputils.hh:1532,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - ' value'
    argTypes:
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1533
      start: 1522
    functionDepth: 0
    functionLinenumber: 1522
    functionLinenumberEnd: 1533
    functionName: NetmaskTree::lookup
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 6
    functionsReached:
    - getBits
    - NetmaskTree::lookupImpl
    - NetmaskTree::empty
    - key_type
    linkageType: ''
    returnType: node_type
    signature: node_type * lookup(const ComboAddress& value, int max_bits = 128) const
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: isIPv4
      Src: /src/pdns/pdns/iputils.hh:1540,1
    - Dst: left::get
      Src: /src/pdns/pdns/iputils.hh:1541,1
    - Dst: isIPv6
      Src: /src/pdns/pdns/iputils.hh:1543,1
    - Dst: right::get
      Src: /src/pdns/pdns/iputils.hh:1544,1
    - Dst: NetmaskException
      Src: /src/pdns/pdns/iputils.hh:1547,1
    - Dst: getBits
      Src: /src/pdns/pdns/iputils.hh:1554,1
    - Dst: getBit
      Src: /src/pdns/pdns/iputils.hh:1555,1
    - Dst: TreeNode*::right::get
      Src: /src/pdns/pdns/iputils.hh:1559,1
    - Dst: TreeNode*::left::get
      Src: /src/pdns/pdns/iputils.hh:1562,1
    - Dst: TreeNode*::node::first::getBits
      Src: /src/pdns/pdns/iputils.hh:1566,1
    - Dst: getBits
      Src: /src/pdns/pdns/iputils.hh:1568,1
    - Dst: TreeNode*::node::first::getBits
      Src: /src/pdns/pdns/iputils.hh:1568,1
    - Dst: TreeNode*::node::first::getBit
      Src: /src/pdns/pdns/iputils.hh:1573,1
    - Dst: std::logic_error
      Src: /src/pdns/pdns/iputils.hh:1583,1
    - Dst: value_type
      Src: /src/pdns/pdns/iputils.hh:1588,1
    - Dst: traverse_lnr_assigned
      Src: /src/pdns/pdns/iputils.hh:1591,1
    - Dst: NetmaskTree::cleanup_tree
      Src: /src/pdns/pdns/iputils.hh:1593,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 44
    argCount: 1
    argNames:
    - ' key'
    argTypes:
    - key_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1595
      start: 1536
    functionDepth: 0
    functionLinenumber: 1536
    functionLinenumberEnd: 1595
    functionName: NetmaskTree::erase
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 2
    functionsReached:
    - getBit
    - TreeNode*::left::get
    - isIPv6
    - NetmaskException
    - value_type
    - getBits
    - NetmaskTree::cleanup_tree
    - right::get
    - left::get
    - traverse_lnr_assigned
    - isIPv4
    - TreeNode*::node::first::getBit
    - std::logic_error
    - TreeNode*::right::get
    - TreeNode*::node::first::getBits
    linkageType: ''
    returnType: void
    signature: void erase(const key_type& key)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: NetmaskTree::erase
      Src: /src/pdns/pdns/iputils.hh:1599,1
    - Dst: key_type
      Src: /src/pdns/pdns/iputils.hh:1599,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' key'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1600
      start: 1597
    functionDepth: 0
    functionLinenumber: 1597
    functionLinenumberEnd: 1600
    functionName: NetmaskTree::erase
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 3
    functionsReached:
    - NetmaskTree::erase
    - key_type
    linkageType: ''
    returnType: void
    signature: void erase(const string& key)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1606
      start: 1603
    functionDepth: 0
    functionLinenumber: 1603
    functionLinenumberEnd: 1606
    functionName: NetmaskTree::empty
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool empty() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1612
      start: 1609
    functionDepth: 0
    functionLinenumber: 1609
    functionLinenumberEnd: 1612
    functionName: NetmaskTree::size
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: size_type
    signature: size_type size() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: NetmaskTree::lookup
      Src: /src/pdns/pdns/iputils.hh:1617,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' value'
    argTypes:
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1618
      start: 1615
    functionDepth: 0
    functionLinenumber: 1615
    functionLinenumberEnd: 1618
    functionName: NetmaskTree::match
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 0
    functionsReached:
    - NetmaskTree::lookup
    linkageType: ''
    returnType: bool
    signature: bool match(const ComboAddress& value) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: NetmaskTree::match
      Src: /src/pdns/pdns/iputils.hh:1622,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/iputils.hh:1622,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' value'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1623
      start: 1620
    functionDepth: 0
    functionLinenumber: 1620
    functionLinenumberEnd: 1623
    functionName: NetmaskTree::match
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 1
    functionsReached:
    - NetmaskTree::match
    - ComboAddress
    linkageType: ''
    returnType: bool
    signature: bool match(const std::string& value) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: make_unique<TreeNode>
      Src: /src/pdns/pdns/iputils.hh:1628,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1631
      start: 1626
    functionDepth: 0
    functionLinenumber: 1626
    functionLinenumberEnd: 1631
    functionName: NetmaskTree::clear
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 1
    functionsReached:
    - make_unique<TreeNode>
    linkageType: ''
    returnType: void
    signature: void clear()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: NetmaskTree::swap
      Src: /src/pdns/pdns/iputils.hh:1636,1
    - Dst: NetmaskTree::swap
      Src: /src/pdns/pdns/iputils.hh:1637,1
    - Dst: NetmaskTree::swap
      Src: /src/pdns/pdns/iputils.hh:1638,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - NetmaskTree
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1639
      start: 1634
    functionDepth: 0
    functionLinenumber: 1634
    functionLinenumberEnd: 1639
    functionName: NetmaskTree::swap
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 2
    functionsReached:
    - NetmaskTree::swap
    linkageType: ''
    returnType: void
    signature: void swap(NetmaskTree& rhs) noexcept
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: isIPv4
      Src: /src/pdns/pdns/iputils.hh:1646,1
    - Dst: left::get
      Src: /src/pdns/pdns/iputils.hh:1647,1
    - Dst: isIPv6
      Src: /src/pdns/pdns/iputils.hh:1649,1
    - Dst: right::get
      Src: /src/pdns/pdns/iputils.hh:1650,1
    - Dst: NetmaskException
      Src: /src/pdns/pdns/iputils.hh:1653,1
    - Dst: getBit
      Src: /src/pdns/pdns/iputils.hh:1663,1
    - Dst: TreeNode*::node::first::getBits
      Src: /src/pdns/pdns/iputils.hh:1667,1
    - Dst: TreeNode*::right::get
      Src: /src/pdns/pdns/iputils.hh:1674,1
    - Dst: TreeNode*::left::get
      Src: /src/pdns/pdns/iputils.hh:1680,1
    - Dst: TreeNode*::node::first::getBits
      Src: /src/pdns/pdns/iputils.hh:1684,1
    - Dst: TreeNode*::node::first::getBit
      Src: /src/pdns/pdns/iputils.hh:1688,1
    - Dst: TreeNode*::node::first::getBits
      Src: /src/pdns/pdns/iputils.hh:1696,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 41
    argCount: 2
    argNames:
    - ' value'
    - max_bits
    argTypes:
    - key_type
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1701
      start: 1642
    functionDepth: 0
    functionLinenumber: 1642
    functionLinenumberEnd: 1701
    functionName: NetmaskTree::lookupImpl
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 2
    functionsReached:
    - getBit
    - TreeNode*::left::get
    - isIPv6
    - NetmaskException
    - right::get
    - left::get
    - isIPv4
    - TreeNode*::node::first::getBit
    - TreeNode*::right::get
    - TreeNode*::node::first::getBits
    linkageType: ''
    returnType: node_type
    signature: node_type * lookupImpl(const key_type& value, uint8_t max_bits) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1714
      start: 1714
    functionDepth: 0
    functionLinenumber: 1714
    functionLinenumberEnd: 1714
    functionName: NetmaskGroup::NetmaskGroup
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void NetmaskGroup() noexcept
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: NetmaskGroup::lookup
      Src: /src/pdns/pdns/iputils.hh:1720,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - address
    argTypes:
    - ComboAddress*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1725
      start: 1718
    functionDepth: 0
    functionLinenumber: 1718
    functionLinenumberEnd: 1725
    functionName: NetmaskGroup::match
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 1
    functionsReached:
    - NetmaskGroup::lookup
    linkageType: ''
    returnType: bool
    signature: bool match(const ComboAddress* address) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: NetmaskGroup::match
      Src: /src/pdns/pdns/iputils.hh:1729,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' address'
    argTypes:
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1730
      start: 1727
    functionDepth: 0
    functionLinenumber: 1727
    functionLinenumberEnd: 1730
    functionName: NetmaskGroup::match
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 2
    functionsReached:
    - NetmaskGroup::match
    linkageType: ''
    returnType: bool
    signature: bool match(const ComboAddress& address) const
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: NetmaskGroup::lookup
      Src: /src/pdns/pdns/iputils.hh:1734,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - address
    - nmp
    argTypes:
    - ComboAddress*
    - Netmask*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1742
      start: 1732
    functionDepth: 0
    functionLinenumber: 1732
    functionLinenumberEnd: 1742
    functionName: NetmaskGroup::lookup
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 2
    functionsReached:
    - NetmaskGroup::lookup
    linkageType: ''
    returnType: bool
    signature: bool lookup(const ComboAddress* address, Netmask* nmp) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: NetmaskGroup::lookup
      Src: /src/pdns/pdns/iputils.hh:1746,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' address'
    - nmp
    argTypes:
    - ComboAddress
    - Netmask*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1747
      start: 1744
    functionDepth: 0
    functionLinenumber: 1744
    functionLinenumberEnd: 1747
    functionName: NetmaskGroup::lookup
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 3
    functionsReached:
    - NetmaskGroup::lookup
    linkageType: ''
    returnType: bool
    signature: bool lookup(const ComboAddress& address, Netmask* nmp) const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: NetmaskGroup::empty
      Src: /src/pdns/pdns/iputils.hh:1752,1
    - Dst: NetmaskGroup::addMask
      Src: /src/pdns/pdns/iputils.hh:1753,1
    - Dst: Netmask
      Src: /src/pdns/pdns/iputils.hh:1753,1
    - Dst: substr
      Src: /src/pdns/pdns/iputils.hh:1753,1
    - Dst: NetmaskGroup::addMask
      Src: /src/pdns/pdns/iputils.hh:1756,1
    - Dst: Netmask
      Src: /src/pdns/pdns/iputils.hh:1756,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - ' address'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1758
      start: 1750
    functionDepth: 0
    functionLinenumber: 1750
    functionLinenumberEnd: 1758
    functionName: NetmaskGroup::addMask
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 2
    functionsReached:
    - Netmask
    - substr
    - NetmaskGroup::addMask
    - NetmaskGroup::empty
    linkageType: ''
    returnType: void
    signature: void addMask(const string& address, bool positive = true)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: insert
      Src: /src/pdns/pdns/iputils.hh:1763,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' netmask'
    argTypes:
    - Netmask
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1764
      start: 1761
    functionDepth: 1
    functionLinenumber: 1761
    functionLinenumberEnd: 1764
    functionName: NetmaskGroup::addMask
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 2
    functionsReached:
    - insert
    linkageType: ''
    returnType: void
    signature: void addMask(const Netmask& netmask, bool positive = true)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: NetmaskGroup::addMask
      Src: /src/pdns/pdns/iputils.hh:1769,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - ' group'
    - positive
    argTypes:
    - NetmaskGroup
    - std::optional<bool>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1771
      start: 1766
    functionDepth: 0
    functionLinenumber: 1766
    functionLinenumberEnd: 1771
    functionName: NetmaskGroup::addMasks
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 0
    functionsReached:
    - NetmaskGroup::addMask
    linkageType: ''
    returnType: void
    signature: void addMasks(const NetmaskGroup& group, std::optional<bool> positive)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: erase
      Src: /src/pdns/pdns/iputils.hh:1776,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' netmask'
    argTypes:
    - Netmask
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1777
      start: 1774
    functionDepth: 0
    functionLinenumber: 1774
    functionLinenumberEnd: 1777
    functionName: NetmaskGroup::deleteMask
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 0
    functionsReached:
    - erase
    linkageType: ''
    returnType: void
    signature: void deleteMask(const Netmask& netmask)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: NetmaskGroup::deleteMask
      Src: /src/pdns/pdns/iputils.hh:1782,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - ' group'
    argTypes:
    - NetmaskGroup
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1784
      start: 1779
    functionDepth: 0
    functionLinenumber: 1779
    functionLinenumberEnd: 1784
    functionName: NetmaskGroup::deleteMasks
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 0
    functionsReached:
    - NetmaskGroup::deleteMask
    linkageType: ''
    returnType: void
    signature: void deleteMasks(const NetmaskGroup& group)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: NetmaskGroup::empty
      Src: /src/pdns/pdns/iputils.hh:1788,1
    - Dst: NetmaskGroup::deleteMask
      Src: /src/pdns/pdns/iputils.hh:1789,1
    - Dst: Netmask
      Src: /src/pdns/pdns/iputils.hh:1789,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ' address'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1791
      start: 1786
    functionDepth: 0
    functionLinenumber: 1786
    functionLinenumberEnd: 1791
    functionName: NetmaskGroup::deleteMask
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 2
    functionsReached:
    - NetmaskGroup::deleteMask
    - Netmask
    - NetmaskGroup::empty
    linkageType: ''
    returnType: void
    signature: void deleteMask(const std::string& address)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: NetmaskGroup::clear
      Src: /src/pdns/pdns/iputils.hh:1795,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1796
      start: 1793
    functionDepth: 0
    functionLinenumber: 1793
    functionLinenumberEnd: 1796
    functionName: NetmaskGroup::clear
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 1
    functionsReached:
    - NetmaskGroup::clear
    linkageType: ''
    returnType: void
    signature: void clear()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: NetmaskGroup::empty
      Src: /src/pdns/pdns/iputils.hh:1800,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1801
      start: 1798
    functionDepth: 0
    functionLinenumber: 1798
    functionLinenumberEnd: 1801
    functionName: NetmaskGroup::empty
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 4
    functionsReached:
    - NetmaskGroup::empty
    linkageType: ''
    returnType: bool
    signature: bool empty() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: NetmaskGroup::size
      Src: /src/pdns/pdns/iputils.hh:1805,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1806
      start: 1803
    functionDepth: 0
    functionLinenumber: 1803
    functionLinenumberEnd: 1806
    functionName: NetmaskGroup::size
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 2
    functionsReached:
    - NetmaskGroup::size
    linkageType: ''
    returnType: size_t
    signature: size_t size() const
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: begin
      Src: /src/pdns/pdns/iputils.hh:1811,1
    - Dst: end
      Src: /src/pdns/pdns/iputils.hh:1811,1
    - Dst: begin
      Src: /src/pdns/pdns/iputils.hh:1812,1
    - Dst: auto::first::toString
      Src: /src/pdns/pdns/iputils.hh:1818,1
    - Dst: ostringstream::str
      Src: /src/pdns/pdns/iputils.hh:1820,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1821
      start: 1808
    functionDepth: 0
    functionLinenumber: 1808
    functionLinenumberEnd: 1821
    functionName: NetmaskGroup::toString
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 1
    functionsReached:
    - ostringstream::str
    - end
    - auto::first::toString
    - begin
    linkageType: ''
    returnType: string
    signature: string toString() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::vector::reserve
      Src: /src/pdns/pdns/iputils.hh:1826,1
    - Dst: NetmaskGroup::size
      Src: /src/pdns/pdns/iputils.hh:1826,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/iputils.hh:1828,1
    - Dst: first::toString
      Src: /src/pdns/pdns/iputils.hh:1828,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1831
      start: 1823
    functionDepth: 0
    functionLinenumber: 1823
    functionLinenumberEnd: 1831
    functionName: NetmaskGroup::toStringVector
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 0
    functionsReached:
    - std::vector::reserve
    - std::vector::push_back
    - first::toString
    - NetmaskGroup::size
    linkageType: ''
    returnType: std::vector<std::string>
    signature: std::vector<std::string> toStringVector() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: stringtok
      Src: /src/pdns/pdns/iputils.hh:1836,1
    - Dst: NetmaskGroup::addMask
      Src: /src/pdns/pdns/iputils.hh:1839,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ' ips'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1841
      start: 1833
    functionDepth: 0
    functionLinenumber: 1833
    functionLinenumberEnd: 1841
    functionName: NetmaskGroup::toMasks
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 1
    functionsReached:
    - NetmaskGroup::addMask
    - stringtok
    linkageType: ''
    returnType: void
    signature: void toMasks(const string& ips)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' orig'
    argTypes:
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1850
      start: 1849
    functionDepth: 0
    functionLinenumber: 1849
    functionLinenumberEnd: 1850
    functionName: SComboAddress
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void SComboAddress(const ComboAddress& orig)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ComboAddress::addressOnlyLessThan
      Src: /src/pdns/pdns/iputils.hh:1854,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - SComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1855
      start: 1852
    functionDepth: 0
    functionLinenumber: 1852
    functionLinenumberEnd: 1855
    functionName: operator<(const SComboAddress& rhs) const
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 0
    functionsReached:
    - ComboAddress::addressOnlyLessThan
    linkageType: ''
    returnType: bool
    signature: bool operator<(const SComboAddress& rhs) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1859
      start: 1856
    functionDepth: 0
    functionLinenumber: 1856
    functionLinenumberEnd: 1859
    functionName: operator const ComboAddress&() const
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void operator const ComboAddress&() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: c_str
      Src: /src/pdns/pdns/iputils.hh:1866,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1867
      start: 1865
    functionDepth: 0
    functionLinenumber: 1865
    functionLinenumberEnd: 1867
    functionName: NetworkError::NetworkError
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 0
    functionsReached:
    - c_str
    linkageType: ''
    returnType: void
    signature: void NetworkError(const string& why = "Network Error")
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1870
      start: 1868
    functionDepth: 0
    functionLinenumber: 1868
    functionLinenumberEnd: 1870
    functionName: NetworkError::NetworkError
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void NetworkError(const char* why = "Network Error")
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1881
      start: 1876
    functionDepth: 0
    functionLinenumber: 1876
    functionLinenumberEnd: 1881
    functionName: AddressAndPortRange::AddressAndPortRange
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void AddressAndPortRange()
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: AddressAndPortRange::isIPv4
      Src: /src/pdns/pdns/iputils.hh:1886,1
    - Dst: getPort
      Src: /src/pdns/pdns/iputils.hh:1890,1
    - Dst: static_cast<uint16_t>
      Src: /src/pdns/pdns/iputils.hh:1892,1
    - Dst: AddressAndPortRange::getBits
      Src: /src/pdns/pdns/iputils.hh:1896,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/iputils.hh:1898,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/iputils.hh:1898,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/iputils.hh:1898,1
    - Dst: Netmask
      Src: /src/pdns/pdns/iputils.hh:1900,1
    - Dst: setPort
      Src: /src/pdns/pdns/iputils.hh:1902,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 2
    argNames:
    - address
    - addrMask
    argTypes:
    - ComboAddress
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1903
      start: 1883
    functionDepth: 0
    functionLinenumber: 1883
    functionLinenumberEnd: 1903
    functionName: AddressAndPortRange::AddressAndPortRange
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 0
    functionsReached:
    - Netmask
    - setPort
    - AddressAndPortRange::getBits
    - std::to_string
    - std::runtime_error
    - static_cast<uint16_t>
    - AddressAndPortRange::isIPv4
    - getPort
    linkageType: ''
    returnType: void
    signature: void AddressAndPortRange(ComboAddress address, uint8_t addrMask, uint8_t
      portMask = 0)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: AddressAndPortRange::getBits
      Src: /src/pdns/pdns/iputils.hh:1907,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1908
      start: 1905
    functionDepth: 0
    functionLinenumber: 1905
    functionLinenumberEnd: 1908
    functionName: AddressAndPortRange::getFullBits
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 0
    functionsReached:
    - AddressAndPortRange::getBits
    linkageType: ''
    returnType: uint8_t
    signature: uint8_t getFullBits() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: AddressAndPortRange::getBits
      Src: /src/pdns/pdns/iputils.hh:1912,1
    - Dst: AddressAndPortRange::getBits
      Src: /src/pdns/pdns/iputils.hh:1916,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1917
      start: 1910
    functionDepth: 0
    functionLinenumber: 1910
    functionLinenumberEnd: 1917
    functionName: AddressAndPortRange::getBits
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 3
    functionsReached:
    - AddressAndPortRange::getBits
    linkageType: ''
    returnType: uint8_t
    signature: uint8_t getBits() const
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: AddressAndPortRange::getFullBits
      Src: /src/pdns/pdns/iputils.hh:1925,1
    - Dst: AddressAndPortRange::getFullBits
      Src: /src/pdns/pdns/iputils.hh:1929,1
    - Dst: getPort
      Src: /src/pdns/pdns/iputils.hh:1934,1
    - Dst: AddressAndPortRange::getBit
      Src: /src/pdns/pdns/iputils.hh:1940,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - index
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1941
      start: 1923
    functionDepth: 0
    functionLinenumber: 1923
    functionLinenumberEnd: 1941
    functionName: AddressAndPortRange::getBit
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 1
    functionsReached:
    - AddressAndPortRange::getBit
    - AddressAndPortRange::getFullBits
    - getPort
    linkageType: ''
    returnType: bool
    signature: bool getBit(int index) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: AddressAndPortRange::isIPv4
      Src: /src/pdns/pdns/iputils.hh:1945,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1946
      start: 1943
    functionDepth: 0
    functionLinenumber: 1943
    functionLinenumberEnd: 1946
    functionName: AddressAndPortRange::isIPv4
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 2
    functionsReached:
    - AddressAndPortRange::isIPv4
    linkageType: ''
    returnType: bool
    signature: bool isIPv4() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: AddressAndPortRange::isIPv6
      Src: /src/pdns/pdns/iputils.hh:1950,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1951
      start: 1948
    functionDepth: 0
    functionLinenumber: 1948
    functionLinenumberEnd: 1951
    functionName: AddressAndPortRange::isIPv6
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 1
    functionsReached:
    - AddressAndPortRange::isIPv6
    linkageType: ''
    returnType: bool
    signature: bool isIPv6() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1956
      start: 1953
    functionDepth: 0
    functionLinenumber: 1953
    functionLinenumberEnd: 1956
    functionName: AddressAndPortRange::getNormalized
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: AddressAndPortRange
    signature: AddressAndPortRange getNormalized() const
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/iputils.hh:1964,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - bits
    argTypes:
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1968
      start: 1958
    functionDepth: 0
    functionLinenumber: 1958
    functionLinenumberEnd: 1968
    functionName: AddressAndPortRange::getSuper
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 0
    functionsReached:
    - static_cast<uint8_t>
    linkageType: ''
    returnType: AddressAndPortRange
    signature: AddressAndPortRange getSuper(uint8_t bits) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1973
      start: 1970
    functionDepth: 0
    functionLinenumber: 1970
    functionLinenumberEnd: 1973
    functionName: '& getNetwork() const'
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: ComboAddress
    signature: ComboAddress & getNetwork() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: AddressAndPortRange::getBits
      Src: /src/pdns/pdns/iputils.hh:1977,1
    - Dst: toStringNoInterface
      Src: /src/pdns/pdns/iputils.hh:1978,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/iputils.hh:1978,1
    - Dst: toStringNoInterface
      Src: /src/pdns/pdns/iputils.hh:1980,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/iputils.hh:1980,1
    - Dst: getPort
      Src: /src/pdns/pdns/iputils.hh:1980,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/iputils.hh:1980,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1981
      start: 1975
    functionDepth: 0
    functionLinenumber: 1975
    functionLinenumberEnd: 1981
    functionName: AddressAndPortRange::toString
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 0
    functionsReached:
    - toStringNoInterface
    - AddressAndPortRange::getBits
    - std::to_string
    - getPort
    linkageType: ''
    returnType: string
    signature: string toString() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1986
      start: 1983
    functionDepth: 0
    functionLinenumber: 1983
    functionLinenumberEnd: 1986
    functionName: AddressAndPortRange::empty
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool empty() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::tie
      Src: /src/pdns/pdns/iputils.hh:1990,1
    - Dst: std::tie
      Src: /src/pdns/pdns/iputils.hh:1990,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - AddressAndPortRange
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1991
      start: 1988
    functionDepth: 0
    functionLinenumber: 1988
    functionLinenumberEnd: 1991
    functionName: operator==(const AddressAndPortRange& rhs) const
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 0
    functionsReached:
    - std::tie
    linkageType: ''
    returnType: bool
    signature: bool operator==(const AddressAndPortRange& rhs) const
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/iputils.hh:1995,1
    - Dst: empty
      Src: /src/pdns/pdns/iputils.hh:1995,1
    - Dst: empty
      Src: /src/pdns/pdns/iputils.hh:1999,1
    - Dst: empty
      Src: /src/pdns/pdns/iputils.hh:1999,1
    - Dst: getPort
      Src: /src/pdns/pdns/iputils.hh:2027,1
    - Dst: d_addr::getPort
      Src: /src/pdns/pdns/iputils.hh:2027,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 26
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - AddressAndPortRange
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2028
      start: 1993
    functionDepth: 0
    functionLinenumber: 1993
    functionLinenumberEnd: 2028
    functionName: operator<(const AddressAndPortRange& rhs) const
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 0
    functionsReached:
    - empty
    - d_addr::getPort
    - getPort
    linkageType: ''
    returnType: bool
    signature: bool operator<(const AddressAndPortRange& rhs) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: rhs
      Src: /src/pdns/pdns/iputils.hh:2032,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - AddressAndPortRange
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2033
      start: 2030
    functionDepth: 0
    functionLinenumber: 2030
    functionLinenumberEnd: 2033
    functionName: operator>(const AddressAndPortRange& rhs) const
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 0
    functionsReached:
    - rhs
    linkageType: ''
    returnType: bool
    signature: bool operator>(const AddressAndPortRange& rhs) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: d_addr::getPort
      Src: /src/pdns/pdns/iputils.hh:2040,1
    - Dst: burtle
      Src: /src/pdns/pdns/iputils.hh:2043,1
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/iputils.hh:2043,1
    - Dst: hashOp
      Src: /src/pdns/pdns/iputils.hh:2043,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' apr'
    argTypes:
    - AddressAndPortRange
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2044
      start: 2037
    functionDepth: 0
    functionLinenumber: 2037
    functionLinenumberEnd: 2044
    functionName: operator()(const AddressAndPortRange& apr) const
    functionSourceFile: /src/pdns/pdns/iputils.hh
    functionUses: 0
    functionsReached:
    - d_addr::getPort
    - reinterpret_cast<const unsigned char*>
    - burtle
    - hashOp
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t operator()(const AddressAndPortRange& apr) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: boost::assign::list_of
      Src: /src/pdns/pdns/test-base32_cc.cc:21,1
    - Dst: case_t
      Src: /src/pdns/pdns/test-base32_cc.cc:22,1
    - Dst: std::string
      Src: /src/pdns/pdns/test-base32_cc.cc:22,1
    - Dst: std::string
      Src: /src/pdns/pdns/test-base32_cc.cc:22,1
    - Dst: case_t
      Src: /src/pdns/pdns/test-base32_cc.cc:23,1
    - Dst: std::string
      Src: /src/pdns/pdns/test-base32_cc.cc:23,1
    - Dst: std::string
      Src: /src/pdns/pdns/test-base32_cc.cc:23,1
    - Dst: case_t
      Src: /src/pdns/pdns/test-base32_cc.cc:24,1
    - Dst: std::string
      Src: /src/pdns/pdns/test-base32_cc.cc:24,1
    - Dst: std::string
      Src: /src/pdns/pdns/test-base32_cc.cc:24,1
    - Dst: case_t
      Src: /src/pdns/pdns/test-base32_cc.cc:25,1
    - Dst: std::string
      Src: /src/pdns/pdns/test-base32_cc.cc:25,1
    - Dst: std::string
      Src: /src/pdns/pdns/test-base32_cc.cc:25,1
    - Dst: case_t
      Src: /src/pdns/pdns/test-base32_cc.cc:26,1
    - Dst: std::string
      Src: /src/pdns/pdns/test-base32_cc.cc:26,1
    - Dst: std::string
      Src: /src/pdns/pdns/test-base32_cc.cc:26,1
    - Dst: case_t
      Src: /src/pdns/pdns/test-base32_cc.cc:27,1
    - Dst: std::string
      Src: /src/pdns/pdns/test-base32_cc.cc:27,1
    - Dst: std::string
      Src: /src/pdns/pdns/test-base32_cc.cc:27,1
    - Dst: case_t
      Src: /src/pdns/pdns/test-base32_cc.cc:28,1
    - Dst: std::string
      Src: /src/pdns/pdns/test-base32_cc.cc:28,1
    - Dst: std::string
      Src: /src/pdns/pdns/test-base32_cc.cc:28,1
    - Dst: toBase32Hex
      Src: /src/pdns/pdns/test-base32_cc.cc:33,1
    - Dst: std::get<0>
      Src: /src/pdns/pdns/test-base32_cc.cc:33,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-base32_cc.cc:34,1
    - Dst: std::get<1>
      Src: /src/pdns/pdns/test-base32_cc.cc:34,1
    - Dst: fromBase32Hex
      Src: /src/pdns/pdns/test-base32_cc.cc:35,1
    - Dst: std::get<1>
      Src: /src/pdns/pdns/test-base32_cc.cc:35,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-base32_cc.cc:36,1
    - Dst: std::get<0>
      Src: /src/pdns/pdns/test-base32_cc.cc:36,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 16
    functionDepth: 0
    functionLinenumber: 16
    functionLinenumberEnd: 38
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-base32_cc.cc
    functionUses: 0
    functionsReached:
    - case_t
    - boost::assign::list_of
    - std::get<0>
    - BOOST_CHECK_EQUAL
    - std::get<1>
    - toBase32Hex
    - std::string
    - fromBase32Hex
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_base32_basic)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: parseRFC1035CharString
      Src: /src/pdns/pdns/fuzz_dnslabeltext_parseRFC1035CharString.cc:35,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - data
    - size
    argTypes:
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 29
    functionDepth: 0
    functionLinenumber: 29
    functionLinenumberEnd: 38
    functionName: LLVMFuzzerTestOneInput
    functionSourceFile: /src/pdns/pdns/fuzz_dnslabeltext_parseRFC1035CharString.cc
    functionUses: 1
    functionsReached:
    - parseRFC1035CharString
    linkageType: ''
    returnType: int
    signature: int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: push_back
      Src: /src/pdns/pdns/test-nameserver_cc.cc:27,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-nameserver_cc.cc:27,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-nameserver_cc.cc:29,1
    - Dst: AddressIsUs
      Src: /src/pdns/pdns/test-nameserver_cc.cc:29,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-nameserver_cc.cc:31,1
    - Dst: AddressIsUs
      Src: /src/pdns/pdns/test-nameserver_cc.cc:31,1
    - Dst: clear
      Src: /src/pdns/pdns/test-nameserver_cc.cc:33,1
    - Dst: push_back
      Src: /src/pdns/pdns/test-nameserver_cc.cc:34,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-nameserver_cc.cc:34,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-nameserver_cc.cc:35,1
    - Dst: AddressIsUs
      Src: /src/pdns/pdns/test-nameserver_cc.cc:35,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-nameserver_cc.cc:37,1
    - Dst: AddressIsUs
      Src: /src/pdns/pdns/test-nameserver_cc.cc:37,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 22
    functionDepth: 1
    functionLinenumber: 22
    functionLinenumberEnd: 38
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-nameserver_cc.cc
    functionUses: 0
    functionsReached:
    - push_back
    - AddressIsUs
    - BOOST_CHECK_EQUAL
    - clear
    - ComboAddress
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_AddressIsUs4)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: clear
      Src: /src/pdns/pdns/test-nameserver_cc.cc:46,1
    - Dst: push_back
      Src: /src/pdns/pdns/test-nameserver_cc.cc:47,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-nameserver_cc.cc:47,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-nameserver_cc.cc:49,1
    - Dst: AddressIsUs
      Src: /src/pdns/pdns/test-nameserver_cc.cc:49,1
    - Dst: getenv
      Src: /src/pdns/pdns/test-nameserver_cc.cc:51,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-nameserver_cc.cc:51,1
    - Dst: AddressIsUs
      Src: /src/pdns/pdns/test-nameserver_cc.cc:51,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-nameserver_cc.cc:52,1
    - Dst: AddressIsUs
      Src: /src/pdns/pdns/test-nameserver_cc.cc:52,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-nameserver_cc.cc:54,1
    - Dst: AddressIsUs
      Src: /src/pdns/pdns/test-nameserver_cc.cc:54,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 40
    functionDepth: 1
    functionLinenumber: 40
    functionLinenumberEnd: 55
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-nameserver_cc.cc
    functionUses: 0
    functionsReached:
    - getenv
    - push_back
    - AddressIsUs
    - BOOST_CHECK_EQUAL
    - clear
    - ComboAddress
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_AddressIsUs6)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' str'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 39
    functionDepth: 0
    functionLinenumber: 39
    functionLinenumberEnd: 41
    functionName: FDMultiplexerException::FDMultiplexerException
    functionSourceFile: /src/pdns/pdns/mplexer.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void FDMultiplexerException(const std::string& str)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 73
    functionDepth: 0
    functionLinenumber: 73
    functionLinenumberEnd: 73
    functionName: ~FDMultiplexer()
    functionSourceFile: /src/pdns/pdns/mplexer.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~FDMultiplexer()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 83
    functionDepth: 0
    functionLinenumber: 83
    functionLinenumberEnd: 83
    functionName: FDMultiplexer::InRun
    functionSourceFile: /src/pdns/pdns/mplexer.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void InRun(const InRun&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 84
    functionDepth: 0
    functionLinenumber: 84
    functionLinenumberEnd: 84
    functionName: FDMultiplexer::InRun
    functionSourceFile: /src/pdns/pdns/mplexer.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void InRun(InRun&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 85
    functionDepth: 0
    functionLinenumber: 85
    functionLinenumberEnd: 85
    functionName: '& operator=(const InRun&)'
    functionSourceFile: /src/pdns/pdns/mplexer.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: InRun
    signature: InRun & operator=(const InRun&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 86
    functionDepth: 0
    functionLinenumber: 86
    functionLinenumberEnd: 86
    functionName: '& operator=(InRun&&)'
    functionSourceFile: /src/pdns/pdns/mplexer.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: InRun
    signature: InRun & operator=(InRun&&)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: FDMultiplexerException
      Src: /src/pdns/pdns/mplexer.hh:91,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - ' ref'
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 87
    functionDepth: 0
    functionLinenumber: 87
    functionLinenumberEnd: 94
    functionName: FDMultiplexer::InRun
    functionSourceFile: /src/pdns/pdns/mplexer.hh
    functionUses: 0
    functionsReached:
    - FDMultiplexerException
    linkageType: ''
    returnType: void
    signature: void InRun(bool& ref)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 95
    functionDepth: 0
    functionLinenumber: 95
    functionLinenumberEnd: 98
    functionName: ~InRun()
    functionSourceFile: /src/pdns/pdns/mplexer.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~InRun()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: funcparam_t
      Src: /src/pdns/pdns/mplexer.hh:114,1
    - Dst: count
      Src: /src/pdns/pdns/mplexer.hh:116,1
    - Dst: FDMultiplexer::alterFD
      Src: /src/pdns/pdns/mplexer.hh:119,1
    - Dst: FDMultiplexer::addFD
      Src: /src/pdns/pdns/mplexer.hh:122,1
    - Dst: FDMultiplexer::accountingAddFD
      Src: /src/pdns/pdns/mplexer.hh:126,1
    - Dst: std::move
      Src: /src/pdns/pdns/mplexer.hh:126,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - fd
    - toDo
    argTypes:
    - int
    - callbackfunc_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 127
      start: 114
    functionDepth: 0
    functionLinenumber: 114
    functionLinenumberEnd: 127
    functionName: FDMultiplexer::addReadFD
    functionSourceFile: /src/pdns/pdns/mplexer.hh
    functionUses: 3
    functionsReached:
    - std::move
    - FDMultiplexer::addFD
    - funcparam_t
    - count
    - FDMultiplexer::alterFD
    - FDMultiplexer::accountingAddFD
    linkageType: ''
    returnType: void
    signature: void addReadFD(int fd, callbackfunc_t toDo, const funcparam_t& parameter
      = funcparam_t(), const struct timeval* ttd = nullptr)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: funcparam_t
      Src: /src/pdns/pdns/mplexer.hh:130,1
    - Dst: count
      Src: /src/pdns/pdns/mplexer.hh:132,1
    - Dst: FDMultiplexer::alterFD
      Src: /src/pdns/pdns/mplexer.hh:135,1
    - Dst: FDMultiplexer::addFD
      Src: /src/pdns/pdns/mplexer.hh:138,1
    - Dst: FDMultiplexer::accountingAddFD
      Src: /src/pdns/pdns/mplexer.hh:142,1
    - Dst: std::move
      Src: /src/pdns/pdns/mplexer.hh:142,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - fd
    - toDo
    argTypes:
    - int
    - callbackfunc_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 143
      start: 130
    functionDepth: 0
    functionLinenumber: 130
    functionLinenumberEnd: 143
    functionName: FDMultiplexer::addWriteFD
    functionSourceFile: /src/pdns/pdns/mplexer.hh
    functionUses: 0
    functionsReached:
    - std::move
    - FDMultiplexer::addFD
    - funcparam_t
    - count
    - FDMultiplexer::alterFD
    - FDMultiplexer::accountingAddFD
    linkageType: ''
    returnType: void
    signature: void addWriteFD(int fd, callbackfunc_t toDo, const funcparam_t& parameter
      = funcparam_t(), const struct timeval* ttd = nullptr)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: find
      Src: /src/pdns/pdns/mplexer.hh:149,1
    - Dst: FDMultiplexer::accountingRemoveFD
      Src: /src/pdns/pdns/mplexer.hh:150,1
    - Dst: end
      Src: /src/pdns/pdns/mplexer.hh:152,1
    - Dst: FDMultiplexer::alterFD
      Src: /src/pdns/pdns/mplexer.hh:153,1
    - Dst: FDMultiplexer::removeFD
      Src: /src/pdns/pdns/mplexer.hh:156,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - fd
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 158
      start: 147
    functionDepth: 0
    functionLinenumber: 147
    functionLinenumberEnd: 158
    functionName: FDMultiplexer::removeReadFD
    functionSourceFile: /src/pdns/pdns/mplexer.hh
    functionUses: 3
    functionsReached:
    - end
    - FDMultiplexer::removeFD
    - FDMultiplexer::accountingRemoveFD
    - FDMultiplexer::alterFD
    - find
    linkageType: ''
    returnType: void
    signature: void removeReadFD(int fd)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: find
      Src: /src/pdns/pdns/mplexer.hh:164,1
    - Dst: FDMultiplexer::accountingRemoveFD
      Src: /src/pdns/pdns/mplexer.hh:165,1
    - Dst: end
      Src: /src/pdns/pdns/mplexer.hh:167,1
    - Dst: FDMultiplexer::alterFD
      Src: /src/pdns/pdns/mplexer.hh:168,1
    - Dst: FDMultiplexer::removeFD
      Src: /src/pdns/pdns/mplexer.hh:171,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - fd
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 173
      start: 162
    functionDepth: 0
    functionLinenumber: 162
    functionLinenumberEnd: 173
    functionName: FDMultiplexer::removeWriteFD
    functionSourceFile: /src/pdns/pdns/mplexer.hh
    functionUses: 0
    functionsReached:
    - end
    - FDMultiplexer::removeFD
    - FDMultiplexer::accountingRemoveFD
    - FDMultiplexer::alterFD
    - find
    linkageType: ''
    returnType: void
    signature: void removeWriteFD(int fd)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: find
      Src: /src/pdns/pdns/mplexer.hh:177,1
    - Dst: end
      Src: /src/pdns/pdns/mplexer.hh:178,1
    - Dst: FDMultiplexerException
      Src: /src/pdns/pdns/mplexer.hh:179,1
    - Dst: replace
      Src: /src/pdns/pdns/mplexer.hh:185,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - fd
    - tv
    - timeout
    argTypes:
    - int
    - struct timeval
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 186
      start: 175
    functionDepth: 0
    functionLinenumber: 175
    functionLinenumberEnd: 186
    functionName: FDMultiplexer::setReadTTD
    functionSourceFile: /src/pdns/pdns/mplexer.hh
    functionUses: 0
    functionsReached:
    - FDMultiplexerException
    - replace
    - end
    - find
    linkageType: ''
    returnType: void
    signature: void setReadTTD(int fd, struct timeval tv, int timeout)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: find
      Src: /src/pdns/pdns/mplexer.hh:190,1
    - Dst: end
      Src: /src/pdns/pdns/mplexer.hh:191,1
    - Dst: FDMultiplexerException
      Src: /src/pdns/pdns/mplexer.hh:192,1
    - Dst: replace
      Src: /src/pdns/pdns/mplexer.hh:198,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - fd
    - tv
    - timeout
    argTypes:
    - int
    - struct timeval
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 199
      start: 188
    functionDepth: 0
    functionLinenumber: 188
    functionLinenumberEnd: 199
    functionName: FDMultiplexer::setWriteTTD
    functionSourceFile: /src/pdns/pdns/mplexer.hh
    functionUses: 0
    functionsReached:
    - FDMultiplexerException
    - replace
    - end
    - find
    linkageType: ''
    returnType: void
    signature: void setWriteTTD(int fd, struct timeval tv, int timeout)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: funcparam_t
      Src: /src/pdns/pdns/mplexer.hh:201,1
    - Dst: FDMultiplexer::accountingRemoveFD
      Src: /src/pdns/pdns/mplexer.hh:203,1
    - Dst: FDMultiplexer::alterFD
      Src: /src/pdns/pdns/mplexer.hh:204,1
    - Dst: FDMultiplexer::accountingAddFD
      Src: /src/pdns/pdns/mplexer.hh:205,1
    - Dst: std::move
      Src: /src/pdns/pdns/mplexer.hh:205,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - fd
    - toDo
    argTypes:
    - int
    - callbackfunc_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 206
      start: 201
    functionDepth: 0
    functionLinenumber: 201
    functionLinenumberEnd: 206
    functionName: FDMultiplexer::alterFDToRead
    functionSourceFile: /src/pdns/pdns/mplexer.hh
    functionUses: 0
    functionsReached:
    - std::move
    - funcparam_t
    - FDMultiplexer::accountingRemoveFD
    - FDMultiplexer::alterFD
    - FDMultiplexer::accountingAddFD
    linkageType: ''
    returnType: void
    signature: void alterFDToRead(int fd, callbackfunc_t toDo, const funcparam_t&
      parameter = funcparam_t(), const struct timeval* ttd = nullptr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: funcparam_t
      Src: /src/pdns/pdns/mplexer.hh:208,1
    - Dst: FDMultiplexer::accountingRemoveFD
      Src: /src/pdns/pdns/mplexer.hh:210,1
    - Dst: FDMultiplexer::alterFD
      Src: /src/pdns/pdns/mplexer.hh:211,1
    - Dst: FDMultiplexer::accountingAddFD
      Src: /src/pdns/pdns/mplexer.hh:212,1
    - Dst: std::move
      Src: /src/pdns/pdns/mplexer.hh:212,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - fd
    - toDo
    argTypes:
    - int
    - callbackfunc_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 213
      start: 208
    functionDepth: 0
    functionLinenumber: 208
    functionLinenumberEnd: 213
    functionName: FDMultiplexer::alterFDToWrite
    functionSourceFile: /src/pdns/pdns/mplexer.hh
    functionUses: 0
    functionsReached:
    - std::move
    - funcparam_t
    - FDMultiplexer::accountingRemoveFD
    - FDMultiplexer::alterFD
    - FDMultiplexer::accountingAddFD
    linkageType: ''
    returnType: void
    signature: void alterFDToWrite(int fd, callbackfunc_t toDo, const funcparam_t&
      parameter = funcparam_t(), const struct timeval* ttd = nullptr)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::tie
      Src: /src/pdns/pdns/mplexer.hh:218,1
    - Dst: get
      Src: /src/pdns/pdns/mplexer.hh:219,1
    - Dst: get
      Src: /src/pdns/pdns/mplexer.hh:219,1
    - Dst: std::tie
      Src: /src/pdns/pdns/mplexer.hh:222,1
    - Dst: std::vector::emplace_back
      Src: /src/pdns/pdns/mplexer.hh:225,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 7
    argCount: 1
    argNames:
    - ' tv'
    argTypes:
    - struct timeval
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 229
      start: 215
    functionDepth: 0
    functionLinenumber: 215
    functionLinenumberEnd: 229
    functionName: FDMultiplexer::getTimeouts
    functionSourceFile: /src/pdns/pdns/mplexer.hh
    functionUses: 0
    functionsReached:
    - std::vector::emplace_back
    - std::tie
    - get
    linkageType: ''
    returnType: std::vector<std::pair<int, funcparam_t>>
    signature: std::vector<std::pair<int, funcparam_t>> getTimeouts(const struct timeval&
      tv, bool writes = false)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 238
      start: 234
    functionDepth: 0
    functionLinenumber: 234
    functionLinenumberEnd: 238
    functionName: '& getMultiplexerMap()'
    functionSourceFile: /src/pdns/pdns/mplexer.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: FDMultiplexermap_t
    signature: FDMultiplexermap_t & getMultiplexerMap()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/mplexer.hh:244,1
    - Dst: size
      Src: /src/pdns/pdns/mplexer.hh:244,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - writeFDs
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 245
      start: 242
    functionDepth: 0
    functionLinenumber: 242
    functionLinenumberEnd: 245
    functionName: FDMultiplexer::getWatchedFDCount
    functionSourceFile: /src/pdns/pdns/mplexer.hh
    functionUses: 0
    functionsReached:
    - size
    linkageType: ''
    returnType: size_t
    signature: size_t getWatchedFDCount(bool writeFDs) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: watcher
      Src: /src/pdns/pdns/mplexer.hh:250,1
    - Dst: watcher
      Src: /src/pdns/pdns/mplexer.hh:253,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 255
      start: 247
    functionDepth: 0
    functionLinenumber: 247
    functionLinenumberEnd: 255
    functionName: FDMultiplexer::runForAllWatchedFDs
    functionSourceFile: /src/pdns/pdns/mplexer.hh
    functionUses: 0
    functionsReached:
    - watcher
    linkageType: ''
    returnType: void
    signature: void runForAllWatchedFDs(void (*watcher)(bool isRead, int fd, const
      funcparam_t&, struct timeval))
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: std::tie
      Src: /src/pdns/pdns/mplexer.hh:281,1
    - Dst: std::tie
      Src: /src/pdns/pdns/mplexer.hh:281,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 11
    argCount: 2
    argNames:
    - ' lhs'
    - ' rhs'
    argTypes:
    - struct timeval
    - struct timeval
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 282
      start: 267
    functionDepth: 0
    functionLinenumber: 267
    functionLinenumberEnd: 282
    functionName: operator()(const struct timeval& lhs, const struct timeval& rhs)
      const
    functionSourceFile: /src/pdns/pdns/mplexer.hh
    functionUses: 0
    functionsReached:
    - std::tie
    linkageType: ''
    returnType: bool
    signature: bool operator()(const struct timeval& lhs, const struct timeval& rhs)
      const
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/mplexer.hh:302,1
    - Dst: memset
      Src: /src/pdns/pdns/mplexer.hh:304,1
    - Dst: insert
      Src: /src/pdns/pdns/mplexer.hh:309,1
    - Dst: std::move
      Src: /src/pdns/pdns/mplexer.hh:309,1
    - Dst: FDMultiplexerException
      Src: /src/pdns/pdns/mplexer.hh:311,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/mplexer.hh:311,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 5
    argNames:
    - ' cbmap'
    - fd
    - toDo
    - ' parameter'
    - ttd
    argTypes:
    - callbackmap_t
    - int
    - callbackfunc_t
    - funcparam_t
    - struct timeval*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 313
      start: 298
    functionDepth: 1
    functionLinenumber: 298
    functionLinenumberEnd: 313
    functionName: FDMultiplexer::accountingAddFD
    functionSourceFile: /src/pdns/pdns/mplexer.hh
    functionUses: 4
    functionsReached:
    - std::move
    - std::to_string
    - memset
    - insert
    - FDMultiplexerException
    linkageType: ''
    returnType: void
    signature: void accountingAddFD(callbackmap_t& cbmap, int fd, callbackfunc_t toDo,
      const funcparam_t& parameter, const struct timeval* ttd)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: erase
      Src: /src/pdns/pdns/mplexer.hh:317,1
    - Dst: FDMultiplexerException
      Src: /src/pdns/pdns/mplexer.hh:318,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/mplexer.hh:318,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 2
    argNames:
    - ' cbmap'
    - fd
    argTypes:
    - callbackmap_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 320
      start: 315
    functionDepth: 0
    functionLinenumber: 315
    functionLinenumberEnd: 320
    functionName: FDMultiplexer::accountingRemoveFD
    functionSourceFile: /src/pdns/pdns/mplexer.hh
    functionUses: 4
    functionsReached:
    - FDMultiplexerException
    - erase
    - std::to_string
    linkageType: ''
    returnType: void
    signature: void accountingRemoveFD(callbackmap_t& cbmap, int fd)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: removeFD
      Src: /src/pdns/pdns/mplexer.hh:329,1
    - Dst: addFD
      Src: /src/pdns/pdns/mplexer.hh:330,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - fd
    - from
    - to
    argTypes:
    - int
    - EventKind
    - EventKind
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 331
      start: 326
    functionDepth: 0
    functionLinenumber: 326
    functionLinenumberEnd: 331
    functionName: FDMultiplexer::alterFD
    functionSourceFile: /src/pdns/pdns/mplexer.hh
    functionUses: 6
    functionsReached:
    - addFD
    - removeFD
    linkageType: ''
    returnType: void
    signature: void alterFD(int fd, EventKind from, EventKind to)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 48
    functionDepth: 0
    functionLinenumber: 48
    functionLinenumberEnd: 51
    functionName: DLQuitPlease
    functionSourceFile: /src/pdns/pdns/dynhandler.cc
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool DLQuitPlease()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SLOG
      Src: /src/pdns/pdns/dynhandler.cc:59,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/dynhandler.cc:60,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - ' parts'
    - slog
    argTypes:
    - vector<string>
    - Logr::log_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 53
    functionDepth: 0
    functionLinenumber: 53
    functionLinenumberEnd: 63
    functionName: DLQuitHandler
    functionSourceFile: /src/pdns/pdns/dynhandler.cc
    functionUses: 0
    functionsReached:
    - SLOG
    - Logr::log_t::info
    linkageType: ''
    returnType: string
    signature: string DLQuitHandler(const vector<string>& parts, Utility::pid_t /*
      ppid */, Logr::log_t slog)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: exit
      Src: /src/pdns/pdns/dynhandler.cc:67,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 65
    functionDepth: 0
    functionLinenumber: 65
    functionLinenumberEnd: 68
    functionName: dokill
    functionSourceFile: /src/pdns/pdns/dynhandler.cc
    functionUses: 0
    functionsReached:
    - exit
    linkageType: ''
    returnType: void
    signature: void dokill(int)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dynhandler.cc:72,1
    - Dst: size
      Src: /src/pdns/pdns/dynhandler.cc:73,1
    - Dst: arg
      Src: /src/pdns/pdns/dynhandler.cc:74,1
    - Dst: arg
      Src: /src/pdns/pdns/dynhandler.cc:78,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - ' parts'
    argTypes:
    - vector<string>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 70
    functionDepth: 0
    functionLinenumber: 70
    functionLinenumberEnd: 79
    functionName: DLCurrentConfigHandler
    functionSourceFile: /src/pdns/pdns/dynhandler.cc
    functionUses: 0
    functionsReached:
    - arg
    - size
    linkageType: ''
    returnType: string
    signature: string DLCurrentConfigHandler(const vector<string>& parts, Utility::pid_t
      /* ppid */, Logr::log_t /* slog */)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: signal
      Src: /src/pdns/pdns/dynhandler.cc:83,1
    - Dst: alarm
      Src: /src/pdns/pdns/dynhandler.cc:84,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 81
    functionDepth: 0
    functionLinenumber: 81
    functionLinenumberEnd: 86
    functionName: DLRQuitHandler
    functionSourceFile: /src/pdns/pdns/dynhandler.cc
    functionUses: 0
    functionsReached:
    - alarm
    - signal
    linkageType: ''
    returnType: string
    signature: string DLRQuitHandler(const vector<string>& /* parts */, Utility::pid_t
      /* ppid */, Logr::log_t /* slog */)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 88
    functionDepth: 0
    functionLinenumber: 88
    functionLinenumberEnd: 91
    functionName: DLPingHandler
    functionSourceFile: /src/pdns/pdns/dynhandler.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: string
    signature: string DLPingHandler(const vector<string>& /* parts */, Utility::pid_t
      /* ppid */, Logr::log_t /* slog */)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: StatBag::StatBag
      Src: /src/pdns/pdns/dynhandler.cc:96,1
    - Dst: size
      Src: /src/pdns/pdns/dynhandler.cc:98,1
    - Dst: StatBag::directory
      Src: /src/pdns/pdns/dynhandler.cc:100,1
    - Dst: length
      Src: /src/pdns/pdns/dynhandler.cc:101,1
    - Dst: length
      Src: /src/pdns/pdns/dynhandler.cc:101,1
    - Dst: StatBag::directory
      Src: /src/pdns/pdns/dynhandler.cc:102,1
    - Dst: substr
      Src: /src/pdns/pdns/dynhandler.cc:102,1
    - Dst: length
      Src: /src/pdns/pdns/dynhandler.cc:102,1
    - Dst: StatBag::getValueStr
      Src: /src/pdns/pdns/dynhandler.cc:104,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 1
    argNames:
    - ' parts'
    argTypes:
    - vector<string>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 112
      start: 93
    functionDepth: 1
    functionLinenumber: 93
    functionLinenumberEnd: 112
    functionName: DLShowHandler
    functionSourceFile: /src/pdns/pdns/dynhandler.cc
    functionUses: 0
    functionsReached:
    - length
    - StatBag::getValueStr
    - StatBag::StatBag
    - size
    - StatBag::directory
    - substr
    linkageType: ''
    returnType: string
    signature: string DLShowHandler(const vector<string>& parts, Utility::pid_t /*
      ppid */, Logr::log_t /* slog */)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - str
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 114
    functionDepth: 0
    functionLinenumber: 114
    functionLinenumberEnd: 117
    functionName: setStatus
    functionSourceFile: /src/pdns/pdns/dynhandler.cc
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setStatus(const string &str)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ostringstream::str
      Src: /src/pdns/pdns/dynhandler.cc:123,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ppid
    argTypes:
    - Utility::pid_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 124
      start: 119
    functionDepth: 0
    functionLinenumber: 119
    functionLinenumberEnd: 124
    functionName: DLStatusHandler
    functionSourceFile: /src/pdns/pdns/dynhandler.cc
    functionUses: 0
    functionsReached:
    - ostringstream::str
    linkageType: ''
    returnType: string
    signature: string DLStatusHandler(const vector<string>& /* parts */, Utility::pid_t
      ppid, Logr::log_t /* slog */)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: humanDuration
      Src: /src/pdns/pdns/dynhandler.cc:129,1
    - Dst: time
      Src: /src/pdns/pdns/dynhandler.cc:129,1
    - Dst: ostringstream::str
      Src: /src/pdns/pdns/dynhandler.cc:130,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 131
      start: 126
    functionDepth: 0
    functionLinenumber: 126
    functionLinenumberEnd: 131
    functionName: DLUptimeHandler
    functionSourceFile: /src/pdns/pdns/dynhandler.cc
    functionUses: 0
    functionsReached:
    - time
    - ostringstream::str
    - humanDuration
    linkageType: ''
    returnType: string
    signature: string DLUptimeHandler(const vector<string>& /* parts */, Utility::pid_t
      /* ppid */, Logr::log_t /* slog */)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dynhandler.cc:139,1
    - Dst: begin
      Src: /src/pdns/pdns/dynhandler.cc:140,1
    - Dst: end
      Src: /src/pdns/pdns/dynhandler.cc:140,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dynhandler.cc:141,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/dynhandler.cc:142,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dynhandler.cc:142,1
    - Dst: purgeAuthCaches
      Src: /src/pdns/pdns/dynhandler.cc:143,1
    - Dst: boost::ends_with
      Src: /src/pdns/pdns/dynhandler.cc:144,1
    - Dst: DNSSECKeeper::clearCaches
      Src: /src/pdns/pdns/dynhandler.cc:146,1
    - Dst: ZoneName
      Src: /src/pdns/pdns/dynhandler.cc:146,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dynhandler.cc:155,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/dynhandler.cc:156,1
    - Dst: purgeAuthCaches
      Src: /src/pdns/pdns/dynhandler.cc:157,1
    - Dst: DNSSECKeeper::clearAllCaches
      Src: /src/pdns/pdns/dynhandler.cc:162,1
    - Dst: ostringstream::str
      Src: /src/pdns/pdns/dynhandler.cc:166,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 23
    argCount: 2
    argNames:
    - ' parts'
    - slog
    argTypes:
    - vector<string>
    - Logr::log_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 167
      start: 133
    functionDepth: 1
    functionLinenumber: 133
    functionLinenumberEnd: 167
    functionName: DLPurgeHandler
    functionSourceFile: /src/pdns/pdns/dynhandler.cc
    functionUses: 0
    functionsReached:
    - SLOG
    - Logr::log_t::info
    - Logging::Loggable
    - end
    - DNSSECKeeper::clearCaches
    - size
    - purgeAuthCaches
    - DNSSECKeeper::clearAllCaches
    - ostringstream::str
    - begin
    - ZoneName
    - boost::ends_with
    linkageType: ''
    returnType: string
    signature: string DLPurgeHandler(const vector<string>& parts, Utility::pid_t /*
      ppid */, Logr::log_t slog)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: AuthPacketCache::AuthPacketCache
      Src: /src/pdns/pdns/dynhandler.cc:171,1
    - Dst: AuthQueryCache::AuthQueryCache
      Src: /src/pdns/pdns/dynhandler.cc:172,1
    - Dst: AuthQueryCache::getCounts
      Src: /src/pdns/pdns/dynhandler.cc:173,1
    - Dst: AuthPacketCache::size
      Src: /src/pdns/pdns/dynhandler.cc:174,1
    - Dst: map::begin
      Src: /src/pdns/pdns/dynhandler.cc:177,1
    - Dst: map::end
      Src: /src/pdns/pdns/dynhandler.cc:177,1
    - Dst: ostringstream::str
      Src: /src/pdns/pdns/dynhandler.cc:195,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 196
      start: 169
    functionDepth: 2
    functionLinenumber: 169
    functionLinenumberEnd: 196
    functionName: DLCCHandler
    functionSourceFile: /src/pdns/pdns/dynhandler.cc
    functionUses: 0
    functionsReached:
    - AuthPacketCache::AuthPacketCache
    - map::end
    - map::begin
    - AuthPacketCache::size
    - AuthQueryCache::getCounts
    - ostringstream::str
    - AuthQueryCache::AuthQueryCache
    linkageType: ''
    returnType: string
    signature: string DLCCHandler(const vector<string>& /* parts */, Utility::pid_t
      /* ppid */, Logr::log_t /* slog */)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getQTypeReport
      Src: /src/pdns/pdns/dynhandler.cc:200,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 201
      start: 198
    functionDepth: 0
    functionLinenumber: 198
    functionLinenumberEnd: 201
    functionName: DLQTypesHandler
    functionSourceFile: /src/pdns/pdns/dynhandler.cc
    functionUses: 0
    functionsReached:
    - getQTypeReport
    linkageType: ''
    returnType: string
    signature: string DLQTypesHandler(const vector<string>& /* parts */, Utility::pid_t
      /* ppid */, Logr::log_t /* slog */)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getSizeResponseCounts
      Src: /src/pdns/pdns/dynhandler.cc:206,1
    - Dst: str
      Src: /src/pdns/pdns/dynhandler.cc:210,1
    - Dst: ostringstream::str
      Src: /src/pdns/pdns/dynhandler.cc:212,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 213
      start: 203
    functionDepth: 0
    functionLinenumber: 203
    functionLinenumberEnd: 213
    functionName: DLRSizesHandler
    functionSourceFile: /src/pdns/pdns/dynhandler.cc
    functionUses: 0
    functionsReached:
    - getSizeResponseCounts
    - ostringstream::str
    - str
    linkageType: ''
    returnType: string
    signature: string DLRSizesHandler(const vector<string>& /* parts */, Utility::pid_t
      /* ppid */, Logr::log_t /* slog */)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: StatBag::StatBag
      Src: /src/pdns/pdns/dynhandler.cc:217,1
    - Dst: StatBag::getRing
      Src: /src/pdns/pdns/dynhandler.cc:219,1
    - Dst: str
      Src: /src/pdns/pdns/dynhandler.cc:223,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 226
      start: 215
    functionDepth: 1
    functionLinenumber: 215
    functionLinenumberEnd: 226
    functionName: DLRemotesHandler
    functionSourceFile: /src/pdns/pdns/dynhandler.cc
    functionUses: 0
    functionsReached:
    - str
    - StatBag::StatBag
    - StatBag::getRing
    linkageType: ''
    returnType: string
    signature: string DLRemotesHandler(const vector<string>& /* parts */, Utility::pid_t
      /* ppid */, Logr::log_t /* slog */)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dynhandler.cc:233,1
    - Dst: arg
      Src: /src/pdns/pdns/dynhandler.cc:241,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dynhandler.cc:242,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/dynhandler.cc:243,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dynhandler.cc:243,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dynhandler.cc:243,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 2
    argNames:
    - ' parts'
    - slog
    argTypes:
    - vector<string>
    - Logr::log_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 249
      start: 228
    functionDepth: 0
    functionLinenumber: 228
    functionLinenumberEnd: 249
    functionName: DLSettingsHandler
    functionSourceFile: /src/pdns/pdns/dynhandler.cc
    functionUses: 0
    functionsReached:
    - SLOG
    - Logr::log_t::info
    - Logging::Loggable
    - size
    - arg
    linkageType: ''
    returnType: string
    signature: string DLSettingsHandler(const vector<string>& parts, Utility::pid_t
      /* ppid */, Logr::log_t slog)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 254
      start: 251
    functionDepth: 0
    functionLinenumber: 251
    functionLinenumberEnd: 254
    functionName: DLVersionHandler
    functionSourceFile: /src/pdns/pdns/dynhandler.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: string
    signature: string DLVersionHandler(const vector<string>& /* parts */, Utility::pid_t
      /* ppid */, Logr::log_t /* slog */)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: CommunicatorClass::CommunicatorClass
      Src: /src/pdns/pdns/dynhandler.cc:258,1
    - Dst: size
      Src: /src/pdns/pdns/dynhandler.cc:260,1
    - Dst: size
      Src: /src/pdns/pdns/dynhandler.cc:260,1
    - Dst: ZoneName::ZoneName
      Src: /src/pdns/pdns/dynhandler.cc:263,1
    - Dst: ZoneName
      Src: /src/pdns/pdns/dynhandler.cc:265,1
    - Dst: size
      Src: /src/pdns/pdns/dynhandler.cc:272,1
    - Dst: UeberBackend::UeberBackend
      Src: /src/pdns/pdns/dynhandler.cc:282,1
    - Dst: UeberBackend::getDomainInfo
      Src: /src/pdns/pdns/dynhandler.cc:283,1
    - Dst: ZoneName::toString
      Src: /src/pdns/pdns/dynhandler.cc:284,1
    - Dst: DomainInfo::primaries::clear
      Src: /src/pdns/pdns/dynhandler.cc:288,1
    - Dst: DomainInfo::primaries::push_back
      Src: /src/pdns/pdns/dynhandler.cc:289,1
    - Dst: DomainInfo::isSecondaryType
      Src: /src/pdns/pdns/dynhandler.cc:292,1
    - Dst: DomainInfo::primaries::empty
      Src: /src/pdns/pdns/dynhandler.cc:292,1
    - Dst: ZoneName::toString
      Src: /src/pdns/pdns/dynhandler.cc:293,1
    - Dst: shuffle
      Src: /src/pdns/pdns/dynhandler.cc:295,1
    - Dst: DomainInfo::primaries::begin
      Src: /src/pdns/pdns/dynhandler.cc:295,1
    - Dst: DomainInfo::primaries::end
      Src: /src/pdns/pdns/dynhandler.cc:295,1
    - Dst: pdns::dns_random_engine
      Src: /src/pdns/pdns/dynhandler.cc:295,1
    - Dst: DomainInfo::primaries::front
      Src: /src/pdns/pdns/dynhandler.cc:296,1
    - Dst: CommunicatorClass::addSuckRequest
      Src: /src/pdns/pdns/dynhandler.cc:297,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dynhandler.cc:298,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/dynhandler.cc:299,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dynhandler.cc:299,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dynhandler.cc:299,1
    - Dst: ZoneName::toLogString
      Src: /src/pdns/pdns/dynhandler.cc:300,1
    - Dst: toLogString
      Src: /src/pdns/pdns/dynhandler.cc:300,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 29
    argCount: 2
    argNames:
    - ' parts'
    - slog
    argTypes:
    - vector<string>
    - Logr::log_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 301
      start: 256
    functionDepth: 1
    functionLinenumber: 256
    functionLinenumberEnd: 301
    functionName: DLNotifyRetrieveHandler
    functionSourceFile: /src/pdns/pdns/dynhandler.cc
    functionUses: 0
    functionsReached:
    - toLogString
    - DomainInfo::isSecondaryType
    - DomainInfo::primaries::push_back
    - UeberBackend::getDomainInfo
    - CommunicatorClass::addSuckRequest
    - SLOG
    - Logr::log_t::info
    - Logging::Loggable
    - DomainInfo::primaries::clear
    - UeberBackend::UeberBackend
    - size
    - shuffle
    - ZoneName::toLogString
    - pdns::dns_random_engine
    - ZoneName::toString
    - CommunicatorClass::CommunicatorClass
    - DomainInfo::primaries::empty
    - DomainInfo::primaries::end
    - ZoneName::ZoneName
    - DomainInfo::primaries::front
    - DomainInfo::primaries::begin
    - ZoneName
    linkageType: ''
    returnType: string
    signature: string DLNotifyRetrieveHandler(const vector<string>& parts, Utility::pid_t
      /* ppid */, Logr::log_t slog)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: CommunicatorClass::CommunicatorClass
      Src: /src/pdns/pdns/dynhandler.cc:305,1
    - Dst: size
      Src: /src/pdns/pdns/dynhandler.cc:307,1
    - Dst: arg
      Src: /src/pdns/pdns/dynhandler.cc:309,1
    - Dst: arg
      Src: /src/pdns/pdns/dynhandler.cc:309,1
    - Dst: arg
      Src: /src/pdns/pdns/dynhandler.cc:309,1
    - Dst: ZoneName::ZoneName
      Src: /src/pdns/pdns/dynhandler.cc:312,1
    - Dst: ZoneName
      Src: /src/pdns/pdns/dynhandler.cc:314,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dynhandler.cc:326,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/dynhandler.cc:327,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dynhandler.cc:327,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dynhandler.cc:327,1
    - Dst: CommunicatorClass::notify
      Src: /src/pdns/pdns/dynhandler.cc:328,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 2
    argNames:
    - ' parts'
    - slog
    argTypes:
    - vector<string>
    - Logr::log_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 330
      start: 303
    functionDepth: 1
    functionLinenumber: 303
    functionLinenumberEnd: 330
    functionName: DLNotifyHostHandler
    functionSourceFile: /src/pdns/pdns/dynhandler.cc
    functionUses: 0
    functionsReached:
    - SLOG
    - Logr::log_t::info
    - CommunicatorClass::CommunicatorClass
    - Logging::Loggable
    - CommunicatorClass::notify
    - ZoneName::ZoneName
    - size
    - ZoneName
    - arg
    linkageType: ''
    returnType: string
    signature: string DLNotifyHostHandler(const vector<string>& parts, Utility::pid_t
      /* ppid */, Logr::log_t slog)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: CommunicatorClass::CommunicatorClass
      Src: /src/pdns/pdns/dynhandler.cc:334,1
    - Dst: UeberBackend::UeberBackend
      Src: /src/pdns/pdns/dynhandler.cc:335,1
    - Dst: size
      Src: /src/pdns/pdns/dynhandler.cc:336,1
    - Dst: arg
      Src: /src/pdns/pdns/dynhandler.cc:338,1
    - Dst: arg
      Src: /src/pdns/pdns/dynhandler.cc:338,1
    - Dst: arg
      Src: /src/pdns/pdns/dynhandler.cc:338,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dynhandler.cc:340,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/dynhandler.cc:341,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dynhandler.cc:341,1
    - Dst: UeberBackend::getAllDomains
      Src: /src/pdns/pdns/dynhandler.cc:345,1
    - Dst: CommunicatorClass::notifyDomain
      Src: /src/pdns/pdns/dynhandler.cc:352,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dynhandler.cc:358,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dynhandler.cc:358,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dynhandler.cc:359,1
    - Dst: ZoneName::ZoneName
      Src: /src/pdns/pdns/dynhandler.cc:361,1
    - Dst: ZoneName
      Src: /src/pdns/pdns/dynhandler.cc:363,1
    - Dst: CommunicatorClass::notifyDomain
      Src: /src/pdns/pdns/dynhandler.cc:367,1
    - Dst: ZoneName::toLogString
      Src: /src/pdns/pdns/dynhandler.cc:368,1
    - Dst: ZoneName::toLogString
      Src: /src/pdns/pdns/dynhandler.cc:370,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 28
    argCount: 2
    argNames:
    - ' parts'
    - slog
    argTypes:
    - vector<string>
    - Logr::log_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 372
      start: 332
    functionDepth: 1
    functionLinenumber: 332
    functionLinenumberEnd: 372
    functionName: DLNotifyHandler
    functionSourceFile: /src/pdns/pdns/dynhandler.cc
    functionUses: 0
    functionsReached:
    - SLOG
    - UeberBackend::getAllDomains
    - std::to_string
    - Logr::log_t::info
    - CommunicatorClass::CommunicatorClass
    - Logging::Loggable
    - CommunicatorClass::notifyDomain
    - ZoneName::ZoneName
    - size
    - UeberBackend::UeberBackend
    - ZoneName::toLogString
    - ZoneName
    - arg
    linkageType: ''
    returnType: string
    signature: string DLNotifyHandler(const vector<string>& parts, Utility::pid_t
      /* ppid */, Logr::log_t slog)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: UeberBackend::UeberBackend
      Src: /src/pdns/pdns/dynhandler.cc:376,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dynhandler.cc:378,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/dynhandler.cc:379,1
    - Dst: UeberBackend::rediscover
      Src: /src/pdns/pdns/dynhandler.cc:381,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - slog
    argTypes:
    - Logr::log_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 388
      start: 374
    functionDepth: 1
    functionLinenumber: 374
    functionLinenumberEnd: 388
    functionName: DLRediscoverHandler
    functionSourceFile: /src/pdns/pdns/dynhandler.cc
    functionUses: 0
    functionsReached:
    - UeberBackend::rediscover
    - SLOG
    - Logr::log_t::info
    - UeberBackend::UeberBackend
    linkageType: ''
    returnType: string
    signature: string DLRediscoverHandler(const vector<string>& /* parts */, Utility::pid_t
      /* ppid */, Logr::log_t slog)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: UeberBackend::UeberBackend
      Src: /src/pdns/pdns/dynhandler.cc:392,1
    - Dst: UeberBackend::reload
      Src: /src/pdns/pdns/dynhandler.cc:393,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dynhandler.cc:394,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/dynhandler.cc:395,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - slog
    argTypes:
    - Logr::log_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 397
      start: 390
    functionDepth: 1
    functionLinenumber: 390
    functionLinenumberEnd: 397
    functionName: DLReloadHandler
    functionSourceFile: /src/pdns/pdns/dynhandler.cc
    functionUses: 0
    functionsReached:
    - UeberBackend::reload
    - SLOG
    - Logr::log_t::info
    - UeberBackend::UeberBackend
    linkageType: ''
    returnType: string
    signature: string DLReloadHandler(const vector<string>& /* parts */, Utility::pid_t
      /* ppid */, Logr::log_t slog)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: UeberBackend::UeberBackend
      Src: /src/pdns/pdns/dynhandler.cc:401,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dynhandler.cc:402,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/dynhandler.cc:403,1
    - Dst: UeberBackend::getAllDomains
      Src: /src/pdns/pdns/dynhandler.cc:405,1
    - Dst: size
      Src: /src/pdns/pdns/dynhandler.cc:408,1
    - Dst: stringToKind
      Src: /src/pdns/pdns/dynhandler.cc:409,1
    - Dst: at
      Src: /src/pdns/pdns/dynhandler.cc:409,1
    - Dst: zone::toString
      Src: /src/pdns/pdns/dynhandler.cc:419,1
    - Dst: getKindString
      Src: /src/pdns/pdns/dynhandler.cc:424,1
    - Dst: ostringstream::str
      Src: /src/pdns/pdns/dynhandler.cc:426,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 2
    argNames:
    - ' parts'
    - slog
    argTypes:
    - vector<string>
    - Logr::log_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 427
      start: 399
    functionDepth: 1
    functionLinenumber: 399
    functionLinenumberEnd: 427
    functionName: DLListZones
    functionSourceFile: /src/pdns/pdns/dynhandler.cc
    functionUses: 0
    functionsReached:
    - SLOG
    - UeberBackend::getAllDomains
    - stringToKind
    - Logr::log_t::info
    - zone::toString
    - size
    - UeberBackend::UeberBackend
    - getKindString
    - ostringstream::str
    - at
    linkageType: ''
    returnType: string
    signature: string DLListZones(const vector<string>& parts, Utility::pid_t /* ppid
      */, Logr::log_t slog)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: UeberBackend::UeberBackend
      Src: /src/pdns/pdns/dynhandler.cc:431,1
    - Dst: UeberBackend::flush
      Src: /src/pdns/pdns/dynhandler.cc:432,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dynhandler.cc:433,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/dynhandler.cc:434,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - slog
    argTypes:
    - Logr::log_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 436
      start: 429
    functionDepth: 1
    functionLinenumber: 429
    functionLinenumberEnd: 436
    functionName: DLFlushHandler
    functionSourceFile: /src/pdns/pdns/dynhandler.cc
    functionUses: 0
    functionsReached:
    - SLOG
    - Logr::log_t::info
    - UeberBackend::flush
    - UeberBackend::UeberBackend
    linkageType: ''
    returnType: string
    signature: string DLFlushHandler(const vector<string>& /*parts*/, Utility::pid_t
      /*ppid*/, Logr::log_t slog)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dynhandler.cc:447,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dynhandler.cc:448,1
    - Dst: size
      Src: /src/pdns/pdns/dynhandler.cc:448,1
    - Dst: PKCS11ModuleSlotLogin
      Src: /src/pdns/pdns/dynhandler.cc:451,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - ' parts'
    - slog
    argTypes:
    - vector<string>
    - Logr::log_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 457
      start: 442
    functionDepth: 5
    functionLinenumber: 442
    functionLinenumberEnd: 457
    functionName: DLTokenLogin
    functionSourceFile: /src/pdns/pdns/dynhandler.cc
    functionUses: 0
    functionsReached:
    - PKCS11ModuleSlotLogin
    - std::to_string
    - size
    linkageType: ''
    returnType: string
    signature: string DLTokenLogin([[maybe_unused]] const vector<string>& parts, [[maybe_unused]]
      Utility::pid_t /* ppid */, [[maybe_unused]] Logr::log_t slog)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getSuckRequests
      Src: /src/pdns/pdns/dynhandler.cc:462,1
    - Dst: first::toString
      Src: /src/pdns/pdns/dynhandler.cc:463,1
    - Dst: second::toString
      Src: /src/pdns/pdns/dynhandler.cc:463,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 466
      start: 459
    functionDepth: 0
    functionLinenumber: 459
    functionLinenumberEnd: 466
    functionName: DLSuckRequests
    functionSourceFile: /src/pdns/pdns/dynhandler.cc
    functionUses: 0
    functionsReached:
    - second::toString
    - getSuckRequests
    - first::toString
    linkageType: ''
    returnType: string
    signature: string DLSuckRequests(const vector<string>& /* parts */, Utility::pid_t
      /* ppid */, Logr::log_t /* slog */)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: localtime_r
      Src: /src/pdns/pdns/dnsgram.cc:46,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - then
    - tm
    argTypes:
    - uint32_t*
    - struct tm*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 42
    functionDepth: 0
    functionLinenumber: 42
    functionLinenumberEnd: 47
    functionName: pdns_localtime_r
    functionSourceFile: /src/pdns/pdns/dnsgram.cc
    functionUses: 0
    functionsReached:
    - localtime_r
    linkageType: ''
    returnType: struct tm
    signature: struct tm * pdns_localtime_r(const uint32_t* then, struct tm* tm)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pdns_localtime_r
      Src: /src/pdns/pdns/dnsgram.cc:59,1
    - Dst: strftime
      Src: /src/pdns/pdns/dnsgram.cc:60,1
    - Dst: pdns_localtime_r
      Src: /src/pdns/pdns/dnsgram.cc:65,1
    - Dst: strftime
      Src: /src/pdns/pdns/dnsgram.cc:66,1
    - Dst: pdns_localtime_r
      Src: /src/pdns/pdns/dnsgram.cc:70,1
    - Dst: strftime
      Src: /src/pdns/pdns/dnsgram.cc:71,1
    - Dst: pdns_localtime_r
      Src: /src/pdns/pdns/dnsgram.cc:78,1
    - Dst: strftime
      Src: /src/pdns/pdns/dnsgram.cc:79,1
    - Dst: pdns_localtime_r
      Src: /src/pdns/pdns/dnsgram.cc:84,1
    - Dst: strftime
      Src: /src/pdns/pdns/dnsgram.cc:85,1
    - Dst: pdns_localtime_r
      Src: /src/pdns/pdns/dnsgram.cc:89,1
    - Dst: strftime
      Src: /src/pdns/pdns/dnsgram.cc:90,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 23
    argCount: 1
    argNames:
    - ' tv'
    argTypes:
    - struct pdns_timeval
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 52
    functionDepth: 1
    functionLinenumber: 52
    functionLinenumberEnd: 101
    functionName: makeReport
    functionSourceFile: /src/pdns/pdns/dnsgram.cc
    functionUses: 0
    functionsReached:
    - strftime
    - pdns_localtime_r
    linkageType: ''
    returnType: void
    signature: void makeReport(const struct pdns_timeval& tv)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 103
    functionDepth: 0
    functionLinenumber: 103
    functionLinenumberEnd: 105
    functionName: usage
    functionSourceFile: /src/pdns/pdns/dnsgram.cc
    functionUses: 98
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void usage()
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: usage
      Src: /src/pdns/pdns/dnsgram.cc:112,1
    - Dst: usage
      Src: /src/pdns/pdns/dnsgram.cc:118,1
    - Dst: reportAllTypes
      Src: /src/pdns/pdns/dnsgram.cc:128,1
    - Dst: PcapPacketReader::getUDPPacket
      Src: /src/pdns/pdns/dnsgram.cc:155,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsgram.cc:156,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsgram.cc:156,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsgram.cc:157,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsgram.cc:157,1
    - Dst: pair
      Src: /src/pdns/pdns/dnsgram.cc:171,1
    - Dst: queries_t::emplace
      Src: /src/pdns/pdns/dnsgram.cc:172,1
    - Dst: emplace
      Src: /src/pdns/pdns/dnsgram.cc:178,1
    - Dst: pair
      Src: /src/pdns/pdns/dnsgram.cc:183,1
    - Dst: queries_t::emplace
      Src: /src/pdns/pdns/dnsgram.cc:184,1
    - Dst: emplace
      Src: /src/pdns/pdns/dnsgram.cc:188,1
    - Dst: makeReport
      Src: /src/pdns/pdns/dnsgram.cc:193,1
    - Dst: what
      Src: /src/pdns/pdns/dnsgram.cc:203,1
    - Dst: set_difference
      Src: /src/pdns/pdns/dnsgram.cc:227,1
    - Dst: queries_t::begin
      Src: /src/pdns/pdns/dnsgram.cc:227,1
    - Dst: queries_t::end
      Src: /src/pdns/pdns/dnsgram.cc:227,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsgram.cc:227,1
    - Dst: end
      Src: /src/pdns/pdns/dnsgram.cc:227,1
    - Dst: back_inserter
      Src: /src/pdns/pdns/dnsgram.cc:227,1
    - Dst: queries_t::size
      Src: /src/pdns/pdns/dnsgram.cc:228,1
    - Dst: size
      Src: /src/pdns/pdns/dnsgram.cc:228,1
    - Dst: diff_t::size
      Src: /src/pdns/pdns/dnsgram.cc:228,1
    - Dst: diff_t::begin
      Src: /src/pdns/pdns/dnsgram.cc:234,1
    - Dst: diff_t::end
      Src: /src/pdns/pdns/dnsgram.cc:234,1
    - Dst: DNSRecordContent::NumberToType
      Src: /src/pdns/pdns/dnsgram.cc:235,1
    - Dst: pair
      Src: /src/pdns/pdns/dnsgram.cc:235,1
    - Dst: diff_t::clear
      Src: /src/pdns/pdns/dnsgram.cc:238,1
    - Dst: set_difference
      Src: /src/pdns/pdns/dnsgram.cc:240,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsgram.cc:240,1
    - Dst: end
      Src: /src/pdns/pdns/dnsgram.cc:240,1
    - Dst: queries_t::begin
      Src: /src/pdns/pdns/dnsgram.cc:240,1
    - Dst: queries_t::end
      Src: /src/pdns/pdns/dnsgram.cc:240,1
    - Dst: back_inserter
      Src: /src/pdns/pdns/dnsgram.cc:240,1
    - Dst: diff_t::size
      Src: /src/pdns/pdns/dnsgram.cc:241,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsgram.cc:246,1
    - Dst: end
      Src: /src/pdns/pdns/dnsgram.cc:246,1
    - Dst: DNSRecordContent::NumberToType
      Src: /src/pdns/pdns/dnsgram.cc:247,1
    - Dst: pair
      Src: /src/pdns/pdns/dnsgram.cc:247,1
    - Dst: what
      Src: /src/pdns/pdns/dnsgram.cc:253,1
    CyclomaticComplexity: 30
    EdgeCount: 30
    ICount: 91
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 254
      start: 107
    functionDepth: 2
    functionLinenumber: 107
    functionLinenumberEnd: 254
    functionName: main
    functionSourceFile: /src/pdns/pdns/dnsgram.cc
    functionUses: 17
    functionsReached:
    - diff_t::clear
    - PcapPacketReader::getUDPPacket
    - ntohs
    - queries_t::end
    - reportAllTypes
    - queries_t::size
    - size
    - usage
    - DNSRecordContent::NumberToType
    - begin
    - back_inserter
    - diff_t::end
    - makeReport
    - queries_t::emplace
    - queries_t::begin
    - pair
    - what
    - end
    - set_difference
    - diff_t::size
    - diff_t::begin
    - emplace
    linkageType: ''
    returnType: int
    signature: int main(int argc, char** argv)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: reportAllTypes
      Src: /src/pdns/pdns/fuzz_zoneparsertng.cc:35,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 36
      start: 33
    functionDepth: 0
    functionLinenumber: 33
    functionLinenumberEnd: 36
    functionName: init
    functionSourceFile: /src/pdns/pdns/fuzz_zoneparsertng.cc
    functionUses: 23
    functionsReached:
    - reportAllTypes
    linkageType: ''
    returnType: void
    signature: void init()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: init
      Src: /src/pdns/pdns/fuzz_zoneparsertng.cc:45,1
    - Dst: NetmaskTree::TreeNode::split
      Src: /src/pdns/pdns/fuzz_zoneparsertng.cc:52,1
    - Dst: boost::is_any_of
      Src: /src/pdns/pdns/fuzz_zoneparsertng.cc:52,1
    - Dst: ZoneParserTNG::setMaxGenerateSteps
      Src: /src/pdns/pdns/fuzz_zoneparsertng.cc:56,1
    - Dst: ZoneParserTNG::setMaxIncludes
      Src: /src/pdns/pdns/fuzz_zoneparsertng.cc:57,1
    - Dst: ZoneParserTNG::get
      Src: /src/pdns/pdns/fuzz_zoneparsertng.cc:59,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 2
    argNames:
    - data
    - size
    argTypes:
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 40
    functionDepth: 0
    functionLinenumber: 40
    functionLinenumberEnd: 68
    functionName: LLVMFuzzerTestOneInput
    functionSourceFile: /src/pdns/pdns/fuzz_zoneparsertng.cc
    functionUses: 1
    functionsReached:
    - ZoneParserTNG::setMaxIncludes
    - NetmaskTree::TreeNode::split
    - ZoneParserTNG::setMaxGenerateSteps
    - init
    - boost::is_any_of
    - ZoneParserTNG::get
    linkageType: ''
    returnType: int
    signature: int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - reason_
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 47
    functionDepth: 0
    functionLinenumber: 47
    functionLinenumberEnd: 47
    functionName: ResolverException::ResolverException
    functionSourceFile: /src/pdns/pdns/resolver.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ResolverException(const string &reason_)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::ostringstream::str
      Src: /src/pdns/pdns/zone2ldap.cc:70,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - input
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 60
    functionDepth: 0
    functionLinenumber: 60
    functionLinenumberEnd: 71
    functionName: encode_non_ascii
    functionSourceFile: /src/pdns/pdns/zone2ldap.cc
    functionUses: 0
    functionsReached:
    - std::ostringstream::str
    linkageType: ''
    returnType: std::string
    signature: std::string encode_non_ascii( const std::string &input )
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: DNSName::DNSName
      Src: /src/pdns/pdns/zone2ldap.cc:75,1
    - Dst: DNSName::isPartOf
      Src: /src/pdns/pdns/zone2ldap.cc:77,1
    - Dst: DNSName::makeRelative
      Src: /src/pdns/pdns/zone2ldap.cc:83,1
    - Dst: DNSName::toStringNoDot
      Src: /src/pdns/pdns/zone2ldap.cc:89,1
    - Dst: stripDot
      Src: /src/pdns/pdns/zone2ldap.cc:93,1
    - Dst: std::string::empty
      Src: /src/pdns/pdns/zone2ldap.cc:94,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/zone2ldap.cc:94,1
    - Dst: DNSName::hasLabels
      Src: /src/pdns/pdns/zone2ldap.cc:96,1
    - Dst: DNSName::toStringNoDot
      Src: /src/pdns/pdns/zone2ldap.cc:96,1
    - Dst: toStringNoDot
      Src: /src/pdns/pdns/zone2ldap.cc:97,1
    - Dst: DNSName::hasLabels
      Src: /src/pdns/pdns/zone2ldap.cc:100,1
    - Dst: DNSName::toStringNoDot
      Src: /src/pdns/pdns/zone2ldap.cc:115,1
    - Dst: DNSName::toStringNoDot
      Src: /src/pdns/pdns/zone2ldap.cc:117,1
    - Dst: count
      Src: /src/pdns/pdns/zone2ldap.cc:128,1
    - Dst: count
      Src: /src/pdns/pdns/zone2ldap.cc:128,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 54
    argCount: 5
    argNames:
    - domain_id
    - domain
    - qtype
    - content
    - ttl
    argTypes:
    - unsigned int
    - DNSName
    - string
    - string
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 137
      start: 73
    functionDepth: 0
    functionLinenumber: 73
    functionLinenumberEnd: 137
    functionName: callback_simple
    functionSourceFile: /src/pdns/pdns/zone2ldap.cc
    functionUses: 0
    functionsReached:
    - count
    - DNSName::hasLabels
    - DNSName::toStringNoDot
    - std::string::empty
    - toStringNoDot
    - DNSName::makeRelative
    - DNSName::isPartOf
    - DNSName::DNSName
    - std::string::size
    - stripDot
    linkageType: ''
    returnType: void
    signature: void callback_simple( unsigned int domain_id, const DNSName &domain,
      const string &qtype, const string &content, int ttl )
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: DNSName::DNSName
      Src: /src/pdns/pdns/zone2ldap.cc:145,1
    - Dst: stringtok
      Src: /src/pdns/pdns/zone2ldap.cc:148,1
    - Dst: DNSName::toStringNoDot
      Src: /src/pdns/pdns/zone2ldap.cc:148,1
    - Dst: vector::empty
      Src: /src/pdns/pdns/zone2ldap.cc:149,1
    - Dst: vector::size
      Src: /src/pdns/pdns/zone2ldap.cc:151,1
    - Dst: DNSName::prependRawLabel
      Src: /src/pdns/pdns/zone2ldap.cc:153,1
    - Dst: DNSName::toStringNoDot
      Src: /src/pdns/pdns/zone2ldap.cc:165,1
    - Dst: DNSName::toStringNoDot
      Src: /src/pdns/pdns/zone2ldap.cc:174,1
    - Dst: stripDot
      Src: /src/pdns/pdns/zone2ldap.cc:178,1
    - Dst: std::string::empty
      Src: /src/pdns/pdns/zone2ldap.cc:179,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/zone2ldap.cc:179,1
    - Dst: DNSName::toStringNoDot
      Src: /src/pdns/pdns/zone2ldap.cc:197,1
    - Dst: count
      Src: /src/pdns/pdns/zone2ldap.cc:216,1
    - Dst: count
      Src: /src/pdns/pdns/zone2ldap.cc:216,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 67
    argCount: 5
    argNames:
    - domain_id
    - domain
    - qtype
    - content
    - ttl
    argTypes:
    - unsigned int
    - DNSName
    - string
    - string
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 225
      start: 141
    functionDepth: 0
    functionLinenumber: 141
    functionLinenumberEnd: 225
    functionName: callback_tree
    functionSourceFile: /src/pdns/pdns/zone2ldap.cc
    functionUses: 0
    functionsReached:
    - stringtok
    - std::string::size
    - count
    - DNSName::prependRawLabel
    - DNSName::toStringNoDot
    - vector::empty
    - std::string::empty
    - DNSName::DNSName
    - vector::size
    - stripDot
    linkageType: ''
    returnType: void
    signature: void callback_tree( unsigned int domain_id, const DNSName &domain,
      const string &qtype, const string &content, int ttl )
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: BindParser::BindParser
      Src: /src/pdns/pdns/zone2ldap.cc:231,1
    - Dst: std::ios_base::sync_with_stdio
      Src: /src/pdns/pdns/zone2ldap.cc:237,1
    - Dst: reportAllTypes
      Src: /src/pdns/pdns/zone2ldap.cc:238,1
    - Dst: setCmd
      Src: /src/pdns/pdns/zone2ldap.cc:239,1
    - Dst: setCmd
      Src: /src/pdns/pdns/zone2ldap.cc:240,1
    - Dst: setSwitch
      Src: /src/pdns/pdns/zone2ldap.cc:241,1
    - Dst: setSwitch
      Src: /src/pdns/pdns/zone2ldap.cc:242,1
    - Dst: setSwitch
      Src: /src/pdns/pdns/zone2ldap.cc:243,1
    - Dst: setSwitch
      Src: /src/pdns/pdns/zone2ldap.cc:244,1
    - Dst: set
      Src: /src/pdns/pdns/zone2ldap.cc:245,1
    - Dst: set
      Src: /src/pdns/pdns/zone2ldap.cc:246,1
    - Dst: set
      Src: /src/pdns/pdns/zone2ldap.cc:247,1
    - Dst: set
      Src: /src/pdns/pdns/zone2ldap.cc:248,1
    - Dst: set
      Src: /src/pdns/pdns/zone2ldap.cc:249,1
    - Dst: set
      Src: /src/pdns/pdns/zone2ldap.cc:250,1
    - Dst: set
      Src: /src/pdns/pdns/zone2ldap.cc:251,1
    - Dst: set
      Src: /src/pdns/pdns/zone2ldap.cc:252,1
    - Dst: set
      Src: /src/pdns/pdns/zone2ldap.cc:253,1
    - Dst: parse
      Src: /src/pdns/pdns/zone2ldap.cc:255,1
    - Dst: mustDo
      Src: /src/pdns/pdns/zone2ldap.cc:257,1
    - Dst: exit
      Src: /src/pdns/pdns/zone2ldap.cc:259,1
    - Dst: mustDo
      Src: /src/pdns/pdns/zone2ldap.cc:262,1
    - Dst: helpstring
      Src: /src/pdns/pdns/zone2ldap.cc:265,1
    - Dst: exit
      Src: /src/pdns/pdns/zone2ldap.cc:266,1
    - Dst: helpstring
      Src: /src/pdns/pdns/zone2ldap.cc:272,1
    - Dst: exit
      Src: /src/pdns/pdns/zone2ldap.cc:273,1
    - Dst: mustDo
      Src: /src/pdns/pdns/zone2ldap.cc:277,1
    - Dst: mustDo
      Src: /src/pdns/pdns/zone2ldap.cc:285,1
    - Dst: empty
      Src: /src/pdns/pdns/zone2ldap.cc:287,1
    - Dst: exit
      Src: /src/pdns/pdns/zone2ldap.cc:289,1
    - Dst: empty
      Src: /src/pdns/pdns/zone2ldap.cc:297,1
    - Dst: pdns::checked_stoi_into
      Src: /src/pdns/pdns/zone2ldap.cc:298,1
    - Dst: empty
      Src: /src/pdns/pdns/zone2ldap.cc:302,1
    - Dst: BindParser::setVerbose
      Src: /src/pdns/pdns/zone2ldap.cc:304,1
    - Dst: mustDo
      Src: /src/pdns/pdns/zone2ldap.cc:304,1
    - Dst: BindParser::parse
      Src: /src/pdns/pdns/zone2ldap.cc:305,1
    - Dst: BindParser::getDomains
      Src: /src/pdns/pdns/zone2ldap.cc:307,1
    - Dst: type::empty
      Src: /src/pdns/pdns/zone2ldap.cc:311,1
    - Dst: ZoneName
      Src: /src/pdns/pdns/zone2ldap.cc:317,1
    - Dst: ZoneName
      Src: /src/pdns/pdns/zone2ldap.cc:317,1
    - Dst: BindParser::getDirectory
      Src: /src/pdns/pdns/zone2ldap.cc:321,1
    - Dst: ZoneParserTNG::setMaxGenerateSteps
      Src: /src/pdns/pdns/zone2ldap.cc:322,1
    - Dst: asNum
      Src: /src/pdns/pdns/zone2ldap.cc:322,1
    - Dst: ZoneParserTNG::setMaxIncludes
      Src: /src/pdns/pdns/zone2ldap.cc:323,1
    - Dst: asNum
      Src: /src/pdns/pdns/zone2ldap.cc:323,1
    - Dst: ZoneParserTNG::get
      Src: /src/pdns/pdns/zone2ldap.cc:325,1
    - Dst: callback
      Src: /src/pdns/pdns/zone2ldap.cc:326,1
    - Dst: DNSResourceRecord::qtype::toString
      Src: /src/pdns/pdns/zone2ldap.cc:326,1
    - Dst: encode_non_ascii
      Src: /src/pdns/pdns/zone2ldap.cc:326,1
    - Dst: mustDo
      Src: /src/pdns/pdns/zone2ldap.cc:335,1
    - Dst: empty
      Src: /src/pdns/pdns/zone2ldap.cc:344,1
    - Dst: empty
      Src: /src/pdns/pdns/zone2ldap.cc:344,1
    - Dst: ZoneName
      Src: /src/pdns/pdns/zone2ldap.cc:350,1
    - Dst: ZoneParserTNG::setMaxGenerateSteps
      Src: /src/pdns/pdns/zone2ldap.cc:352,1
    - Dst: asNum
      Src: /src/pdns/pdns/zone2ldap.cc:352,1
    - Dst: ZoneParserTNG::get
      Src: /src/pdns/pdns/zone2ldap.cc:354,1
    - Dst: callback
      Src: /src/pdns/pdns/zone2ldap.cc:355,1
    - Dst: DNSResourceRecord::qtype::toString
      Src: /src/pdns/pdns/zone2ldap.cc:355,1
    - Dst: encode_non_ascii
      Src: /src/pdns/pdns/zone2ldap.cc:355,1
    - Dst: what
      Src: /src/pdns/pdns/zone2ldap.cc:368,1
    CyclomaticComplexity: 27
    EdgeCount: 27
    ICount: 102
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 378
      start: 229
    functionDepth: 1
    functionLinenumber: 229
    functionLinenumberEnd: 378
    functionName: main
    functionSourceFile: /src/pdns/pdns/zone2ldap.cc
    functionUses: 17
    functionsReached:
    - callback
    - BindParser::setVerbose
    - type::empty
    - ZoneParserTNG::setMaxGenerateSteps
    - BindParser::getDomains
    - set
    - std::ios_base::sync_with_stdio
    - asNum
    - BindParser::parse
    - reportAllTypes
    - DNSResourceRecord::qtype::toString
    - helpstring
    - BindParser::getDirectory
    - mustDo
    - empty
    - pdns::checked_stoi_into
    - ZoneParserTNG::setMaxIncludes
    - exit
    - BindParser::BindParser
    - setCmd
    - parse
    - what
    - setSwitch
    - encode_non_ascii
    - ZoneParserTNG::get
    - ZoneName
    linkageType: ''
    returnType: int
    signature: int main( int argc, char* argv[] )
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: DNSPacket::getString
      Src: /src/pdns/pdns/responsestats-auth.cc:11,1
    - Dst: getPointer
      Src: /src/pdns/pdns/responsestats-auth.cc:12,1
    - Dst: getPointer
      Src: /src/pdns/pdns/responsestats-auth.cc:13,1
    - Dst: getPointer
      Src: /src/pdns/pdns/responsestats-auth.cc:14,1
    - Dst: getPointer
      Src: /src/pdns/pdns/responsestats-auth.cc:15,1
    - Dst: getPointer
      Src: /src/pdns/pdns/responsestats-auth.cc:16,1
    - Dst: getPointer
      Src: /src/pdns/pdns/responsestats-auth.cc:17,1
    - Dst: getPointer
      Src: /src/pdns/pdns/responsestats-auth.cc:18,1
    - Dst: getPointer
      Src: /src/pdns/pdns/responsestats-auth.cc:19,1
    - Dst: getPointer
      Src: /src/pdns/pdns/responsestats-auth.cc:20,1
    - Dst: getPointer
      Src: /src/pdns/pdns/responsestats-auth.cc:21,1
    - Dst: getPointer
      Src: /src/pdns/pdns/responsestats-auth.cc:22,1
    - Dst: getPointer
      Src: /src/pdns/pdns/responsestats-auth.cc:23,1
    - Dst: inc
      Src: /src/pdns/pdns/responsestats-auth.cc:30,1
    - Dst: ringAccount
      Src: /src/pdns/pdns/responsestats-auth.cc:31,1
    - Dst: inc
      Src: /src/pdns/pdns/responsestats-auth.cc:34,1
    - Dst: ringAccount
      Src: /src/pdns/pdns/responsestats-auth.cc:35,1
    - Dst: ringAccount
      Src: /src/pdns/pdns/responsestats-auth.cc:36,1
    - Dst: length
      Src: /src/pdns/pdns/responsestats-auth.cc:41,1
    - Dst: length
      Src: /src/pdns/pdns/responsestats-auth.cc:44,1
    - Dst: length
      Src: /src/pdns/pdns/responsestats-auth.cc:47,1
    - Dst: length
      Src: /src/pdns/pdns/responsestats-auth.cc:50,1
    - Dst: length
      Src: /src/pdns/pdns/responsestats-auth.cc:52,1
    - Dst: length
      Src: /src/pdns/pdns/responsestats-auth.cc:54,1
    - Dst: ResponseStats::submitResponse
      Src: /src/pdns/pdns/responsestats-auth.cc:66,1
    - Dst: DNSPacket::qtype::getCode
      Src: /src/pdns/pdns/responsestats-auth.cc:66,1
    - Dst: length
      Src: /src/pdns/pdns/responsestats-auth.cc:66,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 41
    argCount: 3
    argNames:
    - p
    - udpOrTCP
    - last
    argTypes:
    - DNSPacket
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 10
    functionDepth: 1
    functionLinenumber: 10
    functionLinenumberEnd: 67
    functionName: ResponseStats::submitResponse
    functionSourceFile: /src/pdns/pdns/responsestats-auth.cc
    functionUses: 1
    functionsReached:
    - length
    - getPointer
    - DNSPacket::qtype::getCode
    - inc
    - ringAccount
    - DNSPacket::getString
    - ResponseStats::submitResponse
    linkageType: ''
    returnType: void
    signature: void ResponseStats::submitResponse(DNSPacket &p, bool udpOrTCP, bool
      last) const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: normalizeTV
      Src: /src/pdns/pdns/dnsreplay.cc:109,1
    - Dst: normalizeTV
      Src: /src/pdns/pdns/dnsreplay.cc:119,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 2
    argNames:
    - fact
    - ' rhs'
    argTypes:
    - float
    - struct timeval
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 122
      start: 97
    functionDepth: 0
    functionLinenumber: 97
    functionLinenumberEnd: 122
    functionName: operator*(float fact, const struct timeval& rhs)
    functionSourceFile: /src/pdns/pdns/dnsreplay.cc
    functionUses: 0
    functionsReached:
    - normalizeTV
    linkageType: ''
    returnType: struct timeval
    signature: struct timeval operator*(float fact, const struct timeval& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 125
    functionDepth: 0
    functionLinenumber: 125
    functionLinenumberEnd: 128
    functionName: pleaseQuitHandler
    functionSourceFile: /src/pdns/pdns/dnsreplay.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void pleaseQuitHandler(int)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: push_back
      Src: /src/pdns/pdns/dnsreplay.cc:136,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 137
      start: 133
    functionDepth: 0
    functionLinenumber: 133
    functionLinenumberEnd: 137
    functionName: DNSIDManager::DNSIDManager
    functionSourceFile: /src/pdns/pdns/dnsreplay.cc
    functionUses: 0
    functionsReached:
    - push_back
    linkageType: ''
    returnType: void
    signature: void DNSIDManager()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/dnsreplay.cc:142,1
    - Dst: front
      Src: /src/pdns/pdns/dnsreplay.cc:143,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/dnsreplay.cc:147,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 148
      start: 139
    functionDepth: 0
    functionLinenumber: 139
    functionLinenumberEnd: 148
    functionName: DNSIDManager::peakID
    functionSourceFile: /src/pdns/pdns/dnsreplay.cc
    functionUses: 0
    functionsReached:
    - empty
    - front
    - runtime_error
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t peakID()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSIDManager::peakID
      Src: /src/pdns/pdns/dnsreplay.cc:152,1
    - Dst: pop_front
      Src: /src/pdns/pdns/dnsreplay.cc:153,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 150
    functionDepth: 1
    functionLinenumber: 150
    functionLinenumberEnd: 155
    functionName: DNSIDManager::getID
    functionSourceFile: /src/pdns/pdns/dnsreplay.cc
    functionUses: 0
    functionsReached:
    - pop_front
    - DNSIDManager::peakID
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t getID()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: push_back
      Src: /src/pdns/pdns/dnsreplay.cc:159,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - id
    argTypes:
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 160
      start: 157
    functionDepth: 0
    functionLinenumber: 157
    functionLinenumberEnd: 160
    functionName: DNSIDManager::releaseID
    functionSourceFile: /src/pdns/pdns/dnsreplay.cc
    functionUses: 0
    functionsReached:
    - push_back
    linkageType: ''
    returnType: void
    signature: void releaseID(uint16_t id)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 174
      start: 172
    functionDepth: 0
    functionLinenumber: 172
    functionLinenumberEnd: 174
    functionName: QuestionData
    functionSourceFile: /src/pdns/pdns/dnsreplay.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void QuestionData()
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: gettimeofday
      Src: /src/pdns/pdns/dnsreplay.cc:206,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsreplay.cc:210,1
    - Dst: end
      Src: /src/pdns/pdns/dnsreplay.cc:210,1
    - Dst: DiffTime
      Src: /src/pdns/pdns/dnsreplay.cc:211,1
    - Dst: replace
      Src: /src/pdns/pdns/dnsreplay.cc:224,1
    - Dst: replace
      Src: /src/pdns/pdns/dnsreplay.cc:234,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 28
    argCount: 4
    argNames:
    - ' weOutstanding'
    - ' origOutstanding'
    - ' weSlow'
    - ' origSlow'
    argTypes:
    - int
    - int
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 241
      start: 203
    functionDepth: 0
    functionLinenumber: 203
    functionLinenumberEnd: 241
    functionName: WeOrigSlowQueriesDelta
    functionSourceFile: /src/pdns/pdns/dnsreplay.cc
    functionUses: 0
    functionsReached:
    - end
    - DiffTime
    - gettimeofday
    - begin
    - replace
    linkageType: ''
    returnType: void
    signature: void WeOrigSlowQueriesDelta(int& weOutstanding, int& origOutstanding,
      int& weSlow, int& origSlow)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: insert
      Src: /src/pdns/pdns/dnsreplay.cc:247,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - orig
    - ' compacted'
    argTypes:
    - MOADNSParser::answers_t
    - set<DNSRecord>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 250
      start: 243
    functionDepth: 1
    functionLinenumber: 243
    functionLinenumberEnd: 250
    functionName: compactAnswerSet
    functionSourceFile: /src/pdns/pdns/dnsreplay.cc
    functionUses: 0
    functionsReached:
    - insert
    linkageType: ''
    returnType: void
    signature: void compactAnswerSet(MOADNSParser::answers_t orig, set<DNSRecord>&
      compacted)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - rcode
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 255
      start: 252
    functionDepth: 0
    functionLinenumber: 252
    functionLinenumberEnd: 255
    functionName: isRcodeOk
    functionSourceFile: /src/pdns/pdns/dnsreplay.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool isRcodeOk(int rcode)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/dnsreplay.cc:261,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsreplay.cc:265,1
    - Dst: end
      Src: /src/pdns/pdns/dnsreplay.cc:265,1
    - Dst: MOADNSParser::answers_t::const_iterator::d_name::isRoot
      Src: /src/pdns/pdns/dnsreplay.cc:270,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 1
    argNames:
    - ' answers'
    argTypes:
    - MOADNSParser::answers_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 275
      start: 259
    functionDepth: 0
    functionLinenumber: 259
    functionLinenumberEnd: 275
    functionName: isRootReferral
    functionSourceFile: /src/pdns/pdns/dnsreplay.cc
    functionUses: 0
    functionsReached:
    - empty
    - MOADNSParser::answers_t::const_iterator::d_name::isRoot
    - end
    - begin
    linkageType: ''
    returnType: bool
    signature: bool isRootReferral(const MOADNSParser::answers_t& answers)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/dnsreplay.cc:280,1
    - Dst: resize
      Src: /src/pdns/pdns/dnsreplay.cc:281,1
    - Dst: gettimeofday
      Src: /src/pdns/pdns/dnsreplay.cc:284,1
    - Dst: DiffTime
      Src: /src/pdns/pdns/dnsreplay.cc:285,1
    - Dst: size
      Src: /src/pdns/pdns/dnsreplay.cc:286,1
    - Dst: size
      Src: /src/pdns/pdns/dnsreplay.cc:287,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - iter
    argTypes:
    - qids_t::const_iterator
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 290
      start: 278
    functionDepth: 1
    functionLinenumber: 278
    functionLinenumberEnd: 290
    functionName: accountFlightTime
    functionSourceFile: /src/pdns/pdns/dnsreplay.cc
    functionUses: 0
    functionsReached:
    - resize
    - DiffTime
    - size
    - gettimeofday
    - empty
    linkageType: ''
    returnType: void
    signature: void accountFlightTime(qids_t::const_iterator iter)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsreplay.cc:295,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - msec
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 299
      start: 292
    functionDepth: 0
    functionLinenumber: 292
    functionLinenumberEnd: 299
    functionName: countLessThan
    functionSourceFile: /src/pdns/pdns/dnsreplay.cc
    functionUses: 0
    functionsReached:
    - size
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t countLessThan(unsigned int msec)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: countLessThan
      Src: /src/pdns/pdns/dnsreplay.cc:303,1
    - Dst: size
      Src: /src/pdns/pdns/dnsreplay.cc:303,1
    - Dst: size
      Src: /src/pdns/pdns/dnsreplay.cc:308,1
    - Dst: setf
      Src: /src/pdns/pdns/dnsreplay.cc:310,1
    - Dst: precision
      Src: /src/pdns/pdns/dnsreplay.cc:311,1
    - Dst: size
      Src: /src/pdns/pdns/dnsreplay.cc:313,1
    - Dst: countLessThan
      Src: /src/pdns/pdns/dnsreplay.cc:317,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 322
      start: 301
    functionDepth: 1
    functionLinenumber: 301
    functionLinenumberEnd: 322
    functionName: emitFlightTimes
    functionSourceFile: /src/pdns/pdns/dnsreplay.cc
    functionUses: 0
    functionsReached:
    - setf
    - precision
    - size
    - countLessThan
    linkageType: ''
    returnType: void
    signature: void emitFlightTimes()
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: accountFlightTime
      Src: /src/pdns/pdns/dnsreplay.cc:327,1
    - Dst: compactAnswerSet
      Src: /src/pdns/pdns/dnsreplay.cc:330,1
    - Dst: compactAnswerSet
      Src: /src/pdns/pdns/dnsreplay.cc:331,1
    - Dst: set::size
      Src: /src/pdns/pdns/dnsreplay.cc:335,1
    - Dst: size
      Src: /src/pdns/pdns/dnsreplay.cc:335,1
    - Dst: isRcodeOk
      Src: /src/pdns/pdns/dnsreplay.cc:356,1
    - Dst: isRcodeOk
      Src: /src/pdns/pdns/dnsreplay.cc:356,1
    - Dst: isRcodeOk
      Src: /src/pdns/pdns/dnsreplay.cc:361,1
    - Dst: isRcodeOk
      Src: /src/pdns/pdns/dnsreplay.cc:361,1
    - Dst: isRootReferral
      Src: /src/pdns/pdns/dnsreplay.cc:361,1
    - Dst: emplace
      Src: /src/pdns/pdns/dnsreplay.cc:366,1
    - Dst: set::begin
      Src: /src/pdns/pdns/dnsreplay.cc:373,1
    - Dst: set::end
      Src: /src/pdns/pdns/dnsreplay.cc:373,1
    - Dst: DNSRecordContent::NumberToType
      Src: /src/pdns/pdns/dnsreplay.cc:374,1
    - Dst: set<DNSRecord>::const_iterator::getContent
      Src: /src/pdns/pdns/dnsreplay.cc:374,1
    - Dst: set<DNSRecord>::const_iterator::getContent
      Src: /src/pdns/pdns/dnsreplay.cc:374,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsreplay.cc:376,1
    - Dst: end
      Src: /src/pdns/pdns/dnsreplay.cc:376,1
    - Dst: DNSRecordContent::NumberToType
      Src: /src/pdns/pdns/dnsreplay.cc:377,1
    - Dst: set<DNSRecord>::const_iterator::getContent
      Src: /src/pdns/pdns/dnsreplay.cc:377,1
    - Dst: set<DNSRecord>::const_iterator::getContent
      Src: /src/pdns/pdns/dnsreplay.cc:377,1
    - Dst: erase
      Src: /src/pdns/pdns/dnsreplay.cc:385,1
    - Dst: releaseID
      Src: /src/pdns/pdns/dnsreplay.cc:386,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 50
    argCount: 1
    argNames:
    - iter
    argTypes:
    - qids_t::const_iterator
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 387
      start: 324
    functionDepth: 2
    functionLinenumber: 324
    functionLinenumberEnd: 387
    functionName: measureResultAndClean
    functionSourceFile: /src/pdns/pdns/dnsreplay.cc
    functionUses: 0
    functionsReached:
    - set::size
    - emplace
    - isRootReferral
    - end
    - set<DNSRecord>::const_iterator::getContent
    - size
    - accountFlightTime
    - set::begin
    - set::end
    - DNSRecordContent::NumberToType
    - begin
    - releaseID
    - isRcodeOk
    - erase
    - compactAnswerSet
    linkageType: ''
    returnType: void
    signature: void measureResultAndClean(qids_t::const_iterator iter)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: waitForData
      Src: /src/pdns/pdns/dnsreplay.cc:397,1
    - Dst: getHandle
      Src: /src/pdns/pdns/dnsreplay.cc:397,1
    - Dst: recvFromAsync
      Src: /src/pdns/pdns/dnsreplay.cc:402,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsreplay.cc:406,1
    - Dst: PacketBuffer::data
      Src: /src/pdns/pdns/dnsreplay.cc:406,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsreplay.cc:406,1
    - Dst: get
      Src: /src/pdns/pdns/dnsreplay.cc:413,1
    - Dst: find
      Src: /src/pdns/pdns/dnsreplay.cc:414,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsreplay.cc:414,1
    - Dst: end
      Src: /src/pdns/pdns/dnsreplay.cc:415,1
    - Dst: replace
      Src: /src/pdns/pdns/dnsreplay.cc:425,1
    - Dst: measureResultAndClean
      Src: /src/pdns/pdns/dnsreplay.cc:428,1
    - Dst: what
      Src: /src/pdns/pdns/dnsreplay.cc:443,1
    - Dst: exit
      Src: /src/pdns/pdns/dnsreplay.cc:444,1
    - Dst: exit
      Src: /src/pdns/pdns/dnsreplay.cc:449,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 35
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 450
      start: 392
    functionDepth: 3
    functionLinenumber: 392
    functionLinenumberEnd: 450
    functionName: receiveFromReference
    functionSourceFile: /src/pdns/pdns/dnsreplay.cc
    functionUses: 0
    functionsReached:
    - PacketBuffer::data
    - ntohs
    - what
    - getHandle
    - waitForData
    - end
    - get
    - recvFromAsync
    - reinterpret_cast<const char*>
    - PacketBuffer::size
    - measureResultAndClean
    - exit
    - replace
    - find
    linkageType: ''
    returnType: void
    signature: void receiveFromReference()
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: gettimeofday
      Src: /src/pdns/pdns/dnsreplay.cc:455,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsreplay.cc:457,1
    - Dst: end
      Src: /src/pdns/pdns/dnsreplay.cc:457,1
    - Dst: DiffTime
      Src: /src/pdns/pdns/dnsreplay.cc:458,1
    - Dst: releaseID
      Src: /src/pdns/pdns/dnsreplay.cc:461,1
    - Dst: erase
      Src: /src/pdns/pdns/dnsreplay.cc:469,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 472
      start: 452
    functionDepth: 0
    functionLinenumber: 452
    functionLinenumberEnd: 472
    functionName: pruneQids
    functionSourceFile: /src/pdns/pdns/dnsreplay.cc
    functionUses: 0
    functionsReached:
    - end
    - DiffTime
    - releaseID
    - gettimeofday
    - begin
    - erase
    linkageType: ''
    returnType: void
    signature: void pruneQids()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsreplay.cc:483,1
    - Dst: size
      Src: /src/pdns/pdns/dnsreplay.cc:486,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 492
      start: 474
    functionDepth: 0
    functionLinenumber: 474
    functionLinenumberEnd: 492
    functionName: printStats
    functionSourceFile: /src/pdns/pdns/dnsreplay.cc
    functionUses: 0
    functionsReached:
    - size
    linkageType: ''
    returnType: void
    signature: void printStats(uint64_t origWaitingFor=0, uint64_t weWaitingFor=0)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: gettimeofday
      Src: /src/pdns/pdns/dnsreplay.cc:499,1
    - Dst: DiffTime
      Src: /src/pdns/pdns/dnsreplay.cc:501,1
    - Dst: WeOrigSlowQueriesDelta
      Src: /src/pdns/pdns/dnsreplay.cc:505,1
    - Dst: DiffTime
      Src: /src/pdns/pdns/dnsreplay.cc:518,1
    - Dst: printStats
      Src: /src/pdns/pdns/dnsreplay.cc:530,1
    - Dst: pruneQids
      Src: /src/pdns/pdns/dnsreplay.cc:531,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 532
      start: 494
    functionDepth: 1
    functionLinenumber: 494
    functionLinenumberEnd: 532
    functionName: houseKeeping
    functionSourceFile: /src/pdns/pdns/dnsreplay.cc
    functionUses: 0
    functionsReached:
    - WeOrigSlowQueriesDelta
    - DiffTime
    - printStats
    - gettimeofday
    - pruneQids
    linkageType: ''
    returnType: void
    signature: void houseKeeping()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: htons
      Src: /src/pdns/pdns/dnsreplay.cc:543,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsreplay.cc:544,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsreplay.cc:545,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsreplay.cc:546,1
    - Dst: length
      Src: /src/pdns/pdns/dnsreplay.cc:546,1
    - Dst: assign
      Src: /src/pdns/pdns/dnsreplay.cc:547,1
    - Dst: append
      Src: /src/pdns/pdns/dnsreplay.cc:548,1
    - Dst: append
      Src: /src/pdns/pdns/dnsreplay.cc:549,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsreplay.cc:549,1
    - Dst: length
      Src: /src/pdns/pdns/dnsreplay.cc:549,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 2
    argNames:
    - ' optRData'
    - ' res'
    argTypes:
    - std::string
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 550
      start: 534
    functionDepth: 1
    functionLinenumber: 534
    functionLinenumberEnd: 550
    functionName: generateOptRR
    functionSourceFile: /src/pdns/pdns/dnsreplay.cc
    functionUses: 0
    functionsReached:
    - assign
    - memcpy
    - length
    - append
    - c_str
    - htons
    linkageType: ''
    returnType: void
    signature: void generateOptRR(const std::string& optRData, string& res)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: EDNSSubnetOpts::setSource
      Src: /src/pdns/pdns/dnsreplay.cc:559,1
    - Dst: Netmask
      Src: /src/pdns/pdns/dnsreplay.cc:559,1
    - Dst: EDNSSubnetOpts::setSource
      Src: /src/pdns/pdns/dnsreplay.cc:564,1
    - Dst: Netmask
      Src: /src/pdns/pdns/dnsreplay.cc:564,1
    - Dst: EDNSSubnetOpts::makeOptString
      Src: /src/pdns/pdns/dnsreplay.cc:566,1
    - Dst: generateEDNSOption
      Src: /src/pdns/pdns/dnsreplay.cc:568,1
    - Dst: generateOptRR
      Src: /src/pdns/pdns/dnsreplay.cc:569,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsreplay.cc:572,1
    - Dst: string::size
      Src: /src/pdns/pdns/dnsreplay.cc:574,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsreplay.cc:576,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsreplay.cc:577,1
    - Dst: string::c_str
      Src: /src/pdns/pdns/dnsreplay.cc:577,1
    - Dst: string::size
      Src: /src/pdns/pdns/dnsreplay.cc:577,1
    - Dst: string::size
      Src: /src/pdns/pdns/dnsreplay.cc:578,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 5
    argNames:
    - packet
    - packetSize
    - len
    - ' remote'
    - stamp
    argTypes:
    - char*
    - size_t
    - uint16_t*
    - ComboAddress
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 580
      start: 552
    functionDepth: 0
    functionLinenumber: 552
    functionLinenumberEnd: 580
    functionName: addECSOption
    functionSourceFile: /src/pdns/pdns/dnsreplay.cc
    functionUses: 0
    functionsReached:
    - Netmask
    - memcpy
    - string::c_str
    - string::size
    - ntohs
    - EDNSSubnetOpts::setSource
    - generateEDNSOption
    - generateOptRR
    - EDNSSubnetOpts::makeOptString
    - htons
    linkageType: ''
    returnType: void
    signature: void addECSOption(char* packet, const size_t packetSize, uint16_t*
      len, const ComboAddress& remote, int stamp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Socket
      Src: /src/pdns/pdns/dnsreplay.cc:586,1
    - Dst: SSocket
      Src: /src/pdns/pdns/dnsreplay.cc:586,1
    - Dst: SSetsockopt
      Src: /src/pdns/pdns/dnsreplay.cc:587,1
    - Dst: auto::getHandle
      Src: /src/pdns/pdns/dnsreplay.cc:587,1
    - Dst: what
      Src: /src/pdns/pdns/dnsreplay.cc:591,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 595
      start: 582
    functionDepth: 0
    functionLinenumber: 582
    functionLinenumberEnd: 595
    functionName: checkIPTransparentUsability
    functionSourceFile: /src/pdns/pdns/dnsreplay.cc
    functionUses: 0
    functionsReached:
    - SSocket
    - auto::getHandle
    - what
    - Socket
    - SSetsockopt
    linkageType: ''
    returnType: bool
    signature: bool checkIPTransparentUsability()
  - BBCount: 29
    BranchProfiles: []
    Callsites:
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsreplay.cc:607,1
    - Dst: const_cast<dnsheader*>
      Src: /src/pdns/pdns/dnsreplay.cc:611,1
    - Dst: reinterpret_cast<const dnsheader*>
      Src: /src/pdns/pdns/dnsreplay.cc:611,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsreplay.cc:612,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsreplay.cc:612,1
    - Dst: getID
      Src: /src/pdns/pdns/dnsreplay.cc:620,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsreplay.cc:622,1
    - Dst: addECSOption
      Src: /src/pdns/pdns/dnsreplay.cc:632,1
    - Dst: getSource
      Src: /src/pdns/pdns/dnsreplay.cc:632,1
    - Dst: Socket
      Src: /src/pdns/pdns/dnsreplay.cc:637,1
    - Dst: SSocket
      Src: /src/pdns/pdns/dnsreplay.cc:637,1
    - Dst: SSetsockopt
      Src: /src/pdns/pdns/dnsreplay.cc:638,1
    - Dst: auto::getHandle
      Src: /src/pdns/pdns/dnsreplay.cc:638,1
    - Dst: SBind
      Src: /src/pdns/pdns/dnsreplay.cc:639,1
    - Dst: auto::getHandle
      Src: /src/pdns/pdns/dnsreplay.cc:639,1
    - Dst: getSource
      Src: /src/pdns/pdns/dnsreplay.cc:639,1
    - Dst: sendto
      Src: /src/pdns/pdns/dnsreplay.cc:640,1
    - Dst: auto::getHandle
      Src: /src/pdns/pdns/dnsreplay.cc:640,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsreplay.cc:640,1
    - Dst: reinterpret_cast<const struct sockaddr*>
      Src: /src/pdns/pdns/dnsreplay.cc:640,1
    - Dst: getSocklen
      Src: /src/pdns/pdns/dnsreplay.cc:640,1
    - Dst: sendTo
      Src: /src/pdns/pdns/dnsreplay.cc:644,1
    - Dst: Logging::Logger::create
      Src: /src/pdns/pdns/dnsreplay.cc:652,1
    - Dst: getSource
      Src: /src/pdns/pdns/dnsreplay.cc:652,1
    - Dst: getDest
      Src: /src/pdns/pdns/dnsreplay.cc:652,1
    - Dst: count
      Src: /src/pdns/pdns/dnsreplay.cc:656,1
    - Dst: releaseID
      Src: /src/pdns/pdns/dnsreplay.cc:660,1
    - Dst: gettimeofday
      Src: /src/pdns/pdns/dnsreplay.cc:665,1
    - Dst: insert
      Src: /src/pdns/pdns/dnsreplay.cc:666,1
    - Dst: find
      Src: /src/pdns/pdns/dnsreplay.cc:670,1
    - Dst: end
      Src: /src/pdns/pdns/dnsreplay.cc:671,1
    - Dst: replace
      Src: /src/pdns/pdns/dnsreplay.cc:680,1
    - Dst: measureResultAndClean
      Src: /src/pdns/pdns/dnsreplay.cc:683,1
    - Dst: what
      Src: /src/pdns/pdns/dnsreplay.cc:697,1
    - Dst: releaseID
      Src: /src/pdns/pdns/dnsreplay.cc:699,1
    - Dst: what
      Src: /src/pdns/pdns/dnsreplay.cc:704,1
    - Dst: releaseID
      Src: /src/pdns/pdns/dnsreplay.cc:707,1
    - Dst: po::options_description::add_options
      Src: /src/pdns/pdns/dnsreplay.cc:723,1
    - Dst: po::value<uint32_t>
      Src: /src/pdns/pdns/dnsreplay.cc:726,1
    - Dst: po::value<uint16_t>
      Src: /src/pdns/pdns/dnsreplay.cc:727,1
    - Dst: po::value<bool>
      Src: /src/pdns/pdns/dnsreplay.cc:728,1
    - Dst: po::value<bool>
      Src: /src/pdns/pdns/dnsreplay.cc:729,1
    - Dst: po::value<float>
      Src: /src/pdns/pdns/dnsreplay.cc:730,1
    - Dst: po::value<uint32_t>
      Src: /src/pdns/pdns/dnsreplay.cc:731,1
    - Dst: po::value<uint16_t>
      Src: /src/pdns/pdns/dnsreplay.cc:733,1
    - Dst: po::value<string>
      Src: /src/pdns/pdns/dnsreplay.cc:734,1
    - Dst: po::value<bool>
      Src: /src/pdns/pdns/dnsreplay.cc:735,1
    - Dst: po::value<uint16_t>
      Src: /src/pdns/pdns/dnsreplay.cc:736,1
    - Dst: po::options_description::add_options
      Src: /src/pdns/pdns/dnsreplay.cc:740,1
    - Dst: po::value<string>
      Src: /src/pdns/pdns/dnsreplay.cc:741,1
    - Dst: po::value<string>
      Src: /src/pdns/pdns/dnsreplay.cc:742,1
    - Dst: po::value<uint16_t>
      Src: /src/pdns/pdns/dnsreplay.cc:743,1
    - Dst: po::options_description::add
      Src: /src/pdns/pdns/dnsreplay.cc:745,1
    - Dst: po::positional_options_description::add
      Src: /src/pdns/pdns/dnsreplay.cc:747,1
    - Dst: po::positional_options_description::add
      Src: /src/pdns/pdns/dnsreplay.cc:748,1
    - Dst: po::positional_options_description::add
      Src: /src/pdns/pdns/dnsreplay.cc:749,1
    - Dst: pdns::stat_t_trait::store
      Src: /src/pdns/pdns/dnsreplay.cc:751,1
    - Dst: po::command_line_parser
      Src: /src/pdns/pdns/dnsreplay.cc:751,1
    - Dst: pdns::channel::Notifier::notify
      Src: /src/pdns/pdns/dnsreplay.cc:752,1
    - Dst: reportAllTypes
      Src: /src/pdns/pdns/dnsreplay.cc:754,1
    - Dst: count
      Src: /src/pdns/pdns/dnsreplay.cc:756,1
    - Dst: usage
      Src: /src/pdns/pdns/dnsreplay.cc:757,1
    - Dst: count
      Src: /src/pdns/pdns/dnsreplay.cc:761,1
    - Dst: count
      Src: /src/pdns/pdns/dnsreplay.cc:766,1
    - Dst: usage
      Src: /src/pdns/pdns/dnsreplay.cc:768,1
    - Dst: as
      Src: /src/pdns/pdns/dnsreplay.cc:772,1
    - Dst: as
      Src: /src/pdns/pdns/dnsreplay.cc:774,1
    - Dst: as
      Src: /src/pdns/pdns/dnsreplay.cc:775,1
    - Dst: as
      Src: /src/pdns/pdns/dnsreplay.cc:777,1
    - Dst: signal
      Src: /src/pdns/pdns/dnsreplay.cc:779,1
    - Dst: as
      Src: /src/pdns/pdns/dnsreplay.cc:780,1
    - Dst: as
      Src: /src/pdns/pdns/dnsreplay.cc:781,1
    - Dst: as
      Src: /src/pdns/pdns/dnsreplay.cc:783,1
    - Dst: make_unique<Socket>
      Src: /src/pdns/pdns/dnsreplay.cc:784,1
    - Dst: setNonBlocking
      Src: /src/pdns/pdns/dnsreplay.cc:786,1
    - Dst: count
      Src: /src/pdns/pdns/dnsreplay.cc:788,1
    - Dst: as
      Src: /src/pdns/pdns/dnsreplay.cc:788,1
    - Dst: bind
      Src: /src/pdns/pdns/dnsreplay.cc:789,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsreplay.cc:789,1
    - Dst: as
      Src: /src/pdns/pdns/dnsreplay.cc:789,1
    - Dst: as
      Src: /src/pdns/pdns/dnsreplay.cc:789,1
    - Dst: setSocketReceiveBuffer
      Src: /src/pdns/pdns/dnsreplay.cc:793,1
    - Dst: getHandle
      Src: /src/pdns/pdns/dnsreplay.cc:793,1
    - Dst: what
      Src: /src/pdns/pdns/dnsreplay.cc:796,1
    - Dst: setSocketSendBuffer
      Src: /src/pdns/pdns/dnsreplay.cc:799,1
    - Dst: getHandle
      Src: /src/pdns/pdns/dnsreplay.cc:799,1
    - Dst: what
      Src: /src/pdns/pdns/dnsreplay.cc:802,1
    - Dst: as
      Src: /src/pdns/pdns/dnsreplay.cc:805,1
    - Dst: as
      Src: /src/pdns/pdns/dnsreplay.cc:806,1
    - Dst: count
      Src: /src/pdns/pdns/dnsreplay.cc:809,1
    - Dst: count
      Src: /src/pdns/pdns/dnsreplay.cc:809,1
    - Dst: as
      Src: /src/pdns/pdns/dnsreplay.cc:810,1
    - Dst: as
      Src: /src/pdns/pdns/dnsreplay.cc:812,1
    - Dst: as
      Src: /src/pdns/pdns/dnsreplay.cc:812,1
    - Dst: as
      Src: /src/pdns/pdns/dnsreplay.cc:814,1
    - Dst: checkIPTransparentUsability
      Src: /src/pdns/pdns/dnsreplay.cc:815,1
    - Dst: exit
      Src: /src/pdns/pdns/dnsreplay.cc:817,1
    - Dst: PcapPacketReader::getUDPPacket
      Src: /src/pdns/pdns/dnsreplay.cc:824,1
    - Dst: houseKeeping
      Src: /src/pdns/pdns/dnsreplay.cc:834,1
    - Dst: PcapPacketReader::getUDPPacket
      Src: /src/pdns/pdns/dnsreplay.cc:841,1
    - Dst: sendPacketFromPR
      Src: /src/pdns/pdns/dnsreplay.cc:848,1
    - Dst: gettimeofday
      Src: /src/pdns/pdns/dnsreplay.cc:857,1
    - Dst: receiveFromReference
      Src: /src/pdns/pdns/dnsreplay.cc:859,1
    - Dst: gettimeofday
      Src: /src/pdns/pdns/dnsreplay.cc:861,1
    - Dst: sleep
      Src: /src/pdns/pdns/dnsreplay.cc:866,1
    - Dst: receiveFromReference
      Src: /src/pdns/pdns/dnsreplay.cc:867,1
    - Dst: printStats
      Src: /src/pdns/pdns/dnsreplay.cc:868,1
    - Dst: emitFlightTimes
      Src: /src/pdns/pdns/dnsreplay.cc:869,1
    - Dst: what
      Src: /src/pdns/pdns/dnsreplay.cc:873,1
    CyclomaticComplexity: 43
    EdgeCount: 43
    ICount: 170
    argCount: 4
    argNames:
    - ' pr'
    - ' remote'
    - stamp
    - usePCAPSourceIP
    argTypes:
    - PcapPacketReader
    - ComboAddress
    - int
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 874
      start: 601
    functionDepth: 4
    functionLinenumber: 601
    functionLinenumberEnd: 874
    functionName: sendPacketFromPR
    functionSourceFile: /src/pdns/pdns/dnsreplay.cc
    functionUses: 1
    functionsReached:
    - const_cast<dnsheader*>
    - PcapPacketReader::getUDPPacket
    - ntohs
    - setSocketReceiveBuffer
    - checkIPTransparentUsability
    - make_unique<Socket>
    - reinterpret_cast<const struct sockaddr*>
    - releaseID
    - printStats
    - gettimeofday
    - insert
    - sendPacketFromPR
    - getDest
    - replace
    - find
    - SBind
    - po::positional_options_description::add
    - po::command_line_parser
    - po::value<uint32_t>
    - reportAllTypes
    - auto::getHandle
    - po::value<uint16_t>
    - setNonBlocking
    - sendTo
    - bind
    - pdns::channel::Notifier::notify
    - measureResultAndClean
    - usage
    - houseKeeping
    - emitFlightTimes
    - htons
    - po::value<bool>
    - pdns::max
    - SSocket
    - setSocketSendBuffer
    - po::value<float>
    - sleep
    - getHandle
    - reinterpret_cast<const dnsheader*>
    - reinterpret_cast<const char*>
    - po::options_description::add
    - exit
    - getSocklen
    - po::options_description::add_options
    - ComboAddress
    - addECSOption
    - count
    - what
    - end
    - pdns::stat_t_trait::store
    - receiveFromReference
    - Socket
    - Logging::Logger::create
    - as
    - getSource
    - SSetsockopt
    - sendto
    - getID
    - po::value<string>
    - signal
    linkageType: ''
    returnType: bool
    signature: bool sendPacketFromPR(PcapPacketReader& pr, const ComboAddress& remote,
      int stamp, [[maybe_unused]] bool usePCAPSourceIP)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: what
      Src: /src/pdns/pdns/dnsreplay.cc:697,1
    - Dst: releaseID
      Src: /src/pdns/pdns/dnsreplay.cc:699,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - ' mde'
    argTypes:
    - MOADNSException
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 701
      start: 695
    functionDepth: 0
    functionLinenumber: 695
    functionLinenumberEnd: 701
    functionName: catch
    functionSourceFile: /src/pdns/pdns/dnsreplay.cc
    functionUses: 0
    functionsReached:
    - what
    - releaseID
    linkageType: ''
    returnType: void
    signature: void catch (const MOADNSException& mde)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: what
      Src: /src/pdns/pdns/dnsreplay.cc:704,1
    - Dst: releaseID
      Src: /src/pdns/pdns/dnsreplay.cc:707,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - ' e'
    argTypes:
    - std::exception
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 709
      start: 702
    functionDepth: 0
    functionLinenumber: 702
    functionLinenumberEnd: 709
    functionName: catch
    functionSourceFile: /src/pdns/pdns/dnsreplay.cc
    functionUses: 0
    functionsReached:
    - what
    - releaseID
    linkageType: ''
    returnType: void
    signature: void catch (std::exception& e)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - desc
    argTypes:
    - po::options_description
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 717
      start: 714
    functionDepth: 0
    functionLinenumber: 714
    functionLinenumberEnd: 717
    functionName: usage
    functionSourceFile: /src/pdns/pdns/dnsreplay.cc
    functionUses: 100
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void usage(po::options_description &desc)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: po::options_description::add_options
      Src: /src/pdns/pdns/dnsreplay.cc:723,1
    - Dst: po::value<uint32_t>
      Src: /src/pdns/pdns/dnsreplay.cc:726,1
    - Dst: po::value<uint16_t>
      Src: /src/pdns/pdns/dnsreplay.cc:727,1
    - Dst: po::value<bool>
      Src: /src/pdns/pdns/dnsreplay.cc:728,1
    - Dst: po::value<bool>
      Src: /src/pdns/pdns/dnsreplay.cc:729,1
    - Dst: po::value<float>
      Src: /src/pdns/pdns/dnsreplay.cc:730,1
    - Dst: po::value<uint32_t>
      Src: /src/pdns/pdns/dnsreplay.cc:731,1
    - Dst: po::value<uint16_t>
      Src: /src/pdns/pdns/dnsreplay.cc:733,1
    - Dst: po::value<string>
      Src: /src/pdns/pdns/dnsreplay.cc:734,1
    - Dst: po::value<bool>
      Src: /src/pdns/pdns/dnsreplay.cc:735,1
    - Dst: po::value<uint16_t>
      Src: /src/pdns/pdns/dnsreplay.cc:736,1
    - Dst: po::options_description::add_options
      Src: /src/pdns/pdns/dnsreplay.cc:740,1
    - Dst: po::value<string>
      Src: /src/pdns/pdns/dnsreplay.cc:741,1
    - Dst: po::value<string>
      Src: /src/pdns/pdns/dnsreplay.cc:742,1
    - Dst: po::value<uint16_t>
      Src: /src/pdns/pdns/dnsreplay.cc:743,1
    - Dst: po::options_description::add
      Src: /src/pdns/pdns/dnsreplay.cc:745,1
    - Dst: po::positional_options_description::add
      Src: /src/pdns/pdns/dnsreplay.cc:747,1
    - Dst: po::positional_options_description::add
      Src: /src/pdns/pdns/dnsreplay.cc:748,1
    - Dst: po::positional_options_description::add
      Src: /src/pdns/pdns/dnsreplay.cc:749,1
    - Dst: pdns::stat_t_trait::store
      Src: /src/pdns/pdns/dnsreplay.cc:751,1
    - Dst: po::command_line_parser
      Src: /src/pdns/pdns/dnsreplay.cc:751,1
    - Dst: pdns::channel::Notifier::notify
      Src: /src/pdns/pdns/dnsreplay.cc:752,1
    - Dst: reportAllTypes
      Src: /src/pdns/pdns/dnsreplay.cc:754,1
    - Dst: count
      Src: /src/pdns/pdns/dnsreplay.cc:756,1
    - Dst: usage
      Src: /src/pdns/pdns/dnsreplay.cc:757,1
    - Dst: count
      Src: /src/pdns/pdns/dnsreplay.cc:761,1
    - Dst: count
      Src: /src/pdns/pdns/dnsreplay.cc:766,1
    - Dst: usage
      Src: /src/pdns/pdns/dnsreplay.cc:768,1
    - Dst: as
      Src: /src/pdns/pdns/dnsreplay.cc:772,1
    - Dst: as
      Src: /src/pdns/pdns/dnsreplay.cc:774,1
    - Dst: as
      Src: /src/pdns/pdns/dnsreplay.cc:775,1
    - Dst: as
      Src: /src/pdns/pdns/dnsreplay.cc:777,1
    - Dst: signal
      Src: /src/pdns/pdns/dnsreplay.cc:779,1
    - Dst: as
      Src: /src/pdns/pdns/dnsreplay.cc:780,1
    - Dst: as
      Src: /src/pdns/pdns/dnsreplay.cc:781,1
    - Dst: as
      Src: /src/pdns/pdns/dnsreplay.cc:783,1
    - Dst: make_unique<Socket>
      Src: /src/pdns/pdns/dnsreplay.cc:784,1
    - Dst: setNonBlocking
      Src: /src/pdns/pdns/dnsreplay.cc:786,1
    - Dst: count
      Src: /src/pdns/pdns/dnsreplay.cc:788,1
    - Dst: as
      Src: /src/pdns/pdns/dnsreplay.cc:788,1
    - Dst: bind
      Src: /src/pdns/pdns/dnsreplay.cc:789,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsreplay.cc:789,1
    - Dst: as
      Src: /src/pdns/pdns/dnsreplay.cc:789,1
    - Dst: as
      Src: /src/pdns/pdns/dnsreplay.cc:789,1
    - Dst: setSocketReceiveBuffer
      Src: /src/pdns/pdns/dnsreplay.cc:793,1
    - Dst: getHandle
      Src: /src/pdns/pdns/dnsreplay.cc:793,1
    - Dst: what
      Src: /src/pdns/pdns/dnsreplay.cc:796,1
    - Dst: setSocketSendBuffer
      Src: /src/pdns/pdns/dnsreplay.cc:799,1
    - Dst: getHandle
      Src: /src/pdns/pdns/dnsreplay.cc:799,1
    - Dst: what
      Src: /src/pdns/pdns/dnsreplay.cc:802,1
    - Dst: as
      Src: /src/pdns/pdns/dnsreplay.cc:805,1
    - Dst: as
      Src: /src/pdns/pdns/dnsreplay.cc:806,1
    - Dst: count
      Src: /src/pdns/pdns/dnsreplay.cc:809,1
    - Dst: count
      Src: /src/pdns/pdns/dnsreplay.cc:809,1
    - Dst: as
      Src: /src/pdns/pdns/dnsreplay.cc:810,1
    - Dst: as
      Src: /src/pdns/pdns/dnsreplay.cc:812,1
    - Dst: as
      Src: /src/pdns/pdns/dnsreplay.cc:812,1
    - Dst: as
      Src: /src/pdns/pdns/dnsreplay.cc:814,1
    - Dst: checkIPTransparentUsability
      Src: /src/pdns/pdns/dnsreplay.cc:815,1
    - Dst: exit
      Src: /src/pdns/pdns/dnsreplay.cc:817,1
    - Dst: PcapPacketReader::getUDPPacket
      Src: /src/pdns/pdns/dnsreplay.cc:824,1
    - Dst: houseKeeping
      Src: /src/pdns/pdns/dnsreplay.cc:834,1
    - Dst: PcapPacketReader::getUDPPacket
      Src: /src/pdns/pdns/dnsreplay.cc:841,1
    - Dst: sendPacketFromPR
      Src: /src/pdns/pdns/dnsreplay.cc:848,1
    - Dst: gettimeofday
      Src: /src/pdns/pdns/dnsreplay.cc:857,1
    - Dst: receiveFromReference
      Src: /src/pdns/pdns/dnsreplay.cc:859,1
    - Dst: gettimeofday
      Src: /src/pdns/pdns/dnsreplay.cc:861,1
    - Dst: sleep
      Src: /src/pdns/pdns/dnsreplay.cc:866,1
    - Dst: receiveFromReference
      Src: /src/pdns/pdns/dnsreplay.cc:867,1
    - Dst: printStats
      Src: /src/pdns/pdns/dnsreplay.cc:868,1
    - Dst: emitFlightTimes
      Src: /src/pdns/pdns/dnsreplay.cc:869,1
    - Dst: what
      Src: /src/pdns/pdns/dnsreplay.cc:873,1
    CyclomaticComplexity: 25
    EdgeCount: 25
    ICount: 92
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 874
      start: 719
    functionDepth: 5
    functionLinenumber: 719
    functionLinenumberEnd: 874
    functionName: main
    functionSourceFile: /src/pdns/pdns/dnsreplay.cc
    functionUses: 17
    functionsReached:
    - PcapPacketReader::getUDPPacket
    - setSocketReceiveBuffer
    - checkIPTransparentUsability
    - make_unique<Socket>
    - printStats
    - gettimeofday
    - sendPacketFromPR
    - po::positional_options_description::add
    - po::value<uint32_t>
    - reportAllTypes
    - po::value<uint16_t>
    - setNonBlocking
    - bind
    - pdns::channel::Notifier::notify
    - usage
    - houseKeeping
    - emitFlightTimes
    - po::value<bool>
    - setSocketSendBuffer
    - po::value<float>
    - sleep
    - getHandle
    - po::options_description::add
    - exit
    - po::options_description::add_options
    - ComboAddress
    - count
    - what
    - pdns::stat_t_trait::store
    - receiveFromReference
    - as
    - po::command_line_parser
    - po::value<string>
    - signal
    linkageType: ''
    returnType: int
    signature: int main(int argc, char** argv)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: std::unique_ptr<EVP_MD_CTX, void (*)(EVP_MD_CTX*)>
      Src: /src/pdns/pdns/digests.hh:36,1
    - Dst: EVP_MD_CTX_new
      Src: /src/pdns/pdns/digests.hh:36,1
    - Dst: std::unique_ptr<EVP_MD_CTX, void (*)(EVP_MD_CTX*)>
      Src: /src/pdns/pdns/digests.hh:38,1
    - Dst: EVP_MD_CTX_create
      Src: /src/pdns/pdns/digests.hh:38,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/digests.hh:41,1
    - Dst: std::string
      Src: /src/pdns/pdns/digests.hh:41,1
    - Dst: EVP_MD_name
      Src: /src/pdns/pdns/digests.hh:41,1
    - Dst: EVP_DigestInit_ex
      Src: /src/pdns/pdns/digests.hh:44,1
    - Dst: auto::get
      Src: /src/pdns/pdns/digests.hh:44,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/digests.hh:45,1
    - Dst: std::string
      Src: /src/pdns/pdns/digests.hh:45,1
    - Dst: EVP_MD_name
      Src: /src/pdns/pdns/digests.hh:45,1
    - Dst: EVP_DigestUpdate
      Src: /src/pdns/pdns/digests.hh:48,1
    - Dst: auto::get
      Src: /src/pdns/pdns/digests.hh:48,1
    - Dst: data
      Src: /src/pdns/pdns/digests.hh:48,1
    - Dst: size
      Src: /src/pdns/pdns/digests.hh:48,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/digests.hh:49,1
    - Dst: std::string
      Src: /src/pdns/pdns/digests.hh:49,1
    - Dst: EVP_MD_name
      Src: /src/pdns/pdns/digests.hh:49,1
    - Dst: std::string::resize
      Src: /src/pdns/pdns/digests.hh:54,1
    - Dst: EVP_MD_size
      Src: /src/pdns/pdns/digests.hh:54,1
    - Dst: EVP_DigestFinal_ex
      Src: /src/pdns/pdns/digests.hh:57,1
    - Dst: auto::get
      Src: /src/pdns/pdns/digests.hh:57,1
    - Dst: const_cast<unsigned char*>
      Src: /src/pdns/pdns/digests.hh:57,1
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/digests.hh:57,1
    - Dst: std::string::c_str
      Src: /src/pdns/pdns/digests.hh:57,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/digests.hh:58,1
    - Dst: std::string
      Src: /src/pdns/pdns/digests.hh:58,1
    - Dst: EVP_MD_name
      Src: /src/pdns/pdns/digests.hh:58,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/digests.hh:61,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/digests.hh:62,1
    - Dst: std::string
      Src: /src/pdns/pdns/digests.hh:62,1
    - Dst: EVP_MD_name
      Src: /src/pdns/pdns/digests.hh:62,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/digests.hh:62,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/digests.hh:62,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/digests.hh:62,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 18
    argCount: 2
    argNames:
    - messageDigest
    - ' input'
    argTypes:
    - EVP_MD*
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 33
    functionDepth: 1
    functionLinenumber: 33
    functionLinenumberEnd: 66
    functionName: pdns::hash
    functionSourceFile: /src/pdns/pdns/digests.hh
    functionUses: 0
    functionsReached:
    - std::to_string
    - std::unique_ptr<EVP_MD_CTX, void (*)(EVP_MD_CTX*)>
    - std::string
    - std::string::size
    - EVP_MD_name
    - size
    - reinterpret_cast<const unsigned char*>
    - auto::get
    - const_cast<unsigned char*>
    - std::runtime_error
    - EVP_MD_size
    - std::string::resize
    - EVP_DigestUpdate
    - std::string::c_str
    - EVP_DigestFinal_ex
    - EVP_DigestInit_ex
    - EVP_MD_CTX_create
    - data
    - EVP_MD_CTX_new
    linkageType: ''
    returnType: std::string
    signature: std::string hash(const EVP_MD* messageDigest, const std::string& input)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: EVP_md5
      Src: /src/pdns/pdns/digests.hh:70,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/digests.hh:72,1
    - Dst: pdns::hash
      Src: /src/pdns/pdns/digests.hh:75,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - ' input'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 68
    functionDepth: 0
    functionLinenumber: 68
    functionLinenumberEnd: 76
    functionName: pdns::md5
    functionSourceFile: /src/pdns/pdns/digests.hh
    functionUses: 1
    functionsReached:
    - pdns::hash
    - EVP_md5
    - std::runtime_error
    linkageType: ''
    returnType: std::string
    signature: std::string md5(const std::string& input)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: EVP_sha1
      Src: /src/pdns/pdns/digests.hh:80,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/digests.hh:82,1
    - Dst: pdns::hash
      Src: /src/pdns/pdns/digests.hh:85,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - ' input'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 78
    functionDepth: 0
    functionLinenumber: 78
    functionLinenumberEnd: 86
    functionName: pdns::sha1
    functionSourceFile: /src/pdns/pdns/digests.hh
    functionUses: 1
    functionsReached:
    - EVP_sha1
    - pdns::hash
    - std::runtime_error
    linkageType: ''
    returnType: std::string
    signature: std::string sha1(const std::string& input)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: std::unique_ptr<EVP_MD_CTX, void (*)(EVP_MD_CTX*)>
      Src: /src/pdns/pdns/digests.hh:36,1
    - Dst: EVP_MD_CTX_new
      Src: /src/pdns/pdns/digests.hh:36,1
    - Dst: std::unique_ptr<EVP_MD_CTX, void (*)(EVP_MD_CTX*)>
      Src: /src/pdns/pdns/digests.hh:38,1
    - Dst: EVP_MD_CTX_create
      Src: /src/pdns/pdns/digests.hh:38,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/digests.hh:41,1
    - Dst: std::string
      Src: /src/pdns/pdns/digests.hh:41,1
    - Dst: EVP_MD_name
      Src: /src/pdns/pdns/digests.hh:41,1
    - Dst: EVP_DigestInit_ex
      Src: /src/pdns/pdns/digests.hh:44,1
    - Dst: auto::get
      Src: /src/pdns/pdns/digests.hh:44,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/digests.hh:45,1
    - Dst: std::string
      Src: /src/pdns/pdns/digests.hh:45,1
    - Dst: EVP_MD_name
      Src: /src/pdns/pdns/digests.hh:45,1
    - Dst: EVP_DigestUpdate
      Src: /src/pdns/pdns/digests.hh:48,1
    - Dst: auto::get
      Src: /src/pdns/pdns/digests.hh:48,1
    - Dst: data
      Src: /src/pdns/pdns/digests.hh:48,1
    - Dst: size
      Src: /src/pdns/pdns/digests.hh:48,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/digests.hh:49,1
    - Dst: std::string
      Src: /src/pdns/pdns/digests.hh:49,1
    - Dst: EVP_MD_name
      Src: /src/pdns/pdns/digests.hh:49,1
    - Dst: std::string::resize
      Src: /src/pdns/pdns/digests.hh:54,1
    - Dst: EVP_MD_size
      Src: /src/pdns/pdns/digests.hh:54,1
    - Dst: EVP_DigestFinal_ex
      Src: /src/pdns/pdns/digests.hh:57,1
    - Dst: auto::get
      Src: /src/pdns/pdns/digests.hh:57,1
    - Dst: const_cast<unsigned char*>
      Src: /src/pdns/pdns/digests.hh:57,1
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/digests.hh:57,1
    - Dst: std::string::c_str
      Src: /src/pdns/pdns/digests.hh:57,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/digests.hh:58,1
    - Dst: std::string
      Src: /src/pdns/pdns/digests.hh:58,1
    - Dst: EVP_MD_name
      Src: /src/pdns/pdns/digests.hh:58,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/digests.hh:61,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/digests.hh:62,1
    - Dst: std::string
      Src: /src/pdns/pdns/digests.hh:62,1
    - Dst: EVP_MD_name
      Src: /src/pdns/pdns/digests.hh:62,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/digests.hh:62,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/digests.hh:62,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/digests.hh:62,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 18
    argCount: 2
    argNames:
    - messageDigest
    - ' input'
    argTypes:
    - EVP_MD*
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 33
    functionDepth: 1
    functionLinenumber: 33
    functionLinenumberEnd: 66
    functionName: pdns::hash
    functionSourceFile: /src/pdns/pdns/digests.hh
    functionUses: 2
    functionsReached:
    - std::to_string
    - std::unique_ptr<EVP_MD_CTX, void (*)(EVP_MD_CTX*)>
    - std::string
    - std::string::size
    - EVP_MD_name
    - size
    - reinterpret_cast<const unsigned char*>
    - auto::get
    - const_cast<unsigned char*>
    - std::runtime_error
    - EVP_MD_size
    - std::string::resize
    - EVP_DigestUpdate
    - std::string::c_str
    - EVP_DigestFinal_ex
    - EVP_DigestInit_ex
    - EVP_MD_CTX_create
    - data
    - EVP_MD_CTX_new
    linkageType: ''
    returnType: std::string
    signature: std::string hash(const EVP_MD* messageDigest, const std::string& input)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: EVP_md5
      Src: /src/pdns/pdns/digests.hh:70,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/digests.hh:72,1
    - Dst: pdns::hash
      Src: /src/pdns/pdns/digests.hh:75,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - ' input'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 68
    functionDepth: 0
    functionLinenumber: 68
    functionLinenumberEnd: 76
    functionName: pdns::md5
    functionSourceFile: /src/pdns/pdns/digests.hh
    functionUses: 1
    functionsReached:
    - pdns::hash
    - EVP_md5
    - std::runtime_error
    linkageType: ''
    returnType: std::string
    signature: std::string md5(const std::string& input)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: EVP_sha1
      Src: /src/pdns/pdns/digests.hh:80,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/digests.hh:82,1
    - Dst: pdns::hash
      Src: /src/pdns/pdns/digests.hh:85,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - ' input'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 78
    functionDepth: 0
    functionLinenumber: 78
    functionLinenumberEnd: 86
    functionName: pdns::sha1
    functionSourceFile: /src/pdns/pdns/digests.hh
    functionUses: 1
    functionsReached:
    - EVP_sha1
    - pdns::hash
    - std::runtime_error
    linkageType: ''
    returnType: std::string
    signature: std::string sha1(const std::string& input)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 64
    functionDepth: 0
    functionLinenumber: 64
    functionLinenumberEnd: 64
    functionName: AuthZoneCache::size
    functionSourceFile: /src/pdns/pdns/auth-zonecache.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: size_t size()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 66
    functionDepth: 0
    functionLinenumber: 66
    functionLinenumberEnd: 70
    functionName: AuthZoneCache::getRefreshInterval
    functionSourceFile: /src/pdns/pdns/auth-zonecache.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t getRefreshInterval() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - interval
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 72
    functionDepth: 0
    functionLinenumber: 72
    functionLinenumberEnd: 75
    functionName: AuthZoneCache::setRefreshInterval
    functionSourceFile: /src/pdns/pdns/auth-zonecache.hh
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setRefreshInterval(uint32_t interval)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - log
    argTypes:
    - Logr::log_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 81
    functionDepth: 0
    functionLinenumber: 81
    functionLinenumberEnd: 84
    functionName: AuthZoneCache::setSLog
    functionSourceFile: /src/pdns/pdns/auth-zonecache.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setSLog(Logr::log_t log)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 99
    functionDepth: 0
    functionLinenumber: 99
    functionLinenumberEnd: 99
    functionName: AuthZoneCache::MapCombo
    functionSourceFile: /src/pdns/pdns/auth-zonecache.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void MapCombo()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 100
    functionDepth: 0
    functionLinenumber: 100
    functionLinenumberEnd: 100
    functionName: ~MapCombo()
    functionSourceFile: /src/pdns/pdns/auth-zonecache.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~MapCombo()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 101
    functionDepth: 0
    functionLinenumber: 101
    functionLinenumberEnd: 101
    functionName: AuthZoneCache::MapCombo
    functionSourceFile: /src/pdns/pdns/auth-zonecache.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void MapCombo(const MapCombo&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 102
    functionDepth: 0
    functionLinenumber: 102
    functionLinenumberEnd: 102
    functionName: '& operator=(const MapCombo&)'
    functionSourceFile: /src/pdns/pdns/auth-zonecache.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: MapCombo
    signature: MapCombo & operator=(const MapCombo&)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash
      Src: /src/pdns/pdns/auth-zonecache.hh:110,1
    - Dst: AuthZoneCache::size
      Src: /src/pdns/pdns/auth-zonecache.hh:110,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' zone'
    argTypes:
    - ZoneName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 111
      start: 108
    functionDepth: 1
    functionLinenumber: 108
    functionLinenumberEnd: 111
    functionName: AuthZoneCache::getMapIndex
    functionSourceFile: /src/pdns/pdns/auth-zonecache.hh
    functionUses: 0
    functionsReached:
    - AuthZoneCache::size
    - hash
    linkageType: ''
    returnType: size_t
    signature: size_t getMapIndex(const ZoneName& zone)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getMapIndex
      Src: /src/pdns/pdns/auth-zonecache.hh:114,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' qname'
    argTypes:
    - ZoneName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 115
      start: 112
    functionDepth: 0
    functionLinenumber: 112
    functionLinenumberEnd: 115
    functionName: '& getMap(const ZoneName& qname)'
    functionSourceFile: /src/pdns/pdns/auth-zonecache.hh
    functionUses: 0
    functionsReached:
    - getMapIndex
    linkageType: ''
    returnType: MapCombo
    signature: MapCombo & getMap(const ZoneName& qname)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: list_of
      Src: /src/pdns/pdns/test-sha_hh.cc:29,1
    - Dst: case_t
      Src: /src/pdns/pdns/test-sha_hh.cc:29,1
    - Dst: case_t
      Src: /src/pdns/pdns/test-sha_hh.cc:29,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-sha_hh.cc:32,1
    - Dst: makeHexDump
      Src: /src/pdns/pdns/test-sha_hh.cc:32,1
    - Dst: pdns::sha1sum
      Src: /src/pdns/pdns/test-sha_hh.cc:32,1
    - Dst: get
      Src: /src/pdns/pdns/test-sha_hh.cc:32,1
    - Dst: get
      Src: /src/pdns/pdns/test-sha_hh.cc:32,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 34
      start: 27
    functionDepth: 0
    functionLinenumber: 27
    functionLinenumberEnd: 34
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-sha_hh.cc
    functionUses: 0
    functionsReached:
    - pdns::sha1sum
    - case_t
    - BOOST_CHECK_EQUAL
    - get
    - makeHexDump
    - list_of
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_sha1)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: list_of
      Src: /src/pdns/pdns/test-sha_hh.cc:38,1
    - Dst: case_t
      Src: /src/pdns/pdns/test-sha_hh.cc:38,1
    - Dst: case_t
      Src: /src/pdns/pdns/test-sha_hh.cc:38,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-sha_hh.cc:41,1
    - Dst: makeHexDump
      Src: /src/pdns/pdns/test-sha_hh.cc:41,1
    - Dst: pdns::sha256sum
      Src: /src/pdns/pdns/test-sha_hh.cc:41,1
    - Dst: get
      Src: /src/pdns/pdns/test-sha_hh.cc:41,1
    - Dst: get
      Src: /src/pdns/pdns/test-sha_hh.cc:41,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 36
    functionDepth: 0
    functionLinenumber: 36
    functionLinenumberEnd: 43
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-sha_hh.cc
    functionUses: 0
    functionsReached:
    - case_t
    - BOOST_CHECK_EQUAL
    - get
    - pdns::sha256sum
    - makeHexDump
    - list_of
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_sha256)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: list_of
      Src: /src/pdns/pdns/test-sha_hh.cc:47,1
    - Dst: case_t
      Src: /src/pdns/pdns/test-sha_hh.cc:47,1
    - Dst: case_t
      Src: /src/pdns/pdns/test-sha_hh.cc:47,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-sha_hh.cc:50,1
    - Dst: makeHexDump
      Src: /src/pdns/pdns/test-sha_hh.cc:50,1
    - Dst: pdns::sha384sum
      Src: /src/pdns/pdns/test-sha_hh.cc:50,1
    - Dst: get
      Src: /src/pdns/pdns/test-sha_hh.cc:50,1
    - Dst: get
      Src: /src/pdns/pdns/test-sha_hh.cc:50,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 45
    functionDepth: 0
    functionLinenumber: 45
    functionLinenumberEnd: 52
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-sha_hh.cc
    functionUses: 0
    functionsReached:
    - case_t
    - BOOST_CHECK_EQUAL
    - pdns::sha384sum
    - get
    - makeHexDump
    - list_of
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_sha384)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: list_of
      Src: /src/pdns/pdns/test-sha_hh.cc:56,1
    - Dst: case_t
      Src: /src/pdns/pdns/test-sha_hh.cc:56,1
    - Dst: case_t
      Src: /src/pdns/pdns/test-sha_hh.cc:56,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-sha_hh.cc:59,1
    - Dst: makeHexDump
      Src: /src/pdns/pdns/test-sha_hh.cc:59,1
    - Dst: pdns::sha512sum
      Src: /src/pdns/pdns/test-sha_hh.cc:59,1
    - Dst: get
      Src: /src/pdns/pdns/test-sha_hh.cc:59,1
    - Dst: get
      Src: /src/pdns/pdns/test-sha_hh.cc:59,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 54
    functionDepth: 0
    functionLinenumber: 54
    functionLinenumberEnd: 61
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-sha_hh.cc
    functionUses: 0
    functionsReached:
    - pdns::sha512sum
    - case_t
    - BOOST_CHECK_EQUAL
    - get
    - makeHexDump
    - list_of
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_sha512)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::Request::Request
      Src: /src/pdns/pdns/fuzz_yahttp.cc:33,1
    - Dst: YaHTTP::AsyncRequestLoader::initialize
      Src: /src/pdns/pdns/fuzz_yahttp.cc:35,1
    - Dst: YaHTTP::AsyncRequestLoader::feed
      Src: /src/pdns/pdns/fuzz_yahttp.cc:36,1
    - Dst: std::string
      Src: /src/pdns/pdns/fuzz_yahttp.cc:36,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/fuzz_yahttp.cc:36,1
    - Dst: YaHTTP::AsyncRequestLoader::finalize
      Src: /src/pdns/pdns/fuzz_yahttp.cc:38,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - data
    - size
    argTypes:
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 29
    functionDepth: 0
    functionLinenumber: 29
    functionLinenumberEnd: 49
    functionName: LLVMFuzzerTestOneInput
    functionSourceFile: /src/pdns/pdns/fuzz_yahttp.cc
    functionUses: 1
    functionsReached:
    - YaHTTP::AsyncRequestLoader::initialize
    - YaHTTP::AsyncRequestLoader::feed
    - YaHTTP::Request::Request
    - reinterpret_cast<const char*>
    - YaHTTP::AsyncRequestLoader::finalize
    - std::string
    linkageType: ''
    returnType: int
    signature: int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: close
      Src: /src/pdns/pdns/epollmplexer.cc:43,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 40
    functionDepth: 0
    functionLinenumber: 40
    functionLinenumberEnd: 45
    functionName: ~EpollFDMultiplexer() override
    functionSourceFile: /src/pdns/pdns/epollmplexer.cc
    functionUses: 0
    functionsReached:
    - close
    linkageType: ''
    returnType: void
    signature: void ~EpollFDMultiplexer() override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 54
    functionDepth: 0
    functionLinenumber: 54
    functionLinenumberEnd: 57
    functionName: EpollFDMultiplexer::getName
    functionSourceFile: /src/pdns/pdns/epollmplexer.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: string
    signature: string getName() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EpollFDMultiplexer::EpollFDMultiplexer
      Src: /src/pdns/pdns/epollmplexer.cc:66,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - maxEventsHint
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 64
    functionDepth: 0
    functionLinenumber: 64
    functionLinenumberEnd: 67
    functionName: makeEpoll
    functionSourceFile: /src/pdns/pdns/epollmplexer.cc
    functionUses: 0
    functionsReached:
    - EpollFDMultiplexer::EpollFDMultiplexer
    linkageType: ''
    returnType: FDMultiplexer
    signature: FDMultiplexer * makeEpoll(unsigned int maxEventsHint)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: FDMultiplexer::getMultiplexerMap
      Src: /src/pdns/pdns/epollmplexer.cc:73,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 71
    functionDepth: 0
    functionLinenumber: 71
    functionLinenumberEnd: 74
    functionName: EpollRegisterOurselves
    functionSourceFile: /src/pdns/pdns/epollmplexer.cc
    functionUses: 0
    functionsReached:
    - FDMultiplexer::getMultiplexerMap
    linkageType: ''
    returnType: void
    signature: void EpollRegisterOurselves()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: epoll_create
      Src: /src/pdns/pdns/epollmplexer.cc:80,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/epollmplexer.cc:80,1
    - Dst: FDMultiplexerException
      Src: /src/pdns/pdns/epollmplexer.cc:82,1
    - Dst: stringerror
      Src: /src/pdns/pdns/epollmplexer.cc:82,1
    - Dst: socket
      Src: /src/pdns/pdns/epollmplexer.cc:84,1
    - Dst: addReadFD
      Src: /src/pdns/pdns/epollmplexer.cc:91,1
    - Dst: removeReadFD
      Src: /src/pdns/pdns/epollmplexer.cc:92,1
    - Dst: close
      Src: /src/pdns/pdns/epollmplexer.cc:93,1
    - Dst: close
      Src: /src/pdns/pdns/epollmplexer.cc:97,1
    - Dst: close
      Src: /src/pdns/pdns/epollmplexer.cc:98,1
    - Dst: FDMultiplexerException
      Src: /src/pdns/pdns/epollmplexer.cc:99,1
    - Dst: string
      Src: /src/pdns/pdns/epollmplexer.cc:99,1
    - Dst: what
      Src: /src/pdns/pdns/epollmplexer.cc:99,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 1
    argNames:
    - maxEventsHint
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 77
    functionDepth: 0
    functionLinenumber: 77
    functionLinenumberEnd: 101
    functionName: EpollFDMultiplexer::EpollFDMultiplexer
    functionSourceFile: /src/pdns/pdns/epollmplexer.cc
    functionUses: 1
    functionsReached:
    - socket
    - addReadFD
    - stringerror
    - what
    - string
    - epoll_create
    - removeReadFD
    - FDMultiplexerException
    - close
    - static_cast<int>
    linkageType: ''
    returnType: void
    signature: void EpollFDMultiplexer::EpollFDMultiplexer(unsigned int maxEventsHint)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/epollmplexer.cc:114,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - kind
    argTypes:
    - FDMultiplexer::EventKind
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 115
      start: 103
    functionDepth: 0
    functionLinenumber: 103
    functionLinenumberEnd: 115
    functionName: convertEventKind
    functionSourceFile: /src/pdns/pdns/epollmplexer.cc
    functionUses: 4
    functionsReached:
    - std::runtime_error
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t convertEventKind(FDMultiplexer::EventKind kind)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: convertEventKind
      Src: /src/pdns/pdns/epollmplexer.cc:121,1
    - Dst: epoll_ctl
      Src: /src/pdns/pdns/epollmplexer.cc:126,1
    - Dst: FDMultiplexerException
      Src: /src/pdns/pdns/epollmplexer.cc:127,1
    - Dst: stringerror
      Src: /src/pdns/pdns/epollmplexer.cc:127,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - fd
    - kind
    argTypes:
    - int
    - FDMultiplexer::EventKind
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 129
      start: 117
    functionDepth: 0
    functionLinenumber: 117
    functionLinenumberEnd: 129
    functionName: EpollFDMultiplexer::addFD
    functionSourceFile: /src/pdns/pdns/epollmplexer.cc
    functionUses: 0
    functionsReached:
    - FDMultiplexerException
    - epoll_ctl
    - stringerror
    - convertEventKind
    linkageType: ''
    returnType: void
    signature: void EpollFDMultiplexer::addFD(int fd, FDMultiplexer::EventKind kind)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: epoll_ctl
      Src: /src/pdns/pdns/epollmplexer.cc:137,1
    - Dst: FDMultiplexerException
      Src: /src/pdns/pdns/epollmplexer.cc:138,1
    - Dst: stringerror
      Src: /src/pdns/pdns/epollmplexer.cc:138,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - fd
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 131
    functionDepth: 0
    functionLinenumber: 131
    functionLinenumberEnd: 140
    functionName: EpollFDMultiplexer::removeFD
    functionSourceFile: /src/pdns/pdns/epollmplexer.cc
    functionUses: 0
    functionsReached:
    - FDMultiplexerException
    - epoll_ctl
    - stringerror
    linkageType: ''
    returnType: void
    signature: void EpollFDMultiplexer::removeFD(int fd, FDMultiplexer::EventKind)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: convertEventKind
      Src: /src/pdns/pdns/epollmplexer.cc:145,1
    - Dst: epoll_ctl
      Src: /src/pdns/pdns/epollmplexer.cc:149,1
    - Dst: FDMultiplexerException
      Src: /src/pdns/pdns/epollmplexer.cc:150,1
    - Dst: stringerror
      Src: /src/pdns/pdns/epollmplexer.cc:150,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - fd
    - to
    argTypes:
    - int
    - FDMultiplexer::EventKind
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 152
      start: 142
    functionDepth: 0
    functionLinenumber: 142
    functionLinenumberEnd: 152
    functionName: EpollFDMultiplexer::alterFD
    functionSourceFile: /src/pdns/pdns/epollmplexer.cc
    functionUses: 0
    functionsReached:
    - FDMultiplexerException
    - epoll_ctl
    - stringerror
    - convertEventKind
    linkageType: ''
    returnType: void
    signature: void EpollFDMultiplexer::alterFD(int fd, FDMultiplexer::EventKind,
      FDMultiplexer::EventKind to)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: epoll_wait
      Src: /src/pdns/pdns/epollmplexer.cc:156,1
    - Dst: data
      Src: /src/pdns/pdns/epollmplexer.cc:156,1
    - Dst: size
      Src: /src/pdns/pdns/epollmplexer.cc:156,1
    - Dst: FDMultiplexerException
      Src: /src/pdns/pdns/epollmplexer.cc:159,1
    - Dst: stringerror
      Src: /src/pdns/pdns/epollmplexer.cc:159,1
    - Dst: push_back
      Src: /src/pdns/pdns/epollmplexer.cc:163,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 7
    argCount: 2
    argNames:
    - ' fds'
    - timeout
    argTypes:
    - std::vector<int>
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 165
      start: 154
    functionDepth: 0
    functionLinenumber: 154
    functionLinenumberEnd: 165
    functionName: EpollFDMultiplexer::getAvailableFDs
    functionSourceFile: /src/pdns/pdns/epollmplexer.cc
    functionUses: 0
    functionsReached:
    - epoll_wait
    - push_back
    - stringerror
    - size
    - data
    - FDMultiplexerException
    linkageType: ''
    returnType: void
    signature: void EpollFDMultiplexer::getAvailableFDs(std::vector<int>& fds, int
      timeout)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: epoll_wait
      Src: /src/pdns/pdns/epollmplexer.cc:171,1
    - Dst: data
      Src: /src/pdns/pdns/epollmplexer.cc:171,1
    - Dst: size
      Src: /src/pdns/pdns/epollmplexer.cc:171,1
    - Dst: gettimeofday
      Src: /src/pdns/pdns/epollmplexer.cc:172,1
    - Dst: FDMultiplexerException
      Src: /src/pdns/pdns/epollmplexer.cc:175,1
    - Dst: stringerror
      Src: /src/pdns/pdns/epollmplexer.cc:175,1
    - Dst: find
      Src: /src/pdns/pdns/epollmplexer.cc:186,1
    - Dst: end
      Src: /src/pdns/pdns/epollmplexer.cc:187,1
    - Dst: d_callback
      Src: /src/pdns/pdns/epollmplexer.cc:188,1
    - Dst: find
      Src: /src/pdns/pdns/epollmplexer.cc:194,1
    - Dst: end
      Src: /src/pdns/pdns/epollmplexer.cc:195,1
    - Dst: d_callback
      Src: /src/pdns/pdns/epollmplexer.cc:196,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 23
    argCount: 2
    argNames:
    - now
    - timeout
    argTypes:
    - struct timeval*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 203
      start: 167
    functionDepth: 0
    functionLinenumber: 167
    functionLinenumberEnd: 203
    functionName: EpollFDMultiplexer::run
    functionSourceFile: /src/pdns/pdns/epollmplexer.cc
    functionUses: 0
    functionsReached:
    - epoll_wait
    - stringerror
    - end
    - size
    - d_callback
    - gettimeofday
    - data
    - FDMultiplexerException
    - find
    linkageType: ''
    returnType: int
    signature: int EpollFDMultiplexer::run(struct timeval* now, int timeout)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: funcparam_t_cast<Socket*>
      Src: /src/pdns/pdns/epollmplexer.cc:209,1
    - Dst: Socket*::recvFrom
      Src: /src/pdns/pdns/epollmplexer.cc:212,1
    - Dst: string::size
      Src: /src/pdns/pdns/epollmplexer.cc:213,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - fd
    - ' parameter'
    argTypes:
    - int
    - funcparam_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 214
      start: 206
    functionDepth: 0
    functionLinenumber: 206
    functionLinenumberEnd: 214
    functionName: acceptData
    functionSourceFile: /src/pdns/pdns/epollmplexer.cc
    functionUses: 0
    functionsReached:
    - string::size
    - funcparam_t_cast<Socket*>
    - Socket*::recvFrom
    linkageType: ''
    returnType: void
    signature: void acceptData(int fd, funcparam_t& parameter)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Socket::bind
      Src: /src/pdns/pdns/epollmplexer.cc:222,1
    - Dst: EpollFDMultiplexer::EpollFDMultiplexer
      Src: /src/pdns/pdns/epollmplexer.cc:224,1
    - Dst: EpollFDMultiplexer::addReadFD
      Src: /src/pdns/pdns/epollmplexer.cc:226,1
    - Dst: Socket::getHandle
      Src: /src/pdns/pdns/epollmplexer.cc:226,1
    - Dst: EpollFDMultiplexer::run
      Src: /src/pdns/pdns/epollmplexer.cc:229,1
    - Dst: EpollFDMultiplexer::removeReadFD
      Src: /src/pdns/pdns/epollmplexer.cc:231,1
    - Dst: Socket::getHandle
      Src: /src/pdns/pdns/epollmplexer.cc:231,1
    - Dst: EpollFDMultiplexer::removeReadFD
      Src: /src/pdns/pdns/epollmplexer.cc:232,1
    - Dst: Socket::getHandle
      Src: /src/pdns/pdns/epollmplexer.cc:232,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 233
      start: 217
    functionDepth: 0
    functionLinenumber: 217
    functionLinenumberEnd: 233
    functionName: main
    functionSourceFile: /src/pdns/pdns/epollmplexer.cc
    functionUses: 17
    functionsReached:
    - EpollFDMultiplexer::EpollFDMultiplexer
    - Socket::getHandle
    - EpollFDMultiplexer::removeReadFD
    - EpollFDMultiplexer::addReadFD
    - EpollFDMultiplexer::run
    - Socket::bind
    linkageType: ''
    returnType: int
    signature: int main()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 61
    functionDepth: 0
    functionLinenumber: 61
    functionLinenumberEnd: 61
    functionName: ~IPObfuscator()
    functionSourceFile: /src/pdns/pdns/dnswasher.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~IPObfuscator()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 69
    functionDepth: 0
    functionLinenumber: 69
    functionLinenumberEnd: 71
    functionName: IPSeqObfuscator::IPSeqObfuscator
    functionSourceFile: /src/pdns/pdns/dnswasher.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void IPSeqObfuscator()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::make_unique<IPSeqObfuscator>
      Src: /src/pdns/pdns/dnswasher.cc:75,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 73
    functionDepth: 0
    functionLinenumber: 73
    functionLinenumberEnd: 76
    functionName: IPSeqObfuscator::make
    functionSourceFile: /src/pdns/pdns/dnswasher.cc
    functionUses: 0
    functionsReached:
    - std::make_unique<IPSeqObfuscator>
    linkageType: ''
    returnType: std::unique_ptr<IPObfuscator>
    signature: std::unique_ptr<IPObfuscator> make()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: count
      Src: /src/pdns/pdns/dnswasher.cc:80,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - orig
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 78
    functionDepth: 0
    functionLinenumber: 78
    functionLinenumberEnd: 85
    functionName: IPSeqObfuscator::obf4
    functionSourceFile: /src/pdns/pdns/dnswasher.cc
    functionUses: 0
    functionsReached:
    - count
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t obf4(uint32_t orig) override
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: count
      Src: /src/pdns/pdns/dnswasher.cc:90,1
    - Dst: htonl
      Src: /src/pdns/pdns/dnswasher.cc:97,1
    - Dst: memset
      Src: /src/pdns/pdns/dnswasher.cc:98,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnswasher.cc:99,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - ' orig'
    argTypes:
    - struct in6_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 87
    functionDepth: 0
    functionLinenumber: 87
    functionLinenumberEnd: 101
    functionName: IPSeqObfuscator::obf6
    functionSourceFile: /src/pdns/pdns/dnswasher.cc
    functionUses: 0
    functionsReached:
    - htonl
    - memset
    - memcpy
    - count
    linkageType: ''
    returnType: struct in6_addr
    signature: struct in6_addr obf6(const struct in6_addr& orig) override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/pdns/pdns/dnswasher.cc:110,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - struct in6_addr
    - struct in6_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 111
      start: 108
    functionDepth: 0
    functionLinenumber: 108
    functionLinenumberEnd: 111
    functionName: operator()(const struct in6_addr&a , const struct in6_addr&b) const
    functionSourceFile: /src/pdns/pdns/dnswasher.cc
    functionUses: 0
    functionsReached:
    - memcmp
    linkageType: ''
    returnType: bool
    signature: bool operator()(const struct in6_addr&a , const struct in6_addr&b)
      const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnswasher.cc:126,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnswasher.cc:127,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 2
    argNames:
    - ' key'
    - decrypt
    argTypes:
    - std::string
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 129
      start: 124
    functionDepth: 0
    functionLinenumber: 124
    functionLinenumberEnd: 129
    functionName: IPCipherObfuscator::IPCipherObfuscator
    functionSourceFile: /src/pdns/pdns/dnswasher.cc
    functionUses: 0
    functionsReached:
    - size
    - std::runtime_error
    linkageType: ''
    returnType: void
    signature: void IPCipherObfuscator(const std::string& key, bool decrypt)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::make_unique<IPCipherObfuscator>
      Src: /src/pdns/pdns/dnswasher.cc:133,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' key'
    - decrypt
    argTypes:
    - std::string
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 134
      start: 131
    functionDepth: 0
    functionLinenumber: 131
    functionLinenumberEnd: 134
    functionName: IPCipherObfuscator::make
    functionSourceFile: /src/pdns/pdns/dnswasher.cc
    functionUses: 0
    functionsReached:
    - std::make_unique<IPCipherObfuscator>
    linkageType: ''
    returnType: std::unique_ptr<IPObfuscator>
    signature: std::unique_ptr<IPObfuscator> make(const std::string& key, bool decrypt)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: decryptCA
      Src: /src/pdns/pdns/dnswasher.cc:141,1
    - Dst: encryptCA
      Src: /src/pdns/pdns/dnswasher.cc:141,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - orig
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 144
      start: 136
    functionDepth: 0
    functionLinenumber: 136
    functionLinenumberEnd: 144
    functionName: IPCipherObfuscator::obf4
    functionSourceFile: /src/pdns/pdns/dnswasher.cc
    functionUses: 0
    functionsReached:
    - decryptCA
    - encryptCA
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t obf4(uint32_t orig) override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: decryptCA
      Src: /src/pdns/pdns/dnswasher.cc:151,1
    - Dst: encryptCA
      Src: /src/pdns/pdns/dnswasher.cc:151,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - ' orig'
    argTypes:
    - struct in6_addr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 153
      start: 146
    functionDepth: 0
    functionLinenumber: 146
    functionLinenumberEnd: 153
    functionName: IPCipherObfuscator::obf6
    functionSourceFile: /src/pdns/pdns/dnswasher.cc
    functionUses: 0
    functionsReached:
    - decryptCA
    - encryptCA
    linkageType: ''
    returnType: struct in6_addr
    signature: struct in6_addr obf6(const struct in6_addr& orig) override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 163
      start: 161
    functionDepth: 0
    functionLinenumber: 161
    functionLinenumberEnd: 163
    functionName: usage
    functionSourceFile: /src/pdns/pdns/dnswasher.cc
    functionUses: 101
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void usage()
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: po::options_description::add_options
      Src: /src/pdns/pdns/dnswasher.cc:169,1
    - Dst: po::value<string>
      Src: /src/pdns/pdns/dnswasher.cc:172,1
    - Dst: po::value<string>
      Src: /src/pdns/pdns/dnswasher.cc:173,1
    - Dst: po::options_description::add_options
      Src: /src/pdns/pdns/dnswasher.cc:178,1
    - Dst: po::value<vector<string>>
      Src: /src/pdns/pdns/dnswasher.cc:179,1
    - Dst: po::value<string>
      Src: /src/pdns/pdns/dnswasher.cc:180,1
    - Dst: po::options_description::add
      Src: /src/pdns/pdns/dnswasher.cc:183,1
    - Dst: po::positional_options_description::add
      Src: /src/pdns/pdns/dnswasher.cc:185,1
    - Dst: po::positional_options_description::add
      Src: /src/pdns/pdns/dnswasher.cc:186,1
    - Dst: pdns::stat_t_trait::store
      Src: /src/pdns/pdns/dnswasher.cc:188,1
    - Dst: po::command_line_parser
      Src: /src/pdns/pdns/dnswasher.cc:188,1
    - Dst: pdns::channel::Notifier::notify
      Src: /src/pdns/pdns/dnswasher.cc:189,1
    - Dst: count
      Src: /src/pdns/pdns/dnswasher.cc:191,1
    - Dst: usage
      Src: /src/pdns/pdns/dnswasher.cc:192,1
    - Dst: exit
      Src: /src/pdns/pdns/dnswasher.cc:194,1
    - Dst: count
      Src: /src/pdns/pdns/dnswasher.cc:197,1
    - Dst: exit
      Src: /src/pdns/pdns/dnswasher.cc:199,1
    - Dst: count
      Src: /src/pdns/pdns/dnswasher.cc:202,1
    - Dst: usage
      Src: /src/pdns/pdns/dnswasher.cc:204,1
    - Dst: exit
      Src: /src/pdns/pdns/dnswasher.cc:205,1
    - Dst: count
      Src: /src/pdns/pdns/dnswasher.cc:208,1
    - Dst: as
      Src: /src/pdns/pdns/dnswasher.cc:210,1
    - Dst: count
      Src: /src/pdns/pdns/dnswasher.cc:213,1
    - Dst: count
      Src: /src/pdns/pdns/dnswasher.cc:213,1
    - Dst: IPSeqObfuscator::make
      Src: /src/pdns/pdns/dnswasher.cc:214,1
    - Dst: count
      Src: /src/pdns/pdns/dnswasher.cc:215,1
    - Dst: count
      Src: /src/pdns/pdns/dnswasher.cc:215,1
    - Dst: B64Decode
      Src: /src/pdns/pdns/dnswasher.cc:217,1
    - Dst: as
      Src: /src/pdns/pdns/dnswasher.cc:217,1
    - Dst: exit
      Src: /src/pdns/pdns/dnswasher.cc:219,1
    - Dst: IPCipherObfuscator::make
      Src: /src/pdns/pdns/dnswasher.cc:221,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnswasher.cc:221,1
    - Dst: count
      Src: /src/pdns/pdns/dnswasher.cc:223,1
    - Dst: count
      Src: /src/pdns/pdns/dnswasher.cc:223,1
    - Dst: makeIPCipherKey
      Src: /src/pdns/pdns/dnswasher.cc:224,1
    - Dst: as
      Src: /src/pdns/pdns/dnswasher.cc:224,1
    - Dst: IPCipherObfuscator::make
      Src: /src/pdns/pdns/dnswasher.cc:226,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnswasher.cc:226,1
    - Dst: exit
      Src: /src/pdns/pdns/dnswasher.cc:230,1
    - Dst: as
      Src: /src/pdns/pdns/dnswasher.cc:233,1
    - Dst: PcapPacketWriter::setPPR
      Src: /src/pdns/pdns/dnswasher.cc:235,1
    - Dst: PcapPacketReader::getUDPPacket
      Src: /src/pdns/pdns/dnswasher.cc:237,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnswasher.cc:238,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnswasher.cc:238,1
    - Dst: std::unique_ptr::obf4
      Src: /src/pdns/pdns/dnswasher.cc:246,1
    - Dst: std::unique_ptr::obf4
      Src: /src/pdns/pdns/dnswasher.cc:248,1
    - Dst: std::unique_ptr::obf6
      Src: /src/pdns/pdns/dnswasher.cc:256,1
    - Dst: std::unique_ptr::obf6
      Src: /src/pdns/pdns/dnswasher.cc:258,1
    - Dst: PcapPacketWriter::write
      Src: /src/pdns/pdns/dnswasher.cc:261,1
    - Dst: what
      Src: /src/pdns/pdns/dnswasher.cc:270,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 59
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 271
      start: 165
    functionDepth: 1
    functionLinenumber: 165
    functionLinenumberEnd: 271
    functionName: main
    functionSourceFile: /src/pdns/pdns/dnswasher.cc
    functionUses: 17
    functionsReached:
    - PcapPacketWriter::setPPR
    - PcapPacketReader::getUDPPacket
    - ntohs
    - IPCipherObfuscator::make
    - po::positional_options_description::add
    - B64Decode
    - pdns::channel::Notifier::notify
    - usage
    - std::unique_ptr::obf4
    - PcapPacketWriter::write
    - po::options_description::add
    - exit
    - po::options_description::add_options
    - po::value<vector<string>>
    - std::move
    - std::unique_ptr::obf6
    - IPSeqObfuscator::make
    - count
    - makeIPCipherKey
    - what
    - pdns::stat_t_trait::store
    - as
    - po::command_line_parser
    - po::value<string>
    linkageType: ''
    returnType: int
    signature: int main(int argc, char** argv)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: exit
      Src: /src/pdns/pdns/dnswasher.cc:277,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 278
      start: 274
    functionDepth: 0
    functionLinenumber: 274
    functionLinenumberEnd: 278
    functionName: main
    functionSourceFile: /src/pdns/pdns/dnswasher.cc
    functionUses: 17
    functionsReached:
    - exit
    linkageType: ''
    returnType: int
    signature: int main()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/ednsextendederror.cc:28,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/ednsextendederror.cc:31,1
    - Dst: at
      Src: /src/pdns/pdns/ednsextendederror.cc:31,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/ednsextendederror.cc:31,1
    - Dst: at
      Src: /src/pdns/pdns/ednsextendederror.cc:31,1
    - Dst: size
      Src: /src/pdns/pdns/ednsextendederror.cc:33,1
    - Dst: std::string
      Src: /src/pdns/pdns/ednsextendederror.cc:34,1
    - Dst: at
      Src: /src/pdns/pdns/ednsextendederror.cc:34,1
    - Dst: size
      Src: /src/pdns/pdns/ednsextendederror.cc:34,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - ' option'
    - ' eee'
    argTypes:
    - std::string_view
    - EDNSExtendedError
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 26
    functionDepth: 0
    functionLinenumber: 26
    functionLinenumberEnd: 38
    functionName: getEDNSExtendedErrorOptFromStringView
    functionSourceFile: /src/pdns/pdns/ednsextendederror.cc
    functionUses: 0
    functionsReached:
    - std::string
    - at
    - size
    - static_cast<uint8_t>
    linkageType: ''
    returnType: bool
    signature: bool getEDNSExtendedErrorOptFromStringView(const std::string_view&
      option, EDNSExtendedError& eee)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getEDNSExtendedErrorOptFromStringView
      Src: /src/pdns/pdns/ednsextendederror.cc:42,1
    - Dst: std::string_view
      Src: /src/pdns/pdns/ednsextendederror.cc:42,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' option'
    - ' eee'
    argTypes:
    - string
    - EDNSExtendedError
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 40
    functionDepth: 0
    functionLinenumber: 40
    functionLinenumberEnd: 43
    functionName: getEDNSExtendedErrorOptFromString
    functionSourceFile: /src/pdns/pdns/ednsextendederror.cc
    functionUses: 1
    functionsReached:
    - std::string_view
    - getEDNSExtendedErrorOptFromStringView
    linkageType: ''
    returnType: bool
    signature: bool getEDNSExtendedErrorOptFromString(const string& option, EDNSExtendedError&
      eee)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getEDNSExtendedErrorOptFromStringView
      Src: /src/pdns/pdns/ednsextendederror.cc:47,1
    - Dst: std::string_view
      Src: /src/pdns/pdns/ednsextendederror.cc:47,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - option
    - len
    - ' eee'
    argTypes:
    - char*
    - unsigned int
    - EDNSExtendedError
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 45
    functionDepth: 0
    functionLinenumber: 45
    functionLinenumberEnd: 48
    functionName: getEDNSExtendedErrorOptFromString
    functionSourceFile: /src/pdns/pdns/ednsextendederror.cc
    functionUses: 1
    functionsReached:
    - std::string_view
    - getEDNSExtendedErrorOptFromStringView
    linkageType: ''
    returnType: bool
    signature: bool getEDNSExtendedErrorOptFromString(const char* option, unsigned
      int len, EDNSExtendedError& eee)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: extraText::size
      Src: /src/pdns/pdns/ednsextendederror.cc:52,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/ednsextendederror.cc:52,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/ednsextendederror.cc:52,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/ednsextendederror.cc:53,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/ednsextendederror.cc:53,1
    - Dst: extraText::size
      Src: /src/pdns/pdns/ednsextendederror.cc:53,1
    - Dst: string::reserve
      Src: /src/pdns/pdns/ednsextendederror.cc:57,1
    - Dst: extraText::size
      Src: /src/pdns/pdns/ednsextendederror.cc:57,1
    - Dst: string::resize
      Src: /src/pdns/pdns/ednsextendederror.cc:58,1
    - Dst: static_cast<char>
      Src: /src/pdns/pdns/ednsextendederror.cc:60,1
    - Dst: static_cast<uint16_t>
      Src: /src/pdns/pdns/ednsextendederror.cc:60,1
    - Dst: static_cast<char>
      Src: /src/pdns/pdns/ednsextendederror.cc:61,1
    - Dst: static_cast<uint16_t>
      Src: /src/pdns/pdns/ednsextendederror.cc:61,1
    - Dst: string::append
      Src: /src/pdns/pdns/ednsextendederror.cc:62,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - ' eee'
    argTypes:
    - EDNSExtendedError
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 50
    functionDepth: 1
    functionLinenumber: 50
    functionLinenumberEnd: 65
    functionName: makeEDNSExtendedErrorOptString
    functionSourceFile: /src/pdns/pdns/ednsextendederror.cc
    functionUses: 0
    functionsReached:
    - pdns::max
    - string::resize
    - static_cast<size_t>
    - string::reserve
    - std::to_string
    - std::runtime_error
    - extraText::size
    - string::append
    - static_cast<uint16_t>
    - static_cast<char>
    linkageType: ''
    returnType: string
    signature: string makeEDNSExtendedErrorOptString(const EDNSExtendedError& eee)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - s
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 28
      start: 27
    functionDepth: 0
    functionLinenumber: 27
    functionLinenumberEnd: 28
    functionName: BINARY
    functionSourceFile: /src/pdns/pdns/test-dnsrecords_cc.cc
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BINARY(s)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 11
    argNames:
    - (
    - type
    - ','
    - inval
    - ','
    - zoneval
    - ','
    - lineval
    - ','
    - broken
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 36
      start: 35
    functionDepth: 0
    functionLinenumber: 35
    functionLinenumberEnd: 36
    functionName: _CASE_L
    functionSourceFile: /src/pdns/pdns/test-dnsrecords_cc.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: _CASE_L(type, inval, zoneval, lineval, broken)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - type
    - ','
    - inval
    - ','
    - zoneval
    - ','
    - lineval
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 36
    functionDepth: 0
    functionLinenumber: 36
    functionLinenumberEnd: 37
    functionName: CASE_L
    functionSourceFile: /src/pdns/pdns/test-dnsrecords_cc.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CASE_L(type, inval, zoneval, lineval)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - type
    - ','
    - zoneval
    - ','
    - lineval
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 37
    functionDepth: 0
    functionLinenumber: 37
    functionLinenumberEnd: 38
    functionName: CASE_S
    functionSourceFile: /src/pdns/pdns/test-dnsrecords_cc.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CASE_S(type, zoneval, lineval)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - type
    - ','
    - inval
    - ','
    - zoneval
    - ','
    - lineval
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 39
      start: 38
    functionDepth: 0
    functionLinenumber: 38
    functionLinenumberEnd: 39
    functionName: BROKEN_CASE_L
    functionSourceFile: /src/pdns/pdns/test-dnsrecords_cc.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BROKEN_CASE_L(type, inval, zoneval, lineval)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - type
    - ','
    - zoneval
    - ','
    - lineval
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 39
    functionDepth: 0
    functionLinenumber: 39
    functionLinenumberEnd: 40
    functionName: BROKEN_CASE_S
    functionSourceFile: /src/pdns/pdns/test-dnsrecords_cc.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BROKEN_CASE_S(type, zoneval, lineval)
  - 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: 43
      start: 42
    functionDepth: 0
    functionLinenumber: 42
    functionLinenumberEnd: 43
    functionName: REC_CHECK_EQUAL
    functionSourceFile: /src/pdns/pdns/test-dnsrecords_cc.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: REC_CHECK_EQUAL(a,b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - cond
    - ','
    - msg
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 44
    functionName: REC_CHECK_MESSAGE
    functionSourceFile: /src/pdns/pdns/test-dnsrecords_cc.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: REC_CHECK_MESSAGE(cond,msg)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - msg
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 44
    functionDepth: 0
    functionLinenumber: 44
    functionLinenumberEnd: 45
    functionName: REC_FAIL_XSUCCESS
    functionSourceFile: /src/pdns/pdns/test-dnsrecords_cc.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: REC_FAIL_XSUCCESS(msg)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: boost::assign::list_of
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:56,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:57,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:59,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:61,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:63,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:65,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:67,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:69,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:71,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:73,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:75,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:78,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:80,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:83,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:85,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:86,1
    - Dst: CASE_L
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:87,1
    - Dst: CASE_L
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:88,1
    - Dst: CASE_L
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:89,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:91,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:93,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:95,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:97,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:98,1
    - Dst: CASE_L
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:99,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:100,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:101,1
    - Dst: CASE_L
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:102,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:104,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:106,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:108,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:110,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:111,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:112,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:113,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:114,1
    - Dst: CASE_L
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:115,1
    - Dst: CASE_L
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:116,1
    - Dst: CASE_L
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:117,1
    - Dst: CASE_L
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:118,1
    - Dst: CASE_L
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:119,1
    - Dst: CASE_L
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:120,1
    - Dst: CASE_L
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:122,1
    - Dst: CASE_L
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:123,1
    - Dst: CASE_L
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:124,1
    - Dst: CASE_L
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:125,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:126,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:128,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:130,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:132,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:133,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:134,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:137,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:138,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:139,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:140,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:141,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:142,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:143,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:144,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:145,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:146,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:147,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:148,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:149,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:150,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:151,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:152,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:153,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:154,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:155,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:156,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:157,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:158,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:159,1
    - Dst: CASE_L
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:160,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:161,1
    - Dst: CASE_L
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:162,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:164,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:165,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:166,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:167,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:168,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:169,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:170,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:172,1
    - Dst: CASE_L
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:174,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:175,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:176,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:178,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:179,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:180,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:182,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:183,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:185,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:186,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:187,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:188,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:189,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:190,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:191,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:192,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:194,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:195,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:197,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:198,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:199,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:200,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:201,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:202,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:203,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:204,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:205,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:206,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:208,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:210,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:213,1
    - Dst: CASE_L
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:214,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:217,1
    - Dst: CASE_L
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:218,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:221,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:222,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:223,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:224,1
    - Dst: BROKEN_CASE_S
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:225,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:226,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:227,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:228,1
    - Dst: CASE_L
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:229,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:230,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:232,1
    - Dst: CASE_L
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:233,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:234,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:235,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:237,1
    - Dst: CASE_L
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:238,1
    - Dst: CASE_L
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:241,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:243,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:244,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:246,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:250,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:252,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:253,1
    - Dst: CASE_L
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:254,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:255,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:256,1
    - Dst: CASE_L
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:257,1
    - Dst: CASE_L
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:258,1
    - Dst: CASE_L
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:259,1
    - Dst: CASE_L
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:260,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:263,1
    - Dst: CASE_L
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:264,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:265,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:266,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:267,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:269,1
    - Dst: CASE_L
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:270,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:271,1
    - Dst: CASE_L
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:272,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:274,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:276,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:277,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:278,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:279,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:280,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:282,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:283,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:284,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:285,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:286,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:287,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:288,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:289,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:290,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:291,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:292,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:293,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:294,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:295,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:296,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:297,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:298,1
    - Dst: get
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:305,1
    - Dst: get
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:306,1
    - Dst: get
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:307,1
    - Dst: get
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:308,1
    - Dst: get
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:309,1
    - Dst: QType::getCode
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:311,1
    - Dst: QType::getCode
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:312,1
    - Dst: QType::getCode
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:312,1
    - Dst: BOOST_CHECK_MESSAGE
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:312,1
    - Dst: find
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:312,1
    - Dst: QType::toString
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:312,1
    - Dst: end
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:312,1
    - Dst: QType::toString
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:312,1
    - Dst: BOOST_CHECK_MESSAGE
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:313,1
    - Dst: QType::getCode
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:313,1
    - Dst: QType::getCode
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:313,1
    - Dst: QType::getCode
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:314,1
    - Dst: BOOST_TEST_CHECKPOINT
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:316,1
    - Dst: QType::toString
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:316,1
    - Dst: BOOST_TEST_MESSAGE
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:317,1
    - Dst: QType::toString
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:317,1
    - Dst: QType::getCode
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:321,1
    - Dst: QType::getCode
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:321,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:324,1
    - Dst: QType::getCode
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:324,1
    - Dst: BOOST_CHECK_MESSAGE
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:325,1
    - Dst: QType::getCode
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:325,1
    - Dst: QType::getCode
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:329,1
    - Dst: REC_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:337,1
    - Dst: auto::getZoneRepresentation
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:337,1
    - Dst: REC_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:340,1
    - Dst: auto::getZoneRepresentation
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:340,1
    - Dst: auto::serialize
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:342,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:342,1
    - Dst: DNSRecordContent::deserialize
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:344,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:344,1
    - Dst: QType::getCode
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:344,1
    - Dst: BOOST_CHECK_MESSAGE
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:345,1
    - Dst: QType::getCode
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:345,1
    - Dst: REC_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:348,1
    - Dst: auto::getZoneRepresentation
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:348,1
    - Dst: makeHexDump
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:350,1
    - Dst: makeHexDump
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:351,1
    - Dst: REC_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:352,1
    - Dst: REC_CHECK_MESSAGE
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:354,1
    - Dst: QType::toString
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:354,1
    - Dst: what
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:354,1
    - Dst: REC_FAIL_XSUCCESS
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:357,1
    - Dst: QType::toString
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:357,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 42
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 359
      start: 46
    functionDepth: 0
    functionLinenumber: 46
    functionLinenumberEnd: 359
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-dnsrecords_cc.cc
    functionUses: 0
    functionsReached:
    - CASE_S
    - boost::assign::list_of
    - makeHexDump
    - find
    - BROKEN_CASE_S
    - DNSRecordContent::make
    - BOOST_TEST_CHECKPOINT
    - REC_CHECK_MESSAGE
    - BOOST_TEST_MESSAGE
    - REC_FAIL_XSUCCESS
    - REC_CHECK_EQUAL
    - QType::toString
    - DNSName
    - get
    - CASE_L
    - auto::serialize
    - what
    - end
    - BOOST_CHECK_MESSAGE
    - auto::getZoneRepresentation
    - QType::getCode
    - DNSRecordContent::deserialize
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_record_types)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 361
      start: 361
    functionDepth: 0
    functionLinenumber: 361
    functionLinenumberEnd: 361
    functionName: test_dnsrecords_cc_predicate
    functionSourceFile: /src/pdns/pdns/test-dnsrecords_cc.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool test_dnsrecords_cc_predicate(std::exception const& /* ex */)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: boost::assign::list_of
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:376,1
    - Dst: ZONE_CASE
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:377,1
    - Dst: ZONE_CASE
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:378,1
    - Dst: ZONE_CASE
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:379,1
    - Dst: ZONE_CASE
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:380,1
    - Dst: ZONE_CASE
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:381,1
    - Dst: ZONE_CASE
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:382,1
    - Dst: ZONE_CASE
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:383,1
    - Dst: WIRE_CASE
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:384,1
    - Dst: ZONE_CASE
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:385,1
    - Dst: ZONE_CASE
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:386,1
    - Dst: ZONE_CASE
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:387,1
    - Dst: ZONE_CASE
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:388,1
    - Dst: WIRE_CASE
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:389,1
    - Dst: ZONE_CASE
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:391,1
    - Dst: ZONE_CASE
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:393,1
    - Dst: ZONE_CASE
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:395,1
    - Dst: ZONE_CASE
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:397,1
    - Dst: ZONE_CASE
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:398,1
    - Dst: ZONE_CASE
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:399,1
    - Dst: ZONE_CASE
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:400,1
    - Dst: get
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:407,1
    - Dst: get
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:408,1
    - Dst: get
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:409,1
    - Dst: get
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:410,1
    - Dst: QType::getCode
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:412,1
    - Dst: QType::getCode
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:413,1
    - Dst: BOOST_TEST_CHECKPOINT
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:415,1
    - Dst: QType::toString
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:415,1
    - Dst: BOOST_TEST_MESSAGE
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:416,1
    - Dst: QType::toString
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:416,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:419,1
    - Dst: QType::getCode
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:419,1
    - Dst: BOOST_WARN_MESSAGE
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:422,1
    - Dst: BOOST_WARN_EXCEPTION
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:428,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:430,1
    - Dst: QType::getCode
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:430,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:431,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:431,1
    - Dst: QType::getCode
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:431,1
    - Dst: auto::toPacket
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:432,1
    - Dst: REC_FAIL_XSUCCESS
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:436,1
    - Dst: QType::toString
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:436,1
    - Dst: BOOST_CHECK_EXCEPTION
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:438,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:440,1
    - Dst: QType::getCode
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:440,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:441,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:441,1
    - Dst: QType::getCode
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:441,1
    - Dst: auto::toPacket
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:442,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 27
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 447
      start: 364
    functionDepth: 0
    functionLinenumber: 364
    functionLinenumberEnd: 447
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-dnsrecords_cc.cc
    functionUses: 0
    functionsReached:
    - BOOST_TEST_MESSAGE
    - ZONE_CASE
    - BOOST_WARN_EXCEPTION
    - BOOST_CHECK_EXCEPTION
    - REC_FAIL_XSUCCESS
    - boost::assign::list_of
    - QType::toString
    - DNSName
    - get
    - BOOST_WARN_MESSAGE
    - QType::getCode
    - DNSRecordContent::make
    - auto::toPacket
    - WIRE_CASE
    - BOOST_TEST_CHECKPOINT
    - DNSPacketWriter::startRecord
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_record_types_bad_values)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - type
    - ','
    - input
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 372
      start: 371
    functionDepth: 0
    functionLinenumber: 371
    functionLinenumberEnd: 372
    functionName: ZONE_CASE
    functionSourceFile: /src/pdns/pdns/test-dnsrecords_cc.cc
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ZONE_CASE(type, input)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - type
    - ','
    - input
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 373
      start: 372
    functionDepth: 0
    functionLinenumber: 372
    functionLinenumberEnd: 373
    functionName: WIRE_CASE
    functionSourceFile: /src/pdns/pdns/test-dnsrecords_cc.cc
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: WIRE_CASE(type, input)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - type
    - ','
    - input
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 374
      start: 373
    functionDepth: 0
    functionLinenumber: 373
    functionLinenumberEnd: 374
    functionName: BROKEN_ZONE_CASE
    functionSourceFile: /src/pdns/pdns/test-dnsrecords_cc.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BROKEN_ZONE_CASE(type, input)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - type
    - ','
    - input
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 375
      start: 374
    functionDepth: 0
    functionLinenumber: 374
    functionLinenumberEnd: 375
    functionName: BROKEN_WIRE_CASE
    functionSourceFile: /src/pdns/pdns/test-dnsrecords_cc.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BROKEN_WIRE_CASE(type, input)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::string::begin
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:456,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:456,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:458,1
    - Dst: getEDNSOpts
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:458,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:461,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:464,1
    - Dst: EDNSOpts::d_options::size
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:464,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:465,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:466,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 467
      start: 450
    functionDepth: 0
    functionLinenumber: 450
    functionLinenumberEnd: 467
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-dnsrecords_cc.cc
    functionUses: 0
    functionsReached:
    - std::string::begin
    - getEDNSOpts
    - BOOST_CHECK_EQUAL
    - std::string::size
    - EDNSOpts::d_options::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_opt_record_in)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSName
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:473,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:474,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:474,1
    - Dst: DNSPacketWriter::xfrIP
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:475,1
    - Dst: htonl
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:475,1
    - Dst: vector::emplace_back
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:476,1
    - Dst: DNSPacketWriter::addOpt
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:477,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:478,1
    - Dst: htons
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:478,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:479,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:480,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:485,1
    - Dst: makeHexDump
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:485,1
    - Dst: std::string
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:485,1
    - Dst: vector::begin
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:485,1
    - Dst: vector::end
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:485,1
    - Dst: makeHexDump
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:485,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 486
      start: 469
    functionDepth: 1
    functionLinenumber: 469
    functionLinenumberEnd: 486
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-dnsrecords_cc.cc
    functionUses: 0
    functionsReached:
    - vector::begin
    - DNSPacketWriter::commit
    - htonl
    - DNSName
    - DNSPacketWriter::getHeader
    - DNSPacketWriter::addOpt
    - BOOST_CHECK_EQUAL
    - vector::end
    - vector::emplace_back
    - std::string
    - DNSPacketWriter::startRecord
    - DNSPacketWriter::xfrIP
    - makeHexDump
    - htons
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_opt_record_out)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:491,1
    - Dst: static_cast<QType::typeenum>
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:491,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:494,1
    - Dst: static_cast<QType::typeenum>
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:494,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:497,1
    - Dst: static_cast<QType::typeenum>
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:497,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:498,1
    - Dst: static_cast<QType::typeenum>
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:498,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:501,1
    - Dst: static_cast<QType::typeenum>
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:501,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:504,1
    - Dst: static_cast<QType::typeenum>
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:504,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:507,1
    - Dst: static_cast<QType::typeenum>
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:507,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:511,1
    - Dst: static_cast<QType::typeenum>
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:511,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:513,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:515,1
    - Dst: auto::getZoneRepresentation
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:515,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 521
      start: 489
    functionDepth: 0
    functionLinenumber: 489
    functionLinenumberEnd: 521
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-dnsrecords_cc.cc
    functionUses: 0
    functionsReached:
    - static_cast<QType::typeenum>
    - BOOST_CHECK_EQUAL
    - auto::getZoneRepresentation
    - DNSRecordContent::make
    - BOOST_CHECK
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_unknown_records_in)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:507,1
    - Dst: static_cast<QType::typeenum>
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:507,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:511,1
    - Dst: static_cast<QType::typeenum>
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:511,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:513,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:515,1
    - Dst: auto::getZoneRepresentation
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:515,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 520
      start: 507
    functionDepth: 0
    functionLinenumber: 507
    functionLinenumberEnd: 520
    functionName: BOOST_CHECK_THROW
    functionSourceFile: /src/pdns/pdns/test-dnsrecords_cc.cc
    functionUses: 26
    functionsReached:
    - static_cast<QType::typeenum>
    - BOOST_CHECK_EQUAL
    - auto::getZoneRepresentation
    - DNSRecordContent::make
    - BOOST_CHECK
    linkageType: ''
    returnType: void
    signature: void BOOST_CHECK_THROW(auto wrongRDATASizeUnknown = DNSRecordContent::make(static_cast<QType::typeenum>(65534),
      QClass::IN, "\\# 2 AA"), MOADNSException)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:526,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 527
      start: 524
    functionDepth: 0
    functionLinenumber: 524
    functionLinenumberEnd: 527
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-dnsrecords_cc.cc
    functionUses: 0
    functionsReached:
    - DNSRecordContent::make
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_svcb_records_in)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:532,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:534,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:536,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:538,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 539
      start: 530
    functionDepth: 0
    functionLinenumber: 530
    functionLinenumberEnd: 539
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-dnsrecords_cc.cc
    functionUses: 0
    functionsReached:
    - DNSRecordContent::make
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_eui_records_in)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:544,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:546,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:549,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:550,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:551,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:551,1
    - Dst: auto::toPacket
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:552,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:553,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:555,1
    - Dst: vector::data
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:555,1
    - Dst: vector::size
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:555,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 558
      start: 542
    functionDepth: 1
    functionLinenumber: 542
    functionLinenumberEnd: 558
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-dnsrecords_cc.cc
    functionUses: 0
    functionsReached:
    - DNSPacketWriter::commit
    - DNSPacketWriter::getHeader
    - DNSName
    - reinterpret_cast<const char*>
    - auto::toPacket
    - DNSRecordContent::make
    - vector::data
    - vector::size
    - DNSPacketWriter::startRecord
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_loc_records_in)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:564,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:567,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:568,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:569,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:569,1
    - Dst: auto::toPacket
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:570,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:571,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:573,1
    - Dst: vector::data
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:573,1
    - Dst: vector::size
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:573,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:579,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:582,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:583,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:584,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:584,1
    - Dst: auto::toPacket
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:585,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:586,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:588,1
    - Dst: vector::data
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:588,1
    - Dst: vector::size
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:588,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:594,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:597,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:598,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:599,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:599,1
    - Dst: auto::toPacket
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:600,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:601,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:603,1
    - Dst: vector::data
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:603,1
    - Dst: vector::size
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:603,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:609,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:609,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 20
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 610
      start: 561
    functionDepth: 1
    functionLinenumber: 561
    functionLinenumberEnd: 610
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-dnsrecords_cc.cc
    functionUses: 0
    functionsReached:
    - DNSPacketWriter::commit
    - DNSPacketWriter::getHeader
    - DNSName
    - reinterpret_cast<const char*>
    - auto::toPacket
    - DNSRecordContent::make
    - BOOST_CHECK_THROW
    - vector::data
    - vector::size
    - DNSPacketWriter::startRecord
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_nsec_records_in)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:615,1
    - Dst: std::dynamic_pointer_cast<NSECRecordContent>
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:616,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:617,1
    - Dst: static_cast<QType::typeenum>
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:619,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:620,1
    - Dst: auto::isSet
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:620,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:622,1
    - Dst: auto::isSet
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:622,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:623,1
    - Dst: auto::numberOfTypesSet
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:623,1
    - Dst: std::make_shared<NSECRecordContent>
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:627,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:628,1
    - Dst: auto::numberOfTypesSet
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:628,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:629,1
    - Dst: auto::isSet
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:629,1
    - Dst: auto::set
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:632,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:634,1
    - Dst: auto::isSet
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:634,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:635,1
    - Dst: auto::numberOfTypesSet
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:635,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:637,1
    - Dst: auto::isSet
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:637,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 640
      start: 612
    functionDepth: 0
    functionLinenumber: 612
    functionLinenumberEnd: 640
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-dnsrecords_cc.cc
    functionUses: 0
    functionsReached:
    - std::dynamic_pointer_cast<NSECRecordContent>
    - auto::set
    - static_cast<QType::typeenum>
    - BOOST_CHECK_EQUAL
    - auto::isSet
    - DNSRecordContent::make
    - BOOST_REQUIRE
    - BOOST_CHECK
    - std::make_shared<NSECRecordContent>
    - auto::numberOfTypesSet
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_nsec_records_types)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:643,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:648,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:649,1
    - Dst: auto::toPacket
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:650,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:651,1
    - Dst: DNSName::wirelength
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:653,1
    - Dst: DNSName::wirelength
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:653,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:654,1
    - Dst: auto::at
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:657,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:659,1
    - Dst: vector::data
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:659,1
    - Dst: vector::size
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:659,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 661
      start: 642
    functionDepth: 1
    functionLinenumber: 642
    functionLinenumberEnd: 661
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-dnsrecords_cc.cc
    functionUses: 0
    functionsReached:
    - DNSPacketWriter::commit
    - DNSPacketWriter::getHeader
    - DNSName
    - reinterpret_cast<const char*>
    - auto::toPacket
    - DNSRecordContent::make
    - vector::data
    - auto::at
    - vector::size
    - DNSPacketWriter::startRecord
    - DNSName::wirelength
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_nsec_invalid_bitmap_len)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:667,1
    - Dst: std::dynamic_pointer_cast<NSEC3RecordContent>
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:668,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:669,1
    - Dst: static_cast<QType::typeenum>
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:671,1
    - Dst: static_cast<QType::typeenum>
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:671,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:672,1
    - Dst: auto::isSet
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:672,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:674,1
    - Dst: auto::isSet
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:674,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:675,1
    - Dst: auto::numberOfTypesSet
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:675,1
    - Dst: auto::getZoneRepresentation
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:676,1
    - Dst: boost::to_lower
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:677,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:678,1
    - Dst: std::make_shared<NSEC3RecordContent>
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:683,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:684,1
    - Dst: auto::numberOfTypesSet
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:684,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:685,1
    - Dst: auto::isSet
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:685,1
    - Dst: auto::set
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:688,1
    - Dst: toLower
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:689,1
    - Dst: DNSRecordContent::NumberToType
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:689,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:691,1
    - Dst: auto::isSet
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:691,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:692,1
    - Dst: auto::numberOfTypesSet
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:692,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:694,1
    - Dst: auto::isSet
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:694,1
    - Dst: auto::getZoneRepresentation
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:696,1
    - Dst: boost::to_lower
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:697,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:698,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:707,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:711,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:712,1
    - Dst: auto::toPacket
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:713,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:714,1
    - Dst: DNSName::wirelength
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:716,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:718,1
    - Dst: fromBase32Hex
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:719,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:720,1
    - Dst: vector::size
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:720,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:722,1
    - Dst: vector::data
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:722,1
    - Dst: vector::size
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:722,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:723,1
    - Dst: MOADNSParser::d_answers::size
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:723,1
    - Dst: MOADNSParser::d_answers::at
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:724,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:725,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:726,1
    - Dst: getRR
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:727,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:728,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:729,1
    - Dst: auto::numberOfTypesSet
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:729,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:731,1
    - Dst: auto::isSet
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:731,1
    - Dst: auto::getZoneRepresentation
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:733,1
    - Dst: boost::to_lower
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:734,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:735,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 39
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 737
      start: 663
    functionDepth: 1
    functionLinenumber: 663
    functionLinenumberEnd: 737
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-dnsrecords_cc.cc
    functionUses: 0
    functionsReached:
    - auto::isSet
    - std::string::size
    - DNSName::wirelength
    - std::make_shared<NSEC3RecordContent>
    - std::dynamic_pointer_cast<NSEC3RecordContent>
    - auto::set
    - static_cast<QType::typeenum>
    - DNSPacketWriter::getHeader
    - boost::to_lower
    - DNSRecordContent::make
    - auto::toPacket
    - BOOST_REQUIRE
    - DNSRecordContent::NumberToType
    - vector::data
    - fromBase32Hex
    - vector::size
    - MOADNSParser::d_answers::at
    - DNSPacketWriter::startRecord
    - BOOST_REQUIRE_EQUAL
    - DNSPacketWriter::commit
    - toLower
    - reinterpret_cast<const char*>
    - auto::numberOfTypesSet
    - getRR
    - BOOST_CHECK_EQUAL
    - MOADNSParser::d_answers::size
    - auto::getZoneRepresentation
    - BOOST_CHECK
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_nsec3_records_types)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:741,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:742,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:743,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:744,1
    - Dst: auto::sizeEstimate
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:744,1
    - Dst: auto::sizeEstimate
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:744,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:746,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:747,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:748,1
    - Dst: auto::sizeEstimate
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:748,1
    - Dst: auto::sizeEstimate
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:748,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:749,1
    - Dst: auto::sizeEstimate
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:749,1
    - Dst: auto::sizeEstimate
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:749,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:751,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:752,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:753,1
    - Dst: auto::sizeEstimate
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:753,1
    - Dst: auto::sizeEstimate
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:753,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:754,1
    - Dst: auto::sizeEstimate
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:754,1
    - Dst: auto::sizeEstimate
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:754,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:756,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:757,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:758,1
    - Dst: auto::sizeEstimate
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:758,1
    - Dst: auto::sizeEstimate
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:758,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:759,1
    - Dst: auto::sizeEstimate
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:759,1
    - Dst: auto::sizeEstimate
      Src: /src/pdns/pdns/test-dnsrecords_cc.cc:759,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 760
      start: 739
    functionDepth: 0
    functionLinenumber: 739
    functionLinenumberEnd: 760
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-dnsrecords_cc.cc
    functionUses: 0
    functionsReached:
    - auto::sizeEstimate
    - BOOST_CHECK
    - DNSRecordContent::make
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_size_estimate)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: reinterpret_cast<const uint8_t*>
      Src: /src/pdns/pdns/ednsoptions.cc:34,1
    - Dst: static_cast<uint16_t>
      Src: /src/pdns/pdns/ednsoptions.cc:36,1
    - Dst: static_cast<uint16_t>
      Src: /src/pdns/pdns/ednsoptions.cc:39,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 4
    argNames:
    - data
    - dataLen
    - ' optionCode'
    - ' optionLen'
    argTypes:
    - char*
    - size_t
    - uint16_t
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 27
    functionDepth: 0
    functionLinenumber: 27
    functionLinenumberEnd: 44
    functionName: getNextEDNSOption
    functionSourceFile: /src/pdns/pdns/ednsoptions.cc
    functionUses: 2
    functionsReached:
    - static_cast<uint16_t>
    - reinterpret_cast<const uint8_t*>
    linkageType: ''
    returnType: bool
    signature: bool getNextEDNSOption(const char* data, size_t dataLen, uint16_t&
      optionCode, uint16_t& optionLen)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: getNextEDNSOption
      Src: /src/pdns/pdns/ednsoptions.cc:69,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 32
    argCount: 5
    argNames:
    - optRR
    - len
    - wantedOption
    - optionValuePosition
    - optionValueSize
    argTypes:
    - char*
    - size_t
    - uint16_t
    - size_t*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 47
    functionDepth: 0
    functionLinenumber: 47
    functionLinenumberEnd: 95
    functionName: getEDNSOption
    functionSourceFile: /src/pdns/pdns/ednsoptions.cc
    functionUses: 0
    functionsReached:
    - getNextEDNSOption
    linkageType: ''
    returnType: int
    signature: int getEDNSOption(const char* optRR, const size_t len, uint16_t wantedOption,
      size_t* optionValuePosition, size_t * optionValueSize)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/ednsoptions.cc:99,1
    - Dst: data
      Src: /src/pdns/pdns/ednsoptions.cc:103,1
    - Dst: ntohs
      Src: /src/pdns/pdns/ednsoptions.cc:105,1
    - Dst: ntohs
      Src: /src/pdns/pdns/ednsoptions.cc:109,1
    - Dst: ntohs
      Src: /src/pdns/pdns/ednsoptions.cc:114,1
    - Dst: ntohs
      Src: /src/pdns/pdns/ednsoptions.cc:114,1
    - Dst: ntohs
      Src: /src/pdns/pdns/ednsoptions.cc:114,1
    - Dst: const_cast<char*>
      Src: /src/pdns/pdns/ednsoptions.cc:116,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/ednsoptions.cc:116,1
    - Dst: data
      Src: /src/pdns/pdns/ednsoptions.cc:116,1
    - Dst: size
      Src: /src/pdns/pdns/ednsoptions.cc:116,1
    - Dst: ntohs
      Src: /src/pdns/pdns/ednsoptions.cc:118,1
    - Dst: DNSPacketMangler::skipDomainName
      Src: /src/pdns/pdns/ednsoptions.cc:119,1
    - Dst: DNSPacketMangler::skipBytes
      Src: /src/pdns/pdns/ednsoptions.cc:121,1
    - Dst: DNSPacketMangler::skipDomainName
      Src: /src/pdns/pdns/ednsoptions.cc:125,1
    - Dst: ntohs
      Src: /src/pdns/pdns/ednsoptions.cc:127,1
    - Dst: ntohs
      Src: /src/pdns/pdns/ednsoptions.cc:127,1
    - Dst: ntohs
      Src: /src/pdns/pdns/ednsoptions.cc:127,1
    - Dst: DNSPacketMangler::get16BitInt
      Src: /src/pdns/pdns/ednsoptions.cc:128,1
    - Dst: DNSPacketMangler::get16BitInt
      Src: /src/pdns/pdns/ednsoptions.cc:129,1
    - Dst: DNSPacketMangler::skipBytes
      Src: /src/pdns/pdns/ednsoptions.cc:130,1
    - Dst: DNSPacketMangler::getOffset
      Src: /src/pdns/pdns/ednsoptions.cc:133,1
    - Dst: size
      Src: /src/pdns/pdns/ednsoptions.cc:134,1
    - Dst: DNSPacketMangler::skipRData
      Src: /src/pdns/pdns/ednsoptions.cc:138,1
    - Dst: getEDNSOptions
      Src: /src/pdns/pdns/ednsoptions.cc:140,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/ednsoptions.cc:140,1
    - Dst: at
      Src: /src/pdns/pdns/ednsoptions.cc:140,1
    - Dst: size
      Src: /src/pdns/pdns/ednsoptions.cc:140,1
    - Dst: DNSPacketMangler::skipRData
      Src: /src/pdns/pdns/ednsoptions.cc:142,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 32
    argCount: 2
    argNames:
    - ' packet'
    - ' options'
    argTypes:
    - PacketBuffer
    - EDNSOptionViewMap
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 150
      start: 97
    functionDepth: 0
    functionLinenumber: 97
    functionLinenumberEnd: 150
    functionName: slowParseEDNSOptions
    functionSourceFile: /src/pdns/pdns/ednsoptions.cc
    functionUses: 0
    functionsReached:
    - DNSPacketMangler::skipDomainName
    - const_cast<char*>
    - DNSPacketMangler::skipBytes
    - ntohs
    - at
    - size
    - DNSPacketMangler::skipRData
    - reinterpret_cast<const char*>
    - getEDNSOptions
    - data
    - DNSPacketMangler::getOffset
    - DNSPacketMangler::get16BitInt
    linkageType: ''
    returnType: bool
    signature: bool slowParseEDNSOptions(const PacketBuffer& packet, EDNSOptionViewMap&
      options)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: values::push_back
      Src: /src/pdns/pdns/ednsoptions.cc:181,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 22
    argCount: 3
    argNames:
    - optRR
    - len
    - ' options'
    argTypes:
    - char*
    - size_t
    - EDNSOptionViewMap
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 189
      start: 153
    functionDepth: 0
    functionLinenumber: 153
    functionLinenumberEnd: 189
    functionName: getEDNSOptions
    functionSourceFile: /src/pdns/pdns/ednsoptions.cc
    functionUses: 1
    functionsReached:
    - values::push_back
    linkageType: ''
    returnType: int
    signature: int getEDNSOptions(const char* optRR, const size_t len, EDNSOptionViewMap&
      options)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/ednsoptions.cc:195,1
    - Dst: static_cast<unsigned char>
      Src: /src/pdns/pdns/ednsoptions.cc:198,1
    - Dst: at
      Src: /src/pdns/pdns/ednsoptions.cc:198,1
    - Dst: static_cast<unsigned char>
      Src: /src/pdns/pdns/ednsoptions.cc:198,1
    - Dst: at
      Src: /src/pdns/pdns/ednsoptions.cc:198,1
    - Dst: static_cast<unsigned char>
      Src: /src/pdns/pdns/ednsoptions.cc:200,1
    - Dst: at
      Src: /src/pdns/pdns/ednsoptions.cc:200,1
    - Dst: static_cast<unsigned char>
      Src: /src/pdns/pdns/ednsoptions.cc:200,1
    - Dst: at
      Src: /src/pdns/pdns/ednsoptions.cc:200,1
    - Dst: emplace_back
      Src: /src/pdns/pdns/ednsoptions.cc:207,1
    - Dst: std::string
      Src: /src/pdns/pdns/ednsoptions.cc:207,1
    - Dst: at
      Src: /src/pdns/pdns/ednsoptions.cc:207,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 2
    argNames:
    - ' content'
    - ' options'
    argTypes:
    - std::string
    - std::vector<std::pair<uint16_t, std::string>>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 212
      start: 191
    functionDepth: 0
    functionLinenumber: 191
    functionLinenumberEnd: 212
    functionName: getEDNSOptionsFromContent
    functionSourceFile: /src/pdns/pdns/ednsoptions.cc
    functionUses: 0
    functionsReached:
    - size
    - emplace_back
    - std::string
    - at
    - static_cast<unsigned char>
    linkageType: ''
    returnType: bool
    signature: bool getEDNSOptionsFromContent(const std::string& content, std::vector<std::pair<uint16_t,
      std::string>>& options)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: htons
      Src: /src/pdns/pdns/ednsoptions.cc:216,1
    - Dst: htons
      Src: /src/pdns/pdns/ednsoptions.cc:217,1
    - Dst: length
      Src: /src/pdns/pdns/ednsoptions.cc:217,1
    - Dst: append
      Src: /src/pdns/pdns/ednsoptions.cc:218,1
    - Dst: append
      Src: /src/pdns/pdns/ednsoptions.cc:219,1
    - Dst: append
      Src: /src/pdns/pdns/ednsoptions.cc:220,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - optionCode
    - ' payload'
    - ' res'
    argTypes:
    - uint16_t
    - std::string
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 221
      start: 214
    functionDepth: 0
    functionLinenumber: 214
    functionLinenumberEnd: 221
    functionName: generateEDNSOption
    functionSourceFile: /src/pdns/pdns/ednsoptions.cc
    functionUses: 1
    functionsReached:
    - length
    - append
    - htons
    linkageType: ''
    returnType: void
    signature: void generateEDNSOption(uint16_t optionCode, const std::string& payload,
      std::string& res)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: boost::ends_with
      Src: /src/pdns/pdns/zone2sql.cc:67,1
    - Dst: stripDot
      Src: /src/pdns/pdns/zone2sql.cc:69,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - ' content'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 65
    functionDepth: 0
    functionLinenumber: 65
    functionLinenumberEnd: 70
    functionName: stripDotContent
    functionSourceFile: /src/pdns/pdns/zone2sql.cc
    functionUses: 0
    functionsReached:
    - boost::ends_with
    - stripDot
    linkageType: ''
    returnType: string
    signature: string stripDotContent(const string& content)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: boost::replace_all_copy
      Src: /src/pdns/pdns/zone2sql.cc:75,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 1
    argNames:
    - name
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 72
    functionDepth: 0
    functionLinenumber: 72
    functionLinenumberEnd: 91
    functionName: sqlstr
    functionSourceFile: /src/pdns/pdns/zone2sql.cc
    functionUses: 5
    functionsReached:
    - boost::replace_all_copy
    linkageType: ''
    returnType: string
    signature: string sqlstr(const string &name)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: arg
      Src: /src/pdns/pdns/zone2sql.cc:95,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 112
      start: 93
    functionDepth: 0
    functionLinenumber: 93
    functionLinenumberEnd: 112
    functionName: startNewTransaction
    functionSourceFile: /src/pdns/pdns/zone2sql.cc
    functionUses: 0
    functionsReached:
    - arg
    linkageType: ''
    returnType: void
    signature: void startNewTransaction()
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: toStringRootDot
      Src: /src/pdns/pdns/zone2sql.cc:116,1
    - Dst: arg
      Src: /src/pdns/pdns/zone2sql.cc:117,1
    - Dst: toLower
      Src: /src/pdns/pdns/zone2sql.cc:118,1
    - Dst: sqlstr
      Src: /src/pdns/pdns/zone2sql.cc:118,1
    - Dst: arg
      Src: /src/pdns/pdns/zone2sql.cc:120,1
    - Dst: toLower
      Src: /src/pdns/pdns/zone2sql.cc:121,1
    - Dst: sqlstr
      Src: /src/pdns/pdns/zone2sql.cc:121,1
    - Dst: empty
      Src: /src/pdns/pdns/zone2sql.cc:126,1
    - Dst: string::append
      Src: /src/pdns/pdns/zone2sql.cc:128,1
    - Dst: toStringWithPortExcept
      Src: /src/pdns/pdns/zone2sql.cc:128,1
    - Dst: string::append
      Src: /src/pdns/pdns/zone2sql.cc:129,1
    - Dst: string::empty
      Src: /src/pdns/pdns/zone2sql.cc:132,1
    - Dst: sqlstr
      Src: /src/pdns/pdns/zone2sql.cc:133,1
    - Dst: sqlstr
      Src: /src/pdns/pdns/zone2sql.cc:135,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 16
    argCount: 1
    argNames:
    - ' domain'
    argTypes:
    - ZoneName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 137
      start: 114
    functionDepth: 1
    functionLinenumber: 114
    functionLinenumberEnd: 137
    functionName: emitDomain
    functionSourceFile: /src/pdns/pdns/zone2sql.cc
    functionUses: 0
    functionsReached:
    - string::empty
    - string::append
    - toLower
    - toStringRootDot
    - sqlstr
    - empty
    - toStringWithPortExcept
    - arg
    linkageType: ''
    returnType: void
    signature: void emitDomain(const ZoneName& domain, const vector<ComboAddress>*
      primaries = nullptr)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: DNSName::toStringRootDot
      Src: /src/pdns/pdns/zone2sql.cc:142,1
    - Dst: toStringRootDot
      Src: /src/pdns/pdns/zone2sql.cc:143,1
    - Dst: empty
      Src: /src/pdns/pdns/zone2sql.cc:148,1
    - Dst: find
      Src: /src/pdns/pdns/zone2sql.cc:149,1
    - Dst: substr
      Src: /src/pdns/pdns/zone2sql.cc:151,1
    - Dst: json11::Json::parse
      Src: /src/pdns/pdns/zone2sql.cc:153,1
    - Dst: auto::is_null
      Src: /src/pdns/pdns/zone2sql.cc:154,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/zone2sql.cc:155,1
    - Dst: bool_value
      Src: /src/pdns/pdns/zone2sql.cc:157,1
    - Dst: string_value
      Src: /src/pdns/pdns/zone2sql.cc:158,1
    - Dst: pdns::checked_stoi_into
      Src: /src/pdns/pdns/zone2sql.cc:169,1
    - Dst: string::find_first_not_of
      Src: /src/pdns/pdns/zone2sql.cc:171,1
    - Dst: boost::erase_head
      Src: /src/pdns/pdns/zone2sql.cc:173,1
    - Dst: boost::trim_left
      Src: /src/pdns/pdns/zone2sql.cc:174,1
    - Dst: sqlstr
      Src: /src/pdns/pdns/zone2sql.cc:178,1
    - Dst: toLower
      Src: /src/pdns/pdns/zone2sql.cc:178,1
    - Dst: sqlstr
      Src: /src/pdns/pdns/zone2sql.cc:179,1
    - Dst: sqlstr
      Src: /src/pdns/pdns/zone2sql.cc:180,1
    - Dst: stripDotContent
      Src: /src/pdns/pdns/zone2sql.cc:180,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/zone2sql.cc:180,1
    - Dst: toLower
      Src: /src/pdns/pdns/zone2sql.cc:181,1
    - Dst: sqlstr
      Src: /src/pdns/pdns/zone2sql.cc:181,1
    - Dst: string::empty
      Src: /src/pdns/pdns/zone2sql.cc:183,1
    - Dst: toLower
      Src: /src/pdns/pdns/zone2sql.cc:184,1
    - Dst: sqlstr
      Src: /src/pdns/pdns/zone2sql.cc:184,1
    - Dst: stripDot
      Src: /src/pdns/pdns/zone2sql.cc:184,1
    - Dst: sqlstr
      Src: /src/pdns/pdns/zone2sql.cc:184,1
    - Dst: time
      Src: /src/pdns/pdns/zone2sql.cc:184,1
    - Dst: sqlstr
      Src: /src/pdns/pdns/zone2sql.cc:184,1
    - Dst: toLower
      Src: /src/pdns/pdns/zone2sql.cc:184,1
    - Dst: sqlstr
      Src: /src/pdns/pdns/zone2sql.cc:184,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 22
    argCount: 5
    argNames:
    - ' zoneName'
    - DNSqname
    - qtype
    - ocontent
    - ttl
    argTypes:
    - ZoneName
    - DNSName
    - string
    - string
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 186
      start: 140
    functionDepth: 1
    functionLinenumber: 140
    functionLinenumberEnd: 186
    functionName: emitRecord
    functionSourceFile: /src/pdns/pdns/zone2sql.cc
    functionUses: 0
    functionsReached:
    - std::to_string
    - json11::Json::parse
    - runtime_error
    - stripDot
    - find
    - stripDotContent
    - boost::erase_head
    - string::empty
    - time
    - DNSName::toStringRootDot
    - toStringRootDot
    - substr
    - string::find_first_not_of
    - empty
    - pdns::checked_stoi_into
    - string_value
    - bool_value
    - toLower
    - auto::is_null
    - sqlstr
    - boost::trim_left
    linkageType: ''
    returnType: void
    signature: void emitRecord(const ZoneName& zoneName, const DNSName &DNSqname,
      const string &qtype, const string &ocontent, int ttl, const string& comment="")
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ArgvMap::ArgvMap
      Src: /src/pdns/pdns/zone2sql.cc:195,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 197
      start: 193
    functionDepth: 0
    functionLinenumber: 193
    functionLinenumberEnd: 197
    functionName: arg
    functionSourceFile: /src/pdns/pdns/zone2sql.cc
    functionUses: 41
    functionsReached:
    - ArgvMap::ArgvMap
    linkageType: ''
    returnType: ArgvMap
    signature: ArgvMap &arg()
  - BBCount: 22
    BranchProfiles: []
    Callsites:
    - Dst: reportAllTypes
      Src: /src/pdns/pdns/zone2sql.cc:203,1
    - Dst: std::ios_base::sync_with_stdio
      Src: /src/pdns/pdns/zone2sql.cc:204,1
    - Dst: arg
      Src: /src/pdns/pdns/zone2sql.cc:206,1
    - Dst: arg
      Src: /src/pdns/pdns/zone2sql.cc:207,1
    - Dst: arg
      Src: /src/pdns/pdns/zone2sql.cc:208,1
    - Dst: arg
      Src: /src/pdns/pdns/zone2sql.cc:209,1
    - Dst: arg
      Src: /src/pdns/pdns/zone2sql.cc:210,1
    - Dst: arg
      Src: /src/pdns/pdns/zone2sql.cc:211,1
    - Dst: arg
      Src: /src/pdns/pdns/zone2sql.cc:212,1
    - Dst: arg
      Src: /src/pdns/pdns/zone2sql.cc:213,1
    - Dst: arg
      Src: /src/pdns/pdns/zone2sql.cc:214,1
    - Dst: arg
      Src: /src/pdns/pdns/zone2sql.cc:215,1
    - Dst: arg
      Src: /src/pdns/pdns/zone2sql.cc:216,1
    - Dst: arg
      Src: /src/pdns/pdns/zone2sql.cc:217,1
    - Dst: arg
      Src: /src/pdns/pdns/zone2sql.cc:218,1
    - Dst: arg
      Src: /src/pdns/pdns/zone2sql.cc:220,1
    - Dst: arg
      Src: /src/pdns/pdns/zone2sql.cc:221,1
    - Dst: arg
      Src: /src/pdns/pdns/zone2sql.cc:223,1
    - Dst: arg
      Src: /src/pdns/pdns/zone2sql.cc:224,1
    - Dst: declare
      Src: /src/pdns/pdns/zone2sql.cc:226,1
    - Dst: arg
      Src: /src/pdns/pdns/zone2sql.cc:231,1
    - Dst: arg
      Src: /src/pdns/pdns/zone2sql.cc:233,1
    - Dst: exit
      Src: /src/pdns/pdns/zone2sql.cc:235,1
    - Dst: arg
      Src: /src/pdns/pdns/zone2sql.cc:238,1
    - Dst: arg
      Src: /src/pdns/pdns/zone2sql.cc:240,1
    - Dst: exit
      Src: /src/pdns/pdns/zone2sql.cc:241,1
    - Dst: arg
      Src: /src/pdns/pdns/zone2sql.cc:246,1
    - Dst: exit
      Src: /src/pdns/pdns/zone2sql.cc:247,1
    - Dst: arg
      Src: /src/pdns/pdns/zone2sql.cc:250,1
    - Dst: arg
      Src: /src/pdns/pdns/zone2sql.cc:252,1
    - Dst: arg
      Src: /src/pdns/pdns/zone2sql.cc:254,1
    - Dst: arg
      Src: /src/pdns/pdns/zone2sql.cc:256,1
    - Dst: arg
      Src: /src/pdns/pdns/zone2sql.cc:258,1
    - Dst: arg
      Src: /src/pdns/pdns/zone2sql.cc:263,1
    - Dst: exit
      Src: /src/pdns/pdns/zone2sql.cc:264,1
    - Dst: arg
      Src: /src/pdns/pdns/zone2sql.cc:267,1
    - Dst: arg
      Src: /src/pdns/pdns/zone2sql.cc:268,1
    - Dst: string::empty
      Src: /src/pdns/pdns/zone2sql.cc:272,1
    - Dst: BindParser::BindParser
      Src: /src/pdns/pdns/zone2sql.cc:273,1
    - Dst: BindParser::setVerbose
      Src: /src/pdns/pdns/zone2sql.cc:274,1
    - Dst: arg
      Src: /src/pdns/pdns/zone2sql.cc:274,1
    - Dst: BindParser::parse
      Src: /src/pdns/pdns/zone2sql.cc:275,1
    - Dst: string::empty
      Src: /src/pdns/pdns/zone2sql.cc:275,1
    - Dst: BindParser::getDomains
      Src: /src/pdns/pdns/zone2sql.cc:277,1
    - Dst: stat
      Src: /src/pdns/pdns/zone2sql.cc:280,1
    - Dst: filename::c_str
      Src: /src/pdns/pdns/zone2sql.cc:280,1
    - Dst: sort
      Src: /src/pdns/pdns/zone2sql.cc:286,1
    - Dst: vector::begin
      Src: /src/pdns/pdns/zone2sql.cc:286,1
    - Dst: vector::end
      Src: /src/pdns/pdns/zone2sql.cc:286,1
    - Dst: vector::size
      Src: /src/pdns/pdns/zone2sql.cc:288,1
    - Dst: type::empty
      Src: /src/pdns/pdns/zone2sql.cc:293,1
    - Dst: startNewTransaction
      Src: /src/pdns/pdns/zone2sql.cc:298,1
    - Dst: emitDomain
      Src: /src/pdns/pdns/zone2sql.cc:300,1
    - Dst: BindParser::getDirectory
      Src: /src/pdns/pdns/zone2sql.cc:302,1
    - Dst: ZoneParserTNG::setMaxGenerateSteps
      Src: /src/pdns/pdns/zone2sql.cc:303,1
    - Dst: arg
      Src: /src/pdns/pdns/zone2sql.cc:303,1
    - Dst: ZoneParserTNG::setMaxIncludes
      Src: /src/pdns/pdns/zone2sql.cc:304,1
    - Dst: arg
      Src: /src/pdns/pdns/zone2sql.cc:304,1
    - Dst: ZoneParserTNG::get
      Src: /src/pdns/pdns/zone2sql.cc:308,1
    - Dst: DNSResourceRecord::qtype::getCode
      Src: /src/pdns/pdns/zone2sql.cc:309,1
    - Dst: DNSResourceRecord::qtype::getCode
      Src: /src/pdns/pdns/zone2sql.cc:311,1
    - Dst: emitRecord
      Src: /src/pdns/pdns/zone2sql.cc:314,1
    - Dst: DNSResourceRecord::qtype::toString
      Src: /src/pdns/pdns/zone2sql.cc:314,1
    - Dst: arg
      Src: /src/pdns/pdns/zone2sql.cc:319,1
    - Dst: what
      Src: /src/pdns/pdns/zone2sql.cc:322,1
    - Dst: arg
      Src: /src/pdns/pdns/zone2sql.cc:325,1
    - Dst: ZoneName::ZoneName
      Src: /src/pdns/pdns/zone2sql.cc:338,1
    - Dst: arg
      Src: /src/pdns/pdns/zone2sql.cc:339,1
    - Dst: empty
      Src: /src/pdns/pdns/zone2sql.cc:339,1
    - Dst: ZoneName
      Src: /src/pdns/pdns/zone2sql.cc:340,1
    - Dst: arg
      Src: /src/pdns/pdns/zone2sql.cc:340,1
    - Dst: ZoneParserTNG::setMaxGenerateSteps
      Src: /src/pdns/pdns/zone2sql.cc:343,1
    - Dst: arg
      Src: /src/pdns/pdns/zone2sql.cc:343,1
    - Dst: startNewTransaction
      Src: /src/pdns/pdns/zone2sql.cc:345,1
    - Dst: ZoneParserTNG::get
      Src: /src/pdns/pdns/zone2sql.cc:349,1
    - Dst: DNSResourceRecord::qtype::getCode
      Src: /src/pdns/pdns/zone2sql.cc:350,1
    - Dst: DNSResourceRecord::qtype::getCode
      Src: /src/pdns/pdns/zone2sql.cc:352,1
    - Dst: ZoneParserTNG::getZoneName
      Src: /src/pdns/pdns/zone2sql.cc:355,1
    - Dst: emitDomain
      Src: /src/pdns/pdns/zone2sql.cc:356,1
    - Dst: ZoneParserTNG::getZoneName
      Src: /src/pdns/pdns/zone2sql.cc:356,1
    - Dst: emitRecord
      Src: /src/pdns/pdns/zone2sql.cc:364,1
    - Dst: ZoneParserTNG::getZoneName
      Src: /src/pdns/pdns/zone2sql.cc:364,1
    - Dst: DNSResourceRecord::qtype::toString
      Src: /src/pdns/pdns/zone2sql.cc:364,1
    - Dst: arg
      Src: /src/pdns/pdns/zone2sql.cc:370,1
    - Dst: what
      Src: /src/pdns/pdns/zone2sql.cc:383,1
    CyclomaticComplexity: 43
    EdgeCount: 43
    ICount: 128
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 389
      start: 200
    functionDepth: 2
    functionLinenumber: 200
    functionLinenumberEnd: 389
    functionName: main
    functionSourceFile: /src/pdns/pdns/zone2sql.cc
    functionUses: 18
    functionsReached:
    - BindParser::setVerbose
    - type::empty
    - ZoneParserTNG::setMaxGenerateSteps
    - BindParser::getDomains
    - std::ios_base::sync_with_stdio
    - ZoneParserTNG::getZoneName
    - sort
    - declare
    - vector::begin
    - BindParser::parse
    - reportAllTypes
    - string::empty
    - DNSResourceRecord::qtype::toString
    - BindParser::getDirectory
    - startNewTransaction
    - empty
    - stat
    - ZoneParserTNG::setMaxIncludes
    - vector::end
    - DNSResourceRecord::qtype::getCode
    - exit
    - BindParser::BindParser
    - arg
    - emitRecord
    - what
    - ZoneName::ZoneName
    - emitDomain
    - ZoneParserTNG::get
    - filename::c_str
    - ZoneName
    - vector::size
    linkageType: ''
    returnType: int
    signature: int main(int argc, char **argv)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::unique_ptr<FDMultiplexer>
      Src: /src/pdns/pdns/test-mplexer.cc:17,1
    - Dst: FDMultiplexer::getMultiplexerSilent
      Src: /src/pdns/pdns/test-mplexer.cc:17,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/test-mplexer.cc:18,1
    - Dst: auto::run
      Src: /src/pdns/pdns/test-mplexer.cc:21,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-mplexer.cc:22,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-mplexer.cc:23,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 24
      start: 15
    functionDepth: 0
    functionLinenumber: 15
    functionLinenumberEnd: 24
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-mplexer.cc
    functionUses: 0
    functionsReached:
    - BOOST_CHECK
    - BOOST_CHECK_EQUAL
    - std::unique_ptr<FDMultiplexer>
    - auto::run
    - BOOST_REQUIRE
    - FDMultiplexer::getMultiplexerSilent
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_getMultiplexerSilent)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: FDMultiplexer::getMultiplexerMap
      Src: /src/pdns/pdns/test-mplexer.cc:28,1
    - Dst: std::unique_ptr<FDMultiplexer>
      Src: /src/pdns/pdns/test-mplexer.cc:29,1
    - Dst: second
      Src: /src/pdns/pdns/test-mplexer.cc:29,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/test-mplexer.cc:30,1
    - Dst: auto::run
      Src: /src/pdns/pdns/test-mplexer.cc:34,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-mplexer.cc:35,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-mplexer.cc:36,1
    - Dst: auto::getAvailableFDs
      Src: /src/pdns/pdns/test-mplexer.cc:39,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-mplexer.cc:40,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/test-mplexer.cc:40,1
    - Dst: auto::getTimeouts
      Src: /src/pdns/pdns/test-mplexer.cc:42,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-mplexer.cc:43,1
    - Dst: auto::size
      Src: /src/pdns/pdns/test-mplexer.cc:43,1
    - Dst: pipe
      Src: /src/pdns/pdns/test-mplexer.cc:46,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/test-mplexer.cc:47,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/test-mplexer.cc:48,1
    - Dst: setNonBlocking
      Src: /src/pdns/pdns/test-mplexer.cc:48,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/test-mplexer.cc:49,1
    - Dst: setNonBlocking
      Src: /src/pdns/pdns/test-mplexer.cc:49,1
    - Dst: boost::any_cast<bool*>
      Src: /src/pdns/pdns/test-mplexer.cc:57,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/test-mplexer.cc:58,1
    - Dst: auto::addWriteFD
      Src: /src/pdns/pdns/test-mplexer.cc:61,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-mplexer.cc:66,1
    - Dst: auto::addWriteFD
      Src: /src/pdns/pdns/test-mplexer.cc:66,1
    - Dst: std::vector::clear
      Src: /src/pdns/pdns/test-mplexer.cc:72,1
    - Dst: auto::getAvailableFDs
      Src: /src/pdns/pdns/test-mplexer.cc:73,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/test-mplexer.cc:74,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/test-mplexer.cc:74,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-mplexer.cc:75,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/test-mplexer.cc:75,1
    - Dst: auto::run
      Src: /src/pdns/pdns/test-mplexer.cc:78,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-mplexer.cc:79,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-mplexer.cc:80,1
    - Dst: auto::getTimeouts
      Src: /src/pdns/pdns/test-mplexer.cc:83,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-mplexer.cc:84,1
    - Dst: auto::size
      Src: /src/pdns/pdns/test-mplexer.cc:84,1
    - Dst: auto::getTimeouts
      Src: /src/pdns/pdns/test-mplexer.cc:86,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/test-mplexer.cc:87,1
    - Dst: auto::size
      Src: /src/pdns/pdns/test-mplexer.cc:87,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-mplexer.cc:88,1
    - Dst: auto::at
      Src: /src/pdns/pdns/test-mplexer.cc:88,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-mplexer.cc:91,1
    - Dst: auto::removeReadFD
      Src: /src/pdns/pdns/test-mplexer.cc:91,1
    - Dst: auto::removeWriteFD
      Src: /src/pdns/pdns/test-mplexer.cc:92,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-mplexer.cc:94,1
    - Dst: auto::removeWriteFD
      Src: /src/pdns/pdns/test-mplexer.cc:94,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-mplexer.cc:95,1
    - Dst: auto::removeWriteFD
      Src: /src/pdns/pdns/test-mplexer.cc:95,1
    - Dst: std::vector::clear
      Src: /src/pdns/pdns/test-mplexer.cc:97,1
    - Dst: auto::getAvailableFDs
      Src: /src/pdns/pdns/test-mplexer.cc:98,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/test-mplexer.cc:99,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/test-mplexer.cc:99,1
    - Dst: auto::run
      Src: /src/pdns/pdns/test-mplexer.cc:101,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-mplexer.cc:102,1
    - Dst: boost::any_cast<bool*>
      Src: /src/pdns/pdns/test-mplexer.cc:106,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/test-mplexer.cc:107,1
    - Dst: auto::addReadFD
      Src: /src/pdns/pdns/test-mplexer.cc:110,1
    - Dst: std::vector::clear
      Src: /src/pdns/pdns/test-mplexer.cc:116,1
    - Dst: auto::getAvailableFDs
      Src: /src/pdns/pdns/test-mplexer.cc:117,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/test-mplexer.cc:118,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/test-mplexer.cc:118,1
    - Dst: auto::run
      Src: /src/pdns/pdns/test-mplexer.cc:120,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-mplexer.cc:121,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-mplexer.cc:122,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/test-mplexer.cc:125,1
    - Dst: write
      Src: /src/pdns/pdns/test-mplexer.cc:125,1
    - Dst: std::vector::clear
      Src: /src/pdns/pdns/test-mplexer.cc:127,1
    - Dst: auto::getAvailableFDs
      Src: /src/pdns/pdns/test-mplexer.cc:128,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/test-mplexer.cc:129,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/test-mplexer.cc:129,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-mplexer.cc:130,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/test-mplexer.cc:130,1
    - Dst: auto::run
      Src: /src/pdns/pdns/test-mplexer.cc:132,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-mplexer.cc:133,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-mplexer.cc:134,1
    - Dst: auto::addWriteFD
      Src: /src/pdns/pdns/test-mplexer.cc:137,1
    - Dst: std::vector::clear
      Src: /src/pdns/pdns/test-mplexer.cc:145,1
    - Dst: auto::getAvailableFDs
      Src: /src/pdns/pdns/test-mplexer.cc:147,1
    - Dst: BOOST_REQUIRE_GT
      Src: /src/pdns/pdns/test-mplexer.cc:148,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/test-mplexer.cc:148,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/test-mplexer.cc:149,1
    - Dst: auto::run
      Src: /src/pdns/pdns/test-mplexer.cc:150,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-mplexer.cc:151,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/test-mplexer.cc:153,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/test-mplexer.cc:159,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/test-mplexer.cc:159,1
    - Dst: auto::run
      Src: /src/pdns/pdns/test-mplexer.cc:160,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-mplexer.cc:161,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-mplexer.cc:162,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-mplexer.cc:163,1
    - Dst: read
      Src: /src/pdns/pdns/test-mplexer.cc:165,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-mplexer.cc:166,1
    - Dst: std::vector::clear
      Src: /src/pdns/pdns/test-mplexer.cc:169,1
    - Dst: auto::getAvailableFDs
      Src: /src/pdns/pdns/test-mplexer.cc:170,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-mplexer.cc:171,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/test-mplexer.cc:171,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/test-mplexer.cc:172,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/test-mplexer.cc:172,1
    - Dst: auto::run
      Src: /src/pdns/pdns/test-mplexer.cc:174,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-mplexer.cc:175,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-mplexer.cc:178,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-mplexer.cc:179,1
    - Dst: auto::getTimeouts
      Src: /src/pdns/pdns/test-mplexer.cc:182,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/test-mplexer.cc:183,1
    - Dst: auto::size
      Src: /src/pdns/pdns/test-mplexer.cc:183,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-mplexer.cc:184,1
    - Dst: auto::at
      Src: /src/pdns/pdns/test-mplexer.cc:184,1
    - Dst: auto::getTimeouts
      Src: /src/pdns/pdns/test-mplexer.cc:185,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/test-mplexer.cc:186,1
    - Dst: auto::size
      Src: /src/pdns/pdns/test-mplexer.cc:186,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-mplexer.cc:187,1
    - Dst: auto::at
      Src: /src/pdns/pdns/test-mplexer.cc:187,1
    - Dst: auto::getTimeouts
      Src: /src/pdns/pdns/test-mplexer.cc:194,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-mplexer.cc:195,1
    - Dst: auto::size
      Src: /src/pdns/pdns/test-mplexer.cc:195,1
    - Dst: auto::getTimeouts
      Src: /src/pdns/pdns/test-mplexer.cc:197,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-mplexer.cc:198,1
    - Dst: auto::size
      Src: /src/pdns/pdns/test-mplexer.cc:198,1
    - Dst: auto::setReadTTD
      Src: /src/pdns/pdns/test-mplexer.cc:201,1
    - Dst: auto::setWriteTTD
      Src: /src/pdns/pdns/test-mplexer.cc:202,1
    - Dst: auto::getTimeouts
      Src: /src/pdns/pdns/test-mplexer.cc:203,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/test-mplexer.cc:204,1
    - Dst: auto::size
      Src: /src/pdns/pdns/test-mplexer.cc:204,1
    - Dst: auto::getTimeouts
      Src: /src/pdns/pdns/test-mplexer.cc:205,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/test-mplexer.cc:206,1
    - Dst: auto::size
      Src: /src/pdns/pdns/test-mplexer.cc:206,1
    - Dst: auto::setReadTTD
      Src: /src/pdns/pdns/test-mplexer.cc:209,1
    - Dst: auto::setWriteTTD
      Src: /src/pdns/pdns/test-mplexer.cc:210,1
    - Dst: auto::getTimeouts
      Src: /src/pdns/pdns/test-mplexer.cc:211,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/test-mplexer.cc:212,1
    - Dst: auto::size
      Src: /src/pdns/pdns/test-mplexer.cc:212,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-mplexer.cc:213,1
    - Dst: auto::at
      Src: /src/pdns/pdns/test-mplexer.cc:213,1
    - Dst: auto::getTimeouts
      Src: /src/pdns/pdns/test-mplexer.cc:214,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/test-mplexer.cc:215,1
    - Dst: auto::size
      Src: /src/pdns/pdns/test-mplexer.cc:215,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-mplexer.cc:216,1
    - Dst: auto::at
      Src: /src/pdns/pdns/test-mplexer.cc:216,1
    - Dst: auto::removeReadFD
      Src: /src/pdns/pdns/test-mplexer.cc:218,1
    - Dst: auto::removeWriteFD
      Src: /src/pdns/pdns/test-mplexer.cc:219,1
    - Dst: close
      Src: /src/pdns/pdns/test-mplexer.cc:222,1
    - Dst: close
      Src: /src/pdns/pdns/test-mplexer.cc:223,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 111
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 225
      start: 26
    functionDepth: 1
    functionLinenumber: 26
    functionLinenumberEnd: 225
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-mplexer.cc
    functionUses: 0
    functionsReached:
    - FDMultiplexer::getMultiplexerMap
    - auto::getTimeouts
    - auto::run
    - auto::addReadFD
    - std::vector::at
    - auto::setReadTTD
    - BOOST_CHECK_THROW
    - auto::size
    - std::vector::size
    - auto::getAvailableFDs
    - setNonBlocking
    - auto::removeReadFD
    - BOOST_REQUIRE
    - boost::any_cast<bool*>
    - BOOST_REQUIRE_EQUAL
    - second
    - BOOST_REQUIRE_GT
    - write
    - auto::setWriteTTD
    - std::vector::clear
    - read
    - pipe
    - BOOST_CHECK_EQUAL
    - std::unique_ptr<FDMultiplexer>
    - auto::addWriteFD
    - auto::removeWriteFD
    - auto::at
    - BOOST_CHECK
    - close
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_MPlexer)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: FDMultiplexer::getMultiplexerMap
      Src: /src/pdns/pdns/test-mplexer.cc:229,1
    - Dst: std::unique_ptr<FDMultiplexer>
      Src: /src/pdns/pdns/test-mplexer.cc:230,1
    - Dst: second
      Src: /src/pdns/pdns/test-mplexer.cc:230,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/test-mplexer.cc:231,1
    - Dst: socketpair
      Src: /src/pdns/pdns/test-mplexer.cc:235,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/test-mplexer.cc:236,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/test-mplexer.cc:237,1
    - Dst: setNonBlocking
      Src: /src/pdns/pdns/test-mplexer.cc:237,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/test-mplexer.cc:238,1
    - Dst: setNonBlocking
      Src: /src/pdns/pdns/test-mplexer.cc:238,1
    - Dst: gettimeofday
      Src: /src/pdns/pdns/test-mplexer.cc:241,1
    - Dst: boost::any_cast<bool*>
      Src: /src/pdns/pdns/test-mplexer.cc:249,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/test-mplexer.cc:250,1
    - Dst: boost::any_cast<bool*>
      Src: /src/pdns/pdns/test-mplexer.cc:254,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/test-mplexer.cc:255,1
    - Dst: auto::addReadFD
      Src: /src/pdns/pdns/test-mplexer.cc:258,1
    - Dst: auto::addWriteFD
      Src: /src/pdns/pdns/test-mplexer.cc:262,1
    - Dst: std::vector::clear
      Src: /src/pdns/pdns/test-mplexer.cc:268,1
    - Dst: auto::getAvailableFDs
      Src: /src/pdns/pdns/test-mplexer.cc:269,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/test-mplexer.cc:270,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/test-mplexer.cc:270,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-mplexer.cc:271,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/test-mplexer.cc:271,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/test-mplexer.cc:274,1
    - Dst: write
      Src: /src/pdns/pdns/test-mplexer.cc:274,1
    - Dst: std::vector::clear
      Src: /src/pdns/pdns/test-mplexer.cc:276,1
    - Dst: auto::getAvailableFDs
      Src: /src/pdns/pdns/test-mplexer.cc:277,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/test-mplexer.cc:278,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/test-mplexer.cc:278,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-mplexer.cc:279,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/test-mplexer.cc:279,1
    - Dst: auto::run
      Src: /src/pdns/pdns/test-mplexer.cc:281,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-mplexer.cc:282,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-mplexer.cc:283,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-mplexer.cc:284,1
    - Dst: auto::removeReadFD
      Src: /src/pdns/pdns/test-mplexer.cc:287,1
    - Dst: std::vector::clear
      Src: /src/pdns/pdns/test-mplexer.cc:291,1
    - Dst: auto::getAvailableFDs
      Src: /src/pdns/pdns/test-mplexer.cc:292,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/test-mplexer.cc:293,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/test-mplexer.cc:293,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-mplexer.cc:294,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/test-mplexer.cc:294,1
    - Dst: auto::run
      Src: /src/pdns/pdns/test-mplexer.cc:295,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-mplexer.cc:296,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-mplexer.cc:297,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-mplexer.cc:298,1
    - Dst: auto::removeWriteFD
      Src: /src/pdns/pdns/test-mplexer.cc:300,1
    - Dst: close
      Src: /src/pdns/pdns/test-mplexer.cc:303,1
    - Dst: close
      Src: /src/pdns/pdns/test-mplexer.cc:304,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 42
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 306
      start: 227
    functionDepth: 1
    functionLinenumber: 227
    functionLinenumberEnd: 306
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-mplexer.cc
    functionUses: 0
    functionsReached:
    - FDMultiplexer::getMultiplexerMap
    - auto::addReadFD
    - auto::run
    - std::vector::at
    - gettimeofday
    - std::vector::size
    - setNonBlocking
    - auto::getAvailableFDs
    - auto::removeReadFD
    - BOOST_REQUIRE
    - boost::any_cast<bool*>
    - BOOST_REQUIRE_EQUAL
    - second
    - write
    - std::vector::clear
    - auto::addWriteFD
    - std::unique_ptr<FDMultiplexer>
    - BOOST_CHECK_EQUAL
    - auto::removeWriteFD
    - socketpair
    - close
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_MPlexer_ReadAndWrite)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: boost::any_cast<bool*>
      Src: /src/pdns/pdns/test-mplexer.cc:319,1
    - Dst: boost::any_cast<bool*>
      Src: /src/pdns/pdns/test-mplexer.cc:323,1
    - Dst: gettimeofday
      Src: /src/pdns/pdns/test-mplexer.cc:329,1
    - Dst: DTime::DTime
      Src: /src/pdns/pdns/test-mplexer.cc:332,1
    - Dst: std::vector::reserve
      Src: /src/pdns/pdns/test-mplexer.cc:334,1
    - Dst: FDMultiplexer::getMultiplexerMap
      Src: /src/pdns/pdns/test-mplexer.cc:336,1
    - Dst: std::unique_ptr<FDMultiplexer>
      Src: /src/pdns/pdns/test-mplexer.cc:337,1
    - Dst: second
      Src: /src/pdns/pdns/test-mplexer.cc:337,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/test-mplexer.cc:338,1
    - Dst: auto::getName
      Src: /src/pdns/pdns/test-mplexer.cc:339,1
    - Dst: socketpair
      Src: /src/pdns/pdns/test-mplexer.cc:342,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/test-mplexer.cc:343,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/test-mplexer.cc:344,1
    - Dst: setNonBlocking
      Src: /src/pdns/pdns/test-mplexer.cc:344,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/test-mplexer.cc:345,1
    - Dst: setNonBlocking
      Src: /src/pdns/pdns/test-mplexer.cc:345,1
    - Dst: DTime::set
      Src: /src/pdns/pdns/test-mplexer.cc:348,1
    - Dst: auto::addReadFD
      Src: /src/pdns/pdns/test-mplexer.cc:350,1
    - Dst: auto::addWriteFD
      Src: /src/pdns/pdns/test-mplexer.cc:354,1
    - Dst: DTime::udiff
      Src: /src/pdns/pdns/test-mplexer.cc:359,1
    - Dst: std::vector::clear
      Src: /src/pdns/pdns/test-mplexer.cc:361,1
    - Dst: DTime::set
      Src: /src/pdns/pdns/test-mplexer.cc:362,1
    - Dst: auto::getAvailableFDs
      Src: /src/pdns/pdns/test-mplexer.cc:363,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/test-mplexer.cc:364,1
    - Dst: DTime::udiff
      Src: /src/pdns/pdns/test-mplexer.cc:364,1
    - Dst: DTime::set
      Src: /src/pdns/pdns/test-mplexer.cc:366,1
    - Dst: auto::run
      Src: /src/pdns/pdns/test-mplexer.cc:367,1
    - Dst: DTime::udiff
      Src: /src/pdns/pdns/test-mplexer.cc:368,1
    - Dst: DTime::set
      Src: /src/pdns/pdns/test-mplexer.cc:370,1
    - Dst: auto::removeWriteFD
      Src: /src/pdns/pdns/test-mplexer.cc:373,1
    - Dst: DTime::udiff
      Src: /src/pdns/pdns/test-mplexer.cc:375,1
    - Dst: write
      Src: /src/pdns/pdns/test-mplexer.cc:378,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/test-mplexer.cc:378,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/test-mplexer.cc:378,1
    - Dst: std::vector::clear
      Src: /src/pdns/pdns/test-mplexer.cc:380,1
    - Dst: DTime::set
      Src: /src/pdns/pdns/test-mplexer.cc:381,1
    - Dst: auto::getAvailableFDs
      Src: /src/pdns/pdns/test-mplexer.cc:382,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/test-mplexer.cc:383,1
    - Dst: DTime::udiff
      Src: /src/pdns/pdns/test-mplexer.cc:383,1
    - Dst: DTime::set
      Src: /src/pdns/pdns/test-mplexer.cc:385,1
    - Dst: auto::run
      Src: /src/pdns/pdns/test-mplexer.cc:386,1
    - Dst: DTime::udiff
      Src: /src/pdns/pdns/test-mplexer.cc:387,1
    - Dst: DTime::set
      Src: /src/pdns/pdns/test-mplexer.cc:389,1
    - Dst: auto::removeReadFD
      Src: /src/pdns/pdns/test-mplexer.cc:391,1
    - Dst: DTime::udiff
      Src: /src/pdns/pdns/test-mplexer.cc:393,1
    - Dst: close
      Src: /src/pdns/pdns/test-mplexer.cc:397,1
    - Dst: close
      Src: /src/pdns/pdns/test-mplexer.cc:398,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 45
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 401
      start: 309
    functionDepth: 1
    functionLinenumber: 309
    functionLinenumberEnd: 401
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-mplexer.cc
    functionUses: 0
    functionsReached:
    - FDMultiplexer::getMultiplexerMap
    - auto::addReadFD
    - auto::run
    - std::vector::at
    - gettimeofday
    - DTime::set
    - std::vector::size
    - setNonBlocking
    - auto::getAvailableFDs
    - auto::removeReadFD
    - DTime::DTime
    - BOOST_REQUIRE
    - boost::any_cast<bool*>
    - BOOST_REQUIRE_EQUAL
    - second
    - DTime::udiff
    - auto::getName
    - std::vector::reserve
    - write
    - std::vector::clear
    - auto::addWriteFD
    - std::unique_ptr<FDMultiplexer>
    - auto::removeWriteFD
    - socketpair
    - close
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_MPlexer_Bench)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' buffer'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 154
      start: 151
    functionDepth: 0
    functionLinenumber: 151
    functionLinenumberEnd: 154
    functionName: pdns::ProtoZero::Message::Message
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Message(std::string& buffer)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 155
    functionDepth: 0
    functionLinenumber: 155
    functionLinenumberEnd: 155
    functionName: ~Message()
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~Message()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 156
      start: 156
    functionDepth: 0
    functionLinenumber: 156
    functionLinenumberEnd: 156
    functionName: pdns::ProtoZero::Message::Message
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Message(const Message&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 157
      start: 157
    functionDepth: 0
    functionLinenumber: 157
    functionLinenumberEnd: 157
    functionName: pdns::ProtoZero::Message::Message
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Message(Message&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 158
      start: 158
    functionDepth: 0
    functionLinenumber: 158
    functionLinenumberEnd: 158
    functionName: '& operator=(const Message&)'
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Message
    signature: Message & operator=(const Message&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 159
      start: 159
    functionDepth: 0
    functionLinenumber: 159
    functionLinenumberEnd: 159
    functionName: '& operator=(Message&&)'
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Message
    signature: Message & operator=(Message&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_enum
      Src: /src/pdns/pdns/protozero.hh:166,1
    - Dst: static_cast<int32_t>
      Src: /src/pdns/pdns/protozero.hh:166,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - mtype
    argTypes:
    - MessageType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 167
      start: 164
    functionDepth: 0
    functionLinenumber: 164
    functionLinenumberEnd: 167
    functionName: pdns::ProtoZero::Message::setType
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 2
    functionsReached:
    - static_cast<int32_t>
    - pdns::ProtoZero::Message::add_enum
    linkageType: ''
    returnType: void
    signature: void setType(MessageType mtype)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_enum
      Src: /src/pdns/pdns/protozero.hh:171,1
    - Dst: static_cast<int32_t>
      Src: /src/pdns/pdns/protozero.hh:171,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - version
    argTypes:
    - HTTPVersion
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 172
      start: 169
    functionDepth: 0
    functionLinenumber: 169
    functionLinenumberEnd: 172
    functionName: pdns::ProtoZero::Message::setHTTPVersion
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 0
    functionsReached:
    - static_cast<int32_t>
    - pdns::ProtoZero::Message::add_enum
    linkageType: ''
    returnType: void
    signature: void setHTTPVersion(HTTPVersion version)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_bytes
      Src: /src/pdns/pdns/protozero.hh:176,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/protozero.hh:176,1
    - Dst: begin
      Src: /src/pdns/pdns/protozero.hh:176,1
    - Dst: size
      Src: /src/pdns/pdns/protozero.hh:176,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' uniqueId'
    argTypes:
    - boost::uuids::uuid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 177
      start: 174
    functionDepth: 0
    functionLinenumber: 174
    functionLinenumberEnd: 177
    functionName: pdns::ProtoZero::Message::setMessageIdentity
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 0
    functionsReached:
    - reinterpret_cast<const char*>
    - pdns::ProtoZero::Message::add_bytes
    - size
    - begin
    linkageType: ''
    returnType: void
    signature: void setMessageIdentity(const boost::uuids::uuid& uniqueId)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_bytes
      Src: /src/pdns/pdns/protozero.hh:181,1
    - Dst: data
      Src: /src/pdns/pdns/protozero.hh:181,1
    - Dst: length
      Src: /src/pdns/pdns/protozero.hh:181,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' serverIdentity'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 182
      start: 179
    functionDepth: 0
    functionLinenumber: 179
    functionLinenumberEnd: 182
    functionName: pdns::ProtoZero::Message::setServerIdentity
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 0
    functionsReached:
    - length
    - pdns::ProtoZero::Message::add_bytes
    - data
    linkageType: ''
    returnType: void
    signature: void setServerIdentity(const std::string& serverIdentity)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_enum
      Src: /src/pdns/pdns/protozero.hh:186,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - family
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 187
      start: 184
    functionDepth: 0
    functionLinenumber: 184
    functionLinenumberEnd: 187
    functionName: pdns::ProtoZero::Message::setSocketFamily
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 0
    functionsReached:
    - pdns::ProtoZero::Message::add_enum
    linkageType: ''
    returnType: void
    signature: void setSocketFamily(int family)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_enum
      Src: /src/pdns/pdns/protozero.hh:191,1
    - Dst: static_cast<int32_t>
      Src: /src/pdns/pdns/protozero.hh:191,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - proto
    argTypes:
    - TransportProtocol
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 192
      start: 189
    functionDepth: 0
    functionLinenumber: 189
    functionLinenumberEnd: 192
    functionName: pdns::ProtoZero::Message::setSocketProtocol
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 0
    functionsReached:
    - static_cast<int32_t>
    - pdns::ProtoZero::Message::add_enum
    linkageType: ''
    returnType: void
    signature: void setSocketProtocol(TransportProtocol proto)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: encodeComboAddress
      Src: /src/pdns/pdns/protozero.hh:196,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/protozero.hh:196,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' address'
    argTypes:
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 197
      start: 194
    functionDepth: 1
    functionLinenumber: 194
    functionLinenumberEnd: 197
    functionName: pdns::ProtoZero::Message::setFrom
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 0
    functionsReached:
    - static_cast<protozero::pbf_tag_type>
    - encodeComboAddress
    linkageType: ''
    returnType: void
    signature: void setFrom(const ComboAddress& address)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: encodeComboAddress
      Src: /src/pdns/pdns/protozero.hh:201,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/protozero.hh:201,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' address'
    argTypes:
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 202
      start: 199
    functionDepth: 1
    functionLinenumber: 199
    functionLinenumberEnd: 202
    functionName: pdns::ProtoZero::Message::setTo
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 0
    functionsReached:
    - static_cast<protozero::pbf_tag_type>
    - encodeComboAddress
    linkageType: ''
    returnType: void
    signature: void setTo(const ComboAddress& address)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint64
      Src: /src/pdns/pdns/protozero.hh:206,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - len
    argTypes:
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 207
      start: 204
    functionDepth: 0
    functionLinenumber: 204
    functionLinenumberEnd: 207
    functionName: pdns::ProtoZero::Message::setInBytes
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 0
    functionsReached:
    - pdns::ProtoZero::Message::add_uint64
    linkageType: ''
    returnType: void
    signature: void setInBytes(uint64_t len)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: gettime
      Src: /src/pdns/pdns/protozero.hh:212,1
    - Dst: pdns::ProtoZero::Message::setTime
      Src: /src/pdns/pdns/protozero.hh:214,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 215
      start: 209
    functionDepth: 0
    functionLinenumber: 209
    functionLinenumberEnd: 215
    functionName: pdns::ProtoZero::Message::setTime
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 2
    functionsReached:
    - pdns::ProtoZero::Message::setTime
    - gettime
    linkageType: ''
    returnType: void
    signature: void setTime()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint32
      Src: /src/pdns/pdns/protozero.hh:220,1
    - Dst: pdns::ProtoZero::Message::add_uint32
      Src: /src/pdns/pdns/protozero.hh:221,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - sec
    - usec
    argTypes:
    - time_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 222
      start: 217
    functionDepth: 0
    functionLinenumber: 217
    functionLinenumberEnd: 222
    functionName: pdns::ProtoZero::Message::setTime
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 2
    functionsReached:
    - pdns::ProtoZero::Message::add_uint32
    linkageType: ''
    returnType: void
    signature: void setTime(time_t sec, uint32_t usec)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint32
      Src: /src/pdns/pdns/protozero.hh:226,1
    - Dst: ntohs
      Src: /src/pdns/pdns/protozero.hh:226,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - qid
    argTypes:
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 227
      start: 224
    functionDepth: 0
    functionLinenumber: 224
    functionLinenumberEnd: 227
    functionName: pdns::ProtoZero::Message::setId
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 0
    functionsReached:
    - ntohs
    - pdns::ProtoZero::Message::add_uint32
    linkageType: ''
    returnType: void
    signature: void setId(uint16_t qid)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/protozero.hh:231,1
    - Dst: encodeDNSName
      Src: /src/pdns/pdns/protozero.hh:232,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/protozero.hh:232,1
    - Dst: protozero::pbf_writer::add_uint32
      Src: /src/pdns/pdns/protozero.hh:233,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/protozero.hh:233,1
    - Dst: protozero::pbf_writer::add_uint32
      Src: /src/pdns/pdns/protozero.hh:234,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/protozero.hh:234,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - ' qname'
    - qtype
    - qclass
    argTypes:
    - DNSName
    - uint16_t
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 235
      start: 229
    functionDepth: 0
    functionLinenumber: 229
    functionLinenumberEnd: 235
    functionName: pdns::ProtoZero::Message::setQuestion
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 1
    functionsReached:
    - static_cast<protozero::pbf_tag_type>
    - protozero::pbf_writer::add_uint32
    - encodeDNSName
    linkageType: ''
    returnType: void
    signature: void setQuestion(const DNSName& qname, uint16_t qtype, uint16_t qclass)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/protozero.hh:239,1
    - Dst: protozero::pbf_writer::add_string
      Src: /src/pdns/pdns/protozero.hh:240,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/protozero.hh:240,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/protozero.hh:241,1
    - Dst: protozero::pbf_writer::add_string
      Src: /src/pdns/pdns/protozero.hh:243,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/protozero.hh:243,1
    - Dst: protozero::pbf_writer::add_uint64
      Src: /src/pdns/pdns/protozero.hh:246,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/protozero.hh:246,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - ' key'
    - ' stringVal'
    - ' intVal'
    argTypes:
    - std::string
    - std::unordered_set<std::string>
    - std::unordered_set<int64_t>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 248
      start: 237
    functionDepth: 0
    functionLinenumber: 237
    functionLinenumberEnd: 248
    functionName: pdns::ProtoZero::Message::setMeta
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 0
    functionsReached:
    - protozero::pbf_writer::add_uint64
    - static_cast<protozero::pbf_tag_type>
    - protozero::pbf_writer::add_string
    linkageType: ''
    returnType: void
    signature: void setMeta(const std::string& key, const std::unordered_set<std::string>&
      stringVal, const std::unordered_set<int64_t>& intVal)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: encodeNetmask
      Src: /src/pdns/pdns/protozero.hh:252,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/protozero.hh:252,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' netmask'
    - mask
    argTypes:
    - Netmask
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 253
      start: 250
    functionDepth: 1
    functionLinenumber: 250
    functionLinenumberEnd: 253
    functionName: pdns::ProtoZero::Message::setEDNSSubnet
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 0
    functionsReached:
    - static_cast<protozero::pbf_tag_type>
    - encodeNetmask
    linkageType: ''
    returnType: void
    signature: void setEDNSSubnet(const Netmask& netmask, uint8_t mask)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/protozero.hh:257,1
    - Dst: pdns::ProtoZero::Message::add_string
      Src: /src/pdns/pdns/protozero.hh:258,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ' req'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 260
      start: 255
    functionDepth: 0
    functionLinenumber: 255
    functionLinenumberEnd: 260
    functionName: pdns::ProtoZero::Message::setRequestorId
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 0
    functionsReached:
    - empty
    - pdns::ProtoZero::Message::add_string
    linkageType: ''
    returnType: void
    signature: void setRequestorId(const std::string& req)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_bytes
      Src: /src/pdns/pdns/protozero.hh:264,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/protozero.hh:264,1
    - Dst: begin
      Src: /src/pdns/pdns/protozero.hh:264,1
    - Dst: size
      Src: /src/pdns/pdns/protozero.hh:264,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' uniqueId'
    argTypes:
    - boost::uuids::uuid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 265
      start: 262
    functionDepth: 0
    functionLinenumber: 262
    functionLinenumberEnd: 265
    functionName: pdns::ProtoZero::Message::setInitialRequestID
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 0
    functionsReached:
    - reinterpret_cast<const char*>
    - pdns::ProtoZero::Message::add_bytes
    - size
    - begin
    linkageType: ''
    returnType: void
    signature: void setInitialRequestID(const boost::uuids::uuid& uniqueId)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/protozero.hh:269,1
    - Dst: pdns::ProtoZero::Message::add_string
      Src: /src/pdns/pdns/protozero.hh:270,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ' deviceId'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 272
      start: 267
    functionDepth: 0
    functionLinenumber: 267
    functionLinenumberEnd: 272
    functionName: pdns::ProtoZero::Message::setDeviceId
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 0
    functionsReached:
    - empty
    - pdns::ProtoZero::Message::add_string
    linkageType: ''
    returnType: void
    signature: void setDeviceId(const std::string& deviceId)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_bool
      Src: /src/pdns/pdns/protozero.hh:276,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - nod
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 277
      start: 274
    functionDepth: 0
    functionLinenumber: 274
    functionLinenumberEnd: 277
    functionName: pdns::ProtoZero::Message::setNewlyObservedDomain
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 0
    functionsReached:
    - pdns::ProtoZero::Message::add_bool
    linkageType: ''
    returnType: void
    signature: void setNewlyObservedDomain(bool nod)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/protozero.hh:281,1
    - Dst: pdns::ProtoZero::Message::add_string
      Src: /src/pdns/pdns/protozero.hh:282,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ' name'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 284
      start: 279
    functionDepth: 0
    functionLinenumber: 279
    functionLinenumberEnd: 284
    functionName: pdns::ProtoZero::Message::setDeviceName
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 0
    functionsReached:
    - empty
    - pdns::ProtoZero::Message::add_string
    linkageType: ''
    returnType: void
    signature: void setDeviceName(const std::string& name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint32
      Src: /src/pdns/pdns/protozero.hh:288,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - port
    argTypes:
    - in_port_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 289
      start: 286
    functionDepth: 0
    functionLinenumber: 286
    functionLinenumberEnd: 289
    functionName: pdns::ProtoZero::Message::setFromPort
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 0
    functionsReached:
    - pdns::ProtoZero::Message::add_uint32
    linkageType: ''
    returnType: void
    signature: void setFromPort(in_port_t port)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint32
      Src: /src/pdns/pdns/protozero.hh:293,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - port
    argTypes:
    - in_port_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 294
      start: 291
    functionDepth: 0
    functionLinenumber: 291
    functionLinenumberEnd: 294
    functionName: pdns::ProtoZero::Message::setToPort
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 0
    functionsReached:
    - pdns::ProtoZero::Message::add_uint32
    linkageType: ''
    returnType: void
    signature: void setToPort(in_port_t port)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint64
      Src: /src/pdns/pdns/protozero.hh:298,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - wid
    argTypes:
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 299
      start: 296
    functionDepth: 0
    functionLinenumber: 296
    functionLinenumberEnd: 299
    functionName: pdns::ProtoZero::Message::setWorkerId
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 0
    functionsReached:
    - pdns::ProtoZero::Message::add_uint64
    linkageType: ''
    returnType: void
    signature: void setWorkerId(uint64_t wid)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_bool
      Src: /src/pdns/pdns/protozero.hh:303,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - hit
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 304
      start: 301
    functionDepth: 0
    functionLinenumber: 301
    functionLinenumberEnd: 304
    functionName: pdns::ProtoZero::Message::setPacketCacheHit
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 0
    functionsReached:
    - pdns::ProtoZero::Message::add_bool
    linkageType: ''
    returnType: void
    signature: void setPacketCacheHit(bool hit)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint32
      Src: /src/pdns/pdns/protozero.hh:308,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - num
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 309
      start: 306
    functionDepth: 0
    functionLinenumber: 306
    functionLinenumberEnd: 309
    functionName: pdns::ProtoZero::Message::setOutgoingQueries
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 0
    functionsReached:
    - pdns::ProtoZero::Message::add_uint32
    linkageType: ''
    returnType: void
    signature: void setOutgoingQueries(uint32_t num)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint32
      Src: /src/pdns/pdns/protozero.hh:313,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - flags
    argTypes:
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 314
      start: 311
    functionDepth: 0
    functionLinenumber: 311
    functionLinenumberEnd: 314
    functionName: pdns::ProtoZero::Message::setHeaderFlags
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 0
    functionsReached:
    - pdns::ProtoZero::Message::add_uint32
    linkageType: ''
    returnType: void
    signature: void setHeaderFlags(uint16_t flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint32
      Src: /src/pdns/pdns/protozero.hh:318,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - version
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 319
      start: 316
    functionDepth: 0
    functionLinenumber: 316
    functionLinenumberEnd: 319
    functionName: pdns::ProtoZero::Message::setEDNSVersion
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 0
    functionsReached:
    - pdns::ProtoZero::Message::add_uint32
    linkageType: ''
    returnType: void
    signature: void setEDNSVersion(uint32_t version)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/protozero.hh:323,1
    - Dst: pdns::ProtoZero::Message::add_string
      Src: /src/pdns/pdns/protozero.hh:324,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ' data'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 326
      start: 321
    functionDepth: 0
    functionLinenumber: 321
    functionLinenumberEnd: 326
    functionName: pdns::ProtoZero::Message::setOpenTelemetryData
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 0
    functionsReached:
    - empty
    - pdns::ProtoZero::Message::add_string
    linkageType: ''
    returnType: void
    signature: void setOpenTelemetryData(const std::string& data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint32
      Src: /src/pdns/pdns/protozero.hh:330,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ede
    argTypes:
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 331
      start: 328
    functionDepth: 0
    functionLinenumber: 328
    functionLinenumberEnd: 331
    functionName: pdns::ProtoZero::Message::setEDE
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 0
    functionsReached:
    - pdns::ProtoZero::Message::add_uint32
    linkageType: ''
    returnType: void
    signature: void setEDE(const uint16_t ede)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::string::empty
      Src: /src/pdns/pdns/protozero.hh:335,1
    - Dst: pdns::ProtoZero::Message::add_string
      Src: /src/pdns/pdns/protozero.hh:336,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - edeText
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 338
      start: 333
    functionDepth: 0
    functionLinenumber: 333
    functionLinenumberEnd: 338
    functionName: pdns::ProtoZero::Message::setEDEText
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 0
    functionsReached:
    - pdns::ProtoZero::Message::add_string
    - std::string::empty
    linkageType: ''
    returnType: void
    signature: void setEDEText(const std::string edeText)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_bytes
      Src: /src/pdns/pdns/protozero.hh:342,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/protozero.hh:342,1
    - Dst: data
      Src: /src/pdns/pdns/protozero.hh:342,1
    - Dst: size
      Src: /src/pdns/pdns/protozero.hh:342,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' traceID'
    argTypes:
    - std::array<uint8_t, 16>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 343
      start: 340
    functionDepth: 0
    functionLinenumber: 340
    functionLinenumberEnd: 343
    functionName: pdns::ProtoZero::Message::setOpenTelemetryTraceID
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 0
    functionsReached:
    - reinterpret_cast<const char*>
    - pdns::ProtoZero::Message::add_bytes
    - size
    - data
    linkageType: ''
    returnType: void
    signature: void setOpenTelemetryTraceID(const std::array<uint8_t, 16>& traceID)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/protozero.hh:347,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 348
      start: 345
    functionDepth: 0
    functionLinenumber: 345
    functionLinenumberEnd: 348
    functionName: pdns::ProtoZero::Message::startResponse
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 1
    functionsReached:
    - static_cast<protozero::pbf_tag_type>
    linkageType: ''
    returnType: void
    signature: void startResponse()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: commit
      Src: /src/pdns/pdns/protozero.hh:352,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 353
      start: 350
    functionDepth: 0
    functionLinenumber: 350
    functionLinenumberEnd: 353
    functionName: pdns::ProtoZero::Message::commitResponse
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 0
    functionsReached:
    - commit
    linkageType: ''
    returnType: void
    signature: void commitResponse()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint32
      Src: /src/pdns/pdns/protozero.hh:357,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/protozero.hh:357,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rcode
    argTypes:
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 358
      start: 355
    functionDepth: 0
    functionLinenumber: 355
    functionLinenumberEnd: 358
    functionName: pdns::ProtoZero::Message::setResponseCode
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 1
    functionsReached:
    - static_cast<protozero::pbf_tag_type>
    - pdns::ProtoZero::Message::add_uint32
    linkageType: ''
    returnType: void
    signature: void setResponseCode(uint8_t rcode)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint32
      Src: /src/pdns/pdns/protozero.hh:363,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/protozero.hh:363,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 364
      start: 360
    functionDepth: 0
    functionLinenumber: 360
    functionLinenumberEnd: 364
    functionName: pdns::ProtoZero::Message::setNetworkErrorResponseCode
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 0
    functionsReached:
    - static_cast<protozero::pbf_tag_type>
    - pdns::ProtoZero::Message::add_uint32
    linkageType: ''
    returnType: void
    signature: void setNetworkErrorResponseCode()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_string
      Src: /src/pdns/pdns/protozero.hh:368,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/protozero.hh:368,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' policy'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 369
      start: 366
    functionDepth: 0
    functionLinenumber: 366
    functionLinenumberEnd: 369
    functionName: pdns::ProtoZero::Message::setAppliedPolicy
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 0
    functionsReached:
    - pdns::ProtoZero::Message::add_string
    - static_cast<protozero::pbf_tag_type>
    linkageType: ''
    returnType: void
    signature: void setAppliedPolicy(const std::string& policy)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::addPolicyTag
      Src: /src/pdns/pdns/protozero.hh:374,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - ' tags'
    argTypes:
    - std::unordered_set<std::string>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 376
      start: 371
    functionDepth: 0
    functionLinenumber: 371
    functionLinenumberEnd: 376
    functionName: pdns::ProtoZero::Message::addPolicyTags
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 0
    functionsReached:
    - pdns::ProtoZero::Message::addPolicyTag
    linkageType: ''
    returnType: void
    signature: void addPolicyTags(const std::unordered_set<std::string>& tags)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_string
      Src: /src/pdns/pdns/protozero.hh:380,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/protozero.hh:380,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' tag'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 381
      start: 378
    functionDepth: 0
    functionLinenumber: 378
    functionLinenumberEnd: 381
    functionName: pdns::ProtoZero::Message::addPolicyTag
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 1
    functionsReached:
    - pdns::ProtoZero::Message::add_string
    - static_cast<protozero::pbf_tag_type>
    linkageType: ''
    returnType: void
    signature: void addPolicyTag(const string& tag)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint32
      Src: /src/pdns/pdns/protozero.hh:385,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/protozero.hh:385,1
    - Dst: pdns::ProtoZero::Message::add_uint32
      Src: /src/pdns/pdns/protozero.hh:386,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/protozero.hh:386,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - sec
    - usec
    argTypes:
    - uint32_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 387
      start: 383
    functionDepth: 0
    functionLinenumber: 383
    functionLinenumberEnd: 387
    functionName: pdns::ProtoZero::Message::setQueryTime
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 1
    functionsReached:
    - static_cast<protozero::pbf_tag_type>
    - pdns::ProtoZero::Message::add_uint32
    linkageType: ''
    returnType: void
    signature: void setQueryTime(uint32_t sec, uint32_t usec)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_enum
      Src: /src/pdns/pdns/protozero.hh:399,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/protozero.hh:399,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' writer'
    - type
    - value
    argTypes:
    - protozero::pbf_writer
    - Field
    - int32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 400
      start: 397
    functionDepth: 0
    functionLinenumber: 397
    functionLinenumberEnd: 400
    functionName: pdns::ProtoZero::Message::add_enum
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 5
    functionsReached:
    - static_cast<protozero::pbf_tag_type>
    - pdns::ProtoZero::Message::add_enum
    linkageType: ''
    returnType: void
    signature: void add_enum(protozero::pbf_writer& writer, Field type, int32_t value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_bool
      Src: /src/pdns/pdns/protozero.hh:404,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/protozero.hh:404,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' writer'
    - type
    - value
    argTypes:
    - protozero::pbf_writer
    - Field
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 405
      start: 402
    functionDepth: 0
    functionLinenumber: 402
    functionLinenumberEnd: 405
    functionName: pdns::ProtoZero::Message::add_bool
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 3
    functionsReached:
    - static_cast<protozero::pbf_tag_type>
    - pdns::ProtoZero::Message::add_bool
    linkageType: ''
    returnType: void
    signature: void add_bool(protozero::pbf_writer& writer, Field type, bool value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint32
      Src: /src/pdns/pdns/protozero.hh:409,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/protozero.hh:409,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' writer'
    - type
    - value
    argTypes:
    - protozero::pbf_writer
    - Field
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 410
      start: 407
    functionDepth: 0
    functionLinenumber: 407
    functionLinenumberEnd: 410
    functionName: pdns::ProtoZero::Message::add_uint32
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 12
    functionsReached:
    - static_cast<protozero::pbf_tag_type>
    - pdns::ProtoZero::Message::add_uint32
    linkageType: ''
    returnType: void
    signature: void add_uint32(protozero::pbf_writer& writer, Field type, uint32_t
      value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint64
      Src: /src/pdns/pdns/protozero.hh:414,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/protozero.hh:414,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' writer'
    - type
    - value
    argTypes:
    - protozero::pbf_writer
    - Field
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 415
      start: 412
    functionDepth: 0
    functionLinenumber: 412
    functionLinenumberEnd: 415
    functionName: pdns::ProtoZero::Message::add_uint64
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 3
    functionsReached:
    - pdns::ProtoZero::Message::add_uint64
    - static_cast<protozero::pbf_tag_type>
    linkageType: ''
    returnType: void
    signature: void add_uint64(protozero::pbf_writer& writer, Field type, uint64_t
      value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_bytes
      Src: /src/pdns/pdns/protozero.hh:419,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/protozero.hh:419,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - ' writer'
    - type
    - data
    - len
    argTypes:
    - protozero::pbf_writer
    - Field
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 420
      start: 417
    functionDepth: 0
    functionLinenumber: 417
    functionLinenumberEnd: 420
    functionName: pdns::ProtoZero::Message::add_bytes
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 5
    functionsReached:
    - static_cast<protozero::pbf_tag_type>
    - pdns::ProtoZero::Message::add_bytes
    linkageType: ''
    returnType: void
    signature: void add_bytes(protozero::pbf_writer& writer, Field type, const char*
      data, size_t len)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_string
      Src: /src/pdns/pdns/protozero.hh:424,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/protozero.hh:424,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' writer'
    - type
    - ' str'
    argTypes:
    - protozero::pbf_writer
    - Field
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 425
      start: 422
    functionDepth: 0
    functionLinenumber: 422
    functionLinenumberEnd: 425
    functionName: pdns::ProtoZero::Message::add_string
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 8
    functionsReached:
    - pdns::ProtoZero::Message::add_string
    - static_cast<protozero::pbf_tag_type>
    linkageType: ''
    returnType: void
    signature: void add_string(protozero::pbf_writer& writer, Field type, const std::string&
      str)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' buffer'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 154
      start: 151
    functionDepth: 0
    functionLinenumber: 151
    functionLinenumberEnd: 154
    functionName: pdns::ProtoZero::Message::Message
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Message(std::string& buffer)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 155
    functionDepth: 0
    functionLinenumber: 155
    functionLinenumberEnd: 155
    functionName: ~Message()
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~Message()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 156
      start: 156
    functionDepth: 0
    functionLinenumber: 156
    functionLinenumberEnd: 156
    functionName: pdns::ProtoZero::Message::Message
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Message(const Message&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 157
      start: 157
    functionDepth: 0
    functionLinenumber: 157
    functionLinenumberEnd: 157
    functionName: pdns::ProtoZero::Message::Message
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Message(Message&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 158
      start: 158
    functionDepth: 0
    functionLinenumber: 158
    functionLinenumberEnd: 158
    functionName: '& operator=(const Message&)'
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Message
    signature: Message & operator=(const Message&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 159
      start: 159
    functionDepth: 0
    functionLinenumber: 159
    functionLinenumberEnd: 159
    functionName: '& operator=(Message&&)'
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Message
    signature: Message & operator=(Message&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_enum
      Src: /src/pdns/pdns/protozero.hh:166,1
    - Dst: static_cast<int32_t>
      Src: /src/pdns/pdns/protozero.hh:166,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - mtype
    argTypes:
    - MessageType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 167
      start: 164
    functionDepth: 0
    functionLinenumber: 164
    functionLinenumberEnd: 167
    functionName: pdns::ProtoZero::Message::setType
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 2
    functionsReached:
    - static_cast<int32_t>
    - pdns::ProtoZero::Message::add_enum
    linkageType: ''
    returnType: void
    signature: void setType(MessageType mtype)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_enum
      Src: /src/pdns/pdns/protozero.hh:171,1
    - Dst: static_cast<int32_t>
      Src: /src/pdns/pdns/protozero.hh:171,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - version
    argTypes:
    - HTTPVersion
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 172
      start: 169
    functionDepth: 0
    functionLinenumber: 169
    functionLinenumberEnd: 172
    functionName: pdns::ProtoZero::Message::setHTTPVersion
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 0
    functionsReached:
    - static_cast<int32_t>
    - pdns::ProtoZero::Message::add_enum
    linkageType: ''
    returnType: void
    signature: void setHTTPVersion(HTTPVersion version)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_bytes
      Src: /src/pdns/pdns/protozero.hh:176,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/protozero.hh:176,1
    - Dst: begin
      Src: /src/pdns/pdns/protozero.hh:176,1
    - Dst: size
      Src: /src/pdns/pdns/protozero.hh:176,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' uniqueId'
    argTypes:
    - boost::uuids::uuid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 177
      start: 174
    functionDepth: 0
    functionLinenumber: 174
    functionLinenumberEnd: 177
    functionName: pdns::ProtoZero::Message::setMessageIdentity
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 0
    functionsReached:
    - reinterpret_cast<const char*>
    - pdns::ProtoZero::Message::add_bytes
    - size
    - begin
    linkageType: ''
    returnType: void
    signature: void setMessageIdentity(const boost::uuids::uuid& uniqueId)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_bytes
      Src: /src/pdns/pdns/protozero.hh:181,1
    - Dst: data
      Src: /src/pdns/pdns/protozero.hh:181,1
    - Dst: length
      Src: /src/pdns/pdns/protozero.hh:181,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' serverIdentity'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 182
      start: 179
    functionDepth: 0
    functionLinenumber: 179
    functionLinenumberEnd: 182
    functionName: pdns::ProtoZero::Message::setServerIdentity
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 0
    functionsReached:
    - length
    - pdns::ProtoZero::Message::add_bytes
    - data
    linkageType: ''
    returnType: void
    signature: void setServerIdentity(const std::string& serverIdentity)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_enum
      Src: /src/pdns/pdns/protozero.hh:186,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - family
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 187
      start: 184
    functionDepth: 0
    functionLinenumber: 184
    functionLinenumberEnd: 187
    functionName: pdns::ProtoZero::Message::setSocketFamily
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 0
    functionsReached:
    - pdns::ProtoZero::Message::add_enum
    linkageType: ''
    returnType: void
    signature: void setSocketFamily(int family)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_enum
      Src: /src/pdns/pdns/protozero.hh:191,1
    - Dst: static_cast<int32_t>
      Src: /src/pdns/pdns/protozero.hh:191,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - proto
    argTypes:
    - TransportProtocol
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 192
      start: 189
    functionDepth: 0
    functionLinenumber: 189
    functionLinenumberEnd: 192
    functionName: pdns::ProtoZero::Message::setSocketProtocol
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 0
    functionsReached:
    - static_cast<int32_t>
    - pdns::ProtoZero::Message::add_enum
    linkageType: ''
    returnType: void
    signature: void setSocketProtocol(TransportProtocol proto)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: encodeComboAddress
      Src: /src/pdns/pdns/protozero.hh:196,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/protozero.hh:196,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' address'
    argTypes:
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 197
      start: 194
    functionDepth: 1
    functionLinenumber: 194
    functionLinenumberEnd: 197
    functionName: pdns::ProtoZero::Message::setFrom
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 0
    functionsReached:
    - static_cast<protozero::pbf_tag_type>
    - encodeComboAddress
    linkageType: ''
    returnType: void
    signature: void setFrom(const ComboAddress& address)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: encodeComboAddress
      Src: /src/pdns/pdns/protozero.hh:201,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/protozero.hh:201,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' address'
    argTypes:
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 202
      start: 199
    functionDepth: 1
    functionLinenumber: 199
    functionLinenumberEnd: 202
    functionName: pdns::ProtoZero::Message::setTo
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 0
    functionsReached:
    - static_cast<protozero::pbf_tag_type>
    - encodeComboAddress
    linkageType: ''
    returnType: void
    signature: void setTo(const ComboAddress& address)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint64
      Src: /src/pdns/pdns/protozero.hh:206,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - len
    argTypes:
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 207
      start: 204
    functionDepth: 0
    functionLinenumber: 204
    functionLinenumberEnd: 207
    functionName: pdns::ProtoZero::Message::setInBytes
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 0
    functionsReached:
    - pdns::ProtoZero::Message::add_uint64
    linkageType: ''
    returnType: void
    signature: void setInBytes(uint64_t len)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: gettime
      Src: /src/pdns/pdns/protozero.hh:212,1
    - Dst: pdns::ProtoZero::Message::setTime
      Src: /src/pdns/pdns/protozero.hh:214,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 215
      start: 209
    functionDepth: 0
    functionLinenumber: 209
    functionLinenumberEnd: 215
    functionName: pdns::ProtoZero::Message::setTime
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 3
    functionsReached:
    - pdns::ProtoZero::Message::setTime
    - gettime
    linkageType: ''
    returnType: void
    signature: void setTime()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint32
      Src: /src/pdns/pdns/protozero.hh:220,1
    - Dst: pdns::ProtoZero::Message::add_uint32
      Src: /src/pdns/pdns/protozero.hh:221,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - sec
    - usec
    argTypes:
    - time_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 222
      start: 217
    functionDepth: 0
    functionLinenumber: 217
    functionLinenumberEnd: 222
    functionName: pdns::ProtoZero::Message::setTime
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 3
    functionsReached:
    - pdns::ProtoZero::Message::add_uint32
    linkageType: ''
    returnType: void
    signature: void setTime(time_t sec, uint32_t usec)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint32
      Src: /src/pdns/pdns/protozero.hh:226,1
    - Dst: ntohs
      Src: /src/pdns/pdns/protozero.hh:226,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - qid
    argTypes:
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 227
      start: 224
    functionDepth: 0
    functionLinenumber: 224
    functionLinenumberEnd: 227
    functionName: pdns::ProtoZero::Message::setId
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 0
    functionsReached:
    - ntohs
    - pdns::ProtoZero::Message::add_uint32
    linkageType: ''
    returnType: void
    signature: void setId(uint16_t qid)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/protozero.hh:231,1
    - Dst: encodeDNSName
      Src: /src/pdns/pdns/protozero.hh:232,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/protozero.hh:232,1
    - Dst: protozero::pbf_writer::add_uint32
      Src: /src/pdns/pdns/protozero.hh:233,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/protozero.hh:233,1
    - Dst: protozero::pbf_writer::add_uint32
      Src: /src/pdns/pdns/protozero.hh:234,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/protozero.hh:234,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - ' qname'
    - qtype
    - qclass
    argTypes:
    - DNSName
    - uint16_t
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 235
      start: 229
    functionDepth: 0
    functionLinenumber: 229
    functionLinenumberEnd: 235
    functionName: pdns::ProtoZero::Message::setQuestion
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 1
    functionsReached:
    - static_cast<protozero::pbf_tag_type>
    - protozero::pbf_writer::add_uint32
    - encodeDNSName
    linkageType: ''
    returnType: void
    signature: void setQuestion(const DNSName& qname, uint16_t qtype, uint16_t qclass)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/protozero.hh:239,1
    - Dst: protozero::pbf_writer::add_string
      Src: /src/pdns/pdns/protozero.hh:240,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/protozero.hh:240,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/protozero.hh:241,1
    - Dst: protozero::pbf_writer::add_string
      Src: /src/pdns/pdns/protozero.hh:243,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/protozero.hh:243,1
    - Dst: protozero::pbf_writer::add_uint64
      Src: /src/pdns/pdns/protozero.hh:246,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/protozero.hh:246,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - ' key'
    - ' stringVal'
    - ' intVal'
    argTypes:
    - std::string
    - std::unordered_set<std::string>
    - std::unordered_set<int64_t>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 248
      start: 237
    functionDepth: 0
    functionLinenumber: 237
    functionLinenumberEnd: 248
    functionName: pdns::ProtoZero::Message::setMeta
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 0
    functionsReached:
    - protozero::pbf_writer::add_uint64
    - static_cast<protozero::pbf_tag_type>
    - protozero::pbf_writer::add_string
    linkageType: ''
    returnType: void
    signature: void setMeta(const std::string& key, const std::unordered_set<std::string>&
      stringVal, const std::unordered_set<int64_t>& intVal)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: encodeNetmask
      Src: /src/pdns/pdns/protozero.hh:252,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/protozero.hh:252,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' netmask'
    - mask
    argTypes:
    - Netmask
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 253
      start: 250
    functionDepth: 1
    functionLinenumber: 250
    functionLinenumberEnd: 253
    functionName: pdns::ProtoZero::Message::setEDNSSubnet
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 0
    functionsReached:
    - static_cast<protozero::pbf_tag_type>
    - encodeNetmask
    linkageType: ''
    returnType: void
    signature: void setEDNSSubnet(const Netmask& netmask, uint8_t mask)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/protozero.hh:257,1
    - Dst: pdns::ProtoZero::Message::add_string
      Src: /src/pdns/pdns/protozero.hh:258,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ' req'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 260
      start: 255
    functionDepth: 0
    functionLinenumber: 255
    functionLinenumberEnd: 260
    functionName: pdns::ProtoZero::Message::setRequestorId
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 0
    functionsReached:
    - empty
    - pdns::ProtoZero::Message::add_string
    linkageType: ''
    returnType: void
    signature: void setRequestorId(const std::string& req)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_bytes
      Src: /src/pdns/pdns/protozero.hh:264,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/protozero.hh:264,1
    - Dst: begin
      Src: /src/pdns/pdns/protozero.hh:264,1
    - Dst: size
      Src: /src/pdns/pdns/protozero.hh:264,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' uniqueId'
    argTypes:
    - boost::uuids::uuid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 265
      start: 262
    functionDepth: 0
    functionLinenumber: 262
    functionLinenumberEnd: 265
    functionName: pdns::ProtoZero::Message::setInitialRequestID
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 0
    functionsReached:
    - reinterpret_cast<const char*>
    - pdns::ProtoZero::Message::add_bytes
    - size
    - begin
    linkageType: ''
    returnType: void
    signature: void setInitialRequestID(const boost::uuids::uuid& uniqueId)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/protozero.hh:269,1
    - Dst: pdns::ProtoZero::Message::add_string
      Src: /src/pdns/pdns/protozero.hh:270,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ' deviceId'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 272
      start: 267
    functionDepth: 0
    functionLinenumber: 267
    functionLinenumberEnd: 272
    functionName: pdns::ProtoZero::Message::setDeviceId
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 0
    functionsReached:
    - empty
    - pdns::ProtoZero::Message::add_string
    linkageType: ''
    returnType: void
    signature: void setDeviceId(const std::string& deviceId)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_bool
      Src: /src/pdns/pdns/protozero.hh:276,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - nod
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 277
      start: 274
    functionDepth: 0
    functionLinenumber: 274
    functionLinenumberEnd: 277
    functionName: pdns::ProtoZero::Message::setNewlyObservedDomain
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 0
    functionsReached:
    - pdns::ProtoZero::Message::add_bool
    linkageType: ''
    returnType: void
    signature: void setNewlyObservedDomain(bool nod)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/protozero.hh:281,1
    - Dst: pdns::ProtoZero::Message::add_string
      Src: /src/pdns/pdns/protozero.hh:282,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ' name'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 284
      start: 279
    functionDepth: 0
    functionLinenumber: 279
    functionLinenumberEnd: 284
    functionName: pdns::ProtoZero::Message::setDeviceName
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 0
    functionsReached:
    - empty
    - pdns::ProtoZero::Message::add_string
    linkageType: ''
    returnType: void
    signature: void setDeviceName(const std::string& name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint32
      Src: /src/pdns/pdns/protozero.hh:288,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - port
    argTypes:
    - in_port_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 289
      start: 286
    functionDepth: 0
    functionLinenumber: 286
    functionLinenumberEnd: 289
    functionName: pdns::ProtoZero::Message::setFromPort
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 0
    functionsReached:
    - pdns::ProtoZero::Message::add_uint32
    linkageType: ''
    returnType: void
    signature: void setFromPort(in_port_t port)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint32
      Src: /src/pdns/pdns/protozero.hh:293,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - port
    argTypes:
    - in_port_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 294
      start: 291
    functionDepth: 0
    functionLinenumber: 291
    functionLinenumberEnd: 294
    functionName: pdns::ProtoZero::Message::setToPort
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 0
    functionsReached:
    - pdns::ProtoZero::Message::add_uint32
    linkageType: ''
    returnType: void
    signature: void setToPort(in_port_t port)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint64
      Src: /src/pdns/pdns/protozero.hh:298,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - wid
    argTypes:
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 299
      start: 296
    functionDepth: 0
    functionLinenumber: 296
    functionLinenumberEnd: 299
    functionName: pdns::ProtoZero::Message::setWorkerId
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 0
    functionsReached:
    - pdns::ProtoZero::Message::add_uint64
    linkageType: ''
    returnType: void
    signature: void setWorkerId(uint64_t wid)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_bool
      Src: /src/pdns/pdns/protozero.hh:303,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - hit
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 304
      start: 301
    functionDepth: 0
    functionLinenumber: 301
    functionLinenumberEnd: 304
    functionName: pdns::ProtoZero::Message::setPacketCacheHit
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 0
    functionsReached:
    - pdns::ProtoZero::Message::add_bool
    linkageType: ''
    returnType: void
    signature: void setPacketCacheHit(bool hit)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint32
      Src: /src/pdns/pdns/protozero.hh:308,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - num
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 309
      start: 306
    functionDepth: 0
    functionLinenumber: 306
    functionLinenumberEnd: 309
    functionName: pdns::ProtoZero::Message::setOutgoingQueries
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 0
    functionsReached:
    - pdns::ProtoZero::Message::add_uint32
    linkageType: ''
    returnType: void
    signature: void setOutgoingQueries(uint32_t num)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint32
      Src: /src/pdns/pdns/protozero.hh:313,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - flags
    argTypes:
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 314
      start: 311
    functionDepth: 0
    functionLinenumber: 311
    functionLinenumberEnd: 314
    functionName: pdns::ProtoZero::Message::setHeaderFlags
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 0
    functionsReached:
    - pdns::ProtoZero::Message::add_uint32
    linkageType: ''
    returnType: void
    signature: void setHeaderFlags(uint16_t flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint32
      Src: /src/pdns/pdns/protozero.hh:318,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - version
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 319
      start: 316
    functionDepth: 0
    functionLinenumber: 316
    functionLinenumberEnd: 319
    functionName: pdns::ProtoZero::Message::setEDNSVersion
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 0
    functionsReached:
    - pdns::ProtoZero::Message::add_uint32
    linkageType: ''
    returnType: void
    signature: void setEDNSVersion(uint32_t version)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/protozero.hh:323,1
    - Dst: pdns::ProtoZero::Message::add_string
      Src: /src/pdns/pdns/protozero.hh:324,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ' data'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 326
      start: 321
    functionDepth: 0
    functionLinenumber: 321
    functionLinenumberEnd: 326
    functionName: pdns::ProtoZero::Message::setOpenTelemetryData
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 0
    functionsReached:
    - empty
    - pdns::ProtoZero::Message::add_string
    linkageType: ''
    returnType: void
    signature: void setOpenTelemetryData(const std::string& data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint32
      Src: /src/pdns/pdns/protozero.hh:330,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ede
    argTypes:
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 331
      start: 328
    functionDepth: 0
    functionLinenumber: 328
    functionLinenumberEnd: 331
    functionName: pdns::ProtoZero::Message::setEDE
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 0
    functionsReached:
    - pdns::ProtoZero::Message::add_uint32
    linkageType: ''
    returnType: void
    signature: void setEDE(const uint16_t ede)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::string::empty
      Src: /src/pdns/pdns/protozero.hh:335,1
    - Dst: pdns::ProtoZero::Message::add_string
      Src: /src/pdns/pdns/protozero.hh:336,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - edeText
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 338
      start: 333
    functionDepth: 0
    functionLinenumber: 333
    functionLinenumberEnd: 338
    functionName: pdns::ProtoZero::Message::setEDEText
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 0
    functionsReached:
    - pdns::ProtoZero::Message::add_string
    - std::string::empty
    linkageType: ''
    returnType: void
    signature: void setEDEText(const std::string edeText)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_bytes
      Src: /src/pdns/pdns/protozero.hh:342,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/protozero.hh:342,1
    - Dst: data
      Src: /src/pdns/pdns/protozero.hh:342,1
    - Dst: size
      Src: /src/pdns/pdns/protozero.hh:342,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' traceID'
    argTypes:
    - std::array<uint8_t, 16>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 343
      start: 340
    functionDepth: 0
    functionLinenumber: 340
    functionLinenumberEnd: 343
    functionName: pdns::ProtoZero::Message::setOpenTelemetryTraceID
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 0
    functionsReached:
    - reinterpret_cast<const char*>
    - pdns::ProtoZero::Message::add_bytes
    - size
    - data
    linkageType: ''
    returnType: void
    signature: void setOpenTelemetryTraceID(const std::array<uint8_t, 16>& traceID)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/protozero.hh:347,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 348
      start: 345
    functionDepth: 0
    functionLinenumber: 345
    functionLinenumberEnd: 348
    functionName: pdns::ProtoZero::Message::startResponse
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 1
    functionsReached:
    - static_cast<protozero::pbf_tag_type>
    linkageType: ''
    returnType: void
    signature: void startResponse()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: commit
      Src: /src/pdns/pdns/protozero.hh:352,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 353
      start: 350
    functionDepth: 0
    functionLinenumber: 350
    functionLinenumberEnd: 353
    functionName: pdns::ProtoZero::Message::commitResponse
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 0
    functionsReached:
    - commit
    linkageType: ''
    returnType: void
    signature: void commitResponse()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint32
      Src: /src/pdns/pdns/protozero.hh:357,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/protozero.hh:357,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rcode
    argTypes:
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 358
      start: 355
    functionDepth: 0
    functionLinenumber: 355
    functionLinenumberEnd: 358
    functionName: pdns::ProtoZero::Message::setResponseCode
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 1
    functionsReached:
    - static_cast<protozero::pbf_tag_type>
    - pdns::ProtoZero::Message::add_uint32
    linkageType: ''
    returnType: void
    signature: void setResponseCode(uint8_t rcode)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint32
      Src: /src/pdns/pdns/protozero.hh:363,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/protozero.hh:363,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 364
      start: 360
    functionDepth: 0
    functionLinenumber: 360
    functionLinenumberEnd: 364
    functionName: pdns::ProtoZero::Message::setNetworkErrorResponseCode
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 0
    functionsReached:
    - static_cast<protozero::pbf_tag_type>
    - pdns::ProtoZero::Message::add_uint32
    linkageType: ''
    returnType: void
    signature: void setNetworkErrorResponseCode()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_string
      Src: /src/pdns/pdns/protozero.hh:368,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/protozero.hh:368,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' policy'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 369
      start: 366
    functionDepth: 0
    functionLinenumber: 366
    functionLinenumberEnd: 369
    functionName: pdns::ProtoZero::Message::setAppliedPolicy
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 0
    functionsReached:
    - pdns::ProtoZero::Message::add_string
    - static_cast<protozero::pbf_tag_type>
    linkageType: ''
    returnType: void
    signature: void setAppliedPolicy(const std::string& policy)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::addPolicyTag
      Src: /src/pdns/pdns/protozero.hh:374,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - ' tags'
    argTypes:
    - std::unordered_set<std::string>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 376
      start: 371
    functionDepth: 0
    functionLinenumber: 371
    functionLinenumberEnd: 376
    functionName: pdns::ProtoZero::Message::addPolicyTags
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 0
    functionsReached:
    - pdns::ProtoZero::Message::addPolicyTag
    linkageType: ''
    returnType: void
    signature: void addPolicyTags(const std::unordered_set<std::string>& tags)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_string
      Src: /src/pdns/pdns/protozero.hh:380,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/protozero.hh:380,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' tag'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 381
      start: 378
    functionDepth: 0
    functionLinenumber: 378
    functionLinenumberEnd: 381
    functionName: pdns::ProtoZero::Message::addPolicyTag
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 2
    functionsReached:
    - pdns::ProtoZero::Message::add_string
    - static_cast<protozero::pbf_tag_type>
    linkageType: ''
    returnType: void
    signature: void addPolicyTag(const string& tag)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint32
      Src: /src/pdns/pdns/protozero.hh:385,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/protozero.hh:385,1
    - Dst: pdns::ProtoZero::Message::add_uint32
      Src: /src/pdns/pdns/protozero.hh:386,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/protozero.hh:386,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - sec
    - usec
    argTypes:
    - uint32_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 387
      start: 383
    functionDepth: 0
    functionLinenumber: 383
    functionLinenumberEnd: 387
    functionName: pdns::ProtoZero::Message::setQueryTime
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 1
    functionsReached:
    - static_cast<protozero::pbf_tag_type>
    - pdns::ProtoZero::Message::add_uint32
    linkageType: ''
    returnType: void
    signature: void setQueryTime(uint32_t sec, uint32_t usec)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_enum
      Src: /src/pdns/pdns/protozero.hh:399,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/protozero.hh:399,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' writer'
    - type
    - value
    argTypes:
    - protozero::pbf_writer
    - Field
    - int32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 400
      start: 397
    functionDepth: 0
    functionLinenumber: 397
    functionLinenumberEnd: 400
    functionName: pdns::ProtoZero::Message::add_enum
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 10
    functionsReached:
    - static_cast<protozero::pbf_tag_type>
    - pdns::ProtoZero::Message::add_enum
    linkageType: ''
    returnType: void
    signature: void add_enum(protozero::pbf_writer& writer, Field type, int32_t value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_bool
      Src: /src/pdns/pdns/protozero.hh:404,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/protozero.hh:404,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' writer'
    - type
    - value
    argTypes:
    - protozero::pbf_writer
    - Field
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 405
      start: 402
    functionDepth: 0
    functionLinenumber: 402
    functionLinenumberEnd: 405
    functionName: pdns::ProtoZero::Message::add_bool
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 6
    functionsReached:
    - static_cast<protozero::pbf_tag_type>
    - pdns::ProtoZero::Message::add_bool
    linkageType: ''
    returnType: void
    signature: void add_bool(protozero::pbf_writer& writer, Field type, bool value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint32
      Src: /src/pdns/pdns/protozero.hh:409,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/protozero.hh:409,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' writer'
    - type
    - value
    argTypes:
    - protozero::pbf_writer
    - Field
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 410
      start: 407
    functionDepth: 0
    functionLinenumber: 407
    functionLinenumberEnd: 410
    functionName: pdns::ProtoZero::Message::add_uint32
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 24
    functionsReached:
    - static_cast<protozero::pbf_tag_type>
    - pdns::ProtoZero::Message::add_uint32
    linkageType: ''
    returnType: void
    signature: void add_uint32(protozero::pbf_writer& writer, Field type, uint32_t
      value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint64
      Src: /src/pdns/pdns/protozero.hh:414,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/protozero.hh:414,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' writer'
    - type
    - value
    argTypes:
    - protozero::pbf_writer
    - Field
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 415
      start: 412
    functionDepth: 0
    functionLinenumber: 412
    functionLinenumberEnd: 415
    functionName: pdns::ProtoZero::Message::add_uint64
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 6
    functionsReached:
    - pdns::ProtoZero::Message::add_uint64
    - static_cast<protozero::pbf_tag_type>
    linkageType: ''
    returnType: void
    signature: void add_uint64(protozero::pbf_writer& writer, Field type, uint64_t
      value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_bytes
      Src: /src/pdns/pdns/protozero.hh:419,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/protozero.hh:419,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - ' writer'
    - type
    - data
    - len
    argTypes:
    - protozero::pbf_writer
    - Field
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 420
      start: 417
    functionDepth: 0
    functionLinenumber: 417
    functionLinenumberEnd: 420
    functionName: pdns::ProtoZero::Message::add_bytes
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 10
    functionsReached:
    - static_cast<protozero::pbf_tag_type>
    - pdns::ProtoZero::Message::add_bytes
    linkageType: ''
    returnType: void
    signature: void add_bytes(protozero::pbf_writer& writer, Field type, const char*
      data, size_t len)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_string
      Src: /src/pdns/pdns/protozero.hh:424,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/protozero.hh:424,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' writer'
    - type
    - ' str'
    argTypes:
    - protozero::pbf_writer
    - Field
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 425
      start: 422
    functionDepth: 0
    functionLinenumber: 422
    functionLinenumberEnd: 425
    functionName: pdns::ProtoZero::Message::add_string
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 16
    functionsReached:
    - pdns::ProtoZero::Message::add_string
    - static_cast<protozero::pbf_tag_type>
    linkageType: ''
    returnType: void
    signature: void add_string(protozero::pbf_writer& writer, Field type, const std::string&
      str)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' buffer'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 154
      start: 151
    functionDepth: 0
    functionLinenumber: 151
    functionLinenumberEnd: 154
    functionName: pdns::ProtoZero::Message::Message
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Message(std::string& buffer)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 155
    functionDepth: 0
    functionLinenumber: 155
    functionLinenumberEnd: 155
    functionName: ~Message()
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~Message()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 156
      start: 156
    functionDepth: 0
    functionLinenumber: 156
    functionLinenumberEnd: 156
    functionName: pdns::ProtoZero::Message::Message
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Message(const Message&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 157
      start: 157
    functionDepth: 0
    functionLinenumber: 157
    functionLinenumberEnd: 157
    functionName: pdns::ProtoZero::Message::Message
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Message(Message&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 158
      start: 158
    functionDepth: 0
    functionLinenumber: 158
    functionLinenumberEnd: 158
    functionName: '& operator=(const Message&)'
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Message
    signature: Message & operator=(const Message&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 159
      start: 159
    functionDepth: 0
    functionLinenumber: 159
    functionLinenumberEnd: 159
    functionName: '& operator=(Message&&)'
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Message
    signature: Message & operator=(Message&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_enum
      Src: /src/pdns/pdns/protozero.hh:166,1
    - Dst: static_cast<int32_t>
      Src: /src/pdns/pdns/protozero.hh:166,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - mtype
    argTypes:
    - MessageType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 167
      start: 164
    functionDepth: 0
    functionLinenumber: 164
    functionLinenumberEnd: 167
    functionName: pdns::ProtoZero::Message::setType
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 2
    functionsReached:
    - static_cast<int32_t>
    - pdns::ProtoZero::Message::add_enum
    linkageType: ''
    returnType: void
    signature: void setType(MessageType mtype)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_enum
      Src: /src/pdns/pdns/protozero.hh:171,1
    - Dst: static_cast<int32_t>
      Src: /src/pdns/pdns/protozero.hh:171,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - version
    argTypes:
    - HTTPVersion
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 172
      start: 169
    functionDepth: 0
    functionLinenumber: 169
    functionLinenumberEnd: 172
    functionName: pdns::ProtoZero::Message::setHTTPVersion
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 0
    functionsReached:
    - static_cast<int32_t>
    - pdns::ProtoZero::Message::add_enum
    linkageType: ''
    returnType: void
    signature: void setHTTPVersion(HTTPVersion version)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_bytes
      Src: /src/pdns/pdns/protozero.hh:176,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/protozero.hh:176,1
    - Dst: begin
      Src: /src/pdns/pdns/protozero.hh:176,1
    - Dst: size
      Src: /src/pdns/pdns/protozero.hh:176,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' uniqueId'
    argTypes:
    - boost::uuids::uuid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 177
      start: 174
    functionDepth: 0
    functionLinenumber: 174
    functionLinenumberEnd: 177
    functionName: pdns::ProtoZero::Message::setMessageIdentity
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 0
    functionsReached:
    - reinterpret_cast<const char*>
    - pdns::ProtoZero::Message::add_bytes
    - size
    - begin
    linkageType: ''
    returnType: void
    signature: void setMessageIdentity(const boost::uuids::uuid& uniqueId)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_bytes
      Src: /src/pdns/pdns/protozero.hh:181,1
    - Dst: data
      Src: /src/pdns/pdns/protozero.hh:181,1
    - Dst: length
      Src: /src/pdns/pdns/protozero.hh:181,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' serverIdentity'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 182
      start: 179
    functionDepth: 0
    functionLinenumber: 179
    functionLinenumberEnd: 182
    functionName: pdns::ProtoZero::Message::setServerIdentity
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 0
    functionsReached:
    - length
    - pdns::ProtoZero::Message::add_bytes
    - data
    linkageType: ''
    returnType: void
    signature: void setServerIdentity(const std::string& serverIdentity)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_enum
      Src: /src/pdns/pdns/protozero.hh:186,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - family
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 187
      start: 184
    functionDepth: 0
    functionLinenumber: 184
    functionLinenumberEnd: 187
    functionName: pdns::ProtoZero::Message::setSocketFamily
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 0
    functionsReached:
    - pdns::ProtoZero::Message::add_enum
    linkageType: ''
    returnType: void
    signature: void setSocketFamily(int family)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_enum
      Src: /src/pdns/pdns/protozero.hh:191,1
    - Dst: static_cast<int32_t>
      Src: /src/pdns/pdns/protozero.hh:191,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - proto
    argTypes:
    - TransportProtocol
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 192
      start: 189
    functionDepth: 0
    functionLinenumber: 189
    functionLinenumberEnd: 192
    functionName: pdns::ProtoZero::Message::setSocketProtocol
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 0
    functionsReached:
    - static_cast<int32_t>
    - pdns::ProtoZero::Message::add_enum
    linkageType: ''
    returnType: void
    signature: void setSocketProtocol(TransportProtocol proto)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: encodeComboAddress
      Src: /src/pdns/pdns/protozero.hh:196,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/protozero.hh:196,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' address'
    argTypes:
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 197
      start: 194
    functionDepth: 1
    functionLinenumber: 194
    functionLinenumberEnd: 197
    functionName: pdns::ProtoZero::Message::setFrom
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 0
    functionsReached:
    - static_cast<protozero::pbf_tag_type>
    - encodeComboAddress
    linkageType: ''
    returnType: void
    signature: void setFrom(const ComboAddress& address)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: encodeComboAddress
      Src: /src/pdns/pdns/protozero.hh:201,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/protozero.hh:201,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' address'
    argTypes:
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 202
      start: 199
    functionDepth: 1
    functionLinenumber: 199
    functionLinenumberEnd: 202
    functionName: pdns::ProtoZero::Message::setTo
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 0
    functionsReached:
    - static_cast<protozero::pbf_tag_type>
    - encodeComboAddress
    linkageType: ''
    returnType: void
    signature: void setTo(const ComboAddress& address)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint64
      Src: /src/pdns/pdns/protozero.hh:206,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - len
    argTypes:
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 207
      start: 204
    functionDepth: 0
    functionLinenumber: 204
    functionLinenumberEnd: 207
    functionName: pdns::ProtoZero::Message::setInBytes
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 0
    functionsReached:
    - pdns::ProtoZero::Message::add_uint64
    linkageType: ''
    returnType: void
    signature: void setInBytes(uint64_t len)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: gettime
      Src: /src/pdns/pdns/protozero.hh:212,1
    - Dst: pdns::ProtoZero::Message::setTime
      Src: /src/pdns/pdns/protozero.hh:214,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 215
      start: 209
    functionDepth: 0
    functionLinenumber: 209
    functionLinenumberEnd: 215
    functionName: pdns::ProtoZero::Message::setTime
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 4
    functionsReached:
    - pdns::ProtoZero::Message::setTime
    - gettime
    linkageType: ''
    returnType: void
    signature: void setTime()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint32
      Src: /src/pdns/pdns/protozero.hh:220,1
    - Dst: pdns::ProtoZero::Message::add_uint32
      Src: /src/pdns/pdns/protozero.hh:221,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - sec
    - usec
    argTypes:
    - time_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 222
      start: 217
    functionDepth: 0
    functionLinenumber: 217
    functionLinenumberEnd: 222
    functionName: pdns::ProtoZero::Message::setTime
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 4
    functionsReached:
    - pdns::ProtoZero::Message::add_uint32
    linkageType: ''
    returnType: void
    signature: void setTime(time_t sec, uint32_t usec)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint32
      Src: /src/pdns/pdns/protozero.hh:226,1
    - Dst: ntohs
      Src: /src/pdns/pdns/protozero.hh:226,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - qid
    argTypes:
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 227
      start: 224
    functionDepth: 0
    functionLinenumber: 224
    functionLinenumberEnd: 227
    functionName: pdns::ProtoZero::Message::setId
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 0
    functionsReached:
    - ntohs
    - pdns::ProtoZero::Message::add_uint32
    linkageType: ''
    returnType: void
    signature: void setId(uint16_t qid)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/protozero.hh:231,1
    - Dst: encodeDNSName
      Src: /src/pdns/pdns/protozero.hh:232,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/protozero.hh:232,1
    - Dst: protozero::pbf_writer::add_uint32
      Src: /src/pdns/pdns/protozero.hh:233,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/protozero.hh:233,1
    - Dst: protozero::pbf_writer::add_uint32
      Src: /src/pdns/pdns/protozero.hh:234,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/protozero.hh:234,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - ' qname'
    - qtype
    - qclass
    argTypes:
    - DNSName
    - uint16_t
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 235
      start: 229
    functionDepth: 0
    functionLinenumber: 229
    functionLinenumberEnd: 235
    functionName: pdns::ProtoZero::Message::setQuestion
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 1
    functionsReached:
    - static_cast<protozero::pbf_tag_type>
    - protozero::pbf_writer::add_uint32
    - encodeDNSName
    linkageType: ''
    returnType: void
    signature: void setQuestion(const DNSName& qname, uint16_t qtype, uint16_t qclass)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/protozero.hh:239,1
    - Dst: protozero::pbf_writer::add_string
      Src: /src/pdns/pdns/protozero.hh:240,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/protozero.hh:240,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/protozero.hh:241,1
    - Dst: protozero::pbf_writer::add_string
      Src: /src/pdns/pdns/protozero.hh:243,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/protozero.hh:243,1
    - Dst: protozero::pbf_writer::add_uint64
      Src: /src/pdns/pdns/protozero.hh:246,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/protozero.hh:246,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - ' key'
    - ' stringVal'
    - ' intVal'
    argTypes:
    - std::string
    - std::unordered_set<std::string>
    - std::unordered_set<int64_t>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 248
      start: 237
    functionDepth: 0
    functionLinenumber: 237
    functionLinenumberEnd: 248
    functionName: pdns::ProtoZero::Message::setMeta
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 0
    functionsReached:
    - protozero::pbf_writer::add_uint64
    - static_cast<protozero::pbf_tag_type>
    - protozero::pbf_writer::add_string
    linkageType: ''
    returnType: void
    signature: void setMeta(const std::string& key, const std::unordered_set<std::string>&
      stringVal, const std::unordered_set<int64_t>& intVal)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: encodeNetmask
      Src: /src/pdns/pdns/protozero.hh:252,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/protozero.hh:252,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' netmask'
    - mask
    argTypes:
    - Netmask
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 253
      start: 250
    functionDepth: 1
    functionLinenumber: 250
    functionLinenumberEnd: 253
    functionName: pdns::ProtoZero::Message::setEDNSSubnet
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 0
    functionsReached:
    - static_cast<protozero::pbf_tag_type>
    - encodeNetmask
    linkageType: ''
    returnType: void
    signature: void setEDNSSubnet(const Netmask& netmask, uint8_t mask)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/protozero.hh:257,1
    - Dst: pdns::ProtoZero::Message::add_string
      Src: /src/pdns/pdns/protozero.hh:258,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ' req'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 260
      start: 255
    functionDepth: 0
    functionLinenumber: 255
    functionLinenumberEnd: 260
    functionName: pdns::ProtoZero::Message::setRequestorId
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 0
    functionsReached:
    - empty
    - pdns::ProtoZero::Message::add_string
    linkageType: ''
    returnType: void
    signature: void setRequestorId(const std::string& req)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_bytes
      Src: /src/pdns/pdns/protozero.hh:264,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/protozero.hh:264,1
    - Dst: begin
      Src: /src/pdns/pdns/protozero.hh:264,1
    - Dst: size
      Src: /src/pdns/pdns/protozero.hh:264,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' uniqueId'
    argTypes:
    - boost::uuids::uuid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 265
      start: 262
    functionDepth: 0
    functionLinenumber: 262
    functionLinenumberEnd: 265
    functionName: pdns::ProtoZero::Message::setInitialRequestID
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 0
    functionsReached:
    - reinterpret_cast<const char*>
    - pdns::ProtoZero::Message::add_bytes
    - size
    - begin
    linkageType: ''
    returnType: void
    signature: void setInitialRequestID(const boost::uuids::uuid& uniqueId)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/protozero.hh:269,1
    - Dst: pdns::ProtoZero::Message::add_string
      Src: /src/pdns/pdns/protozero.hh:270,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ' deviceId'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 272
      start: 267
    functionDepth: 0
    functionLinenumber: 267
    functionLinenumberEnd: 272
    functionName: pdns::ProtoZero::Message::setDeviceId
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 0
    functionsReached:
    - empty
    - pdns::ProtoZero::Message::add_string
    linkageType: ''
    returnType: void
    signature: void setDeviceId(const std::string& deviceId)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_bool
      Src: /src/pdns/pdns/protozero.hh:276,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - nod
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 277
      start: 274
    functionDepth: 0
    functionLinenumber: 274
    functionLinenumberEnd: 277
    functionName: pdns::ProtoZero::Message::setNewlyObservedDomain
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 0
    functionsReached:
    - pdns::ProtoZero::Message::add_bool
    linkageType: ''
    returnType: void
    signature: void setNewlyObservedDomain(bool nod)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/protozero.hh:281,1
    - Dst: pdns::ProtoZero::Message::add_string
      Src: /src/pdns/pdns/protozero.hh:282,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ' name'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 284
      start: 279
    functionDepth: 0
    functionLinenumber: 279
    functionLinenumberEnd: 284
    functionName: pdns::ProtoZero::Message::setDeviceName
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 0
    functionsReached:
    - empty
    - pdns::ProtoZero::Message::add_string
    linkageType: ''
    returnType: void
    signature: void setDeviceName(const std::string& name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint32
      Src: /src/pdns/pdns/protozero.hh:288,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - port
    argTypes:
    - in_port_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 289
      start: 286
    functionDepth: 0
    functionLinenumber: 286
    functionLinenumberEnd: 289
    functionName: pdns::ProtoZero::Message::setFromPort
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 0
    functionsReached:
    - pdns::ProtoZero::Message::add_uint32
    linkageType: ''
    returnType: void
    signature: void setFromPort(in_port_t port)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint32
      Src: /src/pdns/pdns/protozero.hh:293,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - port
    argTypes:
    - in_port_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 294
      start: 291
    functionDepth: 0
    functionLinenumber: 291
    functionLinenumberEnd: 294
    functionName: pdns::ProtoZero::Message::setToPort
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 0
    functionsReached:
    - pdns::ProtoZero::Message::add_uint32
    linkageType: ''
    returnType: void
    signature: void setToPort(in_port_t port)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint64
      Src: /src/pdns/pdns/protozero.hh:298,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - wid
    argTypes:
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 299
      start: 296
    functionDepth: 0
    functionLinenumber: 296
    functionLinenumberEnd: 299
    functionName: pdns::ProtoZero::Message::setWorkerId
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 0
    functionsReached:
    - pdns::ProtoZero::Message::add_uint64
    linkageType: ''
    returnType: void
    signature: void setWorkerId(uint64_t wid)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_bool
      Src: /src/pdns/pdns/protozero.hh:303,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - hit
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 304
      start: 301
    functionDepth: 0
    functionLinenumber: 301
    functionLinenumberEnd: 304
    functionName: pdns::ProtoZero::Message::setPacketCacheHit
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 0
    functionsReached:
    - pdns::ProtoZero::Message::add_bool
    linkageType: ''
    returnType: void
    signature: void setPacketCacheHit(bool hit)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint32
      Src: /src/pdns/pdns/protozero.hh:308,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - num
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 309
      start: 306
    functionDepth: 0
    functionLinenumber: 306
    functionLinenumberEnd: 309
    functionName: pdns::ProtoZero::Message::setOutgoingQueries
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 0
    functionsReached:
    - pdns::ProtoZero::Message::add_uint32
    linkageType: ''
    returnType: void
    signature: void setOutgoingQueries(uint32_t num)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint32
      Src: /src/pdns/pdns/protozero.hh:313,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - flags
    argTypes:
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 314
      start: 311
    functionDepth: 0
    functionLinenumber: 311
    functionLinenumberEnd: 314
    functionName: pdns::ProtoZero::Message::setHeaderFlags
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 0
    functionsReached:
    - pdns::ProtoZero::Message::add_uint32
    linkageType: ''
    returnType: void
    signature: void setHeaderFlags(uint16_t flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint32
      Src: /src/pdns/pdns/protozero.hh:318,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - version
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 319
      start: 316
    functionDepth: 0
    functionLinenumber: 316
    functionLinenumberEnd: 319
    functionName: pdns::ProtoZero::Message::setEDNSVersion
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 0
    functionsReached:
    - pdns::ProtoZero::Message::add_uint32
    linkageType: ''
    returnType: void
    signature: void setEDNSVersion(uint32_t version)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/protozero.hh:323,1
    - Dst: pdns::ProtoZero::Message::add_string
      Src: /src/pdns/pdns/protozero.hh:324,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ' data'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 326
      start: 321
    functionDepth: 0
    functionLinenumber: 321
    functionLinenumberEnd: 326
    functionName: pdns::ProtoZero::Message::setOpenTelemetryData
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 0
    functionsReached:
    - empty
    - pdns::ProtoZero::Message::add_string
    linkageType: ''
    returnType: void
    signature: void setOpenTelemetryData(const std::string& data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint32
      Src: /src/pdns/pdns/protozero.hh:330,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ede
    argTypes:
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 331
      start: 328
    functionDepth: 0
    functionLinenumber: 328
    functionLinenumberEnd: 331
    functionName: pdns::ProtoZero::Message::setEDE
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 0
    functionsReached:
    - pdns::ProtoZero::Message::add_uint32
    linkageType: ''
    returnType: void
    signature: void setEDE(const uint16_t ede)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::string::empty
      Src: /src/pdns/pdns/protozero.hh:335,1
    - Dst: pdns::ProtoZero::Message::add_string
      Src: /src/pdns/pdns/protozero.hh:336,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - edeText
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 338
      start: 333
    functionDepth: 0
    functionLinenumber: 333
    functionLinenumberEnd: 338
    functionName: pdns::ProtoZero::Message::setEDEText
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 0
    functionsReached:
    - pdns::ProtoZero::Message::add_string
    - std::string::empty
    linkageType: ''
    returnType: void
    signature: void setEDEText(const std::string edeText)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_bytes
      Src: /src/pdns/pdns/protozero.hh:342,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/protozero.hh:342,1
    - Dst: data
      Src: /src/pdns/pdns/protozero.hh:342,1
    - Dst: size
      Src: /src/pdns/pdns/protozero.hh:342,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' traceID'
    argTypes:
    - std::array<uint8_t, 16>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 343
      start: 340
    functionDepth: 0
    functionLinenumber: 340
    functionLinenumberEnd: 343
    functionName: pdns::ProtoZero::Message::setOpenTelemetryTraceID
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 0
    functionsReached:
    - reinterpret_cast<const char*>
    - pdns::ProtoZero::Message::add_bytes
    - size
    - data
    linkageType: ''
    returnType: void
    signature: void setOpenTelemetryTraceID(const std::array<uint8_t, 16>& traceID)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/protozero.hh:347,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 348
      start: 345
    functionDepth: 0
    functionLinenumber: 345
    functionLinenumberEnd: 348
    functionName: pdns::ProtoZero::Message::startResponse
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 1
    functionsReached:
    - static_cast<protozero::pbf_tag_type>
    linkageType: ''
    returnType: void
    signature: void startResponse()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: commit
      Src: /src/pdns/pdns/protozero.hh:352,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 353
      start: 350
    functionDepth: 0
    functionLinenumber: 350
    functionLinenumberEnd: 353
    functionName: pdns::ProtoZero::Message::commitResponse
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 0
    functionsReached:
    - commit
    linkageType: ''
    returnType: void
    signature: void commitResponse()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint32
      Src: /src/pdns/pdns/protozero.hh:357,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/protozero.hh:357,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rcode
    argTypes:
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 358
      start: 355
    functionDepth: 0
    functionLinenumber: 355
    functionLinenumberEnd: 358
    functionName: pdns::ProtoZero::Message::setResponseCode
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 1
    functionsReached:
    - static_cast<protozero::pbf_tag_type>
    - pdns::ProtoZero::Message::add_uint32
    linkageType: ''
    returnType: void
    signature: void setResponseCode(uint8_t rcode)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint32
      Src: /src/pdns/pdns/protozero.hh:363,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/protozero.hh:363,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 364
      start: 360
    functionDepth: 0
    functionLinenumber: 360
    functionLinenumberEnd: 364
    functionName: pdns::ProtoZero::Message::setNetworkErrorResponseCode
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 0
    functionsReached:
    - static_cast<protozero::pbf_tag_type>
    - pdns::ProtoZero::Message::add_uint32
    linkageType: ''
    returnType: void
    signature: void setNetworkErrorResponseCode()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_string
      Src: /src/pdns/pdns/protozero.hh:368,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/protozero.hh:368,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' policy'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 369
      start: 366
    functionDepth: 0
    functionLinenumber: 366
    functionLinenumberEnd: 369
    functionName: pdns::ProtoZero::Message::setAppliedPolicy
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 0
    functionsReached:
    - pdns::ProtoZero::Message::add_string
    - static_cast<protozero::pbf_tag_type>
    linkageType: ''
    returnType: void
    signature: void setAppliedPolicy(const std::string& policy)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::addPolicyTag
      Src: /src/pdns/pdns/protozero.hh:374,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - ' tags'
    argTypes:
    - std::unordered_set<std::string>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 376
      start: 371
    functionDepth: 0
    functionLinenumber: 371
    functionLinenumberEnd: 376
    functionName: pdns::ProtoZero::Message::addPolicyTags
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 0
    functionsReached:
    - pdns::ProtoZero::Message::addPolicyTag
    linkageType: ''
    returnType: void
    signature: void addPolicyTags(const std::unordered_set<std::string>& tags)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_string
      Src: /src/pdns/pdns/protozero.hh:380,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/protozero.hh:380,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' tag'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 381
      start: 378
    functionDepth: 0
    functionLinenumber: 378
    functionLinenumberEnd: 381
    functionName: pdns::ProtoZero::Message::addPolicyTag
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 3
    functionsReached:
    - pdns::ProtoZero::Message::add_string
    - static_cast<protozero::pbf_tag_type>
    linkageType: ''
    returnType: void
    signature: void addPolicyTag(const string& tag)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint32
      Src: /src/pdns/pdns/protozero.hh:385,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/protozero.hh:385,1
    - Dst: pdns::ProtoZero::Message::add_uint32
      Src: /src/pdns/pdns/protozero.hh:386,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/protozero.hh:386,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - sec
    - usec
    argTypes:
    - uint32_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 387
      start: 383
    functionDepth: 0
    functionLinenumber: 383
    functionLinenumberEnd: 387
    functionName: pdns::ProtoZero::Message::setQueryTime
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 1
    functionsReached:
    - static_cast<protozero::pbf_tag_type>
    - pdns::ProtoZero::Message::add_uint32
    linkageType: ''
    returnType: void
    signature: void setQueryTime(uint32_t sec, uint32_t usec)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_enum
      Src: /src/pdns/pdns/protozero.hh:399,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/protozero.hh:399,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' writer'
    - type
    - value
    argTypes:
    - protozero::pbf_writer
    - Field
    - int32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 400
      start: 397
    functionDepth: 0
    functionLinenumber: 397
    functionLinenumberEnd: 400
    functionName: pdns::ProtoZero::Message::add_enum
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 15
    functionsReached:
    - static_cast<protozero::pbf_tag_type>
    - pdns::ProtoZero::Message::add_enum
    linkageType: ''
    returnType: void
    signature: void add_enum(protozero::pbf_writer& writer, Field type, int32_t value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_bool
      Src: /src/pdns/pdns/protozero.hh:404,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/protozero.hh:404,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' writer'
    - type
    - value
    argTypes:
    - protozero::pbf_writer
    - Field
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 405
      start: 402
    functionDepth: 0
    functionLinenumber: 402
    functionLinenumberEnd: 405
    functionName: pdns::ProtoZero::Message::add_bool
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 9
    functionsReached:
    - static_cast<protozero::pbf_tag_type>
    - pdns::ProtoZero::Message::add_bool
    linkageType: ''
    returnType: void
    signature: void add_bool(protozero::pbf_writer& writer, Field type, bool value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint32
      Src: /src/pdns/pdns/protozero.hh:409,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/protozero.hh:409,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' writer'
    - type
    - value
    argTypes:
    - protozero::pbf_writer
    - Field
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 410
      start: 407
    functionDepth: 0
    functionLinenumber: 407
    functionLinenumberEnd: 410
    functionName: pdns::ProtoZero::Message::add_uint32
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 36
    functionsReached:
    - static_cast<protozero::pbf_tag_type>
    - pdns::ProtoZero::Message::add_uint32
    linkageType: ''
    returnType: void
    signature: void add_uint32(protozero::pbf_writer& writer, Field type, uint32_t
      value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint64
      Src: /src/pdns/pdns/protozero.hh:414,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/protozero.hh:414,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' writer'
    - type
    - value
    argTypes:
    - protozero::pbf_writer
    - Field
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 415
      start: 412
    functionDepth: 0
    functionLinenumber: 412
    functionLinenumberEnd: 415
    functionName: pdns::ProtoZero::Message::add_uint64
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 9
    functionsReached:
    - pdns::ProtoZero::Message::add_uint64
    - static_cast<protozero::pbf_tag_type>
    linkageType: ''
    returnType: void
    signature: void add_uint64(protozero::pbf_writer& writer, Field type, uint64_t
      value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_bytes
      Src: /src/pdns/pdns/protozero.hh:419,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/protozero.hh:419,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - ' writer'
    - type
    - data
    - len
    argTypes:
    - protozero::pbf_writer
    - Field
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 420
      start: 417
    functionDepth: 0
    functionLinenumber: 417
    functionLinenumberEnd: 420
    functionName: pdns::ProtoZero::Message::add_bytes
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 15
    functionsReached:
    - static_cast<protozero::pbf_tag_type>
    - pdns::ProtoZero::Message::add_bytes
    linkageType: ''
    returnType: void
    signature: void add_bytes(protozero::pbf_writer& writer, Field type, const char*
      data, size_t len)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_string
      Src: /src/pdns/pdns/protozero.hh:424,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/protozero.hh:424,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' writer'
    - type
    - ' str'
    argTypes:
    - protozero::pbf_writer
    - Field
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 425
      start: 422
    functionDepth: 0
    functionLinenumber: 422
    functionLinenumberEnd: 425
    functionName: pdns::ProtoZero::Message::add_string
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 24
    functionsReached:
    - pdns::ProtoZero::Message::add_string
    - static_cast<protozero::pbf_tag_type>
    linkageType: ''
    returnType: void
    signature: void add_string(protozero::pbf_writer& writer, Field type, const std::string&
      str)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' buffer'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 154
      start: 151
    functionDepth: 0
    functionLinenumber: 151
    functionLinenumberEnd: 154
    functionName: pdns::ProtoZero::Message::Message
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Message(std::string& buffer)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 155
    functionDepth: 0
    functionLinenumber: 155
    functionLinenumberEnd: 155
    functionName: ~Message()
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~Message()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 156
      start: 156
    functionDepth: 0
    functionLinenumber: 156
    functionLinenumberEnd: 156
    functionName: pdns::ProtoZero::Message::Message
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Message(const Message&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 157
      start: 157
    functionDepth: 0
    functionLinenumber: 157
    functionLinenumberEnd: 157
    functionName: pdns::ProtoZero::Message::Message
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Message(Message&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 158
      start: 158
    functionDepth: 0
    functionLinenumber: 158
    functionLinenumberEnd: 158
    functionName: '& operator=(const Message&)'
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Message
    signature: Message & operator=(const Message&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 159
      start: 159
    functionDepth: 0
    functionLinenumber: 159
    functionLinenumberEnd: 159
    functionName: '& operator=(Message&&)'
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Message
    signature: Message & operator=(Message&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_enum
      Src: /src/pdns/pdns/protozero.hh:166,1
    - Dst: static_cast<int32_t>
      Src: /src/pdns/pdns/protozero.hh:166,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - mtype
    argTypes:
    - MessageType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 167
      start: 164
    functionDepth: 0
    functionLinenumber: 164
    functionLinenumberEnd: 167
    functionName: pdns::ProtoZero::Message::setType
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 2
    functionsReached:
    - static_cast<int32_t>
    - pdns::ProtoZero::Message::add_enum
    linkageType: ''
    returnType: void
    signature: void setType(MessageType mtype)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_enum
      Src: /src/pdns/pdns/protozero.hh:171,1
    - Dst: static_cast<int32_t>
      Src: /src/pdns/pdns/protozero.hh:171,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - version
    argTypes:
    - HTTPVersion
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 172
      start: 169
    functionDepth: 0
    functionLinenumber: 169
    functionLinenumberEnd: 172
    functionName: pdns::ProtoZero::Message::setHTTPVersion
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 0
    functionsReached:
    - static_cast<int32_t>
    - pdns::ProtoZero::Message::add_enum
    linkageType: ''
    returnType: void
    signature: void setHTTPVersion(HTTPVersion version)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_bytes
      Src: /src/pdns/pdns/protozero.hh:176,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/protozero.hh:176,1
    - Dst: begin
      Src: /src/pdns/pdns/protozero.hh:176,1
    - Dst: size
      Src: /src/pdns/pdns/protozero.hh:176,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' uniqueId'
    argTypes:
    - boost::uuids::uuid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 177
      start: 174
    functionDepth: 0
    functionLinenumber: 174
    functionLinenumberEnd: 177
    functionName: pdns::ProtoZero::Message::setMessageIdentity
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 0
    functionsReached:
    - reinterpret_cast<const char*>
    - pdns::ProtoZero::Message::add_bytes
    - size
    - begin
    linkageType: ''
    returnType: void
    signature: void setMessageIdentity(const boost::uuids::uuid& uniqueId)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_bytes
      Src: /src/pdns/pdns/protozero.hh:181,1
    - Dst: data
      Src: /src/pdns/pdns/protozero.hh:181,1
    - Dst: length
      Src: /src/pdns/pdns/protozero.hh:181,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' serverIdentity'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 182
      start: 179
    functionDepth: 0
    functionLinenumber: 179
    functionLinenumberEnd: 182
    functionName: pdns::ProtoZero::Message::setServerIdentity
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 0
    functionsReached:
    - length
    - pdns::ProtoZero::Message::add_bytes
    - data
    linkageType: ''
    returnType: void
    signature: void setServerIdentity(const std::string& serverIdentity)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_enum
      Src: /src/pdns/pdns/protozero.hh:186,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - family
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 187
      start: 184
    functionDepth: 0
    functionLinenumber: 184
    functionLinenumberEnd: 187
    functionName: pdns::ProtoZero::Message::setSocketFamily
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 0
    functionsReached:
    - pdns::ProtoZero::Message::add_enum
    linkageType: ''
    returnType: void
    signature: void setSocketFamily(int family)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_enum
      Src: /src/pdns/pdns/protozero.hh:191,1
    - Dst: static_cast<int32_t>
      Src: /src/pdns/pdns/protozero.hh:191,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - proto
    argTypes:
    - TransportProtocol
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 192
      start: 189
    functionDepth: 0
    functionLinenumber: 189
    functionLinenumberEnd: 192
    functionName: pdns::ProtoZero::Message::setSocketProtocol
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 0
    functionsReached:
    - static_cast<int32_t>
    - pdns::ProtoZero::Message::add_enum
    linkageType: ''
    returnType: void
    signature: void setSocketProtocol(TransportProtocol proto)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: encodeComboAddress
      Src: /src/pdns/pdns/protozero.hh:196,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/protozero.hh:196,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' address'
    argTypes:
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 197
      start: 194
    functionDepth: 1
    functionLinenumber: 194
    functionLinenumberEnd: 197
    functionName: pdns::ProtoZero::Message::setFrom
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 0
    functionsReached:
    - static_cast<protozero::pbf_tag_type>
    - encodeComboAddress
    linkageType: ''
    returnType: void
    signature: void setFrom(const ComboAddress& address)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: encodeComboAddress
      Src: /src/pdns/pdns/protozero.hh:201,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/protozero.hh:201,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' address'
    argTypes:
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 202
      start: 199
    functionDepth: 1
    functionLinenumber: 199
    functionLinenumberEnd: 202
    functionName: pdns::ProtoZero::Message::setTo
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 0
    functionsReached:
    - static_cast<protozero::pbf_tag_type>
    - encodeComboAddress
    linkageType: ''
    returnType: void
    signature: void setTo(const ComboAddress& address)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint64
      Src: /src/pdns/pdns/protozero.hh:206,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - len
    argTypes:
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 207
      start: 204
    functionDepth: 0
    functionLinenumber: 204
    functionLinenumberEnd: 207
    functionName: pdns::ProtoZero::Message::setInBytes
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 0
    functionsReached:
    - pdns::ProtoZero::Message::add_uint64
    linkageType: ''
    returnType: void
    signature: void setInBytes(uint64_t len)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: gettime
      Src: /src/pdns/pdns/protozero.hh:212,1
    - Dst: pdns::ProtoZero::Message::setTime
      Src: /src/pdns/pdns/protozero.hh:214,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 215
      start: 209
    functionDepth: 0
    functionLinenumber: 209
    functionLinenumberEnd: 215
    functionName: pdns::ProtoZero::Message::setTime
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 5
    functionsReached:
    - pdns::ProtoZero::Message::setTime
    - gettime
    linkageType: ''
    returnType: void
    signature: void setTime()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint32
      Src: /src/pdns/pdns/protozero.hh:220,1
    - Dst: pdns::ProtoZero::Message::add_uint32
      Src: /src/pdns/pdns/protozero.hh:221,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - sec
    - usec
    argTypes:
    - time_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 222
      start: 217
    functionDepth: 0
    functionLinenumber: 217
    functionLinenumberEnd: 222
    functionName: pdns::ProtoZero::Message::setTime
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 5
    functionsReached:
    - pdns::ProtoZero::Message::add_uint32
    linkageType: ''
    returnType: void
    signature: void setTime(time_t sec, uint32_t usec)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint32
      Src: /src/pdns/pdns/protozero.hh:226,1
    - Dst: ntohs
      Src: /src/pdns/pdns/protozero.hh:226,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - qid
    argTypes:
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 227
      start: 224
    functionDepth: 0
    functionLinenumber: 224
    functionLinenumberEnd: 227
    functionName: pdns::ProtoZero::Message::setId
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 0
    functionsReached:
    - ntohs
    - pdns::ProtoZero::Message::add_uint32
    linkageType: ''
    returnType: void
    signature: void setId(uint16_t qid)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/protozero.hh:231,1
    - Dst: encodeDNSName
      Src: /src/pdns/pdns/protozero.hh:232,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/protozero.hh:232,1
    - Dst: protozero::pbf_writer::add_uint32
      Src: /src/pdns/pdns/protozero.hh:233,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/protozero.hh:233,1
    - Dst: protozero::pbf_writer::add_uint32
      Src: /src/pdns/pdns/protozero.hh:234,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/protozero.hh:234,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - ' qname'
    - qtype
    - qclass
    argTypes:
    - DNSName
    - uint16_t
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 235
      start: 229
    functionDepth: 0
    functionLinenumber: 229
    functionLinenumberEnd: 235
    functionName: pdns::ProtoZero::Message::setQuestion
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 1
    functionsReached:
    - static_cast<protozero::pbf_tag_type>
    - protozero::pbf_writer::add_uint32
    - encodeDNSName
    linkageType: ''
    returnType: void
    signature: void setQuestion(const DNSName& qname, uint16_t qtype, uint16_t qclass)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/protozero.hh:239,1
    - Dst: protozero::pbf_writer::add_string
      Src: /src/pdns/pdns/protozero.hh:240,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/protozero.hh:240,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/protozero.hh:241,1
    - Dst: protozero::pbf_writer::add_string
      Src: /src/pdns/pdns/protozero.hh:243,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/protozero.hh:243,1
    - Dst: protozero::pbf_writer::add_uint64
      Src: /src/pdns/pdns/protozero.hh:246,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/protozero.hh:246,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - ' key'
    - ' stringVal'
    - ' intVal'
    argTypes:
    - std::string
    - std::unordered_set<std::string>
    - std::unordered_set<int64_t>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 248
      start: 237
    functionDepth: 0
    functionLinenumber: 237
    functionLinenumberEnd: 248
    functionName: pdns::ProtoZero::Message::setMeta
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 0
    functionsReached:
    - protozero::pbf_writer::add_uint64
    - static_cast<protozero::pbf_tag_type>
    - protozero::pbf_writer::add_string
    linkageType: ''
    returnType: void
    signature: void setMeta(const std::string& key, const std::unordered_set<std::string>&
      stringVal, const std::unordered_set<int64_t>& intVal)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: encodeNetmask
      Src: /src/pdns/pdns/protozero.hh:252,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/protozero.hh:252,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' netmask'
    - mask
    argTypes:
    - Netmask
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 253
      start: 250
    functionDepth: 1
    functionLinenumber: 250
    functionLinenumberEnd: 253
    functionName: pdns::ProtoZero::Message::setEDNSSubnet
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 0
    functionsReached:
    - static_cast<protozero::pbf_tag_type>
    - encodeNetmask
    linkageType: ''
    returnType: void
    signature: void setEDNSSubnet(const Netmask& netmask, uint8_t mask)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/protozero.hh:257,1
    - Dst: pdns::ProtoZero::Message::add_string
      Src: /src/pdns/pdns/protozero.hh:258,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ' req'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 260
      start: 255
    functionDepth: 0
    functionLinenumber: 255
    functionLinenumberEnd: 260
    functionName: pdns::ProtoZero::Message::setRequestorId
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 0
    functionsReached:
    - empty
    - pdns::ProtoZero::Message::add_string
    linkageType: ''
    returnType: void
    signature: void setRequestorId(const std::string& req)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_bytes
      Src: /src/pdns/pdns/protozero.hh:264,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/protozero.hh:264,1
    - Dst: begin
      Src: /src/pdns/pdns/protozero.hh:264,1
    - Dst: size
      Src: /src/pdns/pdns/protozero.hh:264,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' uniqueId'
    argTypes:
    - boost::uuids::uuid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 265
      start: 262
    functionDepth: 0
    functionLinenumber: 262
    functionLinenumberEnd: 265
    functionName: pdns::ProtoZero::Message::setInitialRequestID
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 0
    functionsReached:
    - reinterpret_cast<const char*>
    - pdns::ProtoZero::Message::add_bytes
    - size
    - begin
    linkageType: ''
    returnType: void
    signature: void setInitialRequestID(const boost::uuids::uuid& uniqueId)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/protozero.hh:269,1
    - Dst: pdns::ProtoZero::Message::add_string
      Src: /src/pdns/pdns/protozero.hh:270,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ' deviceId'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 272
      start: 267
    functionDepth: 0
    functionLinenumber: 267
    functionLinenumberEnd: 272
    functionName: pdns::ProtoZero::Message::setDeviceId
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 0
    functionsReached:
    - empty
    - pdns::ProtoZero::Message::add_string
    linkageType: ''
    returnType: void
    signature: void setDeviceId(const std::string& deviceId)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_bool
      Src: /src/pdns/pdns/protozero.hh:276,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - nod
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 277
      start: 274
    functionDepth: 0
    functionLinenumber: 274
    functionLinenumberEnd: 277
    functionName: pdns::ProtoZero::Message::setNewlyObservedDomain
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 0
    functionsReached:
    - pdns::ProtoZero::Message::add_bool
    linkageType: ''
    returnType: void
    signature: void setNewlyObservedDomain(bool nod)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/protozero.hh:281,1
    - Dst: pdns::ProtoZero::Message::add_string
      Src: /src/pdns/pdns/protozero.hh:282,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ' name'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 284
      start: 279
    functionDepth: 0
    functionLinenumber: 279
    functionLinenumberEnd: 284
    functionName: pdns::ProtoZero::Message::setDeviceName
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 0
    functionsReached:
    - empty
    - pdns::ProtoZero::Message::add_string
    linkageType: ''
    returnType: void
    signature: void setDeviceName(const std::string& name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint32
      Src: /src/pdns/pdns/protozero.hh:288,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - port
    argTypes:
    - in_port_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 289
      start: 286
    functionDepth: 0
    functionLinenumber: 286
    functionLinenumberEnd: 289
    functionName: pdns::ProtoZero::Message::setFromPort
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 0
    functionsReached:
    - pdns::ProtoZero::Message::add_uint32
    linkageType: ''
    returnType: void
    signature: void setFromPort(in_port_t port)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint32
      Src: /src/pdns/pdns/protozero.hh:293,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - port
    argTypes:
    - in_port_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 294
      start: 291
    functionDepth: 0
    functionLinenumber: 291
    functionLinenumberEnd: 294
    functionName: pdns::ProtoZero::Message::setToPort
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 0
    functionsReached:
    - pdns::ProtoZero::Message::add_uint32
    linkageType: ''
    returnType: void
    signature: void setToPort(in_port_t port)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint64
      Src: /src/pdns/pdns/protozero.hh:298,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - wid
    argTypes:
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 299
      start: 296
    functionDepth: 0
    functionLinenumber: 296
    functionLinenumberEnd: 299
    functionName: pdns::ProtoZero::Message::setWorkerId
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 0
    functionsReached:
    - pdns::ProtoZero::Message::add_uint64
    linkageType: ''
    returnType: void
    signature: void setWorkerId(uint64_t wid)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_bool
      Src: /src/pdns/pdns/protozero.hh:303,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - hit
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 304
      start: 301
    functionDepth: 0
    functionLinenumber: 301
    functionLinenumberEnd: 304
    functionName: pdns::ProtoZero::Message::setPacketCacheHit
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 0
    functionsReached:
    - pdns::ProtoZero::Message::add_bool
    linkageType: ''
    returnType: void
    signature: void setPacketCacheHit(bool hit)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint32
      Src: /src/pdns/pdns/protozero.hh:308,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - num
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 309
      start: 306
    functionDepth: 0
    functionLinenumber: 306
    functionLinenumberEnd: 309
    functionName: pdns::ProtoZero::Message::setOutgoingQueries
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 0
    functionsReached:
    - pdns::ProtoZero::Message::add_uint32
    linkageType: ''
    returnType: void
    signature: void setOutgoingQueries(uint32_t num)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint32
      Src: /src/pdns/pdns/protozero.hh:313,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - flags
    argTypes:
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 314
      start: 311
    functionDepth: 0
    functionLinenumber: 311
    functionLinenumberEnd: 314
    functionName: pdns::ProtoZero::Message::setHeaderFlags
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 0
    functionsReached:
    - pdns::ProtoZero::Message::add_uint32
    linkageType: ''
    returnType: void
    signature: void setHeaderFlags(uint16_t flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint32
      Src: /src/pdns/pdns/protozero.hh:318,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - version
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 319
      start: 316
    functionDepth: 0
    functionLinenumber: 316
    functionLinenumberEnd: 319
    functionName: pdns::ProtoZero::Message::setEDNSVersion
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 0
    functionsReached:
    - pdns::ProtoZero::Message::add_uint32
    linkageType: ''
    returnType: void
    signature: void setEDNSVersion(uint32_t version)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/protozero.hh:323,1
    - Dst: pdns::ProtoZero::Message::add_string
      Src: /src/pdns/pdns/protozero.hh:324,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ' data'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 326
      start: 321
    functionDepth: 0
    functionLinenumber: 321
    functionLinenumberEnd: 326
    functionName: pdns::ProtoZero::Message::setOpenTelemetryData
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 0
    functionsReached:
    - empty
    - pdns::ProtoZero::Message::add_string
    linkageType: ''
    returnType: void
    signature: void setOpenTelemetryData(const std::string& data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint32
      Src: /src/pdns/pdns/protozero.hh:330,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ede
    argTypes:
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 331
      start: 328
    functionDepth: 0
    functionLinenumber: 328
    functionLinenumberEnd: 331
    functionName: pdns::ProtoZero::Message::setEDE
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 0
    functionsReached:
    - pdns::ProtoZero::Message::add_uint32
    linkageType: ''
    returnType: void
    signature: void setEDE(const uint16_t ede)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::string::empty
      Src: /src/pdns/pdns/protozero.hh:335,1
    - Dst: pdns::ProtoZero::Message::add_string
      Src: /src/pdns/pdns/protozero.hh:336,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - edeText
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 338
      start: 333
    functionDepth: 0
    functionLinenumber: 333
    functionLinenumberEnd: 338
    functionName: pdns::ProtoZero::Message::setEDEText
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 0
    functionsReached:
    - pdns::ProtoZero::Message::add_string
    - std::string::empty
    linkageType: ''
    returnType: void
    signature: void setEDEText(const std::string edeText)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_bytes
      Src: /src/pdns/pdns/protozero.hh:342,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/protozero.hh:342,1
    - Dst: data
      Src: /src/pdns/pdns/protozero.hh:342,1
    - Dst: size
      Src: /src/pdns/pdns/protozero.hh:342,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' traceID'
    argTypes:
    - std::array<uint8_t, 16>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 343
      start: 340
    functionDepth: 0
    functionLinenumber: 340
    functionLinenumberEnd: 343
    functionName: pdns::ProtoZero::Message::setOpenTelemetryTraceID
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 0
    functionsReached:
    - reinterpret_cast<const char*>
    - pdns::ProtoZero::Message::add_bytes
    - size
    - data
    linkageType: ''
    returnType: void
    signature: void setOpenTelemetryTraceID(const std::array<uint8_t, 16>& traceID)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/protozero.hh:347,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 348
      start: 345
    functionDepth: 0
    functionLinenumber: 345
    functionLinenumberEnd: 348
    functionName: pdns::ProtoZero::Message::startResponse
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 1
    functionsReached:
    - static_cast<protozero::pbf_tag_type>
    linkageType: ''
    returnType: void
    signature: void startResponse()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: commit
      Src: /src/pdns/pdns/protozero.hh:352,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 353
      start: 350
    functionDepth: 0
    functionLinenumber: 350
    functionLinenumberEnd: 353
    functionName: pdns::ProtoZero::Message::commitResponse
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 0
    functionsReached:
    - commit
    linkageType: ''
    returnType: void
    signature: void commitResponse()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint32
      Src: /src/pdns/pdns/protozero.hh:357,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/protozero.hh:357,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rcode
    argTypes:
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 358
      start: 355
    functionDepth: 0
    functionLinenumber: 355
    functionLinenumberEnd: 358
    functionName: pdns::ProtoZero::Message::setResponseCode
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 1
    functionsReached:
    - static_cast<protozero::pbf_tag_type>
    - pdns::ProtoZero::Message::add_uint32
    linkageType: ''
    returnType: void
    signature: void setResponseCode(uint8_t rcode)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint32
      Src: /src/pdns/pdns/protozero.hh:363,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/protozero.hh:363,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 364
      start: 360
    functionDepth: 0
    functionLinenumber: 360
    functionLinenumberEnd: 364
    functionName: pdns::ProtoZero::Message::setNetworkErrorResponseCode
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 0
    functionsReached:
    - static_cast<protozero::pbf_tag_type>
    - pdns::ProtoZero::Message::add_uint32
    linkageType: ''
    returnType: void
    signature: void setNetworkErrorResponseCode()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_string
      Src: /src/pdns/pdns/protozero.hh:368,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/protozero.hh:368,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' policy'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 369
      start: 366
    functionDepth: 0
    functionLinenumber: 366
    functionLinenumberEnd: 369
    functionName: pdns::ProtoZero::Message::setAppliedPolicy
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 0
    functionsReached:
    - pdns::ProtoZero::Message::add_string
    - static_cast<protozero::pbf_tag_type>
    linkageType: ''
    returnType: void
    signature: void setAppliedPolicy(const std::string& policy)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::addPolicyTag
      Src: /src/pdns/pdns/protozero.hh:374,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - ' tags'
    argTypes:
    - std::unordered_set<std::string>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 376
      start: 371
    functionDepth: 0
    functionLinenumber: 371
    functionLinenumberEnd: 376
    functionName: pdns::ProtoZero::Message::addPolicyTags
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 0
    functionsReached:
    - pdns::ProtoZero::Message::addPolicyTag
    linkageType: ''
    returnType: void
    signature: void addPolicyTags(const std::unordered_set<std::string>& tags)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_string
      Src: /src/pdns/pdns/protozero.hh:380,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/protozero.hh:380,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' tag'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 381
      start: 378
    functionDepth: 0
    functionLinenumber: 378
    functionLinenumberEnd: 381
    functionName: pdns::ProtoZero::Message::addPolicyTag
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 4
    functionsReached:
    - pdns::ProtoZero::Message::add_string
    - static_cast<protozero::pbf_tag_type>
    linkageType: ''
    returnType: void
    signature: void addPolicyTag(const string& tag)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint32
      Src: /src/pdns/pdns/protozero.hh:385,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/protozero.hh:385,1
    - Dst: pdns::ProtoZero::Message::add_uint32
      Src: /src/pdns/pdns/protozero.hh:386,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/protozero.hh:386,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - sec
    - usec
    argTypes:
    - uint32_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 387
      start: 383
    functionDepth: 0
    functionLinenumber: 383
    functionLinenumberEnd: 387
    functionName: pdns::ProtoZero::Message::setQueryTime
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 1
    functionsReached:
    - static_cast<protozero::pbf_tag_type>
    - pdns::ProtoZero::Message::add_uint32
    linkageType: ''
    returnType: void
    signature: void setQueryTime(uint32_t sec, uint32_t usec)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_enum
      Src: /src/pdns/pdns/protozero.hh:399,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/protozero.hh:399,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' writer'
    - type
    - value
    argTypes:
    - protozero::pbf_writer
    - Field
    - int32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 400
      start: 397
    functionDepth: 0
    functionLinenumber: 397
    functionLinenumberEnd: 400
    functionName: pdns::ProtoZero::Message::add_enum
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 20
    functionsReached:
    - static_cast<protozero::pbf_tag_type>
    - pdns::ProtoZero::Message::add_enum
    linkageType: ''
    returnType: void
    signature: void add_enum(protozero::pbf_writer& writer, Field type, int32_t value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_bool
      Src: /src/pdns/pdns/protozero.hh:404,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/protozero.hh:404,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' writer'
    - type
    - value
    argTypes:
    - protozero::pbf_writer
    - Field
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 405
      start: 402
    functionDepth: 0
    functionLinenumber: 402
    functionLinenumberEnd: 405
    functionName: pdns::ProtoZero::Message::add_bool
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 12
    functionsReached:
    - static_cast<protozero::pbf_tag_type>
    - pdns::ProtoZero::Message::add_bool
    linkageType: ''
    returnType: void
    signature: void add_bool(protozero::pbf_writer& writer, Field type, bool value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint32
      Src: /src/pdns/pdns/protozero.hh:409,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/protozero.hh:409,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' writer'
    - type
    - value
    argTypes:
    - protozero::pbf_writer
    - Field
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 410
      start: 407
    functionDepth: 0
    functionLinenumber: 407
    functionLinenumberEnd: 410
    functionName: pdns::ProtoZero::Message::add_uint32
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 48
    functionsReached:
    - static_cast<protozero::pbf_tag_type>
    - pdns::ProtoZero::Message::add_uint32
    linkageType: ''
    returnType: void
    signature: void add_uint32(protozero::pbf_writer& writer, Field type, uint32_t
      value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint64
      Src: /src/pdns/pdns/protozero.hh:414,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/protozero.hh:414,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' writer'
    - type
    - value
    argTypes:
    - protozero::pbf_writer
    - Field
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 415
      start: 412
    functionDepth: 0
    functionLinenumber: 412
    functionLinenumberEnd: 415
    functionName: pdns::ProtoZero::Message::add_uint64
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 12
    functionsReached:
    - pdns::ProtoZero::Message::add_uint64
    - static_cast<protozero::pbf_tag_type>
    linkageType: ''
    returnType: void
    signature: void add_uint64(protozero::pbf_writer& writer, Field type, uint64_t
      value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_bytes
      Src: /src/pdns/pdns/protozero.hh:419,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/protozero.hh:419,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - ' writer'
    - type
    - data
    - len
    argTypes:
    - protozero::pbf_writer
    - Field
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 420
      start: 417
    functionDepth: 0
    functionLinenumber: 417
    functionLinenumberEnd: 420
    functionName: pdns::ProtoZero::Message::add_bytes
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 20
    functionsReached:
    - static_cast<protozero::pbf_tag_type>
    - pdns::ProtoZero::Message::add_bytes
    linkageType: ''
    returnType: void
    signature: void add_bytes(protozero::pbf_writer& writer, Field type, const char*
      data, size_t len)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_string
      Src: /src/pdns/pdns/protozero.hh:424,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/protozero.hh:424,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' writer'
    - type
    - ' str'
    argTypes:
    - protozero::pbf_writer
    - Field
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 425
      start: 422
    functionDepth: 0
    functionLinenumber: 422
    functionLinenumberEnd: 425
    functionName: pdns::ProtoZero::Message::add_string
    functionSourceFile: /src/pdns/pdns/protozero.hh
    functionUses: 32
    functionsReached:
    - pdns::ProtoZero::Message::add_string
    - static_cast<protozero::pbf_tag_type>
    linkageType: ''
    returnType: void
    signature: void add_string(protozero::pbf_writer& writer, Field type, const std::string&
      str)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' outputStream'
    - str
    argTypes:
    - O
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 59
    functionDepth: 0
    functionLinenumber: 59
    functionLinenumberEnd: 62
    functionName: dolog
    functionSourceFile: /src/pdns/pdns/dolog.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void dolog(O& outputStream, const char* str)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dolog
      Src: /src/pdns/pdns/dolog.hh:78,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 3
    argNames:
    - ' outputStream'
    - formatStr
    - value
    argTypes:
    - O
    - char*
    - T
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 65
    functionDepth: 0
    functionLinenumber: 65
    functionLinenumberEnd: 85
    functionName: dolog
    functionSourceFile: /src/pdns/pdns/dolog.hh
    functionUses: 1
    functionsReached:
    - dolog
    linkageType: ''
    returnType: void
    signature: void dolog(O& outputStream, const char* formatStr, T value, const Args&...
      args)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 94
    functionDepth: 0
    functionLinenumber: 94
    functionLinenumberEnd: 97
    functionName: dnsdist::logging::LoggingConfiguration::setSyslog
    functionSourceFile: /src/pdns/pdns/dolog.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setSyslog(bool value = true)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 98
    functionDepth: 0
    functionLinenumber: 98
    functionLinenumberEnd: 101
    functionName: dnsdist::logging::LoggingConfiguration::setLogTimestamps
    functionSourceFile: /src/pdns/pdns/dolog.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setLogTimestamps(bool value = true)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dolog.hh:104,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - ' stream'
    argTypes:
    - std::ofstream
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 102
    functionDepth: 0
    functionLinenumber: 102
    functionLinenumberEnd: 105
    functionName: dnsdist::logging::LoggingConfiguration::setVerboseStream
    functionSourceFile: /src/pdns/pdns/dolog.hh
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void setVerboseStream(std::ofstream&& stream)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 106
    functionDepth: 0
    functionLinenumber: 106
    functionLinenumberEnd: 109
    functionName: dnsdist::logging::LoggingConfiguration::getSyslog
    functionSourceFile: /src/pdns/pdns/dolog.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool getSyslog()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 113
      start: 110
    functionDepth: 0
    functionLinenumber: 110
    functionLinenumberEnd: 113
    functionName: dnsdist::logging::LoggingConfiguration::getLogTimestamps
    functionSourceFile: /src/pdns/pdns/dolog.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool getLogTimestamps()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 114
    functionDepth: 0
    functionLinenumber: 114
    functionLinenumberEnd: 117
    functionName: '& getVerboseStream()'
    functionSourceFile: /src/pdns/pdns/dolog.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::optional<std::ofstream>
    signature: std::optional<std::ofstream> & getVerboseStream()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 94
    functionDepth: 0
    functionLinenumber: 94
    functionLinenumberEnd: 97
    functionName: dnsdist::logging::LoggingConfiguration::setSyslog
    functionSourceFile: /src/pdns/pdns/dolog.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setSyslog(bool value = true)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 98
    functionDepth: 0
    functionLinenumber: 98
    functionLinenumberEnd: 101
    functionName: dnsdist::logging::LoggingConfiguration::setLogTimestamps
    functionSourceFile: /src/pdns/pdns/dolog.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setLogTimestamps(bool value = true)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dolog.hh:104,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - ' stream'
    argTypes:
    - std::ofstream
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 102
    functionDepth: 0
    functionLinenumber: 102
    functionLinenumberEnd: 105
    functionName: dnsdist::logging::LoggingConfiguration::setVerboseStream
    functionSourceFile: /src/pdns/pdns/dolog.hh
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void setVerboseStream(std::ofstream&& stream)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 106
    functionDepth: 0
    functionLinenumber: 106
    functionLinenumberEnd: 109
    functionName: dnsdist::logging::LoggingConfiguration::getSyslog
    functionSourceFile: /src/pdns/pdns/dolog.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool getSyslog()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 113
      start: 110
    functionDepth: 0
    functionLinenumber: 110
    functionLinenumberEnd: 113
    functionName: dnsdist::logging::LoggingConfiguration::getLogTimestamps
    functionSourceFile: /src/pdns/pdns/dolog.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool getLogTimestamps()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 114
    functionDepth: 0
    functionLinenumber: 114
    functionLinenumberEnd: 117
    functionName: '& getVerboseStream()'
    functionSourceFile: /src/pdns/pdns/dolog.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::optional<std::ofstream>
    signature: std::optional<std::ofstream> & getVerboseStream()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: closelog
      Src: /src/pdns/pdns/dolog.hh:132,1
    - Dst: openlog
      Src: /src/pdns/pdns/dolog.hh:133,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - facility
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 134
      start: 129
    functionDepth: 0
    functionLinenumber: 129
    functionLinenumberEnd: 134
    functionName: setSyslogFacility
    functionSourceFile: /src/pdns/pdns/dolog.hh
    functionUses: 0
    functionsReached:
    - openlog
    - closelog
    linkageType: ''
    returnType: void
    signature: void setSyslogFacility(int facility)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::array::at
      Src: /src/pdns/pdns/dolog.hh:149,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - level
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 150
      start: 138
    functionDepth: 0
    functionLinenumber: 138
    functionLinenumberEnd: 150
    functionName: syslogLevelToStr
    functionSourceFile: /src/pdns/pdns/dolog.hh
    functionUses: 0
    functionsReached:
    - std::array::at
    linkageType: ''
    returnType: char
    signature: char * syslogLevelToStr(int level)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::array::at
      Src: /src/pdns/pdns/dolog.hh:149,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - level
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 150
      start: 138
    functionDepth: 0
    functionLinenumber: 138
    functionLinenumberEnd: 150
    functionName: syslogLevelToStr
    functionSourceFile: /src/pdns/pdns/dolog.hh
    functionUses: 0
    functionsReached:
    - std::array::at
    linkageType: ''
    returnType: char
    signature: char * syslogLevelToStr(int level)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dolog
      Src: /src/pdns/pdns/dolog.hh:157,1
    - Dst: std::ostringstream::str
      Src: /src/pdns/pdns/dolog.hh:159,1
    - Dst: dnsdist::logging::LoggingConfiguration::getSyslog
      Src: /src/pdns/pdns/dolog.hh:162,1
    - Dst: syslog
      Src: /src/pdns/pdns/dolog.hh:164,1
    - Dst: auto::c_str
      Src: /src/pdns/pdns/dolog.hh:164,1
    - Dst: dnsdist::logging::LoggingConfiguration::getLogTimestamps
      Src: /src/pdns/pdns/dolog.hh:167,1
    - Dst: dnsdist::logging::logTime
      Src: /src/pdns/pdns/dolog.hh:168,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 4
    argNames:
    - ' stream'
    - level
    - skipSyslog
    - formatStr
    argTypes:
    - std::ostream
    - int
    - bool
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 173
      start: 154
    functionDepth: 1
    functionLinenumber: 154
    functionLinenumberEnd: 173
    functionName: genlog
    functionSourceFile: /src/pdns/pdns/dolog.hh
    functionUses: 0
    functionsReached:
    - dolog
    - dnsdist::logging::LoggingConfiguration::getSyslog
    - dnsdist::logging::logTime
    - dnsdist::logging::LoggingConfiguration::getLogTimestamps
    - auto::c_str
    - std::ostringstream::str
    - syslog
    linkageType: ''
    returnType: void
    signature: void genlog(std::ostream& stream, [[maybe_unused]] int level, [[maybe_unused]]
      bool skipSyslog, const char* formatStr, const Args&... args)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: genlog
      Src: /src/pdns/pdns/dolog.hh:204,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - formatStr
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 205
      start: 202
    functionDepth: 0
    functionLinenumber: 202
    functionLinenumberEnd: 205
    functionName: infolog
    functionSourceFile: /src/pdns/pdns/dolog.hh
    functionUses: 7
    functionsReached:
    - genlog
    linkageType: ''
    returnType: void
    signature: void infolog(const char* formatStr, const Args&... args)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: genlog
      Src: /src/pdns/pdns/dolog.hh:210,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - formatStr
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 211
      start: 208
    functionDepth: 0
    functionLinenumber: 208
    functionLinenumberEnd: 211
    functionName: warnlog
    functionSourceFile: /src/pdns/pdns/dolog.hh
    functionUses: 4
    functionsReached:
    - genlog
    linkageType: ''
    returnType: void
    signature: void warnlog(const char* formatStr, const Args&... args)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: genlog
      Src: /src/pdns/pdns/dolog.hh:216,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - formatStr
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 217
      start: 214
    functionDepth: 0
    functionLinenumber: 214
    functionLinenumberEnd: 217
    functionName: errlog
    functionSourceFile: /src/pdns/pdns/dolog.hh
    functionUses: 1
    functionsReached:
    - genlog
    linkageType: ''
    returnType: void
    signature: void errlog(const char* formatStr, const Args&... args)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dolog
      Src: /src/pdns/pdns/dolog.hh:228,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - formatStr
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 229
      start: 225
    functionDepth: 0
    functionLinenumber: 225
    functionLinenumberEnd: 229
    functionName: infolog
    functionSourceFile: /src/pdns/pdns/dolog.hh
    functionUses: 7
    functionsReached:
    - dolog
    linkageType: ''
    returnType: void
    signature: void infolog(const char* formatStr, const Args&... args)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dolog
      Src: /src/pdns/pdns/dolog.hh:235,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - formatStr
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 236
      start: 232
    functionDepth: 0
    functionLinenumber: 232
    functionLinenumberEnd: 236
    functionName: warnlog
    functionSourceFile: /src/pdns/pdns/dolog.hh
    functionUses: 4
    functionsReached:
    - dolog
    linkageType: ''
    returnType: void
    signature: void warnlog(const char* formatStr, const Args&... args)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dolog
      Src: /src/pdns/pdns/dolog.hh:242,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - formatStr
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 243
      start: 239
    functionDepth: 0
    functionLinenumber: 239
    functionLinenumberEnd: 243
    functionName: errlog
    functionSourceFile: /src/pdns/pdns/dolog.hh
    functionUses: 1
    functionsReached:
    - dolog
    linkageType: ''
    returnType: void
    signature: void errlog(const char* formatStr, const Args&... args)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 4
    argNames:
    - slog
    - ' tt'
    - ' remote'
    - ' trc'
    argTypes:
    - Logr::log_t
    - TSIGTriplet
    - ComboAddress
    - TSIGRecordContent
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13
      start: 11
    functionDepth: 0
    functionLinenumber: 11
    functionLinenumberEnd: 13
    functionName: TSIGTCPVerifier::TSIGTCPVerifier
    functionSourceFile: /src/pdns/pdns/tsigverifier.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void TSIGTCPVerifier(Logr::log_t slog, const TSIGTriplet& tt, const
      ComboAddress& remote, TSIGRecordContent& trc)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mkstemp
      Src: /src/pdns/pdns/test-arguments_cc.cc:19,1
    - Dst: BOOST_FAIL
      Src: /src/pdns/pdns/test-arguments_cc.cc:21,1
    - Dst: write
      Src: /src/pdns/pdns/test-arguments_cc.cc:32,1
    - Dst: string::c_str
      Src: /src/pdns/pdns/test-arguments_cc.cc:32,1
    - Dst: string::size
      Src: /src/pdns/pdns/test-arguments_cc.cc:32,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-arguments_cc.cc:34,1
    - Dst: static_cast<ssize_t>
      Src: /src/pdns/pdns/test-arguments_cc.cc:34,1
    - Dst: string::size
      Src: /src/pdns/pdns/test-arguments_cc.cc:34,1
    - Dst: close
      Src: /src/pdns/pdns/test-arguments_cc.cc:37,1
    - Dst: ArgvMap::ArgvMap
      Src: /src/pdns/pdns/test-arguments_cc.cc:40,1
    - Dst: ArgvMap::set
      Src: /src/pdns/pdns/test-arguments_cc.cc:42,1
    - Dst: ArgvMap::set
      Src: /src/pdns/pdns/test-arguments_cc.cc:43,1
    - Dst: ArgvMap::file
      Src: /src/pdns/pdns/test-arguments_cc.cc:44,1
    - Dst: unlink
      Src: /src/pdns/pdns/test-arguments_cc.cc:45,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-arguments_cc.cc:47,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-arguments_cc.cc:48,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-arguments_cc.cc:49,1
    - Dst: ArgvMap::asNum
      Src: /src/pdns/pdns/test-arguments_cc.cc:49,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-arguments_cc.cc:50,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-arguments_cc.cc:51,1
    - Dst: ArgvMap::mustDo
      Src: /src/pdns/pdns/test-arguments_cc.cc:51,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-arguments_cc.cc:52,1
    - Dst: ArgvMap::mustDo
      Src: /src/pdns/pdns/test-arguments_cc.cc:52,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-arguments_cc.cc:53,1
    - Dst: ArgvMap::mustDo
      Src: /src/pdns/pdns/test-arguments_cc.cc:53,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-arguments_cc.cc:54,1
    - Dst: unlink
      Src: /src/pdns/pdns/test-arguments_cc.cc:58,1
    - Dst: BOOST_FAIL
      Src: /src/pdns/pdns/test-arguments_cc.cc:60,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 25
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 17
    functionDepth: 0
    functionLinenumber: 17
    functionLinenumberEnd: 62
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-arguments_cc.cc
    functionUses: 0
    functionsReached:
    - mkstemp
    - string::c_str
    - ArgvMap::asNum
    - string::size
    - static_cast<ssize_t>
    - BOOST_CHECK_EQUAL
    - unlink
    - write
    - ArgvMap::ArgvMap
    - BOOST_FAIL
    - ArgvMap::set
    - ArgvMap::mustDo
    - ArgvMap::file
    - close
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_file_parse)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: stringtok
      Src: /src/pdns/pdns/nameserver.cc:94,1
    - Dst: arg
      Src: /src/pdns/pdns/nameserver.cc:94,1
    - Dst: vector::empty
      Src: /src/pdns/pdns/nameserver.cc:98,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/nameserver.cc:99,1
    - Dst: arg
      Src: /src/pdns/pdns/nameserver.cc:104,1
    - Dst: socket
      Src: /src/pdns/pdns/nameserver.cc:106,1
    - Dst: SLOG
      Src: /src/pdns/pdns/nameserver.cc:110,1
    - Dst: ComboAddress::toStringWithPort
      Src: /src/pdns/pdns/nameserver.cc:110,1
    - Dst: info
      Src: /src/pdns/pdns/nameserver.cc:111,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/nameserver.cc:111,1
    - Dst: ComboAddress::toStringWithPort
      Src: /src/pdns/pdns/nameserver.cc:111,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/nameserver.cc:114,1
    - Dst: stringerror
      Src: /src/pdns/pdns/nameserver.cc:114,1
    - Dst: setCloseOnExec
      Src: /src/pdns/pdns/nameserver.cc:117,1
    - Dst: setNonBlocking
      Src: /src/pdns/pdns/nameserver.cc:118,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/nameserver.cc:119,1
    - Dst: ComboAddress::toStringWithPort
      Src: /src/pdns/pdns/nameserver.cc:119,1
    - Dst: stringerror
      Src: /src/pdns/pdns/nameserver.cc:119,1
    - Dst: IsAnyAddress
      Src: /src/pdns/pdns/nameserver.cc:121,1
    - Dst: setsockopt
      Src: /src/pdns/pdns/nameserver.cc:122,1
    - Dst: ComboAddress::isIPv6
      Src: /src/pdns/pdns/nameserver.cc:123,1
    - Dst: setsockopt
      Src: /src/pdns/pdns/nameserver.cc:124,1
    - Dst: setsockopt
      Src: /src/pdns/pdns/nameserver.cc:126,1
    - Dst: setSocketTimestamps
      Src: /src/pdns/pdns/nameserver.cc:131,1
    - Dst: SLOG
      Src: /src/pdns/pdns/nameserver.cc:132,1
    - Dst: ComboAddress::toStringWithPort
      Src: /src/pdns/pdns/nameserver.cc:132,1
    - Dst: info
      Src: /src/pdns/pdns/nameserver.cc:133,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/nameserver.cc:133,1
    - Dst: ComboAddress::toStringWithPort
      Src: /src/pdns/pdns/nameserver.cc:133,1
    - Dst: setSocketIgnorePMTU
      Src: /src/pdns/pdns/nameserver.cc:136,1
    - Dst: SLOG
      Src: /src/pdns/pdns/nameserver.cc:139,1
    - Dst: what
      Src: /src/pdns/pdns/nameserver.cc:139,1
    - Dst: error
      Src: /src/pdns/pdns/nameserver.cc:140,1
    - Dst: what
      Src: /src/pdns/pdns/nameserver.cc:140,1
    - Dst: setReusePort
      Src: /src/pdns/pdns/nameserver.cc:144,1
    - Dst: arg
      Src: /src/pdns/pdns/nameserver.cc:149,1
    - Dst: Utility::setBindAny
      Src: /src/pdns/pdns/nameserver.cc:150,1
    - Dst: push_back
      Src: /src/pdns/pdns/nameserver.cc:153,1
    - Dst: Socket::bind
      Src: /src/pdns/pdns/nameserver.cc:155,1
    - Dst: ComboAddress::getSocklen
      Src: /src/pdns/pdns/nameserver.cc:155,1
    - Dst: close
      Src: /src/pdns/pdns/nameserver.cc:157,1
    - Dst: arg
      Src: /src/pdns/pdns/nameserver.cc:158,1
    - Dst: SLOG
      Src: /src/pdns/pdns/nameserver.cc:159,1
    - Dst: info
      Src: /src/pdns/pdns/nameserver.cc:160,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/nameserver.cc:160,1
    - Dst: ComboAddress::toStringWithPort
      Src: /src/pdns/pdns/nameserver.cc:160,1
    - Dst: SLOG
      Src: /src/pdns/pdns/nameserver.cc:163,1
    - Dst: ComboAddress::toStringWithPort
      Src: /src/pdns/pdns/nameserver.cc:163,1
    - Dst: stringerror
      Src: /src/pdns/pdns/nameserver.cc:163,1
    - Dst: error
      Src: /src/pdns/pdns/nameserver.cc:164,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/nameserver.cc:164,1
    - Dst: ComboAddress::toStringWithPort
      Src: /src/pdns/pdns/nameserver.cc:164,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/nameserver.cc:165,1
    - Dst: push_back
      Src: /src/pdns/pdns/nameserver.cc:168,1
    - Dst: push_back
      Src: /src/pdns/pdns/nameserver.cc:173,1
    - Dst: SLOG
      Src: /src/pdns/pdns/nameserver.cc:174,1
    - Dst: ComboAddress::toStringWithPort
      Src: /src/pdns/pdns/nameserver.cc:174,1
    - Dst: info
      Src: /src/pdns/pdns/nameserver.cc:175,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/nameserver.cc:175,1
    - Dst: ComboAddress::toStringWithPort
      Src: /src/pdns/pdns/nameserver.cc:175,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 55
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 177
      start: 91
    functionDepth: 0
    functionLinenumber: 91
    functionLinenumberEnd: 177
    functionName: UDPNameserver::bindAddresses
    functionSourceFile: /src/pdns/pdns/nameserver.cc
    functionUses: 0
    functionsReached:
    - PDNSException
    - stringerror
    - setReusePort
    - error
    - IsAnyAddress
    - ComboAddress::getSocklen
    - SLOG
    - stringtok
    - Logging::Loggable
    - setNonBlocking
    - setSocketIgnorePMTU
    - setsockopt
    - Utility::setBindAny
    - push_back
    - ComboAddress::isIPv6
    - vector::empty
    - setCloseOnExec
    - arg
    - ComboAddress::toStringWithPort
    - socket
    - what
    - info
    - setSocketTimestamps
    - Socket::bind
    - close
    linkageType: ''
    returnType: void
    signature: void UDPNameserver::bindAddresses()
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: IsAnyAddress
      Src: /src/pdns/pdns/nameserver.cc:184,1
    - Dst: socket
      Src: /src/pdns/pdns/nameserver.cc:185,1
    - Dst: connect
      Src: /src/pdns/pdns/nameserver.cc:189,1
    - Dst: getSocklen
      Src: /src/pdns/pdns/nameserver.cc:189,1
    - Dst: close
      Src: /src/pdns/pdns/nameserver.cc:190,1
    - Dst: ComboAddress::getSocklen
      Src: /src/pdns/pdns/nameserver.cc:196,1
    - Dst: getsockname
      Src: /src/pdns/pdns/nameserver.cc:198,1
    - Dst: close
      Src: /src/pdns/pdns/nameserver.cc:199,1
    - Dst: close
      Src: /src/pdns/pdns/nameserver.cc:202,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 22
    argCount: 1
    argNames:
    - ' remote'
    argTypes:
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 209
      start: 179
    functionDepth: 0
    functionLinenumber: 179
    functionLinenumberEnd: 209
    functionName: AddressIsUs
    functionSourceFile: /src/pdns/pdns/nameserver.cc
    functionUses: 2
    functionsReached:
    - socket
    - ComboAddress::getSocklen
    - getsockname
    - IsAnyAddress
    - getSocklen
    - connect
    - close
    linkageType: ''
    returnType: bool
    signature: bool AddressIsUs(const ComboAddress& remote)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: arg
      Src: /src/pdns/pdns/nameserver.cc:214,1
    - Dst: arg
      Src: /src/pdns/pdns/nameserver.cc:218,1
    - Dst: empty
      Src: /src/pdns/pdns/nameserver.cc:218,1
    - Dst: SLOG
      Src: /src/pdns/pdns/nameserver.cc:219,1
    - Dst: info
      Src: /src/pdns/pdns/nameserver.cc:220,1
    - Dst: UDPNameserver::bindAddresses
      Src: /src/pdns/pdns/nameserver.cc:223,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - slog
    - additional_socket
    argTypes:
    - Logr::log_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 224
      start: 211
    functionDepth: 1
    functionLinenumber: 211
    functionLinenumberEnd: 224
    functionName: UDPNameserver::UDPNameserver
    functionSourceFile: /src/pdns/pdns/nameserver.cc
    functionUses: 0
    functionsReached:
    - SLOG
    - UDPNameserver::bindAddresses
    - info
    - empty
    - arg
    linkageType: ''
    returnType: void
    signature: void UDPNameserver::UDPNameserver(Logr::log_t slog, bool additional_socket)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: getString
      Src: /src/pdns/pdns/nameserver.cc:228,1
    - Dst: submitResponse
      Src: /src/pdns/pdns/nameserver.cc:229,1
    - Dst: fillMSGHdr
      Src: /src/pdns/pdns/nameserver.cc:235,1
    - Dst: c_str
      Src: /src/pdns/pdns/nameserver.cc:235,1
    - Dst: length
      Src: /src/pdns/pdns/nameserver.cc:235,1
    - Dst: addCMsgSrcAddr
      Src: /src/pdns/pdns/nameserver.cc:239,1
    - Dst: d_anyLocal::get_ptr
      Src: /src/pdns/pdns/nameserver.cc:239,1
    - Dst: DLOG
      Src: /src/pdns/pdns/nameserver.cc:241,1
    - Dst: SLOG
      Src: /src/pdns/pdns/nameserver.cc:241,1
    - Dst: getRemote
      Src: /src/pdns/pdns/nameserver.cc:241,1
    - Dst: length
      Src: /src/pdns/pdns/nameserver.cc:241,1
    - Dst: info
      Src: /src/pdns/pdns/nameserver.cc:242,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/nameserver.cc:242,1
    - Dst: getRemote
      Src: /src/pdns/pdns/nameserver.cc:242,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/nameserver.cc:242,1
    - Dst: length
      Src: /src/pdns/pdns/nameserver.cc:242,1
    - Dst: length
      Src: /src/pdns/pdns/nameserver.cc:243,1
    - Dst: getMaxReplyLen
      Src: /src/pdns/pdns/nameserver.cc:243,1
    - Dst: SLOG
      Src: /src/pdns/pdns/nameserver.cc:244,1
    - Dst: length
      Src: /src/pdns/pdns/nameserver.cc:244,1
    - Dst: getMaxReplyLen
      Src: /src/pdns/pdns/nameserver.cc:244,1
    - Dst: qtype::toString
      Src: /src/pdns/pdns/nameserver.cc:244,1
    - Dst: info
      Src: /src/pdns/pdns/nameserver.cc:245,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/nameserver.cc:245,1
    - Dst: length
      Src: /src/pdns/pdns/nameserver.cc:245,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/nameserver.cc:245,1
    - Dst: getMaxReplyLen
      Src: /src/pdns/pdns/nameserver.cc:245,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/nameserver.cc:245,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/nameserver.cc:245,1
    - Dst: sendOnNBSocket
      Src: /src/pdns/pdns/nameserver.cc:247,1
    - Dst: getSocket
      Src: /src/pdns/pdns/nameserver.cc:247,1
    - Dst: SLOG
      Src: /src/pdns/pdns/nameserver.cc:249,1
    - Dst: getSocket
      Src: /src/pdns/pdns/nameserver.cc:249,1
    - Dst: d_remote::toStringWithPort
      Src: /src/pdns/pdns/nameserver.cc:249,1
    - Dst: stringerror
      Src: /src/pdns/pdns/nameserver.cc:249,1
    - Dst: error
      Src: /src/pdns/pdns/nameserver.cc:250,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/nameserver.cc:250,1
    - Dst: getSocket
      Src: /src/pdns/pdns/nameserver.cc:250,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/nameserver.cc:250,1
    - Dst: d_remote::toStringWithPort
      Src: /src/pdns/pdns/nameserver.cc:250,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 1
    argNames:
    - ' p'
    argTypes:
    - DNSPacket
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 252
      start: 226
    functionDepth: 1
    functionLinenumber: 226
    functionLinenumberEnd: 252
    functionName: UDPNameserver::send
    functionSourceFile: /src/pdns/pdns/nameserver.cc
    functionUses: 0
    functionsReached:
    - stringerror
    - error
    - fillMSGHdr
    - SLOG
    - Logging::Loggable
    - getSocket
    - c_str
    - submitResponse
    - d_remote::toStringWithPort
    - d_anyLocal::get_ptr
    - getRemote
    - sendOnNBSocket
    - length
    - qtype::toString
    - getMaxReplyLen
    - info
    - DLOG
    - getString
    - addCMsgSrcAddr
    linkageType: ''
    returnType: void
    signature: void UDPNameserver::send(DNSPacket& p)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: StatBag::StatBag
      Src: /src/pdns/pdns/nameserver.cc:257,1
    - Dst: fillMSGHdr
      Src: /src/pdns/pdns/nameserver.cc:266,1
    - Dst: at
      Src: /src/pdns/pdns/nameserver.cc:266,1
    - Dst: size
      Src: /src/pdns/pdns/nameserver.cc:266,1
    - Dst: poll
      Src: /src/pdns/pdns/nameserver.cc:278,1
    - Dst: vector::size
      Src: /src/pdns/pdns/nameserver.cc:278,1
    - Dst: unixDie
      Src: /src/pdns/pdns/nameserver.cc:282,1
    - Dst: recvmsg
      Src: /src/pdns/pdns/nameserver.cc:288,1
    - Dst: SLOG
      Src: /src/pdns/pdns/nameserver.cc:290,1
    - Dst: stringerror
      Src: /src/pdns/pdns/nameserver.cc:290,1
    - Dst: error
      Src: /src/pdns/pdns/nameserver.cc:291,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/nameserver.cc:299,1
    - Dst: resize
      Src: /src/pdns/pdns/nameserver.cc:301,1
    - Dst: DLOG
      Src: /src/pdns/pdns/nameserver.cc:303,1
    - Dst: SLOG
      Src: /src/pdns/pdns/nameserver.cc:303,1
    - Dst: size
      Src: /src/pdns/pdns/nameserver.cc:303,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/nameserver.cc:303,1
    - Dst: info
      Src: /src/pdns/pdns/nameserver.cc:304,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/nameserver.cc:304,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/nameserver.cc:304,1
    - Dst: size
      Src: /src/pdns/pdns/nameserver.cc:304,1
    - Dst: BOOST_STATIC_ASSERT
      Src: /src/pdns/pdns/nameserver.cc:306,1
    - Dst: setSocket
      Src: /src/pdns/pdns/nameserver.cc:311,1
    - Dst: setRemote
      Src: /src/pdns/pdns/nameserver.cc:312,1
    - Dst: HarvestDestinationAddress
      Src: /src/pdns/pdns/nameserver.cc:315,1
    - Dst: HarvestTimestamp
      Src: /src/pdns/pdns/nameserver.cc:321,1
    - Dst: d_dt::setTimeval
      Src: /src/pdns/pdns/nameserver.cc:322,1
    - Dst: d_dt::set
      Src: /src/pdns/pdns/nameserver.cc:325,1
    - Dst: match
      Src: /src/pdns/pdns/nameserver.cc:327,1
    - Dst: parseProxyHeader
      Src: /src/pdns/pdns/nameserver.cc:332,1
    - Dst: size
      Src: /src/pdns/pdns/nameserver.cc:333,1
    - Dst: StatBag::inc
      Src: /src/pdns/pdns/nameserver.cc:334,1
    - Dst: StatBag::ringAccount
      Src: /src/pdns/pdns/nameserver.cc:335,1
    - Dst: erase
      Src: /src/pdns/pdns/nameserver.cc:338,1
    - Dst: d_inner_remote::reset
      Src: /src/pdns/pdns/nameserver.cc:343,1
    - Dst: parse
      Src: /src/pdns/pdns/nameserver.cc:346,1
    - Dst: data
      Src: /src/pdns/pdns/nameserver.cc:346,1
    - Dst: size
      Src: /src/pdns/pdns/nameserver.cc:346,1
    - Dst: StatBag::inc
      Src: /src/pdns/pdns/nameserver.cc:347,1
    - Dst: StatBag::ringAccount
      Src: /src/pdns/pdns/nameserver.cc:348,1
    - Dst: getInnerRemote
      Src: /src/pdns/pdns/nameserver.cc:348,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 61
    argCount: 2
    argNames:
    - ' packet'
    - ' buffer'
    argTypes:
    - DNSPacket
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 354
      start: 254
    functionDepth: 1
    functionLinenumber: 254
    functionLinenumberEnd: 354
    functionName: UDPNameserver::receive
    functionSourceFile: /src/pdns/pdns/nameserver.cc
    functionUses: 0
    functionsReached:
    - BOOST_STATIC_ASSERT
    - HarvestTimestamp
    - setSocket
    - PDNSException
    - stringerror
    - setRemote
    - StatBag::StatBag
    - d_dt::set
    - StatBag::inc
    - error
    - erase
    - fillMSGHdr
    - SLOG
    - resize
    - Logging::Loggable
    - unixDie
    - size
    - match
    - StatBag::ringAccount
    - d_inner_remote::reset
    - poll
    - data
    - getInnerRemote
    - at
    - HarvestDestinationAddress
    - parseProxyHeader
    - parse
    - recvmsg
    - info
    - d_dt::setTimeval
    - DLOG
    - vector::size
    - ComboAddress::toString
    linkageType: ''
    returnType: bool
    signature: bool UDPNameserver::receive(DNSPacket& packet, std::string& buffer)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: read_lock
      Src: /src/pdns/pdns/stubresolver.cc:41,1
    - Dst: SLOG
      Src: /src/pdns/pdns/stubresolver.cc:42,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/stubresolver.cc:43,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - slog
    argTypes:
    - Logr::log_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 39
    functionDepth: 0
    functionLinenumber: 39
    functionLinenumberEnd: 47
    functionName: resolversDefined
    functionSourceFile: /src/pdns/pdns/stubresolver.cc
    functionUses: 0
    functionsReached:
    - SLOG
    - read_lock
    - Logr::log_t::info
    linkageType: ''
    returnType: bool
    signature: bool resolversDefined(Logr::log_t slog)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: stat
      Src: /src/pdns/pdns/stubresolver.cc:57,1
    - Dst: getResolvers
      Src: /src/pdns/pdns/stubresolver.cc:59,1
    - Dst: std::vector::empty
      Src: /src/pdns/pdns/stubresolver.cc:63,1
    - Dst: std::move
      Src: /src/pdns/pdns/stubresolver.cc:67,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - ' resolversForStub'
    - ' now'
    argTypes:
    - vector<ComboAddress>
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 52
    functionDepth: 0
    functionLinenumber: 52
    functionLinenumberEnd: 70
    functionName: parseLocalResolvConf_locked
    functionSourceFile: /src/pdns/pdns/stubresolver.cc
    functionUses: 0
    functionsReached:
    - std::move
    - stat
    - getResolvers
    - std::vector::empty
    linkageType: ''
    returnType: void
    signature: void parseLocalResolvConf_locked(vector<ComboAddress>& resolversForStub,
      const time_t& now)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: time
      Src: /src/pdns/pdns/stubresolver.cc:74,1
    - Dst: parseLocalResolvConf_locked
      Src: /src/pdns/pdns/stubresolver.cc:79,1
    - Dst: write_lock
      Src: /src/pdns/pdns/stubresolver.cc:79,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 72
    functionDepth: 1
    functionLinenumber: 72
    functionLinenumberEnd: 80
    functionName: parseLocalResolvConf
    functionSourceFile: /src/pdns/pdns/stubresolver.cc
    functionUses: 0
    functionsReached:
    - parseLocalResolvConf_locked
    - time
    - write_lock
    linkageType: ''
    returnType: void
    signature: void parseLocalResolvConf()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: arg
      Src: /src/pdns/pdns/stubresolver.cc:92,1
    - Dst: write_lock
      Src: /src/pdns/pdns/stubresolver.cc:93,1
    - Dst: stringtok
      Src: /src/pdns/pdns/stubresolver.cc:95,1
    - Dst: arg
      Src: /src/pdns/pdns/stubresolver.cc:95,1
    - Dst: auto::push_back
      Src: /src/pdns/pdns/stubresolver.cc:97,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/stubresolver.cc:97,1
    - Dst: read_lock
      Src: /src/pdns/pdns/stubresolver.cc:101,1
    - Dst: parseLocalResolvConf
      Src: /src/pdns/pdns/stubresolver.cc:102,1
    - Dst: resolversDefined
      Src: /src/pdns/pdns/stubresolver.cc:105,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - slog
    argTypes:
    - Logr::log_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 107
      start: 90
    functionDepth: 2
    functionLinenumber: 90
    functionLinenumberEnd: 107
    functionName: stubParseResolveConf
    functionSourceFile: /src/pdns/pdns/stubresolver.cc
    functionUses: 1
    functionsReached:
    - stringtok
    - read_lock
    - resolversDefined
    - write_lock
    - parseLocalResolvConf
    - auto::push_back
    - arg
    - ComboAddress
    linkageType: ''
    returnType: void
    signature: void stubParseResolveConf(Logr::log_t slog)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: stubParseResolveConf
      Src: /src/pdns/pdns/stubresolver.cc:114,1
    - Dst: parseLocalResolvConf
      Src: /src/pdns/pdns/stubresolver.cc:118,1
    - Dst: resolversDefined
      Src: /src/pdns/pdns/stubresolver.cc:120,1
    - Dst: read_lock
      Src: /src/pdns/pdns/stubresolver.cc:124,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/stubresolver.cc:128,1
    - Dst: dns_random_uint16
      Src: /src/pdns/pdns/stubresolver.cc:128,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/stubresolver.cc:129,1
    - Dst: EDNSSubnetOpts*::makeOptString
      Src: /src/pdns/pdns/stubresolver.cc:133,1
    - Dst: DNSPacketWriter::optvect_t::emplace_back
      Src: /src/pdns/pdns/stubresolver.cc:135,1
    - Dst: DNSPacketWriter::addOpt
      Src: /src/pdns/pdns/stubresolver.cc:136,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/stubresolver.cc:137,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/stubresolver.cc:142,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/stubresolver.cc:142,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/stubresolver.cc:142,1
    - Dst: QType
      Src: /src/pdns/pdns/stubresolver.cc:142,1
    - Dst: Logging::IterLoggable
      Src: /src/pdns/pdns/stubresolver.cc:142,1
    - Dst: auto::cbegin
      Src: /src/pdns/pdns/stubresolver.cc:142,1
    - Dst: auto::cend
      Src: /src/pdns/pdns/stubresolver.cc:142,1
    - Dst: toString
      Src: /src/pdns/pdns/stubresolver.cc:145,1
    - Dst: QType
      Src: /src/pdns/pdns/stubresolver.cc:145,1
    - Dst: toString
      Src: /src/pdns/pdns/stubresolver.cc:148,1
    - Dst: string::substr
      Src: /src/pdns/pdns/stubresolver.cc:150,1
    - Dst: string::length
      Src: /src/pdns/pdns/stubresolver.cc:150,1
    - Dst: Socket::setNonBlocking
      Src: /src/pdns/pdns/stubresolver.cc:155,1
    - Dst: Socket::connect
      Src: /src/pdns/pdns/stubresolver.cc:156,1
    - Dst: Socket::send
      Src: /src/pdns/pdns/stubresolver.cc:157,1
    - Dst: string
      Src: /src/pdns/pdns/stubresolver.cc:157,1
    - Dst: vector::begin
      Src: /src/pdns/pdns/stubresolver.cc:157,1
    - Dst: vector::end
      Src: /src/pdns/pdns/stubresolver.cc:157,1
    - Dst: waitForData
      Src: /src/pdns/pdns/stubresolver.cc:162,1
    - Dst: Socket::getHandle
      Src: /src/pdns/pdns/stubresolver.cc:162,1
    - Dst: Socket::read
      Src: /src/pdns/pdns/stubresolver.cc:165,1
    - Dst: string::size
      Src: /src/pdns/pdns/stubresolver.cc:166,1
    - Dst: memcpy
      Src: /src/pdns/pdns/stubresolver.cc:168,1
    - Dst: string::c_str
      Src: /src/pdns/pdns/stubresolver.cc:168,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/stubresolver.cc:169,1
    - Dst: push_back
      Src: /src/pdns/pdns/stubresolver.cc:189,1
    - Dst: std::move
      Src: /src/pdns/pdns/stubresolver.cc:189,1
    - Dst: SLOG
      Src: /src/pdns/pdns/stubresolver.cc:192,1
    - Dst: toString
      Src: /src/pdns/pdns/stubresolver.cc:192,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/stubresolver.cc:193,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/stubresolver.cc:193,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/stubresolver.cc:193,1
    - Dst: QType
      Src: /src/pdns/pdns/stubresolver.cc:193,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/stubresolver.cc:193,1
    - Dst: SLOG
      Src: /src/pdns/pdns/stubresolver.cc:197,1
    - Dst: toString
      Src: /src/pdns/pdns/stubresolver.cc:197,1
    - Dst: what
      Src: /src/pdns/pdns/stubresolver.cc:197,1
    - Dst: Logr::log_t::error
      Src: /src/pdns/pdns/stubresolver.cc:198,1
    - Dst: what
      Src: /src/pdns/pdns/stubresolver.cc:198,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/stubresolver.cc:198,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/stubresolver.cc:198,1
    - Dst: QType
      Src: /src/pdns/pdns/stubresolver.cc:198,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/stubresolver.cc:198,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 61
    argCount: 5
    argNames:
    - slog
    - ' qname'
    - qtype
    - ' ret'
    - d_eso
    argTypes:
    - Logr::log_t
    - DNSName
    - uint16_t
    - vector<DNSZoneRecord>
    - EDNSSubnetOpts*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 203
      start: 110
    functionDepth: 3
    functionLinenumber: 110
    functionLinenumberEnd: 203
    functionName: stubDoResolve
    functionSourceFile: /src/pdns/pdns/stubresolver.cc
    functionUses: 2
    functionsReached:
    - Socket::send
    - toString
    - stubParseResolveConf
    - auto::cbegin
    - dns_random_uint16
    - resolversDefined
    - string::substr
    - Socket::read
    - DNSPacketWriter::optvect_t::emplace_back
    - vector::begin
    - SLOG
    - string::size
    - Logr::log_t::info
    - Logging::Loggable
    - Socket::setNonBlocking
    - QType
    - read_lock
    - string
    - DNSPacketWriter::getHeader
    - Socket::connect
    - Logr::log_t::error
    - Logging::IterLoggable
    - auto::cend
    - string::c_str
    - DNSPacketWriter::commit
    - push_back
    - vector::end
    - parseLocalResolvConf
    - string::length
    - memcpy
    - std::move
    - Socket::getHandle
    - what
    - waitForData
    - DNSPacketWriter::addOpt
    - EDNSSubnetOpts*::makeOptString
    linkageType: ''
    returnType: int
    signature: int stubDoResolve(Logr::log_t slog, const DNSName& qname, uint16_t
      qtype, vector<DNSZoneRecord>& ret, const EDNSSubnetOpts* d_eso)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: stubDoResolve
      Src: /src/pdns/pdns/stubresolver.cc:208,1
    - Dst: push_back
      Src: /src/pdns/pdns/stubresolver.cc:210,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 5
    argNames:
    - slog
    - ' qname'
    - qtype
    - ' ret'
    - d_eso
    argTypes:
    - Logr::log_t
    - DNSName
    - uint16_t
    - vector<DNSRecord>
    - EDNSSubnetOpts*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 213
      start: 205
    functionDepth: 1
    functionLinenumber: 205
    functionLinenumberEnd: 213
    functionName: stubDoResolve
    functionSourceFile: /src/pdns/pdns/stubresolver.cc
    functionUses: 3
    functionsReached:
    - push_back
    - stubDoResolve
    linkageType: ''
    returnType: int
    signature: int stubDoResolve(Logr::log_t slog, const DNSName& qname, uint16_t
      qtype, vector<DNSRecord>& ret, const EDNSSubnetOpts* d_eso)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/remote_logger_pool.cc:10,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 1
    argNames:
    - ' pool'
    argTypes:
    - std::vector<std::shared_ptr<RemoteLoggerInterface>>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12
      start: 9
    functionDepth: 0
    functionLinenumber: 9
    functionLinenumberEnd: 12
    functionName: RemoteLoggerPool::RemoteLoggerPool
    functionSourceFile: /src/pdns/pdns/remote_logger_pool.cc
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void RemoteLoggerPool::RemoteLoggerPool(std::vector<std::shared_ptr<RemoteLoggerInterface>>&&
      pool)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RemoteLoggerPool::getStats
      Src: /src/pdns/pdns/remote_logger_pool.cc:16,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/remote_logger_pool.cc:17,1
    - Dst: size
      Src: /src/pdns/pdns/remote_logger_pool.cc:17,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/remote_logger_pool.cc:17,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/remote_logger_pool.cc:17,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 18
      start: 14
    functionDepth: 0
    functionLinenumber: 14
    functionLinenumberEnd: 18
    functionName: RemoteLoggerPool::toString
    functionSourceFile: /src/pdns/pdns/remote_logger_pool.cc
    functionUses: 0
    functionsReached:
    - std::to_string
    - size
    - RemoteLoggerPool::getStats
    linkageType: ''
    returnType: std::string
    signature: std::string RemoteLoggerPool::toString()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: at
      Src: /src/pdns/pdns/remote_logger_pool.cc:22,1
    - Dst: size
      Src: /src/pdns/pdns/remote_logger_pool.cc:22,1
    - Dst: std::shared_ptr::queueData
      Src: /src/pdns/pdns/remote_logger_pool.cc:23,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' data'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 24
      start: 20
    functionDepth: 0
    functionLinenumber: 20
    functionLinenumberEnd: 24
    functionName: RemoteLoggerPool::queueData
    functionSourceFile: /src/pdns/pdns/remote_logger_pool.cc
    functionUses: 0
    functionsReached:
    - std::shared_ptr::queueData
    - at
    - size
    linkageType: ''
    returnType: RemoteLoggerInterface::Result
    signature: RemoteLoggerInterface::Result RemoteLoggerPool::queueData(const std::string&
      data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnsrecordcontent.cc:20,1
    - Dst: a1
      Src: /src/pdns/pdns/test-dnsrecordcontent.cc:20,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnsrecordcontent.cc:21,1
    - Dst: a1
      Src: /src/pdns/pdns/test-dnsrecordcontent.cc:21,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnsrecordcontent.cc:23,1
    - Dst: aaaa
      Src: /src/pdns/pdns/test-dnsrecordcontent.cc:23,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/test-dnsrecordcontent.cc:25,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/test-dnsrecordcontent.cc:26,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/test-dnsrecordcontent.cc:27,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/test-dnsrecordcontent.cc:28,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/test-dnsrecordcontent.cc:29,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/test-dnsrecordcontent.cc:30,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnsrecordcontent.cc:31,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnsrecordcontent.cc:32,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnsrecordcontent.cc:33,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnsrecordcontent.cc:35,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnsrecordcontent.cc:36,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnsrecordcontent.cc:37,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnsrecordcontent.cc:40,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-dnsrecordcontent.cc:42,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-dnsrecordcontent.cc:42,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-dnsrecordcontent.cc:42,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnsrecordcontent.cc:43,1
    - Dst: ns1
      Src: /src/pdns/pdns/test-dnsrecordcontent.cc:43,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnsrecordcontent.cc:44,1
    - Dst: ns1
      Src: /src/pdns/pdns/test-dnsrecordcontent.cc:44,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 15
    functionDepth: 0
    functionLinenumber: 15
    functionLinenumberEnd: 45
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-dnsrecordcontent.cc
    functionUses: 0
    functionsReached:
    - ns1
    - aaaa
    - DNSName
    - DNSRecordContent::make
    - BOOST_CHECK
    - a1
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_equality)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SHA1
      Src: /src/pdns/pdns/sha.hh:38,1
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/sha.hh:38,1
    - Dst: c_str
      Src: /src/pdns/pdns/sha.hh:38,1
    - Dst: length
      Src: /src/pdns/pdns/sha.hh:38,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/sha.hh:38,1
    - Dst: std::array::begin
      Src: /src/pdns/pdns/sha.hh:39,1
    - Dst: std::array::end
      Src: /src/pdns/pdns/sha.hh:39,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ' input'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 34
    functionDepth: 0
    functionLinenumber: 34
    functionLinenumberEnd: 40
    functionName: pdns::sha1sum
    functionSourceFile: /src/pdns/pdns/sha.hh
    functionUses: 2
    functionsReached:
    - length
    - c_str
    - std::array::begin
    - std::array::end
    - reinterpret_cast<const unsigned char*>
    - SHA1
    - std::array::data
    linkageType: ''
    returnType: std::string
    signature: std::string sha1sum(const std::string& input)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SHA256
      Src: /src/pdns/pdns/sha.hh:46,1
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/sha.hh:46,1
    - Dst: c_str
      Src: /src/pdns/pdns/sha.hh:46,1
    - Dst: length
      Src: /src/pdns/pdns/sha.hh:46,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/sha.hh:46,1
    - Dst: std::array::begin
      Src: /src/pdns/pdns/sha.hh:47,1
    - Dst: std::array::end
      Src: /src/pdns/pdns/sha.hh:47,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ' input'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 42
    functionDepth: 0
    functionLinenumber: 42
    functionLinenumberEnd: 48
    functionName: pdns::sha256sum
    functionSourceFile: /src/pdns/pdns/sha.hh
    functionUses: 2
    functionsReached:
    - length
    - std::array::begin
    - std::array::end
    - SHA256
    - reinterpret_cast<const unsigned char*>
    - c_str
    - std::array::data
    linkageType: ''
    returnType: std::string
    signature: std::string sha256sum(const std::string& input)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SHA384
      Src: /src/pdns/pdns/sha.hh:54,1
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/sha.hh:54,1
    - Dst: c_str
      Src: /src/pdns/pdns/sha.hh:54,1
    - Dst: length
      Src: /src/pdns/pdns/sha.hh:54,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/sha.hh:54,1
    - Dst: std::array::begin
      Src: /src/pdns/pdns/sha.hh:55,1
    - Dst: std::array::end
      Src: /src/pdns/pdns/sha.hh:55,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ' input'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 50
    functionDepth: 0
    functionLinenumber: 50
    functionLinenumberEnd: 56
    functionName: pdns::sha384sum
    functionSourceFile: /src/pdns/pdns/sha.hh
    functionUses: 2
    functionsReached:
    - length
    - std::array::begin
    - std::array::end
    - SHA384
    - reinterpret_cast<const unsigned char*>
    - c_str
    - std::array::data
    linkageType: ''
    returnType: std::string
    signature: std::string sha384sum(const std::string& input)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SHA512
      Src: /src/pdns/pdns/sha.hh:62,1
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/sha.hh:62,1
    - Dst: c_str
      Src: /src/pdns/pdns/sha.hh:62,1
    - Dst: length
      Src: /src/pdns/pdns/sha.hh:62,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/sha.hh:62,1
    - Dst: std::array::begin
      Src: /src/pdns/pdns/sha.hh:63,1
    - Dst: std::array::end
      Src: /src/pdns/pdns/sha.hh:63,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ' input'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 58
    functionDepth: 0
    functionLinenumber: 58
    functionLinenumberEnd: 64
    functionName: pdns::sha512sum
    functionSourceFile: /src/pdns/pdns/sha.hh
    functionUses: 2
    functionsReached:
    - length
    - SHA512
    - std::array::begin
    - std::array::end
    - reinterpret_cast<const unsigned char*>
    - c_str
    - std::array::data
    linkageType: ''
    returnType: std::string
    signature: std::string sha512sum(const std::string& input)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 69
    functionDepth: 0
    functionLinenumber: 69
    functionLinenumberEnd: 70
    functionName: pdns::SHADigest::SHADigest
    functionSourceFile: /src/pdns/pdns/sha.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void SHADigest()
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/sha.hh:79,1
    - Dst: EVP_sha256
      Src: /src/pdns/pdns/sha.hh:83,1
    - Dst: EVP_sha384
      Src: /src/pdns/pdns/sha.hh:86,1
    - Dst: EVP_sha512
      Src: /src/pdns/pdns/sha.hh:89,1
    - Dst: std::invalid_argument
      Src: /src/pdns/pdns/sha.hh:92,1
    - Dst: EVP_DigestInit_ex
      Src: /src/pdns/pdns/sha.hh:94,1
    - Dst: get
      Src: /src/pdns/pdns/sha.hh:94,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/sha.hh:95,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 20
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 75
    functionDepth: 0
    functionLinenumber: 75
    functionLinenumberEnd: 97
    functionName: pdns::SHADigest::mdctx
    functionSourceFile: /src/pdns/pdns/sha.hh
    functionUses: 0
    functionsReached:
    - EVP_sha384
    - std::runtime_error
    - std::invalid_argument
    - EVP_sha256
    - EVP_DigestInit_ex
    - get
    - EVP_sha512
    linkageType: ''
    returnType: void
    signature: void mdctx(std::unique_ptr<EVP_MD_CTX, decltype(&EVP_MD_CTX_destroy)>(EVP_MD_CTX_create(),
      EVP_MD_CTX_destroy))
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 100
    functionDepth: 0
    functionLinenumber: 100
    functionLinenumberEnd: 100
    functionName: ~SHADigest()
    functionSourceFile: /src/pdns/pdns/sha.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~SHADigest()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: EVP_DigestUpdate
      Src: /src/pdns/pdns/sha.hh:104,1
    - Dst: get
      Src: /src/pdns/pdns/sha.hh:104,1
    - Dst: data
      Src: /src/pdns/pdns/sha.hh:104,1
    - Dst: size
      Src: /src/pdns/pdns/sha.hh:104,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/sha.hh:105,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - ' msg'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 107
      start: 102
    functionDepth: 0
    functionLinenumber: 102
    functionLinenumberEnd: 107
    functionName: pdns::SHADigest::process
    functionSourceFile: /src/pdns/pdns/sha.hh
    functionUses: 0
    functionsReached:
    - std::runtime_error
    - size
    - get
    - EVP_DigestUpdate
    - data
    linkageType: ''
    returnType: void
    signature: void process(const std::string& msg)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: std::string::resize
      Src: /src/pdns/pdns/sha.hh:112,1
    - Dst: EVP_MD_size
      Src: /src/pdns/pdns/sha.hh:112,1
    - Dst: EVP_DigestFinal_ex
      Src: /src/pdns/pdns/sha.hh:114,1
    - Dst: get
      Src: /src/pdns/pdns/sha.hh:114,1
    - Dst: reinterpret_cast<unsigned char*>
      Src: /src/pdns/pdns/sha.hh:114,1
    - Dst: std::string::data
      Src: /src/pdns/pdns/sha.hh:114,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/sha.hh:115,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/sha.hh:117,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/sha.hh:118,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 109
    functionDepth: 1
    functionLinenumber: 109
    functionLinenumberEnd: 121
    functionName: pdns::SHADigest::digest
    functionSourceFile: /src/pdns/pdns/sha.hh
    functionUses: 0
    functionsReached:
    - std::runtime_error
    - std::string::data
    - EVP_DigestFinal_ex
    - get
    - reinterpret_cast<unsigned char*>
    - EVP_MD_size
    - std::string::resize
    - std::string::size
    linkageType: ''
    returnType: std::string
    signature: std::string digest()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SHA1
      Src: /src/pdns/pdns/sha.hh:38,1
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/sha.hh:38,1
    - Dst: c_str
      Src: /src/pdns/pdns/sha.hh:38,1
    - Dst: length
      Src: /src/pdns/pdns/sha.hh:38,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/sha.hh:38,1
    - Dst: std::array::begin
      Src: /src/pdns/pdns/sha.hh:39,1
    - Dst: std::array::end
      Src: /src/pdns/pdns/sha.hh:39,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ' input'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 34
    functionDepth: 0
    functionLinenumber: 34
    functionLinenumberEnd: 40
    functionName: pdns::sha1sum
    functionSourceFile: /src/pdns/pdns/sha.hh
    functionUses: 2
    functionsReached:
    - length
    - c_str
    - std::array::begin
    - std::array::end
    - reinterpret_cast<const unsigned char*>
    - SHA1
    - std::array::data
    linkageType: ''
    returnType: std::string
    signature: std::string sha1sum(const std::string& input)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SHA256
      Src: /src/pdns/pdns/sha.hh:46,1
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/sha.hh:46,1
    - Dst: c_str
      Src: /src/pdns/pdns/sha.hh:46,1
    - Dst: length
      Src: /src/pdns/pdns/sha.hh:46,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/sha.hh:46,1
    - Dst: std::array::begin
      Src: /src/pdns/pdns/sha.hh:47,1
    - Dst: std::array::end
      Src: /src/pdns/pdns/sha.hh:47,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ' input'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 42
    functionDepth: 0
    functionLinenumber: 42
    functionLinenumberEnd: 48
    functionName: pdns::sha256sum
    functionSourceFile: /src/pdns/pdns/sha.hh
    functionUses: 2
    functionsReached:
    - length
    - std::array::begin
    - std::array::end
    - SHA256
    - reinterpret_cast<const unsigned char*>
    - c_str
    - std::array::data
    linkageType: ''
    returnType: std::string
    signature: std::string sha256sum(const std::string& input)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SHA384
      Src: /src/pdns/pdns/sha.hh:54,1
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/sha.hh:54,1
    - Dst: c_str
      Src: /src/pdns/pdns/sha.hh:54,1
    - Dst: length
      Src: /src/pdns/pdns/sha.hh:54,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/sha.hh:54,1
    - Dst: std::array::begin
      Src: /src/pdns/pdns/sha.hh:55,1
    - Dst: std::array::end
      Src: /src/pdns/pdns/sha.hh:55,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ' input'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 50
    functionDepth: 0
    functionLinenumber: 50
    functionLinenumberEnd: 56
    functionName: pdns::sha384sum
    functionSourceFile: /src/pdns/pdns/sha.hh
    functionUses: 2
    functionsReached:
    - length
    - std::array::begin
    - std::array::end
    - SHA384
    - reinterpret_cast<const unsigned char*>
    - c_str
    - std::array::data
    linkageType: ''
    returnType: std::string
    signature: std::string sha384sum(const std::string& input)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SHA512
      Src: /src/pdns/pdns/sha.hh:62,1
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/sha.hh:62,1
    - Dst: c_str
      Src: /src/pdns/pdns/sha.hh:62,1
    - Dst: length
      Src: /src/pdns/pdns/sha.hh:62,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/sha.hh:62,1
    - Dst: std::array::begin
      Src: /src/pdns/pdns/sha.hh:63,1
    - Dst: std::array::end
      Src: /src/pdns/pdns/sha.hh:63,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ' input'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 58
    functionDepth: 0
    functionLinenumber: 58
    functionLinenumberEnd: 64
    functionName: pdns::sha512sum
    functionSourceFile: /src/pdns/pdns/sha.hh
    functionUses: 2
    functionsReached:
    - length
    - SHA512
    - std::array::begin
    - std::array::end
    - reinterpret_cast<const unsigned char*>
    - c_str
    - std::array::data
    linkageType: ''
    returnType: std::string
    signature: std::string sha512sum(const std::string& input)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 69
    functionDepth: 0
    functionLinenumber: 69
    functionLinenumberEnd: 70
    functionName: pdns::SHADigest::SHADigest
    functionSourceFile: /src/pdns/pdns/sha.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void SHADigest()
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/sha.hh:79,1
    - Dst: EVP_sha256
      Src: /src/pdns/pdns/sha.hh:83,1
    - Dst: EVP_sha384
      Src: /src/pdns/pdns/sha.hh:86,1
    - Dst: EVP_sha512
      Src: /src/pdns/pdns/sha.hh:89,1
    - Dst: std::invalid_argument
      Src: /src/pdns/pdns/sha.hh:92,1
    - Dst: EVP_DigestInit_ex
      Src: /src/pdns/pdns/sha.hh:94,1
    - Dst: get
      Src: /src/pdns/pdns/sha.hh:94,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/sha.hh:95,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 20
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 75
    functionDepth: 0
    functionLinenumber: 75
    functionLinenumberEnd: 97
    functionName: pdns::SHADigest::mdctx
    functionSourceFile: /src/pdns/pdns/sha.hh
    functionUses: 0
    functionsReached:
    - EVP_sha384
    - std::runtime_error
    - std::invalid_argument
    - EVP_sha256
    - EVP_DigestInit_ex
    - get
    - EVP_sha512
    linkageType: ''
    returnType: void
    signature: void mdctx(std::unique_ptr<EVP_MD_CTX, decltype(&EVP_MD_CTX_destroy)>(EVP_MD_CTX_create(),
      EVP_MD_CTX_destroy))
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 100
    functionDepth: 0
    functionLinenumber: 100
    functionLinenumberEnd: 100
    functionName: ~SHADigest()
    functionSourceFile: /src/pdns/pdns/sha.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~SHADigest()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: EVP_DigestUpdate
      Src: /src/pdns/pdns/sha.hh:104,1
    - Dst: get
      Src: /src/pdns/pdns/sha.hh:104,1
    - Dst: data
      Src: /src/pdns/pdns/sha.hh:104,1
    - Dst: size
      Src: /src/pdns/pdns/sha.hh:104,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/sha.hh:105,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - ' msg'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 107
      start: 102
    functionDepth: 0
    functionLinenumber: 102
    functionLinenumberEnd: 107
    functionName: pdns::SHADigest::process
    functionSourceFile: /src/pdns/pdns/sha.hh
    functionUses: 0
    functionsReached:
    - std::runtime_error
    - size
    - get
    - EVP_DigestUpdate
    - data
    linkageType: ''
    returnType: void
    signature: void process(const std::string& msg)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: std::string::resize
      Src: /src/pdns/pdns/sha.hh:112,1
    - Dst: EVP_MD_size
      Src: /src/pdns/pdns/sha.hh:112,1
    - Dst: EVP_DigestFinal_ex
      Src: /src/pdns/pdns/sha.hh:114,1
    - Dst: get
      Src: /src/pdns/pdns/sha.hh:114,1
    - Dst: reinterpret_cast<unsigned char*>
      Src: /src/pdns/pdns/sha.hh:114,1
    - Dst: std::string::data
      Src: /src/pdns/pdns/sha.hh:114,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/sha.hh:115,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/sha.hh:117,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/sha.hh:118,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 109
    functionDepth: 1
    functionLinenumber: 109
    functionLinenumberEnd: 121
    functionName: pdns::SHADigest::digest
    functionSourceFile: /src/pdns/pdns/sha.hh
    functionUses: 0
    functionsReached:
    - std::runtime_error
    - std::string::data
    - EVP_DigestFinal_ex
    - get
    - reinterpret_cast<unsigned char*>
    - EVP_MD_size
    - std::string::resize
    - std::string::size
    linkageType: ''
    returnType: std::string
    signature: std::string digest()
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: read
      Src: /src/pdns/pdns/signingpipe.cc:22,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/signingpipe.cc:25,1
    - Dst: waitForData
      Src: /src/pdns/pdns/signingpipe.cc:37,1
    - Dst: unixDie
      Src: /src/pdns/pdns/signingpipe.cc:40,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 23
    argCount: 3
    argNames:
    - fd
    - buffer
    - len
    argTypes:
    - int
    - void*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 17
    functionDepth: 0
    functionLinenumber: 17
    functionLinenumberEnd: 48
    functionName: readn
    functionSourceFile: /src/pdns/pdns/signingpipe.cc
    functionUses: 0
    functionsReached:
    - unixDie
    - waitForData
    - runtime_error
    - read
    linkageType: ''
    returnType: int
    signature: int readn(int fd, void* buffer, unsigned int len)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: read
      Src: /src/pdns/pdns/signingpipe.cc:22,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/signingpipe.cc:25,1
    - Dst: waitForData
      Src: /src/pdns/pdns/signingpipe.cc:37,1
    - Dst: unixDie
      Src: /src/pdns/pdns/signingpipe.cc:40,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 23
    argCount: 3
    argNames:
    - fd
    - buffer
    - len
    argTypes:
    - int
    - void*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 17
    functionDepth: 0
    functionLinenumber: 17
    functionLinenumberEnd: 48
    functionName: readn
    functionSourceFile: /src/pdns/pdns/signingpipe.cc
    functionUses: 0
    functionsReached:
    - unixDie
    - waitForData
    - runtime_error
    - read
    linkageType: ''
    returnType: int
    signature: int readn(int fd, void* buffer, unsigned int len)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: setThreadName
      Src: /src/pdns/pdns/signingpipe.cc:54,1
    - Dst: ChunkedSigningPipe*::worker
      Src: /src/pdns/pdns/signingpipe.cc:55,1
    - Dst: SLOG
      Src: /src/pdns/pdns/signingpipe.cc:59,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/signingpipe.cc:60,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 3
    argNames:
    - csp
    - slog
    - fd
    argTypes:
    - ChunkedSigningPipe*
    - Logr::log_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 51
    functionDepth: 3
    functionLinenumber: 51
    functionLinenumberEnd: 63
    functionName: ChunkedSigningPipe::helperWorker
    functionSourceFile: /src/pdns/pdns/signingpipe.cc
    functionUses: 0
    functionsReached:
    - ChunkedSigningPipe*::worker
    - setThreadName
    - SLOG
    - Logr::log_t::info
    linkageType: ''
    returnType: void
    signature: void * ChunkedSigningPipe::helperWorker(ChunkedSigningPipe* csp, Logr::log_t
      slog, int fd)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/signingpipe.cc:66,1
    - Dst: make_unique<rrset_t>
      Src: /src/pdns/pdns/signingpipe.cc:68,1
    - Dst: push_back
      Src: /src/pdns/pdns/signingpipe.cc:69,1
    - Dst: vector<DNSZoneRecord>
      Src: /src/pdns/pdns/signingpipe.cc:69,1
    - Dst: socketpair
      Src: /src/pdns/pdns/signingpipe.cc:77,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/signingpipe.cc:78,1
    - Dst: setCloseOnExec
      Src: /src/pdns/pdns/signingpipe.cc:79,1
    - Dst: setCloseOnExec
      Src: /src/pdns/pdns/signingpipe.cc:80,1
    - Dst: std::thread
      Src: /src/pdns/pdns/signingpipe.cc:81,1
    - Dst: setNonBlocking
      Src: /src/pdns/pdns/signingpipe.cc:82,1
    - Dst: push_back
      Src: /src/pdns/pdns/signingpipe.cc:83,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 5
    argNames:
    - slog
    - signerName
    - mustSign
    - workers
    - maxChunkRecords
    argTypes:
    - Logr::log_t
    - ZoneName
    - bool
    - unsigned int
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 65
    functionDepth: 0
    functionLinenumber: 65
    functionLinenumberEnd: 86
    functionName: ChunkedSigningPipe::ChunkedSigningPipe
    functionSourceFile: /src/pdns/pdns/signingpipe.cc
    functionUses: 0
    functionsReached:
    - make_unique<rrset_t>
    - std::move
    - push_back
    - setNonBlocking
    - runtime_error
    - setCloseOnExec
    - vector<DNSZoneRecord>
    - std::thread
    - socketpair
    linkageType: ''
    returnType: void
    signature: void ChunkedSigningPipe::ChunkedSigningPipe(Logr::log_t slog, ZoneName
      signerName, bool mustSign, unsigned int workers, unsigned int maxChunkRecords)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: close
      Src: /src/pdns/pdns/signingpipe.cc:94,1
    - Dst: join
      Src: /src/pdns/pdns/signingpipe.cc:98,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 88
    functionDepth: 0
    functionLinenumber: 88
    functionLinenumberEnd: 101
    functionName: ChunkedSigningPipe::~ChunkedSigningPipe()
    functionSourceFile: /src/pdns/pdns/signingpipe.cc
    functionUses: 0
    functionsReached:
    - join
    - close
    linkageType: ''
    returnType: void
    signature: void ChunkedSigningPipe::~ChunkedSigningPipe()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::tuple
      Src: /src/pdns/pdns/signingpipe.cc:107,1
    - Dst: dr::getContent
      Src: /src/pdns/pdns/signingpipe.cc:107,1
    - Dst: std::tuple
      Src: /src/pdns/pdns/signingpipe.cc:107,1
    - Dst: DNSZoneRecord::dr::getContent
      Src: /src/pdns/pdns/signingpipe.cc:107,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' a'
    - b
    argTypes:
    - DNSZoneRecord
    - DNSZoneRecord
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 104
    functionDepth: 0
    functionLinenumber: 104
    functionLinenumberEnd: 108
    functionName: dedupLessThan
    functionSourceFile: /src/pdns/pdns/signingpipe.cc
    functionUses: 0
    functionsReached:
    - std::tuple
    - dr::getContent
    - DNSZoneRecord::dr::getContent
    linkageType: ''
    returnType: bool
    signature: bool dedupLessThan(const DNSZoneRecord& a, const DNSZoneRecord &b)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::tuple
      Src: /src/pdns/pdns/signingpipe.cc:112,1
    - Dst: dr::getContent
      Src: /src/pdns/pdns/signingpipe.cc:112,1
    - Dst: std::tuple
      Src: /src/pdns/pdns/signingpipe.cc:112,1
    - Dst: DNSZoneRecord::dr::getContent
      Src: /src/pdns/pdns/signingpipe.cc:112,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' a'
    - b
    argTypes:
    - DNSZoneRecord
    - DNSZoneRecord
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 113
      start: 110
    functionDepth: 0
    functionLinenumber: 110
    functionLinenumberEnd: 113
    functionName: dedupEqual
    functionSourceFile: /src/pdns/pdns/signingpipe.cc
    functionUses: 0
    functionsReached:
    - std::tuple
    - dr::getContent
    - DNSZoneRecord::dr::getContent
    linkageType: ''
    returnType: bool
    signature: bool dedupEqual(const DNSZoneRecord& a, const DNSZoneRecord &b)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::tuple
      Src: /src/pdns/pdns/signingpipe.cc:107,1
    - Dst: dr::getContent
      Src: /src/pdns/pdns/signingpipe.cc:107,1
    - Dst: std::tuple
      Src: /src/pdns/pdns/signingpipe.cc:107,1
    - Dst: DNSZoneRecord::dr::getContent
      Src: /src/pdns/pdns/signingpipe.cc:107,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' a'
    - b
    argTypes:
    - DNSZoneRecord
    - DNSZoneRecord
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 104
    functionDepth: 0
    functionLinenumber: 104
    functionLinenumberEnd: 108
    functionName: dedupLessThan
    functionSourceFile: /src/pdns/pdns/signingpipe.cc
    functionUses: 0
    functionsReached:
    - std::tuple
    - dr::getContent
    - DNSZoneRecord::dr::getContent
    linkageType: ''
    returnType: bool
    signature: bool dedupLessThan(const DNSZoneRecord& a, const DNSZoneRecord &b)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::tuple
      Src: /src/pdns/pdns/signingpipe.cc:112,1
    - Dst: dr::getContent
      Src: /src/pdns/pdns/signingpipe.cc:112,1
    - Dst: std::tuple
      Src: /src/pdns/pdns/signingpipe.cc:112,1
    - Dst: DNSZoneRecord::dr::getContent
      Src: /src/pdns/pdns/signingpipe.cc:112,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' a'
    - b
    argTypes:
    - DNSZoneRecord
    - DNSZoneRecord
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 113
      start: 110
    functionDepth: 0
    functionLinenumber: 110
    functionLinenumberEnd: 113
    functionName: dedupEqual
    functionSourceFile: /src/pdns/pdns/signingpipe.cc
    functionUses: 0
    functionsReached:
    - std::tuple
    - dr::getContent
    - DNSZoneRecord::dr::getContent
    linkageType: ''
    returnType: bool
    signature: bool dedupEqual(const DNSZoneRecord& a, const DNSZoneRecord &b)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sort
      Src: /src/pdns/pdns/signingpipe.cc:119,1
    - Dst: begin
      Src: /src/pdns/pdns/signingpipe.cc:119,1
    - Dst: end
      Src: /src/pdns/pdns/signingpipe.cc:119,1
    - Dst: erase
      Src: /src/pdns/pdns/signingpipe.cc:120,1
    - Dst: unique
      Src: /src/pdns/pdns/signingpipe.cc:120,1
    - Dst: begin
      Src: /src/pdns/pdns/signingpipe.cc:120,1
    - Dst: end
      Src: /src/pdns/pdns/signingpipe.cc:120,1
    - Dst: end
      Src: /src/pdns/pdns/signingpipe.cc:120,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 116
    functionDepth: 0
    functionLinenumber: 116
    functionLinenumberEnd: 121
    functionName: ChunkedSigningPipe::dedupRRSet
    functionSourceFile: /src/pdns/pdns/signingpipe.cc
    functionUses: 0
    functionsReached:
    - end
    - sort
    - begin
    - unique
    - erase
    linkageType: ''
    returnType: void
    signature: void ChunkedSigningPipe::dedupRRSet()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/signingpipe.cc:127,1
    - Dst: begin
      Src: /src/pdns/pdns/signingpipe.cc:127,1
    - Dst: begin
      Src: /src/pdns/pdns/signingpipe.cc:127,1
    - Dst: ChunkedSigningPipe::dedupRRSet
      Src: /src/pdns/pdns/signingpipe.cc:129,1
    - Dst: ChunkedSigningPipe::sendRRSetToWorker
      Src: /src/pdns/pdns/signingpipe.cc:130,1
    - Dst: push_back
      Src: /src/pdns/pdns/signingpipe.cc:132,1
    - Dst: empty
      Src: /src/pdns/pdns/signingpipe.cc:133,1
    - Dst: front
      Src: /src/pdns/pdns/signingpipe.cc:133,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 1
    argNames:
    - ' rr'
    argTypes:
    - DNSZoneRecord
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 134
      start: 123
    functionDepth: 1
    functionLinenumber: 123
    functionLinenumberEnd: 134
    functionName: ChunkedSigningPipe::submit
    functionSourceFile: /src/pdns/pdns/signingpipe.cc
    functionUses: 2
    functionsReached:
    - push_back
    - ChunkedSigningPipe::sendRRSetToWorker
    - ChunkedSigningPipe::dedupRRSet
    - begin
    - empty
    - front
    linkageType: ''
    returnType: bool
    signature: bool ChunkedSigningPipe::submit(const DNSZoneRecord& rr)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: count
      Src: /src/pdns/pdns/signingpipe.cc:141,1
    - Dst: memset
      Src: /src/pdns/pdns/signingpipe.cc:144,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/signingpipe.cc:150,1
    - Dst: poll
      Src: /src/pdns/pdns/signingpipe.cc:153,1
    - Dst: vector::size
      Src: /src/pdns/pdns/signingpipe.cc:153,1
    - Dst: unixDie
      Src: /src/pdns/pdns/signingpipe.cc:155,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/signingpipe.cc:155,1
    - Dst: size
      Src: /src/pdns/pdns/signingpipe.cc:155,1
    - Dst: pair::first::push_back
      Src: /src/pdns/pdns/signingpipe.cc:159,1
    - Dst: pair::second::push_back
      Src: /src/pdns/pdns/signingpipe.cc:161,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 18
    argCount: 3
    argNames:
    - rd
    - wr
    - seconds
    argTypes:
    - bool
    - bool
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 164
      start: 136
    functionDepth: 0
    functionLinenumber: 136
    functionLinenumberEnd: 164
    functionName: ChunkedSigningPipe::waitForRW
    functionSourceFile: /src/pdns/pdns/signingpipe.cc
    functionUses: 0
    functionsReached:
    - vector::push_back
    - std::to_string
    - count
    - unixDie
    - pair::second::push_back
    - size
    - memset
    - pair::first::push_back
    - poll
    - vector::size
    linkageType: ''
    returnType: pair<vector<int>, vector<int> >
    signature: pair<vector<int>, vector<int> > ChunkedSigningPipe::waitForRW(bool
      rd, bool wr, int seconds)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: begin
      Src: /src/pdns/pdns/signingpipe.cc:168,1
    - Dst: end
      Src: /src/pdns/pdns/signingpipe.cc:170,1
    - Dst: back
      Src: /src/pdns/pdns/signingpipe.cc:171,1
    - Dst: size
      Src: /src/pdns/pdns/signingpipe.cc:172,1
    - Dst: std::min
      Src: /src/pdns/pdns/signingpipe.cc:174,1
    - Dst: end
      Src: /src/pdns/pdns/signingpipe.cc:174,1
    - Dst: back
      Src: /src/pdns/pdns/signingpipe.cc:176,1
    - Dst: end
      Src: /src/pdns/pdns/signingpipe.cc:176,1
    - Dst: end
      Src: /src/pdns/pdns/signingpipe.cc:179,1
    - Dst: push_back
      Src: /src/pdns/pdns/signingpipe.cc:180,1
    - Dst: chunk_t
      Src: /src/pdns/pdns/signingpipe.cc:180,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - ' signedChunk'
    argTypes:
    - std::unique_ptr<chunk_t>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 182
      start: 166
    functionDepth: 0
    functionLinenumber: 166
    functionLinenumberEnd: 182
    functionName: ChunkedSigningPipe::addSignedToChunks
    functionSourceFile: /src/pdns/pdns/signingpipe.cc
    functionUses: 0
    functionsReached:
    - push_back
    - std::min
    - end
    - size
    - back
    - chunk_t
    - begin
    linkageType: ''
    returnType: void
    signature: void ChunkedSigningPipe::addSignedToChunks(std::unique_ptr<chunk_t>&
      signedChunk)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: ChunkedSigningPipe::addSignedToChunks
      Src: /src/pdns/pdns/signingpipe.cc:187,1
    - Dst: clear
      Src: /src/pdns/pdns/signingpipe.cc:188,1
    - Dst: empty
      Src: /src/pdns/pdns/signingpipe.cc:197,1
    - Dst: ChunkedSigningPipe::waitForRW
      Src: /src/pdns/pdns/signingpipe.cc:202,1
    - Dst: pair::second::empty
      Src: /src/pdns/pdns/signingpipe.cc:204,1
    - Dst: shuffle
      Src: /src/pdns/pdns/signingpipe.cc:205,1
    - Dst: pair::second::begin
      Src: /src/pdns/pdns/signingpipe.cc:205,1
    - Dst: pair::second::end
      Src: /src/pdns/pdns/signingpipe.cc:205,1
    - Dst: pdns::dns_random_engine
      Src: /src/pdns/pdns/signingpipe.cc:205,1
    - Dst: get
      Src: /src/pdns/pdns/signingpipe.cc:206,1
    - Dst: writen2
      Src: /src/pdns/pdns/signingpipe.cc:207,1
    - Dst: pair::second::begin
      Src: /src/pdns/pdns/signingpipe.cc:207,1
    - Dst: static_cast<void>
      Src: /src/pdns/pdns/signingpipe.cc:209,1
    - Dst: release
      Src: /src/pdns/pdns/signingpipe.cc:209,1
    - Dst: make_unique<rrset_t>
      Src: /src/pdns/pdns/signingpipe.cc:210,1
    - Dst: pair::second::begin
      Src: /src/pdns/pdns/signingpipe.cc:211,1
    - Dst: count
      Src: /src/pdns/pdns/signingpipe.cc:220,1
    - Dst: readn
      Src: /src/pdns/pdns/signingpipe.cc:225,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/signingpipe.cc:228,1
    - Dst: insert
      Src: /src/pdns/pdns/signingpipe.cc:230,1
    - Dst: unixDie
      Src: /src/pdns/pdns/signingpipe.cc:235,1
    - Dst: ChunkedSigningPipe::addSignedToChunks
      Src: /src/pdns/pdns/signingpipe.cc:245,1
    - Dst: ChunkedSigningPipe::waitForRW
      Src: /src/pdns/pdns/signingpipe.cc:250,1
    - Dst: ChunkedSigningPipe::waitForRW
      Src: /src/pdns/pdns/signingpipe.cc:255,1
    - Dst: shuffle
      Src: /src/pdns/pdns/signingpipe.cc:256,1
    - Dst: pair::second::begin
      Src: /src/pdns/pdns/signingpipe.cc:256,1
    - Dst: pair::second::end
      Src: /src/pdns/pdns/signingpipe.cc:256,1
    - Dst: pdns::dns_random_engine
      Src: /src/pdns/pdns/signingpipe.cc:256,1
    - Dst: get
      Src: /src/pdns/pdns/signingpipe.cc:257,1
    - Dst: writen2
      Src: /src/pdns/pdns/signingpipe.cc:258,1
    - Dst: pair::second::begin
      Src: /src/pdns/pdns/signingpipe.cc:258,1
    - Dst: static_cast<void>
      Src: /src/pdns/pdns/signingpipe.cc:260,1
    - Dst: release
      Src: /src/pdns/pdns/signingpipe.cc:260,1
    - Dst: make_unique<rrset_t>
      Src: /src/pdns/pdns/signingpipe.cc:261,1
    - Dst: pair::second::begin
      Src: /src/pdns/pdns/signingpipe.cc:262,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 59
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 267
      start: 184
    functionDepth: 1
    functionLinenumber: 184
    functionLinenumberEnd: 267
    functionName: ChunkedSigningPipe::sendRRSetToWorker
    functionSourceFile: /src/pdns/pdns/signingpipe.cc
    functionUses: 1
    functionsReached:
    - writen2
    - static_cast<void>
    - release
    - ChunkedSigningPipe::addSignedToChunks
    - insert
    - unixDie
    - shuffle
    - pair::second::empty
    - readn
    - empty
    - clear
    - pdns::dns_random_engine
    - std::runtime_error
    - ChunkedSigningPipe::waitForRW
    - get
    - make_unique<rrset_t>
    - count
    - pair::second::end
    - pair::second::begin
    linkageType: ''
    returnType: void
    signature: void ChunkedSigningPipe::sendRRSetToWorker()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/signingpipe.cc:273,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 276
      start: 269
    functionDepth: 0
    functionLinenumber: 269
    functionLinenumberEnd: 276
    functionName: ChunkedSigningPipe::getReady
    functionSourceFile: /src/pdns/pdns/signingpipe.cc
    functionUses: 0
    functionsReached:
    - size
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int ChunkedSigningPipe::getReady() const
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: readn
      Src: /src/pdns/pdns/signingpipe.cc:287,1
    - Dst: unixDie
      Src: /src/pdns/pdns/signingpipe.cc:291,1
    - Dst: set::insert
      Src: /src/pdns/pdns/signingpipe.cc:294,1
    - Dst: addRRSigs
      Src: /src/pdns/pdns/signingpipe.cc:295,1
    - Dst: writen2
      Src: /src/pdns/pdns/signingpipe.cc:298,1
    - Dst: close
      Src: /src/pdns/pdns/signingpipe.cc:310,1
    - Dst: SLOG
      Src: /src/pdns/pdns/signingpipe.cc:314,1
    - Dst: Logr::log_t::error
      Src: /src/pdns/pdns/signingpipe.cc:315,1
    - Dst: close
      Src: /src/pdns/pdns/signingpipe.cc:316,1
    - Dst: SLOG
      Src: /src/pdns/pdns/signingpipe.cc:320,1
    - Dst: what
      Src: /src/pdns/pdns/signingpipe.cc:320,1
    - Dst: Logr::log_t::error
      Src: /src/pdns/pdns/signingpipe.cc:321,1
    - Dst: what
      Src: /src/pdns/pdns/signingpipe.cc:321,1
    - Dst: close
      Src: /src/pdns/pdns/signingpipe.cc:322,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 30
    argCount: 2
    argNames:
    - slog
    - fd
    argTypes:
    - Logr::log_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 324
      start: 278
    functionDepth: 1
    functionLinenumber: 278
    functionLinenumberEnd: 324
    functionName: ChunkedSigningPipe::worker
    functionSourceFile: /src/pdns/pdns/signingpipe.cc
    functionUses: 0
    functionsReached:
    - set::insert
    - SLOG
    - writen2
    - unixDie
    - addRRSigs
    - what
    - Logr::log_t::error
    - readn
    - close
    linkageType: ''
    returnType: void
    signature: void ChunkedSigningPipe::worker(Logr::log_t slog, int fd)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ChunkedSigningPipe::sendRRSetToWorker
      Src: /src/pdns/pdns/signingpipe.cc:328,1
    - Dst: clear
      Src: /src/pdns/pdns/signingpipe.cc:329,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 330
      start: 326
    functionDepth: 2
    functionLinenumber: 326
    functionLinenumberEnd: 330
    functionName: ChunkedSigningPipe::flushToSign
    functionSourceFile: /src/pdns/pdns/signingpipe.cc
    functionUses: 0
    functionsReached:
    - clear
    - ChunkedSigningPipe::sendRRSetToWorker
    linkageType: ''
    returnType: void
    signature: void ChunkedSigningPipe::flushToSign()
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ChunkedSigningPipe::flushToSign
      Src: /src/pdns/pdns/signingpipe.cc:337,1
    - Dst: shutdown
      Src: /src/pdns/pdns/signingpipe.cc:340,1
    - Dst: ChunkedSigningPipe::flushToSign
      Src: /src/pdns/pdns/signingpipe.cc:345,1
    - Dst: front
      Src: /src/pdns/pdns/signingpipe.cc:346,1
    - Dst: pop_front
      Src: /src/pdns/pdns/signingpipe.cc:347,1
    - Dst: empty
      Src: /src/pdns/pdns/signingpipe.cc:348,1
    - Dst: push_back
      Src: /src/pdns/pdns/signingpipe.cc:349,1
    - Dst: vector<DNSZoneRecord>
      Src: /src/pdns/pdns/signingpipe.cc:349,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 1
    argNames:
    - final
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 353
      start: 332
    functionDepth: 3
    functionLinenumber: 332
    functionLinenumberEnd: 353
    functionName: ChunkedSigningPipe::getChunk
    functionSourceFile: /src/pdns/pdns/signingpipe.cc
    functionUses: 2
    functionsReached:
    - push_back
    - pop_front
    - shutdown
    - vector<DNSZoneRecord>
    - empty
    - front
    - ChunkedSigningPipe::flushToSign
    linkageType: ''
    returnType: vector<DNSZoneRecord>
    signature: vector<DNSZoneRecord> ChunkedSigningPipe::getChunk(bool final)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strftime
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:55,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:55,1
    - Dst: std::array::size
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:55,1
    - Dst: localtime_r
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:55,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:56,1
    - Dst: strlen
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:56,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:56,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - time
    argTypes:
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 51
    functionDepth: 0
    functionLinenumber: 51
    functionLinenumberEnd: 57
    functionName: humanTime
    functionSourceFile: /src/pdns/pdns/auth-secondarycommunicator.cc
    functionUses: 0
    functionsReached:
    - localtime_r
    - strlen
    - strftime
    - std::array::data
    - std::array::size
    linkageType: ''
    returnType: std::string
    signature: std::string humanTime(time_t time)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:61,1
    - Dst: auto::d_suckdomains::insert
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:70,1
    - Dst: post
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:72,1
    - Dst: auto::d_suckdomains::modify
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:75,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 4
    argNames:
    - ' domain'
    - ' primary'
    - priority
    - force
    argTypes:
    - ZoneName
    - ComboAddress
    - SuckRequest::RequestPriority
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 59
    functionDepth: 1
    functionLinenumber: 59
    functionLinenumberEnd: 81
    functionName: CommunicatorClass::addSuckRequest
    functionSourceFile: /src/pdns/pdns/auth-secondarycommunicator.cc
    functionUses: 1
    functionsReached:
    - post
    - auto::d_suckdomains::insert
    - auto::d_suckdomains::modify
    - lock
    linkageType: ''
    returnType: void
    signature: void CommunicatorClass::addSuckRequest(const ZoneName& domain, const
      ComboAddress& primary, SuckRequest::RequestPriority priority, bool force)
  - BBCount: 32
    BranchProfiles: []
    Callsites:
    - Dst: CatalogInfo::CatalogInfo
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:109,1
    - Dst: CatalogInfo::CatalogInfo
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:110,1
    - Dst: sort
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:115,1
    - Dst: begin
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:115,1
    - Dst: end
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:115,1
    - Dst: sort
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:116,1
    - Dst: begin
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:116,1
    - Dst: end
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:116,1
    - Dst: cbegin
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:118,1
    - Dst: cbegin
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:119,1
    - Dst: end
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:121,1
    - Dst: end
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:121,1
    - Dst: end
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:125,1
    - Dst: end
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:125,1
    - Dst: end
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:130,1
    - Dst: end
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:130,1
    - Dst: CatalogInfo::d_unique::empty
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:138,1
    - Dst: CatalogInfo::d_unique::empty
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:142,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:143,1
    - Dst: slog::info
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:144,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:144,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:150,1
    - Dst: slog::info
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:151,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:151,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:151,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:157,1
    - Dst: boost::join
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:157,1
    - Dst: slog::info
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:158,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:158,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:158,1
    - Dst: boost::join
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:158,1
    - Dst: empty
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:159,1
    - Dst: CatalogInfo::d_group::count
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:159,1
    - Dst: CatalogInfo::d_group::count
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:159,1
    - Dst: domain::backend::startTransaction
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:165,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:166,1
    - Dst: slog::info
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:167,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:171,1
    - Dst: slog::info
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:172,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:172,1
    - Dst: domain::backend::setOptions
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:173,1
    - Dst: CatalogInfo::toJson
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:173,1
    - Dst: domain::backend::startTransaction
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:177,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:178,1
    - Dst: slog::info
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:179,1
    - Dst: CatalogInfo::d_group::count
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:183,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:184,1
    - Dst: getKindString
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:184,1
    - Dst: slog::info
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:185,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:185,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:185,1
    - Dst: domain::backend::setKind
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:186,1
    - Dst: domain::backend::startTransaction
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:190,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:191,1
    - Dst: slog::info
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:192,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:198,1
    - Dst: toStringWithPortExcept
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:198,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:200,1
    - Dst: boost::join
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:200,1
    - Dst: slog::info
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:201,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:201,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:201,1
    - Dst: boost::join
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:201,1
    - Dst: domain::backend::setPrimaries
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:202,1
    - Dst: vector::emplace_back
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:204,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:219,1
    - Dst: slog::info
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:220,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:220,1
    - Dst: domain::backend::getDomainInfo
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:222,1
    - Dst: CatalogInfo::CatalogInfo
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:223,1
    - Dst: CatalogInfo::fromJson
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:224,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:228,1
    - Dst: slog::info
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:229,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:229,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:229,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:229,1
    - Dst: domain::backend::startTransaction
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:231,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:232,1
    - Dst: slog::info
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:233,1
    - Dst: domain::backend::setPrimaries
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:237,1
    - Dst: domain::backend::setOptions
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:238,1
    - Dst: CatalogInfo::toJson
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:238,1
    - Dst: domain::backend::setCatalog
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:239,1
    - Dst: vector::emplace_back
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:241,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:244,1
    - Dst: slog::info
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:245,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:245,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:245,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:245,1
    - Dst: DomainInfo::catalog::empty
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:252,1
    - Dst: slog::info
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:253,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:253,1
    - Dst: slog::info
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:256,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:256,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:256,1
    - Dst: DomainInfo::catalog::empty
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:261,1
    - Dst: domain::backend::startTransaction
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:271,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:272,1
    - Dst: slog::info
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:273,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:277,1
    - Dst: slog::info
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:278,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:278,1
    - Dst: domain::backend::deleteDomain
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:279,1
    - Dst: domain::backend::startTransaction
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:287,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:288,1
    - Dst: slog::info
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:289,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:293,1
    - Dst: slog::info
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:294,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:294,1
    - Dst: empty
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:295,1
    - Dst: CatalogInfo::d_group::count
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:295,1
    - Dst: domain::backend::createDomain
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:296,1
    - Dst: domain::backend::setPrimaries
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:298,1
    - Dst: domain::backend::setOptions
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:299,1
    - Dst: CatalogInfo::toJson
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:299,1
    - Dst: domain::backend::setCatalog
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:300,1
    - Dst: vector::emplace_back
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:303,1
    - Dst: domain::backend::commitTransaction
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:307,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:308,1
    - Dst: slog::info
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:309,1
    - Dst: isEnabled
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:315,1
    - Dst: domain::backend::getDomainInfo
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:317,1
    - Dst: add
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:318,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:321,1
    - Dst: slog::info
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:322,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:322,1
    - Dst: remove
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:326,1
    - Dst: DNSSECKeeper::clearCaches
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:330,1
    - Dst: purgeAuthCaches
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:331,1
    - Dst: toString
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:331,1
    - Dst: auto::empty
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:336,1
    - Dst: shuffle
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:338,1
    - Dst: auto::begin
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:338,1
    - Dst: auto::end
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:338,1
    - Dst: pdns::dns_random_engine
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:338,1
    - Dst: auto::front
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:339,1
    - Dst: addSuckRequest
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:340,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:347,1
    - Dst: slog::error
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:348,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:351,1
    - Dst: slog::error
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:352,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:355,1
    - Dst: what
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:355,1
    - Dst: slog::error
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:356,1
    - Dst: what
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:356,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:360,1
    - Dst: slog::info
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:361,1
    - Dst: domain::backend::abortTransaction
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:362,1
    CyclomaticComplexity: 57
    EdgeCount: 57
    ICount: 167
    argCount: 3
    argNames:
    - ' ctx'
    - ' fromXFR'
    - ' fromDB'
    argTypes:
    - XFRContext
    - vector<CatalogInfo>
    - vector<CatalogInfo>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 366
      start: 105
    functionDepth: 3
    functionLinenumber: 105
    functionLinenumberEnd: 366
    functionName: catalogDiff
    functionSourceFile: /src/pdns/pdns/auth-secondarycommunicator.cc
    functionUses: 0
    functionsReached:
    - add
    - CatalogInfo::fromJson
    - toString
    - CatalogInfo::CatalogInfo
    - auto::front
    - auto::begin
    - sort
    - boost::join
    - CatalogInfo::d_unique::empty
    - remove
    - SLOG
    - Logging::Loggable
    - slog::info
    - domain::backend::startTransaction
    - domain::backend::commitTransaction
    - shuffle
    - cbegin
    - begin
    - empty
    - DomainInfo::catalog::empty
    - isEnabled
    - pdns::dns_random_engine
    - CatalogInfo::toJson
    - domain::backend::setOptions
    - vector::push_back
    - domain::backend::deleteDomain
    - DNSSECKeeper::clearCaches
    - getKindString
    - domain::backend::abortTransaction
    - addSuckRequest
    - domain::backend::setKind
    - domain::backend::getDomainInfo
    - slog::error
    - domain::backend::createDomain
    - domain::backend::setCatalog
    - what
    - end
    - purgeAuthCaches
    - vector::emplace_back
    - domain::backend::setPrimaries
    - auto::end
    - toStringWithPortExcept
    - CatalogInfo::d_group::count
    - auto::empty
    linkageType: ''
    returnType: bool
    signature: bool catalogDiff(const XFRContext& ctx, vector<CatalogInfo>& fromXFR,
      vector<CatalogInfo>& fromDB)
  - BBCount: 23
    BranchProfiles: []
    Callsites:
    - Dst: logPrefix::append
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:371,1
    - Dst: CatalogInfo::CatalogInfo
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:383,1
    - Dst: qname::canonCompare
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:387,1
    - Dst: sort
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:388,1
    - Dst: begin
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:388,1
    - Dst: end
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:388,1
    - Dst: DNSName::DNSName
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:390,1
    - Dst: DNSName::DNSName
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:391,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:405,1
    - Dst: slog::info
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:406,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:417,1
    - Dst: slog::info
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:418,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:418,1
    - Dst: qname::isPartOf
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:423,1
    - Dst: DNSName::empty
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:424,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:425,1
    - Dst: slog::info
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:426,1
    - Dst: qname::makeRelative
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:430,1
    - Dst: DNSName::countLabels
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:432,1
    - Dst: DNSName::empty
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:433,1
    - Dst: vector::emplace_back
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:435,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:438,1
    - Dst: slog::info
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:439,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:439,1
    - Dst: CatalogInfo::setType
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:447,1
    - Dst: ZoneName
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:448,1
    - Dst: std::unordered_set::insert
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:451,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:452,1
    - Dst: slog::info
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:453,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:453,1
    - Dst: CatalogInfo::d_coo::empty
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:460,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:461,1
    - Dst: slog::info
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:462,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:462,1
    - Dst: DNSName
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:466,1
    - Dst: std::string::length
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:471,1
    - Dst: std::string::at
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:471,1
    - Dst: std::string::at
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:471,1
    - Dst: std::string::length
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:471,1
    - Dst: std::string::substr
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:472,1
    - Dst: std::string::length
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:472,1
    - Dst: CatalogInfo::d_group::insert
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:474,1
    - Dst: std::move
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:474,1
    - Dst: CatalogInfo::d_zone::empty
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:480,1
    - Dst: vector::emplace_back
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:481,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:485,1
    - Dst: slog::info
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:486,1
    - Dst: domain::backend::getCatalogMembers
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:491,1
    - Dst: catalogDiff
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:496,1
    CyclomaticComplexity: 34
    EdgeCount: 34
    ICount: 86
    argCount: 2
    argNames:
    - ' ctx'
    - ' rrs'
    argTypes:
    - XFRContext
    - vector<DNSResourceRecord>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 497
      start: 368
    functionDepth: 4
    functionLinenumber: 368
    functionLinenumberEnd: 497
    functionName: catalogProcess
    functionSourceFile: /src/pdns/pdns/auth-secondarycommunicator.cc
    functionUses: 0
    functionsReached:
    - std::string::length
    - domain::backend::getCatalogMembers
    - logPrefix::append
    - std::unordered_set::insert
    - qname::makeRelative
    - CatalogInfo::CatalogInfo
    - sort
    - std::string::at
    - SLOG
    - Logging::Loggable
    - std::string::substr
    - CatalogInfo::d_coo::empty
    - slog::info
    - catalogDiff
    - begin
    - qname::canonCompare
    - DNSName::DNSName
    - DNSName
    - DNSName::empty
    - std::move
    - DNSName::countLabels
    - CatalogInfo::d_zone::empty
    - end
    - CatalogInfo::d_group::insert
    - CatalogInfo::setType
    - vector::emplace_back
    - qname::isPartOf
    - ZoneName
    linkageType: ''
    returnType: bool
    signature: bool catalogProcess(const XFRContext& ctx, vector<DNSResourceRecord>&
      rrs)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: domain::zone::toLogString
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:502,1
    - Dst: remote::toString
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:502,1
    - Dst: UeberBackend::UeberBackend
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:505,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:511,1
    - Dst: slog::info
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:512,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:516,1
    - Dst: DNSRecord::DNSRecord
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:518,1
    - Dst: DNSRecord::setContent
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:519,1
    - Dst: std::make_shared<SOARecordContent>
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:519,1
    - Dst: getIXFRDeltas
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:520,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:520,1
    - Dst: auto::size
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:521,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:525,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:548,1
    - Dst: slog::info
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:549,1
    - Dst: empty
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:559,1
    - Dst: ZoneName
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:573,1
    - Dst: first::push_back
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:573,1
    - Dst: ZoneName
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:576,1
    - Dst: second::push_back
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:576,1
    - Dst: domain::backend::startTransaction
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:579,1
    - Dst: domain::backend::lookup
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:584,1
    - Dst: QType
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:584,1
    - Dst: domain::backend::get
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:585,1
    - Dst: DNSZoneRecord::dr::d_name::makeUsRelative
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:586,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:587,1
    - Dst: vector::erase
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:591,1
    - Dst: remove_if
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:591,1
    - Dst: vector::begin
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:591,1
    - Dst: vector::end
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:591,1
    - Dst: count
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:593,1
    - Dst: second::first::cbegin
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:593,1
    - Dst: second::first::cend
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:594,1
    - Dst: vector::end
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:596,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:600,1
    - Dst: DNSResourceRecord::fromWire
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:605,1
    - Dst: getRR
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:610,1
    - Dst: vector::emplace_back
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:614,1
    - Dst: std::move
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:614,1
    - Dst: domain::backend::replaceRRSet
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:616,1
    - Dst: QType
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:616,1
    - Dst: domain::backend::commitTransaction
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:618,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:622,1
    - Dst: what
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:622,1
    - Dst: slog::error
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:623,1
    - Dst: what
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:623,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:627,1
    - Dst: slog::error
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:628,1
    CyclomaticComplexity: 27
    EdgeCount: 27
    ICount: 73
    argCount: 4
    argNames:
    - ' tsig'
    - ' laddr'
    - ' ctx'
    - axfr
    argTypes:
    - TSIGTriplet
    - ComboAddress
    - XFRContext
    - vector<DNSRecord>*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 631
      start: 499
    functionDepth: 3
    functionLinenumber: 499
    functionLinenumberEnd: 631
    functionName: CommunicatorClass::ixfrSuck
    functionSourceFile: /src/pdns/pdns/auth-secondarycommunicator.cc
    functionUses: 0
    functionsReached:
    - DNSRecord::DNSRecord
    - getIXFRDeltas
    - DNSZoneRecord::dr::d_name::makeUsRelative
    - std::make_shared<SOARecordContent>
    - DNSRecord::setContent
    - auto::size
    - remove_if
    - vector::begin
    - SLOG
    - domain::zone::toLogString
    - QType
    - slog::info
    - domain::backend::startTransaction
    - UeberBackend::UeberBackend
    - domain::backend::commitTransaction
    - vector::erase
    - empty
    - vector::push_back
    - DNSResourceRecord::fromWire
    - second::push_back
    - domain::backend::replaceRRSet
    - remote::toString
    - vector::end
    - second::first::cbegin
    - domain::backend::get
    - arg
    - getRR
    - std::move
    - slog::error
    - count
    - what
    - vector::emplace_back
    - first::push_back
    - ZoneName
    - second::first::cend
    - domain::backend::lookup
    linkageType: ''
    returnType: void
    signature: void CommunicatorClass::ixfrSuck(const TSIGTriplet& tsig, const ComboAddress&
      laddr, XFRContext& ctx, vector<DNSRecord>* axfr)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: qtype::getCode
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:635,1
    - Dst: NSEC3PARAMRecordContent
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:637,1
    - Dst: static_cast<bool>
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:647,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:648,1
    - Dst: static_cast<bool>
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:650,1
    - Dst: NSEC3RecordContent::isSet
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:651,1
    - Dst: qname::makeRelative
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:652,1
    - Dst: secured::insert
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:653,1
    - Dst: std::move
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:653,1
    - Dst: nsset::insert
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:664,1
    - Dst: qnames::insert
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:669,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 33
    argCount: 4
    argNames:
    - ' domain'
    - ' firstNSEC3'
    - ' rr'
    - ' ctx'
    argTypes:
    - DNSName
    - bool
    - DNSResourceRecord
    - XFRContext
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 673
      start: 633
    functionDepth: 1
    functionLinenumber: 633
    functionLinenumberEnd: 673
    functionName: processRecordForZS
    functionSourceFile: /src/pdns/pdns/auth-secondarycommunicator.cc
    functionUses: 0
    functionsReached:
    - std::move
    - static_cast<bool>
    - secured::insert
    - PDNSException
    - qnames::insert
    - qname::makeRelative
    - qtype::getCode
    - NSEC3RecordContent::isSet
    - nsset::insert
    - NSEC3PARAMRecordContent
    linkageType: ''
    returnType: bool
    signature: bool processRecordForZS(const DNSName& domain, bool& firstNSEC3, DNSResourceRecord&
      rr, XFRContext& ctx)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: arg
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:688,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:690,1
    - Dst: domain::zone::toLogString
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:697,1
    - Dst: remote::toString
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:697,1
    - Dst: AXFRRetriever::getChunk
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:700,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:702,1
    - Dst: slog::info
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:703,1
    - Dst: qname::makeUsLowerCase
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:708,1
    - Dst: qtype::getCode
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:709,1
    - Dst: qtype::getCode
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:709,1
    - Dst: qname::isPartOf
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:713,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:714,1
    - Dst: qtype::toString
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:714,1
    - Dst: slog::info
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:715,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:715,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:715,1
    - Dst: axfrfilter
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:720,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:721,1
    - Dst: qname::isPartOf
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:725,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:726,1
    - Dst: qtype::toString
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:726,1
    - Dst: slog::info
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:727,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:727,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:727,1
    - Dst: processRecordForZS
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:730,1
    - Dst: qtype::getCode
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:733,1
    - Dst: fillSOAData
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:738,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:743,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 40
    argCount: 4
    argNames:
    - ' tt'
    - ' laddr'
    - ' pdl'
    - ' ctx'
    argTypes:
    - TSIGTriplet
    - ComboAddress
    - unique_ptr<AuthLua4>
    - XFRContext
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 748
      start: 686
    functionDepth: 2
    functionLinenumber: 686
    functionLinenumberEnd: 748
    functionName: doAxfr
    functionSourceFile: /src/pdns/pdns/auth-secondarycommunicator.cc
    functionUses: 0
    functionsReached:
    - axfrfilter
    - SLOG
    - qtype::toString
    - AXFRRetriever::getChunk
    - vector::push_back
    - domain::zone::toLogString
    - Logging::Loggable
    - slog::info
    - qname::makeUsLowerCase
    - remote::toString
    - qtype::getCode
    - processRecordForZS
    - qname::isPartOf
    - arg
    - fillSOAData
    linkageType: ''
    returnType: vector<DNSResourceRecord>
    signature: vector<DNSResourceRecord> doAxfr(const TSIGTriplet& tt, const ComboAddress&
      laddr, unique_ptr<AuthLua4>& pdl, XFRContext& ctx)
  - BBCount: 69
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:753,1
    - Dst: auto::d_inprogress::count
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:754,1
    - Dst: auto::d_inprogress::insert
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:757,1
    - Dst: withValues
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:765,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:765,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:765,1
    - Dst: toLogString
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:768,1
    - Dst: toString
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:768,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:771,1
    - Dst: XFRContext::slog::info
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:772,1
    - Dst: UeberBackend::UeberBackend
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:773,1
    - Dst: UeberBackend::getDomainInfo
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:779,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:780,1
    - Dst: XFRContext::slog::info
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:781,1
    - Dst: XFRContext::domain::isSecondaryType
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:784,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:785,1
    - Dst: XFRContext::slog::info
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:786,1
    - Dst: DNSSECKeeper::getTSIGForAccess
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:791,1
    - Dst: UeberBackend::getTSIGKey
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:793,1
    - Dst: B64Decode
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:794,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:795,1
    - Dst: XFRContext::slog::info
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:796,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:796,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:801,1
    - Dst: XFRContext::slog::info
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:802,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:802,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:809,1
    - Dst: UeberBackend::getDomainMetadata
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:810,1
    - Dst: vector::empty
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:810,1
    - Dst: pdns_iequals
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:811,1
    - Dst: string::clear
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:812,1
    - Dst: string::empty
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:818,1
    - Dst: make_unique<AuthLua4>
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:820,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:820,1
    - Dst: unique_ptr::loadFile
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:821,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:822,1
    - Dst: XFRContext::slog::info
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:823,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:823,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:826,1
    - Dst: what
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:826,1
    - Dst: XFRContext::slog::error
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:827,1
    - Dst: what
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:827,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:827,1
    - Dst: UeberBackend::getDomainMetadata
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:835,1
    - Dst: vector::empty
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:835,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:837,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:838,1
    - Dst: XFRContext::slog::info
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:839,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:839,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:842,1
    - Dst: what
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:842,1
    - Dst: XFRContext::slog::error
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:843,1
    - Dst: what
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:843,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:843,1
    - Dst: pdns::isQueryLocalAddressFamilyEnabled
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:848,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:850,1
    - Dst: XFRContext::slog::info
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:851,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:851,1
    - Dst: pdns::getQueryLocalAddress
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:854,1
    - Dst: NSEC3PARAMRecordContent::NSEC3PARAMRecordContent
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:860,1
    - Dst: DNSSECKeeper::isSecuredZone
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:864,1
    - Dst: DNSSECKeeper::isPresigned
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:866,1
    - Dst: DNSSECKeeper::getNSEC3PARAM
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:867,1
    - Dst: UeberBackend::getDomainMetadata
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:875,1
    - Dst: vector::empty
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:876,1
    - Dst: XFRContext::logPrefix::insert
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:878,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:881,1
    - Dst: XFRContext::slog::info
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:882,1
    - Dst: CommunicatorClass::ixfrSuck
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:883,1
    - Dst: vector::empty
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:884,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:885,1
    - Dst: XFRContext::slog::info
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:886,1
    - Dst: vector::reserve
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:891,1
    - Dst: vector::size
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:891,1
    - Dst: DNSResourceRecord::fromWire
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:893,1
    - Dst: auto::qname::makeUsLowerCase
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:895,1
    - Dst: processRecordForZS
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:897,1
    - Dst: getRR
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:901,1
    - Dst: vector::emplace_back
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:904,1
    - Dst: std::move
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:904,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:908,1
    - Dst: addS
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:908,1
    - Dst: XFRContext::slog::info
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:909,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:909,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:909,1
    - Dst: purgeAuthCaches
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:910,1
    - Dst: toString
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:910,1
    - Dst: vector::empty
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:916,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:917,1
    - Dst: XFRContext::slog::info
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:918,1
    - Dst: doAxfr
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:919,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:920,1
    - Dst: XFRContext::slog::info
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:921,1
    - Dst: catalogProcess
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:925,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:926,1
    - Dst: XFRContext::slog::info
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:927,1
    - Dst: DNSSECKeeper::getKeys
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:936,1
    - Dst: DNSSECKeeper::keyset_t::empty
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:937,1
    - Dst: static_cast<bool>
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:941,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:948,1
    - Dst: XFRContext::slog::info
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:949,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:952,1
    - Dst: XFRContext::slog::info
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:953,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:956,1
    - Dst: XFRContext::slog::info
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:957,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:962,1
    - Dst: qtype::getCode
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:964,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:965,1
    - Dst: XFRContext::slog::info
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:966,1
    - Dst: XFRContext::domain::backend::startTransaction
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:971,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:972,1
    - Dst: XFRContext::slog::info
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:973,1
    - Dst: DNSSECKeeper::setPresigned
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:980,1
    - Dst: DNSSECKeeper::unsetPresigned
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:984,1
    - Dst: DNSSECKeeper::setNSEC3PARAM
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:990,1
    - Dst: DNSSECKeeper::unsetNSEC3PARAM
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:995,1
    - Dst: DNSSECKeeper::unsetPresigned
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1002,1
    - Dst: DNSSECKeeper::unsetNSEC3PARAM
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1006,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1011,1
    - Dst: DNSName::DNSName
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1012,1
    - Dst: DNSName::DNSName
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1013,1
    - Dst: auto::qtype::getCode
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1019,1
    - Dst: auto::qtype::getCode
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1022,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1022,1
    - Dst: set::clear
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1030,1
    - Dst: XFRContext::qnames::count
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1033,1
    - Dst: set::insert
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1034,1
    - Dst: XFRContext::nsset::count
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1037,1
    - Dst: auto::qtype::getCode
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1037,1
    - Dst: DNSName::chopOff
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1044,1
    - Dst: set::empty
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1047,1
    - Dst: auto::qtype::getCode
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1049,1
    - Dst: DNSName
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1051,1
    - Dst: toBase32Hex
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1051,1
    - Dst: hashQNameWithSalt
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1051,1
    - Dst: XFRContext::secured::count
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1053,1
    - Dst: map::count
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1057,1
    - Dst: map::insert
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1058,1
    - Dst: pair<DNSName, bool>
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1058,1
    - Dst: map::size
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1065,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1066,1
    - Dst: XFRContext::slog::info
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1067,1
    - Dst: map::clear
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1068,1
    - Dst: auto::qtype::getCode
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1074,1
    - Dst: auto::qtype::getCode
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1079,1
    - Dst: DNSName
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1082,1
    - Dst: toBase32Hex
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1082,1
    - Dst: hashQNameWithSalt
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1082,1
    - Dst: auto::qtype::getCode
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1083,1
    - Dst: XFRContext::secured::count
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1083,1
    - Dst: XFRContext::domain::backend::feedRecord
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1084,1
    - Dst: XFRContext::domain::backend::feedRecord
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1087,1
    - Dst: DNSName
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1087,1
    - Dst: auto::qtype::getCode
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1092,1
    - Dst: auto::qname::makeRelative
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1093,1
    - Dst: XFRContext::domain::backend::feedRecord
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1094,1
    - Dst: XFRContext::domain::backend::feedRecord
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1097,1
    - Dst: DNSName
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1097,1
    - Dst: XFRContext::domain::backend::feedRecord
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1102,1
    - Dst: DNSName
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1102,1
    - Dst: map::empty
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1107,1
    - Dst: XFRContext::domain::backend::feedEnts3
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1109,1
    - Dst: XFRContext::domain::backend::feedEnts
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1112,1
    - Dst: XFRContext::domain::backend::commitTransaction
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1116,1
    - Dst: XFRContext::domain::backend::setFresh
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1118,1
    - Dst: purgeAuthCaches
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1119,1
    - Dst: toString
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1119,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1121,1
    - Dst: XFRContext::slog::info
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1122,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1122,1
    - Dst: UeberBackend::getDomainMetadata
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1127,1
    - Dst: vector::empty
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1127,1
    - Dst: vector::front
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1128,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1131,1
    - Dst: CommunicatorClass::notifyDomain
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1134,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1138,1
    - Dst: XFRContext::slog::error
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1139,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1141,1
    - Dst: XFRContext::slog::info
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1142,1
    - Dst: XFRContext::domain::backend::abortTransaction
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1143,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1147,1
    - Dst: what
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1147,1
    - Dst: XFRContext::slog::error
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1148,1
    - Dst: what
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1148,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1150,1
    - Dst: XFRContext::slog::info
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1151,1
    - Dst: XFRContext::domain::backend::abortTransaction
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1152,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1156,1
    - Dst: what
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1156,1
    - Dst: XFRContext::slog::error
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1157,1
    - Dst: what
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1157,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1159,1
    - Dst: XFRContext::slog::info
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1160,1
    - Dst: XFRContext::domain::backend::abortTransaction
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1161,1
    - Dst: CommunicatorClass::markAsFailed
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1169,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1170,1
    - Dst: humanTime
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1170,1
    - Dst: XFRContext::slog::error
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1171,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1171,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1171,1
    - Dst: humanTime
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1171,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1174,1
    - Dst: XFRContext::slog::info
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1175,1
    - Dst: XFRContext::domain::backend::abortTransaction
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1176,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1180,1
    - Dst: XFRContext::slog::error
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1181,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1183,1
    - Dst: XFRContext::slog::info
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1184,1
    - Dst: XFRContext::domain::backend::abortTransaction
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1185,1
    CyclomaticComplexity: 107
    EdgeCount: 107
    ICount: 291
    argCount: 3
    argNames:
    - ' domain'
    - ' remote'
    - force
    argTypes:
    - ZoneName
    - ComboAddress
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1188
      start: 750
    functionDepth: 5
    functionLinenumber: 750
    functionLinenumberEnd: 1188
    functionName: CommunicatorClass::suck
    functionSourceFile: /src/pdns/pdns/auth-secondarycommunicator.cc
    functionUses: 1
    functionsReached:
    - DNSSECKeeper::isSecuredZone
    - toLogString
    - map::clear
    - CommunicatorClass::markAsFailed
    - vector::reserve
    - XFRContext::slog::info
    - UeberBackend::getDomainInfo
    - DNSName::chopOff
    - XFRContext::secured::count
    - lock
    - XFRContext::domain::isSecondaryType
    - map::size
    - auto::qname::makeUsLowerCase
    - XFRContext::domain::backend::startTransaction
    - DNSSECKeeper::getKeys
    - pdns_iequals
    - withValues
    - XFRContext::logPrefix::insert
    - arg
    - ComboAddress
    - getRR
    - static_cast<bool>
    - CommunicatorClass::notifyDomain
    - doAxfr
    - XFRContext::domain::backend::feedEnts
    - XFRContext::domain::backend::feedEnts3
    - toBase32Hex
    - DNSSECKeeper::isPresigned
    - toString
    - addS
    - XFRContext::domain::backend::setFresh
    - string::empty
    - DNSSECKeeper::getTSIGForAccess
    - DNSSECKeeper::unsetPresigned
    - DNSSECKeeper::keyset_t::empty
    - DNSResourceRecord::fromWire
    - DNSName
    - qtype::getCode
    - vector::empty
    - auto::qname::makeRelative
    - humanTime
    - vector::front
    - set::clear
    - vector::size
    - string::clear
    - pdns::isQueryLocalAddressFamilyEnabled
    - CommunicatorClass::ixfrSuck
    - UeberBackend::getDomainMetadata
    - hashQNameWithSalt
    - set::insert
    - XFRContext::qnames::count
    - UeberBackend::UeberBackend
    - XFRContext::domain::backend::feedRecord
    - pdns::getQueryLocalAddress
    - pair<DNSName, bool>
    - UeberBackend::getTSIGKey
    - map::insert
    - DNSSECKeeper::setNSEC3PARAM
    - std::move
    - XFRContext::slog::error
    - purgeAuthCaches
    - catalogProcess
    - auto::d_inprogress::insert
    - SLOG
    - auto::d_inprogress::count
    - Logging::Loggable
    - set::empty
    - B64Decode
    - map::empty
    - XFRContext::nsset::count
    - map::count
    - processRecordForZS
    - DNSSECKeeper::getNSEC3PARAM
    - DNSSECKeeper::unsetNSEC3PARAM
    - make_unique<AuthLua4>
    - what
    - XFRContext::domain::backend::commitTransaction
    - unique_ptr::loadFile
    - DNSSECKeeper::setPresigned
    - XFRContext::domain::backend::abortTransaction
    - NSEC3PARAMRecordContent::NSEC3PARAMRecordContent
    - auto::qtype::getCode
    - vector::emplace_back
    - DNSName::DNSName
    linkageType: ''
    returnType: void
    signature: void CommunicatorClass::suck(const ZoneName& domain, const ComboAddress&
      remote, bool force)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - slog
    argTypes:
    - Logr::log_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1204
      start: 1203
    functionDepth: 0
    functionLinenumber: 1203
    functionLinenumberEnd: 1204
    functionName: SecondarySenderReceiver
    functionSourceFile: /src/pdns/pdns/auth-secondarycommunicator.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void SecondarySenderReceiver(Logr::log_t slog)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1219
      start: 1217
    functionDepth: 0
    functionLinenumber: 1217
    functionLinenumberEnd: 1219
    functionName: deliverTimeout
    functionSourceFile: /src/pdns/pdns/auth-secondarycommunicator.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void deliverTimeout(const Identifier& /* i */)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: shuffle
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1223,1
    - Dst: di::primaries::begin
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1223,1
    - Dst: di::primaries::end
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1223,1
    - Dst: pdns::dns_random_engine
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1223,1
    - Dst: di::primaries::begin
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1226,1
    - Dst: sendResolve
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1227,1
    - Dst: di::primaries::begin
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1227,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1235,1
    - Dst: di::zone::toLogString
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1235,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - ' dni'
    argTypes:
    - DomainNotificationInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1237
      start: 1221
    functionDepth: 0
    functionLinenumber: 1221
    functionLinenumberEnd: 1237
    functionName: send
    functionSourceFile: /src/pdns/pdns/auth-secondarycommunicator.cc
    functionUses: 16
    functionsReached:
    - di::zone::toLogString
    - runtime_error
    - shuffle
    - di::primaries::begin
    - di::primaries::end
    - pdns::dns_random_engine
    - sendResolve
    linkageType: ''
    returnType: Identifier
    signature: Identifier send(DomainNotificationInfo& dni)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: tryGetSOASerial
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1241,1
    - Dst: std::get<0>
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1241,1
    - Dst: std::get<1>
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1241,1
    - Dst: std::get<2>
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1241,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' id'
    - ' a'
    argTypes:
    - Identifier
    - Answer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1242
      start: 1239
    functionDepth: 0
    functionLinenumber: 1239
    functionLinenumberEnd: 1242
    functionName: receive
    functionSourceFile: /src/pdns/pdns/auth-secondarycommunicator.cc
    functionUses: 7
    functionsReached:
    - tryGetSOASerial
    - std::get<0>
    - std::get<1>
    - std::get<2>
    linkageType: ''
    returnType: bool
    signature: bool receive(Identifier& id, Answer& a)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' dni'
    - ' a'
    argTypes:
    - DomainNotificationInfo
    - Answer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1247
      start: 1244
    functionDepth: 0
    functionLinenumber: 1244
    functionLinenumberEnd: 1247
    functionName: deliverAnswer
    functionSourceFile: /src/pdns/pdns/auth-secondarycommunicator.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void deliverAnswer(const DomainNotificationInfo& dni, const Answer&
      a, unsigned int /* usec */)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1254,1
    - Dst: ComboAddress::addressOnlyEqual
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1262,1
    - Dst: DomainInfo::primaries::clear
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1263,1
    - Dst: DomainInfo::primaries::push_back
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1264,1
    - Dst: auto::d_tocheck::erase
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1268,1
    - Dst: auto::d_tocheck::insert
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1269,1
    - Dst: post
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1270,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - ' di'
    - ' remote'
    argTypes:
    - DomainInfo
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1271
      start: 1252
    functionDepth: 1
    functionLinenumber: 1252
    functionLinenumberEnd: 1271
    functionName: CommunicatorClass::addSecondaryCheckRequest
    functionSourceFile: /src/pdns/pdns/auth-secondarycommunicator.cc
    functionUses: 0
    functionsReached:
    - post
    - DomainInfo::primaries::clear
    - ComboAddress::addressOnlyEqual
    - auto::d_tocheck::erase
    - lock
    - DomainInfo::primaries::push_back
    - auto::d_tocheck::insert
    linkageType: ''
    returnType: void
    signature: void CommunicatorClass::addSecondaryCheckRequest(const DomainInfo&
      di, const ComboAddress& remote)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1276,1
    - Dst: auto::d_potentialautoprimaries::insert
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1277,1
    - Dst: post
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1278,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ' p'
    argTypes:
    - DNSPacket
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1280
      start: 1273
    functionDepth: 1
    functionLinenumber: 1273
    functionLinenumberEnd: 1280
    functionName: CommunicatorClass::addTryAutoPrimaryRequest
    functionSourceFile: /src/pdns/pdns/auth-secondarycommunicator.cc
    functionUses: 0
    functionsReached:
    - post
    - auto::d_potentialautoprimaries::insert
    - lock
    linkageType: ''
    returnType: void
    signature: void CommunicatorClass::addTryAutoPrimaryRequest(const DNSPacket& p)
  - BBCount: 36
    BranchProfiles: []
    Callsites:
    - Dst: arg
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1286,1
    - Dst: PacketHandler*::getBackend
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1290,1
    - Dst: lock
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1295,1
    - Dst: vector::reserve
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1297,1
    - Dst: auto::d_tocheck::size
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1297,1
    - Dst: auto::d_inprogress::count
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1299,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1300,1
    - Dst: info
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1301,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1301,1
    - Dst: set::insert
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1302,1
    - Dst: auto::d_failedSecondaryRefresh::find
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1307,1
    - Dst: auto::d_failedSecondaryRefresh::end
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1308,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1309,1
    - Dst: info
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1310,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1310,1
    - Dst: auto::d_failedSecondaryRefresh::erase
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1311,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1314,1
    - Dst: info
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1315,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1315,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1317,1
    - Dst: auto::d_tocheck::swap
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1320,1
    - Dst: std::move
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1322,1
    - Dst: auto::d_potentialautoprimaries::clear
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1323,1
    - Dst: TSIGRecordContent::TSIGRecordContent
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1328,1
    - Dst: DNSName::DNSName
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1329,1
    - Dst: getTSIGDetails
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1330,1
    - Dst: PacketHandler*::tryAutoPrimarySynchronous
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1331,1
    - Dst: vector::empty
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1333,1
    - Dst: UeberBackend*::getUnfreshSecondaryInfos
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1334,1
    - Dst: vector::reserve
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1336,1
    - Dst: vector::size
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1336,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1338,1
    - Dst: DNSSECKeeper::doesDNSSEC
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1338,1
    - Dst: lock
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1340,1
    - Dst: boost::multi_index::get<IDTag>
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1341,1
    - Dst: time
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1342,1
    - Dst: auto::d_failedSecondaryRefresh::find
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1345,1
    - Dst: auto::d_failedSecondaryRefresh::end
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1346,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1348,1
    - Dst: humanTime
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1348,1
    - Dst: info
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1349,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1349,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1349,1
    - Dst: humanTime
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1349,1
    - Dst: primaries::empty
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1355,1
    - Dst: primaries::begin
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1359,1
    - Dst: count
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1360,1
    - Dst: auto::d_inprogress::count
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1363,1
    - Dst: DNSSECKeeper::getTSIGForAccess
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1371,1
    - Dst: UeberBackend*::getTSIGKey
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1373,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1374,1
    - Dst: info
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1375,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1375,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1375,1
    - Dst: B64Decode
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1378,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1379,1
    - Dst: info
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1380,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1380,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1380,1
    - Dst: std::vector::clear
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1385,1
    - Dst: UeberBackend*::getDomainMetadata
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1387,1
    - Dst: std::vector::empty
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1387,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1389,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1390,1
    - Dst: info
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1391,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1391,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1391,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1394,1
    - Dst: what
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1394,1
    - Dst: error
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1395,1
    - Dst: what
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1395,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1395,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1403,1
    - Dst: std::move
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1403,1
    - Dst: vector::empty
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1406,1
    - Dst: lock
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1408,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1409,1
    - Dst: auto::d_suckdomains::size
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1409,1
    - Dst: auto::d_inprogress::size
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1409,1
    - Dst: info
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1410,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1410,1
    - Dst: auto::d_suckdomains::size
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1410,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1410,1
    - Dst: auto::d_inprogress::size
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1410,1
    - Dst: vector::empty
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1412,1
    - Dst: lock
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1416,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1417,1
    - Dst: vector::size
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1417,1
    - Dst: vector::size
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1417,1
    - Dst: vector::size
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1417,1
    - Dst: auto::d_suckdomains::size
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1417,1
    - Dst: info
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1418,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1418,1
    - Dst: vector::size
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1418,1
    - Dst: Inflighter::run
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1429,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1433,1
    - Dst: what
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1433,1
    - Dst: error
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1434,1
    - Dst: what
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1434,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1437,1
    - Dst: error
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1438,1
    - Dst: Inflighter::getTimeouts
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1442,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1443,1
    - Dst: SecondarySenderReceiver::d_freshness::size
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1443,1
    - Dst: addS
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1443,1
    - Dst: SecondarySenderReceiver::d_freshness::size
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1443,1
    - Dst: Inflighter::getTimeouts
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1443,1
    - Dst: addS
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1443,1
    - Dst: Inflighter::getTimeouts
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1443,1
    - Dst: info
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1444,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1444,1
    - Dst: SecondarySenderReceiver::d_freshness::size
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1444,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1444,1
    - Dst: Inflighter::getTimeouts
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1444,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1447,1
    - Dst: SecondarySenderReceiver::d_freshness::size
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1447,1
    - Dst: addS
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1447,1
    - Dst: SecondarySenderReceiver::d_freshness::size
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1447,1
    - Dst: info
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1448,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1448,1
    - Dst: SecondarySenderReceiver::d_freshness::size
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1448,1
    - Dst: time
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1451,1
    - Dst: di
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1453,1
    - Dst: UeberBackend*::getDomainInfo
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1461,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1462,1
    - Dst: info
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1463,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1463,1
    - Dst: SecondarySenderReceiver::d_freshness::count
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1471,1
    - Dst: CommunicatorClass::markAsFailed
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1472,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1474,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1474,1
    - Dst: humanTime
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1474,1
    - Dst: info
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1475,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1475,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1475,1
    - Dst: humanTime
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1475,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1478,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1478,1
    - Dst: humanTime
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1478,1
    - Dst: info
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1479,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1479,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1479,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1479,1
    - Dst: humanTime
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1479,1
    - Dst: backend::setStale
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1483,1
    - Dst: lock
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1489,1
    - Dst: auto::d_failedSecondaryRefresh::find
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1490,1
    - Dst: auto::d_failedSecondaryRefresh::end
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1491,1
    - Dst: auto::d_failedSecondaryRefresh::erase
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1492,1
    - Dst: UeberBackend*::lookup
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1500,1
    - Dst: QType
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1500,1
    - Dst: UeberBackend*::get
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1502,1
    - Dst: fillSOAData
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1504,1
    - Dst: UeberBackend*::lookupEnd
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1505,1
    - Dst: primaries::begin
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1513,1
    - Dst: rfc1982LessThan
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1515,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1515,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1516,1
    - Dst: ComboAddress::toStringWithPortExcept
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1516,1
    - Dst: info
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1517,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1517,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1517,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1517,1
    - Dst: backend::setFresh
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1518,1
    - Dst: DNSSECKeeper::isPresigned
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1523,1
    - Dst: UeberBackend*::lookup
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1524,1
    - Dst: QType
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1524,1
    - Dst: UeberBackend*::get
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1526,1
    - Dst: getRR
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1527,1
    - Dst: std::max
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1529,1
    - Dst: std::max
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1530,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1541,1
    - Dst: ComboAddress::toStringWithPortExcept
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1541,1
    - Dst: info
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1542,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1542,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1542,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1542,1
    - Dst: ComboAddress::toStringWithPortExcept
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1542,1
    - Dst: backend::setFresh
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1543,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1546,1
    - Dst: ComboAddress::toStringWithPortExcept
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1546,1
    - Dst: info
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1547,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1547,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1547,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1547,1
    - Dst: ComboAddress::toStringWithPortExcept
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1547,1
    - Dst: backend::setFresh
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1548,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1551,1
    - Dst: ComboAddress::toStringWithPortExcept
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1551,1
    - Dst: info
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1552,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1552,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1552,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1552,1
    - Dst: ComboAddress::toStringWithPortExcept
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1552,1
    - Dst: backend::setFresh
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1553,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1556,1
    - Dst: ComboAddress::toStringWithPortExcept
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1556,1
    - Dst: info
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1557,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1557,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1557,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1557,1
    - Dst: ComboAddress::toStringWithPortExcept
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1557,1
    - Dst: CommunicatorClass::addSuckRequest
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1558,1
    - Dst: DNSSECKeeper::doesDNSSEC
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1560,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1561,1
    - Dst: ComboAddress::toStringWithPortExcept
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1561,1
    - Dst: info
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1562,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1562,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1562,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1562,1
    - Dst: ComboAddress::toStringWithPortExcept
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1562,1
    - Dst: CommunicatorClass::addSuckRequest
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1563,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1566,1
    - Dst: ComboAddress::toStringWithPortExcept
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1566,1
    - Dst: info
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1567,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1567,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1567,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1567,1
    - Dst: ComboAddress::toStringWithPortExcept
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1567,1
    - Dst: CommunicatorClass::addSuckRequest
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1568,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1578,1
    - Dst: ComboAddress::toStringWithPortExcept
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1578,1
    - Dst: info
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1579,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1579,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1579,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1579,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1579,1
    - Dst: ComboAddress::toStringWithPortExcept
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1579,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1582,1
    - Dst: ComboAddress::toStringWithPortExcept
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1582,1
    - Dst: info
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1583,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1583,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1583,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1583,1
    - Dst: ComboAddress::toStringWithPortExcept
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1583,1
    - Dst: CommunicatorClass::addSuckRequest
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1585,1
    CyclomaticComplexity: 66
    EdgeCount: 66
    ICount: 181
    argCount: 1
    argNames:
    - P
    argTypes:
    - PacketHandler*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1588
      start: 1283
    functionDepth: 2
    functionLinenumber: 1283
    functionLinenumberEnd: 1588
    functionName: CommunicatorClass::secondaryRefresh
    functionSourceFile: /src/pdns/pdns/auth-secondarycommunicator.cc
    functionUses: 1
    functionsReached:
    - addS
    - auto::d_potentialautoprimaries::clear
    - std::to_string
    - boost::multi_index::get<IDTag>
    - auto::d_suckdomains::size
    - auto::d_tocheck::size
    - auto::d_tocheck::swap
    - CommunicatorClass::markAsFailed
    - error
    - vector::reserve
    - TSIGRecordContent::TSIGRecordContent
    - CommunicatorClass::addSuckRequest
    - UeberBackend*::lookup
    - SLOG
    - set::insert
    - auto::d_inprogress::count
    - Logging::Loggable
    - time
    - QType
    - B64Decode
    - auto::d_failedSecondaryRefresh::end
    - lock
    - DNSSECKeeper::getTSIGForAccess
    - UeberBackend*::get
    - Inflighter::getTimeouts
    - std::max
    - UeberBackend*::getDomainInfo
    - UeberBackend*::getDomainMetadata
    - vector::push_back
    - getTSIGDetails
    - ComboAddress::toStringWithPortExcept
    - UeberBackend*::lookupEnd
    - backend::setFresh
    - primaries::empty
    - di
    - vector::empty
    - std::vector::empty
    - SecondarySenderReceiver::d_freshness::size
    - primaries::begin
    - std::vector::clear
    - Inflighter::run
    - arg
    - auto::d_failedSecondaryRefresh::find
    - auto::d_failedSecondaryRefresh::erase
    - ComboAddress
    - auto::d_inprogress::size
    - std::move
    - PacketHandler*::tryAutoPrimarySynchronous
    - backend::setStale
    - fillSOAData
    - getRR
    - count
    - rfc1982LessThan
    - what
    - SecondarySenderReceiver::d_freshness::count
    - DNSSECKeeper::doesDNSSEC
    - UeberBackend*::getUnfreshSecondaryInfos
    - info
    - humanTime
    - UeberBackend*::getTSIGKey
    - PacketHandler*::getBackend
    - DNSName::DNSName
    - vector::size
    - DNSSECKeeper::isPresigned
    linkageType: ''
    returnType: void
    signature: void CommunicatorClass::secondaryRefresh(PacketHandler* P)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1593,1
    - Dst: vector::reserve
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1594,1
    - Dst: auto::d_suckdomains::size
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1594,1
    - Dst: vector::emplace_back
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1596,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1599
      start: 1590
    functionDepth: 0
    functionLinenumber: 1590
    functionLinenumberEnd: 1599
    functionName: CommunicatorClass::getSuckRequests
    functionSourceFile: /src/pdns/pdns/auth-secondarycommunicator.cc
    functionUses: 0
    functionsReached:
    - vector::reserve
    - auto::d_suckdomains::size
    - vector::emplace_back
    - lock
    linkageType: ''
    returnType: vector<pair<ZoneName, ComboAddress>>
    signature: vector<pair<ZoneName, ComboAddress>> CommunicatorClass::getSuckRequests()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1603,1
    - Dst: size
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1603,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1604
      start: 1601
    functionDepth: 0
    functionLinenumber: 1601
    functionLinenumberEnd: 1604
    functionName: CommunicatorClass::getSuckRequestsWaiting
    functionSourceFile: /src/pdns/pdns/auth-secondarycommunicator.cc
    functionUses: 0
    functionsReached:
    - size
    - lock
    linkageType: ''
    returnType: size_t
    signature: size_t CommunicatorClass::getSuckRequestsWaiting()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1609,1
    - Dst: time
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1610,1
    - Dst: auto::d_failedSecondaryRefresh::find
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1611,1
    - Dst: auto::d_failedSecondaryRefresh::end
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1612,1
    - Dst: std::min
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1615,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1615,1
    - Dst: std::make_pair
      Src: /src/pdns/pdns/auth-secondarycommunicator.cc:1617,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - ' domain'
    argTypes:
    - ZoneName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1618
      start: 1606
    functionDepth: 0
    functionLinenumber: 1606
    functionLinenumberEnd: 1618
    functionName: CommunicatorClass::markAsFailed
    functionSourceFile: /src/pdns/pdns/auth-secondarycommunicator.cc
    functionUses: 2
    functionsReached:
    - time
    - std::min
    - auto::d_failedSecondaryRefresh::end
    - lock
    - std::make_pair
    - arg
    - auto::d_failedSecondaryRefresh::find
    linkageType: ''
    returnType: std::pair<uint64_t, time_t>
    signature: std::pair<uint64_t, time_t> CommunicatorClass::markAsFailed(const ZoneName&
      domain)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 32
      start: 32
    functionDepth: 0
    functionLinenumber: 32
    functionLinenumberEnd: 32
    functionName: QuestionIdentifier
    functionSourceFile: /src/pdns/pdns/anadns.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void QuestionIdentifier()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::tie
      Src: /src/pdns/pdns/anadns.hh:37,1
    - Dst: std::tie
      Src: /src/pdns/pdns/anadns.hh:38,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - QuestionIdentifier
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 39
      start: 34
    functionDepth: 0
    functionLinenumber: 34
    functionLinenumberEnd: 39
    functionName: operator<(const QuestionIdentifier& rhs) const
    functionSourceFile: /src/pdns/pdns/anadns.hh
    functionUses: 0
    functionsReached:
    - std::tie
    linkageType: ''
    returnType: bool
    signature: bool operator<(const QuestionIdentifier& rhs) const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ntohs
      Src: /src/pdns/pdns/anadns.hh:57,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 5
    argNames:
    - ' src'
    - ' dst'
    - ' header'
    - ' qname'
    - qtype
    argTypes:
    - ComboAddress
    - ComboAddress
    - struct dnsheader
    - DNSName
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 59
    functionName: create
    functionSourceFile: /src/pdns/pdns/anadns.hh
    functionUses: 13
    functionsReached:
    - ntohs
    linkageType: ''
    returnType: QuestionIdentifier
    signature: QuestionIdentifier create(const ComboAddress& src, const ComboAddress&
      dst, const struct dnsheader& header, const DNSName& qname, uint16_t qtype)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: create
      Src: /src/pdns/pdns/anadns.hh:64,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' src'
    - ' dst'
    - ' mdp'
    argTypes:
    - ComboAddress
    - ComboAddress
    - MOADNSParser
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 62
    functionDepth: 1
    functionLinenumber: 62
    functionLinenumberEnd: 65
    functionName: create
    functionSourceFile: /src/pdns/pdns/anadns.hh
    functionUses: 14
    functionsReached:
    - create
    linkageType: ''
    returnType: QuestionIdentifier
    signature: QuestionIdentifier create(const ComboAddress& src, const ComboAddress&
      dst, const MOADNSParser& mdp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSRecordContent::NumberToType
      Src: /src/pdns/pdns/anadns.hh:77,1
    - Dst: d_source::toStringWithPort
      Src: /src/pdns/pdns/anadns.hh:77,1
    - Dst: d_dest::toStringWithPort
      Src: /src/pdns/pdns/anadns.hh:79,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - s
    - ' qi'
    argTypes:
    - ostream
    - QuestionIdentifier
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 75
    functionDepth: 0
    functionLinenumber: 75
    functionLinenumberEnd: 81
    functionName: '& operator<<(ostream &s, const QuestionIdentifier& qi)'
    functionSourceFile: /src/pdns/pdns/anadns.hh
    functionUses: 0
    functionsReached:
    - d_source::toStringWithPort
    - d_dest::toStringWithPort
    - DNSRecordContent::NumberToType
    linkageType: ''
    returnType: ostream
    signature: ostream & operator<<(ostream &s, const QuestionIdentifier& qi)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSSECKeeper::doesDNSSEC
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:58,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 56
    functionDepth: 1
    functionLinenumber: 56
    functionLinenumberEnd: 59
    functionName: DNSSECKeeper::doesDNSSEC
    functionSourceFile: /src/pdns/pdns/dbdnsseckeeper.cc
    functionUses: 2
    functionsReached:
    - DNSSECKeeper::doesDNSSEC
    linkageType: ''
    returnType: bool
    signature: bool DNSSECKeeper::doesDNSSEC()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: DNSSECKeeper::isPresigned
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:63,1
    - Dst: DNSSECKeeper::getKeys
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:66,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - ' zone'
    - useCache
    argTypes:
    - ZoneName
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 61
    functionDepth: 1
    functionLinenumber: 61
    functionLinenumberEnd: 74
    functionName: DNSSECKeeper::isSecuredZone
    functionSourceFile: /src/pdns/pdns/dbdnsseckeeper.cc
    functionUses: 7
    functionsReached:
    - DNSSECKeeper::getKeys
    - DNSSECKeeper::isPresigned
    linkageType: ''
    returnType: bool
    signature: bool DNSSECKeeper::isSecuredZone(const ZoneName& zone, bool useCache)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DNSSECKeeper::getFromMeta
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:80,1
    - Dst: DNSSECKeeper::getFromMetaNoCache
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:83,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - ' name'
    - ' metaname'
    - useCache
    argTypes:
    - ZoneName
    - std::string
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 76
    functionDepth: 1
    functionLinenumber: 76
    functionLinenumberEnd: 86
    functionName: DNSSECKeeper::isMetadataOne
    functionSourceFile: /src/pdns/pdns/dbdnsseckeeper.cc
    functionUses: 0
    functionsReached:
    - DNSSECKeeper::getFromMeta
    - DNSSECKeeper::getFromMetaNoCache
    linkageType: ''
    returnType: bool
    signature: bool DNSSECKeeper::isMetadataOne(const ZoneName& name, const std::string&
      metaname, bool useCache)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSSECKeeper::isMetadataOne
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:90,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' name'
    - useCache
    argTypes:
    - ZoneName
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 88
    functionDepth: 2
    functionLinenumber: 88
    functionLinenumberEnd: 91
    functionName: DNSSECKeeper::isPresigned
    functionSourceFile: /src/pdns/pdns/dbdnsseckeeper.cc
    functionUses: 6
    functionsReached:
    - DNSSECKeeper::isMetadataOne
    linkageType: ''
    returnType: bool
    signature: bool DNSSECKeeper::isPresigned(const ZoneName& name, bool useCache)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSSECKeeper::isMetadataOne
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:95,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' name'
    - useCache
    argTypes:
    - ZoneName
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 93
    functionDepth: 2
    functionLinenumber: 93
    functionLinenumberEnd: 96
    functionName: DNSSECKeeper::isSignalingZone
    functionSourceFile: /src/pdns/pdns/dbdnsseckeeper.cc
    functionUses: 0
    functionsReached:
    - DNSSECKeeper::isMetadataOne
    linkageType: ''
    returnType: bool
    signature: bool DNSSECKeeper::isSignalingZone(const ZoneName& name, bool useCache)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: runtime_error
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:102,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:102,1
    - Dst: algorithm2name
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:102,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:111,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:111,1
    - Dst: shared_ptr::create
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:117,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:119,1
    - Dst: DNSSECPrivateKey::setKey
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:122,1
    - Dst: DNSSECKeeper::addKey
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:123,1
    - Dst: DNSSECKeeper::clearKeyCache
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:123,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 21
    argCount: 7
    argNames:
    - ' name'
    - setSEPBit
    - algorithm
    - ' keyId'
    - bits
    - active
    - published
    argTypes:
    - ZoneName
    - bool
    - int
    - int64_t
    - int
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 124
      start: 98
    functionDepth: 1
    functionLinenumber: 98
    functionLinenumberEnd: 124
    functionName: DNSSECKeeper::addKey
    functionSourceFile: /src/pdns/pdns/dbdnsseckeeper.cc
    functionUses: 5
    functionsReached:
    - DNSSECKeeper::clearKeyCache
    - std::to_string
    - runtime_error
    - DNSSECPrivateKey::setKey
    - shared_ptr::create
    - DNSSECKeeper::addKey
    - algorithm2name
    linkageType: ''
    returnType: bool
    signature: bool DNSSECKeeper::addKey(const ZoneName& name, bool setSEPBit, int
      algorithm, int64_t& keyId, int bits, bool active, bool published)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: write_lock
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:127,1
    - Dst: write_lock
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:128,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 129
      start: 126
    functionDepth: 0
    functionLinenumber: 126
    functionLinenumberEnd: 129
    functionName: DNSSECKeeper::clearAllCaches
    functionSourceFile: /src/pdns/pdns/dbdnsseckeeper.cc
    functionUses: 1
    functionsReached:
    - write_lock
    linkageType: ''
    returnType: void
    signature: void DNSSECKeeper::clearAllCaches()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: write_lock
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:135,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ' name'
    argTypes:
    - ZoneName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 137
      start: 133
    functionDepth: 0
    functionLinenumber: 133
    functionLinenumberEnd: 137
    functionName: DNSSECKeeper::clearKeyCache
    functionSourceFile: /src/pdns/pdns/dbdnsseckeeper.cc
    functionUses: 1
    functionsReached:
    - write_lock
    linkageType: ''
    returnType: bool
    signature: bool DNSSECKeeper::clearKeyCache(const ZoneName& name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: write_lock
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:141,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - ' name'
    argTypes:
    - ZoneName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 144
      start: 139
    functionDepth: 0
    functionLinenumber: 139
    functionLinenumberEnd: 144
    functionName: DNSSECKeeper::clearMetaCache
    functionSourceFile: /src/pdns/pdns/dbdnsseckeeper.cc
    functionUses: 0
    functionsReached:
    - write_lock
    linkageType: ''
    returnType: bool
    signature: bool DNSSECKeeper::clearMetaCache(const ZoneName& name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSSECKeeper::clearKeyCache
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:148,1
    - Dst: DNSSECKeeper::clearMetaCache
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:149,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ' name'
    argTypes:
    - ZoneName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 150
      start: 146
    functionDepth: 1
    functionLinenumber: 146
    functionLinenumberEnd: 150
    functionName: DNSSECKeeper::clearCaches
    functionSourceFile: /src/pdns/pdns/dbdnsseckeeper.cc
    functionUses: 4
    functionsReached:
    - DNSSECKeeper::clearKeyCache
    - DNSSECKeeper::clearMetaCache
    linkageType: ''
    returnType: void
    signature: void DNSSECKeeper::clearCaches(const ZoneName& name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getFlags
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:155,1
    - Dst: getKey
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:158,1
    - Dst: addDomainKey
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:160,1
    - Dst: DNSSECKeeper::clearKeyCache
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:160,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 5
    argNames:
    - ' name'
    - ' dpk'
    - ' keyId'
    - active
    - published
    argTypes:
    - ZoneName
    - DNSSECPrivateKey
    - int64_t
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 161
      start: 152
    functionDepth: 1
    functionLinenumber: 152
    functionLinenumberEnd: 161
    functionName: DNSSECKeeper::addKey
    functionSourceFile: /src/pdns/pdns/dbdnsseckeeper.cc
    functionUses: 5
    functionsReached:
    - DNSSECKeeper::clearKeyCache
    - addDomainKey
    - getKey
    - getFlags
    linkageType: ''
    returnType: bool
    signature: bool DNSSECKeeper::addKey(const ZoneName& name, const DNSSECPrivateKey&
      dpk, int64_t& keyId, bool active, bool published)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pair
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:166,1
    - Dst: pair
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:167,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' a'
    - ' b'
    argTypes:
    - DNSSECKeeper::keyset_t::value_type
    - DNSSECKeeper::keyset_t::value_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 168
      start: 164
    functionDepth: 0
    functionLinenumber: 164
    functionLinenumberEnd: 168
    functionName: keyCompareByKindAndID
    functionSourceFile: /src/pdns/pdns/dbdnsseckeeper.cc
    functionUses: 0
    functionsReached:
    - pair
    linkageType: ''
    returnType: bool
    signature: bool keyCompareByKindAndID(const DNSSECKeeper::keyset_t::value_type&
      a, const DNSSECKeeper::keyset_t::value_type& b)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: getDomainKeys
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:173,1
    - Dst: DNSKEYRecordContent::DNSKEYRecordContent
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:179,1
    - Dst: shared_ptr<DNSCryptoKeyEngine>
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:180,1
    - Dst: DNSCryptoKeyEngine::makeFromISCString
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:180,1
    - Dst: DNSSECPrivateKey::setKey
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:182,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:186,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:186,1
    - Dst: toLogString
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:186,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 2
    argNames:
    - ' zname'
    - keyId
    argTypes:
    - ZoneName
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 187
      start: 170
    functionDepth: 0
    functionLinenumber: 170
    functionLinenumberEnd: 187
    functionName: DNSSECKeeper::getKeyById
    functionSourceFile: /src/pdns/pdns/dbdnsseckeeper.cc
    functionUses: 8
    functionsReached:
    - getDomainKeys
    - shared_ptr<DNSCryptoKeyEngine>
    - toLogString
    - std::to_string
    - DNSCryptoKeyEngine::makeFromISCString
    - runtime_error
    - DNSSECPrivateKey::setKey
    - DNSKEYRecordContent::DNSKEYRecordContent
    linkageType: ''
    returnType: DNSSECPrivateKey
    signature: DNSSECPrivateKey DNSSECKeeper::getKeyById(const ZoneName& zname, unsigned
      int keyId)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: removeDomainKey
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:192,1
    - Dst: DNSSECKeeper::clearKeyCache
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:192,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 2
    argNames:
    - ' zname'
    - keyId
    argTypes:
    - ZoneName
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 193
      start: 190
    functionDepth: 1
    functionLinenumber: 190
    functionLinenumberEnd: 193
    functionName: DNSSECKeeper::removeKey
    functionSourceFile: /src/pdns/pdns/dbdnsseckeeper.cc
    functionUses: 1
    functionsReached:
    - DNSSECKeeper::clearKeyCache
    - removeDomainKey
    linkageType: ''
    returnType: bool
    signature: bool DNSSECKeeper::removeKey(const ZoneName& zname, unsigned int keyId)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: deactivateDomainKey
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:197,1
    - Dst: DNSSECKeeper::clearKeyCache
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:197,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 2
    argNames:
    - ' zname'
    - keyId
    argTypes:
    - ZoneName
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 198
      start: 195
    functionDepth: 1
    functionLinenumber: 195
    functionLinenumberEnd: 198
    functionName: DNSSECKeeper::deactivateKey
    functionSourceFile: /src/pdns/pdns/dbdnsseckeeper.cc
    functionUses: 1
    functionsReached:
    - DNSSECKeeper::clearKeyCache
    - deactivateDomainKey
    linkageType: ''
    returnType: bool
    signature: bool DNSSECKeeper::deactivateKey(const ZoneName& zname, unsigned int
      keyId)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: activateDomainKey
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:202,1
    - Dst: DNSSECKeeper::clearKeyCache
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:202,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 2
    argNames:
    - ' zname'
    - keyId
    argTypes:
    - ZoneName
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 203
      start: 200
    functionDepth: 1
    functionLinenumber: 200
    functionLinenumberEnd: 203
    functionName: DNSSECKeeper::activateKey
    functionSourceFile: /src/pdns/pdns/dbdnsseckeeper.cc
    functionUses: 1
    functionsReached:
    - DNSSECKeeper::clearKeyCache
    - activateDomainKey
    linkageType: ''
    returnType: bool
    signature: bool DNSSECKeeper::activateKey(const ZoneName& zname, unsigned int
      keyId)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: unpublishDomainKey
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:207,1
    - Dst: DNSSECKeeper::clearKeyCache
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:207,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 2
    argNames:
    - ' zname'
    - keyId
    argTypes:
    - ZoneName
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 208
      start: 205
    functionDepth: 1
    functionLinenumber: 205
    functionLinenumberEnd: 208
    functionName: DNSSECKeeper::unpublishKey
    functionSourceFile: /src/pdns/pdns/dbdnsseckeeper.cc
    functionUses: 1
    functionsReached:
    - unpublishDomainKey
    - DNSSECKeeper::clearKeyCache
    linkageType: ''
    returnType: bool
    signature: bool DNSSECKeeper::unpublishKey(const ZoneName& zname, unsigned int
      keyId)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: publishDomainKey
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:212,1
    - Dst: DNSSECKeeper::clearKeyCache
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:212,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 2
    argNames:
    - ' zname'
    - keyId
    argTypes:
    - ZoneName
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 213
      start: 210
    functionDepth: 1
    functionLinenumber: 210
    functionLinenumberEnd: 213
    functionName: DNSSECKeeper::publishKey
    functionSourceFile: /src/pdns/pdns/dbdnsseckeeper.cc
    functionUses: 1
    functionsReached:
    - DNSSECKeeper::clearKeyCache
    - publishDomainKey
    linkageType: ''
    returnType: bool
    signature: bool DNSSECKeeper::publishKey(const ZoneName& zname, unsigned int keyId)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DNSSECKeeper::getFromMeta
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:217,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 4
    argNames:
    - ' zname'
    - ' key'
    - ' value'
    - ' defaultvalue'
    argTypes:
    - ZoneName
    - std::string
    - std::string
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 221
      start: 215
    functionDepth: 1
    functionLinenumber: 215
    functionLinenumberEnd: 221
    functionName: DNSSECKeeper::getFromMetaOrDefault
    functionSourceFile: /src/pdns/pdns/dbdnsseckeeper.cc
    functionUses: 0
    functionsReached:
    - DNSSECKeeper::getFromMeta
    linkageType: ''
    returnType: void
    signature: void DNSSECKeeper::getFromMetaOrDefault(const ZoneName& zname, const
      std::string& key, std::string& value, const std::string& defaultvalue)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: inTransaction
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:226,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:227,1
    - Dst: arg
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:232,1
    - Dst: DNSSECKeeper::cleanup
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:235,1
    - Dst: clear
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:238,1
    - Dst: time
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:239,1
    - Dst: read_lock
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:246,1
    - Dst: auto::find
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:247,1
    - Dst: auto::end
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:248,1
    - Dst: getAllDomainMetadata
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:258,1
    - Dst: METAValues::find
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:261,1
    - Dst: METAValues::end
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:262,1
    - Dst: auto::second::empty
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:263,1
    - Dst: auto::second::begin
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:264,1
    - Dst: std::move
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:273,1
    - Dst: write_lock
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:275,1
    - Dst: lruReplacingInsert
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:279,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 39
    argCount: 3
    argNames:
    - ' zname'
    - ' key'
    - ' value'
    argTypes:
    - ZoneName
    - std::string
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 284
      start: 223
    functionDepth: 1
    functionLinenumber: 223
    functionLinenumberEnd: 284
    functionName: DNSSECKeeper::getFromMeta
    functionSourceFile: /src/pdns/pdns/dbdnsseckeeper.cc
    functionUses: 2
    functionsReached:
    - std::move
    - METAValues::find
    - METAValues::end
    - getAllDomainMetadata
    - auto::end
    - time
    - lruReplacingInsert
    - runtime_error
    - read_lock
    - auto::second::empty
    - DNSSECKeeper::cleanup
    - write_lock
    - clear
    - auto::find
    - arg
    - auto::second::begin
    - inTransaction
    linkageType: ''
    returnType: bool
    signature: bool DNSSECKeeper::getFromMeta(const ZoneName& zname, const std::string&
      key, std::string& value)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: getDomainMetadata
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:289,1
    - Dst: std::vector::empty
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:290,1
    - Dst: std::vector::begin
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:291,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - ' name'
    - ' kind'
    - ' value'
    argTypes:
    - ZoneName
    - std::string
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 296
      start: 286
    functionDepth: 0
    functionLinenumber: 286
    functionLinenumberEnd: 296
    functionName: DNSSECKeeper::getFromMetaNoCache
    functionSourceFile: /src/pdns/pdns/dbdnsseckeeper.cc
    functionUses: 1
    functionsReached:
    - std::vector::begin
    - getDomainMetadata
    - std::vector::empty
    linkageType: ''
    returnType: bool
    signature: bool DNSSECKeeper::getFromMetaNoCache(const ZoneName& name, const std::string&
      kind, std::string& value)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: DNSSECKeeper::isPresigned
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:303,1
    - Dst: DNSSECKeeper::getFromMeta
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:308,1
    - Dst: string::empty
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:310,1
    - Dst: string::empty
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:310,1
    - Dst: empty
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:310,1
    - Dst: string::empty
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:311,1
    - Dst: DNSSECKeeper::isSecuredZone
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:311,1
    - Dst: empty
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:313,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 12
    argCount: 3
    argNames:
    - ' zname'
    - ' value'
    - useCache
    argTypes:
    - ZoneName
    - std::string
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 318
      start: 298
    functionDepth: 3
    functionLinenumber: 298
    functionLinenumberEnd: 318
    functionName: DNSSECKeeper::getSoaEdit
    functionSourceFile: /src/pdns/pdns/dbdnsseckeeper.cc
    functionUses: 1
    functionsReached:
    - DNSSECKeeper::isSecuredZone
    - string::empty
    - DNSSECKeeper::getFromMeta
    - empty
    - DNSSECKeeper::isPresigned
    linkageType: ''
    returnType: void
    signature: void DNSSECKeeper::getSoaEdit(const ZoneName& zname, std::string& value,
      bool useCache)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: read_lock
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:323,1
    - Dst: read_lock
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:326,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - ' str'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 329
      start: 320
    functionDepth: 0
    functionLinenumber: 320
    functionLinenumberEnd: 329
    functionName: DNSSECKeeper::dbdnssecCacheSizes
    functionSourceFile: /src/pdns/pdns/dbdnsseckeeper.cc
    functionUses: 0
    functionsReached:
    - read_lock
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t DNSSECKeeper::dbdnssecCacheSizes(const std::string& str)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: DNSSECKeeper::getFromMeta
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:335,1
    - Dst: DNSSECKeeper::getFromMetaNoCache
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:338,1
    - Dst: string::empty
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:340,1
    - Dst: arg
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:344,1
    - Dst: NSEC3PARAMRecordContent
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:346,1
    - Dst: DNSSECKeeper::isPresigned
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:347,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:349,1
    - Dst: info
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:350,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:350,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:350,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:353,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:353,1
    - Dst: info
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:354,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:354,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:354,1
    - Dst: DNSSECKeeper::isMetadataOne
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:359,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 24
    argCount: 4
    argNames:
    - ' zname'
    - ns3p
    - narrow
    - useCache
    argTypes:
    - ZoneName
    - NSEC3PARAMRecordContent*
    - bool*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 362
      start: 331
    functionDepth: 3
    functionLinenumber: 331
    functionLinenumberEnd: 362
    functionName: DNSSECKeeper::getNSEC3PARAM
    functionSourceFile: /src/pdns/pdns/dbdnsseckeeper.cc
    functionUses: 6
    functionsReached:
    - SLOG
    - arg
    - std::to_string
    - string::empty
    - Logging::Loggable
    - DNSSECKeeper::isMetadataOne
    - info
    - DNSSECKeeper::getFromMetaNoCache
    - DNSSECKeeper::getFromMeta
    - NSEC3PARAMRecordContent
    - DNSSECKeeper::isPresigned
    linkageType: ''
    returnType: bool
    signature: bool DNSSECKeeper::getNSEC3PARAM(const ZoneName& zname, NSEC3PARAMRecordContent*
      ns3p, bool* narrow, bool useCache)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: arg
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:373,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:383,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 2
    argNames:
    - ' ns3p'
    - ' msg'
    argTypes:
    - NSEC3PARAMRecordContent
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 388
      start: 371
    functionDepth: 0
    functionLinenumber: 371
    functionLinenumberEnd: 388
    functionName: DNSSECKeeper::checkNSEC3PARAM
    functionSourceFile: /src/pdns/pdns/dbdnsseckeeper.cc
    functionUses: 0
    functionsReached:
    - arg
    - std::to_string
    linkageType: ''
    returnType: bool
    signature: bool DNSSECKeeper::checkNSEC3PARAM(const NSEC3PARAMRecordContent& ns3p,
      string& msg)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: wirelength
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:392,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:393,1
    - Dst: toLogString
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:393,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:393,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:396,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:396,1
    - Dst: inTransaction
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:399,1
    - Dst: DNSSECKeeper::checkNSEC3PARAM
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:404,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:405,1
    - Dst: toLogString
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:405,1
    - Dst: getZoneRepresentation
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:407,1
    - Dst: vector::emplace_back
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:409,1
    - Dst: std::move
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:409,1
    - Dst: setDomainMetadata
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:410,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:411,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:414,1
    - Dst: setDomainMetadata
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:416,1
    - Dst: DNSSECKeeper::clearMetaCache
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:416,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 21
    argCount: 3
    argNames:
    - ' zname'
    - ' ns3p'
    - ' narrow'
    argTypes:
    - ZoneName
    - NSEC3PARAMRecordContent
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 419
      start: 390
    functionDepth: 1
    functionLinenumber: 390
    functionLinenumberEnd: 419
    functionName: DNSSECKeeper::setNSEC3PARAM
    functionSourceFile: /src/pdns/pdns/dbdnsseckeeper.cc
    functionUses: 3
    functionsReached:
    - getZoneRepresentation
    - toLogString
    - std::move
    - vector::push_back
    - std::to_string
    - wirelength
    - DNSSECKeeper::checkNSEC3PARAM
    - DNSSECKeeper::clearMetaCache
    - runtime_error
    - setDomainMetadata
    - vector::emplace_back
    - vector::clear
    - inTransaction
    linkageType: ''
    returnType: bool
    signature: bool DNSSECKeeper::setNSEC3PARAM(const ZoneName& zname, const NSEC3PARAMRecordContent&
      ns3p, const bool& narrow)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: inTransaction
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:423,1
    - Dst: setDomainMetadata
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:427,1
    - Dst: vector<string>
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:427,1
    - Dst: setDomainMetadata
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:427,1
    - Dst: vector<string>
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:427,1
    - Dst: DNSSECKeeper::clearMetaCache
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:427,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 5
    argCount: 1
    argNames:
    - ' zname'
    argTypes:
    - ZoneName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 428
      start: 421
    functionDepth: 1
    functionLinenumber: 421
    functionLinenumberEnd: 428
    functionName: DNSSECKeeper::unsetNSEC3PARAM
    functionSourceFile: /src/pdns/pdns/dbdnsseckeeper.cc
    functionUses: 2
    functionsReached:
    - vector<string>
    - DNSSECKeeper::clearMetaCache
    - setDomainMetadata
    - inTransaction
    linkageType: ''
    returnType: bool
    signature: bool DNSSECKeeper::unsetNSEC3PARAM(const ZoneName& zname)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: inTransaction
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:433,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:438,1
    - Dst: setDomainMetadata
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:439,1
    - Dst: DNSSECKeeper::clearMetaCache
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:439,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - ' zname'
    argTypes:
    - ZoneName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 440
      start: 431
    functionDepth: 1
    functionLinenumber: 431
    functionLinenumberEnd: 440
    functionName: DNSSECKeeper::setPresigned
    functionSourceFile: /src/pdns/pdns/dbdnsseckeeper.cc
    functionUses: 2
    functionsReached:
    - DNSSECKeeper::clearMetaCache
    - vector::push_back
    - setDomainMetadata
    - inTransaction
    linkageType: ''
    returnType: bool
    signature: bool DNSSECKeeper::setPresigned(const ZoneName& zname)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: inTransaction
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:444,1
    - Dst: setDomainMetadata
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:448,1
    - Dst: vector<string>
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:448,1
    - Dst: DNSSECKeeper::clearMetaCache
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:448,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - ' zname'
    argTypes:
    - ZoneName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 449
      start: 442
    functionDepth: 1
    functionLinenumber: 442
    functionLinenumberEnd: 449
    functionName: DNSSECKeeper::unsetPresigned
    functionSourceFile: /src/pdns/pdns/dbdnsseckeeper.cc
    functionUses: 2
    functionsReached:
    - vector<string>
    - DNSSECKeeper::clearMetaCache
    - setDomainMetadata
    - inTransaction
    linkageType: ''
    returnType: bool
    signature: bool DNSSECKeeper::unsetPresigned(const ZoneName& zname)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: inTransaction
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:462,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:467,1
    - Dst: setDomainMetadata
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:468,1
    - Dst: DNSSECKeeper::clearMetaCache
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:468,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - ' zname'
    - ' digestAlgos'
    argTypes:
    - ZoneName
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 469
      start: 460
    functionDepth: 1
    functionLinenumber: 460
    functionLinenumberEnd: 469
    functionName: DNSSECKeeper::setPublishCDS
    functionSourceFile: /src/pdns/pdns/dbdnsseckeeper.cc
    functionUses: 1
    functionsReached:
    - DNSSECKeeper::clearMetaCache
    - vector::push_back
    - setDomainMetadata
    - inTransaction
    linkageType: ''
    returnType: bool
    signature: bool DNSSECKeeper::setPublishCDS(const ZoneName& zname, const string&
      digestAlgos)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSSECKeeper::getFromMetaOrDefault
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:473,1
    - Dst: arg
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:473,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' zname'
    - ' value'
    argTypes:
    - ZoneName
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 474
      start: 471
    functionDepth: 2
    functionLinenumber: 471
    functionLinenumberEnd: 474
    functionName: DNSSECKeeper::getPublishCDS
    functionSourceFile: /src/pdns/pdns/dbdnsseckeeper.cc
    functionUses: 1
    functionsReached:
    - DNSSECKeeper::getFromMetaOrDefault
    - arg
    linkageType: ''
    returnType: void
    signature: void DNSSECKeeper::getPublishCDS(const ZoneName& zname, std::string&
      value)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: inTransaction
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:484,1
    - Dst: setDomainMetadata
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:488,1
    - Dst: vector<string>
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:488,1
    - Dst: DNSSECKeeper::clearMetaCache
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:488,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - ' zname'
    argTypes:
    - ZoneName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 489
      start: 482
    functionDepth: 1
    functionLinenumber: 482
    functionLinenumberEnd: 489
    functionName: DNSSECKeeper::unsetPublishCDS
    functionSourceFile: /src/pdns/pdns/dbdnsseckeeper.cc
    functionUses: 1
    functionsReached:
    - vector<string>
    - DNSSECKeeper::clearMetaCache
    - setDomainMetadata
    - inTransaction
    linkageType: ''
    returnType: bool
    signature: bool DNSSECKeeper::unsetPublishCDS(const ZoneName& zname)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: inTransaction
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:499,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:504,1
    - Dst: setDomainMetadata
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:505,1
    - Dst: DNSSECKeeper::clearMetaCache
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:505,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - ' zname'
    - deleteAlg
    argTypes:
    - ZoneName
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 506
      start: 497
    functionDepth: 1
    functionLinenumber: 497
    functionLinenumberEnd: 506
    functionName: DNSSECKeeper::setPublishCDNSKEY
    functionSourceFile: /src/pdns/pdns/dbdnsseckeeper.cc
    functionUses: 1
    functionsReached:
    - DNSSECKeeper::clearMetaCache
    - vector::push_back
    - setDomainMetadata
    - inTransaction
    linkageType: ''
    returnType: bool
    signature: bool DNSSECKeeper::setPublishCDNSKEY(const ZoneName& zname, bool deleteAlg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSSECKeeper::getFromMetaOrDefault
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:510,1
    - Dst: arg
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:510,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' zname'
    - ' value'
    argTypes:
    - ZoneName
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 511
      start: 508
    functionDepth: 2
    functionLinenumber: 508
    functionLinenumberEnd: 511
    functionName: DNSSECKeeper::getPublishCDNSKEY
    functionSourceFile: /src/pdns/pdns/dbdnsseckeeper.cc
    functionUses: 1
    functionsReached:
    - DNSSECKeeper::getFromMetaOrDefault
    - arg
    linkageType: ''
    returnType: void
    signature: void DNSSECKeeper::getPublishCDNSKEY(const ZoneName& zname, std::string&
      value)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: inTransaction
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:521,1
    - Dst: setDomainMetadata
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:525,1
    - Dst: vector<string>
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:525,1
    - Dst: DNSSECKeeper::clearMetaCache
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:525,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - ' zname'
    argTypes:
    - ZoneName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 526
      start: 519
    functionDepth: 1
    functionLinenumber: 519
    functionLinenumberEnd: 526
    functionName: DNSSECKeeper::unsetPublishCDNSKEY
    functionSourceFile: /src/pdns/pdns/dbdnsseckeeper.cc
    functionUses: 1
    functionsReached:
    - vector<string>
    - DNSSECKeeper::clearMetaCache
    - setDomainMetadata
    - inTransaction
    linkageType: ''
    returnType: bool
    signature: bool DNSSECKeeper::unsetPublishCDNSKEY(const ZoneName& zname)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DNSSECKeeper::getKeys
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:538,1
    - Dst: DNSSECKeeper::keyset_t::push_back
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:542,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 4
    argCount: 1
    argNames:
    - ' zname'
    argTypes:
    - ZoneName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 544
      start: 535
    functionDepth: 1
    functionLinenumber: 535
    functionLinenumberEnd: 544
    functionName: DNSSECKeeper::getEntryPoints
    functionSourceFile: /src/pdns/pdns/dbdnsseckeeper.cc
    functionUses: 1
    functionsReached:
    - DNSSECKeeper::keyset_t::push_back
    - DNSSECKeeper::getKeys
    linkageType: ''
    returnType: DNSSECKeeper::keyset_t
    signature: DNSSECKeeper::keyset_t DNSSECKeeper::getEntryPoints(const ZoneName&
      zname)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: arg
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:548,1
    - Dst: time
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:550,1
    - Dst: DNSSECKeeper::cleanup
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:553,1
    - Dst: read_lock
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:557,1
    - Dst: auto::find
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:558,1
    - Dst: auto::end
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:560,1
    - Dst: keyset_t::reserve
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:562,1
    - Dst: auto::d_keys::size
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:562,1
    - Dst: keyset_t::push_back
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:564,1
    - Dst: getDomainKeys
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:572,1
    - Dst: DNSKEYRecordContent::DNSKEYRecordContent
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:578,1
    - Dst: shared_ptr<DNSCryptoKeyEngine>
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:579,1
    - Dst: DNSCryptoKeyEngine::makeFromISCString
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:579,1
    - Dst: DNSSECPrivateKey::setKey
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:581,1
    - Dst: set::insert
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:585,1
    - Dst: insert
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:587,1
    - Dst: set_intersection
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:590,1
    - Dst: set::begin
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:590,1
    - Dst: set::end
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:590,1
    - Dst: begin
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:590,1
    - Dst: end
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:590,1
    - Dst: std::back_inserter
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:590,1
    - Dst: keyset_t::reserve
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:591,1
    - Dst: vector::size
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:591,1
    - Dst: DNSKEYRecordContent::DNSKEYRecordContent
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:595,1
    - Dst: shared_ptr<DNSCryptoKeyEngine>
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:596,1
    - Dst: DNSCryptoKeyEngine::makeFromISCString
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:596,1
    - Dst: DNSSECPrivateKey::setKey
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:598,1
    - Dst: find
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:607,1
    - Dst: vector::begin
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:607,1
    - Dst: vector::end
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:607,1
    - Dst: DNSSECPrivateKey::getAlgorithm
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:607,1
    - Dst: vector::end
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:607,1
    - Dst: keyset_t::emplace_back
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:614,1
    - Dst: sort
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:616,1
    - Dst: keyset_t::begin
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:616,1
    - Dst: keyset_t::end
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:616,1
    - Dst: lruReplacingInsert
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:624,1
    - Dst: write_lock
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:624,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 42
    argCount: 2
    argNames:
    - ' zone'
    - useCache
    argTypes:
    - ZoneName
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 629
      start: 546
    functionDepth: 1
    functionLinenumber: 546
    functionLinenumberEnd: 629
    functionName: DNSSECKeeper::getKeys
    functionSourceFile: /src/pdns/pdns/dbdnsseckeeper.cc
    functionUses: 4
    functionsReached:
    - DNSCryptoKeyEngine::makeFromISCString
    - DNSSECPrivateKey::setKey
    - sort
    - insert
    - std::back_inserter
    - find
    - vector::begin
    - set::insert
    - lruReplacingInsert
    - time
    - set_intersection
    - keyset_t::begin
    - read_lock
    - DNSSECKeeper::cleanup
    - DNSSECPrivateKey::getAlgorithm
    - set::end
    - keyset_t::reserve
    - begin
    - getDomainKeys
    - shared_ptr<DNSCryptoKeyEngine>
    - vector::end
    - set::begin
    - auto::d_keys::size
    - auto::find
    - arg
    - DNSKEYRecordContent::DNSKEYRecordContent
    - keyset_t::push_back
    - keyset_t::end
    - end
    - keyset_t::emplace_back
    - write_lock
    - auto::end
    - vector::size
    linkageType: ''
    returnType: DNSSECKeeper::keyset_t
    signature: DNSSECKeeper::keyset_t DNSSECKeeper::getKeys(const ZoneName& zone,
      bool useCache)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getDomainKeys
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:634,1
    - Dst: DNSKEYRecordContent::DNSKEYRecordContent
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:638,1
    - Dst: DNSCryptoKeyEngine::makeFromISCString
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:639,1
    - Dst: auto::checkKey
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:640,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - ' zone'
    - errorMessages
    argTypes:
    - ZoneName
    - std::optional<std::reference_wrapper<std::vector<std::string>>>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 644
      start: 631
    functionDepth: 0
    functionLinenumber: 631
    functionLinenumberEnd: 644
    functionName: DNSSECKeeper::checkKeys
    functionSourceFile: /src/pdns/pdns/dbdnsseckeeper.cc
    functionUses: 1
    functionsReached:
    - getDomainKeys
    - DNSCryptoKeyEngine::makeFromISCString
    - auto::checkKey
    - DNSKEYRecordContent::DNSKEYRecordContent
    linkageType: ''
    returnType: bool
    signature: bool DNSSECKeeper::checkKeys(const ZoneName& zone, std::optional<std::reference_wrapper<std::vector<std::string>>>
      errorMessages)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:648,1
    - Dst: rbegin
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:652,1
    - Dst: lookup
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:656,1
    - Dst: QType
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:656,1
    - Dst: auto::wildcardname::empty
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:656,1
    - Dst: get
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:657,1
    - Dst: getRR
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:658,1
    - Dst: auto::wildcardname::empty
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:660,1
    - Dst: emplace_back
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:666,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 4
    argNames:
    - ' db'
    - ' rrs'
    - signTTL
    - packet
    argTypes:
    - UeberBackend
    - vector<DNSZoneRecord>
    - uint32_t
    - DNSPacket*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 669
      start: 646
    functionDepth: 0
    functionLinenumber: 646
    functionLinenumberEnd: 669
    functionName: DNSSECKeeper::getPreRRSIGs
    functionSourceFile: /src/pdns/pdns/dbdnsseckeeper.cc
    functionUses: 0
    functionsReached:
    - getRR
    - auto::wildcardname::empty
    - lookup
    - rbegin
    - QType
    - get
    - emplace_back
    - empty
    linkageType: ''
    returnType: void
    signature: void DNSSECKeeper::getPreRRSIGs(UeberBackend& db, vector<DNSZoneRecord>&
      rrs, uint32_t signTTL, DNSPacket* packet)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: getDomainMetadata
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:675,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:678,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - ' zone'
    - ' keyname'
    argTypes:
    - ZoneName
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 682
      start: 671
    functionDepth: 0
    functionLinenumber: 671
    functionLinenumberEnd: 682
    functionName: DNSSECKeeper::TSIGGrantsAccess
    functionSourceFile: /src/pdns/pdns/dbdnsseckeeper.cc
    functionUses: 1
    functionsReached:
    - getDomainMetadata
    - DNSName
    linkageType: ''
    returnType: bool
    signature: bool DNSSECKeeper::TSIGGrantsAccess(const ZoneName& zone, const DNSName&
      keyname)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getDomainMetadata
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:687,1
    - Dst: DNSName*::trimToLabels
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:688,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:692,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - ' zone'
    - keyname
    argTypes:
    - ZoneName
    - DNSName*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 696
      start: 684
    functionDepth: 0
    functionLinenumber: 684
    functionLinenumberEnd: 696
    functionName: DNSSECKeeper::getTSIGForAccess
    functionSourceFile: /src/pdns/pdns/dbdnsseckeeper.cc
    functionUses: 2
    functionsReached:
    - getDomainMetadata
    - DNSName*::trimToLabels
    - DNSName
    linkageType: ''
    returnType: bool
    signature: bool DNSSECKeeper::getTSIGForAccess(const ZoneName& zone, const ComboAddress&
      /* primary */, DNSName* keyname)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DNSSECKeeper::getKeys
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:701,1
    - Dst: DNSSECKeeper::keyset_t::empty
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:703,1
    - Dst: toLogString
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:704,1
    - Dst: DNSSECKeeper::deactivateKey
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:709,1
    - Dst: DNSSECKeeper::removeKey
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:710,1
    - Dst: DNSSECKeeper::unsetNSEC3PARAM
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:713,1
    - Dst: DNSSECKeeper::unsetPresigned
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:714,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - ' zone'
    - ' error'
    argTypes:
    - ZoneName
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 716
      start: 698
    functionDepth: 2
    functionLinenumber: 698
    functionLinenumberEnd: 716
    functionName: DNSSECKeeper::unSecureZone
    functionSourceFile: /src/pdns/pdns/dbdnsseckeeper.cc
    functionUses: 0
    functionsReached:
    - DNSSECKeeper::unsetNSEC3PARAM
    - toLogString
    - DNSSECKeeper::keyset_t::empty
    - DNSSECKeeper::deactivateKey
    - DNSSECKeeper::getKeys
    - DNSSECKeeper::removeKey
    - DNSSECKeeper::unsetPresigned
    linkageType: ''
    returnType: bool
    signature: bool DNSSECKeeper::unSecureZone(const ZoneName& zone, string& error)
  - BBCount: 44
    BranchProfiles: []
    Callsites:
    - Dst: DNSSECKeeper::isPresigned
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:736,1
    - Dst: toLogString
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:737,1
    - Dst: std::make_unique<UeberBackend>
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:751,1
    - Dst: std::unique_ptr::get
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:752,1
    - Dst: UeberBackend*::getSOAUncached
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:757,1
    - Dst: toLogString
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:758,1
    - Dst: SOAData::db::list
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:762,1
    - Dst: NSEC3PARAMRecordContent::NSEC3PARAMRecordContent
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:771,1
    - Dst: DNSSECKeeper::isSecuredZone
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:772,1
    - Dst: DNSSECKeeper::getNSEC3PARAM
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:776,1
    - Dst: SOAData::db::get
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:781,1
    - Dst: DNSResourceRecord::qname::makeUsLowerCase
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:782,1
    - Dst: std::unordered_map::insert
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:784,1
    - Dst: DNSResourceRecord::ordername::empty
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:784,1
    - Dst: DNSResourceRecord::qtype::getCode
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:792,1
    - Dst: set::insert
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:794,1
    - Dst: DNSResourceRecord::qtype::getCode
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:795,1
    - Dst: insert
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:796,1
    - Dst: DNSResourceRecord::qtype::getCode
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:798,1
    - Dst: insert
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:799,1
    - Dst: vector::emplace_back
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:800,1
    - Dst: insert
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:803,1
    - Dst: std::move
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:803,1
    - Dst: std::string
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:807,1
    - Dst: toLogString
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:807,1
    - Dst: DNSName::chopOff
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:835,1
    - Dst: count
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:837,1
    - Dst: DNSName::chopOff
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:841,1
    - Dst: qtype::getCode
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:844,1
    - Dst: set::count
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:847,1
    - Dst: set::insert
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:848,1
    - Dst: DNSName::chopOff
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:850,1
    - Dst: SOAData::db::startTransaction
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:856,1
    - Dst: SOAData::db::rectifyZoneHook
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:862,1
    - Dst: arg
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:866,1
    - Dst: DNSName::DNSName
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:872,1
    - Dst: count
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:877,1
    - Dst: auto::chopOff
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:881,1
    - Dst: std::unordered_map::find
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:883,1
    - Dst: set::count
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:887,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:889,1
    - Dst: toBase32Hex
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:889,1
    - Dst: hashQNameWithSalt
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:889,1
    - Dst: makeRelative
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:897,1
    - Dst: std::unordered_map::find
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:900,1
    - Dst: std::unordered_map::end
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:901,1
    - Dst: SOAData::db::updateDNSSECOrderNameAndAuth
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:902,1
    - Dst: count
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:907,1
    - Dst: SOAData::db::updateDNSSECOrderNameAndAuth
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:908,1
    - Dst: count
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:911,1
    - Dst: DNSName::clear
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:912,1
    - Dst: count
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:913,1
    - Dst: SOAData::db::updateDNSSECOrderNameAndAuth
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:914,1
    - Dst: SOAData::db::updateDNSSECOrderNameAndAuth
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:917,1
    - Dst: SOAData::db::updateDNSSECOrderNameAndAuth
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:919,1
    - Dst: auto::chopOff
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:925,1
    - Dst: set::count
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:926,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:928,1
    - Dst: info
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:929,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:929,1
    - Dst: clear
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:930,1
    - Dst: clear
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:931,1
    - Dst: count
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:936,1
    - Dst: std::unordered_map::count
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:936,1
    - Dst: insert
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:937,1
    - Dst: erase
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:940,1
    - Dst: std::unordered_map::count
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:943,1
    - Dst: std::unordered_map::insert
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:944,1
    - Dst: pair<DNSName, bool>
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:944,1
    - Dst: empty
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:957,1
    - Dst: empty
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:957,1
    - Dst: SOAData::db::updateEmptyNonTerminals
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:958,1
    - Dst: set::clear
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:962,1
    - Dst: set::insert
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:964,1
    - Dst: SOAData::db::rectifyZoneHook
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:970,1
    - Dst: SOAData::db::commitTransaction
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:973,1
    - Dst: std::string
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:977,1
    - Dst: toLogString
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:977,1
    - Dst: SOAData::db::abortTransaction
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:979,1
    - Dst: ostringstream::str
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:985,1
    CyclomaticComplexity: 88
    EdgeCount: 88
    ICount: 188
    argCount: 4
    argNames:
    - ' zone'
    - ' error'
    - ' info'
    - doTransaction
    argTypes:
    - ZoneName
    - string
    - string
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 987
      start: 735
    functionDepth: 4
    functionLinenumber: 735
    functionLinenumberEnd: 987
    functionName: DNSSECKeeper::rectifyZone
    functionSourceFile: /src/pdns/pdns/dbdnsseckeeper.cc
    functionUses: 0
    functionsReached:
    - DNSSECKeeper::isSecuredZone
    - makeRelative
    - toLogString
    - std::unordered_map::count
    - SOAData::db::updateDNSSECOrderNameAndAuth
    - DNSResourceRecord::ordername::empty
    - DNSName::clear
    - SOAData::db::list
    - UeberBackend*::getSOAUncached
    - insert
    - std::string
    - std::unique_ptr::get
    - erase
    - hashQNameWithSalt
    - auto::chopOff
    - set::insert
    - SLOG
    - DNSName::chopOff
    - Logging::Loggable
    - SOAData::db::rectifyZoneHook
    - SOAData::db::updateEmptyNonTerminals
    - toBase32Hex
    - clear
    - empty
    - pair<DNSName, bool>
    - std::unordered_map::find
    - DNSName::DNSName
    - DNSName
    - qtype::getCode
    - std::make_unique<UeberBackend>
    - DNSResourceRecord::qtype::getCode
    - ostringstream::str
    - SOAData::db::commitTransaction
    - DNSSECKeeper::getNSEC3PARAM
    - arg
    - std::unordered_map::end
    - std::move
    - count
    - SOAData::db::abortTransaction
    - SOAData::db::startTransaction
    - info
    - NSEC3PARAMRecordContent::NSEC3PARAMRecordContent
    - std::unordered_map::insert
    - set::count
    - DNSResourceRecord::qname::makeUsLowerCase
    - vector::emplace_back
    - SOAData::db::get
    - set::clear
    - DNSSECKeeper::isPresigned
    linkageType: ''
    returnType: bool
    signature: bool DNSSECKeeper::rectifyZone(const ZoneName& zone, string& error,
      string& info, bool doTransaction)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Utility::gettimeofday
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:992,1
    - Dst: pruneCollection
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:996,1
    - Dst: write_lock
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:996,1
    - Dst: pruneCollection
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:999,1
    - Dst: write_lock
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:999,1
    - Dst: time
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:1001,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1003
      start: 989
    functionDepth: 0
    functionLinenumber: 989
    functionLinenumberEnd: 1003
    functionName: DNSSECKeeper::cleanup
    functionSourceFile: /src/pdns/pdns/dbdnsseckeeper.cc
    functionUses: 2
    functionsReached:
    - time
    - write_lock
    - pruneCollection
    - Utility::gettimeofday
    linkageType: ''
    returnType: void
    signature: void DNSSECKeeper::cleanup()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: write_lock
      Src: /src/pdns/pdns/dbdnsseckeeper.cc:1009,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - maxEntries
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1011
      start: 1005
    functionDepth: 0
    functionLinenumber: 1005
    functionLinenumberEnd: 1011
    functionName: DNSSECKeeper::setMaxEntries
    functionSourceFile: /src/pdns/pdns/dbdnsseckeeper.cc
    functionUses: 1
    functionsReached:
    - write_lock
    linkageType: ''
    returnType: void
    signature: void DNSSECKeeper::setMaxEntries(size_t maxEntries)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: close
      Src: /src/pdns/pdns/portsmplexer.cc:23,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 24
      start: 21
    functionDepth: 0
    functionLinenumber: 21
    functionLinenumberEnd: 24
    functionName: ~PortsFDMultiplexer()
    functionSourceFile: /src/pdns/pdns/portsmplexer.cc
    functionUses: 0
    functionsReached:
    - close
    linkageType: ''
    returnType: void
    signature: void ~PortsFDMultiplexer()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 35
      start: 32
    functionDepth: 0
    functionLinenumber: 32
    functionLinenumberEnd: 35
    functionName: PortsFDMultiplexer::getName
    functionSourceFile: /src/pdns/pdns/portsmplexer.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: string
    signature: string getName() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PortsFDMultiplexer::PortsFDMultiplexer
      Src: /src/pdns/pdns/portsmplexer.cc:44,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - maxEventsHint
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 42
    functionDepth: 0
    functionLinenumber: 42
    functionLinenumberEnd: 45
    functionName: makePorts
    functionSourceFile: /src/pdns/pdns/portsmplexer.cc
    functionUses: 0
    functionsReached:
    - PortsFDMultiplexer::PortsFDMultiplexer
    linkageType: ''
    returnType: FDMultiplexer
    signature: FDMultiplexer * makePorts(unsigned int maxEventsHint)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: FDMultiplexer::getMultiplexerMap
      Src: /src/pdns/pdns/portsmplexer.cc:51,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 49
    functionDepth: 0
    functionLinenumber: 49
    functionLinenumberEnd: 52
    functionName: PortsRegisterOurselves
    functionSourceFile: /src/pdns/pdns/portsmplexer.cc
    functionUses: 0
    functionsReached:
    - FDMultiplexer::getMultiplexerMap
    linkageType: ''
    returnType: void
    signature: void PortsRegisterOurselves()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: port_create
      Src: /src/pdns/pdns/portsmplexer.cc:58,1
    - Dst: FDMultiplexerException
      Src: /src/pdns/pdns/portsmplexer.cc:60,1
    - Dst: stringerror
      Src: /src/pdns/pdns/portsmplexer.cc:60,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - maxEventsHint
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 55
    functionDepth: 0
    functionLinenumber: 55
    functionLinenumberEnd: 62
    functionName: PortsFDMultiplexer::PortsFDMultiplexer
    functionSourceFile: /src/pdns/pdns/portsmplexer.cc
    functionUses: 1
    functionsReached:
    - FDMultiplexerException
    - stringerror
    - port_create
    linkageType: ''
    returnType: void
    signature: void PortsFDMultiplexer::PortsFDMultiplexer(unsigned int maxEventsHint)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/portsmplexer.cc:74,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - kind
    argTypes:
    - FDMultiplexer::EventKind
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 64
    functionDepth: 0
    functionLinenumber: 64
    functionLinenumberEnd: 75
    functionName: convertEventKind
    functionSourceFile: /src/pdns/pdns/portsmplexer.cc
    functionUses: 6
    functionsReached:
    - std::runtime_error
    linkageType: ''
    returnType: int
    signature: int convertEventKind(FDMultiplexer::EventKind kind)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: port_associate
      Src: /src/pdns/pdns/portsmplexer.cc:79,1
    - Dst: convertEventKind
      Src: /src/pdns/pdns/portsmplexer.cc:79,1
    - Dst: FDMultiplexerException
      Src: /src/pdns/pdns/portsmplexer.cc:80,1
    - Dst: stringerror
      Src: /src/pdns/pdns/portsmplexer.cc:80,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 2
    argNames:
    - fd
    - kind
    argTypes:
    - int
    - FDMultiplexer::EventKind
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 77
    functionDepth: 0
    functionLinenumber: 77
    functionLinenumberEnd: 82
    functionName: PortsFDMultiplexer::addFD
    functionSourceFile: /src/pdns/pdns/portsmplexer.cc
    functionUses: 0
    functionsReached:
    - FDMultiplexerException
    - stringerror
    - port_associate
    - convertEventKind
    linkageType: ''
    returnType: void
    signature: void PortsFDMultiplexer::addFD(int fd, FDMultiplexer::EventKind kind)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: port_dissociate
      Src: /src/pdns/pdns/portsmplexer.cc:86,1
    - Dst: FDMultiplexerException
      Src: /src/pdns/pdns/portsmplexer.cc:87,1
    - Dst: stringerror
      Src: /src/pdns/pdns/portsmplexer.cc:87,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 4
    argCount: 1
    argNames:
    - fd
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 84
    functionDepth: 0
    functionLinenumber: 84
    functionLinenumberEnd: 89
    functionName: PortsFDMultiplexer::removeFD
    functionSourceFile: /src/pdns/pdns/portsmplexer.cc
    functionUses: 0
    functionsReached:
    - FDMultiplexerException
    - stringerror
    - port_dissociate
    linkageType: ''
    returnType: void
    signature: void PortsFDMultiplexer::removeFD(int fd, FDMultiplexer::EventKind)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: port_getn
      Src: /src/pdns/pdns/portsmplexer.cc:97,1
    - Dst: data
      Src: /src/pdns/pdns/portsmplexer.cc:97,1
    - Dst: min
      Src: /src/pdns/pdns/portsmplexer.cc:97,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/portsmplexer.cc:97,1
    - Dst: size
      Src: /src/pdns/pdns/portsmplexer.cc:97,1
    - Dst: FDMultiplexerException
      Src: /src/pdns/pdns/portsmplexer.cc:107,1
    - Dst: stringerror
      Src: /src/pdns/pdns/portsmplexer.cc:107,1
    - Dst: reserve
      Src: /src/pdns/pdns/portsmplexer.cc:119,1
    - Dst: count
      Src: /src/pdns/pdns/portsmplexer.cc:126,1
    - Dst: port_associate
      Src: /src/pdns/pdns/portsmplexer.cc:127,1
    - Dst: count
      Src: /src/pdns/pdns/portsmplexer.cc:127,1
    - Dst: FDMultiplexerException
      Src: /src/pdns/pdns/portsmplexer.cc:128,1
    - Dst: stringerror
      Src: /src/pdns/pdns/portsmplexer.cc:128,1
    - Dst: count
      Src: /src/pdns/pdns/portsmplexer.cc:133,1
    - Dst: port_associate
      Src: /src/pdns/pdns/portsmplexer.cc:134,1
    - Dst: count
      Src: /src/pdns/pdns/portsmplexer.cc:134,1
    - Dst: FDMultiplexerException
      Src: /src/pdns/pdns/portsmplexer.cc:135,1
    - Dst: stringerror
      Src: /src/pdns/pdns/portsmplexer.cc:135,1
    - Dst: push_back
      Src: /src/pdns/pdns/portsmplexer.cc:144,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 32
    argCount: 2
    argNames:
    - ' fds'
    - timeout
    argTypes:
    - std::vector<int>
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 146
      start: 91
    functionDepth: 0
    functionLinenumber: 91
    functionLinenumberEnd: 146
    functionName: PortsFDMultiplexer::getAvailableFDs
    functionSourceFile: /src/pdns/pdns/portsmplexer.cc
    functionUses: 0
    functionsReached:
    - count
    - port_associate
    - stringerror
    - push_back
    - size
    - port_getn
    - reserve
    - data
    - FDMultiplexerException
    - min
    - static_cast<int>
    linkageType: ''
    returnType: void
    signature: void PortsFDMultiplexer::getAvailableFDs(std::vector<int>& fds, int
      timeout)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: port_getn
      Src: /src/pdns/pdns/portsmplexer.cc:156,1
    - Dst: data
      Src: /src/pdns/pdns/portsmplexer.cc:156,1
    - Dst: min
      Src: /src/pdns/pdns/portsmplexer.cc:156,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/portsmplexer.cc:156,1
    - Dst: size
      Src: /src/pdns/pdns/portsmplexer.cc:156,1
    - Dst: FDMultiplexerException
      Src: /src/pdns/pdns/portsmplexer.cc:166,1
    - Dst: stringerror
      Src: /src/pdns/pdns/portsmplexer.cc:166,1
    - Dst: gettimeofday
      Src: /src/pdns/pdns/portsmplexer.cc:169,1
    - Dst: gettimeofday
      Src: /src/pdns/pdns/portsmplexer.cc:172,1
    - Dst: find
      Src: /src/pdns/pdns/portsmplexer.cc:181,1
    - Dst: end
      Src: /src/pdns/pdns/portsmplexer.cc:182,1
    - Dst: d_callback
      Src: /src/pdns/pdns/portsmplexer.cc:183,1
    - Dst: count
      Src: /src/pdns/pdns/portsmplexer.cc:185,1
    - Dst: port_associate
      Src: /src/pdns/pdns/portsmplexer.cc:185,1
    - Dst: count
      Src: /src/pdns/pdns/portsmplexer.cc:185,1
    - Dst: FDMultiplexerException
      Src: /src/pdns/pdns/portsmplexer.cc:186,1
    - Dst: stringerror
      Src: /src/pdns/pdns/portsmplexer.cc:186,1
    - Dst: find
      Src: /src/pdns/pdns/portsmplexer.cc:191,1
    - Dst: end
      Src: /src/pdns/pdns/portsmplexer.cc:192,1
    - Dst: d_callback
      Src: /src/pdns/pdns/portsmplexer.cc:193,1
    - Dst: count
      Src: /src/pdns/pdns/portsmplexer.cc:195,1
    - Dst: port_associate
      Src: /src/pdns/pdns/portsmplexer.cc:195,1
    - Dst: count
      Src: /src/pdns/pdns/portsmplexer.cc:195,1
    - Dst: FDMultiplexerException
      Src: /src/pdns/pdns/portsmplexer.cc:196,1
    - Dst: stringerror
      Src: /src/pdns/pdns/portsmplexer.cc:196,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 35
    argCount: 2
    argNames:
    - now
    - timeout
    argTypes:
    - struct timeval*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 203
      start: 148
    functionDepth: 0
    functionLinenumber: 148
    functionLinenumberEnd: 203
    functionName: PortsFDMultiplexer::run
    functionSourceFile: /src/pdns/pdns/portsmplexer.cc
    functionUses: 0
    functionsReached:
    - count
    - port_associate
    - stringerror
    - end
    - size
    - d_callback
    - port_getn
    - gettimeofday
    - data
    - FDMultiplexerException
    - min
    - find
    - static_cast<int>
    linkageType: ''
    returnType: int
    signature: int PortsFDMultiplexer::run(struct timeval* now, int timeout)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: boost::any_cast<Socket*>
      Src: /src/pdns/pdns/portsmplexer.cc:209,1
    - Dst: Socket*::recvFrom
      Src: /src/pdns/pdns/portsmplexer.cc:212,1
    - Dst: string::size
      Src: /src/pdns/pdns/portsmplexer.cc:213,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - fd
    - ' parameter'
    argTypes:
    - int
    - boost::any
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 214
      start: 206
    functionDepth: 0
    functionLinenumber: 206
    functionLinenumberEnd: 214
    functionName: acceptData
    functionSourceFile: /src/pdns/pdns/portsmplexer.cc
    functionUses: 0
    functionsReached:
    - string::size
    - boost::any_cast<Socket*>
    - Socket*::recvFrom
    linkageType: ''
    returnType: void
    signature: void acceptData(int fd, boost::any& parameter)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Socket::bind
      Src: /src/pdns/pdns/portsmplexer.cc:222,1
    - Dst: PortsFDMultiplexer::PortsFDMultiplexer
      Src: /src/pdns/pdns/portsmplexer.cc:224,1
    - Dst: PortsFDMultiplexer::addReadFD
      Src: /src/pdns/pdns/portsmplexer.cc:226,1
    - Dst: Socket::getHandle
      Src: /src/pdns/pdns/portsmplexer.cc:226,1
    - Dst: PortsFDMultiplexer::run
      Src: /src/pdns/pdns/portsmplexer.cc:229,1
    - Dst: PortsFDMultiplexer::removeReadFD
      Src: /src/pdns/pdns/portsmplexer.cc:231,1
    - Dst: Socket::getHandle
      Src: /src/pdns/pdns/portsmplexer.cc:231,1
    - Dst: PortsFDMultiplexer::removeReadFD
      Src: /src/pdns/pdns/portsmplexer.cc:232,1
    - Dst: Socket::getHandle
      Src: /src/pdns/pdns/portsmplexer.cc:232,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 233
      start: 217
    functionDepth: 0
    functionLinenumber: 217
    functionLinenumberEnd: 233
    functionName: main
    functionSourceFile: /src/pdns/pdns/portsmplexer.cc
    functionUses: 20
    functionsReached:
    - Socket::getHandle
    - PortsFDMultiplexer::removeReadFD
    - PortsFDMultiplexer::addReadFD
    - PortsFDMultiplexer::run
    - Socket::bind
    - PortsFDMultiplexer::PortsFDMultiplexer
    linkageType: ''
    returnType: int
    signature: int main()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - ' c'
    - ' sr'
    argTypes:
    - Container
    - SenderReceiver
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 47
    functionDepth: 0
    functionLinenumber: 47
    functionLinenumberEnd: 54
    functionName: Inflighter::Inflighter
    functionSourceFile: /src/pdns/pdns/inflighter.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Inflighter(Container& c, SenderReceiver& sr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: begin
      Src: /src/pdns/pdns/inflighter.cc:57,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 55
    functionDepth: 0
    functionLinenumber: 55
    functionLinenumberEnd: 59
    functionName: Inflighter::init
    functionSourceFile: /src/pdns/pdns/inflighter.cc
    functionUses: 0
    functionsReached:
    - begin
    linkageType: ''
    returnType: void
    signature: void init()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 67
    functionDepth: 0
    functionLinenumber: 67
    functionLinenumberEnd: 70
    functionName: Inflighter::getTimeouts
    functionSourceFile: /src/pdns/pdns/inflighter.cc
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t getTimeouts()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 72
    functionDepth: 0
    functionLinenumber: 72
    functionLinenumberEnd: 75
    functionName: Inflighter::getUnexpecteds
    functionSourceFile: /src/pdns/pdns/inflighter.cc
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t getUnexpecteds()
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: init
      Src: /src/pdns/pdns/inflighter.cc:111,1
    - Dst: end
      Src: /src/pdns/pdns/inflighter.cc:117,1
    - Dst: size
      Src: /src/pdns/pdns/inflighter.cc:117,1
    - Dst: send
      Src: /src/pdns/pdns/inflighter.cc:120,1
    - Dst: gettimeofday
      Src: /src/pdns/pdns/inflighter.cc:121,1
    - Dst: count
      Src: /src/pdns/pdns/inflighter.cc:124,1
    - Dst: insert
      Src: /src/pdns/pdns/inflighter.cc:127,1
    - Dst: empty
      Src: /src/pdns/pdns/inflighter.cc:136,1
    - Dst: receive
      Src: /src/pdns/pdns/inflighter.cc:142,1
    - Dst: find
      Src: /src/pdns/pdns/inflighter.cc:143,1
    - Dst: end
      Src: /src/pdns/pdns/inflighter.cc:145,1
    - Dst: gettimeofday
      Src: /src/pdns/pdns/inflighter.cc:148,1
    - Dst: deliverAnswer
      Src: /src/pdns/pdns/inflighter.cc:150,1
    - Dst: erase
      Src: /src/pdns/pdns/inflighter.cc:151,1
    - Dst: gettimeofday
      Src: /src/pdns/pdns/inflighter.cc:163,1
    - Dst: boost::multi_index::get<TimeTag>
      Src: /src/pdns/pdns/inflighter.cc:166,1
    - Dst: begin
      Src: /src/pdns/pdns/inflighter.cc:169,1
    - Dst: end
      Src: /src/pdns/pdns/inflighter.cc:169,1
    - Dst: deliverTimeout
      Src: /src/pdns/pdns/inflighter.cc:171,1
    - Dst: erase
      Src: /src/pdns/pdns/inflighter.cc:172,1
    - Dst: empty
      Src: /src/pdns/pdns/inflighter.cc:181,1
    - Dst: end
      Src: /src/pdns/pdns/inflighter.cc:181,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 44
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 185
      start: 108
    functionDepth: 1
    functionLinenumber: 108
    functionLinenumberEnd: 185
    functionName: Inflighter<Container, SendReceive>::run
    functionSourceFile: /src/pdns/pdns/inflighter.cc
    functionUses: 0
    functionsReached:
    - count
    - init
    - end
    - deliverAnswer
    - size
    - begin
    - receive
    - send
    - gettimeofday
    - insert
    - empty
    - boost::multi_index::get<TimeTag>
    - deliverTimeout
    - erase
    - find
    linkageType: ''
    returnType: bool
    signature: bool Inflighter<Container, SendReceive>::run()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: socket
      Src: /src/pdns/pdns/inflighter.cc:201,1
    - Dst: setsockopt
      Src: /src/pdns/pdns/inflighter.cc:203,1
    - Dst: bind
      Src: /src/pdns/pdns/inflighter.cc:206,1
    - Dst: ComboAddress::getSocklen
      Src: /src/pdns/pdns/inflighter.cc:206,1
    - Dst: ComboAddress::toStringWithPort
      Src: /src/pdns/pdns/inflighter.cc:211,1
    - Dst: recvfrom
      Src: /src/pdns/pdns/inflighter.cc:212,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/inflighter.cc:213,1
    - Dst: string
      Src: /src/pdns/pdns/inflighter.cc:213,1
    - Dst: setNonBlocking
      Src: /src/pdns/pdns/inflighter.cc:214,1
    - Dst: connect
      Src: /src/pdns/pdns/inflighter.cc:215,1
    - Dst: getSocklen
      Src: /src/pdns/pdns/inflighter.cc:215,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 216
      start: 198
    functionDepth: 0
    functionLinenumber: 198
    functionLinenumberEnd: 216
    functionName: SendReceive
    functionSourceFile: /src/pdns/pdns/inflighter.cc
    functionUses: 0
    functionsReached:
    - socket
    - setNonBlocking
    - toStringWithPort
    - bind
    - recvfrom
    - string
    - setsockopt
    - getSocklen
    - ComboAddress::getSocklen
    - connect
    - ComboAddress::toStringWithPort
    linkageType: ''
    returnType: void
    signature: void SendReceive()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Socket::send
      Src: /src/pdns/pdns/inflighter.cc:220,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 221
      start: 218
    functionDepth: 0
    functionLinenumber: 218
    functionLinenumberEnd: 221
    functionName: ~SendReceive()
    functionSourceFile: /src/pdns/pdns/inflighter.cc
    functionUses: 0
    functionsReached:
    - Socket::send
    linkageType: ''
    returnType: void
    signature: void ~SendReceive()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: boost::format
      Src: /src/pdns/pdns/inflighter.cc:226,1
    - Dst: str
      Src: /src/pdns/pdns/inflighter.cc:226,1
    - Dst: Socket::send
      Src: /src/pdns/pdns/inflighter.cc:227,1
    - Dst: string::c_str
      Src: /src/pdns/pdns/inflighter.cc:227,1
    - Dst: string::length
      Src: /src/pdns/pdns/inflighter.cc:227,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - ' i'
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 229
      start: 223
    functionDepth: 0
    functionLinenumber: 223
    functionLinenumberEnd: 229
    functionName: send
    functionSourceFile: /src/pdns/pdns/inflighter.cc
    functionUses: 19
    functionsReached:
    - string::c_str
    - Socket::send
    - str
    - boost::format
    - string::length
    linkageType: ''
    returnType: Identifier
    signature: Identifier send(int& i)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: waitForData
      Src: /src/pdns/pdns/inflighter.cc:233,1
    - Dst: recv
      Src: /src/pdns/pdns/inflighter.cc:236,1
    - Dst: sscanf
      Src: /src/pdns/pdns/inflighter.cc:238,1
    - Dst: string::c_str
      Src: /src/pdns/pdns/inflighter.cc:238,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/inflighter.cc:239,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - ' id'
    - ' i'
    argTypes:
    - Identifier
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 244
      start: 231
    functionDepth: 0
    functionLinenumber: 231
    functionLinenumberEnd: 244
    functionName: receive
    functionSourceFile: /src/pdns/pdns/inflighter.cc
    functionUses: 8
    functionsReached:
    - string::c_str
    - recv
    - sscanf
    - runtime_error
    - waitForData
    linkageType: ''
    returnType: bool
    signature: bool receive(Identifier& id, int& i)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' i'
    - j
    argTypes:
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 249
      start: 246
    functionDepth: 0
    functionLinenumber: 246
    functionLinenumberEnd: 249
    functionName: deliverAnswer
    functionSourceFile: /src/pdns/pdns/inflighter.cc
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void deliverAnswer(int& i, int j)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vector::push_back
      Src: /src/pdns/pdns/inflighter.cc:260,1
    - Dst: Inflighter::run
      Src: /src/pdns/pdns/inflighter.cc:265,1
    - Dst: what
      Src: /src/pdns/pdns/inflighter.cc:269,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 273
      start: 253
    functionDepth: 0
    functionLinenumber: 253
    functionLinenumberEnd: 273
    functionName: main
    functionSourceFile: /src/pdns/pdns/inflighter.cc
    functionUses: 20
    functionsReached:
    - what
    - Inflighter::run
    - vector::push_back
    linkageType: ''
    returnType: int
    signature: int main()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: clear
      Src: /src/pdns/pdns/dnswriter.cc:45,1
    - Dst: memset
      Src: /src/pdns/pdns/dnswriter.cc:48,1
    - Dst: htons
      Src: /src/pdns/pdns/dnswriter.cc:50,1
    - Dst: reserve
      Src: /src/pdns/pdns/dnswriter.cc:54,1
    - Dst: wirelength
      Src: /src/pdns/pdns/dnswriter.cc:54,1
    - Dst: resize
      Src: /src/pdns/pdns/dnswriter.cc:55,1
    - Dst: begin
      Src: /src/pdns/pdns/dnswriter.cc:56,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnswriter.cc:58,1
    - Dst: reserve
      Src: /src/pdns/pdns/dnswriter.cc:59,1
    - Dst: GenericDNSPacketWriter<Container>::xfrName
      Src: /src/pdns/pdns/dnswriter.cc:60,1
    - Dst: GenericDNSPacketWriter<Container>::xfr16BitInt
      Src: /src/pdns/pdns/dnswriter.cc:61,1
    - Dst: GenericDNSPacketWriter<Container>::xfr16BitInt
      Src: /src/pdns/pdns/dnswriter.cc:62,1
    - Dst: GenericDNSPacketWriter<Container>::size
      Src: /src/pdns/pdns/dnswriter.cc:64,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnswriter.cc:64,1
    - Dst: std::range_error
      Src: /src/pdns/pdns/dnswriter.cc:65,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnswriter.cc:65,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnswriter.cc:65,1
    - Dst: GenericDNSPacketWriter<Container>::size
      Src: /src/pdns/pdns/dnswriter.cc:67,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 5
    argNames:
    - ' content'
    - ' qname'
    - qtype
    - qclass
    - opcode
    argTypes:
    - Container
    - DNSName
    - uint16_t
    - uint16_t
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 42
    functionDepth: 1
    functionLinenumber: 42
    functionLinenumberEnd: 68
    functionName: GenericDNSPacketWriter<Container>::GenericDNSPacketWriter
    functionSourceFile: /src/pdns/pdns/dnswriter.cc
    functionUses: 0
    functionsReached:
    - memcpy
    - pdns::max
    - resize
    - wirelength
    - std::to_string
    - GenericDNSPacketWriter<Container>::xfrName
    - GenericDNSPacketWriter<Container>::xfr16BitInt
    - memset
    - reserve
    - std::range_error
    - GenericDNSPacketWriter<Container>::size
    - begin
    - clear
    - htons
    linkageType: ''
    returnType: void
    signature: void GenericDNSPacketWriter<Container>::GenericDNSPacketWriter(Container&
      content, const DNSName& qname, uint16_t qtype, uint16_t qclass, uint8_t opcode)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: reinterpret_cast<dnsheader*>
      Src: /src/pdns/pdns/dnswriter.cc:72,1
    - Dst: begin
      Src: /src/pdns/pdns/dnswriter.cc: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: GenericDNSPacketWriter<Container>::getHeader
    functionSourceFile: /src/pdns/pdns/dnswriter.cc
    functionUses: 0
    functionsReached:
    - reinterpret_cast<dnsheader*>
    - begin
    linkageType: ''
    returnType: dnsheader
    signature: dnsheader * GenericDNSPacketWriter<Container>::getHeader()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: GenericDNSPacketWriter<Container>::commit
      Src: /src/pdns/pdns/dnswriter.cc:79,1
    - Dst: GenericDNSPacketWriter<Container>::size
      Src: /src/pdns/pdns/dnswriter.cc:80,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnswriter.cc:80,1
    - Dst: std::range_error
      Src: /src/pdns/pdns/dnswriter.cc:81,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnswriter.cc:81,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnswriter.cc:81,1
    - Dst: GenericDNSPacketWriter<Container>::size
      Src: /src/pdns/pdns/dnswriter.cc:83,1
    - Dst: isRoot
      Src: /src/pdns/pdns/dnswriter.cc:85,1
    - Dst: insert
      Src: /src/pdns/pdns/dnswriter.cc:87,1
    - Dst: end
      Src: /src/pdns/pdns/dnswriter.cc:87,1
    - Dst: reinterpret_cast<const char *>
      Src: /src/pdns/pdns/dnswriter.cc:87,1
    - Dst: std::array::begin
      Src: /src/pdns/pdns/dnswriter.cc:87,1
    - Dst: reinterpret_cast<const char *>
      Src: /src/pdns/pdns/dnswriter.cc:87,1
    - Dst: std::array::end
      Src: /src/pdns/pdns/dnswriter.cc:87,1
    - Dst: GenericDNSPacketWriter<Container>::xfrName
      Src: /src/pdns/pdns/dnswriter.cc:90,1
    - Dst: GenericDNSPacketWriter<Container>::xfr16BitInt
      Src: /src/pdns/pdns/dnswriter.cc:92,1
    - Dst: GenericDNSPacketWriter<Container>::xfr16BitInt
      Src: /src/pdns/pdns/dnswriter.cc:93,1
    - Dst: GenericDNSPacketWriter<Container>::xfr32BitInt
      Src: /src/pdns/pdns/dnswriter.cc:94,1
    - Dst: GenericDNSPacketWriter<Container>::xfr16BitInt
      Src: /src/pdns/pdns/dnswriter.cc:95,1
    - Dst: GenericDNSPacketWriter<Container>::size
      Src: /src/pdns/pdns/dnswriter.cc:98,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 6
    argNames:
    - ' name'
    - qtype
    - ttl
    - qclass
    - place
    - compress
    argTypes:
    - DNSName
    - uint16_t
    - uint32_t
    - uint16_t
    - DNSResourceRecord::Place
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 76
    functionDepth: 1
    functionLinenumber: 76
    functionLinenumberEnd: 99
    functionName: GenericDNSPacketWriter<Container>::startRecord
    functionSourceFile: /src/pdns/pdns/dnswriter.cc
    functionUses: 0
    functionsReached:
    - GenericDNSPacketWriter<Container>::commit
    - pdns::max
    - std::to_string
    - end
    - std::array::end
    - GenericDNSPacketWriter<Container>::xfrName
    - GenericDNSPacketWriter<Container>::xfr16BitInt
    - reinterpret_cast<const char *>
    - isRoot
    - GenericDNSPacketWriter<Container>::xfr32BitInt
    - std::range_error
    - GenericDNSPacketWriter<Container>::size
    - insert
    - std::array::begin
    linkageType: ''
    returnType: void
    signature: void GenericDNSPacketWriter<Container>::startRecord(const DNSName&
      name, uint16_t qtype, uint32_t ttl, uint16_t qclass, DNSResourceRecord::Place
      place, bool compress)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: htons
      Src: /src/pdns/pdns/dnswriter.cc:108,1
    - Dst: GenericDNSPacketWriter<Container>::getHeader
      Src: /src/pdns/pdns/dnswriter.cc:119,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnswriter.cc:123,1
    - Dst: ntohl
      Src: /src/pdns/pdns/dnswriter.cc:125,1
    - Dst: GenericDNSPacketWriter<Container>::startRecord
      Src: /src/pdns/pdns/dnswriter.cc:127,1
    - Dst: GenericDNSPacketWriter<Container>::xfr16BitInt
      Src: /src/pdns/pdns/dnswriter.cc:129,1
    - Dst: GenericDNSPacketWriter<Container>::xfr16BitInt
      Src: /src/pdns/pdns/dnswriter.cc:130,1
    - Dst: second::length
      Src: /src/pdns/pdns/dnswriter.cc:130,1
    - Dst: GenericDNSPacketWriter<Container>::xfrBlob
      Src: /src/pdns/pdns/dnswriter.cc:131,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 5
    argNames:
    - udpsize
    - extRCode
    - ednsFlags
    - ' options'
    - version
    argTypes:
    - uint16_t
    - uint16_t
    - uint16_t
    - optvect_t
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 133
      start: 101
    functionDepth: 0
    functionLinenumber: 101
    functionLinenumberEnd: 133
    functionName: GenericDNSPacketWriter<Container>::addOpt
    functionSourceFile: /src/pdns/pdns/dnswriter.cc
    functionUses: 0
    functionsReached:
    - memcpy
    - ntohl
    - GenericDNSPacketWriter<Container>::xfrBlob
    - second::length
    - GenericDNSPacketWriter<Container>::xfr16BitInt
    - GenericDNSPacketWriter<Container>::getHeader
    - GenericDNSPacketWriter<Container>::startRecord
    - htons
    linkageType: ''
    returnType: void
    signature: void GenericDNSPacketWriter<Container>::addOpt(const uint16_t udpsize,
      const uint16_t extRCode, const uint16_t ednsFlags, const optvect_t& options,
      const uint8_t version)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: runtime_error
      Src: /src/pdns/pdns/dnswriter.cc:138,1
    - Dst: htons
      Src: /src/pdns/pdns/dnswriter.cc:141,1
    - Dst: htonl
      Src: /src/pdns/pdns/dnswriter.cc:142,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnswriter.cc:143,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnswriter.cc:144,1
    - Dst: insert
      Src: /src/pdns/pdns/dnswriter.cc:146,1
    - Dst: end
      Src: /src/pdns/pdns/dnswriter.cc:146,1
    - Dst: std::array::begin
      Src: /src/pdns/pdns/dnswriter.cc:146,1
    - Dst: std::array::end
      Src: /src/pdns/pdns/dnswriter.cc:146,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - val
    argTypes:
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 135
    functionDepth: 1
    functionLinenumber: 135
    functionLinenumberEnd: 147
    functionName: GenericDNSPacketWriter<Container>::xfr48BitInt
    functionSourceFile: /src/pdns/pdns/dnswriter.cc
    functionUses: 0
    functionsReached:
    - memcpy
    - htonl
    - runtime_error
    - end
    - std::array::end
    - insert
    - std::array::begin
    - htons
    linkageType: ''
    returnType: void
    signature: void GenericDNSPacketWriter<Container>::xfr48BitInt(uint64_t val)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: insert
      Src: /src/pdns/pdns/dnswriter.cc:151,1
    - Dst: end
      Src: /src/pdns/pdns/dnswriter.cc:151,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' val'
    argTypes:
    - NodeOrLocatorID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 152
      start: 149
    functionDepth: 1
    functionLinenumber: 149
    functionLinenumberEnd: 152
    functionName: GenericDNSPacketWriter<Container>::xfrNodeOrLocatorID
    functionSourceFile: /src/pdns/pdns/dnswriter.cc
    functionUses: 0
    functionsReached:
    - end
    - insert
    linkageType: ''
    returnType: void
    signature: void GenericDNSPacketWriter<Container>::xfrNodeOrLocatorID(const NodeOrLocatorID&
      val)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnswriter.cc:156,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/dnswriter.cc:157,1
    - Dst: htonl
      Src: /src/pdns/pdns/dnswriter.cc:159,1
    - Dst: static_cast<uint32_t>
      Src: /src/pdns/pdns/dnswriter.cc:159,1
    - Dst: reinterpret_cast<uint8_t*>
      Src: /src/pdns/pdns/dnswriter.cc:160,1
    - Dst: insert
      Src: /src/pdns/pdns/dnswriter.cc:161,1
    - Dst: end
      Src: /src/pdns/pdns/dnswriter.cc:161,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - val
    argTypes:
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 162
      start: 154
    functionDepth: 1
    functionLinenumber: 154
    functionLinenumberEnd: 162
    functionName: GenericDNSPacketWriter<Container>::xfr32BitInt
    functionSourceFile: /src/pdns/pdns/dnswriter.cc
    functionUses: 1
    functionsReached:
    - pdns::max
    - htonl
    - runtime_error
    - end
    - reinterpret_cast<uint8_t*>
    - static_cast<uint32_t>
    - insert
    linkageType: ''
    returnType: void
    signature: void GenericDNSPacketWriter<Container>::xfr32BitInt(uint64_t val)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnswriter.cc:166,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/dnswriter.cc:167,1
    - Dst: htons
      Src: /src/pdns/pdns/dnswriter.cc:169,1
    - Dst: static_cast<uint16_t>
      Src: /src/pdns/pdns/dnswriter.cc:169,1
    - Dst: reinterpret_cast<uint8_t*>
      Src: /src/pdns/pdns/dnswriter.cc:170,1
    - Dst: insert
      Src: /src/pdns/pdns/dnswriter.cc:171,1
    - Dst: end
      Src: /src/pdns/pdns/dnswriter.cc:171,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - val
    argTypes:
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 172
      start: 164
    functionDepth: 1
    functionLinenumber: 164
    functionLinenumberEnd: 172
    functionName: GenericDNSPacketWriter<Container>::xfr16BitInt
    functionSourceFile: /src/pdns/pdns/dnswriter.cc
    functionUses: 3
    functionsReached:
    - pdns::max
    - runtime_error
    - end
    - reinterpret_cast<uint8_t*>
    - static_cast<uint16_t>
    - insert
    - htons
    linkageType: ''
    returnType: void
    signature: void GenericDNSPacketWriter<Container>::xfr16BitInt(uint64_t val)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnswriter.cc:176,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/dnswriter.cc:177,1
    - Dst: push_back
      Src: /src/pdns/pdns/dnswriter.cc:179,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnswriter.cc:179,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - val
    argTypes:
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 180
      start: 174
    functionDepth: 0
    functionLinenumber: 174
    functionLinenumberEnd: 180
    functionName: GenericDNSPacketWriter<Container>::xfr8BitInt
    functionSourceFile: /src/pdns/pdns/dnswriter.cc
    functionUses: 0
    functionsReached:
    - push_back
    - pdns::max
    - runtime_error
    - static_cast<uint8_t>
    linkageType: ''
    returnType: void
    signature: void GenericDNSPacketWriter<Container>::xfr8BitInt(uint64_t val)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/dnswriter.cc:198,1
    - Dst: push_back
      Src: /src/pdns/pdns/dnswriter.cc:199,1
    - Dst: segmentDNSText
      Src: /src/pdns/pdns/dnswriter.cc:202,1
    - Dst: push_back
      Src: /src/pdns/pdns/dnswriter.cc:205,1
    - Dst: length
      Src: /src/pdns/pdns/dnswriter.cc:205,1
    - Dst: insert
      Src: /src/pdns/pdns/dnswriter.cc:206,1
    - Dst: end
      Src: /src/pdns/pdns/dnswriter.cc:206,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnswriter.cc:206,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnswriter.cc:206,1
    - Dst: length
      Src: /src/pdns/pdns/dnswriter.cc:206,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - ' text'
    - lenField
    argTypes:
    - string
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 208
      start: 196
    functionDepth: 1
    functionLinenumber: 196
    functionLinenumberEnd: 208
    functionName: GenericDNSPacketWriter<Container>::xfrText
    functionSourceFile: /src/pdns/pdns/dnswriter.cc
    functionUses: 0
    functionsReached:
    - length
    - c_str
    - push_back
    - end
    - segmentDNSText
    - insert
    - empty
    linkageType: ''
    returnType: void
    signature: void GenericDNSPacketWriter<Container>::xfrText(const string& text,
      bool, bool lenField)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/dnswriter.cc:212,1
    - Dst: push_back
      Src: /src/pdns/pdns/dnswriter.cc:213,1
    - Dst: length
      Src: /src/pdns/pdns/dnswriter.cc:217,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/dnswriter.cc:218,1
    - Dst: push_back
      Src: /src/pdns/pdns/dnswriter.cc:220,1
    - Dst: length
      Src: /src/pdns/pdns/dnswriter.cc:220,1
    - Dst: insert
      Src: /src/pdns/pdns/dnswriter.cc:222,1
    - Dst: end
      Src: /src/pdns/pdns/dnswriter.cc:222,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnswriter.cc:222,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnswriter.cc:222,1
    - Dst: length
      Src: /src/pdns/pdns/dnswriter.cc:222,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 2
    argNames:
    - ' text'
    - lenField
    argTypes:
    - string
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 223
      start: 210
    functionDepth: 1
    functionLinenumber: 210
    functionLinenumberEnd: 223
    functionName: GenericDNSPacketWriter<Container>::xfrUnquotedText
    functionSourceFile: /src/pdns/pdns/dnswriter.cc
    functionUses: 0
    functionsReached:
    - length
    - c_str
    - push_back
    - runtime_error
    - end
    - insert
    - empty
    linkageType: ''
    returnType: void
    signature: void GenericDNSPacketWriter<Container>::xfrUnquotedText(const string&
      text, bool lenField)
  - BBCount: 22
    BranchProfiles: []
    Callsites:
    - Dst: getStorage
      Src: /src/pdns/pdns/dnswriter.cc:231,1
    - Dst: cbegin
      Src: /src/pdns/pdns/dnswriter.cc:246,1
    - Dst: cend
      Src: /src/pdns/pdns/dnswriter.cc:246,1
    - Dst: boost::container::static_vector<uint16_t, 34>::push_back
      Src: /src/pdns/pdns/dnswriter.cc:250,1
    - Dst: cbegin
      Src: /src/pdns/pdns/dnswriter.cc:250,1
    - Dst: makeHexDump
      Src: /src/pdns/pdns/dnswriter.cc:267,1
    - Dst: string
      Src: /src/pdns/pdns/dnswriter.cc:267,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnswriter.cc:267,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnswriter.cc:267,1
    - Dst: GenericDNSPacketWriter<Container>::size
      Src: /src/pdns/pdns/dnswriter.cc:267,1
    - Dst: GenericDNSPacketWriter<Container>::size
      Src: /src/pdns/pdns/dnswriter.cc:271,1
    - Dst: GenericDNSPacketWriter<Container>::size
      Src: /src/pdns/pdns/dnswriter.cc:285,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnswriter.cc:286,1
    - Dst: data
      Src: /src/pdns/pdns/dnswriter.cc:286,1
    - Dst: GenericDNSPacketWriter<Container>::size
      Src: /src/pdns/pdns/dnswriter.cc:286,1
    - Dst: GenericDNSPacketWriter<Container>::size
      Src: /src/pdns/pdns/dnswriter.cc:287,1
    - Dst: GenericDNSPacketWriter<Container>::size
      Src: /src/pdns/pdns/dnswriter.cc:287,1
    - Dst: boost::container::static_vector<uint16_t, 34>::clear
      Src: /src/pdns/pdns/dnswriter.cc:292,1
    - Dst: cbegin
      Src: /src/pdns/pdns/dnswriter.cc:294,1
    - Dst: cend
      Src: /src/pdns/pdns/dnswriter.cc:294,1
    - Dst: cbegin
      Src: /src/pdns/pdns/dnswriter.cc:296,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnswriter.cc:298,1
    - Dst: begin
      Src: /src/pdns/pdns/dnswriter.cc:309,1
    - Dst: boost::container::static_vector<uint16_t, 34>::push_back
      Src: /src/pdns/pdns/dnswriter.cc:331,1
    - Dst: boost::container::static_vector<uint16_t, 34>::crbegin
      Src: /src/pdns/pdns/dnswriter.cc:351,1
    - Dst: boost::container::static_vector<uint16_t, 34>::crbegin
      Src: /src/pdns/pdns/dnswriter.cc:352,1
    - Dst: boost::container::static_vector<uint16_t, 34>::crend
      Src: /src/pdns/pdns/dnswriter.cc:354,1
    - Dst: boost::container::static_vector<uint16_t, 34>::crend
      Src: /src/pdns/pdns/dnswriter.cc:354,1
    - Dst: strncasecmp
      Src: /src/pdns/pdns/dnswriter.cc:367,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnswriter.cc:367,1
    - Dst: string
      Src: /src/pdns/pdns/dnswriter.cc:369,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnswriter.cc:369,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnswriter.cc:369,1
    - Dst: string
      Src: /src/pdns/pdns/dnswriter.cc:369,1
    - Dst: length
      Src: /src/pdns/pdns/dnswriter.cc:375,1
    - Dst: boost::container::static_vector<uint16_t, 34>::crbegin
      Src: /src/pdns/pdns/dnswriter.cc:384,1
    CyclomaticComplexity: 42
    EdgeCount: 42
    ICount: 100
    argCount: 2
    argNames:
    - ' name'
    - matchLen
    argTypes:
    - DNSName
    - uint16_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 390
      start: 228
    functionDepth: 1
    functionLinenumber: 228
    functionLinenumberEnd: 390
    functionName: GenericDNSPacketWriter<Container>::lookupName
    functionSourceFile: /src/pdns/pdns/dnswriter.cc
    functionUses: 0
    functionsReached:
    - boost::container::static_vector<uint16_t, 34>::clear
    - length
    - boost::container::static_vector<uint16_t, 34>::crbegin
    - std::to_string
    - getStorage
    - boost::container::static_vector<uint16_t, 34>::crend
    - string
    - strncasecmp
    - boost::container::static_vector<uint16_t, 34>::push_back
    - begin
    - cbegin
    - reinterpret_cast<const char*>
    - GenericDNSPacketWriter<Container>::size
    - cend
    - data
    - c_str
    - makeHexDump
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t GenericDNSPacketWriter<Container>::lookupName(const DNSName&
      name, uint16_t* matchLen)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/dnswriter.cc:399,1
    - Dst: isRoot
      Src: /src/pdns/pdns/dnswriter.cc:399,1
    - Dst: push_back
      Src: /src/pdns/pdns/dnswriter.cc:400,1
    - Dst: GenericDNSPacketWriter<Container>::lookupName
      Src: /src/pdns/pdns/dnswriter.cc:406,1
    - Dst: getStorage
      Src: /src/pdns/pdns/dnswriter.cc:407,1
    - Dst: GenericDNSPacketWriter<Container>::size
      Src: /src/pdns/pdns/dnswriter.cc:409,1
    - Dst: GenericDNSPacketWriter<Container>::size
      Src: /src/pdns/pdns/dnswriter.cc:412,1
    - Dst: GenericDNSPacketWriter<Container>::size
      Src: /src/pdns/pdns/dnswriter.cc:413,1
    - Dst: push_back
      Src: /src/pdns/pdns/dnswriter.cc:416,1
    - Dst: makeHexDump
      Src: /src/pdns/pdns/dnswriter.cc:420,1
    - Dst: string
      Src: /src/pdns/pdns/dnswriter.cc:420,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnswriter.cc:420,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnswriter.cc:420,1
    - Dst: GenericDNSPacketWriter<Container>::size
      Src: /src/pdns/pdns/dnswriter.cc:420,1
    - Dst: insert
      Src: /src/pdns/pdns/dnswriter.cc:421,1
    - Dst: end
      Src: /src/pdns/pdns/dnswriter.cc:421,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnswriter.cc:421,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnswriter.cc:421,1
    - Dst: GenericDNSPacketWriter<Container>::size
      Src: /src/pdns/pdns/dnswriter.cc:421,1
    - Dst: push_back
      Src: /src/pdns/pdns/dnswriter.cc:425,1
    - Dst: push_back
      Src: /src/pdns/pdns/dnswriter.cc:426,1
    - Dst: GenericDNSPacketWriter<Container>::size
      Src: /src/pdns/pdns/dnswriter.cc:429,1
    - Dst: push_back
      Src: /src/pdns/pdns/dnswriter.cc:435,1
    - Dst: make_unique<DNSName>
      Src: /src/pdns/pdns/dnswriter.cc:440,1
    - Dst: makeLowerCase
      Src: /src/pdns/pdns/dnswriter.cc:440,1
    - Dst: getStorage
      Src: /src/pdns/pdns/dnswriter.cc:442,1
    - Dst: makeHexDump
      Src: /src/pdns/pdns/dnswriter.cc:444,1
    - Dst: string
      Src: /src/pdns/pdns/dnswriter.cc:444,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnswriter.cc:444,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnswriter.cc:444,1
    - Dst: length
      Src: /src/pdns/pdns/dnswriter.cc:444,1
    - Dst: insert
      Src: /src/pdns/pdns/dnswriter.cc:445,1
    - Dst: end
      Src: /src/pdns/pdns/dnswriter.cc:445,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnswriter.cc:445,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnswriter.cc:445,1
    - Dst: GenericDNSPacketWriter<Container>::size
      Src: /src/pdns/pdns/dnswriter.cc:445,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 37
    argCount: 2
    argNames:
    - ' name'
    - compress
    argTypes:
    - DNSName
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 447
      start: 392
    functionDepth: 1
    functionLinenumber: 392
    functionLinenumberEnd: 447
    functionName: GenericDNSPacketWriter<Container>::xfrName
    functionSourceFile: /src/pdns/pdns/dnswriter.cc
    functionUses: 2
    functionsReached:
    - makeLowerCase
    - make_unique<DNSName>
    - length
    - c_str
    - getStorage
    - push_back
    - string
    - end
    - isRoot
    - GenericDNSPacketWriter<Container>::size
    - insert
    - empty
    - GenericDNSPacketWriter<Container>::lookupName
    - makeHexDump
    linkageType: ''
    returnType: void
    signature: void GenericDNSPacketWriter<Container>::xfrName(const DNSName& name,
      bool compress)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: reinterpret_cast<const uint8_t*>
      Src: /src/pdns/pdns/dnswriter.cc:451,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnswriter.cc:451,1
    - Dst: insert
      Src: /src/pdns/pdns/dnswriter.cc:452,1
    - Dst: end
      Src: /src/pdns/pdns/dnswriter.cc:452,1
    - Dst: GenericDNSPacketWriter<Container>::size
      Src: /src/pdns/pdns/dnswriter.cc:452,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' blob'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 453
      start: 449
    functionDepth: 1
    functionLinenumber: 449
    functionLinenumberEnd: 453
    functionName: GenericDNSPacketWriter<Container>::xfrBlob
    functionSourceFile: /src/pdns/pdns/dnswriter.cc
    functionUses: 1
    functionsReached:
    - reinterpret_cast<const uint8_t*>
    - end
    - GenericDNSPacketWriter<Container>::size
    - insert
    - c_str
    linkageType: ''
    returnType: void
    signature: void GenericDNSPacketWriter<Container>::xfrBlob(const string& blob,
      int  )
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: insert
      Src: /src/pdns/pdns/dnswriter.cc:457,1
    - Dst: end
      Src: /src/pdns/pdns/dnswriter.cc:457,1
    - Dst: begin
      Src: /src/pdns/pdns/dnswriter.cc:457,1
    - Dst: end
      Src: /src/pdns/pdns/dnswriter.cc:457,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' blob'
    argTypes:
    - std::vector<uint8_t>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 458
      start: 455
    functionDepth: 1
    functionLinenumber: 455
    functionLinenumberEnd: 458
    functionName: GenericDNSPacketWriter<Container>::xfrBlob
    functionSourceFile: /src/pdns/pdns/dnswriter.cc
    functionUses: 1
    functionsReached:
    - end
    - insert
    - begin
    linkageType: ''
    returnType: void
    signature: void GenericDNSPacketWriter<Container>::xfrBlob(const std::vector<uint8_t>&
      blob)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: GenericDNSPacketWriter<Container>::xfrBlob
      Src: /src/pdns/pdns/dnswriter.cc:462,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' blob'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 463
      start: 460
    functionDepth: 0
    functionLinenumber: 460
    functionLinenumberEnd: 463
    functionName: GenericDNSPacketWriter<Container>::xfrBlobNoSpaces
    functionSourceFile: /src/pdns/pdns/dnswriter.cc
    functionUses: 0
    functionsReached:
    - GenericDNSPacketWriter<Container>::xfrBlob
    linkageType: ''
    returnType: void
    signature: void GenericDNSPacketWriter<Container>::xfrBlobNoSpaces(const string&
      blob, int  )
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: GenericDNSPacketWriter<Container>::xfrBlob
      Src: /src/pdns/pdns/dnswriter.cc:467,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' blob'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 468
      start: 465
    functionDepth: 0
    functionLinenumber: 465
    functionLinenumberEnd: 468
    functionName: GenericDNSPacketWriter<Container>::xfrHexBlob
    functionSourceFile: /src/pdns/pdns/dnswriter.cc
    functionUses: 0
    functionsReached:
    - GenericDNSPacketWriter<Container>::xfrBlob
    linkageType: ''
    returnType: void
    signature: void GenericDNSPacketWriter<Container>::xfrHexBlob(const string& blob,
      bool /* keepReading */)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: GenericDNSPacketWriter<Container>::xfr16BitInt
      Src: /src/pdns/pdns/dnswriter.cc:474,1
    - Dst: getKey
      Src: /src/pdns/pdns/dnswriter.cc:474,1
    - Dst: getKey
      Src: /src/pdns/pdns/dnswriter.cc:476,1
    - Dst: GenericDNSPacketWriter<Container>::xfr16BitInt
      Src: /src/pdns/pdns/dnswriter.cc:479,1
    - Dst: getMandatory
      Src: /src/pdns/pdns/dnswriter.cc:479,1
    - Dst: getMandatory
      Src: /src/pdns/pdns/dnswriter.cc:480,1
    - Dst: GenericDNSPacketWriter<Container>::xfr16BitInt
      Src: /src/pdns/pdns/dnswriter.cc:481,1
    - Dst: getALPN
      Src: /src/pdns/pdns/dnswriter.cc:486,1
    - Dst: getALPN
      Src: /src/pdns/pdns/dnswriter.cc:487,1
    - Dst: length
      Src: /src/pdns/pdns/dnswriter.cc:488,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnswriter.cc:490,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/dnswriter.cc:491,1
    - Dst: GenericDNSPacketWriter<Container>::xfr16BitInt
      Src: /src/pdns/pdns/dnswriter.cc:493,1
    - Dst: static_cast<uint16_t>
      Src: /src/pdns/pdns/dnswriter.cc:493,1
    - Dst: getALPN
      Src: /src/pdns/pdns/dnswriter.cc:494,1
    - Dst: GenericDNSPacketWriter<Container>::xfrUnquotedText
      Src: /src/pdns/pdns/dnswriter.cc:495,1
    - Dst: GenericDNSPacketWriter<Container>::xfr16BitInt
      Src: /src/pdns/pdns/dnswriter.cc:500,1
    - Dst: GenericDNSPacketWriter<Container>::xfr16BitInt
      Src: /src/pdns/pdns/dnswriter.cc:503,1
    - Dst: GenericDNSPacketWriter<Container>::xfr16BitInt
      Src: /src/pdns/pdns/dnswriter.cc:504,1
    - Dst: getPort
      Src: /src/pdns/pdns/dnswriter.cc:504,1
    - Dst: GenericDNSPacketWriter<Container>::xfr16BitInt
      Src: /src/pdns/pdns/dnswriter.cc:507,1
    - Dst: getIPHints
      Src: /src/pdns/pdns/dnswriter.cc:507,1
    - Dst: getIPHints
      Src: /src/pdns/pdns/dnswriter.cc:508,1
    - Dst: xfrCAWithoutPort
      Src: /src/pdns/pdns/dnswriter.cc:509,1
    - Dst: getKey
      Src: /src/pdns/pdns/dnswriter.cc:509,1
    - Dst: GenericDNSPacketWriter<Container>::xfr16BitInt
      Src: /src/pdns/pdns/dnswriter.cc:513,1
    - Dst: getIPHints
      Src: /src/pdns/pdns/dnswriter.cc:513,1
    - Dst: getIPHints
      Src: /src/pdns/pdns/dnswriter.cc:514,1
    - Dst: xfrCAWithoutPort
      Src: /src/pdns/pdns/dnswriter.cc:515,1
    - Dst: getKey
      Src: /src/pdns/pdns/dnswriter.cc:515,1
    - Dst: GenericDNSPacketWriter<Container>::xfr16BitInt
      Src: /src/pdns/pdns/dnswriter.cc:519,1
    - Dst: getECH
      Src: /src/pdns/pdns/dnswriter.cc:519,1
    - Dst: GenericDNSPacketWriter<Container>::xfrBlobNoSpaces
      Src: /src/pdns/pdns/dnswriter.cc:520,1
    - Dst: getECH
      Src: /src/pdns/pdns/dnswriter.cc:520,1
    - Dst: GenericDNSPacketWriter<Container>::xfr16BitInt
      Src: /src/pdns/pdns/dnswriter.cc:523,1
    - Dst: GenericDNSPacketWriter<Container>::xfr16BitInt
      Src: /src/pdns/pdns/dnswriter.cc:526,1
    - Dst: getTLSSupportedGroups
      Src: /src/pdns/pdns/dnswriter.cc:526,1
    - Dst: getTLSSupportedGroups
      Src: /src/pdns/pdns/dnswriter.cc:527,1
    - Dst: GenericDNSPacketWriter<Container>::xfr16BitInt
      Src: /src/pdns/pdns/dnswriter.cc:528,1
    - Dst: GenericDNSPacketWriter<Container>::xfr16BitInt
      Src: /src/pdns/pdns/dnswriter.cc:532,1
    - Dst: getValue
      Src: /src/pdns/pdns/dnswriter.cc:532,1
    - Dst: GenericDNSPacketWriter<Container>::xfrBlob
      Src: /src/pdns/pdns/dnswriter.cc:533,1
    - Dst: getValue
      Src: /src/pdns/pdns/dnswriter.cc:533,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 54
    argCount: 1
    argNames:
    - kvs
    argTypes:
    - std::set<SvcParam>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 537
      start: 470
    functionDepth: 0
    functionLinenumber: 470
    functionLinenumberEnd: 537
    functionName: GenericDNSPacketWriter<Container>::xfrSvcParamKeyVals
    functionSourceFile: /src/pdns/pdns/dnswriter.cc
    functionUses: 0
    functionsReached:
    - getTLSSupportedGroups
    - length
    - pdns::max
    - xfrCAWithoutPort
    - GenericDNSPacketWriter<Container>::xfrBlob
    - getALPN
    - runtime_error
    - getIPHints
    - GenericDNSPacketWriter<Container>::xfr16BitInt
    - getECH
    - getKey
    - static_cast<uint16_t>
    - getValue
    - getMandatory
    - GenericDNSPacketWriter<Container>::xfrBlobNoSpaces
    - getPort
    - GenericDNSPacketWriter<Container>::xfrUnquotedText
    linkageType: ''
    returnType: void
    signature: void GenericDNSPacketWriter<Container>::xfrSvcParamKeyVals(const std::set<SvcParam>
      &kvs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assign
      Src: /src/pdns/pdns/dnswriter.cc:542,1
    - Dst: begin
      Src: /src/pdns/pdns/dnswriter.cc:542,1
    - Dst: end
      Src: /src/pdns/pdns/dnswriter.cc:542,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' records'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 543
      start: 540
    functionDepth: 1
    functionLinenumber: 540
    functionLinenumberEnd: 543
    functionName: GenericDNSPacketWriter<Container>::getRecordPayload
    functionSourceFile: /src/pdns/pdns/dnswriter.cc
    functionUses: 0
    functionsReached:
    - assign
    - end
    - begin
    linkageType: ''
    returnType: void
    signature: void GenericDNSPacketWriter<Container>::getRecordPayload(string& records)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assign
      Src: /src/pdns/pdns/dnswriter.cc:548,1
    - Dst: begin
      Src: /src/pdns/pdns/dnswriter.cc:548,1
    - Dst: end
      Src: /src/pdns/pdns/dnswriter.cc:548,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' record'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 549
      start: 546
    functionDepth: 1
    functionLinenumber: 546
    functionLinenumberEnd: 549
    functionName: GenericDNSPacketWriter<Container>::getWireFormatContent
    functionSourceFile: /src/pdns/pdns/dnswriter.cc
    functionUses: 0
    functionsReached:
    - assign
    - end
    - begin
    linkageType: ''
    returnType: void
    signature: void GenericDNSPacketWriter<Container>::getWireFormatContent(string&
      record)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: GenericDNSPacketWriter<Container>::size
      Src: /src/pdns/pdns/dnswriter.cc:553,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 554
      start: 551
    functionDepth: 0
    functionLinenumber: 551
    functionLinenumberEnd: 554
    functionName: GenericDNSPacketWriter<Container>::size
    functionSourceFile: /src/pdns/pdns/dnswriter.cc
    functionUses: 6
    functionsReached:
    - GenericDNSPacketWriter<Container>::size
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t GenericDNSPacketWriter<Container>::size() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: resize
      Src: /src/pdns/pdns/dnswriter.cc:558,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 560
      start: 556
    functionDepth: 1
    functionLinenumber: 556
    functionLinenumberEnd: 560
    functionName: GenericDNSPacketWriter<Container>::rollback
    functionSourceFile: /src/pdns/pdns/dnswriter.cc
    functionUses: 0
    functionsReached:
    - resize
    linkageType: ''
    returnType: void
    signature: void GenericDNSPacketWriter<Container>::rollback()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: resize
      Src: /src/pdns/pdns/dnswriter.cc:564,1
    - Dst: reinterpret_cast<dnsheader*>
      Src: /src/pdns/pdns/dnswriter.cc:565,1
    - Dst: begin
      Src: /src/pdns/pdns/dnswriter.cc:565,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 567
      start: 562
    functionDepth: 1
    functionLinenumber: 562
    functionLinenumberEnd: 567
    functionName: GenericDNSPacketWriter<Container>::truncate
    functionSourceFile: /src/pdns/pdns/dnswriter.cc
    functionUses: 0
    functionsReached:
    - reinterpret_cast<dnsheader*>
    - resize
    - begin
    linkageType: ''
    returnType: void
    signature: void GenericDNSPacketWriter<Container>::truncate()
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: GenericDNSPacketWriter<Container>::size
      Src: /src/pdns/pdns/dnswriter.cc:575,1
    - Dst: std::range_error
      Src: /src/pdns/pdns/dnswriter.cc:576,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnswriter.cc:576,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnswriter.cc:576,1
    - Dst: GenericDNSPacketWriter<Container>::size
      Src: /src/pdns/pdns/dnswriter.cc:576,1
    - Dst: GenericDNSPacketWriter<Container>::size
      Src: /src/pdns/pdns/dnswriter.cc:579,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnswriter.cc:579,1
    - Dst: std::range_error
      Src: /src/pdns/pdns/dnswriter.cc:580,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnswriter.cc:580,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnswriter.cc:580,1
    - Dst: GenericDNSPacketWriter<Container>::size
      Src: /src/pdns/pdns/dnswriter.cc:583,1
    - Dst: at
      Src: /src/pdns/pdns/dnswriter.cc:584,1
    - Dst: at
      Src: /src/pdns/pdns/dnswriter.cc:585,1
    - Dst: reinterpret_cast<dnsheader*>
      Src: /src/pdns/pdns/dnswriter.cc:587,1
    - Dst: begin
      Src: /src/pdns/pdns/dnswriter.cc:587,1
    - Dst: htons
      Src: /src/pdns/pdns/dnswriter.cc:590,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnswriter.cc:590,1
    - Dst: htons
      Src: /src/pdns/pdns/dnswriter.cc:593,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnswriter.cc:593,1
    - Dst: htons
      Src: /src/pdns/pdns/dnswriter.cc:596,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnswriter.cc:596,1
    - Dst: htons
      Src: /src/pdns/pdns/dnswriter.cc:599,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnswriter.cc:599,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 27
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 603
      start: 569
    functionDepth: 0
    functionLinenumber: 569
    functionLinenumberEnd: 603
    functionName: GenericDNSPacketWriter<Container>::commit
    functionSourceFile: /src/pdns/pdns/dnswriter.cc
    functionUses: 1
    functionsReached:
    - pdns::max
    - std::to_string
    - ntohs
    - std::range_error
    - reinterpret_cast<dnsheader*>
    - GenericDNSPacketWriter<Container>::size
    - begin
    - at
    - htons
    linkageType: ''
    returnType: void
    signature: void GenericDNSPacketWriter<Container>::commit()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: GenericDNSPacketWriter<Container>::size
      Src: /src/pdns/pdns/dnswriter.cc:607,1
    - Dst: second::size
      Src: /src/pdns/pdns/dnswriter.cc:611,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ' options'
    argTypes:
    - optvect_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 615
      start: 605
    functionDepth: 0
    functionLinenumber: 605
    functionLinenumberEnd: 615
    functionName: GenericDNSPacketWriter<Container>::getSizeWithOpts
    functionSourceFile: /src/pdns/pdns/dnswriter.cc
    functionUses: 0
    functionsReached:
    - GenericDNSPacketWriter<Container>::size
    - second::size
    linkageType: ''
    returnType: size_t
    signature: size_t GenericDNSPacketWriter<Container>::getSizeWithOpts(const optvect_t&
      options) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dns_random
      Src: /src/pdns/pdns/test-dns_random_hh.cc:35,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dns_random_hh.cc:38,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dns_random_hh.cc:39,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dns_random_hh.cc:40,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dns_random_hh.cc:41,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dns_random_hh.cc:42,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dns_random_hh.cc:43,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dns_random_hh.cc:44,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dns_random_hh.cc:45,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dns_random_hh.cc:46,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dns_random_hh.cc:47,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dns_random_hh.cc:48,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 31
    functionDepth: 0
    functionLinenumber: 31
    functionLinenumberEnd: 49
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-dns_random_hh.cc
    functionUses: 0
    functionsReached:
    - dns_random
    - BOOST_CHECK_EQUAL
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_dns_random_upper_bound)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: acc
      Src: /src/pdns/pdns/test-dns_random_hh.cc:56,1
    - Dst: dns_random
      Src: /src/pdns/pdns/test-dns_random_hh.cc:56,1
    - Dst: BOOST_CHECK_CLOSE
      Src: /src/pdns/pdns/test-dns_random_hh.cc:58,1
    - Dst: median
      Src: /src/pdns/pdns/test-dns_random_hh.cc:58,1
    - Dst: BOOST_CHECK_CLOSE
      Src: /src/pdns/pdns/test-dns_random_hh.cc:59,1
    - Dst: mean
      Src: /src/pdns/pdns/test-dns_random_hh.cc:59,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 51
    functionDepth: 0
    functionLinenumber: 51
    functionLinenumberEnd: 62
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-dns_random_hh.cc
    functionUses: 0
    functionsReached:
    - dns_random
    - median
    - mean
    - BOOST_CHECK_CLOSE
    - acc
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_dns_random_average)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: acc
      Src: /src/pdns/pdns/test-dns_random_hh.cc:69,1
    - Dst: dns_random_uint32
      Src: /src/pdns/pdns/test-dns_random_hh.cc:69,1
    - Dst: static_cast<double>
      Src: /src/pdns/pdns/test-dns_random_hh.cc:69,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/test-dns_random_hh.cc:69,1
    - Dst: BOOST_CHECK_CLOSE
      Src: /src/pdns/pdns/test-dns_random_hh.cc:71,1
    - Dst: median
      Src: /src/pdns/pdns/test-dns_random_hh.cc:71,1
    - Dst: BOOST_CHECK_CLOSE
      Src: /src/pdns/pdns/test-dns_random_hh.cc:72,1
    - Dst: mean
      Src: /src/pdns/pdns/test-dns_random_hh.cc:72,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 64
    functionDepth: 0
    functionLinenumber: 64
    functionLinenumberEnd: 75
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-dns_random_hh.cc
    functionUses: 0
    functionsReached:
    - dns_random_uint32
    - pdns::max
    - static_cast<double>
    - median
    - mean
    - BOOST_CHECK_CLOSE
    - acc
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_dns_random_uint32_average)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/webserver.hh:51,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 50
    functionDepth: 0
    functionLinenumber: 50
    functionLinenumberEnd: 51
    functionName: HttpRequest::HttpRequest
    functionSourceFile: /src/pdns/pdns/webserver.hh
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void HttpRequest(string logprefix_ = "")
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - log
    argTypes:
    - Logr::log_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 65
    functionDepth: 0
    functionLinenumber: 65
    functionLinenumberEnd: 68
    functionName: HttpRequest::setSLog
    functionSourceFile: /src/pdns/pdns/webserver.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setSLog(Logr::log_t log)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 74
    functionDepth: 0
    functionLinenumber: 74
    functionLinenumberEnd: 74
    functionName: HttpResponse::HttpResponse
    functionSourceFile: /src/pdns/pdns/webserver.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void HttpResponse()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - resp
    argTypes:
    - YaHTTP::Response
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 75
    functionDepth: 0
    functionLinenumber: 75
    functionLinenumberEnd: 75
    functionName: HttpResponse::HttpResponse
    functionSourceFile: /src/pdns/pdns/webserver.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void HttpResponse(const YaHTTP::Response &resp)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - log
    argTypes:
    - Logr::log_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 84
    functionDepth: 0
    functionLinenumber: 84
    functionLinenumberEnd: 87
    functionName: HttpResponse::setSLog
    functionSourceFile: /src/pdns/pdns/webserver.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setSLog(Logr::log_t log)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - status
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 95
    functionDepth: 0
    functionLinenumber: 95
    functionLinenumberEnd: 98
    functionName: HttpException::HttpException
    functionSourceFile: /src/pdns/pdns/webserver.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void HttpException(int status)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: setErrorResult
      Src: /src/pdns/pdns/webserver.hh:102,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - status
    - ' msg'
    argTypes:
    - int
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 100
    functionDepth: 0
    functionLinenumber: 100
    functionLinenumberEnd: 103
    functionName: HttpException::HttpException
    functionSourceFile: /src/pdns/pdns/webserver.hh
    functionUses: 0
    functionsReached:
    - setErrorResult
    linkageType: ''
    returnType: void
    signature: void HttpException(int status, const string& msg)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 105
    functionDepth: 0
    functionLinenumber: 105
    functionLinenumberEnd: 108
    functionName: HttpException::response
    functionSourceFile: /src/pdns/pdns/webserver.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: HttpResponse
    signature: HttpResponse response()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 116
    functionDepth: 0
    functionLinenumber: 116
    functionLinenumberEnd: 116
    functionName: HttpBadRequestException::HttpBadRequestException
    functionSourceFile: /src/pdns/pdns/webserver.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void HttpBadRequestException()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' msg'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 117
    functionDepth: 0
    functionLinenumber: 117
    functionLinenumberEnd: 117
    functionName: HttpBadRequestException::HttpBadRequestException
    functionSourceFile: /src/pdns/pdns/webserver.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void HttpBadRequestException(const string& msg)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - scheme
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 125
      start: 122
    functionDepth: 0
    functionLinenumber: 122
    functionLinenumberEnd: 125
    functionName: HttpUnauthorizedException::HttpUnauthorizedException
    functionSourceFile: /src/pdns/pdns/webserver.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void HttpUnauthorizedException(string const &scheme)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 130
      start: 130
    functionDepth: 0
    functionLinenumber: 130
    functionLinenumberEnd: 130
    functionName: HttpForbiddenException::HttpForbiddenException
    functionSourceFile: /src/pdns/pdns/webserver.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void HttpForbiddenException()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' msg'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 131
      start: 131
    functionDepth: 0
    functionLinenumber: 131
    functionLinenumberEnd: 131
    functionName: HttpForbiddenException::HttpForbiddenException
    functionSourceFile: /src/pdns/pdns/webserver.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void HttpForbiddenException(const string& msg)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 136
      start: 136
    functionDepth: 0
    functionLinenumber: 136
    functionLinenumberEnd: 136
    functionName: HttpNotFoundException::HttpNotFoundException
    functionSourceFile: /src/pdns/pdns/webserver.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void HttpNotFoundException()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' msg'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 137
      start: 137
    functionDepth: 0
    functionLinenumber: 137
    functionLinenumberEnd: 137
    functionName: HttpNotFoundException::HttpNotFoundException
    functionSourceFile: /src/pdns/pdns/webserver.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void HttpNotFoundException(const string& msg)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 142
      start: 142
    functionDepth: 0
    functionLinenumber: 142
    functionLinenumberEnd: 142
    functionName: HttpMethodNotAllowedException::HttpMethodNotAllowedException
    functionSourceFile: /src/pdns/pdns/webserver.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void HttpMethodNotAllowedException()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' msg'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 143
      start: 143
    functionDepth: 0
    functionLinenumber: 143
    functionLinenumberEnd: 143
    functionName: HttpMethodNotAllowedException::HttpMethodNotAllowedException
    functionSourceFile: /src/pdns/pdns/webserver.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void HttpMethodNotAllowedException(const string& msg)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 148
      start: 148
    functionDepth: 0
    functionLinenumber: 148
    functionLinenumberEnd: 148
    functionName: HttpConflictException::HttpConflictException
    functionSourceFile: /src/pdns/pdns/webserver.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void HttpConflictException()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' msg'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 149
      start: 149
    functionDepth: 0
    functionLinenumber: 149
    functionLinenumberEnd: 149
    functionName: HttpConflictException::HttpConflictException
    functionSourceFile: /src/pdns/pdns/webserver.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void HttpConflictException(const string& msg)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 154
      start: 154
    functionDepth: 0
    functionLinenumber: 154
    functionLinenumberEnd: 154
    functionName: HttpInternalServerErrorException::HttpInternalServerErrorException
    functionSourceFile: /src/pdns/pdns/webserver.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void HttpInternalServerErrorException()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' msg'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 155
    functionDepth: 0
    functionLinenumber: 155
    functionLinenumberEnd: 155
    functionName: HttpInternalServerErrorException::HttpInternalServerErrorException
    functionSourceFile: /src/pdns/pdns/webserver.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void HttpInternalServerErrorException(const string& msg)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' what_arg'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 162
      start: 161
    functionDepth: 0
    functionLinenumber: 161
    functionLinenumberEnd: 162
    functionName: ApiException::ApiException
    functionSourceFile: /src/pdns/pdns/webserver.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ApiException(const string& what_arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: string::empty
      Src: /src/pdns/pdns/webserver.hh:170,1
    - Dst: setReuseAddr
      Src: /src/pdns/pdns/webserver.hh:171,1
    - Dst: bind
      Src: /src/pdns/pdns/webserver.hh:172,1
    - Dst: listen
      Src: /src/pdns/pdns/webserver.hh:173,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - localaddress
    - port
    argTypes:
    - string
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 174
      start: 170
    functionDepth: 0
    functionLinenumber: 170
    functionLinenumberEnd: 174
    functionName: Server::Server
    functionSourceFile: /src/pdns/pdns/webserver.hh
    functionUses: 0
    functionsReached:
    - listen
    - bind
    - setReuseAddr
    - string::empty
    linkageType: ''
    returnType: void
    signature: void Server(const string &localaddress, int port)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 175
      start: 175
    functionDepth: 0
    functionLinenumber: 175
    functionLinenumberEnd: 175
    functionName: ~Server()
    functionSourceFile: /src/pdns/pdns/webserver.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~Server()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::shared_ptr<Socket>
      Src: /src/pdns/pdns/webserver.hh:180,1
    - Dst: Server::accept
      Src: /src/pdns/pdns/webserver.hh:180,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 181
      start: 179
    functionDepth: 0
    functionLinenumber: 179
    functionLinenumberEnd: 181
    functionName: Server::accept
    functionSourceFile: /src/pdns/pdns/webserver.hh
    functionUses: 1
    functionsReached:
    - std::shared_ptr<Socket>
    - Server::accept
    linkageType: ''
    returnType: std::shared_ptr<Socket>
    signature: std::shared_ptr<Socket> accept()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 193
      start: 193
    functionDepth: 0
    functionLinenumber: 193
    functionLinenumberEnd: 193
    functionName: ~WebServer()
    functionSourceFile: /src/pdns/pdns/webserver.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~WebServer()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - log
    argTypes:
    - Logr::log_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 198
      start: 195
    functionDepth: 0
    functionLinenumber: 195
    functionLinenumberEnd: 198
    functionName: WebServer::setSLog
    functionSourceFile: /src/pdns/pdns/webserver.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setSLog(Logr::log_t log)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: string::empty
      Src: /src/pdns/pdns/webserver.hh:201,1
    - Dst: make_unique<CredentialsHolder>
      Src: /src/pdns/pdns/webserver.hh:202,1
    - Dst: std::string
      Src: /src/pdns/pdns/webserver.hh:202,1
    - Dst: reset
      Src: /src/pdns/pdns/webserver.hh:205,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - apikey
    - hashPlaintext
    argTypes:
    - string
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 207
      start: 200
    functionDepth: 0
    functionLinenumber: 200
    functionLinenumberEnd: 207
    functionName: WebServer::setApiKey
    functionSourceFile: /src/pdns/pdns/webserver.hh
    functionUses: 0
    functionsReached:
    - std::string
    - reset
    - make_unique<CredentialsHolder>
    - string::empty
    linkageType: ''
    returnType: void
    signature: void setApiKey(const string &apikey, bool hashPlaintext)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: string::empty
      Src: /src/pdns/pdns/webserver.hh:210,1
    - Dst: make_unique<CredentialsHolder>
      Src: /src/pdns/pdns/webserver.hh:211,1
    - Dst: std::string
      Src: /src/pdns/pdns/webserver.hh:211,1
    - Dst: reset
      Src: /src/pdns/pdns/webserver.hh:214,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - password
    - hashPlaintext
    argTypes:
    - string
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 216
      start: 209
    functionDepth: 0
    functionLinenumber: 209
    functionLinenumberEnd: 216
    functionName: WebServer::setPassword
    functionSourceFile: /src/pdns/pdns/webserver.hh
    functionUses: 0
    functionsReached:
    - std::string
    - reset
    - make_unique<CredentialsHolder>
    - string::empty
    linkageType: ''
    returnType: void
    signature: void setPassword(const string &password, bool hashPlaintext)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - s
    argTypes:
    - ssize_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 220
      start: 218
    functionDepth: 0
    functionLinenumber: 218
    functionLinenumberEnd: 220
    functionName: WebServer::setMaxBodySize
    functionSourceFile: /src/pdns/pdns/webserver.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setMaxBodySize(ssize_t s)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - t
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 224
      start: 222
    functionDepth: 0
    functionLinenumber: 222
    functionLinenumberEnd: 224
    functionName: WebServer::setConnectionTimeout
    functionSourceFile: /src/pdns/pdns/webserver.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setConnectionTimeout(int t)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - nmg
    argTypes:
    - NetmaskGroup
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 228
      start: 226
    functionDepth: 0
    functionLinenumber: 226
    functionLinenumberEnd: 228
    functionName: WebServer::setACL
    functionSourceFile: /src/pdns/pdns/webserver.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setACL(const NetmaskGroup &nmg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: WebServer::registerConnection
      Src: /src/pdns/pdns/webserver.hh:246,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 247
      start: 242
    functionDepth: 0
    functionLinenumber: 242
    functionLinenumberEnd: 247
    functionName: WebServer::registerConnection
    functionSourceFile: /src/pdns/pdns/webserver.hh
    functionUses: 1
    functionsReached:
    - WebServer::registerConnection
    linkageType: ''
    returnType: bool
    signature: bool registerConnection()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: WebServer::releaseConnection
      Src: /src/pdns/pdns/webserver.hh:250,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 252
      start: 248
    functionDepth: 0
    functionLinenumber: 248
    functionLinenumberEnd: 252
    functionName: WebServer::releaseConnection
    functionSourceFile: /src/pdns/pdns/webserver.hh
    functionUses: 1
    functionsReached:
    - WebServer::releaseConnection
    linkageType: ''
    returnType: void
    signature: void releaseConnection()
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: PDNSException
      Src: /src/pdns/pdns/webserver.hh:276,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 1
    argNames:
    - ' level'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 277
      start: 260
    functionDepth: 0
    functionLinenumber: 260
    functionLinenumberEnd: 277
    functionName: WebServer::setLogLevel
    functionSourceFile: /src/pdns/pdns/webserver.hh
    functionUses: 0
    functionsReached:
    - PDNSException
    linkageType: ''
    returnType: void
    signature: void setLogLevel(const string& level)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - level
    argTypes:
    - LogLevel
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 281
      start: 279
    functionDepth: 0
    functionLinenumber: 279
    functionLinenumberEnd: 281
    functionName: WebServer::setLogLevel
    functionSourceFile: /src/pdns/pdns/webserver.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setLogLevel(const LogLevel level)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 285
      start: 283
    functionDepth: 0
    functionLinenumber: 283
    functionLinenumberEnd: 285
    functionName: WebServer::getLogLevel
    functionSourceFile: /src/pdns/pdns/webserver.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: LogLevel
    signature: LogLevel getLogLevel()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' value'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 290
      start: 287
    functionDepth: 0
    functionLinenumber: 287
    functionLinenumberEnd: 290
    functionName: WebServer::setCrossOriginRequestHeader
    functionSourceFile: /src/pdns/pdns/webserver.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setCrossOriginRequestHeader(const std::string& value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<Server>
      Src: /src/pdns/pdns/webserver.hh:300,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 301
      start: 299
    functionDepth: 0
    functionLinenumber: 299
    functionLinenumberEnd: 301
    functionName: WebServer::createServer
    functionSourceFile: /src/pdns/pdns/webserver.hh
    functionUses: 0
    functionsReached:
    - std::make_shared<Server>
    linkageType: ''
    returnType: std::shared_ptr<Server>
    signature: std::shared_ptr<Server> createServer()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/test-ixfr_cc.cc:22,1
    - Dst: addRecordToList
      Src: /src/pdns/pdns/test-ixfr_cc.cc:24,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ixfr_cc.cc:24,1
    - Dst: addRecordToList
      Src: /src/pdns/pdns/test-ixfr_cc.cc:25,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ixfr_cc.cc:25,1
    - Dst: addRecordToList
      Src: /src/pdns/pdns/test-ixfr_cc.cc:26,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ixfr_cc.cc:26,1
    - Dst: addRecordToList
      Src: /src/pdns/pdns/test-ixfr_cc.cc:27,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ixfr_cc.cc:27,1
    - Dst: addRecordToList
      Src: /src/pdns/pdns/test-ixfr_cc.cc:28,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ixfr_cc.cc:28,1
    - Dst: addRecordToList
      Src: /src/pdns/pdns/test-ixfr_cc.cc:29,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ixfr_cc.cc:29,1
    - Dst: processIXFRRecords
      Src: /src/pdns/pdns/test-ixfr_cc.cc:31,1
    - Dst: std::dynamic_pointer_cast<SOARecordContent>
      Src: /src/pdns/pdns/test-ixfr_cc.cc:31,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-ixfr_cc.cc:32,1
    - Dst: auto::size
      Src: /src/pdns/pdns/test-ixfr_cc.cc:32,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-ixfr_cc.cc:33,1
    - Dst: auto::at
      Src: /src/pdns/pdns/test-ixfr_cc.cc:33,1
    - Dst: size
      Src: /src/pdns/pdns/test-ixfr_cc.cc:33,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/test-ixfr_cc.cc:34,1
    - Dst: auto::at
      Src: /src/pdns/pdns/test-ixfr_cc.cc:34,1
    - Dst: size
      Src: /src/pdns/pdns/test-ixfr_cc.cc:34,1
    - Dst: vector::size
      Src: /src/pdns/pdns/test-ixfr_cc.cc:34,1
    - Dst: vector::size
      Src: /src/pdns/pdns/test-ixfr_cc.cc:35,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-ixfr_cc.cc:36,1
    - Dst: auto::at
      Src: /src/pdns/pdns/test-ixfr_cc.cc:36,1
    - Dst: at
      Src: /src/pdns/pdns/test-ixfr_cc.cc:36,1
    - Dst: vector::at
      Src: /src/pdns/pdns/test-ixfr_cc.cc:36,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 18
    functionDepth: 0
    functionLinenumber: 18
    functionLinenumberEnd: 38
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-ixfr_cc.cc
    functionUses: 0
    functionsReached:
    - addRecordToList
    - vector::at
    - BOOST_CHECK
    - at
    - processIXFRRecords
    - DNSName
    - BOOST_CHECK_EQUAL
    - size
    - DNSRecordContent::make
    - auto::at
    - vector::size
    - std::dynamic_pointer_cast<SOARecordContent>
    - BOOST_REQUIRE_EQUAL
    - auto::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_ixfr_rfc1995_axfr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/test-ixfr_cc.cc:44,1
    - Dst: addRecordToList
      Src: /src/pdns/pdns/test-ixfr_cc.cc:46,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ixfr_cc.cc:46,1
    - Dst: addRecordToList
      Src: /src/pdns/pdns/test-ixfr_cc.cc:47,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ixfr_cc.cc:47,1
    - Dst: addRecordToList
      Src: /src/pdns/pdns/test-ixfr_cc.cc:48,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ixfr_cc.cc:48,1
    - Dst: addRecordToList
      Src: /src/pdns/pdns/test-ixfr_cc.cc:49,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ixfr_cc.cc:49,1
    - Dst: addRecordToList
      Src: /src/pdns/pdns/test-ixfr_cc.cc:50,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ixfr_cc.cc:50,1
    - Dst: addRecordToList
      Src: /src/pdns/pdns/test-ixfr_cc.cc:51,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ixfr_cc.cc:51,1
    - Dst: addRecordToList
      Src: /src/pdns/pdns/test-ixfr_cc.cc:52,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ixfr_cc.cc:52,1
    - Dst: addRecordToList
      Src: /src/pdns/pdns/test-ixfr_cc.cc:53,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ixfr_cc.cc:53,1
    - Dst: addRecordToList
      Src: /src/pdns/pdns/test-ixfr_cc.cc:54,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ixfr_cc.cc:54,1
    - Dst: addRecordToList
      Src: /src/pdns/pdns/test-ixfr_cc.cc:55,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ixfr_cc.cc:55,1
    - Dst: addRecordToList
      Src: /src/pdns/pdns/test-ixfr_cc.cc:56,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ixfr_cc.cc:56,1
    - Dst: processIXFRRecords
      Src: /src/pdns/pdns/test-ixfr_cc.cc:58,1
    - Dst: std::dynamic_pointer_cast<SOARecordContent>
      Src: /src/pdns/pdns/test-ixfr_cc.cc:58,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-ixfr_cc.cc:60,1
    - Dst: auto::size
      Src: /src/pdns/pdns/test-ixfr_cc.cc:60,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-ixfr_cc.cc:62,1
    - Dst: auto::at
      Src: /src/pdns/pdns/test-ixfr_cc.cc:62,1
    - Dst: size
      Src: /src/pdns/pdns/test-ixfr_cc.cc:62,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-ixfr_cc.cc:63,1
    - Dst: auto::at
      Src: /src/pdns/pdns/test-ixfr_cc.cc:63,1
    - Dst: size
      Src: /src/pdns/pdns/test-ixfr_cc.cc:63,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-ixfr_cc.cc:66,1
    - Dst: auto::at
      Src: /src/pdns/pdns/test-ixfr_cc.cc:66,1
    - Dst: at
      Src: /src/pdns/pdns/test-ixfr_cc.cc:66,1
    - Dst: QType
      Src: /src/pdns/pdns/test-ixfr_cc.cc:66,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-ixfr_cc.cc:67,1
    - Dst: auto::at
      Src: /src/pdns/pdns/test-ixfr_cc.cc:67,1
    - Dst: at
      Src: /src/pdns/pdns/test-ixfr_cc.cc:67,1
    - Dst: QType
      Src: /src/pdns/pdns/test-ixfr_cc.cc:67,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-ixfr_cc.cc:70,1
    - Dst: auto::at
      Src: /src/pdns/pdns/test-ixfr_cc.cc:70,1
    - Dst: at
      Src: /src/pdns/pdns/test-ixfr_cc.cc:70,1
    - Dst: QType
      Src: /src/pdns/pdns/test-ixfr_cc.cc:70,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-ixfr_cc.cc:71,1
    - Dst: auto::at
      Src: /src/pdns/pdns/test-ixfr_cc.cc:71,1
    - Dst: at
      Src: /src/pdns/pdns/test-ixfr_cc.cc:71,1
    - Dst: QType
      Src: /src/pdns/pdns/test-ixfr_cc.cc:71,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-ixfr_cc.cc:72,1
    - Dst: auto::at
      Src: /src/pdns/pdns/test-ixfr_cc.cc:72,1
    - Dst: at
      Src: /src/pdns/pdns/test-ixfr_cc.cc:72,1
    - Dst: QType
      Src: /src/pdns/pdns/test-ixfr_cc.cc:72,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-ixfr_cc.cc:75,1
    - Dst: auto::at
      Src: /src/pdns/pdns/test-ixfr_cc.cc:75,1
    - Dst: size
      Src: /src/pdns/pdns/test-ixfr_cc.cc:75,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-ixfr_cc.cc:76,1
    - Dst: auto::at
      Src: /src/pdns/pdns/test-ixfr_cc.cc:76,1
    - Dst: size
      Src: /src/pdns/pdns/test-ixfr_cc.cc:76,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-ixfr_cc.cc:79,1
    - Dst: auto::at
      Src: /src/pdns/pdns/test-ixfr_cc.cc:79,1
    - Dst: at
      Src: /src/pdns/pdns/test-ixfr_cc.cc:79,1
    - Dst: QType
      Src: /src/pdns/pdns/test-ixfr_cc.cc:79,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-ixfr_cc.cc:80,1
    - Dst: auto::at
      Src: /src/pdns/pdns/test-ixfr_cc.cc:80,1
    - Dst: at
      Src: /src/pdns/pdns/test-ixfr_cc.cc:80,1
    - Dst: QType
      Src: /src/pdns/pdns/test-ixfr_cc.cc:80,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-ixfr_cc.cc:83,1
    - Dst: auto::at
      Src: /src/pdns/pdns/test-ixfr_cc.cc:83,1
    - Dst: at
      Src: /src/pdns/pdns/test-ixfr_cc.cc:83,1
    - Dst: QType
      Src: /src/pdns/pdns/test-ixfr_cc.cc:83,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-ixfr_cc.cc:84,1
    - Dst: auto::at
      Src: /src/pdns/pdns/test-ixfr_cc.cc:84,1
    - Dst: at
      Src: /src/pdns/pdns/test-ixfr_cc.cc:84,1
    - Dst: QType
      Src: /src/pdns/pdns/test-ixfr_cc.cc:84,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 26
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 40
    functionDepth: 0
    functionLinenumber: 40
    functionLinenumberEnd: 85
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-ixfr_cc.cc
    functionUses: 0
    functionsReached:
    - addRecordToList
    - at
    - processIXFRRecords
    - QType
    - DNSName
    - BOOST_CHECK_EQUAL
    - size
    - DNSRecordContent::make
    - auto::at
    - std::dynamic_pointer_cast<SOARecordContent>
    - auto::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_ixfr_rfc1995_incremental)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/test-ixfr_cc.cc:91,1
    - Dst: addRecordToList
      Src: /src/pdns/pdns/test-ixfr_cc.cc:93,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ixfr_cc.cc:93,1
    - Dst: addRecordToList
      Src: /src/pdns/pdns/test-ixfr_cc.cc:94,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ixfr_cc.cc:94,1
    - Dst: addRecordToList
      Src: /src/pdns/pdns/test-ixfr_cc.cc:95,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ixfr_cc.cc:95,1
    - Dst: addRecordToList
      Src: /src/pdns/pdns/test-ixfr_cc.cc:96,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ixfr_cc.cc:96,1
    - Dst: addRecordToList
      Src: /src/pdns/pdns/test-ixfr_cc.cc:97,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ixfr_cc.cc:97,1
    - Dst: addRecordToList
      Src: /src/pdns/pdns/test-ixfr_cc.cc:98,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ixfr_cc.cc:98,1
    - Dst: addRecordToList
      Src: /src/pdns/pdns/test-ixfr_cc.cc:99,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ixfr_cc.cc:99,1
    - Dst: processIXFRRecords
      Src: /src/pdns/pdns/test-ixfr_cc.cc:101,1
    - Dst: std::dynamic_pointer_cast<SOARecordContent>
      Src: /src/pdns/pdns/test-ixfr_cc.cc:101,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-ixfr_cc.cc:103,1
    - Dst: auto::size
      Src: /src/pdns/pdns/test-ixfr_cc.cc:103,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-ixfr_cc.cc:105,1
    - Dst: auto::at
      Src: /src/pdns/pdns/test-ixfr_cc.cc:105,1
    - Dst: size
      Src: /src/pdns/pdns/test-ixfr_cc.cc:105,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-ixfr_cc.cc:106,1
    - Dst: auto::at
      Src: /src/pdns/pdns/test-ixfr_cc.cc:106,1
    - Dst: size
      Src: /src/pdns/pdns/test-ixfr_cc.cc:106,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-ixfr_cc.cc:109,1
    - Dst: auto::at
      Src: /src/pdns/pdns/test-ixfr_cc.cc:109,1
    - Dst: at
      Src: /src/pdns/pdns/test-ixfr_cc.cc:109,1
    - Dst: QType
      Src: /src/pdns/pdns/test-ixfr_cc.cc:109,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-ixfr_cc.cc:110,1
    - Dst: auto::at
      Src: /src/pdns/pdns/test-ixfr_cc.cc:110,1
    - Dst: at
      Src: /src/pdns/pdns/test-ixfr_cc.cc:110,1
    - Dst: QType
      Src: /src/pdns/pdns/test-ixfr_cc.cc:110,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-ixfr_cc.cc:113,1
    - Dst: auto::at
      Src: /src/pdns/pdns/test-ixfr_cc.cc:113,1
    - Dst: at
      Src: /src/pdns/pdns/test-ixfr_cc.cc:113,1
    - Dst: QType
      Src: /src/pdns/pdns/test-ixfr_cc.cc:113,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-ixfr_cc.cc:114,1
    - Dst: auto::at
      Src: /src/pdns/pdns/test-ixfr_cc.cc:114,1
    - Dst: at
      Src: /src/pdns/pdns/test-ixfr_cc.cc:114,1
    - Dst: QType
      Src: /src/pdns/pdns/test-ixfr_cc.cc:114,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-ixfr_cc.cc:115,1
    - Dst: auto::at
      Src: /src/pdns/pdns/test-ixfr_cc.cc:115,1
    - Dst: at
      Src: /src/pdns/pdns/test-ixfr_cc.cc:115,1
    - Dst: QType
      Src: /src/pdns/pdns/test-ixfr_cc.cc:115,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 87
    functionDepth: 0
    functionLinenumber: 87
    functionLinenumberEnd: 116
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-ixfr_cc.cc
    functionUses: 0
    functionsReached:
    - addRecordToList
    - at
    - processIXFRRecords
    - QType
    - DNSName
    - BOOST_CHECK_EQUAL
    - size
    - DNSRecordContent::make
    - auto::at
    - std::dynamic_pointer_cast<SOARecordContent>
    - auto::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_ixfr_rfc1995_condensed_incremental)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/test-ixfr_cc.cc:122,1
    - Dst: addRecordToList
      Src: /src/pdns/pdns/test-ixfr_cc.cc:124,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ixfr_cc.cc:124,1
    - Dst: addRecordToList
      Src: /src/pdns/pdns/test-ixfr_cc.cc:125,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ixfr_cc.cc:125,1
    - Dst: addRecordToList
      Src: /src/pdns/pdns/test-ixfr_cc.cc:126,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ixfr_cc.cc:126,1
    - Dst: addRecordToList
      Src: /src/pdns/pdns/test-ixfr_cc.cc:127,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ixfr_cc.cc:127,1
    - Dst: addRecordToList
      Src: /src/pdns/pdns/test-ixfr_cc.cc:128,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ixfr_cc.cc:128,1
    - Dst: addRecordToList
      Src: /src/pdns/pdns/test-ixfr_cc.cc:129,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ixfr_cc.cc:129,1
    - Dst: addRecordToList
      Src: /src/pdns/pdns/test-ixfr_cc.cc:130,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ixfr_cc.cc:130,1
    - Dst: addRecordToList
      Src: /src/pdns/pdns/test-ixfr_cc.cc:131,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ixfr_cc.cc:131,1
    - Dst: addRecordToList
      Src: /src/pdns/pdns/test-ixfr_cc.cc:132,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ixfr_cc.cc:132,1
    - Dst: processIXFRRecords
      Src: /src/pdns/pdns/test-ixfr_cc.cc:134,1
    - Dst: std::dynamic_pointer_cast<SOARecordContent>
      Src: /src/pdns/pdns/test-ixfr_cc.cc:134,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-ixfr_cc.cc:136,1
    - Dst: auto::size
      Src: /src/pdns/pdns/test-ixfr_cc.cc:136,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-ixfr_cc.cc:138,1
    - Dst: auto::at
      Src: /src/pdns/pdns/test-ixfr_cc.cc:138,1
    - Dst: size
      Src: /src/pdns/pdns/test-ixfr_cc.cc:138,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-ixfr_cc.cc:139,1
    - Dst: auto::at
      Src: /src/pdns/pdns/test-ixfr_cc.cc:139,1
    - Dst: size
      Src: /src/pdns/pdns/test-ixfr_cc.cc:139,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-ixfr_cc.cc:142,1
    - Dst: auto::at
      Src: /src/pdns/pdns/test-ixfr_cc.cc:142,1
    - Dst: at
      Src: /src/pdns/pdns/test-ixfr_cc.cc:142,1
    - Dst: QType
      Src: /src/pdns/pdns/test-ixfr_cc.cc:142,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-ixfr_cc.cc:143,1
    - Dst: auto::at
      Src: /src/pdns/pdns/test-ixfr_cc.cc:143,1
    - Dst: at
      Src: /src/pdns/pdns/test-ixfr_cc.cc:143,1
    - Dst: QType
      Src: /src/pdns/pdns/test-ixfr_cc.cc:143,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-ixfr_cc.cc:146,1
    - Dst: auto::at
      Src: /src/pdns/pdns/test-ixfr_cc.cc:146,1
    - Dst: at
      Src: /src/pdns/pdns/test-ixfr_cc.cc:146,1
    - Dst: QType
      Src: /src/pdns/pdns/test-ixfr_cc.cc:146,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-ixfr_cc.cc:149,1
    - Dst: auto::at
      Src: /src/pdns/pdns/test-ixfr_cc.cc:149,1
    - Dst: size
      Src: /src/pdns/pdns/test-ixfr_cc.cc:149,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-ixfr_cc.cc:150,1
    - Dst: auto::at
      Src: /src/pdns/pdns/test-ixfr_cc.cc:150,1
    - Dst: size
      Src: /src/pdns/pdns/test-ixfr_cc.cc:150,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-ixfr_cc.cc:153,1
    - Dst: auto::at
      Src: /src/pdns/pdns/test-ixfr_cc.cc:153,1
    - Dst: at
      Src: /src/pdns/pdns/test-ixfr_cc.cc:153,1
    - Dst: QType
      Src: /src/pdns/pdns/test-ixfr_cc.cc:153,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-ixfr_cc.cc:154,1
    - Dst: auto::at
      Src: /src/pdns/pdns/test-ixfr_cc.cc:154,1
    - Dst: at
      Src: /src/pdns/pdns/test-ixfr_cc.cc:154,1
    - Dst: QType
      Src: /src/pdns/pdns/test-ixfr_cc.cc:154,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-ixfr_cc.cc:157,1
    - Dst: auto::at
      Src: /src/pdns/pdns/test-ixfr_cc.cc:157,1
    - Dst: at
      Src: /src/pdns/pdns/test-ixfr_cc.cc:157,1
    - Dst: QType
      Src: /src/pdns/pdns/test-ixfr_cc.cc:157,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-ixfr_cc.cc:158,1
    - Dst: auto::at
      Src: /src/pdns/pdns/test-ixfr_cc.cc:158,1
    - Dst: at
      Src: /src/pdns/pdns/test-ixfr_cc.cc:158,1
    - Dst: QType
      Src: /src/pdns/pdns/test-ixfr_cc.cc:158,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 22
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 159
      start: 118
    functionDepth: 0
    functionLinenumber: 118
    functionLinenumberEnd: 159
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-ixfr_cc.cc
    functionUses: 0
    functionsReached:
    - addRecordToList
    - at
    - processIXFRRecords
    - QType
    - DNSName
    - BOOST_CHECK_EQUAL
    - size
    - DNSRecordContent::make
    - auto::at
    - std::dynamic_pointer_cast<SOARecordContent>
    - auto::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_ixfr_no_additions_in_first_sequence)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/test-ixfr_cc.cc:165,1
    - Dst: addRecordToList
      Src: /src/pdns/pdns/test-ixfr_cc.cc:167,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ixfr_cc.cc:167,1
    - Dst: addRecordToList
      Src: /src/pdns/pdns/test-ixfr_cc.cc:168,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ixfr_cc.cc:168,1
    - Dst: addRecordToList
      Src: /src/pdns/pdns/test-ixfr_cc.cc:169,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ixfr_cc.cc:169,1
    - Dst: addRecordToList
      Src: /src/pdns/pdns/test-ixfr_cc.cc:170,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ixfr_cc.cc:170,1
    - Dst: addRecordToList
      Src: /src/pdns/pdns/test-ixfr_cc.cc:171,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ixfr_cc.cc:171,1
    - Dst: addRecordToList
      Src: /src/pdns/pdns/test-ixfr_cc.cc:172,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ixfr_cc.cc:172,1
    - Dst: addRecordToList
      Src: /src/pdns/pdns/test-ixfr_cc.cc:173,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ixfr_cc.cc:173,1
    - Dst: addRecordToList
      Src: /src/pdns/pdns/test-ixfr_cc.cc:174,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ixfr_cc.cc:174,1
    - Dst: addRecordToList
      Src: /src/pdns/pdns/test-ixfr_cc.cc:175,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ixfr_cc.cc:175,1
    - Dst: addRecordToList
      Src: /src/pdns/pdns/test-ixfr_cc.cc:176,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ixfr_cc.cc:176,1
    - Dst: processIXFRRecords
      Src: /src/pdns/pdns/test-ixfr_cc.cc:178,1
    - Dst: std::dynamic_pointer_cast<SOARecordContent>
      Src: /src/pdns/pdns/test-ixfr_cc.cc:178,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-ixfr_cc.cc:180,1
    - Dst: auto::size
      Src: /src/pdns/pdns/test-ixfr_cc.cc:180,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-ixfr_cc.cc:182,1
    - Dst: auto::at
      Src: /src/pdns/pdns/test-ixfr_cc.cc:182,1
    - Dst: size
      Src: /src/pdns/pdns/test-ixfr_cc.cc:182,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-ixfr_cc.cc:183,1
    - Dst: auto::at
      Src: /src/pdns/pdns/test-ixfr_cc.cc:183,1
    - Dst: size
      Src: /src/pdns/pdns/test-ixfr_cc.cc:183,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-ixfr_cc.cc:186,1
    - Dst: auto::at
      Src: /src/pdns/pdns/test-ixfr_cc.cc:186,1
    - Dst: at
      Src: /src/pdns/pdns/test-ixfr_cc.cc:186,1
    - Dst: QType
      Src: /src/pdns/pdns/test-ixfr_cc.cc:186,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-ixfr_cc.cc:189,1
    - Dst: auto::at
      Src: /src/pdns/pdns/test-ixfr_cc.cc:189,1
    - Dst: at
      Src: /src/pdns/pdns/test-ixfr_cc.cc:189,1
    - Dst: QType
      Src: /src/pdns/pdns/test-ixfr_cc.cc:189,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-ixfr_cc.cc:190,1
    - Dst: auto::at
      Src: /src/pdns/pdns/test-ixfr_cc.cc:190,1
    - Dst: at
      Src: /src/pdns/pdns/test-ixfr_cc.cc:190,1
    - Dst: QType
      Src: /src/pdns/pdns/test-ixfr_cc.cc:190,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-ixfr_cc.cc:191,1
    - Dst: auto::at
      Src: /src/pdns/pdns/test-ixfr_cc.cc:191,1
    - Dst: at
      Src: /src/pdns/pdns/test-ixfr_cc.cc:191,1
    - Dst: QType
      Src: /src/pdns/pdns/test-ixfr_cc.cc:191,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-ixfr_cc.cc:194,1
    - Dst: auto::at
      Src: /src/pdns/pdns/test-ixfr_cc.cc:194,1
    - Dst: size
      Src: /src/pdns/pdns/test-ixfr_cc.cc:194,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-ixfr_cc.cc:195,1
    - Dst: auto::at
      Src: /src/pdns/pdns/test-ixfr_cc.cc:195,1
    - Dst: size
      Src: /src/pdns/pdns/test-ixfr_cc.cc:195,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-ixfr_cc.cc:198,1
    - Dst: auto::at
      Src: /src/pdns/pdns/test-ixfr_cc.cc:198,1
    - Dst: at
      Src: /src/pdns/pdns/test-ixfr_cc.cc:198,1
    - Dst: QType
      Src: /src/pdns/pdns/test-ixfr_cc.cc:198,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-ixfr_cc.cc:199,1
    - Dst: auto::at
      Src: /src/pdns/pdns/test-ixfr_cc.cc:199,1
    - Dst: at
      Src: /src/pdns/pdns/test-ixfr_cc.cc:199,1
    - Dst: QType
      Src: /src/pdns/pdns/test-ixfr_cc.cc:199,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-ixfr_cc.cc:202,1
    - Dst: auto::at
      Src: /src/pdns/pdns/test-ixfr_cc.cc:202,1
    - Dst: at
      Src: /src/pdns/pdns/test-ixfr_cc.cc:202,1
    - Dst: QType
      Src: /src/pdns/pdns/test-ixfr_cc.cc:202,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-ixfr_cc.cc:203,1
    - Dst: auto::at
      Src: /src/pdns/pdns/test-ixfr_cc.cc:203,1
    - Dst: at
      Src: /src/pdns/pdns/test-ixfr_cc.cc:203,1
    - Dst: QType
      Src: /src/pdns/pdns/test-ixfr_cc.cc:203,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 24
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 204
      start: 161
    functionDepth: 0
    functionLinenumber: 161
    functionLinenumberEnd: 204
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-ixfr_cc.cc
    functionUses: 0
    functionsReached:
    - addRecordToList
    - at
    - processIXFRRecords
    - QType
    - DNSName
    - BOOST_CHECK_EQUAL
    - size
    - DNSRecordContent::make
    - auto::at
    - std::dynamic_pointer_cast<SOARecordContent>
    - auto::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_ixfr_no_removals_in_first_sequence)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/test-ixfr_cc.cc:210,1
    - Dst: addRecordToList
      Src: /src/pdns/pdns/test-ixfr_cc.cc:212,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ixfr_cc.cc:212,1
    - Dst: addRecordToList
      Src: /src/pdns/pdns/test-ixfr_cc.cc:213,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ixfr_cc.cc:213,1
    - Dst: processIXFRRecords
      Src: /src/pdns/pdns/test-ixfr_cc.cc:215,1
    - Dst: std::dynamic_pointer_cast<SOARecordContent>
      Src: /src/pdns/pdns/test-ixfr_cc.cc:215,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-ixfr_cc.cc:218,1
    - Dst: auto::size
      Src: /src/pdns/pdns/test-ixfr_cc.cc:218,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-ixfr_cc.cc:220,1
    - Dst: auto::at
      Src: /src/pdns/pdns/test-ixfr_cc.cc:220,1
    - Dst: size
      Src: /src/pdns/pdns/test-ixfr_cc.cc:220,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-ixfr_cc.cc:222,1
    - Dst: auto::at
      Src: /src/pdns/pdns/test-ixfr_cc.cc:222,1
    - Dst: size
      Src: /src/pdns/pdns/test-ixfr_cc.cc:222,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-ixfr_cc.cc:223,1
    - Dst: auto::at
      Src: /src/pdns/pdns/test-ixfr_cc.cc:223,1
    - Dst: at
      Src: /src/pdns/pdns/test-ixfr_cc.cc:223,1
    - Dst: QType
      Src: /src/pdns/pdns/test-ixfr_cc.cc:223,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-ixfr_cc.cc:224,1
    - Dst: auto::at
      Src: /src/pdns/pdns/test-ixfr_cc.cc:224,1
    - Dst: at
      Src: /src/pdns/pdns/test-ixfr_cc.cc:224,1
    - Dst: QType
      Src: /src/pdns/pdns/test-ixfr_cc.cc:224,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 225
      start: 206
    functionDepth: 0
    functionLinenumber: 206
    functionLinenumberEnd: 225
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-ixfr_cc.cc
    functionUses: 0
    functionsReached:
    - addRecordToList
    - at
    - processIXFRRecords
    - QType
    - DNSName
    - BOOST_CHECK_EQUAL
    - size
    - DNSRecordContent::make
    - auto::at
    - std::dynamic_pointer_cast<SOARecordContent>
    - auto::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_ixfr_same_serial)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/test-ixfr_cc.cc:231,1
    - Dst: processIXFRRecords
      Src: /src/pdns/pdns/test-ixfr_cc.cc:234,1
    - Dst: std::dynamic_pointer_cast<SOARecordContent>
      Src: /src/pdns/pdns/test-ixfr_cc.cc:234,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-ixfr_cc.cc:235,1
    - Dst: auto::size
      Src: /src/pdns/pdns/test-ixfr_cc.cc:235,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 236
      start: 227
    functionDepth: 0
    functionLinenumber: 227
    functionLinenumberEnd: 236
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-ixfr_cc.cc
    functionUses: 0
    functionsReached:
    - processIXFRRecords
    - BOOST_CHECK_EQUAL
    - DNSRecordContent::make
    - std::dynamic_pointer_cast<SOARecordContent>
    - auto::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_ixfr_invalid_no_records)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: addRecordToList
      Src: /src/pdns/pdns/test-ixfr_cc.cc:244,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ixfr_cc.cc:244,1
    - Dst: processIXFRRecords
      Src: /src/pdns/pdns/test-ixfr_cc.cc:246,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-ixfr_cc.cc:247,1
    - Dst: auto::size
      Src: /src/pdns/pdns/test-ixfr_cc.cc:247,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 248
      start: 238
    functionDepth: 0
    functionLinenumber: 238
    functionLinenumberEnd: 248
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-ixfr_cc.cc
    functionUses: 0
    functionsReached:
    - addRecordToList
    - processIXFRRecords
    - BOOST_CHECK_EQUAL
    - DNSName
    - auto::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_ixfr_invalid_no_primary_soa)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/test-ixfr_cc.cc:254,1
    - Dst: addRecordToList
      Src: /src/pdns/pdns/test-ixfr_cc.cc:256,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ixfr_cc.cc:256,1
    - Dst: addRecordToList
      Src: /src/pdns/pdns/test-ixfr_cc.cc:257,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ixfr_cc.cc:257,1
    - Dst: addRecordToList
      Src: /src/pdns/pdns/test-ixfr_cc.cc:258,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ixfr_cc.cc:258,1
    - Dst: addRecordToList
      Src: /src/pdns/pdns/test-ixfr_cc.cc:259,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ixfr_cc.cc:259,1
    - Dst: addRecordToList
      Src: /src/pdns/pdns/test-ixfr_cc.cc:260,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ixfr_cc.cc:260,1
    - Dst: addRecordToList
      Src: /src/pdns/pdns/test-ixfr_cc.cc:261,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ixfr_cc.cc:261,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-ixfr_cc.cc:263,1
    - Dst: processIXFRRecords
      Src: /src/pdns/pdns/test-ixfr_cc.cc:263,1
    - Dst: std::dynamic_pointer_cast<SOARecordContent>
      Src: /src/pdns/pdns/test-ixfr_cc.cc:263,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 264
      start: 250
    functionDepth: 0
    functionLinenumber: 250
    functionLinenumberEnd: 264
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-ixfr_cc.cc
    functionUses: 0
    functionsReached:
    - addRecordToList
    - processIXFRRecords
    - DNSName
    - DNSRecordContent::make
    - BOOST_CHECK_THROW
    - std::dynamic_pointer_cast<SOARecordContent>
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_ixfr_invalid_no_trailing_soa)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/test-ixfr_cc.cc:270,1
    - Dst: addRecordToList
      Src: /src/pdns/pdns/test-ixfr_cc.cc:272,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ixfr_cc.cc:272,1
    - Dst: addRecordToList
      Src: /src/pdns/pdns/test-ixfr_cc.cc:273,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ixfr_cc.cc:273,1
    - Dst: addRecordToList
      Src: /src/pdns/pdns/test-ixfr_cc.cc:274,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ixfr_cc.cc:274,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-ixfr_cc.cc:276,1
    - Dst: processIXFRRecords
      Src: /src/pdns/pdns/test-ixfr_cc.cc:276,1
    - Dst: std::dynamic_pointer_cast<SOARecordContent>
      Src: /src/pdns/pdns/test-ixfr_cc.cc:276,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 277
      start: 266
    functionDepth: 0
    functionLinenumber: 266
    functionLinenumberEnd: 277
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-ixfr_cc.cc
    functionUses: 0
    functionsReached:
    - addRecordToList
    - processIXFRRecords
    - DNSName
    - DNSRecordContent::make
    - BOOST_CHECK_THROW
    - std::dynamic_pointer_cast<SOARecordContent>
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_ixfr_invalid_no_soa_after_removals)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/test-ixfr_cc.cc:283,1
    - Dst: addRecordToList
      Src: /src/pdns/pdns/test-ixfr_cc.cc:285,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ixfr_cc.cc:285,1
    - Dst: addRecordToList
      Src: /src/pdns/pdns/test-ixfr_cc.cc:286,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ixfr_cc.cc:286,1
    - Dst: addRecordToList
      Src: /src/pdns/pdns/test-ixfr_cc.cc:287,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ixfr_cc.cc:287,1
    - Dst: addRecordToList
      Src: /src/pdns/pdns/test-ixfr_cc.cc:288,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ixfr_cc.cc:288,1
    - Dst: addRecordToList
      Src: /src/pdns/pdns/test-ixfr_cc.cc:289,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ixfr_cc.cc:289,1
    - Dst: addRecordToList
      Src: /src/pdns/pdns/test-ixfr_cc.cc:290,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ixfr_cc.cc:290,1
    - Dst: addRecordToList
      Src: /src/pdns/pdns/test-ixfr_cc.cc:291,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ixfr_cc.cc:291,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-ixfr_cc.cc:293,1
    - Dst: processIXFRRecords
      Src: /src/pdns/pdns/test-ixfr_cc.cc:293,1
    - Dst: std::dynamic_pointer_cast<SOARecordContent>
      Src: /src/pdns/pdns/test-ixfr_cc.cc:293,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 294
      start: 279
    functionDepth: 0
    functionLinenumber: 279
    functionLinenumberEnd: 294
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-ixfr_cc.cc
    functionUses: 0
    functionsReached:
    - addRecordToList
    - processIXFRRecords
    - DNSName
    - DNSRecordContent::make
    - BOOST_CHECK_THROW
    - std::dynamic_pointer_cast<SOARecordContent>
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_ixfr_mismatching_serial_before_and_after_additions)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/test-ixfr_cc.cc:300,1
    - Dst: addRecordToList
      Src: /src/pdns/pdns/test-ixfr_cc.cc:302,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ixfr_cc.cc:302,1
    - Dst: addRecordToList
      Src: /src/pdns/pdns/test-ixfr_cc.cc:303,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ixfr_cc.cc:303,1
    - Dst: addRecordToList
      Src: /src/pdns/pdns/test-ixfr_cc.cc:304,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ixfr_cc.cc:304,1
    - Dst: addRecordToList
      Src: /src/pdns/pdns/test-ixfr_cc.cc:305,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ixfr_cc.cc:305,1
    - Dst: addRecordToList
      Src: /src/pdns/pdns/test-ixfr_cc.cc:306,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ixfr_cc.cc:306,1
    - Dst: addRecordToList
      Src: /src/pdns/pdns/test-ixfr_cc.cc:307,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ixfr_cc.cc:307,1
    - Dst: addRecordToList
      Src: /src/pdns/pdns/test-ixfr_cc.cc:308,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ixfr_cc.cc:308,1
    - Dst: addRecordToList
      Src: /src/pdns/pdns/test-ixfr_cc.cc:309,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ixfr_cc.cc:309,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-ixfr_cc.cc:311,1
    - Dst: processIXFRRecords
      Src: /src/pdns/pdns/test-ixfr_cc.cc:311,1
    - Dst: std::dynamic_pointer_cast<SOARecordContent>
      Src: /src/pdns/pdns/test-ixfr_cc.cc:311,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 312
      start: 296
    functionDepth: 0
    functionLinenumber: 296
    functionLinenumberEnd: 312
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-ixfr_cc.cc
    functionUses: 0
    functionsReached:
    - addRecordToList
    - processIXFRRecords
    - DNSName
    - DNSRecordContent::make
    - BOOST_CHECK_THROW
    - std::dynamic_pointer_cast<SOARecordContent>
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_ixfr_trailing_record_after_end)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: set
      Src: /src/pdns/pdns/ws-auth.cc:60,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 60
    functionDepth: 0
    functionLinenumber: 60
    functionLinenumberEnd: 60
    functionName: Ewma::Ewma
    functionSourceFile: /src/pdns/pdns/ws-auth.cc
    functionUses: 0
    functionsReached:
    - set
    linkageType: ''
    returnType: void
    signature: void Ewma::Ewma()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: udiff
      Src: /src/pdns/pdns/ws-auth.cc:65,1
    - Dst: set
      Src: /src/pdns/pdns/ws-auth.cc:66,1
    - Dst: max
      Src: /src/pdns/pdns/ws-auth.cc:71,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - val
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 62
    functionDepth: 1
    functionLinenumber: 62
    functionLinenumberEnd: 74
    functionName: Ewma::submit
    functionSourceFile: /src/pdns/pdns/ws-auth.cc
    functionUses: 0
    functionsReached:
    - max
    - udiff
    - set
    linkageType: ''
    returnType: void
    signature: void Ewma::submit(int val)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 76
    functionDepth: 0
    functionLinenumber: 76
    functionLinenumberEnd: 79
    functionName: Ewma::get10
    functionSourceFile: /src/pdns/pdns/ws-auth.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: double
    signature: double Ewma::get10() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 81
    functionDepth: 0
    functionLinenumber: 81
    functionLinenumberEnd: 84
    functionName: Ewma::get5
    functionSourceFile: /src/pdns/pdns/ws-auth.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: double
    signature: double Ewma::get5() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 86
    functionDepth: 0
    functionLinenumber: 86
    functionLinenumberEnd: 89
    functionName: Ewma::get1
    functionSourceFile: /src/pdns/pdns/ws-auth.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: double
    signature: double Ewma::get1() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 91
    functionDepth: 0
    functionLinenumber: 91
    functionLinenumberEnd: 94
    functionName: Ewma::getMax
    functionSourceFile: /src/pdns/pdns/ws-auth.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: double
    signature: double Ewma::getMax() const
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: time
      Src: /src/pdns/pdns/ws-auth.cc:99,1
    - Dst: arg
      Src: /src/pdns/pdns/ws-auth.cc:102,1
    - Dst: arg
      Src: /src/pdns/pdns/ws-auth.cc:102,1
    - Dst: std::make_unique<WebServer>
      Src: /src/pdns/pdns/ws-auth.cc:103,1
    - Dst: std::make_shared<ConcurrentConnectionManager>
      Src: /src/pdns/pdns/ws-auth.cc:103,1
    - Dst: arg
      Src: /src/pdns/pdns/ws-auth.cc:103,1
    - Dst: arg
      Src: /src/pdns/pdns/ws-auth.cc:103,1
    - Dst: arg
      Src: /src/pdns/pdns/ws-auth.cc:103,1
    - Dst: setSLog
      Src: /src/pdns/pdns/ws-auth.cc:105,1
    - Dst: withName
      Src: /src/pdns/pdns/ws-auth.cc:105,1
    - Dst: setApiKey
      Src: /src/pdns/pdns/ws-auth.cc:108,1
    - Dst: arg
      Src: /src/pdns/pdns/ws-auth.cc:108,1
    - Dst: arg
      Src: /src/pdns/pdns/ws-auth.cc:108,1
    - Dst: setPassword
      Src: /src/pdns/pdns/ws-auth.cc:109,1
    - Dst: arg
      Src: /src/pdns/pdns/ws-auth.cc:109,1
    - Dst: arg
      Src: /src/pdns/pdns/ws-auth.cc:109,1
    - Dst: setLogLevel
      Src: /src/pdns/pdns/ws-auth.cc:110,1
    - Dst: arg
      Src: /src/pdns/pdns/ws-auth.cc:110,1
    - Dst: NetmaskGroup::NetmaskGroup
      Src: /src/pdns/pdns/ws-auth.cc:112,1
    - Dst: NetmaskGroup::toMasks
      Src: /src/pdns/pdns/ws-auth.cc:113,1
    - Dst: arg
      Src: /src/pdns/pdns/ws-auth.cc:113,1
    - Dst: setACL
      Src: /src/pdns/pdns/ws-auth.cc:114,1
    - Dst: setMaxBodySize
      Src: /src/pdns/pdns/ws-auth.cc:116,1
    - Dst: arg
      Src: /src/pdns/pdns/ws-auth.cc:116,1
    - Dst: setConnectionTimeout
      Src: /src/pdns/pdns/ws-auth.cc:117,1
    - Dst: arg
      Src: /src/pdns/pdns/ws-auth.cc:117,1
    - Dst: setCrossOriginRequestHeader
      Src: /src/pdns/pdns/ws-auth.cc:119,1
    - Dst: arg
      Src: /src/pdns/pdns/ws-auth.cc:119,1
    - Dst: bind
      Src: /src/pdns/pdns/ws-auth.cc:120,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 122
      start: 98
    functionDepth: 0
    functionLinenumber: 98
    functionLinenumberEnd: 122
    functionName: AuthWebServer::AuthWebServer
    functionSourceFile: /src/pdns/pdns/ws-auth.cc
    functionUses: 1
    functionsReached:
    - setCrossOriginRequestHeader
    - NetmaskGroup::NetmaskGroup
    - withName
    - time
    - setSLog
    - setApiKey
    - bind
    - setACL
    - setPassword
    - NetmaskGroup::toMasks
    - setLogLevel
    - setConnectionTimeout
    - std::make_shared<ConcurrentConnectionManager>
    - std::make_unique<WebServer>
    - setMaxBodySize
    - arg
    linkageType: ''
    returnType: void
    signature: void AuthWebServer::AuthWebServer()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dns_random
      Src: /src/pdns/pdns/ws-auth.cc:128,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/ws-auth.cc:128,1
    - Dst: std::array::size
      Src: /src/pdns/pdns/ws-auth.cc:128,1
    - Dst: Base64Encode
      Src: /src/pdns/pdns/ws-auth.cc:129,1
    - Dst: std::string
      Src: /src/pdns/pdns/ws-auth.cc:129,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/ws-auth.cc:129,1
    - Dst: std::array::size
      Src: /src/pdns/pdns/ws-auth.cc:129,1
    - Dst: doRings
      Src: /src/pdns/pdns/ws-auth.cc:130,1
    - Dst: AuthWebServer::webThread
      Src: /src/pdns/pdns/ws-auth.cc:131,1
    - Dst: std::thread::detach
      Src: /src/pdns/pdns/ws-auth.cc:132,1
    - Dst: AuthWebServer::statThread
      Src: /src/pdns/pdns/ws-auth.cc:133,1
    - Dst: std::thread::detach
      Src: /src/pdns/pdns/ws-auth.cc:134,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 2
    argNames:
    - slog
    - ' stats'
    argTypes:
    - Logr::log_t
    - StatBag
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 135
      start: 124
    functionDepth: 1
    functionLinenumber: 124
    functionLinenumberEnd: 135
    functionName: AuthWebServer::go
    functionSourceFile: /src/pdns/pdns/ws-auth.cc
    functionUses: 1
    functionsReached:
    - AuthWebServer::webThread
    - dns_random
    - AuthWebServer::statThread
    - doRings
    - std::thread::detach
    - std::string
    - std::array::data
    - std::array::size
    - Base64Encode
    linkageType: ''
    returnType: void
    signature: void AuthWebServer::go(Logr::log_t slog, StatBag& stats)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: setThreadName
      Src: /src/pdns/pdns/ws-auth.cc:140,1
    - Dst: submit
      Src: /src/pdns/pdns/ws-auth.cc:142,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/ws-auth.cc:142,1
    - Dst: read
      Src: /src/pdns/pdns/ws-auth.cc:142,1
    - Dst: submit
      Src: /src/pdns/pdns/ws-auth.cc:143,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/ws-auth.cc:143,1
    - Dst: read
      Src: /src/pdns/pdns/ws-auth.cc:143,1
    - Dst: submit
      Src: /src/pdns/pdns/ws-auth.cc:144,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/ws-auth.cc:144,1
    - Dst: read
      Src: /src/pdns/pdns/ws-auth.cc:144,1
    - Dst: submit
      Src: /src/pdns/pdns/ws-auth.cc:145,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/ws-auth.cc:145,1
    - Dst: read
      Src: /src/pdns/pdns/ws-auth.cc:145,1
    - Dst: submit
      Src: /src/pdns/pdns/ws-auth.cc:146,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/ws-auth.cc:146,1
    - Dst: read
      Src: /src/pdns/pdns/ws-auth.cc:146,1
    - Dst: Utility::sleep
      Src: /src/pdns/pdns/ws-auth.cc:147,1
    - Dst: SLOG
      Src: /src/pdns/pdns/ws-auth.cc:151,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/ws-auth.cc:152,1
    - Dst: _exit
      Src: /src/pdns/pdns/ws-auth.cc:153,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 2
    argNames:
    - slog
    - ' stats'
    argTypes:
    - Logr::log_t
    - StatBag
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 137
    functionDepth: 0
    functionLinenumber: 137
    functionLinenumberEnd: 155
    functionName: AuthWebServer::statThread
    functionSourceFile: /src/pdns/pdns/ws-auth.cc
    functionUses: 1
    functionsReached:
    - SLOG
    - read
    - Logr::log_t::info
    - _exit
    - submit
    - Utility::sleep
    - setThreadName
    - static_cast<int>
    linkageType: ''
    returnType: void
    signature: void AuthWebServer::statThread(Logr::log_t slog, StatBag& stats)
  - BBCount: 6
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 1
    argNames:
    - ' inputString'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 179
      start: 157
    functionDepth: 0
    functionLinenumber: 157
    functionLinenumberEnd: 179
    functionName: htmlescape
    functionSourceFile: /src/pdns/pdns/ws-auth.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: string
    signature: string htmlescape(const string& inputString)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: getRing
      Src: /src/pdns/pdns/ws-auth.cc:185,1
    - Dst: htmlescape
      Src: /src/pdns/pdns/ws-auth.cc:196,1
    - Dst: htmlescape
      Src: /src/pdns/pdns/ws-auth.cc:197,1
    - Dst: htmlescape
      Src: /src/pdns/pdns/ws-auth.cc:204,1
    - Dst: htmlescape
      Src: /src/pdns/pdns/ws-auth.cc:208,1
    - Dst: htmlescape
      Src: /src/pdns/pdns/ws-auth.cc:209,1
    - Dst: getRingSize
      Src: /src/pdns/pdns/ws-auth.cc:214,1
    - Dst: std::max
      Src: /src/pdns/pdns/ws-auth.cc:226,1
    - Dst: vector::begin
      Src: /src/pdns/pdns/ws-auth.cc:227,1
    - Dst: vector::end
      Src: /src/pdns/pdns/ws-auth.cc:227,1
    - Dst: htmlescape
      Src: /src/pdns/pdns/ws-auth.cc:228,1
    - Dst: AuthWebServer::makePercentage
      Src: /src/pdns/pdns/ws-auth.cc:228,1
    - Dst: AuthWebServer::makePercentage
      Src: /src/pdns/pdns/ws-auth.cc:233,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 41
    argCount: 4
    argNames:
    - ' ret'
    - ' ringname'
    - ' unique'
    - ' title'
    argTypes:
    - ostringstream
    - string
    - std::string
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 238
      start: 181
    functionDepth: 1
    functionLinenumber: 181
    functionLinenumberEnd: 238
    functionName: printtable
    functionSourceFile: /src/pdns/pdns/ws-auth.cc
    functionUses: 0
    functionsReached:
    - vector::begin
    - AuthWebServer::makePercentage
    - getRing
    - vector::end
    - getRingSize
    - std::max
    - htmlescape
    linkageType: ''
    returnType: void
    signature: void printtable(ostringstream& ret, const string& ringname, const std::string&
      unique, const string& title, int limit = 10)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getEntries
      Src: /src/pdns/pdns/ws-auth.cc:244,1
    - Dst: read
      Src: /src/pdns/pdns/ws-auth.cc:246,1
    - Dst: getDescrip
      Src: /src/pdns/pdns/ws-auth.cc:246,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ' ret'
    argTypes:
    - ostringstream
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 250
      start: 240
    functionDepth: 0
    functionLinenumber: 240
    functionLinenumberEnd: 250
    functionName: printvars
    functionSourceFile: /src/pdns/pdns/ws-auth.cc
    functionUses: 0
    functionsReached:
    - read
    - getDescrip
    - getEntries
    linkageType: ''
    returnType: void
    signature: void printvars(ostringstream& ret)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: arg
      Src: /src/pdns/pdns/ws-auth.cc:256,1
    - Dst: arg
      Src: /src/pdns/pdns/ws-auth.cc:258,1
    - Dst: arg
      Src: /src/pdns/pdns/ws-auth.cc:258,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ' ret'
    argTypes:
    - ostringstream
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 260
      start: 252
    functionDepth: 0
    functionLinenumber: 252
    functionLinenumberEnd: 260
    functionName: printargs
    functionSourceFile: /src/pdns/pdns/ws-auth.cc
    functionUses: 0
    functionsReached:
    - arg
    linkageType: ''
    returnType: void
    signature: void printargs(ostringstream& ret)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: boost::format
      Src: /src/pdns/pdns/ws-auth.cc:264,1
    - Dst: str
      Src: /src/pdns/pdns/ws-auth.cc:264,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' val'
    argTypes:
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 265
      start: 262
    functionDepth: 0
    functionLinenumber: 262
    functionLinenumberEnd: 265
    functionName: AuthWebServer::makePercentage
    functionSourceFile: /src/pdns/pdns/ws-auth.cc
    functionUses: 1
    functionsReached:
    - str
    - boost::format
    linkageType: ''
    returnType: string
    signature: string AuthWebServer::makePercentage(const double& val)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: htmlescape
      Src: /src/pdns/pdns/ws-auth.cc:279,1
    - Dst: arg
      Src: /src/pdns/pdns/ws-auth.cc:280,1
    - Dst: empty
      Src: /src/pdns/pdns/ws-auth.cc:280,1
    - Dst: htmlescape
      Src: /src/pdns/pdns/ws-auth.cc:281,1
    - Dst: arg
      Src: /src/pdns/pdns/ws-auth.cc:281,1
    - Dst: time
      Src: /src/pdns/pdns/ws-auth.cc:287,1
    - Dst: humanDuration
      Src: /src/pdns/pdns/ws-auth.cc:289,1
    - Dst: std::setprecision
      Src: /src/pdns/pdns/ws-auth.cc:291,1
    - Dst: get1
      Src: /src/pdns/pdns/ws-auth.cc:291,1
    - Dst: get5
      Src: /src/pdns/pdns/ws-auth.cc:291,1
    - Dst: get10
      Src: /src/pdns/pdns/ws-auth.cc:291,1
    - Dst: getMax
      Src: /src/pdns/pdns/ws-auth.cc:291,1
    - Dst: get10
      Src: /src/pdns/pdns/ws-auth.cc:293,1
    - Dst: get10
      Src: /src/pdns/pdns/ws-auth.cc:293,1
    - Dst: AuthWebServer::makePercentage
      Src: /src/pdns/pdns/ws-auth.cc:294,1
    - Dst: get1
      Src: /src/pdns/pdns/ws-auth.cc:294,1
    - Dst: get1
      Src: /src/pdns/pdns/ws-auth.cc:294,1
    - Dst: get1
      Src: /src/pdns/pdns/ws-auth.cc:294,1
    - Dst: AuthWebServer::makePercentage
      Src: /src/pdns/pdns/ws-auth.cc:294,1
    - Dst: get5
      Src: /src/pdns/pdns/ws-auth.cc:294,1
    - Dst: get5
      Src: /src/pdns/pdns/ws-auth.cc:294,1
    - Dst: get5
      Src: /src/pdns/pdns/ws-auth.cc:294,1
    - Dst: AuthWebServer::makePercentage
      Src: /src/pdns/pdns/ws-auth.cc:294,1
    - Dst: get10
      Src: /src/pdns/pdns/ws-auth.cc:294,1
    - Dst: get10
      Src: /src/pdns/pdns/ws-auth.cc:294,1
    - Dst: get10
      Src: /src/pdns/pdns/ws-auth.cc:294,1
    - Dst: get10
      Src: /src/pdns/pdns/ws-auth.cc:297,1
    - Dst: get10
      Src: /src/pdns/pdns/ws-auth.cc:297,1
    - Dst: std::setprecision
      Src: /src/pdns/pdns/ws-auth.cc:298,1
    - Dst: AuthWebServer::makePercentage
      Src: /src/pdns/pdns/ws-auth.cc:298,1
    - Dst: get1
      Src: /src/pdns/pdns/ws-auth.cc:298,1
    - Dst: get1
      Src: /src/pdns/pdns/ws-auth.cc:298,1
    - Dst: get1
      Src: /src/pdns/pdns/ws-auth.cc:298,1
    - Dst: AuthWebServer::makePercentage
      Src: /src/pdns/pdns/ws-auth.cc:298,1
    - Dst: get5
      Src: /src/pdns/pdns/ws-auth.cc:298,1
    - Dst: get5
      Src: /src/pdns/pdns/ws-auth.cc:298,1
    - Dst: get5
      Src: /src/pdns/pdns/ws-auth.cc:298,1
    - Dst: AuthWebServer::makePercentage
      Src: /src/pdns/pdns/ws-auth.cc:298,1
    - Dst: get10
      Src: /src/pdns/pdns/ws-auth.cc:298,1
    - Dst: get10
      Src: /src/pdns/pdns/ws-auth.cc:298,1
    - Dst: get10
      Src: /src/pdns/pdns/ws-auth.cc:298,1
    - Dst: std::setprecision
      Src: /src/pdns/pdns/ws-auth.cc:301,1
    - Dst: get1
      Src: /src/pdns/pdns/ws-auth.cc:301,1
    - Dst: get5
      Src: /src/pdns/pdns/ws-auth.cc:301,1
    - Dst: get10
      Src: /src/pdns/pdns/ws-auth.cc:301,1
    - Dst: getMax
      Src: /src/pdns/pdns/ws-auth.cc:301,1
    - Dst: read
      Src: /src/pdns/pdns/ws-auth.cc:303,1
    - Dst: static_cast<double>
      Src: /src/pdns/pdns/ws-auth.cc:303,1
    - Dst: read
      Src: /src/pdns/pdns/ws-auth.cc:303,1
    - Dst: empty
      Src: /src/pdns/pdns/ws-auth.cc:305,1
    - Dst: listRings
      Src: /src/pdns/pdns/ws-auth.cc:306,1
    - Dst: printtable
      Src: /src/pdns/pdns/ws-auth.cc:308,1
    - Dst: getRingTitle
      Src: /src/pdns/pdns/ws-auth.cc:308,1
    - Dst: printvars
      Src: /src/pdns/pdns/ws-auth.cc:311,1
    - Dst: arg
      Src: /src/pdns/pdns/ws-auth.cc:312,1
    - Dst: printargs
      Src: /src/pdns/pdns/ws-auth.cc:313,1
    - Dst: ringExists
      Src: /src/pdns/pdns/ws-auth.cc:316,1
    - Dst: printtable
      Src: /src/pdns/pdns/ws-auth.cc:317,1
    - Dst: getRingTitle
      Src: /src/pdns/pdns/ws-auth.cc:317,1
    - Dst: fullVersionString
      Src: /src/pdns/pdns/ws-auth.cc:321,1
    - Dst: ostringstream::str
      Src: /src/pdns/pdns/ws-auth.cc:324,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 41
    argCount: 2
    argNames:
    - req
    - resp
    argTypes:
    - HttpRequest*
    - HttpResponse*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 326
      start: 267
    functionDepth: 2
    functionLinenumber: 267
    functionLinenumberEnd: 326
    functionName: AuthWebServer::indexGET
    functionSourceFile: /src/pdns/pdns/ws-auth.cc
    functionUses: 0
    functionsReached:
    - printtable
    - listRings
    - static_cast<double>
    - time
    - getRingTitle
    - get5
    - std::setprecision
    - getMax
    - empty
    - AuthWebServer::makePercentage
    - ringExists
    - get1
    - ostringstream::str
    - fullVersionString
    - htmlescape
    - arg
    - printvars
    - get10
    - read
    - humanDuration
    - printargs
    linkageType: ''
    returnType: void
    signature: void AuthWebServer::indexGET(HttpRequest* req, HttpResponse* resp)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: HttpForbiddenException
      Src: /src/pdns/pdns/ws-auth.cc:332,1
    - Dst: string::empty
      Src: /src/pdns/pdns/ws-auth.cc:336,1
    - Dst: ringExists
      Src: /src/pdns/pdns/ws-auth.cc:337,1
    - Dst: resetRing
      Src: /src/pdns/pdns/ws-auth.cc:338,1
    - Dst: string::empty
      Src: /src/pdns/pdns/ws-auth.cc:346,1
    - Dst: std::stoi
      Src: /src/pdns/pdns/ws-auth.cc:347,1
    - Dst: ringExists
      Src: /src/pdns/pdns/ws-auth.cc:348,1
    - Dst: getRingSize
      Src: /src/pdns/pdns/ws-auth.cc:348,1
    - Dst: static_cast<unsigned int>
      Src: /src/pdns/pdns/ws-auth.cc:348,1
    - Dst: resizeRing
      Src: /src/pdns/pdns/ws-auth.cc:349,1
    - Dst: HttpForbiddenException
      Src: /src/pdns/pdns/ws-auth.cc:356,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 22
    argCount: 2
    argNames:
    - req
    - resp
    argTypes:
    - HttpRequest*
    - HttpResponse*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 357
      start: 328
    functionDepth: 0
    functionLinenumber: 328
    functionLinenumberEnd: 357
    functionName: AuthWebServer::indexPOST
    functionSourceFile: /src/pdns/pdns/ws-auth.cc
    functionUses: 0
    functionsReached:
    - resetRing
    - string::empty
    - ringExists
    - static_cast<unsigned int>
    - HttpForbiddenException
    - getRingSize
    - std::stoi
    - resizeRing
    linkageType: ''
    returnType: void
    signature: void AuthWebServer::indexPOST(HttpRequest* req, HttpResponse* resp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/ws-auth.cc:363,1
    - Dst: getCode
      Src: /src/pdns/pdns/ws-auth.cc:363,1
    - Dst: auto::getZoneRepresentation
      Src: /src/pdns/pdns/ws-auth.cc:364,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' qtype'
    - ' content'
    - noDot
    argTypes:
    - QType
    - string
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 365
      start: 360
    functionDepth: 0
    functionLinenumber: 360
    functionLinenumberEnd: 365
    functionName: makeRecordContent
    functionSourceFile: /src/pdns/pdns/ws-auth.cc
    functionUses: 0
    functionsReached:
    - auto::getZoneRepresentation
    - DNSRecordContent::make
    - getCode
    linkageType: ''
    returnType: string
    signature: string makeRecordContent(const QType& qtype, const string& content,
      bool noDot)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeRecordContent
      Src: /src/pdns/pdns/ws-auth.cc:370,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' qtype'
    - ' content'
    argTypes:
    - QType
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 371
      start: 368
    functionDepth: 1
    functionLinenumber: 368
    functionLinenumberEnd: 371
    functionName: makeApiRecordContent
    functionSourceFile: /src/pdns/pdns/ws-auth.cc
    functionUses: 0
    functionsReached:
    - makeRecordContent
    linkageType: ''
    returnType: string
    signature: string makeApiRecordContent(const QType& qtype, const string& content)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeRecordContent
      Src: /src/pdns/pdns/ws-auth.cc:376,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' qtype'
    - ' content'
    argTypes:
    - QType
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 377
      start: 374
    functionDepth: 1
    functionLinenumber: 374
    functionLinenumberEnd: 377
    functionName: makeBackendRecordContent
    functionSourceFile: /src/pdns/pdns/ws-auth.cc
    functionUses: 0
    functionsReached:
    - makeRecordContent
    linkageType: ''
    returnType: string
    signature: string makeBackendRecordContent(const QType& qtype, const string& content)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: apiZoneNameToId
      Src: /src/pdns/pdns/ws-auth.cc:381,1
    - Dst: vector::reserve
      Src: /src/pdns/pdns/ws-auth.cc:383,1
    - Dst: primaries::size
      Src: /src/pdns/pdns/ws-auth.cc:383,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/ws-auth.cc:385,1
    - Dst: toStringWithPortExcept
      Src: /src/pdns/pdns/ws-auth.cc:385,1
    - Dst: zone::toString
      Src: /src/pdns/pdns/ws-auth.cc:392,1
    - Dst: getKindString
      Src: /src/pdns/pdns/ws-auth.cc:393,1
    - Dst: catalog::empty
      Src: /src/pdns/pdns/ws-auth.cc:394,1
    - Dst: catalog::toString
      Src: /src/pdns/pdns/ws-auth.cc:394,1
    - Dst: std::move
      Src: /src/pdns/pdns/ws-auth.cc:396,1
    - Dst: DNSSECKeeper*::isSecuredZone
      Src: /src/pdns/pdns/ws-auth.cc:401,1
    - Dst: DNSSECKeeper*::getSoaEdit
      Src: /src/pdns/pdns/ws-auth.cc:403,1
    - Dst: calculateEditSOA
      Src: /src/pdns/pdns/ws-auth.cc:404,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 3
    argNames:
    - ' domainInfo'
    - dnssecKeeper
    - slog
    argTypes:
    - DomainInfo
    - DNSSECKeeper*
    - Logr::log_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 407
      start: 379
    functionDepth: 2
    functionLinenumber: 379
    functionLinenumberEnd: 407
    functionName: getZoneInfo
    functionSourceFile: /src/pdns/pdns/ws-auth.cc
    functionUses: 0
    functionsReached:
    - DNSSECKeeper*::isSecuredZone
    - std::move
    - vector::push_back
    - primaries::size
    - zone::toString
    - DNSSECKeeper*::getSoaEdit
    - calculateEditSOA
    - catalog::toString
    - catalog::empty
    - getKindString
    - vector::reserve
    - toStringWithPortExcept
    - apiZoneNameToId
    linkageType: ''
    returnType: Json::object
    signature: Json::object getZoneInfo(const DomainInfo& domainInfo, DNSSECKeeper*
      dnssecKeeper, Logr::log_t slog)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: HttpRequest*::getvars::count
      Src: /src/pdns/pdns/ws-auth.cc:411,1
    - Dst: ApiException
      Src: /src/pdns/pdns/ws-auth.cc:418,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 2
    argNames:
    - req
    - ' var'
    argTypes:
    - HttpRequest*
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 419
      start: 409
    functionDepth: 0
    functionLinenumber: 409
    functionLinenumberEnd: 419
    functionName: boolFromHttpRequest
    functionSourceFile: /src/pdns/pdns/ws-auth.cc
    functionUses: 0
    functionsReached:
    - HttpRequest*::getvars::count
    - ApiException
    linkageType: ''
    returnType: bool
    signature: bool boolFromHttpRequest(HttpRequest* req, const std::string& var)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: getDomainInfo
      Src: /src/pdns/pdns/ws-auth.cc:425,1
    - Dst: HttpNotFoundException
      Src: /src/pdns/pdns/ws-auth.cc:426,1
    - Dst: getZoneInfo
      Src: /src/pdns/pdns/ws-auth.cc:430,1
    - Dst: DomainInfo::backend::getDomainMetadataOne
      Src: /src/pdns/pdns/ws-auth.cc:433,1
    - Dst: DomainInfo::backend::getDomainMetadataOne
      Src: /src/pdns/pdns/ws-auth.cc:436,1
    - Dst: DNSSECKeeper::isSecuredZone
      Src: /src/pdns/pdns/ws-auth.cc:441,1
    - Dst: DomainInfo::backend::getDomainMetadataOne
      Src: /src/pdns/pdns/ws-auth.cc:443,1
    - Dst: DomainInfo::backend::getDomainMetadataOne
      Src: /src/pdns/pdns/ws-auth.cc:445,1
    - Dst: DomainInfo::backend::getDomainMetadataOne
      Src: /src/pdns/pdns/ws-auth.cc:455,1
    - Dst: DomainInfo::backend::getDomainMetadata
      Src: /src/pdns/pdns/ws-auth.cc:461,1
    - Dst: DomainInfo::backend::getDomainMetadata
      Src: /src/pdns/pdns/ws-auth.cc:462,1
    - Dst: Json::array::emplace_back
      Src: /src/pdns/pdns/ws-auth.cc:466,1
    - Dst: apiNameToId
      Src: /src/pdns/pdns/ws-auth.cc:466,1
    - Dst: Json::array::emplace_back
      Src: /src/pdns/pdns/ws-auth.cc:472,1
    - Dst: apiNameToId
      Src: /src/pdns/pdns/ws-auth.cc:472,1
    - Dst: boolFromHttpRequest
      Src: /src/pdns/pdns/ws-auth.cc:480,1
    - Dst: DNSName::DNSName
      Src: /src/pdns/pdns/ws-auth.cc:485,1
    - Dst: HttpRequest*::getvars::count
      Src: /src/pdns/pdns/ws-auth.cc:490,1
    - Dst: DomainInfo::backend::list
      Src: /src/pdns/pdns/ws-auth.cc:491,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/ws-auth.cc:491,1
    - Dst: DNSName
      Src: /src/pdns/pdns/ws-auth.cc:494,1
    - Dst: HttpRequest*::getvars::count
      Src: /src/pdns/pdns/ws-auth.cc:495,1
    - Dst: boolFromHttpRequest
      Src: /src/pdns/pdns/ws-auth.cc:498,1
    - Dst: DomainInfo::backend::APILookup
      Src: /src/pdns/pdns/ws-auth.cc:499,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/ws-auth.cc:499,1
    - Dst: DomainInfo::backend::get
      Src: /src/pdns/pdns/ws-auth.cc:501,1
    - Dst: DNSResourceRecord::qtype::getCode
      Src: /src/pdns/pdns/ws-auth.cc:502,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/ws-auth.cc:505,1
    - Dst: sort
      Src: /src/pdns/pdns/ws-auth.cc:507,1
    - Dst: vector::begin
      Src: /src/pdns/pdns/ws-auth.cc:507,1
    - Dst: vector::end
      Src: /src/pdns/pdns/ws-auth.cc:507,1
    - Dst: DomainInfo::backend::listComments
      Src: /src/pdns/pdns/ws-auth.cc:524,1
    - Dst: DomainInfo::backend::getComment
      Src: /src/pdns/pdns/ws-auth.cc:525,1
    - Dst: DNSName::empty
      Src: /src/pdns/pdns/ws-auth.cc:526,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/ws-auth.cc:527,1
    - Dst: sort
      Src: /src/pdns/pdns/ws-auth.cc:530,1
    - Dst: vector::begin
      Src: /src/pdns/pdns/ws-auth.cc:530,1
    - Dst: vector::end
      Src: /src/pdns/pdns/ws-auth.cc:530,1
    - Dst: DNSName::DNSName
      Src: /src/pdns/pdns/ws-auth.cc:548,1
    - Dst: QType::QType
      Src: /src/pdns/pdns/ws-auth.cc:549,1
    - Dst: vector::begin
      Src: /src/pdns/pdns/ws-auth.cc:551,1
    - Dst: vector::begin
      Src: /src/pdns/pdns/ws-auth.cc:552,1
    - Dst: vector::end
      Src: /src/pdns/pdns/ws-auth.cc:554,1
    - Dst: vector::end
      Src: /src/pdns/pdns/ws-auth.cc:554,1
    - Dst: vector::end
      Src: /src/pdns/pdns/ws-auth.cc:556,1
    - Dst: vector::end
      Src: /src/pdns/pdns/ws-auth.cc:556,1
    - Dst: vector::end
      Src: /src/pdns/pdns/ws-auth.cc:567,1
    - Dst: min
      Src: /src/pdns/pdns/ws-auth.cc:568,1
    - Dst: makeApiRecordContent
      Src: /src/pdns/pdns/ws-auth.cc:571,1
    - Dst: ApiException
      Src: /src/pdns/pdns/ws-auth.cc:579,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/ws-auth.cc:579,1
    - Dst: what
      Src: /src/pdns/pdns/ws-auth.cc:579,1
    - Dst: Json::array::push_back
      Src: /src/pdns/pdns/ws-auth.cc:587,1
    - Dst: vector::end
      Src: /src/pdns/pdns/ws-auth.cc:590,1
    - Dst: Json::array::push_back
      Src: /src/pdns/pdns/ws-auth.cc:591,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/ws-auth.cc:598,1
    - Dst: QType::toString
      Src: /src/pdns/pdns/ws-auth.cc:599,1
    - Dst: Json::array::emplace_back
      Src: /src/pdns/pdns/ws-auth.cc:603,1
    - Dst: Json::object::clear
      Src: /src/pdns/pdns/ws-auth.cc:604,1
    - Dst: Json::array::clear
      Src: /src/pdns/pdns/ws-auth.cc:605,1
    - Dst: Json::array::clear
      Src: /src/pdns/pdns/ws-auth.cc:606,1
    - Dst: HttpResponse*::setJsonBody
      Src: /src/pdns/pdns/ws-auth.cc:612,1
    CyclomaticComplexity: 37
    EdgeCount: 37
    ICount: 111
    argCount: 4
    argNames:
    - ' backend'
    - ' zonename'
    - resp
    - req
    argTypes:
    - UeberBackend
    - ZoneName
    - HttpResponse*
    - HttpRequest*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 613
      start: 421
    functionDepth: 3
    functionLinenumber: 421
    functionLinenumberEnd: 613
    functionName: fillZone
    functionSourceFile: /src/pdns/pdns/ws-auth.cc
    functionUses: 0
    functionsReached:
    - DNSSECKeeper::isSecuredZone
    - apiNameToId
    - ApiException
    - HttpResponse*::setJsonBody
    - Json::array::push_back
    - DNSName::toString
    - sort
    - DomainInfo::backend::getDomainMetadata
    - static_cast<int>
    - HttpRequest*::getvars::count
    - vector::begin
    - HttpNotFoundException
    - DomainInfo::backend::getDomainMetadataOne
    - getZoneInfo
    - makeApiRecordContent
    - Json::array::clear
    - min
    - vector::push_back
    - DomainInfo::backend::get
    - QType::toString
    - DNSName
    - vector::end
    - DomainInfo::backend::list
    - Json::array::emplace_back
    - Json::object::clear
    - DNSResourceRecord::qtype::getCode
    - DNSName::empty
    - getDomainInfo
    - boolFromHttpRequest
    - DomainInfo::backend::APILookup
    - QType::QType
    - what
    - DomainInfo::backend::listComments
    - DNSName::DNSName
    - DomainInfo::backend::getComment
    linkageType: ''
    returnType: void
    signature: void fillZone(UeberBackend& backend, const ZoneName& zonename, HttpResponse*
      resp, HttpRequest* req)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getEntries
      Src: /src/pdns/pdns/ws-auth.cc:617,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/ws-auth.cc:619,1
    - Dst: read
      Src: /src/pdns/pdns/ws-auth.cc:619,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/ws-auth.cc:623,1
    - Dst: time
      Src: /src/pdns/pdns/ws-auth.cc:623,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ' out'
    argTypes:
    - map<string, string>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 624
      start: 615
    functionDepth: 0
    functionLinenumber: 615
    functionLinenumberEnd: 624
    functionName: productServerStatisticsFetch
    functionSourceFile: /src/pdns/pdns/ws-auth.cc
    functionUses: 1
    functionsReached:
    - read
    - getEntries
    - std::to_string
    - time
    linkageType: ''
    returnType: void
    signature: void productServerStatisticsFetch(map<string, string>& out)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: read
      Src: /src/pdns/pdns/ws-auth.cc:630,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - ' name'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 635
      start: 626
    functionDepth: 0
    functionLinenumber: 626
    functionLinenumberEnd: 635
    functionName: productServerStatisticsFetch
    functionSourceFile: /src/pdns/pdns/ws-auth.cc
    functionUses: 1
    functionsReached:
    - read
    linkageType: ''
    returnType: std::optional<uint64_t>
    signature: std::optional<uint64_t> productServerStatisticsFetch(const std::string&
      name)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: qtype::getCode
      Src: /src/pdns/pdns/ws-auth.cc:639,1
    - Dst: qtype::getCode
      Src: /src/pdns/pdns/ws-auth.cc:639,1
    - Dst: ApiException
      Src: /src/pdns/pdns/ws-auth.cc:640,1
    - Dst: qname::toString
      Src: /src/pdns/pdns/ws-auth.cc:640,1
    - Dst: qtype::toString
      Src: /src/pdns/pdns/ws-auth.cc:640,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 4
    argCount: 1
    argNames:
    - ' resourceRecord'
    argTypes:
    - DNSResourceRecord
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 642
      start: 637
    functionDepth: 0
    functionLinenumber: 637
    functionLinenumberEnd: 642
    functionName: validateGatheredRRType
    functionSourceFile: /src/pdns/pdns/ws-auth.cc
    functionUses: 0
    functionsReached:
    - qtype::getCode
    - qname::toString
    - qtype::toString
    - ApiException
    linkageType: ''
    returnType: void
    signature: void validateGatheredRRType(const DNSResourceRecord& resourceRecord)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: boost::trim_right
      Src: /src/pdns/pdns/ws-auth.cc:655,1
    - Dst: boost::trim_left
      Src: /src/pdns/pdns/ws-auth.cc:656,1
    - Dst: std::string_view::size
      Src: /src/pdns/pdns/ws-auth.cc:659,1
    - Dst: parseRFC1035CharStringRelaxed
      Src: /src/pdns/pdns/ws-auth.cc:665,1
    - Dst: std::string_view::substr
      Src: /src/pdns/pdns/ws-auth.cc:665,1
    - Dst: static_cast<unsigned char>
      Src: /src/pdns/pdns/ws-auth.cc:670,1
    - Dst: ApiException
      Src: /src/pdns/pdns/ws-auth.cc:671,1
    - Dst: std::stringstream::str
      Src: /src/pdns/pdns/ws-auth.cc:671,1
    - Dst: std::string
      Src: /src/pdns/pdns/ws-auth.cc:671,1
    - Dst: ApiException
      Src: /src/pdns/pdns/ws-auth.cc:674,1
    - Dst: std::string
      Src: /src/pdns/pdns/ws-auth.cc:674,1
    - Dst: std::string
      Src: /src/pdns/pdns/ws-auth.cc:674,1
    - Dst: std::setfill
      Src: /src/pdns/pdns/ws-auth.cc:687,1
    - Dst: std::setw
      Src: /src/pdns/pdns/ws-auth.cc:687,1
    - Dst: static_cast<unsigned int>
      Src: /src/pdns/pdns/ws-auth.cc:687,1
    - Dst: std::setw
      Src: /src/pdns/pdns/ws-auth.cc:687,1
    - Dst: std::isspace
      Src: /src/pdns/pdns/ws-auth.cc:695,1
    - Dst: static_cast<unsigned char>
      Src: /src/pdns/pdns/ws-auth.cc:695,1
    - Dst: std::isspace
      Src: /src/pdns/pdns/ws-auth.cc:696,1
    - Dst: static_cast<unsigned char>
      Src: /src/pdns/pdns/ws-auth.cc:696,1
    - Dst: std::ostringstream::str
      Src: /src/pdns/pdns/ws-auth.cc:702,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 33
    argCount: 1
    argNames:
    - ' jsonContent'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 703
      start: 649
    functionDepth: 0
    functionLinenumber: 649
    functionLinenumberEnd: 703
    functionName: normalizeJsonString
    functionSourceFile: /src/pdns/pdns/ws-auth.cc
    functionUses: 0
    functionsReached:
    - std::string_view::substr
    - std::ostringstream::str
    - std::setfill
    - std::setw
    - ApiException
    - std::string_view::size
    - std::stringstream::str
    - parseRFC1035CharStringRelaxed
    - static_cast<unsigned int>
    - boost::trim_right
    - std::isspace
    - std::string
    - boost::trim_left
    - static_cast<unsigned char>
    linkageType: ''
    returnType: std::string
    signature: std::string normalizeJsonString(const std::string& jsonContent)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: validateGatheredRRType
      Src: /src/pdns/pdns/ws-auth.cc:713,1
    - Dst: array_items
      Src: /src/pdns/pdns/ws-auth.cc:714,1
    - Dst: stringFromJson
      Src: /src/pdns/pdns/ws-auth.cc:716,1
    - Dst: DNSResourceRecord::qtype::getCode
      Src: /src/pdns/pdns/ws-auth.cc:717,1
    - Dst: normalizeJsonString
      Src: /src/pdns/pdns/ws-auth.cc:722,1
    - Dst: object_items
      Src: /src/pdns/pdns/ws-auth.cc:725,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/ws-auth.cc:726,1
    - Dst: is_null
      Src: /src/pdns/pdns/ws-auth.cc:729,1
    - Dst: boolFromJson
      Src: /src/pdns/pdns/ws-auth.cc:730,1
    - Dst: DNSResourceRecord::qtype::getCode
      Src: /src/pdns/pdns/ws-auth.cc:735,1
    - Dst: makeApiRecordContent
      Src: /src/pdns/pdns/ws-auth.cc:736,1
    - Dst: pdns_iequals
      Src: /src/pdns/pdns/ws-auth.cc:737,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/ws-auth.cc:738,1
    - Dst: inet_pton
      Src: /src/pdns/pdns/ws-auth.cc:743,1
    - Dst: string::c_str
      Src: /src/pdns/pdns/ws-auth.cc:743,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/ws-auth.cc:744,1
    - Dst: makeBackendRecordContent
      Src: /src/pdns/pdns/ws-auth.cc:747,1
    - Dst: ApiException
      Src: /src/pdns/pdns/ws-auth.cc:750,1
    - Dst: DNSResourceRecord::qname::toString
      Src: /src/pdns/pdns/ws-auth.cc:750,1
    - Dst: DNSResourceRecord::qtype::toString
      Src: /src/pdns/pdns/ws-auth.cc:750,1
    - Dst: what
      Src: /src/pdns/pdns/ws-auth.cc:750,1
    - Dst: push_back
      Src: /src/pdns/pdns/ws-auth.cc:753,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 36
    argCount: 5
    argNames:
    - ' container'
    - ' qname'
    - ' qtype'
    - ttl
    - ' new_records'
    argTypes:
    - Json
    - DNSName
    - QType
    - uint32_t
    - vector<DNSResourceRecord>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 755
      start: 705
    functionDepth: 2
    functionLinenumber: 705
    functionLinenumberEnd: 755
    functionName: gatherRecords
    functionSourceFile: /src/pdns/pdns/ws-auth.cc
    functionUses: 0
    functionsReached:
    - inet_pton
    - ApiException
    - stringFromJson
    - DNSResourceRecord::qtype::toString
    - normalizeJsonString
    - makeApiRecordContent
    - array_items
    - string::c_str
    - std::runtime_error
    - DNSResourceRecord::qname::toString
    - pdns_iequals
    - push_back
    - DNSResourceRecord::qtype::getCode
    - validateGatheredRRType
    - object_items
    - is_null
    - makeBackendRecordContent
    - what
    - boolFromJson
    linkageType: ''
    returnType: void
    signature: void gatherRecords(const Json& container, const DNSName& qname, const
      QType& qtype, const uint32_t ttl, vector<DNSResourceRecord>& new_records)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: time
      Src: /src/pdns/pdns/ws-auth.cc:763,1
    - Dst: array_items
      Src: /src/pdns/pdns/ws-auth.cc:764,1
    - Dst: uintFromJson
      Src: /src/pdns/pdns/ws-auth.cc:766,1
    - Dst: stringFromJson
      Src: /src/pdns/pdns/ws-auth.cc:767,1
    - Dst: stringFromJson
      Src: /src/pdns/pdns/ws-auth.cc:768,1
    - Dst: push_back
      Src: /src/pdns/pdns/ws-auth.cc:769,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 4
    argNames:
    - ' container'
    - ' qname'
    - ' qtype'
    - ' new_comments'
    argTypes:
    - Json
    - DNSName
    - QType
    - vector<Comment>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 771
      start: 757
    functionDepth: 0
    functionLinenumber: 757
    functionLinenumberEnd: 771
    functionName: gatherComments
    functionSourceFile: /src/pdns/pdns/ws-auth.cc
    functionUses: 0
    functionsReached:
    - stringFromJson
    - uintFromJson
    - time
    - push_back
    - array_items
    linkageType: ''
    returnType: void
    signature: void gatherComments(const Json& container, const DNSName& qname, const
      QType& qtype, vector<Comment>& new_comments)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: DNSSEC::shorthand2algorithm
      Src: /src/pdns/pdns/ws-auth.cc:775,1
    - Dst: arg
      Src: /src/pdns/pdns/ws-auth.cc:775,1
    - Dst: DNSSEC::shorthand2algorithm
      Src: /src/pdns/pdns/ws-auth.cc:776,1
    - Dst: arg
      Src: /src/pdns/pdns/ws-auth.cc:776,1
    - Dst: arg
      Src: /src/pdns/pdns/ws-auth.cc:777,1
    - Dst: arg
      Src: /src/pdns/pdns/ws-auth.cc:778,1
    - Dst: arg
      Src: /src/pdns/pdns/ws-auth.cc:781,1
    - Dst: empty
      Src: /src/pdns/pdns/ws-auth.cc:781,1
    - Dst: ApiException
      Src: /src/pdns/pdns/ws-auth.cc:783,1
    - Dst: arg
      Src: /src/pdns/pdns/ws-auth.cc:783,1
    - Dst: ApiException
      Src: /src/pdns/pdns/ws-auth.cc:786,1
    - Dst: arg
      Src: /src/pdns/pdns/ws-auth.cc:786,1
    - Dst: arg
      Src: /src/pdns/pdns/ws-auth.cc:790,1
    - Dst: empty
      Src: /src/pdns/pdns/ws-auth.cc:790,1
    - Dst: ApiException
      Src: /src/pdns/pdns/ws-auth.cc:792,1
    - Dst: arg
      Src: /src/pdns/pdns/ws-auth.cc:792,1
    - Dst: ApiException
      Src: /src/pdns/pdns/ws-auth.cc:795,1
    - Dst: arg
      Src: /src/pdns/pdns/ws-auth.cc:795,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 798
      start: 773
    functionDepth: 0
    functionLinenumber: 773
    functionLinenumberEnd: 798
    functionName: checkDefaultDNSSECAlgos
    functionSourceFile: /src/pdns/pdns/ws-auth.cc
    functionUses: 0
    functionsReached:
    - empty
    - DNSSEC::shorthand2algorithm
    - arg
    - ApiException
    linkageType: ''
    returnType: void
    signature: void checkDefaultDNSSECAlgos()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ApiException
      Src: /src/pdns/pdns/ws-auth.cc:802,1
    - Dst: toString
      Src: /src/pdns/pdns/ws-auth.cc:802,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - ' zonename'
    argTypes:
    - ZoneName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 804
      start: 800
    functionDepth: 0
    functionLinenumber: 800
    functionLinenumberEnd: 804
    functionName: throwUnableToSecure
    functionSourceFile: /src/pdns/pdns/ws-auth.cc
    functionUses: 0
    functionsReached:
    - toString
    - ApiException
    linkageType: ''
    returnType: void
    signature: void throwUnableToSecure(const ZoneName& zonename)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: checkDefaultDNSSECAlgos
      Src: /src/pdns/pdns/ws-auth.cc:811,1
    - Dst: DNSSEC::shorthand2algorithm
      Src: /src/pdns/pdns/ws-auth.cc:812,1
    - Dst: arg
      Src: /src/pdns/pdns/ws-auth.cc:812,1
    - Dst: DNSSEC::shorthand2algorithm
      Src: /src/pdns/pdns/ws-auth.cc:813,1
    - Dst: arg
      Src: /src/pdns/pdns/ws-auth.cc:813,1
    - Dst: arg
      Src: /src/pdns/pdns/ws-auth.cc:814,1
    - Dst: arg
      Src: /src/pdns/pdns/ws-auth.cc:815,1
    - Dst: addKey
      Src: /src/pdns/pdns/ws-auth.cc:819,1
    - Dst: throwUnableToSecure
      Src: /src/pdns/pdns/ws-auth.cc:820,1
    - Dst: addKey
      Src: /src/pdns/pdns/ws-auth.cc:826,1
    - Dst: throwUnableToSecure
      Src: /src/pdns/pdns/ws-auth.cc:827,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 2
    argNames:
    - ' dnssecKeeper'
    - ' zonename'
    argTypes:
    - DNSSECKeeper
    - ZoneName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 830
      start: 809
    functionDepth: 1
    functionLinenumber: 809
    functionLinenumberEnd: 830
    functionName: addDefaultDNSSECKeys
    functionSourceFile: /src/pdns/pdns/ws-auth.cc
    functionUses: 0
    functionsReached:
    - addKey
    - checkDefaultDNSSECAlgos
    - throwUnableToSecure
    - DNSSEC::shorthand2algorithm
    - arg
    linkageType: ''
    returnType: void
    signature: void addDefaultDNSSECKeys(DNSSECKeeper& dnssecKeeper, const ZoneName&
      zonename)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: backend::getDomainMetadataOne
      Src: /src/pdns/pdns/ws-auth.cc:835,1
    - Dst: string::empty
      Src: /src/pdns/pdns/ws-auth.cc:836,1
    - Dst: arg
      Src: /src/pdns/pdns/ws-auth.cc:836,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - ' domainInfo'
    argTypes:
    - DomainInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 840
      start: 832
    functionDepth: 0
    functionLinenumber: 832
    functionLinenumberEnd: 840
    functionName: isZoneApiRectifyEnabled
    functionSourceFile: /src/pdns/pdns/ws-auth.cc
    functionUses: 0
    functionsReached:
    - backend::getDomainMetadataOne
    - arg
    - string::empty
    linkageType: ''
    returnType: bool
    signature: bool isZoneApiRectifyEnabled(const DomainInfo& domainInfo)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: is_string
      Src: /src/pdns/pdns/ws-auth.cc:844,1
    - Dst: stringToKind
      Src: /src/pdns/pdns/ws-auth.cc:845,1
    - Dst: stringFromJson
      Src: /src/pdns/pdns/ws-auth.cc:845,1
    - Dst: is_array
      Src: /src/pdns/pdns/ws-auth.cc:851,1
    - Dst: vector<ComboAddress>
      Src: /src/pdns/pdns/ws-auth.cc:852,1
    - Dst: array_items
      Src: /src/pdns/pdns/ws-auth.cc:853,1
    - Dst: string_value
      Src: /src/pdns/pdns/ws-auth.cc:854,1
    - Dst: string::empty
      Src: /src/pdns/pdns/ws-auth.cc:855,1
    - Dst: ApiException
      Src: /src/pdns/pdns/ws-auth.cc:856,1
    - Dst: emplace_back
      Src: /src/pdns/pdns/ws-auth.cc:859,1
    - Dst: ApiException
      Src: /src/pdns/pdns/ws-auth.cc:862,1
    - Dst: is_string
      Src: /src/pdns/pdns/ws-auth.cc:870,1
    - Dst: string_value
      Src: /src/pdns/pdns/ws-auth.cc:871,1
    - Dst: string::empty
      Src: /src/pdns/pdns/ws-auth.cc:872,1
    - Dst: ZoneName
      Src: /src/pdns/pdns/ws-auth.cc:872,1
    - Dst: ZoneName
      Src: /src/pdns/pdns/ws-auth.cc:872,1
    - Dst: is_string
      Src: /src/pdns/pdns/ws-auth.cc:878,1
    - Dst: string_value
      Src: /src/pdns/pdns/ws-auth.cc:879,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 30
    argCount: 5
    argNames:
    - ' document'
    - ' kind'
    - ' primaries'
    - ' catalog'
    - ' account'
    argTypes:
    - Json
    - std::optional<DomainInfo::DomainKind>
    - std::optional<vector<ComboAddress>>
    - std::optional<ZoneName>
    - std::optional<string>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 884
      start: 842
    functionDepth: 0
    functionLinenumber: 842
    functionLinenumberEnd: 884
    functionName: extractDomainInfoFromDocument
    functionSourceFile: /src/pdns/pdns/ws-auth.cc
    functionUses: 0
    functionsReached:
    - is_string
    - vector<ComboAddress>
    - stringToKind
    - string_value
    - stringFromJson
    - string::empty
    - ApiException
    - is_array
    - emplace_back
    - ZoneName
    - array_items
    linkageType: ''
    returnType: void
    signature: void extractDomainInfoFromDocument(const Json& document, std::optional<DomainInfo::DomainKind>&
      kind, std::optional<vector<ComboAddress>>& primaries, std::optional<ZoneName>&
      catalog, std::optional<string>& account)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: array_items
      Src: /src/pdns/pdns/ws-auth.cc:893,1
    - Dst: apiZoneIdToName
      Src: /src/pdns/pdns/ws-auth.cc:894,1
    - Dst: string_value
      Src: /src/pdns/pdns/ws-auth.cc:894,1
    - Dst: DNSName::DNSName
      Src: /src/pdns/pdns/ws-auth.cc:895,1
    - Dst: getTSIGKey
      Src: /src/pdns/pdns/ws-auth.cc:897,1
    - Dst: ApiException
      Src: /src/pdns/pdns/ws-auth.cc:898,1
    - Dst: DNSName::toLogString
      Src: /src/pdns/pdns/ws-auth.cc:898,1
    - Dst: push_back
      Src: /src/pdns/pdns/ws-auth.cc:900,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/ws-auth.cc:900,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 3
    argNames:
    - ' backend'
    - ' jsonArray'
    - ' metadata'
    argTypes:
    - UeberBackend
    - Json
    - vector<string>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 902
      start: 891
    functionDepth: 0
    functionLinenumber: 891
    functionLinenumberEnd: 902
    functionName: extractJsonTSIGKeyIds
    functionSourceFile: /src/pdns/pdns/ws-auth.cc
    functionUses: 0
    functionsReached:
    - apiZoneIdToName
    - getTSIGKey
    - string_value
    - push_back
    - ApiException
    - DNSName::toString
    - DNSName::toLogString
    - DNSName::DNSName
    - array_items
    linkageType: ''
    returnType: void
    signature: void extractJsonTSIGKeyIds(UeberBackend& backend, const Json& jsonArray,
      vector<string>& metadata)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: makeIncreasedSOARecord
      Src: /src/pdns/pdns/ws-auth.cc:909,1
    - Dst: backend::replaceRRSet
      Src: /src/pdns/pdns/ws-auth.cc:910,1
    - Dst: vector<DNSResourceRecord>
      Src: /src/pdns/pdns/ws-auth.cc:910,1
    - Dst: ApiException
      Src: /src/pdns/pdns/ws-auth.cc:911,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 5
    argNames:
    - ' domainInfo'
    - ' soaData'
    - ' increaseKind'
    - ' editKind'
    - slog
    argTypes:
    - DomainInfo
    - SOAData
    - std::string
    - std::string
    - Logr::log_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 914
      start: 905
    functionDepth: 4
    functionLinenumber: 905
    functionLinenumberEnd: 914
    functionName: updateZoneSerial
    functionSourceFile: /src/pdns/pdns/ws-auth.cc
    functionUses: 0
    functionsReached:
    - ApiException
    - backend::replaceRRSet
    - makeIncreasedSOARecord
    - vector<DNSResourceRecord>
    linkageType: ''
    returnType: void
    signature: void updateZoneSerial(DomainInfo& domainInfo, SOAData& soaData, const
      std::string& increaseKind, const std::string& editKind, Logr::log_t slog)
  - BBCount: 30
    BranchProfiles: []
    Callsites:
    - Dst: extractDomainInfoFromDocument
      Src: /src/pdns/pdns/ws-auth.cc:924,1
    - Dst: backend::setKind
      Src: /src/pdns/pdns/ws-auth.cc:927,1
    - Dst: backend::setPrimaries
      Src: /src/pdns/pdns/ws-auth.cc:931,1
    - Dst: backend::setCatalog
      Src: /src/pdns/pdns/ws-auth.cc:934,1
    - Dst: backend::setAccount
      Src: /src/pdns/pdns/ws-auth.cc:937,1
    - Dst: is_string
      Src: /src/pdns/pdns/ws-auth.cc:940,1
    - Dst: backend::setDomainMetadataOne
      Src: /src/pdns/pdns/ws-auth.cc:941,1
    - Dst: string_value
      Src: /src/pdns/pdns/ws-auth.cc:941,1
    - Dst: is_string
      Src: /src/pdns/pdns/ws-auth.cc:943,1
    - Dst: backend::setDomainMetadataOne
      Src: /src/pdns/pdns/ws-auth.cc:944,1
    - Dst: string_value
      Src: /src/pdns/pdns/ws-auth.cc:944,1
    - Dst: boolFromJson
      Src: /src/pdns/pdns/ws-auth.cc:947,1
    - Dst: backend::setDomainMetadataOne
      Src: /src/pdns/pdns/ws-auth.cc:948,1
    - Dst: boolFromJson
      Src: /src/pdns/pdns/ws-auth.cc:962,1
    - Dst: stringFromJson
      Src: /src/pdns/pdns/ws-auth.cc:969,1
    - Dst: DNSSECKeeper::isSecuredZone
      Src: /src/pdns/pdns/ws-auth.cc:975,1
    - Dst: DNSSECKeeper::isPresigned
      Src: /src/pdns/pdns/ws-auth.cc:976,1
    - Dst: addDefaultDNSSECKeys
      Src: /src/pdns/pdns/ws-auth.cc:981,1
    - Dst: DNSSECKeeper::isSecuredZone
      Src: /src/pdns/pdns/ws-auth.cc:984,1
    - Dst: throwUnableToSecure
      Src: /src/pdns/pdns/ws-auth.cc:987,1
    - Dst: DNSSECKeeper::unSecureZone
      Src: /src/pdns/pdns/ws-auth.cc:998,1
    - Dst: ApiException
      Src: /src/pdns/pdns/ws-auth.cc:999,1
    - Dst: toString
      Src: /src/pdns/pdns/ws-auth.cc:999,1
    - Dst: DNSSECKeeper::isSecuredZone
      Src: /src/pdns/pdns/ws-auth.cc:1001,1
    - Dst: ApiException
      Src: /src/pdns/pdns/ws-auth.cc:1003,1
    - Dst: toString
      Src: /src/pdns/pdns/ws-auth.cc:1003,1
    - Dst: string::empty
      Src: /src/pdns/pdns/ws-auth.cc:1013,1
    - Dst: ApiException
      Src: /src/pdns/pdns/ws-auth.cc:1014,1
    - Dst: toString
      Src: /src/pdns/pdns/ws-auth.cc:1014,1
    - Dst: string::empty
      Src: /src/pdns/pdns/ws-auth.cc:1017,1
    - Dst: DNSSECKeeper::unsetNSEC3PARAM
      Src: /src/pdns/pdns/ws-auth.cc:1019,1
    - Dst: ApiException
      Src: /src/pdns/pdns/ws-auth.cc:1020,1
    - Dst: toString
      Src: /src/pdns/pdns/ws-auth.cc:1020,1
    - Dst: DNSSECKeeper::checkNSEC3PARAM
      Src: /src/pdns/pdns/ws-auth.cc:1027,1
    - Dst: ApiException
      Src: /src/pdns/pdns/ws-auth.cc:1028,1
    - Dst: toString
      Src: /src/pdns/pdns/ws-auth.cc:1028,1
    - Dst: DNSSECKeeper::setNSEC3PARAM
      Src: /src/pdns/pdns/ws-auth.cc:1030,1
    - Dst: boolFromJson
      Src: /src/pdns/pdns/ws-auth.cc:1030,1
    - Dst: ApiException
      Src: /src/pdns/pdns/ws-auth.cc:1031,1
    - Dst: toString
      Src: /src/pdns/pdns/ws-auth.cc:1031,1
    - Dst: isZoneApiRectifyEnabled
      Src: /src/pdns/pdns/ws-auth.cc:1038,1
    - Dst: DNSSECKeeper::rectifyZone
      Src: /src/pdns/pdns/ws-auth.cc:1041,1
    - Dst: isSecondaryType
      Src: /src/pdns/pdns/ws-auth.cc:1041,1
    - Dst: ApiException
      Src: /src/pdns/pdns/ws-auth.cc:1043,1
    - Dst: toString
      Src: /src/pdns/pdns/ws-auth.cc:1043,1
    - Dst: backend::getDomainMetadataOne
      Src: /src/pdns/pdns/ws-auth.cc:1049,1
    - Dst: string::empty
      Src: /src/pdns/pdns/ws-auth.cc:1050,1
    - Dst: getSOAUncached
      Src: /src/pdns/pdns/ws-auth.cc:1052,1
    - Dst: backend::getDomainMetadataOne
      Src: /src/pdns/pdns/ws-auth.cc:1057,1
    - Dst: updateZoneSerial
      Src: /src/pdns/pdns/ws-auth.cc:1059,1
    - Dst: is_null
      Src: /src/pdns/pdns/ws-auth.cc:1063,1
    - Dst: extractJsonTSIGKeyIds
      Src: /src/pdns/pdns/ws-auth.cc:1065,1
    - Dst: backend::setDomainMetadata
      Src: /src/pdns/pdns/ws-auth.cc:1066,1
    - Dst: HttpInternalServerErrorException
      Src: /src/pdns/pdns/ws-auth.cc:1067,1
    - Dst: toString
      Src: /src/pdns/pdns/ws-auth.cc:1067,1
    - Dst: is_null
      Src: /src/pdns/pdns/ws-auth.cc:1070,1
    - Dst: extractJsonTSIGKeyIds
      Src: /src/pdns/pdns/ws-auth.cc:1072,1
    - Dst: vector::size
      Src: /src/pdns/pdns/ws-auth.cc:1073,1
    - Dst: ApiException
      Src: /src/pdns/pdns/ws-auth.cc:1074,1
    - Dst: backend::setDomainMetadata
      Src: /src/pdns/pdns/ws-auth.cc:1076,1
    - Dst: HttpInternalServerErrorException
      Src: /src/pdns/pdns/ws-auth.cc:1077,1
    - Dst: toString
      Src: /src/pdns/pdns/ws-auth.cc:1077,1
    CyclomaticComplexity: 46
    EdgeCount: 46
    ICount: 108
    argCount: 6
    argNames:
    - ' backend'
    - ' domainInfo'
    - ' zonename'
    - ' document'
    - zoneWasModified
    - slog
    argTypes:
    - UeberBackend
    - DomainInfo
    - ZoneName
    - Json
    - bool
    - Logr::log_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1080
      start: 917
    functionDepth: 5
    functionLinenumber: 917
    functionLinenumberEnd: 1080
    functionName: updateDomainSettingsFromDocument
    functionSourceFile: /src/pdns/pdns/ws-auth.cc
    functionUses: 0
    functionsReached:
    - DNSSECKeeper::isSecuredZone
    - toString
    - isSecondaryType
    - backend::getDomainMetadataOne
    - updateZoneSerial
    - addDefaultDNSSECKeys
    - ApiException
    - DNSSECKeeper::rectifyZone
    - getSOAUncached
    - backend::setPrimaries
    - is_string
    - stringFromJson
    - string::empty
    - backend::setDomainMetadataOne
    - extractJsonTSIGKeyIds
    - throwUnableToSecure
    - string_value
    - backend::setDomainMetadata
    - is_null
    - extractDomainInfoFromDocument
    - DNSSECKeeper::unSecureZone
    - DNSSECKeeper::unsetNSEC3PARAM
    - DNSSECKeeper::setNSEC3PARAM
    - DNSSECKeeper::checkNSEC3PARAM
    - HttpInternalServerErrorException
    - backend::setKind
    - backend::setAccount
    - boolFromJson
    - backend::setCatalog
    - vector::size
    - isZoneApiRectifyEnabled
    - DNSSECKeeper::isPresigned
    linkageType: ''
    returnType: void
    signature: void updateDomainSettingsFromDocument(UeberBackend& backend, DomainInfo&
      domainInfo, const ZoneName& zonename, const Json& document, bool zoneWasModified,
      Logr::log_t slog)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: find
      Src: /src/pdns/pdns/ws-auth.cc:1110,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 2
    argNames:
    - ' kind'
    - readonly
    argTypes:
    - string
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1121
      start: 1082
    functionDepth: 0
    functionLinenumber: 1082
    functionLinenumberEnd: 1121
    functionName: isValidMetadataKind
    functionSourceFile: /src/pdns/pdns/ws-auth.cc
    functionUses: 0
    functionsReached:
    - find
    linkageType: ''
    returnType: bool
    signature: bool isValidMetadataKind(const string& kind, bool readonly)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: HttpResponse*::setYamlBody
      Src: /src/pdns/pdns/ws-auth.cc:1130,1
    - Dst: HttpResponse*::setJsonBody
      Src: /src/pdns/pdns/ws-auth.cc:1133,1
    - Dst: HttpResponse*::setPlainBody
      Src: /src/pdns/pdns/ws-auth.cc:1136,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - req
    - resp
    argTypes:
    - HttpRequest*
    - HttpResponse*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1138
      start: 1127
    functionDepth: 0
    functionLinenumber: 1127
    functionLinenumberEnd: 1138
    functionName: apiDocs
    functionSourceFile: /src/pdns/pdns/ws-auth.cc
    functionUses: 0
    functionsReached:
    - HttpResponse*::setYamlBody
    - HttpResponse*::setPlainBody
    - HttpResponse*::setJsonBody
    linkageType: ''
    returnType: void
    signature: void apiDocs(HttpRequest* req, HttpResponse* resp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: apiZoneIdToName
      Src: /src/pdns/pdns/ws-auth.cc:1144,1
    - Dst: getDomainInfo
      Src: /src/pdns/pdns/ws-auth.cc:1148,1
    - Dst: HttpNotFoundException
      Src: /src/pdns/pdns/ws-auth.cc:1149,1
    - Dst: HttpInternalServerErrorException
      Src: /src/pdns/pdns/ws-auth.cc:1153,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 1
    argNames:
    - req
    argTypes:
    - HttpRequest*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1155
      start: 1143
    functionDepth: 0
    functionLinenumber: 1143
    functionLinenumberEnd: 1155
    functionName: ZoneData::ZoneData
    functionSourceFile: /src/pdns/pdns/ws-auth.cc
    functionUses: 0
    functionsReached:
    - apiZoneIdToName
    - HttpNotFoundException
    - HttpInternalServerErrorException
    - getDomainInfo
    linkageType: ''
    returnType: void
    signature: void ZoneData(HttpRequest* req)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ZoneData::backend::getAllDomainMetadata
      Src: /src/pdns/pdns/ws-auth.cc:1170,1
    - Dst: HttpNotFoundException
      Src: /src/pdns/pdns/ws-auth.cc:1171,1
    - Dst: Json::array::emplace_back
      Src: /src/pdns/pdns/ws-auth.cc:1177,1
    - Dst: Json::array::emplace_back
      Src: /src/pdns/pdns/ws-auth.cc:1184,1
    - Dst: HttpResponse*::setJsonBody
      Src: /src/pdns/pdns/ws-auth.cc:1186,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 2
    argNames:
    - req
    - resp
    argTypes:
    - HttpRequest*
    - HttpResponse*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1187
      start: 1163
    functionDepth: 0
    functionLinenumber: 1163
    functionLinenumberEnd: 1187
    functionName: apiZoneMetadataGET
    functionSourceFile: /src/pdns/pdns/ws-auth.cc
    functionUses: 0
    functionsReached:
    - Json::array::emplace_back
    - HttpNotFoundException
    - ZoneData::backend::getAllDomainMetadata
    - HttpResponse*::setJsonBody
    linkageType: ''
    returnType: void
    signature: void apiZoneMetadataGET(HttpRequest* req, HttpResponse* resp)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: HttpRequest*::json
      Src: /src/pdns/pdns/ws-auth.cc:1193,1
    - Dst: stringFromJson
      Src: /src/pdns/pdns/ws-auth.cc:1198,1
    - Dst: ApiException
      Src: /src/pdns/pdns/ws-auth.cc:1201,1
    - Dst: isValidMetadataKind
      Src: /src/pdns/pdns/ws-auth.cc:1204,1
    - Dst: ApiException
      Src: /src/pdns/pdns/ws-auth.cc:1205,1
    - Dst: ZoneData::backend::getDomainMetadata
      Src: /src/pdns/pdns/ws-auth.cc:1210,1
    - Dst: ApiException
      Src: /src/pdns/pdns/ws-auth.cc:1211,1
    - Dst: ZoneData::zoneName::toString
      Src: /src/pdns/pdns/ws-auth.cc:1211,1
    - Dst: is_array
      Src: /src/pdns/pdns/ws-auth.cc:1215,1
    - Dst: ApiException
      Src: /src/pdns/pdns/ws-auth.cc:1216,1
    - Dst: array_items
      Src: /src/pdns/pdns/ws-auth.cc:1219,1
    - Dst: is_string
      Src: /src/pdns/pdns/ws-auth.cc:1220,1
    - Dst: ApiException
      Src: /src/pdns/pdns/ws-auth.cc:1221,1
    - Dst: std::find
      Src: /src/pdns/pdns/ws-auth.cc:1223,1
    - Dst: vector::cbegin
      Src: /src/pdns/pdns/ws-auth.cc:1223,1
    - Dst: vector::cend
      Src: /src/pdns/pdns/ws-auth.cc:1224,1
    - Dst: string_value
      Src: /src/pdns/pdns/ws-auth.cc:1225,1
    - Dst: vector::cend
      Src: /src/pdns/pdns/ws-auth.cc:1226,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/ws-auth.cc:1227,1
    - Dst: string_value
      Src: /src/pdns/pdns/ws-auth.cc:1227,1
    - Dst: ZoneData::backend::setDomainMetadata
      Src: /src/pdns/pdns/ws-auth.cc:1231,1
    - Dst: ApiException
      Src: /src/pdns/pdns/ws-auth.cc:1232,1
    - Dst: ZoneData::zoneName::toString
      Src: /src/pdns/pdns/ws-auth.cc:1232,1
    - Dst: DNSSECKeeper::clearMetaCache
      Src: /src/pdns/pdns/ws-auth.cc:1235,1
    - Dst: Json::array::emplace_back
      Src: /src/pdns/pdns/ws-auth.cc:1239,1
    - Dst: HttpResponse*::setJsonBody
      Src: /src/pdns/pdns/ws-auth.cc:1248,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 30
    argCount: 2
    argNames:
    - req
    - resp
    argTypes:
    - HttpRequest*
    - HttpResponse*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1249
      start: 1189
    functionDepth: 1
    functionLinenumber: 1189
    functionLinenumberEnd: 1249
    functionName: apiZoneMetadataPOST
    functionSourceFile: /src/pdns/pdns/ws-auth.cc
    functionUses: 0
    functionsReached:
    - isValidMetadataKind
    - is_string
    - vector::push_back
    - string_value
    - stringFromJson
    - ZoneData::backend::setDomainMetadata
    - DNSSECKeeper::clearMetaCache
    - ZoneData::backend::getDomainMetadata
    - ApiException
    - HttpResponse*::setJsonBody
    - is_array
    - vector::cend
    - std::find
    - Json::array::emplace_back
    - vector::cbegin
    - HttpRequest*::json
    - array_items
    - ZoneData::zoneName::toString
    linkageType: ''
    returnType: void
    signature: void apiZoneMetadataPOST(HttpRequest* req, HttpResponse* resp)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ZoneData::backend::getDomainMetadata
      Src: /src/pdns/pdns/ws-auth.cc:1261,1
    - Dst: HttpNotFoundException
      Src: /src/pdns/pdns/ws-auth.cc:1262,1
    - Dst: isValidMetadataKind
      Src: /src/pdns/pdns/ws-auth.cc:1264,1
    - Dst: ApiException
      Src: /src/pdns/pdns/ws-auth.cc:1265,1
    - Dst: Json::array::emplace_back
      Src: /src/pdns/pdns/ws-auth.cc:1272,1
    - Dst: HttpResponse*::setJsonBody
      Src: /src/pdns/pdns/ws-auth.cc:1276,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 2
    argNames:
    - req
    - resp
    argTypes:
    - HttpRequest*
    - HttpResponse*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1277
      start: 1251
    functionDepth: 1
    functionLinenumber: 1251
    functionLinenumberEnd: 1277
    functionName: apiZoneMetadataKindGET
    functionSourceFile: /src/pdns/pdns/ws-auth.cc
    functionUses: 0
    functionsReached:
    - isValidMetadataKind
    - HttpNotFoundException
    - ApiException
    - ZoneData::backend::getDomainMetadata
    - HttpResponse*::setJsonBody
    - Json::array::emplace_back
    linkageType: ''
    returnType: void
    signature: void apiZoneMetadataKindGET(HttpRequest* req, HttpResponse* resp)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: HttpRequest*::json
      Src: /src/pdns/pdns/ws-auth.cc:1285,1
    - Dst: isValidMetadataKind
      Src: /src/pdns/pdns/ws-auth.cc:1287,1
    - Dst: ApiException
      Src: /src/pdns/pdns/ws-auth.cc:1288,1
    - Dst: is_array
      Src: /src/pdns/pdns/ws-auth.cc:1293,1
    - Dst: ApiException
      Src: /src/pdns/pdns/ws-auth.cc:1294,1
    - Dst: array_items
      Src: /src/pdns/pdns/ws-auth.cc:1296,1
    - Dst: is_string
      Src: /src/pdns/pdns/ws-auth.cc:1297,1
    - Dst: ApiException
      Src: /src/pdns/pdns/ws-auth.cc:1298,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/ws-auth.cc:1300,1
    - Dst: string_value
      Src: /src/pdns/pdns/ws-auth.cc:1300,1
    - Dst: ZoneData::backend::setDomainMetadata
      Src: /src/pdns/pdns/ws-auth.cc:1303,1
    - Dst: ApiException
      Src: /src/pdns/pdns/ws-auth.cc:1304,1
    - Dst: ZoneData::zoneName::toString
      Src: /src/pdns/pdns/ws-auth.cc:1304,1
    - Dst: DNSSECKeeper::clearMetaCache
      Src: /src/pdns/pdns/ws-auth.cc:1307,1
    - Dst: HttpResponse*::setJsonBody
      Src: /src/pdns/pdns/ws-auth.cc:1314,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 17
    argCount: 2
    argNames:
    - req
    - resp
    argTypes:
    - HttpRequest*
    - HttpResponse*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1315
      start: 1279
    functionDepth: 1
    functionLinenumber: 1279
    functionLinenumberEnd: 1315
    functionName: apiZoneMetadataKindPUT
    functionSourceFile: /src/pdns/pdns/ws-auth.cc
    functionUses: 0
    functionsReached:
    - isValidMetadataKind
    - is_string
    - vector::push_back
    - string_value
    - ZoneData::backend::setDomainMetadata
    - DNSSECKeeper::clearMetaCache
    - ApiException
    - HttpResponse*::setJsonBody
    - is_array
    - HttpRequest*::json
    - array_items
    - ZoneData::zoneName::toString
    linkageType: ''
    returnType: void
    signature: void apiZoneMetadataKindPUT(HttpRequest* req, HttpResponse* resp)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: isValidMetadataKind
      Src: /src/pdns/pdns/ws-auth.cc:1322,1
    - Dst: ApiException
      Src: /src/pdns/pdns/ws-auth.cc:1323,1
    - Dst: ZoneData::backend::setDomainMetadata
      Src: /src/pdns/pdns/ws-auth.cc:1327,1
    - Dst: ApiException
      Src: /src/pdns/pdns/ws-auth.cc:1328,1
    - Dst: ZoneData::zoneName::toString
      Src: /src/pdns/pdns/ws-auth.cc:1328,1
    - Dst: DNSSECKeeper::clearMetaCache
      Src: /src/pdns/pdns/ws-auth.cc:1331,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 2
    argNames:
    - req
    - resp
    argTypes:
    - HttpRequest*
    - HttpResponse*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1333
      start: 1317
    functionDepth: 1
    functionLinenumber: 1317
    functionLinenumberEnd: 1333
    functionName: apiZoneMetadataKindDELETE
    functionSourceFile: /src/pdns/pdns/ws-auth.cc
    functionUses: 0
    functionsReached:
    - isValidMetadataKind
    - ZoneData::backend::setDomainMetadata
    - DNSSECKeeper::clearMetaCache
    - ApiException
    - ZoneData::zoneName::toString
    linkageType: ''
    returnType: void
    signature: void apiZoneMetadataKindDELETE(HttpRequest* req, HttpResponse* resp)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: DNSSECKeeper*::getKeys
      Src: /src/pdns/pdns/ws-auth.cc:1338,1
    - Dst: HttpNotFoundException
      Src: /src/pdns/pdns/ws-auth.cc:1347,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 9
    argCount: 3
    argNames:
    - ' zonename'
    - inquireKeyId
    - dnssecKeeper
    argTypes:
    - ZoneName
    - int
    - DNSSECKeeper*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1349
      start: 1336
    functionDepth: 0
    functionLinenumber: 1336
    functionLinenumberEnd: 1349
    functionName: apiZoneCryptoKeysCheckKeyExists
    functionSourceFile: /src/pdns/pdns/ws-auth.cc
    functionUses: 0
    functionsReached:
    - DNSSECKeeper*::getKeys
    - HttpNotFoundException
    linkageType: ''
    returnType: void
    signature: void apiZoneCryptoKeysCheckKeyExists(const ZoneName& zonename, int
      inquireKeyId, DNSSECKeeper* dnssecKeeper)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: HttpRequest*::parameters::count
      Src: /src/pdns/pdns/ws-auth.cc:1354,1
    - Dst: pdns::checked_stoi_into
      Src: /src/pdns/pdns/ws-auth.cc:1355,1
    - Dst: apiZoneCryptoKeysCheckKeyExists
      Src: /src/pdns/pdns/ws-auth.cc:1356,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - req
    - ' zonename'
    - dnsseckeeper
    argTypes:
    - HttpRequest*
    - ZoneName
    - DNSSECKeeper*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1359
      start: 1351
    functionDepth: 1
    functionLinenumber: 1351
    functionLinenumberEnd: 1359
    functionName: getInquireKeyId
    functionSourceFile: /src/pdns/pdns/ws-auth.cc
    functionUses: 0
    functionsReached:
    - pdns::checked_stoi_into
    - HttpRequest*::parameters::count
    - apiZoneCryptoKeysCheckKeyExists
    linkageType: ''
    returnType: int
    signature: int getInquireKeyId(HttpRequest* req, const ZoneName& zonename, DNSSECKeeper*
      dnsseckeeper)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: DNSSECKeeper*::getKeys
      Src: /src/pdns/pdns/ws-auth.cc:1363,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/ws-auth.cc:1388,1
    - Dst: static_cast<uint16_t>
      Src: /src/pdns/pdns/ws-auth.cc:1392,1
    - Dst: first::getFlags
      Src: /src/pdns/pdns/ws-auth.cc:1392,1
    - Dst: first::getDNSKEY
      Src: /src/pdns/pdns/ws-auth.cc:1393,1
    - Dst: DNSSEC::algorithm2name
      Src: /src/pdns/pdns/ws-auth.cc:1394,1
    - Dst: first::getAlgorithm
      Src: /src/pdns/pdns/ws-auth.cc:1394,1
    - Dst: first::getKey
      Src: /src/pdns/pdns/ws-auth.cc:1395,1
    - Dst: DNSSECKeeper*::getPublishCDS
      Src: /src/pdns/pdns/ws-auth.cc:1398,1
    - Dst: stringtok
      Src: /src/pdns/pdns/ws-auth.cc:1401,1
    - Dst: std::set::insert
      Src: /src/pdns/pdns/ws-auth.cc:1405,1
    - Dst: pdns::checked_stoi<unsigned int>
      Src: /src/pdns/pdns/ws-auth.cc:1405,1
    - Dst: makeDSFromDNSKey
      Src: /src/pdns/pdns/ws-auth.cc:1413,1
    - Dst: first::getDNSKEY
      Src: /src/pdns/pdns/ws-auth.cc:1413,1
    - Dst: Json::array::emplace_back
      Src: /src/pdns/pdns/ws-auth.cc:1415,1
    - Dst: std::set::count
      Src: /src/pdns/pdns/ws-auth.cc:1417,1
    - Dst: Json::array::emplace_back
      Src: /src/pdns/pdns/ws-auth.cc:1418,1
    - Dst: Json::array::empty
      Src: /src/pdns/pdns/ws-auth.cc:1427,1
    - Dst: first::getKey
      Src: /src/pdns/pdns/ws-auth.cc:1433,1
    - Dst: HttpResponse*::setJsonBody
      Src: /src/pdns/pdns/ws-auth.cc:1434,1
    - Dst: Json::array::emplace_back
      Src: /src/pdns/pdns/ws-auth.cc:1437,1
    - Dst: HttpNotFoundException
      Src: /src/pdns/pdns/ws-auth.cc:1442,1
    - Dst: HttpResponse*::setJsonBody
      Src: /src/pdns/pdns/ws-auth.cc:1444,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 44
    argCount: 4
    argNames:
    - ' zonename'
    - inquireKeyId
    - resp
    - dnssec_dk
    argTypes:
    - ZoneName
    - int64_t
    - HttpResponse*
    - DNSSECKeeper*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1445
      start: 1361
    functionDepth: 1
    functionLinenumber: 1361
    functionLinenumberEnd: 1445
    functionName: apiZoneCryptokeysExport
    functionSourceFile: /src/pdns/pdns/ws-auth.cc
    functionUses: 0
    functionsReached:
    - first::getFlags
    - HttpNotFoundException
    - stringtok
    - std::set::count
    - HttpResponse*::setJsonBody
    - DNSSEC::algorithm2name
    - Json::array::emplace_back
    - static_cast<uint16_t>
    - DNSSECKeeper*::getPublishCDS
    - first::getAlgorithm
    - first::getDNSKEY
    - std::set::insert
    - first::getKey
    - DNSSECKeeper*::getKeys
    - pdns::checked_stoi<unsigned int>
    - makeDSFromDNSKey
    - Json::array::empty
    - static_cast<int>
    linkageType: ''
    returnType: void
    signature: void apiZoneCryptokeysExport(const ZoneName& zonename, int64_t inquireKeyId,
      HttpResponse* resp, DNSSECKeeper* dnssec_dk)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getInquireKeyId
      Src: /src/pdns/pdns/ws-auth.cc:1450,1
    - Dst: apiZoneCryptokeysExport
      Src: /src/pdns/pdns/ws-auth.cc:1452,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - req
    - resp
    argTypes:
    - HttpRequest*
    - HttpResponse*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1453
      start: 1447
    functionDepth: 2
    functionLinenumber: 1447
    functionLinenumberEnd: 1453
    functionName: apiZoneCryptokeysGET
    functionSourceFile: /src/pdns/pdns/ws-auth.cc
    functionUses: 0
    functionsReached:
    - apiZoneCryptokeysExport
    - getInquireKeyId
    linkageType: ''
    returnType: void
    signature: void apiZoneCryptokeysGET(HttpRequest* req, HttpResponse* resp)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: domainInfo::isSecondaryType
      Src: /src/pdns/pdns/ws-auth.cc:1462,1
    - Dst: UeberBackend::UeberBackend
      Src: /src/pdns/pdns/ws-auth.cc:1463,1
    - Dst: UeberBackend::getSOAUncached
      Src: /src/pdns/pdns/ws-auth.cc:1465,1
    - Dst: domainInfo::backend::getDomainMetadataOne
      Src: /src/pdns/pdns/ws-auth.cc:1471,1
    - Dst: domainInfo::backend::getDomainMetadataOne
      Src: /src/pdns/pdns/ws-auth.cc:1472,1
    - Dst: domainInfo::backend::startTransaction
      Src: /src/pdns/pdns/ws-auth.cc:1473,1
    - Dst: updateZoneSerial
      Src: /src/pdns/pdns/ws-auth.cc:1474,1
    - Dst: domainInfo::backend::commitTransaction
      Src: /src/pdns/pdns/ws-auth.cc:1475,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - ' zoneData'
    - slog
    argTypes:
    - ZoneData
    - Logr::log_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1478
      start: 1458
    functionDepth: 5
    functionLinenumber: 1458
    functionLinenumberEnd: 1478
    functionName: apiZoneCryptokeysPostProcessing
    functionSourceFile: /src/pdns/pdns/ws-auth.cc
    functionUses: 0
    functionsReached:
    - domainInfo::isSecondaryType
    - domainInfo::backend::getDomainMetadataOne
    - updateZoneSerial
    - domainInfo::backend::commitTransaction
    - UeberBackend::UeberBackend
    - UeberBackend::getSOAUncached
    - domainInfo::backend::startTransaction
    linkageType: ''
    returnType: void
    signature: void apiZoneCryptokeysPostProcessing(ZoneData& zoneData, Logr::log_t
      slog)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: getInquireKeyId
      Src: /src/pdns/pdns/ws-auth.cc:1494,1
    - Dst: HttpBadRequestException
      Src: /src/pdns/pdns/ws-auth.cc:1497,1
    - Dst: ZoneData::dnssecKeeper::removeKey
      Src: /src/pdns/pdns/ws-auth.cc:1500,1
    - Dst: apiZoneCryptokeysPostProcessing
      Src: /src/pdns/pdns/ws-auth.cc:1501,1
    - Dst: HttpResponse*::setErrorResult
      Src: /src/pdns/pdns/ws-auth.cc:1506,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - req
    - resp
    argTypes:
    - HttpRequest*
    - HttpResponse*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1508
      start: 1491
    functionDepth: 6
    functionLinenumber: 1491
    functionLinenumberEnd: 1508
    functionName: apiZoneCryptokeysDELETE
    functionSourceFile: /src/pdns/pdns/ws-auth.cc
    functionUses: 0
    functionsReached:
    - ZoneData::dnssecKeeper::removeKey
    - getInquireKeyId
    - apiZoneCryptokeysPostProcessing
    - HttpResponse*::setErrorResult
    - HttpBadRequestException
    linkageType: ''
    returnType: void
    signature: void apiZoneCryptokeysDELETE(HttpRequest* req, HttpResponse* resp)
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: HttpRequest*::json
      Src: /src/pdns/pdns/ws-auth.cc:1550,1
    - Dst: auto::is_null
      Src: /src/pdns/pdns/ws-auth.cc:1553,1
    - Dst: boolFromJson
      Src: /src/pdns/pdns/ws-auth.cc:1558,1
    - Dst: boolFromJson
      Src: /src/pdns/pdns/ws-auth.cc:1559,1
    - Dst: stringFromJson
      Src: /src/pdns/pdns/ws-auth.cc:1562,1
    - Dst: stringFromJson
      Src: /src/pdns/pdns/ws-auth.cc:1562,1
    - Dst: stringFromJson
      Src: /src/pdns/pdns/ws-auth.cc:1565,1
    - Dst: ApiException
      Src: /src/pdns/pdns/ws-auth.cc:1569,1
    - Dst: stringFromJson
      Src: /src/pdns/pdns/ws-auth.cc:1569,1
    - Dst: auto::is_null
      Src: /src/pdns/pdns/ws-auth.cc:1574,1
    - Dst: arg
      Src: /src/pdns/pdns/ws-auth.cc:1575,1
    - Dst: arg
      Src: /src/pdns/pdns/ws-auth.cc:1575,1
    - Dst: auto::is_null
      Src: /src/pdns/pdns/ws-auth.cc:1577,1
    - Dst: auto::is_number
      Src: /src/pdns/pdns/ws-auth.cc:1578,1
    - Dst: fmod
      Src: /src/pdns/pdns/ws-auth.cc:1578,1
    - Dst: auto::number_value
      Src: /src/pdns/pdns/ws-auth.cc:1578,1
    - Dst: auto::int_value
      Src: /src/pdns/pdns/ws-auth.cc:1578,1
    - Dst: ApiException
      Src: /src/pdns/pdns/ws-auth.cc:1579,1
    - Dst: auto::int_value
      Src: /src/pdns/pdns/ws-auth.cc:1582,1
    - Dst: DNSSEC::shorthand2algorithm
      Src: /src/pdns/pdns/ws-auth.cc:1584,1
    - Dst: arg
      Src: /src/pdns/pdns/ws-auth.cc:1584,1
    - Dst: arg
      Src: /src/pdns/pdns/ws-auth.cc:1584,1
    - Dst: is_string
      Src: /src/pdns/pdns/ws-auth.cc:1586,1
    - Dst: DNSSEC::shorthand2algorithm
      Src: /src/pdns/pdns/ws-auth.cc:1587,1
    - Dst: string_value
      Src: /src/pdns/pdns/ws-auth.cc:1587,1
    - Dst: ApiException
      Src: /src/pdns/pdns/ws-auth.cc:1589,1
    - Dst: string_value
      Src: /src/pdns/pdns/ws-auth.cc:1589,1
    - Dst: is_number
      Src: /src/pdns/pdns/ws-auth.cc:1592,1
    - Dst: int_value
      Src: /src/pdns/pdns/ws-auth.cc:1593,1
    - Dst: is_null
      Src: /src/pdns/pdns/ws-auth.cc:1595,1
    - Dst: ApiException
      Src: /src/pdns/pdns/ws-auth.cc:1596,1
    - Dst: string_value
      Src: /src/pdns/pdns/ws-auth.cc:1596,1
    - Dst: ZoneData::dnssecKeeper::addKey
      Src: /src/pdns/pdns/ws-auth.cc:1600,1
    - Dst: ApiException
      Src: /src/pdns/pdns/ws-auth.cc:1601,1
    - Dst: ApiException
      Src: /src/pdns/pdns/ws-auth.cc:1605,1
    - Dst: what
      Src: /src/pdns/pdns/ws-auth.cc:1605,1
    - Dst: ApiException
      Src: /src/pdns/pdns/ws-auth.cc:1608,1
    - Dst: is_null
      Src: /src/pdns/pdns/ws-auth.cc:1611,1
    - Dst: is_null
      Src: /src/pdns/pdns/ws-auth.cc:1611,1
    - Dst: stringFromJson
      Src: /src/pdns/pdns/ws-auth.cc:1612,1
    - Dst: DNSKEYRecordContent::DNSKEYRecordContent
      Src: /src/pdns/pdns/ws-auth.cc:1613,1
    - Dst: DNSCryptoKeyEngine::makeFromISCString
      Src: /src/pdns/pdns/ws-auth.cc:1616,1
    - Dst: DNSSECPrivateKey::setKey
      Src: /src/pdns/pdns/ws-auth.cc:1630,1
    - Dst: ApiException
      Src: /src/pdns/pdns/ws-auth.cc:1633,1
    - Dst: ZoneData::dnssecKeeper::addKey
      Src: /src/pdns/pdns/ws-auth.cc:1636,1
    - Dst: ApiException
      Src: /src/pdns/pdns/ws-auth.cc:1637,1
    - Dst: ApiException
      Src: /src/pdns/pdns/ws-auth.cc:1641,1
    - Dst: what
      Src: /src/pdns/pdns/ws-auth.cc:1641,1
    - Dst: ApiException
      Src: /src/pdns/pdns/ws-auth.cc:1644,1
    - Dst: ApiException
      Src: /src/pdns/pdns/ws-auth.cc:1648,1
    - Dst: apiZoneCryptokeysPostProcessing
      Src: /src/pdns/pdns/ws-auth.cc:1650,1
    - Dst: apiZoneCryptokeysExport
      Src: /src/pdns/pdns/ws-auth.cc:1651,1
    CyclomaticComplexity: 36
    EdgeCount: 36
    ICount: 73
    argCount: 2
    argNames:
    - req
    - resp
    argTypes:
    - HttpRequest*
    - HttpResponse*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1653
      start: 1546
    functionDepth: 6
    functionLinenumber: 1546
    functionLinenumberEnd: 1653
    functionName: apiZoneCryptokeysPOST
    functionSourceFile: /src/pdns/pdns/ws-auth.cc
    functionUses: 0
    functionsReached:
    - DNSCryptoKeyEngine::makeFromISCString
    - DNSSECPrivateKey::setKey
    - ApiException
    - apiZoneCryptokeysPostProcessing
    - is_string
    - apiZoneCryptokeysExport
    - is_number
    - stringFromJson
    - int_value
    - auto::int_value
    - string_value
    - auto::is_number
    - fmod
    - auto::is_null
    - is_null
    - HttpRequest*::json
    - DNSSEC::shorthand2algorithm
    - arg
    - DNSKEYRecordContent::DNSKEYRecordContent
    - auto::number_value
    - what
    - ZoneData::dnssecKeeper::addKey
    - boolFromJson
    linkageType: ''
    returnType: void
    signature: void apiZoneCryptokeysPOST(HttpRequest* req, HttpResponse* resp)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: getInquireKeyId
      Src: /src/pdns/pdns/ws-auth.cc:1669,1
    - Dst: HttpBadRequestException
      Src: /src/pdns/pdns/ws-auth.cc:1672,1
    - Dst: HttpRequest*::json
      Src: /src/pdns/pdns/ws-auth.cc:1675,1
    - Dst: boolFromJson
      Src: /src/pdns/pdns/ws-auth.cc:1677,1
    - Dst: boolFromJson
      Src: /src/pdns/pdns/ws-auth.cc:1678,1
    - Dst: ZoneData::dnssecKeeper::activateKey
      Src: /src/pdns/pdns/ws-auth.cc:1680,1
    - Dst: HttpResponse*::setErrorResult
      Src: /src/pdns/pdns/ws-auth.cc:1681,1
    - Dst: ZoneData::zoneName::toString
      Src: /src/pdns/pdns/ws-auth.cc:1681,1
    - Dst: ZoneData::dnssecKeeper::deactivateKey
      Src: /src/pdns/pdns/ws-auth.cc:1686,1
    - Dst: HttpResponse*::setErrorResult
      Src: /src/pdns/pdns/ws-auth.cc:1687,1
    - Dst: ZoneData::zoneName::toString
      Src: /src/pdns/pdns/ws-auth.cc:1687,1
    - Dst: ZoneData::dnssecKeeper::publishKey
      Src: /src/pdns/pdns/ws-auth.cc:1693,1
    - Dst: HttpResponse*::setErrorResult
      Src: /src/pdns/pdns/ws-auth.cc:1694,1
    - Dst: ZoneData::zoneName::toString
      Src: /src/pdns/pdns/ws-auth.cc:1694,1
    - Dst: ZoneData::dnssecKeeper::unpublishKey
      Src: /src/pdns/pdns/ws-auth.cc:1699,1
    - Dst: HttpResponse*::setErrorResult
      Src: /src/pdns/pdns/ws-auth.cc:1700,1
    - Dst: ZoneData::zoneName::toString
      Src: /src/pdns/pdns/ws-auth.cc:1700,1
    - Dst: apiZoneCryptokeysPostProcessing
      Src: /src/pdns/pdns/ws-auth.cc:1705,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 29
    argCount: 2
    argNames:
    - req
    - resp
    argTypes:
    - HttpRequest*
    - HttpResponse*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1708
      start: 1666
    functionDepth: 6
    functionLinenumber: 1666
    functionLinenumberEnd: 1708
    functionName: apiZoneCryptokeysPUT
    functionSourceFile: /src/pdns/pdns/ws-auth.cc
    functionUses: 0
    functionsReached:
    - ZoneData::dnssecKeeper::unpublishKey
    - ZoneData::dnssecKeeper::publishKey
    - HttpRequest*::json
    - getInquireKeyId
    - apiZoneCryptokeysPostProcessing
    - ZoneData::dnssecKeeper::deactivateKey
    - boolFromJson
    - HttpResponse*::setErrorResult
    - ZoneData::dnssecKeeper::activateKey
    - HttpBadRequestException
    - ZoneData::zoneName::toString
    linkageType: ''
    returnType: void
    signature: void apiZoneCryptokeysPUT(HttpRequest* req, HttpResponse* resp)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: stringtok
      Src: /src/pdns/pdns/ws-auth.cc:1714,1
    - Dst: ZoneParserTNG::setMaxGenerateSteps
      Src: /src/pdns/pdns/ws-auth.cc:1717,1
    - Dst: arg
      Src: /src/pdns/pdns/ws-auth.cc:1717,1
    - Dst: ZoneParserTNG::setMaxIncludes
      Src: /src/pdns/pdns/ws-auth.cc:1718,1
    - Dst: arg
      Src: /src/pdns/pdns/ws-auth.cc:1718,1
    - Dst: ZoneParserTNG::get
      Src: /src/pdns/pdns/ws-auth.cc:1725,1
    - Dst: DNSResourceRecord::qtype::getCode
      Src: /src/pdns/pdns/ws-auth.cc:1726,1
    - Dst: DNSResourceRecord::qtype::getCode
      Src: /src/pdns/pdns/ws-auth.cc:1729,1
    - Dst: validateGatheredRRType
      Src: /src/pdns/pdns/ws-auth.cc:1732,1
    - Dst: push_back
      Src: /src/pdns/pdns/ws-auth.cc:1734,1
    - Dst: ApiException
      Src: /src/pdns/pdns/ws-auth.cc:1738,1
    - Dst: string
      Src: /src/pdns/pdns/ws-auth.cc:1738,1
    - Dst: what
      Src: /src/pdns/pdns/ws-auth.cc:1738,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 18
    argCount: 3
    argNames:
    - ' zonestring'
    - ' new_records'
    - ' zonename'
    argTypes:
    - std::string
    - vector<DNSResourceRecord>
    - ZoneName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1740
      start: 1710
    functionDepth: 1
    functionLinenumber: 1710
    functionLinenumberEnd: 1740
    functionName: gatherRecordsFromZone
    functionSourceFile: /src/pdns/pdns/ws-auth.cc
    functionUses: 0
    functionsReached:
    - ZoneParserTNG::setMaxIncludes
    - stringtok
    - ZoneParserTNG::setMaxGenerateSteps
    - push_back
    - what
    - string
    - ApiException
    - DNSResourceRecord::qtype::getCode
    - validateGatheredRRType
    - ZoneParserTNG::get
    - arg
    linkageType: ''
    returnType: void
    signature: void gatherRecordsFromZone(const std::string& zonestring, vector<DNSResourceRecord>&
      new_records, const ZoneName& zonename)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getDomainMetadataOne
      Src: /src/pdns/pdns/ws-auth.cc:1745,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ' zonename'
    - ' backend'
    argTypes:
    - ZoneName
    - DNSBackend
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1748
      start: 1742
    functionDepth: 0
    functionLinenumber: 1742
    functionLinenumberEnd: 1748
    functionName: areUnderscoresAllowed
    functionSourceFile: /src/pdns/pdns/ws-auth.cc
    functionUses: 2
    functionsReached:
    - getDomainMetadataOne
    linkageType: ''
    returnType: bool
    signature: bool areUnderscoresAllowed(const ZoneName& zonename, DNSBackend& backend)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: arg
      Src: /src/pdns/pdns/ws-auth.cc:1757,1
    - Dst: std::vector::emplace_back
      Src: /src/pdns/pdns/ws-auth.cc:1760,1
    - Dst: std::make_pair
      Src: /src/pdns/pdns/ws-auth.cc:1760,1
    - Dst: std::string
      Src: /src/pdns/pdns/ws-auth.cc:1760,1
    - Dst: Check::checkRRSet
      Src: /src/pdns/pdns/ws-auth.cc:1765,1
    - Dst: std::vector::empty
      Src: /src/pdns/pdns/ws-auth.cc:1766,1
    - Dst: Json::array::emplace_back
      Src: /src/pdns/pdns/ws-auth.cc:1773,1
    - Dst: qname::toString
      Src: /src/pdns/pdns/ws-auth.cc:1773,1
    - Dst: qtype::toString
      Src: /src/pdns/pdns/ws-auth.cc:1773,1
    - Dst: Json::array::size
      Src: /src/pdns/pdns/ws-auth.cc:1777,1
    - Dst: HttpResponse*::setJsonBody
      Src: /src/pdns/pdns/ws-auth.cc:1784,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 22
    argCount: 4
    argNames:
    - resp
    - ' records'
    - ' zone'
    - flags
    argTypes:
    - HttpResponse*
    - vector<DNSResourceRecord>
    - ZoneName
    - Check::RRSetFlags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1787
      start: 1752
    functionDepth: 1
    functionLinenumber: 1752
    functionLinenumberEnd: 1787
    functionName: checkNewRecords
    functionSourceFile: /src/pdns/pdns/ws-auth.cc
    functionUses: 0
    functionsReached:
    - arg
    - qtype::toString
    - Json::array::size
    - qname::toString
    - std::vector::emplace_back
    - HttpResponse*::setJsonBody
    - Json::array::emplace_back
    - std::make_pair
    - std::vector::empty
    - std::string
    - Check::checkRRSet
    linkageType: ''
    returnType: bool
    signature: bool checkNewRecords(HttpResponse* resp, vector<DNSResourceRecord>&
      records, const ZoneName& zone, Check::RRSetFlags flags)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: DNSName::DNSName
      Src: /src/pdns/pdns/ws-auth.cc:1791,1
    - Dst: getTSIGKey
      Src: /src/pdns/pdns/ws-auth.cc:1793,1
    - Dst: HttpConflictException
      Src: /src/pdns/pdns/ws-auth.cc:1794,1
    - Dst: toLogString
      Src: /src/pdns/pdns/ws-auth.cc:1794,1
    - Dst: getTSIGHashEnum
      Src: /src/pdns/pdns/ws-auth.cc:1798,1
    - Dst: ApiException
      Src: /src/pdns/pdns/ws-auth.cc:1799,1
    - Dst: toLogString
      Src: /src/pdns/pdns/ws-auth.cc:1799,1
    - Dst: B64Decode
      Src: /src/pdns/pdns/ws-auth.cc:1803,1
    - Dst: ApiException
      Src: /src/pdns/pdns/ws-auth.cc:1804,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 10
    argCount: 4
    argNames:
    - ' backend'
    - ' keyname'
    - ' algo'
    - ' content'
    argTypes:
    - UeberBackend
    - DNSName
    - DNSName
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1806
      start: 1789
    functionDepth: 0
    functionLinenumber: 1789
    functionLinenumberEnd: 1806
    functionName: checkTSIGKey
    functionSourceFile: /src/pdns/pdns/ws-auth.cc
    functionUses: 0
    functionsReached:
    - toLogString
    - getTSIGKey
    - B64Decode
    - HttpConflictException
    - getTSIGHashEnum
    - ApiException
    - DNSName::DNSName
    linkageType: ''
    returnType: void
    signature: void checkTSIGKey(UeberBackend& backend, const DNSName& keyname, const
      DNSName& algo, const string& content)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: toStringNoDot
      Src: /src/pdns/pdns/ws-auth.cc:1811,1
    - Dst: apiNameToId
      Src: /src/pdns/pdns/ws-auth.cc:1812,1
    - Dst: toString
      Src: /src/pdns/pdns/ws-auth.cc:1812,1
    - Dst: toStringNoDot
      Src: /src/pdns/pdns/ws-auth.cc:1813,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' keyname'
    - ' algo'
    - ' content'
    argTypes:
    - DNSName
    - DNSName
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1817
      start: 1808
    functionDepth: 0
    functionLinenumber: 1808
    functionLinenumberEnd: 1817
    functionName: makeJSONTSIGKey
    functionSourceFile: /src/pdns/pdns/ws-auth.cc
    functionUses: 0
    functionsReached:
    - toString
    - toStringNoDot
    - apiNameToId
    linkageType: ''
    returnType: Json::object
    signature: Json::object makeJSONTSIGKey(const DNSName& keyname, const DNSName&
      algo, const string& content)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeJSONTSIGKey
      Src: /src/pdns/pdns/ws-auth.cc:1821,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' key'
    argTypes:
    - struct TSIGKey
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1822
      start: 1819
    functionDepth: 1
    functionLinenumber: 1819
    functionLinenumberEnd: 1822
    functionName: makeJSONTSIGKey
    functionSourceFile: /src/pdns/pdns/ws-auth.cc
    functionUses: 1
    functionsReached:
    - makeJSONTSIGKey
    linkageType: ''
    returnType: Json::object
    signature: Json::object makeJSONTSIGKey(const struct TSIGKey& key, bool doContent
      = true)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: UeberBackend::UeberBackend
      Src: /src/pdns/pdns/ws-auth.cc:1826,1
    - Dst: UeberBackend::getTSIGKeys
      Src: /src/pdns/pdns/ws-auth.cc:1829,1
    - Dst: HttpInternalServerErrorException
      Src: /src/pdns/pdns/ws-auth.cc:1830,1
    - Dst: Json::array::emplace_back
      Src: /src/pdns/pdns/ws-auth.cc:1836,1
    - Dst: makeJSONTSIGKey
      Src: /src/pdns/pdns/ws-auth.cc:1836,1
    - Dst: HttpResponse*::setJsonBody
      Src: /src/pdns/pdns/ws-auth.cc:1838,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 1
    argNames:
    - resp
    argTypes:
    - HttpResponse*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1839
      start: 1824
    functionDepth: 1
    functionLinenumber: 1824
    functionLinenumberEnd: 1839
    functionName: apiServerTSIGKeysGET
    functionSourceFile: /src/pdns/pdns/ws-auth.cc
    functionUses: 0
    functionsReached:
    - HttpInternalServerErrorException
    - UeberBackend::UeberBackend
    - HttpResponse*::setJsonBody
    - Json::array::emplace_back
    - makeJSONTSIGKey
    - UeberBackend::getTSIGKeys
    linkageType: ''
    returnType: void
    signature: void apiServerTSIGKeysGET(HttpRequest* /* req */, HttpResponse* resp)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: UeberBackend::UeberBackend
      Src: /src/pdns/pdns/ws-auth.cc:1843,1
    - Dst: HttpRequest*::json
      Src: /src/pdns/pdns/ws-auth.cc:1844,1
    - Dst: stringFromJson
      Src: /src/pdns/pdns/ws-auth.cc:1845,1
    - Dst: stringFromJson
      Src: /src/pdns/pdns/ws-auth.cc:1846,1
    - Dst: string_value
      Src: /src/pdns/pdns/ws-auth.cc:1847,1
    - Dst: string::empty
      Src: /src/pdns/pdns/ws-auth.cc:1849,1
    - Dst: makeTSIGKey
      Src: /src/pdns/pdns/ws-auth.cc:1851,1
    - Dst: HttpBadRequestException
      Src: /src/pdns/pdns/ws-auth.cc:1854,1
    - Dst: checkTSIGKey
      Src: /src/pdns/pdns/ws-auth.cc:1859,1
    - Dst: UeberBackend::setTSIGKey
      Src: /src/pdns/pdns/ws-auth.cc:1861,1
    - Dst: HttpInternalServerErrorException
      Src: /src/pdns/pdns/ws-auth.cc:1862,1
    - Dst: HttpResponse*::setJsonBody
      Src: /src/pdns/pdns/ws-auth.cc:1866,1
    - Dst: makeJSONTSIGKey
      Src: /src/pdns/pdns/ws-auth.cc:1866,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 2
    argNames:
    - req
    - resp
    argTypes:
    - HttpRequest*
    - HttpResponse*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1867
      start: 1841
    functionDepth: 2
    functionLinenumber: 1841
    functionLinenumberEnd: 1867
    functionName: apiServerTSIGKeysPOST
    functionSourceFile: /src/pdns/pdns/ws-auth.cc
    functionUses: 0
    functionsReached:
    - checkTSIGKey
    - string_value
    - stringFromJson
    - string::empty
    - UeberBackend::UeberBackend
    - makeTSIGKey
    - UeberBackend::setTSIGKey
    - HttpInternalServerErrorException
    - HttpResponse*::setJsonBody
    - makeJSONTSIGKey
    - HttpRequest*::json
    - HttpBadRequestException
    linkageType: ''
    returnType: void
    signature: void apiServerTSIGKeysPOST(HttpRequest* req, HttpResponse* resp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: apiZoneIdToName
      Src: /src/pdns/pdns/ws-auth.cc:1873,1
    - Dst: getTSIGKey
      Src: /src/pdns/pdns/ws-auth.cc:1876,1
    - Dst: HttpNotFoundException
      Src: /src/pdns/pdns/ws-auth.cc:1877,1
    - Dst: toLogString
      Src: /src/pdns/pdns/ws-auth.cc:1877,1
    - Dst: HttpInternalServerErrorException
      Src: /src/pdns/pdns/ws-auth.cc:1881,1
    - Dst: std::move
      Src: /src/pdns/pdns/ws-auth.cc:1886,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 1
    argNames:
    - req
    argTypes:
    - HttpRequest*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1887
      start: 1872
    functionDepth: 0
    functionLinenumber: 1872
    functionLinenumberEnd: 1887
    functionName: TSIGKeyData::TSIGKeyData
    functionSourceFile: /src/pdns/pdns/ws-auth.cc
    functionUses: 0
    functionsReached:
    - apiZoneIdToName
    - toLogString
    - HttpNotFoundException
    - getTSIGKey
    - std::move
    - HttpInternalServerErrorException
    linkageType: ''
    returnType: void
    signature: void TSIGKeyData(HttpRequest* req)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: HttpResponse*::setJsonBody
      Src: /src/pdns/pdns/ws-auth.cc:1900,1
    - Dst: makeJSONTSIGKey
      Src: /src/pdns/pdns/ws-auth.cc:1900,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - req
    - resp
    argTypes:
    - HttpRequest*
    - HttpResponse*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1901
      start: 1896
    functionDepth: 1
    functionLinenumber: 1896
    functionLinenumberEnd: 1901
    functionName: apiServerTSIGKeyDetailGET
    functionSourceFile: /src/pdns/pdns/ws-auth.cc
    functionUses: 0
    functionsReached:
    - makeJSONTSIGKey
    - HttpResponse*::setJsonBody
    linkageType: ''
    returnType: void
    signature: void apiServerTSIGKeyDetailGET(HttpRequest* req, HttpResponse* resp)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: HttpRequest*::json
      Src: /src/pdns/pdns/ws-auth.cc:1907,1
    - Dst: is_string
      Src: /src/pdns/pdns/ws-auth.cc:1909,1
    - Dst: DNSName
      Src: /src/pdns/pdns/ws-auth.cc:1910,1
    - Dst: string_value
      Src: /src/pdns/pdns/ws-auth.cc:1910,1
    - Dst: is_string
      Src: /src/pdns/pdns/ws-auth.cc:1912,1
    - Dst: DNSName
      Src: /src/pdns/pdns/ws-auth.cc:1913,1
    - Dst: string_value
      Src: /src/pdns/pdns/ws-auth.cc:1913,1
    - Dst: getTSIGHashEnum
      Src: /src/pdns/pdns/ws-auth.cc:1916,1
    - Dst: ApiException
      Src: /src/pdns/pdns/ws-auth.cc:1917,1
    - Dst: TSIGKeyData::tsigKey::algorithm::toLogString
      Src: /src/pdns/pdns/ws-auth.cc:1917,1
    - Dst: is_string
      Src: /src/pdns/pdns/ws-auth.cc:1920,1
    - Dst: string_value
      Src: /src/pdns/pdns/ws-auth.cc:1921,1
    - Dst: B64Decode
      Src: /src/pdns/pdns/ws-auth.cc:1923,1
    - Dst: ApiException
      Src: /src/pdns/pdns/ws-auth.cc:1924,1
    - Dst: std::move
      Src: /src/pdns/pdns/ws-auth.cc:1926,1
    - Dst: TSIGKeyData::backend::setTSIGKey
      Src: /src/pdns/pdns/ws-auth.cc:1928,1
    - Dst: HttpInternalServerErrorException
      Src: /src/pdns/pdns/ws-auth.cc:1929,1
    - Dst: TSIGKeyData::backend::deleteTSIGKey
      Src: /src/pdns/pdns/ws-auth.cc:1933,1
    - Dst: HttpInternalServerErrorException
      Src: /src/pdns/pdns/ws-auth.cc:1934,1
    - Dst: TSIGKeyData::keyName::toStringNoDot
      Src: /src/pdns/pdns/ws-auth.cc:1934,1
    - Dst: HttpResponse*::setJsonBody
      Src: /src/pdns/pdns/ws-auth.cc:1937,1
    - Dst: makeJSONTSIGKey
      Src: /src/pdns/pdns/ws-auth.cc:1937,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 25
    argCount: 2
    argNames:
    - req
    - resp
    argTypes:
    - HttpRequest*
    - HttpResponse*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1938
      start: 1903
    functionDepth: 2
    functionLinenumber: 1903
    functionLinenumberEnd: 1938
    functionName: apiServerTSIGKeyDetailPUT
    functionSourceFile: /src/pdns/pdns/ws-auth.cc
    functionUses: 0
    functionsReached:
    - is_string
    - std::move
    - string_value
    - B64Decode
    - TSIGKeyData::tsigKey::algorithm::toLogString
    - DNSName
    - ApiException
    - getTSIGHashEnum
    - HttpInternalServerErrorException
    - HttpResponse*::setJsonBody
    - makeJSONTSIGKey
    - TSIGKeyData::keyName::toStringNoDot
    - TSIGKeyData::backend::deleteTSIGKey
    - HttpRequest*::json
    - TSIGKeyData::backend::setTSIGKey
    linkageType: ''
    returnType: void
    signature: void apiServerTSIGKeyDetailPUT(HttpRequest* req, HttpResponse* resp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: TSIGKeyData::backend::deleteTSIGKey
      Src: /src/pdns/pdns/ws-auth.cc:1943,1
    - Dst: HttpInternalServerErrorException
      Src: /src/pdns/pdns/ws-auth.cc:1944,1
    - Dst: TSIGKeyData::keyName::toStringNoDot
      Src: /src/pdns/pdns/ws-auth.cc:1944,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - req
    - resp
    argTypes:
    - HttpRequest*
    - HttpResponse*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1948
      start: 1940
    functionDepth: 2
    functionLinenumber: 1940
    functionLinenumberEnd: 1948
    functionName: apiServerTSIGKeyDetailDELETE
    functionSourceFile: /src/pdns/pdns/ws-auth.cc
    functionUses: 0
    functionsReached:
    - TSIGKeyData::backend::deleteTSIGKey
    - TSIGKeyData::keyName::toStringNoDot
    - HttpInternalServerErrorException
    linkageType: ''
    returnType: void
    signature: void apiServerTSIGKeyDetailDELETE(HttpRequest* req, HttpResponse* resp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: UeberBackend::UeberBackend
      Src: /src/pdns/pdns/ws-auth.cc:1952,1
    - Dst: UeberBackend::autoPrimaryRemove
      Src: /src/pdns/pdns/ws-auth.cc:1954,1
    - Dst: HttpInternalServerErrorException
      Src: /src/pdns/pdns/ws-auth.cc:1955,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - req
    - resp
    argTypes:
    - HttpRequest*
    - HttpResponse*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1959
      start: 1950
    functionDepth: 1
    functionLinenumber: 1950
    functionLinenumberEnd: 1959
    functionName: apiServerAutoprimaryDetailDELETE
    functionSourceFile: /src/pdns/pdns/ws-auth.cc
    functionUses: 0
    functionsReached:
    - UeberBackend::autoPrimaryRemove
    - HttpInternalServerErrorException
    - UeberBackend::UeberBackend
    linkageType: ''
    returnType: void
    signature: void apiServerAutoprimaryDetailDELETE(HttpRequest* req, HttpResponse*
      resp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: UeberBackend::UeberBackend
      Src: /src/pdns/pdns/ws-auth.cc:1963,1
    - Dst: UeberBackend::autoPrimariesList
      Src: /src/pdns/pdns/ws-auth.cc:1966,1
    - Dst: HttpInternalServerErrorException
      Src: /src/pdns/pdns/ws-auth.cc:1967,1
    - Dst: Json::array::emplace_back
      Src: /src/pdns/pdns/ws-auth.cc:1975,1
    - Dst: HttpResponse*::setJsonBody
      Src: /src/pdns/pdns/ws-auth.cc:1977,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 1
    argNames:
    - resp
    argTypes:
    - HttpResponse*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1978
      start: 1961
    functionDepth: 1
    functionLinenumber: 1961
    functionLinenumberEnd: 1978
    functionName: apiServerAutoprimariesGET
    functionSourceFile: /src/pdns/pdns/ws-auth.cc
    functionUses: 0
    functionsReached:
    - UeberBackend::autoPrimariesList
    - HttpInternalServerErrorException
    - UeberBackend::UeberBackend
    - HttpResponse*::setJsonBody
    - Json::array::emplace_back
    linkageType: ''
    returnType: void
    signature: void apiServerAutoprimariesGET(HttpRequest* /* req */, HttpResponse*
      resp)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: UeberBackend::UeberBackend
      Src: /src/pdns/pdns/ws-auth.cc:1982,1
    - Dst: HttpRequest*::json
      Src: /src/pdns/pdns/ws-auth.cc:1984,1
    - Dst: stringFromJson
      Src: /src/pdns/pdns/ws-auth.cc:1986,1
    - Dst: stringFromJson
      Src: /src/pdns/pdns/ws-auth.cc:1986,1
    - Dst: is_string
      Src: /src/pdns/pdns/ws-auth.cc:1988,1
    - Dst: string_value
      Src: /src/pdns/pdns/ws-auth.cc:1989,1
    - Dst: AutoPrimary::ip::empty
      Src: /src/pdns/pdns/ws-auth.cc:1992,1
    - Dst: AutoPrimary::nameserver::empty
      Src: /src/pdns/pdns/ws-auth.cc:1992,1
    - Dst: ApiException
      Src: /src/pdns/pdns/ws-auth.cc:1993,1
    - Dst: UeberBackend::autoPrimaryAdd
      Src: /src/pdns/pdns/ws-auth.cc:1995,1
    - Dst: HttpInternalServerErrorException
      Src: /src/pdns/pdns/ws-auth.cc:1996,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 2
    argNames:
    - req
    - resp
    argTypes:
    - HttpRequest*
    - HttpResponse*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2000
      start: 1980
    functionDepth: 1
    functionLinenumber: 1980
    functionLinenumberEnd: 2000
    functionName: apiServerAutoprimariesPOST
    functionSourceFile: /src/pdns/pdns/ws-auth.cc
    functionUses: 0
    functionsReached:
    - is_string
    - string_value
    - stringFromJson
    - UeberBackend::autoPrimaryAdd
    - UeberBackend::UeberBackend
    - AutoPrimary::nameserver::empty
    - ApiException
    - HttpInternalServerErrorException
    - AutoPrimary::ip::empty
    - HttpRequest*::json
    linkageType: ''
    returnType: void
    signature: void apiServerAutoprimariesPOST(HttpRequest* req, HttpResponse* resp)
  - BBCount: 29
    BranchProfiles: []
    Callsites:
    - Dst: UeberBackend::UeberBackend
      Src: /src/pdns/pdns/ws-auth.cc:2005,1
    - Dst: HttpRequest*::json
      Src: /src/pdns/pdns/ws-auth.cc:2008,1
    - Dst: apiNameToZoneName
      Src: /src/pdns/pdns/ws-auth.cc:2009,1
    - Dst: stringFromJson
      Src: /src/pdns/pdns/ws-auth.cc:2009,1
    - Dst: apiCheckNameAllowedCharacters
      Src: /src/pdns/pdns/ws-auth.cc:2010,1
    - Dst: ZoneName::toString
      Src: /src/pdns/pdns/ws-auth.cc:2010,1
    - Dst: ZoneName::makeUsLowerCase
      Src: /src/pdns/pdns/ws-auth.cc:2011,1
    - Dst: UeberBackend::getDomainInfo
      Src: /src/pdns/pdns/ws-auth.cc:2013,1
    - Dst: HttpConflictException
      Src: /src/pdns/pdns/ws-auth.cc:2015,1
    - Dst: extractDomainInfoFromDocument
      Src: /src/pdns/pdns/ws-auth.cc:2022,1
    - Dst: JsonException
      Src: /src/pdns/pdns/ws-auth.cc:2026,1
    - Dst: string_value
      Src: /src/pdns/pdns/ws-auth.cc:2030,1
    - Dst: auto::is_array
      Src: /src/pdns/pdns/ws-auth.cc:2032,1
    - Dst: string::empty
      Src: /src/pdns/pdns/ws-auth.cc:2032,1
    - Dst: ApiException
      Src: /src/pdns/pdns/ws-auth.cc:2033,1
    - Dst: is_null
      Src: /src/pdns/pdns/ws-auth.cc:2037,1
    - Dst: is_array
      Src: /src/pdns/pdns/ws-auth.cc:2037,1
    - Dst: ApiException
      Src: /src/pdns/pdns/ws-auth.cc:2038,1
    - Dst: auto::is_array
      Src: /src/pdns/pdns/ws-auth.cc:2048,1
    - Dst: auto::array_items
      Src: /src/pdns/pdns/ws-auth.cc:2049,1
    - Dst: apiNameToDNSName
      Src: /src/pdns/pdns/ws-auth.cc:2050,1
    - Dst: stringFromJson
      Src: /src/pdns/pdns/ws-auth.cc:2050,1
    - Dst: apiCheckQNameAllowedCharacters
      Src: /src/pdns/pdns/ws-auth.cc:2051,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/ws-auth.cc:2051,1
    - Dst: QType::QType
      Src: /src/pdns/pdns/ws-auth.cc:2052,1
    - Dst: stringFromJson
      Src: /src/pdns/pdns/ws-auth.cc:2053,1
    - Dst: QType::getCode
      Src: /src/pdns/pdns/ws-auth.cc:2054,1
    - Dst: ApiException
      Src: /src/pdns/pdns/ws-auth.cc:2055,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/ws-auth.cc:2055,1
    - Dst: stringFromJson
      Src: /src/pdns/pdns/ws-auth.cc:2055,1
    - Dst: is_array
      Src: /src/pdns/pdns/ws-auth.cc:2057,1
    - Dst: uintFromJson
      Src: /src/pdns/pdns/ws-auth.cc:2058,1
    - Dst: gatherRecords
      Src: /src/pdns/pdns/ws-auth.cc:2059,1
    - Dst: is_array
      Src: /src/pdns/pdns/ws-auth.cc:2061,1
    - Dst: gatherComments
      Src: /src/pdns/pdns/ws-auth.cc:2062,1
    - Dst: string::empty
      Src: /src/pdns/pdns/ws-auth.cc:2066,1
    - Dst: gatherRecordsFromZone
      Src: /src/pdns/pdns/ws-auth.cc:2067,1
    - Dst: ApiException
      Src: /src/pdns/pdns/ws-auth.cc:2071,1
    - Dst: string
      Src: /src/pdns/pdns/ws-auth.cc:2071,1
    - Dst: what
      Src: /src/pdns/pdns/ws-auth.cc:2071,1
    - Dst: vector::empty
      Src: /src/pdns/pdns/ws-auth.cc:2074,1
    - Dst: ApiException
      Src: /src/pdns/pdns/ws-auth.cc:2075,1
    - Dst: qname::makeUsLowerCase
      Src: /src/pdns/pdns/ws-auth.cc:2079,1
    - Dst: qname::isPartOf
      Src: /src/pdns/pdns/ws-auth.cc:2080,1
    - Dst: ApiException
      Src: /src/pdns/pdns/ws-auth.cc:2081,1
    - Dst: qname::toString
      Src: /src/pdns/pdns/ws-auth.cc:2081,1
    - Dst: qtype::toString
      Src: /src/pdns/pdns/ws-auth.cc:2081,1
    - Dst: apiCheckQNameAllowedCharacters
      Src: /src/pdns/pdns/ws-auth.cc:2084,1
    - Dst: qname::toString
      Src: /src/pdns/pdns/ws-auth.cc:2084,1
    - Dst: qtype::getCode
      Src: /src/pdns/pdns/ws-auth.cc:2086,1
    - Dst: qtype::getCode
      Src: /src/pdns/pdns/ws-auth.cc:2089,1
    - Dst: arg
      Src: /src/pdns/pdns/ws-auth.cc:2098,1
    - Dst: arg
      Src: /src/pdns/pdns/ws-auth.cc:2102,1
    - Dst: boost::replace_all
      Src: /src/pdns/pdns/ws-auth.cc:2103,1
    - Dst: toStringNoDot
      Src: /src/pdns/pdns/ws-auth.cc:2103,1
    - Dst: fillSOAData
      Src: /src/pdns/pdns/ws-auth.cc:2105,1
    - Dst: int_value
      Src: /src/pdns/pdns/ws-auth.cc:2106,1
    - Dst: makeSOAContent
      Src: /src/pdns/pdns/ws-auth.cc:2108,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/ws-auth.cc:2110,1
    - Dst: array_items
      Src: /src/pdns/pdns/ws-auth.cc:2114,1
    - Dst: string_value
      Src: /src/pdns/pdns/ws-auth.cc:2115,1
    - Dst: empty
      Src: /src/pdns/pdns/ws-auth.cc:2116,1
    - Dst: ApiException
      Src: /src/pdns/pdns/ws-auth.cc:2117,1
    - Dst: ApiException
      Src: /src/pdns/pdns/ws-auth.cc:2120,1
    - Dst: isCanonical
      Src: /src/pdns/pdns/ws-auth.cc:2122,1
    - Dst: ApiException
      Src: /src/pdns/pdns/ws-auth.cc:2123,1
    - Dst: DNSName
      Src: /src/pdns/pdns/ws-auth.cc:2127,1
    - Dst: ApiException
      Src: /src/pdns/pdns/ws-auth.cc:2130,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/ws-auth.cc:2133,1
    - Dst: ApiException
      Src: /src/pdns/pdns/ws-auth.cc:2135,1
    - Dst: checkNewRecords
      Src: /src/pdns/pdns/ws-auth.cc:2141,1
    - Dst: static_cast<Check::RRSetFlags>
      Src: /src/pdns/pdns/ws-auth.cc:2141,1
    - Dst: boolFromJson
      Src: /src/pdns/pdns/ws-auth.cc:2145,1
    - Dst: checkDefaultDNSSECAlgos
      Src: /src/pdns/pdns/ws-auth.cc:2146,1
    - Dst: string_value
      Src: /src/pdns/pdns/ws-auth.cc:2148,1
    - Dst: string_value
      Src: /src/pdns/pdns/ws-auth.cc:2149,1
    - Dst: DNSSECKeeper::checkNSEC3PARAM
      Src: /src/pdns/pdns/ws-auth.cc:2151,1
    - Dst: ApiException
      Src: /src/pdns/pdns/ws-auth.cc:2152,1
    - Dst: ZoneName::toString
      Src: /src/pdns/pdns/ws-auth.cc:2152,1
    - Dst: UeberBackend::createDomain
      Src: /src/pdns/pdns/ws-auth.cc:2158,1
    - Dst: std::optional::value_or
      Src: /src/pdns/pdns/ws-auth.cc:2158,1
    - Dst: std::optional::value_or
      Src: /src/pdns/pdns/ws-auth.cc:2158,1
    - Dst: vector<ComboAddress>
      Src: /src/pdns/pdns/ws-auth.cc:2158,1
    - Dst: std::optional::value_or
      Src: /src/pdns/pdns/ws-auth.cc:2158,1
    - Dst: ApiException
      Src: /src/pdns/pdns/ws-auth.cc:2159,1
    - Dst: ZoneName::toString
      Src: /src/pdns/pdns/ws-auth.cc:2159,1
    - Dst: UeberBackend::getDomainInfo
      Src: /src/pdns/pdns/ws-auth.cc:2162,1
    - Dst: ApiException
      Src: /src/pdns/pdns/ws-auth.cc:2163,1
    - Dst: ZoneName::toString
      Src: /src/pdns/pdns/ws-auth.cc:2163,1
    - Dst: DomainInfo::backend::startTransaction
      Src: /src/pdns/pdns/ws-auth.cc:2166,1
    - Dst: arg
      Src: /src/pdns/pdns/ws-auth.cc:2170,1
    - Dst: string::empty
      Src: /src/pdns/pdns/ws-auth.cc:2171,1
    - Dst: DomainInfo::backend::setDomainMetadataOne
      Src: /src/pdns/pdns/ws-auth.cc:2172,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/ws-auth.cc:2176,1
    - Dst: DomainInfo::backend::feedRecord
      Src: /src/pdns/pdns/ws-auth.cc:2177,1
    - Dst: DNSName
      Src: /src/pdns/pdns/ws-auth.cc:2177,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/ws-auth.cc:2180,1
    - Dst: DomainInfo::backend::feedComment
      Src: /src/pdns/pdns/ws-auth.cc:2181,1
    - Dst: ApiException
      Src: /src/pdns/pdns/ws-auth.cc:2182,1
    - Dst: updateDomainSettingsFromDocument
      Src: /src/pdns/pdns/ws-auth.cc:2186,1
    - Dst: vector::empty
      Src: /src/pdns/pdns/ws-auth.cc:2186,1
    - Dst: arg
      Src: /src/pdns/pdns/ws-auth.cc:2189,1
    - Dst: empty
      Src: /src/pdns/pdns/ws-auth.cc:2190,1
    - Dst: DomainInfo::backend::setCatalog
      Src: /src/pdns/pdns/ws-auth.cc:2191,1
    - Dst: ZoneName
      Src: /src/pdns/pdns/ws-auth.cc:2191,1
    - Dst: DomainInfo::backend::abortTransaction
      Src: /src/pdns/pdns/ws-auth.cc:2196,1
    - Dst: DomainInfo::backend::commitTransaction
      Src: /src/pdns/pdns/ws-auth.cc:2200,1
    - Dst: add
      Src: /src/pdns/pdns/ws-auth.cc:2202,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/ws-auth.cc:2202,1
    - Dst: fillZone
      Src: /src/pdns/pdns/ws-auth.cc:2204,1
    CyclomaticComplexity: 64
    EdgeCount: 64
    ICount: 127
    argCount: 2
    argNames:
    - req
    - resp
    argTypes:
    - HttpRequest*
    - HttpResponse*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2206
      start: 2003
    functionDepth: 6
    functionLinenumber: 2003
    functionLinenumberEnd: 2206
    functionName: apiServerZonesPOST
    functionSourceFile: /src/pdns/pdns/ws-auth.cc
    functionUses: 0
    functionsReached:
    - add
    - gatherRecords
    - apiCheckNameAllowedCharacters
    - toStringNoDot
    - HttpConflictException
    - ApiException
    - gatherRecordsFromZone
    - DomainInfo::backend::setCatalog
    - DNSName::toString
    - static_cast<Check::RRSetFlags>
    - gatherComments
    - checkDefaultDNSSECAlgos
    - apiNameToDNSName
    - DomainInfo::backend::startTransaction
    - checkNewRecords
    - UeberBackend::getDomainInfo
    - static_cast<int>
    - vector<ComboAddress>
    - DomainInfo::backend::feedRecord
    - stringFromJson
    - string::empty
    - uintFromJson
    - int_value
    - apiNameToZoneName
    - string
    - qname::makeUsLowerCase
    - UeberBackend::UeberBackend
    - boost::replace_all
    - makeSOAContent
    - fillZone
    - apiCheckQNameAllowedCharacters
    - empty
    - array_items
    - ZoneName::toString
    - string_value
    - vector::push_back
    - isCanonical
    - qname::toString
    - DomainInfo::backend::commitTransaction
    - DNSName
    - qtype::getCode
    - vector::empty
    - UeberBackend::createDomain
    - auto::is_array
    - DomainInfo::backend::abortTransaction
    - ZoneName::makeUsLowerCase
    - is_null
    - HttpRequest*::json
    - std::optional::value_or
    - extractDomainInfoFromDocument
    - arg
    - fillSOAData
    - auto::array_items
    - DomainInfo::backend::feedComment
    - QType::QType
    - qtype::toString
    - what
    - DNSSECKeeper::checkNSEC3PARAM
    - DomainInfo::backend::setDomainMetadataOne
    - is_array
    - QType::getCode
    - JsonException
    - boolFromJson
    - qname::isPartOf
    - ZoneName
    - updateDomainSettingsFromDocument
    linkageType: ''
    returnType: void
    signature: void apiServerZonesPOST(HttpRequest* req, HttpResponse* resp)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: UeberBackend::UeberBackend
      Src: /src/pdns/pdns/ws-auth.cc:2211,1
    - Dst: HttpRequest*::getvars::count
      Src: /src/pdns/pdns/ws-auth.cc:2215,1
    - Dst: apiCheckNameAllowedCharacters
      Src: /src/pdns/pdns/ws-auth.cc:2217,1
    - Dst: apiNameToZoneName
      Src: /src/pdns/pdns/ws-auth.cc:2218,1
    - Dst: ZoneName::makeUsLowerCase
      Src: /src/pdns/pdns/ws-auth.cc:2219,1
    - Dst: UeberBackend::getDomainInfo
      Src: /src/pdns/pdns/ws-auth.cc:2221,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/ws-auth.cc:2222,1
    - Dst: std::move
      Src: /src/pdns/pdns/ws-auth.cc:2222,1
    - Dst: UeberBackend::getAllDomains
      Src: /src/pdns/pdns/ws-auth.cc:2227,1
    - Dst: HttpInternalServerErrorException
      Src: /src/pdns/pdns/ws-auth.cc:2230,1
    - Dst: HttpRequest*::getvars::count
      Src: /src/pdns/pdns/ws-auth.cc:2235,1
    - Dst: Json::array::reserve
      Src: /src/pdns/pdns/ws-auth.cc:2244,1
    - Dst: vector::size
      Src: /src/pdns/pdns/ws-auth.cc:2244,1
    - Dst: Json::array::emplace_back
      Src: /src/pdns/pdns/ws-auth.cc:2246,1
    - Dst: getZoneInfo
      Src: /src/pdns/pdns/ws-auth.cc:2246,1
    - Dst: HttpResponse*::setJsonBody
      Src: /src/pdns/pdns/ws-auth.cc:2248,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 23
    argCount: 2
    argNames:
    - req
    - resp
    argTypes:
    - HttpRequest*
    - HttpResponse*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2249
      start: 2209
    functionDepth: 3
    functionLinenumber: 2209
    functionLinenumberEnd: 2249
    functionName: apiServerZonesGET
    functionSourceFile: /src/pdns/pdns/ws-auth.cc
    functionUses: 0
    functionsReached:
    - HttpRequest*::getvars::count
    - std::move
    - vector::push_back
    - UeberBackend::getAllDomains
    - apiNameToZoneName
    - apiCheckNameAllowedCharacters
    - Json::array::reserve
    - UeberBackend::UeberBackend
    - HttpInternalServerErrorException
    - HttpResponse*::setJsonBody
    - Json::array::emplace_back
    - getZoneInfo
    - ZoneName::makeUsLowerCase
    - vector::size
    - UeberBackend::getDomainInfo
    linkageType: ''
    returnType: void
    signature: void apiServerZonesGET(HttpRequest* req, HttpResponse* resp)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: HttpRequest*::json
      Src: /src/pdns/pdns/ws-auth.cc:2256,1
    - Dst: is_string
      Src: /src/pdns/pdns/ws-auth.cc:2261,1
    - Dst: stringToKind
      Src: /src/pdns/pdns/ws-auth.cc:2262,1
    - Dst: stringFromJson
      Src: /src/pdns/pdns/ws-auth.cc:2262,1
    - Dst: auto::is_array
      Src: /src/pdns/pdns/ws-auth.cc:2266,1
    - Dst: ZoneData::domainInfo::backend::getDomainMetadataOne
      Src: /src/pdns/pdns/ws-auth.cc:2271,1
    - Dst: ZoneData::domainInfo::backend::getDomainMetadataOne
      Src: /src/pdns/pdns/ws-auth.cc:2272,1
    - Dst: auto::array_items
      Src: /src/pdns/pdns/ws-auth.cc:2278,1
    - Dst: apiNameToDNSName
      Src: /src/pdns/pdns/ws-auth.cc:2279,1
    - Dst: stringFromJson
      Src: /src/pdns/pdns/ws-auth.cc:2279,1
    - Dst: apiCheckQNameAllowedCharacters
      Src: /src/pdns/pdns/ws-auth.cc:2280,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/ws-auth.cc:2280,1
    - Dst: QType::QType
      Src: /src/pdns/pdns/ws-auth.cc:2281,1
    - Dst: stringFromJson
      Src: /src/pdns/pdns/ws-auth.cc:2282,1
    - Dst: QType::getCode
      Src: /src/pdns/pdns/ws-auth.cc:2283,1
    - Dst: ApiException
      Src: /src/pdns/pdns/ws-auth.cc:2284,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/ws-auth.cc:2284,1
    - Dst: stringFromJson
      Src: /src/pdns/pdns/ws-auth.cc:2284,1
    - Dst: is_array
      Src: /src/pdns/pdns/ws-auth.cc:2286,1
    - Dst: uintFromJson
      Src: /src/pdns/pdns/ws-auth.cc:2287,1
    - Dst: gatherRecords
      Src: /src/pdns/pdns/ws-auth.cc:2288,1
    - Dst: is_array
      Src: /src/pdns/pdns/ws-auth.cc:2290,1
    - Dst: gatherComments
      Src: /src/pdns/pdns/ws-auth.cc:2291,1
    - Dst: ApiException
      Src: /src/pdns/pdns/ws-auth.cc:2296,1
    - Dst: string
      Src: /src/pdns/pdns/ws-auth.cc:2296,1
    - Dst: what
      Src: /src/pdns/pdns/ws-auth.cc:2296,1
    - Dst: qname::makeUsLowerCase
      Src: /src/pdns/pdns/ws-auth.cc:2300,1
    - Dst: qname::isPartOf
      Src: /src/pdns/pdns/ws-auth.cc:2301,1
    - Dst: ApiException
      Src: /src/pdns/pdns/ws-auth.cc:2302,1
    - Dst: qname::toString
      Src: /src/pdns/pdns/ws-auth.cc:2302,1
    - Dst: qtype::toString
      Src: /src/pdns/pdns/ws-auth.cc:2302,1
    - Dst: apiCheckQNameAllowedCharacters
      Src: /src/pdns/pdns/ws-auth.cc:2304,1
    - Dst: qname::toString
      Src: /src/pdns/pdns/ws-auth.cc:2304,1
    - Dst: qtype::getCode
      Src: /src/pdns/pdns/ws-auth.cc:2306,1
    - Dst: ApiException
      Src: /src/pdns/pdns/ws-auth.cc:2313,1
    - Dst: vector::empty
      Src: /src/pdns/pdns/ws-auth.cc:2315,1
    - Dst: ApiException
      Src: /src/pdns/pdns/ws-auth.cc:2317,1
    - Dst: areUnderscoresAllowed
      Src: /src/pdns/pdns/ws-auth.cc:2320,1
    - Dst: static_cast<Check::RRSetFlags>
      Src: /src/pdns/pdns/ws-auth.cc:2323,1
    - Dst: checkNewRecords
      Src: /src/pdns/pdns/ws-auth.cc:2325,1
    - Dst: ZoneData::domainInfo::backend::startTransaction
      Src: /src/pdns/pdns/ws-auth.cc:2329,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/ws-auth.cc:2331,1
    - Dst: ZoneData::domainInfo::backend::feedRecord
      Src: /src/pdns/pdns/ws-auth.cc:2332,1
    - Dst: DNSName
      Src: /src/pdns/pdns/ws-auth.cc:2332,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/ws-auth.cc:2335,1
    - Dst: ZoneData::domainInfo::backend::feedComment
      Src: /src/pdns/pdns/ws-auth.cc:2336,1
    - Dst: ZoneData::domainInfo::backend::setStale
      Src: /src/pdns/pdns/ws-auth.cc:2340,1
    - Dst: ZoneData::domainInfo::backend::startTransaction
      Src: /src/pdns/pdns/ws-auth.cc:2345,1
    - Dst: updateDomainSettingsFromDocument
      Src: /src/pdns/pdns/ws-auth.cc:2349,1
    - Dst: ZoneData::domainInfo::backend::commitTransaction
      Src: /src/pdns/pdns/ws-auth.cc:2350,1
    - Dst: purgeAuthCaches
      Src: /src/pdns/pdns/ws-auth.cc:2352,1
    - Dst: toString
      Src: /src/pdns/pdns/ws-auth.cc:2352,1
    CyclomaticComplexity: 28
    EdgeCount: 28
    ICount: 63
    argCount: 2
    argNames:
    - req
    - resp
    argTypes:
    - HttpRequest*
    - HttpResponse*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2356
      start: 2251
    functionDepth: 6
    functionLinenumber: 2251
    functionLinenumberEnd: 2356
    functionName: apiServerZoneDetailPUT
    functionSourceFile: /src/pdns/pdns/ws-auth.cc
    functionUses: 0
    functionsReached:
    - toString
    - gatherRecords
    - areUnderscoresAllowed
    - ApiException
    - DNSName::toString
    - static_cast<Check::RRSetFlags>
    - gatherComments
    - apiNameToDNSName
    - checkNewRecords
    - static_cast<int>
    - ZoneData::domainInfo::backend::getDomainMetadataOne
    - is_string
    - stringFromJson
    - uintFromJson
    - string
    - qname::makeUsLowerCase
    - ZoneData::domainInfo::backend::startTransaction
    - apiCheckQNameAllowedCharacters
    - ZoneData::domainInfo::backend::feedComment
    - stringToKind
    - qname::toString
    - ZoneData::domainInfo::backend::commitTransaction
    - DNSName
    - qtype::getCode
    - vector::empty
    - auto::is_array
    - HttpRequest*::json
    - auto::array_items
    - QType::QType
    - qtype::toString
    - what
    - ZoneData::domainInfo::backend::feedRecord
    - purgeAuthCaches
    - is_array
    - QType::getCode
    - qname::isPartOf
    - ZoneData::domainInfo::backend::setStale
    - updateDomainSettingsFromDocument
    linkageType: ''
    returnType: void
    signature: void apiServerZoneDetailPUT(HttpRequest* req, HttpResponse* resp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ZoneData::domainInfo::backend::startTransaction
      Src: /src/pdns/pdns/ws-auth.cc:2364,1
    - Dst: ZoneData::domainInfo::backend::deleteDomain
      Src: /src/pdns/pdns/ws-auth.cc:2366,1
    - Dst: ApiException
      Src: /src/pdns/pdns/ws-auth.cc:2367,1
    - Dst: ZoneData::zoneName::toString
      Src: /src/pdns/pdns/ws-auth.cc:2367,1
    - Dst: ZoneData::domainInfo::backend::commitTransaction
      Src: /src/pdns/pdns/ws-auth.cc:2370,1
    - Dst: remove
      Src: /src/pdns/pdns/ws-auth.cc:2372,1
    - Dst: ZoneData::domainInfo::backend::abortTransaction
      Src: /src/pdns/pdns/ws-auth.cc:2375,1
    - Dst: DNSSECKeeper::clearCaches
      Src: /src/pdns/pdns/ws-auth.cc:2380,1
    - Dst: purgeAuthCaches
      Src: /src/pdns/pdns/ws-auth.cc:2381,1
    - Dst: toString
      Src: /src/pdns/pdns/ws-auth.cc:2381,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 2
    argNames:
    - req
    - resp
    argTypes:
    - HttpRequest*
    - HttpResponse*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2386
      start: 2358
    functionDepth: 2
    functionLinenumber: 2358
    functionLinenumberEnd: 2386
    functionName: apiServerZoneDetailDELETE
    functionSourceFile: /src/pdns/pdns/ws-auth.cc
    functionUses: 0
    functionsReached:
    - toString
    - DNSSECKeeper::clearCaches
    - ZoneData::domainInfo::backend::commitTransaction
    - purgeAuthCaches
    - ApiException
    - remove
    - ZoneData::domainInfo::backend::abortTransaction
    - ZoneData::domainInfo::backend::startTransaction
    - ZoneData::domainInfo::backend::deleteDomain
    - ZoneData::zoneName::toString
    linkageType: ''
    returnType: void
    signature: void apiServerZoneDetailDELETE(HttpRequest* req, HttpResponse* resp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: HttpRequest*::json
      Src: /src/pdns/pdns/ws-auth.cc:2391,1
    - Dst: auto::is_array
      Src: /src/pdns/pdns/ws-auth.cc:2394,1
    - Dst: ApiException
      Src: /src/pdns/pdns/ws-auth.cc:2395,1
    - Dst: patchZone
      Src: /src/pdns/pdns/ws-auth.cc:2398,1
    - Dst: auto::array_items
      Src: /src/pdns/pdns/ws-auth.cc:2398,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - req
    - resp
    argTypes:
    - HttpRequest*
    - HttpResponse*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2399
      start: 2388
    functionDepth: 1
    functionLinenumber: 2388
    functionLinenumberEnd: 2399
    functionName: apiServerZoneDetailPATCH
    functionSourceFile: /src/pdns/pdns/ws-auth.cc
    functionUses: 0
    functionsReached:
    - auto::array_items
    - ApiException
    - auto::is_array
    - HttpRequest*::json
    - patchZone
    linkageType: ''
    returnType: void
    signature: void apiServerZoneDetailPATCH(HttpRequest* req, HttpResponse* resp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fillZone
      Src: /src/pdns/pdns/ws-auth.cc:2404,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - req
    - resp
    argTypes:
    - HttpRequest*
    - HttpResponse*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2405
      start: 2401
    functionDepth: 0
    functionLinenumber: 2401
    functionLinenumberEnd: 2405
    functionName: apiServerZoneDetailGET
    functionSourceFile: /src/pdns/pdns/ws-auth.cc
    functionUses: 0
    functionsReached:
    - fillZone
    linkageType: ''
    returnType: void
    signature: void apiServerZoneDetailGET(HttpRequest* req, HttpResponse* resp)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ZoneData::domainInfo::backend::list
      Src: /src/pdns/pdns/ws-auth.cc:2415,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/ws-auth.cc:2415,1
    - Dst: ZoneData::domainInfo::backend::get
      Src: /src/pdns/pdns/ws-auth.cc:2416,1
    - Dst: DNSResourceRecord::qtype::getCode
      Src: /src/pdns/pdns/ws-auth.cc:2417,1
    - Dst: makeApiRecordContent
      Src: /src/pdns/pdns/ws-auth.cc:2423,1
    - Dst: ApiException
      Src: /src/pdns/pdns/ws-auth.cc:2431,1
    - Dst: DNSResourceRecord::qname::toString
      Src: /src/pdns/pdns/ws-auth.cc:2431,1
    - Dst: what
      Src: /src/pdns/pdns/ws-auth.cc:2431,1
    - Dst: DNSResourceRecord::qname::toString
      Src: /src/pdns/pdns/ws-auth.cc:2433,1
    - Dst: DNSResourceRecord::qtype::toString
      Src: /src/pdns/pdns/ws-auth.cc:2435,1
    - Dst: HttpResponse*::setJsonBody
      Src: /src/pdns/pdns/ws-auth.cc:2439,1
    - Dst: ostringstream::str
      Src: /src/pdns/pdns/ws-auth.cc:2439,1
    - Dst: ostringstream::str
      Src: /src/pdns/pdns/ws-auth.cc:2443,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 2
    argNames:
    - req
    - resp
    argTypes:
    - HttpRequest*
    - HttpResponse*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2445
      start: 2407
    functionDepth: 2
    functionLinenumber: 2407
    functionLinenumberEnd: 2445
    functionName: apiServerZoneExport
    functionSourceFile: /src/pdns/pdns/ws-auth.cc
    functionUses: 0
    functionsReached:
    - ZoneData::domainInfo::backend::list
    - DNSResourceRecord::qtype::toString
    - DNSResourceRecord::qname::toString
    - what
    - ZoneData::domainInfo::backend::get
    - ApiException
    - HttpResponse*::setJsonBody
    - ostringstream::str
    - DNSResourceRecord::qtype::getCode
    - makeApiRecordContent
    - static_cast<int>
    linkageType: ''
    returnType: void
    signature: void apiServerZoneExport(HttpRequest* req, HttpResponse* resp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ZoneData::domainInfo::primaries::empty
      Src: /src/pdns/pdns/ws-auth.cc:2451,1
    - Dst: ApiException
      Src: /src/pdns/pdns/ws-auth.cc:2452,1
    - Dst: ZoneData::zoneName::toString
      Src: /src/pdns/pdns/ws-auth.cc:2452,1
    - Dst: shuffle
      Src: /src/pdns/pdns/ws-auth.cc:2455,1
    - Dst: ZoneData::domainInfo::primaries::begin
      Src: /src/pdns/pdns/ws-auth.cc:2455,1
    - Dst: ZoneData::domainInfo::primaries::end
      Src: /src/pdns/pdns/ws-auth.cc:2455,1
    - Dst: pdns::dns_random_engine
      Src: /src/pdns/pdns/ws-auth.cc:2455,1
    - Dst: addSuckRequest
      Src: /src/pdns/pdns/ws-auth.cc:2456,1
    - Dst: ZoneData::domainInfo::primaries::front
      Src: /src/pdns/pdns/ws-auth.cc:2456,1
    - Dst: HttpResponse*::setSuccessResult
      Src: /src/pdns/pdns/ws-auth.cc:2457,1
    - Dst: ZoneData::zoneName::toString
      Src: /src/pdns/pdns/ws-auth.cc:2457,1
    - Dst: ZoneData::domainInfo::primaries::front
      Src: /src/pdns/pdns/ws-auth.cc:2457,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - req
    - resp
    argTypes:
    - HttpRequest*
    - HttpResponse*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2458
      start: 2447
    functionDepth: 0
    functionLinenumber: 2447
    functionLinenumberEnd: 2458
    functionName: apiServerZoneAxfrRetrieve
    functionSourceFile: /src/pdns/pdns/ws-auth.cc
    functionUses: 0
    functionsReached:
    - ZoneData::domainInfo::primaries::end
    - ZoneData::domainInfo::primaries::empty
    - ApiException
    - shuffle
    - addSuckRequest
    - HttpResponse*::setSuccessResult
    - ZoneData::domainInfo::primaries::front
    - ZoneData::domainInfo::primaries::begin
    - pdns::dns_random_engine
    - ZoneData::zoneName::toString
    linkageType: ''
    returnType: void
    signature: void apiServerZoneAxfrRetrieve(HttpRequest* req, HttpResponse* resp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: notifyDomain
      Src: /src/pdns/pdns/ws-auth.cc:2464,1
    - Dst: ApiException
      Src: /src/pdns/pdns/ws-auth.cc:2465,1
    - Dst: HttpResponse*::setSuccessResult
      Src: /src/pdns/pdns/ws-auth.cc:2468,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - req
    - resp
    argTypes:
    - HttpRequest*
    - HttpResponse*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2469
      start: 2460
    functionDepth: 0
    functionLinenumber: 2460
    functionLinenumberEnd: 2469
    functionName: apiServerZoneNotify
    functionSourceFile: /src/pdns/pdns/ws-auth.cc
    functionUses: 0
    functionsReached:
    - HttpResponse*::setSuccessResult
    - notifyDomain
    - ApiException
    linkageType: ''
    returnType: void
    signature: void apiServerZoneNotify(HttpRequest* req, HttpResponse* resp)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ZoneData::dnssecKeeper::isPresigned
      Src: /src/pdns/pdns/ws-auth.cc:2475,1
    - Dst: ApiException
      Src: /src/pdns/pdns/ws-auth.cc:2476,1
    - Dst: ZoneData::zoneName::toString
      Src: /src/pdns/pdns/ws-auth.cc:2476,1
    - Dst: ZoneData::dnssecKeeper::rectifyZone
      Src: /src/pdns/pdns/ws-auth.cc:2481,1
    - Dst: ApiException
      Src: /src/pdns/pdns/ws-auth.cc:2482,1
    - Dst: ZoneData::zoneName::toString
      Src: /src/pdns/pdns/ws-auth.cc:2482,1
    - Dst: HttpResponse*::setSuccessResult
      Src: /src/pdns/pdns/ws-auth.cc:2485,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 2
    argNames:
    - req
    - resp
    argTypes:
    - HttpRequest*
    - HttpResponse*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2486
      start: 2471
    functionDepth: 2
    functionLinenumber: 2471
    functionLinenumberEnd: 2486
    functionName: apiServerZoneRectify
    functionSourceFile: /src/pdns/pdns/ws-auth.cc
    functionUses: 0
    functionsReached:
    - ApiException
    - HttpResponse*::setSuccessResult
    - ZoneData::dnssecKeeper::rectifyZone
    - ZoneData::zoneName::toString
    - ZoneData::dnssecKeeper::isPresigned
    linkageType: ''
    returnType: void
    signature: void apiServerZoneRectify(HttpRequest* req, HttpResponse* resp)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ApiException
      Src: /src/pdns/pdns/ws-auth.cc:2514,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 1
    argNames:
    - ' changetype'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2515
      start: 2500
    functionDepth: 0
    functionLinenumber: 2500
    functionLinenumberEnd: 2515
    functionName: validateChangeType
    functionSourceFile: /src/pdns/pdns/ws-auth.cc
    functionUses: 0
    functionsReached:
    - ApiException
    linkageType: ''
    returnType: changeType
    signature: changeType validateChangeType(const std::string& changetype)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: backend::APILookup
      Src: /src/pdns/pdns/ws-auth.cc:2527,1
    - Dst: QType
      Src: /src/pdns/pdns/ws-auth.cc:2527,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/ws-auth.cc:2527,1
    - Dst: backend::get
      Src: /src/pdns/pdns/ws-auth.cc:2529,1
    - Dst: DNSResourceRecord::qtype::getCode
      Src: /src/pdns/pdns/ws-auth.cc:2530,1
    - Dst: QType::getCode
      Src: /src/pdns/pdns/ws-auth.cc:2537,1
    - Dst: DNSResourceRecord::qtype::getCode
      Src: /src/pdns/pdns/ws-auth.cc:2537,1
    - Dst: count
      Src: /src/pdns/pdns/ws-auth.cc:2538,1
    - Dst: QType::getCode
      Src: /src/pdns/pdns/ws-auth.cc:2538,1
    - Dst: count
      Src: /src/pdns/pdns/ws-auth.cc:2539,1
    - Dst: DNSResourceRecord::qtype::getCode
      Src: /src/pdns/pdns/ws-auth.cc:2539,1
    - Dst: backend::lookupEnd
      Src: /src/pdns/pdns/ws-auth.cc:2541,1
    - Dst: ApiException
      Src: /src/pdns/pdns/ws-auth.cc:2542,1
    - Dst: toString
      Src: /src/pdns/pdns/ws-auth.cc:2542,1
    - Dst: QType::toString
      Src: /src/pdns/pdns/ws-auth.cc:2542,1
    - Dst: ApiException
      Src: /src/pdns/pdns/ws-auth.cc:2546,1
    - Dst: toString
      Src: /src/pdns/pdns/ws-auth.cc:2546,1
    - Dst: QType::toString
      Src: /src/pdns/pdns/ws-auth.cc:2546,1
    - Dst: empty
      Src: /src/pdns/pdns/ws-auth.cc:2548,1
    - Dst: backend::replaceRRSet
      Src: /src/pdns/pdns/ws-auth.cc:2550,1
    - Dst: ApiException
      Src: /src/pdns/pdns/ws-auth.cc:2551,1
    - Dst: backend::replaceRRSet
      Src: /src/pdns/pdns/ws-auth.cc:2554,1
    - Dst: ApiException
      Src: /src/pdns/pdns/ws-auth.cc:2555,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 25
    argCount: 5
    argNames:
    - ' domainInfo'
    - ' zonename'
    - ' new_records'
    - ' qname'
    - qtype
    argTypes:
    - DomainInfo
    - ZoneName
    - vector<DNSResourceRecord>
    - DNSName
    - QType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2557
      start: 2521
    functionDepth: 3
    functionLinenumber: 2521
    functionLinenumberEnd: 2557
    functionName: replaceZoneRecords
    functionSourceFile: /src/pdns/pdns/ws-auth.cc
    functionUses: 0
    functionsReached:
    - backend::get
    - toString
    - backend::replaceRRSet
    - backend::APILookup
    - count
    - QType
    - QType::toString
    - ApiException
    - QType::getCode
    - DNSResourceRecord::qtype::getCode
    - backend::lookupEnd
    - empty
    - static_cast<int>
    linkageType: ''
    returnType: void
    signature: void replaceZoneRecords(const DomainInfo& domainInfo, const ZoneName&
      zonename, vector<DNSResourceRecord>& new_records, const DNSName& qname, const
      QType qtype)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: apiNameToDNSName
      Src: /src/pdns/pdns/ws-auth.cc:2562,1
    - Dst: stringFromJson
      Src: /src/pdns/pdns/ws-auth.cc:2562,1
    - Dst: apiCheckQNameAllowedCharacters
      Src: /src/pdns/pdns/ws-auth.cc:2563,1
    - Dst: toString
      Src: /src/pdns/pdns/ws-auth.cc:2563,1
    - Dst: stringFromJson
      Src: /src/pdns/pdns/ws-auth.cc:2564,1
    - Dst: getCode
      Src: /src/pdns/pdns/ws-auth.cc:2565,1
    - Dst: ApiException
      Src: /src/pdns/pdns/ws-auth.cc:2566,1
    - Dst: toString
      Src: /src/pdns/pdns/ws-auth.cc:2566,1
    - Dst: stringFromJson
      Src: /src/pdns/pdns/ws-auth.cc:2566,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - ' rrset'
    - ' qname'
    - ' qtype'
    argTypes:
    - Json
    - DNSName
    - QType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2568
      start: 2560
    functionDepth: 0
    functionLinenumber: 2560
    functionLinenumberEnd: 2568
    functionName: parseRecordNameAndType
    functionSourceFile: /src/pdns/pdns/ws-auth.cc
    functionUses: 0
    functionsReached:
    - toString
    - stringFromJson
    - ApiException
    - apiCheckQNameAllowedCharacters
    - apiNameToDNSName
    - getCode
    linkageType: ''
    returnType: void
    signature: void parseRecordNameAndType(const Json& rrset, DNSName& qname, QType&
      qtype)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: arg
      Src: /src/pdns/pdns/ws-auth.cc:2582,1
    - Dst: ApiException
      Src: /src/pdns/pdns/ws-auth.cc:2584,1
    - Dst: backend::replaceRRSet
      Src: /src/pdns/pdns/ws-auth.cc:2588,1
    - Dst: ApiException
      Src: /src/pdns/pdns/ws-auth.cc:2589,1
    - Dst: clear
      Src: /src/pdns/pdns/ws-auth.cc:2593,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 13
    argCount: 5
    argNames:
    - ' domainInfo'
    - ' qname'
    - ' qtype'
    - returnRRset
    - ' rrset'
    argTypes:
    - DomainInfo
    - DNSName
    - QType
    - bool
    - std::vector<DNSResourceRecord>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2596
      start: 2579
    functionDepth: 3
    functionLinenumber: 2579
    functionLinenumberEnd: 2596
    functionName: applyDelete
    functionSourceFile: /src/pdns/pdns/ws-auth.cc
    functionUses: 0
    functionsReached:
    - clear
    - backend::replaceRRSet
    - arg
    - ApiException
    linkageType: ''
    returnType: applyResult
    signature: applyResult applyDelete(const DomainInfo& domainInfo, DNSName& qname,
      QType& qtype, bool returnRRset, std::vector<DNSResourceRecord>& rrset)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: is_array
      Src: /src/pdns/pdns/ws-auth.cc:2610,1
    - Dst: is_array
      Src: /src/pdns/pdns/ws-auth.cc:2611,1
    - Dst: ApiException
      Src: /src/pdns/pdns/ws-auth.cc:2614,1
    - Dst: toString
      Src: /src/pdns/pdns/ws-auth.cc:2614,1
    - Dst: toString
      Src: /src/pdns/pdns/ws-auth.cc:2614,1
    - Dst: uintFromJson
      Src: /src/pdns/pdns/ws-auth.cc:2623,1
    - Dst: gatherRecords
      Src: /src/pdns/pdns/ws-auth.cc:2624,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/ws-auth.cc:2627,1
    - Dst: qtype::getCode
      Src: /src/pdns/pdns/ws-auth.cc:2628,1
    - Dst: increaseSOARecord
      Src: /src/pdns/pdns/ws-auth.cc:2629,1
    - Dst: checkNewRecords
      Src: /src/pdns/pdns/ws-auth.cc:2637,1
    - Dst: gatherComments
      Src: /src/pdns/pdns/ws-auth.cc:2644,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/ws-auth.cc:2647,1
    - Dst: ApiException
      Src: /src/pdns/pdns/ws-auth.cc:2652,1
    - Dst: string
      Src: /src/pdns/pdns/ws-auth.cc:2652,1
    - Dst: what
      Src: /src/pdns/pdns/ws-auth.cc:2652,1
    - Dst: replaceZoneRecords
      Src: /src/pdns/pdns/ws-auth.cc:2656,1
    - Dst: backend::replaceComments
      Src: /src/pdns/pdns/ws-auth.cc:2659,1
    - Dst: ApiException
      Src: /src/pdns/pdns/ws-auth.cc:2660,1
    - Dst: std::move
      Src: /src/pdns/pdns/ws-auth.cc:2665,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 39
    argCount: 10
    argNames:
    - ' domainInfo'
    - ' zonename'
    - ' container'
    - ' qname'
    - ' qtype'
    - allowUnderscores
    - ' soa'
    - resp
    - returnRRset
    - ' rrset'
    argTypes:
    - DomainInfo
    - ZoneName
    - Json
    - DNSName
    - QType
    - bool
    - soaEditSettings
    - HttpResponse*
    - bool
    - std::vector<DNSResourceRecord>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2668
      start: 2608
    functionDepth: 4
    functionLinenumber: 2608
    functionLinenumberEnd: 2668
    functionName: applyReplace
    functionSourceFile: /src/pdns/pdns/ws-auth.cc
    functionUses: 0
    functionsReached:
    - std::move
    - toString
    - backend::replaceComments
    - gatherRecords
    - uintFromJson
    - what
    - replaceZoneRecords
    - string
    - ApiException
    - qtype::getCode
    - is_array
    - increaseSOARecord
    - gatherComments
    - checkNewRecords
    - static_cast<int>
    linkageType: ''
    returnType: applyResult
    signature: applyResult applyReplace(const DomainInfo& domainInfo, const ZoneName&
      zonename, const Json& container, DNSName& qname, QType& qtype, bool allowUnderscores,
      soaEditSettings& soa, HttpResponse* resp, bool returnRRset, std::vector<DNSResourceRecord>&
      rrset)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: is_array
      Src: /src/pdns/pdns/ws-auth.cc:2673,1
    - Dst: ApiException
      Src: /src/pdns/pdns/ws-auth.cc:2674,1
    - Dst: uintFromJson
      Src: /src/pdns/pdns/ws-auth.cc:2679,1
    - Dst: gatherRecords
      Src: /src/pdns/pdns/ws-auth.cc:2680,1
    - Dst: vector::size
      Src: /src/pdns/pdns/ws-auth.cc:2681,1
    - Dst: ApiException
      Src: /src/pdns/pdns/ws-auth.cc:2682,1
    - Dst: vector::front
      Src: /src/pdns/pdns/ws-auth.cc:2685,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/ws-auth.cc:2686,1
    - Dst: qtype::getCode
      Src: /src/pdns/pdns/ws-auth.cc:2687,1
    - Dst: increaseSOARecord
      Src: /src/pdns/pdns/ws-auth.cc:2688,1
    - Dst: begin
      Src: /src/pdns/pdns/ws-auth.cc:2693,1
    - Dst: end
      Src: /src/pdns/pdns/ws-auth.cc:2693,1
    - Dst: erase
      Src: /src/pdns/pdns/ws-auth.cc:2700,1
    - Dst: emplace_back
      Src: /src/pdns/pdns/ws-auth.cc:2707,1
    - Dst: static_cast<Check::RRSetFlags>
      Src: /src/pdns/pdns/ws-auth.cc:2717,1
    - Dst: checkNewRecords
      Src: /src/pdns/pdns/ws-auth.cc:2719,1
    - Dst: backend::replaceRRSet
      Src: /src/pdns/pdns/ws-auth.cc:2724,1
    - Dst: ApiException
      Src: /src/pdns/pdns/ws-auth.cc:2725,1
    - Dst: ApiException
      Src: /src/pdns/pdns/ws-auth.cc:2729,1
    - Dst: string
      Src: /src/pdns/pdns/ws-auth.cc:2729,1
    - Dst: what
      Src: /src/pdns/pdns/ws-auth.cc:2729,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 41
    argCount: 10
    argNames:
    - ' domainInfo'
    - ' zonename'
    - ' container'
    - ' qname'
    - ' qtype'
    - allowUnderscores
    - ' soa'
    - resp
    - operationType
    - ' rrset'
    argTypes:
    - DomainInfo
    - ZoneName
    - Json
    - DNSName
    - QType
    - bool
    - soaEditSettings
    - HttpResponse*
    - changeType
    - std::vector<DNSResourceRecord>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2732
      start: 2671
    functionDepth: 4
    functionLinenumber: 2671
    functionLinenumberEnd: 2732
    functionName: applyPruneOrExtend
    functionSourceFile: /src/pdns/pdns/ws-auth.cc
    functionUses: 0
    functionsReached:
    - gatherRecords
    - backend::replaceRRSet
    - uintFromJson
    - what
    - end
    - string
    - vector::front
    - ApiException
    - qtype::getCode
    - is_array
    - increaseSOARecord
    - emplace_back
    - begin
    - static_cast<Check::RRSetFlags>
    - vector::size
    - erase
    - checkNewRecords
    - static_cast<int>
    linkageType: ''
    returnType: applyResult
    signature: applyResult applyPruneOrExtend(const DomainInfo& domainInfo, const
      ZoneName& zonename, const Json& container, DNSName& qname, QType& qtype, bool
      allowUnderscores, soaEditSettings& soa, HttpResponse* resp, changeType operationType,
      std::vector<DNSResourceRecord>& rrset)
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: backend::startTransaction
      Src: /src/pdns/pdns/ws-auth.cc:2737,1
    - Dst: backend::getDomainMetadataOne
      Src: /src/pdns/pdns/ws-auth.cc:2740,1
    - Dst: backend::getDomainMetadataOne
      Src: /src/pdns/pdns/ws-auth.cc:2741,1
    - Dst: areUnderscoresAllowed
      Src: /src/pdns/pdns/ws-auth.cc:2742,1
    - Dst: toUpper
      Src: /src/pdns/pdns/ws-auth.cc:2759,1
    - Dst: stringFromJson
      Src: /src/pdns/pdns/ws-auth.cc:2759,1
    - Dst: validateChangeType
      Src: /src/pdns/pdns/ws-auth.cc:2760,1
    - Dst: DNSName::DNSName
      Src: /src/pdns/pdns/ws-auth.cc:2761,1
    - Dst: QType::QType
      Src: /src/pdns/pdns/ws-auth.cc:2762,1
    - Dst: parseRecordNameAndType
      Src: /src/pdns/pdns/ws-auth.cc:2763,1
    - Dst: ApiException
      Src: /src/pdns/pdns/ws-auth.cc:2768,1
    - Dst: DNSName::isPartOf
      Src: /src/pdns/pdns/ws-auth.cc:2773,1
    - Dst: ApiException
      Src: /src/pdns/pdns/ws-auth.cc:2774,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/ws-auth.cc:2774,1
    - Dst: QType::toString
      Src: /src/pdns/pdns/ws-auth.cc:2774,1
    - Dst: std::map::find
      Src: /src/pdns/pdns/ws-auth.cc:2782,1
    - Dst: std::map::end
      Src: /src/pdns/pdns/ws-auth.cc:2782,1
    - Dst: ApiException
      Src: /src/pdns/pdns/ws-auth.cc:2789,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/ws-auth.cc:2789,1
    - Dst: QType::toString
      Src: /src/pdns/pdns/ws-auth.cc:2789,1
    - Dst: std::map::insert_or_assign
      Src: /src/pdns/pdns/ws-auth.cc:2792,1
    - Dst: std::map::insert
      Src: /src/pdns/pdns/ws-auth.cc:2795,1
    - Dst: toUpper
      Src: /src/pdns/pdns/ws-auth.cc:2803,1
    - Dst: stringFromJson
      Src: /src/pdns/pdns/ws-auth.cc:2803,1
    - Dst: validateChangeType
      Src: /src/pdns/pdns/ws-auth.cc:2804,1
    - Dst: DNSName::DNSName
      Src: /src/pdns/pdns/ws-auth.cc:2805,1
    - Dst: QType::QType
      Src: /src/pdns/pdns/ws-auth.cc:2806,1
    - Dst: parseRecordNameAndType
      Src: /src/pdns/pdns/ws-auth.cc:2807,1
    - Dst: std::map::find
      Src: /src/pdns/pdns/ws-auth.cc:2811,1
    - Dst: std::map::end
      Src: /src/pdns/pdns/ws-auth.cc:2811,1
    - Dst: applyDelete
      Src: /src/pdns/pdns/ws-auth.cc:2820,1
    - Dst: applyReplace
      Src: /src/pdns/pdns/ws-auth.cc:2823,1
    - Dst: std::map::find
      Src: /src/pdns/pdns/ws-auth.cc:2829,1
    - Dst: std::map::end
      Src: /src/pdns/pdns/ws-auth.cc:2829,1
    - Dst: std::move
      Src: /src/pdns/pdns/ws-auth.cc:2830,1
    - Dst: backend::lookup
      Src: /src/pdns/pdns/ws-auth.cc:2834,1
    - Dst: backend::get
      Src: /src/pdns/pdns/ws-auth.cc:2835,1
    - Dst: std::vector::emplace_back
      Src: /src/pdns/pdns/ws-auth.cc:2836,1
    - Dst: applyPruneOrExtend
      Src: /src/pdns/pdns/ws-auth.cc:2839,1
    - Dst: backend::abortTransaction
      Src: /src/pdns/pdns/ws-auth.cc:2844,1
    - Dst: std::map::insert_or_assign
      Src: /src/pdns/pdns/ws-auth.cc:2852,1
    - Dst: std::move
      Src: /src/pdns/pdns/ws-auth.cc:2852,1
    - Dst: std::map::clear
      Src: /src/pdns/pdns/ws-auth.cc:2855,1
    - Dst: getSOAUncached
      Src: /src/pdns/pdns/ws-auth.cc:2859,1
    - Dst: soaEditSettings::edit_api_kind::empty
      Src: /src/pdns/pdns/ws-auth.cc:2862,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/ws-auth.cc:2864,1
    - Dst: updateZoneSerial
      Src: /src/pdns/pdns/ws-auth.cc:2866,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/ws-auth.cc:2869,1
    - Dst: DNSSECKeeper::isPresigned
      Src: /src/pdns/pdns/ws-auth.cc:2874,1
    - Dst: isZoneApiRectifyEnabled
      Src: /src/pdns/pdns/ws-auth.cc:2874,1
    - Dst: DNSSECKeeper::rectifyZone
      Src: /src/pdns/pdns/ws-auth.cc:2877,1
    - Dst: ApiException
      Src: /src/pdns/pdns/ws-auth.cc:2878,1
    - Dst: toString
      Src: /src/pdns/pdns/ws-auth.cc:2878,1
    - Dst: backend::abortTransaction
      Src: /src/pdns/pdns/ws-auth.cc:2884,1
    - Dst: backend::commitTransaction
      Src: /src/pdns/pdns/ws-auth.cc:2889,1
    - Dst: DNSSECKeeper::clearCaches
      Src: /src/pdns/pdns/ws-auth.cc:2891,1
    - Dst: purgeAuthCaches
      Src: /src/pdns/pdns/ws-auth.cc:2892,1
    - Dst: toString
      Src: /src/pdns/pdns/ws-auth.cc:2892,1
    - Dst: backend::abortTransaction
      Src: /src/pdns/pdns/ws-auth.cc:2895,1
    CyclomaticComplexity: 34
    EdgeCount: 34
    ICount: 89
    argCount: 5
    argNames:
    - ' backend'
    - ' zonename'
    - ' domainInfo'
    - ' rrsets'
    - resp
    argTypes:
    - UeberBackend
    - ZoneName
    - DomainInfo
    - vector<Json>
    - HttpResponse*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2900
      start: 2734
    functionDepth: 5
    functionLinenumber: 2734
    functionLinenumberEnd: 2900
    functionName: patchZone
    functionSourceFile: /src/pdns/pdns/ws-auth.cc
    functionUses: 1
    functionsReached:
    - backend::get
    - toString
    - std::to_string
    - backend::lookup
    - applyDelete
    - backend::getDomainMetadataOne
    - updateZoneSerial
    - areUnderscoresAllowed
    - ApiException
    - DNSSECKeeper::rectifyZone
    - DNSName::toString
    - getSOAUncached
    - backend::commitTransaction
    - std::map::insert_or_assign
    - stringFromJson
    - toUpper
    - applyPruneOrExtend
    - DNSName::isPartOf
    - std::map::find
    - soaEditSettings::edit_api_kind::empty
    - backend::abortTransaction
    - DNSSECKeeper::clearCaches
    - QType::toString
    - applyReplace
    - parseRecordNameAndType
    - std::map::end
    - std::move
    - QType::QType
    - validateChangeType
    - std::map::insert
    - std::vector::emplace_back
    - purgeAuthCaches
    - backend::startTransaction
    - std::map::clear
    - DNSName::DNSName
    - isZoneApiRectifyEnabled
    - DNSSECKeeper::isPresigned
    linkageType: ''
    returnType: void
    signature: void patchZone(UeberBackend& backend, const ZoneName& zonename, DomainInfo&
      domainInfo, const vector<Json>& rrsets, HttpResponse* resp)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: string::empty
      Src: /src/pdns/pdns/ws-auth.cc:2920,1
    - Dst: ApiException
      Src: /src/pdns/pdns/ws-auth.cc:2921,1
    - Dst: string::empty
      Src: /src/pdns/pdns/ws-auth.cc:2923,1
    - Dst: pdns::checked_stoi_into
      Src: /src/pdns/pdns/ws-auth.cc:2925,1
    - Dst: ApiException
      Src: /src/pdns/pdns/ws-auth.cc:2928,1
    - Dst: ApiException
      Src: /src/pdns/pdns/ws-auth.cc:2932,1
    - Dst: string::empty
      Src: /src/pdns/pdns/ws-auth.cc:2935,1
    - Dst: ApiException
      Src: /src/pdns/pdns/ws-auth.cc:2948,1
    - Dst: UeberBackend::UeberBackend
      Src: /src/pdns/pdns/ws-auth.cc:2952,1
    - Dst: UeberBackend::getAllDomains
      Src: /src/pdns/pdns/ws-auth.cc:2960,1
    - Dst: SimpleMatch::match
      Src: /src/pdns/pdns/ws-auth.cc:2963,1
    - Dst: Json::array::push_back
      Src: /src/pdns/pdns/ws-auth.cc:2964,1
    - Dst: apiZoneNameToId
      Src: /src/pdns/pdns/ws-auth.cc:2966,1
    - Dst: zone::toString
      Src: /src/pdns/pdns/ws-auth.cc:2967,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/ws-auth.cc:2970,1
    - Dst: UeberBackend::searchRecords
      Src: /src/pdns/pdns/ws-auth.cc:2973,1
    - Dst: qtype::getCode
      Src: /src/pdns/pdns/ws-auth.cc:2975,1
    - Dst: makeApiRecordContent
      Src: /src/pdns/pdns/ws-auth.cc:2981,1
    - Dst: ApiException
      Src: /src/pdns/pdns/ws-auth.cc:2989,1
    - Dst: qname::toString
      Src: /src/pdns/pdns/ws-auth.cc:2989,1
    - Dst: what
      Src: /src/pdns/pdns/ws-auth.cc:2989,1
    - Dst: qname::toString
      Src: /src/pdns/pdns/ws-auth.cc:2993,1
    - Dst: qtype::toString
      Src: /src/pdns/pdns/ws-auth.cc:2994,1
    - Dst: map::find
      Src: /src/pdns/pdns/ws-auth.cc:3002,1
    - Dst: map::end
      Src: /src/pdns/pdns/ws-auth.cc:3003,1
    - Dst: apiZoneNameToId
      Src: /src/pdns/pdns/ws-auth.cc:3004,1
    - Dst: map<int, DomainInfo>::iterator::second::zone::toString
      Src: /src/pdns/pdns/ws-auth.cc:3005,1
    - Dst: Json::array::emplace_back
      Src: /src/pdns/pdns/ws-auth.cc:3007,1
    - Dst: UeberBackend::searchComments
      Src: /src/pdns/pdns/ws-auth.cc:3011,1
    - Dst: qname::toString
      Src: /src/pdns/pdns/ws-auth.cc:3015,1
    - Dst: qtype::toString
      Src: /src/pdns/pdns/ws-auth.cc:3016,1
    - Dst: map::find
      Src: /src/pdns/pdns/ws-auth.cc:3019,1
    - Dst: map::end
      Src: /src/pdns/pdns/ws-auth.cc:3020,1
    - Dst: apiZoneNameToId
      Src: /src/pdns/pdns/ws-auth.cc:3021,1
    - Dst: map<int, DomainInfo>::iterator::second::zone::toString
      Src: /src/pdns/pdns/ws-auth.cc:3022,1
    - Dst: Json::array::emplace_back
      Src: /src/pdns/pdns/ws-auth.cc:3024,1
    - Dst: HttpResponse*::setJsonBody
      Src: /src/pdns/pdns/ws-auth.cc:3028,1
    CyclomaticComplexity: 33
    EdgeCount: 33
    ICount: 65
    argCount: 2
    argNames:
    - req
    - resp
    argTypes:
    - HttpRequest*
    - HttpResponse*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3029
      start: 2902
    functionDepth: 2
    functionLinenumber: 2902
    functionLinenumberEnd: 3029
    functionName: apiServerSearchData
    functionSourceFile: /src/pdns/pdns/ws-auth.cc
    functionUses: 0
    functionsReached:
    - ApiException
    - HttpResponse*::setJsonBody
    - Json::array::push_back
    - static_cast<int>
    - map::end
    - string::empty
    - zone::toString
    - UeberBackend::UeberBackend
    - SimpleMatch::match
    - makeApiRecordContent
    - pdns::checked_stoi_into
    - qname::toString
    - UeberBackend::searchRecords
    - qtype::getCode
    - Json::array::emplace_back
    - UeberBackend::searchComments
    - map<int, DomainInfo>::iterator::second::zone::toString
    - map::find
    - UeberBackend::getAllDomains
    - qtype::toString
    - what
    - apiZoneNameToId
    linkageType: ''
    returnType: void
    signature: void apiServerSearchData(HttpRequest* req, HttpResponse* resp)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: apiNameToZoneName
      Src: /src/pdns/pdns/ws-auth.cc:3033,1
    - Dst: isEnabled
      Src: /src/pdns/pdns/ws-auth.cc:3035,1
    - Dst: UeberBackend::UeberBackend
      Src: /src/pdns/pdns/ws-auth.cc:3037,1
    - Dst: UeberBackend::getDomainInfo
      Src: /src/pdns/pdns/ws-auth.cc:3038,1
    - Dst: add
      Src: /src/pdns/pdns/ws-auth.cc:3041,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/ws-auth.cc:3041,1
    - Dst: remove
      Src: /src/pdns/pdns/ws-auth.cc:3044,1
    - Dst: DNSSECKeeper::clearCaches
      Src: /src/pdns/pdns/ws-auth.cc:3048,1
    - Dst: purgeAuthCaches
      Src: /src/pdns/pdns/ws-auth.cc:3050,1
    - Dst: toString
      Src: /src/pdns/pdns/ws-auth.cc:3050,1
    - Dst: HttpResponse*::setJsonBody
      Src: /src/pdns/pdns/ws-auth.cc:3051,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - req
    - resp
    argTypes:
    - HttpRequest*
    - HttpResponse*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3054
      start: 3031
    functionDepth: 2
    functionLinenumber: 3031
    functionLinenumberEnd: 3054
    functionName: apiServerCacheFlush
    functionSourceFile: /src/pdns/pdns/ws-auth.cc
    functionUses: 0
    functionsReached:
    - add
    - toString
    - static_cast<int>
    - apiNameToZoneName
    - DNSSECKeeper::clearCaches
    - UeberBackend::UeberBackend
    - purgeAuthCaches
    - HttpResponse*::setJsonBody
    - isEnabled
    - remove
    - UeberBackend::getDomainInfo
    linkageType: ''
    returnType: void
    signature: void apiServerCacheFlush(HttpRequest* req, HttpResponse* resp)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<uint16_t>
      Src: /src/pdns/pdns/ws-auth.cc:3064,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - ' outStream'
    - statType
    argTypes:
    - std::ostream
    - StatType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3065
      start: 3056
    functionDepth: 0
    functionLinenumber: 3056
    functionLinenumberEnd: 3065
    functionName: '& operator<<(std::ostream& outStream, StatType statType)'
    functionSourceFile: /src/pdns/pdns/ws-auth.cc
    functionUses: 0
    functionsReached:
    - static_cast<uint16_t>
    linkageType: ''
    returnType: std::ostream
    signature: std::ostream & operator<<(std::ostream& outStream, StatType statType)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getEntries
      Src: /src/pdns/pdns/ws-auth.cc:3070,1
    - Dst: boost::replace_all_copy
      Src: /src/pdns/pdns/ws-auth.cc:3072,1
    - Dst: getDescrip
      Src: /src/pdns/pdns/ws-auth.cc:3074,1
    - Dst: getStatType
      Src: /src/pdns/pdns/ws-auth.cc:3075,1
    - Dst: read
      Src: /src/pdns/pdns/ws-auth.cc:3076,1
    - Dst: std::ostringstream::str
      Src: /src/pdns/pdns/ws-auth.cc:3089,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - resp
    argTypes:
    - HttpResponse*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3092
      start: 3067
    functionDepth: 0
    functionLinenumber: 3067
    functionLinenumberEnd: 3092
    functionName: prometheusMetrics
    functionSourceFile: /src/pdns/pdns/ws-auth.cc
    functionUses: 0
    functionsReached:
    - boost::replace_all_copy
    - read
    - std::ostringstream::str
    - getEntries
    - getStatType
    - getDescrip
    linkageType: ''
    returnType: void
    signature: void prometheusMetrics(HttpRequest* /* req */, HttpResponse* resp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: emplace_back
      Src: /src/pdns/pdns/ws-auth.cc:3100,1
    - Dst: toString
      Src: /src/pdns/pdns/ws-auth.cc:3100,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - ' array'
    - ' zones'
    argTypes:
    - Json::array
    - std::vector<ZoneName>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3102
      start: 3097
    functionDepth: 0
    functionLinenumber: 3097
    functionLinenumberEnd: 3102
    functionName: jsonFillZoneNameArray
    functionSourceFile: /src/pdns/pdns/ws-auth.cc
    functionUses: 0
    functionsReached:
    - toString
    - emplace_back
    linkageType: ''
    returnType: void
    signature: void jsonFillZoneNameArray(Json::array& array, std::vector<ZoneName>&
      zones)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: UeberBackend::UeberBackend
      Src: /src/pdns/pdns/ws-auth.cc:3108,1
    - Dst: UeberBackend::viewList
      Src: /src/pdns/pdns/ws-auth.cc:3110,1
    - Dst: std::move
      Src: /src/pdns/pdns/ws-auth.cc:3113,1
    - Dst: HttpResponse*::setJsonBody
      Src: /src/pdns/pdns/ws-auth.cc:3114,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - resp
    argTypes:
    - HttpResponse*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3115
      start: 3105
    functionDepth: 1
    functionLinenumber: 3105
    functionLinenumberEnd: 3115
    functionName: apiServerViewsAllGET
    functionSourceFile: /src/pdns/pdns/ws-auth.cc
    functionUses: 0
    functionsReached:
    - UeberBackend::viewList
    - std::move
    - UeberBackend::UeberBackend
    - HttpResponse*::setJsonBody
    linkageType: ''
    returnType: void
    signature: void apiServerViewsAllGET(HttpRequest* /* req */, HttpResponse* resp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: UeberBackend::UeberBackend
      Src: /src/pdns/pdns/ws-auth.cc:3122,1
    - Dst: UeberBackend::viewListZones
      Src: /src/pdns/pdns/ws-auth.cc:3124,1
    - Dst: std::vector::empty
      Src: /src/pdns/pdns/ws-auth.cc:3126,1
    - Dst: HttpNotFoundException
      Src: /src/pdns/pdns/ws-auth.cc:3127,1
    - Dst: jsonFillZoneNameArray
      Src: /src/pdns/pdns/ws-auth.cc:3131,1
    - Dst: HttpResponse*::setJsonBody
      Src: /src/pdns/pdns/ws-auth.cc:3134,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - req
    - resp
    argTypes:
    - HttpRequest*
    - HttpResponse*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3135
      start: 3118
    functionDepth: 1
    functionLinenumber: 3118
    functionLinenumberEnd: 3135
    functionName: apiServerViewsGET
    functionSourceFile: /src/pdns/pdns/ws-auth.cc
    functionUses: 0
    functionsReached:
    - HttpNotFoundException
    - UeberBackend::viewListZones
    - jsonFillZoneNameArray
    - UeberBackend::UeberBackend
    - HttpResponse*::setJsonBody
    - std::vector::empty
    linkageType: ''
    returnType: void
    signature: void apiServerViewsGET(HttpRequest* req, HttpResponse* resp)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: HttpRequest*::json
      Src: /src/pdns/pdns/ws-auth.cc:3140,1
    - Dst: apiNameToZoneName
      Src: /src/pdns/pdns/ws-auth.cc:3143,1
    - Dst: stringFromJson
      Src: /src/pdns/pdns/ws-auth.cc:3143,1
    - Dst: Check::validateViewName
      Src: /src/pdns/pdns/ws-auth.cc:3147,1
    - Dst: ApiException
      Src: /src/pdns/pdns/ws-auth.cc:3148,1
    - Dst: UeberBackend::UeberBackend
      Src: /src/pdns/pdns/ws-auth.cc:3151,1
    - Dst: UeberBackend::viewAddZone
      Src: /src/pdns/pdns/ws-auth.cc:3152,1
    - Dst: ApiException
      Src: /src/pdns/pdns/ws-auth.cc:3153,1
    - Dst: ZoneName::toString
      Src: /src/pdns/pdns/ws-auth.cc:3153,1
    - Dst: isEnabled
      Src: /src/pdns/pdns/ws-auth.cc:3156,1
    - Dst: addToView
      Src: /src/pdns/pdns/ws-auth.cc:3157,1
    - Dst: enabled
      Src: /src/pdns/pdns/ws-auth.cc:3160,1
    - Dst: toString
      Src: /src/pdns/pdns/ws-auth.cc:3161,1
    - Dst: std::string::append
      Src: /src/pdns/pdns/ws-auth.cc:3162,1
    - Dst: purge
      Src: /src/pdns/pdns/ws-auth.cc:3163,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 16
    argCount: 2
    argNames:
    - req
    - resp
    argTypes:
    - HttpRequest*
    - HttpResponse*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3168
      start: 3138
    functionDepth: 1
    functionLinenumber: 3138
    functionLinenumberEnd: 3168
    functionName: apiServerViewsPOST
    functionSourceFile: /src/pdns/pdns/ws-auth.cc
    functionUses: 0
    functionsReached:
    - purge
    - UeberBackend::viewAddZone
    - ZoneName::toString
    - stringFromJson
    - toString
    - Check::validateViewName
    - std::string::append
    - apiNameToZoneName
    - UeberBackend::UeberBackend
    - ApiException
    - isEnabled
    - HttpRequest*::json
    - enabled
    - addToView
    linkageType: ''
    returnType: void
    signature: void apiServerViewsPOST(HttpRequest* req, HttpResponse* resp)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: apiZoneIdToName
      Src: /src/pdns/pdns/ws-auth.cc:3175,1
    - Dst: Check::validateViewName
      Src: /src/pdns/pdns/ws-auth.cc:3179,1
    - Dst: ApiException
      Src: /src/pdns/pdns/ws-auth.cc:3180,1
    - Dst: UeberBackend::UeberBackend
      Src: /src/pdns/pdns/ws-auth.cc:3183,1
    - Dst: UeberBackend::viewDelZone
      Src: /src/pdns/pdns/ws-auth.cc:3184,1
    - Dst: ApiException
      Src: /src/pdns/pdns/ws-auth.cc:3185,1
    - Dst: ZoneName::toString
      Src: /src/pdns/pdns/ws-auth.cc:3185,1
    - Dst: isEnabled
      Src: /src/pdns/pdns/ws-auth.cc:3189,1
    - Dst: removeFromView
      Src: /src/pdns/pdns/ws-auth.cc:3190,1
    - Dst: enabled
      Src: /src/pdns/pdns/ws-auth.cc:3193,1
    - Dst: purgeView
      Src: /src/pdns/pdns/ws-auth.cc:3195,1
    - Dst: toString
      Src: /src/pdns/pdns/ws-auth.cc:3198,1
    - Dst: std::string::append
      Src: /src/pdns/pdns/ws-auth.cc:3199,1
    - Dst: purge
      Src: /src/pdns/pdns/ws-auth.cc:3200,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 20
    argCount: 2
    argNames:
    - req
    - resp
    argTypes:
    - HttpRequest*
    - HttpResponse*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3206
      start: 3171
    functionDepth: 1
    functionLinenumber: 3171
    functionLinenumberEnd: 3206
    functionName: apiServerViewsDELETE
    functionSourceFile: /src/pdns/pdns/ws-auth.cc
    functionUses: 0
    functionsReached:
    - apiZoneIdToName
    - purge
    - ZoneName::toString
    - toString
    - std::string::append
    - Check::validateViewName
    - UeberBackend::UeberBackend
    - ApiException
    - removeFromView
    - isEnabled
    - UeberBackend::viewDelZone
    - enabled
    - purgeView
    linkageType: ''
    returnType: void
    signature: void apiServerViewsDELETE(HttpRequest* req, HttpResponse* resp)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Netmask::Netmask
      Src: /src/pdns/pdns/ws-auth.cc:3214,1
    - Dst: HttpRequest*::parameters::count
      Src: /src/pdns/pdns/ws-auth.cc:3215,1
    - Dst: HttpRequest*::parameters::count
      Src: /src/pdns/pdns/ws-auth.cc:3215,1
    - Dst: ApiException
      Src: /src/pdns/pdns/ws-auth.cc:3222,1
    - Dst: UeberBackend::UeberBackend
      Src: /src/pdns/pdns/ws-auth.cc:3226,1
    - Dst: UeberBackend::networkList
      Src: /src/pdns/pdns/ws-auth.cc:3228,1
    - Dst: Netmask::empty
      Src: /src/pdns/pdns/ws-auth.cc:3232,1
    - Dst: first::toString
      Src: /src/pdns/pdns/ws-auth.cc:3235,1
    - Dst: Json::array::emplace_back
      Src: /src/pdns/pdns/ws-auth.cc:3237,1
    - Dst: Json::object::clear
      Src: /src/pdns/pdns/ws-auth.cc:3238,1
    - Dst: Netmask::empty
      Src: /src/pdns/pdns/ws-auth.cc:3241,1
    - Dst: std::move
      Src: /src/pdns/pdns/ws-auth.cc:3243,1
    - Dst: HttpResponse*::setJsonBody
      Src: /src/pdns/pdns/ws-auth.cc:3244,1
    - Dst: Json::array::empty
      Src: /src/pdns/pdns/ws-auth.cc:3247,1
    - Dst: HttpNotFoundException
      Src: /src/pdns/pdns/ws-auth.cc:3248,1
    - Dst: HttpResponse*::setJsonBody
      Src: /src/pdns/pdns/ws-auth.cc:3251,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 25
    argCount: 2
    argNames:
    - req
    - resp
    argTypes:
    - HttpRequest*
    - HttpResponse*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3253
      start: 3212
    functionDepth: 1
    functionLinenumber: 3212
    functionLinenumberEnd: 3253
    functionName: apiServerNetworksGET
    functionSourceFile: /src/pdns/pdns/ws-auth.cc
    functionUses: 0
    functionsReached:
    - std::move
    - UeberBackend::networkList
    - HttpNotFoundException
    - Netmask::Netmask
    - HttpRequest*::parameters::count
    - UeberBackend::UeberBackend
    - ApiException
    - HttpResponse*::setJsonBody
    - Json::object::clear
    - Json::array::emplace_back
    - first::toString
    - Json::array::empty
    - Netmask::empty
    linkageType: ''
    returnType: void
    signature: void apiServerNetworksGET(HttpRequest* req, HttpResponse* resp)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Netmask::Netmask
      Src: /src/pdns/pdns/ws-auth.cc:3260,1
    - Dst: ApiException
      Src: /src/pdns/pdns/ws-auth.cc:3265,1
    - Dst: HttpRequest*::json
      Src: /src/pdns/pdns/ws-auth.cc:3268,1
    - Dst: stringFromJson
      Src: /src/pdns/pdns/ws-auth.cc:3269,1
    - Dst: UeberBackend::UeberBackend
      Src: /src/pdns/pdns/ws-auth.cc:3271,1
    - Dst: UeberBackend::networkSet
      Src: /src/pdns/pdns/ws-auth.cc:3272,1
    - Dst: ApiException
      Src: /src/pdns/pdns/ws-auth.cc:3273,1
    - Dst: Netmask::toString
      Src: /src/pdns/pdns/ws-auth.cc:3273,1
    - Dst: isEnabled
      Src: /src/pdns/pdns/ws-auth.cc:3276,1
    - Dst: updateNetwork
      Src: /src/pdns/pdns/ws-auth.cc:3277,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 2
    argNames:
    - req
    - resp
    argTypes:
    - HttpRequest*
    - HttpResponse*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3282
      start: 3256
    functionDepth: 1
    functionLinenumber: 3256
    functionLinenumberEnd: 3282
    functionName: apiServerNetworksPUT
    functionSourceFile: /src/pdns/pdns/ws-auth.cc
    functionUses: 0
    functionsReached:
    - stringFromJson
    - UeberBackend::networkSet
    - updateNetwork
    - Netmask::toString
    - Netmask::Netmask
    - UeberBackend::UeberBackend
    - ApiException
    - isEnabled
    - HttpRequest*::json
    linkageType: ''
    returnType: void
    signature: void apiServerNetworksPUT(HttpRequest* req, HttpResponse* resp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ostringstream::str
      Src: /src/pdns/pdns/ws-auth.cc:3317,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 32
    argCount: 1
    argNames:
    - resp
    argTypes:
    - HttpResponse*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3319
      start: 3284
    functionDepth: 0
    functionLinenumber: 3284
    functionLinenumberEnd: 3319
    functionName: cssfunction
    functionSourceFile: /src/pdns/pdns/ws-auth.cc
    functionUses: 0
    functionsReached:
    - ostringstream::str
    linkageType: ''
    returnType: void
    signature: void cssfunction(HttpRequest* /* req */, HttpResponse* resp)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: setThreadName
      Src: /src/pdns/pdns/ws-auth.cc:3324,1
    - Dst: arg
      Src: /src/pdns/pdns/ws-auth.cc:3325,1
    - Dst: registerApiHandler
      Src: /src/pdns/pdns/ws-auth.cc:3326,1
    - Dst: registerApiHandler
      Src: /src/pdns/pdns/ws-auth.cc:3327,1
    - Dst: registerApiHandler
      Src: /src/pdns/pdns/ws-auth.cc:3328,1
    - Dst: registerApiHandler
      Src: /src/pdns/pdns/ws-auth.cc:3329,1
    - Dst: registerApiHandler
      Src: /src/pdns/pdns/ws-auth.cc:3330,1
    - Dst: registerApiHandler
      Src: /src/pdns/pdns/ws-auth.cc:3331,1
    - Dst: registerApiHandler
      Src: /src/pdns/pdns/ws-auth.cc:3332,1
    - Dst: registerApiHandler
      Src: /src/pdns/pdns/ws-auth.cc:3333,1
    - Dst: registerApiHandler
      Src: /src/pdns/pdns/ws-auth.cc:3334,1
    - Dst: registerApiHandler
      Src: /src/pdns/pdns/ws-auth.cc:3335,1
    - Dst: registerApiHandler
      Src: /src/pdns/pdns/ws-auth.cc:3336,1
    - Dst: registerApiHandler
      Src: /src/pdns/pdns/ws-auth.cc:3337,1
    - Dst: registerApiHandler
      Src: /src/pdns/pdns/ws-auth.cc:3338,1
    - Dst: registerApiHandler
      Src: /src/pdns/pdns/ws-auth.cc:3339,1
    - Dst: registerApiHandler
      Src: /src/pdns/pdns/ws-auth.cc:3340,1
    - Dst: registerApiHandler
      Src: /src/pdns/pdns/ws-auth.cc:3341,1
    - Dst: registerApiHandler
      Src: /src/pdns/pdns/ws-auth.cc:3342,1
    - Dst: registerApiHandler
      Src: /src/pdns/pdns/ws-auth.cc:3343,1
    - Dst: registerApiHandler
      Src: /src/pdns/pdns/ws-auth.cc:3344,1
    - Dst: registerApiHandler
      Src: /src/pdns/pdns/ws-auth.cc:3345,1
    - Dst: registerApiHandler
      Src: /src/pdns/pdns/ws-auth.cc:3346,1
    - Dst: registerApiHandler
      Src: /src/pdns/pdns/ws-auth.cc:3347,1
    - Dst: registerApiHandler
      Src: /src/pdns/pdns/ws-auth.cc:3348,1
    - Dst: registerApiHandler
      Src: /src/pdns/pdns/ws-auth.cc:3349,1
    - Dst: registerApiHandler
      Src: /src/pdns/pdns/ws-auth.cc:3350,1
    - Dst: registerApiHandler
      Src: /src/pdns/pdns/ws-auth.cc:3351,1
    - Dst: registerApiHandler
      Src: /src/pdns/pdns/ws-auth.cc:3352,1
    - Dst: registerApiHandler
      Src: /src/pdns/pdns/ws-auth.cc:3353,1
    - Dst: registerApiHandler
      Src: /src/pdns/pdns/ws-auth.cc:3354,1
    - Dst: registerApiHandler
      Src: /src/pdns/pdns/ws-auth.cc:3355,1
    - Dst: registerApiHandler
      Src: /src/pdns/pdns/ws-auth.cc:3356,1
    - Dst: registerApiHandler
      Src: /src/pdns/pdns/ws-auth.cc:3357,1
    - Dst: registerApiHandler
      Src: /src/pdns/pdns/ws-auth.cc:3358,1
    - Dst: registerApiHandler
      Src: /src/pdns/pdns/ws-auth.cc:3359,1
    - Dst: registerApiHandler
      Src: /src/pdns/pdns/ws-auth.cc:3360,1
    - Dst: registerApiHandler
      Src: /src/pdns/pdns/ws-auth.cc:3361,1
    - Dst: registerApiHandler
      Src: /src/pdns/pdns/ws-auth.cc:3362,1
    - Dst: registerApiHandler
      Src: /src/pdns/pdns/ws-auth.cc:3363,1
    - Dst: registerApiHandler
      Src: /src/pdns/pdns/ws-auth.cc:3364,1
    - Dst: registerApiHandler
      Src: /src/pdns/pdns/ws-auth.cc:3365,1
    - Dst: registerApiHandler
      Src: /src/pdns/pdns/ws-auth.cc:3366,1
    - Dst: registerApiHandler
      Src: /src/pdns/pdns/ws-auth.cc:3367,1
    - Dst: registerApiHandler
      Src: /src/pdns/pdns/ws-auth.cc:3368,1
    - Dst: registerApiHandler
      Src: /src/pdns/pdns/ws-auth.cc:3369,1
    - Dst: registerApiHandler
      Src: /src/pdns/pdns/ws-auth.cc:3370,1
    - Dst: arg
      Src: /src/pdns/pdns/ws-auth.cc:3372,1
    - Dst: registerWebHandler
      Src: /src/pdns/pdns/ws-auth.cc:3373,1
    - Dst: registerWebHandler
      Src: /src/pdns/pdns/ws-auth.cc:3376,1
    - Dst: AuthWebServer::indexGET
      Src: /src/pdns/pdns/ws-auth.cc:3377,1
    - Dst: registerWebHandler
      Src: /src/pdns/pdns/ws-auth.cc:3378,1
    - Dst: AuthWebServer::indexPOST
      Src: /src/pdns/pdns/ws-auth.cc:3379,1
    - Dst: registerWebHandler
      Src: /src/pdns/pdns/ws-auth.cc:3380,1
    - Dst: AuthWebServer::go
      Src: /src/pdns/pdns/ws-auth.cc:3382,1
    - Dst: SLOG
      Src: /src/pdns/pdns/ws-auth.cc:3385,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/ws-auth.cc:3386,1
    - Dst: _exit
      Src: /src/pdns/pdns/ws-auth.cc:3387,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 65
    argCount: 1
    argNames:
    - slog
    argTypes:
    - Logr::log_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3389
      start: 3321
    functionDepth: 3
    functionLinenumber: 3321
    functionLinenumberEnd: 3389
    functionName: AuthWebServer::webThread
    functionSourceFile: /src/pdns/pdns/ws-auth.cc
    functionUses: 1
    functionsReached:
    - registerWebHandler
    - SLOG
    - AuthWebServer::indexGET
    - AuthWebServer::go
    - Logr::log_t::info
    - _exit
    - registerApiHandler
    - AuthWebServer::indexPOST
    - setThreadName
    - arg
    linkageType: ''
    returnType: void
    signature: void AuthWebServer::webThread(Logr::log_t slog)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/responsestats.cc:19,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/responsestats.cc:20,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/responsestats.cc:21,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/responsestats.cc:22,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/responsestats.cc:23,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/responsestats.cc:24,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/responsestats.cc:26,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 29
      start: 15
    functionDepth: 0
    functionLinenumber: 15
    functionLinenumberEnd: 29
    functionName: sizeBounds
    functionSourceFile: /src/pdns/pdns/responsestats.cc
    functionUses: 0
    functionsReached:
    - std::vector::push_back
    linkageType: ''
    returnType: auto
    signature: auto sizeBounds()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sizeBounds
      Src: /src/pdns/pdns/responsestats.cc:32,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 31
    functionDepth: 0
    functionLinenumber: 31
    functionLinenumberEnd: 40
    functionName: ResponseStats::ResponseStats
    functionSourceFile: /src/pdns/pdns/responsestats.cc
    functionUses: 0
    functionsReached:
    - sizeBounds
    linkageType: ''
    returnType: void
    signature: void ResponseStats::ResponseStats()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: at
      Src: /src/pdns/pdns/responsestats.cc:46,1
    - Dst: ResponseStats::submitResponse
      Src: /src/pdns/pdns/responsestats.cc:47,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - qtype
    - respsize
    - rcode
    - udpOrTCP
    argTypes:
    - uint16_t
    - uint16_t
    - uint8_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 44
    functionDepth: 0
    functionLinenumber: 44
    functionLinenumberEnd: 48
    functionName: ResponseStats::submitResponse
    functionSourceFile: /src/pdns/pdns/responsestats.cc
    functionUses: 2
    functionsReached:
    - ResponseStats::submitResponse
    - at
    linkageType: ''
    returnType: void
    signature: void ResponseStats::submitResponse(uint16_t qtype, uint16_t respsize,
      uint8_t rcode, bool udpOrTCP) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: at
      Src: /src/pdns/pdns/responsestats.cc:52,1
    - Dst: d_sizecounters
      Src: /src/pdns/pdns/responsestats.cc:53,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - qtype
    - respsize
    argTypes:
    - uint16_t
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 50
    functionDepth: 0
    functionLinenumber: 50
    functionLinenumberEnd: 54
    functionName: ResponseStats::submitResponse
    functionSourceFile: /src/pdns/pdns/responsestats.cc
    functionUses: 2
    functionsReached:
    - at
    - d_sizecounters
    linkageType: ''
    returnType: void
    signature: void ResponseStats::submitResponse(uint16_t qtype, uint16_t respsize,
      bool /* udpOrTCP */) const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/responsestats.cc:60,1
    - Dst: at
      Src: /src/pdns/pdns/responsestats.cc:61,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 56
    functionDepth: 0
    functionLinenumber: 56
    functionLinenumberEnd: 67
    functionName: ResponseStats::getQTypeResponseCounts
    functionSourceFile: /src/pdns/pdns/responsestats.cc
    functionUses: 0
    functionsReached:
    - at
    - size
    linkageType: ''
    returnType: map<uint16_t, uint64_t>
    signature: map<uint16_t, uint64_t> ResponseStats::getQTypeResponseCounts() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: getRawData
      Src: /src/pdns/pdns/responsestats.cc:72,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 69
    functionDepth: 0
    functionLinenumber: 69
    functionLinenumberEnd: 78
    functionName: ResponseStats::getSizeResponseCounts
    functionSourceFile: /src/pdns/pdns/responsestats.cc
    functionUses: 0
    functionsReached:
    - getRawData
    linkageType: ''
    returnType: map<uint16_t, uint64_t>
    signature: map<uint16_t, uint64_t> ResponseStats::getSizeResponseCounts() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/responsestats.cc:84,1
    - Dst: at
      Src: /src/pdns/pdns/responsestats.cc:85,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 80
    functionDepth: 0
    functionLinenumber: 80
    functionLinenumberEnd: 91
    functionName: ResponseStats::getRCodeResponseCounts
    functionSourceFile: /src/pdns/pdns/responsestats.cc
    functionUses: 0
    functionsReached:
    - at
    - size
    linkageType: ''
    returnType: map<uint8_t, uint64_t>
    signature: map<uint8_t, uint64_t> ResponseStats::getRCodeResponseCounts() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ResponseStats::getQTypeResponseCounts
      Src: /src/pdns/pdns/responsestats.cc:95,1
    - Dst: DNSRecordContent::NumberToType
      Src: /src/pdns/pdns/responsestats.cc:99,1
    - Dst: str
      Src: /src/pdns/pdns/responsestats.cc:99,1
    - Dst: ostringstream::str
      Src: /src/pdns/pdns/responsestats.cc:101,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 93
    functionDepth: 1
    functionLinenumber: 93
    functionLinenumberEnd: 102
    functionName: ResponseStats::getQTypeReport
    functionSourceFile: /src/pdns/pdns/responsestats.cc
    functionUses: 0
    functionsReached:
    - ostringstream::str
    - ResponseStats::getQTypeResponseCounts
    - str
    - DNSRecordContent::NumberToType
    linkageType: ''
    returnType: string
    signature: string ResponseStats::getQTypeReport() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EDNSSubnetOpts::getFromString
      Src: /src/pdns/pdns/ednssubnet.cc:40,1
    - Dst: c_str
      Src: /src/pdns/pdns/ednssubnet.cc:40,1
    - Dst: length
      Src: /src/pdns/pdns/ednssubnet.cc:40,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' options'
    - eso
    argTypes:
    - std::string
    - EDNSSubnetOpts*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 38
    functionDepth: 0
    functionLinenumber: 38
    functionLinenumberEnd: 41
    functionName: EDNSSubnetOpts::getFromString
    functionSourceFile: /src/pdns/pdns/ednssubnet.cc
    functionUses: 2
    functionsReached:
    - EDNSSubnetOpts::getFromString
    - length
    - c_str
    linkageType: ''
    returnType: bool
    signature: bool EDNSSubnetOpts::getFromString(const std::string& options, EDNSSubnetOpts*
      eso)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/pdns/pdns/ednssubnet.cc:50,1
    - Dst: ntohs
      Src: /src/pdns/pdns/ednssubnet.cc:51,1
    - Dst: ComboAddress::reset
      Src: /src/pdns/pdns/ednssubnet.cc:63,1
    - Dst: memcpy
      Src: /src/pdns/pdns/ednssubnet.cc:66,1
    - Dst: ComboAddress::reset
      Src: /src/pdns/pdns/ednssubnet.cc:77,1
    - Dst: memcpy
      Src: /src/pdns/pdns/ednssubnet.cc:80,1
    - Dst: Netmask
      Src: /src/pdns/pdns/ednssubnet.cc:86,1
    - Dst: ComboAddress::truncate
      Src: /src/pdns/pdns/ednssubnet.cc:90,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 38
    argCount: 3
    argNames:
    - options
    - len
    - eso
    argTypes:
    - char*
    - unsigned int
    - EDNSSubnetOpts*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 94
    functionName: EDNSSubnetOpts::getFromString
    functionSourceFile: /src/pdns/pdns/ednssubnet.cc
    functionUses: 2
    functionsReached:
    - Netmask
    - memcpy
    - ntohs
    - ComboAddress::truncate
    - ComboAddress::reset
    linkageType: ''
    returnType: bool
    signature: bool EDNSSubnetOpts::getFromString(const char* options, unsigned int
      len, EDNSSubnetOpts* eso)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: htons
      Src: /src/pdns/pdns/ednssubnet.cc:100,1
    - Dst: isIPv4
      Src: /src/pdns/pdns/ednssubnet.cc:100,1
    - Dst: getBits
      Src: /src/pdns/pdns/ednssubnet.cc:102,1
    - Dst: std::string::assign
      Src: /src/pdns/pdns/ednssubnet.cc:105,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/ednssubnet.cc:105,1
    - Dst: getNetwork
      Src: /src/pdns/pdns/ednssubnet.cc:108,1
    - Dst: ComboAddress::truncate
      Src: /src/pdns/pdns/ednssubnet.cc:109,1
    - Dst: isIPv4
      Src: /src/pdns/pdns/ednssubnet.cc:111,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/ednssubnet.cc:113,1
    - Dst: std::string::append
      Src: /src/pdns/pdns/ednssubnet.cc:115,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/ednssubnet.cc:115,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/ednssubnet.cc:119,1
    - Dst: std::string::append
      Src: /src/pdns/pdns/ednssubnet.cc:121,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/ednssubnet.cc:121,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 125
      start: 96
    functionDepth: 1
    functionLinenumber: 96
    functionLinenumberEnd: 125
    functionName: EDNSSubnetOpts::makeOptString
    functionSourceFile: /src/pdns/pdns/ednssubnet.cc
    functionUses: 5
    functionsReached:
    - std::string::append
    - std::runtime_error
    - getBits
    - reinterpret_cast<const char*>
    - isIPv4
    - std::string::assign
    - getNetwork
    - ComboAddress::truncate
    - htons
    linkageType: ''
    returnType: std::string
    signature: std::string EDNSSubnetOpts::makeOptString() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::tie
      Src: /src/pdns/pdns/dnsdemog.cc:47,1
    - Dst: std::tie
      Src: /src/pdns/pdns/dnsdemog.cc:47,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - struct Entry
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 45
    functionDepth: 0
    functionLinenumber: 45
    functionLinenumberEnd: 48
    functionName: operator<(const struct Entry& rhs) const
    functionSourceFile: /src/pdns/pdns/dnsdemog.cc
    functionUses: 0
    functionsReached:
    - std::tie
    linkageType: ''
    returnType: bool
    signature: bool operator<(const struct Entry& rhs) const
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PcapPacketReader::getUDPPacket
      Src: /src/pdns/pdns/dnsdemog.cc:63,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdemog.cc:64,1
    - Dst: PcapPacketReader::getSource
      Src: /src/pdns/pdns/dnsdemog.cc:73,1
    - Dst: Entry::ip::toString
      Src: /src/pdns/pdns/dnsdemog.cc:77,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdemog.cc:77,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdemog.cc:77,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdemog.cc:79,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdemog.cc:87,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdemog.cc:104,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 27
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 55
    functionDepth: 1
    functionLinenumber: 55
    functionLinenumberEnd: 105
    functionName: main
    functionSourceFile: /src/pdns/pdns/dnsdemog.cc
    functionUses: 23
    functionsReached:
    - PcapPacketReader::getUDPPacket
    - ntohs
    - what
    - PcapPacketReader::getSource
    - Entry::ip::toString
    linkageType: ''
    returnType: int
    signature: int main(int argc, char** argv)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 40
    functionDepth: 0
    functionLinenumber: 40
    functionLinenumberEnd: 53
    functionName: getLogger
    functionSourceFile: /src/pdns/pdns/logger.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Logger
    signature: Logger & getLogger()
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: time
      Src: /src/pdns/pdns/logger.cc:66,1
    - Dst: localtime_r
      Src: /src/pdns/pdns/logger.cc:67,1
    - Dst: strftime
      Src: /src/pdns/pdns/logger.cc:68,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/logger.cc:68,1
    - Dst: std::array::size
      Src: /src/pdns/pdns/logger.cc:68,1
    - Dst: std::scoped_lock
      Src: /src/pdns/pdns/logger.cc:107,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/logger.cc:112,1
    - Dst: std::quoted
      Src: /src/pdns/pdns/logger.cc:114,1
    - Dst: std::quoted
      Src: /src/pdns/pdns/logger.cc:114,1
    - Dst: ostringstream::str
      Src: /src/pdns/pdns/logger.cc:119,1
    - Dst: syslog
      Src: /src/pdns/pdns/logger.cc:125,1
    - Dst: c_str
      Src: /src/pdns/pdns/logger.cc:125,1
    - Dst: ringAccount
      Src: /src/pdns/pdns/logger.cc:134,1
    - Dst: what
      Src: /src/pdns/pdns/logger.cc:137,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 61
    argCount: 2
    argNames:
    - ' msg'
    - u
    argTypes:
    - string
    - Urgency
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 141
      start: 55
    functionDepth: 0
    functionLinenumber: 55
    functionLinenumberEnd: 141
    functionName: Logger::log
    functionSourceFile: /src/pdns/pdns/logger.cc
    functionUses: 0
    functionsReached:
    - std::quoted
    - std::scoped_lock
    - localtime_r
    - c_str
    - time
    - what
    - ringAccount
    - syslog
    - ostringstream::str
    - strftime
    - std::array::data
    - std::array::size
    linkageType: ''
    returnType: void
    signature: void Logger::log(const string& msg, Urgency u) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - u
    argTypes:
    - Urgency
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 146
      start: 143
    functionDepth: 0
    functionLinenumber: 143
    functionLinenumberEnd: 146
    functionName: Logger::setLoglevel
    functionSourceFile: /src/pdns/pdns/logger.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Logger::setLoglevel(Urgency u)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - u
    argTypes:
    - Urgency
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 151
      start: 148
    functionDepth: 0
    functionLinenumber: 148
    functionLinenumberEnd: 151
    functionName: Logger::toConsole
    functionSourceFile: /src/pdns/pdns/logger.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Logger::toConsole(Urgency u)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: closelog
      Src: /src/pdns/pdns/logger.cc:156,1
    - Dst: openlog
      Src: /src/pdns/pdns/logger.cc:157,1
    - Dst: c_str
      Src: /src/pdns/pdns/logger.cc:157,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 159
      start: 153
    functionDepth: 0
    functionLinenumber: 153
    functionLinenumberEnd: 159
    functionName: Logger::open
    functionSourceFile: /src/pdns/pdns/logger.cc
    functionUses: 3
    functionsReached:
    - c_str
    - openlog
    - closelog
    linkageType: ''
    returnType: void
    signature: void Logger::open()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Logger::open
      Src: /src/pdns/pdns/logger.cc:164,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ' _name'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 165
      start: 161
    functionDepth: 0
    functionLinenumber: 161
    functionLinenumberEnd: 165
    functionName: Logger::setName
    functionSourceFile: /src/pdns/pdns/logger.cc
    functionUses: 0
    functionsReached:
    - Logger::open
    linkageType: ''
    returnType: void
    signature: void Logger::setName(const string& _name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/logger.cc:168,1
    - Dst: Logger::open
      Src: /src/pdns/pdns/logger.cc:170,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - n
    - facility
    argTypes:
    - string
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 171
      start: 167
    functionDepth: 0
    functionLinenumber: 167
    functionLinenumberEnd: 171
    functionName: Logger::Logger
    functionSourceFile: /src/pdns/pdns/logger.cc
    functionUses: 0
    functionsReached:
    - std::move
    - Logger::open
    linkageType: ''
    returnType: void
    signature: void Logger::Logger(string n, int facility)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getPerThread
      Src: /src/pdns/pdns/logger.cc:175,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - u
    argTypes:
    - Urgency
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 177
      start: 173
    functionDepth: 0
    functionLinenumber: 173
    functionLinenumberEnd: 177
    functionName: '& Logger::operator<<(Urgency u)'
    functionSourceFile: /src/pdns/pdns/logger.cc
    functionUses: 0
    functionsReached:
    - getPerThread
    linkageType: ''
    returnType: Logger
    signature: Logger & Logger::operator<<(Urgency u)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 182
      start: 179
    functionDepth: 0
    functionLinenumber: 179
    functionLinenumberEnd: 182
    functionName: '& Logger::getPerThread()'
    functionSourceFile: /src/pdns/pdns/logger.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Logger::PerThread
    signature: Logger::PerThread & Logger::getPerThread()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getPerThread
      Src: /src/pdns/pdns/logger.cc:186,1
    - Dst: d_output::append
      Src: /src/pdns/pdns/logger.cc:187,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ' s'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 189
      start: 184
    functionDepth: 0
    functionLinenumber: 184
    functionLinenumberEnd: 189
    functionName: '& Logger::operator<<(const string& s)'
    functionSourceFile: /src/pdns/pdns/logger.cc
    functionUses: 0
    functionsReached:
    - getPerThread
    - d_output::append
    linkageType: ''
    returnType: Logger
    signature: Logger & Logger::operator<<(const string& s)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: string
      Src: /src/pdns/pdns/logger.cc:193,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - s
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 195
      start: 191
    functionDepth: 0
    functionLinenumber: 191
    functionLinenumberEnd: 195
    functionName: '& Logger::operator<<(const char* s)'
    functionSourceFile: /src/pdns/pdns/logger.cc
    functionUses: 0
    functionsReached:
    - string
    linkageType: ''
    returnType: Logger
    signature: Logger & Logger::operator<<(const char* s)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getPerThread
      Src: /src/pdns/pdns/logger.cc:199,1
    - Dst: log
      Src: /src/pdns/pdns/logger.cc:201,1
    - Dst: d_output::clear
      Src: /src/pdns/pdns/logger.cc:202,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 205
      start: 197
    functionDepth: 1
    functionLinenumber: 197
    functionLinenumberEnd: 205
    functionName: '& Logger::operator<<(ostream& (&)(ostream&))'
    functionSourceFile: /src/pdns/pdns/logger.cc
    functionUses: 0
    functionsReached:
    - getPerThread
    - d_output::clear
    - log
    linkageType: ''
    returnType: Logger
    signature: Logger & Logger::operator<<(ostream& (&)(ostream&))
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: toLogString
      Src: /src/pdns/pdns/logger.cc:209,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ' d'
    argTypes:
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 212
      start: 207
    functionDepth: 0
    functionLinenumber: 207
    functionLinenumberEnd: 212
    functionName: '& Logger::operator<<(const DNSName& d)'
    functionSourceFile: /src/pdns/pdns/logger.cc
    functionUses: 0
    functionsReached:
    - toLogString
    linkageType: ''
    returnType: Logger
    signature: Logger & Logger::operator<<(const DNSName& d)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: toLogString
      Src: /src/pdns/pdns/logger.cc:217,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ' zone'
    argTypes:
    - ZoneName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 220
      start: 215
    functionDepth: 0
    functionLinenumber: 215
    functionLinenumberEnd: 220
    functionName: '& Logger::operator<<(const ZoneName& zone)'
    functionSourceFile: /src/pdns/pdns/logger.cc
    functionUses: 0
    functionsReached:
    - toLogString
    linkageType: ''
    returnType: Logger
    signature: Logger & Logger::operator<<(const ZoneName& zone)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: toLogString
      Src: /src/pdns/pdns/logger.cc:225,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ' ca'
    argTypes:
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 227
      start: 223
    functionDepth: 0
    functionLinenumber: 223
    functionLinenumberEnd: 227
    functionName: '& Logger::operator<<(const ComboAddress& ca)'
    functionSourceFile: /src/pdns/pdns/logger.cc
    functionUses: 0
    functionsReached:
    - toLogString
    linkageType: ''
    returnType: Logger
    signature: Logger & Logger::operator<<(const ComboAddress& ca)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: toString
      Src: /src/pdns/pdns/logger.cc:231,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ' sockaddr'
    argTypes:
    - SockaddrWrapper
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 233
      start: 229
    functionDepth: 0
    functionLinenumber: 229
    functionLinenumberEnd: 233
    functionName: '& Logger::operator<<(const SockaddrWrapper& sockaddr)'
    functionSourceFile: /src/pdns/pdns/logger.cc
    functionUses: 0
    functionsReached:
    - toString
    linkageType: ''
    returnType: Logger
    signature: Logger & Logger::operator<<(const SockaddrWrapper& sockaddr)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: str
      Src: /src/pdns/pdns/logger.cc:237,1
    - Dst: empty
      Src: /src/pdns/pdns/logger.cc:238,1
    - Dst: back
      Src: /src/pdns/pdns/logger.cc:238,1
    - Dst: gettimeofday
      Src: /src/pdns/pdns/logger.cc:240,1
    - Dst: static_cast<time_t>
      Src: /src/pdns/pdns/logger.cc:242,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - ' start'
    - ' str'
    argTypes:
    - timeval
    - ostringstream
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 245
      start: 235
    functionDepth: 0
    functionLinenumber: 235
    functionLinenumberEnd: 245
    functionName: addTraceTS
    functionSourceFile: /src/pdns/pdns/logger.cc
    functionUses: 0
    functionsReached:
    - back
    - str
    - gettimeofday
    - empty
    - static_cast<time_t>
    linkageType: ''
    returnType: void
    signature: void addTraceTS(const timeval& start, ostringstream& str)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 56
    functionDepth: 0
    functionLinenumber: 56
    functionLinenumberEnd: 56
    functionName: DomainInfo
    functionSourceFile: /src/pdns/pdns/dnsbackend.hh
    functionUses: 46
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void DomainInfo()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - DomainInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 73
    functionDepth: 0
    functionLinenumber: 73
    functionLinenumberEnd: 76
    functionName: operator<(const DomainInfo& rhs) const
    functionSourceFile: /src/pdns/pdns/dnsbackend.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool operator<(const DomainInfo& rhs) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getKindString
      Src: /src/pdns/pdns/dnsbackend.hh:91,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 89
    functionDepth: 0
    functionLinenumber: 89
    functionLinenumberEnd: 92
    functionName: getKindString
    functionSourceFile: /src/pdns/pdns/dnsbackend.hh
    functionUses: 6
    functionsReached:
    - getKindString
    linkageType: ''
    returnType: char
    signature: char * getKindString() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::array::at
      Src: /src/pdns/pdns/dnsbackend.hh:97,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - kind
    argTypes:
    - enum DomainKind
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 94
    functionDepth: 0
    functionLinenumber: 94
    functionLinenumberEnd: 98
    functionName: getKindString
    functionSourceFile: /src/pdns/pdns/dnsbackend.hh
    functionUses: 6
    functionsReached:
    - std::array::at
    linkageType: ''
    returnType: char
    signature: char * getKindString(enum DomainKind kind)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pdns_iequals
      Src: /src/pdns/pdns/dnsbackend.hh:102,1
    - Dst: pdns_iequals
      Src: /src/pdns/pdns/dnsbackend.hh:102,1
    - Dst: pdns_iequals
      Src: /src/pdns/pdns/dnsbackend.hh:105,1
    - Dst: pdns_iequals
      Src: /src/pdns/pdns/dnsbackend.hh:105,1
    - Dst: pdns_iequals
      Src: /src/pdns/pdns/dnsbackend.hh:108,1
    - Dst: pdns_iequals
      Src: /src/pdns/pdns/dnsbackend.hh:111,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 1
    argNames:
    - ' kind'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 100
    functionDepth: 0
    functionLinenumber: 100
    functionLinenumberEnd: 116
    functionName: stringToKind
    functionSourceFile: /src/pdns/pdns/dnsbackend.hh
    functionUses: 4
    functionsReached:
    - pdns_iequals
    linkageType: ''
    returnType: DomainKind
    signature: DomainKind stringToKind(const string& kind)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 118
      start: 118
    functionDepth: 0
    functionLinenumber: 118
    functionLinenumberEnd: 118
    functionName: isPrimaryType
    functionSourceFile: /src/pdns/pdns/dnsbackend.hh
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool isPrimaryType() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 119
      start: 119
    functionDepth: 0
    functionLinenumber: 119
    functionLinenumberEnd: 119
    functionName: isSecondaryType
    functionSourceFile: /src/pdns/pdns/dnsbackend.hh
    functionUses: 9
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool isSecondaryType() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 120
    functionDepth: 0
    functionLinenumber: 120
    functionLinenumberEnd: 120
    functionName: isCatalogType
    functionSourceFile: /src/pdns/pdns/dnsbackend.hh
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool isCatalogType() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::any_of
      Src: /src/pdns/pdns/dnsbackend.hh:124,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsbackend.hh:124,1
    - Dst: end
      Src: /src/pdns/pdns/dnsbackend.hh:124,1
    - Dst: ComboAddress::addressOnlyEqual
      Src: /src/pdns/pdns/dnsbackend.hh:124,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - ' ipAddress'
    argTypes:
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 125
      start: 122
    functionDepth: 0
    functionLinenumber: 122
    functionLinenumberEnd: 125
    functionName: isPrimary
    functionSourceFile: /src/pdns/pdns/dnsbackend.hh
    functionUses: 0
    functionsReached:
    - std::any_of
    - ComboAddress::addressOnlyEqual
    - end
    - begin
    linkageType: ''
    returnType: bool
    signature: bool isPrimary(const ComboAddress& ipAddress) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsbackend.hh:138,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsbackend.hh:138,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsbackend.hh:138,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 3
    argNames:
    - new_ip
    - new_nameserver
    - new_account
    argTypes:
    - string
    - string
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 138
      start: 137
    functionDepth: 0
    functionLinenumber: 137
    functionLinenumberEnd: 138
    functionName: AutoPrimary
    functionSourceFile: /src/pdns/pdns/dnsbackend.hh
    functionUses: 2
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void AutoPrimary(string new_ip, string new_nameserver, string new_account)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 188
      start: 188
    functionDepth: 0
    functionLinenumber: 188
    functionLinenumberEnd: 188
    functionName: ~DNSBackend()
    functionSourceFile: /src/pdns/pdns/dnsbackend.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~DNSBackend()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 196
      start: 193
    functionDepth: 0
    functionLinenumber: 193
    functionLinenumberEnd: 196
    functionName: DNSBackend::replaceRRSet
    functionSourceFile: /src/pdns/pdns/dnsbackend.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool replaceRRSet(domainid_t /* domain_id */, const DNSName& /* qname
      */, const QType& /* qt */, const vector<DNSResourceRecord>& /* rrset */)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 201
      start: 198
    functionDepth: 0
    functionLinenumber: 198
    functionLinenumberEnd: 201
    functionName: DNSBackend::listSubZone
    functionSourceFile: /src/pdns/pdns/dnsbackend.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool listSubZone(const ZoneName& /* zone */, domainid_t /* domain_id
      */)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 2
    argCount: 1
    argNames:
    - ' name'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 207
      start: 204
    functionDepth: 0
    functionLinenumber: 204
    functionLinenumberEnd: 207
    functionName: DNSBackend::isDnssecDomainMetadata
    functionSourceFile: /src/pdns/pdns/dnsbackend.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool isDnssecDomainMetadata(const string& name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 208
      start: 208
    functionDepth: 0
    functionLinenumber: 208
    functionLinenumberEnd: 208
    functionName: DNSBackend::getAllDomainMetadata
    functionSourceFile: /src/pdns/pdns/dnsbackend.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool getAllDomainMetadata(const ZoneName& /* name */, std::map<std::string,
      std::vector<std::string>>& /* meta */)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 209
      start: 209
    functionDepth: 0
    functionLinenumber: 209
    functionLinenumberEnd: 209
    functionName: DNSBackend::getDomainMetadata
    functionSourceFile: /src/pdns/pdns/dnsbackend.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool getDomainMetadata(const ZoneName& /* name */, const std::string&
      /* kind */, std::vector<std::string>& /* meta */)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: DNSBackend::getDomainMetadata
      Src: /src/pdns/pdns/dnsbackend.hh:213,1
    - Dst: std::vector::empty
      Src: /src/pdns/pdns/dnsbackend.hh:214,1
    - Dst: std::vector::begin
      Src: /src/pdns/pdns/dnsbackend.hh:215,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - ' name'
    - ' kind'
    - ' value'
    argTypes:
    - ZoneName
    - std::string
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 220
      start: 210
    functionDepth: 0
    functionLinenumber: 210
    functionLinenumberEnd: 220
    functionName: DNSBackend::getDomainMetadataOne
    functionSourceFile: /src/pdns/pdns/dnsbackend.hh
    functionUses: 0
    functionsReached:
    - std::vector::begin
    - DNSBackend::getDomainMetadata
    - std::vector::empty
    linkageType: ''
    returnType: bool
    signature: bool getDomainMetadataOne(const ZoneName& name, const std::string&
      kind, std::string& value)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 222
      start: 222
    functionDepth: 0
    functionLinenumber: 222
    functionLinenumberEnd: 222
    functionName: DNSBackend::setDomainMetadata
    functionSourceFile: /src/pdns/pdns/dnsbackend.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool setDomainMetadata(const ZoneName& /* name */, const std::string&
      /* kind */, const std::vector<std::string>& /* meta */)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSBackend::setDomainMetadata
      Src: /src/pdns/pdns/dnsbackend.hh:226,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' name'
    - ' kind'
    - ' value'
    argTypes:
    - ZoneName
    - std::string
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 227
      start: 223
    functionDepth: 0
    functionLinenumber: 223
    functionLinenumberEnd: 227
    functionName: DNSBackend::setDomainMetadataOne
    functionSourceFile: /src/pdns/pdns/dnsbackend.hh
    functionUses: 0
    functionsReached:
    - DNSBackend::setDomainMetadata
    linkageType: ''
    returnType: bool
    signature: bool setDomainMetadataOne(const ZoneName& name, const std::string&
      kind, const std::string& value)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 243
      start: 243
    functionDepth: 0
    functionLinenumber: 243
    functionLinenumberEnd: 243
    functionName: DNSBackend::getDomainKeys
    functionSourceFile: /src/pdns/pdns/dnsbackend.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool getDomainKeys(const ZoneName& /* name */, std::vector<KeyData>&
      /* keys */)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 244
      start: 244
    functionDepth: 0
    functionLinenumber: 244
    functionLinenumberEnd: 244
    functionName: DNSBackend::removeDomainKey
    functionSourceFile: /src/pdns/pdns/dnsbackend.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool removeDomainKey(const ZoneName& /* name */, unsigned int /* id
      */)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 245
      start: 245
    functionDepth: 0
    functionLinenumber: 245
    functionLinenumberEnd: 245
    functionName: DNSBackend::addDomainKey
    functionSourceFile: /src/pdns/pdns/dnsbackend.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool addDomainKey(const ZoneName& /* name */, const KeyData& /* key
      */, int64_t& /* id */)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 246
      start: 246
    functionDepth: 0
    functionLinenumber: 246
    functionLinenumberEnd: 246
    functionName: DNSBackend::activateDomainKey
    functionSourceFile: /src/pdns/pdns/dnsbackend.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool activateDomainKey(const ZoneName& /* name */, unsigned int /*
      id */)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 247
      start: 247
    functionDepth: 0
    functionLinenumber: 247
    functionLinenumberEnd: 247
    functionName: DNSBackend::deactivateDomainKey
    functionSourceFile: /src/pdns/pdns/dnsbackend.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool deactivateDomainKey(const ZoneName& /* name */, unsigned int /*
      id */)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 248
      start: 248
    functionDepth: 0
    functionLinenumber: 248
    functionLinenumberEnd: 248
    functionName: DNSBackend::publishDomainKey
    functionSourceFile: /src/pdns/pdns/dnsbackend.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool publishDomainKey(const ZoneName& /* name */, unsigned int /* id
      */)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 249
      start: 249
    functionDepth: 0
    functionLinenumber: 249
    functionLinenumberEnd: 249
    functionName: DNSBackend::unpublishDomainKey
    functionSourceFile: /src/pdns/pdns/dnsbackend.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool unpublishDomainKey(const ZoneName& /* name */, unsigned int /*
      id */)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 251
      start: 251
    functionDepth: 0
    functionLinenumber: 251
    functionLinenumberEnd: 251
    functionName: DNSBackend::setTSIGKey
    functionSourceFile: /src/pdns/pdns/dnsbackend.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool setTSIGKey(const DNSName& /* name */, const DNSName& /* algorithm
      */, const string& /* content */)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 252
      start: 252
    functionDepth: 0
    functionLinenumber: 252
    functionLinenumberEnd: 252
    functionName: DNSBackend::getTSIGKey
    functionSourceFile: /src/pdns/pdns/dnsbackend.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool getTSIGKey(const DNSName& /* name */, DNSName& /* algorithm */,
      string& /* content */)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 253
      start: 253
    functionDepth: 0
    functionLinenumber: 253
    functionLinenumberEnd: 253
    functionName: DNSBackend::getTSIGKeys
    functionSourceFile: /src/pdns/pdns/dnsbackend.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool getTSIGKeys(std::vector<struct TSIGKey>& /* keys */)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 254
      start: 254
    functionDepth: 0
    functionLinenumber: 254
    functionLinenumberEnd: 254
    functionName: DNSBackend::deleteTSIGKey
    functionSourceFile: /src/pdns/pdns/dnsbackend.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool deleteTSIGKey(const DNSName& /* name */)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PDNSException
      Src: /src/pdns/pdns/dnsbackend.hh:258,1
    - Dst: toLogString
      Src: /src/pdns/pdns/dnsbackend.hh:258,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - ' qname'
    argTypes:
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 259
      start: 256
    functionDepth: 0
    functionLinenumber: 256
    functionLinenumberEnd: 259
    functionName: DNSBackend::getBeforeAndAfterNamesAbsolute
    functionSourceFile: /src/pdns/pdns/dnsbackend.hh
    functionUses: 0
    functionsReached:
    - PDNSException
    - toLogString
    linkageType: ''
    returnType: bool
    signature: bool getBeforeAndAfterNamesAbsolute(domainid_t /* id */, const DNSName&
      qname, DNSName& /* unhashed */, DNSName& /* before */, DNSName& /* after */)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 266
      start: 263
    functionDepth: 0
    functionLinenumber: 263
    functionLinenumberEnd: 266
    functionName: DNSBackend::updateDNSSECOrderNameAndAuth
    functionSourceFile: /src/pdns/pdns/dnsbackend.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool updateDNSSECOrderNameAndAuth(domainid_t /* domain_id */, const
      DNSName& /* qname */, const DNSName& /* ordername */, bool /* auth */, const
      uint16_t /* qtype */, bool /* isNsec3 */)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 271
      start: 268
    functionDepth: 0
    functionLinenumber: 268
    functionLinenumberEnd: 271
    functionName: DNSBackend::updateEmptyNonTerminals
    functionSourceFile: /src/pdns/pdns/dnsbackend.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool updateEmptyNonTerminals(domainid_t /* domain_id */, set<DNSName>&
      /* insert */, set<DNSName>& /* erase */, bool /* remove */)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getCapabilities
      Src: /src/pdns/pdns/dnsbackend.hh:275,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 276
      start: 273
    functionDepth: 0
    functionLinenumber: 273
    functionLinenumberEnd: 276
    functionName: DNSBackend::doesDNSSEC
    functionSourceFile: /src/pdns/pdns/dnsbackend.hh
    functionUses: 0
    functionsReached:
    - getCapabilities
    linkageType: ''
    returnType: bool
    signature: bool doesDNSSEC()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 284
      start: 281
    functionDepth: 0
    functionLinenumber: 281
    functionLinenumberEnd: 284
    functionName: DNSBackend::listComments
    functionSourceFile: /src/pdns/pdns/dnsbackend.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool listComments(domainid_t /* domain_id */)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 289
      start: 286
    functionDepth: 0
    functionLinenumber: 286
    functionLinenumberEnd: 289
    functionName: DNSBackend::getComment
    functionSourceFile: /src/pdns/pdns/dnsbackend.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool getComment(Comment& /* comment */)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 294
      start: 291
    functionDepth: 0
    functionLinenumber: 291
    functionLinenumberEnd: 294
    functionName: DNSBackend::feedComment
    functionSourceFile: /src/pdns/pdns/dnsbackend.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool feedComment(const Comment& /* comment */)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 299
      start: 296
    functionDepth: 0
    functionLinenumber: 296
    functionLinenumberEnd: 299
    functionName: DNSBackend::replaceComments
    functionSourceFile: /src/pdns/pdns/dnsbackend.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool replaceComments(const domainid_t /* domain_id */, const DNSName&
      /* qname */, const QType& /* qt */, const vector<Comment>& /* comments */)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 309
      start: 306
    functionDepth: 0
    functionLinenumber: 306
    functionLinenumberEnd: 309
    functionName: DNSBackend::startTransaction
    functionSourceFile: /src/pdns/pdns/dnsbackend.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool startTransaction(const ZoneName& /* qname */, domainid_t /* id
      */ = UnknownDomainID)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 315
      start: 312
    functionDepth: 0
    functionLinenumber: 312
    functionLinenumberEnd: 315
    functionName: DNSBackend::commitTransaction
    functionSourceFile: /src/pdns/pdns/dnsbackend.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool commitTransaction()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 321
      start: 318
    functionDepth: 0
    functionLinenumber: 318
    functionLinenumberEnd: 321
    functionName: DNSBackend::abortTransaction
    functionSourceFile: /src/pdns/pdns/dnsbackend.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool abortTransaction()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 326
      start: 323
    functionDepth: 0
    functionLinenumber: 323
    functionLinenumberEnd: 326
    functionName: DNSBackend::inTransaction
    functionSourceFile: /src/pdns/pdns/dnsbackend.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool inTransaction()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 330
      start: 328
    functionDepth: 0
    functionLinenumber: 328
    functionLinenumberEnd: 330
    functionName: DNSBackend::reload
    functionSourceFile: /src/pdns/pdns/dnsbackend.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void reload()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 334
      start: 332
    functionDepth: 0
    functionLinenumber: 332
    functionLinenumberEnd: 334
    functionName: DNSBackend::rediscover
    functionSourceFile: /src/pdns/pdns/dnsbackend.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void rediscover(string* /* status */ = nullptr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 340
      start: 337
    functionDepth: 0
    functionLinenumber: 337
    functionLinenumberEnd: 340
    functionName: DNSBackend::feedRecord
    functionSourceFile: /src/pdns/pdns/dnsbackend.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool feedRecord(const DNSResourceRecord& /* rr */, const DNSName& /*
      ordername */, bool /* ordernameIsNSEC3 */ = false)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 344
      start: 341
    functionDepth: 0
    functionLinenumber: 341
    functionLinenumberEnd: 344
    functionName: DNSBackend::feedEnts
    functionSourceFile: /src/pdns/pdns/dnsbackend.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool feedEnts(domainid_t /* domain_id */, map<DNSName, bool>& /* nonterm
      */)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 348
      start: 345
    functionDepth: 0
    functionLinenumber: 345
    functionLinenumberEnd: 348
    functionName: DNSBackend::feedEnts3
    functionSourceFile: /src/pdns/pdns/dnsbackend.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool feedEnts3(domainid_t /* domain_id */, const DNSName& /* domain
      */, map<DNSName, bool>& /* nonterm */, const NSEC3PARAMRecordContent& /* ns3prc
      */, bool /* narrow */)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 354
      start: 351
    functionDepth: 0
    functionLinenumber: 351
    functionLinenumberEnd: 354
    functionName: DNSBackend::getDomainInfo
    functionSourceFile: /src/pdns/pdns/dnsbackend.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool getDomainInfo(const ZoneName& /* domain */, DomainInfo& /* di
      */, bool /* getSerial */ = true)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 358
      start: 356
    functionDepth: 0
    functionLinenumber: 356
    functionLinenumberEnd: 358
    functionName: DNSBackend::getUnfreshSecondaryInfos
    functionSourceFile: /src/pdns/pdns/dnsbackend.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void getUnfreshSecondaryInfos(vector<DomainInfo>* /* domains */)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSBackend::getDomainMetadata
      Src: /src/pdns/pdns/dnsbackend.hh:364,1
    - Dst: set<string>*::insert
      Src: /src/pdns/pdns/dnsbackend.hh:365,1
    - Dst: std::vector::begin
      Src: /src/pdns/pdns/dnsbackend.hh:365,1
    - Dst: std::vector::end
      Src: /src/pdns/pdns/dnsbackend.hh:365,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ' domain'
    - ips
    argTypes:
    - ZoneName
    - set<string>*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 366
      start: 361
    functionDepth: 1
    functionLinenumber: 361
    functionLinenumberEnd: 366
    functionName: DNSBackend::alsoNotifies
    functionSourceFile: /src/pdns/pdns/dnsbackend.hh
    functionUses: 0
    functionsReached:
    - std::vector::begin
    - DNSBackend::getDomainMetadata
    - std::vector::end
    - set<string>*::insert
    linkageType: ''
    returnType: void
    signature: void alsoNotifies(const ZoneName& domain, set<string>* ips)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 371
      start: 369
    functionDepth: 0
    functionLinenumber: 369
    functionLinenumberEnd: 371
    functionName: DNSBackend::getUpdatedPrimaries
    functionSourceFile: /src/pdns/pdns/dnsbackend.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void getUpdatedPrimaries(vector<DomainInfo>& /* domains */, std::unordered_set<DNSName>&
      /* catalogs */, CatalogHashMap& /* catalogHashes */)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 377
      start: 374
    functionDepth: 0
    functionLinenumber: 374
    functionLinenumberEnd: 377
    functionName: DNSBackend::getCatalogMembers
    functionSourceFile: /src/pdns/pdns/dnsbackend.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool getCatalogMembers(const ZoneName& /* catalog */, vector<CatalogInfo>&
      /* members */, CatalogInfo::CatalogType /* type */)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 382
      start: 380
    functionDepth: 0
    functionLinenumber: 380
    functionLinenumberEnd: 382
    functionName: DNSBackend::setStale
    functionSourceFile: /src/pdns/pdns/dnsbackend.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setStale(domainid_t /* domain_id */)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 387
      start: 385
    functionDepth: 0
    functionLinenumber: 385
    functionLinenumberEnd: 387
    functionName: DNSBackend::setFresh
    functionSourceFile: /src/pdns/pdns/dnsbackend.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setFresh(domainid_t /* domain_id */)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 392
      start: 390
    functionDepth: 0
    functionLinenumber: 390
    functionLinenumberEnd: 392
    functionName: DNSBackend::setNotified
    functionSourceFile: /src/pdns/pdns/dnsbackend.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setNotified(domainid_t /* id */, uint32_t /* serial */)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 398
      start: 395
    functionDepth: 0
    functionLinenumber: 395
    functionLinenumberEnd: 398
    functionName: DNSBackend::setPrimaries
    functionSourceFile: /src/pdns/pdns/dnsbackend.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool setPrimaries(const ZoneName& /* domain */, const vector<ComboAddress>&
      /* primaries */)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 404
      start: 401
    functionDepth: 0
    functionLinenumber: 401
    functionLinenumberEnd: 404
    functionName: DNSBackend::setKind
    functionSourceFile: /src/pdns/pdns/dnsbackend.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool setKind(const ZoneName& /* domain */, const DomainInfo::DomainKind
      /* kind */)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 410
      start: 407
    functionDepth: 0
    functionLinenumber: 407
    functionLinenumberEnd: 410
    functionName: DNSBackend::setOptions
    functionSourceFile: /src/pdns/pdns/dnsbackend.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool setOptions(const ZoneName& /* domain */, const string& /* options
      */)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 416
      start: 413
    functionDepth: 0
    functionLinenumber: 413
    functionLinenumberEnd: 416
    functionName: DNSBackend::setCatalog
    functionSourceFile: /src/pdns/pdns/dnsbackend.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool setCatalog(const ZoneName& /* domain */, const ZoneName& /* catalog
      */)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 422
      start: 419
    functionDepth: 0
    functionLinenumber: 419
    functionLinenumberEnd: 422
    functionName: DNSBackend::setAccount
    functionSourceFile: /src/pdns/pdns/dnsbackend.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool setAccount(const ZoneName& /* domain */, const string& /* account
      */)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 431
      start: 428
    functionDepth: 0
    functionLinenumber: 428
    functionLinenumberEnd: 431
    functionName: DNSBackend::autoPrimaryAdd
    functionSourceFile: /src/pdns/pdns/dnsbackend.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool autoPrimaryAdd(const struct AutoPrimary& /* primary */)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 437
      start: 434
    functionDepth: 0
    functionLinenumber: 434
    functionLinenumberEnd: 437
    functionName: DNSBackend::autoPrimaryRemove
    functionSourceFile: /src/pdns/pdns/dnsbackend.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool autoPrimaryRemove(const struct AutoPrimary& /* primary */)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 443
      start: 440
    functionDepth: 0
    functionLinenumber: 440
    functionLinenumberEnd: 443
    functionName: DNSBackend::autoPrimariesList
    functionSourceFile: /src/pdns/pdns/dnsbackend.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool autoPrimariesList(std::vector<AutoPrimary>& /* primaries */)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 449
      start: 446
    functionDepth: 0
    functionLinenumber: 446
    functionLinenumberEnd: 449
    functionName: DNSBackend::autoPrimaryBackend
    functionSourceFile: /src/pdns/pdns/dnsbackend.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool autoPrimaryBackend(const string& /* ip */, const ZoneName& /*
      domain */, const vector<DNSResourceRecord>& /* nsset */, string* /* nameserver
      */, string* /* account */, DNSBackend** /* db */)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 455
      start: 452
    functionDepth: 0
    functionLinenumber: 452
    functionLinenumberEnd: 455
    functionName: DNSBackend::createDomain
    functionSourceFile: /src/pdns/pdns/dnsbackend.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool createDomain(const ZoneName& /* domain */, const DomainInfo::DomainKind
      /* kind */, const vector<ComboAddress>& /* primaries */, const string& /* account
      */)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 461
      start: 458
    functionDepth: 0
    functionLinenumber: 458
    functionLinenumberEnd: 461
    functionName: DNSBackend::createSecondaryDomain
    functionSourceFile: /src/pdns/pdns/dnsbackend.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool createSecondaryDomain(const string& /* ip */, const ZoneName&
      /* domain */, const string& /* nameserver */, const string& /* account */)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 467
      start: 464
    functionDepth: 0
    functionLinenumber: 464
    functionLinenumberEnd: 467
    functionName: DNSBackend::deleteDomain
    functionSourceFile: /src/pdns/pdns/dnsbackend.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool deleteDomain(const ZoneName& /* domain */)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 472
      start: 469
    functionDepth: 0
    functionLinenumber: 469
    functionLinenumberEnd: 472
    functionName: DNSBackend::directBackendCmd
    functionSourceFile: /src/pdns/pdns/dnsbackend.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: string
    signature: string directBackendCmd(const string& /* query */)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 482
      start: 480
    functionDepth: 0
    functionLinenumber: 480
    functionLinenumberEnd: 482
    functionName: DNSBackend::viewList
    functionSourceFile: /src/pdns/pdns/dnsbackend.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void viewList(vector<string>& /* result */)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 486
      start: 484
    functionDepth: 0
    functionLinenumber: 484
    functionLinenumberEnd: 486
    functionName: DNSBackend::viewListZones
    functionSourceFile: /src/pdns/pdns/dnsbackend.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void viewListZones(const string& /* view */, vector<ZoneName>& /* result
      */)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 491
      start: 488
    functionDepth: 0
    functionLinenumber: 488
    functionLinenumberEnd: 491
    functionName: DNSBackend::viewAddZone
    functionSourceFile: /src/pdns/pdns/dnsbackend.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool viewAddZone(const string& /* view */, const ZoneName& /* zone
      */)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 496
      start: 493
    functionDepth: 0
    functionLinenumber: 493
    functionLinenumberEnd: 496
    functionName: DNSBackend::viewDelZone
    functionSourceFile: /src/pdns/pdns/dnsbackend.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool viewDelZone(const string& /* view */, const ZoneName& /* zone
      */)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 501
      start: 498
    functionDepth: 0
    functionLinenumber: 498
    functionLinenumberEnd: 501
    functionName: DNSBackend::networkSet
    functionSourceFile: /src/pdns/pdns/dnsbackend.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool networkSet(const Netmask& /* net */, std::string& /* tag */)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 506
      start: 503
    functionDepth: 0
    functionLinenumber: 503
    functionLinenumberEnd: 506
    functionName: DNSBackend::networkList
    functionSourceFile: /src/pdns/pdns/dnsbackend.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool networkList(vector<pair<Netmask, string>>& /* networks */)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 512
      start: 509
    functionDepth: 0
    functionLinenumber: 509
    functionLinenumberEnd: 512
    functionName: DNSBackend::hasCreatedLocalFiles
    functionSourceFile: /src/pdns/pdns/dnsbackend.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool hasCreatedLocalFiles() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 516
      start: 514
    functionDepth: 0
    functionLinenumber: 514
    functionLinenumberEnd: 516
    functionName: DNSBackend::rectifyZoneHook
    functionSourceFile: /src/pdns/pdns/dnsbackend.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void rectifyZoneHook(domainid_t /*domain_id*/, bool /*before*/) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 518
      start: 518
    functionDepth: 0
    functionLinenumber: 518
    functionLinenumberEnd: 518
    functionName: '& getPrefix()'
    functionSourceFile: /src/pdns/pdns/dnsbackend.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: string
    signature: string & getPrefix()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: clear
      Src: /src/pdns/pdns/dnsbackend.hh:528,1
    - Dst: DNSBackend::get
      Src: /src/pdns/pdns/dnsbackend.hh:529,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ' rec'
    - ' invalid'
    argTypes:
    - DNSResourceRecord
    - std::vector<std::pair<std::string, std::string>>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 530
      start: 526
    functionDepth: 1
    functionLinenumber: 526
    functionLinenumberEnd: 530
    functionName: DNSBackend::get_unsafe
    functionSourceFile: /src/pdns/pdns/dnsbackend.hh
    functionUses: 0
    functionsReached:
    - clear
    - DNSBackend::get
    linkageType: ''
    returnType: bool
    signature: bool get_unsafe(DNSResourceRecord& rec, std::vector<std::pair<std::string,
      std::string>>& invalid)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 534
      start: 532
    functionDepth: 0
    functionLinenumber: 532
    functionLinenumberEnd: 534
    functionName: DNSBackend::flush
    functionSourceFile: /src/pdns/pdns/dnsbackend.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void flush()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsbackend.hh:551,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - name
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 551
      start: 550
    functionDepth: 0
    functionLinenumber: 550
    functionLinenumberEnd: 551
    functionName: BackendFactory::BackendFactory
    functionSourceFile: /src/pdns/pdns/dnsbackend.hh
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void BackendFactory(string name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 552
      start: 552
    functionDepth: 0
    functionLinenumber: 552
    functionLinenumberEnd: 552
    functionName: ~BackendFactory()
    functionSourceFile: /src/pdns/pdns/dnsbackend.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~BackendFactory()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BackendFactory::make
      Src: /src/pdns/pdns/dnsbackend.hh:556,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' suffix'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 557
      start: 554
    functionDepth: 0
    functionLinenumber: 554
    functionLinenumberEnd: 557
    functionName: BackendFactory::makeMetadataOnly
    functionSourceFile: /src/pdns/pdns/dnsbackend.hh
    functionUses: 0
    functionsReached:
    - BackendFactory::make
    linkageType: ''
    returnType: DNSBackend
    signature: DNSBackend * makeMetadataOnly(const string& suffix)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 558
      start: 558
    functionDepth: 0
    functionLinenumber: 558
    functionLinenumberEnd: 558
    functionName: BackendFactory::declareArguments
    functionSourceFile: /src/pdns/pdns/dnsbackend.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void declareArguments(const string& /* suffix */ = "")
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' reason_'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 595
      start: 594
    functionDepth: 0
    functionLinenumber: 594
    functionLinenumberEnd: 595
    functionName: DBException::DBException
    functionSourceFile: /src/pdns/pdns/dnsbackend.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void DBException(const string& reason_)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 601
      start: 600
    functionDepth: 0
    functionLinenumber: 600
    functionLinenumberEnd: 601
    functionName: SOAData
    functionSourceFile: /src/pdns/pdns/dnsbackend.hh
    functionUses: 9
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void SOAData()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 604
      start: 604
    functionDepth: 0
    functionLinenumber: 604
    functionLinenumberEnd: 604
    functionName: '& qname() const'
    functionSourceFile: /src/pdns/pdns/dnsbackend.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: DNSName
    signature: DNSName & qname() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: min
      Src: /src/pdns/pdns/dnsbackend.hh:620,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 620
      start: 620
    functionDepth: 0
    functionLinenumber: 620
    functionLinenumberEnd: 620
    functionName: getNegativeTTL
    functionSourceFile: /src/pdns/pdns/dnsbackend.hh
    functionUses: 1
    functionsReached:
    - min
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t getNegativeTTL() const
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: arg
      Src: /src/pdns/pdns/secpoll-auth.cc:36,1
    - Dst: empty
      Src: /src/pdns/pdns/secpoll-auth.cc:36,1
    - Dst: gettimeofday
      Src: /src/pdns/pdns/secpoll-auth.cc:40,1
    - Dst: string::substr
      Src: /src/pdns/pdns/secpoll-auth.cc:44,1
    - Dst: arg
      Src: /src/pdns/pdns/secpoll-auth.cc:44,1
    - Dst: string::rbegin
      Src: /src/pdns/pdns/secpoll-auth.cc:46,1
    - Dst: std::replace
      Src: /src/pdns/pdns/secpoll-auth.cc:49,1
    - Dst: string::begin
      Src: /src/pdns/pdns/secpoll-auth.cc:49,1
    - Dst: string::end
      Src: /src/pdns/pdns/secpoll-auth.cc:49,1
    - Dst: std::replace
      Src: /src/pdns/pdns/secpoll-auth.cc:50,1
    - Dst: string::begin
      Src: /src/pdns/pdns/secpoll-auth.cc:50,1
    - Dst: string::end
      Src: /src/pdns/pdns/secpoll-auth.cc:50,1
    - Dst: std::stoi
      Src: /src/pdns/pdns/secpoll-auth.cc:52,1
    - Dst: getValueStr
      Src: /src/pdns/pdns/secpoll-auth.cc:52,1
    - Dst: stubDoResolve
      Src: /src/pdns/pdns/secpoll-auth.cc:55,1
    - Dst: DNSName
      Src: /src/pdns/pdns/secpoll-auth.cc:55,1
    - Dst: isReleaseVersion
      Src: /src/pdns/pdns/secpoll-auth.cc:57,1
    - Dst: SLOG
      Src: /src/pdns/pdns/secpoll-auth.cc:58,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/secpoll-auth.cc:59,1
    - Dst: processSecPoll
      Src: /src/pdns/pdns/secpoll-auth.cc:66,1
    - Dst: set
      Src: /src/pdns/pdns/secpoll-auth.cc:68,1
    - Dst: SLOG
      Src: /src/pdns/pdns/secpoll-auth.cc:69,1
    - Dst: Logr::log_t::error
      Src: /src/pdns/pdns/secpoll-auth.cc:70,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/secpoll-auth.cc:70,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/secpoll-auth.cc:70,1
    - Dst: set
      Src: /src/pdns/pdns/secpoll-auth.cc:75,1
    - Dst: SLOG
      Src: /src/pdns/pdns/secpoll-auth.cc:79,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/secpoll-auth.cc:80,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/secpoll-auth.cc:80,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/secpoll-auth.cc:80,1
    - Dst: SLOG
      Src: /src/pdns/pdns/secpoll-auth.cc:83,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/secpoll-auth.cc:84,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/secpoll-auth.cc:84,1
    - Dst: SLOG
      Src: /src/pdns/pdns/secpoll-auth.cc:87,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/secpoll-auth.cc:88,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/secpoll-auth.cc:88,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 31
    argCount: 2
    argNames:
    - slog
    - first
    argTypes:
    - Logr::log_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 34
    functionDepth: 4
    functionLinenumber: 34
    functionLinenumberEnd: 91
    functionName: doSecPoll
    functionSourceFile: /src/pdns/pdns/secpoll-auth.cc
    functionUses: 1
    functionsReached:
    - getValueStr
    - set
    - string::rbegin
    - string::substr
    - gettimeofday
    - processSecPoll
    - std::replace
    - string::end
    - SLOG
    - Logr::log_t::info
    - Logging::Loggable
    - Logr::log_t::error
    - empty
    - string::begin
    - isReleaseVersion
    - stubDoResolve
    - DNSName
    - arg
    - std::stoi
    linkageType: ''
    returnType: bool
    signature: bool doSecPoll(Logr::log_t slog, bool first)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_TEST_MESSAGE
      Src: /src/pdns/pdns/test-signers.cc:303,1
    - Dst: DNSCryptoKeyEngine::listAllAlgosWithBackend
      Src: /src/pdns/pdns/test-signers.cc:304,1
    - Dst: BOOST_TEST_MESSAGE
      Src: /src/pdns/pdns/test-signers.cc:306,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/test-signers.cc:306,1
    - Dst: BOOST_TEST_MESSAGE
      Src: /src/pdns/pdns/test-signers.cc:309,1
    - Dst: addSignerParams
      Src: /src/pdns/pdns/test-signers.cc:311,1
    - Dst: addSignerParams
      Src: /src/pdns/pdns/test-signers.cc:314,1
    - Dst: addSignerParams
      Src: /src/pdns/pdns/test-signers.cc:319,1
    - Dst: addSignerParams
      Src: /src/pdns/pdns/test-signers.cc:323,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 325
      start: 301
    functionDepth: 0
    functionLinenumber: 301
    functionLinenumberEnd: 325
    functionName: Fixture
    functionSourceFile: /src/pdns/pdns/test-signers.cc
    functionUses: 0
    functionsReached:
    - DNSCryptoKeyEngine::listAllAlgosWithBackend
    - BOOST_TEST_MESSAGE
    - addSignerParams
    - std::to_string
    linkageType: ''
    returnType: void
    signature: void Fixture()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_TEST_MESSAGE
      Src: /src/pdns/pdns/test-signers.cc:329,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/test-signers.cc:329,1
    - Dst: insert_or_assign
      Src: /src/pdns/pdns/test-signers.cc:330,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - algorithm
    - ' name'
    - ' params'
    argTypes:
    - uint8_t
    - std::string
    - SignerParams
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 331
      start: 327
    functionDepth: 0
    functionLinenumber: 327
    functionLinenumberEnd: 331
    functionName: addSignerParams
    functionSourceFile: /src/pdns/pdns/test-signers.cc
    functionUses: 1
    functionsReached:
    - insert_or_assign
    - BOOST_TEST_MESSAGE
    - std::to_string
    linkageType: ''
    returnType: void
    signature: void addSignerParams(const uint8_t algorithm, const std::string& name,
      const SignerParams& params)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: DNSKEYRecordContent::DNSKEYRecordContent
      Src: /src/pdns/pdns/test-signers.cc:339,1
    - Dst: std::shared_ptr<DNSCryptoKeyEngine>
      Src: /src/pdns/pdns/test-signers.cc:340,1
    - Dst: DNSCryptoKeyEngine::makeFromISCString
      Src: /src/pdns/pdns/test-signers.cc:340,1
    - Dst: DNSSECPrivateKey::setKey
      Src: /src/pdns/pdns/test-signers.cc:342,1
    - Dst: DNSSECPrivateKey::getAlgorithm
      Src: /src/pdns/pdns/test-signers.cc:346,1
    - Dst: RRSIGRecordContent::RRSIGRecordContent
      Src: /src/pdns/pdns/test-signers.cc:348,1
    - Dst: DNSSECPrivateKey::getAlgorithm
      Src: /src/pdns/pdns/test-signers.cc:352,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-signers.cc:353,1
    - Dst: sortedRecords_t::insert
      Src: /src/pdns/pdns/test-signers.cc:356,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/test-signers.cc:356,1
    - Dst: sortedRecords_t::insert
      Src: /src/pdns/pdns/test-signers.cc:360,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/test-signers.cc:360,1
    - Dst: sortedRecords_t::cbegin
      Src: /src/pdns/pdns/test-signers.cc:366,1
    - Dst: getType
      Src: /src/pdns/pdns/test-signers.cc:366,1
    - Dst: DNSName::countLabels
      Src: /src/pdns/pdns/test-signers.cc:367,1
    - Dst: DNSSECPrivateKey::getTag
      Src: /src/pdns/pdns/test-signers.cc:368,1
    - Dst: DNSSECPrivateKey::getAlgorithm
      Src: /src/pdns/pdns/test-signers.cc:369,1
    - Dst: getMessageForRRSET
      Src: /src/pdns/pdns/test-signers.cc:371,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-signers.cc:373,1
    - Dst: makeHexDump
      Src: /src/pdns/pdns/test-signers.cc:373,1
    - Dst: auto::sign
      Src: /src/pdns/pdns/test-signers.cc:375,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-signers.cc:378,1
    - Dst: auto::verify
      Src: /src/pdns/pdns/test-signers.cc:378,1
    - Dst: Base64Encode
      Src: /src/pdns/pdns/test-signers.cc:381,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-signers.cc:382,1
    - Dst: B64Decode
      Src: /src/pdns/pdns/test-signers.cc:386,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-signers.cc:388,1
    - Dst: auto::verify
      Src: /src/pdns/pdns/test-signers.cc:388,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 26
    argCount: 1
    argNames:
    - ' signer'
    argTypes:
    - SignerParams
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 390
      start: 337
    functionDepth: 1
    functionLinenumber: 337
    functionLinenumberEnd: 390
    functionName: checkRR
    functionSourceFile: /src/pdns/pdns/test-signers.cc
    functionUses: 0
    functionsReached:
    - auto::verify
    - DNSCryptoKeyEngine::makeFromISCString
    - DNSSECPrivateKey::setKey
    - RRSIGRecordContent::RRSIGRecordContent
    - makeHexDump
    - sortedRecords_t::cbegin
    - B64Decode
    - DNSSECPrivateKey::getAlgorithm
    - DNSRecordContent::make
    - getType
    - std::shared_ptr<DNSCryptoKeyEngine>
    - DNSName
    - sortedRecords_t::insert
    - auto::sign
    - DNSSECPrivateKey::getTag
    - DNSKEYRecordContent::DNSKEYRecordContent
    - getMessageForRRSET
    - DNSName::countLabels
    - BOOST_CHECK_EQUAL
    - BOOST_CHECK
    - Base64Encode
    linkageType: ''
    returnType: void
    signature: void checkRR(const SignerParams& signer)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-signers.cc:394,1
    - Dst: std::shared_ptr<DNSCryptoKeyEngine>::getAlgorithm
      Src: /src/pdns/pdns/test-signers.cc:394,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-signers.cc:395,1
    - Dst: std::shared_ptr<DNSCryptoKeyEngine>::getBits
      Src: /src/pdns/pdns/test-signers.cc:395,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-signers.cc:398,1
    - Dst: std::shared_ptr<DNSCryptoKeyEngine>::checkKey
      Src: /src/pdns/pdns/test-signers.cc:398,1
    - Dst: vector::empty
      Src: /src/pdns/pdns/test-signers.cc:399,1
    - Dst: BOOST_TEST_MESSAGE
      Src: /src/pdns/pdns/test-signers.cc:400,1
    - Dst: std::shared_ptr<DNSCryptoKeyEngine>::getName
      Src: /src/pdns/pdns/test-signers.cc:400,1
    - Dst: BOOST_TEST_MESSAGE
      Src: /src/pdns/pdns/test-signers.cc:402,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-signers.cc:406,1
    - Dst: DNSSECPrivateKey::setKey
      Src: /src/pdns/pdns/test-signers.cc:409,1
    - Dst: DNSSECPrivateKey::getDNSKEY
      Src: /src/pdns/pdns/test-signers.cc:410,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-signers.cc:412,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-signers.cc:413,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-signers.cc:414,1
    - Dst: getZoneRepresentation
      Src: /src/pdns/pdns/test-signers.cc:414,1
    - Dst: makeDSFromDNSKey
      Src: /src/pdns/pdns/test-signers.cc:417,1
    - Dst: dsSHA1::empty
      Src: /src/pdns/pdns/test-signers.cc:418,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-signers.cc:419,1
    - Dst: auto::getZoneRepresentation
      Src: /src/pdns/pdns/test-signers.cc:419,1
    - Dst: makeDSFromDNSKey
      Src: /src/pdns/pdns/test-signers.cc:422,1
    - Dst: dsSHA256::empty
      Src: /src/pdns/pdns/test-signers.cc:423,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-signers.cc:424,1
    - Dst: auto::getZoneRepresentation
      Src: /src/pdns/pdns/test-signers.cc:424,1
    - Dst: makeDSFromDNSKey
      Src: /src/pdns/pdns/test-signers.cc:427,1
    - Dst: dsSHA384::empty
      Src: /src/pdns/pdns/test-signers.cc:428,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-signers.cc:429,1
    - Dst: auto::getZoneRepresentation
      Src: /src/pdns/pdns/test-signers.cc:429,1
    - Dst: std::shared_ptr<DNSCryptoKeyEngine>::sign
      Src: /src/pdns/pdns/test-signers.cc:432,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-signers.cc:434,1
    - Dst: std::shared_ptr<DNSCryptoKeyEngine>::verify
      Src: /src/pdns/pdns/test-signers.cc:434,1
    - Dst: std::string
      Src: /src/pdns/pdns/test-signers.cc:436,1
    - Dst: signature::begin
      Src: /src/pdns/pdns/test-signers.cc:436,1
    - Dst: signature::end
      Src: /src/pdns/pdns/test-signers.cc:436,1
    - Dst: Base64Encode
      Src: /src/pdns/pdns/test-signers.cc:438,1
    - Dst: Base64Encode
      Src: /src/pdns/pdns/test-signers.cc:439,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-signers.cc:440,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-signers.cc:446,1
    - Dst: std::shared_ptr<DNSCryptoKeyEngine>::verify
      Src: /src/pdns/pdns/test-signers.cc:446,1
    - Dst: rfcMsgDump::empty
      Src: /src/pdns/pdns/test-signers.cc:449,1
    - Dst: rfcB64Signature::empty
      Src: /src/pdns/pdns/test-signers.cc:449,1
    - Dst: checkRR
      Src: /src/pdns/pdns/test-signers.cc:450,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 33
    argCount: 4
    argNames:
    - dcke
    - ' drc'
    - ' signer'
    - ' message'
    argTypes:
    - std::shared_ptr<DNSCryptoKeyEngine>
    - DNSKEYRecordContent
    - SignerParams
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 452
      start: 392
    functionDepth: 0
    functionLinenumber: 392
    functionLinenumberEnd: 452
    functionName: test_generic_signer
    functionSourceFile: /src/pdns/pdns/test-signers.cc
    functionUses: 0
    functionsReached:
    - getZoneRepresentation
    - std::shared_ptr<DNSCryptoKeyEngine>::getAlgorithm
    - signature::begin
    - DNSSECPrivateKey::setKey
    - std::shared_ptr<DNSCryptoKeyEngine>::verify
    - std::string
    - std::shared_ptr<DNSCryptoKeyEngine>::checkKey
    - checkRR
    - dsSHA384::empty
    - std::shared_ptr<DNSCryptoKeyEngine>::getName
    - dsSHA1::empty
    - BOOST_TEST_MESSAGE
    - std::shared_ptr<DNSCryptoKeyEngine>::getBits
    - dsSHA256::empty
    - std::shared_ptr<DNSCryptoKeyEngine>::sign
    - vector::empty
    - rfcB64Signature::empty
    - makeDSFromDNSKey
    - signature::end
    - rfcMsgDump::empty
    - BOOST_CHECK_EQUAL
    - auto::getZoneRepresentation
    - DNSSECPrivateKey::getDNSKEY
    - BOOST_CHECK
    - Base64Encode
    linkageType: ''
    returnType: void
    signature: void test_generic_signer(std::shared_ptr<DNSCryptoKeyEngine> dcke,
      DNSKEYRecordContent& drc, const SignerParams& signer, const std::string& message)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSKEYRecordContent::DNSKEYRecordContent
      Src: /src/pdns/pdns/test-signers.cc:460,1
    - Dst: std::shared_ptr<DNSCryptoKeyEngine>
      Src: /src/pdns/pdns/test-signers.cc:461,1
    - Dst: DNSCryptoKeyEngine::makeFromISCString
      Src: /src/pdns/pdns/test-signers.cc:461,1
    - Dst: test_generic_signer
      Src: /src/pdns/pdns/test-signers.cc:462,1
    - Dst: DNSKEYRecordContent::DNSKEYRecordContent
      Src: /src/pdns/pdns/test-signers.cc:464,1
    - Dst: DNSCryptoKeyEngine::makeFromPEMString
      Src: /src/pdns/pdns/test-signers.cc:465,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-signers.cc:467,1
    - Dst: shared_ptr::convertToISC
      Src: /src/pdns/pdns/test-signers.cc:467,1
    - Dst: auto::convertToISC
      Src: /src/pdns/pdns/test-signers.cc:467,1
    - Dst: test_generic_signer
      Src: /src/pdns/pdns/test-signers.cc:469,1
    - Dst: auto::convertToPEMString
      Src: /src/pdns/pdns/test-signers.cc:471,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-signers.cc:472,1
    - Dst: shared_ptr::convertToPEMString
      Src: /src/pdns/pdns/test-signers.cc:474,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-signers.cc:475,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 477
      start: 455
    functionDepth: 0
    functionLinenumber: 455
    functionLinenumberEnd: 477
    functionName: BOOST_FIXTURE_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-signers.cc
    functionUses: 0
    functionsReached:
    - test_generic_signer
    - DNSCryptoKeyEngine::makeFromISCString
    - shared_ptr::convertToPEMString
    - auto::convertToPEMString
    - BOOST_CHECK_EQUAL
    - auto::convertToISC
    - shared_ptr::convertToISC
    - std::shared_ptr<DNSCryptoKeyEngine>
    - DNSCryptoKeyEngine::makeFromPEMString
    - DNSKEYRecordContent::DNSKEYRecordContent
    linkageType: ''
    returnType: void
    signature: void BOOST_FIXTURE_TEST_CASE(test_generic_signers, Fixture)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hashQNameWithSalt
      Src: /src/pdns/pdns/test-signers.cc:502,1
    - Dst: std::string
      Src: /src/pdns/pdns/test-signers.cc:502,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/test-signers.cc:502,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-signers.cc:502,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-signers.cc:503,1
    - Dst: toBase32Hex
      Src: /src/pdns/pdns/test-signers.cc:503,1
    - Dst: hashQNameWithSalt
      Src: /src/pdns/pdns/test-signers.cc:516,1
    - Dst: std::string
      Src: /src/pdns/pdns/test-signers.cc:516,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/test-signers.cc:516,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-signers.cc:516,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-signers.cc:517,1
    - Dst: toBase32Hex
      Src: /src/pdns/pdns/test-signers.cc:517,1
    - Dst: hashQNameWithSalt
      Src: /src/pdns/pdns/test-signers.cc:530,1
    - Dst: std::string
      Src: /src/pdns/pdns/test-signers.cc:530,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/test-signers.cc:530,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-signers.cc:530,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-signers.cc:531,1
    - Dst: toBase32Hex
      Src: /src/pdns/pdns/test-signers.cc:531,1
    - Dst: hashQNameWithSalt
      Src: /src/pdns/pdns/test-signers.cc:547,1
    - Dst: std::string
      Src: /src/pdns/pdns/test-signers.cc:547,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/test-signers.cc:547,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-signers.cc:547,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-signers.cc:548,1
    - Dst: toBase32Hex
      Src: /src/pdns/pdns/test-signers.cc:548,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 551
      start: 480
    functionDepth: 0
    functionLinenumber: 480
    functionLinenumberEnd: 551
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-signers.cc
    functionUses: 0
    functionsReached:
    - BOOST_CHECK_EQUAL
    - DNSName
    - reinterpret_cast<const char*>
    - toBase32Hex
    - std::string
    - hashQNameWithSalt
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_hash_qname_with_salt)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pthread_setname_np
      Src: /src/pdns/pdns/threadname.cc:47,1
    - Dst: pthread_self
      Src: /src/pdns/pdns/threadname.cc:47,1
    - Dst: c_str
      Src: /src/pdns/pdns/threadname.cc:47,1
    - Dst: pthread_set_name_np
      Src: /src/pdns/pdns/threadname.cc:50,1
    - Dst: pthread_self
      Src: /src/pdns/pdns/threadname.cc:50,1
    - Dst: c_str
      Src: /src/pdns/pdns/threadname.cc:50,1
    - Dst: pthread_set_name_np
      Src: /src/pdns/pdns/threadname.cc:53,1
    - Dst: pthread_self
      Src: /src/pdns/pdns/threadname.cc:53,1
    - Dst: c_str
      Src: /src/pdns/pdns/threadname.cc:53,1
    - Dst: pthread_setname_np
      Src: /src/pdns/pdns/threadname.cc:56,1
    - Dst: c_str
      Src: /src/pdns/pdns/threadname.cc:56,1
    - Dst: pthread_setname_np
      Src: /src/pdns/pdns/threadname.cc:59,1
    - Dst: pthread_self
      Src: /src/pdns/pdns/threadname.cc:59,1
    - Dst: c_str
      Src: /src/pdns/pdns/threadname.cc:59,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - ' threadName'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 63
    functionName: trySetThreadName
    functionSourceFile: /src/pdns/pdns/threadname.cc
    functionUses: 0
    functionsReached:
    - c_str
    - pthread_setname_np
    - pthread_set_name_np
    - pthread_self
    linkageType: ''
    returnType: int
    signature: int trySetThreadName(const std::string& threadName)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: trySetThreadName
      Src: /src/pdns/pdns/threadname.cc:66,1
    - Dst: substr
      Src: /src/pdns/pdns/threadname.cc:68,1
    - Dst: trySetThreadName
      Src: /src/pdns/pdns/threadname.cc:69,1
    - Dst: SLOG
      Src: /src/pdns/pdns/threadname.cc:74,1
    - Dst: warnlog
      Src: /src/pdns/pdns/threadname.cc:74,1
    - Dst: strerror
      Src: /src/pdns/pdns/threadname.cc:74,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/threadname.cc:75,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/threadname.cc:75,1
    - Dst: SLOG
      Src: /src/pdns/pdns/threadname.cc:77,1
    - Dst: strerror
      Src: /src/pdns/pdns/threadname.cc:77,1
    - Dst: withName
      Src: /src/pdns/pdns/threadname.cc:78,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/threadname.cc:78,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - ' threadName'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 65
    functionDepth: 1
    functionLinenumber: 65
    functionLinenumberEnd: 81
    functionName: setThreadName
    functionSourceFile: /src/pdns/pdns/threadname.cc
    functionUses: 17
    functionsReached:
    - SLOG
    - Logging::Loggable
    - withName
    - warnlog
    - substr
    - dnsdist::logging::getTopLogger
    - strerror
    - trySetThreadName
    linkageType: ''
    returnType: void
    signature: void setThreadName(const std::string& threadName)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' netmask'
    argTypes:
    - Netmask
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 32
      start: 29
    functionDepth: 0
    functionLinenumber: 29
    functionLinenumberEnd: 32
    functionName: EDNSSubnetOpts::setSource
    functionSourceFile: /src/pdns/pdns/ednssubnet.hh
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setSource(const Netmask& netmask)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 36
      start: 33
    functionDepth: 0
    functionLinenumber: 33
    functionLinenumberEnd: 36
    functionName: '& getSource() const'
    functionSourceFile: /src/pdns/pdns/ednssubnet.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Netmask
    signature: Netmask & getSource() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getNetwork
      Src: /src/pdns/pdns/ednssubnet.hh:39,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 37
    functionDepth: 0
    functionLinenumber: 37
    functionLinenumberEnd: 40
    functionName: EDNSSubnetOpts::getFamily
    functionSourceFile: /src/pdns/pdns/ednssubnet.hh
    functionUses: 1
    functionsReached:
    - getNetwork
    linkageType: ''
    returnType: uint8_t
    signature: uint8_t getFamily() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getBits
      Src: /src/pdns/pdns/ednssubnet.hh:43,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 41
    functionDepth: 0
    functionLinenumber: 41
    functionLinenumberEnd: 44
    functionName: EDNSSubnetOpts::getSourcePrefixLength
    functionSourceFile: /src/pdns/pdns/ednssubnet.hh
    functionUses: 0
    functionsReached:
    - getBits
    linkageType: ''
    returnType: uint8_t
    signature: uint8_t getSourcePrefixLength() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - scope
    argTypes:
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 45
    functionDepth: 0
    functionLinenumber: 45
    functionLinenumberEnd: 48
    functionName: EDNSSubnetOpts::setScopePrefixLength
    functionSourceFile: /src/pdns/pdns/ednssubnet.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setScopePrefixLength(uint8_t scope)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 49
    functionDepth: 0
    functionLinenumber: 49
    functionLinenumberEnd: 52
    functionName: EDNSSubnetOpts::getScopePrefixLength
    functionSourceFile: /src/pdns/pdns/ednssubnet.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint8_t
    signature: uint8_t getScopePrefixLength() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getNetwork
      Src: /src/pdns/pdns/ednssubnet.hh:55,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 53
    functionDepth: 0
    functionLinenumber: 53
    functionLinenumberEnd: 56
    functionName: EDNSSubnetOpts::getScope
    functionSourceFile: /src/pdns/pdns/ednssubnet.hh
    functionUses: 1
    functionsReached:
    - getNetwork
    linkageType: ''
    returnType: Netmask
    signature: Netmask getScope() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RecordTextReader::xfrIP6
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:22,1
    - Dst: string::append
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:24,1
    - Dst: string::append
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:25,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:26,1
    - Dst: makeHexDump
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:26,1
    - Dst: makeHexDump
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:26,1
    - Dst: RecordTextReader::xfrIP6
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:29,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:31,1
    - Dst: makeHexDump
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:31,1
    - Dst: makeHexDump
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:31,1
    - Dst: RecordTextReader::xfrIP6
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:34,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:36,1
    - Dst: makeHexDump
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:36,1
    - Dst: makeHexDump
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:36,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 19
    functionDepth: 0
    functionLinenumber: 19
    functionLinenumberEnd: 37
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-rcpgenerator_cc.cc
    functionUses: 0
    functionsReached:
    - string::append
    - RecordTextReader::xfrIP6
    - makeHexDump
    - BOOST_CHECK_EQUAL
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_xfrIP6)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RecordTextReader::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:43,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:44,1
    - Dst: set::size
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:44,1
    - Dst: set::begin
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:45,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:46,1
    - Dst: auto::size
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:46,1
    - Dst: auto::begin
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:47,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:48,1
    - Dst: RecordTextWriter::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:53,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:54,1
    - Dst: set::clear
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:56,1
    - Dst: RecordTextReader::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:59,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:60,1
    - Dst: set::size
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:60,1
    - Dst: set::begin
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:61,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:62,1
    - Dst: auto::size
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:62,1
    - Dst: auto::begin
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:63,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:64,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:66,1
    - Dst: string::clear
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:69,1
    - Dst: RecordTextWriter::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:71,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:72,1
    - Dst: set::clear
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:75,1
    - Dst: RecordTextReader::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:78,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:79,1
    - Dst: set::size
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:79,1
    - Dst: set::begin
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:80,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:81,1
    - Dst: auto::size
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:81,1
    - Dst: auto::begin
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:82,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:83,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:85,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:90,1
    - Dst: RecordTextReader::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:90,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:94,1
    - Dst: RecordTextReader::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:94,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:98,1
    - Dst: RecordTextReader::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:98,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:102,1
    - Dst: RecordTextReader::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:102,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 38
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 39
    functionDepth: 1
    functionLinenumber: 39
    functionLinenumberEnd: 103
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-rcpgenerator_cc.cc
    functionUses: 0
    functionsReached:
    - RecordTextReader::xfrSvcParamKeyVals
    - set::size
    - BOOST_CHECK_EQUAL
    - RecordTextWriter::xfrSvcParamKeyVals
    - set::begin
    - auto::begin
    - BOOST_CHECK_THROW
    - set::clear
    - string::clear
    - auto::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_xfrSvcParamKeyVals_alpn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RecordTextReader
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:108,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:109,1
    - Dst: set::size
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:109,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:110,1
    - Dst: set::begin
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:110,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:111,1
    - Dst: set::begin
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:111,1
    - Dst: RecordTextWriter::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:116,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:117,1
    - Dst: set::clear
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:119,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:120,1
    - Dst: RecordTextReader
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:120,1
    - Dst: set::clear
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:123,1
    - Dst: RecordTextReader
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:124,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:125,1
    - Dst: set::size
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:125,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:126,1
    - Dst: set::begin
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:126,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:127,1
    - Dst: set::begin
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:127,1
    - Dst: set::clear
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:129,1
    - Dst: RecordTextReader
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:130,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:131,1
    - Dst: set::size
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:131,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:132,1
    - Dst: set::begin
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:132,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:133,1
    - Dst: set::begin
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:133,1
    - Dst: set::clear
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:135,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:136,1
    - Dst: RecordTextReader
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:136,1
    - Dst: set::clear
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:138,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:139,1
    - Dst: RecordTextReader
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:139,1
    - Dst: set::clear
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:141,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:142,1
    - Dst: RecordTextReader
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:142,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 25
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 143
      start: 105
    functionDepth: 1
    functionLinenumber: 105
    functionLinenumberEnd: 143
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-rcpgenerator_cc.cc
    functionUses: 0
    functionsReached:
    - set::size
    - BOOST_CHECK_EQUAL
    - RecordTextWriter::xfrSvcParamKeyVals
    - set::begin
    - set::clear
    - BOOST_CHECK_THROW
    - RecordTextReader
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_xfrSvcParamKeyVals_dohpath)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RecordTextReader::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:149,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:150,1
    - Dst: set::size
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:150,1
    - Dst: set::begin
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:151,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:152,1
    - Dst: auto::size
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:152,1
    - Dst: auto::begin
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:153,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:154,1
    - Dst: RecordTextWriter::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:159,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:160,1
    - Dst: set::clear
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:162,1
    - Dst: RecordTextReader::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:165,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:166,1
    - Dst: set::size
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:166,1
    - Dst: set::begin
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:167,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:168,1
    - Dst: auto::size
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:168,1
    - Dst: auto::begin
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:169,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:170,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:172,1
    - Dst: string::clear
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:175,1
    - Dst: RecordTextWriter::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:177,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:178,1
    - Dst: set::clear
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:181,1
    - Dst: RecordTextReader::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:184,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:185,1
    - Dst: set::size
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:185,1
    - Dst: set::begin
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:186,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:187,1
    - Dst: auto::size
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:187,1
    - Dst: auto::begin
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:188,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:189,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:191,1
    - Dst: set::clear
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:194,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:197,1
    - Dst: RecordTextReader::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:197,1
    - Dst: set::clear
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:199,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:202,1
    - Dst: RecordTextReader::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:202,1
    - Dst: set::clear
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:204,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:207,1
    - Dst: RecordTextReader::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:207,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 39
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 208
      start: 145
    functionDepth: 1
    functionLinenumber: 145
    functionLinenumberEnd: 208
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-rcpgenerator_cc.cc
    functionUses: 0
    functionsReached:
    - RecordTextReader::xfrSvcParamKeyVals
    - set::size
    - BOOST_CHECK_EQUAL
    - RecordTextWriter::xfrSvcParamKeyVals
    - set::begin
    - auto::begin
    - BOOST_CHECK_THROW
    - set::clear
    - BOOST_CHECK
    - string::clear
    - auto::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_xfrSvcParamKeyVals_mandatory)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RecordTextReader::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:214,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:215,1
    - Dst: set::size
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:215,1
    - Dst: set::begin
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:216,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:217,1
    - Dst: RecordTextWriter::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:222,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:223,1
    - Dst: set::clear
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:226,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:227,1
    - Dst: RecordTextReader::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:227,1
    - Dst: set::clear
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:230,1
    - Dst: RecordTextReader::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:232,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:233,1
    - Dst: set::size
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:233,1
    - Dst: set::begin
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:234,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:235,1
    - Dst: set::clear
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:237,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:239,1
    - Dst: RecordTextReader::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:239,1
    - Dst: set::clear
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:241,1
    - Dst: RecordTextReader::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:243,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:244,1
    - Dst: set::size
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:244,1
    - Dst: set::begin
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:245,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:246,1
    - Dst: set::clear
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:248,1
    - Dst: RecordTextReader::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:250,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:251,1
    - Dst: set::size
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:251,1
    - Dst: set::begin
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:252,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:253,1
    - Dst: set::clear
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:255,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:257,1
    - Dst: RecordTextReader::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:257,1
    - Dst: set::clear
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:259,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:261,1
    - Dst: RecordTextReader::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:261,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 29
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 262
      start: 210
    functionDepth: 1
    functionLinenumber: 210
    functionLinenumberEnd: 262
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-rcpgenerator_cc.cc
    functionUses: 0
    functionsReached:
    - RecordTextReader::xfrSvcParamKeyVals
    - set::size
    - BOOST_CHECK_EQUAL
    - RecordTextWriter::xfrSvcParamKeyVals
    - set::begin
    - BOOST_CHECK_THROW
    - set::clear
    - BOOST_CHECK
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_xfrSvcParamKeyVals_no_default_alpn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RecordTextReader::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:268,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:269,1
    - Dst: set::size
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:269,1
    - Dst: set::begin
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:270,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:271,1
    - Dst: set::begin
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:272,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:273,1
    - Dst: auto::size
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:273,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:274,1
    - Dst: auto::begin
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:274,1
    - Dst: RecordTextWriter::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:279,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:280,1
    - Dst: set::clear
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:282,1
    - Dst: RecordTextReader::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:285,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:286,1
    - Dst: set::size
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:286,1
    - Dst: set::begin
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:287,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:288,1
    - Dst: set::begin
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:290,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:291,1
    - Dst: auto::size
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:291,1
    - Dst: auto::begin
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:292,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:293,1
    - Dst: auto::toString
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:293,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:295,1
    - Dst: auto::toString
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:295,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:297,1
    - Dst: auto::toString
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:297,1
    - Dst: string::clear
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:300,1
    - Dst: RecordTextWriter::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:302,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:303,1
    - Dst: set::clear
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:305,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:307,1
    - Dst: RecordTextReader::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:307,1
    - Dst: set::clear
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:309,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:311,1
    - Dst: RecordTextReader::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:311,1
    - Dst: set::clear
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:314,1
    - Dst: RecordTextReader::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:317,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:318,1
    - Dst: set::size
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:318,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:319,1
    - Dst: set::begin
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:319,1
    - Dst: set::begin
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:320,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:321,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:322,1
    - Dst: set::begin
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:322,1
    - Dst: set::clear
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:324,1
    - Dst: RecordTextReader::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:327,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:328,1
    - Dst: set::size
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:328,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:329,1
    - Dst: set::begin
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:329,1
    - Dst: set::begin
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:330,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:331,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:332,1
    - Dst: set::begin
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:332,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:333,1
    - Dst: set::begin
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:333,1
    - Dst: set::clear
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:335,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:338,1
    - Dst: RecordTextReader::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:338,1
    - Dst: set::clear
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:340,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:342,1
    - Dst: RecordTextReader::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:342,1
    - Dst: set::clear
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:344,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:346,1
    - Dst: RecordTextReader::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:346,1
    - Dst: set::clear
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:348,1
    - Dst: RecordTextReader::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:350,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:351,1
    - Dst: set::size
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:351,1
    - Dst: set::begin
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:352,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:353,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:354,1
    - Dst: set::begin
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:354,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:355,1
    - Dst: set::begin
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:355,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 59
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 356
      start: 264
    functionDepth: 1
    functionLinenumber: 264
    functionLinenumberEnd: 356
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-rcpgenerator_cc.cc
    functionUses: 0
    functionsReached:
    - RecordTextReader::xfrSvcParamKeyVals
    - set::size
    - BOOST_CHECK_EQUAL
    - RecordTextWriter::xfrSvcParamKeyVals
    - set::begin
    - auto::begin
    - auto::toString
    - BOOST_CHECK_THROW
    - set::clear
    - BOOST_CHECK
    - string::clear
    - auto::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_xfrSvcParamKeyVals_ipv4hint)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RecordTextReader::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:362,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:363,1
    - Dst: set::size
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:363,1
    - Dst: set::begin
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:364,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:365,1
    - Dst: set::begin
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:366,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:367,1
    - Dst: auto::size
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:367,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:368,1
    - Dst: auto::begin
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:368,1
    - Dst: RecordTextWriter::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:373,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:374,1
    - Dst: set::clear
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:376,1
    - Dst: RecordTextReader::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:379,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:380,1
    - Dst: set::size
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:380,1
    - Dst: set::begin
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:381,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:382,1
    - Dst: set::begin
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:384,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:385,1
    - Dst: auto::size
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:385,1
    - Dst: auto::begin
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:386,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:387,1
    - Dst: auto::toString
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:387,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:389,1
    - Dst: auto::toString
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:389,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:391,1
    - Dst: auto::toString
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:391,1
    - Dst: string::clear
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:394,1
    - Dst: RecordTextWriter::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:396,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:397,1
    - Dst: set::clear
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:399,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:401,1
    - Dst: RecordTextReader::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:401,1
    - Dst: set::clear
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:403,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:405,1
    - Dst: RecordTextReader::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:405,1
    - Dst: set::clear
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:408,1
    - Dst: RecordTextReader::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:410,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:411,1
    - Dst: set::size
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:411,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:412,1
    - Dst: set::begin
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:412,1
    - Dst: set::begin
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:413,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:414,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:415,1
    - Dst: set::begin
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:415,1
    - Dst: set::clear
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:417,1
    - Dst: RecordTextReader::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:420,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:421,1
    - Dst: set::size
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:421,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:422,1
    - Dst: set::begin
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:422,1
    - Dst: set::begin
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:423,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:424,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:425,1
    - Dst: set::begin
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:425,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:426,1
    - Dst: set::begin
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:426,1
    - Dst: set::clear
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:428,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:431,1
    - Dst: RecordTextReader::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:431,1
    - Dst: set::clear
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:433,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:435,1
    - Dst: RecordTextReader::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:435,1
    - Dst: set::clear
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:437,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:439,1
    - Dst: RecordTextReader::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:439,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 51
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 440
      start: 358
    functionDepth: 1
    functionLinenumber: 358
    functionLinenumberEnd: 440
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-rcpgenerator_cc.cc
    functionUses: 0
    functionsReached:
    - RecordTextReader::xfrSvcParamKeyVals
    - set::size
    - BOOST_CHECK_EQUAL
    - RecordTextWriter::xfrSvcParamKeyVals
    - set::begin
    - auto::begin
    - auto::toString
    - BOOST_CHECK_THROW
    - set::clear
    - BOOST_CHECK
    - string::clear
    - auto::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_xfrSvcParamKeyVals_ipv6hint)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RecordTextReader
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:446,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:447,1
    - Dst: set::size
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:447,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:448,1
    - Dst: set::begin
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:448,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:449,1
    - Dst: set::begin
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:449,1
    - Dst: RecordTextWriter
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:453,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:454,1
    - Dst: set::clear
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:456,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:457,1
    - Dst: RecordTextReader
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:457,1
    - Dst: set::clear
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:459,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:460,1
    - Dst: RecordTextReader
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:460,1
    - Dst: set::clear
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:463,1
    - Dst: RecordTextReader
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:464,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:465,1
    - Dst: set::size
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:465,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:466,1
    - Dst: set::begin
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:466,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:467,1
    - Dst: set::begin
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:467,1
    - Dst: set::clear
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:469,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:470,1
    - Dst: RecordTextReader
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:470,1
    - Dst: set::clear
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:472,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:473,1
    - Dst: RecordTextReader
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:473,1
    - Dst: set::clear
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:475,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:476,1
    - Dst: RecordTextReader
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:476,1
    - Dst: set::clear
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:478,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:479,1
    - Dst: RecordTextReader
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:479,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 24
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 480
      start: 442
    functionDepth: 1
    functionLinenumber: 442
    functionLinenumberEnd: 480
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-rcpgenerator_cc.cc
    functionUses: 0
    functionsReached:
    - set::size
    - BOOST_CHECK_EQUAL
    - set::begin
    - set::clear
    - BOOST_CHECK_THROW
    - RecordTextReader
    - BOOST_CHECK
    - RecordTextWriter
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_xfrSvcParamKeyVals_tls_supported_groups)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RecordTextReader
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:485,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:486,1
    - Dst: set::size
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:486,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:487,1
    - Dst: set::begin
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:487,1
    - Dst: RecordTextWriter
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:491,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:492,1
    - Dst: set::clear
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:494,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:495,1
    - Dst: RecordTextReader
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:495,1
    - Dst: set::clear
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:498,1
    - Dst: RecordTextReader
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:499,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:500,1
    - Dst: set::size
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:500,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:501,1
    - Dst: set::begin
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:501,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:502,1
    - Dst: set::begin
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:502,1
    - Dst: set::clear
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:504,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:505,1
    - Dst: RecordTextReader
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:505,1
    - Dst: set::clear
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:507,1
    - Dst: RecordTextReader
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:508,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:509,1
    - Dst: set::size
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:509,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:510,1
    - Dst: std::count_if
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:510,1
    - Dst: set::begin
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:510,1
    - Dst: set::end
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:510,1
    - Dst: getKey
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:510,1
    - Dst: set::clear
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:512,1
    - Dst: RecordTextReader
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:513,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:514,1
    - Dst: set::size
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:514,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:515,1
    - Dst: std::count_if
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:515,1
    - Dst: set::begin
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:515,1
    - Dst: set::end
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:515,1
    - Dst: getKey
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:515,1
    - Dst: set::clear
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:517,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:518,1
    - Dst: RecordTextReader
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:518,1
    - Dst: set::clear
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:520,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:521,1
    - Dst: RecordTextReader
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:521,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 31
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 522
      start: 482
    functionDepth: 1
    functionLinenumber: 482
    functionLinenumberEnd: 522
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-rcpgenerator_cc.cc
    functionUses: 0
    functionsReached:
    - set::size
    - BOOST_CHECK_EQUAL
    - set::begin
    - set::end
    - set::clear
    - BOOST_CHECK_THROW
    - getKey
    - std::count_if
    - RecordTextReader
    - BOOST_CHECK
    - RecordTextWriter
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_xfrSvcParamKeyVals_ohttp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RecordTextReader::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:528,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:529,1
    - Dst: set::size
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:529,1
    - Dst: set::begin
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:530,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:531,1
    - Dst: set::begin
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:532,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:533,1
    - Dst: RecordTextWriter::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:538,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:539,1
    - Dst: set::clear
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:541,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:543,1
    - Dst: RecordTextReader::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:543,1
    - Dst: set::clear
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:545,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:547,1
    - Dst: RecordTextReader::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:547,1
    - Dst: set::clear
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:549,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:551,1
    - Dst: RecordTextReader::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:551,1
    - Dst: set::clear
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:553,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:555,1
    - Dst: RecordTextReader::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:555,1
    - Dst: set::clear
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:558,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:560,1
    - Dst: RecordTextReader::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:560,1
    - Dst: set::clear
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:562,1
    - Dst: RecordTextReader::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:564,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:565,1
    - Dst: set::size
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:565,1
    - Dst: set::begin
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:566,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:567,1
    - Dst: set::begin
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:568,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:569,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 24
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 570
      start: 524
    functionDepth: 1
    functionLinenumber: 524
    functionLinenumberEnd: 570
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-rcpgenerator_cc.cc
    functionUses: 0
    functionsReached:
    - RecordTextReader::xfrSvcParamKeyVals
    - set::size
    - BOOST_CHECK_EQUAL
    - RecordTextWriter::xfrSvcParamKeyVals
    - set::begin
    - BOOST_CHECK_THROW
    - set::clear
    - BOOST_CHECK
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_xfrSvcParamKeyVals_port)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RecordTextReader::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:576,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:577,1
    - Dst: set::size
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:577,1
    - Dst: set::begin
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:578,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:579,1
    - Dst: set::begin
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:580,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:581,1
    - Dst: RecordTextWriter::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:586,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:587,1
    - Dst: set::clear
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:589,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:591,1
    - Dst: RecordTextReader::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:591,1
    - Dst: set::clear
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:593,1
    - Dst: BOOST_CHECK_NO_THROW
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:595,1
    - Dst: RecordTextReader::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:595,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:596,1
    - Dst: set::size
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:596,1
    - Dst: set::begin
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:597,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:598,1
    - Dst: SvcParam::keyFromString
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:598,1
    - Dst: set::clear
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:600,1
    - Dst: RecordTextReader::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:603,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:604,1
    - Dst: set::size
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:604,1
    - Dst: set::begin
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:605,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:606,1
    - Dst: SvcParam::keyFromString
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:606,1
    - Dst: set::begin
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:607,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:608,1
    - Dst: string::clear
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:611,1
    - Dst: RecordTextWriter::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:613,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:614,1
    - Dst: set::clear
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:616,1
    - Dst: RecordTextReader::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:619,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:620,1
    - Dst: set::size
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:620,1
    - Dst: set::begin
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:621,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:622,1
    - Dst: SvcParam::keyFromString
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:622,1
    - Dst: set::begin
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:623,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:624,1
    - Dst: string::clear
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:627,1
    - Dst: RecordTextWriter::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:629,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:630,1
    - Dst: set::clear
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:632,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:634,1
    - Dst: RecordTextReader::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:634,1
    - Dst: set::clear
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:636,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:638,1
    - Dst: RecordTextReader::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:638,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 40
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 639
      start: 572
    functionDepth: 1
    functionLinenumber: 572
    functionLinenumberEnd: 639
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-rcpgenerator_cc.cc
    functionUses: 0
    functionsReached:
    - RecordTextReader::xfrSvcParamKeyVals
    - set::size
    - SvcParam::keyFromString
    - BOOST_CHECK_EQUAL
    - RecordTextWriter::xfrSvcParamKeyVals
    - set::begin
    - BOOST_CHECK_THROW
    - BOOST_CHECK_NO_THROW
    - set::clear
    - BOOST_CHECK
    - string::clear
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_xfrSvcParamKeyVals_generic)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: RecordTextReader::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:644,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:645,1
    - Dst: set::size
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:645,1
    - Dst: set::begin
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:646,1
    - Dst: set::size
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:649,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:651,1
    - Dst: auto::getKey
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:651,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:654,1
    - Dst: auto::getKey
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:654,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:657,1
    - Dst: auto::getKey
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:657,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:660,1
    - Dst: auto::getKey
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:660,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:663,1
    - Dst: auto::getKey
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:663,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:666,1
    - Dst: auto::getKey
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:666,1
    - Dst: SvcParam::keyFromString
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:666,1
    - Dst: RecordTextWriter::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:674,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:675,1
    - Dst: set::clear
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:677,1
    - Dst: BOOST_CHECK_NO_THROW
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:679,1
    - Dst: RecordTextReader::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:679,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:680,1
    - Dst: set::size
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:680,1
    - Dst: set::clear
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:682,1
    - Dst: BOOST_CHECK_NO_THROW
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:684,1
    - Dst: RecordTextReader::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:684,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:685,1
    - Dst: set::size
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:685,1
    - Dst: set::clear
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:687,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:689,1
    - Dst: RecordTextReader::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:689,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 34
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 690
      start: 641
    functionDepth: 1
    functionLinenumber: 641
    functionLinenumberEnd: 690
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-rcpgenerator_cc.cc
    functionUses: 0
    functionsReached:
    - auto::getKey
    - RecordTextReader::xfrSvcParamKeyVals
    - set::size
    - SvcParam::keyFromString
    - BOOST_CHECK_EQUAL
    - RecordTextWriter::xfrSvcParamKeyVals
    - set::begin
    - BOOST_CHECK_THROW
    - BOOST_CHECK_NO_THROW
    - set::clear
    - BOOST_CHECK
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_xfrSvcParamKeyVals_multiple)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RecordTextReader::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:696,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:697,1
    - Dst: set::size
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:697,1
    - Dst: set::begin
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:698,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:699,1
    - Dst: set::begin
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:700,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:701,1
    - Dst: RecordTextWriter::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:706,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:707,1
    - Dst: set::clear
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:710,1
    - Dst: RecordTextReader::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:713,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:714,1
    - Dst: set::size
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:714,1
    - Dst: set::begin
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:715,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:716,1
    - Dst: set::begin
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:717,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:718,1
    - Dst: set::clear
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:720,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:722,1
    - Dst: RecordTextReader::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:722,1
    - Dst: set::clear
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:724,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:726,1
    - Dst: RecordTextReader::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:726,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 19
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 727
      start: 692
    functionDepth: 1
    functionLinenumber: 692
    functionLinenumberEnd: 727
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-rcpgenerator_cc.cc
    functionUses: 0
    functionsReached:
    - RecordTextReader::xfrSvcParamKeyVals
    - set::size
    - BOOST_CHECK_EQUAL
    - RecordTextWriter::xfrSvcParamKeyVals
    - set::begin
    - BOOST_CHECK_THROW
    - set::clear
    - BOOST_CHECK
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_xfrSvcParamKeyVals_ech)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RecordTextReader::xfrNodeOrLocatorID
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:733,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:734,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:735,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:736,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:737,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:738,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:739,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:740,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:741,1
    - Dst: RecordTextWriter::xfrNodeOrLocatorID
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:745,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-rcpgenerator_cc.cc:746,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 747
      start: 729
    functionDepth: 0
    functionLinenumber: 729
    functionLinenumberEnd: 747
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-rcpgenerator_cc.cc
    functionUses: 0
    functionsReached:
    - RecordTextWriter::xfrNodeOrLocatorID
    - BOOST_CHECK_EQUAL
    - RecordTextReader::xfrNodeOrLocatorID
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_xfrNodeOrLocatorID)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ArgvMap::parse
      Src: /src/pdns/pdns/arguments.hh:81,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' argc'
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 79
    functionDepth: 0
    functionLinenumber: 79
    functionLinenumberEnd: 82
    functionName: ArgvMap::laxParse
    functionSourceFile: /src/pdns/pdns/arguments.hh
    functionUses: 0
    functionsReached:
    - ArgvMap::parse
    linkageType: ''
    returnType: void
    signature: void laxParse(int& argc, char** argv)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ArgvMap::file
      Src: /src/pdns/pdns/arguments.hh:90,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' fname'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 88
    functionDepth: 0
    functionLinenumber: 88
    functionLinenumberEnd: 91
    functionName: ArgvMap::laxFile
    functionSourceFile: /src/pdns/pdns/arguments.hh
    functionUses: 0
    functionsReached:
    - ArgvMap::file
    linkageType: ''
    returnType: bool
    signature: bool laxFile(const string& fname)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: find
      Src: /src/pdns/pdns/arguments.hh:114,1
    - Dst: ArgvMap::end
      Src: /src/pdns/pdns/arguments.hh:115,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' item'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 112
    functionDepth: 0
    functionLinenumber: 112
    functionLinenumberEnd: 116
    functionName: ArgvMap::getHelp
    functionSourceFile: /src/pdns/pdns/arguments.hh
    functionUses: 0
    functionsReached:
    - ArgvMap::end
    - find
    linkageType: ''
    returnType: string
    signature: string getHelp(const string& item) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: find
      Src: /src/pdns/pdns/arguments.hh:119,1
    - Dst: ArgvMap::end
      Src: /src/pdns/pdns/arguments.hh:120,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' item'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 117
    functionDepth: 0
    functionLinenumber: 117
    functionLinenumberEnd: 121
    functionName: ArgvMap::getDefault
    functionSourceFile: /src/pdns/pdns/arguments.hh
    functionUses: 0
    functionsReached:
    - ArgvMap::end
    - find
    linkageType: ''
    returnType: string
    signature: string getDefault(const string& item) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - log
    argTypes:
    - Logr::log_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 135
      start: 132
    functionDepth: 0
    functionLinenumber: 132
    functionLinenumberEnd: 135
    functionName: ArgvMap::setSLog
    functionSourceFile: /src/pdns/pdns/arguments.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setSLog(Logr::log_t log)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - ac
    argTypes:
    - AtomicCounter*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 25
      start: 21
    functionDepth: 0
    functionLinenumber: 21
    functionLinenumberEnd: 25
    functionName: threadMangler
    functionSourceFile: /src/pdns/pdns/test-statbag_cc.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void threadMangler(AtomicCounter* ac)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: StatBag*::inc
      Src: /src/pdns/pdns/test-statbag_cc.cc:30,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - S
    argTypes:
    - StatBag*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 31
      start: 27
    functionDepth: 1
    functionLinenumber: 27
    functionLinenumberEnd: 31
    functionName: threadMangler2
    functionSourceFile: /src/pdns/pdns/test-statbag_cc.cc
    functionUses: 0
    functionsReached:
    - StatBag*::inc
    linkageType: ''
    returnType: void
    signature: void threadMangler2(StatBag* S)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: StatBag::StatBag
      Src: /src/pdns/pdns/test-statbag_cc.cc:38,1
    - Dst: StatBag::declare
      Src: /src/pdns/pdns/test-statbag_cc.cc:39,1
    - Dst: StatBag::declare
      Src: /src/pdns/pdns/test-statbag_cc.cc:40,1
    - Dst: StatBag::declare
      Src: /src/pdns/pdns/test-statbag_cc.cc:41,1
    - Dst: StatBag::inc
      Src: /src/pdns/pdns/test-statbag_cc.cc:42,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-statbag_cc.cc:43,1
    - Dst: StatBag::read
      Src: /src/pdns/pdns/test-statbag_cc.cc:43,1
    - Dst: StatBag::inc
      Src: /src/pdns/pdns/test-statbag_cc.cc:47,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-statbag_cc.cc:49,1
    - Dst: StatBag::read
      Src: /src/pdns/pdns/test-statbag_cc.cc:49,1
    - Dst: StatBag::getPointer
      Src: /src/pdns/pdns/test-statbag_cc.cc:51,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-statbag_cc.cc:55,1
    - Dst: StatBag::read
      Src: /src/pdns/pdns/test-statbag_cc.cc:55,1
    - Dst: StatBag::getPointer
      Src: /src/pdns/pdns/test-statbag_cc.cc:57,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/test-statbag_cc.cc:60,1
    - Dst: std::thread
      Src: /src/pdns/pdns/test-statbag_cc.cc:60,1
    - Dst: join
      Src: /src/pdns/pdns/test-statbag_cc.cc:64,1
    - Dst: std::vector::clear
      Src: /src/pdns/pdns/test-statbag_cc.cc:66,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-statbag_cc.cc:68,1
    - Dst: StatBag::read
      Src: /src/pdns/pdns/test-statbag_cc.cc:68,1
    - Dst: StatBag::set
      Src: /src/pdns/pdns/test-statbag_cc.cc:70,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/test-statbag_cc.cc:73,1
    - Dst: std::thread
      Src: /src/pdns/pdns/test-statbag_cc.cc:73,1
    - Dst: join
      Src: /src/pdns/pdns/test-statbag_cc.cc:77,1
    - Dst: std::vector::clear
      Src: /src/pdns/pdns/test-statbag_cc.cc:79,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-statbag_cc.cc:81,1
    - Dst: StatBag::read
      Src: /src/pdns/pdns/test-statbag_cc.cc:81,1
    - Dst: StatBag::set
      Src: /src/pdns/pdns/test-statbag_cc.cc:84,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-statbag_cc.cc:85,1
    - Dst: StatBag::read
      Src: /src/pdns/pdns/test-statbag_cc.cc:85,1
    - Dst: StatBag::inc
      Src: /src/pdns/pdns/test-statbag_cc.cc:86,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-statbag_cc.cc:87,1
    - Dst: StatBag::read
      Src: /src/pdns/pdns/test-statbag_cc.cc:87,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-statbag_cc.cc:91,1
    - Dst: StatBag::set
      Src: /src/pdns/pdns/test-statbag_cc.cc:92,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-statbag_cc.cc:93,1
    - Dst: StatBag::read
      Src: /src/pdns/pdns/test-statbag_cc.cc:93,1
    - Dst: StatBag::inc
      Src: /src/pdns/pdns/test-statbag_cc.cc:94,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-statbag_cc.cc:95,1
    - Dst: StatBag::read
      Src: /src/pdns/pdns/test-statbag_cc.cc:95,1
    - Dst: StatBag::set
      Src: /src/pdns/pdns/test-statbag_cc.cc:97,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-statbag_cc.cc:98,1
    - Dst: StatBag::read
      Src: /src/pdns/pdns/test-statbag_cc.cc:98,1
    - Dst: StatBag::inc
      Src: /src/pdns/pdns/test-statbag_cc.cc:99,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-statbag_cc.cc:100,1
    - Dst: StatBag::read
      Src: /src/pdns/pdns/test-statbag_cc.cc:100,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-statbag_cc.cc:102,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-statbag_cc.cc:103,1
    - Dst: StatBag::set
      Src: /src/pdns/pdns/test-statbag_cc.cc:104,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-statbag_cc.cc:105,1
    - Dst: StatBag::read
      Src: /src/pdns/pdns/test-statbag_cc.cc:105,1
    - Dst: StatBag::inc
      Src: /src/pdns/pdns/test-statbag_cc.cc:106,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-statbag_cc.cc:107,1
    - Dst: StatBag::read
      Src: /src/pdns/pdns/test-statbag_cc.cc:107,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 46
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 37
    functionDepth: 2
    functionLinenumber: 37
    functionLinenumberEnd: 110
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-statbag_cc.cc
    functionUses: 0
    functionsReached:
    - StatBag::read
    - std::vector::push_back
    - StatBag::StatBag
    - BOOST_CHECK_EQUAL
    - StatBag::inc
    - std::thread
    - join
    - StatBag::getPointer
    - StatBag::set
    - std::vector::clear
    - StatBag::declare
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_StatBagBasic)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SvcParam::keyFromString
      Src: /src/pdns/pdns/test-svc_records_cc.cc:21,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-svc_records_cc.cc:22,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-svc_records_cc.cc:23,1
    - Dst: SvcParam::keyFromString
      Src: /src/pdns/pdns/test-svc_records_cc.cc:25,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-svc_records_cc.cc:26,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-svc_records_cc.cc:27,1
    - Dst: SvcParam::keyFromString
      Src: /src/pdns/pdns/test-svc_records_cc.cc:29,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-svc_records_cc.cc:30,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-svc_records_cc.cc:31,1
    - Dst: SvcParam::keyFromString
      Src: /src/pdns/pdns/test-svc_records_cc.cc:33,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-svc_records_cc.cc:34,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-svc_records_cc.cc:35,1
    - Dst: SvcParam::keyFromString
      Src: /src/pdns/pdns/test-svc_records_cc.cc:37,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-svc_records_cc.cc:38,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-svc_records_cc.cc:39,1
    - Dst: SvcParam::keyFromString
      Src: /src/pdns/pdns/test-svc_records_cc.cc:41,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-svc_records_cc.cc:42,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-svc_records_cc.cc:43,1
    - Dst: SvcParam::keyFromString
      Src: /src/pdns/pdns/test-svc_records_cc.cc:45,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-svc_records_cc.cc:46,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-svc_records_cc.cc:47,1
    - Dst: SvcParam::keyFromString
      Src: /src/pdns/pdns/test-svc_records_cc.cc:49,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-svc_records_cc.cc:50,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-svc_records_cc.cc:51,1
    - Dst: SvcParam::keyFromString
      Src: /src/pdns/pdns/test-svc_records_cc.cc:53,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-svc_records_cc.cc:54,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-svc_records_cc.cc:55,1
    - Dst: SvcParam::keyFromString
      Src: /src/pdns/pdns/test-svc_records_cc.cc:57,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-svc_records_cc.cc:58,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-svc_records_cc.cc:59,1
    - Dst: SvcParam::keyFromString
      Src: /src/pdns/pdns/test-svc_records_cc.cc:61,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-svc_records_cc.cc:62,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-svc_records_cc.cc:63,1
    - Dst: SvcParam::keyFromString
      Src: /src/pdns/pdns/test-svc_records_cc.cc:65,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-svc_records_cc.cc:66,1
    - Dst: SvcParam::keyFromString
      Src: /src/pdns/pdns/test-svc_records_cc.cc:68,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-svc_records_cc.cc:69,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-svc_records_cc.cc:71,1
    - Dst: SvcParam::keyFromString
      Src: /src/pdns/pdns/test-svc_records_cc.cc:71,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 39
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 18
    functionDepth: 0
    functionLinenumber: 18
    functionLinenumberEnd: 72
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-svc_records_cc.cc
    functionUses: 0
    functionsReached:
    - BOOST_CHECK
    - BOOST_CHECK_THROW
    - SvcParam::keyFromString
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_SvcParam_keyFromString)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-svc_records_cc.cc:75,1
    - Dst: SvcParam::keyToString
      Src: /src/pdns/pdns/test-svc_records_cc.cc:75,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-svc_records_cc.cc:76,1
    - Dst: SvcParam::keyToString
      Src: /src/pdns/pdns/test-svc_records_cc.cc:76,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-svc_records_cc.cc:77,1
    - Dst: SvcParam::keyToString
      Src: /src/pdns/pdns/test-svc_records_cc.cc:77,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-svc_records_cc.cc:78,1
    - Dst: SvcParam::keyToString
      Src: /src/pdns/pdns/test-svc_records_cc.cc:78,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-svc_records_cc.cc:79,1
    - Dst: SvcParam::keyToString
      Src: /src/pdns/pdns/test-svc_records_cc.cc:79,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-svc_records_cc.cc:80,1
    - Dst: SvcParam::keyToString
      Src: /src/pdns/pdns/test-svc_records_cc.cc:80,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-svc_records_cc.cc:81,1
    - Dst: SvcParam::keyToString
      Src: /src/pdns/pdns/test-svc_records_cc.cc:81,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-svc_records_cc.cc:82,1
    - Dst: SvcParam::keyToString
      Src: /src/pdns/pdns/test-svc_records_cc.cc:82,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-svc_records_cc.cc:83,1
    - Dst: SvcParam::keyToString
      Src: /src/pdns/pdns/test-svc_records_cc.cc:83,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-svc_records_cc.cc:84,1
    - Dst: SvcParam::keyToString
      Src: /src/pdns/pdns/test-svc_records_cc.cc:84,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-svc_records_cc.cc:85,1
    - Dst: SvcParam::keyToString
      Src: /src/pdns/pdns/test-svc_records_cc.cc:85,1
    - Dst: SvcParam::SvcParamKey
      Src: /src/pdns/pdns/test-svc_records_cc.cc:85,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-svc_records_cc.cc:86,1
    - Dst: SvcParam::keyToString
      Src: /src/pdns/pdns/test-svc_records_cc.cc:86,1
    - Dst: SvcParam::SvcParamKey
      Src: /src/pdns/pdns/test-svc_records_cc.cc:86,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 74
    functionDepth: 0
    functionLinenumber: 74
    functionLinenumberEnd: 87
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-svc_records_cc.cc
    functionUses: 0
    functionsReached:
    - SvcParam::SvcParamKey
    - SvcParam::keyToString
    - BOOST_CHECK_EQUAL
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_SvcParam_keyToString)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_CHECK_NO_THROW
      Src: /src/pdns/pdns/test-svc_records_cc.cc:90,1
    - Dst: SvcParam
      Src: /src/pdns/pdns/test-svc_records_cc.cc:90,1
    - Dst: SvcParam::keyFromString
      Src: /src/pdns/pdns/test-svc_records_cc.cc:90,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-svc_records_cc.cc:91,1
    - Dst: SvcParam
      Src: /src/pdns/pdns/test-svc_records_cc.cc:91,1
    - Dst: SvcParam::keyFromString
      Src: /src/pdns/pdns/test-svc_records_cc.cc:91,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-svc_records_cc.cc:92,1
    - Dst: SvcParam
      Src: /src/pdns/pdns/test-svc_records_cc.cc:92,1
    - Dst: SvcParam::keyFromString
      Src: /src/pdns/pdns/test-svc_records_cc.cc:92,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 89
    functionDepth: 0
    functionLinenumber: 89
    functionLinenumberEnd: 93
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-svc_records_cc.cc
    functionUses: 0
    functionsReached:
    - BOOST_CHECK_NO_THROW
    - BOOST_CHECK_THROW
    - SvcParam::keyFromString
    - SvcParam
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_SvcParam_ctor_no_value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Base64Encode
      Src: /src/pdns/pdns/test-svc_records_cc.cc:97,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-svc_records_cc.cc:99,1
    - Dst: SvcParam
      Src: /src/pdns/pdns/test-svc_records_cc.cc:99,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-svc_records_cc.cc:100,1
    - Dst: SvcParam
      Src: /src/pdns/pdns/test-svc_records_cc.cc:100,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-svc_records_cc.cc:101,1
    - Dst: SvcParam
      Src: /src/pdns/pdns/test-svc_records_cc.cc:101,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-svc_records_cc.cc:102,1
    - Dst: SvcParam
      Src: /src/pdns/pdns/test-svc_records_cc.cc:102,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-svc_records_cc.cc:103,1
    - Dst: SvcParam
      Src: /src/pdns/pdns/test-svc_records_cc.cc:103,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-svc_records_cc.cc:104,1
    - Dst: SvcParam
      Src: /src/pdns/pdns/test-svc_records_cc.cc:104,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-svc_records_cc.cc:105,1
    - Dst: SvcParam
      Src: /src/pdns/pdns/test-svc_records_cc.cc:105,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-svc_records_cc.cc:106,1
    - Dst: SvcParam
      Src: /src/pdns/pdns/test-svc_records_cc.cc:106,1
    - Dst: SvcParam::keyFromString
      Src: /src/pdns/pdns/test-svc_records_cc.cc:108,1
    - Dst: BOOST_CHECK_NO_THROW
      Src: /src/pdns/pdns/test-svc_records_cc.cc:109,1
    - Dst: SvcParam
      Src: /src/pdns/pdns/test-svc_records_cc.cc:109,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-svc_records_cc.cc:110,1
    - Dst: SvcParam::getECH
      Src: /src/pdns/pdns/test-svc_records_cc.cc:110,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-svc_records_cc.cc:111,1
    - Dst: SvcParam::getValue
      Src: /src/pdns/pdns/test-svc_records_cc.cc:111,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-svc_records_cc.cc:112,1
    - Dst: SvcParam::getALPN
      Src: /src/pdns/pdns/test-svc_records_cc.cc:112,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-svc_records_cc.cc:113,1
    - Dst: SvcParam::getIPHints
      Src: /src/pdns/pdns/test-svc_records_cc.cc:113,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-svc_records_cc.cc:114,1
    - Dst: SvcParam::getMandatory
      Src: /src/pdns/pdns/test-svc_records_cc.cc:114,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-svc_records_cc.cc:115,1
    - Dst: SvcParam::getPort
      Src: /src/pdns/pdns/test-svc_records_cc.cc:115,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-svc_records_cc.cc:116,1
    - Dst: SvcParam::getTLSSupportedGroups
      Src: /src/pdns/pdns/test-svc_records_cc.cc:116,1
    - Dst: BOOST_CHECK_NO_THROW
      Src: /src/pdns/pdns/test-svc_records_cc.cc:122,1
    - Dst: SvcParam
      Src: /src/pdns/pdns/test-svc_records_cc.cc:122,1
    - Dst: SvcParam::keyFromString
      Src: /src/pdns/pdns/test-svc_records_cc.cc:122,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-svc_records_cc.cc:123,1
    - Dst: SvcParam::getValue
      Src: /src/pdns/pdns/test-svc_records_cc.cc:123,1
    - Dst: BOOST_CHECK_NO_THROW
      Src: /src/pdns/pdns/test-svc_records_cc.cc:124,1
    - Dst: SvcParam
      Src: /src/pdns/pdns/test-svc_records_cc.cc:124,1
    - Dst: SvcParam::keyFromString
      Src: /src/pdns/pdns/test-svc_records_cc.cc:124,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-svc_records_cc.cc:125,1
    - Dst: SvcParam::getValue
      Src: /src/pdns/pdns/test-svc_records_cc.cc:125,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-svc_records_cc.cc:127,1
    - Dst: SvcParam::getALPN
      Src: /src/pdns/pdns/test-svc_records_cc.cc:127,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-svc_records_cc.cc:128,1
    - Dst: SvcParam::getECH
      Src: /src/pdns/pdns/test-svc_records_cc.cc:128,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-svc_records_cc.cc:129,1
    - Dst: SvcParam::getIPHints
      Src: /src/pdns/pdns/test-svc_records_cc.cc:129,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-svc_records_cc.cc:130,1
    - Dst: SvcParam::getMandatory
      Src: /src/pdns/pdns/test-svc_records_cc.cc:130,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-svc_records_cc.cc:131,1
    - Dst: SvcParam::getPort
      Src: /src/pdns/pdns/test-svc_records_cc.cc:131,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-svc_records_cc.cc:132,1
    - Dst: SvcParam::getTLSSupportedGroups
      Src: /src/pdns/pdns/test-svc_records_cc.cc:132,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 27
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 133
      start: 95
    functionDepth: 0
    functionLinenumber: 95
    functionLinenumberEnd: 133
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-svc_records_cc.cc
    functionUses: 0
    functionsReached:
    - SvcParam::getIPHints
    - SvcParam::keyFromString
    - SvcParam
    - SvcParam::getValue
    - SvcParam::getMandatory
    - BOOST_CHECK_EQUAL
    - SvcParam::getTLSSupportedGroups
    - SvcParam::getECH
    - SvcParam::getPort
    - BOOST_CHECK_THROW
    - BOOST_CHECK_NO_THROW
    - SvcParam::getALPN
    - Base64Encode
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_SvcParam_ctor_value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-svc_records_cc.cc:138,1
    - Dst: SvcParam
      Src: /src/pdns/pdns/test-svc_records_cc.cc:138,1
    - Dst: set
      Src: /src/pdns/pdns/test-svc_records_cc.cc:138,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-svc_records_cc.cc:139,1
    - Dst: SvcParam
      Src: /src/pdns/pdns/test-svc_records_cc.cc:139,1
    - Dst: set
      Src: /src/pdns/pdns/test-svc_records_cc.cc:139,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-svc_records_cc.cc:140,1
    - Dst: SvcParam
      Src: /src/pdns/pdns/test-svc_records_cc.cc:140,1
    - Dst: set
      Src: /src/pdns/pdns/test-svc_records_cc.cc:140,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-svc_records_cc.cc:141,1
    - Dst: SvcParam
      Src: /src/pdns/pdns/test-svc_records_cc.cc:141,1
    - Dst: set
      Src: /src/pdns/pdns/test-svc_records_cc.cc:141,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-svc_records_cc.cc:142,1
    - Dst: SvcParam
      Src: /src/pdns/pdns/test-svc_records_cc.cc:142,1
    - Dst: set
      Src: /src/pdns/pdns/test-svc_records_cc.cc:142,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-svc_records_cc.cc:143,1
    - Dst: SvcParam
      Src: /src/pdns/pdns/test-svc_records_cc.cc:143,1
    - Dst: set
      Src: /src/pdns/pdns/test-svc_records_cc.cc:143,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-svc_records_cc.cc:144,1
    - Dst: SvcParam
      Src: /src/pdns/pdns/test-svc_records_cc.cc:144,1
    - Dst: set
      Src: /src/pdns/pdns/test-svc_records_cc.cc:144,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-svc_records_cc.cc:145,1
    - Dst: SvcParam
      Src: /src/pdns/pdns/test-svc_records_cc.cc:145,1
    - Dst: set
      Src: /src/pdns/pdns/test-svc_records_cc.cc:145,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-svc_records_cc.cc:146,1
    - Dst: SvcParam
      Src: /src/pdns/pdns/test-svc_records_cc.cc:146,1
    - Dst: set
      Src: /src/pdns/pdns/test-svc_records_cc.cc:146,1
    - Dst: SvcParam::keyFromString
      Src: /src/pdns/pdns/test-svc_records_cc.cc:150,1
    - Dst: BOOST_CHECK_NO_THROW
      Src: /src/pdns/pdns/test-svc_records_cc.cc:151,1
    - Dst: SvcParam
      Src: /src/pdns/pdns/test-svc_records_cc.cc:151,1
    - Dst: SvcParam::keyFromString
      Src: /src/pdns/pdns/test-svc_records_cc.cc:151,1
    - Dst: std::move
      Src: /src/pdns/pdns/test-svc_records_cc.cc:151,1
    - Dst: SvcParam::getMandatory
      Src: /src/pdns/pdns/test-svc_records_cc.cc:153,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-svc_records_cc.cc:154,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-svc_records_cc.cc:155,1
    - Dst: SvcParam::getALPN
      Src: /src/pdns/pdns/test-svc_records_cc.cc:155,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-svc_records_cc.cc:156,1
    - Dst: SvcParam::getECH
      Src: /src/pdns/pdns/test-svc_records_cc.cc:156,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-svc_records_cc.cc:157,1
    - Dst: SvcParam::getIPHints
      Src: /src/pdns/pdns/test-svc_records_cc.cc:157,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-svc_records_cc.cc:158,1
    - Dst: SvcParam::getPort
      Src: /src/pdns/pdns/test-svc_records_cc.cc:158,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-svc_records_cc.cc:159,1
    - Dst: SvcParam::getValue
      Src: /src/pdns/pdns/test-svc_records_cc.cc:159,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-svc_records_cc.cc:160,1
    - Dst: SvcParam::getTLSSupportedGroups
      Src: /src/pdns/pdns/test-svc_records_cc.cc:160,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 161
      start: 135
    functionDepth: 0
    functionLinenumber: 135
    functionLinenumberEnd: 161
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-svc_records_cc.cc
    functionUses: 0
    functionsReached:
    - std::move
    - SvcParam::getIPHints
    - SvcParam::keyFromString
    - SvcParam
    - SvcParam::getMandatory
    - SvcParam::getALPN
    - SvcParam::getTLSSupportedGroups
    - set
    - SvcParam::getECH
    - SvcParam::getPort
    - BOOST_CHECK_THROW
    - BOOST_CHECK_NO_THROW
    - BOOST_CHECK
    - SvcParam::getValue
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_SvcParam_ctor_set_string_value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vector<string>
      Src: /src/pdns/pdns/test-svc_records_cc.cc:164,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-svc_records_cc.cc:167,1
    - Dst: SvcParam
      Src: /src/pdns/pdns/test-svc_records_cc.cc:167,1
    - Dst: vector<string>
      Src: /src/pdns/pdns/test-svc_records_cc.cc:167,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-svc_records_cc.cc:168,1
    - Dst: SvcParam
      Src: /src/pdns/pdns/test-svc_records_cc.cc:168,1
    - Dst: vector<string>
      Src: /src/pdns/pdns/test-svc_records_cc.cc:168,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-svc_records_cc.cc:169,1
    - Dst: SvcParam
      Src: /src/pdns/pdns/test-svc_records_cc.cc:169,1
    - Dst: vector<string>
      Src: /src/pdns/pdns/test-svc_records_cc.cc:169,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-svc_records_cc.cc:170,1
    - Dst: SvcParam
      Src: /src/pdns/pdns/test-svc_records_cc.cc:170,1
    - Dst: vector<string>
      Src: /src/pdns/pdns/test-svc_records_cc.cc:170,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-svc_records_cc.cc:171,1
    - Dst: SvcParam
      Src: /src/pdns/pdns/test-svc_records_cc.cc:171,1
    - Dst: vector<string>
      Src: /src/pdns/pdns/test-svc_records_cc.cc:171,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-svc_records_cc.cc:172,1
    - Dst: SvcParam
      Src: /src/pdns/pdns/test-svc_records_cc.cc:172,1
    - Dst: vector<string>
      Src: /src/pdns/pdns/test-svc_records_cc.cc:172,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-svc_records_cc.cc:173,1
    - Dst: SvcParam
      Src: /src/pdns/pdns/test-svc_records_cc.cc:173,1
    - Dst: vector<string>
      Src: /src/pdns/pdns/test-svc_records_cc.cc:173,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-svc_records_cc.cc:174,1
    - Dst: SvcParam
      Src: /src/pdns/pdns/test-svc_records_cc.cc:174,1
    - Dst: vector<string>
      Src: /src/pdns/pdns/test-svc_records_cc.cc:174,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-svc_records_cc.cc:175,1
    - Dst: SvcParam
      Src: /src/pdns/pdns/test-svc_records_cc.cc:175,1
    - Dst: vector<string>
      Src: /src/pdns/pdns/test-svc_records_cc.cc:175,1
    - Dst: SvcParam::keyFromString
      Src: /src/pdns/pdns/test-svc_records_cc.cc:177,1
    - Dst: BOOST_CHECK_NO_THROW
      Src: /src/pdns/pdns/test-svc_records_cc.cc:178,1
    - Dst: SvcParam
      Src: /src/pdns/pdns/test-svc_records_cc.cc:178,1
    - Dst: SvcParam::keyFromString
      Src: /src/pdns/pdns/test-svc_records_cc.cc:178,1
    - Dst: std::move
      Src: /src/pdns/pdns/test-svc_records_cc.cc:178,1
    - Dst: SvcParam::getALPN
      Src: /src/pdns/pdns/test-svc_records_cc.cc:179,1
    - Dst: BOOST_CHECK_EQUAL_COLLECTIONS
      Src: /src/pdns/pdns/test-svc_records_cc.cc:181,1
    - Dst: auto::begin
      Src: /src/pdns/pdns/test-svc_records_cc.cc:181,1
    - Dst: auto::end
      Src: /src/pdns/pdns/test-svc_records_cc.cc:181,1
    - Dst: auto::begin
      Src: /src/pdns/pdns/test-svc_records_cc.cc:181,1
    - Dst: auto::end
      Src: /src/pdns/pdns/test-svc_records_cc.cc:181,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-svc_records_cc.cc:182,1
    - Dst: SvcParam::getMandatory
      Src: /src/pdns/pdns/test-svc_records_cc.cc:182,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-svc_records_cc.cc:183,1
    - Dst: SvcParam::getECH
      Src: /src/pdns/pdns/test-svc_records_cc.cc:183,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-svc_records_cc.cc:184,1
    - Dst: SvcParam::getIPHints
      Src: /src/pdns/pdns/test-svc_records_cc.cc:184,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-svc_records_cc.cc:185,1
    - Dst: SvcParam::getPort
      Src: /src/pdns/pdns/test-svc_records_cc.cc:185,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-svc_records_cc.cc:186,1
    - Dst: SvcParam::getValue
      Src: /src/pdns/pdns/test-svc_records_cc.cc:186,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-svc_records_cc.cc:187,1
    - Dst: SvcParam::getTLSSupportedGroups
      Src: /src/pdns/pdns/test-svc_records_cc.cc:187,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 188
      start: 163
    functionDepth: 0
    functionLinenumber: 163
    functionLinenumberEnd: 188
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-svc_records_cc.cc
    functionUses: 0
    functionsReached:
    - std::move
    - SvcParam::getIPHints
    - SvcParam::keyFromString
    - SvcParam
    - vector<string>
    - auto::end
    - SvcParam::getMandatory
    - SvcParam::getTLSSupportedGroups
    - SvcParam::getECH
    - SvcParam::getPort
    - auto::begin
    - BOOST_CHECK_THROW
    - BOOST_CHECK_EQUAL_COLLECTIONS
    - BOOST_CHECK_NO_THROW
    - SvcParam::getALPN
    - SvcParam::getValue
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_SvcParam_ctor_vector_string_value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-svc_records_cc.cc:202,1
    - Dst: SvcParam
      Src: /src/pdns/pdns/test-svc_records_cc.cc:202,1
    - Dst: std::move
      Src: /src/pdns/pdns/test-svc_records_cc.cc:202,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-svc_records_cc.cc:203,1
    - Dst: SvcParam
      Src: /src/pdns/pdns/test-svc_records_cc.cc:203,1
    - Dst: std::move
      Src: /src/pdns/pdns/test-svc_records_cc.cc:203,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-svc_records_cc.cc:204,1
    - Dst: SvcParam
      Src: /src/pdns/pdns/test-svc_records_cc.cc:204,1
    - Dst: std::move
      Src: /src/pdns/pdns/test-svc_records_cc.cc:204,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-svc_records_cc.cc:205,1
    - Dst: SvcParam
      Src: /src/pdns/pdns/test-svc_records_cc.cc:205,1
    - Dst: std::move
      Src: /src/pdns/pdns/test-svc_records_cc.cc:205,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-svc_records_cc.cc:206,1
    - Dst: SvcParam
      Src: /src/pdns/pdns/test-svc_records_cc.cc:206,1
    - Dst: std::move
      Src: /src/pdns/pdns/test-svc_records_cc.cc:206,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-svc_records_cc.cc:207,1
    - Dst: SvcParam
      Src: /src/pdns/pdns/test-svc_records_cc.cc:207,1
    - Dst: vector<ComboAddress>
      Src: /src/pdns/pdns/test-svc_records_cc.cc:207,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-svc_records_cc.cc:208,1
    - Dst: SvcParam
      Src: /src/pdns/pdns/test-svc_records_cc.cc:208,1
    - Dst: vector<ComboAddress>
      Src: /src/pdns/pdns/test-svc_records_cc.cc:208,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-svc_records_cc.cc:209,1
    - Dst: SvcParam
      Src: /src/pdns/pdns/test-svc_records_cc.cc:209,1
    - Dst: vector<ComboAddress>
      Src: /src/pdns/pdns/test-svc_records_cc.cc:209,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-svc_records_cc.cc:211,1
    - Dst: SvcParam
      Src: /src/pdns/pdns/test-svc_records_cc.cc:211,1
    - Dst: std::move
      Src: /src/pdns/pdns/test-svc_records_cc.cc:211,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-svc_records_cc.cc:212,1
    - Dst: SvcParam
      Src: /src/pdns/pdns/test-svc_records_cc.cc:212,1
    - Dst: std::move
      Src: /src/pdns/pdns/test-svc_records_cc.cc:212,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-svc_records_cc.cc:213,1
    - Dst: SvcParam
      Src: /src/pdns/pdns/test-svc_records_cc.cc:213,1
    - Dst: std::move
      Src: /src/pdns/pdns/test-svc_records_cc.cc:213,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-svc_records_cc.cc:214,1
    - Dst: SvcParam
      Src: /src/pdns/pdns/test-svc_records_cc.cc:214,1
    - Dst: std::move
      Src: /src/pdns/pdns/test-svc_records_cc.cc:214,1
    - Dst: SvcParam::keyFromString
      Src: /src/pdns/pdns/test-svc_records_cc.cc:216,1
    - Dst: BOOST_CHECK_NO_THROW
      Src: /src/pdns/pdns/test-svc_records_cc.cc:217,1
    - Dst: SvcParam
      Src: /src/pdns/pdns/test-svc_records_cc.cc:217,1
    - Dst: std::move
      Src: /src/pdns/pdns/test-svc_records_cc.cc:217,1
    - Dst: SvcParam::getIPHints
      Src: /src/pdns/pdns/test-svc_records_cc.cc:219,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-svc_records_cc.cc:220,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-svc_records_cc.cc:221,1
    - Dst: SvcParam::getMandatory
      Src: /src/pdns/pdns/test-svc_records_cc.cc:221,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-svc_records_cc.cc:222,1
    - Dst: SvcParam::getALPN
      Src: /src/pdns/pdns/test-svc_records_cc.cc:222,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-svc_records_cc.cc:223,1
    - Dst: SvcParam::getECH
      Src: /src/pdns/pdns/test-svc_records_cc.cc:223,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-svc_records_cc.cc:224,1
    - Dst: SvcParam::getPort
      Src: /src/pdns/pdns/test-svc_records_cc.cc:224,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-svc_records_cc.cc:225,1
    - Dst: SvcParam::getValue
      Src: /src/pdns/pdns/test-svc_records_cc.cc:225,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-svc_records_cc.cc:226,1
    - Dst: SvcParam::getTLSSupportedGroups
      Src: /src/pdns/pdns/test-svc_records_cc.cc:226,1
    - Dst: BOOST_CHECK_NO_THROW
      Src: /src/pdns/pdns/test-svc_records_cc.cc:228,1
    - Dst: SvcParam
      Src: /src/pdns/pdns/test-svc_records_cc.cc:228,1
    - Dst: std::move
      Src: /src/pdns/pdns/test-svc_records_cc.cc:228,1
    - Dst: auto::clear
      Src: /src/pdns/pdns/test-svc_records_cc.cc:229,1
    - Dst: SvcParam::getIPHints
      Src: /src/pdns/pdns/test-svc_records_cc.cc:230,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-svc_records_cc.cc:231,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-svc_records_cc.cc:232,1
    - Dst: SvcParam::getMandatory
      Src: /src/pdns/pdns/test-svc_records_cc.cc:232,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-svc_records_cc.cc:233,1
    - Dst: SvcParam::getALPN
      Src: /src/pdns/pdns/test-svc_records_cc.cc:233,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-svc_records_cc.cc:234,1
    - Dst: SvcParam::getECH
      Src: /src/pdns/pdns/test-svc_records_cc.cc:234,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-svc_records_cc.cc:235,1
    - Dst: SvcParam::getPort
      Src: /src/pdns/pdns/test-svc_records_cc.cc:235,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-svc_records_cc.cc:236,1
    - Dst: SvcParam::getValue
      Src: /src/pdns/pdns/test-svc_records_cc.cc:236,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-svc_records_cc.cc:237,1
    - Dst: SvcParam::getTLSSupportedGroups
      Src: /src/pdns/pdns/test-svc_records_cc.cc:237,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 31
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 238
      start: 190
    functionDepth: 1
    functionLinenumber: 190
    functionLinenumberEnd: 238
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-svc_records_cc.cc
    functionUses: 0
    functionsReached:
    - std::move
    - vector<ComboAddress>
    - SvcParam::getIPHints
    - SvcParam::keyFromString
    - SvcParam
    - SvcParam::getMandatory
    - SvcParam::getALPN
    - SvcParam::getTLSSupportedGroups
    - SvcParam::getECH
    - SvcParam::getPort
    - BOOST_CHECK_THROW
    - BOOST_CHECK_NO_THROW
    - BOOST_CHECK
    - auto::clear
    - SvcParam::getValue
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_SvcParam_ctor_set_comboaddress_value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-svc_records_cc.cc:243,1
    - Dst: SvcParam
      Src: /src/pdns/pdns/test-svc_records_cc.cc:243,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-svc_records_cc.cc:244,1
    - Dst: SvcParam
      Src: /src/pdns/pdns/test-svc_records_cc.cc:244,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-svc_records_cc.cc:245,1
    - Dst: SvcParam
      Src: /src/pdns/pdns/test-svc_records_cc.cc:245,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-svc_records_cc.cc:246,1
    - Dst: SvcParam
      Src: /src/pdns/pdns/test-svc_records_cc.cc:246,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-svc_records_cc.cc:247,1
    - Dst: SvcParam
      Src: /src/pdns/pdns/test-svc_records_cc.cc:247,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-svc_records_cc.cc:248,1
    - Dst: SvcParam
      Src: /src/pdns/pdns/test-svc_records_cc.cc:248,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-svc_records_cc.cc:249,1
    - Dst: SvcParam
      Src: /src/pdns/pdns/test-svc_records_cc.cc:249,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-svc_records_cc.cc:250,1
    - Dst: SvcParam
      Src: /src/pdns/pdns/test-svc_records_cc.cc:250,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-svc_records_cc.cc:251,1
    - Dst: SvcParam
      Src: /src/pdns/pdns/test-svc_records_cc.cc:251,1
    - Dst: SvcParam::keyFromString
      Src: /src/pdns/pdns/test-svc_records_cc.cc:253,1
    - Dst: BOOST_CHECK_NO_THROW
      Src: /src/pdns/pdns/test-svc_records_cc.cc:254,1
    - Dst: SvcParam
      Src: /src/pdns/pdns/test-svc_records_cc.cc:254,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-svc_records_cc.cc:255,1
    - Dst: SvcParam::getPort
      Src: /src/pdns/pdns/test-svc_records_cc.cc:255,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-svc_records_cc.cc:256,1
    - Dst: SvcParam::getMandatory
      Src: /src/pdns/pdns/test-svc_records_cc.cc:256,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-svc_records_cc.cc:257,1
    - Dst: SvcParam::getALPN
      Src: /src/pdns/pdns/test-svc_records_cc.cc:257,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-svc_records_cc.cc:258,1
    - Dst: SvcParam::getECH
      Src: /src/pdns/pdns/test-svc_records_cc.cc:258,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-svc_records_cc.cc:259,1
    - Dst: SvcParam::getIPHints
      Src: /src/pdns/pdns/test-svc_records_cc.cc:259,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-svc_records_cc.cc:260,1
    - Dst: SvcParam::getValue
      Src: /src/pdns/pdns/test-svc_records_cc.cc:260,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-svc_records_cc.cc:261,1
    - Dst: SvcParam::getTLSSupportedGroups
      Src: /src/pdns/pdns/test-svc_records_cc.cc:261,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 262
      start: 240
    functionDepth: 0
    functionLinenumber: 240
    functionLinenumberEnd: 262
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-svc_records_cc.cc
    functionUses: 0
    functionsReached:
    - SvcParam::getIPHints
    - SvcParam::keyFromString
    - SvcParam
    - SvcParam::getMandatory
    - BOOST_CHECK_EQUAL
    - SvcParam::getTLSSupportedGroups
    - SvcParam::getPort
    - SvcParam::getECH
    - BOOST_CHECK_THROW
    - BOOST_CHECK_NO_THROW
    - SvcParam::getALPN
    - SvcParam::getValue
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_SvcParam_ctor_uint16_value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-svc_records_cc.cc:268,1
    - Dst: SvcParam
      Src: /src/pdns/pdns/test-svc_records_cc.cc:268,1
    - Dst: vector<uint16_t>
      Src: /src/pdns/pdns/test-svc_records_cc.cc:268,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-svc_records_cc.cc:269,1
    - Dst: SvcParam
      Src: /src/pdns/pdns/test-svc_records_cc.cc:269,1
    - Dst: vector<uint16_t>
      Src: /src/pdns/pdns/test-svc_records_cc.cc:269,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-svc_records_cc.cc:270,1
    - Dst: SvcParam
      Src: /src/pdns/pdns/test-svc_records_cc.cc:270,1
    - Dst: vector<uint16_t>
      Src: /src/pdns/pdns/test-svc_records_cc.cc:270,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-svc_records_cc.cc:271,1
    - Dst: SvcParam
      Src: /src/pdns/pdns/test-svc_records_cc.cc:271,1
    - Dst: vector<uint16_t>
      Src: /src/pdns/pdns/test-svc_records_cc.cc:271,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-svc_records_cc.cc:272,1
    - Dst: SvcParam
      Src: /src/pdns/pdns/test-svc_records_cc.cc:272,1
    - Dst: vector<uint16_t>
      Src: /src/pdns/pdns/test-svc_records_cc.cc:272,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-svc_records_cc.cc:273,1
    - Dst: SvcParam
      Src: /src/pdns/pdns/test-svc_records_cc.cc:273,1
    - Dst: vector<uint16_t>
      Src: /src/pdns/pdns/test-svc_records_cc.cc:273,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-svc_records_cc.cc:274,1
    - Dst: SvcParam
      Src: /src/pdns/pdns/test-svc_records_cc.cc:274,1
    - Dst: vector<uint16_t>
      Src: /src/pdns/pdns/test-svc_records_cc.cc:274,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-svc_records_cc.cc:275,1
    - Dst: SvcParam
      Src: /src/pdns/pdns/test-svc_records_cc.cc:275,1
    - Dst: vector<uint16_t>
      Src: /src/pdns/pdns/test-svc_records_cc.cc:275,1
    - Dst: SvcParam::keyFromString
      Src: /src/pdns/pdns/test-svc_records_cc.cc:277,1
    - Dst: BOOST_CHECK_NO_THROW
      Src: /src/pdns/pdns/test-svc_records_cc.cc:278,1
    - Dst: SvcParam
      Src: /src/pdns/pdns/test-svc_records_cc.cc:278,1
    - Dst: vector<uint16_t>
      Src: /src/pdns/pdns/test-svc_records_cc.cc:278,1
    - Dst: SvcParam::getTLSSupportedGroups
      Src: /src/pdns/pdns/test-svc_records_cc.cc:279,1
    - Dst: BOOST_CHECK_EQUAL_COLLECTIONS
      Src: /src/pdns/pdns/test-svc_records_cc.cc:280,1
    - Dst: auto::begin
      Src: /src/pdns/pdns/test-svc_records_cc.cc:280,1
    - Dst: auto::end
      Src: /src/pdns/pdns/test-svc_records_cc.cc:280,1
    - Dst: auto::begin
      Src: /src/pdns/pdns/test-svc_records_cc.cc:280,1
    - Dst: auto::end
      Src: /src/pdns/pdns/test-svc_records_cc.cc:280,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-svc_records_cc.cc:281,1
    - Dst: SvcParam::getMandatory
      Src: /src/pdns/pdns/test-svc_records_cc.cc:281,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-svc_records_cc.cc:282,1
    - Dst: SvcParam::getALPN
      Src: /src/pdns/pdns/test-svc_records_cc.cc:282,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-svc_records_cc.cc:283,1
    - Dst: SvcParam::getECH
      Src: /src/pdns/pdns/test-svc_records_cc.cc:283,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-svc_records_cc.cc:284,1
    - Dst: SvcParam::getIPHints
      Src: /src/pdns/pdns/test-svc_records_cc.cc:284,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-svc_records_cc.cc:285,1
    - Dst: SvcParam::getValue
      Src: /src/pdns/pdns/test-svc_records_cc.cc:285,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 286
      start: 264
    functionDepth: 0
    functionLinenumber: 264
    functionLinenumberEnd: 286
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-svc_records_cc.cc
    functionUses: 0
    functionsReached:
    - SvcParam::getIPHints
    - SvcParam::keyFromString
    - SvcParam
    - vector<uint16_t>
    - auto::end
    - SvcParam::getMandatory
    - SvcParam::getTLSSupportedGroups
    - SvcParam::getECH
    - auto::begin
    - BOOST_CHECK_THROW
    - BOOST_CHECK_EQUAL_COLLECTIONS
    - BOOST_CHECK_NO_THROW
    - SvcParam::getALPN
    - SvcParam::getValue
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_SvcParam_ctor_vector_uint16_value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-svc_records_cc.cc:300,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-svc_records_cc.cc:301,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-svc_records_cc.cc:302,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-svc_records_cc.cc:314,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-svc_records_cc.cc:315,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-svc_records_cc.cc:316,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-svc_records_cc.cc:324,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-svc_records_cc.cc:334,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-svc_records_cc.cc:335,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-svc_records_cc.cc:336,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-svc_records_cc.cc:361,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-svc_records_cc.cc:363,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-svc_records_cc.cc:364,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-svc_records_cc.cc:365,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-svc_records_cc.cc:367,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-svc_records_cc.cc:368,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-svc_records_cc.cc:370,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-svc_records_cc.cc:382,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-svc_records_cc.cc:383,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-svc_records_cc.cc:384,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-svc_records_cc.cc:396,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-svc_records_cc.cc:397,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-svc_records_cc.cc:398,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-svc_records_cc.cc:410,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-svc_records_cc.cc:411,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-svc_records_cc.cc:412,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-svc_records_cc.cc:425,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-svc_records_cc.cc:426,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-svc_records_cc.cc:427,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 39
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 429
      start: 288
    functionDepth: 0
    functionLinenumber: 288
    functionLinenumberEnd: 429
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-svc_records_cc.cc
    functionUses: 0
    functionsReached:
    - BOOST_CHECK
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_SvcParam_comparison)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' key'
    argTypes:
    - DNSKEYRecordContent
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 34
    functionDepth: 0
    functionLinenumber: 34
    functionLinenumberEnd: 47
    functionName: isAZoneKey
    functionSourceFile: /src/pdns/pdns/validate.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool isAZoneKey(const DNSKEYRecordContent& key)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' key'
    argTypes:
    - DNSKEYRecordContent
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 49
    functionDepth: 0
    functionLinenumber: 49
    functionLinenumberEnd: 53
    functionName: isRevokedKey
    functionSourceFile: /src/pdns/pdns/validate.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool isRevokedKey(const DNSKEYRecordContent& key)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: isAZoneKey
      Src: /src/pdns/pdns/validate.cc:60,1
    - Dst: VLOG
      Src: /src/pdns/pdns/validate.cc:61,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/validate.cc:61,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/validate.cc:61,1
    - Dst: isRevokedKey
      Src: /src/pdns/pdns/validate.cc:65,1
    - Dst: VLOG
      Src: /src/pdns/pdns/validate.cc:66,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/validate.cc:66,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/validate.cc:66,1
    - Dst: getTag
      Src: /src/pdns/pdns/validate.cc:70,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/validate.cc:71,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 14
    argCount: 4
    argNames:
    - ' keys'
    - tag
    - algorithm
    - ' log'
    argTypes:
    - skeyset_t
    - uint16_t
    - uint8_t
    - OptLog
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 55
    functionDepth: 0
    functionLinenumber: 55
    functionLinenumberEnd: 76
    functionName: getByTag
    functionSourceFile: /src/pdns/pdns/validate.cc
    functionUses: 0
    functionsReached:
    - isAZoneKey
    - vector::push_back
    - std::to_string
    - getTag
    - isRevokedKey
    - VLOG
    linkageType: ''
    returnType: vector<shared_ptr<const DNSKEYRecordContent>>
    signature: vector<shared_ptr<const DNSKEYRecordContent>> getByTag(const skeyset_t&
      keys, uint16_t tag, uint8_t algorithm, const OptLog& log)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: compare
      Src: /src/pdns/pdns/validate.cc:80,1
    - Dst: compare
      Src: /src/pdns/pdns/validate.cc:81,1
    - Dst: compare
      Src: /src/pdns/pdns/validate.cc:85,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 14
    argCount: 3
    argNames:
    - ' hash'
    - ' beginHash'
    - ' nextHash'
    argTypes:
    - std::string
    - std::string
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 78
    functionDepth: 0
    functionLinenumber: 78
    functionLinenumberEnd: 96
    functionName: isCoveredByNSEC3Hash
    functionSourceFile: /src/pdns/pdns/validate.cc
    functionUses: 0
    functionsReached:
    - compare
    linkageType: ''
    returnType: bool
    signature: bool isCoveredByNSEC3Hash(const std::string& hash, const std::string&
      beginHash, const std::string& nextHash)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: canonCompare_three_way
      Src: /src/pdns/pdns/validate.cc:101,1
    - Dst: canonCompare_three_way
      Src: /src/pdns/pdns/validate.cc:102,1
    - Dst: canonCompare_three_way
      Src: /src/pdns/pdns/validate.cc:106,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 14
    argCount: 3
    argNames:
    - ' name'
    - ' beginHash'
    - ' nextHash'
    argTypes:
    - DNSName
    - DNSName
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 99
    functionDepth: 0
    functionLinenumber: 99
    functionLinenumberEnd: 117
    functionName: isCoveredByNSEC3Hash
    functionSourceFile: /src/pdns/pdns/validate.cc
    functionUses: 0
    functionsReached:
    - canonCompare_three_way
    linkageType: ''
    returnType: bool
    signature: bool isCoveredByNSEC3Hash(const DNSName& name, const DNSName& beginHash,
      const DNSName& nextHash)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: canonCompare_three_way
      Src: /src/pdns/pdns/validate.cc:122,1
    - Dst: canonCompare_three_way
      Src: /src/pdns/pdns/validate.cc:123,1
    - Dst: canonCompare_three_way
      Src: /src/pdns/pdns/validate.cc:127,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 14
    argCount: 3
    argNames:
    - ' name'
    - ' begin'
    - ' next'
    argTypes:
    - DNSName
    - DNSName
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 138
      start: 120
    functionDepth: 0
    functionLinenumber: 120
    functionLinenumberEnd: 138
    functionName: isCoveredByNSEC
    functionSourceFile: /src/pdns/pdns/validate.cc
    functionUses: 0
    functionsReached:
    - canonCompare_three_way
    linkageType: ''
    returnType: bool
    signature: bool isCoveredByNSEC(const DNSName& name, const DNSName& begin, const
      DNSName& next)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: canonCompare
      Src: /src/pdns/pdns/validate.cc:146,1
    - Dst: isPartOf
      Src: /src/pdns/pdns/validate.cc:146,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 2
    argCount: 3
    argNames:
    - ' name'
    - ' begin'
    - ' next'
    argTypes:
    - DNSName
    - DNSName
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 140
    functionDepth: 0
    functionLinenumber: 140
    functionLinenumberEnd: 147
    functionName: nsecProvesENT
    functionSourceFile: /src/pdns/pdns/validate.cc
    functionUses: 0
    functionsReached:
    - isPartOf
    - canonCompare
    linkageType: ''
    returnType: bool
    signature: bool nsecProvesENT(const DNSName& name, const DNSName& begin, const
      DNSName& next)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: std::tuple
      Src: /src/pdns/pdns/validate.cc:157,1
    - Dst: d_nsec3Cache::find
      Src: /src/pdns/pdns/validate.cc:158,1
    - Dst: d_nsec3Cache::end
      Src: /src/pdns/pdns/validate.cc:159,1
    - Dst: pdns::validation::TooManySEC3IterationsException::TooManySEC3IterationsException
      Src: /src/pdns/pdns/validate.cc:167,1
    - Dst: hashQNameWithSalt
      Src: /src/pdns/pdns/validate.cc:170,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 4
    argNames:
    - ' qname'
    - iterations
    - ' salt'
    - ' context'
    argTypes:
    - DNSName
    - uint16_t
    - std::string
    - pdns::validation::ValidationContext
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 174
      start: 149
    functionDepth: 0
    functionLinenumber: 149
    functionLinenumberEnd: 174
    functionName: getHashFromNSEC3
    functionSourceFile: /src/pdns/pdns/validate.cc
    functionUses: 0
    functionsReached:
    - pdns::validation::TooManySEC3IterationsException::TooManySEC3IterationsException
    - d_nsec3Cache::end
    - d_nsec3Cache::find
    - std::tuple
    - hashQNameWithSalt
    linkageType: ''
    returnType: std::string
    signature: std::string getHashFromNSEC3(const DNSName& qname, uint16_t iterations,
      const std::string& salt, pdns::validation::ValidationContext& context)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getHashFromNSEC3
      Src: /src/pdns/pdns/validate.cc:178,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' qname'
    - ' nsec3'
    - ' context'
    argTypes:
    - DNSName
    - NSEC3RecordContent
    - pdns::validation::ValidationContext
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 179
      start: 176
    functionDepth: 0
    functionLinenumber: 176
    functionLinenumberEnd: 179
    functionName: getHashFromNSEC3
    functionSourceFile: /src/pdns/pdns/validate.cc
    functionUses: 1
    functionsReached:
    - getHashFromNSEC3
    linkageType: ''
    returnType: std::string
    signature: std::string getHashFromNSEC3(const DNSName& qname, const NSEC3RecordContent&
      nsec3, pdns::validation::ValidationContext& context)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: getRR
      Src: /src/pdns/pdns/validate.cc:193,1
    - Dst: auto::isSet
      Src: /src/pdns/pdns/validate.cc:199,1
    - Dst: isCoveredByNSEC
      Src: /src/pdns/pdns/validate.cc:202,1
    - Dst: getRR
      Src: /src/pdns/pdns/validate.cc:207,1
    - Dst: getHashFromNSEC3
      Src: /src/pdns/pdns/validate.cc:218,1
    - Dst: string::empty
      Src: /src/pdns/pdns/validate.cc:219,1
    - Dst: fromBase32Hex
      Src: /src/pdns/pdns/validate.cc:223,1
    - Dst: d_name::getRawLabel
      Src: /src/pdns/pdns/validate.cc:223,1
    - Dst: auto::isSet
      Src: /src/pdns/pdns/validate.cc:225,1
    - Dst: isCoveredByNSEC3Hash
      Src: /src/pdns/pdns/validate.cc:228,1
    - Dst: auto::isOptOut
      Src: /src/pdns/pdns/validate.cc:229,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 33
    argCount: 3
    argNames:
    - ' zone'
    - ' dsrecords'
    - ' context'
    argTypes:
    - DNSName
    - std::vector<DNSRecord>
    - pdns::validation::ValidationContext
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 235
      start: 187
    functionDepth: 0
    functionLinenumber: 187
    functionLinenumberEnd: 235
    functionName: denialProvesNoDelegation
    functionSourceFile: /src/pdns/pdns/validate.cc
    functionUses: 0
    functionsReached:
    - getRR
    - string::empty
    - isCoveredByNSEC3Hash
    - getHashFromNSEC3
    - isCoveredByNSEC
    - auto::isSet
    - d_name::getRawLabel
    - fromBase32Hex
    - auto::isOptOut
    linkageType: ''
    returnType: bool
    signature: bool denialProvesNoDelegation(const DNSName& zone, const std::vector<DNSRecord>&
      dsrecords, pdns::validation::ValidationContext& context)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - labelCount
    - ' sign'
    argTypes:
    - unsigned int
    - RRSIGRecordContent
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 245
      start: 242
    functionDepth: 0
    functionLinenumber: 242
    functionLinenumberEnd: 245
    functionName: isWildcardExpanded
    functionSourceFile: /src/pdns/pdns/validate.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool isWildcardExpanded(unsigned int labelCount, const RRSIGRecordContent&
      sign)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/validate.cc:249,1
    - Dst: at
      Src: /src/pdns/pdns/validate.cc:253,1
    - Dst: countLabels
      Src: /src/pdns/pdns/validate.cc:254,1
    - Dst: isWildcardExpanded
      Src: /src/pdns/pdns/validate.cc:255,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - ' owner'
    - ' signatures'
    argTypes:
    - DNSName
    - std::vector<std::shared_ptr<const RRSIGRecordContent>>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 256
      start: 247
    functionDepth: 0
    functionLinenumber: 247
    functionLinenumberEnd: 256
    functionName: isWildcardExpanded
    functionSourceFile: /src/pdns/pdns/validate.cc
    functionUses: 1
    functionsReached:
    - empty
    - countLabels
    - at
    - isWildcardExpanded
    linkageType: ''
    returnType: bool
    signature: bool isWildcardExpanded(const DNSName& owner, const std::vector<std::shared_ptr<const
      RRSIGRecordContent>>& signatures)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: isWildcard
      Src: /src/pdns/pdns/validate.cc:261,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 3
    argNames:
    - ' owner'
    - labelCount
    - ' sign'
    argTypes:
    - DNSName
    - unsigned int
    - RRSIGRecordContent
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 262
      start: 258
    functionDepth: 0
    functionLinenumber: 258
    functionLinenumberEnd: 262
    functionName: isWildcardExpandedOntoItself
    functionSourceFile: /src/pdns/pdns/validate.cc
    functionUses: 0
    functionsReached:
    - isWildcard
    linkageType: ''
    returnType: bool
    signature: bool isWildcardExpandedOntoItself(const DNSName& owner, unsigned int
      labelCount, const RRSIGRecordContent& sign)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/validate.cc:266,1
    - Dst: at
      Src: /src/pdns/pdns/validate.cc:270,1
    - Dst: countLabels
      Src: /src/pdns/pdns/validate.cc:271,1
    - Dst: isWildcardExpandedOntoItself
      Src: /src/pdns/pdns/validate.cc:272,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - ' owner'
    - ' signatures'
    argTypes:
    - DNSName
    - std::vector<std::shared_ptr<const RRSIGRecordContent>>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 273
      start: 264
    functionDepth: 0
    functionLinenumber: 264
    functionLinenumberEnd: 273
    functionName: isWildcardExpandedOntoItself
    functionSourceFile: /src/pdns/pdns/validate.cc
    functionUses: 1
    functionsReached:
    - empty
    - countLabels
    - at
    - isWildcardExpandedOntoItself
    linkageType: ''
    returnType: bool
    signature: bool isWildcardExpandedOntoItself(const DNSName& owner, const std::vector<std::shared_ptr<const
      RRSIGRecordContent>>& signatures)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/validate.cc:281,1
    - Dst: at
      Src: /src/pdns/pdns/validate.cc:285,1
    - Dst: countLabels
      Src: /src/pdns/pdns/validate.cc:286,1
    - Dst: DNSName::chopOff
      Src: /src/pdns/pdns/validate.cc:289,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 2
    argNames:
    - ' initialOwner'
    - ' signatures'
    argTypes:
    - DNSName
    - std::vector<std::shared_ptr<const RRSIGRecordContent>>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 297
      start: 277
    functionDepth: 0
    functionLinenumber: 277
    functionLinenumberEnd: 297
    functionName: getNSECOwnerName
    functionSourceFile: /src/pdns/pdns/validate.cc
    functionUses: 0
    functionsReached:
    - empty
    - countLabels
    - at
    - DNSName::chopOff
    linkageType: ''
    returnType: DNSName
    signature: DNSName getNSECOwnerName(const DNSName& initialOwner, const std::vector<std::shared_ptr<const
      RRSIGRecordContent>>& signatures)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: isSet
      Src: /src/pdns/pdns/validate.cc:301,1
    - Dst: isSet
      Src: /src/pdns/pdns/validate.cc:301,1
    - Dst: countLabels
      Src: /src/pdns/pdns/validate.cc:301,1
    - Dst: countLabels
      Src: /src/pdns/pdns/validate.cc:301,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 2
    argCount: 3
    argNames:
    - ' signer'
    - ' owner'
    - ' nsec'
    argTypes:
    - DNSName
    - DNSName
    - NSECRecordContent
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 302
      start: 299
    functionDepth: 0
    functionLinenumber: 299
    functionLinenumberEnd: 302
    functionName: isNSECAncestorDelegation
    functionSourceFile: /src/pdns/pdns/validate.cc
    functionUses: 0
    functionsReached:
    - countLabels
    - isSet
    linkageType: ''
    returnType: bool
    signature: bool isNSECAncestorDelegation(const DNSName& signer, const DNSName&
      owner, const NSECRecordContent& nsec)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: isSet
      Src: /src/pdns/pdns/validate.cc:306,1
    - Dst: isSet
      Src: /src/pdns/pdns/validate.cc:306,1
    - Dst: countLabels
      Src: /src/pdns/pdns/validate.cc:306,1
    - Dst: countLabels
      Src: /src/pdns/pdns/validate.cc:306,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 2
    argCount: 3
    argNames:
    - ' signer'
    - ' owner'
    - ' nsec3'
    argTypes:
    - DNSName
    - DNSName
    - NSEC3RecordContent
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 307
      start: 304
    functionDepth: 0
    functionLinenumber: 304
    functionLinenumberEnd: 307
    functionName: isNSEC3AncestorDelegation
    functionSourceFile: /src/pdns/pdns/validate.cc
    functionUses: 0
    functionsReached:
    - countLabels
    - isSet
    linkageType: ''
    returnType: bool
    signature: bool isNSEC3AncestorDelegation(const DNSName& signer, const DNSName&
      owner, const NSEC3RecordContent& nsec3)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: VLOG
      Src: /src/pdns/pdns/validate.cc:312,1
    - Dst: QType
      Src: /src/pdns/pdns/validate.cc:312,1
    - Dst: VLOG
      Src: /src/pdns/pdns/validate.cc:314,1
    - Dst: DNSRecordContent::NumberToType
      Src: /src/pdns/pdns/validate.cc:314,1
    - Dst: VLOG
      Src: /src/pdns/pdns/validate.cc:317,1
    - Dst: getZoneRepresentation
      Src: /src/pdns/pdns/validate.cc:317,1
    - Dst: std::dynamic_pointer_cast<const NSECRecordContent>
      Src: /src/pdns/pdns/validate.cc:318,1
    - Dst: getNSECOwnerName
      Src: /src/pdns/pdns/validate.cc:323,1
    - Dst: VLOG
      Src: /src/pdns/pdns/validate.cc:328,1
    - Dst: isTypeDenied
      Src: /src/pdns/pdns/validate.cc:329,1
    - Dst: QType
      Src: /src/pdns/pdns/validate.cc:329,1
    - Dst: VLOG_NO_PREFIX
      Src: /src/pdns/pdns/validate.cc:330,1
    - Dst: VLOG_NO_PREFIX
      Src: /src/pdns/pdns/validate.cc:333,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 22
    argCount: 5
    argNames:
    - ' qname'
    - qtype
    - ' closestEncloser'
    - ' validrrsets'
    - ' log'
    argTypes:
    - DNSName
    - uint16_t
    - DNSName
    - cspmap_t
    - OptLog
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 340
      start: 309
    functionDepth: 0
    functionLinenumber: 309
    functionLinenumberEnd: 340
    functionName: provesNoDataWildCard
    functionSourceFile: /src/pdns/pdns/validate.cc
    functionUses: 0
    functionsReached:
    - getZoneRepresentation
    - isTypeDenied
    - std::dynamic_pointer_cast<const NSECRecordContent>
    - QType
    - VLOG_NO_PREFIX
    - DNSRecordContent::NumberToType
    - getNSECOwnerName
    - VLOG
    linkageType: ''
    returnType: bool
    signature: bool provesNoDataWildCard(const DNSName& qname, const uint16_t qtype,
      const DNSName& closestEncloser, const cspmap_t& validrrsets, const OptLog& log)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: getCommonLabels
      Src: /src/pdns/pdns/validate.cc:344,1
    - Dst: getCommonLabels
      Src: /src/pdns/pdns/validate.cc:345,1
    - Dst: DNSName::countLabels
      Src: /src/pdns/pdns/validate.cc:346,1
    - Dst: DNSName::countLabels
      Src: /src/pdns/pdns/validate.cc:346,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - ' name'
    - ' owner'
    - ' next'
    argTypes:
    - DNSName
    - DNSName
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 350
      start: 342
    functionDepth: 0
    functionLinenumber: 342
    functionLinenumberEnd: 350
    functionName: getClosestEncloserFromNSEC
    functionSourceFile: /src/pdns/pdns/validate.cc
    functionUses: 0
    functionsReached:
    - DNSName::countLabels
    - getCommonLabels
    linkageType: ''
    returnType: DNSName
    signature: DNSName getClosestEncloserFromNSEC(const DNSName& name, const DNSName&
      owner, const DNSName& next)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: VLOG
      Src: /src/pdns/pdns/validate.cc:358,1
    - Dst: QType
      Src: /src/pdns/pdns/validate.cc:358,1
    - Dst: VLOG
      Src: /src/pdns/pdns/validate.cc:361,1
    - Dst: DNSRecordContent::NumberToType
      Src: /src/pdns/pdns/validate.cc:361,1
    - Dst: VLOG
      Src: /src/pdns/pdns/validate.cc:364,1
    - Dst: getZoneRepresentation
      Src: /src/pdns/pdns/validate.cc:364,1
    - Dst: std::dynamic_pointer_cast<const NSECRecordContent>
      Src: /src/pdns/pdns/validate.cc:365,1
    - Dst: getNSECOwnerName
      Src: /src/pdns/pdns/validate.cc:370,1
    - Dst: VLOG
      Src: /src/pdns/pdns/validate.cc:371,1
    - Dst: isPartOf
      Src: /src/pdns/pdns/validate.cc:373,1
    - Dst: auto::isSet
      Src: /src/pdns/pdns/validate.cc:373,1
    - Dst: VLOG
      Src: /src/pdns/pdns/validate.cc:383,1
    - Dst: isCoveredByNSEC
      Src: /src/pdns/pdns/validate.cc:387,1
    - Dst: VLOG
      Src: /src/pdns/pdns/validate.cc:388,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 21
    argCount: 5
    argNames:
    - ' qname'
    - qtype
    - ' closestEncloser'
    - ' validrrsets'
    - ' log'
    argTypes:
    - DNSName
    - uint16_t
    - DNSName
    - cspmap_t
    - OptLog
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 396
      start: 356
    functionDepth: 0
    functionLinenumber: 356
    functionLinenumberEnd: 396
    functionName: provesNoWildCard
    functionSourceFile: /src/pdns/pdns/validate.cc
    functionUses: 0
    functionsReached:
    - getZoneRepresentation
    - isPartOf
    - std::dynamic_pointer_cast<const NSECRecordContent>
    - QType
    - isCoveredByNSEC
    - auto::isSet
    - DNSRecordContent::NumberToType
    - getNSECOwnerName
    - VLOG
    linkageType: ''
    returnType: bool
    signature: bool provesNoWildCard(const DNSName& qname, const uint16_t qtype, const
      DNSName& closestEncloser, const cspmap_t& validrrsets, const OptLog& log)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: VLOG
      Src: /src/pdns/pdns/validate.cc:407,1
    - Dst: QType
      Src: /src/pdns/pdns/validate.cc:407,1
    - Dst: VLOG
      Src: /src/pdns/pdns/validate.cc:410,1
    - Dst: DNSRecordContent::NumberToType
      Src: /src/pdns/pdns/validate.cc:410,1
    - Dst: VLOG
      Src: /src/pdns/pdns/validate.cc:413,1
    - Dst: getZoneRepresentation
      Src: /src/pdns/pdns/validate.cc:413,1
    - Dst: std::dynamic_pointer_cast<const NSEC3RecordContent>
      Src: /src/pdns/pdns/validate.cc:414,1
    - Dst: getSigner
      Src: /src/pdns/pdns/validate.cc:419,1
    - Dst: first::first::isPartOf
      Src: /src/pdns/pdns/validate.cc:420,1
    - Dst: isPartOf
      Src: /src/pdns/pdns/validate.cc:420,1
    - Dst: getHashFromNSEC3
      Src: /src/pdns/pdns/validate.cc:424,1
    - Dst: string::empty
      Src: /src/pdns/pdns/validate.cc:425,1
    - Dst: VLOG
      Src: /src/pdns/pdns/validate.cc:426,1
    - Dst: VLOG
      Src: /src/pdns/pdns/validate.cc:429,1
    - Dst: toBase32Hex
      Src: /src/pdns/pdns/validate.cc:429,1
    - Dst: fromBase32Hex
      Src: /src/pdns/pdns/validate.cc:430,1
    - Dst: first::first::getRawLabel
      Src: /src/pdns/pdns/validate.cc:430,1
    - Dst: VLOG
      Src: /src/pdns/pdns/validate.cc:431,1
    - Dst: toBase32Hex
      Src: /src/pdns/pdns/validate.cc:431,1
    - Dst: toBase32Hex
      Src: /src/pdns/pdns/validate.cc:431,1
    - Dst: VLOG
      Src: /src/pdns/pdns/validate.cc:434,1
    - Dst: isNSEC3AncestorDelegation
      Src: /src/pdns/pdns/validate.cc:445,1
    - Dst: VLOG_NO_PREFIX
      Src: /src/pdns/pdns/validate.cc:447,1
    - Dst: isTypeDenied
      Src: /src/pdns/pdns/validate.cc:451,1
    - Dst: QType
      Src: /src/pdns/pdns/validate.cc:451,1
    - Dst: VLOG_NO_PREFIX
      Src: /src/pdns/pdns/validate.cc:452,1
    - Dst: VLOG_NO_PREFIX
      Src: /src/pdns/pdns/validate.cc:455,1
    - Dst: isCoveredByNSEC3Hash
      Src: /src/pdns/pdns/validate.cc:459,1
    - Dst: VLOG
      Src: /src/pdns/pdns/validate.cc:460,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 41
    argCount: 6
    argNames:
    - ' closestEncloser'
    - qtype
    - ' validrrsets'
    - wildcardExists
    - ' log'
    - ' context'
    argTypes:
    - DNSName
    - uint16_t
    - cspmap_t
    - bool*
    - OptLog
    - pdns::validation::ValidationContext
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 468
      start: 404
    functionDepth: 0
    functionLinenumber: 404
    functionLinenumberEnd: 468
    functionName: provesNSEC3NoWildCard
    functionSourceFile: /src/pdns/pdns/validate.cc
    functionUses: 0
    functionsReached:
    - getZoneRepresentation
    - isTypeDenied
    - isPartOf
    - getSigner
    - string::empty
    - std::dynamic_pointer_cast<const NSEC3RecordContent>
    - QType
    - first::first::isPartOf
    - isCoveredByNSEC3Hash
    - getHashFromNSEC3
    - VLOG_NO_PREFIX
    - isNSEC3AncestorDelegation
    - DNSRecordContent::NumberToType
    - toBase32Hex
    - fromBase32Hex
    - first::first::getRawLabel
    - VLOG
    linkageType: ''
    returnType: bool
    signature: bool provesNSEC3NoWildCard(const DNSName& closestEncloser, uint16_t
      const qtype, const cspmap_t& validrrsets, bool* wildcardExists, const OptLog&
      log, pdns::validation::ValidationContext& context)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: getSigner
      Src: /src/pdns/pdns/validate.cc:472,1
    - Dst: isPartOf
      Src: /src/pdns/pdns/validate.cc:473,1
    - Dst: isPartOf
      Src: /src/pdns/pdns/validate.cc:473,1
    - Dst: getNSECOwnerName
      Src: /src/pdns/pdns/validate.cc:477,1
    - Dst: isPartOf
      Src: /src/pdns/pdns/validate.cc:484,1
    - Dst: isNSECAncestorDelegation
      Src: /src/pdns/pdns/validate.cc:484,1
    - Dst: VLOG_NO_PREFIX
      Src: /src/pdns/pdns/validate.cc:487,1
    - Dst: isTypeDenied
      Src: /src/pdns/pdns/validate.cc:494,1
    - Dst: QType
      Src: /src/pdns/pdns/validate.cc:494,1
    - Dst: VLOG_NO_PREFIX
      Src: /src/pdns/pdns/validate.cc:495,1
    - Dst: QType
      Src: /src/pdns/pdns/validate.cc:495,1
    - Dst: VLOG_NO_PREFIX
      Src: /src/pdns/pdns/validate.cc:500,1
    - Dst: VLOG_NO_PREFIX
      Src: /src/pdns/pdns/validate.cc:504,1
    - Dst: QType
      Src: /src/pdns/pdns/validate.cc:504,1
    - Dst: isPartOf
      Src: /src/pdns/pdns/validate.cc:508,1
    - Dst: isSet
      Src: /src/pdns/pdns/validate.cc:508,1
    - Dst: VLOG
      Src: /src/pdns/pdns/validate.cc:518,1
    - Dst: isCoveredByNSEC
      Src: /src/pdns/pdns/validate.cc:522,1
    - Dst: VLOG_NO_PREFIX
      Src: /src/pdns/pdns/validate.cc:523,1
    - Dst: nsecProvesENT
      Src: /src/pdns/pdns/validate.cc:525,1
    - Dst: VLOG_NO_PREFIX
      Src: /src/pdns/pdns/validate.cc:526,1
    - Dst: QType
      Src: /src/pdns/pdns/validate.cc:526,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 35
    argCount: 6
    argNames:
    - ' name'
    - qtype
    - ' nsecOwner'
    - ' nsec'
    - ' signatures'
    - ' log'
    argTypes:
    - DNSName
    - uint16_t
    - DNSName
    - NSECRecordContent
    - std::vector<std::shared_ptr<const RRSIGRecordContent>>
    - OptLog
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 534
      start: 470
    functionDepth: 0
    functionLinenumber: 470
    functionLinenumberEnd: 534
    functionName: matchesNSEC
    functionSourceFile: /src/pdns/pdns/validate.cc
    functionUses: 0
    functionsReached:
    - isTypeDenied
    - isPartOf
    - isSet
    - getSigner
    - QType
    - isCoveredByNSEC
    - nsecProvesENT
    - VLOG_NO_PREFIX
    - VLOG
    - getNSECOwnerName
    - isNSECAncestorDelegation
    linkageType: ''
    returnType: dState
    signature: dState matchesNSEC(const DNSName& name, uint16_t qtype, const DNSName&
      nsecOwner, const NSECRecordContent& nsec, const std::vector<std::shared_ptr<const
      RRSIGRecordContent>>& signatures, const OptLog& log)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<uint64_t>
      Src: /src/pdns/pdns/validate.cc:538,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - maxLabels
    - iterations
    - saltLength
    argTypes:
    - uint8_t
    - uint16_t
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 539
      start: 536
    functionDepth: 0
    functionLinenumber: 536
    functionLinenumberEnd: 539
    functionName: getNSEC3DenialProofWorstCaseIterationsCount
    functionSourceFile: /src/pdns/pdns/validate.cc
    functionUses: 0
    functionsReached:
    - static_cast<uint64_t>
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t getNSEC3DenialProofWorstCaseIterationsCount(uint8_t maxLabels,
      uint16_t iterations, size_t saltLength)
  - BBCount: 68
    BranchProfiles: []
    Callsites:
    - Dst: countLabels
      Src: /src/pdns/pdns/validate.cc:555,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/validate.cc:556,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/validate.cc:559,1
    - Dst: VLOG
      Src: /src/pdns/pdns/validate.cc:562,1
    - Dst: DNSRecordContent::NumberToType
      Src: /src/pdns/pdns/validate.cc:562,1
    - Dst: VLOG
      Src: /src/pdns/pdns/validate.cc:566,1
    - Dst: getZoneRepresentation
      Src: /src/pdns/pdns/validate.cc:566,1
    - Dst: second::signatures::empty
      Src: /src/pdns/pdns/validate.cc:568,1
    - Dst: std::dynamic_pointer_cast<const NSECRecordContent>
      Src: /src/pdns/pdns/validate.cc:572,1
    - Dst: DNSName::DNSName
      Src: /src/pdns/pdns/validate.cc:577,1
    - Dst: DNSName::trimToLabels
      Src: /src/pdns/pdns/validate.cc:584,1
    - Dst: getNSECOwnerName
      Src: /src/pdns/pdns/validate.cc:589,1
    - Dst: getSigner
      Src: /src/pdns/pdns/validate.cc:590,1
    - Dst: first::first::isPartOf
      Src: /src/pdns/pdns/validate.cc:591,1
    - Dst: DNSName::isPartOf
      Src: /src/pdns/pdns/validate.cc:591,1
    - Dst: DNSName::isPartOf
      Src: /src/pdns/pdns/validate.cc:591,1
    - Dst: DNSName::countLabels
      Src: /src/pdns/pdns/validate.cc:599,1
    - Dst: DNSName::countLabels
      Src: /src/pdns/pdns/validate.cc:599,1
    - Dst: auto::isSet
      Src: /src/pdns/pdns/validate.cc:600,1
    - Dst: auto::isSet
      Src: /src/pdns/pdns/validate.cc:600,1
    - Dst: VLOG
      Src: /src/pdns/pdns/validate.cc:601,1
    - Dst: DNSName::isPartOf
      Src: /src/pdns/pdns/validate.cc:611,1
    - Dst: isNSECAncestorDelegation
      Src: /src/pdns/pdns/validate.cc:611,1
    - Dst: VLOG
      Src: /src/pdns/pdns/validate.cc:614,1
    - Dst: DNSName::isRoot
      Src: /src/pdns/pdns/validate.cc:619,1
    - Dst: VLOG
      Src: /src/pdns/pdns/validate.cc:620,1
    - Dst: isTypeDenied
      Src: /src/pdns/pdns/validate.cc:626,1
    - Dst: QType
      Src: /src/pdns/pdns/validate.cc:626,1
    - Dst: VLOG
      Src: /src/pdns/pdns/validate.cc:627,1
    - Dst: QType
      Src: /src/pdns/pdns/validate.cc:627,1
    - Dst: VLOG
      Src: /src/pdns/pdns/validate.cc:631,1
    - Dst: QType
      Src: /src/pdns/pdns/validate.cc:631,1
    - Dst: auto::isSet
      Src: /src/pdns/pdns/validate.cc:640,1
    - Dst: VLOG
      Src: /src/pdns/pdns/validate.cc:641,1
    - Dst: isWildcardExpanded
      Src: /src/pdns/pdns/validate.cc:649,1
    - Dst: isWildcardExpandedOntoItself
      Src: /src/pdns/pdns/validate.cc:649,1
    - Dst: getClosestEncloserFromNSEC
      Src: /src/pdns/pdns/validate.cc:657,1
    - Dst: provesNoWildCard
      Src: /src/pdns/pdns/validate.cc:658,1
    - Dst: VLOG
      Src: /src/pdns/pdns/validate.cc:662,1
    - Dst: DNSName::isPartOf
      Src: /src/pdns/pdns/validate.cc:666,1
    - Dst: auto::isSet
      Src: /src/pdns/pdns/validate.cc:666,1
    - Dst: VLOG
      Src: /src/pdns/pdns/validate.cc:676,1
    - Dst: isCoveredByNSEC
      Src: /src/pdns/pdns/validate.cc:681,1
    - Dst: VLOG
      Src: /src/pdns/pdns/validate.cc:682,1
    - Dst: nsecProvesENT
      Src: /src/pdns/pdns/validate.cc:684,1
    - Dst: VLOG_NO_PREFIX
      Src: /src/pdns/pdns/validate.cc:688,1
    - Dst: QType
      Src: /src/pdns/pdns/validate.cc:688,1
    - Dst: VLOG_NO_PREFIX
      Src: /src/pdns/pdns/validate.cc:692,1
    - Dst: VLOG_NO_PREFIX
      Src: /src/pdns/pdns/validate.cc:697,1
    - Dst: VLOG_NO_PREFIX
      Src: /src/pdns/pdns/validate.cc:701,1
    - Dst: getClosestEncloserFromNSEC
      Src: /src/pdns/pdns/validate.cc:702,1
    - Dst: VLOG_NO_PREFIX
      Src: /src/pdns/pdns/validate.cc:704,1
    - Dst: provesNoDataWildCard
      Src: /src/pdns/pdns/validate.cc:705,1
    - Dst: VLOG_NO_PREFIX
      Src: /src/pdns/pdns/validate.cc:710,1
    - Dst: provesNoWildCard
      Src: /src/pdns/pdns/validate.cc:711,1
    - Dst: VLOG
      Src: /src/pdns/pdns/validate.cc:716,1
    - Dst: VLOG
      Src: /src/pdns/pdns/validate.cc:720,1
    - Dst: QType
      Src: /src/pdns/pdns/validate.cc:720,1
    - Dst: auto::isSet
      Src: /src/pdns/pdns/validate.cc:720,1
    - Dst: VLOG
      Src: /src/pdns/pdns/validate.cc:725,1
    - Dst: getZoneRepresentation
      Src: /src/pdns/pdns/validate.cc:725,1
    - Dst: std::dynamic_pointer_cast<const NSEC3RecordContent>
      Src: /src/pdns/pdns/validate.cc:726,1
    - Dst: second::signatures::empty
      Src: /src/pdns/pdns/validate.cc:731,1
    - Dst: getSigner
      Src: /src/pdns/pdns/validate.cc:736,1
    - Dst: isPartOf
      Src: /src/pdns/pdns/validate.cc:737,1
    - Dst: VLOG
      Src: /src/pdns/pdns/validate.cc:738,1
    - Dst: std::min
      Src: /src/pdns/pdns/validate.cc:741,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/validate.cc:741,1
    - Dst: DNSName::countLabels
      Src: /src/pdns/pdns/validate.cc:741,1
    - Dst: isPartOf
      Src: /src/pdns/pdns/validate.cc:743,1
    - Dst: isRoot
      Src: /src/pdns/pdns/validate.cc:747,1
    - Dst: VLOG
      Src: /src/pdns/pdns/validate.cc:748,1
    - Dst: VLOG
      Src: /src/pdns/pdns/validate.cc:753,1
    - Dst: getHashFromNSEC3
      Src: /src/pdns/pdns/validate.cc:759,1
    - Dst: string::empty
      Src: /src/pdns/pdns/validate.cc:760,1
    - Dst: VLOG
      Src: /src/pdns/pdns/validate.cc:761,1
    - Dst: VLOG
      Src: /src/pdns/pdns/validate.cc:767,1
    - Dst: toBase32Hex
      Src: /src/pdns/pdns/validate.cc:767,1
    - Dst: fromBase32Hex
      Src: /src/pdns/pdns/validate.cc:768,1
    - Dst: getRawLabel
      Src: /src/pdns/pdns/validate.cc:768,1
    - Dst: DNSName::countLabels
      Src: /src/pdns/pdns/validate.cc:777,1
    - Dst: countLabels
      Src: /src/pdns/pdns/validate.cc:777,1
    - Dst: auto::isSet
      Src: /src/pdns/pdns/validate.cc:778,1
    - Dst: auto::isSet
      Src: /src/pdns/pdns/validate.cc:778,1
    - Dst: VLOG
      Src: /src/pdns/pdns/validate.cc:779,1
    - Dst: isNSEC3AncestorDelegation
      Src: /src/pdns/pdns/validate.cc:789,1
    - Dst: VLOG
      Src: /src/pdns/pdns/validate.cc:791,1
    - Dst: isTypeDenied
      Src: /src/pdns/pdns/validate.cc:795,1
    - Dst: QType
      Src: /src/pdns/pdns/validate.cc:795,1
    - Dst: VLOG
      Src: /src/pdns/pdns/validate.cc:796,1
    - Dst: QType
      Src: /src/pdns/pdns/validate.cc:796,1
    - Dst: VLOG
      Src: /src/pdns/pdns/validate.cc:800,1
    - Dst: QType
      Src: /src/pdns/pdns/validate.cc:800,1
    - Dst: auto::isSet
      Src: /src/pdns/pdns/validate.cc:810,1
    - Dst: VLOG
      Src: /src/pdns/pdns/validate.cc:811,1
    - Dst: VLOG
      Src: /src/pdns/pdns/validate.cc:834,1
    - Dst: DNSName::chopOff
      Src: /src/pdns/pdns/validate.cc:836,1
    - Dst: DNSName::countLabels
      Src: /src/pdns/pdns/validate.cc:836,1
    - Dst: VLOG
      Src: /src/pdns/pdns/validate.cc:842,1
    - Dst: getZoneRepresentation
      Src: /src/pdns/pdns/validate.cc:842,1
    - Dst: std::dynamic_pointer_cast<const NSEC3RecordContent>
      Src: /src/pdns/pdns/validate.cc:843,1
    - Dst: getSigner
      Src: /src/pdns/pdns/validate.cc:848,1
    - Dst: first::first::isPartOf
      Src: /src/pdns/pdns/validate.cc:849,1
    - Dst: VLOG
      Src: /src/pdns/pdns/validate.cc:850,1
    - Dst: DNSName::isPartOf
      Src: /src/pdns/pdns/validate.cc:854,1
    - Dst: VLOG
      Src: /src/pdns/pdns/validate.cc:859,1
    - Dst: getHashFromNSEC3
      Src: /src/pdns/pdns/validate.cc:865,1
    - Dst: string::empty
      Src: /src/pdns/pdns/validate.cc:866,1
    - Dst: VLOG
      Src: /src/pdns/pdns/validate.cc:867,1
    - Dst: fromBase32Hex
      Src: /src/pdns/pdns/validate.cc:871,1
    - Dst: first::first::getRawLabel
      Src: /src/pdns/pdns/validate.cc:871,1
    - Dst: VLOG
      Src: /src/pdns/pdns/validate.cc:873,1
    - Dst: toBase32Hex
      Src: /src/pdns/pdns/validate.cc:873,1
    - Dst: toBase32Hex
      Src: /src/pdns/pdns/validate.cc:873,1
    - Dst: isNSEC3AncestorDelegation
      Src: /src/pdns/pdns/validate.cc:876,1
    - Dst: VLOG
      Src: /src/pdns/pdns/validate.cc:877,1
    - Dst: VLOG
      Src: /src/pdns/pdns/validate.cc:881,1
    - Dst: auto::isSet
      Src: /src/pdns/pdns/validate.cc:884,1
    - Dst: VLOG
      Src: /src/pdns/pdns/validate.cc:894,1
    - Dst: DNSName::countLabels
      Src: /src/pdns/pdns/validate.cc:915,1
    - Dst: DNSName::chopOff
      Src: /src/pdns/pdns/validate.cc:917,1
    - Dst: countLabels
      Src: /src/pdns/pdns/validate.cc:929,1
    - Dst: DNSName::countLabels
      Src: /src/pdns/pdns/validate.cc:929,1
    - Dst: DNSName::prependRawLabel
      Src: /src/pdns/pdns/validate.cc:932,1
    - Dst: getRawLabel
      Src: /src/pdns/pdns/validate.cc:932,1
    - Dst: VLOG
      Src: /src/pdns/pdns/validate.cc:934,1
    - Dst: VLOG
      Src: /src/pdns/pdns/validate.cc:939,1
    - Dst: getZoneRepresentation
      Src: /src/pdns/pdns/validate.cc:939,1
    - Dst: std::dynamic_pointer_cast<const NSEC3RecordContent>
      Src: /src/pdns/pdns/validate.cc:940,1
    - Dst: VLOG
      Src: /src/pdns/pdns/validate.cc:946,1
    - Dst: getHashFromNSEC3
      Src: /src/pdns/pdns/validate.cc:952,1
    - Dst: string::empty
      Src: /src/pdns/pdns/validate.cc:953,1
    - Dst: VLOG
      Src: /src/pdns/pdns/validate.cc:954,1
    - Dst: getSigner
      Src: /src/pdns/pdns/validate.cc:958,1
    - Dst: first::first::isPartOf
      Src: /src/pdns/pdns/validate.cc:959,1
    - Dst: VLOG
      Src: /src/pdns/pdns/validate.cc:960,1
    - Dst: DNSName::isPartOf
      Src: /src/pdns/pdns/validate.cc:964,1
    - Dst: fromBase32Hex
      Src: /src/pdns/pdns/validate.cc:968,1
    - Dst: first::first::getRawLabel
      Src: /src/pdns/pdns/validate.cc:968,1
    - Dst: VLOG
      Src: /src/pdns/pdns/validate.cc:970,1
    - Dst: toBase32Hex
      Src: /src/pdns/pdns/validate.cc:970,1
    - Dst: toBase32Hex
      Src: /src/pdns/pdns/validate.cc:970,1
    - Dst: toBase32Hex
      Src: /src/pdns/pdns/validate.cc:970,1
    - Dst: isCoveredByNSEC3Hash
      Src: /src/pdns/pdns/validate.cc:971,1
    - Dst: VLOG
      Src: /src/pdns/pdns/validate.cc:972,1
    - Dst: QType
      Src: /src/pdns/pdns/validate.cc:972,1
    - Dst: auto::isOptOut
      Src: /src/pdns/pdns/validate.cc:975,1
    - Dst: VLOG_NO_PREFIX
      Src: /src/pdns/pdns/validate.cc:976,1
    - Dst: VLOG_NO_PREFIX
      Src: /src/pdns/pdns/validate.cc:980,1
    - Dst: VLOG
      Src: /src/pdns/pdns/validate.cc:983,1
    - Dst: toBase32Hex
      Src: /src/pdns/pdns/validate.cc:983,1
    - Dst: toBase32Hex
      Src: /src/pdns/pdns/validate.cc:983,1
    - Dst: provesNSEC3NoWildCard
      Src: /src/pdns/pdns/validate.cc:996,1
    - Dst: VLOG
      Src: /src/pdns/pdns/validate.cc:998,1
    - Dst: QType
      Src: /src/pdns/pdns/validate.cc:998,1
    CyclomaticComplexity: 126
    EdgeCount: 126
    ICount: 273
    argCount: 9
    argNames:
    - ' validrrsets'
    - ' qname'
    - qtype
    - referralToUnsigned
    - wantsNoDataProof
    - ' context'
    - ' log'
    - needWildcardProof
    - wildcardLabelsCount
    argTypes:
    - cspmap_t
    - DNSName
    - uint16_t
    - bool
    - bool
    - pdns::validation::ValidationContext
    - OptLog
    - bool
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1014
      start: 552
    functionDepth: 0
    functionLinenumber: 552
    functionLinenumberEnd: 1014
    functionName: getDenial
    functionSourceFile: /src/pdns/pdns/validate.cc
    functionUses: 0
    functionsReached:
    - getZoneRepresentation
    - second::signatures::empty
    - getSigner
    - PDNSException
    - std::dynamic_pointer_cast<const NSECRecordContent>
    - DNSName::trimToLabels
    - isRoot
    - auto::isSet
    - getNSECOwnerName
    - countLabels
    - isTypeDenied
    - DNSName::chopOff
    - string::empty
    - QType
    - first::first::isPartOf
    - DNSName::isRoot
    - isCoveredByNSEC
    - nsecProvesENT
    - DNSRecordContent::NumberToType
    - DNSName::isPartOf
    - fromBase32Hex
    - first::first::getRawLabel
    - auto::isOptOut
    - pdns::max
    - isPartOf
    - std::dynamic_pointer_cast<const NSEC3RecordContent>
    - DNSName::prependRawLabel
    - isWildcardExpandedOntoItself
    - static_cast<uint8_t>
    - getHashFromNSEC3
    - isNSEC3AncestorDelegation
    - provesNSEC3NoWildCard
    - isWildcardExpanded
    - provesNoWildCard
    - isNSECAncestorDelegation
    - VLOG
    - getRawLabel
    - DNSName::countLabels
    - std::min
    - provesNoDataWildCard
    - isCoveredByNSEC3Hash
    - VLOG_NO_PREFIX
    - getClosestEncloserFromNSEC
    - toBase32Hex
    - DNSName::DNSName
    linkageType: ''
    returnType: dState
    signature: dState getDenial(const cspmap_t& validrrsets, const DNSName& qname,
      const uint16_t qtype, bool referralToUnsigned, bool wantsNoDataProof, pdns::validation::ValidationContext&
      context, const OptLog& log, bool needWildcardProof, unsigned int wildcardLabelsCount)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: rfc1982LessThanOrEqual
      Src: /src/pdns/pdns/validate.cc:1020,1
    - Dst: static_cast<uint32_t>
      Src: /src/pdns/pdns/validate.cc:1020,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - now
    - ' sig'
    argTypes:
    - time_t
    - RRSIGRecordContent
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1021
      start: 1016
    functionDepth: 0
    functionLinenumber: 1016
    functionLinenumberEnd: 1021
    functionName: isRRSIGNotExpired
    functionSourceFile: /src/pdns/pdns/validate.cc
    functionUses: 0
    functionsReached:
    - rfc1982LessThanOrEqual
    - static_cast<uint32_t>
    linkageType: ''
    returnType: bool
    signature: bool isRRSIGNotExpired(const time_t now, const RRSIGRecordContent&
      sig)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: rfc1982LessThanOrEqual
      Src: /src/pdns/pdns/validate.cc:1027,1
    - Dst: static_cast<uint32_t>
      Src: /src/pdns/pdns/validate.cc:1027,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - now
    - ' sig'
    argTypes:
    - time_t
    - RRSIGRecordContent
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1028
      start: 1023
    functionDepth: 0
    functionLinenumber: 1023
    functionLinenumberEnd: 1028
    functionName: isRRSIGIncepted
    functionSourceFile: /src/pdns/pdns/validate.cc
    functionUses: 0
    functionsReached:
    - rfc1982LessThanOrEqual
    - static_cast<uint32_t>
    linkageType: ''
    returnType: bool
    signature: bool isRRSIGIncepted(const time_t now, const RRSIGRecordContent& sig)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: isRRSIGIncepted
      Src: /src/pdns/pdns/validate.cc:1039,1
    - Dst: isRRSIGNotExpired
      Src: /src/pdns/pdns/validate.cc:1042,1
    - Dst: VLOG
      Src: /src/pdns/pdns/validate.cc:1049,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 5
    argNames:
    - ' qname'
    - now
    - ' sig'
    - ' ede'
    - ' log'
    argTypes:
    - DNSName
    - time_t
    - RRSIGRecordContent
    - vState
    - OptLog
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1051
      start: 1032
    functionDepth: 0
    functionLinenumber: 1032
    functionLinenumberEnd: 1051
    functionName: checkSignatureInceptionAndExpiry
    functionSourceFile: /src/pdns/pdns/validate.cc
    functionUses: 0
    functionsReached:
    - isRRSIGNotExpired
    - isRRSIGIncepted
    - VLOG
    linkageType: ''
    returnType: bool
    signature: bool checkSignatureInceptionAndExpiry(const DNSName& qname, time_t
      now, const RRSIGRecordContent& sig, vState& ede, const OptLog& log)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DNSCryptoKeyEngine::makeFromPublicKeyString
      Src: /src/pdns/pdns/validate.cc:1057,1
    - Dst: withName
      Src: /src/pdns/pdns/validate.cc:1057,1
    - Dst: auto::verify
      Src: /src/pdns/pdns/validate.cc:1058,1
    - Dst: VLOG
      Src: /src/pdns/pdns/validate.cc:1059,1
    - Dst: DNSSEC::algorithm2name
      Src: /src/pdns/pdns/validate.cc:1059,1
    - Dst: VLOG
      Src: /src/pdns/pdns/validate.cc:1065,1
    - Dst: what
      Src: /src/pdns/pdns/validate.cc:1065,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 6
    argNames:
    - ' qname'
    - ' sig'
    - ' key'
    - ' msg'
    - ' ede'
    - ' log'
    argTypes:
    - DNSName
    - RRSIGRecordContent
    - DNSKEYRecordContent
    - std::string
    - vState
    - OptLog
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1069
      start: 1053
    functionDepth: 0
    functionLinenumber: 1053
    functionLinenumberEnd: 1069
    functionName: checkSignatureWithKey
    functionSourceFile: /src/pdns/pdns/validate.cc
    functionUses: 0
    functionsReached:
    - withName
    - what
    - auto::verify
    - DNSSEC::algorithm2name
    - VLOG
    - DNSCryptoKeyEngine::makeFromPublicKeyString
    linkageType: ''
    returnType: bool
    signature: bool checkSignatureWithKey(const DNSName& qname, const RRSIGRecordContent&
      sig, const DNSKEYRecordContent& key, const std::string& msg, vState& ede, const
      OptLog& log)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: isRRSIGIncepted
      Src: /src/pdns/pdns/validate.cc:1039,1
    - Dst: isRRSIGNotExpired
      Src: /src/pdns/pdns/validate.cc:1042,1
    - Dst: VLOG
      Src: /src/pdns/pdns/validate.cc:1049,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 5
    argNames:
    - ' qname'
    - now
    - ' sig'
    - ' ede'
    - ' log'
    argTypes:
    - DNSName
    - time_t
    - RRSIGRecordContent
    - vState
    - OptLog
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1051
      start: 1032
    functionDepth: 0
    functionLinenumber: 1032
    functionLinenumberEnd: 1051
    functionName: checkSignatureInceptionAndExpiry
    functionSourceFile: /src/pdns/pdns/validate.cc
    functionUses: 0
    functionsReached:
    - isRRSIGNotExpired
    - isRRSIGIncepted
    - VLOG
    linkageType: ''
    returnType: bool
    signature: bool checkSignatureInceptionAndExpiry(const DNSName& qname, time_t
      now, const RRSIGRecordContent& sig, vState& ede, const OptLog& log)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DNSCryptoKeyEngine::makeFromPublicKeyString
      Src: /src/pdns/pdns/validate.cc:1057,1
    - Dst: withName
      Src: /src/pdns/pdns/validate.cc:1057,1
    - Dst: auto::verify
      Src: /src/pdns/pdns/validate.cc:1058,1
    - Dst: VLOG
      Src: /src/pdns/pdns/validate.cc:1059,1
    - Dst: DNSSEC::algorithm2name
      Src: /src/pdns/pdns/validate.cc:1059,1
    - Dst: VLOG
      Src: /src/pdns/pdns/validate.cc:1065,1
    - Dst: what
      Src: /src/pdns/pdns/validate.cc:1065,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 6
    argNames:
    - ' qname'
    - ' sig'
    - ' key'
    - ' msg'
    - ' ede'
    - ' log'
    argTypes:
    - DNSName
    - RRSIGRecordContent
    - DNSKEYRecordContent
    - std::string
    - vState
    - OptLog
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1069
      start: 1053
    functionDepth: 0
    functionLinenumber: 1053
    functionLinenumberEnd: 1069
    functionName: checkSignatureWithKey
    functionSourceFile: /src/pdns/pdns/validate.cc
    functionUses: 0
    functionsReached:
    - withName
    - what
    - auto::verify
    - DNSSEC::algorithm2name
    - VLOG
    - DNSCryptoKeyEngine::makeFromPublicKeyString
    linkageType: ''
    returnType: bool
    signature: bool checkSignatureWithKey(const DNSName& qname, const RRSIGRecordContent&
      sig, const DNSKEYRecordContent& key, const std::string& msg, vState& ede, const
      OptLog& log)
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: countLabels
      Src: /src/pdns/pdns/validate.cc:1082,1
    - Dst: VLOG
      Src: /src/pdns/pdns/validate.cc:1084,1
    - Dst: DNSCryptoKeyEngine::isAlgorithmSupported
      Src: /src/pdns/pdns/validate.cc:1089,1
    - Dst: checkSignatureInceptionAndExpiry
      Src: /src/pdns/pdns/validate.cc:1092,1
    - Dst: isRRSIGIncepted
      Src: /src/pdns/pdns/validate.cc:1093,1
    - Dst: isRRSIGNotExpired
      Src: /src/pdns/pdns/validate.cc:1096,1
    - Dst: VLOG
      Src: /src/pdns/pdns/validate.cc:1103,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/validate.cc:1103,1
    - Dst: addS
      Src: /src/pdns/pdns/validate.cc:1103,1
    - Dst: getByTag
      Src: /src/pdns/pdns/validate.cc:1111,1
    - Dst: auto::empty
      Src: /src/pdns/pdns/validate.cc:1113,1
    - Dst: VLOG
      Src: /src/pdns/pdns/validate.cc:1114,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/validate.cc:1114,1
    - Dst: getMessageForRRSET
      Src: /src/pdns/pdns/validate.cc:1119,1
    - Dst: VLOG
      Src: /src/pdns/pdns/validate.cc:1123,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/validate.cc:1123,1
    - Dst: addS
      Src: /src/pdns/pdns/validate.cc:1123,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/validate.cc:1123,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/validate.cc:1123,1
    - Dst: checkSignatureWithKey
      Src: /src/pdns/pdns/validate.cc:1131,1
    - Dst: VLOG
      Src: /src/pdns/pdns/validate.cc:1135,1
    - Dst: DNSRecordContent::NumberToType
      Src: /src/pdns/pdns/validate.cc:1135,1
    - Dst: VLOG
      Src: /src/pdns/pdns/validate.cc:1140,1
    - Dst: isRRSIGIncepted
      Src: /src/pdns/pdns/validate.cc:1141,1
    - Dst: isRRSIGNotExpired
      Src: /src/pdns/pdns/validate.cc:1144,1
    CyclomaticComplexity: 27
    EdgeCount: 27
    ICount: 67
    argCount: 8
    argNames:
    - now
    - ' name'
    - ' toSign'
    - ' signatures'
    - ' keys'
    - ' log'
    - ' context'
    - validateAllSigs
    argTypes:
    - time_t
    - DNSName
    - sortedRecords_t
    - vector<shared_ptr<const RRSIGRecordContent>>
    - skeyset_t
    - OptLog
    - pdns::validation::ValidationContext
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1171
      start: 1073
    functionDepth: 0
    functionLinenumber: 1073
    functionLinenumberEnd: 1171
    functionName: validateWithKeySet
    functionSourceFile: /src/pdns/pdns/validate.cc
    functionUses: 0
    functionsReached:
    - DNSCryptoKeyEngine::isAlgorithmSupported
    - countLabels
    - isRRSIGNotExpired
    - addS
    - std::to_string
    - getMessageForRRSET
    - isRRSIGIncepted
    - DNSRecordContent::NumberToType
    - checkSignatureInceptionAndExpiry
    - getByTag
    - VLOG
    - checkSignatureWithKey
    - auto::empty
    linkageType: ''
    returnType: vState
    signature: vState validateWithKeySet(time_t now, const DNSName& name, const sortedRecords_t&
      toSign, const vector<shared_ptr<const RRSIGRecordContent>>& signatures, const
      skeyset_t& keys, const OptLog& log, pdns::validation::ValidationContext& context,
      bool validateAllSigs)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: find
      Src: /src/pdns/pdns/validate.cc:1175,1
    - Dst: cend
      Src: /src/pdns/pdns/validate.cc:1177,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - ' anchors'
    - ' zone'
    - ' res'
    argTypes:
    - map<DNSName, dsset_t>
    - DNSName
    - dsset_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1183
      start: 1173
    functionDepth: 0
    functionLinenumber: 1173
    functionLinenumberEnd: 1183
    functionName: getTrustAnchor
    functionSourceFile: /src/pdns/pdns/validate.cc
    functionUses: 0
    functionsReached:
    - cend
    - find
    linkageType: ''
    returnType: bool
    signature: bool getTrustAnchor(const map<DNSName, dsset_t>& anchors, const DNSName&
      zone, dsset_t& res)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: find
      Src: /src/pdns/pdns/validate.cc:1187,1
    - Dst: cend
      Src: /src/pdns/pdns/validate.cc:1189,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - ' negAnchors'
    - ' zone'
    - ' reason'
    argTypes:
    - map<DNSName, std::string>
    - DNSName
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1195
      start: 1185
    functionDepth: 0
    functionLinenumber: 1185
    functionLinenumberEnd: 1195
    functionName: haveNegativeTrustAnchor
    functionSourceFile: /src/pdns/pdns/validate.cc
    functionUses: 0
    functionsReached:
    - cend
    - find
    linkageType: ''
    returnType: bool
    signature: bool haveNegativeTrustAnchor(const map<DNSName, std::string>& negAnchors,
      const DNSName& zone, std::string& reason)
  - BBCount: 25
    BranchProfiles: []
    Callsites:
    - Dst: VLOG
      Src: /src/pdns/pdns/validate.cc:1206,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/validate.cc:1206,1
    - Dst: addS
      Src: /src/pdns/pdns/validate.cc:1206,1
    - Dst: getByTag
      Src: /src/pdns/pdns/validate.cc:1212,1
    - Dst: withName
      Src: /src/pdns/pdns/validate.cc:1215,1
    - Dst: DSRecordContent::DSRecordContent
      Src: /src/pdns/pdns/validate.cc:1219,1
    - Dst: VLOG
      Src: /src/pdns/pdns/validate.cc:1222,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/validate.cc:1222,1
    - Dst: addS
      Src: /src/pdns/pdns/validate.cc:1222,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/validate.cc:1222,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/validate.cc:1222,1
    - Dst: makeDSFromDNSKey
      Src: /src/pdns/pdns/validate.cc:1232,1
    - Dst: dsrc
      Src: /src/pdns/pdns/validate.cc:1234,1
    - Dst: VLOG
      Src: /src/pdns/pdns/validate.cc:1237,1
    - Dst: what
      Src: /src/pdns/pdns/validate.cc:1237,1
    - Dst: VLOG
      Src: /src/pdns/pdns/validate.cc:1241,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/validate.cc:1241,1
    - Dst: insert
      Src: /src/pdns/pdns/validate.cc:1243,1
    - Dst: VLOG
      Src: /src/pdns/pdns/validate.cc:1247,1
    - Dst: getZoneRepresentation
      Src: /src/pdns/pdns/validate.cc:1247,1
    - Dst: DSRecordContent::getZoneRepresentation
      Src: /src/pdns/pdns/validate.cc:1247,1
    - Dst: empty
      Src: /src/pdns/pdns/validate.cc:1258,1
    - Dst: size
      Src: /src/pdns/pdns/validate.cc:1258,1
    - Dst: size
      Src: /src/pdns/pdns/validate.cc:1258,1
    - Dst: DNSCryptoKeyEngine::isAlgorithmSupported
      Src: /src/pdns/pdns/validate.cc:1265,1
    - Dst: checkSignatureInceptionAndExpiry
      Src: /src/pdns/pdns/validate.cc:1268,1
    - Dst: getByTag
      Src: /src/pdns/pdns/validate.cc:1273,1
    - Dst: auto::empty
      Src: /src/pdns/pdns/validate.cc:1275,1
    - Dst: VLOG
      Src: /src/pdns/pdns/validate.cc:1280,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/validate.cc:1280,1
    - Dst: addS
      Src: /src/pdns/pdns/validate.cc:1280,1
    - Dst: getMessageForRRSET
      Src: /src/pdns/pdns/validate.cc:1286,1
    - Dst: VLOG
      Src: /src/pdns/pdns/validate.cc:1290,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/validate.cc:1290,1
    - Dst: addS
      Src: /src/pdns/pdns/validate.cc:1290,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/validate.cc:1290,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/validate.cc:1290,1
    - Dst: VLOG
      Src: /src/pdns/pdns/validate.cc:1297,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/validate.cc:1297,1
    - Dst: addS
      Src: /src/pdns/pdns/validate.cc:1297,1
    - Dst: checkSignatureWithKey
      Src: /src/pdns/pdns/validate.cc:1303,1
    - Dst: VLOG
      Src: /src/pdns/pdns/validate.cc:1308,1
    - Dst: VLOG
      Src: /src/pdns/pdns/validate.cc:1312,1
    - Dst: size
      Src: /src/pdns/pdns/validate.cc:1315,1
    - Dst: size
      Src: /src/pdns/pdns/validate.cc:1315,1
    - Dst: size
      Src: /src/pdns/pdns/validate.cc:1323,1
    - Dst: size
      Src: /src/pdns/pdns/validate.cc:1323,1
    - Dst: DNSCryptoKeyEngine::isAlgorithmSupported
      Src: /src/pdns/pdns/validate.cc:1329,1
    - Dst: DNSCryptoKeyEngine::isDigestSupported
      Src: /src/pdns/pdns/validate.cc:1331,1
    - Dst: isAZoneKey
      Src: /src/pdns/pdns/validate.cc:1349,1
    - Dst: isRevokedKey
      Src: /src/pdns/pdns/validate.cc:1354,1
    CyclomaticComplexity: 46
    EdgeCount: 46
    ICount: 108
    argCount: 9
    argNames:
    - now
    - ' zone'
    - ' dsset'
    - ' tkeys'
    - ' toSign'
    - ' sigs'
    - ' validkeys'
    - ' log'
    - ' context'
    argTypes:
    - time_t
    - DNSName
    - dsset_t
    - skeyset_t
    - sortedRecords_t
    - vector<shared_ptr<const RRSIGRecordContent>>
    - skeyset_t
    - OptLog
    - pdns::validation::ValidationContext
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1379
      start: 1197
    functionDepth: 1
    functionLinenumber: 1197
    functionLinenumberEnd: 1379
    functionName: validateDNSKeysAgainstDS
    functionSourceFile: /src/pdns/pdns/validate.cc
    functionUses: 0
    functionsReached:
    - getZoneRepresentation
    - addS
    - std::to_string
    - withName
    - DSRecordContent::DSRecordContent
    - insert
    - checkSignatureWithKey
    - DNSCryptoKeyEngine::isAlgorithmSupported
    - size
    - checkSignatureInceptionAndExpiry
    - empty
    - isRevokedKey
    - isAZoneKey
    - dsrc
    - DSRecordContent::getZoneRepresentation
    - makeDSFromDNSKey
    - getByTag
    - VLOG
    - getMessageForRRSET
    - what
    - DNSCryptoKeyEngine::isDigestSupported
    - auto::empty
    linkageType: ''
    returnType: vState
    signature: vState validateDNSKeysAgainstDS(time_t now, const DNSName& zone, const
      dsset_t& dsset, const skeyset_t& tkeys, const sortedRecords_t& toSign, const
      vector<shared_ptr<const RRSIGRecordContent>>& sigs, skeyset_t& validkeys, const
      OptLog& log, pdns::validation::ValidationContext& context)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: DNSCryptoKeyEngine::isAlgorithmSupported
      Src: /src/pdns/pdns/validate.cc:1383,1
    - Dst: VLOG
      Src: /src/pdns/pdns/validate.cc:1384,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/validate.cc:1384,1
    - Dst: DNSCryptoKeyEngine::isDigestSupported
      Src: /src/pdns/pdns/validate.cc:1388,1
    - Dst: VLOG
      Src: /src/pdns/pdns/validate.cc:1389,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/validate.cc:1389,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - ' dsrec'
    - ' log'
    argTypes:
    - DSRecordContent
    - OptLog
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1394
      start: 1381
    functionDepth: 0
    functionLinenumber: 1381
    functionLinenumberEnd: 1394
    functionName: isSupportedDS
    functionSourceFile: /src/pdns/pdns/validate.cc
    functionUses: 0
    functionsReached:
    - DNSCryptoKeyEngine::isAlgorithmSupported
    - VLOG
    - std::to_string
    - DNSCryptoKeyEngine::isDigestSupported
    linkageType: ''
    returnType: bool
    signature: bool isSupportedDS(const DSRecordContent& dsrec, const OptLog& log)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - ' signatures'
    argTypes:
    - std::vector<std::shared_ptr<const RRSIGRecordContent>>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1405
      start: 1396
    functionDepth: 0
    functionLinenumber: 1396
    functionLinenumberEnd: 1405
    functionName: getSigner
    functionSourceFile: /src/pdns/pdns/validate.cc
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: DNSName
    signature: DNSName getSigner(const std::vector<std::shared_ptr<const RRSIGRecordContent>>&
      signatures)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::vector::at
      Src: /src/pdns/pdns/validate.cc:1410,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/validate.cc:1410,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - state
    argTypes:
    - vState
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1411
      start: 1407
    functionDepth: 0
    functionLinenumber: 1407
    functionLinenumberEnd: 1411
    functionName: vStateToString
    functionSourceFile: /src/pdns/pdns/validate.cc
    functionUses: 0
    functionsReached:
    - static_cast<size_t>
    - std::vector::at
    linkageType: ''
    returnType: std::string
    signature: std::string & vStateToString(vState state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vStateToString
      Src: /src/pdns/pdns/validate.cc:1415,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ' ostr'
    - dstate
    argTypes:
    - std::ostream
    - vState
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1417
      start: 1413
    functionDepth: 0
    functionLinenumber: 1413
    functionLinenumberEnd: 1417
    functionName: '& operator<<(std::ostream& ostr, const vState dstate)'
    functionSourceFile: /src/pdns/pdns/validate.cc
    functionUses: 0
    functionsReached:
    - vStateToString
    linkageType: ''
    returnType: std::ostream
    signature: std::ostream & operator<<(std::ostream& ostr, const vState dstate)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::vector::at
      Src: /src/pdns/pdns/validate.cc:1422,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/validate.cc:1422,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ' ostr'
    - dstate
    argTypes:
    - std::ostream
    - dState
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1424
      start: 1419
    functionDepth: 0
    functionLinenumber: 1419
    functionLinenumberEnd: 1424
    functionName: '& operator<<(std::ostream& ostr, const dState dstate)'
    functionSourceFile: /src/pdns/pdns/validate.cc
    functionUses: 0
    functionsReached:
    - static_cast<size_t>
    - std::vector::at
    linkageType: ''
    returnType: std::ostream
    signature: std::ostream & operator<<(std::ostream& ostr, const dState dstate)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: vStateIsBogus
      Src: /src/pdns/pdns/validate.cc:1434,1
    - Dst: vStateIsBogus
      Src: /src/pdns/pdns/validate.cc:1438,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 2
    argNames:
    - ' state'
    - stateUpdate
    argTypes:
    - vState
    - vState
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1442
      start: 1426
    functionDepth: 0
    functionLinenumber: 1426
    functionLinenumberEnd: 1442
    functionName: updateDNSSECValidationState
    functionSourceFile: /src/pdns/pdns/validate.cc
    functionUses: 0
    functionsReached:
    - vStateIsBogus
    linkageType: ''
    returnType: void
    signature: void updateDNSSECValidationState(vState& state, const vState stateUpdate)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/channel.cc:29,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 1
    argNames:
    - ' descriptor'
    argTypes:
    - FDWrapper
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 31
      start: 28
    functionDepth: 0
    functionLinenumber: 28
    functionLinenumberEnd: 31
    functionName: pdns::channel::Notifier::Notifier
    functionSourceFile: /src/pdns/pdns/channel.cc
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void Notifier::Notifier(FDWrapper&& descriptor)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: write
      Src: /src/pdns/pdns/channel.cc:37,1
    - Dst: getHandle
      Src: /src/pdns/pdns/channel.cc:37,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/channel.cc:39,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/channel.cc:48,1
    - Dst: stringerror
      Src: /src/pdns/pdns/channel.cc:48,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 33
    functionDepth: 0
    functionLinenumber: 33
    functionLinenumberEnd: 52
    functionName: pdns::channel::Notifier::notify
    functionSourceFile: /src/pdns/pdns/channel.cc
    functionUses: 9
    functionsReached:
    - stringerror
    - write
    - getHandle
    - std::runtime_error
    linkageType: ''
    returnType: bool
    signature: bool Notifier::notify() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/channel.cc:55,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - ' descriptor'
    - throwOnEOF
    argTypes:
    - FDWrapper
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 54
    functionDepth: 0
    functionLinenumber: 54
    functionLinenumberEnd: 57
    functionName: pdns::channel::Waiter::Waiter
    functionSourceFile: /src/pdns/pdns/channel.cc
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void Waiter::Waiter(FDWrapper&& descriptor, bool throwOnEOF)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: read
      Src: /src/pdns/pdns/channel.cc:64,1
    - Dst: getHandle
      Src: /src/pdns/pdns/channel.cc:64,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/channel.cc:70,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/channel.cc:79,1
    - Dst: stringerror
      Src: /src/pdns/pdns/channel.cc:79,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 20
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 59
    functionDepth: 0
    functionLinenumber: 59
    functionLinenumberEnd: 82
    functionName: pdns::channel::Waiter::clear
    functionSourceFile: /src/pdns/pdns/channel.cc
    functionUses: 0
    functionsReached:
    - stringerror
    - getHandle
    - read
    - std::runtime_error
    linkageType: ''
    returnType: void
    signature: void Waiter::clear()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getHandle
      Src: /src/pdns/pdns/channel.cc:86,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 84
    functionDepth: 0
    functionLinenumber: 84
    functionLinenumberEnd: 87
    functionName: pdns::channel::Waiter::getDescriptor
    functionSourceFile: /src/pdns/pdns/channel.cc
    functionUses: 0
    functionsReached:
    - getHandle
    linkageType: ''
    returnType: int
    signature: int Waiter::getDescriptor() const
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pipe
      Src: /src/pdns/pdns/channel.cc:92,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/channel.cc:92,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/channel.cc:93,1
    - Dst: stringerror
      Src: /src/pdns/pdns/channel.cc:93,1
    - Dst: setNonBlocking
      Src: /src/pdns/pdns/channel.cc:99,1
    - Dst: FDWrapper::getHandle
      Src: /src/pdns/pdns/channel.cc:99,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/channel.cc:101,1
    - Dst: stringerror
      Src: /src/pdns/pdns/channel.cc:101,1
    - Dst: setNonBlocking
      Src: /src/pdns/pdns/channel.cc:104,1
    - Dst: FDWrapper::getHandle
      Src: /src/pdns/pdns/channel.cc:104,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/channel.cc:106,1
    - Dst: stringerror
      Src: /src/pdns/pdns/channel.cc:106,1
    - Dst: getPipeBufferSize
      Src: /src/pdns/pdns/channel.cc:109,1
    - Dst: FDWrapper::getHandle
      Src: /src/pdns/pdns/channel.cc:109,1
    - Dst: setPipeBufferSize
      Src: /src/pdns/pdns/channel.cc:110,1
    - Dst: FDWrapper::getHandle
      Src: /src/pdns/pdns/channel.cc:110,1
    - Dst: Notifier
      Src: /src/pdns/pdns/channel.cc:113,1
    - Dst: std::move
      Src: /src/pdns/pdns/channel.cc:113,1
    - Dst: Waiter
      Src: /src/pdns/pdns/channel.cc:113,1
    - Dst: std::move
      Src: /src/pdns/pdns/channel.cc:113,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 14
    argCount: 3
    argNames:
    - nonBlocking
    - pipeBufferSize
    - throwOnEOF
    argTypes:
    - bool
    - size_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 89
    functionDepth: 0
    functionLinenumber: 89
    functionLinenumberEnd: 114
    functionName: pdns::channel::createNotificationQueue
    functionSourceFile: /src/pdns/pdns/channel.cc
    functionUses: 0
    functionsReached:
    - std::move
    - Notifier
    - FDWrapper::getHandle
    - std::runtime_error
    - setNonBlocking
    - stringerror
    - Waiter
    - pipe
    - setPipeBufferSize
    - getPipeBufferSize
    - std::array::data
    linkageType: ''
    returnType: std::pair<Notifier, Waiter>
    signature: std::pair<Notifier, Waiter> createNotificationQueue(bool nonBlocking,
      size_t pipeBufferSize, bool throwOnEOF)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/channel.cc:29,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 1
    argNames:
    - ' descriptor'
    argTypes:
    - FDWrapper
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 31
      start: 28
    functionDepth: 0
    functionLinenumber: 28
    functionLinenumberEnd: 31
    functionName: pdns::channel::Notifier::Notifier
    functionSourceFile: /src/pdns/pdns/channel.cc
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void Notifier::Notifier(FDWrapper&& descriptor)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: write
      Src: /src/pdns/pdns/channel.cc:37,1
    - Dst: getHandle
      Src: /src/pdns/pdns/channel.cc:37,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/channel.cc:39,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/channel.cc:48,1
    - Dst: stringerror
      Src: /src/pdns/pdns/channel.cc:48,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 33
    functionDepth: 0
    functionLinenumber: 33
    functionLinenumberEnd: 52
    functionName: pdns::channel::Notifier::notify
    functionSourceFile: /src/pdns/pdns/channel.cc
    functionUses: 9
    functionsReached:
    - stringerror
    - write
    - getHandle
    - std::runtime_error
    linkageType: ''
    returnType: bool
    signature: bool Notifier::notify() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/channel.cc:55,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - ' descriptor'
    - throwOnEOF
    argTypes:
    - FDWrapper
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 54
    functionDepth: 0
    functionLinenumber: 54
    functionLinenumberEnd: 57
    functionName: pdns::channel::Waiter::Waiter
    functionSourceFile: /src/pdns/pdns/channel.cc
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void Waiter::Waiter(FDWrapper&& descriptor, bool throwOnEOF)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: read
      Src: /src/pdns/pdns/channel.cc:64,1
    - Dst: getHandle
      Src: /src/pdns/pdns/channel.cc:64,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/channel.cc:70,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/channel.cc:79,1
    - Dst: stringerror
      Src: /src/pdns/pdns/channel.cc:79,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 20
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 59
    functionDepth: 0
    functionLinenumber: 59
    functionLinenumberEnd: 82
    functionName: pdns::channel::Waiter::clear
    functionSourceFile: /src/pdns/pdns/channel.cc
    functionUses: 0
    functionsReached:
    - stringerror
    - getHandle
    - read
    - std::runtime_error
    linkageType: ''
    returnType: void
    signature: void Waiter::clear()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getHandle
      Src: /src/pdns/pdns/channel.cc:86,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 84
    functionDepth: 0
    functionLinenumber: 84
    functionLinenumberEnd: 87
    functionName: pdns::channel::Waiter::getDescriptor
    functionSourceFile: /src/pdns/pdns/channel.cc
    functionUses: 0
    functionsReached:
    - getHandle
    linkageType: ''
    returnType: int
    signature: int Waiter::getDescriptor() const
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pipe
      Src: /src/pdns/pdns/channel.cc:92,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/channel.cc:92,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/channel.cc:93,1
    - Dst: stringerror
      Src: /src/pdns/pdns/channel.cc:93,1
    - Dst: setNonBlocking
      Src: /src/pdns/pdns/channel.cc:99,1
    - Dst: FDWrapper::getHandle
      Src: /src/pdns/pdns/channel.cc:99,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/channel.cc:101,1
    - Dst: stringerror
      Src: /src/pdns/pdns/channel.cc:101,1
    - Dst: setNonBlocking
      Src: /src/pdns/pdns/channel.cc:104,1
    - Dst: FDWrapper::getHandle
      Src: /src/pdns/pdns/channel.cc:104,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/channel.cc:106,1
    - Dst: stringerror
      Src: /src/pdns/pdns/channel.cc:106,1
    - Dst: getPipeBufferSize
      Src: /src/pdns/pdns/channel.cc:109,1
    - Dst: FDWrapper::getHandle
      Src: /src/pdns/pdns/channel.cc:109,1
    - Dst: setPipeBufferSize
      Src: /src/pdns/pdns/channel.cc:110,1
    - Dst: FDWrapper::getHandle
      Src: /src/pdns/pdns/channel.cc:110,1
    - Dst: Notifier
      Src: /src/pdns/pdns/channel.cc:113,1
    - Dst: std::move
      Src: /src/pdns/pdns/channel.cc:113,1
    - Dst: Waiter
      Src: /src/pdns/pdns/channel.cc:113,1
    - Dst: std::move
      Src: /src/pdns/pdns/channel.cc:113,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 14
    argCount: 3
    argNames:
    - nonBlocking
    - pipeBufferSize
    - throwOnEOF
    argTypes:
    - bool
    - size_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 89
    functionDepth: 0
    functionLinenumber: 89
    functionLinenumberEnd: 114
    functionName: pdns::channel::createNotificationQueue
    functionSourceFile: /src/pdns/pdns/channel.cc
    functionUses: 0
    functionsReached:
    - std::move
    - Notifier
    - FDWrapper::getHandle
    - std::runtime_error
    - setNonBlocking
    - stringerror
    - Waiter
    - pipe
    - setPipeBufferSize
    - getPipeBufferSize
    - std::array::data
    linkageType: ''
    returnType: std::pair<Notifier, Waiter>
    signature: std::pair<Notifier, Waiter> createNotificationQueue(bool nonBlocking,
      size_t pipeBufferSize, bool throwOnEOF)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: socket
      Src: /src/pdns/pdns/comfun.cc:70,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/comfun.cc:72,1
    - Dst: stringerror
      Src: /src/pdns/pdns/comfun.cc:72,1
    - Dst: setsockopt
      Src: /src/pdns/pdns/comfun.cc:75,1
    - Dst: stringerror
      Src: /src/pdns/pdns/comfun.cc:76,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/comfun.cc:78,1
    - Dst: push_back
      Src: /src/pdns/pdns/comfun.cc:79,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 1
    argNames:
    - ' res'
    argTypes:
    - map<ComboAddress, namecount, ComboAddress::addressOnlyLessThan>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 68
    functionDepth: 0
    functionLinenumber: 68
    functionLinenumberEnd: 80
    functionName: SendReceive
    functionSourceFile: /src/pdns/pdns/comfun.cc
    functionUses: 0
    functionsReached:
    - socket
    - pdns::max
    - push_back
    - stringerror
    - runtime_error
    - setsockopt
    linkageType: ''
    returnType: void
    signature: void SendReceive(map<ComboAddress, namecount, ComboAddress::addressOnlyLessThan>&
      res)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: close
      Src: /src/pdns/pdns/comfun.cc:84,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 82
    functionDepth: 0
    functionLinenumber: 82
    functionLinenumberEnd: 85
    functionName: ~SendReceive()
    functionSourceFile: /src/pdns/pdns/comfun.cc
    functionUses: 0
    functionsReached:
    - close
    linkageType: ''
    returnType: void
    signature: void ~SendReceive()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/comfun.cc:96,1
    - Dst: exit
      Src: /src/pdns/pdns/comfun.cc:98,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/comfun.cc:100,1
    - Dst: front
      Src: /src/pdns/pdns/comfun.cc:100,1
    - Dst: pop_front
      Src: /src/pdns/pdns/comfun.cc:101,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/comfun.cc:102,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/comfun.cc:103,1
    - Dst: asendto
      Src: /src/pdns/pdns/comfun.cc:105,1
    - Dst: vector::begin
      Src: /src/pdns/pdns/comfun.cc:105,1
    - Dst: vector::size
      Src: /src/pdns/pdns/comfun.cc:105,1
    - Dst: a::getSocklen
      Src: /src/pdns/pdns/comfun.cc:105,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/comfun.cc:108,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 1
    argNames:
    - ' domain'
    argTypes:
    - NSQuery
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 87
    functionDepth: 1
    functionLinenumber: 87
    functionLinenumberEnd: 109
    functionName: send
    functionSourceFile: /src/pdns/pdns/comfun.cc
    functionUses: 19
    functionsReached:
    - vector::begin
    - asendto
    - vector::size
    - DNSPacketWriter::getHeader
    - a::getSocklen
    - pop_front
    - empty
    - exit
    - front
    linkageType: ''
    returnType: Identifier
    signature: Identifier send(NSQuery& domain)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: waitForData
      Src: /src/pdns/pdns/comfun.cc:113,1
    - Dst: ComboAddress::getSocklen
      Src: /src/pdns/pdns/comfun.cc:117,1
    - Dst: recvfrom
      Src: /src/pdns/pdns/comfun.cc:118,1
    - Dst: string
      Src: /src/pdns/pdns/comfun.cc:128,1
    - Dst: DNSRecordContent::NumberToType
      Src: /src/pdns/pdns/comfun.cc:130,1
    - Dst: push_back
      Src: /src/pdns/pdns/comfun.cc:135,1
    - Dst: content::clear
      Src: /src/pdns/pdns/comfun.cc:137,1
    - Dst: first::d_content::getZoneRepresentation
      Src: /src/pdns/pdns/comfun.cc:141,1
    - Dst: content::empty
      Src: /src/pdns/pdns/comfun.cc:145,1
    - Dst: RCode::to_s
      Src: /src/pdns/pdns/comfun.cc:146,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 29
    argCount: 2
    argNames:
    - ' id'
    - ' dr'
    argTypes:
    - Identifier
    - DNSResult
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 150
      start: 111
    functionDepth: 1
    functionLinenumber: 111
    functionLinenumberEnd: 150
    functionName: receive
    functionSourceFile: /src/pdns/pdns/comfun.cc
    functionUses: 8
    functionsReached:
    - content::empty
    - first::d_content::getZoneRepresentation
    - push_back
    - string
    - recvfrom
    - waitForData
    - content::clear
    - DNSRecordContent::NumberToType
    - RCode::to_s
    - ComboAddress::getSocklen
    linkageType: ''
    returnType: bool
    signature: bool receive(Identifier& id, DNSResult& dr)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: push_back
      Src: /src/pdns/pdns/comfun.cc:157,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ' id'
    argTypes:
    - Identifier
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 158
      start: 152
    functionDepth: 0
    functionLinenumber: 152
    functionLinenumberEnd: 158
    functionName: deliverTimeout
    functionSourceFile: /src/pdns/pdns/comfun.cc
    functionUses: 1
    functionsReached:
    - push_back
    linkageType: ''
    returnType: void
    signature: void deliverTimeout(const Identifier& id)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: a::toString
      Src: /src/pdns/pdns/comfun.cc:162,1
    - Dst: toLower
      Src: /src/pdns/pdns/comfun.cc:167,1
    - Dst: find
      Src: /src/pdns/pdns/comfun.cc:168,1
    - Dst: a::toString
      Src: /src/pdns/pdns/comfun.cc:170,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 12
    argCount: 3
    argNames:
    - ' domain'
    - ' dr'
    - usec
    argTypes:
    - NSQuery
    - DNSResult
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 179
      start: 160
    functionDepth: 0
    functionLinenumber: 160
    functionLinenumberEnd: 179
    functionName: deliverAnswer
    functionSourceFile: /src/pdns/pdns/comfun.cc
    functionUses: 1
    functionsReached:
    - a::toString
    - toLower
    - find
    linkageType: ''
    returnType: void
    signature: void deliverAnswer(NSQuery& domain, const DNSResult& dr, unsigned int
      usec)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: socket
      Src: /src/pdns/pdns/comfun.cc:203,1
    - Dst: setsockopt
      Src: /src/pdns/pdns/comfun.cc:206,1
    - Dst: stringerror
      Src: /src/pdns/pdns/comfun.cc:207,1
    - Dst: connect
      Src: /src/pdns/pdns/comfun.cc:208,1
    - Dst: getSocklen
      Src: /src/pdns/pdns/comfun.cc:208,1
    - Dst: DNSException
      Src: /src/pdns/pdns/comfun.cc:209,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/comfun.cc:209,1
    - Dst: stringerror
      Src: /src/pdns/pdns/comfun.cc:209,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/comfun.cc:210,1
    - Dst: push_back
      Src: /src/pdns/pdns/comfun.cc:211,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 2
    argNames:
    - ' remote'
    - ' out'
    argTypes:
    - ComboAddress
    - map<DNSName,vector<ComboAddress>>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 212
      start: 201
    functionDepth: 0
    functionLinenumber: 201
    functionLinenumberEnd: 212
    functionName: SendReceiveRes
    functionSourceFile: /src/pdns/pdns/comfun.cc
    functionUses: 0
    functionsReached:
    - socket
    - DNSException
    - pdns::max
    - push_back
    - stringerror
    - toStringWithPort
    - setsockopt
    - getSocklen
    - connect
    linkageType: ''
    returnType: void
    signature: void SendReceiveRes(const ComboAddress& remote, map<DNSName,vector<ComboAddress>>&
      out)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: close
      Src: /src/pdns/pdns/comfun.cc:216,1
    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: ~SendReceiveRes()
    functionSourceFile: /src/pdns/pdns/comfun.cc
    functionUses: 0
    functionsReached:
    - close
    linkageType: ''
    returnType: void
    signature: void ~SendReceiveRes()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/comfun.cc:228,1
    - Dst: exit
      Src: /src/pdns/pdns/comfun.cc:230,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/comfun.cc:232,1
    - Dst: front
      Src: /src/pdns/pdns/comfun.cc:232,1
    - Dst: pop_front
      Src: /src/pdns/pdns/comfun.cc:233,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/comfun.cc:234,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/comfun.cc:235,1
    - Dst: Socket::send
      Src: /src/pdns/pdns/comfun.cc:237,1
    - Dst: vector::begin
      Src: /src/pdns/pdns/comfun.cc:237,1
    - Dst: vector::size
      Src: /src/pdns/pdns/comfun.cc:237,1
    - Dst: stringerror
      Src: /src/pdns/pdns/comfun.cc:238,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/comfun.cc:242,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 1
    argNames:
    - ' domain'
    argTypes:
    - RESQuery
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 243
      start: 219
    functionDepth: 1
    functionLinenumber: 219
    functionLinenumberEnd: 243
    functionName: send
    functionSourceFile: /src/pdns/pdns/comfun.cc
    functionUses: 20
    functionsReached:
    - vector::begin
    - Socket::send
    - vector::size
    - stringerror
    - DNSPacketWriter::getHeader
    - pop_front
    - empty
    - exit
    - front
    linkageType: ''
    returnType: Identifier
    signature: Identifier send(RESQuery& domain)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: waitForData
      Src: /src/pdns/pdns/comfun.cc:247,1
    - Dst: ComboAddress::getSocklen
      Src: /src/pdns/pdns/comfun.cc:251,1
    - Dst: recvfrom
      Src: /src/pdns/pdns/comfun.cc:252,1
    - Dst: string
      Src: /src/pdns/pdns/comfun.cc:262,1
    - Dst: DNSRecordContent::NumberToType
      Src: /src/pdns/pdns/comfun.cc:264,1
    - Dst: MOADNSParser::d_answers::size
      Src: /src/pdns/pdns/comfun.cc:265,1
    - Dst: push_back
      Src: /src/pdns/pdns/comfun.cc:269,1
    - Dst: addrs::clear
      Src: /src/pdns/pdns/comfun.cc:271,1
    - Dst: first::d_content::getZoneRepresentation
      Src: /src/pdns/pdns/comfun.cc:277,1
    - Dst: addrs::push_back
      Src: /src/pdns/pdns/comfun.cc:278,1
    - Dst: getAddr
      Src: /src/pdns/pdns/comfun.cc:278,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 30
    argCount: 2
    argNames:
    - ' id'
    - ' dr'
    argTypes:
    - Identifier
    - RESResult
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 285
      start: 245
    functionDepth: 1
    functionLinenumber: 245
    functionLinenumberEnd: 285
    functionName: receive
    functionSourceFile: /src/pdns/pdns/comfun.cc
    functionUses: 8
    functionsReached:
    - addrs::clear
    - first::d_content::getZoneRepresentation
    - push_back
    - getAddr
    - string
    - recvfrom
    - waitForData
    - MOADNSParser::d_answers::size
    - addrs::push_back
    - DNSRecordContent::NumberToType
    - ComboAddress::getSocklen
    linkageType: ''
    returnType: bool
    signature: bool receive(Identifier& id, RESResult& dr)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: push_back
      Src: /src/pdns/pdns/comfun.cc:293,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - ' id'
    argTypes:
    - Identifier
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 294
      start: 287
    functionDepth: 0
    functionLinenumber: 287
    functionLinenumberEnd: 294
    functionName: deliverTimeout
    functionSourceFile: /src/pdns/pdns/comfun.cc
    functionUses: 1
    functionsReached:
    - push_back
    linkageType: ''
    returnType: void
    signature: void deliverTimeout(const Identifier& id)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: toString
      Src: /src/pdns/pdns/comfun.cc:301,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - ' domain'
    - ' dr'
    - usec
    argTypes:
    - DNSName
    - RESResult
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 303
      start: 296
    functionDepth: 0
    functionLinenumber: 296
    functionLinenumberEnd: 303
    functionName: deliverAnswer
    functionSourceFile: /src/pdns/pdns/comfun.cc
    functionUses: 1
    functionsReached:
    - toString
    linkageType: ''
    returnType: void
    signature: void deliverAnswer(DNSName& domain, const RESResult& dr, unsigned int
      usec)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sleep
      Src: /src/pdns/pdns/comfun.cc:312,1
    - Dst: flush
      Src: /src/pdns/pdns/comfun.cc:314,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 317
      start: 309
    functionDepth: 0
    functionLinenumber: 309
    functionLinenumberEnd: 317
    functionName: printStats
    functionSourceFile: /src/pdns/pdns/comfun.cc
    functionUses: 3
    functionsReached:
    - sleep
    - flush
    linkageType: ''
    returnType: void
    signature: void printStats()
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ZoneParserTNG::disableGenerate
      Src: /src/pdns/pdns/comfun.cc:322,1
    - Dst: ZoneParserTNG::get
      Src: /src/pdns/pdns/comfun.cc:331,1
    - Dst: DNSResourceRecord::qtype::getCode
      Src: /src/pdns/pdns/comfun.cc:332,1
    - Dst: DNSName
      Src: /src/pdns/pdns/comfun.cc:333,1
    - Dst: DNSResourceRecord::qtype::getCode
      Src: /src/pdns/pdns/comfun.cc:334,1
    - Dst: DNSResourceRecord::qtype::getCode
      Src: /src/pdns/pdns/comfun.cc:334,1
    - Dst: insert
      Src: /src/pdns/pdns/comfun.cc:336,1
    - Dst: getAddr
      Src: /src/pdns/pdns/comfun.cc:336,1
    - Dst: std::thread::join
      Src: /src/pdns/pdns/comfun.cc:343,1
    - Dst: map::size
      Src: /src/pdns/pdns/comfun.cc:345,1
    - Dst: map::size
      Src: /src/pdns/pdns/comfun.cc:346,1
    - Dst: rplookup
      Src: /src/pdns/pdns/comfun.cc:352,1
    - Dst: toString
      Src: /src/pdns/pdns/comfun.cc:354,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 24
    argCount: 2
    argNames:
    - ' str'
    - limit
    argTypes:
    - std::string
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 361
      start: 319
    functionDepth: 1
    functionLinenumber: 319
    functionLinenumberEnd: 361
    functionName: parseZone
    functionSourceFile: /src/pdns/pdns/comfun.cc
    functionUses: 0
    functionsReached:
    - ZoneParserTNG::disableGenerate
    - toString
    - getAddr
    - std::thread::join
    - DNSName
    - DNSResourceRecord::qtype::getCode
    - insert
    - ZoneParserTNG::get
    - rplookup
    - map::size
    linkageType: ''
    returnType: int
    signature: int parseZone(const std::string& str, unsigned int limit)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: unixDie
      Src: /src/pdns/pdns/comfun.cc:368,1
    - Dst: getline
      Src: /src/pdns/pdns/comfun.cc:370,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/comfun.cc:371,1
    - Dst: DNSName
      Src: /src/pdns/pdns/comfun.cc:371,1
    - Dst: vector::size
      Src: /src/pdns/pdns/comfun.cc:373,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/comfun.cc:376,1
    - Dst: Inflighter::run
      Src: /src/pdns/pdns/comfun.cc:383,1
    - Dst: what
      Src: /src/pdns/pdns/comfun.cc:387,1
    - Dst: std::thread::join
      Src: /src/pdns/pdns/comfun.cc:391,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 21
    argCount: 1
    argNames:
    - ' fname'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 393
      start: 363
    functionDepth: 0
    functionLinenumber: 363
    functionLinenumberEnd: 393
    functionName: resolveNS
    functionSourceFile: /src/pdns/pdns/comfun.cc
    functionUses: 0
    functionsReached:
    - vector::push_back
    - unixDie
    - what
    - std::thread::join
    - DNSName
    - getline
    - vector::size
    - Inflighter::run
    - ComboAddress
    linkageType: ''
    returnType: int
    signature: int resolveNS(const std::string& fname)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: unixDie
      Src: /src/pdns/pdns/comfun.cc:399,1
    - Dst: stringerror
      Src: /src/pdns/pdns/comfun.cc:399,1
    - Dst: clear
      Src: /src/pdns/pdns/comfun.cc:402,1
    - Dst: getline
      Src: /src/pdns/pdns/comfun.cc:403,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/comfun.cc:404,1
    - Dst: stringtok
      Src: /src/pdns/pdns/comfun.cc:405,1
    - Dst: vector::size
      Src: /src/pdns/pdns/comfun.cc:406,1
    - Dst: DNSName
      Src: /src/pdns/pdns/comfun.cc:407,1
    - Dst: push_back
      Src: /src/pdns/pdns/comfun.cc:407,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/comfun.cc:407,1
    - Dst: size
      Src: /src/pdns/pdns/comfun.cc:410,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - ' fname'
    - ' addrs'
    argTypes:
    - std::string
    - map<DNSName, vector<ComboAddress>>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 412
      start: 395
    functionDepth: 1
    functionLinenumber: 395
    functionLinenumberEnd: 412
    functionName: readRESNames
    functionSourceFile: /src/pdns/pdns/comfun.cc
    functionUses: 0
    functionsReached:
    - stringtok
    - unixDie
    - stringerror
    - push_back
    - DNSName
    - size
    - getline
    - clear
    - vector::size
    - vector::clear
    - ComboAddress
    linkageType: ''
    returnType: void
    signature: void readRESNames(const std::string& fname, map<DNSName, vector<ComboAddress>>&
      addrs)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: reportAllTypes
      Src: /src/pdns/pdns/comfun.cc:418,1
    - Dst: atoi
      Src: /src/pdns/pdns/comfun.cc:423,1
    - Dst: parseZone
      Src: /src/pdns/pdns/comfun.cc:425,1
    - Dst: resolveNS
      Src: /src/pdns/pdns/comfun.cc:428,1
    - Dst: string
      Src: /src/pdns/pdns/comfun.cc:428,1
    - Dst: string
      Src: /src/pdns/pdns/comfun.cc:431,1
    - Dst: std::make_unique<std::ofstream>
      Src: /src/pdns/pdns/comfun.cc:432,1
    - Dst: string
      Src: /src/pdns/pdns/comfun.cc:432,1
    - Dst: getline
      Src: /src/pdns/pdns/comfun.cc:445,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/comfun.cc:447,1
    - Dst: stringtok
      Src: /src/pdns/pdns/comfun.cc:448,1
    - Dst: atoi
      Src: /src/pdns/pdns/comfun.cc:449,1
    - Dst: c_str
      Src: /src/pdns/pdns/comfun.cc:449,1
    - Dst: NSCount::addrs::clear
      Src: /src/pdns/pdns/comfun.cc:450,1
    - Dst: vector::size
      Src: /src/pdns/pdns/comfun.cc:451,1
    - Dst: NSCount::addrs::push_back
      Src: /src/pdns/pdns/comfun.cc:452,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/comfun.cc:452,1
    - Dst: map::insert
      Src: /src/pdns/pdns/comfun.cc:453,1
    - Dst: DNSName
      Src: /src/pdns/pdns/comfun.cc:453,1
    - Dst: readRESNames
      Src: /src/pdns/pdns/comfun.cc:458,1
    - Dst: string
      Src: /src/pdns/pdns/comfun.cc:458,1
    - Dst: auto::empty
      Src: /src/pdns/pdns/comfun.cc:465,1
    - Dst: map::count
      Src: /src/pdns/pdns/comfun.cc:466,1
    - Dst: names::insert
      Src: /src/pdns/pdns/comfun.cc:477,1
    - Dst: map::size
      Src: /src/pdns/pdns/comfun.cc:481,1
    - Dst: DNSName
      Src: /src/pdns/pdns/comfun.cc:496,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/comfun.cc:497,1
    - Dst: DNSName
      Src: /src/pdns/pdns/comfun.cc:498,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/comfun.cc:499,1
    - Dst: DNSName
      Src: /src/pdns/pdns/comfun.cc:500,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/comfun.cc:501,1
    - Dst: sort
      Src: /src/pdns/pdns/comfun.cc:504,1
    - Dst: vector::begin
      Src: /src/pdns/pdns/comfun.cc:504,1
    - Dst: vector::end
      Src: /src/pdns/pdns/comfun.cc:504,1
    - Dst: Inflighter::run
      Src: /src/pdns/pdns/comfun.cc:507,1
    - Dst: what
      Src: /src/pdns/pdns/comfun.cc:511,1
    - Dst: string
      Src: /src/pdns/pdns/comfun.cc:517,1
    - Dst: getline
      Src: /src/pdns/pdns/comfun.cc:520,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/comfun.cc:522,1
    - Dst: stringtok
      Src: /src/pdns/pdns/comfun.cc:523,1
    - Dst: vector::size
      Src: /src/pdns/pdns/comfun.cc:524,1
    - Dst: std::unordered_set::insert
      Src: /src/pdns/pdns/comfun.cc:525,1
    - Dst: DNSName
      Src: /src/pdns/pdns/comfun.cc:525,1
    - Dst: std::unordered_set::size
      Src: /src/pdns/pdns/comfun.cc:527,1
    - Dst: ZoneParserTNG::disableGenerate
      Src: /src/pdns/pdns/comfun.cc:529,1
    - Dst: ZoneParserTNG::get
      Src: /src/pdns/pdns/comfun.cc:534,1
    - Dst: set::count
      Src: /src/pdns/pdns/comfun.cc:535,1
    - Dst: set::insert
      Src: /src/pdns/pdns/comfun.cc:536,1
    - Dst: DNSResourceRecord::qtype::getCode
      Src: /src/pdns/pdns/comfun.cc:538,1
    - Dst: std::unordered_set::count
      Src: /src/pdns/pdns/comfun.cc:538,1
    - Dst: DNSName
      Src: /src/pdns/pdns/comfun.cc:538,1
    - Dst: count
      Src: /src/pdns/pdns/comfun.cc:538,1
    - Dst: DNSName
      Src: /src/pdns/pdns/comfun.cc:538,1
    - Dst: insert
      Src: /src/pdns/pdns/comfun.cc:539,1
    - Dst: DNSName
      Src: /src/pdns/pdns/comfun.cc:539,1
    - Dst: set::size
      Src: /src/pdns/pdns/comfun.cc:542,1
    - Dst: size
      Src: /src/pdns/pdns/comfun.cc:542,1
    - Dst: size
      Src: /src/pdns/pdns/comfun.cc:542,1
    - Dst: set::size
      Src: /src/pdns/pdns/comfun.cc:542,1
    - Dst: what
      Src: /src/pdns/pdns/comfun.cc:557,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 92
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 558
      start: 414
    functionDepth: 2
    functionLinenumber: 414
    functionLinenumberEnd: 558
    functionName: main
    functionSourceFile: /src/pdns/pdns/comfun.cc
    functionUses: 23
    functionsReached:
    - std::unordered_set::insert
    - names::insert
    - getline
    - sort
    - insert
    - vector::begin
    - ZoneParserTNG::disableGenerate
    - resolveNS
    - NSCount::addrs::clear
    - stringtok
    - set::insert
    - reportAllTypes
    - set::size
    - string
    - size
    - std::unordered_set::size
    - std::unordered_set::count
    - c_str
    - map::size
    - vector::clear
    - parseZone
    - readRESNames
    - vector::push_back
    - DNSName
    - map::count
    - vector::end
    - DNSResourceRecord::qtype::getCode
    - map::insert
    - Inflighter::run
    - ComboAddress
    - std::make_unique<std::ofstream>
    - atoi
    - count
    - what
    - NSCount::addrs::push_back
    - set::count
    - ZoneParserTNG::get
    - vector::size
    - auto::empty
    linkageType: ''
    returnType: int
    signature: int main(int argc, char**argv)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: declare
      Src: /src/pdns/pdns/auth-zonecache.cc:39,1
    - Dst: declare
      Src: /src/pdns/pdns/auth-zonecache.cc:40,1
    - Dst: declare
      Src: /src/pdns/pdns/auth-zonecache.cc:41,1
    - Dst: getPointer
      Src: /src/pdns/pdns/auth-zonecache.cc:43,1
    - Dst: getPointer
      Src: /src/pdns/pdns/auth-zonecache.cc:44,1
    - Dst: getPointer
      Src: /src/pdns/pdns/auth-zonecache.cc:45,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - mapsCount
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 36
    functionDepth: 0
    functionLinenumber: 36
    functionLinenumberEnd: 46
    functionName: AuthZoneCache::AuthZoneCache
    functionSourceFile: /src/pdns/pdns/auth-zonecache.cc
    functionUses: 6
    functionsReached:
    - declare
    - getPointer
    linkageType: ''
    returnType: void
    signature: void AuthZoneCache::AuthZoneCache(size_t mapsCount)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: getMap
      Src: /src/pdns/pdns/auth-zonecache.cc:50,1
    - Dst: d_map::read_lock
      Src: /src/pdns/pdns/auth-zonecache.cc:53,1
    - Dst: auto::find
      Src: /src/pdns/pdns/auth-zonecache.cc:54,1
    - Dst: auto::end
      Src: /src/pdns/pdns/auth-zonecache.cc:55,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 2
    argNames:
    - ' zone'
    - ' zoneId'
    argTypes:
    - ZoneName
    - domainid_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 48
    functionDepth: 1
    functionLinenumber: 48
    functionLinenumberEnd: 68
    functionName: AuthZoneCache::getEntry
    functionSourceFile: /src/pdns/pdns/auth-zonecache.cc
    functionUses: 5
    functionsReached:
    - auto::end
    - auto::find
    - d_map::read_lock
    - getMap
    linkageType: ''
    returnType: bool
    signature: bool AuthZoneCache::getEntry(const ZoneName& zone, domainid_t& zoneId)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: Netmask*::empty
      Src: /src/pdns/pdns/auth-zonecache.cc:75,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-zonecache.cc:77,1
    - Dst: info
      Src: /src/pdns/pdns/auth-zonecache.cc:78,1
    - Dst: read_lock
      Src: /src/pdns/pdns/auth-zonecache.cc:84,1
    - Dst: auto::lookup
      Src: /src/pdns/pdns/auth-zonecache.cc:85,1
    - Dst: Netmask*::getNetwork
      Src: /src/pdns/pdns/auth-zonecache.cc:85,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-zonecache.cc:92,1
    - Dst: Netmask*::toString
      Src: /src/pdns/pdns/auth-zonecache.cc:92,1
    - Dst: info
      Src: /src/pdns/pdns/auth-zonecache.cc:93,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-zonecache.cc:93,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-zonecache.cc:93,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-zonecache.cc:103,1
    - Dst: Netmask*::toString
      Src: /src/pdns/pdns/auth-zonecache.cc:103,1
    - Dst: info
      Src: /src/pdns/pdns/auth-zonecache.cc:104,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-zonecache.cc:104,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 22
    argCount: 1
    argNames:
    - net
    argTypes:
    - Netmask*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 107
      start: 71
    functionDepth: 0
    functionLinenumber: 71
    functionLinenumberEnd: 107
    functionName: AuthZoneCache::getViewFromNetwork
    functionSourceFile: /src/pdns/pdns/auth-zonecache.cc
    functionUses: 1
    functionsReached:
    - SLOG
    - Netmask*::getNetwork
    - auto::lookup
    - Logging::Loggable
    - Netmask*::toString
    - read_lock
    - info
    - Netmask*::empty
    linkageType: ''
    returnType: std::string
    signature: std::string AuthZoneCache::getViewFromNetwork(Netmask* net)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/auth-zonecache.cc:113,1
    - Dst: read_lock
      Src: /src/pdns/pdns/auth-zonecache.cc:114,1
    - Dst: auto::count
      Src: /src/pdns/pdns/auth-zonecache.cc:115,1
    - Dst: auto::at
      Src: /src/pdns/pdns/auth-zonecache.cc:116,1
    - Dst: count
      Src: /src/pdns/pdns/auth-zonecache.cc:117,1
    - Dst: at
      Src: /src/pdns/pdns/auth-zonecache.cc:118,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - ' zone'
    - ' view'
    argTypes:
    - ZoneName
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 124
      start: 109
    functionDepth: 0
    functionLinenumber: 109
    functionLinenumberEnd: 124
    functionName: AuthZoneCache::getVariantFromView
    functionSourceFile: /src/pdns/pdns/auth-zonecache.cc
    functionUses: 1
    functionsReached:
    - count
    - read_lock
    - auto::at
    - empty
    - auto::count
    - at
    linkageType: ''
    returnType: std::string
    signature: std::string AuthZoneCache::getVariantFromView(const ZoneName& zone,
      const std::string& view)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getRealRemote
      Src: /src/pdns/pdns/auth-zonecache.cc:128,1
    - Dst: AuthZoneCache::getViewFromNetwork
      Src: /src/pdns/pdns/auth-zonecache.cc:129,1
    - Dst: ZoneName
      Src: /src/pdns/pdns/auth-zonecache.cc:130,1
    - Dst: AuthZoneCache::getVariantFromView
      Src: /src/pdns/pdns/auth-zonecache.cc:131,1
    - Dst: qdomainzone::setVariant
      Src: /src/pdns/pdns/auth-zonecache.cc:132,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ' packet'
    argTypes:
    - DNSPacket
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 133
      start: 126
    functionDepth: 1
    functionLinenumber: 126
    functionLinenumberEnd: 133
    functionName: AuthZoneCache::setZoneVariant
    functionSourceFile: /src/pdns/pdns/auth-zonecache.cc
    functionUses: 0
    functionsReached:
    - getRealRemote
    - qdomainzone::setVariant
    - AuthZoneCache::getVariantFromView
    - ZoneName
    - AuthZoneCache::getViewFromNetwork
    linkageType: ''
    returnType: void
    signature: void AuthZoneCache::setZoneVariant(DNSPacket& packet)
  - 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: AuthZoneCache::isEnabled
    functionSourceFile: /src/pdns/pdns/auth-zonecache.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool AuthZoneCache::isEnabled() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: purgeLockedCollectionsVector
      Src: /src/pdns/pdns/auth-zonecache.cc:143,1
    - Dst: write_lock
      Src: /src/pdns/pdns/auth-zonecache.cc:145,1
    - Dst: write_lock
      Src: /src/pdns/pdns/auth-zonecache.cc:148,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 150
      start: 141
    functionDepth: 0
    functionLinenumber: 141
    functionLinenumberEnd: 150
    functionName: AuthZoneCache::clear
    functionSourceFile: /src/pdns/pdns/auth-zonecache.cc
    functionUses: 0
    functionsReached:
    - purgeLockedCollectionsVector
    - write_lock
    linkageType: ''
    returnType: void
    signature: void AuthZoneCache::clear()
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: AuthZoneCache::size
      Src: /src/pdns/pdns/auth-zonecache.cc:157,1
    - Dst: AuthZoneCache::size
      Src: /src/pdns/pdns/auth-zonecache.cc:158,1
    - Dst: AuthZoneCache::getMapIndex
      Src: /src/pdns/pdns/auth-zonecache.cc:164,1
    - Dst: find
      Src: /src/pdns/pdns/auth-zonecache.cc:165,1
    - Dst: end
      Src: /src/pdns/pdns/auth-zonecache.cc:166,1
    - Dst: emplace
      Src: /src/pdns/pdns/auth-zonecache.cc:170,1
    - Dst: lock
      Src: /src/pdns/pdns/auth-zonecache.cc:176,1
    - Dst: assert
      Src: /src/pdns/pdns/auth-zonecache.cc:177,1
    - Dst: AuthZoneCache::getMapIndex
      Src: /src/pdns/pdns/auth-zonecache.cc:181,1
    - Dst: find
      Src: /src/pdns/pdns/auth-zonecache.cc:182,1
    - Dst: end
      Src: /src/pdns/pdns/auth-zonecache.cc:183,1
    - Dst: erase
      Src: /src/pdns/pdns/auth-zonecache.cc:188,1
    - Dst: emplace
      Src: /src/pdns/pdns/auth-zonecache.cc:193,1
    - Dst: AuthZoneCache::size
      Src: /src/pdns/pdns/auth-zonecache.cc:198,1
    - Dst: d_map::write_lock
      Src: /src/pdns/pdns/auth-zonecache.cc:200,1
    - Dst: std::move
      Src: /src/pdns/pdns/auth-zonecache.cc:201,1
    - Dst: auto::d_pendingUpdates::clear
      Src: /src/pdns/pdns/auth-zonecache.cc:204,1
    - Dst: store
      Src: /src/pdns/pdns/auth-zonecache.cc:207,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 32
    argCount: 1
    argNames:
    - ' zone_indices'
    argTypes:
    - vector<std::tuple<ZoneName, domainid_t>>
    assertStmts:
    - condition: (pending->d_replacePending)
      pos:
        line_end: 176
        line_start: 176
        source_file: /src/pdns/pdns/auth-zonecache.cc
    constantsTouched: []
    func_position:
      end: 209
      start: 152
    functionDepth: 2
    functionLinenumber: 152
    functionLinenumberEnd: 209
    functionName: AuthZoneCache::replace
    functionSourceFile: /src/pdns/pdns/auth-zonecache.cc
    functionUses: 4
    functionsReached:
    - std::move
    - d_map::write_lock
    - auto::d_pendingUpdates::clear
    - end
    - assert
    - lock
    - store
    - AuthZoneCache::size
    - AuthZoneCache::getMapIndex
    - erase
    - emplace
    - find
    linkageType: ''
    returnType: void
    signature: void AuthZoneCache::replace(const vector<std::tuple<ZoneName, domainid_t>>&
      zone_indices)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: write_lock
      Src: /src/pdns/pdns/auth-zonecache.cc:213,1
    - Dst: auto::swap
      Src: /src/pdns/pdns/auth-zonecache.cc:214,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - nettree
    argTypes:
    - NetmaskTree<string>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 215
      start: 211
    functionDepth: 0
    functionLinenumber: 211
    functionLinenumberEnd: 215
    functionName: AuthZoneCache::replace
    functionSourceFile: /src/pdns/pdns/auth-zonecache.cc
    functionUses: 4
    functionsReached:
    - auto::swap
    - write_lock
    linkageType: ''
    returnType: void
    signature: void AuthZoneCache::replace(NetmaskTree<string> nettree)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: write_lock
      Src: /src/pdns/pdns/auth-zonecache.cc:219,1
    - Dst: auto::swap
      Src: /src/pdns/pdns/auth-zonecache.cc:220,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - viewsmap
    argTypes:
    - ViewsMap
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 221
      start: 217
    functionDepth: 0
    functionLinenumber: 217
    functionLinenumberEnd: 221
    functionName: AuthZoneCache::replace
    functionSourceFile: /src/pdns/pdns/auth-zonecache.cc
    functionUses: 4
    functionsReached:
    - auto::swap
    - write_lock
    linkageType: ''
    returnType: void
    signature: void AuthZoneCache::replace(ViewsMap viewsmap)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/auth-zonecache.cc:229,1
    - Dst: auto::d_pendingUpdates::emplace_back
      Src: /src/pdns/pdns/auth-zonecache.cc:231,1
    - Dst: AuthZoneCache::getMapIndex
      Src: /src/pdns/pdns/auth-zonecache.cc:238,1
    - Dst: d_map::write_lock
      Src: /src/pdns/pdns/auth-zonecache.cc:241,1
    - Dst: auto::find
      Src: /src/pdns/pdns/auth-zonecache.cc:242,1
    - Dst: auto::end
      Src: /src/pdns/pdns/auth-zonecache.cc:243,1
    - Dst: auto::emplace
      Src: /src/pdns/pdns/auth-zonecache.cc:247,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 2
    argNames:
    - ' zone'
    - zoneId
    argTypes:
    - ZoneName
    - domainid_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 251
      start: 223
    functionDepth: 2
    functionLinenumber: 223
    functionLinenumberEnd: 251
    functionName: AuthZoneCache::add
    functionSourceFile: /src/pdns/pdns/auth-zonecache.cc
    functionUses: 4
    functionsReached:
    - d_map::write_lock
    - auto::d_pendingUpdates::emplace_back
    - lock
    - auto::emplace
    - auto::end
    - auto::find
    - AuthZoneCache::getMapIndex
    linkageType: ''
    returnType: void
    signature: void AuthZoneCache::add(const ZoneName& zone, const domainid_t zoneId)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/auth-zonecache.cc:259,1
    - Dst: auto::d_pendingUpdates::emplace_back
      Src: /src/pdns/pdns/auth-zonecache.cc:261,1
    - Dst: AuthZoneCache::getMapIndex
      Src: /src/pdns/pdns/auth-zonecache.cc:265,1
    - Dst: d_map::write_lock
      Src: /src/pdns/pdns/auth-zonecache.cc:268,1
    - Dst: auto::erase
      Src: /src/pdns/pdns/auth-zonecache.cc:269,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - ' zone'
    argTypes:
    - ZoneName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 273
      start: 253
    functionDepth: 2
    functionLinenumber: 253
    functionLinenumberEnd: 273
    functionName: AuthZoneCache::remove
    functionSourceFile: /src/pdns/pdns/auth-zonecache.cc
    functionUses: 1
    functionsReached:
    - d_map::write_lock
    - auto::d_pendingUpdates::emplace_back
    - lock
    - auto::erase
    - AuthZoneCache::getMapIndex
    linkageType: ''
    returnType: void
    signature: void AuthZoneCache::remove(const ZoneName& zone)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/auth-zonecache.cc:281,1
    - Dst: auto::d_pendingUpdates::clear
      Src: /src/pdns/pdns/auth-zonecache.cc:283,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 285
      start: 275
    functionDepth: 1
    functionLinenumber: 275
    functionLinenumberEnd: 285
    functionName: AuthZoneCache::setReplacePending
    functionSourceFile: /src/pdns/pdns/auth-zonecache.cc
    functionUses: 4
    functionsReached:
    - auto::d_pendingUpdates::clear
    - lock
    linkageType: ''
    returnType: void
    signature: void AuthZoneCache::setReplacePending()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: write_lock
      Src: /src/pdns/pdns/auth-zonecache.cc:290,1
    - Dst: getVariant
      Src: /src/pdns/pdns/auth-zonecache.cc:292,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' view'
    - ' zone'
    argTypes:
    - std::string
    - ZoneName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 293
      start: 287
    functionDepth: 0
    functionLinenumber: 287
    functionLinenumberEnd: 293
    functionName: AuthZoneCache::addToView
    functionSourceFile: /src/pdns/pdns/auth-zonecache.cc
    functionUses: 2
    functionsReached:
    - getVariant
    - write_lock
    linkageType: ''
    returnType: void
    signature: void AuthZoneCache::addToView(const std::string& view, const ZoneName&
      zone)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: write_lock
      Src: /src/pdns/pdns/auth-zonecache.cc:298,1
    - Dst: count
      Src: /src/pdns/pdns/auth-zonecache.cc:300,1
    - Dst: at
      Src: /src/pdns/pdns/auth-zonecache.cc:303,1
    - Dst: find
      Src: /src/pdns/pdns/auth-zonecache.cc:304,1
    - Dst: end
      Src: /src/pdns/pdns/auth-zonecache.cc:304,1
    - Dst: erase
      Src: /src/pdns/pdns/auth-zonecache.cc:305,1
    - Dst: empty
      Src: /src/pdns/pdns/auth-zonecache.cc:308,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - ' view'
    - ' zone'
    argTypes:
    - std::string
    - ZoneName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 309
      start: 295
    functionDepth: 0
    functionLinenumber: 295
    functionLinenumberEnd: 309
    functionName: AuthZoneCache::removeFromView
    functionSourceFile: /src/pdns/pdns/auth-zonecache.cc
    functionUses: 0
    functionsReached:
    - count
    - end
    - write_lock
    - empty
    - erase
    - at
    - find
    linkageType: ''
    returnType: bool
    signature: bool AuthZoneCache::removeFromView(const std::string& view, const ZoneName&
      zone)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: write_lock
      Src: /src/pdns/pdns/auth-zonecache.cc:313,1
    - Dst: empty
      Src: /src/pdns/pdns/auth-zonecache.cc:314,1
    - Dst: auto::erase
      Src: /src/pdns/pdns/auth-zonecache.cc:315,1
    - Dst: auto::insert_or_assign
      Src: /src/pdns/pdns/auth-zonecache.cc:318,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - ' network'
    - ' view'
    argTypes:
    - Netmask
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 320
      start: 311
    functionDepth: 0
    functionLinenumber: 311
    functionLinenumberEnd: 320
    functionName: AuthZoneCache::updateNetwork
    functionSourceFile: /src/pdns/pdns/auth-zonecache.cc
    functionUses: 2
    functionsReached:
    - empty
    - auto::insert_or_assign
    - auto::erase
    - write_lock
    linkageType: ''
    returnType: void
    signature: void AuthZoneCache::updateNetwork(const Netmask& network, const std::string&
      view)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - slog
    - algo
    argTypes:
    - Logr::log_t
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 18
      start: 16
    functionDepth: 0
    functionLinenumber: 16
    functionLinenumberEnd: 18
    functionName: SodiumED25519DNSCryptoKeyEngine::SodiumED25519DNSCryptoKeyEngine
    functionSourceFile: /src/pdns/pdns/sodiumsigners.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void SodiumED25519DNSCryptoKeyEngine(Logr::log_t slog, unsigned int
      algo)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 19
      start: 19
    functionDepth: 0
    functionLinenumber: 19
    functionLinenumberEnd: 19
    functionName: SodiumED25519DNSCryptoKeyEngine::getName
    functionSourceFile: /src/pdns/pdns/sodiumsigners.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: string
    signature: string getName() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: make_unique<SodiumED25519DNSCryptoKeyEngine>
      Src: /src/pdns/pdns/sodiumsigners.cc:61,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - slog
    - algorithm
    argTypes:
    - Logr::log_t
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 59
    functionDepth: 0
    functionLinenumber: 59
    functionLinenumberEnd: 62
    functionName: SodiumED25519DNSCryptoKeyEngine::maker
    functionSourceFile: /src/pdns/pdns/sodiumsigners.cc
    functionUses: 0
    functionsReached:
    - make_unique<SodiumED25519DNSCryptoKeyEngine>
    linkageType: ''
    returnType: std::unique_ptr<DNSCryptoKeyEngine>
    signature: std::unique_ptr<DNSCryptoKeyEngine> maker(Logr::log_t slog, unsigned
      int algorithm)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: runtime_error
      Src: /src/pdns/pdns/sodiumsigners.cc:72,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/sodiumsigners.cc:72,1
    - Dst: crypto_sign_ed25519_keypair
      Src: /src/pdns/pdns/sodiumsigners.cc:74,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - bits
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 69
    functionDepth: 0
    functionLinenumber: 69
    functionLinenumberEnd: 75
    functionName: SodiumED25519DNSCryptoKeyEngine::create
    functionSourceFile: /src/pdns/pdns/sodiumsigners.cc
    functionUses: 0
    functionsReached:
    - runtime_error
    - std::to_string
    - crypto_sign_ed25519_keypair
    linkageType: ''
    returnType: void
    signature: void SodiumED25519DNSCryptoKeyEngine::create(unsigned int bits)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: std::unique_ptr<EVP_PKEY, decltype(&EVP_PKEY_free)>
      Src: /src/pdns/pdns/sodiumsigners.cc:81,1
    - Dst: PEM_read_PrivateKey
      Src: /src/pdns/pdns/sodiumsigners.cc:81,1
    - Dst: std::optional<std::reference_wrapper<const std::string>>::has_value
      Src: /src/pdns/pdns/sodiumsigners.cc:83,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/sodiumsigners.cc:84,1
    - Dst: SodiumED25519DNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/sodiumsigners.cc:84,1
    - Dst: std::optional<std::reference_wrapper<const std::string>>::get
      Src: /src/pdns/pdns/sodiumsigners.cc:84,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/sodiumsigners.cc:87,1
    - Dst: SodiumED25519DNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/sodiumsigners.cc:87,1
    - Dst: EVP_PKEY_get_raw_private_key
      Src: /src/pdns/pdns/sodiumsigners.cc:93,1
    - Dst: auto::get
      Src: /src/pdns/pdns/sodiumsigners.cc:93,1
    - Dst: std::optional<std::reference_wrapper<const std::string>>::has_value
      Src: /src/pdns/pdns/sodiumsigners.cc:95,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/sodiumsigners.cc:96,1
    - Dst: SodiumED25519DNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/sodiumsigners.cc:96,1
    - Dst: std::optional<std::reference_wrapper<const std::string>>::get
      Src: /src/pdns/pdns/sodiumsigners.cc:96,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/sodiumsigners.cc:99,1
    - Dst: SodiumED25519DNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/sodiumsigners.cc:99,1
    - Dst: EVP_PKEY_get_raw_public_key
      Src: /src/pdns/pdns/sodiumsigners.cc:103,1
    - Dst: auto::get
      Src: /src/pdns/pdns/sodiumsigners.cc:103,1
    - Dst: std::optional<std::reference_wrapper<const std::string>>::has_value
      Src: /src/pdns/pdns/sodiumsigners.cc:105,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/sodiumsigners.cc:106,1
    - Dst: SodiumED25519DNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/sodiumsigners.cc:106,1
    - Dst: std::optional<std::reference_wrapper<const std::string>>::get
      Src: /src/pdns/pdns/sodiumsigners.cc:106,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/sodiumsigners.cc:109,1
    - Dst: SodiumED25519DNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/sodiumsigners.cc:109,1
    - Dst: memcpy
      Src: /src/pdns/pdns/sodiumsigners.cc:114,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 22
    argCount: 3
    argNames:
    - ' drc'
    - ' inputFile'
    - filename
    argTypes:
    - DNSKEYRecordContent
    - std::FILE
    - std::optional<std::reference_wrapper<const std::string>>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 115
      start: 78
    functionDepth: 0
    functionLinenumber: 78
    functionLinenumberEnd: 115
    functionName: SodiumED25519DNSCryptoKeyEngine::createFromPEMFile
    functionSourceFile: /src/pdns/pdns/sodiumsigners.cc
    functionUses: 0
    functionsReached:
    - std::unique_ptr<EVP_PKEY, decltype(&EVP_PKEY_free)>
    - EVP_PKEY_get_raw_private_key
    - memcpy
    - auto::get
    - runtime_error
    - PEM_read_PrivateKey
    - EVP_PKEY_get_raw_public_key
    - std::optional<std::reference_wrapper<const std::string>>::has_value
    - std::optional<std::reference_wrapper<const std::string>>::get
    - SodiumED25519DNSCryptoKeyEngine::getName
    linkageType: ''
    returnType: void
    signature: void SodiumED25519DNSCryptoKeyEngine::createFromPEMFile(DNSKEYRecordContent&
      drc, std::FILE& inputFile, std::optional<std::reference_wrapper<const std::string>>
      filename)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: std::unique_ptr<EVP_PKEY, void (*)(EVP_PKEY*)>
      Src: /src/pdns/pdns/sodiumsigners.cc:119,1
    - Dst: EVP_PKEY_new_raw_private_key
      Src: /src/pdns/pdns/sodiumsigners.cc:119,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/sodiumsigners.cc:121,1
    - Dst: SodiumED25519DNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/sodiumsigners.cc:121,1
    - Dst: PEM_write_PrivateKey
      Src: /src/pdns/pdns/sodiumsigners.cc:124,1
    - Dst: auto::get
      Src: /src/pdns/pdns/sodiumsigners.cc:124,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/sodiumsigners.cc:126,1
    - Dst: SodiumED25519DNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/sodiumsigners.cc:126,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 7
    argCount: 1
    argNames:
    - ' outputFile'
    argTypes:
    - std::FILE
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 117
    functionDepth: 0
    functionLinenumber: 117
    functionLinenumberEnd: 128
    functionName: SodiumED25519DNSCryptoKeyEngine::convertToPEMFile
    functionSourceFile: /src/pdns/pdns/sodiumsigners.cc
    functionUses: 0
    functionsReached:
    - auto::get
    - EVP_PKEY_new_raw_private_key
    - std::unique_ptr<EVP_PKEY, void (*)(EVP_PKEY*)>
    - runtime_error
    - SodiumED25519DNSCryptoKeyEngine::getName
    - PEM_write_PrivateKey
    linkageType: ''
    returnType: void
    signature: void SodiumED25519DNSCryptoKeyEngine::convertToPEMFile(std::FILE& outputFile)
      const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 134
      start: 131
    functionDepth: 0
    functionLinenumber: 131
    functionLinenumberEnd: 134
    functionName: SodiumED25519DNSCryptoKeyEngine::getBits
    functionSourceFile: /src/pdns/pdns/sodiumsigners.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int SodiumED25519DNSCryptoKeyEngine::getBits() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: storvector_t::emplace_back
      Src: /src/pdns/pdns/sodiumsigners.cc:147,1
    - Dst: storvector_t::emplace_back
      Src: /src/pdns/pdns/sodiumsigners.cc:149,1
    - Dst: string
      Src: /src/pdns/pdns/sodiumsigners.cc:149,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 151
      start: 136
    functionDepth: 0
    functionLinenumber: 136
    functionLinenumberEnd: 151
    functionName: SodiumED25519DNSCryptoKeyEngine::convertToISCVector
    functionSourceFile: /src/pdns/pdns/sodiumsigners.cc
    functionUses: 0
    functionsReached:
    - string
    - storvector_t::emplace_back
    linkageType: ''
    returnType: DNSCryptoKeyEngine::storvector_t
    signature: DNSCryptoKeyEngine::storvector_t SodiumED25519DNSCryptoKeyEngine::convertToISCVector()
      const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pdns::checked_stoi_into
      Src: /src/pdns/pdns/sodiumsigners.cc:161,1
    - Dst: string::length
      Src: /src/pdns/pdns/sodiumsigners.cc:164,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/sodiumsigners.cc:165,1
    - Dst: std::make_unique<unsigned char[]>
      Src: /src/pdns/pdns/sodiumsigners.cc:167,1
    - Dst: memcpy
      Src: /src/pdns/pdns/sodiumsigners.cc:169,1
    - Dst: auto::get
      Src: /src/pdns/pdns/sodiumsigners.cc:169,1
    - Dst: string::c_str
      Src: /src/pdns/pdns/sodiumsigners.cc:169,1
    - Dst: crypto_sign_ed25519_seed_keypair
      Src: /src/pdns/pdns/sodiumsigners.cc:170,1
    - Dst: auto::get
      Src: /src/pdns/pdns/sodiumsigners.cc:170,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - ' drc'
    - ' stormap'
    argTypes:
    - DNSKEYRecordContent
    - std::map<std::string, std::string>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 171
      start: 153
    functionDepth: 0
    functionLinenumber: 153
    functionLinenumberEnd: 171
    functionName: SodiumED25519DNSCryptoKeyEngine::fromISCMap
    functionSourceFile: /src/pdns/pdns/sodiumsigners.cc
    functionUses: 0
    functionsReached:
    - std::make_unique<unsigned char[]>
    - memcpy
    - string::c_str
    - auto::get
    - runtime_error
    - pdns::checked_stoi_into
    - string::length
    - crypto_sign_ed25519_seed_keypair
    linkageType: ''
    returnType: void
    signature: void SodiumED25519DNSCryptoKeyEngine::fromISCMap(DNSKEYRecordContent&
      drc, std::map<std::string, std::string>& stormap)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: string
      Src: /src/pdns/pdns/sodiumsigners.cc:175,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 176
      start: 173
    functionDepth: 0
    functionLinenumber: 173
    functionLinenumberEnd: 176
    functionName: SodiumED25519DNSCryptoKeyEngine::getPublicKeyString
    functionSourceFile: /src/pdns/pdns/sodiumsigners.cc
    functionUses: 0
    functionsReached:
    - string
    linkageType: ''
    returnType: std::string
    signature: std::string SodiumED25519DNSCryptoKeyEngine::getPublicKeyString() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: length
      Src: /src/pdns/pdns/sodiumsigners.cc:180,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/sodiumsigners.cc:181,1
    - Dst: memcpy
      Src: /src/pdns/pdns/sodiumsigners.cc:183,1
    - Dst: c_str
      Src: /src/pdns/pdns/sodiumsigners.cc:183,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - ' input'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 184
      start: 178
    functionDepth: 0
    functionLinenumber: 178
    functionLinenumberEnd: 184
    functionName: SodiumED25519DNSCryptoKeyEngine::fromPublicKeyString
    functionSourceFile: /src/pdns/pdns/sodiumsigners.cc
    functionUses: 0
    functionsReached:
    - c_str
    - length
    - runtime_error
    - memcpy
    linkageType: ''
    returnType: void
    signature: void SodiumED25519DNSCryptoKeyEngine::fromPublicKeyString(const std::string&
      input)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: crypto_sign_ed25519_detached
      Src: /src/pdns/pdns/sodiumsigners.cc:193,1
    - Dst: c_str
      Src: /src/pdns/pdns/sodiumsigners.cc:193,1
    - Dst: length
      Src: /src/pdns/pdns/sodiumsigners.cc:193,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ' msg'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 196
      start: 186
    functionDepth: 0
    functionLinenumber: 186
    functionLinenumberEnd: 196
    functionName: SodiumED25519DNSCryptoKeyEngine::sign
    functionSourceFile: /src/pdns/pdns/sodiumsigners.cc
    functionUses: 0
    functionsReached:
    - c_str
    - length
    - crypto_sign_ed25519_detached
    linkageType: ''
    returnType: std::string
    signature: std::string SodiumED25519DNSCryptoKeyEngine::sign(const std::string&
      msg) const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: length
      Src: /src/pdns/pdns/sodiumsigners.cc:200,1
    - Dst: crypto_sign_ed25519_verify_detached
      Src: /src/pdns/pdns/sodiumsigners.cc:204,1
    - Dst: c_str
      Src: /src/pdns/pdns/sodiumsigners.cc:204,1
    - Dst: c_str
      Src: /src/pdns/pdns/sodiumsigners.cc:204,1
    - Dst: length
      Src: /src/pdns/pdns/sodiumsigners.cc:204,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - ' msg'
    - ' signature'
    argTypes:
    - std::string
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 205
      start: 198
    functionDepth: 0
    functionLinenumber: 198
    functionLinenumberEnd: 205
    functionName: SodiumED25519DNSCryptoKeyEngine::verify
    functionSourceFile: /src/pdns/pdns/sodiumsigners.cc
    functionUses: 0
    functionsReached:
    - c_str
    - length
    - crypto_sign_ed25519_verify_detached
    linkageType: ''
    returnType: bool
    signature: bool SodiumED25519DNSCryptoKeyEngine::verify(const std::string& msg,
      const std::string& signature) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSCryptoKeyEngine::report
      Src: /src/pdns/pdns/sodiumsigners.cc:213,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 214
      start: 211
    functionDepth: 0
    functionLinenumber: 211
    functionLinenumberEnd: 214
    functionName: LoaderSodiumStruct
    functionSourceFile: /src/pdns/pdns/sodiumsigners.cc
    functionUses: 0
    functionsReached:
    - DNSCryptoKeyEngine::report
    linkageType: ''
    returnType: void
    signature: void LoaderSodiumStruct()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSCryptoKeyEngine::report
      Src: /src/pdns/pdns/sodiumsigners.cc:213,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 214
      start: 211
    functionDepth: 0
    functionLinenumber: 211
    functionLinenumberEnd: 214
    functionName: LoaderSodiumStruct
    functionSourceFile: /src/pdns/pdns/sodiumsigners.cc
    functionUses: 0
    functionsReached:
    - DNSCryptoKeyEngine::report
    linkageType: ''
    returnType: void
    signature: void LoaderSodiumStruct()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Base64Encode
      Src: /src/pdns/pdns/test-base64_cc.cc:19,1
    - Dst: B64Decode
      Src: /src/pdns/pdns/test-base64_cc.cc:22,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-base64_cc.cc:23,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 24
      start: 17
    functionDepth: 0
    functionLinenumber: 17
    functionLinenumberEnd: 24
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-base64_cc.cc
    functionUses: 0
    functionsReached:
    - B64Decode
    - BOOST_CHECK_EQUAL
    - Base64Encode
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_Base64_Roundtrip)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: AuthPacketCache::insert
      Src: /src/pdns/pdns/test-base64_cc.cc:36,1
    - Dst: Base64Encode
      Src: /src/pdns/pdns/test-base64_cc.cc:72,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-base64_cc.cc:73,1
    - Dst: B64Decode
      Src: /src/pdns/pdns/test-base64_cc.cc:75,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-base64_cc.cc:76,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 33
    functionDepth: 0
    functionLinenumber: 33
    functionLinenumberEnd: 78
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-base64_cc.cc
    functionUses: 0
    functionsReached:
    - B64Decode
    - AuthPacketCache::insert
    - BOOST_CHECK_EQUAL
    - Base64Encode
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_Base64_Encode)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: B64Decode
      Src: /src/pdns/pdns/test-base64_cc.cc:84,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-base64_cc.cc:88,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-base64_cc.cc:91,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 80
    functionDepth: 0
    functionLinenumber: 80
    functionLinenumberEnd: 93
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-base64_cc.cc
    functionUses: 0
    functionsReached:
    - BOOST_CHECK
    - B64Decode
    - BOOST_CHECK_EQUAL
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_Base64_Decode_Garbage)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' str'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 61
    functionDepth: 0
    functionLinenumber: 61
    functionLinenumberEnd: 62
    functionName: MOADNSException::MOADNSException
    functionSourceFile: /src/pdns/pdns/dnsparser.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void MOADNSException(const string& str)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsparser.hh:74,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsparser.hh:74,1
    - Dst: std::out_of_range
      Src: /src/pdns/pdns/dnsparser.hh:75,1
    - Dst: size
      Src: /src/pdns/pdns/dnsparser.hh:77,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - ' content'
    argTypes:
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 71
    functionDepth: 0
    functionLinenumber: 71
    functionLinenumberEnd: 79
    functionName: PacketReader::PacketReader
    functionSourceFile: /src/pdns/pdns/dnsparser.hh
    functionUses: 0
    functionsReached:
    - pdns::max
    - std::out_of_range
    - size
    linkageType: ''
    returnType: void
    signature: void PacketReader(const std::string_view& content, uint16_t initialPos=sizeof(dnsheader),
      bool internalRepresentation = false)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PacketReader::get32BitInt
      Src: /src/pdns/pdns/dnsparser.hh:90,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' val'
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 88
    functionDepth: 0
    functionLinenumber: 88
    functionLinenumberEnd: 91
    functionName: PacketReader::xfr32BitInt
    functionSourceFile: /src/pdns/pdns/dnsparser.hh
    functionUses: 0
    functionsReached:
    - PacketReader::get32BitInt
    linkageType: ''
    returnType: void
    signature: void xfr32BitInt(uint32_t& val)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PacketReader::xfr32BitInt
      Src: /src/pdns/pdns/dnsparser.hh:95,1
    - Dst: htonl
      Src: /src/pdns/pdns/dnsparser.hh:96,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ' val'
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 93
    functionDepth: 0
    functionLinenumber: 93
    functionLinenumberEnd: 97
    functionName: PacketReader::xfrIP
    functionSourceFile: /src/pdns/pdns/dnsparser.hh
    functionUses: 0
    functionsReached:
    - PacketReader::xfr32BitInt
    - htonl
    linkageType: ''
    returnType: void
    signature: void xfrIP(uint32_t& val)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PacketReader::xfrBlob
      Src: /src/pdns/pdns/dnsparser.hh:100,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - val
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 99
    functionDepth: 0
    functionLinenumber: 99
    functionLinenumberEnd: 101
    functionName: PacketReader::xfrIP6
    functionSourceFile: /src/pdns/pdns/dnsparser.hh
    functionUses: 0
    functionsReached:
    - PacketReader::xfrBlob
    linkageType: ''
    returnType: void
    signature: void xfrIP6(std::string &val)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PacketReader::xfrBlob
      Src: /src/pdns/pdns/dnsparser.hh:105,1
    - Dst: PacketReader::xfrBlob
      Src: /src/pdns/pdns/dnsparser.hh:106,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/dnsparser.hh:107,1
    - Dst: makeComboAddressFromRaw
      Src: /src/pdns/pdns/dnsparser.hh:108,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 2
    argNames:
    - version
    - val
    argTypes:
    - uint8_t
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 103
    functionDepth: 0
    functionLinenumber: 103
    functionLinenumberEnd: 109
    functionName: PacketReader::xfrCAWithoutPort
    functionSourceFile: /src/pdns/pdns/dnsparser.hh
    functionUses: 1
    functionsReached:
    - PacketReader::xfrBlob
    - runtime_error
    - makeComboAddressFromRaw
    linkageType: ''
    returnType: void
    signature: void xfrCAWithoutPort(uint8_t version, ComboAddress &val)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PacketReader::xfr16BitInt
      Src: /src/pdns/pdns/dnsparser.hh:113,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - val
    argTypes:
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 115
      start: 111
    functionDepth: 0
    functionLinenumber: 111
    functionLinenumberEnd: 115
    functionName: PacketReader::xfrCAPort
    functionSourceFile: /src/pdns/pdns/dnsparser.hh
    functionUses: 0
    functionsReached:
    - PacketReader::xfr16BitInt
    linkageType: ''
    returnType: void
    signature: void xfrCAPort(ComboAddress &val)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PacketReader::xfr32BitInt
      Src: /src/pdns/pdns/dnsparser.hh:119,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' val'
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 117
    functionDepth: 0
    functionLinenumber: 117
    functionLinenumberEnd: 120
    functionName: PacketReader::xfrTime
    functionSourceFile: /src/pdns/pdns/dnsparser.hh
    functionUses: 0
    functionsReached:
    - PacketReader::xfr32BitInt
    linkageType: ''
    returnType: void
    signature: void xfrTime(uint32_t& val)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PacketReader::get16BitInt
      Src: /src/pdns/pdns/dnsparser.hh:125,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' val'
    argTypes:
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 123
    functionDepth: 0
    functionLinenumber: 123
    functionLinenumberEnd: 126
    functionName: PacketReader::xfr16BitInt
    functionSourceFile: /src/pdns/pdns/dnsparser.hh
    functionUses: 2
    functionsReached:
    - PacketReader::get16BitInt
    linkageType: ''
    returnType: void
    signature: void xfr16BitInt(uint16_t& val)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PacketReader::xfr16BitInt
      Src: /src/pdns/pdns/dnsparser.hh:130,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' val'
    argTypes:
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 131
      start: 128
    functionDepth: 0
    functionLinenumber: 128
    functionLinenumberEnd: 131
    functionName: PacketReader::xfrType
    functionSourceFile: /src/pdns/pdns/dnsparser.hh
    functionUses: 0
    functionsReached:
    - PacketReader::xfr16BitInt
    linkageType: ''
    returnType: void
    signature: void xfrType(uint16_t& val)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PacketReader::get8BitInt
      Src: /src/pdns/pdns/dnsparser.hh:136,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' val'
    argTypes:
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 137
      start: 134
    functionDepth: 0
    functionLinenumber: 134
    functionLinenumberEnd: 137
    functionName: PacketReader::xfr8BitInt
    functionSourceFile: /src/pdns/pdns/dnsparser.hh
    functionUses: 1
    functionsReached:
    - PacketReader::get8BitInt
    linkageType: ''
    returnType: void
    signature: void xfr8BitInt(uint8_t& val)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PacketReader::getName
      Src: /src/pdns/pdns/dnsparser.hh:141,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' name'
    argTypes:
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 142
      start: 139
    functionDepth: 0
    functionLinenumber: 139
    functionLinenumberEnd: 142
    functionName: PacketReader::xfrName
    functionSourceFile: /src/pdns/pdns/dnsparser.hh
    functionUses: 1
    functionsReached:
    - PacketReader::getName
    linkageType: ''
    returnType: void
    signature: void xfrName(DNSName& name, bool /* compress */ = false)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PacketReader::getText
      Src: /src/pdns/pdns/dnsparser.hh:146,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - text
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 144
    functionDepth: 0
    functionLinenumber: 144
    functionLinenumberEnd: 147
    functionName: PacketReader::xfrText
    functionSourceFile: /src/pdns/pdns/dnsparser.hh
    functionUses: 0
    functionsReached:
    - PacketReader::getText
    linkageType: ''
    returnType: void
    signature: void xfrText(string &text, bool multi=false, bool lenField=true)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PacketReader::getUnquotedText
      Src: /src/pdns/pdns/dnsparser.hh:150,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - text
    - lenField
    argTypes:
    - string
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 151
      start: 149
    functionDepth: 0
    functionLinenumber: 149
    functionLinenumberEnd: 151
    functionName: PacketReader::xfrUnquotedText
    functionSourceFile: /src/pdns/pdns/dnsparser.hh
    functionUses: 0
    functionsReached:
    - PacketReader::getUnquotedText
    linkageType: ''
    returnType: void
    signature: void xfrUnquotedText(string &text, bool lenField)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 173
      start: 170
    functionDepth: 0
    functionLinenumber: 170
    functionLinenumberEnd: 173
    functionName: PacketReader::eof
    functionSourceFile: /src/pdns/pdns/dnsparser.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool eof() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsparser.hh:178,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsparser.hh:178,1
    - Dst: size
      Src: /src/pdns/pdns/dnsparser.hh:178,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsparser.hh:178,1
    - Dst: makeHexDump
      Src: /src/pdns/pdns/dnsparser.hh:178,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsparser.hh:178,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsparser.hh:178,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsparser.hh:178,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 179
      start: 177
    functionDepth: 0
    functionLinenumber: 177
    functionLinenumberEnd: 179
    functionName: PacketReader::getRemaining
    functionSourceFile: /src/pdns/pdns/dnsparser.hh
    functionUses: 0
    functionsReached:
    - std::to_string
    - size
    - begin
    - std::string
    - makeHexDump
    linkageType: ''
    returnType: std::string
    signature: std::string getRemaining() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 190
      start: 187
    functionDepth: 0
    functionLinenumber: 187
    functionLinenumberEnd: 190
    functionName: PacketReader::consumeRemaining
    functionSourceFile: /src/pdns/pdns/dnsparser.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void consumeRemaining()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 196
      start: 193
    functionDepth: 0
    functionLinenumber: 193
    functionLinenumberEnd: 196
    functionName: PacketReader::getPosition
    functionSourceFile: /src/pdns/pdns/dnsparser.hh
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t getPosition() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsparser.hh:202,1
    - Dst: std::out_of_range
      Src: /src/pdns/pdns/dnsparser.hh:203,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsparser.hh:203,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsparser.hh:203,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsparser.hh:203,1
    - Dst: size
      Src: /src/pdns/pdns/dnsparser.hh:203,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - n
    argTypes:
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 206
      start: 198
    functionDepth: 0
    functionLinenumber: 198
    functionLinenumberEnd: 206
    functionName: PacketReader::skip
    functionSourceFile: /src/pdns/pdns/dnsparser.hh
    functionUses: 1
    functionsReached:
    - std::out_of_range
    - std::to_string
    - size
    linkageType: ''
    returnType: void
    signature: void skip(uint16_t n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 228
      start: 228
    functionDepth: 0
    functionLinenumber: 228
    functionLinenumberEnd: 228
    functionName: ~DNSRecordContent()
    functionSourceFile: /src/pdns/pdns/dnsparser.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~DNSRecordContent()
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: DNSPacketWriter::setCanonic
      Src: /src/pdns/pdns/dnsparser.hh:237,1
    - Dst: DNSPacketWriter::setLowercase
      Src: /src/pdns/pdns/dnsparser.hh:240,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsparser.hh:243,1
    - Dst: getType
      Src: /src/pdns/pdns/dnsparser.hh:243,1
    - Dst: toPacket
      Src: /src/pdns/pdns/dnsparser.hh:244,1
    - Dst: DNSPacketWriter::getWireFormatContent
      Src: /src/pdns/pdns/dnsparser.hh:248,1
    - Dst: DNSPacketWriter::getRecordPayload
      Src: /src/pdns/pdns/dnsparser.hh:250,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 1
    argNames:
    - ' qname'
    argTypes:
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 253
      start: 231
    functionDepth: 1
    functionLinenumber: 231
    functionLinenumberEnd: 253
    functionName: DNSRecordContent::serialize
    functionSourceFile: /src/pdns/pdns/dnsparser.hh
    functionUses: 0
    functionsReached:
    - toPacket
    - DNSPacketWriter::getRecordPayload
    - DNSPacketWriter::getWireFormatContent
    - DNSPacketWriter::setCanonic
    - DNSPacketWriter::setLowercase
    - getType
    - DNSPacketWriter::startRecord
    linkageType: ''
    returnType: string
    signature: string serialize(const DNSName& qname, bool canonic = false, bool lowerCase
      = false, bool full = false) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: typeid
      Src: /src/pdns/pdns/dnsparser.hh:257,1
    - Dst: typeid
      Src: /src/pdns/pdns/dnsparser.hh:257,1
    - Dst: getZoneRepresentation
      Src: /src/pdns/pdns/dnsparser.hh:257,1
    - Dst: getZoneRepresentation
      Src: /src/pdns/pdns/dnsparser.hh:257,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - DNSRecordContent
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 258
      start: 255
    functionDepth: 0
    functionLinenumber: 255
    functionLinenumberEnd: 258
    functionName: operator==(const DNSRecordContent& rhs) const
    functionSourceFile: /src/pdns/pdns/dnsparser.hh
    functionUses: 0
    functionsReached:
    - getZoneRepresentation
    - typeid
    linkageType: ''
    returnType: bool
    signature: bool operator==(const DNSRecordContent& rhs) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 265
      start: 265
    functionDepth: 0
    functionLinenumber: 265
    functionLinenumberEnd: 265
    functionName: DNSRecordContent::doRecordCheck
    functionSourceFile: /src/pdns/pdns/dnsparser.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void doRecordCheck(const struct DNSRecord&)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/pdns/pdns/dnsparser.hh:272,1
    - Dst: load
      Src: /src/pdns/pdns/dnsparser.hh:272,1
    - Dst: getTypemap
      Src: /src/pdns/pdns/dnsparser.hh:274,1
    - Dst: pair
      Src: /src/pdns/pdns/dnsparser.hh:274,1
    - Dst: getZmakermap
      Src: /src/pdns/pdns/dnsparser.hh:276,1
    - Dst: pair
      Src: /src/pdns/pdns/dnsparser.hh:276,1
    - Dst: getT2Namemap
      Src: /src/pdns/pdns/dnsparser.hh:278,1
    - Dst: pair
      Src: /src/pdns/pdns/dnsparser.hh:278,1
    - Dst: getN2Typemap
      Src: /src/pdns/pdns/dnsparser.hh:279,1
    - Dst: pair
      Src: /src/pdns/pdns/dnsparser.hh:279,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 5
    argNames:
    - cl
    - ty
    - f
    - z
    - name
    argTypes:
    - uint16_t
    - uint16_t
    - makerfunc_t*
    - zmakerfunc_t*
    - char*
    assertStmts:
    - condition: (!d_locked.load())
      pos:
        line_end: 271
        line_start: 271
        source_file: /src/pdns/pdns/dnsparser.hh
    constantsTouched: []
    func_position:
      end: 280
      start: 270
    functionDepth: 0
    functionLinenumber: 270
    functionLinenumberEnd: 280
    functionName: DNSRecordContent::regist
    functionSourceFile: /src/pdns/pdns/dnsparser.hh
    functionUses: 2
    functionsReached:
    - load
    - getN2Typemap
    - assert
    - getTypemap
    - getT2Namemap
    - getZmakermap
    - pair
    linkageType: ''
    returnType: void
    signature: void regist(uint16_t cl, uint16_t ty, makerfunc_t* f, zmakerfunc_t*
      z, const char* name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: boost::starts_with
      Src: /src/pdns/pdns/dnsparser.hh:284,1
    - Dst: boost::starts_with
      Src: /src/pdns/pdns/dnsparser.hh:284,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - ' name'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 285
      start: 282
    functionDepth: 0
    functionLinenumber: 282
    functionLinenumberEnd: 285
    functionName: DNSRecordContent::isUnknownType
    functionSourceFile: /src/pdns/pdns/dnsparser.hh
    functionUses: 1
    functionsReached:
    - boost::starts_with
    linkageType: ''
    returnType: bool
    signature: bool isUnknownType(const string& name)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: getN2Typemap
      Src: /src/pdns/pdns/dnsparser.hh:289,1
    - Dst: toUpper
      Src: /src/pdns/pdns/dnsparser.hh:289,1
    - Dst: getN2Typemap
      Src: /src/pdns/pdns/dnsparser.hh:290,1
    - Dst: DNSRecordContent::isUnknownType
      Src: /src/pdns/pdns/dnsparser.hh:293,1
    - Dst: pdns::checked_stoi<uint16_t>
      Src: /src/pdns/pdns/dnsparser.hh:294,1
    - Dst: substr
      Src: /src/pdns/pdns/dnsparser.hh:294,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/dnsparser.hh:297,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 1
    argNames:
    - ' name'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 298
      start: 287
    functionDepth: 0
    functionLinenumber: 287
    functionLinenumberEnd: 298
    functionName: DNSRecordContent::TypeToNumber
    functionSourceFile: /src/pdns/pdns/dnsparser.hh
    functionUses: 8
    functionsReached:
    - getN2Typemap
    - toUpper
    - runtime_error
    - pdns::checked_stoi<uint16_t>
    - substr
    - DNSRecordContent::isUnknownType
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t TypeToNumber(const string& name)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: getT2Namemap
      Src: /src/pdns/pdns/dnsparser.hh:302,1
    - Dst: pair
      Src: /src/pdns/pdns/dnsparser.hh:302,1
    - Dst: getT2Namemap
      Src: /src/pdns/pdns/dnsparser.hh:303,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsparser.hh:304,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - num
    argTypes:
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 307
      start: 300
    functionDepth: 0
    functionLinenumber: 300
    functionLinenumberEnd: 307
    functionName: DNSRecordContent::NumberToType
    functionSourceFile: /src/pdns/pdns/dnsparser.hh
    functionUses: 23
    functionsReached:
    - getT2Namemap
    - std::to_string
    - pair
    linkageType: ''
    returnType: string
    signature: string NumberToType(uint16_t num, uint16_t classnum = QClass::IN)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: store
      Src: /src/pdns/pdns/dnsparser.hh:318,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 319
      start: 316
    functionDepth: 0
    functionLinenumber: 316
    functionLinenumberEnd: 319
    functionName: DNSRecordContent::lock
    functionSourceFile: /src/pdns/pdns/dnsparser.hh
    functionUses: 1
    functionsReached:
    - store
    linkageType: ''
    returnType: void
    signature: void lock()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 339
      start: 337
    functionDepth: 0
    functionLinenumber: 337
    functionLinenumberEnd: 339
    functionName: DNSRecord
    functionSourceFile: /src/pdns/pdns/dnsparser.hh
    functionUses: 12
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void DNSRecord()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsparser.hh:348,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsparser.hh:349,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 3
    argNames:
    - ' name'
    - content
    - type
    argTypes:
    - std::string
    - std::shared_ptr<DNSRecordContent>
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 354
      start: 341
    functionDepth: 0
    functionLinenumber: 341
    functionLinenumberEnd: 354
    functionName: DNSRecord
    functionSourceFile: /src/pdns/pdns/dnsparser.hh
    functionUses: 12
    functionsReached:
    - std::move
    - DNSName
    linkageType: ''
    returnType: void
    signature: "void DNSRecord(const std::string& name,\n            std::shared_ptr<DNSRecordContent>
      content,\n            const uint16_t type,\n            const uint16_t qclass
      = QClass::IN,\n            const uint32_t ttl = 86400,\n            const uint16_t
      clen = 0,\n            const DNSResourceRecord::Place place = DNSResourceRecord::ANSWER)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getZoneRepresentation
      Src: /src/pdns/pdns/dnsparser.hh:369,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsparser.hh:374,1
    - Dst: std::stringstream::str
      Src: /src/pdns/pdns/dnsparser.hh:375,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 376
      start: 366
    functionDepth: 0
    functionLinenumber: 366
    functionLinenumberEnd: 376
    functionName: print
    functionSourceFile: /src/pdns/pdns/dnsparser.hh
    functionUses: 4
    functionsReached:
    - getZoneRepresentation
    - std::stringstream::str
    - std::to_string
    linkageType: ''
    returnType: std::string
    signature: std::string print(const std::string& indent = "") const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: toLogString
      Src: /src/pdns/pdns/dnsparser.hh:380,1
    - Dst: QType
      Src: /src/pdns/pdns/dnsparser.hh:382,1
    - Dst: getContent
      Src: /src/pdns/pdns/dnsparser.hh:384,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 386
      start: 378
    functionDepth: 0
    functionLinenumber: 378
    functionLinenumberEnd: 386
    functionName: toString
    functionSourceFile: /src/pdns/pdns/dnsparser.hh
    functionUses: 144
    functionsReached:
    - toLogString
    - QType
    - getContent
    linkageType: ''
    returnType: std::string
    signature: std::string toString() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' content'
    argTypes:
    - std::shared_ptr<const DNSRecordContent>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 391
      start: 388
    functionDepth: 0
    functionLinenumber: 388
    functionLinenumberEnd: 391
    functionName: setContent
    functionSourceFile: /src/pdns/pdns/dnsparser.hh
    functionUses: 11
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setContent(const std::shared_ptr<const DNSRecordContent>& content)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsparser.hh:395,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - ' content'
    argTypes:
    - std::shared_ptr<const DNSRecordContent>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 396
      start: 393
    functionDepth: 0
    functionLinenumber: 393
    functionLinenumberEnd: 396
    functionName: setContent
    functionSourceFile: /src/pdns/pdns/dnsparser.hh
    functionUses: 11
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void setContent(std::shared_ptr<const DNSRecordContent>&& content)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 401
      start: 398
    functionDepth: 0
    functionLinenumber: 398
    functionLinenumberEnd: 401
    functionName: '& getContent() const'
    functionSourceFile: /src/pdns/pdns/dnsparser.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::shared_ptr<const DNSRecordContent>
    signature: std::shared_ptr<const DNSRecordContent> & getContent() const
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: std::tie
      Src: /src/pdns/pdns/dnsparser.hh:405,1
    - Dst: std::tie
      Src: /src/pdns/pdns/dnsparser.hh:405,1
    - Dst: std::tie
      Src: /src/pdns/pdns/dnsparser.hh:408,1
    - Dst: std::tie
      Src: /src/pdns/pdns/dnsparser.hh:408,1
    - Dst: toLower
      Src: /src/pdns/pdns/dnsparser.hh:413,1
    - Dst: getZoneRepresentation
      Src: /src/pdns/pdns/dnsparser.hh:413,1
    - Dst: toLower
      Src: /src/pdns/pdns/dnsparser.hh:415,1
    - Dst: d_content::getZoneRepresentation
      Src: /src/pdns/pdns/dnsparser.hh:415,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - DNSRecord
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 418
      start: 403
    functionDepth: 0
    functionLinenumber: 403
    functionLinenumberEnd: 418
    functionName: operator<(const DNSRecord& rhs) const
    functionSourceFile: /src/pdns/pdns/dnsparser.hh
    functionUses: 0
    functionsReached:
    - getZoneRepresentation
    - toLower
    - std::tie
    - d_content::getZoneRepresentation
    linkageType: ''
    returnType: bool
    signature: bool operator<(const DNSRecord& rhs) const
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: d_name::canonCompare_three_way
      Src: /src/pdns/pdns/dnsparser.hh:426,1
    - Dst: std::tie
      Src: /src/pdns/pdns/dnsparser.hh:434,1
    - Dst: std::tie
      Src: /src/pdns/pdns/dnsparser.hh:434,1
    - Dst: std::tie
      Src: /src/pdns/pdns/dnsparser.hh:437,1
    - Dst: std::tie
      Src: /src/pdns/pdns/dnsparser.hh:437,1
    - Dst: d_content::getZoneRepresentation
      Src: /src/pdns/pdns/dnsparser.hh:442,1
    - Dst: d_content::getZoneRepresentation
      Src: /src/pdns/pdns/dnsparser.hh:444,1
    - Dst: toLower
      Src: /src/pdns/pdns/dnsparser.hh:454,1
    - Dst: toLower
      Src: /src/pdns/pdns/dnsparser.hh:454,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 23
    argCount: 2
    argNames:
    - ' a'
    - ' b'
    argTypes:
    - DNSRecord
    - DNSRecord
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 456
      start: 421
    functionDepth: 0
    functionLinenumber: 421
    functionLinenumberEnd: 456
    functionName: prettyCompare
    functionSourceFile: /src/pdns/pdns/dnsparser.hh
    functionUses: 0
    functionsReached:
    - d_name::canonCompare_three_way
    - toLower
    - std::tie
    - d_content::getZoneRepresentation
    linkageType: ''
    returnType: bool
    signature: bool prettyCompare(const DNSRecord& a, const DNSRecord& b)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 5
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - DNSRecord
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 465
      start: 458
    functionDepth: 0
    functionLinenumber: 458
    functionLinenumberEnd: 465
    functionName: operator==(const DNSRecord& rhs) const
    functionSourceFile: /src/pdns/pdns/dnsparser.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool operator==(const DNSRecord& rhs) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sizeEstimate
      Src: /src/pdns/pdns/dnsparser.hh:469,1
    - Dst: sizeEstimate
      Src: /src/pdns/pdns/dnsparser.hh:469,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 470
      start: 467
    functionDepth: 0
    functionLinenumber: 467
    functionLinenumberEnd: 470
    functionName: sizeEstimate
    functionSourceFile: /src/pdns/pdns/dnsparser.hh
    functionUses: 27
    functionsReached:
    - sizeEstimate
    linkageType: ''
    returnType: size_t
    signature: size_t sizeEstimate() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' other'
    argTypes:
    - DNSZoneRecord
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 485
      start: 483
    functionDepth: 0
    functionLinenumber: 483
    functionLinenumberEnd: 485
    functionName: operator<(const DNSZoneRecord& other) const
    functionSourceFile: /src/pdns/pdns/dnsparser.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool operator<(const DNSZoneRecord& other) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: copyRecord
      Src: /src/pdns/pdns/dnsparser.hh:494,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' dr'
    - ' pr'
    argTypes:
    - DNSRecord
    - PacketReader
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 495
      start: 491
    functionDepth: 0
    functionLinenumber: 491
    functionLinenumberEnd: 495
    functionName: UnknownRecordContent::UnknownRecordContent
    functionSourceFile: /src/pdns/pdns/dnsparser.hh
    functionUses: 0
    functionsReached:
    - copyRecord
    linkageType: ''
    returnType: void
    signature: void UnknownRecordContent(const DNSRecord& dr, PacketReader& pr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 504
      start: 501
    functionDepth: 0
    functionLinenumber: 501
    functionLinenumberEnd: 504
    functionName: UnknownRecordContent::getType
    functionSourceFile: /src/pdns/pdns/dnsparser.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t getType() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 509
      start: 506
    functionDepth: 0
    functionLinenumber: 506
    functionLinenumberEnd: 509
    functionName: '& getRawContent() const'
    functionSourceFile: /src/pdns/pdns/dnsparser.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: vector<uint8_t>
    signature: vector<uint8_t> & getRawContent() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: UnknownRecordContent::sizeEstimate
      Src: /src/pdns/pdns/dnsparser.hh:513,1
    - Dst: size
      Src: /src/pdns/pdns/dnsparser.hh:513,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 514
      start: 511
    functionDepth: 0
    functionLinenumber: 511
    functionLinenumberEnd: 514
    functionName: UnknownRecordContent::sizeEstimate
    functionSourceFile: /src/pdns/pdns/dnsparser.hh
    functionUses: 1
    functionsReached:
    - UnknownRecordContent::sizeEstimate
    - size
    linkageType: ''
    returnType: size_t
    signature: size_t sizeEstimate() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MOADNSParser::init
      Src: /src/pdns/pdns/dnsparser.hh:528,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - query
    - ' buffer'
    argTypes:
    - bool
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 529
      start: 526
    functionDepth: 0
    functionLinenumber: 526
    functionLinenumberEnd: 529
    functionName: MOADNSParser::MOADNSParser
    functionSourceFile: /src/pdns/pdns/dnsparser.hh
    functionUses: 0
    functionsReached:
    - MOADNSParser::init
    linkageType: ''
    returnType: void
    signature: void MOADNSParser(bool query, const string& buffer)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MOADNSParser::init
      Src: /src/pdns/pdns/dnsparser.hh:534,1
    - Dst: std::string_view
      Src: /src/pdns/pdns/dnsparser.hh:534,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - query
    - packet
    - len
    argTypes:
    - bool
    - char*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 535
      start: 532
    functionDepth: 0
    functionLinenumber: 532
    functionLinenumberEnd: 535
    functionName: MOADNSParser::MOADNSParser
    functionSourceFile: /src/pdns/pdns/dnsparser.hh
    functionUses: 0
    functionsReached:
    - std::string_view
    - MOADNSParser::init
    linkageType: ''
    returnType: void
    signature: void MOADNSParser(bool query, const char *packet, unsigned int len)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 549
      start: 546
    functionDepth: 0
    functionLinenumber: 546
    functionLinenumberEnd: 549
    functionName: MOADNSParser::getTSIGPos
    functionSourceFile: /src/pdns/pdns/dnsparser.hh
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t getTSIGPos() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::dynamic_pointer_cast<const T>
      Src: /src/pdns/pdns/dnsparser.hh:577,1
    - Dst: getContent
      Src: /src/pdns/pdns/dnsparser.hh:577,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' dr'
    argTypes:
    - DNSRecord
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 578
      start: 575
    functionDepth: 0
    functionLinenumber: 575
    functionLinenumberEnd: 578
    functionName: getRR
    functionSourceFile: /src/pdns/pdns/dnsparser.hh
    functionUses: 23
    functionsReached:
    - getContent
    - std::dynamic_pointer_cast<const T>
    linkageType: ''
    returnType: std::shared_ptr<const T>
    signature: std::shared_ptr<const T> getRR(const DNSRecord& dr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: data
      Src: /src/pdns/pdns/dnsparser.hh:586,1
    - Dst: length
      Src: /src/pdns/pdns/dnsparser.hh:586,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' packet'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 587
      start: 585
    functionDepth: 0
    functionLinenumber: 585
    functionLinenumberEnd: 587
    functionName: DNSPacketMangler::DNSPacketMangler
    functionSourceFile: /src/pdns/pdns/dnsparser.hh
    functionUses: 0
    functionsReached:
    - length
    - data
    linkageType: ''
    returnType: void
    signature: void DNSPacketMangler(std::string& packet)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - packet
    - length
    argTypes:
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 590
      start: 588
    functionDepth: 0
    functionLinenumber: 588
    functionLinenumberEnd: 590
    functionName: DNSPacketMangler::DNSPacketMangler
    functionSourceFile: /src/pdns/pdns/dnsparser.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void DNSPacketMangler(char* packet, size_t length)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DNSPacketMangler::get8BitInt
      Src: /src/pdns/pdns/dnsparser.hh:599,1
    - Dst: DNSPacketMangler::get8BitInt
      Src: /src/pdns/pdns/dnsparser.hh:601,1
    - Dst: DNSPacketMangler::skipBytes
      Src: /src/pdns/pdns/dnsparser.hh:604,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 606
      start: 596
    functionDepth: 0
    functionLinenumber: 596
    functionLinenumberEnd: 606
    functionName: DNSPacketMangler::skipDomainName
    functionSourceFile: /src/pdns/pdns/dnsparser.hh
    functionUses: 9
    functionsReached:
    - DNSPacketMangler::get8BitInt
    - DNSPacketMangler::skipBytes
    linkageType: ''
    returnType: void
    signature: void skipDomainName()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSPacketMangler::moveOffset
      Src: /src/pdns/pdns/dnsparser.hh:610,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - bytes
    argTypes:
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 611
      start: 608
    functionDepth: 0
    functionLinenumber: 608
    functionLinenumberEnd: 611
    functionName: DNSPacketMangler::skipBytes
    functionSourceFile: /src/pdns/pdns/dnsparser.hh
    functionUses: 10
    functionsReached:
    - DNSPacketMangler::moveOffset
    linkageType: ''
    returnType: void
    signature: void skipBytes(uint16_t bytes)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSPacketMangler::rewindOffset
      Src: /src/pdns/pdns/dnsparser.hh:614,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - by
    argTypes:
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 615
      start: 612
    functionDepth: 0
    functionLinenumber: 612
    functionLinenumberEnd: 615
    functionName: DNSPacketMangler::rewindBytes
    functionSourceFile: /src/pdns/pdns/dnsparser.hh
    functionUses: 1
    functionsReached:
    - DNSPacketMangler::rewindOffset
    linkageType: ''
    returnType: void
    signature: void rewindBytes(uint16_t by)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSPacketMangler::moveOffset
      Src: /src/pdns/pdns/dnsparser.hh:619,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsparser.hh:621,1
    - Dst: ntohl
      Src: /src/pdns/pdns/dnsparser.hh:622,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 623
      start: 616
    functionDepth: 0
    functionLinenumber: 616
    functionLinenumberEnd: 623
    functionName: DNSPacketMangler::get32BitInt
    functionSourceFile: /src/pdns/pdns/dnsparser.hh
    functionUses: 2
    functionsReached:
    - DNSPacketMangler::moveOffset
    - ntohl
    - memcpy
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t get32BitInt()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSPacketMangler::moveOffset
      Src: /src/pdns/pdns/dnsparser.hh:627,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsparser.hh:629,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsparser.hh:630,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 631
      start: 624
    functionDepth: 0
    functionLinenumber: 624
    functionLinenumberEnd: 631
    functionName: DNSPacketMangler::get16BitInt
    functionSourceFile: /src/pdns/pdns/dnsparser.hh
    functionUses: 8
    functionsReached:
    - DNSPacketMangler::moveOffset
    - ntohs
    - memcpy
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t get16BitInt()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSPacketMangler::moveOffset
      Src: /src/pdns/pdns/dnsparser.hh:636,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 638
      start: 633
    functionDepth: 0
    functionLinenumber: 633
    functionLinenumberEnd: 638
    functionName: DNSPacketMangler::get8BitInt
    functionSourceFile: /src/pdns/pdns/dnsparser.hh
    functionUses: 1
    functionsReached:
    - DNSPacketMangler::moveOffset
    linkageType: ''
    returnType: uint8_t
    signature: uint8_t get8BitInt()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSPacketMangler::get16BitInt
      Src: /src/pdns/pdns/dnsparser.hh:642,1
    - Dst: DNSPacketMangler::moveOffset
      Src: /src/pdns/pdns/dnsparser.hh:643,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 644
      start: 640
    functionDepth: 0
    functionLinenumber: 640
    functionLinenumberEnd: 644
    functionName: DNSPacketMangler::skipRData
    functionSourceFile: /src/pdns/pdns/dnsparser.hh
    functionUses: 9
    functionsReached:
    - DNSPacketMangler::moveOffset
    - DNSPacketMangler::get16BitInt
    linkageType: ''
    returnType: void
    signature: void skipRData()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSPacketMangler::get16BitInt
      Src: /src/pdns/pdns/dnsparser.hh:648,1
    - Dst: DNSPacketMangler::moveOffset
      Src: /src/pdns/pdns/dnsparser.hh:650,1
    - Dst: std::pair<uint32_t,uint32_t>
      Src: /src/pdns/pdns/dnsparser.hh:652,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 653
      start: 646
    functionDepth: 0
    functionLinenumber: 646
    functionLinenumberEnd: 653
    functionName: DNSPacketMangler::skipRDataAndReturnOffsets
    functionSourceFile: /src/pdns/pdns/dnsparser.hh
    functionUses: 1
    functionsReached:
    - DNSPacketMangler::moveOffset
    - std::pair<uint32_t,uint32_t>
    - DNSPacketMangler::get16BitInt
    linkageType: ''
    returnType: std::pair<uint32_t, uint32_t>
    signature: std::pair<uint32_t, uint32_t> skipRDataAndReturnOffsets()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DNSPacketMangler::moveOffset
      Src: /src/pdns/pdns/dnsparser.hh:658,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsparser.hh:661,1
    - Dst: ntohl
      Src: /src/pdns/pdns/dnsparser.hh:662,1
    - Dst: htonl
      Src: /src/pdns/pdns/dnsparser.hh:668,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsparser.hh:669,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - decrease
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 670
      start: 655
    functionDepth: 0
    functionLinenumber: 655
    functionLinenumberEnd: 670
    functionName: DNSPacketMangler::decreaseAndSkip32BitInt
    functionSourceFile: /src/pdns/pdns/dnsparser.hh
    functionUses: 1
    functionsReached:
    - htonl
    - DNSPacketMangler::moveOffset
    - ntohl
    - memcpy
    linkageType: ''
    returnType: void
    signature: void decreaseAndSkip32BitInt(uint32_t decrease)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSPacketMangler::moveOffset
      Src: /src/pdns/pdns/dnsparser.hh:674,1
    - Dst: htonl
      Src: /src/pdns/pdns/dnsparser.hh:676,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsparser.hh:677,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - value
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 678
      start: 672
    functionDepth: 0
    functionLinenumber: 672
    functionLinenumberEnd: 678
    functionName: DNSPacketMangler::setAndSkip32BitInt
    functionSourceFile: /src/pdns/pdns/dnsparser.hh
    functionUses: 1
    functionsReached:
    - DNSPacketMangler::moveOffset
    - memcpy
    - htonl
    linkageType: ''
    returnType: void
    signature: void setAndSkip32BitInt(uint32_t value)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 683
      start: 680
    functionDepth: 0
    functionLinenumber: 680
    functionLinenumberEnd: 683
    functionName: DNSPacketMangler::getOffset
    functionSourceFile: /src/pdns/pdns/dnsparser.hh
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t getOffset() const
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: std::swap
      Src: /src/pdns/pdns/dnsparser.hh:688,1
    - Dst: std::out_of_range
      Src: /src/pdns/pdns/dnsparser.hh:691,1
    - Dst: std::out_of_range
      Src: /src/pdns/pdns/dnsparser.hh:694,1
    - Dst: std::out_of_range
      Src: /src/pdns/pdns/dnsparser.hh:697,1
    - Dst: std::out_of_range
      Src: /src/pdns/pdns/dnsparser.hh:700,1
    - Dst: std::out_of_range
      Src: /src/pdns/pdns/dnsparser.hh:704,1
    - Dst: std::swap_ranges
      Src: /src/pdns/pdns/dnsparser.hh:706,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 20
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - std::pair<uint32_t, uint32_t>
    - std::pair<uint32_t, uint32_t>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 707
      start: 685
    functionDepth: 0
    functionLinenumber: 685
    functionLinenumberEnd: 707
    functionName: DNSPacketMangler::swapInPlace
    functionSourceFile: /src/pdns/pdns/dnsparser.hh
    functionUses: 1
    functionsReached:
    - std::swap_ranges
    - std::swap
    - std::out_of_range
    linkageType: ''
    returnType: void
    signature: void swapInPlace(std::pair<uint32_t, uint32_t> a, std::pair<uint32_t,
      uint32_t> b)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::out_of_range
      Src: /src/pdns/pdns/dnsparser.hh:714,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsparser.hh:714,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsparser.hh:715,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - by
    argTypes:
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 716
      start: 710
    functionDepth: 0
    functionLinenumber: 710
    functionLinenumberEnd: 716
    functionName: DNSPacketMangler::moveOffset
    functionSourceFile: /src/pdns/pdns/dnsparser.hh
    functionUses: 8
    functionsReached:
    - std::out_of_range
    - std::to_string
    linkageType: ''
    returnType: void
    signature: void moveOffset(uint16_t by)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: std::out_of_range
      Src: /src/pdns/pdns/dnsparser.hh:721,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsparser.hh:721,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsparser.hh:722,1
    - Dst: std::out_of_range
      Src: /src/pdns/pdns/dnsparser.hh:725,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsparser.hh:725,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsparser.hh:726,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 6
    argCount: 1
    argNames:
    - by
    argTypes:
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 727
      start: 718
    functionDepth: 0
    functionLinenumber: 718
    functionLinenumberEnd: 727
    functionName: DNSPacketMangler::rewindOffset
    functionSourceFile: /src/pdns/pdns/dnsparser.hh
    functionUses: 1
    functionsReached:
    - std::out_of_range
    - std::to_string
    linkageType: ''
    returnType: void
    signature: void rewindOffset(uint16_t by)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 37
    functionDepth: 0
    functionLinenumber: 37
    functionLinenumberEnd: 37
    functionName: StatRing::StatRing
    functionSourceFile: /src/pdns/pdns/statbag.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void StatRing(const StatRing&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 38
    functionDepth: 0
    functionLinenumber: 38
    functionLinenumberEnd: 38
    functionName: '& operator=(const StatRing&)'
    functionSourceFile: /src/pdns/pdns/statbag.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: StatRing
    signature: StatRing & operator=(const StatRing&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 39
      start: 39
    functionDepth: 0
    functionLinenumber: 39
    functionLinenumberEnd: 39
    functionName: '& operator=(StatRing&&)'
    functionSourceFile: /src/pdns/pdns/statbag.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: StatRing
    signature: StatRing & operator=(StatRing&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 40
    functionDepth: 0
    functionLinenumber: 40
    functionLinenumberEnd: 40
    functionName: StatRing::StatRing
    functionSourceFile: /src/pdns/pdns/statbag.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void StatRing(StatRing&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - pair<T,int>
    - pair<T,int>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 53
    functionDepth: 0
    functionLinenumber: 53
    functionLinenumberEnd: 56
    functionName: StatRing::popisort
    functionSourceFile: /src/pdns/pdns/statbag.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool popisort(const pair<T,int> &a, const pair<T,int> &b)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: find
      Src: /src/pdns/pdns/statbag.hh:99,1
    - Dst: end
      Src: /src/pdns/pdns/statbag.hh:100,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/statbag.hh:101,1
    - Dst: std::string
      Src: /src/pdns/pdns/statbag.hh:101,1
    - Dst: auto::second::lock
      Src: /src/pdns/pdns/statbag.hh:104,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 2
    argNames:
    - name
    - item
    argTypes:
    - char*
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 96
    functionDepth: 0
    functionLinenumber: 96
    functionLinenumberEnd: 106
    functionName: StatBag::ringAccount
    functionSourceFile: /src/pdns/pdns/statbag.hh
    functionUses: 1
    functionsReached:
    - end
    - runtime_error
    - auto::second::lock
    - std::string
    - find
    linkageType: ''
    returnType: void
    signature: void ringAccount(const char* name, const string &item)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: find
      Src: /src/pdns/pdns/statbag.hh:110,1
    - Dst: end
      Src: /src/pdns/pdns/statbag.hh:111,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/statbag.hh:112,1
    - Dst: std::string
      Src: /src/pdns/pdns/statbag.hh:112,1
    - Dst: auto::second::lock
      Src: /src/pdns/pdns/statbag.hh:114,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 2
    argNames:
    - name
    - item
    argTypes:
    - char*
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 107
    functionDepth: 0
    functionLinenumber: 107
    functionLinenumberEnd: 116
    functionName: StatBag::ringAccount
    functionSourceFile: /src/pdns/pdns/statbag.hh
    functionUses: 1
    functionsReached:
    - end
    - runtime_error
    - auto::second::lock
    - std::string
    - find
    linkageType: ''
    returnType: void
    signature: void ringAccount(const char* name, const ComboAddress &item)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: find
      Src: /src/pdns/pdns/statbag.hh:120,1
    - Dst: end
      Src: /src/pdns/pdns/statbag.hh:121,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/statbag.hh:122,1
    - Dst: std::string
      Src: /src/pdns/pdns/statbag.hh:122,1
    - Dst: auto::second::lock
      Src: /src/pdns/pdns/statbag.hh:124,1
    - Dst: std::tuple
      Src: /src/pdns/pdns/statbag.hh:124,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 3
    argNames:
    - name
    - dnsname
    - qtype
    argTypes:
    - char*
    - DNSName
    - QType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 117
    functionDepth: 0
    functionLinenumber: 117
    functionLinenumberEnd: 126
    functionName: StatBag::ringAccount
    functionSourceFile: /src/pdns/pdns/statbag.hh
    functionUses: 1
    functionsReached:
    - end
    - runtime_error
    - auto::second::lock
    - std::tuple
    - std::string
    - find
    linkageType: ''
    returnType: void
    signature: void ringAccount(const char* name, const DNSName &dnsname, const QType
      &qtype)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 131
      start: 128
    functionDepth: 0
    functionLinenumber: 128
    functionLinenumberEnd: 131
    functionName: StatBag::doRings
    functionSourceFile: /src/pdns/pdns/statbag.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void doRings()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: StatBag::exists
      Src: /src/pdns/pdns/statbag.hh:158,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - key
    - value
    argTypes:
    - string
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 161
      start: 156
    functionDepth: 1
    functionLinenumber: 156
    functionLinenumberEnd: 161
    functionName: StatBag::deposit
    functionSourceFile: /src/pdns/pdns/statbag.hh
    functionUses: 0
    functionsReached:
    - StatBag::exists
    linkageType: ''
    returnType: void
    signature: void StatBag::deposit(const string &key, int value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: StatBag::deposit
      Src: /src/pdns/pdns/statbag.hh:165,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - key
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 166
      start: 163
    functionDepth: 2
    functionLinenumber: 163
    functionLinenumberEnd: 166
    functionName: StatBag::inc
    functionSourceFile: /src/pdns/pdns/statbag.hh
    functionUses: 2
    functionsReached:
    - StatBag::deposit
    linkageType: ''
    returnType: void
    signature: void StatBag::inc(const string &key)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: UeberBackend::UeberBackend
      Src: /src/pdns/pdns/dnsseckeeper.hh:62,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - slog
    argTypes:
    - Logr::log_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 62
    functionDepth: 1
    functionLinenumber: 62
    functionLinenumberEnd: 65
    functionName: DNSSECKeeper::DNSSECKeeper
    functionSourceFile: /src/pdns/pdns/dnsseckeeper.hh
    functionUses: 0
    functionsReached:
    - UeberBackend::UeberBackend
    linkageType: ''
    returnType: void
    signature: void DNSSECKeeper(Logr::log_t slog)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - slog
    - db
    argTypes:
    - Logr::log_t
    - UeberBackend*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 67
    functionDepth: 0
    functionLinenumber: 67
    functionLinenumberEnd: 69
    functionName: DNSSECKeeper::DNSSECKeeper
    functionSourceFile: /src/pdns/pdns/dnsseckeeper.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void DNSSECKeeper(Logr::log_t slog, UeberBackend* db)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 71
    functionDepth: 0
    functionLinenumber: 71
    functionLinenumberEnd: 75
    functionName: ~DNSSECKeeper()
    functionSourceFile: /src/pdns/pdns/dnsseckeeper.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~DNSSECKeeper()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 77
    functionDepth: 0
    functionLinenumber: 77
    functionLinenumberEnd: 77
    functionName: DNSSECKeeper::DNSSECKeeper
    functionSourceFile: /src/pdns/pdns/dnsseckeeper.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void DNSSECKeeper(const DNSSECKeeper&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 78
    functionDepth: 0
    functionLinenumber: 78
    functionLinenumberEnd: 78
    functionName: operator=(const DNSSECKeeper&)
    functionSourceFile: /src/pdns/pdns/dnsseckeeper.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: DNSSECKeeper
    signature: DNSSECKeeper operator=(const DNSSECKeeper&)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: backends::begin
      Src: /src/pdns/pdns/dnsseckeeper.hh:121,1
    - Dst: DNSSECKeeper::startTransaction
      Src: /src/pdns/pdns/dnsseckeeper.hh:121,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' zone'
    argTypes:
    - ZoneName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 122
      start: 119
    functionDepth: 1
    functionLinenumber: 119
    functionLinenumberEnd: 122
    functionName: DNSSECKeeper::startTransaction
    functionSourceFile: /src/pdns/pdns/dnsseckeeper.hh
    functionUses: 3
    functionsReached:
    - DNSSECKeeper::startTransaction
    - backends::begin
    linkageType: ''
    returnType: void
    signature: void startTransaction(const ZoneName& zone)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: backends::begin
      Src: /src/pdns/pdns/dnsseckeeper.hh:126,1
    - Dst: DNSSECKeeper::commitTransaction
      Src: /src/pdns/pdns/dnsseckeeper.hh:126,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 127
      start: 124
    functionDepth: 1
    functionLinenumber: 124
    functionLinenumberEnd: 127
    functionName: DNSSECKeeper::commitTransaction
    functionSourceFile: /src/pdns/pdns/dnsseckeeper.hh
    functionUses: 3
    functionsReached:
    - DNSSECKeeper::commitTransaction
    - backends::begin
    linkageType: ''
    returnType: void
    signature: void commitTransaction()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - now
    argTypes:
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 153
      start: 150
    functionDepth: 0
    functionLinenumber: 150
    functionLinenumberEnd: 153
    functionName: DNSSECKeeper::isStale
    functionSourceFile: /src/pdns/pdns/dnsseckeeper.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t isStale(time_t now) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - now
    argTypes:
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 165
      start: 162
    functionDepth: 0
    functionLinenumber: 162
    functionLinenumberEnd: 165
    functionName: DNSSECKeeper::isStale
    functionSourceFile: /src/pdns/pdns/dnsseckeeper.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: time_t
    signature: time_t isStale(time_t now) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnstap.cc:65,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 63
    functionDepth: 0
    functionLinenumber: 63
    functionLinenumberEnd: 66
    functionName: '&& DnstapMessage::getBuffer()'
    functionSourceFile: /src/pdns/pdns/dnstap.cc
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: std::string
    signature: std::string && DnstapMessage::getBuffer()
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnstap.cc:69,1
    - Dst: protozero::pbf_writer::add_bytes
      Src: /src/pdns/pdns/dnstap.cc:73,1
    - Dst: protozero::pbf_writer::add_bytes
      Src: /src/pdns/pdns/dnstap.cc:74,1
    - Dst: protozero::pbf_writer::add_enum
      Src: /src/pdns/pdns/dnstap.cc:75,1
    - Dst: protozero::pbf_writer::add_enum
      Src: /src/pdns/pdns/dnstap.cc:80,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/dnstap.cc:80,1
    - Dst: protozero::pbf_writer::add_enum
      Src: /src/pdns/pdns/dnstap.cc:82,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/dnstap.cc:82,1
    - Dst: protozero::pbf_writer::add_enum
      Src: /src/pdns/pdns/dnstap.cc:85,1
    - Dst: protozero::pbf_writer::add_enum
      Src: /src/pdns/pdns/dnstap.cc:88,1
    - Dst: protozero::pbf_writer::add_bytes
      Src: /src/pdns/pdns/dnstap.cc:94,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnstap.cc:94,1
    - Dst: protozero::pbf_writer::add_bytes
      Src: /src/pdns/pdns/dnstap.cc:98,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnstap.cc:98,1
    - Dst: protozero::pbf_writer::add_uint32
      Src: /src/pdns/pdns/dnstap.cc:100,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnstap.cc:100,1
    - Dst: protozero::pbf_writer::add_bytes
      Src: /src/pdns/pdns/dnstap.cc:106,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnstap.cc:106,1
    - Dst: protozero::pbf_writer::add_bytes
      Src: /src/pdns/pdns/dnstap.cc:110,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnstap.cc:110,1
    - Dst: protozero::pbf_writer::add_uint32
      Src: /src/pdns/pdns/dnstap.cc:112,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnstap.cc:112,1
    - Dst: protozero::pbf_writer::add_uint64
      Src: /src/pdns/pdns/dnstap.cc:116,1
    - Dst: protozero::pbf_writer::add_fixed32
      Src: /src/pdns/pdns/dnstap.cc:117,1
    - Dst: protozero::pbf_writer::add_uint64
      Src: /src/pdns/pdns/dnstap.cc:121,1
    - Dst: protozero::pbf_writer::add_fixed32
      Src: /src/pdns/pdns/dnstap.cc:122,1
    - Dst: protozero::pbf_writer::add_bytes
      Src: /src/pdns/pdns/dnstap.cc:128,1
    - Dst: protozero::pbf_writer::add_bytes
      Src: /src/pdns/pdns/dnstap.cc:131,1
    - Dst: protozero::pbf_writer::add_enum
      Src: /src/pdns/pdns/dnstap.cc:136,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/dnstap.cc:136,1
    - Dst: empty
      Src: /src/pdns/pdns/dnstap.cc:139,1
    - Dst: protozero::pbf_writer::add_bytes
      Src: /src/pdns/pdns/dnstap.cc:140,1
    - Dst: toDNSString
      Src: /src/pdns/pdns/dnstap.cc:140,1
    - Dst: protozero::pbf_writer::commit
      Src: /src/pdns/pdns/dnstap.cc:143,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 52
    argCount: 12
    argNames:
    - ' buffer'
    - type
    - ' identity'
    - requestor
    - responder
    - protocol
    - packet
    - len
    - queryTime
    - responseTime
    - ' auth'
    - httpProtocol
    argTypes:
    - std::string
    - DnstapMessage::MessageType
    - std::string
    - ComboAddress*
    - ComboAddress*
    - DnstapMessage::ProtocolType
    - char*
    - size_t
    - struct timespec*
    - struct timespec*
    - DNSName
    - std::optional<HttpProtocolType>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 144
      start: 68
    functionDepth: 0
    functionLinenumber: 68
    functionLinenumberEnd: 144
    functionName: DnstapMessage::DnstapMessage
    functionSourceFile: /src/pdns/pdns/dnstap.cc
    functionUses: 0
    functionsReached:
    - static_cast<protozero::pbf_tag_type>
    - std::move
    - protozero::pbf_writer::commit
    - ntohs
    - protozero::pbf_writer::add_bytes
    - protozero::pbf_writer::add_uint64
    - protozero::pbf_writer::add_fixed32
    - empty
    - reinterpret_cast<const char*>
    - toDNSString
    - protozero::pbf_writer::add_uint32
    - protozero::pbf_writer::add_enum
    linkageType: ''
    returnType: void
    signature: void DnstapMessage::DnstapMessage(std::string&& buffer, DnstapMessage::MessageType
      type, const std::string& identity, const ComboAddress* requestor, const ComboAddress*
      responder, DnstapMessage::ProtocolType protocol, const char* packet, const size_t
      len, const struct timespec* queryTime, const struct timespec* responseTime,
      const DNSName& auth, const std::optional<HttpProtocolType> httpProtocol)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::pbf_writer::add_bytes
      Src: /src/pdns/pdns/dnstap.cc:149,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' extra'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 150
      start: 146
    functionDepth: 0
    functionLinenumber: 146
    functionLinenumberEnd: 150
    functionName: DnstapMessage::setExtra
    functionSourceFile: /src/pdns/pdns/dnstap.cc
    functionUses: 0
    functionsReached:
    - protozero::pbf_writer::add_bytes
    linkageType: ''
    returnType: void
    signature: void DnstapMessage::setExtra(const std::string& extra)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: socket
      Src: /src/pdns/pdns/dynmessenger.cc:38,1
    - Dst: setCloseOnExec
      Src: /src/pdns/pdns/dynmessenger.cc:39,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/dynmessenger.cc:42,1
    - Dst: string
      Src: /src/pdns/pdns/dynmessenger.cc:42,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dynmessenger.cc:42,1
    - Dst: makeUNsockaddr
      Src: /src/pdns/pdns/dynmessenger.cc:46,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/dynmessenger.cc:47,1
    - Dst: setsockopt
      Src: /src/pdns/pdns/dynmessenger.cc:53,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/dynmessenger.cc:54,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dynmessenger.cc:54,1
    - Dst: setsockopt
      Src: /src/pdns/pdns/dynmessenger.cc:56,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/dynmessenger.cc:57,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dynmessenger.cc:57,1
    - Dst: Utility::timed_connect
      Src: /src/pdns/pdns/dynmessenger.cc:59,1
    - Dst: TimeoutException
      Src: /src/pdns/pdns/dynmessenger.cc:62,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dynmessenger.cc:62,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/dynmessenger.cc:64,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dynmessenger.cc:64,1
    - Dst: close
      Src: /src/pdns/pdns/dynmessenger.cc:67,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 24
    argCount: 3
    argNames:
    - fname
    - timeout_sec
    - timeout_usec
    argTypes:
    - string
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 34
    functionDepth: 0
    functionLinenumber: 34
    functionLinenumberEnd: 71
    functionName: DynMessenger::DynMessenger
    functionSourceFile: /src/pdns/pdns/dynmessenger.cc
    functionUses: 0
    functionsReached:
    - socket
    - PDNSException
    - stringerror
    - Utility::timed_connect
    - string
    - setsockopt
    - setCloseOnExec
    - TimeoutException
    - makeUNsockaddr
    - close
    linkageType: ''
    returnType: void
    signature: "void DynMessenger::DynMessenger(const string &fname,\n    int timeout_sec,\n
      \   int timeout_usec)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: socket
      Src: /src/pdns/pdns/dynmessenger.cc:78,1
    - Dst: setCloseOnExec
      Src: /src/pdns/pdns/dynmessenger.cc:79,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/dynmessenger.cc:82,1
    - Dst: string
      Src: /src/pdns/pdns/dynmessenger.cc:82,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dynmessenger.cc:82,1
    - Dst: setsockopt
      Src: /src/pdns/pdns/dynmessenger.cc:90,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/dynmessenger.cc:91,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dynmessenger.cc:91,1
    - Dst: setsockopt
      Src: /src/pdns/pdns/dynmessenger.cc:93,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/dynmessenger.cc:94,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dynmessenger.cc:94,1
    - Dst: Utility::timed_connect
      Src: /src/pdns/pdns/dynmessenger.cc:96,1
    - Dst: getSocklen
      Src: /src/pdns/pdns/dynmessenger.cc:96,1
    - Dst: TimeoutException
      Src: /src/pdns/pdns/dynmessenger.cc:99,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/dynmessenger.cc:99,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dynmessenger.cc:99,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/dynmessenger.cc:101,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/dynmessenger.cc:101,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dynmessenger.cc:101,1
    - Dst: writen2
      Src: /src/pdns/pdns/dynmessenger.cc:104,1
    - Dst: close
      Src: /src/pdns/pdns/dynmessenger.cc:106,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 23
    argCount: 4
    argNames:
    - ' remote'
    - secret
    - timeout_sec
    - timeout_usec
    argTypes:
    - ComboAddress
    - string
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 73
    functionDepth: 0
    functionLinenumber: 73
    functionLinenumberEnd: 110
    functionName: DynMessenger::DynMessenger
    functionSourceFile: /src/pdns/pdns/dynmessenger.cc
    functionUses: 0
    functionsReached:
    - socket
    - writen2
    - PDNSException
    - stringerror
    - Utility::timed_connect
    - toStringWithPort
    - string
    - setsockopt
    - setCloseOnExec
    - TimeoutException
    - getSocklen
    - close
    linkageType: ''
    returnType: void
    signature: "void DynMessenger::DynMessenger(const ComboAddress& remote,\n    const
      string &secret,\n    int timeout_sec,\n    int timeout_usec)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: close
      Src: /src/pdns/pdns/dynmessenger.cc:115,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 112
    functionDepth: 0
    functionLinenumber: 112
    functionLinenumberEnd: 116
    functionName: DynMessenger::~DynMessenger()
    functionSourceFile: /src/pdns/pdns/dynmessenger.cc
    functionUses: 0
    functionsReached:
    - close
    linkageType: ''
    returnType: void
    signature: void DynMessenger::~DynMessenger()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: writen2
      Src: /src/pdns/pdns/dynmessenger.cc:121,1
    - Dst: TimeoutException
      Src: /src/pdns/pdns/dynmessenger.cc:125,1
    - Dst: string
      Src: /src/pdns/pdns/dynmessenger.cc:125,1
    - Dst: what
      Src: /src/pdns/pdns/dynmessenger.cc:125,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/dynmessenger.cc:127,1
    - Dst: string
      Src: /src/pdns/pdns/dynmessenger.cc:127,1
    - Dst: what
      Src: /src/pdns/pdns/dynmessenger.cc:127,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 1
    argNames:
    - msg
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 129
      start: 118
    functionDepth: 0
    functionLinenumber: 118
    functionLinenumberEnd: 129
    functionName: DynMessenger::send
    functionSourceFile: /src/pdns/pdns/dynmessenger.cc
    functionUses: 0
    functionsReached:
    - writen2
    - PDNSException
    - what
    - string
    - TimeoutException
    linkageType: ''
    returnType: int
    signature: int DynMessenger::send(const string &msg) const
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: recv
      Src: /src/pdns/pdns/dynmessenger.cc:138,1
    - Dst: TimeoutException
      Src: /src/pdns/pdns/dynmessenger.cc:141,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dynmessenger.cc:141,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/dynmessenger.cc:143,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dynmessenger.cc:143,1
    - Dst: string::append
      Src: /src/pdns/pdns/dynmessenger.cc:146,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 152
      start: 131
    functionDepth: 0
    functionLinenumber: 131
    functionLinenumberEnd: 152
    functionName: DynMessenger::receive
    functionSourceFile: /src/pdns/pdns/dynmessenger.cc
    functionUses: 0
    functionsReached:
    - recv
    - PDNSException
    - stringerror
    - string::append
    - TimeoutException
    linkageType: ''
    returnType: string
    signature: string DynMessenger::receive() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' fname'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 55
    functionDepth: 0
    functionLinenumber: 55
    functionLinenumberEnd: 55
    functionName: DynListener::getFunc
    functionSourceFile: /src/pdns/pdns/dynlistener.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: g_funk_t
    signature: g_funk_t * getFunc(const string& fname)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::array::at
      Src: /src/pdns/pdns/auth-catalogzone.hh:46,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - type
    argTypes:
    - enum CatalogType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 47
    functionName: '& getTypeString(enum CatalogType type)'
    functionSourceFile: /src/pdns/pdns/auth-catalogzone.hh
    functionUses: 0
    functionsReached:
    - std::array::at
    linkageType: ''
    returnType: string
    signature: string & getTypeString(enum CatalogType type)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 49
    functionDepth: 0
    functionLinenumber: 49
    functionLinenumberEnd: 50
    functionName: CatalogInfo::CatalogInfo
    functionSourceFile: /src/pdns/pdns/auth-catalogzone.hh
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void CatalogInfo()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CatalogInfo::fromJson
      Src: /src/pdns/pdns/auth-catalogzone.hh:55,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 4
    argNames:
    - id
    - ' zone'
    - ' options'
    - type
    argTypes:
    - uint32_t
    - ZoneName
    - std::string
    - CatalogType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 51
    functionDepth: 2
    functionLinenumber: 51
    functionLinenumberEnd: 56
    functionName: CatalogInfo::CatalogInfo
    functionSourceFile: /src/pdns/pdns/auth-catalogzone.hh
    functionUses: 4
    functionsReached:
    - CatalogInfo::fromJson
    linkageType: ''
    returnType: void
    signature: void CatalogInfo(uint32_t id, const ZoneName& zone, const std::string&
      options, CatalogType type)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - type
    argTypes:
    - CatalogType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 60
    functionDepth: 0
    functionLinenumber: 60
    functionLinenumberEnd: 60
    functionName: CatalogInfo::setType
    functionSourceFile: /src/pdns/pdns/auth-catalogzone.hh
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setType(CatalogType type)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: insert
      Src: /src/pdns/pdns/auth-catalogzone.hh:61,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' group'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 61
    functionDepth: 1
    functionLinenumber: 61
    functionLinenumberEnd: 61
    functionName: CatalogInfo::addGroup
    functionSourceFile: /src/pdns/pdns/auth-catalogzone.hh
    functionUses: 0
    functionsReached:
    - insert
    linkageType: ''
    returnType: void
    signature: void addGroup(const std::string& group)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSName
      Src: /src/pdns/pdns/auth-catalogzone.hh:64,1
    - Dst: toBase32Hex
      Src: /src/pdns/pdns/auth-catalogzone.hh:64,1
    - Dst: hashQNameWithSalt
      Src: /src/pdns/pdns/auth-catalogzone.hh:64,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/auth-catalogzone.hh:64,1
    - Dst: DNSName
      Src: /src/pdns/pdns/auth-catalogzone.hh:64,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 64
    functionDepth: 0
    functionLinenumber: 64
    functionLinenumberEnd: 64
    functionName: CatalogInfo::getUnique
    functionSourceFile: /src/pdns/pdns/auth-catalogzone.hh
    functionUses: 1
    functionsReached:
    - std::to_string
    - hashQNameWithSalt
    - DNSName
    - toBase32Hex
    linkageType: ''
    returnType: DNSName
    signature: DNSName getUnique() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - CatalogInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 68
    functionDepth: 0
    functionLinenumber: 68
    functionLinenumberEnd: 71
    functionName: operator<(const CatalogInfo& rhs) const
    functionSourceFile: /src/pdns/pdns/auth-catalogzone.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool operator<(const CatalogInfo& rhs) const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/proxy-protocol.cc:35,1
    - Dst: capacity
      Src: /src/pdns/pdns/proxy-protocol.cc:36,1
    - Dst: reserve
      Src: /src/pdns/pdns/proxy-protocol.cc:37,1
    - Dst: append
      Src: /src/pdns/pdns/proxy-protocol.cc:40,1
    - Dst: append
      Src: /src/pdns/pdns/proxy-protocol.cc:42,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/proxy-protocol.cc:42,1
    - Dst: append
      Src: /src/pdns/pdns/proxy-protocol.cc:43,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/proxy-protocol.cc:43,1
    - Dst: append
      Src: /src/pdns/pdns/proxy-protocol.cc:45,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/proxy-protocol.cc:45,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 5
    argNames:
    - command
    - protocol
    - contentLen
    - additionalSize
    - ' out'
    argTypes:
    - uint8_t
    - uint8_t
    - uint16_t
    - size_t
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 32
    functionDepth: 0
    functionLinenumber: 32
    functionLinenumberEnd: 46
    functionName: makeSimpleHeader
    functionSourceFile: /src/pdns/pdns/proxy-protocol.cc
    functionUses: 0
    functionsReached:
    - append
    - size
    - reserve
    - capacity
    - reinterpret_cast<const char*>
    linkageType: ''
    returnType: void
    signature: void makeSimpleHeader(uint8_t command, uint8_t protocol, uint16_t contentLen,
      size_t additionalSize, std::string& out)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeSimpleHeader
      Src: /src/pdns/pdns/proxy-protocol.cc:51,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 48
    functionDepth: 0
    functionLinenumber: 48
    functionLinenumberEnd: 53
    functionName: makeLocalProxyHeader
    functionSourceFile: /src/pdns/pdns/proxy-protocol.cc
    functionUses: 1
    functionsReached:
    - makeSimpleHeader
    linkageType: ''
    returnType: std::string
    signature: std::string makeLocalProxyHeader()
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/proxy-protocol.cc:58,1
    - Dst: isIPv4
      Src: /src/pdns/pdns/proxy-protocol.cc:62,1
    - Dst: isIPv4
      Src: /src/pdns/pdns/proxy-protocol.cc:63,1
    - Dst: content::size
      Src: /src/pdns/pdns/proxy-protocol.cc:69,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/proxy-protocol.cc:69,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/proxy-protocol.cc:70,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/proxy-protocol.cc:70,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/proxy-protocol.cc:70,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/proxy-protocol.cc:70,1
    - Dst: content::size
      Src: /src/pdns/pdns/proxy-protocol.cc:70,1
    - Dst: content::size
      Src: /src/pdns/pdns/proxy-protocol.cc:72,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/proxy-protocol.cc:73,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/proxy-protocol.cc:74,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/proxy-protocol.cc:74,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/proxy-protocol.cc:74,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/proxy-protocol.cc:80,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/proxy-protocol.cc:81,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/proxy-protocol.cc:81,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/proxy-protocol.cc:81,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/proxy-protocol.cc:81,1
    - Dst: htons
      Src: /src/pdns/pdns/proxy-protocol.cc:84,1
    - Dst: static_cast<uint16_t>
      Src: /src/pdns/pdns/proxy-protocol.cc:84,1
    - Dst: makeSimpleHeader
      Src: /src/pdns/pdns/proxy-protocol.cc:86,1
    - Dst: isIPv4
      Src: /src/pdns/pdns/proxy-protocol.cc:89,1
    - Dst: assert
      Src: /src/pdns/pdns/proxy-protocol.cc:90,1
    - Dst: std::string::append
      Src: /src/pdns/pdns/proxy-protocol.cc:91,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/proxy-protocol.cc:91,1
    - Dst: assert
      Src: /src/pdns/pdns/proxy-protocol.cc:92,1
    - Dst: std::string::append
      Src: /src/pdns/pdns/proxy-protocol.cc:93,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/proxy-protocol.cc:93,1
    - Dst: assert
      Src: /src/pdns/pdns/proxy-protocol.cc:96,1
    - Dst: std::string::append
      Src: /src/pdns/pdns/proxy-protocol.cc:97,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/proxy-protocol.cc:97,1
    - Dst: assert
      Src: /src/pdns/pdns/proxy-protocol.cc:98,1
    - Dst: std::string::append
      Src: /src/pdns/pdns/proxy-protocol.cc:99,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/proxy-protocol.cc:99,1
    - Dst: std::string::append
      Src: /src/pdns/pdns/proxy-protocol.cc:102,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/proxy-protocol.cc:102,1
    - Dst: std::string::append
      Src: /src/pdns/pdns/proxy-protocol.cc:103,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/proxy-protocol.cc:103,1
    - Dst: htons
      Src: /src/pdns/pdns/proxy-protocol.cc:106,1
    - Dst: static_cast<uint16_t>
      Src: /src/pdns/pdns/proxy-protocol.cc:106,1
    - Dst: content::size
      Src: /src/pdns/pdns/proxy-protocol.cc:106,1
    - Dst: std::string::append
      Src: /src/pdns/pdns/proxy-protocol.cc:107,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/proxy-protocol.cc:107,1
    - Dst: std::string::append
      Src: /src/pdns/pdns/proxy-protocol.cc:108,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/proxy-protocol.cc:108,1
    - Dst: std::string::append
      Src: /src/pdns/pdns/proxy-protocol.cc:109,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/proxy-protocol.cc:109,1
    - Dst: content::data
      Src: /src/pdns/pdns/proxy-protocol.cc:109,1
    - Dst: content::size
      Src: /src/pdns/pdns/proxy-protocol.cc:109,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 34
    argCount: 4
    argNames:
    - tcp
    - ' source'
    - ' destination'
    - ' values'
    argTypes:
    - bool
    - ComboAddress
    - ComboAddress
    - std::vector<ProxyProtocolValue>
    assertStmts:
    - condition: (addrSize == sizeof(source.sin4.sin_addr.s_addr))
      pos:
        line_end: 89
        line_start: 89
        source_file: /src/pdns/pdns/proxy-protocol.cc
    - condition: (addrSize == sizeof(destination.sin6.sin6_addr.s6_addr))
      pos:
        line_end: 97
        line_start: 97
        source_file: /src/pdns/pdns/proxy-protocol.cc
    - condition: (addrSize == sizeof(source.sin6.sin6_addr.s6_addr))
      pos:
        line_end: 95
        line_start: 95
        source_file: /src/pdns/pdns/proxy-protocol.cc
    - condition: (addrSize == sizeof(destination.sin4.sin_addr.s_addr))
      pos:
        line_end: 91
        line_start: 91
        source_file: /src/pdns/pdns/proxy-protocol.cc
    constantsTouched: []
    func_position:
      end: 113
      start: 55
    functionDepth: 0
    functionLinenumber: 55
    functionLinenumberEnd: 113
    functionName: makeProxyHeader
    functionSourceFile: /src/pdns/pdns/proxy-protocol.cc
    functionUses: 6
    functionsReached:
    - pdns::max
    - std::to_string
    - std::string::append
    - std::runtime_error
    - assert
    - makeSimpleHeader
    - isIPv4
    - static_cast<uint16_t>
    - reinterpret_cast<const char*>
    - content::data
    - content::size
    - htons
    linkageType: ''
    returnType: std::string
    signature: std::string makeProxyHeader(bool tcp, const ComboAddress& source, const
      ComboAddress& destination, const std::vector<ProxyProtocolValue>& values)
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/proxy-protocol.cc:126,1
    - Dst: size
      Src: /src/pdns/pdns/proxy-protocol.cc:128,1
    - Dst: std::memcmp
      Src: /src/pdns/pdns/proxy-protocol.cc:131,1
    - Dst: at
      Src: /src/pdns/pdns/proxy-protocol.cc:131,1
    - Dst: at
      Src: /src/pdns/pdns/proxy-protocol.cc:131,1
    - Dst: size
      Src: /src/pdns/pdns/proxy-protocol.cc:131,1
    - Dst: at
      Src: /src/pdns/pdns/proxy-protocol.cc:136,1
    - Dst: at
      Src: /src/pdns/pdns/proxy-protocol.cc:146,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/proxy-protocol.cc:194,1
    - Dst: at
      Src: /src/pdns/pdns/proxy-protocol.cc:194,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/proxy-protocol.cc:194,1
    - Dst: at
      Src: /src/pdns/pdns/proxy-protocol.cc:194,1
    - Dst: size
      Src: /src/pdns/pdns/proxy-protocol.cc:204,1
    - Dst: size
      Src: /src/pdns/pdns/proxy-protocol.cc:205,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 64
    argCount: 5
    argNames:
    - ' header'
    - proxy
    - tcp
    - addrSizeOut
    - protocolOut
    argTypes:
    - Container
    - bool*
    - bool*
    - size_t*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 209
      start: 118
    functionDepth: 0
    functionLinenumber: 118
    functionLinenumberEnd: 209
    functionName: isProxyHeaderComplete
    functionSourceFile: /src/pdns/pdns/proxy-protocol.cc
    functionUses: 1
    functionsReached:
    - static_cast<uint8_t>
    - at
    - size
    - std::memcmp
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t isProxyHeaderComplete(const Container& header, bool* proxy,
      bool* tcp, size_t* addrSizeOut, uint8_t* protocolOut)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: isProxyHeaderComplete
      Src: /src/pdns/pdns/proxy-protocol.cc:218,1
    - Dst: makeComboAddressFromRaw
      Src: /src/pdns/pdns/proxy-protocol.cc:226,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/proxy-protocol.cc:226,1
    - Dst: at
      Src: /src/pdns/pdns/proxy-protocol.cc:226,1
    - Dst: makeComboAddressFromRaw
      Src: /src/pdns/pdns/proxy-protocol.cc:228,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/proxy-protocol.cc:228,1
    - Dst: at
      Src: /src/pdns/pdns/proxy-protocol.cc:228,1
    - Dst: setPort
      Src: /src/pdns/pdns/proxy-protocol.cc:230,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/proxy-protocol.cc:230,1
    - Dst: at
      Src: /src/pdns/pdns/proxy-protocol.cc:230,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/proxy-protocol.cc:230,1
    - Dst: at
      Src: /src/pdns/pdns/proxy-protocol.cc:230,1
    - Dst: setPort
      Src: /src/pdns/pdns/proxy-protocol.cc:232,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/proxy-protocol.cc:232,1
    - Dst: at
      Src: /src/pdns/pdns/proxy-protocol.cc:232,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/proxy-protocol.cc:232,1
    - Dst: at
      Src: /src/pdns/pdns/proxy-protocol.cc:232,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/proxy-protocol.cc:239,1
    - Dst: at
      Src: /src/pdns/pdns/proxy-protocol.cc:239,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/proxy-protocol.cc:241,1
    - Dst: at
      Src: /src/pdns/pdns/proxy-protocol.cc:241,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/proxy-protocol.cc:241,1
    - Dst: at
      Src: /src/pdns/pdns/proxy-protocol.cc:241,1
    - Dst: push_back
      Src: /src/pdns/pdns/proxy-protocol.cc:249,1
    - Dst: std::string
      Src: /src/pdns/pdns/proxy-protocol.cc:249,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/proxy-protocol.cc:249,1
    - Dst: at
      Src: /src/pdns/pdns/proxy-protocol.cc:249,1
    - Dst: push_back
      Src: /src/pdns/pdns/proxy-protocol.cc:253,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 29
    argCount: 6
    argNames:
    - ' header'
    - ' proxy'
    - ' source'
    - ' destination'
    - ' tcp'
    - ' values'
    argTypes:
    - Container
    - bool
    - ComboAddress
    - ComboAddress
    - bool
    - std::vector<ProxyProtocolValue>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 260
      start: 214
    functionDepth: 0
    functionLinenumber: 214
    functionLinenumberEnd: 260
    functionName: parseProxyHeader
    functionSourceFile: /src/pdns/pdns/proxy-protocol.cc
    functionUses: 9
    functionsReached:
    - isProxyHeaderComplete
    - setPort
    - push_back
    - makeComboAddressFromRaw
    - static_cast<uint8_t>
    - reinterpret_cast<const char*>
    - std::string
    - at
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t parseProxyHeader(const Container& header, bool& proxy, ComboAddress&
      source, ComboAddress& destination, bool& tcp, std::vector<ProxyProtocolValue>&
      values)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 22
      start: 22
    functionDepth: 0
    functionLinenumber: 22
    functionLinenumberEnd: 22
    functionName: noinit_adaptor
    functionSourceFile: /src/pdns/pdns/noinitvector.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void noinit_adaptor()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::forward<U>
      Src: /src/pdns/pdns/noinitvector.hh:25,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 1
    argNames:
    - ' u'
    argTypes:
    - U
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 25
      start: 25
    functionDepth: 0
    functionLinenumber: 25
    functionLinenumberEnd: 25
    functionName: noinit_adaptor
    functionSourceFile: /src/pdns/pdns/noinitvector.hh
    functionUses: 0
    functionsReached:
    - std::forward<U>
    linkageType: ''
    returnType: void
    signature: void noinit_adaptor(U&& u) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<const U&>
      Src: /src/pdns/pdns/noinitvector.hh:28,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' u'
    argTypes:
    - noinit_adaptor<U>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 28
      start: 28
    functionDepth: 0
    functionLinenumber: 28
    functionLinenumberEnd: 28
    functionName: noinit_adaptor
    functionSourceFile: /src/pdns/pdns/noinitvector.hh
    functionUses: 0
    functionsReached:
    - static_cast<const U&>
    linkageType: ''
    returnType: void
    signature: void noinit_adaptor(const noinit_adaptor<U>& u) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: U::U
      Src: /src/pdns/pdns/noinitvector.hh:32,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - p
    argTypes:
    - U*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 33
      start: 31
    functionDepth: 0
    functionLinenumber: 31
    functionLinenumberEnd: 33
    functionName: construct
    functionSourceFile: /src/pdns/pdns/noinitvector.hh
    functionUses: 0
    functionsReached:
    - U::U
    linkageType: ''
    returnType: void
    signature: void construct(U* p)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::forward<V>
      Src: /src/pdns/pdns/noinitvector.hh:37,1
    - Dst: std::forward<Args>
      Src: /src/pdns/pdns/noinitvector.hh:37,1
    - Dst: U::U
      Src: /src/pdns/pdns/noinitvector.hh:37,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 2
    argCount: 2
    argNames:
    - p
    - ' v'
    argTypes:
    - U*
    - V
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 36
    functionDepth: 0
    functionLinenumber: 36
    functionLinenumberEnd: 38
    functionName: construct
    functionSourceFile: /src/pdns/pdns/noinitvector.hh
    functionUses: 0
    functionsReached:
    - std::forward<V>
    - U::U
    - std::forward<Args>
    linkageType: ''
    returnType: void
    signature: void construct(U* p, V&& v, Args&&... args)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: U*::~U
      Src: /src/pdns/pdns/noinitvector.hh:42,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - p
    argTypes:
    - U*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 41
    functionDepth: 0
    functionLinenumber: 41
    functionLinenumberEnd: 43
    functionName: destroy
    functionSourceFile: /src/pdns/pdns/noinitvector.hh
    functionUses: 4
    functionsReached:
    - U*::~U
    linkageType: ''
    returnType: void
    signature: void destroy(U* p)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<const T&>
      Src: /src/pdns/pdns/noinitvector.hh:50,1
    - Dst: static_cast<const U&>
      Src: /src/pdns/pdns/noinitvector.hh:50,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' lhs'
    - ' rhs'
    argTypes:
    - noinit_adaptor<T>
    - noinit_adaptor<U>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 47
    functionDepth: 0
    functionLinenumber: 47
    functionLinenumberEnd: 51
    functionName: "operator==(const noinit_adaptor<T>& lhs,\n                       const
      noinit_adaptor<U>& rhs) noexcept"
    functionSourceFile: /src/pdns/pdns/noinitvector.hh
    functionUses: 0
    functionsReached:
    - static_cast<const U&>
    - static_cast<const T&>
    linkageType: ''
    returnType: bool
    signature: "bool operator==(const noinit_adaptor<T>& lhs,\n                       const
      noinit_adaptor<U>& rhs) noexcept"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' lhs'
    - ' rhs'
    argTypes:
    - noinit_adaptor<T>
    - noinit_adaptor<U>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 54
    functionDepth: 0
    functionLinenumber: 54
    functionLinenumberEnd: 58
    functionName: "operator!=(const noinit_adaptor<T>& lhs,\n                       const
      noinit_adaptor<U>& rhs) noexcept"
    functionSourceFile: /src/pdns/pdns/noinitvector.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: "bool operator!=(const noinit_adaptor<T>& lhs,\n                       const
      noinit_adaptor<U>& rhs) noexcept"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: noinit_adaptor
      Src: /src/pdns/pdns/noinitvector.hh:63,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' a'
    argTypes:
    - Allocator
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 61
    functionDepth: 0
    functionLinenumber: 61
    functionLinenumberEnd: 64
    functionName: noinit_adapt
    functionSourceFile: /src/pdns/pdns/noinitvector.hh
    functionUses: 0
    functionsReached:
    - noinit_adaptor
    linkageType: ''
    returnType: noinit_adaptor<Allocator>
    signature: noinit_adaptor<Allocator> noinit_adapt(const Allocator& a) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: time
      Src: /src/pdns/pdns/auth-querycache.cc:34,1
    - Dst: declare
      Src: /src/pdns/pdns/auth-querycache.cc:36,1
    - Dst: declare
      Src: /src/pdns/pdns/auth-querycache.cc:37,1
    - Dst: declare
      Src: /src/pdns/pdns/auth-querycache.cc:38,1
    - Dst: declare
      Src: /src/pdns/pdns/auth-querycache.cc:39,1
    - Dst: declare
      Src: /src/pdns/pdns/auth-querycache.cc:40,1
    - Dst: getPointer
      Src: /src/pdns/pdns/auth-querycache.cc:42,1
    - Dst: getPointer
      Src: /src/pdns/pdns/auth-querycache.cc:43,1
    - Dst: getPointer
      Src: /src/pdns/pdns/auth-querycache.cc:44,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 1
    argNames:
    - mapsCount
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 34
    functionDepth: 0
    functionLinenumber: 34
    functionLinenumberEnd: 45
    functionName: AuthQueryCache::AuthQueryCache
    functionSourceFile: /src/pdns/pdns/auth-querycache.cc
    functionUses: 4
    functionsReached:
    - declare
    - time
    - getPointer
    linkageType: ''
    returnType: void
    signature: void AuthQueryCache::AuthQueryCache(size_t mapsCount)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: write_lock
      Src: /src/pdns/pdns/auth-querycache.cc:50,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - numberOfEntries
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 47
    functionDepth: 0
    functionLinenumber: 47
    functionLinenumberEnd: 52
    functionName: AuthQueryCache::MapCombo::reserve(size_t numberOfEntries)
    functionSourceFile: /src/pdns/pdns/auth-querycache.cc
    functionUses: 0
    functionsReached:
    - write_lock
    linkageType: ''
    returnType: void
    signature: void AuthQueryCache::MapCombo::reserve(size_t numberOfEntries)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: AuthQueryCache::cleanupIfNeeded
      Src: /src/pdns/pdns/auth-querycache.cc:57,1
    - Dst: time
      Src: /src/pdns/pdns/auth-querycache.cc:59,1
    - Dst: getCode
      Src: /src/pdns/pdns/auth-querycache.cc:60,1
    - Dst: getMap
      Src: /src/pdns/pdns/auth-querycache.cc:61,1
    - Dst: d_map::try_read_lock
      Src: /src/pdns/pdns/auth-querycache.cc:63,1
    - Dst: auto::owns_lock
      Src: /src/pdns/pdns/auth-querycache.cc:64,1
    - Dst: inc
      Src: /src/pdns/pdns/auth-querycache.cc:65,1
    - Dst: AuthQueryCache::getEntryLocked
      Src: /src/pdns/pdns/auth-querycache.cc:69,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 4
    argNames:
    - qname
    - ' qtype'
    - ' value'
    - zoneID
    argTypes:
    - DNSName
    - QType
    - vector<DNSZoneRecord>
    - domainid_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 55
    functionDepth: 1
    functionLinenumber: 55
    functionLinenumberEnd: 71
    functionName: AuthQueryCache::getEntry
    functionSourceFile: /src/pdns/pdns/auth-querycache.cc
    functionUses: 1
    functionsReached:
    - time
    - inc
    - getMap
    - auto::owns_lock
    - AuthQueryCache::cleanupIfNeeded
    - d_map::try_read_lock
    - AuthQueryCache::getEntryLocked
    - getCode
    linkageType: ''
    returnType: bool
    signature: bool AuthQueryCache::getEntry(const DNSName &qname, const QType& qtype,
      vector<DNSZoneRecord>& value, domainid_t zoneID)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: AuthQueryCache::cleanupIfNeeded
      Src: /src/pdns/pdns/auth-querycache.cc:75,1
    - Dst: time
      Src: /src/pdns/pdns/auth-querycache.cc:80,1
    - Dst: getCode
      Src: /src/pdns/pdns/auth-querycache.cc:84,1
    - Dst: std::move
      Src: /src/pdns/pdns/auth-querycache.cc:85,1
    - Dst: getMap
      Src: /src/pdns/pdns/auth-querycache.cc:88,1
    - Dst: d_map::try_write_lock
      Src: /src/pdns/pdns/auth-querycache.cc:91,1
    - Dst: auto::owns_lock
      Src: /src/pdns/pdns/auth-querycache.cc:92,1
    - Dst: inc
      Src: /src/pdns/pdns/auth-querycache.cc:93,1
    - Dst: std::tie
      Src: /src/pdns/pdns/auth-querycache.cc:99,1
    - Dst: auto::insert
      Src: /src/pdns/pdns/auth-querycache.cc:99,1
    - Dst: auto::replace
      Src: /src/pdns/pdns/auth-querycache.cc:102,1
    - Dst: std::move
      Src: /src/pdns/pdns/auth-querycache.cc:102,1
    - Dst: moveCacheItemToBack
      Src: /src/pdns/pdns/auth-querycache.cc:103,1
    - Dst: auto::get
      Src: /src/pdns/pdns/auth-querycache.cc:108,1
    - Dst: pop_front
      Src: /src/pdns/pdns/auth-querycache.cc:109,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 25
    argCount: 5
    argNames:
    - qname
    - ' qtype'
    - ' value'
    - ttl
    - zoneID
    argTypes:
    - DNSName
    - QType
    - vector<DNSZoneRecord>
    - uint32_t
    - domainid_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 73
    functionDepth: 1
    functionLinenumber: 73
    functionLinenumberEnd: 116
    functionName: AuthQueryCache::insert
    functionSourceFile: /src/pdns/pdns/auth-querycache.cc
    functionUses: 2
    functionsReached:
    - std::move
    - auto::get
    - time
    - inc
    - getMap
    - auto::owns_lock
    - moveCacheItemToBack
    - AuthQueryCache::cleanupIfNeeded
    - auto::replace
    - std::tie
    - d_map::try_write_lock
    - auto::insert
    - pop_front
    - getCode
    linkageType: ''
    returnType: void
    signature: void AuthQueryCache::insert(const DNSName &qname, const QType& qtype,
      vector<DNSZoneRecord>&& value, uint32_t ttl, domainid_t zoneID)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: boost::multi_index::get<HashTag>
      Src: /src/pdns/pdns/auth-querycache.cc:120,1
    - Dst: find
      Src: /src/pdns/pdns/auth-querycache.cc:121,1
    - Dst: std::tie
      Src: /src/pdns/pdns/auth-querycache.cc:121,1
    - Dst: end
      Src: /src/pdns/pdns/auth-querycache.cc:123,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 6
    argNames:
    - ' map'
    - qname
    - qtype
    - ' value'
    - zoneID
    - now
    argTypes:
    - cmap_t
    - DNSName
    - uint16_t
    - vector<DNSZoneRecord>
    - domainid_t
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 136
      start: 118
    functionDepth: 0
    functionLinenumber: 118
    functionLinenumberEnd: 136
    functionName: AuthQueryCache::getEntryLocked
    functionSourceFile: /src/pdns/pdns/auth-querycache.cc
    functionUses: 1
    functionsReached:
    - std::tie
    - end
    - boost::multi_index::get<HashTag>
    - find
    linkageType: ''
    returnType: bool
    signature: bool AuthQueryCache::getEntryLocked(const cmap_t& map, const DNSName
      &qname, uint16_t qtype, vector<DNSZoneRecord>& value, domainid_t zoneID, time_t
      now)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: d_map::read_lock
      Src: /src/pdns/pdns/auth-querycache.cc:143,1
    - Dst: drs::empty
      Src: /src/pdns/pdns/auth-querycache.cc:146,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 157
      start: 138
    functionDepth: 0
    functionLinenumber: 138
    functionLinenumberEnd: 157
    functionName: AuthQueryCache::getCounts
    functionSourceFile: /src/pdns/pdns/auth-querycache.cc
    functionUses: 1
    functionsReached:
    - drs::empty
    - d_map::read_lock
    linkageType: ''
    returnType: map<char,uint64_t>
    signature: map<char,uint64_t> AuthQueryCache::getCounts()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: store
      Src: /src/pdns/pdns/auth-querycache.cc:162,1
    - Dst: purgeLockedCollectionsVector
      Src: /src/pdns/pdns/auth-querycache.cc:164,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 165
      start: 160
    functionDepth: 0
    functionLinenumber: 160
    functionLinenumberEnd: 165
    functionName: AuthQueryCache::purge
    functionSourceFile: /src/pdns/pdns/auth-querycache.cc
    functionUses: 1
    functionsReached:
    - purgeLockedCollectionsVector
    - store
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t AuthQueryCache::purge()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getMap
      Src: /src/pdns/pdns/auth-querycache.cc:169,1
    - Dst: purgeExactLockedCollection
      Src: /src/pdns/pdns/auth-querycache.cc:170,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ' qname'
    argTypes:
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 175
      start: 167
    functionDepth: 1
    functionLinenumber: 167
    functionLinenumberEnd: 175
    functionName: AuthQueryCache::purgeExact
    functionSourceFile: /src/pdns/pdns/auth-querycache.cc
    functionUses: 0
    functionsReached:
    - purgeExactLockedCollection
    - getMap
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t AuthQueryCache::purgeExact(const DNSName& qname)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: boost::ends_with
      Src: /src/pdns/pdns/auth-querycache.cc:182,1
    - Dst: purgeLockedCollectionsVector
      Src: /src/pdns/pdns/auth-querycache.cc:183,1
    - Dst: AuthQueryCache::purgeExact
      Src: /src/pdns/pdns/auth-querycache.cc:187,1
    - Dst: DNSName
      Src: /src/pdns/pdns/auth-querycache.cc:187,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - match
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 191
      start: 178
    functionDepth: 2
    functionLinenumber: 178
    functionLinenumberEnd: 191
    functionName: AuthQueryCache::purge
    functionSourceFile: /src/pdns/pdns/auth-querycache.cc
    functionUses: 1
    functionsReached:
    - purgeLockedCollectionsVector
    - boost::ends_with
    - DNSName
    - AuthQueryCache::purgeExact
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t AuthQueryCache::purge(const string &match)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pruneLockedCollectionsVector
      Src: /src/pdns/pdns/auth-querycache.cc:195,1
    - Dst: DLOG
      Src: /src/pdns/pdns/auth-querycache.cc:198,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-querycache.cc:198,1
    - Dst: info
      Src: /src/pdns/pdns/auth-querycache.cc:199,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-querycache.cc:199,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-querycache.cc:199,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 200
      start: 193
    functionDepth: 0
    functionLinenumber: 193
    functionLinenumberEnd: 200
    functionName: AuthQueryCache::cleanup
    functionSourceFile: /src/pdns/pdns/auth-querycache.cc
    functionUses: 0
    functionsReached:
    - SLOG
    - Logging::Loggable
    - info
    - pruneLockedCollectionsVector
    - DLOG
    linkageType: ''
    returnType: void
    signature: void AuthQueryCache::cleanup()
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: time
      Src: /src/pdns/pdns/auth-querycache.cc:214,1
    - Dst: max
      Src: /src/pdns/pdns/auth-querycache.cc:215,1
    - Dst: DLOG
      Src: /src/pdns/pdns/auth-querycache.cc:217,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-querycache.cc:217,1
    - Dst: info
      Src: /src/pdns/pdns/auth-querycache.cc:218,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-querycache.cc:218,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-querycache.cc:218,1
    - Dst: DLOG
      Src: /src/pdns/pdns/auth-querycache.cc:224,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-querycache.cc:224,1
    - Dst: info
      Src: /src/pdns/pdns/auth-querycache.cc:225,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-querycache.cc:225,1
    - Dst: std::max
      Src: /src/pdns/pdns/auth-querycache.cc:232,1
    - Dst: std::min
      Src: /src/pdns/pdns/auth-querycache.cc:233,1
    - Dst: DLOG
      Src: /src/pdns/pdns/auth-querycache.cc:235,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-querycache.cc:235,1
    - Dst: info
      Src: /src/pdns/pdns/auth-querycache.cc:236,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-querycache.cc:236,1
    - Dst: AuthQueryCache::cleanup
      Src: /src/pdns/pdns/auth-querycache.cc:243,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 21
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 245
      start: 211
    functionDepth: 1
    functionLinenumber: 211
    functionLinenumberEnd: 245
    functionName: AuthQueryCache::cleanupIfNeeded
    functionSourceFile: /src/pdns/pdns/auth-querycache.cc
    functionUses: 2
    functionsReached:
    - max
    - SLOG
    - Logging::Loggable
    - time
    - std::min
    - info
    - DLOG
    - std::max
    - AuthQueryCache::cleanup
    linkageType: ''
    returnType: void
    signature: void AuthQueryCache::cleanupIfNeeded()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_uuidGenerator
      Src: /src/pdns/pdns/uuid-utils.cc:45,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 41
    functionDepth: 0
    functionLinenumber: 41
    functionLinenumberEnd: 46
    functionName: getUniqueID
    functionSourceFile: /src/pdns/pdns/uuid-utils.cc
    functionUses: 1
    functionsReached:
    - t_uuidGenerator
    linkageType: ''
    returnType: boost::uuids::uuid
    signature: boost::uuids::uuid getUniqueID()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: gen
      Src: /src/pdns/pdns/uuid-utils.cc:51,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' str'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 48
    functionDepth: 0
    functionLinenumber: 48
    functionLinenumberEnd: 52
    functionName: getUniqueID
    functionSourceFile: /src/pdns/pdns/uuid-utils.cc
    functionUses: 1
    functionsReached:
    - gen
    linkageType: ''
    returnType: boost::uuids::uuid
    signature: boost::uuids::uuid getUniqueID(const std::string& str)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - size
    - frame
    argTypes:
    - size_t
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 47
    functionDepth: 0
    functionLinenumber: 47
    functionLinenumberEnd: 50
    functionName: CircularWriteBuffer::CircularWriteBuffer
    functionSourceFile: /src/pdns/pdns/remote_logger.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void CircularWriteBuffer(size_t size, uint8_t frame)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 74
    functionDepth: 0
    functionLinenumber: 74
    functionLinenumberEnd: 74
    functionName: RemoteLoggerInterface::RemoteLoggerInterface
    functionSourceFile: /src/pdns/pdns/remote_logger.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void RemoteLoggerInterface()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 75
    functionDepth: 0
    functionLinenumber: 75
    functionLinenumberEnd: 75
    functionName: RemoteLoggerInterface::RemoteLoggerInterface
    functionSourceFile: /src/pdns/pdns/remote_logger.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void RemoteLoggerInterface(const RemoteLoggerInterface&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 76
    functionDepth: 0
    functionLinenumber: 76
    functionLinenumberEnd: 76
    functionName: RemoteLoggerInterface::RemoteLoggerInterface
    functionSourceFile: /src/pdns/pdns/remote_logger.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void RemoteLoggerInterface(RemoteLoggerInterface&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 77
    functionDepth: 0
    functionLinenumber: 77
    functionLinenumberEnd: 77
    functionName: '& operator=(const RemoteLoggerInterface&)'
    functionSourceFile: /src/pdns/pdns/remote_logger.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: RemoteLoggerInterface
    signature: RemoteLoggerInterface & operator=(const RemoteLoggerInterface&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 78
    functionDepth: 0
    functionLinenumber: 78
    functionLinenumberEnd: 78
    functionName: '& operator=(RemoteLoggerInterface&&)'
    functionSourceFile: /src/pdns/pdns/remote_logger.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: RemoteLoggerInterface
    signature: RemoteLoggerInterface & operator=(RemoteLoggerInterface&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 79
    functionDepth: 0
    functionLinenumber: 79
    functionLinenumberEnd: 79
    functionName: ~RemoteLoggerInterface()
    functionSourceFile: /src/pdns/pdns/remote_logger.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~RemoteLoggerInterface()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 85
    functionDepth: 0
    functionLinenumber: 85
    functionLinenumberEnd: 85
    functionName: RemoteLoggerInterface::logQueries
    functionSourceFile: /src/pdns/pdns/remote_logger.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool logQueries() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 86
    functionDepth: 0
    functionLinenumber: 86
    functionLinenumberEnd: 86
    functionName: RemoteLoggerInterface::logResponses
    functionSourceFile: /src/pdns/pdns/remote_logger.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool logResponses() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 87
    functionDepth: 0
    functionLinenumber: 87
    functionLinenumberEnd: 87
    functionName: RemoteLoggerInterface::logNODs
    functionSourceFile: /src/pdns/pdns/remote_logger.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool logNODs() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 88
    functionDepth: 0
    functionLinenumber: 88
    functionLinenumberEnd: 88
    functionName: RemoteLoggerInterface::logUDRs
    functionSourceFile: /src/pdns/pdns/remote_logger.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool logUDRs() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - flag
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 89
    functionDepth: 0
    functionLinenumber: 89
    functionLinenumberEnd: 89
    functionName: RemoteLoggerInterface::setLogQueries
    functionSourceFile: /src/pdns/pdns/remote_logger.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setLogQueries(bool flag)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - flag
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 90
    functionDepth: 0
    functionLinenumber: 90
    functionLinenumberEnd: 90
    functionName: RemoteLoggerInterface::setLogResponses
    functionSourceFile: /src/pdns/pdns/remote_logger.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setLogResponses(bool flag)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - flag
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 91
    functionDepth: 0
    functionLinenumber: 91
    functionLinenumberEnd: 91
    functionName: RemoteLoggerInterface::setLogNODs
    functionSourceFile: /src/pdns/pdns/remote_logger.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setLogNODs(bool flag)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - flag
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 92
    functionDepth: 0
    functionLinenumber: 92
    functionLinenumberEnd: 92
    functionName: RemoteLoggerInterface::setLogUDRs
    functionSourceFile: /src/pdns/pdns/remote_logger.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setLogUDRs(bool flag)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - Stats
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 101
    functionDepth: 0
    functionLinenumber: 101
    functionLinenumberEnd: 108
    functionName: '& operator+=(const Stats& rhs)'
    functionSourceFile: /src/pdns/pdns/remote_logger.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Stats
    signature: Stats & operator+=(const Stats& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 133
      start: 133
    functionDepth: 0
    functionLinenumber: 133
    functionLinenumberEnd: 133
    functionName: RemoteLogger::RemoteLogger
    functionSourceFile: /src/pdns/pdns/remote_logger.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void RemoteLogger(const RemoteLogger&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 134
      start: 134
    functionDepth: 0
    functionLinenumber: 134
    functionLinenumberEnd: 134
    functionName: RemoteLogger::RemoteLogger
    functionSourceFile: /src/pdns/pdns/remote_logger.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void RemoteLogger(RemoteLogger&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 135
      start: 135
    functionDepth: 0
    functionLinenumber: 135
    functionLinenumberEnd: 135
    functionName: '& operator=(const RemoteLogger&)'
    functionSourceFile: /src/pdns/pdns/remote_logger.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: RemoteLogger
    signature: RemoteLogger & operator=(const RemoteLogger&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 136
      start: 136
    functionDepth: 0
    functionLinenumber: 136
    functionLinenumberEnd: 136
    functionName: '& operator=(RemoteLogger&&)'
    functionSourceFile: /src/pdns/pdns/remote_logger.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: RemoteLogger
    signature: RemoteLogger & operator=(RemoteLogger&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/remote_logger.hh:146,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 144
    functionDepth: 0
    functionLinenumber: 144
    functionLinenumberEnd: 147
    functionName: RemoteLogger::address
    functionSourceFile: /src/pdns/pdns/remote_logger.hh
    functionUses: 0
    functionsReached:
    - toStringWithPort
    linkageType: ''
    returnType: std::string
    signature: std::string address() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::max
      Src: /src/pdns/pdns/remote_logger.hh:152,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/remote_logger.hh:152,1
    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: RemoteLogger::maxSize
    functionSourceFile: /src/pdns/pdns/remote_logger.hh
    functionUses: 0
    functionsReached:
    - pdns::max
    linkageType: ''
    returnType: size_t
    signature: size_t maxSize() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 157
      start: 154
    functionDepth: 0
    functionLinenumber: 154
    functionLinenumberEnd: 157
    functionName: RemoteLogger::name
    functionSourceFile: /src/pdns/pdns/remote_logger.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string name() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/remote_logger.hh:160,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/remote_logger.hh:161,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/remote_logger.hh:161,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/remote_logger.hh:161,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 162
      start: 158
    functionDepth: 0
    functionLinenumber: 158
    functionLinenumberEnd: 162
    functionName: RemoteLogger::toString
    functionSourceFile: /src/pdns/pdns/remote_logger.hh
    functionUses: 0
    functionsReached:
    - toStringWithPort
    - std::to_string
    - lock
    linkageType: ''
    returnType: std::string
    signature: std::string toString() override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/remote_logger.hh:166,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 167
      start: 164
    functionDepth: 0
    functionLinenumber: 164
    functionLinenumberEnd: 167
    functionName: RemoteLogger::getStats
    functionSourceFile: /src/pdns/pdns/remote_logger.hh
    functionUses: 0
    functionsReached:
    - lock
    linkageType: ''
    returnType: RemoteLoggerInterface::Stats
    signature: RemoteLoggerInterface::Stats getStats() override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 172
      start: 169
    functionDepth: 0
    functionLinenumber: 169
    functionLinenumberEnd: 172
    functionName: RemoteLogger::stop
    functionSourceFile: /src/pdns/pdns/remote_logger.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void stop()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sodium_memzero
      Src: /src/pdns/pdns/credentials.cc:62,1
    - Dst: explicit_bzero
      Src: /src/pdns/pdns/credentials.cc:64,1
    - Dst: explicit_memset
      Src: /src/pdns/pdns/credentials.cc:66,1
    - Dst: gnutls_memset
      Src: /src/pdns/pdns/credentials.cc:68,1
    - Dst: reinterpret_cast<volatile unsigned char*>
      Src: /src/pdns/pdns/credentials.cc:77,1
    - Dst: memset
      Src: /src/pdns/pdns/credentials.cc:79,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - data
    - size
    argTypes:
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 59
    functionDepth: 0
    functionLinenumber: 59
    functionLinenumberEnd: 82
    functionName: SensitiveData::reallyClearContent
    functionSourceFile: /src/pdns/pdns/credentials.cc
    functionUses: 1
    functionsReached:
    - explicit_memset
    - gnutls_memset
    - memset
    - reinterpret_cast<volatile unsigned char*>
    - sodium_memzero
    - explicit_bzero
    linkageType: ''
    returnType: void
    signature: void SensitiveData::reallyClearContent(void* data, size_t size) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/credentials.cc:85,1
    - Dst: SensitiveData::clear
      Src: /src/pdns/pdns/credentials.cc:89,1
    - Dst: SensitiveData::reallyClearContent
      Src: /src/pdns/pdns/credentials.cc:92,1
    - Dst: data
      Src: /src/pdns/pdns/credentials.cc:92,1
    - Dst: capacity
      Src: /src/pdns/pdns/credentials.cc:92,1
    - Dst: sodium_mlock
      Src: /src/pdns/pdns/credentials.cc:95,1
    - Dst: data
      Src: /src/pdns/pdns/credentials.cc:95,1
    - Dst: size
      Src: /src/pdns/pdns/credentials.cc:95,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ' data'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 84
    functionDepth: 0
    functionLinenumber: 84
    functionLinenumberEnd: 97
    functionName: SensitiveData::SensitiveData
    functionSourceFile: /src/pdns/pdns/credentials.cc
    functionUses: 0
    functionsReached:
    - std::move
    - SensitiveData::clear
    - sodium_mlock
    - size
    - capacity
    - data
    - SensitiveData::reallyClearContent
    linkageType: ''
    returnType: void
    signature: void SensitiveData::SensitiveData(std::string&& data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/credentials.cc:101,1
    - Dst: clear
      Src: /src/pdns/pdns/credentials.cc:102,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - SensitiveData
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 104
      start: 99
    functionDepth: 1
    functionLinenumber: 99
    functionLinenumberEnd: 104
    functionName: '& SensitiveData::operator=(SensitiveData&& rhs) noexcept'
    functionSourceFile: /src/pdns/pdns/credentials.cc
    functionUses: 0
    functionsReached:
    - clear
    - std::move
    linkageType: ''
    returnType: SensitiveData
    signature: SensitiveData & SensitiveData::operator=(SensitiveData&& rhs) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: resize
      Src: /src/pdns/pdns/credentials.cc:108,1
    - Dst: sodium_mlock
      Src: /src/pdns/pdns/credentials.cc:110,1
    - Dst: data
      Src: /src/pdns/pdns/credentials.cc:110,1
    - Dst: size
      Src: /src/pdns/pdns/credentials.cc:110,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - bytes
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 112
      start: 106
    functionDepth: 1
    functionLinenumber: 106
    functionLinenumberEnd: 112
    functionName: SensitiveData::SensitiveData
    functionSourceFile: /src/pdns/pdns/credentials.cc
    functionUses: 0
    functionsReached:
    - size
    - resize
    - sodium_mlock
    - data
    linkageType: ''
    returnType: void
    signature: void SensitiveData::SensitiveData(size_t bytes)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SensitiveData::clear
      Src: /src/pdns/pdns/credentials.cc:116,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 114
    functionDepth: 0
    functionLinenumber: 114
    functionLinenumberEnd: 117
    functionName: SensitiveData::~SensitiveData()
    functionSourceFile: /src/pdns/pdns/credentials.cc
    functionUses: 0
    functionsReached:
    - SensitiveData::clear
    linkageType: ''
    returnType: void
    signature: void SensitiveData::~SensitiveData()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SensitiveData::reallyClearContent
      Src: /src/pdns/pdns/credentials.cc:124,1
    - Dst: data
      Src: /src/pdns/pdns/credentials.cc:124,1
    - Dst: capacity
      Src: /src/pdns/pdns/credentials.cc:124,1
    - Dst: sodium_munlock
      Src: /src/pdns/pdns/credentials.cc:125,1
    - Dst: data
      Src: /src/pdns/pdns/credentials.cc:125,1
    - Dst: size
      Src: /src/pdns/pdns/credentials.cc:125,1
    - Dst: SensitiveData::clear
      Src: /src/pdns/pdns/credentials.cc:127,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 119
    functionDepth: 0
    functionLinenumber: 119
    functionLinenumberEnd: 128
    functionName: SensitiveData::clear
    functionSourceFile: /src/pdns/pdns/credentials.cc
    functionUses: 4
    functionsReached:
    - SensitiveData::clear
    - size
    - capacity
    - data
    - SensitiveData::reallyClearContent
    - sodium_munlock
    linkageType: ''
    returnType: void
    signature: void SensitiveData::clear()
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: std::unique_ptr<EVP_PKEY_CTX, void (*)(EVP_PKEY_CTX*)>
      Src: /src/pdns/pdns/credentials.cc:133,1
    - Dst: EVP_PKEY_CTX_new_id
      Src: /src/pdns/pdns/credentials.cc:133,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/credentials.cc:135,1
    - Dst: EVP_PKEY_derive_init
      Src: /src/pdns/pdns/credentials.cc:138,1
    - Dst: auto::get
      Src: /src/pdns/pdns/credentials.cc:138,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/credentials.cc:139,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/credentials.cc:145,1
    - Dst: data
      Src: /src/pdns/pdns/credentials.cc:145,1
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/credentials.cc:147,1
    - Dst: data
      Src: /src/pdns/pdns/credentials.cc:147,1
    - Dst: EVP_PKEY_CTX_set1_pbe_pass
      Src: /src/pdns/pdns/credentials.cc:149,1
    - Dst: auto::get
      Src: /src/pdns/pdns/credentials.cc:149,1
    - Dst: size
      Src: /src/pdns/pdns/credentials.cc:149,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/credentials.cc:150,1
    - Dst: EVP_PKEY_CTX_set1_scrypt_salt
      Src: /src/pdns/pdns/credentials.cc:153,1
    - Dst: auto::get
      Src: /src/pdns/pdns/credentials.cc:153,1
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/credentials.cc:153,1
    - Dst: data
      Src: /src/pdns/pdns/credentials.cc:153,1
    - Dst: size
      Src: /src/pdns/pdns/credentials.cc:153,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/credentials.cc:154,1
    - Dst: EVP_PKEY_CTX_set_scrypt_N
      Src: /src/pdns/pdns/credentials.cc:158,1
    - Dst: auto::get
      Src: /src/pdns/pdns/credentials.cc:158,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/credentials.cc:159,1
    - Dst: EVP_PKEY_CTX_set_scrypt_r
      Src: /src/pdns/pdns/credentials.cc:162,1
    - Dst: auto::get
      Src: /src/pdns/pdns/credentials.cc:162,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/credentials.cc:163,1
    - Dst: EVP_PKEY_CTX_set_scrypt_p
      Src: /src/pdns/pdns/credentials.cc:166,1
    - Dst: auto::get
      Src: /src/pdns/pdns/credentials.cc:166,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/credentials.cc:167,1
    - Dst: std::string::resize
      Src: /src/pdns/pdns/credentials.cc:171,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/credentials.cc:172,1
    - Dst: EVP_PKEY_derive
      Src: /src/pdns/pdns/credentials.cc:175,1
    - Dst: auto::get
      Src: /src/pdns/pdns/credentials.cc:175,1
    - Dst: reinterpret_cast<unsigned char*>
      Src: /src/pdns/pdns/credentials.cc:175,1
    - Dst: std::string::data
      Src: /src/pdns/pdns/credentials.cc:175,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/credentials.cc:176,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/credentials.cc:181,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 28
    argCount: 5
    argNames:
    - ' password'
    - ' salt'
    - workFactor
    - parallelFactor
    - blockSize
    argTypes:
    - std::string
    - std::string
    - uint64_t
    - uint64_t
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 183
      start: 130
    functionDepth: 1
    functionLinenumber: 130
    functionLinenumberEnd: 183
    functionName: hashPasswordInternal
    functionSourceFile: /src/pdns/pdns/credentials.cc
    functionUses: 0
    functionsReached:
    - EVP_PKEY_CTX_set_scrypt_N
    - EVP_PKEY_CTX_set1_scrypt_salt
    - std::string::size
    - EVP_PKEY_CTX_set_scrypt_p
    - size
    - reinterpret_cast<unsigned char*>
    - std::unique_ptr<EVP_PKEY_CTX, void (*)(EVP_PKEY_CTX*)>
    - reinterpret_cast<const unsigned char*>
    - EVP_PKEY_CTX_new_id
    - EVP_PKEY_CTX_set1_pbe_pass
    - EVP_PKEY_derive
    - auto::get
    - std::runtime_error
    - std::string::data
    - std::string::resize
    - reinterpret_cast<const char*>
    - EVP_PKEY_CTX_set_scrypt_r
    - EVP_PKEY_derive_init
    - data
    linkageType: ''
    returnType: std::string
    signature: std::string hashPasswordInternal([[maybe_unused]] const std::string&
      password, [[maybe_unused]] const std::string& salt, [[maybe_unused]] uint64_t
      workFactor, [[maybe_unused]] uint64_t parallelFactor, [[maybe_unused]] uint64_t
      blockSize)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::string::resize
      Src: /src/pdns/pdns/credentials.cc:190,1
    - Dst: RAND_bytes
      Src: /src/pdns/pdns/credentials.cc:193,1
    - Dst: reinterpret_cast<unsigned char*>
      Src: /src/pdns/pdns/credentials.cc:193,1
    - Dst: std::string::data
      Src: /src/pdns/pdns/credentials.cc:193,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/credentials.cc:193,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/credentials.cc:193,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/credentials.cc:194,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/credentials.cc:199,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 201
      start: 185
    functionDepth: 1
    functionLinenumber: 185
    functionLinenumberEnd: 201
    functionName: generateRandomSalt
    functionSourceFile: /src/pdns/pdns/credentials.cc
    functionUses: 0
    functionsReached:
    - RAND_bytes
    - std::runtime_error
    - std::string::data
    - reinterpret_cast<unsigned char*>
    - std::string::resize
    - std::string::size
    - static_cast<int>
    linkageType: ''
    returnType: std::string
    signature: std::string generateRandomSalt()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/credentials.cc:207,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/credentials.cc:207,1
    - Dst: std::string::reserve
      Src: /src/pdns/pdns/credentials.cc:211,1
    - Dst: std::string::append
      Src: /src/pdns/pdns/credentials.cc:213,1
    - Dst: std::string::append
      Src: /src/pdns/pdns/credentials.cc:214,1
    - Dst: std::string::append
      Src: /src/pdns/pdns/credentials.cc:215,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/credentials.cc:215,1
    - Dst: static_cast<uint64_t>
      Src: /src/pdns/pdns/credentials.cc:215,1
    - Dst: std::log2
      Src: /src/pdns/pdns/credentials.cc:215,1
    - Dst: std::string::append
      Src: /src/pdns/pdns/credentials.cc:216,1
    - Dst: std::string::append
      Src: /src/pdns/pdns/credentials.cc:217,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/credentials.cc:217,1
    - Dst: std::string::append
      Src: /src/pdns/pdns/credentials.cc:218,1
    - Dst: std::string::append
      Src: /src/pdns/pdns/credentials.cc:219,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/credentials.cc:219,1
    - Dst: std::string::append
      Src: /src/pdns/pdns/credentials.cc:220,1
    - Dst: generateRandomSalt
      Src: /src/pdns/pdns/credentials.cc:221,1
    - Dst: std::string::append
      Src: /src/pdns/pdns/credentials.cc:222,1
    - Dst: Base64Encode
      Src: /src/pdns/pdns/credentials.cc:222,1
    - Dst: std::string::append
      Src: /src/pdns/pdns/credentials.cc:223,1
    - Dst: hashPasswordInternal
      Src: /src/pdns/pdns/credentials.cc:225,1
    - Dst: std::string::append
      Src: /src/pdns/pdns/credentials.cc:227,1
    - Dst: Base64Encode
      Src: /src/pdns/pdns/credentials.cc:227,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/credentials.cc:231,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 4
    argNames:
    - ' password'
    - workFactor
    - parallelFactor
    - blockSize
    argTypes:
    - std::string
    - uint64_t
    - uint64_t
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 233
      start: 203
    functionDepth: 0
    functionLinenumber: 203
    functionLinenumberEnd: 233
    functionName: hashPassword
    functionSourceFile: /src/pdns/pdns/credentials.cc
    functionUses: 2
    functionsReached:
    - std::string::append
    - std::to_string
    - std::string::reserve
    - std::runtime_error
    - std::log2
    - static_cast<uint64_t>
    - generateRandomSalt
    - hashPasswordInternal
    - Base64Encode
    linkageType: ''
    returnType: std::string
    signature: std::string hashPassword([[maybe_unused]] const std::string& password,
      [[maybe_unused]] uint64_t workFactor, [[maybe_unused]] uint64_t parallelFactor,
      [[maybe_unused]] uint64_t blockSize)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hashPassword
      Src: /src/pdns/pdns/credentials.cc:238,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/credentials.cc:240,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 3
    argCount: 1
    argNames:
    - ' password'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 242
      start: 235
    functionDepth: 0
    functionLinenumber: 235
    functionLinenumberEnd: 242
    functionName: hashPassword
    functionSourceFile: /src/pdns/pdns/credentials.cc
    functionUses: 3
    functionsReached:
    - hashPassword
    - std::runtime_error
    linkageType: ''
    returnType: std::string
    signature: std::string hashPassword([[maybe_unused]] const std::string& password)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hashPasswordInternal
      Src: /src/pdns/pdns/credentials.cc:247,1
    - Dst: constantTimeStringEquals
      Src: /src/pdns/pdns/credentials.cc:248,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/credentials.cc:250,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 3
    argCount: 6
    argNames:
    - ' binaryHash'
    - ' salt'
    - workFactor
    - parallelFactor
    - blockSize
    - ' binaryPassword'
    argTypes:
    - std::string
    - std::string
    - uint64_t
    - uint64_t
    - uint64_t
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 252
      start: 244
    functionDepth: 0
    functionLinenumber: 244
    functionLinenumberEnd: 252
    functionName: verifyPassword
    functionSourceFile: /src/pdns/pdns/credentials.cc
    functionUses: 1
    functionsReached:
    - constantTimeStringEquals
    - hashPasswordInternal
    - std::runtime_error
    linkageType: ''
    returnType: bool
    signature: bool verifyPassword([[maybe_unused]] const std::string& binaryHash,
      [[maybe_unused]] const std::string& salt, [[maybe_unused]] uint64_t workFactor,
      [[maybe_unused]] uint64_t parallelFactor, [[maybe_unused]] uint64_t blockSize,
      [[maybe_unused]] const std::string& binaryPassword)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: find
      Src: /src/pdns/pdns/credentials.cc:258,1
    - Dst: size
      Src: /src/pdns/pdns/credentials.cc:258,1
    - Dst: size
      Src: /src/pdns/pdns/credentials.cc:259,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/credentials.cc:260,1
    - Dst: substr
      Src: /src/pdns/pdns/credentials.cc:263,1
    - Dst: size
      Src: /src/pdns/pdns/credentials.cc:263,1
    - Dst: std::vector::reserve
      Src: /src/pdns/pdns/credentials.cc:265,1
    - Dst: stringtok
      Src: /src/pdns/pdns/credentials.cc:266,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/credentials.cc:267,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/credentials.cc:268,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/credentials.cc:268,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/credentials.cc:268,1
    - Dst: boost::starts_with
      Src: /src/pdns/pdns/credentials.cc:271,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/credentials.cc:271,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/credentials.cc:272,1
    - Dst: boost::starts_with
      Src: /src/pdns/pdns/credentials.cc:275,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/credentials.cc:275,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/credentials.cc:276,1
    - Dst: boost::starts_with
      Src: /src/pdns/pdns/credentials.cc:279,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/credentials.cc:279,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/credentials.cc:280,1
    - Dst: find
      Src: /src/pdns/pdns/credentials.cc:284,1
    - Dst: size
      Src: /src/pdns/pdns/credentials.cc:285,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/credentials.cc:286,1
    - Dst: pdns::checked_stoi<uint64_t>
      Src: /src/pdns/pdns/credentials.cc:290,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/credentials.cc:290,1
    - Dst: static_cast<uint64_t>
      Src: /src/pdns/pdns/credentials.cc:291,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/credentials.cc:293,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/credentials.cc:293,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/credentials.cc:293,1
    - Dst: pdns::checked_stoi<uint64_t>
      Src: /src/pdns/pdns/credentials.cc:296,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/credentials.cc:296,1
    - Dst: pdns::checked_stoi<uint64_t>
      Src: /src/pdns/pdns/credentials.cc:297,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/credentials.cc:297,1
    - Dst: substr
      Src: /src/pdns/pdns/credentials.cc:299,1
    - Dst: reserve
      Src: /src/pdns/pdns/credentials.cc:300,1
    - Dst: B64Decode
      Src: /src/pdns/pdns/credentials.cc:301,1
    - Dst: size
      Src: /src/pdns/pdns/credentials.cc:303,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/credentials.cc:304,1
    - Dst: reserve
      Src: /src/pdns/pdns/credentials.cc:307,1
    - Dst: B64Decode
      Src: /src/pdns/pdns/credentials.cc:308,1
    - Dst: substr
      Src: /src/pdns/pdns/credentials.cc:308,1
    - Dst: size
      Src: /src/pdns/pdns/credentials.cc:310,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/credentials.cc:311,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/credentials.cc:315,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 42
    argCount: 6
    argNames:
    - ' hash'
    - ' salt'
    - ' hashedPassword'
    - ' workFactor'
    - ' parallelFactor'
    - ' blockSize'
    argTypes:
    - std::string
    - std::string
    - std::string
    - uint64_t
    - uint64_t
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 318
      start: 255
    functionDepth: 0
    functionLinenumber: 255
    functionLinenumberEnd: 318
    functionName: parseHashed
    functionSourceFile: /src/pdns/pdns/credentials.cc
    functionUses: 0
    functionsReached:
    - stringtok
    - std::vector::size
    - std::to_string
    - std::runtime_error
    - boost::starts_with
    - static_cast<uint64_t>
    - B64Decode
    - size
    - std::vector::reserve
    - reserve
    - substr
    - std::vector::at
    - pdns::checked_stoi<uint64_t>
    - find
    linkageType: ''
    returnType: void
    signature: void parseHashed([[maybe_unused]] const std::string& hash, [[maybe_unused]]
      std::string& salt, [[maybe_unused]] std::string& hashedPassword, [[maybe_unused]]
      uint64_t& workFactor, [[maybe_unused]] uint64_t& parallelFactor, [[maybe_unused]]
      uint64_t& blockSize)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: isPasswordHashed
      Src: /src/pdns/pdns/credentials.cc:322,1
    - Dst: parseHashed
      Src: /src/pdns/pdns/credentials.cc:332,1
    - Dst: hashPasswordInternal
      Src: /src/pdns/pdns/credentials.cc:334,1
    - Dst: constantTimeStringEquals
      Src: /src/pdns/pdns/credentials.cc:336,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/credentials.cc:338,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 2
    argNames:
    - ' hash'
    - ' password'
    argTypes:
    - std::string
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 340
      start: 320
    functionDepth: 0
    functionLinenumber: 320
    functionLinenumberEnd: 340
    functionName: verifyPassword
    functionSourceFile: /src/pdns/pdns/credentials.cc
    functionUses: 1
    functionsReached:
    - std::runtime_error
    - parseHashed
    - constantTimeStringEquals
    - isPasswordHashed
    - hashPasswordInternal
    linkageType: ''
    returnType: bool
    signature: bool verifyPassword(const std::string& hash, [[maybe_unused]] const
      std::string& password)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/credentials.cc:345,1
    - Dst: size
      Src: /src/pdns/pdns/credentials.cc:345,1
    - Dst: boost::starts_with
      Src: /src/pdns/pdns/credentials.cc:349,1
    - Dst: find
      Src: /src/pdns/pdns/credentials.cc:353,1
    - Dst: size
      Src: /src/pdns/pdns/credentials.cc:353,1
    - Dst: size
      Src: /src/pdns/pdns/credentials.cc:354,1
    - Dst: size
      Src: /src/pdns/pdns/credentials.cc:358,1
    - Dst: find
      Src: /src/pdns/pdns/credentials.cc:364,1
    - Dst: size
      Src: /src/pdns/pdns/credentials.cc:365,1
    - Dst: size
      Src: /src/pdns/pdns/credentials.cc:375,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 24
    argCount: 1
    argNames:
    - ' password'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 383
      start: 342
    functionDepth: 0
    functionLinenumber: 342
    functionLinenumberEnd: 383
    functionName: isPasswordHashed
    functionSourceFile: /src/pdns/pdns/credentials.cc
    functionUses: 2
    functionsReached:
    - boost::starts_with
    - size
    - find
    linkageType: ''
    returnType: bool
    signature: bool isPasswordHashed([[maybe_unused]] const std::string& password)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/credentials.cc:388,1
    - Dst: CredentialsHolder::isHashingAvailable
      Src: /src/pdns/pdns/credentials.cc:390,1
    - Dst: isPasswordHashed
      Src: /src/pdns/pdns/credentials.cc:391,1
    - Dst: getString
      Src: /src/pdns/pdns/credentials.cc:391,1
    - Dst: generateRandomSalt
      Src: /src/pdns/pdns/credentials.cc:393,1
    - Dst: SensitiveData
      Src: /src/pdns/pdns/credentials.cc:397,1
    - Dst: hashPasswordInternal
      Src: /src/pdns/pdns/credentials.cc:397,1
    - Dst: getString
      Src: /src/pdns/pdns/credentials.cc:397,1
    - Dst: parseHashed
      Src: /src/pdns/pdns/credentials.cc:405,1
    - Dst: getString
      Src: /src/pdns/pdns/credentials.cc:405,1
    - Dst: SensitiveData
      Src: /src/pdns/pdns/credentials.cc:406,1
    - Dst: std::move
      Src: /src/pdns/pdns/credentials.cc:406,1
    - Dst: dns_random_uint32
      Src: /src/pdns/pdns/credentials.cc:411,1
    - Dst: burtle
      Src: /src/pdns/pdns/credentials.cc:413,1
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/credentials.cc:413,1
    - Dst: getString
      Src: /src/pdns/pdns/credentials.cc:413,1
    - Dst: getString
      Src: /src/pdns/pdns/credentials.cc:413,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 22
    argCount: 2
    argNames:
    - ' password'
    - hashPlaintext
    argTypes:
    - std::string
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 415
      start: 387
    functionDepth: 0
    functionLinenumber: 387
    functionLinenumberEnd: 415
    functionName: CredentialsHolder::CredentialsHolder
    functionSourceFile: /src/pdns/pdns/credentials.cc
    functionUses: 0
    functionsReached:
    - dns_random_uint32
    - std::move
    - SensitiveData
    - CredentialsHolder::isHashingAvailable
    - generateRandomSalt
    - parseHashed
    - burtle
    - reinterpret_cast<const unsigned char*>
    - getString
    - isPasswordHashed
    - hashPasswordInternal
    linkageType: ''
    returnType: void
    signature: void CredentialsHolder::CredentialsHolder(std::string&& password, bool
      hashPlaintext)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 421
      start: 417
    functionDepth: 0
    functionLinenumber: 417
    functionLinenumberEnd: 421
    functionName: CredentialsHolder::~CredentialsHolder()
    functionSourceFile: /src/pdns/pdns/credentials.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void CredentialsHolder::~CredentialsHolder()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: verifyPassword
      Src: /src/pdns/pdns/credentials.cc:426,1
    - Dst: getString
      Src: /src/pdns/pdns/credentials.cc:426,1
    - Dst: burtle
      Src: /src/pdns/pdns/credentials.cc:429,1
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/credentials.cc:429,1
    - Dst: data
      Src: /src/pdns/pdns/credentials.cc:429,1
    - Dst: size
      Src: /src/pdns/pdns/credentials.cc:429,1
    - Dst: constantTimeStringEquals
      Src: /src/pdns/pdns/credentials.cc:434,1
    - Dst: getString
      Src: /src/pdns/pdns/credentials.cc:434,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - ' password'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 435
      start: 423
    functionDepth: 0
    functionLinenumber: 423
    functionLinenumberEnd: 435
    functionName: CredentialsHolder::matches
    functionSourceFile: /src/pdns/pdns/credentials.cc
    functionUses: 0
    functionsReached:
    - constantTimeStringEquals
    - size
    - reinterpret_cast<const unsigned char*>
    - burtle
    - data
    - getString
    - verifyPassword
    linkageType: ''
    returnType: bool
    signature: bool CredentialsHolder::matches(const std::string& password) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 444
      start: 437
    functionDepth: 0
    functionLinenumber: 437
    functionLinenumberEnd: 444
    functionName: CredentialsHolder::isHashingAvailable
    functionSourceFile: /src/pdns/pdns/credentials.cc
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool CredentialsHolder::isHashingAvailable()
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: open
      Src: /src/pdns/pdns/credentials.cc:459,1
    - Dst: tcgetattr
      Src: /src/pdns/pdns/credentials.cc:461,1
    - Dst: memcpy
      Src: /src/pdns/pdns/credentials.cc:462,1
    - Dst: tcsetattr
      Src: /src/pdns/pdns/credentials.cc:464,1
    - Dst: FDWrapper
      Src: /src/pdns/pdns/credentials.cc:469,1
    - Dst: dup
      Src: /src/pdns/pdns/credentials.cc:469,1
    - Dst: open
      Src: /src/pdns/pdns/credentials.cc:473,1
    - Dst: FDWrapper
      Src: /src/pdns/pdns/credentials.cc:475,1
    - Dst: dup
      Src: /src/pdns/pdns/credentials.cc:475,1
    - Dst: sigemptyset
      Src: /src/pdns/pdns/credentials.cc:481,1
    - Dst: sigaction
      Src: /src/pdns/pdns/credentials.cc:484,1
    - Dst: sigaction
      Src: /src/pdns/pdns/credentials.cc:485,1
    - Dst: sigaction
      Src: /src/pdns/pdns/credentials.cc:486,1
    - Dst: sigaction
      Src: /src/pdns/pdns/credentials.cc:487,1
    - Dst: sigaction
      Src: /src/pdns/pdns/credentials.cc:488,1
    - Dst: sigaction
      Src: /src/pdns/pdns/credentials.cc:489,1
    - Dst: sigaction
      Src: /src/pdns/pdns/credentials.cc:490,1
    - Dst: sigaction
      Src: /src/pdns/pdns/credentials.cc:491,1
    - Dst: sigaction
      Src: /src/pdns/pdns/credentials.cc:492,1
    - Dst: std::string::reserve
      Src: /src/pdns/pdns/credentials.cc:497,1
    - Dst: read
      Src: /src/pdns/pdns/credentials.cc:501,1
    - Dst: std::string::push_back
      Src: /src/pdns/pdns/credentials.cc:503,1
    - Dst: tcsetattr
      Src: /src/pdns/pdns/credentials.cc:511,1
    - Dst: sigaction
      Src: /src/pdns/pdns/credentials.cc:515,1
    - Dst: std::move
      Src: /src/pdns/pdns/credentials.cc:518,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 43
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 519
      start: 449
    functionDepth: 0
    functionLinenumber: 449
    functionLinenumberEnd: 519
    functionName: CredentialsHolder::readFromTerminal
    functionSourceFile: /src/pdns/pdns/credentials.cc
    functionUses: 1
    functionsReached:
    - memcpy
    - std::move
    - read
    - std::string::reserve
    - tcgetattr
    - open
    - dup
    - tcsetattr
    - FDWrapper
    - sigemptyset
    - std::string::push_back
    - sigaction
    linkageType: ''
    returnType: SensitiveData
    signature: SensitiveData CredentialsHolder::readFromTerminal()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 1
    argNames:
    - orig
    argTypes:
    - DNSPacket
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 55
    functionDepth: 0
    functionLinenumber: 55
    functionLinenumberEnd: 55
    functionName: DNSPacket::DNSPacket
    functionSourceFile: /src/pdns/pdns/dnspacket.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void DNSPacket(const DNSPacket &orig)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 56
    functionDepth: 0
    functionLinenumber: 56
    functionLinenumberEnd: 56
    functionName: '& operator=(const DNSPacket &)'
    functionSourceFile: /src/pdns/pdns/dnspacket.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: DNSPacket
    signature: DNSPacket & operator=(const DNSPacket &)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getsockname
      Src: /src/pdns/pdns/dnspacket.hh:72,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 68
    functionDepth: 0
    functionLinenumber: 68
    functionLinenumberEnd: 74
    functionName: DNSPacket::getLocal
    functionSourceFile: /src/pdns/pdns/dnspacket.hh
    functionUses: 0
    functionsReached:
    - getsockname
    linkageType: ''
    returnType: ComboAddress
    signature: ComboAddress getLocal() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 82
    functionDepth: 0
    functionLinenumber: 82
    functionLinenumberEnd: 85
    functionName: DNSPacket::getSocket
    functionSourceFile: /src/pdns/pdns/dnspacket.hh
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: Utility::sock_t
    signature: Utility::sock_t getSocket() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 130
      start: 130
    functionDepth: 0
    functionLinenumber: 130
    functionLinenumberEnd: 130
    functionName: DNSPacket::getEDNSVersion
    functionSourceFile: /src/pdns/pdns/dnspacket.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint8_t
    signature: uint8_t getEDNSVersion() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - extRCode
    argTypes:
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 135
      start: 131
    functionDepth: 0
    functionLinenumber: 131
    functionLinenumberEnd: 135
    functionName: DNSPacket::setEDNSRcode
    functionSourceFile: /src/pdns/pdns/dnspacket.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setEDNSRcode(uint16_t extRCode)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 136
      start: 136
    functionDepth: 0
    functionLinenumber: 136
    functionLinenumberEnd: 136
    functionName: DNSPacket::getEDNSRCode
    functionSourceFile: /src/pdns/pdns/dnspacket.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint8_t
    signature: uint8_t getEDNSRCode() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 137
      start: 137
    functionDepth: 0
    functionLinenumber: 137
    functionLinenumberEnd: 137
    functionName: DNSPacket::getHash
    functionSourceFile: /src/pdns/pdns/dnspacket.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t getHash() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - hash
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 138
      start: 138
    functionDepth: 0
    functionLinenumber: 138
    functionLinenumberEnd: 138
    functionName: DNSPacket::setHash
    functionSourceFile: /src/pdns/pdns/dnspacket.hh
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setHash(uint32_t hash)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 170
      start: 170
    functionDepth: 0
    functionLinenumber: 170
    functionLinenumberEnd: 170
    functionName: '& getRRS()'
    functionSourceFile: /src/pdns/pdns/dnspacket.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: vector<DNSZoneRecord>
    signature: vector<DNSZoneRecord> & getRRS()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/pdns/pdns/dnspacket.cc:64,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - slog
    - isQuery
    argTypes:
    - Logr::log_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 62
    functionDepth: 0
    functionLinenumber: 62
    functionLinenumberEnd: 65
    functionName: DNSPacket::DNSPacket
    functionSourceFile: /src/pdns/pdns/dnspacket.cc
    functionUses: 0
    functionsReached:
    - memset
    linkageType: ''
    returnType: void
    signature: void DNSPacket::DNSPacket(Logr::log_t slog, bool isQuery)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: wrapup
      Src: /src/pdns/pdns/dnspacket.cc:70,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - throwsOnTruncation
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 67
    functionDepth: 0
    functionLinenumber: 67
    functionLinenumberEnd: 73
    functionName: '& DNSPacket::getString(bool throwsOnTruncation)'
    functionSourceFile: /src/pdns/pdns/dnspacket.cc
    functionUses: 0
    functionsReached:
    - wrapup
    linkageType: ''
    returnType: string
    signature: string & DNSPacket::getString(bool throwsOnTruncation)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: DNSPacket::getRemote
      Src: /src/pdns/pdns/dnspacket.cc:79,1
    - Dst: toString
      Src: /src/pdns/pdns/dnspacket.cc:82,1
    - Dst: DNSPacket::hasEDNSSubnet
      Src: /src/pdns/pdns/dnspacket.cc:85,1
    - Dst: DNSPacket::getRealRemote
      Src: /src/pdns/pdns/dnspacket.cc:86,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 75
    functionDepth: 1
    functionLinenumber: 75
    functionLinenumberEnd: 90
    functionName: DNSPacket::getRemoteString
    functionSourceFile: /src/pdns/pdns/dnspacket.cc
    functionUses: 1
    functionsReached:
    - DNSPacket::getRemote
    - DNSPacket::getRealRemote
    - toString
    - DNSPacket::hasEDNSSubnet
    linkageType: ''
    returnType: string
    signature: string DNSPacket::getRemoteString() const
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: DNSPacket::getRemote
      Src: /src/pdns/pdns/dnspacket.cc:96,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/dnspacket.cc:99,1
    - Dst: DNSPacket::hasEDNSSubnet
      Src: /src/pdns/pdns/dnspacket.cc:102,1
    - Dst: DNSPacket::getRealRemote
      Src: /src/pdns/pdns/dnspacket.cc:103,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 107
      start: 92
    functionDepth: 1
    functionLinenumber: 92
    functionLinenumberEnd: 107
    functionName: DNSPacket::getRemoteStringWithPort
    functionSourceFile: /src/pdns/pdns/dnspacket.cc
    functionUses: 0
    functionsReached:
    - DNSPacket::getRemote
    - DNSPacket::getRealRemote
    - toStringWithPort
    - DNSPacket::hasEDNSSubnet
    linkageType: ''
    returnType: string
    signature: string DNSPacket::getRemoteStringWithPort() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 112
      start: 109
    functionDepth: 0
    functionLinenumber: 109
    functionLinenumberEnd: 112
    functionName: DNSPacket::getRemote
    functionSourceFile: /src/pdns/pdns/dnspacket.cc
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: ComboAddress
    signature: ComboAddress DNSPacket::getRemote() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 114
    functionDepth: 0
    functionLinenumber: 114
    functionLinenumberEnd: 117
    functionName: DNSPacket::getInnerRemote
    functionSourceFile: /src/pdns/pdns/dnspacket.cc
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: ComboAddress
    signature: ComboAddress DNSPacket::getInnerRemote() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 122
      start: 119
    functionDepth: 0
    functionLinenumber: 119
    functionLinenumberEnd: 122
    functionName: DNSPacket::getRemotePort
    functionSourceFile: /src/pdns/pdns/dnspacket.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t DNSPacket::getRemotePort() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - v
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 127
      start: 124
    functionDepth: 0
    functionLinenumber: 124
    functionLinenumberEnd: 127
    functionName: DNSPacket::setRcode
    functionSourceFile: /src/pdns/pdns/dnspacket.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void DNSPacket::setRcode(int v)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assign
      Src: /src/pdns/pdns/dnspacket.cc:132,1
    - Dst: memset
      Src: /src/pdns/pdns/dnspacket.cc:133,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - b
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 137
      start: 129
    functionDepth: 1
    functionLinenumber: 129
    functionLinenumberEnd: 137
    functionName: DNSPacket::setAnswer
    functionSourceFile: /src/pdns/pdns/dnspacket.cc
    functionUses: 0
    functionsReached:
    - assign
    - memset
    linkageType: ''
    returnType: void
    signature: void DNSPacket::setAnswer(bool b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - b
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 142
      start: 139
    functionDepth: 0
    functionLinenumber: 139
    functionLinenumberEnd: 142
    functionName: DNSPacket::setA
    functionSourceFile: /src/pdns/pdns/dnspacket.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void DNSPacket::setA(bool b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - id
    argTypes:
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 144
    functionDepth: 0
    functionLinenumber: 144
    functionLinenumberEnd: 147
    functionName: DNSPacket::setID
    functionSourceFile: /src/pdns/pdns/dnspacket.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void DNSPacket::setID(uint16_t id)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - b
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 152
      start: 149
    functionDepth: 0
    functionLinenumber: 149
    functionLinenumberEnd: 152
    functionName: DNSPacket::setRA
    functionSourceFile: /src/pdns/pdns/dnspacket.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void DNSPacket::setRA(bool b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - b
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 157
      start: 154
    functionDepth: 0
    functionLinenumber: 154
    functionLinenumberEnd: 157
    functionName: DNSPacket::setRD
    functionSourceFile: /src/pdns/pdns/dnspacket.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void DNSPacket::setRD(bool b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - opcode
    argTypes:
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 162
      start: 159
    functionDepth: 0
    functionLinenumber: 159
    functionLinenumberEnd: 162
    functionName: DNSPacket::setOpcode
    functionSourceFile: /src/pdns/pdns/dnspacket.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void DNSPacket::setOpcode(uint16_t opcode)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: clear
      Src: /src/pdns/pdns/dnspacket.cc:166,1
    - Dst: clear
      Src: /src/pdns/pdns/dnspacket.cc:167,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 168
      start: 164
    functionDepth: 1
    functionLinenumber: 164
    functionLinenumberEnd: 168
    functionName: DNSPacket::clearRecords
    functionSourceFile: /src/pdns/pdns/dnspacket.cc
    functionUses: 0
    functionsReached:
    - clear
    linkageType: ''
    returnType: void
    signature: void DNSPacket::clearRecords()
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: dr::getContent
      Src: /src/pdns/pdns/dnspacket.cc:176,1
    - Dst: boost::hash< std::pair<DNSName, std::string> >
      Src: /src/pdns/pdns/dnspacket.cc:177,1
    - Dst: count
      Src: /src/pdns/pdns/dnspacket.cc:178,1
    - Dst: insert
      Src: /src/pdns/pdns/dnspacket.cc:184,1
    - Dst: push_back
      Src: /src/pdns/pdns/dnspacket.cc:186,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnspacket.cc:186,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 10
    argCount: 1
    argNames:
    - ' rr'
    argTypes:
    - DNSZoneRecord
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 187
      start: 170
    functionDepth: 1
    functionLinenumber: 170
    functionLinenumberEnd: 187
    functionName: DNSPacket::addRecord
    functionSourceFile: /src/pdns/pdns/dnspacket.cc
    functionUses: 0
    functionsReached:
    - std::move
    - count
    - push_back
    - dr::getContent
    - insert
    - boost::hash< std::pair<DNSName, std::string> >
    linkageType: ''
    returnType: void
    signature: void DNSPacket::addRecord(DNSZoneRecord&& rr)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: vector::push_back
      Src: /src/pdns/pdns/dnspacket.cc:200,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 204
      start: 189
    functionDepth: 0
    functionLinenumber: 189
    functionLinenumberEnd: 204
    functionName: DNSPacket::getAPRecords
    functionSourceFile: /src/pdns/pdns/dnspacket.cc
    functionUses: 0
    functionsReached:
    - vector::push_back
    linkageType: ''
    returnType: vector<DNSZoneRecord*>
    signature: vector<DNSZoneRecord*> DNSPacket::getAPRecords()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: vector::push_back
      Src: /src/pdns/pdns/dnspacket.cc:213,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 217
      start: 206
    functionDepth: 0
    functionLinenumber: 206
    functionLinenumberEnd: 217
    functionName: DNSPacket::getServiceRecords
    functionSourceFile: /src/pdns/pdns/dnspacket.cc
    functionUses: 0
    functionsReached:
    - vector::push_back
    linkageType: ''
    returnType: vector<DNSZoneRecord*>
    signature: vector<DNSZoneRecord*> DNSPacket::getServiceRecords()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: vector::push_back
      Src: /src/pdns/pdns/dnspacket.cc:226,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 229
      start: 219
    functionDepth: 0
    functionLinenumber: 219
    functionLinenumberEnd: 229
    functionName: DNSPacket::getAnswerRecords
    functionSourceFile: /src/pdns/pdns/dnspacket.cc
    functionUses: 0
    functionsReached:
    - vector::push_back
    linkageType: ''
    returnType: vector<DNSZoneRecord*>
    signature: vector<DNSZoneRecord*> DNSPacket::getAnswerRecords()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: reserve
      Src: /src/pdns/pdns/dnspacket.cc:235,1
    - Dst: reserve
      Src: /src/pdns/pdns/dnspacket.cc:236,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - compress
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 237
      start: 232
    functionDepth: 0
    functionLinenumber: 232
    functionLinenumberEnd: 237
    functionName: DNSPacket::setCompress
    functionSourceFile: /src/pdns/pdns/dnspacket.cc
    functionUses: 0
    functionsReached:
    - reserve
    linkageType: ''
    returnType: void
    signature: void DNSPacket::setCompress(bool compress)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 243
      start: 239
    functionDepth: 0
    functionLinenumber: 239
    functionLinenumberEnd: 243
    functionName: DNSPacket::couldBeCached
    functionSourceFile: /src/pdns/pdns/dnspacket.cc
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool DNSPacket::couldBeCached() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::min_element
      Src: /src/pdns/pdns/dnspacket.cc:247,1
    - Dst: begin
      Src: /src/pdns/pdns/dnspacket.cc:247,1
    - Dst: end
      Src: /src/pdns/pdns/dnspacket.cc:247,1
    - Dst: end
      Src: /src/pdns/pdns/dnspacket.cc:248,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 252
      start: 245
    functionDepth: 0
    functionLinenumber: 245
    functionLinenumberEnd: 252
    functionName: DNSPacket::getMinTTL
    functionSourceFile: /src/pdns/pdns/dnspacket.cc
    functionUses: 0
    functionsReached:
    - std::min_element
    - end
    - begin
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int DNSPacket::getMinTTL()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/dnspacket.cc:256,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 257
      start: 254
    functionDepth: 0
    functionLinenumber: 254
    functionLinenumberEnd: 257
    functionName: DNSPacket::isEmpty
    functionSourceFile: /src/pdns/pdns/dnspacket.cc
    functionUses: 0
    functionsReached:
    - empty
    linkageType: ''
    returnType: bool
    signature: bool DNSPacket::isEmpty()
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: stable_sort
      Src: /src/pdns/pdns/dnspacket.cc:274,1
    - Dst: begin
      Src: /src/pdns/pdns/dnspacket.cc:274,1
    - Dst: end
      Src: /src/pdns/pdns/dnspacket.cc:274,1
    - Dst: arg
      Src: /src/pdns/pdns/dnspacket.cc:277,1
    - Dst: pdns::shuffle
      Src: /src/pdns/pdns/dnspacket.cc:280,1
    - Dst: getCode
      Src: /src/pdns/pdns/dnspacket.cc:285,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnspacket.cc:287,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnspacket.cc:288,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnspacket.cc:289,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnspacket.cc:290,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnspacket.cc:291,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnspacket.cc:292,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnspacket.cc:293,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnspacket.cc:294,1
    - Dst: arg
      Src: /src/pdns/pdns/dnspacket.cc:316,1
    - Dst: DNSPacketWriter::optvect_t::emplace_back
      Src: /src/pdns/pdns/dnspacket.cc:318,1
    - Dst: string::size
      Src: /src/pdns/pdns/dnspacket.cc:319,1
    - Dst: getSource
      Src: /src/pdns/pdns/dnspacket.cc:327,1
    - Dst: isWellFormed
      Src: /src/pdns/pdns/dnspacket.cc:331,1
    - Dst: d_algoName::hasLabels
      Src: /src/pdns/pdns/dnspacket.cc:336,1
    - Dst: d_algoName::wirelength
      Src: /src/pdns/pdns/dnspacket.cc:338,1
    - Dst: empty
      Src: /src/pdns/pdns/dnspacket.cc:344,1
    - Dst: DNSPacketWriter::optvect_t::empty
      Src: /src/pdns/pdns/dnspacket.cc:344,1
    - Dst: begin
      Src: /src/pdns/pdns/dnspacket.cc:347,1
    - Dst: end
      Src: /src/pdns/pdns/dnspacket.cc:347,1
    - Dst: max
      Src: /src/pdns/pdns/dnspacket.cc:348,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnspacket.cc:350,1
    - Dst: vector<DNSZoneRecord>::iterator::dr::getContent
      Src: /src/pdns/pdns/dnspacket.cc:351,1
    - Dst: DNSPacketWriter::size
      Src: /src/pdns/pdns/dnspacket.cc:352,1
    - Dst: DNSPacket::getMaxReplyLen
      Src: /src/pdns/pdns/dnspacket.cc:352,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/dnspacket.cc:354,1
    - Dst: DNSPacketWriter::rollback
      Src: /src/pdns/pdns/dnspacket.cc:356,1
    - Dst: DNSPacketWriter::truncate
      Src: /src/pdns/pdns/dnspacket.cc:357,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnspacket.cc:358,1
    - Dst: empty
      Src: /src/pdns/pdns/dnspacket.cc:365,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/dnspacket.cc:365,1
    - Dst: empty
      Src: /src/pdns/pdns/dnspacket.cc:371,1
    - Dst: getBits
      Src: /src/pdns/pdns/dnspacket.cc:373,1
    - Dst: max
      Src: /src/pdns/pdns/dnspacket.cc:377,1
    - Dst: EDNSSubnetOpts::getScopePrefixLength
      Src: /src/pdns/pdns/dnspacket.cc:377,1
    - Dst: EDNSSubnetOpts::setScopePrefixLength
      Src: /src/pdns/pdns/dnspacket.cc:379,1
    - Dst: EDNSSubnetOpts::makeOptString
      Src: /src/pdns/pdns/dnspacket.cc:381,1
    - Dst: DNSPacketWriter::optvect_t::emplace_back
      Src: /src/pdns/pdns/dnspacket.cc:382,1
    - Dst: isWellFormed
      Src: /src/pdns/pdns/dnspacket.cc:385,1
    - Dst: makeServerCookie
      Src: /src/pdns/pdns/dnspacket.cc:386,1
    - Dst: DNSPacket::getInnerRemote
      Src: /src/pdns/pdns/dnspacket.cc:386,1
    - Dst: DNSPacketWriter::optvect_t::emplace_back
      Src: /src/pdns/pdns/dnspacket.cc:387,1
    - Dst: makeOptString
      Src: /src/pdns/pdns/dnspacket.cc:387,1
    - Dst: DNSPacketWriter::optvect_t::empty
      Src: /src/pdns/pdns/dnspacket.cc:390,1
    - Dst: DNSPacketWriter::addOpt
      Src: /src/pdns/pdns/dnspacket.cc:392,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/dnspacket.cc:393,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnspacket.cc:397,1
    - Dst: what
      Src: /src/pdns/pdns/dnspacket.cc:397,1
    - Dst: info
      Src: /src/pdns/pdns/dnspacket.cc:398,1
    - Dst: what
      Src: /src/pdns/pdns/dnspacket.cc:398,1
    - Dst: d_algoName::hasLabels
      Src: /src/pdns/pdns/dnspacket.cc:403,1
    - Dst: addTSIG
      Src: /src/pdns/pdns/dnspacket.cc:404,1
    - Dst: assign
      Src: /src/pdns/pdns/dnspacket.cc:407,1
    - Dst: vector::size
      Src: /src/pdns/pdns/dnspacket.cc:407,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnspacket.cc:410,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnspacket.cc:411,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnspacket.cc:412,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnspacket.cc:413,1
    CyclomaticComplexity: 32
    EdgeCount: 32
    ICount: 93
    argCount: 1
    argNames:
    - throwsOnTruncation
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 414
      start: 262
    functionDepth: 1
    functionLinenumber: 262
    functionLinenumberEnd: 414
    functionName: DNSPacket::wrapup
    functionSourceFile: /src/pdns/pdns/dnspacket.cc
    functionUses: 0
    functionsReached:
    - makeServerCookie
    - PDNSException
    - vector<DNSZoneRecord>::iterator::dr::getContent
    - isWellFormed
    - DNSPacketWriter::optvect_t::emplace_back
    - DNSPacketWriter::size
    - SLOG
    - string::size
    - DNSPacketWriter::getHeader
    - d_algoName::hasLabels
    - DNSPacketWriter::rollback
    - begin
    - empty
    - vector::size
    - DNSPacketWriter::startRecord
    - DNSPacket::getInnerRemote
    - EDNSSubnetOpts::getScopePrefixLength
    - assign
    - max
    - pdns::shuffle
    - makeOptString
    - DNSPacketWriter::commit
    - stable_sort
    - d_algoName::wirelength
    - EDNSSubnetOpts::setScopePrefixLength
    - DNSPacket::getMaxReplyLen
    - arg
    - DNSPacketWriter::optvect_t::empty
    - addTSIG
    - getBits
    - what
    - end
    - info
    - DNSPacketWriter::addOpt
    - getSource
    - DNSPacketWriter::truncate
    - EDNSSubnetOpts::makeOptString
    - getCode
    linkageType: ''
    returnType: void
    signature: void DNSPacket::wrapup(bool throwsOnTruncation)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/pdns/pdns/dnspacket.cc:418,1
    - Dst: dns_random_uint16
      Src: /src/pdns/pdns/dnspacket.cc:419,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 3
    argNames:
    - op
    - qd
    - newqtype
    argTypes:
    - int
    - DNSName
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 427
      start: 416
    functionDepth: 0
    functionLinenumber: 416
    functionLinenumberEnd: 427
    functionName: DNSPacket::setQuestion
    functionSourceFile: /src/pdns/pdns/dnspacket.cc
    functionUses: 0
    functionsReached:
    - memset
    - dns_random_uint16
    linkageType: ''
    returnType: void
    signature: void DNSPacket::setQuestion(int op, const DNSName &qd, int newqtype)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: make_unique<DNSPacket>
      Src: /src/pdns/pdns/dnspacket.cc:432,1
    - Dst: auto::setSocket
      Src: /src/pdns/pdns/dnspacket.cc:433,1
    - Dst: auto::setRemote
      Src: /src/pdns/pdns/dnspacket.cc:435,1
    - Dst: auto::setAnswer
      Src: /src/pdns/pdns/dnspacket.cc:437,1
    - Dst: auto::setA
      Src: /src/pdns/pdns/dnspacket.cc:438,1
    - Dst: auto::setRA
      Src: /src/pdns/pdns/dnspacket.cc:439,1
    - Dst: auto::setRD
      Src: /src/pdns/pdns/dnspacket.cc:440,1
    - Dst: auto::setID
      Src: /src/pdns/pdns/dnspacket.cc:441,1
    - Dst: auto::setOpcode
      Src: /src/pdns/pdns/dnspacket.cc:442,1
    - Dst: hasLabels
      Src: /src/pdns/pdns/dnspacket.cc:462,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 37
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 471
      start: 430
    functionDepth: 1
    functionLinenumber: 430
    functionLinenumberEnd: 471
    functionName: DNSPacket::replyPacket
    functionSourceFile: /src/pdns/pdns/dnspacket.cc
    functionUses: 0
    functionsReached:
    - auto::setRA
    - auto::setA
    - auto::setSocket
    - auto::setID
    - auto::setOpcode
    - auto::setRD
    - auto::setRemote
    - make_unique<DNSPacket>
    - hasLabels
    - auto::setAnswer
    linkageType: ''
    returnType: std::unique_ptr<DNSPacket>
    signature: std::unique_ptr<DNSPacket> DNSPacket::replyPacket() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: replace
      Src: /src/pdns/pdns/dnspacket.cc:484,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - ' qd'
    argTypes:
    - DNSPacket
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 487
      start: 473
    functionDepth: 0
    functionLinenumber: 473
    functionLinenumberEnd: 487
    functionName: DNSPacket::spoofQuestion
    functionSourceFile: /src/pdns/pdns/dnspacket.cc
    functionUses: 0
    functionsReached:
    - replace
    linkageType: ''
    returnType: void
    signature: void DNSPacket::spoofQuestion(const DNSPacket& qd)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assign
      Src: /src/pdns/pdns/dnspacket.cc:491,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnspacket.cc:493,1
    - Dst: DNSPacket::getRemoteStringWithPort
      Src: /src/pdns/pdns/dnspacket.cc:494,1
    - Dst: info
      Src: /src/pdns/pdns/dnspacket.cc:495,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnspacket.cc:495,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnspacket.cc:495,1
    - Dst: DNSPacket::getRemoteStringWithPort
      Src: /src/pdns/pdns/dnspacket.cc:495,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnspacket.cc:500,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnspacket.cc:500,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - mesg
    - length
    argTypes:
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 502
      start: 489
    functionDepth: 2
    functionLinenumber: 489
    functionLinenumberEnd: 502
    functionName: DNSPacket::noparse
    functionSourceFile: /src/pdns/pdns/dnspacket.cc
    functionUses: 0
    functionsReached:
    - assign
    - memcpy
    - SLOG
    - Logging::Loggable
    - info
    - DNSPacket::getRemoteStringWithPort
    - c_str
    linkageType: ''
    returnType: int
    signature: int DNSPacket::noparse(const char *mesg, size_t length)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 5
    argNames:
    - ' tr'
    - ' keyname'
    - ' secret'
    - ' previous'
    - timersonly
    argTypes:
    - TSIGRecordContent
    - DNSName
    - string
    - string
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 512
      start: 504
    functionDepth: 0
    functionLinenumber: 504
    functionLinenumberEnd: 512
    functionName: DNSPacket::setTSIGDetails
    functionSourceFile: /src/pdns/pdns/dnspacket.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void DNSPacket::setTSIGDetails(const TSIGRecordContent& tr, const DNSName&
      keyname, const string& secret, const string& previous, bool timersonly)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: MOADNSParser::getTSIGPos
      Src: /src/pdns/pdns/dnspacket.cc:518,1
    - Dst: getRR
      Src: /src/pdns/pdns/dnspacket.cc:527,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnspacket.cc:529,1
    - Dst: info
      Src: /src/pdns/pdns/dnspacket.cc:530,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 24
    argCount: 3
    argNames:
    - trc
    - keyname
    - tsigPosOut
    argTypes:
    - TSIGRecordContent*
    - DNSName*
    - uint16_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 553
      start: 514
    functionDepth: 0
    functionLinenumber: 514
    functionLinenumberEnd: 553
    functionName: DNSPacket::getTSIGDetails
    functionSourceFile: /src/pdns/pdns/dnspacket.cc
    functionUses: 0
    functionsReached:
    - getRR
    - SLOG
    - info
    - MOADNSParser::getTSIGPos
    linkageType: ''
    returnType: bool
    signature: bool DNSPacket::getTSIGDetails(TSIGRecordContent* trc, DNSName* keyname,
      uint16_t* tsigPosOut) const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: MOADNSParser::getTSIGPos
      Src: /src/pdns/pdns/dnspacket.cc:559,1
    - Dst: DNSPacket::validateTSIG
      Src: /src/pdns/pdns/dnspacket.cc:564,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 5
    argNames:
    - ' tsigTriplet'
    - ' tsigContent'
    - ' previousMAC'
    - ' theirMAC'
    - timersOnly
    argTypes:
    - TSIGTriplet
    - TSIGRecordContent
    - std::string
    - std::string
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 572
      start: 555
    functionDepth: 0
    functionLinenumber: 555
    functionLinenumberEnd: 572
    functionName: DNSPacket::validateTSIG
    functionSourceFile: /src/pdns/pdns/dnspacket.cc
    functionUses: 1
    functionsReached:
    - DNSPacket::validateTSIG
    - MOADNSParser::getTSIGPos
    linkageType: ''
    returnType: bool
    signature: bool DNSPacket::validateTSIG(const TSIGTriplet& tsigTriplet, const
      TSIGRecordContent& tsigContent, const std::string& previousMAC, const std::string&
      theirMAC, bool timersOnly) const
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: SLOG
      Src: /src/pdns/pdns/dnspacket.cc:582,1
    - Dst: info
      Src: /src/pdns/pdns/dnspacket.cc:583,1
    - Dst: getRR
      Src: /src/pdns/pdns/dnspacket.cc:589,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnspacket.cc:591,1
    - Dst: info
      Src: /src/pdns/pdns/dnspacket.cc:592,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 2
    argNames:
    - tr
    - keyname
    argTypes:
    - TKEYRecordContent*
    - DNSName*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 609
      start: 574
    functionDepth: 0
    functionLinenumber: 574
    functionLinenumberEnd: 609
    functionName: DNSPacket::getTKEYRecord
    functionSourceFile: /src/pdns/pdns/dnspacket.cc
    functionUses: 0
    functionsReached:
    - getRR
    - SLOG
    - info
    linkageType: ''
    returnType: bool
    signature: bool DNSPacket::getTKEYRecord(TKEYRecordContent *tr, DNSName *keyname)
      const
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: assign
      Src: /src/pdns/pdns/dnspacket.cc:618,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnspacket.cc:621,1
    - Dst: DNSPacket::getRemoteString
      Src: /src/pdns/pdns/dnspacket.cc:622,1
    - Dst: info
      Src: /src/pdns/pdns/dnspacket.cc:623,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnspacket.cc:623,1
    - Dst: DNSPacket::getRemoteStringWithPort
      Src: /src/pdns/pdns/dnspacket.cc:623,1
    - Dst: MOADNSParser::getTSIGPos
      Src: /src/pdns/pdns/dnspacket.cc:634,1
    - Dst: getEDNSOpts
      Src: /src/pdns/pdns/dnspacket.cc:640,1
    - Dst: std::min
      Src: /src/pdns/pdns/dnspacket.cc:646,1
    - Dst: std::max
      Src: /src/pdns/pdns/dnspacket.cc:646,1
    - Dst: static_cast<uint16_t>
      Src: /src/pdns/pdns/dnspacket.cc:646,1
    - Dst: EDNSSubnetOpts::getFromString
      Src: /src/pdns/pdns/dnspacket.cc:656,1
    - Dst: makeFromString
      Src: /src/pdns/pdns/dnspacket.cc:663,1
    - Dst: isValid
      Src: /src/pdns/pdns/dnspacket.cc:664,1
    - Dst: DNSPacket::getInnerRemote
      Src: /src/pdns/pdns/dnspacket.cc:664,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnspacket.cc:678,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnspacket.cc:678,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnspacket.cc:683,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnspacket.cc:685,1
    - Dst: DNSPacket::getRemoteString
      Src: /src/pdns/pdns/dnspacket.cc:685,1
    - Dst: RCode::to_s
      Src: /src/pdns/pdns/dnspacket.cc:685,1
    - Dst: info
      Src: /src/pdns/pdns/dnspacket.cc:686,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnspacket.cc:686,1
    - Dst: DNSPacket::getRemoteString
      Src: /src/pdns/pdns/dnspacket.cc:686,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnspacket.cc:686,1
    - Dst: RCode::to_s
      Src: /src/pdns/pdns/dnspacket.cc:686,1
    - Dst: TSIGRecordContent
      Src: /src/pdns/pdns/dnspacket.cc:694,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnspacket.cc:699,1
    - Dst: DNSPacket::getRemoteString
      Src: /src/pdns/pdns/dnspacket.cc:699,1
    - Dst: what
      Src: /src/pdns/pdns/dnspacket.cc:699,1
    - Dst: error
      Src: /src/pdns/pdns/dnspacket.cc:700,1
    - Dst: what
      Src: /src/pdns/pdns/dnspacket.cc:700,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnspacket.cc:700,1
    - Dst: DNSPacket::getRemoteString
      Src: /src/pdns/pdns/dnspacket.cc:700,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 58
    argCount: 2
    argNames:
    - mesg
    - length
    argTypes:
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 702
      start: 615
    functionDepth: 2
    functionLinenumber: 615
    functionLinenumberEnd: 702
    functionName: DNSPacket::parse
    functionSourceFile: /src/pdns/pdns/dnspacket.cc
    functionUses: 8
    functionsReached:
    - isValid
    - ntohs
    - RCode::to_s
    - error
    - SLOG
    - Logging::Loggable
    - EDNSSubnetOpts::getFromString
    - DNSPacket::getRemoteStringWithPort
    - static_cast<uint16_t>
    - c_str
    - std::max
    - TSIGRecordContent
    - DNSPacket::getInnerRemote
    - getEDNSOpts
    - assign
    - makeFromString
    - MOADNSParser::getTSIGPos
    - memcpy
    - std::min
    - what
    - info
    - DNSPacket::getRemoteString
    linkageType: ''
    returnType: int
    signature: int DNSPacket::parse(const char *mesg, size_t length)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 707
      start: 704
    functionDepth: 0
    functionLinenumber: 704
    functionLinenumberEnd: 707
    functionName: DNSPacket::getMaxReplyLen
    functionSourceFile: /src/pdns/pdns/dnspacket.cc
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int DNSPacket::getMaxReplyLen()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - bytes
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 712
      start: 709
    functionDepth: 0
    functionLinenumber: 709
    functionLinenumberEnd: 712
    functionName: DNSPacket::setMaxReplyLen
    functionSourceFile: /src/pdns/pdns/dnspacket.cc
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void DNSPacket::setMaxReplyLen(int bytes)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: reset
      Src: /src/pdns/pdns/dnspacket.cc:718,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - outer
    argTypes:
    - ComboAddress*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 719
      start: 715
    functionDepth: 0
    functionLinenumber: 715
    functionLinenumberEnd: 719
    functionName: DNSPacket::setRemote
    functionSourceFile: /src/pdns/pdns/dnspacket.cc
    functionUses: 2
    functionsReached:
    - reset
    linkageType: ''
    returnType: void
    signature: void DNSPacket::setRemote(const ComboAddress *outer)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 724
      start: 721
    functionDepth: 0
    functionLinenumber: 721
    functionLinenumberEnd: 724
    functionName: DNSPacket::hasEDNSSubnet
    functionSourceFile: /src/pdns/pdns/dnspacket.cc
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool DNSPacket::hasEDNSSubnet() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 729
      start: 726
    functionDepth: 0
    functionLinenumber: 726
    functionLinenumberEnd: 729
    functionName: DNSPacket::hasEDNS
    functionSourceFile: /src/pdns/pdns/dnspacket.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool DNSPacket::hasEDNS() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 734
      start: 731
    functionDepth: 0
    functionLinenumber: 731
    functionLinenumberEnd: 734
    functionName: DNSPacket::hasEDNSCookie
    functionSourceFile: /src/pdns/pdns/dnspacket.cc
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool DNSPacket::hasEDNSCookie() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: isWellFormed
      Src: /src/pdns/pdns/dnspacket.cc:741,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 742
      start: 736
    functionDepth: 0
    functionLinenumber: 736
    functionLinenumberEnd: 742
    functionName: DNSPacket::hasWellFormedEDNSCookie
    functionSourceFile: /src/pdns/pdns/dnspacket.cc
    functionUses: 0
    functionsReached:
    - isWellFormed
    linkageType: ''
    returnType: bool
    signature: bool DNSPacket::hasWellFormedEDNSCookie() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DNSPacket::hasWellFormedEDNSCookie
      Src: /src/pdns/pdns/dnspacket.cc:746,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 750
      start: 744
    functionDepth: 1
    functionLinenumber: 744
    functionLinenumberEnd: 750
    functionName: DNSPacket::hasValidEDNSCookie
    functionSourceFile: /src/pdns/pdns/dnspacket.cc
    functionUses: 0
    functionsReached:
    - DNSPacket::hasWellFormedEDNSCookie
    linkageType: ''
    returnType: bool
    signature: bool DNSPacket::hasValidEDNSCookie() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: setSource
      Src: /src/pdns/pdns/dnspacket.cc:753,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ' netmask'
    argTypes:
    - Netmask
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 755
      start: 752
    functionDepth: 1
    functionLinenumber: 752
    functionLinenumberEnd: 755
    functionName: DNSPacket::setRealRemote
    functionSourceFile: /src/pdns/pdns/dnspacket.cc
    functionUses: 1
    functionsReached:
    - setSource
    linkageType: ''
    returnType: void
    signature: void DNSPacket::setRealRemote(const Netmask& netmask)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getSource
      Src: /src/pdns/pdns/dnspacket.cc:759,1
    - Dst: DNSPacket::getInnerRemote
      Src: /src/pdns/pdns/dnspacket.cc:759,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 760
      start: 757
    functionDepth: 1
    functionLinenumber: 757
    functionLinenumberEnd: 760
    functionName: DNSPacket::getRealRemote
    functionSourceFile: /src/pdns/pdns/dnspacket.cc
    functionUses: 2
    functionsReached:
    - getSource
    - DNSPacket::getInnerRemote
    linkageType: ''
    returnType: Netmask
    signature: Netmask DNSPacket::getRealRemote() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - sock
    argTypes:
    - Utility::sock_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 765
      start: 762
    functionDepth: 0
    functionLinenumber: 762
    functionLinenumberEnd: 765
    functionName: DNSPacket::setSocket
    functionSourceFile: /src/pdns/pdns/dnspacket.cc
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void DNSPacket::setSocket(Utility::sock_t sock)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: replace
      Src: /src/pdns/pdns/dnspacket.cc:769,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 770
      start: 767
    functionDepth: 0
    functionLinenumber: 767
    functionLinenumberEnd: 770
    functionName: DNSPacket::commitD
    functionSourceFile: /src/pdns/pdns/dnspacket.cc
    functionUses: 1
    functionsReached:
    - replace
    linkageType: ''
    returnType: void
    signature: void DNSPacket::commitD()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 774
      start: 772
    functionDepth: 0
    functionLinenumber: 772
    functionLinenumberEnd: 774
    functionName: '& DNSPacket::getTSIGKeyname() const'
    functionSourceFile: /src/pdns/pdns/dnspacket.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: DNSName
    signature: DNSName & DNSPacket::getTSIGKeyname() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: getTSIGKeyname
      Src: /src/pdns/pdns/dnspacket.cc:781,1
    - Dst: GssContext::destroy
      Src: /src/pdns/pdns/dnspacket.cc:783,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 4
    argCount: 1
    argNames:
    - rcode
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 785
      start: 777
    functionDepth: 0
    functionLinenumber: 777
    functionLinenumberEnd: 785
    functionName: DNSPacket::cleanupGSS
    functionSourceFile: /src/pdns/pdns/dnspacket.cc
    functionUses: 0
    functionsReached:
    - getTSIGKeyname
    - GssContext::destroy
    linkageType: ''
    returnType: void
    signature: void DNSPacket::cleanupGSS(int rcode)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/ixfr.cc:34,1
    - Dst: size
      Src: /src/pdns/pdns/ixfr.cc:42,1
    - Dst: getRR
      Src: /src/pdns/pdns/ixfr.cc:52,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/ixfr.cc:54,1
    - Dst: toLogString
      Src: /src/pdns/pdns/ixfr.cc:54,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/ixfr.cc:54,1
    - Dst: size
      Src: /src/pdns/pdns/ixfr.cc:62,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/ixfr.cc:72,1
    - Dst: size
      Src: /src/pdns/pdns/ixfr.cc:75,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/ixfr.cc:76,1
    - Dst: size
      Src: /src/pdns/pdns/ixfr.cc:79,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/ixfr.cc:80,1
    - Dst: toLogString
      Src: /src/pdns/pdns/ixfr.cc:80,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/ixfr.cc:80,1
    - Dst: getRR
      Src: /src/pdns/pdns/ixfr.cc:83,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/ixfr.cc:85,1
    - Dst: toLogString
      Src: /src/pdns/pdns/ixfr.cc:85,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/ixfr.cc:85,1
    - Dst: push_back
      Src: /src/pdns/pdns/ixfr.cc:92,1
    - Dst: size
      Src: /src/pdns/pdns/ixfr.cc:95,1
    - Dst: push_back
      Src: /src/pdns/pdns/ixfr.cc:96,1
    - Dst: size
      Src: /src/pdns/pdns/ixfr.cc:99,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/ixfr.cc:100,1
    - Dst: toLogString
      Src: /src/pdns/pdns/ixfr.cc:100,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/ixfr.cc:100,1
    - Dst: getRR
      Src: /src/pdns/pdns/ixfr.cc:103,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/ixfr.cc:105,1
    - Dst: toLogString
      Src: /src/pdns/pdns/ixfr.cc:105,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/ixfr.cc:105,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/ixfr.cc:109,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/ixfr.cc:109,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/ixfr.cc:109,1
    - Dst: toLogString
      Src: /src/pdns/pdns/ixfr.cc:109,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/ixfr.cc:109,1
    - Dst: size
      Src: /src/pdns/pdns/ixfr.cc:114,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/ixfr.cc:115,1
    - Dst: toLogString
      Src: /src/pdns/pdns/ixfr.cc:115,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/ixfr.cc:115,1
    - Dst: vector::emplace_back
      Src: /src/pdns/pdns/ixfr.cc:119,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 50
    argCount: 4
    argNames:
    - ' primary'
    - ' zone'
    - ' records'
    - ' primarySOA'
    argTypes:
    - ComboAddress
    - DNSName
    - vector<DNSRecord>
    - std::shared_ptr<const SOARecordContent>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 29
    functionDepth: 0
    functionLinenumber: 29
    functionLinenumberEnd: 123
    functionName: processIXFRRecords
    functionSourceFile: /src/pdns/pdns/ixfr.cc
    functionUses: 12
    functionsReached:
    - getRR
    - toLogString
    - vector::push_back
    - std::to_string
    - std::runtime_error
    - push_back
    - size
    - vector::emplace_back
    - toStringWithPort
    linkageType: ''
    returnType: vector<pair<vector<DNSRecord>, vector<DNSRecord> > >
    signature: "vector<pair<vector<DNSRecord>, vector<DNSRecord> > > processIXFRRecords(const
      ComboAddress& primary, const DNSName& zone,\n                                                                        const
      vector<DNSRecord>& records, const std::shared_ptr<const SOARecordContent>& primarySOA)"
  - BBCount: 29
    BranchProfiles: []
    Callsites:
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/ixfr.cc:137,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/ixfr.cc:138,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/ixfr.cc:139,1
    - Dst: dns_random_uint16
      Src: /src/pdns/pdns/ixfr.cc:139,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/ixfr.cc:140,1
    - Dst: getContent
      Src: /src/pdns/pdns/ixfr.cc:141,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/ixfr.cc:143,1
    - Dst: TSIGRecordContent::TSIGRecordContent
      Src: /src/pdns/pdns/ixfr.cc:144,1
    - Dst: algo::empty
      Src: /src/pdns/pdns/ixfr.cc:146,1
    - Dst: getTSIGHashEnum
      Src: /src/pdns/pdns/ixfr.cc:148,1
    - Dst: getTSIGAlgoName
      Src: /src/pdns/pdns/ixfr.cc:150,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/ixfr.cc:152,1
    - Dst: algo::toLogString
      Src: /src/pdns/pdns/ixfr.cc:152,1
    - Dst: time
      Src: /src/pdns/pdns/ixfr.cc:154,1
    - Dst: ntohs
      Src: /src/pdns/pdns/ixfr.cc:156,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/ixfr.cc:156,1
    - Dst: addTSIG
      Src: /src/pdns/pdns/ixfr.cc:158,1
    - Dst: htons
      Src: /src/pdns/pdns/ixfr.cc:160,1
    - Dst: vector::size
      Src: /src/pdns/pdns/ixfr.cc:160,1
    - Dst: string::append
      Src: /src/pdns/pdns/ixfr.cc:162,1
    - Dst: vector::size
      Src: /src/pdns/pdns/ixfr.cc:162,1
    - Dst: Socket::bind
      Src: /src/pdns/pdns/ixfr.cc:166,1
    - Dst: Socket::setNonBlocking
      Src: /src/pdns/pdns/ixfr.cc:168,1
    - Dst: time
      Src: /src/pdns/pdns/ixfr.cc:170,1
    - Dst: time
      Src: /src/pdns/pdns/ixfr.cc:177,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/ixfr.cc:179,1
    - Dst: toLogString
      Src: /src/pdns/pdns/ixfr.cc:179,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/ixfr.cc:179,1
    - Dst: Socket::connect
      Src: /src/pdns/pdns/ixfr.cc:185,1
    - Dst: timeoutChecker
      Src: /src/pdns/pdns/ixfr.cc:187,1
    - Dst: Socket::writenWithTimeout
      Src: /src/pdns/pdns/ixfr.cc:189,1
    - Dst: string::data
      Src: /src/pdns/pdns/ixfr.cc:189,1
    - Dst: string::size
      Src: /src/pdns/pdns/ixfr.cc:189,1
    - Dst: timeoutChecker
      Src: /src/pdns/pdns/ixfr.cc:220,1
    - Dst: readn2WithTimeout
      Src: /src/pdns/pdns/ixfr.cc:224,1
    - Dst: Socket::getHandle
      Src: /src/pdns/pdns/ixfr.cc:224,1
    - Dst: what
      Src: /src/pdns/pdns/ixfr.cc:227,1
    - Dst: ntohs
      Src: /src/pdns/pdns/ixfr.cc:231,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/ixfr.cc:239,1
    - Dst: toLogString
      Src: /src/pdns/pdns/ixfr.cc:239,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/ixfr.cc:239,1
    - Dst: std::string::resize
      Src: /src/pdns/pdns/ixfr.cc:242,1
    - Dst: timeoutChecker
      Src: /src/pdns/pdns/ixfr.cc:244,1
    - Dst: readn2WithTimeout
      Src: /src/pdns/pdns/ixfr.cc:247,1
    - Dst: Socket::getHandle
      Src: /src/pdns/pdns/ixfr.cc:247,1
    - Dst: std::string::data
      Src: /src/pdns/pdns/ixfr.cc:247,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/ixfr.cc:252,1
    - Dst: toLogString
      Src: /src/pdns/pdns/ixfr.cc:252,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/ixfr.cc:252,1
    - Dst: RCode::to_s
      Src: /src/pdns/pdns/ixfr.cc:252,1
    - Dst: algo::empty
      Src: /src/pdns/pdns/ixfr.cc:255,1
    - Dst: TSIGTCPVerifier::check
      Src: /src/pdns/pdns/ixfr.cc:256,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/ixfr.cc:263,1
    - Dst: toLogString
      Src: /src/pdns/pdns/ixfr.cc:263,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/ixfr.cc:263,1
    - Dst: QType
      Src: /src/pdns/pdns/ixfr.cc:263,1
    - Dst: getRR
      Src: /src/pdns/pdns/ixfr.cc:266,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/ixfr.cc:268,1
    - Dst: toLogString
      Src: /src/pdns/pdns/ixfr.cc:268,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/ixfr.cc:268,1
    - Dst: getRR
      Src: /src/pdns/pdns/ixfr.cc:271,1
    - Dst: getRR
      Src: /src/pdns/pdns/ixfr.cc:275,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/ixfr.cc:277,1
    - Dst: toLogString
      Src: /src/pdns/pdns/ixfr.cc:277,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/ixfr.cc:277,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/ixfr.cc:277,1
    - Dst: getRR
      Src: /src/pdns/pdns/ixfr.cc:277,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/ixfr.cc:277,1
    - Dst: std::move
      Src: /src/pdns/pdns/ixfr.cc:279,1
    - Dst: getRR
      Src: /src/pdns/pdns/ixfr.cc:282,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/ixfr.cc:284,1
    - Dst: toLogString
      Src: /src/pdns/pdns/ixfr.cc:284,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/ixfr.cc:284,1
    - Dst: vector::size
      Src: /src/pdns/pdns/ixfr.cc:293,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/ixfr.cc:314,1
    - Dst: QType
      Src: /src/pdns/pdns/ixfr.cc:314,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/ixfr.cc:314,1
    - Dst: toLogString
      Src: /src/pdns/pdns/ixfr.cc:314,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/ixfr.cc:314,1
    - Dst: d_name::makeUsRelative
      Src: /src/pdns/pdns/ixfr.cc:317,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/ixfr.cc:318,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/ixfr.cc:325,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/ixfr.cc:325,1
    - Dst: toLogString
      Src: /src/pdns/pdns/ixfr.cc:325,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/ixfr.cc:325,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/ixfr.cc:330,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/ixfr.cc:330,1
    - Dst: toLogString
      Src: /src/pdns/pdns/ixfr.cc:330,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/ixfr.cc:330,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/ixfr.cc:334,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/ixfr.cc:334,1
    - Dst: toLogString
      Src: /src/pdns/pdns/ixfr.cc:334,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/ixfr.cc:334,1
    - Dst: processIXFRRecords
      Src: /src/pdns/pdns/ixfr.cc:338,1
    CyclomaticComplexity: 56
    EdgeCount: 56
    ICount: 129
    argCount: 9
    argNames:
    - slog
    - ' primary'
    - ' zone'
    - ' oursr'
    - xfrTimeout
    - totalTimeout
    - ' tt'
    - laddr
    - maxReceivedBytes
    argTypes:
    - Logr::log_t
    - ComboAddress
    - DNSName
    - DNSRecord
    - uint16_t
    - bool
    - TSIGTriplet
    - ComboAddress*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 339
      start: 127
    functionDepth: 1
    functionLinenumber: 127
    functionLinenumberEnd: 339
    functionName: getIXFRDeltas
    functionSourceFile: /src/pdns/pdns/ixfr.cc
    functionUses: 2
    functionsReached:
    - toLogString
    - std::to_string
    - ntohs
    - processIXFRRecords
    - dns_random_uint16
    - RCode::to_s
    - TSIGRecordContent::TSIGRecordContent
    - string::data
    - string::size
    - Socket::setNonBlocking
    - time
    - QType
    - TSIGTCPVerifier::check
    - DNSPacketWriter::getHeader
    - Socket::connect
    - DNSPacketWriter::startRecord
    - htons
    - Socket::writenWithTimeout
    - vector::push_back
    - DNSPacketWriter::commit
    - std::runtime_error
    - readn2WithTimeout
    - std::string::data
    - getTSIGHashEnum
    - std::string::resize
    - toStringWithPort
    - d_name::makeUsRelative
    - Socket::bind
    - getRR
    - std::move
    - Socket::getHandle
    - addTSIG
    - getTSIGAlgoName
    - what
    - string::append
    - getContent
    - algo::empty
    - algo::toLogString
    - vector::size
    - timeoutChecker
    linkageType: ''
    returnType: vector<pair<vector<DNSRecord>, vector<DNSRecord>>>
    signature: "vector<pair<vector<DNSRecord>, vector<DNSRecord>>> getIXFRDeltas(Logr::log_t
      slog, const ComboAddress& primary, const DNSName& zone, const DNSRecord& oursr,\n
      \                                                                uint16_t xfrTimeout,
      bool totalTimeout,\n                                                                 const
      TSIGTriplet& tt, const ComboAddress* laddr, size_t maxReceivedBytes)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 64
    functionDepth: 0
    functionLinenumber: 64
    functionLinenumberEnd: 64
    functionName: Semaphore::Semaphore
    functionSourceFile: /src/pdns/pdns/utility.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Semaphore(const Semaphore&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 65
    functionDepth: 0
    functionLinenumber: 65
    functionLinenumberEnd: 65
    functionName: operator=(const Semaphore&)
    functionSourceFile: /src/pdns/pdns/utility.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void operator=(const Semaphore&)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: withName
      Src: /src/pdns/pdns/ueberbackend.cc:57,1
    - Dst: SLOG
      Src: /src/pdns/pdns/ueberbackend.cc:60,1
    - Dst: std::shared_ptr::info
      Src: /src/pdns/pdns/ueberbackend.cc:61,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/ueberbackend.cc:61,1
    - Dst: dlopen
      Src: /src/pdns/pdns/ueberbackend.cc:63,1
    - Dst: c_str
      Src: /src/pdns/pdns/ueberbackend.cc:63,1
    - Dst: SLOG
      Src: /src/pdns/pdns/ueberbackend.cc:67,1
    - Dst: dlerror
      Src: /src/pdns/pdns/ueberbackend.cc:67,1
    - Dst: std::shared_ptr::error
      Src: /src/pdns/pdns/ueberbackend.cc:68,1
    - Dst: dlerror
      Src: /src/pdns/pdns/ueberbackend.cc:68,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/ueberbackend.cc:68,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - ' name'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 52
    functionDepth: 0
    functionLinenumber: 52
    functionLinenumberEnd: 73
    functionName: UeberBackend::loadmodule
    functionSourceFile: /src/pdns/pdns/ueberbackend.cc
    functionUses: 0
    functionsReached:
    - std::shared_ptr::info
    - SLOG
    - dlopen
    - withName
    - Logging::Loggable
    - dlerror
    - std::shared_ptr::error
    - c_str
    linkageType: ''
    returnType: bool
    signature: bool UeberBackend::loadmodule(const string& name)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: withName
      Src: /src/pdns/pdns/ueberbackend.cc:80,1
    - Dst: SLOG
      Src: /src/pdns/pdns/ueberbackend.cc:83,1
    - Dst: std::shared_ptr::info
      Src: /src/pdns/pdns/ueberbackend.cc:84,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/ueberbackend.cc:84,1
    - Dst: SLOG
      Src: /src/pdns/pdns/ueberbackend.cc:89,1
    - Dst: std::shared_ptr::info
      Src: /src/pdns/pdns/ueberbackend.cc:90,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/ueberbackend.cc:90,1
    - Dst: find
      Src: /src/pdns/pdns/ueberbackend.cc:92,1
    - Dst: UeberBackend::loadmodule
      Src: /src/pdns/pdns/ueberbackend.cc:97,1
    - Dst: UeberBackend::loadmodule
      Src: /src/pdns/pdns/ueberbackend.cc:101,1
    - Dst: UeberBackend::loadmodule
      Src: /src/pdns/pdns/ueberbackend.cc:107,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 24
    argCount: 2
    argNames:
    - ' modules'
    - ' path'
    argTypes:
    - vector<string>
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 115
      start: 75
    functionDepth: 1
    functionLinenumber: 75
    functionLinenumberEnd: 115
    functionName: UeberBackend::loadModules
    functionSourceFile: /src/pdns/pdns/ueberbackend.cc
    functionUses: 2
    functionsReached:
    - std::shared_ptr::info
    - SLOG
    - Logging::Loggable
    - withName
    - UeberBackend::loadmodule
    - find
    linkageType: ''
    returnType: bool
    signature: bool UeberBackend::loadModules(const vector<string>& modules, const
      string& path)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: arg
      Src: /src/pdns/pdns/ueberbackend.cc:119,1
    - Dst: declare
      Src: /src/pdns/pdns/ueberbackend.cc:123,1
    - Dst: getPointer
      Src: /src/pdns/pdns/ueberbackend.cc:124,1
    - Dst: notify_all
      Src: /src/pdns/pdns/ueberbackend.cc:130,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 131
      start: 117
    functionDepth: 0
    functionLinenumber: 117
    functionLinenumberEnd: 131
    functionName: UeberBackend::go
    functionSourceFile: /src/pdns/pdns/ueberbackend.cc
    functionUses: 2
    functionsReached:
    - declare
    - notify_all
    - getPointer
    - arg
    linkageType: ''
    returnType: void
    signature: void UeberBackend::go()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: hasVariant
      Src: /src/pdns/pdns/ueberbackend.cc:137,1
    - Dst: UeberBackend::getCapabilities
      Src: /src/pdns/pdns/ueberbackend.cc:137,1
    - Dst: UeberBackend::getDomainInfo
      Src: /src/pdns/pdns/ueberbackend.cc:140,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 9
    argCount: 3
    argNames:
    - ' domain'
    - ' domainInfo'
    - getSerial
    argTypes:
    - ZoneName
    - DomainInfo
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 145
      start: 133
    functionDepth: 1
    functionLinenumber: 133
    functionLinenumberEnd: 145
    functionName: UeberBackend::getDomainInfo
    functionSourceFile: /src/pdns/pdns/ueberbackend.cc
    functionUses: 7
    functionsReached:
    - UeberBackend::getCapabilities
    - hasVariant
    - UeberBackend::getDomainInfo
    linkageType: ''
    returnType: bool
    signature: bool UeberBackend::getDomainInfo(const ZoneName& domain, DomainInfo&
      domainInfo, bool getSerial)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: hasVariant
      Src: /src/pdns/pdns/ueberbackend.cc:151,1
    - Dst: UeberBackend::getCapabilities
      Src: /src/pdns/pdns/ueberbackend.cc:151,1
    - Dst: UeberBackend::createDomain
      Src: /src/pdns/pdns/ueberbackend.cc:154,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 9
    argCount: 4
    argNames:
    - ' domain'
    - kind
    - ' primaries'
    - ' account'
    argTypes:
    - ZoneName
    - DomainInfo::DomainKind
    - vector<ComboAddress>
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 159
      start: 147
    functionDepth: 1
    functionLinenumber: 147
    functionLinenumberEnd: 159
    functionName: UeberBackend::createDomain
    functionSourceFile: /src/pdns/pdns/ueberbackend.cc
    functionUses: 2
    functionsReached:
    - UeberBackend::createDomain
    - UeberBackend::getCapabilities
    - hasVariant
    linkageType: ''
    returnType: bool
    signature: bool UeberBackend::createDomain(const ZoneName& domain, const DomainInfo::DomainKind
      kind, const vector<ComboAddress>& primaries, const string& account)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: UeberBackend::doesDNSSEC
      Src: /src/pdns/pdns/ueberbackend.cc:164,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 169
      start: 161
    functionDepth: 1
    functionLinenumber: 161
    functionLinenumberEnd: 169
    functionName: UeberBackend::doesDNSSEC
    functionSourceFile: /src/pdns/pdns/ueberbackend.cc
    functionUses: 1
    functionsReached:
    - UeberBackend::doesDNSSEC
    linkageType: ''
    returnType: bool
    signature: bool UeberBackend::doesDNSSEC()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: hasVariant
      Src: /src/pdns/pdns/ueberbackend.cc:176,1
    - Dst: UeberBackend::getCapabilities
      Src: /src/pdns/pdns/ueberbackend.cc:176,1
    - Dst: UeberBackend::addDomainKey
      Src: /src/pdns/pdns/ueberbackend.cc:179,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 10
    argCount: 3
    argNames:
    - ' name'
    - ' key'
    - ' keyID'
    argTypes:
    - ZoneName
    - DNSBackend::KeyData
    - int64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 184
      start: 171
    functionDepth: 1
    functionLinenumber: 171
    functionLinenumberEnd: 184
    functionName: UeberBackend::addDomainKey
    functionSourceFile: /src/pdns/pdns/ueberbackend.cc
    functionUses: 1
    functionsReached:
    - UeberBackend::getCapabilities
    - hasVariant
    - UeberBackend::addDomainKey
    linkageType: ''
    returnType: bool
    signature: bool UeberBackend::addDomainKey(const ZoneName& name, const DNSBackend::KeyData&
      key, int64_t& keyID)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: hasVariant
      Src: /src/pdns/pdns/ueberbackend.cc:189,1
    - Dst: UeberBackend::getCapabilities
      Src: /src/pdns/pdns/ueberbackend.cc:189,1
    - Dst: UeberBackend::getDomainKeys
      Src: /src/pdns/pdns/ueberbackend.cc:192,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 9
    argCount: 2
    argNames:
    - ' name'
    - ' keys'
    argTypes:
    - ZoneName
    - std::vector<DNSBackend::KeyData>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 197
      start: 185
    functionDepth: 1
    functionLinenumber: 185
    functionLinenumberEnd: 197
    functionName: UeberBackend::getDomainKeys
    functionSourceFile: /src/pdns/pdns/ueberbackend.cc
    functionUses: 2
    functionsReached:
    - UeberBackend::getCapabilities
    - hasVariant
    - UeberBackend::getDomainKeys
    linkageType: ''
    returnType: bool
    signature: bool UeberBackend::getDomainKeys(const ZoneName& name, std::vector<DNSBackend::KeyData>&
      keys)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: hasVariant
      Src: /src/pdns/pdns/ueberbackend.cc:203,1
    - Dst: UeberBackend::getCapabilities
      Src: /src/pdns/pdns/ueberbackend.cc:203,1
    - Dst: UeberBackend::getAllDomainMetadata
      Src: /src/pdns/pdns/ueberbackend.cc:206,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 9
    argCount: 2
    argNames:
    - ' name'
    - ' meta'
    argTypes:
    - ZoneName
    - std::map<std::string, std::vector<std::string>>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 211
      start: 199
    functionDepth: 1
    functionLinenumber: 199
    functionLinenumberEnd: 211
    functionName: UeberBackend::getAllDomainMetadata
    functionSourceFile: /src/pdns/pdns/ueberbackend.cc
    functionUses: 2
    functionsReached:
    - UeberBackend::getAllDomainMetadata
    - UeberBackend::getCapabilities
    - hasVariant
    linkageType: ''
    returnType: bool
    signature: bool UeberBackend::getAllDomainMetadata(const ZoneName& name, std::map<std::string,
      std::vector<std::string>>& meta)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: hasVariant
      Src: /src/pdns/pdns/ueberbackend.cc:217,1
    - Dst: UeberBackend::getCapabilities
      Src: /src/pdns/pdns/ueberbackend.cc:217,1
    - Dst: UeberBackend::getDomainMetadata
      Src: /src/pdns/pdns/ueberbackend.cc:220,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 9
    argCount: 3
    argNames:
    - ' name'
    - ' kind'
    - ' meta'
    argTypes:
    - ZoneName
    - std::string
    - std::vector<std::string>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 225
      start: 213
    functionDepth: 1
    functionLinenumber: 213
    functionLinenumberEnd: 225
    functionName: UeberBackend::getDomainMetadata
    functionSourceFile: /src/pdns/pdns/ueberbackend.cc
    functionUses: 2
    functionsReached:
    - UeberBackend::getDomainMetadata
    - UeberBackend::getCapabilities
    - hasVariant
    linkageType: ''
    returnType: bool
    signature: bool UeberBackend::getDomainMetadata(const ZoneName& name, const std::string&
      kind, std::vector<std::string>& meta)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: clear
      Src: /src/pdns/pdns/ueberbackend.cc:229,1
    - Dst: UeberBackend::getDomainMetadata
      Src: /src/pdns/pdns/ueberbackend.cc:231,1
    - Dst: std::vector::empty
      Src: /src/pdns/pdns/ueberbackend.cc:232,1
    - Dst: std::vector::begin
      Src: /src/pdns/pdns/ueberbackend.cc:233,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - ' name'
    - ' kind'
    - ' meta'
    argTypes:
    - ZoneName
    - std::string
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 236
      start: 227
    functionDepth: 1
    functionLinenumber: 227
    functionLinenumberEnd: 236
    functionName: UeberBackend::getDomainMetadata
    functionSourceFile: /src/pdns/pdns/ueberbackend.cc
    functionUses: 3
    functionsReached:
    - clear
    - std::vector::begin
    - UeberBackend::getDomainMetadata
    - std::vector::empty
    linkageType: ''
    returnType: bool
    signature: bool UeberBackend::getDomainMetadata(const ZoneName& name, const std::string&
      kind, std::string& meta)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: hasVariant
      Src: /src/pdns/pdns/ueberbackend.cc:242,1
    - Dst: UeberBackend::getCapabilities
      Src: /src/pdns/pdns/ueberbackend.cc:242,1
    - Dst: UeberBackend::setDomainMetadata
      Src: /src/pdns/pdns/ueberbackend.cc:245,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 9
    argCount: 3
    argNames:
    - ' name'
    - ' kind'
    - ' meta'
    argTypes:
    - ZoneName
    - std::string
    - std::vector<std::string>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 250
      start: 238
    functionDepth: 1
    functionLinenumber: 238
    functionLinenumberEnd: 250
    functionName: UeberBackend::setDomainMetadata
    functionSourceFile: /src/pdns/pdns/ueberbackend.cc
    functionUses: 1
    functionsReached:
    - UeberBackend::getCapabilities
    - UeberBackend::setDomainMetadata
    - hasVariant
    linkageType: ''
    returnType: bool
    signature: bool UeberBackend::setDomainMetadata(const ZoneName& name, const std::string&
      kind, const std::vector<std::string>& meta)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/ueberbackend.cc:255,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/ueberbackend.cc:256,1
    - Dst: UeberBackend::setDomainMetadata
      Src: /src/pdns/pdns/ueberbackend.cc:258,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - ' name'
    - ' kind'
    - ' meta'
    argTypes:
    - ZoneName
    - std::string
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 259
      start: 252
    functionDepth: 1
    functionLinenumber: 252
    functionLinenumberEnd: 259
    functionName: UeberBackend::setDomainMetadata
    functionSourceFile: /src/pdns/pdns/ueberbackend.cc
    functionUses: 2
    functionsReached:
    - empty
    - std::vector::push_back
    - UeberBackend::setDomainMetadata
    linkageType: ''
    returnType: bool
    signature: bool UeberBackend::setDomainMetadata(const ZoneName& name, const std::string&
      kind, const std::string& meta)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: hasVariant
      Src: /src/pdns/pdns/ueberbackend.cc:265,1
    - Dst: UeberBackend::getCapabilities
      Src: /src/pdns/pdns/ueberbackend.cc:265,1
    - Dst: UeberBackend::activateDomainKey
      Src: /src/pdns/pdns/ueberbackend.cc:268,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 9
    argCount: 2
    argNames:
    - ' name'
    - keyID
    argTypes:
    - ZoneName
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 273
      start: 261
    functionDepth: 1
    functionLinenumber: 261
    functionLinenumberEnd: 273
    functionName: UeberBackend::activateDomainKey
    functionSourceFile: /src/pdns/pdns/ueberbackend.cc
    functionUses: 1
    functionsReached:
    - UeberBackend::activateDomainKey
    - UeberBackend::getCapabilities
    - hasVariant
    linkageType: ''
    returnType: bool
    signature: bool UeberBackend::activateDomainKey(const ZoneName& name, unsigned
      int keyID)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: hasVariant
      Src: /src/pdns/pdns/ueberbackend.cc:279,1
    - Dst: UeberBackend::getCapabilities
      Src: /src/pdns/pdns/ueberbackend.cc:279,1
    - Dst: UeberBackend::deactivateDomainKey
      Src: /src/pdns/pdns/ueberbackend.cc:282,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 9
    argCount: 2
    argNames:
    - ' name'
    - keyID
    argTypes:
    - ZoneName
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 287
      start: 275
    functionDepth: 1
    functionLinenumber: 275
    functionLinenumberEnd: 287
    functionName: UeberBackend::deactivateDomainKey
    functionSourceFile: /src/pdns/pdns/ueberbackend.cc
    functionUses: 1
    functionsReached:
    - UeberBackend::deactivateDomainKey
    - UeberBackend::getCapabilities
    - hasVariant
    linkageType: ''
    returnType: bool
    signature: bool UeberBackend::deactivateDomainKey(const ZoneName& name, unsigned
      int keyID)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: hasVariant
      Src: /src/pdns/pdns/ueberbackend.cc:293,1
    - Dst: UeberBackend::getCapabilities
      Src: /src/pdns/pdns/ueberbackend.cc:293,1
    - Dst: UeberBackend::publishDomainKey
      Src: /src/pdns/pdns/ueberbackend.cc:296,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 9
    argCount: 2
    argNames:
    - ' name'
    - keyID
    argTypes:
    - ZoneName
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 301
      start: 289
    functionDepth: 1
    functionLinenumber: 289
    functionLinenumberEnd: 301
    functionName: UeberBackend::publishDomainKey
    functionSourceFile: /src/pdns/pdns/ueberbackend.cc
    functionUses: 1
    functionsReached:
    - UeberBackend::getCapabilities
    - UeberBackend::publishDomainKey
    - hasVariant
    linkageType: ''
    returnType: bool
    signature: bool UeberBackend::publishDomainKey(const ZoneName& name, unsigned
      int keyID)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: hasVariant
      Src: /src/pdns/pdns/ueberbackend.cc:307,1
    - Dst: UeberBackend::getCapabilities
      Src: /src/pdns/pdns/ueberbackend.cc:307,1
    - Dst: UeberBackend::unpublishDomainKey
      Src: /src/pdns/pdns/ueberbackend.cc:310,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 9
    argCount: 2
    argNames:
    - ' name'
    - keyID
    argTypes:
    - ZoneName
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 315
      start: 303
    functionDepth: 1
    functionLinenumber: 303
    functionLinenumberEnd: 315
    functionName: UeberBackend::unpublishDomainKey
    functionSourceFile: /src/pdns/pdns/ueberbackend.cc
    functionUses: 1
    functionsReached:
    - UeberBackend::unpublishDomainKey
    - UeberBackend::getCapabilities
    - hasVariant
    linkageType: ''
    returnType: bool
    signature: bool UeberBackend::unpublishDomainKey(const ZoneName& name, unsigned
      int keyID)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: hasVariant
      Src: /src/pdns/pdns/ueberbackend.cc:321,1
    - Dst: UeberBackend::getCapabilities
      Src: /src/pdns/pdns/ueberbackend.cc:321,1
    - Dst: UeberBackend::removeDomainKey
      Src: /src/pdns/pdns/ueberbackend.cc:324,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 9
    argCount: 2
    argNames:
    - ' name'
    - keyID
    argTypes:
    - ZoneName
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 329
      start: 317
    functionDepth: 1
    functionLinenumber: 317
    functionLinenumberEnd: 329
    functionName: UeberBackend::removeDomainKey
    functionSourceFile: /src/pdns/pdns/ueberbackend.cc
    functionUses: 1
    functionsReached:
    - UeberBackend::removeDomainKey
    - UeberBackend::getCapabilities
    - hasVariant
    linkageType: ''
    returnType: bool
    signature: bool UeberBackend::removeDomainKey(const ZoneName& name, unsigned int
      keyID)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: UeberBackend::reload
      Src: /src/pdns/pdns/ueberbackend.cc:334,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 336
      start: 331
    functionDepth: 1
    functionLinenumber: 331
    functionLinenumberEnd: 336
    functionName: UeberBackend::reload
    functionSourceFile: /src/pdns/pdns/ueberbackend.cc
    functionUses: 2
    functionsReached:
    - UeberBackend::reload
    linkageType: ''
    returnType: void
    signature: void UeberBackend::reload()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: isEnabled
      Src: /src/pdns/pdns/ueberbackend.cc:340,1
    - Dst: setReplacePending
      Src: /src/pdns/pdns/ueberbackend.cc:345,1
    - Dst: UeberBackend::getAllDomains
      Src: /src/pdns/pdns/ueberbackend.cc:349,1
    - Dst: vector::emplace_back
      Src: /src/pdns/pdns/ueberbackend.cc:351,1
    - Dst: std::move
      Src: /src/pdns/pdns/ueberbackend.cc:351,1
    - Dst: replace
      Src: /src/pdns/pdns/ueberbackend.cc:354,1
    - Dst: NetmaskTree::NetmaskTree
      Src: /src/pdns/pdns/ueberbackend.cc:356,1
    - Dst: UeberBackend::networkList
      Src: /src/pdns/pdns/ueberbackend.cc:359,1
    - Dst: NetmaskTree::insert_or_assign
      Src: /src/pdns/pdns/ueberbackend.cc:361,1
    - Dst: replace
      Src: /src/pdns/pdns/ueberbackend.cc:364,1
    - Dst: std::move
      Src: /src/pdns/pdns/ueberbackend.cc:364,1
    - Dst: UeberBackend::viewList
      Src: /src/pdns/pdns/ueberbackend.cc:369,1
    - Dst: UeberBackend::viewListZones
      Src: /src/pdns/pdns/ueberbackend.cc:372,1
    - Dst: getVariant
      Src: /src/pdns/pdns/ueberbackend.cc:375,1
    - Dst: std::move
      Src: /src/pdns/pdns/ueberbackend.cc:376,1
    - Dst: replace
      Src: /src/pdns/pdns/ueberbackend.cc:380,1
    - Dst: std::move
      Src: /src/pdns/pdns/ueberbackend.cc:380,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 22
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 381
      start: 338
    functionDepth: 1
    functionLinenumber: 338
    functionLinenumberEnd: 381
    functionName: UeberBackend::updateZoneCache
    functionSourceFile: /src/pdns/pdns/ueberbackend.cc
    functionUses: 1
    functionsReached:
    - std::move
    - UeberBackend::networkList
    - UeberBackend::getAllDomains
    - getVariant
    - UeberBackend::viewList
    - UeberBackend::viewListZones
    - NetmaskTree::insert_or_assign
    - setReplacePending
    - vector::emplace_back
    - isEnabled
    - replace
    - NetmaskTree::NetmaskTree
    linkageType: ''
    returnType: void
    signature: void UeberBackend::updateZoneCache()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: begin
      Src: /src/pdns/pdns/ueberbackend.cc:385,1
    - Dst: end
      Src: /src/pdns/pdns/ueberbackend.cc:385,1
    - Dst: UeberBackend::rediscover
      Src: /src/pdns/pdns/ueberbackend.cc:387,1
    - Dst: begin
      Src: /src/pdns/pdns/ueberbackend.cc:389,1
    - Dst: UeberBackend::updateZoneCache
      Src: /src/pdns/pdns/ueberbackend.cc:393,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - status
    argTypes:
    - string*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 394
      start: 383
    functionDepth: 2
    functionLinenumber: 383
    functionLinenumberEnd: 394
    functionName: UeberBackend::rediscover
    functionSourceFile: /src/pdns/pdns/ueberbackend.cc
    functionUses: 2
    functionsReached:
    - UeberBackend::rediscover
    - UeberBackend::updateZoneCache
    - end
    - begin
    linkageType: ''
    returnType: void
    signature: void UeberBackend::rediscover(string* status)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: UeberBackend::getUnfreshSecondaryInfos
      Src: /src/pdns/pdns/ueberbackend.cc:399,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - domains
    argTypes:
    - vector<DomainInfo>*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 401
      start: 396
    functionDepth: 1
    functionLinenumber: 396
    functionLinenumberEnd: 401
    functionName: UeberBackend::getUnfreshSecondaryInfos
    functionSourceFile: /src/pdns/pdns/ueberbackend.cc
    functionUses: 1
    functionsReached:
    - UeberBackend::getUnfreshSecondaryInfos
    linkageType: ''
    returnType: void
    signature: void UeberBackend::getUnfreshSecondaryInfos(vector<DomainInfo>* domains)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: UeberBackend::getUpdatedPrimaries
      Src: /src/pdns/pdns/ueberbackend.cc:406,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 3
    argNames:
    - ' domains'
    - ' catalogs'
    - ' catalogHashes'
    argTypes:
    - vector<DomainInfo>
    - std::unordered_set<DNSName>
    - CatalogHashMap
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 408
      start: 403
    functionDepth: 1
    functionLinenumber: 403
    functionLinenumberEnd: 408
    functionName: UeberBackend::getUpdatedPrimaries
    functionSourceFile: /src/pdns/pdns/ueberbackend.cc
    functionUses: 1
    functionsReached:
    - UeberBackend::getUpdatedPrimaries
    linkageType: ''
    returnType: void
    signature: void UeberBackend::getUpdatedPrimaries(vector<DomainInfo>& domains,
      std::unordered_set<DNSName>& catalogs, CatalogHashMap& catalogHashes)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: UeberBackend::inTransaction
      Src: /src/pdns/pdns/ueberbackend.cc:413,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 418
      start: 410
    functionDepth: 1
    functionLinenumber: 410
    functionLinenumberEnd: 418
    functionName: UeberBackend::inTransaction
    functionSourceFile: /src/pdns/pdns/ueberbackend.cc
    functionUses: 1
    functionsReached:
    - UeberBackend::inTransaction
    linkageType: ''
    returnType: bool
    signature: bool UeberBackend::inTransaction()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: UeberBackend::lookup
      Src: /src/pdns/pdns/ueberbackend.cc:423,1
    - Dst: QType
      Src: /src/pdns/pdns/ueberbackend.cc:423,1
    - Dst: UeberBackend::get
      Src: /src/pdns/pdns/ueberbackend.cc:426,1
    - Dst: DLOG
      Src: /src/pdns/pdns/ueberbackend.cc:427,1
    - Dst: SLOG
      Src: /src/pdns/pdns/ueberbackend.cc:427,1
    - Dst: toLogString
      Src: /src/pdns/pdns/ueberbackend.cc:427,1
    - Dst: info
      Src: /src/pdns/pdns/ueberbackend.cc:428,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/ueberbackend.cc:428,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/ueberbackend.cc:433,1
    - Dst: DNSZoneRecord::dr::d_name::toLogString
      Src: /src/pdns/pdns/ueberbackend.cc:433,1
    - Dst: toLogString
      Src: /src/pdns/pdns/ueberbackend.cc:433,1
    - Dst: makeLowerCase
      Src: /src/pdns/pdns/ueberbackend.cc:437,1
    - Dst: fillSOAData
      Src: /src/pdns/pdns/ueberbackend.cc:440,1
    - Dst: SLOG
      Src: /src/pdns/pdns/ueberbackend.cc:443,1
    - Dst: toLogString
      Src: /src/pdns/pdns/ueberbackend.cc:443,1
    - Dst: info
      Src: /src/pdns/pdns/ueberbackend.cc:444,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/ueberbackend.cc:444,1
    - Dst: UeberBackend::lookupEnd
      Src: /src/pdns/pdns/ueberbackend.cc:445,1
    - Dst: size
      Src: /src/pdns/pdns/ueberbackend.cc:449,1
    - Dst: begin
      Src: /src/pdns/pdns/ueberbackend.cc:449,1
    - Dst: UeberBackend::get
      Src: /src/pdns/pdns/ueberbackend.cc:452,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 22
    argCount: 3
    argNames:
    - ' shorter'
    - zoneId
    - soaData
    argTypes:
    - ZoneName
    - domainid_t
    - SOAData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 457
      start: 420
    functionDepth: 1
    functionLinenumber: 420
    functionLinenumberEnd: 457
    functionName: UeberBackend::fillSOAFromZoneRecord
    functionSourceFile: /src/pdns/pdns/ueberbackend.cc
    functionUses: 0
    functionsReached:
    - makeLowerCase
    - toLogString
    - SLOG
    - Logging::Loggable
    - PDNSException
    - UeberBackend::get
    - QType
    - DNSZoneRecord::dr::d_name::toLogString
    - info
    - size
    - begin
    - UeberBackend::lookup
    - DLOG
    - UeberBackend::lookupEnd
    - fillSOAData
    linkageType: ''
    returnType: bool
    signature: bool UeberBackend::fillSOAFromZoneRecord(ZoneName& shorter, const domainid_t
      zoneId, SOAData* const soaData)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: UeberBackend::cacheHas
      Src: /src/pdns/pdns/ueberbackend.cc:461,1
    - Dst: empty
      Src: /src/pdns/pdns/ueberbackend.cc:463,1
    - Dst: DLOG
      Src: /src/pdns/pdns/ueberbackend.cc:464,1
    - Dst: SLOG
      Src: /src/pdns/pdns/ueberbackend.cc:464,1
    - Dst: info
      Src: /src/pdns/pdns/ueberbackend.cc:465,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/ueberbackend.cc:465,1
    - Dst: fillSOAData
      Src: /src/pdns/pdns/ueberbackend.cc:466,1
    - Dst: size
      Src: /src/pdns/pdns/ueberbackend.cc:468,1
    - Dst: begin
      Src: /src/pdns/pdns/ueberbackend.cc:468,1
    - Dst: makeLowerCase
      Src: /src/pdns/pdns/ueberbackend.cc:469,1
    - Dst: DLOG
      Src: /src/pdns/pdns/ueberbackend.cc:472,1
    - Dst: SLOG
      Src: /src/pdns/pdns/ueberbackend.cc:472,1
    - Dst: info
      Src: /src/pdns/pdns/ueberbackend.cc:473,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/ueberbackend.cc:473,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 2
    argNames:
    - soaData
    - ' shorter'
    argTypes:
    - SOAData*
    - ZoneName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 477
      start: 459
    functionDepth: 1
    functionLinenumber: 459
    functionLinenumberEnd: 477
    functionName: UeberBackend::fillSOAFromCache
    functionSourceFile: /src/pdns/pdns/ueberbackend.cc
    functionUses: 0
    functionsReached:
    - makeLowerCase
    - SLOG
    - UeberBackend::cacheHas
    - Logging::Loggable
    - info
    - size
    - begin
    - DLOG
    - empty
    - fillSOAData
    linkageType: ''
    returnType: UeberBackend::CacheResult
    signature: UeberBackend::CacheResult UeberBackend::fillSOAFromCache(SOAData* soaData,
      ZoneName& shorter)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: begin
      Src: /src/pdns/pdns/ueberbackend.cc:481,1
    - Dst: begin
      Src: /src/pdns/pdns/ueberbackend.cc:482,1
    - Dst: end
      Src: /src/pdns/pdns/ueberbackend.cc:482,1
    - Dst: end
      Src: /src/pdns/pdns/ueberbackend.cc:482,1
    - Dst: DLOG
      Src: /src/pdns/pdns/ueberbackend.cc:484,1
    - Dst: SLOG
      Src: /src/pdns/pdns/ueberbackend.cc:484,1
    - Dst: begin
      Src: /src/pdns/pdns/ueberbackend.cc:484,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/ueberbackend.cc:485,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/ueberbackend.cc:485,1
    - Dst: begin
      Src: /src/pdns/pdns/ueberbackend.cc:485,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/ueberbackend.cc:485,1
    - Dst: wirelength
      Src: /src/pdns/pdns/ueberbackend.cc:487,1
    - Dst: DLOG
      Src: /src/pdns/pdns/ueberbackend.cc:489,1
    - Dst: SLOG
      Src: /src/pdns/pdns/ueberbackend.cc:489,1
    - Dst: auto::second::qname
      Src: /src/pdns/pdns/ueberbackend.cc:489,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/ueberbackend.cc:490,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/ueberbackend.cc:490,1
    - Dst: auto::second::qname
      Src: /src/pdns/pdns/ueberbackend.cc:490,1
    - Dst: DLOG
      Src: /src/pdns/pdns/ueberbackend.cc:495,1
    - Dst: SLOG
      Src: /src/pdns/pdns/ueberbackend.cc:495,1
    - Dst: auto::second::qname
      Src: /src/pdns/pdns/ueberbackend.cc:495,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/ueberbackend.cc:496,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/ueberbackend.cc:496,1
    - Dst: auto::second::qname
      Src: /src/pdns/pdns/ueberbackend.cc:496,1
    - Dst: DLOG
      Src: /src/pdns/pdns/ueberbackend.cc:501,1
    - Dst: SLOG
      Src: /src/pdns/pdns/ueberbackend.cc:501,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/ueberbackend.cc:502,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/ueberbackend.cc:502,1
    - Dst: getAuth
      Src: /src/pdns/pdns/ueberbackend.cc:504,1
    - Dst: DLOG
      Src: /src/pdns/pdns/ueberbackend.cc:505,1
    - Dst: SLOG
      Src: /src/pdns/pdns/ueberbackend.cc:505,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/ueberbackend.cc:506,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/ueberbackend.cc:506,1
    - Dst: SOAData*::qname
      Src: /src/pdns/pdns/ueberbackend.cc:508,1
    - Dst: isPartOf
      Src: /src/pdns/pdns/ueberbackend.cc:508,1
    - Dst: SOAData*::qname
      Src: /src/pdns/pdns/ueberbackend.cc:508,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/ueberbackend.cc:509,1
    - Dst: SOAData*::qname
      Src: /src/pdns/pdns/ueberbackend.cc:509,1
    - Dst: toLogString
      Src: /src/pdns/pdns/ueberbackend.cc:509,1
    - Dst: SOAData*::qname
      Src: /src/pdns/pdns/ueberbackend.cc:512,1
    - Dst: SOAData*::qname
      Src: /src/pdns/pdns/ueberbackend.cc:515,1
    - Dst: DLOG
      Src: /src/pdns/pdns/ueberbackend.cc:520,1
    - Dst: SLOG
      Src: /src/pdns/pdns/ueberbackend.cc:520,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/ueberbackend.cc:521,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/ueberbackend.cc:521,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 28
    argCount: 5
    argNames:
    - slog
    - ' backends'
    - ' bestMatches'
    - ' shorter'
    - soaData
    argTypes:
    - Logr::log_t
    - std::vector<std::unique_ptr<DNSBackend>>
    - std::vector<std::pair<std::size_t, SOAData>>
    - ZoneName
    - SOAData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 526
      start: 479
    functionDepth: 1
    functionLinenumber: 479
    functionLinenumberEnd: 526
    functionName: findBestMatchingBackend
    functionSourceFile: /src/pdns/pdns/ueberbackend.cc
    functionUses: 0
    functionsReached:
    - toLogString
    - SLOG
    - isPartOf
    - SOAData*::qname
    - Logr::log_t::info
    - Logging::Loggable
    - wirelength
    - PDNSException
    - end
    - begin
    - auto::second::qname
    - DLOG
    - getAuth
    linkageType: ''
    returnType: std::vector<std::unique_ptr<DNSBackend>>::iterator
    signature: std::vector<std::unique_ptr<DNSBackend>>::iterator findBestMatchingBackend([[maybe_unused]]
      Logr::log_t slog, std::vector<std::unique_ptr<DNSBackend>>& backends, std::vector<std::pair<std::size_t,
      SOAData>>& bestMatches, const ZoneName& shorter, SOAData* soaData)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DLOG
      Src: /src/pdns/pdns/ueberbackend.cc:531,1
    - Dst: SLOG
      Src: /src/pdns/pdns/ueberbackend.cc:531,1
    - Dst: SOAData*::qname
      Src: /src/pdns/pdns/ueberbackend.cc:531,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/ueberbackend.cc:532,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/ueberbackend.cc:532,1
    - Dst: SOAData*::qname
      Src: /src/pdns/pdns/ueberbackend.cc:532,1
    - Dst: DLOG
      Src: /src/pdns/pdns/ueberbackend.cc:536,1
    - Dst: SLOG
      Src: /src/pdns/pdns/ueberbackend.cc:536,1
    - Dst: SOAData*::qname
      Src: /src/pdns/pdns/ueberbackend.cc:536,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/ueberbackend.cc:537,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/ueberbackend.cc:537,1
    - Dst: SOAData*::qname
      Src: /src/pdns/pdns/ueberbackend.cc:537,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 6
    argNames:
    - slog
    - ' target'
    - ' shorter'
    - ' qtype'
    - soaData
    - found
    argTypes:
    - Logr::log_t
    - ZoneName
    - ZoneName
    - QType
    - SOAData*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 539
      start: 528
    functionDepth: 0
    functionLinenumber: 528
    functionLinenumberEnd: 539
    functionName: foundTarget
    functionSourceFile: /src/pdns/pdns/ueberbackend.cc
    functionUses: 0
    functionsReached:
    - SLOG
    - Logr::log_t::info
    - Logging::Loggable
    - DLOG
    - SOAData*::qname
    linkageType: ''
    returnType: bool
    signature: bool foundTarget([[maybe_unused]] Logr::log_t slog, const ZoneName&
      target, const ZoneName& shorter, const QType& qtype, [[maybe_unused]] SOAData*
      soaData, const bool found)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/ueberbackend.cc:552,1
    - Dst: pair
      Src: /src/pdns/pdns/ueberbackend.cc:552,1
    - Dst: wirelength
      Src: /src/pdns/pdns/ueberbackend.cc:552,1
    - Dst: SOAData
      Src: /src/pdns/pdns/ueberbackend.cc:552,1
    - Dst: isEnabled
      Src: /src/pdns/pdns/ueberbackend.cc:555,1
    - Dst: getViewFromNetwork
      Src: /src/pdns/pdns/ueberbackend.cc:557,1
    - Dst: std::string::empty
      Src: /src/pdns/pdns/ueberbackend.cc:559,1
    - Dst: ZoneName::chopOff
      Src: /src/pdns/pdns/ueberbackend.cc:566,1
    - Dst: isEnabled
      Src: /src/pdns/pdns/ueberbackend.cc:571,1
    - Dst: getVariantFromView
      Src: /src/pdns/pdns/ueberbackend.cc:572,1
    - Dst: getEntry
      Src: /src/pdns/pdns/ueberbackend.cc:574,1
    - Dst: UeberBackend::fillSOAFromZoneRecord
      Src: /src/pdns/pdns/ueberbackend.cc:575,1
    - Dst: ZoneName::makeLowerCase
      Src: /src/pdns/pdns/ueberbackend.cc:576,1
    - Dst: foundTarget
      Src: /src/pdns/pdns/ueberbackend.cc:580,1
    - Dst: UeberBackend::fillSOAFromCache
      Src: /src/pdns/pdns/ueberbackend.cc:600,1
    - Dst: foundTarget
      Src: /src/pdns/pdns/ueberbackend.cc:602,1
    - Dst: findBestMatchingBackend
      Src: /src/pdns/pdns/ueberbackend.cc:617,1
    - Dst: end
      Src: /src/pdns/pdns/ueberbackend.cc:620,1
    - Dst: DLOG
      Src: /src/pdns/pdns/ueberbackend.cc:622,1
    - Dst: SLOG
      Src: /src/pdns/pdns/ueberbackend.cc:622,1
    - Dst: info
      Src: /src/pdns/pdns/ueberbackend.cc:623,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/ueberbackend.cc:623,1
    - Dst: UeberBackend::addNegCache
      Src: /src/pdns/pdns/ueberbackend.cc:625,1
    - Dst: DLOG
      Src: /src/pdns/pdns/ueberbackend.cc:632,1
    - Dst: SLOG
      Src: /src/pdns/pdns/ueberbackend.cc:632,1
    - Dst: SOAData*::qname
      Src: /src/pdns/pdns/ueberbackend.cc:632,1
    - Dst: info
      Src: /src/pdns/pdns/ueberbackend.cc:633,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/ueberbackend.cc:633,1
    - Dst: SOAData*::qname
      Src: /src/pdns/pdns/ueberbackend.cc:633,1
    - Dst: SOAData*::qname
      Src: /src/pdns/pdns/ueberbackend.cc:636,1
    - Dst: SOAData*::qname
      Src: /src/pdns/pdns/ueberbackend.cc:640,1
    - Dst: DNSZoneRecord::dr::setContent
      Src: /src/pdns/pdns/ueberbackend.cc:642,1
    - Dst: makeSOAContent
      Src: /src/pdns/pdns/ueberbackend.cc:642,1
    - Dst: UeberBackend::addCache
      Src: /src/pdns/pdns/ueberbackend.cc:646,1
    - Dst: std::move
      Src: /src/pdns/pdns/ueberbackend.cc:646,1
    - Dst: foundTarget
      Src: /src/pdns/pdns/ueberbackend.cc:650,1
    CyclomaticComplexity: 25
    EdgeCount: 25
    ICount: 65
    argCount: 6
    argNames:
    - ' target'
    - ' qtype'
    - soaData
    - remote
    - cachedOk
    - pkt_p
    argTypes:
    - ZoneName
    - QType
    - SOAData*
    - Netmask
    - bool
    - DNSPacket*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 658
      start: 541
    functionDepth: 2
    functionLinenumber: 541
    functionLinenumberEnd: 658
    functionName: UeberBackend::getAuth
    functionSourceFile: /src/pdns/pdns/ueberbackend.cc
    functionUses: 0
    functionsReached:
    - wirelength
    - foundTarget
    - findBestMatchingBackend
    - UeberBackend::addNegCache
    - SOAData
    - SLOG
    - Logging::Loggable
    - makeSOAContent
    - DNSZoneRecord::dr::setContent
    - size
    - std::string::empty
    - isEnabled
    - ZoneName::makeLowerCase
    - UeberBackend::fillSOAFromCache
    - UeberBackend::fillSOAFromZoneRecord
    - getEntry
    - UeberBackend::addCache
    - getVariantFromView
    - pair
    - std::move
    - end
    - info
    - ZoneName::chopOff
    - DLOG
    - getViewFromNetwork
    - SOAData*::qname
    linkageType: ''
    returnType: bool
    signature: bool UeberBackend::getAuth(const ZoneName& target, const QType& qtype,
      SOAData* soaData, Netmask remote, bool cachedOk, DNSPacket* pkt_p)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: hasVariant
      Src: /src/pdns/pdns/ueberbackend.cc:668,1
    - Dst: UeberBackend::getCapabilities
      Src: /src/pdns/pdns/ueberbackend.cc:668,1
    - Dst: getSOA
      Src: /src/pdns/pdns/ueberbackend.cc:671,1
    - Dst: qname
      Src: /src/pdns/pdns/ueberbackend.cc:672,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/ueberbackend.cc:673,1
    - Dst: toLogString
      Src: /src/pdns/pdns/ueberbackend.cc:673,1
    - Dst: qname
      Src: /src/pdns/pdns/ueberbackend.cc:673,1
    - Dst: qname
      Src: /src/pdns/pdns/ueberbackend.cc:677,1
    - Dst: DNSZoneRecord::dr::setContent
      Src: /src/pdns/pdns/ueberbackend.cc:679,1
    - Dst: makeSOAContent
      Src: /src/pdns/pdns/ueberbackend.cc:679,1
    - Dst: UeberBackend::addCache
      Src: /src/pdns/pdns/ueberbackend.cc:683,1
    - Dst: std::move
      Src: /src/pdns/pdns/ueberbackend.cc:683,1
    - Dst: UeberBackend::addNegCache
      Src: /src/pdns/pdns/ueberbackend.cc:690,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 26
    argCount: 2
    argNames:
    - ' domain'
    - ' soaData'
    argTypes:
    - ZoneName
    - SOAData
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 693
      start: 660
    functionDepth: 1
    functionLinenumber: 660
    functionLinenumberEnd: 693
    functionName: UeberBackend::getSOAUncached
    functionSourceFile: /src/pdns/pdns/ueberbackend.cc
    functionUses: 3
    functionsReached:
    - toLogString
    - std::move
    - getSOA
    - PDNSException
    - makeSOAContent
    - DNSZoneRecord::dr::setContent
    - hasVariant
    - UeberBackend::addCache
    - UeberBackend::addNegCache
    - qname
    - UeberBackend::getCapabilities
    linkageType: ''
    returnType: bool
    signature: bool UeberBackend::getSOAUncached(const ZoneName& domain, SOAData&
      soaData)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: UeberBackend::autoPrimaryAdd
      Src: /src/pdns/pdns/ueberbackend.cc:698,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - ' primary'
    argTypes:
    - AutoPrimary
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 703
      start: 695
    functionDepth: 1
    functionLinenumber: 695
    functionLinenumberEnd: 703
    functionName: UeberBackend::autoPrimaryAdd
    functionSourceFile: /src/pdns/pdns/ueberbackend.cc
    functionUses: 2
    functionsReached:
    - UeberBackend::autoPrimaryAdd
    linkageType: ''
    returnType: bool
    signature: bool UeberBackend::autoPrimaryAdd(const AutoPrimary& primary)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: UeberBackend::autoPrimaryRemove
      Src: /src/pdns/pdns/ueberbackend.cc:708,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - ' primary'
    argTypes:
    - AutoPrimary
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 713
      start: 705
    functionDepth: 1
    functionLinenumber: 705
    functionLinenumberEnd: 713
    functionName: UeberBackend::autoPrimaryRemove
    functionSourceFile: /src/pdns/pdns/ueberbackend.cc
    functionUses: 2
    functionsReached:
    - UeberBackend::autoPrimaryRemove
    linkageType: ''
    returnType: bool
    signature: bool UeberBackend::autoPrimaryRemove(const AutoPrimary& primary)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: UeberBackend::autoPrimariesList
      Src: /src/pdns/pdns/ueberbackend.cc:718,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - ' primaries'
    argTypes:
    - std::vector<AutoPrimary>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 723
      start: 715
    functionDepth: 1
    functionLinenumber: 715
    functionLinenumberEnd: 723
    functionName: UeberBackend::autoPrimariesList
    functionSourceFile: /src/pdns/pdns/ueberbackend.cc
    functionUses: 2
    functionsReached:
    - UeberBackend::autoPrimariesList
    linkageType: ''
    returnType: bool
    signature: bool UeberBackend::autoPrimariesList(std::vector<AutoPrimary>& primaries)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: hasVariant
      Src: /src/pdns/pdns/ueberbackend.cc:729,1
    - Dst: UeberBackend::getCapabilities
      Src: /src/pdns/pdns/ueberbackend.cc:729,1
    - Dst: UeberBackend::autoPrimaryBackend
      Src: /src/pdns/pdns/ueberbackend.cc:732,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 9
    argCount: 6
    argNames:
    - ' ipAddr'
    - ' domain'
    - ' nsset'
    - nameserver
    - account
    - dnsBackend
    argTypes:
    - string
    - ZoneName
    - vector<DNSResourceRecord>
    - string*
    - string*
    - DNSBackend**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 737
      start: 725
    functionDepth: 1
    functionLinenumber: 725
    functionLinenumberEnd: 737
    functionName: UeberBackend::autoPrimaryBackend
    functionSourceFile: /src/pdns/pdns/ueberbackend.cc
    functionUses: 1
    functionsReached:
    - UeberBackend::getCapabilities
    - UeberBackend::autoPrimaryBackend
    - hasVariant
    linkageType: ''
    returnType: bool
    signature: bool UeberBackend::autoPrimaryBackend(const string& ipAddr, const ZoneName&
      domain, const vector<DNSResourceRecord>& nsset, string* nameserver, string*
      account, DNSBackend** dnsBackend)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: withName
      Src: /src/pdns/pdns/ueberbackend.cc:742,1
    - Dst: setSLog
      Src: /src/pdns/pdns/ueberbackend.cc:744,1
    - Dst: arg
      Src: /src/pdns/pdns/ueberbackend.cc:746,1
    - Dst: arg
      Src: /src/pdns/pdns/ueberbackend.cc:747,1
    - Dst: BackendMakers
      Src: /src/pdns/pdns/ueberbackend.cc:749,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - ' pname'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 750
      start: 739
    functionDepth: 1
    functionLinenumber: 739
    functionLinenumberEnd: 750
    functionName: UeberBackend::UeberBackend
    functionSourceFile: /src/pdns/pdns/ueberbackend.cc
    functionUses: 28
    functionsReached:
    - withName
    - setSLog
    - BackendMakers
    - arg
    linkageType: ''
    returnType: void
    signature: void UeberBackend::UeberBackend(const string& pname)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: AuthQueryCache::AuthQueryCache
      Src: /src/pdns/pdns/ueberbackend.cc:755,1
    - Dst: clear
      Src: /src/pdns/pdns/ueberbackend.cc:761,1
    - Dst: SLOG
      Src: /src/pdns/pdns/ueberbackend.cc:763,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/ueberbackend.cc:763,1
    - Dst: info
      Src: /src/pdns/pdns/ueberbackend.cc:764,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/ueberbackend.cc:764,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/ueberbackend.cc:764,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/ueberbackend.cc:764,1
    - Dst: AuthQueryCache::getEntry
      Src: /src/pdns/pdns/ueberbackend.cc:767,1
    - Dst: empty
      Src: /src/pdns/pdns/ueberbackend.cc:771,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 2
    argNames:
    - ' question'
    - ' resourceRecords'
    argTypes:
    - Question
    - vector<DNSZoneRecord>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 776
      start: 753
    functionDepth: 2
    functionLinenumber: 753
    functionLinenumberEnd: 776
    functionName: UeberBackend::cacheHas
    functionSourceFile: /src/pdns/pdns/ueberbackend.cc
    functionUses: 1
    functionsReached:
    - AuthQueryCache::getEntry
    - SLOG
    - std::to_string
    - Logging::Loggable
    - info
    - empty
    - AuthQueryCache::AuthQueryCache
    - clear
    linkageType: ''
    returnType: enum UeberBackend::CacheResult
    signature: enum UeberBackend::CacheResult UeberBackend::cacheHas(const Question&
      question, vector<DNSZoneRecord>& resourceRecords) const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: AuthQueryCache::AuthQueryCache
      Src: /src/pdns/pdns/ueberbackend.cc:780,1
    - Dst: AuthQueryCache::insert
      Src: /src/pdns/pdns/ueberbackend.cc:786,1
    - Dst: vector<DNSZoneRecord>
      Src: /src/pdns/pdns/ueberbackend.cc:786,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ' question'
    argTypes:
    - Question
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 787
      start: 778
    functionDepth: 1
    functionLinenumber: 778
    functionLinenumberEnd: 787
    functionName: UeberBackend::addNegCache
    functionSourceFile: /src/pdns/pdns/ueberbackend.cc
    functionUses: 2
    functionsReached:
    - AuthQueryCache::insert
    - vector<DNSZoneRecord>
    - AuthQueryCache::AuthQueryCache
    linkageType: ''
    returnType: void
    signature: void UeberBackend::addNegCache(const Question& question) const
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: AuthQueryCache::AuthQueryCache
      Src: /src/pdns/pdns/ueberbackend.cc:791,1
    - Dst: AuthQueryCache::insert
      Src: /src/pdns/pdns/ueberbackend.cc:803,1
    - Dst: std::move
      Src: /src/pdns/pdns/ueberbackend.cc:803,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 2
    argNames:
    - ' question'
    - ' rrs'
    argTypes:
    - Question
    - vector<DNSZoneRecord>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 804
      start: 789
    functionDepth: 1
    functionLinenumber: 789
    functionLinenumberEnd: 804
    functionName: UeberBackend::addCache
    functionSourceFile: /src/pdns/pdns/ueberbackend.cc
    functionUses: 2
    functionsReached:
    - AuthQueryCache::insert
    - std::move
    - AuthQueryCache::AuthQueryCache
    linkageType: ''
    returnType: void
    signature: void UeberBackend::addCache(const Question& question, vector<DNSZoneRecord>&&
      rrs) const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: hasVariant
      Src: /src/pdns/pdns/ueberbackend.cc:810,1
    - Dst: UeberBackend::getCapabilities
      Src: /src/pdns/pdns/ueberbackend.cc:810,1
    - Dst: UeberBackend::alsoNotifies
      Src: /src/pdns/pdns/ueberbackend.cc:813,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 6
    argCount: 2
    argNames:
    - ' domain'
    - ips
    argTypes:
    - ZoneName
    - set<string>*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 815
      start: 806
    functionDepth: 1
    functionLinenumber: 806
    functionLinenumberEnd: 815
    functionName: UeberBackend::alsoNotifies
    functionSourceFile: /src/pdns/pdns/ueberbackend.cc
    functionUses: 1
    functionsReached:
    - UeberBackend::getCapabilities
    - hasVariant
    - UeberBackend::alsoNotifies
    linkageType: ''
    returnType: void
    signature: void UeberBackend::alsoNotifies(const ZoneName& domain, set<string>*
      ips)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DLOG
      Src: /src/pdns/pdns/ueberbackend.cc:819,1
    - Dst: SLOG
      Src: /src/pdns/pdns/ueberbackend.cc:819,1
    - Dst: info
      Src: /src/pdns/pdns/ueberbackend.cc:820,1
    - Dst: clear
      Src: /src/pdns/pdns/ueberbackend.cc:822,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 823
      start: 817
    functionDepth: 1
    functionLinenumber: 817
    functionLinenumberEnd: 823
    functionName: UeberBackend::~UeberBackend()
    functionSourceFile: /src/pdns/pdns/ueberbackend.cc
    functionUses: 0
    functionsReached:
    - clear
    - SLOG
    - info
    - DLOG
    linkageType: ''
    returnType: void
    signature: void UeberBackend::~UeberBackend()
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: SLOG
      Src: /src/pdns/pdns/ueberbackend.cc:829,1
    - Dst: info
      Src: /src/pdns/pdns/ueberbackend.cc:830,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/ueberbackend.cc:831,1
    - Dst: DLOG
      Src: /src/pdns/pdns/ueberbackend.cc:834,1
    - Dst: SLOG
      Src: /src/pdns/pdns/ueberbackend.cc:834,1
    - Dst: info
      Src: /src/pdns/pdns/ueberbackend.cc:835,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/ueberbackend.cc:835,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/ueberbackend.cc:835,1
    - Dst: SLOG
      Src: /src/pdns/pdns/ueberbackend.cc:837,1
    - Dst: info
      Src: /src/pdns/pdns/ueberbackend.cc:838,1
    - Dst: wait
      Src: /src/pdns/pdns/ueberbackend.cc:840,1
    - Dst: SLOG
      Src: /src/pdns/pdns/ueberbackend.cc:841,1
    - Dst: info
      Src: /src/pdns/pdns/ueberbackend.cc:842,1
    - Dst: getCode
      Src: /src/pdns/pdns/ueberbackend.cc:845,1
    - Dst: empty
      Src: /src/pdns/pdns/ueberbackend.cc:853,1
    - Dst: SLOG
      Src: /src/pdns/pdns/ueberbackend.cc:854,1
    - Dst: info
      Src: /src/pdns/pdns/ueberbackend.cc:855,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/ueberbackend.cc:857,1
    - Dst: UeberBackend::cacheHas
      Src: /src/pdns/pdns/ueberbackend.cc:864,1
    - Dst: clear
      Src: /src/pdns/pdns/ueberbackend.cc:868,1
    - Dst: UeberBackend::get
      Src: /src/pdns/pdns/ueberbackend.cc:869,1
    - Dst: UeberBackend::lookup
      Src: /src/pdns/pdns/ueberbackend.cc:869,1
    - Dst: clear
      Src: /src/pdns/pdns/ueberbackend.cc:876,1
    - Dst: begin
      Src: /src/pdns/pdns/ueberbackend.cc:882,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 43
    argCount: 4
    argNames:
    - ' qtype'
    - ' qname'
    - zoneId
    - pkt_p
    argTypes:
    - QType
    - DNSName
    - domainid_t
    - DNSPacket*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 886
      start: 826
    functionDepth: 3
    functionLinenumber: 826
    functionLinenumberEnd: 886
    functionName: UeberBackend::lookup
    functionSourceFile: /src/pdns/pdns/ueberbackend.cc
    functionUses: 3
    functionsReached:
    - wait
    - SLOG
    - UeberBackend::cacheHas
    - Logging::Loggable
    - PDNSException
    - UeberBackend::get
    - info
    - begin
    - clear
    - DLOG
    - empty
    - UeberBackend::lookup
    - getCode
    linkageType: ''
    returnType: void
    signature: void UeberBackend::lookup(const QType& qtype, const DNSName& qname,
      domainid_t zoneId, DNSPacket* pkt_p)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: UeberBackend::getAllDomains
      Src: /src/pdns/pdns/ueberbackend.cc:891,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 3
    argNames:
    - domains
    - getSerial
    - include_disabled
    argTypes:
    - vector<DomainInfo>*
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 893
      start: 888
    functionDepth: 1
    functionLinenumber: 888
    functionLinenumberEnd: 893
    functionName: UeberBackend::getAllDomains
    functionSourceFile: /src/pdns/pdns/ueberbackend.cc
    functionUses: 6
    functionsReached:
    - UeberBackend::getAllDomains
    linkageType: ''
    returnType: void
    signature: void UeberBackend::getAllDomains(vector<DomainInfo>* domains, bool
      getSerial, bool include_disabled)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: end
      Src: /src/pdns/pdns/ueberbackend.cc:903,1
    - Dst: UeberBackend::get
      Src: /src/pdns/pdns/ueberbackend.cc:912,1
    - Dst: push_back
      Src: /src/pdns/pdns/ueberbackend.cc:914,1
    - Dst: empty
      Src: /src/pdns/pdns/ueberbackend.cc:921,1
    - Dst: UeberBackend::addNegCache
      Src: /src/pdns/pdns/ueberbackend.cc:923,1
    - Dst: UeberBackend::addCache
      Src: /src/pdns/pdns/ueberbackend.cc:927,1
    - Dst: std::move
      Src: /src/pdns/pdns/ueberbackend.cc:927,1
    - Dst: clear
      Src: /src/pdns/pdns/ueberbackend.cc:929,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 27
    argCount: 1
    argNames:
    - ' resourceRecord'
    argTypes:
    - DNSZoneRecord
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 931
      start: 895
    functionDepth: 2
    functionLinenumber: 895
    functionLinenumberEnd: 931
    functionName: UeberBackend::get
    functionSourceFile: /src/pdns/pdns/ueberbackend.cc
    functionUses: 4
    functionsReached:
    - std::move
    - push_back
    - UeberBackend::get
    - end
    - UeberBackend::addCache
    - clear
    - empty
    - UeberBackend::addNegCache
    linkageType: ''
    returnType: bool
    signature: bool UeberBackend::get(DNSZoneRecord& resourceRecord)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: UeberBackend::lookupEnd
      Src: /src/pdns/pdns/ueberbackend.cc:936,1
    - Dst: clear
      Src: /src/pdns/pdns/ueberbackend.cc:939,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 941
      start: 933
    functionDepth: 1
    functionLinenumber: 933
    functionLinenumberEnd: 941
    functionName: UeberBackend::lookupEnd
    functionSourceFile: /src/pdns/pdns/ueberbackend.cc
    functionUses: 3
    functionsReached:
    - clear
    - UeberBackend::lookupEnd
    linkageType: ''
    returnType: void
    signature: void UeberBackend::lookupEnd()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: UeberBackend::setTSIGKey
      Src: /src/pdns/pdns/ueberbackend.cc:948,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - ' name'
    - ' algorithm'
    - ' content'
    argTypes:
    - DNSName
    - DNSName
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 953
      start: 945
    functionDepth: 1
    functionLinenumber: 945
    functionLinenumberEnd: 953
    functionName: UeberBackend::setTSIGKey
    functionSourceFile: /src/pdns/pdns/ueberbackend.cc
    functionUses: 2
    functionsReached:
    - UeberBackend::setTSIGKey
    linkageType: ''
    returnType: bool
    signature: bool UeberBackend::setTSIGKey(const DNSName& name, const DNSName& algorithm,
      const string& content)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: clear
      Src: /src/pdns/pdns/ueberbackend.cc:957,1
    - Dst: clear
      Src: /src/pdns/pdns/ueberbackend.cc:958,1
    - Dst: UeberBackend::getTSIGKey
      Src: /src/pdns/pdns/ueberbackend.cc:961,1
    - Dst: empty
      Src: /src/pdns/pdns/ueberbackend.cc:965,1
    - Dst: empty
      Src: /src/pdns/pdns/ueberbackend.cc:965,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 3
    argNames:
    - ' name'
    - ' algorithm'
    - ' content'
    argTypes:
    - DNSName
    - DNSName
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 966
      start: 955
    functionDepth: 1
    functionLinenumber: 955
    functionLinenumberEnd: 966
    functionName: UeberBackend::getTSIGKey
    functionSourceFile: /src/pdns/pdns/ueberbackend.cc
    functionUses: 4
    functionsReached:
    - clear
    - empty
    - UeberBackend::getTSIGKey
    linkageType: ''
    returnType: bool
    signature: bool UeberBackend::getTSIGKey(const DNSName& name, DNSName& algorithm,
      string& content)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: clear
      Src: /src/pdns/pdns/ueberbackend.cc:970,1
    - Dst: UeberBackend::getTSIGKeys
      Src: /src/pdns/pdns/ueberbackend.cc:973,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - ' keys'
    argTypes:
    - std::vector<struct TSIGKey>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 978
      start: 968
    functionDepth: 1
    functionLinenumber: 968
    functionLinenumberEnd: 978
    functionName: UeberBackend::getTSIGKeys
    functionSourceFile: /src/pdns/pdns/ueberbackend.cc
    functionUses: 2
    functionsReached:
    - clear
    - UeberBackend::getTSIGKeys
    linkageType: ''
    returnType: bool
    signature: bool UeberBackend::getTSIGKeys(std::vector<struct TSIGKey>& keys)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: UeberBackend::deleteTSIGKey
      Src: /src/pdns/pdns/ueberbackend.cc:983,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - ' name'
    argTypes:
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 988
      start: 980
    functionDepth: 0
    functionLinenumber: 980
    functionLinenumberEnd: 988
    functionName: UeberBackend::deleteTSIGKey
    functionSourceFile: /src/pdns/pdns/ueberbackend.cc
    functionUses: 1
    functionsReached:
    - UeberBackend::deleteTSIGKey
    linkageType: ''
    returnType: bool
    signature: bool UeberBackend::deleteTSIGKey(const DNSName& name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: UeberBackend::viewList
      Src: /src/pdns/pdns/ueberbackend.cc:993,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - ' result'
    argTypes:
    - vector<string>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 995
      start: 990
    functionDepth: 1
    functionLinenumber: 990
    functionLinenumberEnd: 995
    functionName: UeberBackend::viewList
    functionSourceFile: /src/pdns/pdns/ueberbackend.cc
    functionUses: 3
    functionsReached:
    - UeberBackend::viewList
    linkageType: ''
    returnType: void
    signature: void UeberBackend::viewList(vector<string>& result)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: UeberBackend::viewListZones
      Src: /src/pdns/pdns/ueberbackend.cc:1000,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - ' view'
    - ' result'
    argTypes:
    - string
    - vector<ZoneName>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1002
      start: 997
    functionDepth: 1
    functionLinenumber: 997
    functionLinenumberEnd: 1002
    functionName: UeberBackend::viewListZones
    functionSourceFile: /src/pdns/pdns/ueberbackend.cc
    functionUses: 3
    functionsReached:
    - UeberBackend::viewListZones
    linkageType: ''
    returnType: void
    signature: void UeberBackend::viewListZones(const string& view, vector<ZoneName>&
      result)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: UeberBackend::getCapabilities
      Src: /src/pdns/pdns/ueberbackend.cc:1013,1
    - Dst: UeberBackend::viewAddZone
      Src: /src/pdns/pdns/ueberbackend.cc:1016,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 2
    argNames:
    - ' view'
    - ' zone'
    argTypes:
    - string
    - ZoneName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1021
      start: 1009
    functionDepth: 1
    functionLinenumber: 1009
    functionLinenumberEnd: 1021
    functionName: UeberBackend::viewAddZone
    functionSourceFile: /src/pdns/pdns/ueberbackend.cc
    functionUses: 2
    functionsReached:
    - UeberBackend::viewAddZone
    - UeberBackend::getCapabilities
    linkageType: ''
    returnType: bool
    signature: bool UeberBackend::viewAddZone(const string& view, const ZoneName&
      zone)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: UeberBackend::getCapabilities
      Src: /src/pdns/pdns/ueberbackend.cc:1027,1
    - Dst: UeberBackend::viewDelZone
      Src: /src/pdns/pdns/ueberbackend.cc:1030,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 2
    argNames:
    - ' view'
    - ' zone'
    argTypes:
    - string
    - ZoneName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1035
      start: 1023
    functionDepth: 1
    functionLinenumber: 1023
    functionLinenumberEnd: 1035
    functionName: UeberBackend::viewDelZone
    functionSourceFile: /src/pdns/pdns/ueberbackend.cc
    functionUses: 2
    functionsReached:
    - UeberBackend::viewDelZone
    - UeberBackend::getCapabilities
    linkageType: ''
    returnType: bool
    signature: bool UeberBackend::viewDelZone(const string& view, const ZoneName&
      zone)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: UeberBackend::getCapabilities
      Src: /src/pdns/pdns/ueberbackend.cc:1041,1
    - Dst: UeberBackend::networkSet
      Src: /src/pdns/pdns/ueberbackend.cc:1044,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 2
    argNames:
    - ' net'
    - ' tag'
    argTypes:
    - Netmask
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1049
      start: 1037
    functionDepth: 1
    functionLinenumber: 1037
    functionLinenumberEnd: 1049
    functionName: UeberBackend::networkSet
    functionSourceFile: /src/pdns/pdns/ueberbackend.cc
    functionUses: 2
    functionsReached:
    - UeberBackend::getCapabilities
    - UeberBackend::networkSet
    linkageType: ''
    returnType: bool
    signature: bool UeberBackend::networkSet(const Netmask& net, std::string& tag)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: UeberBackend::getCapabilities
      Src: /src/pdns/pdns/ueberbackend.cc:1055,1
    - Dst: UeberBackend::networkList
      Src: /src/pdns/pdns/ueberbackend.cc:1058,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 1
    argNames:
    - ' networks'
    argTypes:
    - vector<pair<Netmask, string>>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1060
      start: 1051
    functionDepth: 1
    functionLinenumber: 1051
    functionLinenumberEnd: 1060
    functionName: UeberBackend::networkList
    functionSourceFile: /src/pdns/pdns/ueberbackend.cc
    functionUses: 3
    functionsReached:
    - UeberBackend::networkList
    - UeberBackend::getCapabilities
    linkageType: ''
    returnType: void
    signature: void UeberBackend::networkList(vector<pair<Netmask, string>>& networks)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: begin
      Src: /src/pdns/pdns/ueberbackend.cc:1067,1
    - Dst: size
      Src: /src/pdns/pdns/ueberbackend.cc:1067,1
    - Dst: end
      Src: /src/pdns/pdns/ueberbackend.cc:1067,1
    - Dst: UeberBackend::searchRecords
      Src: /src/pdns/pdns/ueberbackend.cc:1068,1
    - Dst: size
      Src: /src/pdns/pdns/ueberbackend.cc:1068,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 3
    argNames:
    - ' pattern'
    - maxResults
    - ' result'
    argTypes:
    - string
    - size_t
    - vector<DNSResourceRecord>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1073
      start: 1064
    functionDepth: 1
    functionLinenumber: 1064
    functionLinenumberEnd: 1073
    functionName: UeberBackend::searchRecords
    functionSourceFile: /src/pdns/pdns/ueberbackend.cc
    functionUses: 2
    functionsReached:
    - UeberBackend::searchRecords
    - end
    - size
    - begin
    linkageType: ''
    returnType: bool
    signature: bool UeberBackend::searchRecords(const string& pattern, size_t maxResults,
      vector<DNSResourceRecord>& result)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: begin
      Src: /src/pdns/pdns/ueberbackend.cc:1078,1
    - Dst: size
      Src: /src/pdns/pdns/ueberbackend.cc:1078,1
    - Dst: end
      Src: /src/pdns/pdns/ueberbackend.cc:1078,1
    - Dst: UeberBackend::searchComments
      Src: /src/pdns/pdns/ueberbackend.cc:1079,1
    - Dst: size
      Src: /src/pdns/pdns/ueberbackend.cc:1079,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 3
    argNames:
    - ' pattern'
    - maxResults
    - ' result'
    argTypes:
    - string
    - size_t
    - vector<Comment>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1084
      start: 1075
    functionDepth: 1
    functionLinenumber: 1075
    functionLinenumberEnd: 1084
    functionName: UeberBackend::searchComments
    functionSourceFile: /src/pdns/pdns/ueberbackend.cc
    functionUses: 2
    functionsReached:
    - UeberBackend::searchComments
    - end
    - size
    - begin
    linkageType: ''
    returnType: bool
    signature: bool UeberBackend::searchComments(const string& pattern, size_t maxResults,
      vector<Comment>& result)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::any_of
      Src: /src/pdns/pdns/ueberbackend.cc:1088,1
    - Dst: begin
      Src: /src/pdns/pdns/ueberbackend.cc:1088,1
    - Dst: end
      Src: /src/pdns/pdns/ueberbackend.cc:1088,1
    - Dst: UeberBackend::hasCreatedLocalFiles
      Src: /src/pdns/pdns/ueberbackend.cc:1088,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1089
      start: 1086
    functionDepth: 1
    functionLinenumber: 1086
    functionLinenumberEnd: 1089
    functionName: UeberBackend::hasCreatedLocalFiles
    functionSourceFile: /src/pdns/pdns/ueberbackend.cc
    functionUses: 1
    functionsReached:
    - UeberBackend::hasCreatedLocalFiles
    - std::any_of
    - end
    - begin
    linkageType: ''
    returnType: bool
    signature: bool UeberBackend::hasCreatedLocalFiles()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: UeberBackend::getCapabilities
      Src: /src/pdns/pdns/ueberbackend.cc:1095,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1098
      start: 1091
    functionDepth: 1
    functionLinenumber: 1091
    functionLinenumberEnd: 1098
    functionName: UeberBackend::getCapabilities
    functionSourceFile: /src/pdns/pdns/ueberbackend.cc
    functionUses: 20
    functionsReached:
    - UeberBackend::getCapabilities
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int UeberBackend::getCapabilities()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: UeberBackend::flush
      Src: /src/pdns/pdns/ueberbackend.cc:1103,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1105
      start: 1100
    functionDepth: 1
    functionLinenumber: 1100
    functionLinenumberEnd: 1105
    functionName: UeberBackend::flush
    functionSourceFile: /src/pdns/pdns/ueberbackend.cc
    functionUses: 2
    functionsReached:
    - UeberBackend::flush
    linkageType: ''
    returnType: void
    signature: void UeberBackend::flush()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1112
      start: 1109
    functionDepth: 0
    functionLinenumber: 1109
    functionLinenumberEnd: 1112
    functionName: UeberBackend::handle::handle()
    functionSourceFile: /src/pdns/pdns/ueberbackend.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void UeberBackend::handle::handle()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1117
      start: 1114
    functionDepth: 0
    functionLinenumber: 1114
    functionLinenumberEnd: 1117
    functionName: UeberBackend::handle::~handle()
    functionSourceFile: /src/pdns/pdns/ueberbackend.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void UeberBackend::handle::~handle()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: DLOG
      Src: /src/pdns/pdns/ueberbackend.cc:1121,1
    - Dst: SLOG
      Src: /src/pdns/pdns/ueberbackend.cc:1121,1
    - Dst: info
      Src: /src/pdns/pdns/ueberbackend.cc:1122,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/ueberbackend.cc:1122,1
    - Dst: get
      Src: /src/pdns/pdns/ueberbackend.cc:1124,1
    - Dst: backends::size
      Src: /src/pdns/pdns/ueberbackend.cc:1125,1
    - Dst: DLOG
      Src: /src/pdns/pdns/ueberbackend.cc:1126,1
    - Dst: SLOG
      Src: /src/pdns/pdns/ueberbackend.cc:1126,1
    - Dst: backends::size
      Src: /src/pdns/pdns/ueberbackend.cc:1126,1
    - Dst: info
      Src: /src/pdns/pdns/ueberbackend.cc:1128,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/ueberbackend.cc:1128,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/ueberbackend.cc:1128,1
    - Dst: backends::size
      Src: /src/pdns/pdns/ueberbackend.cc:1128,1
    - Dst: get
      Src: /src/pdns/pdns/ueberbackend.cc:1130,1
    - Dst: lookup
      Src: /src/pdns/pdns/ueberbackend.cc:1131,1
    - Dst: backends::size
      Src: /src/pdns/pdns/ueberbackend.cc:1139,1
    - Dst: DLOG
      Src: /src/pdns/pdns/ueberbackend.cc:1140,1
    - Dst: SLOG
      Src: /src/pdns/pdns/ueberbackend.cc:1140,1
    - Dst: info
      Src: /src/pdns/pdns/ueberbackend.cc:1141,1
    - Dst: DLOG
      Src: /src/pdns/pdns/ueberbackend.cc:1145,1
    - Dst: SLOG
      Src: /src/pdns/pdns/ueberbackend.cc:1145,1
    - Dst: info
      Src: /src/pdns/pdns/ueberbackend.cc:1146,1
    - Dst: backends::size
      Src: /src/pdns/pdns/ueberbackend.cc:1147,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 1
    argNames:
    - ' record'
    argTypes:
    - DNSZoneRecord
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1149
      start: 1119
    functionDepth: 0
    functionLinenumber: 1119
    functionLinenumberEnd: 1149
    functionName: UeberBackend::handle::get(DNSZoneRecord& record)
    functionSourceFile: /src/pdns/pdns/ueberbackend.cc
    functionUses: 0
    functionsReached:
    - SLOG
    - lookup
    - Logging::Loggable
    - info
    - get
    - DLOG
    - backends::size
    linkageType: ''
    returnType: bool
    signature: bool UeberBackend::handle::get(DNSZoneRecord& record)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lookupEnd
      Src: /src/pdns/pdns/ueberbackend.cc:1154,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1156
      start: 1151
    functionDepth: 0
    functionLinenumber: 1151
    functionLinenumberEnd: 1156
    functionName: UeberBackend::handle::lookupEnd() const
    functionSourceFile: /src/pdns/pdns/ueberbackend.cc
    functionUses: 0
    functionsReached:
    - lookupEnd
    linkageType: ''
    returnType: void
    signature: void UeberBackend::handle::lookupEnd() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 20
      start: 18
    functionDepth: 0
    functionLinenumber: 18
    functionLinenumberEnd: 20
    functionName: ~SNMPAgent()
    functionSourceFile: /src/pdns/pdns/snmp-agent.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~SNMPAgent()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::thread
      Src: /src/pdns/pdns/snmp-agent.hh:25,1
    - Dst: detach
      Src: /src/pdns/pdns/snmp-agent.hh:26,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 28
      start: 22
    functionDepth: 0
    functionLinenumber: 22
    functionLinenumberEnd: 28
    functionName: SNMPAgent::run
    functionSourceFile: /src/pdns/pdns/snmp-agent.hh
    functionUses: 0
    functionsReached:
    - std::thread
    - detach
    linkageType: ''
    returnType: void
    signature: void run()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: add_bool
      Src: /src/pdns/pdns/protozero-trace.hh:51,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 3
    argNames:
    - ' writer'
    - field
    - value
    argTypes:
    - protozero::pbf_writer
    - uint8_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 48
    functionDepth: 0
    functionLinenumber: 48
    functionLinenumberEnd: 53
    functionName: pdns::trace::encode
    functionSourceFile: /src/pdns/pdns/protozero-trace.hh
    functionUses: 24
    functionsReached:
    - add_bool
    linkageType: ''
    returnType: void
    signature: void encode(protozero::pbf_writer& writer, uint8_t field, bool value,
      bool always = false)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: add_uint32
      Src: /src/pdns/pdns/protozero-trace.hh:58,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 3
    argNames:
    - ' writer'
    - field
    - value
    argTypes:
    - protozero::pbf_writer
    - uint8_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 55
    functionDepth: 0
    functionLinenumber: 55
    functionLinenumberEnd: 60
    functionName: pdns::trace::encode
    functionSourceFile: /src/pdns/pdns/protozero-trace.hh
    functionUses: 24
    functionsReached:
    - add_uint32
    linkageType: ''
    returnType: void
    signature: void encode(protozero::pbf_writer& writer, uint8_t field, uint32_t
      value, bool always = false)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: add_fixed32
      Src: /src/pdns/pdns/protozero-trace.hh:65,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - ' writer'
    - field
    - value
    argTypes:
    - protozero::pbf_writer
    - uint8_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 62
    functionDepth: 0
    functionLinenumber: 62
    functionLinenumberEnd: 67
    functionName: pdns::trace::encodeFixed
    functionSourceFile: /src/pdns/pdns/protozero-trace.hh
    functionUses: 6
    functionsReached:
    - add_fixed32
    linkageType: ''
    returnType: void
    signature: void encodeFixed(protozero::pbf_writer& writer, uint8_t field, uint32_t
      value)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: add_int64
      Src: /src/pdns/pdns/protozero-trace.hh:72,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 3
    argNames:
    - ' writer'
    - field
    - value
    argTypes:
    - protozero::pbf_writer
    - uint8_t
    - int64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 69
    functionDepth: 0
    functionLinenumber: 69
    functionLinenumberEnd: 74
    functionName: pdns::trace::encode
    functionSourceFile: /src/pdns/pdns/protozero-trace.hh
    functionUses: 24
    functionsReached:
    - add_int64
    linkageType: ''
    returnType: void
    signature: void encode(protozero::pbf_writer& writer, uint8_t field, int64_t value,
      bool always = false)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: add_uint64
      Src: /src/pdns/pdns/protozero-trace.hh:79,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 3
    argNames:
    - ' writer'
    - field
    - value
    argTypes:
    - protozero::pbf_writer
    - uint8_t
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 76
    functionDepth: 0
    functionLinenumber: 76
    functionLinenumberEnd: 81
    functionName: pdns::trace::encode
    functionSourceFile: /src/pdns/pdns/protozero-trace.hh
    functionUses: 24
    functionsReached:
    - add_uint64
    linkageType: ''
    returnType: void
    signature: void encode(protozero::pbf_writer& writer, uint8_t field, uint64_t
      value, bool always = false)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: add_fixed64
      Src: /src/pdns/pdns/protozero-trace.hh:86,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - ' writer'
    - field
    - value
    argTypes:
    - protozero::pbf_writer
    - uint8_t
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 83
    functionDepth: 0
    functionLinenumber: 83
    functionLinenumberEnd: 88
    functionName: pdns::trace::encodeFixed
    functionSourceFile: /src/pdns/pdns/protozero-trace.hh
    functionUses: 6
    functionsReached:
    - add_fixed64
    linkageType: ''
    returnType: void
    signature: void encodeFixed(protozero::pbf_writer& writer, uint8_t field, uint64_t
      value)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: add_double
      Src: /src/pdns/pdns/protozero-trace.hh:93,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 3
    argNames:
    - ' writer'
    - field
    - value
    argTypes:
    - protozero::pbf_writer
    - uint8_t
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 90
    functionDepth: 0
    functionLinenumber: 90
    functionLinenumberEnd: 95
    functionName: pdns::trace::encode
    functionSourceFile: /src/pdns/pdns/protozero-trace.hh
    functionUses: 24
    functionsReached:
    - add_double
    linkageType: ''
    returnType: void
    signature: void encode(protozero::pbf_writer& writer, uint8_t field, double value,
      bool always = false)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/protozero-trace.hh:99,1
    - Dst: add_string
      Src: /src/pdns/pdns/protozero-trace.hh:100,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 3
    argNames:
    - ' writer'
    - field
    - ' value'
    argTypes:
    - protozero::pbf_writer
    - uint8_t
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 97
    functionDepth: 0
    functionLinenumber: 97
    functionLinenumberEnd: 102
    functionName: pdns::trace::encode
    functionSourceFile: /src/pdns/pdns/protozero-trace.hh
    functionUses: 24
    functionsReached:
    - empty
    - add_string
    linkageType: ''
    returnType: void
    signature: void encode(protozero::pbf_writer& writer, uint8_t field, const std::string&
      value, bool always = false)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/protozero-trace.hh:106,1
    - Dst: add_bytes
      Src: /src/pdns/pdns/protozero-trace.hh:107,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/protozero-trace.hh:107,1
    - Dst: data
      Src: /src/pdns/pdns/protozero-trace.hh:107,1
    - Dst: size
      Src: /src/pdns/pdns/protozero-trace.hh:107,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 3
    argNames:
    - ' writer'
    - field
    - ' value'
    argTypes:
    - protozero::pbf_writer
    - uint8_t
    - std::vector<uint8_t>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 104
    functionDepth: 0
    functionLinenumber: 104
    functionLinenumberEnd: 109
    functionName: pdns::trace::encode
    functionSourceFile: /src/pdns/pdns/protozero-trace.hh
    functionUses: 24
    functionsReached:
    - size
    - add_bytes
    - reinterpret_cast<const char*>
    - data
    - empty
    linkageType: ''
    returnType: void
    signature: void encode(protozero::pbf_writer& writer, uint8_t field, const std::vector<uint8_t>&
      value, bool always = false)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/protozero-trace.hh:115,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - ' writer'
    - ' vec'
    argTypes:
    - protozero::pbf_writer
    - std::vector<T>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 112
    functionDepth: 0
    functionLinenumber: 112
    functionLinenumberEnd: 117
    functionName: pdns::trace::encode
    functionSourceFile: /src/pdns/pdns/protozero-trace.hh
    functionUses: 25
    functionsReached:
    - pdns::trace::encode
    linkageType: ''
    returnType: void
    signature: void encode(protozero::pbf_writer& writer, const std::vector<T>& vec)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/protozero-trace.hh:124,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 3
    argNames:
    - ' writer'
    - field
    - ' vec'
    argTypes:
    - protozero::pbf_writer
    - uint8_t
    - std::vector<T>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 120
    functionDepth: 0
    functionLinenumber: 120
    functionLinenumberEnd: 126
    functionName: pdns::trace::encode
    functionSourceFile: /src/pdns/pdns/protozero-trace.hh
    functionUses: 26
    functionsReached:
    - pdns::trace::encode
    linkageType: ''
    returnType: void
    signature: void encode(protozero::pbf_writer& writer, uint8_t field, const std::vector<T>&
      vec)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: next
      Src: /src/pdns/pdns/protozero-trace.hh:132,1
    - Dst: tag
      Src: /src/pdns/pdns/protozero-trace.hh:133,1
    - Dst: get_message
      Src: /src/pdns/pdns/protozero-trace.hh:134,1
    - Dst: std::vector::emplace_back
      Src: /src/pdns/pdns/protozero-trace.hh:135,1
    - Dst: YAML::decode
      Src: /src/pdns/pdns/protozero-trace.hh:135,1
    - Dst: std::move
      Src: /src/pdns/pdns/protozero-trace.hh:138,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - ' reader'
    argTypes:
    - protozero::pbf_reader
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 139
      start: 129
    functionDepth: 1
    functionLinenumber: 129
    functionLinenumberEnd: 139
    functionName: pdns::trace::decode
    functionSourceFile: /src/pdns/pdns/protozero-trace.hh
    functionUses: 0
    functionsReached:
    - next
    - std::move
    - tag
    - YAML::decode
    - std::vector::emplace_back
    - get_message
    linkageType: ''
    returnType: T
    signature: T decode(protozero::pbf_reader& reader)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/protozero-trace.hh:147,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' writer'
    argTypes:
    - protozero::pbf_writer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 148
      start: 145
    functionDepth: 0
    functionLinenumber: 145
    functionLinenumberEnd: 148
    functionName: pdns::trace::encode
    functionSourceFile: /src/pdns/pdns/protozero-trace.hh
    functionUses: 27
    functionsReached:
    - pdns::trace::encode
    linkageType: ''
    returnType: void
    signature: void encode(protozero::pbf_writer& writer) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/protozero-trace.hh:161,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' writer'
    argTypes:
    - protozero::pbf_writer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 162
      start: 159
    functionDepth: 0
    functionLinenumber: 159
    functionLinenumberEnd: 162
    functionName: pdns::trace::encode
    functionSourceFile: /src/pdns/pdns/protozero-trace.hh
    functionUses: 28
    functionsReached:
    - pdns::trace::encode
    linkageType: ''
    returnType: void
    signature: void encode(protozero::pbf_writer& writer) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: toLogString
      Src: /src/pdns/pdns/protozero-trace.hh:177,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' ostrm'
    - ' val'
    argTypes:
    - std::ostream
    - AnyValue
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 178
      start: 175
    functionDepth: 0
    functionLinenumber: 175
    functionLinenumberEnd: 178
    functionName: '& operator<<(std::ostream& ostrm, const AnyValue& val)'
    functionSourceFile: /src/pdns/pdns/protozero-trace.hh
    functionUses: 0
    functionsReached:
    - toLogString
    linkageType: ''
    returnType: std::ostream
    signature: std::ostream & operator<<(std::ostream& ostrm, const AnyValue& val)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 226
      start: 225
    functionDepth: 0
    functionLinenumber: 225
    functionLinenumberEnd: 226
    functionName: pdns::trace::TraceID
    functionSourceFile: /src/pdns/pdns/protozero-trace.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void TraceID()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::copy
      Src: /src/pdns/pdns/protozero-trace.hh:230,1
    - Dst: begin
      Src: /src/pdns/pdns/protozero-trace.hh:230,1
    - Dst: end
      Src: /src/pdns/pdns/protozero-trace.hh:230,1
    - Dst: begin
      Src: /src/pdns/pdns/protozero-trace.hh:230,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' arg'
    argTypes:
    - std::initializer_list<uint8_t>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 231
      start: 227
    functionDepth: 0
    functionLinenumber: 227
    functionLinenumberEnd: 231
    functionName: pdns::trace::TraceID
    functionSourceFile: /src/pdns/pdns/protozero-trace.hh
    functionUses: 0
    functionsReached:
    - end
    - std::copy
    - begin
    linkageType: ''
    returnType: void
    signature: void TraceID(const std::initializer_list<uint8_t>& arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: toLogString
      Src: /src/pdns/pdns/protozero-trace.hh:236,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' ostrm'
    - ' val'
    argTypes:
    - std::ostream
    - TraceID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 237
      start: 234
    functionDepth: 0
    functionLinenumber: 234
    functionLinenumberEnd: 237
    functionName: '& operator<<(std::ostream& ostrm, const TraceID& val)'
    functionSourceFile: /src/pdns/pdns/protozero-trace.hh
    functionUses: 0
    functionsReached:
    - toLogString
    linkageType: ''
    returnType: std::ostream
    signature: std::ostream & operator<<(std::ostream& ostrm, const TraceID& val)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TraceID::makeRandom
      Src: /src/pdns/pdns/protozero-trace.hh:242,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 244
      start: 239
    functionDepth: 0
    functionLinenumber: 239
    functionLinenumberEnd: 244
    functionName: pdns::trace::getRandomTraceID
    functionSourceFile: /src/pdns/pdns/protozero-trace.hh
    functionUses: 0
    functionsReached:
    - TraceID::makeRandom
    linkageType: ''
    returnType: TraceID
    signature: TraceID getRandomTraceID()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dns_random
      Src: /src/pdns/pdns/protozero-trace.hh:248,1
    - Dst: pdns::trace::data
      Src: /src/pdns/pdns/protozero-trace.hh:248,1
    - Dst: pdns::trace::size
      Src: /src/pdns/pdns/protozero-trace.hh:248,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 249
      start: 246
    functionDepth: 0
    functionLinenumber: 246
    functionLinenumberEnd: 249
    functionName: pdns::trace::makeRandom
    functionSourceFile: /src/pdns/pdns/protozero-trace.hh
    functionUses: 0
    functionsReached:
    - pdns::trace::data
    - dns_random
    - pdns::trace::size
    linkageType: ''
    returnType: void
    signature: void makeRandom()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::fill
      Src: /src/pdns/pdns/protozero-trace.hh:253,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 254
      start: 251
    functionDepth: 0
    functionLinenumber: 251
    functionLinenumberEnd: 254
    functionName: pdns::trace::clear
    functionSourceFile: /src/pdns/pdns/protozero-trace.hh
    functionUses: 0
    functionsReached:
    - pdns::trace::fill
    linkageType: ''
    returnType: void
    signature: void clear()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 261
      start: 260
    functionDepth: 0
    functionLinenumber: 260
    functionLinenumberEnd: 261
    functionName: pdns::trace::SpanID
    functionSourceFile: /src/pdns/pdns/protozero-trace.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void SpanID()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::copy
      Src: /src/pdns/pdns/protozero-trace.hh:265,1
    - Dst: begin
      Src: /src/pdns/pdns/protozero-trace.hh:265,1
    - Dst: end
      Src: /src/pdns/pdns/protozero-trace.hh:265,1
    - Dst: begin
      Src: /src/pdns/pdns/protozero-trace.hh:265,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' arg'
    argTypes:
    - std::initializer_list<uint8_t>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 266
      start: 262
    functionDepth: 0
    functionLinenumber: 262
    functionLinenumberEnd: 266
    functionName: pdns::trace::SpanID
    functionSourceFile: /src/pdns/pdns/protozero-trace.hh
    functionUses: 0
    functionsReached:
    - end
    - std::copy
    - begin
    linkageType: ''
    returnType: void
    signature: void SpanID(const std::initializer_list<uint8_t>& arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: toLogString
      Src: /src/pdns/pdns/protozero-trace.hh:271,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' ostrm'
    - ' val'
    argTypes:
    - std::ostream
    - SpanID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 272
      start: 269
    functionDepth: 0
    functionLinenumber: 269
    functionLinenumberEnd: 272
    functionName: '& operator<<(std::ostream& ostrm, const SpanID& val)'
    functionSourceFile: /src/pdns/pdns/protozero-trace.hh
    functionUses: 0
    functionsReached:
    - toLogString
    linkageType: ''
    returnType: std::ostream
    signature: std::ostream & operator<<(std::ostream& ostrm, const SpanID& val)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SpanID::makeRandom
      Src: /src/pdns/pdns/protozero-trace.hh:277,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 279
      start: 274
    functionDepth: 0
    functionLinenumber: 274
    functionLinenumberEnd: 279
    functionName: pdns::trace::getRandomSpanID
    functionSourceFile: /src/pdns/pdns/protozero-trace.hh
    functionUses: 0
    functionsReached:
    - SpanID::makeRandom
    linkageType: ''
    returnType: SpanID
    signature: SpanID getRandomSpanID()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dns_random
      Src: /src/pdns/pdns/protozero-trace.hh:283,1
    - Dst: pdns::trace::data
      Src: /src/pdns/pdns/protozero-trace.hh:283,1
    - Dst: pdns::trace::size
      Src: /src/pdns/pdns/protozero-trace.hh:283,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 284
      start: 281
    functionDepth: 0
    functionLinenumber: 281
    functionLinenumberEnd: 284
    functionName: pdns::trace::makeRandom
    functionSourceFile: /src/pdns/pdns/protozero-trace.hh
    functionUses: 0
    functionsReached:
    - pdns::trace::data
    - dns_random
    - pdns::trace::size
    linkageType: ''
    returnType: void
    signature: void makeRandom()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::fill
      Src: /src/pdns/pdns/protozero-trace.hh:288,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 289
      start: 286
    functionDepth: 0
    functionLinenumber: 286
    functionLinenumberEnd: 289
    functionName: pdns::trace::clear
    functionSourceFile: /src/pdns/pdns/protozero-trace.hh
    functionUses: 0
    functionsReached:
    - pdns::trace::fill
    linkageType: ''
    returnType: void
    signature: void clear()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/protozero-trace.hh:295,1
    - Dst: size
      Src: /src/pdns/pdns/protozero-trace.hh:295,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/protozero-trace.hh:296,1
    - Dst: std::copy
      Src: /src/pdns/pdns/protozero-trace.hh:298,1
    - Dst: begin
      Src: /src/pdns/pdns/protozero-trace.hh:298,1
    - Dst: end
      Src: /src/pdns/pdns/protozero-trace.hh:298,1
    - Dst: begin
      Src: /src/pdns/pdns/protozero-trace.hh:298,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - ' trace'
    - ' data'
    argTypes:
    - TraceID
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 299
      start: 293
    functionDepth: 0
    functionLinenumber: 293
    functionLinenumberEnd: 299
    functionName: pdns::trace::fill
    functionSourceFile: /src/pdns/pdns/protozero-trace.hh
    functionUses: 3
    functionsReached:
    - std::runtime_error
    - end
    - size
    - begin
    - std::copy
    linkageType: ''
    returnType: void
    signature: void fill(TraceID& trace, const std::string& data)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/protozero-trace.hh:303,1
    - Dst: size
      Src: /src/pdns/pdns/protozero-trace.hh:303,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/protozero-trace.hh:304,1
    - Dst: std::copy
      Src: /src/pdns/pdns/protozero-trace.hh:306,1
    - Dst: begin
      Src: /src/pdns/pdns/protozero-trace.hh:306,1
    - Dst: end
      Src: /src/pdns/pdns/protozero-trace.hh:306,1
    - Dst: begin
      Src: /src/pdns/pdns/protozero-trace.hh:306,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - ' span'
    - ' data'
    argTypes:
    - SpanID
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 307
      start: 301
    functionDepth: 0
    functionLinenumber: 301
    functionLinenumberEnd: 307
    functionName: pdns::trace::fill
    functionSourceFile: /src/pdns/pdns/protozero-trace.hh
    functionUses: 3
    functionsReached:
    - std::runtime_error
    - end
    - size
    - begin
    - std::copy
    linkageType: ''
    returnType: void
    signature: void fill(SpanID& span, const std::string& data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::fill
      Src: /src/pdns/pdns/protozero-trace.hh:311,1
    - Dst: std::string
      Src: /src/pdns/pdns/protozero-trace.hh:311,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' trace'
    - data
    - size
    argTypes:
    - TraceID
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 312
      start: 309
    functionDepth: 0
    functionLinenumber: 309
    functionLinenumberEnd: 312
    functionName: pdns::trace::fill
    functionSourceFile: /src/pdns/pdns/protozero-trace.hh
    functionUses: 4
    functionsReached:
    - std::string
    - pdns::trace::fill
    linkageType: ''
    returnType: void
    signature: void fill(TraceID& trace, const char* data, size_t size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::fill
      Src: /src/pdns/pdns/protozero-trace.hh:316,1
    - Dst: std::string
      Src: /src/pdns/pdns/protozero-trace.hh:316,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' span'
    - data
    - size
    argTypes:
    - SpanID
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 317
      start: 314
    functionDepth: 0
    functionLinenumber: 314
    functionLinenumberEnd: 317
    functionName: pdns::trace::fill
    functionSourceFile: /src/pdns/pdns/protozero-trace.hh
    functionUses: 5
    functionsReached:
    - std::string
    - pdns::trace::fill
    linkageType: ''
    returnType: void
    signature: void fill(SpanID& span, const char* data, size_t size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: add_bytes
      Src: /src/pdns/pdns/protozero-trace.hh:321,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/protozero-trace.hh:321,1
    - Dst: data
      Src: /src/pdns/pdns/protozero-trace.hh:321,1
    - Dst: size
      Src: /src/pdns/pdns/protozero-trace.hh:321,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' writer'
    - field
    - ' value'
    argTypes:
    - protozero::pbf_writer
    - uint8_t
    - TraceID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 322
      start: 319
    functionDepth: 0
    functionLinenumber: 319
    functionLinenumberEnd: 322
    functionName: pdns::trace::encode
    functionSourceFile: /src/pdns/pdns/protozero-trace.hh
    functionUses: 28
    functionsReached:
    - add_bytes
    - reinterpret_cast<const char*>
    - size
    - data
    linkageType: ''
    returnType: void
    signature: void encode(protozero::pbf_writer& writer, uint8_t field, const TraceID&
      value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: get_view
      Src: /src/pdns/pdns/protozero-trace.hh:327,1
    - Dst: std::min
      Src: /src/pdns/pdns/protozero-trace.hh:328,1
    - Dst: TraceID::size
      Src: /src/pdns/pdns/protozero-trace.hh:328,1
    - Dst: auto::size
      Src: /src/pdns/pdns/protozero-trace.hh:328,1
    - Dst: std::copy
      Src: /src/pdns/pdns/protozero-trace.hh:329,1
    - Dst: auto::data
      Src: /src/pdns/pdns/protozero-trace.hh:329,1
    - Dst: auto::data
      Src: /src/pdns/pdns/protozero-trace.hh:329,1
    - Dst: TraceID::begin
      Src: /src/pdns/pdns/protozero-trace.hh:329,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ' reader'
    argTypes:
    - protozero::pbf_reader
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 331
      start: 324
    functionDepth: 0
    functionLinenumber: 324
    functionLinenumberEnd: 331
    functionName: pdns::trace::decodeTraceID
    functionSourceFile: /src/pdns/pdns/protozero-trace.hh
    functionUses: 0
    functionsReached:
    - std::copy
    - std::min
    - auto::data
    - get_view
    - TraceID::begin
    - auto::size
    - TraceID::size
    linkageType: ''
    returnType: TraceID
    signature: TraceID decodeTraceID(protozero::pbf_reader& reader)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: add_bytes
      Src: /src/pdns/pdns/protozero-trace.hh:335,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/protozero-trace.hh:335,1
    - Dst: data
      Src: /src/pdns/pdns/protozero-trace.hh:335,1
    - Dst: size
      Src: /src/pdns/pdns/protozero-trace.hh:335,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' writer'
    - field
    - ' value'
    argTypes:
    - protozero::pbf_writer
    - uint8_t
    - SpanID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 336
      start: 333
    functionDepth: 0
    functionLinenumber: 333
    functionLinenumberEnd: 336
    functionName: pdns::trace::encode
    functionSourceFile: /src/pdns/pdns/protozero-trace.hh
    functionUses: 28
    functionsReached:
    - add_bytes
    - reinterpret_cast<const char*>
    - size
    - data
    linkageType: ''
    returnType: void
    signature: void encode(protozero::pbf_writer& writer, uint8_t field, const SpanID&
      value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: get_view
      Src: /src/pdns/pdns/protozero-trace.hh:341,1
    - Dst: std::min
      Src: /src/pdns/pdns/protozero-trace.hh:342,1
    - Dst: SpanID::size
      Src: /src/pdns/pdns/protozero-trace.hh:342,1
    - Dst: auto::size
      Src: /src/pdns/pdns/protozero-trace.hh:342,1
    - Dst: std::copy
      Src: /src/pdns/pdns/protozero-trace.hh:343,1
    - Dst: auto::data
      Src: /src/pdns/pdns/protozero-trace.hh:343,1
    - Dst: auto::data
      Src: /src/pdns/pdns/protozero-trace.hh:343,1
    - Dst: SpanID::begin
      Src: /src/pdns/pdns/protozero-trace.hh:343,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ' reader'
    argTypes:
    - protozero::pbf_reader
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 345
      start: 338
    functionDepth: 0
    functionLinenumber: 338
    functionLinenumberEnd: 345
    functionName: pdns::trace::decodeSpanID
    functionSourceFile: /src/pdns/pdns/protozero-trace.hh
    functionUses: 0
    functionsReached:
    - SpanID::size
    - SpanID::begin
    - std::copy
    - std::min
    - auto::data
    - get_view
    - auto::size
    linkageType: ''
    returnType: SpanID
    signature: SpanID decodeSpanID(protozero::pbf_reader& reader)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::clear
      Src: /src/pdns/pdns/protozero-trace.hh:372,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 374
      start: 370
    functionDepth: 0
    functionLinenumber: 370
    functionLinenumberEnd: 374
    functionName: pdns::trace::clear
    functionSourceFile: /src/pdns/pdns/protozero-trace.hh
    functionUses: 1
    functionsReached:
    - pdns::trace::clear
    linkageType: ''
    returnType: void
    signature: void clear()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: clock_gettime
      Src: /src/pdns/pdns/protozero-trace.hh:382,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 384
      start: 379
    functionDepth: 0
    functionLinenumber: 379
    functionLinenumberEnd: 384
    functionName: pdns::trace::timestamp
    functionSourceFile: /src/pdns/pdns/protozero-trace.hh
    functionUses: 0
    functionsReached:
    - clock_gettime
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t timestamp()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::clear
      Src: /src/pdns/pdns/protozero-trace.hh:397,1
    - Dst: pdns::trace::clear
      Src: /src/pdns/pdns/protozero-trace.hh:398,1
    - Dst: pdns::trace::clear
      Src: /src/pdns/pdns/protozero-trace.hh:399,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 401
      start: 395
    functionDepth: 0
    functionLinenumber: 395
    functionLinenumberEnd: 401
    functionName: pdns::trace::clear
    functionSourceFile: /src/pdns/pdns/protozero-trace.hh
    functionUses: 2
    functionsReached:
    - pdns::trace::clear
    linkageType: ''
    returnType: void
    signature: void clear()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::makeRandom
      Src: /src/pdns/pdns/protozero-trace.hh:406,1
    - Dst: pdns::trace::makeRandom
      Src: /src/pdns/pdns/protozero-trace.hh:409,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 411
      start: 403
    functionDepth: 0
    functionLinenumber: 403
    functionLinenumberEnd: 411
    functionName: pdns::trace::setIDsIfNotSet
    functionSourceFile: /src/pdns/pdns/protozero-trace.hh
    functionUses: 0
    functionsReached:
    - pdns::trace::makeRandom
    linkageType: ''
    returnType: void
    signature: void setIDsIfNotSet()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::timestamp
      Src: /src/pdns/pdns/protozero-trace.hh:608,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 609
      start: 606
    functionDepth: 0
    functionLinenumber: 606
    functionLinenumberEnd: 609
    functionName: pdns::trace::close
    functionSourceFile: /src/pdns/pdns/protozero-trace.hh
    functionUses: 0
    functionsReached:
    - pdns::trace::timestamp
    linkageType: ''
    returnType: void
    signature: void close()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::clear
      Src: /src/pdns/pdns/protozero-trace.hh:613,1
    - Dst: pdns::trace::clear
      Src: /src/pdns/pdns/protozero-trace.hh:614,1
    - Dst: pdns::trace::clear
      Src: /src/pdns/pdns/protozero-trace.hh:615,1
    - Dst: pdns::trace::clear
      Src: /src/pdns/pdns/protozero-trace.hh:616,1
    - Dst: pdns::trace::clear
      Src: /src/pdns/pdns/protozero-trace.hh:617,1
    - Dst: pdns::trace::clear
      Src: /src/pdns/pdns/protozero-trace.hh:621,1
    - Dst: pdns::trace::clear
      Src: /src/pdns/pdns/protozero-trace.hh:623,1
    - Dst: pdns::trace::clear
      Src: /src/pdns/pdns/protozero-trace.hh:625,1
    - Dst: pdns::trace::clear
      Src: /src/pdns/pdns/protozero-trace.hh:627,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 629
      start: 611
    functionDepth: 0
    functionLinenumber: 611
    functionLinenumberEnd: 629
    functionName: pdns::trace::clear
    functionSourceFile: /src/pdns/pdns/protozero-trace.hh
    functionUses: 3
    functionsReached:
    - pdns::trace::clear
    linkageType: ''
    returnType: void
    signature: void clear()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::close
      Src: /src/pdns/pdns/protozero-trace.hh:682,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 684
      start: 679
    functionDepth: 0
    functionLinenumber: 679
    functionLinenumberEnd: 684
    functionName: pdns::trace::close
    functionSourceFile: /src/pdns/pdns/protozero-trace.hh
    functionUses: 1
    functionsReached:
    - pdns::trace::close
    linkageType: ''
    returnType: void
    signature: void close()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::close
      Src: /src/pdns/pdns/protozero-trace.hh:708,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 710
      start: 705
    functionDepth: 0
    functionLinenumber: 705
    functionLinenumberEnd: 710
    functionName: pdns::trace::close
    functionSourceFile: /src/pdns/pdns/protozero-trace.hh
    functionUses: 2
    functionsReached:
    - pdns::trace::close
    linkageType: ''
    returnType: void
    signature: void close()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::close
      Src: /src/pdns/pdns/protozero-trace.hh:737,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 739
      start: 734
    functionDepth: 0
    functionLinenumber: 734
    functionLinenumberEnd: 739
    functionName: pdns::trace::close
    functionSourceFile: /src/pdns/pdns/protozero-trace.hh
    functionUses: 3
    functionsReached:
    - pdns::trace::close
    linkageType: ''
    returnType: void
    signature: void close()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/protozero-trace.hh:747,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 749
      start: 743
    functionDepth: 0
    functionLinenumber: 743
    functionLinenumberEnd: 749
    functionName: pdns::trace::encode
    functionSourceFile: /src/pdns/pdns/protozero-trace.hh
    functionUses: 29
    functionsReached:
    - pdns::trace::encode
    linkageType: ''
    returnType: std::string
    signature: std::string encode() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: at
      Src: /src/pdns/pdns/protozero-trace.hh:753,1
    - Dst: insert
      Src: /src/pdns/pdns/protozero-trace.hh:754,1
    - Dst: end
      Src: /src/pdns/pdns/protozero-trace.hh:754,1
    - Dst: begin
      Src: /src/pdns/pdns/protozero-trace.hh:754,1
    - Dst: end
      Src: /src/pdns/pdns/protozero-trace.hh:754,1
    - Dst: std::move
      Src: /src/pdns/pdns/protozero-trace.hh:761,1
    - Dst: std::move
      Src: /src/pdns/pdns/protozero-trace.hh:763,1
    - Dst: std::move
      Src: /src/pdns/pdns/protozero-trace.hh:763,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 3
    argCount: 4
    argNames:
    - ' service'
    - ' spans'
    - ' attributes'
    - ' serverID'
    argTypes:
    - std::string
    - std::vector<Span>
    - std::vector<KeyValue>
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 764
      start: 751
    functionDepth: 1
    functionLinenumber: 751
    functionLinenumberEnd: 764
    functionName: pdns::trace::boilerPlate
    functionSourceFile: /src/pdns/pdns/protozero-trace.hh
    functionUses: 0
    functionsReached:
    - std::move
    - end
    - insert
    - begin
    - at
    linkageType: ''
    returnType: TracesData
    signature: TracesData boilerPlate(std::string&& service, std::vector<Span>&& spans,
      const std::vector<KeyValue>& attributes, const std::string& serverID)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::decode<ArrayValue, AnyValue>
      Src: /src/pdns/pdns/protozero-trace.hh:769,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' reader'
    argTypes:
    - protozero::pbf_reader
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 770
      start: 767
    functionDepth: 0
    functionLinenumber: 767
    functionLinenumberEnd: 770
    functionName: pdns::trace::ArrayValue::decode
    functionSourceFile: /src/pdns/pdns/protozero-trace.hh
    functionUses: 2
    functionsReached:
    - pdns::trace::decode<ArrayValue, AnyValue>
    linkageType: ''
    returnType: ArrayValue
    signature: ArrayValue ArrayValue::decode(protozero::pbf_reader& reader)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::decode<KeyValueList, KeyValue>
      Src: /src/pdns/pdns/protozero-trace.hh:774,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' reader'
    argTypes:
    - protozero::pbf_reader
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 775
      start: 772
    functionDepth: 0
    functionLinenumber: 772
    functionLinenumberEnd: 775
    functionName: pdns::trace::KeyValueList::decode
    functionSourceFile: /src/pdns/pdns/protozero-trace.hh
    functionUses: 2
    functionsReached:
    - pdns::trace::decode<KeyValueList, KeyValue>
    linkageType: ''
    returnType: KeyValueList
    signature: KeyValueList KeyValueList::decode(protozero::pbf_reader& reader)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - arg
    argTypes:
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 786
      start: 785
    functionDepth: 0
    functionLinenumber: 785
    functionLinenumberEnd: 786
    functionName: pdns::trace::EDNSOTTraceRecord
    functionSourceFile: /src/pdns/pdns/protozero-trace.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void EDNSOTTraceRecord(uint8_t* arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - version
    argTypes:
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 791
      start: 788
    functionDepth: 0
    functionLinenumber: 788
    functionLinenumberEnd: 791
    functionName: pdns::trace::setVersion
    functionSourceFile: /src/pdns/pdns/protozero-trace.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setVersion(uint8_t version)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - reserved
    argTypes:
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 795
      start: 792
    functionDepth: 0
    functionLinenumber: 792
    functionLinenumberEnd: 795
    functionName: pdns::trace::setReserved
    functionSourceFile: /src/pdns/pdns/protozero-trace.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setReserved(uint8_t reserved)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::copy
      Src: /src/pdns/pdns/protozero-trace.hh:798,1
    - Dst: begin
      Src: /src/pdns/pdns/protozero-trace.hh:798,1
    - Dst: end
      Src: /src/pdns/pdns/protozero-trace.hh:798,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' traceid'
    argTypes:
    - TraceID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 799
      start: 796
    functionDepth: 0
    functionLinenumber: 796
    functionLinenumberEnd: 799
    functionName: pdns::trace::setTraceID
    functionSourceFile: /src/pdns/pdns/protozero-trace.hh
    functionUses: 0
    functionsReached:
    - end
    - std::copy
    - begin
    linkageType: ''
    returnType: void
    signature: void setTraceID(const TraceID& traceid)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::copy
      Src: /src/pdns/pdns/protozero-trace.hh:802,1
    - Dst: begin
      Src: /src/pdns/pdns/protozero-trace.hh:802,1
    - Dst: end
      Src: /src/pdns/pdns/protozero-trace.hh:802,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' spanid'
    argTypes:
    - SpanID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 803
      start: 800
    functionDepth: 0
    functionLinenumber: 800
    functionLinenumberEnd: 803
    functionName: pdns::trace::setSpanID
    functionSourceFile: /src/pdns/pdns/protozero-trace.hh
    functionUses: 0
    functionsReached:
    - end
    - std::copy
    - begin
    linkageType: ''
    returnType: void
    signature: void setSpanID(const SpanID& spanid)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - flags
    argTypes:
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 807
      start: 804
    functionDepth: 0
    functionLinenumber: 804
    functionLinenumberEnd: 807
    functionName: pdns::trace::setFlags
    functionSourceFile: /src/pdns/pdns/protozero-trace.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setFlags(const uint8_t flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - arg
    - argsize
    argTypes:
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 816
      start: 815
    functionDepth: 0
    functionLinenumber: 815
    functionLinenumberEnd: 816
    functionName: pdns::trace::EDNSOTTraceRecordView
    functionSourceFile: /src/pdns/pdns/protozero-trace.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void EDNSOTTraceRecordView(const uint8_t* arg, size_t argsize)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - ' version'
    argTypes:
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 826
      start: 819
    functionDepth: 0
    functionLinenumber: 819
    functionLinenumberEnd: 826
    functionName: pdns::trace::getVersion
    functionSourceFile: /src/pdns/pdns/protozero-trace.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool getVersion(uint8_t& version) const
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - ' reserved'
    argTypes:
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 834
      start: 827
    functionDepth: 0
    functionLinenumber: 827
    functionLinenumberEnd: 834
    functionName: pdns::trace::getReserved
    functionSourceFile: /src/pdns/pdns/protozero-trace.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool getReserved(uint8_t& reserved) const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::copy
      Src: /src/pdns/pdns/protozero-trace.hh:838,1
    - Dst: size
      Src: /src/pdns/pdns/protozero-trace.hh:838,1
    - Dst: begin
      Src: /src/pdns/pdns/protozero-trace.hh:838,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - ' traceid'
    argTypes:
    - TraceID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 842
      start: 835
    functionDepth: 0
    functionLinenumber: 835
    functionLinenumberEnd: 842
    functionName: pdns::trace::getTraceID
    functionSourceFile: /src/pdns/pdns/protozero-trace.hh
    functionUses: 0
    functionsReached:
    - size
    - std::copy
    - begin
    linkageType: ''
    returnType: bool
    signature: bool getTraceID(TraceID& traceid) const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/protozero-trace.hh:846,1
    - Dst: std::copy
      Src: /src/pdns/pdns/protozero-trace.hh:847,1
    - Dst: size
      Src: /src/pdns/pdns/protozero-trace.hh:847,1
    - Dst: begin
      Src: /src/pdns/pdns/protozero-trace.hh:847,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - ' spanid'
    argTypes:
    - SpanID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 851
      start: 843
    functionDepth: 0
    functionLinenumber: 843
    functionLinenumberEnd: 851
    functionName: pdns::trace::getSpanID
    functionSourceFile: /src/pdns/pdns/protozero-trace.hh
    functionUses: 0
    functionsReached:
    - std::copy
    - size
    - begin
    linkageType: ''
    returnType: bool
    signature: bool getSpanID(SpanID& spanid) const
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - ' flags'
    argTypes:
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 859
      start: 852
    functionDepth: 0
    functionLinenumber: 852
    functionLinenumberEnd: 859
    functionName: pdns::trace::getFlags
    functionSourceFile: /src/pdns/pdns/protozero-trace.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool getFlags(uint8_t& flags) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - ArrayValue
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 872
      start: 869
    functionDepth: 0
    functionLinenumber: 869
    functionLinenumberEnd: 872
    functionName: ArrayValue::operator==(const ArrayValue& rhs) const
    functionSourceFile: /src/pdns/pdns/protozero-trace.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool ArrayValue::operator==(const ArrayValue& rhs) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - KeyValueList
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 877
      start: 874
    functionDepth: 0
    functionLinenumber: 874
    functionLinenumberEnd: 877
    functionName: KeyValueList::operator==(const KeyValueList& rhs) const
    functionSourceFile: /src/pdns/pdns/protozero-trace.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool KeyValueList::operator==(const KeyValueList& rhs) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - KeyValue
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 882
      start: 879
    functionDepth: 0
    functionLinenumber: 879
    functionLinenumberEnd: 882
    functionName: KeyValue::operator==(const KeyValue& rhs) const
    functionSourceFile: /src/pdns/pdns/protozero-trace.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool KeyValue::operator==(const KeyValue& rhs) const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: add_bool
      Src: /src/pdns/pdns/protozero-trace.hh:51,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 3
    argNames:
    - ' writer'
    - field
    - value
    argTypes:
    - protozero::pbf_writer
    - uint8_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 48
    functionDepth: 0
    functionLinenumber: 48
    functionLinenumberEnd: 53
    functionName: pdns::trace::encode
    functionSourceFile: /src/pdns/pdns/protozero-trace.hh
    functionUses: 29
    functionsReached:
    - add_bool
    linkageType: ''
    returnType: void
    signature: void encode(protozero::pbf_writer& writer, uint8_t field, bool value,
      bool always = false)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: add_uint32
      Src: /src/pdns/pdns/protozero-trace.hh:58,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 3
    argNames:
    - ' writer'
    - field
    - value
    argTypes:
    - protozero::pbf_writer
    - uint8_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 55
    functionDepth: 0
    functionLinenumber: 55
    functionLinenumberEnd: 60
    functionName: pdns::trace::encode
    functionSourceFile: /src/pdns/pdns/protozero-trace.hh
    functionUses: 29
    functionsReached:
    - add_uint32
    linkageType: ''
    returnType: void
    signature: void encode(protozero::pbf_writer& writer, uint8_t field, uint32_t
      value, bool always = false)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: add_fixed32
      Src: /src/pdns/pdns/protozero-trace.hh:65,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - ' writer'
    - field
    - value
    argTypes:
    - protozero::pbf_writer
    - uint8_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 62
    functionDepth: 0
    functionLinenumber: 62
    functionLinenumberEnd: 67
    functionName: pdns::trace::encodeFixed
    functionSourceFile: /src/pdns/pdns/protozero-trace.hh
    functionUses: 6
    functionsReached:
    - add_fixed32
    linkageType: ''
    returnType: void
    signature: void encodeFixed(protozero::pbf_writer& writer, uint8_t field, uint32_t
      value)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: add_int64
      Src: /src/pdns/pdns/protozero-trace.hh:72,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 3
    argNames:
    - ' writer'
    - field
    - value
    argTypes:
    - protozero::pbf_writer
    - uint8_t
    - int64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 69
    functionDepth: 0
    functionLinenumber: 69
    functionLinenumberEnd: 74
    functionName: pdns::trace::encode
    functionSourceFile: /src/pdns/pdns/protozero-trace.hh
    functionUses: 29
    functionsReached:
    - add_int64
    linkageType: ''
    returnType: void
    signature: void encode(protozero::pbf_writer& writer, uint8_t field, int64_t value,
      bool always = false)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: add_uint64
      Src: /src/pdns/pdns/protozero-trace.hh:79,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 3
    argNames:
    - ' writer'
    - field
    - value
    argTypes:
    - protozero::pbf_writer
    - uint8_t
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 76
    functionDepth: 0
    functionLinenumber: 76
    functionLinenumberEnd: 81
    functionName: pdns::trace::encode
    functionSourceFile: /src/pdns/pdns/protozero-trace.hh
    functionUses: 29
    functionsReached:
    - add_uint64
    linkageType: ''
    returnType: void
    signature: void encode(protozero::pbf_writer& writer, uint8_t field, uint64_t
      value, bool always = false)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: add_fixed64
      Src: /src/pdns/pdns/protozero-trace.hh:86,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - ' writer'
    - field
    - value
    argTypes:
    - protozero::pbf_writer
    - uint8_t
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 83
    functionDepth: 0
    functionLinenumber: 83
    functionLinenumberEnd: 88
    functionName: pdns::trace::encodeFixed
    functionSourceFile: /src/pdns/pdns/protozero-trace.hh
    functionUses: 6
    functionsReached:
    - add_fixed64
    linkageType: ''
    returnType: void
    signature: void encodeFixed(protozero::pbf_writer& writer, uint8_t field, uint64_t
      value)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: add_double
      Src: /src/pdns/pdns/protozero-trace.hh:93,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 3
    argNames:
    - ' writer'
    - field
    - value
    argTypes:
    - protozero::pbf_writer
    - uint8_t
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 90
    functionDepth: 0
    functionLinenumber: 90
    functionLinenumberEnd: 95
    functionName: pdns::trace::encode
    functionSourceFile: /src/pdns/pdns/protozero-trace.hh
    functionUses: 29
    functionsReached:
    - add_double
    linkageType: ''
    returnType: void
    signature: void encode(protozero::pbf_writer& writer, uint8_t field, double value,
      bool always = false)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/protozero-trace.hh:99,1
    - Dst: add_string
      Src: /src/pdns/pdns/protozero-trace.hh:100,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 3
    argNames:
    - ' writer'
    - field
    - ' value'
    argTypes:
    - protozero::pbf_writer
    - uint8_t
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 97
    functionDepth: 0
    functionLinenumber: 97
    functionLinenumberEnd: 102
    functionName: pdns::trace::encode
    functionSourceFile: /src/pdns/pdns/protozero-trace.hh
    functionUses: 29
    functionsReached:
    - empty
    - add_string
    linkageType: ''
    returnType: void
    signature: void encode(protozero::pbf_writer& writer, uint8_t field, const std::string&
      value, bool always = false)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/protozero-trace.hh:106,1
    - Dst: add_bytes
      Src: /src/pdns/pdns/protozero-trace.hh:107,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/protozero-trace.hh:107,1
    - Dst: data
      Src: /src/pdns/pdns/protozero-trace.hh:107,1
    - Dst: size
      Src: /src/pdns/pdns/protozero-trace.hh:107,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 3
    argNames:
    - ' writer'
    - field
    - ' value'
    argTypes:
    - protozero::pbf_writer
    - uint8_t
    - std::vector<uint8_t>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 104
    functionDepth: 0
    functionLinenumber: 104
    functionLinenumberEnd: 109
    functionName: pdns::trace::encode
    functionSourceFile: /src/pdns/pdns/protozero-trace.hh
    functionUses: 29
    functionsReached:
    - size
    - add_bytes
    - reinterpret_cast<const char*>
    - data
    - empty
    linkageType: ''
    returnType: void
    signature: void encode(protozero::pbf_writer& writer, uint8_t field, const std::vector<uint8_t>&
      value, bool always = false)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/protozero-trace.hh:115,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - ' writer'
    - ' vec'
    argTypes:
    - protozero::pbf_writer
    - std::vector<T>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 112
    functionDepth: 0
    functionLinenumber: 112
    functionLinenumberEnd: 117
    functionName: pdns::trace::encode
    functionSourceFile: /src/pdns/pdns/protozero-trace.hh
    functionUses: 30
    functionsReached:
    - pdns::trace::encode
    linkageType: ''
    returnType: void
    signature: void encode(protozero::pbf_writer& writer, const std::vector<T>& vec)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/protozero-trace.hh:124,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 3
    argNames:
    - ' writer'
    - field
    - ' vec'
    argTypes:
    - protozero::pbf_writer
    - uint8_t
    - std::vector<T>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 120
    functionDepth: 0
    functionLinenumber: 120
    functionLinenumberEnd: 126
    functionName: pdns::trace::encode
    functionSourceFile: /src/pdns/pdns/protozero-trace.hh
    functionUses: 31
    functionsReached:
    - pdns::trace::encode
    linkageType: ''
    returnType: void
    signature: void encode(protozero::pbf_writer& writer, uint8_t field, const std::vector<T>&
      vec)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: next
      Src: /src/pdns/pdns/protozero-trace.hh:132,1
    - Dst: tag
      Src: /src/pdns/pdns/protozero-trace.hh:133,1
    - Dst: get_message
      Src: /src/pdns/pdns/protozero-trace.hh:134,1
    - Dst: std::vector::emplace_back
      Src: /src/pdns/pdns/protozero-trace.hh:135,1
    - Dst: YAML::decode
      Src: /src/pdns/pdns/protozero-trace.hh:135,1
    - Dst: std::move
      Src: /src/pdns/pdns/protozero-trace.hh:138,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - ' reader'
    argTypes:
    - protozero::pbf_reader
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 139
      start: 129
    functionDepth: 1
    functionLinenumber: 129
    functionLinenumberEnd: 139
    functionName: pdns::trace::decode
    functionSourceFile: /src/pdns/pdns/protozero-trace.hh
    functionUses: 0
    functionsReached:
    - next
    - std::move
    - tag
    - YAML::decode
    - std::vector::emplace_back
    - get_message
    linkageType: ''
    returnType: T
    signature: T decode(protozero::pbf_reader& reader)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/protozero-trace.hh:147,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' writer'
    argTypes:
    - protozero::pbf_writer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 148
      start: 145
    functionDepth: 0
    functionLinenumber: 145
    functionLinenumberEnd: 148
    functionName: pdns::trace::encode
    functionSourceFile: /src/pdns/pdns/protozero-trace.hh
    functionUses: 32
    functionsReached:
    - pdns::trace::encode
    linkageType: ''
    returnType: void
    signature: void encode(protozero::pbf_writer& writer) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/protozero-trace.hh:161,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' writer'
    argTypes:
    - protozero::pbf_writer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 162
      start: 159
    functionDepth: 0
    functionLinenumber: 159
    functionLinenumberEnd: 162
    functionName: pdns::trace::encode
    functionSourceFile: /src/pdns/pdns/protozero-trace.hh
    functionUses: 33
    functionsReached:
    - pdns::trace::encode
    linkageType: ''
    returnType: void
    signature: void encode(protozero::pbf_writer& writer) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: toLogString
      Src: /src/pdns/pdns/protozero-trace.hh:177,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' ostrm'
    - ' val'
    argTypes:
    - std::ostream
    - AnyValue
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 178
      start: 175
    functionDepth: 0
    functionLinenumber: 175
    functionLinenumberEnd: 178
    functionName: '& operator<<(std::ostream& ostrm, const AnyValue& val)'
    functionSourceFile: /src/pdns/pdns/protozero-trace.hh
    functionUses: 0
    functionsReached:
    - toLogString
    linkageType: ''
    returnType: std::ostream
    signature: std::ostream & operator<<(std::ostream& ostrm, const AnyValue& val)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 226
      start: 225
    functionDepth: 0
    functionLinenumber: 225
    functionLinenumberEnd: 226
    functionName: pdns::trace::TraceID
    functionSourceFile: /src/pdns/pdns/protozero-trace.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void TraceID()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::copy
      Src: /src/pdns/pdns/protozero-trace.hh:230,1
    - Dst: begin
      Src: /src/pdns/pdns/protozero-trace.hh:230,1
    - Dst: end
      Src: /src/pdns/pdns/protozero-trace.hh:230,1
    - Dst: begin
      Src: /src/pdns/pdns/protozero-trace.hh:230,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' arg'
    argTypes:
    - std::initializer_list<uint8_t>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 231
      start: 227
    functionDepth: 0
    functionLinenumber: 227
    functionLinenumberEnd: 231
    functionName: pdns::trace::TraceID
    functionSourceFile: /src/pdns/pdns/protozero-trace.hh
    functionUses: 0
    functionsReached:
    - end
    - std::copy
    - begin
    linkageType: ''
    returnType: void
    signature: void TraceID(const std::initializer_list<uint8_t>& arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: toLogString
      Src: /src/pdns/pdns/protozero-trace.hh:236,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' ostrm'
    - ' val'
    argTypes:
    - std::ostream
    - TraceID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 237
      start: 234
    functionDepth: 0
    functionLinenumber: 234
    functionLinenumberEnd: 237
    functionName: '& operator<<(std::ostream& ostrm, const TraceID& val)'
    functionSourceFile: /src/pdns/pdns/protozero-trace.hh
    functionUses: 0
    functionsReached:
    - toLogString
    linkageType: ''
    returnType: std::ostream
    signature: std::ostream & operator<<(std::ostream& ostrm, const TraceID& val)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TraceID::makeRandom
      Src: /src/pdns/pdns/protozero-trace.hh:242,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 244
      start: 239
    functionDepth: 0
    functionLinenumber: 239
    functionLinenumberEnd: 244
    functionName: pdns::trace::getRandomTraceID
    functionSourceFile: /src/pdns/pdns/protozero-trace.hh
    functionUses: 0
    functionsReached:
    - TraceID::makeRandom
    linkageType: ''
    returnType: TraceID
    signature: TraceID getRandomTraceID()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dns_random
      Src: /src/pdns/pdns/protozero-trace.hh:248,1
    - Dst: pdns::trace::data
      Src: /src/pdns/pdns/protozero-trace.hh:248,1
    - Dst: pdns::trace::size
      Src: /src/pdns/pdns/protozero-trace.hh:248,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 249
      start: 246
    functionDepth: 0
    functionLinenumber: 246
    functionLinenumberEnd: 249
    functionName: pdns::trace::makeRandom
    functionSourceFile: /src/pdns/pdns/protozero-trace.hh
    functionUses: 1
    functionsReached:
    - pdns::trace::data
    - dns_random
    - pdns::trace::size
    linkageType: ''
    returnType: void
    signature: void makeRandom()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::fill
      Src: /src/pdns/pdns/protozero-trace.hh:253,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 254
      start: 251
    functionDepth: 0
    functionLinenumber: 251
    functionLinenumberEnd: 254
    functionName: pdns::trace::clear
    functionSourceFile: /src/pdns/pdns/protozero-trace.hh
    functionUses: 3
    functionsReached:
    - pdns::trace::fill
    linkageType: ''
    returnType: void
    signature: void clear()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 261
      start: 260
    functionDepth: 0
    functionLinenumber: 260
    functionLinenumberEnd: 261
    functionName: pdns::trace::SpanID
    functionSourceFile: /src/pdns/pdns/protozero-trace.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void SpanID()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::copy
      Src: /src/pdns/pdns/protozero-trace.hh:265,1
    - Dst: begin
      Src: /src/pdns/pdns/protozero-trace.hh:265,1
    - Dst: end
      Src: /src/pdns/pdns/protozero-trace.hh:265,1
    - Dst: begin
      Src: /src/pdns/pdns/protozero-trace.hh:265,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' arg'
    argTypes:
    - std::initializer_list<uint8_t>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 266
      start: 262
    functionDepth: 0
    functionLinenumber: 262
    functionLinenumberEnd: 266
    functionName: pdns::trace::SpanID
    functionSourceFile: /src/pdns/pdns/protozero-trace.hh
    functionUses: 0
    functionsReached:
    - end
    - std::copy
    - begin
    linkageType: ''
    returnType: void
    signature: void SpanID(const std::initializer_list<uint8_t>& arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: toLogString
      Src: /src/pdns/pdns/protozero-trace.hh:271,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' ostrm'
    - ' val'
    argTypes:
    - std::ostream
    - SpanID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 272
      start: 269
    functionDepth: 0
    functionLinenumber: 269
    functionLinenumberEnd: 272
    functionName: '& operator<<(std::ostream& ostrm, const SpanID& val)'
    functionSourceFile: /src/pdns/pdns/protozero-trace.hh
    functionUses: 0
    functionsReached:
    - toLogString
    linkageType: ''
    returnType: std::ostream
    signature: std::ostream & operator<<(std::ostream& ostrm, const SpanID& val)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SpanID::makeRandom
      Src: /src/pdns/pdns/protozero-trace.hh:277,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 279
      start: 274
    functionDepth: 0
    functionLinenumber: 274
    functionLinenumberEnd: 279
    functionName: pdns::trace::getRandomSpanID
    functionSourceFile: /src/pdns/pdns/protozero-trace.hh
    functionUses: 0
    functionsReached:
    - SpanID::makeRandom
    linkageType: ''
    returnType: SpanID
    signature: SpanID getRandomSpanID()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dns_random
      Src: /src/pdns/pdns/protozero-trace.hh:283,1
    - Dst: pdns::trace::data
      Src: /src/pdns/pdns/protozero-trace.hh:283,1
    - Dst: pdns::trace::size
      Src: /src/pdns/pdns/protozero-trace.hh:283,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 284
      start: 281
    functionDepth: 0
    functionLinenumber: 281
    functionLinenumberEnd: 284
    functionName: pdns::trace::makeRandom
    functionSourceFile: /src/pdns/pdns/protozero-trace.hh
    functionUses: 1
    functionsReached:
    - pdns::trace::data
    - dns_random
    - pdns::trace::size
    linkageType: ''
    returnType: void
    signature: void makeRandom()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::fill
      Src: /src/pdns/pdns/protozero-trace.hh:288,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 289
      start: 286
    functionDepth: 0
    functionLinenumber: 286
    functionLinenumberEnd: 289
    functionName: pdns::trace::clear
    functionSourceFile: /src/pdns/pdns/protozero-trace.hh
    functionUses: 3
    functionsReached:
    - pdns::trace::fill
    linkageType: ''
    returnType: void
    signature: void clear()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/protozero-trace.hh:295,1
    - Dst: size
      Src: /src/pdns/pdns/protozero-trace.hh:295,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/protozero-trace.hh:296,1
    - Dst: std::copy
      Src: /src/pdns/pdns/protozero-trace.hh:298,1
    - Dst: begin
      Src: /src/pdns/pdns/protozero-trace.hh:298,1
    - Dst: end
      Src: /src/pdns/pdns/protozero-trace.hh:298,1
    - Dst: begin
      Src: /src/pdns/pdns/protozero-trace.hh:298,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - ' trace'
    - ' data'
    argTypes:
    - TraceID
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 299
      start: 293
    functionDepth: 0
    functionLinenumber: 293
    functionLinenumberEnd: 299
    functionName: pdns::trace::fill
    functionSourceFile: /src/pdns/pdns/protozero-trace.hh
    functionUses: 7
    functionsReached:
    - std::runtime_error
    - end
    - size
    - begin
    - std::copy
    linkageType: ''
    returnType: void
    signature: void fill(TraceID& trace, const std::string& data)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/protozero-trace.hh:303,1
    - Dst: size
      Src: /src/pdns/pdns/protozero-trace.hh:303,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/protozero-trace.hh:304,1
    - Dst: std::copy
      Src: /src/pdns/pdns/protozero-trace.hh:306,1
    - Dst: begin
      Src: /src/pdns/pdns/protozero-trace.hh:306,1
    - Dst: end
      Src: /src/pdns/pdns/protozero-trace.hh:306,1
    - Dst: begin
      Src: /src/pdns/pdns/protozero-trace.hh:306,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - ' span'
    - ' data'
    argTypes:
    - SpanID
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 307
      start: 301
    functionDepth: 0
    functionLinenumber: 301
    functionLinenumberEnd: 307
    functionName: pdns::trace::fill
    functionSourceFile: /src/pdns/pdns/protozero-trace.hh
    functionUses: 7
    functionsReached:
    - std::runtime_error
    - end
    - size
    - begin
    - std::copy
    linkageType: ''
    returnType: void
    signature: void fill(SpanID& span, const std::string& data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::fill
      Src: /src/pdns/pdns/protozero-trace.hh:311,1
    - Dst: std::string
      Src: /src/pdns/pdns/protozero-trace.hh:311,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' trace'
    - data
    - size
    argTypes:
    - TraceID
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 312
      start: 309
    functionDepth: 0
    functionLinenumber: 309
    functionLinenumberEnd: 312
    functionName: pdns::trace::fill
    functionSourceFile: /src/pdns/pdns/protozero-trace.hh
    functionUses: 8
    functionsReached:
    - std::string
    - pdns::trace::fill
    linkageType: ''
    returnType: void
    signature: void fill(TraceID& trace, const char* data, size_t size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::fill
      Src: /src/pdns/pdns/protozero-trace.hh:316,1
    - Dst: std::string
      Src: /src/pdns/pdns/protozero-trace.hh:316,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' span'
    - data
    - size
    argTypes:
    - SpanID
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 317
      start: 314
    functionDepth: 0
    functionLinenumber: 314
    functionLinenumberEnd: 317
    functionName: pdns::trace::fill
    functionSourceFile: /src/pdns/pdns/protozero-trace.hh
    functionUses: 9
    functionsReached:
    - std::string
    - pdns::trace::fill
    linkageType: ''
    returnType: void
    signature: void fill(SpanID& span, const char* data, size_t size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: add_bytes
      Src: /src/pdns/pdns/protozero-trace.hh:321,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/protozero-trace.hh:321,1
    - Dst: data
      Src: /src/pdns/pdns/protozero-trace.hh:321,1
    - Dst: size
      Src: /src/pdns/pdns/protozero-trace.hh:321,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' writer'
    - field
    - ' value'
    argTypes:
    - protozero::pbf_writer
    - uint8_t
    - TraceID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 322
      start: 319
    functionDepth: 0
    functionLinenumber: 319
    functionLinenumberEnd: 322
    functionName: pdns::trace::encode
    functionSourceFile: /src/pdns/pdns/protozero-trace.hh
    functionUses: 33
    functionsReached:
    - add_bytes
    - reinterpret_cast<const char*>
    - size
    - data
    linkageType: ''
    returnType: void
    signature: void encode(protozero::pbf_writer& writer, uint8_t field, const TraceID&
      value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: get_view
      Src: /src/pdns/pdns/protozero-trace.hh:327,1
    - Dst: std::min
      Src: /src/pdns/pdns/protozero-trace.hh:328,1
    - Dst: TraceID::size
      Src: /src/pdns/pdns/protozero-trace.hh:328,1
    - Dst: auto::size
      Src: /src/pdns/pdns/protozero-trace.hh:328,1
    - Dst: std::copy
      Src: /src/pdns/pdns/protozero-trace.hh:329,1
    - Dst: auto::data
      Src: /src/pdns/pdns/protozero-trace.hh:329,1
    - Dst: auto::data
      Src: /src/pdns/pdns/protozero-trace.hh:329,1
    - Dst: TraceID::begin
      Src: /src/pdns/pdns/protozero-trace.hh:329,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ' reader'
    argTypes:
    - protozero::pbf_reader
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 331
      start: 324
    functionDepth: 0
    functionLinenumber: 324
    functionLinenumberEnd: 331
    functionName: pdns::trace::decodeTraceID
    functionSourceFile: /src/pdns/pdns/protozero-trace.hh
    functionUses: 0
    functionsReached:
    - std::copy
    - std::min
    - auto::data
    - get_view
    - TraceID::begin
    - auto::size
    - TraceID::size
    linkageType: ''
    returnType: TraceID
    signature: TraceID decodeTraceID(protozero::pbf_reader& reader)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: add_bytes
      Src: /src/pdns/pdns/protozero-trace.hh:335,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/protozero-trace.hh:335,1
    - Dst: data
      Src: /src/pdns/pdns/protozero-trace.hh:335,1
    - Dst: size
      Src: /src/pdns/pdns/protozero-trace.hh:335,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' writer'
    - field
    - ' value'
    argTypes:
    - protozero::pbf_writer
    - uint8_t
    - SpanID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 336
      start: 333
    functionDepth: 0
    functionLinenumber: 333
    functionLinenumberEnd: 336
    functionName: pdns::trace::encode
    functionSourceFile: /src/pdns/pdns/protozero-trace.hh
    functionUses: 33
    functionsReached:
    - add_bytes
    - reinterpret_cast<const char*>
    - size
    - data
    linkageType: ''
    returnType: void
    signature: void encode(protozero::pbf_writer& writer, uint8_t field, const SpanID&
      value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: get_view
      Src: /src/pdns/pdns/protozero-trace.hh:341,1
    - Dst: std::min
      Src: /src/pdns/pdns/protozero-trace.hh:342,1
    - Dst: SpanID::size
      Src: /src/pdns/pdns/protozero-trace.hh:342,1
    - Dst: auto::size
      Src: /src/pdns/pdns/protozero-trace.hh:342,1
    - Dst: std::copy
      Src: /src/pdns/pdns/protozero-trace.hh:343,1
    - Dst: auto::data
      Src: /src/pdns/pdns/protozero-trace.hh:343,1
    - Dst: auto::data
      Src: /src/pdns/pdns/protozero-trace.hh:343,1
    - Dst: SpanID::begin
      Src: /src/pdns/pdns/protozero-trace.hh:343,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ' reader'
    argTypes:
    - protozero::pbf_reader
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 345
      start: 338
    functionDepth: 0
    functionLinenumber: 338
    functionLinenumberEnd: 345
    functionName: pdns::trace::decodeSpanID
    functionSourceFile: /src/pdns/pdns/protozero-trace.hh
    functionUses: 0
    functionsReached:
    - SpanID::size
    - SpanID::begin
    - std::copy
    - std::min
    - auto::data
    - get_view
    - auto::size
    linkageType: ''
    returnType: SpanID
    signature: SpanID decodeSpanID(protozero::pbf_reader& reader)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::clear
      Src: /src/pdns/pdns/protozero-trace.hh:372,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 374
      start: 370
    functionDepth: 0
    functionLinenumber: 370
    functionLinenumberEnd: 374
    functionName: pdns::trace::clear
    functionSourceFile: /src/pdns/pdns/protozero-trace.hh
    functionUses: 4
    functionsReached:
    - pdns::trace::clear
    linkageType: ''
    returnType: void
    signature: void clear()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: clock_gettime
      Src: /src/pdns/pdns/protozero-trace.hh:382,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 384
      start: 379
    functionDepth: 0
    functionLinenumber: 379
    functionLinenumberEnd: 384
    functionName: pdns::trace::timestamp
    functionSourceFile: /src/pdns/pdns/protozero-trace.hh
    functionUses: 1
    functionsReached:
    - clock_gettime
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t timestamp()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::clear
      Src: /src/pdns/pdns/protozero-trace.hh:397,1
    - Dst: pdns::trace::clear
      Src: /src/pdns/pdns/protozero-trace.hh:398,1
    - Dst: pdns::trace::clear
      Src: /src/pdns/pdns/protozero-trace.hh:399,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 401
      start: 395
    functionDepth: 0
    functionLinenumber: 395
    functionLinenumberEnd: 401
    functionName: pdns::trace::clear
    functionSourceFile: /src/pdns/pdns/protozero-trace.hh
    functionUses: 5
    functionsReached:
    - pdns::trace::clear
    linkageType: ''
    returnType: void
    signature: void clear()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::makeRandom
      Src: /src/pdns/pdns/protozero-trace.hh:406,1
    - Dst: pdns::trace::makeRandom
      Src: /src/pdns/pdns/protozero-trace.hh:409,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 411
      start: 403
    functionDepth: 0
    functionLinenumber: 403
    functionLinenumberEnd: 411
    functionName: pdns::trace::setIDsIfNotSet
    functionSourceFile: /src/pdns/pdns/protozero-trace.hh
    functionUses: 0
    functionsReached:
    - pdns::trace::makeRandom
    linkageType: ''
    returnType: void
    signature: void setIDsIfNotSet()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::timestamp
      Src: /src/pdns/pdns/protozero-trace.hh:608,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 609
      start: 606
    functionDepth: 0
    functionLinenumber: 606
    functionLinenumberEnd: 609
    functionName: pdns::trace::close
    functionSourceFile: /src/pdns/pdns/protozero-trace.hh
    functionUses: 3
    functionsReached:
    - pdns::trace::timestamp
    linkageType: ''
    returnType: void
    signature: void close()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::clear
      Src: /src/pdns/pdns/protozero-trace.hh:613,1
    - Dst: pdns::trace::clear
      Src: /src/pdns/pdns/protozero-trace.hh:614,1
    - Dst: pdns::trace::clear
      Src: /src/pdns/pdns/protozero-trace.hh:615,1
    - Dst: pdns::trace::clear
      Src: /src/pdns/pdns/protozero-trace.hh:616,1
    - Dst: pdns::trace::clear
      Src: /src/pdns/pdns/protozero-trace.hh:617,1
    - Dst: pdns::trace::clear
      Src: /src/pdns/pdns/protozero-trace.hh:621,1
    - Dst: pdns::trace::clear
      Src: /src/pdns/pdns/protozero-trace.hh:623,1
    - Dst: pdns::trace::clear
      Src: /src/pdns/pdns/protozero-trace.hh:625,1
    - Dst: pdns::trace::clear
      Src: /src/pdns/pdns/protozero-trace.hh:627,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 629
      start: 611
    functionDepth: 0
    functionLinenumber: 611
    functionLinenumberEnd: 629
    functionName: pdns::trace::clear
    functionSourceFile: /src/pdns/pdns/protozero-trace.hh
    functionUses: 6
    functionsReached:
    - pdns::trace::clear
    linkageType: ''
    returnType: void
    signature: void clear()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::close
      Src: /src/pdns/pdns/protozero-trace.hh:682,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 684
      start: 679
    functionDepth: 0
    functionLinenumber: 679
    functionLinenumberEnd: 684
    functionName: pdns::trace::close
    functionSourceFile: /src/pdns/pdns/protozero-trace.hh
    functionUses: 4
    functionsReached:
    - pdns::trace::close
    linkageType: ''
    returnType: void
    signature: void close()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::close
      Src: /src/pdns/pdns/protozero-trace.hh:708,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 710
      start: 705
    functionDepth: 0
    functionLinenumber: 705
    functionLinenumberEnd: 710
    functionName: pdns::trace::close
    functionSourceFile: /src/pdns/pdns/protozero-trace.hh
    functionUses: 5
    functionsReached:
    - pdns::trace::close
    linkageType: ''
    returnType: void
    signature: void close()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::close
      Src: /src/pdns/pdns/protozero-trace.hh:737,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 739
      start: 734
    functionDepth: 0
    functionLinenumber: 734
    functionLinenumberEnd: 739
    functionName: pdns::trace::close
    functionSourceFile: /src/pdns/pdns/protozero-trace.hh
    functionUses: 6
    functionsReached:
    - pdns::trace::close
    linkageType: ''
    returnType: void
    signature: void close()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/protozero-trace.hh:747,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 749
      start: 743
    functionDepth: 0
    functionLinenumber: 743
    functionLinenumberEnd: 749
    functionName: pdns::trace::encode
    functionSourceFile: /src/pdns/pdns/protozero-trace.hh
    functionUses: 34
    functionsReached:
    - pdns::trace::encode
    linkageType: ''
    returnType: std::string
    signature: std::string encode() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: at
      Src: /src/pdns/pdns/protozero-trace.hh:753,1
    - Dst: insert
      Src: /src/pdns/pdns/protozero-trace.hh:754,1
    - Dst: end
      Src: /src/pdns/pdns/protozero-trace.hh:754,1
    - Dst: begin
      Src: /src/pdns/pdns/protozero-trace.hh:754,1
    - Dst: end
      Src: /src/pdns/pdns/protozero-trace.hh:754,1
    - Dst: std::move
      Src: /src/pdns/pdns/protozero-trace.hh:761,1
    - Dst: std::move
      Src: /src/pdns/pdns/protozero-trace.hh:763,1
    - Dst: std::move
      Src: /src/pdns/pdns/protozero-trace.hh:763,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 3
    argCount: 4
    argNames:
    - ' service'
    - ' spans'
    - ' attributes'
    - ' serverID'
    argTypes:
    - std::string
    - std::vector<Span>
    - std::vector<KeyValue>
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 764
      start: 751
    functionDepth: 1
    functionLinenumber: 751
    functionLinenumberEnd: 764
    functionName: pdns::trace::boilerPlate
    functionSourceFile: /src/pdns/pdns/protozero-trace.hh
    functionUses: 0
    functionsReached:
    - std::move
    - end
    - insert
    - begin
    - at
    linkageType: ''
    returnType: TracesData
    signature: TracesData boilerPlate(std::string&& service, std::vector<Span>&& spans,
      const std::vector<KeyValue>& attributes, const std::string& serverID)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::decode<ArrayValue, AnyValue>
      Src: /src/pdns/pdns/protozero-trace.hh:769,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' reader'
    argTypes:
    - protozero::pbf_reader
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 770
      start: 767
    functionDepth: 0
    functionLinenumber: 767
    functionLinenumberEnd: 770
    functionName: pdns::trace::ArrayValue::decode
    functionSourceFile: /src/pdns/pdns/protozero-trace.hh
    functionUses: 2
    functionsReached:
    - pdns::trace::decode<ArrayValue, AnyValue>
    linkageType: ''
    returnType: ArrayValue
    signature: ArrayValue ArrayValue::decode(protozero::pbf_reader& reader)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::decode<KeyValueList, KeyValue>
      Src: /src/pdns/pdns/protozero-trace.hh:774,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' reader'
    argTypes:
    - protozero::pbf_reader
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 775
      start: 772
    functionDepth: 0
    functionLinenumber: 772
    functionLinenumberEnd: 775
    functionName: pdns::trace::KeyValueList::decode
    functionSourceFile: /src/pdns/pdns/protozero-trace.hh
    functionUses: 2
    functionsReached:
    - pdns::trace::decode<KeyValueList, KeyValue>
    linkageType: ''
    returnType: KeyValueList
    signature: KeyValueList KeyValueList::decode(protozero::pbf_reader& reader)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - arg
    argTypes:
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 786
      start: 785
    functionDepth: 0
    functionLinenumber: 785
    functionLinenumberEnd: 786
    functionName: pdns::trace::EDNSOTTraceRecord
    functionSourceFile: /src/pdns/pdns/protozero-trace.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void EDNSOTTraceRecord(uint8_t* arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - version
    argTypes:
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 791
      start: 788
    functionDepth: 0
    functionLinenumber: 788
    functionLinenumberEnd: 791
    functionName: pdns::trace::setVersion
    functionSourceFile: /src/pdns/pdns/protozero-trace.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setVersion(uint8_t version)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - reserved
    argTypes:
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 795
      start: 792
    functionDepth: 0
    functionLinenumber: 792
    functionLinenumberEnd: 795
    functionName: pdns::trace::setReserved
    functionSourceFile: /src/pdns/pdns/protozero-trace.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setReserved(uint8_t reserved)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::copy
      Src: /src/pdns/pdns/protozero-trace.hh:798,1
    - Dst: begin
      Src: /src/pdns/pdns/protozero-trace.hh:798,1
    - Dst: end
      Src: /src/pdns/pdns/protozero-trace.hh:798,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' traceid'
    argTypes:
    - TraceID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 799
      start: 796
    functionDepth: 0
    functionLinenumber: 796
    functionLinenumberEnd: 799
    functionName: pdns::trace::setTraceID
    functionSourceFile: /src/pdns/pdns/protozero-trace.hh
    functionUses: 0
    functionsReached:
    - end
    - std::copy
    - begin
    linkageType: ''
    returnType: void
    signature: void setTraceID(const TraceID& traceid)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::copy
      Src: /src/pdns/pdns/protozero-trace.hh:802,1
    - Dst: begin
      Src: /src/pdns/pdns/protozero-trace.hh:802,1
    - Dst: end
      Src: /src/pdns/pdns/protozero-trace.hh:802,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' spanid'
    argTypes:
    - SpanID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 803
      start: 800
    functionDepth: 0
    functionLinenumber: 800
    functionLinenumberEnd: 803
    functionName: pdns::trace::setSpanID
    functionSourceFile: /src/pdns/pdns/protozero-trace.hh
    functionUses: 0
    functionsReached:
    - end
    - std::copy
    - begin
    linkageType: ''
    returnType: void
    signature: void setSpanID(const SpanID& spanid)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - flags
    argTypes:
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 807
      start: 804
    functionDepth: 0
    functionLinenumber: 804
    functionLinenumberEnd: 807
    functionName: pdns::trace::setFlags
    functionSourceFile: /src/pdns/pdns/protozero-trace.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setFlags(const uint8_t flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - arg
    - argsize
    argTypes:
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 816
      start: 815
    functionDepth: 0
    functionLinenumber: 815
    functionLinenumberEnd: 816
    functionName: pdns::trace::EDNSOTTraceRecordView
    functionSourceFile: /src/pdns/pdns/protozero-trace.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void EDNSOTTraceRecordView(const uint8_t* arg, size_t argsize)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - ' version'
    argTypes:
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 826
      start: 819
    functionDepth: 0
    functionLinenumber: 819
    functionLinenumberEnd: 826
    functionName: pdns::trace::getVersion
    functionSourceFile: /src/pdns/pdns/protozero-trace.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool getVersion(uint8_t& version) const
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - ' reserved'
    argTypes:
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 834
      start: 827
    functionDepth: 0
    functionLinenumber: 827
    functionLinenumberEnd: 834
    functionName: pdns::trace::getReserved
    functionSourceFile: /src/pdns/pdns/protozero-trace.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool getReserved(uint8_t& reserved) const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::copy
      Src: /src/pdns/pdns/protozero-trace.hh:838,1
    - Dst: size
      Src: /src/pdns/pdns/protozero-trace.hh:838,1
    - Dst: begin
      Src: /src/pdns/pdns/protozero-trace.hh:838,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - ' traceid'
    argTypes:
    - TraceID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 842
      start: 835
    functionDepth: 0
    functionLinenumber: 835
    functionLinenumberEnd: 842
    functionName: pdns::trace::getTraceID
    functionSourceFile: /src/pdns/pdns/protozero-trace.hh
    functionUses: 0
    functionsReached:
    - size
    - std::copy
    - begin
    linkageType: ''
    returnType: bool
    signature: bool getTraceID(TraceID& traceid) const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/protozero-trace.hh:846,1
    - Dst: std::copy
      Src: /src/pdns/pdns/protozero-trace.hh:847,1
    - Dst: size
      Src: /src/pdns/pdns/protozero-trace.hh:847,1
    - Dst: begin
      Src: /src/pdns/pdns/protozero-trace.hh:847,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - ' spanid'
    argTypes:
    - SpanID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 851
      start: 843
    functionDepth: 0
    functionLinenumber: 843
    functionLinenumberEnd: 851
    functionName: pdns::trace::getSpanID
    functionSourceFile: /src/pdns/pdns/protozero-trace.hh
    functionUses: 0
    functionsReached:
    - std::copy
    - size
    - begin
    linkageType: ''
    returnType: bool
    signature: bool getSpanID(SpanID& spanid) const
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - ' flags'
    argTypes:
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 859
      start: 852
    functionDepth: 0
    functionLinenumber: 852
    functionLinenumberEnd: 859
    functionName: pdns::trace::getFlags
    functionSourceFile: /src/pdns/pdns/protozero-trace.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool getFlags(uint8_t& flags) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - ArrayValue
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 872
      start: 869
    functionDepth: 0
    functionLinenumber: 869
    functionLinenumberEnd: 872
    functionName: ArrayValue::operator==(const ArrayValue& rhs) const
    functionSourceFile: /src/pdns/pdns/protozero-trace.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool ArrayValue::operator==(const ArrayValue& rhs) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - KeyValueList
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 877
      start: 874
    functionDepth: 0
    functionLinenumber: 874
    functionLinenumberEnd: 877
    functionName: KeyValueList::operator==(const KeyValueList& rhs) const
    functionSourceFile: /src/pdns/pdns/protozero-trace.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool KeyValueList::operator==(const KeyValueList& rhs) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - KeyValue
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 882
      start: 879
    functionDepth: 0
    functionLinenumber: 879
    functionLinenumberEnd: 882
    functionName: KeyValue::operator==(const KeyValue& rhs) const
    functionSourceFile: /src/pdns/pdns/protozero-trace.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool KeyValue::operator==(const KeyValue& rhs) const
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pdns::checked_stoi_into
      Src: /src/pdns/pdns/zone2json.cc:65,1
    - Dst: string::find_first_not_of
      Src: /src/pdns/pdns/zone2json.cc:67,1
    - Dst: boost::erase_head
      Src: /src/pdns/pdns/zone2json.cc:69,1
    - Dst: boost::trim_left
      Src: /src/pdns/pdns/zone2json.cc:70,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/zone2json.cc:75,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 4
    argNames:
    - DNSqname
    - qtype
    - ocontent
    - ttl
    argTypes:
    - DNSName
    - string
    - string
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 58
    functionDepth: 0
    functionLinenumber: 58
    functionLinenumberEnd: 82
    functionName: emitRecord
    functionSourceFile: /src/pdns/pdns/zone2json.cc
    functionUses: 1
    functionsReached:
    - boost::erase_head
    - boost::trim_left
    - DNSName::toString
    - string::find_first_not_of
    - pdns::checked_stoi_into
    linkageType: ''
    returnType: Json::object
    signature: Json::object emitRecord(const DNSName &DNSqname, const string &qtype,
      const string &ocontent, int ttl)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ArgvMap::ArgvMap
      Src: /src/pdns/pdns/zone2json.cc:90,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 88
    functionDepth: 0
    functionLinenumber: 88
    functionLinenumberEnd: 92
    functionName: arg
    functionSourceFile: /src/pdns/pdns/zone2json.cc
    functionUses: 73
    functionsReached:
    - ArgvMap::ArgvMap
    linkageType: ''
    returnType: ArgvMap
    signature: ArgvMap &arg()
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: reportAllTypes
      Src: /src/pdns/pdns/zone2json.cc:100,1
    - Dst: std::ios_base::sync_with_stdio
      Src: /src/pdns/pdns/zone2json.cc:101,1
    - Dst: arg
      Src: /src/pdns/pdns/zone2json.cc:103,1
    - Dst: arg
      Src: /src/pdns/pdns/zone2json.cc:104,1
    - Dst: arg
      Src: /src/pdns/pdns/zone2json.cc:105,1
    - Dst: arg
      Src: /src/pdns/pdns/zone2json.cc:106,1
    - Dst: arg
      Src: /src/pdns/pdns/zone2json.cc:107,1
    - Dst: arg
      Src: /src/pdns/pdns/zone2json.cc:108,1
    - Dst: arg
      Src: /src/pdns/pdns/zone2json.cc:109,1
    - Dst: arg
      Src: /src/pdns/pdns/zone2json.cc:111,1
    - Dst: arg
      Src: /src/pdns/pdns/zone2json.cc:112,1
    - Dst: declare
      Src: /src/pdns/pdns/zone2json.cc:114,1
    - Dst: arg
      Src: /src/pdns/pdns/zone2json.cc:119,1
    - Dst: arg
      Src: /src/pdns/pdns/zone2json.cc:121,1
    - Dst: exit
      Src: /src/pdns/pdns/zone2json.cc:123,1
    - Dst: arg
      Src: /src/pdns/pdns/zone2json.cc:126,1
    - Dst: arg
      Src: /src/pdns/pdns/zone2json.cc:128,1
    - Dst: exit
      Src: /src/pdns/pdns/zone2json.cc:129,1
    - Dst: arg
      Src: /src/pdns/pdns/zone2json.cc:134,1
    - Dst: exit
      Src: /src/pdns/pdns/zone2json.cc:135,1
    - Dst: arg
      Src: /src/pdns/pdns/zone2json.cc:138,1
    - Dst: arg
      Src: /src/pdns/pdns/zone2json.cc:139,1
    - Dst: string::empty
      Src: /src/pdns/pdns/zone2json.cc:143,1
    - Dst: BindParser::BindParser
      Src: /src/pdns/pdns/zone2json.cc:144,1
    - Dst: BindParser::setVerbose
      Src: /src/pdns/pdns/zone2json.cc:145,1
    - Dst: arg
      Src: /src/pdns/pdns/zone2json.cc:145,1
    - Dst: BindParser::parse
      Src: /src/pdns/pdns/zone2json.cc:146,1
    - Dst: string::empty
      Src: /src/pdns/pdns/zone2json.cc:146,1
    - Dst: BindParser::getDomains
      Src: /src/pdns/pdns/zone2json.cc:148,1
    - Dst: stat
      Src: /src/pdns/pdns/zone2json.cc:151,1
    - Dst: filename::c_str
      Src: /src/pdns/pdns/zone2json.cc:151,1
    - Dst: sort
      Src: /src/pdns/pdns/zone2json.cc:157,1
    - Dst: vector::begin
      Src: /src/pdns/pdns/zone2json.cc:157,1
    - Dst: vector::end
      Src: /src/pdns/pdns/zone2json.cc:157,1
    - Dst: vector::size
      Src: /src/pdns/pdns/zone2json.cc:159,1
    - Dst: vector::begin
      Src: /src/pdns/pdns/zone2json.cc:163,1
    - Dst: vector::end
      Src: /src/pdns/pdns/zone2json.cc:164,1
    - Dst: vector<BindDomainInfo>::const_iterator::type::empty
      Src: /src/pdns/pdns/zone2json.cc:167,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/zone2json.cc:171,1
    - Dst: BindParser::getDirectory
      Src: /src/pdns/pdns/zone2json.cc:175,1
    - Dst: ZoneParserTNG::setMaxGenerateSteps
      Src: /src/pdns/pdns/zone2json.cc:176,1
    - Dst: arg
      Src: /src/pdns/pdns/zone2json.cc:176,1
    - Dst: ZoneParserTNG::setMaxIncludes
      Src: /src/pdns/pdns/zone2json.cc:177,1
    - Dst: arg
      Src: /src/pdns/pdns/zone2json.cc:177,1
    - Dst: vector<BindDomainInfo>::const_iterator::name::toString
      Src: /src/pdns/pdns/zone2json.cc:179,1
    - Dst: ZoneParserTNG::get
      Src: /src/pdns/pdns/zone2json.cc:181,1
    - Dst: Json::array::push_back
      Src: /src/pdns/pdns/zone2json.cc:182,1
    - Dst: emitRecord
      Src: /src/pdns/pdns/zone2json.cc:182,1
    - Dst: DNSResourceRecord::qtype::toString
      Src: /src/pdns/pdns/zone2json.cc:182,1
    - Dst: Json::dump
      Src: /src/pdns/pdns/zone2json.cc:185,1
    - Dst: vector::end
      Src: /src/pdns/pdns/zone2json.cc:186,1
    - Dst: arg
      Src: /src/pdns/pdns/zone2json.cc:190,1
    - Dst: what
      Src: /src/pdns/pdns/zone2json.cc:193,1
    - Dst: arg
      Src: /src/pdns/pdns/zone2json.cc:196,1
    - Dst: ZoneParserTNG::setMaxGenerateSteps
      Src: /src/pdns/pdns/zone2json.cc:209,1
    - Dst: arg
      Src: /src/pdns/pdns/zone2json.cc:209,1
    - Dst: arg
      Src: /src/pdns/pdns/zone2json.cc:215,1
    - Dst: ZoneParserTNG::get
      Src: /src/pdns/pdns/zone2json.cc:217,1
    - Dst: Json::array::push_back
      Src: /src/pdns/pdns/zone2json.cc:218,1
    - Dst: emitRecord
      Src: /src/pdns/pdns/zone2json.cc:218,1
    - Dst: DNSResourceRecord::qtype::toString
      Src: /src/pdns/pdns/zone2json.cc:218,1
    - Dst: Json::dump
      Src: /src/pdns/pdns/zone2json.cc:223,1
    - Dst: what
      Src: /src/pdns/pdns/zone2json.cc:237,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 92
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 243
      start: 95
    functionDepth: 1
    functionLinenumber: 95
    functionLinenumberEnd: 243
    functionName: main
    functionSourceFile: /src/pdns/pdns/zone2json.cc
    functionUses: 24
    functionsReached:
    - BindParser::setVerbose
    - ZoneParserTNG::setMaxGenerateSteps
    - BindParser::getDomains
    - Json::array::push_back
    - std::ios_base::sync_with_stdio
    - sort
    - Json::dump
    - declare
    - vector::begin
    - BindParser::parse
    - reportAllTypes
    - string::empty
    - DNSResourceRecord::qtype::toString
    - BindParser::getDirectory
    - stat
    - vector::clear
    - ZoneParserTNG::setMaxIncludes
    - vector::end
    - exit
    - BindParser::BindParser
    - arg
    - vector<BindDomainInfo>::const_iterator::type::empty
    - vector<BindDomainInfo>::const_iterator::name::toString
    - emitRecord
    - what
    - ZoneParserTNG::get
    - filename::c_str
    - vector::size
    linkageType: ''
    returnType: int
    signature: int main(int argc, char **argv)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:25,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:27,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:27,1
    - Dst: DNSPacketWriter::xfrIP
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:28,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:32,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:33,1
    - Dst: DNSPacketWriter::size
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:33,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:35,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:35,1
    - Dst: DNSPacketWriter::xfrName
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:36,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:36,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:37,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:38,1
    - Dst: DNSPacketWriter::size
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:38,1
    - Dst: vector::begin
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:40,1
    - Dst: vector::end
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:40,1
    - Dst: testCompressionBool
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:45,1
    - Dst: testCompressionBool
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:46,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 19
    functionDepth: 1
    functionLinenumber: 19
    functionLinenumberEnd: 47
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-dnswriter_cc.cc
    functionUses: 0
    functionsReached:
    - DNSPacketWriter::size
    - vector::begin
    - DNSPacketWriter::commit
    - DNSName
    - DNSPacketWriter::getHeader
    - BOOST_CHECK_EQUAL
    - vector::end
    - DNSPacketWriter::xfrName
    - testCompressionBool
    - DNSPacketWriter::startRecord
    - DNSPacketWriter::xfrIP
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_compressionBool)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:54,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:57,1
    - Dst: string
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:58,1
    - Dst: string
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:58,1
    - Dst: string
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:58,1
    - Dst: DNSPacketWriter::xfrText
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:59,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:60,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:61,1
    - Dst: DNSPacketWriter::size
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:61,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:63,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:63,1
    - Dst: DNSPacketWriter::xfrIP
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:64,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:68,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:69,1
    - Dst: DNSPacketWriter::size
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:69,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:71,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:71,1
    - Dst: DNSPacketWriter::xfrIP
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:72,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:76,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:77,1
    - Dst: DNSPacketWriter::size
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:77,1
    - Dst: vector::begin
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:79,1
    - Dst: vector::end
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:79,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 49
    functionDepth: 1
    functionLinenumber: 49
    functionLinenumberEnd: 82
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-dnswriter_cc.cc
    functionUses: 0
    functionsReached:
    - DNSPacketWriter::size
    - vector::begin
    - DNSPacketWriter::xfrIP
    - DNSPacketWriter::commit
    - DNSPacketWriter::xfrText
    - string
    - DNSPacketWriter::getHeader
    - BOOST_CHECK_EQUAL
    - DNSName
    - vector::end
    - DNSPacketWriter::startRecord
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_compressionBoundary)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:88,1
    - Dst: SvcParam
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:91,1
    - Dst: std::move
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:91,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:93,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:94,1
    - Dst: DNSPacketWriter::getContent
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:95,1
    - Dst: DNSPacketWriter::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:97,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:98,1
    - Dst: DNSPacketWriter::getContent
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:99,1
    - Dst: DNSPacketWriter::getContent
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:103,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:104,1
    - Dst: vector<uint8_t>
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:104,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 84
    functionDepth: 1
    functionLinenumber: 84
    functionLinenumberEnd: 105
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-dnswriter_cc.cc
    functionUses: 0
    functionsReached:
    - std::move
    - DNSPacketWriter::commit
    - SvcParam
    - DNSPacketWriter::xfrSvcParamKeyVals
    - DNSPacketWriter::getHeader
    - vector<uint8_t>
    - DNSPacketWriter::getContent
    - BOOST_CHECK
    - DNSPacketWriter::startRecord
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_xfrSvcParamKeyVals_mandatory)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:111,1
    - Dst: SvcParam
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:114,1
    - Dst: std::move
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:114,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:116,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:117,1
    - Dst: DNSPacketWriter::getContent
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:118,1
    - Dst: DNSPacketWriter::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:120,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:121,1
    - Dst: DNSPacketWriter::getContent
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:122,1
    - Dst: DNSPacketWriter::getContent
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:126,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:127,1
    - Dst: vector<uint8_t>
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:127,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 132
      start: 107
    functionDepth: 1
    functionLinenumber: 107
    functionLinenumberEnd: 132
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-dnswriter_cc.cc
    functionUses: 0
    functionsReached:
    - std::move
    - DNSPacketWriter::commit
    - SvcParam
    - DNSPacketWriter::xfrSvcParamKeyVals
    - DNSPacketWriter::getHeader
    - vector<uint8_t>
    - DNSPacketWriter::getContent
    - BOOST_CHECK
    - DNSPacketWriter::startRecord
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_xfrSvcParamKeyVals_alpn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:138,1
    - Dst: SvcParam
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:140,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:142,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:143,1
    - Dst: DNSPacketWriter::getContent
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:144,1
    - Dst: DNSPacketWriter::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:146,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:147,1
    - Dst: DNSPacketWriter::getContent
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:148,1
    - Dst: DNSPacketWriter::getContent
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:152,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:153,1
    - Dst: vector<uint8_t>
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:153,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 154
      start: 134
    functionDepth: 1
    functionLinenumber: 134
    functionLinenumberEnd: 154
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-dnswriter_cc.cc
    functionUses: 0
    functionsReached:
    - DNSPacketWriter::commit
    - SvcParam
    - DNSPacketWriter::xfrSvcParamKeyVals
    - DNSPacketWriter::getHeader
    - vector<uint8_t>
    - DNSPacketWriter::getContent
    - BOOST_CHECK
    - DNSPacketWriter::startRecord
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_xfrSvcParamKeyVals_no_default_alpn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:160,1
    - Dst: SvcParam
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:162,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:164,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:165,1
    - Dst: DNSPacketWriter::getContent
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:166,1
    - Dst: DNSPacketWriter::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:168,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:169,1
    - Dst: DNSPacketWriter::getContent
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:170,1
    - Dst: DNSPacketWriter::getContent
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:174,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:175,1
    - Dst: vector<uint8_t>
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:175,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 176
      start: 156
    functionDepth: 1
    functionLinenumber: 156
    functionLinenumberEnd: 176
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-dnswriter_cc.cc
    functionUses: 0
    functionsReached:
    - DNSPacketWriter::commit
    - SvcParam
    - DNSPacketWriter::xfrSvcParamKeyVals
    - DNSPacketWriter::getHeader
    - vector<uint8_t>
    - DNSPacketWriter::getContent
    - BOOST_CHECK
    - DNSPacketWriter::startRecord
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_xfrSvcParamKeyVals_port)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:182,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:184,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:184,1
    - Dst: SvcParam
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:185,1
    - Dst: std::move
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:185,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:187,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:188,1
    - Dst: DNSPacketWriter::getContent
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:189,1
    - Dst: DNSPacketWriter::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:191,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:192,1
    - Dst: DNSPacketWriter::getContent
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:193,1
    - Dst: DNSPacketWriter::getContent
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:197,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:198,1
    - Dst: vector<uint8_t>
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:198,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 199
      start: 178
    functionDepth: 1
    functionLinenumber: 178
    functionLinenumberEnd: 199
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-dnswriter_cc.cc
    functionUses: 0
    functionsReached:
    - std::move
    - DNSPacketWriter::commit
    - SvcParam
    - DNSPacketWriter::xfrSvcParamKeyVals
    - DNSPacketWriter::getHeader
    - vector<uint8_t>
    - DNSPacketWriter::getContent
    - BOOST_CHECK
    - DNSPacketWriter::startRecord
    - ComboAddress
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_xfrSvcParamKeyVals_ipv4hint)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:205,1
    - Dst: SvcParam
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:207,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:209,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:210,1
    - Dst: DNSPacketWriter::getContent
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:211,1
    - Dst: DNSPacketWriter::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:213,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:214,1
    - Dst: DNSPacketWriter::getContent
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:215,1
    - Dst: DNSPacketWriter::getContent
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:219,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:220,1
    - Dst: vector<uint8_t>
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:220,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 224
      start: 201
    functionDepth: 1
    functionLinenumber: 201
    functionLinenumberEnd: 224
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-dnswriter_cc.cc
    functionUses: 0
    functionsReached:
    - DNSPacketWriter::commit
    - SvcParam
    - DNSPacketWriter::xfrSvcParamKeyVals
    - DNSPacketWriter::getHeader
    - vector<uint8_t>
    - DNSPacketWriter::getContent
    - BOOST_CHECK
    - DNSPacketWriter::startRecord
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_xfrSvcParamKeyVals_ech)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:230,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:232,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:232,1
    - Dst: SvcParam
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:233,1
    - Dst: std::move
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:233,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:235,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:236,1
    - Dst: DNSPacketWriter::getContent
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:237,1
    - Dst: DNSPacketWriter::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:239,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:240,1
    - Dst: DNSPacketWriter::getContent
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:241,1
    - Dst: DNSPacketWriter::getContent
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:245,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:246,1
    - Dst: vector<uint8_t>
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:246,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 249
      start: 226
    functionDepth: 1
    functionLinenumber: 226
    functionLinenumberEnd: 249
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-dnswriter_cc.cc
    functionUses: 0
    functionsReached:
    - std::move
    - DNSPacketWriter::commit
    - SvcParam
    - DNSPacketWriter::xfrSvcParamKeyVals
    - DNSPacketWriter::getHeader
    - vector<uint8_t>
    - DNSPacketWriter::getContent
    - BOOST_CHECK
    - DNSPacketWriter::startRecord
    - ComboAddress
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_xfrSvcParamKeyVals_ipv6hint)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:255,1
    - Dst: SvcParam
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:257,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:259,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:260,1
    - Dst: DNSPacketWriter::getContent
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:261,1
    - Dst: DNSPacketWriter::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:263,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:264,1
    - Dst: DNSPacketWriter::getContent
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:265,1
    - Dst: DNSPacketWriter::getContent
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:270,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:271,1
    - Dst: vector<uint8_t>
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:271,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 275
      start: 251
    functionDepth: 1
    functionLinenumber: 251
    functionLinenumberEnd: 275
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-dnswriter_cc.cc
    functionUses: 0
    functionsReached:
    - DNSPacketWriter::commit
    - SvcParam
    - DNSPacketWriter::xfrSvcParamKeyVals
    - DNSPacketWriter::getHeader
    - vector<uint8_t>
    - DNSPacketWriter::getContent
    - BOOST_CHECK
    - DNSPacketWriter::startRecord
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_xfrSvcParamKeyVals_dohpath)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:281,1
    - Dst: SvcParam
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:283,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:285,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:286,1
    - Dst: DNSPacketWriter::getContent
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:287,1
    - Dst: DNSPacketWriter::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:289,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:290,1
    - Dst: DNSPacketWriter::getContent
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:291,1
    - Dst: DNSPacketWriter::getContent
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:296,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:297,1
    - Dst: vector<uint8_t>
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:297,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 298
      start: 277
    functionDepth: 1
    functionLinenumber: 277
    functionLinenumberEnd: 298
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-dnswriter_cc.cc
    functionUses: 0
    functionsReached:
    - DNSPacketWriter::commit
    - SvcParam
    - DNSPacketWriter::xfrSvcParamKeyVals
    - DNSPacketWriter::getHeader
    - vector<uint8_t>
    - DNSPacketWriter::getContent
    - BOOST_CHECK
    - DNSPacketWriter::startRecord
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_xfrSvcParamKeyVals_ohttp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:304,1
    - Dst: SvcParam
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:307,1
    - Dst: std::move
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:307,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:309,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:310,1
    - Dst: DNSPacketWriter::getContent
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:311,1
    - Dst: DNSPacketWriter::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:313,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:314,1
    - Dst: DNSPacketWriter::getContent
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:315,1
    - Dst: DNSPacketWriter::getContent
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:320,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:321,1
    - Dst: vector<uint8_t>
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:321,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 327
      start: 300
    functionDepth: 1
    functionLinenumber: 300
    functionLinenumberEnd: 327
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-dnswriter_cc.cc
    functionUses: 0
    functionsReached:
    - std::move
    - DNSPacketWriter::commit
    - SvcParam
    - DNSPacketWriter::xfrSvcParamKeyVals
    - DNSPacketWriter::getHeader
    - vector<uint8_t>
    - DNSPacketWriter::getContent
    - BOOST_CHECK
    - DNSPacketWriter::startRecord
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_xfrSvcParamKeyVals_tls_supported_groups)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:333,1
    - Dst: SvcParam
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:335,1
    - Dst: SvcParam::keyFromString
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:335,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:337,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:338,1
    - Dst: DNSPacketWriter::getContent
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:339,1
    - Dst: DNSPacketWriter::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:341,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:342,1
    - Dst: DNSPacketWriter::getContent
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:343,1
    - Dst: DNSPacketWriter::getContent
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:348,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:349,1
    - Dst: vector<uint8_t>
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:349,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 352
      start: 329
    functionDepth: 1
    functionLinenumber: 329
    functionLinenumberEnd: 352
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-dnswriter_cc.cc
    functionUses: 0
    functionsReached:
    - DNSPacketWriter::commit
    - SvcParam::keyFromString
    - SvcParam
    - DNSPacketWriter::xfrSvcParamKeyVals
    - DNSPacketWriter::getHeader
    - vector<uint8_t>
    - DNSPacketWriter::getContent
    - BOOST_CHECK
    - DNSPacketWriter::startRecord
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_xfrSvcParamKeyVals_generic)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:358,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:360,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:360,1
    - Dst: SvcParam
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:362,1
    - Dst: std::move
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:362,1
    - Dst: SvcParam
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:362,1
    - Dst: std::move
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:362,1
    - Dst: SvcParam
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:362,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:364,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:365,1
    - Dst: DNSPacketWriter::getContent
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:366,1
    - Dst: DNSPacketWriter::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:368,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:369,1
    - Dst: DNSPacketWriter::getContent
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:370,1
    - Dst: DNSPacketWriter::getContent
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:375,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:376,1
    - Dst: vector<uint8_t>
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:376,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 382
      start: 354
    functionDepth: 1
    functionLinenumber: 354
    functionLinenumberEnd: 382
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-dnswriter_cc.cc
    functionUses: 0
    functionsReached:
    - std::move
    - DNSPacketWriter::commit
    - SvcParam
    - DNSPacketWriter::xfrSvcParamKeyVals
    - DNSPacketWriter::getHeader
    - vector<uint8_t>
    - DNSPacketWriter::getContent
    - BOOST_CHECK
    - DNSPacketWriter::startRecord
    - ComboAddress
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_xfrSvcParamKeyVals_multiple)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:391,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:393,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:394,1
    - Dst: DNSPacketWriter::getContent
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:395,1
    - Dst: DNSPacketWriter::xfrNodeOrLocatorID
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:397,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:398,1
    - Dst: DNSPacketWriter::getContent
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:399,1
    - Dst: DNSPacketWriter::getContent
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:404,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:405,1
    - Dst: vector<uint8_t>
      Src: /src/pdns/pdns/test-dnswriter_cc.cc:405,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 408
      start: 384
    functionDepth: 1
    functionLinenumber: 384
    functionLinenumberEnd: 408
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-dnswriter_cc.cc
    functionUses: 0
    functionsReached:
    - DNSPacketWriter::commit
    - DNSPacketWriter::getHeader
    - vector<uint8_t>
    - DNSPacketWriter::getContent
    - DNSPacketWriter::xfrNodeOrLocatorID
    - BOOST_CHECK
    - DNSPacketWriter::startRecord
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_NodeOrLocatorID)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: prepareContext
      Src: /src/pdns/pdns/lua-auth4.hh:17,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 18
      start: 16
    functionDepth: 0
    functionLinenumber: 16
    functionLinenumberEnd: 18
    functionName: AuthLua4::AuthLua4
    functionSourceFile: /src/pdns/pdns/lua-auth4.hh
    functionUses: 0
    functionsReached:
    - prepareContext
    linkageType: ''
    returnType: void
    signature: void AuthLua4(const std::string& includePath="")
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pdns::max
      Src: /src/pdns/pdns/fuzz_packetcache.cc:35,1
    - Dst: PacketCache::canHashPacket
      Src: /src/pdns/pdns/fuzz_packetcache.cc:45,1
    - Dst: std::string::data
      Src: /src/pdns/pdns/fuzz_packetcache.cc:46,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/fuzz_packetcache.cc:46,1
    - Dst: PacketCache::queryMatches
      Src: /src/pdns/pdns/fuzz_packetcache.cc:47,1
    - Dst: PacketCache::canHashPacket
      Src: /src/pdns/pdns/fuzz_packetcache.cc:58,1
    - Dst: std::string::data
      Src: /src/pdns/pdns/fuzz_packetcache.cc:59,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/fuzz_packetcache.cc:59,1
    - Dst: PacketCache::queryMatches
      Src: /src/pdns/pdns/fuzz_packetcache.cc:60,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 2
    argNames:
    - data
    - size
    argTypes:
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 32
    functionDepth: 0
    functionLinenumber: 32
    functionLinenumberEnd: 68
    functionName: LLVMFuzzerTestOneInput
    functionSourceFile: /src/pdns/pdns/fuzz_packetcache.cc
    functionUses: 1
    functionsReached:
    - pdns::max
    - PacketCache::queryMatches
    - PacketCache::canHashPacket
    - std::string::data
    - std::string::size
    linkageType: ''
    returnType: int
    signature: int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: toLogString
      Src: /src/pdns/pdns/dnsname.cc:57,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - os
    - ' d'
    argTypes:
    - std::ostream
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 55
    functionDepth: 0
    functionLinenumber: 55
    functionLinenumberEnd: 58
    functionName: '& operator<<(std::ostream &os, const DNSName& d)'
    functionSourceFile: /src/pdns/pdns/dnsname.cc
    functionUses: 0
    functionsReached:
    - toLogString
    linkageType: ''
    returnType: std::ostream
    signature: std::ostream & operator<<(std::ostream &os, const DNSName& d)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DNSName::appendEscapedLabel
      Src: /src/pdns/pdns/dnsname.cc:68,1
    - Dst: std::range_error
      Src: /src/pdns/pdns/dnsname.cc:69,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - ' msg'
    - buf
    - length
    argTypes:
    - std::string
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 60
    functionDepth: 0
    functionLinenumber: 60
    functionLinenumberEnd: 70
    functionName: DNSName::throwSafeRangeError
    functionSourceFile: /src/pdns/pdns/dnsname.cc
    functionUses: 0
    functionsReached:
    - std::range_error
    - DNSName::appendEscapedLabel
    linkageType: ''
    returnType: void
    signature: void DNSName::throwSafeRangeError(const std::string& msg, const char*
      buf, size_t length)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: std::string_view::data
      Src: /src/pdns/pdns/dnsname.cc:74,1
    - Dst: std::string_view::length
      Src: /src/pdns/pdns/dnsname.cc:75,1
    - Dst: assign
      Src: /src/pdns/pdns/dnsname.cc:78,1
    - Dst: std::memchr
      Src: /src/pdns/pdns/dnsname.cc:80,1
    - Dst: reserve
      Src: /src/pdns/pdns/dnsname.cc:85,1
    - Dst: size
      Src: /src/pdns/pdns/dnsname.cc:87,1
    - Dst: DNSName::throwSafeRangeError
      Src: /src/pdns/pdns/dnsname.cc:89,1
    - Dst: append
      Src: /src/pdns/pdns/dnsname.cc:90,1
    - Dst: append
      Src: /src/pdns/pdns/dnsname.cc:96,1
    - Dst: DNSName::throwSafeRangeError
      Src: /src/pdns/pdns/dnsname.cc:100,1
    - Dst: static_cast<ptrdiff_t>
      Src: /src/pdns/pdns/dnsname.cc:102,1
    - Dst: DNSName::throwSafeRangeError
      Src: /src/pdns/pdns/dnsname.cc:103,1
    - Dst: append
      Src: /src/pdns/pdns/dnsname.cc:107,1
    - Dst: segmentDNSNameRaw
      Src: /src/pdns/pdns/dnsname.cc:110,1
    - Dst: size
      Src: /src/pdns/pdns/dnsname.cc:111,1
    - Dst: DNSName::throwSafeRangeError
      Src: /src/pdns/pdns/dnsname.cc:112,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 32
    argCount: 1
    argNames:
    - sw
    argTypes:
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 72
    functionDepth: 1
    functionLinenumber: 72
    functionLinenumberEnd: 116
    functionName: DNSName::DNSName
    functionSourceFile: /src/pdns/pdns/dnsname.cc
    functionUses: 34
    functionsReached:
    - assign
    - std::string_view::length
    - std::string_view::data
    - append
    - segmentDNSNameRaw
    - static_cast<ptrdiff_t>
    - size
    - reserve
    - std::memchr
    - DNSName::throwSafeRangeError
    linkageType: ''
    returnType: void
    signature: void DNSName::DNSName(const std::string_view sw)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: std::range_error
      Src: /src/pdns/pdns/dnsname.cc:121,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsname.cc:121,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsname.cc:121,1
    - Dst: memchr
      Src: /src/pdns/pdns/dnsname.cc:124,1
    - Dst: reserve
      Src: /src/pdns/pdns/dnsname.cc:125,1
    - Dst: DNSName::packetParser
      Src: /src/pdns/pdns/dnsname.cc:129,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 8
    argNames:
    - pos
    - len
    - offset
    - uncompress
    - qtype
    - qclass
    - consumed
    - minOffset
    argTypes:
    - char*
    - size_t
    - size_t
    - bool
    - uint16_t*
    - uint16_t*
    - unsigned int*
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 130
      start: 118
    functionDepth: 0
    functionLinenumber: 118
    functionLinenumberEnd: 130
    functionName: DNSName::DNSName
    functionSourceFile: /src/pdns/pdns/dnsname.cc
    functionUses: 34
    functionsReached:
    - memchr
    - std::to_string
    - reserve
    - std::range_error
    - DNSName::packetParser
    linkageType: ''
    returnType: void
    signature: void DNSName::DNSName(const char* pos, size_t len, size_t offset, bool
      uncompress, uint16_t* qtype, uint16_t* qclass, unsigned int* consumed, uint16_t
      minOffset)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: std::range_error
      Src: /src/pdns/pdns/dnsname.cc:135,1
    - Dst: std::range_error
      Src: /src/pdns/pdns/dnsname.cc:138,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 7
    argCount: 1
    argNames:
    - length
    argTypes:
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 132
    functionDepth: 0
    functionLinenumber: 132
    functionLinenumberEnd: 140
    functionName: checkLabelLength
    functionSourceFile: /src/pdns/pdns/dnsname.cc
    functionUses: 0
    functionsReached:
    - std::range_error
    linkageType: ''
    returnType: void
    signature: void checkLabelLength(uint8_t length)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: at
      Src: /src/pdns/pdns/dnsname.cc:150,1
    - Dst: std::range_error
      Src: /src/pdns/pdns/dnsname.cc:160,1
    - Dst: std::range_error
      Src: /src/pdns/pdns/dnsname.cc:167,1
    - Dst: checkLabelLength
      Src: /src/pdns/pdns/dnsname.cc:169,1
    - Dst: std::range_error
      Src: /src/pdns/pdns/dnsname.cc:172,1
    - Dst: size
      Src: /src/pdns/pdns/dnsname.cc:174,1
    - Dst: std::range_error
      Src: /src/pdns/pdns/dnsname.cc:175,1
    - Dst: size
      Src: /src/pdns/pdns/dnsname.cc:180,1
    - Dst: size
      Src: /src/pdns/pdns/dnsname.cc:183,1
    - Dst: reserve
      Src: /src/pdns/pdns/dnsname.cc:188,1
    - Dst: resize
      Src: /src/pdns/pdns/dnsname.cc:189,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsname.cc:190,1
    - Dst: at
      Src: /src/pdns/pdns/dnsname.cc:190,1
    - Dst: at
      Src: /src/pdns/pdns/dnsname.cc:190,1
    - Dst: append
      Src: /src/pdns/pdns/dnsname.cc:191,1
    - Dst: static_cast<char>
      Src: /src/pdns/pdns/dnsname.cc:191,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 38
    argCount: 3
    argNames:
    - ' view'
    - pos
    - uncompress
    argTypes:
    - pdns::views::UnsignedCharView
    - size_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 194
      start: 143
    functionDepth: 1
    functionLinenumber: 143
    functionLinenumberEnd: 194
    functionName: DNSName::parsePacketUncompressed
    functionSourceFile: /src/pdns/pdns/dnsname.cc
    functionUses: 0
    functionsReached:
    - memcpy
    - resize
    - append
    - checkLabelLength
    - size
    - reserve
    - std::range_error
    - at
    - static_cast<char>
    linkageType: ''
    returnType: size_t
    signature: size_t DNSName::parsePacketUncompressed(const pdns::views::UnsignedCharView&
      view, size_t pos, bool uncompress)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: std::range_error
      Src: /src/pdns/pdns/dnsname.cc:200,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsname.cc:200,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsname.cc:200,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/dnsname.cc:203,1
    - Dst: std::range_error
      Src: /src/pdns/pdns/dnsname.cc:204,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsname.cc:204,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsname.cc:204,1
    - Dst: DNSName::parsePacketUncompressed
      Src: /src/pdns/pdns/dnsname.cc:209,1
    - Dst: pdns::views::UnsignedCharView::at
      Src: /src/pdns/pdns/dnsname.cc:211,1
    - Dst: pdns::views::UnsignedCharView::size
      Src: /src/pdns/pdns/dnsname.cc:213,1
    - Dst: abort
      Src: /src/pdns/pdns/dnsname.cc:215,1
    - Dst: std::range_error
      Src: /src/pdns/pdns/dnsname.cc:219,1
    - Dst: pdns::views::UnsignedCharView::at
      Src: /src/pdns/pdns/dnsname.cc:223,1
    - Dst: std::range_error
      Src: /src/pdns/pdns/dnsname.cc:226,1
    - Dst: std::range_error
      Src: /src/pdns/pdns/dnsname.cc:230,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsname.cc:230,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsname.cc:230,1
    - Dst: std::range_error
      Src: /src/pdns/pdns/dnsname.cc:234,1
    - Dst: DNSName::packetParser
      Src: /src/pdns/pdns/dnsname.cc:237,1
    - Dst: DNSName::empty
      Src: /src/pdns/pdns/dnsname.cc:242,1
    - Dst: append
      Src: /src/pdns/pdns/dnsname.cc:243,1
    - Dst: static_cast<char>
      Src: /src/pdns/pdns/dnsname.cc:243,1
    - Dst: pdns::views::UnsignedCharView::size
      Src: /src/pdns/pdns/dnsname.cc:251,1
    - Dst: std::range_error
      Src: /src/pdns/pdns/dnsname.cc:252,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsname.cc:252,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsname.cc:252,1
    - Dst: pdns::views::UnsignedCharView::at
      Src: /src/pdns/pdns/dnsname.cc:254,1
    - Dst: pdns::views::UnsignedCharView::at
      Src: /src/pdns/pdns/dnsname.cc:254,1
    - Dst: pdns::views::UnsignedCharView::size
      Src: /src/pdns/pdns/dnsname.cc:259,1
    - Dst: std::range_error
      Src: /src/pdns/pdns/dnsname.cc:260,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsname.cc:260,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsname.cc:260,1
    - Dst: pdns::views::UnsignedCharView::at
      Src: /src/pdns/pdns/dnsname.cc:262,1
    - Dst: pdns::views::UnsignedCharView::at
      Src: /src/pdns/pdns/dnsname.cc:262,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 48
    argCount: 9
    argNames:
    - qpos
    - len
    - offset
    - uncompress
    - qtype
    - qclass
    - consumed
    - depth
    - minOffset
    argTypes:
    - char*
    - size_t
    - size_t
    - bool
    - uint16_t*
    - uint16_t*
    - unsigned int*
    - int
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 264
      start: 197
    functionDepth: 0
    functionLinenumber: 197
    functionLinenumberEnd: 264
    functionName: DNSName::packetParser
    functionSourceFile: /src/pdns/pdns/dnsname.cc
    functionUses: 2
    functionsReached:
    - abort
    - static_cast<size_t>
    - std::to_string
    - append
    - pdns::views::UnsignedCharView::at
    - pdns::views::UnsignedCharView::size
    - std::range_error
    - DNSName::empty
    - DNSName::parsePacketUncompressed
    - DNSName::packetParser
    - static_cast<char>
    linkageType: ''
    returnType: void
    signature: void DNSName::packetParser(const char* qpos, size_t len, size_t offset,
      bool uncompress, uint16_t* qtype, uint16_t* qclass, unsigned int* consumed,
      int depth, uint16_t minOffset)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/dnsname.cc:269,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ' separator'
    - trailing
    argTypes:
    - std::string
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 271
      start: 266
    functionDepth: 0
    functionLinenumber: 266
    functionLinenumberEnd: 271
    functionName: DNSName::toString
    functionSourceFile: /src/pdns/pdns/dnsname.cc
    functionUses: 29
    functionsReached:
    - DNSName::toString
    linkageType: ''
    returnType: std::string
    signature: std::string DNSName::toString(const std::string& separator, const bool
      trailing) const
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: DNSName::empty
      Src: /src/pdns/pdns/dnsname.cc:275,1
    - Dst: std::out_of_range
      Src: /src/pdns/pdns/dnsname.cc:276,1
    - Dst: DNSName::isRoot
      Src: /src/pdns/pdns/dnsname.cc:279,1
    - Dst: capacity
      Src: /src/pdns/pdns/dnsname.cc:284,1
    - Dst: size
      Src: /src/pdns/pdns/dnsname.cc:284,1
    - Dst: size
      Src: /src/pdns/pdns/dnsname.cc:284,1
    - Dst: reserve
      Src: /src/pdns/pdns/dnsname.cc:285,1
    - Dst: size
      Src: /src/pdns/pdns/dnsname.cc:285,1
    - Dst: size
      Src: /src/pdns/pdns/dnsname.cc:285,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsname.cc:290,1
    - Dst: size
      Src: /src/pdns/pdns/dnsname.cc:291,1
    - Dst: DNSName::appendEscapedLabel
      Src: /src/pdns/pdns/dnsname.cc:294,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/dnsname.cc:294,1
    - Dst: resize
      Src: /src/pdns/pdns/dnsname.cc:301,1
    - Dst: size
      Src: /src/pdns/pdns/dnsname.cc:301,1
    - Dst: size
      Src: /src/pdns/pdns/dnsname.cc:301,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 20
    argCount: 3
    argNames:
    - ' output'
    - ' separator'
    - trailing
    argTypes:
    - std::string
    - std::string
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 303
      start: 273
    functionDepth: 1
    functionLinenumber: 273
    functionLinenumberEnd: 303
    functionName: DNSName::toString
    functionSourceFile: /src/pdns/pdns/dnsname.cc
    functionUses: 29
    functionsReached:
    - static_cast<size_t>
    - std::out_of_range
    - resize
    - DNSName::isRoot
    - size
    - reserve
    - capacity
    - DNSName::empty
    - c_str
    - DNSName::appendEscapedLabel
    linkageType: ''
    returnType: void
    signature: void DNSName::toString(std::string& output, const std::string& separator,
      const bool trailing) const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DNSName::empty
      Src: /src/pdns/pdns/dnsname.cc:307,1
    - Dst: DNSName::toStringRootDot
      Src: /src/pdns/pdns/dnsname.cc:311,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 312
      start: 305
    functionDepth: 0
    functionLinenumber: 305
    functionLinenumberEnd: 312
    functionName: DNSName::toLogString
    functionSourceFile: /src/pdns/pdns/dnsname.cc
    functionUses: 1
    functionsReached:
    - DNSName::toStringRootDot
    - DNSName::empty
    linkageType: ''
    returnType: std::string
    signature: std::string DNSName::toLogString() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DNSName::empty
      Src: /src/pdns/pdns/dnsname.cc:316,1
    - Dst: std::out_of_range
      Src: /src/pdns/pdns/dnsname.cc:317,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsname.cc:320,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsname.cc:320,1
    - Dst: length
      Src: /src/pdns/pdns/dnsname.cc:320,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 321
      start: 314
    functionDepth: 0
    functionLinenumber: 314
    functionLinenumberEnd: 321
    functionName: DNSName::toDNSString
    functionSourceFile: /src/pdns/pdns/dnsname.cc
    functionUses: 2
    functionsReached:
    - length
    - std::out_of_range
    - DNSName::empty
    - c_str
    - std::string
    linkageType: ''
    returnType: std::string
    signature: std::string DNSName::toDNSString() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSName::toDNSString
      Src: /src/pdns/pdns/dnsname.cc:325,1
    - Dst: toLowerInPlace
      Src: /src/pdns/pdns/dnsname.cc:326,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 328
      start: 323
    functionDepth: 0
    functionLinenumber: 323
    functionLinenumberEnd: 328
    functionName: DNSName::toDNSStringLC
    functionSourceFile: /src/pdns/pdns/dnsname.cc
    functionUses: 1
    functionsReached:
    - DNSName::toDNSString
    - toLowerInPlace
    linkageType: ''
    returnType: std::string
    signature: std::string DNSName::toDNSStringLC() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: length
      Src: /src/pdns/pdns/dnsname.cc:336,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 337
      start: 335
    functionDepth: 0
    functionLinenumber: 335
    functionLinenumberEnd: 337
    functionName: DNSName::wirelength
    functionSourceFile: /src/pdns/pdns/dnsname.cc
    functionUses: 5
    functionsReached:
    - length
    linkageType: ''
    returnType: size_t
    signature: size_t DNSName::wirelength() const
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: DNSName::empty
      Src: /src/pdns/pdns/dnsname.cc:342,1
    - Dst: DNSName::empty
      Src: /src/pdns/pdns/dnsname.cc:342,1
    - Dst: std::out_of_range
      Src: /src/pdns/pdns/dnsname.cc:343,1
    - Dst: d_storage::size
      Src: /src/pdns/pdns/dnsname.cc:346,1
    - Dst: size
      Src: /src/pdns/pdns/dnsname.cc:346,1
    - Dst: cbegin
      Src: /src/pdns/pdns/dnsname.cc:351,1
    - Dst: cend
      Src: /src/pdns/pdns/dnsname.cc:351,1
    - Dst: std::distance
      Src: /src/pdns/pdns/dnsname.cc:352,1
    - Dst: cend
      Src: /src/pdns/pdns/dnsname.cc:352,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/dnsname.cc:353,1
    - Dst: d_storage::size
      Src: /src/pdns/pdns/dnsname.cc:353,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/dnsname.cc:356,1
    - Dst: d_storage::size
      Src: /src/pdns/pdns/dnsname.cc:356,1
    - Dst: d_storage::cbegin
      Src: /src/pdns/pdns/dnsname.cc:357,1
    - Dst: cend
      Src: /src/pdns/pdns/dnsname.cc:358,1
    - Dst: dns_tolower
      Src: /src/pdns/pdns/dnsname.cc:359,1
    - Dst: dns_tolower
      Src: /src/pdns/pdns/dnsname.cc:359,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnsname.cc:364,1
    - Dst: std::out_of_range
      Src: /src/pdns/pdns/dnsname.cc:365,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 23
    argCount: 1
    argNames:
    - ' parent'
    argTypes:
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 369
      start: 340
    functionDepth: 1
    functionLinenumber: 340
    functionLinenumberEnd: 369
    functionName: DNSName::isPartOf
    functionSourceFile: /src/pdns/pdns/dnsname.cc
    functionUses: 9
    functionsReached:
    - d_storage::size
    - std::out_of_range
    - std::distance
    - static_cast<size_t>
    - dns_tolower
    - size
    - static_cast<uint8_t>
    - cbegin
    - DNSName::empty
    - cend
    - d_storage::cbegin
    linkageType: ''
    returnType: bool
    signature: bool DNSName::isPartOf(const DNSName& parent) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSName::makeUsRelative
      Src: /src/pdns/pdns/dnsname.cc:374,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ' zone'
    argTypes:
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 376
      start: 371
    functionDepth: 0
    functionLinenumber: 371
    functionLinenumberEnd: 376
    functionName: DNSName::makeRelative
    functionSourceFile: /src/pdns/pdns/dnsname.cc
    functionUses: 3
    functionsReached:
    - DNSName::makeUsRelative
    linkageType: ''
    returnType: DNSName
    signature: DNSName DNSName::makeRelative(const DNSName& zone) const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DNSName::isPartOf
      Src: /src/pdns/pdns/dnsname.cc:380,1
    - Dst: erase
      Src: /src/pdns/pdns/dnsname.cc:381,1
    - Dst: size
      Src: /src/pdns/pdns/dnsname.cc:381,1
    - Dst: d_storage::size
      Src: /src/pdns/pdns/dnsname.cc:381,1
    - Dst: append
      Src: /src/pdns/pdns/dnsname.cc:382,1
    - Dst: static_cast<char>
      Src: /src/pdns/pdns/dnsname.cc:382,1
    - Dst: DNSName::clear
      Src: /src/pdns/pdns/dnsname.cc:385,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - ' zone'
    argTypes:
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 387
      start: 378
    functionDepth: 0
    functionLinenumber: 378
    functionLinenumberEnd: 387
    functionName: DNSName::makeUsRelative
    functionSourceFile: /src/pdns/pdns/dnsname.cc
    functionUses: 1
    functionsReached:
    - d_storage::size
    - append
    - DNSName::clear
    - size
    - DNSName::isPartOf
    - erase
    - static_cast<char>
    linkageType: ''
    returnType: void
    signature: void DNSName::makeUsRelative(const DNSName& zone)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: DNSName::empty
      Src: /src/pdns/pdns/dnsname.cc:391,1
    - Dst: DNSName::empty
      Src: /src/pdns/pdns/dnsname.cc:391,1
    - Dst: DNSName::DNSName
      Src: /src/pdns/pdns/dnsname.cc:392,1
    - Dst: DNSName::getRawLabels
      Src: /src/pdns/pdns/dnsname.cc:397,1
    - Dst: DNSName::getRawLabels
      Src: /src/pdns/pdns/dnsname.cc:398,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/dnsname.cc:400,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/dnsname.cc:400,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsname.cc:401,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/dnsname.cc:401,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsname.cc:402,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/dnsname.cc:402,1
    - Dst: pdns_iequals
      Src: /src/pdns/pdns/dnsname.cc:404,1
    - Dst: DNSName::prependRawLabel
      Src: /src/pdns/pdns/dnsname.cc:408,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 11
    argCount: 1
    argNames:
    - ' other'
    argTypes:
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 412
      start: 389
    functionDepth: 0
    functionLinenumber: 389
    functionLinenumberEnd: 412
    functionName: DNSName::getCommonLabels
    functionSourceFile: /src/pdns/pdns/dnsname.cc
    functionUses: 1
    functionsReached:
    - std::vector::size
    - pdns_iequals
    - DNSName::prependRawLabel
    - DNSName::getRawLabels
    - std::vector::at
    - DNSName::empty
    - DNSName::DNSName
    linkageType: ''
    returnType: DNSName
    signature: DNSName DNSName::getCommonLabels(const DNSName& other) const
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: DNSName::DNSName
      Src: /src/pdns/pdns/dnsname.cc:416,1
    - Dst: DNSName::isRoot
      Src: /src/pdns/pdns/dnsname.cc:418,1
    - Dst: DNSName::empty
      Src: /src/pdns/pdns/dnsname.cc:422,1
    - Dst: DNSName::getRawLabels
      Src: /src/pdns/pdns/dnsname.cc:423,1
    - Dst: vector::empty
      Src: /src/pdns/pdns/dnsname.cc:424,1
    - Dst: DNSName::appendRawLabel
      Src: /src/pdns/pdns/dnsname.cc:425,1
    - Dst: vector::back
      Src: /src/pdns/pdns/dnsname.cc:425,1
    - Dst: vector::pop_back
      Src: /src/pdns/pdns/dnsname.cc:426,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 430
      start: 414
    functionDepth: 0
    functionLinenumber: 414
    functionLinenumberEnd: 430
    functionName: DNSName::labelReverse
    functionSourceFile: /src/pdns/pdns/dnsname.cc
    functionUses: 1
    functionsReached:
    - vector::pop_back
    - vector::back
    - DNSName::isRoot
    - vector::empty
    - DNSName::getRawLabels
    - DNSName::appendRawLabel
    - DNSName::empty
    - DNSName::DNSName
    linkageType: ''
    returnType: DNSName
    signature: DNSName DNSName::labelReverse() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSName::appendRawLabel
      Src: /src/pdns/pdns/dnsname.cc:434,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsname.cc:434,1
    - Dst: length
      Src: /src/pdns/pdns/dnsname.cc:434,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' label'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 435
      start: 432
    functionDepth: 0
    functionLinenumber: 432
    functionLinenumberEnd: 435
    functionName: DNSName::appendRawLabel
    functionSourceFile: /src/pdns/pdns/dnsname.cc
    functionUses: 9
    functionsReached:
    - c_str
    - length
    - DNSName::appendRawLabel
    linkageType: ''
    returnType: void
    signature: void DNSName::appendRawLabel(const std::string& label)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: checkLabelLength
      Src: /src/pdns/pdns/dnsname.cc:439,1
    - Dst: size
      Src: /src/pdns/pdns/dnsname.cc:442,1
    - Dst: std::range_error
      Src: /src/pdns/pdns/dnsname.cc:443,1
    - Dst: DNSName::empty
      Src: /src/pdns/pdns/dnsname.cc:446,1
    - Dst: reserve
      Src: /src/pdns/pdns/dnsname.cc:447,1
    - Dst: append
      Src: /src/pdns/pdns/dnsname.cc:448,1
    - Dst: static_cast<char>
      Src: /src/pdns/pdns/dnsname.cc:448,1
    - Dst: reserve
      Src: /src/pdns/pdns/dnsname.cc:451,1
    - Dst: size
      Src: /src/pdns/pdns/dnsname.cc:451,1
    - Dst: rbegin
      Src: /src/pdns/pdns/dnsname.cc:452,1
    - Dst: static_cast<char>
      Src: /src/pdns/pdns/dnsname.cc:452,1
    - Dst: append
      Src: /src/pdns/pdns/dnsname.cc:454,1
    - Dst: append
      Src: /src/pdns/pdns/dnsname.cc:455,1
    - Dst: static_cast<char>
      Src: /src/pdns/pdns/dnsname.cc:455,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 2
    argNames:
    - start
    - length
    argTypes:
    - char*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 456
      start: 437
    functionDepth: 0
    functionLinenumber: 437
    functionLinenumberEnd: 456
    functionName: DNSName::appendRawLabel
    functionSourceFile: /src/pdns/pdns/dnsname.cc
    functionUses: 9
    functionsReached:
    - rbegin
    - append
    - checkLabelLength
    - size
    - reserve
    - std::range_error
    - DNSName::empty
    - static_cast<char>
    linkageType: ''
    returnType: void
    signature: void DNSName::appendRawLabel(const char* start, unsigned int length)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: checkLabelLength
      Src: /src/pdns/pdns/dnsname.cc:460,1
    - Dst: size
      Src: /src/pdns/pdns/dnsname.cc:460,1
    - Dst: size
      Src: /src/pdns/pdns/dnsname.cc:463,1
    - Dst: size
      Src: /src/pdns/pdns/dnsname.cc:463,1
    - Dst: std::range_error
      Src: /src/pdns/pdns/dnsname.cc:464,1
    - Dst: DNSName::empty
      Src: /src/pdns/pdns/dnsname.cc:467,1
    - Dst: reserve
      Src: /src/pdns/pdns/dnsname.cc:468,1
    - Dst: size
      Src: /src/pdns/pdns/dnsname.cc:468,1
    - Dst: append
      Src: /src/pdns/pdns/dnsname.cc:469,1
    - Dst: static_cast<char>
      Src: /src/pdns/pdns/dnsname.cc:469,1
    - Dst: reserve
      Src: /src/pdns/pdns/dnsname.cc:472,1
    - Dst: size
      Src: /src/pdns/pdns/dnsname.cc:472,1
    - Dst: size
      Src: /src/pdns/pdns/dnsname.cc:472,1
    - Dst: static_cast<char>
      Src: /src/pdns/pdns/dnsname.cc:475,1
    - Dst: size
      Src: /src/pdns/pdns/dnsname.cc:475,1
    - Dst: string_t::append
      Src: /src/pdns/pdns/dnsname.cc:476,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsname.cc:476,1
    - Dst: size
      Src: /src/pdns/pdns/dnsname.cc:476,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 1
    argNames:
    - ' label'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 478
      start: 458
    functionDepth: 0
    functionLinenumber: 458
    functionLinenumberEnd: 478
    functionName: DNSName::prependRawLabel
    functionSourceFile: /src/pdns/pdns/dnsname.cc
    functionUses: 12
    functionsReached:
    - append
    - checkLabelLength
    - size
    - reserve
    - std::range_error
    - DNSName::empty
    - string_t::append
    - c_str
    - static_cast<char>
    linkageType: ''
    returnType: void
    signature: void DNSName::prependRawLabel(const std::string& label)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: DNSName::getRawLabels
      Src: /src/pdns/pdns/dnsname.cc:484,1
    - Dst: DNSName::getRawLabels
      Src: /src/pdns/pdns/dnsname.cc:485,1
    - Dst: auto::rbegin
      Src: /src/pdns/pdns/dnsname.cc:486,1
    - Dst: auto::rend
      Src: /src/pdns/pdns/dnsname.cc:487,1
    - Dst: auto::rbegin
      Src: /src/pdns/pdns/dnsname.cc:488,1
    - Dst: auto::rend
      Src: /src/pdns/pdns/dnsname.cc:489,1
    - Dst: pdns_ilexicographical_compare_three_way
      Src: /src/pdns/pdns/dnsname.cc:491,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 506
      start: 480
    functionDepth: 0
    functionLinenumber: 480
    functionLinenumberEnd: 506
    functionName: DNSName::slowCanonCompare_three_way
    functionSourceFile: /src/pdns/pdns/dnsname.cc
    functionUses: 0
    functionsReached:
    - pdns_ilexicographical_compare_three_way
    - auto::rend
    - DNSName::getRawLabels
    - auto::rbegin
    linkageType: ''
    returnType: int
    signature: int DNSName::slowCanonCompare_three_way(const DNSName& rhs) const
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: c_str
      Src: /src/pdns/pdns/dnsname.cc:524,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsname.cc:524,1
    - Dst: size
      Src: /src/pdns/pdns/dnsname.cc:524,1
    - Dst: std::array::max_size
      Src: /src/pdns/pdns/dnsname.cc:524,1
    - Dst: std::array::at
      Src: /src/pdns/pdns/dnsname.cc:525,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsname.cc:525,1
    - Dst: d_storage::c_str
      Src: /src/pdns/pdns/dnsname.cc:527,1
    - Dst: d_storage::c_str
      Src: /src/pdns/pdns/dnsname.cc:527,1
    - Dst: d_storage::size
      Src: /src/pdns/pdns/dnsname.cc:527,1
    - Dst: std::array::max_size
      Src: /src/pdns/pdns/dnsname.cc:527,1
    - Dst: std::array::at
      Src: /src/pdns/pdns/dnsname.cc:528,1
    - Dst: d_storage::c_str
      Src: /src/pdns/pdns/dnsname.cc:528,1
    - Dst: std::array::max_size
      Src: /src/pdns/pdns/dnsname.cc:532,1
    - Dst: std::array::max_size
      Src: /src/pdns/pdns/dnsname.cc:532,1
    - Dst: DNSName::slowCanonCompare_three_way
      Src: /src/pdns/pdns/dnsname.cc:533,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsname.cc:547,1
    - Dst: std::array::at
      Src: /src/pdns/pdns/dnsname.cc:547,1
    - Dst: d_storage::c_str
      Src: /src/pdns/pdns/dnsname.cc:548,1
    - Dst: std::array::at
      Src: /src/pdns/pdns/dnsname.cc:548,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsname.cc:549,1
    - Dst: std::array::at
      Src: /src/pdns/pdns/dnsname.cc:549,1
    - Dst: d_storage::c_str
      Src: /src/pdns/pdns/dnsname.cc:550,1
    - Dst: std::array::at
      Src: /src/pdns/pdns/dnsname.cc:550,1
    - Dst: std::isdigit
      Src: /src/pdns/pdns/dnsname.cc:563,1
    - Dst: static_cast<unsigned char>
      Src: /src/pdns/pdns/dnsname.cc:563,1
    - Dst: std::isdigit
      Src: /src/pdns/pdns/dnsname.cc:570,1
    - Dst: static_cast<unsigned char>
      Src: /src/pdns/pdns/dnsname.cc:570,1
    - Dst: pdns_ilexicographical_compare_three_way
      Src: /src/pdns/pdns/dnsname.cc:582,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 42
    argCount: 2
    argNames:
    - ' rhs'
    - pretty
    argTypes:
    - DNSName
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 587
      start: 508
    functionDepth: 0
    functionLinenumber: 508
    functionLinenumberEnd: 587
    functionName: DNSName::canonCompare_three_way
    functionSourceFile: /src/pdns/pdns/dnsname.cc
    functionUses: 3
    functionsReached:
    - DNSName::slowCanonCompare_three_way
    - d_storage::size
    - pdns_ilexicographical_compare_three_way
    - d_storage::c_str
    - size
    - std::array::max_size
    - std::isdigit
    - c_str
    - std::array::at
    - static_cast<unsigned char>
    linkageType: ''
    returnType: int
    signature: int DNSName::canonCompare_three_way(const DNSName& rhs, bool pretty)
      const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vector::reserve
      Src: /src/pdns/pdns/dnsname.cc:593,1
    - Dst: DNSName::countLabels
      Src: /src/pdns/pdns/dnsname.cc:593,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsname.cc:595,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsname.cc:595,1
    - Dst: size
      Src: /src/pdns/pdns/dnsname.cc:595,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/dnsname.cc:596,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 599
      start: 590
    functionDepth: 0
    functionLinenumber: 590
    functionLinenumberEnd: 599
    functionName: DNSName::getRawLabels
    functionSourceFile: /src/pdns/pdns/dnsname.cc
    functionUses: 6
    functionsReached:
    - vector::push_back
    - c_str
    - DNSName::countLabels
    - size
    - vector::reserve
    linkageType: ''
    returnType: vector<std::string>
    signature: vector<std::string> DNSName::getRawLabels() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: c_str
      Src: /src/pdns/pdns/dnsname.cc:604,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsname.cc:604,1
    - Dst: size
      Src: /src/pdns/pdns/dnsname.cc:604,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsname.cc:606,1
    - Dst: std::out_of_range
      Src: /src/pdns/pdns/dnsname.cc:610,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsname.cc:610,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsname.cc:610,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 7
    argCount: 1
    argNames:
    - pos
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 611
      start: 601
    functionDepth: 0
    functionLinenumber: 601
    functionLinenumberEnd: 611
    functionName: DNSName::getRawLabel
    functionSourceFile: /src/pdns/pdns/dnsname.cc
    functionUses: 1
    functionsReached:
    - std::out_of_range
    - std::to_string
    - size
    - c_str
    - std::string
    linkageType: ''
    returnType: std::string
    signature: std::string DNSName::getRawLabel(unsigned int pos) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSName::trimToLabels
      Src: /src/pdns/pdns/dnsname.cc:616,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 618
      start: 613
    functionDepth: 0
    functionLinenumber: 613
    functionLinenumberEnd: 618
    functionName: DNSName::getLastLabel
    functionSourceFile: /src/pdns/pdns/dnsname.cc
    functionUses: 1
    functionsReached:
    - DNSName::trimToLabels
    linkageType: ''
    returnType: DNSName
    signature: DNSName DNSName::getLastLabel() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DNSName::empty
      Src: /src/pdns/pdns/dnsname.cc:622,1
    - Dst: erase
      Src: /src/pdns/pdns/dnsname.cc:625,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 627
      start: 620
    functionDepth: 0
    functionLinenumber: 620
    functionLinenumberEnd: 627
    functionName: DNSName::chopOff
    functionSourceFile: /src/pdns/pdns/dnsname.cc
    functionUses: 10
    functionsReached:
    - erase
    - DNSName::empty
    linkageType: ''
    returnType: bool
    signature: bool DNSName::chopOff()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsname.cc:631,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsname.cc:634,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 636
      start: 629
    functionDepth: 0
    functionLinenumber: 629
    functionLinenumberEnd: 636
    functionName: DNSName::isWildcard
    functionSourceFile: /src/pdns/pdns/dnsname.cc
    functionUses: 2
    functionsReached:
    - size
    - begin
    linkageType: ''
    returnType: bool
    signature: bool DNSName::isWildcard() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Regex
      Src: /src/pdns/pdns/dnsname.cc:649,1
    - Dst: Regex::match
      Src: /src/pdns/pdns/dnsname.cc:650,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/dnsname.cc:650,1
    - Dst: Regex
      Src: /src/pdns/pdns/dnsname.cc:652,1
    - Dst: Regex::match
      Src: /src/pdns/pdns/dnsname.cc:653,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/dnsname.cc:653,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - allowUnderscore
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 654
      start: 646
    functionDepth: 0
    functionLinenumber: 646
    functionLinenumberEnd: 654
    functionName: DNSName::isHostname
    functionSourceFile: /src/pdns/pdns/dnsname.cc
    functionUses: 1
    functionsReached:
    - Regex
    - Regex::match
    - DNSName::toString
    linkageType: ''
    returnType: bool
    signature: bool DNSName::isHostname(bool allowUnderscore) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/dnsname.cc:659,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsname.cc:659,1
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/dnsname.cc:660,1
    - Dst: size
      Src: /src/pdns/pdns/dnsname.cc:660,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 667
      start: 656
    functionDepth: 0
    functionLinenumber: 656
    functionLinenumberEnd: 667
    functionName: DNSName::countLabels
    functionSourceFile: /src/pdns/pdns/dnsname.cc
    functionUses: 8
    functionsReached:
    - c_str
    - reinterpret_cast<const unsigned char*>
    - size
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int DNSName::countLabels() const
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: DNSName::countLabels
      Src: /src/pdns/pdns/dnsname.cc:672,1
    - Dst: DNSName::chopOff
      Src: /src/pdns/pdns/dnsname.cc:673,1
    - Dst: DNSName::empty
      Src: /src/pdns/pdns/dnsname.cc:679,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - to
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 683
      start: 669
    functionDepth: 0
    functionLinenumber: 669
    functionLinenumberEnd: 683
    functionName: DNSName::trimToLabels
    functionSourceFile: /src/pdns/pdns/dnsname.cc
    functionUses: 4
    functionsReached:
    - DNSName::countLabels
    - DNSName::empty
    - DNSName::chopOff
    linkageType: ''
    returnType: void
    signature: void DNSName::trimToLabels(unsigned int to)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash
      Src: /src/pdns/pdns/dnsname.cc:687,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' d'
    argTypes:
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 688
      start: 685
    functionDepth: 1
    functionLinenumber: 685
    functionLinenumberEnd: 688
    functionName: hash_value
    functionSourceFile: /src/pdns/pdns/dnsname.cc
    functionUses: 0
    functionsReached:
    - hash
    linkageType: ''
    returnType: size_t
    signature: size_t hash_value(DNSName const& d)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnsname.cc:695,1
    - Dst: append
      Src: /src/pdns/pdns/dnsname.cc:703,1
    - Dst: static_cast<char>
      Src: /src/pdns/pdns/dnsname.cc:703,1
    - Dst: snprintf
      Src: /src/pdns/pdns/dnsname.cc:707,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/dnsname.cc:708,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsname.cc:709,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsname.cc:709,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsname.cc:709,1
    - Dst: append
      Src: /src/pdns/pdns/dnsname.cc:711,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 19
    argCount: 3
    argNames:
    - ' appendTo'
    - orig
    - len
    argTypes:
    - std::string
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 716
      start: 690
    functionDepth: 0
    functionLinenumber: 690
    functionLinenumberEnd: 716
    functionName: DNSName::appendEscapedLabel
    functionSourceFile: /src/pdns/pdns/dnsname.cc
    functionUses: 2
    functionsReached:
    - static_cast<size_t>
    - snprintf
    - std::to_string
    - std::runtime_error
    - append
    - static_cast<uint8_t>
    - std::string
    - static_cast<char>
    linkageType: ''
    returnType: void
    signature: void DNSName::appendEscapedLabel(std::string& appendTo, const char*
      orig, size_t len)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: at
      Src: /src/pdns/pdns/dnsname.cc:722,1
    - Dst: at
      Src: /src/pdns/pdns/dnsname.cc:726,1
    - Dst: at
      Src: /src/pdns/pdns/dnsname.cc:735,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 739
      start: 718
    functionDepth: 0
    functionLinenumber: 718
    functionLinenumberEnd: 739
    functionName: DNSName::has8bitBytes
    functionSourceFile: /src/pdns/pdns/dnsname.cc
    functionUses: 0
    functionsReached:
    - at
    linkageType: ''
    returnType: bool
    signature: bool DNSName::has8bitBytes() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsname.cc:815,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnsname.cc:816,1
    - Dst: at
      Src: /src/pdns/pdns/dnsname.cc:816,1
    - Dst: at
      Src: /src/pdns/pdns/dnsname.cc:820,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - ' storage'
    argTypes:
    - DNSName::string_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 824
      start: 812
    functionDepth: 0
    functionLinenumber: 812
    functionLinenumberEnd: 824
    functionName: DNSName::RawLabelsVisitor::RawLabelsVisitor(const DNSName::string_t&
      storage)
    functionSourceFile: /src/pdns/pdns/dnsname.cc
    functionUses: 0
    functionsReached:
    - at
    - size
    - static_cast<uint8_t>
    linkageType: ''
    returnType: void
    signature: void DNSName::RawLabelsVisitor::RawLabelsVisitor(const DNSName::string_t&
      storage)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSName::getRawLabelsVisitor
      Src: /src/pdns/pdns/dnsname.cc:828,1
    - Dst: getStorage
      Src: /src/pdns/pdns/dnsname.cc:828,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 829
      start: 826
    functionDepth: 0
    functionLinenumber: 826
    functionLinenumberEnd: 829
    functionName: DNSName::getRawLabelsVisitor
    functionSourceFile: /src/pdns/pdns/dnsname.cc
    functionUses: 2
    functionsReached:
    - DNSName::getRawLabelsVisitor
    - getStorage
    linkageType: ''
    returnType: DNSName::RawLabelsVisitor
    signature: DNSName::RawLabelsVisitor DNSName::getRawLabelsVisitor() const
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: std::out_of_range
      Src: /src/pdns/pdns/dnsname.cc:834,1
    - Dst: at
      Src: /src/pdns/pdns/dnsname.cc:836,1
    - Dst: std::string_view
      Src: /src/pdns/pdns/dnsname.cc:838,1
    - Dst: std::string_view
      Src: /src/pdns/pdns/dnsname.cc:840,1
    - Dst: at
      Src: /src/pdns/pdns/dnsname.cc:840,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 841
      start: 831
    functionDepth: 0
    functionLinenumber: 831
    functionLinenumberEnd: 841
    functionName: DNSName::RawLabelsVisitor::front() const
    functionSourceFile: /src/pdns/pdns/dnsname.cc
    functionUses: 0
    functionsReached:
    - std::string_view
    - std::out_of_range
    - at
    linkageType: ''
    returnType: std::string_view
    signature: std::string_view DNSName::RawLabelsVisitor::front() const
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: std::out_of_range
      Src: /src/pdns/pdns/dnsname.cc:846,1
    - Dst: at
      Src: /src/pdns/pdns/dnsname.cc:848,1
    - Dst: at
      Src: /src/pdns/pdns/dnsname.cc:849,1
    - Dst: std::string_view
      Src: /src/pdns/pdns/dnsname.cc:851,1
    - Dst: std::string_view
      Src: /src/pdns/pdns/dnsname.cc:853,1
    - Dst: at
      Src: /src/pdns/pdns/dnsname.cc:853,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 854
      start: 843
    functionDepth: 0
    functionLinenumber: 843
    functionLinenumberEnd: 854
    functionName: DNSName::RawLabelsVisitor::back() const
    functionSourceFile: /src/pdns/pdns/dnsname.cc
    functionUses: 0
    functionsReached:
    - std::string_view
    - std::out_of_range
    - at
    linkageType: ''
    returnType: std::string_view
    signature: std::string_view DNSName::RawLabelsVisitor::back() const
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 863
      start: 856
    functionDepth: 0
    functionLinenumber: 856
    functionLinenumberEnd: 863
    functionName: DNSName::RawLabelsVisitor::pop_back()
    functionSourceFile: /src/pdns/pdns/dnsname.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool DNSName::RawLabelsVisitor::pop_back()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 868
      start: 865
    functionDepth: 0
    functionLinenumber: 865
    functionLinenumberEnd: 868
    functionName: DNSName::RawLabelsVisitor::empty() const
    functionSourceFile: /src/pdns/pdns/dnsname.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool DNSName::RawLabelsVisitor::empty() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DNSName::empty
      Src: /src/pdns/pdns/dnsname.cc:872,1
    - Dst: DNSName::empty
      Src: /src/pdns/pdns/dnsname.cc:872,1
    - Dst: size
      Src: /src/pdns/pdns/dnsname.cc:872,1
    - Dst: size
      Src: /src/pdns/pdns/dnsname.cc:872,1
    - Dst: pdns_ilexicographical_compare_three_way
      Src: /src/pdns/pdns/dnsname.cc:876,1
    - Dst: std::string_view
      Src: /src/pdns/pdns/dnsname.cc:876,1
    - Dst: data
      Src: /src/pdns/pdns/dnsname.cc:876,1
    - Dst: size
      Src: /src/pdns/pdns/dnsname.cc:876,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - ' wire_uncompressed'
    argTypes:
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 877
      start: 870
    functionDepth: 0
    functionLinenumber: 870
    functionLinenumberEnd: 877
    functionName: DNSName::matchesUncompressedName
    functionSourceFile: /src/pdns/pdns/dnsname.cc
    functionUses: 1
    functionsReached:
    - std::string_view
    - pdns_ilexicographical_compare_three_way
    - size
    - DNSName::empty
    - data
    linkageType: ''
    returnType: bool
    signature: bool DNSName::matchesUncompressedName(const std::string_view& wire_uncompressed)
      const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: toLogString
      Src: /src/pdns/pdns/dnsname.cc:882,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ostr
    - ' zone'
    argTypes:
    - std::ostream
    - ZoneName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 883
      start: 880
    functionDepth: 0
    functionLinenumber: 880
    functionLinenumberEnd: 883
    functionName: '& operator<<(std::ostream &ostr, const ZoneName& zone)'
    functionSourceFile: /src/pdns/pdns/dnsname.cc
    functionUses: 0
    functionsReached:
    - toLogString
    linkageType: ''
    returnType: std::ostream
    signature: std::ostream & operator<<(std::ostream &ostr, const ZoneName& zone)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash
      Src: /src/pdns/pdns/dnsname.cc:887,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' zone'
    argTypes:
    - ZoneName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 888
      start: 885
    functionDepth: 1
    functionLinenumber: 885
    functionLinenumberEnd: 888
    functionName: hash_value
    functionSourceFile: /src/pdns/pdns/dnsname.cc
    functionUses: 0
    functionsReached:
    - hash
    linkageType: ''
    returnType: size_t
    signature: size_t hash_value(ZoneName const& zone)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSName::isPartOf
      Src: /src/pdns/pdns/dnsname.cc:895,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - ZoneName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 896
      start: 893
    functionDepth: 0
    functionLinenumber: 893
    functionLinenumberEnd: 896
    functionName: DNSName::isPartOf
    functionSourceFile: /src/pdns/pdns/dnsname.cc
    functionUses: 11
    functionsReached:
    - DNSName::isPartOf
    linkageType: ''
    returnType: bool
    signature: bool DNSName::isPartOf(const ZoneName& rhs) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSName::makeRelative
      Src: /src/pdns/pdns/dnsname.cc:899,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' zone'
    argTypes:
    - ZoneName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 900
      start: 897
    functionDepth: 0
    functionLinenumber: 897
    functionLinenumberEnd: 900
    functionName: DNSName::makeRelative
    functionSourceFile: /src/pdns/pdns/dnsname.cc
    functionUses: 4
    functionsReached:
    - DNSName::makeRelative
    linkageType: ''
    returnType: DNSName
    signature: DNSName DNSName::makeRelative(const ZoneName& zone) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSName::makeUsRelative
      Src: /src/pdns/pdns/dnsname.cc:903,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' zone'
    argTypes:
    - ZoneName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 904
      start: 901
    functionDepth: 0
    functionLinenumber: 901
    functionLinenumberEnd: 904
    functionName: DNSName::makeUsRelative
    functionSourceFile: /src/pdns/pdns/dnsname.cc
    functionUses: 2
    functionsReached:
    - DNSName::makeUsRelative
    linkageType: ''
    returnType: void
    signature: void DNSName::makeUsRelative(const ZoneName& zone)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: std::string_view::find
      Src: /src/pdns/pdns/dnsname.cc:912,1
    - Dst: std::string_view::length
      Src: /src/pdns/pdns/dnsname.cc:914,1
    - Dst: std::string_view::at
      Src: /src/pdns/pdns/dnsname.cc:917,1
    - Dst: std::string_view::at
      Src: /src/pdns/pdns/dnsname.cc:923,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 16
    argCount: 1
    argNames:
    - name
    argTypes:
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 932
      start: 906
    functionDepth: 0
    functionLinenumber: 906
    functionLinenumberEnd: 932
    functionName: ZoneName::findVariantSeparator
    functionSourceFile: /src/pdns/pdns/dnsname.cc
    functionUses: 1
    functionsReached:
    - std::string_view::at
    - std::string_view::length
    - std::string_view::find
    linkageType: ''
    returnType: std::string_view::size_type
    signature: std::string_view::size_type ZoneName::findVariantSeparator(std::string_view
      name)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ZoneName::findVariantSeparator
      Src: /src/pdns/pdns/dnsname.cc:936,1
    - Dst: ZoneName::setVariant
      Src: /src/pdns/pdns/dnsname.cc:937,1
    - Dst: std::string_view::substr
      Src: /src/pdns/pdns/dnsname.cc:937,1
    - Dst: std::string_view::substr
      Src: /src/pdns/pdns/dnsname.cc:938,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsname.cc:940,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - name
    argTypes:
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 941
      start: 934
    functionDepth: 0
    functionLinenumber: 934
    functionLinenumberEnd: 941
    functionName: ZoneName::ZoneName
    functionSourceFile: /src/pdns/pdns/dnsname.cc
    functionUses: 6
    functionsReached:
    - ZoneName::setVariant
    - ZoneName::findVariantSeparator
    - DNSName
    - std::string_view::substr
    linkageType: ''
    returnType: void
    signature: void ZoneName::ZoneName(std::string_view name)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ZoneName::setVariant
      Src: /src/pdns/pdns/dnsname.cc:946,1
    - Dst: std::string_view::substr
      Src: /src/pdns/pdns/dnsname.cc:946,1
    - Dst: std::string_view::substr
      Src: /src/pdns/pdns/dnsname.cc:947,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsname.cc:949,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - name
    - sep
    argTypes:
    - std::string_view
    - std::string_view::size_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 950
      start: 943
    functionDepth: 0
    functionLinenumber: 943
    functionLinenumberEnd: 950
    functionName: ZoneName::ZoneName
    functionSourceFile: /src/pdns/pdns/dnsname.cc
    functionUses: 6
    functionsReached:
    - ZoneName::setVariant
    - std::string_view::substr
    - DNSName
    linkageType: ''
    returnType: void
    signature: void ZoneName::ZoneName(std::string_view name, std::string_view::size_type
      sep)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::string_view::find_first_not_of
      Src: /src/pdns/pdns/dnsname.cc:954,1
    - Dst: std::out_of_range
      Src: /src/pdns/pdns/dnsname.cc:955,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - variant
    argTypes:
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 958
      start: 952
    functionDepth: 0
    functionLinenumber: 952
    functionLinenumberEnd: 958
    functionName: ZoneName::setVariant
    functionSourceFile: /src/pdns/pdns/dnsname.cc
    functionUses: 2
    functionsReached:
    - std::out_of_range
    - std::string_view::find_first_not_of
    linkageType: ''
    returnType: void
    signature: void ZoneName::setVariant(std::string_view variant)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ZoneName::toLogString
      Src: /src/pdns/pdns/dnsname.cc:962,1
    - Dst: ZoneName::empty
      Src: /src/pdns/pdns/dnsname.cc:963,1
    - Dst: std::string::push_back
      Src: /src/pdns/pdns/dnsname.cc:966,1
    - Dst: isRoot
      Src: /src/pdns/pdns/dnsname.cc:967,1
    - Dst: std::string::push_back
      Src: /src/pdns/pdns/dnsname.cc:968,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 973
      start: 960
    functionDepth: 0
    functionLinenumber: 960
    functionLinenumberEnd: 973
    functionName: ZoneName::toLogString
    functionSourceFile: /src/pdns/pdns/dnsname.cc
    functionUses: 5
    functionsReached:
    - std::string::push_back
    - isRoot
    - ZoneName::empty
    - ZoneName::toLogString
    linkageType: ''
    returnType: std::string
    signature: std::string ZoneName::toLogString() const
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ZoneName::toString
      Src: /src/pdns/pdns/dnsname.cc:977,1
    - Dst: ZoneName::empty
      Src: /src/pdns/pdns/dnsname.cc:978,1
    - Dst: std::string::push_back
      Src: /src/pdns/pdns/dnsname.cc:980,1
    - Dst: std::string::push_back
      Src: /src/pdns/pdns/dnsname.cc:982,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - ' separator'
    - trailing
    argTypes:
    - std::string
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 986
      start: 975
    functionDepth: 0
    functionLinenumber: 975
    functionLinenumberEnd: 986
    functionName: ZoneName::toString
    functionSourceFile: /src/pdns/pdns/dnsname.cc
    functionUses: 9
    functionsReached:
    - std::string::push_back
    - ZoneName::toString
    - ZoneName::empty
    linkageType: ''
    returnType: std::string
    signature: std::string ZoneName::toString(const std::string& separator, const
      bool trailing) const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ZoneName::toStringNoDot
      Src: /src/pdns/pdns/dnsname.cc:990,1
    - Dst: ZoneName::empty
      Src: /src/pdns/pdns/dnsname.cc:991,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 996
      start: 988
    functionDepth: 0
    functionLinenumber: 988
    functionLinenumberEnd: 996
    functionName: ZoneName::toStringNoDot
    functionSourceFile: /src/pdns/pdns/dnsname.cc
    functionUses: 1
    functionsReached:
    - ZoneName::empty
    - ZoneName::toStringNoDot
    linkageType: ''
    returnType: std::string
    signature: std::string ZoneName::toStringNoDot() const
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ZoneName::toStringRootDot
      Src: /src/pdns/pdns/dnsname.cc:1000,1
    - Dst: ZoneName::empty
      Src: /src/pdns/pdns/dnsname.cc:1001,1
    - Dst: isRoot
      Src: /src/pdns/pdns/dnsname.cc:1002,1
    - Dst: std::string::push_back
      Src: /src/pdns/pdns/dnsname.cc:1003,1
    - Dst: std::string::push_back
      Src: /src/pdns/pdns/dnsname.cc:1005,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1009
      start: 998
    functionDepth: 0
    functionLinenumber: 998
    functionLinenumberEnd: 1009
    functionName: ZoneName::toStringRootDot
    functionSourceFile: /src/pdns/pdns/dnsname.cc
    functionUses: 1
    functionsReached:
    - isRoot
    - std::string::push_back
    - ZoneName::empty
    - ZoneName::toStringRootDot
    linkageType: ''
    returnType: std::string
    signature: std::string ZoneName::toStringRootDot() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ZoneName::empty
      Src: /src/pdns/pdns/dnsname.cc:1013,1
    - Dst: burtleCI
      Src: /src/pdns/pdns/dnsname.cc:1014,1
    - Dst: ZoneName::hash
      Src: /src/pdns/pdns/dnsname.cc:1017,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - init
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1018
      start: 1011
    functionDepth: 0
    functionLinenumber: 1011
    functionLinenumberEnd: 1018
    functionName: ZoneName::hash
    functionSourceFile: /src/pdns/pdns/dnsname.cc
    functionUses: 1
    functionsReached:
    - burtleCI
    - ZoneName::hash
    - ZoneName::empty
    linkageType: ''
    returnType: size_t
    signature: size_t ZoneName::hash(size_t init) const
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: getStorage
      Src: /src/pdns/pdns/dnsname.cc:1025,1
    - Dst: getStorage
      Src: /src/pdns/pdns/dnsname.cc:1026,1
    - Dst: d_name::getStorage
      Src: /src/pdns/pdns/dnsname.cc:1027,1
    - Dst: d_name::getStorage
      Src: /src/pdns/pdns/dnsname.cc:1028,1
    - Dst: dns_tolower
      Src: /src/pdns/pdns/dnsname.cc:1030,1
    - Dst: dns_tolower
      Src: /src/pdns/pdns/dnsname.cc:1031,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - ZoneName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1052
      start: 1020
    functionDepth: 0
    functionLinenumber: 1020
    functionLinenumberEnd: 1052
    functionName: ZoneName::operator<(const ZoneName& rhs)  const
    functionSourceFile: /src/pdns/pdns/dnsname.cc
    functionUses: 0
    functionsReached:
    - d_name::getStorage
    - dns_tolower
    - getStorage
    linkageType: ''
    returnType: bool
    signature: bool ZoneName::operator<(const ZoneName& rhs)  const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ZoneName::canonCompare_three_way
      Src: /src/pdns/pdns/dnsname.cc:1058,1
    - Dst: compare
      Src: /src/pdns/pdns/dnsname.cc:1062,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - ZoneName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1063
      start: 1054
    functionDepth: 0
    functionLinenumber: 1054
    functionLinenumberEnd: 1063
    functionName: ZoneName::canonCompare_three_way
    functionSourceFile: /src/pdns/pdns/dnsname.cc
    functionUses: 1
    functionsReached:
    - compare
    - ZoneName::canonCompare_three_way
    linkageType: ''
    returnType: int
    signature: int ZoneName::canonCompare_three_way(const ZoneName& rhs) const
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: HttpRequest::body::empty
      Src: /src/pdns/pdns/webserver.cc:52,1
    - Dst: SLOG
      Src: /src/pdns/pdns/webserver.cc:53,1
    - Dst: info
      Src: /src/pdns/pdns/webserver.cc:54,1
    - Dst: HttpBadRequestException
      Src: /src/pdns/pdns/webserver.cc:55,1
    - Dst: json11::Json::parse
      Src: /src/pdns/pdns/webserver.cc:57,1
    - Dst: json11::Json::is_null
      Src: /src/pdns/pdns/webserver.cc:58,1
    - Dst: SLOG
      Src: /src/pdns/pdns/webserver.cc:59,1
    - Dst: error
      Src: /src/pdns/pdns/webserver.cc:60,1
    - Dst: HttpBadRequestException
      Src: /src/pdns/pdns/webserver.cc:61,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 49
    functionDepth: 0
    functionLinenumber: 49
    functionLinenumberEnd: 64
    functionName: HttpRequest::json
    functionSourceFile: /src/pdns/pdns/webserver.cc
    functionUses: 0
    functionsReached:
    - SLOG
    - json11::Json::is_null
    - json11::Json::parse
    - info
    - HttpRequest::body::empty
    - error
    - HttpBadRequestException
    linkageType: ''
    returnType: json11::Json
    signature: json11::Json HttpRequest::json()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: find
      Src: /src/pdns/pdns/webserver.cc:69,1
    - Dst: end
      Src: /src/pdns/pdns/webserver.cc:71,1
    - Dst: toLower
      Src: /src/pdns/pdns/webserver.cc:71,1
    - Dst: auto::second::substr
      Src: /src/pdns/pdns/webserver.cc:72,1
    - Dst: B64Decode
      Src: /src/pdns/pdns/webserver.cc:75,1
    - Dst: string::find
      Src: /src/pdns/pdns/webserver.cc:77,1
    - Dst: matches
      Src: /src/pdns/pdns/webserver.cc:78,1
    - Dst: string::substr
      Src: /src/pdns/pdns/webserver.cc:78,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - ' credentials'
    argTypes:
    - CredentialsHolder
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 66
    functionDepth: 0
    functionLinenumber: 66
    functionLinenumberEnd: 82
    functionName: HttpRequest::compareAuthorization
    functionSourceFile: /src/pdns/pdns/webserver.cc
    functionUses: 0
    functionsReached:
    - matches
    - auto::second::substr
    - toLower
    - B64Decode
    - end
    - string::find
    - string::substr
    - find
    linkageType: ''
    returnType: bool
    signature: bool HttpRequest::compareAuthorization(const CredentialsHolder& credentials)
      const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: find
      Src: /src/pdns/pdns/webserver.cc:86,1
    - Dst: end
      Src: /src/pdns/pdns/webserver.cc:87,1
    - Dst: matches
      Src: /src/pdns/pdns/webserver.cc:91,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - header_name
    - ' credentials'
    argTypes:
    - string
    - CredentialsHolder
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 84
    functionDepth: 0
    functionLinenumber: 84
    functionLinenumberEnd: 92
    functionName: HttpRequest::compareHeader
    functionSourceFile: /src/pdns/pdns/webserver.cc
    functionUses: 0
    functionsReached:
    - matches
    - end
    - find
    linkageType: ''
    returnType: bool
    signature: bool HttpRequest::compareHeader(const string &header_name, const CredentialsHolder&
      credentials) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ' document'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 94
    functionDepth: 0
    functionLinenumber: 94
    functionLinenumberEnd: 99
    functionName: HttpResponse::setPlainBody
    functionSourceFile: /src/pdns/pdns/webserver.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void HttpResponse::setPlainBody(const string& document)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ' document'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 101
    functionDepth: 0
    functionLinenumber: 101
    functionLinenumberEnd: 106
    functionName: HttpResponse::setYamlBody
    functionSourceFile: /src/pdns/pdns/webserver.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void HttpResponse::setYamlBody(const string& document)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ' document'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 113
      start: 108
    functionDepth: 0
    functionLinenumber: 108
    functionLinenumberEnd: 113
    functionName: HttpResponse::setJsonBody
    functionSourceFile: /src/pdns/pdns/webserver.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void HttpResponse::setJsonBody(const string& document)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dump
      Src: /src/pdns/pdns/webserver.cc:119,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ' document'
    argTypes:
    - json11::Json
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 115
    functionDepth: 0
    functionLinenumber: 115
    functionLinenumberEnd: 120
    functionName: HttpResponse::setJsonBody
    functionSourceFile: /src/pdns/pdns/webserver.cc
    functionUses: 0
    functionsReached:
    - dump
    linkageType: ''
    returnType: void
    signature: void HttpResponse::setJsonBody(const json11::Json& document)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: HttpResponse::setJsonBody
      Src: /src/pdns/pdns/webserver.cc:124,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ' message'
    - status_
    argTypes:
    - std::string
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 122
    functionDepth: 0
    functionLinenumber: 122
    functionLinenumberEnd: 126
    functionName: HttpResponse::setErrorResult
    functionSourceFile: /src/pdns/pdns/webserver.cc
    functionUses: 0
    functionsReached:
    - HttpResponse::setJsonBody
    linkageType: ''
    returnType: void
    signature: void HttpResponse::setErrorResult(const std::string& message, const
      int status_)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: HttpResponse::setJsonBody
      Src: /src/pdns/pdns/webserver.cc:130,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ' message'
    - status_
    argTypes:
    - std::string
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 132
      start: 128
    functionDepth: 0
    functionLinenumber: 128
    functionLinenumberEnd: 132
    functionName: HttpResponse::setSuccessResult
    functionSourceFile: /src/pdns/pdns/webserver.cc
    functionUses: 0
    functionsReached:
    - HttpResponse::setJsonBody
    linkageType: ''
    returnType: void
    signature: void HttpResponse::setSuccessResult(const std::string& message, const
      int status_)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: handler
      Src: /src/pdns/pdns/webserver.cc:139,1
    - Dst: static_cast<HttpRequest*>
      Src: /src/pdns/pdns/webserver.cc:139,1
    - Dst: static_cast<HttpResponse*>
      Src: /src/pdns/pdns/webserver.cc:139,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' handler'
    - req
    - resp
    argTypes:
    - WebServer::HandlerFunction
    - YaHTTP::Request*
    - YaHTTP::Response*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 136
    functionDepth: 0
    functionLinenumber: 136
    functionLinenumberEnd: 140
    functionName: bareHandlerWrapper
    functionSourceFile: /src/pdns/pdns/webserver.cc
    functionUses: 0
    functionsReached:
    - static_cast<HttpRequest*>
    - handler
    - static_cast<HttpResponse*>
    linkageType: ''
    returnType: void
    signature: void bareHandlerWrapper(const WebServer::HandlerFunction& handler,
      YaHTTP::Request* req, YaHTTP::Response* resp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: bareHandlerWrapper
      Src: /src/pdns/pdns/webserver.cc:144,1
    - Dst: YaHTTP::Router::Map
      Src: /src/pdns/pdns/webserver.cc:145,1
    - Dst: std::move
      Src: /src/pdns/pdns/webserver.cc:145,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - ' url'
    - ' handler'
    - ' method'
    argTypes:
    - string
    - HandlerFunction
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 146
      start: 142
    functionDepth: 0
    functionLinenumber: 142
    functionLinenumberEnd: 146
    functionName: WebServer::registerBareHandler
    functionSourceFile: /src/pdns/pdns/webserver.cc
    functionUses: 0
    functionsReached:
    - bareHandlerWrapper
    - std::move
    - YaHTTP::Router::Map
    linkageType: ''
    returnType: void
    signature: void WebServer::registerBareHandler(const string& url, const HandlerFunction&
      handler, const std::string& method)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/webserver.cc:150,1
    - Dst: SLOG
      Src: /src/pdns/pdns/webserver.cc:155,1
    - Dst: info
      Src: /src/pdns/pdns/webserver.cc:156,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/webserver.cc:156,1
    - Dst: HttpUnauthorizedException
      Src: /src/pdns/pdns/webserver.cc:157,1
    - Dst: HttpRequest*::compareHeader
      Src: /src/pdns/pdns/webserver.cc:160,1
    - Dst: HttpRequest*::compareAuthorization
      Src: /src/pdns/pdns/webserver.cc:164,1
    - Dst: SLOG
      Src: /src/pdns/pdns/webserver.cc:171,1
    - Dst: info
      Src: /src/pdns/pdns/webserver.cc:172,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/webserver.cc:172,1
    - Dst: HttpUnauthorizedException
      Src: /src/pdns/pdns/webserver.cc:173,1
    - Dst: HttpRequest*::getvars::erase
      Src: /src/pdns/pdns/webserver.cc:183,1
    - Dst: handler
      Src: /src/pdns/pdns/webserver.cc:187,1
    - Dst: HttpResponse*::setErrorResult
      Src: /src/pdns/pdns/webserver.cc:189,1
    - Dst: what
      Src: /src/pdns/pdns/webserver.cc:189,1
    - Dst: HttpResponse*::setErrorResult
      Src: /src/pdns/pdns/webserver.cc:192,1
    - Dst: what
      Src: /src/pdns/pdns/webserver.cc:192,1
    - Dst: HttpResponse*::headers::erase
      Src: /src/pdns/pdns/webserver.cc:198,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 38
    argCount: 4
    argNames:
    - ' handler'
    - req
    - resp
    - allowPassword
    argTypes:
    - WebServer::HandlerFunction
    - HttpRequest*
    - HttpResponse*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 200
      start: 148
    functionDepth: 0
    functionLinenumber: 148
    functionLinenumberEnd: 200
    functionName: WebServer::apiWrapper
    functionSourceFile: /src/pdns/pdns/webserver.cc
    functionUses: 0
    functionsReached:
    - HttpUnauthorizedException
    - SLOG
    - Logging::Loggable
    - HttpRequest*::getvars::erase
    - what
    - HttpRequest*::compareAuthorization
    - handler
    - info
    - HttpRequest*::compareHeader
    - HttpResponse*::headers::erase
    - HttpResponse*::setErrorResult
    - empty
    linkageType: ''
    returnType: void
    signature: void WebServer::apiWrapper(const WebServer::HandlerFunction& handler,
      HttpRequest* req, HttpResponse* resp, bool allowPassword)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: WebServer::apiWrapper
      Src: /src/pdns/pdns/webserver.cc:203,1
    - Dst: WebServer::registerBareHandler
      Src: /src/pdns/pdns/webserver.cc:204,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 4
    argNames:
    - ' url'
    - ' handler'
    - ' method'
    - allowPassword
    argTypes:
    - string
    - HandlerFunction
    - std::string
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 205
      start: 202
    functionDepth: 0
    functionLinenumber: 202
    functionLinenumberEnd: 205
    functionName: WebServer::registerApiHandler
    functionSourceFile: /src/pdns/pdns/webserver.cc
    functionUses: 0
    functionsReached:
    - WebServer::apiWrapper
    - WebServer::registerBareHandler
    linkageType: ''
    returnType: void
    signature: void WebServer::registerApiHandler(const string& url, const HandlerFunction&
      handler, const std::string& method, bool allowPassword)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: HttpRequest*::compareAuthorization
      Src: /src/pdns/pdns/webserver.cc:209,1
    - Dst: SLOG
      Src: /src/pdns/pdns/webserver.cc:211,1
    - Dst: info
      Src: /src/pdns/pdns/webserver.cc:212,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/webserver.cc:212,1
    - Dst: HttpUnauthorizedException
      Src: /src/pdns/pdns/webserver.cc:213,1
    - Dst: handler
      Src: /src/pdns/pdns/webserver.cc:217,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 3
    argNames:
    - ' handler'
    - req
    - resp
    argTypes:
    - WebServer::HandlerFunction
    - HttpRequest*
    - HttpResponse*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 218
      start: 207
    functionDepth: 0
    functionLinenumber: 207
    functionLinenumberEnd: 218
    functionName: WebServer::webWrapper
    functionSourceFile: /src/pdns/pdns/webserver.cc
    functionUses: 0
    functionsReached:
    - HttpUnauthorizedException
    - SLOG
    - Logging::Loggable
    - HttpRequest*::compareAuthorization
    - handler
    - info
    linkageType: ''
    returnType: void
    signature: void WebServer::webWrapper(const WebServer::HandlerFunction& handler,
      HttpRequest* req, HttpResponse* resp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: WebServer::webWrapper
      Src: /src/pdns/pdns/webserver.cc:221,1
    - Dst: WebServer::registerBareHandler
      Src: /src/pdns/pdns/webserver.cc:222,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - ' url'
    - ' handler'
    - ' method'
    argTypes:
    - string
    - HandlerFunction
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 223
      start: 220
    functionDepth: 0
    functionLinenumber: 220
    functionLinenumberEnd: 223
    functionName: WebServer::registerWebHandler
    functionSourceFile: /src/pdns/pdns/webserver.cc
    functionUses: 0
    functionsReached:
    - WebServer::webWrapper
    - WebServer::registerBareHandler
    linkageType: ''
    returnType: void
    signature: void WebServer::registerWebHandler(const string& url, const HandlerFunction&
      handler, const std::string& method)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: setThreadName
      Src: /src/pdns/pdns/webserver.cc:227,1
    - Dst: WebServer*::registerConnection
      Src: /src/pdns/pdns/webserver.cc:229,1
    - Dst: SLOG
      Src: /src/pdns/pdns/webserver.cc:230,1
    - Dst: WebServer*::d_slog::info
      Src: /src/pdns/pdns/webserver.cc:231,1
    - Dst: WebServer*::serveConnection
      Src: /src/pdns/pdns/webserver.cc:237,1
    - Dst: SLOG
      Src: /src/pdns/pdns/webserver.cc:240,1
    - Dst: WebServer*::d_slog::error
      Src: /src/pdns/pdns/webserver.cc:241,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/webserver.cc:241,1
    - Dst: SLOG
      Src: /src/pdns/pdns/webserver.cc:244,1
    - Dst: what
      Src: /src/pdns/pdns/webserver.cc:244,1
    - Dst: WebServer*::d_slog::error
      Src: /src/pdns/pdns/webserver.cc:245,1
    - Dst: what
      Src: /src/pdns/pdns/webserver.cc:245,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/webserver.cc:245,1
    - Dst: SLOG
      Src: /src/pdns/pdns/webserver.cc:248,1
    - Dst: WebServer*::d_slog::info
      Src: /src/pdns/pdns/webserver.cc:249,1
    - Dst: WebServer*::releaseConnection
      Src: /src/pdns/pdns/webserver.cc:252,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 2
    argNames:
    - webServer
    - ' client'
    argTypes:
    - WebServer*
    - std::shared_ptr<Socket>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 254
      start: 225
    functionDepth: 0
    functionLinenumber: 225
    functionLinenumberEnd: 254
    functionName: WebServerConnectionThreadStart
    functionSourceFile: /src/pdns/pdns/webserver.cc
    functionUses: 0
    functionsReached:
    - WebServer*::d_slog::error
    - SLOG
    - WebServer*::d_slog::info
    - Logging::Loggable
    - what
    - WebServer*::serveConnection
    - WebServer*::releaseConnection
    - setThreadName
    - WebServer*::registerConnection
    linkageType: ''
    returnType: void
    signature: void * WebServerConnectionThreadStart(WebServer* webServer, const std::shared_ptr<Socket>&
      client)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: headers::find
      Src: /src/pdns/pdns/webserver.cc:261,1
    - Dst: headers::end
      Src: /src/pdns/pdns/webserver.cc:262,1
    - Dst: auto::second::find
      Src: /src/pdns/pdns/webserver.cc:264,1
    - Dst: headers::find
      Src: /src/pdns/pdns/webserver.cc:270,1
    - Dst: headers::end
      Src: /src/pdns/pdns/webserver.cc:272,1
    - Dst: auto::second::find
      Src: /src/pdns/pdns/webserver.cc:274,1
    - Dst: auto::second::find
      Src: /src/pdns/pdns/webserver.cc:274,1
    - Dst: auto::second::find
      Src: /src/pdns/pdns/webserver.cc:276,1
    - Dst: auto::second::find
      Src: /src/pdns/pdns/webserver.cc:278,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 20
    argCount: 1
    argNames:
    - ' req'
    argTypes:
    - HttpRequest
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 282
      start: 259
    functionDepth: 0
    functionLinenumber: 259
    functionLinenumberEnd: 282
    functionName: setupAllowedContentType
    functionSourceFile: /src/pdns/pdns/webserver.cc
    functionUses: 0
    functionsReached:
    - headers::find
    - headers::end
    - auto::second::find
    linkageType: ''
    returnType: void
    signature: void setupAllowedContentType(HttpRequest& req)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: d_slog::withValues
      Src: /src/pdns/pdns/webserver.cc:291,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/webserver.cc:291,1
    - Dst: SLOG
      Src: /src/pdns/pdns/webserver.cc:296,1
    - Dst: info
      Src: /src/pdns/pdns/webserver.cc:297,1
    - Dst: HttpBadRequestException
      Src: /src/pdns/pdns/webserver.cc:298,1
    - Dst: SLOG
      Src: /src/pdns/pdns/webserver.cc:300,1
    - Dst: std::shared_ptr::info
      Src: /src/pdns/pdns/webserver.cc:301,1
    - Dst: setupAllowedContentType
      Src: /src/pdns/pdns/webserver.cc:303,1
    - Dst: YaHTTP::Router::Route
      Src: /src/pdns/pdns/webserver.cc:306,1
    - Dst: SLOG
      Src: /src/pdns/pdns/webserver.cc:309,1
    - Dst: std::shared_ptr::info
      Src: /src/pdns/pdns/webserver.cc:310,1
    - Dst: HttpNotFoundException
      Src: /src/pdns/pdns/webserver.cc:311,1
    - Dst: HttpMethodNotAllowedException
      Src: /src/pdns/pdns/webserver.cc:314,1
    - Dst: handler
      Src: /src/pdns/pdns/webserver.cc:319,1
    - Dst: SLOG
      Src: /src/pdns/pdns/webserver.cc:320,1
    - Dst: body::size
      Src: /src/pdns/pdns/webserver.cc:320,1
    - Dst: std::shared_ptr::info
      Src: /src/pdns/pdns/webserver.cc:321,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/webserver.cc:321,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/webserver.cc:321,1
    - Dst: body::size
      Src: /src/pdns/pdns/webserver.cc:321,1
    - Dst: SLOG
      Src: /src/pdns/pdns/webserver.cc:327,1
    - Dst: std::shared_ptr::error
      Src: /src/pdns/pdns/webserver.cc:328,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/webserver.cc:328,1
    - Dst: HttpInternalServerErrorException
      Src: /src/pdns/pdns/webserver.cc:329,1
    - Dst: SLOG
      Src: /src/pdns/pdns/webserver.cc:332,1
    - Dst: what
      Src: /src/pdns/pdns/webserver.cc:332,1
    - Dst: std::shared_ptr::error
      Src: /src/pdns/pdns/webserver.cc:333,1
    - Dst: what
      Src: /src/pdns/pdns/webserver.cc:333,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/webserver.cc:333,1
    - Dst: HttpInternalServerErrorException
      Src: /src/pdns/pdns/webserver.cc:334,1
    - Dst: what
      Src: /src/pdns/pdns/webserver.cc:334,1
    - Dst: SLOG
      Src: /src/pdns/pdns/webserver.cc:337,1
    - Dst: std::shared_ptr::info
      Src: /src/pdns/pdns/webserver.cc:338,1
    - Dst: HttpInternalServerErrorException
      Src: /src/pdns/pdns/webserver.cc:339,1
    - Dst: response
      Src: /src/pdns/pdns/webserver.cc:343,1
    - Dst: WebServer::setSLog
      Src: /src/pdns/pdns/webserver.cc:347,1
    - Dst: SLOG
      Src: /src/pdns/pdns/webserver.cc:351,1
    - Dst: error
      Src: /src/pdns/pdns/webserver.cc:352,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/webserver.cc:352,1
    - Dst: Utility::status2text
      Src: /src/pdns/pdns/webserver.cc:353,1
    - Dst: body::empty
      Src: /src/pdns/pdns/webserver.cc:356,1
    - Dst: setErrorResult
      Src: /src/pdns/pdns/webserver.cc:357,1
    - Dst: std::move
      Src: /src/pdns/pdns/webserver.cc:364,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/webserver.cc:374,1
    - Dst: body::size
      Src: /src/pdns/pdns/webserver.cc:374,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 62
    argCount: 2
    argNames:
    - ' req'
    - ' resp'
    argTypes:
    - HttpRequest
    - HttpResponse
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 376
      start: 284
    functionDepth: 0
    functionLinenumber: 284
    functionLinenumberEnd: 376
    functionName: WebServer::handleRequest
    functionSourceFile: /src/pdns/pdns/webserver.cc
    functionUses: 0
    functionsReached:
    - std::to_string
    - body::size
    - std::shared_ptr::error
    - error
    - body::empty
    - setErrorResult
    - HttpBadRequestException
    - std::shared_ptr::info
    - HttpNotFoundException
    - SLOG
    - Logging::Loggable
    - d_slog::withValues
    - YaHTTP::Router::Route
    - WebServer::setSLog
    - handler
    - Utility::status2text
    - HttpMethodNotAllowedException
    - std::move
    - what
    - response
    - info
    - HttpInternalServerErrorException
    - setupAllowedContentType
    linkageType: ''
    returnType: void
    signature: void WebServer::handleRequest(HttpRequest& req, HttpResponse& resp)
      const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::ostringstream::str
      Src: /src/pdns/pdns/webserver.cc:393,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 394
      start: 380
    functionDepth: 0
    functionLinenumber: 380
    functionLinenumberEnd: 394
    functionName: Logging::IterLoggable<YaHTTP::strstr_map_t::const_iterator>::to_string()
      const
    functionSourceFile: /src/pdns/pdns/webserver.cc
    functionUses: 0
    functionsReached:
    - std::ostringstream::str
    linkageType: ''
    returnType: std::string
    signature: std::string Logging::IterLoggable<YaHTTP::strstr_map_t::const_iterator>::to_string()
      const
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: body::empty
      Src: /src/pdns/pdns/webserver.cc:429,1
    - Dst: d_slog::info
      Src: /src/pdns/pdns/webserver.cc:437,1
    - Dst: Logging::IterLoggable
      Src: /src/pdns/pdns/webserver.cc:437,1
    - Dst: getvars::cbegin
      Src: /src/pdns/pdns/webserver.cc:437,1
    - Dst: getvars::cend
      Src: /src/pdns/pdns/webserver.cc:437,1
    - Dst: Logging::IterLoggable
      Src: /src/pdns/pdns/webserver.cc:438,1
    - Dst: postvars::cbegin
      Src: /src/pdns/pdns/webserver.cc:438,1
    - Dst: postvars::cend
      Src: /src/pdns/pdns/webserver.cc:438,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/webserver.cc:439,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/webserver.cc:440,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 34
    argCount: 2
    argNames:
    - ' req'
    - ' remote'
    argTypes:
    - HttpRequest
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 443
      start: 396
    functionDepth: 0
    functionLinenumber: 396
    functionLinenumberEnd: 443
    functionName: WebServer::logRequest
    functionSourceFile: /src/pdns/pdns/webserver.cc
    functionUses: 0
    functionsReached:
    - Logging::Loggable
    - getvars::cend
    - d_slog::info
    - postvars::cend
    - postvars::cbegin
    - Logging::IterLoggable
    - body::empty
    - getvars::cbegin
    linkageType: ''
    returnType: void
    signature: void WebServer::logRequest(const HttpRequest& req, [[maybe_unused]]
      const ComboAddress& remote) const
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: body::empty
      Src: /src/pdns/pdns/webserver.cc:457,1
    - Dst: d_slog::info
      Src: /src/pdns/pdns/webserver.cc:465,1
    - Dst: Logging::IterLoggable
      Src: /src/pdns/pdns/webserver.cc:465,1
    - Dst: headers::cbegin
      Src: /src/pdns/pdns/webserver.cc:465,1
    - Dst: headers::cend
      Src: /src/pdns/pdns/webserver.cc:465,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/webserver.cc:466,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 2
    argNames:
    - ' resp'
    - ' logprefix'
    argTypes:
    - HttpResponse
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 469
      start: 445
    functionDepth: 0
    functionLinenumber: 445
    functionLinenumberEnd: 469
    functionName: WebServer::logResponse
    functionSourceFile: /src/pdns/pdns/webserver.cc
    functionUses: 0
    functionsReached:
    - Logging::Loggable
    - d_slog::info
    - Logging::IterLoggable
    - body::empty
    - headers::cbegin
    - headers::cend
    linkageType: ''
    returnType: void
    signature: void WebServer::logResponse(const HttpResponse& resp, const ComboAddress&
      /* remote */, const string& logprefix) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: set
      Src: /src/pdns/pdns/webserver.cc:477,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 479
      start: 473
    functionDepth: 0
    functionLinenumber: 473
    functionLinenumberEnd: 479
    functionName: ValidChars
    functionSourceFile: /src/pdns/pdns/webserver.cc
    functionUses: 0
    functionsReached:
    - set
    linkageType: ''
    returnType: void
    signature: void ValidChars()
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: begin
      Src: /src/pdns/pdns/webserver.cc:487,1
    - Dst: end
      Src: /src/pdns/pdns/webserver.cc:487,1
    - Dst: end
      Src: /src/pdns/pdns/webserver.cc:490,1
    - Dst: isxdigit
      Src: /src/pdns/pdns/webserver.cc:490,1
    - Dst: static_cast<unsigned char>
      Src: /src/pdns/pdns/webserver.cc:490,1
    - Dst: end
      Src: /src/pdns/pdns/webserver.cc:494,1
    - Dst: isxdigit
      Src: /src/pdns/pdns/webserver.cc:494,1
    - Dst: static_cast<unsigned char>
      Src: /src/pdns/pdns/webserver.cc:494,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/webserver.cc:498,1
    - Dst: set::size
      Src: /src/pdns/pdns/webserver.cc:498,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 17
    argCount: 1
    argNames:
    - ' str'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 503
      start: 485
    functionDepth: 0
    functionLinenumber: 485
    functionLinenumberEnd: 503
    functionName: validURLChars
    functionSourceFile: /src/pdns/pdns/webserver.cc
    functionUses: 0
    functionsReached:
    - static_cast<size_t>
    - isxdigit
    - set::size
    - end
    - begin
    - static_cast<unsigned char>
    linkageType: ''
    returnType: bool
    signature: bool validURLChars(const string& str)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: validURLChars
      Src: /src/pdns/pdns/webserver.cc:508,1
    - Dst: validURLChars
      Src: /src/pdns/pdns/webserver.cc:509,1
    - Dst: validURLChars
      Src: /src/pdns/pdns/webserver.cc:510,1
    - Dst: validURLChars
      Src: /src/pdns/pdns/webserver.cc:511,1
    - Dst: validURLChars
      Src: /src/pdns/pdns/webserver.cc:512,1
    - Dst: validURLChars
      Src: /src/pdns/pdns/webserver.cc:513,1
    - Dst: validURLChars
      Src: /src/pdns/pdns/webserver.cc:514,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 9
    argCount: 1
    argNames:
    - ' url'
    argTypes:
    - YaHTTP::URL
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 516
      start: 505
    functionDepth: 0
    functionLinenumber: 505
    functionLinenumberEnd: 516
    functionName: WebServer::validURL
    functionSourceFile: /src/pdns/pdns/webserver.cc
    functionUses: 0
    functionsReached:
    - validURLChars
    linkageType: ''
    returnType: bool
    signature: bool WebServer::validURL(const YaHTTP::URL& url)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: getUniqueID
      Src: /src/pdns/pdns/webserver.cc:520,1
    - Dst: to_string
      Src: /src/pdns/pdns/webserver.cc:521,1
    - Dst: HttpResponse::HttpResponse
      Src: /src/pdns/pdns/webserver.cc:525,1
    - Dst: withValues
      Src: /src/pdns/pdns/webserver.cc:527,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/webserver.cc:527,1
    - Dst: to_string
      Src: /src/pdns/pdns/webserver.cc:527,1
    - Dst: HttpRequest::setSLog
      Src: /src/pdns/pdns/webserver.cc:528,1
    - Dst: HttpResponse::setSLog
      Src: /src/pdns/pdns/webserver.cc:529,1
    - Dst: YaHTTP::AsyncRequestLoader::initialize
      Src: /src/pdns/pdns/webserver.cc:537,1
    - Dst: setNonBlocking
      Src: /src/pdns/pdns/webserver.cc:540,1
    - Dst: readWithTimeout
      Src: /src/pdns/pdns/webserver.cc:545,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/webserver.cc:545,1
    - Dst: std::array::size
      Src: /src/pdns/pdns/webserver.cc:545,1
    - Dst: string
      Src: /src/pdns/pdns/webserver.cc:547,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/webserver.cc:547,1
    - Dst: YaHTTP::AsyncRequestLoader::feed
      Src: /src/pdns/pdns/webserver.cc:548,1
    - Dst: YaHTTP::AsyncRequestLoader::finalize
      Src: /src/pdns/pdns/webserver.cc:554,1
    - Dst: SLOG
      Src: /src/pdns/pdns/webserver.cc:557,1
    - Dst: what
      Src: /src/pdns/pdns/webserver.cc:557,1
    - Dst: error
      Src: /src/pdns/pdns/webserver.cc:558,1
    - Dst: what
      Src: /src/pdns/pdns/webserver.cc:558,1
    - Dst: WebServer::validURL
      Src: /src/pdns/pdns/webserver.cc:561,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/webserver.cc:562,1
    - Dst: getRemote
      Src: /src/pdns/pdns/webserver.cc:566,1
    - Dst: WebServer::logRequest
      Src: /src/pdns/pdns/webserver.cc:569,1
    - Dst: WebServer::handleRequest
      Src: /src/pdns/pdns/webserver.cc:571,1
    - Dst: HttpResponse::write
      Src: /src/pdns/pdns/webserver.cc:573,1
    - Dst: ostringstream::str
      Src: /src/pdns/pdns/webserver.cc:574,1
    - Dst: WebServer::logResponse
      Src: /src/pdns/pdns/webserver.cc:576,1
    - Dst: writenWithTimeout
      Src: /src/pdns/pdns/webserver.cc:578,1
    - Dst: string::c_str
      Src: /src/pdns/pdns/webserver.cc:578,1
    - Dst: string::size
      Src: /src/pdns/pdns/webserver.cc:578,1
    - Dst: SLOG
      Src: /src/pdns/pdns/webserver.cc:581,1
    - Dst: error
      Src: /src/pdns/pdns/webserver.cc:582,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/webserver.cc:582,1
    - Dst: strstr
      Src: /src/pdns/pdns/webserver.cc:585,1
    - Dst: what
      Src: /src/pdns/pdns/webserver.cc:585,1
    - Dst: SLOG
      Src: /src/pdns/pdns/webserver.cc:586,1
    - Dst: what
      Src: /src/pdns/pdns/webserver.cc:586,1
    - Dst: error
      Src: /src/pdns/pdns/webserver.cc:587,1
    - Dst: what
      Src: /src/pdns/pdns/webserver.cc:587,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/webserver.cc:587,1
    - Dst: SLOG
      Src: /src/pdns/pdns/webserver.cc:590,1
    - Dst: info
      Src: /src/pdns/pdns/webserver.cc:591,1
    - Dst: SLOG
      Src: /src/pdns/pdns/webserver.cc:595,1
    - Dst: HttpRequest::versionStr
      Src: /src/pdns/pdns/webserver.cc:595,1
    - Dst: string::size
      Src: /src/pdns/pdns/webserver.cc:595,1
    - Dst: info
      Src: /src/pdns/pdns/webserver.cc:596,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/webserver.cc:596,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/webserver.cc:596,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/webserver.cc:597,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/webserver.cc:597,1
    - Dst: HttpRequest::versionStr
      Src: /src/pdns/pdns/webserver.cc:597,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/webserver.cc:598,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/webserver.cc:598,1
    - Dst: string::size
      Src: /src/pdns/pdns/webserver.cc:598,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 45
    argCount: 1
    argNames:
    - ' client'
    argTypes:
    - std::shared_ptr<Socket>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 600
      start: 518
    functionDepth: 1
    functionLinenumber: 518
    functionLinenumberEnd: 600
    functionName: WebServer::serveConnection
    functionSourceFile: /src/pdns/pdns/webserver.cc
    functionUses: 0
    functionsReached:
    - getUniqueID
    - PDNSException
    - error
    - SLOG
    - readWithTimeout
    - string::size
    - Logging::Loggable
    - to_string
    - setNonBlocking
    - string
    - YaHTTP::AsyncRequestLoader::initialize
    - YaHTTP::AsyncRequestLoader::finalize
    - string::c_str
    - HttpResponse::write
    - WebServer::validURL
    - WebServer::handleRequest
    - withValues
    - ostringstream::str
    - HttpRequest::setSLog
    - std::array::data
    - getRemote
    - HttpRequest::versionStr
    - writenWithTimeout
    - strstr
    - HttpResponse::HttpResponse
    - what
    - info
    - YaHTTP::AsyncRequestLoader::feed
    - WebServer::logRequest
    - HttpResponse::setSLog
    - WebServer::logResponse
    - std::array::size
    linkageType: ''
    returnType: void
    signature: void WebServer::serveConnection(const std::shared_ptr<Socket>& client)
      const
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/webserver.cc:604,1
    - Dst: static_cast<ssize_t>
      Src: /src/pdns/pdns/webserver.cc:607,1
    - Dst: YaHTTP::Router::Map
      Src: /src/pdns/pdns/webserver.cc:610,1
    - Dst: YaHTTP::Router::GetRoutes
      Src: /src/pdns/pdns/webserver.cc:614,1
    - Dst: std::get<0>
      Src: /src/pdns/pdns/webserver.cc:615,1
    - Dst: std::get<1>
      Src: /src/pdns/pdns/webserver.cc:616,1
    - Dst: YaHTTP::Router::Match
      Src: /src/pdns/pdns/webserver.cc:621,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/webserver.cc:622,1
    - Dst: std::vector::emplace_back
      Src: /src/pdns/pdns/webserver.cc:631,1
    - Dst: empty
      Src: /src/pdns/pdns/webserver.cc:632,1
    - Dst: boost::algorithm::join
      Src: /src/pdns/pdns/webserver.cc:636,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 26
    argCount: 3
    argNames:
    - ccm
    - listenaddress
    - port
    argTypes:
    - std::shared_ptr<ConcurrentConnectionManager>
    - string
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 642
      start: 602
    functionDepth: 0
    functionLinenumber: 602
    functionLinenumberEnd: 642
    functionName: WebServer::WebServer
    functionSourceFile: /src/pdns/pdns/webserver.cc
    functionUses: 0
    functionsReached:
    - YaHTTP::Router::Map
    - std::move
    - std::vector::push_back
    - static_cast<ssize_t>
    - std::get<0>
    - std::get<1>
    - std::vector::emplace_back
    - boost::algorithm::join
    - YaHTTP::Router::GetRoutes
    - empty
    - YaHTTP::Router::Match
    linkageType: ''
    returnType: void
    signature: void WebServer::WebServer(std::shared_ptr<ConcurrentConnectionManager>
      ccm, string listenaddress, int port)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: filesystem::is_socket
      Src: /src/pdns/pdns/webserver.cc:646,1
    - Dst: c_str
      Src: /src/pdns/pdns/webserver.cc:646,1
    - Dst: unlink
      Src: /src/pdns/pdns/webserver.cc:647,1
    - Dst: c_str
      Src: /src/pdns/pdns/webserver.cc:647,1
    - Dst: SLOG
      Src: /src/pdns/pdns/webserver.cc:649,1
    - Dst: error
      Src: /src/pdns/pdns/webserver.cc:650,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/webserver.cc:650,1
    - Dst: WebServer::createServer
      Src: /src/pdns/pdns/webserver.cc:657,1
    - Dst: d_local::isUnixSocket
      Src: /src/pdns/pdns/webserver.cc:658,1
    - Dst: SLOG
      Src: /src/pdns/pdns/webserver.cc:659,1
    - Dst: info
      Src: /src/pdns/pdns/webserver.cc:660,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/webserver.cc:660,1
    - Dst: SLOG
      Src: /src/pdns/pdns/webserver.cc:662,1
    - Dst: d_local::toStringWithPort
      Src: /src/pdns/pdns/webserver.cc:662,1
    - Dst: info
      Src: /src/pdns/pdns/webserver.cc:663,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/webserver.cc:663,1
    - Dst: SLOG
      Src: /src/pdns/pdns/webserver.cc:667,1
    - Dst: what
      Src: /src/pdns/pdns/webserver.cc:667,1
    - Dst: error
      Src: /src/pdns/pdns/webserver.cc:668,1
    - Dst: what
      Src: /src/pdns/pdns/webserver.cc:668,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/webserver.cc:668,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 671
      start: 644
    functionDepth: 0
    functionLinenumber: 644
    functionLinenumberEnd: 671
    functionName: WebServer::bind
    functionSourceFile: /src/pdns/pdns/webserver.cc
    functionUses: 0
    functionsReached:
    - d_local::isUnixSocket
    - d_local::toStringWithPort
    - SLOG
    - Logging::Loggable
    - what
    - info
    - WebServer::createServer
    - unlink
    - error
    - c_str
    - filesystem::is_socket
    linkageType: ''
    returnType: void
    signature: void WebServer::bind()
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: accept
      Src: /src/pdns/pdns/webserver.cc:682,1
    - Dst: d_local::isUnixSocket
      Src: /src/pdns/pdns/webserver.cc:686,1
    - Dst: auto::acl
      Src: /src/pdns/pdns/webserver.cc:686,1
    - Dst: std::thread::detach
      Src: /src/pdns/pdns/webserver.cc:688,1
    - Dst: auto::getRemote
      Src: /src/pdns/pdns/webserver.cc:691,1
    - Dst: SLOG
      Src: /src/pdns/pdns/webserver.cc:692,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/webserver.cc:692,1
    - Dst: toString
      Src: /src/pdns/pdns/webserver.cc:692,1
    - Dst: info
      Src: /src/pdns/pdns/webserver.cc:693,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/webserver.cc:693,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/webserver.cc:693,1
    - Dst: SLOG
      Src: /src/pdns/pdns/webserver.cc:698,1
    - Dst: info
      Src: /src/pdns/pdns/webserver.cc:699,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/webserver.cc:699,1
    - Dst: SLOG
      Src: /src/pdns/pdns/webserver.cc:702,1
    - Dst: what
      Src: /src/pdns/pdns/webserver.cc:702,1
    - Dst: info
      Src: /src/pdns/pdns/webserver.cc:703,1
    - Dst: what
      Src: /src/pdns/pdns/webserver.cc:703,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/webserver.cc:703,1
    - Dst: SLOG
      Src: /src/pdns/pdns/webserver.cc:706,1
    - Dst: info
      Src: /src/pdns/pdns/webserver.cc:707,1
    - Dst: SLOG
      Src: /src/pdns/pdns/webserver.cc:712,1
    - Dst: info
      Src: /src/pdns/pdns/webserver.cc:713,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/webserver.cc:713,1
    - Dst: SLOG
      Src: /src/pdns/pdns/webserver.cc:716,1
    - Dst: what
      Src: /src/pdns/pdns/webserver.cc:716,1
    - Dst: info
      Src: /src/pdns/pdns/webserver.cc:717,1
    - Dst: what
      Src: /src/pdns/pdns/webserver.cc:717,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/webserver.cc:717,1
    - Dst: SLOG
      Src: /src/pdns/pdns/webserver.cc:720,1
    - Dst: info
      Src: /src/pdns/pdns/webserver.cc:721,1
    - Dst: _exit
      Src: /src/pdns/pdns/webserver.cc:723,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 32
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 724
      start: 673
    functionDepth: 0
    functionLinenumber: 673
    functionLinenumberEnd: 724
    functionName: WebServer::go
    functionSourceFile: /src/pdns/pdns/webserver.cc
    functionUses: 3
    functionsReached:
    - d_local::isUnixSocket
    - SLOG
    - toString
    - _exit
    - Logging::Loggable
    - accept
    - what
    - info
    - std::thread::detach
    - ComboAddress::toString
    - auto::acl
    - auto::getRemote
    linkageType: ''
    returnType: void
    signature: void WebServer::go()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: set::insert
      Src: /src/pdns/pdns/test-misc_hh.cc:31,1
    - Dst: set::insert
      Src: /src/pdns/pdns/test-misc_hh.cc:32,1
    - Dst: set::insert
      Src: /src/pdns/pdns/test-misc_hh.cc:33,1
    - Dst: set::insert
      Src: /src/pdns/pdns/test-misc_hh.cc:34,1
    - Dst: set::insert
      Src: /src/pdns/pdns/test-misc_hh.cc:35,1
    - Dst: set::insert
      Src: /src/pdns/pdns/test-misc_hh.cc:36,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-misc_hh.cc:37,1
    - Dst: set::size
      Src: /src/pdns/pdns/test-misc_hh.cc:37,1
    - Dst: set::begin
      Src: /src/pdns/pdns/test-misc_hh.cc:40,1
    - Dst: set::end
      Src: /src/pdns/pdns/test-misc_hh.cc:40,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-misc_hh.cc:43,1
    - Dst: ostringstream::str
      Src: /src/pdns/pdns/test-misc_hh.cc:43,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 29
    functionDepth: 1
    functionLinenumber: 29
    functionLinenumberEnd: 44
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-misc_hh.cc
    functionUses: 0
    functionsReached:
    - set::insert
    - set::size
    - BOOST_CHECK_EQUAL
    - set::end
    - set::begin
    - ostringstream::str
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_CIStringCompare)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: set::emplace
      Src: /src/pdns/pdns/test-misc_hh.cc:48,1
    - Dst: set::emplace
      Src: /src/pdns/pdns/test-misc_hh.cc:49,1
    - Dst: set::emplace
      Src: /src/pdns/pdns/test-misc_hh.cc:50,1
    - Dst: set::emplace
      Src: /src/pdns/pdns/test-misc_hh.cc:51,1
    - Dst: set::emplace
      Src: /src/pdns/pdns/test-misc_hh.cc:52,1
    - Dst: set::emplace
      Src: /src/pdns/pdns/test-misc_hh.cc:53,1
    - Dst: set::emplace
      Src: /src/pdns/pdns/test-misc_hh.cc:54,1
    - Dst: set::emplace
      Src: /src/pdns/pdns/test-misc_hh.cc:55,1
    - Dst: set::emplace
      Src: /src/pdns/pdns/test-misc_hh.cc:56,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-misc_hh.cc:57,1
    - Dst: set::size
      Src: /src/pdns/pdns/test-misc_hh.cc:57,1
    - Dst: set::begin
      Src: /src/pdns/pdns/test-misc_hh.cc:60,1
    - Dst: set::end
      Src: /src/pdns/pdns/test-misc_hh.cc:60,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-misc_hh.cc:63,1
    - Dst: ostringstream::str
      Src: /src/pdns/pdns/test-misc_hh.cc:63,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 46
    functionDepth: 0
    functionLinenumber: 46
    functionLinenumberEnd: 64
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-misc_hh.cc
    functionUses: 0
    functionsReached:
    - set::size
    - BOOST_CHECK_EQUAL
    - set::end
    - set::begin
    - ostringstream::str
    - set::emplace
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_CIStringPairCompare)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: boost::assign::list_of
      Src: /src/pdns/pdns/test-misc_hh.cc:70,1
    - Dst: case_t
      Src: /src/pdns/pdns/test-misc_hh.cc:71,1
    - Dst: std::string
      Src: /src/pdns/pdns/test-misc_hh.cc:71,1
    - Dst: std::string
      Src: /src/pdns/pdns/test-misc_hh.cc:71,1
    - Dst: case_t
      Src: /src/pdns/pdns/test-misc_hh.cc:72,1
    - Dst: std::string
      Src: /src/pdns/pdns/test-misc_hh.cc:72,1
    - Dst: std::string
      Src: /src/pdns/pdns/test-misc_hh.cc:72,1
    - Dst: case_t
      Src: /src/pdns/pdns/test-misc_hh.cc:73,1
    - Dst: std::string
      Src: /src/pdns/pdns/test-misc_hh.cc:73,1
    - Dst: std::string
      Src: /src/pdns/pdns/test-misc_hh.cc:73,1
    - Dst: case_t
      Src: /src/pdns/pdns/test-misc_hh.cc:74,1
    - Dst: std::string
      Src: /src/pdns/pdns/test-misc_hh.cc:74,1
    - Dst: std::string
      Src: /src/pdns/pdns/test-misc_hh.cc:74,1
    - Dst: case_t
      Src: /src/pdns/pdns/test-misc_hh.cc:75,1
    - Dst: std::string
      Src: /src/pdns/pdns/test-misc_hh.cc:75,1
    - Dst: std::string
      Src: /src/pdns/pdns/test-misc_hh.cc:75,1
    - Dst: case_t
      Src: /src/pdns/pdns/test-misc_hh.cc:76,1
    - Dst: std::string
      Src: /src/pdns/pdns/test-misc_hh.cc:76,1
    - Dst: std::string
      Src: /src/pdns/pdns/test-misc_hh.cc:76,1
    - Dst: case_t
      Src: /src/pdns/pdns/test-misc_hh.cc:77,1
    - Dst: std::string
      Src: /src/pdns/pdns/test-misc_hh.cc:77,1
    - Dst: std::string
      Src: /src/pdns/pdns/test-misc_hh.cc:77,1
    - Dst: case_t
      Src: /src/pdns/pdns/test-misc_hh.cc:78,1
    - Dst: std::string
      Src: /src/pdns/pdns/test-misc_hh.cc:78,1
    - Dst: std::string
      Src: /src/pdns/pdns/test-misc_hh.cc:78,1
    - Dst: case_t
      Src: /src/pdns/pdns/test-misc_hh.cc:79,1
    - Dst: std::string
      Src: /src/pdns/pdns/test-misc_hh.cc:79,1
    - Dst: std::string
      Src: /src/pdns/pdns/test-misc_hh.cc:79,1
    - Dst: pdns_ilexicographical_compare
      Src: /src/pdns/pdns/test-misc_hh.cc:84,1
    - Dst: get
      Src: /src/pdns/pdns/test-misc_hh.cc:84,1
    - Dst: get
      Src: /src/pdns/pdns/test-misc_hh.cc:84,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-misc_hh.cc:85,1
    - Dst: get
      Src: /src/pdns/pdns/test-misc_hh.cc:85,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 66
    functionDepth: 0
    functionLinenumber: 66
    functionLinenumberEnd: 87
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-misc_hh.cc
    functionUses: 0
    functionsReached:
    - pdns_ilexicographical_compare
    - case_t
    - boost::assign::list_of
    - BOOST_CHECK_EQUAL
    - get
    - std::string
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_pdns_ilexicographical_compare)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: boost::assign::list_of
      Src: /src/pdns/pdns/test-misc_hh.cc:93,1
    - Dst: case_t
      Src: /src/pdns/pdns/test-misc_hh.cc:94,1
    - Dst: std::string
      Src: /src/pdns/pdns/test-misc_hh.cc:94,1
    - Dst: std::string
      Src: /src/pdns/pdns/test-misc_hh.cc:94,1
    - Dst: case_t
      Src: /src/pdns/pdns/test-misc_hh.cc:95,1
    - Dst: std::string
      Src: /src/pdns/pdns/test-misc_hh.cc:95,1
    - Dst: std::string
      Src: /src/pdns/pdns/test-misc_hh.cc:95,1
    - Dst: case_t
      Src: /src/pdns/pdns/test-misc_hh.cc:96,1
    - Dst: std::string
      Src: /src/pdns/pdns/test-misc_hh.cc:96,1
    - Dst: std::string
      Src: /src/pdns/pdns/test-misc_hh.cc:96,1
    - Dst: case_t
      Src: /src/pdns/pdns/test-misc_hh.cc:97,1
    - Dst: std::string
      Src: /src/pdns/pdns/test-misc_hh.cc:97,1
    - Dst: std::string
      Src: /src/pdns/pdns/test-misc_hh.cc:97,1
    - Dst: case_t
      Src: /src/pdns/pdns/test-misc_hh.cc:98,1
    - Dst: std::string
      Src: /src/pdns/pdns/test-misc_hh.cc:98,1
    - Dst: std::string
      Src: /src/pdns/pdns/test-misc_hh.cc:98,1
    - Dst: case_t
      Src: /src/pdns/pdns/test-misc_hh.cc:99,1
    - Dst: std::string
      Src: /src/pdns/pdns/test-misc_hh.cc:99,1
    - Dst: std::string
      Src: /src/pdns/pdns/test-misc_hh.cc:99,1
    - Dst: case_t
      Src: /src/pdns/pdns/test-misc_hh.cc:100,1
    - Dst: std::string
      Src: /src/pdns/pdns/test-misc_hh.cc:100,1
    - Dst: std::string
      Src: /src/pdns/pdns/test-misc_hh.cc:100,1
    - Dst: case_t
      Src: /src/pdns/pdns/test-misc_hh.cc:101,1
    - Dst: std::string
      Src: /src/pdns/pdns/test-misc_hh.cc:101,1
    - Dst: std::string
      Src: /src/pdns/pdns/test-misc_hh.cc:101,1
    - Dst: case_t
      Src: /src/pdns/pdns/test-misc_hh.cc:102,1
    - Dst: std::string
      Src: /src/pdns/pdns/test-misc_hh.cc:102,1
    - Dst: std::string
      Src: /src/pdns/pdns/test-misc_hh.cc:102,1
    - Dst: pdns_iequals
      Src: /src/pdns/pdns/test-misc_hh.cc:107,1
    - Dst: get
      Src: /src/pdns/pdns/test-misc_hh.cc:107,1
    - Dst: get
      Src: /src/pdns/pdns/test-misc_hh.cc:107,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-misc_hh.cc:108,1
    - Dst: get
      Src: /src/pdns/pdns/test-misc_hh.cc:108,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 89
    functionDepth: 0
    functionLinenumber: 89
    functionLinenumberEnd: 110
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-misc_hh.cc
    functionUses: 0
    functionsReached:
    - pdns_iequals
    - case_t
    - boost::assign::list_of
    - BOOST_CHECK_EQUAL
    - get
    - std::string
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_pdns_iequals)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-misc_hh.cc:113,1
    - Dst: stripDot
      Src: /src/pdns/pdns/test-misc_hh.cc:113,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-misc_hh.cc:114,1
    - Dst: stripDot
      Src: /src/pdns/pdns/test-misc_hh.cc:114,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-misc_hh.cc:115,1
    - Dst: stripDot
      Src: /src/pdns/pdns/test-misc_hh.cc:115,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-misc_hh.cc:116,1
    - Dst: stripDot
      Src: /src/pdns/pdns/test-misc_hh.cc:116,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 112
    functionDepth: 0
    functionLinenumber: 112
    functionLinenumberEnd: 117
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-misc_hh.cc
    functionUses: 0
    functionsReached:
    - stripDot
    - BOOST_CHECK_EQUAL
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_stripDot)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-misc_hh.cc:120,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-misc_hh.cc:120,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 119
    functionDepth: 0
    functionLinenumber: 119
    functionLinenumberEnd: 121
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-misc_hh.cc
    functionUses: 0
    functionsReached:
    - DNSName
    - BOOST_CHECK_EQUAL
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_labelReverse)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-misc_hh.cc:128,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 129
      start: 124
    functionDepth: 0
    functionLinenumber: 124
    functionLinenumberEnd: 129
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-misc_hh.cc
    functionUses: 0
    functionsReached:
    - BOOST_CHECK_EQUAL
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_AtomicCounter)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-misc_hh.cc:134,1
    - Dst: htonl
      Src: /src/pdns/pdns/test-misc_hh.cc:134,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-misc_hh.cc:137,1
    - Dst: ntohl
      Src: /src/pdns/pdns/test-misc_hh.cc:137,1
    - Dst: BOOST_FAIL
      Src: /src/pdns/pdns/test-misc_hh.cc:139,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 141
      start: 131
    functionDepth: 0
    functionLinenumber: 131
    functionLinenumberEnd: 141
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-misc_hh.cc
    functionUses: 0
    functionsReached:
    - ntohl
    - BOOST_FAIL
    - BOOST_CHECK_EQUAL
    - htonl
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_endianness)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-misc_hh.cc:145,1
    - Dst: defTer
      Src: /src/pdns/pdns/test-misc_hh.cc:145,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-misc_hh.cc:146,1
    - Dst: defTer
      Src: /src/pdns/pdns/test-misc_hh.cc:146,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-misc_hh.cc:149,1
    - Dst: defTer
      Src: /src/pdns/pdns/test-misc_hh.cc:149,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 150
      start: 143
    functionDepth: 0
    functionLinenumber: 143
    functionLinenumberEnd: 150
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-misc_hh.cc
    functionUses: 0
    functionsReached:
    - BOOST_CHECK_EQUAL
    - defTer
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_ternary)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-misc_hh.cc:153,1
    - Dst: SimpleMatch
      Src: /src/pdns/pdns/test-misc_hh.cc:153,1
    - Dst: std::string
      Src: /src/pdns/pdns/test-misc_hh.cc:153,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-misc_hh.cc:154,1
    - Dst: SimpleMatch
      Src: /src/pdns/pdns/test-misc_hh.cc:154,1
    - Dst: std::string
      Src: /src/pdns/pdns/test-misc_hh.cc:154,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-misc_hh.cc:155,1
    - Dst: SimpleMatch
      Src: /src/pdns/pdns/test-misc_hh.cc:155,1
    - Dst: std::string
      Src: /src/pdns/pdns/test-misc_hh.cc:155,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-misc_hh.cc:157,1
    - Dst: SimpleMatch
      Src: /src/pdns/pdns/test-misc_hh.cc:157,1
    - Dst: std::string
      Src: /src/pdns/pdns/test-misc_hh.cc:157,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-misc_hh.cc:158,1
    - Dst: SimpleMatch
      Src: /src/pdns/pdns/test-misc_hh.cc:158,1
    - Dst: std::string
      Src: /src/pdns/pdns/test-misc_hh.cc:158,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-misc_hh.cc:159,1
    - Dst: SimpleMatch
      Src: /src/pdns/pdns/test-misc_hh.cc:159,1
    - Dst: std::string
      Src: /src/pdns/pdns/test-misc_hh.cc:159,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-misc_hh.cc:161,1
    - Dst: SimpleMatch
      Src: /src/pdns/pdns/test-misc_hh.cc:161,1
    - Dst: std::string
      Src: /src/pdns/pdns/test-misc_hh.cc:161,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-misc_hh.cc:162,1
    - Dst: SimpleMatch
      Src: /src/pdns/pdns/test-misc_hh.cc:162,1
    - Dst: std::string
      Src: /src/pdns/pdns/test-misc_hh.cc:162,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-misc_hh.cc:163,1
    - Dst: SimpleMatch
      Src: /src/pdns/pdns/test-misc_hh.cc:163,1
    - Dst: std::string
      Src: /src/pdns/pdns/test-misc_hh.cc:163,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-misc_hh.cc:164,1
    - Dst: SimpleMatch
      Src: /src/pdns/pdns/test-misc_hh.cc:164,1
    - Dst: std::string
      Src: /src/pdns/pdns/test-misc_hh.cc:164,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-misc_hh.cc:166,1
    - Dst: SimpleMatch
      Src: /src/pdns/pdns/test-misc_hh.cc:166,1
    - Dst: std::string
      Src: /src/pdns/pdns/test-misc_hh.cc:166,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-misc_hh.cc:167,1
    - Dst: SimpleMatch
      Src: /src/pdns/pdns/test-misc_hh.cc:167,1
    - Dst: std::string
      Src: /src/pdns/pdns/test-misc_hh.cc:167,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-misc_hh.cc:168,1
    - Dst: SimpleMatch
      Src: /src/pdns/pdns/test-misc_hh.cc:168,1
    - Dst: std::string
      Src: /src/pdns/pdns/test-misc_hh.cc:168,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-misc_hh.cc:169,1
    - Dst: SimpleMatch
      Src: /src/pdns/pdns/test-misc_hh.cc:169,1
    - Dst: std::string
      Src: /src/pdns/pdns/test-misc_hh.cc:169,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-misc_hh.cc:171,1
    - Dst: SimpleMatch
      Src: /src/pdns/pdns/test-misc_hh.cc:171,1
    - Dst: std::string
      Src: /src/pdns/pdns/test-misc_hh.cc:171,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-misc_hh.cc:172,1
    - Dst: SimpleMatch
      Src: /src/pdns/pdns/test-misc_hh.cc:172,1
    - Dst: std::string
      Src: /src/pdns/pdns/test-misc_hh.cc:172,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-misc_hh.cc:173,1
    - Dst: SimpleMatch
      Src: /src/pdns/pdns/test-misc_hh.cc:173,1
    - Dst: std::string
      Src: /src/pdns/pdns/test-misc_hh.cc:173,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-misc_hh.cc:174,1
    - Dst: SimpleMatch
      Src: /src/pdns/pdns/test-misc_hh.cc:174,1
    - Dst: std::string
      Src: /src/pdns/pdns/test-misc_hh.cc:174,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-misc_hh.cc:175,1
    - Dst: SimpleMatch
      Src: /src/pdns/pdns/test-misc_hh.cc:175,1
    - Dst: std::string
      Src: /src/pdns/pdns/test-misc_hh.cc:175,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 20
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 176
      start: 152
    functionDepth: 0
    functionLinenumber: 152
    functionLinenumberEnd: 176
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-misc_hh.cc
    functionUses: 0
    functionsReached:
    - std::string
    - SimpleMatch
    - BOOST_CHECK_EQUAL
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_SimpleMatch)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: rfc1982LessThan
      Src: /src/pdns/pdns/test-misc_hh.cc:179,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - x
    - y
    argTypes:
    - T
    - T
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 180
      start: 178
    functionDepth: 0
    functionLinenumber: 178
    functionLinenumberEnd: 180
    functionName: rfc1982check
    functionSourceFile: /src/pdns/pdns/test-misc_hh.cc
    functionUses: 0
    functionsReached:
    - rfc1982LessThan
    linkageType: ''
    returnType: bool
    signature: bool rfc1982check(T x, T y)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-misc_hh.cc:184,1
    - Dst: rfc1982check
      Src: /src/pdns/pdns/test-misc_hh.cc:184,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-misc_hh.cc:185,1
    - Dst: rfc1982check
      Src: /src/pdns/pdns/test-misc_hh.cc:185,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-misc_hh.cc:186,1
    - Dst: rfc1982check
      Src: /src/pdns/pdns/test-misc_hh.cc:186,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-misc_hh.cc:187,1
    - Dst: rfc1982check
      Src: /src/pdns/pdns/test-misc_hh.cc:187,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-misc_hh.cc:188,1
    - Dst: rfc1982check
      Src: /src/pdns/pdns/test-misc_hh.cc:188,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-misc_hh.cc:189,1
    - Dst: rfc1982check
      Src: /src/pdns/pdns/test-misc_hh.cc:189,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-misc_hh.cc:190,1
    - Dst: rfc1982check
      Src: /src/pdns/pdns/test-misc_hh.cc:190,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-misc_hh.cc:191,1
    - Dst: rfc1982check
      Src: /src/pdns/pdns/test-misc_hh.cc:191,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-misc_hh.cc:192,1
    - Dst: rfc1982check
      Src: /src/pdns/pdns/test-misc_hh.cc:192,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-misc_hh.cc:193,1
    - Dst: rfc1982check
      Src: /src/pdns/pdns/test-misc_hh.cc:193,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-misc_hh.cc:195,1
    - Dst: rfc1982check
      Src: /src/pdns/pdns/test-misc_hh.cc:195,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-misc_hh.cc:196,1
    - Dst: rfc1982check
      Src: /src/pdns/pdns/test-misc_hh.cc:196,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-misc_hh.cc:197,1
    - Dst: rfc1982check
      Src: /src/pdns/pdns/test-misc_hh.cc:197,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-misc_hh.cc:199,1
    - Dst: rfc1982check
      Src: /src/pdns/pdns/test-misc_hh.cc:199,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-misc_hh.cc:200,1
    - Dst: rfc1982check
      Src: /src/pdns/pdns/test-misc_hh.cc:200,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-misc_hh.cc:201,1
    - Dst: rfc1982check
      Src: /src/pdns/pdns/test-misc_hh.cc:201,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 202
      start: 182
    functionDepth: 0
    functionLinenumber: 182
    functionLinenumberEnd: 202
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-misc_hh.cc
    functionUses: 0
    functionsReached:
    - BOOST_CHECK
    - rfc1982check
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_rfc1982LessThan)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-misc_hh.cc:208,1
    - Dst: reverseNameFromIP
      Src: /src/pdns/pdns/test-misc_hh.cc:208,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-misc_hh.cc:209,1
    - Dst: reverseNameFromIP
      Src: /src/pdns/pdns/test-misc_hh.cc:209,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 210
      start: 204
    functionDepth: 0
    functionLinenumber: 204
    functionLinenumberEnd: 210
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-misc_hh.cc
    functionUses: 0
    functionsReached:
    - reverseNameFromIP
    - BOOST_CHECK_EQUAL
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_reverse_name_to_ip)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-misc_hh.cc:216,1
    - Dst: gethostname
      Src: /src/pdns/pdns/test-misc_hh.cc:216,1
    - Dst: std::replace
      Src: /src/pdns/pdns/test-misc_hh.cc:218,1
    - Dst: std::string::begin
      Src: /src/pdns/pdns/test-misc_hh.cc:218,1
    - Dst: std::string::end
      Src: /src/pdns/pdns/test-misc_hh.cc:218,1
    - Dst: getCarbonHostName
      Src: /src/pdns/pdns/test-misc_hh.cc:220,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-misc_hh.cc:222,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-misc_hh.cc:223,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/test-misc_hh.cc:223,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/test-misc_hh.cc:223,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 224
      start: 212
    functionDepth: 0
    functionLinenumber: 212
    functionLinenumberEnd: 224
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-misc_hh.cc
    functionUses: 0
    functionsReached:
    - std::string::begin
    - getCarbonHostName
    - std::string::end
    - BOOST_CHECK_EQUAL
    - std::string::size
    - gethostname
    - std::replace
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_getCarbonHostName)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: parseRFC1035CharString
      Src: /src/pdns/pdns/test-misc_hh.cc:234,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-misc_hh.cc:235,1
    - Dst: string::size
      Src: /src/pdns/pdns/test-misc_hh.cc:235,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-misc_hh.cc:236,1
    - Dst: parseRFC1035CharString
      Src: /src/pdns/pdns/test-misc_hh.cc:239,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-misc_hh.cc:240,1
    - Dst: string::size
      Src: /src/pdns/pdns/test-misc_hh.cc:240,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-misc_hh.cc:241,1
    - Dst: string
      Src: /src/pdns/pdns/test-misc_hh.cc:243,1
    - Dst: string
      Src: /src/pdns/pdns/test-misc_hh.cc:243,1
    - Dst: string
      Src: /src/pdns/pdns/test-misc_hh.cc:243,1
    - Dst: string
      Src: /src/pdns/pdns/test-misc_hh.cc:244,1
    - Dst: parseRFC1035CharString
      Src: /src/pdns/pdns/test-misc_hh.cc:245,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-misc_hh.cc:246,1
    - Dst: string::size
      Src: /src/pdns/pdns/test-misc_hh.cc:246,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-misc_hh.cc:247,1
    - Dst: parseRFC1035CharString
      Src: /src/pdns/pdns/test-misc_hh.cc:251,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-misc_hh.cc:252,1
    - Dst: string::size
      Src: /src/pdns/pdns/test-misc_hh.cc:252,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-misc_hh.cc:253,1
    - Dst: parseRFC1035CharString
      Src: /src/pdns/pdns/test-misc_hh.cc:257,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-misc_hh.cc:258,1
    - Dst: string::size
      Src: /src/pdns/pdns/test-misc_hh.cc:258,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-misc_hh.cc:259,1
    - Dst: parseRFC1035CharString
      Src: /src/pdns/pdns/test-misc_hh.cc:264,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-misc_hh.cc:265,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-misc_hh.cc:266,1
    - Dst: parseRFC1035CharString
      Src: /src/pdns/pdns/test-misc_hh.cc:271,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-misc_hh.cc:272,1
    - Dst: string::size
      Src: /src/pdns/pdns/test-misc_hh.cc:272,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-misc_hh.cc:273,1
    - Dst: parseRFC1035CharString
      Src: /src/pdns/pdns/test-misc_hh.cc:277,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-misc_hh.cc:278,1
    - Dst: string::size
      Src: /src/pdns/pdns/test-misc_hh.cc:278,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-misc_hh.cc:279,1
    - Dst: parseRFC1035CharString
      Src: /src/pdns/pdns/test-misc_hh.cc:283,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-misc_hh.cc:284,1
    - Dst: string::size
      Src: /src/pdns/pdns/test-misc_hh.cc:284,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-misc_hh.cc:285,1
    - Dst: parseRFC1035CharString
      Src: /src/pdns/pdns/test-misc_hh.cc:290,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-misc_hh.cc:291,1
    - Dst: string::size
      Src: /src/pdns/pdns/test-misc_hh.cc:291,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-misc_hh.cc:292,1
    - Dst: parseRFC1035CharString
      Src: /src/pdns/pdns/test-misc_hh.cc:295,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-misc_hh.cc:296,1
    - Dst: string::size
      Src: /src/pdns/pdns/test-misc_hh.cc:296,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-misc_hh.cc:297,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 53
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 298
      start: 226
    functionDepth: 0
    functionLinenumber: 226
    functionLinenumberEnd: 298
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-misc_hh.cc
    functionUses: 0
    functionsReached:
    - string
    - BOOST_CHECK_EQUAL
    - string::size
    - parseRFC1035CharString
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_parseRFC1035CharString)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: parseRFC1035CharStringRelaxed
      Src: /src/pdns/pdns/test-misc_hh.cc:310,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-misc_hh.cc:311,1
    - Dst: string::size
      Src: /src/pdns/pdns/test-misc_hh.cc:311,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-misc_hh.cc:312,1
    - Dst: parseRFC1035CharStringRelaxed
      Src: /src/pdns/pdns/test-misc_hh.cc:315,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-misc_hh.cc:316,1
    - Dst: string::size
      Src: /src/pdns/pdns/test-misc_hh.cc:316,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-misc_hh.cc:317,1
    - Dst: string
      Src: /src/pdns/pdns/test-misc_hh.cc:319,1
    - Dst: string
      Src: /src/pdns/pdns/test-misc_hh.cc:319,1
    - Dst: string
      Src: /src/pdns/pdns/test-misc_hh.cc:319,1
    - Dst: string
      Src: /src/pdns/pdns/test-misc_hh.cc:320,1
    - Dst: parseRFC1035CharStringRelaxed
      Src: /src/pdns/pdns/test-misc_hh.cc:321,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-misc_hh.cc:322,1
    - Dst: string::size
      Src: /src/pdns/pdns/test-misc_hh.cc:322,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-misc_hh.cc:323,1
    - Dst: parseRFC1035CharStringRelaxed
      Src: /src/pdns/pdns/test-misc_hh.cc:327,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-misc_hh.cc:328,1
    - Dst: string::size
      Src: /src/pdns/pdns/test-misc_hh.cc:328,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-misc_hh.cc:329,1
    - Dst: parseRFC1035CharStringRelaxed
      Src: /src/pdns/pdns/test-misc_hh.cc:333,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-misc_hh.cc:334,1
    - Dst: string::size
      Src: /src/pdns/pdns/test-misc_hh.cc:334,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-misc_hh.cc:335,1
    - Dst: parseRFC1035CharStringRelaxed
      Src: /src/pdns/pdns/test-misc_hh.cc:340,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-misc_hh.cc:341,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-misc_hh.cc:342,1
    - Dst: parseRFC1035CharStringRelaxed
      Src: /src/pdns/pdns/test-misc_hh.cc:347,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-misc_hh.cc:348,1
    - Dst: string::size
      Src: /src/pdns/pdns/test-misc_hh.cc:348,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-misc_hh.cc:349,1
    - Dst: parseRFC1035CharStringRelaxed
      Src: /src/pdns/pdns/test-misc_hh.cc:353,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-misc_hh.cc:354,1
    - Dst: string::size
      Src: /src/pdns/pdns/test-misc_hh.cc:354,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-misc_hh.cc:355,1
    - Dst: parseRFC1035CharStringRelaxed
      Src: /src/pdns/pdns/test-misc_hh.cc:359,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-misc_hh.cc:360,1
    - Dst: string::size
      Src: /src/pdns/pdns/test-misc_hh.cc:360,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-misc_hh.cc:361,1
    - Dst: parseRFC1035CharStringRelaxed
      Src: /src/pdns/pdns/test-misc_hh.cc:366,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-misc_hh.cc:367,1
    - Dst: string::size
      Src: /src/pdns/pdns/test-misc_hh.cc:367,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-misc_hh.cc:368,1
    - Dst: parseRFC1035CharStringRelaxed
      Src: /src/pdns/pdns/test-misc_hh.cc:371,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-misc_hh.cc:372,1
    - Dst: string::size
      Src: /src/pdns/pdns/test-misc_hh.cc:372,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-misc_hh.cc:373,1
    - Dst: parseRFC1035CharStringRelaxed
      Src: /src/pdns/pdns/test-misc_hh.cc:379,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-misc_hh.cc:380,1
    - Dst: string::size
      Src: /src/pdns/pdns/test-misc_hh.cc:380,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-misc_hh.cc:381,1
    - Dst: parseRFC1035CharStringRelaxed
      Src: /src/pdns/pdns/test-misc_hh.cc:385,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-misc_hh.cc:386,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-misc_hh.cc:387,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 63
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 388
      start: 300
    functionDepth: 0
    functionLinenumber: 300
    functionLinenumberEnd: 388
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-misc_hh.cc
    functionUses: 0
    functionsReached:
    - parseRFC1035CharStringRelaxed
    - string
    - string::size
    - BOOST_CHECK_EQUAL
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_parseRFC1035CharStringRelaxed)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: parseSVCBValueList
      Src: /src/pdns/pdns/test-misc_hh.cc:396,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-misc_hh.cc:397,1
    - Dst: vector::size
      Src: /src/pdns/pdns/test-misc_hh.cc:397,1
    - Dst: vector::size
      Src: /src/pdns/pdns/test-misc_hh.cc:397,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-misc_hh.cc:398,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-misc_hh.cc:399,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-misc_hh.cc:400,1
    - Dst: parseSVCBValueList
      Src: /src/pdns/pdns/test-misc_hh.cc:402,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-misc_hh.cc:403,1
    - Dst: vector::size
      Src: /src/pdns/pdns/test-misc_hh.cc:403,1
    - Dst: vector::size
      Src: /src/pdns/pdns/test-misc_hh.cc:403,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-misc_hh.cc:404,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-misc_hh.cc:405,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-misc_hh.cc:406,1
    - Dst: parseSVCBValueList
      Src: /src/pdns/pdns/test-misc_hh.cc:409,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-misc_hh.cc:410,1
    - Dst: vector::size
      Src: /src/pdns/pdns/test-misc_hh.cc:410,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-misc_hh.cc:411,1
    - Dst: parseSVCBValueList
      Src: /src/pdns/pdns/test-misc_hh.cc:413,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-misc_hh.cc:414,1
    - Dst: vector::size
      Src: /src/pdns/pdns/test-misc_hh.cc:414,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-misc_hh.cc:415,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-misc_hh.cc:416,1
    - Dst: parseSVCBValueList
      Src: /src/pdns/pdns/test-misc_hh.cc:418,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-misc_hh.cc:419,1
    - Dst: vector::size
      Src: /src/pdns/pdns/test-misc_hh.cc:419,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-misc_hh.cc:420,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-misc_hh.cc:421,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-misc_hh.cc:422,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-misc_hh.cc:423,1
    - Dst: parseSVCBValueList
      Src: /src/pdns/pdns/test-misc_hh.cc:425,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-misc_hh.cc:426,1
    - Dst: vector::size
      Src: /src/pdns/pdns/test-misc_hh.cc:426,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-misc_hh.cc:427,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-misc_hh.cc:428,1
    - Dst: parseSVCBValueList
      Src: /src/pdns/pdns/test-misc_hh.cc:430,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-misc_hh.cc:431,1
    - Dst: vector::size
      Src: /src/pdns/pdns/test-misc_hh.cc:431,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-misc_hh.cc:432,1
    - Dst: parseSVCBValueList
      Src: /src/pdns/pdns/test-misc_hh.cc:434,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-misc_hh.cc:435,1
    - Dst: vector::size
      Src: /src/pdns/pdns/test-misc_hh.cc:435,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-misc_hh.cc:436,1
    - Dst: parseSVCBValueList
      Src: /src/pdns/pdns/test-misc_hh.cc:439,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-misc_hh.cc:440,1
    - Dst: vector::size
      Src: /src/pdns/pdns/test-misc_hh.cc:440,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-misc_hh.cc:441,1
    - Dst: parseSVCBValueList
      Src: /src/pdns/pdns/test-misc_hh.cc:443,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-misc_hh.cc:444,1
    - Dst: vector::size
      Src: /src/pdns/pdns/test-misc_hh.cc:444,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-misc_hh.cc:445,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-misc_hh.cc:446,1
    - Dst: parseSVCBValueList
      Src: /src/pdns/pdns/test-misc_hh.cc:448,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-misc_hh.cc:449,1
    - Dst: vector::size
      Src: /src/pdns/pdns/test-misc_hh.cc:449,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-misc_hh.cc:450,1
    - Dst: parseSVCBValueList
      Src: /src/pdns/pdns/test-misc_hh.cc:452,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-misc_hh.cc:453,1
    - Dst: vector::size
      Src: /src/pdns/pdns/test-misc_hh.cc:453,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-misc_hh.cc:454,1
    - Dst: parseSVCBValueList
      Src: /src/pdns/pdns/test-misc_hh.cc:457,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-misc_hh.cc:458,1
    - Dst: vector::size
      Src: /src/pdns/pdns/test-misc_hh.cc:458,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-misc_hh.cc:459,1
    - Dst: parseSVCBValueList
      Src: /src/pdns/pdns/test-misc_hh.cc:461,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-misc_hh.cc:462,1
    - Dst: vector::size
      Src: /src/pdns/pdns/test-misc_hh.cc:462,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-misc_hh.cc:463,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-misc_hh.cc:464,1
    - Dst: parseSVCBValueList
      Src: /src/pdns/pdns/test-misc_hh.cc:466,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-misc_hh.cc:467,1
    - Dst: vector::size
      Src: /src/pdns/pdns/test-misc_hh.cc:467,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-misc_hh.cc:468,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-misc_hh.cc:469,1
    - Dst: parseSVCBValueList
      Src: /src/pdns/pdns/test-misc_hh.cc:471,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-misc_hh.cc:472,1
    - Dst: vector::size
      Src: /src/pdns/pdns/test-misc_hh.cc:472,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-misc_hh.cc:473,1
    - Dst: parseSVCBValueList
      Src: /src/pdns/pdns/test-misc_hh.cc:475,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-misc_hh.cc:476,1
    - Dst: vector::size
      Src: /src/pdns/pdns/test-misc_hh.cc:476,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-misc_hh.cc:477,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 64
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 478
      start: 390
    functionDepth: 0
    functionLinenumber: 390
    functionLinenumberEnd: 478
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-misc_hh.cc
    functionUses: 0
    functionsReached:
    - vector::size
    - BOOST_CHECK_EQUAL
    - parseSVCBValueList
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_parseSVCBValueList)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeBytesFromHex
      Src: /src/pdns/pdns/test-misc_hh.cc:481,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-misc_hh.cc:482,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-misc_hh.cc:484,1
    - Dst: makeBytesFromHex
      Src: /src/pdns/pdns/test-misc_hh.cc:484,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-misc_hh.cc:486,1
    - Dst: makeBytesFromHex
      Src: /src/pdns/pdns/test-misc_hh.cc:486,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 487
      start: 480
    functionDepth: 0
    functionLinenumber: 480
    functionLinenumberEnd: 487
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-misc_hh.cc
    functionUses: 0
    functionsReached:
    - makeBytesFromHex
    - BOOST_CHECK_THROW
    - BOOST_CHECK_EQUAL
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_makeBytesFromHex)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeHexDump
      Src: /src/pdns/pdns/test-misc_hh.cc:490,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-misc_hh.cc:492,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 493
      start: 489
    functionDepth: 0
    functionLinenumber: 489
    functionLinenumberEnd: 493
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-misc_hh.cc
    functionUses: 0
    functionsReached:
    - makeHexDump
    - BOOST_CHECK_EQUAL
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_makeHexDump)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: cleanSlashes
      Src: /src/pdns/pdns/test-misc_hh.cc:498,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-misc_hh.cc:501,1
    - Dst: cleanSlashesWrapper
      Src: /src/pdns/pdns/test-misc_hh.cc:501,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-misc_hh.cc:502,1
    - Dst: cleanSlashesWrapper
      Src: /src/pdns/pdns/test-misc_hh.cc:502,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-misc_hh.cc:503,1
    - Dst: cleanSlashesWrapper
      Src: /src/pdns/pdns/test-misc_hh.cc:503,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-misc_hh.cc:504,1
    - Dst: cleanSlashesWrapper
      Src: /src/pdns/pdns/test-misc_hh.cc:504,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-misc_hh.cc:505,1
    - Dst: cleanSlashesWrapper
      Src: /src/pdns/pdns/test-misc_hh.cc:505,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-misc_hh.cc:506,1
    - Dst: cleanSlashesWrapper
      Src: /src/pdns/pdns/test-misc_hh.cc:506,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-misc_hh.cc:507,1
    - Dst: cleanSlashesWrapper
      Src: /src/pdns/pdns/test-misc_hh.cc:507,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-misc_hh.cc:508,1
    - Dst: cleanSlashesWrapper
      Src: /src/pdns/pdns/test-misc_hh.cc:508,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-misc_hh.cc:509,1
    - Dst: cleanSlashesWrapper
      Src: /src/pdns/pdns/test-misc_hh.cc:509,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-misc_hh.cc:510,1
    - Dst: cleanSlashesWrapper
      Src: /src/pdns/pdns/test-misc_hh.cc:510,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-misc_hh.cc:511,1
    - Dst: cleanSlashesWrapper
      Src: /src/pdns/pdns/test-misc_hh.cc:511,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 512
      start: 495
    functionDepth: 0
    functionLinenumber: 495
    functionLinenumberEnd: 512
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-misc_hh.cc
    functionUses: 0
    functionsReached:
    - cleanSlashesWrapper
    - cleanSlashes
    - BOOST_CHECK_EQUAL
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_CleanSlashes)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-misc_hh.cc:516,1
    - Dst: pdns::checked_stoi<uint8_t>
      Src: /src/pdns/pdns/test-misc_hh.cc:516,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-misc_hh.cc:518,1
    - Dst: pdns::checked_stoi<uint8_t>
      Src: /src/pdns/pdns/test-misc_hh.cc:518,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-misc_hh.cc:519,1
    - Dst: pdns::checked_stoi<uint8_t>
      Src: /src/pdns/pdns/test-misc_hh.cc:519,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-misc_hh.cc:520,1
    - Dst: pdns::checked_stoi<uint8_t>
      Src: /src/pdns/pdns/test-misc_hh.cc:520,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-misc_hh.cc:521,1
    - Dst: pdns::checked_stoi<uint8_t>
      Src: /src/pdns/pdns/test-misc_hh.cc:521,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-misc_hh.cc:523,1
    - Dst: pdns::checked_stoi<int8_t>
      Src: /src/pdns/pdns/test-misc_hh.cc:523,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-misc_hh.cc:524,1
    - Dst: pdns::checked_stoi<int8_t>
      Src: /src/pdns/pdns/test-misc_hh.cc:524,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-misc_hh.cc:525,1
    - Dst: pdns::checked_stoi<int8_t>
      Src: /src/pdns/pdns/test-misc_hh.cc:525,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-misc_hh.cc:526,1
    - Dst: pdns::checked_stoi<int8_t>
      Src: /src/pdns/pdns/test-misc_hh.cc:526,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 527
      start: 514
    functionDepth: 0
    functionLinenumber: 514
    functionLinenumberEnd: 527
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-misc_hh.cc
    functionUses: 0
    functionsReached:
    - pdns::checked_stoi<uint8_t>
    - BOOST_CHECK_THROW
    - BOOST_CHECK_EQUAL
    - pdns::checked_stoi<int8_t>
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_checked_stoi)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-misc_hh.cc:531,1
    - Dst: pdns::checked_stoi_nonzero<int8_t>
      Src: /src/pdns/pdns/test-misc_hh.cc:531,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 532
      start: 529
    functionDepth: 0
    functionLinenumber: 529
    functionLinenumberEnd: 532
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-misc_hh.cc
    functionUses: 0
    functionsReached:
    - BOOST_CHECK_THROW
    - pdns::checked_stoi_nonzero<int8_t>
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_checked_stoi_nonzero)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 49
    functionDepth: 0
    functionLinenumber: 49
    functionLinenumberEnd: 49
    functionName: QType::QType
    functionSourceFile: /src/pdns/pdns/qtype.hh
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void QType(uint16_t qtype = 0)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 53
    functionDepth: 0
    functionLinenumber: 53
    functionLinenumberEnd: 55
    functionName: operator uint16_t() const
    functionSourceFile: /src/pdns/pdns/qtype.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void operator uint16_t() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 58
    functionDepth: 0
    functionLinenumber: 58
    functionLinenumberEnd: 61
    functionName: QType::getCode
    functionSourceFile: /src/pdns/pdns/qtype.hh
    functionUses: 7
    functionsReached: []
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t getCode() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: QType::getCode
      Src: /src/pdns/pdns/qtype.hh:173,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - qtype
    argTypes:
    - QType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 174
      start: 172
    functionDepth: 0
    functionLinenumber: 172
    functionLinenumberEnd: 174
    functionName: operator()(QType qtype) const noexcept
    functionSourceFile: /src/pdns/pdns/qtype.hh
    functionUses: 0
    functionsReached:
    - QType::getCode
    linkageType: ''
    returnType: std::size_t
    signature: std::size_t operator()(QType qtype) const noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: QType::getCode
      Src: /src/pdns/pdns/qtype.hh:173,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - qtype
    argTypes:
    - QType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 174
      start: 172
    functionDepth: 0
    functionLinenumber: 172
    functionLinenumberEnd: 174
    functionName: operator()(QType qtype) const noexcept
    functionSourceFile: /src/pdns/pdns/qtype.hh
    functionUses: 0
    functionsReached:
    - QType::getCode
    linkageType: ''
    returnType: std::size_t
    signature: std::size_t operator()(QType qtype) const noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: toString
      Src: /src/pdns/pdns/qtype.hh:180,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' stream'
    - ' qtype'
    argTypes:
    - std::ostream
    - QType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 181
      start: 178
    functionDepth: 0
    functionLinenumber: 178
    functionLinenumberEnd: 181
    functionName: '& operator<<(std::ostream& stream, const QType& qtype)'
    functionSourceFile: /src/pdns/pdns/qtype.hh
    functionUses: 0
    functionsReached:
    - toString
    linkageType: ''
    returnType: std::ostream
    signature: std::ostream & operator<<(std::ostream& stream, const QType& qtype)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: QType::getCode
      Src: /src/pdns/pdns/qtype.hh:185,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - qtype
    argTypes:
    - QType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 186
      start: 184
    functionDepth: 0
    functionLinenumber: 184
    functionLinenumberEnd: 186
    functionName: hash_value
    functionSourceFile: /src/pdns/pdns/qtype.hh
    functionUses: 0
    functionsReached:
    - QType::getCode
    linkageType: ''
    returnType: size_t
    signature: size_t hash_value(const QType qtype)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 190
      start: 190
    functionDepth: 0
    functionLinenumber: 190
    functionLinenumberEnd: 190
    functionName: QClass
    functionSourceFile: /src/pdns/pdns/qtype.hh
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void QClass(uint16_t code = 0)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 195
      start: 193
    functionDepth: 0
    functionLinenumber: 193
    functionLinenumberEnd: 195
    functionName: operator uint16_t() const
    functionSourceFile: /src/pdns/pdns/qtype.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void operator uint16_t() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 199
      start: 196
    functionDepth: 0
    functionLinenumber: 196
    functionLinenumberEnd: 199
    functionName: getCode
    functionSourceFile: /src/pdns/pdns/qtype.hh
    functionUses: 49
    functionsReached: []
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t getCode() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: QClass::toString
      Src: /src/pdns/pdns/qtype.hh:218,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' s'
    - qclass
    argTypes:
    - std::ostream
    - QClass
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 219
      start: 216
    functionDepth: 0
    functionLinenumber: 216
    functionLinenumberEnd: 219
    functionName: '& operator<<(std::ostream& s, QClass qclass)'
    functionSourceFile: /src/pdns/pdns/qtype.hh
    functionUses: 0
    functionsReached:
    - QClass::toString
    linkageType: ''
    returnType: std::ostream
    signature: std::ostream & operator<<(std::ostream& s, QClass qclass)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::channel::createObjectQueue<MyObject>
      Src: /src/pdns/pdns/test-channel.cc:20,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-channel.cc:22,1
    - Dst: getDescriptor
      Src: /src/pdns/pdns/test-channel.cc:22,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-channel.cc:23,1
    - Dst: isClosed
      Src: /src/pdns/pdns/test-channel.cc:23,1
    - Dst: receive
      Src: /src/pdns/pdns/test-channel.cc:25,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-channel.cc:26,1
    - Dst: std::make_unique<MyObject>
      Src: /src/pdns/pdns/test-channel.cc:28,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-channel.cc:30,1
    - Dst: send
      Src: /src/pdns/pdns/test-channel.cc:30,1
    - Dst: std::move
      Src: /src/pdns/pdns/test-channel.cc:30,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-channel.cc:31,1
    - Dst: receive
      Src: /src/pdns/pdns/test-channel.cc:32,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-channel.cc:33,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-channel.cc:34,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 35
      start: 18
    functionDepth: 0
    functionLinenumber: 18
    functionLinenumberEnd: 35
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-channel.cc
    functionUses: 0
    functionsReached:
    - std::move
    - isClosed
    - pdns::channel::createObjectQueue<MyObject>
    - BOOST_CHECK_EQUAL
    - std::make_unique<MyObject>
    - receive
    - send
    - getDescriptor
    - BOOST_CHECK
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_object_queue)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pdns::channel::createObjectQueue<MyObject>
      Src: /src/pdns/pdns/test-channel.cc:39,1
    - Dst: receive
      Src: /src/pdns/pdns/test-channel.cc:42,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-channel.cc:43,1
    - Dst: std::make_unique<MyObject>
      Src: /src/pdns/pdns/test-channel.cc:50,1
    - Dst: send
      Src: /src/pdns/pdns/test-channel.cc:52,1
    - Dst: std::move
      Src: /src/pdns/pdns/test-channel.cc:52,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-channel.cc:54,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-channel.cc:57,1
    - Dst: BOOST_CHECK_GT
      Src: /src/pdns/pdns/test-channel.cc:62,1
    - Dst: receive
      Src: /src/pdns/pdns/test-channel.cc:68,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-channel.cc:77,1
    - Dst: std::make_unique<MyObject>
      Src: /src/pdns/pdns/test-channel.cc:80,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-channel.cc:82,1
    - Dst: send
      Src: /src/pdns/pdns/test-channel.cc:82,1
    - Dst: std::move
      Src: /src/pdns/pdns/test-channel.cc:82,1
    - Dst: receive
      Src: /src/pdns/pdns/test-channel.cc:85,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-channel.cc:86,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 27
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 37
    functionDepth: 0
    functionLinenumber: 37
    functionLinenumberEnd: 88
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-channel.cc
    functionUses: 0
    functionsReached:
    - std::move
    - BOOST_CHECK_GT
    - pdns::channel::createObjectQueue<MyObject>
    - BOOST_CHECK_EQUAL
    - std::make_unique<MyObject>
    - receive
    - send
    - BOOST_CHECK
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_object_queue_full)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::channel::createObjectQueue<MyObject>
      Src: /src/pdns/pdns/test-channel.cc:92,1
    - Dst: close
      Src: /src/pdns/pdns/test-channel.cc:93,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-channel.cc:94,1
    - Dst: receive
      Src: /src/pdns/pdns/test-channel.cc:94,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-channel.cc:95,1
    - Dst: isClosed
      Src: /src/pdns/pdns/test-channel.cc:95,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 90
    functionDepth: 0
    functionLinenumber: 90
    functionLinenumberEnd: 96
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-channel.cc
    functionUses: 0
    functionsReached:
    - isClosed
    - pdns::channel::createObjectQueue<MyObject>
    - BOOST_CHECK_EQUAL
    - receive
    - BOOST_CHECK_THROW
    - close
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_object_queue_throw_on_eof)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::channel::createObjectQueue<MyObject>
      Src: /src/pdns/pdns/test-channel.cc:100,1
    - Dst: close
      Src: /src/pdns/pdns/test-channel.cc:101,1
    - Dst: receive
      Src: /src/pdns/pdns/test-channel.cc:102,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-channel.cc:103,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-channel.cc:104,1
    - Dst: isClosed
      Src: /src/pdns/pdns/test-channel.cc:104,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 98
    functionDepth: 0
    functionLinenumber: 98
    functionLinenumberEnd: 105
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-channel.cc
    functionUses: 0
    functionsReached:
    - isClosed
    - pdns::channel::createObjectQueue<MyObject>
    - BOOST_CHECK_EQUAL
    - receive
    - BOOST_CHECK
    - close
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_object_queue_do_not_throw_on_eof)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::channel::createNotificationQueue
      Src: /src/pdns/pdns/test-channel.cc:109,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-channel.cc:111,1
    - Dst: getDescriptor
      Src: /src/pdns/pdns/test-channel.cc:111,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-channel.cc:112,1
    - Dst: isClosed
      Src: /src/pdns/pdns/test-channel.cc:112,1
    - Dst: clear
      Src: /src/pdns/pdns/test-channel.cc:113,1
    - Dst: notify
      Src: /src/pdns/pdns/test-channel.cc:118,1
    - Dst: clear
      Src: /src/pdns/pdns/test-channel.cc:122,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-channel.cc:125,1
    - Dst: notify
      Src: /src/pdns/pdns/test-channel.cc:125,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 107
    functionDepth: 1
    functionLinenumber: 107
    functionLinenumberEnd: 126
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-channel.cc
    functionUses: 0
    functionsReached:
    - isClosed
    - BOOST_CHECK_EQUAL
    - notify
    - getDescriptor
    - clear
    - BOOST_CHECK
    - pdns::channel::createNotificationQueue
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_notification_queue_full)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::channel::createNotificationQueue
      Src: /src/pdns/pdns/test-channel.cc:130,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-channel.cc:132,1
    - Dst: getDescriptor
      Src: /src/pdns/pdns/test-channel.cc:132,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-channel.cc:133,1
    - Dst: isClosed
      Src: /src/pdns/pdns/test-channel.cc:133,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-channel.cc:135,1
    - Dst: notify
      Src: /src/pdns/pdns/test-channel.cc:135,1
    - Dst: clear
      Src: /src/pdns/pdns/test-channel.cc:136,1
    - Dst: pdns::channel::Notifier::Notifier
      Src: /src/pdns/pdns/test-channel.cc:138,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-channel.cc:139,1
    - Dst: clear
      Src: /src/pdns/pdns/test-channel.cc:139,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 128
    functionDepth: 1
    functionLinenumber: 128
    functionLinenumberEnd: 140
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-channel.cc
    functionUses: 0
    functionsReached:
    - isClosed
    - BOOST_CHECK_EQUAL
    - notify
    - pdns::channel::Notifier::Notifier
    - BOOST_CHECK_THROW
    - getDescriptor
    - clear
    - BOOST_CHECK
    - pdns::channel::createNotificationQueue
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_notification_queue_throw_on_eof)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::channel::createNotificationQueue
      Src: /src/pdns/pdns/test-channel.cc:144,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-channel.cc:146,1
    - Dst: getDescriptor
      Src: /src/pdns/pdns/test-channel.cc:146,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-channel.cc:147,1
    - Dst: isClosed
      Src: /src/pdns/pdns/test-channel.cc:147,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-channel.cc:149,1
    - Dst: notify
      Src: /src/pdns/pdns/test-channel.cc:149,1
    - Dst: clear
      Src: /src/pdns/pdns/test-channel.cc:150,1
    - Dst: pdns::channel::Notifier::Notifier
      Src: /src/pdns/pdns/test-channel.cc:152,1
    - Dst: clear
      Src: /src/pdns/pdns/test-channel.cc:153,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-channel.cc:154,1
    - Dst: isClosed
      Src: /src/pdns/pdns/test-channel.cc:154,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 142
    functionDepth: 1
    functionLinenumber: 142
    functionLinenumberEnd: 155
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-channel.cc
    functionUses: 0
    functionsReached:
    - isClosed
    - BOOST_CHECK_EQUAL
    - notify
    - pdns::channel::Notifier::Notifier
    - getDescriptor
    - clear
    - BOOST_CHECK
    - pdns::channel::createNotificationQueue
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_notification_queue_do_not_throw_on_eof)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: arg
      Src: /src/pdns/pdns/test-lua_auth4_cc.cc:17,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 18
      start: 16
    functionDepth: 0
    functionLinenumber: 16
    functionLinenumberEnd: 18
    functionName: SetupArgFixture
    functionSourceFile: /src/pdns/pdns/test-lua_auth4_cc.cc
    functionUses: 0
    functionsReached:
    - arg
    linkageType: ''
    returnType: void
    signature: void SetupArgFixture()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: AuthLua4::AuthLua4
      Src: /src/pdns/pdns/test-lua_auth4_cc.cc:32,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-lua_auth4_cc.cc:34,1
    - Dst: AuthLua4::loadString
      Src: /src/pdns/pdns/test-lua_auth4_cc.cc:35,1
    - Dst: AuthLua4::prequery
      Src: /src/pdns/pdns/test-lua_auth4_cc.cc:38,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/test-lua_auth4_cc.cc:39,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-lua_auth4_cc.cc:40,1
    - Dst: std::unique_ptr::qdomain::toString
      Src: /src/pdns/pdns/test-lua_auth4_cc.cc:40,1
    - Dst: std::rethrow_if_nested
      Src: /src/pdns/pdns/test-lua_auth4_cc.cc:43,1
    - Dst: what
      Src: /src/pdns/pdns/test-lua_auth4_cc.cc:45,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 23
    functionDepth: 2
    functionLinenumber: 23
    functionLinenumberEnd: 48
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-lua_auth4_cc.cc
    functionUses: 0
    functionsReached:
    - std::unique_ptr::qdomain::toString
    - what
    - DNSName
    - BOOST_CHECK_EQUAL
    - AuthLua4::AuthLua4
    - BOOST_REQUIRE
    - AuthLua4::loadString
    - AuthLua4::prequery
    - std::rethrow_if_nested
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_prequery)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: AuthLua4::AuthLua4
      Src: /src/pdns/pdns/test-lua_auth4_cc.cc:60,1
    - Dst: std::string
      Src: /src/pdns/pdns/test-lua_auth4_cc.cc:62,1
    - Dst: AuthLua4::loadString
      Src: /src/pdns/pdns/test-lua_auth4_cc.cc:63,1
    - Dst: DNSPacket::setRemote
      Src: /src/pdns/pdns/test-lua_auth4_cc.cc:64,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-lua_auth4_cc.cc:66,1
    - Dst: AuthLua4::updatePolicy
      Src: /src/pdns/pdns/test-lua_auth4_cc.cc:66,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-lua_auth4_cc.cc:66,1
    - Dst: QType
      Src: /src/pdns/pdns/test-lua_auth4_cc.cc:66,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-lua_auth4_cc.cc:66,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-lua_auth4_cc.cc:68,1
    - Dst: AuthLua4::updatePolicy
      Src: /src/pdns/pdns/test-lua_auth4_cc.cc:68,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-lua_auth4_cc.cc:68,1
    - Dst: QType
      Src: /src/pdns/pdns/test-lua_auth4_cc.cc:68,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-lua_auth4_cc.cc:68,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-lua_auth4_cc.cc:69,1
    - Dst: std::string
      Src: /src/pdns/pdns/test-lua_auth4_cc.cc:69,1
    - Dst: DNSPacket::setRemote
      Src: /src/pdns/pdns/test-lua_auth4_cc.cc:70,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-lua_auth4_cc.cc:71,1
    - Dst: AuthLua4::updatePolicy
      Src: /src/pdns/pdns/test-lua_auth4_cc.cc:71,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-lua_auth4_cc.cc:71,1
    - Dst: QType
      Src: /src/pdns/pdns/test-lua_auth4_cc.cc:71,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-lua_auth4_cc.cc:71,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 50
    functionDepth: 1
    functionLinenumber: 50
    functionLinenumberEnd: 72
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-lua_auth4_cc.cc
    functionUses: 0
    functionsReached:
    - QType
    - BOOST_CHECK_EQUAL
    - DNSName
    - AuthLua4::updatePolicy
    - AuthLua4::AuthLua4
    - DNSPacket::setRemote
    - std::string
    - AuthLua4::loadString
    - ComboAddress
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_updatePolicy)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: __llvm_profile_write_file
      Src: /src/pdns/pdns/coverage.cc:44,1
    - Dst: __gcov_dump
      Src: /src/pdns/pdns/coverage.cc:46,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 40
    functionDepth: 0
    functionLinenumber: 40
    functionLinenumberEnd: 49
    functionName: pdns::coverage::dumpCoverageData
    functionSourceFile: /src/pdns/pdns/coverage.cc
    functionUses: 1
    functionsReached:
    - __llvm_profile_write_file
    - __gcov_dump
    linkageType: ''
    returnType: void
    signature: void dumpCoverageData()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: __llvm_profile_write_file
      Src: /src/pdns/pdns/coverage.cc:44,1
    - Dst: __gcov_dump
      Src: /src/pdns/pdns/coverage.cc:46,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 40
    functionDepth: 0
    functionLinenumber: 40
    functionLinenumberEnd: 49
    functionName: pdns::coverage::dumpCoverageData
    functionSourceFile: /src/pdns/pdns/coverage.cc
    functionUses: 1
    functionsReached:
    - __llvm_profile_write_file
    - __gcov_dump
    linkageType: ''
    returnType: void
    signature: void dumpCoverageData()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::tuple<size_t, size_t, size_t>
      Src: /src/pdns/pdns/gss_context.cc:29,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 29
      start: 29
    functionDepth: 0
    functionLinenumber: 29
    functionLinenumberEnd: 29
    functionName: GssContext::getCounts
    functionSourceFile: /src/pdns/pdns/gss_context.cc
    functionUses: 1
    functionsReached:
    - std::tuple<size_t, size_t, size_t>
    linkageType: ''
    returnType: std::tuple<size_t, size_t, size_t>
    signature: std::tuple<size_t, size_t, size_t> GssContext::getCounts()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 30
      start: 30
    functionDepth: 0
    functionLinenumber: 30
    functionLinenumberEnd: 30
    functionName: GssContext::supported
    functionSourceFile: /src/pdns/pdns/gss_context.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool GssContext::supported()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 32
      start: 31
    functionDepth: 0
    functionLinenumber: 31
    functionLinenumberEnd: 32
    functionName: GssContext::GssContext
    functionSourceFile: /src/pdns/pdns/gss_context.cc
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void GssContext::GssContext()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 34
      start: 33
    functionDepth: 0
    functionLinenumber: 33
    functionLinenumberEnd: 34
    functionName: GssContext::GssContext
    functionSourceFile: /src/pdns/pdns/gss_context.cc
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void GssContext::GssContext(const DNSName& /* label */)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 35
      start: 35
    functionDepth: 0
    functionLinenumber: 35
    functionLinenumberEnd: 35
    functionName: GssContext::setLocalPrincipal
    functionSourceFile: /src/pdns/pdns/gss_context.cc
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void GssContext::setLocalPrincipal(const std::string& /* name */)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 36
      start: 36
    functionDepth: 0
    functionLinenumber: 36
    functionLinenumberEnd: 36
    functionName: GssContext::getLocalPrincipal
    functionSourceFile: /src/pdns/pdns/gss_context.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool GssContext::getLocalPrincipal(std::string& /* name */)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 37
    functionDepth: 0
    functionLinenumber: 37
    functionLinenumberEnd: 37
    functionName: GssContext::setPeerPrincipal
    functionSourceFile: /src/pdns/pdns/gss_context.cc
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void GssContext::setPeerPrincipal(const std::string& /* name */)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 38
    functionDepth: 0
    functionLinenumber: 38
    functionLinenumberEnd: 38
    functionName: GssContext::getPeerPrincipal
    functionSourceFile: /src/pdns/pdns/gss_context.cc
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool GssContext::getPeerPrincipal(std::string& /* name */)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 39
      start: 39
    functionDepth: 0
    functionLinenumber: 39
    functionLinenumberEnd: 39
    functionName: GssContext::generateLabel
    functionSourceFile: /src/pdns/pdns/gss_context.cc
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void GssContext::generateLabel(const std::string& /* suffix */)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 40
    functionDepth: 0
    functionLinenumber: 40
    functionLinenumberEnd: 40
    functionName: GssContext::setLabel
    functionSourceFile: /src/pdns/pdns/gss_context.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void GssContext::setLabel(const DNSName& /* label */)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 41
    functionDepth: 0
    functionLinenumber: 41
    functionLinenumberEnd: 41
    functionName: GssContext::init
    functionSourceFile: /src/pdns/pdns/gss_context.cc
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool GssContext::init(const std::string& /* input */, std::string&
      /* output */)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 42
    functionDepth: 0
    functionLinenumber: 42
    functionLinenumberEnd: 42
    functionName: GssContext::accept
    functionSourceFile: /src/pdns/pdns/gss_context.cc
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool GssContext::accept(const std::string& /* input */, std::string&
      /* output */)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 43
    functionName: GssContext::destroy
    functionSourceFile: /src/pdns/pdns/gss_context.cc
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool GssContext::destroy()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 44
    functionDepth: 0
    functionLinenumber: 44
    functionLinenumberEnd: 44
    functionName: GssContext::expired
    functionSourceFile: /src/pdns/pdns/gss_context.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool GssContext::expired()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 45
    functionDepth: 0
    functionLinenumber: 45
    functionLinenumberEnd: 45
    functionName: GssContext::valid
    functionSourceFile: /src/pdns/pdns/gss_context.cc
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool GssContext::valid()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 46
    functionDepth: 0
    functionLinenumber: 46
    functionLinenumberEnd: 46
    functionName: GssContext::sign
    functionSourceFile: /src/pdns/pdns/gss_context.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool GssContext::sign(const std::string& /* input */, std::string&
      /* output */)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 47
    functionDepth: 0
    functionLinenumber: 47
    functionLinenumberEnd: 47
    functionName: GssContext::verify
    functionSourceFile: /src/pdns/pdns/gss_context.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool GssContext::verify(const std::string& /* input */, const std::string&
      /* signature */)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 48
    functionDepth: 0
    functionLinenumber: 48
    functionLinenumberEnd: 48
    functionName: GssContext::getError
    functionSourceFile: /src/pdns/pdns/gss_context.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: GssContextError
    signature: GssContextError GssContext::getError()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/gss_context.cc:68,1
    - Dst: size
      Src: /src/pdns/pdns/gss_context.cc:69,1
    - Dst: const_cast<void*>
      Src: /src/pdns/pdns/gss_context.cc:70,1
    - Dst: static_cast<const void*>
      Src: /src/pdns/pdns/gss_context.cc:70,1
    - Dst: c_str
      Src: /src/pdns/pdns/gss_context.cc:70,1
    - Dst: gss_import_name
      Src: /src/pdns/pdns/gss_context.cc:72,1
    - Dst: GssCredential::renew
      Src: /src/pdns/pdns/gss_context.cc:80,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - ' name'
    - usage
    argTypes:
    - std::string
    - gss_cred_usage_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 63
    functionDepth: 0
    functionLinenumber: 63
    functionLinenumberEnd: 81
    functionName: GssCredential::GssCredential
    functionSourceFile: /src/pdns/pdns/gss_context.cc
    functionUses: 0
    functionsReached:
    - c_str
    - size
    - GssCredential::renew
    - gss_import_name
    - const_cast<void*>
    - empty
    - static_cast<const void*>
    linkageType: ''
    returnType: void
    signature: void GssCredential(const std::string& name, const gss_cred_usage_t
      usage)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: gss_release_cred
      Src: /src/pdns/pdns/gss_context.cc:87,1
    - Dst: gss_release_name
      Src: /src/pdns/pdns/gss_context.cc:90,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 83
    functionDepth: 0
    functionLinenumber: 83
    functionLinenumberEnd: 92
    functionName: ~GssCredential()
    functionSourceFile: /src/pdns/pdns/gss_context.cc
    functionUses: 0
    functionsReached:
    - gss_release_cred
    - gss_release_name
    linkageType: ''
    returnType: void
    signature: void ~GssCredential()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: time
      Src: /src/pdns/pdns/gss_context.cc:99,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 94
    functionDepth: 0
    functionLinenumber: 94
    functionLinenumberEnd: 100
    functionName: GssCredential::expired
    functionSourceFile: /src/pdns/pdns/gss_context.cc
    functionUses: 0
    functionsReached:
    - time
    linkageType: ''
    returnType: bool
    signature: bool expired() const
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: gss_acquire_cred
      Src: /src/pdns/pdns/gss_context.cc:105,1
    - Dst: gss_release_name
      Src: /src/pdns/pdns/gss_context.cc:109,1
    - Dst: time
      Src: /src/pdns/pdns/gss_context.cc:120,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 102
    functionDepth: 0
    functionLinenumber: 102
    functionLinenumberEnd: 123
    functionName: GssCredential::renew
    functionSourceFile: /src/pdns/pdns/gss_context.cc
    functionUses: 1
    functionsReached:
    - gss_release_name
    - time
    - gss_acquire_cred
    linkageType: ''
    returnType: bool
    signature: bool renew()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: GssCredential::expired
      Src: /src/pdns/pdns/gss_context.cc:127,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 125
    functionDepth: 0
    functionLinenumber: 125
    functionLinenumberEnd: 128
    functionName: GssCredential::valid
    functionSourceFile: /src/pdns/pdns/gss_context.cc
    functionUses: 0
    functionsReached:
    - GssCredential::expired
    linkageType: ''
    returnType: bool
    signature: bool valid()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::shared_ptr<GssCredential>::valid
      Src: /src/pdns/pdns/gss_context.cc:146,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/gss_context.cc:147,1
    - Dst: std::move
      Src: /src/pdns/pdns/gss_context.cc:149,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - cred
    argTypes:
    - std::shared_ptr<GssCredential>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 150
      start: 144
    functionDepth: 0
    functionLinenumber: 144
    functionLinenumberEnd: 150
    functionName: GssSecContext::GssSecContext
    functionSourceFile: /src/pdns/pdns/gss_context.cc
    functionUses: 0
    functionsReached:
    - PDNSException
    - std::move
    - std::shared_ptr<GssCredential>::valid
    linkageType: ''
    returnType: void
    signature: void GssSecContext(std::shared_ptr<GssCredential> cred)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: gss_delete_sec_context
      Src: /src/pdns/pdns/gss_context.cc:156,1
    - Dst: gss_release_name
      Src: /src/pdns/pdns/gss_context.cc:159,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 161
      start: 152
    functionDepth: 0
    functionLinenumber: 152
    functionLinenumberEnd: 161
    functionName: ~GssSecContext()
    functionSourceFile: /src/pdns/pdns/gss_context.cc
    functionUses: 0
    functionsReached:
    - gss_delete_sec_context
    - gss_release_name
    linkageType: ''
    returnType: void
    signature: void ~GssSecContext()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/gss_context.cc:183,1
    - Dst: auto::begin
      Src: /src/pdns/pdns/gss_context.cc:184,1
    - Dst: auto::end
      Src: /src/pdns/pdns/gss_context.cc:184,1
    - Dst: auto::erase
      Src: /src/pdns/pdns/gss_context.cc:186,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - ' m'
    - now
    argTypes:
    - T
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 192
      start: 181
    functionDepth: 0
    functionLinenumber: 181
    functionLinenumberEnd: 192
    functionName: doExpire
    functionSourceFile: /src/pdns/pdns/gss_context.cc
    functionUses: 0
    functionsReached:
    - auto::end
    - auto::erase
    - auto::begin
    - lock
    linkageType: ''
    returnType: void
    signature: void doExpire(T& m, time_t now)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/gss_context.cc:198,1
    - Dst: auto::begin
      Src: /src/pdns/pdns/gss_context.cc:199,1
    - Dst: auto::end
      Src: /src/pdns/pdns/gss_context.cc:199,1
    - Dst: auto::second::lock
      Src: /src/pdns/pdns/gss_context.cc:202,1
    - Dst: auto::erase
      Src: /src/pdns/pdns/gss_context.cc:206,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - ' m'
    - now
    argTypes:
    - T
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 212
      start: 196
    functionDepth: 0
    functionLinenumber: 196
    functionLinenumberEnd: 212
    functionName: doExpireL
    functionSourceFile: /src/pdns/pdns/gss_context.cc
    functionUses: 0
    functionsReached:
    - lock
    - auto::begin
    - auto::second::lock
    - auto::end
    - auto::erase
    linkageType: ''
    returnType: void
    signature: void doExpireL(T& m, time_t now)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: time
      Src: /src/pdns/pdns/gss_context.cc:217,1
    - Dst: doExpire
      Src: /src/pdns/pdns/gss_context.cc:222,1
    - Dst: doExpire
      Src: /src/pdns/pdns/gss_context.cc:223,1
    - Dst: doExpireL
      Src: /src/pdns/pdns/gss_context.cc:224,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 225
      start: 214
    functionDepth: 0
    functionLinenumber: 214
    functionLinenumberEnd: 225
    functionName: expire
    functionSourceFile: /src/pdns/pdns/gss_context.cc
    functionUses: 0
    functionsReached:
    - time
    - doExpire
    - doExpireL
    linkageType: ''
    returnType: void
    signature: void expire()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 227
      start: 227
    functionDepth: 0
    functionLinenumber: 227
    functionLinenumberEnd: 227
    functionName: GssContext::supported
    functionSourceFile: /src/pdns/pdns/gss_context.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool GssContext::supported()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 235
      start: 229
    functionDepth: 0
    functionLinenumber: 229
    functionLinenumberEnd: 235
    functionName: GssContext::initialize
    functionSourceFile: /src/pdns/pdns/gss_context.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void GssContext::initialize()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: GssContext::initialize
      Src: /src/pdns/pdns/gss_context.cc:239,1
    - Dst: GssContext::generateLabel
      Src: /src/pdns/pdns/gss_context.cc:240,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 241
      start: 237
    functionDepth: 0
    functionLinenumber: 237
    functionLinenumberEnd: 241
    functionName: GssContext::GssContext
    functionSourceFile: /src/pdns/pdns/gss_context.cc
    functionUses: 1
    functionsReached:
    - GssContext::initialize
    - GssContext::generateLabel
    linkageType: ''
    returnType: void
    signature: void GssContext::GssContext()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: GssContext::initialize
      Src: /src/pdns/pdns/gss_context.cc:245,1
    - Dst: GssContext::setLabel
      Src: /src/pdns/pdns/gss_context.cc:246,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ' label'
    argTypes:
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 247
      start: 243
    functionDepth: 0
    functionLinenumber: 243
    functionLinenumberEnd: 247
    functionName: GssContext::GssContext
    functionSourceFile: /src/pdns/pdns/gss_context.cc
    functionUses: 1
    functionsReached:
    - GssContext::initialize
    - GssContext::setLabel
    linkageType: ''
    returnType: void
    signature: void GssContext::GssContext(const DNSName& label)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: time
      Src: /src/pdns/pdns/gss_context.cc:252,1
    - Dst: GssContext::setLabel
      Src: /src/pdns/pdns/gss_context.cc:253,1
    - Dst: DNSName
      Src: /src/pdns/pdns/gss_context.cc:253,1
    - Dst: std::ostringstream::str
      Src: /src/pdns/pdns/gss_context.cc:253,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ' suffix'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 254
      start: 249
    functionDepth: 0
    functionLinenumber: 249
    functionLinenumberEnd: 254
    functionName: GssContext::generateLabel
    functionSourceFile: /src/pdns/pdns/gss_context.cc
    functionUses: 2
    functionsReached:
    - GssContext::setLabel
    - time
    - std::ostringstream::str
    - DNSName
    linkageType: ''
    returnType: void
    signature: void GssContext::generateLabel(const std::string& suffix)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/gss_context.cc:259,1
    - Dst: auto::find
      Src: /src/pdns/pdns/gss_context.cc:260,1
    - Dst: auto::end
      Src: /src/pdns/pdns/gss_context.cc:261,1
    - Dst: lock
      Src: /src/pdns/pdns/gss_context.cc:263,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - ' label'
    argTypes:
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 266
      start: 256
    functionDepth: 0
    functionLinenumber: 256
    functionLinenumberEnd: 266
    functionName: GssContext::setLabel
    functionSourceFile: /src/pdns/pdns/gss_context.cc
    functionUses: 2
    functionsReached:
    - auto::end
    - auto::find
    - lock
    linkageType: ''
    returnType: void
    signature: void GssContext::setLabel(const DNSName& label)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/gss_context.cc:273,1
    - Dst: time
      Src: /src/pdns/pdns/gss_context.cc:274,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 275
      start: 268
    functionDepth: 0
    functionLinenumber: 268
    functionLinenumberEnd: 275
    functionName: GssContext::expired
    functionSourceFile: /src/pdns/pdns/gss_context.cc
    functionUses: 0
    functionsReached:
    - time
    - lock
    linkageType: ''
    returnType: bool
    signature: bool GssContext::expired()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: GssContext::expired
      Src: /src/pdns/pdns/gss_context.cc:279,1
    - Dst: lock
      Src: /src/pdns/pdns/gss_context.cc:282,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 284
      start: 277
    functionDepth: 0
    functionLinenumber: 277
    functionLinenumberEnd: 284
    functionName: GssContext::valid
    functionSourceFile: /src/pdns/pdns/gss_context.cc
    functionUses: 2
    functionsReached:
    - GssContext::expired
    - lock
    linkageType: ''
    returnType: bool
    signature: bool GssContext::valid()
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/gss_context.cc:290,1
    - Dst: lock
      Src: /src/pdns/pdns/gss_context.cc:298,1
    - Dst: auto::size
      Src: /src/pdns/pdns/gss_context.cc:299,1
    - Dst: push_back
      Src: /src/pdns/pdns/gss_context.cc:301,1
    - Dst: std::make_shared<LockGuarded<GssSecContext>>
      Src: /src/pdns/pdns/gss_context.cc:304,1
    - Dst: lock
      Src: /src/pdns/pdns/gss_context.cc:306,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 1
    argNames:
    - cred
    argTypes:
    - std::shared_ptr<GssCredential>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 313
      start: 286
    functionDepth: 0
    functionLinenumber: 286
    functionLinenumberEnd: 313
    functionName: GssContext::createOrReuseContext
    functionSourceFile: /src/pdns/pdns/gss_context.cc
    functionUses: 0
    functionsReached:
    - push_back
    - std::make_shared<LockGuarded<GssSecContext>>
    - auto::size
    - lock
    linkageType: ''
    returnType: bool
    signature: bool GssContext::createOrReuseContext(std::shared_ptr<GssCredential>
      cred)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: expire
      Src: /src/pdns/pdns/gss_context.cc:317,1
    - Dst: empty
      Src: /src/pdns/pdns/gss_context.cc:325,1
    - Dst: lock
      Src: /src/pdns/pdns/gss_context.cc:333,1
    - Dst: auto::find
      Src: /src/pdns/pdns/gss_context.cc:334,1
    - Dst: auto::end
      Src: /src/pdns/pdns/gss_context.cc:335,1
    - Dst: auto::emplace
      Src: /src/pdns/pdns/gss_context.cc:336,1
    - Dst: std::make_shared<GssCredential>
      Src: /src/pdns/pdns/gss_context.cc:336,1
    - Dst: GssContext::createOrReuseContext
      Src: /src/pdns/pdns/gss_context.cc:341,1
    - Dst: size
      Src: /src/pdns/pdns/gss_context.cc:345,1
    - Dst: const_cast<void*>
      Src: /src/pdns/pdns/gss_context.cc:346,1
    - Dst: static_cast<const void*>
      Src: /src/pdns/pdns/gss_context.cc:346,1
    - Dst: c_str
      Src: /src/pdns/pdns/gss_context.cc:346,1
    - Dst: lock
      Src: /src/pdns/pdns/gss_context.cc:349,1
    - Dst: empty
      Src: /src/pdns/pdns/gss_context.cc:351,1
    - Dst: const_cast<void*>
      Src: /src/pdns/pdns/gss_context.cc:352,1
    - Dst: static_cast<const void*>
      Src: /src/pdns/pdns/gss_context.cc:352,1
    - Dst: c_str
      Src: /src/pdns/pdns/gss_context.cc:352,1
    - Dst: size
      Src: /src/pdns/pdns/gss_context.cc:353,1
    - Dst: gss_import_name
      Src: /src/pdns/pdns/gss_context.cc:354,1
    - Dst: GssContext::processError
      Src: /src/pdns/pdns/gss_context.cc:356,1
    - Dst: gss_init_sec_context
      Src: /src/pdns/pdns/gss_context.cc:361,1
    - Dst: assign
      Src: /src/pdns/pdns/gss_context.cc:364,1
    - Dst: static_cast<char*>
      Src: /src/pdns/pdns/gss_context.cc:364,1
    - Dst: gss_release_buffer
      Src: /src/pdns/pdns/gss_context.cc:365,1
    - Dst: time
      Src: /src/pdns/pdns/gss_context.cc:373,1
    - Dst: GssContext::processError
      Src: /src/pdns/pdns/gss_context.cc:378,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 44
    argCount: 2
    argNames:
    - ' input'
    - ' output'
    argTypes:
    - std::string
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 383
      start: 315
    functionDepth: 1
    functionLinenumber: 315
    functionLinenumberEnd: 383
    functionName: GssContext::init
    functionSourceFile: /src/pdns/pdns/gss_context.cc
    functionUses: 1
    functionsReached:
    - GssContext::processError
    - gss_release_buffer
    - static_cast<const void*>
    - static_cast<char*>
    - time
    - expire
    - size
    - lock
    - std::make_shared<GssCredential>
    - c_str
    - gss_import_name
    - empty
    - assign
    - auto::emplace
    - auto::find
    - gss_init_sec_context
    - GssContext::createOrReuseContext
    - const_cast<void*>
    - auto::end
    linkageType: ''
    returnType: bool
    signature: bool GssContext::init(const std::string& input, std::string& output)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: expire
      Src: /src/pdns/pdns/gss_context.cc:387,1
    - Dst: empty
      Src: /src/pdns/pdns/gss_context.cc:395,1
    - Dst: lock
      Src: /src/pdns/pdns/gss_context.cc:403,1
    - Dst: auto::find
      Src: /src/pdns/pdns/gss_context.cc:404,1
    - Dst: auto::end
      Src: /src/pdns/pdns/gss_context.cc:405,1
    - Dst: auto::emplace
      Src: /src/pdns/pdns/gss_context.cc:406,1
    - Dst: std::make_shared<GssCredential>
      Src: /src/pdns/pdns/gss_context.cc:406,1
    - Dst: GssContext::createOrReuseContext
      Src: /src/pdns/pdns/gss_context.cc:411,1
    - Dst: size
      Src: /src/pdns/pdns/gss_context.cc:415,1
    - Dst: const_cast<void*>
      Src: /src/pdns/pdns/gss_context.cc:416,1
    - Dst: static_cast<const void*>
      Src: /src/pdns/pdns/gss_context.cc:416,1
    - Dst: c_str
      Src: /src/pdns/pdns/gss_context.cc:416,1
    - Dst: lock
      Src: /src/pdns/pdns/gss_context.cc:419,1
    - Dst: gss_accept_sec_context
      Src: /src/pdns/pdns/gss_context.cc:420,1
    - Dst: assign
      Src: /src/pdns/pdns/gss_context.cc:423,1
    - Dst: static_cast<char*>
      Src: /src/pdns/pdns/gss_context.cc:423,1
    - Dst: gss_release_buffer
      Src: /src/pdns/pdns/gss_context.cc:424,1
    - Dst: time
      Src: /src/pdns/pdns/gss_context.cc:432,1
    - Dst: GssContext::processError
      Src: /src/pdns/pdns/gss_context.cc:437,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 35
    argCount: 2
    argNames:
    - ' input'
    - ' output'
    argTypes:
    - std::string
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 442
      start: 385
    functionDepth: 1
    functionLinenumber: 385
    functionLinenumberEnd: 442
    functionName: GssContext::accept
    functionSourceFile: /src/pdns/pdns/gss_context.cc
    functionUses: 1
    functionsReached:
    - assign
    - static_cast<char*>
    - gss_accept_sec_context
    - GssContext::processError
    - c_str
    - auto::end
    - time
    - expire
    - size
    - lock
    - GssContext::createOrReuseContext
    - gss_release_buffer
    - std::make_shared<GssCredential>
    - auto::emplace
    - const_cast<void*>
    - empty
    - static_cast<const void*>
    - auto::find
    linkageType: ''
    returnType: bool
    signature: bool GssContext::accept(const std::string& input, std::string& output)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/gss_context.cc:452,1
    - Dst: const_cast<void*>
      Src: /src/pdns/pdns/gss_context.cc:453,1
    - Dst: static_cast<const void*>
      Src: /src/pdns/pdns/gss_context.cc:453,1
    - Dst: c_str
      Src: /src/pdns/pdns/gss_context.cc:453,1
    - Dst: lock
      Src: /src/pdns/pdns/gss_context.cc:456,1
    - Dst: gss_get_mic
      Src: /src/pdns/pdns/gss_context.cc:457,1
    - Dst: assign
      Src: /src/pdns/pdns/gss_context.cc:461,1
    - Dst: static_cast<char*>
      Src: /src/pdns/pdns/gss_context.cc:461,1
    - Dst: gss_release_buffer
      Src: /src/pdns/pdns/gss_context.cc:462,1
    - Dst: GssContext::processError
      Src: /src/pdns/pdns/gss_context.cc:466,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 2
    argNames:
    - ' input'
    - ' output'
    argTypes:
    - std::string
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 470
      start: 444
    functionDepth: 1
    functionLinenumber: 444
    functionLinenumberEnd: 470
    functionName: GssContext::sign
    functionSourceFile: /src/pdns/pdns/gss_context.cc
    functionUses: 0
    functionsReached:
    - assign
    - static_cast<char*>
    - GssContext::processError
    - size
    - lock
    - gss_release_buffer
    - gss_get_mic
    - const_cast<void*>
    - c_str
    - static_cast<const void*>
    linkageType: ''
    returnType: bool
    signature: bool GssContext::sign(const std::string& input, std::string& output)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/gss_context.cc:479,1
    - Dst: const_cast<void*>
      Src: /src/pdns/pdns/gss_context.cc:480,1
    - Dst: static_cast<const void*>
      Src: /src/pdns/pdns/gss_context.cc:480,1
    - Dst: c_str
      Src: /src/pdns/pdns/gss_context.cc:480,1
    - Dst: size
      Src: /src/pdns/pdns/gss_context.cc:481,1
    - Dst: const_cast<void*>
      Src: /src/pdns/pdns/gss_context.cc:482,1
    - Dst: static_cast<const void*>
      Src: /src/pdns/pdns/gss_context.cc:482,1
    - Dst: c_str
      Src: /src/pdns/pdns/gss_context.cc:482,1
    - Dst: lock
      Src: /src/pdns/pdns/gss_context.cc:485,1
    - Dst: gss_verify_mic
      Src: /src/pdns/pdns/gss_context.cc:486,1
    - Dst: GssContext::processError
      Src: /src/pdns/pdns/gss_context.cc:490,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 2
    argNames:
    - ' input'
    - ' signature'
    argTypes:
    - std::string
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 494
      start: 472
    functionDepth: 0
    functionLinenumber: 472
    functionLinenumberEnd: 494
    functionName: GssContext::verify
    functionSourceFile: /src/pdns/pdns/gss_context.cc
    functionUses: 0
    functionsReached:
    - GssContext::processError
    - size
    - lock
    - gss_verify_mic
    - const_cast<void*>
    - c_str
    - static_cast<const void*>
    linkageType: ''
    returnType: bool
    signature: bool GssContext::verify(const std::string& input, const std::string&
      signature)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/gss_context.cc:498,1
    - Dst: lock
      Src: /src/pdns/pdns/gss_context.cc:501,1
    - Dst: auto::erase
      Src: /src/pdns/pdns/gss_context.cc:502,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 503
      start: 496
    functionDepth: 0
    functionLinenumber: 496
    functionLinenumberEnd: 503
    functionName: GssContext::destroy
    functionSourceFile: /src/pdns/pdns/gss_context.cc
    functionUses: 2
    functionsReached:
    - empty
    - auto::erase
    - lock
    linkageType: ''
    returnType: bool
    signature: bool GssContext::destroy()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' name'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 508
      start: 505
    functionDepth: 0
    functionLinenumber: 505
    functionLinenumberEnd: 508
    functionName: GssContext::setLocalPrincipal
    functionSourceFile: /src/pdns/pdns/gss_context.cc
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void GssContext::setLocalPrincipal(const std::string& name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/gss_context.cc:513,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ' name'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 514
      start: 510
    functionDepth: 0
    functionLinenumber: 510
    functionLinenumberEnd: 514
    functionName: GssContext::getLocalPrincipal
    functionSourceFile: /src/pdns/pdns/gss_context.cc
    functionUses: 0
    functionsReached:
    - size
    linkageType: ''
    returnType: bool
    signature: bool GssContext::getLocalPrincipal(std::string& name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' name'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 519
      start: 516
    functionDepth: 0
    functionLinenumber: 516
    functionLinenumberEnd: 519
    functionName: GssContext::setPeerPrincipal
    functionSourceFile: /src/pdns/pdns/gss_context.cc
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void GssContext::setPeerPrincipal(const std::string& name)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/gss_context.cc:527,1
    - Dst: gss_display_name
      Src: /src/pdns/pdns/gss_context.cc:529,1
    - Dst: assign
      Src: /src/pdns/pdns/gss_context.cc:531,1
    - Dst: static_cast<char*>
      Src: /src/pdns/pdns/gss_context.cc:531,1
    - Dst: gss_release_buffer
      Src: /src/pdns/pdns/gss_context.cc:532,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 1
    argNames:
    - ' name'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 543
      start: 521
    functionDepth: 1
    functionLinenumber: 521
    functionLinenumberEnd: 543
    functionName: GssContext::getPeerPrincipal
    functionSourceFile: /src/pdns/pdns/gss_context.cc
    functionUses: 1
    functionsReached:
    - gss_display_name
    - assign
    - static_cast<char*>
    - gss_release_buffer
    - lock
    linkageType: ''
    returnType: bool
    signature: bool GssContext::getPeerPrincipal(std::string& name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/gss_context.cc:547,1
    - Dst: lock
      Src: /src/pdns/pdns/gss_context.cc:547,1
    - Dst: lock
      Src: /src/pdns/pdns/gss_context.cc:547,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 548
      start: 545
    functionDepth: 0
    functionLinenumber: 545
    functionLinenumberEnd: 548
    functionName: GssContext::getCounts
    functionSourceFile: /src/pdns/pdns/gss_context.cc
    functionUses: 1
    functionsReached:
    - lock
    linkageType: ''
    returnType: std::tuple<size_t, size_t, size_t>
    signature: std::tuple<size_t, size_t, size_t> GssContext::getCounts()
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: gss_display_status
      Src: /src/pdns/pdns/gss_context.cc:559,1
    - Dst: gss_release_buffer
      Src: /src/pdns/pdns/gss_context.cc:566,1
    - Dst: push_back
      Src: /src/pdns/pdns/gss_context.cc:568,1
    - Dst: ostringstream::str
      Src: /src/pdns/pdns/gss_context.cc:568,1
    - Dst: gss_display_status
      Src: /src/pdns/pdns/gss_context.cc:575,1
    - Dst: gss_release_buffer
      Src: /src/pdns/pdns/gss_context.cc:582,1
    - Dst: push_back
      Src: /src/pdns/pdns/gss_context.cc:584,1
    - Dst: ostringstream::str
      Src: /src/pdns/pdns/gss_context.cc:584,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 29
    argCount: 3
    argNames:
    - ' method'
    - maj
    - min
    argTypes:
    - std::string
    - OM_uint32
    - OM_uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 588
      start: 550
    functionDepth: 0
    functionLinenumber: 550
    functionLinenumberEnd: 588
    functionName: GssContext::processError
    functionSourceFile: /src/pdns/pdns/gss_context.cc
    functionUses: 4
    functionsReached:
    - push_back
    - ostringstream::str
    - gss_display_status
    - gss_release_buffer
    linkageType: ''
    returnType: void
    signature: void GssContext::processError(const std::string& method, OM_uint32
      maj, OM_uint32 min)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: GssContext::valid
      Src: /src/pdns/pdns/gss_context.cc:596,1
    - Dst: GssContext::getErrorStrings
      Src: /src/pdns/pdns/gss_context.cc:598,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/gss_context.cc:599,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/gss_context.cc:599,1
    - Dst: Logging::IterLoggable
      Src: /src/pdns/pdns/gss_context.cc:599,1
    - Dst: auto::cbegin
      Src: /src/pdns/pdns/gss_context.cc:599,1
    - Dst: auto::cend
      Src: /src/pdns/pdns/gss_context.cc:599,1
    - Dst: GssContext::getErrorStrings
      Src: /src/pdns/pdns/gss_context.cc:603,1
    - Dst: GssContext::sign
      Src: /src/pdns/pdns/gss_context.cc:610,1
    - Dst: GssContext::getErrorStrings
      Src: /src/pdns/pdns/gss_context.cc:612,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/gss_context.cc:613,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/gss_context.cc:613,1
    - Dst: Logging::IterLoggable
      Src: /src/pdns/pdns/gss_context.cc:613,1
    - Dst: auto::cbegin
      Src: /src/pdns/pdns/gss_context.cc:613,1
    - Dst: auto::cend
      Src: /src/pdns/pdns/gss_context.cc:613,1
    - Dst: GssContext::getErrorStrings
      Src: /src/pdns/pdns/gss_context.cc:617,1
    - Dst: std::move
      Src: /src/pdns/pdns/gss_context.cc:623,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 23
    argCount: 4
    argNames:
    - slog
    - ' context'
    - ' message'
    - ' mac'
    argTypes:
    - Logr::log_t
    - DNSName
    - std::string
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 625
      start: 592
    functionDepth: 0
    functionLinenumber: 592
    functionLinenumberEnd: 625
    functionName: gss_add_signature
    functionSourceFile: /src/pdns/pdns/gss_context.cc
    functionUses: 1
    functionsReached:
    - std::move
    - Logr::log_t::info
    - Logging::Loggable
    - GssContext::getErrorStrings
    - auto::cbegin
    - Logging::IterLoggable
    - GssContext::sign
    - GssContext::valid
    - auto::cend
    linkageType: ''
    returnType: bool
    signature: bool gss_add_signature(Logr::log_t slog, const DNSName& context, const
      std::string& message, std::string& mac)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: GssContext::valid
      Src: /src/pdns/pdns/gss_context.cc:630,1
    - Dst: GssContext::getErrorStrings
      Src: /src/pdns/pdns/gss_context.cc:632,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/gss_context.cc:633,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/gss_context.cc:633,1
    - Dst: Logging::IterLoggable
      Src: /src/pdns/pdns/gss_context.cc:633,1
    - Dst: auto::cbegin
      Src: /src/pdns/pdns/gss_context.cc:633,1
    - Dst: auto::cend
      Src: /src/pdns/pdns/gss_context.cc:633,1
    - Dst: GssContext::getErrorStrings
      Src: /src/pdns/pdns/gss_context.cc:637,1
    - Dst: GssContext::verify
      Src: /src/pdns/pdns/gss_context.cc:644,1
    - Dst: GssContext::getErrorStrings
      Src: /src/pdns/pdns/gss_context.cc:646,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/gss_context.cc:647,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/gss_context.cc:647,1
    - Dst: Logging::IterLoggable
      Src: /src/pdns/pdns/gss_context.cc:647,1
    - Dst: auto::cbegin
      Src: /src/pdns/pdns/gss_context.cc:647,1
    - Dst: auto::cend
      Src: /src/pdns/pdns/gss_context.cc:647,1
    - Dst: GssContext::getErrorStrings
      Src: /src/pdns/pdns/gss_context.cc:651,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 22
    argCount: 4
    argNames:
    - slog
    - ' context'
    - ' message'
    - ' mac'
    argTypes:
    - Logr::log_t
    - DNSName
    - std::string
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 658
      start: 627
    functionDepth: 0
    functionLinenumber: 627
    functionLinenumberEnd: 658
    functionName: gss_verify_signature
    functionSourceFile: /src/pdns/pdns/gss_context.cc
    functionUses: 1
    functionsReached:
    - Logr::log_t::info
    - Logging::Loggable
    - GssContext::getErrorStrings
    - auto::cbegin
    - GssContext::verify
    - Logging::IterLoggable
    - GssContext::valid
    - auto::cend
    linkageType: ''
    returnType: bool
    signature: bool gss_verify_signature(Logr::log_t slog, const DNSName& context,
      const std::string& message, const std::string& mac)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/query-local-address.cc:36,1
    - Dst: size
      Src: /src/pdns/pdns/query-local-address.cc:38,1
    - Dst: at
      Src: /src/pdns/pdns/query-local-address.cc:39,1
    - Dst: dns_random
      Src: /src/pdns/pdns/query-local-address.cc:41,1
    - Dst: size
      Src: /src/pdns/pdns/query-local-address.cc:41,1
    - Dst: htons
      Src: /src/pdns/pdns/query-local-address.cc:43,1
    - Dst: empty
      Src: /src/pdns/pdns/query-local-address.cc:46,1
    - Dst: size
      Src: /src/pdns/pdns/query-local-address.cc:48,1
    - Dst: at
      Src: /src/pdns/pdns/query-local-address.cc:49,1
    - Dst: dns_random
      Src: /src/pdns/pdns/query-local-address.cc:51,1
    - Dst: size
      Src: /src/pdns/pdns/query-local-address.cc:51,1
    - Dst: htons
      Src: /src/pdns/pdns/query-local-address.cc:53,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 23
    argCount: 2
    argNames:
    - family
    - port
    argTypes:
    - sa_family_t
    - in_port_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 33
    functionDepth: 0
    functionLinenumber: 33
    functionLinenumberEnd: 56
    functionName: pdns::getQueryLocalAddress
    functionSourceFile: /src/pdns/pdns/query-local-address.cc
    functionUses: 2
    functionsReached:
    - dns_random
    - size
    - empty
    - at
    - htons
    linkageType: ''
    returnType: ComboAddress
    signature: ComboAddress getQueryLocalAddress(const sa_family_t family, const in_port_t
      port)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: IsAnyAddress
      Src: /src/pdns/pdns/query-local-address.cc:61,1
    - Dst: IsAnyAddress
      Src: /src/pdns/pdns/query-local-address.cc:68,1
    - Dst: ComboAddress::reset
      Src: /src/pdns/pdns/query-local-address.cc:74,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 1
    argNames:
    - family
    argTypes:
    - sa_family_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 58
    functionDepth: 0
    functionLinenumber: 58
    functionLinenumberEnd: 76
    functionName: pdns::getNonAnyQueryLocalAddress
    functionSourceFile: /src/pdns/pdns/query-local-address.cc
    functionUses: 0
    functionsReached:
    - IsAnyAddress
    - ComboAddress::reset
    linkageType: ''
    returnType: ComboAddress
    signature: ComboAddress getNonAnyQueryLocalAddress(const sa_family_t family)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: stringtok
      Src: /src/pdns/pdns/query-local-address.cc:80,1
    - Dst: ComboAddress::isIPv4
      Src: /src/pdns/pdns/query-local-address.cc:83,1
    - Dst: push_back
      Src: /src/pdns/pdns/query-local-address.cc:84,1
    - Dst: push_back
      Src: /src/pdns/pdns/query-local-address.cc:87,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - qla
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 78
    functionDepth: 0
    functionLinenumber: 78
    functionLinenumberEnd: 89
    functionName: pdns::parseQueryLocalAddress
    functionSourceFile: /src/pdns/pdns/query-local-address.cc
    functionUses: 2
    functionsReached:
    - push_back
    - stringtok
    - ComboAddress::isIPv4
    linkageType: ''
    returnType: void
    signature: void parseQueryLocalAddress(const std::string &qla)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/query-local-address.cc:93,1
    - Dst: empty
      Src: /src/pdns/pdns/query-local-address.cc:96,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - family
    argTypes:
    - sa_family_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 91
    functionDepth: 0
    functionLinenumber: 91
    functionLinenumberEnd: 99
    functionName: pdns::isQueryLocalAddressFamilyEnabled
    functionSourceFile: /src/pdns/pdns/query-local-address.cc
    functionUses: 1
    functionsReached:
    - empty
    linkageType: ''
    returnType: bool
    signature: bool isQueryLocalAddressFamilyEnabled(const sa_family_t family)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/query-local-address.cc:36,1
    - Dst: size
      Src: /src/pdns/pdns/query-local-address.cc:38,1
    - Dst: at
      Src: /src/pdns/pdns/query-local-address.cc:39,1
    - Dst: dns_random
      Src: /src/pdns/pdns/query-local-address.cc:41,1
    - Dst: size
      Src: /src/pdns/pdns/query-local-address.cc:41,1
    - Dst: htons
      Src: /src/pdns/pdns/query-local-address.cc:43,1
    - Dst: empty
      Src: /src/pdns/pdns/query-local-address.cc:46,1
    - Dst: size
      Src: /src/pdns/pdns/query-local-address.cc:48,1
    - Dst: at
      Src: /src/pdns/pdns/query-local-address.cc:49,1
    - Dst: dns_random
      Src: /src/pdns/pdns/query-local-address.cc:51,1
    - Dst: size
      Src: /src/pdns/pdns/query-local-address.cc:51,1
    - Dst: htons
      Src: /src/pdns/pdns/query-local-address.cc:53,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 23
    argCount: 2
    argNames:
    - family
    - port
    argTypes:
    - sa_family_t
    - in_port_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 33
    functionDepth: 0
    functionLinenumber: 33
    functionLinenumberEnd: 56
    functionName: pdns::getQueryLocalAddress
    functionSourceFile: /src/pdns/pdns/query-local-address.cc
    functionUses: 2
    functionsReached:
    - dns_random
    - size
    - empty
    - at
    - htons
    linkageType: ''
    returnType: ComboAddress
    signature: ComboAddress getQueryLocalAddress(const sa_family_t family, const in_port_t
      port)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: IsAnyAddress
      Src: /src/pdns/pdns/query-local-address.cc:61,1
    - Dst: IsAnyAddress
      Src: /src/pdns/pdns/query-local-address.cc:68,1
    - Dst: ComboAddress::reset
      Src: /src/pdns/pdns/query-local-address.cc:74,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 1
    argNames:
    - family
    argTypes:
    - sa_family_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 58
    functionDepth: 0
    functionLinenumber: 58
    functionLinenumberEnd: 76
    functionName: pdns::getNonAnyQueryLocalAddress
    functionSourceFile: /src/pdns/pdns/query-local-address.cc
    functionUses: 0
    functionsReached:
    - IsAnyAddress
    - ComboAddress::reset
    linkageType: ''
    returnType: ComboAddress
    signature: ComboAddress getNonAnyQueryLocalAddress(const sa_family_t family)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: stringtok
      Src: /src/pdns/pdns/query-local-address.cc:80,1
    - Dst: ComboAddress::isIPv4
      Src: /src/pdns/pdns/query-local-address.cc:83,1
    - Dst: push_back
      Src: /src/pdns/pdns/query-local-address.cc:84,1
    - Dst: push_back
      Src: /src/pdns/pdns/query-local-address.cc:87,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - qla
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 78
    functionDepth: 0
    functionLinenumber: 78
    functionLinenumberEnd: 89
    functionName: pdns::parseQueryLocalAddress
    functionSourceFile: /src/pdns/pdns/query-local-address.cc
    functionUses: 2
    functionsReached:
    - push_back
    - stringtok
    - ComboAddress::isIPv4
    linkageType: ''
    returnType: void
    signature: void parseQueryLocalAddress(const std::string &qla)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/query-local-address.cc:93,1
    - Dst: empty
      Src: /src/pdns/pdns/query-local-address.cc:96,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - family
    argTypes:
    - sa_family_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 91
    functionDepth: 0
    functionLinenumber: 91
    functionLinenumberEnd: 99
    functionName: pdns::isQueryLocalAddressFamilyEnabled
    functionSourceFile: /src/pdns/pdns/query-local-address.cc
    functionUses: 1
    functionsReached:
    - empty
    linkageType: ''
    returnType: bool
    signature: bool isQueryLocalAddressFamilyEnabled(const sa_family_t family)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: socket
      Src: /src/pdns/pdns/resolver.cc:60,1
    - Dst: unixDie
      Src: /src/pdns/pdns/resolver.cc:65,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/resolver.cc:65,1
    - Dst: setCloseOnExec
      Src: /src/pdns/pdns/resolver.cc:68,1
    - Dst: Utility::setBindAny
      Src: /src/pdns/pdns/resolver.cc:71,1
    - Dst: htons
      Src: /src/pdns/pdns/resolver.cc:77,1
    - Dst: dns_random
      Src: /src/pdns/pdns/resolver.cc:77,1
    - Dst: Socket::bind
      Src: /src/pdns/pdns/resolver.cc:79,1
    - Dst: ComboAddress::getSocklen
      Src: /src/pdns/pdns/resolver.cc:79,1
    - Dst: closesocket
      Src: /src/pdns/pdns/resolver.cc:85,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/resolver.cc:86,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/resolver.cc:86,1
    - Dst: stringerror
      Src: /src/pdns/pdns/resolver.cc:86,1
    - Dst: Socket::bind
      Src: /src/pdns/pdns/resolver.cc:92,1
    - Dst: ComboAddress::getSocklen
      Src: /src/pdns/pdns/resolver.cc:92,1
    - Dst: closesocket
      Src: /src/pdns/pdns/resolver.cc:93,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/resolver.cc:94,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/resolver.cc:94,1
    - Dst: stringerror
      Src: /src/pdns/pdns/resolver.cc:94,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 28
    argCount: 3
    argNames:
    - ' local'
    - udpOrTCP
    - nonLocalBind
    argTypes:
    - ComboAddress
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 56
    functionDepth: 0
    functionLinenumber: 56
    functionLinenumberEnd: 98
    functionName: makeQuerySocket
    functionSourceFile: /src/pdns/pdns/resolver.cc
    functionUses: 1
    functionsReached:
    - socket
    - dns_random
    - closesocket
    - unixDie
    - PDNSException
    - stringerror
    - setCloseOnExec
    - Utility::setBindAny
    - ComboAddress::toString
    - Socket::bind
    - ComboAddress::getSocklen
    - htons
    linkageType: ''
    returnType: int
    signature: int makeQuerySocket(const ComboAddress& local, bool udpOrTCP, bool
      nonLocalBind)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pdns::isQueryLocalAddressFamilyEnabled
      Src: /src/pdns/pdns/resolver.cc:105,1
    - Dst: makeQuerySocket
      Src: /src/pdns/pdns/resolver.cc:106,1
    - Dst: pdns::getQueryLocalAddress
      Src: /src/pdns/pdns/resolver.cc:106,1
    - Dst: arg
      Src: /src/pdns/pdns/resolver.cc:106,1
    - Dst: pdns::isQueryLocalAddressFamilyEnabled
      Src: /src/pdns/pdns/resolver.cc:108,1
    - Dst: makeQuerySocket
      Src: /src/pdns/pdns/resolver.cc:109,1
    - Dst: pdns::getQueryLocalAddress
      Src: /src/pdns/pdns/resolver.cc:109,1
    - Dst: arg
      Src: /src/pdns/pdns/resolver.cc:109,1
    - Dst: close
      Src: /src/pdns/pdns/resolver.cc:114,1
    - Dst: close
      Src: /src/pdns/pdns/resolver.cc:116,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 1
    argNames:
    - slog
    argTypes:
    - Logr::log_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 119
      start: 100
    functionDepth: 0
    functionLinenumber: 100
    functionLinenumberEnd: 119
    functionName: Resolver::Resolver
    functionSourceFile: /src/pdns/pdns/resolver.cc
    functionUses: 0
    functionsReached:
    - pdns::getQueryLocalAddress
    - makeQuerySocket
    - pdns::isQueryLocalAddressFamilyEnabled
    - arg
    - close
    linkageType: ''
    returnType: void
    signature: void Resolver::Resolver(Logr::log_t slog)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: close
      Src: /src/pdns/pdns/resolver.cc:125,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 127
      start: 121
    functionDepth: 0
    functionLinenumber: 121
    functionLinenumberEnd: 127
    functionName: Resolver::~Resolver()
    functionSourceFile: /src/pdns/pdns/resolver.cc
    functionUses: 0
    functionsReached:
    - close
    linkageType: ''
    returnType: void
    signature: void Resolver::~Resolver()
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/resolver.cc:137,1
    - Dst: dns_random_uint16
      Src: /src/pdns/pdns/resolver.cc:137,1
    - Dst: DNSPacketWriter::addOpt
      Src: /src/pdns/pdns/resolver.cc:140,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/resolver.cc:141,1
    - Dst: empty
      Src: /src/pdns/pdns/resolver.cc:144,1
    - Dst: TSIGRecordContent::TSIGRecordContent
      Src: /src/pdns/pdns/resolver.cc:146,1
    - Dst: time
      Src: /src/pdns/pdns/resolver.cc:153,1
    - Dst: ntohs
      Src: /src/pdns/pdns/resolver.cc:155,1
    - Dst: addTSIG
      Src: /src/pdns/pdns/resolver.cc:157,1
    - Dst: pdns::isQueryLocalAddressFamilyEnabled
      Src: /src/pdns/pdns/resolver.cc:165,1
    - Dst: ResolverException
      Src: /src/pdns/pdns/resolver.cc:167,1
    - Dst: toString
      Src: /src/pdns/pdns/resolver.cc:171,1
    - Dst: find
      Src: /src/pdns/pdns/resolver.cc:175,1
    - Dst: end
      Src: /src/pdns/pdns/resolver.cc:175,1
    - Dst: makeQuerySocket
      Src: /src/pdns/pdns/resolver.cc:179,1
    - Dst: ResolverException
      Src: /src/pdns/pdns/resolver.cc:181,1
    - Dst: toLogString
      Src: /src/pdns/pdns/resolver.cc:181,1
    - Dst: stringerror
      Src: /src/pdns/pdns/resolver.cc:181,1
    - Dst: setNonBlocking
      Src: /src/pdns/pdns/resolver.cc:182,1
    - Dst: sendto
      Src: /src/pdns/pdns/resolver.cc:190,1
    - Dst: vector::size
      Src: /src/pdns/pdns/resolver.cc:190,1
    - Dst: getSocklen
      Src: /src/pdns/pdns/resolver.cc:190,1
    - Dst: ResolverException
      Src: /src/pdns/pdns/resolver.cc:191,1
    - Dst: toLogString
      Src: /src/pdns/pdns/resolver.cc:191,1
    - Dst: stringerror
      Src: /src/pdns/pdns/resolver.cc:191,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 41
    argCount: 9
    argNames:
    - ' remote'
    - ' local'
    - domain
    - type
    - localsock
    - dnssecOK
    - ' tsigkeyname'
    - ' tsigalgorithm'
    - ' tsigsecret'
    argTypes:
    - ComboAddress
    - ComboAddress
    - DNSName
    - int
    - int*
    - bool
    - DNSName
    - DNSName
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 194
      start: 129
    functionDepth: 1
    functionLinenumber: 129
    functionLinenumberEnd: 194
    functionName: Resolver::sendResolve
    functionSourceFile: /src/pdns/pdns/resolver.cc
    functionUses: 0
    functionsReached:
    - toLogString
    - toString
    - ntohs
    - stringerror
    - dns_random_uint16
    - TSIGRecordContent::TSIGRecordContent
    - find
    - setNonBlocking
    - time
    - DNSPacketWriter::getHeader
    - ResolverException
    - empty
    - DNSPacketWriter::commit
    - getSocklen
    - makeQuerySocket
    - addTSIG
    - end
    - DNSPacketWriter::addOpt
    - sendto
    - vector::size
    - pdns::isQueryLocalAddressFamilyEnabled
    linkageType: ''
    returnType: uint16_t
    signature: "uint16_t Resolver::sendResolve(const ComboAddress& remote, const ComboAddress&
      local,\n                               const DNSName &domain, int type, int
      *localsock, bool dnssecOK,\n                               const DNSName& tsigkeyname,
      const DNSName& tsigalgorithm,\n                               const string&
      tsigsecret)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: Resolver::res_t*::clear
      Src: /src/pdns/pdns/resolver.cc:200,1
    - Dst: hasLabels
      Src: /src/pdns/pdns/resolver.cc:205,1
    - Dst: ResolverException
      Src: /src/pdns/pdns/resolver.cc:207,1
    - Dst: ResolverException
      Src: /src/pdns/pdns/resolver.cc:209,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/resolver.cc:209,1
    - Dst: ResolverException
      Src: /src/pdns/pdns/resolver.cc:211,1
    - Dst: string
      Src: /src/pdns/pdns/resolver.cc:211,1
    - Dst: d_qname::toLogString
      Src: /src/pdns/pdns/resolver.cc:211,1
    - Dst: toLogString
      Src: /src/pdns/pdns/resolver.cc:211,1
    - Dst: Resolver::res_t*::reserve
      Src: /src/pdns/pdns/resolver.cc:216,1
    - Dst: d_answers::size
      Src: /src/pdns/pdns/resolver.cc:216,1
    - Dst: getContent
      Src: /src/pdns/pdns/resolver.cc:222,1
    - Dst: Resolver::res_t*::push_back
      Src: /src/pdns/pdns/resolver.cc:223,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 20
    argCount: 4
    argNames:
    - ' mdp'
    - ' origQname'
    - id
    - result
    argTypes:
    - MOADNSParser
    - DNSName
    - uint16_t
    - Resolver::res_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 227
      start: 198
    functionDepth: 1
    functionLinenumber: 198
    functionLinenumberEnd: 227
    functionName: pdns::resolver::parseResult
    functionSourceFile: /src/pdns/pdns/resolver.cc
    functionUses: 0
    functionsReached:
    - toLogString
    - d_qname::toLogString
    - std::to_string
    - Resolver::res_t*::clear
    - d_answers::size
    - string
    - Resolver::res_t*::reserve
    - getContent
    - ResolverException
    - Resolver::res_t*::push_back
    - hasLabels
    linkageType: ''
    returnType: int
    signature: int parseResult(MOADNSParser& mdp, const DNSName& origQname, uint16_t
      /* origQtype */, uint16_t id, Resolver::res_t* result)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: Resolver::res_t*::clear
      Src: /src/pdns/pdns/resolver.cc:200,1
    - Dst: hasLabels
      Src: /src/pdns/pdns/resolver.cc:205,1
    - Dst: ResolverException
      Src: /src/pdns/pdns/resolver.cc:207,1
    - Dst: ResolverException
      Src: /src/pdns/pdns/resolver.cc:209,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/resolver.cc:209,1
    - Dst: ResolverException
      Src: /src/pdns/pdns/resolver.cc:211,1
    - Dst: string
      Src: /src/pdns/pdns/resolver.cc:211,1
    - Dst: d_qname::toLogString
      Src: /src/pdns/pdns/resolver.cc:211,1
    - Dst: toLogString
      Src: /src/pdns/pdns/resolver.cc:211,1
    - Dst: Resolver::res_t*::reserve
      Src: /src/pdns/pdns/resolver.cc:216,1
    - Dst: d_answers::size
      Src: /src/pdns/pdns/resolver.cc:216,1
    - Dst: getContent
      Src: /src/pdns/pdns/resolver.cc:222,1
    - Dst: Resolver::res_t*::push_back
      Src: /src/pdns/pdns/resolver.cc:223,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 20
    argCount: 4
    argNames:
    - ' mdp'
    - ' origQname'
    - id
    - result
    argTypes:
    - MOADNSParser
    - DNSName
    - uint16_t
    - Resolver::res_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 227
      start: 198
    functionDepth: 1
    functionLinenumber: 198
    functionLinenumberEnd: 227
    functionName: pdns::resolver::parseResult
    functionSourceFile: /src/pdns/pdns/resolver.cc
    functionUses: 0
    functionsReached:
    - toLogString
    - d_qname::toLogString
    - std::to_string
    - Resolver::res_t*::clear
    - d_answers::size
    - string
    - Resolver::res_t*::reserve
    - getContent
    - ResolverException
    - Resolver::res_t*::push_back
    - hasLabels
    linkageType: ''
    returnType: int
    signature: int parseResult(MOADNSParser& mdp, const DNSName& origQname, uint16_t
      /* origQtype */, uint16_t id, Resolver::res_t* result)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: Resolver::res_t*::clear
      Src: /src/pdns/pdns/resolver.cc:200,1
    - Dst: hasLabels
      Src: /src/pdns/pdns/resolver.cc:205,1
    - Dst: ResolverException
      Src: /src/pdns/pdns/resolver.cc:207,1
    - Dst: ResolverException
      Src: /src/pdns/pdns/resolver.cc:209,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/resolver.cc:209,1
    - Dst: ResolverException
      Src: /src/pdns/pdns/resolver.cc:211,1
    - Dst: string
      Src: /src/pdns/pdns/resolver.cc:211,1
    - Dst: d_qname::toLogString
      Src: /src/pdns/pdns/resolver.cc:211,1
    - Dst: toLogString
      Src: /src/pdns/pdns/resolver.cc:211,1
    - Dst: Resolver::res_t*::reserve
      Src: /src/pdns/pdns/resolver.cc:216,1
    - Dst: d_answers::size
      Src: /src/pdns/pdns/resolver.cc:216,1
    - Dst: getContent
      Src: /src/pdns/pdns/resolver.cc:222,1
    - Dst: Resolver::res_t*::push_back
      Src: /src/pdns/pdns/resolver.cc:223,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 20
    argCount: 4
    argNames:
    - ' mdp'
    - ' origQname'
    - id
    - result
    argTypes:
    - MOADNSParser
    - DNSName
    - uint16_t
    - Resolver::res_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 227
      start: 198
    functionDepth: 1
    functionLinenumber: 198
    functionLinenumberEnd: 227
    functionName: pdns::resolver::parseResult
    functionSourceFile: /src/pdns/pdns/resolver.cc
    functionUses: 0
    functionsReached:
    - toLogString
    - d_qname::toLogString
    - std::to_string
    - Resolver::res_t*::clear
    - d_answers::size
    - string
    - Resolver::res_t*::reserve
    - getContent
    - ResolverException
    - Resolver::res_t*::push_back
    - hasLabels
    linkageType: ''
    returnType: int
    signature: int parseResult(MOADNSParser& mdp, const DNSName& origQname, uint16_t
      /* origQtype */, uint16_t id, Resolver::res_t* result)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: Resolver::res_t*::clear
      Src: /src/pdns/pdns/resolver.cc:200,1
    - Dst: hasLabels
      Src: /src/pdns/pdns/resolver.cc:205,1
    - Dst: ResolverException
      Src: /src/pdns/pdns/resolver.cc:207,1
    - Dst: ResolverException
      Src: /src/pdns/pdns/resolver.cc:209,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/resolver.cc:209,1
    - Dst: ResolverException
      Src: /src/pdns/pdns/resolver.cc:211,1
    - Dst: string
      Src: /src/pdns/pdns/resolver.cc:211,1
    - Dst: d_qname::toLogString
      Src: /src/pdns/pdns/resolver.cc:211,1
    - Dst: toLogString
      Src: /src/pdns/pdns/resolver.cc:211,1
    - Dst: Resolver::res_t*::reserve
      Src: /src/pdns/pdns/resolver.cc:216,1
    - Dst: d_answers::size
      Src: /src/pdns/pdns/resolver.cc:216,1
    - Dst: getContent
      Src: /src/pdns/pdns/resolver.cc:222,1
    - Dst: Resolver::res_t*::push_back
      Src: /src/pdns/pdns/resolver.cc:223,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 20
    argCount: 4
    argNames:
    - ' mdp'
    - ' origQname'
    - id
    - result
    argTypes:
    - MOADNSParser
    - DNSName
    - uint16_t
    - Resolver::res_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 227
      start: 198
    functionDepth: 1
    functionLinenumber: 198
    functionLinenumberEnd: 227
    functionName: pdns::resolver::parseResult
    functionSourceFile: /src/pdns/pdns/resolver.cc
    functionUses: 0
    functionsReached:
    - toLogString
    - d_qname::toLogString
    - std::to_string
    - Resolver::res_t*::clear
    - d_answers::size
    - string
    - Resolver::res_t*::reserve
    - getContent
    - ResolverException
    - Resolver::res_t*::push_back
    - hasLabels
    linkageType: ''
    returnType: int
    signature: int parseResult(MOADNSParser& mdp, const DNSName& origQname, uint16_t
      /* origQtype */, uint16_t id, Resolver::res_t* result)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: std::make_unique<struct pollfd[]>
      Src: /src/pdns/pdns/resolver.cc:234,1
    - Dst: size
      Src: /src/pdns/pdns/resolver.cc:234,1
    - Dst: poll
      Src: /src/pdns/pdns/resolver.cc:244,1
    - Dst: auto::get
      Src: /src/pdns/pdns/resolver.cc:244,1
    - Dst: ComboAddress*::getSocklen
      Src: /src/pdns/pdns/resolver.cc:262,1
    - Dst: recvfrom
      Src: /src/pdns/pdns/resolver.cc:264,1
    - Dst: ResolverException
      Src: /src/pdns/pdns/resolver.cc:269,1
    - Dst: stringerror
      Src: /src/pdns/pdns/resolver.cc:269,1
    - Dst: DNSName*::empty
      Src: /src/pdns/pdns/resolver.cc:278,1
    - Dst: ResolverException
      Src: /src/pdns/pdns/resolver.cc:279,1
    - Dst: ComboAddress*::toLogString
      Src: /src/pdns/pdns/resolver.cc:279,1
    - Dst: RCode::to_s
      Src: /src/pdns/pdns/resolver.cc:279,1
    - Dst: MOADNSParser::d_answers::empty
      Src: /src/pdns/pdns/resolver.cc:282,1
    - Dst: ResolverException
      Src: /src/pdns/pdns/resolver.cc:283,1
    - Dst: ComboAddress*::toLogString
      Src: /src/pdns/pdns/resolver.cc:283,1
    - Dst: DNSName*::toLogString
      Src: /src/pdns/pdns/resolver.cc:283,1
    - Dst: RCode::to_s
      Src: /src/pdns/pdns/resolver.cc:283,1
    - Dst: ResolverException
      Src: /src/pdns/pdns/resolver.cc:287,1
    - Dst: ComboAddress*::toLogString
      Src: /src/pdns/pdns/resolver.cc:287,1
    - Dst: DNSName*::toLogString
      Src: /src/pdns/pdns/resolver.cc:287,1
    - Dst: ResolverException
      Src: /src/pdns/pdns/resolver.cc:291,1
    - Dst: ComboAddress*::toLogString
      Src: /src/pdns/pdns/resolver.cc:291,1
    - Dst: DNSName*::toLogString
      Src: /src/pdns/pdns/resolver.cc:291,1
    - Dst: RCode::to_s
      Src: /src/pdns/pdns/resolver.cc:291,1
    - Dst: getRR
      Src: /src/pdns/pdns/resolver.cc:297,1
    - Dst: getRR
      Src: /src/pdns/pdns/resolver.cc:304,1
    - Dst: std::max
      Src: /src/pdns/pdns/resolver.cc:306,1
    - Dst: std::max
      Src: /src/pdns/pdns/resolver.cc:307,1
    - Dst: ResolverException
      Src: /src/pdns/pdns/resolver.cc:313,1
    - Dst: ComboAddress*::toLogString
      Src: /src/pdns/pdns/resolver.cc:313,1
    - Dst: what
      Src: /src/pdns/pdns/resolver.cc:313,1
    - Dst: ResolverException
      Src: /src/pdns/pdns/resolver.cc:316,1
    - Dst: ComboAddress*::toLogString
      Src: /src/pdns/pdns/resolver.cc:316,1
    - Dst: DNSName*::toLogString
      Src: /src/pdns/pdns/resolver.cc:316,1
    CyclomaticComplexity: 29
    EdgeCount: 29
    ICount: 60
    argCount: 6
    argNames:
    - domain
    - remote
    - theirSerial
    - theirInception
    - theirExpire
    - id
    argTypes:
    - DNSName*
    - ComboAddress*
    - uint32_t*
    - uint32_t*
    - uint32_t*
    - uint16_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 319
      start: 232
    functionDepth: 0
    functionLinenumber: 232
    functionLinenumberEnd: 319
    functionName: Resolver::tryGetSOASerial
    functionSourceFile: /src/pdns/pdns/resolver.cc
    functionUses: 0
    functionsReached:
    - getRR
    - auto::get
    - ComboAddress*::getSocklen
    - stringerror
    - ComboAddress*::toLogString
    - MOADNSParser::d_answers::empty
    - recvfrom
    - what
    - size
    - ResolverException
    - DNSName*::empty
    - DNSName*::toLogString
    - poll
    - RCode::to_s
    - std::max
    - std::make_unique<struct pollfd[]>
    linkageType: ''
    returnType: bool
    signature: bool Resolver::tryGetSOASerial(DNSName *domain, ComboAddress* remote,
      uint32_t *theirSerial, uint32_t *theirInception, uint32_t *theirExpire, uint16_t*
      id)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Resolver::sendResolve
      Src: /src/pdns/pdns/resolver.cc:325,1
    - Dst: waitForData
      Src: /src/pdns/pdns/resolver.cc:326,1
    - Dst: ResolverException
      Src: /src/pdns/pdns/resolver.cc:329,1
    - Dst: ResolverException
      Src: /src/pdns/pdns/resolver.cc:332,1
    - Dst: stringerror
      Src: /src/pdns/pdns/resolver.cc:332,1
    - Dst: recvfrom
      Src: /src/pdns/pdns/resolver.cc:339,1
    - Dst: ResolverException
      Src: /src/pdns/pdns/resolver.cc:340,1
    - Dst: stringerror
      Src: /src/pdns/pdns/resolver.cc:340,1
    - Dst: ResolverException
      Src: /src/pdns/pdns/resolver.cc:343,1
    - Dst: ComboAddress::toLogString
      Src: /src/pdns/pdns/resolver.cc:343,1
    - Dst: toLogString
      Src: /src/pdns/pdns/resolver.cc:343,1
    - Dst: parseResult
      Src: /src/pdns/pdns/resolver.cc:347,1
    - Dst: ResolverException
      Src: /src/pdns/pdns/resolver.cc:350,1
    - Dst: toLogString
      Src: /src/pdns/pdns/resolver.cc:350,1
    - Dst: ResolverException
      Src: /src/pdns/pdns/resolver.cc:353,1
    - Dst: std::string
      Src: /src/pdns/pdns/resolver.cc:353,1
    - Dst: what
      Src: /src/pdns/pdns/resolver.cc:353,1
    - Dst: toLogString
      Src: /src/pdns/pdns/resolver.cc:353,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 18
    argCount: 5
    argNames:
    - ' to'
    - domain
    - type
    - res
    - local
    argTypes:
    - ComboAddress
    - DNSName
    - int
    - Resolver::res_t*
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 355
      start: 321
    functionDepth: 0
    functionLinenumber: 321
    functionLinenumberEnd: 355
    functionName: Resolver::resolve
    functionSourceFile: /src/pdns/pdns/resolver.cc
    functionUses: 0
    functionsReached:
    - Resolver::sendResolve
    - toLogString
    - ComboAddress::toLogString
    - parseResult
    - stringerror
    - what
    - recvfrom
    - waitForData
    - ResolverException
    - std::string
    linkageType: ''
    returnType: int
    signature: int Resolver::resolve(const ComboAddress& to, const DNSName &domain,
      int type, Resolver::res_t* res, const ComboAddress &local)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Resolver::resolve
      Src: /src/pdns/pdns/resolver.cc:360,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - ' ipport'
    - domain
    - type
    - res
    argTypes:
    - ComboAddress
    - DNSName
    - int
    - Resolver::res_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 361
      start: 357
    functionDepth: 0
    functionLinenumber: 357
    functionLinenumberEnd: 361
    functionName: Resolver::resolve
    functionSourceFile: /src/pdns/pdns/resolver.cc
    functionUses: 1
    functionsReached:
    - Resolver::resolve
    linkageType: ''
    returnType: int
    signature: int Resolver::resolve(const ComboAddress& ipport, const DNSName &domain,
      int type, Resolver::res_t* res)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Resolver::resolve
      Src: /src/pdns/pdns/resolver.cc:366,1
    - Dst: vector::empty
      Src: /src/pdns/pdns/resolver.cc:368,1
    - Dst: ResolverException
      Src: /src/pdns/pdns/resolver.cc:369,1
    - Dst: toLogString
      Src: /src/pdns/pdns/resolver.cc:369,1
    - Dst: DNSName::toLogString
      Src: /src/pdns/pdns/resolver.cc:369,1
    - Dst: qtype::getCode
      Src: /src/pdns/pdns/resolver.cc:371,1
    - Dst: ResolverException
      Src: /src/pdns/pdns/resolver.cc:372,1
    - Dst: toLogString
      Src: /src/pdns/pdns/resolver.cc:372,1
    - Dst: DNSName::toLogString
      Src: /src/pdns/pdns/resolver.cc:372,1
    - Dst: qtype::toString
      Src: /src/pdns/pdns/resolver.cc:372,1
    - Dst: stringtok
      Src: /src/pdns/pdns/resolver.cc:375,1
    - Dst: vector::size
      Src: /src/pdns/pdns/resolver.cc:376,1
    - Dst: ResolverException
      Src: /src/pdns/pdns/resolver.cc:377,1
    - Dst: toLogString
      Src: /src/pdns/pdns/resolver.cc:377,1
    - Dst: DNSName::toLogString
      Src: /src/pdns/pdns/resolver.cc:377,1
    - Dst: pdns::checked_stoi<uint32_t>
      Src: /src/pdns/pdns/resolver.cc:380,1
    - Dst: ResolverException
      Src: /src/pdns/pdns/resolver.cc:383,1
    - Dst: toLogString
      Src: /src/pdns/pdns/resolver.cc:383,1
    - Dst: DNSName::toLogString
      Src: /src/pdns/pdns/resolver.cc:383,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 13
    argCount: 3
    argNames:
    - ' ipport'
    - domain
    - serial
    argTypes:
    - ComboAddress
    - DNSName
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 385
      start: 363
    functionDepth: 0
    functionLinenumber: 363
    functionLinenumberEnd: 385
    functionName: Resolver::getSoaSerial
    functionSourceFile: /src/pdns/pdns/resolver.cc
    functionUses: 0
    functionsReached:
    - toLogString
    - qtype::toString
    - stringtok
    - Resolver::resolve
    - ResolverException
    - qtype::getCode
    - vector::empty
    - DNSName::toLogString
    - pdns::checked_stoi<uint32_t>
    - vector::size
    linkageType: ''
    returnType: void
    signature: void Resolver::getSoaSerial(const ComboAddress& ipport, const DNSName
      &domain, uint32_t *serial)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: base_t
      Src: /src/pdns/pdns/stat_t.hh:36,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 36
    functionDepth: 0
    functionLinenumber: 36
    functionLinenumberEnd: 37
    functionName: pdns::stat_t_trait::stat_t_trait
    functionSourceFile: /src/pdns/pdns/stat_t.hh
    functionUses: 0
    functionsReached:
    - base_t
    linkageType: ''
    returnType: void
    signature: void stat_t_trait()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: atomic_t::atomic_t
      Src: /src/pdns/pdns/stat_t.hh:40,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - value
    argTypes:
    - base_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 38
    functionDepth: 0
    functionLinenumber: 38
    functionLinenumberEnd: 41
    functionName: pdns::stat_t_trait::stat_t_trait
    functionSourceFile: /src/pdns/pdns/stat_t.hh
    functionUses: 0
    functionsReached:
    - atomic_t::atomic_t
    linkageType: ''
    returnType: void
    signature: void stat_t_trait(const base_t value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ref
      Src: /src/pdns/pdns/stat_t.hh:43,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ' value'
    argTypes:
    - base_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 42
    functionDepth: 0
    functionLinenumber: 42
    functionLinenumberEnd: 45
    functionName: '& operator=(const base_t& value)'
    functionSourceFile: /src/pdns/pdns/stat_t.hh
    functionUses: 0
    functionsReached:
    - ref
    linkageType: ''
    returnType: stat_t_trait
    signature: stat_t_trait & operator=(const base_t& value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ref
      Src: /src/pdns/pdns/stat_t.hh:47,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 46
    functionDepth: 0
    functionLinenumber: 46
    functionLinenumberEnd: 48
    functionName: ~stat_t_trait()
    functionSourceFile: /src/pdns/pdns/stat_t.hh
    functionUses: 0
    functionsReached:
    - ref
    linkageType: ''
    returnType: void
    signature: void ~stat_t_trait()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 49
    functionDepth: 0
    functionLinenumber: 49
    functionLinenumberEnd: 49
    functionName: pdns::stat_t_trait::stat_t_trait
    functionSourceFile: /src/pdns/pdns/stat_t.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void stat_t_trait(stat_t_trait&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 50
    functionDepth: 0
    functionLinenumber: 50
    functionLinenumberEnd: 50
    functionName: '& operator=(const stat_t_trait&)'
    functionSourceFile: /src/pdns/pdns/stat_t.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: stat_t_trait
    signature: stat_t_trait & operator=(const stat_t_trait&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 51
    functionDepth: 0
    functionLinenumber: 51
    functionLinenumberEnd: 51
    functionName: '& operator=(stat_t_trait&&)'
    functionSourceFile: /src/pdns/pdns/stat_t.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: stat_t_trait
    signature: stat_t_trait & operator=(stat_t_trait&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 52
    functionDepth: 0
    functionLinenumber: 52
    functionLinenumberEnd: 52
    functionName: pdns::stat_t_trait::stat_t_trait
    functionSourceFile: /src/pdns/pdns/stat_t.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void stat_t_trait(const stat_t_trait&)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ref
      Src: /src/pdns/pdns/stat_t.hh:54,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 53
    functionDepth: 0
    functionLinenumber: 53
    functionLinenumberEnd: 55
    functionName: operator++(int)
    functionSourceFile: /src/pdns/pdns/stat_t.hh
    functionUses: 0
    functionsReached:
    - ref
    linkageType: ''
    returnType: base_t
    signature: base_t operator++(int)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ref
      Src: /src/pdns/pdns/stat_t.hh:57,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 56
    functionDepth: 0
    functionLinenumber: 56
    functionLinenumberEnd: 58
    functionName: operator++()
    functionSourceFile: /src/pdns/pdns/stat_t.hh
    functionUses: 0
    functionsReached:
    - ref
    linkageType: ''
    returnType: base_t
    signature: base_t operator++()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ref
      Src: /src/pdns/pdns/stat_t.hh:60,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 59
    functionDepth: 0
    functionLinenumber: 59
    functionLinenumberEnd: 61
    functionName: operator--(int)
    functionSourceFile: /src/pdns/pdns/stat_t.hh
    functionUses: 0
    functionsReached:
    - ref
    linkageType: ''
    returnType: base_t
    signature: base_t operator--(int)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ref
      Src: /src/pdns/pdns/stat_t.hh:63,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 62
    functionDepth: 0
    functionLinenumber: 62
    functionLinenumberEnd: 64
    functionName: operator--()
    functionSourceFile: /src/pdns/pdns/stat_t.hh
    functionUses: 0
    functionsReached:
    - ref
    linkageType: ''
    returnType: base_t
    signature: base_t operator--()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ref
      Src: /src/pdns/pdns/stat_t.hh:66,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - arg
    argTypes:
    - base_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 65
    functionDepth: 0
    functionLinenumber: 65
    functionLinenumberEnd: 67
    functionName: operator+=(base_t arg)
    functionSourceFile: /src/pdns/pdns/stat_t.hh
    functionUses: 0
    functionsReached:
    - ref
    linkageType: ''
    returnType: base_t
    signature: base_t operator+=(base_t arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ref
      Src: /src/pdns/pdns/stat_t.hh:69,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - arg
    argTypes:
    - base_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 68
    functionDepth: 0
    functionLinenumber: 68
    functionLinenumberEnd: 70
    functionName: operator-=(base_t arg)
    functionSourceFile: /src/pdns/pdns/stat_t.hh
    functionUses: 0
    functionsReached:
    - ref
    linkageType: ''
    returnType: base_t
    signature: base_t operator-=(base_t arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ref
      Src: /src/pdns/pdns/stat_t.hh:72,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 71
    functionDepth: 0
    functionLinenumber: 71
    functionLinenumberEnd: 73
    functionName: pdns::stat_t_trait::load
    functionSourceFile: /src/pdns/pdns/stat_t.hh
    functionUses: 0
    functionsReached:
    - ref
    linkageType: ''
    returnType: base_t
    signature: base_t load() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ref
      Src: /src/pdns/pdns/stat_t.hh:75,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - value
    argTypes:
    - base_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 74
    functionDepth: 0
    functionLinenumber: 74
    functionLinenumberEnd: 76
    functionName: pdns::stat_t_trait::store
    functionSourceFile: /src/pdns/pdns/stat_t.hh
    functionUses: 9
    functionsReached:
    - ref
    linkageType: ''
    returnType: void
    signature: void store(base_t value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ref
      Src: /src/pdns/pdns/stat_t.hh:78,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 77
    functionDepth: 0
    functionLinenumber: 77
    functionLinenumberEnd: 79
    functionName: operator base_t() const
    functionSourceFile: /src/pdns/pdns/stat_t.hh
    functionUses: 0
    functionsReached:
    - ref
    linkageType: ''
    returnType: void
    signature: void operator base_t() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: reinterpret_cast<atomic_t *>
      Src: /src/pdns/pdns/stat_t.hh:83,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 82
    functionDepth: 0
    functionLinenumber: 82
    functionLinenumberEnd: 84
    functionName: '& ref()'
    functionSourceFile: /src/pdns/pdns/stat_t.hh
    functionUses: 0
    functionsReached:
    - reinterpret_cast<atomic_t *>
    linkageType: ''
    returnType: atomic_t
    signature: atomic_t & ref()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: reinterpret_cast<const atomic_t *>
      Src: /src/pdns/pdns/stat_t.hh:86,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 85
    functionDepth: 0
    functionLinenumber: 85
    functionLinenumberEnd: 87
    functionName: '& ref() const'
    functionSourceFile: /src/pdns/pdns/stat_t.hh
    functionUses: 0
    functionsReached:
    - reinterpret_cast<const atomic_t *>
    linkageType: ''
    returnType: atomic_t
    signature: atomic_t & ref() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: base_t
      Src: /src/pdns/pdns/stat_t.hh:36,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 36
    functionDepth: 0
    functionLinenumber: 36
    functionLinenumberEnd: 37
    functionName: pdns::stat_t_trait::stat_t_trait
    functionSourceFile: /src/pdns/pdns/stat_t.hh
    functionUses: 0
    functionsReached:
    - base_t
    linkageType: ''
    returnType: void
    signature: void stat_t_trait()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: atomic_t::atomic_t
      Src: /src/pdns/pdns/stat_t.hh:40,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - value
    argTypes:
    - base_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 38
    functionDepth: 0
    functionLinenumber: 38
    functionLinenumberEnd: 41
    functionName: pdns::stat_t_trait::stat_t_trait
    functionSourceFile: /src/pdns/pdns/stat_t.hh
    functionUses: 0
    functionsReached:
    - atomic_t::atomic_t
    linkageType: ''
    returnType: void
    signature: void stat_t_trait(const base_t value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ref
      Src: /src/pdns/pdns/stat_t.hh:43,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ' value'
    argTypes:
    - base_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 42
    functionDepth: 0
    functionLinenumber: 42
    functionLinenumberEnd: 45
    functionName: '& operator=(const base_t& value)'
    functionSourceFile: /src/pdns/pdns/stat_t.hh
    functionUses: 0
    functionsReached:
    - ref
    linkageType: ''
    returnType: stat_t_trait
    signature: stat_t_trait & operator=(const base_t& value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ref
      Src: /src/pdns/pdns/stat_t.hh:47,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 46
    functionDepth: 0
    functionLinenumber: 46
    functionLinenumberEnd: 48
    functionName: ~stat_t_trait()
    functionSourceFile: /src/pdns/pdns/stat_t.hh
    functionUses: 0
    functionsReached:
    - ref
    linkageType: ''
    returnType: void
    signature: void ~stat_t_trait()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 49
    functionDepth: 0
    functionLinenumber: 49
    functionLinenumberEnd: 49
    functionName: pdns::stat_t_trait::stat_t_trait
    functionSourceFile: /src/pdns/pdns/stat_t.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void stat_t_trait(stat_t_trait&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 50
    functionDepth: 0
    functionLinenumber: 50
    functionLinenumberEnd: 50
    functionName: '& operator=(const stat_t_trait&)'
    functionSourceFile: /src/pdns/pdns/stat_t.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: stat_t_trait
    signature: stat_t_trait & operator=(const stat_t_trait&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 51
    functionDepth: 0
    functionLinenumber: 51
    functionLinenumberEnd: 51
    functionName: '& operator=(stat_t_trait&&)'
    functionSourceFile: /src/pdns/pdns/stat_t.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: stat_t_trait
    signature: stat_t_trait & operator=(stat_t_trait&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 52
    functionDepth: 0
    functionLinenumber: 52
    functionLinenumberEnd: 52
    functionName: pdns::stat_t_trait::stat_t_trait
    functionSourceFile: /src/pdns/pdns/stat_t.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void stat_t_trait(const stat_t_trait&)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ref
      Src: /src/pdns/pdns/stat_t.hh:54,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 53
    functionDepth: 0
    functionLinenumber: 53
    functionLinenumberEnd: 55
    functionName: operator++(int)
    functionSourceFile: /src/pdns/pdns/stat_t.hh
    functionUses: 0
    functionsReached:
    - ref
    linkageType: ''
    returnType: base_t
    signature: base_t operator++(int)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ref
      Src: /src/pdns/pdns/stat_t.hh:57,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 56
    functionDepth: 0
    functionLinenumber: 56
    functionLinenumberEnd: 58
    functionName: operator++()
    functionSourceFile: /src/pdns/pdns/stat_t.hh
    functionUses: 0
    functionsReached:
    - ref
    linkageType: ''
    returnType: base_t
    signature: base_t operator++()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ref
      Src: /src/pdns/pdns/stat_t.hh:60,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 59
    functionDepth: 0
    functionLinenumber: 59
    functionLinenumberEnd: 61
    functionName: operator--(int)
    functionSourceFile: /src/pdns/pdns/stat_t.hh
    functionUses: 0
    functionsReached:
    - ref
    linkageType: ''
    returnType: base_t
    signature: base_t operator--(int)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ref
      Src: /src/pdns/pdns/stat_t.hh:63,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 62
    functionDepth: 0
    functionLinenumber: 62
    functionLinenumberEnd: 64
    functionName: operator--()
    functionSourceFile: /src/pdns/pdns/stat_t.hh
    functionUses: 0
    functionsReached:
    - ref
    linkageType: ''
    returnType: base_t
    signature: base_t operator--()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ref
      Src: /src/pdns/pdns/stat_t.hh:66,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - arg
    argTypes:
    - base_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 65
    functionDepth: 0
    functionLinenumber: 65
    functionLinenumberEnd: 67
    functionName: operator+=(base_t arg)
    functionSourceFile: /src/pdns/pdns/stat_t.hh
    functionUses: 0
    functionsReached:
    - ref
    linkageType: ''
    returnType: base_t
    signature: base_t operator+=(base_t arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ref
      Src: /src/pdns/pdns/stat_t.hh:69,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - arg
    argTypes:
    - base_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 68
    functionDepth: 0
    functionLinenumber: 68
    functionLinenumberEnd: 70
    functionName: operator-=(base_t arg)
    functionSourceFile: /src/pdns/pdns/stat_t.hh
    functionUses: 0
    functionsReached:
    - ref
    linkageType: ''
    returnType: base_t
    signature: base_t operator-=(base_t arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ref
      Src: /src/pdns/pdns/stat_t.hh:72,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 71
    functionDepth: 0
    functionLinenumber: 71
    functionLinenumberEnd: 73
    functionName: pdns::stat_t_trait::load
    functionSourceFile: /src/pdns/pdns/stat_t.hh
    functionUses: 0
    functionsReached:
    - ref
    linkageType: ''
    returnType: base_t
    signature: base_t load() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ref
      Src: /src/pdns/pdns/stat_t.hh:75,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - value
    argTypes:
    - base_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 74
    functionDepth: 0
    functionLinenumber: 74
    functionLinenumberEnd: 76
    functionName: pdns::stat_t_trait::store
    functionSourceFile: /src/pdns/pdns/stat_t.hh
    functionUses: 9
    functionsReached:
    - ref
    linkageType: ''
    returnType: void
    signature: void store(base_t value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ref
      Src: /src/pdns/pdns/stat_t.hh:78,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 77
    functionDepth: 0
    functionLinenumber: 77
    functionLinenumberEnd: 79
    functionName: operator base_t() const
    functionSourceFile: /src/pdns/pdns/stat_t.hh
    functionUses: 0
    functionsReached:
    - ref
    linkageType: ''
    returnType: void
    signature: void operator base_t() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: reinterpret_cast<atomic_t *>
      Src: /src/pdns/pdns/stat_t.hh:83,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 82
    functionDepth: 0
    functionLinenumber: 82
    functionLinenumberEnd: 84
    functionName: '& ref()'
    functionSourceFile: /src/pdns/pdns/stat_t.hh
    functionUses: 0
    functionsReached:
    - reinterpret_cast<atomic_t *>
    linkageType: ''
    returnType: atomic_t
    signature: atomic_t & ref()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: reinterpret_cast<const atomic_t *>
      Src: /src/pdns/pdns/stat_t.hh:86,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 85
    functionDepth: 0
    functionLinenumber: 85
    functionLinenumberEnd: 87
    functionName: '& ref() const'
    functionSourceFile: /src/pdns/pdns/stat_t.hh
    functionUses: 0
    functionsReached:
    - reinterpret_cast<const atomic_t *>
    linkageType: ''
    returnType: atomic_t
    signature: atomic_t & ref() const
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: count
      Src: /src/pdns/pdns/lua-record.cc:72,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/lua-record.cc:73,1
    - Dst: sqlstr
      Src: /src/pdns/pdns/lua-record.cc:73,1
    - Dst: boost::format
      Src: /src/pdns/pdns/lua-record.cc:73,1
    - Dst: std::holds_alternative<T>
      Src: /src/pdns/pdns/lua-record.cc:75,1
    - Dst: at
      Src: /src/pdns/pdns/lua-record.cc:75,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/lua-record.cc:76,1
    - Dst: sqlstr
      Src: /src/pdns/pdns/lua-record.cc:76,1
    - Dst: boost::format
      Src: /src/pdns/pdns/lua-record.cc:76,1
    - Dst: std::get<T>
      Src: /src/pdns/pdns/lua-record.cc:78,1
    - Dst: at
      Src: /src/pdns/pdns/lua-record.cc:78,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 1
    argNames:
    - optName
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 70
    functionDepth: 1
    functionLinenumber: 70
    functionLinenumberEnd: 79
    functionName: IsUpOracle::getOption
    functionSourceFile: /src/pdns/pdns/lua-record.cc
    functionUses: 0
    functionsReached:
    - std::runtime_error
    - count
    - std::get<T>
    - sqlstr
    - boost::format
    - at
    - std::holds_alternative<T>
    linkageType: ''
    returnType: T
    signature: T getOption(const std::string &optName) const
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: count
      Src: /src/pdns/pdns/lua-record.cc:83,1
    - Dst: std::holds_alternative<T>
      Src: /src/pdns/pdns/lua-record.cc:86,1
    - Dst: at
      Src: /src/pdns/pdns/lua-record.cc:86,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/lua-record.cc:87,1
    - Dst: sqlstr
      Src: /src/pdns/pdns/lua-record.cc:87,1
    - Dst: boost::format
      Src: /src/pdns/pdns/lua-record.cc:87,1
    - Dst: std::get<T>
      Src: /src/pdns/pdns/lua-record.cc:89,1
    - Dst: at
      Src: /src/pdns/pdns/lua-record.cc:89,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - optName
    - ' default_value'
    argTypes:
    - std::string
    - T
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 81
    functionDepth: 1
    functionLinenumber: 81
    functionLinenumberEnd: 90
    functionName: IsUpOracle::getOption
    functionSourceFile: /src/pdns/pdns/lua-record.cc
    functionUses: 0
    functionsReached:
    - std::runtime_error
    - count
    - std::get<T>
    - sqlstr
    - boost::format
    - at
    - std::holds_alternative<T>
    linkageType: ''
    returnType: T
    signature: T getOption(const std::string &optName, const T& default_value) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::tuple
      Src: /src/pdns/pdns/lua-record.cc:101,1
    - Dst: std::tuple
      Src: /src/pdns/pdns/lua-record.cc:102,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - CheckDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 92
    functionDepth: 0
    functionLinenumber: 92
    functionLinenumberEnd: 103
    functionName: operator<(const CheckDesc& rhs) const
    functionSourceFile: /src/pdns/pdns/lua-record.cc
    functionUses: 0
    functionsReached:
    - std::tuple
    linkageType: ''
    returnType: bool
    signature: bool operator<(const CheckDesc& rhs) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - _lastAccess
    argTypes:
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 107
      start: 107
    functionDepth: 0
    functionLinenumber: 107
    functionLinenumberEnd: 107
    functionName: IsUpOracle::CheckState
    functionSourceFile: /src/pdns/pdns/lua-record.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void CheckState(time_t _lastAccess)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: clear
      Src: /src/pdns/pdns/lua-record.cc:125,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 123
    functionDepth: 1
    functionLinenumber: 123
    functionLinenumberEnd: 126
    functionName: IsUpOracle::IsUpOracle
    functionSourceFile: /src/pdns/pdns/lua-record.cc
    functionUses: 0
    functionsReached:
    - clear
    linkageType: ''
    returnType: void
    signature: void IsUpOracle()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 127
      start: 127
    functionDepth: 0
    functionLinenumber: 127
    functionLinenumberEnd: 127
    functionName: ~IsUpOracle()
    functionSourceFile: /src/pdns/pdns/lua-record.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~IsUpOracle()
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: setThreadName
      Src: /src/pdns/pdns/lua-record.cc:136,1
    - Dst: std::atoi
      Src: /src/pdns/pdns/lua-record.cc:140,1
    - Dst: IsUpOracle::getOption
      Src: /src/pdns/pdns/lua-record.cc:140,1
    - Dst: IsUpOracle::getOption
      Src: /src/pdns/pdns/lua-record.cc:141,1
    - Dst: productName
      Src: /src/pdns/pdns/lua-record.cc:141,1
    - Dst: pdns::checked_stoi<size_t>
      Src: /src/pdns/pdns/lua-record.cc:142,1
    - Dst: IsUpOracle::getOption
      Src: /src/pdns/pdns/lua-record.cc:142,1
    - Dst: pdns::checked_stoi<int>
      Src: /src/pdns/pdns/lua-record.cc:143,1
    - Dst: IsUpOracle::getOption
      Src: /src/pdns/pdns/lua-record.cc:143,1
    - Dst: IsUpOracle::getOption
      Src: /src/pdns/pdns/lua-record.cc:148,1
    - Dst: std::replace
      Src: /src/pdns/pdns/lua-record.cc:150,1
    - Dst: auto::begin
      Src: /src/pdns/pdns/lua-record.cc:150,1
    - Dst: auto::end
      Src: /src/pdns/pdns/lua-record.cc:150,1
    - Dst: MiniCurl::MiniCurlHeaders::emplace
      Src: /src/pdns/pdns/lua-record.cc:151,1
    - Dst: ComboAddress*::toString
      Src: /src/pdns/pdns/lua-record.cc:158,1
    - Dst: opts::count
      Src: /src/pdns/pdns/lua-record.cc:163,1
    - Dst: IsUpOracle::getOption
      Src: /src/pdns/pdns/lua-record.cc:164,1
    - Dst: MiniCurl::getURL
      Src: /src/pdns/pdns/lua-record.cc:165,1
    - Dst: MiniCurl::getURL
      Src: /src/pdns/pdns/lua-record.cc:168,1
    - Dst: opts::count
      Src: /src/pdns/pdns/lua-record.cc:170,1
    - Dst: string::find
      Src: /src/pdns/pdns/lua-record.cc:170,1
    - Dst: IsUpOracle::getOption
      Src: /src/pdns/pdns/lua-record.cc:170,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/lua-record.cc:171,1
    - Dst: sqlstr
      Src: /src/pdns/pdns/lua-record.cc:171,1
    - Dst: boost::format
      Src: /src/pdns/pdns/lua-record.cc:171,1
    - Dst: IsUpOracle::getOption
      Src: /src/pdns/pdns/lua-record.cc:171,1
    - Dst: stoi
      Src: /src/pdns/pdns/lua-record.cc:176,1
    - Dst: SLOG
      Src: /src/pdns/pdns/lua-record.cc:178,1
    - Dst: slog::info
      Src: /src/pdns/pdns/lua-record.cc:179,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/lua-record.cc:179,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/lua-record.cc:179,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/lua-record.cc:179,1
    - Dst: SLOG
      Src: /src/pdns/pdns/lua-record.cc:184,1
    - Dst: slog::info
      Src: /src/pdns/pdns/lua-record.cc:185,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/lua-record.cc:185,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/lua-record.cc:185,1
    - Dst: IsUpOracle::setWeight
      Src: /src/pdns/pdns/lua-record.cc:189,1
    - Dst: IsUpOracle::setUp
      Src: /src/pdns/pdns/lua-record.cc:190,1
    - Dst: SLOG
      Src: /src/pdns/pdns/lua-record.cc:194,1
    - Dst: what
      Src: /src/pdns/pdns/lua-record.cc:194,1
    - Dst: slog::error
      Src: /src/pdns/pdns/lua-record.cc:195,1
    - Dst: what
      Src: /src/pdns/pdns/lua-record.cc:195,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/lua-record.cc:195,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/lua-record.cc:195,1
    - Dst: IsUpOracle::setWeight
      Src: /src/pdns/pdns/lua-record.cc:197,1
    - Dst: IsUpOracle::setDown
      Src: /src/pdns/pdns/lua-record.cc:198,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 39
    argCount: 3
    argNames:
    - ' cd'
    - status
    - first
    argTypes:
    - CheckDesc
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 200
      start: 134
    functionDepth: 2
    functionLinenumber: 134
    functionLinenumberEnd: 200
    functionName: IsUpOracle::checkURL
    functionSourceFile: /src/pdns/pdns/lua-record.cc
    functionUses: 0
    functionsReached:
    - IsUpOracle::getOption
    - auto::begin
    - std::replace
    - SLOG
    - Logging::Loggable
    - slog::info
    - string::find
    - MiniCurl::getURL
    - IsUpOracle::setUp
    - productName
    - opts::count
    - setThreadName
    - std::runtime_error
    - MiniCurl::MiniCurlHeaders::emplace
    - IsUpOracle::setDown
    - IsUpOracle::setWeight
    - std::atoi
    - slog::error
    - pdns::checked_stoi<size_t>
    - pdns::checked_stoi<int>
    - what
    - stoi
    - sqlstr
    - boost::format
    - auto::end
    - ComboAddress*::toString
    linkageType: ''
    returnType: void
    signature: void checkURL(const CheckDesc& cd, const bool status, const bool first)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: setThreadName
      Src: /src/pdns/pdns/lua-record.cc:202,1
    - Dst: std::atoi
      Src: /src/pdns/pdns/lua-record.cc:204,1
    - Dst: IsUpOracle::getOption
      Src: /src/pdns/pdns/lua-record.cc:204,1
    - Dst: Socket::setNonBlocking
      Src: /src/pdns/pdns/lua-record.cc:207,1
    - Dst: opts::count
      Src: /src/pdns/pdns/lua-record.cc:208,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/lua-record.cc:209,1
    - Dst: IsUpOracle::getOption
      Src: /src/pdns/pdns/lua-record.cc:209,1
    - Dst: Socket::bind
      Src: /src/pdns/pdns/lua-record.cc:210,1
    - Dst: Socket::connect
      Src: /src/pdns/pdns/lua-record.cc:212,1
    - Dst: opts::count
      Src: /src/pdns/pdns/lua-record.cc:215,1
    - Dst: slog::info
      Src: /src/pdns/pdns/lua-record.cc:216,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/lua-record.cc:216,1
    - Dst: rem::toStringWithPort
      Src: /src/pdns/pdns/lua-record.cc:216,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/lua-record.cc:216,1
    - Dst: slog::info
      Src: /src/pdns/pdns/lua-record.cc:219,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/lua-record.cc:219,1
    - Dst: rem::toStringWithPort
      Src: /src/pdns/pdns/lua-record.cc:219,1
    - Dst: rem::toStringWithPort
      Src: /src/pdns/pdns/lua-record.cc:223,1
    - Dst: opts::count
      Src: /src/pdns/pdns/lua-record.cc:224,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/lua-record.cc:225,1
    - Dst: IsUpOracle::setUp
      Src: /src/pdns/pdns/lua-record.cc:230,1
    - Dst: SLOG
      Src: /src/pdns/pdns/lua-record.cc:234,1
    - Dst: rem::toStringWithPort
      Src: /src/pdns/pdns/lua-record.cc:234,1
    - Dst: what
      Src: /src/pdns/pdns/lua-record.cc:234,1
    - Dst: slog::error
      Src: /src/pdns/pdns/lua-record.cc:235,1
    - Dst: what
      Src: /src/pdns/pdns/lua-record.cc:235,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/lua-record.cc:235,1
    - Dst: rem::toStringWithPort
      Src: /src/pdns/pdns/lua-record.cc:235,1
    - Dst: IsUpOracle::setDown
      Src: /src/pdns/pdns/lua-record.cc:237,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 31
    argCount: 3
    argNames:
    - ' cd'
    - status
    - first
    argTypes:
    - CheckDesc
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 239
      start: 201
    functionDepth: 2
    functionLinenumber: 201
    functionLinenumberEnd: 239
    functionName: IsUpOracle::checkTCP
    functionSourceFile: /src/pdns/pdns/lua-record.cc
    functionUses: 0
    functionsReached:
    - SLOG
    - slog::error
    - Socket::setNonBlocking
    - Logging::Loggable
    - what
    - slog::info
    - IsUpOracle::setUp
    - IsUpOracle::setDown
    - ComboAddress
    - IsUpOracle::getOption
    - Socket::connect
    - opts::count
    - rem::toStringWithPort
    - ComboAddress::toString
    - Socket::bind
    - setThreadName
    - std::atoi
    linkageType: ''
    returnType: void
    signature: void checkTCP(const CheckDesc& cd, const bool status, const bool first)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: setThreadName
      Src: /src/pdns/pdns/lua-record.cc:242,1
    - Dst: std::chrono::system_clock::now
      Src: /src/pdns/pdns/lua-record.cc:245,1
    - Dst: read_lock
      Src: /src/pdns/pdns/lua-record.cc:251,1
    - Dst: std::chrono::system_clock::from_time_t
      Src: /src/pdns/pdns/lua-record.cc:256,1
    - Dst: std::atoi
      Src: /src/pdns/pdns/lua-record.cc:258,1
    - Dst: IsUpOracle::getOption
      Src: /src/pdns/pdns/lua-record.cc:258,1
    - Dst: std::gcd
      Src: /src/pdns/pdns/lua-record.cc:260,1
    - Dst: std::chrono::system_clock::from_time_t
      Src: /src/pdns/pdns/lua-record.cc:271,1
    - Dst: url::empty
      Src: /src/pdns/pdns/lua-record.cc:276,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/lua-record.cc:277,1
    - Dst: std::async
      Src: /src/pdns/pdns/lua-record.cc:277,1
    - Dst: status::load
      Src: /src/pdns/pdns/lua-record.cc:277,1
    - Dst: first::load
      Src: /src/pdns/pdns/lua-record.cc:277,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/lua-record.cc:279,1
    - Dst: std::async
      Src: /src/pdns/pdns/lua-record.cc:279,1
    - Dst: status::load
      Src: /src/pdns/pdns/lua-record.cc:279,1
    - Dst: first::load
      Src: /src/pdns/pdns/lua-record.cc:279,1
    - Dst: std::chrono::seconds
      Src: /src/pdns/pdns/lua-record.cc:285,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/lua-record.cc:286,1
    - Dst: wait
      Src: /src/pdns/pdns/lua-record.cc:292,1
    - Dst: std::vector::empty
      Src: /src/pdns/pdns/lua-record.cc:294,1
    - Dst: write_lock
      Src: /src/pdns/pdns/lua-record.cc:295,1
    - Dst: auto::erase
      Src: /src/pdns/pdns/lua-record.cc:297,1
    - Dst: setThreadName
      Src: /src/pdns/pdns/lua-record.cc:302,1
    - Dst: std::this_thread::sleep_until
      Src: /src/pdns/pdns/lua-record.cc:304,1
    - Dst: std::chrono::seconds
      Src: /src/pdns/pdns/lua-record.cc:304,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 36
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 306
      start: 240
    functionDepth: 2
    functionLinenumber: 240
    functionLinenumberEnd: 306
    functionName: IsUpOracle::checkThread
    functionSourceFile: /src/pdns/pdns/lua-record.cc
    functionUses: 0
    functionsReached:
    - std::vector::push_back
    - wait
    - std::this_thread::sleep_until
    - std::chrono::system_clock::from_time_t
    - std::chrono::seconds
    - first::load
    - read_lock
    - std::gcd
    - IsUpOracle::getOption
    - std::async
    - write_lock
    - std::vector::empty
    - auto::erase
    - url::empty
    - setThreadName
    - std::chrono::system_clock::now
    - status::load
    - std::atoi
    linkageType: ''
    returnType: void
    signature: void checkThread()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: write_lock
      Src: /src/pdns/pdns/lua-record.cc:316,1
    - Dst: time
      Src: /src/pdns/pdns/lua-record.cc:318,1
    - Dst: std::atoi
      Src: /src/pdns/pdns/lua-record.cc:325,1
    - Dst: IsUpOracle::getOption
      Src: /src/pdns/pdns/lua-record.cc:325,1
    - Dst: std::max
      Src: /src/pdns/pdns/lua-record.cc:327,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 2
    argNames:
    - ' cd'
    - status
    argTypes:
    - CheckDesc
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 334
      start: 314
    functionDepth: 2
    functionLinenumber: 314
    functionLinenumberEnd: 334
    functionName: IsUpOracle::setStatus
    functionSourceFile: /src/pdns/pdns/lua-record.cc
    functionUses: 0
    functionsReached:
    - time
    - IsUpOracle::getOption
    - write_lock
    - std::max
    - std::atoi
    linkageType: ''
    returnType: void
    signature: void setStatus(const CheckDesc& cd, bool status)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: write_lock
      Src: /src/pdns/pdns/lua-record.cc:338,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' cd'
    - weight
    argTypes:
    - CheckDesc
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 341
      start: 337
    functionDepth: 0
    functionLinenumber: 337
    functionLinenumberEnd: 341
    functionName: IsUpOracle::setWeight
    functionSourceFile: /src/pdns/pdns/lua-record.cc
    functionUses: 1
    functionsReached:
    - write_lock
    linkageType: ''
    returnType: void
    signature: void setWeight(const CheckDesc& cd, int weight)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: IsUpOracle::setStatus
      Src: /src/pdns/pdns/lua-record.cc:345,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' cd'
    argTypes:
    - CheckDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 346
      start: 343
    functionDepth: 0
    functionLinenumber: 343
    functionLinenumberEnd: 346
    functionName: IsUpOracle::setDown
    functionSourceFile: /src/pdns/pdns/lua-record.cc
    functionUses: 2
    functionsReached:
    - IsUpOracle::setStatus
    linkageType: ''
    returnType: void
    signature: void setDown(const CheckDesc& cd)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: IsUpOracle::setStatus
      Src: /src/pdns/pdns/lua-record.cc:350,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' cd'
    argTypes:
    - CheckDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 351
      start: 348
    functionDepth: 0
    functionLinenumber: 348
    functionLinenumberEnd: 351
    functionName: IsUpOracle::setUp
    functionSourceFile: /src/pdns/pdns/lua-record.cc
    functionUses: 2
    functionsReached:
    - IsUpOracle::setStatus
    linkageType: ''
    returnType: void
    signature: void setUp(const CheckDesc& cd)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: test_and_set
      Src: /src/pdns/pdns/lua-record.cc:364,1
    - Dst: std::make_unique<std::thread>
      Src: /src/pdns/pdns/lua-record.cc:365,1
    - Dst: IsUpOracle::checkThread
      Src: /src/pdns/pdns/lua-record.cc:365,1
    - Dst: time
      Src: /src/pdns/pdns/lua-record.cc:367,1
    - Dst: read_lock
      Src: /src/pdns/pdns/lua-record.cc:369,1
    - Dst: auto::find
      Src: /src/pdns/pdns/lua-record.cc:370,1
    - Dst: auto::end
      Src: /src/pdns/pdns/lua-record.cc:371,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/lua-record.cc:376,1
    - Dst: opts::count
      Src: /src/pdns/pdns/lua-record.cc:380,1
    - Dst: IsUpOracle::getOption
      Src: /src/pdns/pdns/lua-record.cc:381,1
    - Dst: write_lock
      Src: /src/pdns/pdns/lua-record.cc:384,1
    - Dst: auto::find
      Src: /src/pdns/pdns/lua-record.cc:386,1
    - Dst: auto::end
      Src: /src/pdns/pdns/lua-record.cc:386,1
    - Dst: std::make_unique<CheckState>
      Src: /src/pdns/pdns/lua-record.cc:387,1
    - Dst: opts::count
      Src: /src/pdns/pdns/lua-record.cc:393,1
    - Dst: IsUpOracle::getOption
      Src: /src/pdns/pdns/lua-record.cc:394,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 26
    argCount: 1
    argNames:
    - ' cd'
    argTypes:
    - CheckDesc
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 399
      start: 362
    functionDepth: 3
    functionLinenumber: 362
    functionLinenumberEnd: 399
    functionName: IsUpOracle::isUp
    functionSourceFile: /src/pdns/pdns/lua-record.cc
    functionUses: 0
    functionsReached:
    - static_cast<int>
    - time
    - read_lock
    - IsUpOracle::getOption
    - std::make_unique<CheckState>
    - IsUpOracle::checkThread
    - std::make_unique<std::thread>
    - opts::count
    - write_lock
    - auto::end
    - auto::find
    - test_and_set
    linkageType: ''
    returnType: int
    signature: int IsUpOracle::isUp(const CheckDesc& cd)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: IsUpOracle::isUp
      Src: /src/pdns/pdns/lua-record.cc:404,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - slog
    - ' remote'
    - ' opts'
    argTypes:
    - Logr::log_t
    - ComboAddress
    - opts_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 405
      start: 401
    functionDepth: 0
    functionLinenumber: 401
    functionLinenumberEnd: 405
    functionName: IsUpOracle::isUp
    functionSourceFile: /src/pdns/pdns/lua-record.cc
    functionUses: 1
    functionsReached:
    - IsUpOracle::isUp
    linkageType: ''
    returnType: int
    signature: int IsUpOracle::isUp(Logr::log_t slog, const ComboAddress& remote,
      const opts_t& opts)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: IsUpOracle::isUp
      Src: /src/pdns/pdns/lua-record.cc:410,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - slog
    - ' remote'
    - ' url'
    - ' opts'
    argTypes:
    - Logr::log_t
    - ComboAddress
    - std::string
    - opts_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 411
      start: 407
    functionDepth: 0
    functionLinenumber: 407
    functionLinenumberEnd: 411
    functionName: IsUpOracle::isUp
    functionSourceFile: /src/pdns/pdns/lua-record.cc
    functionUses: 2
    functionsReached:
    - IsUpOracle::isUp
    linkageType: ''
    returnType: int
    signature: int IsUpOracle::isUp(Logr::log_t slog, const ComboAddress& remote,
      const std::string& url, const opts_t& opts)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: boost::get<string>
      Src: /src/pdns/pdns/lua-record.cc:418,1
    - Dst: cmp
      Src: /src/pdns/pdns/lua-record.cc:419,1
    - Dst: boost::get<vector<pair<int,string> > >
      Src: /src/pdns/pdns/lua-record.cc:421,1
    - Dst: cmp
      Src: /src/pdns/pdns/lua-record.cc:423,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 3
    argNames:
    - ' var'
    - ' res'
    - ' cmp'
    argTypes:
    - T
    - std::string
    - C
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 427
      start: 416
    functionDepth: 0
    functionLinenumber: 416
    functionLinenumberEnd: 427
    functionName: doCompare
    functionSourceFile: /src/pdns/pdns/lua-record.cc
    functionUses: 0
    functionsReached:
    - cmp
    - boost::get<string>
    - boost::get<vector<pair<int,string> > >
    linkageType: ''
    returnType: bool
    signature: bool doCompare(const T& var, const std::string& res, const C& cmp)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: boost::get<string>
      Src: /src/pdns/pdns/lua-record.cc:418,1
    - Dst: cmp
      Src: /src/pdns/pdns/lua-record.cc:419,1
    - Dst: boost::get<vector<pair<int,string> > >
      Src: /src/pdns/pdns/lua-record.cc:421,1
    - Dst: cmp
      Src: /src/pdns/pdns/lua-record.cc:423,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 3
    argNames:
    - ' var'
    - ' res'
    - ' cmp'
    argTypes:
    - T
    - std::string
    - C
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 427
      start: 416
    functionDepth: 0
    functionLinenumber: 416
    functionLinenumberEnd: 427
    functionName: doCompare
    functionSourceFile: /src/pdns/pdns/lua-record.cc
    functionUses: 0
    functionsReached:
    - cmp
    - boost::get<string>
    - boost::get<vector<pair<int,string> > >
    linkageType: ''
    returnType: bool
    signature: bool doCompare(const T& var, const std::string& res, const C& cmp)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: SLOG
      Src: /src/pdns/pdns/lua-record.cc:436,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/lua-record.cc:437,1
    - Dst: g_getGeo
      Src: /src/pdns/pdns/lua-record.cc:443,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 3
    argNames:
    - slog
    - ' ip'
    - qa
    argTypes:
    - Logr::log_t
    - std::string
    - GeoIPInterface::GeoIPQueryAttribute
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 444
      start: 430
    functionDepth: 0
    functionLinenumber: 430
    functionLinenumberEnd: 444
    functionName: getGeo
    functionSourceFile: /src/pdns/pdns/lua-record.cc
    functionUses: 1
    functionsReached:
    - SLOG
    - g_getGeo
    - Logr::log_t::info
    linkageType: ''
    returnType: std::string
    signature: std::string getGeo(Logr::log_t slog, const std::string& ip, GeoIPInterface::GeoIPQueryAttribute
      qa)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/lua-record.cc:449,1
    - Dst: std::invalid_argument
      Src: /src/pdns/pdns/lua-record.cc:450,1
    - Dst: dns_random
      Src: /src/pdns/pdns/lua-record.cc:452,1
    - Dst: size
      Src: /src/pdns/pdns/lua-record.cc:452,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - ' items'
    argTypes:
    - vector<T>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 453
      start: 447
    functionDepth: 0
    functionLinenumber: 447
    functionLinenumberEnd: 453
    functionName: pickRandom
    functionSourceFile: /src/pdns/pdns/lua-record.cc
    functionUses: 0
    functionsReached:
    - empty
    - std::invalid_argument
    - dns_random
    - size
    linkageType: ''
    returnType: T
    signature: T pickRandom(const vector<T>& items)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/lua-record.cc:458,1
    - Dst: std::invalid_argument
      Src: /src/pdns/pdns/lua-record.cc:459,1
    - Dst: aoh
      Src: /src/pdns/pdns/lua-record.cc:462,1
    - Dst: size
      Src: /src/pdns/pdns/lua-record.cc:462,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - ' who'
    - ' items'
    argTypes:
    - ComboAddress
    - vector<T>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 463
      start: 456
    functionDepth: 0
    functionLinenumber: 456
    functionLinenumberEnd: 463
    functionName: pickHashed
    functionSourceFile: /src/pdns/pdns/lua-record.cc
    functionUses: 0
    functionsReached:
    - empty
    - std::invalid_argument
    - size
    - aoh
    linkageType: ''
    returnType: T
    signature: T pickHashed(const ComboAddress& who, const vector<T>& items)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/lua-record.cc:468,1
    - Dst: std::invalid_argument
      Src: /src/pdns/pdns/lua-record.cc:469,1
    - Dst: vector::reserve
      Src: /src/pdns/pdns/lua-record.cc:473,1
    - Dst: size
      Src: /src/pdns/pdns/lua-record.cc:473,1
    - Dst: vector::emplace_back
      Src: /src/pdns/pdns/lua-record.cc:477,1
    - Dst: std::invalid_argument
      Src: /src/pdns/pdns/lua-record.cc:481,1
    - Dst: dns_random
      Src: /src/pdns/pdns/lua-record.cc:484,1
    - Dst: upper_bound
      Src: /src/pdns/pdns/lua-record.cc:485,1
    - Dst: vector::begin
      Src: /src/pdns/pdns/lua-record.cc:485,1
    - Dst: vector::end
      Src: /src/pdns/pdns/lua-record.cc:485,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 1
    argNames:
    - ' items'
    argTypes:
    - vector< pair<unsigned int, T> >
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 487
      start: 466
    functionDepth: 0
    functionLinenumber: 466
    functionLinenumberEnd: 487
    functionName: pickWeightedRandom
    functionSourceFile: /src/pdns/pdns/lua-record.cc
    functionUses: 0
    functionsReached:
    - vector::begin
    - dns_random
    - std::invalid_argument
    - size
    - vector::end
    - vector::emplace_back
    - empty
    - vector::reserve
    - upper_bound
    linkageType: ''
    returnType: T
    signature: T pickWeightedRandom(const vector< pair<unsigned int, T> >& items)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/lua-record.cc:492,1
    - Dst: std::invalid_argument
      Src: /src/pdns/pdns/lua-record.cc:493,1
    - Dst: vector::reserve
      Src: /src/pdns/pdns/lua-record.cc:497,1
    - Dst: size
      Src: /src/pdns/pdns/lua-record.cc:497,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/lua-record.cc:501,1
    - Dst: std::invalid_argument
      Src: /src/pdns/pdns/lua-record.cc:505,1
    - Dst: aoh
      Src: /src/pdns/pdns/lua-record.cc:509,1
    - Dst: upper_bound
      Src: /src/pdns/pdns/lua-record.cc:510,1
    - Dst: vector::begin
      Src: /src/pdns/pdns/lua-record.cc:510,1
    - Dst: vector::end
      Src: /src/pdns/pdns/lua-record.cc:510,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 2
    argNames:
    - ' bestwho'
    - ' items'
    argTypes:
    - ComboAddress
    - vector< pair<unsigned int, T> >
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 512
      start: 490
    functionDepth: 0
    functionLinenumber: 490
    functionLinenumberEnd: 512
    functionName: pickWeightedHashed
    functionSourceFile: /src/pdns/pdns/lua-record.cc
    functionUses: 0
    functionsReached:
    - aoh
    - vector::begin
    - vector::push_back
    - std::invalid_argument
    - size
    - vector::end
    - empty
    - vector::reserve
    - upper_bound
    linkageType: ''
    returnType: T
    signature: T pickWeightedHashed(const ComboAddress& bestwho, const vector< pair<unsigned
      int, T> >& items)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/lua-record.cc:517,1
    - Dst: std::invalid_argument
      Src: /src/pdns/pdns/lua-record.cc:518,1
    - Dst: vector::reserve
      Src: /src/pdns/pdns/lua-record.cc:522,1
    - Dst: size
      Src: /src/pdns/pdns/lua-record.cc:522,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/lua-record.cc:526,1
    - Dst: std::invalid_argument
      Src: /src/pdns/pdns/lua-record.cc:530,1
    - Dst: hash
      Src: /src/pdns/pdns/lua-record.cc:533,1
    - Dst: upper_bound
      Src: /src/pdns/pdns/lua-record.cc:534,1
    - Dst: vector::begin
      Src: /src/pdns/pdns/lua-record.cc:534,1
    - Dst: vector::end
      Src: /src/pdns/pdns/lua-record.cc:534,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 2
    argNames:
    - ' dnsname'
    - ' items'
    argTypes:
    - DNSName
    - vector< pair<unsigned int, T> >
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 536
      start: 515
    functionDepth: 1
    functionLinenumber: 515
    functionLinenumberEnd: 536
    functionName: pickWeightedNameHashed
    functionSourceFile: /src/pdns/pdns/lua-record.cc
    functionUses: 0
    functionsReached:
    - vector::begin
    - vector::push_back
    - hash
    - std::invalid_argument
    - size
    - vector::end
    - empty
    - vector::reserve
    - upper_bound
    linkageType: ''
    returnType: T
    signature: T pickWeightedNameHashed(const DNSName& dnsname, vector< pair<unsigned
      int, T> >& items)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/lua-record.cc:541,1
    - Dst: std::invalid_argument
      Src: /src/pdns/pdns/lua-record.cc:542,1
    - Dst: vector::reserve
      Src: /src/pdns/pdns/lua-record.cc:546,1
    - Dst: size
      Src: /src/pdns/pdns/lua-record.cc:546,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/lua-record.cc:549,1
    - Dst: std::min
      Src: /src/pdns/pdns/lua-record.cc:552,1
    - Dst: std::max<size_t>
      Src: /src/pdns/pdns/lua-record.cc:552,1
    - Dst: size
      Src: /src/pdns/pdns/lua-record.cc:552,1
    - Dst: vector<T>
      Src: /src/pdns/pdns/lua-record.cc:555,1
    - Dst: shuffle
      Src: /src/pdns/pdns/lua-record.cc:558,1
    - Dst: vector::begin
      Src: /src/pdns/pdns/lua-record.cc:558,1
    - Dst: vector::end
      Src: /src/pdns/pdns/lua-record.cc:558,1
    - Dst: pdns::dns_random_engine
      Src: /src/pdns/pdns/lua-record.cc:558,1
    - Dst: vector::begin
      Src: /src/pdns/pdns/lua-record.cc:560,1
    - Dst: vector::begin
      Src: /src/pdns/pdns/lua-record.cc:560,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 2
    argNames:
    - n
    - ' items'
    argTypes:
    - int
    - vector<T>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 562
      start: 539
    functionDepth: 0
    functionLinenumber: 539
    functionLinenumberEnd: 562
    functionName: pickRandomSample
    functionSourceFile: /src/pdns/pdns/lua-record.cc
    functionUses: 0
    functionsReached:
    - vector::begin
    - vector::push_back
    - vector<T>
    - std::min
    - std::invalid_argument
    - size
    - vector::end
    - shuffle
    - std::max<size_t>
    - empty
    - vector::reserve
    - pdns::dns_random_engine
    linkageType: ''
    returnType: vector<T>
    signature: vector<T> pickRandomSample(int n, const vector<T>& items)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: getGeo
      Src: /src/pdns/pdns/lua-record.cc:566,1
    - Dst: string::empty
      Src: /src/pdns/pdns/lua-record.cc:567,1
    - Dst: atof
      Src: /src/pdns/pdns/lua-record.cc:569,1
    - Dst: string::c_str
      Src: /src/pdns/pdns/lua-record.cc:569,1
    - Dst: string::find
      Src: /src/pdns/pdns/lua-record.cc:570,1
    - Dst: atof
      Src: /src/pdns/pdns/lua-record.cc:572,1
    - Dst: string::c_str
      Src: /src/pdns/pdns/lua-record.cc:572,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 4
    argNames:
    - slog
    - ' ip'
    - ' lat'
    - ' lon'
    argTypes:
    - Logr::log_t
    - std::string
    - double
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 574
      start: 564
    functionDepth: 1
    functionLinenumber: 564
    functionLinenumberEnd: 574
    functionName: getLatLon
    functionSourceFile: /src/pdns/pdns/lua-record.cc
    functionUses: 0
    functionsReached:
    - getGeo
    - string::c_str
    - string::empty
    - string::find
    - atof
    linkageType: ''
    returnType: bool
    signature: bool getLatLon(Logr::log_t slog, const std::string& ip, double& lat,
      double& lon)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: getLatLon
      Src: /src/pdns/pdns/lua-record.cc:583,1
    - Dst: str
      Src: /src/pdns/pdns/lua-record.cc:614,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 23
    argCount: 3
    argNames:
    - slog
    - ' ip'
    - ' loc'
    argTypes:
    - Logr::log_t
    - std::string
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 616
      start: 576
    functionDepth: 1
    functionLinenumber: 576
    functionLinenumberEnd: 616
    functionName: getLatLon
    functionSourceFile: /src/pdns/pdns/lua-record.cc
    functionUses: 1
    functionsReached:
    - str
    - getLatLon
    linkageType: ''
    returnType: bool
    signature: bool getLatLon(Logr::log_t slog, const std::string& ip, string& loc)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/lua-record.cc:620,1
    - Dst: std::invalid_argument
      Src: /src/pdns/pdns/lua-record.cc:621,1
    - Dst: getLatLon
      Src: /src/pdns/pdns/lua-record.cc:625,1
    - Dst: toString
      Src: /src/pdns/pdns/lua-record.cc:625,1
    - Dst: getLatLon
      Src: /src/pdns/pdns/lua-record.cc:630,1
    - Dst: toString
      Src: /src/pdns/pdns/lua-record.cc:630,1
    - Dst: push_back
      Src: /src/pdns/pdns/lua-record.cc:638,1
    - Dst: map::begin
      Src: /src/pdns/pdns/lua-record.cc:640,1
    - Dst: dns_random
      Src: /src/pdns/pdns/lua-record.cc:640,1
    - Dst: map::begin
      Src: /src/pdns/pdns/lua-record.cc:640,1
    - Dst: size
      Src: /src/pdns/pdns/lua-record.cc:640,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 3
    argNames:
    - slog
    - ' bestwho'
    - ' wips'
    argTypes:
    - Logr::log_t
    - ComboAddress
    - vector<ComboAddress>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 641
      start: 618
    functionDepth: 2
    functionLinenumber: 618
    functionLinenumberEnd: 641
    functionName: pickclosest
    functionSourceFile: /src/pdns/pdns/lua-record.cc
    functionUses: 0
    functionsReached:
    - toString
    - dns_random
    - push_back
    - map::begin
    - std::invalid_argument
    - size
    - empty
    - getLatLon
    linkageType: ''
    returnType: ComboAddress
    signature: ComboAddress pickclosest(Logr::log_t slog, const ComboAddress& bestwho,
      const vector<ComboAddress>& wips)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LockGuarded::LockGuarded
      Src: /src/pdns/pdns/lua-record.cc:645,1
    - Dst: LockGuarded::lock
      Src: /src/pdns/pdns/lua-record.cc:650,1
    - Dst: auto::lookup
      Src: /src/pdns/pdns/lua-record.cc:651,1
    - Dst: QType
      Src: /src/pdns/pdns/lua-record.cc:651,1
    - Dst: auto::get
      Src: /src/pdns/pdns/lua-record.cc:652,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/lua-record.cc:653,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - ' name'
    - qtype
    - zoneid
    argTypes:
    - DNSName
    - uint16_t
    - domainid_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 657
      start: 643
    functionDepth: 0
    functionLinenumber: 643
    functionLinenumberEnd: 657
    functionName: lookup
    functionSourceFile: /src/pdns/pdns/lua-record.cc
    functionUses: 30
    functionsReached:
    - vector::push_back
    - auto::get
    - auto::lookup
    - QType
    - LockGuarded::lock
    - LockGuarded::LockGuarded
    linkageType: ''
    returnType: std::vector<DNSZoneRecord>
    signature: std::vector<DNSZoneRecord> lookup(const DNSName& name, uint16_t qtype,
      domainid_t zoneid)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LockGuarded::LockGuarded
      Src: /src/pdns/pdns/lua-record.cc:661,1
    - Dst: LockGuarded::lock
      Src: /src/pdns/pdns/lua-record.cc:664,1
    - Dst: auto::getAuth
      Src: /src/pdns/pdns/lua-record.cc:665,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - ' name'
    - qtype
    - soaData
    - remote
    argTypes:
    - ZoneName
    - uint16_t
    - SOAData*
    - Netmask
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 667
      start: 659
    functionDepth: 1
    functionLinenumber: 659
    functionLinenumberEnd: 667
    functionName: getAuth
    functionSourceFile: /src/pdns/pdns/lua-record.cc
    functionUses: 2
    functionsReached:
    - auto::getAuth
    - LockGuarded::lock
    - LockGuarded::LockGuarded
    linkageType: ''
    returnType: bool
    signature: bool getAuth(const ZoneName& name, uint16_t qtype, SOAData* soaData,
      Netmask remote)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: count
      Src: /src/pdns/pdns/lua-record.cc:674,1
    - Dst: std::get<T>
      Src: /src/pdns/pdns/lua-record.cc:675,1
    - Dst: find
      Src: /src/pdns/pdns/lua-record.cc:675,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - ' options'
    - name
    - defaultValue
    argTypes:
    - boost::optional<opts_t>
    - std::string
    - T
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 678
      start: 670
    functionDepth: 0
    functionLinenumber: 670
    functionLinenumberEnd: 678
    functionName: getOptionValue
    functionSourceFile: /src/pdns/pdns/lua-record.cc
    functionUses: 0
    functionsReached:
    - std::get<T>
    - find
    - count
    linkageType: ''
    returnType: T
    signature: T getOptionValue(const boost::optional<opts_t>& options, const std::string
      &name, const T &defaultValue)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: vector::emplace_back
      Src: /src/pdns/pdns/lua-record.cc:689,1
    - Dst: pickRandom
      Src: /src/pdns/pdns/lua-record.cc:689,1
    - Dst: vector::emplace_back
      Src: /src/pdns/pdns/lua-record.cc:691,1
    - Dst: pickclosest
      Src: /src/pdns/pdns/lua-record.cc:691,1
    - Dst: vector::emplace_back
      Src: /src/pdns/pdns/lua-record.cc:693,1
    - Dst: pickHashed
      Src: /src/pdns/pdns/lua-record.cc:693,1
    - Dst: SLOG
      Src: /src/pdns/pdns/lua-record.cc:695,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/lua-record.cc:696,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/lua-record.cc:696,1
    - Dst: vector::emplace_back
      Src: /src/pdns/pdns/lua-record.cc:697,1
    - Dst: pickRandom
      Src: /src/pdns/pdns/lua-record.cc:697,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 4
    argNames:
    - slog
    - selector
    - ' bestwho'
    - ' candidates'
    argTypes:
    - Logr::log_t
    - std::string
    - ComboAddress
    - vector<ComboAddress>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 701
      start: 680
    functionDepth: 3
    functionLinenumber: 680
    functionLinenumberEnd: 701
    functionName: useSelector
    functionSourceFile: /src/pdns/pdns/lua-record.cc
    functionUses: 0
    functionsReached:
    - SLOG
    - pickclosest
    - Logr::log_t::info
    - Logging::Loggable
    - pickRandom
    - pickHashed
    - vector::emplace_back
    linkageType: ''
    returnType: vector<ComboAddress>
    signature: vector<ComboAddress> useSelector(Logr::log_t slog, const std::string
      &selector, const ComboAddress& bestwho, const vector<ComboAddress>& candidates)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vector::reserve
      Src: /src/pdns/pdns/lua-record.cc:706,1
    - Dst: size
      Src: /src/pdns/pdns/lua-record.cc:706,1
    - Dst: vector::emplace_back
      Src: /src/pdns/pdns/lua-record.cc:709,1
    - Dst: toString
      Src: /src/pdns/pdns/lua-record.cc:709,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ' items'
    argTypes:
    - vector<ComboAddress>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 713
      start: 703
    functionDepth: 0
    functionLinenumber: 703
    functionLinenumberEnd: 713
    functionName: convComboAddressListToString
    functionSourceFile: /src/pdns/pdns/lua-record.cc
    functionUses: 0
    functionsReached:
    - vector::reserve
    - toString
    - size
    - vector::emplace_back
    linkageType: ''
    returnType: vector<string>
    signature: vector<string> convComboAddressListToString(const vector<ComboAddress>&
      items)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vector::reserve
      Src: /src/pdns/pdns/lua-record.cc:718,1
    - Dst: size
      Src: /src/pdns/pdns/lua-record.cc:718,1
    - Dst: vector::emplace_back
      Src: /src/pdns/pdns/lua-record.cc:721,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/lua-record.cc:721,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ' items'
    argTypes:
    - iplist_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 725
      start: 715
    functionDepth: 0
    functionLinenumber: 715
    functionLinenumberEnd: 725
    functionName: convComboAddressList
    functionSourceFile: /src/pdns/pdns/lua-record.cc
    functionUses: 0
    functionsReached:
    - vector::reserve
    - ComboAddress
    - size
    - vector::emplace_back
    linkageType: ''
    returnType: vector<ComboAddress>
    signature: vector<ComboAddress> convComboAddressList(const iplist_t& items, uint16_t
      port=0)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: boost::get<iplist_t>
      Src: /src/pdns/pdns/lua-record.cc:737,1
    - Dst: convComboAddressList
      Src: /src/pdns/pdns/lua-record.cc:738,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/lua-record.cc:739,1
    - Dst: boost::get<ipunitlist_t>
      Src: /src/pdns/pdns/lua-record.cc:741,1
    - Dst: convComboAddressList
      Src: /src/pdns/pdns/lua-record.cc:743,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/lua-record.cc:744,1
    - Dst: std::move
      Src: /src/pdns/pdns/lua-record.cc:744,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - ' items'
    argTypes:
    - boost::variant<iplist_t, ipunitlist_t>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 748
      start: 733
    functionDepth: 1
    functionLinenumber: 733
    functionLinenumberEnd: 748
    functionName: convMultiComboAddressList
    functionSourceFile: /src/pdns/pdns/lua-record.cc
    functionUses: 0
    functionsReached:
    - std::move
    - vector::push_back
    - convComboAddressList
    - boost::get<iplist_t>
    - boost::get<ipunitlist_t>
    linkageType: ''
    returnType: vector<vector<ComboAddress>>
    signature: vector<vector<ComboAddress>> convMultiComboAddressList(const boost::variant<iplist_t,
      ipunitlist_t>& items, uint16_t port = 0)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vector::reserve
      Src: /src/pdns/pdns/lua-record.cc:753,1
    - Dst: size
      Src: /src/pdns/pdns/lua-record.cc:753,1
    - Dst: vector::emplace_back
      Src: /src/pdns/pdns/lua-record.cc:756,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ' items'
    argTypes:
    - iplist_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 760
      start: 750
    functionDepth: 0
    functionLinenumber: 750
    functionLinenumberEnd: 760
    functionName: convStringList
    functionSourceFile: /src/pdns/pdns/lua-record.cc
    functionUses: 0
    functionsReached:
    - vector::reserve
    - size
    - vector::emplace_back
    linkageType: ''
    returnType: vector<string>
    signature: vector<string> convStringList(const iplist_t& items)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vector::reserve
      Src: /src/pdns/pdns/lua-record.cc:765,1
    - Dst: size
      Src: /src/pdns/pdns/lua-record.cc:765,1
    - Dst: vector::emplace_back
      Src: /src/pdns/pdns/lua-record.cc:768,1
    - Dst: pdns::checked_stoi_nonzero<unsigned int>
      Src: /src/pdns/pdns/lua-record.cc:768,1
    - Dst: second::at
      Src: /src/pdns/pdns/lua-record.cc:768,1
    - Dst: second::at
      Src: /src/pdns/pdns/lua-record.cc:768,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ' items'
    argTypes:
    - std::unordered_map<int, wiplist_t >
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 772
      start: 762
    functionDepth: 0
    functionLinenumber: 762
    functionLinenumberEnd: 772
    functionName: convIntStringPairList
    functionSourceFile: /src/pdns/pdns/lua-record.cc
    functionUses: 0
    functionsReached:
    - second::at
    - size
    - vector::emplace_back
    - pdns::checked_stoi_nonzero<unsigned int>
    - vector::reserve
    linkageType: ''
    returnType: vector< pair<unsigned int, string> >
    signature: vector< pair<unsigned int, string> > convIntStringPairList(const std::unordered_map<int,
      wiplist_t >& items)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: time
      Src: /src/pdns/pdns/lua-record.cc:797,1
    - Dst: std::move
      Src: /src/pdns/pdns/lua-record.cc:797,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - weight_
    - entry_
    argTypes:
    - size_t
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 798
      start: 797
    functionDepth: 0
    functionLinenumber: 797
    functionLinenumberEnd: 798
    functionName: EntryHashesHolder
    functionSourceFile: /src/pdns/pdns/lua-record.cc
    functionUses: 0
    functionsReached:
    - time
    - std::move
    linkageType: ''
    returnType: void
    signature: void EntryHashesHolder(size_t weight_, std::string entry_, time_t lastUsed_
      = time(nullptr))
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: read_lock
      Src: /src/pdns/pdns/lua-record.cc:801,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 802
      start: 800
    functionDepth: 0
    functionLinenumber: 800
    functionLinenumberEnd: 802
    functionName: hashesComputed
    functionSourceFile: /src/pdns/pdns/lua-record.cc
    functionUses: 0
    functionsReached:
    - read_lock
    linkageType: ''
    returnType: bool
    signature: bool hashesComputed()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: write_lock
      Src: /src/pdns/pdns/lua-record.cc:804,1
    - Dst: auto::clear
      Src: /src/pdns/pdns/lua-record.cc:805,1
    - Dst: auto::reserve
      Src: /src/pdns/pdns/lua-record.cc:806,1
    - Dst: sqlstr
      Src: /src/pdns/pdns/lua-record.cc:809,1
    - Dst: boost::format
      Src: /src/pdns/pdns/lua-record.cc:809,1
    - Dst: burtle
      Src: /src/pdns/pdns/lua-record.cc:811,1
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/lua-record.cc:811,1
    - Dst: auto::data
      Src: /src/pdns/pdns/lua-record.cc:811,1
    - Dst: auto::size
      Src: /src/pdns/pdns/lua-record.cc:811,1
    - Dst: auto::push_back
      Src: /src/pdns/pdns/lua-record.cc:812,1
    - Dst: std::sort
      Src: /src/pdns/pdns/lua-record.cc:815,1
    - Dst: auto::begin
      Src: /src/pdns/pdns/lua-record.cc:815,1
    - Dst: auto::end
      Src: /src/pdns/pdns/lua-record.cc:815,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 816
      start: 803
    functionDepth: 1
    functionLinenumber: 803
    functionLinenumberEnd: 816
    functionName: hash
    functionSourceFile: /src/pdns/pdns/lua-record.cc
    functionUses: 22
    functionsReached:
    - boost::format
    - auto::end
    - std::sort
    - auto::data
    - reinterpret_cast<const unsigned char*>
    - auto::begin
    - sqlstr
    - write_lock
    - auto::reserve
    - burtle
    - auto::clear
    - auto::push_back
    - auto::size
    linkageType: ''
    returnType: void
    signature: void hash()
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: time
      Src: /src/pdns/pdns/lua-record.cc:834,1
    - Dst: read_lock
      Src: /src/pdns/pdns/lua-record.cc:841,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/lua-record.cc:846,1
    - Dst: std::vector::empty
      Src: /src/pdns/pdns/lua-record.cc:850,1
    - Dst: write_lock
      Src: /src/pdns/pdns/lua-record.cc:851,1
    - Dst: auto::erase
      Src: /src/pdns/pdns/lua-record.cc:853,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 856
      start: 832
    functionDepth: 0
    functionLinenumber: 832
    functionLinenumberEnd: 856
    functionName: cleanZoneHashes
    functionSourceFile: /src/pdns/pdns/lua-record.cc
    functionUses: 0
    functionsReached:
    - std::vector::push_back
    - time
    - read_lock
    - write_lock
    - std::vector::empty
    - auto::erase
    linkageType: ''
    returnType: void
    signature: void cleanZoneHashes()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: time
      Src: /src/pdns/pdns/lua-record.cc:864,1
    - Dst: read_lock
      Src: /src/pdns/pdns/lua-record.cc:865,1
    - Dst: std::make_tuple
      Src: /src/pdns/pdns/lua-record.cc:868,1
    - Dst: auto::count
      Src: /src/pdns/pdns/lua-record.cc:869,1
    - Dst: std::make_shared<EntryHashesHolder>
      Src: /src/pdns/pdns/lua-record.cc:870,1
    - Dst: auto::at
      Src: /src/pdns/pdns/lua-record.cc:872,1
    - Dst: auto::at
      Src: /src/pdns/pdns/lua-record.cc:873,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/lua-record.cc:874,1
    - Dst: auto::at
      Src: /src/pdns/pdns/lua-record.cc:874,1
    - Dst: std::map::empty
      Src: /src/pdns/pdns/lua-record.cc:878,1
    - Dst: write_lock
      Src: /src/pdns/pdns/lua-record.cc:879,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/lua-record.cc:882,1
    - Dst: std::move
      Src: /src/pdns/pdns/lua-record.cc:883,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 3
    argNames:
    - zoneId
    - ' queryName'
    - ' items'
    argTypes:
    - domainid_t
    - std::string
    - std::vector<std::pair<unsigned int, std::string>>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 888
      start: 858
    functionDepth: 0
    functionLinenumber: 858
    functionLinenumberEnd: 888
    functionName: getCHashedEntries
    functionSourceFile: /src/pdns/pdns/lua-record.cc
    functionUses: 0
    functionsReached:
    - std::vector::push_back
    - std::move
    - std::map::empty
    - std::make_tuple
    - time
    - read_lock
    - write_lock
    - auto::at
    - std::make_shared<EntryHashesHolder>
    - auto::count
    linkageType: ''
    returnType: std::vector<std::shared_ptr<EntryHashesHolder>>
    signature: std::vector<std::shared_ptr<EntryHashesHolder>> getCHashedEntries(const
      domainid_t zoneId, const std::string& queryName, const std::vector<std::pair<unsigned
      int, std::string>>& items)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: qname::toString
      Src: /src/pdns/pdns/lua-record.cc:893,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/lua-record.cc:894,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/lua-record.cc:895,1
    - Dst: cleanZoneHashes
      Src: /src/pdns/pdns/lua-record.cc:900,1
    - Dst: getCHashedEntries
      Src: /src/pdns/pdns/lua-record.cc:902,1
    - Dst: addrOnlyHash
      Src: /src/pdns/pdns/lua-record.cc:905,1
    - Dst: hashesComputed
      Src: /src/pdns/pdns/lua-record.cc:907,1
    - Dst: hash
      Src: /src/pdns/pdns/lua-record.cc:908,1
    - Dst: hashes::read_lock
      Src: /src/pdns/pdns/lua-record.cc:911,1
    - Dst: auto::empty
      Src: /src/pdns/pdns/lua-record.cc:912,1
    - Dst: auto::begin
      Src: /src/pdns/pdns/lua-record.cc:913,1
    - Dst: auto::begin
      Src: /src/pdns/pdns/lua-record.cc:914,1
    - Dst: std::lower_bound
      Src: /src/pdns/pdns/lua-record.cc:918,1
    - Dst: auto::begin
      Src: /src/pdns/pdns/lua-record.cc:918,1
    - Dst: auto::end
      Src: /src/pdns/pdns/lua-record.cc:918,1
    - Dst: auto::end
      Src: /src/pdns/pdns/lua-record.cc:919,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 26
    argCount: 2
    argNames:
    - ' bestwho'
    - ' items'
    argTypes:
    - ComboAddress
    - std::vector<std::pair<unsigned int, std::string>>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 935
      start: 890
    functionDepth: 2
    functionLinenumber: 890
    functionLinenumberEnd: 935
    functionName: pickConsistentWeightedHashed
    functionSourceFile: /src/pdns/pdns/lua-record.cc
    functionUses: 0
    functionsReached:
    - pdns::max
    - hashes::read_lock
    - hash
    - getCHashedEntries
    - qname::toString
    - addrOnlyHash
    - hashesComputed
    - std::lower_bound
    - auto::begin
    - auto::end
    - cleanZoneHashes
    - auto::empty
    linkageType: ''
    returnType: std::string
    signature: std::string pickConsistentWeightedHashed(const ComboAddress& bestwho,
      const std::vector<std::pair<unsigned int, std::string>>& items)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: convMultiComboAddressList
      Src: /src/pdns/pdns/lua-record.cc:945,1
    - Dst: upcheckf
      Src: /src/pdns/pdns/lua-record.cc:951,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/lua-record.cc:953,1
    - Dst: vector::empty
      Src: /src/pdns/pdns/lua-record.cc:959,1
    - Dst: useSelector
      Src: /src/pdns/pdns/lua-record.cc:960,1
    - Dst: getOptionValue
      Src: /src/pdns/pdns/lua-record.cc:960,1
    - Dst: convComboAddressListToString
      Src: /src/pdns/pdns/lua-record.cc:961,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/lua-record.cc:967,1
    - Dst: empty
      Src: /src/pdns/pdns/lua-record.cc:973,1
    - Dst: useSelector
      Src: /src/pdns/pdns/lua-record.cc:974,1
    - Dst: getOptionValue
      Src: /src/pdns/pdns/lua-record.cc:974,1
    - Dst: convComboAddressListToString
      Src: /src/pdns/pdns/lua-record.cc:978,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 25
    argCount: 4
    argNames:
    - slog
    - ' ips'
    - options
    - ' upcheckf'
    argTypes:
    - Logr::log_t
    - boost::variant<iplist_t, ipunitlist_t>
    - boost::optional<opts_t>
    - std::function<int(Logr::log_t, const ComboAddress&, const opts_t&)>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 979
      start: 937
    functionDepth: 4
    functionLinenumber: 937
    functionLinenumberEnd: 979
    functionName: genericIfUp
    functionSourceFile: /src/pdns/pdns/lua-record.cc
    functionUses: 0
    functionsReached:
    - vector::push_back
    - std::runtime_error
    - getOptionValue
    - vector::empty
    - convComboAddressListToString
    - upcheckf
    - useSelector
    - convMultiComboAddressList
    - empty
    linkageType: ''
    returnType: vector<string>
    signature: vector<string> genericIfUp(Logr::log_t slog, const boost::variant<iplist_t,
      ipunitlist_t>& ips, boost::optional<opts_t> options, const std::function<int(Logr::log_t,
      const ComboAddress&, const opts_t&)>& upcheckf, uint16_t port = 0)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getLatLon
      Src: /src/pdns/pdns/lua-record.cc:987,1
    - Dst: bestwho::toString
      Src: /src/pdns/pdns/lua-record.cc:987,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/lua-record.cc:988,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/lua-record.cc:988,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - slog
    argTypes:
    - Logr::log_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 989
      start: 983
    functionDepth: 2
    functionLinenumber: 983
    functionLinenumberEnd: 989
    functionName: lua_latlon
    functionSourceFile: /src/pdns/pdns/lua-record.cc
    functionUses: 0
    functionsReached:
    - bestwho::toString
    - getLatLon
    - std::to_string
    linkageType: ''
    returnType: string
    signature: string lua_latlon(Logr::log_t slog)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getLatLon
      Src: /src/pdns/pdns/lua-record.cc:994,1
    - Dst: bestwho::toString
      Src: /src/pdns/pdns/lua-record.cc:994,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - slog
    argTypes:
    - Logr::log_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 996
      start: 991
    functionDepth: 2
    functionLinenumber: 991
    functionLinenumberEnd: 996
    functionName: lua_latlonloc
    functionSourceFile: /src/pdns/pdns/lua-record.cc
    functionUses: 0
    functionsReached:
    - bestwho::toString
    - getLatLon
    linkageType: ''
    returnType: string
    signature: string lua_latlonloc(Logr::log_t slog)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: qname::getRawLabels
      Src: /src/pdns/pdns/lua-record.cc:1002,1
    - Dst: std::replace
      Src: /src/pdns/pdns/lua-record.cc:1003,1
    - Dst: begin
      Src: /src/pdns/pdns/lua-record.cc:1003,1
    - Dst: end
      Src: /src/pdns/pdns/lua-record.cc:1003,1
    - Dst: vector::emplace_back
      Src: /src/pdns/pdns/lua-record.cc:1005,1
    - Dst: pickclosest
      Src: /src/pdns/pdns/lua-record.cc:1011,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - slog
    argTypes:
    - Logr::log_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1012
      start: 998
    functionDepth: 3
    functionLinenumber: 998
    functionLinenumberEnd: 1012
    functionName: lua_closestMagic
    functionSourceFile: /src/pdns/pdns/lua-record.cc
    functionUses: 0
    functionsReached:
    - qname::getRawLabels
    - pickclosest
    - end
    - vector::emplace_back
    - begin
    - std::replace
    linkageType: ''
    returnType: string
    signature: string lua_closestMagic(Logr::log_t slog)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: qname::getRawLabels
      Src: /src/pdns/pdns/lua-record.cc:1016,1
    - Dst: auto::size
      Src: /src/pdns/pdns/lua-record.cc:1017,1
    - Dst: getLatLon
      Src: /src/pdns/pdns/lua-record.cc:1022,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/lua-record.cc:1023,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/lua-record.cc:1023,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - slog
    argTypes:
    - Logr::log_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1024
      start: 1014
    functionDepth: 2
    functionLinenumber: 1014
    functionLinenumberEnd: 1024
    functionName: lua_latlonMagic
    functionSourceFile: /src/pdns/pdns/lua-record.cc
    functionUses: 0
    functionsReached:
    - qname::getRawLabels
    - std::to_string
    - getLatLon
    - auto::size
    linkageType: ''
    returnType: string
    signature: string lua_latlonMagic(Logr::log_t slog)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: qname::getRawLabels
      Src: /src/pdns/pdns/lua-record.cc:1029,1
    - Dst: auto::size
      Src: /src/pdns/pdns/lua-record.cc:1030,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/lua-record.cc:1040,1
    - Dst: std::get<string>
      Src: /src/pdns/pdns/lua-record.cc:1041,1
    - Dst: boost::format::exceptions
      Src: /src/pdns/pdns/lua-record.cc:1046,1
    - Dst: atoi
      Src: /src/pdns/pdns/lua-record.cc:1053,1
    - Dst: c_str
      Src: /src/pdns/pdns/lua-record.cc:1053,1
    - Dst: boost::format::str
      Src: /src/pdns/pdns/lua-record.cc:1056,1
    - Dst: boost::format::str
      Src: /src/pdns/pdns/lua-record.cc:1058,1
    - Dst: SLOG
      Src: /src/pdns/pdns/lua-record.cc:1061,1
    - Dst: what
      Src: /src/pdns/pdns/lua-record.cc:1061,1
    - Dst: Logr::log_t::error
      Src: /src/pdns/pdns/lua-record.cc:1062,1
    - Dst: what
      Src: /src/pdns/pdns/lua-record.cc:1062,1
    - Dst: SLOG
      Src: /src/pdns/pdns/lua-record.cc:1065,1
    - Dst: Logr::log_t::error
      Src: /src/pdns/pdns/lua-record.cc:1066,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 25
    argCount: 3
    argNames:
    - slog
    - format
    - exceptions
    argTypes:
    - Logr::log_t
    - string
    - boost::optional<opts_t>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1069
      start: 1026
    functionDepth: 0
    functionLinenumber: 1026
    functionLinenumberEnd: 1069
    functionName: lua_createReverse
    functionSourceFile: /src/pdns/pdns/lua-record.cc
    functionUses: 0
    functionsReached:
    - qname::getRawLabels
    - boost::format::str
    - SLOG
    - boost::format::exceptions
    - std::get<string>
    - atoi
    - what
    - Logr::log_t::error
    - c_str
    - auto::size
    - ComboAddress
    linkageType: ''
    returnType: string
    signature: string lua_createReverse(Logr::log_t slog, const string &format, boost::optional<opts_t>
      exceptions)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: DNSName::isWildcard
      Src: /src/pdns/pdns/lua-record.cc:1078,1
    - Dst: DNSName::chopOff
      Src: /src/pdns/pdns/lua-record.cc:1081,1
    - Dst: qname::makeRelative
      Src: /src/pdns/pdns/lua-record.cc:1082,1
    - Dst: DNSName::getRawLabels
      Src: /src/pdns/pdns/lua-record.cc:1086,1
    - Dst: auto::size
      Src: /src/pdns/pdns/lua-record.cc:1088,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/lua-record.cc:1090,1
    - Dst: auto::empty
      Src: /src/pdns/pdns/lua-record.cc:1092,1
    - Dst: auto::at
      Src: /src/pdns/pdns/lua-record.cc:1093,1
    - Dst: strcspn
      Src: /src/pdns/pdns/lua-record.cc:1096,1
    - Dst: c_str
      Src: /src/pdns/pdns/lua-record.cc:1096,1
    - Dst: substr
      Src: /src/pdns/pdns/lua-record.cc:1098,1
    - Dst: stringtok
      Src: /src/pdns/pdns/lua-record.cc:1104,1
    - Dst: vector::size
      Src: /src/pdns/pdns/lua-record.cc:1105,1
    - Dst: vector::at
      Src: /src/pdns/pdns/lua-record.cc:1109,1
    - Dst: vector::size
      Src: /src/pdns/pdns/lua-record.cc:1109,1
    - Dst: pdns::checked_stoi<uint8_t>
      Src: /src/pdns/pdns/lua-record.cc:1111,1
    - Dst: auto::length
      Src: /src/pdns/pdns/lua-record.cc:1113,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/lua-record.cc:1116,1
    - Dst: string::resize
      Src: /src/pdns/pdns/lua-record.cc:1118,1
    - Dst: string::size
      Src: /src/pdns/pdns/lua-record.cc:1118,1
    - Dst: length
      Src: /src/pdns/pdns/lua-record.cc:1121,1
    - Dst: substr
      Src: /src/pdns/pdns/lua-record.cc:1122,1
    - Dst: length
      Src: /src/pdns/pdns/lua-record.cc:1122,1
    - Dst: sscanf
      Src: /src/pdns/pdns/lua-record.cc:1127,1
    - Dst: auto::c_str
      Src: /src/pdns/pdns/lua-record.cc:1127,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/lua-record.cc:1128,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/lua-record.cc:1128,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/lua-record.cc:1128,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/lua-record.cc:1128,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/lua-record.cc:1129,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 36
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1139
      start: 1074
    functionDepth: 1
    functionLinenumber: 1074
    functionLinenumberEnd: 1139
    functionName: lua_createForward
    functionSourceFile: /src/pdns/pdns/lua-record.cc
    functionUses: 0
    functionsReached:
    - std::to_string
    - qname::makeRelative
    - auto::size
    - string::resize
    - stringtok
    - vector::at
    - DNSName::chopOff
    - pdns::checked_stoi<uint8_t>
    - string::size
    - substr
    - c_str
    - auto::length
    - DNSName::isWildcard
    - sscanf
    - auto::c_str
    - strcspn
    - length
    - DNSName::getRawLabels
    - ComboAddress::toString
    - auto::at
    - vector::size
    - auto::empty
    linkageType: ''
    returnType: string
    signature: string lua_createForward()
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: DNSName::isWildcard
      Src: /src/pdns/pdns/lua-record.cc:1145,1
    - Dst: DNSName::chopOff
      Src: /src/pdns/pdns/lua-record.cc:1148,1
    - Dst: qname::makeRelative
      Src: /src/pdns/pdns/lua-record.cc:1149,1
    - Dst: DNSName::getRawLabels
      Src: /src/pdns/pdns/lua-record.cc:1151,1
    - Dst: auto::size
      Src: /src/pdns/pdns/lua-record.cc:1152,1
    - Dst: string::append
      Src: /src/pdns/pdns/lua-record.cc:1156,1
    - Dst: auto::at
      Src: /src/pdns/pdns/lua-record.cc:1158,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/lua-record.cc:1161,1
    - Dst: auto::size
      Src: /src/pdns/pdns/lua-record.cc:1163,1
    - Dst: find
      Src: /src/pdns/pdns/lua-record.cc:1164,1
    - Dst: std::replace
      Src: /src/pdns/pdns/lua-record.cc:1165,1
    - Dst: begin
      Src: /src/pdns/pdns/lua-record.cc:1165,1
    - Dst: end
      Src: /src/pdns/pdns/lua-record.cc:1165,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/lua-record.cc:1167,1
    - Dst: size
      Src: /src/pdns/pdns/lua-record.cc:1169,1
    - Dst: substr
      Src: /src/pdns/pdns/lua-record.cc:1170,1
    - Dst: size
      Src: /src/pdns/pdns/lua-record.cc:1170,1
    - Dst: auto::substr
      Src: /src/pdns/pdns/lua-record.cc:1172,1
    - Dst: auto::substr
      Src: /src/pdns/pdns/lua-record.cc:1173,1
    - Dst: auto::substr
      Src: /src/pdns/pdns/lua-record.cc:1174,1
    - Dst: auto::substr
      Src: /src/pdns/pdns/lua-record.cc:1175,1
    - Dst: auto::substr
      Src: /src/pdns/pdns/lua-record.cc:1176,1
    - Dst: auto::substr
      Src: /src/pdns/pdns/lua-record.cc:1177,1
    - Dst: auto::substr
      Src: /src/pdns/pdns/lua-record.cc:1178,1
    - Dst: auto::substr
      Src: /src/pdns/pdns/lua-record.cc:1179,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/lua-record.cc:1182,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 28
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1189
      start: 1141
    functionDepth: 0
    functionLinenumber: 1141
    functionLinenumberEnd: 1189
    functionName: lua_createForward6
    functionSourceFile: /src/pdns/pdns/lua-record.cc
    functionUses: 0
    functionsReached:
    - DNSName::isWildcard
    - DNSName::chopOff
    - string::append
    - qname::makeRelative
    - end
    - size
    - std::replace
    - begin
    - DNSName::getRawLabels
    - substr
    - auto::substr
    - ComboAddress::toString
    - auto::at
    - auto::size
    - find
    linkageType: ''
    returnType: string
    signature: string lua_createForward6()
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: qname::getRawLabels
      Src: /src/pdns/pdns/lua-record.cc:1194,1
    - Dst: auto::size
      Src: /src/pdns/pdns/lua-record.cc:1195,1
    - Dst: boost::format::exceptions
      Src: /src/pdns/pdns/lua-record.cc:1200,1
    - Dst: string::append
      Src: /src/pdns/pdns/lua-record.cc:1210,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/lua-record.cc:1213,1
    - Dst: std::move
      Src: /src/pdns/pdns/lua-record.cc:1213,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/lua-record.cc:1221,1
    - Dst: std::get<string>
      Src: /src/pdns/pdns/lua-record.cc:1222,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/lua-record.cc:1227,1
    - Dst: std::replace
      Src: /src/pdns/pdns/lua-record.cc:1228,1
    - Dst: string::begin
      Src: /src/pdns/pdns/lua-record.cc:1228,1
    - Dst: string::end
      Src: /src/pdns/pdns/lua-record.cc:1228,1
    - Dst: boost::ends_with
      Src: /src/pdns/pdns/lua-record.cc:1231,1
    - Dst: string::push_back
      Src: /src/pdns/pdns/lua-record.cc:1233,1
    - Dst: boost::starts_with
      Src: /src/pdns/pdns/lua-record.cc:1235,1
    - Dst: string::compare
      Src: /src/pdns/pdns/lua-record.cc:1235,1
    - Dst: string::insert
      Src: /src/pdns/pdns/lua-record.cc:1237,1
    - Dst: boost::format::str
      Src: /src/pdns/pdns/lua-record.cc:1249,1
    - Dst: SLOG
      Src: /src/pdns/pdns/lua-record.cc:1252,1
    - Dst: what
      Src: /src/pdns/pdns/lua-record.cc:1252,1
    - Dst: Logr::log_t::error
      Src: /src/pdns/pdns/lua-record.cc:1253,1
    - Dst: what
      Src: /src/pdns/pdns/lua-record.cc:1253,1
    - Dst: SLOG
      Src: /src/pdns/pdns/lua-record.cc:1256,1
    - Dst: Logr::log_t::error
      Src: /src/pdns/pdns/lua-record.cc:1257,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 42
    argCount: 3
    argNames:
    - slog
    - format
    - exceptions
    argTypes:
    - Logr::log_t
    - string
    - boost::optional<opts_t>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1260
      start: 1191
    functionDepth: 1
    functionLinenumber: 1191
    functionLinenumberEnd: 1260
    functionName: lua_createReverse6
    functionSourceFile: /src/pdns/pdns/lua-record.cc
    functionUses: 0
    functionsReached:
    - boost::format::str
    - std::replace
    - auto::size
    - string::end
    - SLOG
    - boost::format::exceptions
    - boost::starts_with
    - Logr::log_t::error
    - string::insert
    - boost::ends_with
    - qname::getRawLabels
    - string::begin
    - vector::push_back
    - string::push_back
    - ComboAddress
    - string::compare
    - std::move
    - std::get<string>
    - what
    - string::append
    - ComboAddress::toString
    linkageType: ''
    returnType: string
    signature: string lua_createReverse6(Logr::log_t slog, const string &format, boost::optional<opts_t>
      exceptions)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: match
      Src: /src/pdns/pdns/lua-record.cc:1266,1
    - Dst: boost::optional<string>::empty
      Src: /src/pdns/pdns/lua-record.cc:1270,1
    - Dst: ComboAddress::isIPv4
      Src: /src/pdns/pdns/lua-record.cc:1277,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 3
    argNames:
    - ' address'
    - ' nmg'
    - fallback
    argTypes:
    - string
    - NetmaskGroup
    - boost::optional<string>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1281
      start: 1262
    functionDepth: 0
    functionLinenumber: 1262
    functionLinenumberEnd: 1281
    functionName: lua_filterForward
    functionSourceFile: /src/pdns/pdns/lua-record.cc
    functionUses: 0
    functionsReached:
    - boost::optional<string>::empty
    - match
    - ComboAddress::isIPv4
    linkageType: ''
    returnType: vector<string>
    signature: vector<string> lua_filterForward(const string& address, NetmaskGroup&
      nmg, boost::optional<string> fallback)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::max
      Src: /src/pdns/pdns/lua-record.cc:1293,1
    - Dst: std::min
      Src: /src/pdns/pdns/lua-record.cc:1294,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/lua-record.cc:1294,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/lua-record.cc:1294,1
    - Dst: isUp
      Src: /src/pdns/pdns/lua-record.cc:1297,1
    - Dst: genericIfUp
      Src: /src/pdns/pdns/lua-record.cc:1299,1
    - Dst: std::move
      Src: /src/pdns/pdns/lua-record.cc:1299,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 4
    argNames:
    - slog
    - port
    - ' ips'
    - options
    argTypes:
    - Logr::log_t
    - int
    - boost::variant<iplist_t, ipunitlist_t>
    - boost::optional<opts_t>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1300
      start: 1291
    functionDepth: 5
    functionLinenumber: 1291
    functionLinenumberEnd: 1300
    functionName: lua_ifportup
    functionSourceFile: /src/pdns/pdns/lua-record.cc
    functionUses: 0
    functionsReached:
    - pdns::max
    - std::move
    - std::min
    - genericIfUp
    - std::max
    - isUp
    - static_cast<int>
    linkageType: ''
    returnType: vector<string>
    signature: vector<string> lua_ifportup(Logr::log_t slog, int port, const boost::variant<iplist_t,
      ipunitlist_t>& ips, boost::optional<opts_t> options)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: vector::push_back
      Src: /src/pdns/pdns/lua-record.cc:1322,1
    - Dst: isUp
      Src: /src/pdns/pdns/lua-record.cc:1323,1
    - Dst: std::get<string>
      Src: /src/pdns/pdns/lua-record.cc:1323,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/lua-record.cc:1325,1
    - Dst: vector::empty
      Src: /src/pdns/pdns/lua-record.cc:1331,1
    - Dst: useSelector
      Src: /src/pdns/pdns/lua-record.cc:1332,1
    - Dst: getOptionValue
      Src: /src/pdns/pdns/lua-record.cc:1332,1
    - Dst: convComboAddressListToString
      Src: /src/pdns/pdns/lua-record.cc:1333,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/lua-record.cc:1339,1
    - Dst: empty
      Src: /src/pdns/pdns/lua-record.cc:1345,1
    - Dst: vector::reserve
      Src: /src/pdns/pdns/lua-record.cc:1346,1
    - Dst: size
      Src: /src/pdns/pdns/lua-record.cc:1346,1
    - Dst: vector::emplace_back
      Src: /src/pdns/pdns/lua-record.cc:1348,1
    - Dst: useSelector
      Src: /src/pdns/pdns/lua-record.cc:1353,1
    - Dst: getOptionValue
      Src: /src/pdns/pdns/lua-record.cc:1353,1
    - Dst: convComboAddressListToString
      Src: /src/pdns/pdns/lua-record.cc:1354,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 28
    argCount: 3
    argNames:
    - slog
    - ' ipurls'
    - options
    argTypes:
    - Logr::log_t
    - vector<pair<int, opts_t> >
    - boost::optional<opts_t>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1355
      start: 1302
    functionDepth: 4
    functionLinenumber: 1302
    functionLinenumberEnd: 1355
    functionName: lua_ifurlextup
    functionSourceFile: /src/pdns/pdns/lua-record.cc
    functionUses: 0
    functionsReached:
    - vector::push_back
    - std::get<string>
    - std::runtime_error
    - getOptionValue
    - size
    - vector::empty
    - convComboAddressListToString
    - useSelector
    - vector::emplace_back
    - empty
    - vector::reserve
    - isUp
    linkageType: ''
    returnType: vector<string>
    signature: vector<string> lua_ifurlextup(Logr::log_t slog, const vector<pair<int,
      opts_t> >& ipurls, boost::optional<opts_t> options)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: isUp
      Src: /src/pdns/pdns/lua-record.cc:1360,1
    - Dst: genericIfUp
      Src: /src/pdns/pdns/lua-record.cc:1362,1
    - Dst: std::move
      Src: /src/pdns/pdns/lua-record.cc:1362,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 4
    argNames:
    - slog
    - ' url'
    - ' ips'
    - options
    argTypes:
    - Logr::log_t
    - std::string
    - boost::variant<iplist_t, ipunitlist_t>
    - boost::optional<opts_t>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1363
      start: 1357
    functionDepth: 5
    functionLinenumber: 1357
    functionLinenumberEnd: 1363
    functionName: lua_ifurlup
    functionSourceFile: /src/pdns/pdns/lua-record.cc
    functionUses: 0
    functionsReached:
    - std::move
    - isUp
    - genericIfUp
    linkageType: ''
    returnType: vector<string>
    signature: vector<string> lua_ifurlup(Logr::log_t slog, const std::string& url,
      const boost::variant<iplist_t, ipunitlist_t>& ips, boost::optional<opts_t> options)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: convStringList
      Src: /src/pdns/pdns/lua-record.cc:1371,1
    - Dst: pickRandom
      Src: /src/pdns/pdns/lua-record.cc:1372,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' ips'
    argTypes:
    - iplist_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1373
      start: 1369
    functionDepth: 1
    functionLinenumber: 1369
    functionLinenumberEnd: 1373
    functionName: lua_pickrandom
    functionSourceFile: /src/pdns/pdns/lua-record.cc
    functionUses: 0
    functionsReached:
    - convStringList
    - pickRandom
    linkageType: ''
    returnType: string
    signature: string lua_pickrandom(const iplist_t& ips)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: vector::reserve
      Src: /src/pdns/pdns/lua-record.cc:1388,1
    - Dst: capacity
      Src: /src/pdns/pdns/lua-record.cc:1388,1
    - Dst: convComboAddressList
      Src: /src/pdns/pdns/lua-record.cc:1391,1
    - Dst: isUp
      Src: /src/pdns/pdns/lua-record.cc:1394,1
    - Dst: vector::emplace_back
      Src: /src/pdns/pdns/lua-record.cc:1398,1
    - Dst: pickWeightedHashed
      Src: /src/pdns/pdns/lua-record.cc:1401,1
    - Dst: pickWeightedRandom
      Src: /src/pdns/pdns/lua-record.cc:1405,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 4
    argNames:
    - slog
    - ' url'
    - ' ips'
    - options
    argTypes:
    - Logr::log_t
    - std::string
    - iplist_t
    - boost::optional<opts_t>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1406
      start: 1380
    functionDepth: 1
    functionLinenumber: 1380
    functionLinenumberEnd: 1406
    functionName: lua_pickselfweighted
    functionSourceFile: /src/pdns/pdns/lua-record.cc
    functionUses: 0
    functionsReached:
    - pickWeightedRandom
    - convComboAddressList
    - capacity
    - vector::emplace_back
    - vector::reserve
    - isUp
    - pickWeightedHashed
    linkageType: ''
    returnType: string
    signature: string lua_pickselfweighted(Logr::log_t slog, const std::string& url,
      const iplist_t& ips, boost::optional<opts_t> options)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: convStringList
      Src: /src/pdns/pdns/lua-record.cc:1410,1
    - Dst: pickRandomSample
      Src: /src/pdns/pdns/lua-record.cc:1411,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - n
    - ' ips'
    argTypes:
    - int
    - iplist_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1412
      start: 1408
    functionDepth: 1
    functionLinenumber: 1408
    functionLinenumberEnd: 1412
    functionName: lua_pickrandomsample
    functionSourceFile: /src/pdns/pdns/lua-record.cc
    functionUses: 0
    functionsReached:
    - convStringList
    - pickRandomSample
    linkageType: ''
    returnType: vector<string>
    signature: vector<string> lua_pickrandomsample(int n, const iplist_t& ips)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: convStringList
      Src: /src/pdns/pdns/lua-record.cc:1416,1
    - Dst: pickHashed
      Src: /src/pdns/pdns/lua-record.cc:1417,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' ips'
    argTypes:
    - iplist_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1418
      start: 1414
    functionDepth: 1
    functionLinenumber: 1414
    functionLinenumberEnd: 1418
    functionName: lua_pickhashed
    functionSourceFile: /src/pdns/pdns/lua-record.cc
    functionUses: 0
    functionsReached:
    - convStringList
    - pickHashed
    linkageType: ''
    returnType: string
    signature: string lua_pickhashed(const iplist_t& ips)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: convIntStringPairList
      Src: /src/pdns/pdns/lua-record.cc:1427,1
    - Dst: pickWeightedRandom
      Src: /src/pdns/pdns/lua-record.cc:1428,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' ips'
    argTypes:
    - std::unordered_map<int, wiplist_t>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1429
      start: 1425
    functionDepth: 1
    functionLinenumber: 1425
    functionLinenumberEnd: 1429
    functionName: lua_pickwrandom
    functionSourceFile: /src/pdns/pdns/lua-record.cc
    functionUses: 0
    functionsReached:
    - pickWeightedRandom
    - convIntStringPairList
    linkageType: ''
    returnType: string
    signature: string lua_pickwrandom(const std::unordered_map<int, wiplist_t>& ips)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vector::reserve
      Src: /src/pdns/pdns/lua-record.cc:1440,1
    - Dst: std::unordered_map<int, wiplist_t>::size
      Src: /src/pdns/pdns/lua-record.cc:1440,1
    - Dst: vector::emplace_back
      Src: /src/pdns/pdns/lua-record.cc:1442,1
    - Dst: pdns::checked_stoi_nonzero<unsigned int>
      Src: /src/pdns/pdns/lua-record.cc:1442,1
    - Dst: c_str
      Src: /src/pdns/pdns/lua-record.cc:1442,1
    - Dst: pickWeightedHashed
      Src: /src/pdns/pdns/lua-record.cc:1445,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ips
    argTypes:
    - std::unordered_map<int, wiplist_t>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1446
      start: 1436
    functionDepth: 1
    functionLinenumber: 1436
    functionLinenumberEnd: 1446
    functionName: lua_pickwhashed
    functionSourceFile: /src/pdns/pdns/lua-record.cc
    functionUses: 0
    functionsReached:
    - c_str
    - std::unordered_map<int, wiplist_t>::size
    - vector::emplace_back
    - pdns::checked_stoi_nonzero<unsigned int>
    - vector::reserve
    - pickWeightedHashed
    linkageType: ''
    returnType: string
    signature: string lua_pickwhashed(std::unordered_map<int, wiplist_t> ips)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vector::reserve
      Src: /src/pdns/pdns/lua-record.cc:1457,1
    - Dst: std::unordered_map<int, wiplist_t>::size
      Src: /src/pdns/pdns/lua-record.cc:1457,1
    - Dst: vector::emplace_back
      Src: /src/pdns/pdns/lua-record.cc:1459,1
    - Dst: pdns::checked_stoi_nonzero<unsigned int>
      Src: /src/pdns/pdns/lua-record.cc:1459,1
    - Dst: c_str
      Src: /src/pdns/pdns/lua-record.cc:1459,1
    - Dst: pickWeightedNameHashed
      Src: /src/pdns/pdns/lua-record.cc:1462,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ips
    argTypes:
    - std::unordered_map<int, wiplist_t>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1463
      start: 1453
    functionDepth: 2
    functionLinenumber: 1453
    functionLinenumberEnd: 1463
    functionName: lua_picknamehashed
    functionSourceFile: /src/pdns/pdns/lua-record.cc
    functionUses: 0
    functionsReached:
    - c_str
    - std::unordered_map<int, wiplist_t>::size
    - vector::emplace_back
    - pdns::checked_stoi_nonzero<unsigned int>
    - vector::reserve
    - pickWeightedNameHashed
    linkageType: ''
    returnType: string
    signature: string lua_picknamehashed(std::unordered_map<int, wiplist_t> ips)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::vector::reserve
      Src: /src/pdns/pdns/lua-record.cc:1474,1
    - Dst: size
      Src: /src/pdns/pdns/lua-record.cc:1474,1
    - Dst: std::vector::emplace_back
      Src: /src/pdns/pdns/lua-record.cc:1476,1
    - Dst: pdns::checked_stoi_nonzero<unsigned int>
      Src: /src/pdns/pdns/lua-record.cc:1476,1
    - Dst: second::at
      Src: /src/pdns/pdns/lua-record.cc:1476,1
    - Dst: second::at
      Src: /src/pdns/pdns/lua-record.cc:1476,1
    - Dst: pickConsistentWeightedHashed
      Src: /src/pdns/pdns/lua-record.cc:1479,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ' ips'
    argTypes:
    - std::unordered_map<int, wiplist_t>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1480
      start: 1470
    functionDepth: 3
    functionLinenumber: 1470
    functionLinenumberEnd: 1480
    functionName: lua_pickchashed
    functionSourceFile: /src/pdns/pdns/lua-record.cc
    functionUses: 0
    functionsReached:
    - second::at
    - pickConsistentWeightedHashed
    - std::vector::emplace_back
    - size
    - std::vector::reserve
    - pdns::checked_stoi_nonzero<unsigned int>
    linkageType: ''
    returnType: string
    signature: string lua_pickchashed(const std::unordered_map<int, wiplist_t>& ips)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: convComboAddressList
      Src: /src/pdns/pdns/lua-record.cc:1484,1
    - Dst: pickclosest
      Src: /src/pdns/pdns/lua-record.cc:1486,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - slog
    - ' ips'
    argTypes:
    - Logr::log_t
    - iplist_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1487
      start: 1482
    functionDepth: 3
    functionLinenumber: 1482
    functionLinenumberEnd: 1487
    functionName: lua_pickclosest
    functionSourceFile: /src/pdns/pdns/lua-record.cc
    functionUses: 0
    functionsReached:
    - pickclosest
    - convComboAddressList
    linkageType: ''
    returnType: string
    signature: string lua_pickclosest(Logr::log_t slog, const iplist_t& ips)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/lua-record.cc:1491,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1492
      start: 1489
    functionDepth: 0
    functionLinenumber: 1489
    functionLinenumberEnd: 1492
    functionName: lua_report
    functionSourceFile: /src/pdns/pdns/lua-record.cc
    functionUses: 0
    functionsReached:
    - std::runtime_error
    linkageType: ''
    returnType: void
    signature: void lua_report(const string& /* event */, const boost::optional<string>&
      /* line */)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getGeo
      Src: /src/pdns/pdns/lua-record.cc:1496,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - slog
    - address
    - attr
    argTypes:
    - Logr::log_t
    - string
    - GeoIPInterface::GeoIPQueryAttribute
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1497
      start: 1494
    functionDepth: 1
    functionLinenumber: 1494
    functionLinenumberEnd: 1497
    functionName: lua_geoiplookup
    functionSourceFile: /src/pdns/pdns/lua-record.cc
    functionUses: 0
    functionsReached:
    - getGeo
    linkageType: ''
    returnType: string
    signature: string lua_geoiplookup(Logr::log_t slog, const string &address, const
      GeoIPInterface::GeoIPQueryAttribute attr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getGeo
      Src: /src/pdns/pdns/lua-record.cc:1503,1
    - Dst: bestwho::toString
      Src: /src/pdns/pdns/lua-record.cc:1503,1
    - Dst: doCompare
      Src: /src/pdns/pdns/lua-record.cc:1504,1
    - Dst: strcasecmp
      Src: /src/pdns/pdns/lua-record.cc:1505,1
    - Dst: c_str
      Src: /src/pdns/pdns/lua-record.cc:1505,1
    - Dst: c_str
      Src: /src/pdns/pdns/lua-record.cc:1505,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - slog
    - ' asns'
    argTypes:
    - Logr::log_t
    - combovar_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1507
      start: 1501
    functionDepth: 1
    functionLinenumber: 1501
    functionLinenumberEnd: 1507
    functionName: lua_asnum
    functionSourceFile: /src/pdns/pdns/lua-record.cc
    functionUses: 0
    functionsReached:
    - getGeo
    - bestwho::toString
    - doCompare
    - c_str
    - strcasecmp
    linkageType: ''
    returnType: bool
    signature: bool lua_asnum(Logr::log_t slog, const combovar_t& asns)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getGeo
      Src: /src/pdns/pdns/lua-record.cc:1511,1
    - Dst: bestwho::toString
      Src: /src/pdns/pdns/lua-record.cc:1511,1
    - Dst: doCompare
      Src: /src/pdns/pdns/lua-record.cc:1512,1
    - Dst: strcasecmp
      Src: /src/pdns/pdns/lua-record.cc:1513,1
    - Dst: c_str
      Src: /src/pdns/pdns/lua-record.cc:1513,1
    - Dst: c_str
      Src: /src/pdns/pdns/lua-record.cc:1513,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - slog
    - ' continent'
    argTypes:
    - Logr::log_t
    - combovar_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1515
      start: 1509
    functionDepth: 1
    functionLinenumber: 1509
    functionLinenumberEnd: 1515
    functionName: lua_continent
    functionSourceFile: /src/pdns/pdns/lua-record.cc
    functionUses: 0
    functionsReached:
    - getGeo
    - bestwho::toString
    - doCompare
    - c_str
    - strcasecmp
    linkageType: ''
    returnType: bool
    signature: bool lua_continent(Logr::log_t slog, const combovar_t& continent)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: getGeo
      Src: /src/pdns/pdns/lua-record.cc:1520,1
    - Dst: bestwho::toString
      Src: /src/pdns/pdns/lua-record.cc:1520,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - slog
    argTypes:
    - Logr::log_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1525
      start: 1517
    functionDepth: 1
    functionLinenumber: 1517
    functionLinenumberEnd: 1525
    functionName: lua_continentCode
    functionSourceFile: /src/pdns/pdns/lua-record.cc
    functionUses: 0
    functionsReached:
    - getGeo
    - bestwho::toString
    linkageType: ''
    returnType: string
    signature: string lua_continentCode(Logr::log_t slog)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getGeo
      Src: /src/pdns/pdns/lua-record.cc:1529,1
    - Dst: bestwho::toString
      Src: /src/pdns/pdns/lua-record.cc:1529,1
    - Dst: doCompare
      Src: /src/pdns/pdns/lua-record.cc:1530,1
    - Dst: strcasecmp
      Src: /src/pdns/pdns/lua-record.cc:1531,1
    - Dst: c_str
      Src: /src/pdns/pdns/lua-record.cc:1531,1
    - Dst: c_str
      Src: /src/pdns/pdns/lua-record.cc:1531,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - slog
    - ' var'
    argTypes:
    - Logr::log_t
    - combovar_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1534
      start: 1527
    functionDepth: 1
    functionLinenumber: 1527
    functionLinenumberEnd: 1534
    functionName: lua_country
    functionSourceFile: /src/pdns/pdns/lua-record.cc
    functionUses: 0
    functionsReached:
    - getGeo
    - bestwho::toString
    - doCompare
    - c_str
    - strcasecmp
    linkageType: ''
    returnType: bool
    signature: bool lua_country(Logr::log_t slog, const combovar_t& var)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: getGeo
      Src: /src/pdns/pdns/lua-record.cc:1539,1
    - Dst: bestwho::toString
      Src: /src/pdns/pdns/lua-record.cc:1539,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - slog
    argTypes:
    - Logr::log_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1544
      start: 1536
    functionDepth: 1
    functionLinenumber: 1536
    functionLinenumberEnd: 1544
    functionName: lua_countryCode
    functionSourceFile: /src/pdns/pdns/lua-record.cc
    functionUses: 0
    functionsReached:
    - getGeo
    - bestwho::toString
    linkageType: ''
    returnType: string
    signature: string lua_countryCode(Logr::log_t slog)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getGeo
      Src: /src/pdns/pdns/lua-record.cc:1548,1
    - Dst: bestwho::toString
      Src: /src/pdns/pdns/lua-record.cc:1548,1
    - Dst: doCompare
      Src: /src/pdns/pdns/lua-record.cc:1549,1
    - Dst: strcasecmp
      Src: /src/pdns/pdns/lua-record.cc:1550,1
    - Dst: c_str
      Src: /src/pdns/pdns/lua-record.cc:1550,1
    - Dst: c_str
      Src: /src/pdns/pdns/lua-record.cc:1550,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - slog
    - ' var'
    argTypes:
    - Logr::log_t
    - combovar_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1553
      start: 1546
    functionDepth: 1
    functionLinenumber: 1546
    functionLinenumberEnd: 1553
    functionName: lua_region
    functionSourceFile: /src/pdns/pdns/lua-record.cc
    functionUses: 0
    functionsReached:
    - getGeo
    - bestwho::toString
    - doCompare
    - c_str
    - strcasecmp
    linkageType: ''
    returnType: bool
    signature: bool lua_region(Logr::log_t slog, const combovar_t& var)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: getGeo
      Src: /src/pdns/pdns/lua-record.cc:1558,1
    - Dst: bestwho::toString
      Src: /src/pdns/pdns/lua-record.cc:1558,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - slog
    argTypes:
    - Logr::log_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1563
      start: 1555
    functionDepth: 1
    functionLinenumber: 1555
    functionLinenumberEnd: 1563
    functionName: lua_regionCode
    functionSourceFile: /src/pdns/pdns/lua-record.cc
    functionUses: 0
    functionsReached:
    - getGeo
    - bestwho::toString
    linkageType: ''
    returnType: string
    signature: string lua_regionCode(Logr::log_t slog)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Netmask::match
      Src: /src/pdns/pdns/lua-record.cc:1569,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - ' ips'
    argTypes:
    - iplist_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1574
      start: 1565
    functionDepth: 0
    functionLinenumber: 1565
    functionLinenumberEnd: 1574
    functionName: lua_netmask
    functionSourceFile: /src/pdns/pdns/lua-record.cc
    functionUses: 0
    functionsReached:
    - Netmask::match
    linkageType: ''
    returnType: bool
    signature: bool lua_netmask(const iplist_t& ips)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Netmask::match
      Src: /src/pdns/pdns/lua-record.cc:1593,1
    - Dst: empty
      Src: /src/pdns/pdns/lua-record.cc:1594,1
    - Dst: std::invalid_argument
      Src: /src/pdns/pdns/lua-record.cc:1595,1
    - Dst: Netmask::toString
      Src: /src/pdns/pdns/lua-record.cc:1595,1
    - Dst: dns_random
      Src: /src/pdns/pdns/lua-record.cc:1597,1
    - Dst: size
      Src: /src/pdns/pdns/lua-record.cc:1597,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 10
    argCount: 1
    argNames:
    - ' pairs'
    argTypes:
    - vector<pair<int, vector<pair<int, iplist_t> > > >
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1602
      start: 1586
    functionDepth: 0
    functionLinenumber: 1586
    functionLinenumberEnd: 1602
    functionName: lua_view
    functionSourceFile: /src/pdns/pdns/lua-record.cc
    functionUses: 0
    functionsReached:
    - dns_random
    - Netmask::toString
    - std::invalid_argument
    - size
    - empty
    - Netmask::match
    linkageType: ''
    returnType: string
    signature: string lua_view(const vector<pair<int, vector<pair<int, iplist_t> >
      > >& pairs)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: vector::reserve
      Src: /src/pdns/pdns/lua-record.cc:1607,1
    - Dst: size
      Src: /src/pdns/pdns/lua-record.cc:1607,1
    - Dst: vector::emplace_back
      Src: /src/pdns/pdns/lua-record.cc:1610,1
    - Dst: vector::empty
      Src: /src/pdns/pdns/lua-record.cc:1612,1
    - Dst: std::invalid_argument
      Src: /src/pdns/pdns/lua-record.cc:1613,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - ' ips'
    argTypes:
    - vector< pair<int,string> >
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1616
      start: 1604
    functionDepth: 0
    functionLinenumber: 1604
    functionLinenumberEnd: 1616
    functionName: lua_all
    functionSourceFile: /src/pdns/pdns/lua-record.cc
    functionUses: 0
    functionsReached:
    - std::invalid_argument
    - size
    - vector::empty
    - vector::emplace_back
    - vector::reserve
    linkageType: ''
    returnType: vector<string>
    signature: vector<string> lua_all(const vector< pair<int,string> >& ips)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ZoneName::ZoneName
      Src: /src/pdns/pdns/lua-record.cc:1620,1
    - Dst: ZoneName
      Src: /src/pdns/pdns/lua-record.cc:1623,1
    - Dst: SLOG
      Src: /src/pdns/pdns/lua-record.cc:1626,1
    - Dst: what
      Src: /src/pdns/pdns/lua-record.cc:1626,1
    - Dst: Logr::log_t::error
      Src: /src/pdns/pdns/lua-record.cc:1627,1
    - Dst: what
      Src: /src/pdns/pdns/lua-record.cc:1627,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/lua-record.cc:1627,1
    - Dst: getAuth
      Src: /src/pdns/pdns/lua-record.cc:1633,1
    - Dst: lookup
      Src: /src/pdns/pdns/lua-record.cc:1637,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/lua-record.cc:1639,1
    - Dst: dr::getContent
      Src: /src/pdns/pdns/lua-record.cc:1639,1
    - Dst: SLOG
      Src: /src/pdns/pdns/lua-record.cc:1643,1
    - Dst: what
      Src: /src/pdns/pdns/lua-record.cc:1643,1
    - Dst: Logr::log_t::error
      Src: /src/pdns/pdns/lua-record.cc:1644,1
    - Dst: what
      Src: /src/pdns/pdns/lua-record.cc:1644,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/lua-record.cc:1644,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/lua-record.cc:1644,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 3
    argNames:
    - slog
    - ' record'
    - qtype
    argTypes:
    - Logr::log_t
    - string
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1647
      start: 1618
    functionDepth: 2
    functionLinenumber: 1618
    functionLinenumberEnd: 1647
    functionName: lua_dblookup
    functionSourceFile: /src/pdns/pdns/lua-record.cc
    functionUses: 0
    functionsReached:
    - SLOG
    - vector::push_back
    - lookup
    - Logging::Loggable
    - what
    - ZoneName::ZoneName
    - Logr::log_t::error
    - dr::getContent
    - ZoneName
    - getAuth
    linkageType: ''
    returnType: vector<string>
    signature: vector<string> lua_dblookup(Logr::log_t slog, const string& record,
      uint16_t qtype)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSName::DNSName
      Src: /src/pdns/pdns/lua-record.cc:1651,1
    - Dst: DNSName
      Src: /src/pdns/pdns/lua-record.cc:1653,1
    - Dst: SLOG
      Src: /src/pdns/pdns/lua-record.cc:1655,1
    - Dst: what
      Src: /src/pdns/pdns/lua-record.cc:1655,1
    - Dst: Logr::log_t::error
      Src: /src/pdns/pdns/lua-record.cc:1656,1
    - Dst: what
      Src: /src/pdns/pdns/lua-record.cc:1656,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/lua-record.cc:1656,1
    - Dst: lookup
      Src: /src/pdns/pdns/lua-record.cc:1660,1
    - Dst: getRR
      Src: /src/pdns/pdns/lua-record.cc:1662,1
    - Dst: executeCode
      Src: /src/pdns/pdns/lua-record.cc:1663,1
    - Dst: auto::getCode
      Src: /src/pdns/pdns/lua-record.cc:1663,1
    - Dst: SLOG
      Src: /src/pdns/pdns/lua-record.cc:1667,1
    - Dst: what
      Src: /src/pdns/pdns/lua-record.cc:1667,1
    - Dst: Logr::log_t::error
      Src: /src/pdns/pdns/lua-record.cc:1668,1
    - Dst: what
      Src: /src/pdns/pdns/lua-record.cc:1668,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/lua-record.cc:1668,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 3
    argNames:
    - slog
    - ' lua'
    - ' record'
    argTypes:
    - Logr::log_t
    - LuaContext
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1670
      start: 1649
    functionDepth: 0
    functionLinenumber: 1649
    functionLinenumberEnd: 1670
    functionName: lua_include
    functionSourceFile: /src/pdns/pdns/lua-record.cc
    functionUses: 0
    functionsReached:
    - getRR
    - SLOG
    - lookup
    - Logging::Loggable
    - what
    - executeCode
    - Logr::log_t::error
    - DNSName
    - DNSName::DNSName
    - auto::getCode
    linkageType: ''
    returnType: void
    signature: void lua_include(Logr::log_t slog, LuaContext& lua, const string& record)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: writeFunction
      Src: /src/pdns/pdns/lua-record.cc:1687,1
    - Dst: lua_report
      Src: /src/pdns/pdns/lua-record.cc:1688,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/lua-record.cc:1691,1
    - Dst: lua_latlon
      Src: /src/pdns/pdns/lua-record.cc:1692,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/lua-record.cc:1694,1
    - Dst: lua_latlonloc
      Src: /src/pdns/pdns/lua-record.cc:1695,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/lua-record.cc:1697,1
    - Dst: lua_closestMagic
      Src: /src/pdns/pdns/lua-record.cc:1698,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/lua-record.cc:1700,1
    - Dst: lua_latlonMagic
      Src: /src/pdns/pdns/lua-record.cc:1701,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/lua-record.cc:1704,1
    - Dst: lua_createForward
      Src: /src/pdns/pdns/lua-record.cc:1705,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/lua-record.cc:1707,1
    - Dst: lua_createForward6
      Src: /src/pdns/pdns/lua-record.cc:1708,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/lua-record.cc:1711,1
    - Dst: lua_createReverse
      Src: /src/pdns/pdns/lua-record.cc:1712,1
    - Dst: std::move
      Src: /src/pdns/pdns/lua-record.cc:1712,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/lua-record.cc:1714,1
    - Dst: lua_createReverse6
      Src: /src/pdns/pdns/lua-record.cc:1715,1
    - Dst: std::move
      Src: /src/pdns/pdns/lua-record.cc:1715,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/lua-record.cc:1718,1
    - Dst: lua_filterForward
      Src: /src/pdns/pdns/lua-record.cc:1719,1
    - Dst: std::move
      Src: /src/pdns/pdns/lua-record.cc:1719,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/lua-record.cc:1722,1
    - Dst: lua_ifportup
      Src: /src/pdns/pdns/lua-record.cc:1723,1
    - Dst: std::move
      Src: /src/pdns/pdns/lua-record.cc:1723,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/lua-record.cc:1726,1
    - Dst: lua_ifurlextup
      Src: /src/pdns/pdns/lua-record.cc:1727,1
    - Dst: std::move
      Src: /src/pdns/pdns/lua-record.cc:1727,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/lua-record.cc:1730,1
    - Dst: lua_ifurlup
      Src: /src/pdns/pdns/lua-record.cc:1731,1
    - Dst: std::move
      Src: /src/pdns/pdns/lua-record.cc:1731,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/lua-record.cc:1734,1
    - Dst: lua_pickrandom
      Src: /src/pdns/pdns/lua-record.cc:1735,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/lua-record.cc:1738,1
    - Dst: lua_pickselfweighted
      Src: /src/pdns/pdns/lua-record.cc:1739,1
    - Dst: std::move
      Src: /src/pdns/pdns/lua-record.cc:1739,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/lua-record.cc:1742,1
    - Dst: lua_pickrandomsample
      Src: /src/pdns/pdns/lua-record.cc:1743,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/lua-record.cc:1746,1
    - Dst: lua_pickhashed
      Src: /src/pdns/pdns/lua-record.cc:1747,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/lua-record.cc:1749,1
    - Dst: lua_pickwrandom
      Src: /src/pdns/pdns/lua-record.cc:1750,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/lua-record.cc:1753,1
    - Dst: lua_pickwhashed
      Src: /src/pdns/pdns/lua-record.cc:1754,1
    - Dst: std::move
      Src: /src/pdns/pdns/lua-record.cc:1754,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/lua-record.cc:1757,1
    - Dst: lua_picknamehashed
      Src: /src/pdns/pdns/lua-record.cc:1758,1
    - Dst: std::move
      Src: /src/pdns/pdns/lua-record.cc:1758,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/lua-record.cc:1760,1
    - Dst: lua_pickchashed
      Src: /src/pdns/pdns/lua-record.cc:1761,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/lua-record.cc:1764,1
    - Dst: lua_pickclosest
      Src: /src/pdns/pdns/lua-record.cc:1765,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/lua-record.cc:1768,1
    - Dst: lua_geoiplookup
      Src: /src/pdns/pdns/lua-record.cc:1769,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/lua-record.cc:1772,1
    - Dst: lua_asnum
      Src: /src/pdns/pdns/lua-record.cc:1773,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/lua-record.cc:1775,1
    - Dst: lua_continent
      Src: /src/pdns/pdns/lua-record.cc:1776,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/lua-record.cc:1778,1
    - Dst: lua_continentCode
      Src: /src/pdns/pdns/lua-record.cc:1779,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/lua-record.cc:1781,1
    - Dst: lua_country
      Src: /src/pdns/pdns/lua-record.cc:1782,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/lua-record.cc:1784,1
    - Dst: lua_countryCode
      Src: /src/pdns/pdns/lua-record.cc:1785,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/lua-record.cc:1787,1
    - Dst: lua_region
      Src: /src/pdns/pdns/lua-record.cc:1788,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/lua-record.cc:1790,1
    - Dst: lua_regionCode
      Src: /src/pdns/pdns/lua-record.cc:1791,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/lua-record.cc:1793,1
    - Dst: lua_netmask
      Src: /src/pdns/pdns/lua-record.cc:1794,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/lua-record.cc:1796,1
    - Dst: lua_view
      Src: /src/pdns/pdns/lua-record.cc:1797,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/lua-record.cc:1800,1
    - Dst: lua_all
      Src: /src/pdns/pdns/lua-record.cc:1801,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/lua-record.cc:1804,1
    - Dst: lua_dblookup
      Src: /src/pdns/pdns/lua-record.cc:1805,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/lua-record.cc:1808,1
    - Dst: lua_include
      Src: /src/pdns/pdns/lua-record.cc:1809,1
    - Dst: writeVariable
      Src: /src/pdns/pdns/lua-record.cc:1812,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 107
    argCount: 2
    argNames:
    - slog
    - ' lua'
    argTypes:
    - Logr::log_t
    - LuaContext
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1813
      start: 1685
    functionDepth: 6
    functionLinenumber: 1685
    functionLinenumberEnd: 1813
    functionName: setupLuaRecords
    functionSourceFile: /src/pdns/pdns/lua-record.cc
    functionUses: 0
    functionsReached:
    - lua_report
    - lua_pickrandom
    - lua_ifurlextup
    - writeVariable
    - lua_createForward
    - lua_ifportup
    - lua_include
    - lua_latlon
    - lua_asnum
    - lua_region
    - lua_continentCode
    - lua_view
    - lua_createForward6
    - lua_picknamehashed
    - lua_continent
    - writeFunction
    - lua_dblookup
    - lua_ifurlup
    - lua_countryCode
    - lua_createReverse6
    - lua_pickchashed
    - lua_pickrandomsample
    - lua_createReverse
    - lua_pickwhashed
    - lua_pickselfweighted
    - lua_pickclosest
    - lua_geoiplookup
    - lua_closestMagic
    - std::move
    - lua_filterForward
    - lua_latlonMagic
    - lua_pickwrandom
    - lua_all
    - lua_regionCode
    - lua_netmask
    - lua_pickhashed
    - lua_country
    - lua_latlonloc
    linkageType: ''
    returnType: void
    signature: void setupLuaRecords(Logr::log_t slog, LuaContext& lua)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: make_unique<AuthLua4>
      Src: /src/pdns/pdns/lua-record.cc:1822,1
    - Dst: arg
      Src: /src/pdns/pdns/lua-record.cc:1822,1
    - Dst: setupLuaRecords
      Src: /src/pdns/pdns/lua-record.cc:1823,1
    - Dst: getLua
      Src: /src/pdns/pdns/lua-record.cc:1823,1
    - Dst: getLua
      Src: /src/pdns/pdns/lua-record.cc:1826,1
    - Dst: std::make_unique<lua_record_ctx_t>
      Src: /src/pdns/pdns/lua-record.cc:1828,1
    - Dst: getRealRemote
      Src: /src/pdns/pdns/lua-record.cc:1832,1
    - Dst: writeVariable
      Src: /src/pdns/pdns/lua-record.cc:1834,1
    - Dst: writeVariable
      Src: /src/pdns/pdns/lua-record.cc:1835,1
    - Dst: writeVariable
      Src: /src/pdns/pdns/lua-record.cc:1836,1
    - Dst: writeVariable
      Src: /src/pdns/pdns/lua-record.cc:1837,1
    - Dst: getInnerRemote
      Src: /src/pdns/pdns/lua-record.cc:1837,1
    - Dst: writeVariable
      Src: /src/pdns/pdns/lua-record.cc:1838,1
    - Dst: getLocal
      Src: /src/pdns/pdns/lua-record.cc:1838,1
    - Dst: writeVariable
      Src: /src/pdns/pdns/lua-record.cc:1839,1
    - Dst: static_cast<const dnsheader*>
      Src: /src/pdns/pdns/lua-record.cc:1839,1
    - Dst: writeVariable
      Src: /src/pdns/pdns/lua-record.cc:1840,1
    - Dst: writeVariable
      Src: /src/pdns/pdns/lua-record.cc:1841,1
    - Dst: writeVariable
      Src: /src/pdns/pdns/lua-record.cc:1842,1
    - Dst: hasEDNSSubnet
      Src: /src/pdns/pdns/lua-record.cc:1843,1
    - Dst: writeVariable
      Src: /src/pdns/pdns/lua-record.cc:1844,1
    - Dst: getRealRemote
      Src: /src/pdns/pdns/lua-record.cc:1844,1
    - Dst: getRealRemote
      Src: /src/pdns/pdns/lua-record.cc:1845,1
    - Dst: writeVariable
      Src: /src/pdns/pdns/lua-record.cc:1848,1
    - Dst: getInnerRemote
      Src: /src/pdns/pdns/lua-record.cc:1849,1
    - Dst: writeVariable
      Src: /src/pdns/pdns/lua-record.cc:1851,1
    - Dst: executeCode
      Src: /src/pdns/pdns/lua-record.cc:1854,1
    - Dst: sqlstr
      Src: /src/pdns/pdns/lua-record.cc:1854,1
    - Dst: boost::format
      Src: /src/pdns/pdns/lua-record.cc:1854,1
    - Dst: empty
      Src: /src/pdns/pdns/lua-record.cc:1858,1
    - Dst: substr
      Src: /src/pdns/pdns/lua-record.cc:1861,1
    - Dst: boost::get<string>
      Src: /src/pdns/pdns/lua-record.cc:1866,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/lua-record.cc:1867,1
    - Dst: boost::get<vector<pair<int,string>>>
      Src: /src/pdns/pdns/lua-record.cc:1869,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/lua-record.cc:1870,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/lua-record.cc:1874,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/lua-record.cc:1874,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/lua-record.cc:1876,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/lua-record.cc:1876,1
    - Dst: QType
      Src: /src/pdns/pdns/lua-record.cc:1880,1
    - Dst: what
      Src: /src/pdns/pdns/lua-record.cc:1880,1
    - Dst: std::rethrow_if_nested
      Src: /src/pdns/pdns/lua-record.cc:1883,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/lua-record.cc:1888,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/lua-record.cc:1888,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/lua-record.cc:1888,1
    - Dst: SLOG
      Src: /src/pdns/pdns/lua-record.cc:1891,1
    - Dst: what
      Src: /src/pdns/pdns/lua-record.cc:1891,1
    - Dst: Logr::log_t::error
      Src: /src/pdns/pdns/lua-record.cc:1892,1
    - Dst: what
      Src: /src/pdns/pdns/lua-record.cc:1892,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/lua-record.cc:1892,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/lua-record.cc:1892,1
    - Dst: SLOG
      Src: /src/pdns/pdns/lua-record.cc:1895,1
    - Dst: Logr::log_t::error
      Src: /src/pdns/pdns/lua-record.cc:1896,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/lua-record.cc:1896,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/lua-record.cc:1896,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 60
    argCount: 8
    argNames:
    - slog
    - ' code'
    - ' query'
    - ' zone_record'
    - ' zone'
    - ' dnsp'
    - qtype
    - ' LUA'
    argTypes:
    - Logr::log_t
    - std::string
    - DNSName
    - DNSZoneRecord
    - DNSName
    - DNSPacket
    - uint16_t
    - unique_ptr<AuthLua4>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1902
      start: 1815
    functionDepth: 7
    functionLinenumber: 1815
    functionLinenumberEnd: 1902
    functionName: luaSynth
    functionSourceFile: /src/pdns/pdns/lua-record.cc
    functionUses: 0
    functionsReached:
    - hasEDNSSubnet
    - std::make_unique<lua_record_ctx_t>
    - boost::get<vector<pair<int,string>>>
    - writeVariable
    - std::vector::push_back
    - SLOG
    - boost::get<string>
    - Logr::log_t::info
    - Logging::Loggable
    - QType
    - Logr::log_t::error
    - getLocal
    - substr
    - DNSRecordContent::make
    - getInnerRemote
    - empty
    - std::rethrow_if_nested
    - vector::push_back
    - static_cast<const dnsheader*>
    - getLua
    - arg
    - getRealRemote
    - make_unique<AuthLua4>
    - executeCode
    - what
    - setupLuaRecords
    - sqlstr
    - boost::format
    linkageType: ''
    returnType: std::vector<shared_ptr<DNSRecordContent>>
    signature: std::vector<shared_ptr<DNSRecordContent>> luaSynth(Logr::log_t slog,
      const std::string& code, const DNSName& query, const DNSZoneRecord& zone_record,
      const DNSName& zone, const DNSPacket& dnsp, uint16_t qtype, unique_ptr<AuthLua4>&
      LUA)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 64
    functionDepth: 0
    functionLinenumber: 64
    functionLinenumberEnd: 64
    functionName: ~Distributor()
    functionSourceFile: /src/pdns/pdns/distributor.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~Distributor()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 71
    functionDepth: 0
    functionLinenumber: 71
    functionLinenumberEnd: 71
    functionName: SingleThreadDistributor::SingleThreadDistributor
    functionSourceFile: /src/pdns/pdns/distributor.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void SingleThreadDistributor(const SingleThreadDistributor&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 72
    functionDepth: 0
    functionLinenumber: 72
    functionLinenumberEnd: 72
    functionName: operator=(const SingleThreadDistributor&)
    functionSourceFile: /src/pdns/pdns/distributor.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void operator=(const SingleThreadDistributor&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 76
    functionDepth: 0
    functionLinenumber: 76
    functionLinenumberEnd: 78
    functionName: SingleThreadDistributor::getQueueSize
    functionSourceFile: /src/pdns/pdns/distributor.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int getQueueSize() override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 80
    functionDepth: 0
    functionLinenumber: 80
    functionLinenumberEnd: 83
    functionName: SingleThreadDistributor::isOverloaded
    functionSourceFile: /src/pdns/pdns/distributor.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool isOverloaded() override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 94
    functionDepth: 0
    functionLinenumber: 94
    functionLinenumberEnd: 94
    functionName: MultiThreadDistributor::MultiThreadDistributor
    functionSourceFile: /src/pdns/pdns/distributor.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void MultiThreadDistributor(const MultiThreadDistributor&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 95
    functionDepth: 0
    functionLinenumber: 95
    functionLinenumberEnd: 95
    functionName: operator=(const MultiThreadDistributor&)
    functionSourceFile: /src/pdns/pdns/distributor.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void operator=(const MultiThreadDistributor&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 100
    functionDepth: 0
    functionLinenumber: 100
    functionLinenumberEnd: 102
    functionName: MultiThreadDistributor::getQueueSize
    functionSourceFile: /src/pdns/pdns/distributor.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int getQueueSize() override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: d_dt::udiff
      Src: /src/pdns/pdns/distributor.hh:108,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' query'
    argTypes:
    - Question
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 106
    functionDepth: 1
    functionLinenumber: 106
    functionLinenumberEnd: 109
    functionName: MultiThreadDistributor::QuestionData
    functionSourceFile: /src/pdns/pdns/distributor.hh
    functionUses: 0
    functionsReached:
    - d_dt::udiff
    linkageType: ''
    returnType: void
    signature: void QuestionData(const Question& query)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 117
    functionDepth: 0
    functionLinenumber: 117
    functionLinenumberEnd: 120
    functionName: MultiThreadDistributor::isOverloaded
    functionSourceFile: /src/pdns/pdns/distributor.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool isOverloaded() override
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SingleThreadDistributor<Answer,Question,Backend>::SingleThreadDistributor<Answer,Question,Backend>
      Src: /src/pdns/pdns/distributor.hh:137,1
    - Dst: MultiThreadDistributor<Answer,Question,Backend>::MultiThreadDistributor<Answer,Question,Backend>
      Src: /src/pdns/pdns/distributor.hh:139,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - n
    - slog
    argTypes:
    - int
    - Logr::log_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 134
    functionDepth: 0
    functionLinenumber: 134
    functionLinenumberEnd: 140
    functionName: Distributor<Answer,Question,Backend>::Create
    functionSourceFile: /src/pdns/pdns/distributor.hh
    functionUses: 1
    functionsReached:
    - SingleThreadDistributor<Answer,Question,Backend>::SingleThreadDistributor<Answer,Question,Backend>
    - MultiThreadDistributor<Answer,Question,Backend>::MultiThreadDistributor<Answer,Question,Backend>
    linkageType: ''
    returnType: Distributor<Answer,Question,Backend>
    signature: Distributor<Answer,Question,Backend> * Distributor<Answer,Question,Backend>::Create(int
      n, Logr::log_t slog)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SLOG
      Src: /src/pdns/pdns/distributor.hh:145,1
    - Dst: info
      Src: /src/pdns/pdns/distributor.hh:146,1
    - Dst: make_unique<Backend>
      Src: /src/pdns/pdns/distributor.hh:148,1
    - Dst: SLOG
      Src: /src/pdns/pdns/distributor.hh:151,1
    - Dst: error
      Src: /src/pdns/pdns/distributor.hh:152,1
    - Dst: _exit
      Src: /src/pdns/pdns/distributor.hh:153,1
    - Dst: SLOG
      Src: /src/pdns/pdns/distributor.hh:156,1
    - Dst: what
      Src: /src/pdns/pdns/distributor.hh:156,1
    - Dst: error
      Src: /src/pdns/pdns/distributor.hh:157,1
    - Dst: what
      Src: /src/pdns/pdns/distributor.hh:157,1
    - Dst: _exit
      Src: /src/pdns/pdns/distributor.hh:158,1
    - Dst: SLOG
      Src: /src/pdns/pdns/distributor.hh:161,1
    - Dst: info
      Src: /src/pdns/pdns/distributor.hh:162,1
    - Dst: _exit
      Src: /src/pdns/pdns/distributor.hh:163,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 1
    argNames:
    - slog
    argTypes:
    - Logr::log_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 165
      start: 142
    functionDepth: 0
    functionLinenumber: 142
    functionLinenumberEnd: 165
    functionName: SingleThreadDistributor<Answer,Question,Backend>::SingleThreadDistributor
    functionSourceFile: /src/pdns/pdns/distributor.hh
    functionUses: 0
    functionsReached:
    - SLOG
    - _exit
    - make_unique<Backend>
    - what
    - info
    - error
    linkageType: ''
    returnType: void
    signature: void SingleThreadDistributor<Answer,Question,Backend>::SingleThreadDistributor(Logr::log_t
      slog)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: time
      Src: /src/pdns/pdns/distributor.hh:168,1
    - Dst: arg
      Src: /src/pdns/pdns/distributor.hh:168,1
    - Dst: arg
      Src: /src/pdns/pdns/distributor.hh:168,1
    - Dst: SLOG
      Src: /src/pdns/pdns/distributor.hh:172,1
    - Dst: info
      Src: /src/pdns/pdns/distributor.hh:173,1
    - Dst: _exit
      Src: /src/pdns/pdns/distributor.hh:174,1
    - Dst: pdns::channel::createObjectQueue<QuestionData>
      Src: /src/pdns/pdns/distributor.hh:178,1
    - Dst: push_back
      Src: /src/pdns/pdns/distributor.hh:179,1
    - Dst: std::move
      Src: /src/pdns/pdns/distributor.hh:179,1
    - Dst: push_back
      Src: /src/pdns/pdns/distributor.hh:180,1
    - Dst: std::move
      Src: /src/pdns/pdns/distributor.hh:180,1
    - Dst: SLOG
      Src: /src/pdns/pdns/distributor.hh:183,1
    - Dst: info
      Src: /src/pdns/pdns/distributor.hh:184,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/distributor.hh:184,1
    - Dst: MultiThreadDistributor<Answer,Question,Backend>::distribute
      Src: /src/pdns/pdns/distributor.hh:187,1
    - Dst: std::thread::detach
      Src: /src/pdns/pdns/distributor.hh:188,1
    - Dst: Utility::usleep
      Src: /src/pdns/pdns/distributor.hh:189,1
    - Dst: SLOG
      Src: /src/pdns/pdns/distributor.hh:191,1
    - Dst: info
      Src: /src/pdns/pdns/distributor.hh:192,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 2
    argNames:
    - numberOfThreads
    - slog
    argTypes:
    - int
    - Logr::log_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 193
      start: 167
    functionDepth: 1
    functionLinenumber: 167
    functionLinenumberEnd: 193
    functionName: MultiThreadDistributor<Answer,Question,Backend>::MultiThreadDistributor
    functionSourceFile: /src/pdns/pdns/distributor.hh
    functionUses: 0
    functionsReached:
    - pdns::channel::createObjectQueue<QuestionData>
    - std::move
    - SLOG
    - _exit
    - Logging::Loggable
    - push_back
    - time
    - info
    - Utility::usleep
    - std::thread::detach
    - MultiThreadDistributor<Answer,Question,Backend>::distribute
    - arg
    linkageType: ''
    returnType: void
    signature: void MultiThreadDistributor<Answer,Question,Backend>::MultiThreadDistributor(int
      numberOfThreads, Logr::log_t slog)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: setThreadName
      Src: /src/pdns/pdns/distributor.hh:200,1
    - Dst: make_unique<Backend>
      Src: /src/pdns/pdns/distributor.hh:203,1
    - Dst: arg
      Src: /src/pdns/pdns/distributor.hh:204,1
    - Dst: at
      Src: /src/pdns/pdns/distributor.hh:205,1
    - Dst: receive
      Src: /src/pdns/pdns/distributor.hh:208,1
    - Dst: unixDie
      Src: /src/pdns/pdns/distributor.hh:210,1
    - Dst: std::move
      Src: /src/pdns/pdns/distributor.hh:213,1
    - Dst: auto::Q::d_dt::udiff
      Src: /src/pdns/pdns/distributor.hh:215,1
    - Dst: inc
      Src: /src/pdns/pdns/distributor.hh:216,1
    - Dst: make_unique<Backend>
      Src: /src/pdns/pdns/distributor.hh:226,1
    - Dst: auto::question
      Src: /src/pdns/pdns/distributor.hh:228,1
    - Dst: auto::reset
      Src: /src/pdns/pdns/distributor.hh:231,1
    - Dst: SLOG
      Src: /src/pdns/pdns/distributor.hh:233,1
    - Dst: error
      Src: /src/pdns/pdns/distributor.hh:234,1
    - Dst: auto::Q::replyPacket
      Src: /src/pdns/pdns/distributor.hh:235,1
    - Dst: std::unique_ptr::setRcode
      Src: /src/pdns/pdns/distributor.hh:237,1
    - Dst: inc
      Src: /src/pdns/pdns/distributor.hh:238,1
    - Dst: ringAccount
      Src: /src/pdns/pdns/distributor.hh:239,1
    - Dst: SLOG
      Src: /src/pdns/pdns/distributor.hh:241,1
    - Dst: error
      Src: /src/pdns/pdns/distributor.hh:242,1
    - Dst: auto::reset
      Src: /src/pdns/pdns/distributor.hh:247,1
    - Dst: SLOG
      Src: /src/pdns/pdns/distributor.hh:249,1
    - Dst: dnsdist_ffi_dnsquestion_get_id
      Src: /src/pdns/pdns/distributor.hh:249,1
    - Dst: info
      Src: /src/pdns/pdns/distributor.hh:250,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/distributor.hh:250,1
    - Dst: dnsdist_ffi_dnsquestion_get_id
      Src: /src/pdns/pdns/distributor.hh:250,1
    - Dst: auto::Q::replyPacket
      Src: /src/pdns/pdns/distributor.hh:251,1
    - Dst: std::unique_ptr::setRcode
      Src: /src/pdns/pdns/distributor.hh:253,1
    - Dst: inc
      Src: /src/pdns/pdns/distributor.hh:254,1
    - Dst: ringAccount
      Src: /src/pdns/pdns/distributor.hh:255,1
    - Dst: SLOG
      Src: /src/pdns/pdns/distributor.hh:257,1
    - Dst: dnsdist_ffi_dnsquestion_get_id
      Src: /src/pdns/pdns/distributor.hh:257,1
    - Dst: info
      Src: /src/pdns/pdns/distributor.hh:258,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/distributor.hh:258,1
    - Dst: dnsdist_ffi_dnsquestion_get_id
      Src: /src/pdns/pdns/distributor.hh:258,1
    - Dst: auto::callback
      Src: /src/pdns/pdns/distributor.hh:263,1
    - Dst: auto::Q::cleanupGSS
      Src: /src/pdns/pdns/distributor.hh:266,1
    - Dst: auto::reset
      Src: /src/pdns/pdns/distributor.hh:269,1
    - Dst: auto::reset
      Src: /src/pdns/pdns/distributor.hh:272,1
    - Dst: SLOG
      Src: /src/pdns/pdns/distributor.hh:275,1
    - Dst: error
      Src: /src/pdns/pdns/distributor.hh:276,1
    - Dst: _exit
      Src: /src/pdns/pdns/distributor.hh:277,1
    - Dst: SLOG
      Src: /src/pdns/pdns/distributor.hh:280,1
    - Dst: what
      Src: /src/pdns/pdns/distributor.hh:280,1
    - Dst: error
      Src: /src/pdns/pdns/distributor.hh:281,1
    - Dst: what
      Src: /src/pdns/pdns/distributor.hh:281,1
    - Dst: _exit
      Src: /src/pdns/pdns/distributor.hh:282,1
    - Dst: SLOG
      Src: /src/pdns/pdns/distributor.hh:285,1
    - Dst: info
      Src: /src/pdns/pdns/distributor.hh:286,1
    - Dst: _exit
      Src: /src/pdns/pdns/distributor.hh:287,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 64
    argCount: 1
    argNames:
    - ournum
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 289
      start: 197
    functionDepth: 1
    functionLinenumber: 197
    functionLinenumberEnd: 289
    functionName: MultiThreadDistributor<Answer,Question,Backend>::distribute
    functionSourceFile: /src/pdns/pdns/distributor.hh
    functionUses: 1
    functionsReached:
    - ringAccount
    - receive
    - error
    - SLOG
    - make_unique<Backend>
    - unixDie
    - Logging::Loggable
    - setThreadName
    - at
    - _exit
    - auto::Q::cleanupGSS
    - std::unique_ptr::setRcode
    - auto::Q::d_dt::udiff
    - arg
    - std::move
    - what
    - inc
    - auto::question
    - auto::callback
    - info
    - auto::reset
    - dnsdist_ffi_dnsquestion_get_id
    - auto::Q::replyPacket
    linkageType: ''
    returnType: void
    signature: void MultiThreadDistributor<Answer,Question,Backend>::distribute(int
      ournum)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: d_dt::udiff
      Src: /src/pdns/pdns/distributor.hh:293,1
    - Dst: make_unique<Backend>
      Src: /src/pdns/pdns/distributor.hh:300,1
    - Dst: SingleThreadDistributor<Answer,Question,Backend>::question
      Src: /src/pdns/pdns/distributor.hh:302,1
    - Dst: reset
      Src: /src/pdns/pdns/distributor.hh:305,1
    - Dst: SLOG
      Src: /src/pdns/pdns/distributor.hh:307,1
    - Dst: error
      Src: /src/pdns/pdns/distributor.hh:308,1
    - Dst: replyPacket
      Src: /src/pdns/pdns/distributor.hh:309,1
    - Dst: std::unique_ptr::setRcode
      Src: /src/pdns/pdns/distributor.hh:311,1
    - Dst: inc
      Src: /src/pdns/pdns/distributor.hh:312,1
    - Dst: ringAccount
      Src: /src/pdns/pdns/distributor.hh:313,1
    - Dst: SLOG
      Src: /src/pdns/pdns/distributor.hh:315,1
    - Dst: error
      Src: /src/pdns/pdns/distributor.hh:316,1
    - Dst: reset
      Src: /src/pdns/pdns/distributor.hh:321,1
    - Dst: SLOG
      Src: /src/pdns/pdns/distributor.hh:323,1
    - Dst: dnsdist_ffi_dnsquestion_get_id
      Src: /src/pdns/pdns/distributor.hh:323,1
    - Dst: info
      Src: /src/pdns/pdns/distributor.hh:324,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/distributor.hh:324,1
    - Dst: dnsdist_ffi_dnsquestion_get_id
      Src: /src/pdns/pdns/distributor.hh:324,1
    - Dst: replyPacket
      Src: /src/pdns/pdns/distributor.hh:325,1
    - Dst: std::unique_ptr::setRcode
      Src: /src/pdns/pdns/distributor.hh:327,1
    - Dst: inc
      Src: /src/pdns/pdns/distributor.hh:328,1
    - Dst: ringAccount
      Src: /src/pdns/pdns/distributor.hh:329,1
    - Dst: SLOG
      Src: /src/pdns/pdns/distributor.hh:331,1
    - Dst: dnsdist_ffi_dnsquestion_get_id
      Src: /src/pdns/pdns/distributor.hh:331,1
    - Dst: info
      Src: /src/pdns/pdns/distributor.hh:332,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/distributor.hh:332,1
    - Dst: dnsdist_ffi_dnsquestion_get_id
      Src: /src/pdns/pdns/distributor.hh:332,1
    - Dst: callback
      Src: /src/pdns/pdns/distributor.hh:336,1
    - Dst: cleanupGSS
      Src: /src/pdns/pdns/distributor.hh:339,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 41
    argCount: 2
    argNames:
    - ' q'
    - callback
    argTypes:
    - Question
    - callback_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 343
      start: 291
    functionDepth: 1
    functionLinenumber: 291
    functionLinenumberEnd: 343
    functionName: SingleThreadDistributor<Answer,Question,Backend>::question
    functionSourceFile: /src/pdns/pdns/distributor.hh
    functionUses: 1
    functionsReached:
    - error
    - callback
    - reset
    - SLOG
    - replyPacket
    - make_unique<Backend>
    - Logging::Loggable
    - inc
    - ringAccount
    - info
    - dnsdist_ffi_dnsquestion_get_id
    - std::unique_ptr::setRcode
    - SingleThreadDistributor<Answer,Question,Backend>::question
    - cleanupGSS
    - d_dt::udiff
    linkageType: ''
    returnType: int
    signature: int SingleThreadDistributor<Answer,Question,Backend>::question(Question&
      q, callback_t callback)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: std::make_unique<QuestionData>
      Src: /src/pdns/pdns/distributor.hh:350,1
    - Dst: at
      Src: /src/pdns/pdns/distributor.hh:355,1
    - Dst: size
      Src: /src/pdns/pdns/distributor.hh:355,1
    - Dst: std::move
      Src: /src/pdns/pdns/distributor.hh:355,1
    - Dst: auto::reset
      Src: /src/pdns/pdns/distributor.hh:357,1
    - Dst: unixDie
      Src: /src/pdns/pdns/distributor.hh:358,1
    - Dst: SLOG
      Src: /src/pdns/pdns/distributor.hh:362,1
    - Dst: info
      Src: /src/pdns/pdns/distributor.hh:363,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/distributor.hh:363,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/distributor.hh:363,1
    - Dst: DistributorFatal
      Src: /src/pdns/pdns/distributor.hh:365,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 2
    argNames:
    - ' q'
    - callback
    argTypes:
    - Question
    - callback_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 369
      start: 347
    functionDepth: 0
    functionLinenumber: 347
    functionLinenumberEnd: 369
    functionName: MultiThreadDistributor<Answer,Question,Backend>::question
    functionSourceFile: /src/pdns/pdns/distributor.hh
    functionUses: 0
    functionsReached:
    - std::move
    - SLOG
    - std::make_unique<QuestionData>
    - unixDie
    - Logging::Loggable
    - info
    - auto::reset
    - size
    - at
    - DistributorFatal
    linkageType: ''
    returnType: int
    signature: int MultiThreadDistributor<Answer,Question,Backend>::question(Question&
      q, callback_t callback)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: dns_random_uint16
      Src: /src/pdns/pdns/dnsproxy.cc:48,1
    - Dst: getPointer
      Src: /src/pdns/pdns/dnsproxy.cc:51,1
    - Dst: getPointer
      Src: /src/pdns/pdns/dnsproxy.cc:52,1
    - Dst: getPointer
      Src: /src/pdns/pdns/dnsproxy.cc:53,1
    - Dst: stringtok
      Src: /src/pdns/pdns/dnsproxy.cc:56,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsproxy.cc:57,1
    - Dst: stringtok
      Src: /src/pdns/pdns/dnsproxy.cc:60,1
    - Dst: vector::size
      Src: /src/pdns/pdns/dnsproxy.cc:61,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/dnsproxy.cc:62,1
    - Dst: std::stoul
      Src: /src/pdns/pdns/dnsproxy.cc:64,1
    - Dst: vector::at
      Src: /src/pdns/pdns/dnsproxy.cc:64,1
    - Dst: std::stoul
      Src: /src/pdns/pdns/dnsproxy.cc:65,1
    - Dst: vector::at
      Src: /src/pdns/pdns/dnsproxy.cc:65,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/dnsproxy.cc:67,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/dnsproxy.cc:70,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsproxy.cc:70,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsproxy.cc:70,1
    - Dst: socket
      Src: /src/pdns/pdns/dnsproxy.cc:73,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/dnsproxy.cc:74,1
    - Dst: string
      Src: /src/pdns/pdns/dnsproxy.cc:74,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsproxy.cc:74,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsproxy.cc:79,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsproxy.cc:82,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsproxy.cc:87,1
    - Dst: dns_random
      Src: /src/pdns/pdns/dnsproxy.cc:87,1
    - Dst: Socket::bind
      Src: /src/pdns/pdns/dnsproxy.cc:89,1
    - Dst: ComboAddress::getSocklen
      Src: /src/pdns/pdns/dnsproxy.cc:89,1
    - Dst: closesocket
      Src: /src/pdns/pdns/dnsproxy.cc:94,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/dnsproxy.cc:96,1
    - Dst: string
      Src: /src/pdns/pdns/dnsproxy.cc:96,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsproxy.cc:96,1
    - Dst: connect
      Src: /src/pdns/pdns/dnsproxy.cc:99,1
    - Dst: getSocklen
      Src: /src/pdns/pdns/dnsproxy.cc:99,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/dnsproxy.cc:100,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/dnsproxy.cc:100,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsproxy.cc:100,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsproxy.cc:103,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsproxy.cc:103,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/dnsproxy.cc:103,1
    - Dst: info
      Src: /src/pdns/pdns/dnsproxy.cc:104,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsproxy.cc:104,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsproxy.cc:104,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsproxy.cc:104,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/dnsproxy.cc:104,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 40
    argCount: 3
    argNames:
    - slog
    - ' remote'
    - ' udpPortRange'
    argTypes:
    - Logr::log_t
    - string
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 47
    functionDepth: 0
    functionLinenumber: 47
    functionLinenumberEnd: 105
    functionName: DNSProxy::DNSProxy
    functionSourceFile: /src/pdns/pdns/dnsproxy.cc
    functionUses: 0
    functionsReached:
    - std::to_string
    - ntohs
    - PDNSException
    - stringerror
    - dns_random_uint16
    - ComboAddress::getSocklen
    - SLOG
    - stringtok
    - vector::at
    - Logging::Loggable
    - string
    - connect
    - htons
    - getSocklen
    - toStringWithPort
    - Socket::bind
    - ComboAddress
    - socket
    - getPointer
    - dns_random
    - closesocket
    - info
    - std::stoul
    - vector::size
    linkageType: ''
    returnType: void
    signature: void DNSProxy::DNSProxy(Logr::log_t slog, const string& remote, const
      string& udpPortRange)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSProxy::mainloop
      Src: /src/pdns/pdns/dnsproxy.cc:109,1
    - Dst: std::thread::detach
      Src: /src/pdns/pdns/dnsproxy.cc:110,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 111
      start: 107
    functionDepth: 1
    functionLinenumber: 107
    functionLinenumberEnd: 111
    functionName: DNSProxy::go
    functionSourceFile: /src/pdns/pdns/dnsproxy.cc
    functionUses: 0
    functionsReached:
    - DNSProxy::mainloop
    - std::thread::detach
    linkageType: ''
    returnType: void
    signature: void DNSProxy::go()
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: hasEDNSSubnet
      Src: /src/pdns/pdns/dnsproxy.cc:118,1
    - Dst: DLOG
      Src: /src/pdns/pdns/dnsproxy.cc:119,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsproxy.cc:119,1
    - Dst: d_eso::getSource
      Src: /src/pdns/pdns/dnsproxy.cc:119,1
    - Dst: Netmask
      Src: /src/pdns/pdns/dnsproxy.cc:119,1
    - Dst: d_eso::getSource
      Src: /src/pdns/pdns/dnsproxy.cc:119,1
    - Dst: d_eso::getScopePrefixLength
      Src: /src/pdns/pdns/dnsproxy.cc:119,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsproxy.cc:119,1
    - Dst: d_eso::getFamily
      Src: /src/pdns/pdns/dnsproxy.cc:119,1
    - Dst: info
      Src: /src/pdns/pdns/dnsproxy.cc:120,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsproxy.cc:120,1
    - Dst: d_eso::getSource
      Src: /src/pdns/pdns/dnsproxy.cc:120,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsproxy.cc:120,1
    - Dst: Netmask
      Src: /src/pdns/pdns/dnsproxy.cc:120,1
    - Dst: d_eso::getSource
      Src: /src/pdns/pdns/dnsproxy.cc:120,1
    - Dst: d_eso::getScopePrefixLength
      Src: /src/pdns/pdns/dnsproxy.cc:120,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsproxy.cc:120,1
    - Dst: d_eso::getFamily
      Src: /src/pdns/pdns/dnsproxy.cc:120,1
    - Dst: d_eso::makeOptString
      Src: /src/pdns/pdns/dnsproxy.cc:121,1
    - Dst: DLOG
      Src: /src/pdns/pdns/dnsproxy.cc:122,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsproxy.cc:122,1
    - Dst: makeHexDump
      Src: /src/pdns/pdns/dnsproxy.cc:122,1
    - Dst: info
      Src: /src/pdns/pdns/dnsproxy.cc:123,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsproxy.cc:123,1
    - Dst: makeHexDump
      Src: /src/pdns/pdns/dnsproxy.cc:123,1
    - Dst: stubDoResolve
      Src: /src/pdns/pdns/dnsproxy.cc:132,1
    - Dst: hasEDNSSubnet
      Src: /src/pdns/pdns/dnsproxy.cc:132,1
    - Dst: stubDoResolve
      Src: /src/pdns/pdns/dnsproxy.cc:135,1
    - Dst: hasEDNSSubnet
      Src: /src/pdns/pdns/dnsproxy.cc:135,1
    - Dst: info
      Src: /src/pdns/pdns/dnsproxy.cc:140,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsproxy.cc:140,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsproxy.cc:140,1
    - Dst: RCode::to_s
      Src: /src/pdns/pdns/dnsproxy.cc:140,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsproxy.cc:140,1
    - Dst: RCode::to_s
      Src: /src/pdns/pdns/dnsproxy.cc:140,1
    - Dst: RCode::to_s
      Src: /src/pdns/pdns/dnsproxy.cc:145,1
    - Dst: RCode::to_s
      Src: /src/pdns/pdns/dnsproxy.cc:148,1
    - Dst: clearRecords
      Src: /src/pdns/pdns/dnsproxy.cc:152,1
    - Dst: setRcode
      Src: /src/pdns/pdns/dnsproxy.cc:153,1
    - Dst: addRecord
      Src: /src/pdns/pdns/dnsproxy.cc:158,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsproxy.cc:158,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsproxy.cc:162,1
    - Dst: getString
      Src: /src/pdns/pdns/dnsproxy.cc:162,1
    - Dst: string::append
      Src: /src/pdns/pdns/dnsproxy.cc:164,1
    - Dst: getString
      Src: /src/pdns/pdns/dnsproxy.cc:164,1
    - Dst: writen2WithTimeout
      Src: /src/pdns/pdns/dnsproxy.cc:165,1
    - Dst: getSocket
      Src: /src/pdns/pdns/dnsproxy.cc:165,1
    - Dst: string::c_str
      Src: /src/pdns/pdns/dnsproxy.cc:165,1
    - Dst: string::length
      Src: /src/pdns/pdns/dnsproxy.cc:165,1
    - Dst: arg
      Src: /src/pdns/pdns/dnsproxy.cc:165,1
    - Dst: qtype::getCode
      Src: /src/pdns/pdns/dnsproxy.cc:171,1
    - Dst: lock
      Src: /src/pdns/pdns/dnsproxy.cc:173,1
    - Dst: DNSProxy::getID_locked
      Src: /src/pdns/pdns/dnsproxy.cc:174,1
    - Dst: getSocket
      Src: /src/pdns/pdns/dnsproxy.cc:179,1
    - Dst: time
      Src: /src/pdns/pdns/dnsproxy.cc:180,1
    - Dst: qtype::getCode
      Src: /src/pdns/pdns/dnsproxy.cc:181,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsproxy.cc:184,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsproxy.cc:187,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsproxy.cc:192,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsproxy.cc:193,1
    - Dst: string::empty
      Src: /src/pdns/pdns/dnsproxy.cc:195,1
    - Dst: DLOG
      Src: /src/pdns/pdns/dnsproxy.cc:196,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsproxy.cc:196,1
    - Dst: makeHexDump
      Src: /src/pdns/pdns/dnsproxy.cc:196,1
    - Dst: info
      Src: /src/pdns/pdns/dnsproxy.cc:197,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsproxy.cc:197,1
    - Dst: makeHexDump
      Src: /src/pdns/pdns/dnsproxy.cc:197,1
    - Dst: DNSPacketWriter::optvect_t::emplace_back
      Src: /src/pdns/pdns/dnsproxy.cc:199,1
    - Dst: DNSPacketWriter::addOpt
      Src: /src/pdns/pdns/dnsproxy.cc:200,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsproxy.cc:201,1
    - Dst: send
      Src: /src/pdns/pdns/dnsproxy.cc:204,1
    - Dst: vector::data
      Src: /src/pdns/pdns/dnsproxy.cc:204,1
    - Dst: vector::size
      Src: /src/pdns/pdns/dnsproxy.cc:204,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsproxy.cc:205,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsproxy.cc:205,1
    - Dst: error
      Src: /src/pdns/pdns/dnsproxy.cc:206,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 62
    argCount: 4
    argNames:
    - ' reply'
    - ' target'
    - ' aname'
    - scopeMask
    argTypes:
    - std::unique_ptr<DNSPacket>
    - DNSName
    - DNSName
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 210
      start: 114
    functionDepth: 4
    functionLinenumber: 114
    functionLinenumberEnd: 210
    functionName: DNSProxy::completePacket
    functionSourceFile: /src/pdns/pdns/dnsproxy.cc
    functionUses: 0
    functionsReached:
    - hasEDNSSubnet
    - std::to_string
    - stringerror
    - clearRecords
    - RCode::to_s
    - error
    - makeHexDump
    - d_eso::getSource
    - DNSPacketWriter::optvect_t::emplace_back
    - d_eso::getScopePrefixLength
    - SLOG
    - Logging::Loggable
    - string::empty
    - time
    - DNSPacketWriter::getHeader
    - lock
    - getSocket
    - addRecord
    - send
    - vector::data
    - setRcode
    - d_eso::makeOptString
    - htons
    - Netmask
    - string::c_str
    - DNSPacketWriter::commit
    - stubDoResolve
    - d_eso::getFamily
    - qtype::getCode
    - string::length
    - arg
    - std::move
    - string::append
    - info
    - DNSProxy::getID_locked
    - DNSPacketWriter::addOpt
    - DLOG
    - getString
    - writen2WithTimeout
    - vector::size
    linkageType: ''
    returnType: bool
    signature: bool DNSProxy::completePacket(std::unique_ptr<DNSPacket>& reply, const
      DNSName& target, const DNSName& aname, const uint8_t scopeMask)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: find
      Src: /src/pdns/pdns/dnsproxy.cc:217,1
    - Dst: end
      Src: /src/pdns/pdns/dnsproxy.cc:218,1
    - Dst: time
      Src: /src/pdns/pdns/dnsproxy.cc:221,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsproxy.cc:223,1
    - Dst: map_t::iterator::second::remote::toStringWithPort
      Src: /src/pdns/pdns/dnsproxy.cc:223,1
    - Dst: info
      Src: /src/pdns/pdns/dnsproxy.cc:224,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsproxy.cc:224,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsproxy.cc:224,1
    - Dst: map_t::iterator::second::complete::reset
      Src: /src/pdns/pdns/dnsproxy.cc:225,1
    - Dst: inc
      Src: /src/pdns/pdns/dnsproxy.cc:226,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 1
    argNames:
    - ' conntrack'
    argTypes:
    - map_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 231
      start: 213
    functionDepth: 1
    functionLinenumber: 213
    functionLinenumberEnd: 231
    functionName: DNSProxy::getID_locked
    functionSourceFile: /src/pdns/pdns/dnsproxy.cc
    functionUses: 1
    functionsReached:
    - SLOG
    - Logging::Loggable
    - time
    - inc
    - end
    - info
    - map_t::iterator::second::remote::toStringWithPort
    - map_t::iterator::second::complete::reset
    - find
    linkageType: ''
    returnType: int
    signature: int DNSProxy::getID_locked(map_t& conntrack)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: setThreadName
      Src: /src/pdns/pdns/dnsproxy.cc:235,1
    - Dst: recvfrom
      Src: /src/pdns/pdns/dnsproxy.cc:247,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsproxy.cc:250,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsproxy.cc:250,1
    - Dst: error
      Src: /src/pdns/pdns/dnsproxy.cc:251,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsproxy.cc:254,1
    - Dst: info
      Src: /src/pdns/pdns/dnsproxy.cc:255,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsproxy.cc:258,1
    - Dst: info
      Src: /src/pdns/pdns/dnsproxy.cc:259,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsproxy.cc:259,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsproxy.cc:265,1
    - Dst: ComboAddress::toStringWithPort
      Src: /src/pdns/pdns/dnsproxy.cc:265,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/dnsproxy.cc:265,1
    - Dst: info
      Src: /src/pdns/pdns/dnsproxy.cc:266,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsproxy.cc:266,1
    - Dst: ComboAddress::toStringWithPort
      Src: /src/pdns/pdns/dnsproxy.cc:266,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsproxy.cc:266,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/dnsproxy.cc:266,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsproxy.cc:272,1
    - Dst: lock
      Src: /src/pdns/pdns/dnsproxy.cc:274,1
    - Dst: auto::find
      Src: /src/pdns/pdns/dnsproxy.cc:276,1
    - Dst: auto::end
      Src: /src/pdns/pdns/dnsproxy.cc:277,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsproxy.cc:278,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsproxy.cc:278,1
    - Dst: info
      Src: /src/pdns/pdns/dnsproxy.cc:279,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsproxy.cc:279,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsproxy.cc:279,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsproxy.cc:279,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsproxy.cc:283,1
    - Dst: info
      Src: /src/pdns/pdns/dnsproxy.cc:284,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsproxy.cc:284,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsproxy.cc:289,1
    - Dst: DNSPacket::parse
      Src: /src/pdns/pdns/dnsproxy.cc:292,1
    - Dst: DNSPacket::qtype::getCode
      Src: /src/pdns/pdns/dnsproxy.cc:294,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsproxy.cc:295,1
    - Dst: DNSPacket::qtype::getCode
      Src: /src/pdns/pdns/dnsproxy.cc:295,1
    - Dst: info
      Src: /src/pdns/pdns/dnsproxy.cc:296,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsproxy.cc:296,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsproxy.cc:296,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsproxy.cc:296,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsproxy.cc:296,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsproxy.cc:296,1
    - Dst: memset
      Src: /src/pdns/pdns/dnsproxy.cc:301,1
    - Dst: DNSPacket::getString
      Src: /src/pdns/pdns/dnsproxy.cc:303,1
    - Dst: auto::second::complete::d_eso::setScopePrefixLength
      Src: /src/pdns/pdns/dnsproxy.cc:306,1
    - Dst: DNSPacket::d_eso::getScopePrefixLength
      Src: /src/pdns/pdns/dnsproxy.cc:306,1
    - Dst: DLOG
      Src: /src/pdns/pdns/dnsproxy.cc:307,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsproxy.cc:307,1
    - Dst: auto::second::complete::d_eso::getSource
      Src: /src/pdns/pdns/dnsproxy.cc:307,1
    - Dst: auto::second::complete::d_eso::getScope
      Src: /src/pdns/pdns/dnsproxy.cc:307,1
    - Dst: info
      Src: /src/pdns/pdns/dnsproxy.cc:308,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsproxy.cc:308,1
    - Dst: auto::second::complete::d_eso::getSource
      Src: /src/pdns/pdns/dnsproxy.cc:308,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsproxy.cc:308,1
    - Dst: auto::second::complete::d_eso::getScope
      Src: /src/pdns/pdns/dnsproxy.cc:308,1
    - Dst: DNSZoneRecord::dr::setContent
      Src: /src/pdns/pdns/dnsproxy.cc:320,1
    - Dst: getContent
      Src: /src/pdns/pdns/dnsproxy.cc:320,1
    - Dst: auto::second::complete::addRecord
      Src: /src/pdns/pdns/dnsproxy.cc:321,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsproxy.cc:321,1
    - Dst: auto::second::complete::setRcode
      Src: /src/pdns/pdns/dnsproxy.cc:326,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsproxy.cc:329,1
    - Dst: QType
      Src: /src/pdns/pdns/dnsproxy.cc:329,1
    - Dst: RCode::to_s
      Src: /src/pdns/pdns/dnsproxy.cc:329,1
    - Dst: info
      Src: /src/pdns/pdns/dnsproxy.cc:330,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsproxy.cc:330,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsproxy.cc:330,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsproxy.cc:330,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsproxy.cc:330,1
    - Dst: RCode::to_s
      Src: /src/pdns/pdns/dnsproxy.cc:330,1
    - Dst: auto::second::complete::clearRecords
      Src: /src/pdns/pdns/dnsproxy.cc:331,1
    - Dst: auto::second::complete::setRcode
      Src: /src/pdns/pdns/dnsproxy.cc:332,1
    - Dst: auto::second::complete::getString
      Src: /src/pdns/pdns/dnsproxy.cc:334,1
    - Dst: string::c_str
      Src: /src/pdns/pdns/dnsproxy.cc:335,1
    - Dst: string::length
      Src: /src/pdns/pdns/dnsproxy.cc:336,1
    - Dst: auto::second::complete::reset
      Src: /src/pdns/pdns/dnsproxy.cc:337,1
    - Dst: auto::second::remote::getSocklen
      Src: /src/pdns/pdns/dnsproxy.cc:341,1
    - Dst: addCMsgSrcAddr
      Src: /src/pdns/pdns/dnsproxy.cc:345,1
    - Dst: auto::second::anyLocal::get_ptr
      Src: /src/pdns/pdns/dnsproxy.cc:345,1
    - Dst: sendmsg
      Src: /src/pdns/pdns/dnsproxy.cc:347,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsproxy.cc:349,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsproxy.cc:349,1
    - Dst: error
      Src: /src/pdns/pdns/dnsproxy.cc:350,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsproxy.cc:350,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsproxy.cc:357,1
    - Dst: error
      Src: /src/pdns/pdns/dnsproxy.cc:358,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsproxy.cc:361,1
    - Dst: what
      Src: /src/pdns/pdns/dnsproxy.cc:361,1
    - Dst: error
      Src: /src/pdns/pdns/dnsproxy.cc:362,1
    - Dst: what
      Src: /src/pdns/pdns/dnsproxy.cc:362,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsproxy.cc:365,1
    - Dst: info
      Src: /src/pdns/pdns/dnsproxy.cc:366,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsproxy.cc:368,1
    - Dst: info
      Src: /src/pdns/pdns/dnsproxy.cc:369,1
    - Dst: _exit
      Src: /src/pdns/pdns/dnsproxy.cc:370,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 86
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 371
      start: 233
    functionDepth: 3
    functionLinenumber: 233
    functionLinenumberEnd: 371
    functionName: DNSProxy::mainloop
    functionSourceFile: /src/pdns/pdns/dnsproxy.cc
    functionUses: 1
    functionsReached:
    - auto::second::complete::d_eso::getSource
    - stringerror
    - RCode::to_s
    - error
    - auto::second::complete::clearRecords
    - auto::size
    - SLOG
    - Logging::Loggable
    - QType
    - recvfrom
    - DNSZoneRecord::dr::setContent
    - lock
    - DNSPacket::d_eso::getScopePrefixLength
    - memset
    - DNSPacket::parse
    - auto::second::complete::setRcode
    - setThreadName
    - auto::second::complete::reset
    - auto::second::complete::d_eso::setScopePrefixLength
    - string::c_str
    - sendmsg
    - DNSPacket::qtype::getCode
    - _exit
    - auto::second::complete::d_eso::getScope
    - auto::second::anyLocal::get_ptr
    - DNSPacket::getString
    - toStringWithPort
    - string::length
    - auto::find
    - auto::second::complete::addRecord
    - ComboAddress::toStringWithPort
    - auto::second::remote::getSocklen
    - memcpy
    - std::move
    - what
    - info
    - getContent
    - auto::second::complete::getString
    - DLOG
    - auto::end
    - addCMsgSrcAddr
    linkageType: ''
    returnType: void
    signature: void DNSProxy::mainloop()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: closesocket
      Src: /src/pdns/pdns/dnsproxy.cc:377,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 384
      start: 373
    functionDepth: 0
    functionLinenumber: 373
    functionLinenumberEnd: 384
    functionName: DNSProxy::~DNSProxy()
    functionSourceFile: /src/pdns/pdns/dnsproxy.cc
    functionUses: 0
    functionsReached:
    - closesocket
    linkageType: ''
    returnType: void
    signature: void DNSProxy::~DNSProxy()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSBackend::getSOA
      Src: /src/pdns/pdns/dnsbackend.cc:47,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' target'
    - soaData
    argTypes:
    - ZoneName
    - SOAData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 45
    functionDepth: 1
    functionLinenumber: 45
    functionLinenumberEnd: 48
    functionName: DNSBackend::getAuth
    functionSourceFile: /src/pdns/pdns/dnsbackend.cc
    functionUses: 0
    functionsReached:
    - DNSBackend::getSOA
    linkageType: ''
    returnType: bool
    signature: bool DNSBackend::getAuth(const ZoneName& target, SOAData* soaData)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' prefix'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 50
    functionDepth: 0
    functionLinenumber: 50
    functionLinenumberEnd: 53
    functionName: DNSBackend::setArgPrefix
    functionSourceFile: /src/pdns/pdns/dnsbackend.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void DNSBackend::setArgPrefix(const string& prefix)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: arg
      Src: /src/pdns/pdns/dnsbackend.cc:57,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' key'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 55
    functionDepth: 0
    functionLinenumber: 55
    functionLinenumberEnd: 58
    functionName: DNSBackend::mustDo
    functionSourceFile: /src/pdns/pdns/dnsbackend.cc
    functionUses: 0
    functionsReached:
    - arg
    linkageType: ''
    returnType: bool
    signature: bool DNSBackend::mustDo(const string& key)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: arg
      Src: /src/pdns/pdns/dnsbackend.cc:62,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' key'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 60
    functionDepth: 0
    functionLinenumber: 60
    functionLinenumberEnd: 63
    functionName: '& DNSBackend::getArg(const string& key)'
    functionSourceFile: /src/pdns/pdns/dnsbackend.cc
    functionUses: 0
    functionsReached:
    - arg
    linkageType: ''
    returnType: string
    signature: string & DNSBackend::getArg(const string& key)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: arg
      Src: /src/pdns/pdns/dnsbackend.cc:67,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' key'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 65
    functionDepth: 0
    functionLinenumber: 65
    functionLinenumberEnd: 68
    functionName: DNSBackend::getArgAsNum
    functionSourceFile: /src/pdns/pdns/dnsbackend.cc
    functionUses: 0
    functionsReached:
    - arg
    linkageType: ''
    returnType: int
    signature: int DNSBackend::getArgAsNum(const string& key)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lookup
      Src: /src/pdns/pdns/dnsbackend.cc:73,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' qtype'
    - ' qdomain'
    - zoneId
    argTypes:
    - QType
    - DNSName
    - domainid_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 71
    functionDepth: 0
    functionLinenumber: 71
    functionLinenumberEnd: 74
    functionName: DNSBackend::APILookup
    functionSourceFile: /src/pdns/pdns/dnsbackend.cc
    functionUses: 0
    functionsReached:
    - lookup
    linkageType: ''
    returnType: void
    signature: void DNSBackend::APILookup(const QType& qtype, const DNSName& qdomain,
      domainid_t zoneId, bool /* include_disabled */)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: getCapabilities
      Src: /src/pdns/pdns/dnsbackend.cc:82,1
    - Dst: DNSBackend::getAllDomains
      Src: /src/pdns/pdns/dnsbackend.cc:88,1
    - Dst: list
      Src: /src/pdns/pdns/dnsbackend.cc:90,1
    - Dst: DNSBackend::get
      Src: /src/pdns/pdns/dnsbackend.cc:94,1
    - Dst: DNSBackend::lookupEnd
      Src: /src/pdns/pdns/dnsbackend.cc:97,1
    - Dst: SimpleMatch::match
      Src: /src/pdns/pdns/dnsbackend.cc:100,1
    - Dst: SimpleMatch::match
      Src: /src/pdns/pdns/dnsbackend.cc:100,1
    - Dst: emplace_back
      Src: /src/pdns/pdns/dnsbackend.cc:101,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 23
    argCount: 3
    argNames:
    - ' pattern'
    - maxResults
    - ' result'
    argTypes:
    - string
    - size_t
    - vector<DNSResourceRecord>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 77
    functionDepth: 1
    functionLinenumber: 77
    functionLinenumberEnd: 110
    functionName: DNSBackend::searchRecords
    functionSourceFile: /src/pdns/pdns/dnsbackend.cc
    functionUses: 0
    functionsReached:
    - DNSBackend::getAllDomains
    - getCapabilities
    - DNSBackend::lookupEnd
    - SimpleMatch::match
    - emplace_back
    - DNSBackend::get
    - list
    linkageType: ''
    returnType: bool
    signature: bool DNSBackend::searchRecords(const string& pattern, size_t maxResults,
      vector<DNSResourceRecord>& result)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: getCapabilities
      Src: /src/pdns/pdns/dnsbackend.cc:118,1
    - Dst: DNSBackend::getAllDomains
      Src: /src/pdns/pdns/dnsbackend.cc:124,1
    - Dst: DNSBackend::listComments
      Src: /src/pdns/pdns/dnsbackend.cc:126,1
    - Dst: DNSBackend::getComment
      Src: /src/pdns/pdns/dnsbackend.cc:130,1
    - Dst: DNSBackend::lookupEnd
      Src: /src/pdns/pdns/dnsbackend.cc:133,1
    - Dst: SimpleMatch::match
      Src: /src/pdns/pdns/dnsbackend.cc:136,1
    - Dst: SimpleMatch::match
      Src: /src/pdns/pdns/dnsbackend.cc:136,1
    - Dst: emplace_back
      Src: /src/pdns/pdns/dnsbackend.cc:137,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 23
    argCount: 3
    argNames:
    - ' pattern'
    - maxResults
    - ' result'
    argTypes:
    - string
    - size_t
    - vector<Comment>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 146
      start: 113
    functionDepth: 1
    functionLinenumber: 113
    functionLinenumberEnd: 146
    functionName: DNSBackend::searchComments
    functionSourceFile: /src/pdns/pdns/dnsbackend.cc
    functionUses: 0
    functionsReached:
    - DNSBackend::getAllDomains
    - DNSBackend::listComments
    - getCapabilities
    - DNSBackend::lookupEnd
    - SimpleMatch::match
    - emplace_back
    - DNSBackend::getComment
    linkageType: ''
    returnType: bool
    signature: bool DNSBackend::searchComments(const string& pattern, size_t maxResults,
      vector<Comment>& result)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: arg
      Src: /src/pdns/pdns/dnsbackend.cc:151,1
    - Dst: arg
      Src: /src/pdns/pdns/dnsbackend.cc:152,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - ' suffix'
    - ' param'
    - ' explanation'
    - ' value'
    argTypes:
    - string
    - string
    - string
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 153
      start: 148
    functionDepth: 0
    functionLinenumber: 148
    functionLinenumberEnd: 153
    functionName: BackendFactory::declare
    functionSourceFile: /src/pdns/pdns/dnsbackend.cc
    functionUses: 0
    functionsReached:
    - arg
    linkageType: ''
    returnType: void
    signature: void BackendFactory::declare(const string& suffix, const string& param,
      const string& explanation, const string& value)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 158
      start: 155
    functionDepth: 0
    functionLinenumber: 155
    functionLinenumberEnd: 158
    functionName: '& BackendFactory::getName() const'
    functionSourceFile: /src/pdns/pdns/dnsbackend.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: string
    signature: string & BackendFactory::getName() const
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - slog
    argTypes:
    - Logr::log_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 167
      start: 162
    functionDepth: 0
    functionLinenumber: 162
    functionLinenumberEnd: 167
    functionName: BackendMakerClass::BackendMakerClass
    functionSourceFile: /src/pdns/pdns/dnsbackend.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void BackendMakerClass::BackendMakerClass(Logr::log_t slog)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - slog
    argTypes:
    - Logr::log_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 173
      start: 169
    functionDepth: 0
    functionLinenumber: 169
    functionLinenumberEnd: 173
    functionName: BackendMakers
    functionSourceFile: /src/pdns/pdns/dnsbackend.cc
    functionUses: 7
    functionsReached: []
    linkageType: ''
    returnType: BackendMakerClass
    signature: BackendMakerClass & BackendMakers(Logr::log_t slog)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getName
      Src: /src/pdns/pdns/dnsbackend.cc:177,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsbackend.cc:177,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - ' backendFactory'
    argTypes:
    - std::unique_ptr<BackendFactory>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 178
      start: 175
    functionDepth: 0
    functionLinenumber: 175
    functionLinenumberEnd: 178
    functionName: BackendMakerClass::report
    functionSourceFile: /src/pdns/pdns/dnsbackend.cc
    functionUses: 0
    functionsReached:
    - std::move
    - getName
    linkageType: ''
    returnType: void
    signature: void BackendMakerClass::report(std::unique_ptr<BackendFactory>&& backendFactory)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BackendMakerClass::clear
      Src: /src/pdns/pdns/dnsbackend.cc:182,1
    - Dst: BackendMakerClass::clear
      Src: /src/pdns/pdns/dnsbackend.cc:183,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 184
      start: 180
    functionDepth: 0
    functionLinenumber: 180
    functionLinenumberEnd: 184
    functionName: BackendMakerClass::clear
    functionSourceFile: /src/pdns/pdns/dnsbackend.cc
    functionUses: 1
    functionsReached:
    - BackendMakerClass::clear
    linkageType: ''
    returnType: void
    signature: void BackendMakerClass::clear()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BackendMakerClass::load_all
      Src: /src/pdns/pdns/dnsbackend.cc:188,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/dnsbackend.cc:192,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 195
      start: 186
    functionDepth: 1
    functionLinenumber: 186
    functionLinenumberEnd: 195
    functionName: BackendMakerClass::getModules
    functionSourceFile: /src/pdns/pdns/dnsbackend.cc
    functionUses: 0
    functionsReached:
    - vector::push_back
    - BackendMakerClass::load_all
    linkageType: ''
    returnType: vector<string>
    signature: vector<string> BackendMakerClass::getModules()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: arg
      Src: /src/pdns/pdns/dnsbackend.cc:199,1
    - Dst: pdns::visit_directory
      Src: /src/pdns/pdns/dnsbackend.cc:200,1
    - Dst: boost::starts_with
      Src: /src/pdns/pdns/dnsbackend.cc:201,1
    - Dst: size
      Src: /src/pdns/pdns/dnsbackend.cc:201,1
    - Dst: boost::ends_with
      Src: /src/pdns/pdns/dnsbackend.cc:201,1
    - Dst: BackendMakerClass::load
      Src: /src/pdns/pdns/dnsbackend.cc:202,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsbackend.cc:202,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsbackend.cc:207,1
    - Dst: error
      Src: /src/pdns/pdns/dnsbackend.cc:208,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsbackend.cc:208,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 210
      start: 197
    functionDepth: 0
    functionLinenumber: 197
    functionLinenumberEnd: 210
    functionName: BackendMakerClass::load_all
    functionSourceFile: /src/pdns/pdns/dnsbackend.cc
    functionUses: 1
    functionsReached:
    - SLOG
    - Logging::Loggable
    - boost::starts_with
    - size
    - pdns::visit_directory
    - error
    - BackendMakerClass::load
    - boost::ends_with
    - arg
    - std::string
    linkageType: ''
    returnType: void
    signature: void BackendMakerClass::load_all()
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: arg
      Src: /src/pdns/pdns/dnsbackend.cc:216,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsbackend.cc:217,1
    - Dst: info
      Src: /src/pdns/pdns/dnsbackend.cc:219,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsbackend.cc:219,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsbackend.cc:219,1
    - Dst: find
      Src: /src/pdns/pdns/dnsbackend.cc:220,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsbackend.cc:222,1
    - Dst: info
      Src: /src/pdns/pdns/dnsbackend.cc:223,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsbackend.cc:223,1
    - Dst: UeberBackend::loadmodule
      Src: /src/pdns/pdns/dnsbackend.cc:224,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsbackend.cc:228,1
    - Dst: info
      Src: /src/pdns/pdns/dnsbackend.cc:229,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsbackend.cc:229,1
    - Dst: UeberBackend::loadmodule
      Src: /src/pdns/pdns/dnsbackend.cc:230,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsbackend.cc:234,1
    - Dst: info
      Src: /src/pdns/pdns/dnsbackend.cc:235,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsbackend.cc:235,1
    - Dst: UeberBackend::loadmodule
      Src: /src/pdns/pdns/dnsbackend.cc:236,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsbackend.cc:240,1
    - Dst: info
      Src: /src/pdns/pdns/dnsbackend.cc:241,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsbackend.cc:241,1
    - Dst: exit
      Src: /src/pdns/pdns/dnsbackend.cc:242,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 17
    argCount: 1
    argNames:
    - ' module'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 244
      start: 212
    functionDepth: 1
    functionLinenumber: 212
    functionLinenumberEnd: 244
    functionName: BackendMakerClass::load
    functionSourceFile: /src/pdns/pdns/dnsbackend.cc
    functionUses: 1
    functionsReached:
    - SLOG
    - Logging::Loggable
    - info
    - UeberBackend::loadmodule
    - exit
    - arg
    - find
    linkageType: ''
    returnType: void
    signature: void BackendMakerClass::load(const string& module)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: stringtok
      Src: /src/pdns/pdns/dnsbackend.cc:252,1
    - Dst: count
      Src: /src/pdns/pdns/dnsbackend.cc:255,1
    - Dst: vector::begin
      Src: /src/pdns/pdns/dnsbackend.cc:255,1
    - Dst: vector::end
      Src: /src/pdns/pdns/dnsbackend.cc:255,1
    - Dst: ArgException
      Src: /src/pdns/pdns/dnsbackend.cc:256,1
    - Dst: stringtok
      Src: /src/pdns/pdns/dnsbackend.cc:264,1
    - Dst: vector::size
      Src: /src/pdns/pdns/dnsbackend.cc:266,1
    - Dst: find
      Src: /src/pdns/pdns/dnsbackend.cc:270,1
    - Dst: end
      Src: /src/pdns/pdns/dnsbackend.cc:270,1
    - Dst: BackendMakerClass::load
      Src: /src/pdns/pdns/dnsbackend.cc:272,1
    - Dst: find
      Src: /src/pdns/pdns/dnsbackend.cc:273,1
    - Dst: end
      Src: /src/pdns/pdns/dnsbackend.cc:273,1
    - Dst: ArgException
      Src: /src/pdns/pdns/dnsbackend.cc:274,1
    - Dst: declareArguments
      Src: /src/pdns/pdns/dnsbackend.cc:277,1
    - Dst: emplace_back
      Src: /src/pdns/pdns/dnsbackend.cc:278,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 20
    argCount: 1
    argNames:
    - ' instr'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 280
      start: 246
    functionDepth: 1
    functionLinenumber: 246
    functionLinenumberEnd: 280
    functionName: BackendMakerClass::launch
    functionSourceFile: /src/pdns/pdns/dnsbackend.cc
    functionUses: 0
    functionsReached:
    - vector::begin
    - stringtok
    - count
    - end
    - declareArguments
    - vector::end
    - ArgException
    - emplace_back
    - BackendMakerClass::load
    - vector::size
    - find
    linkageType: ''
    returnType: void
    signature: void BackendMakerClass::launch(const string& instr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsbackend.cc:284,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 285
      start: 282
    functionDepth: 0
    functionLinenumber: 282
    functionLinenumberEnd: 285
    functionName: BackendMakerClass::numLauncheable
    functionSourceFile: /src/pdns/pdns/dnsbackend.cc
    functionUses: 0
    functionsReached:
    - size
    linkageType: ''
    returnType: size_t
    signature: size_t BackendMakerClass::numLauncheable() const
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/dnsbackend.cc:289,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/dnsbackend.cc:290,1
    - Dst: vector::reserve
      Src: /src/pdns/pdns/dnsbackend.cc:294,1
    - Dst: size
      Src: /src/pdns/pdns/dnsbackend.cc:294,1
    - Dst: makeMetadataOnly
      Src: /src/pdns/pdns/dnsbackend.cc:302,1
    - Dst: make
      Src: /src/pdns/pdns/dnsbackend.cc:302,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/dnsbackend.cc:304,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/dnsbackend.cc:306,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsbackend.cc:306,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsbackend.cc:310,1
    - Dst: error
      Src: /src/pdns/pdns/dnsbackend.cc:312,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsbackend.cc:312,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/dnsbackend.cc:313,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsbackend.cc:318,1
    - Dst: info
      Src: /src/pdns/pdns/dnsbackend.cc:319,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsbackend.cc:319,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/dnsbackend.cc:320,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 22
    argCount: 1
    argNames:
    - metadataOnly
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 325
      start: 287
    functionDepth: 1
    functionLinenumber: 287
    functionLinenumberEnd: 325
    functionName: BackendMakerClass::all
    functionSourceFile: /src/pdns/pdns/dnsbackend.cc
    functionUses: 0
    functionsReached:
    - error
    - std::move
    - vector::push_back
    - SLOG
    - Logging::Loggable
    - PDNSException
    - info
    - size
    - make
    - makeMetadataOnly
    - empty
    - vector::reserve
    - vector::clear
    linkageType: ''
    returnType: vector<std::unique_ptr<DNSBackend>>
    signature: vector<std::unique_ptr<DNSBackend>> BackendMakerClass::all(bool metadataOnly)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: hasVariant
      Src: /src/pdns/pdns/dnsbackend.cc:347,1
    - Dst: DNSBackend::getDomainInfo
      Src: /src/pdns/pdns/dnsbackend.cc:349,1
    - Dst: DNSBackend::lookup
      Src: /src/pdns/pdns/dnsbackend.cc:355,1
    - Dst: QType
      Src: /src/pdns/pdns/dnsbackend.cc:355,1
    - Dst: inc
      Src: /src/pdns/pdns/dnsbackend.cc:356,1
    - Dst: DNSBackend::get
      Src: /src/pdns/pdns/dnsbackend.cc:362,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/dnsbackend.cc:364,1
    - Dst: toLogString
      Src: /src/pdns/pdns/dnsbackend.cc:364,1
    - Dst: makeLowerCase
      Src: /src/pdns/pdns/dnsbackend.cc:367,1
    - Dst: fillSOAData
      Src: /src/pdns/pdns/dnsbackend.cc:371,1
    - Dst: DNSBackend::lookupEnd
      Src: /src/pdns/pdns/dnsbackend.cc:375,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 27
    argCount: 3
    argNames:
    - ' domain'
    - zoneId
    - ' soaData'
    argTypes:
    - ZoneName
    - domainid_t
    - SOAData
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 380
      start: 343
    functionDepth: 1
    functionLinenumber: 343
    functionLinenumberEnd: 380
    functionName: DNSBackend::getSOA
    functionSourceFile: /src/pdns/pdns/dnsbackend.cc
    functionUses: 1
    functionsReached:
    - makeLowerCase
    - toLogString
    - PDNSException
    - fillSOAData
    - inc
    - QType
    - hasVariant
    - DNSBackend::getDomainInfo
    - DNSBackend::lookupEnd
    - DNSBackend::get
    - DNSBackend::lookup
    linkageType: ''
    returnType: bool
    signature: bool DNSBackend::getSOA(const ZoneName& domain, domainid_t zoneId,
      SOAData& soaData)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: DNSBackend::get
      Src: /src/pdns/pdns/dnsbackend.cc:386,1
    - Dst: DNSResourceRecord::qtype::getCode
      Src: /src/pdns/pdns/dnsbackend.cc:392,1
    - Dst: DNSResourceRecord::content::empty
      Src: /src/pdns/pdns/dnsbackend.cc:392,1
    - Dst: DNSRecord
      Src: /src/pdns/pdns/dnsbackend.cc:396,1
    - Dst: DNSBackend::get
      Src: /src/pdns/pdns/dnsbackend.cc:399,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 19
    argCount: 1
    argNames:
    - ' zoneRecord'
    argTypes:
    - DNSZoneRecord
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 405
      start: 382
    functionDepth: 0
    functionLinenumber: 382
    functionLinenumberEnd: 405
    functionName: DNSBackend::get
    functionSourceFile: /src/pdns/pdns/dnsbackend.cc
    functionUses: 4
    functionsReached:
    - DNSBackend::get
    - DNSResourceRecord::qtype::getCode
    - DNSRecord
    - DNSResourceRecord::content::empty
    linkageType: ''
    returnType: bool
    signature: bool DNSBackend::get(DNSZoneRecord& zoneRecord)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSBackend::get
      Src: /src/pdns/pdns/dnsbackend.cc:414,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 417
      start: 411
    functionDepth: 0
    functionLinenumber: 411
    functionLinenumberEnd: 417
    functionName: DNSBackend::lookupEnd
    functionSourceFile: /src/pdns/pdns/dnsbackend.cc
    functionUses: 3
    functionsReached:
    - DNSBackend::get
    linkageType: ''
    returnType: void
    signature: void DNSBackend::lookupEnd()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSName::DNSName
      Src: /src/pdns/pdns/dnsbackend.cc:421,1
    - Dst: DNSBackend::getBeforeAndAfterNamesAbsolute
      Src: /src/pdns/pdns/dnsbackend.cc:422,1
    - Dst: makeRelative
      Src: /src/pdns/pdns/dnsbackend.cc:422,1
    - Dst: makeLowerCase
      Src: /src/pdns/pdns/dnsbackend.cc:423,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 5
    argNames:
    - domainId
    - ' zonename'
    - ' qname'
    - ' before'
    - ' after'
    argTypes:
    - domainid_t
    - ZoneName
    - DNSName
    - DNSName
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 427
      start: 419
    functionDepth: 0
    functionLinenumber: 419
    functionLinenumberEnd: 427
    functionName: DNSBackend::getBeforeAndAfterNames
    functionSourceFile: /src/pdns/pdns/dnsbackend.cc
    functionUses: 0
    functionsReached:
    - DNSName::DNSName
    - makeRelative
    - makeLowerCase
    - DNSBackend::getBeforeAndAfterNamesAbsolute
    linkageType: ''
    returnType: bool
    signature: bool DNSBackend::getBeforeAndAfterNames(domainid_t domainId, const
      ZoneName& zonename, const DNSName& qname, DNSName& before, DNSName& after)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: isEnabled
      Src: /src/pdns/pdns/dnsbackend.cc:431,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsbackend.cc:432,1
    - Dst: info
      Src: /src/pdns/pdns/dnsbackend.cc:433,1
    - Dst: exit
      Src: /src/pdns/pdns/dnsbackend.cc:434,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 436
      start: 429
    functionDepth: 0
    functionLinenumber: 429
    functionLinenumberEnd: 436
    functionName: DNSBackend::getAllDomains
    functionSourceFile: /src/pdns/pdns/dnsbackend.cc
    functionUses: 2
    functionsReached:
    - exit
    - SLOG
    - info
    - isEnabled
    linkageType: ''
    returnType: void
    signature: void DNSBackend::getAllDomains(vector<DomainInfo>* /* domains */, bool
      /* getSerial */, bool /* include_disabled */)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getRR
      Src: /src/pdns/pdns/dnsbackend.cc:443,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 2
    argNames:
    - ' inZoneRecord'
    - ' soaData'
    argTypes:
    - DNSZoneRecord
    - SOAData
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 451
      start: 438
    functionDepth: 0
    functionLinenumber: 438
    functionLinenumberEnd: 451
    functionName: fillSOAData
    functionSourceFile: /src/pdns/pdns/dnsbackend.cc
    functionUses: 10
    functionsReached:
    - getRR
    linkageType: ''
    returnType: void
    signature: void fillSOAData(const DNSZoneRecord& inZoneRecord, SOAData& soaData)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<SOARecordContent>
      Src: /src/pdns/pdns/dnsbackend.cc:462,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' soaData'
    argTypes:
    - SOAData
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 463
      start: 453
    functionDepth: 0
    functionLinenumber: 453
    functionLinenumberEnd: 463
    functionName: makeSOAContent
    functionSourceFile: /src/pdns/pdns/dnsbackend.cc
    functionUses: 7
    functionsReached:
    - std::make_shared<SOARecordContent>
    linkageType: ''
    returnType: std::shared_ptr<DNSRecordContent>
    signature: std::shared_ptr<DNSRecordContent> makeSOAContent(const SOAData& soaData)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vector::reserve
      Src: /src/pdns/pdns/dnsbackend.cc:468,1
    - Dst: stringtok
      Src: /src/pdns/pdns/dnsbackend.cc:469,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsbackend.cc:472,1
    - Dst: vector::at
      Src: /src/pdns/pdns/dnsbackend.cc:472,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsbackend.cc:473,1
    - Dst: vector::at
      Src: /src/pdns/pdns/dnsbackend.cc:473,1
    - Dst: pdns::checked_stoi_into
      Src: /src/pdns/pdns/dnsbackend.cc:474,1
    - Dst: vector::at
      Src: /src/pdns/pdns/dnsbackend.cc:474,1
    - Dst: pdns::checked_stoi_into
      Src: /src/pdns/pdns/dnsbackend.cc:475,1
    - Dst: vector::at
      Src: /src/pdns/pdns/dnsbackend.cc:475,1
    - Dst: pdns::checked_stoi_into
      Src: /src/pdns/pdns/dnsbackend.cc:476,1
    - Dst: vector::at
      Src: /src/pdns/pdns/dnsbackend.cc:476,1
    - Dst: pdns::checked_stoi_into
      Src: /src/pdns/pdns/dnsbackend.cc:477,1
    - Dst: vector::at
      Src: /src/pdns/pdns/dnsbackend.cc:477,1
    - Dst: pdns::checked_stoi_into
      Src: /src/pdns/pdns/dnsbackend.cc:478,1
    - Dst: vector::at
      Src: /src/pdns/pdns/dnsbackend.cc:478,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/dnsbackend.cc:481,1
    - Dst: what
      Src: /src/pdns/pdns/dnsbackend.cc:481,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 2
    argNames:
    - ' content'
    - ' soaData'
    argTypes:
    - string
    - SOAData
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 483
      start: 465
    functionDepth: 0
    functionLinenumber: 465
    functionLinenumberEnd: 483
    functionName: fillSOAData
    functionSourceFile: /src/pdns/pdns/dnsbackend.cc
    functionUses: 10
    functionsReached:
    - vector::at
    - stringtok
    - PDNSException
    - what
    - DNSName
    - vector::reserve
    - pdns::checked_stoi_into
    linkageType: ''
    returnType: void
    signature: void fillSOAData(const string& content, SOAData& soaData)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ArgvMap::ArgvMap
      Src: /src/pdns/pdns/stubquery.cc:16,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 18
      start: 14
    functionDepth: 0
    functionLinenumber: 14
    functionLinenumberEnd: 18
    functionName: arg
    functionSourceFile: /src/pdns/pdns/stubquery.cc
    functionUses: 86
    functionsReached:
    - ArgvMap::ArgvMap
    linkageType: ''
    returnType: ArgvMap
    signature: ArgvMap &arg()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 23
      start: 20
    functionDepth: 0
    functionLinenumber: 20
    functionLinenumberEnd: 23
    functionName: usage
    functionSourceFile: /src/pdns/pdns/stubquery.cc
    functionUses: 102
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void usage()
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: DNSName::DNSName
      Src: /src/pdns/pdns/stubquery.cc:28,1
    - Dst: QType::QType
      Src: /src/pdns/pdns/stubquery.cc:29,1
    - Dst: usage
      Src: /src/pdns/pdns/stubquery.cc:33,1
    - Dst: exit
      Src: /src/pdns/pdns/stubquery.cc:34,1
    - Dst: exit
      Src: /src/pdns/pdns/stubquery.cc:39,1
    - Dst: usage
      Src: /src/pdns/pdns/stubquery.cc:44,1
    - Dst: exit
      Src: /src/pdns/pdns/stubquery.cc:45,1
    - Dst: arg
      Src: /src/pdns/pdns/stubquery.cc:50,1
    - Dst: reportAllTypes
      Src: /src/pdns/pdns/stubquery.cc:52,1
    - Dst: stubParseResolveConf
      Src: /src/pdns/pdns/stubquery.cc:53,1
    - Dst: stubDoResolve
      Src: /src/pdns/pdns/stubquery.cc:57,1
    - Dst: DNSName
      Src: /src/pdns/pdns/stubquery.cc:57,1
    - Dst: DNSRecordContent::TypeToNumber
      Src: /src/pdns/pdns/stubquery.cc:57,1
    - Dst: dr::getContent
      Src: /src/pdns/pdns/stubquery.cc:61,1
    - Dst: what
      Src: /src/pdns/pdns/stubquery.cc:66,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 26
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 25
    functionDepth: 4
    functionLinenumber: 25
    functionLinenumberEnd: 71
    functionName: main
    functionSourceFile: /src/pdns/pdns/stubquery.cc
    functionUses: 24
    functionsReached:
    - QType::QType
    - stubParseResolveConf
    - reportAllTypes
    - stubDoResolve
    - what
    - dr::getContent
    - DNSName
    - usage
    - DNSRecordContent::TypeToNumber
    - DNSName::DNSName
    - exit
    - arg
    linkageType: ''
    returnType: int
    signature: int main(int argc, char** argv)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 28
    argCount: 3
    argNames:
    - ' a'
    - ' b'
    - ' c'
    argTypes:
    - uint32_t
    - uint32_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 27
    functionDepth: 0
    functionLinenumber: 27
    functionLinenumberEnd: 56
    functionName: burtlemix
    functionSourceFile: /src/pdns/pdns/burtle.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void burtlemix(uint32_t& a, uint32_t& b, uint32_t& c)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: burtlemix
      Src: /src/pdns/pdns/burtle.hh:72,1
    - Dst: burtlemix
      Src: /src/pdns/pdns/burtle.hh:115,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 39
    argCount: 3
    argNames:
    - k
    - length
    - initval
    argTypes:
    - unsigned char*
    - uint32_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 118
      start: 58
    functionDepth: 0
    functionLinenumber: 58
    functionLinenumberEnd: 118
    functionName: burtle
    functionSourceFile: /src/pdns/pdns/burtle.hh
    functionUses: 9
    functionsReached:
    - burtlemix
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t burtle(const unsigned char* k, uint32_t length, uint32_t initval)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: dns_tolower
      Src: /src/pdns/pdns/burtle.hh:131,1
    - Dst: dns_tolower
      Src: /src/pdns/pdns/burtle.hh:131,1
    - Dst: dns_tolower
      Src: /src/pdns/pdns/burtle.hh:131,1
    - Dst: dns_tolower
      Src: /src/pdns/pdns/burtle.hh:131,1
    - Dst: dns_tolower
      Src: /src/pdns/pdns/burtle.hh:132,1
    - Dst: dns_tolower
      Src: /src/pdns/pdns/burtle.hh:132,1
    - Dst: dns_tolower
      Src: /src/pdns/pdns/burtle.hh:132,1
    - Dst: dns_tolower
      Src: /src/pdns/pdns/burtle.hh:132,1
    - Dst: dns_tolower
      Src: /src/pdns/pdns/burtle.hh:133,1
    - Dst: dns_tolower
      Src: /src/pdns/pdns/burtle.hh:133,1
    - Dst: dns_tolower
      Src: /src/pdns/pdns/burtle.hh:133,1
    - Dst: dns_tolower
      Src: /src/pdns/pdns/burtle.hh:133,1
    - Dst: burtlemix
      Src: /src/pdns/pdns/burtle.hh:134,1
    - Dst: dns_tolower
      Src: /src/pdns/pdns/burtle.hh:143,1
    - Dst: dns_tolower
      Src: /src/pdns/pdns/burtle.hh:146,1
    - Dst: dns_tolower
      Src: /src/pdns/pdns/burtle.hh:149,1
    - Dst: dns_tolower
      Src: /src/pdns/pdns/burtle.hh:153,1
    - Dst: dns_tolower
      Src: /src/pdns/pdns/burtle.hh:156,1
    - Dst: dns_tolower
      Src: /src/pdns/pdns/burtle.hh:159,1
    - Dst: dns_tolower
      Src: /src/pdns/pdns/burtle.hh:162,1
    - Dst: dns_tolower
      Src: /src/pdns/pdns/burtle.hh:165,1
    - Dst: dns_tolower
      Src: /src/pdns/pdns/burtle.hh:168,1
    - Dst: dns_tolower
      Src: /src/pdns/pdns/burtle.hh:171,1
    - Dst: dns_tolower
      Src: /src/pdns/pdns/burtle.hh:174,1
    - Dst: burtlemix
      Src: /src/pdns/pdns/burtle.hh:177,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 39
    argCount: 3
    argNames:
    - k
    - length
    - initval
    argTypes:
    - unsigned char*
    - uint32_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 180
      start: 120
    functionDepth: 0
    functionLinenumber: 120
    functionLinenumberEnd: 180
    functionName: burtleCI
    functionSourceFile: /src/pdns/pdns/burtle.hh
    functionUses: 3
    functionsReached:
    - burtlemix
    - dns_tolower
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t burtleCI(const unsigned char* k, uint32_t length, uint32_t
      initval)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: burtleCI
      Src: /src/pdns/pdns/burtle.hh:185,1
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/burtle.hh:185,1
    - Dst: data
      Src: /src/pdns/pdns/burtle.hh:185,1
    - Dst: length
      Src: /src/pdns/pdns/burtle.hh:185,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' k'
    - initval
    argTypes:
    - T
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 186
      start: 183
    functionDepth: 0
    functionLinenumber: 183
    functionLinenumberEnd: 186
    functionName: burtleCI
    functionSourceFile: /src/pdns/pdns/burtle.hh
    functionUses: 4
    functionsReached:
    - burtleCI
    - length
    - reinterpret_cast<const unsigned char*>
    - data
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t burtleCI(const T& k, uint32_t initval)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 37
    functionDepth: 0
    functionLinenumber: 37
    functionLinenumberEnd: 37
    functionName: Logr::Loggable
    functionSourceFile: /src/pdns/pdns/logr.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Loggable()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 38
    functionDepth: 0
    functionLinenumber: 38
    functionLinenumberEnd: 38
    functionName: Logr::Loggable
    functionSourceFile: /src/pdns/pdns/logr.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Loggable(const Loggable&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 39
      start: 39
    functionDepth: 0
    functionLinenumber: 39
    functionLinenumberEnd: 39
    functionName: Logr::Loggable
    functionSourceFile: /src/pdns/pdns/logr.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Loggable(Loggable&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 40
    functionDepth: 0
    functionLinenumber: 40
    functionLinenumberEnd: 40
    functionName: '& operator=(const Loggable&)'
    functionSourceFile: /src/pdns/pdns/logr.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Loggable
    signature: Loggable & operator=(const Loggable&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 41
    functionDepth: 0
    functionLinenumber: 41
    functionLinenumberEnd: 41
    functionName: '& operator=(Loggable&&)'
    functionSourceFile: /src/pdns/pdns/logr.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Loggable
    signature: Loggable & operator=(Loggable&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 42
    functionDepth: 0
    functionLinenumber: 42
    functionLinenumberEnd: 42
    functionName: ~Loggable()
    functionSourceFile: /src/pdns/pdns/logr.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~Loggable()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 69
    functionDepth: 0
    functionLinenumber: 69
    functionLinenumberEnd: 69
    functionName: Logr::Logger::Logger
    functionSourceFile: /src/pdns/pdns/logr.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Logger()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 70
    functionDepth: 0
    functionLinenumber: 70
    functionLinenumberEnd: 70
    functionName: Logr::Logger::Logger
    functionSourceFile: /src/pdns/pdns/logr.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Logger(const Logger&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 71
    functionDepth: 0
    functionLinenumber: 71
    functionLinenumberEnd: 71
    functionName: Logr::Logger::Logger
    functionSourceFile: /src/pdns/pdns/logr.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Logger(Logger&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 72
    functionDepth: 0
    functionLinenumber: 72
    functionLinenumberEnd: 72
    functionName: '& operator=(const Logger&)'
    functionSourceFile: /src/pdns/pdns/logr.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Logger
    signature: Logger & operator=(const Logger&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 73
    functionDepth: 0
    functionLinenumber: 73
    functionLinenumberEnd: 73
    functionName: '& operator=(Logger&&)'
    functionSourceFile: /src/pdns/pdns/logr.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Logger
    signature: Logger & operator=(Logger&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 74
    functionDepth: 0
    functionLinenumber: 74
    functionLinenumberEnd: 74
    functionName: ~Logger()
    functionSourceFile: /src/pdns/pdns/logr.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~Logger()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<unsigned int>
      Src: /src/pdns/pdns/logr.hh:79,1
    - Dst: std::array::size
      Src: /src/pdns/pdns/logr.hh:80,1
    - Dst: std::array::at
      Src: /src/pdns/pdns/logr.hh:83,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - arg
    argTypes:
    - Priority
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 76
    functionDepth: 0
    functionLinenumber: 76
    functionLinenumberEnd: 84
    functionName: Logr::Logger::toString
    functionSourceFile: /src/pdns/pdns/logr.hh
    functionUses: 3
    functionsReached:
    - static_cast<unsigned int>
    - std::array::at
    - std::array::size
    linkageType: ''
    returnType: std::string
    signature: std::string toString(Priority arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Logr::Logger::withValues
      Src: /src/pdns/pdns/logr.hh:96,1
    - Dst: auto::info
      Src: /src/pdns/pdns/logr.hh:97,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - prio
    - ' msg'
    - ' key'
    - ' value'
    argTypes:
    - Priority
    - std::string
    - std::string
    - Loggable
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 94
    functionDepth: 0
    functionLinenumber: 94
    functionLinenumberEnd: 98
    functionName: Logr::Logger::info
    functionSourceFile: /src/pdns/pdns/logr.hh
    functionUses: 0
    functionsReached:
    - auto::info
    - Logr::Logger::withValues
    linkageType: ''
    returnType: void
    signature: void info(Priority prio, const std::string& msg, const std::string&
      key, const Loggable& value, const Args&... args) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Logr::Logger::withValues
      Src: /src/pdns/pdns/logr.hh:114,1
    - Dst: auto::error
      Src: /src/pdns/pdns/logr.hh:115,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - prio
    - ' err'
    - ' msg'
    - ' key'
    - ' value'
    argTypes:
    - Priority
    - std::string
    - std::string
    - std::string
    - Loggable
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 112
    functionDepth: 0
    functionLinenumber: 112
    functionLinenumberEnd: 116
    functionName: Logr::Logger::error
    functionSourceFile: /src/pdns/pdns/logr.hh
    functionUses: 0
    functionsReached:
    - auto::error
    - Logr::Logger::withValues
    linkageType: ''
    returnType: void
    signature: void error(Priority prio, const std::string& err, const std::string&
      msg, const std::string& key, const Loggable& value, const Args&... args) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Logr::Logger::withValues
      Src: /src/pdns/pdns/logr.hh:121,1
    - Dst: auto::error
      Src: /src/pdns/pdns/logr.hh:122,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - prio
    - err
    - ' msg'
    - ' key'
    - ' value'
    argTypes:
    - Priority
    - int
    - std::string
    - std::string
    - Loggable
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 119
    functionDepth: 0
    functionLinenumber: 119
    functionLinenumberEnd: 123
    functionName: Logr::Logger::error
    functionSourceFile: /src/pdns/pdns/logr.hh
    functionUses: 0
    functionsReached:
    - auto::error
    - Logr::Logger::withValues
    linkageType: ''
    returnType: void
    signature: void error(Priority prio, int err, const std::string& msg, const std::string&
      key, const Loggable& value, const Args&... args) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Logr::Logger::mapArguments
      Src: /src/pdns/pdns/logr.hh:135,1
    - Dst: Logr::Logger::withValues
      Src: /src/pdns/pdns/logr.hh:136,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ' key'
    - ' value'
    argTypes:
    - std::string
    - Loggable
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 137
      start: 132
    functionDepth: 0
    functionLinenumber: 132
    functionLinenumberEnd: 137
    functionName: Logr::Logger::withValues
    functionSourceFile: /src/pdns/pdns/logr.hh
    functionUses: 4
    functionsReached:
    - Logr::Logger::mapArguments
    - Logr::Logger::withValues
    linkageType: ''
    returnType: std::shared_ptr<Logger>
    signature: std::shared_ptr<Logger> withValues(const std::string& key, const Loggable&
      value, const Args&... args) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: emplace
      Src: /src/pdns/pdns/logr.hh:154,1
    - Dst: to_string
      Src: /src/pdns/pdns/logr.hh:154,1
    - Dst: Logr::Logger::mapArguments
      Src: /src/pdns/pdns/logr.hh:155,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - ' map'
    - ' key'
    - ' value'
    argTypes:
    - std::map<std::string, std::string>
    - std::string
    - Loggable
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 156
      start: 152
    functionDepth: 0
    functionLinenumber: 152
    functionLinenumberEnd: 156
    functionName: Logr::Logger::mapArguments
    functionSourceFile: /src/pdns/pdns/logr.hh
    functionUses: 2
    functionsReached:
    - Logr::Logger::mapArguments
    - emplace
    - to_string
    linkageType: ''
    returnType: void
    signature: void mapArguments(std::map<std::string, std::string>& map, const std::string&
      key, const Loggable& value, const Args&... args) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 158
      start: 158
    functionDepth: 0
    functionLinenumber: 158
    functionLinenumberEnd: 158
    functionName: Logr::Logger::mapArguments
    functionSourceFile: /src/pdns/pdns/logr.hh
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void mapArguments(std::map<std::string, std::string>& /* map */) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 37
    functionDepth: 0
    functionLinenumber: 37
    functionLinenumberEnd: 37
    functionName: Logr::Loggable
    functionSourceFile: /src/pdns/pdns/logr.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Loggable()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 38
    functionDepth: 0
    functionLinenumber: 38
    functionLinenumberEnd: 38
    functionName: Logr::Loggable
    functionSourceFile: /src/pdns/pdns/logr.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Loggable(const Loggable&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 39
      start: 39
    functionDepth: 0
    functionLinenumber: 39
    functionLinenumberEnd: 39
    functionName: Logr::Loggable
    functionSourceFile: /src/pdns/pdns/logr.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Loggable(Loggable&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 40
    functionDepth: 0
    functionLinenumber: 40
    functionLinenumberEnd: 40
    functionName: '& operator=(const Loggable&)'
    functionSourceFile: /src/pdns/pdns/logr.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Loggable
    signature: Loggable & operator=(const Loggable&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 41
    functionDepth: 0
    functionLinenumber: 41
    functionLinenumberEnd: 41
    functionName: '& operator=(Loggable&&)'
    functionSourceFile: /src/pdns/pdns/logr.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Loggable
    signature: Loggable & operator=(Loggable&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 42
    functionDepth: 0
    functionLinenumber: 42
    functionLinenumberEnd: 42
    functionName: ~Loggable()
    functionSourceFile: /src/pdns/pdns/logr.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~Loggable()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 69
    functionDepth: 0
    functionLinenumber: 69
    functionLinenumberEnd: 69
    functionName: Logr::Logger::Logger
    functionSourceFile: /src/pdns/pdns/logr.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Logger()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 70
    functionDepth: 0
    functionLinenumber: 70
    functionLinenumberEnd: 70
    functionName: Logr::Logger::Logger
    functionSourceFile: /src/pdns/pdns/logr.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Logger(const Logger&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 71
    functionDepth: 0
    functionLinenumber: 71
    functionLinenumberEnd: 71
    functionName: Logr::Logger::Logger
    functionSourceFile: /src/pdns/pdns/logr.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Logger(Logger&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 72
    functionDepth: 0
    functionLinenumber: 72
    functionLinenumberEnd: 72
    functionName: '& operator=(const Logger&)'
    functionSourceFile: /src/pdns/pdns/logr.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Logger
    signature: Logger & operator=(const Logger&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 73
    functionDepth: 0
    functionLinenumber: 73
    functionLinenumberEnd: 73
    functionName: '& operator=(Logger&&)'
    functionSourceFile: /src/pdns/pdns/logr.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Logger
    signature: Logger & operator=(Logger&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 74
    functionDepth: 0
    functionLinenumber: 74
    functionLinenumberEnd: 74
    functionName: ~Logger()
    functionSourceFile: /src/pdns/pdns/logr.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~Logger()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<unsigned int>
      Src: /src/pdns/pdns/logr.hh:79,1
    - Dst: std::array::size
      Src: /src/pdns/pdns/logr.hh:80,1
    - Dst: std::array::at
      Src: /src/pdns/pdns/logr.hh:83,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - arg
    argTypes:
    - Priority
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 76
    functionDepth: 0
    functionLinenumber: 76
    functionLinenumberEnd: 84
    functionName: Logr::Logger::toString
    functionSourceFile: /src/pdns/pdns/logr.hh
    functionUses: 3
    functionsReached:
    - static_cast<unsigned int>
    - std::array::at
    - std::array::size
    linkageType: ''
    returnType: std::string
    signature: std::string toString(Priority arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Logr::Logger::withValues
      Src: /src/pdns/pdns/logr.hh:96,1
    - Dst: auto::info
      Src: /src/pdns/pdns/logr.hh:97,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - prio
    - ' msg'
    - ' key'
    - ' value'
    argTypes:
    - Priority
    - std::string
    - std::string
    - Loggable
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 94
    functionDepth: 0
    functionLinenumber: 94
    functionLinenumberEnd: 98
    functionName: Logr::Logger::info
    functionSourceFile: /src/pdns/pdns/logr.hh
    functionUses: 0
    functionsReached:
    - auto::info
    - Logr::Logger::withValues
    linkageType: ''
    returnType: void
    signature: void info(Priority prio, const std::string& msg, const std::string&
      key, const Loggable& value, const Args&... args) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Logr::Logger::withValues
      Src: /src/pdns/pdns/logr.hh:114,1
    - Dst: auto::error
      Src: /src/pdns/pdns/logr.hh:115,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - prio
    - ' err'
    - ' msg'
    - ' key'
    - ' value'
    argTypes:
    - Priority
    - std::string
    - std::string
    - std::string
    - Loggable
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 112
    functionDepth: 0
    functionLinenumber: 112
    functionLinenumberEnd: 116
    functionName: Logr::Logger::error
    functionSourceFile: /src/pdns/pdns/logr.hh
    functionUses: 0
    functionsReached:
    - auto::error
    - Logr::Logger::withValues
    linkageType: ''
    returnType: void
    signature: void error(Priority prio, const std::string& err, const std::string&
      msg, const std::string& key, const Loggable& value, const Args&... args) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Logr::Logger::withValues
      Src: /src/pdns/pdns/logr.hh:121,1
    - Dst: auto::error
      Src: /src/pdns/pdns/logr.hh:122,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - prio
    - err
    - ' msg'
    - ' key'
    - ' value'
    argTypes:
    - Priority
    - int
    - std::string
    - std::string
    - Loggable
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 119
    functionDepth: 0
    functionLinenumber: 119
    functionLinenumberEnd: 123
    functionName: Logr::Logger::error
    functionSourceFile: /src/pdns/pdns/logr.hh
    functionUses: 0
    functionsReached:
    - auto::error
    - Logr::Logger::withValues
    linkageType: ''
    returnType: void
    signature: void error(Priority prio, int err, const std::string& msg, const std::string&
      key, const Loggable& value, const Args&... args) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Logr::Logger::mapArguments
      Src: /src/pdns/pdns/logr.hh:135,1
    - Dst: Logr::Logger::withValues
      Src: /src/pdns/pdns/logr.hh:136,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ' key'
    - ' value'
    argTypes:
    - std::string
    - Loggable
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 137
      start: 132
    functionDepth: 0
    functionLinenumber: 132
    functionLinenumberEnd: 137
    functionName: Logr::Logger::withValues
    functionSourceFile: /src/pdns/pdns/logr.hh
    functionUses: 8
    functionsReached:
    - Logr::Logger::mapArguments
    - Logr::Logger::withValues
    linkageType: ''
    returnType: std::shared_ptr<Logger>
    signature: std::shared_ptr<Logger> withValues(const std::string& key, const Loggable&
      value, const Args&... args) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: emplace
      Src: /src/pdns/pdns/logr.hh:154,1
    - Dst: to_string
      Src: /src/pdns/pdns/logr.hh:154,1
    - Dst: Logr::Logger::mapArguments
      Src: /src/pdns/pdns/logr.hh:155,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - ' map'
    - ' key'
    - ' value'
    argTypes:
    - std::map<std::string, std::string>
    - std::string
    - Loggable
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 156
      start: 152
    functionDepth: 0
    functionLinenumber: 152
    functionLinenumberEnd: 156
    functionName: Logr::Logger::mapArguments
    functionSourceFile: /src/pdns/pdns/logr.hh
    functionUses: 4
    functionsReached:
    - Logr::Logger::mapArguments
    - emplace
    - to_string
    linkageType: ''
    returnType: void
    signature: void mapArguments(std::map<std::string, std::string>& map, const std::string&
      key, const Loggable& value, const Args&... args) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 158
      start: 158
    functionDepth: 0
    functionLinenumber: 158
    functionLinenumberEnd: 158
    functionName: Logr::Logger::mapArguments
    functionSourceFile: /src/pdns/pdns/logr.hh
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void mapArguments(std::map<std::string, std::string>& /* map */) const
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: std::getenv
      Src: /src/pdns/pdns/test-zoneparser_tng_cc.cc:25,1
    - Dst: std::ostringstream::str
      Src: /src/pdns/pdns/test-zoneparser_tng_cc.cc:29,1
    - Dst: ZoneName
      Src: /src/pdns/pdns/test-zoneparser_tng_cc.cc:29,1
    - Dst: std::ostringstream::str
      Src: /src/pdns/pdns/test-zoneparser_tng_cc.cc:32,1
    - Dst: ZoneParserTNG::get
      Src: /src/pdns/pdns/test-zoneparser_tng_cc.cc:34,1
    - Dst: std::getline
      Src: /src/pdns/pdns/test-zoneparser_tng_cc.cc:38,1
    - Dst: std::getline
      Src: /src/pdns/pdns/test-zoneparser_tng_cc.cc:39,1
    - Dst: pdns::checked_stoi_into
      Src: /src/pdns/pdns/test-zoneparser_tng_cc.cc:40,1
    - Dst: std::getline
      Src: /src/pdns/pdns/test-zoneparser_tng_cc.cc:41,1
    - Dst: std::getline
      Src: /src/pdns/pdns/test-zoneparser_tng_cc.cc:42,1
    - Dst: std::getline
      Src: /src/pdns/pdns/test-zoneparser_tng_cc.cc:43,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-zoneparser_tng_cc.cc:45,1
    - Dst: DNSResourceRecord::qname::toString
      Src: /src/pdns/pdns/test-zoneparser_tng_cc.cc:45,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-zoneparser_tng_cc.cc:46,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-zoneparser_tng_cc.cc:47,1
    - Dst: DNSResourceRecord::qtype::toString
      Src: /src/pdns/pdns/test-zoneparser_tng_cc.cc:47,1
    - Dst: DNSResourceRecord::content::rbegin
      Src: /src/pdns/pdns/test-zoneparser_tng_cc.cc:50,1
    - Dst: rbegin
      Src: /src/pdns/pdns/test-zoneparser_tng_cc.cc:50,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-zoneparser_tng_cc.cc:51,1
    - Dst: std::string
      Src: /src/pdns/pdns/test-zoneparser_tng_cc.cc:51,1
    - Dst: begin
      Src: /src/pdns/pdns/test-zoneparser_tng_cc.cc:51,1
    - Dst: end
      Src: /src/pdns/pdns/test-zoneparser_tng_cc.cc:51,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-zoneparser_tng_cc.cc:53,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 23
    functionDepth: 0
    functionLinenumber: 23
    functionLinenumberEnd: 55
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-zoneparser_tng_cc.cc
    functionUses: 0
    functionsReached:
    - DNSResourceRecord::qtype::toString
    - DNSResourceRecord::qname::toString
    - std::ostringstream::str
    - rbegin
    - end
    - std::getenv
    - BOOST_CHECK_EQUAL
    - DNSResourceRecord::content::rbegin
    - begin
    - ZoneParserTNG::get
    - ZoneName
    - pdns::checked_stoi_into
    - std::string
    - std::getline
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_tng_record_types)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::getenv
      Src: /src/pdns/pdns/test-zoneparser_tng_cc.cc:59,1
    - Dst: std::ostringstream::str
      Src: /src/pdns/pdns/test-zoneparser_tng_cc.cc:66,1
    - Dst: ZoneName
      Src: /src/pdns/pdns/test-zoneparser_tng_cc.cc:66,1
    - Dst: ZoneParserTNG::get
      Src: /src/pdns/pdns/test-zoneparser_tng_cc.cc:90,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-zoneparser_tng_cc.cc:91,1
    - Dst: DNSResourceRecord::qname::toString
      Src: /src/pdns/pdns/test-zoneparser_tng_cc.cc:91,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-zoneparser_tng_cc.cc:92,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-zoneparser_tng_cc.cc:93,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-zoneparser_tng_cc.cc:94,1
    - Dst: DNSResourceRecord::qtype::toString
      Src: /src/pdns/pdns/test-zoneparser_tng_cc.cc:94,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-zoneparser_tng_cc.cc:95,1
    - Dst: std::vector<std::string>
      Src: /src/pdns/pdns/test-zoneparser_tng_cc.cc:101,1
    - Dst: ZoneName
      Src: /src/pdns/pdns/test-zoneparser_tng_cc.cc:101,1
    - Dst: ZoneParserTNG::get
      Src: /src/pdns/pdns/test-zoneparser_tng_cc.cc:111,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-zoneparser_tng_cc.cc:112,1
    - Dst: DNSResourceRecord::qname::toString
      Src: /src/pdns/pdns/test-zoneparser_tng_cc.cc:112,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-zoneparser_tng_cc.cc:113,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-zoneparser_tng_cc.cc:114,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-zoneparser_tng_cc.cc:115,1
    - Dst: DNSResourceRecord::qtype::toString
      Src: /src/pdns/pdns/test-zoneparser_tng_cc.cc:115,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-zoneparser_tng_cc.cc:116,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-zoneparser_tng_cc.cc:120,1
    - Dst: ZoneParserTNG::get
      Src: /src/pdns/pdns/test-zoneparser_tng_cc.cc:120,1
    - Dst: std::vector<std::string>
      Src: /src/pdns/pdns/test-zoneparser_tng_cc.cc:126,1
    - Dst: ZoneName
      Src: /src/pdns/pdns/test-zoneparser_tng_cc.cc:126,1
    - Dst: ZoneParserTNG::get
      Src: /src/pdns/pdns/test-zoneparser_tng_cc.cc:134,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-zoneparser_tng_cc.cc:135,1
    - Dst: DNSResourceRecord::qname::toString
      Src: /src/pdns/pdns/test-zoneparser_tng_cc.cc:135,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-zoneparser_tng_cc.cc:136,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-zoneparser_tng_cc.cc:137,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-zoneparser_tng_cc.cc:138,1
    - Dst: DNSResourceRecord::qtype::toString
      Src: /src/pdns/pdns/test-zoneparser_tng_cc.cc:138,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-zoneparser_tng_cc.cc:139,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-zoneparser_tng_cc.cc:143,1
    - Dst: ZoneParserTNG::get
      Src: /src/pdns/pdns/test-zoneparser_tng_cc.cc:143,1
    - Dst: std::vector<std::string>
      Src: /src/pdns/pdns/test-zoneparser_tng_cc.cc:149,1
    - Dst: ZoneName
      Src: /src/pdns/pdns/test-zoneparser_tng_cc.cc:149,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-zoneparser_tng_cc.cc:151,1
    - Dst: ZoneParserTNG::get
      Src: /src/pdns/pdns/test-zoneparser_tng_cc.cc:151,1
    - Dst: std::vector<std::string>
      Src: /src/pdns/pdns/test-zoneparser_tng_cc.cc:156,1
    - Dst: ZoneName
      Src: /src/pdns/pdns/test-zoneparser_tng_cc.cc:156,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-zoneparser_tng_cc.cc:158,1
    - Dst: ZoneParserTNG::get
      Src: /src/pdns/pdns/test-zoneparser_tng_cc.cc:158,1
    - Dst: std::vector<std::string>
      Src: /src/pdns/pdns/test-zoneparser_tng_cc.cc:163,1
    - Dst: ZoneName
      Src: /src/pdns/pdns/test-zoneparser_tng_cc.cc:163,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-zoneparser_tng_cc.cc:165,1
    - Dst: ZoneParserTNG::get
      Src: /src/pdns/pdns/test-zoneparser_tng_cc.cc:165,1
    - Dst: std::vector<std::string>
      Src: /src/pdns/pdns/test-zoneparser_tng_cc.cc:170,1
    - Dst: ZoneName
      Src: /src/pdns/pdns/test-zoneparser_tng_cc.cc:170,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-zoneparser_tng_cc.cc:172,1
    - Dst: ZoneParserTNG::get
      Src: /src/pdns/pdns/test-zoneparser_tng_cc.cc:172,1
    - Dst: std::vector<std::string>
      Src: /src/pdns/pdns/test-zoneparser_tng_cc.cc:176,1
    - Dst: ZoneName
      Src: /src/pdns/pdns/test-zoneparser_tng_cc.cc:176,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-zoneparser_tng_cc.cc:178,1
    - Dst: ZoneParserTNG::get
      Src: /src/pdns/pdns/test-zoneparser_tng_cc.cc:178,1
    - Dst: std::vector<std::string>
      Src: /src/pdns/pdns/test-zoneparser_tng_cc.cc:183,1
    - Dst: ZoneName
      Src: /src/pdns/pdns/test-zoneparser_tng_cc.cc:183,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-zoneparser_tng_cc.cc:185,1
    - Dst: ZoneParserTNG::get
      Src: /src/pdns/pdns/test-zoneparser_tng_cc.cc:185,1
    - Dst: std::vector<std::string>
      Src: /src/pdns/pdns/test-zoneparser_tng_cc.cc:190,1
    - Dst: ZoneName
      Src: /src/pdns/pdns/test-zoneparser_tng_cc.cc:190,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-zoneparser_tng_cc.cc:192,1
    - Dst: ZoneParserTNG::get
      Src: /src/pdns/pdns/test-zoneparser_tng_cc.cc:192,1
    - Dst: std::vector<std::string>
      Src: /src/pdns/pdns/test-zoneparser_tng_cc.cc:197,1
    - Dst: ZoneName
      Src: /src/pdns/pdns/test-zoneparser_tng_cc.cc:197,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-zoneparser_tng_cc.cc:199,1
    - Dst: ZoneParserTNG::get
      Src: /src/pdns/pdns/test-zoneparser_tng_cc.cc:199,1
    - Dst: std::vector<std::string>
      Src: /src/pdns/pdns/test-zoneparser_tng_cc.cc:204,1
    - Dst: ZoneName
      Src: /src/pdns/pdns/test-zoneparser_tng_cc.cc:204,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-zoneparser_tng_cc.cc:206,1
    - Dst: ZoneParserTNG::get
      Src: /src/pdns/pdns/test-zoneparser_tng_cc.cc:206,1
    - Dst: std::vector<std::string>
      Src: /src/pdns/pdns/test-zoneparser_tng_cc.cc:211,1
    - Dst: ZoneName
      Src: /src/pdns/pdns/test-zoneparser_tng_cc.cc:211,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-zoneparser_tng_cc.cc:213,1
    - Dst: ZoneParserTNG::get
      Src: /src/pdns/pdns/test-zoneparser_tng_cc.cc:213,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 52
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 215
      start: 57
    functionDepth: 0
    functionLinenumber: 57
    functionLinenumberEnd: 215
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-zoneparser_tng_cc.cc
    functionUses: 0
    functionsReached:
    - DNSResourceRecord::qtype::toString
    - DNSResourceRecord::qname::toString
    - std::ostringstream::str
    - std::vector<std::string>
    - std::getenv
    - BOOST_CHECK_EQUAL
    - BOOST_CHECK_THROW
    - ZoneParserTNG::get
    - ZoneName
    - BOOST_CHECK
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_tng_record_generate)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::vector<std::string>
      Src: /src/pdns/pdns/test-zoneparser_tng_cc.cc:218,1
    - Dst: ZoneName
      Src: /src/pdns/pdns/test-zoneparser_tng_cc.cc:218,1
    - Dst: ZoneParserTNG::get
      Src: /src/pdns/pdns/test-zoneparser_tng_cc.cc:220,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-zoneparser_tng_cc.cc:222,1
    - Dst: DNSResourceRecord::qtype::toString
      Src: /src/pdns/pdns/test-zoneparser_tng_cc.cc:222,1
    - Dst: QType
      Src: /src/pdns/pdns/test-zoneparser_tng_cc.cc:222,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-zoneparser_tng_cc.cc:223,1
    - Dst: std::string
      Src: /src/pdns/pdns/test-zoneparser_tng_cc.cc:223,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 224
      start: 217
    functionDepth: 0
    functionLinenumber: 217
    functionLinenumberEnd: 224
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-zoneparser_tng_cc.cc
    functionUses: 0
    functionsReached:
    - DNSResourceRecord::qtype::toString
    - QType
    - std::vector<std::string>
    - BOOST_CHECK_EQUAL
    - ZoneParserTNG::get
    - ZoneName
    - std::string
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_tng_upgrade)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 4
    argNames:
    - ' name'
    - type
    - ' content'
    - ttl
    argTypes:
    - DNSName
    - uint16_t
    - std::string
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 32
      start: 30
    functionDepth: 0
    functionLinenumber: 30
    functionLinenumberEnd: 32
    functionName: SimpleBackend::SimpleDNSRecord
    functionSourceFile: /src/pdns/pdns/test-ueberbackend_cc.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void SimpleDNSRecord(const DNSName& name, uint16_t type, const std::string&
      content, uint32_t ttl)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<RecordStorage>
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:58,1
    - Dst: std::move
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:58,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - name
    - domainId
    argTypes:
    - ZoneName
    - domainid_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 58
    functionDepth: 0
    functionLinenumber: 58
    functionLinenumberEnd: 60
    functionName: SimpleBackend::SimpleDNSZone
    functionSourceFile: /src/pdns/pdns/test-ueberbackend_cc.cc
    functionUses: 0
    functionsReached:
    - std::make_shared<RecordStorage>
    - std::move
    linkageType: ''
    returnType: void
    signature: void SimpleDNSZone(ZoneName name, domainid_t domainId)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:79,1
    - Dst: std::move
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:79,1
    - Dst: std::move
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:79,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 3
    argNames:
    - name
    - kind
    - values
    argTypes:
    - ZoneName
    - std::string
    - std::vector<std::string>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 79
    functionDepth: 0
    functionLinenumber: 79
    functionLinenumberEnd: 81
    functionName: SimpleBackend::SimpleMetaData
    functionSourceFile: /src/pdns/pdns/test-ueberbackend_cc.cc
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void SimpleMetaData(ZoneName name, std::string kind, std::vector<std::string>
      values)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::checked_stoi<domainid_t>
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:106,1
    - Dst: substr
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:106,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' suffix'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 105
    functionDepth: 0
    functionLinenumber: 105
    functionLinenumberEnd: 108
    functionName: SimpleBackend::SimpleBackend
    functionSourceFile: /src/pdns/pdns/test-ueberbackend_cc.cc
    functionUses: 0
    functionsReached:
    - substr
    - pdns::checked_stoi<domainid_t>
    linkageType: ''
    returnType: void
    signature: void SimpleBackend(const std::string& suffix)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 110
    functionDepth: 0
    functionLinenumber: 110
    functionLinenumberEnd: 110
    functionName: SimpleBackend::getCapabilities
    functionSourceFile: /src/pdns/pdns/test-ueberbackend_cc.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int getCapabilities() override
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: reset
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:115,1
    - Dst: boost::multi_index::get<IDTag>
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:118,1
    - Dst: at
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:118,1
    - Dst: find
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:119,1
    - Dst: end
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:120,1
    - Dst: boost::multi_index::get<HashedNameTag>
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:127,1
    - Dst: at
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:127,1
    - Dst: find
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:128,1
    - Dst: end
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:129,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 4
    argNames:
    - ' qdomain'
    - zoneId
    - ' records'
    - ' currentZoneId'
    argTypes:
    - ZoneName
    - domainid_t
    - std::shared_ptr<RecordStorage>
    - domainid_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 137
      start: 112
    functionDepth: 0
    functionLinenumber: 112
    functionLinenumberEnd: 137
    functionName: SimpleBackend::findZone
    functionSourceFile: /src/pdns/pdns/test-ueberbackend_cc.cc
    functionUses: 0
    functionsReached:
    - reset
    - boost::multi_index::get<HashedNameTag>
    - boost::multi_index::get<IDTag>
    - end
    - at
    - find
    linkageType: ''
    returnType: bool
    signature: bool findZone(const ZoneName& qdomain, domainid_t zoneId, std::shared_ptr<RecordStorage>&
      records, domainid_t& currentZoneId) const
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: SimpleBackend::findZone
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:142,1
    - Dst: ZoneName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:142,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:145,1
    - Dst: DNSPacket*::getRealRemote
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:146,1
    - Dst: Netmask
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:146,1
    - Dst: DNSPacket*::getRealRemote
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:149,1
    - Dst: Netmask
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:149,1
    - Dst: SimpleBackend::get
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:154,1
    - Dst: equal_range
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:156,1
    - Dst: equal_range
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:161,1
    - Dst: std::tuple
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:161,1
    - Dst: getCode
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:161,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    argCount: 4
    argNames:
    - ' qtype'
    - ' qdomain'
    - zoneId
    - pkt_p
    argTypes:
    - QType
    - DNSName
    - domainid_t
    - DNSPacket*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 166
      start: 139
    functionDepth: 1
    functionLinenumber: 139
    functionLinenumberEnd: 166
    functionName: SimpleBackend::lookup
    functionSourceFile: /src/pdns/pdns/test-ueberbackend_cc.cc
    functionUses: 0
    functionsReached:
    - Netmask
    - SimpleBackend::get
    - equal_range
    - DNSName
    - SimpleBackend::findZone
    - std::tuple
    - ZoneName
    - getCode
    - DNSPacket*::getRealRemote
    linkageType: ''
    returnType: void
    signature: void lookup(const QType& qtype, const DNSName& qdomain, domainid_t
      zoneId, DNSPacket *pkt_p) override
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 1
    argNames:
    - ' drr'
    argTypes:
    - DNSResourceRecord
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 190
      start: 168
    functionDepth: 0
    functionLinenumber: 168
    functionLinenumberEnd: 190
    functionName: SimpleBackend::get
    functionSourceFile: /src/pdns/pdns/test-ueberbackend_cc.cc
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool get(DNSResourceRecord& drr) override
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SimpleBackend::findZone
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:194,1
    - Dst: begin
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:197,1
    - Dst: end
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:198,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - ' target'
    - zoneId
    argTypes:
    - ZoneName
    - domainid_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 203
      start: 192
    functionDepth: 1
    functionLinenumber: 192
    functionLinenumberEnd: 203
    functionName: SimpleBackend::list
    functionSourceFile: /src/pdns/pdns/test-ueberbackend_cc.cc
    functionUses: 0
    functionsReached:
    - end
    - SimpleBackend::findZone
    - begin
    linkageType: ''
    returnType: bool
    signature: bool list(const ZoneName& target, domainid_t zoneId, bool /* include_disabled
      */) override
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: boost::multi_index::get<OrderedNameKindTag>
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:207,1
    - Dst: at
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:207,1
    - Dst: find
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:208,1
    - Dst: std::tuple
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:208,1
    - Dst: end
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:209,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - ' name'
    - ' kind'
    - ' meta'
    argTypes:
    - ZoneName
    - std::string
    - std::vector<std::string>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 216
      start: 205
    functionDepth: 0
    functionLinenumber: 205
    functionLinenumberEnd: 216
    functionName: SimpleBackend::getDomainMetadata
    functionSourceFile: /src/pdns/pdns/test-ueberbackend_cc.cc
    functionUses: 0
    functionsReached:
    - end
    - std::tuple
    - boost::multi_index::get<OrderedNameKindTag>
    - at
    - find
    linkageType: ''
    returnType: bool
    signature: bool getDomainMetadata(const ZoneName& name, const std::string& kind,
      std::vector<std::string>& meta) override
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: boost::multi_index::get<OrderedNameKindTag>
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:220,1
    - Dst: at
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:220,1
    - Dst: find
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:221,1
    - Dst: std::tuple
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:221,1
    - Dst: end
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:222,1
    - Dst: at
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:223,1
    - Dst: SimpleBackend::SimpleMetaData
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:223,1
    - Dst: replace
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:226,1
    - Dst: SimpleBackend::SimpleMetaData
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:226,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - ' name'
    - ' kind'
    - ' meta'
    argTypes:
    - ZoneName
    - std::string
    - std::vector<std::string>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 228
      start: 218
    functionDepth: 1
    functionLinenumber: 218
    functionLinenumberEnd: 228
    functionName: SimpleBackend::setDomainMetadata
    functionSourceFile: /src/pdns/pdns/test-ueberbackend_cc.cc
    functionUses: 0
    functionsReached:
    - SimpleBackend::SimpleMetaData
    - end
    - replace
    - std::tuple
    - boost::multi_index::get<OrderedNameKindTag>
    - at
    - find
    linkageType: ''
    returnType: bool
    signature: bool setDomainMetadata(const ZoneName& name, const std::string& kind,
      const std::vector<std::string>& meta) override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' suffix'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 249
      start: 247
    functionDepth: 0
    functionLinenumber: 247
    functionLinenumberEnd: 249
    functionName: SimpleBackendBestAuth::SimpleBackendBestAuth
    functionSourceFile: /src/pdns/pdns/test-ueberbackend_cc.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void SimpleBackendBestAuth(const std::string& suffix)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: isPartOf
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:257,1
    - Dst: findZone
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:261,1
    - Dst: std::shared_ptr::get
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:265,1
    - Dst: equal_range
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:266,1
    - Dst: std::tuple
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:266,1
    - Dst: fillSOAData
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:271,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:274,1
    - Dst: getSOA
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:278,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 2
    argNames:
    - ' target'
    - soadata
    argTypes:
    - ZoneName
    - SOAData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 279
      start: 251
    functionDepth: 1
    functionLinenumber: 251
    functionLinenumberEnd: 279
    functionName: SimpleBackendBestAuth::getAuth
    functionSourceFile: /src/pdns/pdns/test-ueberbackend_cc.cc
    functionUses: 0
    functionsReached:
    - isPartOf
    - getSOA
    - findZone
    - std::shared_ptr::get
    - equal_range
    - std::tuple
    - fillSOAData
    - static_cast<int>
    linkageType: ''
    returnType: bool
    signature: bool getAuth(const ZoneName& target, SOAData* soadata) override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' suffix'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 289
      start: 287
    functionDepth: 0
    functionLinenumber: 287
    functionLinenumberEnd: 289
    functionName: SimpleBackendNoMeta::SimpleBackendNoMeta
    functionSourceFile: /src/pdns/pdns/test-ueberbackend_cc.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void SimpleBackendNoMeta(const std::string& suffix)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 294
      start: 291
    functionDepth: 0
    functionLinenumber: 291
    functionLinenumberEnd: 294
    functionName: SimpleBackendNoMeta::getDomainMetadata
    functionSourceFile: /src/pdns/pdns/test-ueberbackend_cc.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool getDomainMetadata(const ZoneName& /* name */, const std::string&
      /* kind */, std::vector<std::string>& /* meta */) override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 299
      start: 296
    functionDepth: 0
    functionLinenumber: 296
    functionLinenumberEnd: 299
    functionName: SimpleBackendNoMeta::setDomainMetadata
    functionSourceFile: /src/pdns/pdns/test-ueberbackend_cc.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool setDomainMetadata(const ZoneName& /* name */, const std::string&
      /* kind */, const std::vector<std::string>& /* meta */) override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 310
      start: 308
    functionDepth: 0
    functionLinenumber: 308
    functionLinenumberEnd: 310
    functionName: SimpleBackendFactory::SimpleBackendFactory
    functionSourceFile: /src/pdns/pdns/test-ueberbackend_cc.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void SimpleBackendFactory()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SimpleBackend::SimpleBackend
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:314,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 315
      start: 312
    functionDepth: 1
    functionLinenumber: 312
    functionLinenumberEnd: 315
    functionName: SimpleBackendFactory::make
    functionSourceFile: /src/pdns/pdns/test-ueberbackend_cc.cc
    functionUses: 0
    functionsReached:
    - SimpleBackend::SimpleBackend
    linkageType: ''
    returnType: DNSBackend
    signature: DNSBackend *make(const string& suffix="") override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 323
      start: 321
    functionDepth: 0
    functionLinenumber: 321
    functionLinenumberEnd: 323
    functionName: SimpleBackendBestAuthFactory::SimpleBackendBestAuthFactory
    functionSourceFile: /src/pdns/pdns/test-ueberbackend_cc.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void SimpleBackendBestAuthFactory()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SimpleBackendBestAuth::SimpleBackendBestAuth
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:327,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 328
      start: 325
    functionDepth: 1
    functionLinenumber: 325
    functionLinenumberEnd: 328
    functionName: SimpleBackendBestAuthFactory::make
    functionSourceFile: /src/pdns/pdns/test-ueberbackend_cc.cc
    functionUses: 0
    functionsReached:
    - SimpleBackendBestAuth::SimpleBackendBestAuth
    linkageType: ''
    returnType: DNSBackend
    signature: DNSBackend *make(const string& suffix="") override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 336
      start: 334
    functionDepth: 0
    functionLinenumber: 334
    functionLinenumberEnd: 336
    functionName: SimpleBackendNoMetaFactory::SimpleBackendNoMetaFactory
    functionSourceFile: /src/pdns/pdns/test-ueberbackend_cc.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void SimpleBackendNoMetaFactory()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SimpleBackendNoMeta::SimpleBackendNoMeta
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:340,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 341
      start: 338
    functionDepth: 1
    functionLinenumber: 338
    functionLinenumberEnd: 341
    functionName: SimpleBackendNoMetaFactory::make
    functionSourceFile: /src/pdns/pdns/test-ueberbackend_cc.cc
    functionUses: 0
    functionsReached:
    - SimpleBackendNoMeta::SimpleBackendNoMeta
    linkageType: ''
    returnType: DNSBackend
    signature: DNSBackend *make(const string& suffix="") override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: AuthQueryCache::AuthQueryCache
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:346,1
    - Dst: arg
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:347,1
    - Dst: arg
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:348,1
    - Dst: arg
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:349,1
    - Dst: AuthQueryCache::purge
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:350,1
    - Dst: setRefreshInterval
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:351,1
    - Dst: clear
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:352,1
    - Dst: BackendMakers
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:353,1
    - Dst: clear
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:354,1
    - Dst: clear
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:355,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 356
      start: 345
    functionDepth: 1
    functionLinenumber: 345
    functionLinenumberEnd: 356
    functionName: UeberBackendSetupArgFixture
    functionSourceFile: /src/pdns/pdns/test-ueberbackend_cc.cc
    functionUses: 0
    functionsReached:
    - BackendMakers
    - AuthQueryCache::purge
    - setRefreshInterval
    - AuthQueryCache::AuthQueryCache
    - clear
    - arg
    linkageType: ''
    returnType: void
    signature: void UeberBackendSetupArgFixture()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: AuthQueryCache::AuthQueryCache
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:361,1
    - Dst: arg
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:365,1
    - Dst: arg
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:366,1
    - Dst: AuthQueryCache::purge
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:367,1
    - Dst: AuthQueryCache::setMaxEntries
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:368,1
    - Dst: setRefreshInterval
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:370,1
    - Dst: clear
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:371,1
    - Dst: UeberBackend::UeberBackend
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:373,1
    - Dst: func
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:374,1
    - Dst: arg
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:379,1
    - Dst: arg
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:380,1
    - Dst: AuthQueryCache::purge
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:381,1
    - Dst: AuthQueryCache::setMaxEntries
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:382,1
    - Dst: setRefreshInterval
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:384,1
    - Dst: clear
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:385,1
    - Dst: UeberBackend::UeberBackend
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:387,1
    - Dst: func
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:389,1
    - Dst: func
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:391,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 18
    argCount: 1
    argNames:
    - func
    argTypes:
    - std::function<void(UeberBackend& ub)>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 393
      start: 359
    functionDepth: 2
    functionLinenumber: 359
    functionLinenumberEnd: 393
    functionName: testWithoutThenWithAuthCache
    functionSourceFile: /src/pdns/pdns/test-ueberbackend_cc.cc
    functionUses: 0
    functionsReached:
    - AuthQueryCache::purge
    - func
    - UeberBackend::UeberBackend
    - setRefreshInterval
    - AuthQueryCache::AuthQueryCache
    - clear
    - AuthQueryCache::setMaxEntries
    - arg
    linkageType: ''
    returnType: void
    signature: void testWithoutThenWithAuthCache(std::function<void(UeberBackend&
      ub)> func)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: AuthQueryCache::AuthQueryCache
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:397,1
    - Dst: setRefreshInterval
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:401,1
    - Dst: clear
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:402,1
    - Dst: arg
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:404,1
    - Dst: arg
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:405,1
    - Dst: AuthQueryCache::purge
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:406,1
    - Dst: AuthQueryCache::setMaxEntries
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:407,1
    - Dst: UeberBackend::UeberBackend
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:409,1
    - Dst: func
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:410,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 1
    argNames:
    - func
    argTypes:
    - std::function<void(UeberBackend& ub)>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 428
      start: 395
    functionDepth: 2
    functionLinenumber: 395
    functionLinenumberEnd: 428
    functionName: testWithoutThenWithZoneCache
    functionSourceFile: /src/pdns/pdns/test-ueberbackend_cc.cc
    functionUses: 0
    functionsReached:
    - AuthQueryCache::purge
    - func
    - UeberBackend::UeberBackend
    - setRefreshInterval
    - AuthQueryCache::AuthQueryCache
    - clear
    - AuthQueryCache::setMaxEntries
    - arg
    linkageType: ''
    returnType: void
    signature: void testWithoutThenWithZoneCache(std::function<void(UeberBackend&
      ub)> func)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lookup
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:437,1
    - Dst: QType
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:437,1
    - Dst: const_cast<DNSPacket*>
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:437,1
    - Dst: get
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:440,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:442,1
    - Dst: std::move
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:442,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 5
    argNames:
    - ' ub'
    - ' name'
    - qtype
    - zoneId
    - pkt
    argTypes:
    - UeberBackend
    - DNSName
    - uint16_t
    - domainid_t
    - DNSPacket*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 446
      start: 433
    functionDepth: 0
    functionLinenumber: 433
    functionLinenumberEnd: 446
    functionName: getRecords
    functionSourceFile: /src/pdns/pdns/test-ueberbackend_cc.cc
    functionUses: 0
    functionsReached:
    - std::vector::push_back
    - std::move
    - lookup
    - QType
    - const_cast<DNSPacket*>
    - get
    linkageType: ''
    returnType: std::vector<DNSZoneRecord>
    signature: std::vector<DNSZoneRecord> getRecords(UeberBackend& ub, const DNSName&
      name, uint16_t qtype, domainid_t zoneId, const DNSPacket* pkt)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_REQUIRE_GE
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:450,1
    - Dst: size
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:450,1
    - Dst: BOOST_CHECK_MESSAGE
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:460,1
    - Dst: toString
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:460,1
    - Dst: QType
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:460,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:460,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 7
    argCount: 6
    argNames:
    - ' records'
    - ' name'
    - type
    - zoneId
    - scopeMask
    - auth
    argTypes:
    - std::vector<DNSZoneRecord>
    - DNSName
    - uint16_t
    - domainid_t
    - uint8_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 461
      start: 448
    functionDepth: 0
    functionLinenumber: 448
    functionLinenumberEnd: 461
    functionName: checkRecordExists
    functionSourceFile: /src/pdns/pdns/test-ueberbackend_cc.cc
    functionUses: 0
    functionsReached:
    - BOOST_REQUIRE_GE
    - toString
    - std::to_string
    - QType
    - size
    - BOOST_CHECK_MESSAGE
    linkageType: ''
    returnType: void
    signature: void checkRecordExists(const std::vector<DNSZoneRecord>& records, const
      DNSName& name, uint16_t type, domainid_t zoneId, uint8_t scopeMask, bool auth)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ZoneName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:466,1
    - Dst: SimpleBackend::SimpleDNSZone::d_records::insert
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:467,1
    - Dst: SimpleBackend::SimpleDNSRecord
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:467,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:467,1
    - Dst: SimpleBackend::SimpleDNSZone::d_records::insert
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:468,1
    - Dst: SimpleBackend::SimpleDNSRecord
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:468,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:468,1
    - Dst: SimpleBackend::SimpleDNSZone::d_records::insert
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:469,1
    - Dst: SimpleBackend::SimpleDNSRecord
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:469,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:469,1
    - Dst: SimpleBackend::SimpleDNSZone::d_records::insert
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:470,1
    - Dst: SimpleBackend::SimpleDNSRecord
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:470,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:470,1
    - Dst: insert
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:471,1
    - Dst: BackendMakers
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:473,1
    - Dst: std::make_unique<SimpleBackendFactory>
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:473,1
    - Dst: BackendMakers
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:474,1
    - Dst: UeberBackend::go
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:475,1
    - Dst: getRecords
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:480,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:480,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:481,1
    - Dst: auto::size
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:481,1
    - Dst: checkRecordExists
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:482,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:482,1
    - Dst: getRecords
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:487,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:487,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:488,1
    - Dst: auto::size
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:488,1
    - Dst: checkRecordExists
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:489,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:489,1
    - Dst: checkRecordExists
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:490,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:490,1
    - Dst: getRecords
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:495,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:495,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:496,1
    - Dst: auto::size
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:496,1
    - Dst: checkRecordExists
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:497,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:497,1
    - Dst: getRecords
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:502,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:502,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:503,1
    - Dst: auto::size
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:503,1
    - Dst: getRecords
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:508,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:508,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:509,1
    - Dst: auto::size
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:509,1
    - Dst: checkRecordExists
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:510,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:510,1
    - Dst: checkRecordExists
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:511,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:511,1
    - Dst: getRecords
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:516,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:516,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:517,1
    - Dst: auto::size
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:517,1
    - Dst: checkRecordExists
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:518,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:518,1
    - Dst: getRecords
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:523,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:523,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:524,1
    - Dst: auto::size
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:524,1
    - Dst: getRecords
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:529,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:529,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:530,1
    - Dst: auto::size
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:530,1
    - Dst: DNSPacket::setRemote
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:537,1
    - Dst: getRecords
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:538,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:538,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:539,1
    - Dst: auto::size
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:539,1
    - Dst: checkRecordExists
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:540,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:540,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:542,1
    - Dst: DNSPacket::setRemote
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:543,1
    - Dst: getRecords
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:544,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:544,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:545,1
    - Dst: auto::size
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:545,1
    - Dst: checkRecordExists
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:546,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:546,1
    - Dst: testWithoutThenWithAuthCache
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:550,1
    - Dst: testWithoutThenWithZoneCache
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:551,1
    - Dst: what
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:558,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 55
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 565
      start: 463
    functionDepth: 3
    functionLinenumber: 463
    functionLinenumberEnd: 565
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-ueberbackend_cc.cc
    functionUses: 0
    functionsReached:
    - BackendMakers
    - testWithoutThenWithAuthCache
    - UeberBackend::go
    - checkRecordExists
    - SimpleBackend::SimpleDNSRecord
    - what
    - DNSName
    - SimpleBackend::SimpleDNSZone::d_records::insert
    - getRecords
    - testWithoutThenWithZoneCache
    - insert
    - DNSPacket::setRemote
    - ZoneName
    - std::make_unique<SimpleBackendFactory>
    - BOOST_REQUIRE_EQUAL
    - auto::size
    - ComboAddress
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_simple)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ZoneName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:572,1
    - Dst: SimpleBackend::SimpleDNSZone::d_records::insert
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:573,1
    - Dst: SimpleBackend::SimpleDNSRecord
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:573,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:573,1
    - Dst: SimpleBackend::SimpleDNSZone::d_records::insert
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:574,1
    - Dst: SimpleBackend::SimpleDNSRecord
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:574,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:574,1
    - Dst: SimpleBackend::SimpleDNSZone::d_records::insert
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:575,1
    - Dst: SimpleBackend::SimpleDNSRecord
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:575,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:575,1
    - Dst: SimpleBackend::SimpleDNSZone::d_records::insert
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:576,1
    - Dst: SimpleBackend::SimpleDNSRecord
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:576,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:576,1
    - Dst: insert
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:577,1
    - Dst: ZoneName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:579,1
    - Dst: SimpleBackend::SimpleDNSZone::d_records::insert
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:580,1
    - Dst: SimpleBackend::SimpleDNSRecord
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:580,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:580,1
    - Dst: SimpleBackend::SimpleDNSZone::d_records::insert
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:581,1
    - Dst: SimpleBackend::SimpleDNSRecord
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:581,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:581,1
    - Dst: SimpleBackend::SimpleDNSZone::d_records::insert
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:582,1
    - Dst: SimpleBackend::SimpleDNSRecord
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:582,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:582,1
    - Dst: SimpleBackend::SimpleDNSZone::d_records::insert
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:583,1
    - Dst: SimpleBackend::SimpleDNSRecord
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:583,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:583,1
    - Dst: insert
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:584,1
    - Dst: BackendMakers
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:586,1
    - Dst: std::make_unique<SimpleBackendFactory>
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:586,1
    - Dst: BackendMakers
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:587,1
    - Dst: UeberBackend::go
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:588,1
    - Dst: getRecords
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:593,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:593,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:594,1
    - Dst: auto::size
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:594,1
    - Dst: checkRecordExists
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:595,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:595,1
    - Dst: getRecords
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:597,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:597,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:598,1
    - Dst: auto::size
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:598,1
    - Dst: checkRecordExists
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:599,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:599,1
    - Dst: getRecords
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:604,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:604,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:605,1
    - Dst: auto::size
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:605,1
    - Dst: checkRecordExists
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:606,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:606,1
    - Dst: checkRecordExists
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:607,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:607,1
    - Dst: getRecords
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:609,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:609,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:610,1
    - Dst: auto::size
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:610,1
    - Dst: checkRecordExists
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:611,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:611,1
    - Dst: checkRecordExists
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:612,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:612,1
    - Dst: getRecords
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:617,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:617,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:618,1
    - Dst: auto::size
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:618,1
    - Dst: checkRecordExists
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:619,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:619,1
    - Dst: getRecords
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:621,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:621,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:622,1
    - Dst: auto::size
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:622,1
    - Dst: checkRecordExists
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:623,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:623,1
    - Dst: getRecords
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:628,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:628,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:629,1
    - Dst: auto::size
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:629,1
    - Dst: getRecords
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:631,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:631,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:632,1
    - Dst: auto::size
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:632,1
    - Dst: getRecords
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:637,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:637,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:638,1
    - Dst: auto::size
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:638,1
    - Dst: checkRecordExists
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:639,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:639,1
    - Dst: checkRecordExists
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:640,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:640,1
    - Dst: getRecords
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:642,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:642,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:643,1
    - Dst: auto::size
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:643,1
    - Dst: checkRecordExists
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:644,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:644,1
    - Dst: checkRecordExists
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:645,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:645,1
    - Dst: getRecords
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:650,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:650,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:651,1
    - Dst: auto::size
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:651,1
    - Dst: checkRecordExists
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:652,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:652,1
    - Dst: getRecords
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:654,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:654,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:655,1
    - Dst: auto::size
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:655,1
    - Dst: checkRecordExists
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:656,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:656,1
    - Dst: getRecords
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:661,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:661,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:662,1
    - Dst: auto::size
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:662,1
    - Dst: getRecords
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:664,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:664,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:665,1
    - Dst: auto::size
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:665,1
    - Dst: getRecords
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:670,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:670,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:671,1
    - Dst: auto::size
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:671,1
    - Dst: getRecords
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:673,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:673,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:674,1
    - Dst: auto::size
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:674,1
    - Dst: getRecords
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:676,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:676,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:677,1
    - Dst: auto::size
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:677,1
    - Dst: DNSPacket::setRemote
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:684,1
    - Dst: getRecords
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:685,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:685,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:686,1
    - Dst: auto::size
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:686,1
    - Dst: checkRecordExists
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:687,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:687,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:689,1
    - Dst: DNSPacket::setRemote
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:690,1
    - Dst: getRecords
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:691,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:691,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:692,1
    - Dst: auto::size
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:692,1
    - Dst: checkRecordExists
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:693,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:693,1
    - Dst: testWithoutThenWithAuthCache
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:697,1
    - Dst: testWithoutThenWithZoneCache
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:698,1
    - Dst: what
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:705,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 85
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 712
      start: 567
    functionDepth: 3
    functionLinenumber: 567
    functionLinenumberEnd: 712
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-ueberbackend_cc.cc
    functionUses: 0
    functionsReached:
    - BackendMakers
    - testWithoutThenWithAuthCache
    - UeberBackend::go
    - checkRecordExists
    - SimpleBackend::SimpleDNSRecord
    - what
    - DNSName
    - SimpleBackend::SimpleDNSZone::d_records::insert
    - getRecords
    - testWithoutThenWithZoneCache
    - insert
    - DNSPacket::setRemote
    - ZoneName
    - std::make_unique<SimpleBackendFactory>
    - BOOST_REQUIRE_EQUAL
    - auto::size
    - ComboAddress
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_multi_backends_separate_zones)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ZoneName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:718,1
    - Dst: SimpleBackend::SimpleDNSZone::d_records::insert
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:719,1
    - Dst: SimpleBackend::SimpleDNSRecord
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:719,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:719,1
    - Dst: SimpleBackend::SimpleDNSZone::d_records::insert
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:720,1
    - Dst: SimpleBackend::SimpleDNSRecord
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:720,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:720,1
    - Dst: SimpleBackend::SimpleDNSZone::d_records::insert
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:721,1
    - Dst: SimpleBackend::SimpleDNSRecord
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:721,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:721,1
    - Dst: insert
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:722,1
    - Dst: ZoneName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:724,1
    - Dst: SimpleBackend::SimpleDNSZone::d_records::insert
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:725,1
    - Dst: SimpleBackend::SimpleDNSRecord
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:725,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:725,1
    - Dst: SimpleBackend::SimpleDNSZone::d_records::insert
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:726,1
    - Dst: SimpleBackend::SimpleDNSRecord
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:726,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:726,1
    - Dst: SimpleBackend::SimpleDNSZone::d_records::insert
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:727,1
    - Dst: SimpleBackend::SimpleDNSRecord
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:727,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:727,1
    - Dst: SimpleBackend::SimpleDNSZone::d_records::insert
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:728,1
    - Dst: SimpleBackend::SimpleDNSRecord
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:728,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:728,1
    - Dst: insert
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:729,1
    - Dst: BackendMakers
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:731,1
    - Dst: std::make_unique<SimpleBackendFactory>
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:731,1
    - Dst: BackendMakers
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:732,1
    - Dst: UeberBackend::go
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:733,1
    - Dst: getRecords
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:738,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:738,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:739,1
    - Dst: auto::size
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:739,1
    - Dst: checkRecordExists
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:740,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:740,1
    - Dst: getRecords
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:745,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:745,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:747,1
    - Dst: auto::size
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:747,1
    - Dst: checkRecordExists
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:748,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:748,1
    - Dst: checkRecordExists
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:749,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:749,1
    - Dst: checkRecordExists
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:750,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:750,1
    - Dst: getRecords
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:756,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:756,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:758,1
    - Dst: auto::size
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:758,1
    - Dst: checkRecordExists
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:759,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:759,1
    - Dst: getRecords
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:764,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:764,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:765,1
    - Dst: auto::size
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:765,1
    - Dst: getRecords
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:770,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:770,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:772,1
    - Dst: auto::size
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:772,1
    - Dst: checkRecordExists
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:773,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:773,1
    - Dst: checkRecordExists
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:774,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:774,1
    - Dst: checkRecordExists
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:775,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:775,1
    - Dst: getRecords
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:781,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:781,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:783,1
    - Dst: auto::size
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:783,1
    - Dst: checkRecordExists
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:784,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:784,1
    - Dst: getRecords
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:789,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:789,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:790,1
    - Dst: auto::size
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:790,1
    - Dst: checkRecordExists
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:791,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:791,1
    - Dst: getRecords
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:796,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:796,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:797,1
    - Dst: auto::size
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:797,1
    - Dst: getRecords
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:802,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:802,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:803,1
    - Dst: auto::size
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:803,1
    - Dst: DNSPacket::setRemote
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:810,1
    - Dst: getRecords
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:811,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:811,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:812,1
    - Dst: auto::size
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:812,1
    - Dst: checkRecordExists
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:813,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:813,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:815,1
    - Dst: DNSPacket::setRemote
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:816,1
    - Dst: getRecords
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:817,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:817,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:818,1
    - Dst: auto::size
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:818,1
    - Dst: checkRecordExists
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:819,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:819,1
    - Dst: testWithoutThenWithAuthCache
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:823,1
    - Dst: testWithoutThenWithZoneCache
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:824,1
    - Dst: what
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:831,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 64
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 838
      start: 714
    functionDepth: 3
    functionLinenumber: 714
    functionLinenumberEnd: 838
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-ueberbackend_cc.cc
    functionUses: 0
    functionsReached:
    - BackendMakers
    - testWithoutThenWithAuthCache
    - UeberBackend::go
    - checkRecordExists
    - SimpleBackend::SimpleDNSRecord
    - what
    - DNSName
    - SimpleBackend::SimpleDNSZone::d_records::insert
    - getRecords
    - testWithoutThenWithZoneCache
    - insert
    - DNSPacket::setRemote
    - ZoneName
    - std::make_unique<SimpleBackendFactory>
    - BOOST_REQUIRE_EQUAL
    - auto::size
    - ComboAddress
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_multi_backends_overlay)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ZoneName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:844,1
    - Dst: SimpleBackend::SimpleDNSZone::d_records::insert
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:845,1
    - Dst: SimpleBackend::SimpleDNSRecord
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:845,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:845,1
    - Dst: SimpleBackend::SimpleDNSZone::d_records::insert
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:846,1
    - Dst: SimpleBackend::SimpleDNSRecord
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:846,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:846,1
    - Dst: SimpleBackend::SimpleDNSZone::d_records::insert
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:847,1
    - Dst: SimpleBackend::SimpleDNSRecord
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:847,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:847,1
    - Dst: SimpleBackend::SimpleDNSZone::d_records::insert
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:848,1
    - Dst: SimpleBackend::SimpleDNSRecord
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:848,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:848,1
    - Dst: SimpleBackend::SimpleDNSZone::d_records::insert
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:849,1
    - Dst: SimpleBackend::SimpleDNSRecord
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:849,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:849,1
    - Dst: insert
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:850,1
    - Dst: ZoneName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:852,1
    - Dst: SimpleBackend::SimpleDNSZone::d_records::insert
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:853,1
    - Dst: SimpleBackend::SimpleDNSRecord
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:853,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:853,1
    - Dst: SimpleBackend::SimpleDNSZone::d_records::insert
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:854,1
    - Dst: SimpleBackend::SimpleDNSRecord
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:854,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:854,1
    - Dst: SimpleBackend::SimpleDNSZone::d_records::insert
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:855,1
    - Dst: SimpleBackend::SimpleDNSRecord
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:855,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:855,1
    - Dst: insert
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:856,1
    - Dst: BackendMakers
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:858,1
    - Dst: std::make_unique<SimpleBackendFactory>
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:858,1
    - Dst: BackendMakers
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:859,1
    - Dst: UeberBackend::go
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:860,1
    - Dst: getRecords
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:865,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:865,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:866,1
    - Dst: auto::size
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:866,1
    - Dst: checkRecordExists
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:867,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:867,1
    - Dst: getRecords
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:872,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:872,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:873,1
    - Dst: auto::size
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:873,1
    - Dst: checkRecordExists
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:874,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:874,1
    - Dst: checkRecordExists
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:875,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:875,1
    - Dst: checkRecordExists
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:876,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:876,1
    - Dst: checkRecordExists
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:877,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:877,1
    - Dst: getRecords
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:882,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:882,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:883,1
    - Dst: auto::size
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:883,1
    - Dst: checkRecordExists
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:884,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:884,1
    - Dst: getRecords
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:889,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:889,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:890,1
    - Dst: auto::size
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:890,1
    - Dst: getRecords
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:895,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:895,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:896,1
    - Dst: auto::size
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:896,1
    - Dst: checkRecordExists
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:897,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:897,1
    - Dst: checkRecordExists
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:898,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:898,1
    - Dst: checkRecordExists
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:899,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:899,1
    - Dst: checkRecordExists
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:900,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:900,1
    - Dst: getRecords
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:905,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:905,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:906,1
    - Dst: auto::size
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:906,1
    - Dst: checkRecordExists
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:907,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:907,1
    - Dst: getRecords
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:912,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:912,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:913,1
    - Dst: auto::size
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:913,1
    - Dst: checkRecordExists
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:914,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:914,1
    - Dst: getRecords
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:919,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:919,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:920,1
    - Dst: auto::size
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:920,1
    - Dst: getRecords
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:925,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:925,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:926,1
    - Dst: auto::size
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:926,1
    - Dst: DNSPacket::setRemote
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:933,1
    - Dst: getRecords
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:934,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:934,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:935,1
    - Dst: auto::size
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:935,1
    - Dst: checkRecordExists
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:936,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:936,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:938,1
    - Dst: DNSPacket::setRemote
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:939,1
    - Dst: getRecords
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:940,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:940,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:941,1
    - Dst: auto::size
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:941,1
    - Dst: checkRecordExists
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:942,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:942,1
    - Dst: testWithoutThenWithAuthCache
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:946,1
    - Dst: testWithoutThenWithZoneCache
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:947,1
    - Dst: what
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:954,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 67
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 961
      start: 840
    functionDepth: 3
    functionLinenumber: 840
    functionLinenumberEnd: 961
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-ueberbackend_cc.cc
    functionUses: 0
    functionsReached:
    - BackendMakers
    - testWithoutThenWithAuthCache
    - UeberBackend::go
    - checkRecordExists
    - SimpleBackend::SimpleDNSRecord
    - what
    - DNSName
    - SimpleBackend::SimpleDNSZone::d_records::insert
    - getRecords
    - testWithoutThenWithZoneCache
    - insert
    - DNSPacket::setRemote
    - ZoneName
    - std::make_unique<SimpleBackendFactory>
    - BOOST_REQUIRE_EQUAL
    - auto::size
    - ComboAddress
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_multi_backends_overlay_name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ZoneName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:968,1
    - Dst: SimpleBackend::SimpleDNSZone::d_records::insert
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:969,1
    - Dst: SimpleBackend::SimpleDNSRecord
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:969,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:969,1
    - Dst: SimpleBackend::SimpleDNSZone::d_records::insert
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:970,1
    - Dst: SimpleBackend::SimpleDNSRecord
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:970,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:970,1
    - Dst: SimpleBackend::SimpleDNSZone::d_records::insert
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:971,1
    - Dst: SimpleBackend::SimpleDNSRecord
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:971,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:971,1
    - Dst: SimpleBackend::SimpleDNSZone::d_records::insert
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:972,1
    - Dst: SimpleBackend::SimpleDNSRecord
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:972,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:972,1
    - Dst: insert
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:973,1
    - Dst: ZoneName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:975,1
    - Dst: SimpleBackend::SimpleDNSZone::d_records::insert
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:976,1
    - Dst: SimpleBackend::SimpleDNSRecord
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:976,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:976,1
    - Dst: SimpleBackend::SimpleDNSZone::d_records::insert
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:977,1
    - Dst: SimpleBackend::SimpleDNSRecord
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:977,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:977,1
    - Dst: SimpleBackend::SimpleDNSZone::d_records::insert
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:978,1
    - Dst: SimpleBackend::SimpleDNSRecord
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:978,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:978,1
    - Dst: SimpleBackend::SimpleDNSZone::d_records::insert
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:979,1
    - Dst: SimpleBackend::SimpleDNSRecord
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:979,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:979,1
    - Dst: insert
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:980,1
    - Dst: BackendMakers
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:982,1
    - Dst: std::make_unique<SimpleBackendFactory>
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:982,1
    - Dst: BackendMakers
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:983,1
    - Dst: UeberBackend::go
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:984,1
    - Dst: getRecords
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:989,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:989,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:990,1
    - Dst: auto::size
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:990,1
    - Dst: checkRecordExists
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:991,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:991,1
    - Dst: getRecords
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:993,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:993,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:994,1
    - Dst: auto::size
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:994,1
    - Dst: checkRecordExists
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:995,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:995,1
    - Dst: getRecords
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1000,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1000,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1001,1
    - Dst: auto::size
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1001,1
    - Dst: checkRecordExists
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1002,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1002,1
    - Dst: checkRecordExists
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1003,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1003,1
    - Dst: checkRecordExists
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1004,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1004,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1010,1
    - Dst: getAuth
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1010,1
    - Dst: ZoneName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1010,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1011,1
    - Dst: SOAData::zonename::toString
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1011,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1012,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1018,1
    - Dst: getAuth
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1018,1
    - Dst: ZoneName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1018,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1019,1
    - Dst: SOAData::zonename::toString
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1019,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1020,1
    - Dst: testWithoutThenWithAuthCache
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1024,1
    - Dst: testWithoutThenWithZoneCache
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1025,1
    - Dst: what
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1032,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 47
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1039
      start: 963
    functionDepth: 3
    functionLinenumber: 963
    functionLinenumberEnd: 1039
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-ueberbackend_cc.cc
    functionUses: 0
    functionsReached:
    - SimpleBackend::SimpleDNSRecord
    - testWithoutThenWithZoneCache
    - insert
    - auto::size
    - testWithoutThenWithAuthCache
    - UeberBackend::go
    - SimpleBackend::SimpleDNSZone::d_records::insert
    - getRecords
    - BOOST_REQUIRE
    - std::make_unique<SimpleBackendFactory>
    - BOOST_REQUIRE_EQUAL
    - SOAData::zonename::toString
    - DNSName
    - getAuth
    - BackendMakers
    - checkRecordExists
    - what
    - BOOST_CHECK_EQUAL
    - ZoneName
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_child_zone)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ZoneName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1046,1
    - Dst: SimpleBackend::SimpleDNSZone::d_records::insert
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1047,1
    - Dst: SimpleBackend::SimpleDNSRecord
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1047,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1047,1
    - Dst: SimpleBackend::SimpleDNSZone::d_records::insert
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1048,1
    - Dst: SimpleBackend::SimpleDNSRecord
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1048,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1048,1
    - Dst: insert
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1049,1
    - Dst: ZoneName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1051,1
    - Dst: SimpleBackend::SimpleDNSZone::d_records::insert
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1052,1
    - Dst: SimpleBackend::SimpleDNSRecord
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1052,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1052,1
    - Dst: insert
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1053,1
    - Dst: BackendMakers
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1055,1
    - Dst: std::make_unique<SimpleBackendFactory>
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1055,1
    - Dst: BackendMakers
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1056,1
    - Dst: std::make_unique<SimpleBackendBestAuthFactory>
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1056,1
    - Dst: BackendMakers
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1057,1
    - Dst: UeberBackend::go
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1058,1
    - Dst: dynamic_cast<SimpleBackendBestAuth*>
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1062,1
    - Dst: backends::at
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1062,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1063,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1070,1
    - Dst: getAuth
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1070,1
    - Dst: ZoneName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1070,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1071,1
    - Dst: SOAData::zonename::toString
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1071,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1072,1
    - Dst: BOOST_CHECK_LE
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1075,1
    - Dst: testWithoutThenWithAuthCache
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1079,1
    - Dst: testWithoutThenWithZoneCache
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1080,1
    - Dst: what
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1087,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 31
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1094
      start: 1041
    functionDepth: 3
    functionLinenumber: 1041
    functionLinenumberEnd: 1094
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-ueberbackend_cc.cc
    functionUses: 0
    functionsReached:
    - backends::at
    - SimpleBackend::SimpleDNSRecord
    - testWithoutThenWithZoneCache
    - insert
    - BOOST_CHECK_LE
    - testWithoutThenWithAuthCache
    - UeberBackend::go
    - SimpleBackend::SimpleDNSZone::d_records::insert
    - std::make_unique<SimpleBackendBestAuthFactory>
    - BOOST_REQUIRE
    - std::make_unique<SimpleBackendFactory>
    - SOAData::zonename::toString
    - DNSName
    - getAuth
    - BackendMakers
    - dynamic_cast<SimpleBackendBestAuth*>
    - what
    - BOOST_CHECK_EQUAL
    - ZoneName
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_multi_backends_best_soa)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ZoneName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1102,1
    - Dst: SimpleBackend::SimpleDNSZone::d_records::insert
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1103,1
    - Dst: SimpleBackend::SimpleDNSRecord
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1103,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1103,1
    - Dst: SimpleBackend::SimpleDNSZone::d_records::insert
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1104,1
    - Dst: SimpleBackend::SimpleDNSRecord
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1104,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1104,1
    - Dst: SimpleBackend::SimpleDNSZone::d_records::insert
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1105,1
    - Dst: SimpleBackend::SimpleDNSRecord
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1105,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1105,1
    - Dst: SimpleBackend::SimpleDNSZone::d_records::insert
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1106,1
    - Dst: SimpleBackend::SimpleDNSRecord
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1106,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1106,1
    - Dst: insert
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1107,1
    - Dst: insert
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1108,1
    - Dst: SimpleBackend::SimpleMetaData
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1108,1
    - Dst: ZoneName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1108,1
    - Dst: ZoneName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1110,1
    - Dst: SimpleBackend::SimpleDNSZone::d_records::insert
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1111,1
    - Dst: SimpleBackend::SimpleDNSRecord
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1111,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1111,1
    - Dst: SimpleBackend::SimpleDNSZone::d_records::insert
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1112,1
    - Dst: SimpleBackend::SimpleDNSRecord
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1112,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1112,1
    - Dst: SimpleBackend::SimpleDNSZone::d_records::insert
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1113,1
    - Dst: SimpleBackend::SimpleDNSRecord
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1113,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1113,1
    - Dst: SimpleBackend::SimpleDNSZone::d_records::insert
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1114,1
    - Dst: SimpleBackend::SimpleDNSRecord
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1114,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1114,1
    - Dst: insert
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1115,1
    - Dst: insert
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1116,1
    - Dst: SimpleBackend::SimpleMetaData
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1116,1
    - Dst: ZoneName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1116,1
    - Dst: BackendMakers
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1118,1
    - Dst: std::make_unique<SimpleBackendFactory>
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1118,1
    - Dst: BackendMakers
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1119,1
    - Dst: UeberBackend::go
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1120,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1126,1
    - Dst: getDomainMetadata
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1126,1
    - Dst: ZoneName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1126,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1127,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1127,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1128,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1128,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1129,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1129,1
    - Dst: std::vector::clear
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1130,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1131,1
    - Dst: getDomainMetadata
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1131,1
    - Dst: ZoneName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1131,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1132,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1132,1
    - Dst: std::vector::clear
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1133,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1134,1
    - Dst: getDomainMetadata
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1134,1
    - Dst: ZoneName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1134,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1135,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1135,1
    - Dst: std::vector::clear
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1136,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1137,1
    - Dst: getDomainMetadata
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1137,1
    - Dst: ZoneName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1137,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1138,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1138,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1143,1
    - Dst: setDomainMetadata
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1143,1
    - Dst: ZoneName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1143,1
    - Dst: std::vector<std::string>
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1143,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1144,1
    - Dst: setDomainMetadata
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1144,1
    - Dst: ZoneName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1144,1
    - Dst: std::vector<std::string>
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1144,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1145,1
    - Dst: setDomainMetadata
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1145,1
    - Dst: ZoneName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1145,1
    - Dst: std::vector<std::string>
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1145,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1151,1
    - Dst: getDomainMetadata
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1151,1
    - Dst: ZoneName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1151,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1152,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1152,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1153,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1153,1
    - Dst: std::vector::clear
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1154,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1155,1
    - Dst: getDomainMetadata
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1155,1
    - Dst: ZoneName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1155,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1156,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1156,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1157,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1157,1
    - Dst: std::vector::clear
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1158,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1159,1
    - Dst: getDomainMetadata
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1159,1
    - Dst: ZoneName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1159,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1160,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1160,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1161,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1161,1
    - Dst: find
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1166,1
    - Dst: std::tuple
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1166,1
    - Dst: ZoneName
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1166,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1167,1
    - Dst: end
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1167,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1168,1
    - Dst: d_values::size
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1168,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1169,1
    - Dst: d_values::at
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1169,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1170,1
    - Dst: d_values::at
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1170,1
    - Dst: UeberBackend::UeberBackend
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1174,1
    - Dst: testFunction
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1175,1
    - Dst: what
      Src: /src/pdns/pdns/test-ueberbackend_cc.cc:1182,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 64
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1189
      start: 1096
    functionDepth: 2
    functionLinenumber: 1096
    functionLinenumberEnd: 1189
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-ueberbackend_cc.cc
    functionUses: 0
    functionsReached:
    - SimpleBackend::SimpleDNSRecord
    - std::vector::at
    - insert
    - d_values::at
    - find
    - getDomainMetadata
    - SimpleBackend::SimpleMetaData
    - std::vector::size
    - UeberBackend::go
    - UeberBackend::UeberBackend
    - SimpleBackend::SimpleDNSZone::d_records::insert
    - BOOST_REQUIRE
    - std::make_unique<SimpleBackendFactory>
    - BOOST_REQUIRE_EQUAL
    - std::vector<std::string>
    - DNSName
    - setDomainMetadata
    - std::tuple
    - std::vector::clear
    - d_values::size
    - BackendMakers
    - what
    - end
    - BOOST_CHECK_EQUAL
    - testFunction
    - ZoneName
    - BOOST_CHECK
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_multi_backends_metadata)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: ComboAddress
      Src: /src/pdns/pdns/axfr-retriever.cc:43,1
    - Dst: pdns::isQueryLocalAddressFamilyEnabled
      Src: /src/pdns/pdns/axfr-retriever.cc:45,1
    - Dst: ResolverException
      Src: /src/pdns/pdns/axfr-retriever.cc:46,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/axfr-retriever.cc:46,1
    - Dst: toLogString
      Src: /src/pdns/pdns/axfr-retriever.cc:46,1
    - Dst: pdns::getQueryLocalAddress
      Src: /src/pdns/pdns/axfr-retriever.cc:48,1
    - Dst: makeQuerySocket
      Src: /src/pdns/pdns/axfr-retriever.cc:52,1
    - Dst: ResolverException
      Src: /src/pdns/pdns/axfr-retriever.cc:54,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/axfr-retriever.cc:54,1
    - Dst: AXFRRetriever::connect
      Src: /src/pdns/pdns/axfr-retriever.cc:57,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/axfr-retriever.cc:62,1
    - Dst: dns_random_uint16
      Src: /src/pdns/pdns/axfr-retriever.cc:62,1
    - Dst: name::empty
      Src: /src/pdns/pdns/axfr-retriever.cc:64,1
    - Dst: time
      Src: /src/pdns/pdns/axfr-retriever.cc:71,1
    - Dst: ntohs
      Src: /src/pdns/pdns/axfr-retriever.cc:73,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/axfr-retriever.cc:73,1
    - Dst: addTSIG
      Src: /src/pdns/pdns/axfr-retriever.cc:75,1
    - Dst: htons
      Src: /src/pdns/pdns/axfr-retriever.cc:78,1
    - Dst: vector::size
      Src: /src/pdns/pdns/axfr-retriever.cc:78,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/axfr-retriever.cc:80,1
    - Dst: vector::data
      Src: /src/pdns/pdns/axfr-retriever.cc:82,1
    - Dst: vector::size
      Src: /src/pdns/pdns/axfr-retriever.cc:83,1
    - Dst: Utility::writev
      Src: /src/pdns/pdns/axfr-retriever.cc:85,1
    - Dst: ResolverException
      Src: /src/pdns/pdns/axfr-retriever.cc:87,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/axfr-retriever.cc:87,1
    - Dst: stringerror
      Src: /src/pdns/pdns/axfr-retriever.cc:87,1
    - Dst: vector::size
      Src: /src/pdns/pdns/axfr-retriever.cc:88,1
    - Dst: ResolverException
      Src: /src/pdns/pdns/axfr-retriever.cc:89,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/axfr-retriever.cc:89,1
    - Dst: waitForData
      Src: /src/pdns/pdns/axfr-retriever.cc:92,1
    - Dst: ResolverException
      Src: /src/pdns/pdns/axfr-retriever.cc:95,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/axfr-retriever.cc:95,1
    - Dst: ResolverException
      Src: /src/pdns/pdns/axfr-retriever.cc:97,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/axfr-retriever.cc:97,1
    - Dst: stringerror
      Src: /src/pdns/pdns/axfr-retriever.cc:97,1
    - Dst: close
      Src: /src/pdns/pdns/axfr-retriever.cc:101,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 49
    argCount: 7
    argNames:
    - slog
    - ' remote'
    - ' domain'
    - ' tsigConf'
    - laddr
    - maxReceivedBytes
    - timeout
    argTypes:
    - Logr::log_t
    - ComboAddress
    - ZoneName
    - TSIGTriplet
    - ComboAddress*
    - size_t
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 32
    functionDepth: 1
    functionLinenumber: 32
    functionLinenumberEnd: 105
    functionName: AXFRRetriever::AXFRRetriever
    functionSourceFile: /src/pdns/pdns/axfr-retriever.cc
    functionUses: 0
    functionsReached:
    - reinterpret_cast<char*>
    - toLogString
    - ntohs
    - stringerror
    - dns_random_uint16
    - name::empty
    - time
    - DNSPacketWriter::getHeader
    - ResolverException
    - vector::data
    - htons
    - pdns::getQueryLocalAddress
    - Utility::writev
    - toStringWithPort
    - ComboAddress
    - makeQuerySocket
    - addTSIG
    - AXFRRetriever::connect
    - waitForData
    - vector::size
    - pdns::isQueryLocalAddressFamilyEnabled
    - close
    linkageType: ''
    returnType: void
    signature: "void AXFRRetriever::AXFRRetriever(Logr::log_t slog,\n                             const
      ComboAddress& remote,\n                             const ZoneName& domain,\n
      \                            const TSIGTriplet& tsigConf,\n                             const
      ComboAddress* laddr,\n                             size_t maxReceivedBytes,\n
      \                            uint16_t timeout)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: close
      Src: /src/pdns/pdns/axfr-retriever.cc:109,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 107
    functionDepth: 0
    functionLinenumber: 107
    functionLinenumberEnd: 110
    functionName: AXFRRetriever::~AXFRRetriever()
    functionSourceFile: /src/pdns/pdns/axfr-retriever.cc
    functionUses: 0
    functionsReached:
    - close
    linkageType: ''
    returnType: void
    signature: void AXFRRetriever::~AXFRRetriever()
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: AXFRRetriever::getLength
      Src: /src/pdns/pdns/axfr-retriever.cc:120,1
    - Dst: ResolverException
      Src: /src/pdns/pdns/axfr-retriever.cc:122,1
    - Dst: ResolverException
      Src: /src/pdns/pdns/axfr-retriever.cc:125,1
    - Dst: AXFRRetriever::timeoutReadn
      Src: /src/pdns/pdns/axfr-retriever.cc:127,1
    - Dst: data
      Src: /src/pdns/pdns/axfr-retriever.cc:132,1
    - Dst: ResolverException
      Src: /src/pdns/pdns/axfr-retriever.cc:136,1
    - Dst: RCode::to_s
      Src: /src/pdns/pdns/axfr-retriever.cc:136,1
    - Dst: ResolverException
      Src: /src/pdns/pdns/axfr-retriever.cc:140,1
    - Dst: check
      Src: /src/pdns/pdns/axfr-retriever.cc:143,1
    - Dst: std::string
      Src: /src/pdns/pdns/axfr-retriever.cc:143,1
    - Dst: data
      Src: /src/pdns/pdns/axfr-retriever.cc:143,1
    - Dst: parseResult
      Src: /src/pdns/pdns/axfr-retriever.cc:146,1
    - Dst: DNSName
      Src: /src/pdns/pdns/axfr-retriever.cc:146,1
    - Dst: vector<DNSRecord>*::clear
      Src: /src/pdns/pdns/axfr-retriever.cc:156,1
    - Dst: vector<DNSRecord>*::reserve
      Src: /src/pdns/pdns/axfr-retriever.cc:157,1
    - Dst: MOADNSParser::d_answers::size
      Src: /src/pdns/pdns/axfr-retriever.cc:157,1
    - Dst: vector<DNSRecord>*::push_back
      Src: /src/pdns/pdns/axfr-retriever.cc:164,1
    - Dst: std::move
      Src: /src/pdns/pdns/axfr-retriever.cc:164,1
    - Dst: ResolverException
      Src: /src/pdns/pdns/axfr-retriever.cc:169,1
    - Dst: what
      Src: /src/pdns/pdns/axfr-retriever.cc:169,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 38
    argCount: 3
    argNames:
    - res
    - records
    - timeout
    argTypes:
    - Resolver::res_t
    - vector<DNSRecord>*
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 173
      start: 114
    functionDepth: 1
    functionLinenumber: 114
    functionLinenumberEnd: 173
    functionName: AXFRRetriever::getChunk
    functionSourceFile: /src/pdns/pdns/axfr-retriever.cc
    functionUses: 4
    functionsReached:
    - std::move
    - parseResult
    - AXFRRetriever::timeoutReadn
    - what
    - vector<DNSRecord>*::push_back
    - DNSName
    - ResolverException
    - AXFRRetriever::getLength
    - MOADNSParser::d_answers::size
    - RCode::to_s
    - data
    - check
    - vector<DNSRecord>*::clear
    - vector<DNSRecord>*::reserve
    - std::string
    linkageType: ''
    returnType: int
    signature: int AXFRRetriever::getChunk(Resolver::res_t &res, vector<DNSRecord>*
      records, uint16_t timeout)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: time
      Src: /src/pdns/pdns/axfr-retriever.cc:177,1
    - Dst: time
      Src: /src/pdns/pdns/axfr-retriever.cc:182,1
    - Dst: ResolverException
      Src: /src/pdns/pdns/axfr-retriever.cc:184,1
    - Dst: waitForData
      Src: /src/pdns/pdns/axfr-retriever.cc:186,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/axfr-retriever.cc:186,1
    - Dst: ResolverException
      Src: /src/pdns/pdns/axfr-retriever.cc:188,1
    - Dst: stringerror
      Src: /src/pdns/pdns/axfr-retriever.cc:188,1
    - Dst: ResolverException
      Src: /src/pdns/pdns/axfr-retriever.cc:191,1
    - Dst: recv
      Src: /src/pdns/pdns/axfr-retriever.cc:194,1
    - Dst: at
      Src: /src/pdns/pdns/axfr-retriever.cc:194,1
    - Dst: ResolverException
      Src: /src/pdns/pdns/axfr-retriever.cc:196,1
    - Dst: stringerror
      Src: /src/pdns/pdns/axfr-retriever.cc:196,1
    - Dst: ResolverException
      Src: /src/pdns/pdns/axfr-retriever.cc:199,1
    - Dst: static_cast<uint16_t>
      Src: /src/pdns/pdns/axfr-retriever.cc:201,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 19
    argCount: 2
    argNames:
    - bytes
    - timeoutsec
    argTypes:
    - uint16_t
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 203
      start: 175
    functionDepth: 0
    functionLinenumber: 175
    functionLinenumberEnd: 203
    functionName: AXFRRetriever::timeoutReadn
    functionSourceFile: /src/pdns/pdns/axfr-retriever.cc
    functionUses: 1
    functionsReached:
    - recv
    - time
    - stringerror
    - waitForData
    - ResolverException
    - static_cast<uint16_t>
    - at
    - static_cast<int>
    linkageType: ''
    returnType: void
    signature: void AXFRRetriever::timeoutReadn(uint16_t bytes, uint16_t timeoutsec)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: setNonBlocking
      Src: /src/pdns/pdns/axfr-retriever.cc:207,1
    - Dst: TCPIOHandler::connect
      Src: /src/pdns/pdns/axfr-retriever.cc:211,1
    - Dst: getSocklen
      Src: /src/pdns/pdns/axfr-retriever.cc:211,1
    - Dst: closesocket
      Src: /src/pdns/pdns/axfr-retriever.cc:213,1
    - Dst: ResolverException
      Src: /src/pdns/pdns/axfr-retriever.cc:217,1
    - Dst: ResolverException
      Src: /src/pdns/pdns/axfr-retriever.cc:220,1
    - Dst: stringerror
      Src: /src/pdns/pdns/axfr-retriever.cc:220,1
    - Dst: waitForRWData
      Src: /src/pdns/pdns/axfr-retriever.cc:226,1
    - Dst: closesocket
      Src: /src/pdns/pdns/axfr-retriever.cc:230,1
    - Dst: ResolverException
      Src: /src/pdns/pdns/axfr-retriever.cc:234,1
    - Dst: ResolverException
      Src: /src/pdns/pdns/axfr-retriever.cc:240,1
    - Dst: ResolverException
      Src: /src/pdns/pdns/axfr-retriever.cc:243,1
    - Dst: stringerror
      Src: /src/pdns/pdns/axfr-retriever.cc:243,1
    - Dst: getsockopt
      Src: /src/pdns/pdns/axfr-retriever.cc:247,1
    - Dst: ResolverException
      Src: /src/pdns/pdns/axfr-retriever.cc:248,1
    - Dst: stringerror
      Src: /src/pdns/pdns/axfr-retriever.cc:248,1
    - Dst: ResolverException
      Src: /src/pdns/pdns/axfr-retriever.cc:251,1
    - Dst: string
      Src: /src/pdns/pdns/axfr-retriever.cc:251,1
    - Dst: strerror
      Src: /src/pdns/pdns/axfr-retriever.cc:251,1
    - Dst: setBlocking
      Src: /src/pdns/pdns/axfr-retriever.cc:255,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 37
    argCount: 1
    argNames:
    - timeout
    argTypes:
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 257
      start: 205
    functionDepth: 0
    functionLinenumber: 205
    functionLinenumberEnd: 257
    functionName: AXFRRetriever::connect
    functionSourceFile: /src/pdns/pdns/axfr-retriever.cc
    functionUses: 1
    functionsReached:
    - getsockopt
    - closesocket
    - setNonBlocking
    - stringerror
    - string
    - setBlocking
    - ResolverException
    - TCPIOHandler::connect
    - strerror
    - waitForRWData
    - getSocklen
    linkageType: ''
    returnType: void
    signature: void AXFRRetriever::connect(uint16_t timeout)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: AXFRRetriever::timeoutReadn
      Src: /src/pdns/pdns/axfr-retriever.cc:261,1
    - Dst: at
      Src: /src/pdns/pdns/axfr-retriever.cc:262,1
    - Dst: at
      Src: /src/pdns/pdns/axfr-retriever.cc:262,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - timeout
    argTypes:
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 263
      start: 259
    functionDepth: 0
    functionLinenumber: 259
    functionLinenumberEnd: 263
    functionName: AXFRRetriever::getLength
    functionSourceFile: /src/pdns/pdns/axfr-retriever.cc
    functionUses: 1
    functionsReached:
    - at
    - AXFRRetriever::timeoutReadn
    linkageType: ''
    returnType: int
    signature: int AXFRRetriever::getLength(uint16_t timeout)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: open
      Src: /src/pdns/pdns/cdb.cc:35,1
    - Dst: string::c_str
      Src: /src/pdns/pdns/cdb.cc:35,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/cdb.cc:38,1
    - Dst: stringerror
      Src: /src/pdns/pdns/cdb.cc:38,1
    - Dst: memset
      Src: /src/pdns/pdns/cdb.cc:41,1
    - Dst: cdb_init
      Src: /src/pdns/pdns/cdb.cc:42,1
    - Dst: close
      Src: /src/pdns/pdns/cdb.cc:45,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/cdb.cc:47,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/cdb.cc:47,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 1
    argNames:
    - cdbfile
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 33
    functionDepth: 0
    functionLinenumber: 33
    functionLinenumberEnd: 49
    functionName: CDB::CDB
    functionSourceFile: /src/pdns/pdns/cdb.cc
    functionUses: 0
    functionsReached:
    - string::c_str
    - std::to_string
    - std::runtime_error
    - stringerror
    - cdb_init
    - open
    - memset
    - close
    linkageType: ''
    returnType: void
    signature: void CDB::CDB(const string &cdbfile)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: cdb_free
      Src: /src/pdns/pdns/cdb.cc:52,1
    - Dst: close
      Src: /src/pdns/pdns/cdb.cc:53,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 51
    functionDepth: 0
    functionLinenumber: 51
    functionLinenumberEnd: 54
    functionName: CDB::~CDB()
    functionSourceFile: /src/pdns/pdns/cdb.cc
    functionUses: 0
    functionsReached:
    - cdb_free
    - close
    linkageType: ''
    returnType: void
    signature: void CDB::~CDB()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: cdb_findinit
      Src: /src/pdns/pdns/cdb.cc:62,1
    - Dst: c_str
      Src: /src/pdns/pdns/cdb.cc:62,1
    - Dst: size
      Src: /src/pdns/pdns/cdb.cc:62,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - key
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 56
    functionDepth: 0
    functionLinenumber: 56
    functionLinenumberEnd: 63
    functionName: CDB::searchKey
    functionSourceFile: /src/pdns/pdns/cdb.cc
    functionUses: 0
    functionsReached:
    - c_str
    - cdb_findinit
    - size
    linkageType: ''
    returnType: int
    signature: int CDB::searchKey(const string &key)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: cdb_find
      Src: /src/pdns/pdns/cdb.cc:72,1
    - Dst: c_str
      Src: /src/pdns/pdns/cdb.cc:72,1
    - Dst: size
      Src: /src/pdns/pdns/cdb.cc:72,1
    - Dst: cdb_seqinit
      Src: /src/pdns/pdns/cdb.cc:74,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - key
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 65
    functionDepth: 0
    functionLinenumber: 65
    functionLinenumberEnd: 78
    functionName: CDB::searchSuffix
    functionSourceFile: /src/pdns/pdns/cdb.cc
    functionUses: 0
    functionsReached:
    - c_str
    - cdb_find
    - size
    - cdb_seqinit
    linkageType: ''
    returnType: bool
    signature: bool CDB::searchSuffix(const string &key)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: cdb_seqinit
      Src: /src/pdns/pdns/cdb.cc:82,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 80
    functionDepth: 0
    functionLinenumber: 80
    functionLinenumberEnd: 83
    functionName: CDB::searchAll
    functionSourceFile: /src/pdns/pdns/cdb.cc
    functionUses: 0
    functionsReached:
    - cdb_seqinit
    linkageType: ''
    returnType: void
    signature: void CDB::searchAll()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: cdb_findnext
      Src: /src/pdns/pdns/cdb.cc:88,1
    - Dst: cdb_seqnext
      Src: /src/pdns/pdns/cdb.cc:90,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 85
    functionDepth: 0
    functionLinenumber: 85
    functionLinenumberEnd: 93
    functionName: CDB::moveToNext
    functionSourceFile: /src/pdns/pdns/cdb.cc
    functionUses: 0
    functionsReached:
    - cdb_findnext
    - cdb_seqnext
    linkageType: ''
    returnType: bool
    signature: bool CDB::moveToNext()
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: CDB::moveToNext
      Src: /src/pdns/pdns/cdb.cc:96,1
    - Dst: cdb_keypos
      Src: /src/pdns/pdns/cdb.cc:100,1
    - Dst: cdb_keylen
      Src: /src/pdns/pdns/cdb.cc:101,1
    - Dst: std::string::resize
      Src: /src/pdns/pdns/cdb.cc:104,1
    - Dst: cdb_read
      Src: /src/pdns/pdns/cdb.cc:105,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/cdb.cc:107,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/cdb.cc:107,1
    - Dst: strstr
      Src: /src/pdns/pdns/cdb.cc:111,1
    - Dst: const_cast<char*>
      Src: /src/pdns/pdns/cdb.cc:111,1
    - Dst: std::string::c_str
      Src: /src/pdns/pdns/cdb.cc:111,1
    - Dst: c_str
      Src: /src/pdns/pdns/cdb.cc:111,1
    - Dst: cdb_datapos
      Src: /src/pdns/pdns/cdb.cc:117,1
    - Dst: cdb_datalen
      Src: /src/pdns/pdns/cdb.cc:118,1
    - Dst: std::string::resize
      Src: /src/pdns/pdns/cdb.cc:120,1
    - Dst: cdb_read
      Src: /src/pdns/pdns/cdb.cc:121,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/cdb.cc:123,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/cdb.cc:123,1
    - Dst: std::move
      Src: /src/pdns/pdns/cdb.cc:126,1
    - Dst: std::move
      Src: /src/pdns/pdns/cdb.cc:126,1
    - Dst: clear
      Src: /src/pdns/pdns/cdb.cc:132,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 27
    argCount: 1
    argNames:
    - value
    argTypes:
    - pair<string, string>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 136
      start: 95
    functionDepth: 1
    functionLinenumber: 95
    functionLinenumberEnd: 136
    functionName: CDB::readNext
    functionSourceFile: /src/pdns/pdns/cdb.cc
    functionUses: 0
    functionsReached:
    - std::move
    - strstr
    - const_cast<char*>
    - std::to_string
    - std::runtime_error
    - cdb_datalen
    - std::string::c_str
    - std::string::resize
    - cdb_datapos
    - CDB::moveToNext
    - clear
    - cdb_keypos
    - c_str
    - cdb_keylen
    - cdb_read
    linkageType: ''
    returnType: bool
    signature: bool CDB::readNext(pair<string, string> &value)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: cdb_findinit
      Src: /src/pdns/pdns/cdb.cc:143,1
    - Dst: string::c_str
      Src: /src/pdns/pdns/cdb.cc:143,1
    - Dst: string::size
      Src: /src/pdns/pdns/cdb.cc:143,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/cdb.cc:145,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/cdb.cc:145,1
    - Dst: cdb_findnext
      Src: /src/pdns/pdns/cdb.cc:148,1
    - Dst: cdb_datapos
      Src: /src/pdns/pdns/cdb.cc:149,1
    - Dst: cdb_datalen
      Src: /src/pdns/pdns/cdb.cc:150,1
    - Dst: std::string::resize
      Src: /src/pdns/pdns/cdb.cc:152,1
    - Dst: cdb_read
      Src: /src/pdns/pdns/cdb.cc:153,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/cdb.cc:155,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/cdb.cc:155,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/cdb.cc:157,1
    - Dst: std::move
      Src: /src/pdns/pdns/cdb.cc:157,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 1
    argNames:
    - key
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 161
      start: 138
    functionDepth: 1
    functionLinenumber: 138
    functionLinenumberEnd: 161
    functionName: CDB::findall
    functionSourceFile: /src/pdns/pdns/cdb.cc
    functionUses: 0
    functionsReached:
    - string::c_str
    - std::move
    - vector::push_back
    - string::size
    - cdb_findinit
    - std::to_string
    - std::runtime_error
    - cdb_datalen
    - cdb_findnext
    - std::string::resize
    - cdb_datapos
    - cdb_read
    linkageType: ''
    returnType: vector<string>
    signature: vector<string> CDB::findall(string &key)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: cdb_find
      Src: /src/pdns/pdns/cdb.cc:165,1
    - Dst: c_str
      Src: /src/pdns/pdns/cdb.cc:165,1
    - Dst: size
      Src: /src/pdns/pdns/cdb.cc:165,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/cdb.cc:167,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/cdb.cc:167,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - ' key'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 175
      start: 163
    functionDepth: 0
    functionLinenumber: 163
    functionLinenumberEnd: 175
    functionName: CDB::keyExists
    functionSourceFile: /src/pdns/pdns/cdb.cc
    functionUses: 0
    functionsReached:
    - std::to_string
    - std::runtime_error
    - cdb_find
    - size
    - c_str
    linkageType: ''
    returnType: bool
    signature: bool CDB::keyExists(const string& key)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: CDB::keyExists
      Src: /src/pdns/pdns/cdb.cc:179,1
    - Dst: cdb_datapos
      Src: /src/pdns/pdns/cdb.cc:183,1
    - Dst: cdb_datalen
      Src: /src/pdns/pdns/cdb.cc:184,1
    - Dst: resize
      Src: /src/pdns/pdns/cdb.cc:185,1
    - Dst: cdb_read
      Src: /src/pdns/pdns/cdb.cc:186,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/cdb.cc:188,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/cdb.cc:188,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - ' key'
    - ' value'
    argTypes:
    - string
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 192
      start: 177
    functionDepth: 1
    functionLinenumber: 177
    functionLinenumberEnd: 192
    functionName: CDB::findOne
    functionSourceFile: /src/pdns/pdns/cdb.cc
    functionUses: 0
    functionsReached:
    - resize
    - CDB::keyExists
    - std::runtime_error
    - cdb_datalen
    - std::to_string
    - cdb_datapos
    - cdb_read
    linkageType: ''
    returnType: bool
    signature: bool CDB::findOne(const string& key, string& value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: cdb_make_start
      Src: /src/pdns/pdns/cdb.cc:196,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - fd
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 197
      start: 194
    functionDepth: 0
    functionLinenumber: 194
    functionLinenumberEnd: 197
    functionName: CDBWriter::CDBWriter
    functionSourceFile: /src/pdns/pdns/cdb.cc
    functionUses: 0
    functionsReached:
    - cdb_make_start
    linkageType: ''
    returnType: void
    signature: void CDBWriter::CDBWriter(int fd)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CDBWriter::close
      Src: /src/pdns/pdns/cdb.cc:201,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 202
      start: 199
    functionDepth: 0
    functionLinenumber: 199
    functionLinenumberEnd: 202
    functionName: CDBWriter::~CDBWriter()
    functionSourceFile: /src/pdns/pdns/cdb.cc
    functionUses: 0
    functionsReached:
    - CDBWriter::close
    linkageType: ''
    returnType: void
    signature: void CDBWriter::~CDBWriter()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: cdb_make_finish
      Src: /src/pdns/pdns/cdb.cc:207,1
    - Dst: TCPIOHandler::close
      Src: /src/pdns/pdns/cdb.cc:208,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 211
      start: 204
    functionDepth: 0
    functionLinenumber: 204
    functionLinenumberEnd: 211
    functionName: CDBWriter::close
    functionSourceFile: /src/pdns/pdns/cdb.cc
    functionUses: 1
    functionsReached:
    - TCPIOHandler::close
    - cdb_make_finish
    linkageType: ''
    returnType: void
    signature: void CDBWriter::close()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/cdb.cc:216,1
    - Dst: cdb_make_add
      Src: /src/pdns/pdns/cdb.cc:219,1
    - Dst: c_str
      Src: /src/pdns/pdns/cdb.cc:219,1
    - Dst: size
      Src: /src/pdns/pdns/cdb.cc:219,1
    - Dst: c_str
      Src: /src/pdns/pdns/cdb.cc:219,1
    - Dst: size
      Src: /src/pdns/pdns/cdb.cc:219,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/cdb.cc:221,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/cdb.cc:221,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 2
    argNames:
    - ' key'
    - ' value'
    argTypes:
    - std::string
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 225
      start: 213
    functionDepth: 0
    functionLinenumber: 213
    functionLinenumberEnd: 225
    functionName: CDBWriter::addEntry
    functionSourceFile: /src/pdns/pdns/cdb.cc
    functionUses: 0
    functionsReached:
    - std::to_string
    - std::runtime_error
    - size
    - cdb_make_add
    - c_str
    linkageType: ''
    returnType: bool
    signature: bool CDBWriter::addEntry(const std::string& key, const std::string&
      value)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: time
      Src: /src/pdns/pdns/cachecleaner.hh:36,1
    - Dst: size
      Src: /src/pdns/pdns/cachecleaner.hh:38,1
    - Dst: template get<S>
      Src: /src/pdns/pdns/cachecleaner.hh:44,1
    - Dst: begin
      Src: /src/pdns/pdns/cachecleaner.hh:53,1
    - Dst: end
      Src: /src/pdns/pdns/cachecleaner.hh:53,1
    - Dst: auto::isStale
      Src: /src/pdns/pdns/cachecleaner.hh:54,1
    - Dst: erase
      Src: /src/pdns/pdns/cachecleaner.hh:55,1
    - Dst: begin
      Src: /src/pdns/pdns/cachecleaner.hh:74,1
    - Dst: end
      Src: /src/pdns/pdns/cachecleaner.hh:75,1
    - Dst: erase
      Src: /src/pdns/pdns/cachecleaner.hh:76,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 22
    argCount: 2
    argNames:
    - ' collection'
    - maxCached
    argTypes:
    - T
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 34
    functionDepth: 0
    functionLinenumber: 34
    functionLinenumberEnd: 78
    functionName: pruneCollection
    functionSourceFile: /src/pdns/pdns/cachecleaner.hh
    functionUses: 1
    functionsReached:
    - time
    - end
    - size
    - template get<S>
    - begin
    - erase
    - auto::isStale
    linkageType: ''
    returnType: void
    signature: void pruneCollection(T& collection, size_t maxCached, size_t scanFraction
      = 1000)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: template get<S>
      Src: /src/pdns/pdns/cachecleaner.hh:84,1
    - Dst: template project<S>
      Src: /src/pdns/pdns/cachecleaner.hh:85,1
    - Dst: relocate
      Src: /src/pdns/pdns/cachecleaner.hh:87,1
    - Dst: begin
      Src: /src/pdns/pdns/cachecleaner.hh:87,1
    - Dst: relocate
      Src: /src/pdns/pdns/cachecleaner.hh:90,1
    - Dst: end
      Src: /src/pdns/pdns/cachecleaner.hh:90,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - ' collection'
    - ' iter'
    - front
    argTypes:
    - T
    - typename T::iterator
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 82
    functionDepth: 0
    functionLinenumber: 82
    functionLinenumberEnd: 92
    functionName: moveCacheItemToFrontOrBack
    functionSourceFile: /src/pdns/pdns/cachecleaner.hh
    functionUses: 0
    functionsReached:
    - end
    - template get<S>
    - template project<S>
    - relocate
    - begin
    linkageType: ''
    returnType: void
    signature: void moveCacheItemToFrontOrBack(T& collection, typename T::iterator&
      iter, bool front)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: moveCacheItemToFrontOrBack
      Src: /src/pdns/pdns/cachecleaner.hh:97,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' collection'
    - ' iter'
    argTypes:
    - T
    - typename T::iterator
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 95
    functionDepth: 0
    functionLinenumber: 95
    functionLinenumberEnd: 98
    functionName: moveCacheItemToFront
    functionSourceFile: /src/pdns/pdns/cachecleaner.hh
    functionUses: 0
    functionsReached:
    - moveCacheItemToFrontOrBack
    linkageType: ''
    returnType: void
    signature: void moveCacheItemToFront(T& collection, typename T::iterator& iter)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: moveCacheItemToFrontOrBack
      Src: /src/pdns/pdns/cachecleaner.hh:103,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' collection'
    - ' iter'
    argTypes:
    - T
    - typename T::iterator
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 104
      start: 101
    functionDepth: 0
    functionLinenumber: 101
    functionLinenumberEnd: 104
    functionName: moveCacheItemToBack
    functionSourceFile: /src/pdns/pdns/cachecleaner.hh
    functionUses: 2
    functionsReached:
    - moveCacheItemToFrontOrBack
    linkageType: ''
    returnType: void
    signature: void moveCacheItemToBack(T& collection, typename T::iterator& iter)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: time
      Src: /src/pdns/pdns/cachecleaner.hh:110,1
    - Dst: d_map::write_lock
      Src: /src/pdns/pdns/cachecleaner.hh:113,1
    - Dst: auto::size
      Src: /src/pdns/pdns/cachecleaner.hh:115,1
    - Dst: boost::multi_index::get<S>
      Src: /src/pdns/pdns/cachecleaner.hh:118,1
    - Dst: begin
      Src: /src/pdns/pdns/cachecleaner.hh:119,1
    - Dst: end
      Src: /src/pdns/pdns/cachecleaner.hh:119,1
    - Dst: erase
      Src: /src/pdns/pdns/cachecleaner.hh:121,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 1
    argNames:
    - ' maps'
    argTypes:
    - std::vector<T>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 132
      start: 107
    functionDepth: 0
    functionLinenumber: 107
    functionLinenumberEnd: 132
    functionName: pruneLockedCollectionsVector
    functionSourceFile: /src/pdns/pdns/cachecleaner.hh
    functionUses: 2
    functionsReached:
    - d_map::write_lock
    - time
    - end
    - boost::multi_index::get<S>
    - begin
    - erase
    - auto::size
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t pruneLockedCollectionsVector(std::vector<T>& maps)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: std::max
      Src: /src/pdns/pdns/cachecleaner.hh:145,1
    - Dst: size
      Src: /src/pdns/pdns/cachecleaner.hh:151,1
    - Dst: lock
      Src: /src/pdns/pdns/cachecleaner.hh:158,1
    - Dst: auto::d_map::size
      Src: /src/pdns/pdns/cachecleaner.hh:159,1
    - Dst: std::ceil
      Src: /src/pdns/pdns/cachecleaner.hh:160,1
    - Dst: auto::invalidate
      Src: /src/pdns/pdns/cachecleaner.hh:161,1
    - Dst: boost::multi_index::get<S>
      Src: /src/pdns/pdns/cachecleaner.hh:162,1
    - Dst: begin
      Src: /src/pdns/pdns/cachecleaner.hh:165,1
    - Dst: end
      Src: /src/pdns/pdns/cachecleaner.hh:165,1
    - Dst: auto::isStale
      Src: /src/pdns/pdns/cachecleaner.hh:166,1
    - Dst: auto::preRemoval
      Src: /src/pdns/pdns/cachecleaner.hh:167,1
    - Dst: erase
      Src: /src/pdns/pdns/cachecleaner.hh:168,1
    - Dst: decEntriesCount
      Src: /src/pdns/pdns/cachecleaner.hh:170,1
    - Dst: lock
      Src: /src/pdns/pdns/cachecleaner.hh:214,1
    - Dst: auto::d_map::size
      Src: /src/pdns/pdns/cachecleaner.hh:215,1
    - Dst: std::round
      Src: /src/pdns/pdns/cachecleaner.hh:217,1
    - Dst: static_cast<double>
      Src: /src/pdns/pdns/cachecleaner.hh:217,1
    - Dst: auto::invalidate
      Src: /src/pdns/pdns/cachecleaner.hh:223,1
    - Dst: boost::multi_index::get<S>
      Src: /src/pdns/pdns/cachecleaner.hh:224,1
    - Dst: begin
      Src: /src/pdns/pdns/cachecleaner.hh:226,1
    - Dst: end
      Src: /src/pdns/pdns/cachecleaner.hh:226,1
    - Dst: auto::preRemoval
      Src: /src/pdns/pdns/cachecleaner.hh:227,1
    - Dst: erase
      Src: /src/pdns/pdns/cachecleaner.hh:228,1
    - Dst: decEntriesCount
      Src: /src/pdns/pdns/cachecleaner.hh:229,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 47
    argCount: 4
    argNames:
    - now
    - ' maps'
    - maxCached
    - cacheSize
    argTypes:
    - time_t
    - std::vector<T>
    - uint64_t
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 237
      start: 135
    functionDepth: 0
    functionLinenumber: 135
    functionLinenumberEnd: 237
    functionName: pruneMutexCollectionsVector
    functionSourceFile: /src/pdns/pdns/cachecleaner.hh
    functionUses: 0
    functionsReached:
    - static_cast<double>
    - std::ceil
    - decEntriesCount
    - auto::d_map::size
    - end
    - size
    - lock
    - auto::preRemoval
    - std::round
    - auto::invalidate
    - boost::multi_index::get<S>
    - begin
    - std::max
    - erase
    - auto::isStale
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t pruneMutexCollectionsVector(time_t now, std::vector<T>& maps,
      uint64_t maxCached, uint64_t cacheSize)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: d_map::write_lock
      Src: /src/pdns/pdns/cachecleaner.hh:245,1
    - Dst: auto::size
      Src: /src/pdns/pdns/cachecleaner.hh:246,1
    - Dst: auto::clear
      Src: /src/pdns/pdns/cachecleaner.hh:247,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ' maps'
    argTypes:
    - std::vector<T>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 251
      start: 240
    functionDepth: 1
    functionLinenumber: 240
    functionLinenumberEnd: 251
    functionName: purgeLockedCollectionsVector
    functionSourceFile: /src/pdns/pdns/cachecleaner.hh
    functionUses: 7
    functionsReached:
    - d_map::write_lock
    - auto::clear
    - auto::size
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t purgeLockedCollectionsVector(std::vector<T>& maps)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::string::resize
      Src: /src/pdns/pdns/cachecleaner.hh:258,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/cachecleaner.hh:258,1
    - Dst: d_map::write_lock
      Src: /src/pdns/pdns/cachecleaner.hh:261,1
    - Dst: boost::multi_index::get<N>
      Src: /src/pdns/pdns/cachecleaner.hh:262,1
    - Dst: lower_bound
      Src: /src/pdns/pdns/cachecleaner.hh:263,1
    - Dst: end
      Src: /src/pdns/pdns/cachecleaner.hh:266,1
    - Dst: auto::qname::isPartOf
      Src: /src/pdns/pdns/cachecleaner.hh:267,1
    - Dst: erase
      Src: /src/pdns/pdns/cachecleaner.hh:272,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 2
    argNames:
    - ' maps'
    - ' match'
    argTypes:
    - std::vector<T>
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 276
      start: 254
    functionDepth: 1
    functionLinenumber: 254
    functionLinenumberEnd: 276
    functionName: purgeLockedCollectionsVector
    functionSourceFile: /src/pdns/pdns/cachecleaner.hh
    functionUses: 7
    functionsReached:
    - d_map::write_lock
    - lower_bound
    - end
    - auto::qname::isPartOf
    - std::string::resize
    - boost::multi_index::get<N>
    - std::string::size
    - erase
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t purgeLockedCollectionsVector(std::vector<T>& maps, const std::string&
      match)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: d_map::write_lock
      Src: /src/pdns/pdns/cachecleaner.hh:282,1
    - Dst: boost::multi_index::get<N>
      Src: /src/pdns/pdns/cachecleaner.hh:283,1
    - Dst: equal_range
      Src: /src/pdns/pdns/cachecleaner.hh:284,1
    - Dst: distance
      Src: /src/pdns/pdns/cachecleaner.hh:286,1
    - Dst: erase
      Src: /src/pdns/pdns/cachecleaner.hh:287,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - ' shard'
    - ' qname'
    argTypes:
    - T
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 291
      start: 279
    functionDepth: 0
    functionLinenumber: 279
    functionLinenumberEnd: 291
    functionName: purgeExactLockedCollection
    functionSourceFile: /src/pdns/pdns/cachecleaner.hh
    functionUses: 3
    functionsReached:
    - d_map::write_lock
    - distance
    - equal_range
    - boost::multi_index::get<N>
    - erase
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t purgeExactLockedCollection(T& shard, const DNSName& qname)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: insert
      Src: /src/pdns/pdns/cachecleaner.hh:296,1
    - Dst: moveCacheItemToBack
      Src: /src/pdns/pdns/cachecleaner.hh:298,1
    - Dst: replace
      Src: /src/pdns/pdns/cachecleaner.hh:299,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - ' index'
    - ' value'
    argTypes:
    - Index
    - typename Index::value_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 303
      start: 294
    functionDepth: 1
    functionLinenumber: 294
    functionLinenumberEnd: 303
    functionName: lruReplacingInsert
    functionSourceFile: /src/pdns/pdns/cachecleaner.hh
    functionUses: 2
    functionsReached:
    - moveCacheItemToBack
    - replace
    - insert
    linkageType: ''
    returnType: bool
    signature: bool lruReplacingInsert(Index& index, const typename Index::value_type&
      value)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: getHandle
      Src: /src/pdns/pdns/calidns.cc:70,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/calidns.cc:73,1
    - Dst: cmsgbuf_aligned::cmsgbuf_aligned
      Src: /src/pdns/pdns/calidns.cc:81,1
    - Dst: fillMSGHdr
      Src: /src/pdns/pdns/calidns.cc:82,1
    - Dst: struct iovec::struct iovec
      Src: /src/pdns/pdns/calidns.cc:82,1
    - Dst: char::char
      Src: /src/pdns/pdns/calidns.cc:82,1
    - Dst: ComboAddress::ComboAddress
      Src: /src/pdns/pdns/calidns.cc:82,1
    - Dst: cmsgbuf_aligned::cmsgbuf_aligned
      Src: /src/pdns/pdns/calidns.cc:86,1
    - Dst: fillMSGHdr
      Src: /src/pdns/pdns/calidns.cc:87,1
    - Dst: struct iovec::struct iovec
      Src: /src/pdns/pdns/calidns.cc:87,1
    - Dst: char::char
      Src: /src/pdns/pdns/calidns.cc:87,1
    - Dst: ComboAddress::ComboAddress
      Src: /src/pdns/pdns/calidns.cc:87,1
    - Dst: poll
      Src: /src/pdns/pdns/calidns.cc:93,1
    - Dst: size
      Src: /src/pdns/pdns/calidns.cc:93,1
    - Dst: unixDie
      Src: /src/pdns/pdns/calidns.cc:97,1
    - Dst: recvmmsg
      Src: /src/pdns/pdns/calidns.cc:103,1
    - Dst: struct msghdr::size
      Src: /src/pdns/pdns/calidns.cc:103,1
    - Dst: unixDie
      Src: /src/pdns/pdns/calidns.cc:105,1
    - Dst: recvmsg
      Src: /src/pdns/pdns/calidns.cc:112,1
    - Dst: unixDie
      Src: /src/pdns/pdns/calidns.cc:114,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 40
    argCount: 1
    argNames:
    - sockets
    argTypes:
    - std::shared_ptr<std::vector<std::unique_ptr<Socket>>>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 124
      start: 62
    functionDepth: 0
    functionLinenumber: 62
    functionLinenumberEnd: 124
    functionName: recvThread
    functionSourceFile: /src/pdns/pdns/calidns.cc
    functionUses: 0
    functionsReached:
    - ComboAddress::ComboAddress
    - char::char
    - struct iovec::struct iovec
    - vector::push_back
    - recvmsg
    - unixDie
    - cmsgbuf_aligned::cmsgbuf_aligned
    - getHandle
    - size
    - struct msghdr::size
    - poll
    - recvmmsg
    - fillMSGHdr
    linkageType: ''
    returnType: void
    signature: void recvThread(const std::shared_ptr<std::vector<std::unique_ptr<Socket>>>
      sockets)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: getMaskedNetwork
      Src: /src/pdns/pdns/calidns.cc:128,1
    - Dst: getBits
      Src: /src/pdns/pdns/calidns.cc:129,1
    - Dst: htonl
      Src: /src/pdns/pdns/calidns.cc:132,1
    - Dst: dns_random
      Src: /src/pdns/pdns/calidns.cc:132,1
    - Dst: dns_random_uint32
      Src: /src/pdns/pdns/calidns.cc:135,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - ' range'
    argTypes:
    - Netmask
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 139
      start: 126
    functionDepth: 0
    functionLinenumber: 126
    functionLinenumberEnd: 139
    functionName: getRandomAddressFromRange
    functionSourceFile: /src/pdns/pdns/calidns.cc
    functionUses: 0
    functionsReached:
    - dns_random_uint32
    - dns_random
    - htonl
    - getBits
    - getMaskedNetwork
    linkageType: ''
    returnType: ComboAddress
    signature: ComboAddress getRandomAddressFromRange(const Netmask& range)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: getRandomAddressFromRange
      Src: /src/pdns/pdns/calidns.cc:144,1
    - Dst: size
      Src: /src/pdns/pdns/calidns.cc:147,1
    - Dst: memcpy
      Src: /src/pdns/pdns/calidns.cc:152,1
    - Dst: at
      Src: /src/pdns/pdns/calidns.cc:152,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - ' packet'
    - ' ecsRange'
    argTypes:
    - vector<uint8_t>
    - Netmask
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 153
      start: 141
    functionDepth: 1
    functionLinenumber: 141
    functionLinenumberEnd: 153
    functionName: replaceEDNSClientSubnet
    functionSourceFile: /src/pdns/pdns/calidns.cc
    functionUses: 0
    functionsReached:
    - memcpy
    - at
    - size
    - getRandomAddressFromRange
    linkageType: ''
    returnType: void
    signature: void replaceEDNSClientSubnet(vector<uint8_t>& packet, const Netmask&
      ecsRange)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: getRandomAddressFromRange
      Src: /src/pdns/pdns/calidns.cc:160,1
    - Dst: size
      Src: /src/pdns/pdns/calidns.cc:163,1
    - Dst: memcpy
      Src: /src/pdns/pdns/calidns.cc:168,1
    - Dst: at
      Src: /src/pdns/pdns/calidns.cc:168,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - ' packet'
    - ' range'
    argTypes:
    - std::vector<uint8_t>
    - Netmask
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 169
      start: 155
    functionDepth: 1
    functionLinenumber: 155
    functionLinenumberEnd: 169
    functionName: replaceSourceIPInProxyProtocolPayload
    functionSourceFile: /src/pdns/pdns/calidns.cc
    functionUses: 0
    functionsReached:
    - memcpy
    - at
    - size
    - getRandomAddressFromRange
    linkageType: ''
    returnType: void
    signature: void replaceSourceIPInProxyProtocolPayload(std::vector<uint8_t>& packet,
      const Netmask& range)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: DTime::DTime
      Src: /src/pdns/pdns/calidns.cc:180,1
    - Dst: DTime::set
      Src: /src/pdns/pdns/calidns.cc:181,1
    - Dst: replaceEDNSClientSubnet
      Src: /src/pdns/pdns/calidns.cc:196,1
    - Dst: replaceSourceIPInProxyProtocolPayload
      Src: /src/pdns/pdns/calidns.cc:199,1
    - Dst: fillMSGHdr
      Src: /src/pdns/pdns/calidns.cc:202,1
    - Dst: size
      Src: /src/pdns/pdns/calidns.cc:202,1
    - Dst: size
      Src: /src/pdns/pdns/calidns.cc:204,1
    - Dst: getHandle
      Src: /src/pdns/pdns/calidns.cc:204,1
    - Dst: sendmsg
      Src: /src/pdns/pdns/calidns.cc:205,1
    - Dst: unixDie
      Src: /src/pdns/pdns/calidns.cc:208,1
    - Dst: DTime::udiffNoReset
      Src: /src/pdns/pdns/calidns.cc:217,1
    - Dst: nanosleep
      Src: /src/pdns/pdns/calidns.cc:220,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 25
    argCount: 7
    argNames:
    - ' sockets'
    - ' packets'
    - qps
    - dest
    - ' range'
    - ecs
    - proxyProtocol
    argTypes:
    - vector<std::unique_ptr<Socket>>
    - vector<vector<uint8_t>* >
    - uint32_t
    - ComboAddress
    - Netmask
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 224
      start: 171
    functionDepth: 2
    functionLinenumber: 171
    functionLinenumberEnd: 224
    functionName: sendPackets
    functionSourceFile: /src/pdns/pdns/calidns.cc
    functionUses: 0
    functionsReached:
    - sendmsg
    - unixDie
    - replaceSourceIPInProxyProtocolPayload
    - getHandle
    - size
    - DTime::DTime
    - DTime::udiffNoReset
    - nanosleep
    - DTime::set
    - replaceEDNSClientSubnet
    - fillMSGHdr
    linkageType: ''
    returnType: void
    signature: void sendPackets(const vector<std::unique_ptr<Socket>>& sockets, const
      vector<vector<uint8_t>* >& packets, uint32_t qps, ComboAddress dest, const Netmask&
      range, bool ecs, bool proxyProtocol)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - desc
    argTypes:
    - po::options_description
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 229
      start: 226
    functionDepth: 0
    functionLinenumber: 226
    functionLinenumberEnd: 229
    functionName: usage
    functionSourceFile: /src/pdns/pdns/calidns.cc
    functionUses: 103
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void usage(po::options_description &desc)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: std::vector::reserve
      Src: /src/pdns/pdns/calidns.cc:240,1
    - Dst: getline
      Src: /src/pdns/pdns/calidns.cc:242,1
    - Dst: Utility::trim
      Src: /src/pdns/pdns/calidns.cc:245,1
    - Dst: string::empty
      Src: /src/pdns/pdns/calidns.cc:246,1
    - Dst: string::at
      Src: /src/pdns/pdns/calidns.cc:246,1
    - Dst: std::vector::clear
      Src: /src/pdns/pdns/calidns.cc:250,1
    - Dst: stringtok
      Src: /src/pdns/pdns/calidns.cc:251,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/calidns.cc:252,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/calidns.cc:252,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/calidns.cc:257,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/calidns.cc:258,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/calidns.cc:262,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/calidns.cc:266,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/calidns.cc:267,1
    - Dst: dns_random_uint16
      Src: /src/pdns/pdns/calidns.cc:267,1
    - Dst: EDNSSubnetOpts::setSource
      Src: /src/pdns/pdns/calidns.cc:271,1
    - Dst: std::string::empty
      Src: /src/pdns/pdns/calidns.cc:271,1
    - Dst: Netmask
      Src: /src/pdns/pdns/calidns.cc:271,1
    - Dst: DNSPacketWriter::optvect_t::emplace_back
      Src: /src/pdns/pdns/calidns.cc:272,1
    - Dst: EDNSSubnetOpts::makeOptString
      Src: /src/pdns/pdns/calidns.cc:272,1
    - Dst: DNSPacketWriter::optvect_t::empty
      Src: /src/pdns/pdns/calidns.cc:275,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/calidns.cc:275,1
    - Dst: DNSPacketWriter::addOpt
      Src: /src/pdns/pdns/calidns.cc:276,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/calidns.cc:277,1
    - Dst: makeProxyHeader
      Src: /src/pdns/pdns/calidns.cc:281,1
    - Dst: std::string::empty
      Src: /src/pdns/pdns/calidns.cc:281,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/calidns.cc:281,1
    - Dst: vector::insert
      Src: /src/pdns/pdns/calidns.cc:282,1
    - Dst: vector::begin
      Src: /src/pdns/pdns/calidns.cc:282,1
    - Dst: auto::begin
      Src: /src/pdns/pdns/calidns.cc:282,1
    - Dst: auto::end
      Src: /src/pdns/pdns/calidns.cc:282,1
    - Dst: emplace_back
      Src: /src/pdns/pdns/calidns.cc:285,1
    - Dst: std::make_shared<vector<uint8_t>>
      Src: /src/pdns/pdns/calidns.cc:285,1
    - Dst: std::move
      Src: /src/pdns/pdns/calidns.cc:285,1
    - Dst: shuffle
      Src: /src/pdns/pdns/calidns.cc:288,1
    - Dst: begin
      Src: /src/pdns/pdns/calidns.cc:288,1
    - Dst: end
      Src: /src/pdns/pdns/calidns.cc:288,1
    - Dst: pdns::dns_random_engine
      Src: /src/pdns/pdns/calidns.cc:288,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 32
    argCount: 6
    argNames:
    - ' queryFile'
    - ' unknown'
    - useRangeFromFile
    - wantRecursion
    - addECS
    - addProxyProtocol
    argTypes:
    - std::string
    - vector<std::shared_ptr<vector<uint8_t>>>
    - bool
    - bool
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 289
      start: 232
    functionDepth: 1
    functionLinenumber: 232
    functionLinenumberEnd: 289
    functionName: parseQueryFile
    functionSourceFile: /src/pdns/pdns/calidns.cc
    functionUses: 0
    functionsReached:
    - dns_random_uint16
    - getline
    - string::at
    - std::vector::at
    - auto::begin
    - emplace_back
    - DNSPacketWriter::optvect_t::emplace_back
    - vector::begin
    - stringtok
    - std::vector::size
    - string::empty
    - DNSPacketWriter::getHeader
    - shuffle
    - std::string::empty
    - std::make_shared<vector<uint8_t>>
    - begin
    - pdns::dns_random_engine
    - makeProxyHeader
    - vector::insert
    - Netmask
    - DNSPacketWriter::commit
    - EDNSSubnetOpts::setSource
    - std::vector::reserve
    - Utility::trim
    - std::vector::clear
    - ComboAddress
    - DNSPacketWriter::optvect_t::empty
    - std::move
    - end
    - DNSPacketWriter::addOpt
    - auto::end
    - EDNSSubnetOpts::makeOptString
    linkageType: ''
    returnType: void
    signature: void parseQueryFile(const std::string& queryFile, vector<std::shared_ptr<vector<uint8_t>>>&
      unknown, bool useRangeFromFile, bool wantRecursion, bool addECS, bool addProxyProtocol)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: std::vector::reserve
      Src: /src/pdns/pdns/calidns.cc:240,1
    - Dst: getline
      Src: /src/pdns/pdns/calidns.cc:242,1
    - Dst: Utility::trim
      Src: /src/pdns/pdns/calidns.cc:245,1
    - Dst: string::empty
      Src: /src/pdns/pdns/calidns.cc:246,1
    - Dst: string::at
      Src: /src/pdns/pdns/calidns.cc:246,1
    - Dst: std::vector::clear
      Src: /src/pdns/pdns/calidns.cc:250,1
    - Dst: stringtok
      Src: /src/pdns/pdns/calidns.cc:251,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/calidns.cc:252,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/calidns.cc:252,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/calidns.cc:257,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/calidns.cc:258,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/calidns.cc:262,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/calidns.cc:266,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/calidns.cc:267,1
    - Dst: dns_random_uint16
      Src: /src/pdns/pdns/calidns.cc:267,1
    - Dst: EDNSSubnetOpts::setSource
      Src: /src/pdns/pdns/calidns.cc:271,1
    - Dst: std::string::empty
      Src: /src/pdns/pdns/calidns.cc:271,1
    - Dst: Netmask
      Src: /src/pdns/pdns/calidns.cc:271,1
    - Dst: DNSPacketWriter::optvect_t::emplace_back
      Src: /src/pdns/pdns/calidns.cc:272,1
    - Dst: EDNSSubnetOpts::makeOptString
      Src: /src/pdns/pdns/calidns.cc:272,1
    - Dst: DNSPacketWriter::optvect_t::empty
      Src: /src/pdns/pdns/calidns.cc:275,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/calidns.cc:275,1
    - Dst: DNSPacketWriter::addOpt
      Src: /src/pdns/pdns/calidns.cc:276,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/calidns.cc:277,1
    - Dst: makeProxyHeader
      Src: /src/pdns/pdns/calidns.cc:281,1
    - Dst: std::string::empty
      Src: /src/pdns/pdns/calidns.cc:281,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/calidns.cc:281,1
    - Dst: vector::insert
      Src: /src/pdns/pdns/calidns.cc:282,1
    - Dst: vector::begin
      Src: /src/pdns/pdns/calidns.cc:282,1
    - Dst: auto::begin
      Src: /src/pdns/pdns/calidns.cc:282,1
    - Dst: auto::end
      Src: /src/pdns/pdns/calidns.cc:282,1
    - Dst: emplace_back
      Src: /src/pdns/pdns/calidns.cc:285,1
    - Dst: std::make_shared<vector<uint8_t>>
      Src: /src/pdns/pdns/calidns.cc:285,1
    - Dst: std::move
      Src: /src/pdns/pdns/calidns.cc:285,1
    - Dst: shuffle
      Src: /src/pdns/pdns/calidns.cc:288,1
    - Dst: begin
      Src: /src/pdns/pdns/calidns.cc:288,1
    - Dst: end
      Src: /src/pdns/pdns/calidns.cc:288,1
    - Dst: pdns::dns_random_engine
      Src: /src/pdns/pdns/calidns.cc:288,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 32
    argCount: 6
    argNames:
    - ' queryFile'
    - ' unknown'
    - useRangeFromFile
    - wantRecursion
    - addECS
    - addProxyProtocol
    argTypes:
    - std::string
    - vector<std::shared_ptr<vector<uint8_t>>>
    - bool
    - bool
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 289
      start: 232
    functionDepth: 1
    functionLinenumber: 232
    functionLinenumberEnd: 289
    functionName: parseQueryFile
    functionSourceFile: /src/pdns/pdns/calidns.cc
    functionUses: 0
    functionsReached:
    - dns_random_uint16
    - getline
    - string::at
    - std::vector::at
    - auto::begin
    - emplace_back
    - DNSPacketWriter::optvect_t::emplace_back
    - vector::begin
    - stringtok
    - std::vector::size
    - string::empty
    - DNSPacketWriter::getHeader
    - shuffle
    - std::string::empty
    - std::make_shared<vector<uint8_t>>
    - begin
    - pdns::dns_random_engine
    - makeProxyHeader
    - vector::insert
    - Netmask
    - DNSPacketWriter::commit
    - EDNSSubnetOpts::setSource
    - std::vector::reserve
    - Utility::trim
    - std::vector::clear
    - ComboAddress
    - DNSPacketWriter::optvect_t::empty
    - std::move
    - end
    - DNSPacketWriter::addOpt
    - auto::end
    - EDNSSubnetOpts::makeOptString
    linkageType: ''
    returnType: void
    signature: void parseQueryFile(const std::string& queryFile, vector<std::shared_ptr<vector<uint8_t>>>&
      unknown, bool useRangeFromFile, bool wantRecursion, bool addECS, bool addProxyProtocol)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: po::options_description::add_options
      Src: /src/pdns/pdns/calidns.cc:319,1
    - Dst: po::value<string>
      Src: /src/pdns/pdns/calidns.cc:322,1
    - Dst: po::value<string>
      Src: /src/pdns/pdns/calidns.cc:324,1
    - Dst: po::value<float>
      Src: /src/pdns/pdns/calidns.cc:326,1
    - Dst: po::value<uint32_t>
      Src: /src/pdns/pdns/calidns.cc:327,1
    - Dst: po::value<double>
      Src: /src/pdns/pdns/calidns.cc:328,1
    - Dst: po::value<string>
      Src: /src/pdns/pdns/calidns.cc:329,1
    - Dst: po::options_description::add_options
      Src: /src/pdns/pdns/calidns.cc:334,1
    - Dst: po::value<string>
      Src: /src/pdns/pdns/calidns.cc:335,1
    - Dst: po::value<string>
      Src: /src/pdns/pdns/calidns.cc:336,1
    - Dst: po::value<uint32_t>
      Src: /src/pdns/pdns/calidns.cc:337,1
    - Dst: po::value<double>
      Src: /src/pdns/pdns/calidns.cc:338,1
    - Dst: po::options_description::add
      Src: /src/pdns/pdns/calidns.cc:340,1
    - Dst: po::positional_options_description::add
      Src: /src/pdns/pdns/calidns.cc:342,1
    - Dst: po::positional_options_description::add
      Src: /src/pdns/pdns/calidns.cc:343,1
    - Dst: po::positional_options_description::add
      Src: /src/pdns/pdns/calidns.cc:344,1
    - Dst: po::positional_options_description::add
      Src: /src/pdns/pdns/calidns.cc:345,1
    - Dst: pdns::stat_t_trait::store
      Src: /src/pdns/pdns/calidns.cc:347,1
    - Dst: po::command_line_parser
      Src: /src/pdns/pdns/calidns.cc:347,1
    - Dst: pdns::channel::Notifier::notify
      Src: /src/pdns/pdns/calidns.cc:348,1
    - Dst: count
      Src: /src/pdns/pdns/calidns.cc:350,1
    - Dst: usage
      Src: /src/pdns/pdns/calidns.cc:351,1
    - Dst: count
      Src: /src/pdns/pdns/calidns.cc:355,1
    - Dst: count
      Src: /src/pdns/pdns/calidns.cc:360,1
    - Dst: count
      Src: /src/pdns/pdns/calidns.cc:360,1
    - Dst: count
      Src: /src/pdns/pdns/calidns.cc:360,1
    - Dst: count
      Src: /src/pdns/pdns/calidns.cc:360,1
    - Dst: usage
      Src: /src/pdns/pdns/calidns.cc:361,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 23
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 366
      start: 316
    functionDepth: 0
    functionLinenumber: 316
    functionLinenumberEnd: 366
    functionName: parse_options
    functionSourceFile: /src/pdns/pdns/calidns.cc
    functionUses: 0
    functionsReached:
    - po::value<double>
    - po::value<uint32_t>
    - count
    - po::value<float>
    - pdns::stat_t_trait::store
    - pdns::channel::Notifier::notify
    - usage
    - po::options_description::add
    - po::command_line_parser
    - po::value<string>
    - po::options_description::add_options
    - po::positional_options_description::add
    linkageType: ''
    returnType: std::optional<int>
    signature: std::optional<int> parse_options(int argc, char** argv)
  - BBCount: 32
    BranchProfiles: []
    Callsites:
    - Dst: parse_options
      Src: /src/pdns/pdns/calidns.cc:371,1
    - Dst: as
      Src: /src/pdns/pdns/calidns.cc:378,1
    - Dst: count
      Src: /src/pdns/pdns/calidns.cc:383,1
    - Dst: count
      Src: /src/pdns/pdns/calidns.cc:384,1
    - Dst: count
      Src: /src/pdns/pdns/calidns.cc:385,1
    - Dst: count
      Src: /src/pdns/pdns/calidns.cc:386,1
    - Dst: count
      Src: /src/pdns/pdns/calidns.cc:387,1
    - Dst: count
      Src: /src/pdns/pdns/calidns.cc:388,1
    - Dst: as
      Src: /src/pdns/pdns/calidns.cc:390,1
    - Dst: as
      Src: /src/pdns/pdns/calidns.cc:396,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/calidns.cc:398,1
    - Dst: count
      Src: /src/pdns/pdns/calidns.cc:399,1
    - Dst: as
      Src: /src/pdns/pdns/calidns.cc:400,1
    - Dst: as
      Src: /src/pdns/pdns/calidns.cc:403,1
    - Dst: Netmask::Netmask
      Src: /src/pdns/pdns/calidns.cc:414,1
    - Dst: count
      Src: /src/pdns/pdns/calidns.cc:415,1
    - Dst: count
      Src: /src/pdns/pdns/calidns.cc:415,1
    - Dst: count
      Src: /src/pdns/pdns/calidns.cc:417,1
    - Dst: Netmask
      Src: /src/pdns/pdns/calidns.cc:418,1
    - Dst: as
      Src: /src/pdns/pdns/calidns.cc:418,1
    - Dst: Netmask
      Src: /src/pdns/pdns/calidns.cc:421,1
    - Dst: as
      Src: /src/pdns/pdns/calidns.cc:421,1
    - Dst: Netmask::empty
      Src: /src/pdns/pdns/calidns.cc:424,1
    - Dst: Netmask::isIPv4
      Src: /src/pdns/pdns/calidns.cc:425,1
    - Dst: count
      Src: /src/pdns/pdns/calidns.cc:431,1
    - Dst: Netmask::toString
      Src: /src/pdns/pdns/calidns.cc:432,1
    - Dst: Netmask::toString
      Src: /src/pdns/pdns/calidns.cc:435,1
    - Dst: count
      Src: /src/pdns/pdns/calidns.cc:441,1
    - Dst: sched_setscheduler
      Src: /src/pdns/pdns/calidns.cc:455,1
    - Dst: stringerror
      Src: /src/pdns/pdns/calidns.cc:457,1
    - Dst: reportAllTypes
      Src: /src/pdns/pdns/calidns.cc:462,1
    - Dst: parseQueryFile
      Src: /src/pdns/pdns/calidns.cc:465,1
    - Dst: as
      Src: /src/pdns/pdns/calidns.cc:465,1
    - Dst: vector::size
      Src: /src/pdns/pdns/calidns.cc:468,1
    - Dst: std::make_shared<std::vector<std::unique_ptr<Socket>>>
      Src: /src/pdns/pdns/calidns.cc:471,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/calidns.cc:474,1
    - Dst: as
      Src: /src/pdns/pdns/calidns.cc:474,1
    - Dst: make_unique<Socket>
      Src: /src/pdns/pdns/calidns.cc:481,1
    - Dst: setSocketSendBuffer
      Src: /src/pdns/pdns/calidns.cc:484,1
    - Dst: auto::getHandle
      Src: /src/pdns/pdns/calidns.cc:484,1
    - Dst: what
      Src: /src/pdns/pdns/calidns.cc:488,1
    - Dst: setSocketReceiveBuffer
      Src: /src/pdns/pdns/calidns.cc:492,1
    - Dst: auto::getHandle
      Src: /src/pdns/pdns/calidns.cc:492,1
    - Dst: what
      Src: /src/pdns/pdns/calidns.cc:496,1
    - Dst: auto::emplace_back
      Src: /src/pdns/pdns/calidns.cc:500,1
    - Dst: std::move
      Src: /src/pdns/pdns/calidns.cc:500,1
    - Dst: std::thread::detach
      Src: /src/pdns/pdns/calidns.cc:505,1
    - Dst: count
      Src: /src/pdns/pdns/calidns.cc:511,1
    - Dst: ofstream::open
      Src: /src/pdns/pdns/calidns.cc:512,1
    - Dst: as
      Src: /src/pdns/pdns/calidns.cc:512,1
    - Dst: as
      Src: /src/pdns/pdns/calidns.cc:514,1
    - Dst: stringerror
      Src: /src/pdns/pdns/calidns.cc:514,1
    - Dst: vector::size
      Src: /src/pdns/pdns/calidns.cc:533,1
    - Dst: vector::size
      Src: /src/pdns/pdns/calidns.cc:536,1
    - Dst: vector::size
      Src: /src/pdns/pdns/calidns.cc:537,1
    - Dst: vector::back
      Src: /src/pdns/pdns/calidns.cc:543,1
    - Dst: vector::pop_back
      Src: /src/pdns/pdns/calidns.cc:544,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/calidns.cc:545,1
    - Dst: auto::get
      Src: /src/pdns/pdns/calidns.cc:545,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/calidns.cc:546,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/calidns.cc:549,1
    - Dst: dns_random
      Src: /src/pdns/pdns/calidns.cc:549,1
    - Dst: vector::size
      Src: /src/pdns/pdns/calidns.cc:549,1
    - Dst: get
      Src: /src/pdns/pdns/calidns.cc:549,1
    - Dst: shuffle
      Src: /src/pdns/pdns/calidns.cc:552,1
    - Dst: vector::begin
      Src: /src/pdns/pdns/calidns.cc:552,1
    - Dst: vector::end
      Src: /src/pdns/pdns/calidns.cc:552,1
    - Dst: pdns::dns_random_engine
      Src: /src/pdns/pdns/calidns.cc:552,1
    - Dst: store
      Src: /src/pdns/pdns/calidns.cc:553,1
    - Dst: DTime::DTime
      Src: /src/pdns/pdns/calidns.cc:555,1
    - Dst: DTime::set
      Src: /src/pdns/pdns/calidns.cc:556,1
    - Dst: sendPackets
      Src: /src/pdns/pdns/calidns.cc:558,1
    - Dst: DTime::udiffNoReset
      Src: /src/pdns/pdns/calidns.cc:560,1
    - Dst: vector::size
      Src: /src/pdns/pdns/calidns.cc:561,1
    - Dst: usleep
      Src: /src/pdns/pdns/calidns.cc:566,1
    - Dst: load
      Src: /src/pdns/pdns/calidns.cc:567,1
    - Dst: DTime::udiff
      Src: /src/pdns/pdns/calidns.cc:568,1
    - Dst: vector::size
      Src: /src/pdns/pdns/calidns.cc:570,1
    - Dst: load
      Src: /src/pdns/pdns/calidns.cc:576,1
    - Dst: ofstream::flush
      Src: /src/pdns/pdns/calidns.cc:577,1
    - Dst: std::max
      Src: /src/pdns/pdns/calidns.cc:598,1
    - Dst: std::max
      Src: /src/pdns/pdns/calidns.cc:600,1
    - Dst: ofstream::flush
      Src: /src/pdns/pdns/calidns.cc:605,1
    - Dst: what
      Src: /src/pdns/pdns/calidns.cc:612,1
    CyclomaticComplexity: 50
    EdgeCount: 50
    ICount: 167
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 624
      start: 368
    functionDepth: 3
    functionLinenumber: 368
    functionLinenumberEnd: 624
    functionName: main
    functionSourceFile: /src/pdns/pdns/calidns.cc
    functionUses: 24
    functionsReached:
    - usleep
    - stringerror
    - setSocketReceiveBuffer
    - Netmask::isIPv4
    - make_unique<Socket>
    - DTime::set
    - parseQueryFile
    - vector::begin
    - vector::pop_back
    - reportAllTypes
    - auto::getHandle
    - sendPackets
    - sched_setscheduler
    - DTime::DTime
    - shuffle
    - store
    - std::max
    - pdns::dns_random_engine
    - std::make_shared<std::vector<std::unique_ptr<Socket>>>
    - ofstream::flush
    - Netmask::empty
    - auto::emplace_back
    - pdns::max
    - Netmask
    - vector::push_back
    - auto::get
    - setSocketSendBuffer
    - load
    - Netmask::toString
    - DTime::udiff
    - get
    - vector::end
    - ComboAddress
    - parse_options
    - std::move
    - vector::back
    - dns_random
    - count
    - what
    - Netmask::Netmask
    - as
    - DTime::udiffNoReset
    - std::thread::detach
    - vector::size
    - ofstream::open
    linkageType: ''
    returnType: int
    signature: int main(int argc, char** argv)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' str'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 36
    functionDepth: 0
    functionLinenumber: 36
    functionLinenumberEnd: 37
    functionName: RecordTextException::RecordTextException
    functionSourceFile: /src/pdns/pdns/rcpgenerator.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void RecordTextException(const string& str)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: substr
      Src: /src/pdns/pdns/rcpgenerator.hh:72,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 71
    functionDepth: 0
    functionLinenumber: 71
    functionLinenumberEnd: 73
    functionName: RecordTextReader::getRemaining
    functionSourceFile: /src/pdns/pdns/rcpgenerator.hh
    functionUses: 0
    functionsReached:
    - substr
    linkageType: ''
    returnType: std::string
    signature: std::string getRemaining() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 81
    functionDepth: 0
    functionLinenumber: 81
    functionLinenumberEnd: 83
    functionName: RecordTextReader::consumeRemaining
    functionSourceFile: /src/pdns/pdns/rcpgenerator.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void consumeRemaining() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 120
    functionDepth: 0
    functionLinenumber: 120
    functionLinenumberEnd: 120
    functionName: RecordTextWriter::eof
    functionSourceFile: /src/pdns/pdns/rcpgenerator.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool eof() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 124
      start: 122
    functionDepth: 0
    functionLinenumber: 122
    functionLinenumberEnd: 124
    functionName: RecordTextWriter::getRemaining
    functionSourceFile: /src/pdns/pdns/rcpgenerator.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string getRemaining() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 132
      start: 130
    functionDepth: 0
    functionLinenumber: 130
    functionLinenumberEnd: 132
    functionName: RecordTextWriter::consumeRemaining
    functionSourceFile: /src/pdns/pdns/rcpgenerator.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void consumeRemaining() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/rcpgenerator.cc:40,1
    - Dst: std::move
      Src: /src/pdns/pdns/rcpgenerator.cc:40,1
    - Dst: empty
      Src: /src/pdns/pdns/rcpgenerator.cc:43,1
    - Dst: dns_isspace
      Src: /src/pdns/pdns/rcpgenerator.cc:43,1
    - Dst: begin
      Src: /src/pdns/pdns/rcpgenerator.cc:43,1
    - Dst: dns_isspace
      Src: /src/pdns/pdns/rcpgenerator.cc:43,1
    - Dst: rbegin
      Src: /src/pdns/pdns/rcpgenerator.cc:43,1
    - Dst: boost::trim_if
      Src: /src/pdns/pdns/rcpgenerator.cc:44,1
    - Dst: size
      Src: /src/pdns/pdns/rcpgenerator.cc:45,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 4
    argCount: 2
    argNames:
    - str
    - zone
    argTypes:
    - string
    - ZoneName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 39
    functionDepth: 0
    functionLinenumber: 39
    functionLinenumberEnd: 46
    functionName: RecordTextReader::RecordTextReader
    functionSourceFile: /src/pdns/pdns/rcpgenerator.cc
    functionUses: 0
    functionsReached:
    - std::move
    - rbegin
    - boost::trim_if
    - size
    - begin
    - empty
    - dns_isspace
    linkageType: ''
    returnType: void
    signature: void RecordTextReader::RecordTextReader(string str, ZoneName zone)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: RecordTextReader::xfr64BitInt
      Src: /src/pdns/pdns/rcpgenerator.cc:51,1
    - Dst: RecordTextException
      Src: /src/pdns/pdns/rcpgenerator.cc:53,1
    - Dst: substr
      Src: /src/pdns/pdns/rcpgenerator.cc:53,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/rcpgenerator.cc:53,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - val
    argTypes:
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 48
    functionDepth: 0
    functionLinenumber: 48
    functionLinenumberEnd: 55
    functionName: RecordTextReader::xfr48BitInt
    functionSourceFile: /src/pdns/pdns/rcpgenerator.cc
    functionUses: 0
    functionsReached:
    - RecordTextException
    - substr
    - std::to_string
    - RecordTextReader::xfr64BitInt
    linkageType: ''
    returnType: void
    signature: void RecordTextReader::xfr48BitInt(uint64_t &val)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: RecordTextReader::skipSpaces
      Src: /src/pdns/pdns/rcpgenerator.cc:58,1
    - Dst: length
      Src: /src/pdns/pdns/rcpgenerator.cc:61,1
    - Dst: isxdigit
      Src: /src/pdns/pdns/rcpgenerator.cc:61,1
    - Dst: at
      Src: /src/pdns/pdns/rcpgenerator.cc:61,1
    - Dst: at
      Src: /src/pdns/pdns/rcpgenerator.cc:61,1
    - Dst: substr
      Src: /src/pdns/pdns/rcpgenerator.cc:66,1
    - Dst: inet_pton
      Src: /src/pdns/pdns/rcpgenerator.cc:68,1
    - Dst: string::c_str
      Src: /src/pdns/pdns/rcpgenerator.cc:68,1
    - Dst: RecordTextException
      Src: /src/pdns/pdns/rcpgenerator.cc:69,1
    - Dst: substr
      Src: /src/pdns/pdns/rcpgenerator.cc:69,1
    - Dst: std::memcpy
      Src: /src/pdns/pdns/rcpgenerator.cc:72,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 9
    argCount: 1
    argNames:
    - ' val'
    argTypes:
    - NodeOrLocatorID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 57
    functionDepth: 0
    functionLinenumber: 57
    functionLinenumberEnd: 74
    functionName: RecordTextReader::xfrNodeOrLocatorID
    functionSourceFile: /src/pdns/pdns/rcpgenerator.cc
    functionUses: 1
    functionsReached:
    - inet_pton
    - length
    - string::c_str
    - isxdigit
    - std::memcpy
    - RecordTextReader::skipSpaces
    - RecordTextException
    - substr
    - at
    linkageType: ''
    returnType: void
    signature: void RecordTextReader::xfrNodeOrLocatorID(NodeOrLocatorID& val)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: RecordTextReader::skipSpaces
      Src: /src/pdns/pdns/rcpgenerator.cc:78,1
    - Dst: isdigit
      Src: /src/pdns/pdns/rcpgenerator.cc:80,1
    - Dst: at
      Src: /src/pdns/pdns/rcpgenerator.cc:80,1
    - Dst: RecordTextException
      Src: /src/pdns/pdns/rcpgenerator.cc:81,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/rcpgenerator.cc:81,1
    - Dst: std::stoull
      Src: /src/pdns/pdns/rcpgenerator.cc:84,1
    - Dst: substr
      Src: /src/pdns/pdns/rcpgenerator.cc:84,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - val
    argTypes:
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 76
    functionDepth: 0
    functionLinenumber: 76
    functionLinenumberEnd: 87
    functionName: RecordTextReader::xfr64BitInt
    functionSourceFile: /src/pdns/pdns/rcpgenerator.cc
    functionUses: 1
    functionsReached:
    - isdigit
    - std::to_string
    - RecordTextReader::skipSpaces
    - RecordTextException
    - substr
    - std::stoull
    - at
    linkageType: ''
    returnType: void
    signature: void RecordTextReader::xfr64BitInt(uint64_t &val)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: RecordTextReader::skipSpaces
      Src: /src/pdns/pdns/rcpgenerator.cc:92,1
    - Dst: isdigit
      Src: /src/pdns/pdns/rcpgenerator.cc:94,1
    - Dst: at
      Src: /src/pdns/pdns/rcpgenerator.cc:94,1
    - Dst: RecordTextException
      Src: /src/pdns/pdns/rcpgenerator.cc:95,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/rcpgenerator.cc:95,1
    - Dst: pdns::checked_stoi<uint32_t>
      Src: /src/pdns/pdns/rcpgenerator.cc:98,1
    - Dst: c_str
      Src: /src/pdns/pdns/rcpgenerator.cc:98,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - val
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 90
    functionDepth: 0
    functionLinenumber: 90
    functionLinenumberEnd: 101
    functionName: RecordTextReader::xfr32BitInt
    functionSourceFile: /src/pdns/pdns/rcpgenerator.cc
    functionUses: 1
    functionsReached:
    - isdigit
    - std::to_string
    - c_str
    - RecordTextReader::skipSpaces
    - RecordTextException
    - pdns::checked_stoi<uint32_t>
    - at
    linkageType: ''
    returnType: void
    signature: void RecordTextReader::xfr32BitInt(uint32_t &val)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/pdns/pdns/rcpgenerator.cc:106,1
    - Dst: RecordTextReader::xfr64BitInt
      Src: /src/pdns/pdns/rcpgenerator.cc:109,1
    - Dst: sscanf
      Src: /src/pdns/pdns/rcpgenerator.cc:121,1
    - Dst: ostringstream::str
      Src: /src/pdns/pdns/rcpgenerator.cc:121,1
    - Dst: RecordTextException
      Src: /src/pdns/pdns/rcpgenerator.cc:124,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/rcpgenerator.cc:124,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/rcpgenerator.cc:124,1
    - Dst: RecordTextException
      Src: /src/pdns/pdns/rcpgenerator.cc:131,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/rcpgenerator.cc:131,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/rcpgenerator.cc:131,1
    - Dst: Utility::timegm
      Src: /src/pdns/pdns/rcpgenerator.cc:137,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 17
    argCount: 1
    argNames:
    - val
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 138
      start: 103
    functionDepth: 0
    functionLinenumber: 103
    functionLinenumberEnd: 138
    functionName: RecordTextReader::xfrTime
    functionSourceFile: /src/pdns/pdns/rcpgenerator.cc
    functionUses: 0
    functionsReached:
    - std::to_string
    - sscanf
    - memset
    - RecordTextException
    - ostringstream::str
    - Utility::timegm
    - RecordTextReader::xfr64BitInt
    linkageType: ''
    returnType: void
    signature: void RecordTextReader::xfrTime(uint32_t &val)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: RecordTextReader::skipSpaces
      Src: /src/pdns/pdns/rcpgenerator.cc:142,1
    - Dst: isdigit
      Src: /src/pdns/pdns/rcpgenerator.cc:144,1
    - Dst: at
      Src: /src/pdns/pdns/rcpgenerator.cc:144,1
    - Dst: RecordTextException
      Src: /src/pdns/pdns/rcpgenerator.cc:145,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/rcpgenerator.cc:145,1
    - Dst: at
      Src: /src/pdns/pdns/rcpgenerator.cc:153,1
    - Dst: RecordTextException
      Src: /src/pdns/pdns/rcpgenerator.cc:155,1
    - Dst: string
      Src: /src/pdns/pdns/rcpgenerator.cc:155,1
    - Dst: RecordTextException
      Src: /src/pdns/pdns/rcpgenerator.cc:162,1
    - Dst: string
      Src: /src/pdns/pdns/rcpgenerator.cc:162,1
    - Dst: isdigit
      Src: /src/pdns/pdns/rcpgenerator.cc:164,1
    - Dst: at
      Src: /src/pdns/pdns/rcpgenerator.cc:164,1
    - Dst: at
      Src: /src/pdns/pdns/rcpgenerator.cc:167,1
    - Dst: RecordTextException
      Src: /src/pdns/pdns/rcpgenerator.cc:169,1
    - Dst: dns_isspace
      Src: /src/pdns/pdns/rcpgenerator.cc:171,1
    - Dst: at
      Src: /src/pdns/pdns/rcpgenerator.cc:171,1
    - Dst: at
      Src: /src/pdns/pdns/rcpgenerator.cc:171,1
    - Dst: RecordTextException
      Src: /src/pdns/pdns/rcpgenerator.cc:174,1
    - Dst: string
      Src: /src/pdns/pdns/rcpgenerator.cc:174,1
    - Dst: at
      Src: /src/pdns/pdns/rcpgenerator.cc:174,1
    - Dst: length
      Src: /src/pdns/pdns/rcpgenerator.cc:177,1
    - Dst: RecordTextException
      Src: /src/pdns/pdns/rcpgenerator.cc:181,1
    - Dst: string
      Src: /src/pdns/pdns/rcpgenerator.cc:181,1
    - Dst: RecordTextException
      Src: /src/pdns/pdns/rcpgenerator.cc:183,1
    - Dst: string
      Src: /src/pdns/pdns/rcpgenerator.cc:183,1
    - Dst: ntohl
      Src: /src/pdns/pdns/rcpgenerator.cc:186,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 39
    argCount: 1
    argNames:
    - val
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 187
      start: 140
    functionDepth: 0
    functionLinenumber: 140
    functionLinenumberEnd: 187
    functionName: RecordTextReader::xfrIP
    functionSourceFile: /src/pdns/pdns/rcpgenerator.cc
    functionUses: 0
    functionsReached:
    - length
    - ntohl
    - isdigit
    - std::to_string
    - RecordTextReader::skipSpaces
    - string
    - RecordTextException
    - dns_isspace
    - at
    linkageType: ''
    returnType: void
    signature: void RecordTextReader::xfrIP(uint32_t &val)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: RecordTextReader::skipSpaces
      Src: /src/pdns/pdns/rcpgenerator.cc:194,1
    - Dst: length
      Src: /src/pdns/pdns/rcpgenerator.cc:199,1
    - Dst: isxdigit
      Src: /src/pdns/pdns/rcpgenerator.cc:199,1
    - Dst: at
      Src: /src/pdns/pdns/rcpgenerator.cc:199,1
    - Dst: at
      Src: /src/pdns/pdns/rcpgenerator.cc:199,1
    - Dst: at
      Src: /src/pdns/pdns/rcpgenerator.cc:199,1
    - Dst: RecordTextException
      Src: /src/pdns/pdns/rcpgenerator.cc:203,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/rcpgenerator.cc:203,1
    - Dst: substr
      Src: /src/pdns/pdns/rcpgenerator.cc:206,1
    - Dst: inet_pton
      Src: /src/pdns/pdns/rcpgenerator.cc:208,1
    - Dst: string::c_str
      Src: /src/pdns/pdns/rcpgenerator.cc:208,1
    - Dst: RecordTextException
      Src: /src/pdns/pdns/rcpgenerator.cc:209,1
    - Dst: std::string
      Src: /src/pdns/pdns/rcpgenerator.cc:212,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 11
    argCount: 1
    argNames:
    - val
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 215
      start: 190
    functionDepth: 0
    functionLinenumber: 190
    functionLinenumberEnd: 215
    functionName: RecordTextReader::xfrIP6
    functionSourceFile: /src/pdns/pdns/rcpgenerator.cc
    functionUses: 1
    functionsReached:
    - inet_pton
    - length
    - string::c_str
    - isxdigit
    - std::to_string
    - RecordTextReader::skipSpaces
    - RecordTextException
    - substr
    - std::string
    - at
    linkageType: ''
    returnType: void
    signature: void RecordTextReader::xfrIP6(std::string &val)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: RecordTextReader::xfrIP
      Src: /src/pdns/pdns/rcpgenerator.cc:221,1
    - Dst: makeComboAddressFromRaw
      Src: /src/pdns/pdns/rcpgenerator.cc:222,1
    - Dst: string
      Src: /src/pdns/pdns/rcpgenerator.cc:222,1
    - Dst: RecordTextReader::xfrIP6
      Src: /src/pdns/pdns/rcpgenerator.cc:226,1
    - Dst: makeComboAddressFromRaw
      Src: /src/pdns/pdns/rcpgenerator.cc:227,1
    - Dst: RecordTextException
      Src: /src/pdns/pdns/rcpgenerator.cc:229,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - version
    - val
    argTypes:
    - uint8_t
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 230
      start: 217
    functionDepth: 0
    functionLinenumber: 217
    functionLinenumberEnd: 230
    functionName: RecordTextReader::xfrCAWithoutPort
    functionSourceFile: /src/pdns/pdns/rcpgenerator.cc
    functionUses: 0
    functionsReached:
    - RecordTextReader::xfrIP
    - RecordTextReader::xfrIP6
    - string
    - makeComboAddressFromRaw
    - RecordTextException
    linkageType: ''
    returnType: void
    signature: void RecordTextReader::xfrCAWithoutPort(uint8_t version, ComboAddress
      &val)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RecordTextReader::xfr16BitInt
      Src: /src/pdns/pdns/rcpgenerator.cc:235,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - val
    argTypes:
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 237
      start: 232
    functionDepth: 0
    functionLinenumber: 232
    functionLinenumberEnd: 237
    functionName: RecordTextReader::xfrCAPort
    functionSourceFile: /src/pdns/pdns/rcpgenerator.cc
    functionUses: 0
    functionsReached:
    - RecordTextReader::xfr16BitInt
    linkageType: ''
    returnType: void
    signature: void RecordTextReader::xfrCAPort(ComboAddress &val)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 242
      start: 239
    functionDepth: 0
    functionLinenumber: 239
    functionLinenumberEnd: 242
    functionName: RecordTextReader::eof
    functionSourceFile: /src/pdns/pdns/rcpgenerator.cc
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool RecordTextReader::eof() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: RecordTextReader::xfr32BitInt
      Src: /src/pdns/pdns/rcpgenerator.cc:248,1
    - Dst: RecordTextException
      Src: /src/pdns/pdns/rcpgenerator.cc:251,1
    - Dst: substr
      Src: /src/pdns/pdns/rcpgenerator.cc:251,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/rcpgenerator.cc:251,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - val
    argTypes:
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 253
      start: 244
    functionDepth: 0
    functionLinenumber: 244
    functionLinenumberEnd: 253
    functionName: RecordTextReader::xfr16BitInt
    functionSourceFile: /src/pdns/pdns/rcpgenerator.cc
    functionUses: 4
    functionsReached:
    - substr
    - RecordTextException
    - RecordTextReader::xfr32BitInt
    - std::to_string
    linkageType: ''
    returnType: void
    signature: void RecordTextReader::xfr16BitInt(uint16_t &val)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: RecordTextReader::xfr32BitInt
      Src: /src/pdns/pdns/rcpgenerator.cc:259,1
    - Dst: RecordTextException
      Src: /src/pdns/pdns/rcpgenerator.cc:262,1
    - Dst: substr
      Src: /src/pdns/pdns/rcpgenerator.cc:262,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/rcpgenerator.cc:262,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - val
    argTypes:
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 264
      start: 255
    functionDepth: 0
    functionLinenumber: 255
    functionLinenumberEnd: 264
    functionName: RecordTextReader::xfr8BitInt
    functionSourceFile: /src/pdns/pdns/rcpgenerator.cc
    functionUses: 2
    functionsReached:
    - substr
    - RecordTextException
    - RecordTextReader::xfr32BitInt
    - std::to_string
    linkageType: ''
    returnType: void
    signature: void RecordTextReader::xfr8BitInt(uint8_t &val)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: RecordTextReader::skipSpaces
      Src: /src/pdns/pdns/rcpgenerator.cc:269,1
    - Dst: DNSName::DNSName
      Src: /src/pdns/pdns/rcpgenerator.cc:270,1
    - Dst: dns_isspace
      Src: /src/pdns/pdns/rcpgenerator.cc:274,1
    - Dst: DNSName
      Src: /src/pdns/pdns/rcpgenerator.cc:283,1
    - Dst: std::string_view::substr
      Src: /src/pdns/pdns/rcpgenerator.cc:283,1
    - Dst: DNSName::empty
      Src: /src/pdns/pdns/rcpgenerator.cc:286,1
    - Dst: DNSName
      Src: /src/pdns/pdns/rcpgenerator.cc:287,1
    - Dst: empty
      Src: /src/pdns/pdns/rcpgenerator.cc:289,1
    - Dst: DNSName
      Src: /src/pdns/pdns/rcpgenerator.cc:290,1
    - Dst: std::move
      Src: /src/pdns/pdns/rcpgenerator.cc:292,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 2
    argNames:
    - ' val'
    - compress
    argTypes:
    - DNSName
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 293
      start: 267
    functionDepth: 0
    functionLinenumber: 267
    functionLinenumberEnd: 293
    functionName: RecordTextReader::xfrName
    functionSourceFile: /src/pdns/pdns/rcpgenerator.cc
    functionUses: 1
    functionsReached:
    - std::move
    - std::string_view::substr
    - RecordTextReader::skipSpaces
    - DNSName
    - empty
    - DNSName::empty
    - DNSName::DNSName
    - dns_isspace
    linkageType: ''
    returnType: void
    signature: void RecordTextReader::xfrName(DNSName& val, [[maybe_unused]] bool
      compress)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: dns_isspace
      Src: /src/pdns/pdns/rcpgenerator.cc:297,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 12
    argCount: 2
    argNames:
    - c
    - acceptspace
    argTypes:
    - char
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 308
      start: 295
    functionDepth: 0
    functionLinenumber: 295
    functionLinenumberEnd: 308
    functionName: isbase64
    functionSourceFile: /src/pdns/pdns/rcpgenerator.cc
    functionUses: 0
    functionsReached:
    - dns_isspace
    linkageType: ''
    returnType: bool
    signature: bool isbase64(char c, bool acceptspace)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: RecordTextReader::skipSpaces
      Src: /src/pdns/pdns/rcpgenerator.cc:312,1
    - Dst: c_str
      Src: /src/pdns/pdns/rcpgenerator.cc:314,1
    - Dst: isbase64
      Src: /src/pdns/pdns/rcpgenerator.cc:316,1
    - Dst: string::assign
      Src: /src/pdns/pdns/rcpgenerator.cc:321,1
    - Dst: c_str
      Src: /src/pdns/pdns/rcpgenerator.cc:321,1
    - Dst: c_str
      Src: /src/pdns/pdns/rcpgenerator.cc:321,1
    - Dst: boost::erase_all
      Src: /src/pdns/pdns/rcpgenerator.cc:322,1
    - Dst: clear
      Src: /src/pdns/pdns/rcpgenerator.cc:323,1
    - Dst: B64Decode
      Src: /src/pdns/pdns/rcpgenerator.cc:324,1
    - Dst: size
      Src: /src/pdns/pdns/rcpgenerator.cc:326,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/rcpgenerator.cc:326,1
    - Dst: RecordTextException
      Src: /src/pdns/pdns/rcpgenerator.cc:327,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/rcpgenerator.cc:327,1
    - Dst: size
      Src: /src/pdns/pdns/rcpgenerator.cc:327,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/rcpgenerator.cc:327,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 2
    argNames:
    - ' val'
    - len
    argTypes:
    - string
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 328
      start: 310
    functionDepth: 1
    functionLinenumber: 310
    functionLinenumberEnd: 328
    functionName: RecordTextReader::xfrBlobNoSpaces
    functionSourceFile: /src/pdns/pdns/rcpgenerator.cc
    functionUses: 0
    functionsReached:
    - string::assign
    - static_cast<size_t>
    - std::to_string
    - RecordTextReader::skipSpaces
    - B64Decode
    - size
    - RecordTextException
    - clear
    - c_str
    - boost::erase_all
    - isbase64
    linkageType: ''
    returnType: void
    signature: void RecordTextReader::xfrBlobNoSpaces(string& val, int len)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: RecordTextReader::skipSpaces
      Src: /src/pdns/pdns/rcpgenerator.cc:332,1
    - Dst: c_str
      Src: /src/pdns/pdns/rcpgenerator.cc:334,1
    - Dst: isbase64
      Src: /src/pdns/pdns/rcpgenerator.cc:336,1
    - Dst: string::assign
      Src: /src/pdns/pdns/rcpgenerator.cc:341,1
    - Dst: c_str
      Src: /src/pdns/pdns/rcpgenerator.cc:341,1
    - Dst: c_str
      Src: /src/pdns/pdns/rcpgenerator.cc:341,1
    - Dst: boost::erase_all
      Src: /src/pdns/pdns/rcpgenerator.cc:342,1
    - Dst: clear
      Src: /src/pdns/pdns/rcpgenerator.cc:343,1
    - Dst: B64Decode
      Src: /src/pdns/pdns/rcpgenerator.cc:344,1
    - Dst: size
      Src: /src/pdns/pdns/rcpgenerator.cc:346,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/rcpgenerator.cc:346,1
    - Dst: RecordTextException
      Src: /src/pdns/pdns/rcpgenerator.cc:347,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/rcpgenerator.cc:347,1
    - Dst: size
      Src: /src/pdns/pdns/rcpgenerator.cc:347,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/rcpgenerator.cc:347,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 2
    argNames:
    - ' val'
    - len
    argTypes:
    - string
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 349
      start: 330
    functionDepth: 1
    functionLinenumber: 330
    functionLinenumberEnd: 349
    functionName: RecordTextReader::xfrBlob
    functionSourceFile: /src/pdns/pdns/rcpgenerator.cc
    functionUses: 0
    functionsReached:
    - string::assign
    - static_cast<size_t>
    - std::to_string
    - RecordTextReader::skipSpaces
    - B64Decode
    - size
    - RecordTextException
    - clear
    - c_str
    - boost::erase_all
    - isbase64
    linkageType: ''
    returnType: void
    signature: void RecordTextReader::xfrBlob(string& val, int len)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: parseRFC1035CharString
      Src: /src/pdns/pdns/rcpgenerator.cc:352,1
    - Dst: substr
      Src: /src/pdns/pdns/rcpgenerator.cc:352,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - val
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 354
      start: 351
    functionDepth: 0
    functionLinenumber: 351
    functionLinenumberEnd: 354
    functionName: RecordTextReader::xfrRFC1035CharString
    functionSourceFile: /src/pdns/pdns/rcpgenerator.cc
    functionUses: 0
    functionsReached:
    - substr
    - parseRFC1035CharString
    linkageType: ''
    returnType: void
    signature: void RecordTextReader::xfrRFC1035CharString(string &val)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: parseSVCBValueList
      Src: /src/pdns/pdns/rcpgenerator.cc:357,1
    - Dst: substr
      Src: /src/pdns/pdns/rcpgenerator.cc:357,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - val
    argTypes:
    - vector<string>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 359
      start: 356
    functionDepth: 0
    functionLinenumber: 356
    functionLinenumberEnd: 359
    functionName: RecordTextReader::xfrSVCBValueList
    functionSourceFile: /src/pdns/pdns/rcpgenerator.cc
    functionUses: 0
    functionsReached:
    - substr
    - parseSVCBValueList
    linkageType: ''
    returnType: void
    signature: void RecordTextReader::xfrSVCBValueList(vector<string> &val)
  - BBCount: 45
    BranchProfiles: []
    Callsites:
    - Dst: RecordTextReader::skipSpaces
      Src: /src/pdns/pdns/rcpgenerator.cc:364,1
    - Dst: at
      Src: /src/pdns/pdns/rcpgenerator.cc:371,1
    - Dst: at
      Src: /src/pdns/pdns/rcpgenerator.cc:371,1
    - Dst: substr
      Src: /src/pdns/pdns/rcpgenerator.cc:378,1
    - Dst: SvcParam::keyFromString
      Src: /src/pdns/pdns/rcpgenerator.cc:382,1
    - Dst: RecordTextException
      Src: /src/pdns/pdns/rcpgenerator.cc:384,1
    - Dst: what
      Src: /src/pdns/pdns/rcpgenerator.cc:384,1
    - Dst: at
      Src: /src/pdns/pdns/rcpgenerator.cc:387,1
    - Dst: at
      Src: /src/pdns/pdns/rcpgenerator.cc:389,1
    - Dst: RecordTextException
      Src: /src/pdns/pdns/rcpgenerator.cc:390,1
    - Dst: at
      Src: /src/pdns/pdns/rcpgenerator.cc:397,1
    - Dst: RecordTextException
      Src: /src/pdns/pdns/rcpgenerator.cc:398,1
    - Dst: insert
      Src: /src/pdns/pdns/rcpgenerator.cc:400,1
    - Dst: SvcParam
      Src: /src/pdns/pdns/rcpgenerator.cc:400,1
    - Dst: RecordTextReader::xfrRFC1035CharString
      Src: /src/pdns/pdns/rcpgenerator.cc:408,1
    - Dst: string::empty
      Src: /src/pdns/pdns/rcpgenerator.cc:410,1
    - Dst: RecordTextException
      Src: /src/pdns/pdns/rcpgenerator.cc:411,1
    - Dst: string::size
      Src: /src/pdns/pdns/rcpgenerator.cc:413,1
    - Dst: RecordTextException
      Src: /src/pdns/pdns/rcpgenerator.cc:414,1
    - Dst: string::size
      Src: /src/pdns/pdns/rcpgenerator.cc:416,1
    - Dst: makeComboAddressFromRaw
      Src: /src/pdns/pdns/rcpgenerator.cc:417,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/rcpgenerator.cc:417,1
    - Dst: string::at
      Src: /src/pdns/pdns/rcpgenerator.cc:417,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/rcpgenerator.cc:418,1
    - Dst: RecordTextReader::xfrSVCBValueList
      Src: /src/pdns/pdns/rcpgenerator.cc:422,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/rcpgenerator.cc:426,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/rcpgenerator.cc:429,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/rcpgenerator.cc:429,1
    - Dst: vector::empty
      Src: /src/pdns/pdns/rcpgenerator.cc:432,1
    - Dst: RecordTextException
      Src: /src/pdns/pdns/rcpgenerator.cc:433,1
    - Dst: SvcParam
      Src: /src/pdns/pdns/rcpgenerator.cc:436,1
    - Dst: std::move
      Src: /src/pdns/pdns/rcpgenerator.cc:436,1
    - Dst: auto::setAutoHint
      Src: /src/pdns/pdns/rcpgenerator.cc:437,1
    - Dst: insert
      Src: /src/pdns/pdns/rcpgenerator.cc:438,1
    - Dst: std::move
      Src: /src/pdns/pdns/rcpgenerator.cc:438,1
    - Dst: RecordTextException
      Src: /src/pdns/pdns/rcpgenerator.cc:441,1
    - Dst: what
      Src: /src/pdns/pdns/rcpgenerator.cc:441,1
    - Dst: RecordTextReader::xfrRFC1035CharString
      Src: /src/pdns/pdns/rcpgenerator.cc:449,1
    - Dst: string::length
      Src: /src/pdns/pdns/rcpgenerator.cc:451,1
    - Dst: string::at
      Src: /src/pdns/pdns/rcpgenerator.cc:452,1
    - Dst: RecordTextException
      Src: /src/pdns/pdns/rcpgenerator.cc:455,1
    - Dst: RecordTextException
      Src: /src/pdns/pdns/rcpgenerator.cc:458,1
    - Dst: string::length
      Src: /src/pdns/pdns/rcpgenerator.cc:460,1
    - Dst: RecordTextException
      Src: /src/pdns/pdns/rcpgenerator.cc:461,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/rcpgenerator.cc:463,1
    - Dst: string::substr
      Src: /src/pdns/pdns/rcpgenerator.cc:463,1
    - Dst: RecordTextReader::xfrSVCBValueList
      Src: /src/pdns/pdns/rcpgenerator.cc:467,1
    - Dst: length
      Src: /src/pdns/pdns/rcpgenerator.cc:469,1
    - Dst: RecordTextException
      Src: /src/pdns/pdns/rcpgenerator.cc:470,1
    - Dst: vector::empty
      Src: /src/pdns/pdns/rcpgenerator.cc:474,1
    - Dst: RecordTextException
      Src: /src/pdns/pdns/rcpgenerator.cc:475,1
    - Dst: empty
      Src: /src/pdns/pdns/rcpgenerator.cc:478,1
    - Dst: RecordTextException
      Src: /src/pdns/pdns/rcpgenerator.cc:479,1
    - Dst: insert
      Src: /src/pdns/pdns/rcpgenerator.cc:482,1
    - Dst: SvcParam
      Src: /src/pdns/pdns/rcpgenerator.cc:482,1
    - Dst: std::move
      Src: /src/pdns/pdns/rcpgenerator.cc:482,1
    - Dst: RecordTextReader::xfrRFC1035CharString
      Src: /src/pdns/pdns/rcpgenerator.cc:488,1
    - Dst: string::empty
      Src: /src/pdns/pdns/rcpgenerator.cc:489,1
    - Dst: RecordTextException
      Src: /src/pdns/pdns/rcpgenerator.cc:490,1
    - Dst: string::length
      Src: /src/pdns/pdns/rcpgenerator.cc:492,1
    - Dst: RecordTextException
      Src: /src/pdns/pdns/rcpgenerator.cc:493,1
    - Dst: string::length
      Src: /src/pdns/pdns/rcpgenerator.cc:496,1
    - Dst: string::at
      Src: /src/pdns/pdns/rcpgenerator.cc:497,1
    - Dst: string::at
      Src: /src/pdns/pdns/rcpgenerator.cc:498,1
    - Dst: std::set::insert
      Src: /src/pdns/pdns/rcpgenerator.cc:499,1
    - Dst: SvcParam::SvcParamKey
      Src: /src/pdns/pdns/rcpgenerator.cc:499,1
    - Dst: insert
      Src: /src/pdns/pdns/rcpgenerator.cc:501,1
    - Dst: SvcParam
      Src: /src/pdns/pdns/rcpgenerator.cc:501,1
    - Dst: std::move
      Src: /src/pdns/pdns/rcpgenerator.cc:501,1
    - Dst: RecordTextReader::xfrSVCBValueList
      Src: /src/pdns/pdns/rcpgenerator.cc:505,1
    - Dst: vector::empty
      Src: /src/pdns/pdns/rcpgenerator.cc:506,1
    - Dst: RecordTextException
      Src: /src/pdns/pdns/rcpgenerator.cc:507,1
    - Dst: vector::begin
      Src: /src/pdns/pdns/rcpgenerator.cc:509,1
    - Dst: vector::end
      Src: /src/pdns/pdns/rcpgenerator.cc:509,1
    - Dst: insert
      Src: /src/pdns/pdns/rcpgenerator.cc:510,1
    - Dst: SvcParam
      Src: /src/pdns/pdns/rcpgenerator.cc:510,1
    - Dst: std::move
      Src: /src/pdns/pdns/rcpgenerator.cc:510,1
    - Dst: RecordTextReader::xfrRFC1035CharString
      Src: /src/pdns/pdns/rcpgenerator.cc:517,1
    - Dst: string::empty
      Src: /src/pdns/pdns/rcpgenerator.cc:518,1
    - Dst: RecordTextException
      Src: /src/pdns/pdns/rcpgenerator.cc:519,1
    - Dst: string::length
      Src: /src/pdns/pdns/rcpgenerator.cc:521,1
    - Dst: RecordTextException
      Src: /src/pdns/pdns/rcpgenerator.cc:522,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/rcpgenerator.cc:522,1
    - Dst: string::length
      Src: /src/pdns/pdns/rcpgenerator.cc:522,1
    - Dst: string::at
      Src: /src/pdns/pdns/rcpgenerator.cc:524,1
    - Dst: string::at
      Src: /src/pdns/pdns/rcpgenerator.cc:525,1
    - Dst: RecordTextReader::xfrRFC1035CharString
      Src: /src/pdns/pdns/rcpgenerator.cc:528,1
    - Dst: string::empty
      Src: /src/pdns/pdns/rcpgenerator.cc:529,1
    - Dst: RecordTextException
      Src: /src/pdns/pdns/rcpgenerator.cc:530,1
    - Dst: pdns::checked_stoi_into
      Src: /src/pdns/pdns/rcpgenerator.cc:533,1
    - Dst: RecordTextException
      Src: /src/pdns/pdns/rcpgenerator.cc:535,1
    - Dst: what
      Src: /src/pdns/pdns/rcpgenerator.cc:535,1
    - Dst: insert
      Src: /src/pdns/pdns/rcpgenerator.cc:538,1
    - Dst: SvcParam
      Src: /src/pdns/pdns/rcpgenerator.cc:538,1
    - Dst: RecordTextReader::xfrRFC1035CharString
      Src: /src/pdns/pdns/rcpgenerator.cc:544,1
    - Dst: at
      Src: /src/pdns/pdns/rcpgenerator.cc:546,1
    - Dst: RecordTextReader::xfrBlobNoSpaces
      Src: /src/pdns/pdns/rcpgenerator.cc:550,1
    - Dst: at
      Src: /src/pdns/pdns/rcpgenerator.cc:552,1
    - Dst: RecordTextException
      Src: /src/pdns/pdns/rcpgenerator.cc:553,1
    - Dst: string::empty
      Src: /src/pdns/pdns/rcpgenerator.cc:558,1
    - Dst: RecordTextException
      Src: /src/pdns/pdns/rcpgenerator.cc:559,1
    - Dst: insert
      Src: /src/pdns/pdns/rcpgenerator.cc:561,1
    - Dst: SvcParam
      Src: /src/pdns/pdns/rcpgenerator.cc:561,1
    - Dst: RecordTextReader::xfrRFC1035CharString
      Src: /src/pdns/pdns/rcpgenerator.cc:566,1
    - Dst: string::empty
      Src: /src/pdns/pdns/rcpgenerator.cc:567,1
    - Dst: RecordTextException
      Src: /src/pdns/pdns/rcpgenerator.cc:568,1
    - Dst: stringtok
      Src: /src/pdns/pdns/rcpgenerator.cc:572,1
    - Dst: vector::reserve
      Src: /src/pdns/pdns/rcpgenerator.cc:575,1
    - Dst: vector::size
      Src: /src/pdns/pdns/rcpgenerator.cc:575,1
    - Dst: pdns::checked_stoi_into
      Src: /src/pdns/pdns/rcpgenerator.cc:579,1
    - Dst: RecordTextException
      Src: /src/pdns/pdns/rcpgenerator.cc:581,1
    - Dst: vector::emplace_back
      Src: /src/pdns/pdns/rcpgenerator.cc:583,1
    - Dst: insert
      Src: /src/pdns/pdns/rcpgenerator.cc:586,1
    - Dst: SvcParam
      Src: /src/pdns/pdns/rcpgenerator.cc:586,1
    - Dst: std::move
      Src: /src/pdns/pdns/rcpgenerator.cc:586,1
    - Dst: RecordTextReader::xfrRFC1035CharString
      Src: /src/pdns/pdns/rcpgenerator.cc:591,1
    - Dst: string::empty
      Src: /src/pdns/pdns/rcpgenerator.cc:592,1
    - Dst: RecordTextException
      Src: /src/pdns/pdns/rcpgenerator.cc:593,1
    - Dst: insert
      Src: /src/pdns/pdns/rcpgenerator.cc:595,1
    - Dst: SvcParam
      Src: /src/pdns/pdns/rcpgenerator.cc:595,1
    - Dst: RecordTextReader::xfrRFC1035CharString
      Src: /src/pdns/pdns/rcpgenerator.cc:600,1
    - Dst: string::empty
      Src: /src/pdns/pdns/rcpgenerator.cc:601,1
    - Dst: RecordTextException
      Src: /src/pdns/pdns/rcpgenerator.cc:604,1
    - Dst: insert
      Src: /src/pdns/pdns/rcpgenerator.cc:606,1
    - Dst: SvcParam
      Src: /src/pdns/pdns/rcpgenerator.cc:606,1
    CyclomaticComplexity: 91
    EdgeCount: 91
    ICount: 203
    argCount: 1
    argNames:
    - ' val'
    argTypes:
    - set<SvcParam>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 611
      start: 361
    functionDepth: 1
    functionLinenumber: 361
    functionLinenumberEnd: 611
    functionName: RecordTextReader::xfrSvcParamKeyVals
    functionSourceFile: /src/pdns/pdns/rcpgenerator.cc
    functionUses: 9
    functionsReached:
    - std::to_string
    - auto::setAutoHint
    - SvcParam::SvcParamKey
    - string::at
    - string::substr
    - insert
    - vector::reserve
    - RecordTextReader::xfrSVCBValueList
    - vector::begin
    - RecordTextReader::xfrBlobNoSpaces
    - string::size
    - stringtok
    - SvcParam::keyFromString
    - string::empty
    - substr
    - std::set::insert
    - empty
    - pdns::checked_stoi_into
    - vector::clear
    - at
    - vector::push_back
    - SvcParam
    - static_cast<uint8_t>
    - vector::end
    - vector::empty
    - RecordTextException
    - RecordTextReader::xfrRFC1035CharString
    - string::length
    - ComboAddress
    - length
    - std::move
    - RecordTextReader::skipSpaces
    - what
    - makeComboAddressFromRaw
    - vector::emplace_back
    - vector::size
    linkageType: ''
    returnType: void
    signature: void RecordTextReader::xfrSvcParamKeyVals(set<SvcParam>& val)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: RecordTextException
      Src: /src/pdns/pdns/rcpgenerator.cc:622,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/rcpgenerator.cc:622,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 8
    argCount: 1
    argNames:
    - val
    argTypes:
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 623
      start: 613
    functionDepth: 0
    functionLinenumber: 613
    functionLinenumberEnd: 623
    functionName: hextodec
    functionSourceFile: /src/pdns/pdns/rcpgenerator.cc
    functionUses: 0
    functionsReached:
    - RecordTextException
    - std::to_string
    linkageType: ''
    returnType: uint8_t
    signature: uint8_t hextodec(uint8_t val)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: clear
      Src: /src/pdns/pdns/rcpgenerator.cc:628,1
    - Dst: std::string_view::length
      Src: /src/pdns/pdns/rcpgenerator.cc:629,1
    - Dst: reserve
      Src: /src/pdns/pdns/rcpgenerator.cc:632,1
    - Dst: std::string_view::length
      Src: /src/pdns/pdns/rcpgenerator.cc:632,1
    - Dst: isalnum
      Src: /src/pdns/pdns/rcpgenerator.cc:636,1
    - Dst: hextodec
      Src: /src/pdns/pdns/rcpgenerator.cc:640,1
    - Dst: hextodec
      Src: /src/pdns/pdns/rcpgenerator.cc:643,1
    - Dst: append
      Src: /src/pdns/pdns/rcpgenerator.cc:644,1
    - Dst: RecordTextException
      Src: /src/pdns/pdns/rcpgenerator.cc:650,1
    - Dst: std::string
      Src: /src/pdns/pdns/rcpgenerator.cc:650,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 22
    argCount: 2
    argNames:
    - chunk
    - ' out'
    argTypes:
    - std::string_view
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 652
      start: 626
    functionDepth: 1
    functionLinenumber: 626
    functionLinenumberEnd: 652
    functionName: HEXDecode
    functionSourceFile: /src/pdns/pdns/rcpgenerator.cc
    functionUses: 0
    functionsReached:
    - std::string_view::length
    - append
    - reserve
    - RecordTextException
    - hextodec
    - isalnum
    - clear
    - std::string
    linkageType: ''
    returnType: void
    signature: void HEXDecode(std::string_view chunk, string& out)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RecordTextReader::skipSpaces
      Src: /src/pdns/pdns/rcpgenerator.cc:656,1
    - Dst: dns_isspace
      Src: /src/pdns/pdns/rcpgenerator.cc:658,1
    - Dst: HEXDecode
      Src: /src/pdns/pdns/rcpgenerator.cc:662,1
    - Dst: std::string_view
      Src: /src/pdns/pdns/rcpgenerator.cc:662,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 2
    argNames:
    - ' val'
    - keepReading
    argTypes:
    - string
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 663
      start: 654
    functionDepth: 0
    functionLinenumber: 654
    functionLinenumberEnd: 663
    functionName: RecordTextReader::xfrHexBlob
    functionSourceFile: /src/pdns/pdns/rcpgenerator.cc
    functionUses: 2
    functionsReached:
    - std::string_view
    - HEXDecode
    - dns_isspace
    - RecordTextReader::skipSpaces
    linkageType: ''
    returnType: void
    signature: void RecordTextReader::xfrHexBlob(string& val, bool keepReading)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RecordTextReader::skipSpaces
      Src: /src/pdns/pdns/rcpgenerator.cc:667,1
    - Dst: dns_isspace
      Src: /src/pdns/pdns/rcpgenerator.cc:669,1
    - Dst: fromBase32Hex
      Src: /src/pdns/pdns/rcpgenerator.cc:673,1
    - Dst: string
      Src: /src/pdns/pdns/rcpgenerator.cc:673,1
    - Dst: c_str
      Src: /src/pdns/pdns/rcpgenerator.cc:673,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - ' val'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 674
      start: 665
    functionDepth: 0
    functionLinenumber: 665
    functionLinenumberEnd: 674
    functionName: RecordTextReader::xfrBase32HexBlob
    functionSourceFile: /src/pdns/pdns/rcpgenerator.cc
    functionUses: 1
    functionsReached:
    - RecordTextReader::skipSpaces
    - string
    - c_str
    - fromBase32Hex
    - dns_isspace
    linkageType: ''
    returnType: void
    signature: void RecordTextReader::xfrBase32HexBlob(string& val)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/rcpgenerator.cc:679,1
    - Dst: append
      Src: /src/pdns/pdns/rcpgenerator.cc:680,1
    - Dst: append
      Src: /src/pdns/pdns/rcpgenerator.cc:682,1
    - Dst: toUpper
      Src: /src/pdns/pdns/rcpgenerator.cc:682,1
    - Dst: toBase32Hex
      Src: /src/pdns/pdns/rcpgenerator.cc:682,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ' val'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 683
      start: 677
    functionDepth: 0
    functionLinenumber: 677
    functionLinenumberEnd: 683
    functionName: RecordTextWriter::xfrBase32HexBlob
    functionSourceFile: /src/pdns/pdns/rcpgenerator.cc
    functionUses: 1
    functionsReached:
    - empty
    - append
    - toUpper
    - toBase32Hex
    linkageType: ''
    returnType: void
    signature: void RecordTextWriter::xfrBase32HexBlob(const string& val)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: clear
      Src: /src/pdns/pdns/rcpgenerator.cc:688,1
    - Dst: reserve
      Src: /src/pdns/pdns/rcpgenerator.cc:689,1
    - Dst: empty
      Src: /src/pdns/pdns/rcpgenerator.cc:692,1
    - Dst: append
      Src: /src/pdns/pdns/rcpgenerator.cc:693,1
    - Dst: RecordTextReader::skipSpaces
      Src: /src/pdns/pdns/rcpgenerator.cc:696,1
    - Dst: append
      Src: /src/pdns/pdns/rcpgenerator.cc:701,1
    - Dst: append
      Src: /src/pdns/pdns/rcpgenerator.cc:711,1
    - Dst: RecordTextException
      Src: /src/pdns/pdns/rcpgenerator.cc:724,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/rcpgenerator.cc:724,1
    - Dst: append
      Src: /src/pdns/pdns/rcpgenerator.cc:736,1
    - Dst: append
      Src: /src/pdns/pdns/rcpgenerator.cc:739,1
    - Dst: RecordTextException
      Src: /src/pdns/pdns/rcpgenerator.cc:743,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 45
    argCount: 2
    argNames:
    - ' val'
    - multi
    argTypes:
    - string
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 752
      start: 686
    functionDepth: 1
    functionLinenumber: 686
    functionLinenumberEnd: 752
    functionName: RecordTextReader::xfrText
    functionSourceFile: /src/pdns/pdns/rcpgenerator.cc
    functionUses: 0
    functionsReached:
    - std::to_string
    - RecordTextReader::skipSpaces
    - append
    - reserve
    - empty
    - RecordTextException
    - clear
    linkageType: ''
    returnType: void
    signature: void RecordTextReader::xfrText(string& val, bool multi, bool /* lenField
      */)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: clear
      Src: /src/pdns/pdns/rcpgenerator.cc:756,1
    - Dst: reserve
      Src: /src/pdns/pdns/rcpgenerator.cc:757,1
    - Dst: empty
      Src: /src/pdns/pdns/rcpgenerator.cc:759,1
    - Dst: append
      Src: /src/pdns/pdns/rcpgenerator.cc:760,1
    - Dst: RecordTextReader::skipSpaces
      Src: /src/pdns/pdns/rcpgenerator.cc:762,1
    - Dst: append
      Src: /src/pdns/pdns/rcpgenerator.cc:763,1
    - Dst: append
      Src: /src/pdns/pdns/rcpgenerator.cc:765,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - ' val'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 767
      start: 754
    functionDepth: 1
    functionLinenumber: 754
    functionLinenumberEnd: 767
    functionName: RecordTextReader::xfrUnquotedText
    functionSourceFile: /src/pdns/pdns/rcpgenerator.cc
    functionUses: 0
    functionsReached:
    - RecordTextReader::skipSpaces
    - append
    - reserve
    - empty
    - clear
    linkageType: ''
    returnType: void
    signature: void RecordTextReader::xfrUnquotedText(string& val, bool /* lenField
      */)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RecordTextReader::skipSpaces
      Src: /src/pdns/pdns/rcpgenerator.cc:771,1
    - Dst: dns_isspace
      Src: /src/pdns/pdns/rcpgenerator.cc:773,1
    - Dst: string::assign
      Src: /src/pdns/pdns/rcpgenerator.cc:778,1
    - Dst: c_str
      Src: /src/pdns/pdns/rcpgenerator.cc:778,1
    - Dst: c_str
      Src: /src/pdns/pdns/rcpgenerator.cc:778,1
    - Dst: DNSRecordContent::TypeToNumber
      Src: /src/pdns/pdns/rcpgenerator.cc:780,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - ' val'
    argTypes:
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 781
      start: 769
    functionDepth: 1
    functionLinenumber: 769
    functionLinenumberEnd: 781
    functionName: RecordTextReader::xfrType
    functionSourceFile: /src/pdns/pdns/rcpgenerator.cc
    functionUses: 3
    functionsReached:
    - string::assign
    - RecordTextReader::skipSpaces
    - c_str
    - DNSRecordContent::TypeToNumber
    - dns_isspace
    linkageType: ''
    returnType: void
    signature: void RecordTextReader::xfrType(uint16_t& val)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: c_str
      Src: /src/pdns/pdns/rcpgenerator.cc:786,1
    - Dst: dns_isspace
      Src: /src/pdns/pdns/rcpgenerator.cc:787,1
    - Dst: RecordTextException
      Src: /src/pdns/pdns/rcpgenerator.cc:790,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 791
      start: 784
    functionDepth: 0
    functionLinenumber: 784
    functionLinenumberEnd: 791
    functionName: RecordTextReader::skipSpaces
    functionSourceFile: /src/pdns/pdns/rcpgenerator.cc
    functionUses: 14
    functionsReached:
    - c_str
    - RecordTextException
    - dns_isspace
    linkageType: ''
    returnType: void
    signature: void RecordTextReader::skipSpaces()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: clear
      Src: /src/pdns/pdns/rcpgenerator.cc:796,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ' str'
    - noDot
    argTypes:
    - string
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 798
      start: 794
    functionDepth: 1
    functionLinenumber: 794
    functionLinenumberEnd: 798
    functionName: RecordTextWriter::RecordTextWriter
    functionSourceFile: /src/pdns/pdns/rcpgenerator.cc
    functionUses: 0
    functionsReached:
    - clear
    linkageType: ''
    returnType: void
    signature: void RecordTextWriter::RecordTextWriter(string& str, bool noDot)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/rcpgenerator.cc:802,1
    - Dst: append
      Src: /src/pdns/pdns/rcpgenerator.cc:803,1
    - Dst: snprintf
      Src: /src/pdns/pdns/rcpgenerator.cc:809,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 1
    argNames:
    - ' val'
    argTypes:
    - NodeOrLocatorID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 816
      start: 800
    functionDepth: 0
    functionLinenumber: 800
    functionLinenumberEnd: 816
    functionName: RecordTextWriter::xfrNodeOrLocatorID
    functionSourceFile: /src/pdns/pdns/rcpgenerator.cc
    functionUses: 1
    functionsReached:
    - empty
    - append
    - snprintf
    linkageType: ''
    returnType: void
    signature: void RecordTextWriter::xfrNodeOrLocatorID(const NodeOrLocatorID& val)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/rcpgenerator.cc:820,1
    - Dst: append
      Src: /src/pdns/pdns/rcpgenerator.cc:821,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/rcpgenerator.cc:822,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ' val'
    argTypes:
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 823
      start: 818
    functionDepth: 0
    functionLinenumber: 818
    functionLinenumberEnd: 823
    functionName: RecordTextWriter::xfr48BitInt
    functionSourceFile: /src/pdns/pdns/rcpgenerator.cc
    functionUses: 0
    functionsReached:
    - empty
    - append
    - std::to_string
    linkageType: ''
    returnType: void
    signature: void RecordTextWriter::xfr48BitInt(const uint64_t& val)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/rcpgenerator.cc:828,1
    - Dst: append
      Src: /src/pdns/pdns/rcpgenerator.cc:829,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/rcpgenerator.cc:830,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ' val'
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 831
      start: 826
    functionDepth: 0
    functionLinenumber: 826
    functionLinenumberEnd: 831
    functionName: RecordTextWriter::xfr32BitInt
    functionSourceFile: /src/pdns/pdns/rcpgenerator.cc
    functionUses: 1
    functionsReached:
    - empty
    - append
    - std::to_string
    linkageType: ''
    returnType: void
    signature: void RecordTextWriter::xfr32BitInt(const uint32_t& val)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/rcpgenerator.cc:835,1
    - Dst: append
      Src: /src/pdns/pdns/rcpgenerator.cc:836,1
    - Dst: DNSRecordContent::NumberToType
      Src: /src/pdns/pdns/rcpgenerator.cc:837,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ' val'
    argTypes:
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 838
      start: 833
    functionDepth: 0
    functionLinenumber: 833
    functionLinenumberEnd: 838
    functionName: RecordTextWriter::xfrType
    functionSourceFile: /src/pdns/pdns/rcpgenerator.cc
    functionUses: 0
    functionsReached:
    - empty
    - append
    - DNSRecordContent::NumberToType
    linkageType: ''
    returnType: void
    signature: void RecordTextWriter::xfrType(const uint16_t& val)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/rcpgenerator.cc:843,1
    - Dst: append
      Src: /src/pdns/pdns/rcpgenerator.cc:844,1
    - Dst: memcpy
      Src: /src/pdns/pdns/rcpgenerator.cc:850,1
    - Dst: append
      Src: /src/pdns/pdns/rcpgenerator.cc:870,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 22
    argCount: 1
    argNames:
    - ' val'
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 871
      start: 841
    functionDepth: 0
    functionLinenumber: 841
    functionLinenumberEnd: 871
    functionName: RecordTextWriter::xfrIP
    functionSourceFile: /src/pdns/pdns/rcpgenerator.cc
    functionUses: 0
    functionsReached:
    - empty
    - memcpy
    - append
    linkageType: ''
    returnType: void
    signature: void RecordTextWriter::xfrIP(const uint32_t& val)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/rcpgenerator.cc:878,1
    - Dst: append
      Src: /src/pdns/pdns/rcpgenerator.cc:879,1
    - Dst: copy
      Src: /src/pdns/pdns/rcpgenerator.cc:881,1
    - Dst: inet_ntop
      Src: /src/pdns/pdns/rcpgenerator.cc:883,1
    - Dst: RecordTextException
      Src: /src/pdns/pdns/rcpgenerator.cc:884,1
    - Dst: std::string
      Src: /src/pdns/pdns/rcpgenerator.cc:886,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 1
    argNames:
    - ' val'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 887
      start: 873
    functionDepth: 0
    functionLinenumber: 873
    functionLinenumberEnd: 887
    functionName: RecordTextWriter::xfrIP6
    functionSourceFile: /src/pdns/pdns/rcpgenerator.cc
    functionUses: 0
    functionsReached:
    - append
    - copy
    - inet_ntop
    - RecordTextException
    - empty
    - std::string
    linkageType: ''
    returnType: void
    signature: void RecordTextWriter::xfrIP6(const std::string& val)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/rcpgenerator.cc:891,1
    - Dst: empty
      Src: /src/pdns/pdns/rcpgenerator.cc:893,1
    - Dst: append
      Src: /src/pdns/pdns/rcpgenerator.cc:894,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - val
    argTypes:
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 897
      start: 889
    functionDepth: 0
    functionLinenumber: 889
    functionLinenumberEnd: 897
    functionName: RecordTextWriter::xfrCAWithoutPort
    functionSourceFile: /src/pdns/pdns/rcpgenerator.cc
    functionUses: 0
    functionsReached:
    - empty
    - append
    - ComboAddress::toString
    linkageType: ''
    returnType: void
    signature: void RecordTextWriter::xfrCAWithoutPort(uint8_t /* version */, ComboAddress
      &val)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RecordTextWriter::xfr16BitInt
      Src: /src/pdns/pdns/rcpgenerator.cc:901,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - val
    argTypes:
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 902
      start: 899
    functionDepth: 0
    functionLinenumber: 899
    functionLinenumberEnd: 902
    functionName: RecordTextWriter::xfrCAPort
    functionSourceFile: /src/pdns/pdns/rcpgenerator.cc
    functionUses: 0
    functionsReached:
    - RecordTextWriter::xfr16BitInt
    linkageType: ''
    returnType: void
    signature: void RecordTextWriter::xfrCAPort(ComboAddress &val)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/rcpgenerator.cc:906,1
    - Dst: append
      Src: /src/pdns/pdns/rcpgenerator.cc:907,1
    - Dst: gmtime_r
      Src: /src/pdns/pdns/rcpgenerator.cc:911,1
    - Dst: sqlstr
      Src: /src/pdns/pdns/rcpgenerator.cc:914,1
    - Dst: boost::format
      Src: /src/pdns/pdns/rcpgenerator.cc:914,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ' val'
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 915
      start: 904
    functionDepth: 1
    functionLinenumber: 904
    functionLinenumberEnd: 915
    functionName: RecordTextWriter::xfrTime
    functionSourceFile: /src/pdns/pdns/rcpgenerator.cc
    functionUses: 0
    functionsReached:
    - gmtime_r
    - append
    - sqlstr
    - boost::format
    - empty
    linkageType: ''
    returnType: void
    signature: void RecordTextWriter::xfrTime(const uint32_t& val)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RecordTextWriter::xfr32BitInt
      Src: /src/pdns/pdns/rcpgenerator.cc:920,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' val'
    argTypes:
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 921
      start: 918
    functionDepth: 0
    functionLinenumber: 918
    functionLinenumberEnd: 921
    functionName: RecordTextWriter::xfr16BitInt
    functionSourceFile: /src/pdns/pdns/rcpgenerator.cc
    functionUses: 4
    functionsReached:
    - RecordTextWriter::xfr32BitInt
    linkageType: ''
    returnType: void
    signature: void RecordTextWriter::xfr16BitInt(const uint16_t& val)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RecordTextWriter::xfr32BitInt
      Src: /src/pdns/pdns/rcpgenerator.cc:925,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' val'
    argTypes:
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 926
      start: 923
    functionDepth: 0
    functionLinenumber: 923
    functionLinenumberEnd: 926
    functionName: RecordTextWriter::xfr8BitInt
    functionSourceFile: /src/pdns/pdns/rcpgenerator.cc
    functionUses: 2
    functionsReached:
    - RecordTextWriter::xfr32BitInt
    linkageType: ''
    returnType: void
    signature: void RecordTextWriter::xfr8BitInt(const uint8_t& val)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/rcpgenerator.cc:931,1
    - Dst: append
      Src: /src/pdns/pdns/rcpgenerator.cc:932,1
    - Dst: toStringRootDot
      Src: /src/pdns/pdns/rcpgenerator.cc:935,1
    - Dst: toString
      Src: /src/pdns/pdns/rcpgenerator.cc:939,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - ' val'
    argTypes:
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 941
      start: 929
    functionDepth: 0
    functionLinenumber: 929
    functionLinenumberEnd: 941
    functionName: RecordTextWriter::xfrName
    functionSourceFile: /src/pdns/pdns/rcpgenerator.cc
    functionUses: 1
    functionsReached:
    - empty
    - append
    - toString
    - toStringRootDot
    linkageType: ''
    returnType: void
    signature: void RecordTextWriter::xfrName(const DNSName& val, bool /* unused */)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RecordTextWriter::xfrBlob
      Src: /src/pdns/pdns/rcpgenerator.cc:945,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' val'
    - size
    argTypes:
    - string
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 946
      start: 943
    functionDepth: 0
    functionLinenumber: 943
    functionLinenumberEnd: 946
    functionName: RecordTextWriter::xfrBlobNoSpaces
    functionSourceFile: /src/pdns/pdns/rcpgenerator.cc
    functionUses: 0
    functionsReached:
    - RecordTextWriter::xfrBlob
    linkageType: ''
    returnType: void
    signature: void RecordTextWriter::xfrBlobNoSpaces(const string& val, int size)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/rcpgenerator.cc:950,1
    - Dst: append
      Src: /src/pdns/pdns/rcpgenerator.cc:951,1
    - Dst: Base64Encode
      Src: /src/pdns/pdns/rcpgenerator.cc:953,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ' val'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 954
      start: 948
    functionDepth: 0
    functionLinenumber: 948
    functionLinenumberEnd: 954
    functionName: RecordTextWriter::xfrBlob
    functionSourceFile: /src/pdns/pdns/rcpgenerator.cc
    functionUses: 1
    functionsReached:
    - empty
    - append
    - Base64Encode
    linkageType: ''
    returnType: void
    signature: void RecordTextWriter::xfrBlob(const string& val, int)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/rcpgenerator.cc:958,1
    - Dst: append
      Src: /src/pdns/pdns/rcpgenerator.cc:959,1
    - Dst: empty
      Src: /src/pdns/pdns/rcpgenerator.cc:961,1
    - Dst: append
      Src: /src/pdns/pdns/rcpgenerator.cc:962,1
    - Dst: size
      Src: /src/pdns/pdns/rcpgenerator.cc:966,1
    - Dst: snprintf
      Src: /src/pdns/pdns/rcpgenerator.cc:969,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - ' val'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 972
      start: 956
    functionDepth: 0
    functionLinenumber: 956
    functionLinenumberEnd: 972
    functionName: RecordTextWriter::xfrHexBlob
    functionSourceFile: /src/pdns/pdns/rcpgenerator.cc
    functionUses: 2
    functionsReached:
    - empty
    - append
    - snprintf
    - size
    linkageType: ''
    returnType: void
    signature: void RecordTextWriter::xfrHexBlob(const string& val, bool)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: vector::reserve
      Src: /src/pdns/pdns/rcpgenerator.cc:977,1
    - Dst: vector<string>::size
      Src: /src/pdns/pdns/rcpgenerator.cc:977,1
    - Dst: find_first_of
      Src: /src/pdns/pdns/rcpgenerator.cc:979,1
    - Dst: txtEscape
      Src: /src/pdns/pdns/rcpgenerator.cc:982,1
    - Dst: string::reserve
      Src: /src/pdns/pdns/rcpgenerator.cc:984,1
    - Dst: string::size
      Src: /src/pdns/pdns/rcpgenerator.cc:984,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/rcpgenerator.cc:996,1
    - Dst: std::move
      Src: /src/pdns/pdns/rcpgenerator.cc:996,1
    - Dst: append
      Src: /src/pdns/pdns/rcpgenerator.cc:999,1
    - Dst: append
      Src: /src/pdns/pdns/rcpgenerator.cc:1001,1
    - Dst: boost::join
      Src: /src/pdns/pdns/rcpgenerator.cc:1001,1
    - Dst: append
      Src: /src/pdns/pdns/rcpgenerator.cc:1003,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 25
    argCount: 1
    argNames:
    - val
    argTypes:
    - vector<string>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1005
      start: 974
    functionDepth: 0
    functionLinenumber: 974
    functionLinenumberEnd: 1005
    functionName: RecordTextWriter::xfrSVCBValueList
    functionSourceFile: /src/pdns/pdns/rcpgenerator.cc
    functionUses: 0
    functionsReached:
    - std::move
    - string::reserve
    - string::size
    - vector::push_back
    - append
    - vector<string>::size
    - txtEscape
    - find_first_of
    - boost::join
    - vector::reserve
    linkageType: ''
    returnType: void
    signature: void RecordTextWriter::xfrSVCBValueList(const vector<string> &val)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/rcpgenerator.cc:1009,1
    - Dst: append
      Src: /src/pdns/pdns/rcpgenerator.cc:1010,1
    - Dst: append
      Src: /src/pdns/pdns/rcpgenerator.cc:1012,1
    - Dst: SvcParam::keyToString
      Src: /src/pdns/pdns/rcpgenerator.cc:1012,1
    - Dst: getKey
      Src: /src/pdns/pdns/rcpgenerator.cc:1012,1
    - Dst: getKey
      Src: /src/pdns/pdns/rcpgenerator.cc:1013,1
    - Dst: getKey
      Src: /src/pdns/pdns/rcpgenerator.cc:1013,1
    - Dst: append
      Src: /src/pdns/pdns/rcpgenerator.cc:1014,1
    - Dst: getKey
      Src: /src/pdns/pdns/rcpgenerator.cc:1017,1
    - Dst: getAutoHint
      Src: /src/pdns/pdns/rcpgenerator.cc:1024,1
    - Dst: append
      Src: /src/pdns/pdns/rcpgenerator.cc:1025,1
    - Dst: append
      Src: /src/pdns/pdns/rcpgenerator.cc:1028,1
    - Dst: caContainerToString
      Src: /src/pdns/pdns/rcpgenerator.cc:1028,1
    - Dst: getIPHints
      Src: /src/pdns/pdns/rcpgenerator.cc:1028,1
    - Dst: RecordTextWriter::xfrSVCBValueList
      Src: /src/pdns/pdns/rcpgenerator.cc:1031,1
    - Dst: getALPN
      Src: /src/pdns/pdns/rcpgenerator.cc:1031,1
    - Dst: getMandatory
      Src: /src/pdns/pdns/rcpgenerator.cc:1036,1
    - Dst: append
      Src: /src/pdns/pdns/rcpgenerator.cc:1038,1
    - Dst: append
      Src: /src/pdns/pdns/rcpgenerator.cc:1039,1
    - Dst: SvcParam::keyToString
      Src: /src/pdns/pdns/rcpgenerator.cc:1039,1
    - Dst: clear
      Src: /src/pdns/pdns/rcpgenerator.cc:1046,1
    - Dst: RecordTextWriter::xfr16BitInt
      Src: /src/pdns/pdns/rcpgenerator.cc:1047,1
    - Dst: getPort
      Src: /src/pdns/pdns/rcpgenerator.cc:1047,1
    - Dst: clear
      Src: /src/pdns/pdns/rcpgenerator.cc:1053,1
    - Dst: RecordTextWriter::xfrBlobNoSpaces
      Src: /src/pdns/pdns/rcpgenerator.cc:1054,1
    - Dst: getECH
      Src: /src/pdns/pdns/rcpgenerator.cc:1054,1
    - Dst: clear
      Src: /src/pdns/pdns/rcpgenerator.cc:1063,1
    - Dst: getTLSSupportedGroups
      Src: /src/pdns/pdns/rcpgenerator.cc:1065,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/rcpgenerator.cc:1069,1
    - Dst: std::move
      Src: /src/pdns/pdns/rcpgenerator.cc:1072,1
    - Dst: clear
      Src: /src/pdns/pdns/rcpgenerator.cc:1078,1
    - Dst: RecordTextWriter::xfrText
      Src: /src/pdns/pdns/rcpgenerator.cc:1079,1
    - Dst: getValue
      Src: /src/pdns/pdns/rcpgenerator.cc:1079,1
    - Dst: txtEscape
      Src: /src/pdns/pdns/rcpgenerator.cc:1080,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 62
    argCount: 1
    argNames:
    - ' val'
    argTypes:
    - set<SvcParam>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1084
      start: 1007
    functionDepth: 1
    functionLinenumber: 1007
    functionLinenumberEnd: 1084
    functionName: RecordTextWriter::xfrSvcParamKeyVals
    functionSourceFile: /src/pdns/pdns/rcpgenerator.cc
    functionUses: 10
    functionsReached:
    - RecordTextWriter::xfrBlobNoSpaces
    - std::to_string
    - getALPN
    - caContainerToString
    - RecordTextWriter::xfrSVCBValueList
    - getValue
    - getMandatory
    - getPort
    - RecordTextWriter::xfrText
    - append
    - txtEscape
    - clear
    - empty
    - getTLSSupportedGroups
    - getAutoHint
    - std::move
    - getIPHints
    - getKey
    - SvcParam::keyToString
    - getECH
    - RecordTextWriter::xfr16BitInt
    linkageType: ''
    returnType: void
    signature: void RecordTextWriter::xfrSvcParamKeyVals(const set<SvcParam>& val)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/rcpgenerator.cc:1088,1
    - Dst: append
      Src: /src/pdns/pdns/rcpgenerator.cc:1089,1
    - Dst: empty
      Src: /src/pdns/pdns/rcpgenerator.cc:1091,1
    - Dst: append
      Src: /src/pdns/pdns/rcpgenerator.cc:1092,1
    - Dst: append
      Src: /src/pdns/pdns/rcpgenerator.cc:1095,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - ' val'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1097
      start: 1086
    functionDepth: 0
    functionLinenumber: 1086
    functionLinenumberEnd: 1097
    functionName: RecordTextWriter::xfrText
    functionSourceFile: /src/pdns/pdns/rcpgenerator.cc
    functionUses: 1
    functionsReached:
    - empty
    - append
    linkageType: ''
    returnType: void
    signature: void RecordTextWriter::xfrText(const string& val, bool /* multi */,
      bool /* lenField */)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/rcpgenerator.cc:1101,1
    - Dst: append
      Src: /src/pdns/pdns/rcpgenerator.cc:1102,1
    - Dst: append
      Src: /src/pdns/pdns/rcpgenerator.cc:1103,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ' val'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1104
      start: 1099
    functionDepth: 0
    functionLinenumber: 1099
    functionLinenumberEnd: 1104
    functionName: RecordTextWriter::xfrUnquotedText
    functionSourceFile: /src/pdns/pdns/rcpgenerator.cc
    functionUses: 0
    functionsReached:
    - empty
    - append
    linkageType: ''
    returnType: void
    signature: void RecordTextWriter::xfrUnquotedText(const string& val, bool /* lenField
      */)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RecordTextReader::xfrInt
      Src: /src/pdns/pdns/rcpgenerator.cc:1117,1
    - Dst: RecordTextReader::xfrInt
      Src: /src/pdns/pdns/rcpgenerator.cc:1118,1
    - Dst: RecordTextReader::xfrText
      Src: /src/pdns/pdns/rcpgenerator.cc:1119,1
    - Dst: RecordTextReader::xfrText
      Src: /src/pdns/pdns/rcpgenerator.cc:1120,1
    - Dst: RecordTextReader::xfrText
      Src: /src/pdns/pdns/rcpgenerator.cc:1121,1
    - Dst: RecordTextReader::xfrName
      Src: /src/pdns/pdns/rcpgenerator.cc:1122,1
    - Dst: RecordTextWriter::xfrInt
      Src: /src/pdns/pdns/rcpgenerator.cc:1130,1
    - Dst: RecordTextWriter::xfrInt
      Src: /src/pdns/pdns/rcpgenerator.cc:1131,1
    - Dst: RecordTextWriter::xfrText
      Src: /src/pdns/pdns/rcpgenerator.cc:1132,1
    - Dst: RecordTextWriter::xfrText
      Src: /src/pdns/pdns/rcpgenerator.cc:1133,1
    - Dst: RecordTextWriter::xfrText
      Src: /src/pdns/pdns/rcpgenerator.cc:1134,1
    - Dst: RecordTextWriter::xfrName
      Src: /src/pdns/pdns/rcpgenerator.cc:1135,1
    - Dst: what
      Src: /src/pdns/pdns/rcpgenerator.cc:1142,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 19
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1143
      start: 1108
    functionDepth: 0
    functionLinenumber: 1108
    functionLinenumberEnd: 1143
    functionName: main
    functionSourceFile: /src/pdns/pdns/rcpgenerator.cc
    functionUses: 24
    functionsReached:
    - RecordTextWriter::xfrText
    - RecordTextReader::xfrName
    - RecordTextWriter::xfrInt
    - what
    - RecordTextReader::xfrInt
    - RecordTextReader::xfrText
    - RecordTextWriter::xfrName
    linkageType: ''
    returnType: int
    signature: int main(int argc, char**argv)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: DNSName::DNSName
      Src: /src/pdns/pdns/rfc2136handler.cc:71,1
    - Dst: DNSName
      Src: /src/pdns/pdns/rfc2136handler.cc:74,1
    - Dst: toBase32Hex
      Src: /src/pdns/pdns/rfc2136handler.cc:74,1
    - Dst: hashQNameWithSalt
      Src: /src/pdns/pdns/rfc2136handler.cc:74,1
    - Dst: makeRelative
      Src: /src/pdns/pdns/rfc2136handler.cc:78,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - ' ctx'
    - ' qname'
    argTypes:
    - updateContext
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 69
    functionDepth: 0
    functionLinenumber: 69
    functionLinenumberEnd: 81
    functionName: computeOrdername
    functionSourceFile: /src/pdns/pdns/rfc2136handler.cc
    functionUses: 0
    functionsReached:
    - makeRelative
    - DNSName
    - toBase32Hex
    - DNSName::DNSName
    - hashQNameWithSalt
    linkageType: ''
    returnType: DNSName
    signature: DNSName computeOrdername(const updateContext& ctx, const DNSName& qname)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: DomainInfo*::backend::lookup
      Src: /src/pdns/pdns/rfc2136handler.cc:97,1
    - Dst: QType
      Src: /src/pdns/pdns/rfc2136handler.cc:97,1
    - Dst: DomainInfo*::backend::get
      Src: /src/pdns/pdns/rfc2136handler.cc:98,1
    - Dst: DNSResourceRecord::qtype::getCode
      Src: /src/pdns/pdns/rfc2136handler.cc:99,1
    - Dst: DomainInfo*::backend::lookupEnd
      Src: /src/pdns/pdns/rfc2136handler.cc:104,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 35
    argCount: 2
    argNames:
    - ' rec'
    - info
    argTypes:
    - DNSRecord
    - DomainInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 130
      start: 84
    functionDepth: 0
    functionLinenumber: 84
    functionLinenumberEnd: 130
    functionName: checkUpdatePrerequisites
    functionSourceFile: /src/pdns/pdns/rfc2136handler.cc
    functionUses: 0
    functionsReached:
    - DomainInfo*::backend::lookup
    - DomainInfo*::backend::get
    - QType
    - DNSResourceRecord::qtype::getCode
    - DomainInfo*::backend::lookupEnd
    linkageType: ''
    returnType: int
    signature: int checkUpdatePrerequisites(const DNSRecord& rec, DomainInfo* info)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: QType
      Src: /src/pdns/pdns/rfc2136handler.cc:140,1
    - Dst: auto::isSupportedType
      Src: /src/pdns/pdns/rfc2136handler.cc:142,1
    - Dst: auto::isMetadataType
      Src: /src/pdns/pdns/rfc2136handler.cc:154,1
    - Dst: auto::getCode
      Src: /src/pdns/pdns/rfc2136handler.cc:158,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 20
    argCount: 1
    argNames:
    - ' rec'
    argTypes:
    - DNSRecord
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 163
      start: 133
    functionDepth: 0
    functionLinenumber: 133
    functionLinenumberEnd: 163
    functionName: checkUpdatePrescan
    functionSourceFile: /src/pdns/pdns/rfc2136handler.cc
    functionUses: 0
    functionsReached:
    - QType
    - auto::isSupportedType
    - auto::getCode
    - auto::isMetadataType
    linkageType: ''
    returnType: int
    signature: int checkUpdatePrescan(const DNSRecord& rec)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: QType
      Src: /src/pdns/pdns/rfc2136handler.cc:170,1
    - Dst: SLOG
      Src: /src/pdns/pdns/rfc2136handler.cc:173,1
    - Dst: auto::toString
      Src: /src/pdns/pdns/rfc2136handler.cc:173,1
    - Dst: slog::info
      Src: /src/pdns/pdns/rfc2136handler.cc:174,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/rfc2136handler.cc:174,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/rfc2136handler.cc:174,1
    - Dst: SLOG
      Src: /src/pdns/pdns/rfc2136handler.cc:179,1
    - Dst: auto::toString
      Src: /src/pdns/pdns/rfc2136handler.cc:179,1
    - Dst: slog::info
      Src: /src/pdns/pdns/rfc2136handler.cc:180,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/rfc2136handler.cc:180,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/rfc2136handler.cc:180,1
    - Dst: SLOG
      Src: /src/pdns/pdns/rfc2136handler.cc:185,1
    - Dst: auto::toString
      Src: /src/pdns/pdns/rfc2136handler.cc:185,1
    - Dst: auto::toString
      Src: /src/pdns/pdns/rfc2136handler.cc:185,1
    - Dst: slog::info
      Src: /src/pdns/pdns/rfc2136handler.cc:186,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/rfc2136handler.cc:186,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/rfc2136handler.cc:186,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 14
    argCount: 2
    argNames:
    - ' rec'
    - ' ctx'
    argTypes:
    - DNSRecord
    - updateContext
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 191
      start: 168
    functionDepth: 0
    functionLinenumber: 168
    functionLinenumberEnd: 191
    functionName: mayPerformUpdate
    functionSourceFile: /src/pdns/pdns/rfc2136handler.cc
    functionUses: 0
    functionsReached:
    - SLOG
    - Logging::Loggable
    - QType
    - slog::info
    - auto::toString
    linkageType: ''
    returnType: bool
    signature: bool mayPerformUpdate(const DNSRecord& rec, const updateContext& ctx)
  - BBCount: 37
    BranchProfiles: []
    Callsites:
    - Dst: QType
      Src: /src/pdns/pdns/rfc2136handler.cc:203,1
    - Dst: di::backend::lookup
      Src: /src/pdns/pdns/rfc2136handler.cc:205,1
    - Dst: di::backend::get
      Src: /src/pdns/pdns/rfc2136handler.cc:206,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/rfc2136handler.cc:207,1
    - Dst: vector::empty
      Src: /src/pdns/pdns/rfc2136handler.cc:209,1
    - Dst: vector::front
      Src: /src/pdns/pdns/rfc2136handler.cc:217,1
    - Dst: fillSOAData
      Src: /src/pdns/pdns/rfc2136handler.cc:218,1
    - Dst: DNSResourceRecord*::setContent
      Src: /src/pdns/pdns/rfc2136handler.cc:219,1
    - Dst: DNSRecord*::getContent
      Src: /src/pdns/pdns/rfc2136handler.cc:219,1
    - Dst: fillSOAData
      Src: /src/pdns/pdns/rfc2136handler.cc:220,1
    - Dst: rfc1982LessThan
      Src: /src/pdns/pdns/rfc2136handler.cc:221,1
    - Dst: di::backend::replaceRRSet
      Src: /src/pdns/pdns/rfc2136handler.cc:222,1
    - Dst: SLOG
      Src: /src/pdns/pdns/rfc2136handler.cc:225,1
    - Dst: auto::toString
      Src: /src/pdns/pdns/rfc2136handler.cc:225,1
    - Dst: slog::info
      Src: /src/pdns/pdns/rfc2136handler.cc:226,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/rfc2136handler.cc:226,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/rfc2136handler.cc:226,1
    - Dst: SLOG
      Src: /src/pdns/pdns/rfc2136handler.cc:229,1
    - Dst: slog::info
      Src: /src/pdns/pdns/rfc2136handler.cc:230,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/rfc2136handler.cc:230,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/rfc2136handler.cc:230,1
    - Dst: DNSRecord*::getContent
      Src: /src/pdns/pdns/rfc2136handler.cc:237,1
    - Dst: setContent
      Src: /src/pdns/pdns/rfc2136handler.cc:239,1
    - Dst: DNSRecord*::getContent
      Src: /src/pdns/pdns/rfc2136handler.cc:239,1
    - Dst: di::backend::replaceRRSet
      Src: /src/pdns/pdns/rfc2136handler.cc:244,1
    - Dst: SLOG
      Src: /src/pdns/pdns/rfc2136handler.cc:245,1
    - Dst: auto::toString
      Src: /src/pdns/pdns/rfc2136handler.cc:245,1
    - Dst: slog::info
      Src: /src/pdns/pdns/rfc2136handler.cc:246,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/rfc2136handler.cc:246,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/rfc2136handler.cc:246,1
    - Dst: SLOG
      Src: /src/pdns/pdns/rfc2136handler.cc:250,1
    - Dst: auto::toString
      Src: /src/pdns/pdns/rfc2136handler.cc:250,1
    - Dst: slog::info
      Src: /src/pdns/pdns/rfc2136handler.cc:251,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/rfc2136handler.cc:251,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/rfc2136handler.cc:251,1
    - Dst: auto::getCode
      Src: /src/pdns/pdns/rfc2136handler.cc:259,1
    - Dst: DNSRecord*::getContent
      Src: /src/pdns/pdns/rfc2136handler.cc:266,1
    - Dst: toLower
      Src: /src/pdns/pdns/rfc2136handler.cc:268,1
    - Dst: qtype::getCode
      Src: /src/pdns/pdns/rfc2136handler.cc:271,1
    - Dst: getZoneRepresentation
      Src: /src/pdns/pdns/rfc2136handler.cc:275,1
    - Dst: toLower
      Src: /src/pdns/pdns/rfc2136handler.cc:277,1
    - Dst: di::backend::replaceRRSet
      Src: /src/pdns/pdns/rfc2136handler.cc:289,1
    - Dst: SLOG
      Src: /src/pdns/pdns/rfc2136handler.cc:290,1
    - Dst: auto::toString
      Src: /src/pdns/pdns/rfc2136handler.cc:290,1
    - Dst: slog::info
      Src: /src/pdns/pdns/rfc2136handler.cc:291,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/rfc2136handler.cc:291,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/rfc2136handler.cc:291,1
    - Dst: SLOG
      Src: /src/pdns/pdns/rfc2136handler.cc:295,1
    - Dst: auto::toString
      Src: /src/pdns/pdns/rfc2136handler.cc:295,1
    - Dst: slog::info
      Src: /src/pdns/pdns/rfc2136handler.cc:296,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/rfc2136handler.cc:296,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/rfc2136handler.cc:296,1
    - Dst: vector::front
      Src: /src/pdns/pdns/rfc2136handler.cc:304,1
    - Dst: computeOrdername
      Src: /src/pdns/pdns/rfc2136handler.cc:305,1
    - Dst: di::backend::updateDNSSECOrderNameAndAuth
      Src: /src/pdns/pdns/rfc2136handler.cc:306,1
    - Dst: di::backend::updateDNSSECOrderNameAndAuth
      Src: /src/pdns/pdns/rfc2136handler.cc:309,1
    - Dst: DNSName
      Src: /src/pdns/pdns/rfc2136handler.cc:309,1
    - Dst: di::backend::updateDNSSECOrderNameAndAuth
      Src: /src/pdns/pdns/rfc2136handler.cc:311,1
    - Dst: DNSName
      Src: /src/pdns/pdns/rfc2136handler.cc:311,1
    - Dst: di::backend::updateDNSSECOrderNameAndAuth
      Src: /src/pdns/pdns/rfc2136handler.cc:312,1
    - Dst: DNSName
      Src: /src/pdns/pdns/rfc2136handler.cc:312,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/rfc2136handler.cc:315,1
    - Dst: SLOG
      Src: /src/pdns/pdns/rfc2136handler.cc:320,1
    - Dst: auto::toString
      Src: /src/pdns/pdns/rfc2136handler.cc:320,1
    - Dst: slog::info
      Src: /src/pdns/pdns/rfc2136handler.cc:321,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/rfc2136handler.cc:321,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/rfc2136handler.cc:321,1
    - Dst: insert
      Src: /src/pdns/pdns/rfc2136handler.cc:322,1
    - Dst: DNSResourceRecord::fromWire
      Src: /src/pdns/pdns/rfc2136handler.cc:323,1
    - Dst: auto::getCode
      Src: /src/pdns/pdns/rfc2136handler.cc:325,1
    - Dst: di::backend::feedRecord
      Src: /src/pdns/pdns/rfc2136handler.cc:326,1
    - Dst: DNSName
      Src: /src/pdns/pdns/rfc2136handler.cc:326,1
    - Dst: di::backend::lookup
      Src: /src/pdns/pdns/rfc2136handler.cc:341,1
    - Dst: QType
      Src: /src/pdns/pdns/rfc2136handler.cc:341,1
    - Dst: di::backend::get
      Src: /src/pdns/pdns/rfc2136handler.cc:342,1
    - Dst: insert
      Src: /src/pdns/pdns/rfc2136handler.cc:355,1
    - Dst: DNSName::chopOff
      Src: /src/pdns/pdns/rfc2136handler.cc:360,1
    - Dst: computeOrdername
      Src: /src/pdns/pdns/rfc2136handler.cc:364,1
    - Dst: di::backend::updateDNSSECOrderNameAndAuth
      Src: /src/pdns/pdns/rfc2136handler.cc:365,1
    - Dst: di::backend::updateDNSSECOrderNameAndAuth
      Src: /src/pdns/pdns/rfc2136handler.cc:367,1
    - Dst: di::backend::updateDNSSECOrderNameAndAuth
      Src: /src/pdns/pdns/rfc2136handler.cc:371,1
    - Dst: DNSName
      Src: /src/pdns/pdns/rfc2136handler.cc:371,1
    - Dst: di::backend::updateDNSSECOrderNameAndAuth
      Src: /src/pdns/pdns/rfc2136handler.cc:373,1
    - Dst: DNSName
      Src: /src/pdns/pdns/rfc2136handler.cc:373,1
    - Dst: di::backend::updateDNSSECOrderNameAndAuth
      Src: /src/pdns/pdns/rfc2136handler.cc:374,1
    - Dst: DNSName
      Src: /src/pdns/pdns/rfc2136handler.cc:374,1
    - Dst: DLOG
      Src: /src/pdns/pdns/rfc2136handler.cc:381,1
    - Dst: SLOG
      Src: /src/pdns/pdns/rfc2136handler.cc:381,1
    - Dst: slog::info
      Src: /src/pdns/pdns/rfc2136handler.cc:382,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/rfc2136handler.cc:382,1
    - Dst: clear
      Src: /src/pdns/pdns/rfc2136handler.cc:383,1
    - Dst: di::backend::listSubZone
      Src: /src/pdns/pdns/rfc2136handler.cc:385,1
    - Dst: ZoneName
      Src: /src/pdns/pdns/rfc2136handler.cc:385,1
    - Dst: di::backend::get
      Src: /src/pdns/pdns/rfc2136handler.cc:386,1
    - Dst: DNSResourceRecord::qtype::getCode
      Src: /src/pdns/pdns/rfc2136handler.cc:387,1
    - Dst: DNSResourceRecord::qtype::getCode
      Src: /src/pdns/pdns/rfc2136handler.cc:387,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/rfc2136handler.cc:388,1
    - Dst: computeOrdername
      Src: /src/pdns/pdns/rfc2136handler.cc:392,1
    - Dst: di::backend::updateDNSSECOrderNameAndAuth
      Src: /src/pdns/pdns/rfc2136handler.cc:394,1
    - Dst: di::backend::updateDNSSECOrderNameAndAuth
      Src: /src/pdns/pdns/rfc2136handler.cc:396,1
    - Dst: DNSName
      Src: /src/pdns/pdns/rfc2136handler.cc:396,1
    - Dst: di::backend::updateDNSSECOrderNameAndAuth
      Src: /src/pdns/pdns/rfc2136handler.cc:400,1
    - Dst: di::backend::updateDNSSECOrderNameAndAuth
      Src: /src/pdns/pdns/rfc2136handler.cc:403,1
    - Dst: DNSName
      Src: /src/pdns/pdns/rfc2136handler.cc:403,1
    - Dst: di::backend::updateDNSSECOrderNameAndAuth
      Src: /src/pdns/pdns/rfc2136handler.cc:404,1
    - Dst: DNSName
      Src: /src/pdns/pdns/rfc2136handler.cc:404,1
    CyclomaticComplexity: 65
    EdgeCount: 65
    ICount: 155
    argCount: 4
    argNames:
    - rec
    - ' ctx'
    - ' insnonterm'
    - ' delnonterm'
    argTypes:
    - DNSRecord*
    - updateContext
    - set<DNSName>
    - set<DNSName>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 410
      start: 198
    functionDepth: 3
    functionLinenumber: 198
    functionLinenumberEnd: 410
    functionName: performInsert
    functionSourceFile: /src/pdns/pdns/rfc2136handler.cc
    functionUses: 0
    functionsReached:
    - getZoneRepresentation
    - di::backend::lookup
    - di::backend::feedRecord
    - di::backend::replaceRRSet
    - insert
    - di::backend::listSubZone
    - auto::getCode
    - SLOG
    - DNSName::chopOff
    - Logging::Loggable
    - QType
    - slog::info
    - clear
    - vector::clear
    - vector::push_back
    - DNSResourceRecord::fromWire
    - DNSRecord*::getContent
    - setContent
    - toLower
    - DNSName
    - qtype::getCode
    - vector::empty
    - auto::toString
    - DNSResourceRecord::qtype::getCode
    - di::backend::updateDNSSECOrderNameAndAuth
    - fillSOAData
    - DNSResourceRecord*::setContent
    - rfc1982LessThan
    - vector::front
    - di::backend::get
    - DLOG
    - ZoneName
    - computeOrdername
    linkageType: ''
    returnType: uint
    signature: uint performInsert(const DNSRecord* rec, updateContext& ctx, set<DNSName>&
      insnonterm, set<DNSName>& delnonterm)
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: QType
      Src: /src/pdns/pdns/rfc2136handler.cc:421,1
    - Dst: di::backend::lookup
      Src: /src/pdns/pdns/rfc2136handler.cc:423,1
    - Dst: di::backend::get
      Src: /src/pdns/pdns/rfc2136handler.cc:424,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/rfc2136handler.cc:427,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/rfc2136handler.cc:430,1
    - Dst: DNSResourceRecord::getZoneRepresentation
      Src: /src/pdns/pdns/rfc2136handler.cc:434,1
    - Dst: DLOG
      Src: /src/pdns/pdns/rfc2136handler.cc:436,1
    - Dst: SLOG
      Src: /src/pdns/pdns/rfc2136handler.cc:436,1
    - Dst: slog::info
      Src: /src/pdns/pdns/rfc2136handler.cc:437,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/rfc2136handler.cc:437,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/rfc2136handler.cc:438,1
    - Dst: DNSResourceRecord::qtype::getCode
      Src: /src/pdns/pdns/rfc2136handler.cc:438,1
    - Dst: auto::serialize
      Src: /src/pdns/pdns/rfc2136handler.cc:439,1
    - Dst: DNSRecordContent::deserialize
      Src: /src/pdns/pdns/rfc2136handler.cc:440,1
    - Dst: DNSResourceRecord::qtype::getCode
      Src: /src/pdns/pdns/rfc2136handler.cc:440,1
    - Dst: auto::getZoneRepresentation
      Src: /src/pdns/pdns/rfc2136handler.cc:441,1
    - Dst: DLOG
      Src: /src/pdns/pdns/rfc2136handler.cc:442,1
    - Dst: SLOG
      Src: /src/pdns/pdns/rfc2136handler.cc:442,1
    - Dst: slog::info
      Src: /src/pdns/pdns/rfc2136handler.cc:443,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/rfc2136handler.cc:443,1
    - Dst: DLOG
      Src: /src/pdns/pdns/rfc2136handler.cc:445,1
    - Dst: SLOG
      Src: /src/pdns/pdns/rfc2136handler.cc:445,1
    - Dst: DNSRecord*::getContent
      Src: /src/pdns/pdns/rfc2136handler.cc:445,1
    - Dst: slog::info
      Src: /src/pdns/pdns/rfc2136handler.cc:446,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/rfc2136handler.cc:446,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/rfc2136handler.cc:446,1
    - Dst: DNSRecord*::getContent
      Src: /src/pdns/pdns/rfc2136handler.cc:446,1
    - Dst: DNSRecord*::getContent
      Src: /src/pdns/pdns/rfc2136handler.cc:447,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/rfc2136handler.cc:448,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/rfc2136handler.cc:451,1
    - Dst: vector::empty
      Src: /src/pdns/pdns/rfc2136handler.cc:456,1
    - Dst: SLOG
      Src: /src/pdns/pdns/rfc2136handler.cc:457,1
    - Dst: auto::toString
      Src: /src/pdns/pdns/rfc2136handler.cc:457,1
    - Dst: slog::info
      Src: /src/pdns/pdns/rfc2136handler.cc:458,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/rfc2136handler.cc:458,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/rfc2136handler.cc:458,1
    - Dst: di::backend::replaceRRSet
      Src: /src/pdns/pdns/rfc2136handler.cc:462,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/rfc2136handler.cc:463,1
    - Dst: SLOG
      Src: /src/pdns/pdns/rfc2136handler.cc:464,1
    - Dst: auto::toString
      Src: /src/pdns/pdns/rfc2136handler.cc:464,1
    - Dst: slog::info
      Src: /src/pdns/pdns/rfc2136handler.cc:465,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/rfc2136handler.cc:465,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/rfc2136handler.cc:465,1
    - Dst: di::backend::listSubZone
      Src: /src/pdns/pdns/rfc2136handler.cc:472,1
    - Dst: ZoneName
      Src: /src/pdns/pdns/rfc2136handler.cc:472,1
    - Dst: di::backend::get
      Src: /src/pdns/pdns/rfc2136handler.cc:473,1
    - Dst: DNSResourceRecord::qtype::getCode
      Src: /src/pdns/pdns/rfc2136handler.cc:474,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/rfc2136handler.cc:475,1
    - Dst: DNSResourceRecord::qtype::getCode
      Src: /src/pdns/pdns/rfc2136handler.cc:477,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/rfc2136handler.cc:478,1
    - Dst: isPartOf
      Src: /src/pdns/pdns/rfc2136handler.cc:485,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/rfc2136handler.cc:491,1
    - Dst: computeOrdername
      Src: /src/pdns/pdns/rfc2136handler.cc:496,1
    - Dst: di::backend::updateDNSSECOrderNameAndAuth
      Src: /src/pdns/pdns/rfc2136handler.cc:497,1
    - Dst: di::backend::listSubZone
      Src: /src/pdns/pdns/rfc2136handler.cc:507,1
    - Dst: ZoneName
      Src: /src/pdns/pdns/rfc2136handler.cc:507,1
    - Dst: di::backend::get
      Src: /src/pdns/pdns/rfc2136handler.cc:508,1
    - Dst: count
      Src: /src/pdns/pdns/rfc2136handler.cc:509,1
    - Dst: vector::begin
      Src: /src/pdns/pdns/rfc2136handler.cc:509,1
    - Dst: vector::end
      Src: /src/pdns/pdns/rfc2136handler.cc:509,1
    - Dst: DNSResourceRecord::qtype::getCode
      Src: /src/pdns/pdns/rfc2136handler.cc:512,1
    - Dst: insert
      Src: /src/pdns/pdns/rfc2136handler.cc:518,1
    - Dst: DNSName::chopOff
      Src: /src/pdns/pdns/rfc2136handler.cc:525,1
    - Dst: di::backend::listSubZone
      Src: /src/pdns/pdns/rfc2136handler.cc:535,1
    - Dst: ZoneName
      Src: /src/pdns/pdns/rfc2136handler.cc:535,1
    - Dst: di::backend::get
      Src: /src/pdns/pdns/rfc2136handler.cc:537,1
    - Dst: DNSResourceRecord::qtype::getCode
      Src: /src/pdns/pdns/rfc2136handler.cc:538,1
    - Dst: insert
      Src: /src/pdns/pdns/rfc2136handler.cc:547,1
    - Dst: vector::size
      Src: /src/pdns/pdns/rfc2136handler.cc:556,1
    CyclomaticComplexity: 37
    EdgeCount: 37
    ICount: 86
    argCount: 4
    argNames:
    - rec
    - ' ctx'
    - ' insnonterm'
    - ' delnonterm'
    argTypes:
    - DNSRecord*
    - updateContext
    - set<DNSName>
    - set<DNSName>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 557
      start: 416
    functionDepth: 3
    functionLinenumber: 416
    functionLinenumberEnd: 557
    functionName: performDelete
    functionSourceFile: /src/pdns/pdns/rfc2136handler.cc
    functionUses: 0
    functionsReached:
    - di::backend::lookup
    - DNSResourceRecord::getZoneRepresentation
    - di::backend::replaceRRSet
    - insert
    - di::backend::listSubZone
    - vector::begin
    - SLOG
    - DNSName::chopOff
    - Logging::Loggable
    - QType
    - slog::info
    - DNSRecordContent::make
    - vector::clear
    - vector::push_back
    - isPartOf
    - DNSRecord*::getContent
    - vector::end
    - vector::empty
    - auto::toString
    - DNSResourceRecord::qtype::getCode
    - di::backend::updateDNSSECOrderNameAndAuth
    - count
    - auto::serialize
    - auto::getZoneRepresentation
    - di::backend::get
    - DLOG
    - ZoneName
    - vector::size
    - computeOrdername
    - DNSRecordContent::deserialize
    linkageType: ''
    returnType: uint
    signature: uint performDelete(const DNSRecord* rec, const updateContext& ctx,
      set<DNSName>& insnonterm, set<DNSName>& delnonterm)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/rfc2136handler.cc:561,1
    - Dst: empty
      Src: /src/pdns/pdns/rfc2136handler.cc:561,1
    - Dst: DLOG
      Src: /src/pdns/pdns/rfc2136handler.cc:565,1
    - Dst: SLOG
      Src: /src/pdns/pdns/rfc2136handler.cc:565,1
    - Dst: size
      Src: /src/pdns/pdns/rfc2136handler.cc:565,1
    - Dst: size
      Src: /src/pdns/pdns/rfc2136handler.cc:565,1
    - Dst: slog::info
      Src: /src/pdns/pdns/rfc2136handler.cc:566,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/rfc2136handler.cc:566,1
    - Dst: size
      Src: /src/pdns/pdns/rfc2136handler.cc:566,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/rfc2136handler.cc:566,1
    - Dst: size
      Src: /src/pdns/pdns/rfc2136handler.cc:566,1
    - Dst: di::backend::updateEmptyNonTerminals
      Src: /src/pdns/pdns/rfc2136handler.cc:567,1
    - Dst: computeOrdername
      Src: /src/pdns/pdns/rfc2136handler.cc:570,1
    - Dst: di::backend::updateDNSSECOrderNameAndAuth
      Src: /src/pdns/pdns/rfc2136handler.cc:571,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 3
    argNames:
    - ' ctx'
    - ' insnonterm'
    - ' delnonterm'
    argTypes:
    - updateContext
    - set<DNSName>
    - set<DNSName>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 574
      start: 559
    functionDepth: 1
    functionLinenumber: 559
    functionLinenumberEnd: 574
    functionName: updateENT
    functionSourceFile: /src/pdns/pdns/rfc2136handler.cc
    functionUses: 0
    functionsReached:
    - SLOG
    - Logging::Loggable
    - slog::info
    - size
    - di::backend::updateEmptyNonTerminals
    - DLOG
    - empty
    - di::backend::updateDNSSECOrderNameAndAuth
    - computeOrdername
    linkageType: ''
    returnType: void
    signature: void updateENT(const updateContext& ctx, set<DNSName>& insnonterm,
      set<DNSName>& delnonterm)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: mayPerformUpdate
      Src: /src/pdns/pdns/rfc2136handler.cc:578,1
    - Dst: QType
      Src: /src/pdns/pdns/rfc2136handler.cc:582,1
    - Dst: SLOG
      Src: /src/pdns/pdns/rfc2136handler.cc:596,1
    - Dst: slog::info
      Src: /src/pdns/pdns/rfc2136handler.cc:597,1
    - Dst: NSEC3PARAMRecordContent
      Src: /src/pdns/pdns/rfc2136handler.cc:599,1
    - Dst: DNSRecord*::getContent
      Src: /src/pdns/pdns/rfc2136handler.cc:599,1
    - Dst: setNSEC3PARAM
      Src: /src/pdns/pdns/rfc2136handler.cc:602,1
    - Dst: SLOG
      Src: /src/pdns/pdns/rfc2136handler.cc:606,1
    - Dst: slog::info
      Src: /src/pdns/pdns/rfc2136handler.cc:607,1
    - Dst: di::zone::getVariant
      Src: /src/pdns/pdns/rfc2136handler.cc:610,1
    - Dst: unsetNSEC3PARAM
      Src: /src/pdns/pdns/rfc2136handler.cc:612,1
    - Dst: DNSRecord*::getContent
      Src: /src/pdns/pdns/rfc2136handler.cc:615,1
    - Dst: ns3pr::getZoneRepresentation
      Src: /src/pdns/pdns/rfc2136handler.cc:616,1
    - Dst: NSEC3PARAMRecordContent::getZoneRepresentation
      Src: /src/pdns/pdns/rfc2136handler.cc:616,1
    - Dst: unsetNSEC3PARAM
      Src: /src/pdns/pdns/rfc2136handler.cc:617,1
    - Dst: rectifyZone
      Src: /src/pdns/pdns/rfc2136handler.cc:631,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/rfc2136handler.cc:632,1
    - Dst: di::zone::toLogString
      Src: /src/pdns/pdns/rfc2136handler.cc:632,1
    - Dst: DLOG
      Src: /src/pdns/pdns/rfc2136handler.cc:643,1
    - Dst: SLOG
      Src: /src/pdns/pdns/rfc2136handler.cc:643,1
    - Dst: auto::toString
      Src: /src/pdns/pdns/rfc2136handler.cc:643,1
    - Dst: slog::info
      Src: /src/pdns/pdns/rfc2136handler.cc:644,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/rfc2136handler.cc:644,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/rfc2136handler.cc:644,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/rfc2136handler.cc:644,1
    - Dst: performInsert
      Src: /src/pdns/pdns/rfc2136handler.cc:645,1
    - Dst: DLOG
      Src: /src/pdns/pdns/rfc2136handler.cc:648,1
    - Dst: SLOG
      Src: /src/pdns/pdns/rfc2136handler.cc:648,1
    - Dst: auto::toString
      Src: /src/pdns/pdns/rfc2136handler.cc:648,1
    - Dst: slog::info
      Src: /src/pdns/pdns/rfc2136handler.cc:649,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/rfc2136handler.cc:649,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/rfc2136handler.cc:649,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/rfc2136handler.cc:649,1
    - Dst: performDelete
      Src: /src/pdns/pdns/rfc2136handler.cc:650,1
    - Dst: updateENT
      Src: /src/pdns/pdns/rfc2136handler.cc:654,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 42
    argCount: 3
    argNames:
    - ' dsk'
    - rec
    - ' ctx'
    argTypes:
    - DNSSECKeeper
    - DNSRecord*
    - updateContext
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 657
      start: 576
    functionDepth: 4
    functionLinenumber: 576
    functionLinenumberEnd: 657
    functionName: performUpdate
    functionSourceFile: /src/pdns/pdns/rfc2136handler.cc
    functionUses: 0
    functionsReached:
    - PDNSException
    - performInsert
    - SLOG
    - Logging::Loggable
    - updateENT
    - QType
    - slog::info
    - di::zone::getVariant
    - rectifyZone
    - unsetNSEC3PARAM
    - di::zone::toLogString
    - mayPerformUpdate
    - DNSRecord*::getContent
    - NSEC3PARAMRecordContent::getZoneRepresentation
    - auto::toString
    - ns3pr::getZoneRepresentation
    - performDelete
    - DLOG
    - setNSEC3PARAM
    - NSEC3PARAMRecordContent
    linkageType: ''
    returnType: uint
    signature: uint performUpdate(DNSSECKeeper& dsk, const DNSRecord* rec, updateContext&
      ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: closesocket
      Src: /src/pdns/pdns/rfc2136handler.cc:666,1
    - Dst: SLOG
      Src: /src/pdns/pdns/rfc2136handler.cc:670,1
    - Dst: updateContext*::slog::error
      Src: /src/pdns/pdns/rfc2136handler.cc:671,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - updateContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 673
      start: 659
    functionDepth: 0
    functionLinenumber: 659
    functionLinenumberEnd: 673
    functionName: socketCleaner
    functionSourceFile: /src/pdns/pdns/rfc2136handler.cc
    functionUses: 0
    functionsReached:
    - SLOG
    - updateContext*::slog::error
    - closesocket
    linkageType: ''
    returnType: void
    signature: void socketCleaner(const updateContext* ctx)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: getDomainMetadata
      Src: /src/pdns/pdns/rfc2136handler.cc:678,1
    - Dst: vector::empty
      Src: /src/pdns/pdns/rfc2136handler.cc:680,1
    - Dst: arg
      Src: /src/pdns/pdns/rfc2136handler.cc:680,1
    - Dst: SLOG
      Src: /src/pdns/pdns/rfc2136handler.cc:681,1
    - Dst: slog::info
      Src: /src/pdns/pdns/rfc2136handler.cc:682,1
    - Dst: SLOG
      Src: /src/pdns/pdns/rfc2136handler.cc:687,1
    - Dst: slog::info
      Src: /src/pdns/pdns/rfc2136handler.cc:688,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/rfc2136handler.cc:688,1
    - Dst: pdns::isQueryLocalAddressFamilyEnabled
      Src: /src/pdns/pdns/rfc2136handler.cc:690,1
    - Dst: pdns::getQueryLocalAddress
      Src: /src/pdns/pdns/rfc2136handler.cc:693,1
    - Dst: makeQuerySocket
      Src: /src/pdns/pdns/rfc2136handler.cc:694,1
    - Dst: SLOG
      Src: /src/pdns/pdns/rfc2136handler.cc:696,1
    - Dst: stringerror
      Src: /src/pdns/pdns/rfc2136handler.cc:696,1
    - Dst: slog::error
      Src: /src/pdns/pdns/rfc2136handler.cc:697,1
    - Dst: connect
      Src: /src/pdns/pdns/rfc2136handler.cc:706,1
    - Dst: getSocklen
      Src: /src/pdns/pdns/rfc2136handler.cc:706,1
    - Dst: SLOG
      Src: /src/pdns/pdns/rfc2136handler.cc:707,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/rfc2136handler.cc:707,1
    - Dst: stringerror
      Src: /src/pdns/pdns/rfc2136handler.cc:707,1
    - Dst: slog::error
      Src: /src/pdns/pdns/rfc2136handler.cc:708,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/rfc2136handler.cc:708,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/rfc2136handler.cc:708,1
    - Dst: DNSPacket::setID
      Src: /src/pdns/pdns/rfc2136handler.cc:713,1
    - Dst: dns_random_uint16
      Src: /src/pdns/pdns/rfc2136handler.cc:713,1
    - Dst: DNSPacket::setRemote
      Src: /src/pdns/pdns/rfc2136handler.cc:714,1
    - Dst: htons
      Src: /src/pdns/pdns/rfc2136handler.cc:715,1
    - Dst: DNSPacket::getString
      Src: /src/pdns/pdns/rfc2136handler.cc:715,1
    - Dst: string::assign
      Src: /src/pdns/pdns/rfc2136handler.cc:716,1
    - Dst: string::append
      Src: /src/pdns/pdns/rfc2136handler.cc:717,1
    - Dst: DNSPacket::getString
      Src: /src/pdns/pdns/rfc2136handler.cc:717,1
    - Dst: write
      Src: /src/pdns/pdns/rfc2136handler.cc:718,1
    - Dst: string::c_str
      Src: /src/pdns/pdns/rfc2136handler.cc:718,1
    - Dst: string::length
      Src: /src/pdns/pdns/rfc2136handler.cc:718,1
    - Dst: SLOG
      Src: /src/pdns/pdns/rfc2136handler.cc:719,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/rfc2136handler.cc:719,1
    - Dst: stringerror
      Src: /src/pdns/pdns/rfc2136handler.cc:719,1
    - Dst: slog::error
      Src: /src/pdns/pdns/rfc2136handler.cc:720,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/rfc2136handler.cc:720,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/rfc2136handler.cc:720,1
    - Dst: waitForData
      Src: /src/pdns/pdns/rfc2136handler.cc:724,1
    - Dst: SLOG
      Src: /src/pdns/pdns/rfc2136handler.cc:726,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/rfc2136handler.cc:726,1
    - Dst: slog::info
      Src: /src/pdns/pdns/rfc2136handler.cc:727,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/rfc2136handler.cc:727,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/rfc2136handler.cc:727,1
    - Dst: SLOG
      Src: /src/pdns/pdns/rfc2136handler.cc:731,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/rfc2136handler.cc:731,1
    - Dst: stringerror
      Src: /src/pdns/pdns/rfc2136handler.cc:731,1
    - Dst: slog::error
      Src: /src/pdns/pdns/rfc2136handler.cc:732,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/rfc2136handler.cc:732,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/rfc2136handler.cc:732,1
    - Dst: recv
      Src: /src/pdns/pdns/rfc2136handler.cc:737,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/rfc2136handler.cc:737,1
    - Dst: std::array::size
      Src: /src/pdns/pdns/rfc2136handler.cc:737,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/rfc2136handler.cc:738,1
    - Dst: std::array::size
      Src: /src/pdns/pdns/rfc2136handler.cc:738,1
    - Dst: SLOG
      Src: /src/pdns/pdns/rfc2136handler.cc:739,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/rfc2136handler.cc:739,1
    - Dst: stringerror
      Src: /src/pdns/pdns/rfc2136handler.cc:739,1
    - Dst: slog::error
      Src: /src/pdns/pdns/rfc2136handler.cc:740,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/rfc2136handler.cc:740,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/rfc2136handler.cc:740,1
    - Dst: SLOG
      Src: /src/pdns/pdns/rfc2136handler.cc:746,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/rfc2136handler.cc:746,1
    - Dst: slog::info
      Src: /src/pdns/pdns/rfc2136handler.cc:747,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/rfc2136handler.cc:747,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/rfc2136handler.cc:747,1
    - Dst: string::resize
      Src: /src/pdns/pdns/rfc2136handler.cc:751,1
    - Dst: recv
      Src: /src/pdns/pdns/rfc2136handler.cc:752,1
    - Dst: string::at
      Src: /src/pdns/pdns/rfc2136handler.cc:752,1
    - Dst: SLOG
      Src: /src/pdns/pdns/rfc2136handler.cc:754,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/rfc2136handler.cc:754,1
    - Dst: stringerror
      Src: /src/pdns/pdns/rfc2136handler.cc:754,1
    - Dst: slog::error
      Src: /src/pdns/pdns/rfc2136handler.cc:755,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/rfc2136handler.cc:755,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/rfc2136handler.cc:755,1
    - Dst: string::data
      Src: /src/pdns/pdns/rfc2136handler.cc:761,1
    - Dst: static_cast<unsigned int>
      Src: /src/pdns/pdns/rfc2136handler.cc:761,1
    - Dst: SLOG
      Src: /src/pdns/pdns/rfc2136handler.cc:762,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/rfc2136handler.cc:762,1
    - Dst: slog::info
      Src: /src/pdns/pdns/rfc2136handler.cc:763,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/rfc2136handler.cc:763,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/rfc2136handler.cc:763,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/rfc2136handler.cc:763,1
    - Dst: RCode::to_s
      Src: /src/pdns/pdns/rfc2136handler.cc:763,1
    - Dst: SLOG
      Src: /src/pdns/pdns/rfc2136handler.cc:767,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/rfc2136handler.cc:767,1
    - Dst: slog::info
      Src: /src/pdns/pdns/rfc2136handler.cc:768,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/rfc2136handler.cc:768,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/rfc2136handler.cc:768,1
    - Dst: SLOG
      Src: /src/pdns/pdns/rfc2136handler.cc:772,1
    - Dst: slog::info
      Src: /src/pdns/pdns/rfc2136handler.cc:773,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 61
    argCount: 3
    argNames:
    - ' B'
    - ' ctx'
    - ' p'
    argTypes:
    - UeberBackend
    - updateContext
    - DNSPacket
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 775
      start: 675
    functionDepth: 1
    functionLinenumber: 675
    functionLinenumberEnd: 775
    functionName: forwardPacket
    functionSourceFile: /src/pdns/pdns/rfc2136handler.cc
    functionUses: 0
    functionsReached:
    - stringerror
    - dns_random_uint16
    - string::at
    - RCode::to_s
    - DNSPacket::setID
    - string::data
    - getDomainMetadata
    - string::assign
    - SLOG
    - recv
    - static_cast<size_t>
    - string::resize
    - Logging::Loggable
    - slog::info
    - DNSPacket::setRemote
    - connect
    - htons
    - string::c_str
    - pdns::getQueryLocalAddress
    - static_cast<unsigned int>
    - vector::empty
    - write
    - DNSPacket::getString
    - toStringWithPort
    - getSocklen
    - arg
    - string::length
    - std::array::data
    - slog::error
    - makeQuerySocket
    - string::append
    - waitForData
    - pdns::isQueryLocalAddressFamilyEnabled
    - std::array::size
    linkageType: ''
    returnType: int
    signature: int forwardPacket(UeberBackend& B, const updateContext& ctx, const
      DNSPacket& p)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: getDomainMetadata
      Src: /src/pdns/pdns/rfc2136handler.cc:782,1
    - Dst: arg
      Src: /src/pdns/pdns/rfc2136handler.cc:783,1
    - Dst: empty
      Src: /src/pdns/pdns/rfc2136handler.cc:783,1
    - Dst: stringtok
      Src: /src/pdns/pdns/rfc2136handler.cc:784,1
    - Dst: arg
      Src: /src/pdns/pdns/rfc2136handler.cc:784,1
    - Dst: NetmaskGroup::NetmaskGroup
      Src: /src/pdns/pdns/rfc2136handler.cc:787,1
    - Dst: NetmaskGroup::addMask
      Src: /src/pdns/pdns/rfc2136handler.cc:789,1
    - Dst: NetmaskGroup::match
      Src: /src/pdns/pdns/rfc2136handler.cc:792,1
    - Dst: getInnerRemote
      Src: /src/pdns/pdns/rfc2136handler.cc:792,1
    - Dst: SLOG
      Src: /src/pdns/pdns/rfc2136handler.cc:793,1
    - Dst: slog::info
      Src: /src/pdns/pdns/rfc2136handler.cc:794,1
    - Dst: getDomainMetadata
      Src: /src/pdns/pdns/rfc2136handler.cc:800,1
    - Dst: vector::empty
      Src: /src/pdns/pdns/rfc2136handler.cc:801,1
    - Dst: TSIGRecordContent::TSIGRecordContent
      Src: /src/pdns/pdns/rfc2136handler.cc:804,1
    - Dst: DNSName::DNSName
      Src: /src/pdns/pdns/rfc2136handler.cc:805,1
    - Dst: getTSIGDetails
      Src: /src/pdns/pdns/rfc2136handler.cc:807,1
    - Dst: SLOG
      Src: /src/pdns/pdns/rfc2136handler.cc:808,1
    - Dst: slog::info
      Src: /src/pdns/pdns/rfc2136handler.cc:809,1
    - Dst: GssName::match
      Src: /src/pdns/pdns/rfc2136handler.cc:816,1
    - Dst: DNSName
      Src: /src/pdns/pdns/rfc2136handler.cc:826,1
    - Dst: SLOG
      Src: /src/pdns/pdns/rfc2136handler.cc:834,1
    - Dst: vector::size
      Src: /src/pdns/pdns/rfc2136handler.cc:834,1
    - Dst: slog::info
      Src: /src/pdns/pdns/rfc2136handler.cc:835,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/rfc2136handler.cc:835,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/rfc2136handler.cc:835,1
    - Dst: vector::size
      Src: /src/pdns/pdns/rfc2136handler.cc:835,1
    - Dst: arg
      Src: /src/pdns/pdns/rfc2136handler.cc:839,1
    - Dst: SLOG
      Src: /src/pdns/pdns/rfc2136handler.cc:840,1
    - Dst: slog::info
      Src: /src/pdns/pdns/rfc2136handler.cc:841,1
    - Dst: vector::empty
      Src: /src/pdns/pdns/rfc2136handler.cc:845,1
    - Dst: SLOG
      Src: /src/pdns/pdns/rfc2136handler.cc:846,1
    - Dst: slog::info
      Src: /src/pdns/pdns/rfc2136handler.cc:847,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 43
    argCount: 3
    argNames:
    - ' UBackend'
    - ' ctx'
    - ' packet'
    argTypes:
    - UeberBackend
    - updateContext
    - DNSPacket
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 851
      start: 777
    functionDepth: 0
    functionLinenumber: 777
    functionLinenumberEnd: 851
    functionName: isUpdateAllowed
    functionSourceFile: /src/pdns/pdns/rfc2136handler.cc
    functionUses: 0
    functionsReached:
    - getDomainMetadata
    - SLOG
    - NetmaskGroup::NetmaskGroup
    - stringtok
    - getTSIGDetails
    - Logging::Loggable
    - DNSName::DNSName
    - slog::info
    - GssName::match
    - NetmaskGroup::match
    - DNSName
    - vector::empty
    - NetmaskGroup::addMask
    - getInnerRemote
    - empty
    - vector::size
    - TSIGRecordContent::TSIGRecordContent
    - arg
    linkageType: ''
    returnType: bool
    signature: bool isUpdateAllowed(UeberBackend& UBackend, const updateContext& ctx,
      DNSPacket& packet)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: QType
      Src: /src/pdns/pdns/rfc2136handler.cc:868,1
    - Dst: rrVector_t*::push_back
      Src: /src/pdns/pdns/rfc2136handler.cc:870,1
    - Dst: DNSResourceRecord::fromWire
      Src: /src/pdns/pdns/rfc2136handler.cc:870,1
    - Dst: RRsetMap_t::empty
      Src: /src/pdns/pdns/rfc2136handler.cc:875,1
    - Dst: di::backend::lookup
      Src: /src/pdns/pdns/rfc2136handler.cc:882,1
    - Dst: QType
      Src: /src/pdns/pdns/rfc2136handler.cc:882,1
    - Dst: di::backend::get
      Src: /src/pdns/pdns/rfc2136handler.cc:885,1
    - Dst: rrVector_t*::size
      Src: /src/pdns/pdns/rfc2136handler.cc:896,1
    - Dst: SLOG
      Src: /src/pdns/pdns/rfc2136handler.cc:897,1
    - Dst: slog::info
      Src: /src/pdns/pdns/rfc2136handler.cc:898,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 29
    argCount: 2
    argNames:
    - ' answers'
    - ' ctx'
    argTypes:
    - MOADNSParser::answers_t
    - updateContext
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 904
      start: 853
    functionDepth: 0
    functionLinenumber: 853
    functionLinenumberEnd: 904
    functionName: updatePrereqCheck323
    functionSourceFile: /src/pdns/pdns/rfc2136handler.cc
    functionUses: 0
    functionsReached:
    - SLOG
    - DNSResourceRecord::fromWire
    - di::backend::lookup
    - rrVector_t*::push_back
    - QType
    - rrVector_t*::size
    - slog::info
    - RRsetMap_t::empty
    - di::backend::get
    linkageType: ''
    returnType: uint8_t
    signature: uint8_t updatePrereqCheck323(const MOADNSParser::answers_t& answers,
      const updateContext& ctx)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: arg
      Src: /src/pdns/pdns/rfc2136handler.cc:910,1
    - Dst: QType
      Src: /src/pdns/pdns/rfc2136handler.cc:912,1
    - Dst: SLOG
      Src: /src/pdns/pdns/rfc2136handler.cc:913,1
    - Dst: slog::info
      Src: /src/pdns/pdns/rfc2136handler.cc:914,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/rfc2136handler.cc:914,1
    - Dst: updatePolicy
      Src: /src/pdns/pdns/rfc2136handler.cc:932,1
    - Dst: QType
      Src: /src/pdns/pdns/rfc2136handler.cc:932,1
    - Dst: SLOG
      Src: /src/pdns/pdns/rfc2136handler.cc:933,1
    - Dst: QType
      Src: /src/pdns/pdns/rfc2136handler.cc:933,1
    - Dst: slog::info
      Src: /src/pdns/pdns/rfc2136handler.cc:934,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/rfc2136handler.cc:934,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/rfc2136handler.cc:934,1
    - Dst: SLOG
      Src: /src/pdns/pdns/rfc2136handler.cc:937,1
    - Dst: QType
      Src: /src/pdns/pdns/rfc2136handler.cc:937,1
    - Dst: slog::info
      Src: /src/pdns/pdns/rfc2136handler.cc:938,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/rfc2136handler.cc:938,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/rfc2136handler.cc:938,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/rfc2136handler.cc:943,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/rfc2136handler.cc:947,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/rfc2136handler.cc:950,1
    - Dst: performUpdate
      Src: /src/pdns/pdns/rfc2136handler.cc:954,1
    - Dst: di::backend::lookup
      Src: /src/pdns/pdns/rfc2136handler.cc:969,1
    - Dst: QType
      Src: /src/pdns/pdns/rfc2136handler.cc:969,1
    - Dst: di::backend::get
      Src: /src/pdns/pdns/rfc2136handler.cc:970,1
    - Dst: di::backend::lookupEnd
      Src: /src/pdns/pdns/rfc2136handler.cc:973,1
    - Dst: SLOG
      Src: /src/pdns/pdns/rfc2136handler.cc:974,1
    - Dst: QType
      Src: /src/pdns/pdns/rfc2136handler.cc:974,1
    - Dst: slog::info
      Src: /src/pdns/pdns/rfc2136handler.cc:975,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/rfc2136handler.cc:975,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/rfc2136handler.cc:975,1
    - Dst: performUpdate
      Src: /src/pdns/pdns/rfc2136handler.cc:979,1
    - Dst: di::backend::lookup
      Src: /src/pdns/pdns/rfc2136handler.cc:983,1
    - Dst: QType
      Src: /src/pdns/pdns/rfc2136handler.cc:983,1
    - Dst: di::backend::get
      Src: /src/pdns/pdns/rfc2136handler.cc:984,1
    - Dst: di::backend::lookupEnd
      Src: /src/pdns/pdns/rfc2136handler.cc:987,1
    - Dst: SLOG
      Src: /src/pdns/pdns/rfc2136handler.cc:988,1
    - Dst: QType
      Src: /src/pdns/pdns/rfc2136handler.cc:988,1
    - Dst: slog::info
      Src: /src/pdns/pdns/rfc2136handler.cc:989,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/rfc2136handler.cc:989,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/rfc2136handler.cc:989,1
    - Dst: performUpdate
      Src: /src/pdns/pdns/rfc2136handler.cc:993,1
    - Dst: vector::empty
      Src: /src/pdns/pdns/rfc2136handler.cc:996,1
    - Dst: di::backend::lookup
      Src: /src/pdns/pdns/rfc2136handler.cc:999,1
    - Dst: QType
      Src: /src/pdns/pdns/rfc2136handler.cc:999,1
    - Dst: di::backend::get
      Src: /src/pdns/pdns/rfc2136handler.cc:1000,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/rfc2136handler.cc:1001,1
    - Dst: vector::size
      Src: /src/pdns/pdns/rfc2136handler.cc:1003,1
    - Dst: vector::size
      Src: /src/pdns/pdns/rfc2136handler.cc:1003,1
    - Dst: getZoneRepresentation
      Src: /src/pdns/pdns/rfc2136handler.cc:1006,1
    - Dst: getContent
      Src: /src/pdns/pdns/rfc2136handler.cc:1006,1
    - Dst: performUpdate
      Src: /src/pdns/pdns/rfc2136handler.cc:1007,1
    CyclomaticComplexity: 31
    EdgeCount: 31
    ICount: 71
    argCount: 6
    argNames:
    - ' answers'
    - ' dsk'
    - ' changedRecords'
    - ' update_policy_lua'
    - ' packet'
    - ' ctx'
    argTypes:
    - MOADNSParser::answers_t
    - DNSSECKeeper
    - uint
    - std::unique_ptr<AuthLua4>
    - DNSPacket
    - updateContext
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1015
      start: 906
    functionDepth: 5
    functionLinenumber: 906
    functionLinenumberEnd: 1015
    functionName: updateRecords
    functionSourceFile: /src/pdns/pdns/rfc2136handler.cc
    functionUses: 0
    functionsReached:
    - performUpdate
    - getZoneRepresentation
    - SLOG
    - vector::push_back
    - di::backend::lookup
    - Logging::Loggable
    - QType
    - slog::info
    - getContent
    - vector::empty
    - di::backend::get
    - di::backend::lookupEnd
    - vector::size
    - updatePolicy
    - arg
    linkageType: ''
    returnType: uint8_t
    signature: uint8_t updateRecords(const MOADNSParser::answers_t& answers, DNSSECKeeper&
      dsk, uint& changedRecords, const std::unique_ptr<AuthLua4>& update_policy_lua,
      DNSPacket& packet, updateContext& ctx)
  - BBCount: 28
    BranchProfiles: []
    Callsites:
    - Dst: arg
      Src: /src/pdns/pdns/rfc2136handler.cc:1019,1
    - Dst: withValues
      Src: /src/pdns/pdns/rfc2136handler.cc:1025,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/rfc2136handler.cc:1025,1
    - Dst: getRemoteString
      Src: /src/pdns/pdns/rfc2136handler.cc:1025,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/rfc2136handler.cc:1025,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/rfc2136handler.cc:1025,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/rfc2136handler.cc:1028,1
    - Dst: getRemoteString
      Src: /src/pdns/pdns/rfc2136handler.cc:1028,1
    - Dst: qdomainzone::toLogString
      Src: /src/pdns/pdns/rfc2136handler.cc:1028,1
    - Dst: SLOG
      Src: /src/pdns/pdns/rfc2136handler.cc:1031,1
    - Dst: updateContext::slog::info
      Src: /src/pdns/pdns/rfc2136handler.cc:1032,1
    - Dst: arg
      Src: /src/pdns/pdns/rfc2136handler.cc:1035,1
    - Dst: string::empty
      Src: /src/pdns/pdns/rfc2136handler.cc:1037,1
    - Dst: std::make_unique<AuthLua4>
      Src: /src/pdns/pdns/rfc2136handler.cc:1039,1
    - Dst: std::unique_ptr::loadFile
      Src: /src/pdns/pdns/rfc2136handler.cc:1040,1
    - Dst: SLOG
      Src: /src/pdns/pdns/rfc2136handler.cc:1043,1
    - Dst: what
      Src: /src/pdns/pdns/rfc2136handler.cc:1043,1
    - Dst: updateContext::slog::error
      Src: /src/pdns/pdns/rfc2136handler.cc:1044,1
    - Dst: what
      Src: /src/pdns/pdns/rfc2136handler.cc:1044,1
    - Dst: isUpdateAllowed
      Src: /src/pdns/pdns/rfc2136handler.cc:1049,1
    - Dst: getString
      Src: /src/pdns/pdns/rfc2136handler.cc:1059,1
    - Dst: SLOG
      Src: /src/pdns/pdns/rfc2136handler.cc:1061,1
    - Dst: updateContext::slog::info
      Src: /src/pdns/pdns/rfc2136handler.cc:1062,1
    - Dst: std::move
      Src: /src/pdns/pdns/rfc2136handler.cc:1065,1
    - Dst: qtype::getCode
      Src: /src/pdns/pdns/rfc2136handler.cc:1068,1
    - Dst: SLOG
      Src: /src/pdns/pdns/rfc2136handler.cc:1069,1
    - Dst: updateContext::slog::info
      Src: /src/pdns/pdns/rfc2136handler.cc:1070,1
    - Dst: SLOG
      Src: /src/pdns/pdns/rfc2136handler.cc:1075,1
    - Dst: updateContext::slog::info
      Src: /src/pdns/pdns/rfc2136handler.cc:1076,1
    - Dst: getDomainInfo
      Src: /src/pdns/pdns/rfc2136handler.cc:1081,1
    - Dst: SLOG
      Src: /src/pdns/pdns/rfc2136handler.cc:1082,1
    - Dst: updateContext::slog::info
      Src: /src/pdns/pdns/rfc2136handler.cc:1083,1
    - Dst: forwardPacket
      Src: /src/pdns/pdns/rfc2136handler.cc:1089,1
    - Dst: d_name::isPartOf
      Src: /src/pdns/pdns/rfc2136handler.cc:1100,1
    - Dst: SLOG
      Src: /src/pdns/pdns/rfc2136handler.cc:1101,1
    - Dst: updateContext::slog::info
      Src: /src/pdns/pdns/rfc2136handler.cc:1102,1
    - Dst: std::scoped_lock
      Src: /src/pdns/pdns/rfc2136handler.cc:1107,1
    - Dst: SLOG
      Src: /src/pdns/pdns/rfc2136handler.cc:1108,1
    - Dst: updateContext::slog::info
      Src: /src/pdns/pdns/rfc2136handler.cc:1109,1
    - Dst: updateContext::di::backend::startTransaction
      Src: /src/pdns/pdns/rfc2136handler.cc:1110,1
    - Dst: SLOG
      Src: /src/pdns/pdns/rfc2136handler.cc:1111,1
    - Dst: updateContext::slog::info
      Src: /src/pdns/pdns/rfc2136handler.cc:1112,1
    - Dst: checkUpdatePrerequisites
      Src: /src/pdns/pdns/rfc2136handler.cc:1119,1
    - Dst: SLOG
      Src: /src/pdns/pdns/rfc2136handler.cc:1121,1
    - Dst: RCode::to_s
      Src: /src/pdns/pdns/rfc2136handler.cc:1121,1
    - Dst: updateContext::slog::info
      Src: /src/pdns/pdns/rfc2136handler.cc:1122,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/rfc2136handler.cc:1122,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/rfc2136handler.cc:1122,1
    - Dst: RCode::to_s
      Src: /src/pdns/pdns/rfc2136handler.cc:1122,1
    - Dst: updateContext::di::backend::abortTransaction
      Src: /src/pdns/pdns/rfc2136handler.cc:1123,1
    - Dst: updatePrereqCheck323
      Src: /src/pdns/pdns/rfc2136handler.cc:1130,1
    - Dst: updateContext::di::backend::abortTransaction
      Src: /src/pdns/pdns/rfc2136handler.cc:1131,1
    - Dst: checkUpdatePrescan
      Src: /src/pdns/pdns/rfc2136handler.cc:1140,1
    - Dst: SLOG
      Src: /src/pdns/pdns/rfc2136handler.cc:1142,1
    - Dst: RCode::to_s
      Src: /src/pdns/pdns/rfc2136handler.cc:1142,1
    - Dst: updateContext::slog::info
      Src: /src/pdns/pdns/rfc2136handler.cc:1143,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/rfc2136handler.cc:1143,1
    - Dst: RCode::to_s
      Src: /src/pdns/pdns/rfc2136handler.cc:1143,1
    - Dst: updateContext::di::backend::abortTransaction
      Src: /src/pdns/pdns/rfc2136handler.cc:1144,1
    - Dst: PacketHandler::isPresigned
      Src: /src/pdns/pdns/rfc2136handler.cc:1150,1
    - Dst: getNSEC3PARAM
      Src: /src/pdns/pdns/rfc2136handler.cc:1152,1
    - Dst: getSoaEdit
      Src: /src/pdns/pdns/rfc2136handler.cc:1157,1
    - Dst: set::insert
      Src: /src/pdns/pdns/rfc2136handler.cc:1171,1
    - Dst: set::insert
      Src: /src/pdns/pdns/rfc2136handler.cc:1174,1
    - Dst: set::count
      Src: /src/pdns/pdns/rfc2136handler.cc:1179,1
    - Dst: SLOG
      Src: /src/pdns/pdns/rfc2136handler.cc:1180,1
    - Dst: updateContext::slog::info
      Src: /src/pdns/pdns/rfc2136handler.cc:1181,1
    - Dst: updateContext::di::backend::abortTransaction
      Src: /src/pdns/pdns/rfc2136handler.cc:1182,1
    - Dst: updateRecords
      Src: /src/pdns/pdns/rfc2136handler.cc:1188,1
    - Dst: updateContext::di::backend::abortTransaction
      Src: /src/pdns/pdns/rfc2136handler.cc:1189,1
    - Dst: increaseSerial
      Src: /src/pdns/pdns/rfc2136handler.cc:1195,1
    - Dst: updateContext::di::backend::commitTransaction
      Src: /src/pdns/pdns/rfc2136handler.cc:1200,1
    - Dst: SLOG
      Src: /src/pdns/pdns/rfc2136handler.cc:1201,1
    - Dst: updateContext::slog::info
      Src: /src/pdns/pdns/rfc2136handler.cc:1202,1
    - Dst: deposit
      Src: /src/pdns/pdns/rfc2136handler.cc:1206,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/rfc2136handler.cc:1206,1
    - Dst: DNSSECKeeper::clearMetaCache
      Src: /src/pdns/pdns/rfc2136handler.cc:1208,1
    - Dst: purgeAuthCaches
      Src: /src/pdns/pdns/rfc2136handler.cc:1210,1
    - Dst: toString
      Src: /src/pdns/pdns/rfc2136handler.cc:1210,1
    - Dst: getDomainMetadata
      Src: /src/pdns/pdns/rfc2136handler.cc:1215,1
    - Dst: vector::empty
      Src: /src/pdns/pdns/rfc2136handler.cc:1216,1
    - Dst: vector::front
      Src: /src/pdns/pdns/rfc2136handler.cc:1216,1
    - Dst: notifyDomain
      Src: /src/pdns/pdns/rfc2136handler.cc:1217,1
    - Dst: SLOG
      Src: /src/pdns/pdns/rfc2136handler.cc:1221,1
    - Dst: updateContext::slog::info
      Src: /src/pdns/pdns/rfc2136handler.cc:1222,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/rfc2136handler.cc:1222,1
    - Dst: SLOG
      Src: /src/pdns/pdns/rfc2136handler.cc:1226,1
    - Dst: updateContext::slog::info
      Src: /src/pdns/pdns/rfc2136handler.cc:1227,1
    - Dst: updateContext::di::backend::abortTransaction
      Src: /src/pdns/pdns/rfc2136handler.cc:1228,1
    - Dst: SLOG
      Src: /src/pdns/pdns/rfc2136handler.cc:1233,1
    - Dst: txtReason
      Src: /src/pdns/pdns/rfc2136handler.cc:1233,1
    - Dst: updateContext::slog::error
      Src: /src/pdns/pdns/rfc2136handler.cc:1234,1
    - Dst: txtReason
      Src: /src/pdns/pdns/rfc2136handler.cc:1234,1
    - Dst: updateContext::di::backend::abortTransaction
      Src: /src/pdns/pdns/rfc2136handler.cc:1235,1
    - Dst: SLOG
      Src: /src/pdns/pdns/rfc2136handler.cc:1239,1
    - Dst: updateContext::slog::error
      Src: /src/pdns/pdns/rfc2136handler.cc:1240,1
    - Dst: updateContext::di::backend::abortTransaction
      Src: /src/pdns/pdns/rfc2136handler.cc:1241,1
    - Dst: SLOG
      Src: /src/pdns/pdns/rfc2136handler.cc:1245,1
    - Dst: updateContext::slog::error
      Src: /src/pdns/pdns/rfc2136handler.cc:1246,1
    - Dst: updateContext::di::backend::abortTransaction
      Src: /src/pdns/pdns/rfc2136handler.cc:1247,1
    - Dst: SLOG
      Src: /src/pdns/pdns/rfc2136handler.cc:1251,1
    - Dst: what
      Src: /src/pdns/pdns/rfc2136handler.cc:1251,1
    - Dst: updateContext::slog::error
      Src: /src/pdns/pdns/rfc2136handler.cc:1252,1
    - Dst: what
      Src: /src/pdns/pdns/rfc2136handler.cc:1252,1
    - Dst: updateContext::di::backend::abortTransaction
      Src: /src/pdns/pdns/rfc2136handler.cc:1253,1
    - Dst: SLOG
      Src: /src/pdns/pdns/rfc2136handler.cc:1257,1
    - Dst: updateContext::slog::info
      Src: /src/pdns/pdns/rfc2136handler.cc:1258,1
    - Dst: updateContext::di::backend::abortTransaction
      Src: /src/pdns/pdns/rfc2136handler.cc:1259,1
    CyclomaticComplexity: 41
    EdgeCount: 41
    ICount: 150
    argCount: 1
    argNames:
    - ' packet'
    argTypes:
    - DNSPacket
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1262
      start: 1017
    functionDepth: 6
    functionLinenumber: 1017
    functionLinenumberEnd: 1262
    functionName: PacketHandler::processUpdate
    functionSourceFile: /src/pdns/pdns/rfc2136handler.cc
    functionUses: 0
    functionsReached:
    - toString
    - std::to_string
    - RCode::to_s
    - deposit
    - forwardPacket
    - updateContext::slog::info
    - static_cast<int>
    - getDomainMetadata
    - SLOG
    - set::insert
    - updateContext::di::backend::commitTransaction
    - Logging::Loggable
    - string::empty
    - DNSSECKeeper::clearMetaCache
    - PacketHandler::isPresigned
    - notifyDomain
    - updatePrereqCheck323
    - std::scoped_lock
    - d_name::isPartOf
    - getSoaEdit
    - updateContext::slog::error
    - std::unique_ptr::loadFile
    - updateContext::di::backend::abortTransaction
    - withValues
    - qtype::getCode
    - vector::empty
    - getDomainInfo
    - getRemoteString
    - getNSEC3PARAM
    - increaseSerial
    - updateRecords
    - arg
    - std::make_unique<AuthLua4>
    - std::move
    - what
    - purgeAuthCaches
    - vector::front
    - set::count
    - updateContext::di::backend::startTransaction
    - getString
    - txtReason
    - isUpdateAllowed
    - checkUpdatePrerequisites
    - qdomainzone::toLogString
    - checkUpdatePrescan
    linkageType: ''
    returnType: int
    signature: int PacketHandler::processUpdate(DNSPacket& packet)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: di::backend::getSOA
      Src: /src/pdns/pdns/rfc2136handler.cc:1267,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/rfc2136handler.cc:1268,1
    - Dst: di::backend::getDomainMetadata
      Src: /src/pdns/pdns/rfc2136handler.cc:1274,1
    - Dst: vector::empty
      Src: /src/pdns/pdns/rfc2136handler.cc:1277,1
    - Dst: pdns_iequals
      Src: /src/pdns/pdns/rfc2136handler.cc:1279,1
    - Dst: pdns_iequals
      Src: /src/pdns/pdns/rfc2136handler.cc:1279,1
    - Dst: empty
      Src: /src/pdns/pdns/rfc2136handler.cc:1280,1
    - Dst: SLOG
      Src: /src/pdns/pdns/rfc2136handler.cc:1281,1
    - Dst: slog::info
      Src: /src/pdns/pdns/rfc2136handler.cc:1282,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/rfc2136handler.cc:1282,1
    - Dst: makeIncreasedSOARecord
      Src: /src/pdns/pdns/rfc2136handler.cc:1292,1
    - Dst: di::backend::replaceRRSet
      Src: /src/pdns/pdns/rfc2136handler.cc:1293,1
    - Dst: vector<DNSResourceRecord>
      Src: /src/pdns/pdns/rfc2136handler.cc:1293,1
    - Dst: SLOG
      Src: /src/pdns/pdns/rfc2136handler.cc:1294,1
    - Dst: slog::info
      Src: /src/pdns/pdns/rfc2136handler.cc:1295,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/rfc2136handler.cc:1295,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/rfc2136handler.cc:1295,1
    - Dst: computeOrdername
      Src: /src/pdns/pdns/rfc2136handler.cc:1298,1
    - Dst: di::backend::updateDNSSECOrderNameAndAuth
      Src: /src/pdns/pdns/rfc2136handler.cc:1299,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 21
    argCount: 2
    argNames:
    - ' soaEditSetting'
    - ' ctx'
    argTypes:
    - string
    - updateContext
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1301
      start: 1264
    functionDepth: 4
    functionLinenumber: 1264
    functionLinenumberEnd: 1301
    functionName: increaseSerial
    functionSourceFile: /src/pdns/pdns/rfc2136handler.cc
    functionUses: 3
    functionsReached:
    - SLOG
    - di::backend::getDomainMetadata
    - Logging::Loggable
    - PDNSException
    - pdns_iequals
    - slog::info
    - di::backend::getSOA
    - di::backend::replaceRRSet
    - vector::empty
    - makeIncreasedSOARecord
    - vector<DNSResourceRecord>
    - empty
    - di::backend::updateDNSSECOrderNameAndAuth
    - computeOrdername
    linkageType: ''
    returnType: void
    signature: void increaseSerial(const string& soaEditSetting, const updateContext&
      ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::md5
      Src: /src/pdns/pdns/dnssecsigner.cc:48,1
    - Dst: pdns::sha1
      Src: /src/pdns/pdns/dnssecsigner.cc:51,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - ' msg'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 45
    functionDepth: 1
    functionLinenumber: 45
    functionLinenumberEnd: 53
    functionName: getLookupKeyFromMessage
    functionSourceFile: /src/pdns/pdns/dnssecsigner.cc
    functionUses: 0
    functionsReached:
    - pdns::md5
    - pdns::sha1
    linkageType: ''
    returnType: std::string
    signature: std::string getLookupKeyFromMessage(const std::string& msg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnssecsigner.cc:60,1
    - Dst: pdns::sha1sum
      Src: /src/pdns/pdns/dnssecsigner.cc:63,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ' pubKey'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 55
    functionDepth: 0
    functionLinenumber: 55
    functionLinenumberEnd: 64
    functionName: getLookupKeyFromPublicKey
    functionSourceFile: /src/pdns/pdns/dnssecsigner.cc
    functionUses: 0
    functionsReached:
    - pdns::sha1sum
    - size
    linkageType: ''
    returnType: std::string
    signature: std::string getLookupKeyFromPublicKey(const std::string& pubKey)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: getPointer
      Src: /src/pdns/pdns/dnssecsigner.cc:69,1
    - Dst: getDNSKEY
      Src: /src/pdns/pdns/dnssecsigner.cc:72,1
    - Dst: getKey
      Src: /src/pdns/pdns/dnssecsigner.cc:73,1
    - Dst: DNSKEYRecordContent::getTag
      Src: /src/pdns/pdns/dnssecsigner.cc:74,1
    - Dst: getMessageForRRSET
      Src: /src/pdns/pdns/dnssecsigner.cc:77,1
    - Dst: getLookupKeyFromPublicKey
      Src: /src/pdns/pdns/dnssecsigner.cc:78,1
    - Dst: getLookupKeyFromMessage
      Src: /src/pdns/pdns/dnssecsigner.cc:78,1
    - Dst: read_lock
      Src: /src/pdns/pdns/dnssecsigner.cc:82,1
    - Dst: auto::find
      Src: /src/pdns/pdns/dnssecsigner.cc:83,1
    - Dst: auto::end
      Src: /src/pdns/pdns/dnssecsigner.cc:83,1
    - Dst: sign
      Src: /src/pdns/pdns/dnssecsigner.cc:90,1
    - Dst: time
      Src: /src/pdns/pdns/dnssecsigner.cc:94,1
    - Dst: dns_random
      Src: /src/pdns/pdns/dnssecsigner.cc:94,1
    - Dst: static_cast<time_t>
      Src: /src/pdns/pdns/dnssecsigner.cc:94,1
    - Dst: arg
      Src: /src/pdns/pdns/dnssecsigner.cc:95,1
    - Dst: write_lock
      Src: /src/pdns/pdns/dnssecsigner.cc:99,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnssecsigner.cc:100,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnssecsigner.cc:101,1
    - Dst: info
      Src: /src/pdns/pdns/dnssecsigner.cc:102,1
    - Dst: std::swap
      Src: /src/pdns/pdns/dnssecsigner.cc:103,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 24
    argCount: 4
    argNames:
    - ' dpk'
    - ' signQName'
    - ' rrc'
    - ' toSign'
    argTypes:
    - DNSSECPrivateKey
    - DNSName
    - RRSIGRecordContent
    - sortedRecords_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 66
    functionDepth: 2
    functionLinenumber: 66
    functionLinenumberEnd: 109
    functionName: fillOutRRSIG
    functionSourceFile: /src/pdns/pdns/dnssecsigner.cc
    functionUses: 0
    functionsReached:
    - std::swap
    - static_cast<time_t>
    - auto::size
    - getLookupKeyFromMessage
    - SLOG
    - time
    - read_lock
    - getLookupKeyFromPublicKey
    - arg
    - auto::find
    - DNSKEYRecordContent::getTag
    - getMessageForRRSET
    - getPointer
    - dns_random
    - getDNSKEY
    - info
    - getKey
    - sign
    - write_lock
    - auto::end
    linkageType: ''
    returnType: void
    signature: void fillOutRRSIG(DNSSECPrivateKey& dpk, const DNSName& signQName,
      RRSIGRecordContent& rrc, const sortedRecords_t& toSign)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/dnssecsigner.cc:116,1
    - Dst: getStartOfWeek
      Src: /src/pdns/pdns/dnssecsigner.cc:118,1
    - Dst: RRSIGRecordContent::RRSIGRecordContent
      Src: /src/pdns/pdns/dnssecsigner.cc:119,1
    - Dst: countLabels
      Src: /src/pdns/pdns/dnssecsigner.cc:122,1
    - Dst: isWildcard
      Src: /src/pdns/pdns/dnssecsigner.cc:122,1
    - Dst: getKeys
      Src: /src/pdns/pdns/dnssecsigner.cc:129,1
    - Dst: count
      Src: /src/pdns/pdns/dnssecsigner.cc:135,1
    - Dst: fillOutRRSIG
      Src: /src/pdns/pdns/dnssecsigner.cc:143,1
    - Dst: push_back
      Src: /src/pdns/pdns/dnssecsigner.cc:144,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 19
    argCount: 7
    argNames:
    - ' dsk'
    - ' signer'
    - ' signQName'
    - signQType
    - signTTL
    - ' toSign'
    - ' rrcs'
    argTypes:
    - DNSSECKeeper
    - ZoneName
    - DNSName
    - uint16_t
    - uint32_t
    - sortedRecords_t
    - vector<RRSIGRecordContent>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 113
    functionDepth: 3
    functionLinenumber: 113
    functionLinenumberEnd: 147
    functionName: getRRSIGsForRRSET
    functionSourceFile: /src/pdns/pdns/dnssecsigner.cc
    functionUses: 0
    functionsReached:
    - countLabels
    - getKeys
    - count
    - push_back
    - isWildcard
    - RRSIGRecordContent::RRSIGRecordContent
    - fillOutRRSIG
    - empty
    - getStartOfWeek
    linkageType: ''
    returnType: int
    signature: "int getRRSIGsForRRSET(DNSSECKeeper& dsk, const ZoneName& signer, const
      DNSName& signQName, uint16_t signQType, uint32_t signTTL,\n                             const
      sortedRecords_t& toSign, vector<RRSIGRecordContent>& rrcs)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: arg
      Src: /src/pdns/pdns/dnssecsigner.cc:154,1
    - Dst: empty
      Src: /src/pdns/pdns/dnssecsigner.cc:157,1
    - Dst: isPresigned
      Src: /src/pdns/pdns/dnssecsigner.cc:160,1
    - Dst: getPreRRSIGs
      Src: /src/pdns/pdns/dnssecsigner.cc:162,1
    - Dst: getRRSIGsForRRSET
      Src: /src/pdns/pdns/dnssecsigner.cc:165,1
    - Dst: hasLabels
      Src: /src/pdns/pdns/dnssecsigner.cc:165,1
    - Dst: DNSZoneRecord::dr::setContent
      Src: /src/pdns/pdns/dnssecsigner.cc:180,1
    - Dst: std::make_shared<RRSIGRecordContent>
      Src: /src/pdns/pdns/dnssecsigner.cc:180,1
    - Dst: push_back
      Src: /src/pdns/pdns/dnssecsigner.cc:181,1
    - Dst: clear
      Src: /src/pdns/pdns/dnssecsigner.cc:184,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 21
    argCount: 12
    argNames:
    - ' dsk'
    - ' ueber'
    - ' signer'
    - ' signQName'
    - ' wildcardname'
    - signQType
    - signTTL
    - signPlace
    - ' toSign'
    - ' outsigned'
    - origTTL
    - packet
    argTypes:
    - DNSSECKeeper
    - UeberBackend
    - ZoneName
    - DNSName
    - DNSName
    - uint16_t
    - uint32_t
    - DNSResourceRecord::Place
    - sortedRecords_t
    - vector<DNSZoneRecord>
    - uint32_t
    - DNSPacket*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 185
      start: 150
    functionDepth: 4
    functionLinenumber: 150
    functionLinenumberEnd: 185
    functionName: addSignature
    functionSourceFile: /src/pdns/pdns/dnssecsigner.cc
    functionUses: 0
    functionsReached:
    - arg
    - push_back
    - getPreRRSIGs
    - DNSZoneRecord::dr::setContent
    - hasLabels
    - clear
    - empty
    - getRRSIGsForRRSET
    - std::make_shared<RRSIGRecordContent>
    - isPresigned
    linkageType: ''
    returnType: void
    signature: "void addSignature(DNSSECKeeper& dsk, UeberBackend& ueber, const ZoneName&
      signer, const DNSName& signQName, const DNSName& wildcardname, uint16_t signQType,\n
      \                        uint32_t signTTL, DNSResourceRecord::Place signPlace,\n
      \                        sortedRecords_t& toSign, vector<DNSZoneRecord>& outsigned,
      uint32_t origTTL, DNSPacket* packet)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: read_lock
      Src: /src/pdns/pdns/dnssecsigner.cc:189,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 190
      start: 187
    functionDepth: 0
    functionLinenumber: 187
    functionLinenumberEnd: 190
    functionName: signatureCacheSize
    functionSourceFile: /src/pdns/pdns/dnssecsigner.cc
    functionUses: 0
    functionsReached:
    - read_lock
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t signatureCacheSize(const std::string& /* str */)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::tie
      Src: /src/pdns/pdns/dnssecsigner.cc:194,1
    - Dst: std::tie
      Src: /src/pdns/pdns/dnssecsigner.cc:194,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' a'
    - ' b'
    argTypes:
    - DNSZoneRecord
    - DNSZoneRecord
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 195
      start: 192
    functionDepth: 0
    functionLinenumber: 192
    functionLinenumberEnd: 195
    functionName: rrsigncomp
    functionSourceFile: /src/pdns/pdns/dnssecsigner.cc
    functionUses: 0
    functionsReached:
    - std::tie
    linkageType: ''
    returnType: bool
    signature: bool rrsigncomp(const DNSZoneRecord& a, const DNSZoneRecord& b)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: trimToLabels
      Src: /src/pdns/pdns/dnssecsigner.cc:199,1
    - Dst: ZoneName::chopOff
      Src: /src/pdns/pdns/dnssecsigner.cc:209,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 3
    argNames:
    - ' authSet'
    - ' name'
    - ' signer'
    argTypes:
    - set<ZoneName>
    - DNSName
    - ZoneName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 212
      start: 197
    functionDepth: 0
    functionLinenumber: 197
    functionLinenumberEnd: 212
    functionName: getBestAuthFromSet
    functionSourceFile: /src/pdns/pdns/dnssecsigner.cc
    functionUses: 0
    functionsReached:
    - ZoneName::chopOff
    - trimToLabels
    linkageType: ''
    returnType: bool
    signature: bool getBestAuthFromSet(const set<ZoneName>& authSet, const DNSName&
      name, ZoneName& signer)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: stable_sort
      Src: /src/pdns/pdns/dnssecsigner.cc:216,1
    - Dst: begin
      Src: /src/pdns/pdns/dnssecsigner.cc:216,1
    - Dst: end
      Src: /src/pdns/pdns/dnssecsigner.cc:216,1
    - Dst: DNSName::DNSName
      Src: /src/pdns/pdns/dnssecsigner.cc:218,1
    - Dst: vector::reserve
      Src: /src/pdns/pdns/dnssecsigner.cc:227,1
    - Dst: size
      Src: /src/pdns/pdns/dnssecsigner.cc:227,1
    - Dst: ZoneName::ZoneName
      Src: /src/pdns/pdns/dnssecsigner.cc:229,1
    - Dst: cbegin
      Src: /src/pdns/pdns/dnssecsigner.cc:230,1
    - Dst: cend
      Src: /src/pdns/pdns/dnssecsigner.cc:230,1
    - Dst: cbegin
      Src: /src/pdns/pdns/dnssecsigner.cc:231,1
    - Dst: getBestAuthFromSet
      Src: /src/pdns/pdns/dnssecsigner.cc:232,1
    - Dst: addSignature
      Src: /src/pdns/pdns/dnssecsigner.cc:233,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/dnssecsigner.cc:235,1
    - Dst: auto::dr::d_name::makeLowerCase
      Src: /src/pdns/pdns/dnssecsigner.cc:236,1
    - Dst: getCommonLabels
      Src: /src/pdns/pdns/dnssecsigner.cc:238,1
    - Dst: getRR
      Src: /src/pdns/pdns/dnssecsigner.cc:238,1
    - Dst: auto::wildcardname::empty
      Src: /src/pdns/pdns/dnssecsigner.cc:243,1
    - Dst: auto::wildcardname::makeLowerCase
      Src: /src/pdns/pdns/dnssecsigner.cc:244,1
    - Dst: clear
      Src: /src/pdns/pdns/dnssecsigner.cc:246,1
    - Dst: sortedRecords_t::insert
      Src: /src/pdns/pdns/dnssecsigner.cc:255,1
    - Dst: auto::dr::getContent
      Src: /src/pdns/pdns/dnssecsigner.cc:255,1
    - Dst: getBestAuthFromSet
      Src: /src/pdns/pdns/dnssecsigner.cc:258,1
    - Dst: addSignature
      Src: /src/pdns/pdns/dnssecsigner.cc:259,1
    - Dst: swap
      Src: /src/pdns/pdns/dnssecsigner.cc:260,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 31
    argCount: 5
    argNames:
    - ' dsk'
    - ' ueber'
    - ' authSet'
    - ' rrs'
    - packet
    argTypes:
    - DNSSECKeeper
    - UeberBackend
    - set<ZoneName>
    - vector<DNSZoneRecord>
    - DNSPacket*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 261
      start: 214
    functionDepth: 5
    functionLinenumber: 214
    functionLinenumberEnd: 261
    functionName: addRRSigs
    functionSourceFile: /src/pdns/pdns/dnssecsigner.cc
    functionUses: 3
    functionsReached:
    - addSignature
    - vector::reserve
    - auto::dr::getContent
    - size
    - cbegin
    - cend
    - begin
    - clear
    - getCommonLabels
    - vector::push_back
    - auto::wildcardname::empty
    - stable_sort
    - sortedRecords_t::insert
    - getRR
    - auto::wildcardname::makeLowerCase
    - getBestAuthFromSet
    - swap
    - ZoneName::ZoneName
    - end
    - DNSName::DNSName
    - auto::dr::d_name::makeLowerCase
    linkageType: ''
    returnType: void
    signature: void addRRSigs(DNSSECKeeper& dsk, UeberBackend& ueber, const set<ZoneName>&
      authSet, vector<DNSZoneRecord>& rrs, DNSPacket* packet)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: pdns::UniqueFilePtr
      Src: /src/pdns/pdns/dnspcap.cc:33,1
    - Dst: fopen
      Src: /src/pdns/pdns/dnspcap.cc:33,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnspcap.cc:33,1
    - Dst: unixDie
      Src: /src/pdns/pdns/dnspcap.cc:35,1
    - Dst: fcntl
      Src: /src/pdns/pdns/dnspcap.cc:38,1
    - Dst: fileno
      Src: /src/pdns/pdns/dnspcap.cc:38,1
    - Dst: get
      Src: /src/pdns/pdns/dnspcap.cc:38,1
    - Dst: fcntl
      Src: /src/pdns/pdns/dnspcap.cc:39,1
    - Dst: fileno
      Src: /src/pdns/pdns/dnspcap.cc:39,1
    - Dst: get
      Src: /src/pdns/pdns/dnspcap.cc:39,1
    - Dst: PcapPacketReader::checkedFread
      Src: /src/pdns/pdns/dnspcap.cc:41,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/dnspcap.cc:44,1
    - Dst: boost::format
      Src: /src/pdns/pdns/dnspcap.cc:44,1
    - Dst: str
      Src: /src/pdns/pdns/dnspcap.cc:44,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/dnspcap.cc:59,1
    - Dst: boost::format
      Src: /src/pdns/pdns/dnspcap.cc:59,1
    - Dst: str
      Src: /src/pdns/pdns/dnspcap.cc:59,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/dnspcap.cc:68,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 28
    argCount: 1
    argNames:
    - ' fname'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 31
    functionDepth: 2
    functionLinenumber: 31
    functionLinenumberEnd: 69
    functionName: PcapPacketReader::PcapPacketReader
    functionSourceFile: /src/pdns/pdns/dnspcap.cc
    functionUses: 0
    functionsReached:
    - fcntl
    - fileno
    - boost::format
    - unixDie
    - fopen
    - runtime_error
    - get
    - PcapPacketReader::checkedFread
    - str
    - pdns::UniqueFilePtr
    - c_str
    linkageType: ''
    returnType: void
    signature: void PcapPacketReader::PcapPacketReader(const string& fname)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: fread
      Src: /src/pdns/pdns/dnspcap.cc:73,1
    - Dst: get
      Src: /src/pdns/pdns/dnspcap.cc:73,1
    - Dst: unixDie
      Src: /src/pdns/pdns/dnspcap.cc:75,1
    - Dst: boost::format
      Src: /src/pdns/pdns/dnspcap.cc:75,1
    - Dst: str
      Src: /src/pdns/pdns/dnspcap.cc:75,1
    - Dst: EofException
      Src: /src/pdns/pdns/dnspcap.cc:79,1
    - Dst: EofException
      Src: /src/pdns/pdns/dnspcap.cc:82,1
    - Dst: boost::format
      Src: /src/pdns/pdns/dnspcap.cc:82,1
    - Dst: str
      Src: /src/pdns/pdns/dnspcap.cc:82,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 8
    argCount: 2
    argNames:
    - ptr
    - size
    argTypes:
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 71
    functionDepth: 0
    functionLinenumber: 71
    functionLinenumberEnd: 83
    functionName: PcapPacketReader::checkedFreadSize
    functionSourceFile: /src/pdns/pdns/dnspcap.cc
    functionUses: 1
    functionsReached:
    - unixDie
    - fread
    - get
    - str
    - boost::format
    - EofException
    linkageType: ''
    returnType: void
    signature: void PcapPacketReader::checkedFreadSize(void* ptr, size_t size)
  - BBCount: 23
    BranchProfiles: []
    Callsites:
    - Dst: PcapPacketReader::checkedFread
      Src: /src/pdns/pdns/dnspcap.cc:89,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/dnspcap.cc:97,1
    - Dst: boost::format
      Src: /src/pdns/pdns/dnspcap.cc:97,1
    - Dst: str
      Src: /src/pdns/pdns/dnspcap.cc:97,1
    - Dst: PcapPacketReader::checkedFreadSize
      Src: /src/pdns/pdns/dnspcap.cc:100,1
    - Dst: reinterpret_cast<struct ip*>
      Src: /src/pdns/pdns/dnspcap.cc:112,1
    - Dst: reinterpret_cast<struct ip6_hdr*>
      Src: /src/pdns/pdns/dnspcap.cc:113,1
    - Dst: reinterpret_cast<struct ether_header*>
      Src: /src/pdns/pdns/dnspcap.cc:121,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnspcap.cc:122,1
    - Dst: reinterpret_cast<struct pdns_lcc_header*>
      Src: /src/pdns/pdns/dnspcap.cc:149,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnspcap.cc:150,1
    - Dst: reinterpret_cast<const struct udphdr*>
      Src: /src/pdns/pdns/dnspcap.cc:158,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnspcap.cc:160,1
    - Dst: reinterpret_cast<const struct udphdr*>
      Src: /src/pdns/pdns/dnspcap.cc:177,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnspcap.cc:179,1
    CyclomaticComplexity: 42
    EdgeCount: 42
    ICount: 100
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 199
      start: 85
    functionDepth: 2
    functionLinenumber: 85
    functionLinenumberEnd: 199
    functionName: PcapPacketReader::getUDPPacket
    functionSourceFile: /src/pdns/pdns/dnspcap.cc
    functionUses: 9
    functionsReached:
    - reinterpret_cast<struct ip*>
    - ntohs
    - reinterpret_cast<const struct udphdr*>
    - runtime_error
    - PcapPacketReader::checkedFreadSize
    - reinterpret_cast<struct ip6_hdr*>
    - reinterpret_cast<struct ether_header*>
    - PcapPacketReader::checkedFread
    - str
    - boost::format
    - reinterpret_cast<struct pdns_lcc_header*>
    linkageType: ''
    returnType: bool
    signature: bool PcapPacketReader::getUDPPacket()
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 214
      start: 201
    functionDepth: 0
    functionLinenumber: 201
    functionLinenumberEnd: 214
    functionName: PcapPacketReader::getSource
    functionSourceFile: /src/pdns/pdns/dnspcap.cc
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: ComboAddress
    signature: ComboAddress PcapPacketReader::getSource() const
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 229
      start: 216
    functionDepth: 0
    functionLinenumber: 216
    functionLinenumberEnd: 229
    functionName: PcapPacketReader::getDest
    functionSourceFile: /src/pdns/pdns/dnspcap.cc
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: ComboAddress
    signature: ComboAddress PcapPacketReader::getDest() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PcapPacketWriter::setPPR
      Src: /src/pdns/pdns/dnspcap.cc:233,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' fname'
    - ' ppr'
    argTypes:
    - string
    - PcapPacketReader
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 234
      start: 231
    functionDepth: 1
    functionLinenumber: 231
    functionLinenumberEnd: 234
    functionName: PcapPacketWriter::PcapPacketWriter
    functionSourceFile: /src/pdns/pdns/dnspcap.cc
    functionUses: 0
    functionsReached:
    - PcapPacketWriter::setPPR
    linkageType: ''
    returnType: void
    signature: void PcapPacketWriter::PcapPacketWriter(const string& fname, const
      PcapPacketReader& ppr)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pdns::openFileForWriting
      Src: /src/pdns/pdns/dnspcap.cc:238,1
    - Dst: unixDie
      Src: /src/pdns/pdns/dnspcap.cc:240,1
    - Dst: fcntl
      Src: /src/pdns/pdns/dnspcap.cc:243,1
    - Dst: fileno
      Src: /src/pdns/pdns/dnspcap.cc:243,1
    - Dst: get
      Src: /src/pdns/pdns/dnspcap.cc:243,1
    - Dst: fcntl
      Src: /src/pdns/pdns/dnspcap.cc:244,1
    - Dst: fileno
      Src: /src/pdns/pdns/dnspcap.cc:244,1
    - Dst: get
      Src: /src/pdns/pdns/dnspcap.cc:244,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - ' fname'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 245
      start: 236
    functionDepth: 0
    functionLinenumber: 236
    functionLinenumberEnd: 245
    functionName: PcapPacketWriter::PcapPacketWriter
    functionSourceFile: /src/pdns/pdns/dnspcap.cc
    functionUses: 0
    functionsReached:
    - fcntl
    - fileno
    - unixDie
    - pdns::openFileForWriting
    - get
    linkageType: ''
    returnType: void
    signature: void PcapPacketWriter::PcapPacketWriter(const string& fname)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: fwrite
      Src: /src/pdns/pdns/dnspcap.cc:254,1
    - Dst: get
      Src: /src/pdns/pdns/dnspcap.cc:254,1
    - Dst: fwrite
      Src: /src/pdns/pdns/dnspcap.cc:257,1
    - Dst: get
      Src: /src/pdns/pdns/dnspcap.cc:257,1
    - Dst: fwrite
      Src: /src/pdns/pdns/dnspcap.cc:258,1
    - Dst: get
      Src: /src/pdns/pdns/dnspcap.cc:258,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 259
      start: 247
    functionDepth: 0
    functionLinenumber: 247
    functionLinenumberEnd: 259
    functionName: PcapPacketWriter::write
    functionSourceFile: /src/pdns/pdns/dnspcap.cc
    functionUses: 1
    functionsReached:
    - fwrite
    - get
    linkageType: ''
    returnType: void
    signature: void PcapPacketWriter::write()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 2
    argCount: 1
    argNames:
    - chr
    argTypes:
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 46
    functionName: dns_isspace
    functionSourceFile: /src/pdns/pdns/dnsname.hh
    functionUses: 9
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool dns_isspace(char chr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - chr
    argTypes:
    - unsigned char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 51
    functionDepth: 0
    functionLinenumber: 51
    functionLinenumberEnd: 54
    functionName: dns_toupper
    functionSourceFile: /src/pdns/pdns/dnsname.hh
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: unsigned char
    signature: unsigned char dns_toupper(unsigned char chr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - chr
    argTypes:
    - unsigned char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 57
    functionDepth: 0
    functionLinenumber: 57
    functionLinenumberEnd: 60
    functionName: dns_tolower
    functionSourceFile: /src/pdns/pdns/dnsname.hh
    functionUses: 9
    functionsReached: []
    linkageType: ''
    returnType: unsigned char
    signature: unsigned char dns_tolower(unsigned char chr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 93
    functionDepth: 0
    functionLinenumber: 93
    functionLinenumberEnd: 93
    functionName: DNSName::DNSName
    functionSourceFile: /src/pdns/pdns/dnsname.hh
    functionUses: 43
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void DNSName()
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 95
    functionDepth: 0
    functionLinenumber: 95
    functionLinenumberEnd: 101
    functionName: '& operator=(const DNSName& rhs)'
    functionSourceFile: /src/pdns/pdns/dnsname.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: DNSName
    signature: DNSName & operator=(const DNSName& rhs)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsname.hh:105,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 102
    functionDepth: 0
    functionLinenumber: 102
    functionLinenumberEnd: 108
    functionName: '& operator=(DNSName&& rhs) noexcept'
    functionSourceFile: /src/pdns/pdns/dnsname.hh
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: DNSName
    signature: DNSName & operator=(DNSName&& rhs) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 1
    argNames:
    - ' a'
    argTypes:
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 109
    functionDepth: 0
    functionLinenumber: 109
    functionLinenumberEnd: 109
    functionName: DNSName::DNSName
    functionSourceFile: /src/pdns/pdns/dnsname.hh
    functionUses: 43
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void DNSName(const DNSName& a)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 1
    argNames:
    - ' a'
    argTypes:
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 110
    functionDepth: 0
    functionLinenumber: 110
    functionLinenumberEnd: 110
    functionName: DNSName::DNSName
    functionSourceFile: /src/pdns/pdns/dnsname.hh
    functionUses: 43
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void DNSName(DNSName&& a)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' other'
    argTypes:
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 117
    functionDepth: 0
    functionLinenumber: 117
    functionLinenumberEnd: 117
    functionName: operator!=(const DNSName& other) const
    functionSourceFile: /src/pdns/pdns/dnsname.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool operator!=(const DNSName& other) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/dnsname.hh:124,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 124
      start: 124
    functionDepth: 0
    functionLinenumber: 124
    functionLinenumberEnd: 124
    functionName: DNSName::toStringNoDot
    functionSourceFile: /src/pdns/pdns/dnsname.hh
    functionUses: 4
    functionsReached:
    - DNSName::toString
    linkageType: ''
    returnType: std::string
    signature: std::string toStringNoDot() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DNSName::isRoot
      Src: /src/pdns/pdns/dnsname.hh:125,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/dnsname.hh:125,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 125
      start: 125
    functionDepth: 0
    functionLinenumber: 125
    functionLinenumberEnd: 125
    functionName: DNSName::toStringRootDot
    functionSourceFile: /src/pdns/pdns/dnsname.hh
    functionUses: 2
    functionsReached:
    - DNSName::toString
    - DNSName::isRoot
    linkageType: ''
    returnType: std::string
    signature: std::string toStringRootDot() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSName::makeUsLowerCase
      Src: /src/pdns/pdns/dnsname.hh:139,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 141
      start: 136
    functionDepth: 0
    functionLinenumber: 136
    functionLinenumberEnd: 141
    functionName: DNSName::makeLowerCase
    functionSourceFile: /src/pdns/pdns/dnsname.hh
    functionUses: 3
    functionsReached:
    - DNSName::makeUsLowerCase
    linkageType: ''
    returnType: DNSName
    signature: DNSName makeLowerCase() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dns_tolower
      Src: /src/pdns/pdns/dnsname.hh:145,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 142
    functionDepth: 0
    functionLinenumber: 142
    functionLinenumberEnd: 147
    functionName: DNSName::makeUsLowerCase
    functionSourceFile: /src/pdns/pdns/dnsname.hh
    functionUses: 1
    functionsReached:
    - dns_tolower
    linkageType: ''
    returnType: void
    signature: void makeUsLowerCase()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSName::empty
      Src: /src/pdns/pdns/dnsname.hh:155,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 155
    functionDepth: 0
    functionLinenumber: 155
    functionLinenumberEnd: 155
    functionName: DNSName::empty
    functionSourceFile: /src/pdns/pdns/dnsname.hh
    functionUses: 23
    functionsReached:
    - DNSName::empty
    linkageType: ''
    returnType: bool
    signature: bool empty() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsname.hh:156,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 156
      start: 156
    functionDepth: 0
    functionLinenumber: 156
    functionLinenumberEnd: 156
    functionName: DNSName::isRoot
    functionSourceFile: /src/pdns/pdns/dnsname.hh
    functionUses: 6
    functionsReached:
    - size
    linkageType: ''
    returnType: bool
    signature: bool isRoot() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSName::empty
      Src: /src/pdns/pdns/dnsname.hh:157,1
    - Dst: DNSName::isRoot
      Src: /src/pdns/pdns/dnsname.hh:157,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 157
      start: 157
    functionDepth: 0
    functionLinenumber: 157
    functionLinenumberEnd: 157
    functionName: DNSName::hasLabels
    functionSourceFile: /src/pdns/pdns/dnsname.hh
    functionUses: 2
    functionsReached:
    - DNSName::isRoot
    - DNSName::empty
    linkageType: ''
    returnType: bool
    signature: bool hasLabels() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSName::clear
      Src: /src/pdns/pdns/dnsname.hh:158,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 158
      start: 158
    functionDepth: 0
    functionLinenumber: 158
    functionLinenumberEnd: 158
    functionName: DNSName::clear
    functionSourceFile: /src/pdns/pdns/dnsname.hh
    functionUses: 4
    functionsReached:
    - DNSName::clear
    linkageType: ''
    returnType: void
    signature: void clear()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: burtleCI
      Src: /src/pdns/pdns/dnsname.hh:162,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 163
      start: 160
    functionDepth: 0
    functionLinenumber: 160
    functionLinenumberEnd: 163
    functionName: DNSName::hash
    functionSourceFile: /src/pdns/pdns/dnsname.hh
    functionUses: 1
    functionsReached:
    - burtleCI
    linkageType: ''
    returnType: size_t
    signature: size_t hash(size_t init=0) const
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsname.hh:166,1
    - Dst: d_storage::size
      Src: /src/pdns/pdns/dnsname.hh:166,1
    - Dst: throwSafeRangeError
      Src: /src/pdns/pdns/dnsname.hh:167,1
    - Dst: d_storage::data
      Src: /src/pdns/pdns/dnsname.hh:167,1
    - Dst: d_storage::size
      Src: /src/pdns/pdns/dnsname.hh:167,1
    - Dst: empty
      Src: /src/pdns/pdns/dnsname.hh:168,1
    - Dst: empty
      Src: /src/pdns/pdns/dnsname.hh:171,1
    - Dst: replace
      Src: /src/pdns/pdns/dnsname.hh:174,1
    - Dst: length
      Src: /src/pdns/pdns/dnsname.hh:174,1
    - Dst: d_storage::length
      Src: /src/pdns/pdns/dnsname.hh:174,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 177
      start: 164
    functionDepth: 0
    functionLinenumber: 164
    functionLinenumberEnd: 177
    functionName: '& operator+=(const DNSName& rhs)'
    functionSourceFile: /src/pdns/pdns/dnsname.hh
    functionUses: 0
    functionsReached:
    - length
    - d_storage::size
    - d_storage::length
    - d_storage::data
    - size
    - throwSafeRangeError
    - empty
    - replace
    linkageType: ''
    returnType: DNSName
    signature: DNSName & operator+=(const DNSName& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dns_tolower
      Src: /src/pdns/pdns/dnsname.hh:185,1
    - Dst: dns_tolower
      Src: /src/pdns/pdns/dnsname.hh:185,1
    - Dst: std::lexicographical_compare
      Src: /src/pdns/pdns/dnsname.hh:190,1
    - Dst: rbegin
      Src: /src/pdns/pdns/dnsname.hh:190,1
    - Dst: rend
      Src: /src/pdns/pdns/dnsname.hh:190,1
    - Dst: d_storage::rbegin
      Src: /src/pdns/pdns/dnsname.hh:191,1
    - Dst: d_storage::rend
      Src: /src/pdns/pdns/dnsname.hh:191,1
    - Dst: DNSNameCompare
      Src: /src/pdns/pdns/dnsname.hh:191,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 192
      start: 179
    functionDepth: 0
    functionLinenumber: 179
    functionLinenumberEnd: 192
    functionName: operator<(const DNSName& rhs)  const
    functionSourceFile: /src/pdns/pdns/dnsname.hh
    functionUses: 0
    functionsReached:
    - std::lexicographical_compare
    - dns_tolower
    - rbegin
    - rend
    - DNSNameCompare
    - d_storage::rbegin
    - d_storage::rend
    linkageType: ''
    returnType: bool
    signature: bool operator<(const DNSName& rhs)  const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dns_tolower
      Src: /src/pdns/pdns/dnsname.hh:185,1
    - Dst: dns_tolower
      Src: /src/pdns/pdns/dnsname.hh:185,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' lhs'
    - ' rhs'
    argTypes:
    - unsigned char
    - unsigned char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 186
      start: 183
    functionDepth: 0
    functionLinenumber: 183
    functionLinenumberEnd: 186
    functionName: operator()(const unsigned char& lhs, const unsigned char& rhs) const
    functionSourceFile: /src/pdns/pdns/dnsname.hh
    functionUses: 0
    functionsReached:
    - dns_tolower
    linkageType: ''
    returnType: bool
    signature: bool operator()(const unsigned char& lhs, const unsigned char& rhs)
      const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSName::canonCompare_three_way
      Src: /src/pdns/pdns/dnsname.hh:196,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 196
      start: 196
    functionDepth: 0
    functionLinenumber: 196
    functionLinenumberEnd: 196
    functionName: DNSName::canonCompare
    functionSourceFile: /src/pdns/pdns/dnsname.hh
    functionUses: 0
    functionsReached:
    - DNSName::canonCompare_three_way
    linkageType: ''
    returnType: bool
    signature: bool canonCompare(const DNSName& rhs, bool pretty = false) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 202
      start: 200
    functionDepth: 0
    functionLinenumber: 200
    functionLinenumberEnd: 202
    functionName: '& getStorage() const'
    functionSourceFile: /src/pdns/pdns/dnsname.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: string_t
    signature: string_t & getStorage() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsname.hh:206,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 209
      start: 204
    functionDepth: 0
    functionLinenumber: 204
    functionLinenumberEnd: 209
    functionName: DNSName::sizeEstimate
    functionSourceFile: /src/pdns/pdns/dnsname.hh
    functionUses: 0
    functionsReached:
    - size
    linkageType: ''
    returnType: size_t
    signature: size_t sizeEstimate() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSName::canonCompare
      Src: /src/pdns/pdns/dnsname.hh:263,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - a
    - ' b'
    argTypes:
    - DNSName
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 264
      start: 261
    functionDepth: 0
    functionLinenumber: 261
    functionLinenumberEnd: 264
    functionName: operator()(const DNSName&a, const DNSName& b) const
    functionSourceFile: /src/pdns/pdns/dnsname.hh
    functionUses: 0
    functionsReached:
    - DNSName::canonCompare
    linkageType: ''
    returnType: bool
    signature: bool operator()(const DNSName&a, const DNSName& b) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ' lhs'
    - ' rhs'
    argTypes:
    - DNSName
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 272
      start: 267
    functionDepth: 0
    functionLinenumber: 267
    functionLinenumberEnd: 272
    functionName: operator+(const DNSName& lhs, const DNSName& rhs)
    functionSourceFile: /src/pdns/pdns/dnsname.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: DNSName
    signature: DNSName operator+(const DNSName& lhs, const DNSName& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 302
      start: 302
    functionDepth: 0
    functionLinenumber: 302
    functionLinenumberEnd: 302
    functionName: ZoneName::ZoneName
    functionSourceFile: /src/pdns/pdns/dnsname.hh
    functionUses: 8
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ZoneName()
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - ZoneName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 311
      start: 304
    functionDepth: 0
    functionLinenumber: 304
    functionLinenumberEnd: 311
    functionName: '& operator=(const ZoneName& rhs)'
    functionSourceFile: /src/pdns/pdns/dnsname.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: ZoneName
    signature: ZoneName & operator=(const ZoneName& rhs)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsname.hh:315,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsname.hh:316,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - ZoneName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 319
      start: 312
    functionDepth: 0
    functionLinenumber: 312
    functionLinenumberEnd: 319
    functionName: '& operator=(ZoneName&& rhs) noexcept'
    functionSourceFile: /src/pdns/pdns/dnsname.hh
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: ZoneName
    signature: ZoneName & operator=(ZoneName&& rhs) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 1
    argNames:
    - ' a'
    argTypes:
    - ZoneName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 320
      start: 320
    functionDepth: 0
    functionLinenumber: 320
    functionLinenumberEnd: 320
    functionName: ZoneName::ZoneName
    functionSourceFile: /src/pdns/pdns/dnsname.hh
    functionUses: 8
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ZoneName(const ZoneName& a)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 1
    argNames:
    - ' a'
    argTypes:
    - ZoneName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 321
      start: 321
    functionDepth: 0
    functionLinenumber: 321
    functionLinenumberEnd: 321
    functionName: ZoneName::ZoneName
    functionSourceFile: /src/pdns/pdns/dnsname.hh
    functionUses: 8
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ZoneName(ZoneName&& a)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - name
    - variant
    argTypes:
    - std::string_view
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 324
      start: 324
    functionDepth: 0
    functionLinenumber: 324
    functionLinenumberEnd: 324
    functionName: ZoneName::ZoneName
    functionSourceFile: /src/pdns/pdns/dnsname.hh
    functionUses: 8
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ZoneName(std::string_view name, std::string_view variant)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' name'
    argTypes:
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 325
      start: 325
    functionDepth: 0
    functionLinenumber: 325
    functionLinenumberEnd: 325
    functionName: ZoneName::ZoneName
    functionSourceFile: /src/pdns/pdns/dnsname.hh
    functionUses: 8
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ZoneName(const DNSName& name, std::string_view variant = ""sv)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ZoneName::isPartOf
      Src: /src/pdns/pdns/dnsname.hh:328,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - ZoneName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 328
      start: 328
    functionDepth: 0
    functionLinenumber: 328
    functionLinenumberEnd: 328
    functionName: ZoneName::isPartOf
    functionSourceFile: /src/pdns/pdns/dnsname.hh
    functionUses: 1
    functionsReached:
    - ZoneName::isPartOf
    linkageType: ''
    returnType: bool
    signature: bool isPartOf(const ZoneName& rhs) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ZoneName::isPartOf
      Src: /src/pdns/pdns/dnsname.hh:329,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 329
      start: 329
    functionDepth: 0
    functionLinenumber: 329
    functionLinenumberEnd: 329
    functionName: ZoneName::isPartOf
    functionSourceFile: /src/pdns/pdns/dnsname.hh
    functionUses: 2
    functionsReached:
    - ZoneName::isPartOf
    linkageType: ''
    returnType: bool
    signature: bool isPartOf(const DNSName& rhs) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - ZoneName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 330
      start: 330
    functionDepth: 0
    functionLinenumber: 330
    functionLinenumberEnd: 330
    functionName: operator==(const ZoneName& rhs) const
    functionSourceFile: /src/pdns/pdns/dnsname.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool operator==(const ZoneName& rhs) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - ZoneName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 331
      start: 331
    functionDepth: 0
    functionLinenumber: 331
    functionLinenumberEnd: 331
    functionName: operator!=(const ZoneName& rhs) const
    functionSourceFile: /src/pdns/pdns/dnsname.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool operator!=(const ZoneName& rhs) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ZoneName::toString
      Src: /src/pdns/pdns/dnsname.hh:334,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' output'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 334
      start: 334
    functionDepth: 0
    functionLinenumber: 334
    functionLinenumberEnd: 334
    functionName: ZoneName::toString
    functionSourceFile: /src/pdns/pdns/dnsname.hh
    functionUses: 10
    functionsReached:
    - ZoneName::toString
    linkageType: ''
    returnType: void
    signature: void toString(std::string& output, const std::string& separator=".",
      const bool trailing=true) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ZoneName::chopOff
      Src: /src/pdns/pdns/dnsname.hh:339,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 339
      start: 339
    functionDepth: 0
    functionLinenumber: 339
    functionLinenumberEnd: 339
    functionName: ZoneName::chopOff
    functionSourceFile: /src/pdns/pdns/dnsname.hh
    functionUses: 6
    functionsReached:
    - ZoneName::chopOff
    linkageType: ''
    returnType: bool
    signature: bool chopOff()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ZoneName::d_name::makeUsLowerCase
      Src: /src/pdns/pdns/dnsname.hh:343,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 345
      start: 340
    functionDepth: 0
    functionLinenumber: 340
    functionLinenumberEnd: 345
    functionName: ZoneName::makeLowerCase
    functionSourceFile: /src/pdns/pdns/dnsname.hh
    functionUses: 1
    functionsReached:
    - ZoneName::d_name::makeUsLowerCase
    linkageType: ''
    returnType: ZoneName
    signature: ZoneName makeLowerCase() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ZoneName::makeUsLowerCase
      Src: /src/pdns/pdns/dnsname.hh:346,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 346
      start: 346
    functionDepth: 0
    functionLinenumber: 346
    functionLinenumberEnd: 346
    functionName: ZoneName::makeUsLowerCase
    functionSourceFile: /src/pdns/pdns/dnsname.hh
    functionUses: 3
    functionsReached:
    - ZoneName::makeUsLowerCase
    linkageType: ''
    returnType: void
    signature: void makeUsLowerCase()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ZoneName::empty
      Src: /src/pdns/pdns/dnsname.hh:347,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 347
      start: 347
    functionDepth: 0
    functionLinenumber: 347
    functionLinenumberEnd: 347
    functionName: ZoneName::empty
    functionSourceFile: /src/pdns/pdns/dnsname.hh
    functionUses: 6
    functionsReached:
    - ZoneName::empty
    linkageType: ''
    returnType: bool
    signature: bool empty() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ZoneName::clear
      Src: /src/pdns/pdns/dnsname.hh:348,1
    - Dst: ZoneName::clear
      Src: /src/pdns/pdns/dnsname.hh:348,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 348
      start: 348
    functionDepth: 0
    functionLinenumber: 348
    functionLinenumberEnd: 348
    functionName: ZoneName::clear
    functionSourceFile: /src/pdns/pdns/dnsname.hh
    functionUses: 1
    functionsReached:
    - ZoneName::clear
    linkageType: ''
    returnType: void
    signature: void clear()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ZoneName::trimToLabels
      Src: /src/pdns/pdns/dnsname.hh:349,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - trim
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 349
      start: 349
    functionDepth: 0
    functionLinenumber: 349
    functionLinenumberEnd: 349
    functionName: ZoneName::trimToLabels
    functionSourceFile: /src/pdns/pdns/dnsname.hh
    functionUses: 1
    functionsReached:
    - ZoneName::trimToLabels
    linkageType: ''
    returnType: void
    signature: void trimToLabels(unsigned int trim)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ZoneName::canonCompare_three_way
      Src: /src/pdns/pdns/dnsname.hh:355,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - ZoneName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 355
      start: 355
    functionDepth: 0
    functionLinenumber: 355
    functionLinenumberEnd: 355
    functionName: ZoneName::canonCompare
    functionSourceFile: /src/pdns/pdns/dnsname.hh
    functionUses: 0
    functionsReached:
    - ZoneName::canonCompare_three_way
    linkageType: ''
    returnType: bool
    signature: bool canonCompare(const ZoneName& rhs) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 358
      start: 358
    functionDepth: 0
    functionLinenumber: 358
    functionLinenumberEnd: 358
    functionName: operator const DNSName&() const
    functionSourceFile: /src/pdns/pdns/dnsname.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void operator const DNSName&() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 359
      start: 359
    functionDepth: 0
    functionLinenumber: 359
    functionLinenumberEnd: 359
    functionName: operator DNSName&()
    functionSourceFile: /src/pdns/pdns/dnsname.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void operator DNSName&()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ZoneName::empty
      Src: /src/pdns/pdns/dnsname.hh:361,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 361
      start: 361
    functionDepth: 0
    functionLinenumber: 361
    functionLinenumberEnd: 361
    functionName: ZoneName::hasVariant
    functionSourceFile: /src/pdns/pdns/dnsname.hh
    functionUses: 5
    functionsReached:
    - ZoneName::empty
    linkageType: ''
    returnType: bool
    signature: bool hasVariant() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 362
      start: 362
    functionDepth: 0
    functionLinenumber: 362
    functionLinenumberEnd: 362
    functionName: ZoneName::getVariant
    functionSourceFile: /src/pdns/pdns/dnsname.hh
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string getVariant() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash
      Src: /src/pdns/pdns/dnsname.hh:382,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' dn'
    argTypes:
    - ZoneName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 382
      start: 382
    functionDepth: 2
    functionLinenumber: 382
    functionLinenumberEnd: 382
    functionName: operator () (const ZoneName& dn) const
    functionSourceFile: /src/pdns/pdns/dnsname.hh
    functionUses: 0
    functionsReached:
    - hash
    linkageType: ''
    returnType: size_t
    signature: size_t operator () (const ZoneName& dn) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash
      Src: /src/pdns/pdns/dnsname.hh:382,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' dn'
    argTypes:
    - ZoneName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 382
      start: 382
    functionDepth: 2
    functionLinenumber: 382
    functionLinenumberEnd: 382
    functionName: operator () (const ZoneName& dn) const
    functionSourceFile: /src/pdns/pdns/dnsname.hh
    functionUses: 0
    functionsReached:
    - hash
    linkageType: ''
    returnType: size_t
    signature: size_t operator () (const ZoneName& dn) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: canonCompare
      Src: /src/pdns/pdns/dnsname.hh:390,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' a'
    - ' b'
    argTypes:
    - ZoneName
    - ZoneName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 391
      start: 388
    functionDepth: 0
    functionLinenumber: 388
    functionLinenumberEnd: 391
    functionName: operator()(const ZoneName& a, const ZoneName& b) const
    functionSourceFile: /src/pdns/pdns/dnsname.hh
    functionUses: 0
    functionsReached:
    - canonCompare
    linkageType: ''
    returnType: bool
    signature: bool operator()(const ZoneName& a, const ZoneName& b) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsname.hh:404,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 405
      start: 403
    functionDepth: 0
    functionLinenumber: 403
    functionLinenumberEnd: 405
    functionName: SuffixMatchTree
    functionSourceFile: /src/pdns/pdns/dnsname.hh
    functionUses: 1
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void SuffixMatchTree(std::string name = "", bool endNode_ = false)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - SuffixMatchTree
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 412
      start: 407
    functionDepth: 0
    functionLinenumber: 407
    functionLinenumberEnd: 412
    functionName: SuffixMatchTree
    functionSourceFile: /src/pdns/pdns/dnsname.hh
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void SuffixMatchTree(const SuffixMatchTree& rhs)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - rhs
    argTypes:
    - SuffixMatchTree
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 422
      start: 413
    functionDepth: 0
    functionLinenumber: 413
    functionLinenumberEnd: 422
    functionName: '& operator=(const SuffixMatchTree &rhs)'
    functionSourceFile: /src/pdns/pdns/dnsname.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: SuffixMatchTree
    signature: SuffixMatchTree & operator=(const SuffixMatchTree &rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strcasecmp
      Src: /src/pdns/pdns/dnsname.hh:425,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsname.hh:425,1
    - Dst: d_name::c_str
      Src: /src/pdns/pdns/dnsname.hh:425,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - SuffixMatchTree
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 426
      start: 423
    functionDepth: 0
    functionLinenumber: 423
    functionLinenumberEnd: 426
    functionName: operator<(const SuffixMatchTree& rhs) const
    functionSourceFile: /src/pdns/pdns/dnsname.hh
    functionUses: 0
    functionsReached:
    - c_str
    - d_name::c_str
    - strcasecmp
    linkageType: ''
    returnType: bool
    signature: bool operator<(const SuffixMatchTree& rhs) const
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: std::min
      Src: /src/pdns/pdns/dnsname.hh:441,1
    - Dst: d_name::size
      Src: /src/pdns/pdns/dnsname.hh:441,1
    - Dst: d_name::size
      Src: /src/pdns/pdns/dnsname.hh:441,1
    - Dst: strncasecmp
      Src: /src/pdns/pdns/dnsname.hh:442,1
    - Dst: d_name::data
      Src: /src/pdns/pdns/dnsname.hh:442,1
    - Dst: d_name::data
      Src: /src/pdns/pdns/dnsname.hh:442,1
    - Dst: d_name::size
      Src: /src/pdns/pdns/dnsname.hh:446,1
    - Dst: d_name::size
      Src: /src/pdns/pdns/dnsname.hh:446,1
    - Dst: d_name::size
      Src: /src/pdns/pdns/dnsname.hh:449,1
    - Dst: d_name::size
      Src: /src/pdns/pdns/dnsname.hh:449,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - ' smt'
    argTypes:
    - SuffixMatchTree
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 450
      start: 439
    functionDepth: 0
    functionLinenumber: 439
    functionLinenumberEnd: 450
    functionName: operator<(const SuffixMatchTree& smt) const
    functionSourceFile: /src/pdns/pdns/dnsname.hh
    functionUses: 0
    functionsReached:
    - std::min
    - d_name::data
    - d_name::size
    - strncasecmp
    linkageType: ''
    returnType: bool
    signature: bool operator<(const SuffixMatchTree& smt) const
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: std::min
      Src: /src/pdns/pdns/dnsname.hh:455,1
    - Dst: d_name::size
      Src: /src/pdns/pdns/dnsname.hh:455,1
    - Dst: d_name::size
      Src: /src/pdns/pdns/dnsname.hh:455,1
    - Dst: strncasecmp
      Src: /src/pdns/pdns/dnsname.hh:456,1
    - Dst: d_name::data
      Src: /src/pdns/pdns/dnsname.hh:456,1
    - Dst: d_name::data
      Src: /src/pdns/pdns/dnsname.hh:456,1
    - Dst: d_name::size
      Src: /src/pdns/pdns/dnsname.hh:460,1
    - Dst: d_name::size
      Src: /src/pdns/pdns/dnsname.hh:460,1
    - Dst: d_name::size
      Src: /src/pdns/pdns/dnsname.hh:463,1
    - Dst: d_name::size
      Src: /src/pdns/pdns/dnsname.hh:463,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - ' lk'
    argTypes:
    - LightKey
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 464
      start: 453
    functionDepth: 0
    functionLinenumber: 453
    functionLinenumberEnd: 464
    functionName: operator<(const LightKey& lk) const
    functionSourceFile: /src/pdns/pdns/dnsname.hh
    functionUses: 0
    functionsReached:
    - std::min
    - d_name::data
    - d_name::size
    - strncasecmp
    linkageType: ''
    returnType: bool
    signature: bool operator<(const LightKey& lk) const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: visit
      Src: /src/pdns/pdns/dnsname.hh:469,1
    - Dst: v
      Src: /src/pdns/pdns/dnsname.hh:473,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - ' v'
    argTypes:
    - V
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 475
      start: 467
    functionDepth: 0
    functionLinenumber: 467
    functionLinenumberEnd: 475
    functionName: visit
    functionSourceFile: /src/pdns/pdns/dnsname.hh
    functionUses: 4
    functionsReached:
    - visit
    - v
    linkageType: ''
    returnType: void
    signature: void visit(const V& v) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getRawLabels
      Src: /src/pdns/pdns/dnsname.hh:479,1
    - Dst: add
      Src: /src/pdns/pdns/dnsname.hh:480,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsname.hh:480,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 2
    argNames:
    - ' name'
    - ' t'
    argTypes:
    - DNSName
    - T
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 481
      start: 477
    functionDepth: 0
    functionLinenumber: 477
    functionLinenumberEnd: 481
    functionName: add
    functionSourceFile: /src/pdns/pdns/dnsname.hh
    functionUses: 21
    functionsReached:
    - add
    - getRawLabels
    - std::move
    linkageType: ''
    returnType: void
    signature: void add(const DNSName& name, T&& t)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/dnsname.hh:485,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsname.hh:487,1
    - Dst: size
      Src: /src/pdns/pdns/dnsname.hh:489,1
    - Dst: emplace
      Src: /src/pdns/pdns/dnsname.hh:490,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsname.hh:490,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsname.hh:498,1
    - Dst: emplace
      Src: /src/pdns/pdns/dnsname.hh:501,1
    - Dst: rbegin
      Src: /src/pdns/pdns/dnsname.hh:501,1
    - Dst: pop_back
      Src: /src/pdns/pdns/dnsname.hh:502,1
    - Dst: auto::first::add
      Src: /src/pdns/pdns/dnsname.hh:503,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsname.hh:503,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 2
    argNames:
    - ' labels'
    - ' value'
    argTypes:
    - std::vector<std::string>
    - T
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 505
      start: 483
    functionDepth: 0
    functionLinenumber: 483
    functionLinenumberEnd: 505
    functionName: add
    functionSourceFile: /src/pdns/pdns/dnsname.hh
    functionUses: 22
    functionsReached:
    - std::move
    - pop_back
    - rbegin
    - size
    - begin
    - empty
    - emplace
    - auto::first::add
    linkageType: ''
    returnType: void
    signature: void add(std::vector<std::string>& labels, T&& value) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSName::getRawLabels
      Src: /src/pdns/pdns/dnsname.hh:509,1
    - Dst: remove
      Src: /src/pdns/pdns/dnsname.hh:510,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - name
    argTypes:
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 511
      start: 507
    functionDepth: 0
    functionLinenumber: 507
    functionLinenumberEnd: 511
    functionName: remove
    functionSourceFile: /src/pdns/pdns/dnsname.hh
    functionUses: 7
    functionsReached:
    - DNSName::getRawLabels
    - remove
    linkageType: ''
    returnType: void
    signature: void remove(const DNSName &name, bool subtree=false) const
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/dnsname.hh:518,1
    - Dst: clear
      Src: /src/pdns/pdns/dnsname.hh:521,1
    - Dst: rbegin
      Src: /src/pdns/pdns/dnsname.hh:526,1
    - Dst: find
      Src: /src/pdns/pdns/dnsname.hh:527,1
    - Dst: end
      Src: /src/pdns/pdns/dnsname.hh:528,1
    - Dst: pop_back
      Src: /src/pdns/pdns/dnsname.hh:534,1
    - Dst: empty
      Src: /src/pdns/pdns/dnsname.hh:535,1
    - Dst: auto::children::clear
      Src: /src/pdns/pdns/dnsname.hh:540,1
    - Dst: auto::children::empty
      Src: /src/pdns/pdns/dnsname.hh:544,1
    - Dst: erase
      Src: /src/pdns/pdns/dnsname.hh:545,1
    - Dst: auto::remove
      Src: /src/pdns/pdns/dnsname.hh:551,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 23
    argCount: 1
    argNames:
    - ' labels'
    argTypes:
    - std::vector<std::string>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 552
      start: 516
    functionDepth: 1
    functionLinenumber: 516
    functionLinenumberEnd: 552
    functionName: remove
    functionSourceFile: /src/pdns/pdns/dnsname.hh
    functionUses: 8
    functionsReached:
    - auto::children::empty
    - auto::children::clear
    - pop_back
    - auto::remove
    - rbegin
    - end
    - clear
    - empty
    - erase
    - find
    linkageType: ''
    returnType: void
    signature: void remove(std::vector<std::string>& labels, bool subtree = false)
      const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: getBestNode
      Src: /src/pdns/pdns/dnsname.hh:556,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ' name'
    argTypes:
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 561
      start: 554
    functionDepth: 0
    functionLinenumber: 554
    functionLinenumberEnd: 561
    functionName: lookup
    functionSourceFile: /src/pdns/pdns/dnsname.hh
    functionUses: 41
    functionsReached:
    - getBestNode
    linkageType: ''
    returnType: T
    signature: T * lookup(const DNSName& name) const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/dnsname.hh:565,1
    - Dst: std::optional<DNSName>
      Src: /src/pdns/pdns/dnsname.hh:566,1
    - Dst: getRawLabelsVisitor
      Src: /src/pdns/pdns/dnsname.hh:569,1
    - Dst: getBestMatch
      Src: /src/pdns/pdns/dnsname.hh:570,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ' name'
    argTypes:
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 571
      start: 563
    functionDepth: 0
    functionLinenumber: 563
    functionLinenumberEnd: 571
    functionName: getBestMatch
    functionSourceFile: /src/pdns/pdns/dnsname.hh
    functionUses: 2
    functionsReached:
    - empty
    - getBestMatch
    - std::optional<DNSName>
    - getRawLabelsVisitor
    linkageType: ''
    returnType: std::optional<DNSName>
    signature: std::optional<DNSName> getBestMatch(const DNSName& name) const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/dnsname.hh:577,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsname.hh:577,1
    - Dst: getNodes
      Src: /src/pdns/pdns/dnsname.hh:580,1
    - Dst: std::vector::reserve
      Src: /src/pdns/pdns/dnsname.hh:581,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/dnsname.hh:581,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsname.hh:581,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/dnsname.hh:583,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsname.hh:583,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 587
      start: 574
    functionDepth: 0
    functionLinenumber: 574
    functionLinenumberEnd: 587
    functionName: getNodes
    functionSourceFile: /src/pdns/pdns/dnsname.hh
    functionUses: 1
    functionsReached:
    - std::vector::push_back
    - std::vector::size
    - getNodes
    - DNSName
    - std::vector::reserve
    - auto::size
    linkageType: ''
    returnType: std::vector<DNSName>
    signature: std::vector<DNSName> getNodes() const
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/dnsname.hh:592,1
    - Dst: getRawLabelsVisitor
      Src: /src/pdns/pdns/dnsname.hh:599,1
    - Dst: getBestNode
      Src: /src/pdns/pdns/dnsname.hh:600,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - ' name'
    argTypes:
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 601
      start: 590
    functionDepth: 0
    functionLinenumber: 590
    functionLinenumberEnd: 601
    functionName: getBestNode
    functionSourceFile: /src/pdns/pdns/dnsname.hh
    functionUses: 2
    functionsReached:
    - empty
    - getBestNode
    - getRawLabelsVisitor
    linkageType: ''
    returnType: SuffixMatchTree
    signature: SuffixMatchTree * getBestNode(const DNSName& name)  const
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/dnsname.hh:605,1
    - Dst: back
      Src: /src/pdns/pdns/dnsname.hh:612,1
    - Dst: find
      Src: /src/pdns/pdns/dnsname.hh:613,1
    - Dst: end
      Src: /src/pdns/pdns/dnsname.hh:614,1
    - Dst: pop_back
      Src: /src/pdns/pdns/dnsname.hh:620,1
    - Dst: auto::getBestNode
      Src: /src/pdns/pdns/dnsname.hh:621,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 1
    argNames:
    - ' visitor'
    argTypes:
    - DNSName::RawLabelsVisitor
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 626
      start: 603
    functionDepth: 0
    functionLinenumber: 603
    functionLinenumberEnd: 626
    functionName: getBestNode
    functionSourceFile: /src/pdns/pdns/dnsname.hh
    functionUses: 3
    functionsReached:
    - pop_back
    - end
    - back
    - empty
    - find
    - auto::getBestNode
    linkageType: ''
    returnType: SuffixMatchTree
    signature: SuffixMatchTree * getBestNode(DNSName::RawLabelsVisitor& visitor) const
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/dnsname.hh:630,1
    - Dst: std::optional<DNSName>
      Src: /src/pdns/pdns/dnsname.hh:632,1
    - Dst: back
      Src: /src/pdns/pdns/dnsname.hh:637,1
    - Dst: find
      Src: /src/pdns/pdns/dnsname.hh:638,1
    - Dst: end
      Src: /src/pdns/pdns/dnsname.hh:639,1
    - Dst: std::optional<DNSName>
      Src: /src/pdns/pdns/dnsname.hh:641,1
    - Dst: pop_back
      Src: /src/pdns/pdns/dnsname.hh:645,1
    - Dst: auto::getBestMatch
      Src: /src/pdns/pdns/dnsname.hh:646,1
    - Dst: empty
      Src: /src/pdns/pdns/dnsname.hh:648,1
    - Dst: auto::appendRawLabel
      Src: /src/pdns/pdns/dnsname.hh:649,1
    - Dst: std::optional<DNSName>
      Src: /src/pdns/pdns/dnsname.hh:653,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 1
    argNames:
    - ' visitor'
    argTypes:
    - DNSName::RawLabelsVisitor
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 654
      start: 628
    functionDepth: 0
    functionLinenumber: 628
    functionLinenumberEnd: 654
    functionName: getBestMatch
    functionSourceFile: /src/pdns/pdns/dnsname.hh
    functionUses: 3
    functionsReached:
    - pop_back
    - end
    - std::optional<DNSName>
    - back
    - auto::getBestMatch
    - auto::appendRawLabel
    - empty
    - find
    linkageType: ''
    returnType: std::optional<DNSName>
    signature: std::optional<DNSName> getBestMatch(DNSName::RawLabelsVisitor& visitor)
      const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 662
      start: 662
    functionDepth: 0
    functionLinenumber: 662
    functionLinenumberEnd: 662
    functionName: SuffixMatchNode
    functionSourceFile: /src/pdns/pdns/dnsname.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void SuffixMatchNode()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: add
      Src: /src/pdns/pdns/dnsname.hh:667,1
    - Dst: insert
      Src: /src/pdns/pdns/dnsname.hh:668,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ' dnsname'
    argTypes:
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 669
      start: 665
    functionDepth: 1
    functionLinenumber: 665
    functionLinenumberEnd: 669
    functionName: add
    functionSourceFile: /src/pdns/pdns/dnsname.hh
    functionUses: 23
    functionsReached:
    - add
    - insert
    linkageType: ''
    returnType: void
    signature: void add(const DNSName& dnsname)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: add
      Src: /src/pdns/pdns/dnsname.hh:673,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsname.hh:673,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' name'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 674
      start: 671
    functionDepth: 0
    functionLinenumber: 671
    functionLinenumberEnd: 674
    functionName: add
    functionSourceFile: /src/pdns/pdns/dnsname.hh
    functionUses: 24
    functionsReached:
    - add
    - DNSName
    linkageType: ''
    returnType: void
    signature: void add(const std::string& name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: add
      Src: /src/pdns/pdns/dnsname.hh:678,1
    - Dst: DNSName::DNSName
      Src: /src/pdns/pdns/dnsname.hh:679,1
    - Dst: std::vector<std::string>::empty
      Src: /src/pdns/pdns/dnsname.hh:680,1
    - Dst: DNSName::appendRawLabel
      Src: /src/pdns/pdns/dnsname.hh:681,1
    - Dst: std::vector<std::string>::back
      Src: /src/pdns/pdns/dnsname.hh:681,1
    - Dst: std::vector<std::string>::pop_back
      Src: /src/pdns/pdns/dnsname.hh:682,1
    - Dst: insert
      Src: /src/pdns/pdns/dnsname.hh:684,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - labels
    argTypes:
    - std::vector<std::string>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 685
      start: 676
    functionDepth: 1
    functionLinenumber: 676
    functionLinenumberEnd: 685
    functionName: add
    functionSourceFile: /src/pdns/pdns/dnsname.hh
    functionUses: 25
    functionsReached:
    - add
    - std::vector<std::string>::empty
    - std::vector<std::string>::pop_back
    - DNSName::appendRawLabel
    - insert
    - DNSName::DNSName
    - std::vector<std::string>::back
    linkageType: ''
    returnType: void
    signature: void add(std::vector<std::string> labels)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: remove
      Src: /src/pdns/pdns/dnsname.hh:689,1
    - Dst: erase
      Src: /src/pdns/pdns/dnsname.hh:690,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ' name'
    argTypes:
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 691
      start: 687
    functionDepth: 0
    functionLinenumber: 687
    functionLinenumberEnd: 691
    functionName: remove
    functionSourceFile: /src/pdns/pdns/dnsname.hh
    functionUses: 9
    functionsReached:
    - erase
    - remove
    linkageType: ''
    returnType: void
    signature: void remove(const DNSName& name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: remove
      Src: /src/pdns/pdns/dnsname.hh:695,1
    - Dst: DNSName::DNSName
      Src: /src/pdns/pdns/dnsname.hh:696,1
    - Dst: std::vector<std::string>::empty
      Src: /src/pdns/pdns/dnsname.hh:697,1
    - Dst: DNSName::appendRawLabel
      Src: /src/pdns/pdns/dnsname.hh:698,1
    - Dst: std::vector<std::string>::back
      Src: /src/pdns/pdns/dnsname.hh:698,1
    - Dst: std::vector<std::string>::pop_back
      Src: /src/pdns/pdns/dnsname.hh:699,1
    - Dst: erase
      Src: /src/pdns/pdns/dnsname.hh:701,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - labels
    argTypes:
    - std::vector<std::string>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 702
      start: 693
    functionDepth: 0
    functionLinenumber: 693
    functionLinenumberEnd: 702
    functionName: remove
    functionSourceFile: /src/pdns/pdns/dnsname.hh
    functionUses: 10
    functionsReached:
    - std::vector<std::string>::empty
    - std::vector<std::string>::pop_back
    - DNSName::appendRawLabel
    - DNSName::DNSName
    - erase
    - std::vector<std::string>::back
    - remove
    linkageType: ''
    returnType: void
    signature: void remove(std::vector<std::string> labels)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lookup
      Src: /src/pdns/pdns/dnsname.hh:706,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' dnsname'
    argTypes:
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 707
      start: 704
    functionDepth: 0
    functionLinenumber: 704
    functionLinenumberEnd: 707
    functionName: check
    functionSourceFile: /src/pdns/pdns/dnsname.hh
    functionUses: 6
    functionsReached:
    - lookup
    linkageType: ''
    returnType: bool
    signature: bool check(const DNSName& dnsname) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getBestMatch
      Src: /src/pdns/pdns/dnsname.hh:711,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' name'
    argTypes:
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 712
      start: 709
    functionDepth: 0
    functionLinenumber: 709
    functionLinenumberEnd: 712
    functionName: getBestMatch
    functionSourceFile: /src/pdns/pdns/dnsname.hh
    functionUses: 4
    functionsReached:
    - getBestMatch
    linkageType: ''
    returnType: std::optional<DNSName>
    signature: std::optional<DNSName> getBestMatch(const DNSName& name) const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: toString
      Src: /src/pdns/pdns/dnsname.hh:723,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 726
      start: 714
    functionDepth: 0
    functionLinenumber: 714
    functionLinenumberEnd: 726
    functionName: toString
    functionSourceFile: /src/pdns/pdns/dnsname.hh
    functionUses: 193
    functionsReached:
    - toString
    linkageType: ''
    returnType: std::string
    signature: std::string toString() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::vector::reserve
      Src: /src/pdns/pdns/dnsname.hh:731,1
    - Dst: size
      Src: /src/pdns/pdns/dnsname.hh:731,1
    - Dst: std::vector::emplace_back
      Src: /src/pdns/pdns/dnsname.hh:733,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 736
      start: 728
    functionDepth: 0
    functionLinenumber: 728
    functionLinenumberEnd: 736
    functionName: toVector
    functionSourceFile: /src/pdns/pdns/dnsname.hh
    functionUses: 0
    functionsReached:
    - std::vector::reserve
    - std::vector::emplace_back
    - size
    linkageType: ''
    returnType: std::vector<DNSName>
    signature: std::vector<DNSName> toVector() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash
      Src: /src/pdns/pdns/dnsname.hh:746,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' dn'
    argTypes:
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 746
      start: 746
    functionDepth: 2
    functionLinenumber: 746
    functionLinenumberEnd: 746
    functionName: operator () (const DNSName& dn) const
    functionSourceFile: /src/pdns/pdns/dnsname.hh
    functionUses: 0
    functionsReached:
    - hash
    linkageType: ''
    returnType: size_t
    signature: size_t operator () (const DNSName& dn) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash
      Src: /src/pdns/pdns/dnsname.hh:746,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' dn'
    argTypes:
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 746
      start: 746
    functionDepth: 2
    functionLinenumber: 746
    functionLinenumberEnd: 746
    functionName: operator () (const DNSName& dn) const
    functionSourceFile: /src/pdns/pdns/dnsname.hh
    functionUses: 0
    functionsReached:
    - hash
    linkageType: ''
    returnType: size_t
    signature: size_t operator () (const DNSName& dn) const
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: DNSName::empty
      Src: /src/pdns/pdns/dnsname.hh:754,1
    - Dst: DNSName::empty
      Src: /src/pdns/pdns/dnsname.hh:754,1
    - Dst: d_storage::size
      Src: /src/pdns/pdns/dnsname.hh:754,1
    - Dst: size
      Src: /src/pdns/pdns/dnsname.hh:754,1
    - Dst: cbegin
      Src: /src/pdns/pdns/dnsname.hh:758,1
    - Dst: d_storage::cbegin
      Src: /src/pdns/pdns/dnsname.hh:759,1
    - Dst: cend
      Src: /src/pdns/pdns/dnsname.hh:760,1
    - Dst: d_storage::cend
      Src: /src/pdns/pdns/dnsname.hh:760,1
    - Dst: dns_tolower
      Src: /src/pdns/pdns/dnsname.hh:761,1
    - Dst: dns_tolower
      Src: /src/pdns/pdns/dnsname.hh:761,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 10
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 766
      start: 752
    functionDepth: 0
    functionLinenumber: 752
    functionLinenumberEnd: 766
    functionName: DNSName::operator==(const DNSName& rhs) const
    functionSourceFile: /src/pdns/pdns/dnsname.hh
    functionUses: 0
    functionsReached:
    - d_storage::size
    - dns_tolower
    - size
    - cbegin
    - DNSName::empty
    - cend
    - d_storage::cbegin
    - d_storage::cend
    linkageType: ''
    returnType: bool
    signature: bool DNSName::operator==(const DNSName& rhs) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::copy
      Src: /src/pdns/pdns/dnsname.hh:771,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsname.hh:771,1
    - Dst: end
      Src: /src/pdns/pdns/dnsname.hh:771,1
    - Dst: std::ostream_iterator<DNSName>
      Src: /src/pdns/pdns/dnsname.hh:771,1
    - Dst: std::ostringstream::str
      Src: /src/pdns/pdns/dnsname.hh:772,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 773
      start: 769
    functionDepth: 0
    functionLinenumber: 769
    functionLinenumberEnd: 773
    functionName: toString
    functionSourceFile: /src/pdns/pdns/dnsname.hh
    functionUses: 193
    functionsReached:
    - std::ostringstream::str
    - end
    - begin
    - std::ostream_iterator<DNSName>
    - std::copy
    linkageType: ''
    returnType: std::string
    signature: std::string toString() const
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: FD_ZERO
      Src: /src/pdns/pdns/unix_utility.cc:63,1
    - Dst: FD_SET
      Src: /src/pdns/pdns/unix_utility.cc:64,1
    - Dst: setNonBlocking
      Src: /src/pdns/pdns/unix_utility.cc:66,1
    - Dst: connect
      Src: /src/pdns/pdns/unix_utility.cc:68,1
    - Dst: select
      Src: /src/pdns/pdns/unix_utility.cc:73,1
    - Dst: setBlocking
      Src: /src/pdns/pdns/unix_utility.cc:74,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 5
    argNames:
    - sock
    - addr
    - sockaddr_size
    - timeout_sec
    - timeout_usec
    argTypes:
    - Utility::sock_t
    - sockaddr*
    - Utility::socklen_t
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 50
    functionDepth: 0
    functionLinenumber: 50
    functionLinenumberEnd: 77
    functionName: Utility::timed_connect
    functionSourceFile: /src/pdns/pdns/unix_utility.cc
    functionUses: 2
    functionsReached:
    - select
    - FD_SET
    - setNonBlocking
    - setBlocking
    - FD_ZERO
    - connect
    linkageType: ''
    returnType: int
    signature: "int Utility::timed_connect( Utility::sock_t sock,\n    const sockaddr
      *addr,\n    Utility::socklen_t sockaddr_size,\n    int timeout_sec,\n    int
      timeout_usec )"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: setsockopt
      Src: /src/pdns/pdns/unix_utility.cc:87,1
    - Dst: SLOG
      Src: /src/pdns/pdns/unix_utility.cc:89,1
    - Dst: stringerror
      Src: /src/pdns/pdns/unix_utility.cc:89,1
    - Dst: withName
      Src: /src/pdns/pdns/unix_utility.cc:90,1
    - Dst: setsockopt
      Src: /src/pdns/pdns/unix_utility.cc:96,1
    - Dst: SLOG
      Src: /src/pdns/pdns/unix_utility.cc:98,1
    - Dst: stringerror
      Src: /src/pdns/pdns/unix_utility.cc:98,1
    - Dst: withName
      Src: /src/pdns/pdns/unix_utility.cc:99,1
    - Dst: setsockopt
      Src: /src/pdns/pdns/unix_utility.cc:104,1
    - Dst: SLOG
      Src: /src/pdns/pdns/unix_utility.cc:106,1
    - Dst: stringerror
      Src: /src/pdns/pdns/unix_utility.cc:106,1
    - Dst: withName
      Src: /src/pdns/pdns/unix_utility.cc:107,1
    - Dst: setsockopt
      Src: /src/pdns/pdns/unix_utility.cc:112,1
    - Dst: SLOG
      Src: /src/pdns/pdns/unix_utility.cc:114,1
    - Dst: stringerror
      Src: /src/pdns/pdns/unix_utility.cc:114,1
    - Dst: withName
      Src: /src/pdns/pdns/unix_utility.cc:115,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 2
    argNames:
    - af
    - sock
    argTypes:
    - int
    - sock_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 118
      start: 81
    functionDepth: 0
    functionLinenumber: 81
    functionLinenumberEnd: 118
    functionName: Utility::setBindAny
    functionSourceFile: /src/pdns/pdns/unix_utility.cc
    functionUses: 3
    functionsReached:
    - withName
    - stringerror
    - SLOG
    - setsockopt
    linkageType: ''
    returnType: void
    signature: void Utility::setBindAny([[maybe_unused]] int af, [[maybe_unused]]
      sock_t sock)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Utility::inet_ntop
      Src: /src/pdns/pdns/unix_utility.cc:122,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - af
    - src
    - dst
    - size
    argTypes:
    - int
    - char*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 120
    functionDepth: 0
    functionLinenumber: 120
    functionLinenumberEnd: 123
    functionName: Utility::inet_ntop
    functionSourceFile: /src/pdns/pdns/unix_utility.cc
    functionUses: 1
    functionsReached:
    - Utility::inet_ntop
    linkageType: ''
    returnType: char
    signature: char *Utility::inet_ntop(int af, const char *src, char *dst, size_t
      size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Utility::sleep
      Src: /src/pdns/pdns/unix_utility.cc:127,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - sec
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 125
    functionDepth: 0
    functionLinenumber: 125
    functionLinenumberEnd: 128
    functionName: Utility::sleep
    functionSourceFile: /src/pdns/pdns/unix_utility.cc
    functionUses: 3
    functionsReached:
    - Utility::sleep
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int Utility::sleep(unsigned int sec)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ::nanosleep
      Src: /src/pdns/pdns/unix_utility.cc:136,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - usec
    argTypes:
    - unsigned long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 137
      start: 130
    functionDepth: 0
    functionLinenumber: 130
    functionLinenumberEnd: 137
    functionName: Utility::usleep
    functionSourceFile: /src/pdns/pdns/unix_utility.cc
    functionUses: 1
    functionsReached:
    - ::nanosleep
    linkageType: ''
    returnType: void
    signature: void Utility::usleep(unsigned long usec)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: getegid
      Src: /src/pdns/pdns/unix_utility.cc:143,1
    - Dst: setgid
      Src: /src/pdns/pdns/unix_utility.cc:144,1
    - Dst: SLOG
      Src: /src/pdns/pdns/unix_utility.cc:146,1
    - Dst: stringerror
      Src: /src/pdns/pdns/unix_utility.cc:146,1
    - Dst: withName
      Src: /src/pdns/pdns/unix_utility.cc:147,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/unix_utility.cc:147,1
    - Dst: exit
      Src: /src/pdns/pdns/unix_utility.cc:148,1
    - Dst: SLOG
      Src: /src/pdns/pdns/unix_utility.cc:151,1
    - Dst: withName
      Src: /src/pdns/pdns/unix_utility.cc:152,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/unix_utility.cc:152,1
    - Dst: getpwuid
      Src: /src/pdns/pdns/unix_utility.cc:154,1
    - Dst: SLOG
      Src: /src/pdns/pdns/unix_utility.cc:156,1
    - Dst: withName
      Src: /src/pdns/pdns/unix_utility.cc:157,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/unix_utility.cc:157,1
    - Dst: setgroups
      Src: /src/pdns/pdns/unix_utility.cc:158,1
    - Dst: SLOG
      Src: /src/pdns/pdns/unix_utility.cc:160,1
    - Dst: stringerror
      Src: /src/pdns/pdns/unix_utility.cc:160,1
    - Dst: withName
      Src: /src/pdns/pdns/unix_utility.cc:161,1
    - Dst: exit
      Src: /src/pdns/pdns/unix_utility.cc:162,1
    - Dst: initgroups
      Src: /src/pdns/pdns/unix_utility.cc:165,1
    - Dst: SLOG
      Src: /src/pdns/pdns/unix_utility.cc:167,1
    - Dst: stringerror
      Src: /src/pdns/pdns/unix_utility.cc:167,1
    - Dst: withName
      Src: /src/pdns/pdns/unix_utility.cc:168,1
    - Dst: exit
      Src: /src/pdns/pdns/unix_utility.cc:169,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 2
    argNames:
    - uid
    - gid
    argTypes:
    - uid_t
    - gid_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 173
      start: 141
    functionDepth: 0
    functionLinenumber: 141
    functionLinenumberEnd: 173
    functionName: Utility::dropGroupPrivs
    functionSourceFile: /src/pdns/pdns/unix_utility.cc
    functionUses: 1
    functionsReached:
    - SLOG
    - Logging::Loggable
    - withName
    - stringerror
    - initgroups
    - getpwuid
    - setgroups
    - exit
    - getegid
    - setgid
    linkageType: ''
    returnType: void
    signature: void Utility::dropGroupPrivs( uid_t uid, gid_t gid )
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: geteuid
      Src: /src/pdns/pdns/unix_utility.cc:179,1
    - Dst: setuid
      Src: /src/pdns/pdns/unix_utility.cc:180,1
    - Dst: SLOG
      Src: /src/pdns/pdns/unix_utility.cc:182,1
    - Dst: stringerror
      Src: /src/pdns/pdns/unix_utility.cc:182,1
    - Dst: withName
      Src: /src/pdns/pdns/unix_utility.cc:183,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/unix_utility.cc:183,1
    - Dst: exit
      Src: /src/pdns/pdns/unix_utility.cc:184,1
    - Dst: SLOG
      Src: /src/pdns/pdns/unix_utility.cc:187,1
    - Dst: withName
      Src: /src/pdns/pdns/unix_utility.cc:188,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/unix_utility.cc:188,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - uid
    argTypes:
    - uid_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 191
      start: 177
    functionDepth: 0
    functionLinenumber: 177
    functionLinenumberEnd: 191
    functionName: Utility::dropUserPrivs
    functionSourceFile: /src/pdns/pdns/unix_utility.cc
    functionUses: 1
    functionsReached:
    - SLOG
    - geteuid
    - Logging::Loggable
    - withName
    - stringerror
    - setuid
    - exit
    linkageType: ''
    returnType: void
    signature: void Utility::dropUserPrivs( uid_t uid )
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Utility::getpid
      Src: /src/pdns/pdns/unix_utility.cc:197,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 198
      start: 195
    functionDepth: 0
    functionLinenumber: 195
    functionLinenumberEnd: 198
    functionName: Utility::getpid
    functionSourceFile: /src/pdns/pdns/unix_utility.cc
    functionUses: 1
    functionsReached:
    - Utility::getpid
    linkageType: ''
    returnType: Utility::pid_t
    signature: Utility::pid_t Utility::getpid( )
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Utility::gettimeofday
      Src: /src/pdns/pdns/unix_utility.cc:204,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - tv
    argTypes:
    - struct timeval*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 205
      start: 202
    functionDepth: 0
    functionLinenumber: 202
    functionLinenumberEnd: 205
    functionName: Utility::gettimeofday
    functionSourceFile: /src/pdns/pdns/unix_utility.cc
    functionUses: 4
    functionsReached:
    - Utility::gettimeofday
    linkageType: ''
    returnType: int
    signature: int Utility::gettimeofday( struct timeval *tv, void * /* tz */)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Utility::writev
      Src: /src/pdns/pdns/unix_utility.cc:210,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - socket
    - vector
    - count
    argTypes:
    - int
    - iovec*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 211
      start: 208
    functionDepth: 0
    functionLinenumber: 208
    functionLinenumberEnd: 211
    functionName: Utility::writev
    functionSourceFile: /src/pdns/pdns/unix_utility.cc
    functionUses: 3
    functionsReached:
    - Utility::writev
    linkageType: ''
    returnType: int
    signature: int Utility::writev(int socket, const iovec *vector, size_t count )
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 2
    argCount: 1
    argNames:
    - year
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 218
      start: 214
    functionDepth: 0
    functionLinenumber: 214
    functionLinenumberEnd: 218
    functionName: isleap
    functionSourceFile: /src/pdns/pdns/unix_utility.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int isleap(int year)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: isleap
      Src: /src/pdns/pdns/unix_utility.cc:249,1
    - Dst: isleap
      Src: /src/pdns/pdns/unix_utility.cc:274,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 47
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct tm*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 285
      start: 220
    functionDepth: 0
    functionLinenumber: 220
    functionLinenumberEnd: 285
    functionName: Utility::timegm
    functionSourceFile: /src/pdns/pdns/unix_utility.cc
    functionUses: 1
    functionsReached:
    - isleap
    linkageType: ''
    returnType: time_t
    signature: time_t Utility::timegm(struct tm *const t)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LuaContext::registerFunction
      Src: /src/pdns/pdns/test-luawrapper.cc:29,1
    - Dst: LuaContext::writeVariable
      Src: /src/pdns/pdns/test-luawrapper.cc:31,1
    - Dst: LuaContext::executeCode
      Src: /src/pdns/pdns/test-luawrapper.cc:32,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-luawrapper.cc:34,1
    - Dst: LuaContext::readVariable
      Src: /src/pdns/pdns/test-luawrapper.cc:34,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 35
      start: 15
    functionDepth: 0
    functionLinenumber: 15
    functionLinenumberEnd: 35
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-luawrapper.cc
    functionUses: 0
    functionsReached:
    - LuaContext::registerFunction
    - LuaContext::writeVariable
    - LuaContext::executeCode
    - LuaContext::readVariable
    - BOOST_CHECK_EQUAL
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_registerFunction)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 24
      start: 24
    functionDepth: 0
    functionLinenumber: 24
    functionLinenumberEnd: 24
    functionName: increment
    functionSourceFile: /src/pdns/pdns/test-luawrapper.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void increment()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LuaContext::writeFunction
      Src: /src/pdns/pdns/test-luawrapper.cc:44,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/test-luawrapper.cc:48,1
    - Dst: LuaContext::executeCode
      Src: /src/pdns/pdns/test-luawrapper.cc:48,1
    - Dst: LuaContext::executeCode
      Src: /src/pdns/pdns/test-luawrapper.cc:51,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/test-luawrapper.cc:52,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-luawrapper.cc:53,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 41
    functionDepth: 0
    functionLinenumber: 41
    functionLinenumberEnd: 55
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-luawrapper.cc
    functionUses: 0
    functionsReached:
    - LuaContext::writeFunction
    - LuaContext::executeCode
    - BOOST_CHECK_EQUAL
    - BOOST_REQUIRE
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_boost_optional)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LuaContext::writeFunction
      Src: /src/pdns/pdns/test-luawrapper.cc:60,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/test-luawrapper.cc:64,1
    - Dst: LuaContext::executeCode
      Src: /src/pdns/pdns/test-luawrapper.cc:64,1
    - Dst: LuaContext::executeCode
      Src: /src/pdns/pdns/test-luawrapper.cc:67,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/test-luawrapper.cc:68,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-luawrapper.cc:69,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 57
    functionDepth: 0
    functionLinenumber: 57
    functionLinenumberEnd: 71
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-luawrapper.cc
    functionUses: 0
    functionsReached:
    - LuaContext::writeFunction
    - LuaContext::executeCode
    - BOOST_CHECK_EQUAL
    - BOOST_REQUIRE
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_std_optional)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LuaContext::writeFunction
      Src: /src/pdns/pdns/test-luawrapper.cc:78,1
    - Dst: LuaContext::executeCode
      Src: /src/pdns/pdns/test-luawrapper.cc:83,1
    - Dst: boost::get<int>
      Src: /src/pdns/pdns/test-luawrapper.cc:84,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/test-luawrapper.cc:85,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-luawrapper.cc:86,1
    - Dst: LuaContext::executeCode
      Src: /src/pdns/pdns/test-luawrapper.cc:90,1
    - Dst: boost::get<const std::string>
      Src: /src/pdns/pdns/test-luawrapper.cc:91,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/test-luawrapper.cc:92,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-luawrapper.cc:93,1
    - Dst: LuaContext::executeCode
      Src: /src/pdns/pdns/test-luawrapper.cc:98,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-luawrapper.cc:100,1
    - Dst: func
      Src: /src/pdns/pdns/test-luawrapper.cc:100,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 73
    functionDepth: 0
    functionLinenumber: 73
    functionLinenumberEnd: 102
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-luawrapper.cc
    functionUses: 0
    functionsReached:
    - LuaContext::writeFunction
    - LuaContext::executeCode
    - func
    - boost::get<int>
    - BOOST_CHECK_EQUAL
    - boost::get<const std::string>
    - BOOST_CHECK_THROW
    - BOOST_REQUIRE
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_boost_variant)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LuaContext::writeFunction
      Src: /src/pdns/pdns/test-luawrapper.cc:109,1
    - Dst: LuaContext::executeCode
      Src: /src/pdns/pdns/test-luawrapper.cc:114,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/test-luawrapper.cc:115,1
    - Dst: std::holds_alternative<int>
      Src: /src/pdns/pdns/test-luawrapper.cc:115,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-luawrapper.cc:116,1
    - Dst: std::get<int>
      Src: /src/pdns/pdns/test-luawrapper.cc:116,1
    - Dst: LuaContext::executeCode
      Src: /src/pdns/pdns/test-luawrapper.cc:120,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/test-luawrapper.cc:121,1
    - Dst: std::holds_alternative<const std::string>
      Src: /src/pdns/pdns/test-luawrapper.cc:121,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-luawrapper.cc:122,1
    - Dst: std::get<const std::string>
      Src: /src/pdns/pdns/test-luawrapper.cc:122,1
    - Dst: LuaContext::executeCode
      Src: /src/pdns/pdns/test-luawrapper.cc:127,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/test-luawrapper.cc:129,1
    - Dst: func
      Src: /src/pdns/pdns/test-luawrapper.cc:129,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 131
      start: 104
    functionDepth: 0
    functionLinenumber: 104
    functionLinenumberEnd: 131
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-luawrapper.cc
    functionUses: 0
    functionsReached:
    - std::holds_alternative<int>
    - std::holds_alternative<const std::string>
    - LuaContext::writeFunction
    - LuaContext::executeCode
    - func
    - BOOST_CHECK_EQUAL
    - BOOST_CHECK_THROW
    - BOOST_REQUIRE
    - std::get<const std::string>
    - std::get<int>
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_std_variant)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 3
    argNames:
    - s
    - start
    - length
    argTypes:
    - char*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 36
    functionDepth: 0
    functionLinenumber: 36
    functionLinenumberEnd: 54
    functionName: extract_bits
    functionSourceFile: /src/pdns/pdns/base32.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: unsigned char
    signature: unsigned char extract_bits(const char *s, int start, int length)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 18
    argCount: 4
    argNames:
    - s
    - x
    - start
    - length
    argTypes:
    - char*
    - int
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 57
    functionDepth: 0
    functionLinenumber: 57
    functionLinenumberEnd: 81
    functionName: set_bits
    functionSourceFile: /src/pdns/pdns/base32.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void set_bits(char* s, int x, int start, int length)
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 10
    argCount: 1
    argNames:
    - c
    argTypes:
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 84
    functionDepth: 0
    functionLinenumber: 84
    functionLinenumberEnd: 95
    functionName: unbase32hex
    functionSourceFile: /src/pdns/pdns/base32.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int unbase32hex(char c)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: string::reserve
      Src: /src/pdns/pdns/base32.cc:102,1
    - Dst: length
      Src: /src/pdns/pdns/base32.cc:102,1
    - Dst: length
      Src: /src/pdns/pdns/base32.cc:104,1
    - Dst: length
      Src: /src/pdns/pdns/base32.cc:105,1
    - Dst: string::append
      Src: /src/pdns/pdns/base32.cc:122,1
    - Dst: extract_bits
      Src: /src/pdns/pdns/base32.cc:122,1
    - Dst: c_str
      Src: /src/pdns/pdns/base32.cc:122,1
    - Dst: string::append
      Src: /src/pdns/pdns/base32.cc:123,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 25
    argCount: 1
    argNames:
    - ' input'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 127
      start: 98
    functionDepth: 0
    functionLinenumber: 98
    functionLinenumberEnd: 127
    functionName: toBase32Hex
    functionSourceFile: /src/pdns/pdns/base32.cc
    functionUses: 16
    functionsReached:
    - length
    - string::reserve
    - string::append
    - extract_bits
    - c_str
    linkageType: ''
    returnType: string
    signature: string toBase32Hex(const std::string& input)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: length
      Src: /src/pdns/pdns/base32.cc:135,1
    - Dst: unbase32hex
      Src: /src/pdns/pdns/base32.cc:136,1
    - Dst: set_bits
      Src: /src/pdns/pdns/base32.cc:139,1
    - Dst: string::append
      Src: /src/pdns/pdns/base32.cc:141,1
    - Dst: memset
      Src: /src/pdns/pdns/base32.cc:142,1
    - Dst: string::append
      Src: /src/pdns/pdns/base32.cc:146,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 1
    argNames:
    - ' input'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 149
      start: 130
    functionDepth: 0
    functionLinenumber: 130
    functionLinenumberEnd: 149
    functionName: fromBase32Hex
    functionSourceFile: /src/pdns/pdns/base32.cc
    functionUses: 7
    functionsReached:
    - length
    - unbase32hex
    - set_bits
    - string::append
    - memset
    linkageType: ''
    returnType: string
    signature: string fromBase32Hex(const std::string& input)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/pdns/pdns/base32.cc:154,1
    - Dst: strcmp
      Src: /src/pdns/pdns/base32.cc:154,1
    - Dst: printf
      Src: /src/pdns/pdns/base32.cc:155,1
    - Dst: exit
      Src: /src/pdns/pdns/base32.cc:156,1
    - Dst: strcmp
      Src: /src/pdns/pdns/base32.cc:158,1
    - Dst: printf
      Src: /src/pdns/pdns/base32.cc:159,1
    - Dst: toBase32Hex
      Src: /src/pdns/pdns/base32.cc:161,1
    - Dst: fromBase32Hex
      Src: /src/pdns/pdns/base32.cc:164,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 10
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 166
      start: 152
    functionDepth: 0
    functionLinenumber: 152
    functionLinenumberEnd: 166
    functionName: main
    functionSourceFile: /src/pdns/pdns/base32.cc
    functionUses: 25
    functionsReached:
    - printf
    - strcmp
    - exit
    - toBase32Hex
    - fromBase32Hex
    linkageType: ''
    returnType: int
    signature: int main(int argc, char **argv)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' v'
    argTypes:
    - T
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 106
    functionDepth: 0
    functionLinenumber: 106
    functionLinenumberEnd: 109
    functionName: Logging::Loggable
    functionSourceFile: /src/pdns/pdns/logging.hh
    functionUses: 114
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Loggable(const T& v)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: toStructuredLogString
      Src: /src/pdns/pdns/logging.hh:116,1
    - Dst: toLogString
      Src: /src/pdns/pdns/logging.hh:119,1
    - Dst: toString
      Src: /src/pdns/pdns/logging.hh:122,1
    - Dst: Logging::to_string
      Src: /src/pdns/pdns/logging.hh:125,1
    - Dst: std::ostringstream::str
      Src: /src/pdns/pdns/logging.hh:130,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 132
      start: 110
    functionDepth: 0
    functionLinenumber: 110
    functionLinenumberEnd: 132
    functionName: Logging::to_string
    functionSourceFile: /src/pdns/pdns/logging.hh
    functionUses: 1
    functionsReached:
    - toLogString
    - toString
    - toStructuredLogString
    - Logging::to_string
    - std::ostringstream::str
    linkageType: ''
    returnType: std::string
    signature: std::string to_string() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - ' v1'
    - ' v2'
    argTypes:
    - T
    - T
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 143
      start: 140
    functionDepth: 0
    functionLinenumber: 140
    functionLinenumberEnd: 143
    functionName: Logging::IterLoggable
    functionSourceFile: /src/pdns/pdns/logging.hh
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void IterLoggable(const T& v1, const T& v2)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: auto::toStructuredLogString
      Src: /src/pdns/pdns/logging.hh:159,1
    - Dst: auto::toLogString
      Src: /src/pdns/pdns/logging.hh:162,1
    - Dst: auto::toString
      Src: /src/pdns/pdns/logging.hh:165,1
    - Dst: Logging::to_string
      Src: /src/pdns/pdns/logging.hh:168,1
    - Dst: std::ostringstream::str
      Src: /src/pdns/pdns/logging.hh:174,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 26
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 175
      start: 144
    functionDepth: 0
    functionLinenumber: 144
    functionLinenumberEnd: 175
    functionName: Logging::to_string
    functionSourceFile: /src/pdns/pdns/logging.hh
    functionUses: 2
    functionsReached:
    - auto::toStructuredLogString
    - Logging::to_string
    - std::ostringstream::str
    - auto::toString
    - auto::toLogString
    linkageType: ''
    returnType: std::string
    signature: std::string to_string() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' v'
    argTypes:
    - T
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 106
    functionDepth: 0
    functionLinenumber: 106
    functionLinenumberEnd: 109
    functionName: Logging::Loggable
    functionSourceFile: /src/pdns/pdns/logging.hh
    functionUses: 114
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Loggable(const T& v)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: toStructuredLogString
      Src: /src/pdns/pdns/logging.hh:116,1
    - Dst: toLogString
      Src: /src/pdns/pdns/logging.hh:119,1
    - Dst: toString
      Src: /src/pdns/pdns/logging.hh:122,1
    - Dst: Logging::to_string
      Src: /src/pdns/pdns/logging.hh:125,1
    - Dst: std::ostringstream::str
      Src: /src/pdns/pdns/logging.hh:130,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 132
      start: 110
    functionDepth: 0
    functionLinenumber: 110
    functionLinenumberEnd: 132
    functionName: Logging::to_string
    functionSourceFile: /src/pdns/pdns/logging.hh
    functionUses: 3
    functionsReached:
    - toLogString
    - toString
    - toStructuredLogString
    - Logging::to_string
    - std::ostringstream::str
    linkageType: ''
    returnType: std::string
    signature: std::string to_string() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - ' v1'
    - ' v2'
    argTypes:
    - T
    - T
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 143
      start: 140
    functionDepth: 0
    functionLinenumber: 140
    functionLinenumberEnd: 143
    functionName: Logging::IterLoggable
    functionSourceFile: /src/pdns/pdns/logging.hh
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void IterLoggable(const T& v1, const T& v2)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: auto::toStructuredLogString
      Src: /src/pdns/pdns/logging.hh:159,1
    - Dst: auto::toLogString
      Src: /src/pdns/pdns/logging.hh:162,1
    - Dst: auto::toString
      Src: /src/pdns/pdns/logging.hh:165,1
    - Dst: Logging::to_string
      Src: /src/pdns/pdns/logging.hh:168,1
    - Dst: std::ostringstream::str
      Src: /src/pdns/pdns/logging.hh:174,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 26
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 175
      start: 144
    functionDepth: 0
    functionLinenumber: 144
    functionLinenumberEnd: 175
    functionName: Logging::to_string
    functionSourceFile: /src/pdns/pdns/logging.hh
    functionUses: 4
    functionsReached:
    - auto::toStructuredLogString
    - Logging::to_string
    - std::ostringstream::str
    - auto::toString
    - auto::toLogString
    linkageType: ''
    returnType: std::string
    signature: std::string to_string() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - oldStyle
    - ','
    - slogCall
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 232
      start: 228
    functionDepth: 0
    functionLinenumber: 228
    functionLinenumberEnd: 232
    functionName: SLOG
    functionSourceFile: /src/pdns/pdns/logging.hh
    functionUses: 151
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SLOG(oldStyle, slogCall)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - nonStructured
    - ','
    - structured
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 250
      start: 241
    functionDepth: 0
    functionLinenumber: 241
    functionLinenumberEnd: 250
    functionName: SLOG
    functionSourceFile: /src/pdns/pdns/logging.hh
    functionUses: 151
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SLOG(nonStructured, structured)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - nonStructured
    - ','
    - structured
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 258
      start: 252
    functionDepth: 0
    functionLinenumber: 252
    functionLinenumberEnd: 258
    functionName: VERBOSESLOG
    functionSourceFile: /src/pdns/pdns/logging.hh
    functionUses: 7
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: VERBOSESLOG(nonStructured, structured)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - oldStyle
    - ','
    - slogCall
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 274
      start: 265
    functionDepth: 0
    functionLinenumber: 265
    functionLinenumberEnd: 274
    functionName: SLOG
    functionSourceFile: /src/pdns/pdns/logging.hh
    functionUses: 151
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SLOG(oldStyle, slogCall)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: make_unique<DNSPacket>
      Src: /src/pdns/pdns/test-distributor_hh.cc:28,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 29
      start: 26
    functionDepth: 0
    functionLinenumber: 26
    functionLinenumberEnd: 29
    functionName: replyPacket
    functionSourceFile: /src/pdns/pdns/test-distributor_hh.cc
    functionUses: 6
    functionsReached:
    - make_unique<DNSPacket>
    linkageType: ''
    returnType: std::unique_ptr<DNSPacket>
    signature: std::unique_ptr<DNSPacket> replyPacket()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 30
      start: 30
    functionDepth: 0
    functionLinenumber: 30
    functionLinenumberEnd: 30
    functionName: cleanupGSS
    functionSourceFile: /src/pdns/pdns/test-distributor_hh.cc
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void cleanupGSS(int)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 35
      start: 35
    functionDepth: 0
    functionLinenumber: 35
    functionLinenumberEnd: 35
    functionName: Backend
    functionSourceFile: /src/pdns/pdns/test-distributor_hh.cc
    functionUses: 52
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Backend(Logr::log_t /*slog*/)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: make_unique<DNSPacket>
      Src: /src/pdns/pdns/test-distributor_hh.cc:38,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 39
      start: 36
    functionDepth: 0
    functionLinenumber: 36
    functionLinenumberEnd: 39
    functionName: question
    functionSourceFile: /src/pdns/pdns/test-distributor_hh.cc
    functionUses: 3
    functionsReached:
    - make_unique<DNSPacket>
    linkageType: ''
    returnType: std::unique_ptr<DNSPacket>
    signature: std::unique_ptr<DNSPacket> question(Question&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 46
    functionName: report
    functionSourceFile: /src/pdns/pdns/test-distributor_hh.cc
    functionUses: 7
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void report(std::unique_ptr<DNSPacket>& /* A */, Logr::log_t /* B */,
      int /* C */)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: arg
      Src: /src/pdns/pdns/test-distributor_hh.cc:49,1
    - Dst: arg
      Src: /src/pdns/pdns/test-distributor_hh.cc:50,1
    - Dst: arg
      Src: /src/pdns/pdns/test-distributor_hh.cc:51,1
    - Dst: declare
      Src: /src/pdns/pdns/test-distributor_hh.cc:52,1
    - Dst: declare
      Src: /src/pdns/pdns/test-distributor_hh.cc:53,1
    - Dst: Distributor<Answer,Question,Backend>::Create
      Src: /src/pdns/pdns/test-distributor_hh.cc:55,1
    - Dst: Question::d_dt::set
      Src: /src/pdns/pdns/test-distributor_hh.cc:60,1
    - Dst: auto::question
      Src: /src/pdns/pdns/test-distributor_hh.cc:61,1
    - Dst: sleep
      Src: /src/pdns/pdns/test-distributor_hh.cc:63,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-distributor_hh.cc:64,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 48
    functionDepth: 1
    functionLinenumber: 48
    functionLinenumberEnd: 65
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-distributor_hh.cc
    functionUses: 0
    functionsReached:
    - declare
    - Question::d_dt::set
    - Distributor<Answer,Question,Backend>::Create
    - auto::question
    - sleep
    - BOOST_CHECK_EQUAL
    - arg
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_distributor_basic)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 69
    functionDepth: 0
    functionLinenumber: 69
    functionLinenumberEnd: 69
    functionName: BackendSlow
    functionSourceFile: /src/pdns/pdns/test-distributor_hh.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void BackendSlow(Logr::log_t /*slog*/)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::this_thread::sleep_for
      Src: /src/pdns/pdns/test-distributor_hh.cc:76,1
    - Dst: std::chrono::seconds
      Src: /src/pdns/pdns/test-distributor_hh.cc:76,1
    - Dst: make_unique<DNSPacket>
      Src: /src/pdns/pdns/test-distributor_hh.cc:79,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - ' query'
    argTypes:
    - Question
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 70
    functionDepth: 0
    functionLinenumber: 70
    functionLinenumberEnd: 80
    functionName: question
    functionSourceFile: /src/pdns/pdns/test-distributor_hh.cc
    functionUses: 4
    functionsReached:
    - std::this_thread::sleep_for
    - make_unique<DNSPacket>
    - std::chrono::seconds
    linkageType: ''
    returnType: std::unique_ptr<DNSPacket>
    signature: std::unique_ptr<DNSPacket> question([[maybe_unused]] Question& query)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 86
    functionDepth: 0
    functionLinenumber: 86
    functionLinenumberEnd: 89
    functionName: report1
    functionSourceFile: /src/pdns/pdns/test-distributor_hh.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void report1(std::unique_ptr<DNSPacket>& /* A */, Logr::log_t /* B
      */, int /* C */)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: arg
      Src: /src/pdns/pdns/test-distributor_hh.cc:92,1
    - Dst: arg
      Src: /src/pdns/pdns/test-distributor_hh.cc:93,1
    - Dst: arg
      Src: /src/pdns/pdns/test-distributor_hh.cc:94,1
    - Dst: declare
      Src: /src/pdns/pdns/test-distributor_hh.cc:95,1
    - Dst: declare
      Src: /src/pdns/pdns/test-distributor_hh.cc:96,1
    - Dst: store
      Src: /src/pdns/pdns/test-distributor_hh.cc:98,1
    - Dst: Distributor<Answer,Question,Backend>::Create
      Src: /src/pdns/pdns/test-distributor_hh.cc:99,1
    - Dst: BOOST_CHECK_EXCEPTION
      Src: /src/pdns/pdns/test-distributor_hh.cc:102,1
    - Dst: Question::d_dt::set
      Src: /src/pdns/pdns/test-distributor_hh.cc:107,1
    - Dst: auto*::question
      Src: /src/pdns/pdns/test-distributor_hh.cc:109,1
    - Dst: BOOST_CHECK_GT
      Src: /src/pdns/pdns/test-distributor_hh.cc:113,1
    - Dst: load
      Src: /src/pdns/pdns/test-distributor_hh.cc:119,1
    - Dst: std::this_thread::sleep_for
      Src: /src/pdns/pdns/test-distributor_hh.cc:120,1
    - Dst: std::chrono::milliseconds
      Src: /src/pdns/pdns/test-distributor_hh.cc:120,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 21
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 91
    functionDepth: 1
    functionLinenumber: 91
    functionLinenumberEnd: 123
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-distributor_hh.cc
    functionUses: 0
    functionsReached:
    - declare
    - std::this_thread::sleep_for
    - load
    - BOOST_CHECK_GT
    - BOOST_CHECK_EXCEPTION
    - Distributor<Answer,Question,Backend>::Create
    - Question::d_dt::set
    - std::chrono::milliseconds
    - store
    - arg
    - auto*::question
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_distributor_queue)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 130
      start: 127
    functionDepth: 0
    functionLinenumber: 127
    functionLinenumberEnd: 130
    functionName: BackendDies
    functionSourceFile: /src/pdns/pdns/test-distributor_hh.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void BackendDies(Logr::log_t /*slog*/)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 133
      start: 131
    functionDepth: 0
    functionLinenumber: 131
    functionLinenumberEnd: 133
    functionName: ~BackendDies()
    functionSourceFile: /src/pdns/pdns/test-distributor_hh.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~BackendDies()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: runtime_error
      Src: /src/pdns/pdns/test-distributor_hh.cc:139,1
    - Dst: make_unique<DNSPacket>
      Src: /src/pdns/pdns/test-distributor_hh.cc:141,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 142
      start: 134
    functionDepth: 0
    functionLinenumber: 134
    functionLinenumberEnd: 142
    functionName: question
    functionSourceFile: /src/pdns/pdns/test-distributor_hh.cc
    functionUses: 5
    functionsReached:
    - make_unique<DNSPacket>
    - runtime_error
    linkageType: ''
    returnType: std::unique_ptr<DNSPacket>
    signature: std::unique_ptr<DNSPacket> question(Question& /* q */)
  - 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: report2
    functionSourceFile: /src/pdns/pdns/test-distributor_hh.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void report2(std::unique_ptr<DNSPacket>& /* A */, Logr::log_t /* B
      */, int /* C */)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: arg
      Src: /src/pdns/pdns/test-distributor_hh.cc:159,1
    - Dst: arg
      Src: /src/pdns/pdns/test-distributor_hh.cc:160,1
    - Dst: arg
      Src: /src/pdns/pdns/test-distributor_hh.cc:161,1
    - Dst: declare
      Src: /src/pdns/pdns/test-distributor_hh.cc:162,1
    - Dst: declare
      Src: /src/pdns/pdns/test-distributor_hh.cc:163,1
    - Dst: Distributor<Answer,Question,Backend>::Create
      Src: /src/pdns/pdns/test-distributor_hh.cc:165,1
    - Dst: Question::d_dt::set
      Src: /src/pdns/pdns/test-distributor_hh.cc:170,1
    - Dst: DNSName
      Src: /src/pdns/pdns/test-distributor_hh.cc:171,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/test-distributor_hh.cc:171,1
    - Dst: QType
      Src: /src/pdns/pdns/test-distributor_hh.cc:172,1
    - Dst: auto::question
      Src: /src/pdns/pdns/test-distributor_hh.cc:173,1
    - Dst: sleep
      Src: /src/pdns/pdns/test-distributor_hh.cc:176,1
    - Dst: auto::getQueueSize
      Src: /src/pdns/pdns/test-distributor_hh.cc:177,1
    - Dst: what
      Src: /src/pdns/pdns/test-distributor_hh.cc:181,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 21
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 186
      start: 158
    functionDepth: 1
    functionLinenumber: 158
    functionLinenumberEnd: 186
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-distributor_hh.cc
    functionUses: 0
    functionsReached:
    - declare
    - std::to_string
    - Question::d_dt::set
    - Distributor<Answer,Question,Backend>::Create
    - QType
    - auto::question
    - sleep
    - what
    - DNSName
    - auto::getQueueSize
    - arg
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_distributor_dies)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/test-webserver_cc.cc:34,1
    - Dst: WebServer::validURL
      Src: /src/pdns/pdns/test-webserver_cc.cc:34,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 36
      start: 12
    functionDepth: 0
    functionLinenumber: 12
    functionLinenumberEnd: 36
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/test-webserver_cc.cc
    functionUses: 0
    functionsReached:
    - WebServer::validURL
    - BOOST_CHECK_EQUAL
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_validURL)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/base64.cc:37,1
    - Dst: clear
      Src: /src/pdns/pdns/base64.cc:38,1
    - Dst: length
      Src: /src/pdns/pdns/base64.cc:42,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/base64.cc:42,1
    - Dst: length
      Src: /src/pdns/pdns/base64.cc:42,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/base64.cc:42,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/base64.cc:43,1
    - Dst: length
      Src: /src/pdns/pdns/base64.cc:45,1
    - Dst: resize
      Src: /src/pdns/pdns/base64.cc:46,1
    - Dst: std::unique_ptr<BIO, void (*)(BIO*)>
      Src: /src/pdns/pdns/base64.cc:47,1
    - Dst: BIO_new
      Src: /src/pdns/pdns/base64.cc:47,1
    - Dst: BIO_s_mem
      Src: /src/pdns/pdns/base64.cc:47,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/base64.cc:49,1
    - Dst: BIO_write
      Src: /src/pdns/pdns/base64.cc:51,1
    - Dst: auto::get
      Src: /src/pdns/pdns/base64.cc:51,1
    - Dst: c_str
      Src: /src/pdns/pdns/base64.cc:51,1
    - Dst: length
      Src: /src/pdns/pdns/base64.cc:51,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/base64.cc:51,1
    - Dst: length
      Src: /src/pdns/pdns/base64.cc:51,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/base64.cc:52,1
    - Dst: BIO_new
      Src: /src/pdns/pdns/base64.cc:54,1
    - Dst: BIO_f_base64
      Src: /src/pdns/pdns/base64.cc:54,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/base64.cc:56,1
    - Dst: std::unique_ptr<BIO, void (*)(BIO*)>
      Src: /src/pdns/pdns/base64.cc:58,1
    - Dst: BIO_push
      Src: /src/pdns/pdns/base64.cc:58,1
    - Dst: auto::release
      Src: /src/pdns/pdns/base64.cc:58,1
    - Dst: BIO_set_flags
      Src: /src/pdns/pdns/base64.cc:59,1
    - Dst: auto::get
      Src: /src/pdns/pdns/base64.cc:59,1
    - Dst: BIO_read
      Src: /src/pdns/pdns/base64.cc:60,1
    - Dst: at
      Src: /src/pdns/pdns/base64.cc:60,1
    - Dst: BIO_should_retry
      Src: /src/pdns/pdns/base64.cc:61,1
    - Dst: auto::get
      Src: /src/pdns/pdns/base64.cc:61,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/base64.cc:62,1
    - Dst: auto::reset
      Src: /src/pdns/pdns/base64.cc:64,1
    - Dst: resize
      Src: /src/pdns/pdns/base64.cc:66,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 29
    argCount: 2
    argNames:
    - ' src'
    - ' dst'
    argTypes:
    - std::string
    - Container
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 35
    functionDepth: 1
    functionLinenumber: 35
    functionLinenumberEnd: 70
    functionName: B64Decode
    functionSourceFile: /src/pdns/pdns/base64.cc
    functionUses: 22
    functionsReached:
    - BIO_read
    - BIO_set_flags
    - BIO_s_mem
    - BIO_should_retry
    - static_cast<int>
    - resize
    - std::unique_ptr<BIO, void (*)(BIO*)>
    - BIO_write
    - c_str
    - clear
    - empty
    - at
    - BIO_push
    - BIO_new
    - pdns::max
    - BIO_f_base64
    - auto::get
    - std::runtime_error
    - length
    - auto::reset
    - auto::release
    linkageType: ''
    returnType: int
    signature: int B64Decode(const std::string& src, Container& dst)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/base64.cc:76,1
    - Dst: std::unique_ptr<BIO, void (*)(BIO*)>
      Src: /src/pdns/pdns/base64.cc:77,1
    - Dst: BIO_new
      Src: /src/pdns/pdns/base64.cc:77,1
    - Dst: BIO_s_mem
      Src: /src/pdns/pdns/base64.cc:77,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/base64.cc:79,1
    - Dst: BIO_new
      Src: /src/pdns/pdns/base64.cc:81,1
    - Dst: BIO_f_base64
      Src: /src/pdns/pdns/base64.cc:81,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/base64.cc:83,1
    - Dst: std::unique_ptr<BIO, void (*)(BIO*)>
      Src: /src/pdns/pdns/base64.cc:85,1
    - Dst: BIO_push
      Src: /src/pdns/pdns/base64.cc:85,1
    - Dst: auto::release
      Src: /src/pdns/pdns/base64.cc:85,1
    - Dst: BIO_set_flags
      Src: /src/pdns/pdns/base64.cc:86,1
    - Dst: auto::get
      Src: /src/pdns/pdns/base64.cc:86,1
    - Dst: BIO_write
      Src: /src/pdns/pdns/base64.cc:87,1
    - Dst: auto::get
      Src: /src/pdns/pdns/base64.cc:87,1
    - Dst: c_str
      Src: /src/pdns/pdns/base64.cc:87,1
    - Dst: length
      Src: /src/pdns/pdns/base64.cc:87,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/base64.cc:88,1
    - Dst: length
      Src: /src/pdns/pdns/base64.cc:88,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/base64.cc:89,1
    - Dst: BIO_flush
      Src: /src/pdns/pdns/base64.cc:91,1
    - Dst: auto::get
      Src: /src/pdns/pdns/base64.cc:91,1
    - Dst: BIO_get_mem_data
      Src: /src/pdns/pdns/base64.cc:94,1
    - Dst: auto::get
      Src: /src/pdns/pdns/base64.cc:94,1
    - Dst: std::string
      Src: /src/pdns/pdns/base64.cc:96,1
    - Dst: auto::reset
      Src: /src/pdns/pdns/base64.cc:98,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 21
    argCount: 1
    argNames:
    - ' src'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 74
    functionDepth: 0
    functionLinenumber: 74
    functionLinenumberEnd: 102
    functionName: Base64Encode
    functionSourceFile: /src/pdns/pdns/base64.cc
    functionUses: 13
    functionsReached:
    - BIO_f_base64
    - auto::release
    - length
    - auto::get
    - BIO_push
    - std::unique_ptr<BIO, void (*)(BIO*)>
    - std::runtime_error
    - c_str
    - static_cast<size_t>
    - BIO_get_mem_data
    - BIO_write
    - auto::reset
    - BIO_set_flags
    - BIO_flush
    - empty
    - std::string
    - BIO_s_mem
    - BIO_new
    linkageType: ''
    returnType: std::string
    signature: std::string Base64Encode(const std::string& src)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Base64Encode
      Src: /src/pdns/pdns/base64.cc:108,1
    - Dst: B64Decode
      Src: /src/pdns/pdns/base64.cc:114,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 106
    functionDepth: 0
    functionLinenumber: 106
    functionLinenumberEnd: 120
    functionName: main
    functionSourceFile: /src/pdns/pdns/base64.cc
    functionUses: 25
    functionsReached:
    - B64Decode
    - Base64Encode
    linkageType: ''
    returnType: int
    signature: int main()
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: is_number
      Src: /src/pdns/pdns/json.cc:34,1
    - Dst: int_value
      Src: /src/pdns/pdns/json.cc:35,1
    - Dst: is_string
      Src: /src/pdns/pdns/json.cc:38,1
    - Dst: pdns::checked_stoi<int>
      Src: /src/pdns/pdns/json.cc:40,1
    - Dst: string_value
      Src: /src/pdns/pdns/json.cc:40,1
    - Dst: JsonException
      Src: /src/pdns/pdns/json.cc:42,1
    - Dst: string
      Src: /src/pdns/pdns/json.cc:42,1
    - Dst: JsonException
      Src: /src/pdns/pdns/json.cc:49,1
    - Dst: string
      Src: /src/pdns/pdns/json.cc:49,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 4
    argNames:
    - ' container'
    - ' key'
    - have_default
    - default_value
    argTypes:
    - Json
    - std::string
    - bool
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 31
    functionDepth: 0
    functionLinenumber: 31
    functionLinenumberEnd: 50
    functionName: intFromJsonInternal
    functionSourceFile: /src/pdns/pdns/json.cc
    functionUses: 0
    functionsReached:
    - is_string
    - string_value
    - is_number
    - pdns::checked_stoi<int>
    - int_value
    - string
    - JsonException
    linkageType: ''
    returnType: int
    signature: int intFromJsonInternal(const Json& container, const std::string& key,
      const bool have_default, const int default_value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: intFromJsonInternal
      Src: /src/pdns/pdns/json.cc:54,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' container'
    - ' key'
    argTypes:
    - Json
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 52
    functionDepth: 0
    functionLinenumber: 52
    functionLinenumberEnd: 55
    functionName: intFromJson
    functionSourceFile: /src/pdns/pdns/json.cc
    functionUses: 5
    functionsReached:
    - intFromJsonInternal
    linkageType: ''
    returnType: int
    signature: int intFromJson(const Json& container, const std::string& key)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: intFromJsonInternal
      Src: /src/pdns/pdns/json.cc:59,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' container'
    - ' key'
    - default_value
    argTypes:
    - Json
    - std::string
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 57
    functionDepth: 0
    functionLinenumber: 57
    functionLinenumberEnd: 60
    functionName: intFromJson
    functionSourceFile: /src/pdns/pdns/json.cc
    functionUses: 5
    functionsReached:
    - intFromJsonInternal
    linkageType: ''
    returnType: int
    signature: int intFromJson(const Json& container, const std::string& key, const
      int default_value)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: intFromJsonInternal
      Src: /src/pdns/pdns/json.cc:64,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/json.cc:64,1
    - Dst: JsonException
      Src: /src/pdns/pdns/json.cc:68,1
    - Dst: string
      Src: /src/pdns/pdns/json.cc:68,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 4
    argNames:
    - ' container'
    - ' key'
    - have_default
    - default_value
    argTypes:
    - Json
    - std::string
    - bool
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 62
    functionDepth: 0
    functionLinenumber: 62
    functionLinenumberEnd: 69
    functionName: uintFromJsonInternal
    functionSourceFile: /src/pdns/pdns/json.cc
    functionUses: 0
    functionsReached:
    - intFromJsonInternal
    - JsonException
    - string
    - static_cast<int>
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int uintFromJsonInternal(const Json& container, const std::string&
      key, const bool have_default, const unsigned int default_value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: uintFromJsonInternal
      Src: /src/pdns/pdns/json.cc:73,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' container'
    - ' key'
    argTypes:
    - Json
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 71
    functionDepth: 0
    functionLinenumber: 71
    functionLinenumberEnd: 74
    functionName: uintFromJson
    functionSourceFile: /src/pdns/pdns/json.cc
    functionUses: 5
    functionsReached:
    - uintFromJsonInternal
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int uintFromJson(const Json& container, const std::string&
      key)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: uintFromJsonInternal
      Src: /src/pdns/pdns/json.cc:78,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' container'
    - ' key'
    - default_value
    argTypes:
    - Json
    - std::string
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 76
    functionDepth: 0
    functionLinenumber: 76
    functionLinenumberEnd: 79
    functionName: uintFromJson
    functionSourceFile: /src/pdns/pdns/json.cc
    functionUses: 5
    functionsReached:
    - uintFromJsonInternal
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int uintFromJson(const Json& container, const std::string&
      key, const unsigned int default_value)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: is_number
      Src: /src/pdns/pdns/json.cc:84,1
    - Dst: number_value
      Src: /src/pdns/pdns/json.cc:85,1
    - Dst: is_string
      Src: /src/pdns/pdns/json.cc:88,1
    - Dst: std::stod
      Src: /src/pdns/pdns/json.cc:90,1
    - Dst: string_value
      Src: /src/pdns/pdns/json.cc:90,1
    - Dst: JsonException
      Src: /src/pdns/pdns/json.cc:92,1
    - Dst: string
      Src: /src/pdns/pdns/json.cc:92,1
    - Dst: JsonException
      Src: /src/pdns/pdns/json.cc:99,1
    - Dst: string
      Src: /src/pdns/pdns/json.cc:99,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 4
    argNames:
    - ' container'
    - ' key'
    - have_default
    - default_value
    argTypes:
    - Json
    - std::string
    - bool
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 81
    functionDepth: 0
    functionLinenumber: 81
    functionLinenumberEnd: 100
    functionName: doubleFromJsonInternal
    functionSourceFile: /src/pdns/pdns/json.cc
    functionUses: 0
    functionsReached:
    - is_string
    - is_number
    - string_value
    - number_value
    - string
    - std::stod
    - JsonException
    linkageType: ''
    returnType: double
    signature: double doubleFromJsonInternal(const Json& container, const std::string&
      key, const bool have_default, const double default_value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: doubleFromJsonInternal
      Src: /src/pdns/pdns/json.cc:104,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' container'
    - ' key'
    argTypes:
    - Json
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 102
    functionDepth: 0
    functionLinenumber: 102
    functionLinenumberEnd: 105
    functionName: doubleFromJson
    functionSourceFile: /src/pdns/pdns/json.cc
    functionUses: 0
    functionsReached:
    - doubleFromJsonInternal
    linkageType: ''
    returnType: double
    signature: double doubleFromJson(const Json& container, const std::string& key)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: doubleFromJsonInternal
      Src: /src/pdns/pdns/json.cc:109,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' container'
    - ' key'
    - default_value
    argTypes:
    - Json
    - std::string
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 107
    functionDepth: 0
    functionLinenumber: 107
    functionLinenumberEnd: 110
    functionName: doubleFromJson
    functionSourceFile: /src/pdns/pdns/json.cc
    functionUses: 0
    functionsReached:
    - doubleFromJsonInternal
    linkageType: ''
    returnType: double
    signature: double doubleFromJson(const Json& container, const std::string& key,
      const double default_value)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: is_string
      Src: /src/pdns/pdns/json.cc:115,1
    - Dst: string_value
      Src: /src/pdns/pdns/json.cc:116,1
    - Dst: JsonException
      Src: /src/pdns/pdns/json.cc:118,1
    - Dst: string
      Src: /src/pdns/pdns/json.cc:118,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - ' container'
    - key
    argTypes:
    - Json
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 119
      start: 112
    functionDepth: 0
    functionLinenumber: 112
    functionLinenumberEnd: 119
    functionName: stringFromJson
    functionSourceFile: /src/pdns/pdns/json.cc
    functionUses: 15
    functionsReached:
    - JsonException
    - is_string
    - string
    - string_value
    linkageType: ''
    returnType: string
    signature: string stringFromJson(const Json& container, const std::string &key)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: is_bool
      Src: /src/pdns/pdns/json.cc:124,1
    - Dst: bool_value
      Src: /src/pdns/pdns/json.cc:125,1
    - Dst: JsonException
      Src: /src/pdns/pdns/json.cc:130,1
    - Dst: string
      Src: /src/pdns/pdns/json.cc:130,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 4
    argNames:
    - ' container'
    - ' key'
    - have_default
    - default_value
    argTypes:
    - Json
    - std::string
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 131
      start: 121
    functionDepth: 0
    functionLinenumber: 121
    functionLinenumberEnd: 131
    functionName: boolFromJsonInternal
    functionSourceFile: /src/pdns/pdns/json.cc
    functionUses: 0
    functionsReached:
    - is_bool
    - JsonException
    - string
    - bool_value
    linkageType: ''
    returnType: bool
    signature: bool boolFromJsonInternal(const Json& container, const std::string&
      key, const bool have_default, const bool default_value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: boolFromJsonInternal
      Src: /src/pdns/pdns/json.cc:135,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' container'
    - ' key'
    argTypes:
    - Json
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 136
      start: 133
    functionDepth: 0
    functionLinenumber: 133
    functionLinenumberEnd: 136
    functionName: boolFromJson
    functionSourceFile: /src/pdns/pdns/json.cc
    functionUses: 5
    functionsReached:
    - boolFromJsonInternal
    linkageType: ''
    returnType: bool
    signature: bool boolFromJson(const Json& container, const std::string& key)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: boolFromJsonInternal
      Src: /src/pdns/pdns/json.cc:140,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' container'
    - ' key'
    - default_value
    argTypes:
    - Json
    - std::string
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 141
      start: 138
    functionDepth: 0
    functionLinenumber: 138
    functionLinenumberEnd: 141
    functionName: boolFromJson
    functionSourceFile: /src/pdns/pdns/json.cc
    functionUses: 5
    functionsReached:
    - boolFromJsonInternal
    linkageType: ''
    returnType: bool
    signature: bool boolFromJson(const Json& container, const std::string& key, const
      bool default_value)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: std::string_view::empty
      Src: /src/pdns/pdns/check-zone.cc:33,1
    - Dst: std::string_view::find_first_not_of
      Src: /src/pdns/pdns/check-zone.cc:38,1
    - Dst: std::string
      Src: /src/pdns/pdns/check-zone.cc:39,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/check-zone.cc:39,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 2
    argNames:
    - name
    - ' error'
    argTypes:
    - std::string_view
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 31
    functionDepth: 0
    functionLinenumber: 31
    functionLinenumberEnd: 54
    functionName: Check::validateViewName
    functionSourceFile: /src/pdns/pdns/check-zone.cc
    functionUses: 4
    functionsReached:
    - std::string
    - std::string_view::empty
    - std::to_string
    - std::string_view::find_first_not_of
    linkageType: ''
    returnType: bool
    signature: bool validateViewName(std::string_view name, std::string& error)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: sort
      Src: /src/pdns/pdns/check-zone.cc:65,1
    - Dst: begin
      Src: /src/pdns/pdns/check-zone.cc:65,1
    - Dst: end
      Src: /src/pdns/pdns/check-zone.cc:65,1
    - Dst: std::tie
      Src: /src/pdns/pdns/check-zone.cc:68,1
    - Dst: std::tie
      Src: /src/pdns/pdns/check-zone.cc:68,1
    - Dst: std::set::count
      Src: /src/pdns/pdns/check-zone.cc:75,1
    - Dst: qtype::getCode
      Src: /src/pdns/pdns/check-zone.cc:75,1
    - Dst: emplace_back
      Src: /src/pdns/pdns/check-zone.cc:76,1
    - Dst: std::make_pair
      Src: /src/pdns/pdns/check-zone.cc:76,1
    - Dst: emplace_back
      Src: /src/pdns/pdns/check-zone.cc:79,1
    - Dst: std::make_pair
      Src: /src/pdns/pdns/check-zone.cc:79,1
    - Dst: emplace_back
      Src: /src/pdns/pdns/check-zone.cc:90,1
    - Dst: std::make_pair
      Src: /src/pdns/pdns/check-zone.cc:90,1
    - Dst: count
      Src: /src/pdns/pdns/check-zone.cc:95,1
    - Dst: qtype::getCode
      Src: /src/pdns/pdns/check-zone.cc:95,1
    - Dst: count
      Src: /src/pdns/pdns/check-zone.cc:96,1
    - Dst: DNSResourceRecord::qtype::getCode
      Src: /src/pdns/pdns/check-zone.cc:96,1
    - Dst: std::find
      Src: /src/pdns/pdns/check-zone.cc:103,1
    - Dst: begin
      Src: /src/pdns/pdns/check-zone.cc:103,1
    - Dst: end
      Src: /src/pdns/pdns/check-zone.cc:103,1
    - Dst: end
      Src: /src/pdns/pdns/check-zone.cc:103,1
    - Dst: emplace_back
      Src: /src/pdns/pdns/check-zone.cc:104,1
    - Dst: std::make_pair
      Src: /src/pdns/pdns/check-zone.cc:104,1
    - Dst: qtype::toString
      Src: /src/pdns/pdns/check-zone.cc:104,1
    - Dst: emplace_back
      Src: /src/pdns/pdns/check-zone.cc:107,1
    - Dst: std::make_pair
      Src: /src/pdns/pdns/check-zone.cc:107,1
    - Dst: DNSResourceRecord::qtype::toString
      Src: /src/pdns/pdns/check-zone.cc:107,1
    - Dst: std::set::count
      Src: /src/pdns/pdns/check-zone.cc:114,1
    - Dst: qtype::getCode
      Src: /src/pdns/pdns/check-zone.cc:114,1
    - Dst: emplace_back
      Src: /src/pdns/pdns/check-zone.cc:115,1
    - Dst: std::make_pair
      Src: /src/pdns/pdns/check-zone.cc:115,1
    - Dst: std::set::count
      Src: /src/pdns/pdns/check-zone.cc:118,1
    - Dst: qtype::getCode
      Src: /src/pdns/pdns/check-zone.cc:118,1
    - Dst: emplace_back
      Src: /src/pdns/pdns/check-zone.cc:119,1
    - Dst: std::make_pair
      Src: /src/pdns/pdns/check-zone.cc:119,1
    - Dst: checkHostnameCorrectness
      Src: /src/pdns/pdns/check-zone.cc:125,1
    - Dst: emplace_back
      Src: /src/pdns/pdns/check-zone.cc:128,1
    - Dst: std::make_pair
      Src: /src/pdns/pdns/check-zone.cc:128,1
    - Dst: what
      Src: /src/pdns/pdns/check-zone.cc:128,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 42
    argCount: 5
    argNames:
    - ' oldrrs'
    - ' allrrs'
    - ' zone'
    - flags
    - ' errors'
    argTypes:
    - vector<DNSResourceRecord>
    - vector<DNSResourceRecord>
    - ZoneName
    - RRSetFlags
    - vector<pair<DNSResourceRecord, string>>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 133
      start: 56
    functionDepth: 0
    functionLinenumber: 56
    functionLinenumberEnd: 133
    functionName: Check::checkRRSet
    functionSourceFile: /src/pdns/pdns/check-zone.cc
    functionUses: 2
    functionsReached:
    - qtype::toString
    - count
    - std::set::count
    - DNSResourceRecord::qtype::toString
    - what
    - end
    - qtype::getCode
    - checkHostnameCorrectness
    - DNSResourceRecord::qtype::getCode
    - std::tie
    - sort
    - begin
    - emplace_back
    - std::make_pair
    - std::find
    linkageType: ''
    returnType: void
    signature: void checkRRSet(const vector<DNSResourceRecord>& oldrrs, vector<DNSResourceRecord>&
      allrrs, const ZoneName& zone, RRSetFlags flags, vector<pair<DNSResourceRecord,
      string>>& errors)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: std::string_view::empty
      Src: /src/pdns/pdns/check-zone.cc:33,1
    - Dst: std::string_view::find_first_not_of
      Src: /src/pdns/pdns/check-zone.cc:38,1
    - Dst: std::string
      Src: /src/pdns/pdns/check-zone.cc:39,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/check-zone.cc:39,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 2
    argNames:
    - name
    - ' error'
    argTypes:
    - std::string_view
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 31
    functionDepth: 0
    functionLinenumber: 31
    functionLinenumberEnd: 54
    functionName: Check::validateViewName
    functionSourceFile: /src/pdns/pdns/check-zone.cc
    functionUses: 4
    functionsReached:
    - std::string
    - std::string_view::empty
    - std::to_string
    - std::string_view::find_first_not_of
    linkageType: ''
    returnType: bool
    signature: bool validateViewName(std::string_view name, std::string& error)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: sort
      Src: /src/pdns/pdns/check-zone.cc:65,1
    - Dst: begin
      Src: /src/pdns/pdns/check-zone.cc:65,1
    - Dst: end
      Src: /src/pdns/pdns/check-zone.cc:65,1
    - Dst: std::tie
      Src: /src/pdns/pdns/check-zone.cc:68,1
    - Dst: std::tie
      Src: /src/pdns/pdns/check-zone.cc:68,1
    - Dst: std::set::count
      Src: /src/pdns/pdns/check-zone.cc:75,1
    - Dst: qtype::getCode
      Src: /src/pdns/pdns/check-zone.cc:75,1
    - Dst: emplace_back
      Src: /src/pdns/pdns/check-zone.cc:76,1
    - Dst: std::make_pair
      Src: /src/pdns/pdns/check-zone.cc:76,1
    - Dst: emplace_back
      Src: /src/pdns/pdns/check-zone.cc:79,1
    - Dst: std::make_pair
      Src: /src/pdns/pdns/check-zone.cc:79,1
    - Dst: emplace_back
      Src: /src/pdns/pdns/check-zone.cc:90,1
    - Dst: std::make_pair
      Src: /src/pdns/pdns/check-zone.cc:90,1
    - Dst: count
      Src: /src/pdns/pdns/check-zone.cc:95,1
    - Dst: qtype::getCode
      Src: /src/pdns/pdns/check-zone.cc:95,1
    - Dst: count
      Src: /src/pdns/pdns/check-zone.cc:96,1
    - Dst: DNSResourceRecord::qtype::getCode
      Src: /src/pdns/pdns/check-zone.cc:96,1
    - Dst: std::find
      Src: /src/pdns/pdns/check-zone.cc:103,1
    - Dst: begin
      Src: /src/pdns/pdns/check-zone.cc:103,1
    - Dst: end
      Src: /src/pdns/pdns/check-zone.cc:103,1
    - Dst: end
      Src: /src/pdns/pdns/check-zone.cc:103,1
    - Dst: emplace_back
      Src: /src/pdns/pdns/check-zone.cc:104,1
    - Dst: std::make_pair
      Src: /src/pdns/pdns/check-zone.cc:104,1
    - Dst: qtype::toString
      Src: /src/pdns/pdns/check-zone.cc:104,1
    - Dst: emplace_back
      Src: /src/pdns/pdns/check-zone.cc:107,1
    - Dst: std::make_pair
      Src: /src/pdns/pdns/check-zone.cc:107,1
    - Dst: DNSResourceRecord::qtype::toString
      Src: /src/pdns/pdns/check-zone.cc:107,1
    - Dst: std::set::count
      Src: /src/pdns/pdns/check-zone.cc:114,1
    - Dst: qtype::getCode
      Src: /src/pdns/pdns/check-zone.cc:114,1
    - Dst: emplace_back
      Src: /src/pdns/pdns/check-zone.cc:115,1
    - Dst: std::make_pair
      Src: /src/pdns/pdns/check-zone.cc:115,1
    - Dst: std::set::count
      Src: /src/pdns/pdns/check-zone.cc:118,1
    - Dst: qtype::getCode
      Src: /src/pdns/pdns/check-zone.cc:118,1
    - Dst: emplace_back
      Src: /src/pdns/pdns/check-zone.cc:119,1
    - Dst: std::make_pair
      Src: /src/pdns/pdns/check-zone.cc:119,1
    - Dst: checkHostnameCorrectness
      Src: /src/pdns/pdns/check-zone.cc:125,1
    - Dst: emplace_back
      Src: /src/pdns/pdns/check-zone.cc:128,1
    - Dst: std::make_pair
      Src: /src/pdns/pdns/check-zone.cc:128,1
    - Dst: what
      Src: /src/pdns/pdns/check-zone.cc:128,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 42
    argCount: 5
    argNames:
    - ' oldrrs'
    - ' allrrs'
    - ' zone'
    - flags
    - ' errors'
    argTypes:
    - vector<DNSResourceRecord>
    - vector<DNSResourceRecord>
    - ZoneName
    - RRSetFlags
    - vector<pair<DNSResourceRecord, string>>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 133
      start: 56
    functionDepth: 0
    functionLinenumber: 56
    functionLinenumberEnd: 133
    functionName: Check::checkRRSet
    functionSourceFile: /src/pdns/pdns/check-zone.cc
    functionUses: 2
    functionsReached:
    - qtype::toString
    - count
    - std::set::count
    - DNSResourceRecord::qtype::toString
    - what
    - end
    - qtype::getCode
    - checkHostnameCorrectness
    - DNSResourceRecord::qtype::getCode
    - std::tie
    - sort
    - begin
    - emplace_back
    - std::make_pair
    - std::find
    linkageType: ''
    returnType: void
    signature: void checkRRSet(const vector<DNSResourceRecord>& oldrrs, vector<DNSResourceRecord>&
      allrrs, const ZoneName& zone, RRSetFlags flags, vector<pair<DNSResourceRecord,
      string>>& errors)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 56
    functionDepth: 0
    functionLinenumber: 56
    functionLinenumberEnd: 57
    functionName: DLOG
    functionSourceFile: /src/pdns/pdns/packethandler.cc
    functionUses: 24
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DLOG(x)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: arg
      Src: /src/pdns/pdns/packethandler.cc:75,1
    - Dst: arg
      Src: /src/pdns/pdns/packethandler.cc:76,1
    - Dst: arg
      Src: /src/pdns/pdns/packethandler.cc:77,1
    - Dst: arg
      Src: /src/pdns/pdns/packethandler.cc:78,1
    - Dst: arg
      Src: /src/pdns/pdns/packethandler.cc:80,1
    - Dst: string::empty
      Src: /src/pdns/pdns/packethandler.cc:81,1
    - Dst: std::make_unique<AuthLua4>
      Src: /src/pdns/pdns/packethandler.cc:87,1
    - Dst: arg
      Src: /src/pdns/pdns/packethandler.cc:87,1
    - Dst: loadFile
      Src: /src/pdns/pdns/packethandler.cc:88,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 1
    argNames:
    - slog
    argTypes:
    - Logr::log_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 70
    functionDepth: 0
    functionLinenumber: 70
    functionLinenumberEnd: 90
    functionName: PacketHandler::PacketHandler
    functionSourceFile: /src/pdns/pdns/packethandler.cc
    functionUses: 0
    functionsReached:
    - std::make_unique<AuthLua4>
    - loadFile
    - arg
    - string::empty
    linkageType: ''
    returnType: void
    signature: void PacketHandler::PacketHandler(Logr::log_t slog)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 92
    functionDepth: 0
    functionLinenumber: 92
    functionLinenumberEnd: 95
    functionName: PacketHandler::getBackend
    functionSourceFile: /src/pdns/pdns/packethandler.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: UeberBackend
    signature: UeberBackend *PacketHandler::getBackend()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DLOG
      Src: /src/pdns/pdns/packethandler.cc:100,1
    - Dst: SLOG
      Src: /src/pdns/pdns/packethandler.cc:100,1
    - Dst: info
      Src: /src/pdns/pdns/packethandler.cc:101,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/packethandler.cc:101,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 97
    functionDepth: 0
    functionLinenumber: 97
    functionLinenumberEnd: 102
    functionName: PacketHandler::~PacketHandler()
    functionSourceFile: /src/pdns/pdns/packethandler.cc
    functionUses: 0
    functionsReached:
    - Logging::Loggable
    - SLOG
    - info
    - DLOG
    linkageType: ''
    returnType: void
    signature: void PacketHandler::~PacketHandler()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PacketHandler::addCDNSKEY
      Src: /src/pdns/pdns/packethandler.cc:114,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' p'
    - ' r'
    argTypes:
    - DNSPacket
    - std::unique_ptr<DNSPacket>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 115
      start: 112
    functionDepth: 1
    functionLinenumber: 112
    functionLinenumberEnd: 115
    functionName: PacketHandler::addCDNSKEY
    functionSourceFile: /src/pdns/pdns/packethandler.cc
    functionUses: 1
    functionsReached:
    - PacketHandler::addCDNSKEY
    linkageType: ''
    returnType: bool
    signature: bool PacketHandler::addCDNSKEY(DNSPacket& p, std::unique_ptr<DNSPacket>&
      r)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: getPublishCDNSKEY
      Src: /src/pdns/pdns/packethandler.cc:119,1
    - Dst: string::empty
      Src: /src/pdns/pdns/packethandler.cc:120,1
    - Dst: DNSZoneRecord::dr::setContent
      Src: /src/pdns/pdns/packethandler.cc:130,1
    - Dst: addRecord
      Src: /src/pdns/pdns/packethandler.cc:131,1
    - Dst: std::move
      Src: /src/pdns/pdns/packethandler.cc:131,1
    - Dst: getEntryPoints
      Src: /src/pdns/pdns/packethandler.cc:136,1
    - Dst: DNSZoneRecord::dr::setContent
      Src: /src/pdns/pdns/packethandler.cc:140,1
    - Dst: std::make_shared<DNSKEYRecordContent>
      Src: /src/pdns/pdns/packethandler.cc:140,1
    - Dst: first::getDNSKEY
      Src: /src/pdns/pdns/packethandler.cc:140,1
    - Dst: addRecord
      Src: /src/pdns/pdns/packethandler.cc:141,1
    - Dst: DNSZoneRecord
      Src: /src/pdns/pdns/packethandler.cc:141,1
    - Dst: arg
      Src: /src/pdns/pdns/packethandler.cc:145,1
    - Dst: lookup
      Src: /src/pdns/pdns/packethandler.cc:146,1
    - Dst: QType
      Src: /src/pdns/pdns/packethandler.cc:146,1
    - Dst: SOAData::qname
      Src: /src/pdns/pdns/packethandler.cc:146,1
    - Dst: get
      Src: /src/pdns/pdns/packethandler.cc:148,1
    - Dst: addRecord
      Src: /src/pdns/pdns/packethandler.cc:151,1
    - Dst: std::move
      Src: /src/pdns/pdns/packethandler.cc:151,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 30
    argCount: 3
    argNames:
    - ' p'
    - ' r'
    - sd
    argTypes:
    - DNSPacket
    - std::unique_ptr<DNSPacket>
    - SOAData
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 156
      start: 116
    functionDepth: 3
    functionLinenumber: 116
    functionLinenumberEnd: 156
    functionName: PacketHandler::addCDNSKEY
    functionSourceFile: /src/pdns/pdns/packethandler.cc
    functionUses: 1
    functionsReached:
    - std::move
    - lookup
    - string::empty
    - DNSZoneRecord
    - QType
    - SOAData::qname
    - DNSZoneRecord::dr::setContent
    - std::make_shared<DNSKEYRecordContent>
    - get
    - addRecord
    - first::getDNSKEY
    - getPublishCDNSKEY
    - getEntryPoints
    - arg
    linkageType: ''
    returnType: bool
    signature: bool PacketHandler::addCDNSKEY(DNSPacket& p, std::unique_ptr<DNSPacket>&
      r, SOAData &sd)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: getKeys
      Src: /src/pdns/pdns/packethandler.cc:170,1
    - Dst: DNSZoneRecord::dr::setContent
      Src: /src/pdns/pdns/packethandler.cc:177,1
    - Dst: std::make_shared<DNSKEYRecordContent>
      Src: /src/pdns/pdns/packethandler.cc:177,1
    - Dst: first::getDNSKEY
      Src: /src/pdns/pdns/packethandler.cc:177,1
    - Dst: addRecord
      Src: /src/pdns/pdns/packethandler.cc:179,1
    - Dst: std::move
      Src: /src/pdns/pdns/packethandler.cc:179,1
    - Dst: arg
      Src: /src/pdns/pdns/packethandler.cc:183,1
    - Dst: lookup
      Src: /src/pdns/pdns/packethandler.cc:184,1
    - Dst: QType
      Src: /src/pdns/pdns/packethandler.cc:184,1
    - Dst: get
      Src: /src/pdns/pdns/packethandler.cc:186,1
    - Dst: addRecord
      Src: /src/pdns/pdns/packethandler.cc:188,1
    - Dst: std::move
      Src: /src/pdns/pdns/packethandler.cc:188,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 21
    argCount: 2
    argNames:
    - ' p'
    - ' r'
    argTypes:
    - DNSPacket
    - std::unique_ptr<DNSPacket>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 194
      start: 165
    functionDepth: 3
    functionLinenumber: 165
    functionLinenumberEnd: 194
    functionName: PacketHandler::addDNSKEY
    functionSourceFile: /src/pdns/pdns/packethandler.cc
    functionUses: 0
    functionsReached:
    - std::move
    - lookup
    - getKeys
    - QType
    - std::make_shared<DNSKEYRecordContent>
    - DNSZoneRecord::dr::setContent
    - get
    - addRecord
    - first::getDNSKEY
    - arg
    linkageType: ''
    returnType: bool
    signature: bool PacketHandler::addDNSKEY(DNSPacket& p, std::unique_ptr<DNSPacket>&
      r)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PacketHandler::addCDS
      Src: /src/pdns/pdns/packethandler.cc:207,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' p'
    - ' r'
    argTypes:
    - DNSPacket
    - std::unique_ptr<DNSPacket>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 208
      start: 205
    functionDepth: 1
    functionLinenumber: 205
    functionLinenumberEnd: 208
    functionName: PacketHandler::addCDS
    functionSourceFile: /src/pdns/pdns/packethandler.cc
    functionUses: 1
    functionsReached:
    - PacketHandler::addCDS
    linkageType: ''
    returnType: bool
    signature: bool PacketHandler::addCDS(DNSPacket& p, std::unique_ptr<DNSPacket>&
      r)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: getPublishCDS
      Src: /src/pdns/pdns/packethandler.cc:212,1
    - Dst: string::empty
      Src: /src/pdns/pdns/packethandler.cc:213,1
    - Dst: stringtok
      Src: /src/pdns/pdns/packethandler.cc:217,1
    - Dst: std::find
      Src: /src/pdns/pdns/packethandler.cc:225,1
    - Dst: vector::begin
      Src: /src/pdns/pdns/packethandler.cc:225,1
    - Dst: vector::end
      Src: /src/pdns/pdns/packethandler.cc:225,1
    - Dst: vector::end
      Src: /src/pdns/pdns/packethandler.cc:225,1
    - Dst: DNSZoneRecord::dr::setContent
      Src: /src/pdns/pdns/packethandler.cc:226,1
    - Dst: addRecord
      Src: /src/pdns/pdns/packethandler.cc:227,1
    - Dst: std::move
      Src: /src/pdns/pdns/packethandler.cc:227,1
    - Dst: getEntryPoints
      Src: /src/pdns/pdns/packethandler.cc:233,1
    - Dst: DNSZoneRecord::dr::setContent
      Src: /src/pdns/pdns/packethandler.cc:238,1
    - Dst: std::make_shared<DSRecordContent>
      Src: /src/pdns/pdns/packethandler.cc:238,1
    - Dst: makeDSFromDNSKey
      Src: /src/pdns/pdns/packethandler.cc:238,1
    - Dst: SOAData::qname
      Src: /src/pdns/pdns/packethandler.cc:238,1
    - Dst: first::getDNSKEY
      Src: /src/pdns/pdns/packethandler.cc:238,1
    - Dst: pdns::checked_stoi<uint8_t>
      Src: /src/pdns/pdns/packethandler.cc:238,1
    - Dst: addRecord
      Src: /src/pdns/pdns/packethandler.cc:239,1
    - Dst: DNSZoneRecord
      Src: /src/pdns/pdns/packethandler.cc:239,1
    - Dst: arg
      Src: /src/pdns/pdns/packethandler.cc:244,1
    - Dst: lookup
      Src: /src/pdns/pdns/packethandler.cc:245,1
    - Dst: QType
      Src: /src/pdns/pdns/packethandler.cc:245,1
    - Dst: SOAData::qname
      Src: /src/pdns/pdns/packethandler.cc:245,1
    - Dst: get
      Src: /src/pdns/pdns/packethandler.cc:247,1
    - Dst: addRecord
      Src: /src/pdns/pdns/packethandler.cc:250,1
    - Dst: std::move
      Src: /src/pdns/pdns/packethandler.cc:250,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 32
    argCount: 3
    argNames:
    - ' p'
    - ' r'
    - sd
    argTypes:
    - DNSPacket
    - std::unique_ptr<DNSPacket>
    - SOAData
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 256
      start: 209
    functionDepth: 3
    functionLinenumber: 209
    functionLinenumberEnd: 256
    functionName: PacketHandler::addCDS
    functionSourceFile: /src/pdns/pdns/packethandler.cc
    functionUses: 1
    functionsReached:
    - lookup
    - SOAData::qname
    - getPublishCDS
    - std::make_shared<DSRecordContent>
    - vector::begin
    - stringtok
    - pdns::checked_stoi<uint8_t>
    - string::empty
    - QType
    - DNSZoneRecord::dr::setContent
    - addRecord
    - first::getDNSKEY
    - getEntryPoints
    - vector::end
    - get
    - makeDSFromDNSKey
    - arg
    - std::move
    - DNSZoneRecord
    - std::find
    linkageType: ''
    returnType: bool
    signature: bool PacketHandler::addCDS(DNSPacket& p, std::unique_ptr<DNSPacket>&
      r, SOAData &sd)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: NSEC3PARAMRecordContent::NSEC3PARAMRecordContent
      Src: /src/pdns/pdns/packethandler.cc:263,1
    - Dst: getNSEC3PARAM
      Src: /src/pdns/pdns/packethandler.cc:264,1
    - Dst: DNSZoneRecord::dr::setContent
      Src: /src/pdns/pdns/packethandler.cc:269,1
    - Dst: std::make_shared<NSEC3PARAMRecordContent>
      Src: /src/pdns/pdns/packethandler.cc:269,1
    - Dst: addRecord
      Src: /src/pdns/pdns/packethandler.cc:271,1
    - Dst: std::move
      Src: /src/pdns/pdns/packethandler.cc:271,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 2
    argNames:
    - ' p'
    - ' r'
    argTypes:
    - DNSPacket
    - std::unique_ptr<DNSPacket>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 275
      start: 259
    functionDepth: 3
    functionLinenumber: 259
    functionLinenumberEnd: 275
    functionName: PacketHandler::addNSEC3PARAM
    functionSourceFile: /src/pdns/pdns/packethandler.cc
    functionUses: 0
    functionsReached:
    - std::move
    - DNSZoneRecord::dr::setContent
    - NSEC3PARAMRecordContent::NSEC3PARAMRecordContent
    - getNSEC3PARAM
    - addRecord
    - std::make_shared<NSEC3PARAMRecordContent>
    linkageType: ''
    returnType: bool
    signature: bool PacketHandler::addNSEC3PARAM(const DNSPacket& p, std::unique_ptr<DNSPacket>&
      r)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: qtype::getCode
      Src: /src/pdns/pdns/packethandler.cc:283,1
    - Dst: arg
      Src: /src/pdns/pdns/packethandler.cc:287,1
    - Dst: fullVersionString
      Src: /src/pdns/pdns/packethandler.cc:290,1
    - Dst: setRcode
      Src: /src/pdns/pdns/packethandler.cc:294,1
    - Dst: DNSZoneRecord::dr::setContent
      Src: /src/pdns/pdns/packethandler.cc:299,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/packethandler.cc:299,1
    - Dst: arg
      Src: /src/pdns/pdns/packethandler.cc:303,1
    - Dst: setRcode
      Src: /src/pdns/pdns/packethandler.cc:306,1
    - Dst: string::empty
      Src: /src/pdns/pdns/packethandler.cc:310,1
    - Dst: DNSZoneRecord::dr::setContent
      Src: /src/pdns/pdns/packethandler.cc:313,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/packethandler.cc:313,1
    - Dst: setRcode
      Src: /src/pdns/pdns/packethandler.cc:316,1
    - Dst: addRecord
      Src: /src/pdns/pdns/packethandler.cc:324,1
    - Dst: std::move
      Src: /src/pdns/pdns/packethandler.cc:324,1
    - Dst: setRcode
      Src: /src/pdns/pdns/packethandler.cc:328,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 36
    argCount: 3
    argNames:
    - ' p'
    - ' r'
    - target
    argTypes:
    - DNSPacket
    - std::unique_ptr<DNSPacket>
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 330
      start: 279
    functionDepth: 3
    functionLinenumber: 279
    functionLinenumberEnd: 330
    functionName: PacketHandler::doChaosRequest
    functionSourceFile: /src/pdns/pdns/packethandler.cc
    functionUses: 0
    functionsReached:
    - std::move
    - string::empty
    - DNSZoneRecord::dr::setContent
    - qtype::getCode
    - DNSRecordContent::make
    - addRecord
    - setRcode
    - fullVersionString
    - arg
    linkageType: ''
    returnType: int
    signature: int PacketHandler::doChaosRequest(const DNSPacket& p, std::unique_ptr<DNSPacket>&
      r, DNSName &target) const
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: qname
      Src: /src/pdns/pdns/packethandler.cc:338,1
    - Dst: lookup
      Src: /src/pdns/pdns/packethandler.cc:341,1
    - Dst: QType
      Src: /src/pdns/pdns/packethandler.cc:341,1
    - Dst: get
      Src: /src/pdns/pdns/packethandler.cc:342,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/packethandler.cc:343,1
    - Dst: vector::empty
      Src: /src/pdns/pdns/packethandler.cc:345,1
    - Dst: DNSName::chopOff
      Src: /src/pdns/pdns/packethandler.cc:348,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 2
    argNames:
    - ' p'
    - target
    argTypes:
    - DNSPacket
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 350
      start: 332
    functionDepth: 0
    functionLinenumber: 332
    functionLinenumberEnd: 350
    functionName: PacketHandler::getBestReferralNS
    functionSourceFile: /src/pdns/pdns/packethandler.cc
    functionUses: 0
    functionsReached:
    - vector::push_back
    - lookup
    - DNSName::chopOff
    - QType
    - get
    - vector::empty
    - qname
    linkageType: ''
    returnType: vector<DNSZoneRecord>
    signature: vector<DNSZoneRecord> PacketHandler::getBestReferralNS(DNSPacket& p,
      const DNSName &target)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: vector<DNSZoneRecord>::clear
      Src: /src/pdns/pdns/packethandler.cc:354,1
    - Dst: DNSName::DNSName
      Src: /src/pdns/pdns/packethandler.cc:356,1
    - Dst: DLOG
      Src: /src/pdns/pdns/packethandler.cc:359,1
    - Dst: SLOG
      Src: /src/pdns/pdns/packethandler.cc:359,1
    - Dst: qname
      Src: /src/pdns/pdns/packethandler.cc:359,1
    - Dst: info
      Src: /src/pdns/pdns/packethandler.cc:360,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/packethandler.cc:360,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/packethandler.cc:360,1
    - Dst: qname
      Src: /src/pdns/pdns/packethandler.cc:360,1
    - Dst: lookup
      Src: /src/pdns/pdns/packethandler.cc:362,1
    - Dst: QType
      Src: /src/pdns/pdns/packethandler.cc:362,1
    - Dst: get
      Src: /src/pdns/pdns/packethandler.cc:363,1
    - Dst: vector<DNSZoneRecord>::push_back
      Src: /src/pdns/pdns/packethandler.cc:364,1
    - Dst: DNSZoneRecord::dr::setContent
      Src: /src/pdns/pdns/packethandler.cc:367,1
    - Dst: std::make_shared<CNAMERecordContent>
      Src: /src/pdns/pdns/packethandler.cc:367,1
    - Dst: CNAMERecordContent
      Src: /src/pdns/pdns/packethandler.cc:367,1
    - Dst: getRR
      Src: /src/pdns/pdns/packethandler.cc:367,1
    - Dst: getRR
      Src: /src/pdns/pdns/packethandler.cc:369,1
    - Dst: vector<DNSZoneRecord>::push_back
      Src: /src/pdns/pdns/packethandler.cc:370,1
    - Dst: vector<DNSZoneRecord>::empty
      Src: /src/pdns/pdns/packethandler.cc:372,1
    - Dst: DNSName::hasLabels
      Src: /src/pdns/pdns/packethandler.cc:375,1
    - Dst: DNSName::appendRawLabel
      Src: /src/pdns/pdns/packethandler.cc:376,1
    - Dst: DNSName::getRawLabel
      Src: /src/pdns/pdns/packethandler.cc:376,1
    - Dst: qname
      Src: /src/pdns/pdns/packethandler.cc:378,1
    - Dst: DNSName::chopOff
      Src: /src/pdns/pdns/packethandler.cc:382,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 25
    argCount: 3
    argNames:
    - ' p'
    - target
    - ret
    argTypes:
    - DNSPacket
    - DNSName
    - vector<DNSZoneRecord>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 384
      start: 352
    functionDepth: 1
    functionLinenumber: 352
    functionLinenumberEnd: 384
    functionName: PacketHandler::getBestDNAMESynth
    functionSourceFile: /src/pdns/pdns/packethandler.cc
    functionUses: 0
    functionsReached:
    - lookup
    - std::make_shared<CNAMERecordContent>
    - vector<DNSZoneRecord>::empty
    - SLOG
    - DNSName::chopOff
    - Logging::Loggable
    - vector<DNSZoneRecord>::clear
    - QType
    - DNSName::getRawLabel
    - vector<DNSZoneRecord>::push_back
    - DNSZoneRecord::dr::setContent
    - CNAMERecordContent
    - DNSName::hasLabels
    - get
    - DNSName::appendRawLabel
    - qname
    - getRR
    - info
    - DLOG
    - DNSName::DNSName
    linkageType: ''
    returnType: void
    signature: void PacketHandler::getBestDNAMESynth(DNSPacket& p, DNSName &target,
      vector<DNSZoneRecord> &ret)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: vector<DNSZoneRecord>*::clear
      Src: /src/pdns/pdns/packethandler.cc:390,1
    - Dst: PacketHandler::doLuaRecords
      Src: /src/pdns/pdns/packethandler.cc:397,1
    - Dst: DNSName::chopOff
      Src: /src/pdns/pdns/packethandler.cc:401,1
    - Dst: DNSName::empty
      Src: /src/pdns/pdns/packethandler.cc:402,1
    - Dst: lookup
      Src: /src/pdns/pdns/packethandler.cc:403,1
    - Dst: QType
      Src: /src/pdns/pdns/packethandler.cc:403,1
    - Dst: lookup
      Src: /src/pdns/pdns/packethandler.cc:405,1
    - Dst: QType
      Src: /src/pdns/pdns/packethandler.cc:405,1
    - Dst: get
      Src: /src/pdns/pdns/packethandler.cc:407,1
    - Dst: lookupEnd
      Src: /src/pdns/pdns/packethandler.cc:410,1
    - Dst: PacketHandler::isPresigned
      Src: /src/pdns/pdns/packethandler.cc:414,1
    - Dst: DLOG
      Src: /src/pdns/pdns/packethandler.cc:416,1
    - Dst: SLOG
      Src: /src/pdns/pdns/packethandler.cc:416,1
    - Dst: info
      Src: /src/pdns/pdns/packethandler.cc:417,1
    - Dst: DLOG
      Src: /src/pdns/pdns/packethandler.cc:421,1
    - Dst: SLOG
      Src: /src/pdns/pdns/packethandler.cc:421,1
    - Dst: info
      Src: /src/pdns/pdns/packethandler.cc:422,1
    - Dst: getRR
      Src: /src/pdns/pdns/packethandler.cc:424,1
    - Dst: qtype::getCode
      Src: /src/pdns/pdns/packethandler.cc:428,1
    - Dst: qtype::getCode
      Src: /src/pdns/pdns/packethandler.cc:428,1
    - Dst: DLOG
      Src: /src/pdns/pdns/packethandler.cc:430,1
    - Dst: SLOG
      Src: /src/pdns/pdns/packethandler.cc:430,1
    - Dst: auto::getCode
      Src: /src/pdns/pdns/packethandler.cc:430,1
    - Dst: info
      Src: /src/pdns/pdns/packethandler.cc:431,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/packethandler.cc:431,1
    - Dst: auto::getCode
      Src: /src/pdns/pdns/packethandler.cc:431,1
    - Dst: luaSynth
      Src: /src/pdns/pdns/packethandler.cc:433,1
    - Dst: auto::getCode
      Src: /src/pdns/pdns/packethandler.cc:433,1
    - Dst: qname
      Src: /src/pdns/pdns/packethandler.cc:433,1
    - Dst: DNSZoneRecord::dr::setContent
      Src: /src/pdns/pdns/packethandler.cc:436,1
    - Dst: getRealRemote
      Src: /src/pdns/pdns/packethandler.cc:437,1
    - Dst: vector<DNSZoneRecord>*::push_back
      Src: /src/pdns/pdns/packethandler.cc:443,1
    - Dst: lookupEnd
      Src: /src/pdns/pdns/packethandler.cc:447,1
    - Dst: qtype::getCode
      Src: /src/pdns/pdns/packethandler.cc:455,1
    - Dst: qtype::getCode
      Src: /src/pdns/pdns/packethandler.cc:455,1
    - Dst: vector<DNSZoneRecord>*::clear
      Src: /src/pdns/pdns/packethandler.cc:458,1
    - Dst: vector<DNSZoneRecord>*::push_back
      Src: /src/pdns/pdns/packethandler.cc:460,1
    - Dst: qname
      Src: /src/pdns/pdns/packethandler.cc:468,1
    - Dst: lookup
      Src: /src/pdns/pdns/packethandler.cc:472,1
    - Dst: QType
      Src: /src/pdns/pdns/packethandler.cc:472,1
    - Dst: get
      Src: /src/pdns/pdns/packethandler.cc:473,1
    - Dst: DLOG
      Src: /src/pdns/pdns/packethandler.cc:474,1
    - Dst: SLOG
      Src: /src/pdns/pdns/packethandler.cc:474,1
    - Dst: info
      Src: /src/pdns/pdns/packethandler.cc:475,1
    - Dst: lookupEnd
      Src: /src/pdns/pdns/packethandler.cc:476,1
    CyclomaticComplexity: 32
    EdgeCount: 32
    ICount: 64
    argCount: 4
    argNames:
    - ' p'
    - target
    - wildcard
    - ret
    argTypes:
    - DNSPacket
    - DNSName
    - DNSName
    - vector<DNSZoneRecord>*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 483
      start: 388
    functionDepth: 8
    functionLinenumber: 388
    functionLinenumberEnd: 483
    functionName: PacketHandler::getBestWildcard
    functionSourceFile: /src/pdns/pdns/packethandler.cc
    functionUses: 0
    functionsReached:
    - lookup
    - PacketHandler::doLuaRecords
    - auto::getCode
    - SLOG
    - DNSName::chopOff
    - Logging::Loggable
    - QType
    - lookupEnd
    - DNSZoneRecord::dr::setContent
    - PacketHandler::isPresigned
    - vector<DNSZoneRecord>*::clear
    - get
    - qtype::getCode
    - DNSName::empty
    - qname
    - vector<DNSZoneRecord>*::push_back
    - getRR
    - luaSynth
    - getRealRemote
    - info
    - DLOG
    linkageType: ''
    returnType: bool
    signature: bool PacketHandler::getBestWildcard(DNSPacket& p, const DNSName &target,
      DNSName &wildcard, vector<DNSZoneRecord>* ret)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: DNSName::isPartOf
      Src: /src/pdns/pdns/packethandler.cc:493,1
    - Dst: qname
      Src: /src/pdns/pdns/packethandler.cc:493,1
    - Dst: lookup
      Src: /src/pdns/pdns/packethandler.cc:497,1
    - Dst: QType
      Src: /src/pdns/pdns/packethandler.cc:497,1
    - Dst: get
      Src: /src/pdns/pdns/packethandler.cc:498,1
    - Dst: getRR
      Src: /src/pdns/pdns/packethandler.cc:503,1
    - Dst: push_back
      Src: /src/pdns/pdns/packethandler.cc:504,1
    - Dst: std::move
      Src: /src/pdns/pdns/packethandler.cc:504,1
    - Dst: auto::getTarget
      Src: /src/pdns/pdns/packethandler.cc:505,1
    - Dst: auto::getTarget
      Src: /src/pdns/pdns/packethandler.cc:505,1
    - Dst: auto::getPriority
      Src: /src/pdns/pdns/packethandler.cc:506,1
    - Dst: lookupEnd
      Src: /src/pdns/pdns/packethandler.cc:512,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/packethandler.cc:514,1
    - Dst: QType
      Src: /src/pdns/pdns/packethandler.cc:514,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 27
    argCount: 3
    argNames:
    - firstTarget
    - qtype
    - ' extraRecords'
    argTypes:
    - DNSName
    - uint16_t
    - vector<DNSZoneRecord>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 520
      start: 485
    functionDepth: 0
    functionLinenumber: 485
    functionLinenumberEnd: 520
    functionName: PacketHandler::doAdditionalServiceProcessing
    functionSourceFile: /src/pdns/pdns/packethandler.cc
    functionUses: 0
    functionsReached:
    - auto::getTarget
    - getRR
    - std::move
    - auto::getPriority
    - lookup
    - push_back
    - PDNSException
    - QType
    - lookupEnd
    - get
    - DNSName::isPartOf
    - qname
    linkageType: ''
    returnType: DNSName
    signature: DNSName PacketHandler::doAdditionalServiceProcessing(const DNSName
      &firstTarget, const uint16_t &qtype, std::unique_ptr<DNSPacket>& /* r */, vector<DNSZoneRecord>&
      extraRecords)
  - BBCount: 24
    BranchProfiles: []
    Callsites:
    - Dst: DNSName::DNSName
      Src: /src/pdns/pdns/packethandler.cc:526,1
    - Dst: getRRS
      Src: /src/pdns/pdns/packethandler.cc:530,1
    - Dst: std::unordered_set::reserve
      Src: /src/pdns/pdns/packethandler.cc:532,1
    - Dst: size
      Src: /src/pdns/pdns/packethandler.cc:532,1
    - Dst: DNSName::clear
      Src: /src/pdns/pdns/packethandler.cc:535,1
    - Dst: getRR
      Src: /src/pdns/pdns/packethandler.cc:538,1
    - Dst: getRR
      Src: /src/pdns/pdns/packethandler.cc:541,1
    - Dst: getRR
      Src: /src/pdns/pdns/packethandler.cc:544,1
    - Dst: getRR
      Src: /src/pdns/pdns/packethandler.cc:548,1
    - Dst: auto::getTarget
      Src: /src/pdns/pdns/packethandler.cc:549,1
    - Dst: DNSName::isRoot
      Src: /src/pdns/pdns/packethandler.cc:550,1
    - Dst: auto::getPriority
      Src: /src/pdns/pdns/packethandler.cc:553,1
    - Dst: PacketHandler::doAdditionalServiceProcessing
      Src: /src/pdns/pdns/packethandler.cc:554,1
    - Dst: getRR
      Src: /src/pdns/pdns/packethandler.cc:559,1
    - Dst: auto::getFlags
      Src: /src/pdns/pdns/packethandler.cc:560,1
    - Dst: toLowerInPlace
      Src: /src/pdns/pdns/packethandler.cc:561,1
    - Dst: auto::find
      Src: /src/pdns/pdns/packethandler.cc:562,1
    - Dst: auto::getReplacement
      Src: /src/pdns/pdns/packethandler.cc:563,1
    - Dst: DLOG
      Src: /src/pdns/pdns/packethandler.cc:564,1
    - Dst: SLOG
      Src: /src/pdns/pdns/packethandler.cc:564,1
    - Dst: info
      Src: /src/pdns/pdns/packethandler.cc:565,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/packethandler.cc:565,1
    - Dst: auto::find
      Src: /src/pdns/pdns/packethandler.cc:567,1
    - Dst: auto::getReplacement
      Src: /src/pdns/pdns/packethandler.cc:568,1
    - Dst: DLOG
      Src: /src/pdns/pdns/packethandler.cc:569,1
    - Dst: SLOG
      Src: /src/pdns/pdns/packethandler.cc:569,1
    - Dst: info
      Src: /src/pdns/pdns/packethandler.cc:570,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/packethandler.cc:570,1
    - Dst: lookup
      Src: /src/pdns/pdns/packethandler.cc:571,1
    - Dst: QType
      Src: /src/pdns/pdns/packethandler.cc:571,1
    - Dst: get
      Src: /src/pdns/pdns/packethandler.cc:572,1
    - Dst: getRR
      Src: /src/pdns/pdns/packethandler.cc:573,1
    - Dst: DNSName::isPartOf
      Src: /src/pdns/pdns/packethandler.cc:574,1
    - Dst: qname
      Src: /src/pdns/pdns/packethandler.cc:574,1
    - Dst: std::unordered_set::emplace
      Src: /src/pdns/pdns/packethandler.cc:575,1
    - Dst: vector::emplace_back
      Src: /src/pdns/pdns/packethandler.cc:578,1
    - Dst: std::move
      Src: /src/pdns/pdns/packethandler.cc:578,1
    - Dst: DNSName::clear
      Src: /src/pdns/pdns/packethandler.cc:580,1
    - Dst: DNSName::empty
      Src: /src/pdns/pdns/packethandler.cc:587,1
    - Dst: DNSName::isPartOf
      Src: /src/pdns/pdns/packethandler.cc:587,1
    - Dst: qname
      Src: /src/pdns/pdns/packethandler.cc:587,1
    - Dst: std::unordered_set::emplace
      Src: /src/pdns/pdns/packethandler.cc:588,1
    - Dst: addRecord
      Src: /src/pdns/pdns/packethandler.cc:594,1
    - Dst: std::move
      Src: /src/pdns/pdns/packethandler.cc:594,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/packethandler.cc:596,1
    - Dst: getServiceRecords
      Src: /src/pdns/pdns/packethandler.cc:598,1
    - Dst: getRR
      Src: /src/pdns/pdns/packethandler.cc:600,1
    - Dst: auto::getTarget
      Src: /src/pdns/pdns/packethandler.cc:601,1
    - Dst: auto::getTarget
      Src: /src/pdns/pdns/packethandler.cc:601,1
    - Dst: auto::hasParam
      Src: /src/pdns/pdns/packethandler.cc:603,1
    - Dst: auto::autoHint
      Src: /src/pdns/pdns/packethandler.cc:603,1
    - Dst: auto::clone
      Src: /src/pdns/pdns/packethandler.cc:604,1
    - Dst: PacketHandler::getIPAddressFor
      Src: /src/pdns/pdns/packethandler.cc:609,1
    - Dst: auto::size
      Src: /src/pdns/pdns/packethandler.cc:610,1
    - Dst: auto::removeParam
      Src: /src/pdns/pdns/packethandler.cc:611,1
    - Dst: auto::setHints
      Src: /src/pdns/pdns/packethandler.cc:613,1
    - Dst: auto::removeParam
      Src: /src/pdns/pdns/packethandler.cc:616,1
    - Dst: dr::setContent
      Src: /src/pdns/pdns/packethandler.cc:619,1
    - Dst: std::move
      Src: /src/pdns/pdns/packethandler.cc:619,1
    - Dst: auto::hasParam
      Src: /src/pdns/pdns/packethandler.cc:622,1
    - Dst: auto::autoHint
      Src: /src/pdns/pdns/packethandler.cc:622,1
    - Dst: auto::clone
      Src: /src/pdns/pdns/packethandler.cc:623,1
    - Dst: PacketHandler::getIPAddressFor
      Src: /src/pdns/pdns/packethandler.cc:628,1
    - Dst: auto::size
      Src: /src/pdns/pdns/packethandler.cc:629,1
    - Dst: auto::removeParam
      Src: /src/pdns/pdns/packethandler.cc:630,1
    - Dst: auto::setHints
      Src: /src/pdns/pdns/packethandler.cc:632,1
    - Dst: auto::removeParam
      Src: /src/pdns/pdns/packethandler.cc:635,1
    - Dst: dr::setContent
      Src: /src/pdns/pdns/packethandler.cc:637,1
    - Dst: std::move
      Src: /src/pdns/pdns/packethandler.cc:637,1
    - Dst: lookup
      Src: /src/pdns/pdns/packethandler.cc:642,1
    - Dst: QType
      Src: /src/pdns/pdns/packethandler.cc:642,1
    - Dst: get
      Src: /src/pdns/pdns/packethandler.cc:643,1
    - Dst: addRecord
      Src: /src/pdns/pdns/packethandler.cc:646,1
    - Dst: std::move
      Src: /src/pdns/pdns/packethandler.cc:646,1
    CyclomaticComplexity: 35
    EdgeCount: 35
    ICount: 98
    argCount: 2
    argNames:
    - ' p'
    - ' r'
    argTypes:
    - DNSPacket
    - std::unique_ptr<DNSPacket>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 650
      start: 524
    functionDepth: 3
    functionLinenumber: 524
    functionLinenumberEnd: 650
    functionName: PacketHandler::doAdditionalProcessing
    functionSourceFile: /src/pdns/pdns/packethandler.cc
    functionUses: 0
    functionsReached:
    - toLowerInPlace
    - lookup
    - PacketHandler::doAdditionalServiceProcessing
    - std::unordered_set::reserve
    - DNSName::clear
    - std::unordered_set::emplace
    - auto::getReplacement
    - auto::size
    - SLOG
    - getRRS
    - Logging::Loggable
    - auto::getFlags
    - QType
    - DNSName::isRoot
    - size
    - auto::setHints
    - PacketHandler::getIPAddressFor
    - addRecord
    - DNSName::isPartOf
    - vector::clear
    - get
    - auto::autoHint
    - auto::hasParam
    - DNSName::empty
    - qname
    - auto::clone
    - auto::find
    - getServiceRecords
    - auto::getTarget
    - getRR
    - auto::getPriority
    - std::move
    - dr::setContent
    - auto::removeParam
    - info
    - vector::emplace_back
    - DLOG
    - DNSName::DNSName
    linkageType: ''
    returnType: void
    signature: void PacketHandler::doAdditionalProcessing(DNSPacket& p, std::unique_ptr<DNSPacket>&
      r)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lookup
      Src: /src/pdns/pdns/packethandler.cc:657,1
    - Dst: get
      Src: /src/pdns/pdns/packethandler.cc:659,1
    - Dst: getRR
      Src: /src/pdns/pdns/packethandler.cc:661,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/packethandler.cc:662,1
    - Dst: auto::getCA
      Src: /src/pdns/pdns/packethandler.cc:662,1
    - Dst: getRR
      Src: /src/pdns/pdns/packethandler.cc:664,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/packethandler.cc:665,1
    - Dst: auto::getCA
      Src: /src/pdns/pdns/packethandler.cc:665,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 2
    argNames:
    - target
    - qtype
    argTypes:
    - DNSName
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 669
      start: 652
    functionDepth: 0
    functionLinenumber: 652
    functionLinenumberEnd: 669
    functionName: PacketHandler::getIPAddressFor
    functionSourceFile: /src/pdns/pdns/packethandler.cc
    functionUses: 1
    functionsReached:
    - getRR
    - vector::push_back
    - lookup
    - get
    - auto::getCA
    linkageType: ''
    returnType: vector<ComboAddress>
    signature: vector<ComboAddress> PacketHandler::getIPAddressFor(const DNSName &target,
      const uint16_t qtype)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: NSECRecordContent::NSECRecordContent
      Src: /src/pdns/pdns/packethandler.cc:673,1
    - Dst: NSECRecordContent::set
      Src: /src/pdns/pdns/packethandler.cc:676,1
    - Dst: NSECRecordContent::set
      Src: /src/pdns/pdns/packethandler.cc:677,1
    - Dst: qname
      Src: /src/pdns/pdns/packethandler.cc:678,1
    - Dst: NSECRecordContent::set
      Src: /src/pdns/pdns/packethandler.cc:679,1
    - Dst: PacketHandler::isPresigned
      Src: /src/pdns/pdns/packethandler.cc:680,1
    - Dst: getKeys
      Src: /src/pdns/pdns/packethandler.cc:681,1
    - Dst: NSECRecordContent::set
      Src: /src/pdns/pdns/packethandler.cc:684,1
    - Dst: getPublishCDNSKEY
      Src: /src/pdns/pdns/packethandler.cc:686,1
    - Dst: string::empty
      Src: /src/pdns/pdns/packethandler.cc:687,1
    - Dst: NSECRecordContent::set
      Src: /src/pdns/pdns/packethandler.cc:688,1
    - Dst: getPublishCDS
      Src: /src/pdns/pdns/packethandler.cc:690,1
    - Dst: string::empty
      Src: /src/pdns/pdns/packethandler.cc:691,1
    - Dst: NSECRecordContent::set
      Src: /src/pdns/pdns/packethandler.cc:692,1
    - Dst: lookup
      Src: /src/pdns/pdns/packethandler.cc:705,1
    - Dst: QType
      Src: /src/pdns/pdns/packethandler.cc:705,1
    - Dst: get
      Src: /src/pdns/pdns/packethandler.cc:706,1
    - Dst: PacketHandler::isPresigned
      Src: /src/pdns/pdns/packethandler.cc:708,1
    - Dst: PacketHandler::doLuaRecords
      Src: /src/pdns/pdns/packethandler.cc:710,1
    - Dst: NSECRecordContent::set
      Src: /src/pdns/pdns/packethandler.cc:714,1
    - Dst: getRR
      Src: /src/pdns/pdns/packethandler.cc:714,1
    - Dst: PacketHandler::isPresigned
      Src: /src/pdns/pdns/packethandler.cc:723,1
    - Dst: NSECRecordContent::set
      Src: /src/pdns/pdns/packethandler.cc:724,1
    - Dst: NSECRecordContent::set
      Src: /src/pdns/pdns/packethandler.cc:725,1
    - Dst: PacketHandler::isPresigned
      Src: /src/pdns/pdns/packethandler.cc:728,1
    - Dst: arg
      Src: /src/pdns/pdns/packethandler.cc:728,1
    - Dst: NSECRecordContent::set
      Src: /src/pdns/pdns/packethandler.cc:732,1
    - Dst: getNegativeTTL
      Src: /src/pdns/pdns/packethandler.cc:737,1
    - Dst: DNSZoneRecord::dr::setContent
      Src: /src/pdns/pdns/packethandler.cc:739,1
    - Dst: std::make_shared<NSECRecordContent>
      Src: /src/pdns/pdns/packethandler.cc:739,1
    - Dst: std::move
      Src: /src/pdns/pdns/packethandler.cc:739,1
    - Dst: addRecord
      Src: /src/pdns/pdns/packethandler.cc:743,1
    - Dst: std::move
      Src: /src/pdns/pdns/packethandler.cc:743,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 49
    argCount: 4
    argNames:
    - ' r'
    - ' name'
    - ' next'
    - mode
    argTypes:
    - std::unique_ptr<DNSPacket>
    - DNSName
    - DNSName
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 744
      start: 671
    functionDepth: 3
    functionLinenumber: 671
    functionLinenumberEnd: 744
    functionName: PacketHandler::emitNSEC
    functionSourceFile: /src/pdns/pdns/packethandler.cc
    functionUses: 0
    functionsReached:
    - lookup
    - PacketHandler::doLuaRecords
    - getPublishCDS
    - NSECRecordContent::NSECRecordContent
    - string::empty
    - QType
    - DNSZoneRecord::dr::setContent
    - PacketHandler::isPresigned
    - addRecord
    - getNegativeTTL
    - std::make_shared<NSECRecordContent>
    - getKeys
    - get
    - NSECRecordContent::set
    - qname
    - arg
    - getRR
    - std::move
    - getPublishCDNSKEY
    linkageType: ''
    returnType: void
    signature: void PacketHandler::emitNSEC(std::unique_ptr<DNSPacket>& r, const DNSName&
      name, const DNSName& next, int mode)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: NSEC3RecordContent::NSEC3RecordContent
      Src: /src/pdns/pdns/packethandler.cc:748,1
    - Dst: empty
      Src: /src/pdns/pdns/packethandler.cc:757,1
    - Dst: qname
      Src: /src/pdns/pdns/packethandler.cc:758,1
    - Dst: NSEC3RecordContent::set
      Src: /src/pdns/pdns/packethandler.cc:759,1
    - Dst: NSEC3RecordContent::set
      Src: /src/pdns/pdns/packethandler.cc:760,1
    - Dst: PacketHandler::isPresigned
      Src: /src/pdns/pdns/packethandler.cc:761,1
    - Dst: getKeys
      Src: /src/pdns/pdns/packethandler.cc:762,1
    - Dst: NSEC3RecordContent::set
      Src: /src/pdns/pdns/packethandler.cc:765,1
    - Dst: getPublishCDNSKEY
      Src: /src/pdns/pdns/packethandler.cc:767,1
    - Dst: string::empty
      Src: /src/pdns/pdns/packethandler.cc:768,1
    - Dst: NSEC3RecordContent::set
      Src: /src/pdns/pdns/packethandler.cc:769,1
    - Dst: getPublishCDS
      Src: /src/pdns/pdns/packethandler.cc:771,1
    - Dst: string::empty
      Src: /src/pdns/pdns/packethandler.cc:772,1
    - Dst: NSEC3RecordContent::set
      Src: /src/pdns/pdns/packethandler.cc:773,1
    - Dst: qtype::getCode
      Src: /src/pdns/pdns/packethandler.cc:779,1
    - Dst: NSEC3RecordContent::set
      Src: /src/pdns/pdns/packethandler.cc:780,1
    - Dst: qtype::getCode
      Src: /src/pdns/pdns/packethandler.cc:782,1
    - Dst: NSEC3RecordContent::set
      Src: /src/pdns/pdns/packethandler.cc:783,1
    - Dst: lookup
      Src: /src/pdns/pdns/packethandler.cc:792,1
    - Dst: QType
      Src: /src/pdns/pdns/packethandler.cc:792,1
    - Dst: get
      Src: /src/pdns/pdns/packethandler.cc:793,1
    - Dst: PacketHandler::isPresigned
      Src: /src/pdns/pdns/packethandler.cc:795,1
    - Dst: PacketHandler::doLuaRecords
      Src: /src/pdns/pdns/packethandler.cc:797,1
    - Dst: NSEC3RecordContent::set
      Src: /src/pdns/pdns/packethandler.cc:801,1
    - Dst: getRR
      Src: /src/pdns/pdns/packethandler.cc:801,1
    - Dst: PacketHandler::isPresigned
      Src: /src/pdns/pdns/packethandler.cc:810,1
    - Dst: NSEC3RecordContent::set
      Src: /src/pdns/pdns/packethandler.cc:811,1
    - Dst: NSEC3RecordContent::set
      Src: /src/pdns/pdns/packethandler.cc:812,1
    - Dst: PacketHandler::isPresigned
      Src: /src/pdns/pdns/packethandler.cc:815,1
    - Dst: arg
      Src: /src/pdns/pdns/packethandler.cc:815,1
    - Dst: NSEC3RecordContent::set
      Src: /src/pdns/pdns/packethandler.cc:820,1
    - Dst: NSEC3RecordContent::numberOfTypesSet
      Src: /src/pdns/pdns/packethandler.cc:825,1
    - Dst: NSEC3RecordContent::isSet
      Src: /src/pdns/pdns/packethandler.cc:826,1
    - Dst: NSEC3RecordContent::set
      Src: /src/pdns/pdns/packethandler.cc:827,1
    - Dst: DNSName
      Src: /src/pdns/pdns/packethandler.cc:830,1
    - Dst: toBase32Hex
      Src: /src/pdns/pdns/packethandler.cc:830,1
    - Dst: qname
      Src: /src/pdns/pdns/packethandler.cc:830,1
    - Dst: getNegativeTTL
      Src: /src/pdns/pdns/packethandler.cc:831,1
    - Dst: DNSZoneRecord::dr::setContent
      Src: /src/pdns/pdns/packethandler.cc:833,1
    - Dst: std::make_shared<NSEC3RecordContent>
      Src: /src/pdns/pdns/packethandler.cc:833,1
    - Dst: std::move
      Src: /src/pdns/pdns/packethandler.cc:833,1
    - Dst: addRecord
      Src: /src/pdns/pdns/packethandler.cc:837,1
    - Dst: std::move
      Src: /src/pdns/pdns/packethandler.cc:837,1
    CyclomaticComplexity: 32
    EdgeCount: 32
    ICount: 65
    argCount: 7
    argNames:
    - ' p'
    - ' r'
    - ' ns3prc'
    - ' name'
    - ' namehash'
    - ' nexthash'
    - mode
    argTypes:
    - DNSPacket
    - std::unique_ptr<DNSPacket>
    - NSEC3PARAMRecordContent
    - DNSName
    - string
    - string
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 838
      start: 746
    functionDepth: 3
    functionLinenumber: 746
    functionLinenumberEnd: 838
    functionName: PacketHandler::emitNSEC3
    functionSourceFile: /src/pdns/pdns/packethandler.cc
    functionUses: 0
    functionsReached:
    - lookup
    - PacketHandler::doLuaRecords
    - getPublishCDS
    - std::make_shared<NSEC3RecordContent>
    - string::empty
    - QType
    - DNSZoneRecord::dr::setContent
    - NSEC3RecordContent::NSEC3RecordContent
    - PacketHandler::isPresigned
    - addRecord
    - toBase32Hex
    - empty
    - getNegativeTTL
    - NSEC3RecordContent::numberOfTypesSet
    - getKeys
    - DNSName
    - get
    - qtype::getCode
    - NSEC3RecordContent::isSet
    - qname
    - arg
    - getRR
    - std::move
    - NSEC3RecordContent::set
    - getPublishCDNSKEY
    linkageType: ''
    returnType: void
    signature: void PacketHandler::emitNSEC3(DNSPacket& p, std::unique_ptr<DNSPacket>&
      r, const NSEC3PARAMRecordContent& ns3prc, const DNSName& name, const string&
      namehash, const string& nexthash, int mode)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: NSEC3PARAMRecordContent::NSEC3PARAMRecordContent
      Src: /src/pdns/pdns/packethandler.cc:851,1
    - Dst: getNSEC3PARAM
      Src: /src/pdns/pdns/packethandler.cc:853,1
    - Dst: PacketHandler::addNSEC3
      Src: /src/pdns/pdns/packethandler.cc:855,1
    - Dst: PacketHandler::addNSEC
      Src: /src/pdns/pdns/packethandler.cc:858,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 5
    argNames:
    - ' p'
    - ' r'
    - ' target'
    - ' wildcard'
    - mode
    argTypes:
    - DNSPacket
    - std::unique_ptr<DNSPacket>
    - DNSName
    - DNSName
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 860
      start: 849
    functionDepth: 1
    functionLinenumber: 849
    functionLinenumberEnd: 860
    functionName: PacketHandler::addNSECX
    functionSourceFile: /src/pdns/pdns/packethandler.cc
    functionUses: 0
    functionsReached:
    - NSEC3PARAMRecordContent::NSEC3PARAMRecordContent
    - PacketHandler::addNSEC
    - PacketHandler::addNSEC3
    - getNSEC3PARAM
    linkageType: ''
    returnType: void
    signature: void PacketHandler::addNSECX(DNSPacket& p, std::unique_ptr<DNSPacket>&
      r, const DNSName& target, const DNSName& wildcard, int mode)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: decrementHash
      Src: /src/pdns/pdns/packethandler.cc:869,1
    - Dst: clear
      Src: /src/pdns/pdns/packethandler.cc:870,1
    - Dst: incrementHash
      Src: /src/pdns/pdns/packethandler.cc:873,1
    - Dst: DNSName
      Src: /src/pdns/pdns/packethandler.cc:876,1
    - Dst: toBase32Hex
      Src: /src/pdns/pdns/packethandler.cc:876,1
    - Dst: DNSName::DNSName
      Src: /src/pdns/pdns/packethandler.cc:877,1
    - Dst: db::getBeforeAndAfterNamesAbsolute
      Src: /src/pdns/pdns/packethandler.cc:880,1
    - Dst: fromBase32Hex
      Src: /src/pdns/pdns/packethandler.cc:881,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/packethandler.cc:881,1
    - Dst: fromBase32Hex
      Src: /src/pdns/pdns/packethandler.cc:882,1
    - Dst: toString
      Src: /src/pdns/pdns/packethandler.cc:882,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 7
    argNames:
    - narrow
    - ' hashed'
    - decrement
    - ' unhashed'
    - ' before'
    - ' after'
    - mode
    argTypes:
    - bool
    - std::string
    - bool
    - DNSName
    - std::string
    - std::string
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 885
      start: 862
    functionDepth: 1
    functionLinenumber: 862
    functionLinenumberEnd: 885
    functionName: PacketHandler::getNSEC3Hashes
    functionSourceFile: /src/pdns/pdns/packethandler.cc
    functionUses: 0
    functionsReached:
    - db::getBeforeAndAfterNamesAbsolute
    - decrementHash
    - toString
    - DNSName::DNSName
    - DNSName
    - incrementHash
    - DNSName::toString
    - toBase32Hex
    - clear
    - fromBase32Hex
    linkageType: ''
    returnType: bool
    signature: bool PacketHandler::getNSEC3Hashes(bool narrow, const std::string&
      hashed, bool decrement, DNSName& unhashed, std::string& before, std::string&
      after, int mode)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: DLOG
      Src: /src/pdns/pdns/packethandler.cc:889,1
    - Dst: SLOG
      Src: /src/pdns/pdns/packethandler.cc:889,1
    - Dst: qname
      Src: /src/pdns/pdns/packethandler.cc:889,1
    - Dst: info
      Src: /src/pdns/pdns/packethandler.cc:890,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/packethandler.cc:890,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/packethandler.cc:890,1
    - Dst: qname
      Src: /src/pdns/pdns/packethandler.cc:890,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/packethandler.cc:890,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/packethandler.cc:890,1
    - Dst: getSOAUncached
      Src: /src/pdns/pdns/packethandler.cc:893,1
    - Dst: DLOG
      Src: /src/pdns/pdns/packethandler.cc:894,1
    - Dst: SLOG
      Src: /src/pdns/pdns/packethandler.cc:894,1
    - Dst: info
      Src: /src/pdns/pdns/packethandler.cc:895,1
    - Dst: db::doesDNSSEC
      Src: /src/pdns/pdns/packethandler.cc:900,1
    - Dst: SLOG
      Src: /src/pdns/pdns/packethandler.cc:906,1
    - Dst: qname
      Src: /src/pdns/pdns/packethandler.cc:906,1
    - Dst: info
      Src: /src/pdns/pdns/packethandler.cc:907,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/packethandler.cc:907,1
    - Dst: qname
      Src: /src/pdns/pdns/packethandler.cc:907,1
    - Dst: DNSName::DNSName
      Src: /src/pdns/pdns/packethandler.cc:913,1
    - Dst: chopOff
      Src: /src/pdns/pdns/packethandler.cc:917,1
    - Dst: hashQNameWithSalt
      Src: /src/pdns/pdns/packethandler.cc:924,1
    - Dst: DLOG
      Src: /src/pdns/pdns/packethandler.cc:925,1
    - Dst: SLOG
      Src: /src/pdns/pdns/packethandler.cc:925,1
    - Dst: toBase32Hex
      Src: /src/pdns/pdns/packethandler.cc:925,1
    - Dst: info
      Src: /src/pdns/pdns/packethandler.cc:926,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/packethandler.cc:926,1
    - Dst: toBase32Hex
      Src: /src/pdns/pdns/packethandler.cc:926,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/packethandler.cc:926,1
    - Dst: PacketHandler::getNSEC3Hashes
      Src: /src/pdns/pdns/packethandler.cc:928,1
    - Dst: DLOG
      Src: /src/pdns/pdns/packethandler.cc:931,1
    - Dst: SLOG
      Src: /src/pdns/pdns/packethandler.cc:931,1
    - Dst: info
      Src: /src/pdns/pdns/packethandler.cc:932,1
    - Dst: chopOff
      Src: /src/pdns/pdns/packethandler.cc:936,1
    - Dst: qname
      Src: /src/pdns/pdns/packethandler.cc:936,1
    - Dst: lookup
      Src: /src/pdns/pdns/packethandler.cc:937,1
    - Dst: QType
      Src: /src/pdns/pdns/packethandler.cc:937,1
    - Dst: get
      Src: /src/pdns/pdns/packethandler.cc:938,1
    - Dst: lookupEnd
      Src: /src/pdns/pdns/packethandler.cc:940,1
    - Dst: hashQNameWithSalt
      Src: /src/pdns/pdns/packethandler.cc:950,1
    - Dst: DLOG
      Src: /src/pdns/pdns/packethandler.cc:951,1
    - Dst: SLOG
      Src: /src/pdns/pdns/packethandler.cc:951,1
    - Dst: toBase32Hex
      Src: /src/pdns/pdns/packethandler.cc:951,1
    - Dst: info
      Src: /src/pdns/pdns/packethandler.cc:952,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/packethandler.cc:952,1
    - Dst: toBase32Hex
      Src: /src/pdns/pdns/packethandler.cc:952,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/packethandler.cc:952,1
    - Dst: PacketHandler::getNSEC3Hashes
      Src: /src/pdns/pdns/packethandler.cc:954,1
    - Dst: empty
      Src: /src/pdns/pdns/packethandler.cc:957,1
    - Dst: DLOG
      Src: /src/pdns/pdns/packethandler.cc:958,1
    - Dst: SLOG
      Src: /src/pdns/pdns/packethandler.cc:958,1
    - Dst: toBase32Hex
      Src: /src/pdns/pdns/packethandler.cc:958,1
    - Dst: toBase32Hex
      Src: /src/pdns/pdns/packethandler.cc:958,1
    - Dst: toBase32Hex
      Src: /src/pdns/pdns/packethandler.cc:958,1
    - Dst: info
      Src: /src/pdns/pdns/packethandler.cc:959,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/packethandler.cc:959,1
    - Dst: toBase32Hex
      Src: /src/pdns/pdns/packethandler.cc:959,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/packethandler.cc:959,1
    - Dst: toBase32Hex
      Src: /src/pdns/pdns/packethandler.cc:959,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/packethandler.cc:959,1
    - Dst: toBase32Hex
      Src: /src/pdns/pdns/packethandler.cc:959,1
    - Dst: PacketHandler::emitNSEC3
      Src: /src/pdns/pdns/packethandler.cc:960,1
    - Dst: DNSName::chopOff
      Src: /src/pdns/pdns/packethandler.cc:970,1
    - Dst: hashQNameWithSalt
      Src: /src/pdns/pdns/packethandler.cc:972,1
    - Dst: DLOG
      Src: /src/pdns/pdns/packethandler.cc:973,1
    - Dst: SLOG
      Src: /src/pdns/pdns/packethandler.cc:973,1
    - Dst: toBase32Hex
      Src: /src/pdns/pdns/packethandler.cc:973,1
    - Dst: info
      Src: /src/pdns/pdns/packethandler.cc:974,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/packethandler.cc:974,1
    - Dst: toBase32Hex
      Src: /src/pdns/pdns/packethandler.cc:974,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/packethandler.cc:974,1
    - Dst: PacketHandler::getNSEC3Hashes
      Src: /src/pdns/pdns/packethandler.cc:976,1
    - Dst: DLOG
      Src: /src/pdns/pdns/packethandler.cc:977,1
    - Dst: SLOG
      Src: /src/pdns/pdns/packethandler.cc:977,1
    - Dst: toBase32Hex
      Src: /src/pdns/pdns/packethandler.cc:977,1
    - Dst: toBase32Hex
      Src: /src/pdns/pdns/packethandler.cc:977,1
    - Dst: toBase32Hex
      Src: /src/pdns/pdns/packethandler.cc:977,1
    - Dst: info
      Src: /src/pdns/pdns/packethandler.cc:978,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/packethandler.cc:978,1
    - Dst: toBase32Hex
      Src: /src/pdns/pdns/packethandler.cc:978,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/packethandler.cc:978,1
    - Dst: toBase32Hex
      Src: /src/pdns/pdns/packethandler.cc:978,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/packethandler.cc:978,1
    - Dst: toBase32Hex
      Src: /src/pdns/pdns/packethandler.cc:978,1
    - Dst: PacketHandler::emitNSEC3
      Src: /src/pdns/pdns/packethandler.cc:979,1
    - Dst: hashQNameWithSalt
      Src: /src/pdns/pdns/packethandler.cc:986,1
    - Dst: DLOG
      Src: /src/pdns/pdns/packethandler.cc:987,1
    - Dst: SLOG
      Src: /src/pdns/pdns/packethandler.cc:987,1
    - Dst: toBase32Hex
      Src: /src/pdns/pdns/packethandler.cc:987,1
    - Dst: info
      Src: /src/pdns/pdns/packethandler.cc:988,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/packethandler.cc:988,1
    - Dst: toBase32Hex
      Src: /src/pdns/pdns/packethandler.cc:988,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/packethandler.cc:988,1
    - Dst: PacketHandler::getNSEC3Hashes
      Src: /src/pdns/pdns/packethandler.cc:990,1
    - Dst: DLOG
      Src: /src/pdns/pdns/packethandler.cc:991,1
    - Dst: SLOG
      Src: /src/pdns/pdns/packethandler.cc:991,1
    - Dst: toBase32Hex
      Src: /src/pdns/pdns/packethandler.cc:991,1
    - Dst: toBase32Hex
      Src: /src/pdns/pdns/packethandler.cc:991,1
    - Dst: toBase32Hex
      Src: /src/pdns/pdns/packethandler.cc:991,1
    - Dst: info
      Src: /src/pdns/pdns/packethandler.cc:992,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/packethandler.cc:992,1
    - Dst: toBase32Hex
      Src: /src/pdns/pdns/packethandler.cc:992,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/packethandler.cc:992,1
    - Dst: toBase32Hex
      Src: /src/pdns/pdns/packethandler.cc:992,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/packethandler.cc:992,1
    - Dst: toBase32Hex
      Src: /src/pdns/pdns/packethandler.cc:992,1
    - Dst: PacketHandler::emitNSEC3
      Src: /src/pdns/pdns/packethandler.cc:993,1
    CyclomaticComplexity: 29
    EdgeCount: 29
    ICount: 65
    argCount: 7
    argNames:
    - ' p'
    - ' r'
    - ' target'
    - ' wildcard'
    - ' ns3rc'
    - narrow
    - mode
    argTypes:
    - DNSPacket
    - std::unique_ptr<DNSPacket>
    - DNSName
    - DNSName
    - NSEC3PARAMRecordContent
    - bool
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 995
      start: 887
    functionDepth: 4
    functionLinenumber: 887
    functionLinenumberEnd: 995
    functionName: PacketHandler::addNSEC3
    functionSourceFile: /src/pdns/pdns/packethandler.cc
    functionUses: 1
    functionsReached:
    - lookup
    - getSOAUncached
    - db::doesDNSSEC
    - hashQNameWithSalt
    - SLOG
    - DNSName::chopOff
    - Logging::Loggable
    - QType
    - lookupEnd
    - DLOG
    - empty
    - chopOff
    - get
    - PacketHandler::emitNSEC3
    - qname
    - info
    - toBase32Hex
    - DNSName::DNSName
    - PacketHandler::getNSEC3Hashes
    linkageType: ''
    returnType: void
    signature: void PacketHandler::addNSEC3(DNSPacket& p, std::unique_ptr<DNSPacket>&
      r, const DNSName& target, const DNSName& wildcard, const NSEC3PARAMRecordContent&
      ns3rc, bool narrow, int mode)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: DLOG
      Src: /src/pdns/pdns/packethandler.cc:999,1
    - Dst: SLOG
      Src: /src/pdns/pdns/packethandler.cc:999,1
    - Dst: qname
      Src: /src/pdns/pdns/packethandler.cc:999,1
    - Dst: info
      Src: /src/pdns/pdns/packethandler.cc:1000,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/packethandler.cc:1000,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/packethandler.cc:1000,1
    - Dst: qname
      Src: /src/pdns/pdns/packethandler.cc:1000,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/packethandler.cc:1000,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/packethandler.cc:1000,1
    - Dst: getSOAUncached
      Src: /src/pdns/pdns/packethandler.cc:1003,1
    - Dst: DLOG
      Src: /src/pdns/pdns/packethandler.cc:1004,1
    - Dst: SLOG
      Src: /src/pdns/pdns/packethandler.cc:1004,1
    - Dst: info
      Src: /src/pdns/pdns/packethandler.cc:1005,1
    - Dst: db::doesDNSSEC
      Src: /src/pdns/pdns/packethandler.cc:1010,1
    - Dst: SLOG
      Src: /src/pdns/pdns/packethandler.cc:1016,1
    - Dst: qname
      Src: /src/pdns/pdns/packethandler.cc:1016,1
    - Dst: info
      Src: /src/pdns/pdns/packethandler.cc:1017,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/packethandler.cc:1017,1
    - Dst: qname
      Src: /src/pdns/pdns/packethandler.cc:1017,1
    - Dst: DNSName::DNSName
      Src: /src/pdns/pdns/packethandler.cc:1021,1
    - Dst: db::getBeforeAndAfterNames
      Src: /src/pdns/pdns/packethandler.cc:1022,1
    - Dst: PacketHandler::emitNSEC
      Src: /src/pdns/pdns/packethandler.cc:1024,1
    - Dst: DNSName::clear
      Src: /src/pdns/pdns/packethandler.cc:1028,1
    - Dst: DNSName::chopOff
      Src: /src/pdns/pdns/packethandler.cc:1031,1
    - Dst: DNSName::prependRawLabel
      Src: /src/pdns/pdns/packethandler.cc:1032,1
    - Dst: db::getBeforeAndAfterNames
      Src: /src/pdns/pdns/packethandler.cc:1034,1
    - Dst: PacketHandler::emitNSEC
      Src: /src/pdns/pdns/packethandler.cc:1035,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 25
    argCount: 4
    argNames:
    - ' r'
    - ' target'
    - ' wildcard'
    - mode
    argTypes:
    - std::unique_ptr<DNSPacket>
    - DNSName
    - DNSName
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1038
      start: 997
    functionDepth: 4
    functionLinenumber: 997
    functionLinenumberEnd: 1038
    functionName: PacketHandler::addNSEC
    functionSourceFile: /src/pdns/pdns/packethandler.cc
    functionUses: 1
    functionsReached:
    - db::getBeforeAndAfterNames
    - SLOG
    - PacketHandler::emitNSEC
    - DNSName::chopOff
    - Logging::Loggable
    - DNSName::DNSName
    - DNSName::prependRawLabel
    - DNSName::clear
    - info
    - getSOAUncached
    - DLOG
    - db::doesDNSSEC
    - qname
    linkageType: ''
    returnType: void
    signature: void PacketHandler::addNSEC(DNSPacket& /* p */, std::unique_ptr<DNSPacket>&
      r, const DNSName& target, const DNSName& wildcard, int mode)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PacketHandler::tryAutoPrimarySynchronous
      Src: /src/pdns/pdns/packethandler.cc:1064,1
    - Dst: getTSIGKeyname
      Src: /src/pdns/pdns/packethandler.cc:1064,1
    - Dst: addTryAutoPrimaryRequest
      Src: /src/pdns/pdns/packethandler.cc:1069,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - ' p'
    argTypes:
    - DNSPacket
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1072
      start: 1060
    functionDepth: 1
    functionLinenumber: 1060
    functionLinenumberEnd: 1072
    functionName: PacketHandler::tryAutoPrimary
    functionSourceFile: /src/pdns/pdns/packethandler.cc
    functionUses: 0
    functionsReached:
    - PacketHandler::tryAutoPrimarySynchronous
    - getTSIGKeyname
    - addTryAutoPrimaryRequest
    linkageType: ''
    returnType: int
    signature: int PacketHandler::tryAutoPrimary(const DNSPacket& p)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: getInnerRemote
      Src: /src/pdns/pdns/packethandler.cc:1076,1
    - Dst: hasEDNSSubnet
      Src: /src/pdns/pdns/packethandler.cc:1077,1
    - Dst: pdns::isAddressTrustedNotificationProxy
      Src: /src/pdns/pdns/packethandler.cc:1077,1
    - Dst: getRealRemote
      Src: /src/pdns/pdns/packethandler.cc:1078,1
    - Dst: getInnerRemote
      Src: /src/pdns/pdns/packethandler.cc:1081,1
    - Dst: ComboAddress::setPort
      Src: /src/pdns/pdns/packethandler.cc:1083,1
    - Dst: Resolver::getSoaSerial
      Src: /src/pdns/pdns/packethandler.cc:1089,1
    - Dst: Resolver::resolve
      Src: /src/pdns/pdns/packethandler.cc:1090,1
    - Dst: SLOG
      Src: /src/pdns/pdns/packethandler.cc:1093,1
    - Dst: error
      Src: /src/pdns/pdns/packethandler.cc:1094,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/packethandler.cc:1094,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/packethandler.cc:1094,1
    - Dst: SLOG
      Src: /src/pdns/pdns/packethandler.cc:1106,1
    - Dst: info
      Src: /src/pdns/pdns/packethandler.cc:1107,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/packethandler.cc:1107,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/packethandler.cc:1107,1
    - Dst: arg
      Src: /src/pdns/pdns/packethandler.cc:1114,1
    - Dst: empty
      Src: /src/pdns/pdns/packethandler.cc:1114,1
    - Dst: SLOG
      Src: /src/pdns/pdns/packethandler.cc:1115,1
    - Dst: info
      Src: /src/pdns/pdns/packethandler.cc:1116,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/packethandler.cc:1116,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/packethandler.cc:1116,1
    - Dst: autoPrimaryBackend
      Src: /src/pdns/pdns/packethandler.cc:1121,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/packethandler.cc:1121,1
    - Dst: info
      Src: /src/pdns/pdns/packethandler.cc:1134,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/packethandler.cc:1134,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/packethandler.cc:1134,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/packethandler.cc:1134,1
    - Dst: std::ostringstream::str
      Src: /src/pdns/pdns/packethandler.cc:1134,1
    - Dst: DNSBackend*::createSecondaryDomain
      Src: /src/pdns/pdns/packethandler.cc:1147,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/packethandler.cc:1147,1
    - Dst: DNSBackend*::getDomainInfo
      Src: /src/pdns/pdns/packethandler.cc:1149,1
    - Dst: SLOG
      Src: /src/pdns/pdns/packethandler.cc:1150,1
    - Dst: info
      Src: /src/pdns/pdns/packethandler.cc:1151,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/packethandler.cc:1151,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/packethandler.cc:1151,1
    - Dst: add
      Src: /src/pdns/pdns/packethandler.cc:1154,1
    - Dst: empty
      Src: /src/pdns/pdns/packethandler.cc:1155,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/packethandler.cc:1157,1
    - Dst: toStringNoDot
      Src: /src/pdns/pdns/packethandler.cc:1157,1
    - Dst: DNSBackend*::setDomainMetadata
      Src: /src/pdns/pdns/packethandler.cc:1158,1
    - Dst: addSecondaryCheckRequest
      Src: /src/pdns/pdns/packethandler.cc:1162,1
    - Dst: getInnerRemote
      Src: /src/pdns/pdns/packethandler.cc:1162,1
    - Dst: SLOG
      Src: /src/pdns/pdns/packethandler.cc:1165,1
    - Dst: error
      Src: /src/pdns/pdns/packethandler.cc:1166,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/packethandler.cc:1166,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/packethandler.cc:1166,1
    - Dst: SLOG
      Src: /src/pdns/pdns/packethandler.cc:1169,1
    - Dst: info
      Src: /src/pdns/pdns/packethandler.cc:1170,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/packethandler.cc:1170,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/packethandler.cc:1170,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 64
    argCount: 2
    argNames:
    - ' p'
    - ' tsigkeyname'
    argTypes:
    - DNSPacket
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1172
      start: 1074
    functionDepth: 1
    functionLinenumber: 1074
    functionLinenumberEnd: 1172
    functionName: PacketHandler::tryAutoPrimarySynchronous
    functionSourceFile: /src/pdns/pdns/packethandler.cc
    functionUses: 1
    functionsReached:
    - add
    - hasEDNSSubnet
    - toStringNoDot
    - error
    - addSecondaryCheckRequest
    - SLOG
    - Resolver::getSoaSerial
    - Logging::Loggable
    - std::ostringstream::str
    - Resolver::resolve
    - DNSBackend*::createSecondaryDomain
    - getInnerRemote
    - empty
    - autoPrimaryBackend
    - vector::push_back
    - DNSBackend*::getDomainInfo
    - arg
    - getRealRemote
    - pdns::isAddressTrustedNotificationProxy
    - info
    - ComboAddress::setPort
    - ComboAddress::toString
    - DNSBackend*::setDomainMetadata
    linkageType: ''
    returnType: int
    signature: int PacketHandler::tryAutoPrimarySynchronous(const DNSPacket& p, const
      DNSName& tsigkeyname)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: SLOG
      Src: /src/pdns/pdns/packethandler.cc:1185,1
    - Dst: getRemoteString
      Src: /src/pdns/pdns/packethandler.cc:1185,1
    - Dst: info
      Src: /src/pdns/pdns/packethandler.cc:1186,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/packethandler.cc:1186,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/packethandler.cc:1186,1
    - Dst: getRemoteString
      Src: /src/pdns/pdns/packethandler.cc:1186,1
    - Dst: arg
      Src: /src/pdns/pdns/packethandler.cc:1188,1
    - Dst: empty
      Src: /src/pdns/pdns/packethandler.cc:1188,1
    - Dst: SLOG
      Src: /src/pdns/pdns/packethandler.cc:1189,1
    - Dst: getRemoteString
      Src: /src/pdns/pdns/packethandler.cc:1189,1
    - Dst: info
      Src: /src/pdns/pdns/packethandler.cc:1190,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/packethandler.cc:1190,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/packethandler.cc:1190,1
    - Dst: getRemoteString
      Src: /src/pdns/pdns/packethandler.cc:1190,1
    - Dst: match
      Src: /src/pdns/pdns/packethandler.cc:1196,1
    - Dst: getInnerRemote
      Src: /src/pdns/pdns/packethandler.cc:1196,1
    - Dst: getTSIGKeyname
      Src: /src/pdns/pdns/packethandler.cc:1197,1
    - Dst: SLOG
      Src: /src/pdns/pdns/packethandler.cc:1198,1
    - Dst: getRemoteString
      Src: /src/pdns/pdns/packethandler.cc:1198,1
    - Dst: getTSIGKeyname
      Src: /src/pdns/pdns/packethandler.cc:1198,1
    - Dst: info
      Src: /src/pdns/pdns/packethandler.cc:1199,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/packethandler.cc:1199,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/packethandler.cc:1199,1
    - Dst: getRemoteString
      Src: /src/pdns/pdns/packethandler.cc:1199,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/packethandler.cc:1199,1
    - Dst: getTSIGKeyname
      Src: /src/pdns/pdns/packethandler.cc:1199,1
    - Dst: SLOG
      Src: /src/pdns/pdns/packethandler.cc:1201,1
    - Dst: getRemoteString
      Src: /src/pdns/pdns/packethandler.cc:1201,1
    - Dst: info
      Src: /src/pdns/pdns/packethandler.cc:1202,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/packethandler.cc:1202,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/packethandler.cc:1202,1
    - Dst: getRemoteString
      Src: /src/pdns/pdns/packethandler.cc:1202,1
    - Dst: arg
      Src: /src/pdns/pdns/packethandler.cc:1207,1
    - Dst: SLOG
      Src: /src/pdns/pdns/packethandler.cc:1209,1
    - Dst: getRemoteString
      Src: /src/pdns/pdns/packethandler.cc:1209,1
    - Dst: info
      Src: /src/pdns/pdns/packethandler.cc:1210,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/packethandler.cc:1210,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/packethandler.cc:1210,1
    - Dst: getRemoteString
      Src: /src/pdns/pdns/packethandler.cc:1210,1
    - Dst: getDomainMetadata
      Src: /src/pdns/pdns/packethandler.cc:1214,1
    - Dst: vector::empty
      Src: /src/pdns/pdns/packethandler.cc:1214,1
    - Dst: getTSIGKeyname
      Src: /src/pdns/pdns/packethandler.cc:1216,1
    - Dst: SLOG
      Src: /src/pdns/pdns/packethandler.cc:1217,1
    - Dst: getRemoteString
      Src: /src/pdns/pdns/packethandler.cc:1217,1
    - Dst: getTSIGKeyname
      Src: /src/pdns/pdns/packethandler.cc:1217,1
    - Dst: info
      Src: /src/pdns/pdns/packethandler.cc:1218,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/packethandler.cc:1218,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/packethandler.cc:1218,1
    - Dst: getRemoteString
      Src: /src/pdns/pdns/packethandler.cc:1218,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/packethandler.cc:1218,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/packethandler.cc:1218,1
    - Dst: getTSIGKeyname
      Src: /src/pdns/pdns/packethandler.cc:1218,1
    - Dst: getDomainInfo
      Src: /src/pdns/pdns/packethandler.cc:1227,1
    - Dst: arg
      Src: /src/pdns/pdns/packethandler.cc:1228,1
    - Dst: SLOG
      Src: /src/pdns/pdns/packethandler.cc:1229,1
    - Dst: getRemoteString
      Src: /src/pdns/pdns/packethandler.cc:1229,1
    - Dst: info
      Src: /src/pdns/pdns/packethandler.cc:1230,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/packethandler.cc:1230,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/packethandler.cc:1230,1
    - Dst: getRemoteString
      Src: /src/pdns/pdns/packethandler.cc:1230,1
    - Dst: PacketHandler::tryAutoPrimary
      Src: /src/pdns/pdns/packethandler.cc:1231,1
    - Dst: SLOG
      Src: /src/pdns/pdns/packethandler.cc:1233,1
    - Dst: getRemoteString
      Src: /src/pdns/pdns/packethandler.cc:1233,1
    - Dst: info
      Src: /src/pdns/pdns/packethandler.cc:1234,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/packethandler.cc:1234,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/packethandler.cc:1234,1
    - Dst: getRemoteString
      Src: /src/pdns/pdns/packethandler.cc:1234,1
    - Dst: pdns::isAddressTrustedNotificationProxy
      Src: /src/pdns/pdns/packethandler.cc:1238,1
    - Dst: getInnerRemote
      Src: /src/pdns/pdns/packethandler.cc:1238,1
    - Dst: DomainInfo::primaries::empty
      Src: /src/pdns/pdns/packethandler.cc:1239,1
    - Dst: SLOG
      Src: /src/pdns/pdns/packethandler.cc:1240,1
    - Dst: getRemoteString
      Src: /src/pdns/pdns/packethandler.cc:1240,1
    - Dst: info
      Src: /src/pdns/pdns/packethandler.cc:1241,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/packethandler.cc:1241,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/packethandler.cc:1241,1
    - Dst: getRemoteString
      Src: /src/pdns/pdns/packethandler.cc:1241,1
    - Dst: SLOG
      Src: /src/pdns/pdns/packethandler.cc:1244,1
    - Dst: getRemoteString
      Src: /src/pdns/pdns/packethandler.cc:1244,1
    - Dst: info
      Src: /src/pdns/pdns/packethandler.cc:1245,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/packethandler.cc:1245,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/packethandler.cc:1245,1
    - Dst: getRemoteString
      Src: /src/pdns/pdns/packethandler.cc:1245,1
    - Dst: arg
      Src: /src/pdns/pdns/packethandler.cc:1247,1
    - Dst: DomainInfo::isPrimaryType
      Src: /src/pdns/pdns/packethandler.cc:1247,1
    - Dst: SLOG
      Src: /src/pdns/pdns/packethandler.cc:1248,1
    - Dst: getRemoteString
      Src: /src/pdns/pdns/packethandler.cc:1248,1
    - Dst: info
      Src: /src/pdns/pdns/packethandler.cc:1249,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/packethandler.cc:1249,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/packethandler.cc:1249,1
    - Dst: getRemoteString
      Src: /src/pdns/pdns/packethandler.cc:1249,1
    - Dst: DomainInfo::isPrimary
      Src: /src/pdns/pdns/packethandler.cc:1252,1
    - Dst: getInnerRemote
      Src: /src/pdns/pdns/packethandler.cc:1252,1
    - Dst: SLOG
      Src: /src/pdns/pdns/packethandler.cc:1253,1
    - Dst: getRemoteString
      Src: /src/pdns/pdns/packethandler.cc:1253,1
    - Dst: info
      Src: /src/pdns/pdns/packethandler.cc:1254,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/packethandler.cc:1254,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/packethandler.cc:1254,1
    - Dst: getRemoteString
      Src: /src/pdns/pdns/packethandler.cc:1254,1
    - Dst: empty
      Src: /src/pdns/pdns/packethandler.cc:1258,1
    - Dst: SLOG
      Src: /src/pdns/pdns/packethandler.cc:1261,1
    - Dst: getRemoteString
      Src: /src/pdns/pdns/packethandler.cc:1261,1
    - Dst: info
      Src: /src/pdns/pdns/packethandler.cc:1262,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/packethandler.cc:1262,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/packethandler.cc:1262,1
    - Dst: getRemoteString
      Src: /src/pdns/pdns/packethandler.cc:1262,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/packethandler.cc:1262,1
    - Dst: notify
      Src: /src/pdns/pdns/packethandler.cc:1263,1
    - Dst: arg
      Src: /src/pdns/pdns/packethandler.cc:1267,1
    - Dst: SLOG
      Src: /src/pdns/pdns/packethandler.cc:1268,1
    - Dst: getRemoteString
      Src: /src/pdns/pdns/packethandler.cc:1268,1
    - Dst: info
      Src: /src/pdns/pdns/packethandler.cc:1269,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/packethandler.cc:1269,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/packethandler.cc:1269,1
    - Dst: getRemoteString
      Src: /src/pdns/pdns/packethandler.cc:1269,1
    - Dst: addSecondaryCheckRequest
      Src: /src/pdns/pdns/packethandler.cc:1271,1
    - Dst: getInnerRemote
      Src: /src/pdns/pdns/packethandler.cc:1271,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 60
    argCount: 1
    argNames:
    - ' p'
    argTypes:
    - DNSPacket
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1274
      start: 1174
    functionDepth: 2
    functionLinenumber: 1174
    functionLinenumberEnd: 1274
    functionName: PacketHandler::processNotify
    functionSourceFile: /src/pdns/pdns/packethandler.cc
    functionUses: 0
    functionsReached:
    - DomainInfo::isPrimaryType
    - addSecondaryCheckRequest
    - getDomainMetadata
    - SLOG
    - Logging::Loggable
    - PacketHandler::tryAutoPrimary
    - notify
    - match
    - getTSIGKeyname
    - getInnerRemote
    - empty
    - vector::empty
    - DomainInfo::primaries::empty
    - getDomainInfo
    - getRemoteString
    - arg
    - pdns::isAddressTrustedNotificationProxy
    - info
    - DomainInfo::isPrimary
    linkageType: ''
    returnType: int
    signature: int PacketHandler::processNotify(const DNSPacket& p)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: has8bitBytes
      Src: /src/pdns/pdns/packethandler.cc:1279,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ' name'
    argTypes:
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1282
      start: 1276
    functionDepth: 0
    functionLinenumber: 1276
    functionLinenumberEnd: 1282
    functionName: validDNSName
    functionSourceFile: /src/pdns/pdns/packethandler.cc
    functionUses: 0
    functionsReached:
    - has8bitBytes
    linkageType: ''
    returnType: bool
    signature: bool validDNSName(const DNSName& name)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: prequery
      Src: /src/pdns/pdns/packethandler.cc:1290,1
    - Dst: getPointer
      Src: /src/pdns/pdns/packethandler.cc:1296,1
    - Dst: PacketHandler::doQuestion
      Src: /src/pdns/pdns/packethandler.cc:1300,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - ' p'
    argTypes:
    - DNSPacket
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1301
      start: 1284
    functionDepth: 1
    functionLinenumber: 1284
    functionLinenumberEnd: 1301
    functionName: PacketHandler::question
    functionSourceFile: /src/pdns/pdns/packethandler.cc
    functionUses: 0
    functionsReached:
    - PacketHandler::doQuestion
    - getPointer
    - prequery
    linkageType: ''
    returnType: std::unique_ptr<DNSPacket>
    signature: std::unique_ptr<DNSPacket> PacketHandler::question(DNSPacket& p)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: makeEditedDNSZRFromSOAData
      Src: /src/pdns/pdns/packethandler.cc:1307,1
    - Dst: getNegativeTTL
      Src: /src/pdns/pdns/packethandler.cc:1308,1
    - Dst: addRecord
      Src: /src/pdns/pdns/packethandler.cc:1309,1
    - Dst: std::move
      Src: /src/pdns/pdns/packethandler.cc:1309,1
    - Dst: PacketHandler::addNSECX
      Src: /src/pdns/pdns/packethandler.cc:1312,1
    - Dst: setRcode
      Src: /src/pdns/pdns/packethandler.cc:1315,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 4
    argNames:
    - ' p'
    - ' r'
    - ' target'
    - ' wildcard'
    argTypes:
    - DNSPacket
    - std::unique_ptr<DNSPacket>
    - DNSName
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1316
      start: 1304
    functionDepth: 3
    functionLinenumber: 1304
    functionLinenumberEnd: 1316
    functionName: PacketHandler::makeNXDomain
    functionSourceFile: /src/pdns/pdns/packethandler.cc
    functionUses: 0
    functionsReached:
    - std::move
    - makeEditedDNSZRFromSOAData
    - addRecord
    - getNegativeTTL
    - setRcode
    - PacketHandler::addNSECX
    linkageType: ''
    returnType: void
    signature: void PacketHandler::makeNXDomain(DNSPacket& p, std::unique_ptr<DNSPacket>&
      r, const DNSName& target, const DNSName& wildcard)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: makeEditedDNSZRFromSOAData
      Src: /src/pdns/pdns/packethandler.cc:1321,1
    - Dst: getNegativeTTL
      Src: /src/pdns/pdns/packethandler.cc:1322,1
    - Dst: addRecord
      Src: /src/pdns/pdns/packethandler.cc:1323,1
    - Dst: std::move
      Src: /src/pdns/pdns/packethandler.cc:1323,1
    - Dst: PacketHandler::addNSECX
      Src: /src/pdns/pdns/packethandler.cc:1326,1
    - Dst: inc
      Src: /src/pdns/pdns/packethandler.cc:1329,1
    - Dst: ringAccount
      Src: /src/pdns/pdns/packethandler.cc:1330,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 5
    argNames:
    - ' p'
    - ' r'
    - ' target'
    - ' wildcard'
    - mode
    argTypes:
    - DNSPacket
    - std::unique_ptr<DNSPacket>
    - DNSName
    - DNSName
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1331
      start: 1318
    functionDepth: 3
    functionLinenumber: 1318
    functionLinenumberEnd: 1331
    functionName: PacketHandler::makeNOError
    functionSourceFile: /src/pdns/pdns/packethandler.cc
    functionUses: 0
    functionsReached:
    - std::move
    - makeEditedDNSZRFromSOAData
    - inc
    - ringAccount
    - addRecord
    - getNegativeTTL
    - PacketHandler::addNSECX
    linkageType: ''
    returnType: void
    signature: void PacketHandler::makeNOError(DNSPacket& p, std::unique_ptr<DNSPacket>&
      r, const DNSName& target, const DNSName& wildcard, int mode)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lookup
      Src: /src/pdns/pdns/packethandler.cc:1337,1
    - Dst: QType
      Src: /src/pdns/pdns/packethandler.cc:1337,1
    - Dst: get
      Src: /src/pdns/pdns/packethandler.cc:1340,1
    - Dst: addRecord
      Src: /src/pdns/pdns/packethandler.cc:1343,1
    - Dst: std::move
      Src: /src/pdns/pdns/packethandler.cc:1343,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 3
    argNames:
    - ' p'
    - ' r'
    - ' dsname'
    argTypes:
    - DNSPacket
    - std::unique_ptr<DNSPacket>
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1346
      start: 1334
    functionDepth: 3
    functionLinenumber: 1334
    functionLinenumberEnd: 1346
    functionName: PacketHandler::addDSforNS
    functionSourceFile: /src/pdns/pdns/packethandler.cc
    functionUses: 0
    functionsReached:
    - std::move
    - lookup
    - QType
    - get
    - addRecord
    linkageType: ''
    returnType: bool
    signature: bool PacketHandler::addDSforNS(DNSPacket& p, std::unique_ptr<DNSPacket>&
      r, const DNSName& dsname)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: PacketHandler::getBestReferralNS
      Src: /src/pdns/pdns/packethandler.cc:1350,1
    - Dst: vector::empty
      Src: /src/pdns/pdns/packethandler.cc:1351,1
    - Dst: vector::begin
      Src: /src/pdns/pdns/packethandler.cc:1354,1
    - Dst: addRecord
      Src: /src/pdns/pdns/packethandler.cc:1357,1
    - Dst: std::move
      Src: /src/pdns/pdns/packethandler.cc:1357,1
    - Dst: setA
      Src: /src/pdns/pdns/packethandler.cc:1360,1
    - Dst: PacketHandler::isSecuredZone
      Src: /src/pdns/pdns/packethandler.cc:1362,1
    - Dst: PacketHandler::addDSforNS
      Src: /src/pdns/pdns/packethandler.cc:1362,1
    - Dst: PacketHandler::addNSECX
      Src: /src/pdns/pdns/packethandler.cc:1363,1
    - Dst: DNSName
      Src: /src/pdns/pdns/packethandler.cc:1363,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 12
    argCount: 4
    argNames:
    - ' p'
    - ' r'
    - target
    - retargeted
    argTypes:
    - DNSPacket
    - std::unique_ptr<DNSPacket>
    - DNSName
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1367
      start: 1348
    functionDepth: 4
    functionLinenumber: 1348
    functionLinenumberEnd: 1367
    functionName: PacketHandler::tryReferral
    functionSourceFile: /src/pdns/pdns/packethandler.cc
    functionUses: 0
    functionsReached:
    - vector::begin
    - std::move
    - setA
    - PacketHandler::getBestReferralNS
    - DNSName
    - PacketHandler::addDSforNS
    - vector::empty
    - PacketHandler::isSecuredZone
    - addRecord
    - PacketHandler::addNSECX
    linkageType: ''
    returnType: bool
    signature: bool PacketHandler::tryReferral(DNSPacket& p, std::unique_ptr<DNSPacket>&
      r, const DNSName &target, bool retargeted)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PacketHandler::addNSECX
      Src: /src/pdns/pdns/packethandler.cc:1371,1
    - Dst: DNSName
      Src: /src/pdns/pdns/packethandler.cc:1371,1
    - Dst: qname
      Src: /src/pdns/pdns/packethandler.cc:1372,1
    - Dst: PacketHandler::isPresigned
      Src: /src/pdns/pdns/packethandler.cc:1373,1
    - Dst: PacketHandler::addDNSKEY
      Src: /src/pdns/pdns/packethandler.cc:1374,1
    - Dst: PacketHandler::addCDNSKEY
      Src: /src/pdns/pdns/packethandler.cc:1375,1
    - Dst: PacketHandler::addCDS
      Src: /src/pdns/pdns/packethandler.cc:1376,1
    - Dst: PacketHandler::addNSEC3PARAM
      Src: /src/pdns/pdns/packethandler.cc:1378,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 3
    argNames:
    - ' p'
    - ' r'
    - target
    argTypes:
    - DNSPacket
    - std::unique_ptr<DNSPacket>
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1380
      start: 1369
    functionDepth: 4
    functionLinenumber: 1369
    functionLinenumberEnd: 1380
    functionName: PacketHandler::completeANYRecords
    functionSourceFile: /src/pdns/pdns/packethandler.cc
    functionUses: 0
    functionsReached:
    - PacketHandler::addCDNSKEY
    - DNSName
    - PacketHandler::addDNSKEY
    - PacketHandler::isPresigned
    - qname
    - PacketHandler::addNSECX
    - PacketHandler::addNSEC3PARAM
    - PacketHandler::addCDS
    linkageType: ''
    returnType: void
    signature: void PacketHandler::completeANYRecords(DNSPacket& p, std::unique_ptr<DNSPacket>&
      r, const DNSName &target)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: DLOG
      Src: /src/pdns/pdns/packethandler.cc:1384,1
    - Dst: SLOG
      Src: /src/pdns/pdns/packethandler.cc:1384,1
    - Dst: info
      Src: /src/pdns/pdns/packethandler.cc:1385,1
    - Dst: hasLabels
      Src: /src/pdns/pdns/packethandler.cc:1386,1
    - Dst: pdns_iequals
      Src: /src/pdns/pdns/packethandler.cc:1386,1
    - Dst: getRawLabel
      Src: /src/pdns/pdns/packethandler.cc:1386,1
    - Dst: isSignalingZone
      Src: /src/pdns/pdns/packethandler.cc:1386,1
    - Dst: PacketHandler::isSecuredZone
      Src: /src/pdns/pdns/packethandler.cc:1391,1
    - Dst: PacketHandler::isPresigned
      Src: /src/pdns/pdns/packethandler.cc:1391,1
    - Dst: SLOG
      Src: /src/pdns/pdns/packethandler.cc:1392,1
    - Dst: getRemoteString
      Src: /src/pdns/pdns/packethandler.cc:1392,1
    - Dst: info
      Src: /src/pdns/pdns/packethandler.cc:1393,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/packethandler.cc:1393,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/packethandler.cc:1393,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/packethandler.cc:1393,1
    - Dst: getRemoteString
      Src: /src/pdns/pdns/packethandler.cc:1393,1
    - Dst: getNSEC3PARAM
      Src: /src/pdns/pdns/packethandler.cc:1397,1
    - Dst: SLOG
      Src: /src/pdns/pdns/packethandler.cc:1398,1
    - Dst: getRemoteString
      Src: /src/pdns/pdns/packethandler.cc:1398,1
    - Dst: info
      Src: /src/pdns/pdns/packethandler.cc:1399,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/packethandler.cc:1399,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/packethandler.cc:1399,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/packethandler.cc:1399,1
    - Dst: getRemoteString
      Src: /src/pdns/pdns/packethandler.cc:1399,1
    - Dst: DNSName::hasLabels
      Src: /src/pdns/pdns/packethandler.cc:1404,1
    - Dst: pdns_iequals
      Src: /src/pdns/pdns/packethandler.cc:1404,1
    - Dst: DNSName::getRawLabel
      Src: /src/pdns/pdns/packethandler.cc:1404,1
    - Dst: PacketHandler::makeNOError
      Src: /src/pdns/pdns/packethandler.cc:1405,1
    - Dst: DNSName
      Src: /src/pdns/pdns/packethandler.cc:1405,1
    - Dst: qtype::getCode
      Src: /src/pdns/pdns/packethandler.cc:1410,1
    - Dst: qtype::getCode
      Src: /src/pdns/pdns/packethandler.cc:1410,1
    - Dst: PacketHandler::makeNOError
      Src: /src/pdns/pdns/packethandler.cc:1412,1
    - Dst: DNSName
      Src: /src/pdns/pdns/packethandler.cc:1412,1
    - Dst: ZoneName
      Src: /src/pdns/pdns/packethandler.cc:1418,1
    - Dst: DNSName::makeRelative
      Src: /src/pdns/pdns/packethandler.cc:1418,1
    - Dst: ZoneName::chopOff
      Src: /src/pdns/pdns/packethandler.cc:1419,1
    - Dst: getAuth
      Src: /src/pdns/pdns/packethandler.cc:1421,1
    - Dst: getRealRemote
      Src: /src/pdns/pdns/packethandler.cc:1421,1
    - Dst: PacketHandler::isPresigned
      Src: /src/pdns/pdns/packethandler.cc:1427,1
    - Dst: qtype::getCode
      Src: /src/pdns/pdns/packethandler.cc:1429,1
    - Dst: getPublishCDS
      Src: /src/pdns/pdns/packethandler.cc:1430,1
    - Dst: std::string::empty
      Src: /src/pdns/pdns/packethandler.cc:1431,1
    - Dst: PacketHandler::addCDS
      Src: /src/pdns/pdns/packethandler.cc:1433,1
    - Dst: qtype::getCode
      Src: /src/pdns/pdns/packethandler.cc:1435,1
    - Dst: getPublishCDNSKEY
      Src: /src/pdns/pdns/packethandler.cc:1436,1
    - Dst: std::string::empty
      Src: /src/pdns/pdns/packethandler.cc:1437,1
    - Dst: PacketHandler::addCDNSKEY
      Src: /src/pdns/pdns/packethandler.cc:1439,1
    - Dst: lookup
      Src: /src/pdns/pdns/packethandler.cc:1444,1
    - Dst: qtype::getCode
      Src: /src/pdns/pdns/packethandler.cc:1444,1
    - Dst: DNSName
      Src: /src/pdns/pdns/packethandler.cc:1444,1
    - Dst: get
      Src: /src/pdns/pdns/packethandler.cc:1445,1
    - Dst: addRecord
      Src: /src/pdns/pdns/packethandler.cc:1447,1
    - Dst: std::move
      Src: /src/pdns/pdns/packethandler.cc:1447,1
    - Dst: PacketHandler::makeNOError
      Src: /src/pdns/pdns/packethandler.cc:1452,1
    - Dst: DNSName
      Src: /src/pdns/pdns/packethandler.cc:1452,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 51
    argCount: 3
    argNames:
    - ' p'
    - ' r'
    - target
    argTypes:
    - DNSPacket
    - std::unique_ptr<DNSPacket>
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1455
      start: 1382
    functionDepth: 4
    functionLinenumber: 1382
    functionLinenumberEnd: 1455
    functionName: PacketHandler::tryAuthSignal
    functionSourceFile: /src/pdns/pdns/packethandler.cc
    functionUses: 0
    functionsReached:
    - lookup
    - PacketHandler::isSecuredZone
    - getPublishCDS
    - getPublishCDNSKEY
    - SLOG
    - Logging::Loggable
    - DNSName::getRawLabel
    - PacketHandler::isPresigned
    - addRecord
    - std::string::empty
    - PacketHandler::makeNOError
    - isSignalingZone
    - DNSName::hasLabels
    - pdns_iequals
    - DNSName
    - get
    - qtype::getCode
    - DNSName::makeRelative
    - hasLabels
    - getNSEC3PARAM
    - getRemoteString
    - getAuth
    - PacketHandler::addCDS
    - getRawLabel
    - std::move
    - getRealRemote
    - info
    - ZoneName::chopOff
    - DLOG
    - ZoneName
    - PacketHandler::addCDNSKEY
    linkageType: ''
    returnType: bool
    signature: bool PacketHandler::tryAuthSignal(DNSPacket& p, std::unique_ptr<DNSPacket>&
      r, DNSName &target)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: DLOG
      Src: /src/pdns/pdns/packethandler.cc:1461,1
    - Dst: SLOG
      Src: /src/pdns/pdns/packethandler.cc:1461,1
    - Dst: info
      Src: /src/pdns/pdns/packethandler.cc:1462,1
    - Dst: PacketHandler::getBestDNAMESynth
      Src: /src/pdns/pdns/packethandler.cc:1465,1
    - Dst: vector::empty
      Src: /src/pdns/pdns/packethandler.cc:1466,1
    - Dst: addRecord
      Src: /src/pdns/pdns/packethandler.cc:1469,1
    - Dst: std::move
      Src: /src/pdns/pdns/packethandler.cc:1469,1
    - Dst: vector::empty
      Src: /src/pdns/pdns/packethandler.cc:1476,1
    - Dst: addRecord
      Src: /src/pdns/pdns/packethandler.cc:1479,1
    - Dst: std::move
      Src: /src/pdns/pdns/packethandler.cc:1479,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 21
    argCount: 3
    argNames:
    - ' p'
    - ' r'
    - target
    argTypes:
    - DNSPacket
    - std::unique_ptr<DNSPacket>
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1485
      start: 1457
    functionDepth: 3
    functionLinenumber: 1457
    functionLinenumberEnd: 1485
    functionName: PacketHandler::tryDNAME
    functionSourceFile: /src/pdns/pdns/packethandler.cc
    functionUses: 0
    functionsReached:
    - std::move
    - SLOG
    - PacketHandler::getBestDNAMESynth
    - info
    - vector::empty
    - addRecord
    - DLOG
    linkageType: ''
    returnType: bool
    signature: bool PacketHandler::tryDNAME(DNSPacket& p, std::unique_ptr<DNSPacket>&
      r, DNSName &target)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: DNSName::DNSName
      Src: /src/pdns/pdns/packethandler.cc:1489,1
    - Dst: PacketHandler::getBestWildcard
      Src: /src/pdns/pdns/packethandler.cc:1492,1
    - Dst: vector::empty
      Src: /src/pdns/pdns/packethandler.cc:1495,1
    - Dst: DLOG
      Src: /src/pdns/pdns/packethandler.cc:1496,1
    - Dst: SLOG
      Src: /src/pdns/pdns/packethandler.cc:1496,1
    - Dst: info
      Src: /src/pdns/pdns/packethandler.cc:1497,1
    - Dst: getRR
      Src: /src/pdns/pdns/packethandler.cc:1508,1
    - Dst: addRecord
      Src: /src/pdns/pdns/packethandler.cc:1512,1
    - Dst: std::move
      Src: /src/pdns/pdns/packethandler.cc:1512,1
    - Dst: PacketHandler::addNSECX
      Src: /src/pdns/pdns/packethandler.cc:1516,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 23
    argCount: 6
    argNames:
    - ' p'
    - ' r'
    - target
    - wildcard
    - ' retargeted'
    - ' nodata'
    argTypes:
    - DNSPacket
    - std::unique_ptr<DNSPacket>
    - DNSName
    - DNSName
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1520
      start: 1486
    functionDepth: 9
    functionLinenumber: 1486
    functionLinenumberEnd: 1520
    functionName: PacketHandler::tryWildcard
    functionSourceFile: /src/pdns/pdns/packethandler.cc
    functionUses: 0
    functionsReached:
    - getRR
    - SLOG
    - std::move
    - info
    - vector::empty
    - PacketHandler::getBestWildcard
    - addRecord
    - DLOG
    - DNSName::DNSName
    - PacketHandler::addNSECX
    linkageType: ''
    returnType: bool
    signature: bool PacketHandler::tryWildcard(DNSPacket& p, std::unique_ptr<DNSPacket>&
      r, DNSName &target, DNSName &wildcard, bool& retargeted, bool& nodata)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: gettimeofday
      Src: /src/pdns/pdns/packethandler.cc:1526,1
    - Dst: setRequest
      Src: /src/pdns/pdns/packethandler.cc:1527,1
    - Dst: getUniqueID
      Src: /src/pdns/pdns/packethandler.cc:1527,1
    - Dst: getRemote
      Src: /src/pdns/pdns/packethandler.cc:1527,1
    - Dst: getLocal
      Src: /src/pdns/pdns/packethandler.cc:1527,1
    - Dst: getString
      Src: /src/pdns/pdns/packethandler.cc:1527,1
    - Dst: hasEDNS
      Src: /src/pdns/pdns/packethandler.cc:1529,1
    - Dst: setEDNSVersion
      Src: /src/pdns/pdns/packethandler.cc:1530,1
    - Dst: getEDNSVersion
      Src: /src/pdns/pdns/packethandler.cc:1530,1
    - Dst: setTime
      Src: /src/pdns/pdns/packethandler.cc:1533,1
    - Dst: setHeaderFlags
      Src: /src/pdns/pdns/packethandler.cc:1534,1
    - Dst: getFlagsFromDNSHeader
      Src: /src/pdns/pdns/packethandler.cc:1534,1
    - Dst: setType
      Src: /src/pdns/pdns/packethandler.cc:1537,1
    - Dst: setType
      Src: /src/pdns/pdns/packethandler.cc:1540,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 2
    argNames:
    - ' msg'
    - ' pkt'
    argTypes:
    - pdns::ProtoZero::Message
    - DNSPacket
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1542
      start: 1522
    functionDepth: 0
    functionLinenumber: 1522
    functionLinenumberEnd: 1542
    functionName: fillProtoZeroMessageFromDNSPacket
    functionSourceFile: /src/pdns/pdns/packethandler.cc
    functionUses: 0
    functionsReached:
    - setType
    - setHeaderFlags
    - getUniqueID
    - hasEDNS
    - setTime
    - getLocal
    - getEDNSVersion
    - setRequest
    - setEDNSVersion
    - getFlagsFromDNSHeader
    - gettimeofday
    - getString
    - getRemote
    linkageType: ''
    returnType: void
    signature: void fillProtoZeroMessageFromDNSPacket(pdns::ProtoZero::Message& msg,
      DNSPacket& pkt)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/packethandler.cc:1546,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1547
      start: 1544
    functionDepth: 0
    functionLinenumber: 1544
    functionLinenumberEnd: 1547
    functionName: mustSendProtoBuf
    functionSourceFile: /src/pdns/pdns/packethandler.cc
    functionUses: 0
    functionsReached:
    - empty
    linkageType: ''
    returnType: bool
    signature: bool mustSendProtoBuf()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: queueData
      Src: /src/pdns/pdns/packethandler.cc:1552,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - ' data'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1554
      start: 1549
    functionDepth: 0
    functionLinenumber: 1549
    functionLinenumberEnd: 1554
    functionName: sendProtobuf
    functionSourceFile: /src/pdns/pdns/packethandler.cc
    functionUses: 0
    functionsReached:
    - queueData
    linkageType: ''
    returnType: void
    signature: void sendProtobuf(const std::string& data)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: SLOG
      Src: /src/pdns/pdns/packethandler.cc:1561,1
    - Dst: getRemoteString
      Src: /src/pdns/pdns/packethandler.cc:1561,1
    - Dst: info
      Src: /src/pdns/pdns/packethandler.cc:1562,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/packethandler.cc:1562,1
    - Dst: getRemoteString
      Src: /src/pdns/pdns/packethandler.cc:1562,1
    - Dst: inc
      Src: /src/pdns/pdns/packethandler.cc:1564,1
    - Dst: ringAccount
      Src: /src/pdns/pdns/packethandler.cc:1565,1
    - Dst: getInnerRemote
      Src: /src/pdns/pdns/packethandler.cc:1565,1
    - Dst: SLOG
      Src: /src/pdns/pdns/packethandler.cc:1571,1
    - Dst: getRemoteString
      Src: /src/pdns/pdns/packethandler.cc:1571,1
    - Dst: info
      Src: /src/pdns/pdns/packethandler.cc:1572,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/packethandler.cc:1572,1
    - Dst: getRemoteString
      Src: /src/pdns/pdns/packethandler.cc:1572,1
    - Dst: inc
      Src: /src/pdns/pdns/packethandler.cc:1574,1
    - Dst: ringAccount
      Src: /src/pdns/pdns/packethandler.cc:1575,1
    - Dst: getInnerRemote
      Src: /src/pdns/pdns/packethandler.cc:1575,1
    - Dst: mustSendProtoBuf
      Src: /src/pdns/pdns/packethandler.cc:1579,1
    - Dst: fillProtoZeroMessageFromDNSPacket
      Src: /src/pdns/pdns/packethandler.cc:1585,1
    - Dst: sendProtobuf
      Src: /src/pdns/pdns/packethandler.cc:1586,1
    - Dst: PacketHandler::doQuestionInner
      Src: /src/pdns/pdns/packethandler.cc:1589,1
    - Dst: fillProtoZeroMessageFromDNSPacket
      Src: /src/pdns/pdns/packethandler.cc:1595,1
    - Dst: sendProtobuf
      Src: /src/pdns/pdns/packethandler.cc:1596,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 26
    argCount: 1
    argNames:
    - ' pkt'
    argTypes:
    - DNSPacket
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1600
      start: 1557
    functionDepth: 1
    functionLinenumber: 1557
    functionLinenumberEnd: 1600
    functionName: PacketHandler::doQuestion
    functionSourceFile: /src/pdns/pdns/packethandler.cc
    functionUses: 1
    functionsReached:
    - SLOG
    - fillProtoZeroMessageFromDNSPacket
    - Logging::Loggable
    - inc
    - ringAccount
    - info
    - sendProtobuf
    - PacketHandler::doQuestionInner
    - mustSendProtoBuf
    - getInnerRemote
    - getRemoteString
    linkageType: ''
    returnType: std::unique_ptr<DNSPacket>
    signature: std::unique_ptr<DNSPacket> PacketHandler::doQuestion(DNSPacket& pkt)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: hasEDNS
      Src: /src/pdns/pdns/packethandler.cc:1606,1
    - Dst: getEDNSVersion
      Src: /src/pdns/pdns/packethandler.cc:1607,1
    - Dst: replyPacket
      Src: /src/pdns/pdns/packethandler.cc:1608,1
    - Dst: auto::setEDNSRcode
      Src: /src/pdns/pdns/packethandler.cc:1610,1
    - Dst: hasEDNSCookie
      Src: /src/pdns/pdns/packethandler.cc:1613,1
    - Dst: hasWellFormedEDNSCookie
      Src: /src/pdns/pdns/packethandler.cc:1614,1
    - Dst: replyPacket
      Src: /src/pdns/pdns/packethandler.cc:1615,1
    - Dst: auto::setRcode
      Src: /src/pdns/pdns/packethandler.cc:1616,1
    - Dst: hasValidEDNSCookie
      Src: /src/pdns/pdns/packethandler.cc:1619,1
    - Dst: replyPacket
      Src: /src/pdns/pdns/packethandler.cc:1620,1
    - Dst: auto::setEDNSRcode
      Src: /src/pdns/pdns/packethandler.cc:1621,1
    - Dst: DNSName::DNSName
      Src: /src/pdns/pdns/packethandler.cc:1628,1
    - Dst: TSIGRecordContent::TSIGRecordContent
      Src: /src/pdns/pdns/packethandler.cc:1630,1
    - Dst: PacketHandler::checkForCorrectTSIG
      Src: /src/pdns/pdns/packethandler.cc:1631,1
    - Dst: replyPacket
      Src: /src/pdns/pdns/packethandler.cc:1632,1
    - Dst: SLOG
      Src: /src/pdns/pdns/packethandler.cc:1634,1
    - Dst: info
      Src: /src/pdns/pdns/packethandler.cc:1635,1
    - Dst: auto::setRcode
      Src: /src/pdns/pdns/packethandler.cc:1639,1
    - Dst: auto::setRcode
      Src: /src/pdns/pdns/packethandler.cc:1642,1
    - Dst: getTSIGHashEnum
      Src: /src/pdns/pdns/packethandler.cc:1646,1
    - Dst: GssContext::getPeerPrincipal
      Src: /src/pdns/pdns/packethandler.cc:1650,1
    - Dst: SLOG
      Src: /src/pdns/pdns/packethandler.cc:1651,1
    - Dst: info
      Src: /src/pdns/pdns/packethandler.cc:1652,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/packethandler.cc:1652,1
    - Dst: setTSIGDetails
      Src: /src/pdns/pdns/packethandler.cc:1656,1
    - Dst: replyPacket
      Src: /src/pdns/pdns/packethandler.cc:1661,1
    - Dst: PacketHandler::tkeyHandler
      Src: /src/pdns/pdns/packethandler.cc:1662,1
    - Dst: validDNSName
      Src: /src/pdns/pdns/packethandler.cc:1670,1
    - Dst: SLOG
      Src: /src/pdns/pdns/packethandler.cc:1672,1
    - Dst: getRemoteString
      Src: /src/pdns/pdns/packethandler.cc:1672,1
    - Dst: info
      Src: /src/pdns/pdns/packethandler.cc:1673,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/packethandler.cc:1673,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/packethandler.cc:1673,1
    - Dst: getRemoteString
      Src: /src/pdns/pdns/packethandler.cc:1673,1
    - Dst: inc
      Src: /src/pdns/pdns/packethandler.cc:1675,1
    - Dst: ringAccount
      Src: /src/pdns/pdns/packethandler.cc:1676,1
    - Dst: getInnerRemote
      Src: /src/pdns/pdns/packethandler.cc:1676,1
    - Dst: inc
      Src: /src/pdns/pdns/packethandler.cc:1677,1
    - Dst: replyPacket
      Src: /src/pdns/pdns/packethandler.cc:1678,1
    - Dst: auto::setRcode
      Src: /src/pdns/pdns/packethandler.cc:1679,1
    - Dst: std::array::at
      Src: /src/pdns/pdns/packethandler.cc:1704,1
    - Dst: SLOG
      Src: /src/pdns/pdns/packethandler.cc:1707,1
    - Dst: error
      Src: /src/pdns/pdns/packethandler.cc:1708,1
    - Dst: replyPacket
      Src: /src/pdns/pdns/packethandler.cc:1709,1
    - Dst: auto::setRcode
      Src: /src/pdns/pdns/packethandler.cc:1710,1
    - Dst: inc
      Src: /src/pdns/pdns/packethandler.cc:1711,1
    - Dst: ringAccount
      Src: /src/pdns/pdns/packethandler.cc:1712,1
    - Dst: SLOG
      Src: /src/pdns/pdns/packethandler.cc:1716,1
    - Dst: error
      Src: /src/pdns/pdns/packethandler.cc:1717,1
    - Dst: SLOG
      Src: /src/pdns/pdns/packethandler.cc:1721,1
    - Dst: qtype::toString
      Src: /src/pdns/pdns/packethandler.cc:1721,1
    - Dst: what
      Src: /src/pdns/pdns/packethandler.cc:1721,1
    - Dst: error
      Src: /src/pdns/pdns/packethandler.cc:1722,1
    - Dst: what
      Src: /src/pdns/pdns/packethandler.cc:1722,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/packethandler.cc:1722,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/packethandler.cc:1722,1
    - Dst: replyPacket
      Src: /src/pdns/pdns/packethandler.cc:1723,1
    - Dst: auto::setRcode
      Src: /src/pdns/pdns/packethandler.cc:1724,1
    - Dst: inc
      Src: /src/pdns/pdns/packethandler.cc:1725,1
    - Dst: ringAccount
      Src: /src/pdns/pdns/packethandler.cc:1726,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 70
    argCount: 1
    argNames:
    - ' pkt'
    argTypes:
    - DNSPacket
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1729
      start: 1602
    functionDepth: 4
    functionLinenumber: 1602
    functionLinenumberEnd: 1729
    functionName: PacketHandler::doQuestionInner
    functionSourceFile: /src/pdns/pdns/packethandler.cc
    functionUses: 1
    functionsReached:
    - ringAccount
    - getEDNSVersion
    - PacketHandler::checkForCorrectTSIG
    - error
    - auto::setRcode
    - TSIGRecordContent::TSIGRecordContent
    - auto::setEDNSRcode
    - SLOG
    - replyPacket
    - PacketHandler::tkeyHandler
    - Logging::Loggable
    - hasWellFormedEDNSCookie
    - getInnerRemote
    - setTSIGDetails
    - getTSIGHashEnum
    - hasEDNSCookie
    - getRemoteString
    - validDNSName
    - qtype::toString
    - what
    - hasValidEDNSCookie
    - inc
    - info
    - hasEDNS
    - DNSName::DNSName
    - std::array::at
    - GssContext::getPeerPrincipal
    linkageType: ''
    returnType: std::unique_ptr<DNSPacket>
    signature: std::unique_ptr<DNSPacket> PacketHandler::doQuestionInner(DNSPacket&
      pkt)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: replyPacket
      Src: /src/pdns/pdns/packethandler.cc:1733,1
    - Dst: SLOG
      Src: /src/pdns/pdns/packethandler.cc:1736,1
    - Dst: qtype::toString
      Src: /src/pdns/pdns/packethandler.cc:1736,1
    - Dst: getRemoteString
      Src: /src/pdns/pdns/packethandler.cc:1736,1
    - Dst: info
      Src: /src/pdns/pdns/packethandler.cc:1737,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/packethandler.cc:1737,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/packethandler.cc:1737,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/packethandler.cc:1737,1
    - Dst: getRemoteString
      Src: /src/pdns/pdns/packethandler.cc:1737,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/packethandler.cc:1737,1
    - Dst: qtype::getCode
      Src: /src/pdns/pdns/packethandler.cc:1740,1
    - Dst: queryState::r::setRcode
      Src: /src/pdns/pdns/packethandler.cc:1741,1
    - Dst: PacketHandler::doChaosRequest
      Src: /src/pdns/pdns/packethandler.cc:1749,1
    - Dst: queryState::r::setRcode
      Src: /src/pdns/pdns/packethandler.cc:1754,1
    - Dst: qtype::getCode
      Src: /src/pdns/pdns/packethandler.cc:1759,1
    - Dst: queryState::r::commitD
      Src: /src/pdns/pdns/packethandler.cc:1761,1
    - Dst: queryState::r::setA
      Src: /src/pdns/pdns/packethandler.cc:1767,1
    - Dst: PacketHandler::opcodeQueryInner2
      Src: /src/pdns/pdns/packethandler.cc:1773,1
    - Dst: SLOG
      Src: /src/pdns/pdns/packethandler.cc:1779,1
    - Dst: info
      Src: /src/pdns/pdns/packethandler.cc:1780,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/packethandler.cc:1780,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/packethandler.cc:1780,1
    - Dst: replyPacket
      Src: /src/pdns/pdns/packethandler.cc:1781,1
    - Dst: queryState::r::setRcode
      Src: /src/pdns/pdns/packethandler.cc:1782,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 36
    argCount: 2
    argNames:
    - ' pkt'
    - state
    argTypes:
    - DNSPacket
    - queryState
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1786
      start: 1731
    functionDepth: 4
    functionLinenumber: 1731
    functionLinenumberEnd: 1786
    functionName: PacketHandler::opcodeQueryInner
    functionSourceFile: /src/pdns/pdns/packethandler.cc
    functionUses: 0
    functionsReached:
    - PacketHandler::doChaosRequest
    - queryState::r::commitD
    - SLOG
    - qtype::toString
    - replyPacket
    - Logging::Loggable
    - info
    - qtype::getCode
    - queryState::r::setA
    - getRemoteString
    - PacketHandler::opcodeQueryInner2
    - queryState::r::setRcode
    linkageType: ''
    returnType: bool
    signature: bool PacketHandler::opcodeQueryInner(DNSPacket& pkt, queryState &state)
  - BBCount: 65
    BranchProfiles: []
    Callsites:
    - Dst: queryState::target::isPartOf
      Src: /src/pdns/pdns/packethandler.cc:1793,1
    - Dst: reset
      Src: /src/pdns/pdns/packethandler.cc:1800,1
    - Dst: reset
      Src: /src/pdns/pdns/packethandler.cc:1801,1
    - Dst: getAuth
      Src: /src/pdns/pdns/packethandler.cc:1803,1
    - Dst: ZoneName
      Src: /src/pdns/pdns/packethandler.cc:1803,1
    - Dst: getRealRemote
      Src: /src/pdns/pdns/packethandler.cc:1803,1
    - Dst: DLOG
      Src: /src/pdns/pdns/packethandler.cc:1804,1
    - Dst: SLOG
      Src: /src/pdns/pdns/packethandler.cc:1804,1
    - Dst: info
      Src: /src/pdns/pdns/packethandler.cc:1805,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/packethandler.cc:1805,1
    - Dst: queryState::r::setA
      Src: /src/pdns/pdns/packethandler.cc:1807,1
    - Dst: queryState::r::setRcode
      Src: /src/pdns/pdns/packethandler.cc:1808,1
    - Dst: DLOG
      Src: /src/pdns/pdns/packethandler.cc:1812,1
    - Dst: SLOG
      Src: /src/pdns/pdns/packethandler.cc:1812,1
    - Dst: qname
      Src: /src/pdns/pdns/packethandler.cc:1812,1
    - Dst: info
      Src: /src/pdns/pdns/packethandler.cc:1813,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/packethandler.cc:1813,1
    - Dst: qname
      Src: /src/pdns/pdns/packethandler.cc:1813,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/packethandler.cc:1813,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/packethandler.cc:1813,1
    - Dst: qname
      Src: /src/pdns/pdns/packethandler.cc:1817,1
    - Dst: queryState::authSet::insert
      Src: /src/pdns/pdns/packethandler.cc:1822,1
    - Dst: PacketHandler::isSecuredZone
      Src: /src/pdns/pdns/packethandler.cc:1823,1
    - Dst: qname
      Src: /src/pdns/pdns/packethandler.cc:1826,1
    - Dst: PacketHandler::isPresigned
      Src: /src/pdns/pdns/packethandler.cc:1827,1
    - Dst: qtype::getCode
      Src: /src/pdns/pdns/packethandler.cc:1828,1
    - Dst: PacketHandler::addDNSKEY
      Src: /src/pdns/pdns/packethandler.cc:1830,1
    - Dst: PacketHandler::addCDNSKEY
      Src: /src/pdns/pdns/packethandler.cc:1835,1
    - Dst: PacketHandler::addCDS
      Src: /src/pdns/pdns/packethandler.cc:1840,1
    - Dst: qtype::getCode
      Src: /src/pdns/pdns/packethandler.cc:1846,1
    - Dst: PacketHandler::addNSEC3PARAM
      Src: /src/pdns/pdns/packethandler.cc:1847,1
    - Dst: qtype::getCode
      Src: /src/pdns/pdns/packethandler.cc:1853,1
    - Dst: qname
      Src: /src/pdns/pdns/packethandler.cc:1853,1
    - Dst: makeEditedDNSZRFromSOAData
      Src: /src/pdns/pdns/packethandler.cc:1854,1
    - Dst: queryState::r::addRecord
      Src: /src/pdns/pdns/packethandler.cc:1855,1
    - Dst: std::move
      Src: /src/pdns/pdns/packethandler.cc:1855,1
    - Dst: qtype::getCode
      Src: /src/pdns/pdns/packethandler.cc:1860,1
    - Dst: getNSEC3PARAM
      Src: /src/pdns/pdns/packethandler.cc:1860,1
    - Dst: PacketHandler::addNSEC
      Src: /src/pdns/pdns/packethandler.cc:1861,1
    - Dst: DNSName
      Src: /src/pdns/pdns/packethandler.cc:1861,1
    - Dst: queryState::r::isEmpty
      Src: /src/pdns/pdns/packethandler.cc:1862,1
    - Dst: qtype::getCode
      Src: /src/pdns/pdns/packethandler.cc:1868,1
    - Dst: SLOG
      Src: /src/pdns/pdns/packethandler.cc:1869,1
    - Dst: getRemoteString
      Src: /src/pdns/pdns/packethandler.cc:1869,1
    - Dst: info
      Src: /src/pdns/pdns/packethandler.cc:1870,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/packethandler.cc:1870,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/packethandler.cc:1870,1
    - Dst: getRemoteString
      Src: /src/pdns/pdns/packethandler.cc:1870,1
    - Dst: queryState::r::setRcode
      Src: /src/pdns/pdns/packethandler.cc:1871,1
    - Dst: DLOG
      Src: /src/pdns/pdns/packethandler.cc:1875,1
    - Dst: SLOG
      Src: /src/pdns/pdns/packethandler.cc:1875,1
    - Dst: info
      Src: /src/pdns/pdns/packethandler.cc:1876,1
    - Dst: qtype::getCode
      Src: /src/pdns/pdns/packethandler.cc:1877,1
    - Dst: PacketHandler::tryReferral
      Src: /src/pdns/pdns/packethandler.cc:1877,1
    - Dst: DLOG
      Src: /src/pdns/pdns/packethandler.cc:1881,1
    - Dst: SLOG
      Src: /src/pdns/pdns/packethandler.cc:1881,1
    - Dst: info
      Src: /src/pdns/pdns/packethandler.cc:1882,1
    - Dst: PacketHandler::doLuaRecords
      Src: /src/pdns/pdns/packethandler.cc:1885,1
    - Dst: lookup
      Src: /src/pdns/pdns/packethandler.cc:1889,1
    - Dst: QType
      Src: /src/pdns/pdns/packethandler.cc:1889,1
    - Dst: DNSName::DNSName
      Src: /src/pdns/pdns/packethandler.cc:1891,1
    - Dst: get
      Src: /src/pdns/pdns/packethandler.cc:1897,1
    - Dst: PacketHandler::isPresigned
      Src: /src/pdns/pdns/packethandler.cc:1899,1
    - Dst: getRR
      Src: /src/pdns/pdns/packethandler.cc:1903,1
    - Dst: qtype::getCode
      Src: /src/pdns/pdns/packethandler.cc:1907,1
    - Dst: qtype::getCode
      Src: /src/pdns/pdns/packethandler.cc:1907,1
    - Dst: luaSynth
      Src: /src/pdns/pdns/packethandler.cc:1910,1
    - Dst: auto::getCode
      Src: /src/pdns/pdns/packethandler.cc:1910,1
    - Dst: qname
      Src: /src/pdns/pdns/packethandler.cc:1910,1
    - Dst: auto::empty
      Src: /src/pdns/pdns/packethandler.cc:1911,1
    - Dst: DNSZoneRecord::dr::setContent
      Src: /src/pdns/pdns/packethandler.cc:1914,1
    - Dst: getRealRemote
      Src: /src/pdns/pdns/packethandler.cc:1915,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/packethandler.cc:1916,1
    - Dst: qtype::getCode
      Src: /src/pdns/pdns/packethandler.cc:1918,1
    - Dst: lookupEnd
      Src: /src/pdns/pdns/packethandler.cc:1927,1
    - Dst: replyPacket
      Src: /src/pdns/pdns/packethandler.cc:1929,1
    - Dst: queryState::r::setRcode
      Src: /src/pdns/pdns/packethandler.cc:1930,1
    - Dst: qtype::getCode
      Src: /src/pdns/pdns/packethandler.cc:1937,1
    - Dst: qtype::getCode
      Src: /src/pdns/pdns/packethandler.cc:1945,1
    - Dst: qtype::getCode
      Src: /src/pdns/pdns/packethandler.cc:1945,1
    - Dst: qtype::getCode
      Src: /src/pdns/pdns/packethandler.cc:1949,1
    - Dst: qname
      Src: /src/pdns/pdns/packethandler.cc:1949,1
    - Dst: qtype::getCode
      Src: /src/pdns/pdns/packethandler.cc:1953,1
    - Dst: qtype::getCode
      Src: /src/pdns/pdns/packethandler.cc:1957,1
    - Dst: qtype::getCode
      Src: /src/pdns/pdns/packethandler.cc:1957,1
    - Dst: qtype::getCode
      Src: /src/pdns/pdns/packethandler.cc:1957,1
    - Dst: PacketHandler::isPresigned
      Src: /src/pdns/pdns/packethandler.cc:1957,1
    - Dst: SLOG
      Src: /src/pdns/pdns/packethandler.cc:1959,1
    - Dst: info
      Src: /src/pdns/pdns/packethandler.cc:1960,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/packethandler.cc:1960,1
    - Dst: DNSName::empty
      Src: /src/pdns/pdns/packethandler.cc:1966,1
    - Dst: getRR
      Src: /src/pdns/pdns/packethandler.cc:1967,1
    - Dst: getRR
      Src: /src/pdns/pdns/packethandler.cc:1971,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/packethandler.cc:1980,1
    - Dst: qname
      Src: /src/pdns/pdns/packethandler.cc:1984,1
    - Dst: makeEditedDNSZRFromSOAData
      Src: /src/pdns/pdns/packethandler.cc:1985,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/packethandler.cc:1986,1
    - Dst: std::move
      Src: /src/pdns/pdns/packethandler.cc:1986,1
    - Dst: DLOG
      Src: /src/pdns/pdns/packethandler.cc:1989,1
    - Dst: SLOG
      Src: /src/pdns/pdns/packethandler.cc:1989,1
    - Dst: info
      Src: /src/pdns/pdns/packethandler.cc:1990,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/packethandler.cc:1990,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/packethandler.cc:1990,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/packethandler.cc:1990,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/packethandler.cc:1990,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/packethandler.cc:1990,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/packethandler.cc:1990,1
    - Dst: qtype::getCode
      Src: /src/pdns/pdns/packethandler.cc:1991,1
    - Dst: DLOG
      Src: /src/pdns/pdns/packethandler.cc:1992,1
    - Dst: SLOG
      Src: /src/pdns/pdns/packethandler.cc:1992,1
    - Dst: info
      Src: /src/pdns/pdns/packethandler.cc:1993,1
    - Dst: PacketHandler::makeNOError
      Src: /src/pdns/pdns/packethandler.cc:1994,1
    - Dst: DNSName
      Src: /src/pdns/pdns/packethandler.cc:1994,1
    - Dst: DNSName::empty
      Src: /src/pdns/pdns/packethandler.cc:1998,1
    - Dst: qtype::getCode
      Src: /src/pdns/pdns/packethandler.cc:1998,1
    - Dst: DLOG
      Src: /src/pdns/pdns/packethandler.cc:1999,1
    - Dst: SLOG
      Src: /src/pdns/pdns/packethandler.cc:1999,1
    - Dst: info
      Src: /src/pdns/pdns/packethandler.cc:2000,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/packethandler.cc:2000,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/packethandler.cc:2000,1
    - Dst: completePacket
      Src: /src/pdns/pdns/packethandler.cc:2001,1
    - Dst: qtype::getCode
      Src: /src/pdns/pdns/packethandler.cc:2007,1
    - Dst: DLOG
      Src: /src/pdns/pdns/packethandler.cc:2008,1
    - Dst: SLOG
      Src: /src/pdns/pdns/packethandler.cc:2008,1
    - Dst: info
      Src: /src/pdns/pdns/packethandler.cc:2009,1
    - Dst: doesDNSSEC
      Src: /src/pdns/pdns/packethandler.cc:2011,1
    - Dst: DLOG
      Src: /src/pdns/pdns/packethandler.cc:2032,1
    - Dst: SLOG
      Src: /src/pdns/pdns/packethandler.cc:2032,1
    - Dst: info
      Src: /src/pdns/pdns/packethandler.cc:2033,1
    - Dst: PacketHandler::tryReferral
      Src: /src/pdns/pdns/packethandler.cc:2034,1
    - Dst: DLOG
      Src: /src/pdns/pdns/packethandler.cc:2035,1
    - Dst: SLOG
      Src: /src/pdns/pdns/packethandler.cc:2035,1
    - Dst: info
      Src: /src/pdns/pdns/packethandler.cc:2036,1
    - Dst: vector::empty
      Src: /src/pdns/pdns/packethandler.cc:2042,1
    - Dst: DLOG
      Src: /src/pdns/pdns/packethandler.cc:2043,1
    - Dst: SLOG
      Src: /src/pdns/pdns/packethandler.cc:2043,1
    - Dst: info
      Src: /src/pdns/pdns/packethandler.cc:2044,1
    - Dst: DNSName::DNSName
      Src: /src/pdns/pdns/packethandler.cc:2047,1
    - Dst: PacketHandler::tryWildcard
      Src: /src/pdns/pdns/packethandler.cc:2048,1
    - Dst: std::move
      Src: /src/pdns/pdns/packethandler.cc:2051,1
    - Dst: PacketHandler::makeNOError
      Src: /src/pdns/pdns/packethandler.cc:2057,1
    - Dst: PacketHandler::tryDNAME
      Src: /src/pdns/pdns/packethandler.cc:2063,1
    - Dst: queryState::r::setRcode
      Src: /src/pdns/pdns/packethandler.cc:2069,1
    - Dst: PacketHandler::tryAuthSignal
      Src: /src/pdns/pdns/packethandler.cc:2072,1
    - Dst: qtype::getCode
      Src: /src/pdns/pdns/packethandler.cc:2076,1
    - Dst: qtype::getCode
      Src: /src/pdns/pdns/packethandler.cc:2076,1
    - Dst: PacketHandler::makeNXDomain
      Src: /src/pdns/pdns/packethandler.cc:2077,1
    - Dst: queryState::r::addRecord
      Src: /src/pdns/pdns/packethandler.cc:2086,1
    - Dst: DNSZoneRecord
      Src: /src/pdns/pdns/packethandler.cc:2086,1
    - Dst: getRR
      Src: /src/pdns/pdns/packethandler.cc:2087,1
    - Dst: PacketHandler::isPresigned
      Src: /src/pdns/pdns/packethandler.cc:2095,1
    - Dst: qtype::getCode
      Src: /src/pdns/pdns/packethandler.cc:2108,1
    - Dst: qtype::getCode
      Src: /src/pdns/pdns/packethandler.cc:2108,1
    - Dst: queryState::r::addRecord
      Src: /src/pdns/pdns/packethandler.cc:2109,1
    - Dst: DNSZoneRecord
      Src: /src/pdns/pdns/packethandler.cc:2109,1
    - Dst: qtype::getCode
      Src: /src/pdns/pdns/packethandler.cc:2115,1
    - Dst: PacketHandler::completeANYRecords
      Src: /src/pdns/pdns/packethandler.cc:2116,1
    - Dst: PacketHandler::makeNOError
      Src: /src/pdns/pdns/packethandler.cc:2120,1
    - Dst: DNSName
      Src: /src/pdns/pdns/packethandler.cc:2120,1
    - Dst: DLOG
      Src: /src/pdns/pdns/packethandler.cc:2126,1
    - Dst: SLOG
      Src: /src/pdns/pdns/packethandler.cc:2126,1
    - Dst: info
      Src: /src/pdns/pdns/packethandler.cc:2127,1
    - Dst: PacketHandler::tryReferral
      Src: /src/pdns/pdns/packethandler.cc:2128,1
    - Dst: vector::back
      Src: /src/pdns/pdns/packethandler.cc:2133,1
    - Dst: d_name::getStorage
      Src: /src/pdns/pdns/packethandler.cc:2133,1
    - Dst: SLOG
      Src: /src/pdns/pdns/packethandler.cc:2134,1
    - Dst: qtype::toString
      Src: /src/pdns/pdns/packethandler.cc:2134,1
    - Dst: qname
      Src: /src/pdns/pdns/packethandler.cc:2134,1
    - Dst: error
      Src: /src/pdns/pdns/packethandler.cc:2135,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/packethandler.cc:2135,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/packethandler.cc:2135,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/packethandler.cc:2135,1
    - Dst: qname
      Src: /src/pdns/pdns/packethandler.cc:2135,1
    - Dst: SLOG
      Src: /src/pdns/pdns/packethandler.cc:2137,1
    - Dst: qtype::toString
      Src: /src/pdns/pdns/packethandler.cc:2137,1
    - Dst: qname
      Src: /src/pdns/pdns/packethandler.cc:2137,1
    - Dst: error
      Src: /src/pdns/pdns/packethandler.cc:2138,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/packethandler.cc:2138,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/packethandler.cc:2138,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/packethandler.cc:2138,1
    - Dst: qname
      Src: /src/pdns/pdns/packethandler.cc:2138,1
    - Dst: DLOG
      Src: /src/pdns/pdns/packethandler.cc:2144,1
    - Dst: SLOG
      Src: /src/pdns/pdns/packethandler.cc:2144,1
    - Dst: info
      Src: /src/pdns/pdns/packethandler.cc:2145,1
    - Dst: PacketHandler::makeNOError
      Src: /src/pdns/pdns/packethandler.cc:2146,1
    - Dst: DNSName
      Src: /src/pdns/pdns/packethandler.cc:2146,1
    CyclomaticComplexity: 125
    EdgeCount: 125
    ICount: 254
    argCount: 3
    argNames:
    - ' pkt'
    - state
    - retargeted
    argTypes:
    - DNSPacket
    - queryState
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2149
      start: 1789
    functionDepth: 10
    functionLinenumber: 1789
    functionLinenumberEnd: 2149
    functionName: PacketHandler::opcodeQueryInner2
    functionSourceFile: /src/pdns/pdns/packethandler.cc
    functionUses: 1
    functionsReached:
    - queryState::authSet::insert
    - PacketHandler::tryAuthSignal
    - lookup
    - doesDNSSEC
    - PacketHandler::tryDNAME
    - queryState::target::isPartOf
    - PacketHandler::addDNSKEY
    - PacketHandler::doLuaRecords
    - PacketHandler::isSecuredZone
    - PacketHandler::makeNXDomain
    - d_name::getStorage
    - queryState::r::setA
    - error
    - auto::getCode
    - reset
    - SLOG
    - replyPacket
    - Logging::Loggable
    - QType
    - lookupEnd
    - DNSZoneRecord::dr::setContent
    - PacketHandler::isPresigned
    - queryState::r::setRcode
    - makeEditedDNSZRFromSOAData
    - PacketHandler::addNSEC3PARAM
    - PacketHandler::completeANYRecords
    - PacketHandler::makeNOError
    - vector::push_back
    - PacketHandler::tryReferral
    - DNSName::DNSName
    - DNSName
    - get
    - qtype::getCode
    - vector::empty
    - PacketHandler::tryWildcard
    - DNSName::empty
    - getNSEC3PARAM
    - getRemoteString
    - qname
    - PacketHandler::addNSEC
    - getAuth
    - PacketHandler::addCDS
    - queryState::r::isEmpty
    - std::move
    - getRR
    - luaSynth
    - completePacket
    - vector::back
    - qtype::toString
    - getRealRemote
    - DNSZoneRecord
    - info
    - DLOG
    - queryState::r::addRecord
    - ZoneName
    - PacketHandler::addCDNSKEY
    - auto::empty
    linkageType: ''
    returnType: bool
    signature: bool PacketHandler::opcodeQueryInner2(DNSPacket& pkt, queryState &state,
      bool retargeted)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: PacketHandler::opcodeQueryInner
      Src: /src/pdns/pdns/packethandler.cc:2156,1
    - Dst: PacketHandler::doAdditionalProcessing
      Src: /src/pdns/pdns/packethandler.cc:2157,1
    - Dst: queryState::r::getRRS
      Src: /src/pdns/pdns/packethandler.cc:2163,1
    - Dst: addRRSigs
      Src: /src/pdns/pdns/packethandler.cc:2170,1
    - Dst: queryState::r::getRRS
      Src: /src/pdns/pdns/packethandler.cc:2170,1
    - Dst: enabled
      Src: /src/pdns/pdns/packethandler.cc:2173,1
    - Dst: couldBeCached
      Src: /src/pdns/pdns/packethandler.cc:2173,1
    - Dst: insert
      Src: /src/pdns/pdns/packethandler.cc:2174,1
    - Dst: queryState::r::getMinTTL
      Src: /src/pdns/pdns/packethandler.cc:2174,1
    - Dst: std::move
      Src: /src/pdns/pdns/packethandler.cc:2178,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 19
    argCount: 2
    argNames:
    - ' pkt'
    - noCache
    argTypes:
    - DNSPacket
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2179
      start: 2151
    functionDepth: 6
    functionLinenumber: 2151
    functionLinenumberEnd: 2179
    functionName: PacketHandler::opcodeQuery
    functionSourceFile: /src/pdns/pdns/packethandler.cc
    functionUses: 0
    functionsReached:
    - std::move
    - couldBeCached
    - addRRSigs
    - PacketHandler::opcodeQueryInner
    - PacketHandler::doAdditionalProcessing
    - insert
    - queryState::r::getMinTTL
    - queryState::r::getRRS
    - enabled
    linkageType: ''
    returnType: std::unique_ptr<DNSPacket>
    signature: std::unique_ptr<DNSPacket> PacketHandler::opcodeQuery(DNSPacket& pkt,
      bool noCache)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: inc
      Src: /src/pdns/pdns/packethandler.cc:2183,1
    - Dst: PacketHandler::processNotify
      Src: /src/pdns/pdns/packethandler.cc:2184,1
    - Dst: replyPacket
      Src: /src/pdns/pdns/packethandler.cc:2186,1
    - Dst: auto::setRcode
      Src: /src/pdns/pdns/packethandler.cc:2187,1
    - Dst: auto::setOpcode
      Src: /src/pdns/pdns/packethandler.cc:2188,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - ' pkt'
    argTypes:
    - DNSPacket
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2192
      start: 2181
    functionDepth: 3
    functionLinenumber: 2181
    functionLinenumberEnd: 2192
    functionName: PacketHandler::opcodeNotify
    functionSourceFile: /src/pdns/pdns/packethandler.cc
    functionUses: 0
    functionsReached:
    - replyPacket
    - auto::setOpcode
    - inc
    - PacketHandler::processNotify
    - auto::setRcode
    linkageType: ''
    returnType: std::unique_ptr<DNSPacket>
    signature: std::unique_ptr<DNSPacket> PacketHandler::opcodeNotify(DNSPacket& pkt,
      bool /* noCache */)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: setZoneVariant
      Src: /src/pdns/pdns/packethandler.cc:2198,1
    - Dst: ZoneName
      Src: /src/pdns/pdns/packethandler.cc:2201,1
    - Dst: inc
      Src: /src/pdns/pdns/packethandler.cc:2204,1
    - Dst: PacketHandler::processUpdate
      Src: /src/pdns/pdns/packethandler.cc:2205,1
    - Dst: inc
      Src: /src/pdns/pdns/packethandler.cc:2207,1
    - Dst: inc
      Src: /src/pdns/pdns/packethandler.cc:2210,1
    - Dst: replyPacket
      Src: /src/pdns/pdns/packethandler.cc:2212,1
    - Dst: auto::setRcode
      Src: /src/pdns/pdns/packethandler.cc:2213,1
    - Dst: auto::setOpcode
      Src: /src/pdns/pdns/packethandler.cc:2214,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 1
    argNames:
    - ' pkt'
    argTypes:
    - DNSPacket
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2216
      start: 2194
    functionDepth: 7
    functionLinenumber: 2194
    functionLinenumberEnd: 2216
    functionName: PacketHandler::opcodeUpdate
    functionSourceFile: /src/pdns/pdns/packethandler.cc
    functionUses: 0
    functionsReached:
    - replyPacket
    - auto::setOpcode
    - inc
    - auto::setRcode
    - setZoneVariant
    - ZoneName
    - PacketHandler::processUpdate
    linkageType: ''
    returnType: std::unique_ptr<DNSPacket>
    signature: std::unique_ptr<DNSPacket> PacketHandler::opcodeUpdate(DNSPacket& pkt,
      bool /* noCache */)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SLOG
      Src: /src/pdns/pdns/packethandler.cc:2221,1
    - Dst: getRemoteString
      Src: /src/pdns/pdns/packethandler.cc:2221,1
    - Dst: info
      Src: /src/pdns/pdns/packethandler.cc:2222,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/packethandler.cc:2222,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/packethandler.cc:2222,1
    - Dst: getRemoteString
      Src: /src/pdns/pdns/packethandler.cc:2222,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/packethandler.cc:2222,1
    - Dst: replyPacket
      Src: /src/pdns/pdns/packethandler.cc:2224,1
    - Dst: auto::setRcode
      Src: /src/pdns/pdns/packethandler.cc:2225,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - ' pkt'
    argTypes:
    - DNSPacket
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2227
      start: 2219
    functionDepth: 1
    functionLinenumber: 2219
    functionLinenumberEnd: 2227
    functionName: PacketHandler::opcodeNotImplemented
    functionSourceFile: /src/pdns/pdns/packethandler.cc
    functionUses: 0
    functionsReached:
    - SLOG
    - replyPacket
    - Logging::Loggable
    - info
    - getRemoteString
    - auto::setRcode
    linkageType: ''
    returnType: std::unique_ptr<DNSPacket>
    signature: std::unique_ptr<DNSPacket> PacketHandler::opcodeNotImplemented(DNSPacket&
      pkt, bool /* noCache */)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: getTSIGDetails
      Src: /src/pdns/pdns/packethandler.cc:2233,1
    - Dst: getTSIGKey
      Src: /src/pdns/pdns/packethandler.cc:2246,1
    - Dst: SLOG
      Src: /src/pdns/pdns/packethandler.cc:2247,1
    - Dst: info
      Src: /src/pdns/pdns/packethandler.cc:2248,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/packethandler.cc:2248,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/packethandler.cc:2248,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/packethandler.cc:2248,1
    - Dst: B64Decode
      Src: /src/pdns/pdns/packethandler.cc:2251,1
    - Dst: validateTSIG
      Src: /src/pdns/pdns/packethandler.cc:2256,1
    - Dst: SLOG
      Src: /src/pdns/pdns/packethandler.cc:2259,1
    - Dst: what
      Src: /src/pdns/pdns/packethandler.cc:2259,1
    - Dst: error
      Src: /src/pdns/pdns/packethandler.cc:2260,1
    - Dst: what
      Src: /src/pdns/pdns/packethandler.cc:2260,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/packethandler.cc:2260,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 23
    argCount: 4
    argNames:
    - ' packet'
    - tsigkeyname
    - secret
    - tsigContent
    argTypes:
    - DNSPacket
    - DNSName*
    - string*
    - TSIGRecordContent*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2263
      start: 2229
    functionDepth: 0
    functionLinenumber: 2229
    functionLinenumberEnd: 2263
    functionName: PacketHandler::checkForCorrectTSIG
    functionSourceFile: /src/pdns/pdns/packethandler.cc
    functionUses: 1
    functionsReached:
    - getTSIGKey
    - getTSIGDetails
    - SLOG
    - Logging::Loggable
    - what
    - B64Decode
    - info
    - validateTSIG
    - error
    linkageType: ''
    returnType: bool
    signature: bool PacketHandler::checkForCorrectTSIG(const DNSPacket& packet, DNSName*
      tsigkeyname, string* secret, TSIGRecordContent* tsigContent)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: isMetadataOne
      Src: /src/pdns/pdns/packethandler.cc:2272,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2277
      start: 2265
    functionDepth: 0
    functionLinenumber: 2265
    functionLinenumberEnd: 2277
    functionName: PacketHandler::doLuaRecords
    functionSourceFile: /src/pdns/pdns/packethandler.cc
    functionUses: 4
    functionsReached:
    - isMetadataOne
    linkageType: ''
    returnType: bool
    signature: bool PacketHandler::doLuaRecords()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PacketHandler::isPresigned
      Src: /src/pdns/pdns/packethandler.cc:2282,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2285
      start: 2279
    functionDepth: 1
    functionLinenumber: 2279
    functionLinenumberEnd: 2285
    functionName: PacketHandler::isPresigned
    functionSourceFile: /src/pdns/pdns/packethandler.cc
    functionUses: 8
    functionsReached:
    - PacketHandler::isPresigned
    linkageType: ''
    returnType: bool
    signature: bool PacketHandler::isPresigned()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PacketHandler::isSecuredZone
      Src: /src/pdns/pdns/packethandler.cc:2290,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2293
      start: 2287
    functionDepth: 1
    functionLinenumber: 2287
    functionLinenumberEnd: 2293
    functionName: PacketHandler::isSecuredZone
    functionSourceFile: /src/pdns/pdns/packethandler.cc
    functionUses: 4
    functionsReached:
    - PacketHandler::isSecuredZone
    linkageType: ''
    returnType: bool
    signature: bool PacketHandler::isSecuredZone()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 32
      start: 30
    functionDepth: 0
    functionLinenumber: 30
    functionLinenumberEnd: 32
    functionName: getCURLPtr
    functionSourceFile: /src/pdns/pdns/minicurl.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: getCURLPtr(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 35
      start: 33
    functionDepth: 0
    functionLinenumber: 33
    functionLinenumberEnd: 35
    functionName: getCURLPtr
    functionSourceFile: /src/pdns/pdns/minicurl.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: getCURLPtr(x)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: std::atomic_flag::test_and_set
      Src: /src/pdns/pdns/minicurl.cc:41,1
    - Dst: curl_global_init
      Src: /src/pdns/pdns/minicurl.cc:44,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/minicurl.cc:46,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 37
    functionDepth: 0
    functionLinenumber: 37
    functionLinenumberEnd: 48
    functionName: MiniCurl::init
    functionSourceFile: /src/pdns/pdns/minicurl.cc
    functionUses: 1
    functionsReached:
    - curl_global_init
    - std::atomic_flag::test_and_set
    - std::runtime_error
    linkageType: ''
    returnType: void
    signature: void MiniCurl::init()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::unique_ptr<CURL, decltype(&curl_easy_cleanup)>
      Src: /src/pdns/pdns/minicurl.cc:53,1
    - Dst: curl_easy_init
      Src: /src/pdns/pdns/minicurl.cc:53,1
    - Dst: curl_easy_init
      Src: /src/pdns/pdns/minicurl.cc:55,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/minicurl.cc:58,1
    - Dst: curl_easy_setopt
      Src: /src/pdns/pdns/minicurl.cc:60,1
    - Dst: getCURLPtr
      Src: /src/pdns/pdns/minicurl.cc:60,1
    - Dst: c_str
      Src: /src/pdns/pdns/minicurl.cc:60,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - ' useragent'
    - failonerror
    argTypes:
    - string
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 50
    functionDepth: 0
    functionLinenumber: 50
    functionLinenumberEnd: 61
    functionName: MiniCurl::MiniCurl
    functionSourceFile: /src/pdns/pdns/minicurl.cc
    functionUses: 1
    functionsReached:
    - std::unique_ptr<CURL, decltype(&curl_easy_cleanup)>
    - getCURLPtr
    - curl_easy_setopt
    - std::runtime_error
    - curl_easy_init
    - c_str
    linkageType: ''
    returnType: void
    signature: void MiniCurl::MiniCurl(const string& useragent, bool failonerror)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MiniCurl::clearHeaders
      Src: /src/pdns/pdns/minicurl.cc:65,1
    - Dst: MiniCurl::clearHostsList
      Src: /src/pdns/pdns/minicurl.cc:66,1
    - Dst: curl_easy_cleanup
      Src: /src/pdns/pdns/minicurl.cc:68,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 63
    functionDepth: 0
    functionLinenumber: 63
    functionLinenumberEnd: 70
    functionName: MiniCurl::~MiniCurl()
    functionSourceFile: /src/pdns/pdns/minicurl.cc
    functionUses: 0
    functionsReached:
    - curl_easy_cleanup
    - MiniCurl::clearHostsList
    - MiniCurl::clearHeaders
    linkageType: ''
    returnType: void
    signature: void MiniCurl::~MiniCurl()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<MiniCurl*>
      Src: /src/pdns/pdns/minicurl.cc:75,1
    - Dst: MiniCurl*::d_data::append
      Src: /src/pdns/pdns/minicurl.cc:76,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 4
    argNames:
    - ptr
    - size
    - nmemb
    - userdata
    argTypes:
    - char*
    - size_t
    - size_t
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 72
    functionDepth: 0
    functionLinenumber: 72
    functionLinenumberEnd: 80
    functionName: MiniCurl::write_callback
    functionSourceFile: /src/pdns/pdns/minicurl.cc
    functionUses: 0
    functionsReached:
    - MiniCurl*::d_data::append
    - static_cast<MiniCurl*>
    linkageType: ''
    returnType: size_t
    signature: size_t MiniCurl::write_callback(char *ptr, size_t size, size_t nmemb,
      void *userdata)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<MiniCurl*>
      Src: /src/pdns/pdns/minicurl.cc:86,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/minicurl.cc:87,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/minicurl.cc:88,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 2
    argNames:
    - clientp
    - dlnow
    argTypes:
    - void*
    - curl_off_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 83
    functionDepth: 0
    functionLinenumber: 83
    functionLinenumberEnd: 92
    functionName: MiniCurl::progress_callback
    functionSourceFile: /src/pdns/pdns/minicurl.cc
    functionUses: 0
    functionsReached:
    - static_cast<size_t>
    - static_cast<MiniCurl*>
    linkageType: ''
    returnType: size_t
    signature: size_t MiniCurl::progress_callback(void *clientp, curl_off_t /* dltotal
      */, curl_off_t dlnow, curl_off_t /* ultotal */, curl_off_t /* ulnow */)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<MiniCurl*>
      Src: /src/pdns/pdns/minicurl.cc:97,1
    - Dst: static_cast<double>
      Src: /src/pdns/pdns/minicurl.cc:98,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/minicurl.cc:99,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 5
    argNames:
    - clientp
    - dltotal
    - dlnow
    - ultotal
    - ulnow
    argTypes:
    - void*
    - double
    - double
    - double
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 94
    functionDepth: 0
    functionLinenumber: 94
    functionLinenumberEnd: 103
    functionName: MiniCurl::progress_callback
    functionSourceFile: /src/pdns/pdns/minicurl.cc
    functionUses: 0
    functionsReached:
    - static_cast<size_t>
    - static_cast<MiniCurl*>
    - static_cast<double>
    linkageType: ''
    returnType: size_t
    signature: size_t MiniCurl::progress_callback(void *clientp, double dltotal, double
      dlnow, double ultotal, double ulnow)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: find
      Src: /src/pdns/pdns/minicurl.cc:108,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/minicurl.cc:110,1
    - Dst: find
      Src: /src/pdns/pdns/minicurl.cc:112,1
    - Dst: substr
      Src: /src/pdns/pdns/minicurl.cc:114,1
    - Dst: substr
      Src: /src/pdns/pdns/minicurl.cc:116,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 1
    argNames:
    - ' url'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 106
    functionDepth: 0
    functionLinenumber: 106
    functionLinenumberEnd: 117
    functionName: extractHostFromURL
    functionSourceFile: /src/pdns/pdns/minicurl.cc
    functionUses: 0
    functionsReached:
    - substr
    - runtime_error
    - find
    linkageType: ''
    returnType: string
    signature: string extractHostFromURL(const std::string& url)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: curl_easy_reset
      Src: /src/pdns/pdns/minicurl.cc:122,1
    - Dst: getCURLPtr
      Src: /src/pdns/pdns/minicurl.cc:122,1
    - Dst: MiniCurl::clearHostsList
      Src: /src/pdns/pdns/minicurl.cc:128,1
    - Dst: extractHostFromURL
      Src: /src/pdns/pdns/minicurl.cc:134,1
    - Dst: string::find
      Src: /src/pdns/pdns/minicurl.cc:136,1
    - Dst: pdns::checked_stoi<uint16_t>
      Src: /src/pdns/pdns/minicurl.cc:139,1
    - Dst: string::substr
      Src: /src/pdns/pdns/minicurl.cc:139,1
    - Dst: string::substr
      Src: /src/pdns/pdns/minicurl.cc:141,1
    - Dst: sqlstr
      Src: /src/pdns/pdns/minicurl.cc:145,1
    - Dst: boost::format
      Src: /src/pdns/pdns/minicurl.cc:145,1
    - Dst: ComboAddress*::toString
      Src: /src/pdns/pdns/minicurl.cc:145,1
    - Dst: curl_slist_append
      Src: /src/pdns/pdns/minicurl.cc:146,1
    - Dst: string::c_str
      Src: /src/pdns/pdns/minicurl.cc:146,1
    - Dst: std::unique_ptr<struct curl_slist, decltype(&curl_slist_free_all)>
      Src: /src/pdns/pdns/minicurl.cc:150,1
    - Dst: curl_easy_setopt
      Src: /src/pdns/pdns/minicurl.cc:155,1
    - Dst: getCURLPtr
      Src: /src/pdns/pdns/minicurl.cc:155,1
    - Dst: getCURLPtr
      Src: /src/pdns/pdns/minicurl.cc:155,1
    - Dst: curl_easy_setopt
      Src: /src/pdns/pdns/minicurl.cc:158,1
    - Dst: getCURLPtr
      Src: /src/pdns/pdns/minicurl.cc:158,1
    - Dst: ComboAddress*::toString
      Src: /src/pdns/pdns/minicurl.cc:158,1
    - Dst: curl_easy_setopt
      Src: /src/pdns/pdns/minicurl.cc:160,1
    - Dst: getCURLPtr
      Src: /src/pdns/pdns/minicurl.cc:160,1
    - Dst: curl_easy_setopt
      Src: /src/pdns/pdns/minicurl.cc:164,1
    - Dst: getCURLPtr
      Src: /src/pdns/pdns/minicurl.cc:164,1
    - Dst: curl_easy_setopt
      Src: /src/pdns/pdns/minicurl.cc:166,1
    - Dst: getCURLPtr
      Src: /src/pdns/pdns/minicurl.cc:166,1
    - Dst: curl_easy_setopt
      Src: /src/pdns/pdns/minicurl.cc:169,1
    - Dst: getCURLPtr
      Src: /src/pdns/pdns/minicurl.cc:169,1
    - Dst: curl_easy_setopt
      Src: /src/pdns/pdns/minicurl.cc:170,1
    - Dst: getCURLPtr
      Src: /src/pdns/pdns/minicurl.cc:170,1
    - Dst: curl_easy_setopt
      Src: /src/pdns/pdns/minicurl.cc:171,1
    - Dst: getCURLPtr
      Src: /src/pdns/pdns/minicurl.cc:171,1
    - Dst: curl_easy_setopt
      Src: /src/pdns/pdns/minicurl.cc:172,1
    - Dst: getCURLPtr
      Src: /src/pdns/pdns/minicurl.cc:172,1
    - Dst: c_str
      Src: /src/pdns/pdns/minicurl.cc:172,1
    - Dst: curl_easy_setopt
      Src: /src/pdns/pdns/minicurl.cc:173,1
    - Dst: getCURLPtr
      Src: /src/pdns/pdns/minicurl.cc:173,1
    - Dst: curl_easy_setopt
      Src: /src/pdns/pdns/minicurl.cc:174,1
    - Dst: getCURLPtr
      Src: /src/pdns/pdns/minicurl.cc:174,1
    - Dst: curl_easy_setopt
      Src: /src/pdns/pdns/minicurl.cc:179,1
    - Dst: getCURLPtr
      Src: /src/pdns/pdns/minicurl.cc:179,1
    - Dst: curl_easy_setopt
      Src: /src/pdns/pdns/minicurl.cc:181,1
    - Dst: getCURLPtr
      Src: /src/pdns/pdns/minicurl.cc:181,1
    - Dst: curl_easy_setopt
      Src: /src/pdns/pdns/minicurl.cc:182,1
    - Dst: getCURLPtr
      Src: /src/pdns/pdns/minicurl.cc:182,1
    - Dst: curl_easy_setopt
      Src: /src/pdns/pdns/minicurl.cc:184,1
    - Dst: getCURLPtr
      Src: /src/pdns/pdns/minicurl.cc:184,1
    - Dst: curl_easy_setopt
      Src: /src/pdns/pdns/minicurl.cc:185,1
    - Dst: getCURLPtr
      Src: /src/pdns/pdns/minicurl.cc:185,1
    - Dst: curl_easy_setopt
      Src: /src/pdns/pdns/minicurl.cc:189,1
    - Dst: getCURLPtr
      Src: /src/pdns/pdns/minicurl.cc:189,1
    - Dst: static_cast<long>
      Src: /src/pdns/pdns/minicurl.cc:189,1
    - Dst: CURL_AT_LEAST_VERSION
      Src: /src/pdns/pdns/minicurl.cc:191,1
    - Dst: curl_easy_setopt
      Src: /src/pdns/pdns/minicurl.cc:192,1
    - Dst: getCURLPtr
      Src: /src/pdns/pdns/minicurl.cc:192,1
    - Dst: MiniCurl::clearHeaders
      Src: /src/pdns/pdns/minicurl.cc:195,1
    - Dst: clear
      Src: /src/pdns/pdns/minicurl.cc:196,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 42
    argCount: 7
    argNames:
    - ' str'
    - rem
    - src
    - timeout
    - byteslimit
    - fastopen
    - verify
    argTypes:
    - std::string
    - ComboAddress*
    - ComboAddress*
    - int
    - size_t
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 197
      start: 119
    functionDepth: 1
    functionLinenumber: 119
    functionLinenumberEnd: 197
    functionName: MiniCurl::setupURL
    functionSourceFile: /src/pdns/pdns/minicurl.cc
    functionUses: 0
    functionsReached:
    - getCURLPtr
    - CURL_AT_LEAST_VERSION
    - string::substr
    - MiniCurl::clearHostsList
    - curl_easy_setopt
    - curl_slist_append
    - extractHostFromURL
    - string::find
    - c_str
    - clear
    - string::c_str
    - MiniCurl::clearHeaders
    - pdns::checked_stoi<uint16_t>
    - std::unique_ptr<struct curl_slist, decltype(&curl_slist_free_all)>
    - curl_easy_reset
    - static_cast<long>
    - sqlstr
    - boost::format
    - ComboAddress*::toString
    linkageType: ''
    returnType: void
    signature: void MiniCurl::setupURL(const std::string& str, const ComboAddress*
      rem, const ComboAddress* src, int timeout, size_t byteslimit, [[maybe_unused]]
      bool fastopen, bool verify)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: MiniCurl::setupURL
      Src: /src/pdns/pdns/minicurl.cc:201,1
    - Dst: MiniCurl::setHeaders
      Src: /src/pdns/pdns/minicurl.cc:203,1
    - Dst: curl_easy_perform
      Src: /src/pdns/pdns/minicurl.cc:205,1
    - Dst: getCURLPtr
      Src: /src/pdns/pdns/minicurl.cc:205,1
    - Dst: curl_easy_getinfo
      Src: /src/pdns/pdns/minicurl.cc:207,1
    - Dst: getCURLPtr
      Src: /src/pdns/pdns/minicurl.cc:207,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/minicurl.cc:210,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/minicurl.cc:210,1
    - Dst: string
      Src: /src/pdns/pdns/minicurl.cc:210,1
    - Dst: curl_easy_strerror
      Src: /src/pdns/pdns/minicurl.cc:210,1
    - Dst: clear
      Src: /src/pdns/pdns/minicurl.cc:213,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 9
    argNames:
    - ' str'
    - rem
    - src
    - timeout
    - headers
    - fastopen
    - verify
    - byteslimit
    - http_status
    argTypes:
    - std::string
    - ComboAddress*
    - ComboAddress*
    - int
    - MiniCurlHeaders*
    - bool
    - bool
    - size_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 215
      start: 199
    functionDepth: 1
    functionLinenumber: 199
    functionLinenumberEnd: 215
    functionName: MiniCurl::getURL
    functionSourceFile: /src/pdns/pdns/minicurl.cc
    functionUses: 1
    functionsReached:
    - getCURLPtr
    - std::to_string
    - MiniCurl::setupURL
    - std::runtime_error
    - string
    - curl_easy_getinfo
    - curl_easy_perform
    - clear
    - MiniCurl::setHeaders
    - curl_easy_strerror
    linkageType: ''
    returnType: std::string
    signature: std::string MiniCurl::getURL(const std::string& str, const ComboAddress*
      rem, const ComboAddress* src, int timeout, const MiniCurlHeaders* headers, [[maybe_unused]]
      bool fastopen, bool verify, size_t byteslimit, int http_status)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: MiniCurl::setupURL
      Src: /src/pdns/pdns/minicurl.cc:219,1
    - Dst: MiniCurl::setHeaders
      Src: /src/pdns/pdns/minicurl.cc:220,1
    - Dst: curl_easy_setopt
      Src: /src/pdns/pdns/minicurl.cc:221,1
    - Dst: getCURLPtr
      Src: /src/pdns/pdns/minicurl.cc:221,1
    - Dst: size
      Src: /src/pdns/pdns/minicurl.cc:221,1
    - Dst: curl_easy_setopt
      Src: /src/pdns/pdns/minicurl.cc:222,1
    - Dst: getCURLPtr
      Src: /src/pdns/pdns/minicurl.cc:222,1
    - Dst: c_str
      Src: /src/pdns/pdns/minicurl.cc:222,1
    - Dst: curl_easy_perform
      Src: /src/pdns/pdns/minicurl.cc:224,1
    - Dst: getCURLPtr
      Src: /src/pdns/pdns/minicurl.cc:224,1
    - Dst: curl_easy_getinfo
      Src: /src/pdns/pdns/minicurl.cc:227,1
    - Dst: getCURLPtr
      Src: /src/pdns/pdns/minicurl.cc:227,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/minicurl.cc:230,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/minicurl.cc:230,1
    - Dst: string
      Src: /src/pdns/pdns/minicurl.cc:230,1
    - Dst: curl_easy_strerror
      Src: /src/pdns/pdns/minicurl.cc:230,1
    - Dst: clear
      Src: /src/pdns/pdns/minicurl.cc:234,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 6
    argNames:
    - ' str'
    - ' postdata'
    - ' headers'
    - timeout
    - fastopen
    - verify
    argTypes:
    - std::string
    - std::string
    - MiniCurlHeaders
    - int
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 236
      start: 217
    functionDepth: 1
    functionLinenumber: 217
    functionLinenumberEnd: 236
    functionName: MiniCurl::postURL
    functionSourceFile: /src/pdns/pdns/minicurl.cc
    functionUses: 1
    functionsReached:
    - getCURLPtr
    - curl_easy_setopt
    - std::to_string
    - MiniCurl::setupURL
    - std::runtime_error
    - string
    - size
    - curl_easy_getinfo
    - curl_easy_perform
    - clear
    - c_str
    - MiniCurl::setHeaders
    - curl_easy_strerror
    linkageType: ''
    returnType: std::string
    signature: std::string MiniCurl::postURL(const std::string& str, const std::string&
      postdata, MiniCurlHeaders& headers, int timeout, bool fastopen, bool verify)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: curl_easy_setopt
      Src: /src/pdns/pdns/minicurl.cc:241,1
    - Dst: getCURLPtr
      Src: /src/pdns/pdns/minicurl.cc:241,1
    - Dst: reset
      Src: /src/pdns/pdns/minicurl.cc:243,1
    - Dst: curl_slist_free_all
      Src: /src/pdns/pdns/minicurl.cc:245,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 249
      start: 238
    functionDepth: 0
    functionLinenumber: 238
    functionLinenumberEnd: 249
    functionName: MiniCurl::clearHeaders
    functionSourceFile: /src/pdns/pdns/minicurl.cc
    functionUses: 2
    functionsReached:
    - curl_slist_free_all
    - getCURLPtr
    - reset
    - curl_easy_setopt
    linkageType: ''
    returnType: void
    signature: void MiniCurl::clearHeaders()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: curl_easy_setopt
      Src: /src/pdns/pdns/minicurl.cc:254,1
    - Dst: getCURLPtr
      Src: /src/pdns/pdns/minicurl.cc:254,1
    - Dst: reset
      Src: /src/pdns/pdns/minicurl.cc:256,1
    - Dst: curl_slist_free_all
      Src: /src/pdns/pdns/minicurl.cc:258,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 262
      start: 251
    functionDepth: 0
    functionLinenumber: 251
    functionLinenumberEnd: 262
    functionName: MiniCurl::clearHostsList
    functionSourceFile: /src/pdns/pdns/minicurl.cc
    functionUses: 2
    functionsReached:
    - curl_slist_free_all
    - getCURLPtr
    - reset
    - curl_easy_setopt
    linkageType: ''
    returnType: void
    signature: void MiniCurl::clearHostsList()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: release
      Src: /src/pdns/pdns/minicurl.cc:273,1
    - Dst: std::unique_ptr<struct curl_slist, decltype(&curl_slist_free_all)>
      Src: /src/pdns/pdns/minicurl.cc:275,1
    - Dst: curl_slist_append
      Src: /src/pdns/pdns/minicurl.cc:275,1
    - Dst: std::stringstream::str
      Src: /src/pdns/pdns/minicurl.cc:275,1
    - Dst: curl_slist_append
      Src: /src/pdns/pdns/minicurl.cc:277,1
    - Dst: std::stringstream::str
      Src: /src/pdns/pdns/minicurl.cc:277,1
    - Dst: curl_easy_setopt
      Src: /src/pdns/pdns/minicurl.cc:280,1
    - Dst: getCURLPtr
      Src: /src/pdns/pdns/minicurl.cc:280,1
    - Dst: getCURLPtr
      Src: /src/pdns/pdns/minicurl.cc:280,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - ' headers'
    argTypes:
    - MiniCurlHeaders
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 282
      start: 264
    functionDepth: 0
    functionLinenumber: 264
    functionLinenumberEnd: 282
    functionName: MiniCurl::setHeaders
    functionSourceFile: /src/pdns/pdns/minicurl.cc
    functionUses: 2
    functionsReached:
    - getCURLPtr
    - curl_easy_setopt
    - curl_slist_append
    - release
    - std::stringstream::str
    - std::unique_ptr<struct curl_slist, decltype(&curl_slist_free_all)>
    linkageType: ''
    returnType: void
    signature: void MiniCurl::setHeaders(const MiniCurlHeaders& headers)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: algo::empty
      Src: /src/pdns/pdns/ixfrutils.cc:38,1
    - Dst: TSIGRecordContent::TSIGRecordContent
      Src: /src/pdns/pdns/ixfrutils.cc:39,1
    - Dst: time
      Src: /src/pdns/pdns/ixfrutils.cc:41,1
    - Dst: ntohs
      Src: /src/pdns/pdns/ixfrutils.cc:43,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/ixfrutils.cc:43,1
    - Dst: addTSIG
      Src: /src/pdns/pdns/ixfrutils.cc:45,1
    - Dst: Socket::connect
      Src: /src/pdns/pdns/ixfrutils.cc:49,1
    - Dst: vector::size
      Src: /src/pdns/pdns/ixfrutils.cc:50,1
    - Dst: Socket::writen
      Src: /src/pdns/pdns/ixfrutils.cc:51,1
    - Dst: string::resize
      Src: /src/pdns/pdns/ixfrutils.cc:54,1
    - Dst: Socket::readWithTimeout
      Src: /src/pdns/pdns/ixfrutils.cc:56,1
    - Dst: string::data
      Src: /src/pdns/pdns/ixfrutils.cc:56,1
    - Dst: string::size
      Src: /src/pdns/pdns/ixfrutils.cc:56,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/ixfrutils.cc:58,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/ixfrutils.cc:58,1
    - Dst: string::resize
      Src: /src/pdns/pdns/ixfrutils.cc:61,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/ixfrutils.cc:65,1
    - Dst: RCode::to_s
      Src: /src/pdns/pdns/ixfrutils.cc:65,1
    - Dst: getRR
      Src: /src/pdns/pdns/ixfrutils.cc:69,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 27
    argCount: 6
    argNames:
    - slog
    - ' primary'
    - ' zone'
    - ' soarecord'
    - ' tsig'
    - timeout
    argTypes:
    - Logr::log_t
    - ComboAddress
    - ZoneName
    - shared_ptr<const SOARecordContent>
    - TSIGTriplet
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 34
    functionDepth: 1
    functionLinenumber: 34
    functionLinenumberEnd: 76
    functionName: getSerialFromPrimary
    functionSourceFile: /src/pdns/pdns/ixfrutils.cc
    functionUses: 2
    functionsReached:
    - string::data
    - string::resize
    - getRR
    - Socket::readWithTimeout
    - addTSIG
    - string::size
    - ntohs
    - std::runtime_error
    - time
    - std::to_string
    - DNSPacketWriter::getHeader
    - Socket::connect
    - algo::empty
    - RCode::to_s
    - vector::size
    - TSIGRecordContent::TSIGRecordContent
    - Socket::writen
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t getSerialFromPrimary(Logr::log_t slog, const ComboAddress&
      primary, const ZoneName& zone, shared_ptr<const SOARecordContent>& soarecord,
      const TSIGTriplet& tsig, const uint16_t timeout)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pdns::visit_directory
      Src: /src/pdns/pdns/ixfrutils.cc:81,1
    - Dst: pdns::checked_stoi<uint32_t>
      Src: /src/pdns/pdns/ixfrutils.cc:83,1
    - Dst: std::string
      Src: /src/pdns/pdns/ixfrutils.cc:83,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/ixfrutils.cc:84,1
    - Dst: std::max
      Src: /src/pdns/pdns/ixfrutils.cc:85,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/ixfrutils.cc:94,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 1
    argNames:
    - ' dir'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 78
    functionDepth: 0
    functionLinenumber: 78
    functionLinenumberEnd: 98
    functionName: getSerialFromDir
    functionSourceFile: /src/pdns/pdns/ixfrutils.cc
    functionUses: 2
    functionsReached:
    - std::to_string
    - runtime_error
    - pdns::visit_directory
    - std::max
    - pdns::checked_stoi<uint32_t>
    - std::string
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t getSerialFromDir(const std::string& dir)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: equal_range
      Src: /src/pdns/pdns/ixfrutils.cc:104,1
    - Dst: std::tie
      Src: /src/pdns/pdns/ixfrutils.cc:104,1
    - Dst: getRR
      Src: /src/pdns/pdns/ixfrutils.cc:107,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - ' records'
    - ' soaret'
    argTypes:
    - records_t
    - DNSRecord
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 100
    functionDepth: 0
    functionLinenumber: 100
    functionLinenumberEnd: 114
    functionName: getSerialFromRecords
    functionSourceFile: /src/pdns/pdns/ixfrutils.cc
    functionUses: 1
    functionsReached:
    - equal_range
    - std::tie
    - getRR
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t getSerialFromRecords(const records_t& records, DNSRecord&
      soaret)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/pdns/pdns/ixfrutils.cc:119,1
    - Dst: d_name::isRoot
      Src: /src/pdns/pdns/ixfrutils.cc:120,1
    - Dst: d_name::toStringNoDot
      Src: /src/pdns/pdns/ixfrutils.cc:120,1
    - Dst: DNSRecordContent::NumberToType
      Src: /src/pdns/pdns/ixfrutils.cc:122,1
    - Dst: getContent
      Src: /src/pdns/pdns/ixfrutils.cc:123,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/ixfrutils.cc:124,1
    - Dst: stringerror
      Src: /src/pdns/pdns/ixfrutils.cc:124,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 5
    argCount: 2
    argNames:
    - fp
    - ' records'
    argTypes:
    - FILE*
    - records_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 127
      start: 116
    functionDepth: 0
    functionLinenumber: 116
    functionLinenumberEnd: 127
    functionName: writeRecords
    functionSourceFile: /src/pdns/pdns/ixfrutils.cc
    functionUses: 0
    functionsReached:
    - fprintf
    - d_name::toStringNoDot
    - stringerror
    - runtime_error
    - getContent
    - d_name::isRoot
    - DNSRecordContent::NumberToType
    linkageType: ''
    returnType: void
    signature: void writeRecords(FILE* fp, const records_t& records)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: DNSRecord::DNSRecord
      Src: /src/pdns/pdns/ixfrutils.cc:131,1
    - Dst: getSerialFromRecords
      Src: /src/pdns/pdns/ixfrutils.cc:132,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/ixfrutils.cc:133,1
    - Dst: umask
      Src: /src/pdns/pdns/ixfrutils.cc:136,1
    - Dst: pdns::UniqueFilePtr
      Src: /src/pdns/pdns/ixfrutils.cc:137,1
    - Dst: fopen
      Src: /src/pdns/pdns/ixfrutils.cc:137,1
    - Dst: c_str
      Src: /src/pdns/pdns/ixfrutils.cc:137,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/ixfrutils.cc:139,1
    - Dst: stringerror
      Src: /src/pdns/pdns/ixfrutils.cc:139,1
    - Dst: records_t::insert
      Src: /src/pdns/pdns/ixfrutils.cc:143,1
    - Dst: fprintf
      Src: /src/pdns/pdns/ixfrutils.cc:144,1
    - Dst: auto::get
      Src: /src/pdns/pdns/ixfrutils.cc:144,1
    - Dst: toString
      Src: /src/pdns/pdns/ixfrutils.cc:144,1
    - Dst: toLogString
      Src: /src/pdns/pdns/ixfrutils.cc:145,1
    - Dst: stringerror
      Src: /src/pdns/pdns/ixfrutils.cc:145,1
    - Dst: auto::reset
      Src: /src/pdns/pdns/ixfrutils.cc:146,1
    - Dst: unlink
      Src: /src/pdns/pdns/ixfrutils.cc:147,1
    - Dst: c_str
      Src: /src/pdns/pdns/ixfrutils.cc:147,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/ixfrutils.cc:148,1
    - Dst: writeRecords
      Src: /src/pdns/pdns/ixfrutils.cc:152,1
    - Dst: auto::get
      Src: /src/pdns/pdns/ixfrutils.cc:152,1
    - Dst: writeRecords
      Src: /src/pdns/pdns/ixfrutils.cc:153,1
    - Dst: auto::get
      Src: /src/pdns/pdns/ixfrutils.cc:153,1
    - Dst: writeRecords
      Src: /src/pdns/pdns/ixfrutils.cc:154,1
    - Dst: auto::get
      Src: /src/pdns/pdns/ixfrutils.cc:154,1
    - Dst: auto::reset
      Src: /src/pdns/pdns/ixfrutils.cc:156,1
    - Dst: unlink
      Src: /src/pdns/pdns/ixfrutils.cc:157,1
    - Dst: c_str
      Src: /src/pdns/pdns/ixfrutils.cc:157,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/ixfrutils.cc:158,1
    - Dst: toLogString
      Src: /src/pdns/pdns/ixfrutils.cc:158,1
    - Dst: what
      Src: /src/pdns/pdns/ixfrutils.cc:158,1
    - Dst: fclose
      Src: /src/pdns/pdns/ixfrutils.cc:161,1
    - Dst: auto::release
      Src: /src/pdns/pdns/ixfrutils.cc:161,1
    - Dst: toLogString
      Src: /src/pdns/pdns/ixfrutils.cc:162,1
    - Dst: stringerror
      Src: /src/pdns/pdns/ixfrutils.cc:162,1
    - Dst: unlink
      Src: /src/pdns/pdns/ixfrutils.cc:163,1
    - Dst: c_str
      Src: /src/pdns/pdns/ixfrutils.cc:163,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/ixfrutils.cc:164,1
    - Dst: rename
      Src: /src/pdns/pdns/ixfrutils.cc:167,1
    - Dst: c_str
      Src: /src/pdns/pdns/ixfrutils.cc:167,1
    - Dst: string::c_str
      Src: /src/pdns/pdns/ixfrutils.cc:167,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/ixfrutils.cc:168,1
    - Dst: toLogString
      Src: /src/pdns/pdns/ixfrutils.cc:168,1
    - Dst: stringerror
      Src: /src/pdns/pdns/ixfrutils.cc:168,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 27
    argCount: 3
    argNames:
    - ' records'
    - ' zone'
    - ' directory'
    argTypes:
    - records_t
    - ZoneName
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 170
      start: 129
    functionDepth: 1
    functionLinenumber: 129
    functionLinenumberEnd: 170
    functionName: writeZoneToDisk
    functionSourceFile: /src/pdns/pdns/ixfrutils.cc
    functionUses: 2
    functionsReached:
    - toLogString
    - fprintf
    - toString
    - DNSRecord::DNSRecord
    - std::to_string
    - stringerror
    - fopen
    - runtime_error
    - records_t::insert
    - pdns::UniqueFilePtr
    - c_str
    - rename
    - string::c_str
    - auto::get
    - std::runtime_error
    - getSerialFromRecords
    - writeRecords
    - what
    - fclose
    - auto::reset
    - unlink
    - umask
    - auto::release
    linkageType: ''
    returnType: void
    signature: void writeZoneToDisk(const records_t& records, const ZoneName& zone,
      const std::string& directory)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ZoneParserTNG::disableGenerate
      Src: /src/pdns/pdns/ixfrutils.cc:176,1
    - Dst: ZoneParserTNG::get
      Src: /src/pdns/pdns/ixfrutils.cc:179,1
    - Dst: DNSResourceRecord::qtype::getCode
      Src: /src/pdns/pdns/ixfrutils.cc:180,1
    - Dst: DNSResourceRecord::content::empty
      Src: /src/pdns/pdns/ixfrutils.cc:180,1
    - Dst: DNSResourceRecord::qname::makeRelative
      Src: /src/pdns/pdns/ixfrutils.cc:182,1
    - Dst: DNSResourceRecord::qtype::getCode
      Src: /src/pdns/pdns/ixfrutils.cc:184,1
    - Dst: insert
      Src: /src/pdns/pdns/ixfrutils.cc:185,1
    - Dst: DNSRecord
      Src: /src/pdns/pdns/ixfrutils.cc:185,1
    - Dst: DNSResourceRecord::qtype::getCode
      Src: /src/pdns/pdns/ixfrutils.cc:186,1
    - Dst: DNSResourceRecord::qtype::getCode
      Src: /src/pdns/pdns/ixfrutils.cc:190,1
    - Dst: clear
      Src: /src/pdns/pdns/ixfrutils.cc:191,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/ixfrutils.cc:192,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 16
    argCount: 3
    argNames:
    - ' records'
    - ' fname'
    - ' zone'
    argTypes:
    - records_t
    - string
    - ZoneName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 194
      start: 172
    functionDepth: 1
    functionLinenumber: 172
    functionLinenumberEnd: 194
    functionName: loadZoneFromDisk
    functionSourceFile: /src/pdns/pdns/ixfrutils.cc
    functionUses: 2
    functionsReached:
    - ZoneParserTNG::disableGenerate
    - DNSResourceRecord::qname::makeRelative
    - runtime_error
    - DNSRecord
    - ZoneParserTNG::get
    - DNSResourceRecord::qtype::getCode
    - insert
    - DNSResourceRecord::content::empty
    - clear
    linkageType: ''
    returnType: void
    signature: void loadZoneFromDisk(records_t& records, const string& fname, const
      ZoneName& zone)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ZoneParserTNG::disableGenerate
      Src: /src/pdns/pdns/ixfrutils.cc:203,1
    - Dst: ZoneParserTNG::get
      Src: /src/pdns/pdns/ixfrutils.cc:206,1
    - Dst: getRR
      Src: /src/pdns/pdns/ixfrutils.cc:208,1
    - Dst: DNSRecord
      Src: /src/pdns/pdns/ixfrutils.cc:208,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 4
    argNames:
    - ' zone'
    - ' fname'
    - ' soa'
    - ' soaTTL'
    argTypes:
    - ZoneName
    - string
    - shared_ptr<const SOARecordContent>
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 213
      start: 200
    functionDepth: 0
    functionLinenumber: 200
    functionLinenumberEnd: 213
    functionName: loadSOAFromDisk
    functionSourceFile: /src/pdns/pdns/ixfrutils.cc
    functionUses: 1
    functionsReached:
    - ZoneParserTNG::disableGenerate
    - getRR
    - DNSRecord
    - ZoneParserTNG::get
    linkageType: ''
    returnType: void
    signature: void loadSOAFromDisk(const ZoneName& zone, const string& fname, shared_ptr<const
      SOARecordContent>& soa, uint32_t& soaTTL)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 35
    functionDepth: 0
    functionLinenumber: 35
    functionLinenumberEnd: 38
    functionName: alarmHandler
    functionSourceFile: /src/pdns/pdns/speedtest.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void alarmHandler(int)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: signal
      Src: /src/pdns/pdns/speedtest.cc:48,1
    - Dst: setitimer
      Src: /src/pdns/pdns/speedtest.cc:49,1
    - Dst: CPUTime::start
      Src: /src/pdns/pdns/speedtest.cc:54,1
    - Dst: cmd
      Src: /src/pdns/pdns/speedtest.cc:56,1
    - Dst: CPUTime::ndiff
      Src: /src/pdns/pdns/speedtest.cc:58,1
    - Dst: getName
      Src: /src/pdns/pdns/speedtest.cc:61,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 1
    argNames:
    - ' cmd'
    argTypes:
    - C
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 40
    functionDepth: 0
    functionLinenumber: 40
    functionLinenumberEnd: 63
    functionName: doRun
    functionSourceFile: /src/pdns/pdns/speedtest.cc
    functionUses: 0
    functionsReached:
    - cmd
    - getName
    - setitimer
    - CPUTime::ndiff
    - CPUTime::start
    - signal
    linkageType: ''
    returnType: void
    signature: void doRun(const C& cmd, int mseconds=100)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - records
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 67
    functionDepth: 0
    functionLinenumber: 67
    functionLinenumberEnd: 67
    functionName: ARecordTest
    functionSourceFile: /src/pdns/pdns/speedtest.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ARecordTest(int records)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: boost::format
      Src: /src/pdns/pdns/speedtest.cc:71,1
    - Dst: str
      Src: /src/pdns/pdns/speedtest.cc:71,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 69
    functionDepth: 0
    functionLinenumber: 69
    functionLinenumberEnd: 72
    functionName: getName
    functionSourceFile: /src/pdns/pdns/speedtest.cc
    functionUses: 62
    functionsReached:
    - str
    - boost::format
    linkageType: ''
    returnType: string
    signature: string getName() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSName
      Src: /src/pdns/pdns/speedtest.cc:77,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/speedtest.cc:79,1
    - Dst: DNSName
      Src: /src/pdns/pdns/speedtest.cc:79,1
    - Dst: ARecordContent::toPacket
      Src: /src/pdns/pdns/speedtest.cc:81,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/speedtest.cc:83,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 74
    functionDepth: 0
    functionLinenumber: 74
    functionLinenumberEnd: 84
    functionName: operator()() const
    functionSourceFile: /src/pdns/pdns/speedtest.cc
    functionUses: 0
    functionsReached:
    - DNSPacketWriter::commit
    - ARecordContent::toPacket
    - DNSPacketWriter::startRecord
    - DNSName
    linkageType: ''
    returnType: void
    signature: void operator()() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 91
    functionDepth: 0
    functionLinenumber: 91
    functionLinenumberEnd: 91
    functionName: MakeStringFromCharStarTest
    functionSourceFile: /src/pdns/pdns/speedtest.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void MakeStringFromCharStarTest()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: boost::format
      Src: /src/pdns/pdns/speedtest.cc:94,1
    - Dst: str
      Src: /src/pdns/pdns/speedtest.cc:94,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 92
    functionDepth: 0
    functionLinenumber: 92
    functionLinenumberEnd: 95
    functionName: getName
    functionSourceFile: /src/pdns/pdns/speedtest.cc
    functionUses: 62
    functionsReached:
    - str
    - boost::format
    linkageType: ''
    returnType: string
    signature: string getName() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: string::length
      Src: /src/pdns/pdns/speedtest.cc:100,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 97
    functionDepth: 0
    functionLinenumber: 97
    functionLinenumberEnd: 102
    functionName: operator()() const
    functionSourceFile: /src/pdns/pdns/speedtest.cc
    functionUses: 0
    functionsReached:
    - string::length
    linkageType: ''
    returnType: void
    signature: void operator()() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 112
      start: 109
    functionDepth: 0
    functionLinenumber: 109
    functionLinenumberEnd: 112
    functionName: getName
    functionSourceFile: /src/pdns/pdns/speedtest.cc
    functionUses: 62
    functionsReached: []
    linkageType: ''
    returnType: string
    signature: string getName() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: gettimeofday
      Src: /src/pdns/pdns/speedtest.cc:117,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 118
      start: 114
    functionDepth: 0
    functionLinenumber: 114
    functionLinenumberEnd: 118
    functionName: operator()() const
    functionSourceFile: /src/pdns/pdns/speedtest.cc
    functionUses: 0
    functionsReached:
    - gettimeofday
    linkageType: ''
    returnType: void
    signature: void operator()() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 123
    functionDepth: 0
    functionLinenumber: 123
    functionLinenumberEnd: 126
    functionName: getName
    functionSourceFile: /src/pdns/pdns/speedtest.cc
    functionUses: 62
    functionsReached: []
    linkageType: ''
    returnType: string
    signature: string getName() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/speedtest.cc:131,1
    - Dst: unlock
      Src: /src/pdns/pdns/speedtest.cc:133,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 135
      start: 128
    functionDepth: 0
    functionLinenumber: 128
    functionLinenumberEnd: 135
    functionName: operator()() const
    functionSourceFile: /src/pdns/pdns/speedtest.cc
    functionUses: 0
    functionsReached:
    - unlock
    - lock
    linkageType: ''
    returnType: void
    signature: void operator()() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 146
      start: 143
    functionDepth: 0
    functionLinenumber: 143
    functionLinenumberEnd: 146
    functionName: getName
    functionSourceFile: /src/pdns/pdns/speedtest.cc
    functionUses: 62
    functionsReached: []
    linkageType: ''
    returnType: string
    signature: string getName() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::scoped_lock
      Src: /src/pdns/pdns/speedtest.cc:151,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 154
      start: 148
    functionDepth: 0
    functionLinenumber: 148
    functionLinenumberEnd: 154
    functionName: operator()() const
    functionSourceFile: /src/pdns/pdns/speedtest.cc
    functionUses: 0
    functionsReached:
    - std::scoped_lock
    linkageType: ''
    returnType: void
    signature: void operator()() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 165
      start: 162
    functionDepth: 0
    functionLinenumber: 162
    functionLinenumberEnd: 165
    functionName: getName
    functionSourceFile: /src/pdns/pdns/speedtest.cc
    functionUses: 62
    functionsReached: []
    linkageType: ''
    returnType: string
    signature: string getName() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::scoped_lock
      Src: /src/pdns/pdns/speedtest.cc:170,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 173
      start: 167
    functionDepth: 0
    functionLinenumber: 167
    functionLinenumberEnd: 173
    functionName: operator()() const
    functionSourceFile: /src/pdns/pdns/speedtest.cc
    functionUses: 0
    functionsReached:
    - std::scoped_lock
    linkageType: ''
    returnType: void
    signature: void operator()() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 184
      start: 181
    functionDepth: 0
    functionLinenumber: 181
    functionLinenumberEnd: 184
    functionName: getName
    functionSourceFile: /src/pdns/pdns/speedtest.cc
    functionUses: 62
    functionsReached: []
    linkageType: ''
    returnType: string
    signature: string getName() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/speedtest.cc:189,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 191
      start: 186
    functionDepth: 0
    functionLinenumber: 186
    functionLinenumberEnd: 191
    functionName: operator()() const
    functionSourceFile: /src/pdns/pdns/speedtest.cc
    functionUses: 0
    functionsReached:
    - lock
    linkageType: ''
    returnType: void
    signature: void operator()() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 202
      start: 199
    functionDepth: 0
    functionLinenumber: 199
    functionLinenumberEnd: 202
    functionName: getName
    functionSourceFile: /src/pdns/pdns/speedtest.cc
    functionUses: 62
    functionsReached: []
    linkageType: ''
    returnType: string
    signature: string getName() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: string::string
      Src: /src/pdns/pdns/speedtest.cc:208,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 209
      start: 204
    functionDepth: 0
    functionLinenumber: 204
    functionLinenumberEnd: 209
    functionName: operator()() const
    functionSourceFile: /src/pdns/pdns/speedtest.cc
    functionUses: 0
    functionsReached:
    - string::string
    linkageType: ''
    returnType: void
    signature: void operator()() const
  - 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: getName
    functionSourceFile: /src/pdns/pdns/speedtest.cc
    functionUses: 62
    functionsReached: []
    linkageType: ''
    returnType: string
    signature: string getName() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: stringtok
      Src: /src/pdns/pdns/speedtest.cc:223,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 224
      start: 219
    functionDepth: 0
    functionLinenumber: 219
    functionLinenumberEnd: 224
    functionName: operator()() const
    functionSourceFile: /src/pdns/pdns/speedtest.cc
    functionUses: 0
    functionsReached:
    - stringtok
    linkageType: ''
    returnType: void
    signature: void operator()() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 232
      start: 229
    functionDepth: 0
    functionLinenumber: 229
    functionLinenumberEnd: 232
    functionName: getName
    functionSourceFile: /src/pdns/pdns/speedtest.cc
    functionUses: 62
    functionsReached: []
    linkageType: ''
    returnType: string
    signature: string getName() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vstringtok
      Src: /src/pdns/pdns/speedtest.cc:238,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 239
      start: 234
    functionDepth: 0
    functionLinenumber: 234
    functionLinenumberEnd: 239
    functionName: operator()() const
    functionSourceFile: /src/pdns/pdns/speedtest.cc
    functionUses: 0
    functionsReached:
    - vstringtok
    linkageType: ''
    returnType: void
    signature: void operator()() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    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: getName
    functionSourceFile: /src/pdns/pdns/speedtest.cc
    functionUses: 62
    functionsReached: []
    linkageType: ''
    returnType: string
    signature: string getName() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: string::append
      Src: /src/pdns/pdns/speedtest.cc:254,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 256
      start: 249
    functionDepth: 0
    functionLinenumber: 249
    functionLinenumberEnd: 256
    functionName: operator()() const
    functionSourceFile: /src/pdns/pdns/speedtest.cc
    functionUses: 0
    functionsReached:
    - string::append
    linkageType: ''
    returnType: void
    signature: void operator()() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 265
      start: 262
    functionDepth: 0
    functionLinenumber: 262
    functionLinenumberEnd: 265
    functionName: getName
    functionSourceFile: /src/pdns/pdns/speedtest.cc
    functionUses: 62
    functionsReached: []
    linkageType: ''
    returnType: string
    signature: string getName() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: boost::container::string::append
      Src: /src/pdns/pdns/speedtest.cc:272,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 274
      start: 267
    functionDepth: 0
    functionLinenumber: 267
    functionLinenumberEnd: 274
    functionName: operator()() const
    functionSourceFile: /src/pdns/pdns/speedtest.cc
    functionUses: 0
    functionsReached:
    - boost::container::string::append
    linkageType: ''
    returnType: void
    signature: void operator()() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: boost::format
      Src: /src/pdns/pdns/speedtest.cc:283,1
    - Dst: str
      Src: /src/pdns/pdns/speedtest.cc:283,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 284
      start: 281
    functionDepth: 0
    functionLinenumber: 281
    functionLinenumberEnd: 284
    functionName: getName
    functionSourceFile: /src/pdns/pdns/speedtest.cc
    functionUses: 62
    functionsReached:
    - str
    - boost::format
    linkageType: ''
    returnType: string
    signature: string getName() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 292
      start: 286
    functionDepth: 0
    functionLinenumber: 286
    functionLinenumberEnd: 292
    functionName: operator()() const
    functionSourceFile: /src/pdns/pdns/speedtest.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void operator()() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSName
      Src: /src/pdns/pdns/speedtest.cc:299,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/speedtest.cc:303,1
    - Dst: DNSName
      Src: /src/pdns/pdns/speedtest.cc:303,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/speedtest.cc:305,1
    - Dst: auto::toPacket
      Src: /src/pdns/pdns/speedtest.cc:306,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/speedtest.cc:311,1
    - Dst: DNSName
      Src: /src/pdns/pdns/speedtest.cc:311,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/speedtest.cc:312,1
    - Dst: auto::toPacket
      Src: /src/pdns/pdns/speedtest.cc:313,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/speedtest.cc:317,1
    - Dst: DNSName
      Src: /src/pdns/pdns/speedtest.cc:317,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/speedtest.cc:318,1
    - Dst: auto::toPacket
      Src: /src/pdns/pdns/speedtest.cc:319,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/speedtest.cc:321,1
    - Dst: DNSName
      Src: /src/pdns/pdns/speedtest.cc:321,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/speedtest.cc:322,1
    - Dst: auto::toPacket
      Src: /src/pdns/pdns/speedtest.cc:323,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/speedtest.cc:326,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 328
      start: 295
    functionDepth: 0
    functionLinenumber: 295
    functionLinenumberEnd: 328
    functionName: makeBigReferral
    functionSourceFile: /src/pdns/pdns/speedtest.cc
    functionUses: 0
    functionsReached:
    - DNSPacketWriter::commit
    - DNSName
    - auto::toPacket
    - DNSRecordContent::make
    - DNSPacketWriter::startRecord
    linkageType: ''
    returnType: vector<uint8_t>
    signature: vector<uint8_t> makeBigReferral()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSName
      Src: /src/pdns/pdns/speedtest.cc:336,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/speedtest.cc:342,1
    - Dst: DNSName
      Src: /src/pdns/pdns/speedtest.cc:348,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/speedtest.cc:350,1
    - Dst: DNSName
      Src: /src/pdns/pdns/speedtest.cc:353,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/speedtest.cc:356,1
    - Dst: DNSName
      Src: /src/pdns/pdns/speedtest.cc:358,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/speedtest.cc:361,1
    - Dst: DNSName
      Src: /src/pdns/pdns/speedtest.cc:365,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/speedtest.cc:368,1
    - Dst: qtype::getCode
      Src: /src/pdns/pdns/speedtest.cc:368,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/speedtest.cc:369,1
    - Dst: qtype::getCode
      Src: /src/pdns/pdns/speedtest.cc:369,1
    - Dst: auto::toPacket
      Src: /src/pdns/pdns/speedtest.cc:370,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/speedtest.cc:373,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 29
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 375
      start: 330
    functionDepth: 0
    functionLinenumber: 330
    functionLinenumberEnd: 375
    functionName: makeBigDNSPacketReferral
    functionSourceFile: /src/pdns/pdns/speedtest.cc
    functionUses: 0
    functionsReached:
    - vector::push_back
    - DNSPacketWriter::commit
    - DNSName
    - qtype::getCode
    - DNSRecordContent::make
    - auto::toPacket
    - DNSPacketWriter::startRecord
    linkageType: ''
    returnType: vector<uint8_t>
    signature: vector<uint8_t> makeBigDNSPacketReferral()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: boost::format
      Src: /src/pdns/pdns/speedtest.cc:383,1
    - Dst: str
      Src: /src/pdns/pdns/speedtest.cc:383,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 384
      start: 381
    functionDepth: 0
    functionLinenumber: 381
    functionLinenumberEnd: 384
    functionName: getName
    functionSourceFile: /src/pdns/pdns/speedtest.cc
    functionUses: 62
    functionsReached:
    - str
    - boost::format
    linkageType: ''
    returnType: string
    signature: string getName() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/speedtest.cc:388,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 390
      start: 386
    functionDepth: 0
    functionLinenumber: 386
    functionLinenumberEnd: 390
    functionName: operator()() const
    functionSourceFile: /src/pdns/pdns/speedtest.cc
    functionUses: 0
    functionsReached:
    - DNSRecordContent::make
    linkageType: ''
    returnType: void
    signature: void operator()() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - records
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 396
      start: 396
    functionDepth: 0
    functionLinenumber: 396
    functionLinenumberEnd: 396
    functionName: A2RecordTest
    functionSourceFile: /src/pdns/pdns/speedtest.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void A2RecordTest(int records)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: boost::format
      Src: /src/pdns/pdns/speedtest.cc:400,1
    - Dst: str
      Src: /src/pdns/pdns/speedtest.cc:400,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 401
      start: 398
    functionDepth: 0
    functionLinenumber: 398
    functionLinenumberEnd: 401
    functionName: getName
    functionSourceFile: /src/pdns/pdns/speedtest.cc
    functionUses: 62
    functionsReached:
    - str
    - boost::format
    linkageType: ''
    returnType: string
    signature: string getName() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSName
      Src: /src/pdns/pdns/speedtest.cc:406,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/speedtest.cc:410,1
    - Dst: ARecordContent::toPacket
      Src: /src/pdns/pdns/speedtest.cc:412,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/speedtest.cc:414,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 415
      start: 403
    functionDepth: 0
    functionLinenumber: 403
    functionLinenumberEnd: 415
    functionName: operator()() const
    functionSourceFile: /src/pdns/pdns/speedtest.cc
    functionUses: 0
    functionsReached:
    - DNSPacketWriter::commit
    - ARecordContent::toPacket
    - DNSPacketWriter::startRecord
    - DNSName
    linkageType: ''
    returnType: void
    signature: void operator()() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - records
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 422
      start: 422
    functionDepth: 0
    functionLinenumber: 422
    functionLinenumberEnd: 422
    functionName: TXTRecordTest
    functionSourceFile: /src/pdns/pdns/speedtest.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void TXTRecordTest(int records)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: boost::format
      Src: /src/pdns/pdns/speedtest.cc:426,1
    - Dst: str
      Src: /src/pdns/pdns/speedtest.cc:426,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 427
      start: 424
    functionDepth: 0
    functionLinenumber: 424
    functionLinenumberEnd: 427
    functionName: getName
    functionSourceFile: /src/pdns/pdns/speedtest.cc
    functionUses: 62
    functionsReached:
    - str
    - boost::format
    linkageType: ''
    returnType: string
    signature: string getName() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSName
      Src: /src/pdns/pdns/speedtest.cc:432,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/speedtest.cc:434,1
    - Dst: DNSName
      Src: /src/pdns/pdns/speedtest.cc:434,1
    - Dst: TXTRecordContent::toPacket
      Src: /src/pdns/pdns/speedtest.cc:436,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/speedtest.cc:438,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 439
      start: 429
    functionDepth: 0
    functionLinenumber: 429
    functionLinenumberEnd: 439
    functionName: operator()() const
    functionSourceFile: /src/pdns/pdns/speedtest.cc
    functionUses: 0
    functionsReached:
    - TXTRecordContent::toPacket
    - DNSPacketWriter::startRecord
    - DNSPacketWriter::commit
    - DNSName
    linkageType: ''
    returnType: void
    signature: void operator()() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 3
    argNames:
    - records
    - type
    - ' content'
    argTypes:
    - int
    - uint16_t
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 447
      start: 446
    functionDepth: 0
    functionLinenumber: 446
    functionLinenumberEnd: 447
    functionName: GenericRecordTest
    functionSourceFile: /src/pdns/pdns/speedtest.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void GenericRecordTest(int records, uint16_t type, const std::string&
      content)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: boost::format
      Src: /src/pdns/pdns/speedtest.cc:451,1
    - Dst: DNSRecordContent::NumberToType
      Src: /src/pdns/pdns/speedtest.cc:452,1
    - Dst: str
      Src: /src/pdns/pdns/speedtest.cc:451,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 453
      start: 449
    functionDepth: 0
    functionLinenumber: 449
    functionLinenumberEnd: 453
    functionName: getName
    functionSourceFile: /src/pdns/pdns/speedtest.cc
    functionUses: 62
    functionsReached:
    - str
    - DNSRecordContent::NumberToType
    - boost::format
    linkageType: ''
    returnType: string
    signature: string getName() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSName
      Src: /src/pdns/pdns/speedtest.cc:458,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/speedtest.cc:460,1
    - Dst: DNSName
      Src: /src/pdns/pdns/speedtest.cc:460,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/speedtest.cc:461,1
    - Dst: auto::toPacket
      Src: /src/pdns/pdns/speedtest.cc:463,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/speedtest.cc:465,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 466
      start: 455
    functionDepth: 0
    functionLinenumber: 455
    functionLinenumberEnd: 466
    functionName: operator()() const
    functionSourceFile: /src/pdns/pdns/speedtest.cc
    functionUses: 0
    functionsReached:
    - DNSPacketWriter::commit
    - DNSName
    - auto::toPacket
    - DNSRecordContent::make
    - DNSPacketWriter::startRecord
    linkageType: ''
    returnType: void
    signature: void operator()() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - records
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 475
      start: 475
    functionDepth: 0
    functionLinenumber: 475
    functionLinenumberEnd: 475
    functionName: AAAARecordTest
    functionSourceFile: /src/pdns/pdns/speedtest.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void AAAARecordTest(int records)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: boost::format
      Src: /src/pdns/pdns/speedtest.cc:479,1
    - Dst: str
      Src: /src/pdns/pdns/speedtest.cc:479,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 480
      start: 477
    functionDepth: 0
    functionLinenumber: 477
    functionLinenumberEnd: 480
    functionName: getName
    functionSourceFile: /src/pdns/pdns/speedtest.cc
    functionUses: 62
    functionsReached:
    - str
    - boost::format
    linkageType: ''
    returnType: string
    signature: string getName() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSName
      Src: /src/pdns/pdns/speedtest.cc:485,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/speedtest.cc:487,1
    - Dst: DNSName
      Src: /src/pdns/pdns/speedtest.cc:487,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/speedtest.cc:488,1
    - Dst: auto::toPacket
      Src: /src/pdns/pdns/speedtest.cc:489,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/speedtest.cc:491,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 492
      start: 482
    functionDepth: 0
    functionLinenumber: 482
    functionLinenumberEnd: 492
    functionName: operator()() const
    functionSourceFile: /src/pdns/pdns/speedtest.cc
    functionUses: 0
    functionsReached:
    - DNSPacketWriter::commit
    - DNSName
    - auto::toPacket
    - DNSRecordContent::make
    - DNSPacketWriter::startRecord
    linkageType: ''
    returnType: void
    signature: void operator()() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - records
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 498
      start: 498
    functionDepth: 0
    functionLinenumber: 498
    functionLinenumberEnd: 498
    functionName: SOARecordTest
    functionSourceFile: /src/pdns/pdns/speedtest.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void SOARecordTest(int records)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: boost::format
      Src: /src/pdns/pdns/speedtest.cc:502,1
    - Dst: str
      Src: /src/pdns/pdns/speedtest.cc:502,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 503
      start: 500
    functionDepth: 0
    functionLinenumber: 500
    functionLinenumberEnd: 503
    functionName: getName
    functionSourceFile: /src/pdns/pdns/speedtest.cc
    functionUses: 62
    functionsReached:
    - str
    - boost::format
    linkageType: ''
    returnType: string
    signature: string getName() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSName
      Src: /src/pdns/pdns/speedtest.cc:508,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/speedtest.cc:511,1
    - Dst: DNSName
      Src: /src/pdns/pdns/speedtest.cc:511,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/speedtest.cc:512,1
    - Dst: auto::toPacket
      Src: /src/pdns/pdns/speedtest.cc:513,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/speedtest.cc:515,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 516
      start: 505
    functionDepth: 0
    functionLinenumber: 505
    functionLinenumberEnd: 516
    functionName: operator()() const
    functionSourceFile: /src/pdns/pdns/speedtest.cc
    functionUses: 0
    functionsReached:
    - DNSPacketWriter::commit
    - DNSName
    - auto::toPacket
    - DNSRecordContent::make
    - DNSPacketWriter::startRecord
    linkageType: ''
    returnType: void
    signature: void operator()() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSName
      Src: /src/pdns/pdns/speedtest.cc:523,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 525
      start: 520
    functionDepth: 0
    functionLinenumber: 520
    functionLinenumberEnd: 525
    functionName: makeEmptyQuery
    functionSourceFile: /src/pdns/pdns/speedtest.cc
    functionUses: 0
    functionsReached:
    - DNSName
    linkageType: ''
    returnType: vector<uint8_t>
    signature: vector<uint8_t> makeEmptyQuery()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSName
      Src: /src/pdns/pdns/speedtest.cc:530,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/speedtest.cc:532,1
    - Dst: DNSName
      Src: /src/pdns/pdns/speedtest.cc:532,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/speedtest.cc:533,1
    - Dst: auto::toPacket
      Src: /src/pdns/pdns/speedtest.cc:534,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/speedtest.cc:536,1
    - Dst: DNSName
      Src: /src/pdns/pdns/speedtest.cc:536,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/speedtest.cc:537,1
    - Dst: auto::toPacket
      Src: /src/pdns/pdns/speedtest.cc:538,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/speedtest.cc:541,1
    - Dst: DNSName
      Src: /src/pdns/pdns/speedtest.cc:541,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/speedtest.cc:542,1
    - Dst: auto::toPacket
      Src: /src/pdns/pdns/speedtest.cc:543,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/speedtest.cc:545,1
    - Dst: DNSName
      Src: /src/pdns/pdns/speedtest.cc:545,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/speedtest.cc:546,1
    - Dst: auto::toPacket
      Src: /src/pdns/pdns/speedtest.cc:547,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/speedtest.cc:549,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 551
      start: 527
    functionDepth: 0
    functionLinenumber: 527
    functionLinenumberEnd: 551
    functionName: makeTypicalReferral
    functionSourceFile: /src/pdns/pdns/speedtest.cc
    functionUses: 0
    functionsReached:
    - DNSPacketWriter::commit
    - DNSName
    - auto::toPacket
    - DNSRecordContent::make
    - DNSPacketWriter::startRecord
    linkageType: ''
    returnType: vector<uint8_t>
    signature: vector<uint8_t> makeTypicalReferral()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 558
      start: 555
    functionDepth: 0
    functionLinenumber: 555
    functionLinenumberEnd: 558
    functionName: getName
    functionSourceFile: /src/pdns/pdns/speedtest.cc
    functionUses: 62
    functionsReached: []
    linkageType: ''
    returnType: string
    signature: string getName() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: char::char
      Src: /src/pdns/pdns/speedtest.cc:562,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 564
      start: 560
    functionDepth: 0
    functionLinenumber: 560
    functionLinenumberEnd: 564
    functionName: operator()() const
    functionSourceFile: /src/pdns/pdns/speedtest.cc
    functionUses: 0
    functionsReached:
    - char::char
    linkageType: ''
    returnType: void
    signature: void operator()() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 574
      start: 571
    functionDepth: 0
    functionLinenumber: 571
    functionLinenumberEnd: 574
    functionName: getName
    functionSourceFile: /src/pdns/pdns/speedtest.cc
    functionUses: 62
    functionsReached: []
    linkageType: ''
    returnType: string
    signature: string getName() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeEmptyQuery
      Src: /src/pdns/pdns/speedtest.cc:578,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 579
      start: 576
    functionDepth: 1
    functionLinenumber: 576
    functionLinenumberEnd: 579
    functionName: operator()() const
    functionSourceFile: /src/pdns/pdns/speedtest.cc
    functionUses: 0
    functionsReached:
    - makeEmptyQuery
    linkageType: ''
    returnType: void
    signature: void operator()() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 588
      start: 585
    functionDepth: 0
    functionLinenumber: 585
    functionLinenumberEnd: 588
    functionName: getName
    functionSourceFile: /src/pdns/pdns/speedtest.cc
    functionUses: 62
    functionsReached: []
    linkageType: ''
    returnType: string
    signature: string getName() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeTypicalReferral
      Src: /src/pdns/pdns/speedtest.cc:592,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 593
      start: 590
    functionDepth: 1
    functionLinenumber: 590
    functionLinenumberEnd: 593
    functionName: operator()() const
    functionSourceFile: /src/pdns/pdns/speedtest.cc
    functionUses: 0
    functionsReached:
    - makeTypicalReferral
    linkageType: ''
    returnType: void
    signature: void operator()() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 602
      start: 599
    functionDepth: 0
    functionLinenumber: 599
    functionLinenumberEnd: 602
    functionName: getName
    functionSourceFile: /src/pdns/pdns/speedtest.cc
    functionUses: 62
    functionsReached: []
    linkageType: ''
    returnType: string
    signature: string getName() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeBigReferral
      Src: /src/pdns/pdns/speedtest.cc:606,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 607
      start: 604
    functionDepth: 1
    functionLinenumber: 604
    functionLinenumberEnd: 607
    functionName: operator()() const
    functionSourceFile: /src/pdns/pdns/speedtest.cc
    functionUses: 0
    functionsReached:
    - makeBigReferral
    linkageType: ''
    returnType: void
    signature: void operator()() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 616
      start: 613
    functionDepth: 0
    functionLinenumber: 613
    functionLinenumberEnd: 616
    functionName: getName
    functionSourceFile: /src/pdns/pdns/speedtest.cc
    functionUses: 62
    functionsReached: []
    linkageType: ''
    returnType: string
    signature: string getName() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeBigDNSPacketReferral
      Src: /src/pdns/pdns/speedtest.cc:620,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 621
      start: 618
    functionDepth: 1
    functionLinenumber: 618
    functionLinenumberEnd: 621
    functionName: operator()() const
    functionSourceFile: /src/pdns/pdns/speedtest.cc
    functionUses: 0
    functionsReached:
    - makeBigDNSPacketReferral
    linkageType: ''
    returnType: void
    signature: void operator()() const
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - ' a'
    - ' b'
    argTypes:
    - pair<DNSName, QType>
    - pair<DNSName, QType>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 636
      start: 628
    functionDepth: 0
    functionLinenumber: 628
    functionLinenumberEnd: 636
    functionName: operator()(const pair<DNSName, QType>& a, const pair<DNSName, QType>&
      b) const
    functionSourceFile: /src/pdns/pdns/speedtest.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool operator()(const pair<DNSName, QType>& a, const pair<DNSName,
      QType>& b) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - ' packet'
    - ' name'
    argTypes:
    - vector<uint8_t>
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 655
      start: 653
    functionDepth: 0
    functionLinenumber: 653
    functionLinenumberEnd: 655
    functionName: ParsePacketTest
    functionSourceFile: /src/pdns/pdns/speedtest.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ParsePacketTest(const vector<uint8_t>& packet, const std::string&
      name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 660
      start: 657
    functionDepth: 0
    functionLinenumber: 657
    functionLinenumberEnd: 660
    functionName: getName
    functionSourceFile: /src/pdns/pdns/speedtest.cc
    functionUses: 62
    functionsReached: []
    linkageType: ''
    returnType: string
    signature: string getName() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: begin
      Src: /src/pdns/pdns/speedtest.cc:664,1
    - Dst: size
      Src: /src/pdns/pdns/speedtest.cc:664,1
    - Dst: MOADNSParser::d_answers::begin
      Src: /src/pdns/pdns/speedtest.cc:673,1
    - Dst: MOADNSParser::d_answers::end
      Src: /src/pdns/pdns/speedtest.cc:673,1
    - Dst: MOADNSParser::answers_t::const_iterator::getContent
      Src: /src/pdns/pdns/speedtest.cc:679,1
    - Dst: "struct {\n            vector<DNSResourceRecord> d_result;\n            bool
        d_aabit;\n            int d_rcode;\n    }::d_result::push_back"
      Src: /src/pdns/pdns/speedtest.cc:680,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 684
      start: 662
    functionDepth: 0
    functionLinenumber: 662
    functionLinenumberEnd: 684
    functionName: operator()() const
    functionSourceFile: /src/pdns/pdns/speedtest.cc
    functionUses: 0
    functionsReached:
    - MOADNSParser::answers_t::const_iterator::getContent
    - "struct {\n            vector<DNSResourceRecord> d_result;\n            bool
      d_aabit;\n            int d_rcode;\n    }::d_result::push_back"
    - size
    - MOADNSParser::d_answers::end
    - begin
    - MOADNSParser::d_answers::begin
    linkageType: ''
    returnType: void
    signature: void operator()() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - ' packet'
    - ' name'
    argTypes:
    - vector<uint8_t>
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 693
      start: 691
    functionDepth: 0
    functionLinenumber: 691
    functionLinenumberEnd: 693
    functionName: ParsePacketBareTest
    functionSourceFile: /src/pdns/pdns/speedtest.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ParsePacketBareTest(const vector<uint8_t>& packet, const std::string&
      name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 698
      start: 695
    functionDepth: 0
    functionLinenumber: 695
    functionLinenumberEnd: 698
    functionName: getName
    functionSourceFile: /src/pdns/pdns/speedtest.cc
    functionUses: 62
    functionsReached: []
    linkageType: ''
    returnType: string
    signature: string getName() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: begin
      Src: /src/pdns/pdns/speedtest.cc:702,1
    - Dst: size
      Src: /src/pdns/pdns/speedtest.cc:702,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 703
      start: 700
    functionDepth: 0
    functionLinenumber: 700
    functionLinenumberEnd: 703
    functionName: operator()() const
    functionSourceFile: /src/pdns/pdns/speedtest.cc
    functionUses: 0
    functionsReached:
    - size
    - begin
    linkageType: ''
    returnType: void
    signature: void operator()() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' name'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 713
      start: 711
    functionDepth: 0
    functionLinenumber: 711
    functionLinenumberEnd: 713
    functionName: SimpleCompressTest
    functionSourceFile: /src/pdns/pdns/speedtest.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void SimpleCompressTest(const std::string& name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 718
      start: 715
    functionDepth: 0
    functionLinenumber: 715
    functionLinenumberEnd: 718
    functionName: getName
    functionSourceFile: /src/pdns/pdns/speedtest.cc
    functionUses: 62
    functionsReached: []
    linkageType: ''
    returnType: string
    signature: string getName() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: simpleCompress
      Src: /src/pdns/pdns/speedtest.cc:722,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 723
      start: 720
    functionDepth: 0
    functionLinenumber: 720
    functionLinenumberEnd: 723
    functionName: operator()() const
    functionSourceFile: /src/pdns/pdns/speedtest.cc
    functionUses: 0
    functionsReached:
    - simpleCompress
    linkageType: ''
    returnType: void
    signature: void operator()() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 732
      start: 729
    functionDepth: 0
    functionLinenumber: 729
    functionLinenumberEnd: 732
    functionName: getName
    functionSourceFile: /src/pdns/pdns/speedtest.cc
    functionUses: 62
    functionsReached: []
    linkageType: ''
    returnType: string
    signature: string getName() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vector::resize
      Src: /src/pdns/pdns/speedtest.cc:737,1
    - Dst: vector::size
      Src: /src/pdns/pdns/speedtest.cc:740,1
    - Dst: vector::resize
      Src: /src/pdns/pdns/speedtest.cc:741,1
    - Dst: string::length
      Src: /src/pdns/pdns/speedtest.cc:741,1
    - Dst: memcpy
      Src: /src/pdns/pdns/speedtest.cc:742,1
    - Dst: string::c_str
      Src: /src/pdns/pdns/speedtest.cc:742,1
    - Dst: string::length
      Src: /src/pdns/pdns/speedtest.cc:742,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 743
      start: 734
    functionDepth: 1
    functionLinenumber: 734
    functionLinenumberEnd: 743
    functionName: operator()() const
    functionSourceFile: /src/pdns/pdns/speedtest.cc
    functionUses: 0
    functionsReached:
    - memcpy
    - string::c_str
    - vector::resize
    - vector::size
    - string::length
    linkageType: ''
    returnType: void
    signature: void operator()() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 752
      start: 749
    functionDepth: 0
    functionLinenumber: 749
    functionLinenumberEnd: 752
    functionName: getName
    functionSourceFile: /src/pdns/pdns/speedtest.cc
    functionUses: 62
    functionsReached: []
    linkageType: ''
    returnType: string
    signature: string getName() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 757
      start: 754
    functionDepth: 0
    functionLinenumber: 754
    functionLinenumberEnd: 757
    functionName: operator()() const
    functionSourceFile: /src/pdns/pdns/speedtest.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void operator()() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 766
      start: 763
    functionDepth: 0
    functionLinenumber: 763
    functionLinenumberEnd: 766
    functionName: getName
    functionSourceFile: /src/pdns/pdns/speedtest.cc
    functionUses: 62
    functionsReached: []
    linkageType: ''
    returnType: string
    signature: string getName() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 771
      start: 768
    functionDepth: 0
    functionLinenumber: 768
    functionLinenumberEnd: 771
    functionName: operator()() const
    functionSourceFile: /src/pdns/pdns/speedtest.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void operator()() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: add
      Src: /src/pdns/pdns/speedtest.cc:779,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 780
      start: 777
    functionDepth: 0
    functionLinenumber: 777
    functionLinenumberEnd: 780
    functionName: SuffixMatchNodeTest
    functionSourceFile: /src/pdns/pdns/speedtest.cc
    functionUses: 0
    functionsReached:
    - add
    linkageType: ''
    returnType: void
    signature: void SuffixMatchNodeTest()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 785
      start: 782
    functionDepth: 0
    functionLinenumber: 782
    functionLinenumberEnd: 785
    functionName: getName
    functionSourceFile: /src/pdns/pdns/speedtest.cc
    functionUses: 62
    functionsReached: []
    linkageType: ''
    returnType: string
    signature: string getName() const
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: check
      Src: /src/pdns/pdns/speedtest.cc:789,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/speedtest.cc:790,1
    - Dst: check
      Src: /src/pdns/pdns/speedtest.cc:792,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/speedtest.cc:793,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 795
      start: 787
    functionDepth: 0
    functionLinenumber: 787
    functionLinenumberEnd: 795
    functionName: operator()() const
    functionSourceFile: /src/pdns/pdns/speedtest.cc
    functionUses: 0
    functionsReached:
    - check
    - std::runtime_error
    linkageType: ''
    returnType: void
    signature: void operator()() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 808
      start: 805
    functionDepth: 0
    functionLinenumber: 805
    functionLinenumberEnd: 808
    functionName: getName
    functionSourceFile: /src/pdns/pdns/speedtest.cc
    functionUses: 62
    functionsReached: []
    linkageType: ''
    returnType: string
    signature: string getName() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns_iequals
      Src: /src/pdns/pdns/speedtest.cc:813,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 814
      start: 810
    functionDepth: 0
    functionLinenumber: 810
    functionLinenumberEnd: 814
    functionName: operator()() const
    functionSourceFile: /src/pdns/pdns/speedtest.cc
    functionUses: 0
    functionsReached:
    - pdns_iequals
    linkageType: ''
    returnType: void
    signature: void operator()() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 823
      start: 820
    functionDepth: 0
    functionLinenumber: 820
    functionLinenumberEnd: 823
    functionName: getName
    functionSourceFile: /src/pdns/pdns/speedtest.cc
    functionUses: 62
    functionsReached: []
    linkageType: ''
    returnType: string
    signature: string getName() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns_iequals
      Src: /src/pdns/pdns/speedtest.cc:828,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 829
      start: 825
    functionDepth: 0
    functionLinenumber: 825
    functionLinenumberEnd: 829
    functionName: operator()() const
    functionSourceFile: /src/pdns/pdns/speedtest.cc
    functionUses: 0
    functionsReached:
    - pdns_iequals
    linkageType: ''
    returnType: void
    signature: void operator()() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 839
      start: 836
    functionDepth: 0
    functionLinenumber: 836
    functionLinenumberEnd: 839
    functionName: getName
    functionSourceFile: /src/pdns/pdns/speedtest.cc
    functionUses: 62
    functionsReached: []
    linkageType: ''
    returnType: string
    signature: string getName() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strcasecmp
      Src: /src/pdns/pdns/speedtest.cc:844,1
    - Dst: string::c_str
      Src: /src/pdns/pdns/speedtest.cc:844,1
    - Dst: c_str
      Src: /src/pdns/pdns/speedtest.cc:844,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 845
      start: 841
    functionDepth: 0
    functionLinenumber: 841
    functionLinenumberEnd: 845
    functionName: operator()() const
    functionSourceFile: /src/pdns/pdns/speedtest.cc
    functionUses: 0
    functionsReached:
    - c_str
    - string::c_str
    - strcasecmp
    linkageType: ''
    returnType: void
    signature: void operator()() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 854
      start: 851
    functionDepth: 0
    functionLinenumber: 851
    functionLinenumberEnd: 854
    functionName: getName
    functionSourceFile: /src/pdns/pdns/speedtest.cc
    functionUses: 62
    functionsReached: []
    linkageType: ''
    returnType: string
    signature: string getName() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Base64Encode
      Src: /src/pdns/pdns/speedtest.cc:859,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 860
      start: 856
    functionDepth: 0
    functionLinenumber: 856
    functionLinenumberEnd: 860
    functionName: operator()() const
    functionSourceFile: /src/pdns/pdns/speedtest.cc
    functionUses: 0
    functionsReached:
    - Base64Encode
    linkageType: ''
    returnType: void
    signature: void operator()() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 869
      start: 866
    functionDepth: 0
    functionLinenumber: 866
    functionLinenumberEnd: 869
    functionName: getName
    functionSourceFile: /src/pdns/pdns/speedtest.cc
    functionUses: 62
    functionsReached: []
    linkageType: ''
    returnType: string
    signature: string getName() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: B64Decode
      Src: /src/pdns/pdns/speedtest.cc:874,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 875
      start: 871
    functionDepth: 0
    functionLinenumber: 871
    functionLinenumberEnd: 875
    functionName: operator()() const
    functionSourceFile: /src/pdns/pdns/speedtest.cc
    functionUses: 0
    functionsReached:
    - B64Decode
    linkageType: ''
    returnType: void
    signature: void operator()() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 884
      start: 881
    functionDepth: 0
    functionLinenumber: 881
    functionLinenumberEnd: 884
    functionName: getName
    functionSourceFile: /src/pdns/pdns/speedtest.cc
    functionUses: 62
    functionsReached: []
    linkageType: ''
    returnType: string
    signature: string getName() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 888
      start: 886
    functionDepth: 0
    functionLinenumber: 886
    functionLinenumberEnd: 888
    functionName: operator()() const
    functionSourceFile: /src/pdns/pdns/speedtest.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void operator()() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - name
    - type
    argTypes:
    - DNSName
    - QType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 894
      start: 894
    functionDepth: 0
    functionLinenumber: 894
    functionLinenumberEnd: 894
    functionName: StatRingDNSNameQTypeToStringTest
    functionSourceFile: /src/pdns/pdns/speedtest.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void StatRingDNSNameQTypeToStringTest(const DNSName &name, const QType
      type)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 896
      start: 896
    functionDepth: 0
    functionLinenumber: 896
    functionLinenumberEnd: 896
    functionName: getName
    functionSourceFile: /src/pdns/pdns/speedtest.cc
    functionUses: 62
    functionsReached: []
    linkageType: ''
    returnType: string
    signature: string getName() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ringAccount
      Src: /src/pdns/pdns/speedtest.cc:899,1
    - Dst: toLogString
      Src: /src/pdns/pdns/speedtest.cc:899,1
    - Dst: toString
      Src: /src/pdns/pdns/speedtest.cc:899,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 900
      start: 898
    functionDepth: 0
    functionLinenumber: 898
    functionLinenumberEnd: 900
    functionName: operator()() const
    functionSourceFile: /src/pdns/pdns/speedtest.cc
    functionUses: 0
    functionsReached:
    - toLogString
    - ringAccount
    - toString
    linkageType: ''
    returnType: void
    signature: void operator()() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - name
    - type
    argTypes:
    - DNSName
    - QType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 908
      start: 908
    functionDepth: 0
    functionLinenumber: 908
    functionLinenumberEnd: 908
    functionName: StatRingDNSNameQTypeTest
    functionSourceFile: /src/pdns/pdns/speedtest.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void StatRingDNSNameQTypeTest(const DNSName &name, const QType type)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 910
      start: 910
    functionDepth: 0
    functionLinenumber: 910
    functionLinenumberEnd: 910
    functionName: getName
    functionSourceFile: /src/pdns/pdns/speedtest.cc
    functionUses: 62
    functionsReached: []
    linkageType: ''
    returnType: string
    signature: string getName() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ringAccount
      Src: /src/pdns/pdns/speedtest.cc:913,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 914
      start: 912
    functionDepth: 0
    functionLinenumber: 912
    functionLinenumberEnd: 914
    functionName: operator()() const
    functionSourceFile: /src/pdns/pdns/speedtest.cc
    functionUses: 0
    functionsReached:
    - ringAccount
    linkageType: ''
    returnType: void
    signature: void operator()() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 923
      start: 923
    functionDepth: 0
    functionLinenumber: 923
    functionLinenumberEnd: 923
    functionName: getName
    functionSourceFile: /src/pdns/pdns/speedtest.cc
    functionUses: 62
    functionsReached: []
    linkageType: ''
    returnType: string
    signature: string getName() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: NetmaskTree::NetmaskTree
      Src: /src/pdns/pdns/speedtest.cc:927,1
    - Dst: NetmaskTree::insert_or_assign
      Src: /src/pdns/pdns/speedtest.cc:930,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 931
      start: 925
    functionDepth: 0
    functionLinenumber: 925
    functionLinenumberEnd: 931
    functionName: operator()() const
    functionSourceFile: /src/pdns/pdns/speedtest.cc
    functionUses: 0
    functionsReached:
    - NetmaskTree::NetmaskTree
    - NetmaskTree::insert_or_assign
    linkageType: ''
    returnType: void
    signature: void operator()() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 936
      start: 936
    functionDepth: 0
    functionLinenumber: 936
    functionLinenumberEnd: 936
    functionName: getName
    functionSourceFile: /src/pdns/pdns/speedtest.cc
    functionUses: 62
    functionsReached: []
    linkageType: ''
    returnType: string
    signature: string getName() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getUniqueID
      Src: /src/pdns/pdns/speedtest.cc:939,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 940
      start: 938
    functionDepth: 0
    functionLinenumber: 938
    functionLinenumberEnd: 940
    functionName: operator()() const
    functionSourceFile: /src/pdns/pdns/speedtest.cc
    functionUses: 0
    functionsReached:
    - getUniqueID
    linkageType: ''
    returnType: void
    signature: void operator()() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/speedtest.cc:945,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - iterations
    - salt
    argTypes:
    - int
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 945
      start: 945
    functionDepth: 0
    functionLinenumber: 945
    functionLinenumberEnd: 945
    functionName: NSEC3HashTest
    functionSourceFile: /src/pdns/pdns/speedtest.cc
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void NSEC3HashTest(int iterations, string salt)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: boost::format
      Src: /src/pdns/pdns/speedtest.cc:949,1
    - Dst: length
      Src: /src/pdns/pdns/speedtest.cc:949,1
    - Dst: str
      Src: /src/pdns/pdns/speedtest.cc:949,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 950
      start: 947
    functionDepth: 0
    functionLinenumber: 947
    functionLinenumberEnd: 950
    functionName: getName
    functionSourceFile: /src/pdns/pdns/speedtest.cc
    functionUses: 62
    functionsReached:
    - length
    - str
    - boost::format
    linkageType: ''
    returnType: string
    signature: string getName() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hashQNameWithSalt
      Src: /src/pdns/pdns/speedtest.cc:954,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 955
      start: 952
    functionDepth: 0
    functionLinenumber: 952
    functionLinenumberEnd: 955
    functionName: operator()() const
    functionSourceFile: /src/pdns/pdns/speedtest.cc
    functionUses: 0
    functionsReached:
    - hashQNameWithSalt
    linkageType: ''
    returnType: void
    signature: void operator()() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 963
      start: 963
    functionDepth: 0
    functionLinenumber: 963
    functionLinenumberEnd: 963
    functionName: getName
    functionSourceFile: /src/pdns/pdns/speedtest.cc
    functionUses: 62
    functionsReached: []
    linkageType: ''
    returnType: string
    signature: string getName() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 970
      start: 965
    functionDepth: 0
    functionLinenumber: 965
    functionLinenumberEnd: 970
    functionName: operator()() const
    functionSourceFile: /src/pdns/pdns/speedtest.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void operator()() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' lock'
    argTypes:
    - ReadWriteLock
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 981
      start: 979
    functionDepth: 0
    functionLinenumber: 979
    functionLinenumberEnd: 981
    functionName: ReadWriteLockSharedTest
    functionSourceFile: /src/pdns/pdns/speedtest.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ReadWriteLockSharedTest(ReadWriteLock& lock)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 983
      start: 983
    functionDepth: 0
    functionLinenumber: 983
    functionLinenumberEnd: 983
    functionName: getName
    functionSourceFile: /src/pdns/pdns/speedtest.cc
    functionUses: 62
    functionsReached: []
    linkageType: ''
    returnType: string
    signature: string getName() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 989
      start: 985
    functionDepth: 0
    functionLinenumber: 985
    functionLinenumberEnd: 989
    functionName: operator()() const
    functionSourceFile: /src/pdns/pdns/speedtest.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void operator()() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' lock'
    argTypes:
    - ReadWriteLock
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 999
      start: 997
    functionDepth: 0
    functionLinenumber: 997
    functionLinenumberEnd: 999
    functionName: ReadWriteLockExclusiveTest
    functionSourceFile: /src/pdns/pdns/speedtest.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ReadWriteLockExclusiveTest(ReadWriteLock& lock)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1001
      start: 1001
    functionDepth: 0
    functionLinenumber: 1001
    functionLinenumberEnd: 1001
    functionName: getName
    functionSourceFile: /src/pdns/pdns/speedtest.cc
    functionUses: 62
    functionsReached: []
    linkageType: ''
    returnType: string
    signature: string getName() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1007
      start: 1003
    functionDepth: 0
    functionLinenumber: 1003
    functionLinenumberEnd: 1007
    functionName: operator()() const
    functionSourceFile: /src/pdns/pdns/speedtest.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void operator()() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - ' lock'
    - contended
    argTypes:
    - ReadWriteLock
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1017
      start: 1015
    functionDepth: 0
    functionLinenumber: 1015
    functionLinenumberEnd: 1017
    functionName: ReadWriteLockExclusiveTryTest
    functionSourceFile: /src/pdns/pdns/speedtest.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ReadWriteLockExclusiveTryTest(ReadWriteLock& lock, bool contended)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::string
      Src: /src/pdns/pdns/speedtest.cc:1019,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1019
      start: 1019
    functionDepth: 0
    functionLinenumber: 1019
    functionLinenumberEnd: 1019
    functionName: getName
    functionSourceFile: /src/pdns/pdns/speedtest.cc
    functionUses: 62
    functionsReached:
    - std::string
    linkageType: ''
    returnType: string
    signature: string getName() const
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: TryWriteLock::gotIt
      Src: /src/pdns/pdns/speedtest.cc:1024,1
    - Dst: _exit
      Src: /src/pdns/pdns/speedtest.cc:1026,1
    - Dst: TryWriteLock::gotIt
      Src: /src/pdns/pdns/speedtest.cc:1028,1
    - Dst: _exit
      Src: /src/pdns/pdns/speedtest.cc:1030,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1033
      start: 1021
    functionDepth: 0
    functionLinenumber: 1021
    functionLinenumberEnd: 1033
    functionName: operator()() const
    functionSourceFile: /src/pdns/pdns/speedtest.cc
    functionUses: 0
    functionsReached:
    - TryWriteLock::gotIt
    - _exit
    linkageType: ''
    returnType: void
    signature: void operator()() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - ' lock'
    - contended
    argTypes:
    - ReadWriteLock
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1044
      start: 1042
    functionDepth: 0
    functionLinenumber: 1042
    functionLinenumberEnd: 1044
    functionName: ReadWriteLockSharedTryTest
    functionSourceFile: /src/pdns/pdns/speedtest.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ReadWriteLockSharedTryTest(ReadWriteLock& lock, bool contended)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::string
      Src: /src/pdns/pdns/speedtest.cc:1046,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1046
      start: 1046
    functionDepth: 0
    functionLinenumber: 1046
    functionLinenumberEnd: 1046
    functionName: getName
    functionSourceFile: /src/pdns/pdns/speedtest.cc
    functionUses: 62
    functionsReached:
    - std::string
    linkageType: ''
    returnType: string
    signature: string getName() const
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: TryReadLock::gotIt
      Src: /src/pdns/pdns/speedtest.cc:1051,1
    - Dst: _exit
      Src: /src/pdns/pdns/speedtest.cc:1053,1
    - Dst: TryReadLock::gotIt
      Src: /src/pdns/pdns/speedtest.cc:1055,1
    - Dst: _exit
      Src: /src/pdns/pdns/speedtest.cc:1057,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1060
      start: 1048
    functionDepth: 0
    functionLinenumber: 1048
    functionLinenumberEnd: 1060
    functionName: operator()() const
    functionSourceFile: /src/pdns/pdns/speedtest.cc
    functionUses: 0
    functionsReached:
    - TryReadLock::gotIt
    - _exit
    linkageType: ''
    returnType: void
    signature: void operator()() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1069
      start: 1069
    functionDepth: 0
    functionLinenumber: 1069
    functionLinenumberEnd: 1069
    functionName: CredentialsHashTest
    functionSourceFile: /src/pdns/pdns/speedtest.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void CredentialsHashTest()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1074
      start: 1071
    functionDepth: 0
    functionLinenumber: 1071
    functionLinenumberEnd: 1074
    functionName: getName
    functionSourceFile: /src/pdns/pdns/speedtest.cc
    functionUses: 62
    functionsReached: []
    linkageType: ''
    returnType: string
    signature: string getName() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hashPassword
      Src: /src/pdns/pdns/speedtest.cc:1078,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1079
      start: 1076
    functionDepth: 0
    functionLinenumber: 1076
    functionLinenumberEnd: 1079
    functionName: operator()() const
    functionSourceFile: /src/pdns/pdns/speedtest.cc
    functionUses: 0
    functionsReached:
    - hashPassword
    linkageType: ''
    returnType: void
    signature: void operator()() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1090
      start: 1087
    functionDepth: 0
    functionLinenumber: 1087
    functionLinenumberEnd: 1090
    functionName: getName
    functionSourceFile: /src/pdns/pdns/speedtest.cc
    functionUses: 62
    functionsReached: []
    linkageType: ''
    returnType: string
    signature: string getName() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dns_random_uint16
      Src: /src/pdns/pdns/speedtest.cc:1094,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1095
      start: 1092
    functionDepth: 0
    functionLinenumber: 1092
    functionLinenumberEnd: 1095
    functionName: operator()() const
    functionSourceFile: /src/pdns/pdns/speedtest.cc
    functionUses: 0
    functionsReached:
    - dns_random_uint16
    linkageType: ''
    returnType: void
    signature: void operator()() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hashPassword
      Src: /src/pdns/pdns/speedtest.cc:1101,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1102
      start: 1100
    functionDepth: 0
    functionLinenumber: 1100
    functionLinenumberEnd: 1102
    functionName: CredentialsVerifyTest
    functionSourceFile: /src/pdns/pdns/speedtest.cc
    functionUses: 0
    functionsReached:
    - hashPassword
    linkageType: ''
    returnType: void
    signature: void CredentialsVerifyTest()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1107
      start: 1104
    functionDepth: 0
    functionLinenumber: 1104
    functionLinenumberEnd: 1107
    functionName: getName
    functionSourceFile: /src/pdns/pdns/speedtest.cc
    functionUses: 62
    functionsReached: []
    linkageType: ''
    returnType: string
    signature: string getName() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: verifyPassword
      Src: /src/pdns/pdns/speedtest.cc:1111,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1112
      start: 1109
    functionDepth: 0
    functionLinenumber: 1109
    functionLinenumberEnd: 1112
    functionName: operator()() const
    functionSourceFile: /src/pdns/pdns/speedtest.cc
    functionUses: 0
    functionsReached:
    - verifyPassword
    linkageType: ''
    returnType: void
    signature: void operator()() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' str'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1121
      start: 1121
    functionDepth: 0
    functionLinenumber: 1121
    functionLinenumberEnd: 1121
    functionName: BurtleHashTest
    functionSourceFile: /src/pdns/pdns/speedtest.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void BurtleHashTest(const string& str)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1126
      start: 1123
    functionDepth: 0
    functionLinenumber: 1123
    functionLinenumberEnd: 1126
    functionName: getName
    functionSourceFile: /src/pdns/pdns/speedtest.cc
    functionUses: 62
    functionsReached: []
    linkageType: ''
    returnType: string
    signature: string getName() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: burtle
      Src: /src/pdns/pdns/speedtest.cc:1130,1
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/speedtest.cc:1130,1
    - Dst: data
      Src: /src/pdns/pdns/speedtest.cc:1130,1
    - Dst: length
      Src: /src/pdns/pdns/speedtest.cc:1130,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1131
      start: 1128
    functionDepth: 0
    functionLinenumber: 1128
    functionLinenumberEnd: 1131
    functionName: operator()() const
    functionSourceFile: /src/pdns/pdns/speedtest.cc
    functionUses: 0
    functionsReached:
    - burtle
    - length
    - reinterpret_cast<const unsigned char*>
    - data
    linkageType: ''
    returnType: void
    signature: void operator()() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' str'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1139
      start: 1139
    functionDepth: 0
    functionLinenumber: 1139
    functionLinenumberEnd: 1139
    functionName: BurtleHashCITest
    functionSourceFile: /src/pdns/pdns/speedtest.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void BurtleHashCITest(const string& str)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1144
      start: 1141
    functionDepth: 0
    functionLinenumber: 1141
    functionLinenumberEnd: 1144
    functionName: getName
    functionSourceFile: /src/pdns/pdns/speedtest.cc
    functionUses: 62
    functionsReached: []
    linkageType: ''
    returnType: string
    signature: string getName() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: burtleCI
      Src: /src/pdns/pdns/speedtest.cc:1148,1
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/speedtest.cc:1148,1
    - Dst: data
      Src: /src/pdns/pdns/speedtest.cc:1148,1
    - Dst: length
      Src: /src/pdns/pdns/speedtest.cc:1148,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1149
      start: 1146
    functionDepth: 0
    functionLinenumber: 1146
    functionLinenumberEnd: 1149
    functionName: operator()() const
    functionSourceFile: /src/pdns/pdns/speedtest.cc
    functionUses: 0
    functionsReached:
    - burtleCI
    - length
    - reinterpret_cast<const unsigned char*>
    - data
    linkageType: ''
    returnType: void
    signature: void operator()() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: crypto_shorthash_keygen
      Src: /src/pdns/pdns/speedtest.cc:1161,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' str'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1162
      start: 1159
    functionDepth: 0
    functionLinenumber: 1159
    functionLinenumberEnd: 1162
    functionName: SipHashTest
    functionSourceFile: /src/pdns/pdns/speedtest.cc
    functionUses: 0
    functionsReached:
    - crypto_shorthash_keygen
    linkageType: ''
    returnType: void
    signature: void SipHashTest(const string& str)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1167
      start: 1164
    functionDepth: 0
    functionLinenumber: 1164
    functionLinenumberEnd: 1167
    functionName: getName
    functionSourceFile: /src/pdns/pdns/speedtest.cc
    functionUses: 62
    functionsReached: []
    linkageType: ''
    returnType: string
    signature: string getName() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: crypto_shorthash
      Src: /src/pdns/pdns/speedtest.cc:1172,1
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/speedtest.cc:1172,1
    - Dst: data
      Src: /src/pdns/pdns/speedtest.cc:1172,1
    - Dst: length
      Src: /src/pdns/pdns/speedtest.cc:1172,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1173
      start: 1169
    functionDepth: 0
    functionLinenumber: 1169
    functionLinenumberEnd: 1173
    functionName: operator()() const
    functionSourceFile: /src/pdns/pdns/speedtest.cc
    functionUses: 0
    functionsReached:
    - length
    - reinterpret_cast<const unsigned char*>
    - crypto_shorthash
    - data
    linkageType: ''
    returnType: void
    signature: void operator()() const
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: reserve
      Src: /src/pdns/pdns/speedtest.cc:1185,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/speedtest.cc:1192,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/speedtest.cc:1192,1
    - Dst: emplace_back
      Src: /src/pdns/pdns/speedtest.cc:1195,1
    - Dst: emplace_back
      Src: /src/pdns/pdns/speedtest.cc:1197,1
    - Dst: std::move
      Src: /src/pdns/pdns/speedtest.cc:1197,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 2
    argNames:
    - howmany
    - dedup
    argTypes:
    - size_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1199
      start: 1183
    functionDepth: 0
    functionLinenumber: 1183
    functionLinenumberEnd: 1199
    functionName: DedupRecordsTest
    functionSourceFile: /src/pdns/pdns/speedtest.cc
    functionUses: 0
    functionsReached:
    - std::move
    - std::to_string
    - reserve
    - DNSRecordContent::make
    - emplace_back
    linkageType: ''
    returnType: void
    signature: void DedupRecordsTest(size_t howmany, bool dedup, bool withdup = false)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::to_string
      Src: /src/pdns/pdns/speedtest.cc:1203,1
    - Dst: std::string
      Src: /src/pdns/pdns/speedtest.cc:1203,1
    - Dst: std::string
      Src: /src/pdns/pdns/speedtest.cc:1204,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1205
      start: 1201
    functionDepth: 0
    functionLinenumber: 1201
    functionLinenumberEnd: 1205
    functionName: getName
    functionSourceFile: /src/pdns/pdns/speedtest.cc
    functionUses: 62
    functionsReached:
    - std::string
    - std::to_string
    linkageType: ''
    returnType: string
    signature: string getName() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pdns::dedupRecords
      Src: /src/pdns/pdns/speedtest.cc:1211,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1213
      start: 1207
    functionDepth: 0
    functionLinenumber: 1207
    functionLinenumberEnd: 1213
    functionName: operator()() const
    functionSourceFile: /src/pdns/pdns/speedtest.cc
    functionUses: 0
    functionsReached:
    - pdns::dedupRecords
    linkageType: ''
    returnType: void
    signature: void operator()() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: reportAllTypes
      Src: /src/pdns/pdns/speedtest.cc:1225,1
    - Dst: doRun
      Src: /src/pdns/pdns/speedtest.cc:1227,1
    - Dst: NOPTest
      Src: /src/pdns/pdns/speedtest.cc:1227,1
    - Dst: doRun
      Src: /src/pdns/pdns/speedtest.cc:1229,1
    - Dst: IEqualsTest
      Src: /src/pdns/pdns/speedtest.cc:1229,1
    - Dst: doRun
      Src: /src/pdns/pdns/speedtest.cc:1230,1
    - Dst: MyIEqualsTest
      Src: /src/pdns/pdns/speedtest.cc:1230,1
    - Dst: doRun
      Src: /src/pdns/pdns/speedtest.cc:1231,1
    - Dst: StrcasecmpTest
      Src: /src/pdns/pdns/speedtest.cc:1231,1
    - Dst: doRun
      Src: /src/pdns/pdns/speedtest.cc:1232,1
    - Dst: Base64EncodeTest
      Src: /src/pdns/pdns/speedtest.cc:1232,1
    - Dst: doRun
      Src: /src/pdns/pdns/speedtest.cc:1233,1
    - Dst: B64DecodeTest
      Src: /src/pdns/pdns/speedtest.cc:1233,1
    - Dst: doRun
      Src: /src/pdns/pdns/speedtest.cc:1235,1
    - Dst: StackMallocTest
      Src: /src/pdns/pdns/speedtest.cc:1235,1
    - Dst: doRun
      Src: /src/pdns/pdns/speedtest.cc:1237,1
    - Dst: EmptyQueryTest
      Src: /src/pdns/pdns/speedtest.cc:1237,1
    - Dst: doRun
      Src: /src/pdns/pdns/speedtest.cc:1238,1
    - Dst: TypicalRefTest
      Src: /src/pdns/pdns/speedtest.cc:1238,1
    - Dst: doRun
      Src: /src/pdns/pdns/speedtest.cc:1239,1
    - Dst: BigRefTest
      Src: /src/pdns/pdns/speedtest.cc:1239,1
    - Dst: doRun
      Src: /src/pdns/pdns/speedtest.cc:1240,1
    - Dst: BigDNSPacketRefTest
      Src: /src/pdns/pdns/speedtest.cc:1240,1
    - Dst: makeEmptyQuery
      Src: /src/pdns/pdns/speedtest.cc:1242,1
    - Dst: doRun
      Src: /src/pdns/pdns/speedtest.cc:1243,1
    - Dst: ParsePacketTest
      Src: /src/pdns/pdns/speedtest.cc:1243,1
    - Dst: makeTypicalReferral
      Src: /src/pdns/pdns/speedtest.cc:1245,1
    - Dst: auto::size
      Src: /src/pdns/pdns/speedtest.cc:1246,1
    - Dst: doRun
      Src: /src/pdns/pdns/speedtest.cc:1247,1
    - Dst: ParsePacketBareTest
      Src: /src/pdns/pdns/speedtest.cc:1247,1
    - Dst: doRun
      Src: /src/pdns/pdns/speedtest.cc:1249,1
    - Dst: ParsePacketTest
      Src: /src/pdns/pdns/speedtest.cc:1249,1
    - Dst: doRun
      Src: /src/pdns/pdns/speedtest.cc:1251,1
    - Dst: SimpleCompressTest
      Src: /src/pdns/pdns/speedtest.cc:1251,1
    - Dst: doRun
      Src: /src/pdns/pdns/speedtest.cc:1254,1
    - Dst: VectorExpandTest
      Src: /src/pdns/pdns/speedtest.cc:1254,1
    - Dst: doRun
      Src: /src/pdns/pdns/speedtest.cc:1256,1
    - Dst: GetTimeTest
      Src: /src/pdns/pdns/speedtest.cc:1256,1
    - Dst: doRun
      Src: /src/pdns/pdns/speedtest.cc:1258,1
    - Dst: GetLockUncontendedTest
      Src: /src/pdns/pdns/speedtest.cc:1258,1
    - Dst: doRun
      Src: /src/pdns/pdns/speedtest.cc:1259,1
    - Dst: GetUniqueLockUncontendedTest
      Src: /src/pdns/pdns/speedtest.cc:1259,1
    - Dst: doRun
      Src: /src/pdns/pdns/speedtest.cc:1260,1
    - Dst: GetLockGuardUncontendedTest
      Src: /src/pdns/pdns/speedtest.cc:1260,1
    - Dst: doRun
      Src: /src/pdns/pdns/speedtest.cc:1261,1
    - Dst: GetLockGuardedUncontendedTest
      Src: /src/pdns/pdns/speedtest.cc:1261,1
    - Dst: doRun
      Src: /src/pdns/pdns/speedtest.cc:1262,1
    - Dst: SharedLockTest
      Src: /src/pdns/pdns/speedtest.cc:1262,1
    - Dst: ReadWriteLock::ReadWriteLock
      Src: /src/pdns/pdns/speedtest.cc:1265,1
    - Dst: doRun
      Src: /src/pdns/pdns/speedtest.cc:1266,1
    - Dst: ReadWriteLockSharedTest
      Src: /src/pdns/pdns/speedtest.cc:1266,1
    - Dst: doRun
      Src: /src/pdns/pdns/speedtest.cc:1267,1
    - Dst: ReadWriteLockExclusiveTest
      Src: /src/pdns/pdns/speedtest.cc:1267,1
    - Dst: doRun
      Src: /src/pdns/pdns/speedtest.cc:1268,1
    - Dst: ReadWriteLockExclusiveTryTest
      Src: /src/pdns/pdns/speedtest.cc:1268,1
    - Dst: doRun
      Src: /src/pdns/pdns/speedtest.cc:1271,1
    - Dst: ReadWriteLockExclusiveTryTest
      Src: /src/pdns/pdns/speedtest.cc:1271,1
    - Dst: doRun
      Src: /src/pdns/pdns/speedtest.cc:1272,1
    - Dst: ReadWriteLockSharedTryTest
      Src: /src/pdns/pdns/speedtest.cc:1272,1
    - Dst: doRun
      Src: /src/pdns/pdns/speedtest.cc:1276,1
    - Dst: ReadWriteLockSharedTryTest
      Src: /src/pdns/pdns/speedtest.cc:1276,1
    - Dst: doRun
      Src: /src/pdns/pdns/speedtest.cc:1280,1
    - Dst: StaticMemberTest
      Src: /src/pdns/pdns/speedtest.cc:1280,1
    - Dst: doRun
      Src: /src/pdns/pdns/speedtest.cc:1282,1
    - Dst: ARecordTest
      Src: /src/pdns/pdns/speedtest.cc:1282,1
    - Dst: doRun
      Src: /src/pdns/pdns/speedtest.cc:1283,1
    - Dst: ARecordTest
      Src: /src/pdns/pdns/speedtest.cc:1283,1
    - Dst: doRun
      Src: /src/pdns/pdns/speedtest.cc:1284,1
    - Dst: ARecordTest
      Src: /src/pdns/pdns/speedtest.cc:1284,1
    - Dst: doRun
      Src: /src/pdns/pdns/speedtest.cc:1285,1
    - Dst: ARecordTest
      Src: /src/pdns/pdns/speedtest.cc:1285,1
    - Dst: doRun
      Src: /src/pdns/pdns/speedtest.cc:1287,1
    - Dst: A2RecordTest
      Src: /src/pdns/pdns/speedtest.cc:1287,1
    - Dst: doRun
      Src: /src/pdns/pdns/speedtest.cc:1288,1
    - Dst: A2RecordTest
      Src: /src/pdns/pdns/speedtest.cc:1288,1
    - Dst: doRun
      Src: /src/pdns/pdns/speedtest.cc:1289,1
    - Dst: A2RecordTest
      Src: /src/pdns/pdns/speedtest.cc:1289,1
    - Dst: doRun
      Src: /src/pdns/pdns/speedtest.cc:1290,1
    - Dst: A2RecordTest
      Src: /src/pdns/pdns/speedtest.cc:1290,1
    - Dst: doRun
      Src: /src/pdns/pdns/speedtest.cc:1292,1
    - Dst: MakeStringFromCharStarTest
      Src: /src/pdns/pdns/speedtest.cc:1292,1
    - Dst: doRun
      Src: /src/pdns/pdns/speedtest.cc:1293,1
    - Dst: MakeARecordTest
      Src: /src/pdns/pdns/speedtest.cc:1293,1
    - Dst: doRun
      Src: /src/pdns/pdns/speedtest.cc:1294,1
    - Dst: MakeARecordTestMM
      Src: /src/pdns/pdns/speedtest.cc:1294,1
    - Dst: doRun
      Src: /src/pdns/pdns/speedtest.cc:1296,1
    - Dst: AAAARecordTest
      Src: /src/pdns/pdns/speedtest.cc:1296,1
    - Dst: doRun
      Src: /src/pdns/pdns/speedtest.cc:1297,1
    - Dst: AAAARecordTest
      Src: /src/pdns/pdns/speedtest.cc:1297,1
    - Dst: doRun
      Src: /src/pdns/pdns/speedtest.cc:1298,1
    - Dst: AAAARecordTest
      Src: /src/pdns/pdns/speedtest.cc:1298,1
    - Dst: doRun
      Src: /src/pdns/pdns/speedtest.cc:1299,1
    - Dst: AAAARecordTest
      Src: /src/pdns/pdns/speedtest.cc:1299,1
    - Dst: doRun
      Src: /src/pdns/pdns/speedtest.cc:1301,1
    - Dst: TXTRecordTest
      Src: /src/pdns/pdns/speedtest.cc:1301,1
    - Dst: doRun
      Src: /src/pdns/pdns/speedtest.cc:1302,1
    - Dst: TXTRecordTest
      Src: /src/pdns/pdns/speedtest.cc:1302,1
    - Dst: doRun
      Src: /src/pdns/pdns/speedtest.cc:1303,1
    - Dst: TXTRecordTest
      Src: /src/pdns/pdns/speedtest.cc:1303,1
    - Dst: doRun
      Src: /src/pdns/pdns/speedtest.cc:1304,1
    - Dst: TXTRecordTest
      Src: /src/pdns/pdns/speedtest.cc:1304,1
    - Dst: doRun
      Src: /src/pdns/pdns/speedtest.cc:1306,1
    - Dst: GenericRecordTest
      Src: /src/pdns/pdns/speedtest.cc:1306,1
    - Dst: doRun
      Src: /src/pdns/pdns/speedtest.cc:1307,1
    - Dst: GenericRecordTest
      Src: /src/pdns/pdns/speedtest.cc:1307,1
    - Dst: doRun
      Src: /src/pdns/pdns/speedtest.cc:1308,1
    - Dst: GenericRecordTest
      Src: /src/pdns/pdns/speedtest.cc:1308,1
    - Dst: doRun
      Src: /src/pdns/pdns/speedtest.cc:1309,1
    - Dst: GenericRecordTest
      Src: /src/pdns/pdns/speedtest.cc:1309,1
    - Dst: doRun
      Src: /src/pdns/pdns/speedtest.cc:1311,1
    - Dst: SOARecordTest
      Src: /src/pdns/pdns/speedtest.cc:1311,1
    - Dst: doRun
      Src: /src/pdns/pdns/speedtest.cc:1312,1
    - Dst: SOARecordTest
      Src: /src/pdns/pdns/speedtest.cc:1312,1
    - Dst: doRun
      Src: /src/pdns/pdns/speedtest.cc:1313,1
    - Dst: SOARecordTest
      Src: /src/pdns/pdns/speedtest.cc:1313,1
    - Dst: doRun
      Src: /src/pdns/pdns/speedtest.cc:1314,1
    - Dst: SOARecordTest
      Src: /src/pdns/pdns/speedtest.cc:1314,1
    - Dst: doRun
      Src: /src/pdns/pdns/speedtest.cc:1316,1
    - Dst: StringtokTest
      Src: /src/pdns/pdns/speedtest.cc:1316,1
    - Dst: doRun
      Src: /src/pdns/pdns/speedtest.cc:1317,1
    - Dst: VStringtokTest
      Src: /src/pdns/pdns/speedtest.cc:1317,1
    - Dst: doRun
      Src: /src/pdns/pdns/speedtest.cc:1318,1
    - Dst: StringAppendTest
      Src: /src/pdns/pdns/speedtest.cc:1318,1
    - Dst: doRun
      Src: /src/pdns/pdns/speedtest.cc:1319,1
    - Dst: BoostStringAppendTest
      Src: /src/pdns/pdns/speedtest.cc:1319,1
    - Dst: doRun
      Src: /src/pdns/pdns/speedtest.cc:1321,1
    - Dst: DNSNameParseTest
      Src: /src/pdns/pdns/speedtest.cc:1321,1
    - Dst: doRun
      Src: /src/pdns/pdns/speedtest.cc:1322,1
    - Dst: DNSNameRootTest
      Src: /src/pdns/pdns/speedtest.cc:1322,1
    - Dst: doRun
      Src: /src/pdns/pdns/speedtest.cc:1324,1
    - Dst: SuffixMatchNodeTest
      Src: /src/pdns/pdns/speedtest.cc:1324,1
    - Dst: doRun
      Src: /src/pdns/pdns/speedtest.cc:1326,1
    - Dst: NetmaskTreeTest
      Src: /src/pdns/pdns/speedtest.cc:1326,1
    - Dst: doRun
      Src: /src/pdns/pdns/speedtest.cc:1328,1
    - Dst: UUIDGenTest
      Src: /src/pdns/pdns/speedtest.cc:1328,1
    - Dst: doRun
      Src: /src/pdns/pdns/speedtest.cc:1330,1
    - Dst: RndSpeedTest
      Src: /src/pdns/pdns/speedtest.cc:1330,1
    - Dst: doRun
      Src: /src/pdns/pdns/speedtest.cc:1332,1
    - Dst: NSEC3HashTest
      Src: /src/pdns/pdns/speedtest.cc:1332,1
    - Dst: doRun
      Src: /src/pdns/pdns/speedtest.cc:1333,1
    - Dst: NSEC3HashTest
      Src: /src/pdns/pdns/speedtest.cc:1333,1
    - Dst: doRun
      Src: /src/pdns/pdns/speedtest.cc:1334,1
    - Dst: NSEC3HashTest
      Src: /src/pdns/pdns/speedtest.cc:1334,1
    - Dst: doRun
      Src: /src/pdns/pdns/speedtest.cc:1335,1
    - Dst: NSEC3HashTest
      Src: /src/pdns/pdns/speedtest.cc:1335,1
    - Dst: doRun
      Src: /src/pdns/pdns/speedtest.cc:1336,1
    - Dst: NSEC3HashTest
      Src: /src/pdns/pdns/speedtest.cc:1336,1
    - Dst: doRun
      Src: /src/pdns/pdns/speedtest.cc:1338,1
    - Dst: NSEC3HashTest
      Src: /src/pdns/pdns/speedtest.cc:1338,1
    - Dst: doRun
      Src: /src/pdns/pdns/speedtest.cc:1339,1
    - Dst: NSEC3HashTest
      Src: /src/pdns/pdns/speedtest.cc:1339,1
    - Dst: doRun
      Src: /src/pdns/pdns/speedtest.cc:1340,1
    - Dst: NSEC3HashTest
      Src: /src/pdns/pdns/speedtest.cc:1340,1
    - Dst: doRun
      Src: /src/pdns/pdns/speedtest.cc:1341,1
    - Dst: NSEC3HashTest
      Src: /src/pdns/pdns/speedtest.cc:1341,1
    - Dst: doRun
      Src: /src/pdns/pdns/speedtest.cc:1342,1
    - Dst: NSEC3HashTest
      Src: /src/pdns/pdns/speedtest.cc:1342,1
    - Dst: doRun
      Src: /src/pdns/pdns/speedtest.cc:1345,1
    - Dst: CredentialsHashTest
      Src: /src/pdns/pdns/speedtest.cc:1345,1
    - Dst: doRun
      Src: /src/pdns/pdns/speedtest.cc:1346,1
    - Dst: CredentialsVerifyTest
      Src: /src/pdns/pdns/speedtest.cc:1346,1
    - Dst: doRings
      Src: /src/pdns/pdns/speedtest.cc:1350,1
    - Dst: declareRing
      Src: /src/pdns/pdns/speedtest.cc:1352,1
    - Dst: doRun
      Src: /src/pdns/pdns/speedtest.cc:1353,1
    - Dst: StatRingDNSNameQTypeToStringTest
      Src: /src/pdns/pdns/speedtest.cc:1353,1
    - Dst: DNSName
      Src: /src/pdns/pdns/speedtest.cc:1353,1
    - Dst: QType
      Src: /src/pdns/pdns/speedtest.cc:1353,1
    - Dst: declareDNSNameQTypeRing
      Src: /src/pdns/pdns/speedtest.cc:1355,1
    - Dst: doRun
      Src: /src/pdns/pdns/speedtest.cc:1356,1
    - Dst: StatRingDNSNameQTypeTest
      Src: /src/pdns/pdns/speedtest.cc:1356,1
    - Dst: DNSName
      Src: /src/pdns/pdns/speedtest.cc:1356,1
    - Dst: QType
      Src: /src/pdns/pdns/speedtest.cc:1356,1
    - Dst: doRun
      Src: /src/pdns/pdns/speedtest.cc:1359,1
    - Dst: BurtleHashTest
      Src: /src/pdns/pdns/speedtest.cc:1359,1
    - Dst: doRun
      Src: /src/pdns/pdns/speedtest.cc:1360,1
    - Dst: BurtleHashCITest
      Src: /src/pdns/pdns/speedtest.cc:1360,1
    - Dst: doRun
      Src: /src/pdns/pdns/speedtest.cc:1362,1
    - Dst: SipHashTest
      Src: /src/pdns/pdns/speedtest.cc:1362,1
    - Dst: doRun
      Src: /src/pdns/pdns/speedtest.cc:1364,1
    - Dst: DedupRecordsTest
      Src: /src/pdns/pdns/speedtest.cc:1364,1
    - Dst: doRun
      Src: /src/pdns/pdns/speedtest.cc:1365,1
    - Dst: DedupRecordsTest
      Src: /src/pdns/pdns/speedtest.cc:1365,1
    - Dst: doRun
      Src: /src/pdns/pdns/speedtest.cc:1366,1
    - Dst: DedupRecordsTest
      Src: /src/pdns/pdns/speedtest.cc:1366,1
    - Dst: doRun
      Src: /src/pdns/pdns/speedtest.cc:1367,1
    - Dst: DedupRecordsTest
      Src: /src/pdns/pdns/speedtest.cc:1367,1
    - Dst: doRun
      Src: /src/pdns/pdns/speedtest.cc:1368,1
    - Dst: DedupRecordsTest
      Src: /src/pdns/pdns/speedtest.cc:1368,1
    - Dst: doRun
      Src: /src/pdns/pdns/speedtest.cc:1369,1
    - Dst: DedupRecordsTest
      Src: /src/pdns/pdns/speedtest.cc:1369,1
    - Dst: doRun
      Src: /src/pdns/pdns/speedtest.cc:1370,1
    - Dst: DedupRecordsTest
      Src: /src/pdns/pdns/speedtest.cc:1370,1
    - Dst: doRun
      Src: /src/pdns/pdns/speedtest.cc:1371,1
    - Dst: DedupRecordsTest
      Src: /src/pdns/pdns/speedtest.cc:1371,1
    - Dst: doRun
      Src: /src/pdns/pdns/speedtest.cc:1372,1
    - Dst: DedupRecordsTest
      Src: /src/pdns/pdns/speedtest.cc:1372,1
    - Dst: what
      Src: /src/pdns/pdns/speedtest.cc:1377,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 109
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1382
      start: 1222
    functionDepth: 1
    functionLinenumber: 1222
    functionLinenumberEnd: 1382
    functionName: main
    functionSourceFile: /src/pdns/pdns/speedtest.cc
    functionUses: 27
    functionsReached:
    - GenericRecordTest
    - GetLockUncontendedTest
    - SuffixMatchNodeTest
    - CredentialsHashTest
    - NOPTest
    - declareRing
    - StaticMemberTest
    - ParsePacketTest
    - SOARecordTest
    - StatRingDNSNameQTypeTest
    - BigDNSPacketRefTest
    - StatRingDNSNameQTypeToStringTest
    - makeEmptyQuery
    - VectorExpandTest
    - B64DecodeTest
    - MakeARecordTestMM
    - ReadWriteLockSharedTryTest
    - StrcasecmpTest
    - GetTimeTest
    - IEqualsTest
    - auto::size
    - DNSNameRootTest
    - BurtleHashCITest
    - DedupRecordsTest
    - RndSpeedTest
    - reportAllTypes
    - TypicalRefTest
    - ReadWriteLockSharedTest
    - MyIEqualsTest
    - QType
    - NSEC3HashTest
    - GetLockGuardedUncontendedTest
    - BurtleHashTest
    - ParsePacketBareTest
    - GetLockGuardUncontendedTest
    - BigRefTest
    - VStringtokTest
    - SharedLockTest
    - ARecordTest
    - Base64EncodeTest
    - BoostStringAppendTest
    - CredentialsVerifyTest
    - DNSName
    - ReadWriteLockExclusiveTest
    - declareDNSNameQTypeRing
    - GetUniqueLockUncontendedTest
    - StackMallocTest
    - StringAppendTest
    - MakeStringFromCharStarTest
    - doRun
    - ReadWriteLockExclusiveTryTest
    - TXTRecordTest
    - A2RecordTest
    - SipHashTest
    - ReadWriteLock::ReadWriteLock
    - AAAARecordTest
    - what
    - makeTypicalReferral
    - MakeARecordTest
    - StringtokTest
    - doRings
    - DNSNameParseTest
    - SimpleCompressTest
    - NetmaskTreeTest
    - EmptyQueryTest
    - UUIDGenTest
    linkageType: ''
    returnType: int
    signature: int main()
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:55,1
    - Dst: UeberBackend*::lookup
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:56,1
    - Dst: QType
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:56,1
    - Dst: UeberBackend*::get
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:57,1
    - Dst: set::insert
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:58,1
    - Dst: getRR
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:58,1
    - Dst: FindNS::lookup
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:61,1
    - Dst: vector::empty
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:62,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:63,1
    - Dst: info
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:64,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:64,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:64,1
    - Dst: AddressIsUs
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:69,1
    - Dst: match
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:70,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:71,1
    - Dst: info
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:72,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:72,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:72,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:72,1
    - Dst: set::insert
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:75,1
    - Dst: ComboAddress::toStringWithPort
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:75,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:83,1
    - Dst: info
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:84,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:84,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:84,1
    - Dst: add
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:85,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:91,1
    - Dst: error
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:92,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:92,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:96,1
    - Dst: what
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:96,1
    - Dst: error
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:97,1
    - Dst: what
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:97,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:97,1
    - Dst: UeberBackend*::alsoNotifies
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:102,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:107,1
    - Dst: ComboAddress::toStringWithPort
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:107,1
    - Dst: info
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:108,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:108,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:108,1
    - Dst: ComboAddress::toStringWithPort
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:108,1
    - Dst: set::count
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:109,1
    - Dst: ComboAddress::toStringWithPort
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:109,1
    - Dst: set::insert
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:110,1
    - Dst: ComboAddress::toStringWithPort
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:110,1
    - Dst: add
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:111,1
    - Dst: ComboAddress::toStringWithPort
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:111,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:116,1
    - Dst: error
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:117,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:117,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:122,1
    - Dst: info
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:123,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:123,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 46
    argCount: 2
    argNames:
    - ' di'
    - B
    argTypes:
    - DomainInfo
    - UeberBackend*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 125
      start: 46
    functionDepth: 1
    functionLinenumber: 46
    functionLinenumberEnd: 125
    functionName: CommunicatorClass::queueNotifyDomain
    functionSourceFile: /src/pdns/pdns/auth-primarycommunicator.cc
    functionUses: 0
    functionsReached:
    - add
    - error
    - UeberBackend*::lookup
    - set::insert
    - SLOG
    - Logging::Loggable
    - QType
    - size
    - UeberBackend*::get
    - match
    - UeberBackend*::alsoNotifies
    - FindNS::lookup
    - AddressIsUs
    - vector::empty
    - ComboAddress::toStringWithPort
    - getRR
    - what
    - info
    - set::count
    linkageType: ''
    returnType: void
    signature: void CommunicatorClass::queueNotifyDomain(const DomainInfo& di, UeberBackend*
      B)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: UeberBackend*::getDomainInfo
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:130,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:131,1
    - Dst: info
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:132,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:132,1
    - Dst: CommunicatorClass::queueNotifyDomain
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:135,1
    - Dst: DomainInfo::backend::setNotified
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:138,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - ' domain'
    - ueber
    argTypes:
    - ZoneName
    - UeberBackend*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 141
      start: 127
    functionDepth: 2
    functionLinenumber: 127
    functionLinenumberEnd: 141
    functionName: CommunicatorClass::notifyDomain
    functionSourceFile: /src/pdns/pdns/auth-primarycommunicator.cc
    functionUses: 2
    functionsReached:
    - SLOG
    - Logging::Loggable
    - DomainInfo::backend::setNotified
    - info
    - CommunicatorClass::queueNotifyDomain
    - UeberBackend*::getDomainInfo
    linkageType: ''
    returnType: bool
    signature: bool CommunicatorClass::notifyDomain(const ZoneName& domain, UeberBackend*
      ueber)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 149
      start: 143
    functionDepth: 0
    functionLinenumber: 143
    functionLinenumberEnd: 149
    functionName: NotificationQueue::dump
    functionSourceFile: /src/pdns/pdns/auth-primarycommunicator.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void NotificationQueue::dump()
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: count
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:156,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:157,1
    - Dst: info
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:158,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:158,1
    - Dst: UeberBackend*::getDomainMetadata
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:162,1
    - Dst: std::string::clear
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:163,1
    - Dst: Base64Encode
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:166,1
    - Dst: second::digest
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:166,1
    - Dst: UeberBackend*::getDomainInfo
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:169,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:171,1
    - Dst: info
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:172,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:172,1
    - Dst: UeberBackend*::getSOAUncached
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:178,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:179,1
    - Dst: info
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:180,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:180,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:188,1
    - Dst: info
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:189,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:189,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:189,1
    - Dst: UeberBackend*::setDomainMetadata
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:191,1
    - Dst: makeIncreasedSOARecord
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:194,1
    - Dst: DomainInfo::backend::startTransaction
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:195,1
    - Dst: DomainInfo::backend::replaceRRSet
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:196,1
    - Dst: DomainInfo::backend::abortTransaction
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:197,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:198,1
    - Dst: SOAData::zonename::toLogString
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:198,1
    - Dst: DomainInfo::backend::commitTransaction
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:200,1
    - Dst: emplace_back
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:202,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 36
    argCount: 4
    argNames:
    - B
    - ' domains'
    - ' catalogs'
    - ' catalogHashes'
    argTypes:
    - UeberBackend*
    - vector<DomainInfo>
    - std::unordered_set<DNSName>
    - CatalogHashMap
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 206
      start: 151
    functionDepth: 4
    functionLinenumber: 151
    functionLinenumberEnd: 206
    functionName: CommunicatorClass::getUpdatedProducers
    functionSourceFile: /src/pdns/pdns/auth-primarycommunicator.cc
    functionUses: 0
    functionsReached:
    - PDNSException
    - DomainInfo::backend::replaceRRSet
    - UeberBackend*::getSOAUncached
    - UeberBackend*::setDomainMetadata
    - DomainInfo::backend::startTransaction
    - emplace_back
    - SLOG
    - Logging::Loggable
    - UeberBackend*::getDomainInfo
    - UeberBackend*::getDomainMetadata
    - DomainInfo::backend::commitTransaction
    - std::string::clear
    - SOAData::zonename::toLogString
    - makeIncreasedSOARecord
    - DomainInfo::backend::abortTransaction
    - second::digest
    - count
    - info
    - Base64Encode
    linkageType: ''
    returnType: void
    signature: void CommunicatorClass::getUpdatedProducers(UeberBackend* B, vector<DomainInfo>&
      domains, const std::unordered_set<DNSName>& catalogs, CatalogHashMap& catalogHashes)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: arg
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:210,1
    - Dst: PacketHandler*::getBackend
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:213,1
    - Dst: UeberBackend*::getUpdatedPrimaries
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:217,1
    - Dst: CommunicatorClass::getUpdatedProducers
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:218,1
    - Dst: vector::empty
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:220,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:221,1
    - Dst: info
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:222,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:225,1
    - Dst: vector::size
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:225,1
    - Dst: addS
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:225,1
    - Dst: vector::size
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:225,1
    - Dst: addS
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:225,1
    - Dst: vector::size
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:225,1
    - Dst: info
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:226,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:226,1
    - Dst: vector::size
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:226,1
    - Dst: purgeAuthCachesExact
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:232,1
    - Dst: add
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:233,1
    - Dst: CommunicatorClass::queueNotifyDomain
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:234,1
    - Dst: backend::setNotified
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:235,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 1
    argNames:
    - P
    argTypes:
    - PacketHandler*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 237
      start: 208
    functionDepth: 5
    functionLinenumber: 208
    functionLinenumberEnd: 237
    functionName: CommunicatorClass::primaryUpdateCheck
    functionSourceFile: /src/pdns/pdns/auth-primarycommunicator.cc
    functionUses: 1
    functionsReached:
    - add
    - SLOG
    - addS
    - UeberBackend*::getUpdatedPrimaries
    - purgeAuthCachesExact
    - Logging::Loggable
    - CommunicatorClass::getUpdatedProducers
    - info
    - backend::setNotified
    - vector::empty
    - PacketHandler*::getBackend
    - CommunicatorClass::queueNotifyDomain
    - vector::size
    - arg
    linkageType: ''
    returnType: void
    signature: void CommunicatorClass::primaryUpdateCheck(PacketHandler* P)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: PacketHandler*::getBackend
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:241,1
    - Dst: waitForMultiData
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:248,1
    - Dst: recvfrom
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:250,1
    - Dst: DNSPacket::setRemote
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:256,1
    - Dst: DNSPacket::parse
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:258,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:259,1
    - Dst: DNSPacket::getRemote
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:259,1
    - Dst: info
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:260,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:260,1
    - Dst: DNSPacket::getRemote
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:260,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:265,1
    - Dst: ComboAddress::toStringWithPort
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:265,1
    - Dst: RCode::to_s
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:265,1
    - Dst: error
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:266,1
    - Dst: RCode::to_s
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:266,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:266,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:266,1
    - Dst: ComboAddress::toStringWithPort
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:266,1
    - Dst: removeIf
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:269,1
    - Dst: ZoneName
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:269,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:270,1
    - Dst: ComboAddress::toStringWithPort
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:270,1
    - Dst: RCode::to_s
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:270,1
    - Dst: info
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:271,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:271,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:271,1
    - Dst: ComboAddress::toStringWithPort
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:271,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:271,1
    - Dst: RCode::to_s
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:271,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:274,1
    - Dst: ComboAddress::toStringWithPort
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:274,1
    - Dst: info
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:275,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:275,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:275,1
    - Dst: ComboAddress::toStringWithPort
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:275,1
    - Dst: dump
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:277,1
    - Dst: ZoneName::ZoneName
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:283,1
    - Dst: getOne
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:288,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:293,1
    - Dst: ComboAddress::toStringWithPort
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:293,1
    - Dst: info
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:294,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:294,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:294,1
    - Dst: ComboAddress::toStringWithPort
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:294,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:294,1
    - Dst: removeIf
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:295,1
    - Dst: AddressIsUs
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:298,1
    - Dst: CommunicatorClass::sendNotification
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:302,1
    - Dst: CommunicatorClass::drillHole
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:303,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:306,1
    - Dst: error
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:307,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:307,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:307,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:311,1
    - Dst: info
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:312,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:312,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:312,1
    - Dst: earliest
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:316,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 41
    argCount: 1
    argNames:
    - P
    argTypes:
    - PacketHandler*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 317
      start: 239
    functionDepth: 3
    functionLinenumber: 239
    functionLinenumberEnd: 317
    functionName: CommunicatorClass::doNotifications
    functionSourceFile: /src/pdns/pdns/auth-primarycommunicator.cc
    functionUses: 1
    functionsReached:
    - getOne
    - RCode::to_s
    - error
    - SLOG
    - Logging::Loggable
    - recvfrom
    - CommunicatorClass::drillHole
    - DNSPacket::parse
    - DNSPacket::setRemote
    - waitForMultiData
    - earliest
    - dump
    - AddressIsUs
    - removeIf
    - ComboAddress::toStringWithPort
    - CommunicatorClass::sendNotification
    - ZoneName::ZoneName
    - info
    - PacketHandler*::getBackend
    - DNSPacket::getRemote
    - ZoneName
    linkageType: ''
    returnType: time_t
    signature: time_t CommunicatorClass::doNotifications(PacketHandler* P)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: DNSName::DNSName
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:322,1
    - Dst: DNSName::DNSName
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:323,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:327,1
    - Dst: UeberBackend*::getDomainMetadata
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:327,1
    - Dst: vector::empty
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:327,1
    - Dst: DNSName
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:328,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:333,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:334,1
    - Dst: DNSName::empty
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:336,1
    - Dst: UeberBackend*::getTSIGKey
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:337,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:338,1
    - Dst: info
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:339,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:339,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:339,1
    - Dst: TSIGRecordContent::TSIGRecordContent
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:342,1
    - Dst: std::move
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:347,1
    - Dst: time
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:349,1
    - Dst: ntohs
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:351,1
    - Dst: B64Decode
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:353,1
    - Dst: SLOG
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:354,1
    - Dst: info
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:355,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:355,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:355,1
    - Dst: addTSIG
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:358,1
    - Dst: sendto
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:361,1
    - Dst: vector::size
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:361,1
    - Dst: getSocklen
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:361,1
    - Dst: ResolverException
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:362,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:362,1
    - Dst: stringerror
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:362,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 29
    argCount: 5
    argNames:
    - sock
    - ' domain'
    - ' remote'
    - notificationId
    - ueber
    argTypes:
    - int
    - ZoneName
    - ComboAddress
    - uint16_t
    - UeberBackend*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 364
      start: 319
    functionDepth: 1
    functionLinenumber: 319
    functionLinenumberEnd: 364
    functionName: CommunicatorClass::sendNotification
    functionSourceFile: /src/pdns/pdns/auth-primarycommunicator.cc
    functionUses: 1
    functionsReached:
    - ntohs
    - stringerror
    - TSIGRecordContent::TSIGRecordContent
    - SLOG
    - Logging::Loggable
    - time
    - B64Decode
    - DNSPacketWriter::getHeader
    - ResolverException
    - UeberBackend*::getDomainMetadata
    - DNSName::DNSName
    - DNSName
    - vector::empty
    - DNSName::empty
    - getSocklen
    - toStringWithPort
    - arg
    - std::move
    - addTSIG
    - info
    - UeberBackend*::getTSIGKey
    - sendto
    - vector::size
    linkageType: ''
    returnType: void
    signature: void CommunicatorClass::sendNotification(int sock, const ZoneName&
      domain, const ComboAddress& remote, uint16_t notificationId, UeberBackend* ueber)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:368,1
    - Dst: pair
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:368,1
    - Dst: time
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:368,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' domain'
    - ' ipAddress'
    argTypes:
    - ZoneName
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 369
      start: 366
    functionDepth: 0
    functionLinenumber: 366
    functionLinenumberEnd: 369
    functionName: CommunicatorClass::drillHole
    functionSourceFile: /src/pdns/pdns/auth-primarycommunicator.cc
    functionUses: 1
    functionsReached:
    - time
    - pair
    - lock
    linkageType: ''
    returnType: void
    signature: void CommunicatorClass::drillHole(const ZoneName& domain, const string&
      ipAddress)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:373,1
    - Dst: auto::find
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:374,1
    - Dst: pair
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:374,1
    - Dst: auto::end
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:375,1
    - Dst: time
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:380,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - ' domain'
    - ' ipAddress'
    argTypes:
    - ZoneName
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 387
      start: 371
    functionDepth: 0
    functionLinenumber: 371
    functionLinenumberEnd: 387
    functionName: CommunicatorClass::justNotified
    functionSourceFile: /src/pdns/pdns/auth-primarycommunicator.cc
    functionUses: 1
    functionsReached:
    - time
    - lock
    - auto::end
    - auto::find
    - pair
    linkageType: ''
    returnType: bool
    signature: bool CommunicatorClass::justNotified(const ZoneName& domain, const
      string& ipAddress)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pdns::isQueryLocalAddressFamilyEnabled
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:391,1
    - Dst: makeQuerySocket
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:392,1
    - Dst: pdns::getQueryLocalAddress
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:392,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:392,1
    - Dst: pdns::isQueryLocalAddressFamilyEnabled
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:397,1
    - Dst: makeQuerySocket
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:398,1
    - Dst: pdns::getQueryLocalAddress
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:398,1
    - Dst: arg
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:398,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 403
      start: 389
    functionDepth: 0
    functionLinenumber: 389
    functionLinenumberEnd: 403
    functionName: CommunicatorClass::makeNotifySockets
    functionSourceFile: /src/pdns/pdns/auth-primarycommunicator.cc
    functionUses: 1
    functionsReached:
    - makeQuerySocket
    - pdns::getQueryLocalAddress
    - pdns::isQueryLocalAddressFamilyEnabled
    - arg
    linkageType: ''
    returnType: void
    signature: void CommunicatorClass::makeNotifySockets()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: add
      Src: /src/pdns/pdns/auth-primarycommunicator.cc:407,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' domain'
    - ' ipAddress'
    argTypes:
    - ZoneName
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 408
      start: 405
    functionDepth: 0
    functionLinenumber: 405
    functionLinenumberEnd: 408
    functionName: CommunicatorClass::notify
    functionSourceFile: /src/pdns/pdns/auth-primarycommunicator.cc
    functionUses: 1
    functionsReached:
    - add
    linkageType: ''
    returnType: void
    signature: void CommunicatorClass::notify(const ZoneName& domain, const string&
      ipAddress)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: runtime_error
      Src: /src/pdns/pdns/iputils.cc:40,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - ' error'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 38
    functionDepth: 0
    functionLinenumber: 38
    functionLinenumberEnd: 41
    functionName: RuntimeError
    functionSourceFile: /src/pdns/pdns/iputils.cc
    functionUses: 0
    functionsReached:
    - runtime_error
    linkageType: ''
    returnType: void
    signature: void RuntimeError(const std::string& error)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: NetworkError
      Src: /src/pdns/pdns/iputils.cc:45,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - ' error'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 46
    functionName: NetworkErr
    functionSourceFile: /src/pdns/pdns/iputils.cc
    functionUses: 0
    functionsReached:
    - NetworkError
    linkageType: ''
    returnType: void
    signature: void NetworkErr(const std::string& error)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: socket
      Src: /src/pdns/pdns/iputils.cc:50,1
    - Dst: RuntimeError
      Src: /src/pdns/pdns/iputils.cc:52,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/iputils.cc:52,1
    - Dst: stringerror
      Src: /src/pdns/pdns/iputils.cc:52,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - family
    - type
    - flags
    argTypes:
    - int
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 48
    functionDepth: 0
    functionLinenumber: 48
    functionLinenumberEnd: 55
    functionName: SSocket
    functionSourceFile: /src/pdns/pdns/iputils.cc
    functionUses: 3
    functionsReached:
    - socket
    - stringerror
    - RuntimeError
    - std::to_string
    linkageType: ''
    returnType: int
    signature: int SSocket(int family, int type, int flags)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: doConnect
      Src: /src/pdns/pdns/iputils.cc:79,1
    - Dst: RuntimeError
      Src: /src/pdns/pdns/iputils.cc:82,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/iputils.cc:82,1
    - Dst: stringerror
      Src: /src/pdns/pdns/iputils.cc:82,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - sockfd
    - fastopen
    - ' remote'
    argTypes:
    - int
    - bool
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 77
    functionDepth: 0
    functionLinenumber: 77
    functionLinenumberEnd: 85
    functionName: SConnect
    functionSourceFile: /src/pdns/pdns/iputils.cc
    functionUses: 0
    functionsReached:
    - RuntimeError
    - stringerror
    - toStringWithPort
    - doConnect
    linkageType: ''
    returnType: int
    signature: int SConnect(int sockfd, bool fastopen, const ComboAddress& remote)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: doConnect
      Src: /src/pdns/pdns/iputils.cc:89,1
    - Dst: waitForRWData
      Src: /src/pdns/pdns/iputils.cc:100,1
    - Dst: getsockopt
      Src: /src/pdns/pdns/iputils.cc:105,1
    - Dst: NetworkErr
      Src: /src/pdns/pdns/iputils.cc:106,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/iputils.cc:106,1
    - Dst: stringerror
      Src: /src/pdns/pdns/iputils.cc:106,1
    - Dst: NetworkErr
      Src: /src/pdns/pdns/iputils.cc:109,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/iputils.cc:109,1
    - Dst: NetworkErr
      Src: /src/pdns/pdns/iputils.cc:113,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/iputils.cc:113,1
    - Dst: NetworkErr
      Src: /src/pdns/pdns/iputils.cc:118,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/iputils.cc:118,1
    - Dst: NetworkErr
      Src: /src/pdns/pdns/iputils.cc:122,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/iputils.cc:122,1
    - Dst: stringerror
      Src: /src/pdns/pdns/iputils.cc:122,1
    - Dst: NetworkErr
      Src: /src/pdns/pdns/iputils.cc:126,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/iputils.cc:126,1
    - Dst: stringerror
      Src: /src/pdns/pdns/iputils.cc:126,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 32
    argCount: 4
    argNames:
    - sockfd
    - fastopen
    - ' remote'
    - ' timeout'
    argTypes:
    - int
    - bool
    - ComboAddress
    - struct timeval
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 131
      start: 87
    functionDepth: 0
    functionLinenumber: 87
    functionLinenumberEnd: 131
    functionName: SConnectWithTimeout
    functionSourceFile: /src/pdns/pdns/iputils.cc
    functionUses: 3
    functionsReached:
    - getsockopt
    - stringerror
    - toStringWithPort
    - waitForRWData
    - NetworkErr
    - doConnect
    linkageType: ''
    returnType: int
    signature: int SConnectWithTimeout(int sockfd, bool fastopen, const ComboAddress&
      remote, const struct timeval& timeout)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: bind
      Src: /src/pdns/pdns/iputils.cc:135,1
    - Dst: reinterpret_cast<const struct sockaddr*>
      Src: /src/pdns/pdns/iputils.cc:135,1
    - Dst: getSocklen
      Src: /src/pdns/pdns/iputils.cc:135,1
    - Dst: RuntimeError
      Src: /src/pdns/pdns/iputils.cc:138,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/iputils.cc:138,1
    - Dst: stringerror
      Src: /src/pdns/pdns/iputils.cc:138,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - sockfd
    - ' local'
    argTypes:
    - int
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 141
      start: 133
    functionDepth: 0
    functionLinenumber: 133
    functionLinenumberEnd: 141
    functionName: SBind
    functionSourceFile: /src/pdns/pdns/iputils.cc
    functionUses: 2
    functionsReached:
    - stringerror
    - bind
    - reinterpret_cast<const struct sockaddr*>
    - getSocklen
    - RuntimeError
    - toStringWithPort
    linkageType: ''
    returnType: int
    signature: int SBind(int sockfd, const ComboAddress& local)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: getSocklen
      Src: /src/pdns/pdns/iputils.cc:145,1
    - Dst: accept
      Src: /src/pdns/pdns/iputils.cc:147,1
    - Dst: reinterpret_cast<struct sockaddr*>
      Src: /src/pdns/pdns/iputils.cc:147,1
    - Dst: RuntimeError
      Src: /src/pdns/pdns/iputils.cc:149,1
    - Dst: stringerror
      Src: /src/pdns/pdns/iputils.cc:149,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - sockfd
    - ' remote'
    argTypes:
    - int
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 152
      start: 143
    functionDepth: 0
    functionLinenumber: 143
    functionLinenumberEnd: 152
    functionName: SAccept
    functionSourceFile: /src/pdns/pdns/iputils.cc
    functionUses: 1
    functionsReached:
    - accept
    - stringerror
    - RuntimeError
    - getSocklen
    - reinterpret_cast<struct sockaddr*>
    linkageType: ''
    returnType: int
    signature: int SAccept(int sockfd, ComboAddress& remote)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: listen
      Src: /src/pdns/pdns/iputils.cc:156,1
    - Dst: RuntimeError
      Src: /src/pdns/pdns/iputils.cc:158,1
    - Dst: stringerror
      Src: /src/pdns/pdns/iputils.cc:158,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - sockfd
    - limit
    argTypes:
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 161
      start: 154
    functionDepth: 0
    functionLinenumber: 154
    functionLinenumberEnd: 161
    functionName: SListen
    functionSourceFile: /src/pdns/pdns/iputils.cc
    functionUses: 1
    functionsReached:
    - RuntimeError
    - stringerror
    - listen
    linkageType: ''
    returnType: int
    signature: int SListen(int sockfd, int limit)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: setsockopt
      Src: /src/pdns/pdns/iputils.cc:165,1
    - Dst: RuntimeError
      Src: /src/pdns/pdns/iputils.cc:167,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/iputils.cc:167,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/iputils.cc:167,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/iputils.cc:167,1
    - Dst: stringerror
      Src: /src/pdns/pdns/iputils.cc:167,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 4
    argNames:
    - sockfd
    - level
    - opname
    - value
    argTypes:
    - int
    - int
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 170
      start: 163
    functionDepth: 0
    functionLinenumber: 163
    functionLinenumberEnd: 170
    functionName: SSetsockopt
    functionSourceFile: /src/pdns/pdns/iputils.cc
    functionUses: 2
    functionsReached:
    - RuntimeError
    - stringerror
    - std::to_string
    - setsockopt
    linkageType: ''
    returnType: int
    signature: int SSetsockopt(int sockfd, int level, int opname, int value)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SSetsockopt
      Src: /src/pdns/pdns/iputils.cc:182,1
    - Dst: SSetsockopt
      Src: /src/pdns/pdns/iputils.cc:191,1
    - Dst: SSetsockopt
      Src: /src/pdns/pdns/iputils.cc:202,1
    - Dst: SSetsockopt
      Src: /src/pdns/pdns/iputils.cc:211,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 2
    argNames:
    - sockfd
    - family
    argTypes:
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 214
      start: 172
    functionDepth: 0
    functionLinenumber: 172
    functionLinenumberEnd: 214
    functionName: setSocketIgnorePMTU
    functionSourceFile: /src/pdns/pdns/iputils.cc
    functionUses: 1
    functionsReached:
    - SSetsockopt
    linkageType: ''
    returnType: void
    signature: void setSocketIgnorePMTU([[maybe_unused]] int sockfd, [[maybe_unused]]
      int family)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SSetsockopt
      Src: /src/pdns/pdns/iputils.cc:221,1
    - Dst: SSetsockopt
      Src: /src/pdns/pdns/iputils.cc:224,1
    - Dst: SSetsockopt
      Src: /src/pdns/pdns/iputils.cc:230,1
    - Dst: SSetsockopt
      Src: /src/pdns/pdns/iputils.cc:233,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - sockfd
    - family
    argTypes:
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 236
      start: 216
    functionDepth: 0
    functionLinenumber: 216
    functionLinenumberEnd: 236
    functionName: setSocketForcePMTU
    functionSourceFile: /src/pdns/pdns/iputils.cc
    functionUses: 0
    functionsReached:
    - SSetsockopt
    linkageType: ''
    returnType: void
    signature: void setSocketForcePMTU([[maybe_unused]] int sockfd, [[maybe_unused]]
      int family)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SSetsockopt
      Src: /src/pdns/pdns/iputils.cc:242,1
    - Dst: SSetsockopt
      Src: /src/pdns/pdns/iputils.cc:250,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 1
    argNames:
    - sockfd
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 258
      start: 238
    functionDepth: 0
    functionLinenumber: 238
    functionLinenumberEnd: 258
    functionName: setReusePort
    functionSourceFile: /src/pdns/pdns/iputils.cc
    functionUses: 3
    functionsReached:
    - SSetsockopt
    linkageType: ''
    returnType: bool
    signature: bool setReusePort(int sockfd)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: CMSG_FIRSTHDR
      Src: /src/pdns/pdns/iputils.cc:265,1
    - Dst: CMSG_NXTHDR
      Src: /src/pdns/pdns/iputils.cc:265,1
    - Dst: CMSG_LEN
      Src: /src/pdns/pdns/iputils.cc:266,1
    - Dst: memcpy
      Src: /src/pdns/pdns/iputils.cc:267,1
    - Dst: CMSG_DATA
      Src: /src/pdns/pdns/iputils.cc:267,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 8
    argCount: 2
    argNames:
    - msgh
    - timeval
    argTypes:
    - struct msghdr*
    - struct timeval*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 273
      start: 260
    functionDepth: 0
    functionLinenumber: 260
    functionLinenumberEnd: 273
    functionName: HarvestTimestamp
    functionSourceFile: /src/pdns/pdns/iputils.cc
    functionUses: 1
    functionsReached:
    - memcpy
    - CMSG_FIRSTHDR
    - CMSG_DATA
    - CMSG_NXTHDR
    - CMSG_LEN
    linkageType: ''
    returnType: bool
    signature: bool HarvestTimestamp(struct msghdr* msgh, struct timeval* timeval)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ComboAddress*::reset
      Src: /src/pdns/pdns/iputils.cc:276,1
    - Dst: CMSG_FIRSTHDR
      Src: /src/pdns/pdns/iputils.cc:282,1
    - Dst: CMSG_NXTHDR
      Src: /src/pdns/pdns/iputils.cc:282,1
    - Dst: const_cast<struct msghdr*>
      Src: /src/pdns/pdns/iputils.cc:282,1
    - Dst: const_cast<struct cmsghdr*>
      Src: /src/pdns/pdns/iputils.cc:282,1
    - Dst: reinterpret_cast<const struct in_pktinfo*>
      Src: /src/pdns/pdns/iputils.cc:285,1
    - Dst: CMSG_DATA
      Src: /src/pdns/pdns/iputils.cc:285,1
    - Dst: reinterpret_cast<const struct in_addr*>
      Src: /src/pdns/pdns/iputils.cc:292,1
    - Dst: CMSG_DATA
      Src: /src/pdns/pdns/iputils.cc:292,1
    - Dst: reinterpret_cast<const struct in6_pktinfo*>
      Src: /src/pdns/pdns/iputils.cc:300,1
    - Dst: CMSG_DATA
      Src: /src/pdns/pdns/iputils.cc:300,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 20
    argCount: 2
    argNames:
    - msgh
    - destination
    argTypes:
    - struct msghdr*
    - ComboAddress*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 308
      start: 274
    functionDepth: 0
    functionLinenumber: 274
    functionLinenumberEnd: 308
    functionName: HarvestDestinationAddress
    functionSourceFile: /src/pdns/pdns/iputils.cc
    functionUses: 1
    functionsReached:
    - CMSG_FIRSTHDR
    - const_cast<struct msghdr*>
    - ComboAddress*::reset
    - reinterpret_cast<const struct in_pktinfo*>
    - CMSG_DATA
    - reinterpret_cast<const struct in6_pktinfo*>
    - reinterpret_cast<const struct in_addr*>
    - const_cast<struct cmsghdr*>
    - CMSG_NXTHDR
    linkageType: ''
    returnType: bool
    signature: bool HarvestDestinationAddress(const struct msghdr* msgh, ComboAddress*
      destination)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/pdns/pdns/iputils.cc:316,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - ' addr'
    argTypes:
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 319
      start: 310
    functionDepth: 0
    functionLinenumber: 310
    functionLinenumberEnd: 319
    functionName: IsAnyAddress
    functionSourceFile: /src/pdns/pdns/iputils.cc
    functionUses: 4
    functionsReached:
    - memcmp
    linkageType: ''
    returnType: bool
    signature: bool IsAnyAddress(const ComboAddress& addr)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: sendmsg
      Src: /src/pdns/pdns/iputils.cc:327,1
    - Dst: sendmsg
      Src: /src/pdns/pdns/iputils.cc:337,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 2
    argNames:
    - fileDesc
    - msgh
    argTypes:
    - int
    - struct msghdr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 342
      start: 321
    functionDepth: 0
    functionLinenumber: 321
    functionLinenumberEnd: 342
    functionName: sendOnNBSocket
    functionSourceFile: /src/pdns/pdns/iputils.cc
    functionUses: 1
    functionsReached:
    - sendmsg
    linkageType: ''
    returnType: int
    signature: int sendOnNBSocket(int fileDesc, const struct msghdr* msgh)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/pdns/pdns/iputils.cc:352,1
    - Dst: ComboAddress*::getSocklen
      Src: /src/pdns/pdns/iputils.cc:357,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 7
    argNames:
    - msgh
    - iov
    - cbuf
    - cbufsize
    - data
    - datalen
    - addr
    argTypes:
    - struct msghdr*
    - struct iovec*
    - cmsgbuf_aligned*
    - size_t
    - char*
    - size_t
    - ComboAddress*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 361
      start: 347
    functionDepth: 0
    functionLinenumber: 347
    functionLinenumberEnd: 361
    functionName: fillMSGHdr
    functionSourceFile: /src/pdns/pdns/iputils.cc
    functionUses: 4
    functionsReached:
    - memset
    - ComboAddress*::getSocklen
    linkageType: ''
    returnType: void
    signature: void fillMSGHdr(struct msghdr* msgh, struct iovec* iov, cmsgbuf_aligned*
      cbuf, size_t cbufsize, char* data, size_t datalen, ComboAddress* addr)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: reinterpret_cast<uint8_t*>
      Src: /src/pdns/pdns/iputils.cc:372,1
    - Dst: reinterpret_cast<uint8_t*>
      Src: /src/pdns/pdns/iputils.cc:379,1
    - Dst: memset
      Src: /src/pdns/pdns/iputils.cc:385,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 1
    argNames:
    - bits
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 393
      start: 364
    functionDepth: 0
    functionLinenumber: 364
    functionLinenumberEnd: 393
    functionName: ComboAddress::truncate
    functionSourceFile: /src/pdns/pdns/iputils.cc
    functionUses: 4
    functionsReached:
    - memset
    - reinterpret_cast<uint8_t*>
    linkageType: ''
    returnType: void
    signature: void ComboAddress::truncate(unsigned int bits) noexcept
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/pdns/pdns/iputils.cc:402,1
    - Dst: reinterpret_cast<void*>
      Src: /src/pdns/pdns/iputils.cc:407,1
    - Dst: const_cast<ComboAddress*>
      Src: /src/pdns/pdns/iputils.cc:407,1
    - Dst: ComboAddress*::getSocklen
      Src: /src/pdns/pdns/iputils.cc:408,1
    - Dst: addCMsgSrcAddr
      Src: /src/pdns/pdns/iputils.cc:418,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/iputils.cc:418,1
    - Dst: const_cast<void*>
      Src: /src/pdns/pdns/iputils.cc:422,1
    - Dst: sendmsg
      Src: /src/pdns/pdns/iputils.cc:441,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/iputils.cc:444,1
    - Dst: reinterpret_cast<void*>
      Src: /src/pdns/pdns/iputils.cc:457,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/iputils.cc:457,1
    - Dst: unixDie
      Src: /src/pdns/pdns/iputils.cc:472,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 47
    argCount: 7
    argNames:
    - socketDesc
    - buffer
    - len
    - dest
    - local
    - localItf
    - flags
    argTypes:
    - int
    - void*
    - size_t
    - ComboAddress*
    - ComboAddress*
    - unsigned int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 477
      start: 395
    functionDepth: 0
    functionLinenumber: 395
    functionLinenumberEnd: 477
    functionName: sendMsgWithOptions
    functionSourceFile: /src/pdns/pdns/iputils.cc
    functionUses: 2
    functionsReached:
    - reinterpret_cast<char*>
    - sendmsg
    - const_cast<ComboAddress*>
    - static_cast<size_t>
    - ComboAddress*::getSocklen
    - unixDie
    - memset
    - reinterpret_cast<void*>
    - const_cast<void*>
    - addCMsgSrcAddr
    - static_cast<int>
    linkageType: ''
    returnType: size_t
    signature: size_t sendMsgWithOptions(int socketDesc, const void* buffer, size_t
      len, const ComboAddress* dest, const ComboAddress* local, unsigned int localItf,
      int flags)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: recv
      Src: /src/pdns/pdns/iputils.cc:492,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 1
    argNames:
    - sock
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 516
      start: 485
    functionDepth: 0
    functionLinenumber: 485
    functionLinenumberEnd: 516
    functionName: isTCPSocketUsable
    functionSourceFile: /src/pdns/pdns/iputils.cc
    functionUses: 2
    functionsReached:
    - recv
    linkageType: ''
    returnType: bool
    signature: bool isTCPSocketUsable(int sock)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: splitField
      Src: /src/pdns/pdns/iputils.cc:527,1
    - Dst: substr
      Src: /src/pdns/pdns/iputils.cc:527,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/iputils.cc:528,1
    - Dst: auto::second::empty
      Src: /src/pdns/pdns/iputils.cc:528,1
    - Dst: pdns::checked_stoi<uint16_t>
      Src: /src/pdns/pdns/iputils.cc:528,1
    - Dst: auto::second::substr
      Src: /src/pdns/pdns/iputils.cc:528,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/iputils.cc:542,1
    - Dst: rfind
      Src: /src/pdns/pdns/iputils.cc:544,1
    - Dst: substr
      Src: /src/pdns/pdns/iputils.cc:546,1
    - Dst: substr
      Src: /src/pdns/pdns/iputils.cc:547,1
    - Dst: pdns::checked_stoi<uint16_t>
      Src: /src/pdns/pdns/iputils.cc:549,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/iputils.cc:550,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/iputils.cc:553,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 22
    argCount: 2
    argNames:
    - ' input'
    - port
    argTypes:
    - std::string
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 555
      start: 524
    functionDepth: 0
    functionLinenumber: 524
    functionLinenumberEnd: 555
    functionName: parseIPAndPort
    functionSourceFile: /src/pdns/pdns/iputils.cc
    functionUses: 1
    functionsReached:
    - splitField
    - auto::second::substr
    - auto::second::empty
    - pdns::checked_stoi<uint16_t>
    - substr
    - rfind
    - ComboAddress
    linkageType: ''
    returnType: ComboAddress
    signature: ComboAddress parseIPAndPort(const std::string& input, uint16_t port)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: getsockopt
      Src: /src/pdns/pdns/iputils.cc:562,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/iputils.cc:563,1
    - Dst: stringerror
      Src: /src/pdns/pdns/iputils.cc:563,1
    - Dst: setsockopt
      Src: /src/pdns/pdns/iputils.cc:568,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/iputils.cc:569,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/iputils.cc:569,1
    - Dst: stringerror
      Src: /src/pdns/pdns/iputils.cc:569,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 10
    argCount: 3
    argNames:
    - fileDesc
    - optname
    - size
    argTypes:
    - int
    - int
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 571
      start: 557
    functionDepth: 0
    functionLinenumber: 557
    functionLinenumberEnd: 571
    functionName: setSocketBuffer
    functionSourceFile: /src/pdns/pdns/iputils.cc
    functionUses: 0
    functionsReached:
    - getsockopt
    - std::to_string
    - std::runtime_error
    - stringerror
    - setsockopt
    linkageType: ''
    returnType: void
    signature: void setSocketBuffer(int fileDesc, int optname, uint32_t size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: setSocketBuffer
      Src: /src/pdns/pdns/iputils.cc:575,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - fileDesc
    - size
    argTypes:
    - int
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 576
      start: 573
    functionDepth: 0
    functionLinenumber: 573
    functionLinenumberEnd: 576
    functionName: setSocketReceiveBuffer
    functionSourceFile: /src/pdns/pdns/iputils.cc
    functionUses: 3
    functionsReached:
    - setSocketBuffer
    linkageType: ''
    returnType: void
    signature: void setSocketReceiveBuffer(int fileDesc, uint32_t size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: setSocketBuffer
      Src: /src/pdns/pdns/iputils.cc:580,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - fileDesc
    - size
    argTypes:
    - int
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 581
      start: 578
    functionDepth: 0
    functionLinenumber: 578
    functionLinenumberEnd: 581
    functionName: setSocketSendBuffer
    functionSourceFile: /src/pdns/pdns/iputils.cc
    functionUses: 3
    functionsReached:
    - setSocketBuffer
    linkageType: ''
    returnType: void
    signature: void setSocketSendBuffer(int fileDesc, uint32_t size)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: getline
      Src: /src/pdns/pdns/iputils.cc:589,1
    - Dst: pdns::checked_stoi<uint32_t>
      Src: /src/pdns/pdns/iputils.cc:590,1
    - Dst: setSocketBuffer
      Src: /src/pdns/pdns/iputils.cc:591,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - socket
    - optname
    - ' readMaxFromFile'
    argTypes:
    - int
    - int
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 596
      start: 584
    functionDepth: 0
    functionLinenumber: 584
    functionLinenumberEnd: 596
    functionName: raiseSocketBufferToMax
    functionSourceFile: /src/pdns/pdns/iputils.cc
    functionUses: 0
    functionsReached:
    - pdns::checked_stoi<uint32_t>
    - getline
    - setSocketBuffer
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t raiseSocketBufferToMax(int socket, int optname, const std::string&
      readMaxFromFile)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: raiseSocketBufferToMax
      Src: /src/pdns/pdns/iputils.cc:602,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - socket
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 606
      start: 599
    functionDepth: 0
    functionLinenumber: 599
    functionLinenumberEnd: 606
    functionName: raiseSocketReceiveBufferToMax
    functionSourceFile: /src/pdns/pdns/iputils.cc
    functionUses: 0
    functionsReached:
    - raiseSocketBufferToMax
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t raiseSocketReceiveBufferToMax([[maybe_unused]] int socket)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: raiseSocketBufferToMax
      Src: /src/pdns/pdns/iputils.cc:611,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - socket
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 615
      start: 608
    functionDepth: 0
    functionLinenumber: 608
    functionLinenumberEnd: 615
    functionName: raiseSocketSendBufferToMax
    functionSourceFile: /src/pdns/pdns/iputils.cc
    functionUses: 0
    functionsReached:
    - raiseSocketBufferToMax
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t raiseSocketSendBufferToMax([[maybe_unused]] int socket)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: getifaddrs
      Src: /src/pdns/pdns/iputils.cc:622,1
    - Dst: std::set::insert
      Src: /src/pdns/pdns/iputils.cc:630,1
    - Dst: freeifaddrs
      Src: /src/pdns/pdns/iputils.cc:633,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 636
      start: 617
    functionDepth: 1
    functionLinenumber: 617
    functionLinenumberEnd: 636
    functionName: getListOfNetworkInterfaces
    functionSourceFile: /src/pdns/pdns/iputils.cc
    functionUses: 0
    functionsReached:
    - freeifaddrs
    - getifaddrs
    - std::set::insert
    linkageType: ''
    returnType: std::set<std::string>
    signature: std::set<std::string> getListOfNetworkInterfaces()
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: getifaddrs
      Src: /src/pdns/pdns/iputils.cc:643,1
    - Dst: strcmp
      Src: /src/pdns/pdns/iputils.cc:648,1
    - Dst: c_str
      Src: /src/pdns/pdns/iputils.cc:648,1
    - Dst: ComboAddress::setSockaddr
      Src: /src/pdns/pdns/iputils.cc:656,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/iputils.cc:662,1
    - Dst: freeifaddrs
      Src: /src/pdns/pdns/iputils.cc:665,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 20
    argCount: 1
    argNames:
    - ' itf'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 667
      start: 639
    functionDepth: 0
    functionLinenumber: 639
    functionLinenumberEnd: 667
    functionName: getListOfAddressesOfNetworkInterface
    functionSourceFile: /src/pdns/pdns/iputils.cc
    functionUses: 0
    functionsReached:
    - std::vector::push_back
    - getifaddrs
    - freeifaddrs
    - strcmp
    - ComboAddress::setSockaddr
    - c_str
    linkageType: ''
    returnType: std::vector<ComboAddress>
    signature: std::vector<ComboAddress> getListOfAddressesOfNetworkInterface(const
      std::string& itf)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 673
      start: 669
    functionDepth: 0
    functionLinenumber: 669
    functionLinenumberEnd: 673
    functionName: getListOfAddressesOfNetworkInterface
    functionSourceFile: /src/pdns/pdns/iputils.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::vector<ComboAddress>
    signature: std::vector<ComboAddress> getListOfAddressesOfNetworkInterface(const
      std::string& /* itf */)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/iputils.cc:680,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 2
    argNames:
    - mask
    - len
    argTypes:
    - uint8_t*
    - socklen_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 694
      start: 677
    functionDepth: 0
    functionLinenumber: 677
    functionLinenumberEnd: 694
    functionName: convertNetmaskToBits
    functionSourceFile: /src/pdns/pdns/iputils.cc
    functionUses: 0
    functionsReached:
    - std::runtime_error
    linkageType: ''
    returnType: uint8_t
    signature: uint8_t convertNetmaskToBits(const uint8_t* mask, socklen_t len)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: getifaddrs
      Src: /src/pdns/pdns/iputils.cc:702,1
    - Dst: strcmp
      Src: /src/pdns/pdns/iputils.cc:707,1
    - Dst: c_str
      Src: /src/pdns/pdns/iputils.cc:707,1
    - Dst: ComboAddress::setSockaddr
      Src: /src/pdns/pdns/iputils.cc:719,1
    - Dst: reinterpret_cast<const struct sockaddr_in*>
      Src: /src/pdns/pdns/iputils.cc:727,1
    - Dst: convertNetmaskToBits
      Src: /src/pdns/pdns/iputils.cc:728,1
    - Dst: reinterpret_cast<const uint8_t*>
      Src: /src/pdns/pdns/iputils.cc:728,1
    - Dst: std::vector::emplace_back
      Src: /src/pdns/pdns/iputils.cc:729,1
    - Dst: reinterpret_cast<const struct sockaddr_in6*>
      Src: /src/pdns/pdns/iputils.cc:732,1
    - Dst: convertNetmaskToBits
      Src: /src/pdns/pdns/iputils.cc:733,1
    - Dst: reinterpret_cast<const uint8_t*>
      Src: /src/pdns/pdns/iputils.cc:733,1
    - Dst: std::vector::emplace_back
      Src: /src/pdns/pdns/iputils.cc:734,1
    - Dst: freeifaddrs
      Src: /src/pdns/pdns/iputils.cc:739,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 28
    argCount: 1
    argNames:
    - ' itf'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 741
      start: 698
    functionDepth: 0
    functionLinenumber: 698
    functionLinenumberEnd: 741
    functionName: getListOfRangesOfNetworkInterface
    functionSourceFile: /src/pdns/pdns/iputils.cc
    functionUses: 0
    functionsReached:
    - convertNetmaskToBits
    - getifaddrs
    - reinterpret_cast<const uint8_t*>
    - freeifaddrs
    - reinterpret_cast<const struct sockaddr_in*>
    - strcmp
    - std::vector::emplace_back
    - ComboAddress::setSockaddr
    - c_str
    - reinterpret_cast<const struct sockaddr_in6*>
    linkageType: ''
    returnType: std::vector<Netmask>
    signature: std::vector<Netmask> getListOfRangesOfNetworkInterface(const std::string&
      itf)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 747
      start: 743
    functionDepth: 0
    functionLinenumber: 743
    functionLinenumberEnd: 747
    functionName: getListOfRangesOfNetworkInterface
    functionSourceFile: /src/pdns/pdns/iputils.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::vector<Netmask>
    signature: std::vector<Netmask> getListOfRangesOfNetworkInterface(const std::string&
      /* itf */)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sqlite3_bind_parameter_count
      Src: /src/pdns/pdns/ssqlite3.cc:46,1
    - Dst: sqlite3_bind_null
      Src: /src/pdns/pdns/ssqlite3.cc:47,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - pStmt
    argTypes:
    - sqlite3_stmt*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 42
    functionDepth: 0
    functionLinenumber: 42
    functionLinenumberEnd: 50
    functionName: pdns_sqlite3_clear_bindings
    functionSourceFile: /src/pdns/pdns/ssqlite3.cc
    functionUses: 0
    functionsReached:
    - sqlite3_bind_parameter_count
    - sqlite3_bind_null
    linkageType: ''
    returnType: int
    signature: int pdns_sqlite3_clear_bindings(sqlite3_stmt* pStmt)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: string
      Src: /src/pdns/pdns/ssqlite3.cc:55,1
    - Dst: sqlite3_errmsg
      Src: /src/pdns/pdns/ssqlite3.cc:55,1
    - Dst: string
      Src: /src/pdns/pdns/ssqlite3.cc:55,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/ssqlite3.cc:55,1
    - Dst: sqlite3_extended_errcode
      Src: /src/pdns/pdns/ssqlite3.cc:55,1
    - Dst: string
      Src: /src/pdns/pdns/ssqlite3.cc:55,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - database
    argTypes:
    - sqlite3*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 53
    functionDepth: 0
    functionLinenumber: 53
    functionLinenumberEnd: 56
    functionName: SSQLite3ErrorString
    functionSourceFile: /src/pdns/pdns/ssqlite3.cc
    functionUses: 0
    functionsReached:
    - string
    - std::to_string
    - sqlite3_extended_errcode
    - sqlite3_errmsg
    linkageType: ''
    returnType: string
    signature: string SSQLite3ErrorString(sqlite3* database)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/ssqlite3.cc:63,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 4
    argNames:
    - log
    - database
    - dolog
    - query
    argTypes:
    - Logr::log_t
    - SSQLite3*
    - bool
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 61
    functionDepth: 0
    functionLinenumber: 61
    functionLinenumberEnd: 67
    functionName: SSQLite3Statement::SSQLite3Statement
    functionSourceFile: /src/pdns/pdns/ssqlite3.cc
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void SSQLite3Statement(Logr::log_t log, SSQLite3* database, bool dolog,
      string query)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 69
    functionDepth: 0
    functionLinenumber: 69
    functionLinenumberEnd: 69
    functionName: SSQLite3Statement::SSQLite3Statement
    functionSourceFile: /src/pdns/pdns/ssqlite3.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void SSQLite3Statement(const SSQLite3Statement&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 70
    functionDepth: 0
    functionLinenumber: 70
    functionLinenumberEnd: 70
    functionName: SSQLite3Statement::SSQLite3Statement
    functionSourceFile: /src/pdns/pdns/ssqlite3.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void SSQLite3Statement(SSQLite3Statement&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 71
    functionDepth: 0
    functionLinenumber: 71
    functionLinenumberEnd: 71
    functionName: '& operator=(const SSQLite3Statement&)'
    functionSourceFile: /src/pdns/pdns/ssqlite3.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: SSQLite3Statement
    signature: SSQLite3Statement & operator=(const SSQLite3Statement&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 72
    functionDepth: 0
    functionLinenumber: 72
    functionLinenumberEnd: 72
    functionName: '& operator=(SSQLite3Statement&&)'
    functionSourceFile: /src/pdns/pdns/ssqlite3.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: SSQLite3Statement
    signature: SSQLite3Statement & operator=(SSQLite3Statement&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: string
      Src: /src/pdns/pdns/ssqlite3.cc:76,1
    - Dst: SSQLite3Statement::prepareStatement
      Src: /src/pdns/pdns/ssqlite3.cc:77,1
    - Dst: sqlite3_bind_parameter_index
      Src: /src/pdns/pdns/ssqlite3.cc:78,1
    - Dst: string::c_str
      Src: /src/pdns/pdns/ssqlite3.cc:78,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ' name'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 74
    functionDepth: 1
    functionLinenumber: 74
    functionLinenumberEnd: 80
    functionName: SSQLite3Statement::name2idx
    functionSourceFile: /src/pdns/pdns/ssqlite3.cc
    functionUses: 0
    functionsReached:
    - sqlite3_bind_parameter_index
    - string::c_str
    - string
    - SSQLite3Statement::prepareStatement
    linkageType: ''
    returnType: int
    signature: int name2idx(const string& name)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SSQLite3Statement::name2idx
      Src: /src/pdns/pdns/ssqlite3.cc:84,1
    - Dst: sqlite3_bind_int
      Src: /src/pdns/pdns/ssqlite3.cc:86,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - ' name'
    - value
    argTypes:
    - string
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 82
    functionDepth: 2
    functionLinenumber: 82
    functionLinenumberEnd: 89
    functionName: SSQLite3Statement::bind
    functionSourceFile: /src/pdns/pdns/ssqlite3.cc
    functionUses: 0
    functionsReached:
    - SSQLite3Statement::name2idx
    - sqlite3_bind_int
    linkageType: ''
    returnType: SSqlStatement
    signature: SSqlStatement * bind(const string& name, bool value) override
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SSQLite3Statement::name2idx
      Src: /src/pdns/pdns/ssqlite3.cc:93,1
    - Dst: sqlite3_bind_int
      Src: /src/pdns/pdns/ssqlite3.cc:95,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - ' name'
    - value
    argTypes:
    - string
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 91
    functionDepth: 2
    functionLinenumber: 91
    functionLinenumberEnd: 98
    functionName: SSQLite3Statement::bind
    functionSourceFile: /src/pdns/pdns/ssqlite3.cc
    functionUses: 0
    functionsReached:
    - SSQLite3Statement::name2idx
    - sqlite3_bind_int
    linkageType: ''
    returnType: SSqlStatement
    signature: SSqlStatement * bind(const string& name, int value) override
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SSQLite3Statement::name2idx
      Src: /src/pdns/pdns/ssqlite3.cc:102,1
    - Dst: sqlite3_bind_int64
      Src: /src/pdns/pdns/ssqlite3.cc:104,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - ' name'
    - value
    argTypes:
    - string
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 107
      start: 100
    functionDepth: 2
    functionLinenumber: 100
    functionLinenumberEnd: 107
    functionName: SSQLite3Statement::bind
    functionSourceFile: /src/pdns/pdns/ssqlite3.cc
    functionUses: 0
    functionsReached:
    - SSQLite3Statement::name2idx
    - sqlite3_bind_int64
    linkageType: ''
    returnType: SSqlStatement
    signature: SSqlStatement * bind(const string& name, uint32_t value) override
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SSQLite3Statement::name2idx
      Src: /src/pdns/pdns/ssqlite3.cc:111,1
    - Dst: sqlite3_bind_int64
      Src: /src/pdns/pdns/ssqlite3.cc:113,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - ' name'
    - value
    argTypes:
    - string
    - long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 109
    functionDepth: 2
    functionLinenumber: 109
    functionLinenumberEnd: 116
    functionName: SSQLite3Statement::bind
    functionSourceFile: /src/pdns/pdns/ssqlite3.cc
    functionUses: 0
    functionsReached:
    - SSQLite3Statement::name2idx
    - sqlite3_bind_int64
    linkageType: ''
    returnType: SSqlStatement
    signature: SSqlStatement * bind(const string& name, long value) override
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SSQLite3Statement::name2idx
      Src: /src/pdns/pdns/ssqlite3.cc:120,1
    - Dst: sqlite3_bind_int64
      Src: /src/pdns/pdns/ssqlite3.cc:122,1
    - Dst: static_cast<sqlite3_int64>
      Src: /src/pdns/pdns/ssqlite3.cc:122,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - ' name'
    - value
    argTypes:
    - string
    - unsigned long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 125
      start: 118
    functionDepth: 2
    functionLinenumber: 118
    functionLinenumberEnd: 125
    functionName: SSQLite3Statement::bind
    functionSourceFile: /src/pdns/pdns/ssqlite3.cc
    functionUses: 0
    functionsReached:
    - SSQLite3Statement::name2idx
    - static_cast<sqlite3_int64>
    - sqlite3_bind_int64
    linkageType: ''
    returnType: SSqlStatement
    signature: SSqlStatement * bind(const string& name, unsigned long value) override
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SSQLite3Statement::name2idx
      Src: /src/pdns/pdns/ssqlite3.cc:129,1
    - Dst: sqlite3_bind_int64
      Src: /src/pdns/pdns/ssqlite3.cc:131,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - ' name'
    - value
    argTypes:
    - string
    - long long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 134
      start: 127
    functionDepth: 2
    functionLinenumber: 127
    functionLinenumberEnd: 134
    functionName: SSQLite3Statement::bind
    functionSourceFile: /src/pdns/pdns/ssqlite3.cc
    functionUses: 0
    functionsReached:
    - SSQLite3Statement::name2idx
    - sqlite3_bind_int64
    linkageType: ''
    returnType: SSqlStatement
    signature: SSqlStatement * bind(const string& name, long long value) override
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SSQLite3Statement::name2idx
      Src: /src/pdns/pdns/ssqlite3.cc:138,1
    - Dst: sqlite3_bind_int64
      Src: /src/pdns/pdns/ssqlite3.cc:140,1
    - Dst: static_cast<sqlite3_int64>
      Src: /src/pdns/pdns/ssqlite3.cc:140,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - ' name'
    - value
    argTypes:
    - string
    - unsigned long long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 143
      start: 136
    functionDepth: 2
    functionLinenumber: 136
    functionLinenumberEnd: 143
    functionName: SSQLite3Statement::bind
    functionSourceFile: /src/pdns/pdns/ssqlite3.cc
    functionUses: 0
    functionsReached:
    - SSQLite3Statement::name2idx
    - static_cast<sqlite3_int64>
    - sqlite3_bind_int64
    linkageType: ''
    returnType: SSqlStatement
    signature: SSqlStatement * bind(const string& name, unsigned long long value)
      override
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SSQLite3Statement::name2idx
      Src: /src/pdns/pdns/ssqlite3.cc:147,1
    - Dst: sqlite3_bind_text
      Src: /src/pdns/pdns/ssqlite3.cc:149,1
    - Dst: c_str
      Src: /src/pdns/pdns/ssqlite3.cc:149,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/ssqlite3.cc:149,1
    - Dst: size
      Src: /src/pdns/pdns/ssqlite3.cc:149,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - ' name'
    - ' value'
    argTypes:
    - string
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 152
      start: 145
    functionDepth: 2
    functionLinenumber: 145
    functionLinenumberEnd: 152
    functionName: SSQLite3Statement::bind
    functionSourceFile: /src/pdns/pdns/ssqlite3.cc
    functionUses: 0
    functionsReached:
    - sqlite3_bind_text
    - c_str
    - size
    - SSQLite3Statement::name2idx
    - static_cast<int>
    linkageType: ''
    returnType: SSqlStatement
    signature: SSqlStatement * bind(const string& name, const std::string& value)
      override
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SSQLite3Statement::name2idx
      Src: /src/pdns/pdns/ssqlite3.cc:156,1
    - Dst: sqlite3_bind_null
      Src: /src/pdns/pdns/ssqlite3.cc:158,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - ' name'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 161
      start: 154
    functionDepth: 2
    functionLinenumber: 154
    functionLinenumberEnd: 161
    functionName: SSQLite3Statement::bindNull
    functionSourceFile: /src/pdns/pdns/ssqlite3.cc
    functionUses: 0
    functionsReached:
    - SSQLite3Statement::name2idx
    - sqlite3_bind_null
    linkageType: ''
    returnType: SSqlStatement
    signature: SSqlStatement * bindNull(const string& name) override
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: SSQLite3Statement::prepareStatement
      Src: /src/pdns/pdns/ssqlite3.cc:165,1
    - Dst: SLOG
      Src: /src/pdns/pdns/ssqlite3.cc:167,1
    - Dst: info
      Src: /src/pdns/pdns/ssqlite3.cc:168,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/ssqlite3.cc:168,1
    - Dst: set
      Src: /src/pdns/pdns/ssqlite3.cc:169,1
    - Dst: inTransaction
      Src: /src/pdns/pdns/ssqlite3.cc:172,1
    - Dst: sqlite3_step
      Src: /src/pdns/pdns/ssqlite3.cc:173,1
    - Dst: SSQLite3Statement::releaseStatement
      Src: /src/pdns/pdns/ssqlite3.cc:179,1
    - Dst: SSqlException
      Src: /src/pdns/pdns/ssqlite3.cc:181,1
    - Dst: string
      Src: /src/pdns/pdns/ssqlite3.cc:181,1
    - Dst: SSQLite3ErrorString
      Src: /src/pdns/pdns/ssqlite3.cc:181,1
    - Dst: db
      Src: /src/pdns/pdns/ssqlite3.cc:181,1
    - Dst: SSqlException
      Src: /src/pdns/pdns/ssqlite3.cc:183,1
    - Dst: string
      Src: /src/pdns/pdns/ssqlite3.cc:183,1
    - Dst: SSQLite3ErrorString
      Src: /src/pdns/pdns/ssqlite3.cc:183,1
    - Dst: db
      Src: /src/pdns/pdns/ssqlite3.cc:183,1
    - Dst: SLOG
      Src: /src/pdns/pdns/ssqlite3.cc:186,1
    - Dst: udiffNoReset
      Src: /src/pdns/pdns/ssqlite3.cc:186,1
    - Dst: info
      Src: /src/pdns/pdns/ssqlite3.cc:187,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/ssqlite3.cc:187,1
    - Dst: udiffNoReset
      Src: /src/pdns/pdns/ssqlite3.cc:187,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 20
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 190
      start: 163
    functionDepth: 1
    functionLinenumber: 163
    functionLinenumberEnd: 190
    functionName: SSQLite3Statement::execute
    functionSourceFile: /src/pdns/pdns/ssqlite3.cc
    functionUses: 0
    functionsReached:
    - SLOG
    - Logging::Loggable
    - SSQLite3Statement::releaseStatement
    - string
    - info
    - sqlite3_step
    - set
    - db
    - SSqlException
    - SSQLite3ErrorString
    - udiffNoReset
    - SSQLite3Statement::prepareStatement
    - inTransaction
    linkageType: ''
    returnType: SSqlStatement
    signature: SSqlStatement * execute() override
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SLOG
      Src: /src/pdns/pdns/ssqlite3.cc:195,1
    - Dst: udiffNoReset
      Src: /src/pdns/pdns/ssqlite3.cc:195,1
    - Dst: info
      Src: /src/pdns/pdns/ssqlite3.cc:196,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/ssqlite3.cc:196,1
    - Dst: udiffNoReset
      Src: /src/pdns/pdns/ssqlite3.cc:196,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 199
      start: 192
    functionDepth: 0
    functionLinenumber: 192
    functionLinenumberEnd: 199
    functionName: SSQLite3Statement::hasNextRow
    functionSourceFile: /src/pdns/pdns/ssqlite3.cc
    functionUses: 0
    functionsReached:
    - SLOG
    - udiffNoReset
    - info
    - Logging::Loggable
    linkageType: ''
    returnType: bool
    signature: bool hasNextRow() override
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: clear
      Src: /src/pdns/pdns/ssqlite3.cc:203,1
    - Dst: sqlite3_column_count
      Src: /src/pdns/pdns/ssqlite3.cc:204,1
    - Dst: reserve
      Src: /src/pdns/pdns/ssqlite3.cc:205,1
    - Dst: sqlite3_column_type
      Src: /src/pdns/pdns/ssqlite3.cc:208,1
    - Dst: emplace_back
      Src: /src/pdns/pdns/ssqlite3.cc:209,1
    - Dst: sqlite3_column_text
      Src: /src/pdns/pdns/ssqlite3.cc:213,1
    - Dst: emplace_back
      Src: /src/pdns/pdns/ssqlite3.cc:214,1
    - Dst: sqlite3_column_bytes
      Src: /src/pdns/pdns/ssqlite3.cc:214,1
    - Dst: sqlite3_step
      Src: /src/pdns/pdns/ssqlite3.cc:217,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 1
    argNames:
    - ' row'
    argTypes:
    - row_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 219
      start: 201
    functionDepth: 1
    functionLinenumber: 201
    functionLinenumberEnd: 219
    functionName: SSQLite3Statement::nextRow
    functionSourceFile: /src/pdns/pdns/ssqlite3.cc
    functionUses: 0
    functionsReached:
    - sqlite3_column_count
    - sqlite3_column_text
    - sqlite3_step
    - reserve
    - emplace_back
    - clear
    - sqlite3_column_type
    - sqlite3_column_bytes
    linkageType: ''
    returnType: SSqlStatement
    signature: SSqlStatement * nextRow(row_t& row) override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: clear
      Src: /src/pdns/pdns/ssqlite3.cc:223,1
    - Dst: SSQLite3Statement::hasNextRow
      Src: /src/pdns/pdns/ssqlite3.cc:224,1
    - Dst: SSQLite3Statement::nextRow
      Src: /src/pdns/pdns/ssqlite3.cc:226,1
    - Dst: push_back
      Src: /src/pdns/pdns/ssqlite3.cc:227,1
    - Dst: std::move
      Src: /src/pdns/pdns/ssqlite3.cc:227,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - ' result'
    argTypes:
    - result_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 230
      start: 221
    functionDepth: 2
    functionLinenumber: 221
    functionLinenumberEnd: 230
    functionName: SSQLite3Statement::getResult
    functionSourceFile: /src/pdns/pdns/ssqlite3.cc
    functionUses: 0
    functionsReached:
    - std::move
    - push_back
    - clear
    - SSQLite3Statement::nextRow
    - SSQLite3Statement::hasNextRow
    linkageType: ''
    returnType: SSqlStatement
    signature: SSqlStatement * getResult(result_t& result) override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sqlite3_reset
      Src: /src/pdns/pdns/ssqlite3.cc:234,1
    - Dst: sqlite3_clear_bindings
      Src: /src/pdns/pdns/ssqlite3.cc:236,1
    - Dst: pdns_sqlite3_clear_bindings
      Src: /src/pdns/pdns/ssqlite3.cc:238,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 241
      start: 232
    functionDepth: 1
    functionLinenumber: 232
    functionLinenumberEnd: 241
    functionName: SSQLite3Statement::reset
    functionSourceFile: /src/pdns/pdns/ssqlite3.cc
    functionUses: 0
    functionsReached:
    - pdns_sqlite3_clear_bindings
    - sqlite3_reset
    - sqlite3_clear_bindings
    linkageType: ''
    returnType: SSqlStatement
    signature: SSqlStatement * reset() override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: releaseStatement
      Src: /src/pdns/pdns/ssqlite3.cc:246,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 247
      start: 243
    functionDepth: 0
    functionLinenumber: 243
    functionLinenumberEnd: 247
    functionName: ~SSQLite3Statement() override
    functionSourceFile: /src/pdns/pdns/ssqlite3.cc
    functionUses: 0
    functionsReached:
    - releaseStatement
    linkageType: ''
    returnType: void
    signature: void ~SSQLite3Statement() override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 249
      start: 249
    functionDepth: 0
    functionLinenumber: 249
    functionLinenumberEnd: 249
    functionName: '& getQuery() override'
    functionSourceFile: /src/pdns/pdns/ssqlite3.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: string
    signature: string & getQuery() override
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: sqlite3_prepare_v2
      Src: /src/pdns/pdns/ssqlite3.cc:269,1
    - Dst: db
      Src: /src/pdns/pdns/ssqlite3.cc:269,1
    - Dst: c_str
      Src: /src/pdns/pdns/ssqlite3.cc:269,1
    - Dst: sqlite3_prepare
      Src: /src/pdns/pdns/ssqlite3.cc:271,1
    - Dst: db
      Src: /src/pdns/pdns/ssqlite3.cc:271,1
    - Dst: c_str
      Src: /src/pdns/pdns/ssqlite3.cc:271,1
    - Dst: SSQLite3Statement::releaseStatement
      Src: /src/pdns/pdns/ssqlite3.cc:274,1
    - Dst: SSqlException
      Src: /src/pdns/pdns/ssqlite3.cc:275,1
    - Dst: string
      Src: /src/pdns/pdns/ssqlite3.cc:275,1
    - Dst: SSQLite3ErrorString
      Src: /src/pdns/pdns/ssqlite3.cc:275,1
    - Dst: db
      Src: /src/pdns/pdns/ssqlite3.cc:275,1
    - Dst: strlen
      Src: /src/pdns/pdns/ssqlite3.cc:277,1
    - Dst: SLOG
      Src: /src/pdns/pdns/ssqlite3.cc:278,1
    - Dst: info
      Src: /src/pdns/pdns/ssqlite3.cc:279,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/ssqlite3.cc:279,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 282
      start: 261
    functionDepth: 1
    functionLinenumber: 261
    functionLinenumberEnd: 282
    functionName: SSQLite3Statement::prepareStatement
    functionSourceFile: /src/pdns/pdns/ssqlite3.cc
    functionUses: 2
    functionsReached:
    - sqlite3_prepare_v2
    - SLOG
    - sqlite3_prepare
    - Logging::Loggable
    - SSQLite3Statement::releaseStatement
    - db
    - string
    - info
    - strlen
    - c_str
    - SSqlException
    - SSQLite3ErrorString
    linkageType: ''
    returnType: void
    signature: void prepareStatement()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sqlite3_finalize
      Src: /src/pdns/pdns/ssqlite3.cc:287,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 291
      start: 284
    functionDepth: 0
    functionLinenumber: 284
    functionLinenumberEnd: 291
    functionName: SSQLite3Statement::releaseStatement
    functionSourceFile: /src/pdns/pdns/ssqlite3.cc
    functionUses: 2
    functionsReached:
    - sqlite3_finalize
    linkageType: ''
    returnType: void
    signature: void releaseStatement()
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: access
      Src: /src/pdns/pdns/ssqlite3.cc:300,1
    - Dst: c_str
      Src: /src/pdns/pdns/ssqlite3.cc:300,1
    - Dst: SSqlException
      Src: /src/pdns/pdns/ssqlite3.cc:302,1
    - Dst: SSqlException
      Src: /src/pdns/pdns/ssqlite3.cc:307,1
    - Dst: sqlite3_open
      Src: /src/pdns/pdns/ssqlite3.cc:311,1
    - Dst: c_str
      Src: /src/pdns/pdns/ssqlite3.cc:311,1
    - Dst: SSqlException
      Src: /src/pdns/pdns/ssqlite3.cc:312,1
    - Dst: sqlite3_busy_handler
      Src: /src/pdns/pdns/ssqlite3.cc:315,1
    - Dst: length
      Src: /src/pdns/pdns/ssqlite3.cc:317,1
    - Dst: SSQLite3::executeImpl
      Src: /src/pdns/pdns/ssqlite3.cc:318,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 20
    argCount: 4
    argNames:
    - log
    - ' database'
    - ' journalmode'
    - creat
    argTypes:
    - Logr::log_t
    - std::string
    - std::string
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 320
      start: 295
    functionDepth: 1
    functionLinenumber: 295
    functionLinenumberEnd: 320
    functionName: SSQLite3::SSQLite3
    functionSourceFile: /src/pdns/pdns/ssqlite3.cc
    functionUses: 0
    functionsReached:
    - length
    - SSQLite3::executeImpl
    - access
    - sqlite3_open
    - sqlite3_busy_handler
    - c_str
    - SSqlException
    linkageType: ''
    returnType: void
    signature: void SSQLite3::SSQLite3(Logr::log_t log, const std::string& database,
      const std::string& journalmode, bool creat)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - state
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 325
      start: 322
    functionDepth: 0
    functionLinenumber: 322
    functionLinenumberEnd: 325
    functionName: SSQLite3::setLog
    functionSourceFile: /src/pdns/pdns/ssqlite3.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void SSQLite3::setLog(bool state)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: sqlite3_close
      Src: /src/pdns/pdns/ssqlite3.cc:331,1
    - Dst: SSQLite3ErrorString
      Src: /src/pdns/pdns/ssqlite3.cc:335,1
    - Dst: abort
      Src: /src/pdns/pdns/ssqlite3.cc:340,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 342
      start: 328
    functionDepth: 1
    functionLinenumber: 328
    functionLinenumberEnd: 342
    functionName: SSQLite3::~SSQLite3()
    functionSourceFile: /src/pdns/pdns/ssqlite3.cc
    functionUses: 0
    functionsReached:
    - abort
    - sqlite3_close
    - SSQLite3ErrorString
    linkageType: ''
    returnType: void
    signature: void SSQLite3::~SSQLite3()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::make_unique<SSQLite3Statement>
      Src: /src/pdns/pdns/ssqlite3.cc:346,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' query'
    - nparams
    argTypes:
    - string
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 347
      start: 344
    functionDepth: 0
    functionLinenumber: 344
    functionLinenumberEnd: 347
    functionName: SSQLite3::prepare
    functionSourceFile: /src/pdns/pdns/ssqlite3.cc
    functionUses: 0
    functionsReached:
    - std::make_unique<SSQLite3Statement>
    linkageType: ''
    returnType: std::unique_ptr<SSqlStatement>
    signature: std::unique_ptr<SSqlStatement> SSQLite3::prepare(const string& query,
      int nparams __attribute__((unused)))
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: sqlite3_exec
      Src: /src/pdns/pdns/ssqlite3.cc:353,1
    - Dst: c_str
      Src: /src/pdns/pdns/ssqlite3.cc:353,1
    - Dst: sqlite3_free
      Src: /src/pdns/pdns/ssqlite3.cc:356,1
    - Dst: SSqlException
      Src: /src/pdns/pdns/ssqlite3.cc:360,1
    - Dst: sqlite3_exec
      Src: /src/pdns/pdns/ssqlite3.cc:362,1
    - Dst: c_str
      Src: /src/pdns/pdns/ssqlite3.cc:362,1
    - Dst: sqlite3_free
      Src: /src/pdns/pdns/ssqlite3.cc:366,1
    - Dst: SSqlException
      Src: /src/pdns/pdns/ssqlite3.cc:367,1
    - Dst: SSqlException
      Src: /src/pdns/pdns/ssqlite3.cc:371,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 19
    argCount: 1
    argNames:
    - ' query'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 373
      start: 349
    functionDepth: 0
    functionLinenumber: 349
    functionLinenumberEnd: 373
    functionName: SSQLite3::executeImpl
    functionSourceFile: /src/pdns/pdns/ssqlite3.cc
    functionUses: 1
    functionsReached:
    - sqlite3_exec
    - SSqlException
    - sqlite3_free
    - c_str
    linkageType: ''
    returnType: void
    signature: void SSQLite3::executeImpl(const string& query)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SSQLite3::executeImpl
      Src: /src/pdns/pdns/ssqlite3.cc:377,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' query'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 378
      start: 375
    functionDepth: 1
    functionLinenumber: 375
    functionLinenumberEnd: 378
    functionName: SSQLite3::execute
    functionSourceFile: /src/pdns/pdns/ssqlite3.cc
    functionUses: 1
    functionsReached:
    - SSQLite3::executeImpl
    linkageType: ''
    returnType: void
    signature: void SSQLite3::execute(const string& query)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Utility::usleep
      Src: /src/pdns/pdns/ssqlite3.cc:382,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - userData
    - invocationsSoFar
    argTypes:
    - void*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 384
      start: 380
    functionDepth: 0
    functionLinenumber: 380
    functionLinenumberEnd: 384
    functionName: SSQLite3::busyHandler
    functionSourceFile: /src/pdns/pdns/ssqlite3.cc
    functionUses: 0
    functionsReached:
    - Utility::usleep
    linkageType: ''
    returnType: int
    signature: int SSQLite3::busyHandler([[maybe_unused]] void* userData, [[maybe_unused]]
      int invocationsSoFar)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SSQLite3::execute
      Src: /src/pdns/pdns/ssqlite3.cc:388,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 390
      start: 386
    functionDepth: 2
    functionLinenumber: 386
    functionLinenumberEnd: 390
    functionName: SSQLite3::startTransaction
    functionSourceFile: /src/pdns/pdns/ssqlite3.cc
    functionUses: 0
    functionsReached:
    - SSQLite3::execute
    linkageType: ''
    returnType: void
    signature: void SSQLite3::startTransaction()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SSQLite3::execute
      Src: /src/pdns/pdns/ssqlite3.cc:394,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 396
      start: 392
    functionDepth: 2
    functionLinenumber: 392
    functionLinenumberEnd: 396
    functionName: SSQLite3::rollback
    functionSourceFile: /src/pdns/pdns/ssqlite3.cc
    functionUses: 0
    functionsReached:
    - SSQLite3::execute
    linkageType: ''
    returnType: void
    signature: void SSQLite3::rollback()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SSQLite3::execute
      Src: /src/pdns/pdns/ssqlite3.cc:400,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 402
      start: 398
    functionDepth: 2
    functionLinenumber: 398
    functionLinenumberEnd: 402
    functionName: SSQLite3::commit
    functionSourceFile: /src/pdns/pdns/ssqlite3.cc
    functionUses: 0
    functionsReached:
    - SSQLite3::execute
    linkageType: ''
    returnType: void
    signature: void SSQLite3::commit()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' reason'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 408
      start: 405
    functionDepth: 0
    functionLinenumber: 405
    functionLinenumberEnd: 408
    functionName: SSQLite3::sPerrorException
    functionSourceFile: /src/pdns/pdns/ssqlite3.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: SSqlException
    signature: SSqlException SSQLite3::sPerrorException(const std::string& reason)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::string::resize
      Src: /src/pdns/pdns/dnsdistdist/ednspadding.cc:28,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - bytes
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 30
      start: 25
    functionDepth: 1
    functionLinenumber: 25
    functionLinenumberEnd: 30
    functionName: makeEDNSPaddingOptString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ednspadding.cc
    functionUses: 0
    functionsReached:
    - std::string::resize
    linkageType: ''
    returnType: std::string
    signature: std::string makeEDNSPaddingOptString(size_t bytes)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 37
    functionDepth: 0
    functionLinenumber: 37
    functionLinenumberEnd: 37
    functionName: dnsdist::metrics::MutableCounter
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void MutableCounter()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 38
    functionDepth: 0
    functionLinenumber: 38
    functionLinenumberEnd: 38
    functionName: dnsdist::metrics::MutableCounter
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void MutableCounter(const MutableCounter&)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: d_value::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:40,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - MutableCounter
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 39
    functionDepth: 0
    functionLinenumber: 39
    functionLinenumberEnd: 42
    functionName: dnsdist::metrics::MutableCounter
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc
    functionUses: 0
    functionsReached:
    - d_value::load
    linkageType: ''
    returnType: void
    signature: void MutableCounter(MutableCounter&& rhs) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 43
    functionName: '& operator=(const MutableCounter&)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: MutableCounter
    signature: MutableCounter & operator=(const MutableCounter&)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: d_value::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:46,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - MutableCounter
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 44
    functionDepth: 0
    functionLinenumber: 44
    functionLinenumberEnd: 48
    functionName: '& operator=(MutableCounter&& rhs) noexcept'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc
    functionUses: 0
    functionsReached:
    - d_value::load
    linkageType: ''
    returnType: MutableCounter
    signature: MutableCounter & operator=(MutableCounter&& rhs) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 49
    functionDepth: 0
    functionLinenumber: 49
    functionLinenumberEnd: 49
    functionName: ~MutableCounter()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~MutableCounter()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 56
    functionDepth: 0
    functionLinenumber: 56
    functionLinenumberEnd: 56
    functionName: dnsdist::metrics::MutableGauge
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void MutableGauge()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 57
    functionDepth: 0
    functionLinenumber: 57
    functionLinenumberEnd: 57
    functionName: dnsdist::metrics::MutableGauge
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void MutableGauge(const MutableGauge&)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: d_value::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:59,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - MutableGauge
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 58
    functionDepth: 0
    functionLinenumber: 58
    functionLinenumberEnd: 61
    functionName: dnsdist::metrics::MutableGauge
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc
    functionUses: 0
    functionsReached:
    - d_value::load
    linkageType: ''
    returnType: void
    signature: void MutableGauge(MutableGauge&& rhs) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 62
    functionDepth: 0
    functionLinenumber: 62
    functionLinenumberEnd: 62
    functionName: '& operator=(const MutableGauge&)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: MutableGauge
    signature: MutableGauge & operator=(const MutableGauge&)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: d_value::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:65,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - MutableGauge
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 63
    functionDepth: 0
    functionLinenumber: 63
    functionLinenumberEnd: 67
    functionName: '& operator=(MutableGauge&& rhs) noexcept'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc
    functionUses: 0
    functionsReached:
    - d_value::load
    linkageType: ''
    returnType: MutableGauge
    signature: MutableGauge & operator=(MutableGauge&& rhs) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 68
    functionDepth: 0
    functionLinenumber: 68
    functionLinenumberEnd: 68
    functionName: ~MutableGauge()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~MutableGauge()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: udpErrorStats
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:131,1
    - Dst: udpErrorStats
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:132,1
    - Dst: udpErrorStats
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:133,1
    - Dst: udpErrorStats
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:134,1
    - Dst: udpErrorStats
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:135,1
    - Dst: udp6ErrorStats
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:136,1
    - Dst: udp6ErrorStats
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:137,1
    - Dst: udp6ErrorStats
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:138,1
    - Dst: udp6ErrorStats
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:139,1
    - Dst: udp6ErrorStats
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:140,1
    - Dst: tcpErrorStats
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:141,1
    - Dst: dnsdist::DynamicBlocks::getClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:156,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 25
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 172
      start: 79
    functionDepth: 1
    functionLinenumber: 79
    functionLinenumberEnd: 172
    functionName: dnsdist::metrics::Stats::Stats
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc
    functionUses: 0
    functionsReached:
    - dnsdist::DynamicBlocks::getClientAddressDynamicRules
    - udpErrorStats
    - tcpErrorStats
    - udp6ErrorStats
    linkageType: ''
    returnType: void
    signature: void Stats::Stats()
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: std::regex_match
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:178,1
    - Dst: std::regex
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:178,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:179,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:179,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:179,1
    - Dst: write_lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:184,1
    - Dst: auto::emplace
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:185,1
    - Dst: std::map<std::string, MutableCounter>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:185,1
    - Dst: auto::first::second::emplace
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:188,1
    - Dst: dnsdist::metrics::MutableCounter
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:188,1
    - Dst: entries::write_lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:189,1
    - Dst: dnsdist::webserver::addMetricDefinition
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:192,1
    - Dst: write_lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:196,1
    - Dst: auto::emplace
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:197,1
    - Dst: std::map<std::string, MutableGauge>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:197,1
    - Dst: auto::first::second::emplace
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:200,1
    - Dst: dnsdist::metrics::MutableGauge
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:200,1
    - Dst: entries::write_lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:201,1
    - Dst: dnsdist::webserver::addMetricDefinition
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:204,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:208,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 23
    argCount: 5
    argNames:
    - ' name'
    - ' type'
    - ' description'
    - customName
    - withLabels
    argTypes:
    - std::string
    - std::string
    - std::string
    - std::optional<std::string>
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 211
      start: 176
    functionDepth: 1
    functionLinenumber: 176
    functionLinenumberEnd: 211
    functionName: dnsdist::metrics::declareCustomMetric
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc
    functionUses: 0
    functionsReached:
    - auto::first::second::emplace
    - std::map<std::string, MutableGauge>
    - dnsdist::webserver::addMetricDefinition
    - std::regex
    - entries::write_lock
    - std::regex_match
    - auto::emplace
    - std::map<std::string, MutableCounter>
    - write_lock
    - dnsdist::metrics::MutableCounter
    - std::string
    - dnsdist::metrics::MutableGauge
    linkageType: ''
    returnType: std::optional<std::string>
    signature: std::optional<std::string> declareCustomMetric(const std::string& name,
      const std::string& type, const std::string& description, std::optional<std::string>
      customName, bool withLabels)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 1
    argNames:
    - ' value'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 231
      start: 213
    functionDepth: 0
    functionLinenumber: 213
    functionLinenumberEnd: 231
    functionName: dnsdist::metrics::prometheusLabelValueEscape
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: string
    signature: string prometheusLabelValueEscape(const string& value)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:235,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:238,1
    - Dst: std::map
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:239,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:239,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:239,1
    - Dst: std::accumulate
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:240,1
    - Dst: auto::begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:240,1
    - Dst: auto::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:240,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:240,1
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:241,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:241,1
    - Dst: dnsdist::metrics::prometheusLabelValueEscape
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:241,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - ' optLabels'
    argTypes:
    - Labels
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 243
      start: 233
    functionDepth: 1
    functionLinenumber: 233
    functionLinenumberEnd: 243
    functionName: dnsdist::metrics::generateCombinationOfLabels
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc
    functionUses: 0
    functionsReached:
    - std::accumulate
    - end
    - get
    - empty
    - dnsdist::metrics::prometheusLabelValueEscape
    - auto::begin
    - begin
    - auto::end
    - std::string
    - std::map
    linkageType: ''
    returnType: std::string
    signature: std::string generateCombinationOfLabels(const Labels& optLabels)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::metrics::generateCombinationOfLabels
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:248,1
    - Dst: read_lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:251,1
    - Dst: auto::find
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:252,1
    - Dst: auto::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:253,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:255,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:255,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:258,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:258,1
    - Dst: find
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:263,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:264,1
    - Dst: callback
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:265,1
    - Dst: auto::second::d_value::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:266,1
    - Dst: write_lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:274,1
    - Dst: auto::find
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:275,1
    - Dst: auto::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:276,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:278,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:278,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:281,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:281,1
    - Dst: find
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:286,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:287,1
    - Dst: callback
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:288,1
    - Dst: auto::second::d_value::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:289,1
    - Dst: emplace
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:291,1
    - Dst: std::forward_as_tuple
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:291,1
    - Dst: std::forward_as_tuple
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:291,1
    - Dst: entries::write_lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:292,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:292,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:292,1
    - Dst: callback
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:293,1
    - Dst: auto::second::d_value::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:294,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 29
    argCount: 4
    argNames:
    - ' name'
    - ' metricMap'
    - ' labels'
    - ' callback'
    argTypes:
    - std::string_view
    - SharedLockGuarded<std::map<std::string, LabelsToMetricMap<MetricType>, std::less<>>>
    - Labels
    - std::function<void(const MetricType&)>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 296
      start: 246
    functionDepth: 2
    functionLinenumber: 246
    functionLinenumberEnd: 296
    functionName: dnsdist::metrics::updateMetric
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc
    functionUses: 0
    functionsReached:
    - callback
    - std::move
    - emplace
    - std::forward_as_tuple
    - entries::write_lock
    - read_lock
    - end
    - auto::second::d_value::load
    - write_lock
    - auto::end
    - dnsdist::metrics::generateCombinationOfLabels
    - auto::find
    - std::string
    - find
    linkageType: ''
    returnType: std::variant<MetricValueType, Error>
    signature: std::variant<MetricValueType, Error> updateMetric(const std::string_view&
      name, SharedLockGuarded<std::map<std::string, LabelsToMetricMap<MetricType>,
      std::less<>>>& metricMap, const Labels& labels, const std::function<void(const
      MetricType&)>& callback)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::metrics::updateMetric
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:300,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - ' name'
    - step
    - ' labels'
    argTypes:
    - std::string_view
    - uint64_t
    - Labels
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 303
      start: 298
    functionDepth: 3
    functionLinenumber: 298
    functionLinenumberEnd: 303
    functionName: dnsdist::metrics::incrementCustomCounter
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc
    functionUses: 0
    functionsReached:
    - dnsdist::metrics::updateMetric
    linkageType: ''
    returnType: std::variant<uint64_t, Error>
    signature: std::variant<uint64_t, Error> incrementCustomCounter(const std::string_view&
      name, uint64_t step, const Labels& labels)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::metrics::updateMetric
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:307,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - ' name'
    - step
    - ' labels'
    argTypes:
    - std::string_view
    - uint64_t
    - Labels
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 310
      start: 305
    functionDepth: 3
    functionLinenumber: 305
    functionLinenumberEnd: 310
    functionName: dnsdist::metrics::decrementCustomCounter
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc
    functionUses: 0
    functionsReached:
    - dnsdist::metrics::updateMetric
    linkageType: ''
    returnType: std::variant<uint64_t, Error>
    signature: std::variant<uint64_t, Error> decrementCustomCounter(const std::string_view&
      name, uint64_t step, const Labels& labels)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::metrics::updateMetric
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:314,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - ' name'
    - value
    - ' labels'
    argTypes:
    - std::string_view
    - double
    - Labels
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 317
      start: 312
    functionDepth: 3
    functionLinenumber: 312
    functionLinenumberEnd: 317
    functionName: dnsdist::metrics::setCustomGauge
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc
    functionUses: 0
    functionsReached:
    - dnsdist::metrics::updateMetric
    linkageType: ''
    returnType: std::variant<double, Error>
    signature: std::variant<double, Error> setCustomGauge(const std::string_view&
      name, const double value, const Labels& labels)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: read_lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:322,1
    - Dst: auto::find
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:323,1
    - Dst: auto::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:324,1
    - Dst: dnsdist::metrics::generateCombinationOfLabels
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:325,1
    - Dst: auto::second::find
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:326,1
    - Dst: auto::second::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:327,1
    - Dst: static_cast<double>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:328,1
    - Dst: auto::second::d_value::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:328,1
    - Dst: read_lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:333,1
    - Dst: auto::find
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:334,1
    - Dst: auto::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:335,1
    - Dst: dnsdist::metrics::generateCombinationOfLabels
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:336,1
    - Dst: auto::second::find
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:337,1
    - Dst: auto::second::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:338,1
    - Dst: auto::second::d_value::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:339,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:343,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:343,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 2
    argNames:
    - ' name'
    - ' labels'
    argTypes:
    - std::string_view
    - Labels
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 344
      start: 319
    functionDepth: 2
    functionLinenumber: 319
    functionLinenumberEnd: 344
    functionName: dnsdist::metrics::getCustomMetric
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc
    functionUses: 0
    functionsReached:
    - static_cast<double>
    - auto::second::find
    - read_lock
    - auto::second::d_value::load
    - auto::second::end
    - auto::end
    - dnsdist::metrics::generateCombinationOfLabels
    - auto::find
    - std::string
    linkageType: ''
    returnType: std::variant<double, Error>
    signature: std::variant<double, Error> getCustomMetric(const std::string_view&
      name, const Labels& labels)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 37
    functionDepth: 0
    functionLinenumber: 37
    functionLinenumberEnd: 37
    functionName: dnsdist::metrics::MutableCounter
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void MutableCounter()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 38
    functionDepth: 0
    functionLinenumber: 38
    functionLinenumberEnd: 38
    functionName: dnsdist::metrics::MutableCounter
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void MutableCounter(const MutableCounter&)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: d_value::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:40,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - MutableCounter
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 39
    functionDepth: 0
    functionLinenumber: 39
    functionLinenumberEnd: 42
    functionName: dnsdist::metrics::MutableCounter
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc
    functionUses: 1
    functionsReached:
    - d_value::load
    linkageType: ''
    returnType: void
    signature: void MutableCounter(MutableCounter&& rhs) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 43
    functionName: '& operator=(const MutableCounter&)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: MutableCounter
    signature: MutableCounter & operator=(const MutableCounter&)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: d_value::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:46,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - MutableCounter
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 44
    functionDepth: 0
    functionLinenumber: 44
    functionLinenumberEnd: 48
    functionName: '& operator=(MutableCounter&& rhs) noexcept'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc
    functionUses: 0
    functionsReached:
    - d_value::load
    linkageType: ''
    returnType: MutableCounter
    signature: MutableCounter & operator=(MutableCounter&& rhs) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 49
    functionDepth: 0
    functionLinenumber: 49
    functionLinenumberEnd: 49
    functionName: ~MutableCounter()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~MutableCounter()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 56
    functionDepth: 0
    functionLinenumber: 56
    functionLinenumberEnd: 56
    functionName: dnsdist::metrics::MutableGauge
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void MutableGauge()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 57
    functionDepth: 0
    functionLinenumber: 57
    functionLinenumberEnd: 57
    functionName: dnsdist::metrics::MutableGauge
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void MutableGauge(const MutableGauge&)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: d_value::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:59,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - MutableGauge
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 58
    functionDepth: 0
    functionLinenumber: 58
    functionLinenumberEnd: 61
    functionName: dnsdist::metrics::MutableGauge
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc
    functionUses: 1
    functionsReached:
    - d_value::load
    linkageType: ''
    returnType: void
    signature: void MutableGauge(MutableGauge&& rhs) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 62
    functionDepth: 0
    functionLinenumber: 62
    functionLinenumberEnd: 62
    functionName: '& operator=(const MutableGauge&)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: MutableGauge
    signature: MutableGauge & operator=(const MutableGauge&)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: d_value::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:65,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - MutableGauge
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 63
    functionDepth: 0
    functionLinenumber: 63
    functionLinenumberEnd: 67
    functionName: '& operator=(MutableGauge&& rhs) noexcept'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc
    functionUses: 0
    functionsReached:
    - d_value::load
    linkageType: ''
    returnType: MutableGauge
    signature: MutableGauge & operator=(MutableGauge&& rhs) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 68
    functionDepth: 0
    functionLinenumber: 68
    functionLinenumberEnd: 68
    functionName: ~MutableGauge()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~MutableGauge()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: udpErrorStats
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:131,1
    - Dst: udpErrorStats
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:132,1
    - Dst: udpErrorStats
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:133,1
    - Dst: udpErrorStats
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:134,1
    - Dst: udpErrorStats
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:135,1
    - Dst: udp6ErrorStats
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:136,1
    - Dst: udp6ErrorStats
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:137,1
    - Dst: udp6ErrorStats
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:138,1
    - Dst: udp6ErrorStats
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:139,1
    - Dst: udp6ErrorStats
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:140,1
    - Dst: tcpErrorStats
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:141,1
    - Dst: dnsdist::DynamicBlocks::getClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:156,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 25
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 172
      start: 79
    functionDepth: 1
    functionLinenumber: 79
    functionLinenumberEnd: 172
    functionName: dnsdist::metrics::Stats::Stats
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc
    functionUses: 0
    functionsReached:
    - dnsdist::DynamicBlocks::getClientAddressDynamicRules
    - udpErrorStats
    - tcpErrorStats
    - udp6ErrorStats
    linkageType: ''
    returnType: void
    signature: void Stats::Stats()
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: std::regex_match
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:178,1
    - Dst: std::regex
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:178,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:179,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:179,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:179,1
    - Dst: write_lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:184,1
    - Dst: auto::emplace
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:185,1
    - Dst: std::map<std::string, MutableCounter>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:185,1
    - Dst: auto::first::second::emplace
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:188,1
    - Dst: dnsdist::metrics::MutableCounter
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:188,1
    - Dst: entries::write_lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:189,1
    - Dst: dnsdist::webserver::addMetricDefinition
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:192,1
    - Dst: write_lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:196,1
    - Dst: auto::emplace
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:197,1
    - Dst: std::map<std::string, MutableGauge>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:197,1
    - Dst: auto::first::second::emplace
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:200,1
    - Dst: dnsdist::metrics::MutableGauge
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:200,1
    - Dst: entries::write_lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:201,1
    - Dst: dnsdist::webserver::addMetricDefinition
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:204,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:208,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 23
    argCount: 5
    argNames:
    - ' name'
    - ' type'
    - ' description'
    - customName
    - withLabels
    argTypes:
    - std::string
    - std::string
    - std::string
    - std::optional<std::string>
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 211
      start: 176
    functionDepth: 1
    functionLinenumber: 176
    functionLinenumberEnd: 211
    functionName: dnsdist::metrics::declareCustomMetric
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc
    functionUses: 0
    functionsReached:
    - auto::first::second::emplace
    - std::map<std::string, MutableGauge>
    - dnsdist::webserver::addMetricDefinition
    - std::regex
    - entries::write_lock
    - std::regex_match
    - auto::emplace
    - std::map<std::string, MutableCounter>
    - write_lock
    - dnsdist::metrics::MutableCounter
    - std::string
    - dnsdist::metrics::MutableGauge
    linkageType: ''
    returnType: std::optional<std::string>
    signature: std::optional<std::string> declareCustomMetric(const std::string& name,
      const std::string& type, const std::string& description, std::optional<std::string>
      customName, bool withLabels)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 1
    argNames:
    - ' value'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 231
      start: 213
    functionDepth: 0
    functionLinenumber: 213
    functionLinenumberEnd: 231
    functionName: dnsdist::metrics::prometheusLabelValueEscape
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: string
    signature: string prometheusLabelValueEscape(const string& value)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:235,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:238,1
    - Dst: std::map
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:239,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:239,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:239,1
    - Dst: std::accumulate
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:240,1
    - Dst: auto::begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:240,1
    - Dst: auto::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:240,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:240,1
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:241,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:241,1
    - Dst: dnsdist::metrics::prometheusLabelValueEscape
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:241,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - ' optLabels'
    argTypes:
    - Labels
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 243
      start: 233
    functionDepth: 1
    functionLinenumber: 233
    functionLinenumberEnd: 243
    functionName: dnsdist::metrics::generateCombinationOfLabels
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc
    functionUses: 2
    functionsReached:
    - std::accumulate
    - end
    - get
    - empty
    - dnsdist::metrics::prometheusLabelValueEscape
    - auto::begin
    - begin
    - auto::end
    - std::string
    - std::map
    linkageType: ''
    returnType: std::string
    signature: std::string generateCombinationOfLabels(const Labels& optLabels)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::metrics::generateCombinationOfLabels
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:248,1
    - Dst: read_lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:251,1
    - Dst: auto::find
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:252,1
    - Dst: auto::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:253,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:255,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:255,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:258,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:258,1
    - Dst: find
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:263,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:264,1
    - Dst: callback
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:265,1
    - Dst: auto::second::d_value::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:266,1
    - Dst: write_lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:274,1
    - Dst: auto::find
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:275,1
    - Dst: auto::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:276,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:278,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:278,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:281,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:281,1
    - Dst: find
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:286,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:287,1
    - Dst: callback
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:288,1
    - Dst: auto::second::d_value::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:289,1
    - Dst: emplace
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:291,1
    - Dst: std::forward_as_tuple
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:291,1
    - Dst: std::forward_as_tuple
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:291,1
    - Dst: entries::write_lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:292,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:292,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:292,1
    - Dst: callback
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:293,1
    - Dst: auto::second::d_value::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:294,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 29
    argCount: 4
    argNames:
    - ' name'
    - ' metricMap'
    - ' labels'
    - ' callback'
    argTypes:
    - std::string_view
    - SharedLockGuarded<std::map<std::string, LabelsToMetricMap<MetricType>, std::less<>>>
    - Labels
    - std::function<void(const MetricType&)>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 296
      start: 246
    functionDepth: 2
    functionLinenumber: 246
    functionLinenumberEnd: 296
    functionName: dnsdist::metrics::updateMetric
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc
    functionUses: 3
    functionsReached:
    - callback
    - std::move
    - emplace
    - std::forward_as_tuple
    - entries::write_lock
    - read_lock
    - end
    - auto::second::d_value::load
    - write_lock
    - auto::end
    - dnsdist::metrics::generateCombinationOfLabels
    - auto::find
    - std::string
    - find
    linkageType: ''
    returnType: std::variant<MetricValueType, Error>
    signature: std::variant<MetricValueType, Error> updateMetric(const std::string_view&
      name, SharedLockGuarded<std::map<std::string, LabelsToMetricMap<MetricType>,
      std::less<>>>& metricMap, const Labels& labels, const std::function<void(const
      MetricType&)>& callback)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::metrics::updateMetric
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:300,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - ' name'
    - step
    - ' labels'
    argTypes:
    - std::string_view
    - uint64_t
    - Labels
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 303
      start: 298
    functionDepth: 3
    functionLinenumber: 298
    functionLinenumberEnd: 303
    functionName: dnsdist::metrics::incrementCustomCounter
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc
    functionUses: 0
    functionsReached:
    - dnsdist::metrics::updateMetric
    linkageType: ''
    returnType: std::variant<uint64_t, Error>
    signature: std::variant<uint64_t, Error> incrementCustomCounter(const std::string_view&
      name, uint64_t step, const Labels& labels)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::metrics::updateMetric
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:307,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - ' name'
    - step
    - ' labels'
    argTypes:
    - std::string_view
    - uint64_t
    - Labels
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 310
      start: 305
    functionDepth: 3
    functionLinenumber: 305
    functionLinenumberEnd: 310
    functionName: dnsdist::metrics::decrementCustomCounter
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc
    functionUses: 0
    functionsReached:
    - dnsdist::metrics::updateMetric
    linkageType: ''
    returnType: std::variant<uint64_t, Error>
    signature: std::variant<uint64_t, Error> decrementCustomCounter(const std::string_view&
      name, uint64_t step, const Labels& labels)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::metrics::updateMetric
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:314,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - ' name'
    - value
    - ' labels'
    argTypes:
    - std::string_view
    - double
    - Labels
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 317
      start: 312
    functionDepth: 3
    functionLinenumber: 312
    functionLinenumberEnd: 317
    functionName: dnsdist::metrics::setCustomGauge
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc
    functionUses: 0
    functionsReached:
    - dnsdist::metrics::updateMetric
    linkageType: ''
    returnType: std::variant<double, Error>
    signature: std::variant<double, Error> setCustomGauge(const std::string_view&
      name, const double value, const Labels& labels)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: read_lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:322,1
    - Dst: auto::find
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:323,1
    - Dst: auto::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:324,1
    - Dst: dnsdist::metrics::generateCombinationOfLabels
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:325,1
    - Dst: auto::second::find
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:326,1
    - Dst: auto::second::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:327,1
    - Dst: static_cast<double>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:328,1
    - Dst: auto::second::d_value::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:328,1
    - Dst: read_lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:333,1
    - Dst: auto::find
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:334,1
    - Dst: auto::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:335,1
    - Dst: dnsdist::metrics::generateCombinationOfLabels
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:336,1
    - Dst: auto::second::find
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:337,1
    - Dst: auto::second::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:338,1
    - Dst: auto::second::d_value::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:339,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:343,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc:343,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 2
    argNames:
    - ' name'
    - ' labels'
    argTypes:
    - std::string_view
    - Labels
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 344
      start: 319
    functionDepth: 2
    functionLinenumber: 319
    functionLinenumberEnd: 344
    functionName: dnsdist::metrics::getCustomMetric
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc
    functionUses: 0
    functionsReached:
    - static_cast<double>
    - auto::second::find
    - read_lock
    - auto::second::d_value::load
    - auto::second::end
    - auto::end
    - dnsdist::metrics::generateCombinationOfLabels
    - auto::find
    - std::string
    linkageType: ''
    returnType: std::variant<double, Error>
    signature: std::variant<double, Error> getCustomMetric(const std::string_view&
      name, const Labels& labels)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:42,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:42,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - fromFunction
    argTypes:
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 40
    functionDepth: 1
    functionLinenumber: 40
    functionLinenumberEnd: 43
    functionName: getLogger
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - dnsdist::logging::getTopLogger
    - Logging::Loggable
    linkageType: ''
    returnType: std::shared_ptr<const Logr::Logger>
    signature: std::shared_ptr<const Logr::Logger> getLogger(const std::string_view
      fromFunction)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - dnsQuestion
    argTypes:
    - dnsdist_ffi_dnsquestion_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 45
    functionDepth: 0
    functionLinenumber: 45
    functionLinenumberEnd: 48
    functionName: dnsdist_ffi_dnsquestion_get_qtype
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t dnsdist_ffi_dnsquestion_get_qtype(const dnsdist_ffi_dnsquestion_t*
      dnsQuestion)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - dnsQuestion
    argTypes:
    - dnsdist_ffi_dnsquestion_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 50
    functionDepth: 0
    functionLinenumber: 50
    functionLinenumberEnd: 53
    functionName: dnsdist_ffi_dnsquestion_get_qclass
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t dnsdist_ffi_dnsquestion_get_qclass(const dnsdist_ffi_dnsquestion_t*
      dnsQuestion)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:60,1
    - Dst: dnsdist_ffi_dnsquestion_t*::dq::getHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:60,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - dnsQuestion
    argTypes:
    - dnsdist_ffi_dnsquestion_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 55
    functionDepth: 1
    functionLinenumber: 55
    functionLinenumberEnd: 61
    functionName: dnsdist_ffi_dnsquestion_get_id
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 2
    functionsReached:
    - dnsdist_ffi_dnsquestion_t*::dq::getHeader
    - ntohs
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t dnsdist_ffi_dnsquestion_get_id(const dnsdist_ffi_dnsquestion_t*
      dnsQuestion)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: isIPv4
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:65,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 3
    argNames:
    - ' caAddr'
    - addr
    - addrSize
    argTypes:
    - ComboAddress
    - void**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 63
    functionDepth: 0
    functionLinenumber: 63
    functionLinenumberEnd: 73
    functionName: dnsdist_ffi_comboaddress_to_raw
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - isIPv4
    linkageType: ''
    returnType: void
    signature: void dnsdist_ffi_comboaddress_to_raw(const ComboAddress& caAddr, const
      void** addr, size_t* addrSize)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist_ffi_comboaddress_to_raw
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:77,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - dnsQuestion
    - addr
    - addrSize
    argTypes:
    - dnsdist_ffi_dnsquestion_t*
    - void**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 75
    functionDepth: 1
    functionLinenumber: 75
    functionLinenumberEnd: 78
    functionName: dnsdist_ffi_dnsquestion_get_localaddr
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - dnsdist_ffi_comboaddress_to_raw
    linkageType: ''
    returnType: void
    signature: void dnsdist_ffi_dnsquestion_get_localaddr(const dnsdist_ffi_dnsquestion_t*
      dnsQuestion, const void** addr, size_t* addrSize)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist_ffi_dnsquestion_t*::dq::ids::origRemote::isIPv6
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:86,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - dnsQuestion
    argTypes:
    - dnsdist_ffi_dnsquestion_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 80
    functionDepth: 0
    functionLinenumber: 80
    functionLinenumberEnd: 87
    functionName: dnsdist_ffi_dnsquestion_is_remote_v6
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - dnsdist_ffi_dnsquestion_t*::dq::ids::origRemote::isIPv6
    linkageType: ''
    returnType: bool
    signature: bool dnsdist_ffi_dnsquestion_is_remote_v6(const dnsdist_ffi_dnsquestion_t*
      dnsQuestion)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist_ffi_comboaddress_to_raw
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:91,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - dnsQuestion
    - addr
    - addrSize
    argTypes:
    - dnsdist_ffi_dnsquestion_t*
    - void**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 89
    functionDepth: 1
    functionLinenumber: 89
    functionLinenumberEnd: 92
    functionName: dnsdist_ffi_dnsquestion_get_remoteaddr
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - dnsdist_ffi_comboaddress_to_raw
    linkageType: ''
    returnType: void
    signature: void dnsdist_ffi_dnsquestion_get_remoteaddr(const dnsdist_ffi_dnsquestion_t*
      dnsQuestion, const void** addr, size_t* addrSize)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::MacAddressesCache::get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:100,1
    - Dst: reinterpret_cast<unsigned char*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:100,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - dnsQuestion
    - buffer
    - bufferSize
    argTypes:
    - dnsdist_ffi_dnsquestion_t*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 94
    functionDepth: 0
    functionLinenumber: 94
    functionLinenumberEnd: 106
    functionName: dnsdist_ffi_dnsquestion_get_mac_addr
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - reinterpret_cast<unsigned char*>
    - dnsdist::MacAddressesCache::get
    linkageType: ''
    returnType: size_t
    signature: size_t dnsdist_ffi_dnsquestion_get_mac_addr(const dnsdist_ffi_dnsquestion_t*
      dnsQuestion, void* buffer, size_t bufferSize)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<uint64_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:114,1
    - Dst: std::round
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:114,1
    - Dst: dnsdist_ffi_dnsquestion_t*::dq::ids::queryRealTime::udiff
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:114,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - dnsQuestion
    argTypes:
    - dnsdist_ffi_dnsquestion_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 115
      start: 108
    functionDepth: 1
    functionLinenumber: 108
    functionLinenumberEnd: 115
    functionName: dnsdist_ffi_dnsquestion_get_elapsed_us
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - dnsdist_ffi_dnsquestion_t*::dq::ids::queryRealTime::udiff
    - std::round
    - static_cast<uint64_t>
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t dnsdist_ffi_dnsquestion_get_elapsed_us(const dnsdist_ffi_dnsquestion_t*
      dnsQuestion)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:120,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:120,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:121,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - functionName
    - dnsQuestion
    argTypes:
    - char*
    - dnsdist_ffi_dnsquestion_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 125
      start: 117
    functionDepth: 0
    functionLinenumber: 117
    functionLinenumberEnd: 125
    functionName: checkDNSQuestionType
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - VERBOSESLOG
    - infolog
    - getLogger
    linkageType: ''
    returnType: bool
    signature: bool checkDNSQuestionType(const char* functionName, const dnsdist_ffi_dnsquestion_t*
      dnsQuestion)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:130,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:130,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:131,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - functionName
    - dnsResponse
    argTypes:
    - char*
    - dnsdist_ffi_dnsresponse_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 135
      start: 127
    functionDepth: 0
    functionLinenumber: 127
    functionLinenumberEnd: 135
    functionName: checkDNSResponseType
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - VERBOSESLOG
    - infolog
    - getLogger
    linkageType: ''
    returnType: bool
    signature: bool checkDNSResponseType(const char* functionName, const dnsdist_ffi_dnsresponse_t*
      dnsResponse)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: checkDNSQuestionType
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:140,1
    - Dst: Netmask
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:144,1
    - Dst: dnsdist_ffi_comboaddress_to_raw
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:145,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 4
    argNames:
    - dnsQuestion
    - addr
    - addrSize
    - bits
    argTypes:
    - dnsdist_ffi_dnsquestion_t*
    - void**
    - size_t*
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 146
      start: 137
    functionDepth: 1
    functionLinenumber: 137
    functionLinenumberEnd: 146
    functionName: dnsdist_ffi_dnsquestion_get_masked_remoteaddr
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - checkDNSQuestionType
    - Netmask
    - dnsdist_ffi_comboaddress_to_raw
    linkageType: ''
    returnType: void
    signature: void dnsdist_ffi_dnsquestion_get_masked_remoteaddr(dnsdist_ffi_dnsquestion_t*
      dnsQuestion, const void** addr, size_t* addrSize, uint8_t bits)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist_ffi_dnsquestion_t*::dq::ids::origDest::getPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:150,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - dnsQuestion
    argTypes:
    - dnsdist_ffi_dnsquestion_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 151
      start: 148
    functionDepth: 0
    functionLinenumber: 148
    functionLinenumberEnd: 151
    functionName: dnsdist_ffi_dnsquestion_get_local_port
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - dnsdist_ffi_dnsquestion_t*::dq::ids::origDest::getPort
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t dnsdist_ffi_dnsquestion_get_local_port(const dnsdist_ffi_dnsquestion_t*
      dnsQuestion)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist_ffi_dnsquestion_t*::dq::ids::origRemote::getPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:155,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - dnsQuestion
    argTypes:
    - dnsdist_ffi_dnsquestion_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 156
      start: 153
    functionDepth: 0
    functionLinenumber: 153
    functionLinenumberEnd: 156
    functionName: dnsdist_ffi_dnsquestion_get_remote_port
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - dnsdist_ffi_dnsquestion_t*::dq::ids::origRemote::getPort
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t dnsdist_ffi_dnsquestion_get_remote_port(const dnsdist_ffi_dnsquestion_t*
      dnsQuestion)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist_ffi_dnsquestion_t*::dq::ids::cs::interface::c_str
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:163,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 5
    argCount: 1
    argNames:
    - dnsQuestion
    argTypes:
    - dnsdist_ffi_dnsquestion_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 164
      start: 158
    functionDepth: 0
    functionLinenumber: 158
    functionLinenumberEnd: 164
    functionName: dnsdist_ffi_dnsquestion_get_incoming_interface
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - dnsdist_ffi_dnsquestion_t*::dq::ids::cs::interface::c_str
    linkageType: ''
    returnType: char
    signature: char * dnsdist_ffi_dnsquestion_get_incoming_interface(const dnsdist_ffi_dnsquestion_t*
      dnsQuestion)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist_ffi_dnsquestion_t*::dq::ids::qname::getStorage
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:168,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:169,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:170,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - dnsQuestion
    - qname
    - qnameSize
    argTypes:
    - dnsdist_ffi_dnsquestion_t*
    - char**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 171
      start: 166
    functionDepth: 0
    functionLinenumber: 166
    functionLinenumberEnd: 171
    functionName: dnsdist_ffi_dnsquestion_get_qname_raw
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - dnsdist_ffi_dnsquestion_t*::dq::ids::qname::getStorage
    - size
    - data
    linkageType: ''
    returnType: void
    signature: void dnsdist_ffi_dnsquestion_get_qname_raw(const dnsdist_ffi_dnsquestion_t*
      dnsQuestion, const char** qname, size_t* qnameSize)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist_ffi_dnsquestion_t*::dq::ids::qname::hash
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:175,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - dnsQuestion
    - init
    argTypes:
    - dnsdist_ffi_dnsquestion_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 176
      start: 173
    functionDepth: 2
    functionLinenumber: 173
    functionLinenumberEnd: 176
    functionName: dnsdist_ffi_dnsquestion_get_qname_hash
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - dnsdist_ffi_dnsquestion_t*::dq::ids::qname::hash
    linkageType: ''
    returnType: size_t
    signature: size_t dnsdist_ffi_dnsquestion_get_qname_hash(const dnsdist_ffi_dnsquestion_t*
      dnsQuestion, size_t init)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist_ffi_dnsquestion_t*::dq::getHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:180,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - dnsQuestion
    argTypes:
    - dnsdist_ffi_dnsquestion_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 181
      start: 178
    functionDepth: 1
    functionLinenumber: 178
    functionLinenumberEnd: 181
    functionName: dnsdist_ffi_dnsquestion_get_rcode
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - dnsdist_ffi_dnsquestion_t*::dq::getHeader
    linkageType: ''
    returnType: int
    signature: int dnsdist_ffi_dnsquestion_get_rcode(const dnsdist_ffi_dnsquestion_t*
      dnsQuestion)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist_ffi_dnsquestion_t*::dq::getMutableHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:185,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - dnsQuestion
    argTypes:
    - dnsdist_ffi_dnsquestion_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 186
      start: 183
    functionDepth: 1
    functionLinenumber: 183
    functionLinenumberEnd: 186
    functionName: dnsdist_ffi_dnsquestion_get_header
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - dnsdist_ffi_dnsquestion_t*::dq::getMutableHeader
    linkageType: ''
    returnType: void
    signature: void * dnsdist_ffi_dnsquestion_get_header(const dnsdist_ffi_dnsquestion_t*
      dnsQuestion)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist_ffi_dnsquestion_t*::dq::getData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:190,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - dnsQuestion
    argTypes:
    - dnsdist_ffi_dnsquestion_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 191
      start: 188
    functionDepth: 0
    functionLinenumber: 188
    functionLinenumberEnd: 191
    functionName: dnsdist_ffi_dnsquestion_get_data
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - dnsdist_ffi_dnsquestion_t*::dq::getData
    linkageType: ''
    returnType: unsigned char
    signature: unsigned char * dnsdist_ffi_dnsquestion_get_data(const dnsdist_ffi_dnsquestion_t*
      dnsQuestion)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist_ffi_dnsquestion_t*::dq::getHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:199,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:200,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:200,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 6
    argCount: 3
    argNames:
    - dnsQuestion
    - buffer
    - buffer_size
    argTypes:
    - dnsdist_ffi_dnsquestion_t*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 202
      start: 193
    functionDepth: 1
    functionLinenumber: 193
    functionLinenumberEnd: 202
    functionName: dnsdist_ffi_dnsquestion_get_header_copy
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - memcpy
    - dnsdist_ffi_dnsquestion_t*::dq::getHeader
    - auto::get
    linkageType: ''
    returnType: bool
    signature: bool dnsdist_ffi_dnsquestion_get_header_copy(const dnsdist_ffi_dnsquestion_t*
      dnsQuestion, char* buffer, size_t buffer_size)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist_ffi_dnsquestion_t*::dq::editHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:210,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:211,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - dnsQuestion
    - buffer
    argTypes:
    - dnsdist_ffi_dnsquestion_t*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 215
      start: 204
    functionDepth: 0
    functionLinenumber: 204
    functionLinenumberEnd: 215
    functionName: dnsdist_ffi_dnsquestion_set_header
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - memcpy
    - dnsdist_ffi_dnsquestion_t*::dq::editHeader
    linkageType: ''
    returnType: bool
    signature: bool dnsdist_ffi_dnsquestion_set_header(const dnsdist_ffi_dnsquestion_t*
      dnsQuestion, const char* buffer)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist_ffi_dnsquestion_t*::dq::getData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:219,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - dnsQuestion
    argTypes:
    - dnsdist_ffi_dnsquestion_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 220
      start: 217
    functionDepth: 0
    functionLinenumber: 217
    functionLinenumberEnd: 220
    functionName: dnsdist_ffi_dnsquestion_get_len
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - dnsdist_ffi_dnsquestion_t*::dq::getData
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t dnsdist_ffi_dnsquestion_get_len(const dnsdist_ffi_dnsquestion_t*
      dnsQuestion)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist_ffi_dnsquestion_t*::dq::getData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:224,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - dnsQuestion
    argTypes:
    - dnsdist_ffi_dnsquestion_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 225
      start: 222
    functionDepth: 0
    functionLinenumber: 222
    functionLinenumberEnd: 225
    functionName: dnsdist_ffi_dnsquestion_get_size
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - dnsdist_ffi_dnsquestion_t*::dq::getData
    linkageType: ''
    returnType: size_t
    signature: size_t dnsdist_ffi_dnsquestion_get_size(const dnsdist_ffi_dnsquestion_t*
      dnsQuestion)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist_ffi_dnsquestion_t*::dq::getMutableData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:230,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - dnsQuestion
    - newSize
    argTypes:
    - dnsdist_ffi_dnsquestion_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 236
      start: 227
    functionDepth: 0
    functionLinenumber: 227
    functionLinenumberEnd: 236
    functionName: dnsdist_ffi_dnsquestion_set_size
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - dnsdist_ffi_dnsquestion_t*::dq::getMutableData
    linkageType: ''
    returnType: bool
    signature: bool dnsdist_ffi_dnsquestion_set_size(dnsdist_ffi_dnsquestion_t* dnsQuestion,
      size_t newSize)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist_ffi_dnsquestion_t*::dq::getHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:240,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - dnsQuestion
    argTypes:
    - dnsdist_ffi_dnsquestion_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 241
      start: 238
    functionDepth: 1
    functionLinenumber: 238
    functionLinenumberEnd: 241
    functionName: dnsdist_ffi_dnsquestion_get_opcode
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - dnsdist_ffi_dnsquestion_t*::dq::getHeader
    linkageType: ''
    returnType: uint8_t
    signature: uint8_t dnsdist_ffi_dnsquestion_get_opcode(const dnsdist_ffi_dnsquestion_t*
      dnsQuestion)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist_ffi_dnsquestion_t*::dq::overTCP
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:245,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - dnsQuestion
    argTypes:
    - dnsdist_ffi_dnsquestion_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 246
      start: 243
    functionDepth: 1
    functionLinenumber: 243
    functionLinenumberEnd: 246
    functionName: dnsdist_ffi_dnsquestion_get_tcp
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - dnsdist_ffi_dnsquestion_t*::dq::overTCP
    linkageType: ''
    returnType: bool
    signature: bool dnsdist_ffi_dnsquestion_get_tcp(const dnsdist_ffi_dnsquestion_t*
      dnsQuestion)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist_ffi_dnsquestion_t*::dq::getProtocol
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:251,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 22
    argCount: 1
    argNames:
    - dnsQuestion
    argTypes:
    - dnsdist_ffi_dnsquestion_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 272
      start: 248
    functionDepth: 1
    functionLinenumber: 248
    functionLinenumberEnd: 272
    functionName: dnsdist_ffi_dnsquestion_get_protocol
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - dnsdist_ffi_dnsquestion_t*::dq::getProtocol
    linkageType: ''
    returnType: dnsdist_ffi_protocol_type
    signature: dnsdist_ffi_protocol_type dnsdist_ffi_dnsquestion_get_protocol(const
      dnsdist_ffi_dnsquestion_t* dnsQuestion)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - dnsQuestion
    argTypes:
    - dnsdist_ffi_dnsquestion_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 277
      start: 274
    functionDepth: 0
    functionLinenumber: 274
    functionLinenumberEnd: 277
    functionName: dnsdist_ffi_dnsquestion_get_skip_cache
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool dnsdist_ffi_dnsquestion_get_skip_cache(const dnsdist_ffi_dnsquestion_t*
      dnsQuestion)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - dnsQuestion
    argTypes:
    - dnsdist_ffi_dnsquestion_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 282
      start: 279
    functionDepth: 0
    functionLinenumber: 279
    functionLinenumberEnd: 282
    functionName: dnsdist_ffi_dnsquestion_get_use_ecs
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool dnsdist_ffi_dnsquestion_get_use_ecs(const dnsdist_ffi_dnsquestion_t*
      dnsQuestion)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - dnsQuestion
    argTypes:
    - dnsdist_ffi_dnsquestion_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 287
      start: 284
    functionDepth: 0
    functionLinenumber: 284
    functionLinenumberEnd: 287
    functionName: dnsdist_ffi_dnsquestion_get_ecs_override
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool dnsdist_ffi_dnsquestion_get_ecs_override(const dnsdist_ffi_dnsquestion_t*
      dnsQuestion)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - dnsQuestion
    argTypes:
    - dnsdist_ffi_dnsquestion_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 292
      start: 289
    functionDepth: 0
    functionLinenumber: 289
    functionLinenumberEnd: 292
    functionName: dnsdist_ffi_dnsquestion_get_ecs_prefix_length
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t dnsdist_ffi_dnsquestion_get_ecs_prefix_length(const dnsdist_ffi_dnsquestion_t*
      dnsQuestion)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - dnsQuestion
    argTypes:
    - dnsdist_ffi_dnsquestion_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 297
      start: 294
    functionDepth: 0
    functionLinenumber: 294
    functionLinenumberEnd: 297
    functionName: dnsdist_ffi_dnsquestion_is_temp_failure_ttl_set
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool dnsdist_ffi_dnsquestion_is_temp_failure_ttl_set(const dnsdist_ffi_dnsquestion_t*
      dnsQuestion)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - dnsQuestion
    argTypes:
    - dnsdist_ffi_dnsquestion_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 305
      start: 299
    functionDepth: 0
    functionLinenumber: 299
    functionLinenumberEnd: 305
    functionName: dnsdist_ffi_dnsquestion_get_temp_failure_ttl
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t dnsdist_ffi_dnsquestion_get_temp_failure_ttl(const dnsdist_ffi_dnsquestion_t*
      dnsQuestion)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::getEDNSZ
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:309,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - dnsQuestion
    argTypes:
    - dnsdist_ffi_dnsquestion_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 310
      start: 307
    functionDepth: 1
    functionLinenumber: 307
    functionLinenumberEnd: 310
    functionName: dnsdist_ffi_dnsquestion_get_do
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - dnsdist::getEDNSZ
    linkageType: ''
    returnType: bool
    signature: bool dnsdist_ffi_dnsquestion_get_do(const dnsdist_ffi_dnsquestion_t*
      dnsQuestion)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::getEDNSVersion
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:314,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - dnsQuestion
    argTypes:
    - dnsdist_ffi_dnsquestion_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 316
      start: 312
    functionDepth: 1
    functionLinenumber: 312
    functionLinenumberEnd: 316
    functionName: dnsdist_ffi_dnsquestion_get_edns_version
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - dnsdist::getEDNSVersion
    linkageType: ''
    returnType: uint8_t
    signature: uint8_t dnsdist_ffi_dnsquestion_get_edns_version(const dnsdist_ffi_dnsquestion_t*
      dnsQuestion)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::getEDNSExtendedRCode
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:320,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - dnsQuestion
    argTypes:
    - dnsdist_ffi_dnsquestion_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 322
      start: 318
    functionDepth: 1
    functionLinenumber: 318
    functionLinenumberEnd: 322
    functionName: dnsdist_ffi_dnsquestion_get_edns_extended_rcode
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - dnsdist::getEDNSExtendedRCode
    linkageType: ''
    returnType: uint8_t
    signature: uint8_t dnsdist_ffi_dnsquestion_get_edns_extended_rcode(const dnsdist_ffi_dnsquestion_t*
      dnsQuestion)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist_ffi_dnsquestion_t*::dq::sni::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:326,1
    - Dst: dnsdist_ffi_dnsquestion_t*::dq::sni::c_str
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:327,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - dnsQuestion
    - sni
    - sniSize
    argTypes:
    - dnsdist_ffi_dnsquestion_t*
    - char**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 328
      start: 324
    functionDepth: 0
    functionLinenumber: 324
    functionLinenumberEnd: 328
    functionName: dnsdist_ffi_dnsquestion_get_sni
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - dnsdist_ffi_dnsquestion_t*::dq::sni::size
    - dnsdist_ffi_dnsquestion_t*::dq::sni::c_str
    linkageType: ''
    returnType: void
    signature: void dnsdist_ffi_dnsquestion_get_sni(const dnsdist_ffi_dnsquestion_t*
      dnsQuestion, const char** sni, size_t* sniSize)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist_ffi_dnsquestion_t*::dq::ids::qTag::find
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:335,1
    - Dst: dnsdist_ffi_dnsquestion_t*::dq::ids::qTag::cend
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:336,1
    - Dst: auto::second::c_str
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:337,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 7
    argCount: 2
    argNames:
    - dnsQuestion
    - label
    argTypes:
    - dnsdist_ffi_dnsquestion_t*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 342
      start: 330
    functionDepth: 0
    functionLinenumber: 330
    functionLinenumberEnd: 342
    functionName: dnsdist_ffi_dnsquestion_get_tag
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - auto::second::c_str
    - dnsdist_ffi_dnsquestion_t*::dq::ids::qTag::cend
    - dnsdist_ffi_dnsquestion_t*::dq::ids::qTag::find
    linkageType: ''
    returnType: char
    signature: char * dnsdist_ffi_dnsquestion_get_tag(const dnsdist_ffi_dnsquestion_t*
      dnsQuestion, const char* label)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist_ffi_dnsquestion_t*::dq::ids::qTag::find
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:350,1
    - Dst: dnsdist_ffi_dnsquestion_t*::dq::ids::qTag::cend
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:351,1
    - Dst: auto::second::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:355,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:359,1
    - Dst: auto::second::c_str
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:359,1
    - Dst: auto::second::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:359,1
    - Dst: auto::second::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:360,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 12
    argCount: 4
    argNames:
    - dnsQuestion
    - label
    - buffer
    - bufferSize
    argTypes:
    - dnsdist_ffi_dnsquestion_t*
    - char*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 361
      start: 344
    functionDepth: 0
    functionLinenumber: 344
    functionLinenumberEnd: 361
    functionName: dnsdist_ffi_dnsquestion_get_tag_raw
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - memcpy
    - auto::second::c_str
    - dnsdist_ffi_dnsquestion_t*::dq::ids::qTag::cend
    - dnsdist_ffi_dnsquestion_t*::dq::ids::qTag::find
    - auto::second::size
    linkageType: ''
    returnType: size_t
    signature: size_t dnsdist_ffi_dnsquestion_get_tag_raw(const dnsdist_ffi_dnsquestion_t*
      dnsQuestion, const char* label, char* buffer, size_t bufferSize)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: checkDNSQuestionType
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:366,1
    - Dst: dnsdist_ffi_dnsquestion_t*::dq::ids::du::getHTTPPath
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:373,1
    - Dst: dnsdist_ffi_dnsquestion_t*::dq::ids::doh3u::getHTTPPath
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:378,1
    - Dst: dnsdist_ffi_dnsquestion_t*::httpPath::c_str
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:383,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 1
    argNames:
    - dnsQuestion
    argTypes:
    - dnsdist_ffi_dnsquestion_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 386
      start: 363
    functionDepth: 1
    functionLinenumber: 363
    functionLinenumberEnd: 386
    functionName: dnsdist_ffi_dnsquestion_get_http_path
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - checkDNSQuestionType
    - dnsdist_ffi_dnsquestion_t*::httpPath::c_str
    - dnsdist_ffi_dnsquestion_t*::dq::ids::du::getHTTPPath
    - dnsdist_ffi_dnsquestion_t*::dq::ids::doh3u::getHTTPPath
    linkageType: ''
    returnType: char
    signature: char * dnsdist_ffi_dnsquestion_get_http_path(dnsdist_ffi_dnsquestion_t*
      dnsQuestion)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: checkDNSQuestionType
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:391,1
    - Dst: dnsdist_ffi_dnsquestion_t*::dq::ids::du::getHTTPQueryString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:398,1
    - Dst: dnsdist_ffi_dnsquestion_t*::dq::ids::doh3u::getHTTPQueryString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:403,1
    - Dst: dnsdist_ffi_dnsquestion_t*::httpQueryString::c_str
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:408,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 1
    argNames:
    - dnsQuestion
    argTypes:
    - dnsdist_ffi_dnsquestion_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 411
      start: 388
    functionDepth: 1
    functionLinenumber: 388
    functionLinenumberEnd: 411
    functionName: dnsdist_ffi_dnsquestion_get_http_query_string
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - checkDNSQuestionType
    - dnsdist_ffi_dnsquestion_t*::httpQueryString::c_str
    - dnsdist_ffi_dnsquestion_t*::dq::ids::du::getHTTPQueryString
    - dnsdist_ffi_dnsquestion_t*::dq::ids::doh3u::getHTTPQueryString
    linkageType: ''
    returnType: char
    signature: char * dnsdist_ffi_dnsquestion_get_http_query_string(dnsdist_ffi_dnsquestion_t*
      dnsQuestion)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: checkDNSQuestionType
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:416,1
    - Dst: dnsdist_ffi_dnsquestion_t*::dq::ids::du::getHTTPHost
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:423,1
    - Dst: dnsdist_ffi_dnsquestion_t*::dq::ids::doh3u::getHTTPHost
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:428,1
    - Dst: dnsdist_ffi_dnsquestion_t*::httpHost::c_str
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:433,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 1
    argNames:
    - dnsQuestion
    argTypes:
    - dnsdist_ffi_dnsquestion_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 436
      start: 413
    functionDepth: 1
    functionLinenumber: 413
    functionLinenumberEnd: 436
    functionName: dnsdist_ffi_dnsquestion_get_http_host
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - checkDNSQuestionType
    - dnsdist_ffi_dnsquestion_t*::dq::ids::doh3u::getHTTPHost
    - dnsdist_ffi_dnsquestion_t*::httpHost::c_str
    - dnsdist_ffi_dnsquestion_t*::dq::ids::du::getHTTPHost
    linkageType: ''
    returnType: char
    signature: char * dnsdist_ffi_dnsquestion_get_http_host(dnsdist_ffi_dnsquestion_t*
      dnsQuestion)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: checkDNSQuestionType
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:441,1
    - Dst: dnsdist_ffi_dnsquestion_t*::dq::ids::du::getHTTPScheme
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:448,1
    - Dst: dnsdist_ffi_dnsquestion_t*::dq::ids::doh3u::getHTTPScheme
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:453,1
    - Dst: dnsdist_ffi_dnsquestion_t*::httpScheme::c_str
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:458,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 1
    argNames:
    - dnsQuestion
    argTypes:
    - dnsdist_ffi_dnsquestion_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 461
      start: 438
    functionDepth: 1
    functionLinenumber: 438
    functionLinenumberEnd: 461
    functionName: dnsdist_ffi_dnsquestion_get_http_scheme
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - checkDNSQuestionType
    - dnsdist_ffi_dnsquestion_t*::httpScheme::c_str
    - dnsdist_ffi_dnsquestion_t*::dq::ids::du::getHTTPScheme
    - dnsdist_ffi_dnsquestion_t*::dq::ids::doh3u::getHTTPScheme
    linkageType: ''
    returnType: char
    signature: char * dnsdist_ffi_dnsquestion_get_http_scheme(dnsdist_ffi_dnsquestion_t*
      dnsQuestion)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - ' value'
    - ' option'
    argTypes:
    - EDNSOptionViewValue
    - dnsdist_ffi_ednsoption_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 471
      start: 463
    functionDepth: 0
    functionLinenumber: 463
    functionLinenumberEnd: 471
    functionName: fill_edns_option
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void fill_edns_option(const EDNSOptionViewValue& value, dnsdist_ffi_ednsoption_t&
      option)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: checkDNSQuestionType
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:477,1
    - Dst: parseEDNSOptions
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:481,1
    - Dst: second::values::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:488,1
    - Dst: std::make_unique<std::vector<dnsdist_ffi_ednsoption_t>>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:492,1
    - Dst: dnsdist_ffi_dnsquestion_t*::ednsOptionsVect::clear
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:494,1
    - Dst: dnsdist_ffi_dnsquestion_t*::ednsOptionsVect::resize
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:495,1
    - Dst: fill_edns_option
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:499,1
    - Dst: dnsdist_ffi_dnsquestion_t*::ednsOptionsVect::at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:499,1
    - Dst: dnsdist_ffi_dnsquestion_t*::ednsOptionsVect::at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:500,1
    - Dst: dnsdist_ffi_dnsquestion_t*::ednsOptionsVect::data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:506,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 23
    argCount: 2
    argNames:
    - dnsQuestion
    - out
    argTypes:
    - dnsdist_ffi_dnsquestion_t*
    - dnsdist_ffi_ednsoption_t**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 510
      start: 474
    functionDepth: 1
    functionLinenumber: 474
    functionLinenumberEnd: 510
    functionName: dnsdist_ffi_dnsquestion_get_edns_options
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - checkDNSQuestionType
    - second::values::size
    - std::make_unique<std::vector<dnsdist_ffi_ednsoption_t>>
    - parseEDNSOptions
    - fill_edns_option
    - dnsdist_ffi_dnsquestion_t*::ednsOptionsVect::resize
    - dnsdist_ffi_dnsquestion_t*::ednsOptionsVect::at
    - dnsdist_ffi_dnsquestion_t*::ednsOptionsVect::clear
    - dnsdist_ffi_dnsquestion_t*::ednsOptionsVect::data
    linkageType: ''
    returnType: size_t
    signature: size_t dnsdist_ffi_dnsquestion_get_edns_options(dnsdist_ffi_dnsquestion_t*
      dnsQuestion, const dnsdist_ffi_ednsoption_t** out)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: checkDNSQuestionType
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:516,1
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:521,1
    - Dst: std::make_unique<std::unordered_map<std::string, std::string>>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:524,1
    - Dst: std::make_unique<std::vector<dnsdist_ffi_http_header_t>>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:526,1
    - Dst: dnsdist_ffi_dnsquestion_t*::httpHeadersVect::clear
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:528,1
    - Dst: dnsdist_ffi_dnsquestion_t*::httpHeadersVect::resize
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:529,1
    - Dst: dnsdist_ffi_dnsquestion_t*::httpHeaders::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:529,1
    - Dst: dnsdist_ffi_dnsquestion_t*::httpHeadersVect::at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:532,1
    - Dst: first::c_str
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:532,1
    - Dst: dnsdist_ffi_dnsquestion_t*::httpHeadersVect::at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:533,1
    - Dst: second::c_str
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:533,1
    - Dst: dnsdist_ffi_dnsquestion_t*::dq::ids::du::getHTTPHeaders
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:540,1
    - Dst: processHeaders
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:541,1
    - Dst: dnsdist_ffi_dnsquestion_t*::dq::ids::doh3u::getHTTPHeaders
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:546,1
    - Dst: processHeaders
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:547,1
    - Dst: dnsdist_ffi_dnsquestion_t*::httpHeadersVect::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:555,1
    - Dst: dnsdist_ffi_dnsquestion_t*::httpHeadersVect::data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:556,1
    - Dst: dnsdist_ffi_dnsquestion_t*::httpHeadersVect::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:558,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 32
    argCount: 2
    argNames:
    - dnsQuestion
    - out
    argTypes:
    - dnsdist_ffi_dnsquestion_t*
    - dnsdist_ffi_http_header_t**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 562
      start: 512
    functionDepth: 1
    functionLinenumber: 512
    functionLinenumberEnd: 562
    functionName: dnsdist_ffi_dnsquestion_get_http_headers
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - checkDNSQuestionType
    - dnsdist_ffi_dnsquestion_t*::httpHeadersVect::resize
    - first::c_str
    - dnsdist_ffi_dnsquestion_t*::dq::ids::doh3u::getHTTPHeaders
    - dnsdist_ffi_dnsquestion_t*::httpHeadersVect::empty
    - dnsdist_ffi_dnsquestion_t*::httpHeaders::size
    - second::c_str
    - dnsdist_ffi_dnsquestion_t*::dq::ids::du::getHTTPHeaders
    - processHeaders
    - std::make_unique<std::unordered_map<std::string, std::string>>
    - std::make_unique<std::vector<dnsdist_ffi_http_header_t>>
    - dnsdist_ffi_dnsquestion_t*::httpHeadersVect::data
    - dnsdist_ffi_dnsquestion_t*::httpHeadersVect::size
    - dnsdist_ffi_dnsquestion_t*::httpHeadersVect::at
    - dnsdist_ffi_dnsquestion_t*::httpHeadersVect::clear
    - empty
    linkageType: ''
    returnType: size_t
    signature: size_t dnsdist_ffi_dnsquestion_get_http_headers([[maybe_unused]] dnsdist_ffi_dnsquestion_t*
      dnsQuestion, [[maybe_unused]] const dnsdist_ffi_http_header_t** out)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist_ffi_dnsquestion_t*::dq::ids::qTag::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:566,1
    - Dst: checkDNSQuestionType
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:570,1
    - Dst: std::make_unique<std::vector<dnsdist_ffi_tag_t>>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:575,1
    - Dst: dnsdist_ffi_dnsquestion_t*::tagsVect::clear
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:577,1
    - Dst: dnsdist_ffi_dnsquestion_t*::tagsVect::resize
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:578,1
    - Dst: dnsdist_ffi_dnsquestion_t*::dq::ids::qTag::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:578,1
    - Dst: dnsdist_ffi_dnsquestion_t*::tagsVect::at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:582,1
    - Dst: first::c_str
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:583,1
    - Dst: second::c_str
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:584,1
    - Dst: dnsdist_ffi_dnsquestion_t*::tagsVect::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:588,1
    - Dst: dnsdist_ffi_dnsquestion_t*::tagsVect::data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:589,1
    - Dst: dnsdist_ffi_dnsquestion_t*::tagsVect::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:592,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 20
    argCount: 2
    argNames:
    - dnsQuestion
    - out
    argTypes:
    - dnsdist_ffi_dnsquestion_t*
    - dnsdist_ffi_tag_t**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 593
      start: 564
    functionDepth: 1
    functionLinenumber: 564
    functionLinenumberEnd: 593
    functionName: dnsdist_ffi_dnsquestion_get_tag_array
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - checkDNSQuestionType
    - first::c_str
    - dnsdist_ffi_dnsquestion_t*::tagsVect::clear
    - dnsdist_ffi_dnsquestion_t*::tagsVect::data
    - dnsdist_ffi_dnsquestion_t*::tagsVect::size
    - second::c_str
    - dnsdist_ffi_dnsquestion_t*::tagsVect::at
    - dnsdist_ffi_dnsquestion_t*::dq::ids::qTag::empty
    - dnsdist_ffi_dnsquestion_t*::dq::ids::qTag::size
    - std::make_unique<std::vector<dnsdist_ffi_tag_t>>
    - dnsdist_ffi_dnsquestion_t*::tagsVect::resize
    - dnsdist_ffi_dnsquestion_t*::tagsVect::empty
    linkageType: ''
    returnType: size_t
    signature: size_t dnsdist_ffi_dnsquestion_get_tag_array(dnsdist_ffi_dnsquestion_t*
      dnsQuestion, const dnsdist_ffi_tag_t** out)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: checkDNSQuestionType
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:598,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:601,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - dnsQuestion
    - str
    - strSize
    argTypes:
    - dnsdist_ffi_dnsquestion_t*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 602
      start: 595
    functionDepth: 1
    functionLinenumber: 595
    functionLinenumberEnd: 602
    functionName: dnsdist_ffi_dnsquestion_set_result
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - checkDNSQuestionType
    - std::string
    linkageType: ''
    returnType: void
    signature: void dnsdist_ffi_dnsquestion_set_result(dnsdist_ffi_dnsquestion_t*
      dnsQuestion, const char* str, size_t strSize)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist_ffi_dnsquestion_t*::dq::ids::du::setHTTPResponse
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:610,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:610,1
    - Dst: dnsdist::PacketMangling::editDNSHeaderFromPacket
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:611,1
    - Dst: dnsdist_ffi_dnsquestion_t*::dq::getMutableData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:611,1
    - Dst: dnsdist_ffi_dnsquestion_t*::dq::ids::doh3u::setHTTPResponse
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:621,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:621,1
    - Dst: dnsdist::PacketMangling::editDNSHeaderFromPacket
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:622,1
    - Dst: dnsdist_ffi_dnsquestion_t*::dq::getMutableData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:622,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 5
    argNames:
    - dnsQuestion
    - statusCode
    - body
    - bodyLen
    - contentType
    argTypes:
    - dnsdist_ffi_dnsquestion_t*
    - uint16_t
    - char*
    - size_t
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 628
      start: 604
    functionDepth: 1
    functionLinenumber: 604
    functionLinenumberEnd: 628
    functionName: dnsdist_ffi_dnsquestion_set_http_response
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - dnsdist_ffi_dnsquestion_t*::dq::ids::du::setHTTPResponse
    - std::move
    - dnsdist_ffi_dnsquestion_t*::dq::ids::doh3u::setHTTPResponse
    - dnsdist_ffi_dnsquestion_t*::dq::getMutableData
    - dnsdist::PacketMangling::editDNSHeaderFromPacket
    linkageType: ''
    returnType: void
    signature: void dnsdist_ffi_dnsquestion_set_http_response([[maybe_unused]] dnsdist_ffi_dnsquestion_t*
      dnsQuestion, [[maybe_unused]] uint16_t statusCode, [[maybe_unused]] const char*
      body, [[maybe_unused]] size_t bodyLen, [[maybe_unused]] const char* contentType)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:635,1
    - Dst: std::make_unique<std::vector<dnsdist::edns::SetExtendedDNSErrorOperation>>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:638,1
    - Dst: std::initializer_list<dnsdist::edns::SetExtendedDNSErrorOperation>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:638,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:638,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 4
    argNames:
    - dnsQuestion
    - infoCode
    - extraText
    - extraTextSize
    argTypes:
    - dnsdist_ffi_dnsquestion_t*
    - uint16_t
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 639
      start: 630
    functionDepth: 0
    functionLinenumber: 630
    functionLinenumberEnd: 639
    functionName: dnsdist_ffi_dnsquestion_set_extended_dns_error
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - std::string
    - std::move
    - std::initializer_list<dnsdist::edns::SetExtendedDNSErrorOperation>
    - std::make_unique<std::vector<dnsdist::edns::SetExtendedDNSErrorOperation>>
    linkageType: ''
    returnType: void
    signature: void dnsdist_ffi_dnsquestion_set_extended_dns_error(dnsdist_ffi_dnsquestion_t*
      dnsQuestion, uint16_t infoCode, const char* extraText, size_t extraTextSize)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:646,1
    - Dst: std::make_unique<std::vector<dnsdist::edns::SetExtendedDNSErrorOperation>>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:650,1
    - Dst: std::initializer_list<dnsdist::edns::SetExtendedDNSErrorOperation>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:650,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:650,1
    - Dst: dnsdist_ffi_dnsquestion_t*::dq::ids::d_extendedErrors::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:653,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 4
    argNames:
    - dnsQuestion
    - infoCode
    - extraText
    - extraTextSize
    argTypes:
    - dnsdist_ffi_dnsquestion_t*
    - uint16_t
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 655
      start: 641
    functionDepth: 0
    functionLinenumber: 641
    functionLinenumberEnd: 655
    functionName: dnsdist_ffi_dnsquestion_add_extended_dns_error
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - std::move
    - std::initializer_list<dnsdist::edns::SetExtendedDNSErrorOperation>
    - std::make_unique<std::vector<dnsdist::edns::SetExtendedDNSErrorOperation>>
    - dnsdist_ffi_dnsquestion_t*::dq::ids::d_extendedErrors::emplace_back
    - std::string
    linkageType: ''
    returnType: void
    signature: void dnsdist_ffi_dnsquestion_add_extended_dns_error(dnsdist_ffi_dnsquestion_t*
      dnsQuestion, uint16_t infoCode, const char* extraText, size_t extraTextSize)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::PacketMangling::editDNSHeaderFromPacket
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:659,1
    - Dst: dnsdist_ffi_dnsquestion_t*::dq::getMutableData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:659,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - dnsQuestion
    - rcode
    argTypes:
    - dnsdist_ffi_dnsquestion_t*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 664
      start: 657
    functionDepth: 1
    functionLinenumber: 657
    functionLinenumberEnd: 664
    functionName: dnsdist_ffi_dnsquestion_set_rcode
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - dnsdist_ffi_dnsquestion_t*::dq::getMutableData
    - dnsdist::PacketMangling::editDNSHeaderFromPacket
    linkageType: ''
    returnType: void
    signature: void dnsdist_ffi_dnsquestion_set_rcode(dnsdist_ffi_dnsquestion_t* dnsQuestion,
      int rcode)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist_ffi_dnsquestion_t*::dq::getMutableData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:668,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - dnsQuestion
    - len
    argTypes:
    - dnsdist_ffi_dnsquestion_t*
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 669
      start: 666
    functionDepth: 0
    functionLinenumber: 666
    functionLinenumberEnd: 669
    functionName: dnsdist_ffi_dnsquestion_set_len
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - dnsdist_ffi_dnsquestion_t*::dq::getMutableData
    linkageType: ''
    returnType: void
    signature: void dnsdist_ffi_dnsquestion_set_len(dnsdist_ffi_dnsquestion_t* dnsQuestion,
      uint16_t len)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - dnsQuestion
    - skipCache
    argTypes:
    - dnsdist_ffi_dnsquestion_t*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 674
      start: 671
    functionDepth: 0
    functionLinenumber: 671
    functionLinenumberEnd: 674
    functionName: dnsdist_ffi_dnsquestion_set_skip_cache
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void dnsdist_ffi_dnsquestion_set_skip_cache(dnsdist_ffi_dnsquestion_t*
      dnsQuestion, bool skipCache)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - dnsQuestion
    - useECS
    argTypes:
    - dnsdist_ffi_dnsquestion_t*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 679
      start: 676
    functionDepth: 0
    functionLinenumber: 676
    functionLinenumberEnd: 679
    functionName: dnsdist_ffi_dnsquestion_set_use_ecs
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void dnsdist_ffi_dnsquestion_set_use_ecs(dnsdist_ffi_dnsquestion_t*
      dnsQuestion, bool useECS)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - dnsQuestion
    - ecsOverride
    argTypes:
    - dnsdist_ffi_dnsquestion_t*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 684
      start: 681
    functionDepth: 0
    functionLinenumber: 681
    functionLinenumberEnd: 684
    functionName: dnsdist_ffi_dnsquestion_set_ecs_override
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void dnsdist_ffi_dnsquestion_set_ecs_override(dnsdist_ffi_dnsquestion_t*
      dnsQuestion, bool ecsOverride)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - dnsQuestion
    - ecsPrefixLength
    argTypes:
    - dnsdist_ffi_dnsquestion_t*
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 689
      start: 686
    functionDepth: 0
    functionLinenumber: 686
    functionLinenumberEnd: 689
    functionName: dnsdist_ffi_dnsquestion_set_ecs_prefix_length
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void dnsdist_ffi_dnsquestion_set_ecs_prefix_length(dnsdist_ffi_dnsquestion_t*
      dnsQuestion, uint16_t ecsPrefixLength)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - dnsQuestion
    - tempFailureTTL
    argTypes:
    - dnsdist_ffi_dnsquestion_t*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 694
      start: 691
    functionDepth: 0
    functionLinenumber: 691
    functionLinenumberEnd: 694
    functionName: dnsdist_ffi_dnsquestion_set_temp_failure_ttl
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void dnsdist_ffi_dnsquestion_set_temp_failure_ttl(dnsdist_ffi_dnsquestion_t*
      dnsQuestion, uint32_t tempFailureTTL)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - dnsQuestion
    argTypes:
    - dnsdist_ffi_dnsquestion_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 699
      start: 696
    functionDepth: 0
    functionLinenumber: 696
    functionLinenumberEnd: 699
    functionName: dnsdist_ffi_dnsquestion_unset_temp_failure_ttl
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void dnsdist_ffi_dnsquestion_unset_temp_failure_ttl(dnsdist_ffi_dnsquestion_t*
      dnsQuestion)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist_ffi_dnsquestion_t*::dq::setTag
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:703,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - dnsQuestion
    - label
    - value
    argTypes:
    - dnsdist_ffi_dnsquestion_t*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 704
      start: 701
    functionDepth: 1
    functionLinenumber: 701
    functionLinenumberEnd: 704
    functionName: dnsdist_ffi_dnsquestion_set_tag
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - dnsdist_ffi_dnsquestion_t*::dq::setTag
    linkageType: ''
    returnType: void
    signature: void dnsdist_ffi_dnsquestion_set_tag(dnsdist_ffi_dnsquestion_t* dnsQuestion,
      const char* label, const char* value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist_ffi_dnsquestion_t*::dq::unsetTag
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:708,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - dnsQuestion
    - label
    argTypes:
    - dnsdist_ffi_dnsquestion_t*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 709
      start: 706
    functionDepth: 1
    functionLinenumber: 706
    functionLinenumberEnd: 709
    functionName: dnsdist_ffi_dnsquestion_unset_tag
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - dnsdist_ffi_dnsquestion_t*::dq::unsetTag
    linkageType: ''
    returnType: void
    signature: void dnsdist_ffi_dnsquestion_unset_tag(dnsdist_ffi_dnsquestion_t* dnsQuestion,
      const char* label)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist_ffi_dnsquestion_t*::dq::setTag
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:713,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:713,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - dnsQuestion
    - label
    - value
    - valueSize
    argTypes:
    - dnsdist_ffi_dnsquestion_t*
    - char*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 714
      start: 711
    functionDepth: 1
    functionLinenumber: 711
    functionLinenumberEnd: 714
    functionName: dnsdist_ffi_dnsquestion_set_tag_raw
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - std::string
    - dnsdist_ffi_dnsquestion_t*::dq::setTag
    linkageType: ''
    returnType: void
    signature: void dnsdist_ffi_dnsquestion_set_tag_raw(dnsdist_ffi_dnsquestion_t*
      dnsQuestion, const char* label, const char* value, size_t valueSize)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: std::make_unique<InternalQueryState::ProtoBufData>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:722,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:724,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 3
    argNames:
    - dnsQuestion
    - value
    - valueSize
    argTypes:
    - dnsdist_ffi_dnsquestion_t*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 725
      start: 716
    functionDepth: 0
    functionLinenumber: 716
    functionLinenumberEnd: 725
    functionName: dnsdist_ffi_dnsquestion_set_requestor_id
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - std::string
    - std::make_unique<InternalQueryState::ProtoBufData>
    linkageType: ''
    returnType: void
    signature: void dnsdist_ffi_dnsquestion_set_requestor_id(dnsdist_ffi_dnsquestion_t*
      dnsQuestion, const char* value, size_t valueSize)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: std::make_unique<InternalQueryState::ProtoBufData>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:733,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:735,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 3
    argNames:
    - dnsQuestion
    - value
    - valueSize
    argTypes:
    - dnsdist_ffi_dnsquestion_t*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 736
      start: 727
    functionDepth: 0
    functionLinenumber: 727
    functionLinenumberEnd: 736
    functionName: dnsdist_ffi_dnsquestion_set_device_id
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - std::string
    - std::make_unique<InternalQueryState::ProtoBufData>
    linkageType: ''
    returnType: void
    signature: void dnsdist_ffi_dnsquestion_set_device_id(dnsdist_ffi_dnsquestion_t*
      dnsQuestion, const char* value, size_t valueSize)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: std::make_unique<InternalQueryState::ProtoBufData>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:744,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:746,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 3
    argNames:
    - dnsQuestion
    - value
    - valueSize
    argTypes:
    - dnsdist_ffi_dnsquestion_t*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 747
      start: 738
    functionDepth: 0
    functionLinenumber: 738
    functionLinenumberEnd: 747
    functionName: dnsdist_ffi_dnsquestion_set_device_name
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - std::string
    - std::make_unique<InternalQueryState::ProtoBufData>
    linkageType: ''
    returnType: void
    signature: void dnsdist_ffi_dnsquestion_set_device_name(dnsdist_ffi_dnsquestion_t*
      dnsQuestion, const char* value, size_t valueSize)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: checkDNSQuestionType
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:752,1
    - Dst: dnsdist_ffi_dnsquestion_t*::dq::getTrailingData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:755,1
    - Dst: dnsdist_ffi_dnsquestion_t*::trailingData::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:756,1
    - Dst: dnsdist_ffi_dnsquestion_t*::trailingData::data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:757,1
    - Dst: dnsdist_ffi_dnsquestion_t*::trailingData::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:760,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - dnsQuestion
    - out
    argTypes:
    - dnsdist_ffi_dnsquestion_t*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 761
      start: 749
    functionDepth: 1
    functionLinenumber: 749
    functionLinenumberEnd: 761
    functionName: dnsdist_ffi_dnsquestion_get_trailing_data
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - checkDNSQuestionType
    - dnsdist_ffi_dnsquestion_t*::dq::getTrailingData
    - dnsdist_ffi_dnsquestion_t*::trailingData::size
    - dnsdist_ffi_dnsquestion_t*::trailingData::empty
    - dnsdist_ffi_dnsquestion_t*::trailingData::data
    linkageType: ''
    returnType: size_t
    signature: size_t dnsdist_ffi_dnsquestion_get_trailing_data(dnsdist_ffi_dnsquestion_t*
      dnsQuestion, const char** out)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist_ffi_dnsquestion_t*::dq::setTrailingData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:765,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:765,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - dnsQuestion
    - data
    - dataLen
    argTypes:
    - dnsdist_ffi_dnsquestion_t*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 766
      start: 763
    functionDepth: 0
    functionLinenumber: 763
    functionLinenumberEnd: 766
    functionName: dnsdist_ffi_dnsquestion_set_trailing_data
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - std::string
    - dnsdist_ffi_dnsquestion_t*::dq::setTrailingData
    linkageType: ''
    returnType: bool
    signature: bool dnsdist_ffi_dnsquestion_set_trailing_data(dnsdist_ffi_dnsquestion_t*
      dnsQuestion, const char* data, size_t dataLen)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::configuration::getImmutableConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:770,1
    - Dst: sendDNSTrap
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:771,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:771,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 3
    argNames:
    - dnsQuestion
    - reason
    - reasonLen
    argTypes:
    - dnsdist_ffi_dnsquestion_t*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 773
      start: 768
    functionDepth: 1
    functionLinenumber: 768
    functionLinenumberEnd: 773
    functionName: dnsdist_ffi_dnsquestion_send_trap
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - std::string
    - sendDNSTrap
    - dnsdist::configuration::getImmutableConfiguration
    linkageType: ''
    returnType: void
    signature: void dnsdist_ffi_dnsquestion_send_trap(dnsdist_ffi_dnsquestion_t* dnsQuestion,
      const char* reason, size_t reasonLen)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::self_answers::generateAnswerFromRawPacket
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:778,1
    - Dst: PacketBuffer
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:778,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - dnsQuestion
    - raw
    - len
    argTypes:
    - dnsdist_ffi_dnsquestion_t*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 779
      start: 775
    functionDepth: 1
    functionLinenumber: 775
    functionLinenumberEnd: 779
    functionName: dnsdist_ffi_dnsquestion_spoof_packet
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - PacketBuffer
    - dnsdist::self_answers::generateAnswerFromRawPacket
    linkageType: ''
    returnType: void
    signature: void dnsdist_ffi_dnsquestion_spoof_packet(dnsdist_ffi_dnsquestion_t*
      dnsQuestion, const char* raw, size_t len)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::vector::reserve
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:784,1
    - Dst: std::vector::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:788,1
    - Dst: dnsdist::self_answers::generateAnswerFromRDataEntries
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:792,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - dnsQuestion
    - values
    - valuesCount
    argTypes:
    - dnsdist_ffi_dnsquestion_t*
    - dnsdist_ffi_raw_value_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 793
      start: 781
    functionDepth: 1
    functionLinenumber: 781
    functionLinenumberEnd: 793
    functionName: dnsdist_ffi_dnsquestion_spoof_raw
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - std::vector::reserve
    - dnsdist::self_answers::generateAnswerFromRDataEntries
    - std::vector::emplace_back
    linkageType: ''
    returnType: void
    signature: void dnsdist_ffi_dnsquestion_spoof_raw(dnsdist_ffi_dnsquestion_t* dnsQuestion,
      const dnsdist_ffi_raw_value_t* values, size_t valuesCount)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: std::vector::reserve
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:798,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:807,1
    - Dst: std::vector::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:808,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:818,1
    - Dst: std::vector::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:819,1
    - Dst: dnsdist::self_answers::generateAnswerFromIPAddresses
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:824,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 3
    argNames:
    - dnsQuestion
    - values
    - valuesCount
    argTypes:
    - dnsdist_ffi_dnsquestion_t*
    - dnsdist_ffi_raw_value_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 825
      start: 795
    functionDepth: 1
    functionLinenumber: 795
    functionLinenumberEnd: 825
    functionName: dnsdist_ffi_dnsquestion_spoof_addrs
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - std::vector::reserve
    - memcpy
    - dnsdist::self_answers::generateAnswerFromIPAddresses
    - std::vector::emplace_back
    linkageType: ''
    returnType: void
    signature: void dnsdist_ffi_dnsquestion_spoof_addrs(dnsdist_ffi_dnsquestion_t*
      dnsQuestion, const dnsdist_ffi_raw_value_t* values, size_t valuesCount)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 2
    argNames:
    - dnsQuestion
    - max
    argTypes:
    - dnsdist_ffi_dnsquestion_t*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 832
      start: 827
    functionDepth: 0
    functionLinenumber: 827
    functionLinenumberEnd: 832
    functionName: dnsdist_ffi_dnsquestion_set_max_returned_ttl
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void dnsdist_ffi_dnsquestion_set_max_returned_ttl(dnsdist_ffi_dnsquestion_t*
      dnsQuestion, uint32_t max)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::make_unique<PacketBuffer>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:841,1
    - Dst: dnsdist_ffi_dnsquestion_t*::dq::getData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:841,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - dnsQuestion
    argTypes:
    - dnsdist_ffi_dnsquestion_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 843
      start: 834
    functionDepth: 0
    functionLinenumber: 834
    functionLinenumberEnd: 843
    functionName: dnsdist_ffi_dnsquestion_set_restartable
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - dnsdist_ffi_dnsquestion_t*::dq::getData
    - std::make_unique<PacketBuffer>
    linkageType: ''
    returnType: bool
    signature: bool dnsdist_ffi_dnsquestion_set_restartable(dnsdist_ffi_dnsquestion_t*
      dnsQuestion)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist_ffi_servers_list_t*::ffiServers::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:847,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - list
    argTypes:
    - dnsdist_ffi_servers_list_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 848
      start: 845
    functionDepth: 0
    functionLinenumber: 845
    functionLinenumberEnd: 848
    functionName: dnsdist_ffi_servers_list_get_count
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - dnsdist_ffi_servers_list_t*::ffiServers::size
    linkageType: ''
    returnType: size_t
    signature: size_t dnsdist_ffi_servers_list_get_count(const dnsdist_ffi_servers_list_t*
      list)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist_ffi_servers_list_t*::ffiServers::at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:852,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - list
    - idx
    - out
    argTypes:
    - dnsdist_ffi_servers_list_t*
    - size_t
    - dnsdist_ffi_server_t**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 853
      start: 850
    functionDepth: 0
    functionLinenumber: 850
    functionLinenumberEnd: 853
    functionName: dnsdist_ffi_servers_list_get_server
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - dnsdist_ffi_servers_list_t*::ffiServers::at
    linkageType: ''
    returnType: void
    signature: void dnsdist_ffi_servers_list_get_server(const dnsdist_ffi_servers_list_t*
      list, size_t idx, const dnsdist_ffi_server_t** out)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: chashedFromHash
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:858,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:860,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - list
    - dnsQuestion
    - hash
    argTypes:
    - dnsdist_ffi_servers_list_t*
    - dnsdist_ffi_dnsquestion_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 863
      start: 855
    functionDepth: 1
    functionLinenumber: 855
    functionLinenumberEnd: 863
    functionName: dnsdist_ffi_servers_list_chashed
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - chashedFromHash
    - std::runtime_error
    linkageType: ''
    returnType: size_t
    signature: size_t dnsdist_ffi_servers_list_chashed(const dnsdist_ffi_servers_list_t*
      list, const dnsdist_ffi_dnsquestion_t* dnsQuestion, size_t hash)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: whashedFromHash
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:868,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:870,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - list
    - dnsQuestion
    - hash
    argTypes:
    - dnsdist_ffi_servers_list_t*
    - dnsdist_ffi_dnsquestion_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 873
      start: 865
    functionDepth: 1
    functionLinenumber: 865
    functionLinenumberEnd: 873
    functionName: dnsdist_ffi_servers_list_whashed
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - whashedFromHash
    - std::runtime_error
    linkageType: ''
    returnType: size_t
    signature: size_t dnsdist_ffi_servers_list_whashed(const dnsdist_ffi_servers_list_t*
      list, const dnsdist_ffi_dnsquestion_t* dnsQuestion, size_t hash)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - server
    argTypes:
    - dnsdist_ffi_server_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 878
      start: 875
    functionDepth: 0
    functionLinenumber: 875
    functionLinenumberEnd: 878
    functionName: dnsdist_ffi_server_get_outstanding
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t dnsdist_ffi_server_get_outstanding(const dnsdist_ffi_server_t*
      server)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - server
    argTypes:
    - dnsdist_ffi_server_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 883
      start: 880
    functionDepth: 0
    functionLinenumber: 880
    functionLinenumberEnd: 883
    functionName: dnsdist_ffi_server_get_weight
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int dnsdist_ffi_server_get_weight(const dnsdist_ffi_server_t* server)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - server
    argTypes:
    - dnsdist_ffi_server_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 888
      start: 885
    functionDepth: 0
    functionLinenumber: 885
    functionLinenumberEnd: 888
    functionName: dnsdist_ffi_server_get_order
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int dnsdist_ffi_server_get_order(const dnsdist_ffi_server_t* server)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist_ffi_server_t*::server::getRelevantLatencyUsec
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:892,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - server
    argTypes:
    - dnsdist_ffi_server_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 893
      start: 890
    functionDepth: 1
    functionLinenumber: 890
    functionLinenumberEnd: 893
    functionName: dnsdist_ffi_server_get_latency
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - dnsdist_ffi_server_t*::server::getRelevantLatencyUsec
    linkageType: ''
    returnType: double
    signature: double dnsdist_ffi_server_get_latency(const dnsdist_ffi_server_t* server)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist_ffi_server_t*::server::isUp
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:897,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - server
    argTypes:
    - dnsdist_ffi_server_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 898
      start: 895
    functionDepth: 1
    functionLinenumber: 895
    functionLinenumberEnd: 898
    functionName: dnsdist_ffi_server_is_up
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - dnsdist_ffi_server_t*::server::isUp
    linkageType: ''
    returnType: bool
    signature: bool dnsdist_ffi_server_is_up(const dnsdist_ffi_server_t* server)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist_ffi_server_t*::server::getName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:902,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - server
    argTypes:
    - dnsdist_ffi_server_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 903
      start: 900
    functionDepth: 0
    functionLinenumber: 900
    functionLinenumberEnd: 903
    functionName: dnsdist_ffi_server_get_name
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - dnsdist_ffi_server_t*::server::getName
    linkageType: ''
    returnType: char
    signature: char * dnsdist_ffi_server_get_name(const dnsdist_ffi_server_t* server)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist_ffi_server_t*::server::getNameWithAddr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:907,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - server
    argTypes:
    - dnsdist_ffi_server_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 908
      start: 905
    functionDepth: 0
    functionLinenumber: 905
    functionLinenumberEnd: 908
    functionName: dnsdist_ffi_server_get_name_with_addr
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - dnsdist_ffi_server_t*::server::getNameWithAddr
    linkageType: ''
    returnType: char
    signature: char * dnsdist_ffi_server_get_name_with_addr(const dnsdist_ffi_server_t*
      server)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist_ffi_dnsresponse_limit_ttl
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:912,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:912,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - dnsResponse
    - min
    argTypes:
    - dnsdist_ffi_dnsresponse_t*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 913
      start: 910
    functionDepth: 1
    functionLinenumber: 910
    functionLinenumberEnd: 913
    functionName: dnsdist_ffi_dnsresponse_set_min_ttl
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - pdns::max
    - dnsdist_ffi_dnsresponse_limit_ttl
    linkageType: ''
    returnType: void
    signature: void dnsdist_ffi_dnsresponse_set_min_ttl(dnsdist_ffi_dnsresponse_t*
      dnsResponse, uint32_t min)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist_ffi_dnsresponse_limit_ttl
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:917,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - dnsResponse
    - max
    argTypes:
    - dnsdist_ffi_dnsresponse_t*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 918
      start: 915
    functionDepth: 1
    functionLinenumber: 915
    functionLinenumberEnd: 918
    functionName: dnsdist_ffi_dnsresponse_set_max_ttl
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - dnsdist_ffi_dnsresponse_limit_ttl
    linkageType: ''
    returnType: void
    signature: void dnsdist_ffi_dnsresponse_set_max_ttl(dnsdist_ffi_dnsresponse_t*
      dnsResponse, uint32_t max)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: checkDNSResponseType
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:924,1
    - Dst: dnsdist::PacketMangling::restrictDNSPacketTTLs
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:928,1
    - Dst: dnsdist_ffi_dnsresponse_t*::dr::getMutableData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:928,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 3
    argNames:
    - dnsResponse
    - min
    - max
    argTypes:
    - dnsdist_ffi_dnsresponse_t*
    - uint32_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 930
      start: 920
    functionDepth: 1
    functionLinenumber: 920
    functionLinenumberEnd: 930
    functionName: dnsdist_ffi_dnsresponse_limit_ttl
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 2
    functionsReached:
    - dnsdist::PacketMangling::restrictDNSPacketTTLs
    - checkDNSResponseType
    - dnsdist_ffi_dnsresponse_t*::dr::getMutableData
    linkageType: ''
    returnType: void
    signature: void dnsdist_ffi_dnsresponse_limit_ttl(dnsdist_ffi_dnsresponse_t* dnsResponse,
      uint32_t min, uint32_t max)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: checkDNSResponseType
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:936,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 2
    argNames:
    - dnsResponse
    - max
    argTypes:
    - dnsdist_ffi_dnsresponse_t*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 941
      start: 932
    functionDepth: 1
    functionLinenumber: 932
    functionLinenumberEnd: 941
    functionName: dnsdist_ffi_dnsresponse_set_max_returned_ttl
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - checkDNSResponseType
    linkageType: ''
    returnType: void
    signature: void dnsdist_ffi_dnsresponse_set_max_returned_ttl(dnsdist_ffi_dnsresponse_t*
      dnsResponse, uint32_t max)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: checkDNSResponseType
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:947,1
    - Dst: clearDNSPacketRecordTypes
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:950,1
    - Dst: dnsdist_ffi_dnsresponse_t*::dr::getMutableData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:950,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 2
    argNames:
    - dnsResponse
    - qtype
    argTypes:
    - dnsdist_ffi_dnsresponse_t*
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 952
      start: 943
    functionDepth: 1
    functionLinenumber: 943
    functionLinenumberEnd: 952
    functionName: dnsdist_ffi_dnsresponse_clear_records_type
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - clearDNSPacketRecordTypes
    - checkDNSResponseType
    - dnsdist_ffi_dnsresponse_t*::dr::getMutableData
    linkageType: ''
    returnType: void
    signature: void dnsdist_ffi_dnsresponse_clear_records_type(dnsdist_ffi_dnsresponse_t*
      dnsResponse, uint16_t qtype)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: checkDNSResponseType
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:960,1
    - Dst: dnsdist::changeNameInDNSPacket
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:967,1
    - Dst: dnsdist_ffi_dnsresponse_t*::dr::getMutableData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:967,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:972,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:976,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:976,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:976,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:977,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:977,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 18
    argCount: 3
    argNames:
    - dnsResponse
    - initialName
    - initialNameSize
    argTypes:
    - dnsdist_ffi_dnsresponse_t*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 982
      start: 954
    functionDepth: 1
    functionLinenumber: 954
    functionLinenumberEnd: 982
    functionName: dnsdist_ffi_dnsresponse_rebase
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - getLogger
    - std::move
    - dnsdist::changeNameInDNSPacket
    - what
    - VERBOSESLOG
    - infolog
    - checkDNSResponseType
    - dnsdist_ffi_dnsresponse_t*::dr::getMutableData
    linkageType: ''
    returnType: bool
    signature: bool dnsdist_ffi_dnsresponse_rebase(dnsdist_ffi_dnsresponse_t* dnsResponse,
      const char* initialName, size_t initialNameSize)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: checkDNSResponseType
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:987,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - dnsResponse
    argTypes:
    - dnsdist_ffi_dnsresponse_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 991
      start: 984
    functionDepth: 1
    functionLinenumber: 984
    functionLinenumberEnd: 991
    functionName: dnsdist_ffi_dnsresponse_get_stale_cache_hit
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - checkDNSResponseType
    linkageType: ''
    returnType: bool
    signature: bool dnsdist_ffi_dnsresponse_get_stale_cache_hit(const dnsdist_ffi_dnsresponse_t*
      dnsResponse)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: checkDNSResponseType
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:996,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - dnsResponse
    argTypes:
    - dnsdist_ffi_dnsresponse_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1000
      start: 993
    functionDepth: 1
    functionLinenumber: 993
    functionLinenumberEnd: 1000
    functionName: dnsdist_ffi_dnsresponse_get_restart_count
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - checkDNSResponseType
    linkageType: ''
    returnType: uint8_t
    signature: uint8_t dnsdist_ffi_dnsresponse_get_restart_count(const dnsdist_ffi_dnsresponse_t*
      dnsResponse)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: checkDNSQuestionType
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1005,1
    - Dst: dnsdist::suspendQuery
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1010,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1013,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1013,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1013,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1014,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1014,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1017,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1017,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1018,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 4
    argNames:
    - dnsQuestion
    - asyncID
    - queryID
    - timeoutMs
    argTypes:
    - dnsdist_ffi_dnsquestion_t*
    - uint16_t
    - uint16_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1022
      start: 1002
    functionDepth: 1
    functionLinenumber: 1002
    functionLinenumberEnd: 1022
    functionName: dnsdist_ffi_dnsquestion_set_async
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - checkDNSQuestionType
    - what
    - VERBOSESLOG
    - infolog
    - dnsdist::suspendQuery
    - getLogger
    linkageType: ''
    returnType: bool
    signature: bool dnsdist_ffi_dnsquestion_set_async(dnsdist_ffi_dnsquestion_t* dnsQuestion,
      uint16_t asyncID, uint16_t queryID, uint32_t timeoutMs)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: checkDNSResponseType
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1027,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1035,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1035,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1036,1
    - Dst: dnsdist::suspendResponse
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1040,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1043,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1043,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1043,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1044,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1044,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1047,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1047,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1048,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 4
    argNames:
    - dnsResponse
    - asyncID
    - queryID
    - timeoutMs
    argTypes:
    - dnsdist_ffi_dnsresponse_t*
    - uint16_t
    - uint16_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1051
      start: 1024
    functionDepth: 1
    functionLinenumber: 1024
    functionLinenumberEnd: 1051
    functionName: dnsdist_ffi_dnsresponse_set_async
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - what
    - VERBOSESLOG
    - infolog
    - checkDNSResponseType
    - dnsdist::suspendResponse
    - getLogger
    linkageType: ''
    returnType: bool
    signature: bool dnsdist_ffi_dnsresponse_set_async(dnsdist_ffi_dnsresponse_t* dnsResponse,
      uint16_t asyncID, uint16_t queryID, uint32_t timeoutMs)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1056,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1056,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1057,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1061,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1063,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1063,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1064,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1064,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1064,1
    - Dst: std::make_unique<QTag>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1071,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1073,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1073,1
    - Dst: dnsdist::queueQueryResumptionEvent
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1078,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1078,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 7
    argNames:
    - asyncID
    - queryID
    - tag
    - tagSize
    - tagValue
    - tagValueSize
    - useCache
    argTypes:
    - uint16_t
    - uint16_t
    - char*
    - size_t
    - char*
    - size_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1079
      start: 1053
    functionDepth: 1
    functionLinenumber: 1053
    functionLinenumberEnd: 1079
    functionName: dnsdist_ffi_resume_from_async
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - std::move
    - Logging::Loggable
    - dnsdist::queueQueryResumptionEvent
    - VERBOSESLOG
    - infolog
    - get
    - std::make_unique<QTag>
    - std::string
    - getLogger
    linkageType: ''
    returnType: bool
    signature: bool dnsdist_ffi_resume_from_async(uint16_t asyncID, uint16_t queryID,
      const char* tag, size_t tagSize, const char* tagValue, size_t tagValueSize,
      bool useCache)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1084,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1084,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1085,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1089,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1091,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1091,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1092,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1092,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1092,1
    - Dst: dnsdist::setInternalQueryRCode
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1096,1
    - Dst: dnsdist::queueQueryResumptionEvent
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1102,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1102,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 4
    argNames:
    - asyncID
    - queryID
    - rcode
    - clearAnswers
    argTypes:
    - uint16_t
    - uint16_t
    - uint8_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1103
      start: 1081
    functionDepth: 1
    functionLinenumber: 1081
    functionLinenumberEnd: 1103
    functionName: dnsdist_ffi_set_rcode_from_async
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - dnsdist::setInternalQueryRCode
    - std::move
    - Logging::Loggable
    - dnsdist::queueQueryResumptionEvent
    - VERBOSESLOG
    - infolog
    - get
    - getLogger
    linkageType: ''
    returnType: bool
    signature: bool dnsdist_ffi_set_rcode_from_async(uint16_t asyncID, uint16_t queryID,
      uint8_t rcode, bool clearAnswers)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: std::string_view::data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1109,1
    - Dst: std::string_view::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1109,1
    - Dst: dnsdist::changeNameInDNSPacket
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1112,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1119,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1122,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1122,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1122,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1123,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1123,1
    - Dst: std::string_view::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1128,1
    - Dst: std::make_unique<QTag>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1130,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1132,1
    - Dst: DNSName::getStorage
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1132,1
    - Dst: std::string_view::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1135,1
    - Dst: std::make_unique<QTag>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1137,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1139,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 27
    argCount: 6
    argNames:
    - ' packet'
    - ' ids'
    - alternateName
    - tag
    - tagValue
    - formerNameTagName
    argTypes:
    - PacketBuffer
    - InternalQueryState
    - std::string_view
    - std::string_view
    - std::string_view
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1144
      start: 1105
    functionDepth: 1
    functionLinenumber: 1105
    functionLinenumberEnd: 1144
    functionName: setAlternateName
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - std::move
    - DNSName::getStorage
    - std::string_view::data
    - dnsdist::changeNameInDNSPacket
    - what
    - VERBOSESLOG
    - infolog
    - std::string_view::size
    - std::make_unique<QTag>
    - std::string
    - std::string_view::empty
    - getLogger
    linkageType: ''
    returnType: bool
    signature: bool setAlternateName(PacketBuffer& packet, InternalQueryState& ids,
      std::string_view alternateName, std::string_view tag, std::string_view tagValue,
      std::string_view formerNameTagName)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1152,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1154,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1154,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1155,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1155,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1155,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1165,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1168,1
    - Dst: setAlternateName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1171,1
    - Dst: std::string_view
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1171,1
    - Dst: std::string_view
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1171,1
    - Dst: std::string_view
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1171,1
    - Dst: std::string_view
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1171,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1179,1
    - Dst: dnsdist::queueQueryResumptionEvent
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1182,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1182,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 24
    argCount: 10
    argNames:
    - asyncID
    - queryID
    - alternateName
    - alternateNameSize
    - tag
    - tagSize
    - tagValue
    - tagValueSize
    - formerNameTagName
    - formerNameTagSize
    argTypes:
    - uint16_t
    - uint16_t
    - char*
    - size_t
    - char*
    - size_t
    - char*
    - size_t
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1183
      start: 1146
    functionDepth: 2
    functionLinenumber: 1146
    functionLinenumberEnd: 1183
    functionName: dnsdist_ffi_resume_from_async_with_alternate_name
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - std::move
    - Logging::Loggable
    - std::string_view
    - setAlternateName
    - VERBOSESLOG
    - infolog
    - dnsdist::queueQueryResumptionEvent
    - get
    - getLogger
    linkageType: ''
    returnType: bool
    signature: bool dnsdist_ffi_resume_from_async_with_alternate_name(uint16_t asyncID,
      uint16_t queryID, const char* alternateName, size_t alternateNameSize, const
      char* tag, size_t tagSize, const char* tagValue, size_t tagValueSize, const
      char* formerNameTagName, size_t formerNameTagSize)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist_ffi_dnsquestion_t*::dq::getMutableData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1192,1
    - Dst: setAlternateName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1193,1
    - Dst: std::string_view
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1193,1
    - Dst: std::string_view
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1193,1
    - Dst: std::string_view
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1193,1
    - Dst: std::string_view
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1193,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 5
    argCount: 9
    argNames:
    - dnsQuestion
    - alternateName
    - alternateNameSize
    - tag
    - tagSize
    - tagValue
    - tagValueSize
    - formerNameTagName
    - formerNameTagSize
    argTypes:
    - dnsdist_ffi_dnsquestion_t*
    - char*
    - size_t
    - char*
    - size_t
    - char*
    - size_t
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1194
      start: 1185
    functionDepth: 2
    functionLinenumber: 1185
    functionLinenumberEnd: 1194
    functionName: dnsdist_ffi_dnsquestion_set_alternate_name
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - std::string_view
    - dnsdist_ffi_dnsquestion_t*::dq::getMutableData
    - setAlternateName
    linkageType: ''
    returnType: bool
    signature: bool dnsdist_ffi_dnsquestion_set_alternate_name(dnsdist_ffi_dnsquestion_t*
      dnsQuestion, const char* alternateName, size_t alternateNameSize, const char*
      tag, size_t tagSize, const char* tagValue, size_t tagValueSize, const char*
      formerNameTagName, size_t formerNameTagSize)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1202,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1204,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1204,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1205,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1205,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1205,1
    - Dst: auto::getTCPQuerySender
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1209,1
    - Dst: gettimeofday
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1215,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1216,1
    - Dst: auto::notifyIOError
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1217,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1217,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 2
    argNames:
    - asyncID
    - queryID
    argTypes:
    - uint16_t
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1220
      start: 1196
    functionDepth: 1
    functionLinenumber: 1196
    functionLinenumberEnd: 1220
    functionName: dnsdist_ffi_drop_from_async
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - std::move
    - auto::getTCPQuerySender
    - Logging::Loggable
    - VERBOSESLOG
    - infolog
    - auto::notifyIOError
    - get
    - gettimeofday
    - getLogger
    linkageType: ''
    returnType: bool
    signature: bool dnsdist_ffi_drop_from_async(uint16_t asyncID, uint16_t queryID)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1231,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1233,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1233,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1234,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1234,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1234,1
    - Dst: auto::query::d_buffer::data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1238,1
    - Dst: auto::query::d_buffer::clear
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1240,1
    - Dst: auto::query::d_buffer::insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1242,1
    - Dst: auto::query::d_buffer::begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1242,1
    - Dst: dnsdist::PacketMangling::editDNSHeaderFromPacket
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1244,1
    - Dst: dnsdist::queueQueryResumptionEvent
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1250,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1250,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 4
    argNames:
    - asyncID
    - queryID
    - raw
    - rawSize
    argTypes:
    - uint16_t
    - uint16_t
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1251
      start: 1222
    functionDepth: 1
    functionLinenumber: 1222
    functionLinenumberEnd: 1251
    functionName: dnsdist_ffi_set_answer_from_async
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - std::move
    - Logging::Loggable
    - auto::query::d_buffer::data
    - dnsdist::queueQueryResumptionEvent
    - VERBOSESLOG
    - infolog
    - auto::query::d_buffer::begin
    - get
    - auto::query::d_buffer::clear
    - auto::query::d_buffer::insert
    - dnsdist::PacketMangling::editDNSHeaderFromPacket
    - getLogger
    linkageType: ''
    returnType: bool
    signature: bool dnsdist_ffi_set_answer_from_async(uint16_t asyncID, uint16_t queryID,
      const char* raw, size_t rawSize)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1270
      start: 1266
    functionDepth: 0
    functionLinenumber: 1266
    functionLinenumberEnd: 1270
    functionName: getLuaFFIWrappers
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char * getLuaFFIWrappers()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: setupLuaBindings
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1274,1
    - Dst: setupLuaBindingsDNSQuestion
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1275,1
    - Dst: setupLuaBindingsLogging
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1276,1
    - Dst: setupLuaBindingsKVS
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1277,1
    - Dst: setupLuaVars
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1278,1
    - Dst: executeCode
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1281,1
    - Dst: getLuaFFIWrappers
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1281,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - ' luaCtx'
    argTypes:
    - LuaContext
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1283
      start: 1272
    functionDepth: 1
    functionLinenumber: 1272
    functionLinenumberEnd: 1283
    functionName: setupLuaLoadBalancingContext
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - setupLuaBindingsDNSQuestion
    - setupLuaBindingsKVS
    - setupLuaVars
    - executeCode
    - setupLuaBindingsLogging
    - getLuaFFIWrappers
    - setupLuaBindings
    linkageType: ''
    returnType: void
    signature: void setupLuaLoadBalancingContext(LuaContext& luaCtx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: setupLuaVars
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1287,1
    - Dst: setupLuaBindingsLogging
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1288,1
    - Dst: executeCode
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1291,1
    - Dst: getLuaFFIWrappers
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1291,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - ' luaCtx'
    argTypes:
    - LuaContext
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1293
      start: 1285
    functionDepth: 1
    functionLinenumber: 1285
    functionLinenumberEnd: 1293
    functionName: setupLuaFFIPerThreadContext
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - setupLuaVars
    - executeCode
    - setupLuaBindingsLogging
    - getLuaFFIWrappers
    linkageType: ''
    returnType: void
    signature: void setupLuaFFIPerThreadContext(LuaContext& luaCtx)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: makeComboAddressFromRaw
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1305,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1305,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1306,1
    - Dst: makeComboAddressFromRaw
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1308,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1308,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1309,1
    - Dst: std::vector::reserve
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1313,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1316,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1316,1
    - Dst: makeProxyHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1320,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1321,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1325,1
    - Dst: std::string::c_str
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1325,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1325,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1327,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1330,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1330,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1330,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1331,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1331,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1335,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1335,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1336,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 27
    argCount: 10
    argNames:
    - addrSize
    - srcAddr
    - dstAddr
    - srcPort
    - dstPort
    - tcp
    - valuesCount
    - values
    - out
    - outSize
    argTypes:
    - size_t
    - void*
    - void*
    - uint16_t
    - uint16_t
    - bool
    - size_t
    - dnsdist_ffi_proxy_protocol_value*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1339
      start: 1295
    functionDepth: 0
    functionLinenumber: 1295
    functionLinenumberEnd: 1339
    functionName: dnsdist_ffi_generate_proxy_protocol_payload
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - std::vector::push_back
    - memcpy
    - getLogger
    - std::string::c_str
    - what
    - VERBOSESLOG
    - infolog
    - makeComboAddressFromRaw
    - std::vector::reserve
    - reinterpret_cast<const char*>
    - std::string
    - std::string::size
    - makeProxyHeader
    - htons
    linkageType: ''
    returnType: size_t
    signature: size_t dnsdist_ffi_generate_proxy_protocol_payload(const size_t addrSize,
      const void* srcAddr, const void* dstAddr, const uint16_t srcPort, const uint16_t
      dstPort, const bool tcp, const size_t valuesCount, const dnsdist_ffi_proxy_protocol_value*
      values, void* out, const size_t outSize)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: std::vector::reserve
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1345,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1348,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1348,1
    - Dst: makeProxyHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1352,1
    - Dst: dnsdist_ffi_dnsquestion_t*::dq::overTCP
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1352,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1353,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1357,1
    - Dst: std::string::c_str
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1357,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1357,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1359,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 5
    argNames:
    - dnsQuestion
    - valuesCount
    - values
    - out
    - outSize
    argTypes:
    - dnsdist_ffi_dnsquestion_t*
    - size_t
    - dnsdist_ffi_proxy_protocol_value*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1360
      start: 1341
    functionDepth: 1
    functionLinenumber: 1341
    functionLinenumberEnd: 1360
    functionName: dnsdist_ffi_dnsquestion_generate_proxy_protocol_payload
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - std::vector::push_back
    - dnsdist_ffi_dnsquestion_t*::dq::overTCP
    - memcpy
    - std::string::c_str
    - std::vector::reserve
    - std::string
    - std::string::size
    - makeProxyHeader
    linkageType: ''
    returnType: size_t
    signature: size_t dnsdist_ffi_dnsquestion_generate_proxy_protocol_payload(const
      dnsdist_ffi_dnsquestion_t* dnsQuestion, const size_t valuesCount, const dnsdist_ffi_proxy_protocol_value*
      values, void* out, const size_t outSize)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: make_unique<std::vector<ProxyProtocolValue>>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1369,1
    - Dst: dnsdist_ffi_dnsquestion_t*::dq::proxyProtocolValues::reserve
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1372,1
    - Dst: dnsdist_ffi_dnsquestion_t*::dq::proxyProtocolValues::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1372,1
    - Dst: dnsdist_ffi_dnsquestion_t*::dq::proxyProtocolValues::push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1375,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1375,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 12
    argCount: 3
    argNames:
    - dnsQuestion
    - valuesCount
    - values
    argTypes:
    - dnsdist_ffi_dnsquestion_t*
    - size_t
    - dnsdist_ffi_proxy_protocol_value_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1379
      start: 1362
    functionDepth: 0
    functionLinenumber: 1362
    functionLinenumberEnd: 1379
    functionName: dnsdist_ffi_dnsquestion_add_proxy_protocol_values
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - dnsdist_ffi_dnsquestion_t*::dq::proxyProtocolValues::reserve
    - dnsdist_ffi_dnsquestion_t*::dq::proxyProtocolValues::size
    - dnsdist_ffi_dnsquestion_t*::dq::proxyProtocolValues::push_back
    - make_unique<std::vector<ProxyProtocolValue>>
    - std::string
    linkageType: ''
    returnType: bool
    signature: bool dnsdist_ffi_dnsquestion_add_proxy_protocol_values(dnsdist_ffi_dnsquestion_t*
      dnsQuestion, const size_t valuesCount, const dnsdist_ffi_proxy_protocol_value_t*
      values)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: checkDNSQuestionType
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1388,1
    - Dst: std::make_unique<std::vector<dnsdist_ffi_proxy_protocol_value_t>>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1392,1
    - Dst: dnsdist_ffi_dnsquestion_t*::dq::proxyProtocolValues::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1392,1
    - Dst: dnsdist_ffi_dnsquestion_t*::dq::proxyProtocolValues::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1393,1
    - Dst: dnsdist_ffi_dnsquestion_t*::dq::proxyProtocolValues::at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1394,1
    - Dst: dnsdist_ffi_dnsquestion_t*::proxyProtocolValuesVect::at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1395,1
    - Dst: content::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1396,1
    - Dst: content::data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1397,1
    - Dst: dnsdist_ffi_dnsquestion_t*::proxyProtocolValuesVect::data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1401,1
    - Dst: dnsdist_ffi_dnsquestion_t*::proxyProtocolValuesVect::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1402,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 2
    argNames:
    - dnsQuestion
    - out
    argTypes:
    - dnsdist_ffi_dnsquestion_t*
    - dnsdist_ffi_proxy_protocol_value_t**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1403
      start: 1381
    functionDepth: 1
    functionLinenumber: 1381
    functionLinenumberEnd: 1403
    functionName: dnsdist_ffi_dnsquestion_get_proxy_protocol_values
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - checkDNSQuestionType
    - dnsdist_ffi_dnsquestion_t*::dq::proxyProtocolValues::size
    - dnsdist_ffi_dnsquestion_t*::proxyProtocolValuesVect::size
    - dnsdist_ffi_dnsquestion_t*::dq::proxyProtocolValues::at
    - dnsdist_ffi_dnsquestion_t*::proxyProtocolValuesVect::data
    - content::data
    - dnsdist_ffi_dnsquestion_t*::proxyProtocolValuesVect::at
    - std::make_unique<std::vector<dnsdist_ffi_proxy_protocol_value_t>>
    - content::size
    linkageType: ''
    returnType: size_t
    signature: size_t dnsdist_ffi_dnsquestion_get_proxy_protocol_values(dnsdist_ffi_dnsquestion_t*
      dnsQuestion, const dnsdist_ffi_proxy_protocol_value_t** out)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist_ffi_domain_list_t*::d_domains::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1416,1
    - Dst: dnsdist_ffi_domain_list_t*::d_domains::at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1420,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - list
    - idx
    argTypes:
    - dnsdist_ffi_domain_list_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1421
      start: 1414
    functionDepth: 0
    functionLinenumber: 1414
    functionLinenumberEnd: 1421
    functionName: dnsdist_ffi_domain_list_get
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - dnsdist_ffi_domain_list_t*::d_domains::at
    - dnsdist_ffi_domain_list_t*::d_domains::size
    linkageType: ''
    returnType: char
    signature: char * dnsdist_ffi_domain_list_get(const dnsdist_ffi_domain_list_t*
      list, size_t idx)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - list
    argTypes:
    - dnsdist_ffi_domain_list_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1427
      start: 1423
    functionDepth: 0
    functionLinenumber: 1423
    functionLinenumberEnd: 1427
    functionName: dnsdist_ffi_domain_list_free
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void dnsdist_ffi_domain_list_free(dnsdist_ffi_domain_list_t* list)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist_ffi_address_list_t*::d_addresses::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1431,1
    - Dst: dnsdist_ffi_address_list_t*::d_addresses::at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1435,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - list
    - idx
    argTypes:
    - dnsdist_ffi_address_list_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1436
      start: 1429
    functionDepth: 0
    functionLinenumber: 1429
    functionLinenumberEnd: 1436
    functionName: dnsdist_ffi_address_list_get
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - dnsdist_ffi_address_list_t*::d_addresses::size
    - dnsdist_ffi_address_list_t*::d_addresses::at
    linkageType: ''
    returnType: char
    signature: char * dnsdist_ffi_address_list_get(const dnsdist_ffi_address_list_t*
      list, size_t idx)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - list
    argTypes:
    - dnsdist_ffi_address_list_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1442
      start: 1438
    functionDepth: 0
    functionLinenumber: 1438
    functionLinenumberEnd: 1442
    functionName: dnsdist_ffi_address_list_free
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void dnsdist_ffi_address_list_free(dnsdist_ffi_address_list_t* list)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1452,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1455,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1455,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1455,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1456,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1456,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1460,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1460,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1461,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1465,1
    - Dst: find
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1466,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1467,1
    - Dst: packetCache::getDomainsContainingRecords
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1476,1
    - Dst: auto::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1477,1
    - Dst: std::make_unique<dnsdist_ffi_domain_list_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1481,1
    - Dst: auto::d_domains::reserve
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1482,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1482,1
    - Dst: auto::d_domains::push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1485,1
    - Dst: toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1485,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1488,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1488,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1488,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1489,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1489,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1489,1
    - Dst: auto::d_domains::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1493,1
    - Dst: auto::release
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1495,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 33
    argCount: 3
    argNames:
    - poolName
    - addr
    - out
    argTypes:
    - char*
    - char*
    - dnsdist_ffi_domain_list_t**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1498
      start: 1444
    functionDepth: 1
    functionLinenumber: 1444
    functionLinenumberEnd: 1498
    functionName: dnsdist_ffi_packetcache_get_domain_list_by_addr
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - auto::d_domains::size
    - auto::d_domains::reserve
    - auto::d_domains::push_back
    - toString
    - dnsdist::configuration::getCurrentRuntimeConfiguration
    - Logging::Loggable
    - what
    - std::make_unique<dnsdist_ffi_domain_list_t>
    - VERBOSESLOG
    - infolog
    - ComboAddress
    - end
    - auto::empty
    - auto::release
    - auto::size
    - packetCache::getDomainsContainingRecords
    - find
    - getLogger
    linkageType: ''
    returnType: size_t
    signature: size_t dnsdist_ffi_packetcache_get_domain_list_by_addr(const char*
      poolName, const char* addr, dnsdist_ffi_domain_list_t** out)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: DNSName::DNSName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1506,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1508,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1511,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1511,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1511,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1512,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1512,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1512,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1516,1
    - Dst: find
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1517,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1518,1
    - Dst: packetCache::getRecordsForDomain
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1527,1
    - Dst: auto::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1528,1
    - Dst: std::make_unique<dnsdist_ffi_address_list_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1532,1
    - Dst: auto::d_addresses::reserve
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1533,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1533,1
    - Dst: auto::d_addresses::push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1536,1
    - Dst: toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1536,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1539,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1539,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1539,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1540,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1540,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1540,1
    - Dst: auto::d_addresses::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1544,1
    - Dst: auto::release
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1546,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 30
    argCount: 3
    argNames:
    - poolName
    - domain
    - out
    argTypes:
    - char*
    - char*
    - dnsdist_ffi_address_list_t**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1549
      start: 1500
    functionDepth: 1
    functionLinenumber: 1500
    functionLinenumberEnd: 1549
    functionName: dnsdist_ffi_packetcache_get_address_list_by_domain
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - toString
    - auto::d_addresses::size
    - auto::size
    - find
    - packetCache::getRecordsForDomain
    - Logging::Loggable
    - auto::d_addresses::reserve
    - getLogger
    - dnsdist::configuration::getCurrentRuntimeConfiguration
    - VERBOSESLOG
    - DNSName
    - std::make_unique<dnsdist_ffi_address_list_t>
    - what
    - end
    - infolog
    - auto::d_addresses::push_back
    - DNSName::DNSName
    - auto::release
    - auto::empty
    linkageType: ''
    returnType: size_t
    signature: size_t dnsdist_ffi_packetcache_get_address_list_by_domain(const char*
      poolName, const char* domain, dnsdist_ffi_address_list_t** out)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist_ffi_ring_entry_list_t*::d_entries::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1573,1
    - Dst: dnsdist_ffi_ring_entry_list_t*::d_entries::at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1577,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - list
    - idx
    argTypes:
    - dnsdist_ffi_ring_entry_list_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1578
      start: 1571
    functionDepth: 0
    functionLinenumber: 1571
    functionLinenumberEnd: 1578
    functionName: dnsdist_ffi_ring_entry_is_response
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - dnsdist_ffi_ring_entry_list_t*::d_entries::size
    - dnsdist_ffi_ring_entry_list_t*::d_entries::at
    linkageType: ''
    returnType: bool
    signature: bool dnsdist_ffi_ring_entry_is_response(const dnsdist_ffi_ring_entry_list_t*
      list, size_t idx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist_ffi_ring_entry_list_t*::d_entries::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1582,1
    - Dst: dnsdist_ffi_ring_entry_list_t*::d_entries::at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1586,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - list
    - idx
    argTypes:
    - dnsdist_ffi_ring_entry_list_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1587
      start: 1580
    functionDepth: 0
    functionLinenumber: 1580
    functionLinenumberEnd: 1587
    functionName: dnsdist_ffi_ring_entry_get_age
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - dnsdist_ffi_ring_entry_list_t*::d_entries::size
    - dnsdist_ffi_ring_entry_list_t*::d_entries::at
    linkageType: ''
    returnType: double
    signature: double dnsdist_ffi_ring_entry_get_age(const dnsdist_ffi_ring_entry_list_t*
      list, size_t idx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist_ffi_ring_entry_list_t*::d_entries::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1591,1
    - Dst: dnsdist_ffi_ring_entry_list_t*::d_entries::at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1595,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1595,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - list
    - idx
    argTypes:
    - dnsdist_ffi_ring_entry_list_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1596
      start: 1589
    functionDepth: 0
    functionLinenumber: 1589
    functionLinenumberEnd: 1596
    functionName: dnsdist_ffi_ring_entry_get_name
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - dnsdist_ffi_ring_entry_list_t*::d_entries::size
    - dnsdist_ffi_ring_entry_list_t*::d_entries::at
    - c_str
    linkageType: ''
    returnType: char
    signature: char * dnsdist_ffi_ring_entry_get_name(const dnsdist_ffi_ring_entry_list_t*
      list, size_t idx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist_ffi_ring_entry_list_t*::d_entries::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1600,1
    - Dst: dnsdist_ffi_ring_entry_list_t*::d_entries::at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1604,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - list
    - idx
    argTypes:
    - dnsdist_ffi_ring_entry_list_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1605
      start: 1598
    functionDepth: 0
    functionLinenumber: 1598
    functionLinenumberEnd: 1605
    functionName: dnsdist_ffi_ring_entry_get_type
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - dnsdist_ffi_ring_entry_list_t*::d_entries::size
    - dnsdist_ffi_ring_entry_list_t*::d_entries::at
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t dnsdist_ffi_ring_entry_get_type(const dnsdist_ffi_ring_entry_list_t*
      list, size_t idx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist_ffi_ring_entry_list_t*::d_entries::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1609,1
    - Dst: dnsdist_ffi_ring_entry_list_t*::d_entries::at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1613,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1613,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - list
    - idx
    argTypes:
    - dnsdist_ffi_ring_entry_list_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1614
      start: 1607
    functionDepth: 0
    functionLinenumber: 1607
    functionLinenumberEnd: 1614
    functionName: dnsdist_ffi_ring_entry_get_requestor
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - dnsdist_ffi_ring_entry_list_t*::d_entries::size
    - dnsdist_ffi_ring_entry_list_t*::d_entries::at
    - c_str
    linkageType: ''
    returnType: char
    signature: char * dnsdist_ffi_ring_entry_get_requestor(const dnsdist_ffi_ring_entry_list_t*
      list, size_t idx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist_ffi_ring_entry_list_t*::d_entries::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1618,1
    - Dst: dnsdist_ffi_ring_entry_list_t*::d_entries::at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1622,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1622,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - list
    - idx
    argTypes:
    - dnsdist_ffi_ring_entry_list_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1623
      start: 1616
    functionDepth: 0
    functionLinenumber: 1616
    functionLinenumberEnd: 1623
    functionName: dnsdist_ffi_ring_entry_get_backend
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - dnsdist_ffi_ring_entry_list_t*::d_entries::size
    - dnsdist_ffi_ring_entry_list_t*::d_entries::at
    - c_str
    linkageType: ''
    returnType: char
    signature: char * dnsdist_ffi_ring_entry_get_backend(const dnsdist_ffi_ring_entry_list_t*
      list, size_t idx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist_ffi_ring_entry_list_t*::d_entries::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1627,1
    - Dst: dnsdist_ffi_ring_entry_list_t*::d_entries::at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1631,1
    - Dst: toNumber
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1631,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - list
    - idx
    argTypes:
    - dnsdist_ffi_ring_entry_list_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1632
      start: 1625
    functionDepth: 0
    functionLinenumber: 1625
    functionLinenumberEnd: 1632
    functionName: dnsdist_ffi_ring_entry_get_protocol
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - dnsdist_ffi_ring_entry_list_t*::d_entries::size
    - dnsdist_ffi_ring_entry_list_t*::d_entries::at
    - toNumber
    linkageType: ''
    returnType: uint8_t
    signature: uint8_t dnsdist_ffi_ring_entry_get_protocol(const dnsdist_ffi_ring_entry_list_t*
      list, size_t idx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist_ffi_ring_entry_list_t*::d_entries::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1636,1
    - Dst: dnsdist_ffi_ring_entry_list_t*::d_entries::at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1640,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - list
    - idx
    argTypes:
    - dnsdist_ffi_ring_entry_list_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1641
      start: 1634
    functionDepth: 0
    functionLinenumber: 1634
    functionLinenumberEnd: 1641
    functionName: dnsdist_ffi_ring_entry_get_size
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - dnsdist_ffi_ring_entry_list_t*::d_entries::size
    - dnsdist_ffi_ring_entry_list_t*::d_entries::at
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t dnsdist_ffi_ring_entry_get_size(const dnsdist_ffi_ring_entry_list_t*
      list, size_t idx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist_ffi_ring_entry_list_t*::d_entries::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1645,1
    - Dst: dnsdist_ffi_ring_entry_list_t*::d_entries::at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1649,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - list
    - idx
    argTypes:
    - dnsdist_ffi_ring_entry_list_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1650
      start: 1643
    functionDepth: 0
    functionLinenumber: 1643
    functionLinenumberEnd: 1650
    functionName: dnsdist_ffi_ring_entry_get_latency
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - dnsdist_ffi_ring_entry_list_t*::d_entries::size
    - dnsdist_ffi_ring_entry_list_t*::d_entries::at
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t dnsdist_ffi_ring_entry_get_latency(const dnsdist_ffi_ring_entry_list_t*
      list, size_t idx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist_ffi_ring_entry_list_t*::d_entries::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1654,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1658,1
    - Dst: dnsdist_ffi_ring_entry_list_t*::d_entries::at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1658,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - list
    - idx
    argTypes:
    - dnsdist_ffi_ring_entry_list_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1659
      start: 1652
    functionDepth: 0
    functionLinenumber: 1652
    functionLinenumberEnd: 1659
    functionName: dnsdist_ffi_ring_entry_get_id
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - dnsdist_ffi_ring_entry_list_t*::d_entries::size
    - dnsdist_ffi_ring_entry_list_t*::d_entries::at
    - ntohs
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t dnsdist_ffi_ring_entry_get_id(const dnsdist_ffi_ring_entry_list_t*
      list, size_t idx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist_ffi_ring_entry_list_t*::d_entries::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1663,1
    - Dst: dnsdist_ffi_ring_entry_list_t*::d_entries::at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1667,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - list
    - idx
    argTypes:
    - dnsdist_ffi_ring_entry_list_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1668
      start: 1661
    functionDepth: 0
    functionLinenumber: 1661
    functionLinenumberEnd: 1668
    functionName: dnsdist_ffi_ring_entry_get_rcode
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - dnsdist_ffi_ring_entry_list_t*::d_entries::size
    - dnsdist_ffi_ring_entry_list_t*::d_entries::at
    linkageType: ''
    returnType: uint8_t
    signature: uint8_t dnsdist_ffi_ring_entry_get_rcode(const dnsdist_ffi_ring_entry_list_t*
      list, size_t idx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist_ffi_ring_entry_list_t*::d_entries::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1672,1
    - Dst: dnsdist_ffi_ring_entry_list_t*::d_entries::at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1676,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - list
    - idx
    argTypes:
    - dnsdist_ffi_ring_entry_list_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1677
      start: 1670
    functionDepth: 0
    functionLinenumber: 1670
    functionLinenumberEnd: 1677
    functionName: dnsdist_ffi_ring_entry_get_aa
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - dnsdist_ffi_ring_entry_list_t*::d_entries::size
    - dnsdist_ffi_ring_entry_list_t*::d_entries::at
    linkageType: ''
    returnType: bool
    signature: bool dnsdist_ffi_ring_entry_get_aa(const dnsdist_ffi_ring_entry_list_t*
      list, size_t idx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist_ffi_ring_entry_list_t*::d_entries::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1681,1
    - Dst: dnsdist_ffi_ring_entry_list_t*::d_entries::at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1685,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - list
    - idx
    argTypes:
    - dnsdist_ffi_ring_entry_list_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1686
      start: 1679
    functionDepth: 0
    functionLinenumber: 1679
    functionLinenumberEnd: 1686
    functionName: dnsdist_ffi_ring_entry_get_rd
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - dnsdist_ffi_ring_entry_list_t*::d_entries::size
    - dnsdist_ffi_ring_entry_list_t*::d_entries::at
    linkageType: ''
    returnType: bool
    signature: bool dnsdist_ffi_ring_entry_get_rd(const dnsdist_ffi_ring_entry_list_t*
      list, size_t idx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist_ffi_ring_entry_list_t*::d_entries::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1690,1
    - Dst: dnsdist_ffi_ring_entry_list_t*::d_entries::at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1694,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - list
    - idx
    argTypes:
    - dnsdist_ffi_ring_entry_list_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1695
      start: 1688
    functionDepth: 0
    functionLinenumber: 1688
    functionLinenumberEnd: 1695
    functionName: dnsdist_ffi_ring_entry_get_tc
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - dnsdist_ffi_ring_entry_list_t*::d_entries::size
    - dnsdist_ffi_ring_entry_list_t*::d_entries::at
    linkageType: ''
    returnType: bool
    signature: bool dnsdist_ffi_ring_entry_get_tc(const dnsdist_ffi_ring_entry_list_t*
      list, size_t idx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist_ffi_ring_entry_list_t*::d_entries::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1699,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1703,1
    - Dst: dnsdist_ffi_ring_entry_list_t*::d_entries::at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1703,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - list
    - idx
    argTypes:
    - dnsdist_ffi_ring_entry_list_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1704
      start: 1697
    functionDepth: 0
    functionLinenumber: 1697
    functionLinenumberEnd: 1704
    functionName: dnsdist_ffi_ring_entry_get_ancount
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - dnsdist_ffi_ring_entry_list_t*::d_entries::size
    - dnsdist_ffi_ring_entry_list_t*::d_entries::at
    - ntohs
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t dnsdist_ffi_ring_entry_get_ancount(const dnsdist_ffi_ring_entry_list_t*
      list, size_t idx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist_ffi_ring_entry_list_t*::d_entries::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1708,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1712,1
    - Dst: dnsdist_ffi_ring_entry_list_t*::d_entries::at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1712,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - list
    - idx
    argTypes:
    - dnsdist_ffi_ring_entry_list_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1713
      start: 1706
    functionDepth: 0
    functionLinenumber: 1706
    functionLinenumberEnd: 1713
    functionName: dnsdist_ffi_ring_entry_get_nscount
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - dnsdist_ffi_ring_entry_list_t*::d_entries::size
    - dnsdist_ffi_ring_entry_list_t*::d_entries::at
    - ntohs
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t dnsdist_ffi_ring_entry_get_nscount(const dnsdist_ffi_ring_entry_list_t*
      list, size_t idx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist_ffi_ring_entry_list_t*::d_entries::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1717,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1721,1
    - Dst: dnsdist_ffi_ring_entry_list_t*::d_entries::at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1721,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - list
    - idx
    argTypes:
    - dnsdist_ffi_ring_entry_list_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1722
      start: 1715
    functionDepth: 0
    functionLinenumber: 1715
    functionLinenumberEnd: 1722
    functionName: dnsdist_ffi_ring_entry_get_arcount
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - dnsdist_ffi_ring_entry_list_t*::d_entries::size
    - dnsdist_ffi_ring_entry_list_t*::d_entries::at
    - ntohs
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t dnsdist_ffi_ring_entry_get_arcount(const dnsdist_ffi_ring_entry_list_t*
      list, size_t idx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist_ffi_ring_entry_list_t*::d_entries::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1726,1
    - Dst: dnsdist_ffi_ring_entry_list_t*::d_entries::at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1730,1
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1730,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - list
    - idx
    argTypes:
    - dnsdist_ffi_ring_entry_list_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1731
      start: 1724
    functionDepth: 0
    functionLinenumber: 1724
    functionLinenumberEnd: 1731
    functionName: dnsdist_ffi_ring_entry_has_mac_address
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - dnsdist_ffi_ring_entry_list_t*::d_entries::size
    - dnsdist_ffi_ring_entry_list_t*::d_entries::at
    - empty
    linkageType: ''
    returnType: bool
    signature: bool dnsdist_ffi_ring_entry_has_mac_address(const dnsdist_ffi_ring_entry_list_t*
      list, size_t idx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist_ffi_ring_entry_list_t*::d_entries::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1735,1
    - Dst: dnsdist_ffi_ring_entry_list_t*::d_entries::at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1739,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1739,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - list
    - idx
    argTypes:
    - dnsdist_ffi_ring_entry_list_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1740
      start: 1733
    functionDepth: 0
    functionLinenumber: 1733
    functionLinenumberEnd: 1740
    functionName: dnsdist_ffi_ring_entry_get_mac_address
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - dnsdist_ffi_ring_entry_list_t*::d_entries::size
    - dnsdist_ffi_ring_entry_list_t*::d_entries::at
    - data
    linkageType: ''
    returnType: char
    signature: char * dnsdist_ffi_ring_entry_get_mac_address(const dnsdist_ffi_ring_entry_list_t*
      list, size_t idx)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - list
    argTypes:
    - dnsdist_ffi_ring_entry_list_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1746
      start: 1742
    functionDepth: 0
    functionLinenumber: 1742
    functionLinenumberEnd: 1746
    functionName: dnsdist_ffi_ring_entry_list_free
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void dnsdist_ffi_ring_entry_list_free(dnsdist_ffi_ring_entry_list_t*
      list)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DiffTime
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1751,1
    - Dst: name::toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1756,1
    - Dst: requestor::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1756,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1756,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1756,1
    - Dst: macaddress::data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1756,1
    - Dst: macaddress::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1756,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1756,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1756,1
    - Dst: name::toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1758,1
    - Dst: requestor::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1758,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1758,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1758,1
    - Dst: d_entries::push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1760,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1760,1
    - Dst: name::toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1763,1
    - Dst: requestor::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1763,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1763,1
    - Dst: ds::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1763,1
    - Dst: d_entries::push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1764,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1764,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - ' list'
    - ' now'
    - ' entry'
    argTypes:
    - std::unique_ptr<dnsdist_ffi_ring_entry_list_t>
    - struct timespec
    - T
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1766
      start: 1749
    functionDepth: 0
    functionLinenumber: 1749
    functionLinenumberEnd: 1766
    functionName: addRingEntryToList
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - std::move
    - name::toString
    - ds::toStringWithPort
    - macaddress::size
    - DiffTime
    - requestor::toStringWithPort
    - reinterpret_cast<const char*>
    - macaddress::data
    - d_entries::push_back
    - std::string
    linkageType: ''
    returnType: void
    signature: void addRingEntryToList(std::unique_ptr<dnsdist_ffi_ring_entry_list_t>&
      list, const struct timespec& now, const T& entry)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: std::make_unique<dnsdist_ffi_ring_entry_list_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1773,1
    - Dst: gettime
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1775,1
    - Dst: queryRing::lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1779,1
    - Dst: addRingEntryToList
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1781,1
    - Dst: respRing::lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1785,1
    - Dst: addRingEntryToList
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1787,1
    - Dst: auto::d_entries::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1792,1
    - Dst: auto::release
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1794,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 1
    argNames:
    - out
    argTypes:
    - dnsdist_ffi_ring_entry_list_t**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1797
      start: 1768
    functionDepth: 0
    functionLinenumber: 1768
    functionLinenumberEnd: 1797
    functionName: dnsdist_ffi_ring_get_entries
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - auto::release
    - queryRing::lock
    - std::make_unique<dnsdist_ffi_ring_entry_list_t>
    - gettime
    - addRingEntryToList
    - auto::d_entries::size
    - respRing::lock
    linkageType: ''
    returnType: size_t
    signature: size_t dnsdist_ffi_ring_get_entries(dnsdist_ffi_ring_entry_list_t**
      out)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1806,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1809,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1809,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1809,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1810,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1810,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1810,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1814,1
    - Dst: vinfolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1814,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1815,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1815,1
    - Dst: std::make_unique<dnsdist_ffi_ring_entry_list_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1819,1
    - Dst: gettime
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1821,1
    - Dst: ComboAddress::addressOnlyEqual
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1823,1
    - Dst: queryRing::lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1826,1
    - Dst: compare
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1828,1
    - Dst: addRingEntryToList
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1832,1
    - Dst: respRing::lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1836,1
    - Dst: compare
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1838,1
    - Dst: addRingEntryToList
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1842,1
    - Dst: auto::d_entries::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1847,1
    - Dst: auto::release
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1849,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 31
    argCount: 2
    argNames:
    - addr
    - out
    argTypes:
    - char*
    - dnsdist_ffi_ring_entry_list_t**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1852
      start: 1799
    functionDepth: 0
    functionLinenumber: 1799
    functionLinenumberEnd: 1852
    functionName: dnsdist_ffi_ring_get_entries_by_addr
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - auto::release
    - queryRing::lock
    - Logging::Loggable
    - what
    - vinfolog
    - std::make_unique<dnsdist_ffi_ring_entry_list_t>
    - VERBOSESLOG
    - infolog
    - ComboAddress
    - ComboAddress::addressOnlyEqual
    - compare
    - gettime
    - addRingEntryToList
    - auto::d_entries::size
    - respRing::lock
    - getLogger
    linkageType: ''
    returnType: size_t
    signature: size_t dnsdist_ffi_ring_get_entries_by_addr(const char* addr, dnsdist_ffi_ring_entry_list_t**
      out)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: std::make_unique<dnsdist_ffi_ring_entry_list_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1863,1
    - Dst: gettime
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1865,1
    - Dst: queryRing::lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1868,1
    - Dst: memcmp
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1870,1
    - Dst: macaddress::data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1870,1
    - Dst: macaddress::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1870,1
    - Dst: addRingEntryToList
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1874,1
    - Dst: auto::d_entries::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1878,1
    - Dst: auto::release
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1880,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 16
    argCount: 2
    argNames:
    - addr
    - out
    argTypes:
    - char*
    - dnsdist_ffi_ring_entry_list_t**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1884
      start: 1854
    functionDepth: 0
    functionLinenumber: 1854
    functionLinenumberEnd: 1884
    functionName: dnsdist_ffi_ring_get_entries_by_mac
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - memcmp
    - queryRing::lock
    - std::make_unique<dnsdist_ffi_ring_entry_list_t>
    - macaddress::size
    - macaddress::data
    - gettime
    - addRingEntryToList
    - auto::release
    - auto::d_entries::size
    linkageType: ''
    returnType: size_t
    signature: size_t dnsdist_ffi_ring_get_entries_by_mac(const char* addr, dnsdist_ffi_ring_entry_list_t**
      out)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1899,1
    - Dst: dnsdist_ffi_network_endpoint_t::dnsdist_ffi_network_endpoint_t
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1899,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1903,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1903,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1903,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1904,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1904,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1904,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 3
    argNames:
    - path
    - pathSize
    - out
    argTypes:
    - char*
    - size_t
    - dnsdist_ffi_network_endpoint_t**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1907
      start: 1891
    functionDepth: 0
    functionLinenumber: 1891
    functionLinenumberEnd: 1907
    functionName: dnsdist_ffi_network_endpoint_new
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - std::move
    - Logging::Loggable
    - what
    - VERBOSESLOG
    - infolog
    - dnsdist_ffi_network_endpoint_t::dnsdist_ffi_network_endpoint_t
    - getLogger
    linkageType: ''
    returnType: bool
    signature: bool dnsdist_ffi_network_endpoint_new(const char* path, size_t pathSize,
      dnsdist_ffi_network_endpoint_t** out)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - endpoint
    argTypes:
    - dnsdist_ffi_network_endpoint_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1912
      start: 1909
    functionDepth: 0
    functionLinenumber: 1909
    functionLinenumberEnd: 1912
    functionName: dnsdist_ffi_network_endpoint_is_valid
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool dnsdist_ffi_network_endpoint_is_valid(const dnsdist_ffi_network_endpoint_t*
      endpoint)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist_ffi_network_endpoint_t*::d_endpoint::send
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1917,1
    - Dst: std::string_view
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1917,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 5
    argCount: 3
    argNames:
    - endpoint
    - payload
    - payloadSize
    argTypes:
    - dnsdist_ffi_network_endpoint_t*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1920
      start: 1914
    functionDepth: 0
    functionLinenumber: 1914
    functionLinenumberEnd: 1920
    functionName: dnsdist_ffi_network_endpoint_send
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - std::string_view
    - dnsdist_ffi_network_endpoint_t*::d_endpoint::send
    linkageType: ''
    returnType: bool
    signature: bool dnsdist_ffi_network_endpoint_send(const dnsdist_ffi_network_endpoint_t*
      endpoint, const char* payload, size_t payloadSize)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - endpoint
    argTypes:
    - dnsdist_ffi_network_endpoint_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1926
      start: 1922
    functionDepth: 0
    functionLinenumber: 1922
    functionLinenumberEnd: 1926
    functionName: dnsdist_ffi_network_endpoint_free
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void dnsdist_ffi_network_endpoint_free(dnsdist_ffi_network_endpoint_t*
      endpoint)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1942,1
    - Dst: dnsdist_ffi_dnspacket_t::dnsdist_ffi_dnspacket_t
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1942,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1946,1
    - Dst: vinfolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1946,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1946,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1947,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1947,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1947,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1950,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1950,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1951,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1951,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 3
    argNames:
    - packet
    - packetSize
    - out
    argTypes:
    - char*
    - size_t
    - dnsdist_ffi_dnspacket_t**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1954
      start: 1933
    functionDepth: 0
    functionLinenumber: 1933
    functionLinenumberEnd: 1954
    functionName: dnsdist_ffi_dnspacket_parse
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - std::move
    - Logging::Loggable
    - vinfolog
    - what
    - dnsdist_ffi_dnspacket_t::dnsdist_ffi_dnspacket_t
    - VERBOSESLOG
    - infolog
    - getLogger
    linkageType: ''
    returnType: bool
    signature: bool dnsdist_ffi_dnspacket_parse(const char* packet, size_t packetSize,
      dnsdist_ffi_dnspacket_t** out)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist_ffi_dnspacket_t*::overlay::d_qname::getStorage
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1961,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1962,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:1963,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 3
    argNames:
    - packet
    - qname
    - qnameSize
    argTypes:
    - dnsdist_ffi_dnspacket_t*
    - char**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1964
      start: 1956
    functionDepth: 0
    functionLinenumber: 1956
    functionLinenumberEnd: 1964
    functionName: dnsdist_ffi_dnspacket_get_qname_raw
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - dnsdist_ffi_dnspacket_t*::overlay::d_qname::getStorage
    - size
    - data
    linkageType: ''
    returnType: void
    signature: void dnsdist_ffi_dnspacket_get_qname_raw(const dnsdist_ffi_dnspacket_t*
      packet, const char** qname, size_t* qnameSize)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - packet
    argTypes:
    - dnsdist_ffi_dnspacket_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1972
      start: 1966
    functionDepth: 0
    functionLinenumber: 1966
    functionLinenumberEnd: 1972
    functionName: dnsdist_ffi_dnspacket_get_qtype
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t dnsdist_ffi_dnspacket_get_qtype(const dnsdist_ffi_dnspacket_t*
      packet)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - packet
    argTypes:
    - dnsdist_ffi_dnspacket_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1980
      start: 1974
    functionDepth: 0
    functionLinenumber: 1974
    functionLinenumberEnd: 1980
    functionName: dnsdist_ffi_dnspacket_get_qclass
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t dnsdist_ffi_dnspacket_get_qclass(const dnsdist_ffi_dnspacket_t*
      packet)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 2
    argNames:
    - packet
    - section
    argTypes:
    - dnsdist_ffi_dnspacket_t*
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1996
      start: 1982
    functionDepth: 0
    functionLinenumber: 1982
    functionLinenumberEnd: 1996
    functionName: dnsdist_ffi_dnspacket_get_records_count_in_section
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t dnsdist_ffi_dnspacket_get_records_count_in_section(const dnsdist_ffi_dnspacket_t*
      packet, uint8_t section)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist_ffi_dnspacket_t*::overlay::d_records::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2000,1
    - Dst: dnsdist_ffi_dnspacket_t*::overlay::d_records::at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2003,1
    - Dst: getStorage
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2003,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2004,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2005,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 6
    argCount: 4
    argNames:
    - packet
    - idx
    - name
    - nameSize
    argTypes:
    - dnsdist_ffi_dnspacket_t*
    - size_t
    - char**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2006
      start: 1998
    functionDepth: 0
    functionLinenumber: 1998
    functionLinenumberEnd: 2006
    functionName: dnsdist_ffi_dnspacket_get_record_name_raw
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - dnsdist_ffi_dnspacket_t*::overlay::d_records::at
    - getStorage
    - dnsdist_ffi_dnspacket_t*::overlay::d_records::size
    - size
    - data
    linkageType: ''
    returnType: void
    signature: void dnsdist_ffi_dnspacket_get_record_name_raw(const dnsdist_ffi_dnspacket_t*
      packet, size_t idx, const char** name, size_t* nameSize)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist_ffi_dnspacket_t*::overlay::d_records::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2010,1
    - Dst: dnsdist_ffi_dnspacket_t*::overlay::d_records::at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2013,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - packet
    - idx
    argTypes:
    - dnsdist_ffi_dnspacket_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2014
      start: 2008
    functionDepth: 0
    functionLinenumber: 2008
    functionLinenumberEnd: 2014
    functionName: dnsdist_ffi_dnspacket_get_record_type
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - dnsdist_ffi_dnspacket_t*::overlay::d_records::size
    - dnsdist_ffi_dnspacket_t*::overlay::d_records::at
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t dnsdist_ffi_dnspacket_get_record_type(const dnsdist_ffi_dnspacket_t*
      packet, size_t idx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist_ffi_dnspacket_t*::overlay::d_records::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2018,1
    - Dst: dnsdist_ffi_dnspacket_t*::overlay::d_records::at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2021,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - packet
    - idx
    argTypes:
    - dnsdist_ffi_dnspacket_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2022
      start: 2016
    functionDepth: 0
    functionLinenumber: 2016
    functionLinenumberEnd: 2022
    functionName: dnsdist_ffi_dnspacket_get_record_class
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - dnsdist_ffi_dnspacket_t*::overlay::d_records::size
    - dnsdist_ffi_dnspacket_t*::overlay::d_records::at
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t dnsdist_ffi_dnspacket_get_record_class(const dnsdist_ffi_dnspacket_t*
      packet, size_t idx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist_ffi_dnspacket_t*::overlay::d_records::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2026,1
    - Dst: dnsdist_ffi_dnspacket_t*::overlay::d_records::at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2029,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - packet
    - idx
    argTypes:
    - dnsdist_ffi_dnspacket_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2030
      start: 2024
    functionDepth: 0
    functionLinenumber: 2024
    functionLinenumberEnd: 2030
    functionName: dnsdist_ffi_dnspacket_get_record_ttl
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - dnsdist_ffi_dnspacket_t*::overlay::d_records::size
    - dnsdist_ffi_dnspacket_t*::overlay::d_records::at
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t dnsdist_ffi_dnspacket_get_record_ttl(const dnsdist_ffi_dnspacket_t*
      packet, size_t idx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist_ffi_dnspacket_t*::overlay::d_records::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2034,1
    - Dst: dnsdist_ffi_dnspacket_t*::overlay::d_records::at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2037,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - packet
    - idx
    argTypes:
    - dnsdist_ffi_dnspacket_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2038
      start: 2032
    functionDepth: 0
    functionLinenumber: 2032
    functionLinenumberEnd: 2038
    functionName: dnsdist_ffi_dnspacket_get_record_content_length
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - dnsdist_ffi_dnspacket_t*::overlay::d_records::size
    - dnsdist_ffi_dnspacket_t*::overlay::d_records::at
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t dnsdist_ffi_dnspacket_get_record_content_length(const dnsdist_ffi_dnspacket_t*
      packet, size_t idx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist_ffi_dnspacket_t*::overlay::d_records::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2042,1
    - Dst: dnsdist_ffi_dnspacket_t*::overlay::d_records::at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2045,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - packet
    - idx
    argTypes:
    - dnsdist_ffi_dnspacket_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2046
      start: 2040
    functionDepth: 0
    functionLinenumber: 2040
    functionLinenumberEnd: 2046
    functionName: dnsdist_ffi_dnspacket_get_record_content_offset
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - dnsdist_ffi_dnspacket_t*::overlay::d_records::size
    - dnsdist_ffi_dnspacket_t*::overlay::d_records::at
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t dnsdist_ffi_dnspacket_get_record_content_offset(const dnsdist_ffi_dnspacket_t*
      packet, size_t idx)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: DNSName::getStorage
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2055,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2056,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2059,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2059,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2059,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2060,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2063,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2063,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2063,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2064,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2064,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2064,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2064,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 5
    argNames:
    - packet
    - packetSize
    - offset
    - name
    - nameSize
    argTypes:
    - char*
    - size_t
    - size_t
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2067
      start: 2048
    functionDepth: 0
    functionLinenumber: 2048
    functionLinenumberEnd: 2067
    functionName: dnsdist_ffi_dnspacket_get_name_at_offset_raw
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - memcpy
    - DNSName::getStorage
    - Logging::Loggable
    - what
    - VERBOSESLOG
    - infolog
    - size
    - data
    - getLogger
    linkageType: ''
    returnType: size_t
    signature: size_t dnsdist_ffi_dnspacket_get_name_at_offset_raw(const char* packet,
      size_t packetSize, size_t offset, char* name, size_t nameSize)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist_ffi_dnspacket_t*::overlay::d_records::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2071,1
    - Dst: dnsdist_ffi_dnspacket_t*::overlay::d_records::at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2075,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2081,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 10
    argCount: 5
    argNames:
    - raw
    - packet
    - idx
    - addr
    - addrSize
    argTypes:
    - char*
    - dnsdist_ffi_dnspacket_t*
    - size_t
    - char*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2085
      start: 2069
    functionDepth: 0
    functionLinenumber: 2069
    functionLinenumberEnd: 2085
    functionName: dnsdist_ffi_dnspacket_parse_a_record
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - memcpy
    - dnsdist_ffi_dnspacket_t*::overlay::d_records::size
    - dnsdist_ffi_dnspacket_t*::overlay::d_records::at
    linkageType: ''
    returnType: bool
    signature: bool dnsdist_ffi_dnspacket_parse_a_record(const char* raw, const dnsdist_ffi_dnspacket_t*
      packet, size_t idx, char* addr, size_t* addrSize)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist_ffi_dnspacket_t*::overlay::d_records::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2089,1
    - Dst: dnsdist_ffi_dnspacket_t*::overlay::d_records::at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2093,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2099,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 10
    argCount: 5
    argNames:
    - raw
    - packet
    - idx
    - addr
    - addrSize
    argTypes:
    - char*
    - dnsdist_ffi_dnspacket_t*
    - size_t
    - char*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2103
      start: 2087
    functionDepth: 0
    functionLinenumber: 2087
    functionLinenumberEnd: 2103
    functionName: dnsdist_ffi_dnspacket_parse_aaaa_record
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - memcpy
    - dnsdist_ffi_dnspacket_t*::overlay::d_records::size
    - dnsdist_ffi_dnspacket_t*::overlay::d_records::at
    linkageType: ''
    returnType: bool
    signature: bool dnsdist_ffi_dnspacket_parse_aaaa_record(const char* raw, const
      dnsdist_ffi_dnspacket_t* packet, size_t idx, char* addr, size_t* addrSize)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist_ffi_dnspacket_t*::overlay::d_records::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2107,1
    - Dst: dnsdist_ffi_dnspacket_t*::overlay::d_records::at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2111,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2114,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2122,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 15
    argCount: 5
    argNames:
    - raw
    - packet
    - idx
    - addr
    - addrSize
    argTypes:
    - char*
    - dnsdist_ffi_dnspacket_t*
    - size_t
    - char*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2129
      start: 2105
    functionDepth: 0
    functionLinenumber: 2105
    functionLinenumberEnd: 2129
    functionName: dnsdist_ffi_dnspacket_parse_address_record
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - memcpy
    - dnsdist_ffi_dnspacket_t*::overlay::d_records::size
    - dnsdist_ffi_dnspacket_t*::overlay::d_records::at
    linkageType: ''
    returnType: bool
    signature: bool dnsdist_ffi_dnspacket_parse_address_record(const char* raw, const
      dnsdist_ffi_dnspacket_t* packet, size_t idx, char* addr, size_t* addrSize)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist_ffi_dnspacket_t*::overlay::d_records::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2133,1
    - Dst: dnsdist_ffi_dnspacket_t*::overlay::d_records::at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2137,1
    - Dst: DNSName::getStorage
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2143,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2144,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2144,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2144,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2145,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 10
    argCount: 5
    argNames:
    - raw
    - packet
    - idx
    - name
    - nameSize
    argTypes:
    - char*
    - dnsdist_ffi_dnspacket_t*
    - size_t
    - char*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2148
      start: 2131
    functionDepth: 0
    functionLinenumber: 2131
    functionLinenumberEnd: 2148
    functionName: dnsdist_ffi_dnspacket_parse_cname_record
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - memcpy
    - DNSName::getStorage
    - dnsdist_ffi_dnspacket_t*::overlay::d_records::at
    - dnsdist_ffi_dnspacket_t*::overlay::d_records::size
    - size
    - data
    linkageType: ''
    returnType: bool
    signature: bool dnsdist_ffi_dnspacket_parse_cname_record(const char* raw, const
      dnsdist_ffi_dnspacket_t* packet, size_t idx, char* name, size_t* nameSize)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - packet
    argTypes:
    - dnsdist_ffi_dnspacket_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2154
      start: 2150
    functionDepth: 0
    functionLinenumber: 2150
    functionLinenumberEnd: 2154
    functionName: dnsdist_ffi_dnspacket_free
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void dnsdist_ffi_dnspacket_free(dnsdist_ffi_dnspacket_t* packet)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::metrics::declareCustomMetric
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2161,1
    - Dst: std::optional<std::string>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2161,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 5
    argCount: 5
    argNames:
    - name
    - nameLen
    - type
    - description
    - customName
    argTypes:
    - char*
    - size_t
    - char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2163
      start: 2156
    functionDepth: 2
    functionLinenumber: 2156
    functionLinenumberEnd: 2163
    functionName: dnsdist_ffi_metric_declare
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - std::optional<std::string>
    - dnsdist::metrics::declareCustomMetric
    linkageType: ''
    returnType: bool
    signature: bool dnsdist_ffi_metric_declare(const char* name, size_t nameLen, const
      char* type, const char* description, const char* customName)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::metrics::incrementCustomCounter
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2167,1
    - Dst: std::string_view
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2167,1
    - Dst: std::get_if<dnsdist::metrics::Error>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2168,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - metricName
    - metricNameLen
    argTypes:
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2171
      start: 2165
    functionDepth: 4
    functionLinenumber: 2165
    functionLinenumberEnd: 2171
    functionName: dnsdist_ffi_metric_inc
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - std::string_view
    - dnsdist::metrics::incrementCustomCounter
    - std::get_if<dnsdist::metrics::Error>
    linkageType: ''
    returnType: void
    signature: void dnsdist_ffi_metric_inc(const char* metricName, size_t metricNameLen)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::metrics::incrementCustomCounter
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2175,1
    - Dst: std::string_view
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2175,1
    - Dst: std::get_if<dnsdist::metrics::Error>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2176,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - metricName
    - metricNameLen
    - value
    argTypes:
    - char*
    - size_t
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2179
      start: 2173
    functionDepth: 4
    functionLinenumber: 2173
    functionLinenumberEnd: 2179
    functionName: dnsdist_ffi_metric_inc_by
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - std::string_view
    - dnsdist::metrics::incrementCustomCounter
    - std::get_if<dnsdist::metrics::Error>
    linkageType: ''
    returnType: void
    signature: void dnsdist_ffi_metric_inc_by(const char* metricName, size_t metricNameLen,
      uint64_t value)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::metrics::decrementCustomCounter
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2183,1
    - Dst: std::string_view
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2183,1
    - Dst: std::get_if<dnsdist::metrics::Error>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2184,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - metricName
    - metricNameLen
    argTypes:
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2187
      start: 2181
    functionDepth: 4
    functionLinenumber: 2181
    functionLinenumberEnd: 2187
    functionName: dnsdist_ffi_metric_dec
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - std::string_view
    - dnsdist::metrics::decrementCustomCounter
    - std::get_if<dnsdist::metrics::Error>
    linkageType: ''
    returnType: void
    signature: void dnsdist_ffi_metric_dec(const char* metricName, size_t metricNameLen)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::metrics::setCustomGauge
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2191,1
    - Dst: std::string_view
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2191,1
    - Dst: std::get_if<dnsdist::metrics::Error>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2192,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - metricName
    - metricNameLen
    - value
    argTypes:
    - char*
    - size_t
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2195
      start: 2189
    functionDepth: 4
    functionLinenumber: 2189
    functionLinenumberEnd: 2195
    functionName: dnsdist_ffi_metric_set
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - std::string_view
    - std::get_if<dnsdist::metrics::Error>
    - dnsdist::metrics::setCustomGauge
    linkageType: ''
    returnType: void
    signature: void dnsdist_ffi_metric_set(const char* metricName, size_t metricNameLen,
      double value)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::metrics::getCustomMetric
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2200,1
    - Dst: std::string_view
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2200,1
    - Dst: std::get_if<dnsdist::metrics::Error>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2201,1
    - Dst: std::get<double>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2204,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - metricName
    - metricNameLen
    - isCounter
    argTypes:
    - char*
    - size_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2205
      start: 2197
    functionDepth: 3
    functionLinenumber: 2197
    functionLinenumberEnd: 2205
    functionName: dnsdist_ffi_metric_get
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - std::string_view
    - std::get<double>
    - dnsdist::metrics::getCustomMetric
    - std::get_if<dnsdist::metrics::Error>
    linkageType: ''
    returnType: double
    signature: double dnsdist_ffi_metric_get(const char* metricName, size_t metricNameLen,
      bool isCounter)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist_ffi_network_message_t*::payload::c_str
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2210,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - msg
    argTypes:
    - dnsdist_ffi_network_message_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2213
      start: 2207
    functionDepth: 0
    functionLinenumber: 2207
    functionLinenumberEnd: 2213
    functionName: dnsdist_ffi_network_message_get_payload
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - dnsdist_ffi_network_message_t*::payload::c_str
    linkageType: ''
    returnType: char
    signature: char * dnsdist_ffi_network_message_get_payload(const dnsdist_ffi_network_message_t*
      msg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist_ffi_network_message_t*::payload::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2218,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - msg
    argTypes:
    - dnsdist_ffi_network_message_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2221
      start: 2215
    functionDepth: 0
    functionLinenumber: 2215
    functionLinenumberEnd: 2221
    functionName: dnsdist_ffi_network_message_get_payload_size
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - dnsdist_ffi_network_message_t*::payload::size
    linkageType: ''
    returnType: size_t
    signature: size_t dnsdist_ffi_network_message_get_payload_size(const dnsdist_ffi_network_message_t*
      msg)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - msg
    argTypes:
    - dnsdist_ffi_network_message_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2229
      start: 2223
    functionDepth: 0
    functionLinenumber: 2223
    functionLinenumberEnd: 2229
    functionName: dnsdist_ffi_network_message_get_endpoint_id
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t dnsdist_ffi_network_message_get_endpoint_id(const dnsdist_ffi_network_message_t*
      msg)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2237,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2240,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2240,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2240,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2241,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2241,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2241,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2245,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2245,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2246,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2246,1
    - Dst: gettime
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2253,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2256,1
    - Dst: static_cast<DNSAction::Action>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2256,1
    - Dst: dnsdist::DynamicBlocks::getClientAddressDynamicRulesCopy
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2258,1
    - Dst: std::make_shared<DynBlock::TagSettings>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2260,1
    - Dst: dnsdist::DynamicBlocks::addOrRefreshBlock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2266,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2266,1
    - Dst: dnsdist::DynamicBlocks::setClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2267,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2267,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2272,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2272,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2272,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2273,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2273,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2273,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2276,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2276,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2277,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2277,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2280,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2280,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2281,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2281,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 32
    argCount: 8
    argNames:
    - address
    - message
    - action
    - duration
    - clientIPMask
    - clientIPPortMask
    - tagKey
    - tagValue
    argTypes:
    - char*
    - char*
    - uint8_t
    - unsigned int
    - uint8_t
    - uint8_t
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2284
      start: 2232
    functionDepth: 1
    functionLinenumber: 2232
    functionLinenumberEnd: 2284
    functionName: dnsdist_ffi_dynamic_blocks_add
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - errlog
    - std::move
    - SLOG
    - dnsdist::DynamicBlocks::getClientAddressDynamicRulesCopy
    - Logging::Loggable
    - std::make_shared<DynBlock::TagSettings>
    - what
    - dnsdist::DynamicBlocks::addOrRefreshBlock
    - ComboAddress
    - DNSName
    - static_cast<DNSAction::Action>
    - dnsdist::DynamicBlocks::setClientAddressDynamicRules
    - gettime
    - getLogger
    linkageType: ''
    returnType: bool
    signature: bool dnsdist_ffi_dynamic_blocks_add(const char* address, const char*
      message, uint8_t action, unsigned int duration, uint8_t clientIPMask, uint8_t
      clientIPPortMask, const char* tagKey, const char* tagValue)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: DNSName::DNSName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2289,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2291,1
    - Dst: DNSName::makeUsLowerCase
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2292,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2295,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2295,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2295,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2296,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2296,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2296,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2300,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2300,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2301,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2301,1
    - Dst: gettime
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2306,1
    - Dst: static_cast<DNSAction::Action>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2309,1
    - Dst: dnsdist::DynamicBlocks::getSuffixDynamicRulesCopy
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2310,1
    - Dst: std::make_shared<DynBlock::TagSettings>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2312,1
    - Dst: dnsdist::DynamicBlocks::addOrRefreshBlockSMT
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2318,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2318,1
    - Dst: dnsdist::DynamicBlocks::setSuffixDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2319,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2319,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2324,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2324,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2324,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2325,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2325,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2325,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2328,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2328,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2329,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2329,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2332,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2332,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2333,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2333,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 33
    argCount: 6
    argNames:
    - suffix
    - message
    - action
    - duration
    - tagKey
    - tagValue
    argTypes:
    - char*
    - char*
    - uint8_t
    - unsigned int
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2336
      start: 2286
    functionDepth: 1
    functionLinenumber: 2286
    functionLinenumberEnd: 2336
    functionName: dnsdist_ffi_dynamic_blocks_smt_add
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - errlog
    - std::move
    - SLOG
    - dnsdist::DynamicBlocks::setSuffixDynamicRules
    - DNSName::makeUsLowerCase
    - Logging::Loggable
    - what
    - std::make_shared<DynBlock::TagSettings>
    - dnsdist::DynamicBlocks::addOrRefreshBlockSMT
    - DNSName
    - static_cast<DNSAction::Action>
    - dnsdist::DynamicBlocks::getSuffixDynamicRulesCopy
    - gettime
    - DNSName::DNSName
    - getLogger
    linkageType: ''
    returnType: bool
    signature: bool dnsdist_ffi_dynamic_blocks_smt_add(const char* suffix, const char*
      message, uint8_t action, unsigned int duration, const char* tagKey, const char*
      tagValue)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: std::make_unique<dnsdist_ffi_dynamic_blocks_list_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2349,1
    - Dst: gettime
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2352,1
    - Dst: dnsdist::DynamicBlocks::getClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2354,1
    - Dst: getHits
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2364,1
    - Dst: getNetwork
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2364,1
    - Dst: auto::d_entries::push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2366,1
    - Dst: strdup
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2366,1
    - Dst: toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2366,1
    - Dst: strdup
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2366,1
    - Dst: reason::c_str
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2366,1
    - Dst: static_cast<uint64_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2366,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2366,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2366,1
    - Dst: auto::d_entries::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2369,1
    - Dst: auto::release
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2370,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 15
    argCount: 1
    argNames:
    - out
    argTypes:
    - dnsdist_ffi_dynamic_blocks_list_t**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2372
      start: 2343
    functionDepth: 1
    functionLinenumber: 2343
    functionLinenumberEnd: 2372
    functionName: dnsdist_ffi_dynamic_blocks_get_entries
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - std::make_unique<dnsdist_ffi_dynamic_blocks_list_t>
    - getHits
    - toString
    - dnsdist::configuration::getCurrentRuntimeConfiguration
    - dnsdist::DynamicBlocks::getClientAddressDynamicRules
    - static_cast<uint64_t>
    - static_cast<uint8_t>
    - auto::d_entries::push_back
    - getNetwork
    - strdup
    - gettime
    - auto::release
    - auto::d_entries::size
    - reason::c_str
    linkageType: ''
    returnType: size_t
    signature: size_t dnsdist_ffi_dynamic_blocks_get_entries(dnsdist_ffi_dynamic_blocks_list_t**
      out)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: std::make_unique<dnsdist_ffi_dynamic_blocks_list_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2380,1
    - Dst: gettime
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2383,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2385,1
    - Dst: dnsdist::DynamicBlocks::getSuffixDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2386,1
    - Dst: visit
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2387,1
    - Dst: auto::domain::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2393,1
    - Dst: auto::domain::toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2394,1
    - Dst: auto::d_entries::push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2399,1
    - Dst: strdup
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2399,1
    - Dst: string::c_str
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2399,1
    - Dst: strdup
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2399,1
    - Dst: auto::reason::c_str
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2399,1
    - Dst: static_cast<uint64_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2399,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2399,1
    - Dst: auto::d_entries::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2402,1
    - Dst: auto::release
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2403,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 1
    argNames:
    - out
    argTypes:
    - dnsdist_ffi_dynamic_blocks_list_t**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2405
      start: 2374
    functionDepth: 1
    functionLinenumber: 2374
    functionLinenumberEnd: 2405
    functionName: dnsdist_ffi_dynamic_blocks_smt_get_entries
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - std::make_unique<dnsdist_ffi_dynamic_blocks_list_t>
    - string::c_str
    - dnsdist::configuration::getCurrentRuntimeConfiguration
    - dnsdist::DynamicBlocks::getSuffixDynamicRules
    - auto::domain::empty
    - static_cast<uint64_t>
    - visit
    - static_cast<uint8_t>
    - auto::reason::c_str
    - auto::d_entries::push_back
    - strdup
    - gettime
    - auto::release
    - auto::domain::toString
    - auto::d_entries::size
    linkageType: ''
    returnType: size_t
    signature: size_t dnsdist_ffi_dynamic_blocks_smt_get_entries(dnsdist_ffi_dynamic_blocks_list_t**
      out)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist_ffi_dynamic_blocks_list_t*::d_entries::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2413,1
    - Dst: dnsdist_ffi_dynamic_blocks_list_t*::d_entries::at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2417,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - list
    - idx
    argTypes:
    - dnsdist_ffi_dynamic_blocks_list_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2418
      start: 2407
    functionDepth: 0
    functionLinenumber: 2407
    functionLinenumberEnd: 2418
    functionName: dnsdist_ffi_dynamic_blocks_list_get
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - dnsdist_ffi_dynamic_blocks_list_t*::d_entries::size
    - dnsdist_ffi_dynamic_blocks_list_t*::d_entries::at
    linkageType: ''
    returnType: dnsdist_ffi_dynamic_block_entry_t
    signature: dnsdist_ffi_dynamic_block_entry_t * dnsdist_ffi_dynamic_blocks_list_get(const
      dnsdist_ffi_dynamic_blocks_list_t* list, size_t idx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2428,1
    - Dst: free
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2430,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - list
    argTypes:
    - dnsdist_ffi_dynamic_blocks_list_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2435
      start: 2420
    functionDepth: 0
    functionLinenumber: 2420
    functionLinenumberEnd: 2435
    functionName: dnsdist_ffi_dynamic_blocks_list_free
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - free
    linkageType: ''
    returnType: void
    signature: void dnsdist_ffi_dynamic_blocks_list_free(dnsdist_ffi_dynamic_blocks_list_t*
      list)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: burtleCI
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2446,1
    - Dst: burtle
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2449,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 4
    argNames:
    - seed
    - data
    - dataSize
    - caseInsensitive
    argTypes:
    - uint32_t
    - unsigned char*
    - size_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2450
      start: 2439
    functionDepth: 0
    functionLinenumber: 2439
    functionLinenumberEnd: 2450
    functionName: dnsdist_ffi_hash
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - burtleCI
    - burtle
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t dnsdist_ffi_hash(uint32_t seed, const unsigned char* data,
      size_t dataSize, bool caseInsensitive)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::make_unique<dnsdist_ffi_svc_record_parameters>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2463,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2464,1
    - Dst: auto::release
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2467,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2471,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2471,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2471,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2472,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2472,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2472,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2475,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2475,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2476,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2476,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2479,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2479,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2480,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2480,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 4
    argNames:
    - targetName
    - priority
    - noDefaultALPN
    - out
    argTypes:
    - char*
    - uint16_t
    - bool
    - dnsdist_ffi_svc_record_parameters**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2484
      start: 2457
    functionDepth: 0
    functionLinenumber: 2457
    functionLinenumberEnd: 2484
    functionName: dnsdist_ffi_svc_record_parameters_new
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - errlog
    - SLOG
    - Logging::Loggable
    - what
    - std::make_unique<dnsdist_ffi_svc_record_parameters>
    - DNSName
    - auto::release
    - getLogger
    linkageType: ''
    returnType: bool
    signature: bool dnsdist_ffi_svc_record_parameters_new(const char* targetName,
      uint16_t priority, bool noDefaultALPN, dnsdist_ffi_svc_record_parameters** out)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - parameters
    - port
    argTypes:
    - dnsdist_ffi_svc_record_parameters*
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2492
      start: 2486
    functionDepth: 0
    functionLinenumber: 2486
    functionLinenumberEnd: 2492
    functionName: dnsdist_ffi_svc_record_parameters_set_port
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void dnsdist_ffi_svc_record_parameters_set_port(dnsdist_ffi_svc_record_parameters*
      parameters, uint16_t port)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2499,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 5
    argCount: 3
    argNames:
    - parameters
    - ech
    - echLen
    argTypes:
    - dnsdist_ffi_svc_record_parameters*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2500
      start: 2494
    functionDepth: 0
    functionLinenumber: 2494
    functionLinenumberEnd: 2500
    functionName: dnsdist_ffi_svc_record_parameters_set_ech
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - std::string
    linkageType: ''
    returnType: void
    signature: void dnsdist_ffi_svc_record_parameters_set_ech(dnsdist_ffi_svc_record_parameters*
      parameters, const char* ech, size_t echLen)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist_ffi_svc_record_parameters*::parameters::additionalParams::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2507,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2507,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 5
    argCount: 4
    argNames:
    - parameters
    - key
    - value
    - valueLen
    argTypes:
    - dnsdist_ffi_svc_record_parameters*
    - uint16_t
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2508
      start: 2502
    functionDepth: 0
    functionLinenumber: 2502
    functionLinenumberEnd: 2508
    functionName: dnsdist_ffi_svc_record_parameters_set_additional_param
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - std::string
    - dnsdist_ffi_svc_record_parameters*::parameters::additionalParams::emplace_back
    linkageType: ''
    returnType: void
    signature: void dnsdist_ffi_svc_record_parameters_set_additional_param(dnsdist_ffi_svc_record_parameters*
      parameters, uint16_t key, const char* value, size_t valueLen)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist_ffi_svc_record_parameters*::parameters::mandatoryParams::insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2515,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - parameters
    - key
    argTypes:
    - dnsdist_ffi_svc_record_parameters*
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2516
      start: 2510
    functionDepth: 1
    functionLinenumber: 2510
    functionLinenumberEnd: 2516
    functionName: dnsdist_ffi_svc_record_parameters_add_mandatory_param
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - dnsdist_ffi_svc_record_parameters*::parameters::mandatoryParams::insert
    linkageType: ''
    returnType: void
    signature: void dnsdist_ffi_svc_record_parameters_add_mandatory_param(dnsdist_ffi_svc_record_parameters*
      parameters, uint16_t key)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist_ffi_svc_record_parameters*::parameters::alpns::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2523,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 5
    argCount: 3
    argNames:
    - parameters
    - value
    - valueLen
    argTypes:
    - dnsdist_ffi_svc_record_parameters*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2524
      start: 2518
    functionDepth: 0
    functionLinenumber: 2518
    functionLinenumberEnd: 2524
    functionName: dnsdist_ffi_svc_record_parameters_add_alpn
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - dnsdist_ffi_svc_record_parameters*::parameters::alpns::emplace_back
    linkageType: ''
    returnType: void
    signature: void dnsdist_ffi_svc_record_parameters_add_alpn(dnsdist_ffi_svc_record_parameters*
      parameters, const char* value, size_t valueLen)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist_ffi_svc_record_parameters*::parameters::ipv4hints::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2532,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2532,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2535,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2535,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2535,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2536,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2536,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2539,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2539,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2540,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2543,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2543,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2544,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 3
    argNames:
    - parameters
    - value
    - valueLen
    argTypes:
    - dnsdist_ffi_svc_record_parameters*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2546
      start: 2526
    functionDepth: 0
    functionLinenumber: 2526
    functionLinenumberEnd: 2546
    functionName: dnsdist_ffi_svc_record_parameters_add_ipv4_hint
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - errlog
    - dnsdist_ffi_svc_record_parameters*::parameters::ipv4hints::emplace_back
    - SLOG
    - what
    - std::string
    - getLogger
    linkageType: ''
    returnType: void
    signature: void dnsdist_ffi_svc_record_parameters_add_ipv4_hint(dnsdist_ffi_svc_record_parameters*
      parameters, const char* value, size_t valueLen)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist_ffi_svc_record_parameters*::parameters::ipv6hints::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2554,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2554,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2557,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2557,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2557,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2558,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2558,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2561,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2561,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2562,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2565,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2565,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2566,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 3
    argNames:
    - parameters
    - value
    - valueLen
    argTypes:
    - dnsdist_ffi_svc_record_parameters*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2568
      start: 2548
    functionDepth: 0
    functionLinenumber: 2548
    functionLinenumberEnd: 2568
    functionName: dnsdist_ffi_svc_record_parameters_add_ipv6_hint
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - errlog
    - SLOG
    - dnsdist_ffi_svc_record_parameters*::parameters::ipv6hints::emplace_back
    - what
    - std::string
    - getLogger
    linkageType: ''
    returnType: void
    signature: void dnsdist_ffi_svc_record_parameters_add_ipv6_hint(dnsdist_ffi_svc_record_parameters*
      parameters, const char* value, size_t valueLen)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: std::vector::reserve
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2576,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2583,1
    - Dst: dnsdist::svc::generateSVCResponse
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2585,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 4
    argNames:
    - dnsQuestion
    - parametersList
    - parametersListSize
    - ttl
    argTypes:
    - dnsdist_ffi_dnsquestion_t*
    - dnsdist_ffi_svc_record_parameters**
    - size_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2586
      start: 2570
    functionDepth: 1
    functionLinenumber: 2570
    functionLinenumberEnd: 2586
    functionName: dnsdist_ffi_dnsquestion_generate_svc_response
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - std::vector::reserve
    - std::vector::push_back
    - dnsdist::svc::generateSVCResponse
    linkageType: ''
    returnType: bool
    signature: bool dnsdist_ffi_dnsquestion_generate_svc_response(dnsdist_ffi_dnsquestion_t*
      dnsQuestion, const dnsdist_ffi_svc_record_parameters** parametersList, size_t
      parametersListSize, uint32_t ttl)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - parameters
    argTypes:
    - dnsdist_ffi_svc_record_parameters*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2592
      start: 2588
    functionDepth: 0
    functionLinenumber: 2588
    functionLinenumberEnd: 2592
    functionName: dnsdist_ffi_svc_record_parameters_free
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void dnsdist_ffi_svc_record_parameters_free(dnsdist_ffi_svc_record_parameters*
      parameters)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: checkDNSQuestionType
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2601,1
    - Dst: dnsdist_ffi_dnsquestion_t*::pbfWriter::valid
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2605,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2606,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2606,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2607,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2612,1
    - Dst: dnsdist_ffi_dnsquestion_t*::pbfMetaWriter::add_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2613,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2613,1
    - Dst: protozero::data_view::data_view
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2613,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2614,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 3
    argNames:
    - dnsQuestion
    - key
    - keyLen
    argTypes:
    - dnsdist_ffi_dnsquestion_t*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2616
      start: 2594
    functionDepth: 1
    functionLinenumber: 2594
    functionLinenumberEnd: 2616
    functionName: dnsdist_ffi_dnsquestion_meta_begin_key
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - checkDNSQuestionType
    - static_cast<protozero::pbf_tag_type>
    - VERBOSESLOG
    - infolog
    - protozero::data_view::data_view
    - dnsdist_ffi_dnsquestion_t*::pbfWriter::valid
    - dnsdist_ffi_dnsquestion_t*::pbfMetaWriter::add_string
    - getLogger
    linkageType: ''
    returnType: void
    signature: void dnsdist_ffi_dnsquestion_meta_begin_key([[maybe_unused]] dnsdist_ffi_dnsquestion_t*
      dnsQuestion, [[maybe_unused]] const char* key, [[maybe_unused]] size_t keyLen)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: checkDNSQuestionType
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2625,1
    - Dst: dnsdist_ffi_dnsquestion_t*::pbfMetaValueWriter::valid
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2629,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2630,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2630,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2631,1
    - Dst: dnsdist_ffi_dnsquestion_t*::pbfMetaValueWriter::add_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2635,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2635,1
    - Dst: protozero::data_view::data_view
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2635,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 3
    argNames:
    - dnsQuestion
    - value
    - valueLen
    argTypes:
    - dnsdist_ffi_dnsquestion_t*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2637
      start: 2618
    functionDepth: 1
    functionLinenumber: 2618
    functionLinenumberEnd: 2637
    functionName: dnsdist_ffi_dnsquestion_meta_add_str_value_to_key
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - checkDNSQuestionType
    - dnsdist_ffi_dnsquestion_t*::pbfMetaValueWriter::add_string
    - static_cast<protozero::pbf_tag_type>
    - VERBOSESLOG
    - infolog
    - protozero::data_view::data_view
    - dnsdist_ffi_dnsquestion_t*::pbfMetaValueWriter::valid
    - getLogger
    linkageType: ''
    returnType: void
    signature: void dnsdist_ffi_dnsquestion_meta_add_str_value_to_key([[maybe_unused]]
      dnsdist_ffi_dnsquestion_t* dnsQuestion, [[maybe_unused]] const char* value,
      [[maybe_unused]] size_t valueLen)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: checkDNSQuestionType
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2646,1
    - Dst: dnsdist_ffi_dnsquestion_t*::pbfMetaValueWriter::valid
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2650,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2651,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2651,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2652,1
    - Dst: dnsdist_ffi_dnsquestion_t*::pbfMetaValueWriter::add_uint64
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2656,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2656,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 2
    argNames:
    - dnsQuestion
    - value
    argTypes:
    - dnsdist_ffi_dnsquestion_t*
    - int64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2658
      start: 2639
    functionDepth: 1
    functionLinenumber: 2639
    functionLinenumberEnd: 2658
    functionName: dnsdist_ffi_dnsquestion_meta_add_int64_value_to_key
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - checkDNSQuestionType
    - static_cast<protozero::pbf_tag_type>
    - dnsdist_ffi_dnsquestion_t*::pbfMetaValueWriter::add_uint64
    - VERBOSESLOG
    - infolog
    - dnsdist_ffi_dnsquestion_t*::pbfMetaValueWriter::valid
    - getLogger
    linkageType: ''
    returnType: void
    signature: void dnsdist_ffi_dnsquestion_meta_add_int64_value_to_key([[maybe_unused]]
      dnsdist_ffi_dnsquestion_t* dnsQuestion, [[maybe_unused]] int64_t value)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: checkDNSQuestionType
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2667,1
    - Dst: dnsdist_ffi_dnsquestion_t*::pbfWriter::valid
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2671,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2672,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2672,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2673,1
    - Dst: dnsdist_ffi_dnsquestion_t*::pbfMetaValueWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2679,1
    - Dst: dnsdist_ffi_dnsquestion_t*::pbfMetaWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2680,1
    - Dst: protozero::basic_pbf_writer::basic_pbf_writer
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2681,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2684,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2684,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2684,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2685,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2685,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 1
    argNames:
    - dnsQuestion
    argTypes:
    - dnsdist_ffi_dnsquestion_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2688
      start: 2660
    functionDepth: 1
    functionLinenumber: 2660
    functionLinenumberEnd: 2688
    functionName: dnsdist_ffi_dnsquestion_meta_end_key
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - checkDNSQuestionType
    - dnsdist_ffi_dnsquestion_t*::pbfMetaWriter::commit
    - dnsdist_ffi_dnsquestion_t*::pbfMetaValueWriter::commit
    - what
    - VERBOSESLOG
    - infolog
    - protozero::basic_pbf_writer::basic_pbf_writer
    - dnsdist_ffi_dnsquestion_t*::pbfWriter::valid
    - getLogger
    linkageType: ''
    returnType: void
    signature: void dnsdist_ffi_dnsquestion_meta_end_key([[maybe_unused]] dnsdist_ffi_dnsquestion_t*
      dnsQuestion)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: checkDNSResponseType
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2698,1
    - Dst: dnsdist_ffi_dnsresponse_t*::pbfWriter::valid
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2702,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2703,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2703,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2704,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2709,1
    - Dst: dnsdist_ffi_dnsresponse_t*::pbfMetaWriter::add_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2710,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2710,1
    - Dst: protozero::data_view::data_view
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2710,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2711,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 3
    argNames:
    - dnsResponse
    - key
    - keyLen
    argTypes:
    - dnsdist_ffi_dnsresponse_t*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2713
      start: 2690
    functionDepth: 1
    functionLinenumber: 2690
    functionLinenumberEnd: 2713
    functionName: dnsdist_ffi_dnsresponse_meta_begin_key
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - static_cast<protozero::pbf_tag_type>
    - dnsdist_ffi_dnsresponse_t*::pbfMetaWriter::add_string
    - VERBOSESLOG
    - infolog
    - checkDNSResponseType
    - protozero::data_view::data_view
    - dnsdist_ffi_dnsresponse_t*::pbfWriter::valid
    - getLogger
    linkageType: ''
    returnType: void
    signature: void dnsdist_ffi_dnsresponse_meta_begin_key([[maybe_unused]] dnsdist_ffi_dnsresponse_t*
      dnsResponse, [[maybe_unused]] const char* key, [[maybe_unused]] size_t keyLen)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: checkDNSResponseType
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2723,1
    - Dst: dnsdist_ffi_dnsresponse_t*::pbfMetaValueWriter::valid
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2727,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2728,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2728,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2729,1
    - Dst: dnsdist_ffi_dnsresponse_t*::pbfMetaValueWriter::add_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2733,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2733,1
    - Dst: protozero::data_view::data_view
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2733,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 3
    argNames:
    - dnsResponse
    - value
    - valueLen
    argTypes:
    - dnsdist_ffi_dnsresponse_t*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2735
      start: 2715
    functionDepth: 1
    functionLinenumber: 2715
    functionLinenumberEnd: 2735
    functionName: dnsdist_ffi_dnsresponse_meta_add_str_value_to_key
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - static_cast<protozero::pbf_tag_type>
    - dnsdist_ffi_dnsresponse_t*::pbfMetaValueWriter::add_string
    - VERBOSESLOG
    - infolog
    - checkDNSResponseType
    - protozero::data_view::data_view
    - dnsdist_ffi_dnsresponse_t*::pbfMetaValueWriter::valid
    - getLogger
    linkageType: ''
    returnType: void
    signature: void dnsdist_ffi_dnsresponse_meta_add_str_value_to_key([[maybe_unused]]
      dnsdist_ffi_dnsresponse_t* dnsResponse, [[maybe_unused]] const char* value,
      [[maybe_unused]] size_t valueLen)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: checkDNSResponseType
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2745,1
    - Dst: dnsdist_ffi_dnsresponse_t*::pbfMetaValueWriter::valid
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2749,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2750,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2750,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2751,1
    - Dst: dnsdist_ffi_dnsresponse_t*::pbfMetaValueWriter::add_uint64
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2755,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2755,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 2
    argNames:
    - dnsResponse
    - value
    argTypes:
    - dnsdist_ffi_dnsresponse_t*
    - int64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2757
      start: 2737
    functionDepth: 1
    functionLinenumber: 2737
    functionLinenumberEnd: 2757
    functionName: dnsdist_ffi_dnsresponse_meta_add_int64_value_to_key
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - static_cast<protozero::pbf_tag_type>
    - VERBOSESLOG
    - infolog
    - checkDNSResponseType
    - dnsdist_ffi_dnsresponse_t*::pbfMetaValueWriter::add_uint64
    - dnsdist_ffi_dnsresponse_t*::pbfMetaValueWriter::valid
    - getLogger
    linkageType: ''
    returnType: void
    signature: void dnsdist_ffi_dnsresponse_meta_add_int64_value_to_key([[maybe_unused]]
      dnsdist_ffi_dnsresponse_t* dnsResponse, [[maybe_unused]] int64_t value)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: checkDNSResponseType
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2767,1
    - Dst: dnsdist_ffi_dnsresponse_t*::pbfWriter::valid
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2771,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2772,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2772,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2773,1
    - Dst: dnsdist_ffi_dnsresponse_t*::pbfMetaValueWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2779,1
    - Dst: dnsdist_ffi_dnsresponse_t*::pbfMetaWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2780,1
    - Dst: protozero::basic_pbf_writer::basic_pbf_writer
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2781,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2784,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2784,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2784,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2785,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc:2785,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 1
    argNames:
    - dnsResponse
    argTypes:
    - dnsdist_ffi_dnsresponse_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2788
      start: 2759
    functionDepth: 1
    functionLinenumber: 2759
    functionLinenumberEnd: 2788
    functionName: dnsdist_ffi_dnsresponse_meta_end_key
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - what
    - VERBOSESLOG
    - infolog
    - checkDNSResponseType
    - dnsdist_ffi_dnsresponse_t*::pbfMetaWriter::commit
    - protozero::basic_pbf_writer::basic_pbf_writer
    - dnsdist_ffi_dnsresponse_t*::pbfMetaValueWriter::commit
    - dnsdist_ffi_dnsresponse_t*::pbfWriter::valid
    - getLogger
    linkageType: ''
    returnType: void
    signature: void dnsdist_ffi_dnsresponse_meta_end_key([[maybe_unused]] dnsdist_ffi_dnsresponse_t*
      dnsResponse)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 33
      start: 33
    functionDepth: 0
    functionLinenumber: 33
    functionLinenumberEnd: 33
    functionName: EDNSCookiesOpt
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ednscookies.hh
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void EDNSCookiesOpt()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/ednscookies.hh:42,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/ednscookies.hh:42,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 40
    functionDepth: 0
    functionLinenumber: 40
    functionLinenumberEnd: 43
    functionName: size
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ednscookies.hh
    functionUses: 780
    functionsReached:
    - size
    linkageType: ''
    returnType: size_t
    signature: size_t size() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/ednscookies.hh:51,1
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/ednscookies.hh:51,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/ednscookies.hh:51,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/ednscookies.hh:51,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 45
    functionDepth: 0
    functionLinenumber: 45
    functionLinenumberEnd: 52
    functionName: isWellFormed
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ednscookies.hh
    functionUses: 9
    functionsReached:
    - empty
    - size
    linkageType: ''
    returnType: bool
    signature: bool isWellFormed() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 60
    functionDepth: 0
    functionLinenumber: 60
    functionLinenumberEnd: 63
    functionName: getServer
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ednscookies.hh
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string getServer() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 64
    functionDepth: 0
    functionLinenumber: 64
    functionLinenumberEnd: 67
    functionName: getClient
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ednscookies.hh
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string getClient() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:61,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:61,1
    - Dst: getDescriptor
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:61,1
    - Dst: DoHConnectionToBackend::getConcurrentStreamsCount
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:61,1
    - Dst: ostringstream::str
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:62,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 58
    functionDepth: 1
    functionLinenumber: 58
    functionLinenumberEnd: 63
    functionName: DoHConnectionToBackend::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc
    functionUses: 0
    functionsReached:
    - std::to_string
    - getName
    - DoHConnectionToBackend::getConcurrentStreamsCount
    - ostringstream::str
    - getDescriptor
    linkageType: ''
    returnType: std::string
    signature: std::string toString() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ConnectionToBackend::getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:67,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:67,1
    - Dst: DoHConnectionToBackend::getConcurrentStreamsCount
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:67,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:67,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 65
    functionDepth: 1
    functionLinenumber: 65
    functionLinenumberEnd: 68
    functionName: DoHConnectionToBackend::getLogger
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc
    functionUses: 0
    functionsReached:
    - DoHConnectionToBackend::getConcurrentStreamsCount
    - ConnectionToBackend::getLogger
    - Logging::Loggable
    linkageType: ''
    returnType: std::shared_ptr<const Logr::Logger>
    signature: std::shared_ptr<const Logr::Logger> getLogger() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - h
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 70
    functionDepth: 0
    functionLinenumber: 70
    functionLinenumberEnd: 73
    functionName: DoHConnectionToBackend::setHealthCheck
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setHealthCheck(bool h)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - removeFromCache
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 79
    functionDepth: 0
    functionLinenumber: 79
    functionLinenumberEnd: 82
    functionName: DoHConnectionToBackend::release
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void release(bool removeFromCache) override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: shared_from_this
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:117,1
    - Dst: auto::use_count
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:118,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 119
      start: 115
    functionDepth: 0
    functionLinenumber: 115
    functionLinenumberEnd: 119
    functionName: DoHConnectionToBackend::getUsageCount
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc
    functionUses: 0
    functionsReached:
    - shared_from_this
    - auto::use_count
    linkageType: ''
    returnType: size_t
    signature: size_t getUsageCount() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:140,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 141
      start: 138
    functionDepth: 0
    functionLinenumber: 138
    functionLinenumberEnd: 141
    functionName: DoHConnectionToBackend::getConcurrentStreamsCount
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc
    functionUses: 2
    functionsReached:
    - size
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t DoHConnectionToBackend::getConcurrentStreamsCount() const
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: gettimeofday
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:148,1
    - Dst: d_query::d_idstate::queryRealTime::udiff
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:151,1
    - Dst: updateTCPLatency
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:152,1
    - Dst: d_buffer::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:153,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:155,1
    - Dst: d_buffer::data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:155,1
    - Dst: reportResponse
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:156,1
    - Dst: reportTimeoutOrError
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:159,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:163,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:164,1
    - Dst: shared_from_this
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:165,1
    - Dst: d_sender::handleResponse
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:167,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:167,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:170,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:170,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:170,1
    - Dst: DoHConnectionToBackend::getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:171,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:171,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 1
    argNames:
    - ' request'
    argTypes:
    - PendingRequest
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 173
      start: 143
    functionDepth: 1
    functionLinenumber: 143
    functionLinenumberEnd: 173
    functionName: DoHConnectionToBackend::handleResponse
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc
    functionUses: 0
    functionsReached:
    - memcpy
    - reportResponse
    - d_buffer::size
    - std::move
    - d_sender::handleResponse
    - DoHConnectionToBackend::getLogger
    - what
    - VERBOSESLOG
    - updateTCPLatency
    - infolog
    - reportTimeoutOrError
    - d_query::d_idstate::queryRealTime::udiff
    - d_buffer::data
    - gettimeofday
    - shared_from_this
    linkageType: ''
    returnType: void
    signature: void DoHConnectionToBackend::handleResponse(PendingRequest&& request)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: reportTimeoutOrError
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:179,1
    - Dst: PacketBuffer
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:182,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:182,1
    - Dst: d_sender::notifyIOError
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:183,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:183,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:186,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:186,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:186,1
    - Dst: DoHConnectionToBackend::getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:187,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:187,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - ' request'
    - ' now'
    argTypes:
    - PendingRequest
    - struct timeval
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 189
      start: 175
    functionDepth: 0
    functionLinenumber: 175
    functionLinenumberEnd: 189
    functionName: DoHConnectionToBackend::handleResponseError
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc
    functionUses: 0
    functionsReached:
    - d_sender::notifyIOError
    - std::move
    - DoHConnectionToBackend::getLogger
    - what
    - VERBOSESLOG
    - infolog
    - reportTimeoutOrError
    - PacketBuffer
    linkageType: ''
    returnType: void
    signature: void DoHConnectionToBackend::handleResponseError(PendingRequest&& request,
      const struct timeval& now)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nghttp2_session_terminate_session
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:194,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:194,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:199,1
    - Dst: dnsdist::rules::getResponseRuleChain
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:200,1
    - Dst: gettimeofday
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:202,1
    - Dst: handleTimeoutResponseRules
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:204,1
    - Dst: reportTimeoutOrError
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:205,1
    - Dst: DoHConnectionToBackend::handleResponseError
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:208,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:208,1
    - Dst: clear
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:212,1
    - Dst: DoHConnectionToBackend::stopIO
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:213,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 214
      start: 191
    functionDepth: 1
    functionLinenumber: 191
    functionLinenumberEnd: 214
    functionName: DoHConnectionToBackend::handleIOError
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc
    functionUses: 0
    functionsReached:
    - std::move
    - dnsdist::configuration::getCurrentRuntimeConfiguration
    - get
    - handleTimeoutResponseRules
    - reportTimeoutOrError
    - dnsdist::rules::getResponseRuleChain
    - gettimeofday
    - DoHConnectionToBackend::handleResponseError
    - clear
    - DoHConnectionToBackend::stopIO
    - nghttp2_session_terminate_session
    linkageType: ''
    returnType: void
    signature: void DoHConnectionToBackend::handleIOError()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: DoHConnectionToBackend::handleIOError
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:231,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 2
    argNames:
    - ' now'
    - write
    argTypes:
    - struct timeval
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 232
      start: 216
    functionDepth: 2
    functionLinenumber: 216
    functionLinenumberEnd: 232
    functionName: DoHConnectionToBackend::handleTimeout
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc
    functionUses: 0
    functionsReached:
    - DoHConnectionToBackend::handleIOError
    linkageType: ''
    returnType: void
    signature: void DoHConnectionToBackend::handleTimeout(const struct timeval& now,
      bool write)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<uint32_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:236,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 238
      start: 234
    functionDepth: 0
    functionLinenumber: 234
    functionLinenumberEnd: 238
    functionName: DoHConnectionToBackend::reachedMaxStreamID
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc
    functionUses: 0
    functionsReached:
    - static_cast<uint32_t>
    linkageType: ''
    returnType: bool
    signature: bool DoHConnectionToBackend::reachedMaxStreamID() const
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: nghttp2_session_get_remote_settings
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:242,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:242,1
    - Dst: DoHConnectionToBackend::getConcurrentStreamsCount
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:242,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:248,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 253
      start: 240
    functionDepth: 1
    functionLinenumber: 240
    functionLinenumberEnd: 253
    functionName: DoHConnectionToBackend::reachedMaxConcurrentQueries
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc
    functionUses: 0
    functionsReached:
    - nghttp2_session_get_remote_settings
    - DoHConnectionToBackend::getConcurrentStreamsCount
    - size
    - get
    linkageType: ''
    returnType: bool
    signature: bool DoHConnectionToBackend::reachedMaxConcurrentQueries() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DoHConnectionToBackend::getConcurrentStreamsCount
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:257,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 258
      start: 255
    functionDepth: 1
    functionLinenumber: 255
    functionLinenumberEnd: 258
    functionName: DoHConnectionToBackend::isIdle
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc
    functionUses: 0
    functionsReached:
    - DoHConnectionToBackend::getConcurrentStreamsCount
    linkageType: ''
    returnType: bool
    signature: bool DoHConnectionToBackend::isIdle() const
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:262,1
    - Dst: d_buffer::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:262,1
    - Dst: std::vector::reserve
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:272,1
    - Dst: NGHTTP2Headers::addStaticHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:275,1
    - Dst: NGHTTP2Headers::addStaticHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:276,1
    - Dst: NGHTTP2Headers::addDynamicHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:277,1
    - Dst: NGHTTP2Headers::addDynamicHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:278,1
    - Dst: NGHTTP2Headers::addStaticHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:279,1
    - Dst: NGHTTP2Headers::addStaticHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:280,1
    - Dst: NGHTTP2Headers::addStaticHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:281,1
    - Dst: NGHTTP2Headers::addDynamicHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:282,1
    - Dst: d_idstate::origRemote::getPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:284,1
    - Dst: d_idstate::origRemote::toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:285,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:286,1
    - Dst: d_idstate::origRemote::getPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:286,1
    - Dst: NGHTTP2Headers::addDynamicHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:287,1
    - Dst: NGHTTP2Headers::addDynamicHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:288,1
    - Dst: d_idstate::cs::isUDP
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:290,1
    - Dst: NGHTTP2Headers::addStaticHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:291,1
    - Dst: d_idstate::cs::isDoH
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:293,1
    - Dst: d_idstate::cs::hasTLS
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:294,1
    - Dst: NGHTTP2Headers::addStaticHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:295,1
    - Dst: NGHTTP2Headers::addStaticHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:298,1
    - Dst: d_idstate::cs::hasTLS
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:301,1
    - Dst: NGHTTP2Headers::addStaticHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:302,1
    - Dst: NGHTTP2Headers::addStaticHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:305,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:311,1
    - Dst: nghttp2_session_get_next_stream_id
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:316,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:316,1
    - Dst: static_cast<uint32_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:317,1
    - Dst: nghttp2_session_terminate_session
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:320,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:320,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:321,1
    - Dst: static_cast<StreamID>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:324,1
    - Dst: insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:325,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:325,1
    - Dst: nghttp2_session_terminate_session
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:329,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:329,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:330,1
    - Dst: static_cast<DoHConnectionToBackend*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:341,1
    - Dst: auto*::d_currentStreams::at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:342,1
    - Dst: d_query::d_buffer::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:344,1
    - Dst: d_query::d_buffer::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:345,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:347,1
    - Dst: d_query::d_buffer::at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:347,1
    - Dst: d_query::d_buffer::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:351,1
    - Dst: nghttp2_submit_request
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:357,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:357,1
    - Dst: std::vector::data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:357,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:357,1
    - Dst: erase
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:361,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:362,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:362,1
    - Dst: nghttp2_strerror
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:362,1
    - Dst: nghttp2_session_send
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:366,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:366,1
    - Dst: erase
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:370,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:371,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:371,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 74
    argCount: 2
    argNames:
    - ' sender'
    - ' query'
    argTypes:
    - std::shared_ptr<TCPQuerySender>
    - TCPQuery
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 376
      start: 260
    functionDepth: 1
    functionLinenumber: 260
    functionLinenumberEnd: 376
    functionName: DoHConnectionToBackend::queueQuery
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc
    functionUses: 0
    functionsReached:
    - std::to_string
    - static_cast<DoHConnectionToBackend*>
    - static_cast<uint32_t>
    - d_idstate::cs::hasTLS
    - insert
    - nghttp2_session_send
    - std::string
    - d_query::d_buffer::at
    - std::vector::data
    - erase
    - std::vector::size
    - d_query::d_buffer::size
    - d_idstate::origRemote::toString
    - nghttp2_session_get_next_stream_id
    - NGHTTP2Headers::addDynamicHeader
    - NGHTTP2Headers::addStaticHeader
    - d_buffer::size
    - static_cast<StreamID>
    - std::runtime_error
    - nghttp2_strerror
    - nghttp2_submit_request
    - get
    - std::vector::reserve
    - d_idstate::cs::isUDP
    - nghttp2_session_terminate_session
    - memcpy
    - std::move
    - auto*::d_currentStreams::at
    - d_idstate::origRemote::getPort
    - d_idstate::cs::isDoH
    linkageType: ''
    returnType: void
    signature: void DoHConnectionToBackend::queueQuery(std::shared_ptr<TCPQuerySender>&
      sender, TCPQuery&& query)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::unique_ptr<FDMultiplexer>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:382,1
    - Dst: FDMultiplexer::getMultiplexerSilent
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:382,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:383,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 1
    argNames:
    - ' receiver'
    argTypes:
    - pdns::channel::Receiver<CrossProtocolQuery>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 385
      start: 381
    functionDepth: 0
    functionLinenumber: 381
    functionLinenumberEnd: 385
    functionName: DoHClientThreadData::DoHClientThreadData
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc
    functionUses: 0
    functionsReached:
    - FDMultiplexer::getMultiplexerSilent
    - std::move
    - std::unique_ptr<FDMultiplexer>
    linkageType: ''
    returnType: void
    signature: void DoHClientThreadData(pdns::channel::Receiver<CrossProtocolQuery>&&
      receiver)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: boost::any_cast<std::shared_ptr<DoHConnectionToBackend>>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:393,1
    - Dst: auto::getHandle
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:394,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:395,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:395,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:395,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:395,1
    - Dst: auto::getHandle
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:395,1
    - Dst: auto::d_in::resize
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:405,1
    - Dst: auto::d_in::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:405,1
    - Dst: auto::d_handler::tryRead
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:407,1
    - Dst: auto::d_in::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:407,1
    - Dst: auto::d_in::resize
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:408,1
    - Dst: nghttp2_session_mem_recv
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:412,1
    - Dst: auto::d_session::get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:412,1
    - Dst: auto::d_in::data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:412,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:416,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:416,1
    - Dst: nghttp2_strerror
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:416,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:416,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:418,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:419,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:419,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:419,1
    - Dst: gettimeofday
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:425,1
    - Dst: nghttp2_session_send
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:428,1
    - Dst: auto::d_session::get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:428,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:430,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:430,1
    - Dst: nghttp2_strerror
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:430,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:430,1
    - Dst: auto::isIdle
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:435,1
    - Dst: auto::stopIO
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:436,1
    - Dst: auto::watchForRemoteHostClosingConnection
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:437,1
    - Dst: IOStateGuard::release
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:438,1
    - Dst: auto::updateIO
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:444,1
    - Dst: IOStateGuard::release
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:446,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:451,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:451,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:451,1
    - Dst: auto::getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:452,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:452,1
    - Dst: auto::handleIOError
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:454,1
    - Dst: auto::getConcurrentStreamsCount
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:457,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 46
    argCount: 2
    argNames:
    - fd
    - ' param'
    argTypes:
    - int
    - FDMultiplexer::funcparam_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 458
      start: 391
    functionDepth: 1
    functionLinenumber: 391
    functionLinenumberEnd: 458
    functionName: DoHConnectionToBackend::handleReadableIOCallback
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc
    functionUses: 0
    functionsReached:
    - auto::handleIOError
    - std::to_string
    - gettimeofday
    - nghttp2_session_send
    - std::string
    - static_cast<int>
    - auto::stopIO
    - static_cast<size_t>
    - auto::d_in::size
    - auto::getHandle
    - auto::getLogger
    - auto::updateIO
    - nghttp2_session_mem_recv
    - auto::isIdle
    - std::runtime_error
    - nghttp2_strerror
    - auto::watchForRemoteHostClosingConnection
    - boost::any_cast<std::shared_ptr<DoHConnectionToBackend>>
    - VERBOSESLOG
    - IOStateGuard::release
    - auto::getConcurrentStreamsCount
    - auto::d_in::data
    - auto::d_in::resize
    - auto::d_handler::tryRead
    - what
    - infolog
    - auto::d_session::get
    linkageType: ''
    returnType: void
    signature: void DoHConnectionToBackend::handleReadableIOCallback(int fd, FDMultiplexer::funcparam_t&
      param)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: boost::any_cast<std::shared_ptr<DoHConnectionToBackend>>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:462,1
    - Dst: auto::getHandle
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:463,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:464,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:464,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:464,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:464,1
    - Dst: auto::getHandle
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:464,1
    - Dst: auto::d_handler::tryWrite
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:469,1
    - Dst: auto::d_out::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:469,1
    - Dst: auto::updateIO
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:471,1
    - Dst: auto::d_out::clear
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:475,1
    - Dst: auto::stopIO
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:477,1
    - Dst: auto::isIdle
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:478,1
    - Dst: auto::updateIO
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:479,1
    - Dst: auto::watchForRemoteHostClosingConnection
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:482,1
    - Dst: IOStateGuard::release
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:485,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:488,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:488,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:488,1
    - Dst: auto::getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:489,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:489,1
    - Dst: auto::handleIOError
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:491,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 25
    argCount: 2
    argNames:
    - fd
    - ' param'
    argTypes:
    - int
    - FDMultiplexer::funcparam_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 493
      start: 460
    functionDepth: 1
    functionLinenumber: 460
    functionLinenumberEnd: 493
    functionName: DoHConnectionToBackend::handleWritableIOCallback
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc
    functionUses: 0
    functionsReached:
    - auto::stopIO
    - auto::handleIOError
    - std::to_string
    - auto::isIdle
    - std::runtime_error
    - auto::getHandle
    - auto::d_handler::tryWrite
    - auto::watchForRemoteHostClosingConnection
    - boost::any_cast<std::shared_ptr<DoHConnectionToBackend>>
    - VERBOSESLOG
    - infolog
    - auto::d_out::size
    - what
    - auto::updateIO
    - auto::d_out::clear
    - IOStateGuard::release
    - auto::getLogger
    - std::string
    linkageType: ''
    returnType: void
    signature: void DoHConnectionToBackend::handleWritableIOCallback(int fd, FDMultiplexer::funcparam_t&
      param)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: reset
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:497,1
    - Dst: DoHConnectionToBackend::isIdle
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:499,1
    - Dst: std::dynamic_pointer_cast<DoHConnectionToBackend>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:500,1
    - Dst: shared_from_this
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:500,1
    - Dst: willBeReusable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:501,1
    - Dst: removeDownstreamConnection
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:504,1
    - Dst: moveToIdle
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:507,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 510
      start: 495
    functionDepth: 2
    functionLinenumber: 495
    functionLinenumberEnd: 510
    functionName: DoHConnectionToBackend::stopIO
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc
    functionUses: 1
    functionsReached:
    - reset
    - DoHConnectionToBackend::isIdle
    - std::dynamic_pointer_cast<DoHConnectionToBackend>
    - moveToIdle
    - willBeReusable
    - shared_from_this
    - removeDownstreamConnection
    linkageType: ''
    returnType: void
    signature: void DoHConnectionToBackend::stopIO()
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: gettimeofday
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:517,1
    - Dst: getBackendHealthCheckTTD
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:521,1
    - Dst: getBackendReadTTD
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:524,1
    - Dst: isFresh
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:526,1
    - Dst: getBackendConnectTTD
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:528,1
    - Dst: getBackendWriteTTD
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:531,1
    - Dst: std::dynamic_pointer_cast<DoHConnectionToBackend>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:535,1
    - Dst: shared_from_this
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:535,1
    - Dst: update
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:538,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:538,1
    - Dst: update
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:541,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:541,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 23
    argCount: 3
    argNames:
    - newState
    - ' callback'
    - noTTD
    argTypes:
    - IOState
    - FDMultiplexer::callbackfunc_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 544
      start: 512
    functionDepth: 0
    functionLinenumber: 512
    functionLinenumberEnd: 544
    functionName: DoHConnectionToBackend::updateIO
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc
    functionUses: 0
    functionsReached:
    - std::move
    - getBackendConnectTTD
    - isFresh
    - getBackendHealthCheckTTD
    - getBackendWriteTTD
    - gettimeofday
    - std::dynamic_pointer_cast<DoHConnectionToBackend>
    - getBackendReadTTD
    - shared_from_this
    - update
    linkageType: ''
    returnType: void
    signature: void DoHConnectionToBackend::updateIO(IOState newState, const FDMultiplexer::callbackfunc_t&
      callback, bool noTTD)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: willBeReusable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:548,1
    - Dst: DoHConnectionToBackend::updateIO
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:549,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 551
      start: 546
    functionDepth: 1
    functionLinenumber: 546
    functionLinenumberEnd: 551
    functionName: DoHConnectionToBackend::watchForRemoteHostClosingConnection
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc
    functionUses: 0
    functionsReached:
    - willBeReusable
    - DoHConnectionToBackend::updateIO
    linkageType: ''
    returnType: void
    signature: void DoHConnectionToBackend::watchForRemoteHostClosingConnection()
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: reinterpret_cast<DoHConnectionToBackend*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:557,1
    - Dst: DoHConnectionToBackend*::d_out::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:558,1
    - Dst: DoHConnectionToBackend*::d_proxyProtocolPayload::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:559,1
    - Dst: DoHConnectionToBackend*::d_out::insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:560,1
    - Dst: DoHConnectionToBackend*::d_out::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:560,1
    - Dst: DoHConnectionToBackend*::d_proxyProtocolPayload::begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:560,1
    - Dst: DoHConnectionToBackend*::d_proxyProtocolPayload::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:560,1
    - Dst: DoHConnectionToBackend*::d_out::insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:564,1
    - Dst: DoHConnectionToBackend*::d_out::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:564,1
    - Dst: DoHConnectionToBackend*::d_handler::tryWrite
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:568,1
    - Dst: DoHConnectionToBackend*::d_out::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:568,1
    - Dst: DoHConnectionToBackend*::d_out::clear
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:571,1
    - Dst: DoHConnectionToBackend*::stopIO
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:573,1
    - Dst: DoHConnectionToBackend*::isIdle
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:574,1
    - Dst: DoHConnectionToBackend*::updateIO
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:575,1
    - Dst: DoHConnectionToBackend*::watchForRemoteHostClosingConnection
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:578,1
    - Dst: DoHConnectionToBackend*::updateIO
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:582,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:586,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:586,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:586,1
    - Dst: DoHConnectionToBackend*::getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:587,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:587,1
    - Dst: DoHConnectionToBackend*::handleIOError
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:588,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 30
    argCount: 5
    argNames:
    - session
    - data
    - length
    - flags
    - user_data
    argTypes:
    - nghttp2_session*
    - uint8_t*
    - size_t
    - int
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 594
      start: 553
    functionDepth: 1
    functionLinenumber: 553
    functionLinenumberEnd: 594
    functionName: DoHConnectionToBackend::send_callback
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc
    functionUses: 0
    functionsReached:
    - DoHConnectionToBackend*::d_proxyProtocolPayload::empty
    - DoHConnectionToBackend*::d_out::insert
    - DoHConnectionToBackend*::d_proxyProtocolPayload::begin
    - DoHConnectionToBackend*::d_handler::tryWrite
    - DoHConnectionToBackend*::d_out::clear
    - DoHConnectionToBackend*::updateIO
    - VERBOSESLOG
    - DoHConnectionToBackend*::d_out::empty
    - DoHConnectionToBackend*::d_out::end
    - DoHConnectionToBackend*::d_out::size
    - DoHConnectionToBackend*::stopIO
    - DoHConnectionToBackend*::d_proxyProtocolPayload::end
    - DoHConnectionToBackend*::getLogger
    - DoHConnectionToBackend*::handleIOError
    - what
    - infolog
    - reinterpret_cast<DoHConnectionToBackend*>
    - DoHConnectionToBackend*::isIdle
    - DoHConnectionToBackend*::watchForRemoteHostClosingConnection
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t DoHConnectionToBackend::send_callback(nghttp2_session* session,
      const uint8_t* data, size_t length, int flags, void* user_data)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: reinterpret_cast<DoHConnectionToBackend*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:599,1
    - Dst: DoHConnectionToBackend*::d_currentStreams::find
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:631,1
    - Dst: DoHConnectionToBackend*::d_currentStreams::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:632,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:636,1
    - Dst: DoHConnectionToBackend*::d_currentStreams::erase
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:637,1
    - Dst: DoHConnectionToBackend*::handleResponse
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:639,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:639,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:642,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:642,1
    - Dst: DoHConnectionToBackend*::getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:643,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:643,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:643,1
    - Dst: gettimeofday
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:647,1
    - Dst: DoHConnectionToBackend*::handleResponseError
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:649,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:649,1
    - Dst: DoHConnectionToBackend*::isIdle
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:652,1
    - Dst: DoHConnectionToBackend*::stopIO
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:653,1
    - Dst: DoHConnectionToBackend*::watchForRemoteHostClosingConnection
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:654,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:658,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:658,1
    - Dst: DoHConnectionToBackend*::getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:659,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:659,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 50
    argCount: 3
    argNames:
    - session
    - frame
    - user_data
    argTypes:
    - nghttp2_session*
    - nghttp2_frame*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 667
      start: 596
    functionDepth: 0
    functionLinenumber: 596
    functionLinenumberEnd: 667
    functionName: DoHConnectionToBackend::on_frame_recv_callback
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc
    functionUses: 0
    functionsReached:
    - std::move
    - DoHConnectionToBackend*::getLogger
    - DoHConnectionToBackend*::d_currentStreams::find
    - Logging::Loggable
    - DoHConnectionToBackend*::d_currentStreams::end
    - DoHConnectionToBackend*::handleResponseError
    - VERBOSESLOG
    - infolog
    - DoHConnectionToBackend*::stopIO
    - gettimeofday
    - reinterpret_cast<DoHConnectionToBackend*>
    - DoHConnectionToBackend*::isIdle
    - DoHConnectionToBackend*::d_currentStreams::erase
    - DoHConnectionToBackend*::handleResponse
    - DoHConnectionToBackend*::watchForRemoteHostClosingConnection
    linkageType: ''
    returnType: int
    signature: int DoHConnectionToBackend::on_frame_recv_callback(nghttp2_session*
      session, const nghttp2_frame* frame, void* user_data)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: reinterpret_cast<DoHConnectionToBackend*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:673,1
    - Dst: DoHConnectionToBackend*::d_currentStreams::find
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:674,1
    - Dst: DoHConnectionToBackend*::d_currentStreams::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:675,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:676,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:676,1
    - Dst: DoHConnectionToBackend*::getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:677,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:677,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:682,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:682,1
    - Dst: auto::second::d_buffer::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:682,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:683,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:683,1
    - Dst: auto::second::d_buffer::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:683,1
    - Dst: DoHConnectionToBackend*::getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:684,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:684,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:684,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:684,1
    - Dst: auto::second::d_buffer::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:684,1
    - Dst: auto::second::d_buffer::insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:690,1
    - Dst: auto::second::d_buffer::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:690,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:692,1
    - Dst: DoHConnectionToBackend*::d_currentStreams::erase
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:693,1
    - Dst: DoHConnectionToBackend*::handleResponse
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:695,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:695,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:698,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:698,1
    - Dst: DoHConnectionToBackend*::getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:699,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:699,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:699,1
    - Dst: gettimeofday
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:703,1
    - Dst: DoHConnectionToBackend*::handleResponseError
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:705,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:705,1
    - Dst: DoHConnectionToBackend*::isIdle
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:707,1
    - Dst: DoHConnectionToBackend*::stopIO
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:708,1
    - Dst: DoHConnectionToBackend*::watchForRemoteHostClosingConnection
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:709,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 31
    argCount: 6
    argNames:
    - session
    - flags
    - stream_id
    - data
    - len
    - user_data
    argTypes:
    - nghttp2_session*
    - uint8_t
    - StreamID
    - uint8_t*
    - size_t
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 714
      start: 669
    functionDepth: 1
    functionLinenumber: 669
    functionLinenumberEnd: 714
    functionName: DoHConnectionToBackend::on_data_chunk_recv_callback
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc
    functionUses: 0
    functionsReached:
    - DoHConnectionToBackend*::d_currentStreams::find
    - DoHConnectionToBackend*::d_currentStreams::end
    - gettimeofday
    - Logging::Loggable
    - DoHConnectionToBackend*::handleResponse
    - auto::second::d_buffer::size
    - pdns::max
    - VERBOSESLOG
    - auto::second::d_buffer::end
    - DoHConnectionToBackend*::stopIO
    - auto::second::d_buffer::insert
    - DoHConnectionToBackend*::getLogger
    - std::move
    - DoHConnectionToBackend*::handleResponseError
    - infolog
    - reinterpret_cast<DoHConnectionToBackend*>
    - DoHConnectionToBackend*::isIdle
    - DoHConnectionToBackend*::d_currentStreams::erase
    - DoHConnectionToBackend*::watchForRemoteHostClosingConnection
    linkageType: ''
    returnType: int
    signature: int DoHConnectionToBackend::on_data_chunk_recv_callback(nghttp2_session*
      session, uint8_t flags, StreamID stream_id, const uint8_t* data, size_t len,
      void* user_data)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: reinterpret_cast<DoHConnectionToBackend*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:720,1
    - Dst: auto*::d_currentStreams::find
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:729,1
    - Dst: auto*::d_currentStreams::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:730,1
    - Dst: gettimeofday
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:738,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:739,1
    - Dst: auto*::d_currentStreams::erase
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:740,1
    - Dst: getConnectionToDownstream
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:745,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:745,1
    - Dst: auto::queueQuery
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:746,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:746,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:750,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:750,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:750,1
    - Dst: auto*::getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:751,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:751,1
    - Dst: auto*::handleResponseError
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:752,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:752,1
    - Dst: auto*::handleResponseError
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:756,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:756,1
    - Dst: auto*::isIdle
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:759,1
    - Dst: auto*::stopIO
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:760,1
    - Dst: auto*::watchForRemoteHostClosingConnection
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:761,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 29
    argCount: 4
    argNames:
    - session
    - stream_id
    - error_code
    - user_data
    argTypes:
    - nghttp2_session*
    - StreamID
    - uint32_t
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 765
      start: 716
    functionDepth: 0
    functionLinenumber: 716
    functionLinenumberEnd: 765
    functionName: DoHConnectionToBackend::on_stream_close_callback
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc
    functionUses: 0
    functionsReached:
    - std::move
    - auto*::d_currentStreams::find
    - auto*::getLogger
    - what
    - auto::queueQuery
    - auto*::stopIO
    - VERBOSESLOG
    - auto*::d_currentStreams::end
    - infolog
    - auto*::watchForRemoteHostClosingConnection
    - auto*::isIdle
    - auto*::handleResponseError
    - gettimeofday
    - reinterpret_cast<DoHConnectionToBackend*>
    - std::string
    - auto*::d_currentStreams::erase
    - getConnectionToDownstream
    linkageType: ''
    returnType: int
    signature: int DoHConnectionToBackend::on_stream_close_callback(nghttp2_session*
      session, StreamID stream_id, uint32_t error_code, void* user_data)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: reinterpret_cast<DoHConnectionToBackend*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:771,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:775,1
    - Dst: memcmp
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:775,1
    - Dst: std::string::data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:775,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:775,1
    - Dst: DoHConnectionToBackend*::d_currentStreams::find
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:776,1
    - Dst: DoHConnectionToBackend*::d_currentStreams::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:777,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:778,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:778,1
    - Dst: DoHConnectionToBackend*::getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:779,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:779,1
    - Dst: pdns::checked_stoi_into
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:784,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:784,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:784,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:787,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:787,1
    - Dst: DoHConnectionToBackend*::getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:788,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:788,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 8
    argNames:
    - session
    - frame
    - name
    - namelen
    - value
    - valuelen
    - flags
    - user_data
    argTypes:
    - nghttp2_session*
    - nghttp2_frame*
    - uint8_t*
    - size_t
    - uint8_t*
    - size_t
    - uint8_t
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 796
      start: 767
    functionDepth: 0
    functionLinenumber: 767
    functionLinenumberEnd: 796
    functionName: DoHConnectionToBackend::on_header_callback
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc
    functionUses: 0
    functionsReached:
    - memcmp
    - DoHConnectionToBackend*::getLogger
    - DoHConnectionToBackend*::d_currentStreams::find
    - Logging::Loggable
    - pdns::checked_stoi_into
    - DoHConnectionToBackend*::d_currentStreams::end
    - VERBOSESLOG
    - std::string::data
    - infolog
    - reinterpret_cast<const char*>
    - reinterpret_cast<DoHConnectionToBackend*>
    - std::string
    - std::string::size
    linkageType: ''
    returnType: int
    signature: int DoHConnectionToBackend::on_header_callback(nghttp2_session* session,
      const nghttp2_frame* frame, const uint8_t* name, size_t namelen, const uint8_t*
      value, size_t valuelen, uint8_t flags, void* user_data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: reinterpret_cast<DoHConnectionToBackend*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:801,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:802,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:802,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:802,1
    - Dst: DoHConnectionToBackend*::getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:803,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:803,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:803,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 5
    argNames:
    - session
    - lib_error_code
    - msg
    - len
    - user_data
    argTypes:
    - nghttp2_session*
    - int
    - char*
    - size_t
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 809
      start: 798
    functionDepth: 0
    functionLinenumber: 798
    functionLinenumberEnd: 809
    functionName: DoHConnectionToBackend::on_error_callback
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc
    functionUses: 0
    functionsReached:
    - DoHConnectionToBackend*::getLogger
    - Logging::Loggable
    - VERBOSESLOG
    - infolog
    - reinterpret_cast<DoHConnectionToBackend*>
    - std::string
    linkageType: ''
    returnType: int
    signature: int DoHConnectionToBackend::on_error_callback(nghttp2_session* session,
      int lib_error_code, const char* msg, size_t len, void* user_data)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:812,1
    - Dst: make_unique<IOStateHandler>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:815,1
    - Dst: getDescriptor
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:815,1
    - Dst: nghttp2_session_callbacks_new
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:818,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:821,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:821,1
    - Dst: ConnectionToBackend::getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:822,1
    - Dst: nghttp2_session_callbacks_set_send_callback
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:828,1
    - Dst: std::unique_ptr::get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:828,1
    - Dst: nghttp2_session_callbacks_set_on_frame_recv_callback
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:829,1
    - Dst: std::unique_ptr::get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:829,1
    - Dst: nghttp2_session_callbacks_set_on_data_chunk_recv_callback
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:830,1
    - Dst: std::unique_ptr::get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:830,1
    - Dst: nghttp2_session_callbacks_set_on_stream_close_callback
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:831,1
    - Dst: std::unique_ptr::get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:831,1
    - Dst: nghttp2_session_callbacks_set_on_header_callback
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:832,1
    - Dst: std::unique_ptr::get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:832,1
    - Dst: nghttp2_session_callbacks_set_error_callback2
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:833,1
    - Dst: std::unique_ptr::get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:833,1
    - Dst: nghttp2_session_client_new
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:836,1
    - Dst: std::unique_ptr::get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:836,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:839,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:839,1
    - Dst: ConnectionToBackend::getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:840,1
    - Dst: std::unique_ptr<nghttp2_session, void (*)(nghttp2_session*)>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:844,1
    - Dst: std::unique_ptr::reset
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:847,1
    - Dst: nghttp2_submit_settings
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:860,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:860,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:864,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:864,1
    - Dst: nghttp2_strerror
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:864,1
    - Dst: ConnectionToBackend::getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:865,1
    - Dst: nghttp2_strerror
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:865,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 30
    argCount: 4
    argNames:
    - ' ds'
    - ' mplexer'
    - ' now'
    - ' proxyProtocolPayload'
    argTypes:
    - std::shared_ptr<DownstreamState>
    - std::unique_ptr<FDMultiplexer>
    - struct timeval
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 868
      start: 811
    functionDepth: 0
    functionLinenumber: 811
    functionLinenumberEnd: 868
    functionName: DoHConnectionToBackend::DoHConnectionToBackend
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc
    functionUses: 0
    functionsReached:
    - nghttp2_session_callbacks_new
    - nghttp2_session_callbacks_set_error_callback2
    - getDescriptor
    - nghttp2_session_callbacks_set_on_data_chunk_recv_callback
    - std::unique_ptr::get
    - nghttp2_session_callbacks_set_send_callback
    - nghttp2_session_callbacks_set_on_header_callback
    - make_unique<IOStateHandler>
    - nghttp2_strerror
    - ConnectionToBackend::getLogger
    - VERBOSESLOG
    - nghttp2_session_callbacks_set_on_frame_recv_callback
    - get
    - nghttp2_session_client_new
    - nghttp2_submit_settings
    - std::move
    - nghttp2_session_callbacks_set_on_stream_close_callback
    - infolog
    - std::unique_ptr<nghttp2_session, void (*)(nghttp2_session*)>
    - std::unique_ptr::reset
    linkageType: ''
    returnType: void
    signature: void DoHConnectionToBackend::DoHConnectionToBackend(const std::shared_ptr<DownstreamState>&
      ds, std::unique_ptr<FDMultiplexer>& mplexer, const struct timeval& now, std::string&&
      proxyProtocolPayload)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: boost::any_cast<DoHClientThreadData*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:873,1
    - Dst: auto::d_receiver::receive
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:877,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:881,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:884,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:884,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:884,1
    - Dst: gettimeofday
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:889,1
    - Dst: std::unique_ptr::getTCPQuerySender
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:891,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:892,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:893,1
    - Dst: std::unique_ptr::reset
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:894,1
    - Dst: getConnectionToDownstream
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:897,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:897,1
    - Dst: auto::queueQuery
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:898,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:898,1
    - Dst: std::shared_ptr::notifyIOError
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:902,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:902,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 2
    argNames:
    - pipefd
    - ' param'
    argTypes:
    - int
    - FDMultiplexer::funcparam_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 904
      start: 870
    functionDepth: 1
    functionLinenumber: 870
    functionLinenumberEnd: 904
    functionName: handleCrossProtocolQuery
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc
    functionUses: 0
    functionsReached:
    - std::shared_ptr::notifyIOError
    - std::move
    - std::runtime_error
    - what
    - auto::queueQuery
    - boost::any_cast<DoHClientThreadData*>
    - std::unique_ptr::getTCPQuerySender
    - gettimeofday
    - auto::d_receiver::receive
    - getConnectionToDownstream
    - std::string
    - std::unique_ptr::reset
    linkageType: ''
    returnType: void
    signature: void handleCrossProtocolQuery(int pipefd, FDMultiplexer::funcparam_t&
      param)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: setThreadName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:908,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:909,1
    - Dst: DoHClientThreadData::mplexer::addReadFD
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:913,1
    - Dst: DoHClientThreadData::d_receiver::getDescriptor
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:913,1
    - Dst: gettimeofday
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:918,1
    - Dst: DoHClientThreadData::mplexer::run
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:923,1
    - Dst: dnsdist::configuration::refreshLocalRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:927,1
    - Dst: cleanupClosedConnections
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:934,1
    - Dst: handleH2Timeouts
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:935,1
    - Dst: std::scoped_lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:940,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:945,1
    - Dst: DoHClientThreadData::mplexer::runForAllWatchedFDs
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:946,1
    - Dst: gettimeofday
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:948,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:950,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:953,1
    - Dst: type
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:956,1
    - Dst: typeid
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:956,1
    - Dst: boost::any_cast<std::shared_ptr<DoHConnectionToBackend>>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:957,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:958,1
    - Dst: auto::toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:958,1
    - Dst: type
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:960,1
    - Dst: typeid
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:960,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:961,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:964,1
    - Dst: getActiveCount
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:964,1
    - Dst: getIdleCount
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:964,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:969,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:969,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:969,1
    - Dst: auto::error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:970,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:970,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:976,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:976,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:976,1
    - Dst: auto::error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:977,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:977,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 45
    argCount: 1
    argNames:
    - ' receiver'
    argTypes:
    - pdns::channel::Receiver<CrossProtocolQuery>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 979
      start: 906
    functionDepth: 1
    functionLinenumber: 906
    functionLinenumberEnd: 979
    functionName: dohClientThread
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc
    functionUses: 0
    functionsReached:
    - errlog
    - cleanupClosedConnections
    - DoHClientThreadData::mplexer::runForAllWatchedFDs
    - gettimeofday
    - getActiveCount
    - SLOG
    - warnlog
    - handleH2Timeouts
    - auto::error
    - dnsdist::logging::getTopLogger
    - std::scoped_lock
    - DoHClientThreadData::d_receiver::getDescriptor
    - setThreadName
    - DoHClientThreadData::mplexer::addReadFD
    - type
    - boost::any_cast<std::shared_ptr<DoHConnectionToBackend>>
    - auto::toString
    - getIdleCount
    - typeid
    - what
    - infolog
    - dnsdist::configuration::refreshLocalRuntimeConfiguration
    - DoHClientThreadData::mplexer::run
    linkageType: ''
    returnType: void
    signature: void dohClientThread(pdns::channel::Receiver<CrossProtocolQuery>&&
      receiver)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 986
      start: 984
    functionDepth: 0
    functionLinenumber: 984
    functionLinenumberEnd: 986
    functionName: DoHWorkerThread
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void DoHWorkerThread()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:989,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 1
    argNames:
    - ' sender'
    argTypes:
    - pdns::channel::Sender<CrossProtocolQuery>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 991
      start: 988
    functionDepth: 0
    functionLinenumber: 988
    functionLinenumberEnd: 991
    functionName: DoHWorkerThread
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void DoHWorkerThread(pdns::channel::Sender<CrossProtocolQuery>&& sender)
      noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - DoHWorkerThread
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 993
      start: 993
    functionDepth: 0
    functionLinenumber: 993
    functionLinenumberEnd: 993
    functionName: DoHWorkerThread
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void DoHWorkerThread(DoHWorkerThread&& rhs) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - DoHWorkerThread
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 994
      start: 994
    functionDepth: 0
    functionLinenumber: 994
    functionLinenumberEnd: 994
    functionName: '& operator=(DoHWorkerThread&& rhs) noexcept'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: DoHWorkerThread
    signature: DoHWorkerThread & operator=(DoHWorkerThread&& rhs) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - DoHWorkerThread
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 995
      start: 995
    functionDepth: 0
    functionLinenumber: 995
    functionLinenumberEnd: 995
    functionName: DoHWorkerThread
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void DoHWorkerThread(const DoHWorkerThread& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 996
      start: 996
    functionDepth: 0
    functionLinenumber: 996
    functionLinenumberEnd: 996
    functionName: '& operator=(const DoHWorkerThread&)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: DoHWorkerThread
    signature: DoHWorkerThread & operator=(const DoHWorkerThread&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - numberOfThreads
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1004
      start: 1001
    functionDepth: 0
    functionLinenumber: 1001
    functionLinenumberEnd: 1004
    functionName: DoHClientCollection::DoHClientCollection
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void DoHClientCollection::DoHClientCollection(size_t numberOfThreads)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:1009,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:1013,1
    - Dst: send
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:1013,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:1013,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 1
    argNames:
    - ' cpq'
    argTypes:
    - std::unique_ptr<CrossProtocolQuery>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1019
      start: 1006
    functionDepth: 0
    functionLinenumber: 1006
    functionLinenumberEnd: 1019
    functionName: DoHClientCollection::passCrossProtocolQueryToThread
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc
    functionUses: 0
    functionsReached:
    - std::move
    - at
    - send
    - std::runtime_error
    linkageType: ''
    returnType: bool
    signature: bool DoHClientCollection::passCrossProtocolQueryToThread(std::unique_ptr<CrossProtocolQuery>&&
      cpq)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::configuration::getImmutableConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:1025,1
    - Dst: pdns::channel::createObjectQueue<CrossProtocolQuery>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:1026,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:1028,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:1028,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:1029,1
    - Dst: std::scoped_lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:1031,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:1032,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:1033,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:1033,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:1033,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:1034,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:1034,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:1034,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:1034,1
    - Dst: std::thread::detach
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:1041,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:1045,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:1045,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:1045,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:1046,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:1046,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:1050,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:1050,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:1054,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:1054,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:1054,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:1055,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:1055,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:1059,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1061
      start: 1021
    functionDepth: 1
    functionLinenumber: 1021
    functionLinenumberEnd: 1061
    functionName: DoHClientCollection::addThread
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc
    functionUses: 0
    functionsReached:
    - errlog
    - std::move
    - SLOG
    - pdns::channel::createObjectQueue<CrossProtocolQuery>
    - Logging::Loggable
    - std::runtime_error
    - what
    - VERBOSESLOG
    - infolog
    - size
    - std::thread::detach
    - dnsdist::logging::getTopLogger
    - dnsdist::configuration::getImmutableConfiguration
    - std::scoped_lock
    - at
    linkageType: ''
    returnType: void
    signature: void DoHClientCollection::addThread()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::configuration::getImmutableConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:1066,1
    - Dst: std::make_unique<DoHClientCollection>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:1074,1
    - Dst: addThread
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:1076,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1083
      start: 1063
    functionDepth: 1
    functionLinenumber: 1063
    functionLinenumberEnd: 1083
    functionName: initDoHWorkers
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc
    functionUses: 0
    functionsReached:
    - addThread
    - std::make_unique<DoHClientCollection>
    - dnsdist::configuration::getImmutableConfiguration
    linkageType: ''
    returnType: bool
    signature: bool initDoHWorkers()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: gettimeofday
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:1090,1
    - Dst: std::make_shared<DoHConnectionToBackend>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:1094,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:1094,1
    - Dst: auto::setHealthCheck
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:1095,1
    - Dst: auto::queueQuery
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:1096,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:1096,1
    - Dst: getConnectionToDownstream
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:1099,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:1099,1
    - Dst: auto::queueQuery
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:1100,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:1100,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 5
    argNames:
    - ' downstream'
    - ' mplexer'
    - ' sender'
    - ' query'
    - healthCheck
    argTypes:
    - std::shared_ptr<DownstreamState>
    - std::unique_ptr<FDMultiplexer>
    - std::shared_ptr<TCPQuerySender>
    - InternalQuery
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1107
      start: 1085
    functionDepth: 0
    functionLinenumber: 1085
    functionLinenumberEnd: 1107
    functionName: sendH2Query
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc
    functionUses: 0
    functionsReached:
    - std::move
    - auto::setHealthCheck
    - auto::queueQuery
    - std::make_shared<DoHConnectionToBackend>
    - gettimeofday
    - getConnectionToDownstream
    linkageType: ''
    returnType: bool
    signature: bool sendH2Query([[maybe_unused]] const std::shared_ptr<DownstreamState>&
      downstream, [[maybe_unused]] std::unique_ptr<FDMultiplexer>& mplexer, [[maybe_unused]]
      std::shared_ptr<TCPQuerySender>& sender, [[maybe_unused]] InternalQuery&& query,
      [[maybe_unused]] bool healthCheck)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: clear
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:1113,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1116
      start: 1109
    functionDepth: 1
    functionLinenumber: 1109
    functionLinenumberEnd: 1116
    functionName: clearH2Connections
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc
    functionUses: 0
    functionsReached:
    - clear
    linkageType: ''
    returnType: size_t
    signature: size_t clearH2Connections()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: getTimeouts
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:1122,1
    - Dst: second::type
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:1124,1
    - Dst: typeid
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:1124,1
    - Dst: boost::any_cast<std::shared_ptr<DoHConnectionToBackend>>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:1125,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:1126,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:1126,1
    - Dst: auto::getBackendName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:1126,1
    - Dst: auto::getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:1127,1
    - Dst: auto::handleTimeout
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:1128,1
    - Dst: getTimeouts
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:1133,1
    - Dst: second::type
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:1135,1
    - Dst: typeid
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:1135,1
    - Dst: boost::any_cast<std::shared_ptr<DoHConnectionToBackend>>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:1136,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:1137,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:1137,1
    - Dst: auto::getBackendName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:1137,1
    - Dst: auto::getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:1138,1
    - Dst: auto::handleTimeout
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:1139,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 2
    argNames:
    - ' mplexer'
    - ' now'
    argTypes:
    - FDMultiplexer
    - struct timeval
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1145
      start: 1118
    functionDepth: 1
    functionLinenumber: 1118
    functionLinenumberEnd: 1145
    functionName: handleH2Timeouts
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc
    functionUses: 1
    functionsReached:
    - auto::getBackendName
    - typeid
    - second::type
    - auto::getLogger
    - boost::any_cast<std::shared_ptr<DoHConnectionToBackend>>
    - getTimeouts
    - VERBOSESLOG
    - infolog
    - auto::handleTimeout
    linkageType: ''
    returnType: size_t
    signature: size_t handleH2Timeouts([[maybe_unused]] FDMultiplexer& mplexer, [[maybe_unused]]
      const struct timeval& now)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DownstreamConnectionsManager::setCleanupInterval
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:1150,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - max
    argTypes:
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1152
      start: 1147
    functionDepth: 1
    functionLinenumber: 1147
    functionLinenumberEnd: 1152
    functionName: setDoHDownstreamCleanupInterval
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc
    functionUses: 0
    functionsReached:
    - DownstreamConnectionsManager::setCleanupInterval
    linkageType: ''
    returnType: void
    signature: void setDoHDownstreamCleanupInterval([[maybe_unused]] uint16_t max)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DownstreamConnectionsManager::setMaxIdleTime
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:1157,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - max
    argTypes:
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1159
      start: 1154
    functionDepth: 1
    functionLinenumber: 1154
    functionLinenumberEnd: 1159
    functionName: setDoHDownstreamMaxIdleTime
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc
    functionUses: 0
    functionsReached:
    - DownstreamConnectionsManager::setMaxIdleTime
    linkageType: ''
    returnType: void
    signature: void setDoHDownstreamMaxIdleTime([[maybe_unused]] uint16_t max)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DownstreamConnectionsManager::setMaxIdleConnectionsPerDownstream
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc:1164,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - max
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1166
      start: 1161
    functionDepth: 1
    functionLinenumber: 1161
    functionLinenumberEnd: 1166
    functionName: setDoHDownstreamMaxIdleConnectionsPerBackend
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc
    functionUses: 0
    functionsReached:
    - DownstreamConnectionsManager::setMaxIdleConnectionsPerDownstream
    linkageType: ''
    returnType: void
    signature: void setDoHDownstreamMaxIdleConnectionsPerBackend([[maybe_unused]]
      size_t max)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: parsePacket
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnscrypt.cc:30,1
    - Dst: isValid
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnscrypt.cc:32,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnscrypt.cc:33,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnscrypt.cc:33,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnscrypt.cc:34,1
    - Dst: isEncrypted
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnscrypt.cc:38,1
    - Dst: getCertificateResponse
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnscrypt.cc:39,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnscrypt.cc:44,1
    - Dst: static_cast<uint16_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnscrypt.cc:44,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 5
    argNames:
    - ' packet'
    - ' query'
    - tcp
    - now
    - ' response'
    argTypes:
    - PacketBuffer
    - DNSCryptQuery
    - bool
    - time_t
    - PacketBuffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 28
    functionDepth: 1
    functionLinenumber: 28
    functionLinenumberEnd: 50
    functionName: handleDNSCryptQuery
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-dnscrypt.cc
    functionUses: 0
    functionsReached:
    - isEncrypted
    - isValid
    - getCertificateResponse
    - VERBOSESLOG
    - infolog
    - parsePacket
    - size
    - static_cast<uint16_t>
    - dnsdist::logging::getTopLogger
    linkageType: ''
    returnType: bool
    signature: bool handleDNSCryptQuery(PacketBuffer& packet, DNSCryptQuery& query,
      bool tcp, time_t now, PacketBuffer& response)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ConnectionToBackend::reconnect
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.hh:14,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' ds'
    - ' mplexer'
    - ' now'
    argTypes:
    - std::shared_ptr<DownstreamState>
    - std::unique_ptr<FDMultiplexer>
    - struct timeval
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15
      start: 11
    functionDepth: 1
    functionLinenumber: 11
    functionLinenumberEnd: 15
    functionName: ConnectionToBackend::ConnectionToBackend
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.hh
    functionUses: 0
    functionsReached:
    - ConnectionToBackend::reconnect
    linkageType: ''
    returnType: void
    signature: void ConnectionToBackend(const std::shared_ptr<DownstreamState>& ds,
      std::unique_ptr<FDMultiplexer>& mplexer, const struct timeval& now)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.hh:22,1
    - Dst: getDescriptor
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.hh:25,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 26
      start: 19
    functionDepth: 0
    functionLinenumber: 19
    functionLinenumberEnd: 26
    functionName: ConnectionToBackend::getHandle
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.hh
    functionUses: 0
    functionsReached:
    - getDescriptor
    - std::runtime_error
    linkageType: ''
    returnType: int
    signature: int getHandle() const
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ConnectionToBackend::isUsable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.hh:36,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 29
    functionDepth: 0
    functionLinenumber: 29
    functionLinenumberEnd: 42
    functionName: ConnectionToBackend::isUsable
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.hh
    functionUses: 1
    functionsReached:
    - ConnectionToBackend::isUsable
    linkageType: ''
    returnType: bool
    signature: bool isUsable()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 44
    functionDepth: 0
    functionLinenumber: 44
    functionLinenumberEnd: 47
    functionName: '& getDS() const'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::shared_ptr<DownstreamState>
    signature: std::shared_ptr<DownstreamState> & getDS() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 49
    functionDepth: 0
    functionLinenumber: 49
    functionLinenumberEnd: 52
    functionName: '& getRemote() const'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: ComboAddress
    signature: ComboAddress & getRemote() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.hh:56,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 54
    functionDepth: 0
    functionLinenumber: 54
    functionLinenumberEnd: 57
    functionName: '& getBackendName() const'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.hh
    functionUses: 0
    functionsReached:
    - getName
    linkageType: ''
    returnType: std::string
    signature: std::string & getBackendName() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 59
    functionDepth: 0
    functionLinenumber: 59
    functionLinenumberEnd: 62
    functionName: ConnectionToBackend::isFresh
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool isFresh() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 64
    functionDepth: 0
    functionLinenumber: 64
    functionLinenumberEnd: 67
    functionName: ConnectionToBackend::setReused
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setReused()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 69
    functionDepth: 0
    functionLinenumber: 69
    functionLinenumberEnd: 72
    functionName: ConnectionToBackend::disableFastOpen
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void disableFastOpen()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 74
    functionDepth: 0
    functionLinenumber: 74
    functionLinenumberEnd: 77
    functionName: ConnectionToBackend::isFastOpenEnabled
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool isFastOpenEnabled()
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: reachedMaxStreamID
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.hh:95,1
    - Dst: reachedMaxConcurrentQueries
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.hh:99,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 104
      start: 80
    functionDepth: 0
    functionLinenumber: 80
    functionLinenumberEnd: 104
    functionName: ConnectionToBackend::canBeReused
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.hh
    functionUses: 0
    functionsReached:
    - reachedMaxConcurrentQueries
    - reachedMaxStreamID
    linkageType: ''
    returnType: bool
    signature: bool canBeReused(bool sameClient = false) const
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: reachedMaxStreamID
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.hh:109,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 1
    argNames:
    - sameClient
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 118
      start: 107
    functionDepth: 0
    functionLinenumber: 107
    functionLinenumberEnd: 118
    functionName: ConnectionToBackend::willBeReusable
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.hh
    functionUses: 0
    functionsReached:
    - reachedMaxStreamID
    linkageType: ''
    returnType: bool
    signature: bool willBeReusable(bool sameClient) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 124
    functionDepth: 0
    functionLinenumber: 124
    functionLinenumberEnd: 126
    functionName: ConnectionToBackend::stopIO
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.hh
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void stopIO()
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - ' ds'
    argTypes:
    - std::shared_ptr<DownstreamState>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 134
      start: 128
    functionDepth: 0
    functionLinenumber: 128
    functionLinenumberEnd: 134
    functionName: ConnectionToBackend::matches
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool matches(const std::shared_ptr<DownstreamState>& ds) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 142
      start: 139
    functionDepth: 0
    functionLinenumber: 139
    functionLinenumberEnd: 142
    functionName: ConnectionToBackend::getLastDataReceivedTime
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct timeval
    signature: struct timeval getLastDataReceivedTime() const
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.hh:154,1
    - Dst: normalizeTV
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.hh:163,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - ' now'
    argTypes:
    - struct timeval
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 166
      start: 151
    functionDepth: 0
    functionLinenumber: 151
    functionLinenumberEnd: 166
    functionName: ConnectionToBackend::getBackendHealthCheckTTD
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.hh
    functionUses: 0
    functionsReached:
    - normalizeTV
    - std::runtime_error
    linkageType: ''
    returnType: std::optional<struct timeval>
    signature: std::optional<struct timeval> getBackendHealthCheckTTD(const struct
      timeval& now) const
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.hh:171,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - ' now'
    argTypes:
    - struct timeval
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 181
      start: 168
    functionDepth: 0
    functionLinenumber: 168
    functionLinenumberEnd: 181
    functionName: ConnectionToBackend::getBackendReadTTD
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.hh
    functionUses: 0
    functionsReached:
    - std::runtime_error
    linkageType: ''
    returnType: std::optional<struct timeval>
    signature: std::optional<struct timeval> getBackendReadTTD(const struct timeval&
      now) const
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.hh:186,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - ' now'
    argTypes:
    - struct timeval
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 196
      start: 183
    functionDepth: 0
    functionLinenumber: 183
    functionLinenumberEnd: 196
    functionName: ConnectionToBackend::getBackendWriteTTD
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.hh
    functionUses: 0
    functionsReached:
    - std::runtime_error
    linkageType: ''
    returnType: std::optional<struct timeval>
    signature: std::optional<struct timeval> getBackendWriteTTD(const struct timeval&
      now) const
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.hh:201,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - ' now'
    argTypes:
    - struct timeval
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 211
      start: 198
    functionDepth: 0
    functionLinenumber: 198
    functionLinenumberEnd: 211
    functionName: ConnectionToBackend::getBackendConnectTTD
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.hh
    functionUses: 0
    functionsReached:
    - std::runtime_error
    linkageType: ''
    returnType: std::optional<struct timeval>
    signature: std::optional<struct timeval> getBackendConnectTTD(const struct timeval&
      now) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - ' ds'
    - ' mplexer'
    - ' now'
    argTypes:
    - std::shared_ptr<DownstreamState>
    - std::unique_ptr<FDMultiplexer>
    - struct timeval
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 235
      start: 232
    functionDepth: 0
    functionLinenumber: 232
    functionLinenumberEnd: 235
    functionName: TCPConnectionToBackend::TCPConnectionToBackend
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void TCPConnectionToBackend(const std::shared_ptr<DownstreamState>&
      ds, std::unique_ptr<FDMultiplexer>& mplexer, const struct timeval& now, std::string&&
      /* proxyProtocolPayload*, unused but there to match the HTTP2 connections, so
      we can use the same templated connections manager class */)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.hh:241,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.hh:241,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 242
      start: 239
    functionDepth: 0
    functionLinenumber: 239
    functionLinenumberEnd: 242
    functionName: TCPConnectionToBackend::isIdle
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.hh
    functionUses: 0
    functionsReached:
    - size
    linkageType: ''
    returnType: bool
    signature: bool isIdle() const override
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.hh:248,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.hh:248,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 253
      start: 246
    functionDepth: 0
    functionLinenumber: 246
    functionLinenumberEnd: 253
    functionName: TCPConnectionToBackend::reachedMaxConcurrentQueries
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.hh
    functionUses: 0
    functionsReached:
    - size
    linkageType: ''
    returnType: bool
    signature: bool reachedMaxConcurrentQueries() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.hh:263,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.hh:263,1
    - Dst: getDescriptor
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.hh:263,1
    - Dst: getState
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.hh:263,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.hh:263,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.hh:263,1
    - Dst: ostringstream::str
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.hh:264,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 265
      start: 260
    functionDepth: 0
    functionLinenumber: 260
    functionLinenumberEnd: 265
    functionName: TCPConnectionToBackend::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.hh
    functionUses: 0
    functionsReached:
    - std::to_string
    - getName
    - getState
    - size
    - ostringstream::str
    - getDescriptor
    linkageType: ''
    returnType: std::string
    signature: std::string toString() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 300
      start: 297
    functionDepth: 0
    functionLinenumber: 297
    functionLinenumberEnd: 300
    functionName: TCPConnectionToBackend::needProxyProtocolPayload
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool needProxyProtocolPayload() const
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnscrypt.cc:33,1
    - Dst: getProviderName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnscrypt.cc:33,1
    - Dst: registerFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnscrypt.cc:34,1
    - Dst: registerFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnscrypt.cc:35,1
    - Dst: registerFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnscrypt.cc:36,1
    - Dst: registerFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnscrypt.cc:37,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnscrypt.cc:40,1
    - Dst: loadNewCertificate
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnscrypt.cc:43,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnscrypt.cc:47,1
    - Dst: addNewCertificate
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnscrypt.cc:50,1
    - Dst: LuaArray<std::shared_ptr<DNSCryptCertificatePair>>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnscrypt.cc:52,1
    - Dst: getCertificates
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnscrypt.cc:57,1
    - Dst: LuaArray::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnscrypt.cc:58,1
    - Dst: std::optional<std::shared_ptr<DNSCryptCertificatePair>>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnscrypt.cc:65,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnscrypt.cc:67,1
    - Dst: getCertificates
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnscrypt.cc:71,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnscrypt.cc:72,1
    - Dst: auto::at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnscrypt.cc:73,1
    - Dst: registerFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnscrypt.cc:79,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnscrypt.cc:81,1
    - Dst: getCertificates
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnscrypt.cc:84,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnscrypt.cc:85,1
    - Dst: auto::at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnscrypt.cc:86,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnscrypt.cc:89,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnscrypt.cc:89,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnscrypt.cc:92,1
    - Dst: getCertificates
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnscrypt.cc:100,1
    - Dst: DNSCryptContext::getExchangeVersion
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnscrypt.cc:102,1
    - Dst: getSerial
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnscrypt.cc:104,1
    - Dst: DNSCryptContext::certificateDateToStr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnscrypt.cc:104,1
    - Dst: getTSStart
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnscrypt.cc:104,1
    - Dst: DNSCryptContext::certificateDateToStr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnscrypt.cc:104,1
    - Dst: getTSEnd
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnscrypt.cc:104,1
    - Dst: ostringstream::str
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnscrypt.cc:108,1
    - Dst: DNSCryptPrivateKey::DNSCryptPrivateKey
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnscrypt.cc:112,1
    - Dst: generateDNSCryptCertificate
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnscrypt.cc:116,1
    - Dst: addNewCertificate
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnscrypt.cc:117,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnscrypt.cc:121,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnscrypt.cc:121,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnscrypt.cc:121,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnscrypt.cc:122,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnscrypt.cc:122,1
    - Dst: string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnscrypt.cc:123,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnscrypt.cc:123,1
    - Dst: registerFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnscrypt.cc:130,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnscrypt.cc:132,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnscrypt.cc:138,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnscrypt.cc:144,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnscrypt.cc:146,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnscrypt.cc:146,1
    - Dst: DNSCryptCert::magic::data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnscrypt.cc:146,1
    - Dst: DNSCryptCert::magic::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnscrypt.cc:146,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnscrypt.cc:148,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnscrypt.cc:150,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnscrypt.cc:150,1
    - Dst: DNSCryptCert::esVersion::data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnscrypt.cc:150,1
    - Dst: DNSCryptCert::esVersion::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnscrypt.cc:150,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnscrypt.cc:152,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnscrypt.cc:154,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnscrypt.cc:154,1
    - Dst: DNSCryptCert::protocolMinorVersion::data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnscrypt.cc:154,1
    - Dst: DNSCryptCert::protocolMinorVersion::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnscrypt.cc:154,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnscrypt.cc:156,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnscrypt.cc:158,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnscrypt.cc:158,1
    - Dst: DNSCryptCert::signature::data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnscrypt.cc:158,1
    - Dst: DNSCryptCert::signature::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnscrypt.cc:158,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnscrypt.cc:160,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnscrypt.cc:162,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnscrypt.cc:162,1
    - Dst: DNSCryptCert::signedData::resolverPK::data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnscrypt.cc:162,1
    - Dst: DNSCryptCert::signedData::resolverPK::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnscrypt.cc:162,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnscrypt.cc:164,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnscrypt.cc:166,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnscrypt.cc:166,1
    - Dst: DNSCryptCert::signedData::clientMagic::data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnscrypt.cc:166,1
    - Dst: DNSCryptCert::signedData::clientMagic::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnscrypt.cc:166,1
    - Dst: DNSCryptCert::getSerial
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnscrypt.cc:168,1
    - Dst: ntohl
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnscrypt.cc:169,1
    - Dst: DNSCryptCert::getTSStart
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnscrypt.cc:169,1
    - Dst: ntohl
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnscrypt.cc:170,1
    - Dst: DNSCryptCert::getTSEnd
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnscrypt.cc:170,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnscrypt.cc:172,1
    - Dst: setLuaNoSideEffect
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnscrypt.cc:173,1
    - Dst: DNSCryptPrivateKey::DNSCryptPrivateKey
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnscrypt.cc:177,1
    - Dst: generateDNSCryptCertificate
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnscrypt.cc:181,1
    - Dst: DNSCryptPrivateKey::saveToFile
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnscrypt.cc:182,1
    - Dst: DNSCryptContext::saveCertFromFile
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnscrypt.cc:183,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnscrypt.cc:187,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnscrypt.cc:187,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnscrypt.cc:187,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnscrypt.cc:188,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnscrypt.cc:188,1
    - Dst: string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnscrypt.cc:189,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnscrypt.cc:189,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnscrypt.cc:193,1
    - Dst: setLuaNoSideEffect
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnscrypt.cc:194,1
    - Dst: sodium_mlock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnscrypt.cc:200,1
    - Dst: DNSCryptCertSignedData::ResolverPrivateKeyType::data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnscrypt.cc:200,1
    - Dst: DNSCryptCertSignedData::ResolverPrivateKeyType::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnscrypt.cc:200,1
    - Dst: DNSCryptContext::generateProviderKeys
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnscrypt.cc:203,1
    - Dst: ofstream::write
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnscrypt.cc:207,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnscrypt.cc:207,1
    - Dst: DNSCryptCertSignedData::ResolverPublicKeyType::data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnscrypt.cc:207,1
    - Dst: DNSCryptCertSignedData::ResolverPublicKeyType::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnscrypt.cc:207,1
    - Dst: ofstream::close
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnscrypt.cc:208,1
    - Dst: ofstream::write
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnscrypt.cc:212,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnscrypt.cc:212,1
    - Dst: DNSCryptCertSignedData::ResolverPrivateKeyType::data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnscrypt.cc:212,1
    - Dst: DNSCryptCertSignedData::ResolverPrivateKeyType::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnscrypt.cc:212,1
    - Dst: ofstream::close
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnscrypt.cc:213,1
    - Dst: DNSCryptContext::getProviderFingerprint
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnscrypt.cc:215,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnscrypt.cc:218,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnscrypt.cc:218,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnscrypt.cc:218,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnscrypt.cc:219,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnscrypt.cc:219,1
    - Dst: string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnscrypt.cc:220,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnscrypt.cc:220,1
    - Dst: sodium_memzero
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnscrypt.cc:223,1
    - Dst: DNSCryptCertSignedData::ResolverPrivateKeyType::data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnscrypt.cc:223,1
    - Dst: DNSCryptCertSignedData::ResolverPrivateKeyType::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnscrypt.cc:223,1
    - Dst: sodium_munlock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnscrypt.cc:224,1
    - Dst: DNSCryptCertSignedData::ResolverPrivateKeyType::data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnscrypt.cc:224,1
    - Dst: DNSCryptCertSignedData::ResolverPrivateKeyType::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnscrypt.cc:224,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnscrypt.cc:227,1
    - Dst: setLuaNoSideEffect
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnscrypt.cc:228,1
    - Dst: ifstream::read
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnscrypt.cc:234,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnscrypt.cc:234,1
    - Dst: DNSCryptCertSignedData::ResolverPublicKeyType::data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnscrypt.cc:234,1
    - Dst: DNSCryptCertSignedData::ResolverPublicKeyType::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnscrypt.cc:234,1
    - Dst: ifstream::fail
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnscrypt.cc:236,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnscrypt.cc:237,1
    - Dst: ifstream::close
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnscrypt.cc:240,1
    - Dst: DNSCryptContext::getProviderFingerprint
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnscrypt.cc:241,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnscrypt.cc:244,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnscrypt.cc:244,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnscrypt.cc:244,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnscrypt.cc:245,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnscrypt.cc:245,1
    - Dst: string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnscrypt.cc:246,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnscrypt.cc:246,1
    CyclomaticComplexity: 29
    EdgeCount: 29
    ICount: 153
    argCount: 2
    argNames:
    - ' luaCtx'
    - client
    argTypes:
    - LuaContext
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 250
      start: 29
    functionDepth: 1
    functionLinenumber: 29
    functionLinenumberEnd: 250
    functionName: setupLuaBindingsDNSCrypt
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnscrypt.cc
    functionUses: 0
    functionsReached:
    - errlog
    - reinterpret_cast<char*>
    - std::to_string
    - DNSCryptCert::getTSStart
    - DNSCryptCert::signature::size
    - ofstream::close
    - DNSCryptCert::esVersion::size
    - LuaArray<std::shared_ptr<DNSCryptCertificatePair>>
    - std::string
    - DNSCryptCert::signedData::resolverPK::size
    - DNSCryptContext::getProviderFingerprint
    - sodium_memzero
    - auto::size
    - DNSCryptPrivateKey::saveToFile
    - sodium_munlock
    - getTSStart
    - SLOG
    - DNSCryptCertSignedData::ResolverPublicKeyType::data
    - generateDNSCryptCertificate
    - loadNewCertificate
    - string
    - DNSCryptCertSignedData::ResolverPrivateKeyType::size
    - ifstream::fail
    - DNSCryptCert::signature::data
    - DNSCryptPrivateKey::DNSCryptPrivateKey
    - getProviderName
    - DNSCryptContext::getExchangeVersion
    - dnsdist::logging::getTopLogger
    - DNSCryptCert::signedData::resolverPK::data
    - writeFunction
    - DNSCryptCertSignedData::ResolverPrivateKeyType::data
    - DNSCryptCertSignedData::ResolverPublicKeyType::size
    - getCertificates
    - std::runtime_error
    - registerFunction
    - setLuaNoSideEffect
    - addNewCertificate
    - sodium_mlock
    - DNSCryptCert::esVersion::data
    - ostringstream::str
    - reinterpret_cast<const char*>
    - ofstream::write
    - DNSCryptCert::signedData::clientMagic::size
    - ifstream::close
    - DNSCryptContext::certificateDateToStr
    - DNSCryptCert::signedData::clientMagic::data
    - DNSCryptCert::getTSEnd
    - ntohl
    - ifstream::read
    - std::optional<std::shared_ptr<DNSCryptCertificatePair>>
    - DNSCryptCert::getSerial
    - DNSCryptCert::protocolMinorVersion::size
    - DNSCryptContext::generateProviderKeys
    - what
    - DNSCryptCert::protocolMinorVersion::data
    - getSerial
    - DNSCryptCert::magic::data
    - DNSCryptContext::saveCertFromFile
    - LuaArray::emplace_back
    - auto::at
    - DNSCryptCert::magic::size
    - getTSEnd
    linkageType: ''
    returnType: void
    signature: void setupLuaBindingsDNSCrypt([[maybe_unused]] LuaContext& luaCtx,
      [[maybe_unused]] bool client)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ERCode::to_s
      Src: /src/pdns/pdns/dnsdistdist/dns.cc:92,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - rcode
    argTypes:
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 88
    functionDepth: 0
    functionLinenumber: 88
    functionLinenumberEnd: 93
    functionName: RCode::to_s
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dns.cc
    functionUses: 21
    functionsReached:
    - ERCode::to_s
    linkageType: ''
    returnType: std::string
    signature: std::string RCode::to_s(uint8_t rcode)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ERCode::to_short_s
      Src: /src/pdns/pdns/dnsdistdist/dns.cc:99,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - rcode
    argTypes:
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 95
    functionDepth: 0
    functionLinenumber: 95
    functionLinenumberEnd: 100
    functionName: RCode::to_short_s
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dns.cc
    functionUses: 4
    functionsReached:
    - ERCode::to_short_s
    linkageType: ''
    returnType: std::string
    signature: std::string RCode::to_short_s(uint8_t rcode)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: std::find
      Src: /src/pdns/pdns/dnsdistdist/dns.cc:104,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/dns.cc:104,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/dns.cc:104,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/dns.cc:105,1
    - Dst: std::distance
      Src: /src/pdns/pdns/dnsdistdist/dns.cc:108,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/dns.cc:108,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - ' rcode_string'
    argTypes:
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 113
      start: 102
    functionDepth: 1
    functionLinenumber: 102
    functionLinenumberEnd: 113
    functionName: RCode::from_short
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dns.cc
    functionUses: 2
    functionsReached:
    - end
    - std::distance
    - std::find
    - begin
    linkageType: ''
    returnType: std::optional<uint8_t>
    signature: std::optional<uint8_t> RCode::from_short(const std::string_view& rcode_string)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dns.cc:116,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dns.cc:117,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dns.cc:117,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dns.cc:119,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - rcode
    argTypes:
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 115
    functionDepth: 0
    functionLinenumber: 115
    functionLinenumberEnd: 120
    functionName: ERCode::to_s
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dns.cc
    functionUses: 4
    functionsReached:
    - std::string
    - at
    - std::to_string
    - size
    linkageType: ''
    returnType: std::string
    signature: std::string ERCode::to_s(uint16_t rcode)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dns.cc:123,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dns.cc:124,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dns.cc:126,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - rcode
    argTypes:
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 127
      start: 122
    functionDepth: 0
    functionLinenumber: 122
    functionLinenumberEnd: 127
    functionName: ERCode::to_short_s
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dns.cc
    functionUses: 3
    functionsReached:
    - at
    - std::to_string
    - size
    linkageType: ''
    returnType: std::string
    signature: std::string ERCode::to_short_s(uint16_t rcode)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::find
      Src: /src/pdns/pdns/dnsdistdist/dns.cc:131,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/dns.cc:131,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/dns.cc:131,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/dns.cc:132,1
    - Dst: std::distance
      Src: /src/pdns/pdns/dnsdistdist/dns.cc:135,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/dns.cc:135,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ' ercode_string'
    argTypes:
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 136
      start: 129
    functionDepth: 1
    functionLinenumber: 129
    functionLinenumberEnd: 136
    functionName: ERCode::from_short
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dns.cc
    functionUses: 1
    functionsReached:
    - end
    - std::distance
    - std::find
    - begin
    linkageType: ''
    returnType: std::optional<uint16_t>
    signature: std::optional<uint16_t> ERCode::from_short(const std::string_view&
      ercode_string)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::array::size
      Src: /src/pdns/pdns/dnsdistdist/dns.cc:141,1
    - Dst: std::array::at
      Src: /src/pdns/pdns/dnsdistdist/dns.cc:141,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dns.cc:142,1
    - Dst: std::array::at
      Src: /src/pdns/pdns/dnsdistdist/dns.cc:145,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - opcode
    argTypes:
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 146
      start: 138
    functionDepth: 0
    functionLinenumber: 138
    functionLinenumberEnd: 146
    functionName: Opcode::to_s
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dns.cc
    functionUses: 4
    functionsReached:
    - std::array::at
    - std::to_string
    - std::array::size
    linkageType: ''
    returnType: std::string
    signature: std::string Opcode::to_s(uint8_t opcode)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::find
      Src: /src/pdns/pdns/dnsdistdist/dns.cc:151,1
    - Dst: std::array::begin
      Src: /src/pdns/pdns/dnsdistdist/dns.cc:151,1
    - Dst: std::array::end
      Src: /src/pdns/pdns/dnsdistdist/dns.cc:151,1
    - Dst: std::array::end
      Src: /src/pdns/pdns/dnsdistdist/dns.cc:152,1
    - Dst: auto*::empty
      Src: /src/pdns/pdns/dnsdistdist/dns.cc:152,1
    - Dst: std::distance
      Src: /src/pdns/pdns/dnsdistdist/dns.cc:155,1
    - Dst: std::array::begin
      Src: /src/pdns/pdns/dnsdistdist/dns.cc:155,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - ' opcode_string'
    argTypes:
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 156
      start: 148
    functionDepth: 1
    functionLinenumber: 148
    functionLinenumberEnd: 156
    functionName: Opcode::from_lowercase_string
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dns.cc
    functionUses: 1
    functionsReached:
    - std::distance
    - std::array::end
    - std::find
    - auto*::empty
    - std::array::begin
    linkageType: ''
    returnType: std::optional<uint8_t>
    signature: std::optional<uint8_t> Opcode::from_lowercase_string(const std::string_view&
      opcode_string)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pdns::views::UnsignedCharView::length
      Src: /src/pdns/pdns/dnsdistdist/dns.cc:169,1
    - Dst: burtleCI
      Src: /src/pdns/pdns/dnsdistdist/dns.cc:174,1
    - Dst: pdns::views::UnsignedCharView::data
      Src: /src/pdns/pdns/dnsdistdist/dns.cc:174,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 4
    argNames:
    - packet
    - packet_len
    - init
    - ' wasOK'
    argTypes:
    - uint8_t*
    - uint16_t
    - uint32_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 181
      start: 159
    functionDepth: 0
    functionLinenumber: 159
    functionLinenumberEnd: 181
    functionName: hashQuestion
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dns.cc
    functionUses: 1
    functionsReached:
    - pdns::views::UnsignedCharView::length
    - burtleCI
    - pdns::views::UnsignedCharView::data
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t hashQuestion(const uint8_t* packet, uint16_t packet_len, uint32_t
      init, bool& wasOK)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dns.cc:192,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dns.cc:195,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - place
    argTypes:
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 196
      start: 190
    functionDepth: 0
    functionLinenumber: 190
    functionLinenumberEnd: 196
    functionName: DNSResourceRecord::placeString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dns.cc
    functionUses: 1
    functionsReached:
    - at
    - size
    linkageType: ''
    returnType: std::string
    signature: std::string DNSResourceRecord::placeString(uint8_t place)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: setThreadName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-resolver.cc:32,1
    - Dst: getaddrinfo
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-resolver.cc:39,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-resolver.cc:39,1
    - Dst: callback
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-resolver.cc:41,1
    - Dst: std::unique_ptr<addrinfo, decltype(&freeaddrinfo)>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-resolver.cc:44,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-resolver.cc:45,1
    - Dst: std::vector::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-resolver.cc:47,1
    - Dst: callback
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-resolver.cc:52,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 2
    argNames:
    - ' hostname'
    - ' callback'
    argTypes:
    - std::string
    - std::function<void(const std::string& hostname, std::vector<ComboAddress>& ips)>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 30
    functionDepth: 0
    functionLinenumber: 30
    functionLinenumberEnd: 53
    functionName: dnsdist::resolver::asynchronousResolver
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-resolver.cc
    functionUses: 0
    functionsReached:
    - callback
    - auto::get
    - std::unique_ptr<addrinfo, decltype(&freeaddrinfo)>
    - std::vector::emplace_back
    - c_str
    - getaddrinfo
    - setThreadName
    linkageType: ''
    returnType: void
    signature: void asynchronousResolver(const std::string& hostname, const std::function<void(const
      std::string& hostname, std::vector<ComboAddress>& ips)>& callback)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: setThreadName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-resolver.cc:32,1
    - Dst: getaddrinfo
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-resolver.cc:39,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-resolver.cc:39,1
    - Dst: callback
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-resolver.cc:41,1
    - Dst: std::unique_ptr<addrinfo, decltype(&freeaddrinfo)>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-resolver.cc:44,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-resolver.cc:45,1
    - Dst: std::vector::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-resolver.cc:47,1
    - Dst: callback
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-resolver.cc:52,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 2
    argNames:
    - ' hostname'
    - ' callback'
    argTypes:
    - std::string
    - std::function<void(const std::string& hostname, std::vector<ComboAddress>& ips)>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 30
    functionDepth: 0
    functionLinenumber: 30
    functionLinenumberEnd: 53
    functionName: dnsdist::resolver::asynchronousResolver
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-resolver.cc
    functionUses: 0
    functionsReached:
    - callback
    - auto::get
    - std::unique_ptr<addrinfo, decltype(&freeaddrinfo)>
    - std::vector::emplace_back
    - c_str
    - getaddrinfo
    - setThreadName
    linkageType: ''
    returnType: void
    signature: void asynchronousResolver(const std::string& hostname, const std::function<void(const
      std::string& hostname, std::vector<ComboAddress>& ips)>& callback)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 75
    functionDepth: 0
    functionLinenumber: 75
    functionLinenumberEnd: 75
    functionName: XskSocket::XskUmem
    functionSourceFile: /src/pdns/pdns/dnsdistdist/xsk.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void XskUmem()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 130
      start: 127
    functionDepth: 0
    functionLinenumber: 127
    functionLinenumberEnd: 130
    functionName: XskSocket::getFrameSize
    functionSourceFile: /src/pdns/pdns/dnsdistdist/xsk.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: size_t getFrameSize()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/xsk.hh:149,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - desc
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 150
      start: 147
    functionDepth: 0
    functionLinenumber: 147
    functionLinenumberEnd: 150
    functionName: '& getWorkerByDescriptor(int desc) const'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/xsk.hh
    functionUses: 0
    functionsReached:
    - at
    linkageType: ''
    returnType: std::shared_ptr<XskWorker>
    signature: std::shared_ptr<XskWorker> & getWorkerByDescriptor(int desc) const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/xsk.hh:153,1
    - Dst: auto::find
      Src: /src/pdns/pdns/dnsdistdist/xsk.hh:154,1
    - Dst: auto::end
      Src: /src/pdns/pdns/dnsdistdist/xsk.hh:155,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ' destination'
    argTypes:
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 159
      start: 151
    functionDepth: 0
    functionLinenumber: 151
    functionLinenumberEnd: 159
    functionName: XskSocket::getWorkerByDestination
    functionSourceFile: /src/pdns/pdns/dnsdistdist/xsk.hh
    functionUses: 0
    functionsReached:
    - auto::end
    - auto::find
    - lock
    linkageType: ''
    returnType: std::shared_ptr<XskWorker>
    signature: std::shared_ptr<XskWorker> getWorkerByDestination(const ComboAddress&
      destination)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 163
      start: 160
    functionDepth: 0
    functionLinenumber: 160
    functionLinenumberEnd: 163
    functionName: '& getDescriptors() const'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/xsk.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::vector<pollfd>
    signature: std::vector<pollfd> & getDescriptors() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 167
      start: 164
    functionDepth: 0
    functionLinenumber: 164
    functionLinenumberEnd: 167
    functionName: XskSocket::getSourceMACAddress
    functionSourceFile: /src/pdns/pdns/dnsdistdist/xsk.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: MACAddr
    signature: MACAddr getSourceMACAddress() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 171
      start: 168
    functionDepth: 0
    functionLinenumber: 168
    functionLinenumberEnd: 171
    functionName: '& getInterfaceName() const'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/xsk.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string & getInterfaceName() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: push
      Src: /src/pdns/pdns/dnsdistdist/xsk.hh:181,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' packet'
    argTypes:
    - XskPacket
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 182
      start: 179
    functionDepth: 0
    functionLinenumber: 179
    functionLinenumberEnd: 182
    functionName: XskSocket::pushDelayed
    functionSourceFile: /src/pdns/pdns/dnsdistdist/xsk.hh
    functionUses: 0
    functionsReached:
    - push
    linkageType: ''
    returnType: void
    signature: void pushDelayed(XskPacket& packet)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 276
      start: 273
    functionDepth: 0
    functionLinenumber: 273
    functionLinenumberEnd: 276
    functionName: XskPacket::getSendTime
    functionSourceFile: /src/pdns/pdns/dnsdistdist/xsk.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: timespec
    signature: timespec getSendTime() const noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - base
    argTypes:
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 280
      start: 277
    functionDepth: 0
    functionLinenumber: 277
    functionLinenumberEnd: 280
    functionName: XskPacket::getFrameOffsetFrom
    functionSourceFile: /src/pdns/pdns/dnsdistdist/xsk.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t getFrameOffsetFrom(const uint8_t* base) const noexcept
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: string
      Src: /src/pdns/pdns/dnsdistdist/statnode.cc:6,1
    - Dst: StatNode::size
      Src: /src/pdns/pdns/dnsdistdist/statnode.cc:18,1
    - Dst: string
      Src: /src/pdns/pdns/dnsdistdist/statnode.cc:19,1
    - Dst: second::print
      Src: /src/pdns/pdns/dnsdistdist/statnode.cc:22,1
    - Dst: StatNode::size
      Src: /src/pdns/pdns/dnsdistdist/statnode.cc:22,1
    - Dst: StatNode::size
      Src: /src/pdns/pdns/dnsdistdist/statnode.cc:24,1
    - Dst: string
      Src: /src/pdns/pdns/dnsdistdist/statnode.cc:25,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 21
    argCount: 3
    argNames:
    - depth
    - newstat
    - silent
    argTypes:
    - unsigned int
    - Stat
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 36
      start: 3
    functionDepth: 0
    functionLinenumber: 3
    functionLinenumberEnd: 36
    functionName: StatNode::print
    functionSourceFile: /src/pdns/pdns/dnsdistdist/statnode.cc
    functionUses: 0
    functionsReached:
    - string
    - StatNode::size
    - second::print
    linkageType: ''
    returnType: StatNode::Stat
    signature: StatNode::Stat StatNode::print(unsigned int depth, Stat newstat, bool
      silent) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: second::visit
      Src: /src/pdns/pdns/dnsdistdist/statnode.cc:43,1
    - Dst: visitor
      Src: /src/pdns/pdns/dnsdistdist/statnode.cc:46,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - ' visitor'
    - ' newstat'
    - depth
    argTypes:
    - visitor_t
    - Stat
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 38
    functionDepth: 1
    functionLinenumber: 38
    functionLinenumberEnd: 49
    functionName: StatNode::visit
    functionSourceFile: /src/pdns/pdns/dnsdistdist/statnode.cc
    functionUses: 1
    functionsReached:
    - second::visit
    - visitor
    linkageType: ''
    returnType: void
    signature: void StatNode::visit(const visitor_t& visitor, Stat& newstat, unsigned
      int depth) const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: getRawLabels
      Src: /src/pdns/pdns/dnsdistdist/statnode.cc:54,1
    - Dst: std::vector::empty
      Src: /src/pdns/pdns/dnsdistdist/statnode.cc:55,1
    - Dst: std::vector::end
      Src: /src/pdns/pdns/dnsdistdist/statnode.cc:59,1
    - Dst: StatNode::submit
      Src: /src/pdns/pdns/dnsdistdist/statnode.cc:60,1
    - Dst: std::vector::begin
      Src: /src/pdns/pdns/dnsdistdist/statnode.cc:60,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 6
    argNames:
    - ' domain'
    - rcode
    - bytes
    - hit
    - ' remote'
    - samplingRate
    argTypes:
    - DNSName
    - int
    - unsigned int
    - bool
    - std::optional<ComboAddress>
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 51
    functionDepth: 0
    functionLinenumber: 51
    functionLinenumberEnd: 61
    functionName: StatNode::submit
    functionSourceFile: /src/pdns/pdns/dnsdistdist/statnode.cc
    functionUses: 4
    functionsReached:
    - std::vector::end
    - getRawLabels
    - StatNode::submit
    - std::vector::begin
    - std::vector::empty
    linkageType: ''
    returnType: void
    signature: void StatNode::submit(const DNSName& domain, int rcode, unsigned int
      bytes, bool hit, const std::optional<ComboAddress>& remote, size_t samplingRate)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - count
    - samplingRate
    argTypes:
    - uint32_t
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 63
    functionDepth: 0
    functionLinenumber: 63
    functionLinenumberEnd: 69
    functionName: adjustForSampling
    functionSourceFile: /src/pdns/pdns/dnsdistdist/statnode.cc
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t adjustForSampling(uint32_t count, size_t samplingRate)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: StatNode::empty
      Src: /src/pdns/pdns/dnsdistdist/statnode.cc:85,1
    - Dst: StatNode::empty
      Src: /src/pdns/pdns/dnsdistdist/statnode.cc:95,1
    - Dst: prependRawLabel
      Src: /src/pdns/pdns/dnsdistdist/statnode.cc:97,1
    - Dst: adjustForSampling
      Src: /src/pdns/pdns/dnsdistdist/statnode.cc:101,1
    - Dst: adjustForSampling
      Src: /src/pdns/pdns/dnsdistdist/statnode.cc:102,1
    - Dst: adjustForSampling
      Src: /src/pdns/pdns/dnsdistdist/statnode.cc:104,1
    - Dst: adjustForSampling
      Src: /src/pdns/pdns/dnsdistdist/statnode.cc:107,1
    - Dst: adjustForSampling
      Src: /src/pdns/pdns/dnsdistdist/statnode.cc:110,1
    - Dst: adjustForSampling
      Src: /src/pdns/pdns/dnsdistdist/statnode.cc:113,1
    - Dst: adjustForSampling
      Src: /src/pdns/pdns/dnsdistdist/statnode.cc:121,1
    - Dst: StatNode::empty
      Src: /src/pdns/pdns/dnsdistdist/statnode.cc:125,1
    - Dst: prependRawLabel
      Src: /src/pdns/pdns/dnsdistdist/statnode.cc:127,1
    - Dst: StatNode::submit
      Src: /src/pdns/pdns/dnsdistdist/statnode.cc:132,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 40
    argCount: 9
    argNames:
    - end
    - begin
    - ' domain'
    - rcode
    - bytes
    - ' remote'
    - count
    - hit
    - samplingRate
    argTypes:
    - std::vector<string>::const_iterator
    - std::vector<string>::const_iterator
    - DNSName
    - int
    - unsigned int
    - std::optional<ComboAddress>
    - unsigned int
    - bool
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 134
      start: 79
    functionDepth: 0
    functionLinenumber: 79
    functionLinenumberEnd: 134
    functionName: StatNode::submit
    functionSourceFile: /src/pdns/pdns/dnsdistdist/statnode.cc
    functionUses: 5
    functionsReached:
    - adjustForSampling
    - StatNode::empty
    - StatNode::submit
    - prependRawLabel
    linkageType: ''
    returnType: void
    signature: void StatNode::submit(std::vector<string>::const_iterator end, std::vector<string>::const_iterator
      begin, const DNSName& domain, int rcode, unsigned int bytes, const std::optional<ComboAddress>&
      remote, unsigned int count, bool hit, size_t samplingRate)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 70
    functionDepth: 0
    functionLinenumber: 70
    functionLinenumberEnd: 70
    functionName: ~Tracer()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~Tracer()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 71
    functionDepth: 0
    functionLinenumber: 71
    functionLinenumberEnd: 71
    functionName: pdns::trace::dnsdist::Tracer::Tracer
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Tracer(const Tracer&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 72
    functionDepth: 0
    functionLinenumber: 72
    functionLinenumberEnd: 72
    functionName: '& operator=(const Tracer)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Tracer
    signature: Tracer & operator=(const Tracer)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 73
    functionDepth: 0
    functionLinenumber: 73
    functionLinenumberEnd: 73
    functionName: '& operator=(Tracer&&)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Tracer
    signature: Tracer & operator=(Tracer&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 74
    functionDepth: 0
    functionLinenumber: 74
    functionLinenumberEnd: 74
    functionName: pdns::trace::dnsdist::Tracer::Tracer
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Tracer(Tracer&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::shared_ptr<Tracer>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.hh:81,1
    - Dst: Tracer::Tracer
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.hh:81,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 79
    functionDepth: 0
    functionLinenumber: 79
    functionLinenumberEnd: 82
    functionName: pdns::trace::dnsdist::Tracer::getTracer
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.hh
    functionUses: 0
    functionsReached:
    - Tracer::Tracer
    - std::shared_ptr<Tracer>
    linkageType: ''
    returnType: std::shared_ptr<Tracer>
    signature: std::shared_ptr<Tracer> getTracer()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 188
      start: 188
    functionDepth: 0
    functionLinenumber: 188
    functionLinenumberEnd: 188
    functionName: pdns::trace::dnsdist::Tracer::Closer::Closer
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Closer()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.hh:203,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - tracer
    - ' spanid'
    argTypes:
    - std::shared_ptr<Tracer>
    - SpanID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 203
      start: 202
    functionDepth: 0
    functionLinenumber: 202
    functionLinenumberEnd: 203
    functionName: pdns::trace::dnsdist::Tracer::Closer::Closer
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.hh
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void Closer(std::shared_ptr<Tracer> tracer, const SpanID& spanid)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: closeSpan
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.hh:214,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 217
      start: 210
    functionDepth: 0
    functionLinenumber: 210
    functionLinenumberEnd: 217
    functionName: ~Closer()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.hh
    functionUses: 0
    functionsReached:
    - closeSpan
    linkageType: ''
    returnType: void
    signature: void ~Closer()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 218
      start: 218
    functionDepth: 0
    functionLinenumber: 218
    functionLinenumberEnd: 218
    functionName: pdns::trace::dnsdist::Tracer::Closer::Closer
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Closer(const Closer&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 219
      start: 219
    functionDepth: 0
    functionLinenumber: 219
    functionLinenumberEnd: 219
    functionName: '& operator=(const Closer&)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Closer
    signature: Closer & operator=(const Closer&)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.hh:223,1
    - Dst: d_tracer::reset
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.hh:226,1
    - Dst: d_spanID::clear
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.hh:227,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - Closer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 230
      start: 220
    functionDepth: 1
    functionLinenumber: 220
    functionLinenumberEnd: 230
    functionName: '& operator=([[maybe_unused]] Closer&& rhs) noexcept'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.hh
    functionUses: 0
    functionsReached:
    - std::move
    - d_tracer::reset
    - d_spanID::clear
    linkageType: ''
    returnType: Closer
    signature: Closer & operator=([[maybe_unused]] Closer&& rhs) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.hh:234,1
    - Dst: d_tracer::reset
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.hh:237,1
    - Dst: d_spanID::clear
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.hh:238,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - Closer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 240
      start: 231
    functionDepth: 1
    functionLinenumber: 231
    functionLinenumberEnd: 240
    functionName: pdns::trace::dnsdist::Tracer::Closer::Closer
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.hh
    functionUses: 0
    functionsReached:
    - std::move
    - d_tracer::reset
    - d_spanID::clear
    linkageType: ''
    returnType: void
    signature: void Closer([[maybe_unused]] Closer&& rhs) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 291
      start: 291
    functionDepth: 0
    functionLinenumber: 291
    functionLinenumberEnd: 291
    functionName: pdns::trace::dnsdist::Tracer::Tracer
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Tracer()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 70
    functionDepth: 0
    functionLinenumber: 70
    functionLinenumberEnd: 70
    functionName: ~Tracer()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~Tracer()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 71
    functionDepth: 0
    functionLinenumber: 71
    functionLinenumberEnd: 71
    functionName: pdns::trace::dnsdist::Tracer::Tracer
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Tracer(const Tracer&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 72
    functionDepth: 0
    functionLinenumber: 72
    functionLinenumberEnd: 72
    functionName: '& operator=(const Tracer)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Tracer
    signature: Tracer & operator=(const Tracer)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 73
    functionDepth: 0
    functionLinenumber: 73
    functionLinenumberEnd: 73
    functionName: '& operator=(Tracer&&)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Tracer
    signature: Tracer & operator=(Tracer&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 74
    functionDepth: 0
    functionLinenumber: 74
    functionLinenumberEnd: 74
    functionName: pdns::trace::dnsdist::Tracer::Tracer
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Tracer(Tracer&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::shared_ptr<Tracer>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.hh:81,1
    - Dst: Tracer::Tracer
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.hh:81,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 79
    functionDepth: 0
    functionLinenumber: 79
    functionLinenumberEnd: 82
    functionName: pdns::trace::dnsdist::Tracer::getTracer
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.hh
    functionUses: 0
    functionsReached:
    - Tracer::Tracer
    - std::shared_ptr<Tracer>
    linkageType: ''
    returnType: std::shared_ptr<Tracer>
    signature: std::shared_ptr<Tracer> getTracer()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 188
      start: 188
    functionDepth: 0
    functionLinenumber: 188
    functionLinenumberEnd: 188
    functionName: pdns::trace::dnsdist::Tracer::Closer::Closer
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Closer()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.hh:203,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - tracer
    - ' spanid'
    argTypes:
    - std::shared_ptr<Tracer>
    - SpanID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 203
      start: 202
    functionDepth: 0
    functionLinenumber: 202
    functionLinenumberEnd: 203
    functionName: pdns::trace::dnsdist::Tracer::Closer::Closer
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.hh
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void Closer(std::shared_ptr<Tracer> tracer, const SpanID& spanid)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: closeSpan
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.hh:214,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 217
      start: 210
    functionDepth: 0
    functionLinenumber: 210
    functionLinenumberEnd: 217
    functionName: ~Closer()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.hh
    functionUses: 0
    functionsReached:
    - closeSpan
    linkageType: ''
    returnType: void
    signature: void ~Closer()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 218
      start: 218
    functionDepth: 0
    functionLinenumber: 218
    functionLinenumberEnd: 218
    functionName: pdns::trace::dnsdist::Tracer::Closer::Closer
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Closer(const Closer&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 219
      start: 219
    functionDepth: 0
    functionLinenumber: 219
    functionLinenumberEnd: 219
    functionName: '& operator=(const Closer&)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Closer
    signature: Closer & operator=(const Closer&)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.hh:223,1
    - Dst: d_tracer::reset
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.hh:226,1
    - Dst: d_spanID::clear
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.hh:227,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - Closer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 230
      start: 220
    functionDepth: 1
    functionLinenumber: 220
    functionLinenumberEnd: 230
    functionName: '& operator=([[maybe_unused]] Closer&& rhs) noexcept'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.hh
    functionUses: 0
    functionsReached:
    - std::move
    - d_tracer::reset
    - d_spanID::clear
    linkageType: ''
    returnType: Closer
    signature: Closer & operator=([[maybe_unused]] Closer&& rhs) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.hh:234,1
    - Dst: d_tracer::reset
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.hh:237,1
    - Dst: d_spanID::clear
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.hh:238,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - Closer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 240
      start: 231
    functionDepth: 1
    functionLinenumber: 231
    functionLinenumberEnd: 240
    functionName: pdns::trace::dnsdist::Tracer::Closer::Closer
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.hh
    functionUses: 0
    functionsReached:
    - std::move
    - d_tracer::reset
    - d_spanID::clear
    linkageType: ''
    returnType: void
    signature: void Closer([[maybe_unused]] Closer&& rhs) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 291
      start: 291
    functionDepth: 0
    functionLinenumber: 291
    functionLinenumberEnd: 291
    functionName: pdns::trace::dnsdist::Tracer::Tracer
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Tracer()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:40,1
    - Dst: protozero::pbf_writer::add_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:41,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:41,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:42,1
    - Dst: second::type
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:44,1
    - Dst: typeid
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:44,1
    - Dst: protozero::pbf_writer::add_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:45,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:45,1
    - Dst: boost::get<std::string>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:45,1
    - Dst: protozero::pbf_writer::add_uint64
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:48,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:48,1
    - Dst: boost::get<int64_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:48,1
    - Dst: protozero::pbf_writer::commit
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:51,1
    - Dst: protozero::pbf_writer::commit
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:52,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 3
    argNames:
    - ' dnsQuestion'
    - ' key'
    - ' values'
    argTypes:
    - DNSQuestion
    - std::string
    - LuaArray<boost::variant<int64_t, std::string>>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 36
    functionDepth: 0
    functionLinenumber: 36
    functionLinenumberEnd: 54
    functionName: addMetaKeyAndValuesToProtobufContent
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc
    functionUses: 0
    functionsReached:
    - static_cast<protozero::pbf_tag_type>
    - protozero::pbf_writer::add_string
    - second::type
    - typeid
    - boost::get<std::string>
    - protozero::pbf_writer::add_uint64
    - protozero::pbf_writer::commit
    - boost::get<int64_t>
    linkageType: ''
    returnType: void
    signature: void addMetaKeyAndValuesToProtobufContent([[maybe_unused]] DNSQuestion&
      dnsQuestion, [[maybe_unused]] const std::string& key, [[maybe_unused]] const
      LuaArray<boost::variant<int64_t, std::string>>& values)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EDNSOptionValues::values::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:63,1
    - Dst: LuaArray::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:65,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:65,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - ' ednsOptions'
    argTypes:
    - EDNSOptionViewMap
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 57
    functionDepth: 0
    functionLinenumber: 57
    functionLinenumberEnd: 68
    functionName: EDNSOptionViewsToValues
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc
    functionUses: 0
    functionsReached:
    - EDNSOptionValues::values::emplace_back
    - LuaArray::emplace_back
    - std::move
    linkageType: ''
    returnType: LuaArray<EDNSOptionValues>
    signature: LuaArray<EDNSOptionValues> EDNSOptionViewsToValues(const EDNSOptionViewMap&
      ednsOptions)
  - BBCount: 48
    BranchProfiles: []
    Callsites:
    - Dst: registerMember
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:77,1
    - Dst: registerMember
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:79,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:88,1
    - Dst: getHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:88,1
    - Dst: dnsdist::PacketMangling::editDNSHeaderFromPacket
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:91,1
    - Dst: getMutableData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:91,1
    - Dst: static_cast<decltype(header.rcode)>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:92,1
    - Dst: registerMember
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:96,1
    - Dst: const_cast<DNSQuestion&>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:102,1
    - Dst: dnsdist::PacketMangling::editDNSHeaderFromPacket
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:105,1
    - Dst: getMutableData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:105,1
    - Dst: getData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:111,1
    - Dst: getMutableData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:111,1
    - Dst: getHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:113,1
    - Dst: overTCP
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:115,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:118,1
    - Dst: std::optional<uint32_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:126,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:134,1
    - Dst: std::make_unique<InternalQueryState::ProtoBufData>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:141,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:144,1
    - Dst: std::make_unique<InternalQueryState::ProtoBufData>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:151,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:154,1
    - Dst: std::make_unique<InternalQueryState::ProtoBufData>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:161,1
    - Dst: dnsdist::getEDNSZ
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:165,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:167,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:169,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:169,1
    - Dst: getData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:169,1
    - Dst: getData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:169,1
    - Dst: getHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:172,1
    - Dst: getMutableData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:173,1
    - Dst: clear
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:174,1
    - Dst: insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:175,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:175,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:175,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:175,1
    - Dst: dnsdist::PacketMangling::editDNSHeaderFromPacket
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:177,1
    - Dst: LuaArray<EDNSOptionValues>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:182,1
    - Dst: parseEDNSOptions
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:183,1
    - Dst: EDNSOptionViewsToValues
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:187,1
    - Dst: dnsheader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:189,1
    - Dst: getHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:190,1
    - Dst: editHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:193,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:198,1
    - Dst: registerFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:198,1
    - Dst: getTrailingData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:199,1
    - Dst: setTrailingData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:202,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:205,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:209,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:216,1
    - Dst: getProtocol
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:218,1
    - Dst: timespec
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:221,1
    - Dst: ids::queryRealTime::getStartTime
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:222,1
    - Dst: ids::queryRealTime::udiff
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:226,1
    - Dst: dnsdist::configuration::getImmutableConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:231,1
    - Dst: sendDNSTrap
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:232,1
    - Dst: setTag
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:238,1
    - Dst: unsetTag
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:241,1
    - Dst: setTag
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:245,1
    - Dst: string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:248,1
    - Dst: getTag
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:249,1
    - Dst: string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:251,1
    - Dst: QTag
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:255,1
    - Dst: registerFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:255,1
    - Dst: addMetaKeyAndValuesToProtobufContent
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:266,1
    - Dst: make_unique<std::vector<ProxyProtocolValue>>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:271,1
    - Dst: proxyProtocolValues::clear
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:274,1
    - Dst: proxyProtocolValues::reserve
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:275,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:275,1
    - Dst: checkParameterBound
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:277,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:277,1
    - Dst: proxyProtocolValues::push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:278,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:278,1
    - Dst: checkParameterBound
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:283,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:283,1
    - Dst: make_unique<std::vector<ProxyProtocolValue>>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:285,1
    - Dst: proxyProtocolValues::push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:288,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:288,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:288,1
    - Dst: LuaArray<std::string>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:291,1
    - Dst: LuaArray::reserve
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:297,1
    - Dst: proxyProtocolValues::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:297,1
    - Dst: LuaArray::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:299,1
    - Dst: dnsdist::changeNameInDNSPacket
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:306,1
    - Dst: getMutableData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:306,1
    - Dst: type
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:315,1
    - Dst: typeid
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:315,1
    - Dst: boost::get<LuaArray<ComboAddress>>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:317,1
    - Dst: std::vector::reserve
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:318,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:318,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:320,1
    - Dst: dnsdist::self_answers::generateAnswerFromIPAddresses
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:322,1
    - Dst: type
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:325,1
    - Dst: typeid
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:325,1
    - Dst: boost::get<LuaArray<std::string>>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:327,1
    - Dst: std::vector::reserve
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:328,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:328,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:330,1
    - Dst: dnsdist::self_answers::generateAnswerFromRDataEntries
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:332,1
    - Dst: std::optional<uint16_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:332,1
    - Dst: setEDNSOption
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:338,1
    - Dst: value_or
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:347,1
    - Dst: std::make_unique<std::vector<dnsdist::edns::SetExtendedDNSErrorOperation>>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:349,1
    - Dst: std::initializer_list<dnsdist::edns::SetExtendedDNSErrorOperation>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:349,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:349,1
    - Dst: std::make_unique<std::vector<dnsdist::edns::SetExtendedDNSErrorOperation>>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:353,1
    - Dst: std::initializer_list<dnsdist::edns::SetExtendedDNSErrorOperation>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:353,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:353,1
    - Dst: ids::d_extendedErrors::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:356,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:356,1
    - Dst: dnsdist::suspendQuery
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:363,1
    - Dst: std::make_unique<PacketBuffer>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:367,1
    - Dst: getData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:367,1
    - Dst: std::optional<std::string>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:371,1
    - Dst: ids::getTracer
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:377,1
    - Dst: getTraceID
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:378,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:379,1
    - Dst: auto::begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:379,1
    - Dst: auto::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:379,1
    - Dst: std::optional<std::string>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:385,1
    - Dst: ids::getTracer
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:391,1
    - Dst: getLastSpanID
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:392,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:393,1
    - Dst: auto::begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:393,1
    - Dst: auto::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:393,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:403,1
    - Dst: getDQ
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:409,1
    - Dst: getDR
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:414,1
    - Dst: dnsdist::queueQueryResumptionEvent
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:419,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:419,1
    - Dst: getTCPQuerySender
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:424,1
    - Dst: gettimeofday
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:430,1
    - Dst: auto::notifyIOError
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:431,1
    - Dst: TCPResponse
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:431,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:431,1
    - Dst: dnsdist::setInternalQueryRCode
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:437,1
    - Dst: DNSQuestion
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:444,1
    - Dst: registerFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:444,1
    - Dst: getDQ
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:445,1
    - Dst: DNSQuestion
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:448,1
    - Dst: registerFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:448,1
    - Dst: getDR
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:449,1
    - Dst: resume
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:453,1
    - Dst: drop
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:457,1
    - Dst: setRCode
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:461,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:464,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:466,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:468,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:470,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:472,1
    - Dst: registerMember
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:476,1
    - Dst: registerMember
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:478,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:487,1
    - Dst: getHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:487,1
    - Dst: dnsdist::PacketMangling::editDNSHeaderFromPacket
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:490,1
    - Dst: getMutableData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:490,1
    - Dst: static_cast<decltype(header.rcode)>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:491,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:495,1
    - Dst: const_cast<DNSResponse&>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:500,1
    - Dst: dnsdist::PacketMangling::editDNSHeaderFromPacket
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:503,1
    - Dst: getMutableData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:503,1
    - Dst: getData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:509,1
    - Dst: getMutableData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:509,1
    - Dst: getHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:511,1
    - Dst: overTCP
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:513,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:516,1
    - Dst: editDNSPacketTTL
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:520,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:520,1
    - Dst: getMutableData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:520,1
    - Dst: getData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:520,1
    - Dst: dnsdist::getEDNSZ
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:523,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:525,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:527,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:527,1
    - Dst: getData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:527,1
    - Dst: getData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:527,1
    - Dst: getHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:530,1
    - Dst: getMutableData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:531,1
    - Dst: clear
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:532,1
    - Dst: insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:533,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:533,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:533,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:533,1
    - Dst: dnsdist::PacketMangling::editDNSHeaderFromPacket
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:534,1
    - Dst: LuaArray<EDNSOptionValues>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:540,1
    - Dst: parseEDNSOptions
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:541,1
    - Dst: EDNSOptionViewsToValues
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:545,1
    - Dst: dnsheader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:547,1
    - Dst: getHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:548,1
    - Dst: editHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:551,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:556,1
    - Dst: registerFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:556,1
    - Dst: getTrailingData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:557,1
    - Dst: setTrailingData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:560,1
    - Dst: setTag
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:564,1
    - Dst: unsetTag
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:568,1
    - Dst: setTag
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:573,1
    - Dst: string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:576,1
    - Dst: getTag
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:577,1
    - Dst: string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:579,1
    - Dst: QTag
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:583,1
    - Dst: registerFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:583,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:592,1
    - Dst: getProtocol
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:593,1
    - Dst: timespec
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:596,1
    - Dst: ids::queryRealTime::getStartTime
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:597,1
    - Dst: ids::queryRealTime::udiff
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:601,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:604,1
    - Dst: dnsdist::configuration::getImmutableConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:613,1
    - Dst: sendDNSTrap
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:614,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:620,1
    - Dst: registerFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:620,1
    - Dst: ids::du::getHTTPPath
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:623,1
    - Dst: ids::doh3u::getHTTPPath
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:628,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:631,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:634,1
    - Dst: registerFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:634,1
    - Dst: ids::du::getHTTPQueryString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:637,1
    - Dst: ids::doh3u::getHTTPQueryString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:642,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:645,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:648,1
    - Dst: registerFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:648,1
    - Dst: ids::du::getHTTPHost
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:651,1
    - Dst: ids::doh3u::getHTTPHost
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:656,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:659,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:662,1
    - Dst: registerFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:662,1
    - Dst: ids::du::getHTTPScheme
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:665,1
    - Dst: ids::doh3u::getHTTPScheme
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:670,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:673,1
    - Dst: LuaAssociativeTable<std::string>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:676,1
    - Dst: registerFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:676,1
    - Dst: ids::du::getHTTPHeaders
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:680,1
    - Dst: ids::doh3u::getHTTPHeaders
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:686,1
    - Dst: LuaAssociativeTable<std::string>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:689,1
    - Dst: checkParameterBound
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:696,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:696,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:697,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:697,1
    - Dst: ids::du::setHTTPResponse
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:700,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:700,1
    - Dst: ids::doh3u::setHTTPResponse
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:705,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:705,1
    - Dst: checkParameterBound
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:711,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:711,1
    - Dst: checkParameterBound
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:712,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:712,1
    - Dst: checkParameterBound
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:713,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:713,1
    - Dst: checkParameterBound
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:714,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:714,1
    - Dst: checkParameterBound
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:715,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:715,1
    - Dst: checkParameterBound
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:716,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:716,1
    - Dst: setNegativeAndAdditionalSOA
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:718,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:718,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:718,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:718,1
    - Dst: value_or
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:727,1
    - Dst: std::make_unique<std::vector<dnsdist::edns::SetExtendedDNSErrorOperation>>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:729,1
    - Dst: std::initializer_list<dnsdist::edns::SetExtendedDNSErrorOperation>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:729,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:729,1
    - Dst: std::make_unique<std::vector<dnsdist::edns::SetExtendedDNSErrorOperation>>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:733,1
    - Dst: std::initializer_list<dnsdist::edns::SetExtendedDNSErrorOperation>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:733,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:733,1
    - Dst: ids::d_extendedErrors::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:736,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:736,1
    - Dst: dnsdist::suspendResponse
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:743,1
    - Dst: dnsdist::changeNameInDNSPacket
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:747,1
    - Dst: getMutableData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:747,1
    - Dst: ids::d_packet::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:755,1
    - Dst: getMutableData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:759,1
    - Dst: dnsdist::getInternalQueryFromDQ
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:762,1
    - Dst: dnsdist::queueQueryResumptionEvent
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:763,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:763,1
    - Dst: std::optional<std::shared_ptr<DownstreamState>>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:766,1
    - Dst: registerFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:766,1
    - Dst: std::optional<std::shared_ptr<DownstreamState>>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:767,1
    - Dst: addMetaKeyAndValuesToProtobufContent
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:779,1
    CyclomaticComplexity: 63
    EdgeCount: 63
    ICount: 609
    argCount: 1
    argNames:
    - ' luaCtx'
    argTypes:
    - LuaContext
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 783
      start: 72
    functionDepth: 1
    functionLinenumber: 72
    functionLinenumberEnd: 783
    functionName: setupLuaBindingsDNSQuestion
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc
    functionUses: 1
    functionsReached:
    - getTraceID
    - std::string
    - std::optional<std::shared_ptr<DownstreamState>>
    - DNSQuestion
    - getLastSpanID
    - parseEDNSOptions
    - ids::du::getHTTPScheme
    - setTag
    - type
    - std::optional<uint32_t>
    - boost::get<LuaArray<ComboAddress>>
    - std::optional<std::string>
    - ids::du::getHTTPQueryString
    - std::vector::reserve
    - unsetTag
    - getTCPQuerySender
    - ids::du::getHTTPHost
    - proxyProtocolValues::size
    - getHeader
    - drop
    - proxyProtocolValues::push_back
    - ComboAddress
    - LuaArray::reserve
    - TCPResponse
    - ids::doh3u::getHTTPPath
    - LuaArray::emplace_back
    - dnsdist::self_answers::generateAnswerFromRDataEntries
    - reinterpret_cast<char*>
    - getMutableData
    - static_cast<decltype(header.rcode)>
    - dnsdist::changeNameInDNSPacket
    - LuaAssociativeTable<std::string>
    - gettimeofday
    - ids::queryRealTime::udiff
    - auto::size
    - ids::doh3u::getHTTPScheme
    - string
    - size
    - LuaArray<EDNSOptionValues>
    - dnsdist::getEDNSZ
    - timespec
    - dnsdist::suspendQuery
    - std::runtime_error
    - dnsheader
    - ids::doh3u::getHTTPHeaders
    - DNSName
    - getTrailingData
    - checkParameterBound
    - LuaArray<std::string>
    - typeid
    - setRCode
    - end
    - boost::get<LuaArray<std::string>>
    - setEDNSOption
    - ids::du::getHTTPPath
    - addMetaKeyAndValuesToProtobufContent
    - std::make_unique<std::vector<dnsdist::edns::SetExtendedDNSErrorOperation>>
    - sendDNSTrap
    - getDQ
    - auto::begin
    - dnsdist::configuration::getImmutableConfiguration
    - ids::getTracer
    - static_cast<int>
    - dnsdist::setInternalQueryRCode
    - const_cast<DNSQuestion&>
    - EDNSOptionViewsToValues
    - const_cast<DNSResponse&>
    - getProtocol
    - dnsdist::self_answers::generateAnswerFromIPAddresses
    - registerMember
    - registerFunction
    - ids::doh3u::getHTTPHost
    - std::optional<uint16_t>
    - get
    - reinterpret_cast<const char*>
    - getData
    - proxyProtocolValues::reserve
    - std::move
    - dnsdist::queueQueryResumptionEvent
    - ids::doh3u::setHTTPResponse
    - resume
    - dnsdist::PacketMangling::editDNSHeaderFromPacket
    - getTag
    - dnsdist::suspendResponse
    - insert
    - std::make_unique<PacketBuffer>
    - std::vector::push_back
    - ids::doh3u::getHTTPQueryString
    - ids::d_extendedErrors::emplace_back
    - setNegativeAndAdditionalSOA
    - QTag
    - ids::d_packet::size
    - value_or
    - overTCP
    - dnsdist::getInternalQueryFromDQ
    - begin
    - clear
    - writeFunction
    - pdns::max
    - editHeader
    - std::initializer_list<dnsdist::edns::SetExtendedDNSErrorOperation>
    - ids::du::setHTTPResponse
    - setTrailingData
    - static_cast<uint8_t>
    - auto::notifyIOError
    - editDNSPacketTTL
    - ids::du::getHTTPHeaders
    - proxyProtocolValues::clear
    - std::make_unique<InternalQueryState::ProtoBufData>
    - getDR
    - make_unique<std::vector<ProxyProtocolValue>>
    - ids::queryRealTime::getStartTime
    - auto::end
    linkageType: ''
    returnType: void
    signature: void setupLuaBindingsDNSQuestion([[maybe_unused]] LuaContext& luaCtx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:403,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 1
    argNames:
    - ' obj_'
    argTypes:
    - std::unique_ptr<CrossProtocolQuery>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 405
      start: 402
    functionDepth: 0
    functionLinenumber: 402
    functionLinenumberEnd: 405
    functionName: AsynchronousObject::AsynchronousObject
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void AsynchronousObject(std::unique_ptr<CrossProtocolQuery>&& obj_)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: AsynchronousObject::getDQ
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:409,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 410
      start: 407
    functionDepth: 0
    functionLinenumber: 407
    functionLinenumberEnd: 410
    functionName: AsynchronousObject::getDQ
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc
    functionUses: 1
    functionsReached:
    - AsynchronousObject::getDQ
    linkageType: ''
    returnType: DNSQuestion
    signature: DNSQuestion getDQ() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: AsynchronousObject::getDR
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:414,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 415
      start: 412
    functionDepth: 0
    functionLinenumber: 412
    functionLinenumberEnd: 415
    functionName: AsynchronousObject::getDR
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc
    functionUses: 1
    functionsReached:
    - AsynchronousObject::getDR
    linkageType: ''
    returnType: DNSResponse
    signature: DNSResponse getDR() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::queueQueryResumptionEvent
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:419,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:419,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 420
      start: 417
    functionDepth: 1
    functionLinenumber: 417
    functionLinenumberEnd: 420
    functionName: AsynchronousObject::resume
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc
    functionUses: 0
    functionsReached:
    - std::move
    - dnsdist::queueQueryResumptionEvent
    linkageType: ''
    returnType: bool
    signature: bool resume()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: getTCPQuerySender
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:424,1
    - Dst: gettimeofday
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:430,1
    - Dst: auto::notifyIOError
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:431,1
    - Dst: TCPResponse
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:431,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:431,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 433
      start: 422
    functionDepth: 1
    functionLinenumber: 422
    functionLinenumberEnd: 433
    functionName: AsynchronousObject::drop
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc
    functionUses: 0
    functionsReached:
    - std::move
    - TCPResponse
    - auto::notifyIOError
    - getTCPQuerySender
    - gettimeofday
    linkageType: ''
    returnType: bool
    signature: bool drop()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::setInternalQueryRCode
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc:437,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - rcode
    - clearAnswers
    argTypes:
    - uint8_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 438
      start: 435
    functionDepth: 1
    functionLinenumber: 435
    functionLinenumberEnd: 438
    functionName: AsynchronousObject::setRCode
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc
    functionUses: 0
    functionsReached:
    - dnsdist::setInternalQueryRCode
    linkageType: ''
    returnType: bool
    signature: bool setRCode(uint8_t rcode, bool clearAnswers)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: setenv
      Src: /src/pdns/pdns/dnsdistdist/testrunner.cc:40,1
    - Dst: boost::unit_test::unit_test_main
      Src: /src/pdns/pdns/dnsdistdist/testrunner.cc:41,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 38
    functionDepth: 0
    functionLinenumber: 38
    functionLinenumberEnd: 42
    functionName: main
    functionSourceFile: /src/pdns/pdns/dnsdistdist/testrunner.cc
    functionUses: 31
    functionsReached:
    - boost::unit_test::unit_test_main
    - setenv
    linkageType: ''
    returnType: int
    signature: int main(int argc, char* argv[])
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DOHFrontend::rotateTicketsKey
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-doh-common.cc:29,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - now
    argTypes:
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 30
      start: 27
    functionDepth: 0
    functionLinenumber: 27
    functionLinenumberEnd: 30
    functionName: DOHFrontend::rotateTicketsKey
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-doh-common.cc
    functionUses: 1
    functionsReached:
    - DOHFrontend::rotateTicketsKey
    linkageType: ''
    returnType: void
    signature: void DOHFrontend::rotateTicketsKey(time_t now)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DOHFrontend::loadTicketsKeys
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-doh-common.cc:34,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' keyFile'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 35
      start: 32
    functionDepth: 0
    functionLinenumber: 32
    functionLinenumberEnd: 35
    functionName: DOHFrontend::loadTicketsKeys
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-doh-common.cc
    functionUses: 1
    functionsReached:
    - DOHFrontend::loadTicketsKeys
    linkageType: ''
    returnType: void
    signature: void DOHFrontend::loadTicketsKeys(const std::string& keyFile)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DOHFrontend::loadTicketsKey
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-doh-common.cc:39,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' key'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 37
    functionDepth: 0
    functionLinenumber: 37
    functionLinenumberEnd: 40
    functionName: DOHFrontend::loadTicketsKey
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-doh-common.cc
    functionUses: 1
    functionsReached:
    - DOHFrontend::loadTicketsKey
    linkageType: ''
    returnType: void
    signature: void DOHFrontend::loadTicketsKey(const std::string& key)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 42
    functionDepth: 0
    functionLinenumber: 42
    functionLinenumberEnd: 44
    functionName: DOHFrontend::handleTicketsKeyRotation
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-doh-common.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void DOHFrontend::handleTicketsKeyRotation()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DOHFrontend::getNextTicketsKeyRotation
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-doh-common.cc:48,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 46
    functionDepth: 0
    functionLinenumber: 46
    functionLinenumberEnd: 49
    functionName: DOHFrontend::getNextTicketsKeyRotation
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-doh-common.cc
    functionUses: 1
    functionsReached:
    - DOHFrontend::getNextTicketsKeyRotation
    linkageType: ''
    returnType: std::string
    signature: std::string DOHFrontend::getNextTicketsKeyRotation() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DOHFrontend::getTicketsKeysCount
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-doh-common.cc:53,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 51
    functionDepth: 0
    functionLinenumber: 51
    functionLinenumberEnd: 54
    functionName: DOHFrontend::getTicketsKeysCount
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-doh-common.cc
    functionUses: 1
    functionsReached:
    - DOHFrontend::getTicketsKeysCount
    linkageType: ''
    returnType: size_t
    signature: size_t DOHFrontend::getTicketsKeysCount()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: isHTTPS
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-doh-common.cc:58,1
    - Dst: setupTLS
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-doh-common.cc:59,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 56
    functionDepth: 1
    functionLinenumber: 56
    functionLinenumberEnd: 61
    functionName: DOHFrontend::reloadCertificates
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-doh-common.cc
    functionUses: 0
    functionsReached:
    - setupTLS
    - isHTTPS
    linkageType: ''
    returnType: void
    signature: void DOHFrontend::reloadCertificates()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: isHTTPS
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-doh-common.cc:65,1
    - Dst: setupTLS
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-doh-common.cc:66,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-doh-common.cc:67,1
    - Dst: d_addr::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-doh-common.cc:67,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 63
    functionDepth: 1
    functionLinenumber: 63
    functionLinenumberEnd: 70
    functionName: DOHFrontend::setup
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-doh-common.cc
    functionUses: 0
    functionsReached:
    - std::runtime_error
    - d_addr::toStringWithPort
    - setupTLS
    - isHTTPS
    linkageType: ''
    returnType: void
    signature: void DOHFrontend::setup()
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-doh-common.cc:80,1
    - Dst: find
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-doh-common.cc:84,1
    - Dst: find
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-doh-common.cc:86,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-doh-common.cc:95,1
    - Dst: string::reserve
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-doh-common.cc:105,1
    - Dst: substr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-doh-common.cc:106,1
    - Dst: string::append
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-doh-common.cc:120,1
    - Dst: string::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-doh-common.cc:126,1
    - Dst: PacketBuffer::reserve
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-doh-common.cc:127,1
    - Dst: B64Decode
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-doh-common.cc:128,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-doh-common.cc:132,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 38
    argCount: 1
    argNames:
    - ' path'
    argTypes:
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 134
      start: 76
    functionDepth: 0
    functionLinenumber: 76
    functionLinenumberEnd: 134
    functionName: dnsdist::doh::getPayloadFromPath
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-doh-common.cc
    functionUses: 0
    functionsReached:
    - std::move
    - string::reserve
    - string::size
    - string::append
    - PacketBuffer::reserve
    - B64Decode
    - size
    - substr
    - find
    linkageType: ''
    returnType: std::optional<PacketBuffer>
    signature: std::optional<PacketBuffer> getPayloadFromPath(const std::string_view&
      path)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-doh-common.cc:80,1
    - Dst: find
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-doh-common.cc:84,1
    - Dst: find
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-doh-common.cc:86,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-doh-common.cc:95,1
    - Dst: string::reserve
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-doh-common.cc:105,1
    - Dst: substr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-doh-common.cc:106,1
    - Dst: string::append
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-doh-common.cc:120,1
    - Dst: string::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-doh-common.cc:126,1
    - Dst: PacketBuffer::reserve
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-doh-common.cc:127,1
    - Dst: B64Decode
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-doh-common.cc:128,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-doh-common.cc:132,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 38
    argCount: 1
    argNames:
    - ' path'
    argTypes:
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 134
      start: 76
    functionDepth: 0
    functionLinenumber: 76
    functionLinenumberEnd: 134
    functionName: dnsdist::doh::getPayloadFromPath
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-doh-common.cc
    functionUses: 0
    functionsReached:
    - std::move
    - string::reserve
    - string::size
    - string::append
    - PacketBuffer::reserve
    - B64Decode
    - size
    - substr
    - find
    linkageType: ''
    returnType: std::optional<PacketBuffer>
    signature: std::optional<PacketBuffer> getPayloadFromPath(const std::string_view&
      path)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - s
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 19
      start: 18
    functionDepth: 0
    functionLinenumber: 18
    functionLinenumberEnd: 19
    functionName: BINARY
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-proxy_protocol_cc.cc
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BINARY(s)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeProxyHeader
      Src: /src/pdns/pdns/dnsdistdist/test-proxy_protocol_cc.cc:32,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-proxy_protocol_cc.cc:34,1
    - Dst: BINARY
      Src: /src/pdns/pdns/dnsdistdist/test-proxy_protocol_cc.cc:34,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-proxy_protocol_cc.cc:49,1
    - Dst: parseProxyHeader
      Src: /src/pdns/pdns/dnsdistdist/test-proxy_protocol_cc.cc:49,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-proxy_protocol_cc.cc:51,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-proxy_protocol_cc.cc:52,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-proxy_protocol_cc.cc:53,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-proxy_protocol_cc.cc:54,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 25
    functionDepth: 0
    functionLinenumber: 25
    functionLinenumberEnd: 55
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-proxy_protocol_cc.cc
    functionUses: 0
    functionsReached:
    - BOOST_CHECK_EQUAL
    - parseProxyHeader
    - BINARY
    - BOOST_CHECK
    - makeProxyHeader
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_roundtrip)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeLocalProxyHeader
      Src: /src/pdns/pdns/dnsdistdist/test-proxy_protocol_cc.cc:58,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-proxy_protocol_cc.cc:60,1
    - Dst: BINARY
      Src: /src/pdns/pdns/dnsdistdist/test-proxy_protocol_cc.cc:60,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-proxy_protocol_cc.cc:72,1
    - Dst: parseProxyHeader
      Src: /src/pdns/pdns/dnsdistdist/test-proxy_protocol_cc.cc:72,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-proxy_protocol_cc.cc:74,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-proxy_protocol_cc.cc:75,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-proxy_protocol_cc.cc:76,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/dnsdistdist/test-proxy_protocol_cc.cc:76,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 57
    functionDepth: 0
    functionLinenumber: 57
    functionLinenumberEnd: 77
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-proxy_protocol_cc.cc
    functionUses: 0
    functionsReached:
    - std::vector::size
    - BOOST_CHECK_EQUAL
    - makeLocalProxyHeader
    - parseProxyHeader
    - BINARY
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_local_proxy_header)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::string::resize
      Src: /src/pdns/pdns/dnsdistdist/test-proxy_protocol_cc.cc:82,1
    - Dst: makeProxyHeader
      Src: /src/pdns/pdns/dnsdistdist/test-proxy_protocol_cc.cc:88,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-proxy_protocol_cc.cc:96,1
    - Dst: parseProxyHeader
      Src: /src/pdns/pdns/dnsdistdist/test-proxy_protocol_cc.cc:96,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-proxy_protocol_cc.cc:97,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-proxy_protocol_cc.cc:98,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-proxy_protocol_cc.cc:99,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-proxy_protocol_cc.cc:100,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-proxy_protocol_cc.cc:101,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/dnsdistdist/test-proxy_protocol_cc.cc:101,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/dnsdistdist/test-proxy_protocol_cc.cc:101,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/dnsdistdist/test-proxy_protocol_cc.cc:102,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-proxy_protocol_cc.cc:103,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-proxy_protocol_cc.cc:103,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-proxy_protocol_cc.cc:103,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-proxy_protocol_cc.cc:104,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-proxy_protocol_cc.cc:104,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-proxy_protocol_cc.cc:104,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 79
    functionDepth: 1
    functionLinenumber: 79
    functionLinenumberEnd: 106
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-proxy_protocol_cc.cc
    functionUses: 0
    functionsReached:
    - std::vector::size
    - BOOST_CHECK_EQUAL
    - std::string::resize
    - std::vector::at
    - parseProxyHeader
    - BOOST_CHECK
    - makeProxyHeader
    - BOOST_REQUIRE_EQUAL
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_tlv_values_content_len_signedness)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::string::resize
      Src: /src/pdns/pdns/dnsdistdist/test-proxy_protocol_cc.cc:114,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/dnsdistdist/test-proxy_protocol_cc.cc:117,1
    - Dst: makeProxyHeader
      Src: /src/pdns/pdns/dnsdistdist/test-proxy_protocol_cc.cc:117,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 118
      start: 108
    functionDepth: 1
    functionLinenumber: 108
    functionLinenumberEnd: 118
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-proxy_protocol_cc.cc
    functionUses: 0
    functionsReached:
    - std::string::resize
    - BOOST_CHECK_THROW
    - makeProxyHeader
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_payload_too_large)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::string::resize
      Src: /src/pdns/pdns/dnsdistdist/test-proxy_protocol_cc.cc:123,1
    - Dst: makeProxyHeader
      Src: /src/pdns/pdns/dnsdistdist/test-proxy_protocol_cc.cc:129,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-proxy_protocol_cc.cc:137,1
    - Dst: parseProxyHeader
      Src: /src/pdns/pdns/dnsdistdist/test-proxy_protocol_cc.cc:137,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-proxy_protocol_cc.cc:138,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-proxy_protocol_cc.cc:139,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-proxy_protocol_cc.cc:140,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-proxy_protocol_cc.cc:141,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-proxy_protocol_cc.cc:142,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/dnsdistdist/test-proxy_protocol_cc.cc:142,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/dnsdistdist/test-proxy_protocol_cc.cc:142,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/dnsdistdist/test-proxy_protocol_cc.cc:143,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-proxy_protocol_cc.cc:144,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-proxy_protocol_cc.cc:144,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-proxy_protocol_cc.cc:144,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-proxy_protocol_cc.cc:145,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-proxy_protocol_cc.cc:145,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-proxy_protocol_cc.cc:145,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 120
    functionDepth: 1
    functionLinenumber: 120
    functionLinenumberEnd: 147
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-proxy_protocol_cc.cc
    functionUses: 0
    functionsReached:
    - std::vector::size
    - BOOST_CHECK_EQUAL
    - std::string::resize
    - std::vector::at
    - parseProxyHeader
    - BOOST_CHECK
    - makeProxyHeader
    - BOOST_REQUIRE_EQUAL
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_tlv_values_length_signedness)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeProxyHeader
      Src: /src/pdns/pdns/dnsdistdist/test-proxy_protocol_cc.cc:155,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-proxy_protocol_cc.cc:165,1
    - Dst: parseProxyHeader
      Src: /src/pdns/pdns/dnsdistdist/test-proxy_protocol_cc.cc:165,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-proxy_protocol_cc.cc:166,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-proxy_protocol_cc.cc:167,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-proxy_protocol_cc.cc:168,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-proxy_protocol_cc.cc:169,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-proxy_protocol_cc.cc:170,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/dnsdistdist/test-proxy_protocol_cc.cc:170,1
    - Dst: std::string::resize
      Src: /src/pdns/pdns/dnsdistdist/test-proxy_protocol_cc.cc:176,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-proxy_protocol_cc.cc:177,1
    - Dst: parseProxyHeader
      Src: /src/pdns/pdns/dnsdistdist/test-proxy_protocol_cc.cc:177,1
    - Dst: std::string::resize
      Src: /src/pdns/pdns/dnsdistdist/test-proxy_protocol_cc.cc:183,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-proxy_protocol_cc.cc:184,1
    - Dst: parseProxyHeader
      Src: /src/pdns/pdns/dnsdistdist/test-proxy_protocol_cc.cc:184,1
    - Dst: makeProxyHeader
      Src: /src/pdns/pdns/dnsdistdist/test-proxy_protocol_cc.cc:190,1
    - Dst: std::string::resize
      Src: /src/pdns/pdns/dnsdistdist/test-proxy_protocol_cc.cc:193,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-proxy_protocol_cc.cc:194,1
    - Dst: parseProxyHeader
      Src: /src/pdns/pdns/dnsdistdist/test-proxy_protocol_cc.cc:194,1
    - Dst: std::string::at
      Src: /src/pdns/pdns/dnsdistdist/test-proxy_protocol_cc.cc:200,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-proxy_protocol_cc.cc:201,1
    - Dst: parseProxyHeader
      Src: /src/pdns/pdns/dnsdistdist/test-proxy_protocol_cc.cc:201,1
    - Dst: std::string::at
      Src: /src/pdns/pdns/dnsdistdist/test-proxy_protocol_cc.cc:207,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-proxy_protocol_cc.cc:208,1
    - Dst: parseProxyHeader
      Src: /src/pdns/pdns/dnsdistdist/test-proxy_protocol_cc.cc:208,1
    - Dst: std::string::at
      Src: /src/pdns/pdns/dnsdistdist/test-proxy_protocol_cc.cc:214,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-proxy_protocol_cc.cc:215,1
    - Dst: parseProxyHeader
      Src: /src/pdns/pdns/dnsdistdist/test-proxy_protocol_cc.cc:215,1
    - Dst: std::string::at
      Src: /src/pdns/pdns/dnsdistdist/test-proxy_protocol_cc.cc:221,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-proxy_protocol_cc.cc:222,1
    - Dst: parseProxyHeader
      Src: /src/pdns/pdns/dnsdistdist/test-proxy_protocol_cc.cc:222,1
    - Dst: std::string::at
      Src: /src/pdns/pdns/dnsdistdist/test-proxy_protocol_cc.cc:228,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-proxy_protocol_cc.cc:229,1
    - Dst: parseProxyHeader
      Src: /src/pdns/pdns/dnsdistdist/test-proxy_protocol_cc.cc:229,1
    - Dst: makeProxyHeader
      Src: /src/pdns/pdns/dnsdistdist/test-proxy_protocol_cc.cc:235,1
    - Dst: std::string::at
      Src: /src/pdns/pdns/dnsdistdist/test-proxy_protocol_cc.cc:238,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-proxy_protocol_cc.cc:239,1
    - Dst: parseProxyHeader
      Src: /src/pdns/pdns/dnsdistdist/test-proxy_protocol_cc.cc:239,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 37
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 241
      start: 149
    functionDepth: 1
    functionLinenumber: 149
    functionLinenumberEnd: 241
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-proxy_protocol_cc.cc
    functionUses: 0
    functionsReached:
    - std::string::at
    - std::vector::size
    - BOOST_CHECK_EQUAL
    - std::string::resize
    - parseProxyHeader
    - BOOST_CHECK
    - makeProxyHeader
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_parsing_invalid_headers)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: srandom
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-random.cc:31,1
    - Dst: dns_random_uint32
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-random.cc:31,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 32
      start: 29
    functionDepth: 0
    functionLinenumber: 29
    functionLinenumberEnd: 32
    functionName: dnsdist::initRandom
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-random.cc
    functionUses: 0
    functionsReached:
    - dns_random_uint32
    - srandom
    linkageType: ''
    returnType: void
    signature: void initRandom()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dns_random
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-random.cc:36,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - upperBound
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 34
    functionDepth: 0
    functionLinenumber: 34
    functionLinenumberEnd: 37
    functionName: dnsdist::getRandomValue
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-random.cc
    functionUses: 0
    functionsReached:
    - dns_random
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t getRandomValue(uint32_t upperBound)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dns_random_uint16
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-random.cc:41,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 39
    functionDepth: 0
    functionLinenumber: 39
    functionLinenumberEnd: 42
    functionName: dnsdist::getRandomDNSID
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-random.cc
    functionUses: 0
    functionsReached:
    - dns_random_uint16
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t getRandomDNSID()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: srandom
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-random.cc:31,1
    - Dst: dns_random_uint32
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-random.cc:31,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 32
      start: 29
    functionDepth: 0
    functionLinenumber: 29
    functionLinenumberEnd: 32
    functionName: dnsdist::initRandom
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-random.cc
    functionUses: 0
    functionsReached:
    - dns_random_uint32
    - srandom
    linkageType: ''
    returnType: void
    signature: void initRandom()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dns_random
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-random.cc:36,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - upperBound
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 34
    functionDepth: 0
    functionLinenumber: 34
    functionLinenumberEnd: 37
    functionName: dnsdist::getRandomValue
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-random.cc
    functionUses: 0
    functionsReached:
    - dns_random
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t getRandomValue(uint32_t upperBound)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dns_random_uint16
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-random.cc:41,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 39
    functionDepth: 0
    functionLinenumber: 39
    functionLinenumberEnd: 42
    functionName: dnsdist::getRandomDNSID
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-random.cc
    functionUses: 0
    functionsReached:
    - dns_random_uint16
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t getRandomDNSID()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 84
    functionDepth: 0
    functionLinenumber: 84
    functionLinenumberEnd: 84
    functionName: ReadWriteLock::ReadWriteLock
    functionSourceFile: /src/pdns/pdns/dnsdistdist/lock.hh
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ReadWriteLock()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 85
    functionDepth: 0
    functionLinenumber: 85
    functionLinenumberEnd: 85
    functionName: ~ReadWriteLock()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/lock.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~ReadWriteLock()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - ReadWriteLock
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 87
    functionDepth: 0
    functionLinenumber: 87
    functionLinenumberEnd: 87
    functionName: ReadWriteLock::ReadWriteLock
    functionSourceFile: /src/pdns/pdns/dnsdistdist/lock.hh
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ReadWriteLock(const ReadWriteLock& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - ReadWriteLock
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 88
    functionDepth: 0
    functionLinenumber: 88
    functionLinenumberEnd: 88
    functionName: ReadWriteLock::ReadWriteLock
    functionSourceFile: /src/pdns/pdns/dnsdistdist/lock.hh
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ReadWriteLock(ReadWriteLock&& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 89
    functionDepth: 0
    functionLinenumber: 89
    functionLinenumberEnd: 89
    functionName: '& operator=(ReadWriteLock&&)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/lock.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: ReadWriteLock
    signature: ReadWriteLock & operator=(ReadWriteLock&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - ReadWriteLock
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 90
    functionDepth: 0
    functionLinenumber: 90
    functionLinenumberEnd: 90
    functionName: '& operator=(const ReadWriteLock& rhs)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/lock.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: ReadWriteLock
    signature: ReadWriteLock & operator=(const ReadWriteLock& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 92
    functionDepth: 0
    functionLinenumber: 92
    functionLinenumberEnd: 95
    functionName: '& getLock()'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/lock.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::shared_mutex
    signature: std::shared_mutex & getLock()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getLock
      Src: /src/pdns/pdns/dnsdistdist/lock.hh:105,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' lock'
    argTypes:
    - ReadWriteLock
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 107
      start: 104
    functionDepth: 0
    functionLinenumber: 104
    functionLinenumberEnd: 107
    functionName: ReadLock::ReadLock
    functionSourceFile: /src/pdns/pdns/dnsdistdist/lock.hh
    functionUses: 0
    functionsReached:
    - getLock
    linkageType: ''
    returnType: void
    signature: void ReadLock(ReadWriteLock& lock)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ReadWriteLock*::getLock
      Src: /src/pdns/pdns/dnsdistdist/lock.hh:110,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - lock
    argTypes:
    - ReadWriteLock*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 112
      start: 109
    functionDepth: 0
    functionLinenumber: 109
    functionLinenumberEnd: 112
    functionName: ReadLock::ReadLock
    functionSourceFile: /src/pdns/pdns/dnsdistdist/lock.hh
    functionUses: 0
    functionsReached:
    - ReadWriteLock*::getLock
    linkageType: ''
    returnType: void
    signature: void ReadLock(ReadWriteLock* lock)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 114
    functionDepth: 0
    functionLinenumber: 114
    functionLinenumberEnd: 114
    functionName: ~ReadLock()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/lock.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~ReadLock()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - ReadLock
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 115
      start: 115
    functionDepth: 0
    functionLinenumber: 115
    functionLinenumberEnd: 115
    functionName: ReadLock::ReadLock
    functionSourceFile: /src/pdns/pdns/dnsdistdist/lock.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ReadLock(const ReadLock& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - ReadLock
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 116
    functionDepth: 0
    functionLinenumber: 116
    functionLinenumberEnd: 116
    functionName: '& operator=(const ReadLock& rhs)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/lock.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: ReadLock
    signature: ReadLock & operator=(const ReadLock& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 117
    functionDepth: 0
    functionLinenumber: 117
    functionLinenumberEnd: 117
    functionName: '& operator=(ReadLock&&)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/lock.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: ReadLock
    signature: ReadLock & operator=(ReadLock&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/lock.hh:120,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - ReadLock
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 122
      start: 119
    functionDepth: 0
    functionLinenumber: 119
    functionLinenumberEnd: 122
    functionName: ReadLock::ReadLock
    functionSourceFile: /src/pdns/pdns/dnsdistdist/lock.hh
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void ReadLock(ReadLock&& rhs) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' lock'
    argTypes:
    - std::shared_mutex
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 125
    functionDepth: 0
    functionLinenumber: 125
    functionLinenumberEnd: 128
    functionName: ReadLock::ReadLock
    functionSourceFile: /src/pdns/pdns/dnsdistdist/lock.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ReadLock(std::shared_mutex& lock)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getLock
      Src: /src/pdns/pdns/dnsdistdist/lock.hh:137,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' lock'
    argTypes:
    - ReadWriteLock
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 139
      start: 136
    functionDepth: 0
    functionLinenumber: 136
    functionLinenumberEnd: 139
    functionName: WriteLock::WriteLock
    functionSourceFile: /src/pdns/pdns/dnsdistdist/lock.hh
    functionUses: 0
    functionsReached:
    - getLock
    linkageType: ''
    returnType: void
    signature: void WriteLock(ReadWriteLock& lock)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ReadWriteLock*::getLock
      Src: /src/pdns/pdns/dnsdistdist/lock.hh:142,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - lock
    argTypes:
    - ReadWriteLock*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 144
      start: 141
    functionDepth: 0
    functionLinenumber: 141
    functionLinenumberEnd: 144
    functionName: WriteLock::WriteLock
    functionSourceFile: /src/pdns/pdns/dnsdistdist/lock.hh
    functionUses: 0
    functionsReached:
    - ReadWriteLock*::getLock
    linkageType: ''
    returnType: void
    signature: void WriteLock(ReadWriteLock* lock)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 146
      start: 146
    functionDepth: 0
    functionLinenumber: 146
    functionLinenumberEnd: 146
    functionName: ~WriteLock()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/lock.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~WriteLock()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - WriteLock
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 147
    functionDepth: 0
    functionLinenumber: 147
    functionLinenumberEnd: 147
    functionName: WriteLock::WriteLock
    functionSourceFile: /src/pdns/pdns/dnsdistdist/lock.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void WriteLock(const WriteLock& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - WriteLock
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 148
      start: 148
    functionDepth: 0
    functionLinenumber: 148
    functionLinenumberEnd: 148
    functionName: '& operator=(const WriteLock& rhs)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/lock.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: WriteLock
    signature: WriteLock & operator=(const WriteLock& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 149
      start: 149
    functionDepth: 0
    functionLinenumber: 149
    functionLinenumberEnd: 149
    functionName: '& operator=(WriteLock&&)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/lock.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: WriteLock
    signature: WriteLock & operator=(WriteLock&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/lock.hh:152,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - WriteLock
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 154
      start: 151
    functionDepth: 0
    functionLinenumber: 151
    functionLinenumberEnd: 154
    functionName: WriteLock::WriteLock
    functionSourceFile: /src/pdns/pdns/dnsdistdist/lock.hh
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void WriteLock(WriteLock&& rhs) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' lock'
    argTypes:
    - std::shared_mutex
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 160
      start: 157
    functionDepth: 0
    functionLinenumber: 157
    functionLinenumberEnd: 160
    functionName: WriteLock::WriteLock
    functionSourceFile: /src/pdns/pdns/dnsdistdist/lock.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void WriteLock(std::shared_mutex& lock)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getLock
      Src: /src/pdns/pdns/dnsdistdist/lock.hh:169,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' lock'
    argTypes:
    - ReadWriteLock
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 171
      start: 168
    functionDepth: 0
    functionLinenumber: 168
    functionLinenumberEnd: 171
    functionName: TryReadLock::TryReadLock
    functionSourceFile: /src/pdns/pdns/dnsdistdist/lock.hh
    functionUses: 0
    functionsReached:
    - getLock
    linkageType: ''
    returnType: void
    signature: void TryReadLock(ReadWriteLock& lock)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ReadWriteLock*::getLock
      Src: /src/pdns/pdns/dnsdistdist/lock.hh:174,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - lock
    argTypes:
    - ReadWriteLock*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 176
      start: 173
    functionDepth: 0
    functionLinenumber: 173
    functionLinenumberEnd: 176
    functionName: TryReadLock::TryReadLock
    functionSourceFile: /src/pdns/pdns/dnsdistdist/lock.hh
    functionUses: 0
    functionsReached:
    - ReadWriteLock*::getLock
    linkageType: ''
    returnType: void
    signature: void TryReadLock(ReadWriteLock* lock)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 178
      start: 178
    functionDepth: 0
    functionLinenumber: 178
    functionLinenumberEnd: 178
    functionName: ~TryReadLock()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/lock.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~TryReadLock()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - TryReadLock
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 179
      start: 179
    functionDepth: 0
    functionLinenumber: 179
    functionLinenumberEnd: 179
    functionName: TryReadLock::TryReadLock
    functionSourceFile: /src/pdns/pdns/dnsdistdist/lock.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void TryReadLock(const TryReadLock& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 180
      start: 180
    functionDepth: 0
    functionLinenumber: 180
    functionLinenumberEnd: 180
    functionName: TryReadLock::TryReadLock
    functionSourceFile: /src/pdns/pdns/dnsdistdist/lock.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void TryReadLock(TryReadLock&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - TryReadLock
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 181
      start: 181
    functionDepth: 0
    functionLinenumber: 181
    functionLinenumberEnd: 181
    functionName: '& operator=(const TryReadLock& rhs)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/lock.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: TryReadLock
    signature: TryReadLock & operator=(const TryReadLock& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 182
      start: 182
    functionDepth: 0
    functionLinenumber: 182
    functionLinenumberEnd: 182
    functionName: '& operator=(TryReadLock&&)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/lock.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: TryReadLock
    signature: TryReadLock & operator=(TryReadLock&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: owns_lock
      Src: /src/pdns/pdns/dnsdistdist/lock.hh:186,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 187
      start: 184
    functionDepth: 0
    functionLinenumber: 184
    functionLinenumberEnd: 187
    functionName: TryReadLock::gotIt
    functionSourceFile: /src/pdns/pdns/dnsdistdist/lock.hh
    functionUses: 2
    functionsReached:
    - owns_lock
    linkageType: ''
    returnType: bool
    signature: bool gotIt() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' lock'
    argTypes:
    - std::shared_mutex
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 193
      start: 190
    functionDepth: 0
    functionLinenumber: 190
    functionLinenumberEnd: 193
    functionName: TryReadLock::TryReadLock
    functionSourceFile: /src/pdns/pdns/dnsdistdist/lock.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void TryReadLock(std::shared_mutex& lock)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getLock
      Src: /src/pdns/pdns/dnsdistdist/lock.hh:202,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' lock'
    argTypes:
    - ReadWriteLock
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 204
      start: 201
    functionDepth: 0
    functionLinenumber: 201
    functionLinenumberEnd: 204
    functionName: TryWriteLock::TryWriteLock
    functionSourceFile: /src/pdns/pdns/dnsdistdist/lock.hh
    functionUses: 0
    functionsReached:
    - getLock
    linkageType: ''
    returnType: void
    signature: void TryWriteLock(ReadWriteLock& lock)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ReadWriteLock*::getLock
      Src: /src/pdns/pdns/dnsdistdist/lock.hh:207,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - lock
    argTypes:
    - ReadWriteLock*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 209
      start: 206
    functionDepth: 0
    functionLinenumber: 206
    functionLinenumberEnd: 209
    functionName: TryWriteLock::TryWriteLock
    functionSourceFile: /src/pdns/pdns/dnsdistdist/lock.hh
    functionUses: 0
    functionsReached:
    - ReadWriteLock*::getLock
    linkageType: ''
    returnType: void
    signature: void TryWriteLock(ReadWriteLock* lock)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 211
      start: 211
    functionDepth: 0
    functionLinenumber: 211
    functionLinenumberEnd: 211
    functionName: ~TryWriteLock()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/lock.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~TryWriteLock()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - TryWriteLock
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 212
      start: 212
    functionDepth: 0
    functionLinenumber: 212
    functionLinenumberEnd: 212
    functionName: TryWriteLock::TryWriteLock
    functionSourceFile: /src/pdns/pdns/dnsdistdist/lock.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void TryWriteLock(const TryWriteLock& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 213
      start: 213
    functionDepth: 0
    functionLinenumber: 213
    functionLinenumberEnd: 213
    functionName: TryWriteLock::TryWriteLock
    functionSourceFile: /src/pdns/pdns/dnsdistdist/lock.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void TryWriteLock(TryWriteLock&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - TryWriteLock
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 214
      start: 214
    functionDepth: 0
    functionLinenumber: 214
    functionLinenumberEnd: 214
    functionName: '& operator=(const TryWriteLock& rhs)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/lock.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: TryWriteLock
    signature: TryWriteLock & operator=(const TryWriteLock& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 215
      start: 215
    functionDepth: 0
    functionLinenumber: 215
    functionLinenumberEnd: 215
    functionName: '& operator=(TryWriteLock&&)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/lock.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: TryWriteLock
    signature: TryWriteLock & operator=(TryWriteLock&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: owns_lock
      Src: /src/pdns/pdns/dnsdistdist/lock.hh:219,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 220
      start: 217
    functionDepth: 0
    functionLinenumber: 217
    functionLinenumberEnd: 220
    functionName: TryWriteLock::gotIt
    functionSourceFile: /src/pdns/pdns/dnsdistdist/lock.hh
    functionUses: 1
    functionsReached:
    - owns_lock
    linkageType: ''
    returnType: bool
    signature: bool gotIt() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' lock'
    argTypes:
    - std::shared_mutex
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 226
      start: 223
    functionDepth: 0
    functionLinenumber: 223
    functionLinenumberEnd: 226
    functionName: TryWriteLock::TryWriteLock
    functionSourceFile: /src/pdns/pdns/dnsdistdist/lock.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void TryWriteLock(std::shared_mutex& lock)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - ' value'
    - ' mutex'
    argTypes:
    - T
    - std::mutex
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 238
      start: 235
    functionDepth: 0
    functionLinenumber: 235
    functionLinenumberEnd: 238
    functionName: LockGuardedHolder::LockGuardedHolder
    functionSourceFile: /src/pdns/pdns/dnsdistdist/lock.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void LockGuardedHolder(T& value, std::mutex& mutex)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 243
      start: 240
    functionDepth: 0
    functionLinenumber: 240
    functionLinenumberEnd: 243
    functionName: '& operator*() const noexcept'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/lock.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: T
    signature: T & operator*() const noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 248
      start: 245
    functionDepth: 0
    functionLinenumber: 245
    functionLinenumberEnd: 248
    functionName: '* operator->() const noexcept'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/lock.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: T
    signature: T * operator->() const noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - ' value'
    - ' mutex'
    argTypes:
    - T
    - std::mutex
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 262
      start: 259
    functionDepth: 0
    functionLinenumber: 259
    functionLinenumberEnd: 262
    functionName: LockGuardedTryHolder::LockGuardedTryHolder
    functionSourceFile: /src/pdns/pdns/dnsdistdist/lock.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void LockGuardedTryHolder(T& value, std::mutex& mutex)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: owns_lock
      Src: /src/pdns/pdns/dnsdistdist/lock.hh:266,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/lock.hh:267,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 270
      start: 264
    functionDepth: 0
    functionLinenumber: 264
    functionLinenumberEnd: 270
    functionName: '& operator*() const'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/lock.hh
    functionUses: 0
    functionsReached:
    - owns_lock
    - std::runtime_error
    linkageType: ''
    returnType: T
    signature: T & operator*() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: owns_lock
      Src: /src/pdns/pdns/dnsdistdist/lock.hh:274,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/lock.hh:275,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 278
      start: 272
    functionDepth: 0
    functionLinenumber: 272
    functionLinenumberEnd: 278
    functionName: '* operator->() const'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/lock.hh
    functionUses: 0
    functionsReached:
    - owns_lock
    - std::runtime_error
    linkageType: ''
    returnType: T
    signature: T * operator->() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: owns_lock
      Src: /src/pdns/pdns/dnsdistdist/lock.hh:282,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 283
      start: 280
    functionDepth: 0
    functionLinenumber: 280
    functionLinenumberEnd: 283
    functionName: operator bool() const noexcept
    functionSourceFile: /src/pdns/pdns/dnsdistdist/lock.hh
    functionUses: 0
    functionsReached:
    - owns_lock
    linkageType: ''
    returnType: void
    signature: void operator bool() const noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LockGuardedTryHolder::owns_lock
      Src: /src/pdns/pdns/dnsdistdist/lock.hh:287,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 288
      start: 285
    functionDepth: 0
    functionLinenumber: 285
    functionLinenumberEnd: 288
    functionName: LockGuardedTryHolder::owns_lock
    functionSourceFile: /src/pdns/pdns/dnsdistdist/lock.hh
    functionUses: 4
    functionsReached:
    - LockGuardedTryHolder::owns_lock
    linkageType: ''
    returnType: bool
    signature: bool owns_lock() const noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LockGuardedTryHolder::lock
      Src: /src/pdns/pdns/dnsdistdist/lock.hh:292,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 293
      start: 290
    functionDepth: 0
    functionLinenumber: 290
    functionLinenumberEnd: 293
    functionName: LockGuardedTryHolder::lock
    functionSourceFile: /src/pdns/pdns/dnsdistdist/lock.hh
    functionUses: 3
    functionsReached:
    - LockGuardedTryHolder::lock
    linkageType: ''
    returnType: void
    signature: void lock()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' value'
    argTypes:
    - T
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 307
      start: 304
    functionDepth: 0
    functionLinenumber: 304
    functionLinenumberEnd: 307
    functionName: LockGuarded::LockGuarded
    functionSourceFile: /src/pdns/pdns/dnsdistdist/lock.hh
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void LockGuarded(const T& value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/lock.hh:310,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 1
    argNames:
    - ' value'
    argTypes:
    - T
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 312
      start: 309
    functionDepth: 0
    functionLinenumber: 309
    functionLinenumberEnd: 312
    functionName: LockGuarded::LockGuarded
    functionSourceFile: /src/pdns/pdns/dnsdistdist/lock.hh
    functionUses: 2
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void LockGuarded(T&& value)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 314
      start: 314
    functionDepth: 0
    functionLinenumber: 314
    functionLinenumberEnd: 314
    functionName: LockGuarded::LockGuarded
    functionSourceFile: /src/pdns/pdns/dnsdistdist/lock.hh
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void LockGuarded()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LockGuardedTryHolder<T>
      Src: /src/pdns/pdns/dnsdistdist/lock.hh:318,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 319
      start: 316
    functionDepth: 0
    functionLinenumber: 316
    functionLinenumberEnd: 319
    functionName: LockGuarded::try_lock
    functionSourceFile: /src/pdns/pdns/dnsdistdist/lock.hh
    functionUses: 0
    functionsReached:
    - LockGuardedTryHolder<T>
    linkageType: ''
    returnType: LockGuardedTryHolder<T>
    signature: LockGuardedTryHolder<T> try_lock()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LockGuardedHolder<T>
      Src: /src/pdns/pdns/dnsdistdist/lock.hh:323,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 324
      start: 321
    functionDepth: 0
    functionLinenumber: 321
    functionLinenumberEnd: 324
    functionName: LockGuarded::lock
    functionSourceFile: /src/pdns/pdns/dnsdistdist/lock.hh
    functionUses: 2
    functionsReached:
    - LockGuardedHolder<T>
    linkageType: ''
    returnType: LockGuardedHolder<T>
    signature: LockGuardedHolder<T> lock()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LockGuardedHolder<const T>
      Src: /src/pdns/pdns/dnsdistdist/lock.hh:328,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 329
      start: 326
    functionDepth: 0
    functionLinenumber: 326
    functionLinenumberEnd: 329
    functionName: LockGuarded::read_only_lock
    functionSourceFile: /src/pdns/pdns/dnsdistdist/lock.hh
    functionUses: 0
    functionsReached:
    - LockGuardedHolder<const T>
    linkageType: ''
    returnType: LockGuardedHolder<const T>
    signature: LockGuardedHolder<const T> read_only_lock()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - ' value'
    - ' mutex'
    argTypes:
    - T
    - std::recursive_mutex
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 343
      start: 340
    functionDepth: 0
    functionLinenumber: 340
    functionLinenumberEnd: 343
    functionName: RecursiveLockGuardedHolder::RecursiveLockGuardedHolder
    functionSourceFile: /src/pdns/pdns/dnsdistdist/lock.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void RecursiveLockGuardedHolder(T& value, std::recursive_mutex& mutex)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 348
      start: 345
    functionDepth: 0
    functionLinenumber: 345
    functionLinenumberEnd: 348
    functionName: '& operator*() const noexcept'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/lock.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: T
    signature: T & operator*() const noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 353
      start: 350
    functionDepth: 0
    functionLinenumber: 350
    functionLinenumberEnd: 353
    functionName: '* operator->() const noexcept'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/lock.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: T
    signature: T * operator->() const noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - ' value'
    - ' mutex'
    argTypes:
    - T
    - std::recursive_mutex
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 367
      start: 364
    functionDepth: 0
    functionLinenumber: 364
    functionLinenumberEnd: 367
    functionName: RecursiveLockGuardedTryHolder::RecursiveLockGuardedTryHolder
    functionSourceFile: /src/pdns/pdns/dnsdistdist/lock.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void RecursiveLockGuardedTryHolder(T& value, std::recursive_mutex&
      mutex)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: owns_lock
      Src: /src/pdns/pdns/dnsdistdist/lock.hh:371,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/lock.hh:372,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 375
      start: 369
    functionDepth: 0
    functionLinenumber: 369
    functionLinenumberEnd: 375
    functionName: '& operator*() const'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/lock.hh
    functionUses: 0
    functionsReached:
    - owns_lock
    - std::runtime_error
    linkageType: ''
    returnType: T
    signature: T & operator*() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: owns_lock
      Src: /src/pdns/pdns/dnsdistdist/lock.hh:379,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/lock.hh:380,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 383
      start: 377
    functionDepth: 0
    functionLinenumber: 377
    functionLinenumberEnd: 383
    functionName: '* operator->() const'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/lock.hh
    functionUses: 0
    functionsReached:
    - owns_lock
    - std::runtime_error
    linkageType: ''
    returnType: T
    signature: T * operator->() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: owns_lock
      Src: /src/pdns/pdns/dnsdistdist/lock.hh:387,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 388
      start: 385
    functionDepth: 0
    functionLinenumber: 385
    functionLinenumberEnd: 388
    functionName: operator bool() const noexcept
    functionSourceFile: /src/pdns/pdns/dnsdistdist/lock.hh
    functionUses: 0
    functionsReached:
    - owns_lock
    linkageType: ''
    returnType: void
    signature: void operator bool() const noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RecursiveLockGuardedTryHolder::owns_lock
      Src: /src/pdns/pdns/dnsdistdist/lock.hh:392,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 393
      start: 390
    functionDepth: 0
    functionLinenumber: 390
    functionLinenumberEnd: 393
    functionName: RecursiveLockGuardedTryHolder::owns_lock
    functionSourceFile: /src/pdns/pdns/dnsdistdist/lock.hh
    functionUses: 2
    functionsReached:
    - RecursiveLockGuardedTryHolder::owns_lock
    linkageType: ''
    returnType: bool
    signature: bool owns_lock() const noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RecursiveLockGuardedTryHolder::lock
      Src: /src/pdns/pdns/dnsdistdist/lock.hh:397,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 398
      start: 395
    functionDepth: 0
    functionLinenumber: 395
    functionLinenumberEnd: 398
    functionName: RecursiveLockGuardedTryHolder::lock
    functionSourceFile: /src/pdns/pdns/dnsdistdist/lock.hh
    functionUses: 2
    functionsReached:
    - RecursiveLockGuardedTryHolder::lock
    linkageType: ''
    returnType: void
    signature: void lock()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' value'
    argTypes:
    - T
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 412
      start: 409
    functionDepth: 0
    functionLinenumber: 409
    functionLinenumberEnd: 412
    functionName: RecursiveLockGuarded::RecursiveLockGuarded
    functionSourceFile: /src/pdns/pdns/dnsdistdist/lock.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void RecursiveLockGuarded(const T& value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/lock.hh:415,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 1
    argNames:
    - ' value'
    argTypes:
    - T
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 417
      start: 414
    functionDepth: 0
    functionLinenumber: 414
    functionLinenumberEnd: 417
    functionName: RecursiveLockGuarded::RecursiveLockGuarded
    functionSourceFile: /src/pdns/pdns/dnsdistdist/lock.hh
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void RecursiveLockGuarded(T&& value)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 419
      start: 419
    functionDepth: 0
    functionLinenumber: 419
    functionLinenumberEnd: 419
    functionName: RecursiveLockGuarded::RecursiveLockGuarded
    functionSourceFile: /src/pdns/pdns/dnsdistdist/lock.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void RecursiveLockGuarded()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RecursiveLockGuardedTryHolder<T>
      Src: /src/pdns/pdns/dnsdistdist/lock.hh:423,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 424
      start: 421
    functionDepth: 0
    functionLinenumber: 421
    functionLinenumberEnd: 424
    functionName: RecursiveLockGuarded::try_lock
    functionSourceFile: /src/pdns/pdns/dnsdistdist/lock.hh
    functionUses: 0
    functionsReached:
    - RecursiveLockGuardedTryHolder<T>
    linkageType: ''
    returnType: RecursiveLockGuardedTryHolder<T>
    signature: RecursiveLockGuardedTryHolder<T> try_lock()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RecursiveLockGuardedHolder<T>
      Src: /src/pdns/pdns/dnsdistdist/lock.hh:428,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 429
      start: 426
    functionDepth: 0
    functionLinenumber: 426
    functionLinenumberEnd: 429
    functionName: RecursiveLockGuarded::lock
    functionSourceFile: /src/pdns/pdns/dnsdistdist/lock.hh
    functionUses: 0
    functionsReached:
    - RecursiveLockGuardedHolder<T>
    linkageType: ''
    returnType: RecursiveLockGuardedHolder<T>
    signature: RecursiveLockGuardedHolder<T> lock()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RecursiveLockGuardedHolder<const T>
      Src: /src/pdns/pdns/dnsdistdist/lock.hh:433,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 434
      start: 431
    functionDepth: 0
    functionLinenumber: 431
    functionLinenumberEnd: 434
    functionName: RecursiveLockGuarded::read_only_lock
    functionSourceFile: /src/pdns/pdns/dnsdistdist/lock.hh
    functionUses: 0
    functionsReached:
    - RecursiveLockGuardedHolder<const T>
    linkageType: ''
    returnType: RecursiveLockGuardedHolder<const T>
    signature: RecursiveLockGuardedHolder<const T> read_only_lock()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - ' value'
    - ' mutex'
    argTypes:
    - T
    - std::shared_mutex
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 448
      start: 445
    functionDepth: 0
    functionLinenumber: 445
    functionLinenumberEnd: 448
    functionName: SharedLockGuardedHolder::SharedLockGuardedHolder
    functionSourceFile: /src/pdns/pdns/dnsdistdist/lock.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void SharedLockGuardedHolder(T& value, std::shared_mutex& mutex)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 453
      start: 450
    functionDepth: 0
    functionLinenumber: 450
    functionLinenumberEnd: 453
    functionName: '& operator*() const noexcept'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/lock.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: T
    signature: T & operator*() const noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 458
      start: 455
    functionDepth: 0
    functionLinenumber: 455
    functionLinenumberEnd: 458
    functionName: '* operator->() const noexcept'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/lock.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: T
    signature: T * operator->() const noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - ' value'
    - ' mutex'
    argTypes:
    - T
    - std::shared_mutex
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 472
      start: 469
    functionDepth: 0
    functionLinenumber: 469
    functionLinenumberEnd: 472
    functionName: SharedLockGuardedTryHolder::SharedLockGuardedTryHolder
    functionSourceFile: /src/pdns/pdns/dnsdistdist/lock.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void SharedLockGuardedTryHolder(T& value, std::shared_mutex& mutex)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: owns_lock
      Src: /src/pdns/pdns/dnsdistdist/lock.hh:476,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/lock.hh:477,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 480
      start: 474
    functionDepth: 0
    functionLinenumber: 474
    functionLinenumberEnd: 480
    functionName: '& operator*() const'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/lock.hh
    functionUses: 0
    functionsReached:
    - owns_lock
    - std::runtime_error
    linkageType: ''
    returnType: T
    signature: T & operator*() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: owns_lock
      Src: /src/pdns/pdns/dnsdistdist/lock.hh:484,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/lock.hh:485,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 488
      start: 482
    functionDepth: 0
    functionLinenumber: 482
    functionLinenumberEnd: 488
    functionName: '* operator->() const'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/lock.hh
    functionUses: 0
    functionsReached:
    - owns_lock
    - std::runtime_error
    linkageType: ''
    returnType: T
    signature: T * operator->() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: owns_lock
      Src: /src/pdns/pdns/dnsdistdist/lock.hh:492,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 493
      start: 490
    functionDepth: 0
    functionLinenumber: 490
    functionLinenumberEnd: 493
    functionName: operator bool() const noexcept
    functionSourceFile: /src/pdns/pdns/dnsdistdist/lock.hh
    functionUses: 0
    functionsReached:
    - owns_lock
    linkageType: ''
    returnType: void
    signature: void operator bool() const noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SharedLockGuardedTryHolder::owns_lock
      Src: /src/pdns/pdns/dnsdistdist/lock.hh:497,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 498
      start: 495
    functionDepth: 0
    functionLinenumber: 495
    functionLinenumberEnd: 498
    functionName: SharedLockGuardedTryHolder::owns_lock
    functionSourceFile: /src/pdns/pdns/dnsdistdist/lock.hh
    functionUses: 2
    functionsReached:
    - SharedLockGuardedTryHolder::owns_lock
    linkageType: ''
    returnType: bool
    signature: bool owns_lock() const noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - ' value'
    - ' mutex'
    argTypes:
    - T
    - std::shared_mutex
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 512
      start: 509
    functionDepth: 0
    functionLinenumber: 509
    functionLinenumberEnd: 512
    functionName: SharedLockGuardedNonExclusiveHolder::SharedLockGuardedNonExclusiveHolder
    functionSourceFile: /src/pdns/pdns/dnsdistdist/lock.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void SharedLockGuardedNonExclusiveHolder(const T& value, std::shared_mutex&
      mutex)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 517
      start: 514
    functionDepth: 0
    functionLinenumber: 514
    functionLinenumberEnd: 517
    functionName: '& operator*() const noexcept'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/lock.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: T
    signature: T & operator*() const noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 522
      start: 519
    functionDepth: 0
    functionLinenumber: 519
    functionLinenumberEnd: 522
    functionName: '* operator->() const noexcept'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/lock.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: T
    signature: T * operator->() const noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - ' value'
    - ' mutex'
    argTypes:
    - T
    - std::shared_mutex
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 536
      start: 533
    functionDepth: 0
    functionLinenumber: 533
    functionLinenumberEnd: 536
    functionName: SharedLockGuardedNonExclusiveTryHolder::SharedLockGuardedNonExclusiveTryHolder
    functionSourceFile: /src/pdns/pdns/dnsdistdist/lock.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void SharedLockGuardedNonExclusiveTryHolder(const T& value, std::shared_mutex&
      mutex)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: owns_lock
      Src: /src/pdns/pdns/dnsdistdist/lock.hh:540,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/lock.hh:541,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 544
      start: 538
    functionDepth: 0
    functionLinenumber: 538
    functionLinenumberEnd: 544
    functionName: '& operator*() const'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/lock.hh
    functionUses: 0
    functionsReached:
    - owns_lock
    - std::runtime_error
    linkageType: ''
    returnType: T
    signature: T & operator*() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: owns_lock
      Src: /src/pdns/pdns/dnsdistdist/lock.hh:548,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/lock.hh:549,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 552
      start: 546
    functionDepth: 0
    functionLinenumber: 546
    functionLinenumberEnd: 552
    functionName: '* operator->() const'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/lock.hh
    functionUses: 0
    functionsReached:
    - owns_lock
    - std::runtime_error
    linkageType: ''
    returnType: T
    signature: T * operator->() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: owns_lock
      Src: /src/pdns/pdns/dnsdistdist/lock.hh:556,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 557
      start: 554
    functionDepth: 0
    functionLinenumber: 554
    functionLinenumberEnd: 557
    functionName: operator bool() const noexcept
    functionSourceFile: /src/pdns/pdns/dnsdistdist/lock.hh
    functionUses: 0
    functionsReached:
    - owns_lock
    linkageType: ''
    returnType: void
    signature: void operator bool() const noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SharedLockGuardedNonExclusiveTryHolder::owns_lock
      Src: /src/pdns/pdns/dnsdistdist/lock.hh:561,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 562
      start: 559
    functionDepth: 0
    functionLinenumber: 559
    functionLinenumberEnd: 562
    functionName: SharedLockGuardedNonExclusiveTryHolder::owns_lock
    functionSourceFile: /src/pdns/pdns/dnsdistdist/lock.hh
    functionUses: 2
    functionsReached:
    - SharedLockGuardedNonExclusiveTryHolder::owns_lock
    linkageType: ''
    returnType: bool
    signature: bool owns_lock() const noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' value'
    argTypes:
    - T
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 576
      start: 573
    functionDepth: 0
    functionLinenumber: 573
    functionLinenumberEnd: 576
    functionName: SharedLockGuarded::SharedLockGuarded
    functionSourceFile: /src/pdns/pdns/dnsdistdist/lock.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void SharedLockGuarded(const T& value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/lock.hh:579,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 1
    argNames:
    - ' value'
    argTypes:
    - T
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 581
      start: 578
    functionDepth: 0
    functionLinenumber: 578
    functionLinenumberEnd: 581
    functionName: SharedLockGuarded::SharedLockGuarded
    functionSourceFile: /src/pdns/pdns/dnsdistdist/lock.hh
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void SharedLockGuarded(T&& value)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 583
      start: 583
    functionDepth: 0
    functionLinenumber: 583
    functionLinenumberEnd: 583
    functionName: SharedLockGuarded::SharedLockGuarded
    functionSourceFile: /src/pdns/pdns/dnsdistdist/lock.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void SharedLockGuarded()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SharedLockGuardedTryHolder<T>
      Src: /src/pdns/pdns/dnsdistdist/lock.hh:587,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 588
      start: 585
    functionDepth: 0
    functionLinenumber: 585
    functionLinenumberEnd: 588
    functionName: SharedLockGuarded::try_write_lock
    functionSourceFile: /src/pdns/pdns/dnsdistdist/lock.hh
    functionUses: 0
    functionsReached:
    - SharedLockGuardedTryHolder<T>
    linkageType: ''
    returnType: SharedLockGuardedTryHolder<T>
    signature: SharedLockGuardedTryHolder<T> try_write_lock()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SharedLockGuardedHolder<T>
      Src: /src/pdns/pdns/dnsdistdist/lock.hh:592,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 593
      start: 590
    functionDepth: 0
    functionLinenumber: 590
    functionLinenumberEnd: 593
    functionName: SharedLockGuarded::write_lock
    functionSourceFile: /src/pdns/pdns/dnsdistdist/lock.hh
    functionUses: 0
    functionsReached:
    - SharedLockGuardedHolder<T>
    linkageType: ''
    returnType: SharedLockGuardedHolder<T>
    signature: SharedLockGuardedHolder<T> write_lock()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SharedLockGuardedNonExclusiveTryHolder<T>
      Src: /src/pdns/pdns/dnsdistdist/lock.hh:597,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 598
      start: 595
    functionDepth: 0
    functionLinenumber: 595
    functionLinenumberEnd: 598
    functionName: SharedLockGuarded::try_read_lock
    functionSourceFile: /src/pdns/pdns/dnsdistdist/lock.hh
    functionUses: 0
    functionsReached:
    - SharedLockGuardedNonExclusiveTryHolder<T>
    linkageType: ''
    returnType: SharedLockGuardedNonExclusiveTryHolder<T>
    signature: SharedLockGuardedNonExclusiveTryHolder<T> try_read_lock()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SharedLockGuardedNonExclusiveHolder<T>
      Src: /src/pdns/pdns/dnsdistdist/lock.hh:602,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 603
      start: 600
    functionDepth: 0
    functionLinenumber: 600
    functionLinenumberEnd: 603
    functionName: SharedLockGuarded::read_lock
    functionSourceFile: /src/pdns/pdns/dnsdistdist/lock.hh
    functionUses: 0
    functionsReached:
    - SharedLockGuardedNonExclusiveHolder<T>
    linkageType: ''
    returnType: SharedLockGuardedNonExclusiveHolder<T>
    signature: SharedLockGuardedNonExclusiveHolder<T> read_lock()
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:39,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:40,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:41,1
    - Dst: second::isUp
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:44,1
    - Dst: second::outstanding::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:48,1
    - Dst: second::getRelevantLatencyUsec
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:57,1
    - Dst: second::getRelevantLatencyUsec
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:63,1
    - Dst: second::getRelevantLatencyUsec
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:68,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 25
    argCount: 1
    argNames:
    - ' servers'
    argTypes:
    - ServerPolicy::NumberedServerVector
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 36
    functionDepth: 1
    functionLinenumber: 36
    functionLinenumberEnd: 73
    functionName: getLeastOutstanding
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc
    functionUses: 0
    functionsReached:
    - second::getRelevantLatencyUsec
    - pdns::max
    - second::isUp
    - second::outstanding::load
    linkageType: ''
    returnType: std::optional<ServerPolicy::SelectedServerPosition>
    signature: std::optional<ServerPolicy::SelectedServerPosition> getLeastOutstanding(const
      ServerPolicy::NumberedServerVector& servers)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:78,1
    - Dst: second::isUp
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:78,1
    - Dst: getLeastOutstanding
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:82,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - ' servers'
    - dnsQuestion
    argTypes:
    - ServerPolicy::NumberedServerVector
    - DNSQuestion*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 76
    functionDepth: 2
    functionLinenumber: 76
    functionLinenumberEnd: 83
    functionName: leastOutstanding
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc
    functionUses: 0
    functionsReached:
    - getLeastOutstanding
    - second::isUp
    - size
    linkageType: ''
    returnType: std::optional<ServerPolicy::SelectedServerPosition>
    signature: std::optional<ServerPolicy::SelectedServerPosition> leastOutstanding(const
      ServerPolicy::NumberedServerVector& servers, [[maybe_unused]] const DNSQuestion*
      dnsQuestion)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: second::isUp
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:88,1
    - Dst: second::d_qpsLimiter::checkOnly
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:88,1
    - Dst: leastOutstanding
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:92,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 6
    argCount: 2
    argNames:
    - ' servers'
    - dnsQuestion
    argTypes:
    - ServerPolicy::NumberedServerVector
    - DNSQuestion*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 85
    functionDepth: 3
    functionLinenumber: 85
    functionLinenumberEnd: 93
    functionName: firstAvailable
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc
    functionUses: 0
    functionsReached:
    - second::d_qpsLimiter::checkOnly
    - second::isUp
    - leastOutstanding
    linkageType: ''
    returnType: std::optional<ServerPolicy::SelectedServerPosition>
    signature: std::optional<ServerPolicy::SelectedServerPosition> firstAvailable(const
      ServerPolicy::NumberedServerVector& servers, const DNSQuestion* dnsQuestion)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:98,1
    - Dst: dnsdist::configuration::getImmutableConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:102,1
    - Dst: second::isUp
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:104,1
    - Dst: static_cast<double>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:104,1
    - Dst: second::outstanding::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:104,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:113,1
    - Dst: std::pair
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:113,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:123,1
    - Dst: std::upper_bound
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:124,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:124,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:124,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:125,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 20
    argCount: 4
    argNames:
    - ' servers'
    - ' poss'
    - val
    - targetLoad
    argTypes:
    - ServerPolicy::NumberedServerVector
    - T
    - unsigned int
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 130
      start: 96
    functionDepth: 1
    functionLinenumber: 96
    functionLinenumberEnd: 130
    functionName: getValRandom
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc
    functionUses: 0
    functionsReached:
    - pdns::max
    - static_cast<double>
    - std::upper_bound
    - begin
    - std::pair
    - dnsdist::configuration::getImmutableConfiguration
    - second::outstanding::load
    - second::isUp
    - at
    - static_cast<int>
    linkageType: ''
    returnType: std::optional<ServerPolicy::SelectedServerPosition>
    signature: std::optional<ServerPolicy::SelectedServerPosition> getValRandom(const
      ServerPolicy::NumberedServerVector& servers, T& poss, const unsigned int val,
      const double targetLoad)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:135,1
    - Dst: dnsdist::configuration::getImmutableConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:136,1
    - Dst: second::isUp
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:142,1
    - Dst: static_cast<double>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:149,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:153,1
    - Dst: getValRandom
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:155,1
    - Dst: DynamicIndexArray::resize
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:159,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:159,1
    - Dst: getValRandom
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:160,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 2
    argNames:
    - val
    - ' servers'
    argTypes:
    - unsigned int
    - ServerPolicy::NumberedServerVector
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 161
      start: 132
    functionDepth: 2
    functionLinenumber: 132
    functionLinenumberEnd: 161
    functionName: valrandom
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc
    functionUses: 0
    functionsReached:
    - pdns::max
    - static_cast<double>
    - getValRandom
    - size
    - DynamicIndexArray::resize
    - dnsdist::configuration::getImmutableConfiguration
    - second::isUp
    linkageType: ''
    returnType: std::optional<ServerPolicy::SelectedServerPosition>
    signature: std::optional<ServerPolicy::SelectedServerPosition> valrandom(const
      unsigned int val, const ServerPolicy::NumberedServerVector& servers)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: valrandom
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:165,1
    - Dst: dns_random_uint32
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:165,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' servers'
    - dnsQuestion
    argTypes:
    - ServerPolicy::NumberedServerVector
    - DNSQuestion*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 166
      start: 163
    functionDepth: 3
    functionLinenumber: 163
    functionLinenumberEnd: 166
    functionName: wrandom
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc
    functionUses: 1
    functionsReached:
    - dns_random_uint32
    - valrandom
    linkageType: ''
    returnType: std::optional<ServerPolicy::SelectedServerPosition>
    signature: std::optional<ServerPolicy::SelectedServerPosition> wrandom(const ServerPolicy::NumberedServerVector&
      servers, [[maybe_unused]] const DNSQuestion* dnsQuestion)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: valrandom
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:170,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' servers'
    - hash
    argTypes:
    - ServerPolicy::NumberedServerVector
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 171
      start: 168
    functionDepth: 3
    functionLinenumber: 168
    functionLinenumberEnd: 171
    functionName: whashedFromHash
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc
    functionUses: 1
    functionsReached:
    - valrandom
    linkageType: ''
    returnType: std::optional<ServerPolicy::SelectedServerPosition>
    signature: std::optional<ServerPolicy::SelectedServerPosition> whashedFromHash(const
      ServerPolicy::NumberedServerVector& servers, size_t hash)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::configuration::getImmutableConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:175,1
    - Dst: whashedFromHash
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:176,1
    - Dst: DNSQuestion*::ids::qname::hash
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:176,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' servers'
    - dnsQuestion
    argTypes:
    - ServerPolicy::NumberedServerVector
    - DNSQuestion*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 177
      start: 173
    functionDepth: 4
    functionLinenumber: 173
    functionLinenumberEnd: 177
    functionName: whashed
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc
    functionUses: 1
    functionsReached:
    - whashedFromHash
    - dnsdist::configuration::getImmutableConfiguration
    - DNSQuestion*::ids::qname::hash
    linkageType: ''
    returnType: std::optional<ServerPolicy::SelectedServerPosition>
    signature: std::optional<ServerPolicy::SelectedServerPosition> whashed(const ServerPolicy::NumberedServerVector&
      servers, const DNSQuestion* dnsQuestion)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:181,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:182,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:186,1
    - Dst: dnsdist::configuration::getImmutableConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:187,1
    - Dst: second::isUp
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:193,1
    - Dst: static_cast<double>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:200,1
    - Dst: second::isUp
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:205,1
    - Dst: static_cast<double>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:205,1
    - Dst: second::outstanding::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:205,1
    - Dst: second::hash
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:208,1
    - Dst: hashes::read_lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:213,1
    - Dst: auto::begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:215,1
    - Dst: auto::begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:216,1
    - Dst: std::lower_bound
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:220,1
    - Dst: auto::begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:220,1
    - Dst: auto::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:220,1
    - Dst: auto::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:221,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 35
    argCount: 2
    argNames:
    - ' servers'
    - qhash
    argTypes:
    - ServerPolicy::NumberedServerVector
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 237
      start: 179
    functionDepth: 2
    functionLinenumber: 179
    functionLinenumberEnd: 237
    functionName: chashedFromHash
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc
    functionUses: 1
    functionsReached:
    - pdns::max
    - hashes::read_lock
    - static_cast<double>
    - second::hash
    - std::lower_bound
    - auto::begin
    - dnsdist::configuration::getImmutableConfiguration
    - second::outstanding::load
    - auto::end
    - second::isUp
    linkageType: ''
    returnType: std::optional<ServerPolicy::SelectedServerPosition>
    signature: std::optional<ServerPolicy::SelectedServerPosition> chashedFromHash(const
      ServerPolicy::NumberedServerVector& servers, size_t qhash)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::configuration::getImmutableConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:241,1
    - Dst: chashedFromHash
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:242,1
    - Dst: DNSQuestion*::ids::qname::hash
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:242,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' servers'
    - dnsQuestion
    argTypes:
    - ServerPolicy::NumberedServerVector
    - DNSQuestion*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 243
      start: 239
    functionDepth: 3
    functionLinenumber: 239
    functionLinenumberEnd: 243
    functionName: chashed
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc
    functionUses: 1
    functionsReached:
    - chashedFromHash
    - dnsdist::configuration::getImmutableConfiguration
    - DNSQuestion*::ids::qname::hash
    linkageType: ''
    returnType: std::optional<ServerPolicy::SelectedServerPosition>
    signature: std::optional<ServerPolicy::SelectedServerPosition> chashed(const ServerPolicy::NumberedServerVector&
      servers, const DNSQuestion* dnsQuestion)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:247,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:253,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:254,1
    - Dst: auto::second::isUp
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:255,1
    - Dst: vector::reserve
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:260,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:260,1
    - Dst: second::isUp
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:263,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:264,1
    - Dst: vector::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:268,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:269,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:273,1
    - Dst: vector::at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:277,1
    - Dst: vector::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:277,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 20
    argCount: 2
    argNames:
    - ' servers'
    - dnsQuestion
    argTypes:
    - ServerPolicy::NumberedServerVector
    - DNSQuestion*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 278
      start: 245
    functionDepth: 1
    functionLinenumber: 245
    functionLinenumberEnd: 278
    functionName: roundrobin
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc
    functionUses: 0
    functionsReached:
    - vector::push_back
    - vector::at
    - dnsdist::configuration::getCurrentRuntimeConfiguration
    - auto::second::isUp
    - size
    - vector::empty
    - empty
    - vector::reserve
    - vector::size
    - second::isUp
    - at
    linkageType: ''
    returnType: std::optional<ServerPolicy::SelectedServerPosition>
    signature: std::optional<ServerPolicy::SelectedServerPosition> roundrobin(const
      ServerPolicy::NumberedServerVector& servers, [[maybe_unused]] const DNSQuestion*
      dnsQuestion)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:282,1
    - Dst: ServerPolicy::NumberedServerVector::reserve
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:287,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:287,1
    - Dst: std::vector::reserve
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:289,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:289,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:291,1
    - Dst: second::isUp
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:295,1
    - Dst: DNSQuestion*::ids::qTag::count
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:295,1
    - Dst: second::getNameWithAddr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:295,1
    - Dst: ServerPolicy::NumberedServerVector::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:301,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:302,1
    - Dst: ServerPolicy::NumberedServerVector::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:306,1
    - Dst: wrandom
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:310,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:312,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 22
    argCount: 2
    argNames:
    - ' servers'
    - dnsQuestion
    argTypes:
    - ServerPolicy::NumberedServerVector
    - DNSQuestion*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 315
      start: 280
    functionDepth: 4
    functionLinenumber: 280
    functionLinenumberEnd: 315
    functionName: orderedWrandUntag
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc
    functionUses: 0
    functionsReached:
    - pdns::max
    - std::vector::push_back
    - ServerPolicy::NumberedServerVector::reserve
    - size
    - std::vector::reserve
    - wrandom
    - second::getNameWithAddr
    - std::vector::at
    - DNSQuestion*::ids::qTag::count
    - ServerPolicy::NumberedServerVector::empty
    - empty
    - second::isUp
    - ServerPolicy::NumberedServerVector::emplace_back
    linkageType: ''
    returnType: std::optional<ServerPolicy::SelectedServerPosition>
    signature: std::optional<ServerPolicy::SelectedServerPosition> orderedWrandUntag(const
      ServerPolicy::NumberedServerVector& servers, const DNSQuestion* dnsQuestion)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getPool
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:319,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' poolName'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 320
      start: 317
    functionDepth: 1
    functionLinenumber: 317
    functionLinenumberEnd: 320
    functionName: getDownstreamCandidates
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc
    functionUses: 0
    functionsReached:
    - getPool
    linkageType: ''
    returnType: ServerPolicy::NumberedServerVector
    signature: ServerPolicy::NumberedServerVector & getDownstreamCandidates(const
      std::string& poolName)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:325,1
    - Dst: find
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:326,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:327,1
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:332,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:333,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:333,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:334,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:334,1
    - Dst: dnsdist::configuration::updateRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:337,1
    - Dst: d_pools::emplace
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:338,1
    - Dst: ServerPool
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:338,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:342,1
    - Dst: find
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:343,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 1
    argNames:
    - ' poolName'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 346
      start: 322
    functionDepth: 1
    functionLinenumber: 322
    functionLinenumberEnd: 346
    functionName: createPoolIfNotExists
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc
    functionUses: 0
    functionsReached:
    - dnsdist::configuration::getCurrentRuntimeConfiguration
    - Logging::Loggable
    - ServerPool
    - dnsdist::configuration::updateRuntimeConfiguration
    - end
    - VERBOSESLOG
    - infolog
    - d_pools::emplace
    - dnsdist::logging::getTopLogger
    - empty
    - find
    linkageType: ''
    returnType: ServerPool
    signature: ServerPool & createPoolIfNotExists(const string& poolName)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:350,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:351,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:351,1
    - Dst: std::shared_ptr<ServerPolicy>::getName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:351,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:352,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:352,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:352,1
    - Dst: std::shared_ptr<ServerPolicy>::getName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:352,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:355,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:355,1
    - Dst: std::shared_ptr<ServerPolicy>::getName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:355,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:356,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:356,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:356,1
    - Dst: std::shared_ptr<ServerPolicy>::getName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:356,1
    - Dst: dnsdist::configuration::updateRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:359,1
    - Dst: d_pools::emplace
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:360,1
    - Dst: ServerPool
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:360,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:361,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - ' poolName'
    - policy
    argTypes:
    - string
    - std::shared_ptr<ServerPolicy>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 363
      start: 348
    functionDepth: 1
    functionLinenumber: 348
    functionLinenumberEnd: 363
    functionName: setPoolPolicy
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc
    functionUses: 0
    functionsReached:
    - std::move
    - Logging::Loggable
    - ServerPool
    - std::shared_ptr<ServerPolicy>::getName
    - dnsdist::configuration::updateRuntimeConfiguration
    - VERBOSESLOG
    - infolog
    - d_pools::emplace
    - dnsdist::logging::getTopLogger
    - empty
    linkageType: ''
    returnType: void
    signature: void setPoolPolicy(const string& poolName, std::shared_ptr<ServerPolicy>
      policy)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:367,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:368,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:368,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:369,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:369,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:372,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:372,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:373,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:373,1
    - Dst: dnsdist::configuration::updateRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:376,1
    - Dst: d_pools::emplace
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:377,1
    - Dst: ServerPool
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:377,1
    - Dst: second::addServer
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:378,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - ' poolName'
    - server
    argTypes:
    - string
    - std::shared_ptr<DownstreamState>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 380
      start: 365
    functionDepth: 1
    functionLinenumber: 365
    functionLinenumberEnd: 380
    functionName: addServerToPool
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc
    functionUses: 0
    functionsReached:
    - Logging::Loggable
    - ServerPool
    - dnsdist::configuration::updateRuntimeConfiguration
    - VERBOSESLOG
    - infolog
    - d_pools::emplace
    - second::addServer
    - dnsdist::logging::getTopLogger
    - empty
    linkageType: ''
    returnType: void
    signature: void addServerToPool(const string& poolName, std::shared_ptr<DownstreamState>
      server)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:384,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:385,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:385,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:386,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:386,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:389,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:389,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:390,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:390,1
    - Dst: dnsdist::configuration::updateRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:393,1
    - Dst: d_pools::emplace
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:394,1
    - Dst: ServerPool
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:394,1
    - Dst: second::removeServer
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:395,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - ' poolName'
    - server
    argTypes:
    - string
    - std::shared_ptr<DownstreamState>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 397
      start: 382
    functionDepth: 1
    functionLinenumber: 382
    functionLinenumberEnd: 397
    functionName: removeServerFromPool
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc
    functionUses: 0
    functionsReached:
    - Logging::Loggable
    - ServerPool
    - dnsdist::configuration::updateRuntimeConfiguration
    - VERBOSESLOG
    - infolog
    - second::removeServer
    - d_pools::emplace
    - dnsdist::logging::getTopLogger
    - empty
    linkageType: ''
    returnType: void
    signature: void removeServerFromPool(const string& poolName, std::shared_ptr<DownstreamState>
      server)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:401,1
    - Dst: find
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:402,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:403,1
    - Dst: std::out_of_range
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:404,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:404,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - ' poolName'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 408
      start: 399
    functionDepth: 1
    functionLinenumber: 399
    functionLinenumberEnd: 408
    functionName: getPool
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc
    functionUses: 1
    functionsReached:
    - std::out_of_range
    - dnsdist::configuration::getCurrentRuntimeConfiguration
    - end
    - std::string
    - find
    linkageType: ''
    returnType: ServerPool
    signature: ServerPool & getPool(const std::string& poolName)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: setupLuaLoadBalancingContext
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:414,1
    - Dst: LuaContext::executeCode
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:415,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' name_'
    - ' code'
    argTypes:
    - std::string
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 416
      start: 410
    functionDepth: 2
    functionLinenumber: 410
    functionLinenumberEnd: 416
    functionName: ServerPolicy::ServerPolicy
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc
    functionUses: 0
    functionsReached:
    - setupLuaLoadBalancingContext
    - LuaContext::executeCode
    linkageType: ''
    returnType: void
    signature: void ServerPolicy::ServerPolicy(const std::string& name_, const std::string&
      code)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: std::make_unique<ServerPolicy::PerThreadState>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:430,1
    - Dst: setupLuaLoadBalancingContext
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:431,1
    - Dst: d_policies::find
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:434,1
    - Dst: d_policies::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:435,1
    - Dst: d_luaContext::executeCode
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:439,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:440,1
    - Dst: d_policies::at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:441,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 442
      start: 426
    functionDepth: 2
    functionLinenumber: 426
    functionLinenumberEnd: 442
    functionName: '& ServerPolicy::getPerThreadPolicy() const'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc
    functionUses: 0
    functionsReached:
    - std::make_unique<ServerPolicy::PerThreadState>
    - std::move
    - setupLuaLoadBalancingContext
    - d_policies::end
    - d_policies::at
    - d_luaContext::executeCode
    - d_policies::find
    linkageType: ''
    returnType: ServerPolicy::ffipolicyfunc_t
    signature: ServerPolicy::ffipolicyfunc_t & ServerPolicy::getPerThreadPolicy()
      const
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:452,1
    - Dst: d_policy
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:453,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:455,1
    - Dst: ServerPolicy::SelectedBackend::setSelected
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:456,1
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:466,1
    - Dst: d_ffipolicy
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:467,1
    - Dst: getPerThreadPolicy
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:470,1
    - Dst: policy
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:471,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:474,1
    - Dst: ServerPolicy::SelectedBackend::setSelected
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:479,1
    - Dst: d_policy
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:483,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:484,1
    - Dst: ServerPolicy::SelectedBackend::setSelected
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:485,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 25
    argCount: 2
    argNames:
    - ' servers'
    - ' dnsQuestion'
    argTypes:
    - ServerPolicy::NumberedServerVector
    - DNSQuestion
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 489
      start: 444
    functionDepth: 1
    functionLinenumber: 444
    functionLinenumberEnd: 489
    functionName: ServerPolicy::getSelectedBackend
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc
    functionUses: 0
    functionsReached:
    - d_ffipolicy
    - ServerPolicy::SelectedBackend::setSelected
    - size
    - lock
    - d_policy
    - policy
    - getPerThreadPolicy
    linkageType: ''
    returnType: ServerPolicy::SelectedBackend
    signature: ServerPolicy::SelectedBackend ServerPolicy::getSelectedBackend(const
      ServerPolicy::NumberedServerVector& servers, DNSQuestion& dnsQuestion) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<ServerPolicy>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:496,1
    - Dst: std::make_shared<ServerPolicy>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:497,1
    - Dst: std::make_shared<ServerPolicy>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:498,1
    - Dst: std::make_shared<ServerPolicy>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:499,1
    - Dst: std::make_shared<ServerPolicy>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:500,1
    - Dst: std::make_shared<ServerPolicy>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:501,1
    - Dst: std::make_shared<ServerPolicy>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:502,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 504
      start: 493
    functionDepth: 0
    functionLinenumber: 493
    functionLinenumberEnd: 504
    functionName: dnsdist::lbpolicies::getBuiltInPolicies
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc
    functionUses: 0
    functionsReached:
    - std::make_shared<ServerPolicy>
    linkageType: ''
    returnType: std::vector<std::shared_ptr<ServerPolicy>>
    signature: std::vector<std::shared_ptr<ServerPolicy>> & getBuiltInPolicies()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<ServerPolicy>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:496,1
    - Dst: std::make_shared<ServerPolicy>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:497,1
    - Dst: std::make_shared<ServerPolicy>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:498,1
    - Dst: std::make_shared<ServerPolicy>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:499,1
    - Dst: std::make_shared<ServerPolicy>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:500,1
    - Dst: std::make_shared<ServerPolicy>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:501,1
    - Dst: std::make_shared<ServerPolicy>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc:502,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 504
      start: 493
    functionDepth: 0
    functionLinenumber: 493
    functionLinenumberEnd: 504
    functionName: dnsdist::lbpolicies::getBuiltInPolicies
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc
    functionUses: 0
    functionsReached:
    - std::make_shared<ServerPolicy>
    linkageType: ''
    returnType: std::vector<std::shared_ptr<ServerPolicy>>
    signature: std::vector<std::shared_ptr<ServerPolicy>> & getBuiltInPolicies()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::unique_ptr<FDMultiplexer>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-upstream.hh:13,1
    - Dst: FDMultiplexer::getMultiplexerSilent
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-upstream.hh:13,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15
      start: 12
    functionDepth: 0
    functionLinenumber: 12
    functionLinenumberEnd: 15
    functionName: TCPClientThreadData::TCPClientThreadData
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-upstream.hh
    functionUses: 0
    functionsReached:
    - FDMultiplexer::getMultiplexerSilent
    - std::unique_ptr<FDMultiplexer>
    linkageType: ''
    returnType: void
    signature: void TCPClientThreadData()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-upstream.hh:45,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-upstream.hh:45,1
    - Dst: cs::tlsFrontend::getContext
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-upstream.hh:45,1
    - Dst: cs::dohFrontend::d_tlsContext::getContext
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-upstream.hh:45,1
    - Dst: make_unique<IOStateHandler>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-upstream.hh:45,1
    - Dst: dnsdist_ffi_dnsquestion_get_id
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-upstream.hh:45,1
    - Dst: reset
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-upstream.hh:47,1
    - Dst: getSocklen
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-upstream.hh:49,1
    - Dst: getsockname
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-upstream.hh:50,1
    - Dst: reinterpret_cast<sockaddr*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-upstream.hh:50,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 3
    argNames:
    - ' ci'
    - ' threadData'
    - ' now'
    argTypes:
    - ConnectionInfo
    - TCPClientThreadData
    - struct timeval
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 44
    functionDepth: 2
    functionLinenumber: 44
    functionLinenumberEnd: 60
    functionName: IncomingTCPConnectionState::IncomingTCPConnectionState
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-upstream.hh
    functionUses: 0
    functionsReached:
    - std::move
    - reset
    - dnsdist::configuration::getCurrentRuntimeConfiguration
    - make_unique<IOStateHandler>
    - cs::dohFrontend::d_tlsContext::getContext
    - dnsdist_ffi_dnsquestion_get_id
    - getsockname
    - cs::tlsFrontend::getContext
    - reinterpret_cast<sockaddr*>
    - getSocklen
    linkageType: ''
    returnType: void
    signature: void IncomingTCPConnectionState(ConnectionInfo&& ci, TCPClientThreadData&
      threadData, const struct timeval& now)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - IncomingTCPConnectionState
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 62
    functionDepth: 0
    functionLinenumber: 62
    functionLinenumberEnd: 62
    functionName: IncomingTCPConnectionState::IncomingTCPConnectionState
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-upstream.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void IncomingTCPConnectionState(const IncomingTCPConnectionState& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - IncomingTCPConnectionState
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 63
    functionDepth: 0
    functionLinenumber: 63
    functionLinenumberEnd: 63
    functionName: '& operator=(const IncomingTCPConnectionState& rhs)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-upstream.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: IncomingTCPConnectionState
    signature: IncomingTCPConnectionState & operator=(const IncomingTCPConnectionState&
      rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 105
    functionDepth: 0
    functionLinenumber: 105
    functionLinenumberEnd: 108
    functionName: IncomingTCPConnectionState::active
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-upstream.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool active() const override
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: cs::hasTLS
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-upstream.hh:111,1
    - Dst: cs::getTLSFrontend
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-upstream.hh:114,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 115
      start: 109
    functionDepth: 1
    functionLinenumber: 109
    functionLinenumberEnd: 115
    functionName: IncomingTCPConnectionState::isProxyPayloadOutsideTLS
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-upstream.hh
    functionUses: 0
    functionsReached:
    - cs::getTLSFrontend
    - cs::hasTLS
    linkageType: ''
    returnType: bool
    signature: bool isProxyPayloadOutsideTLS() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 117
    functionDepth: 0
    functionLinenumber: 117
    functionLinenumberEnd: 120
    functionName: IncomingTCPConnectionState::forwardViaUDPFirst
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-upstream.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool forwardViaUDPFirst() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-upstream.hh:124,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - streamID
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 125
      start: 121
    functionDepth: 0
    functionLinenumber: 121
    functionLinenumberEnd: 125
    functionName: IncomingTCPConnectionState::getDOHUnit
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-upstream.hh
    functionUses: 0
    functionsReached:
    - std::runtime_error
    linkageType: ''
    returnType: std::unique_ptr<DOHUnitInterface>
    signature: std::unique_ptr<DOHUnitInterface> getDOHUnit(uint32_t streamID)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-upstream.hh:128,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 129
      start: 126
    functionDepth: 0
    functionLinenumber: 126
    functionLinenumberEnd: 129
    functionName: IncomingTCPConnectionState::restoreDOHUnit
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-upstream.hh
    functionUses: 0
    functionsReached:
    - std::runtime_error
    linkageType: ''
    returnType: void
    signature: void restoreDOHUnit(std::unique_ptr<DOHUnitInterface>&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: remote::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-upstream.hh:136,1
    - Dst: getDescriptor
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-upstream.hh:136,1
    - Dst: getState
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-upstream.hh:136,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-upstream.hh:136,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-upstream.hh:136,1
    - Dst: ostringstream::str
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-upstream.hh:137,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 138
      start: 133
    functionDepth: 0
    functionLinenumber: 133
    functionLinenumberEnd: 138
    functionName: IncomingTCPConnectionState::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-upstream.hh
    functionUses: 0
    functionsReached:
    - remote::toStringWithPort
    - getState
    - size
    - ostringstream::str
    - getDescriptor
    linkageType: ''
    returnType: std::string
    signature: std::string toString() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hashPassword
      Src: /src/pdns/pdns/dnsdistdist/test-credentials_cc.cc:27,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-credentials_cc.cc:28,1
    - Dst: auto::empty
      Src: /src/pdns/pdns/dnsdistdist/test-credentials_cc.cc:28,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-credentials_cc.cc:30,1
    - Dst: verifyPassword
      Src: /src/pdns/pdns/dnsdistdist/test-credentials_cc.cc:30,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-credentials_cc.cc:31,1
    - Dst: verifyPassword
      Src: /src/pdns/pdns/dnsdistdist/test-credentials_cc.cc:31,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-credentials_cc.cc:33,1
    - Dst: verifyPassword
      Src: /src/pdns/pdns/dnsdistdist/test-credentials_cc.cc:33,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-credentials_cc.cc:34,1
    - Dst: verifyPassword
      Src: /src/pdns/pdns/dnsdistdist/test-credentials_cc.cc:34,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-credentials_cc.cc:35,1
    - Dst: verifyPassword
      Src: /src/pdns/pdns/dnsdistdist/test-credentials_cc.cc:35,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-credentials_cc.cc:37,1
    - Dst: isPasswordHashed
      Src: /src/pdns/pdns/dnsdistdist/test-credentials_cc.cc:37,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-credentials_cc.cc:38,1
    - Dst: isPasswordHashed
      Src: /src/pdns/pdns/dnsdistdist/test-credentials_cc.cc:38,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-credentials_cc.cc:39,1
    - Dst: isPasswordHashed
      Src: /src/pdns/pdns/dnsdistdist/test-credentials_cc.cc:39,1
    - Dst: hashPassword
      Src: /src/pdns/pdns/dnsdistdist/test-credentials_cc.cc:43,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-credentials_cc.cc:45,1
    - Dst: boost::starts_with
      Src: /src/pdns/pdns/dnsdistdist/test-credentials_cc.cc:45,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-credentials_cc.cc:47,1
    - Dst: verifyPassword
      Src: /src/pdns/pdns/dnsdistdist/test-credentials_cc.cc:47,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/dnsdistdist/test-credentials_cc.cc:52,1
    - Dst: hashPassword
      Src: /src/pdns/pdns/dnsdistdist/test-credentials_cc.cc:52,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/dnsdistdist/test-credentials_cc.cc:53,1
    - Dst: hashPassword
      Src: /src/pdns/pdns/dnsdistdist/test-credentials_cc.cc:53,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/dnsdistdist/test-credentials_cc.cc:54,1
    - Dst: hashPassword
      Src: /src/pdns/pdns/dnsdistdist/test-credentials_cc.cc:54,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-credentials_cc.cc:58,1
    - Dst: isPasswordHashed
      Src: /src/pdns/pdns/dnsdistdist/test-credentials_cc.cc:58,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-credentials_cc.cc:60,1
    - Dst: isPasswordHashed
      Src: /src/pdns/pdns/dnsdistdist/test-credentials_cc.cc:60,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-credentials_cc.cc:62,1
    - Dst: isPasswordHashed
      Src: /src/pdns/pdns/dnsdistdist/test-credentials_cc.cc:62,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-credentials_cc.cc:64,1
    - Dst: isPasswordHashed
      Src: /src/pdns/pdns/dnsdistdist/test-credentials_cc.cc:64,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-credentials_cc.cc:66,1
    - Dst: isPasswordHashed
      Src: /src/pdns/pdns/dnsdistdist/test-credentials_cc.cc:66,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-credentials_cc.cc:68,1
    - Dst: isPasswordHashed
      Src: /src/pdns/pdns/dnsdistdist/test-credentials_cc.cc:68,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-credentials_cc.cc:70,1
    - Dst: isPasswordHashed
      Src: /src/pdns/pdns/dnsdistdist/test-credentials_cc.cc:70,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-credentials_cc.cc:72,1
    - Dst: isPasswordHashed
      Src: /src/pdns/pdns/dnsdistdist/test-credentials_cc.cc:72,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-credentials_cc.cc:74,1
    - Dst: isPasswordHashed
      Src: /src/pdns/pdns/dnsdistdist/test-credentials_cc.cc:74,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-credentials_cc.cc:76,1
    - Dst: isPasswordHashed
      Src: /src/pdns/pdns/dnsdistdist/test-credentials_cc.cc:76,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-credentials_cc.cc:78,1
    - Dst: isPasswordHashed
      Src: /src/pdns/pdns/dnsdistdist/test-credentials_cc.cc:78,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-credentials_cc.cc:80,1
    - Dst: isPasswordHashed
      Src: /src/pdns/pdns/dnsdistdist/test-credentials_cc.cc:80,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-credentials_cc.cc:82,1
    - Dst: isPasswordHashed
      Src: /src/pdns/pdns/dnsdistdist/test-credentials_cc.cc:82,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/dnsdistdist/test-credentials_cc.cc:85,1
    - Dst: verifyPassword
      Src: /src/pdns/pdns/dnsdistdist/test-credentials_cc.cc:85,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/dnsdistdist/test-credentials_cc.cc:87,1
    - Dst: verifyPassword
      Src: /src/pdns/pdns/dnsdistdist/test-credentials_cc.cc:87,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/dnsdistdist/test-credentials_cc.cc:89,1
    - Dst: verifyPassword
      Src: /src/pdns/pdns/dnsdistdist/test-credentials_cc.cc:89,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/dnsdistdist/test-credentials_cc.cc:91,1
    - Dst: verifyPassword
      Src: /src/pdns/pdns/dnsdistdist/test-credentials_cc.cc:91,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/dnsdistdist/test-credentials_cc.cc:93,1
    - Dst: verifyPassword
      Src: /src/pdns/pdns/dnsdistdist/test-credentials_cc.cc:93,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/dnsdistdist/test-credentials_cc.cc:95,1
    - Dst: verifyPassword
      Src: /src/pdns/pdns/dnsdistdist/test-credentials_cc.cc:95,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/dnsdistdist/test-credentials_cc.cc:97,1
    - Dst: verifyPassword
      Src: /src/pdns/pdns/dnsdistdist/test-credentials_cc.cc:97,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/dnsdistdist/test-credentials_cc.cc:99,1
    - Dst: verifyPassword
      Src: /src/pdns/pdns/dnsdistdist/test-credentials_cc.cc:99,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/dnsdistdist/test-credentials_cc.cc:101,1
    - Dst: verifyPassword
      Src: /src/pdns/pdns/dnsdistdist/test-credentials_cc.cc:101,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/dnsdistdist/test-credentials_cc.cc:103,1
    - Dst: verifyPassword
      Src: /src/pdns/pdns/dnsdistdist/test-credentials_cc.cc:103,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/dnsdistdist/test-credentials_cc.cc:105,1
    - Dst: verifyPassword
      Src: /src/pdns/pdns/dnsdistdist/test-credentials_cc.cc:105,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 41
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 21
    functionDepth: 0
    functionLinenumber: 21
    functionLinenumberEnd: 106
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-credentials_cc.cc
    functionUses: 0
    functionsReached:
    - hashPassword
    - boost::starts_with
    - isPasswordHashed
    - BOOST_CHECK_THROW
    - BOOST_CHECK
    - verifyPassword
    - auto::empty
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_CredentialsUtils)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CredentialsHolder
      Src: /src/pdns/pdns/dnsdistdist/test-credentials_cc.cc:113,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/test-credentials_cc.cc:113,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-credentials_cc.cc:115,1
    - Dst: auto::matches
      Src: /src/pdns/pdns/dnsdistdist/test-credentials_cc.cc:115,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-credentials_cc.cc:116,1
    - Dst: auto::matches
      Src: /src/pdns/pdns/dnsdistdist/test-credentials_cc.cc:116,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-credentials_cc.cc:117,1
    - Dst: auto::wasHashed
      Src: /src/pdns/pdns/dnsdistdist/test-credentials_cc.cc:117,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-credentials_cc.cc:118,1
    - Dst: auto::isHashed
      Src: /src/pdns/pdns/dnsdistdist/test-credentials_cc.cc:118,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-credentials_cc.cc:121,1
    - Dst: CredentialsHolder::isHashingAvailable
      Src: /src/pdns/pdns/dnsdistdist/test-credentials_cc.cc:121,1
    - Dst: CredentialsHolder
      Src: /src/pdns/pdns/dnsdistdist/test-credentials_cc.cc:124,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/test-credentials_cc.cc:124,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-credentials_cc.cc:125,1
    - Dst: auto::wasHashed
      Src: /src/pdns/pdns/dnsdistdist/test-credentials_cc.cc:125,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-credentials_cc.cc:126,1
    - Dst: auto::isHashed
      Src: /src/pdns/pdns/dnsdistdist/test-credentials_cc.cc:126,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-credentials_cc.cc:127,1
    - Dst: auto::matches
      Src: /src/pdns/pdns/dnsdistdist/test-credentials_cc.cc:127,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-credentials_cc.cc:128,1
    - Dst: auto::matches
      Src: /src/pdns/pdns/dnsdistdist/test-credentials_cc.cc:128,1
    - Dst: CredentialsHolder
      Src: /src/pdns/pdns/dnsdistdist/test-credentials_cc.cc:130,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/test-credentials_cc.cc:130,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-credentials_cc.cc:131,1
    - Dst: auto::wasHashed
      Src: /src/pdns/pdns/dnsdistdist/test-credentials_cc.cc:131,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-credentials_cc.cc:132,1
    - Dst: auto::isHashed
      Src: /src/pdns/pdns/dnsdistdist/test-credentials_cc.cc:132,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-credentials_cc.cc:133,1
    - Dst: auto::matches
      Src: /src/pdns/pdns/dnsdistdist/test-credentials_cc.cc:133,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-credentials_cc.cc:134,1
    - Dst: auto::matches
      Src: /src/pdns/pdns/dnsdistdist/test-credentials_cc.cc:134,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-credentials_cc.cc:136,1
    - Dst: CredentialsHolder::isHashingAvailable
      Src: /src/pdns/pdns/dnsdistdist/test-credentials_cc.cc:136,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 138
      start: 109
    functionDepth: 0
    functionLinenumber: 109
    functionLinenumberEnd: 138
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-credentials_cc.cc
    functionUses: 0
    functionsReached:
    - auto::isHashed
    - auto::wasHashed
    - auto::matches
    - CredentialsHolder::isHashingAvailable
    - CredentialsHolder
    - std::string
    - BOOST_CHECK
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_CredentialsHolder)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-credentials_cc.cc:144,1
    - Dst: SensitiveData::getString
      Src: /src/pdns/pdns/dnsdistdist/test-credentials_cc.cc:144,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/test-credentials_cc.cc:147,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-credentials_cc.cc:148,1
    - Dst: SensitiveData::getString
      Src: /src/pdns/pdns/dnsdistdist/test-credentials_cc.cc:148,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-credentials_cc.cc:149,1
    - Dst: SensitiveData::getString
      Src: /src/pdns/pdns/dnsdistdist/test-credentials_cc.cc:149,1
    - Dst: SensitiveData::clear
      Src: /src/pdns/pdns/dnsdistdist/test-credentials_cc.cc:151,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-credentials_cc.cc:152,1
    - Dst: SensitiveData::getString
      Src: /src/pdns/pdns/dnsdistdist/test-credentials_cc.cc:152,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 153
      start: 140
    functionDepth: 0
    functionLinenumber: 140
    functionLinenumberEnd: 153
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-credentials_cc.cc
    functionUses: 0
    functionsReached:
    - SensitiveData::clear
    - std::move
    - SensitiveData::getString
    - BOOST_CHECK_EQUAL
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_SensitiveData)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 92
    functionDepth: 0
    functionLinenumber: 92
    functionLinenumberEnd: 95
    functionName: getNumberOfShards
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rings.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: size_t getNumberOfShards() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 97
    functionDepth: 0
    functionLinenumber: 97
    functionLinenumberEnd: 100
    functionName: getNumberOfQueryEntries
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rings.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: size_t getNumberOfQueryEntries() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 102
    functionDepth: 0
    functionLinenumber: 102
    functionLinenumberEnd: 105
    functionName: getNumberOfResponseEntries
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rings.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: size_t getNumberOfResponseEntries() const
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: shouldSkipQueryDueToSampling
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rings.hh:109,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rings.hh:112,1
    - Dst: dnsdist::MacAddressesCache::get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rings.hh:116,1
    - Dst: dnsdist::MacAddress::data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rings.hh:116,1
    - Dst: dnsdist::MacAddress::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rings.hh:116,1
    - Dst: getOneShard
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rings.hh:121,1
    - Dst: queryRing::try_lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rings.hh:124,1
    - Dst: auto::owns_lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rings.hh:125,1
    - Dst: insertQueryLocked
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rings.hh:132,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rings.hh:132,1
    - Dst: insertQueryLocked
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rings.hh:134,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rings.hh:134,1
    - Dst: getOneShard
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rings.hh:148,1
    - Dst: queryRing::lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rings.hh:151,1
    - Dst: insertQueryLocked
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rings.hh:153,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rings.hh:153,1
    - Dst: insertQueryLocked
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rings.hh:155,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rings.hh:155,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 31
    argCount: 7
    argNames:
    - ' when'
    - ' requestor'
    - ' name'
    - qtype
    - size
    - ' dh'
    - protocol
    argTypes:
    - struct timespec
    - ComboAddress
    - DNSName
    - uint16_t
    - uint16_t
    - struct dnsheader
    - dnsdist::Protocol
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 161
      start: 107
    functionDepth: 1
    functionLinenumber: 107
    functionLinenumberEnd: 161
    functionName: insertQuery
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rings.hh
    functionUses: 0
    functionsReached:
    - std::move
    - getOneShard
    - queryRing::lock
    - queryRing::try_lock
    - dnsdist::MacAddressesCache::get
    - DNSName
    - auto::owns_lock
    - insertQueryLocked
    - dnsdist::MacAddress::data
    - dnsdist::MacAddress::size
    - shouldSkipQueryDueToSampling
    linkageType: ''
    returnType: void
    signature: void insertQuery(const struct timespec& when, const ComboAddress& requestor,
      const DNSName& name, uint16_t qtype, uint16_t size, const struct dnsheader&
      dh, dnsdist::Protocol protocol)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: shouldSkipResponseDueToSampling
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rings.hh:165,1
    - Dst: getOneShard
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rings.hh:169,1
    - Dst: respRing::try_lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rings.hh:172,1
    - Dst: auto::owns_lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rings.hh:173,1
    - Dst: insertResponseLocked
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rings.hh:179,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rings.hh:179,1
    - Dst: getOneShard
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rings.hh:191,1
    - Dst: respRing::lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rings.hh:194,1
    - Dst: insertResponseLocked
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rings.hh:195,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rings.hh:195,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 26
    argCount: 9
    argNames:
    - ' when'
    - ' requestor'
    - ' name'
    - qtype
    - usec
    - size
    - ' dh'
    - ' backend'
    - protocol
    argTypes:
    - struct timespec
    - ComboAddress
    - DNSName
    - uint16_t
    - unsigned int
    - unsigned int
    - struct dnsheader
    - ComboAddress
    - dnsdist::Protocol
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 200
      start: 163
    functionDepth: 1
    functionLinenumber: 163
    functionLinenumberEnd: 200
    functionName: insertResponse
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rings.hh
    functionUses: 0
    functionsReached:
    - std::move
    - getOneShard
    - respRing::try_lock
    - insertResponseLocked
    - auto::owns_lock
    - shouldSkipResponseDueToSampling
    - respRing::lock
    linkageType: ''
    returnType: void
    signature: void insertResponse(const struct timespec& when, const ComboAddress&
      requestor, DNSName&& name, uint16_t qtype, unsigned int usec, unsigned int size,
      const struct dnsheader& dh, const ComboAddress& backend, dnsdist::Protocol protocol)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: queryRing::lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rings.hh:205,1
    - Dst: respRing::lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rings.hh:206,1
    - Dst: store
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rings.hh:209,1
    - Dst: store
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rings.hh:210,1
    - Dst: store
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rings.hh:211,1
    - Dst: store
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rings.hh:212,1
    - Dst: store
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rings.hh:213,1
    - Dst: store
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rings.hh:214,1
    - Dst: store
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rings.hh:215,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 216
      start: 202
    functionDepth: 0
    functionLinenumber: 202
    functionLinenumberEnd: 216
    functionName: clear
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rings.hh
    functionUses: 185
    functionsReached:
    - queryRing::lock
    - respRing::lock
    - store
    linkageType: ''
    returnType: void
    signature: void clear()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: clear
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rings.hh:221,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 226
      start: 219
    functionDepth: 1
    functionLinenumber: 219
    functionLinenumberEnd: 226
    functionName: reset
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rings.hh
    functionUses: 62
    functionsReached:
    - clear
    linkageType: ''
    returnType: void
    signature: void reset()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 235
      start: 232
    functionDepth: 0
    functionLinenumber: 232
    functionLinenumberEnd: 235
    functionName: shouldRecordQueries
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rings.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool shouldRecordQueries() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 240
      start: 237
    functionDepth: 0
    functionLinenumber: 237
    functionLinenumberEnd: 240
    functionName: shouldRecordResponses
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rings.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool shouldRecordResponses() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 245
      start: 242
    functionDepth: 0
    functionLinenumber: 242
    functionLinenumberEnd: 245
    functionName: getSamplingRate
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rings.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: size_t getSamplingRate() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: getSamplingRate
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rings.hh:249,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - count
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 254
      start: 247
    functionDepth: 1
    functionLinenumber: 247
    functionLinenumberEnd: 254
    functionName: adjustForSamplingRate
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rings.hh
    functionUses: 0
    functionsReached:
    - getSamplingRate
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t adjustForSamplingRate(uint32_t count) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 266
      start: 263
    functionDepth: 0
    functionLinenumber: 263
    functionLinenumberEnd: 266
    functionName: getShardId
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rings.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: size_t getShardId()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getShardId
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rings.hh:270,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 271
      start: 268
    functionDepth: 1
    functionLinenumber: 268
    functionLinenumberEnd: 271
    functionName: '& getOneShard()'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rings.hh
    functionUses: 0
    functionsReached:
    - getShardId
    linkageType: ''
    returnType: std::unique_ptr<Shard>
    signature: std::unique_ptr<Shard> & getOneShard()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: full
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rings.hh:279,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rings.hh:281,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rings.hh:283,1
    - Dst: Rings::Query::macaddress::data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rings.hh:283,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rings.hh:283,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rings.hh:283,1
    - Dst: push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rings.hh:285,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rings.hh:285,1
    - Dst: push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rings.hh:287,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rings.hh:287,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 8
    argNames:
    - ' ring'
    - ' when'
    - ' requestor'
    - ' name'
    - qtype
    - size
    - ' dh'
    - protocol
    argTypes:
    - boost::circular_buffer<Query>
    - struct timespec
    - ComboAddress
    - DNSName
    - uint16_t
    - uint16_t
    - struct dnsheader
    - dnsdist::Protocol
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 290
      start: 276
    functionDepth: 0
    functionLinenumber: 276
    functionLinenumberEnd: 290
    functionName: insertQueryLocked
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rings.hh
    functionUses: 1
    functionsReached:
    - memcpy
    - std::move
    - full
    - push_back
    - size
    - data
    - Rings::Query::macaddress::data
    linkageType: ''
    returnType: bool
    signature: bool insertQueryLocked(boost::circular_buffer<Query>& ring, const struct
      timespec& when, const ComboAddress& requestor, DNSName&& name, uint16_t qtype,
      uint16_t size, const struct dnsheader& dh, dnsdist::Protocol protocol)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: full
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rings.hh:294,1
    - Dst: push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rings.hh:295,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rings.hh:295,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 10
    argNames:
    - ' ring'
    - ' when'
    - ' requestor'
    - ' name'
    - qtype
    - usec
    - size
    - ' dh'
    - ' backend'
    - protocol
    argTypes:
    - boost::circular_buffer<Response>
    - struct timespec
    - ComboAddress
    - DNSName
    - uint16_t
    - unsigned int
    - uint16_t
    - struct dnsheader
    - ComboAddress
    - dnsdist::Protocol
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 297
      start: 292
    functionDepth: 0
    functionLinenumber: 292
    functionLinenumberEnd: 297
    functionName: insertResponseLocked
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rings.hh
    functionUses: 1
    functionsReached:
    - push_back
    - std::move
    - full
    linkageType: ''
    returnType: bool
    signature: bool insertResponseLocked(boost::circular_buffer<Response>& ring, const
      struct timespec& when, const ComboAddress& requestor, DNSName&& name, uint16_t
      qtype, unsigned int usec, uint16_t size, const struct dnsheader& dh, const ComboAddress&
      backend, dnsdist::Protocol protocol)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 306
      start: 299
    functionDepth: 0
    functionLinenumber: 299
    functionLinenumberEnd: 306
    functionName: shouldSkipQueryDueToSampling
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rings.hh
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool shouldSkipQueryDueToSampling()
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 315
      start: 308
    functionDepth: 0
    functionLinenumber: 308
    functionLinenumberEnd: 315
    functionName: shouldSkipResponseDueToSampling
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rings.hh
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool shouldSkipResponseDueToSampling()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - ProxyProtocolValue
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 35
      start: 32
    functionDepth: 0
    functionLinenumber: 32
    functionLinenumberEnd: 35
    functionName: operator==(const ProxyProtocolValue& rhs) const
    functionSourceFile: /src/pdns/pdns/dnsdistdist/proxy-protocol.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool operator==(const ProxyProtocolValue& rhs) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' a'
    - ' b'
    argTypes:
    - struct timespec
    - struct timespec
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 69
    functionDepth: 0
    functionLinenumber: 69
    functionLinenumberEnd: 72
    functionName: DelayPipe::tsdelta
    functionSourceFile: /src/pdns/pdns/dnsdistdist/delaypipe.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: double
    signature: double tsdelta(const struct timespec& a, const struct timespec& b)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::tie
      Src: /src/pdns/pdns/dnsdistdist/delaypipe.hh:79,1
    - Dst: std::tie
      Src: /src/pdns/pdns/dnsdistdist/delaypipe.hh:79,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' a'
    - ' b'
    argTypes:
    - struct timespec
    - struct timespec
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 77
    functionDepth: 0
    functionLinenumber: 77
    functionLinenumberEnd: 80
    functionName: operator()(const struct timespec& a, const struct timespec& b) const
    functionSourceFile: /src/pdns/pdns/dnsdistdist/delaypipe.hh
    functionUses: 0
    functionsReached:
    - std::tie
    linkageType: ''
    returnType: bool
    signature: bool operator()(const struct timespec& a, const struct timespec& b)
      const
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: locateEDNSOptRR
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-edns.cc:36,1
    - Dst: isEDNSOptionInOpt
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-edns.cc:47,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-edns.cc:50,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-edns.cc:50,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-edns.cc:51,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-edns.cc:54,1
    - Dst: std::optional::resize
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-edns.cc:55,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-edns.cc:56,1
    - Dst: std::optional::data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-edns.cc:56,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-edns.cc:56,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-edns.cc:58,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 1
    argNames:
    - ' packet'
    argTypes:
    - PacketBuffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 30
    functionDepth: 1
    functionLinenumber: 30
    functionLinenumberEnd: 59
    functionName: dnsdist::edns::getExtendedDNSError
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-edns.cc
    functionUses: 0
    functionsReached:
    - std::optional::data
    - memcpy
    - std::move
    - locateEDNSOptRR
    - at
    - ntohs
    - std::optional::resize
    - std::string
    - isEDNSOptionInOpt
    linkageType: ''
    returnType: std::pair<std::optional<uint16_t>, std::optional<std::string>>
    signature: std::pair<std::optional<uint16_t>, std::optional<std::string>> getExtendedDNSError(const
      PacketBuffer& packet)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: locateEDNSOptRR
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-edns.cc:67,1
    - Dst: makeEDNSExtendedErrorOptString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-edns.cc:75,1
    - Dst: generateEDNSOption
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-edns.cc:77,1
    - Dst: slowRewriteEDNSOptionInQueryWithRecords
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-edns.cc:82,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-edns.cc:86,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-edns.cc:90,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 3
    argNames:
    - ' packet'
    - maximumPacketSize
    - ' setErrorOp'
    argTypes:
    - PacketBuffer
    - size_t
    - SetExtendedDNSErrorOperation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 61
    functionDepth: 1
    functionLinenumber: 61
    functionLinenumberEnd: 92
    functionName: dnsdist::edns::addExtendedDNSError
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-edns.cc
    functionUses: 0
    functionsReached:
    - std::move
    - locateEDNSOptRR
    - PacketBuffer::size
    - makeEDNSExtendedErrorOptString
    - generateEDNSOption
    - slowRewriteEDNSOptionInQueryWithRecords
    linkageType: ''
    returnType: bool
    signature: bool addExtendedDNSError(PacketBuffer& packet, size_t maximumPacketSize,
      const SetExtendedDNSErrorOperation& setErrorOp)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: locateEDNSOptRR
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-edns.cc:100,1
    - Dst: isEDNSOptionInOpt
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-edns.cc:107,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-edns.cc:112,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-edns.cc:117,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-edns.cc:120,1
    - Dst: std::min
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-edns.cc:123,1
    - Dst: makeEDNSPaddingOptString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-edns.cc:126,1
    - Dst: generateEDNSOption
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-edns.cc:128,1
    - Dst: slowRewriteEDNSOptionInQueryWithRecords
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-edns.cc:135,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-edns.cc:139,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-edns.cc:143,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 22
    argCount: 2
    argNames:
    - ' packet'
    - maximumPacketSize
    argTypes:
    - PacketBuffer
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 145
      start: 94
    functionDepth: 1
    functionLinenumber: 94
    functionLinenumberEnd: 145
    functionName: dnsdist::edns::addEDNSPadding
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-edns.cc
    functionUses: 0
    functionsReached:
    - std::move
    - locateEDNSOptRR
    - std::min
    - size
    - makeEDNSPaddingOptString
    - PacketBuffer::size
    - generateEDNSOption
    - isEDNSOptionInOpt
    - slowRewriteEDNSOptionInQueryWithRecords
    linkageType: ''
    returnType: bool
    signature: bool addEDNSPadding(PacketBuffer& packet, size_t maximumPacketSize)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: locateEDNSOptRR
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-edns.cc:36,1
    - Dst: isEDNSOptionInOpt
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-edns.cc:47,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-edns.cc:50,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-edns.cc:50,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-edns.cc:51,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-edns.cc:54,1
    - Dst: std::optional::resize
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-edns.cc:55,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-edns.cc:56,1
    - Dst: std::optional::data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-edns.cc:56,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-edns.cc:56,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-edns.cc:58,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 1
    argNames:
    - ' packet'
    argTypes:
    - PacketBuffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 30
    functionDepth: 1
    functionLinenumber: 30
    functionLinenumberEnd: 59
    functionName: dnsdist::edns::getExtendedDNSError
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-edns.cc
    functionUses: 0
    functionsReached:
    - std::optional::data
    - memcpy
    - std::move
    - locateEDNSOptRR
    - at
    - ntohs
    - std::optional::resize
    - std::string
    - isEDNSOptionInOpt
    linkageType: ''
    returnType: std::pair<std::optional<uint16_t>, std::optional<std::string>>
    signature: std::pair<std::optional<uint16_t>, std::optional<std::string>> getExtendedDNSError(const
      PacketBuffer& packet)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: locateEDNSOptRR
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-edns.cc:67,1
    - Dst: makeEDNSExtendedErrorOptString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-edns.cc:75,1
    - Dst: generateEDNSOption
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-edns.cc:77,1
    - Dst: slowRewriteEDNSOptionInQueryWithRecords
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-edns.cc:82,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-edns.cc:86,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-edns.cc:90,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 3
    argNames:
    - ' packet'
    - maximumPacketSize
    - ' setErrorOp'
    argTypes:
    - PacketBuffer
    - size_t
    - SetExtendedDNSErrorOperation
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 61
    functionDepth: 1
    functionLinenumber: 61
    functionLinenumberEnd: 92
    functionName: dnsdist::edns::addExtendedDNSError
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-edns.cc
    functionUses: 0
    functionsReached:
    - std::move
    - locateEDNSOptRR
    - PacketBuffer::size
    - makeEDNSExtendedErrorOptString
    - generateEDNSOption
    - slowRewriteEDNSOptionInQueryWithRecords
    linkageType: ''
    returnType: bool
    signature: bool addExtendedDNSError(PacketBuffer& packet, size_t maximumPacketSize,
      const SetExtendedDNSErrorOperation& setErrorOp)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: locateEDNSOptRR
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-edns.cc:100,1
    - Dst: isEDNSOptionInOpt
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-edns.cc:107,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-edns.cc:112,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-edns.cc:117,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-edns.cc:120,1
    - Dst: std::min
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-edns.cc:123,1
    - Dst: makeEDNSPaddingOptString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-edns.cc:126,1
    - Dst: generateEDNSOption
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-edns.cc:128,1
    - Dst: slowRewriteEDNSOptionInQueryWithRecords
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-edns.cc:135,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-edns.cc:139,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-edns.cc:143,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 22
    argCount: 2
    argNames:
    - ' packet'
    - maximumPacketSize
    argTypes:
    - PacketBuffer
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 145
      start: 94
    functionDepth: 1
    functionLinenumber: 94
    functionLinenumberEnd: 145
    functionName: dnsdist::edns::addEDNSPadding
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-edns.cc
    functionUses: 0
    functionsReached:
    - std::move
    - locateEDNSOptRR
    - std::min
    - size
    - makeEDNSPaddingOptString
    - PacketBuffer::size
    - generateEDNSOption
    - isEDNSOptionInOpt
    - slowRewriteEDNSOptionInQueryWithRecords
    linkageType: ''
    returnType: bool
    signature: bool addEDNSPadding(PacketBuffer& packet, size_t maximumPacketSize)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 35
      start: 35
    functionDepth: 0
    functionLinenumber: 35
    functionLinenumberEnd: 35
    functionName: RemoteLoggerPool::RemoteLoggerPool
    functionSourceFile: /src/pdns/pdns/dnsdistdist/remote_logger_pool.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void RemoteLoggerPool(const RemoteLoggerPool&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 36
      start: 36
    functionDepth: 0
    functionLinenumber: 36
    functionLinenumberEnd: 36
    functionName: RemoteLoggerPool::RemoteLoggerPool
    functionSourceFile: /src/pdns/pdns/dnsdistdist/remote_logger_pool.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void RemoteLoggerPool(RemoteLoggerPool&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 37
    functionDepth: 0
    functionLinenumber: 37
    functionLinenumberEnd: 37
    functionName: '& operator=(const RemoteLoggerPool&)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/remote_logger_pool.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: RemoteLoggerPool
    signature: RemoteLoggerPool & operator=(const RemoteLoggerPool&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 38
    functionDepth: 0
    functionLinenumber: 38
    functionLinenumberEnd: 38
    functionName: '& operator=(RemoteLoggerPool&&)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/remote_logger_pool.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: RemoteLoggerPool
    signature: RemoteLoggerPool & operator=(RemoteLoggerPool&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 41
    functionDepth: 0
    functionLinenumber: 41
    functionLinenumberEnd: 44
    functionName: RemoteLoggerPool::address
    functionSourceFile: /src/pdns/pdns/dnsdistdist/remote_logger_pool.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string address() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/remote_logger_pool.hh:48,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/remote_logger_pool.hh:48,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 46
    functionDepth: 0
    functionLinenumber: 46
    functionLinenumberEnd: 49
    functionName: RemoteLoggerPool::name
    functionSourceFile: /src/pdns/pdns/dnsdistdist/remote_logger_pool.hh
    functionUses: 0
    functionsReached:
    - std::to_string
    - size
    linkageType: ''
    returnType: std::string
    signature: std::string name() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RemoteLoggerPool::getStats
      Src: /src/pdns/pdns/dnsdistdist/remote_logger_pool.hh:57,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 53
    functionDepth: 0
    functionLinenumber: 53
    functionLinenumberEnd: 60
    functionName: RemoteLoggerPool::getStats
    functionSourceFile: /src/pdns/pdns/dnsdistdist/remote_logger_pool.hh
    functionUses: 3
    functionsReached:
    - RemoteLoggerPool::getStats
    linkageType: ''
    returnType: RemoteLoggerInterface::Stats
    signature: RemoteLoggerInterface::Stats getStats() override
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: getLocal
      Src: /src/pdns/pdns/dnsdistdist/test-sholder_hh.cc:26,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/test-sholder_hh.cc:29,1
    - Dst: store
      Src: /src/pdns/pdns/dnsdistdist/test-sholder_hh.cc:30,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 34
      start: 24
    functionDepth: 0
    functionLinenumber: 24
    functionLinenumberEnd: 34
    functionName: treader
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-sholder_hh.cc
    functionUses: 0
    functionsReached:
    - getLocal
    - store
    - std::to_string
    linkageType: ''
    returnType: void
    signature: void treader()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: setState
      Src: /src/pdns/pdns/dnsdistdist/test-sholder_hh.cc:38,1
    - Dst: setState
      Src: /src/pdns/pdns/dnsdistdist/test-sholder_hh.cc:42,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/test-sholder_hh.cc:42,1
    - Dst: modify
      Src: /src/pdns/pdns/dnsdistdist/test-sholder_hh.cc:43,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/test-sholder_hh.cc:43,1
    - Dst: std::thread::join
      Src: /src/pdns/pdns/dnsdistdist/test-sholder_hh.cc:45,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-sholder_hh.cc:46,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 36
    functionDepth: 0
    functionLinenumber: 36
    functionLinenumberEnd: 47
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-sholder_hh.cc
    functionUses: 0
    functionsReached:
    - setState
    - modify
    - std::to_string
    - std::thread::join
    - BOOST_CHECK_EQUAL
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_sholder)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/packetcache.hh:38,1
    - Dst: assert
      Src: /src/pdns/pdns/dnsdistdist/packetcache.hh:39,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/packetcache.hh:47,1
    - Dst: dnsheader_aligned::get
      Src: /src/pdns/pdns/dnsdistdist/packetcache.hh:48,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/packetcache.hh:49,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/packetcache.hh:49,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/packetcache.hh:49,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/packetcache.hh:49,1
    - Dst: burtle
      Src: /src/pdns/pdns/dnsdistdist/packetcache.hh:51,1
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/dnsdistdist/packetcache.hh:51,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/packetcache.hh:51,1
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/packetcache.hh:56,1
    - Dst: burtle
      Src: /src/pdns/pdns/dnsdistdist/packetcache.hh:57,1
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/dnsdistdist/packetcache.hh:57,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/packetcache.hh:57,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/packetcache.hh:60,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/packetcache.hh:60,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/packetcache.hh:61,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/packetcache.hh:61,1
    - Dst: std::upper_bound
      Src: /src/pdns/pdns/dnsdistdist/packetcache.hh:62,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/packetcache.hh:62,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/packetcache.hh:62,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/packetcache.hh:63,1
    - Dst: burtle
      Src: /src/pdns/pdns/dnsdistdist/packetcache.hh:68,1
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/dnsdistdist/packetcache.hh:68,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/packetcache.hh:68,1
    - Dst: static_cast<uint16_t>
      Src: /src/pdns/pdns/dnsdistdist/packetcache.hh:79,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/packetcache.hh:79,1
    - Dst: static_cast<uint16_t>
      Src: /src/pdns/pdns/dnsdistdist/packetcache.hh:79,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/packetcache.hh:79,1
    - Dst: burtle
      Src: /src/pdns/pdns/dnsdistdist/packetcache.hh:86,1
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/dnsdistdist/packetcache.hh:86,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/packetcache.hh:86,1
    - Dst: getNextEDNSOption
      Src: /src/pdns/pdns/dnsdistdist/packetcache.hh:95,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/packetcache.hh:95,1
    - Dst: burtle
      Src: /src/pdns/pdns/dnsdistdist/packetcache.hh:98,1
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/dnsdistdist/packetcache.hh:98,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/packetcache.hh:98,1
    - Dst: count
      Src: /src/pdns/pdns/dnsdistdist/packetcache.hh:103,1
    - Dst: burtle
      Src: /src/pdns/pdns/dnsdistdist/packetcache.hh:105,1
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/dnsdistdist/packetcache.hh:105,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/packetcache.hh:105,1
    - Dst: burtle
      Src: /src/pdns/pdns/dnsdistdist/packetcache.hh:109,1
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/dnsdistdist/packetcache.hh:109,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/packetcache.hh:109,1
    - Dst: burtle
      Src: /src/pdns/pdns/dnsdistdist/packetcache.hh:117,1
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/dnsdistdist/packetcache.hh:117,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/packetcache.hh:117,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 48
    argCount: 3
    argNames:
    - ' packet'
    - currentHash
    - pos
    argTypes:
    - std::string_view
    - uint32_t
    - size_t
    assertStmts:
    - condition: (packetSize >= sizeof(dnsheader))
      pos:
        line_end: 38
        line_start: 38
        source_file: /src/pdns/pdns/dnsdistdist/packetcache.hh
    constantsTouched: []
    func_position:
      end: 121
      start: 36
    functionDepth: 0
    functionLinenumber: 36
    functionLinenumberEnd: 121
    functionName: PacketCache::hashAfterQname
    functionSourceFile: /src/pdns/pdns/dnsdistdist/packetcache.hh
    functionUses: 1
    functionsReached:
    - dnsheader_aligned::get
    - ntohs
    - count
    - end
    - assert
    - size
    - begin
    - empty
    - reinterpret_cast<const unsigned char*>
    - std::vector::at
    - std::upper_bound
    - static_cast<uint16_t>
    - data
    - burtle
    - getNextEDNSOption
    - at
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t hashAfterQname(const std::string_view& packet, uint32_t currentHash,
      size_t pos, const std::unordered_set<uint16_t>& optionsToSkip = {EDNSOptionCode::COOKIE},
      const std::vector<uint16_t>& payloadRanks = {})
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/packetcache.hh:125,1
    - Dst: assert
      Src: /src/pdns/pdns/dnsdistdist/packetcache.hh:126,1
    - Dst: burtle
      Src: /src/pdns/pdns/dnsdistdist/packetcache.hh:131,1
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/dnsdistdist/packetcache.hh:131,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/packetcache.hh:131,1
    - Dst: static_cast<unsigned char>
      Src: /src/pdns/pdns/dnsdistdist/packetcache.hh:134,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/packetcache.hh:134,1
    - Dst: std::min
      Src: /src/pdns/pdns/dnsdistdist/packetcache.hh:139,1
    - Dst: burtleCI
      Src: /src/pdns/pdns/dnsdistdist/packetcache.hh:141,1
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/dnsdistdist/packetcache.hh:141,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/packetcache.hh:141,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - ' packet'
    - ' pos'
    argTypes:
    - std::string
    - size_t
    assertStmts:
    - condition: (packetSize >= sizeof(dnsheader))
      pos:
        line_end: 125
        line_start: 125
        source_file: /src/pdns/pdns/dnsdistdist/packetcache.hh
    constantsTouched: []
    func_position:
      end: 142
      start: 123
    functionDepth: 0
    functionLinenumber: 123
    functionLinenumberEnd: 142
    functionName: PacketCache::hashHeaderAndQName
    functionSourceFile: /src/pdns/pdns/dnsdistdist/packetcache.hh
    functionUses: 1
    functionsReached:
    - burtleCI
    - std::min
    - assert
    - size
    - reinterpret_cast<const unsigned char*>
    - burtle
    - at
    - static_cast<unsigned char>
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t hashHeaderAndQName(const std::string& packet, size_t& pos)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PacketCache::hashHeaderAndQName
      Src: /src/pdns/pdns/dnsdistdist/packetcache.hh:152,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/packetcache.hh:154,1
    - Dst: PacketCache::hashAfterQname
      Src: /src/pdns/pdns/dnsdistdist/packetcache.hh:158,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ' packet'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 159
      start: 149
    functionDepth: 0
    functionLinenumber: 149
    functionLinenumberEnd: 159
    functionName: PacketCache::canHashPacket
    functionSourceFile: /src/pdns/pdns/dnsdistdist/packetcache.hh
    functionUses: 6
    functionsReached:
    - PacketCache::hashHeaderAndQName
    - size
    - PacketCache::hashAfterQname
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t canHashPacket(const std::string& packet, const std::unordered_set<uint16_t>&
      optionsToSkip = {EDNSOptionCode::COOKIE})
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/packetcache.hh:163,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/packetcache.hh:163,1
    - Dst: compare
      Src: /src/pdns/pdns/dnsdistdist/packetcache.hh:167,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - ' cachedQuery'
    - ' query'
    argTypes:
    - std::string
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 168
      start: 161
    functionDepth: 0
    functionLinenumber: 161
    functionLinenumberEnd: 168
    functionName: PacketCache::queryHeaderMatches
    functionSourceFile: /src/pdns/pdns/dnsdistdist/packetcache.hh
    functionUses: 1
    functionsReached:
    - compare
    - size
    linkageType: ''
    returnType: bool
    signature: bool queryHeaderMatches(const std::string& cachedQuery, const std::string&
      query)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/packetcache.hh:172,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/packetcache.hh:173,1
    - Dst: PacketCache::queryHeaderMatches
      Src: /src/pdns/pdns/dnsdistdist/packetcache.hh:178,1
    - Dst: wirelength
      Src: /src/pdns/pdns/dnsdistdist/packetcache.hh:182,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/packetcache.hh:189,1
    - Dst: dnsheader_aligned::get
      Src: /src/pdns/pdns/dnsdistdist/packetcache.hh:190,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/packetcache.hh:191,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/packetcache.hh:191,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/packetcache.hh:191,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/packetcache.hh:191,1
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/packetcache.hh:191,1
    - Dst: compare
      Src: /src/pdns/pdns/dnsdistdist/packetcache.hh:192,1
    - Dst: compare
      Src: /src/pdns/pdns/dnsdistdist/packetcache.hh:196,1
    - Dst: static_cast<unsigned char>
      Src: /src/pdns/pdns/dnsdistdist/packetcache.hh:205,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/packetcache.hh:205,1
    - Dst: static_cast<unsigned char>
      Src: /src/pdns/pdns/dnsdistdist/packetcache.hh:205,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/packetcache.hh:205,1
    - Dst: compare
      Src: /src/pdns/pdns/dnsdistdist/packetcache.hh:212,1
    - Dst: getNextEDNSOption
      Src: /src/pdns/pdns/dnsdistdist/packetcache.hh:219,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/packetcache.hh:219,1
    - Dst: compare
      Src: /src/pdns/pdns/dnsdistdist/packetcache.hh:221,1
    - Dst: compare
      Src: /src/pdns/pdns/dnsdistdist/packetcache.hh:225,1
    - Dst: count
      Src: /src/pdns/pdns/dnsdistdist/packetcache.hh:231,1
    - Dst: compare
      Src: /src/pdns/pdns/dnsdistdist/packetcache.hh:232,1
    - Dst: compare
      Src: /src/pdns/pdns/dnsdistdist/packetcache.hh:244,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 39
    argCount: 4
    argNames:
    - ' cachedQuery'
    - ' query'
    - ' qname'
    - ' optionsToIgnore'
    argTypes:
    - std::string
    - std::string
    - DNSName
    - std::unordered_set<uint16_t>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 245
      start: 170
    functionDepth: 0
    functionLinenumber: 170
    functionLinenumberEnd: 245
    functionName: PacketCache::queryMatches
    functionSourceFile: /src/pdns/pdns/dnsdistdist/packetcache.hh
    functionUses: 3
    functionsReached:
    - wirelength
    - dnsheader_aligned::get
    - ntohs
    - count
    - PacketCache::queryHeaderMatches
    - size
    - compare
    - getNextEDNSOption
    - data
    - empty
    - at
    - static_cast<unsigned char>
    linkageType: ''
    returnType: bool
    signature: bool queryMatches(const std::string& cachedQuery, const std::string&
      query, const DNSName& qname, const std::unordered_set<uint16_t>& optionsToIgnore)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 30
      start: 30
    functionDepth: 0
    functionLinenumber: 30
    functionLinenumberEnd: 30
    functionName: SensitiveData::SensitiveData
    functionSourceFile: /src/pdns/pdns/dnsdistdist/credentials.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void SensitiveData(const SensitiveData&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 31
      start: 31
    functionDepth: 0
    functionLinenumber: 31
    functionLinenumberEnd: 31
    functionName: SensitiveData::SensitiveData
    functionSourceFile: /src/pdns/pdns/dnsdistdist/credentials.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void SensitiveData(SensitiveData&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 32
      start: 32
    functionDepth: 0
    functionLinenumber: 32
    functionLinenumberEnd: 32
    functionName: '& operator=(const SensitiveData&)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/credentials.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: SensitiveData
    signature: SensitiveData & operator=(const SensitiveData&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 39
    functionDepth: 0
    functionLinenumber: 39
    functionLinenumberEnd: 42
    functionName: '& getString() const'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/credentials.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string & getString() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 46
    functionName: '& getString()'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/credentials.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string & getString()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 63
    functionDepth: 0
    functionLinenumber: 63
    functionLinenumberEnd: 63
    functionName: CredentialsHolder::CredentialsHolder
    functionSourceFile: /src/pdns/pdns/dnsdistdist/credentials.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void CredentialsHolder(CredentialsHolder&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 64
    functionDepth: 0
    functionLinenumber: 64
    functionLinenumberEnd: 64
    functionName: '& operator=(CredentialsHolder&&)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/credentials.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: CredentialsHolder
    signature: CredentialsHolder & operator=(CredentialsHolder&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 73
    functionDepth: 0
    functionLinenumber: 73
    functionLinenumberEnd: 73
    functionName: CredentialsHolder::CredentialsHolder
    functionSourceFile: /src/pdns/pdns/dnsdistdist/credentials.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void CredentialsHolder(const CredentialsHolder&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 74
    functionDepth: 0
    functionLinenumber: 74
    functionLinenumberEnd: 74
    functionName: '& operator=(const CredentialsHolder&)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/credentials.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: CredentialsHolder
    signature: CredentialsHolder & operator=(const CredentialsHolder&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 78
    functionDepth: 0
    functionLinenumber: 78
    functionLinenumberEnd: 81
    functionName: CredentialsHolder::wasHashed
    functionSourceFile: /src/pdns/pdns/dnsdistdist/credentials.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool wasHashed() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 83
    functionDepth: 0
    functionLinenumber: 83
    functionLinenumberEnd: 86
    functionName: CredentialsHolder::isHashed
    functionSourceFile: /src/pdns/pdns/dnsdistdist/credentials.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool isHashed() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::configuration::getImmutableConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-frontend.cc:32,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 33
      start: 30
    functionDepth: 1
    functionLinenumber: 30
    functionLinenumberEnd: 33
    functionName: dnsdist::getFrontends
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-frontend.cc
    functionUses: 0
    functionsReached:
    - dnsdist::configuration::getImmutableConfiguration
    linkageType: ''
    returnType: std::vector<std::shared_ptr<ClientState>>
    signature: std::vector<std::shared_ptr<ClientState>> & getFrontends()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::getFrontends
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-frontend.cc:38,1
    - Dst: getProtocol
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-frontend.cc:39,1
    - Dst: getProtocol
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-frontend.cc:39,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-frontend.cc:40,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 6
    argCount: 1
    argNames:
    - udpOnly
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 35
    functionDepth: 2
    functionLinenumber: 35
    functionLinenumberEnd: 44
    functionName: dnsdist::getDNSCryptFrontends
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-frontend.cc
    functionUses: 0
    functionsReached:
    - std::vector::push_back
    - getProtocol
    - dnsdist::getFrontends
    linkageType: ''
    returnType: std::vector<std::shared_ptr<DNSCryptContext>>
    signature: std::vector<std::shared_ptr<DNSCryptContext>> getDNSCryptFrontends(bool
      udpOnly)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::getFrontends
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-frontend.cc:49,1
    - Dst: getProtocol
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-frontend.cc:50,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-frontend.cc:51,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 46
    functionDepth: 2
    functionLinenumber: 46
    functionLinenumberEnd: 55
    functionName: dnsdist::getDoTFrontends
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-frontend.cc
    functionUses: 0
    functionsReached:
    - std::vector::push_back
    - getProtocol
    - dnsdist::getFrontends
    linkageType: ''
    returnType: std::vector<std::shared_ptr<TLSFrontend>>
    signature: std::vector<std::shared_ptr<TLSFrontend>> getDoTFrontends()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::getFrontends
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-frontend.cc:60,1
    - Dst: getProtocol
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-frontend.cc:61,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-frontend.cc:62,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 57
    functionDepth: 2
    functionLinenumber: 57
    functionLinenumberEnd: 66
    functionName: dnsdist::getDoHFrontends
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-frontend.cc
    functionUses: 0
    functionsReached:
    - std::vector::push_back
    - getProtocol
    - dnsdist::getFrontends
    linkageType: ''
    returnType: std::vector<std::shared_ptr<DOHFrontend>>
    signature: std::vector<std::shared_ptr<DOHFrontend>> getDoHFrontends()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::getFrontends
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-frontend.cc:71,1
    - Dst: getProtocol
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-frontend.cc:72,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-frontend.cc:73,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 68
    functionDepth: 2
    functionLinenumber: 68
    functionLinenumberEnd: 77
    functionName: dnsdist::getDoQFrontends
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-frontend.cc
    functionUses: 0
    functionsReached:
    - std::vector::push_back
    - getProtocol
    - dnsdist::getFrontends
    linkageType: ''
    returnType: std::vector<std::shared_ptr<DOQFrontend>>
    signature: std::vector<std::shared_ptr<DOQFrontend>> getDoQFrontends()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::getFrontends
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-frontend.cc:82,1
    - Dst: getProtocol
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-frontend.cc:83,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-frontend.cc:84,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 79
    functionDepth: 2
    functionLinenumber: 79
    functionLinenumberEnd: 88
    functionName: dnsdist::getDoH3Frontends
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-frontend.cc
    functionUses: 0
    functionsReached:
    - std::vector::push_back
    - getProtocol
    - dnsdist::getFrontends
    linkageType: ''
    returnType: std::vector<std::shared_ptr<DOH3Frontend>>
    signature: std::vector<std::shared_ptr<DOH3Frontend>> getDoH3Frontends()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::configuration::getImmutableConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-frontend.cc:32,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 33
      start: 30
    functionDepth: 1
    functionLinenumber: 30
    functionLinenumberEnd: 33
    functionName: dnsdist::getFrontends
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-frontend.cc
    functionUses: 5
    functionsReached:
    - dnsdist::configuration::getImmutableConfiguration
    linkageType: ''
    returnType: std::vector<std::shared_ptr<ClientState>>
    signature: std::vector<std::shared_ptr<ClientState>> & getFrontends()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::getFrontends
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-frontend.cc:38,1
    - Dst: getProtocol
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-frontend.cc:39,1
    - Dst: getProtocol
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-frontend.cc:39,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-frontend.cc:40,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 6
    argCount: 1
    argNames:
    - udpOnly
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 35
    functionDepth: 2
    functionLinenumber: 35
    functionLinenumberEnd: 44
    functionName: dnsdist::getDNSCryptFrontends
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-frontend.cc
    functionUses: 0
    functionsReached:
    - std::vector::push_back
    - getProtocol
    - dnsdist::getFrontends
    linkageType: ''
    returnType: std::vector<std::shared_ptr<DNSCryptContext>>
    signature: std::vector<std::shared_ptr<DNSCryptContext>> getDNSCryptFrontends(bool
      udpOnly)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::getFrontends
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-frontend.cc:49,1
    - Dst: getProtocol
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-frontend.cc:50,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-frontend.cc:51,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 46
    functionDepth: 2
    functionLinenumber: 46
    functionLinenumberEnd: 55
    functionName: dnsdist::getDoTFrontends
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-frontend.cc
    functionUses: 0
    functionsReached:
    - std::vector::push_back
    - getProtocol
    - dnsdist::getFrontends
    linkageType: ''
    returnType: std::vector<std::shared_ptr<TLSFrontend>>
    signature: std::vector<std::shared_ptr<TLSFrontend>> getDoTFrontends()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::getFrontends
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-frontend.cc:60,1
    - Dst: getProtocol
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-frontend.cc:61,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-frontend.cc:62,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 57
    functionDepth: 2
    functionLinenumber: 57
    functionLinenumberEnd: 66
    functionName: dnsdist::getDoHFrontends
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-frontend.cc
    functionUses: 0
    functionsReached:
    - std::vector::push_back
    - getProtocol
    - dnsdist::getFrontends
    linkageType: ''
    returnType: std::vector<std::shared_ptr<DOHFrontend>>
    signature: std::vector<std::shared_ptr<DOHFrontend>> getDoHFrontends()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::getFrontends
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-frontend.cc:71,1
    - Dst: getProtocol
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-frontend.cc:72,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-frontend.cc:73,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 68
    functionDepth: 2
    functionLinenumber: 68
    functionLinenumberEnd: 77
    functionName: dnsdist::getDoQFrontends
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-frontend.cc
    functionUses: 0
    functionsReached:
    - std::vector::push_back
    - getProtocol
    - dnsdist::getFrontends
    linkageType: ''
    returnType: std::vector<std::shared_ptr<DOQFrontend>>
    signature: std::vector<std::shared_ptr<DOQFrontend>> getDoQFrontends()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::getFrontends
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-frontend.cc:82,1
    - Dst: getProtocol
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-frontend.cc:83,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-frontend.cc:84,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 79
    functionDepth: 2
    functionLinenumber: 79
    functionLinenumberEnd: 88
    functionName: dnsdist::getDoH3Frontends
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-frontend.cc
    functionUses: 0
    functionsReached:
    - std::vector::push_back
    - getProtocol
    - dnsdist::getFrontends
    linkageType: ''
    returnType: std::vector<std::shared_ptr<DOH3Frontend>>
    signature: std::vector<std::shared_ptr<DOH3Frontend>> getDoH3Frontends()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dns_cc.cc:37,1
    - Dst: RCode::to_s
      Src: /src/pdns/pdns/dnsdistdist/test-dns_cc.cc:37,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dns_cc.cc:38,1
    - Dst: RCode::to_short_s
      Src: /src/pdns/pdns/dnsdistdist/test-dns_cc.cc:38,1
    - Dst: RCode::to_s
      Src: /src/pdns/pdns/dnsdistdist/test-dns_cc.cc:41,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dns_cc.cc:42,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dns_cc.cc:42,1
    - Dst: RCode::to_short_s
      Src: /src/pdns/pdns/dnsdistdist/test-dns_cc.cc:43,1
    - Dst: RCode::from_short
      Src: /src/pdns/pdns/dnsdistdist/test-dns_cc.cc:44,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dns_cc.cc:45,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dns_cc.cc:46,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dns_cc.cc:49,1
    - Dst: RCode::to_s
      Src: /src/pdns/pdns/dnsdistdist/test-dns_cc.cc:49,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dns_cc.cc:50,1
    - Dst: RCode::from_short
      Src: /src/pdns/pdns/dnsdistdist/test-dns_cc.cc:50,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 35
    functionDepth: 0
    functionLinenumber: 35
    functionLinenumberEnd: 51
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dns_cc.cc
    functionUses: 0
    functionsReached:
    - RCode::from_short
    - BOOST_CHECK_EQUAL
    - RCode::to_s
    - RCode::to_short_s
    - BOOST_CHECK
    - auto::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_rcode)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ERCode::to_s
      Src: /src/pdns/pdns/dnsdistdist/test-dns_cc.cc:56,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dns_cc.cc:57,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dns_cc.cc:57,1
    - Dst: ERCode::to_short_s
      Src: /src/pdns/pdns/dnsdistdist/test-dns_cc.cc:58,1
    - Dst: ERCode::from_short
      Src: /src/pdns/pdns/dnsdistdist/test-dns_cc.cc:59,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dns_cc.cc:60,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dns_cc.cc:61,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dns_cc.cc:64,1
    - Dst: ERCode::to_s
      Src: /src/pdns/pdns/dnsdistdist/test-dns_cc.cc:64,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 53
    functionDepth: 0
    functionLinenumber: 53
    functionLinenumberEnd: 65
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dns_cc.cc
    functionUses: 0
    functionsReached:
    - ERCode::from_short
    - ERCode::to_s
    - BOOST_CHECK_EQUAL
    - ERCode::to_short_s
    - BOOST_CHECK
    - auto::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_ercode)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Opcode::to_s
      Src: /src/pdns/pdns/dnsdistdist/test-dns_cc.cc:70,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dns_cc.cc:71,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dns_cc.cc:71,1
    - Dst: boost::to_lower
      Src: /src/pdns/pdns/dnsdistdist/test-dns_cc.cc:72,1
    - Dst: Opcode::from_lowercase_string
      Src: /src/pdns/pdns/dnsdistdist/test-dns_cc.cc:73,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dns_cc.cc:75,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dns_cc.cc:76,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dns_cc.cc:79,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dns_cc.cc:80,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dns_cc.cc:84,1
    - Dst: Opcode::to_s
      Src: /src/pdns/pdns/dnsdistdist/test-dns_cc.cc:84,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/test-dns_cc.cc:84,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dns_cc.cc:85,1
    - Dst: Opcode::from_lowercase_string
      Src: /src/pdns/pdns/dnsdistdist/test-dns_cc.cc:85,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 67
    functionDepth: 0
    functionLinenumber: 67
    functionLinenumberEnd: 86
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dns_cc.cc
    functionUses: 0
    functionsReached:
    - Opcode::from_lowercase_string
    - std::to_string
    - BOOST_CHECK_EQUAL
    - Opcode::to_s
    - boost::to_lower
    - BOOST_CHECK
    - auto::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_opcode)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSResourceRecord::placeString
      Src: /src/pdns/pdns/dnsdistdist/test-dns_cc.cc:91,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dns_cc.cc:92,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dns_cc.cc:92,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dns_cc.cc:95,1
    - Dst: DNSResourceRecord::placeString
      Src: /src/pdns/pdns/dnsdistdist/test-dns_cc.cc:95,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 88
    functionDepth: 0
    functionLinenumber: 88
    functionLinenumberEnd: 96
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dns_cc.cc
    functionUses: 0
    functionsReached:
    - DNSResourceRecord::placeString
    - BOOST_CHECK
    - BOOST_CHECK_EQUAL
    - auto::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_resource_record_place)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: FDMultiplexer::getMultiplexerMap
      Src: /src/pdns/pdns/dnsdistdist/pollmplexer.cc:15,1
    - Dst: second
      Src: /src/pdns/pdns/dnsdistdist/pollmplexer.cc:17,1
    - Dst: std::min
      Src: /src/pdns/pdns/dnsdistdist/pollmplexer.cc:17,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - maxEventsHint
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 26
      start: 12
    functionDepth: 0
    functionLinenumber: 12
    functionLinenumberEnd: 26
    functionName: FDMultiplexer::getMultiplexerSilent
    functionSourceFile: /src/pdns/pdns/dnsdistdist/pollmplexer.cc
    functionUses: 6
    functionsReached:
    - FDMultiplexer::getMultiplexerMap
    - std::min
    - second
    linkageType: ''
    returnType: FDMultiplexer
    signature: FDMultiplexer * FDMultiplexer::getMultiplexerSilent(unsigned int maxEventsHint)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 32
      start: 31
    functionDepth: 0
    functionLinenumber: 31
    functionLinenumberEnd: 32
    functionName: PollFDMultiplexer::PollFDMultiplexer
    functionSourceFile: /src/pdns/pdns/dnsdistdist/pollmplexer.cc
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void PollFDMultiplexer(unsigned int /* maxEventsHint */)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 40
    functionDepth: 0
    functionLinenumber: 40
    functionLinenumberEnd: 43
    functionName: PollFDMultiplexer::getName
    functionSourceFile: /src/pdns/pdns/dnsdistdist/pollmplexer.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: string
    signature: string getName() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PollFDMultiplexer::PollFDMultiplexer
      Src: /src/pdns/pdns/dnsdistdist/pollmplexer.cc:52,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - maxEventsHint
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 50
    functionDepth: 0
    functionLinenumber: 50
    functionLinenumberEnd: 53
    functionName: make
    functionSourceFile: /src/pdns/pdns/dnsdistdist/pollmplexer.cc
    functionUses: 56
    functionsReached:
    - PollFDMultiplexer::PollFDMultiplexer
    linkageType: ''
    returnType: FDMultiplexer
    signature: FDMultiplexer * make(unsigned int maxEventsHint)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: FDMultiplexer::getMultiplexerMap
      Src: /src/pdns/pdns/dnsdistdist/pollmplexer.cc:59,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 57
    functionDepth: 0
    functionLinenumber: 57
    functionLinenumberEnd: 60
    functionName: RegisterOurselves
    functionSourceFile: /src/pdns/pdns/dnsdistdist/pollmplexer.cc
    functionUses: 0
    functionsReached:
    - FDMultiplexer::getMultiplexerMap
    linkageType: ''
    returnType: void
    signature: void RegisterOurselves()
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/pollmplexer.cc:73,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - kind
    argTypes:
    - FDMultiplexer::EventKind
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 63
    functionDepth: 0
    functionLinenumber: 63
    functionLinenumberEnd: 74
    functionName: convertEventKind
    functionSourceFile: /src/pdns/pdns/dnsdistdist/pollmplexer.cc
    functionUses: 7
    functionsReached:
    - std::runtime_error
    linkageType: ''
    returnType: int
    signature: int convertEventKind(FDMultiplexer::EventKind kind)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: count
      Src: /src/pdns/pdns/dnsdistdist/pollmplexer.cc:78,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/pollmplexer.cc:83,1
    - Dst: convertEventKind
      Src: /src/pdns/pdns/dnsdistdist/pollmplexer.cc:84,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - fd
    - kind
    argTypes:
    - int
    - FDMultiplexer::EventKind
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 76
    functionDepth: 0
    functionLinenumber: 76
    functionLinenumberEnd: 85
    functionName: PollFDMultiplexer::addFD
    functionSourceFile: /src/pdns/pdns/dnsdistdist/pollmplexer.cc
    functionUses: 0
    functionsReached:
    - at
    - convertEventKind
    - count
    linkageType: ''
    returnType: void
    signature: void PollFDMultiplexer::addFD(int fd, FDMultiplexer::EventKind kind)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: erase
      Src: /src/pdns/pdns/dnsdistdist/pollmplexer.cc:89,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - fd
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 87
    functionDepth: 0
    functionLinenumber: 87
    functionLinenumberEnd: 90
    functionName: PollFDMultiplexer::removeFD
    functionSourceFile: /src/pdns/pdns/dnsdistdist/pollmplexer.cc
    functionUses: 0
    functionsReached:
    - erase
    linkageType: ''
    returnType: void
    signature: void PollFDMultiplexer::removeFD(int fd, FDMultiplexer::EventKind)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::vector::reserve
      Src: /src/pdns/pdns/dnsdistdist/pollmplexer.cc:95,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/pollmplexer.cc:95,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/dnsdistdist/pollmplexer.cc:97,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 92
    functionDepth: 0
    functionLinenumber: 92
    functionLinenumberEnd: 101
    functionName: PollFDMultiplexer::preparePollFD
    functionSourceFile: /src/pdns/pdns/dnsdistdist/pollmplexer.cc
    functionUses: 2
    functionsReached:
    - std::vector::reserve
    - std::vector::push_back
    - size
    linkageType: ''
    returnType: vector<struct pollfd>
    signature: vector<struct pollfd> PollFDMultiplexer::preparePollFD() const
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: PollFDMultiplexer::preparePollFD
      Src: /src/pdns/pdns/dnsdistdist/pollmplexer.cc:105,1
    - Dst: auto::empty
      Src: /src/pdns/pdns/dnsdistdist/pollmplexer.cc:106,1
    - Dst: poll
      Src: /src/pdns/pdns/dnsdistdist/pollmplexer.cc:110,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/pollmplexer.cc:110,1
    - Dst: FDMultiplexerException
      Src: /src/pdns/pdns/dnsdistdist/pollmplexer.cc:113,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/pollmplexer.cc:113,1
    - Dst: push_back
      Src: /src/pdns/pdns/dnsdistdist/pollmplexer.cc:118,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 11
    argCount: 2
    argNames:
    - ' fds'
    - timeout
    argTypes:
    - std::vector<int>
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 103
    functionDepth: 0
    functionLinenumber: 103
    functionLinenumberEnd: 121
    functionName: PollFDMultiplexer::getAvailableFDs
    functionSourceFile: /src/pdns/pdns/dnsdistdist/pollmplexer.cc
    functionUses: 0
    functionsReached:
    - push_back
    - stringerror
    - PollFDMultiplexer::preparePollFD
    - poll
    - FDMultiplexerException
    - auto::size
    - auto::empty
    linkageType: ''
    returnType: void
    signature: void PollFDMultiplexer::getAvailableFDs(std::vector<int>& fds, int
      timeout)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: PollFDMultiplexer::preparePollFD
      Src: /src/pdns/pdns/dnsdistdist/pollmplexer.cc:127,1
    - Dst: auto::empty
      Src: /src/pdns/pdns/dnsdistdist/pollmplexer.cc:128,1
    - Dst: gettimeofday
      Src: /src/pdns/pdns/dnsdistdist/pollmplexer.cc:129,1
    - Dst: poll
      Src: /src/pdns/pdns/dnsdistdist/pollmplexer.cc:133,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/pollmplexer.cc:133,1
    - Dst: gettimeofday
      Src: /src/pdns/pdns/dnsdistdist/pollmplexer.cc:134,1
    - Dst: FDMultiplexerException
      Src: /src/pdns/pdns/dnsdistdist/pollmplexer.cc:137,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/pollmplexer.cc:137,1
    - Dst: find
      Src: /src/pdns/pdns/dnsdistdist/pollmplexer.cc:143,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/pollmplexer.cc:144,1
    - Dst: d_callback
      Src: /src/pdns/pdns/dnsdistdist/pollmplexer.cc:145,1
    - Dst: find
      Src: /src/pdns/pdns/dnsdistdist/pollmplexer.cc:151,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/pollmplexer.cc:152,1
    - Dst: d_callback
      Src: /src/pdns/pdns/dnsdistdist/pollmplexer.cc:153,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 23
    argCount: 2
    argNames:
    - now
    - timeout
    argTypes:
    - struct timeval*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 160
      start: 123
    functionDepth: 0
    functionLinenumber: 123
    functionLinenumberEnd: 160
    functionName: PollFDMultiplexer::run
    functionSourceFile: /src/pdns/pdns/dnsdistdist/pollmplexer.cc
    functionUses: 2
    functionsReached:
    - stringerror
    - end
    - PollFDMultiplexer::preparePollFD
    - d_callback
    - find
    - poll
    - gettimeofday
    - FDMultiplexerException
    - auto::size
    - auto::empty
    linkageType: ''
    returnType: int
    signature: int PollFDMultiplexer::run(struct timeval* now, int timeout)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: boost::any_cast<Socket*>
      Src: /src/pdns/pdns/dnsdistdist/pollmplexer.cc:167,1
    - Dst: Socket*::recvFrom
      Src: /src/pdns/pdns/dnsdistdist/pollmplexer.cc:170,1
    - Dst: string::size
      Src: /src/pdns/pdns/dnsdistdist/pollmplexer.cc:171,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - fd
    - ' parameter'
    argTypes:
    - int
    - boost::any
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 172
      start: 164
    functionDepth: 0
    functionLinenumber: 164
    functionLinenumberEnd: 172
    functionName: acceptData
    functionSourceFile: /src/pdns/pdns/dnsdistdist/pollmplexer.cc
    functionUses: 0
    functionsReached:
    - string::size
    - boost::any_cast<Socket*>
    - Socket*::recvFrom
    linkageType: ''
    returnType: void
    signature: void acceptData(int fd, boost::any& parameter)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Socket::bind
      Src: /src/pdns/pdns/dnsdistdist/pollmplexer.cc:180,1
    - Dst: PollFDMultiplexer::PollFDMultiplexer
      Src: /src/pdns/pdns/dnsdistdist/pollmplexer.cc:182,1
    - Dst: PollFDMultiplexer::addReadFD
      Src: /src/pdns/pdns/dnsdistdist/pollmplexer.cc:184,1
    - Dst: Socket::getHandle
      Src: /src/pdns/pdns/dnsdistdist/pollmplexer.cc:184,1
    - Dst: PollFDMultiplexer::run
      Src: /src/pdns/pdns/dnsdistdist/pollmplexer.cc:187,1
    - Dst: PollFDMultiplexer::removeReadFD
      Src: /src/pdns/pdns/dnsdistdist/pollmplexer.cc:189,1
    - Dst: Socket::getHandle
      Src: /src/pdns/pdns/dnsdistdist/pollmplexer.cc:189,1
    - Dst: PollFDMultiplexer::removeReadFD
      Src: /src/pdns/pdns/dnsdistdist/pollmplexer.cc:190,1
    - Dst: Socket::getHandle
      Src: /src/pdns/pdns/dnsdistdist/pollmplexer.cc:190,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 191
      start: 175
    functionDepth: 0
    functionLinenumber: 175
    functionLinenumberEnd: 191
    functionName: main
    functionSourceFile: /src/pdns/pdns/dnsdistdist/pollmplexer.cc
    functionUses: 31
    functionsReached:
    - PollFDMultiplexer::removeReadFD
    - Socket::getHandle
    - PollFDMultiplexer::addReadFD
    - PollFDMultiplexer::run
    - PollFDMultiplexer::PollFDMultiplexer
    - Socket::bind
    linkageType: ''
    returnType: int
    signature: int main()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::configuration::getImmutableConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:41,1
    - Dst: localtime_r
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:44,1
    - Dst: std::scoped_lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:49,1
    - Dst: strftime
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:51,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:51,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:51,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:56,1
    - Dst: Logging::toTimestampStringMilli
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:58,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - ' tval'
    - ' buffer'
    argTypes:
    - timeval
    - std::array<char, 64>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 39
    functionDepth: 1
    functionLinenumber: 39
    functionLinenumberEnd: 59
    functionName: dnsdist::logging::convertTime
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc
    functionUses: 0
    functionsReached:
    - strftime
    - localtime_r
    - size
    - dnsdist::configuration::getImmutableConfiguration
    - data
    - std::scoped_lock
    - Logging::toTimestampStringMilli
    linkageType: ''
    returnType: char
    signature: char * convertTime(const timeval& tval, std::array<char, 64>& buffer)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: std::vector::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:88,1
    - Dst: appendKeyAndVal
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:90,1
    - Dst: appendKeyAndVal
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:92,1
    - Dst: error::value
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:92,1
    - Dst: appendKeyAndVal
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:94,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:94,1
    - Dst: appendKeyAndVal
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:95,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:95,1
    - Dst: dnsdist::configuration::getImmutableConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:96,1
    - Dst: appendKeyAndVal
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:97,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:97,1
    - Dst: appendKeyAndVal
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:100,1
    - Dst: name::value
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:100,1
    - Dst: appendKeyAndVal
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:103,1
    - Dst: dnsdist::logging::convertTime
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:103,1
    - Dst: first::at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:105,1
    - Dst: std::set::count
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:105,1
    - Dst: string::append
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:107,1
    - Dst: appendKeyAndVal
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:108,1
    - Dst: toUpper
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:108,1
    - Dst: appendKeyAndVal
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:111,1
    - Dst: toUpper
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:111,1
    - Dst: std::vector::reserve
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:116,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:116,1
    - Dst: std::vector::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:119,1
    - Dst: const_cast<void*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:119,1
    - Dst: reinterpret_cast<const void*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:119,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:119,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:119,1
    - Dst: sd_journal_sendv
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:121,1
    - Dst: std::vector::data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:121,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:121,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:121,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 27
    argCount: 1
    argNames:
    - ' entry'
    argTypes:
    - Logging::Entry
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 122
      start: 62
    functionDepth: 2
    functionLinenumber: 62
    functionLinenumberEnd: 122
    functionName: dnsdist::logging::loggerSDBackend
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc
    functionUses: 0
    functionsReached:
    - appendKeyAndVal
    - sd_journal_sendv
    - std::to_string
    - reinterpret_cast<const void*>
    - first::at
    - error::value
    - dnsdist::configuration::getImmutableConfiguration
    - std::vector::data
    - static_cast<int>
    - std::vector::size
    - dnsdist::logging::convertTime
    - toUpper
    - size
    - name::value
    - dnsdist::configuration::getCurrentRuntimeConfiguration
    - std::vector::reserve
    - std::set::count
    - string::append
    - std::vector::emplace_back
    - const_cast<void*>
    - data
    linkageType: ''
    returnType: void
    signature: void loggerSDBackend(const Logging::Entry& entry)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:130,1
    - Dst: dnsdist::logging::convertTime
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:131,1
    - Dst: json11::Json::object::emplace
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:135,1
    - Dst: error::value
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:135,1
    - Dst: json11::Json::object::emplace
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:139,1
    - Dst: name::value
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:139,1
    - Dst: json11::Json::object::emplace
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:143,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:143,1
    - Dst: dnsdist::configuration::getImmutableConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:146,1
    - Dst: json11::Json::object::emplace
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:147,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:147,1
    - Dst: json11::Json::object::emplace
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:151,1
    - Dst: std::string::clear
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:155,1
    - Dst: json11::Json::dump
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:157,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 1
    argNames:
    - ' entry'
    argTypes:
    - Logging::Entry
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 159
      start: 125
    functionDepth: 2
    functionLinenumber: 125
    functionLinenumberEnd: 159
    functionName: dnsdist::logging::loggerJSONBackend
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc
    functionUses: 0
    functionsReached:
    - std::to_string
    - dnsdist::configuration::getCurrentRuntimeConfiguration
    - dnsdist::logging::convertTime
    - json11::Json::dump
    - std::string::clear
    - name::value
    - error::value
    - dnsdist::configuration::getImmutableConfiguration
    - json11::Json::object::emplace
    linkageType: ''
    returnType: void
    signature: void loggerJSONBackend(const Logging::Entry& entry)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: std::stringstream::str
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:165,1
    - Dst: std::quoted
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:166,1
    - Dst: std::quoted
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:168,1
    - Dst: error::value
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:168,1
    - Dst: std::quoted
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:172,1
    - Dst: name::value
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:172,1
    - Dst: std::quoted
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:174,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:174,1
    - Dst: std::quoted
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:176,1
    - Dst: Logr::Logger::toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:176,1
    - Dst: dnsdist::configuration::getImmutableConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:178,1
    - Dst: std::quoted
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:179,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:179,1
    - Dst: std::quoted
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:183,1
    - Dst: dnsdist::logging::convertTime
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:183,1
    - Dst: std::quoted
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:186,1
    - Dst: std::stringstream::str
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:189,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 21
    argCount: 1
    argNames:
    - ' entry'
    argTypes:
    - Logging::Entry
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 190
      start: 161
    functionDepth: 2
    functionLinenumber: 161
    functionLinenumberEnd: 190
    functionName: dnsdist::logging::loggerBackend
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc
    functionUses: 0
    functionsReached:
    - std::quoted
    - std::to_string
    - dnsdist::configuration::getCurrentRuntimeConfiguration
    - dnsdist::logging::convertTime
    - Logr::Logger::toString
    - std::stringstream::str
    - name::value
    - error::value
    - dnsdist::configuration::getImmutableConfiguration
    linkageType: ''
    returnType: void
    signature: void loggerBackend(const Logging::Entry& entry)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: sd_journal_stream_fd
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:199,1
    - Dst: Logging::Logger::create
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:200,1
    - Dst: close
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:201,1
    - Dst: Logging::Logger::create
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:209,1
    - Dst: Logging::Logger::create
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:216,1
    - Dst: std::atomic_store_explicit
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:220,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:220,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 23
    argCount: 1
    argNames:
    - ' backend'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 222
      start: 194
    functionDepth: 0
    functionLinenumber: 194
    functionLinenumberEnd: 222
    functionName: dnsdist::logging::setup
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc
    functionUses: 0
    functionsReached:
    - std::move
    - std::atomic_store_explicit
    - Logging::Logger::create
    - sd_journal_stream_fd
    - close
    linkageType: ''
    returnType: void
    signature: void setup(const std::string& backend)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::atomic_load_explicit
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:226,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:228,1
    - Dst: auto::withName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:231,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:231,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - ' subsystem'
    argTypes:
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 232
      start: 224
    functionDepth: 0
    functionLinenumber: 224
    functionLinenumberEnd: 232
    functionName: dnsdist::logging::getTopLogger
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc
    functionUses: 22
    functionsReached:
    - std::string
    - auto::withName
    - std::atomic_load_explicit
    - std::runtime_error
    linkageType: ''
    returnType: std::shared_ptr<const Logr::Logger>
    signature: std::shared_ptr<const Logr::Logger> getTopLogger(const std::string_view&
      subsystem)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:236,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 237
      start: 234
    functionDepth: 1
    functionLinenumber: 234
    functionLinenumberEnd: 237
    functionName: dnsdist::logging::doVerboseLogging
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc
    functionUses: 0
    functionsReached:
    - dnsdist::configuration::getCurrentRuntimeConfiguration
    linkageType: ''
    returnType: bool
    signature: bool doVerboseLogging()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::configuration::getImmutableConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:241,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 242
      start: 239
    functionDepth: 1
    functionLinenumber: 239
    functionLinenumberEnd: 242
    functionName: dnsdist::logging::doStructuredLogging
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc
    functionUses: 0
    functionsReached:
    - dnsdist::configuration::getImmutableConfiguration
    linkageType: ''
    returnType: bool
    signature: bool doStructuredLogging()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::configuration::getImmutableConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:41,1
    - Dst: localtime_r
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:44,1
    - Dst: std::scoped_lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:49,1
    - Dst: strftime
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:51,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:51,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:51,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:56,1
    - Dst: Logging::toTimestampStringMilli
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:58,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - ' tval'
    - ' buffer'
    argTypes:
    - timeval
    - std::array<char, 64>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 39
    functionDepth: 1
    functionLinenumber: 39
    functionLinenumberEnd: 59
    functionName: dnsdist::logging::convertTime
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc
    functionUses: 3
    functionsReached:
    - strftime
    - localtime_r
    - size
    - dnsdist::configuration::getImmutableConfiguration
    - data
    - std::scoped_lock
    - Logging::toTimestampStringMilli
    linkageType: ''
    returnType: char
    signature: char * convertTime(const timeval& tval, std::array<char, 64>& buffer)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: std::vector::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:88,1
    - Dst: appendKeyAndVal
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:90,1
    - Dst: appendKeyAndVal
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:92,1
    - Dst: error::value
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:92,1
    - Dst: appendKeyAndVal
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:94,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:94,1
    - Dst: appendKeyAndVal
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:95,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:95,1
    - Dst: dnsdist::configuration::getImmutableConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:96,1
    - Dst: appendKeyAndVal
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:97,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:97,1
    - Dst: appendKeyAndVal
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:100,1
    - Dst: name::value
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:100,1
    - Dst: appendKeyAndVal
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:103,1
    - Dst: dnsdist::logging::convertTime
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:103,1
    - Dst: first::at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:105,1
    - Dst: std::set::count
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:105,1
    - Dst: string::append
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:107,1
    - Dst: appendKeyAndVal
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:108,1
    - Dst: toUpper
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:108,1
    - Dst: appendKeyAndVal
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:111,1
    - Dst: toUpper
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:111,1
    - Dst: std::vector::reserve
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:116,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:116,1
    - Dst: std::vector::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:119,1
    - Dst: const_cast<void*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:119,1
    - Dst: reinterpret_cast<const void*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:119,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:119,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:119,1
    - Dst: sd_journal_sendv
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:121,1
    - Dst: std::vector::data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:121,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:121,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:121,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 27
    argCount: 1
    argNames:
    - ' entry'
    argTypes:
    - Logging::Entry
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 122
      start: 62
    functionDepth: 2
    functionLinenumber: 62
    functionLinenumberEnd: 122
    functionName: dnsdist::logging::loggerSDBackend
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc
    functionUses: 0
    functionsReached:
    - appendKeyAndVal
    - sd_journal_sendv
    - std::to_string
    - reinterpret_cast<const void*>
    - first::at
    - error::value
    - dnsdist::configuration::getImmutableConfiguration
    - std::vector::data
    - static_cast<int>
    - std::vector::size
    - dnsdist::logging::convertTime
    - toUpper
    - size
    - name::value
    - dnsdist::configuration::getCurrentRuntimeConfiguration
    - std::vector::reserve
    - std::set::count
    - string::append
    - std::vector::emplace_back
    - const_cast<void*>
    - data
    linkageType: ''
    returnType: void
    signature: void loggerSDBackend(const Logging::Entry& entry)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:130,1
    - Dst: dnsdist::logging::convertTime
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:131,1
    - Dst: json11::Json::object::emplace
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:135,1
    - Dst: error::value
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:135,1
    - Dst: json11::Json::object::emplace
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:139,1
    - Dst: name::value
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:139,1
    - Dst: json11::Json::object::emplace
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:143,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:143,1
    - Dst: dnsdist::configuration::getImmutableConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:146,1
    - Dst: json11::Json::object::emplace
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:147,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:147,1
    - Dst: json11::Json::object::emplace
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:151,1
    - Dst: std::string::clear
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:155,1
    - Dst: json11::Json::dump
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:157,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 1
    argNames:
    - ' entry'
    argTypes:
    - Logging::Entry
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 159
      start: 125
    functionDepth: 2
    functionLinenumber: 125
    functionLinenumberEnd: 159
    functionName: dnsdist::logging::loggerJSONBackend
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc
    functionUses: 0
    functionsReached:
    - std::to_string
    - dnsdist::configuration::getCurrentRuntimeConfiguration
    - dnsdist::logging::convertTime
    - json11::Json::dump
    - std::string::clear
    - name::value
    - error::value
    - dnsdist::configuration::getImmutableConfiguration
    - json11::Json::object::emplace
    linkageType: ''
    returnType: void
    signature: void loggerJSONBackend(const Logging::Entry& entry)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: std::stringstream::str
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:165,1
    - Dst: std::quoted
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:166,1
    - Dst: std::quoted
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:168,1
    - Dst: error::value
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:168,1
    - Dst: std::quoted
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:172,1
    - Dst: name::value
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:172,1
    - Dst: std::quoted
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:174,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:174,1
    - Dst: std::quoted
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:176,1
    - Dst: Logr::Logger::toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:176,1
    - Dst: dnsdist::configuration::getImmutableConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:178,1
    - Dst: std::quoted
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:179,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:179,1
    - Dst: std::quoted
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:183,1
    - Dst: dnsdist::logging::convertTime
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:183,1
    - Dst: std::quoted
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:186,1
    - Dst: std::stringstream::str
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:189,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 21
    argCount: 1
    argNames:
    - ' entry'
    argTypes:
    - Logging::Entry
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 190
      start: 161
    functionDepth: 2
    functionLinenumber: 161
    functionLinenumberEnd: 190
    functionName: dnsdist::logging::loggerBackend
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc
    functionUses: 0
    functionsReached:
    - std::quoted
    - std::to_string
    - dnsdist::configuration::getCurrentRuntimeConfiguration
    - dnsdist::logging::convertTime
    - Logr::Logger::toString
    - std::stringstream::str
    - name::value
    - error::value
    - dnsdist::configuration::getImmutableConfiguration
    linkageType: ''
    returnType: void
    signature: void loggerBackend(const Logging::Entry& entry)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: sd_journal_stream_fd
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:199,1
    - Dst: Logging::Logger::create
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:200,1
    - Dst: close
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:201,1
    - Dst: Logging::Logger::create
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:209,1
    - Dst: Logging::Logger::create
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:216,1
    - Dst: std::atomic_store_explicit
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:220,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:220,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 23
    argCount: 1
    argNames:
    - ' backend'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 222
      start: 194
    functionDepth: 0
    functionLinenumber: 194
    functionLinenumberEnd: 222
    functionName: dnsdist::logging::setup
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc
    functionUses: 0
    functionsReached:
    - std::move
    - std::atomic_store_explicit
    - Logging::Logger::create
    - sd_journal_stream_fd
    - close
    linkageType: ''
    returnType: void
    signature: void setup(const std::string& backend)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::atomic_load_explicit
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:226,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:228,1
    - Dst: auto::withName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:231,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:231,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - ' subsystem'
    argTypes:
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 232
      start: 224
    functionDepth: 0
    functionLinenumber: 224
    functionLinenumberEnd: 232
    functionName: dnsdist::logging::getTopLogger
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc
    functionUses: 22
    functionsReached:
    - std::string
    - auto::withName
    - std::atomic_load_explicit
    - std::runtime_error
    linkageType: ''
    returnType: std::shared_ptr<const Logr::Logger>
    signature: std::shared_ptr<const Logr::Logger> getTopLogger(const std::string_view&
      subsystem)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:236,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 237
      start: 234
    functionDepth: 1
    functionLinenumber: 234
    functionLinenumberEnd: 237
    functionName: dnsdist::logging::doVerboseLogging
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc
    functionUses: 0
    functionsReached:
    - dnsdist::configuration::getCurrentRuntimeConfiguration
    linkageType: ''
    returnType: bool
    signature: bool doVerboseLogging()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::configuration::getImmutableConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc:241,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 242
      start: 239
    functionDepth: 1
    functionLinenumber: 239
    functionLinenumberEnd: 242
    functionName: dnsdist::logging::doStructuredLogging
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc
    functionUses: 0
    functionsReached:
    - dnsdist::configuration::getImmutableConfiguration
    linkageType: ''
    returnType: bool
    signature: bool doStructuredLogging()
  - BBCount: 25
    BranchProfiles: []
    Callsites:
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-packetcache.cc:34,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-packetcache.cc:45,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-packetcache.cc:46,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-packetcache.cc:47,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-packetcache.cc:48,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-packetcache.cc:49,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-packetcache.cc:50,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-packetcache.cc:51,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-packetcache.cc:52,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-packetcache.cc:53,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-packetcache.cc:54,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-packetcache.cc:55,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-packetcache.cc:56,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-packetcache.cc:57,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-packetcache.cc:58,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-packetcache.cc:64,1
    - Dst: DNSDistPacketCache::CacheSettings::d_optionsToSkip::clear
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-packetcache.cc:65,1
    - Dst: DNSDistPacketCache::CacheSettings::d_optionsToSkip::insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-packetcache.cc:66,1
    - Dst: DNSDistPacketCache::CacheSettings::d_optionsToSkip::insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-packetcache.cc:68,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-packetcache.cc:72,1
    - Dst: std::unordered_set::insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-packetcache.cc:77,1
    - Dst: std::unordered_set::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-packetcache.cc:79,1
    - Dst: DNSDistPacketCache::CacheSettings::d_payloadRanks::assign
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-packetcache.cc:80,1
    - Dst: std::unordered_set::begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-packetcache.cc:80,1
    - Dst: std::unordered_set::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-packetcache.cc:80,1
    - Dst: std::sort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-packetcache.cc:81,1
    - Dst: DNSDistPacketCache::CacheSettings::d_payloadRanks::begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-packetcache.cc:81,1
    - Dst: DNSDistPacketCache::CacheSettings::d_payloadRanks::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-packetcache.cc:81,1
    - Dst: DNSDistPacketCache::CacheSettings::d_optionsToSkip::erase
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-packetcache.cc:86,1
    - Dst: checkAllParametersConsumed
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-packetcache.cc:89,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-packetcache.cc:92,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-packetcache.cc:92,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-packetcache.cc:93,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-packetcache.cc:93,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-packetcache.cc:93,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-packetcache.cc:94,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-packetcache.cc:94,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-packetcache.cc:94,1
    - Dst: std::make_shared<DNSDistPacketCache>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-packetcache.cc:103,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-packetcache.cc:107,1
    - Dst: toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-packetcache.cc:109,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-packetcache.cc:111,1
    - Dst: isFull
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-packetcache.cc:115,1
    - Dst: time
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-packetcache.cc:121,1
    - Dst: purgeExpired
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-packetcache.cc:123,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-packetcache.cc:125,1
    - Dst: expunge
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-packetcache.cc:129,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-packetcache.cc:131,1
    - Dst: DNSName::DNSName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-packetcache.cc:137,1
    - Dst: type
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-packetcache.cc:139,1
    - Dst: typeid
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-packetcache.cc:139,1
    - Dst: boost::get<DNSName>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-packetcache.cc:140,1
    - Dst: type
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-packetcache.cc:142,1
    - Dst: typeid
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-packetcache.cc:142,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-packetcache.cc:143,1
    - Dst: boost::get<string>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-packetcache.cc:143,1
    - Dst: type
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-packetcache.cc:145,1
    - Dst: typeid
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-packetcache.cc:145,1
    - Dst: boost::get<LuaArray<DNSName>>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-packetcache.cc:146,1
    - Dst: vector::reserve
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-packetcache.cc:147,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-packetcache.cc:147,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-packetcache.cc:149,1
    - Dst: type
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-packetcache.cc:152,1
    - Dst: typeid
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-packetcache.cc:152,1
    - Dst: boost::get<LuaArray<string>>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-packetcache.cc:153,1
    - Dst: vector::reserve
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-packetcache.cc:154,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-packetcache.cc:154,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-packetcache.cc:156,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-packetcache.cc:156,1
    - Dst: vector::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-packetcache.cc:159,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-packetcache.cc:160,1
    - Dst: expungeByName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-packetcache.cc:160,1
    - Dst: QType
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-packetcache.cc:160,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-packetcache.cc:163,1
    - Dst: expungeByName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-packetcache.cc:163,1
    - Dst: QType
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-packetcache.cc:163,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-packetcache.cc:168,1
    - Dst: getEntriesCount
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-packetcache.cc:168,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-packetcache.cc:168,1
    - Dst: getMaxEntries
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-packetcache.cc:168,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-packetcache.cc:169,1
    - Dst: getHits
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-packetcache.cc:169,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-packetcache.cc:170,1
    - Dst: getMisses
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-packetcache.cc:170,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-packetcache.cc:171,1
    - Dst: getDeferredInserts
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-packetcache.cc:171,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-packetcache.cc:172,1
    - Dst: getDeferredLookups
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-packetcache.cc:172,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-packetcache.cc:173,1
    - Dst: getLookupCollisions
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-packetcache.cc:173,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-packetcache.cc:174,1
    - Dst: getInsertCollisions
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-packetcache.cc:174,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-packetcache.cc:175,1
    - Dst: getTTLTooShorts
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-packetcache.cc:175,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-packetcache.cc:176,1
    - Dst: getCleanupCount
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-packetcache.cc:176,1
    - Dst: LuaAssociativeTable<uint64_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-packetcache.cc:179,1
    - Dst: getEntriesCount
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-packetcache.cc:182,1
    - Dst: getMaxEntries
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-packetcache.cc:183,1
    - Dst: getHits
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-packetcache.cc:184,1
    - Dst: getMisses
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-packetcache.cc:185,1
    - Dst: getDeferredInserts
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-packetcache.cc:186,1
    - Dst: getDeferredLookups
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-packetcache.cc:187,1
    - Dst: getLookupCollisions
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-packetcache.cc:188,1
    - Dst: getInsertCollisions
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-packetcache.cc:189,1
    - Dst: getTTLTooShorts
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-packetcache.cc:190,1
    - Dst: getCleanupCount
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-packetcache.cc:191,1
    - Dst: LuaArray<DNSName>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-packetcache.cc:196,1
    - Dst: getDomainsContainingRecords
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-packetcache.cc:203,1
    - Dst: LuaArray::reserve
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-packetcache.cc:204,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-packetcache.cc:204,1
    - Dst: LuaArray::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-packetcache.cc:206,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-packetcache.cc:206,1
    - Dst: LuaArray<ComboAddress>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-packetcache.cc:212,1
    - Dst: getRecordsForDomain
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-packetcache.cc:219,1
    - Dst: LuaArray::reserve
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-packetcache.cc:220,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-packetcache.cc:220,1
    - Dst: LuaArray::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-packetcache.cc:222,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-packetcache.cc:222,1
    - Dst: open
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-packetcache.cc:231,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-packetcache.cc:231,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-packetcache.cc:233,1
    - Dst: dump
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-packetcache.cc:239,1
    - Dst: close
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-packetcache.cc:242,1
    - Dst: close
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-packetcache.cc:246,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-packetcache.cc:248,1
    CyclomaticComplexity: 34
    EdgeCount: 34
    ICount: 165
    argCount: 2
    argNames:
    - ' luaCtx'
    - client
    argTypes:
    - LuaContext
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 252
      start: 31
    functionDepth: 1
    functionLinenumber: 31
    functionLinenumberEnd: 252
    functionName: setupLuaBindingsPacketCache
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-packetcache.cc
    functionUses: 0
    functionsReached:
    - toString
    - std::to_string
    - getMaxEntries
    - std::unordered_set::insert
    - stringerror
    - DNSDistPacketCache::CacheSettings::d_payloadRanks::assign
    - vector::reserve
    - std::string
    - std::unordered_set::end
    - auto::size
    - DNSDistPacketCache::CacheSettings::d_optionsToSkip::clear
    - getHits
    - SLOG
    - static_cast<size_t>
    - boost::get<string>
    - Logging::Loggable
    - LuaArray<DNSName>
    - time
    - QType
    - warnlog
    - getOptionalValue
    - boost::get<LuaArray<string>>
    - getCleanupCount
    - DNSDistPacketCache::CacheSettings::d_optionsToSkip::insert
    - getEntriesCount
    - dnsdist::logging::getTopLogger
    - getDeferredLookups
    - std::unordered_set::begin
    - getDeferredInserts
    - writeFunction
    - c_str
    - expungeByName
    - type
    - DNSDistPacketCache::CacheSettings::d_payloadRanks::begin
    - boost::get<DNSName>
    - getMisses
    - getRecordsForDomain
    - vector::push_back
    - dump
    - DNSName
    - boost::get<LuaArray<DNSName>>
    - open
    - DNSDistPacketCache::CacheSettings::d_payloadRanks::end
    - vector::empty
    - LuaArray<ComboAddress>
    - purgeExpired
    - DNSDistPacketCache::CacheSettings::d_optionsToSkip::erase
    - getTTLTooShorts
    - std::move
    - getInsertCollisions
    - typeid
    - LuaArray::reserve
    - getDomainsContainingRecords
    - std::sort
    - checkAllParametersConsumed
    - getLookupCollisions
    - std::make_shared<DNSDistPacketCache>
    - LuaArray::emplace_back
    - isFull
    - LuaAssociativeTable<uint64_t>
    - DNSName::DNSName
    - std::unordered_set::empty
    - close
    - expunge
    linkageType: ''
    returnType: void
    signature: void setupLuaBindingsPacketCache(LuaContext& luaCtx, bool client)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: writeVariable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-vars.cc:30,1
    - Dst: writeVariable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-vars.cc:32,1
    - Dst: writeVariable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-vars.cc:34,1
    - Dst: writeVariable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-vars.cc:36,1
    - Dst: writeVariable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-vars.cc:38,1
    - Dst: writeVariable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-vars.cc:40,1
    - Dst: writeVariable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-vars.cc:42,1
    - Dst: writeVariable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-vars.cc:48,1
    - Dst: writeVariable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-vars.cc:51,1
    - Dst: writeVariable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-vars.cc:58,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 1
    argNames:
    - ' luaCtx'
    argTypes:
    - LuaContext
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 28
    functionDepth: 0
    functionLinenumber: 28
    functionLinenumberEnd: 59
    functionName: setupLuaVars
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-vars.cc
    functionUses: 2
    functionsReached:
    - writeVariable
    linkageType: ''
    returnType: void
    signature: void setupLuaVars(LuaContext& luaCtx)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: LLVMFuzzerInitialize
      Src: /src/pdns/pdns/dnsdistdist/standalone_fuzz_target_runner.cc:16,1
    - Dst: stat
      Src: /src/pdns/pdns/dnsdistdist/standalone_fuzz_target_runner.cc:22,1
    - Dst: S_ISREG
      Src: /src/pdns/pdns/dnsdistdist/standalone_fuzz_target_runner.cc:22,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/standalone_fuzz_target_runner.cc:23,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/standalone_fuzz_target_runner.cc:27,1
    - Dst: std::ifstream::seekg
      Src: /src/pdns/pdns/dnsdistdist/standalone_fuzz_target_runner.cc:30,1
    - Dst: std::ifstream::tellg
      Src: /src/pdns/pdns/dnsdistdist/standalone_fuzz_target_runner.cc:31,1
    - Dst: std::ifstream::seekg
      Src: /src/pdns/pdns/dnsdistdist/standalone_fuzz_target_runner.cc:32,1
    - Dst: std::vector::resize
      Src: /src/pdns/pdns/dnsdistdist/standalone_fuzz_target_runner.cc:35,1
    - Dst: std::ifstream::read
      Src: /src/pdns/pdns/dnsdistdist/standalone_fuzz_target_runner.cc:37,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/dnsdistdist/standalone_fuzz_target_runner.cc:37,1
    - Dst: std::vector::data
      Src: /src/pdns/pdns/dnsdistdist/standalone_fuzz_target_runner.cc:37,1
    - Dst: std::ifstream::fail
      Src: /src/pdns/pdns/dnsdistdist/standalone_fuzz_target_runner.cc:39,1
    - Dst: std::ifstream::close
      Src: /src/pdns/pdns/dnsdistdist/standalone_fuzz_target_runner.cc:40,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/standalone_fuzz_target_runner.cc:41,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/standalone_fuzz_target_runner.cc:41,1
    - Dst: std::ifstream::close
      Src: /src/pdns/pdns/dnsdistdist/standalone_fuzz_target_runner.cc:44,1
    - Dst: LLVMFuzzerTestOneInput
      Src: /src/pdns/pdns/dnsdistdist/standalone_fuzz_target_runner.cc:46,1
    - Dst: reinterpret_cast<const uint8_t*>
      Src: /src/pdns/pdns/dnsdistdist/standalone_fuzz_target_runner.cc:46,1
    - Dst: std::vector::data
      Src: /src/pdns/pdns/dnsdistdist/standalone_fuzz_target_runner.cc:46,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/standalone_fuzz_target_runner.cc:48,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 24
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 11
    functionDepth: 1
    functionLinenumber: 11
    functionLinenumberEnd: 52
    functionName: main
    functionSourceFile: /src/pdns/pdns/dnsdistdist/standalone_fuzz_target_runner.cc
    functionUses: 32
    functionsReached:
    - reinterpret_cast<char*>
    - std::vector::resize
    - LLVMFuzzerInitialize
    - std::ifstream::close
    - reinterpret_cast<const uint8_t*>
    - std::runtime_error
    - std::ifstream::seekg
    - std::ifstream::read
    - std::ifstream::tellg
    - S_ISREG
    - LLVMFuzzerTestOneInput
    - std::ifstream::fail
    - std::string
    - stat
    - std::vector::data
    linkageType: ''
    returnType: int
    signature: int main(int argc, char** argv)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: shared_from_this
      Src: /src/pdns/pdns/dnsdistdist/logging.cc:32,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 33
      start: 30
    functionDepth: 0
    functionLinenumber: 30
    functionLinenumberEnd: 33
    functionName: Logging::Logger::getptr
    functionSourceFile: /src/pdns/pdns/dnsdistdist/logging.cc
    functionUses: 6
    functionsReached:
    - shared_from_this
    linkageType: ''
    returnType: std::shared_ptr<const Logger>
    signature: std::shared_ptr<const Logger> Logger::getptr() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Logging::Logger::logMessage
      Src: /src/pdns/pdns/dnsdistdist/logging.cc:37,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - prio
    - ' msg'
    argTypes:
    - Logr::Priority
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 35
    functionDepth: 0
    functionLinenumber: 35
    functionLinenumberEnd: 38
    functionName: Logging::Logger::info
    functionSourceFile: /src/pdns/pdns/dnsdistdist/logging.cc
    functionUses: 0
    functionsReached:
    - Logging::Logger::logMessage
    linkageType: ''
    returnType: void
    signature: void Logger::info(Logr::Priority prio, const std::string& msg) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Utility::gettimeofday
      Src: /src/pdns/pdns/dnsdistdist/logging.cc:45,1
    - Dst: Entry::values::insert
      Src: /src/pdns/pdns/dnsdistdist/logging.cc:50,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/logging.cc:50,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/logging.cc:50,1
    - Dst: Entry::values::insert
      Src: /src/pdns/pdns/dnsdistdist/logging.cc:52,1
    - Dst: auto::_values::begin
      Src: /src/pdns/pdns/dnsdistdist/logging.cc:52,1
    - Dst: auto::_values::end
      Src: /src/pdns/pdns/dnsdistdist/logging.cc:52,1
    - Dst: _callback
      Src: /src/pdns/pdns/dnsdistdist/logging.cc:55,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 3
    argNames:
    - ' msg'
    - prio
    - ' err'
    argTypes:
    - std::string
    - Logr::Priority
    - std::optional<std::string>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 40
    functionDepth: 1
    functionLinenumber: 40
    functionLinenumberEnd: 56
    functionName: Logging::Logger::logMessage
    functionSourceFile: /src/pdns/pdns/dnsdistdist/logging.cc
    functionUses: 7
    functionsReached:
    - _callback
    - Entry::values::insert
    - end
    - Utility::gettimeofday
    - begin
    - auto::_values::begin
    - auto::_values::end
    linkageType: ''
    returnType: void
    signature: void Logger::logMessage(const std::string& msg, Logr::Priority prio,
      const std::optional<std::string>& err) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Logging::Logger::logMessage
      Src: /src/pdns/pdns/dnsdistdist/logging.cc:60,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/logging.cc:60,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/logging.cc:60,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - prio
    - err
    - ' msg'
    argTypes:
    - Logr::Priority
    - int
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 58
    functionDepth: 0
    functionLinenumber: 58
    functionLinenumberEnd: 61
    functionName: Logging::Logger::error
    functionSourceFile: /src/pdns/pdns/dnsdistdist/logging.cc
    functionUses: 43
    functionsReached:
    - Logging::Logger::logMessage
    - stringerror
    - std::string
    linkageType: ''
    returnType: void
    signature: void Logger::error(Logr::Priority prio, int err, const std::string&
      msg) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Logging::Logger::logMessage
      Src: /src/pdns/pdns/dnsdistdist/logging.cc:65,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - prio
    - ' err'
    - ' msg'
    argTypes:
    - Logr::Priority
    - std::string
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 63
    functionDepth: 0
    functionLinenumber: 63
    functionLinenumberEnd: 66
    functionName: Logging::Logger::error
    functionSourceFile: /src/pdns/pdns/dnsdistdist/logging.cc
    functionUses: 43
    functionsReached:
    - Logging::Logger::logMessage
    linkageType: ''
    returnType: void
    signature: void Logger::error(Logr::Priority prio, const std::string& err, const
      std::string& msg) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<Logger>
      Src: /src/pdns/pdns/dnsdistdist/logging.cc:70,1
    - Dst: Logging::Logger::getptr
      Src: /src/pdns/pdns/dnsdistdist/logging.cc:70,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - level
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 68
    functionDepth: 0
    functionLinenumber: 68
    functionLinenumberEnd: 72
    functionName: Logging::Logger::v
    functionSourceFile: /src/pdns/pdns/dnsdistdist/logging.cc
    functionUses: 0
    functionsReached:
    - Logging::Logger::getptr
    - std::make_shared<Logger>
    linkageType: ''
    returnType: std::shared_ptr<Logr::Logger>
    signature: std::shared_ptr<Logr::Logger> Logger::v(size_t level) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<Logger>
      Src: /src/pdns/pdns/dnsdistdist/logging.cc:76,1
    - Dst: Logging::Logger::getptr
      Src: /src/pdns/pdns/dnsdistdist/logging.cc:76,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ' values'
    argTypes:
    - std::map<std::string, std::string>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 74
    functionDepth: 0
    functionLinenumber: 74
    functionLinenumberEnd: 79
    functionName: Logging::Logger::withValues
    functionSourceFile: /src/pdns/pdns/dnsdistdist/logging.cc
    functionUses: 0
    functionsReached:
    - Logging::Logger::getptr
    - std::make_shared<Logger>
    linkageType: ''
    returnType: std::shared_ptr<Logr::Logger>
    signature: std::shared_ptr<Logr::Logger> Logger::withValues(const std::map<std::string,
      std::string>& values) const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<Logger>
      Src: /src/pdns/pdns/dnsdistdist/logging.cc:85,1
    - Dst: Logging::Logger::getptr
      Src: /src/pdns/pdns/dnsdistdist/logging.cc:85,1
    - Dst: value
      Src: /src/pdns/pdns/dnsdistdist/logging.cc:85,1
    - Dst: std::make_shared<Logger>
      Src: /src/pdns/pdns/dnsdistdist/logging.cc:88,1
    - Dst: Logging::Logger::getptr
      Src: /src/pdns/pdns/dnsdistdist/logging.cc:88,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - ' name'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 81
    functionDepth: 0
    functionLinenumber: 81
    functionLinenumberEnd: 91
    functionName: Logging::Logger::withName
    functionSourceFile: /src/pdns/pdns/dnsdistdist/logging.cc
    functionUses: 0
    functionsReached:
    - Logging::Logger::getptr
    - std::make_shared<Logger>
    - value
    linkageType: ''
    returnType: std::shared_ptr<Logr::Logger>
    signature: std::shared_ptr<Logr::Logger> Logger::withName(const std::string& name)
      const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<Logger>
      Src: /src/pdns/pdns/dnsdistdist/logging.cc:94,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - callback
    argTypes:
    - EntryLogger
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 92
    functionDepth: 0
    functionLinenumber: 92
    functionLinenumberEnd: 95
    functionName: Logging::Logger::create
    functionSourceFile: /src/pdns/pdns/dnsdistdist/logging.cc
    functionUses: 7
    functionsReached:
    - std::make_shared<Logger>
    linkageType: ''
    returnType: std::shared_ptr<Logger>
    signature: std::shared_ptr<Logger> Logger::create(EntryLogger callback)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<Logger>
      Src: /src/pdns/pdns/dnsdistdist/logging.cc:98,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - callback
    - ' name'
    argTypes:
    - EntryLogger
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 96
    functionDepth: 0
    functionLinenumber: 96
    functionLinenumberEnd: 99
    functionName: Logging::Logger::create
    functionSourceFile: /src/pdns/pdns/dnsdistdist/logging.cc
    functionUses: 7
    functionsReached:
    - std::make_shared<Logger>
    linkageType: ''
    returnType: std::shared_ptr<Logger>
    signature: std::shared_ptr<Logger> Logger::create(EntryLogger callback, const
      std::string& name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - callback
    argTypes:
    - EntryLogger
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 104
      start: 101
    functionDepth: 0
    functionLinenumber: 101
    functionLinenumberEnd: 104
    functionName: Logging::Logger::Logger
    functionSourceFile: /src/pdns/pdns/dnsdistdist/logging.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Logger::Logger(EntryLogger callback)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/logging.cc:106,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - callback
    - name
    argTypes:
    - EntryLogger
    - std::optional<std::string>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 105
    functionDepth: 0
    functionLinenumber: 105
    functionLinenumberEnd: 108
    functionName: Logging::Logger::Logger
    functionSourceFile: /src/pdns/pdns/dnsdistdist/logging.cc
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void Logger::Logger(EntryLogger callback, std::optional<std::string>
      name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/logging.cc:110,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/logging.cc:110,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 4
    argNames:
    - parent
    - name
    - lvl
    - callback
    argTypes:
    - std::shared_ptr<const Logger>
    - std::optional<std::string>
    - size_t
    - EntryLogger
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 112
      start: 109
    functionDepth: 0
    functionLinenumber: 109
    functionLinenumberEnd: 112
    functionName: Logging::Logger::Logger
    functionSourceFile: /src/pdns/pdns/dnsdistdist/logging.cc
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void Logger::Logger(std::shared_ptr<const Logger> parent, std::optional<std::string>
      name, size_t lvl, EntryLogger callback)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 114
    functionDepth: 0
    functionLinenumber: 114
    functionLinenumberEnd: 114
    functionName: Logger::~Logger()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/logging.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Logger::~Logger()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: shared_from_this
      Src: /src/pdns/pdns/dnsdistdist/logging.cc:32,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 33
      start: 30
    functionDepth: 0
    functionLinenumber: 30
    functionLinenumberEnd: 33
    functionName: Logging::Logger::getptr
    functionSourceFile: /src/pdns/pdns/dnsdistdist/logging.cc
    functionUses: 9
    functionsReached:
    - shared_from_this
    linkageType: ''
    returnType: std::shared_ptr<const Logger>
    signature: std::shared_ptr<const Logger> Logger::getptr() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Logging::Logger::logMessage
      Src: /src/pdns/pdns/dnsdistdist/logging.cc:37,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - prio
    - ' msg'
    argTypes:
    - Logr::Priority
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 35
    functionDepth: 0
    functionLinenumber: 35
    functionLinenumberEnd: 38
    functionName: Logging::Logger::info
    functionSourceFile: /src/pdns/pdns/dnsdistdist/logging.cc
    functionUses: 0
    functionsReached:
    - Logging::Logger::logMessage
    linkageType: ''
    returnType: void
    signature: void Logger::info(Logr::Priority prio, const std::string& msg) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Utility::gettimeofday
      Src: /src/pdns/pdns/dnsdistdist/logging.cc:45,1
    - Dst: Entry::values::insert
      Src: /src/pdns/pdns/dnsdistdist/logging.cc:50,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/logging.cc:50,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/logging.cc:50,1
    - Dst: Entry::values::insert
      Src: /src/pdns/pdns/dnsdistdist/logging.cc:52,1
    - Dst: auto::_values::begin
      Src: /src/pdns/pdns/dnsdistdist/logging.cc:52,1
    - Dst: auto::_values::end
      Src: /src/pdns/pdns/dnsdistdist/logging.cc:52,1
    - Dst: _callback
      Src: /src/pdns/pdns/dnsdistdist/logging.cc:55,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 3
    argNames:
    - ' msg'
    - prio
    - ' err'
    argTypes:
    - std::string
    - Logr::Priority
    - std::optional<std::string>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 40
    functionDepth: 1
    functionLinenumber: 40
    functionLinenumberEnd: 56
    functionName: Logging::Logger::logMessage
    functionSourceFile: /src/pdns/pdns/dnsdistdist/logging.cc
    functionUses: 10
    functionsReached:
    - _callback
    - Entry::values::insert
    - end
    - Utility::gettimeofday
    - begin
    - auto::_values::begin
    - auto::_values::end
    linkageType: ''
    returnType: void
    signature: void Logger::logMessage(const std::string& msg, Logr::Priority prio,
      const std::optional<std::string>& err) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Logging::Logger::logMessage
      Src: /src/pdns/pdns/dnsdistdist/logging.cc:60,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/logging.cc:60,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/logging.cc:60,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - prio
    - err
    - ' msg'
    argTypes:
    - Logr::Priority
    - int
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 58
    functionDepth: 0
    functionLinenumber: 58
    functionLinenumberEnd: 61
    functionName: Logging::Logger::error
    functionSourceFile: /src/pdns/pdns/dnsdistdist/logging.cc
    functionUses: 43
    functionsReached:
    - Logging::Logger::logMessage
    - stringerror
    - std::string
    linkageType: ''
    returnType: void
    signature: void Logger::error(Logr::Priority prio, int err, const std::string&
      msg) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Logging::Logger::logMessage
      Src: /src/pdns/pdns/dnsdistdist/logging.cc:65,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - prio
    - ' err'
    - ' msg'
    argTypes:
    - Logr::Priority
    - std::string
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 63
    functionDepth: 0
    functionLinenumber: 63
    functionLinenumberEnd: 66
    functionName: Logging::Logger::error
    functionSourceFile: /src/pdns/pdns/dnsdistdist/logging.cc
    functionUses: 43
    functionsReached:
    - Logging::Logger::logMessage
    linkageType: ''
    returnType: void
    signature: void Logger::error(Logr::Priority prio, const std::string& err, const
      std::string& msg) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<Logger>
      Src: /src/pdns/pdns/dnsdistdist/logging.cc:70,1
    - Dst: Logging::Logger::getptr
      Src: /src/pdns/pdns/dnsdistdist/logging.cc:70,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - level
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 68
    functionDepth: 0
    functionLinenumber: 68
    functionLinenumberEnd: 72
    functionName: Logging::Logger::v
    functionSourceFile: /src/pdns/pdns/dnsdistdist/logging.cc
    functionUses: 0
    functionsReached:
    - Logging::Logger::getptr
    - std::make_shared<Logger>
    linkageType: ''
    returnType: std::shared_ptr<Logr::Logger>
    signature: std::shared_ptr<Logr::Logger> Logger::v(size_t level) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<Logger>
      Src: /src/pdns/pdns/dnsdistdist/logging.cc:76,1
    - Dst: Logging::Logger::getptr
      Src: /src/pdns/pdns/dnsdistdist/logging.cc:76,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ' values'
    argTypes:
    - std::map<std::string, std::string>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 74
    functionDepth: 0
    functionLinenumber: 74
    functionLinenumberEnd: 79
    functionName: Logging::Logger::withValues
    functionSourceFile: /src/pdns/pdns/dnsdistdist/logging.cc
    functionUses: 0
    functionsReached:
    - Logging::Logger::getptr
    - std::make_shared<Logger>
    linkageType: ''
    returnType: std::shared_ptr<Logr::Logger>
    signature: std::shared_ptr<Logr::Logger> Logger::withValues(const std::map<std::string,
      std::string>& values) const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<Logger>
      Src: /src/pdns/pdns/dnsdistdist/logging.cc:85,1
    - Dst: Logging::Logger::getptr
      Src: /src/pdns/pdns/dnsdistdist/logging.cc:85,1
    - Dst: value
      Src: /src/pdns/pdns/dnsdistdist/logging.cc:85,1
    - Dst: std::make_shared<Logger>
      Src: /src/pdns/pdns/dnsdistdist/logging.cc:88,1
    - Dst: Logging::Logger::getptr
      Src: /src/pdns/pdns/dnsdistdist/logging.cc:88,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - ' name'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 81
    functionDepth: 0
    functionLinenumber: 81
    functionLinenumberEnd: 91
    functionName: Logging::Logger::withName
    functionSourceFile: /src/pdns/pdns/dnsdistdist/logging.cc
    functionUses: 0
    functionsReached:
    - Logging::Logger::getptr
    - std::make_shared<Logger>
    - value
    linkageType: ''
    returnType: std::shared_ptr<Logr::Logger>
    signature: std::shared_ptr<Logr::Logger> Logger::withName(const std::string& name)
      const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<Logger>
      Src: /src/pdns/pdns/dnsdistdist/logging.cc:94,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - callback
    argTypes:
    - EntryLogger
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 92
    functionDepth: 0
    functionLinenumber: 92
    functionLinenumberEnd: 95
    functionName: Logging::Logger::create
    functionSourceFile: /src/pdns/pdns/dnsdistdist/logging.cc
    functionUses: 7
    functionsReached:
    - std::make_shared<Logger>
    linkageType: ''
    returnType: std::shared_ptr<Logger>
    signature: std::shared_ptr<Logger> Logger::create(EntryLogger callback)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<Logger>
      Src: /src/pdns/pdns/dnsdistdist/logging.cc:98,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - callback
    - ' name'
    argTypes:
    - EntryLogger
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 96
    functionDepth: 0
    functionLinenumber: 96
    functionLinenumberEnd: 99
    functionName: Logging::Logger::create
    functionSourceFile: /src/pdns/pdns/dnsdistdist/logging.cc
    functionUses: 7
    functionsReached:
    - std::make_shared<Logger>
    linkageType: ''
    returnType: std::shared_ptr<Logger>
    signature: std::shared_ptr<Logger> Logger::create(EntryLogger callback, const
      std::string& name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - callback
    argTypes:
    - EntryLogger
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 104
      start: 101
    functionDepth: 0
    functionLinenumber: 101
    functionLinenumberEnd: 104
    functionName: Logging::Logger::Logger
    functionSourceFile: /src/pdns/pdns/dnsdistdist/logging.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Logger::Logger(EntryLogger callback)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/logging.cc:106,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - callback
    - name
    argTypes:
    - EntryLogger
    - std::optional<std::string>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 105
    functionDepth: 0
    functionLinenumber: 105
    functionLinenumberEnd: 108
    functionName: Logging::Logger::Logger
    functionSourceFile: /src/pdns/pdns/dnsdistdist/logging.cc
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void Logger::Logger(EntryLogger callback, std::optional<std::string>
      name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/logging.cc:110,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/logging.cc:110,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 4
    argNames:
    - parent
    - name
    - lvl
    - callback
    argTypes:
    - std::shared_ptr<const Logger>
    - std::optional<std::string>
    - size_t
    - EntryLogger
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 112
      start: 109
    functionDepth: 0
    functionLinenumber: 109
    functionLinenumberEnd: 112
    functionName: Logging::Logger::Logger
    functionSourceFile: /src/pdns/pdns/dnsdistdist/logging.cc
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void Logger::Logger(std::shared_ptr<const Logger> parent, std::optional<std::string>
      name, size_t lvl, EntryLogger callback)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 114
    functionDepth: 0
    functionLinenumber: 114
    functionLinenumberEnd: 114
    functionName: Logger::~Logger()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/logging.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Logger::~Logger()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: std::scoped_lock
      Src: /src/pdns/pdns/dnsdistdist/logging.cc:125,1
    - Dst: strftime
      Src: /src/pdns/pdns/dnsdistdist/logging.cc:128,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/logging.cc:128,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/logging.cc:128,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/logging.cc:128,1
    - Dst: localtime_r
      Src: /src/pdns/pdns/dnsdistdist/logging.cc:128,1
    - Dst: snprintf
      Src: /src/pdns/pdns/dnsdistdist/logging.cc:131,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/logging.cc:131,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/logging.cc:131,1
    - Dst: static_cast<long long>
      Src: /src/pdns/pdns/dnsdistdist/logging.cc:131,1
    - Dst: snprintf
      Src: /src/pdns/pdns/dnsdistdist/logging.cc:134,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/logging.cc:134,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/logging.cc:134,1
    - Dst: static_cast<long>
      Src: /src/pdns/pdns/dnsdistdist/logging.cc:134,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/logging.cc:135,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 3
    argNames:
    - ' tval'
    - ' buf'
    - ' format'
    argTypes:
    - struct timeval
    - std::array<char, 64>
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 136
      start: 119
    functionDepth: 0
    functionLinenumber: 119
    functionLinenumberEnd: 136
    functionName: Logging::toTimestampStringMilli
    functionSourceFile: /src/pdns/pdns/dnsdistdist/logging.cc
    functionUses: 5
    functionsReached:
    - strftime
    - snprintf
    - localtime_r
    - c_str
    - static_cast<long long>
    - size
    - static_cast<long>
    - data
    - std::scoped_lock
    - at
    linkageType: ''
    returnType: char
    signature: char * Logging::toTimestampStringMilli(const struct timeval& tval,
      std::array<char, 64>& buf, const std::string& format)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<time_t>
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:43,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - now
    argTypes:
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 41
    functionDepth: 0
    functionLinenumber: 41
    functionLinenumberEnd: 44
    functionName: oneDayFromNow
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc
    functionUses: 0
    functionsReached:
    - static_cast<time_t>
    linkageType: ''
    returnType: time_t
    signature: time_t oneDayFromNow(time_t now)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSCryptPrivateKey::DNSCryptPrivateKey
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:49,1
    - Dst: time
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:53,1
    - Dst: DNSCryptContext::generateProviderKeys
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:54,1
    - Dst: DNSCryptContext::generateCertificate
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:55,1
    - Dst: oneDayFromNow
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:55,1
    - Dst: std::make_shared<DNSCryptContext>
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:56,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:61,1
    - Dst: std::make_shared<DNSCryptQuery>
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:63,1
    - Dst: std::shared_ptr::parsePacket
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:64,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:66,1
    - Dst: std::shared_ptr::isValid
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:66,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:67,1
    - Dst: std::shared_ptr::isEncrypted
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:67,1
    - Dst: std::shared_ptr::getCertificateResponse
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:71,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:74,1
    - Dst: PacketBuffer::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:74,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:74,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:76,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:77,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:78,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:79,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:81,1
    - Dst: MOADNSParser::d_qname::toString
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:81,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:82,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:83,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 47
    functionDepth: 1
    functionLinenumber: 47
    functionLinenumberEnd: 84
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc
    functionUses: 0
    functionsReached:
    - std::shared_ptr::getCertificateResponse
    - PacketBuffer::data
    - DNSCryptContext::generateProviderKeys
    - std::shared_ptr::isEncrypted
    - time
    - oneDayFromNow
    - DNSCryptContext::generateCertificate
    - GenericDNSPacketWriter::getHeader
    - std::shared_ptr::parsePacket
    - BOOST_CHECK_EQUAL
    - PacketBuffer::size
    - DNSCryptPrivateKey::DNSCryptPrivateKey
    - std::shared_ptr::isValid
    - reinterpret_cast<const char*>
    - std::make_shared<DNSCryptQuery>
    - BOOST_CHECK
    - MOADNSParser::d_qname::toString
    - std::make_shared<DNSCryptContext>
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(DNSCryptPlaintextQuery)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSCryptPrivateKey::DNSCryptPrivateKey
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:89,1
    - Dst: time
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:93,1
    - Dst: DNSCryptContext::generateProviderKeys
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:94,1
    - Dst: DNSCryptContext::generateCertificate
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:95,1
    - Dst: oneDayFromNow
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:95,1
    - Dst: std::make_shared<DNSCryptContext>
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:96,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:102,1
    - Dst: std::make_shared<DNSCryptQuery>
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:104,1
    - Dst: std::shared_ptr::parsePacket
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:105,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:107,1
    - Dst: std::shared_ptr::isValid
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:107,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 87
    functionDepth: 1
    functionLinenumber: 87
    functionLinenumberEnd: 108
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc
    functionUses: 0
    functionsReached:
    - DNSCryptContext::generateProviderKeys
    - time
    - oneDayFromNow
    - DNSCryptContext::generateCertificate
    - GenericDNSPacketWriter::getHeader
    - std::shared_ptr::parsePacket
    - BOOST_CHECK_EQUAL
    - DNSCryptPrivateKey::DNSCryptPrivateKey
    - std::shared_ptr::isValid
    - std::make_shared<DNSCryptQuery>
    - std::make_shared<DNSCryptContext>
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(DNSCryptPlaintextQueryInvalidA)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSCryptPrivateKey::DNSCryptPrivateKey
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:113,1
    - Dst: time
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:117,1
    - Dst: DNSCryptContext::generateProviderKeys
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:118,1
    - Dst: DNSCryptContext::generateCertificate
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:119,1
    - Dst: oneDayFromNow
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:119,1
    - Dst: std::make_shared<DNSCryptContext>
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:120,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:126,1
    - Dst: std::make_shared<DNSCryptQuery>
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:128,1
    - Dst: std::shared_ptr::parsePacket
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:129,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:131,1
    - Dst: std::shared_ptr::isValid
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:131,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 132
      start: 111
    functionDepth: 1
    functionLinenumber: 111
    functionLinenumberEnd: 132
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc
    functionUses: 0
    functionsReached:
    - DNSCryptContext::generateProviderKeys
    - time
    - oneDayFromNow
    - DNSCryptContext::generateCertificate
    - GenericDNSPacketWriter::getHeader
    - std::shared_ptr::parsePacket
    - BOOST_CHECK_EQUAL
    - DNSCryptPrivateKey::DNSCryptPrivateKey
    - std::shared_ptr::isValid
    - std::make_shared<DNSCryptQuery>
    - std::make_shared<DNSCryptContext>
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(DNSCryptPlaintextQueryInvalidProviderName)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSCryptPrivateKey::DNSCryptPrivateKey
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:137,1
    - Dst: time
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:141,1
    - Dst: DNSCryptContext::generateProviderKeys
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:142,1
    - Dst: DNSCryptContext::generateCertificate
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:143,1
    - Dst: oneDayFromNow
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:143,1
    - Dst: std::make_shared<DNSCryptContext>
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:144,1
    - Dst: DNSCryptPrivateKey::DNSCryptPrivateKey
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:146,1
    - Dst: DNSCryptContext::generateResolverKeyPair
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:148,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:155,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:157,1
    - Dst: auto::encryptQuery
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:158,1
    - Dst: std::make_shared<DNSCryptCert>
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:158,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:160,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:161,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:161,1
    - Dst: std::make_shared<DNSCryptQuery>
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:163,1
    - Dst: std::shared_ptr::parsePacket
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:165,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:167,1
    - Dst: std::shared_ptr::isValid
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:167,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:168,1
    - Dst: std::shared_ptr::isEncrypted
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:168,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:171,1
    - Dst: PacketBuffer::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:171,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:171,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:173,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:174,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:175,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:176,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:178,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:179,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:180,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 181
      start: 135
    functionDepth: 1
    functionLinenumber: 135
    functionLinenumberEnd: 181
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc
    functionUses: 0
    functionsReached:
    - GenericDNSPacketWriter::getHeader
    - oneDayFromNow
    - PacketBuffer::size
    - std::shared_ptr::isEncrypted
    - time
    - DNSCryptContext::generateCertificate
    - DNSCryptPrivateKey::DNSCryptPrivateKey
    - std::shared_ptr::isValid
    - std::make_shared<DNSCryptCert>
    - auto::encryptQuery
    - DNSCryptContext::generateResolverKeyPair
    - reinterpret_cast<const char*>
    - std::make_shared<DNSCryptQuery>
    - PacketBuffer::data
    - DNSCryptContext::generateProviderKeys
    - std::shared_ptr::parsePacket
    - BOOST_CHECK_EQUAL
    - BOOST_CHECK
    - std::make_shared<DNSCryptContext>
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(DNSCryptEncryptedQueryValid)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSCryptPrivateKey::DNSCryptPrivateKey
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:185,1
    - Dst: time
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:189,1
    - Dst: DNSCryptContext::generateProviderKeys
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:190,1
    - Dst: DNSCryptContext::generateCertificate
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:191,1
    - Dst: oneDayFromNow
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:191,1
    - Dst: std::make_shared<DNSCryptContext>
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:192,1
    - Dst: DNSCryptPrivateKey::DNSCryptPrivateKey
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:194,1
    - Dst: DNSCryptContext::generateResolverKeyPair
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:196,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:203,1
    - Dst: PacketBuffer::resize
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:205,1
    - Dst: auto::encryptQuery
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:206,1
    - Dst: std::make_shared<DNSCryptCert>
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:206,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:208,1
    - Dst: std::make_shared<DNSCryptQuery>
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:210,1
    - Dst: std::shared_ptr::parsePacket
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:212,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:214,1
    - Dst: std::shared_ptr::isValid
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:214,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:215,1
    - Dst: std::shared_ptr::isEncrypted
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:215,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:219,1
    - Dst: PacketBuffer::resize
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:220,1
    - Dst: std::shared_ptr::encryptResponse
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:222,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 223
      start: 183
    functionDepth: 1
    functionLinenumber: 183
    functionLinenumberEnd: 223
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc
    functionUses: 0
    functionsReached:
    - std::shared_ptr::encryptResponse
    - DNSCryptContext::generateProviderKeys
    - std::shared_ptr::isEncrypted
    - time
    - oneDayFromNow
    - DNSCryptContext::generateCertificate
    - GenericDNSPacketWriter::getHeader
    - std::make_shared<DNSCryptCert>
    - BOOST_CHECK_EQUAL
    - auto::encryptQuery
    - DNSCryptContext::generateResolverKeyPair
    - std::shared_ptr::parsePacket
    - DNSCryptPrivateKey::DNSCryptPrivateKey
    - std::shared_ptr::isValid
    - PacketBuffer::resize
    - std::make_shared<DNSCryptQuery>
    - std::make_shared<DNSCryptContext>
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(DNSCryptEncryptResponse)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSCryptPrivateKey::DNSCryptPrivateKey
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:228,1
    - Dst: time
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:232,1
    - Dst: DNSCryptContext::generateProviderKeys
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:233,1
    - Dst: DNSCryptContext::generateCertificate
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:234,1
    - Dst: oneDayFromNow
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:234,1
    - Dst: std::make_shared<DNSCryptContext>
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:235,1
    - Dst: DNSCryptPrivateKey::DNSCryptPrivateKey
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:237,1
    - Dst: DNSCryptContext::generateResolverKeyPair
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:240,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:247,1
    - Dst: auto::encryptQuery
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:249,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:249,1
    - Dst: std::make_shared<DNSCryptCert>
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:249,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:250,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 251
      start: 226
    functionDepth: 1
    functionLinenumber: 226
    functionLinenumberEnd: 251
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc
    functionUses: 0
    functionsReached:
    - DNSCryptContext::generateProviderKeys
    - time
    - oneDayFromNow
    - DNSCryptContext::generateCertificate
    - GenericDNSPacketWriter::getHeader
    - std::make_shared<DNSCryptCert>
    - BOOST_CHECK_EQUAL
    - auto::encryptQuery
    - DNSCryptContext::generateResolverKeyPair
    - PacketBuffer::size
    - DNSCryptPrivateKey::DNSCryptPrivateKey
    - std::make_shared<DNSCryptContext>
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(DNSCryptEncryptedQueryValidButShort)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSCryptPrivateKey::DNSCryptPrivateKey
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:256,1
    - Dst: time
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:260,1
    - Dst: DNSCryptContext::generateProviderKeys
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:261,1
    - Dst: DNSCryptContext::generateCertificate
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:262,1
    - Dst: oneDayFromNow
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:262,1
    - Dst: std::make_shared<DNSCryptContext>
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:263,1
    - Dst: DNSCryptPrivateKey::DNSCryptPrivateKey
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:265,1
    - Dst: DNSCryptContext::generateResolverKeyPair
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:268,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:275,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:277,1
    - Dst: auto::encryptQuery
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:278,1
    - Dst: std::make_shared<DNSCryptCert>
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:278,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:280,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:281,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:281,1
    - Dst: DNSCryptContext::generateCertificate
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:284,1
    - Dst: oneDayFromNow
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:284,1
    - Dst: auto::addNewCertificate
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:285,1
    - Dst: auto::markInactive
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:286,1
    - Dst: DNSCryptCert::getSerial
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:286,1
    - Dst: std::make_shared<DNSCryptQuery>
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:288,1
    - Dst: std::shared_ptr::parsePacket
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:290,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:292,1
    - Dst: std::shared_ptr::isValid
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:292,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:293,1
    - Dst: std::shared_ptr::isEncrypted
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:293,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:296,1
    - Dst: PacketBuffer::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:296,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:296,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:298,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:299,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:300,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:301,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:303,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:304,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:305,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 20
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 306
      start: 254
    functionDepth: 1
    functionLinenumber: 254
    functionLinenumberEnd: 306
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc
    functionUses: 0
    functionsReached:
    - GenericDNSPacketWriter::getHeader
    - oneDayFromNow
    - auto::addNewCertificate
    - PacketBuffer::size
    - std::shared_ptr::isEncrypted
    - time
    - DNSCryptContext::generateCertificate
    - DNSCryptPrivateKey::DNSCryptPrivateKey
    - std::shared_ptr::isValid
    - std::make_shared<DNSCryptCert>
    - auto::encryptQuery
    - DNSCryptContext::generateResolverKeyPair
    - reinterpret_cast<const char*>
    - std::make_shared<DNSCryptQuery>
    - DNSCryptCert::getSerial
    - PacketBuffer::data
    - DNSCryptContext::generateProviderKeys
    - std::shared_ptr::parsePacket
    - auto::markInactive
    - BOOST_CHECK_EQUAL
    - BOOST_CHECK
    - std::make_shared<DNSCryptContext>
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(DNSCryptEncryptedQueryValidWithOldKey)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSCryptPrivateKey::DNSCryptPrivateKey
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:311,1
    - Dst: time
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:315,1
    - Dst: DNSCryptContext::generateProviderKeys
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:316,1
    - Dst: DNSCryptContext::generateCertificate
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:317,1
    - Dst: oneDayFromNow
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:317,1
    - Dst: std::make_shared<DNSCryptContext>
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:318,1
    - Dst: DNSCryptPrivateKey::DNSCryptPrivateKey
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:320,1
    - Dst: DNSCryptContext::generateResolverKeyPair
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:323,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:330,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:332,1
    - Dst: auto::encryptQuery
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:333,1
    - Dst: std::make_shared<DNSCryptCert>
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:333,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:335,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:336,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:336,1
    - Dst: DNSCryptContext::generateCertificate
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:339,1
    - Dst: oneDayFromNow
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:339,1
    - Dst: auto::addNewCertificate
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:340,1
    - Dst: auto::markInactive
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:341,1
    - Dst: DNSCryptCert::getSerial
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:341,1
    - Dst: auto::removeInactiveCertificate
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:342,1
    - Dst: DNSCryptCert::getSerial
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:342,1
    - Dst: std::make_shared<DNSCryptQuery>
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:346,1
    - Dst: std::shared_ptr::parsePacket
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:348,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:350,1
    - Dst: std::shared_ptr::isValid
      Src: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc:350,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 351
      start: 309
    functionDepth: 1
    functionLinenumber: 309
    functionLinenumberEnd: 351
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc
    functionUses: 0
    functionsReached:
    - GenericDNSPacketWriter::getHeader
    - oneDayFromNow
    - auto::addNewCertificate
    - PacketBuffer::size
    - time
    - DNSCryptContext::generateCertificate
    - DNSCryptPrivateKey::DNSCryptPrivateKey
    - std::shared_ptr::isValid
    - auto::removeInactiveCertificate
    - std::make_shared<DNSCryptCert>
    - auto::encryptQuery
    - DNSCryptContext::generateResolverKeyPair
    - std::make_shared<DNSCryptQuery>
    - DNSCryptCert::getSerial
    - DNSCryptContext::generateProviderKeys
    - std::shared_ptr::parsePacket
    - auto::markInactive
    - BOOST_CHECK_EQUAL
    - BOOST_CHECK
    - std::make_shared<DNSCryptContext>
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(DNSCryptEncryptedQueryInvalidWithWrongKey)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 66
    functionDepth: 0
    functionLinenumber: 66
    functionLinenumberEnd: 66
    functionName: ~DNSAction()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~DNSAction()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 68
    functionDepth: 0
    functionLinenumber: 68
    functionLinenumberEnd: 71
    functionName: DNSAction::getStats
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::map<std::string, double>
    signature: std::map<std::string, double> getStats() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 72
    functionDepth: 0
    functionLinenumber: 72
    functionLinenumberEnd: 74
    functionName: DNSAction::reload
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void reload()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 91
    functionDepth: 0
    functionLinenumber: 91
    functionLinenumberEnd: 91
    functionName: ~DNSResponseAction()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~DNSResponseAction()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 93
    functionDepth: 0
    functionLinenumber: 93
    functionLinenumberEnd: 95
    functionName: DNSResponseAction::reload
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void reload()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistsvc_cc.cc:24,1
    - Dst: generateSVCPayload
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistsvc_cc.cc:24,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistsvc_cc.cc:24,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistsvc_cc.cc:24,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistsvc_cc.cc:24,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistsvc_cc.cc:30,1
    - Dst: generateSVCPayload
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistsvc_cc.cc:30,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistsvc_cc.cc:30,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistsvc_cc.cc:30,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistsvc_cc.cc:30,1
    - Dst: DNSName::wirelength
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistsvc_cc.cc:39,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistsvc_cc.cc:40,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistsvc_cc.cc:40,1
    - Dst: std::string_view
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistsvc_cc.cc:43,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistsvc_cc.cc:43,1
    - Dst: std::vector::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistsvc_cc.cc:43,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistsvc_cc.cc:43,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistsvc_cc.cc:44,1
    - Dst: PacketReader::get16BitInt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistsvc_cc.cc:44,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistsvc_cc.cc:47,1
    - Dst: std::vector::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistsvc_cc.cc:47,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistsvc_cc.cc:47,1
    - Dst: PacketReader::getPosition
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistsvc_cc.cc:47,1
    - Dst: PacketReader::skip
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistsvc_cc.cc:48,1
    - Dst: DNSName::wirelength
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistsvc_cc.cc:48,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistsvc_cc.cc:49,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistsvc_cc.cc:49,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistsvc_cc.cc:49,1
    - Dst: PacketReader::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistsvc_cc.cc:51,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistsvc_cc.cc:52,1
    - Dst: std::set::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistsvc_cc.cc:52,1
    - Dst: std::set::begin
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistsvc_cc.cc:53,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistsvc_cc.cc:54,1
    - Dst: auto::getKey
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistsvc_cc.cc:54,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistsvc_cc.cc:56,1
    - Dst: auto::getKey
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistsvc_cc.cc:56,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistsvc_cc.cc:58,1
    - Dst: auto::getKey
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistsvc_cc.cc:58,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistsvc_cc.cc:60,1
    - Dst: auto::getKey
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistsvc_cc.cc:60,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistsvc_cc.cc:62,1
    - Dst: auto::getKey
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistsvc_cc.cc:62,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistsvc_cc.cc:71,1
    - Dst: generateSVCPayload
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistsvc_cc.cc:71,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistsvc_cc.cc:71,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistsvc_cc.cc:71,1
    - Dst: std::pair<uint16_t, std::string>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistsvc_cc.cc:71,1
    - Dst: DNSName::wirelength
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistsvc_cc.cc:73,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistsvc_cc.cc:73,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistsvc_cc.cc:73,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistsvc_cc.cc:74,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistsvc_cc.cc:74,1
    - Dst: std::string_view
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistsvc_cc.cc:77,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistsvc_cc.cc:77,1
    - Dst: std::vector::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistsvc_cc.cc:77,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistsvc_cc.cc:77,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistsvc_cc.cc:78,1
    - Dst: PacketReader::get16BitInt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistsvc_cc.cc:78,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistsvc_cc.cc:81,1
    - Dst: std::vector::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistsvc_cc.cc:81,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistsvc_cc.cc:81,1
    - Dst: PacketReader::getPosition
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistsvc_cc.cc:81,1
    - Dst: PacketReader::skip
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistsvc_cc.cc:82,1
    - Dst: DNSName::wirelength
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistsvc_cc.cc:82,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistsvc_cc.cc:83,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistsvc_cc.cc:83,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistsvc_cc.cc:83,1
    - Dst: PacketReader::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistsvc_cc.cc:85,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistsvc_cc.cc:86,1
    - Dst: std::set::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistsvc_cc.cc:86,1
    - Dst: std::set::begin
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistsvc_cc.cc:87,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistsvc_cc.cc:88,1
    - Dst: auto::getKey
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistsvc_cc.cc:88,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistsvc_cc.cc:90,1
    - Dst: auto::getKey
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistsvc_cc.cc:90,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistsvc_cc.cc:92,1
    - Dst: auto::getKey
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistsvc_cc.cc:92,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistsvc_cc.cc:94,1
    - Dst: auto::getKey
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistsvc_cc.cc:94,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistsvc_cc.cc:96,1
    - Dst: auto::getKey
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistsvc_cc.cc:96,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistsvc_cc.cc:98,1
    - Dst: auto::getKey
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistsvc_cc.cc:98,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistsvc_cc.cc:100,1
    - Dst: auto::getKey
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistsvc_cc.cc:100,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistsvc_cc.cc:102,1
    - Dst: static_cast<uint16_t>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistsvc_cc.cc:102,1
    - Dst: auto::getKey
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistsvc_cc.cc:102,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 43
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 104
      start: 16
    functionDepth: 1
    functionLinenumber: 16
    functionLinenumberEnd: 104
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistsvc_cc.cc
    functionUses: 0
    functionsReached:
    - std::pair<uint16_t, std::string>
    - DNSName::toString
    - PacketReader::xfrSvcParamKeyVals
    - std::string
    - std::string::size
    - std::vector::data
    - DNSName::wirelength
    - auto::getKey
    - std::vector::size
    - std::set::size
    - PacketReader::skip
    - PacketReader::get16BitInt
    - static_cast<uint16_t>
    - PacketReader::getPosition
    - BOOST_REQUIRE_EQUAL
    - std::string_view
    - reinterpret_cast<const char*>
    - ComboAddress
    - generateSVCPayload
    - BOOST_CHECK_EQUAL
    - std::set::begin
    - BOOST_CHECK
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_Basic)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::vector<std::pair<int, std::string>>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistsvc_cc.cc:109,1
    - Dst: std::vector<std::pair<int, std::string>>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistsvc_cc.cc:112,1
    - Dst: static_cast<bool>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistsvc_cc.cc:115,1
    - Dst: static_cast<uint16_t>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistsvc_cc.cc:116,1
    - Dst: std::vector<std::pair<int, std::string>>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistsvc_cc.cc:117,1
    - Dst: std::vector<std::pair<int, std::string>>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistsvc_cc.cc:120,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistsvc_cc.cc:123,1
    - Dst: parseSVCParameters
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistsvc_cc.cc:125,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistsvc_cc.cc:126,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistsvc_cc.cc:127,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistsvc_cc.cc:128,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistsvc_cc.cc:128,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistsvc_cc.cc:129,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistsvc_cc.cc:129,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistsvc_cc.cc:130,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistsvc_cc.cc:131,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistsvc_cc.cc:132,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 133
      start: 106
    functionDepth: 1
    functionLinenumber: 106
    functionLinenumberEnd: 133
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistsvc_cc.cc
    functionUses: 0
    functionsReached:
    - static_cast<bool>
    - parseSVCParameters
    - BOOST_CHECK_EQUAL
    - std::vector<std::pair<int, std::string>>
    - static_cast<uint16_t>
    - std::string
    - BOOST_CHECK
    - ComboAddress
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_Parsing)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::string::resize
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:38,1
    - Dst: randombytes_buf
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:41,1
    - Dst: reinterpret_cast<unsigned char*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:41,1
    - Dst: std::string::data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:41,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:41,1
    - Dst: Base64Encode
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:46,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - base64Encoded
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 35
    functionDepth: 1
    functionLinenumber: 35
    functionLinenumberEnd: 47
    functionName: dnsdist::crypto::authenticated::newKey
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc
    functionUses: 0
    functionsReached:
    - randombytes_buf
    - std::string::data
    - reinterpret_cast<unsigned char*>
    - std::string::resize
    - std::string::size
    - Base64Encode
    linkageType: ''
    returnType: string
    signature: string newKey(bool base64Encoded)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:51,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' key'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 49
    functionDepth: 0
    functionLinenumber: 49
    functionLinenumberEnd: 52
    functionName: dnsdist::crypto::authenticated::isValidKey
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc
    functionUses: 0
    functionsReached:
    - size
    linkageType: ''
    returnType: bool
    signature: bool isValidKey(const std::string& key)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::crypto::authenticated::isValidKey
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:56,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:57,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:57,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:57,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:57,1
    - Dst: std::string::resize
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:61,1
    - Dst: length
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:61,1
    - Dst: crypto_secretbox_easy
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:63,1
    - Dst: reinterpret_cast<unsigned char*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:63,1
    - Dst: std::string::data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:63,1
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:65,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:65,1
    - Dst: length
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:66,1
    - Dst: value::data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:67,1
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:69,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:69,1
    - Dst: increment
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:72,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 4
    argNames:
    - ' msg'
    - ' key'
    - ' nonce'
    - incrementNonce
    argTypes:
    - std::string_view
    - std::string
    - Nonce
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 54
    functionDepth: 1
    functionLinenumber: 54
    functionLinenumberEnd: 76
    functionName: dnsdist::crypto::authenticated::encryptSym
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc
    functionUses: 0
    functionsReached:
    - length
    - std::to_string
    - std::runtime_error
    - increment
    - std::string::data
    - size
    - reinterpret_cast<unsigned char*>
    - value::data
    - std::string::resize
    - reinterpret_cast<const unsigned char*>
    - crypto_secretbox_easy
    - dnsdist::crypto::authenticated::isValidKey
    - data
    linkageType: ''
    returnType: std::string
    signature: std::string encryptSym(const std::string_view& msg, const std::string&
      key, Nonce& nonce, bool incrementNonce)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: length
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:82,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:83,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:83,1
    - Dst: length
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:83,1
    - Dst: dnsdist::crypto::authenticated::isValidKey
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:86,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:87,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:87,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:87,1
    - Dst: std::string::resize
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:90,1
    - Dst: length
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:90,1
    - Dst: crypto_secretbox_open_easy
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:93,1
    - Dst: reinterpret_cast<unsigned char*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:93,1
    - Dst: std::string::data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:93,1
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:95,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:95,1
    - Dst: length
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:96,1
    - Dst: value::data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:97,1
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:99,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:99,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:101,1
    - Dst: increment
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:105,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 15
    argCount: 4
    argNames:
    - ' msg'
    - ' key'
    - ' nonce'
    - incrementNonce
    argTypes:
    - std::string_view
    - std::string
    - Nonce
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 78
    functionDepth: 1
    functionLinenumber: 78
    functionLinenumberEnd: 109
    functionName: dnsdist::crypto::authenticated::decryptSym
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc
    functionUses: 0
    functionsReached:
    - length
    - std::to_string
    - std::runtime_error
    - increment
    - std::string::data
    - size
    - reinterpret_cast<unsigned char*>
    - value::data
    - std::string::resize
    - crypto_secretbox_open_easy
    - reinterpret_cast<const unsigned char*>
    - dnsdist::crypto::authenticated::isValidKey
    - data
    linkageType: ''
    returnType: std::string
    signature: std::string decryptSym(const std::string_view& msg, const std::string&
      key, Nonce& nonce, bool incrementNonce)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: randombytes_buf
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:113,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:113,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:113,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 111
    functionDepth: 0
    functionLinenumber: 111
    functionLinenumberEnd: 114
    functionName: dnsdist::crypto::authenticated::Nonce::init
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc
    functionUses: 0
    functionsReached:
    - data
    - size
    - randombytes_buf
    linkageType: ''
    returnType: void
    signature: void Nonce::init()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: std::string::resize
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:126,1
    - Dst: RAND_priv_bytes
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:128,1
    - Dst: reinterpret_cast<unsigned char*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:128,1
    - Dst: std::string::data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:128,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:128,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:129,1
    - Dst: Base64Encode
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:134,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - base64Encoded
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 135
      start: 123
    functionDepth: 1
    functionLinenumber: 123
    functionLinenumberEnd: 135
    functionName: dnsdist::crypto::authenticated::newKey
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc
    functionUses: 0
    functionsReached:
    - RAND_priv_bytes
    - std::runtime_error
    - std::string::data
    - reinterpret_cast<unsigned char*>
    - std::string::resize
    - std::string::size
    - Base64Encode
    linkageType: ''
    returnType: string
    signature: string newKey(bool base64Encoded)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:139,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' key'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 137
    functionDepth: 0
    functionLinenumber: 137
    functionLinenumberEnd: 140
    functionName: dnsdist::crypto::authenticated::isValidKey
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc
    functionUses: 2
    functionsReached:
    - size
    linkageType: ''
    returnType: bool
    signature: bool isValidKey(const std::string& key)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::crypto::authenticated::isValidKey
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:144,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:145,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:145,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:145,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:145,1
    - Dst: std::unique_ptr<EVP_CIPHER_CTX, decltype(&EVP_CIPHER_CTX_free)>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:149,1
    - Dst: std::unique_ptr<EVP_CIPHER_CTX, decltype(&EVP_CIPHER_CTX_free)>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:152,1
    - Dst: EVP_CIPHER_CTX_new
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:152,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:154,1
    - Dst: EVP_EncryptInit_ex
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:157,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:157,1
    - Dst: EVP_chacha20_poly1305
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:157,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:158,1
    - Dst: std::string::resize
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:164,1
    - Dst: length
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:164,1
    - Dst: EVP_EncryptInit_ex
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:167,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:167,1
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:167,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:167,1
    - Dst: value::data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:167,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:168,1
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:171,1
    - Dst: EVP_EncryptUpdate
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:173,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:173,1
    - Dst: reinterpret_cast<unsigned char*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:174,1
    - Dst: std::string::at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:174,1
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:175,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:175,1
    - Dst: length
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:175,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:177,1
    - Dst: EVP_EncryptFinal_ex
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:182,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:182,1
    - Dst: reinterpret_cast<unsigned char*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:182,1
    - Dst: std::string::at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:182,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:183,1
    - Dst: EVP_CIPHER_CTX_ctrl
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:189,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:189,1
    - Dst: std::string::data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:189,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:190,1
    - Dst: increment
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:194,1
    - Dst: std::string::resize
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:197,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:197,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 34
    argCount: 4
    argNames:
    - ' msg'
    - ' key'
    - ' nonce'
    - incrementNonce
    argTypes:
    - std::string_view
    - std::string
    - Nonce
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 199
      start: 142
    functionDepth: 1
    functionLinenumber: 142
    functionLinenumberEnd: 199
    functionName: dnsdist::crypto::authenticated::encryptSym
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc
    functionUses: 0
    functionsReached:
    - EVP_CIPHER_CTX_ctrl
    - std::to_string
    - value::data
    - dnsdist::crypto::authenticated::isValidKey
    - EVP_EncryptInit_ex
    - EVP_EncryptUpdate
    - std::string::size
    - std::string::at
    - size
    - reinterpret_cast<unsigned char*>
    - reinterpret_cast<const unsigned char*>
    - c_str
    - empty
    - EVP_chacha20_poly1305
    - auto::get
    - std::runtime_error
    - increment
    - std::string::data
    - std::string::resize
    - std::unique_ptr<EVP_CIPHER_CTX, decltype(&EVP_CIPHER_CTX_free)>
    - EVP_EncryptFinal_ex
    - length
    - EVP_CIPHER_CTX_new
    - data
    linkageType: ''
    returnType: std::string
    signature: std::string encryptSym(const std::string_view& msg, const std::string&
      key, Nonce& nonce, bool incrementNonce)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: length
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:203,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:204,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:204,1
    - Dst: length
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:204,1
    - Dst: dnsdist::crypto::authenticated::isValidKey
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:207,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:208,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:208,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:208,1
    - Dst: length
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:211,1
    - Dst: increment
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:213,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:215,1
    - Dst: std::unique_ptr<EVP_CIPHER_CTX, decltype(&EVP_CIPHER_CTX_free)>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:219,1
    - Dst: std::unique_ptr<EVP_CIPHER_CTX, decltype(&EVP_CIPHER_CTX_free)>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:221,1
    - Dst: EVP_CIPHER_CTX_new
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:221,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:223,1
    - Dst: EVP_DecryptInit_ex
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:226,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:226,1
    - Dst: EVP_chacha20_poly1305
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:226,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:227,1
    - Dst: EVP_DecryptInit_ex
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:232,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:232,1
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:232,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:232,1
    - Dst: value::data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:232,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:233,1
    - Dst: substr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:236,1
    - Dst: std::string::resize
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:239,1
    - Dst: length
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:239,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:241,1
    - Dst: EVP_DecryptUpdate
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:242,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:242,1
    - Dst: reinterpret_cast<unsigned char*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:244,1
    - Dst: std::string::data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:244,1
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:246,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:246,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:246,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:247,1
    - Dst: EVP_CIPHER_CTX_ctrl
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:253,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:253,1
    - Dst: const_cast<char*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:253,1
    - Dst: auto::data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:253,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:254,1
    - Dst: EVP_DecryptFinal_ex
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:258,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:258,1
    - Dst: reinterpret_cast<unsigned char*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:258,1
    - Dst: std::string::at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:258,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:259,1
    - Dst: increment
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:263,1
    - Dst: std::string::resize
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:266,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:266,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 42
    argCount: 4
    argNames:
    - ' msg'
    - ' key'
    - ' nonce'
    - incrementNonce
    argTypes:
    - std::string_view
    - std::string
    - Nonce
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 268
      start: 201
    functionDepth: 1
    functionLinenumber: 201
    functionLinenumberEnd: 268
    functionName: dnsdist::crypto::authenticated::decryptSym
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc
    functionUses: 0
    functionsReached:
    - EVP_CIPHER_CTX_ctrl
    - EVP_DecryptFinal_ex
    - std::to_string
    - value::data
    - dnsdist::crypto::authenticated::isValidKey
    - std::string
    - std::string::size
    - std::string::at
    - const_cast<char*>
    - size
    - reinterpret_cast<unsigned char*>
    - reinterpret_cast<const unsigned char*>
    - substr
    - EVP_DecryptUpdate
    - c_str
    - at
    - EVP_chacha20_poly1305
    - auto::get
    - std::runtime_error
    - increment
    - std::string::data
    - auto::data
    - std::string::resize
    - EVP_DecryptInit_ex
    - std::unique_ptr<EVP_CIPHER_CTX, decltype(&EVP_CIPHER_CTX_free)>
    - length
    - EVP_CIPHER_CTX_new
    linkageType: ''
    returnType: std::string
    signature: std::string decryptSym(const std::string_view& msg, const std::string&
      key, Nonce& nonce, bool incrementNonce)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: RAND_priv_bytes
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:272,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:272,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:272,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:273,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 275
      start: 270
    functionDepth: 0
    functionLinenumber: 270
    functionLinenumberEnd: 275
    functionName: dnsdist::crypto::authenticated::Nonce::init
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc
    functionUses: 0
    functionsReached:
    - std::runtime_error
    - RAND_priv_bytes
    - size
    - data
    linkageType: ''
    returnType: void
    signature: void Nonce::init()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:282,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:282,1
    - Dst: value::data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:282,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:283,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:283,1
    - Dst: value::data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:283,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ' lower'
    - ' higher'
    argTypes:
    - Nonce
    - Nonce
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 284
      start: 279
    functionDepth: 0
    functionLinenumber: 279
    functionLinenumberEnd: 284
    functionName: dnsdist::crypto::authenticated::Nonce::merge
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc
    functionUses: 0
    functionsReached:
    - memcpy
    - value::data
    - data
    linkageType: ''
    returnType: void
    signature: void Nonce::merge(const Nonce& lower, const Nonce& higher)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: reinterpret_cast<uint32_t*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:289,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:289,1
    - Dst: htonl
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:290,1
    - Dst: ntohl
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:291,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 292
      start: 286
    functionDepth: 0
    functionLinenumber: 286
    functionLinenumberEnd: 292
    functionName: dnsdist::crypto::authenticated::Nonce::increment
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc
    functionUses: 0
    functionsReached:
    - htonl
    - ntohl
    - reinterpret_cast<uint32_t*>
    - data
    linkageType: ''
    returnType: void
    signature: void Nonce::increment()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 297
      start: 295
    functionDepth: 0
    functionLinenumber: 295
    functionLinenumberEnd: 297
    functionName: dnsdist::crypto::authenticated::Nonce::init
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Nonce::init()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 301
      start: 299
    functionDepth: 0
    functionLinenumber: 299
    functionLinenumberEnd: 301
    functionName: dnsdist::crypto::authenticated::Nonce::merge
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Nonce::merge(const Nonce&, const Nonce&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 305
      start: 303
    functionDepth: 0
    functionLinenumber: 303
    functionLinenumberEnd: 305
    functionName: dnsdist::crypto::authenticated::Nonce::increment
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Nonce::increment()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:309,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' msg'
    argTypes:
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 310
      start: 307
    functionDepth: 0
    functionLinenumber: 307
    functionLinenumberEnd: 310
    functionName: dnsdist::crypto::authenticated::encryptSym
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc
    functionUses: 0
    functionsReached:
    - std::string
    linkageType: ''
    returnType: std::string
    signature: std::string encryptSym(const std::string_view& msg, const std::string&,
      Nonce&, bool)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:313,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' msg'
    argTypes:
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 314
      start: 311
    functionDepth: 0
    functionLinenumber: 311
    functionLinenumberEnd: 314
    functionName: dnsdist::crypto::authenticated::decryptSym
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc
    functionUses: 0
    functionsReached:
    - std::string
    linkageType: ''
    returnType: std::string
    signature: std::string decryptSym(const std::string_view& msg, const std::string&,
      Nonce&, bool)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 319
      start: 316
    functionDepth: 0
    functionLinenumber: 316
    functionLinenumberEnd: 319
    functionName: dnsdist::crypto::authenticated::newKey
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: string
    signature: string newKey(bool)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 324
      start: 321
    functionDepth: 0
    functionLinenumber: 321
    functionLinenumberEnd: 324
    functionName: dnsdist::crypto::authenticated::isValidKey
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool isValidKey(const std::string&)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::string::resize
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:38,1
    - Dst: randombytes_buf
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:41,1
    - Dst: reinterpret_cast<unsigned char*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:41,1
    - Dst: std::string::data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:41,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:41,1
    - Dst: Base64Encode
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:46,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - base64Encoded
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 35
    functionDepth: 1
    functionLinenumber: 35
    functionLinenumberEnd: 47
    functionName: dnsdist::crypto::authenticated::newKey
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc
    functionUses: 0
    functionsReached:
    - randombytes_buf
    - std::string::data
    - reinterpret_cast<unsigned char*>
    - std::string::resize
    - std::string::size
    - Base64Encode
    linkageType: ''
    returnType: string
    signature: string newKey(bool base64Encoded)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:51,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' key'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 49
    functionDepth: 0
    functionLinenumber: 49
    functionLinenumberEnd: 52
    functionName: dnsdist::crypto::authenticated::isValidKey
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc
    functionUses: 4
    functionsReached:
    - size
    linkageType: ''
    returnType: bool
    signature: bool isValidKey(const std::string& key)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::crypto::authenticated::isValidKey
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:56,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:57,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:57,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:57,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:57,1
    - Dst: std::string::resize
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:61,1
    - Dst: length
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:61,1
    - Dst: crypto_secretbox_easy
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:63,1
    - Dst: reinterpret_cast<unsigned char*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:63,1
    - Dst: std::string::data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:63,1
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:65,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:65,1
    - Dst: length
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:66,1
    - Dst: value::data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:67,1
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:69,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:69,1
    - Dst: increment
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:72,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 4
    argNames:
    - ' msg'
    - ' key'
    - ' nonce'
    - incrementNonce
    argTypes:
    - std::string_view
    - std::string
    - Nonce
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 54
    functionDepth: 1
    functionLinenumber: 54
    functionLinenumberEnd: 76
    functionName: dnsdist::crypto::authenticated::encryptSym
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc
    functionUses: 0
    functionsReached:
    - length
    - std::to_string
    - std::runtime_error
    - increment
    - std::string::data
    - size
    - reinterpret_cast<unsigned char*>
    - value::data
    - std::string::resize
    - reinterpret_cast<const unsigned char*>
    - crypto_secretbox_easy
    - dnsdist::crypto::authenticated::isValidKey
    - data
    linkageType: ''
    returnType: std::string
    signature: std::string encryptSym(const std::string_view& msg, const std::string&
      key, Nonce& nonce, bool incrementNonce)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: length
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:82,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:83,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:83,1
    - Dst: length
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:83,1
    - Dst: dnsdist::crypto::authenticated::isValidKey
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:86,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:87,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:87,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:87,1
    - Dst: std::string::resize
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:90,1
    - Dst: length
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:90,1
    - Dst: crypto_secretbox_open_easy
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:93,1
    - Dst: reinterpret_cast<unsigned char*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:93,1
    - Dst: std::string::data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:93,1
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:95,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:95,1
    - Dst: length
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:96,1
    - Dst: value::data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:97,1
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:99,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:99,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:101,1
    - Dst: increment
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:105,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 15
    argCount: 4
    argNames:
    - ' msg'
    - ' key'
    - ' nonce'
    - incrementNonce
    argTypes:
    - std::string_view
    - std::string
    - Nonce
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 78
    functionDepth: 1
    functionLinenumber: 78
    functionLinenumberEnd: 109
    functionName: dnsdist::crypto::authenticated::decryptSym
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc
    functionUses: 0
    functionsReached:
    - length
    - std::to_string
    - std::runtime_error
    - increment
    - std::string::data
    - size
    - reinterpret_cast<unsigned char*>
    - value::data
    - std::string::resize
    - crypto_secretbox_open_easy
    - reinterpret_cast<const unsigned char*>
    - dnsdist::crypto::authenticated::isValidKey
    - data
    linkageType: ''
    returnType: std::string
    signature: std::string decryptSym(const std::string_view& msg, const std::string&
      key, Nonce& nonce, bool incrementNonce)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: randombytes_buf
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:113,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:113,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:113,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 111
    functionDepth: 0
    functionLinenumber: 111
    functionLinenumberEnd: 114
    functionName: dnsdist::crypto::authenticated::Nonce::init
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc
    functionUses: 0
    functionsReached:
    - data
    - size
    - randombytes_buf
    linkageType: ''
    returnType: void
    signature: void Nonce::init()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: std::string::resize
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:126,1
    - Dst: RAND_priv_bytes
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:128,1
    - Dst: reinterpret_cast<unsigned char*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:128,1
    - Dst: std::string::data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:128,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:128,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:129,1
    - Dst: Base64Encode
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:134,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - base64Encoded
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 135
      start: 123
    functionDepth: 1
    functionLinenumber: 123
    functionLinenumberEnd: 135
    functionName: dnsdist::crypto::authenticated::newKey
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc
    functionUses: 0
    functionsReached:
    - RAND_priv_bytes
    - std::runtime_error
    - std::string::data
    - reinterpret_cast<unsigned char*>
    - std::string::resize
    - std::string::size
    - Base64Encode
    linkageType: ''
    returnType: string
    signature: string newKey(bool base64Encoded)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:139,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' key'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 137
    functionDepth: 0
    functionLinenumber: 137
    functionLinenumberEnd: 140
    functionName: dnsdist::crypto::authenticated::isValidKey
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc
    functionUses: 6
    functionsReached:
    - size
    linkageType: ''
    returnType: bool
    signature: bool isValidKey(const std::string& key)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::crypto::authenticated::isValidKey
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:144,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:145,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:145,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:145,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:145,1
    - Dst: std::unique_ptr<EVP_CIPHER_CTX, decltype(&EVP_CIPHER_CTX_free)>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:149,1
    - Dst: std::unique_ptr<EVP_CIPHER_CTX, decltype(&EVP_CIPHER_CTX_free)>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:152,1
    - Dst: EVP_CIPHER_CTX_new
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:152,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:154,1
    - Dst: EVP_EncryptInit_ex
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:157,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:157,1
    - Dst: EVP_chacha20_poly1305
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:157,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:158,1
    - Dst: std::string::resize
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:164,1
    - Dst: length
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:164,1
    - Dst: EVP_EncryptInit_ex
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:167,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:167,1
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:167,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:167,1
    - Dst: value::data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:167,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:168,1
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:171,1
    - Dst: EVP_EncryptUpdate
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:173,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:173,1
    - Dst: reinterpret_cast<unsigned char*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:174,1
    - Dst: std::string::at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:174,1
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:175,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:175,1
    - Dst: length
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:175,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:177,1
    - Dst: EVP_EncryptFinal_ex
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:182,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:182,1
    - Dst: reinterpret_cast<unsigned char*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:182,1
    - Dst: std::string::at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:182,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:183,1
    - Dst: EVP_CIPHER_CTX_ctrl
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:189,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:189,1
    - Dst: std::string::data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:189,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:190,1
    - Dst: increment
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:194,1
    - Dst: std::string::resize
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:197,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:197,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 34
    argCount: 4
    argNames:
    - ' msg'
    - ' key'
    - ' nonce'
    - incrementNonce
    argTypes:
    - std::string_view
    - std::string
    - Nonce
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 199
      start: 142
    functionDepth: 1
    functionLinenumber: 142
    functionLinenumberEnd: 199
    functionName: dnsdist::crypto::authenticated::encryptSym
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc
    functionUses: 0
    functionsReached:
    - EVP_CIPHER_CTX_ctrl
    - std::to_string
    - value::data
    - dnsdist::crypto::authenticated::isValidKey
    - EVP_EncryptInit_ex
    - EVP_EncryptUpdate
    - std::string::size
    - std::string::at
    - size
    - reinterpret_cast<unsigned char*>
    - reinterpret_cast<const unsigned char*>
    - c_str
    - empty
    - EVP_chacha20_poly1305
    - auto::get
    - std::runtime_error
    - increment
    - std::string::data
    - std::string::resize
    - std::unique_ptr<EVP_CIPHER_CTX, decltype(&EVP_CIPHER_CTX_free)>
    - EVP_EncryptFinal_ex
    - length
    - EVP_CIPHER_CTX_new
    - data
    linkageType: ''
    returnType: std::string
    signature: std::string encryptSym(const std::string_view& msg, const std::string&
      key, Nonce& nonce, bool incrementNonce)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: length
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:203,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:204,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:204,1
    - Dst: length
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:204,1
    - Dst: dnsdist::crypto::authenticated::isValidKey
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:207,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:208,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:208,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:208,1
    - Dst: length
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:211,1
    - Dst: increment
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:213,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:215,1
    - Dst: std::unique_ptr<EVP_CIPHER_CTX, decltype(&EVP_CIPHER_CTX_free)>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:219,1
    - Dst: std::unique_ptr<EVP_CIPHER_CTX, decltype(&EVP_CIPHER_CTX_free)>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:221,1
    - Dst: EVP_CIPHER_CTX_new
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:221,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:223,1
    - Dst: EVP_DecryptInit_ex
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:226,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:226,1
    - Dst: EVP_chacha20_poly1305
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:226,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:227,1
    - Dst: EVP_DecryptInit_ex
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:232,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:232,1
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:232,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:232,1
    - Dst: value::data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:232,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:233,1
    - Dst: substr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:236,1
    - Dst: std::string::resize
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:239,1
    - Dst: length
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:239,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:241,1
    - Dst: EVP_DecryptUpdate
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:242,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:242,1
    - Dst: reinterpret_cast<unsigned char*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:244,1
    - Dst: std::string::data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:244,1
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:246,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:246,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:246,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:247,1
    - Dst: EVP_CIPHER_CTX_ctrl
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:253,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:253,1
    - Dst: const_cast<char*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:253,1
    - Dst: auto::data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:253,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:254,1
    - Dst: EVP_DecryptFinal_ex
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:258,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:258,1
    - Dst: reinterpret_cast<unsigned char*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:258,1
    - Dst: std::string::at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:258,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:259,1
    - Dst: increment
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:263,1
    - Dst: std::string::resize
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:266,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:266,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 42
    argCount: 4
    argNames:
    - ' msg'
    - ' key'
    - ' nonce'
    - incrementNonce
    argTypes:
    - std::string_view
    - std::string
    - Nonce
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 268
      start: 201
    functionDepth: 1
    functionLinenumber: 201
    functionLinenumberEnd: 268
    functionName: dnsdist::crypto::authenticated::decryptSym
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc
    functionUses: 0
    functionsReached:
    - EVP_CIPHER_CTX_ctrl
    - EVP_DecryptFinal_ex
    - std::to_string
    - value::data
    - dnsdist::crypto::authenticated::isValidKey
    - std::string
    - std::string::size
    - std::string::at
    - const_cast<char*>
    - size
    - reinterpret_cast<unsigned char*>
    - reinterpret_cast<const unsigned char*>
    - substr
    - EVP_DecryptUpdate
    - c_str
    - at
    - EVP_chacha20_poly1305
    - auto::get
    - std::runtime_error
    - increment
    - std::string::data
    - auto::data
    - std::string::resize
    - EVP_DecryptInit_ex
    - std::unique_ptr<EVP_CIPHER_CTX, decltype(&EVP_CIPHER_CTX_free)>
    - length
    - EVP_CIPHER_CTX_new
    linkageType: ''
    returnType: std::string
    signature: std::string decryptSym(const std::string_view& msg, const std::string&
      key, Nonce& nonce, bool incrementNonce)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: RAND_priv_bytes
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:272,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:272,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:272,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:273,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 275
      start: 270
    functionDepth: 0
    functionLinenumber: 270
    functionLinenumberEnd: 275
    functionName: dnsdist::crypto::authenticated::Nonce::init
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc
    functionUses: 0
    functionsReached:
    - std::runtime_error
    - RAND_priv_bytes
    - size
    - data
    linkageType: ''
    returnType: void
    signature: void Nonce::init()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:282,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:282,1
    - Dst: value::data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:282,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:283,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:283,1
    - Dst: value::data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:283,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ' lower'
    - ' higher'
    argTypes:
    - Nonce
    - Nonce
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 284
      start: 279
    functionDepth: 0
    functionLinenumber: 279
    functionLinenumberEnd: 284
    functionName: dnsdist::crypto::authenticated::Nonce::merge
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc
    functionUses: 0
    functionsReached:
    - memcpy
    - value::data
    - data
    linkageType: ''
    returnType: void
    signature: void Nonce::merge(const Nonce& lower, const Nonce& higher)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: reinterpret_cast<uint32_t*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:289,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:289,1
    - Dst: htonl
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:290,1
    - Dst: ntohl
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:291,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 292
      start: 286
    functionDepth: 0
    functionLinenumber: 286
    functionLinenumberEnd: 292
    functionName: dnsdist::crypto::authenticated::Nonce::increment
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc
    functionUses: 0
    functionsReached:
    - htonl
    - ntohl
    - reinterpret_cast<uint32_t*>
    - data
    linkageType: ''
    returnType: void
    signature: void Nonce::increment()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 297
      start: 295
    functionDepth: 0
    functionLinenumber: 295
    functionLinenumberEnd: 297
    functionName: dnsdist::crypto::authenticated::Nonce::init
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Nonce::init()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 301
      start: 299
    functionDepth: 0
    functionLinenumber: 299
    functionLinenumberEnd: 301
    functionName: dnsdist::crypto::authenticated::Nonce::merge
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Nonce::merge(const Nonce&, const Nonce&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 305
      start: 303
    functionDepth: 0
    functionLinenumber: 303
    functionLinenumberEnd: 305
    functionName: dnsdist::crypto::authenticated::Nonce::increment
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Nonce::increment()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:309,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' msg'
    argTypes:
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 310
      start: 307
    functionDepth: 0
    functionLinenumber: 307
    functionLinenumberEnd: 310
    functionName: dnsdist::crypto::authenticated::encryptSym
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc
    functionUses: 0
    functionsReached:
    - std::string
    linkageType: ''
    returnType: std::string
    signature: std::string encryptSym(const std::string_view& msg, const std::string&,
      Nonce&, bool)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:313,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' msg'
    argTypes:
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 314
      start: 311
    functionDepth: 0
    functionLinenumber: 311
    functionLinenumberEnd: 314
    functionName: dnsdist::crypto::authenticated::decryptSym
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc
    functionUses: 0
    functionsReached:
    - std::string
    linkageType: ''
    returnType: std::string
    signature: std::string decryptSym(const std::string_view& msg, const std::string&,
      Nonce&, bool)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 319
      start: 316
    functionDepth: 0
    functionLinenumber: 316
    functionLinenumberEnd: 319
    functionName: dnsdist::crypto::authenticated::newKey
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: string
    signature: string newKey(bool)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 324
      start: 321
    functionDepth: 0
    functionLinenumber: 321
    functionLinenumberEnd: 324
    functionName: dnsdist::crypto::authenticated::isValidKey
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc
    functionUses: 8
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool isValidKey(const std::string&)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<char>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:395,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 31
    argCount: 1
    argNames:
    - cInChar
    argTypes:
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 396
      start: 333
    functionDepth: 0
    functionLinenumber: 333
    functionLinenumberEnd: 396
    functionName: anonpdns::B64Decode1
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc
    functionUses: 0
    functionsReached:
    - static_cast<char>
    linkageType: ''
    returnType: char
    signature: char B64Decode1(char cInChar)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<char>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:401,1
    - Dst: static_cast<char>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:404,1
    - Dst: static_cast<char>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:407,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 1
    argNames:
    - input
    argTypes:
    - unsigned char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 413
      start: 398
    functionDepth: 0
    functionLinenumber: 398
    functionLinenumberEnd: 413
    functionName: anonpdns::B64Encode1
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc
    functionUses: 0
    functionsReached:
    - static_cast<char>
    linkageType: ''
    returnType: char
    signature: char B64Encode1(unsigned char input)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<char>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:395,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 31
    argCount: 1
    argNames:
    - cInChar
    argTypes:
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 396
      start: 333
    functionDepth: 0
    functionLinenumber: 333
    functionLinenumberEnd: 396
    functionName: anonpdns::B64Decode1
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc
    functionUses: 0
    functionsReached:
    - static_cast<char>
    linkageType: ''
    returnType: char
    signature: char B64Decode1(char cInChar)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<char>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:401,1
    - Dst: static_cast<char>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:404,1
    - Dst: static_cast<char>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:407,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 1
    argNames:
    - input
    argTypes:
    - unsigned char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 413
      start: 398
    functionDepth: 0
    functionLinenumber: 398
    functionLinenumberEnd: 413
    functionName: anonpdns::B64Encode1
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc
    functionUses: 0
    functionsReached:
    - static_cast<char>
    linkageType: ''
    returnType: char
    signature: char B64Encode1(unsigned char input)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:424,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:440,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:440,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:450,1
    - Dst: isspace
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:453,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:453,1
    - Dst: B64Decode1
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:456,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:456,1
    - Dst: push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:497,1
    - Dst: push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:499,1
    - Dst: push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:501,1
    - Dst: push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:504,1
    - Dst: push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:506,1
    - Dst: push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:508,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:512,1
    - Dst: resize
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:515,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:515,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 42
    argCount: 2
    argNames:
    - ' strInput'
    - ' strOutput'
    argTypes:
    - std::string
    - Container
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 519
      start: 419
    functionDepth: 1
    functionLinenumber: 419
    functionLinenumberEnd: 519
    functionName: B64Decode
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc
    functionUses: 28
    functionsReached:
    - reinterpret_cast<char*>
    - resize
    - push_back
    - isspace
    - size
    - at
    - B64Decode1
    - static_cast<int>
    linkageType: ''
    returnType: int
    signature: int B64Decode(const std::string& strInput, Container& strOutput)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:534,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:537,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:542,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:545,1
    - Dst: B64Encode1
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:556,1
    - Dst: B64Encode1
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:557,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:558,1
    - Dst: B64Encode1
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:559,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:564,1
    - Dst: B64Encode1
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc:565,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 34
    argCount: 1
    argNames:
    - ' src'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 576
      start: 531
    functionDepth: 0
    functionLinenumber: 531
    functionLinenumberEnd: 576
    functionName: Base64Encode
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc
    functionUses: 20
    functionsReached:
    - empty
    - B64Encode1
    - size
    linkageType: ''
    returnType: std::string
    signature: std::string Base64Encode(const std::string& src)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sodium_memzero
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:33,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:33,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:33,1
    - Dst: sodium_mlock
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:34,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:34,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:34,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 35
      start: 31
    functionDepth: 0
    functionLinenumber: 31
    functionLinenumberEnd: 35
    functionName: DNSCryptPrivateKey::DNSCryptPrivateKey
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnscrypt.cc
    functionUses: 9
    functionsReached:
    - sodium_memzero
    - sodium_mlock
    - size
    - data
    linkageType: ''
    returnType: void
    signature: void DNSCryptPrivateKey::DNSCryptPrivateKey()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sodium_memzero
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:40,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:40,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:40,1
    - Dst: ifstream::read
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:42,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:42,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:42,1
    - Dst: static_cast<std::streamsize>
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:42,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:42,1
    - Dst: ifstream::fail
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:44,1
    - Dst: sodium_memzero
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:45,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:45,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:45,1
    - Dst: ifstream::close
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:46,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:47,1
    - Dst: ifstream::close
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:50,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - ' keyFile'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 37
    functionDepth: 0
    functionLinenumber: 37
    functionLinenumberEnd: 51
    functionName: DNSCryptPrivateKey::loadFromFile
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnscrypt.cc
    functionUses: 0
    functionsReached:
    - reinterpret_cast<char*>
    - ifstream::read
    - static_cast<std::streamsize>
    - std::runtime_error
    - ifstream::fail
    - size
    - data
    - ifstream::close
    - sodium_memzero
    linkageType: ''
    returnType: void
    signature: void DNSCryptPrivateKey::loadFromFile(const std::string& keyFile)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ofstream::write
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:57,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:57,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:57,1
    - Dst: static_cast<std::streamsize>
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:57,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:57,1
    - Dst: ofstream::close
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:58,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ' keyFile'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 53
    functionDepth: 0
    functionLinenumber: 53
    functionLinenumberEnd: 59
    functionName: DNSCryptPrivateKey::saveToFile
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnscrypt.cc
    functionUses: 1
    functionsReached:
    - static_cast<std::streamsize>
    - size
    - ofstream::close
    - reinterpret_cast<const char*>
    - data
    - ofstream::write
    linkageType: ''
    returnType: void
    signature: void DNSCryptPrivateKey::saveToFile(const std::string& keyFile) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sodium_munlock
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:63,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:63,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:63,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 61
    functionDepth: 0
    functionLinenumber: 61
    functionLinenumberEnd: 64
    functionName: DNSCryptPrivateKey::~DNSCryptPrivateKey()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnscrypt.cc
    functionUses: 0
    functionsReached:
    - sodium_munlock
    - size
    - data
    linkageType: ''
    returnType: void
    signature: void DNSCryptPrivateKey::~DNSCryptPrivateKey()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:69,1
    - Dst: DNSCryptContext::getExchangeVersion
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:72,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 66
    functionDepth: 1
    functionLinenumber: 66
    functionLinenumberEnd: 73
    functionName: DNSCryptQuery::getVersion
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnscrypt.cc
    functionUses: 0
    functionsReached:
    - DNSCryptContext::getExchangeVersion
    - std::runtime_error
    linkageType: ''
    returnType: DNSCryptExchangeVersion
    signature: DNSCryptExchangeVersion DNSCryptQuery::getVersion() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sodium_munlock
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:79,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:79,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:79,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 76
    functionDepth: 0
    functionLinenumber: 76
    functionLinenumberEnd: 81
    functionName: DNSCryptQuery::~DNSCryptQuery()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnscrypt.cc
    functionUses: 0
    functionsReached:
    - sodium_munlock
    - size
    - data
    linkageType: ''
    returnType: void
    signature: void DNSCryptQuery::~DNSCryptQuery()
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:90,1
    - Dst: DNSCryptContext::getExchangeVersion
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:93,1
    - Dst: sodium_mlock
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:95,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:95,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:95,1
    - Dst: crypto_box_beforenm
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:98,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:98,1
    - Dst: clientPK::data
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:99,1
    - Dst: privateKey::key::data
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:100,1
    - Dst: crypto_box_curve25519xchacha20poly1305_beforenm
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:104,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:104,1
    - Dst: clientPK::data
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:105,1
    - Dst: privateKey::key::data
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:106,1
    - Dst: sodium_munlock
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:116,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:116,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:116,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 23
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 122
      start: 83
    functionDepth: 1
    functionLinenumber: 83
    functionLinenumberEnd: 122
    functionName: DNSCryptQuery::computeSharedKey
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnscrypt.cc
    functionUses: 0
    functionsReached:
    - std::runtime_error
    - crypto_box_beforenm
    - crypto_box_curve25519xchacha20poly1305_beforenm
    - size
    - sodium_mlock
    - clientPK::data
    - DNSCryptContext::getExchangeVersion
    - data
    - sodium_munlock
    - privateKey::key::data
    linkageType: ''
    returnType: int
    signature: int DNSCryptQuery::computeSharedKey()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 124
      start: 124
    functionDepth: 0
    functionLinenumber: 124
    functionLinenumberEnd: 124
    functionName: DNSCryptQuery::~DNSCryptQuery()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnscrypt.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void DNSCryptQuery::~DNSCryptQuery()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 127
      start: 127
    functionDepth: 0
    functionLinenumber: 127
    functionLinenumberEnd: 127
    functionName: DNSCryptContext::~DNSCryptContext()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnscrypt.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void DNSCryptContext::~DNSCryptContext()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSCryptContext::reloadCertificates
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:132,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' pName'
    - ' certKeys'
    argTypes:
    - std::string
    - std::vector<CertKeyPaths>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 133
      start: 129
    functionDepth: 0
    functionLinenumber: 129
    functionLinenumberEnd: 133
    functionName: DNSCryptContext::DNSCryptContext
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnscrypt.cc
    functionUses: 0
    functionsReached:
    - DNSCryptContext::reloadCertificates
    linkageType: ''
    returnType: void
    signature: void DNSCryptContext::DNSCryptContext(const std::string& pName, const
      std::vector<CertKeyPaths>& certKeys)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSCryptContext::addNewCertificate
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:138,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' pName'
    - ' certificate'
    - ' pKey'
    argTypes:
    - std::string
    - DNSCryptCert
    - DNSCryptPrivateKey
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 139
      start: 135
    functionDepth: 1
    functionLinenumber: 135
    functionLinenumberEnd: 139
    functionName: DNSCryptContext::DNSCryptContext
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnscrypt.cc
    functionUses: 0
    functionsReached:
    - DNSCryptContext::addNewCertificate
    linkageType: ''
    returnType: void
    signature: void DNSCryptContext::DNSCryptContext(const std::string& pName, const
      DNSCryptCert& certificate, const DNSCryptPrivateKey& pKey)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: crypto_sign_ed25519_keypair
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:143,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:143,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:143,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:146,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 2
    argNames:
    - ' publicKey'
    - ' privateKey'
    argTypes:
    - DNSCryptCertSignedData::ResolverPublicKeyType
    - DNSCryptCertSignedData::ResolverPrivateKeyType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 148
      start: 141
    functionDepth: 0
    functionLinenumber: 141
    functionLinenumberEnd: 148
    functionName: DNSCryptContext::generateProviderKeys
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnscrypt.cc
    functionUses: 9
    functionsReached:
    - std::runtime_error
    - crypto_sign_ed25519_keypair
    - data
    linkageType: ''
    returnType: void
    signature: void DNSCryptContext::generateProviderKeys(DNSCryptCertSignedData::ResolverPublicKeyType&
      publicKey, DNSCryptCertSignedData::ResolverPrivateKeyType& privateKey)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:156,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:156,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:156,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:156,1
    - Dst: ostringstream::str
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:162,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - ' publicKey'
    argTypes:
    - DNSCryptCertSignedData::ResolverPublicKeyType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 163
      start: 150
    functionDepth: 0
    functionLinenumber: 150
    functionLinenumberEnd: 163
    functionName: DNSCryptContext::getProviderFingerprint
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnscrypt.cc
    functionUses: 1
    functionsReached:
    - ostringstream::str
    - at
    - static_cast<int>
    linkageType: ''
    returnType: std::string
    signature: std::string DNSCryptContext::getProviderFingerprint(const DNSCryptCertSignedData::ResolverPublicKeyType&
      publicKey)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:167,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:170,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:173,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:176,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - ' version'
    - ' esVersion'
    argTypes:
    - DNSCryptExchangeVersion
    - DNSCryptCert::ESVersionType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 178
      start: 165
    functionDepth: 0
    functionLinenumber: 165
    functionLinenumberEnd: 178
    functionName: DNSCryptContext::setExchangeVersion
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnscrypt.cc
    functionUses: 0
    functionsReached:
    - at
    - std::runtime_error
    linkageType: ''
    returnType: void
    signature: void DNSCryptContext::setExchangeVersion(const DNSCryptExchangeVersion&
      version, DNSCryptCert::ESVersionType& esVersion)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:182,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:183,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:186,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:189,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:193,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 1
    argNames:
    - ' esVersion'
    argTypes:
    - DNSCryptCert::ESVersionType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 194
      start: 180
    functionDepth: 0
    functionLinenumber: 180
    functionLinenumberEnd: 194
    functionName: DNSCryptContext::getExchangeVersion
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnscrypt.cc
    functionUses: 3
    functionsReached:
    - at
    - std::runtime_error
    linkageType: ''
    returnType: DNSCryptExchangeVersion
    signature: DNSCryptExchangeVersion DNSCryptContext::getExchangeVersion(const DNSCryptCert::ESVersionType&
      esVersion)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSCryptContext::getExchangeVersion
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:198,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' cert'
    argTypes:
    - DNSCryptCert
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 199
      start: 196
    functionDepth: 1
    functionLinenumber: 196
    functionLinenumberEnd: 199
    functionName: DNSCryptContext::getExchangeVersion
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnscrypt.cc
    functionUses: 4
    functionsReached:
    - DNSCryptContext::getExchangeVersion
    linkageType: ''
    returnType: DNSCryptExchangeVersion
    signature: DNSCryptExchangeVersion DNSCryptContext::getExchangeVersion(const DNSCryptCert&
      cert)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DNSCryptContext::setExchangeVersion
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:203,1
    - Dst: DNSCryptContext::generateResolverKeyPair
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:205,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:209,1
    - Dst: signedData::clientMagic::data
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:209,1
    - Dst: DNSCryptPublicKeyType::data
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:209,1
    - Dst: signedData::clientMagic::size
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:209,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:210,1
    - Dst: signedData::resolverPK::data
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:210,1
    - Dst: DNSCryptPublicKeyType::data
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:210,1
    - Dst: signedData::resolverPK::size
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:210,1
    - Dst: htonl
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:211,1
    - Dst: htonl
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:213,1
    - Dst: static_cast<uint32_t>
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:213,1
    - Dst: htonl
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:215,1
    - Dst: static_cast<uint32_t>
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:215,1
    - Dst: crypto_sign_ed25519
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:219,1
    - Dst: signature::data
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:219,1
    - Dst: reinterpret_cast<unsigned char*>
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:222,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:224,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:227,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 7
    argNames:
    - serial
    - begin
    - end
    - ' version'
    - ' providerPrivateKey'
    - ' privateKey'
    - ' cert'
    argTypes:
    - uint32_t
    - time_t
    - time_t
    - DNSCryptExchangeVersion
    - DNSCryptCertSignedData::ResolverPrivateKeyType
    - DNSCryptPrivateKey
    - DNSCryptCert
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 229
      start: 201
    functionDepth: 1
    functionLinenumber: 201
    functionLinenumberEnd: 229
    functionName: DNSCryptContext::generateCertificate
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnscrypt.cc
    functionUses: 8
    functionsReached:
    - memcpy
    - htonl
    - std::runtime_error
    - signedData::clientMagic::size
    - signedData::resolverPK::data
    - data
    - DNSCryptPublicKeyType::data
    - signedData::clientMagic::data
    - DNSCryptContext::generateResolverKeyPair
    - static_cast<uint32_t>
    - reinterpret_cast<unsigned char*>
    - signature::data
    - crypto_sign_ed25519
    - signedData::resolverPK::size
    - DNSCryptContext::setExchangeVersion
    linkageType: ''
    returnType: void
    signature: void DNSCryptContext::generateCertificate(uint32_t serial, time_t begin,
      time_t end, const DNSCryptExchangeVersion& version, const DNSCryptCertSignedData::ResolverPrivateKeyType&
      providerPrivateKey, DNSCryptPrivateKey& privateKey, DNSCryptCert& cert)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ifstream::read
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:235,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:235,1
    - Dst: ifstream::fail
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:237,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:238,1
    - Dst: ifstream::close
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:241,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - ' filename'
    - ' dest'
    argTypes:
    - std::string
    - DNSCryptCert
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 242
      start: 231
    functionDepth: 0
    functionLinenumber: 231
    functionLinenumberEnd: 242
    functionName: DNSCryptContext::loadCertFromFile
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnscrypt.cc
    functionUses: 0
    functionsReached:
    - reinterpret_cast<char*>
    - ifstream::read
    - std::runtime_error
    - ifstream::fail
    - ifstream::close
    linkageType: ''
    returnType: void
    signature: void DNSCryptContext::loadCertFromFile(const std::string& filename,
      DNSCryptCert& dest)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ofstream::write
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:248,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:248,1
    - Dst: ofstream::close
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:249,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ' cert'
    - ' filename'
    argTypes:
    - DNSCryptCert
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 250
      start: 244
    functionDepth: 0
    functionLinenumber: 244
    functionLinenumberEnd: 250
    functionName: DNSCryptContext::saveCertFromFile
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnscrypt.cc
    functionUses: 1
    functionsReached:
    - ofstream::write
    - ofstream::close
    - reinterpret_cast<const char*>
    linkageType: ''
    returnType: void
    signature: void DNSCryptContext::saveCertFromFile(const DNSCryptCert& cert, const
      std::string& filename)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: crypto_box_keypair
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:254,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:254,1
    - Dst: key::data
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:254,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:257,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 2
    argNames:
    - ' privK'
    - ' pubK'
    argTypes:
    - DNSCryptPrivateKey
    - DNSCryptPublicKeyType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 259
      start: 252
    functionDepth: 0
    functionLinenumber: 252
    functionLinenumberEnd: 259
    functionName: DNSCryptContext::generateResolverKeyPair
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnscrypt.cc
    functionUses: 6
    functionsReached:
    - std::runtime_error
    - key::data
    - crypto_box_keypair
    - data
    linkageType: ''
    returnType: void
    signature: void DNSCryptContext::generateResolverKeyPair(DNSCryptPrivateKey& privK,
      DNSCryptPublicKeyType& pubK)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: crypto_scalarmult_base
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:263,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:263,1
    - Dst: key::data
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:264,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:267,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 2
    argNames:
    - ' privK'
    - ' pubK'
    argTypes:
    - DNSCryptPrivateKey
    - DNSCryptCertificatePair::PublicKeyType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 269
      start: 261
    functionDepth: 0
    functionLinenumber: 261
    functionLinenumberEnd: 269
    functionName: DNSCryptContext::computePublicKeyFromPrivate
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnscrypt.cc
    functionUses: 0
    functionsReached:
    - key::data
    - std::runtime_error
    - data
    - crypto_scalarmult_base
    linkageType: ''
    returnType: void
    signature: void DNSCryptContext::computePublicKeyFromPrivate(const DNSCryptPrivateKey&
      privK, DNSCryptCertificatePair::PublicKeyType& pubK)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<time_t>
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:274,1
    - Dst: ntohl
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:274,1
    - Dst: localtime_r
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:276,1
    - Dst: std::string::resize
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:277,1
    - Dst: strftime
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:278,1
    - Dst: std::string::data
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:278,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:278,1
    - Dst: std::string::resize
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:279,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - date
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 281
      start: 271
    functionDepth: 1
    functionLinenumber: 271
    functionLinenumberEnd: 281
    functionName: DNSCryptContext::certificateDateToStr
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnscrypt.cc
    functionUses: 1
    functionsReached:
    - ntohl
    - localtime_r
    - std::string::size
    - std::string::data
    - std::string::resize
    - strftime
    - static_cast<time_t>
    linkageType: ''
    returnType: std::string
    signature: std::string DNSCryptContext::certificateDateToStr(uint32_t date)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: write_lock
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:285,1
    - Dst: cert::getSerial
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:288,1
    - Dst: cert::getSerial
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:288,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:293,1
    - Dst: auto::push_back
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:297,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 2
    argNames:
    - ' newCert'
    - reload
    argTypes:
    - std::shared_ptr<DNSCryptCertificatePair>
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 298
      start: 283
    functionDepth: 0
    functionLinenumber: 283
    functionLinenumberEnd: 298
    functionName: DNSCryptContext::addNewCertificate
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnscrypt.cc
    functionUses: 1
    functionsReached:
    - auto::push_back
    - cert::getSerial
    - write_lock
    - std::runtime_error
    linkageType: ''
    returnType: void
    signature: void DNSCryptContext::addNewCertificate(std::shared_ptr<DNSCryptCertificatePair>&
      newCert, bool reload)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<DNSCryptCertificatePair>
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:302,1
    - Dst: DNSCryptContext::computePublicKeyFromPrivate
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:305,1
    - Dst: DNSCryptContext::addNewCertificate
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:308,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 4
    argNames:
    - ' newCert'
    - ' newKey'
    - active
    - reload
    argTypes:
    - DNSCryptCert
    - DNSCryptPrivateKey
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 309
      start: 300
    functionDepth: 1
    functionLinenumber: 300
    functionLinenumberEnd: 309
    functionName: DNSCryptContext::addNewCertificate
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnscrypt.cc
    functionUses: 2
    functionsReached:
    - std::make_shared<DNSCryptCertificatePair>
    - DNSCryptContext::addNewCertificate
    - DNSCryptContext::computePublicKeyFromPrivate
    linkageType: ''
    returnType: void
    signature: void DNSCryptContext::addNewCertificate(const DNSCryptCert& newCert,
      const DNSCryptPrivateKey& newKey, bool active, bool reload)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<DNSCryptCertificatePair>
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:313,1
    - Dst: DNSCryptContext::loadCertFromFile
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:314,1
    - Dst: auto::privateKey::loadFromFile
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:315,1
    - Dst: DNSCryptContext::computePublicKeyFromPrivate
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:317,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - ' certFile'
    - ' keyFile'
    argTypes:
    - std::string
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 319
      start: 311
    functionDepth: 1
    functionLinenumber: 311
    functionLinenumberEnd: 319
    functionName: DNSCryptContext::loadCertificatePair
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnscrypt.cc
    functionUses: 0
    functionsReached:
    - auto::privateKey::loadFromFile
    - std::make_shared<DNSCryptCertificatePair>
    - DNSCryptContext::loadCertFromFile
    - DNSCryptContext::computePublicKeyFromPrivate
    linkageType: ''
    returnType: std::shared_ptr<DNSCryptCertificatePair>
    signature: std::shared_ptr<DNSCryptCertificatePair> DNSCryptContext::loadCertificatePair(const
      std::string& certFile, const std::string& keyFile)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSCryptContext::loadCertificatePair
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:323,1
    - Dst: DNSCryptContext::addNewCertificate
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:325,1
    - Dst: write_lock
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:326,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 4
    argNames:
    - ' certFile'
    - ' keyFile'
    - active
    - reload
    argTypes:
    - std::string
    - std::string
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 327
      start: 321
    functionDepth: 2
    functionLinenumber: 321
    functionLinenumberEnd: 327
    functionName: DNSCryptContext::loadNewCertificate
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnscrypt.cc
    functionUses: 0
    functionsReached:
    - DNSCryptContext::loadCertificatePair
    - DNSCryptContext::addNewCertificate
    - write_lock
    linkageType: ''
    returnType: void
    signature: void DNSCryptContext::loadNewCertificate(const std::string& certFile,
      const std::string& keyFile, bool active, bool reload)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: read_lock
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:333,1
    - Dst: std::vector::reserve
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:334,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:334,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:336,1
    - Dst: DNSCryptContext::loadCertificatePair
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:336,1
    - Dst: write_lock
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:341,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:341,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 343
      start: 329
    functionDepth: 2
    functionLinenumber: 329
    functionLinenumberEnd: 343
    functionName: DNSCryptContext::reloadCertificates
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnscrypt.cc
    functionUses: 1
    functionsReached:
    - std::vector::push_back
    - std::move
    - read_lock
    - std::vector::reserve
    - DNSCryptContext::loadCertificatePair
    - write_lock
    - auto::size
    linkageType: ''
    returnType: void
    signature: void DNSCryptContext::reloadCertificates()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: read_lock
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:347,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 349
      start: 345
    functionDepth: 0
    functionLinenumber: 345
    functionLinenumberEnd: 349
    functionName: DNSCryptContext::getCertificates
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnscrypt.cc
    functionUses: 0
    functionsReached:
    - read_lock
    linkageType: ''
    returnType: std::vector<std::shared_ptr<DNSCryptCertificatePair>>
    signature: std::vector<std::shared_ptr<DNSCryptCertificatePair>> DNSCryptContext::getCertificates()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: write_lock
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:353,1
    - Dst: cert::getSerial
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:354,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:359,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 7
    argCount: 1
    argNames:
    - serial
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 360
      start: 351
    functionDepth: 0
    functionLinenumber: 351
    functionLinenumberEnd: 360
    functionName: DNSCryptContext::markActive
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnscrypt.cc
    functionUses: 0
    functionsReached:
    - cert::getSerial
    - write_lock
    - std::runtime_error
    linkageType: ''
    returnType: void
    signature: void DNSCryptContext::markActive(uint32_t serial)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: write_lock
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:364,1
    - Dst: cert::getSerial
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:365,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:370,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 7
    argCount: 1
    argNames:
    - serial
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 371
      start: 362
    functionDepth: 0
    functionLinenumber: 362
    functionLinenumberEnd: 371
    functionName: DNSCryptContext::markInactive
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnscrypt.cc
    functionUses: 0
    functionsReached:
    - cert::getSerial
    - write_lock
    - std::runtime_error
    linkageType: ''
    returnType: void
    signature: void DNSCryptContext::markInactive(uint32_t serial)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: write_lock
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:375,1
    - Dst: auto::begin
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:377,1
    - Dst: auto::end
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:377,1
    - Dst: cert::getSerial
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:378,1
    - Dst: auto::erase
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:379,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:384,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 1
    argNames:
    - serial
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 385
      start: 373
    functionDepth: 0
    functionLinenumber: 373
    functionLinenumberEnd: 385
    functionName: DNSCryptContext::removeInactiveCertificate
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnscrypt.cc
    functionUses: 0
    functionsReached:
    - std::runtime_error
    - auto::begin
    - write_lock
    - auto::end
    - cert::getSerial
    - auto::erase
    linkageType: ''
    returnType: void
    signature: void DNSCryptContext::removeInactiveCertificate(uint32_t serial)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:389,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:393,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:394,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:394,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:402,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:402,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:402,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:403,1
    - Dst: getProviderName
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:411,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:415,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 20
    argCount: 1
    argNames:
    - ' packet'
    argTypes:
    - PacketBuffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 420
      start: 387
    functionDepth: 0
    functionLinenumber: 387
    functionLinenumberEnd: 420
    functionName: DNSCryptQuery::parsePlaintextQuery
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnscrypt.cc
    functionUses: 0
    functionsReached:
    - std::move
    - ntohs
    - size
    - static_cast<uint8_t>
    - reinterpret_cast<const char*>
    - getProviderName
    - data
    linkageType: ''
    returnType: bool
    signature: bool DNSCryptQuery::parsePlaintextQuery(const PacketBuffer& packet)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:425,1
    - Dst: read_lock
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:430,1
    - Dst: cert::isValid
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:432,1
    - Dst: GenericDNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:436,1
    - Dst: std::string::assign
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:440,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:440,1
    - Dst: std::string::append
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:442,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:442,1
    - Dst: GenericDNSPacketWriter::xfrBlob
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:444,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:445,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 4
    argNames:
    - now
    - ' qname'
    - qid
    - ' response'
    argTypes:
    - time_t
    - DNSName
    - uint16_t
    - PacketBuffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 447
      start: 422
    functionDepth: 1
    functionLinenumber: 422
    functionLinenumberEnd: 447
    functionName: DNSCryptContext::getCertificateResponse
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnscrypt.cc
    functionUses: 0
    functionsReached:
    - std::string::append
    - GenericDNSPacketWriter::startRecord
    - GenericDNSPacketWriter::getHeader
    - read_lock
    - GenericDNSPacketWriter::commit
    - reinterpret_cast<const char*>
    - std::string::assign
    - GenericDNSPacketWriter::xfrBlob
    - cert::isValid
    linkageType: ''
    returnType: void
    signature: void DNSCryptContext::getCertificateResponse(time_t now, const DNSName&
      qname, uint16_t qid, PacketBuffer& response)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: getClientMagic
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:451,1
    - Dst: read_lock
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:453,1
    - Dst: cert::isValid
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:455,1
    - Dst: setCertificatePair
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:456,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 2
    argNames:
    - ' query'
    - now
    argTypes:
    - DNSCryptQuery
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 462
      start: 449
    functionDepth: 0
    functionLinenumber: 449
    functionLinenumberEnd: 462
    functionName: DNSCryptContext::magicMatchesAPublicKey
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnscrypt.cc
    functionUses: 0
    functionsReached:
    - cert::isValid
    - setCertificatePair
    - read_lock
    - getClientMagic
    linkageType: ''
    returnType: bool
    signature: bool DNSCryptContext::magicMatchesAPublicKey(DNSCryptQuery& query,
      time_t now)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:468,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:472,1
    - Dst: reinterpret_cast<const DNSCryptQueryHeader*>
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:477,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:477,1
    - Dst: magicMatchesAPublicKey
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:481,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 3
    argNames:
    - ' packet'
    - tcp
    - now
    argTypes:
    - PacketBuffer
    - bool
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 488
      start: 464
    functionDepth: 0
    functionLinenumber: 464
    functionLinenumberEnd: 488
    functionName: DNSCryptQuery::isEncryptedQuery
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnscrypt.cc
    functionUses: 0
    functionsReached:
    - magicMatchesAPublicKey
    - reinterpret_cast<const DNSCryptQueryHeader*>
    - size
    - data
    linkageType: ''
    returnType: bool
    signature: bool DNSCryptQuery::isEncryptedQuery(const PacketBuffer& packet, bool
      tcp, time_t now)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:493,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:497,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:498,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:498,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:498,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:499,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:499,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:499,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:505,1
    - Dst: DNSCryptNonceType::data
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:505,1
    - Dst: clientNonce::data
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:505,1
    - Dst: clientNonce::size
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:505,1
    - Dst: memset
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:506,1
    - Dst: DNSCryptNonceType::at
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:506,1
    - Dst: clientNonce::size
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:506,1
    - Dst: DNSCryptNonceType::size
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:506,1
    - Dst: clientNonce::size
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:506,1
    - Dst: DNSCryptQuery::computeSharedKey
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:509,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:511,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:511,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:512,1
    - Dst: DNSCryptQuery::getVersion
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:516,1
    - Dst: crypto_box_open_easy_afternm
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:520,1
    - Dst: reinterpret_cast<unsigned char*>
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:520,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:520,1
    - Dst: reinterpret_cast<unsigned char*>
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:522,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:522,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:523,1
    - Dst: DNSCryptNonceType::data
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:524,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:525,1
    - Dst: crypto_box_curve25519xchacha20poly1305_open_easy_afternm
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:530,1
    - Dst: reinterpret_cast<unsigned char*>
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:530,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:530,1
    - Dst: reinterpret_cast<unsigned char*>
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:532,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:532,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:533,1
    - Dst: DNSCryptNonceType::data
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:534,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:535,1
    - Dst: crypto_box_open_easy
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:546,1
    - Dst: reinterpret_cast<unsigned char*>
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:546,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:546,1
    - Dst: reinterpret_cast<unsigned char*>
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:548,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:548,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:549,1
    - Dst: DNSCryptNonceType::data
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:550,1
    - Dst: clientPK::data
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:551,1
    - Dst: privateKey::key::data
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:552,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:556,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:556,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:557,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:561,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:563,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:564,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:564,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:565,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:565,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:565,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:565,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:571,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:575,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:576,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:576,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:577,1
    - Dst: resize
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:584,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:587,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:587,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:588,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 47
    argCount: 2
    argNames:
    - tcp
    - ' packet'
    argTypes:
    - bool
    - PacketBuffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 594
      start: 490
    functionDepth: 2
    functionLinenumber: 490
    functionLinenumberEnd: 594
    functionName: DNSCryptQuery::getDecrypted
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnscrypt.cc
    functionUses: 0
    functionsReached:
    - crypto_box_curve25519xchacha20poly1305_open_easy_afternm
    - resize
    - Logging::Loggable
    - size
    - reinterpret_cast<unsigned char*>
    - memset
    - clientPK::data
    - clientNonce::size
    - dnsdist::logging::getTopLogger
    - DNSCryptQuery::computeSharedKey
    - at
    - std::runtime_error
    - DNSCryptNonceType::at
    - VERBOSESLOG
    - DNSCryptNonceType::data
    - crypto_box_open_easy
    - privateKey::key::data
    - memcpy
    - crypto_box_open_easy_afternm
    - infolog
    - data
    - DNSCryptQuery::getVersion
    - clientNonce::data
    - DNSCryptNonceType::size
    linkageType: ''
    returnType: void
    signature: void DNSCryptQuery::getDecrypted(bool tcp, PacketBuffer& packet)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:599,1
    - Dst: DNSCryptQuery::getCertificateResponse
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:601,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - now
    - ' response'
    argTypes:
    - time_t
    - PacketBuffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 602
      start: 596
    functionDepth: 1
    functionLinenumber: 596
    functionLinenumberEnd: 602
    functionName: DNSCryptQuery::getCertificateResponse
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnscrypt.cc
    functionUses: 1
    functionsReached:
    - DNSCryptQuery::getCertificateResponse
    - std::runtime_error
    linkageType: ''
    returnType: void
    signature: void DNSCryptQuery::getCertificateResponse(time_t now, PacketBuffer&
      response) const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DNSCryptQuery::isEncryptedQuery
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:609,1
    - Dst: DNSCryptQuery::getDecrypted
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:610,1
    - Dst: DNSCryptQuery::parsePlaintextQuery
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:613,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - ' packet'
    - tcp
    - now
    argTypes:
    - PacketBuffer
    - bool
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 615
      start: 604
    functionDepth: 3
    functionLinenumber: 604
    functionLinenumberEnd: 615
    functionName: DNSCryptQuery::parsePacket
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnscrypt.cc
    functionUses: 0
    functionsReached:
    - DNSCryptQuery::getDecrypted
    - DNSCryptQuery::parsePlaintextQuery
    - DNSCryptQuery::isEncryptedQuery
    linkageType: ''
    returnType: void
    signature: void DNSCryptQuery::parsePacket(PacketBuffer& packet, bool tcp, time_t
      now)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: reinterpret_cast<uint32_t*>
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:620,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:620,1
    - Dst: randombytes_random
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:624,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:626,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ' nonce'
    argTypes:
    - DNSCryptNonceType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 628
      start: 617
    functionDepth: 0
    functionLinenumber: 617
    functionLinenumberEnd: 628
    functionName: DNSCryptQuery::fillServerNonce
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnscrypt.cc
    functionUses: 0
    functionsReached:
    - memcpy
    - reinterpret_cast<uint32_t*>
    - at
    - randombytes_random
    linkageType: ''
    returnType: void
    signature: void DNSCryptQuery::fillServerNonce(DNSCryptNonceType& nonce)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:640,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:643,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:647,1
    - Dst: DNSCryptNonceType::data
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:647,1
    - Dst: clientNonce::data
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:647,1
    - Dst: clientNonce::size
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:647,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:648,1
    - Dst: DNSCryptNonceType::at
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:648,1
    - Dst: clientNonce::size
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:648,1
    - Dst: clientNonce::data
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:648,1
    - Dst: clientNonce::size
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:648,1
    - Dst: crypto_stream
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:650,1
    - Dst: reinterpret_cast<unsigned char*>
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:650,1
    - Dst: DNSCryptNonceType::data
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:650,1
    - Dst: privateKey::key::data
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:650,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 2
    argNames:
    - unpaddedLen
    - maxLen
    argTypes:
    - uint16_t
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 662
      start: 634
    functionDepth: 0
    functionLinenumber: 634
    functionLinenumberEnd: 662
    functionName: DNSCryptQuery::computePaddingSize
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnscrypt.cc
    functionUses: 0
    functionsReached:
    - memcpy
    - std::runtime_error
    - DNSCryptNonceType::at
    - reinterpret_cast<unsigned char*>
    - clientNonce::size
    - privateKey::key::data
    - DNSCryptNonceType::data
    - clientNonce::data
    - crypto_stream
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t DNSCryptQuery::computePaddingSize(uint16_t unpaddedLen, size_t
      maxLen) const
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:666,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:666,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:667,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:672,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:676,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:679,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:679,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:679,1
    - Dst: resize
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:685,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:687,1
    - Dst: resize
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:689,1
    - Dst: dnsdist::PacketMangling::editDNSHeaderFromPacket
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:691,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:700,1
    - Dst: std::min
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:704,1
    - Dst: DNSCryptQuery::computePaddingSize
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:705,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:712,1
    - Dst: DNSCryptResponseHeader::nonce::data
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:712,1
    - Dst: clientNonce::data
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:712,1
    - Dst: clientNonce::size
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:712,1
    - Dst: DNSCryptQuery::fillServerNonce
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:713,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:715,1
    - Dst: resize
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:717,1
    - Dst: std::copy_backward
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:718,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:718,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:718,1
    - Dst: static_cast<ssize_t>
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:718,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:718,1
    - Dst: static_cast<ssize_t>
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:718,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:722,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:722,1
    - Dst: memset
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:725,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:725,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:731,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:731,1
    - Dst: memset
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:733,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:733,1
    - Dst: DNSCryptQuery::computeSharedKey
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:738,1
    - Dst: DNSCryptQuery::getVersion
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:743,1
    - Dst: crypto_box_easy_afternm
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:747,1
    - Dst: reinterpret_cast<unsigned char*>
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:747,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:747,1
    - Dst: reinterpret_cast<unsigned char*>
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:749,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:749,1
    - Dst: DNSCryptResponseHeader::nonce::data
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:751,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:752,1
    - Dst: crypto_box_curve25519xchacha20poly1305_easy_afternm
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:757,1
    - Dst: reinterpret_cast<unsigned char*>
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:757,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:757,1
    - Dst: reinterpret_cast<unsigned char*>
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:759,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:759,1
    - Dst: DNSCryptResponseHeader::nonce::data
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:761,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:762,1
    - Dst: crypto_box_easy
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:772,1
    - Dst: reinterpret_cast<unsigned char*>
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:772,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:772,1
    - Dst: reinterpret_cast<unsigned char*>
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:774,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:774,1
    - Dst: DNSCryptResponseHeader::nonce::data
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:776,1
    - Dst: clientPK::data
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:777,1
    - Dst: privateKey::key::data
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:778,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:783,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 60
    argCount: 3
    argNames:
    - ' response'
    - maxResponseSize
    - tcp
    argTypes:
    - PacketBuffer
    - size_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 788
      start: 664
    functionDepth: 2
    functionLinenumber: 664
    functionLinenumberEnd: 788
    functionName: DNSCryptQuery::encryptResponse
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnscrypt.cc
    functionUses: 0
    functionsReached:
    - std::copy_backward
    - crypto_box_curve25519xchacha20poly1305_easy_afternm
    - resize
    - crypto_box_easy_afternm
    - DNSCryptResponseHeader::nonce::data
    - size
    - reinterpret_cast<unsigned char*>
    - memset
    - clientPK::data
    - clientNonce::size
    - begin
    - empty
    - DNSCryptQuery::computeSharedKey
    - at
    - crypto_box_easy
    - std::runtime_error
    - static_cast<uint8_t>
    - reinterpret_cast<const char*>
    - DNSCryptQuery::computePaddingSize
    - privateKey::key::data
    - memcpy
    - static_cast<ssize_t>
    - std::min
    - dnsdist::PacketMangling::editDNSHeaderFromPacket
    - data
    - DNSCryptQuery::getVersion
    - clientNonce::data
    - DNSCryptQuery::fillServerNonce
    linkageType: ''
    returnType: int
    signature: int DNSCryptQuery::encryptResponse(PacketBuffer& response, size_t maxResponseSize,
      bool tcp)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:792,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:793,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:796,1
    - Dst: resize
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:814,1
    - Dst: std::copy_backward
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:815,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:815,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:815,1
    - Dst: static_cast<ssize_t>
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:815,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:815,1
    - Dst: static_cast<ssize_t>
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:815,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:819,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:819,1
    - Dst: signedData::clientMagic::data
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:819,1
    - Dst: signedData::clientMagic::size
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:820,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:823,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:823,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:823,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:823,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:827,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:827,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:827,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:827,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:828,1
    - Dst: memset
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:832,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:832,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:839,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:839,1
    - Dst: memset
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:841,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:841,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:844,1
    - Dst: DNSCryptNonceType::data
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:844,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:844,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:844,1
    - Dst: memset
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:845,1
    - Dst: DNSCryptNonceType::at
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:845,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:845,1
    - Dst: DNSCryptContext::getExchangeVersion
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:847,1
    - Dst: crypto_box_easy
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:852,1
    - Dst: reinterpret_cast<unsigned char*>
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:852,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:852,1
    - Dst: reinterpret_cast<unsigned char*>
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:854,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:854,1
    - Dst: DNSCryptNonceType::data
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:856,1
    - Dst: signedData::resolverPK::data
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:857,1
    - Dst: key::data
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:858,1
    - Dst: crypto_box_curve25519xchacha20poly1305_easy
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:863,1
    - Dst: reinterpret_cast<unsigned char*>
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:863,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:863,1
    - Dst: reinterpret_cast<unsigned char*>
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:865,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:865,1
    - Dst: DNSCryptNonceType::data
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:867,1
    - Dst: signedData::resolverPK::data
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:868,1
    - Dst: key::data
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:869,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:873,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:878,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 43
    argCount: 7
    argNames:
    - ' packet'
    - maximumSize
    - ' clientPublicKey'
    - ' clientPrivateKey'
    - ' clientNonce'
    - tcp
    - ' cert'
    argTypes:
    - PacketBuffer
    - size_t
    - DNSCryptCertificatePair::PublicKeyType
    - DNSCryptPrivateKey
    - DNSCryptClientNonceType
    - bool
    - std::shared_ptr<DNSCryptCert>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 883
      start: 790
    functionDepth: 1
    functionLinenumber: 790
    functionLinenumberEnd: 883
    functionName: DNSCryptContext::encryptQuery
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnscrypt.cc
    functionUses: 0
    functionsReached:
    - crypto_box_curve25519xchacha20poly1305_easy
    - std::copy_backward
    - signedData::resolverPK::data
    - resize
    - size
    - signedData::clientMagic::data
    - reinterpret_cast<unsigned char*>
    - memset
    - key::data
    - DNSCryptContext::getExchangeVersion
    - begin
    - empty
    - at
    - crypto_box_easy
    - std::runtime_error
    - DNSCryptNonceType::at
    - signedData::clientMagic::size
    - static_cast<uint8_t>
    - DNSCryptNonceType::data
    - memcpy
    - static_cast<ssize_t>
    - data
    linkageType: ''
    returnType: int
    signature: int DNSCryptContext::encryptQuery(PacketBuffer& packet, size_t maximumSize,
      const DNSCryptCertificatePair::PublicKeyType& clientPublicKey, const DNSCryptPrivateKey&
      clientPrivateKey, const DNSCryptClientNonceType& clientNonce, bool tcp, const
      std::shared_ptr<DNSCryptCert>& cert)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sodium_mlock
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:889,1
    - Dst: DNSCryptCertSignedData::ResolverPrivateKeyType::data
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:889,1
    - Dst: DNSCryptCertSignedData::ResolverPrivateKeyType::size
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:889,1
    - Dst: sodium_memzero
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:890,1
    - Dst: DNSCryptCertSignedData::ResolverPrivateKeyType::data
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:890,1
    - Dst: DNSCryptCertSignedData::ResolverPrivateKeyType::size
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:890,1
    - Dst: ifstream::read
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:895,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:895,1
    - Dst: DNSCryptCertSignedData::ResolverPrivateKeyType::data
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:895,1
    - Dst: DNSCryptCertSignedData::ResolverPrivateKeyType::size
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:895,1
    - Dst: ifstream::fail
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:896,1
    - Dst: ifstream::close
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:897,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:898,1
    - Dst: DNSCryptContext::generateCertificate
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:901,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:905,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:905,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:905,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:906,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:906,1
    - Dst: sodium_memzero
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:909,1
    - Dst: DNSCryptCertSignedData::ResolverPrivateKeyType::data
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:909,1
    - Dst: DNSCryptCertSignedData::ResolverPrivateKeyType::size
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:909,1
    - Dst: sodium_munlock
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:910,1
    - Dst: DNSCryptCertSignedData::ResolverPrivateKeyType::data
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:910,1
    - Dst: DNSCryptCertSignedData::ResolverPrivateKeyType::size
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.cc:910,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 7
    argNames:
    - ' providerPrivateKeyFile'
    - serial
    - begin
    - end
    - version
    - ' certOut'
    - ' keyOut'
    argTypes:
    - std::string
    - uint32_t
    - time_t
    - time_t
    - DNSCryptExchangeVersion
    - DNSCryptCert
    - DNSCryptPrivateKey
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 912
      start: 885
    functionDepth: 2
    functionLinenumber: 885
    functionLinenumberEnd: 912
    functionName: generateDNSCryptCertificate
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnscrypt.cc
    functionUses: 1
    functionsReached:
    - reinterpret_cast<char*>
    - errlog
    - ifstream::read
    - SLOG
    - std::runtime_error
    - what
    - DNSCryptContext::generateCertificate
    - DNSCryptCertSignedData::ResolverPrivateKeyType::size
    - ifstream::fail
    - sodium_mlock
    - sodium_munlock
    - dnsdist::logging::getTopLogger
    - ifstream::close
    - sodium_memzero
    - DNSCryptCertSignedData::ResolverPrivateKeyType::data
    linkageType: ''
    returnType: bool
    signature: bool generateDNSCryptCertificate(const std::string& providerPrivateKeyFile,
      uint32_t serial, time_t begin, time_t end, DNSCryptExchangeVersion version,
      DNSCryptCert& certOut, DNSCryptPrivateKey& keyOut)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeProxyHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-proxy-protocol.cc:31,1
    - Dst: overTCP
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-proxy-protocol.cc:31,1
    - Dst: std::vector<ProxyProtocolValue>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-proxy-protocol.cc:31,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' dq'
    argTypes:
    - DNSQuestion
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 32
      start: 29
    functionDepth: 1
    functionLinenumber: 29
    functionLinenumberEnd: 32
    functionName: getProxyProtocolPayload
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-proxy-protocol.cc
    functionUses: 0
    functionsReached:
    - std::vector<ProxyProtocolValue>
    - makeProxyHeader
    - overTCP
    linkageType: ''
    returnType: std::string
    signature: std::string getProxyProtocolPayload(const DNSQuestion& dq)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: hasRoomFor
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-proxy-protocol.cc:36,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-proxy-protocol.cc:36,1
    - Dst: addProxyProtocol
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-proxy-protocol.cc:40,1
    - Dst: getMutableData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-proxy-protocol.cc:40,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - ' dq'
    - ' payload'
    argTypes:
    - DNSQuestion
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 34
    functionDepth: 1
    functionLinenumber: 34
    functionLinenumberEnd: 41
    functionName: addProxyProtocol
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-proxy-protocol.cc
    functionUses: 1
    functionsReached:
    - getMutableData
    - addProxyProtocol
    - size
    - hasRoomFor
    linkageType: ''
    returnType: bool
    signature: bool addProxyProtocol(DNSQuestion& dq, const std::string& payload)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: getProxyProtocolPayload
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-proxy-protocol.cc:45,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-proxy-protocol.cc:46,1
    - Dst: addProxyProtocol
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-proxy-protocol.cc:48,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - ' dnsQuestion'
    - proxyProtocolPayloadSize
    argTypes:
    - DNSQuestion
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 43
    functionDepth: 2
    functionLinenumber: 43
    functionLinenumberEnd: 56
    functionName: addProxyProtocol
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-proxy-protocol.cc
    functionUses: 2
    functionsReached:
    - addProxyProtocol
    - getProxyProtocolPayload
    - auto::size
    linkageType: ''
    returnType: bool
    signature: bool addProxyProtocol(DNSQuestion& dnsQuestion, size_t* proxyProtocolPayloadSize)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-proxy-protocol.cc:60,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-proxy-protocol.cc:61,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-proxy-protocol.cc:61,1
    - Dst: insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-proxy-protocol.cc:65,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-proxy-protocol.cc:65,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-proxy-protocol.cc:65,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-proxy-protocol.cc:65,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - ' buffer'
    - ' payload'
    argTypes:
    - PacketBuffer
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 58
    functionDepth: 1
    functionLinenumber: 58
    functionLinenumberEnd: 68
    functionName: addProxyProtocol
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-proxy-protocol.cc
    functionUses: 2
    functionsReached:
    - pdns::max
    - end
    - size
    - insert
    - begin
    linkageType: ''
    returnType: bool
    signature: bool addProxyProtocol(PacketBuffer& buffer, const std::string& payload)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeProxyHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-proxy-protocol.cc:72,1
    - Dst: addProxyProtocol
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-proxy-protocol.cc:73,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - ' buffer'
    - tcp
    - ' source'
    - ' destination'
    - ' values'
    argTypes:
    - PacketBuffer
    - bool
    - ComboAddress
    - ComboAddress
    - std::vector<ProxyProtocolValue>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 70
    functionDepth: 1
    functionLinenumber: 70
    functionLinenumberEnd: 74
    functionName: addProxyProtocol
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-proxy-protocol.cc
    functionUses: 3
    functionsReached:
    - addProxyProtocol
    - makeProxyHeader
    linkageType: ''
    returnType: bool
    signature: bool addProxyProtocol(PacketBuffer& buffer, bool tcp, const ComboAddress&
      source, const ComboAddress& destination, const std::vector<ProxyProtocolValue>&
      values)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-proxy-protocol.cc:78,1
    - Dst: match
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-proxy-protocol.cc:78,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' remote'
    argTypes:
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 76
    functionDepth: 1
    functionLinenumber: 76
    functionLinenumberEnd: 79
    functionName: expectProxyProtocolFrom
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-proxy-protocol.cc
    functionUses: 0
    functionsReached:
    - match
    - dnsdist::configuration::getCurrentRuntimeConfiguration
    linkageType: ''
    returnType: bool
    signature: bool expectProxyProtocolFrom(const ComboAddress& remote)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: parseProxyHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-proxy-protocol.cc:86,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-proxy-protocol.cc:89,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-proxy-protocol.cc:89,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-proxy-protocol.cc:89,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-proxy-protocol.cc:89,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-proxy-protocol.cc:90,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-proxy-protocol.cc:90,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-proxy-protocol.cc:90,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-proxy-protocol.cc:90,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-proxy-protocol.cc:90,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-proxy-protocol.cc:90,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-proxy-protocol.cc:93,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-proxy-protocol.cc:93,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-proxy-protocol.cc:94,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-proxy-protocol.cc:94,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-proxy-protocol.cc:94,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-proxy-protocol.cc:95,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-proxy-protocol.cc:95,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-proxy-protocol.cc:95,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-proxy-protocol.cc:95,1
    - Dst: erase
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-proxy-protocol.cc:100,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-proxy-protocol.cc:100,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-proxy-protocol.cc:100,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-proxy-protocol.cc:103,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-proxy-protocol.cc:108,1
    - Dst: match
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-proxy-protocol.cc:109,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-proxy-protocol.cc:110,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-proxy-protocol.cc:110,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-proxy-protocol.cc:110,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-proxy-protocol.cc:111,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-proxy-protocol.cc:111,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-proxy-protocol.cc:111,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-proxy-protocol.cc:111,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 24
    argCount: 7
    argNames:
    - ' remote'
    - isTCP
    - ' acl'
    - ' query'
    - ' realRemote'
    - ' realDestination'
    - ' values'
    argTypes:
    - ComboAddress
    - bool
    - NetmaskGroup
    - PacketBuffer
    - ComboAddress
    - ComboAddress
    - std::vector<ProxyProtocolValue>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 118
      start: 81
    functionDepth: 1
    functionLinenumber: 81
    functionLinenumberEnd: 118
    functionName: handleProxyProtocol
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-proxy-protocol.cc
    functionUses: 0
    functionsReached:
    - static_cast<size_t>
    - dnsdist::configuration::getCurrentRuntimeConfiguration
    - Logging::Loggable
    - VERBOSESLOG
    - infolog
    - size
    - match
    - parseProxyHeader
    - dnsdist::logging::getTopLogger
    - begin
    - toStringWithPort
    - erase
    linkageType: ''
    returnType: bool
    signature: bool handleProxyProtocol(const ComboAddress& remote, bool isTCP, const
      NetmaskGroup& acl, PacketBuffer& query, ComboAddress& realRemote, ComboAddress&
      realDestination, std::vector<ProxyProtocolValue>& values)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:36,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:39,1
    - Dst: resize
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:46,1
    - Dst: setSize
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:51,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 1
    argNames:
    - settings
    argTypes:
    - CacheSettings
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 35
    functionDepth: 1
    functionLinenumber: 35
    functionLinenumberEnd: 53
    functionName: DNSDistPacketCache::DNSDistPacketCache
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc
    functionUses: 0
    functionsReached:
    - std::move
    - resize
    - setSize
    - std::runtime_error
    linkageType: ''
    returnType: void
    signature: void DNSDistPacketCache::DNSDistPacketCache(CacheSettings settings)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::getEDNSOptionsStart
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:60,1
    - Dst: getEDNSOption
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:67,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:67,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:67,1
    - Dst: EDNSSubnetOpts::getFromString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:73,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:73,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:73,1
    - Dst: EDNSSubnetOpts::getSource
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:74,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 3
    argNames:
    - ' packet'
    - qnameWireLength
    - ' subnet'
    argTypes:
    - PacketBuffer
    - size_t
    - std::optional<Netmask>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 55
    functionDepth: 1
    functionLinenumber: 55
    functionLinenumberEnd: 81
    functionName: DNSDistPacketCache::getClientSubnet
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc
    functionUses: 0
    functionsReached:
    - EDNSSubnetOpts::getFromString
    - reinterpret_cast<const char*>
    - EDNSSubnetOpts::getSource
    - dnsdist::getEDNSOptionsStart
    - at
    - getEDNSOption
    linkageType: ''
    returnType: bool
    signature: bool DNSDistPacketCache::getClientSubnet(const PacketBuffer& packet,
      size_t qnameWireLength, std::optional<Netmask>& subnet)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 8
    argCount: 8
    argNames:
    - ' cachedValue'
    - queryFlags
    - ' qname'
    - qtype
    - qclass
    - receivedOverUDP
    - dnssecOK
    - ' subnet'
    argTypes:
    - CacheValue
    - uint16_t
    - DNSName
    - uint16_t
    - uint16_t
    - bool
    - bool
    - std::optional<Netmask>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 83
    functionDepth: 0
    functionLinenumber: 83
    functionLinenumberEnd: 94
    functionName: DNSDistPacketCache::cachedValueMatches
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool DNSDistPacketCache::cachedValueMatches(const CacheValue& cachedValue,
      uint16_t queryFlags, const DNSName& qname, uint16_t qtype, uint16_t qclass,
      bool receivedOverUDP, bool dnssecOK, const std::optional<Netmask>& subnet) const
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:99,1
    - Dst: std::tie
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:105,1
    - Dst: DNSDistPacketCache::insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:105,1
    - Dst: DNSDistPacketCache::cachedValueMatches
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:116,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 3
    argNames:
    - ' map'
    - key
    - ' newValue'
    argTypes:
    - std::unordered_map<uint32_t, CacheValue>
    - uint32_t
    - CacheValue
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 96
    functionDepth: 1
    functionLinenumber: 96
    functionLinenumberEnd: 128
    functionName: DNSDistPacketCache::insertLocked
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc
    functionUses: 0
    functionsReached:
    - DNSDistPacketCache::insert
    - DNSDistPacketCache::cachedValueMatches
    - std::tie
    - size
    linkageType: ''
    returnType: bool
    signature: bool DNSDistPacketCache::insertLocked(std::unordered_map<uint32_t,
      CacheValue>& map, uint32_t key, CacheValue& newValue)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:132,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:132,1
    - Dst: DNSDistPacketCache::getMaximumEntrySize
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:132,1
    - Dst: DNSDistPacketCache::getMinTTL
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:151,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:151,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:151,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:151,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:153,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:160,1
    - Dst: std::min
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:168,1
    - Dst: DNSDistPacketCache::getShardIndex
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:180,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:182,1
    - Dst: time
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:186,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:193,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:198,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:198,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:198,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:201,1
    - Dst: d_map::try_write_lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:205,1
    - Dst: auto::owns_lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:207,1
    - Dst: DNSDistPacketCache::insertLocked
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:211,1
    - Dst: d_map::write_lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:214,1
    - Dst: DNSDistPacketCache::insertLocked
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:216,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 60
    argCount: 11
    argNames:
    - key
    - ' subnet'
    - queryFlags
    - dnssecOK
    - ' qname'
    - qtype
    - qclass
    - ' response'
    - receivedOverUDP
    - rcode
    - tempFailureTTL
    argTypes:
    - uint32_t
    - std::optional<Netmask>
    - uint16_t
    - bool
    - DNSName
    - uint16_t
    - uint16_t
    - PacketBuffer
    - bool
    - uint8_t
    - std::optional<uint32_t>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 221
      start: 130
    functionDepth: 2
    functionLinenumber: 130
    functionLinenumberEnd: 221
    functionName: DNSDistPacketCache::insert
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc
    functionUses: 1
    functionsReached:
    - pdns::max
    - d_map::write_lock
    - std::min
    - time
    - end
    - DNSDistPacketCache::getMinTTL
    - size
    - auto::owns_lock
    - begin
    - DNSDistPacketCache::getMaximumEntrySize
    - reinterpret_cast<const char*>
    - DNSDistPacketCache::getShardIndex
    - DNSDistPacketCache::insertLocked
    - d_map::try_write_lock
    - data
    - std::string
    - at
    linkageType: ''
    returnType: void
    signature: void DNSDistPacketCache::insert(uint32_t key, const std::optional<Netmask>&
      subnet, uint16_t queryFlags, bool dnssecOK, const DNSName& qname, uint16_t qtype,
      uint16_t qclass, const PacketBuffer& response, bool receivedOverUDP, uint8_t
      rcode, std::optional<uint32_t> tempFailureTTL)
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: ids::qname::getStorage
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:230,1
    - Dst: DNSDistPacketCache::getKey
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:231,1
    - Dst: ids::qname::wirelength
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:231,1
    - Dst: getData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:231,1
    - Dst: DNSDistPacketCache::getClientSubnet
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:238,1
    - Dst: getData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:238,1
    - Dst: ids::qname::wirelength
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:238,1
    - Dst: DNSDistPacketCache::getShardIndex
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:241,1
    - Dst: time
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:242,1
    - Dst: getMutableData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:245,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:246,1
    - Dst: d_map::try_read_lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:248,1
    - Dst: auto::owns_lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:249,1
    - Dst: auto::find
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:254,1
    - Dst: auto::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:255,1
    - Dst: static_cast<time_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:264,1
    - Dst: DNSDistPacketCache::cachedValueMatches
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:278,1
    - Dst: getFlagsFromDNSHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:278,1
    - Dst: getHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:278,1
    - Dst: value::data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:284,1
    - Dst: resize
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:290,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:291,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:291,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:292,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:292,1
    - Dst: value::at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:292,1
    - Dst: length
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:300,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:305,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:305,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:305,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:307,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:307,1
    - Dst: value::at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:307,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:322,1
    - Dst: ageDNSPacket
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:324,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:324,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:324,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:324,1
    - Dst: editDNSPacketTTL
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:328,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:328,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:328,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:328,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:334,1
    - Dst: shuffleDNSPacket
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:336,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:336,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:336,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:336,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 77
    argCount: 10
    argNames:
    - ' dnsQuestion'
    - queryId
    - keyOut
    - ' subnet'
    - dnssecOK
    - receivedOverUDP
    - allowExpired
    - skipAging
    - truncatedOK
    - recordMiss
    argTypes:
    - DNSQuestion
    - uint16_t
    - uint32_t*
    - std::optional<Netmask>
    - bool
    - bool
    - uint32_t
    - bool
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 341
      start: 223
    functionDepth: 2
    functionLinenumber: 223
    functionLinenumberEnd: 341
    functionName: DNSDistPacketCache::get
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc
    functionUses: 0
    functionsReached:
    - reinterpret_cast<char*>
    - getMutableData
    - auto::owns_lock
    - value::data
    - getFlagsFromDNSHeader
    - shuffleDNSPacket
    - static_cast<time_t>
    - resize
    - time
    - DNSDistPacketCache::getClientSubnet
    - size
    - DNSDistPacketCache::cachedValueMatches
    - DNSDistPacketCache::getShardIndex
    - d_map::try_read_lock
    - c_str
    - at
    - ids::qname::getStorage
    - ageDNSPacket
    - editDNSPacketTTL
    - getHeader
    - getData
    - ids::qname::wirelength
    - auto::find
    - memcpy
    - length
    - DNSDistPacketCache::getKey
    - value::at
    - data
    - auto::end
    linkageType: ''
    returnType: bool
    signature: bool DNSDistPacketCache::get(DNSQuestion& dnsQuestion, uint16_t queryId,
      uint32_t* keyOut, std::optional<Netmask>& subnet, bool dnssecOK, bool receivedOverUDP,
      uint32_t allowExpired, bool skipAging, bool truncatedOK, bool recordMiss)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: d_map::write_lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:356,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:357,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:361,1
    - Dst: auto::begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:363,1
    - Dst: auto::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:363,1
    - Dst: auto::erase
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:367,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 2
    argNames:
    - upTo
    - now
    argTypes:
    - size_t
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 379
      start: 348
    functionDepth: 0
    functionLinenumber: 348
    functionLinenumberEnd: 379
    functionName: DNSDistPacketCache::purgeExpired
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc
    functionUses: 0
    functionsReached:
    - d_map::write_lock
    - auto::begin
    - auto::end
    - auto::erase
    - auto::size
    linkageType: ''
    returnType: size_t
    signature: size_t DNSDistPacketCache::purgeExpired(size_t upTo, const time_t now)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: d_map::write_lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:393,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:395,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:399,1
    - Dst: auto::begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:401,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:404,1
    - Dst: std::advance
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:405,1
    - Dst: auto::erase
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:406,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:411,1
    - Dst: auto::clear
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:412,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 1
    argNames:
    - upTo
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 418
      start: 386
    functionDepth: 1
    functionLinenumber: 386
    functionLinenumberEnd: 418
    functionName: DNSDistPacketCache::expunge
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc
    functionUses: 0
    functionsReached:
    - d_map::write_lock
    - auto::begin
    - auto::clear
    - std::advance
    - auto::erase
    - auto::size
    linkageType: ''
    returnType: size_t
    signature: size_t DNSDistPacketCache::expunge(size_t upTo)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: d_map::write_lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:425,1
    - Dst: auto::begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:427,1
    - Dst: auto::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:427,1
    - Dst: qname::isPartOf
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:430,1
    - Dst: auto::erase
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:431,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 12
    argCount: 3
    argNames:
    - ' name'
    - qtype
    - suffixMatch
    argTypes:
    - DNSName
    - uint16_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 442
      start: 420
    functionDepth: 0
    functionLinenumber: 420
    functionLinenumberEnd: 442
    functionName: DNSDistPacketCache::expungeByName
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc
    functionUses: 0
    functionsReached:
    - d_map::write_lock
    - qname::isPartOf
    - auto::begin
    - auto::end
    - auto::erase
    linkageType: ''
    returnType: size_t
    signature: size_t DNSDistPacketCache::expungeByName(const DNSName& name, uint16_t
      qtype, bool suffixMatch)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: d_map::write_lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:449,1
    - Dst: auto::begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:451,1
    - Dst: auto::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:451,1
    - Dst: std::find_if
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:454,1
    - Dst: cbegin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:454,1
    - Dst: cend
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:454,1
    - Dst: qname::isPartOf
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:457,1
    - Dst: cend
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:459,1
    - Dst: auto::erase
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:460,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 14
    argCount: 3
    argNames:
    - ' names'
    - qtype
    - suffixMatch
    argTypes:
    - std::vector<DNSName>
    - uint16_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 471
      start: 444
    functionDepth: 0
    functionLinenumber: 444
    functionLinenumberEnd: 471
    functionName: DNSDistPacketCache::expungeByName
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc
    functionUses: 0
    functionsReached:
    - d_map::write_lock
    - std::find_if
    - qname::isPartOf
    - cbegin
    - auto::begin
    - cend
    - auto::end
    - auto::erase
    linkageType: ''
    returnType: size_t
    signature: size_t DNSDistPacketCache::expungeByName(const std::vector<DNSName>&
      names, uint16_t qtype, bool suffixMatch)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSDistPacketCache::getSize
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:475,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 476
      start: 473
    functionDepth: 1
    functionLinenumber: 473
    functionLinenumberEnd: 476
    functionName: DNSDistPacketCache::isFull
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc
    functionUses: 0
    functionsReached:
    - DNSDistPacketCache::getSize
    linkageType: ''
    returnType: bool
    signature: bool DNSDistPacketCache::isFull()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 487
      start: 478
    functionDepth: 0
    functionLinenumber: 478
    functionLinenumberEnd: 487
    functionName: DNSDistPacketCache::getSize
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t DNSDistPacketCache::getSize()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getDNSPacketMinTTL
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:491,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - packet
    - length
    - seenNoDataSOA
    argTypes:
    - char*
    - uint16_t
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 492
      start: 489
    functionDepth: 0
    functionLinenumber: 489
    functionLinenumberEnd: 492
    functionName: DNSDistPacketCache::getMinTTL
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc
    functionUses: 1
    functionsReached:
    - getDNSPacketMinTTL
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t DNSDistPacketCache::getMinTTL(const char* packet, uint16_t
      length, bool* seenNoDataSOA)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:498,1
    - Dst: std::range_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:499,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:499,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:499,1
    - Dst: burtle
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:502,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:502,1
    - Dst: burtleCI
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:504,1
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:504,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:504,1
    - Dst: length
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:504,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:505,1
    - Dst: std::range_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:506,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:506,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:506,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:506,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:508,1
    - Dst: d_optionsToSkip::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:509,1
    - Dst: d_payloadRanks::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:509,1
    - Dst: PacketCache::hashAfterQname
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:512,1
    - Dst: std::string_view
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:512,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:512,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:512,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:512,1
    - Dst: burtle
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:515,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:515,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:515,1
    - Dst: burtle
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:519,1
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:519,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 18
    argCount: 4
    argNames:
    - ' qname'
    - qnameWireLength
    - ' packet'
    - receivedOverUDP
    argTypes:
    - DNSName::string_t
    - size_t
    - PacketBuffer
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 521
      start: 494
    functionDepth: 0
    functionLinenumber: 494
    functionLinenumberEnd: 521
    functionName: DNSDistPacketCache::getKey
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc
    functionUses: 1
    functionsReached:
    - burtleCI
    - length
    - std::to_string
    - c_str
    - std::string_view
    - size
    - d_payloadRanks::empty
    - std::range_error
    - reinterpret_cast<const unsigned char*>
    - reinterpret_cast<const char*>
    - data
    - burtle
    - PacketCache::hashAfterQname
    - at
    - d_optionsToSkip::empty
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t DNSDistPacketCache::getKey(const DNSName::string_t& qname,
      size_t qnameWireLength, const PacketBuffer& packet, bool receivedOverUDP) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - key
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 526
      start: 523
    functionDepth: 0
    functionLinenumber: 523
    functionLinenumberEnd: 526
    functionName: DNSDistPacketCache::getShardIndex
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t DNSDistPacketCache::getShardIndex(uint32_t key) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:530,1
    - Dst: DNSDistPacketCache::getSize
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:530,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:530,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 531
      start: 528
    functionDepth: 1
    functionLinenumber: 528
    functionLinenumberEnd: 531
    functionName: DNSDistPacketCache::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc
    functionUses: 0
    functionsReached:
    - DNSDistPacketCache::getSize
    - std::to_string
    linkageType: ''
    returnType: string
    signature: string DNSDistPacketCache::toString()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSDistPacketCache::getSize
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:535,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 536
      start: 533
    functionDepth: 1
    functionLinenumber: 533
    functionLinenumberEnd: 536
    functionName: DNSDistPacketCache::getEntriesCount
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc
    functionUses: 0
    functionsReached:
    - DNSDistPacketCache::getSize
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t DNSDistPacketCache::getEntriesCount()
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: dup
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:540,1
    - Dst: pdns::UniqueFilePtr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:544,1
    - Dst: fdopen
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:544,1
    - Dst: fprintf
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:549,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:549,1
    - Dst: time
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:552,1
    - Dst: d_map::read_lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:554,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:564,1
    - Dst: value::data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:564,1
    - Dst: fprintf
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:568,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:568,1
    - Dst: qname::toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:568,1
    - Dst: static_cast<int64_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:568,1
    - Dst: QClass
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:568,1
    - Dst: QType
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:568,1
    - Dst: subnet::value
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:568,1
    - Dst: static_cast<int64_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:568,1
    - Dst: Base64Encode
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:571,1
    - Dst: fprintf
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:572,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:572,1
    - Dst: std::string::c_str
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:572,1
    - Dst: fprintf
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:574,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:574,1
    - Dst: fprintf
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:577,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:577,1
    - Dst: qname::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:577,1
    - Dst: qname::toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:577,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 25
    argCount: 2
    argNames:
    - fileDesc
    - rawResponse
    argTypes:
    - int
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 583
      start: 538
    functionDepth: 0
    functionLinenumber: 538
    functionLinenumberEnd: 583
    functionName: DNSDistPacketCache::dump
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc
    functionUses: 0
    functionsReached:
    - memcpy
    - fprintf
    - auto::get
    - time
    - qname::toString
    - QClass
    - QType
    - std::string::c_str
    - dup
    - subnet::value
    - value::data
    - static_cast<int64_t>
    - qname::empty
    - pdns::UniqueFilePtr
    - fdopen
    - d_map::read_lock
    - Base64Encode
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t DNSDistPacketCache::dump(int fileDesc, bool rawResponse)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: d_map::read_lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:590,1
    - Dst: value::data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:600,1
    - Dst: visitDNSPacket
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:606,1
    - Dst: isIPv4
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:607,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:610,1
    - Dst: isIPv6
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:616,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:619,1
    - Dst: std::set::insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:630,1
    CyclomaticComplexity: 25
    EdgeCount: 25
    ICount: 35
    argCount: 1
    argNames:
    - ' addr'
    argTypes:
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 640
      start: 585
    functionDepth: 1
    functionLinenumber: 585
    functionLinenumberEnd: 640
    functionName: DNSDistPacketCache::getDomainsContainingRecords
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc
    functionUses: 0
    functionsReached:
    - memcpy
    - isIPv6
    - visitDNSPacket
    - value::data
    - isIPv4
    - std::set::insert
    - d_map::read_lock
    linkageType: ''
    returnType: std::set<DNSName>
    signature: std::set<DNSName> DNSDistPacketCache::getDomainsContainingRecords(const
      ComboAddress& addr)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: d_map::read_lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:647,1
    - Dst: value::data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:661,1
    - Dst: visitDNSPacket
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:666,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:670,1
    - Dst: std::set::insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:671,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:676,1
    - Dst: std::set::insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc:677,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 30
    argCount: 1
    argNames:
    - ' domain'
    argTypes:
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 690
      start: 642
    functionDepth: 1
    functionLinenumber: 642
    functionLinenumberEnd: 690
    functionName: DNSDistPacketCache::getRecordsForDomain
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc
    functionUses: 0
    functionsReached:
    - memcpy
    - visitDNSPacket
    - value::data
    - std::set::insert
    - d_map::read_lock
    linkageType: ''
    returnType: std::set<ComboAddress>
    signature: std::set<ComboAddress> DNSDistPacketCache::getRecordsForDomain(const
      DNSName& domain)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: arc4random_uniform
      Src: /src/pdns/pdns/dnsdistdist/dns_random.hh:31,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - upper_bound
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 32
      start: 29
    functionDepth: 0
    functionLinenumber: 29
    functionLinenumberEnd: 32
    functionName: dns_random
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dns_random.hh
    functionUses: 27
    functionsReached:
    - arc4random_uniform
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t dns_random(uint32_t upper_bound)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: arc4random
      Src: /src/pdns/pdns/dnsdistdist/dns_random.hh:36,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 34
    functionDepth: 0
    functionLinenumber: 34
    functionLinenumberEnd: 37
    functionName: dns_random_uint32
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dns_random.hh
    functionUses: 12
    functionsReached:
    - arc4random
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t dns_random_uint32()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: arc4random
      Src: /src/pdns/pdns/dnsdistdist/dns_random.hh:41,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 39
    functionDepth: 0
    functionLinenumber: 39
    functionLinenumberEnd: 42
    functionName: dns_random_uint16
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dns_random.hh
    functionUses: 15
    functionsReached:
    - arc4random
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t dns_random_uint16()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: arc4random_buf
      Src: /src/pdns/pdns/dnsdistdist/dns_random.hh:46,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - buf
    - size
    argTypes:
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 44
    functionDepth: 0
    functionLinenumber: 44
    functionLinenumberEnd: 47
    functionName: dns_random
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dns_random.hh
    functionUses: 27
    functionsReached:
    - arc4random_buf
    linkageType: ''
    returnType: void
    signature: void dns_random(void* buf, size_t size)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 56
    functionDepth: 0
    functionLinenumber: 56
    functionLinenumberEnd: 59
    functionName: pdns::min
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dns_random.hh
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: result_type
    signature: result_type min()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/dns_random.hh:63,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 61
    functionDepth: 0
    functionLinenumber: 61
    functionLinenumberEnd: 64
    functionName: pdns::max
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dns_random.hh
    functionUses: 50
    functionsReached:
    - pdns::max
    linkageType: ''
    returnType: result_type
    signature: result_type max()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dns_random_uint32
      Src: /src/pdns/pdns/dnsdistdist/dns_random.hh:68,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 66
    functionDepth: 0
    functionLinenumber: 66
    functionLinenumberEnd: 69
    functionName: operator()()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dns_random.hh
    functionUses: 0
    functionsReached:
    - dns_random_uint32
    linkageType: ''
    returnType: result_type
    signature: result_type operator()()
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - upper_bound
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 73
    functionDepth: 0
    functionLinenumber: 73
    functionLinenumberEnd: 96
    functionName: pdns::random_minimum_acceptable_value
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dns_random.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int random_minimum_acceptable_value(uint32_t upper_bound)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 56
    functionDepth: 0
    functionLinenumber: 56
    functionLinenumberEnd: 59
    functionName: pdns::min
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dns_random.hh
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: result_type
    signature: result_type min()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/dns_random.hh:63,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 61
    functionDepth: 0
    functionLinenumber: 61
    functionLinenumberEnd: 64
    functionName: pdns::max
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dns_random.hh
    functionUses: 51
    functionsReached:
    - pdns::max
    linkageType: ''
    returnType: result_type
    signature: result_type max()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dns_random_uint32
      Src: /src/pdns/pdns/dnsdistdist/dns_random.hh:68,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 66
    functionDepth: 0
    functionLinenumber: 66
    functionLinenumberEnd: 69
    functionName: operator()()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dns_random.hh
    functionUses: 0
    functionsReached:
    - dns_random_uint32
    linkageType: ''
    returnType: result_type
    signature: result_type operator()()
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - upper_bound
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 73
    functionDepth: 0
    functionLinenumber: 73
    functionLinenumberEnd: 96
    functionName: pdns::random_minimum_acceptable_value
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dns_random.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int random_minimum_acceptable_value(uint32_t upper_bound)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 39
      start: 36
    functionDepth: 0
    functionLinenumber: 36
    functionLinenumberEnd: 39
    functionName: dnsdist::rules::getResponseRuleChainDescriptions
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rule-chains.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::vector<ResponseRuleChainDescription>
    signature: std::vector<ResponseRuleChainDescription> & getResponseRuleChainDescriptions()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 46
    functionDepth: 0
    functionLinenumber: 46
    functionLinenumberEnd: 49
    functionName: dnsdist::rules::getRuleChainDescriptions
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rule-chains.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::vector<RuleChainDescription>
    signature: std::vector<RuleChainDescription> & getRuleChainDescriptions()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rule-chains.cc:60,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - ' chains'
    - chain
    argTypes:
    - RuleChains
    - RuleChain
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 51
    functionDepth: 0
    functionLinenumber: 51
    functionLinenumberEnd: 61
    functionName: dnsdist::rules::getRuleChain
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rule-chains.cc
    functionUses: 0
    functionsReached:
    - std::runtime_error
    linkageType: ''
    returnType: std::vector<RuleAction>
    signature: std::vector<RuleAction> & getRuleChain(RuleChains& chains, RuleChain
      chain)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rule-chains.cc:72,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - ' chains'
    - chain
    argTypes:
    - RuleChains
    - RuleChain
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 63
    functionDepth: 0
    functionLinenumber: 63
    functionLinenumberEnd: 73
    functionName: dnsdist::rules::getRuleChain
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rule-chains.cc
    functionUses: 0
    functionsReached:
    - std::runtime_error
    linkageType: ''
    returnType: std::vector<RuleAction>
    signature: std::vector<RuleAction> & getRuleChain(const RuleChains& chains, RuleChain
      chain)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::rules::getResponseRuleChain
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rule-chains.cc:77,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' chains'
    - chain
    argTypes:
    - RuleChains
    - ResponseRuleChain
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 75
    functionDepth: 1
    functionLinenumber: 75
    functionLinenumberEnd: 78
    functionName: dnsdist::rules::getRuleChain
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rule-chains.cc
    functionUses: 0
    functionsReached:
    - dnsdist::rules::getResponseRuleChain
    linkageType: ''
    returnType: std::vector<ResponseRuleAction>
    signature: std::vector<ResponseRuleAction> & getRuleChain(RuleChains& chains,
      ResponseRuleChain chain)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::rules::getResponseRuleChain
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rule-chains.cc:82,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' chains'
    - chain
    argTypes:
    - RuleChains
    - ResponseRuleChain
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 80
    functionDepth: 1
    functionLinenumber: 80
    functionLinenumberEnd: 83
    functionName: dnsdist::rules::getRuleChain
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rule-chains.cc
    functionUses: 0
    functionsReached:
    - dnsdist::rules::getResponseRuleChain
    linkageType: ''
    returnType: std::vector<ResponseRuleAction>
    signature: std::vector<ResponseRuleAction> & getRuleChain(const RuleChains& chains,
      ResponseRuleChain chain)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rule-chains.cc:102,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 2
    argNames:
    - ' chains'
    - chain
    argTypes:
    - RuleChains
    - ResponseRuleChain
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 85
    functionDepth: 0
    functionLinenumber: 85
    functionLinenumberEnd: 103
    functionName: dnsdist::rules::getResponseRuleChain
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rule-chains.cc
    functionUses: 3
    functionsReached:
    - std::runtime_error
    linkageType: ''
    returnType: std::vector<ResponseRuleAction>
    signature: std::vector<ResponseRuleAction> & getResponseRuleChain(RuleChains&
      chains, ResponseRuleChain chain)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rule-chains.cc:122,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 2
    argNames:
    - ' chains'
    - chain
    argTypes:
    - RuleChains
    - ResponseRuleChain
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 105
    functionDepth: 0
    functionLinenumber: 105
    functionLinenumberEnd: 123
    functionName: dnsdist::rules::getResponseRuleChain
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rule-chains.cc
    functionUses: 3
    functionsReached:
    - std::runtime_error
    linkageType: ''
    returnType: std::vector<ResponseRuleAction>
    signature: std::vector<ResponseRuleAction> & getResponseRuleChain(const RuleChains&
      chains, ResponseRuleChain chain)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::rules::getRuleChain
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rule-chains.cc:127,1
    - Dst: push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rule-chains.cc:128,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rule-chains.cc:128,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 7
    argNames:
    - ' chains'
    - identifier
    - ' selector'
    - ' action'
    - ' name'
    - ' uuid'
    - creationOrder
    argTypes:
    - RuleChains
    - RuleChain
    - std::shared_ptr<DNSRule>
    - std::shared_ptr<DNSAction>
    - std::string
    - boost::uuids::uuid
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 129
      start: 125
    functionDepth: 1
    functionLinenumber: 125
    functionLinenumberEnd: 129
    functionName: dnsdist::rules::add
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rule-chains.cc
    functionUses: 0
    functionsReached:
    - push_back
    - std::move
    - dnsdist::rules::getRuleChain
    linkageType: ''
    returnType: void
    signature: void add(RuleChains& chains, RuleChain identifier, const std::shared_ptr<DNSRule>&
      selector, const std::shared_ptr<DNSAction>& action, std::string&& name, const
      boost::uuids::uuid& uuid, uint64_t creationOrder)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::rules::getResponseRuleChain
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rule-chains.cc:133,1
    - Dst: push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rule-chains.cc:134,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rule-chains.cc:134,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 7
    argNames:
    - ' chains'
    - identifier
    - ' selector'
    - ' action'
    - ' name'
    - ' uuid'
    - creationOrder
    argTypes:
    - RuleChains
    - ResponseRuleChain
    - std::shared_ptr<DNSRule>
    - std::shared_ptr<DNSResponseAction>
    - std::string
    - boost::uuids::uuid
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 135
      start: 131
    functionDepth: 1
    functionLinenumber: 131
    functionLinenumberEnd: 135
    functionName: dnsdist::rules::add
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rule-chains.cc
    functionUses: 0
    functionsReached:
    - push_back
    - std::move
    - dnsdist::rules::getResponseRuleChain
    linkageType: ''
    returnType: void
    signature: void add(RuleChains& chains, ResponseRuleChain identifier, const std::shared_ptr<DNSRule>&
      selector, const std::shared_ptr<DNSResponseAction>& action, std::string&& name,
      const boost::uuids::uuid& uuid, uint64_t creationOrder)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 39
      start: 36
    functionDepth: 0
    functionLinenumber: 36
    functionLinenumberEnd: 39
    functionName: dnsdist::rules::getResponseRuleChainDescriptions
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rule-chains.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::vector<ResponseRuleChainDescription>
    signature: std::vector<ResponseRuleChainDescription> & getResponseRuleChainDescriptions()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 46
    functionDepth: 0
    functionLinenumber: 46
    functionLinenumberEnd: 49
    functionName: dnsdist::rules::getRuleChainDescriptions
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rule-chains.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::vector<RuleChainDescription>
    signature: std::vector<RuleChainDescription> & getRuleChainDescriptions()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rule-chains.cc:60,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - ' chains'
    - chain
    argTypes:
    - RuleChains
    - RuleChain
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 51
    functionDepth: 0
    functionLinenumber: 51
    functionLinenumberEnd: 61
    functionName: dnsdist::rules::getRuleChain
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rule-chains.cc
    functionUses: 1
    functionsReached:
    - std::runtime_error
    linkageType: ''
    returnType: std::vector<RuleAction>
    signature: std::vector<RuleAction> & getRuleChain(RuleChains& chains, RuleChain
      chain)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rule-chains.cc:72,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - ' chains'
    - chain
    argTypes:
    - RuleChains
    - RuleChain
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 63
    functionDepth: 0
    functionLinenumber: 63
    functionLinenumberEnd: 73
    functionName: dnsdist::rules::getRuleChain
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rule-chains.cc
    functionUses: 1
    functionsReached:
    - std::runtime_error
    linkageType: ''
    returnType: std::vector<RuleAction>
    signature: std::vector<RuleAction> & getRuleChain(const RuleChains& chains, RuleChain
      chain)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::rules::getResponseRuleChain
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rule-chains.cc:77,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' chains'
    - chain
    argTypes:
    - RuleChains
    - ResponseRuleChain
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 75
    functionDepth: 1
    functionLinenumber: 75
    functionLinenumberEnd: 78
    functionName: dnsdist::rules::getRuleChain
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rule-chains.cc
    functionUses: 1
    functionsReached:
    - dnsdist::rules::getResponseRuleChain
    linkageType: ''
    returnType: std::vector<ResponseRuleAction>
    signature: std::vector<ResponseRuleAction> & getRuleChain(RuleChains& chains,
      ResponseRuleChain chain)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::rules::getResponseRuleChain
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rule-chains.cc:82,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' chains'
    - chain
    argTypes:
    - RuleChains
    - ResponseRuleChain
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 80
    functionDepth: 1
    functionLinenumber: 80
    functionLinenumberEnd: 83
    functionName: dnsdist::rules::getRuleChain
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rule-chains.cc
    functionUses: 1
    functionsReached:
    - dnsdist::rules::getResponseRuleChain
    linkageType: ''
    returnType: std::vector<ResponseRuleAction>
    signature: std::vector<ResponseRuleAction> & getRuleChain(const RuleChains& chains,
      ResponseRuleChain chain)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rule-chains.cc:102,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 2
    argNames:
    - ' chains'
    - chain
    argTypes:
    - RuleChains
    - ResponseRuleChain
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 85
    functionDepth: 0
    functionLinenumber: 85
    functionLinenumberEnd: 103
    functionName: dnsdist::rules::getResponseRuleChain
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rule-chains.cc
    functionUses: 6
    functionsReached:
    - std::runtime_error
    linkageType: ''
    returnType: std::vector<ResponseRuleAction>
    signature: std::vector<ResponseRuleAction> & getResponseRuleChain(RuleChains&
      chains, ResponseRuleChain chain)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rule-chains.cc:122,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 2
    argNames:
    - ' chains'
    - chain
    argTypes:
    - RuleChains
    - ResponseRuleChain
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 105
    functionDepth: 0
    functionLinenumber: 105
    functionLinenumberEnd: 123
    functionName: dnsdist::rules::getResponseRuleChain
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rule-chains.cc
    functionUses: 6
    functionsReached:
    - std::runtime_error
    linkageType: ''
    returnType: std::vector<ResponseRuleAction>
    signature: std::vector<ResponseRuleAction> & getResponseRuleChain(const RuleChains&
      chains, ResponseRuleChain chain)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::rules::getRuleChain
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rule-chains.cc:127,1
    - Dst: push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rule-chains.cc:128,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rule-chains.cc:128,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 7
    argNames:
    - ' chains'
    - identifier
    - ' selector'
    - ' action'
    - ' name'
    - ' uuid'
    - creationOrder
    argTypes:
    - RuleChains
    - RuleChain
    - std::shared_ptr<DNSRule>
    - std::shared_ptr<DNSAction>
    - std::string
    - boost::uuids::uuid
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 129
      start: 125
    functionDepth: 1
    functionLinenumber: 125
    functionLinenumberEnd: 129
    functionName: dnsdist::rules::add
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rule-chains.cc
    functionUses: 0
    functionsReached:
    - push_back
    - std::move
    - dnsdist::rules::getRuleChain
    linkageType: ''
    returnType: void
    signature: void add(RuleChains& chains, RuleChain identifier, const std::shared_ptr<DNSRule>&
      selector, const std::shared_ptr<DNSAction>& action, std::string&& name, const
      boost::uuids::uuid& uuid, uint64_t creationOrder)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::rules::getResponseRuleChain
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rule-chains.cc:133,1
    - Dst: push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rule-chains.cc:134,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rule-chains.cc:134,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 7
    argNames:
    - ' chains'
    - identifier
    - ' selector'
    - ' action'
    - ' name'
    - ' uuid'
    - creationOrder
    argTypes:
    - RuleChains
    - ResponseRuleChain
    - std::shared_ptr<DNSRule>
    - std::shared_ptr<DNSResponseAction>
    - std::string
    - boost::uuids::uuid
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 135
      start: 131
    functionDepth: 1
    functionLinenumber: 131
    functionLinenumberEnd: 135
    functionName: dnsdist::rules::add
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rule-chains.cc
    functionUses: 0
    functionsReached:
    - push_back
    - std::move
    - dnsdist::rules::getResponseRuleChain
    linkageType: ''
    returnType: void
    signature: void add(RuleChains& chains, ResponseRuleChain identifier, const std::shared_ptr<DNSRule>&
      selector, const std::shared_ptr<DNSResponseAction>& action, std::string&& name,
      const boost::uuids::uuid& uuid, uint64_t creationOrder)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EDNSCookiesOpt::getEDNSCookiesOptFromString
      Src: /src/pdns/pdns/dnsdistdist/ednscookies.cc:35,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/ednscookies.cc:35,1
    - Dst: length
      Src: /src/pdns/pdns/dnsdistdist/ednscookies.cc:35,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' option'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 36
      start: 33
    functionDepth: 0
    functionLinenumber: 33
    functionLinenumberEnd: 36
    functionName: EDNSCookiesOpt::EDNSCookiesOpt
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ednscookies.cc
    functionUses: 1
    functionsReached:
    - EDNSCookiesOpt::getEDNSCookiesOptFromString
    - length
    - c_str
    linkageType: ''
    returnType: void
    signature: void EDNSCookiesOpt::EDNSCookiesOpt(const std::string& option)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EDNSCookiesOpt::getEDNSCookiesOptFromString
      Src: /src/pdns/pdns/dnsdistdist/ednscookies.cc:40,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - option
    - len
    argTypes:
    - char*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 38
    functionDepth: 0
    functionLinenumber: 38
    functionLinenumberEnd: 41
    functionName: EDNSCookiesOpt::EDNSCookiesOpt
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ednscookies.cc
    functionUses: 1
    functionsReached:
    - EDNSCookiesOpt::getEDNSCookiesOptFromString
    linkageType: ''
    returnType: void
    signature: void EDNSCookiesOpt::EDNSCookiesOpt(const char* option, unsigned int
      len)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EDNSCookiesOpt::getEDNSCookiesOptFromString
      Src: /src/pdns/pdns/dnsdistdist/ednscookies.cc:45,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/ednscookies.cc:45,1
    - Dst: length
      Src: /src/pdns/pdns/dnsdistdist/ednscookies.cc:45,1
    - Dst: isWellFormed
      Src: /src/pdns/pdns/dnsdistdist/ednscookies.cc:46,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ' option'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 47
    functionName: EDNSCookiesOpt::makeFromString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ednscookies.cc
    functionUses: 4
    functionsReached:
    - EDNSCookiesOpt::getEDNSCookiesOptFromString
    - length
    - isWellFormed
    - c_str
    linkageType: ''
    returnType: bool
    signature: bool EDNSCookiesOpt::makeFromString(const std::string& option)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EDNSCookiesOpt::getEDNSCookiesOptFromString
      Src: /src/pdns/pdns/dnsdistdist/ednscookies.cc:51,1
    - Dst: isWellFormed
      Src: /src/pdns/pdns/dnsdistdist/ednscookies.cc:52,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - option
    - len
    argTypes:
    - char*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 49
    functionDepth: 0
    functionLinenumber: 49
    functionLinenumberEnd: 53
    functionName: EDNSCookiesOpt::makeFromString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ednscookies.cc
    functionUses: 4
    functionsReached:
    - EDNSCookiesOpt::getEDNSCookiesOptFromString
    - isWellFormed
    linkageType: ''
    returnType: bool
    signature: bool EDNSCookiesOpt::makeFromString(const char* option, unsigned int
      len)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: isWellFormed
      Src: /src/pdns/pdns/dnsdistdist/ednscookies.cc:58,1
    - Dst: string::assign
      Src: /src/pdns/pdns/dnsdistdist/ednscookies.cc:61,1
    - Dst: length
      Src: /src/pdns/pdns/dnsdistdist/ednscookies.cc:62,1
    - Dst: string::append
      Src: /src/pdns/pdns/dnsdistdist/ednscookies.cc:63,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 55
    functionDepth: 1
    functionLinenumber: 55
    functionLinenumberEnd: 66
    functionName: EDNSCookiesOpt::makeOptString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ednscookies.cc
    functionUses: 3
    functionsReached:
    - string::append
    - length
    - string::assign
    - isWellFormed
    linkageType: ''
    returnType: string
    signature: string EDNSCookiesOpt::makeOptString() const
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: makeHexDump
      Src: /src/pdns/pdns/dnsdistdist/ednscookies.cc:71,1
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/ednscookies.cc:72,1
    - Dst: length
      Src: /src/pdns/pdns/dnsdistdist/ednscookies.cc:74,1
    - Dst: makeHexDump
      Src: /src/pdns/pdns/dnsdistdist/ednscookies.cc:76,1
    - Dst: makeHexDump
      Src: /src/pdns/pdns/dnsdistdist/ednscookies.cc:80,1
    - Dst: substr
      Src: /src/pdns/pdns/dnsdistdist/ednscookies.cc:80,1
    - Dst: makeHexDump
      Src: /src/pdns/pdns/dnsdistdist/ednscookies.cc:82,1
    - Dst: substr
      Src: /src/pdns/pdns/dnsdistdist/ednscookies.cc:82,1
    - Dst: makeHexDump
      Src: /src/pdns/pdns/dnsdistdist/ednscookies.cc:84,1
    - Dst: substr
      Src: /src/pdns/pdns/dnsdistdist/ednscookies.cc:84,1
    - Dst: makeHexDump
      Src: /src/pdns/pdns/dnsdistdist/ednscookies.cc:86,1
    - Dst: substr
      Src: /src/pdns/pdns/dnsdistdist/ednscookies.cc:86,1
    - Dst: std::ostringstream::str
      Src: /src/pdns/pdns/dnsdistdist/ednscookies.cc:89,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 68
    functionDepth: 0
    functionLinenumber: 68
    functionLinenumberEnd: 90
    functionName: EDNSCookiesOpt::toDisplayString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ednscookies.cc
    functionUses: 0
    functionsReached:
    - length
    - std::ostringstream::str
    - substr
    - empty
    - makeHexDump
    linkageType: ''
    returnType: string
    signature: string EDNSCookiesOpt::toDisplayString() const
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: clear
      Src: /src/pdns/pdns/dnsdistdist/ednscookies.cc:94,1
    - Dst: clear
      Src: /src/pdns/pdns/dnsdistdist/ednscookies.cc:95,1
    - Dst: std::string::substr
      Src: /src/pdns/pdns/dnsdistdist/ednscookies.cc:100,1
    - Dst: std::string::substr
      Src: /src/pdns/pdns/dnsdistdist/ednscookies.cc:102,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - option
    - len
    argTypes:
    - char*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 104
      start: 92
    functionDepth: 1
    functionLinenumber: 92
    functionLinenumberEnd: 104
    functionName: EDNSCookiesOpt::getEDNSCookiesOptFromString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ednscookies.cc
    functionUses: 8
    functionsReached:
    - clear
    - std::string::substr
    linkageType: ''
    returnType: void
    signature: void EDNSCookiesOpt::getEDNSCookiesOptFromString(const char* option,
      unsigned int len)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: rfc1982LessThan
      Src: /src/pdns/pdns/dnsdistdist/ednscookies.cc:113,1
    - Dst: rfc1982LessThan
      Src: /src/pdns/pdns/dnsdistdist/ednscookies.cc:113,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 2
    argNames:
    - timestamp
    - now
    argTypes:
    - uint32_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 106
    functionDepth: 0
    functionLinenumber: 106
    functionLinenumberEnd: 114
    functionName: cookieTSIsValid
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ednscookies.cc
    functionUses: 2
    functionsReached:
    - rfc1982LessThan
    linkageType: ''
    returnType: bool
    signature: bool cookieTSIsValid(uint32_t timestamp, uint32_t now)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: length
      Src: /src/pdns/pdns/dnsdistdist/ednscookies.cc:119,1
    - Dst: length
      Src: /src/pdns/pdns/dnsdistdist/ednscookies.cc:119,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/ednscookies.cc:127,1
    - Dst: ntohl
      Src: /src/pdns/pdns/dnsdistdist/ednscookies.cc:128,1
    - Dst: static_cast<uint32_t>
      Src: /src/pdns/pdns/dnsdistdist/ednscookies.cc:130,1
    - Dst: time
      Src: /src/pdns/pdns/dnsdistdist/ednscookies.cc:130,1
    - Dst: cookieTSIsValid
      Src: /src/pdns/pdns/dnsdistdist/ednscookies.cc:131,1
    - Dst: length
      Src: /src/pdns/pdns/dnsdistdist/ednscookies.cc:134,1
    - Dst: substr
      Src: /src/pdns/pdns/dnsdistdist/ednscookies.cc:138,1
    - Dst: toByteString
      Src: /src/pdns/pdns/dnsdistdist/ednscookies.cc:138,1
    - Dst: string::resize
      Src: /src/pdns/pdns/dnsdistdist/ednscookies.cc:140,1
    - Dst: crypto_shorthash
      Src: /src/pdns/pdns/dnsdistdist/ednscookies.cc:143,1
    - Dst: reinterpret_cast<unsigned char*>
      Src: /src/pdns/pdns/dnsdistdist/ednscookies.cc:143,1
    - Dst: string::data
      Src: /src/pdns/pdns/dnsdistdist/ednscookies.cc:143,1
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/dnsdistdist/ednscookies.cc:144,1
    - Dst: string::data
      Src: /src/pdns/pdns/dnsdistdist/ednscookies.cc:144,1
    - Dst: string::length
      Src: /src/pdns/pdns/dnsdistdist/ednscookies.cc:145,1
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/dnsdistdist/ednscookies.cc:146,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/ednscookies.cc:146,1
    - Dst: constantTimeStringEquals
      Src: /src/pdns/pdns/dnsdistdist/ednscookies.cc:148,1
    - Dst: substr
      Src: /src/pdns/pdns/dnsdistdist/ednscookies.cc:148,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 2
    argNames:
    - ' secret'
    - ' source'
    argTypes:
    - string
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 152
      start: 116
    functionDepth: 1
    functionLinenumber: 116
    functionLinenumberEnd: 152
    functionName: EDNSCookiesOpt::isValid
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ednscookies.cc
    functionUses: 2
    functionsReached:
    - string::data
    - length
    - ntohl
    - memcpy
    - string::resize
    - time
    - crypto_shorthash
    - static_cast<uint32_t>
    - toByteString
    - reinterpret_cast<unsigned char*>
    - cookieTSIsValid
    - substr
    - reinterpret_cast<const unsigned char*>
    - data
    - constantTimeStringEquals
    - string::length
    linkageType: ''
    returnType: bool
    signature: bool EDNSCookiesOpt::isValid([[maybe_unused]] const string& secret,
      [[maybe_unused]] const ComboAddress& source) const
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/ednscookies.cc:156,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/ednscookies.cc:160,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/ednscookies.cc:160,1
    - Dst: ntohl
      Src: /src/pdns/pdns/dnsdistdist/ednscookies.cc:161,1
    - Dst: static_cast<uint32_t>
      Src: /src/pdns/pdns/dnsdistdist/ednscookies.cc:163,1
    - Dst: time
      Src: /src/pdns/pdns/dnsdistdist/ednscookies.cc:163,1
    - Dst: cookieTSIsValid
      Src: /src/pdns/pdns/dnsdistdist/ednscookies.cc:165,1
    - Dst: rfc1982LessThan
      Src: /src/pdns/pdns/dnsdistdist/ednscookies.cc:172,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 173
      start: 154
    functionDepth: 0
    functionLinenumber: 154
    functionLinenumberEnd: 173
    functionName: EDNSCookiesOpt::shouldRefresh
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ednscookies.cc
    functionUses: 1
    functionsReached:
    - memcpy
    - ntohl
    - rfc1982LessThan
    - time
    - size
    - static_cast<uint32_t>
    - cookieTSIsValid
    - at
    linkageType: ''
    returnType: bool
    signature: bool EDNSCookiesOpt::shouldRefresh() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: resize
      Src: /src/pdns/pdns/dnsdistdist/ednscookies.cc:178,1
    - Dst: dns_random
      Src: /src/pdns/pdns/dnsdistdist/ednscookies.cc:179,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/ednscookies.cc:179,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 180
      start: 175
    functionDepth: 1
    functionLinenumber: 175
    functionLinenumberEnd: 180
    functionName: EDNSCookiesOpt::makeClientCookie
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ednscookies.cc
    functionUses: 1
    functionsReached:
    - dns_random
    - resize
    - data
    linkageType: ''
    returnType: void
    signature: void EDNSCookiesOpt::makeClientCookie()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/dnsdistdist/ednscookies.cc:185,1
    - Dst: EDNSCookiesOpt::isValid
      Src: /src/pdns/pdns/dnsdistdist/ednscookies.cc:187,1
    - Dst: EDNSCookiesOpt::shouldRefresh
      Src: /src/pdns/pdns/dnsdistdist/ednscookies.cc:187,1
    - Dst: length
      Src: /src/pdns/pdns/dnsdistdist/ednscookies.cc:191,1
    - Dst: clear
      Src: /src/pdns/pdns/dnsdistdist/ednscookies.cc:195,1
    - Dst: reserve
      Src: /src/pdns/pdns/dnsdistdist/ednscookies.cc:196,1
    - Dst: resize
      Src: /src/pdns/pdns/dnsdistdist/ednscookies.cc:198,1
    - Dst: htonl
      Src: /src/pdns/pdns/dnsdistdist/ednscookies.cc:200,1
    - Dst: static_cast<uint32_t>
      Src: /src/pdns/pdns/dnsdistdist/ednscookies.cc:200,1
    - Dst: time
      Src: /src/pdns/pdns/dnsdistdist/ednscookies.cc:200,1
    - Dst: string
      Src: /src/pdns/pdns/dnsdistdist/ednscookies.cc:202,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/ednscookies.cc:202,1
    - Dst: resize
      Src: /src/pdns/pdns/dnsdistdist/ednscookies.cc:203,1
    - Dst: toByteString
      Src: /src/pdns/pdns/dnsdistdist/ednscookies.cc:207,1
    - Dst: resize
      Src: /src/pdns/pdns/dnsdistdist/ednscookies.cc:208,1
    - Dst: crypto_shorthash
      Src: /src/pdns/pdns/dnsdistdist/ednscookies.cc:209,1
    - Dst: reinterpret_cast<unsigned char*>
      Src: /src/pdns/pdns/dnsdistdist/ednscookies.cc:209,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/ednscookies.cc:209,1
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/dnsdistdist/ednscookies.cc:210,1
    - Dst: string::data
      Src: /src/pdns/pdns/dnsdistdist/ednscookies.cc:210,1
    - Dst: string::length
      Src: /src/pdns/pdns/dnsdistdist/ednscookies.cc:211,1
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/dnsdistdist/ednscookies.cc:212,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/ednscookies.cc:212,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 2
    argNames:
    - ' secret'
    - ' source'
    argTypes:
    - string
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 218
      start: 182
    functionDepth: 1
    functionLinenumber: 182
    functionLinenumberEnd: 218
    functionName: EDNSCookiesOpt::makeServerCookie
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ednscookies.cc
    functionUses: 0
    functionsReached:
    - crypto_shorthash
    - static_cast<uint32_t>
    - string::data
    - static_cast<size_t>
    - resize
    - time
    - string
    - reinterpret_cast<unsigned char*>
    - reinterpret_cast<const unsigned char*>
    - EDNSCookiesOpt::isValid
    - clear
    - at
    - toByteString
    - reserve
    - reinterpret_cast<const char*>
    - string::length
    - length
    - htonl
    - EDNSCookiesOpt::shouldRefresh
    - data
    linkageType: ''
    returnType: bool
    signature: bool EDNSCookiesOpt::makeServerCookie([[maybe_unused]] const string&
      secret, [[maybe_unused]] const ComboAddress& source)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 1
    argNames:
    - ' ds'
    argTypes:
    - std::shared_ptr<DownstreamState>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 39
      start: 36
    functionDepth: 0
    functionLinenumber: 36
    functionLinenumberEnd: 39
    functionName: MockupConnection::MockupConnection
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdist-connections-cache.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void MockupConnection(const std::shared_ptr<DownstreamState>& ds, std::unique_ptr<FDMultiplexer>&,
      const struct timeval&, std::string&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 41
    functionDepth: 0
    functionLinenumber: 41
    functionLinenumberEnd: 44
    functionName: MockupConnection::canBeReused
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdist-connections-cache.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool canBeReused() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 46
    functionDepth: 0
    functionLinenumber: 46
    functionLinenumberEnd: 49
    functionName: MockupConnection::isUsable
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdist-connections-cache.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool isUsable() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 51
    functionDepth: 0
    functionLinenumber: 51
    functionLinenumberEnd: 54
    functionName: MockupConnection::willBeReusable
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdist-connections-cache.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool willBeReusable(bool) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 56
    functionDepth: 0
    functionLinenumber: 56
    functionLinenumberEnd: 58
    functionName: MockupConnection::setReused
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdist-connections-cache.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setReused()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 60
    functionDepth: 0
    functionLinenumber: 60
    functionLinenumberEnd: 63
    functionName: MockupConnection::getLastDataReceivedTime
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdist-connections-cache.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct timeval
    signature: struct timeval getLastDataReceivedTime() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 65
    functionDepth: 0
    functionLinenumber: 65
    functionLinenumberEnd: 68
    functionName: MockupConnection::isIdle
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdist-connections-cache.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool isIdle() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 70
    functionDepth: 0
    functionLinenumber: 70
    functionLinenumberEnd: 72
    functionName: MockupConnection::stopIO
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdist-connections-cache.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void stopIO()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - removeFromCache
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 74
    functionDepth: 0
    functionLinenumber: 74
    functionLinenumberEnd: 77
    functionName: MockupConnection::release
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdist-connections-cache.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void release(bool removeFromCache)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 79
    functionDepth: 0
    functionLinenumber: 79
    functionLinenumberEnd: 82
    functionName: MockupConnection::getDS
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdist-connections-cache.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::shared_ptr<DownstreamState>
    signature: std::shared_ptr<DownstreamState> getDS() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DownstreamConnectionsManager::setMaxIdleConnectionsPerDownstream
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-connections-cache.cc:100,1
    - Dst: DownstreamConnectionsManager::setCleanupInterval
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-connections-cache.cc:101,1
    - Dst: DownstreamConnectionsManager::setMaxIdleTime
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-connections-cache.cc:102,1
    - Dst: std::unique_ptr<FDMultiplexer>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-connections-cache.cc:104,1
    - Dst: FDMultiplexer::getMultiplexerSilent
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-connections-cache.cc:104,1
    - Dst: std::make_shared<DownstreamState>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-connections-cache.cc:105,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-connections-cache.cc:105,1
    - Dst: std::make_shared<DownstreamState>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-connections-cache.cc:106,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-connections-cache.cc:106,1
    - Dst: gettimeofday
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-connections-cache.cc:108,1
    - Dst: DownstreamConnectionsManager::getConnectionToDownstream
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-connections-cache.cc:110,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-connections-cache.cc:110,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-connections-cache.cc:111,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-connections-cache.cc:112,1
    - Dst: DownstreamConnectionsManager::count
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-connections-cache.cc:112,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-connections-cache.cc:113,1
    - Dst: DownstreamConnectionsManager::getActiveCount
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-connections-cache.cc:113,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-connections-cache.cc:114,1
    - Dst: DownstreamConnectionsManager::getIdleCount
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-connections-cache.cc:114,1
    - Dst: DownstreamConnectionsManager::getConnectionToDownstream
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-connections-cache.cc:118,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-connections-cache.cc:118,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-connections-cache.cc:119,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-connections-cache.cc:119,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-connections-cache.cc:119,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-connections-cache.cc:120,1
    - Dst: DownstreamConnectionsManager::count
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-connections-cache.cc:120,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-connections-cache.cc:121,1
    - Dst: DownstreamConnectionsManager::getActiveCount
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-connections-cache.cc:121,1
    - Dst: DownstreamConnectionsManager::getConnectionToDownstream
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-connections-cache.cc:126,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-connections-cache.cc:126,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-connections-cache.cc:127,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-connections-cache.cc:127,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-connections-cache.cc:127,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-connections-cache.cc:128,1
    - Dst: DownstreamConnectionsManager::count
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-connections-cache.cc:128,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-connections-cache.cc:129,1
    - Dst: DownstreamConnectionsManager::getActiveCount
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-connections-cache.cc:129,1
    - Dst: DownstreamConnectionsManager::getConnectionToDownstream
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-connections-cache.cc:133,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-connections-cache.cc:133,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-connections-cache.cc:134,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-connections-cache.cc:134,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-connections-cache.cc:134,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-connections-cache.cc:135,1
    - Dst: DownstreamConnectionsManager::count
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-connections-cache.cc:135,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-connections-cache.cc:136,1
    - Dst: DownstreamConnectionsManager::getActiveCount
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-connections-cache.cc:136,1
    - Dst: DownstreamConnectionsManager::getConnectionToDownstream
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-connections-cache.cc:140,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-connections-cache.cc:140,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-connections-cache.cc:141,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-connections-cache.cc:142,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-connections-cache.cc:142,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-connections-cache.cc:142,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-connections-cache.cc:143,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-connections-cache.cc:143,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-connections-cache.cc:143,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-connections-cache.cc:144,1
    - Dst: DownstreamConnectionsManager::count
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-connections-cache.cc:144,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-connections-cache.cc:145,1
    - Dst: DownstreamConnectionsManager::getActiveCount
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-connections-cache.cc:145,1
    - Dst: DownstreamConnectionsManager::getConnectionToDownstream
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-connections-cache.cc:148,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-connections-cache.cc:148,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-connections-cache.cc:149,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-connections-cache.cc:149,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-connections-cache.cc:149,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-connections-cache.cc:150,1
    - Dst: DownstreamConnectionsManager::count
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-connections-cache.cc:150,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-connections-cache.cc:151,1
    - Dst: DownstreamConnectionsManager::getActiveCount
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-connections-cache.cc:151,1
    - Dst: DownstreamConnectionsManager::cleanupClosedConnections
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-connections-cache.cc:168,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-connections-cache.cc:169,1
    - Dst: DownstreamConnectionsManager::count
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-connections-cache.cc:169,1
    - Dst: DownstreamConnectionsManager::cleanupClosedConnections
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-connections-cache.cc:171,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-connections-cache.cc:172,1
    - Dst: DownstreamConnectionsManager::count
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-connections-cache.cc:172,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-connections-cache.cc:179,1
    - Dst: DownstreamConnectionsManager::getConnectionToDownstream
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-connections-cache.cc:180,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-connections-cache.cc:180,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-connections-cache.cc:182,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-connections-cache.cc:183,1
    - Dst: DownstreamConnectionsManager::count
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-connections-cache.cc:183,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-connections-cache.cc:183,1
    - Dst: DownstreamConnectionsManager::getConnectionToDownstream
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-connections-cache.cc:187,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-connections-cache.cc:187,1
    - Dst: BOOST_CHECK_GT
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-connections-cache.cc:188,1
    - Dst: DownstreamConnectionsManager::count
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-connections-cache.cc:188,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-connections-cache.cc:199,1
    - Dst: DownstreamConnectionsManager::count
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-connections-cache.cc:199,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-connections-cache.cc:199,1
    - Dst: DownstreamConnectionsManager::cleanupClosedConnections
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-connections-cache.cc:201,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-connections-cache.cc:202,1
    - Dst: DownstreamConnectionsManager::count
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-connections-cache.cc:202,1
    - Dst: std::vector::clear
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-connections-cache.cc:205,1
    - Dst: DownstreamConnectionsManager::clear
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-connections-cache.cc:206,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-connections-cache.cc:207,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-connections-cache.cc:210,1
    - Dst: DownstreamConnectionsManager::getConnectionToDownstream
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-connections-cache.cc:211,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-connections-cache.cc:211,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-connections-cache.cc:213,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-connections-cache.cc:214,1
    - Dst: DownstreamConnectionsManager::count
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-connections-cache.cc:214,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-connections-cache.cc:214,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-connections-cache.cc:215,1
    - Dst: DownstreamConnectionsManager::getActiveCount
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-connections-cache.cc:215,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-connections-cache.cc:215,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-connections-cache.cc:222,1
    - Dst: DownstreamConnectionsManager::moveToIdle
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-connections-cache.cc:222,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-connections-cache.cc:224,1
    - Dst: DownstreamConnectionsManager::count
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-connections-cache.cc:224,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-connections-cache.cc:225,1
    - Dst: DownstreamConnectionsManager::getActiveCount
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-connections-cache.cc:225,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-connections-cache.cc:226,1
    - Dst: DownstreamConnectionsManager::getIdleCount
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-connections-cache.cc:226,1
    - Dst: DownstreamConnectionsManager::getConnectionToDownstream
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-connections-cache.cc:234,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-connections-cache.cc:234,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-connections-cache.cc:235,1
    - Dst: DownstreamConnectionsManager::count
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-connections-cache.cc:235,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-connections-cache.cc:236,1
    - Dst: DownstreamConnectionsManager::getActiveCount
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-connections-cache.cc:236,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-connections-cache.cc:237,1
    - Dst: DownstreamConnectionsManager::getIdleCount
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-connections-cache.cc:237,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 78
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 239
      start: 94
    functionDepth: 1
    functionLinenumber: 94
    functionLinenumberEnd: 239
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdist-connections-cache.cc
    functionUses: 0
    functionsReached:
    - DownstreamConnectionsManager::count
    - DownstreamConnectionsManager::setMaxIdleConnectionsPerDownstream
    - gettimeofday
    - std::string
    - std::vector::push_back
    - std::vector::size
    - BOOST_REQUIRE
    - std::make_shared<DownstreamState>
    - DownstreamConnectionsManager::setCleanupInterval
    - DownstreamConnectionsManager::getIdleCount
    - DownstreamConnectionsManager::moveToIdle
    - auto::get
    - BOOST_CHECK_GT
    - DownstreamConnectionsManager::getActiveCount
    - DownstreamConnectionsManager::clear
    - FDMultiplexer::getMultiplexerSilent
    - DownstreamConnectionsManager::cleanupClosedConnections
    - std::vector::clear
    - ComboAddress
    - DownstreamConnectionsManager::setMaxIdleTime
    - BOOST_CHECK_EQUAL
    - std::unique_ptr<FDMultiplexer>
    - DownstreamConnectionsManager::getConnectionToDownstream
    - BOOST_CHECK
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_ConnectionsCache)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsquestion.cc:29,1
    - Dst: DNSQuestion::getData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsquestion.cc:29,1
    - Dst: getDNSPacketLength
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsquestion.cc:30,1
    - Dst: DNSQuestion::getData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsquestion.cc:30,1
    - Dst: DNSQuestion::getData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsquestion.cc:32,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 33
      start: 26
    functionDepth: 0
    functionLinenumber: 26
    functionLinenumberEnd: 33
    functionName: DNSQuestion::getTrailingData
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-dnsquestion.cc
    functionUses: 0
    functionsReached:
    - getDNSPacketLength
    - reinterpret_cast<const char*>
    - DNSQuestion::getData
    linkageType: ''
    returnType: std::string
    signature: std::string DNSQuestion::getTrailingData() const
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: getMutableData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsquestion.cc:37,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsquestion.cc:39,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsquestion.cc:39,1
    - Dst: getDNSPacketLength
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsquestion.cc:40,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsquestion.cc:40,1
    - Dst: resize
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsquestion.cc:41,1
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsquestion.cc:42,1
    - Dst: hasRoomFor
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsquestion.cc:43,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsquestion.cc:43,1
    - Dst: insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsquestion.cc:46,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsquestion.cc:46,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsquestion.cc:46,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsquestion.cc:46,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - ' tail'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 35
    functionDepth: 1
    functionLinenumber: 35
    functionLinenumberEnd: 49
    functionName: DNSQuestion::setTrailingData
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-dnsquestion.cc
    functionUses: 0
    functionsReached:
    - getMutableData
    - resize
    - end
    - size
    - hasRoomFor
    - begin
    - empty
    - reinterpret_cast<const char*>
    - insert
    - data
    - getDNSPacketLength
    linkageType: ''
    returnType: bool
    signature: bool DNSQuestion::setTrailingData(const std::string& tail)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsquestion.cc:53,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsquestion.cc:54,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsquestion.cc:54,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsquestion.cc:54,1
    - Dst: dnsdist::PacketMangling::editDNSHeaderFromPacket
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsquestion.cc:56,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - ' editFunction'
    argTypes:
    - std::function<bool(dnsheader&)>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 51
    functionDepth: 1
    functionLinenumber: 51
    functionLinenumberEnd: 57
    functionName: DNSQuestion::editHeader
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-dnsquestion.cc
    functionUses: 0
    functionsReached:
    - dnsdist::PacketMangling::editDNSHeaderFromPacket
    - std::to_string
    - size
    - std::runtime_error
    linkageType: ''
    returnType: bool
    signature: bool DNSQuestion::editHeader(const std::function<bool(dnsheader&)>&
      editFunction)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsquestion.cc:60,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsquestion.cc:60,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsquestion.cc:60,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - ' ids_'
    - ' data_'
    argTypes:
    - InternalQueryState
    - PacketBuffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 59
    functionDepth: 1
    functionLinenumber: 59
    functionLinenumberEnd: 62
    functionName: DNSQuestion::DNSQuestion
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-dnsquestion.cc
    functionUses: 0
    functionsReached:
    - dnsdist::configuration::getCurrentRuntimeConfiguration
    linkageType: ''
    returnType: void
    signature: void DNSQuestion::DNSQuestion(InternalQueryState& ids_, PacketBuffer&
      data_)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DNSQuestion::getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsquestion.cc:69,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsquestion.cc:69,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - parent
    argTypes:
    - std::shared_ptr<const Logr::Logger>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 64
    functionDepth: 0
    functionLinenumber: 64
    functionLinenumberEnd: 70
    functionName: DNSQuestion::getThisLogger
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-dnsquestion.cc
    functionUses: 0
    functionsReached:
    - std::move
    - DNSQuestion::getLogger
    linkageType: ''
    returnType: std::shared_ptr<const Logr::Logger>
    signature: std::shared_ptr<const Logr::Logger> DNSQuestion::getThisLogger(std::shared_ptr<const
      Logr::Logger> parent) const
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: DNSQuestion::getThisLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsquestion.cc:77,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsquestion.cc:77,1
    - Dst: getData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsquestion.cc:78,1
    - Dst: getHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsquestion.cc:79,1
    - Dst: auto::withValues
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsquestion.cc:80,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsquestion.cc:80,1
    - Dst: auto::withValues
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsquestion.cc:83,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsquestion.cc:83,1
    - Dst: getProtocol
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsquestion.cc:83,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsquestion.cc:83,1
    - Dst: getName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsquestion.cc:83,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsquestion.cc:83,1
    - Dst: queryRealTime::udiff
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsquestion.cc:85,1
    - Dst: auto::withValues
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsquestion.cc:86,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsquestion.cc:86,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsquestion.cc:86,1
    - Dst: getData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsquestion.cc:86,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - parent
    argTypes:
    - std::shared_ptr<const Logr::Logger>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 72
    functionDepth: 1
    functionLinenumber: 72
    functionLinenumberEnd: 88
    functionName: DNSResponse::getThisLogger
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-dnsquestion.cc
    functionUses: 0
    functionsReached:
    - std::move
    - queryRealTime::udiff
    - getName
    - Logging::Loggable
    - getProtocol
    - DNSQuestion::getThisLogger
    - auto::withValues
    - getHeader
    - getData
    linkageType: ''
    returnType: std::shared_ptr<const Logr::Logger>
    signature: std::shared_ptr<const Logr::Logger> DNSResponse::getThisLogger(std::shared_ptr<const
      Logr::Logger> parent) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSQuestion::getThisLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsquestion.cc:92,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsquestion.cc:92,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - parent
    argTypes:
    - std::shared_ptr<const Logr::Logger>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 90
    functionDepth: 1
    functionLinenumber: 90
    functionLinenumberEnd: 93
    functionName: DNSQuestion::getLogger
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-dnsquestion.cc
    functionUses: 1
    functionsReached:
    - DNSQuestion::getThisLogger
    - std::move
    linkageType: ''
    returnType: std::shared_ptr<const Logr::Logger>
    signature: std::shared_ptr<const Logr::Logger> DNSQuestion::getLogger(std::shared_ptr<const
      Logr::Logger> parent) const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DNSQuestion::getThisLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsquestion.cc:100,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsquestion.cc:100,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - parent
    argTypes:
    - std::shared_ptr<const Logr::Logger>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 95
    functionDepth: 1
    functionLinenumber: 95
    functionLinenumberEnd: 102
    functionName: DNSQuestion::getLogger
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-dnsquestion.cc
    functionUses: 1
    functionsReached:
    - DNSQuestion::getThisLogger
    - std::move
    linkageType: ''
    returnType: std::shared_ptr<const Logr::Logger>
    signature: std::shared_ptr<const Logr::Logger> DNSQuestion::getLogger(std::shared_ptr<const
      Logr::Logger> parent)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:20,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:21,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:22,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:22,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:23,1
    - Dst: htonl
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:23,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:26,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:27,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:27,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:30,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:30,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:33,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:33,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:35,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:36,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:36,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:38,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:39,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:39,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:42,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:42,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:44,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:45,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:45,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:47,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:48,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:48,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:52,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:53,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:54,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:57,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:58,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:59,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:61,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:62,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:63,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:64,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:65,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:68,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:68,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:69,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:69,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:70,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:70,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:71,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:71,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 28
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 18
    functionDepth: 0
    functionLinenumber: 18
    functionLinenumberEnd: 72
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc
    functionUses: 0
    functionsReached:
    - htonl
    - BOOST_CHECK_EQUAL
    - htons
    - BOOST_CHECK_THROW
    - BOOST_CHECK
    - ComboAddress
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_ComboAddress)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:76,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:77,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:77,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:78,1
    - Dst: htonl
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:78,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:81,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:84,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:84,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:87,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:87,1
    - Dst: SockaddrWrapper
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:89,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:90,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:90,1
    - Dst: SockaddrWrapper
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:92,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:93,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:93,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:96,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:96,1
    - Dst: SockaddrWrapper
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:98,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:99,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:99,1
    - Dst: SockaddrWrapper
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:101,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:102,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:102,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:104,1
    - Dst: SockaddrWrapper
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:104,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:105,1
    - Dst: SockaddrWrapper
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:105,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:106,1
    - Dst: SockaddrWrapper
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:106,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:107,1
    - Dst: SockaddrWrapper
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:107,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:109,1
    - Dst: SockaddrWrapper
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:109,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:110,1
    - Dst: SockaddrWrapper
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:110,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 22
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 111
      start: 74
    functionDepth: 0
    functionLinenumber: 74
    functionLinenumberEnd: 111
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc
    functionUses: 0
    functionsReached:
    - SockaddrWrapper
    - htonl
    - BOOST_CHECK_EQUAL
    - BOOST_CHECK_THROW
    - htons
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_SockaddrWrapper)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ComboAddress::reset
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:115,1
    - Dst: reset
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:116,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:117,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:118,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 119
      start: 113
    functionDepth: 0
    functionLinenumber: 113
    functionLinenumberEnd: 119
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc
    functionUses: 0
    functionsReached:
    - reset
    - ComboAddress::reset
    - BOOST_CHECK
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_ComboAddressCompare)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ComboAddress::truncate
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:123,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:124,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:124,1
    - Dst: ComboAddress::truncate
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:125,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:126,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:126,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:130,1
    - Dst: ComboAddress::truncate
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:133,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:136,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:139,1
    - Dst: std::bitset::set
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:144,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:146,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:149,1
    - Dst: ComboAddress::truncate
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:150,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:151,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:151,1
    - Dst: ComboAddress::truncate
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:153,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:154,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:154,1
    - Dst: ComboAddress::truncate
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:156,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:157,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:157,1
    - Dst: ComboAddress::truncate
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:159,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:160,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:160,1
    - Dst: ComboAddress::truncate
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:162,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:163,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:163,1
    - Dst: ComboAddress::truncate
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:165,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:166,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:166,1
    - Dst: ComboAddress::truncate
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:169,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:170,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:170,1
    - Dst: ComboAddress::truncate
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:171,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:172,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:172,1
    - Dst: ComboAddress::truncate
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:173,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:174,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:174,1
    - Dst: ComboAddress::truncate
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:175,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:176,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:176,1
    - Dst: ComboAddress::truncate
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:177,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:178,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:178,1
    - Dst: ComboAddress::truncate
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:179,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:180,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:180,1
    - Dst: ComboAddress::truncate
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:181,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:182,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:182,1
    - Dst: ComboAddress::truncate
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:183,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:184,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:184,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:187,1
    - Dst: ComboAddress::truncate
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:189,1
    - Dst: std::bitset<128>
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:194,1
    - Dst: std::bitset<128>
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:197,1
    - Dst: std::bitset::set
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:202,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:204,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 56
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 206
      start: 121
    functionDepth: 0
    functionLinenumber: 121
    functionLinenumberEnd: 206
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc
    functionUses: 0
    functionsReached:
    - memcpy
    - std::bitset::set
    - BOOST_CHECK_EQUAL
    - std::bitset<128>
    - ComboAddress::truncate
    - ComboAddress::toString
    - ComboAddress
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_ComboAddressTruncate)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:211,1
    - Dst: ComboAddress::toStringReversed
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:211,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:214,1
    - Dst: ComboAddress::toStringReversed
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:214,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:217,1
    - Dst: ComboAddress::toStringReversed
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:217,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:220,1
    - Dst: ComboAddress::toStringReversed
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:220,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:223,1
    - Dst: ComboAddress::toStringReversed
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:223,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:226,1
    - Dst: ComboAddress::toStringReversed
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:226,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 227
      start: 208
    functionDepth: 0
    functionLinenumber: 208
    functionLinenumberEnd: 227
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc
    functionUses: 0
    functionsReached:
    - ComboAddress::toStringReversed
    - BOOST_CHECK_EQUAL
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_ComboAddressReverse)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:232,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:232,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 233
      start: 229
    functionDepth: 0
    functionLinenumber: 229
    functionLinenumberEnd: 233
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc
    functionUses: 0
    functionsReached:
    - BOOST_CHECK_EQUAL
    - ComboAddress::toString
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_Mapping)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:240,1
    - Dst: Netmask::getBits
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:240,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:241,1
    - Dst: Netmask::match
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:241,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:242,1
    - Dst: Netmask::match
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:242,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:243,1
    - Dst: Netmask::isIPv4
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:243,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:244,1
    - Dst: Netmask::isIPv6
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:244,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:247,1
    - Dst: Netmask::getBits
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:247,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:248,1
    - Dst: Netmask::match
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:248,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:249,1
    - Dst: Netmask::match
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:249,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:250,1
    - Dst: Netmask::isIPv4
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:250,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:251,1
    - Dst: Netmask::isIPv6
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:251,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:254,1
    - Dst: Netmask::match
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:254,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:257,1
    - Dst: Netmask::match
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:257,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:258,1
    - Dst: Netmask::match
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:258,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:261,1
    - Dst: Netmask::match
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:261,1
    - Dst: Netmask::match
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:261,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:264,1
    - Dst: Netmask::match
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:264,1
    - Dst: Netmask::match
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:264,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:267,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:268,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:269,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:270,1
    - Dst: Netmask::match
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:270,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:271,1
    - Dst: Netmask::match
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:271,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:271,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:272,1
    - Dst: Netmask::getNetwork
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:272,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:272,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:273,1
    - Dst: Netmask::getMaskedNetwork
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:273,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:273,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:276,1
    - Dst: Netmask::getBits
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:276,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:277,1
    - Dst: Netmask::getNetwork
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:277,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:277,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:278,1
    - Dst: Netmask::getMaskedNetwork
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:278,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:278,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:285,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:286,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:287,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:288,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:292,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:293,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:294,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:298,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:299,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:300,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:305,1
    - Dst: Netmask::match
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:305,1
    - Dst: Netmask::getNetwork
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:305,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:306,1
    - Dst: Netmask::match
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:306,1
    - Dst: Netmask::getNetwork
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:306,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:307,1
    - Dst: Netmask::match
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:307,1
    - Dst: Netmask::getNetwork
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:307,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:308,1
    - Dst: Netmask::match
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:308,1
    - Dst: Netmask::getNetwork
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:308,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:309,1
    - Dst: Netmask::match
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:309,1
    - Dst: Netmask::getNetwork
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:309,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:310,1
    - Dst: Netmask::match
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:310,1
    - Dst: Netmask::getNetwork
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:310,1
    - Dst: Netmask
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:314,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:316,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:317,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:318,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:319,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:324,1
    - Dst: Netmask::getBits
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:324,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:325,1
    - Dst: Netmask::getNetwork
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:325,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:325,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:327,1
    - Dst: Netmask::getBits
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:327,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:328,1
    - Dst: Netmask::getNetwork
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:328,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:328,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:331,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:332,1
    - Dst: Netmask::getBits
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:332,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:333,1
    - Dst: Netmask::getNetwork
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:333,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:333,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:334,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:335,1
    - Dst: Netmask::getBits
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:335,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:336,1
    - Dst: Netmask::getNetwork
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:336,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:336,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 54
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 338
      start: 235
    functionDepth: 0
    functionLinenumber: 235
    functionLinenumberEnd: 338
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc
    functionUses: 0
    functionsReached:
    - Netmask
    - Netmask::getNetwork
    - Netmask::getBits
    - ComboAddress
    - Netmask::getMaskedNetwork
    - BOOST_CHECK_EQUAL
    - Netmask::isIPv4
    - Netmask::match
    - BOOST_CHECK
    - Netmask::isIPv6
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_Netmask)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: stringtok
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:343,1
    - Dst: std::sort
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:344,1
    - Dst: std::vector::begin
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:344,1
    - Dst: std::vector::end
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:344,1
    - Dst: std::string::empty
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:347,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - ' str'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 354
      start: 340
    functionDepth: 0
    functionLinenumber: 340
    functionLinenumberEnd: 354
    functionName: NMGOutputToSorted
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc
    functionUses: 1
    functionsReached:
    - std::vector::end
    - stringtok
    - std::vector::begin
    - std::sort
    - std::string::empty
    linkageType: ''
    returnType: std::string
    signature: std::string NMGOutputToSorted(const std::string& str)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: NetmaskGroup::NetmaskGroup
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:359,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:360,1
    - Dst: NetmaskGroup::empty
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:360,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:361,1
    - Dst: NetmaskGroup::size
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:361,1
    - Dst: NetmaskGroup::addMask
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:362,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:363,1
    - Dst: NetmaskGroup::empty
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:363,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:364,1
    - Dst: NetmaskGroup::size
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:364,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:365,1
    - Dst: NetmaskGroup::match
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:365,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:365,1
    - Dst: NetmaskGroup::toMasks
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:366,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:367,1
    - Dst: NetmaskGroup::size
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:367,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:368,1
    - Dst: NetmaskGroup::match
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:368,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:368,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:369,1
    - Dst: NetmaskGroup::match
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:369,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:369,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:370,1
    - Dst: NetmaskGroup::match
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:370,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:370,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:371,1
    - Dst: NetmaskGroup::match
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:371,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:371,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:372,1
    - Dst: NetmaskGroup::match
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:372,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:372,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:373,1
    - Dst: NetmaskGroup::match
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:373,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:373,1
    - Dst: NetmaskGroup::addMask
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:374,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:375,1
    - Dst: NetmaskGroup::size
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:375,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:376,1
    - Dst: NetmaskGroup::match
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:376,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:376,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:377,1
    - Dst: NetmaskGroup::match
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:377,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:377,1
    - Dst: NetmaskGroup::addMask
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:378,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:379,1
    - Dst: NetmaskGroup::size
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:379,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:380,1
    - Dst: NetmaskGroup::match
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:380,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:380,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:381,1
    - Dst: NetmaskGroup::match
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:381,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:381,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:382,1
    - Dst: NMGOutputToSorted
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:382,1
    - Dst: NetmaskGroup::toString
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:382,1
    - Dst: NMGOutputToSorted
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:382,1
    - Dst: NetmaskGroup::addMask
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:385,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:386,1
    - Dst: NetmaskGroup::size
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:386,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:387,1
    - Dst: NetmaskGroup::match
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:387,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:387,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:388,1
    - Dst: NetmaskGroup::match
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:388,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:388,1
    - Dst: NetmaskGroup::addMask
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:389,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:390,1
    - Dst: NetmaskGroup::size
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:390,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:391,1
    - Dst: NetmaskGroup::match
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:391,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:391,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:392,1
    - Dst: NetmaskGroup::match
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:392,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:392,1
    - Dst: NetmaskGroup::addMask
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:393,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:394,1
    - Dst: NetmaskGroup::size
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:394,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:395,1
    - Dst: NetmaskGroup::match
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:395,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:395,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:396,1
    - Dst: NetmaskGroup::match
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:396,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:396,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:398,1
    - Dst: NetmaskGroup::match
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:398,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:398,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:401,1
    - Dst: NetmaskGroup::match
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:401,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:401,1
    - Dst: NetmaskGroup::addMask
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:402,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:403,1
    - Dst: NetmaskGroup::size
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:403,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:404,1
    - Dst: NetmaskGroup::match
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:404,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:404,1
    - Dst: NetmaskGroup::addMask
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:405,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:406,1
    - Dst: NetmaskGroup::size
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:406,1
    - Dst: NetmaskGroup::addMask
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:407,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:408,1
    - Dst: NetmaskGroup::size
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:408,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:409,1
    - Dst: NetmaskGroup::match
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:409,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:409,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:411,1
    - Dst: NetmaskGroup::match
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:411,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:411,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:413,1
    - Dst: NMGOutputToSorted
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:413,1
    - Dst: NetmaskGroup::toString
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:413,1
    - Dst: NMGOutputToSorted
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:413,1
    - Dst: NetmaskGroup::NetmaskGroup
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:418,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:419,1
    - Dst: NetmaskGroup::empty
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:419,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:420,1
    - Dst: NetmaskGroup::size
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:420,1
    - Dst: NetmaskGroup::addMask
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:421,1
    - Dst: Netmask
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:421,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:422,1
    - Dst: NetmaskGroup::empty
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:422,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:423,1
    - Dst: NetmaskGroup::size
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:423,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:424,1
    - Dst: NetmaskGroup::match
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:424,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:424,1
    - Dst: NetmaskGroup::addMask
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:425,1
    - Dst: Netmask
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:425,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:426,1
    - Dst: NetmaskGroup::size
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:426,1
    - Dst: NetmaskGroup::addMask
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:427,1
    - Dst: Netmask
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:427,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:428,1
    - Dst: NetmaskGroup::size
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:428,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:429,1
    - Dst: NetmaskGroup::match
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:429,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:429,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:430,1
    - Dst: NetmaskGroup::match
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:430,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:430,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:431,1
    - Dst: NetmaskGroup::match
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:431,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:431,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:432,1
    - Dst: NetmaskGroup::match
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:432,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:432,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:433,1
    - Dst: NetmaskGroup::match
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:433,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:433,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:434,1
    - Dst: NetmaskGroup::match
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:434,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:434,1
    - Dst: NetmaskGroup::addMask
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:435,1
    - Dst: Netmask
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:435,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:436,1
    - Dst: NetmaskGroup::size
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:436,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:437,1
    - Dst: NetmaskGroup::match
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:437,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:437,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:438,1
    - Dst: NetmaskGroup::match
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:438,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:438,1
    - Dst: NetmaskGroup::addMask
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:439,1
    - Dst: Netmask
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:439,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:440,1
    - Dst: NetmaskGroup::size
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:440,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:441,1
    - Dst: NetmaskGroup::match
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:441,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:441,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:442,1
    - Dst: NetmaskGroup::match
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:442,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:442,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:443,1
    - Dst: NMGOutputToSorted
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:443,1
    - Dst: NetmaskGroup::toString
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:443,1
    - Dst: NMGOutputToSorted
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:443,1
    - Dst: NetmaskGroup::addMask
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:446,1
    - Dst: Netmask
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:446,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:447,1
    - Dst: NetmaskGroup::size
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:447,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:448,1
    - Dst: NetmaskGroup::match
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:448,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:448,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:449,1
    - Dst: NetmaskGroup::match
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:449,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:449,1
    - Dst: NetmaskGroup::addMask
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:450,1
    - Dst: Netmask
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:450,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:451,1
    - Dst: NetmaskGroup::size
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:451,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:452,1
    - Dst: NetmaskGroup::match
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:452,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:452,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:453,1
    - Dst: NetmaskGroup::match
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:453,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:453,1
    - Dst: NetmaskGroup::addMask
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:454,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:455,1
    - Dst: NetmaskGroup::size
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:455,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:456,1
    - Dst: NetmaskGroup::match
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:456,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:456,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:457,1
    - Dst: NetmaskGroup::match
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:457,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:457,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:459,1
    - Dst: NetmaskGroup::match
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:459,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:459,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:461,1
    - Dst: NMGOutputToSorted
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:461,1
    - Dst: NetmaskGroup::toString
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:461,1
    - Dst: NMGOutputToSorted
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:461,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 89
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 463
      start: 356
    functionDepth: 0
    functionLinenumber: 356
    functionLinenumberEnd: 463
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc
    functionUses: 0
    functionsReached:
    - Netmask
    - NetmaskGroup::NetmaskGroup
    - NMGOutputToSorted
    - NetmaskGroup::match
    - BOOST_CHECK_EQUAL
    - NetmaskGroup::toMasks
    - NetmaskGroup::addMask
    - NetmaskGroup::size
    - NetmaskGroup::toString
    - BOOST_CHECK
    - NetmaskGroup::empty
    - ComboAddress
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_NetmaskGroup)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: NetmaskTree::NetmaskTree
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:466,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:467,1
    - Dst: NetmaskTree::empty
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:467,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:468,1
    - Dst: NetmaskTree::size
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:468,1
    - Dst: NetmaskTree::insert
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:469,1
    - Dst: Netmask
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:469,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:470,1
    - Dst: NetmaskTree::empty
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:470,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:471,1
    - Dst: NetmaskTree::size
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:471,1
    - Dst: NetmaskTree::insert
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:472,1
    - Dst: Netmask
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:472,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:473,1
    - Dst: NetmaskTree::size
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:473,1
    - Dst: NetmaskTree::insert
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:474,1
    - Dst: Netmask
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:474,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:475,1
    - Dst: NetmaskTree::size
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:475,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:477,1
    - Dst: NetmaskTree::lookup
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:477,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:477,1
    - Dst: NetmaskTree::lookup
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:478,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:478,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:479,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:480,1
    - Dst: NetmaskTree::lookup
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:481,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:481,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:482,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:483,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:485,1
    - Dst: NetmaskTree::lookup
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:485,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:485,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:486,1
    - Dst: NetmaskTree::lookup
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:486,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:486,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:487,1
    - Dst: NetmaskTree::lookup
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:487,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:487,1
    - Dst: NetmaskTree::lookup
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:489,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:489,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:490,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:491,1
    - Dst: NetmaskTree::insert
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:493,1
    - Dst: Netmask
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:493,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:494,1
    - Dst: NetmaskTree::size
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:494,1
    - Dst: NetmaskTree::insert
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:495,1
    - Dst: Netmask
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:495,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:496,1
    - Dst: NetmaskTree::size
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:496,1
    - Dst: NetmaskTree::insert
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:497,1
    - Dst: Netmask
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:497,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:498,1
    - Dst: NetmaskTree::size
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:498,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:499,1
    - Dst: NetmaskTree::lookup
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:499,1
    - Dst: Netmask
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:499,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:500,1
    - Dst: NetmaskTree::lookup
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:500,1
    - Dst: Netmask
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:500,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:501,1
    - Dst: NetmaskTree::lookup
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:501,1
    - Dst: Netmask
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:501,1
    - Dst: NetmaskTree::clear
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:503,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:504,1
    - Dst: NetmaskTree::empty
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:504,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:505,1
    - Dst: NetmaskTree::size
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:505,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:506,1
    - Dst: NetmaskTree::lookup
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:506,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:506,1
    - Dst: NetmaskTree::insert
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:508,1
    - Dst: Netmask
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:508,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:509,1
    - Dst: NetmaskTree::empty
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:509,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:510,1
    - Dst: NetmaskTree::size
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:510,1
    - Dst: NetmaskTree::insert
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:511,1
    - Dst: Netmask
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:511,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:512,1
    - Dst: NetmaskTree::size
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:512,1
    - Dst: NetmaskTree::insert
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:513,1
    - Dst: Netmask
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:513,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:514,1
    - Dst: NetmaskTree::size
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:514,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:515,1
    - Dst: NetmaskTree::lookup
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:515,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:515,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:516,1
    - Dst: NetmaskTree::lookup
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:516,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:516,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:517,1
    - Dst: NetmaskTree::lookup
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:517,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:517,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:518,1
    - Dst: NetmaskTree::lookup
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:518,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:518,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:519,1
    - Dst: NetmaskTree::lookup
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:519,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:519,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 47
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 520
      start: 465
    functionDepth: 1
    functionLinenumber: 465
    functionLinenumberEnd: 520
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc
    functionUses: 0
    functionsReached:
    - Netmask
    - NetmaskTree::empty
    - NetmaskTree::size
    - BOOST_CHECK_EQUAL
    - NetmaskTree::lookup
    - NetmaskTree::clear
    - NetmaskTree::insert
    - BOOST_CHECK
    - NetmaskTree::NetmaskTree
    - ComboAddress
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_NetmaskTree)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: NetmaskTree::NetmaskTree
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:523,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:524,1
    - Dst: NetmaskTree::empty
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:524,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:525,1
    - Dst: NetmaskTree::size
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:525,1
    - Dst: NetmaskTree::insert
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:526,1
    - Dst: Netmask
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:526,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:527,1
    - Dst: NetmaskTree::empty
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:527,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:528,1
    - Dst: NetmaskTree::size
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:528,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:529,1
    - Dst: NetmaskTree::lookup
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:529,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:529,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 530
      start: 522
    functionDepth: 1
    functionLinenumber: 522
    functionLinenumberEnd: 530
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc
    functionUses: 0
    functionsReached:
    - Netmask
    - NetmaskTree::empty
    - NetmaskTree::size
    - BOOST_CHECK_EQUAL
    - NetmaskTree::lookup
    - NetmaskTree::insert
    - NetmaskTree::NetmaskTree
    - ComboAddress
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_single)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: NetmaskTree::NetmaskTree
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:534,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:535,1
    - Dst: NetmaskTree::size
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:535,1
    - Dst: NetmaskTree::insert
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:538,1
    - Dst: Netmask
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:538,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:538,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:538,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:539,1
    - Dst: NetmaskTree::size
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:539,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:545,1
    - Dst: NetmaskTree::lookup
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:545,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:545,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:545,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:545,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:552,1
    - Dst: NetmaskTree::lookup
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:552,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:552,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:552,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:552,1
    - Dst: NetmaskTree::insert
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:559,1
    - Dst: Netmask
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:559,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:559,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:559,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:560,1
    - Dst: NetmaskTree::size
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:560,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:566,1
    - Dst: NetmaskTree::lookup
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:566,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:566,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:566,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:566,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:566,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:566,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:573,1
    - Dst: NetmaskTree::lookup
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:573,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:573,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:573,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:573,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:573,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:573,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 37
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 576
      start: 532
    functionDepth: 1
    functionLinenumber: 532
    functionLinenumberEnd: 576
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc
    functionUses: 0
    functionsReached:
    - Netmask
    - std::to_string
    - NetmaskTree::size
    - BOOST_CHECK_EQUAL
    - NetmaskTree::lookup
    - NetmaskTree::insert
    - NetmaskTree::NetmaskTree
    - ComboAddress
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_scale)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: NetmaskTree::NetmaskTree
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:580,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:581,1
    - Dst: NetmaskTree::empty
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:581,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:582,1
    - Dst: NetmaskTree::size
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:582,1
    - Dst: NetmaskTree::insert
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:587,1
    - Dst: Netmask
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:587,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:587,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:587,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:589,1
    - Dst: NetmaskTree::size
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:589,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:594,1
    - Dst: NetmaskTree::lookup
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:595,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:596,1
    - Dst: auto::first::getBits
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:596,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:597,1
    - Dst: auto::first::getMaskedNetwork
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:597,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:597,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:598,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:603,1
    - Dst: NetmaskTree::erase
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:604,1
    - Dst: Netmask
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:604,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:606,1
    - Dst: NetmaskTree::size
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:606,1
    - Dst: NetmaskTree::lookup
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:607,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:610,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:611,1
    - Dst: auto::first::getBits
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:611,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:612,1
    - Dst: auto::first::getMaskedNetwork
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:612,1
    - Dst: Netmask
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:612,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:613,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:616,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:621,1
    - Dst: NetmaskTree::size
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:621,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:622,1
    - Dst: NetmaskTree::empty
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:622,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 32
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 623
      start: 578
    functionDepth: 1
    functionLinenumber: 578
    functionLinenumberEnd: 623
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc
    functionUses: 0
    functionsReached:
    - auto::first::getMaskedNetwork
    - Netmask
    - auto::first::getBits
    - NetmaskTree::empty
    - std::to_string
    - NetmaskTree::size
    - NetmaskTree::erase
    - BOOST_CHECK_EQUAL
    - NetmaskTree::lookup
    - NetmaskTree::insert
    - BOOST_REQUIRE
    - ComboAddress::toString
    - BOOST_CHECK
    - NetmaskTree::NetmaskTree
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_removal)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: NetmaskTree::NetmaskTree
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:626,1
    - Dst: Netmask::Netmask
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:633,1
    - Dst: Netmask
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:636,1
    - Dst: std::stringstream::str
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:636,1
    - Dst: NetmaskTree::insert
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:637,1
    - Dst: std::set::insert
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:638,1
    - Dst: Netmask::getNormalized
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:638,1
    - Dst: std::stringstream::str
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:640,1
    - Dst: Netmask
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:642,1
    - Dst: std::stringstream::str
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:642,1
    - Dst: NetmaskTree::insert
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:643,1
    - Dst: std::set::insert
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:644,1
    - Dst: Netmask::getNormalized
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:644,1
    - Dst: std::stringstream::str
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:646,1
    - Dst: Netmask
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:648,1
    - Dst: std::stringstream::str
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:648,1
    - Dst: NetmaskTree::insert
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:649,1
    - Dst: std::set::insert
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:650,1
    - Dst: Netmask::getNormalized
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:650,1
    - Dst: std::stringstream::str
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:652,1
    - Dst: Netmask
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:654,1
    - Dst: std::stringstream::str
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:654,1
    - Dst: NetmaskTree::insert
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:655,1
    - Dst: std::set::insert
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:656,1
    - Dst: Netmask::getNormalized
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:656,1
    - Dst: std::stringstream::str
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:658,1
    - Dst: Netmask
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:660,1
    - Dst: std::stringstream::str
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:660,1
    - Dst: NetmaskTree::insert
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:661,1
    - Dst: std::set::insert
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:662,1
    - Dst: Netmask::getNormalized
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:662,1
    - Dst: std::stringstream::str
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:664,1
    - Dst: Netmask
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:666,1
    - Dst: std::stringstream::str
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:666,1
    - Dst: NetmaskTree::insert
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:667,1
    - Dst: std::set::insert
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:668,1
    - Dst: Netmask::getNormalized
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:668,1
    - Dst: std::stringstream::str
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:670,1
    - Dst: Netmask
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:672,1
    - Dst: std::stringstream::str
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:672,1
    - Dst: NetmaskTree::insert
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:673,1
    - Dst: std::set::insert
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:674,1
    - Dst: Netmask::getNormalized
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:674,1
    - Dst: std::stringstream::str
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:676,1
    - Dst: Netmask
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:678,1
    - Dst: std::stringstream::str
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:678,1
    - Dst: NetmaskTree::insert
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:679,1
    - Dst: std::set::insert
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:680,1
    - Dst: Netmask::getNormalized
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:680,1
    - Dst: std::stringstream::str
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:682,1
    - Dst: Netmask
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:684,1
    - Dst: std::stringstream::str
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:684,1
    - Dst: NetmaskTree::insert
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:685,1
    - Dst: std::set::insert
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:686,1
    - Dst: Netmask::getNormalized
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:686,1
    - Dst: Netmask::Netmask
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:690,1
    - Dst: Netmask
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:693,1
    - Dst: std::stringstream::str
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:693,1
    - Dst: NetmaskTree::insert
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:694,1
    - Dst: std::set::insert
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:695,1
    - Dst: Netmask::getNormalized
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:695,1
    - Dst: std::stringstream::str
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:697,1
    - Dst: Netmask
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:699,1
    - Dst: std::stringstream::str
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:699,1
    - Dst: NetmaskTree::insert
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:700,1
    - Dst: std::set::insert
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:701,1
    - Dst: Netmask::getNormalized
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:701,1
    - Dst: Netmask::Netmask
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:705,1
    - Dst: Netmask
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:708,1
    - Dst: std::stringstream::str
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:708,1
    - Dst: NetmaskTree::insert
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:709,1
    - Dst: std::set::insert
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:710,1
    - Dst: Netmask::getNormalized
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:710,1
    - Dst: std::stringstream::str
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:712,1
    - Dst: Netmask
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:714,1
    - Dst: std::stringstream::str
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:714,1
    - Dst: NetmaskTree::insert
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:715,1
    - Dst: std::set::insert
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:716,1
    - Dst: Netmask::getNormalized
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:716,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:721,1
    - Dst: NetmaskTree::size
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:721,1
    - Dst: std::set::size
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:721,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:722,1
    - Dst: std::distance
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:722,1
    - Dst: NetmaskTree::begin
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:722,1
    - Dst: NetmaskTree::end
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:722,1
    - Dst: std::distance
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:723,1
    - Dst: std::set::begin
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:723,1
    - Dst: std::set::end
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:723,1
    - Dst: first::getNormalized
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:725,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:727,1
    - Dst: std::set::find
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:727,1
    - Dst: std::set::end
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:727,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:730,1
    - Dst: NetmaskTree::lookup
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:730,1
    - Dst: NetmaskTree::insert
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:737,1
    - Dst: NetmaskTree::erase
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:738,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:741,1
    - Dst: NetmaskTree::size
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:741,1
    - Dst: std::set::size
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:741,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:742,1
    - Dst: std::distance
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:742,1
    - Dst: NetmaskTree::begin
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:742,1
    - Dst: NetmaskTree::end
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:742,1
    - Dst: std::distance
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:743,1
    - Dst: std::set::begin
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:743,1
    - Dst: std::set::end
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:743,1
    - Dst: first::getNormalized
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:745,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:747,1
    - Dst: std::set::find
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:747,1
    - Dst: std::set::end
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:747,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:750,1
    - Dst: NetmaskTree::lookup
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:750,1
    - Dst: NetmaskTree::insert
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:757,1
    - Dst: NetmaskTree::erase
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:758,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:761,1
    - Dst: NetmaskTree::size
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:761,1
    - Dst: std::set::size
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:761,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:762,1
    - Dst: std::distance
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:762,1
    - Dst: NetmaskTree::begin
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:762,1
    - Dst: NetmaskTree::end
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:762,1
    - Dst: std::distance
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:763,1
    - Dst: std::set::begin
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:763,1
    - Dst: std::set::end
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:763,1
    - Dst: first::getNormalized
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:765,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:767,1
    - Dst: std::set::find
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:767,1
    - Dst: std::set::end
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:767,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:770,1
    - Dst: NetmaskTree::lookup
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:770,1
    - Dst: NetmaskTree::NetmaskTree
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:774,1
    - Dst: NetmaskTree::swap
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:775,1
    - Dst: NetmaskTree::insert
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:778,1
    - Dst: NetmaskTree::erase
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:779,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:782,1
    - Dst: NetmaskTree::size
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:782,1
    - Dst: std::set::size
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:782,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:783,1
    - Dst: std::distance
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:783,1
    - Dst: NetmaskTree::begin
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:783,1
    - Dst: NetmaskTree::end
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:783,1
    - Dst: std::distance
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:784,1
    - Dst: std::set::begin
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:784,1
    - Dst: std::set::end
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:784,1
    - Dst: first::getNormalized
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:786,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:788,1
    - Dst: std::set::find
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:788,1
    - Dst: std::set::end
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:788,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:791,1
    - Dst: NetmaskTree::lookup
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:791,1
    - Dst: NetmaskTree::begin
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:795,1
    - Dst: NetmaskTree::end
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:795,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:798,1
    - Dst: std::set::size
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:798,1
    - Dst: std::set::size
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:798,1
    - Dst: first::getNormalized
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:800,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:802,1
    - Dst: std::set::find
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:802,1
    - Dst: std::set::end
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:802,1
    - Dst: Netmask::getNormalized
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:805,1
    - Dst: first::getNormalized
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:808,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:813,1
    - Dst: Netmask::Netmask
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:821,1
    - Dst: Netmask
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:823,1
    - Dst: NetmaskTree::erase
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:824,1
    - Dst: std::set::erase
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:825,1
    - Dst: Netmask::getNormalized
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:825,1
    - Dst: Netmask
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:827,1
    - Dst: NetmaskTree::erase
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:828,1
    - Dst: std::set::erase
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:829,1
    - Dst: Netmask::getNormalized
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:829,1
    - Dst: Netmask
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:831,1
    - Dst: NetmaskTree::erase
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:832,1
    - Dst: std::set::erase
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:833,1
    - Dst: Netmask::getNormalized
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:833,1
    - Dst: Netmask
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:835,1
    - Dst: NetmaskTree::erase
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:836,1
    - Dst: std::set::erase
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:837,1
    - Dst: Netmask::getNormalized
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:837,1
    - Dst: Netmask
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:839,1
    - Dst: NetmaskTree::erase
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:840,1
    - Dst: std::set::erase
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:841,1
    - Dst: Netmask::getNormalized
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:841,1
    - Dst: Netmask
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:843,1
    - Dst: NetmaskTree::erase
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:844,1
    - Dst: std::set::erase
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:845,1
    - Dst: Netmask::getNormalized
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:845,1
    - Dst: Netmask
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:847,1
    - Dst: NetmaskTree::erase
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:848,1
    - Dst: std::set::erase
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:849,1
    - Dst: Netmask::getNormalized
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:849,1
    - Dst: Netmask
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:851,1
    - Dst: NetmaskTree::erase
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:852,1
    - Dst: std::set::erase
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:853,1
    - Dst: Netmask::getNormalized
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:853,1
    - Dst: Netmask
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:855,1
    - Dst: NetmaskTree::erase
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:856,1
    - Dst: std::set::erase
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:857,1
    - Dst: Netmask::getNormalized
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:857,1
    - Dst: Netmask
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:859,1
    - Dst: NetmaskTree::erase
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:860,1
    - Dst: std::set::erase
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:861,1
    - Dst: Netmask::getNormalized
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:861,1
    - Dst: Netmask
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:863,1
    - Dst: NetmaskTree::erase
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:864,1
    - Dst: std::set::erase
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:865,1
    - Dst: Netmask::getNormalized
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:865,1
    - Dst: Netmask
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:867,1
    - Dst: NetmaskTree::erase
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:868,1
    - Dst: std::set::erase
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:869,1
    - Dst: Netmask::getNormalized
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:869,1
    - Dst: Netmask
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:871,1
    - Dst: NetmaskTree::erase
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:872,1
    - Dst: std::set::erase
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:873,1
    - Dst: Netmask::getNormalized
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:873,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:877,1
    - Dst: NetmaskTree::size
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:877,1
    - Dst: std::set::size
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:877,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:878,1
    - Dst: std::distance
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:878,1
    - Dst: NetmaskTree::begin
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:878,1
    - Dst: NetmaskTree::end
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:878,1
    - Dst: std::distance
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:879,1
    - Dst: std::set::begin
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:879,1
    - Dst: std::set::end
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:879,1
    - Dst: first::getNormalized
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:881,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:883,1
    - Dst: std::set::find
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:883,1
    - Dst: std::set::end
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:883,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:886,1
    - Dst: NetmaskTree::lookup
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:886,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 154
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 888
      start: 625
    functionDepth: 1
    functionLinenumber: 625
    functionLinenumberEnd: 888
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc
    functionUses: 0
    functionsReached:
    - std::set::erase
    - std::distance
    - NetmaskTree::begin
    - NetmaskTree::lookup
    - std::stringstream::str
    - first::getNormalized
    - std::set::size
    - NetmaskTree::end
    - std::set::insert
    - Netmask
    - std::set::end
    - Netmask::getNormalized
    - NetmaskTree::swap
    - std::set::find
    - NetmaskTree::size
    - NetmaskTree::erase
    - Netmask::Netmask
    - BOOST_CHECK_EQUAL
    - NetmaskTree::insert
    - std::set::begin
    - BOOST_CHECK
    - NetmaskTree::NetmaskTree
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_iterator)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: caContainerToString
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:899,1
    - Dst: caContainerToString
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:900,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:901,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:902,1
    - Dst: caContainerToString
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:904,1
    - Dst: caContainerToString
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:905,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:906,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:907,1
    - Dst: caContainerToString
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:909,1
    - Dst: caContainerToString
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:910,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:911,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:912,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 913
      start: 890
    functionDepth: 0
    functionLinenumber: 890
    functionLinenumberEnd: 913
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc
    functionUses: 0
    functionsReached:
    - caContainerToString
    - BOOST_CHECK_EQUAL
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_ComboAddress_caContainerToString)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:939,1
    - Dst: parseIPAndPort
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:939,1
    - Dst: parseIPAndPort
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:941,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:942,1
    - Dst: ComboAddress::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:942,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:942,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 945
      start: 915
    functionDepth: 0
    functionLinenumber: 915
    functionLinenumberEnd: 945
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc
    functionUses: 0
    functionsReached:
    - ComboAddress::toStringWithPort
    - BOOST_CHECK_EQUAL
    - BOOST_CHECK_THROW
    - parseIPAndPort
    - ComboAddress
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_parseIPAndPort)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:967,1
    - Dst: ComboAddress::isUnspecified
      Src: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc:967,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 969
      start: 947
    functionDepth: 0
    functionLinenumber: 947
    functionLinenumberEnd: 969
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc
    functionUses: 0
    functionsReached:
    - BOOST_CHECK_EQUAL
    - ComboAddress::isUnspecified
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_unspecified)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-doh-common.hh:53,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-doh-common.hh:53,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-doh-common.hh:53,1
    - Dst: push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-doh-common.hh:55,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 4
    argCount: 4
    argNames:
    - ' regex'
    - status
    - ' content'
    - ' headers'
    argTypes:
    - std::string
    - uint16_t
    - PacketBuffer
    - std::optional<std::unordered_map<std::string, std::string>>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 50
    functionDepth: 0
    functionLinenumber: 50
    functionLinenumberEnd: 57
    functionName: DOHResponseMapEntry::DOHResponseMapEntry
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-doh-common.hh
    functionUses: 0
    functionsReached:
    - empty
    - push_back
    - at
    - size
    linkageType: ''
    returnType: void
    signature: void DOHResponseMapEntry(const std::string& regex, uint16_t status,
      const PacketBuffer& content, const std::optional<std::unordered_map<std::string,
      std::string>>& headers)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: match
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-doh-common.hh:61,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' path'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 59
    functionDepth: 0
    functionLinenumber: 59
    functionLinenumberEnd: 62
    functionName: DOHResponseMapEntry::matches
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-doh-common.hh
    functionUses: 0
    functionsReached:
    - match
    linkageType: ''
    returnType: bool
    signature: bool matches(const std::string& path) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 64
    functionDepth: 0
    functionLinenumber: 64
    functionLinenumberEnd: 67
    functionName: DOHResponseMapEntry::getStatusCode
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-doh-common.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t getStatusCode() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 69
    functionDepth: 0
    functionLinenumber: 69
    functionLinenumberEnd: 72
    functionName: '& getContent() const'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-doh-common.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: PacketBuffer
    signature: PacketBuffer & getContent() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 74
    functionDepth: 0
    functionLinenumber: 74
    functionLinenumberEnd: 77
    functionName: '& getHeaders() const'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-doh-common.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::optional<std::unordered_map<std::string, std::string>>
    signature: std::optional<std::unordered_map<std::string, std::string>> & getHeaders()
      const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<TLSFrontend>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-doh-common.hh:89,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 88
    functionDepth: 0
    functionLinenumber: 88
    functionLinenumberEnd: 91
    functionName: DOHFrontend
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-doh-common.hh
    functionUses: 0
    functionsReached:
    - std::make_shared<TLSFrontend>
    linkageType: ''
    returnType: void
    signature: void DOHFrontend()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<TLSFrontend>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-doh-common.hh:93,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-doh-common.hh:93,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - tlsCtx
    argTypes:
    - std::shared_ptr<TLSCtx>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 92
    functionDepth: 0
    functionLinenumber: 92
    functionLinenumberEnd: 95
    functionName: DOHFrontend
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-doh-common.hh
    functionUses: 0
    functionsReached:
    - std::make_shared<TLSFrontend>
    - std::move
    linkageType: ''
    returnType: void
    signature: void DOHFrontend(std::shared_ptr<TLSCtx> tlsCtx)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 97
    functionDepth: 0
    functionLinenumber: 97
    functionLinenumberEnd: 99
    functionName: ~DOHFrontend()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-doh-common.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~DOHFrontend()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 151
      start: 148
    functionDepth: 0
    functionLinenumber: 148
    functionLinenumberEnd: 151
    functionName: getTicketsKeyRotationDelay
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-doh-common.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: time_t
    signature: time_t getTicketsKeyRotationDelay() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: d_tlsConfig::d_certKeyPairs::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-doh-common.hh:155,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 156
      start: 153
    functionDepth: 0
    functionLinenumber: 153
    functionLinenumberEnd: 156
    functionName: isHTTPS
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-doh-common.hh
    functionUses: 2
    functionsReached:
    - d_tlsConfig::d_certKeyPairs::empty
    linkageType: ''
    returnType: bool
    signature: bool isHTTPS() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 161
      start: 158
    functionDepth: 0
    functionLinenumber: 158
    functionLinenumberEnd: 161
    functionName: '& getLogger() const'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-doh-common.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Logr::Logger
    signature: Logr::Logger & getLogger() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 166
      start: 164
    functionDepth: 0
    functionLinenumber: 164
    functionLinenumberEnd: 166
    functionName: setup
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-doh-common.hh
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setup()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 170
      start: 168
    functionDepth: 0
    functionLinenumber: 168
    functionLinenumberEnd: 170
    functionName: reloadCertificates
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-doh-common.hh
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void reloadCertificates()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 174
      start: 172
    functionDepth: 0
    functionLinenumber: 172
    functionLinenumberEnd: 174
    functionName: rotateTicketsKey
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-doh-common.hh
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void rotateTicketsKey(time_t /* now */)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 178
      start: 176
    functionDepth: 0
    functionLinenumber: 176
    functionLinenumberEnd: 178
    functionName: loadTicketsKeys
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-doh-common.hh
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void loadTicketsKeys(const std::string& /* keyFile */)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 182
      start: 180
    functionDepth: 0
    functionLinenumber: 180
    functionLinenumberEnd: 182
    functionName: loadTicketsKey
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-doh-common.hh
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void loadTicketsKey(const std::string& /* key */)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 186
      start: 184
    functionDepth: 0
    functionLinenumber: 184
    functionLinenumberEnd: 186
    functionName: handleTicketsKeyRotation
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-doh-common.hh
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void handleTicketsKeyRotation()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-doh-common.hh:190,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 191
      start: 188
    functionDepth: 0
    functionLinenumber: 188
    functionLinenumberEnd: 191
    functionName: getNextTicketsKeyRotation
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-doh-common.hh
    functionUses: 2
    functionsReached:
    - std::string
    linkageType: ''
    returnType: std::string
    signature: std::string getNextTicketsKeyRotation()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 197
      start: 193
    functionDepth: 0
    functionLinenumber: 193
    functionLinenumberEnd: 197
    functionName: getTicketsKeysCount
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-doh-common.hh
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: size_t getTicketsKeysCount() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 223
      start: 221
    functionDepth: 0
    functionLinenumber: 221
    functionLinenumberEnd: 223
    functionName: ~DOHUnitInterface()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-doh-common.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~DOHUnitInterface()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 228
      start: 225
    functionDepth: 0
    functionLinenumber: 225
    functionLinenumberEnd: 228
    functionName: getQuerySender
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-doh-common.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::shared_ptr<TCPQuerySender>
    signature: std::shared_ptr<TCPQuerySender> getQuerySender() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 232
      start: 230
    functionDepth: 0
    functionLinenumber: 230
    functionLinenumberEnd: 232
    functionName: handleTimeout
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-doh-common.hh
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void handleTimeout(std::unique_ptr<DOHUnitInterface>)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 236
      start: 234
    functionDepth: 0
    functionLinenumber: 234
    functionLinenumberEnd: 236
    functionName: handleUDPResponse
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-doh-common.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void handleUDPResponse(std::unique_ptr<DOHUnitInterface>, PacketBuffer&&,
      InternalQueryState&&, const std::shared_ptr<DownstreamState>&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 243
      start: 241
    functionDepth: 0
    functionLinenumber: 241
    functionLinenumberEnd: 243
    functionName: ~DOHUnitInterface()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-doh-common.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~DOHUnitInterface()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::unique_ptr<DOHUnitInterface>::release
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-doh-common.hh:258,1
    - Dst: auto*::handleTimeout
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-doh-common.hh:259,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - unit
    argTypes:
    - std::unique_ptr<DOHUnitInterface>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 261
      start: 255
    functionDepth: 1
    functionLinenumber: 255
    functionLinenumberEnd: 261
    functionName: handleTimeout
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-doh-common.hh
    functionUses: 2
    functionsReached:
    - auto*::handleTimeout
    - std::unique_ptr<DOHUnitInterface>::release
    linkageType: ''
    returnType: void
    signature: void handleTimeout(std::unique_ptr<DOHUnitInterface> unit)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::unique_ptr<DOHUnitInterface>::release
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-doh-common.hh:266,1
    - Dst: auto*::handleUDPResponse
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-doh-common.hh:267,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-doh-common.hh:267,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-doh-common.hh:267,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 4
    argCount: 4
    argNames:
    - unit
    - ' response'
    - ' state'
    - ' ds'
    argTypes:
    - std::unique_ptr<DOHUnitInterface>
    - PacketBuffer
    - InternalQueryState
    - std::shared_ptr<DownstreamState>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 269
      start: 263
    functionDepth: 1
    functionLinenumber: 263
    functionLinenumberEnd: 269
    functionName: handleUDPResponse
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-doh-common.hh
    functionUses: 1
    functionsReached:
    - auto*::handleUDPResponse
    - std::move
    - std::unique_ptr<DOHUnitInterface>::release
    linkageType: ''
    returnType: void
    signature: void handleUDPResponse(std::unique_ptr<DOHUnitInterface> unit, PacketBuffer&&
      response, InternalQueryState&& state, const std::shared_ptr<DownstreamState>&
      ds)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::channel::createObjectQueue<T>
      Src: /src/pdns/pdns/dnsdistdist/delaypipe.cc:31,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/delaypipe.cc:32,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/delaypipe.cc:33,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 34
      start: 29
    functionDepth: 0
    functionLinenumber: 29
    functionLinenumberEnd: 34
    functionName: ObjectPipe<T>::ObjectPipe
    functionSourceFile: /src/pdns/pdns/dnsdistdist/delaypipe.cc
    functionUses: 0
    functionsReached:
    - std::move
    - pdns::channel::createObjectQueue<T>
    linkageType: ''
    returnType: void
    signature: void ObjectPipe<T>::ObjectPipe()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ObjectPipe<T>::close
      Src: /src/pdns/pdns/dnsdistdist/delaypipe.cc:39,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 37
    functionDepth: 0
    functionLinenumber: 37
    functionLinenumberEnd: 40
    functionName: ObjectPipe<T>::close
    functionSourceFile: /src/pdns/pdns/dnsdistdist/delaypipe.cc
    functionUses: 1
    functionsReached:
    - ObjectPipe<T>::close
    linkageType: ''
    returnType: void
    signature: void ObjectPipe<T>::close()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::make_unique<T>
      Src: /src/pdns/pdns/dnsdistdist/delaypipe.cc:45,1
    - Dst: send
      Src: /src/pdns/pdns/dnsdistdist/delaypipe.cc:46,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/delaypipe.cc:46,1
    - Dst: unixDie
      Src: /src/pdns/pdns/dnsdistdist/delaypipe.cc:47,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ' t'
    argTypes:
    - T
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 49
    functionName: ObjectPipe<T>::write
    functionSourceFile: /src/pdns/pdns/dnsdistdist/delaypipe.cc
    functionUses: 0
    functionsReached:
    - unixDie
    - std::move
    - std::make_unique<T>
    - send
    linkageType: ''
    returnType: void
    signature: void ObjectPipe<T>::write(T& t)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: waitForData
      Src: /src/pdns/pdns/dnsdistdist/delaypipe.cc:55,1
    - Dst: getDescriptor
      Src: /src/pdns/pdns/dnsdistdist/delaypipe.cc:55,1
    - Dst: unixDie
      Src: /src/pdns/pdns/dnsdistdist/delaypipe.cc:60,1
    - Dst: receive
      Src: /src/pdns/pdns/dnsdistdist/delaypipe.cc:67,1
    - Dst: isClosed
      Src: /src/pdns/pdns/dnsdistdist/delaypipe.cc:69,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/delaypipe.cc:79,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/delaypipe.cc:79,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/delaypipe.cc:79,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 24
    argCount: 2
    argNames:
    - t
    - msec
    argTypes:
    - T*
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 52
    functionDepth: 0
    functionLinenumber: 52
    functionLinenumberEnd: 82
    functionName: ObjectPipe<T>::readTimeout
    functionSourceFile: /src/pdns/pdns/dnsdistdist/delaypipe.cc
    functionUses: 0
    functionsReached:
    - isClosed
    - unixDie
    - std::runtime_error
    - what
    - waitForData
    - receive
    - getDescriptor
    - std::string
    linkageType: ''
    returnType: int
    signature: int ObjectPipe<T>::readTimeout(T* t, double msec)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 85
    functionDepth: 0
    functionLinenumber: 85
    functionLinenumberEnd: 88
    functionName: DelayPipe<T>::DelayPipe
    functionSourceFile: /src/pdns/pdns/dnsdistdist/delaypipe.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void DelayPipe<T>::DelayPipe()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DelayPipe<T>::gettime
      Src: /src/pdns/pdns/dnsdistdist/delaypipe.cc:93,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ts
    argTypes:
    - struct timespec*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 91
    functionDepth: 0
    functionLinenumber: 91
    functionLinenumberEnd: 94
    functionName: DelayPipe<T>::gettime
    functionSourceFile: /src/pdns/pdns/dnsdistdist/delaypipe.cc
    functionUses: 1
    functionsReached:
    - DelayPipe<T>::gettime
    linkageType: ''
    returnType: void
    signature: void DelayPipe<T>::gettime(struct timespec* ts)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DelayPipe<T>::gettime
      Src: /src/pdns/pdns/dnsdistdist/delaypipe.cc:100,1
    - Dst: write
      Src: /src/pdns/pdns/dnsdistdist/delaypipe.cc:107,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - ' t'
    - msec
    argTypes:
    - T
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 97
    functionDepth: 0
    functionLinenumber: 97
    functionLinenumberEnd: 108
    functionName: DelayPipe<T>::submit
    functionSourceFile: /src/pdns/pdns/dnsdistdist/delaypipe.cc
    functionUses: 0
    functionsReached:
    - write
    - DelayPipe<T>::gettime
    linkageType: ''
    returnType: void
    signature: void DelayPipe<T>::submit(T& t, int msec)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: close
      Src: /src/pdns/pdns/dnsdistdist/delaypipe.cc:113,1
    - Dst: join
      Src: /src/pdns/pdns/dnsdistdist/delaypipe.cc:114,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 115
      start: 111
    functionDepth: 0
    functionLinenumber: 111
    functionLinenumberEnd: 115
    functionName: DelayPipe<T>::~DelayPipe()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/delaypipe.cc
    functionUses: 0
    functionsReached:
    - join
    - close
    linkageType: ''
    returnType: void
    signature: void DelayPipe<T>::~DelayPipe()
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: setThreadName
      Src: /src/pdns/pdns/dnsdistdist/delaypipe.cc:120,1
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/delaypipe.cc:135,1
    - Dst: DelayPipe<T>::gettime
      Src: /src/pdns/pdns/dnsdistdist/delaypipe.cc:136,1
    - Dst: tsdelta
      Src: /src/pdns/pdns/dnsdistdist/delaypipe.cc:137,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/delaypipe.cc:137,1
    - Dst: readTimeout
      Src: /src/pdns/pdns/dnsdistdist/delaypipe.cc:143,1
    - Dst: emplace
      Src: /src/pdns/pdns/dnsdistdist/delaypipe.cc:145,1
    - Dst: DelayPipe<T>::gettime
      Src: /src/pdns/pdns/dnsdistdist/delaypipe.cc:153,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/delaypipe.cc:158,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/delaypipe.cc:158,1
    - Dst: cmp
      Src: /src/pdns/pdns/dnsdistdist/delaypipe.cc:159,1
    - Dst: auto::second
      Src: /src/pdns/pdns/dnsdistdist/delaypipe.cc:160,1
    - Dst: erase
      Src: /src/pdns/pdns/dnsdistdist/delaypipe.cc:161,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 30
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 168
      start: 118
    functionDepth: 0
    functionLinenumber: 118
    functionLinenumberEnd: 168
    functionName: DelayPipe<T>::worker
    functionSourceFile: /src/pdns/pdns/dnsdistdist/delaypipe.cc
    functionUses: 0
    functionsReached:
    - auto::second
    - end
    - cmp
    - tsdelta
    - begin
    - empty
    - erase
    - readTimeout
    - setThreadName
    - DelayPipe<T>::gettime
    - emplace
    linkageType: ''
    returnType: void
    signature: void DelayPipe<T>::worker()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 37
    functionDepth: 0
    functionLinenumber: 37
    functionLinenumberEnd: 37
    functionName: dnsdist::NetworkListener::NetworkListener
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void NetworkListener(const NetworkListener&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 38
    functionDepth: 0
    functionLinenumber: 38
    functionLinenumberEnd: 38
    functionName: dnsdist::NetworkListener::NetworkListener
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void NetworkListener(NetworkListener&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 39
      start: 39
    functionDepth: 0
    functionLinenumber: 39
    functionLinenumberEnd: 39
    functionName: '& operator=(const NetworkListener&)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: NetworkListener
    signature: NetworkListener & operator=(const NetworkListener&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 40
    functionDepth: 0
    functionLinenumber: 40
    functionLinenumberEnd: 40
    functionName: '& operator=(NetworkListener&&)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: NetworkListener
    signature: NetworkListener & operator=(NetworkListener&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 37
    functionDepth: 0
    functionLinenumber: 37
    functionLinenumberEnd: 37
    functionName: dnsdist::NetworkListener::NetworkListener
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void NetworkListener(const NetworkListener&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 38
    functionDepth: 0
    functionLinenumber: 38
    functionLinenumberEnd: 38
    functionName: dnsdist::NetworkListener::NetworkListener
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void NetworkListener(NetworkListener&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 39
      start: 39
    functionDepth: 0
    functionLinenumber: 39
    functionLinenumberEnd: 39
    functionName: '& operator=(const NetworkListener&)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: NetworkListener
    signature: NetworkListener & operator=(const NetworkListener&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 40
    functionDepth: 0
    functionLinenumber: 40
    functionLinenumberEnd: 40
    functionName: '& operator=(NetworkListener&&)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: NetworkListener
    signature: NetworkListener & operator=(NetworkListener&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - data_
    - size_
    argTypes:
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 35
      start: 32
    functionDepth: 0
    functionLinenumber: 32
    functionLinenumberEnd: 35
    functionName: pdns::views::UnsignedCharView::UnsignedCharView
    functionSourceFile: /src/pdns/pdns/dnsdistdist/views.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void UnsignedCharView(const char* data_, size_t size_)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/views.hh:38,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - data_
    - size_
    argTypes:
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 37
    functionDepth: 0
    functionLinenumber: 37
    functionLinenumberEnd: 40
    functionName: pdns::views::UnsignedCharView::UnsignedCharView
    functionSourceFile: /src/pdns/pdns/dnsdistdist/views.hh
    functionUses: 0
    functionsReached:
    - reinterpret_cast<const char*>
    linkageType: ''
    returnType: void
    signature: void UnsignedCharView(const unsigned char* data_, size_t size_)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: reinterpret_cast<const unsigned char&>
      Src: /src/pdns/pdns/dnsdistdist/views.hh:45,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/views.hh:45,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - pos
    argTypes:
    - size_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 46
    functionName: '& at(size_type pos) const'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/views.hh
    functionUses: 0
    functionsReached:
    - reinterpret_cast<const unsigned char&>
    - at
    linkageType: ''
    returnType: unsigned char
    signature: unsigned char & at(size_type pos) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: reinterpret_cast<const unsigned char&>
      Src: /src/pdns/pdns/dnsdistdist/views.hh:50,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - pos
    argTypes:
    - size_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 48
    functionDepth: 0
    functionLinenumber: 48
    functionLinenumberEnd: 51
    functionName: '& operator[](size_type pos) const'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/views.hh
    functionUses: 0
    functionsReached:
    - reinterpret_cast<const unsigned char&>
    linkageType: ''
    returnType: unsigned char
    signature: unsigned char & operator[](size_type pos) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/dnsdistdist/views.hh:55,1
    - Dst: pdns::views::UnsignedCharView::data
      Src: /src/pdns/pdns/dnsdistdist/views.hh:55,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 53
    functionDepth: 0
    functionLinenumber: 53
    functionLinenumberEnd: 56
    functionName: pdns::views::UnsignedCharView::data
    functionSourceFile: /src/pdns/pdns/dnsdistdist/views.hh
    functionUses: 5
    functionsReached:
    - reinterpret_cast<const unsigned char*>
    - pdns::views::UnsignedCharView::data
    linkageType: ''
    returnType: unsigned char
    signature: unsigned char * data() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::views::UnsignedCharView::size
      Src: /src/pdns/pdns/dnsdistdist/views.hh:61,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 59
    functionDepth: 0
    functionLinenumber: 59
    functionLinenumberEnd: 62
    functionName: pdns::views::UnsignedCharView::size
    functionSourceFile: /src/pdns/pdns/dnsdistdist/views.hh
    functionUses: 5
    functionsReached:
    - pdns::views::UnsignedCharView::size
    linkageType: ''
    returnType: size_t
    signature: size_t size() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::views::UnsignedCharView::length
      Src: /src/pdns/pdns/dnsdistdist/views.hh:66,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 64
    functionDepth: 0
    functionLinenumber: 64
    functionLinenumberEnd: 67
    functionName: pdns::views::UnsignedCharView::length
    functionSourceFile: /src/pdns/pdns/dnsdistdist/views.hh
    functionUses: 5
    functionsReached:
    - pdns::views::UnsignedCharView::length
    linkageType: ''
    returnType: size_t
    signature: size_t length() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - data_
    - size_
    argTypes:
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 35
      start: 32
    functionDepth: 0
    functionLinenumber: 32
    functionLinenumberEnd: 35
    functionName: pdns::views::UnsignedCharView::UnsignedCharView
    functionSourceFile: /src/pdns/pdns/dnsdistdist/views.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void UnsignedCharView(const char* data_, size_t size_)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/views.hh:38,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - data_
    - size_
    argTypes:
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 37
    functionDepth: 0
    functionLinenumber: 37
    functionLinenumberEnd: 40
    functionName: pdns::views::UnsignedCharView::UnsignedCharView
    functionSourceFile: /src/pdns/pdns/dnsdistdist/views.hh
    functionUses: 0
    functionsReached:
    - reinterpret_cast<const char*>
    linkageType: ''
    returnType: void
    signature: void UnsignedCharView(const unsigned char* data_, size_t size_)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: reinterpret_cast<const unsigned char&>
      Src: /src/pdns/pdns/dnsdistdist/views.hh:45,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/views.hh:45,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - pos
    argTypes:
    - size_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 46
    functionName: '& at(size_type pos) const'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/views.hh
    functionUses: 0
    functionsReached:
    - reinterpret_cast<const unsigned char&>
    - at
    linkageType: ''
    returnType: unsigned char
    signature: unsigned char & at(size_type pos) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: reinterpret_cast<const unsigned char&>
      Src: /src/pdns/pdns/dnsdistdist/views.hh:50,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - pos
    argTypes:
    - size_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 48
    functionDepth: 0
    functionLinenumber: 48
    functionLinenumberEnd: 51
    functionName: '& operator[](size_type pos) const'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/views.hh
    functionUses: 0
    functionsReached:
    - reinterpret_cast<const unsigned char&>
    linkageType: ''
    returnType: unsigned char
    signature: unsigned char & operator[](size_type pos) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/dnsdistdist/views.hh:55,1
    - Dst: pdns::views::UnsignedCharView::data
      Src: /src/pdns/pdns/dnsdistdist/views.hh:55,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 53
    functionDepth: 0
    functionLinenumber: 53
    functionLinenumberEnd: 56
    functionName: pdns::views::UnsignedCharView::data
    functionSourceFile: /src/pdns/pdns/dnsdistdist/views.hh
    functionUses: 6
    functionsReached:
    - reinterpret_cast<const unsigned char*>
    - pdns::views::UnsignedCharView::data
    linkageType: ''
    returnType: unsigned char
    signature: unsigned char * data() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::views::UnsignedCharView::size
      Src: /src/pdns/pdns/dnsdistdist/views.hh:61,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 59
    functionDepth: 0
    functionLinenumber: 59
    functionLinenumberEnd: 62
    functionName: pdns::views::UnsignedCharView::size
    functionSourceFile: /src/pdns/pdns/dnsdistdist/views.hh
    functionUses: 6
    functionsReached:
    - pdns::views::UnsignedCharView::size
    linkageType: ''
    returnType: size_t
    signature: size_t size() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::views::UnsignedCharView::length
      Src: /src/pdns/pdns/dnsdistdist/views.hh:66,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 64
    functionDepth: 0
    functionLinenumber: 64
    functionLinenumberEnd: 67
    functionName: pdns::views::UnsignedCharView::length
    functionSourceFile: /src/pdns/pdns/dnsdistdist/views.hh
    functionUses: 6
    functionsReached:
    - pdns::views::UnsignedCharView::length
    linkageType: ''
    returnType: size_t
    signature: size_t length() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - _prometheusType
    - ' _description'
    argTypes:
    - PrometheusMetricType
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 50
    functionDepth: 0
    functionLinenumber: 50
    functionLinenumberEnd: 53
    functionName: MetricDefinition
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-prometheus.hh
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void MetricDefinition(PrometheusMetricType _prometheusType, const std::string&
      _description, const std::string& customName_ = "")
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 55
    functionDepth: 0
    functionLinenumber: 55
    functionLinenumberEnd: 55
    functionName: MetricDefinition
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-prometheus.hh
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void MetricDefinition()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: find
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-prometheus.hh:70,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-prometheus.hh:72,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - ' metricName'
    - ' metric'
    argTypes:
    - std::string
    - MetricDefinition
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 68
    functionDepth: 0
    functionLinenumber: 68
    functionLinenumberEnd: 78
    functionName: getMetricDetails
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-prometheus.hh
    functionUses: 0
    functionsReached:
    - end
    - find
    linkageType: ''
    returnType: bool
    signature: bool getMetricDetails(const std::string& metricName, MetricDefinition&
      metric) const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::map::find
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-prometheus.hh:86,1
    - Dst: std::map::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-prometheus.hh:87,1
    - Dst: emplace
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-prometheus.hh:90,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - ' def'
    argTypes:
    - dnsdist::prometheus::PrometheusMetricDefinition
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 80
    functionDepth: 0
    functionLinenumber: 80
    functionLinenumberEnd: 92
    functionName: addMetricDefinition
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-prometheus.hh
    functionUses: 2
    functionsReached:
    - std::map::find
    - std::map::end
    - emplace
    linkageType: ''
    returnType: bool
    signature: bool addMetricDefinition(const dnsdist::prometheus::PrometheusMetricDefinition&
      def)
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 1
    argNames:
    - metricType
    argTypes:
    - PrometheusMetricType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 95
    functionDepth: 0
    functionLinenumber: 95
    functionLinenumberEnd: 108
    functionName: getPrometheusStringMetricType
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-prometheus.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string getPrometheusStringMetricType(PrometheusMetricType metricType)
      const
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-svc.cc:36,1
    - Dst: std::set::insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-svc.cc:39,1
    - Dst: static_cast<SvcParam::SvcParamKey>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-svc.cc:39,1
    - Dst: std::set::insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-svc.cc:41,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-svc.cc:41,1
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-svc.cc:44,1
    - Dst: std::set::insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-svc.cc:45,1
    - Dst: std::vector<std::string>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-svc.cc:45,1
    - Dst: std::set::insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-svc.cc:49,1
    - Dst: std::set::insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-svc.cc:53,1
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-svc.cc:56,1
    - Dst: std::set::insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-svc.cc:57,1
    - Dst: std::vector<ComboAddress>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-svc.cc:57,1
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-svc.cc:60,1
    - Dst: std::set::insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-svc.cc:61,1
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-svc.cc:64,1
    - Dst: std::set::insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-svc.cc:65,1
    - Dst: std::vector<ComboAddress>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-svc.cc:65,1
    - Dst: std::set::insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-svc.cc:69,1
    - Dst: static_cast<SvcParam::SvcParamKey>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-svc.cc:69,1
    - Dst: std::set::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-svc.cc:72,1
    - Dst: clear
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-svc.cc:76,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-svc.cc:79,1
    - Dst: DNSPacketWriter::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-svc.cc:80,1
    - Dst: DNSPacketWriter::xfr16BitInt
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-svc.cc:81,1
    - Dst: DNSPacketWriter::xfrName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-svc.cc:82,1
    - Dst: DNSPacketWriter::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-svc.cc:83,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-svc.cc:84,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-svc.cc:86,1
    - Dst: erase
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-svc.cc:90,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-svc.cc:90,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-svc.cc:90,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 40
    argCount: 11
    argNames:
    - ' payload'
    - priority
    - ' target'
    - ' mandatoryParams'
    - ' alpns'
    - noDefaultAlpn
    - port
    - ' ech'
    - ' ipv4hints'
    - ' ipv6hints'
    - ' additionalParams'
    argTypes:
    - std::vector<uint8_t>
    - uint16_t
    - DNSName
    - std::set<uint16_t>
    - std::vector<std::string>
    - bool
    - std::optional<uint16_t>
    - std::string
    - std::vector<ComboAddress>
    - std::vector<ComboAddress>
    - std::vector<std::pair<uint16_t, std::string>>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 30
    functionDepth: 1
    functionLinenumber: 30
    functionLinenumberEnd: 92
    functionName: generateSVCPayload
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-svc.cc
    functionUses: 1
    functionsReached:
    - DNSPacketWriter::size
    - DNSPacketWriter::xfr16BitInt
    - std::move
    - std::set::size
    - DNSPacketWriter::commit
    - static_cast<SvcParam::SvcParamKey>
    - std::vector<std::string>
    - DNSPacketWriter::xfrSvcParamKeyVals
    - size
    - DNSPacketWriter::xfrName
    - std::set::insert
    - clear
    - begin
    - empty
    - erase
    - DNSPacketWriter::startRecord
    - std::vector<ComboAddress>
    linkageType: ''
    returnType: bool
    signature: bool generateSVCPayload(std::vector<uint8_t>& payload, uint16_t priority,
      const DNSName& target, const std::set<uint16_t>& mandatoryParams, const std::vector<std::string>&
      alpns, bool noDefaultAlpn, std::optional<uint16_t> port, const std::string&
      ech, const std::vector<ComboAddress>& ipv4hints, const std::vector<ComboAddress>&
      ipv6hints, const std::vector<std::pair<uint16_t, std::string>>& additionalParams)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: generateSVCPayload
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-svc.cc:96,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' payload'
    - ' parameters'
    argTypes:
    - std::vector<uint8_t>
    - SVCRecordParameters
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 94
    functionDepth: 1
    functionLinenumber: 94
    functionLinenumberEnd: 97
    functionName: generateSVCPayload
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-svc.cc
    functionUses: 2
    functionsReached:
    - generateSVCPayload
    linkageType: ''
    returnType: bool
    signature: bool generateSVCPayload(std::vector<uint8_t>& payload, const SVCRecordParameters&
      parameters)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: boost::get<std::vector<std::pair<int, std::string>>>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-svc.cc:104,1
    - Dst: struct SVCRecordParameters::mandatoryParams::insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-svc.cc:105,1
    - Dst: SvcParam::keyFromString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-svc.cc:105,1
    - Dst: boost::get<std::vector<std::pair<int, std::string>>>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-svc.cc:109,1
    - Dst: struct SVCRecordParameters::alpns::push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-svc.cc:110,1
    - Dst: boost::get<bool>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-svc.cc:114,1
    - Dst: boost::get<uint16_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-svc.cc:117,1
    - Dst: boost::get<std::vector<std::pair<int, std::string>>>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-svc.cc:120,1
    - Dst: struct SVCRecordParameters::ipv4hints::push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-svc.cc:121,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-svc.cc:121,1
    - Dst: boost::get<std::string>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-svc.cc:125,1
    - Dst: boost::get<std::vector<std::pair<int, std::string>>>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-svc.cc:128,1
    - Dst: struct SVCRecordParameters::ipv6hints::push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-svc.cc:129,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-svc.cc:129,1
    - Dst: struct SVCRecordParameters::additionalParams::push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-svc.cc:133,1
    - Dst: SvcParam::keyFromString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-svc.cc:133,1
    - Dst: boost::get<std::string>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-svc.cc:133,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 30
    argCount: 1
    argNames:
    - ' params'
    argTypes:
    - svcParamsLua_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 137
      start: 99
    functionDepth: 1
    functionLinenumber: 99
    functionLinenumberEnd: 137
    functionName: parseSVCParameters
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-svc.cc
    functionUses: 1
    functionsReached:
    - struct SVCRecordParameters::ipv4hints::push_back
    - SvcParam::keyFromString
    - struct SVCRecordParameters::additionalParams::push_back
    - boost::get<std::string>
    - boost::get<bool>
    - boost::get<std::vector<std::pair<int, std::string>>>
    - boost::get<uint16_t>
    - struct SVCRecordParameters::alpns::push_back
    - struct SVCRecordParameters::mandatoryParams::insert
    - struct SVCRecordParameters::ipv6hints::push_back
    - ComboAddress
    linkageType: ''
    returnType: struct SVCRecordParameters
    signature: struct SVCRecordParameters parseSVCParameters(const svcParamsLua_t&
      params)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-svc.cc:146,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-svc.cc:148,1
    - Dst: ids::qname::wirelength
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-svc.cc:149,1
    - Dst: getMaximumSize
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-svc.cc:150,1
    - Dst: PacketBuffer::reserve
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-svc.cc:155,1
    - Dst: GenericDNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-svc.cc:158,1
    - Dst: GenericDNSPacketWriter::xfrBlob
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-svc.cc:159,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-svc.cc:160,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-svc.cc:163,1
    - Dst: getMaximumSize
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-svc.cc:163,1
    - Dst: GenericDNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-svc.cc:165,1
    - Dst: first::isRoot
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-svc.cc:165,1
    - Dst: GenericDNSPacketWriter::xfrCAWithoutPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-svc.cc:166,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-svc.cc:167,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-svc.cc:171,1
    - Dst: getMaximumSize
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-svc.cc:171,1
    - Dst: GenericDNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-svc.cc:173,1
    - Dst: first::isRoot
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-svc.cc:173,1
    - Dst: GenericDNSPacketWriter::xfrCAWithoutPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-svc.cc:174,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-svc.cc:175,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-svc.cc:179,1
    - Dst: queryHasEDNS
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-svc.cc:180,1
    - Dst: dnsdist::getEDNSZ
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-svc.cc:181,1
    - Dst: GenericDNSPacketWriter::addOpt
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-svc.cc:182,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-svc.cc:183,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-svc.cc:186,1
    - Dst: getMaximumSize
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-svc.cc:186,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-svc.cc:191,1
    - Dst: getHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-svc.cc:191,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-svc.cc:192,1
    - Dst: setResponseHeadersFromConfig
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-svc.cc:193,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-svc.cc:193,1
    - Dst: getMutableData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-svc.cc:194,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-svc.cc:194,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 35
    argCount: 5
    argNames:
    - ' dnsQuestion'
    - ' svcRecordPayloads'
    - ' additionals4'
    - ' additionals6'
    - ' responseConfig'
    argTypes:
    - DNSQuestion
    - std::vector<std::vector<uint8_t>>
    - std::set<std::pair<DNSName, ComboAddress>>
    - std::set<std::pair<DNSName, ComboAddress>>
    - ResponseConfig
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 197
      start: 141
    functionDepth: 1
    functionLinenumber: 141
    functionLinenumberEnd: 197
    functionName: dnsdist::svc::generateSVCResponse
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-svc.cc
    functionUses: 1
    functionsReached:
    - getMutableData
    - setResponseHeadersFromConfig
    - GenericDNSPacketWriter::getHeader
    - PacketBuffer::size
    - queryHasEDNS
    - GenericDNSPacketWriter::xfrCAWithoutPort
    - GenericDNSPacketWriter::startRecord
    - size
    - dnsdist::getEDNSZ
    - getMaximumSize
    - dnsdist::configuration::getCurrentRuntimeConfiguration
    - first::isRoot
    - GenericDNSPacketWriter::xfrBlob
    - getHeader
    - ids::qname::wirelength
    - GenericDNSPacketWriter::addOpt
    - std::move
    - PacketBuffer::reserve
    - GenericDNSPacketWriter::commit
    linkageType: ''
    returnType: bool
    signature: bool generateSVCResponse(DNSQuestion& dnsQuestion, const std::vector<std::vector<uint8_t>>&
      svcRecordPayloads, const std::set<std::pair<DNSName, ComboAddress>>& additionals4,
      const std::set<std::pair<DNSName, ComboAddress>>& additionals6, const ResponseConfig&
      responseConfig)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::vector::reserve
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-svc.cc:208,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-svc.cc:208,1
    - Dst: generateSVCPayload
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-svc.cc:211,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-svc.cc:212,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-svc.cc:215,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-svc.cc:215,1
    - Dst: std::set::insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-svc.cc:218,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-svc.cc:218,1
    - Dst: std::set::insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-svc.cc:222,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-svc.cc:222,1
    - Dst: dnsdist::svc::generateSVCResponse
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-svc.cc:226,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 3
    argNames:
    - ' dnsQuestion'
    - ttl
    - ' parameters'
    argTypes:
    - DNSQuestion
    - uint32_t
    - std::vector<SVCRecordParameters>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 227
      start: 199
    functionDepth: 2
    functionLinenumber: 199
    functionLinenumberEnd: 227
    functionName: dnsdist::svc::generateSVCResponse
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-svc.cc
    functionUses: 2
    functionsReached:
    - std::vector::push_back
    - std::move
    - generateSVCPayload
    - dnsdist::svc::generateSVCResponse
    - std::runtime_error
    - size
    - std::vector::reserve
    - std::set::insert
    - ComboAddress
    linkageType: ''
    returnType: bool
    signature: bool generateSVCResponse(DNSQuestion& dnsQuestion, uint32_t ttl, const
      std::vector<SVCRecordParameters>& parameters)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-svc.cc:146,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-svc.cc:148,1
    - Dst: ids::qname::wirelength
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-svc.cc:149,1
    - Dst: getMaximumSize
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-svc.cc:150,1
    - Dst: PacketBuffer::reserve
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-svc.cc:155,1
    - Dst: GenericDNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-svc.cc:158,1
    - Dst: GenericDNSPacketWriter::xfrBlob
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-svc.cc:159,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-svc.cc:160,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-svc.cc:163,1
    - Dst: getMaximumSize
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-svc.cc:163,1
    - Dst: GenericDNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-svc.cc:165,1
    - Dst: first::isRoot
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-svc.cc:165,1
    - Dst: GenericDNSPacketWriter::xfrCAWithoutPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-svc.cc:166,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-svc.cc:167,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-svc.cc:171,1
    - Dst: getMaximumSize
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-svc.cc:171,1
    - Dst: GenericDNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-svc.cc:173,1
    - Dst: first::isRoot
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-svc.cc:173,1
    - Dst: GenericDNSPacketWriter::xfrCAWithoutPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-svc.cc:174,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-svc.cc:175,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-svc.cc:179,1
    - Dst: queryHasEDNS
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-svc.cc:180,1
    - Dst: dnsdist::getEDNSZ
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-svc.cc:181,1
    - Dst: GenericDNSPacketWriter::addOpt
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-svc.cc:182,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-svc.cc:183,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-svc.cc:186,1
    - Dst: getMaximumSize
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-svc.cc:186,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-svc.cc:191,1
    - Dst: getHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-svc.cc:191,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-svc.cc:192,1
    - Dst: setResponseHeadersFromConfig
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-svc.cc:193,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-svc.cc:193,1
    - Dst: getMutableData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-svc.cc:194,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-svc.cc:194,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 35
    argCount: 5
    argNames:
    - ' dnsQuestion'
    - ' svcRecordPayloads'
    - ' additionals4'
    - ' additionals6'
    - ' responseConfig'
    argTypes:
    - DNSQuestion
    - std::vector<std::vector<uint8_t>>
    - std::set<std::pair<DNSName, ComboAddress>>
    - std::set<std::pair<DNSName, ComboAddress>>
    - ResponseConfig
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 197
      start: 141
    functionDepth: 1
    functionLinenumber: 141
    functionLinenumberEnd: 197
    functionName: dnsdist::svc::generateSVCResponse
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-svc.cc
    functionUses: 2
    functionsReached:
    - getMutableData
    - setResponseHeadersFromConfig
    - GenericDNSPacketWriter::getHeader
    - PacketBuffer::size
    - queryHasEDNS
    - GenericDNSPacketWriter::xfrCAWithoutPort
    - GenericDNSPacketWriter::startRecord
    - size
    - dnsdist::getEDNSZ
    - getMaximumSize
    - dnsdist::configuration::getCurrentRuntimeConfiguration
    - first::isRoot
    - GenericDNSPacketWriter::xfrBlob
    - getHeader
    - ids::qname::wirelength
    - GenericDNSPacketWriter::addOpt
    - std::move
    - PacketBuffer::reserve
    - GenericDNSPacketWriter::commit
    linkageType: ''
    returnType: bool
    signature: bool generateSVCResponse(DNSQuestion& dnsQuestion, const std::vector<std::vector<uint8_t>>&
      svcRecordPayloads, const std::set<std::pair<DNSName, ComboAddress>>& additionals4,
      const std::set<std::pair<DNSName, ComboAddress>>& additionals6, const ResponseConfig&
      responseConfig)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::vector::reserve
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-svc.cc:208,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-svc.cc:208,1
    - Dst: generateSVCPayload
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-svc.cc:211,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-svc.cc:212,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-svc.cc:215,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-svc.cc:215,1
    - Dst: std::set::insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-svc.cc:218,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-svc.cc:218,1
    - Dst: std::set::insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-svc.cc:222,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-svc.cc:222,1
    - Dst: dnsdist::svc::generateSVCResponse
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-svc.cc:226,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 3
    argNames:
    - ' dnsQuestion'
    - ttl
    - ' parameters'
    argTypes:
    - DNSQuestion
    - uint32_t
    - std::vector<SVCRecordParameters>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 227
      start: 199
    functionDepth: 2
    functionLinenumber: 199
    functionLinenumberEnd: 227
    functionName: dnsdist::svc::generateSVCResponse
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-svc.cc
    functionUses: 3
    functionsReached:
    - std::vector::push_back
    - std::move
    - generateSVCPayload
    - dnsdist::svc::generateSVCResponse
    - std::runtime_error
    - size
    - std::vector::reserve
    - std::set::insert
    - ComboAddress
    linkageType: ''
    returnType: bool
    signature: bool generateSVCResponse(DNSQuestion& dnsQuestion, uint32_t ttl, const
      std::vector<SVCRecordParameters>& parameters)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::dnsdist::Tracer::getTracer
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:54,1
    - Dst: BOOST_CHECK_NE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:55,1
    - Dst: auto::getTraceID
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:55,1
    - Dst: pdns::trace::dnsdist::Tracer::getTracer
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:58,1
    - Dst: auto::openSpan
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:59,1
    - Dst: auto::getTracesData
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:60,1
    - Dst: BOOST_CHECK_NE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:61,1
    - Dst: auto::resource_spans::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:61,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:61,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:61,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 51
    functionDepth: 1
    functionLinenumber: 51
    functionLinenumberEnd: 62
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc
    functionUses: 0
    functionsReached:
    - BOOST_CHECK_NE
    - at
    - auto::getTracesData
    - auto::resource_spans::at
    - auto::openSpan
    - auto::getTraceID
    - pdns::trace::dnsdist::Tracer::getTracer
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(TraceID)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::dnsdist::Tracer::getTracer
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:66,1
    - Dst: auto::getLastSpanID
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:69,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:70,1
    - Dst: auto::openSpan
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:73,1
    - Dst: auto::getSpanID
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:74,1
    - Dst: auto::getLastSpanID
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:75,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:76,1
    - Dst: auto::openSpan
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:79,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:79,1
    - Dst: auto::getSpanID
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:80,1
    - Dst: auto::getLastSpanID
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:81,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:83,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 64
    functionDepth: 1
    functionLinenumber: 64
    functionLinenumberEnd: 84
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc
    functionUses: 0
    functionsReached:
    - std::to_string
    - auto::getLastSpanID
    - auto::getSpanID
    - BOOST_CHECK_EQUAL
    - auto::openSpan
    - pdns::trace::dnsdist::Tracer::getTracer
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(getLastSpanID)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::dnsdist::Tracer::getTracer
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:90,1
    - Dst: auto::getLastSpanIDForName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:93,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:94,1
    - Dst: auto::openSpan
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:97,1
    - Dst: auto::getLastSpanIDForName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:98,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:99,1
    - Dst: auto::openSpan
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:102,1
    - Dst: auto::getLastSpanIDForName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:104,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:105,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 86
    functionDepth: 1
    functionLinenumber: 86
    functionLinenumberEnd: 106
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc
    functionUses: 0
    functionsReached:
    - auto::openSpan
    - auto::getLastSpanIDForName
    - pdns::trace::dnsdist::Tracer::getTracer
    - BOOST_CHECK_EQUAL
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(getLastSpanIDForName)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::dnsdist::Tracer::getTracer
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:110,1
    - Dst: auto::openSpan
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:112,1
    - Dst: auto::openSpan
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:118,1
    - Dst: auto::getSpanID
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:119,1
    - Dst: auto::openSpan
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:120,1
    - Dst: auto::getSpanID
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:121,1
    - Dst: pdns::trace::dnsdist::Tracer::Closer::Closer
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:124,1
    - Dst: auto::getTracesData
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:128,1
    - Dst: BOOST_ASSERT
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:129,1
    - Dst: auto::resource_spans::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:129,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:129,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:129,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:131,1
    - Dst: auto::resource_spans::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:131,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:131,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:131,1
    - Dst: BOOST_CHECK_NE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:132,1
    - Dst: auto::resource_spans::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:132,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:132,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:132,1
    - Dst: BOOST_CHECK_NE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:134,1
    - Dst: auto::resource_spans::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:134,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:134,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:134,1
    - Dst: BOOST_CHECK_NE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:135,1
    - Dst: auto::resource_spans::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:135,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:135,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:135,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:138,1
    - Dst: auto::resource_spans::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:138,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:138,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:138,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:139,1
    - Dst: auto::resource_spans::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:139,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:139,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:139,1
    - Dst: pdns::trace::dnsdist::Tracer::Closer::Closer
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:141,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:142,1
    - Dst: pdns::trace::dnsdist::Tracer::Closer::getSpanID
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:142,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 143
      start: 108
    functionDepth: 1
    functionLinenumber: 108
    functionLinenumberEnd: 143
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc
    functionUses: 0
    functionsReached:
    - BOOST_CHECK_NE
    - at
    - auto::getSpanID
    - pdns::trace::dnsdist::Tracer::Closer::getSpanID
    - auto::getTracesData
    - BOOST_ASSERT
    - size
    - BOOST_CHECK_EQUAL
    - auto::resource_spans::at
    - auto::openSpan
    - pdns::trace::dnsdist::Tracer::Closer::Closer
    - pdns::trace::dnsdist::Tracer::getTracer
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(Closer)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::dnsdist::Tracer::getTracer
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:147,1
    - Dst: auto::setTraceAttribute
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:148,1
    - Dst: auto::getTracesData
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:150,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:151,1
    - Dst: auto::resource_spans::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:151,1
    - Dst: attributes::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:151,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:152,1
    - Dst: auto::resource_spans::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:152,1
    - Dst: attributes::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:152,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:155,1
    - Dst: auto::resource_spans::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:155,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:155,1
    - Dst: attributes::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:155,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:157,1
    - Dst: auto::resource_spans::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:157,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:157,1
    - Dst: attributes::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:157,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:158,1
    - Dst: auto::resource_spans::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:158,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:158,1
    - Dst: attributes::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:158,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 159
      start: 145
    functionDepth: 1
    functionLinenumber: 145
    functionLinenumberEnd: 159
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc
    functionUses: 0
    functionsReached:
    - attributes::at
    - auto::setTraceAttribute
    - at
    - auto::getTracesData
    - BOOST_CHECK_EQUAL
    - attributes::size
    - auto::resource_spans::at
    - pdns::trace::dnsdist::Tracer::getTracer
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(traceAttributes)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::dnsdist::Tracer::getTracer
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:163,1
    - Dst: auto::openSpan
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:164,1
    - Dst: auto::getSpanID
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:165,1
    - Dst: auto::setSpanAttribute
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:166,1
    - Dst: auto::setAttribute
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:167,1
    - Dst: auto::getTracesData
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:168,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:170,1
    - Dst: auto::resource_spans::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:170,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:170,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:170,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:172,1
    - Dst: auto::resource_spans::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:172,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:172,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:172,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:172,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:173,1
    - Dst: auto::resource_spans::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:173,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:173,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:173,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:173,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:174,1
    - Dst: auto::resource_spans::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:174,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:174,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:174,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:174,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:176,1
    - Dst: auto::resource_spans::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:176,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:176,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:176,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:176,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:177,1
    - Dst: auto::resource_spans::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:177,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:177,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:177,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:177,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 178
      start: 161
    functionDepth: 1
    functionLinenumber: 161
    functionLinenumberEnd: 178
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc
    functionUses: 0
    functionsReached:
    - auto::setAttribute
    - at
    - auto::setSpanAttribute
    - auto::getSpanID
    - auto::getTracesData
    - BOOST_CHECK_EQUAL
    - size
    - auto::resource_spans::at
    - auto::openSpan
    - pdns::trace::dnsdist::Tracer::getTracer
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(spanAttributes)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::dnsdist::Tracer::getTracer
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:182,1
    - Dst: auto::openSpan
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:183,1
    - Dst: auto::getSpanID
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:184,1
    - Dst: auto::openSpan
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:185,1
    - Dst: auto::setRootSpanAttribute
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:187,1
    - Dst: auto::getTracesData
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:189,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:191,1
    - Dst: auto::resource_spans::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:191,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:191,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:191,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:192,1
    - Dst: auto::resource_spans::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:192,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:192,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:192,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:192,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:193,1
    - Dst: auto::resource_spans::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:193,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:193,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:193,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:193,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:194,1
    - Dst: auto::resource_spans::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:194,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:194,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:194,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:194,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 195
      start: 180
    functionDepth: 1
    functionLinenumber: 180
    functionLinenumberEnd: 195
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc
    functionUses: 0
    functionsReached:
    - at
    - auto::getSpanID
    - auto::setRootSpanAttribute
    - auto::getTracesData
    - BOOST_CHECK_EQUAL
    - size
    - auto::resource_spans::at
    - auto::openSpan
    - pdns::trace::dnsdist::Tracer::getTracer
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(rootSpanAttributes)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::dnsdist::Tracer::getTracer
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:199,1
    - Dst: auto::getOTProtobuf
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:200,1
    - Dst: BOOST_TEST
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:201,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:201,1
    - Dst: auto::setTraceAttribute
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:203,1
    - Dst: auto::getOTProtobuf
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:204,1
    - Dst: BOOST_TEST
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:205,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:205,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 206
      start: 197
    functionDepth: 1
    functionLinenumber: 197
    functionLinenumberEnd: 206
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc
    functionUses: 0
    functionsReached:
    - auto::setTraceAttribute
    - auto::getOTProtobuf
    - BOOST_TEST
    - pdns::trace::dnsdist::Tracer::getTracer
    - auto::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(getOTProtobuf)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::dnsdist::Tracer::getTracer
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:210,1
    - Dst: auto::getTraceID
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:211,1
    - Dst: pdns::trace::getRandomTraceID
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:212,1
    - Dst: auto::makeRandom
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:214,1
    - Dst: auto::setTraceID
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:216,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:217,1
    - Dst: auto::getTraceID
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:217,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 218
      start: 208
    functionDepth: 1
    functionLinenumber: 208
    functionLinenumberEnd: 218
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc
    functionUses: 0
    functionsReached:
    - auto::makeRandom
    - pdns::trace::getRandomTraceID
    - BOOST_CHECK_EQUAL
    - auto::setTraceID
    - auto::getTraceID
    - pdns::trace::dnsdist::Tracer::getTracer
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(setTraceID)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::dnsdist::Tracer::getTracer
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:222,1
    - Dst: pdns::trace::getRandomSpanID
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:224,1
    - Dst: auto::setRootSpanID
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:225,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:226,1
    - Dst: auto::getRootSpanID
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:226,1
    - Dst: auto::openSpan
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:229,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:230,1
    - Dst: auto::getRootSpanID
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:230,1
    - Dst: auto::openSpan
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:234,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:234,1
    - Dst: auto::makeRandom
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:239,1
    - Dst: auto::setRootSpanID
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:241,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:242,1
    - Dst: auto::getRootSpanID
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:242,1
    - Dst: auto::getTracesData
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:245,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:247,1
    - Dst: auto::resource_spans::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:247,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:247,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:247,1
    - Dst: pdns::trace::dnsdist::Tracer::getTracer
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:251,1
    - Dst: auto::openSpan
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:253,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:254,1
    - Dst: auto::getRootSpanID
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:254,1
    - Dst: auto::openSpan
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:256,1
    - Dst: pdns::trace::getRandomSpanID
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:256,1
    - Dst: auto::openSpan
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:257,1
    - Dst: pdns::trace::getRandomSpanID
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:257,1
    - Dst: auto::makeRandom
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:259,1
    - Dst: auto::setRootSpanID
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:261,1
    - Dst: auto::getTracesData
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:262,1
    - Dst: BOOST_CHECK_NE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:264,1
    - Dst: auto::resource_spans::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:264,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:264,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:264,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 28
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 266
      start: 220
    functionDepth: 1
    functionLinenumber: 220
    functionLinenumberEnd: 266
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc
    functionUses: 0
    functionsReached:
    - auto::makeRandom
    - BOOST_CHECK_NE
    - std::to_string
    - at
    - pdns::trace::getRandomSpanID
    - auto::getTracesData
    - auto::getRootSpanID
    - BOOST_CHECK_EQUAL
    - auto::resource_spans::at
    - auto::openSpan
    - auto::setRootSpanID
    - pdns::trace::dnsdist::Tracer::getTracer
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(setRootSpanID)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::dnsdist::addTraceparentEdnsOptionToPacketBuffer
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:272,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:273,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 274
      start: 268
    functionDepth: 1
    functionLinenumber: 268
    functionLinenumberEnd: 274
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc
    functionUses: 0
    functionsReached:
    - pdns::trace::dnsdist::addTraceparentEdnsOptionToPacketBuffer
    - BOOST_CHECK
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(addTraceparentToPacketBuffer_empty)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: reinterpret_cast<const uint8_t*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:278,1
    - Dst: BOOST_ASSERT
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:281,1
    - Dst: pdns::trace::EDNSOTTraceRecordView::getVersion
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:281,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:282,1
    - Dst: BOOST_ASSERT
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:285,1
    - Dst: pdns::trace::EDNSOTTraceRecordView::getReserved
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:285,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:286,1
    - Dst: BOOST_ASSERT
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:289,1
    - Dst: pdns::trace::EDNSOTTraceRecordView::getTraceID
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:289,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:290,1
    - Dst: std::shared_ptr<pdns::trace::dnsdist::Tracer>::getTraceID
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:290,1
    - Dst: BOOST_ASSERT
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:293,1
    - Dst: pdns::trace::EDNSOTTraceRecordView::getSpanID
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:293,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:294,1
    - Dst: std::shared_ptr<pdns::trace::dnsdist::Tracer>::getLastSpanID
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:294,1
    - Dst: BOOST_ASSERT
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:297,1
    - Dst: pdns::trace::EDNSOTTraceRecordView::getFlags
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:297,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:298,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 3
    argNames:
    - ' packet'
    - tracer
    - optRDPosition
    argTypes:
    - PacketBuffer
    - std::shared_ptr<pdns::trace::dnsdist::Tracer>
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 299
      start: 276
    functionDepth: 0
    functionLinenumber: 276
    functionLinenumberEnd: 299
    functionName: checkTraceparent
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc
    functionUses: 0
    functionsReached:
    - pdns::trace::EDNSOTTraceRecordView::getReserved
    - reinterpret_cast<const uint8_t*>
    - pdns::trace::EDNSOTTraceRecordView::getSpanID
    - pdns::trace::EDNSOTTraceRecordView::getTraceID
    - BOOST_ASSERT
    - pdns::trace::EDNSOTTraceRecordView::getFlags
    - BOOST_CHECK_EQUAL
    - std::shared_ptr<pdns::trace::dnsdist::Tracer>::getLastSpanID
    - std::shared_ptr<pdns::trace::dnsdist::Tracer>::getTraceID
    - pdns::trace::EDNSOTTraceRecordView::getVersion
    linkageType: ''
    returnType: void
    signature: void checkTraceparent(const PacketBuffer& packet, const std::shared_ptr<pdns::trace::dnsdist::Tracer>
      tracer, const size_t optRDPosition)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:307,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:311,1
    - Dst: GenericDNSPacketWriter::addOpt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:319,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:321,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 324
      start: 303
    functionDepth: 1
    functionLinenumber: 303
    functionLinenumberEnd: 324
    functionName: getPacket
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc
    functionUses: 0
    functionsReached:
    - GenericDNSPacketWriter::getHeader
    - vector::push_back
    - GenericDNSPacketWriter::commit
    - GenericDNSPacketWriter::addOpt
    linkageType: ''
    returnType: PacketBuffer
    signature: PacketBuffer getPacket(bool edns = false, bool traceparentOpt = false)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getPacket
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:328,1
    - Dst: pdns::trace::dnsdist::Tracer::getTracer
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:330,1
    - Dst: auto::openSpan
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:331,1
    - Dst: pdns::trace::dnsdist::addTraceparentEdnsOptionToPacketBuffer
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:333,1
    - Dst: wirelength
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:333,1
    - Dst: dnsdist::getEDNSOptionsStart
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:337,1
    - Dst: wirelength
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:337,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:339,1
    - Dst: BOOST_CHECK_NE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:340,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:341,1
    - Dst: auto::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:344,1
    - Dst: auto::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:344,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:345,1
    - Dst: checkTraceparent
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:347,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 348
      start: 326
    functionDepth: 2
    functionLinenumber: 326
    functionLinenumberEnd: 348
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc
    functionUses: 0
    functionsReached:
    - BOOST_CHECK_NE
    - wirelength
    - checkTraceparent
    - BOOST_CHECK_EQUAL
    - getPacket
    - auto::openSpan
    - auto::at
    - pdns::trace::dnsdist::addTraceparentEdnsOptionToPacketBuffer
    - dnsdist::getEDNSOptionsStart
    - pdns::trace::dnsdist::Tracer::getTracer
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(addTraceparentToPacketBuffer_udp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getPacket
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:352,1
    - Dst: pdns::trace::dnsdist::Tracer::getTracer
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:354,1
    - Dst: auto::openSpan
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:355,1
    - Dst: auto::insert
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:360,1
    - Dst: auto::begin
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:360,1
    - Dst: std::array::begin
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:360,1
    - Dst: std::array::end
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:360,1
    - Dst: pdns::trace::dnsdist::addTraceparentEdnsOptionToPacketBuffer
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:362,1
    - Dst: wirelength
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:362,1
    - Dst: std::copy_n
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:366,1
    - Dst: auto::begin
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:366,1
    - Dst: std::array::begin
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:366,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:367,1
    - Dst: auto::begin
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:370,1
    - Dst: auto::end
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:370,1
    - Dst: dnsdist::getEDNSOptionsStart
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:374,1
    - Dst: wirelength
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:374,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:376,1
    - Dst: BOOST_CHECK_NE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:377,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:378,1
    - Dst: PacketBuffer::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:381,1
    - Dst: PacketBuffer::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:381,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:382,1
    - Dst: checkTraceparent
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:384,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 385
      start: 350
    functionDepth: 2
    functionLinenumber: 350
    functionLinenumberEnd: 385
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc
    functionUses: 0
    functionsReached:
    - BOOST_CHECK_NE
    - std::copy_n
    - wirelength
    - checkTraceparent
    - auto::end
    - PacketBuffer::at
    - std::array::end
    - BOOST_CHECK_EQUAL
    - getPacket
    - auto::openSpan
    - auto::begin
    - auto::insert
    - std::array::begin
    - pdns::trace::dnsdist::addTraceparentEdnsOptionToPacketBuffer
    - BOOST_CHECK
    - dnsdist::getEDNSOptionsStart
    - pdns::trace::dnsdist::Tracer::getTracer
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(addTraceparentToPacketBuffer_udp_proxy)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getPacket
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:389,1
    - Dst: pdns::trace::dnsdist::Tracer::getTracer
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:391,1
    - Dst: auto::openSpan
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:392,1
    - Dst: pdns::trace::dnsdist::addTraceparentEdnsOptionToPacketBuffer
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:394,1
    - Dst: wirelength
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:394,1
    - Dst: dnsdist::getEDNSOptionsStart
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:398,1
    - Dst: wirelength
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:398,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:400,1
    - Dst: BOOST_CHECK_NE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:401,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:402,1
    - Dst: auto::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:405,1
    - Dst: auto::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:405,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:406,1
    - Dst: checkTraceparent
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:408,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 409
      start: 387
    functionDepth: 2
    functionLinenumber: 387
    functionLinenumberEnd: 409
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc
    functionUses: 0
    functionsReached:
    - BOOST_CHECK_NE
    - wirelength
    - checkTraceparent
    - BOOST_CHECK_EQUAL
    - getPacket
    - auto::openSpan
    - auto::at
    - pdns::trace::dnsdist::addTraceparentEdnsOptionToPacketBuffer
    - dnsdist::getEDNSOptionsStart
    - pdns::trace::dnsdist::Tracer::getTracer
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(addTraceparentToPacketBuffer_udp_edns)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getPacket
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:413,1
    - Dst: pdns::trace::dnsdist::Tracer::getTracer
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:415,1
    - Dst: auto::openSpan
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:416,1
    - Dst: pdns::trace::dnsdist::addTraceparentEdnsOptionToPacketBuffer
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:418,1
    - Dst: wirelength
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:418,1
    - Dst: dnsdist::getEDNSOptionsStart
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:422,1
    - Dst: wirelength
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:422,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:424,1
    - Dst: BOOST_CHECK_NE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:425,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:427,1
    - Dst: auto::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:430,1
    - Dst: auto::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:430,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:431,1
    - Dst: checkTraceparent
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:434,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 435
      start: 411
    functionDepth: 2
    functionLinenumber: 411
    functionLinenumberEnd: 435
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc
    functionUses: 0
    functionsReached:
    - BOOST_CHECK_NE
    - wirelength
    - checkTraceparent
    - BOOST_CHECK_EQUAL
    - getPacket
    - auto::openSpan
    - auto::at
    - pdns::trace::dnsdist::addTraceparentEdnsOptionToPacketBuffer
    - dnsdist::getEDNSOptionsStart
    - pdns::trace::dnsdist::Tracer::getTracer
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(addTraceparentToPacketBuffer_udp_edns_traceparent)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getPacket
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:439,1
    - Dst: pdns::trace::dnsdist::Tracer::getTracer
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:441,1
    - Dst: auto::openSpan
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:442,1
    - Dst: auto::insert
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:447,1
    - Dst: auto::begin
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:447,1
    - Dst: std::array::begin
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:447,1
    - Dst: std::array::end
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:447,1
    - Dst: pdns::trace::dnsdist::addTraceparentEdnsOptionToPacketBuffer
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:449,1
    - Dst: wirelength
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:449,1
    - Dst: std::copy_n
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:453,1
    - Dst: auto::begin
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:453,1
    - Dst: std::array::begin
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:453,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:454,1
    - Dst: auto::begin
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:457,1
    - Dst: auto::end
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:457,1
    - Dst: dnsdist::getEDNSOptionsStart
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:461,1
    - Dst: wirelength
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:461,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:463,1
    - Dst: BOOST_CHECK_NE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:464,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:465,1
    - Dst: PacketBuffer::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:468,1
    - Dst: PacketBuffer::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:468,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:469,1
    - Dst: checkTraceparent
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:471,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 472
      start: 437
    functionDepth: 2
    functionLinenumber: 437
    functionLinenumberEnd: 472
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc
    functionUses: 0
    functionsReached:
    - BOOST_CHECK_NE
    - std::copy_n
    - wirelength
    - checkTraceparent
    - auto::end
    - PacketBuffer::at
    - std::array::end
    - BOOST_CHECK_EQUAL
    - getPacket
    - auto::openSpan
    - auto::begin
    - auto::insert
    - std::array::begin
    - pdns::trace::dnsdist::addTraceparentEdnsOptionToPacketBuffer
    - BOOST_CHECK
    - dnsdist::getEDNSOptionsStart
    - pdns::trace::dnsdist::Tracer::getTracer
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(addTraceparentToPacketBuffer_udp_edns_proxy)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getPacket
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:476,1
    - Dst: pdns::trace::dnsdist::Tracer::getTracer
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:478,1
    - Dst: auto::openSpan
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:479,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:481,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:481,1
    - Dst: auto::insert
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:482,1
    - Dst: auto::begin
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:482,1
    - Dst: std::array::begin
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:482,1
    - Dst: std::array::end
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:482,1
    - Dst: pdns::trace::dnsdist::addTraceparentEdnsOptionToPacketBuffer
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:484,1
    - Dst: wirelength
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:484,1
    - Dst: auto::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:487,1
    - Dst: auto::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:487,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:488,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:488,1
    - Dst: auto::begin
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:490,1
    - Dst: auto::end
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:490,1
    - Dst: dnsdist::getEDNSOptionsStart
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:494,1
    - Dst: wirelength
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:494,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:496,1
    - Dst: BOOST_CHECK_NE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:497,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:498,1
    - Dst: PacketBuffer::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:501,1
    - Dst: PacketBuffer::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:501,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:503,1
    - Dst: checkTraceparent
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:505,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 506
      start: 474
    functionDepth: 2
    functionLinenumber: 474
    functionLinenumberEnd: 506
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc
    functionUses: 0
    functionsReached:
    - BOOST_CHECK_NE
    - wirelength
    - checkTraceparent
    - auto::end
    - PacketBuffer::at
    - std::array::end
    - BOOST_CHECK_EQUAL
    - getPacket
    - auto::openSpan
    - auto::begin
    - auto::at
    - auto::insert
    - std::array::begin
    - pdns::trace::dnsdist::addTraceparentEdnsOptionToPacketBuffer
    - dnsdist::getEDNSOptionsStart
    - pdns::trace::dnsdist::Tracer::getTracer
    - auto::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(addTraceparentToPacketBuffer_tcp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getPacket
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:510,1
    - Dst: pdns::trace::dnsdist::Tracer::getTracer
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:512,1
    - Dst: auto::openSpan
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:513,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:515,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:515,1
    - Dst: auto::insert
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:516,1
    - Dst: auto::begin
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:516,1
    - Dst: std::array::begin
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:516,1
    - Dst: std::array::end
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:516,1
    - Dst: auto::insert
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:521,1
    - Dst: auto::begin
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:521,1
    - Dst: std::array::begin
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:521,1
    - Dst: std::array::end
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:521,1
    - Dst: pdns::trace::dnsdist::addTraceparentEdnsOptionToPacketBuffer
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:523,1
    - Dst: wirelength
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:523,1
    - Dst: std::copy_n
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:527,1
    - Dst: auto::begin
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:527,1
    - Dst: std::array::begin
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:527,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:528,1
    - Dst: auto::begin
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:531,1
    - Dst: auto::end
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:531,1
    - Dst: PacketBuffer::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:534,1
    - Dst: PacketBuffer::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:534,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:535,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:535,1
    - Dst: PacketBuffer::begin
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:538,1
    - Dst: PacketBuffer::end
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:538,1
    - Dst: dnsdist::getEDNSOptionsStart
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:542,1
    - Dst: wirelength
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:542,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:544,1
    - Dst: BOOST_CHECK_NE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:545,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:546,1
    - Dst: PacketBuffer::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:549,1
    - Dst: PacketBuffer::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:549,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:551,1
    - Dst: checkTraceparent
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:553,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 554
      start: 508
    functionDepth: 2
    functionLinenumber: 508
    functionLinenumberEnd: 554
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc
    functionUses: 0
    functionsReached:
    - PacketBuffer::end
    - wirelength
    - PacketBuffer::at
    - PacketBuffer::size
    - auto::begin
    - pdns::trace::dnsdist::addTraceparentEdnsOptionToPacketBuffer
    - auto::size
    - PacketBuffer::begin
    - std::copy_n
    - getPacket
    - std::array::begin
    - BOOST_CHECK_NE
    - checkTraceparent
    - auto::openSpan
    - auto::insert
    - pdns::trace::dnsdist::Tracer::getTracer
    - std::array::end
    - BOOST_CHECK_EQUAL
    - auto::end
    - BOOST_CHECK
    - dnsdist::getEDNSOptionsStart
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(addTraceparentToPacketBuffer_tcp_proxy)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getPacket
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:558,1
    - Dst: pdns::trace::dnsdist::Tracer::getTracer
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:560,1
    - Dst: auto::openSpan
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:561,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:563,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:563,1
    - Dst: auto::insert
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:564,1
    - Dst: auto::begin
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:564,1
    - Dst: std::array::begin
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:564,1
    - Dst: std::array::end
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:564,1
    - Dst: pdns::trace::dnsdist::addTraceparentEdnsOptionToPacketBuffer
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:566,1
    - Dst: wirelength
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:566,1
    - Dst: auto::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:569,1
    - Dst: auto::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:569,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:570,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:570,1
    - Dst: auto::begin
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:572,1
    - Dst: auto::end
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:572,1
    - Dst: dnsdist::getEDNSOptionsStart
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:576,1
    - Dst: wirelength
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:576,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:578,1
    - Dst: BOOST_CHECK_NE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:579,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:580,1
    - Dst: PacketBuffer::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:583,1
    - Dst: PacketBuffer::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:583,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:584,1
    - Dst: checkTraceparent
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:586,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 587
      start: 556
    functionDepth: 2
    functionLinenumber: 556
    functionLinenumberEnd: 587
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc
    functionUses: 0
    functionsReached:
    - BOOST_CHECK_NE
    - wirelength
    - checkTraceparent
    - auto::end
    - PacketBuffer::at
    - std::array::end
    - BOOST_CHECK_EQUAL
    - getPacket
    - auto::openSpan
    - auto::begin
    - auto::at
    - auto::insert
    - std::array::begin
    - pdns::trace::dnsdist::addTraceparentEdnsOptionToPacketBuffer
    - dnsdist::getEDNSOptionsStart
    - pdns::trace::dnsdist::Tracer::getTracer
    - auto::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(addTraceparentToPacketBuffer_tcp_edns)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getPacket
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:591,1
    - Dst: pdns::trace::dnsdist::Tracer::getTracer
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:593,1
    - Dst: auto::openSpan
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:594,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:596,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:596,1
    - Dst: auto::insert
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:597,1
    - Dst: auto::begin
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:597,1
    - Dst: std::array::begin
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:597,1
    - Dst: std::array::end
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:597,1
    - Dst: auto::insert
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:602,1
    - Dst: auto::begin
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:602,1
    - Dst: std::array::begin
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:602,1
    - Dst: std::array::end
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:602,1
    - Dst: pdns::trace::dnsdist::addTraceparentEdnsOptionToPacketBuffer
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:604,1
    - Dst: wirelength
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:604,1
    - Dst: std::copy_n
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:608,1
    - Dst: auto::begin
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:608,1
    - Dst: std::array::begin
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:608,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:609,1
    - Dst: auto::begin
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:612,1
    - Dst: auto::end
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:612,1
    - Dst: PacketBuffer::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:615,1
    - Dst: PacketBuffer::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:615,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:616,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:616,1
    - Dst: PacketBuffer::begin
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:618,1
    - Dst: PacketBuffer::end
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:618,1
    - Dst: dnsdist::getEDNSOptionsStart
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:622,1
    - Dst: wirelength
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:622,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:624,1
    - Dst: BOOST_CHECK_NE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:625,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:626,1
    - Dst: PacketBuffer::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:629,1
    - Dst: PacketBuffer::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:629,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:630,1
    - Dst: checkTraceparent
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc:632,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 633
      start: 589
    functionDepth: 2
    functionLinenumber: 589
    functionLinenumberEnd: 633
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc
    functionUses: 0
    functionsReached:
    - PacketBuffer::end
    - wirelength
    - PacketBuffer::at
    - PacketBuffer::size
    - auto::begin
    - pdns::trace::dnsdist::addTraceparentEdnsOptionToPacketBuffer
    - auto::size
    - PacketBuffer::begin
    - std::copy_n
    - getPacket
    - std::array::begin
    - BOOST_CHECK_NE
    - checkTraceparent
    - auto::openSpan
    - auto::insert
    - pdns::trace::dnsdist::Tracer::getTracer
    - std::array::end
    - BOOST_CHECK_EQUAL
    - auto::end
    - BOOST_CHECK
    - dnsdist::getEDNSOptionsStart
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(addTraceparentToPacketBuffer_tcp_edns_proxy)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ipcrypt2::IPCrypt2::IPCrypt2
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-ipcrypt2_cc.cc:42,1
    - Dst: auto::encrypt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-ipcrypt2_cc.cc:44,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-ipcrypt2_cc.cc:44,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-ipcrypt2_cc.cc:45,1
    - Dst: auto::isIPv4
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-ipcrypt2_cc.cc:45,1
    - Dst: BOOST_CHECK_NE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-ipcrypt2_cc.cc:46,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-ipcrypt2_cc.cc:46,1
    - Dst: auto::toLogString
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-ipcrypt2_cc.cc:46,1
    - Dst: auto::encrypt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-ipcrypt2_cc.cc:48,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-ipcrypt2_cc.cc:48,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-ipcrypt2_cc.cc:49,1
    - Dst: auto::isIPv6
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-ipcrypt2_cc.cc:49,1
    - Dst: BOOST_CHECK_NE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-ipcrypt2_cc.cc:50,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-ipcrypt2_cc.cc:50,1
    - Dst: auto::toLogString
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-ipcrypt2_cc.cc:50,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 40
    functionDepth: 0
    functionLinenumber: 40
    functionLinenumberEnd: 51
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdist-ipcrypt2_cc.cc
    functionUses: 0
    functionsReached:
    - BOOST_CHECK_NE
    - auto::encrypt
    - pdns::ipcrypt2::IPCrypt2::IPCrypt2
    - auto::isIPv4
    - auto::isIPv6
    - BOOST_CHECK
    - auto::toLogString
    - ComboAddress
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(pfx_success)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ipcrypt2::IPCrypt2::IPCrypt2
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-ipcrypt2_cc.cc:56,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 53
    functionDepth: 0
    functionLinenumber: 53
    functionLinenumberEnd: 57
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdist-ipcrypt2_cc.cc
    functionUses: 0
    functionsReached:
    - pdns::ipcrypt2::IPCrypt2::IPCrypt2
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(pfx_bad_key)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ipcrypt2::IPCrypt2::IPCrypt2
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-ipcrypt2_cc.cc:61,1
    - Dst: auto::encrypt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-ipcrypt2_cc.cc:63,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-ipcrypt2_cc.cc:63,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-ipcrypt2_cc.cc:64,1
    - Dst: auto::isIPv4
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-ipcrypt2_cc.cc:64,1
    - Dst: auto::encrypt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-ipcrypt2_cc.cc:65,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-ipcrypt2_cc.cc:65,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-ipcrypt2_cc.cc:66,1
    - Dst: auto::isIPv4
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-ipcrypt2_cc.cc:66,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-ipcrypt2_cc.cc:68,1
    - Dst: Netmask
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-ipcrypt2_cc.cc:70,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-ipcrypt2_cc.cc:71,1
    - Dst: auto::match
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-ipcrypt2_cc.cc:71,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-ipcrypt2_cc.cc:72,1
    - Dst: auto::match
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-ipcrypt2_cc.cc:72,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 59
    functionDepth: 0
    functionLinenumber: 59
    functionLinenumberEnd: 73
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdist-ipcrypt2_cc.cc
    functionUses: 0
    functionsReached:
    - Netmask
    - auto::encrypt
    - pdns::ipcrypt2::IPCrypt2::IPCrypt2
    - auto::isIPv4
    - auto::match
    - BOOST_CHECK
    - ComboAddress
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(pfx_preserves)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::make_optional
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-ipcrypt2_cc.cc:78,1
    - Dst: pdns::ipcrypt2::IPCrypt2::IPCrypt2
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-ipcrypt2_cc.cc:78,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-ipcrypt2_cc.cc:80,1
    - Dst: std::optional::has_value
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-ipcrypt2_cc.cc:80,1
    - Dst: std::optional::encrypt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-ipcrypt2_cc.cc:82,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-ipcrypt2_cc.cc:82,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-ipcrypt2_cc.cc:83,1
    - Dst: auto::isIPv4
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-ipcrypt2_cc.cc:83,1
    - Dst: BOOST_CHECK_NE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-ipcrypt2_cc.cc:84,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-ipcrypt2_cc.cc:84,1
    - Dst: auto::toLogString
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-ipcrypt2_cc.cc:84,1
    - Dst: std::optional::encrypt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-ipcrypt2_cc.cc:86,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-ipcrypt2_cc.cc:86,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-ipcrypt2_cc.cc:87,1
    - Dst: auto::isIPv6
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-ipcrypt2_cc.cc:87,1
    - Dst: BOOST_CHECK_NE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-ipcrypt2_cc.cc:88,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-ipcrypt2_cc.cc:88,1
    - Dst: auto::toLogString
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-ipcrypt2_cc.cc:88,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 75
    functionDepth: 0
    functionLinenumber: 75
    functionLinenumberEnd: 89
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdist-ipcrypt2_cc.cc
    functionUses: 0
    functionsReached:
    - BOOST_CHECK_NE
    - BOOST_CHECK
    - pdns::ipcrypt2::IPCrypt2::IPCrypt2
    - auto::isIPv4
    - auto::isIPv6
    - std::optional::has_value
    - std::make_optional
    - std::optional::encrypt
    - auto::toLogString
    - ComboAddress
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(assignment)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ipcrypt2::IPCrypt2::IPCrypt2
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-ipcrypt2_cc.cc:94,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 91
    functionDepth: 0
    functionLinenumber: 91
    functionLinenumberEnd: 95
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdist-ipcrypt2_cc.cc
    functionUses: 0
    functionsReached:
    - pdns::ipcrypt2::IPCrypt2::IPCrypt2
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(unsupported_method)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-connectionmanagement_hh.cc:20,1
    - Dst: ConcurrentConnectionManager::registerConnection
      Src: /src/pdns/pdns/dnsdistdist/test-connectionmanagement_hh.cc:20,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-connectionmanagement_hh.cc:24,1
    - Dst: ConcurrentConnectionManager::registerConnection
      Src: /src/pdns/pdns/dnsdistdist/test-connectionmanagement_hh.cc:24,1
    - Dst: ConcurrentConnectionManager::releaseConnection
      Src: /src/pdns/pdns/dnsdistdist/test-connectionmanagement_hh.cc:26,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-connectionmanagement_hh.cc:28,1
    - Dst: ConcurrentConnectionManager::registerConnection
      Src: /src/pdns/pdns/dnsdistdist/test-connectionmanagement_hh.cc:28,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-connectionmanagement_hh.cc:30,1
    - Dst: ConcurrentConnectionManager::registerConnection
      Src: /src/pdns/pdns/dnsdistdist/test-connectionmanagement_hh.cc:30,1
    - Dst: ConcurrentConnectionManager::setMaxConcurrentConnections
      Src: /src/pdns/pdns/dnsdistdist/test-connectionmanagement_hh.cc:34,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-connectionmanagement_hh.cc:35,1
    - Dst: ConcurrentConnectionManager::getMaxConcurrentConnections
      Src: /src/pdns/pdns/dnsdistdist/test-connectionmanagement_hh.cc:35,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-connectionmanagement_hh.cc:36,1
    - Dst: ConcurrentConnectionManager::registerConnection
      Src: /src/pdns/pdns/dnsdistdist/test-connectionmanagement_hh.cc:36,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-connectionmanagement_hh.cc:37,1
    - Dst: ConcurrentConnectionManager::registerConnection
      Src: /src/pdns/pdns/dnsdistdist/test-connectionmanagement_hh.cc:37,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-connectionmanagement_hh.cc:38,1
    - Dst: ConcurrentConnectionManager::registerConnection
      Src: /src/pdns/pdns/dnsdistdist/test-connectionmanagement_hh.cc:38,1
    - Dst: ConcurrentConnectionManager::releaseConnection
      Src: /src/pdns/pdns/dnsdistdist/test-connectionmanagement_hh.cc:42,1
    - Dst: ConcurrentConnectionManager::setMaxConcurrentConnections
      Src: /src/pdns/pdns/dnsdistdist/test-connectionmanagement_hh.cc:47,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-connectionmanagement_hh.cc:48,1
    - Dst: ConcurrentConnectionManager::registerConnection
      Src: /src/pdns/pdns/dnsdistdist/test-connectionmanagement_hh.cc:48,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-connectionmanagement_hh.cc:49,1
    - Dst: ConcurrentConnectionManager::registerConnection
      Src: /src/pdns/pdns/dnsdistdist/test-connectionmanagement_hh.cc:49,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-connectionmanagement_hh.cc:50,1
    - Dst: ConcurrentConnectionManager::registerConnection
      Src: /src/pdns/pdns/dnsdistdist/test-connectionmanagement_hh.cc:50,1
    - Dst: ConcurrentConnectionManager::setMaxConcurrentConnections
      Src: /src/pdns/pdns/dnsdistdist/test-connectionmanagement_hh.cc:54,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-connectionmanagement_hh.cc:56,1
    - Dst: ConcurrentConnectionManager::registerConnection
      Src: /src/pdns/pdns/dnsdistdist/test-connectionmanagement_hh.cc:56,1
    - Dst: ConcurrentConnectionManager::releaseConnection
      Src: /src/pdns/pdns/dnsdistdist/test-connectionmanagement_hh.cc:58,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-connectionmanagement_hh.cc:61,1
    - Dst: ConcurrentConnectionManager::registerConnection
      Src: /src/pdns/pdns/dnsdistdist/test-connectionmanagement_hh.cc:61,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-connectionmanagement_hh.cc:62,1
    - Dst: ConcurrentConnectionManager::registerConnection
      Src: /src/pdns/pdns/dnsdistdist/test-connectionmanagement_hh.cc:62,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 30
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 13
    functionDepth: 0
    functionLinenumber: 13
    functionLinenumberEnd: 63
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-connectionmanagement_hh.cc
    functionUses: 0
    functionsReached:
    - ConcurrentConnectionManager::setMaxConcurrentConnections
    - ConcurrentConnectionManager::releaseConnection
    - ConcurrentConnectionManager::getMaxConcurrentConnections
    - ConcurrentConnectionManager::registerConnection
    - BOOST_CHECK_EQUAL
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_ConnectionManagementEnabled)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-connectionmanagement_hh.cc:72,1
    - Dst: ConcurrentConnectionManager::registerConnection
      Src: /src/pdns/pdns/dnsdistdist/test-connectionmanagement_hh.cc:72,1
    - Dst: ConcurrentConnectionManager::setMaxConcurrentConnections
      Src: /src/pdns/pdns/dnsdistdist/test-connectionmanagement_hh.cc:77,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-connectionmanagement_hh.cc:79,1
    - Dst: ConcurrentConnectionManager::registerConnection
      Src: /src/pdns/pdns/dnsdistdist/test-connectionmanagement_hh.cc:79,1
    - Dst: ConcurrentConnectionManager::releaseConnection
      Src: /src/pdns/pdns/dnsdistdist/test-connectionmanagement_hh.cc:83,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-connectionmanagement_hh.cc:88,1
    - Dst: ConcurrentConnectionManager::registerConnection
      Src: /src/pdns/pdns/dnsdistdist/test-connectionmanagement_hh.cc:88,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-connectionmanagement_hh.cc:91,1
    - Dst: ConcurrentConnectionManager::registerConnection
      Src: /src/pdns/pdns/dnsdistdist/test-connectionmanagement_hh.cc:91,1
    - Dst: ConcurrentConnectionManager::releaseConnection
      Src: /src/pdns/pdns/dnsdistdist/test-connectionmanagement_hh.cc:93,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-connectionmanagement_hh.cc:95,1
    - Dst: ConcurrentConnectionManager::registerConnection
      Src: /src/pdns/pdns/dnsdistdist/test-connectionmanagement_hh.cc:95,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 65
    functionDepth: 0
    functionLinenumber: 65
    functionLinenumberEnd: 96
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-connectionmanagement_hh.cc
    functionUses: 0
    functionsReached:
    - ConcurrentConnectionManager::releaseConnection
    - ConcurrentConnectionManager::registerConnection
    - ConcurrentConnectionManager::setMaxConcurrentConnections
    - BOOST_CHECK_EQUAL
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_ConnectionManagementDisabledThenEnabled)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 36
      start: 36
    functionDepth: 0
    functionLinenumber: 36
    functionLinenumberEnd: 36
    functionName: dnsdist::crypto::authenticated::Nonce
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Nonce()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 37
    functionDepth: 0
    functionLinenumber: 37
    functionLinenumberEnd: 37
    functionName: dnsdist::crypto::authenticated::Nonce
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Nonce(const Nonce&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 38
    functionDepth: 0
    functionLinenumber: 38
    functionLinenumberEnd: 38
    functionName: dnsdist::crypto::authenticated::Nonce
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Nonce(Nonce&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 39
      start: 39
    functionDepth: 0
    functionLinenumber: 39
    functionLinenumberEnd: 39
    functionName: '& operator=(const Nonce&)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Nonce
    signature: Nonce & operator=(const Nonce&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 40
    functionDepth: 0
    functionLinenumber: 40
    functionLinenumberEnd: 40
    functionName: '& operator=(Nonce&&)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Nonce
    signature: Nonce & operator=(Nonce&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 41
    functionDepth: 0
    functionLinenumber: 41
    functionLinenumberEnd: 41
    functionName: ~Nonce()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~Nonce()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - plainTextSize
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 62
    functionDepth: 0
    functionLinenumber: 62
    functionLinenumberEnd: 71
    functionName: dnsdist::crypto::authenticated::getEncryptedSize
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: size_t getEncryptedSize(size_t plainTextSize)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 36
      start: 36
    functionDepth: 0
    functionLinenumber: 36
    functionLinenumberEnd: 36
    functionName: dnsdist::crypto::authenticated::Nonce
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Nonce()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 37
    functionDepth: 0
    functionLinenumber: 37
    functionLinenumberEnd: 37
    functionName: dnsdist::crypto::authenticated::Nonce
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Nonce(const Nonce&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 38
    functionDepth: 0
    functionLinenumber: 38
    functionLinenumberEnd: 38
    functionName: dnsdist::crypto::authenticated::Nonce
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Nonce(Nonce&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 39
      start: 39
    functionDepth: 0
    functionLinenumber: 39
    functionLinenumberEnd: 39
    functionName: '& operator=(const Nonce&)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Nonce
    signature: Nonce & operator=(const Nonce&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 40
    functionDepth: 0
    functionLinenumber: 40
    functionLinenumberEnd: 40
    functionName: '& operator=(Nonce&&)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Nonce
    signature: Nonce & operator=(Nonce&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 41
    functionDepth: 0
    functionLinenumber: 41
    functionLinenumberEnd: 41
    functionName: ~Nonce()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~Nonce()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - plainTextSize
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 62
    functionDepth: 0
    functionLinenumber: 62
    functionLinenumberEnd: 71
    functionName: dnsdist::crypto::authenticated::getEncryptedSize
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: size_t getEncryptedSize(size_t plainTextSize)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.hh:77,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.hh:84,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.hh:84,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.hh:84,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.hh:85,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.hh:85,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.hh:85,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - ' code'
    - ' context'
    argTypes:
    - std::string
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 74
    functionDepth: 1
    functionLinenumber: 74
    functionLinenumberEnd: 89
    functionName: dnsdist::lua::getFunctionFromLuaCode
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua.hh
    functionUses: 0
    functionsReached:
    - SLOG
    - Logging::Loggable
    - what
    - warnlog
    - lock
    - dnsdist::logging::getTopLogger
    linkageType: ''
    returnType: std::optional<FunctionType>
    signature: std::optional<FunctionType> getFunctionFromLuaCode(const std::string&
      code, const std::string& context)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.hh:94,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - name
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 93
    functionDepth: 0
    functionLinenumber: 93
    functionLinenumberEnd: 96
    functionName: dnsdist::lua::LuaServerPoolObject
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua.hh
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void LuaServerPoolObject(std::string name)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.hh:77,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.hh:84,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.hh:84,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.hh:84,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.hh:85,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.hh:85,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.hh:85,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - ' code'
    - ' context'
    argTypes:
    - std::string
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 74
    functionDepth: 1
    functionLinenumber: 74
    functionLinenumberEnd: 89
    functionName: dnsdist::lua::getFunctionFromLuaCode
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua.hh
    functionUses: 0
    functionsReached:
    - SLOG
    - Logging::Loggable
    - what
    - warnlog
    - lock
    - dnsdist::logging::getTopLogger
    linkageType: ''
    returnType: std::optional<FunctionType>
    signature: std::optional<FunctionType> getFunctionFromLuaCode(const std::string&
      code, const std::string& context)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.hh:94,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - name
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 93
    functionDepth: 0
    functionLinenumber: 93
    functionLinenumberEnd: 96
    functionName: dnsdist::lua::LuaServerPoolObject
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua.hh
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void LuaServerPoolObject(std::string name)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: count
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.hh:123,1
    - Dst: boost::get<G>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.hh:125,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.hh:130,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.hh:130,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.hh:131,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.hh:131,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.hh:131,1
    - Dst: erase
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.hh:132,1
    - Dst: erase
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.hh:137,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 3
    argNames:
    - ' vars'
    - ' key'
    - ' value'
    argTypes:
    - std::optional<V>
    - std::string
    - T
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 138
      start: 116
    functionDepth: 1
    functionLinenumber: 116
    functionLinenumberEnd: 138
    functionName: getOptionalValue
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua.hh
    functionUses: 1
    functionsReached:
    - boost::get<G>
    - SLOG
    - count
    - Logging::Loggable
    - warnlog
    - dnsdist::logging::getTopLogger
    - erase
    linkageType: ''
    returnType: int
    signature: int getOptionalValue(std::optional<V>& vars, const std::string& key,
      T& value, bool warnOnWrongType = true)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.hh:144,1
    - Dst: std::stoi
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.hh:147,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.hh:150,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.hh:150,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.hh:151,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.hh:151,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.hh:151,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 4
    argNames:
    - ' func'
    - ' vars'
    - ' key'
    - ' value'
    argTypes:
    - std::string
    - std::optional<V>
    - std::string
    - T
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 156
      start: 141
    functionDepth: 2
    functionLinenumber: 141
    functionLinenumberEnd: 156
    functionName: getOptionalIntegerValue
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua.hh
    functionUses: 0
    functionsReached:
    - SLOG
    - Logging::Loggable
    - warnlog
    - getOptionalValue
    - dnsdist::logging::getTopLogger
    - std::stoi
    linkageType: ''
    returnType: int
    signature: int getOptionalIntegerValue(const std::string& func, std::optional<V>&
      vars, const std::string& key, T& value)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.hh:166,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.hh:166,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.hh:167,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.hh:167,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.hh:167,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - ' func'
    - ' vars'
    argTypes:
    - std::string
    - std::optional<V>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 169
      start: 159
    functionDepth: 1
    functionLinenumber: 159
    functionLinenumberEnd: 169
    functionName: checkAllParametersConsumed
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua.hh
    functionUses: 1
    functionsReached:
    - SLOG
    - warnlog
    - dnsdist::logging::getTopLogger
    - Logging::Loggable
    linkageType: ''
    returnType: void
    signature: void checkAllParametersConsumed(const std::string& func, const std::optional<V>&
      vars)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: gettimeofday
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:20,1
    - Dst: isTLS
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:22,1
    - Dst: hasTLSSessionBeenResumed
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:23,1
    - Dst: getTLSSessions
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:27,1
    - Dst: auto::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:28,1
    - Dst: putSessions
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:29,1
    - Dst: getID
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:29,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:29,1
    - Dst: updateTCPMetrics
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:38,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 15
    functionDepth: 1
    functionLinenumber: 15
    functionLinenumberEnd: 40
    functionName: ConnectionToBackend::~ConnectionToBackend()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc
    functionUses: 0
    functionsReached:
    - hasTLSSessionBeenResumed
    - std::move
    - updateTCPMetrics
    - getTLSSessions
    - isTLS
    - gettimeofday
    - getID
    - putSessions
    - auto::empty
    linkageType: ''
    returnType: void
    signature: void ConnectionToBackend::~ConnectionToBackend()
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: DEBUGLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:46,1
    - Dst: getDescriptor
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:46,1
    - Dst: isTLS
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:47,1
    - Dst: hasTLSSessionBeenResumed
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:48,1
    - Dst: getTLSSessions
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:52,1
    - Dst: auto::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:53,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:54,1
    - Dst: auto::back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:54,1
    - Dst: auto::pop_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:55,1
    - Dst: auto::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:56,1
    - Dst: putSessions
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:57,1
    - Dst: getID
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:57,1
    - Dst: time
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:57,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:57,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:62,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:62,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:62,1
    - Dst: ConnectionToBackend::getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:63,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:63,1
    - Dst: close
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:66,1
    - Dst: reset
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:67,1
    - Dst: reset
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:68,1
    - Dst: DEBUGLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:77,1
    - Dst: getNameWithAddr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:77,1
    - Dst: DEBUGLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:78,1
    - Dst: getNameWithAddr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:78,1
    - Dst: Socket
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:81,1
    - Dst: DEBUGLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:82,1
    - Dst: auto::getHandle
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:82,1
    - Dst: setTCPNoDelay
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:88,1
    - Dst: auto::getHandle
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:88,1
    - Dst: setDscp
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:89,1
    - Dst: auto::getHandle
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:89,1
    - Dst: d_config::sourceItfName::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:92,1
    - Dst: setsockopt
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:93,1
    - Dst: auto::getHandle
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:93,1
    - Dst: d_config::sourceItfName::c_str
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:93,1
    - Dst: d_config::sourceItfName::length
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:93,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:96,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:96,1
    - Dst: getNameWithAddr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:96,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:96,1
    - Dst: ConnectionToBackend::getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:97,1
    - Dst: IsAnyAddress
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:102,1
    - Dst: SSetsockopt
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:103,1
    - Dst: auto::getHandle
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:103,1
    - Dst: SSetsockopt
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:106,1
    - Dst: auto::getHandle
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:106,1
    - Dst: auto::bind
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:109,1
    - Dst: auto::setNonBlocking
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:111,1
    - Dst: gettimeofday
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:113,1
    - Dst: std::make_unique<TCPIOHandler>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:114,1
    - Dst: auto::releaseHandle
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:114,1
    - Dst: getSession
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:116,1
    - Dst: getID
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:116,1
    - Dst: auto::setTLSSession
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:119,1
    - Dst: auto::tryConnect
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:121,1
    - Dst: ConnectionToBackend::isFastOpenEnabled
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:121,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:124,1
    - Dst: incCurrentConnectionsCount
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:125,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:129,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:129,1
    - Dst: getNameWithAddr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:129,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:129,1
    - Dst: ConnectionToBackend::getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:130,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:130,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 69
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 139
      start: 42
    functionDepth: 1
    functionLinenumber: 42
    functionLinenumberEnd: 139
    functionName: ConnectionToBackend::reconnect
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc
    functionUses: 1
    functionsReached:
    - hasTLSSessionBeenResumed
    - DEBUGLOG
    - stringerror
    - incCurrentConnectionsCount
    - getDescriptor
    - gettimeofday
    - IsAnyAddress
    - putSessions
    - d_config::sourceItfName::length
    - reset
    - auto::getHandle
    - time
    - setsockopt
    - getNameWithAddr
    - setDscp
    - auto::setTLSSession
    - auto::tryConnect
    - auto::releaseHandle
    - ConnectionToBackend::getLogger
    - VERBOSESLOG
    - getTLSSessions
    - d_config::sourceItfName::c_str
    - getSession
    - std::move
    - auto::pop_back
    - setTCPNoDelay
    - what
    - d_config::sourceItfName::empty
    - auto::back
    - auto::bind
    - infolog
    - std::make_unique<TCPIOHandler>
    - Socket
    - isTLS
    - auto::setNonBlocking
    - SSetsockopt
    - getID
    - ConnectionToBackend::isFastOpenEnabled
    - close
    - auto::empty
    linkageType: ''
    returnType: bool
    signature: bool ConnectionToBackend::reconnect()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:143,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:144,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 146
      start: 141
    functionDepth: 0
    functionLinenumber: 141
    functionLinenumberEnd: 146
    functionName: TCPConnectionToBackend::~TCPConnectionToBackend()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc
    functionUses: 0
    functionsReached:
    - empty
    - size
    linkageType: ''
    returnType: void
    signature: void TCPConnectionToBackend::~TCPConnectionToBackend()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:150,1
    - Dst: clear
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:152,1
    - Dst: clear
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:153,1
    - Dst: reset
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:156,1
    - Dst: willBeReusable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:159,1
    - Dst: std::dynamic_pointer_cast<TCPConnectionToBackend>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:160,1
    - Dst: shared_from_this
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:160,1
    - Dst: removeDownstreamConnection
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:163,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - removeFromCache
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 165
      start: 148
    functionDepth: 1
    functionLinenumber: 148
    functionLinenumberEnd: 165
    functionName: TCPConnectionToBackend::release
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc
    functionUses: 0
    functionsReached:
    - reset
    - std::dynamic_pointer_cast<TCPConnectionToBackend>
    - size
    - clear
    - willBeReusable
    - shared_from_this
    - removeDownstreamConnection
    linkageType: ''
    returnType: void
    signature: void TCPConnectionToBackend::release(bool removeFromCache)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:179,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:180,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:180,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:180,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:185,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:185,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:185,1
    - Dst: ntohl
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:186,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - ' raw'
    argTypes:
    - std::vector<uint8_t>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 187
      start: 167
    functionDepth: 0
    functionLinenumber: 167
    functionLinenumberEnd: 187
    functionName: getSerialFromRawSOAContent
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc
    functionUses: 0
    functionsReached:
    - memcpy
    - ntohl
    - std::to_string
    - std::runtime_error
    - size
    - at
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t getSerialFromRawSOAContent(const std::vector<uint8_t>& raw)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: d_buffer::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:193,1
    - Dst: d_buffer::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:197,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:199,1
    - Dst: d_buffer::data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:199,1
    - Dst: getRR
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:206,1
    - Dst: auto::getRawContent
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:210,1
    - Dst: getSerialFromRawSOAContent
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:211,1
    - Dst: DEBUGLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:216,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:216,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 18
    argCount: 1
    argNames:
    - ' query'
    argTypes:
    - TCPQuery
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 221
      start: 189
    functionDepth: 1
    functionLinenumber: 189
    functionLinenumberEnd: 221
    functionName: getSerialFromIXFRQuery
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc
    functionUses: 0
    functionsReached:
    - getRR
    - d_buffer::size
    - DEBUGLOG
    - getSerialFromRawSOAContent
    - what
    - auto::getRawContent
    - d_buffer::data
    - reinterpret_cast<const char*>
    linkageType: ''
    returnType: bool
    signature: bool getSerialFromIXFRQuery(TCPQuery& query)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:228,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:229,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:229,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:229,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:231,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:232,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:232,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 4
    argNames:
    - ' payload'
    - newId
    - proxyProtocolPayloadSize
    - sizePrepended
    argTypes:
    - PacketBuffer
    - uint16_t
    - size_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 233
      start: 223
    functionDepth: 0
    functionLinenumber: 223
    functionLinenumberEnd: 233
    functionName: editPayloadID
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc
    functionUses: 0
    functionsReached:
    - memcpy
    - std::to_string
    - std::runtime_error
    - size
    - at
    - htons
    linkageType: ''
    returnType: void
    signature: void editPayloadID(PacketBuffer& payload, uint16_t newId, size_t proxyProtocolPayloadSize,
      bool sizePrepended)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: d_idstate::getCloser
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:243,1
    - Dst: d_proxyProtocolPayload::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:245,1
    - Dst: d_buffer::insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:246,1
    - Dst: d_buffer::begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:246,1
    - Dst: d_proxyProtocolPayload::begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:246,1
    - Dst: d_proxyProtocolPayload::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:246,1
    - Dst: d_proxyProtocolPayload::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:248,1
    - Dst: d_buffer::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:253,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:254,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:254,1
    - Dst: d_proxyProtocolPayload::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:254,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:254,1
    - Dst: d_buffer::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:254,1
    - Dst: d_buffer::erase
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:257,1
    - Dst: d_buffer::begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:257,1
    - Dst: d_buffer::begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:257,1
    - Dst: static_cast<ssize_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:257,1
    - Dst: getSerialFromIXFRQuery
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:263,1
    - Dst: editPayloadID
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:266,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 22
    argCount: 3
    argNames:
    - ' query'
    - queryID
    - connectionState
    argTypes:
    - TCPQuery
    - uint16_t
    - ConnectionState
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 267
      start: 241
    functionDepth: 2
    functionLinenumber: 241
    functionLinenumberEnd: 267
    functionName: prepareQueryForSending
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc
    functionUses: 0
    functionsReached:
    - d_buffer::size
    - d_buffer::begin
    - std::to_string
    - d_buffer::insert
    - std::runtime_error
    - d_proxyProtocolPayload::size
    - d_buffer::erase
    - static_cast<ssize_t>
    - editPayloadID
    - d_proxyProtocolPayload::begin
    - d_proxyProtocolPayload::end
    - d_idstate::getCloser
    - getSerialFromIXFRQuery
    linkageType: ''
    returnType: void
    signature: void prepareQueryForSending(TCPQuery& query, uint16_t queryID, ConnectionState
      connectionState)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:272,1
    - Dst: d_pendingQueries::front
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:272,1
    - Dst: d_currentQuery::d_query::d_idstate::getCloser
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:273,1
    - Dst: prepareQueryForSending
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:276,1
    - Dst: TCPConnectionToBackend::needProxyProtocolPayload
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:276,1
    - Dst: d_pendingQueries::pop_front
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:278,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - ' conn'
    argTypes:
    - std::shared_ptr<TCPConnectionToBackend>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 283
      start: 270
    functionDepth: 3
    functionLinenumber: 270
    functionLinenumberEnd: 283
    functionName: TCPConnectionToBackend::queueNextQuery
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc
    functionUses: 0
    functionsReached:
    - prepareQueryForSending
    - std::move
    - d_pendingQueries::front
    - TCPConnectionToBackend::needProxyProtocolPayload
    - d_pendingQueries::pop_front
    - d_currentQuery::d_query::d_idstate::getCloser
    linkageType: ''
    returnType: IOState
    signature: IOState TCPConnectionToBackend::queueNextQuery(std::shared_ptr<TCPConnectionToBackend>&
      conn)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: d_currentQuery::d_query::d_idstate::getCloser
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:287,1
    - Dst: DEBUGLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:289,1
    - Dst: getDS
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:289,1
    - Dst: d_handler::getDescriptor
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:289,1
    - Dst: d_currentQuery::d_query::d_idstate::getTracer
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:292,1
    - Dst: pdns::trace::dnsdist::addTraceparentEdnsOptionToPacketBuffer
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:293,1
    - Dst: d_currentQuery::d_query::d_idstate::qname::wirelength
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:296,1
    - Dst: d_handler::tryWrite
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:304,1
    - Dst: d_currentQuery::d_query::d_buffer::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:304,1
    - Dst: DEBUGLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:311,1
    - Dst: DEBUGLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:319,1
    - Dst: d_pendingResponses::insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:320,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:320,1
    - Dst: d_currentQuery::d_sender::reset
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:327,1
    - Dst: d_currentQuery::d_query::d_buffer::clear
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:328,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 25
    argCount: 2
    argNames:
    - ' conn'
    - ' now'
    argTypes:
    - std::shared_ptr<TCPConnectionToBackend>
    - struct timeval
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 331
      start: 285
    functionDepth: 1
    functionLinenumber: 285
    functionLinenumberEnd: 331
    functionName: TCPConnectionToBackend::sendQuery
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc
    functionUses: 0
    functionsReached:
    - d_pendingResponses::insert
    - std::move
    - d_handler::getDescriptor
    - d_currentQuery::d_query::d_buffer::clear
    - DEBUGLOG
    - d_handler::tryWrite
    - d_currentQuery::d_query::d_idstate::qname::wirelength
    - d_currentQuery::d_query::d_idstate::getTracer
    - getDS
    - d_currentQuery::d_sender::reset
    - pdns::trace::dnsdist::addTraceparentEdnsOptionToPacketBuffer
    - d_currentQuery::d_query::d_buffer::size
    - d_currentQuery::d_query::d_idstate::getCloser
    linkageType: ''
    returnType: IOState
    signature: IOState TCPConnectionToBackend::sendQuery(std::shared_ptr<TCPConnectionToBackend>&
      conn, const struct timeval& now)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: DEBUGLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:335,1
    - Dst: d_ioState::reset
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:339,1
    - Dst: TCPConnectionToBackend::release
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:340,1
    - Dst: reconnect
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:343,1
    - Dst: make_unique<IOStateHandler>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:344,1
    - Dst: d_handler::getDescriptor
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:344,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:349,1
    - Dst: prepareQueryForSending
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:351,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:352,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:356,1
    - Dst: d_pendingResponses::clear
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:357,1
    - Dst: second::d_query::isXFR
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:361,1
    - Dst: DEBUGLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:363,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:365,1
    - Dst: second::d_sender::notifyIOError
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:366,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:366,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:369,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:369,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:369,1
    - Dst: TCPConnectionToBackend::getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:370,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:370,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:373,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:373,1
    - Dst: TCPConnectionToBackend::getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:374,1
    - Dst: d_pendingQueries::push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:378,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:378,1
    - Dst: d_pendingQueries::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:388,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:389,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:389,1
    - Dst: TCPConnectionToBackend::queueNextQuery
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:392,1
    - Dst: DEBUGLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:407,1
    - Dst: TCPConnectionToBackend::notifyAllQueriesFailed
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:409,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 47
    argCount: 6
    argNames:
    - ' conn'
    - ' now'
    - ' ioGuard'
    - ' iostate'
    - ' reconnected'
    - ' connectionDied'
    argTypes:
    - std::shared_ptr<TCPConnectionToBackend>
    - struct timeval
    - IOStateGuard
    - IOState
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 411
      start: 333
    functionDepth: 4
    functionLinenumber: 333
    functionLinenumberEnd: 411
    functionName: TCPConnectionToBackend::handleReconnectionAttempt
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc
    functionUses: 0
    functionsReached:
    - std::to_string
    - DEBUGLOG
    - d_pendingQueries::empty
    - TCPConnectionToBackend::queueNextQuery
    - prepareQueryForSending
    - d_handler::getDescriptor
    - second::d_sender::notifyIOError
    - make_unique<IOStateHandler>
    - second::d_query::isXFR
    - TCPConnectionToBackend::notifyAllQueriesFailed
    - d_pendingResponses::clear
    - d_pendingQueries::push_back
    - std::runtime_error
    - VERBOSESLOG
    - TCPConnectionToBackend::release
    - d_ioState::reset
    - reconnect
    - TCPConnectionToBackend::getLogger
    - std::move
    - what
    - infolog
    linkageType: ''
    returnType: void
    signature: void TCPConnectionToBackend::handleReconnectionAttempt(std::shared_ptr<TCPConnectionToBackend>&
      conn, const struct timeval& now, IOStateGuard& ioGuard, IOState& iostate, bool&
      reconnected, bool& connectionDied)
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:416,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:416,1
    - Dst: TCPConnectionToBackend::sendQuery
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:435,1
    - Dst: d_pendingQueries::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:437,1
    - Dst: TCPConnectionToBackend::queueNextQuery
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:438,1
    - Dst: TCPConnectionToBackend::sendQuery
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:439,1
    - Dst: d_pendingQueries::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:442,1
    - Dst: d_responseBuffer::resize
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:445,1
    - Dst: DEBUGLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:451,1
    - Dst: d_responseBuffer::resize
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:455,1
    - Dst: d_handler::tryRead
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:456,1
    - Dst: DEBUGLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:458,1
    - Dst: d_responseBuffer::at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:460,1
    - Dst: d_responseBuffer::at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:460,1
    - Dst: d_responseBuffer::reserve
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:461,1
    - Dst: d_responseBuffer::resize
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:462,1
    - Dst: DEBUGLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:475,1
    - Dst: d_handler::tryRead
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:476,1
    - Dst: DEBUGLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:478,1
    - Dst: TCPConnectionToBackend::handleResponse
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:481,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:484,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:484,1
    - Dst: d_ds::getNameWithAddr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:484,1
    - Dst: d_currentQuery::d_query::d_idstate::origRemote::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:484,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:484,1
    - Dst: TCPConnectionToBackend::getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:485,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:485,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:485,1
    - Dst: IOStateGuard::release
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:486,1
    - Dst: TCPConnectionToBackend::release
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:487,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:497,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:497,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:497,1
    - Dst: TCPConnectionToBackend::getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:498,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:498,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:498,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:506,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:506,1
    - Dst: d_currentQuery::d_query::d_idstate::origRemote::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:506,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:506,1
    - Dst: TCPConnectionToBackend::getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:507,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:507,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:507,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:507,1
    - Dst: TCPConnectionToBackend::handleReconnectionAttempt
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:527,1
    - Dst: d_ioState::update
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:532,1
    - Dst: getBackendReadTTD
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:537,1
    - Dst: isFresh
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:539,1
    - Dst: getBackendConnectTTD
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:541,1
    - Dst: getBackendWriteTTD
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:544,1
    - Dst: d_ioState::update
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:547,1
    - Dst: IOStateGuard::release
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:552,1
    CyclomaticComplexity: 35
    EdgeCount: 35
    ICount: 98
    argCount: 2
    argNames:
    - ' conn'
    - ' now'
    argTypes:
    - std::shared_ptr<TCPConnectionToBackend>
    - struct timeval
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 553
      start: 413
    functionDepth: 5
    functionLinenumber: 413
    functionLinenumberEnd: 553
    functionName: TCPConnectionToBackend::handleIO
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc
    functionUses: 0
    functionsReached:
    - d_currentQuery::d_query::d_idstate::origRemote::toStringWithPort
    - isFresh
    - DEBUGLOG
    - d_pendingQueries::empty
    - TCPConnectionToBackend::queueNextQuery
    - TCPConnectionToBackend::handleResponse
    - std::string
    - static_cast<int>
    - getBackendConnectTTD
    - Logging::Loggable
    - getBackendWriteTTD
    - d_responseBuffer::reserve
    - getBackendReadTTD
    - d_responseBuffer::resize
    - d_ioState::update
    - d_ds::getNameWithAddr
    - std::runtime_error
    - TCPConnectionToBackend::sendQuery
    - VERBOSESLOG
    - TCPConnectionToBackend::release
    - IOStateGuard::release
    - TCPConnectionToBackend::getLogger
    - what
    - infolog
    - d_handler::tryRead
    - d_responseBuffer::at
    - TCPConnectionToBackend::handleReconnectionAttempt
    linkageType: ''
    returnType: void
    signature: void TCPConnectionToBackend::handleIO(std::shared_ptr<TCPConnectionToBackend>&
      conn, const struct timeval& now)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: boost::any_cast<std::shared_ptr<TCPConnectionToBackend>>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:557,1
    - Dst: auto::getHandle
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:558,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:559,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:559,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:559,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:559,1
    - Dst: auto::getHandle
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:559,1
    - Dst: gettimeofday
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:563,1
    - Dst: TCPConnectionToBackend::handleIO
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:564,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - fd
    - ' param'
    argTypes:
    - int
    - FDMultiplexer::funcparam_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 565
      start: 555
    functionDepth: 6
    functionLinenumber: 555
    functionLinenumberEnd: 565
    functionName: TCPConnectionToBackend::handleIOCallback
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc
    functionUses: 0
    functionsReached:
    - std::to_string
    - TCPConnectionToBackend::handleIO
    - std::runtime_error
    - auto::getHandle
    - boost::any_cast<std::shared_ptr<TCPConnectionToBackend>>
    - gettimeofday
    - std::string
    linkageType: ''
    returnType: void
    signature: void TCPConnectionToBackend::handleIOCallback(int fd, FDMultiplexer::funcparam_t&
      param)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: d_idstate::getCloser
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:569,1
    - Dst: make_unique<IOStateHandler>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:571,1
    - Dst: getDescriptor
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:571,1
    - Dst: DEBUGLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:577,1
    - Dst: PendingRequest
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:583,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:583,1
    - Dst: prepareQueryForSending
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:584,1
    - Dst: TCPConnectionToBackend::needProxyProtocolPayload
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:584,1
    - Dst: gettimeofday
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:587,1
    - Dst: std::dynamic_pointer_cast<TCPConnectionToBackend>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:589,1
    - Dst: shared_from_this
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:589,1
    - Dst: TCPConnectionToBackend::handleIO
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:590,1
    - Dst: DEBUGLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:593,1
    - Dst: push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:595,1
    - Dst: PendingRequest
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:595,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:595,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 2
    argNames:
    - ' sender'
    - ' query'
    argTypes:
    - std::shared_ptr<TCPQuerySender>
    - TCPQuery
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 597
      start: 567
    functionDepth: 6
    functionLinenumber: 567
    functionLinenumberEnd: 597
    functionName: TCPConnectionToBackend::queueQuery
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc
    functionUses: 0
    functionsReached:
    - prepareQueryForSending
    - std::move
    - std::dynamic_pointer_cast<TCPConnectionToBackend>
    - TCPConnectionToBackend::handleIO
    - DEBUGLOG
    - push_back
    - make_unique<IOStateHandler>
    - TCPConnectionToBackend::needProxyProtocolPayload
    - getDescriptor
    - d_idstate::getCloser
    - gettimeofday
    - PendingRequest
    - shared_from_this
    linkageType: ''
    returnType: void
    signature: void TCPConnectionToBackend::queueQuery(std::shared_ptr<TCPQuerySender>&
      sender, TCPQuery&& query)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: isFresh
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:603,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:605,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:605,1
    - Dst: getNameWithAddr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:605,1
    - Dst: TCPConnectionToBackend::getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:606,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:610,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:610,1
    - Dst: getNameWithAddr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:610,1
    - Dst: TCPConnectionToBackend::getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:611,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:616,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:616,1
    - Dst: getNameWithAddr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:616,1
    - Dst: TCPConnectionToBackend::getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:617,1
    - Dst: TCPConnectionToBackend::notifyAllQueriesFailed
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:621,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:624,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:624,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:624,1
    - Dst: TCPConnectionToBackend::getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:625,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:625,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:628,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:628,1
    - Dst: TCPConnectionToBackend::getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:629,1
    - Dst: TCPConnectionToBackend::release
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:632,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 21
    argCount: 2
    argNames:
    - ' now'
    - write
    argTypes:
    - struct timeval
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 633
      start: 599
    functionDepth: 1
    functionLinenumber: 599
    functionLinenumberEnd: 633
    functionName: TCPConnectionToBackend::handleTimeout
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc
    functionUses: 0
    functionsReached:
    - isFresh
    - what
    - VERBOSESLOG
    - infolog
    - TCPConnectionToBackend::release
    - TCPConnectionToBackend::notifyAllQueriesFailed
    - TCPConnectionToBackend::getLogger
    - getNameWithAddr
    linkageType: ''
    returnType: void
    signature: void TCPConnectionToBackend::handleTimeout(const struct timeval& now,
      bool write)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: reportTimeoutOrError
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:638,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:641,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:642,1
    - Dst: clear
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:643,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:644,1
    - Dst: clear
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:645,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:660,1
    - Dst: dnsdist::rules::getResponseRuleChain
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:661,1
    - Dst: increaseCounters
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:665,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:666,1
    - Dst: auto::active
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:667,1
    - Dst: handleTimeoutResponseRules
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:668,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:669,1
    - Dst: auto::notifyIOError
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:670,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:670,1
    - Dst: increaseCounters
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:676,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:677,1
    - Dst: auto::active
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:678,1
    - Dst: handleTimeoutResponseRules
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:679,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:680,1
    - Dst: auto::notifyIOError
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:681,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:681,1
    - Dst: increaseCounters
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:687,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:688,1
    - Dst: auto::active
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:689,1
    - Dst: handleTimeoutResponseRules
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:690,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:691,1
    - Dst: auto::notifyIOError
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:692,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:692,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:698,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:698,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:698,1
    - Dst: TCPConnectionToBackend::getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:699,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:699,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:702,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:702,1
    - Dst: TCPConnectionToBackend::getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:703,1
    - Dst: TCPConnectionToBackend::release
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:706,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 46
    argCount: 2
    argNames:
    - ' now'
    - reason
    argTypes:
    - struct timeval
    - FailureReason
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 707
      start: 635
    functionDepth: 1
    functionLinenumber: 635
    functionLinenumberEnd: 707
    functionName: TCPConnectionToBackend::notifyAllQueriesFailed
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc
    functionUses: 2
    functionsReached:
    - std::move
    - dnsdist::configuration::getCurrentRuntimeConfiguration
    - what
    - VERBOSESLOG
    - infolog
    - size
    - auto::notifyIOError
    - reportTimeoutOrError
    - auto::active
    - handleTimeoutResponseRules
    - dnsdist::rules::getResponseRuleChain
    - increaseCounters
    - TCPConnectionToBackend::release
    - TCPConnectionToBackend::getLogger
    - clear
    linkageType: ''
    returnType: void
    signature: void TCPConnectionToBackend::notifyAllQueriesFailed(const struct timeval&
      now, FailureReason reason)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: TCPConnectionToBackend::getQueryIdFromResponse
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:715,1
    - Dst: DEBUGLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:718,1
    - Dst: TCPConnectionToBackend::notifyAllQueriesFailed
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:719,1
    - Dst: find
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:723,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:724,1
    - Dst: DEBUGLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:725,1
    - Dst: TCPConnectionToBackend::notifyAllQueriesFailed
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:726,1
    - Dst: auto::second::d_query::d_idstate::getCloser
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:729,1
    - Dst: editPayloadID
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:731,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:731,1
    - Dst: auto::active
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:735,1
    - Dst: auto::second::d_query::isXFR
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:735,1
    - Dst: DEBUGLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:736,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:739,1
    - Dst: partialCloneForXFR
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:744,1
    - Dst: DEBUGLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:745,1
    - Dst: TCPConnectionToBackend::isXFRFinished
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:748,1
    - Dst: erase
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:751,1
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:754,1
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:754,1
    - Dst: moveToIdle
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:756,1
    - Dst: auto::handleXFRResponse
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:760,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:760,1
    - Dst: moveToIdle
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:763,1
    - Dst: resize
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:769,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:775,1
    - Dst: auto::queryRealTime::udiff
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:776,1
    - Dst: d_ds::updateTCPLatency
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:777,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:778,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:780,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:780,1
    - Dst: d_ds::reportResponse
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:781,1
    - Dst: d_ds::reportTimeoutOrError
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:784,1
    - Dst: erase
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:787,1
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:789,1
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:789,1
    - Dst: moveToIdle
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:791,1
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:793,1
    - Dst: auto::active
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:802,1
    - Dst: DEBUGLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:803,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:805,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:805,1
    - Dst: auto::handleResponse
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:806,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:806,1
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:809,1
    - Dst: DEBUGLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:810,1
    - Dst: TCPConnectionToBackend::queueNextQuery
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:811,1
    - Dst: DEBUGLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:814,1
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:817,1
    - Dst: DEBUGLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:818,1
    - Dst: DEBUGLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:822,1
    - Dst: moveToIdle
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:824,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 80
    argCount: 2
    argNames:
    - ' conn'
    - ' now'
    argTypes:
    - std::shared_ptr<TCPConnectionToBackend>
    - struct timeval
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 826
      start: 709
    functionDepth: 4
    functionLinenumber: 709
    functionLinenumberEnd: 826
    functionName: TCPConnectionToBackend::handleResponse
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc
    functionUses: 1
    functionsReached:
    - DEBUGLOG
    - ntohs
    - TCPConnectionToBackend::queueNextQuery
    - auto::active
    - auto::second::d_query::d_idstate::getCloser
    - erase
    - find
    - resize
    - partialCloneForXFR
    - size
    - auto::queryRealTime::udiff
    - TCPConnectionToBackend::notifyAllQueriesFailed
    - empty
    - TCPConnectionToBackend::isXFRFinished
    - TCPConnectionToBackend::getQueryIdFromResponse
    - editPayloadID
    - auto::second::d_query::isXFR
    - moveToIdle
    - auto::handleResponse
    - memcpy
    - std::move
    - d_ds::reportTimeoutOrError
    - auto::handleXFRResponse
    - d_ds::reportResponse
    - end
    - d_ds::updateTCPLatency
    - data
    linkageType: ''
    returnType: IOState
    signature: IOState TCPConnectionToBackend::handleResponse(std::shared_ptr<TCPConnectionToBackend>&
      conn, const struct timeval& now)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:830,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:831,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:831,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:831,1
    - Dst: getNameWithAddr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:831,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:835,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:835,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:836,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 837
      start: 828
    functionDepth: 0
    functionLinenumber: 828
    functionLinenumberEnd: 837
    functionName: TCPConnectionToBackend::getQueryIdFromResponse
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc
    functionUses: 1
    functionsReached:
    - memcpy
    - std::to_string
    - std::runtime_error
    - ntohs
    - size
    - getNameWithAddr
    - at
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t TCPConnectionToBackend::getQueryIdFromResponse() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:843,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - ' proxyProtocolValuesSent'
    argTypes:
    - std::unique_ptr<std::vector<ProxyProtocolValue>>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 845
      start: 839
    functionDepth: 0
    functionLinenumber: 839
    functionLinenumberEnd: 845
    functionName: TCPConnectionToBackend::setProxyProtocolValuesSent
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void TCPConnectionToBackend::setProxyProtocolValuesSent(std::unique_ptr<std::vector<ProxyProtocolValue>>&&
      proxyProtocolValuesSent)
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - ' tlvs'
    argTypes:
    - std::unique_ptr<std::vector<ProxyProtocolValue>>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 863
      start: 847
    functionDepth: 0
    functionLinenumber: 847
    functionLinenumberEnd: 863
    functionName: TCPConnectionToBackend::matchesTLVs
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool TCPConnectionToBackend::matchesTLVs(const std::unique_ptr<std::vector<ProxyProtocolValue>>&
      tlvs) const
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:870,1
    - Dst: d_buffer::data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:870,1
    - Dst: d_buffer::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:870,1
    - Dst: getRR
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:881,1
    - Dst: auto::getRawContent
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:885,1
    - Dst: getSerialFromRawSOAContent
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:886,1
    - Dst: rfc1982LessThan
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:890,1
    - Dst: DEBUGLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:921,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:921,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 36
    argCount: 2
    argNames:
    - ' response'
    - ' query'
    argTypes:
    - TCPResponse
    - TCPQuery
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 925
      start: 865
    functionDepth: 1
    functionLinenumber: 865
    functionLinenumberEnd: 925
    functionName: TCPConnectionToBackend::isXFRFinished
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc
    functionUses: 1
    functionsReached:
    - getRR
    - d_buffer::size
    - DEBUGLOG
    - getSerialFromRawSOAContent
    - rfc1982LessThan
    - what
    - auto::getRawContent
    - d_buffer::data
    - reinterpret_cast<const char*>
    linkageType: ''
    returnType: bool
    signature: bool TCPConnectionToBackend::isXFRFinished(const TCPResponse& response,
      TCPQuery& query)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:930,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:936,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 937
      start: 927
    functionDepth: 0
    functionLinenumber: 927
    functionLinenumberEnd: 937
    functionName: TCPConnectionToBackend::reachedMaxStreamID
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc
    functionUses: 0
    functionsReached:
    - pdns::max
    - size
    linkageType: ''
    returnType: bool
    signature: bool TCPConnectionToBackend::reachedMaxStreamID() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:941,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:941,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:941,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:941,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:941,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:941,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:941,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:941,1
    - Dst: getState
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:941,1
    - Dst: auto::withValues
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:943,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:943,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:943,1
    - Dst: getName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:943,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 947
      start: 939
    functionDepth: 1
    functionLinenumber: 939
    functionLinenumberEnd: 947
    functionName: ConnectionToBackend::getLogger
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc
    functionUses: 9
    functionsReached:
    - getName
    - getState
    - Logging::Loggable
    - auto::withValues
    - dnsdist::logging::getTopLogger
    linkageType: ''
    returnType: std::shared_ptr<const Logr::Logger>
    signature: std::shared_ptr<const Logr::Logger> ConnectionToBackend::getLogger()
      const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ConnectionToBackend::getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:951,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:951,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:951,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:951,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:951,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:951,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:951,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 952
      start: 949
    functionDepth: 0
    functionLinenumber: 949
    functionLinenumberEnd: 952
    functionName: TCPConnectionToBackend::getLogger
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc
    functionUses: 4
    functionsReached:
    - ConnectionToBackend::getLogger
    - static_cast<int>
    - size
    - Logging::Loggable
    linkageType: ''
    returnType: std::shared_ptr<const Logr::Logger>
    signature: std::shared_ptr<const Logr::Logger> TCPConnectionToBackend::getLogger()
      const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DownstreamConnectionsManager::setMaxIdleConnectionsPerDownstream
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:956,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - max
    argTypes:
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 957
      start: 954
    functionDepth: 1
    functionLinenumber: 954
    functionLinenumberEnd: 957
    functionName: setTCPDownstreamMaxIdleConnectionsPerBackend
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc
    functionUses: 0
    functionsReached:
    - DownstreamConnectionsManager::setMaxIdleConnectionsPerDownstream
    linkageType: ''
    returnType: void
    signature: void setTCPDownstreamMaxIdleConnectionsPerBackend(uint64_t max)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DownstreamConnectionsManager::setCleanupInterval
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:961,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - interval
    argTypes:
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 962
      start: 959
    functionDepth: 1
    functionLinenumber: 959
    functionLinenumberEnd: 962
    functionName: setTCPDownstreamCleanupInterval
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc
    functionUses: 0
    functionsReached:
    - DownstreamConnectionsManager::setCleanupInterval
    linkageType: ''
    returnType: void
    signature: void setTCPDownstreamCleanupInterval(uint64_t interval)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DownstreamConnectionsManager::setMaxIdleTime
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc:966,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - max
    argTypes:
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 967
      start: 964
    functionDepth: 1
    functionLinenumber: 964
    functionLinenumberEnd: 967
    functionName: setTCPDownstreamMaxIdleTime
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc
    functionUses: 0
    functionsReached:
    - DownstreamConnectionsManager::setMaxIdleTime
    linkageType: ''
    returnType: void
    signature: void setTCPDownstreamMaxIdleTime(uint64_t max)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:54,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:55,1
    - Dst: dnsdist::edns::getExtendedDNSError
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:57,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:58,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:59,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:66,1
    - Dst: GenericDNSPacketWriter::addOpt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:67,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:68,1
    - Dst: dnsdist::edns::getExtendedDNSError
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:70,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:71,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:72,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:79,1
    - Dst: static_cast<uint16_t>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:82,1
    - Dst: GenericDNSPacketWriter<PacketBuffer>::optvect_t::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:84,1
    - Dst: makeEDNSExtendedErrorOptString
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:84,1
    - Dst: GenericDNSPacketWriter::addOpt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:85,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:86,1
    - Dst: dnsdist::edns::getExtendedDNSError
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:88,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:89,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:90,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:91,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:98,1
    - Dst: static_cast<uint16_t>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:101,1
    - Dst: GenericDNSPacketWriter<PacketBuffer>::optvect_t::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:103,1
    - Dst: makeEDNSExtendedErrorOptString
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:103,1
    - Dst: GenericDNSPacketWriter::addOpt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:104,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:105,1
    - Dst: dnsdist::edns::getExtendedDNSError
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:107,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:108,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:109,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:110,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:111,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:118,1
    - Dst: static_cast<uint16_t>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:121,1
    - Dst: GenericDNSPacketWriter<PacketBuffer>::optvect_t::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:123,1
    - Dst: makeEDNSExtendedErrorOptString
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:123,1
    - Dst: GenericDNSPacketWriter::addOpt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:124,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:125,1
    - Dst: PacketBuffer::resize
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:128,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:128,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:130,1
    - Dst: dnsdist::edns::getExtendedDNSError
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:130,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:137,1
    - Dst: static_cast<uint16_t>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:140,1
    - Dst: GenericDNSPacketWriter<PacketBuffer>::optvect_t::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:142,1
    - Dst: makeEDNSExtendedErrorOptString
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:142,1
    - Dst: EDNSSubnetOpts::setSource
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:144,1
    - Dst: Netmask
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:144,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:144,1
    - Dst: EDNSSubnetOpts::makeOptString
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:145,1
    - Dst: GenericDNSPacketWriter<PacketBuffer>::optvect_t::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:146,1
    - Dst: GenericDNSPacketWriter::addOpt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:147,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:148,1
    - Dst: dnsdist::edns::getExtendedDNSError
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:150,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:151,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:152,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:153,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:154,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:161,1
    - Dst: EDNSSubnetOpts::setSource
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:164,1
    - Dst: Netmask
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:164,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:164,1
    - Dst: EDNSSubnetOpts::makeOptString
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:165,1
    - Dst: GenericDNSPacketWriter<PacketBuffer>::optvect_t::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:166,1
    - Dst: static_cast<uint16_t>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:168,1
    - Dst: GenericDNSPacketWriter<PacketBuffer>::optvect_t::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:170,1
    - Dst: makeEDNSExtendedErrorOptString
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:170,1
    - Dst: GenericDNSPacketWriter::addOpt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:171,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:172,1
    - Dst: dnsdist::edns::getExtendedDNSError
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:174,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:175,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:176,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:177,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:178,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:185,1
    - Dst: EDNSCookiesOpt::makeOptString
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:188,1
    - Dst: GenericDNSPacketWriter<PacketBuffer>::optvect_t::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:189,1
    - Dst: static_cast<uint16_t>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:191,1
    - Dst: GenericDNSPacketWriter<PacketBuffer>::optvect_t::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:193,1
    - Dst: makeEDNSExtendedErrorOptString
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:193,1
    - Dst: std::string::resize
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:195,1
    - Dst: GenericDNSPacketWriter<PacketBuffer>::optvect_t::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:196,1
    - Dst: GenericDNSPacketWriter::addOpt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:197,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:198,1
    - Dst: dnsdist::edns::getExtendedDNSError
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:200,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:201,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:202,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:203,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:204,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 70
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 206
      start: 46
    functionDepth: 2
    functionLinenumber: 46
    functionLinenumberEnd: 206
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc
    functionUses: 0
    functionsReached:
    - GenericDNSPacketWriter::addOpt
    - Netmask
    - dnsdist::edns::getExtendedDNSError
    - EDNSSubnetOpts::makeOptString
    - GenericDNSPacketWriter::getHeader
    - GenericDNSPacketWriter<PacketBuffer>::optvect_t::emplace_back
    - EDNSSubnetOpts::setSource
    - BOOST_CHECK_EQUAL
    - EDNSCookiesOpt::makeOptString
    - GenericDNSPacketWriter::commit
    - makeEDNSExtendedErrorOptString
    - static_cast<uint16_t>
    - PacketBuffer::size
    - BOOST_CHECK_THROW
    - PacketBuffer::resize
    - std::string::resize
    - BOOST_CHECK
    - ComboAddress
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(getExtendedDNSError)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PacketBuffer::clear
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:217,1
    - Dst: reset
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:224,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:225,1
    - Dst: locateEDNSOptRR
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:225,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:226,1
    - Dst: locateEDNSOptRR
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:226,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:227,1
    - Dst: locateEDNSOptRR
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:227,1
    - Dst: reset
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:231,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:234,1
    - Dst: GenericDNSPacketWriter::addOpt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:235,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:236,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:237,1
    - Dst: locateEDNSOptRR
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:237,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:238,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:239,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:240,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:243,1
    - Dst: locateEDNSOptRR
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:243,1
    - Dst: PacketBuffer
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:243,1
    - Dst: PacketBuffer::begin
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:243,1
    - Dst: PacketBuffer::begin
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:243,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:246,1
    - Dst: locateEDNSOptRR
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:246,1
    - Dst: PacketBuffer
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:246,1
    - Dst: PacketBuffer::begin
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:246,1
    - Dst: PacketBuffer::begin
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:246,1
    - Dst: reset
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:250,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:253,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:254,1
    - Dst: locateEDNSOptRR
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:254,1
    - Dst: PacketBuffer::resize
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:257,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:258,1
    - Dst: locateEDNSOptRR
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:258,1
    - Dst: reset
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:263,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:265,1
    - Dst: GenericDNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:266,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:266,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:267,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:268,1
    - Dst: locateEDNSOptRR
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:268,1
    - Dst: reset
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:273,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:275,1
    - Dst: GenericDNSPacketWriter::addOpt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:276,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:277,1
    - Dst: GenericDNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:278,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:278,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:279,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:280,1
    - Dst: locateEDNSOptRR
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:280,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:281,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:282,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:283,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 45
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 285
      start: 208
    functionDepth: 1
    functionLinenumber: 208
    functionLinenumberEnd: 285
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc
    functionUses: 0
    functionsReached:
    - PacketBuffer::begin
    - GenericDNSPacketWriter::addOpt
    - reset
    - locateEDNSOptRR
    - GenericDNSPacketWriter::startRecord
    - GenericDNSPacketWriter::getHeader
    - BOOST_CHECK_EQUAL
    - DNSName
    - GenericDNSPacketWriter::commit
    - PacketBuffer
    - BOOST_CHECK_THROW
    - PacketBuffer::resize
    - BOOST_CHECK
    - PacketBuffer::clear
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_locateEDNSOptRR)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:299,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:300,1
    - Dst: GenericDNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:301,1
    - Dst: GenericDNSPacketWriter::xfrCAWithoutPort
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:302,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:303,1
    - Dst: std::string::resize
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:308,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:309,1
    - Dst: GenericDNSPacketWriter::addOpt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:311,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:313,1
    - Dst: getPacket
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:320,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:321,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:323,1
    - Dst: dnsdist::edns::addEDNSPadding
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:323,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:324,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:324,1
    - Dst: getPacket
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:329,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:330,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:331,1
    - Dst: dnsdist::edns::addEDNSPadding
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:331,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:332,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:332,1
    - Dst: getPacket
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:337,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:338,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:340,1
    - Dst: dnsdist::edns::addEDNSPadding
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:340,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:340,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:341,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:341,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:343,1
    - Dst: dnsdist::edns::addEDNSPadding
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:343,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:343,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:344,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:344,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:347,1
    - Dst: dnsdist::edns::addEDNSPadding
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:347,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:347,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:348,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:348,1
    - Dst: getPacket
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:353,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:354,1
    - Dst: dnsdist::edns::addEDNSPadding
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:354,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:355,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc:355,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 35
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 357
      start: 287
    functionDepth: 2
    functionLinenumber: 287
    functionLinenumberEnd: 357
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc
    functionUses: 0
    functionsReached:
    - GenericDNSPacketWriter::addOpt
    - vector::push_back
    - GenericDNSPacketWriter::xfrCAWithoutPort
    - GenericDNSPacketWriter::startRecord
    - GenericDNSPacketWriter::getHeader
    - BOOST_CHECK_EQUAL
    - getPacket
    - dnsdist::edns::addEDNSPadding
    - GenericDNSPacketWriter::commit
    - std::string::resize
    - BOOST_CHECK
    - auto::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(addEDNSPadding)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: type
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:32,1
    - Dst: typeid
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:32,1
    - Dst: boost::get<std::shared_ptr<DNSRule>>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:33,1
    - Dst: NetmaskGroup::NetmaskGroup
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:38,1
    - Dst: NetmaskGroup::addMask
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:41,1
    - Dst: SuffixMatchNode::add
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:45,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:45,1
    - Dst: type
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:49,1
    - Dst: typeid
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:49,1
    - Dst: add
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:50,1
    - Dst: boost::get<string>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:50,1
    - Dst: type
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:52,1
    - Dst: typeid
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:52,1
    - Dst: boost::get<LuaArray<std::string>>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:53,1
    - Dst: add
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:54,1
    - Dst: type
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:57,1
    - Dst: typeid
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:57,1
    - Dst: SuffixMatchNode::add
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:58,1
    - Dst: boost::get<DNSName>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:58,1
    - Dst: type
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:60,1
    - Dst: typeid
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:60,1
    - Dst: SuffixMatchNode
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:61,1
    - Dst: boost::get<LuaArray<DNSName>>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:62,1
    - Dst: SuffixMatchNode::add
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:63,1
    - Dst: NetmaskGroup::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:67,1
    - Dst: std::make_shared<SuffixMatchNodeRule>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:68,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:71,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:71,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:72,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:72,1
    - Dst: std::make_shared<NetmaskGroupRule>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:74,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 33
    argCount: 2
    argNames:
    - ' var'
    - ' calledFrom'
    argTypes:
    - luadnsrule_t
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 30
    functionDepth: 1
    functionLinenumber: 30
    functionLinenumberEnd: 75
    functionName: makeRule
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc
    functionUses: 0
    functionsReached:
    - add
    - SuffixMatchNode::add
    - SLOG
    - boost::get<string>
    - Logging::Loggable
    - warnlog
    - boost::get<std::shared_ptr<DNSRule>>
    - dnsdist::logging::getTopLogger
    - std::make_shared<NetmaskGroupRule>
    - SuffixMatchNode
    - NetmaskGroup::empty
    - type
    - boost::get<DNSName>
    - std::make_shared<SuffixMatchNodeRule>
    - NetmaskGroup::NetmaskGroup
    - DNSName
    - boost::get<LuaArray<DNSName>>
    - typeid
    - boost::get<LuaArray<std::string>>
    - NetmaskGroup::addMask
    linkageType: ''
    returnType: std::shared_ptr<DNSRule>
    signature: std::shared_ptr<DNSRule> makeRule(const luadnsrule_t& var, const std::string&
      calledFrom)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:79,1
    - Dst: getUniqueID
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:80,1
    - Dst: getUniqueID
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:83,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ' identifier'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 77
    functionDepth: 0
    functionLinenumber: 77
    functionLinenumberEnd: 84
    functionName: makeRuleID
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc
    functionUses: 0
    functionsReached:
    - empty
    - getUniqueID
    linkageType: ''
    returnType: boost::uuids::uuid
    signature: boost::uuids::uuid makeRuleID(std::string& identifier)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:92,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:93,1
    - Dst: makeRuleID
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:95,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 4
    argNames:
    - ' params'
    - ' uuid'
    - ' name'
    - ' creationOrder'
    argTypes:
    - std::optional<luaruleparams_t>
    - boost::uuids::uuid
    - std::string
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 86
    functionDepth: 2
    functionLinenumber: 86
    functionLinenumberEnd: 97
    functionName: parseRuleParams
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc
    functionUses: 0
    functionsReached:
    - makeRuleID
    - getOptionalValue
    linkageType: ''
    returnType: void
    signature: void parseRuleParams(std::optional<luaruleparams_t>& params, boost::uuids::uuid&
      uuid, std::string& name, uint64_t& creationOrder)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:109,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:110,1
    - Dst: checkAllParametersConsumed
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:111,1
    - Dst: str
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:115,1
    - Dst: d_rule::toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:117,1
    - Dst: libssl_tls_version_to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:118,1
    - Dst: d_action::toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:118,1
    - Dst: str
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:118,1
    - Dst: str
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:124,1
    - Dst: d_rule::toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:126,1
    - Dst: d_action::toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:127,1
    - Dst: str
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:127,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 2
    argNames:
    - ' rules'
    - ' vars'
    argTypes:
    - std::vector<T>
    - std::optional<ruleparams_t>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 132
      start: 102
    functionDepth: 2
    functionLinenumber: 102
    functionLinenumberEnd: 132
    functionName: rulesToString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc
    functionUses: 0
    functionsReached:
    - d_rule::toString
    - checkAllParametersConsumed
    - getOptionalValue
    - d_action::toString
    - str
    - libssl_tls_version_to_string
    linkageType: ''
    returnType: std::string
    signature: std::string rulesToString(const std::vector<T>& rules, std::optional<ruleparams_t>&
      vars)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: setLuaNoSideEffect
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:137,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:139,1
    - Dst: dnsdist::rules::getRuleChain
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:140,1
    - Dst: rulesToString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:141,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - identifier
    - ' vars'
    argTypes:
    - IdentifierT
    - std::optional<ruleparams_t>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 142
      start: 135
    functionDepth: 3
    functionLinenumber: 135
    functionLinenumberEnd: 142
    functionName: showRules
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc
    functionUses: 0
    functionsReached:
    - dnsdist::rules::getRuleChain
    - rulesToString
    - setLuaNoSideEffect
    - dnsdist::configuration::getCurrentRuntimeConfiguration
    linkageType: ''
    returnType: void
    signature: void showRules(IdentifierT identifier, std::optional<ruleparams_t>&
      vars)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::remove_if
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:147,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:147,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:148,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:150,1
    - Dst: erase
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:154,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:155,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - ' rules'
    - ' matchFunction'
    argTypes:
    - ChainTypeT
    - std::function<bool(const RuleTypeT& rule)>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 157
      start: 145
    functionDepth: 0
    functionLinenumber: 145
    functionLinenumberEnd: 157
    functionName: removeRuleFromChain
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc
    functionUses: 0
    functionsReached:
    - erase
    - std::remove_if
    - end
    - begin
    linkageType: ''
    returnType: bool
    signature: bool removeRuleFromChain(ChainTypeT& rules, const std::function<bool(const
      RuleTypeT& rule)>& matchFunction)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: boost::get<std::string>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:162,1
    - Dst: getUniqueID
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:164,1
    - Dst: dnsdist::configuration::updateRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:165,1
    - Dst: dnsdist::rules::getResponseRuleChain
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:168,1
    - Dst: removeRuleFromChain
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:170,1
    - Dst: dnsdist::rules::getRuleChain
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:173,1
    - Dst: removeRuleFromChain
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:175,1
    - Dst: dnsdist::configuration::updateRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:180,1
    - Dst: dnsdist::rules::getResponseRuleChain
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:183,1
    - Dst: removeRuleFromChain
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:185,1
    - Dst: dnsdist::rules::getRuleChain
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:188,1
    - Dst: removeRuleFromChain
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:190,1
    - Dst: boost::get<unsigned int>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:195,1
    - Dst: dnsdist::configuration::updateRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:196,1
    - Dst: dnsdist::rules::getRuleChain
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:197,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:198,1
    - Dst: erase
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:202,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:202,1
    - Dst: setLuaSideEffect
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:205,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 38
    argCount: 2
    argNames:
    - chainIdentifier
    - ' ruleID'
    argTypes:
    - ChainIdentifierT
    - boost::variant<unsigned int, std::string>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 206
      start: 160
    functionDepth: 1
    functionLinenumber: 160
    functionLinenumberEnd: 206
    functionName: rmRule
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc
    functionUses: 0
    functionsReached:
    - dnsdist::rules::getRuleChain
    - getUniqueID
    - dnsdist::configuration::updateRuntimeConfiguration
    - boost::get<std::string>
    - size
    - setLuaSideEffect
    - dnsdist::rules::getResponseRuleChain
    - removeRuleFromChain
    - begin
    - boost::get<unsigned int>
    - erase
    linkageType: ''
    returnType: void
    signature: void rmRule(ChainIdentifierT chainIdentifier, const boost::variant<unsigned
      int, std::string>& ruleID)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: setLuaSideEffect
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:211,1
    - Dst: dnsdist::configuration::updateRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:212,1
    - Dst: dnsdist::rules::getRuleChain
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:213,1
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:214,1
    - Dst: rbegin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:218,1
    - Dst: erase
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:219,1
    - Dst: std::prev
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:219,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:219,1
    - Dst: insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:220,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:220,1
    - Dst: setLuaSideEffect
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:222,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - chainIdentifier
    argTypes:
    - IdentifierTypeT
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 223
      start: 209
    functionDepth: 1
    functionLinenumber: 209
    functionLinenumberEnd: 223
    functionName: moveRuleToTop
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc
    functionUses: 0
    functionsReached:
    - dnsdist::rules::getRuleChain
    - rbegin
    - std::prev
    - dnsdist::configuration::updateRuntimeConfiguration
    - end
    - setLuaSideEffect
    - insert
    - begin
    - empty
    - erase
    linkageType: ''
    returnType: void
    signature: void moveRuleToTop(IdentifierTypeT chainIdentifier)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::configuration::updateRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:228,1
    - Dst: dnsdist::rules::getRuleChain
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:229,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:230,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:230,1
    - Dst: erase
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:236,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:236,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:237,1
    - Dst: push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:238,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:238,1
    - Dst: insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:244,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:244,1
    - Dst: setLuaSideEffect
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:247,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 3
    argNames:
    - chainIdentifier
    - from
    - destination
    argTypes:
    - IdentifierTypeT
    - unsigned int
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 248
      start: 226
    functionDepth: 1
    functionLinenumber: 226
    functionLinenumberEnd: 248
    functionName: mvRule
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc
    functionUses: 0
    functionsReached:
    - std::move
    - dnsdist::rules::getRuleChain
    - push_back
    - dnsdist::configuration::updateRuntimeConfiguration
    - size
    - setLuaSideEffect
    - insert
    - begin
    - erase
    linkageType: ''
    returnType: void
    signature: void mvRule(IdentifierTypeT chainIdentifier, unsigned int from, unsigned
      int destination)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::vector::reserve
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:254,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:254,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:258,1
    - Dst: d_rule::d_matches::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:258,1
    - Dst: sort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:262,1
    - Dst: std::vector::begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:262,1
    - Dst: std::vector::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:262,1
    - Dst: std::vector::reserve
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:267,1
    - Dst: std::vector::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:271,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:271,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 2
    argNames:
    - ' rules'
    - top
    argTypes:
    - std::vector<T>
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 279
      start: 251
    functionDepth: 0
    functionLinenumber: 251
    functionLinenumberEnd: 279
    functionName: getTopRules
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc
    functionUses: 0
    functionsReached:
    - std::vector::end
    - std::vector::push_back
    - std::vector::begin
    - std::vector::emplace_back
    - size
    - std::vector::reserve
    - sort
    - d_rule::d_matches::load
    - at
    linkageType: ''
    returnType: std::vector<T>
    signature: std::vector<T> getTopRules(const std::vector<T>& rules, unsigned int
      top)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: setLuaSideEffect
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:284,1
    - Dst: parseRuleParams
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:289,1
    - Dst: checkAllParametersConsumed
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:290,1
    - Dst: makeRule
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:292,1
    - Dst: dnsdist::configuration::updateRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:293,1
    - Dst: dnsdist::rules::add
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:294,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:294,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:294,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 5
    argNames:
    - identifier
    - ' methodName'
    - ' var'
    - ' action'
    - ' params'
    argTypes:
    - IdentifierT
    - std::string
    - luadnsrule_t
    - std::shared_ptr<ActionT>
    - std::optional<luaruleparams_t>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 296
      start: 282
    functionDepth: 3
    functionLinenumber: 282
    functionLinenumberEnd: 296
    functionName: addRule
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc
    functionUses: 0
    functionsReached:
    - std::move
    - makeRule
    - parseRuleParams
    - dnsdist::configuration::updateRuntimeConfiguration
    - checkAllParametersConsumed
    - setLuaSideEffect
    - dnsdist::rules::add
    linkageType: ''
    returnType: void
    signature: void addRule(IdentifierT identifier, const std::string& methodName,
      const luadnsrule_t& var, const std::shared_ptr<ActionT>& action, std::optional<luaruleparams_t>&
      params)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LuaArray::reserve
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:302,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:302,1
    - Dst: LuaArray::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:306,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:306,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - ' rules'
    argTypes:
    - std::vector<T>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 311
      start: 299
    functionDepth: 0
    functionLinenumber: 299
    functionLinenumberEnd: 311
    functionName: toLuaArray
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc
    functionUses: 0
    functionsReached:
    - std::move
    - LuaArray::emplace_back
    - LuaArray::reserve
    - size
    linkageType: ''
    returnType: LuaArray<T>
    signature: LuaArray<T> toLuaArray(std::vector<T>&& rules)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: boost::get<std::string>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:316,1
    - Dst: getUniqueID
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:319,1
    - Dst: boost::get<unsigned int>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:335,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:338,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 18
    argCount: 2
    argNames:
    - ' rules'
    - ' selector'
    argTypes:
    - std::vector<T>
    - boost::variant<unsigned int, std::string>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 341
      start: 314
    functionDepth: 0
    functionLinenumber: 314
    functionLinenumberEnd: 341
    functionName: getRuleFromSelector
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc
    functionUses: 0
    functionsReached:
    - getUniqueID
    - boost::get<unsigned int>
    - at
    - boost::get<std::string>
    linkageType: ''
    returnType: std::optional<T>
    signature: std::optional<T> getRuleFromSelector(const std::vector<T>& rules, const
      boost::variant<unsigned int, std::string>& selector)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: boost::variant<const SuffixMatchNode&, std::string, const LuaArray<std::string>>::type
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:347,1
    - Dst: typeid
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:347,1
    - Dst: SuffixMatchNode::add
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:349,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:349,1
    - Dst: boost::get<std::string>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:349,1
    - Dst: std::shared_ptr<DNSRule>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:350,1
    - Dst: SuffixMatchNodeRule::SuffixMatchNodeRule
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:350,1
    - Dst: boost::variant<const SuffixMatchNode&, std::string, const LuaArray<std::string>>::type
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:353,1
    - Dst: typeid
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:353,1
    - Dst: boost::get<const LuaArray<std::string>>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:355,1
    - Dst: SuffixMatchNode::add
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:356,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:356,1
    - Dst: std::shared_ptr<DNSRule>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:358,1
    - Dst: SuffixMatchNodeRule::SuffixMatchNodeRule
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:358,1
    - Dst: boost::get<const SuffixMatchNode&>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:361,1
    - Dst: std::shared_ptr<DNSRule>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:362,1
    - Dst: SuffixMatchNodeRule::SuffixMatchNodeRule
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:362,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - names
    - quiet
    argTypes:
    - boost::variant<const SuffixMatchNode&, std::string, const LuaArray<std::string>>
    - std::optional<bool>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 363
      start: 345
    functionDepth: 1
    functionLinenumber: 345
    functionLinenumberEnd: 363
    functionName: qnameSuffixRule
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc
    functionUses: 0
    functionsReached:
    - boost::get<const SuffixMatchNode&>
    - typeid
    - boost::variant<const SuffixMatchNode&, std::string, const LuaArray<std::string>>::type
    - boost::get<const LuaArray<std::string>>
    - boost::get<std::string>
    - DNSName
    - std::shared_ptr<DNSRule>
    - SuffixMatchNode::add
    - SuffixMatchNodeRule::SuffixMatchNodeRule
    linkageType: ''
    returnType: std::shared_ptr<DNSRule>
    signature: std::shared_ptr<DNSRule> qnameSuffixRule(const boost::variant<const
      SuffixMatchNode&, std::string, const LuaArray<std::string>> names, std::optional<bool>
      quiet)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: boost::variant<const SuffixMatchNode&, std::string, const LuaArray<std::string>>::type
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:347,1
    - Dst: typeid
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:347,1
    - Dst: SuffixMatchNode::add
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:349,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:349,1
    - Dst: boost::get<std::string>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:349,1
    - Dst: std::shared_ptr<DNSRule>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:350,1
    - Dst: SuffixMatchNodeRule::SuffixMatchNodeRule
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:350,1
    - Dst: boost::variant<const SuffixMatchNode&, std::string, const LuaArray<std::string>>::type
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:353,1
    - Dst: typeid
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:353,1
    - Dst: boost::get<const LuaArray<std::string>>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:355,1
    - Dst: SuffixMatchNode::add
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:356,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:356,1
    - Dst: std::shared_ptr<DNSRule>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:358,1
    - Dst: SuffixMatchNodeRule::SuffixMatchNodeRule
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:358,1
    - Dst: boost::get<const SuffixMatchNode&>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:361,1
    - Dst: std::shared_ptr<DNSRule>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:362,1
    - Dst: SuffixMatchNodeRule::SuffixMatchNodeRule
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:362,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - names
    - quiet
    argTypes:
    - boost::variant<const SuffixMatchNode&, std::string, const LuaArray<std::string>>
    - std::optional<bool>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 363
      start: 345
    functionDepth: 1
    functionLinenumber: 345
    functionLinenumberEnd: 363
    functionName: qnameSuffixRule
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc
    functionUses: 0
    functionsReached:
    - boost::get<const SuffixMatchNode&>
    - typeid
    - boost::variant<const SuffixMatchNode&, std::string, const LuaArray<std::string>>::type
    - boost::get<const LuaArray<std::string>>
    - boost::get<std::string>
    - DNSName
    - std::shared_ptr<DNSRule>
    - SuffixMatchNode::add
    - SuffixMatchNodeRule::SuffixMatchNodeRule
    linkageType: ''
    returnType: std::shared_ptr<DNSRule>
    signature: std::shared_ptr<DNSRule> qnameSuffixRule(const boost::variant<const
      SuffixMatchNode&, std::string, const LuaArray<std::string>> names, std::optional<bool>
      quiet)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::rules::getResponseRuleChainDescriptions
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:368,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:369,1
    - Dst: showRules
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:370,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:372,1
    - Dst: rmRule
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:373,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:375,1
    - Dst: moveRuleToTop
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:376,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:378,1
    - Dst: mvRule
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:379,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:381,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:382,1
    - Dst: dnsdist::rules::getResponseRuleChain
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:383,1
    - Dst: getRuleFromSelector
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:384,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:387,1
    - Dst: setLuaNoSideEffect
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:388,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:389,1
    - Dst: dnsdist::rules::getResponseRuleChain
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:390,1
    - Dst: toLuaArray
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:391,1
    - Dst: getTopRules
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:391,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:394,1
    - Dst: setLuaNoSideEffect
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:395,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:396,1
    - Dst: dnsdist::rules::getResponseRuleChain
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:397,1
    - Dst: rulesToString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:398,1
    - Dst: getTopRules
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:398,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:401,1
    - Dst: setLuaSideEffect
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:402,1
    - Dst: dnsdist::configuration::updateRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:403,1
    - Dst: dnsdist::rules::getRuleChain
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:404,1
    - Dst: clear
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:405,1
    - Dst: dnsdist::rules::getRuleChainDescriptions
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:410,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:411,1
    - Dst: showRules
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:412,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:414,1
    - Dst: rmRule
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:415,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:417,1
    - Dst: moveRuleToTop
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:418,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:420,1
    - Dst: mvRule
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:421,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:423,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:424,1
    - Dst: dnsdist::rules::getRuleChain
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:425,1
    - Dst: getRuleFromSelector
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:426,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:429,1
    - Dst: setLuaNoSideEffect
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:430,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:431,1
    - Dst: dnsdist::rules::getRuleChain
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:432,1
    - Dst: toLuaArray
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:433,1
    - Dst: getTopRules
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:433,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:436,1
    - Dst: setLuaNoSideEffect
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:437,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:438,1
    - Dst: dnsdist::rules::getRuleChain
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:439,1
    - Dst: rulesToString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:441,1
    - Dst: getTopRules
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:441,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:444,1
    - Dst: setLuaSideEffect
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:445,1
    - Dst: dnsdist::configuration::updateRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:446,1
    - Dst: dnsdist::rules::getRuleChain
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:447,1
    - Dst: clear
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:448,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:452,1
    - Dst: setLuaSideEffect
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:453,1
    - Dst: dnsdist::configuration::updateRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:454,1
    - Dst: dnsdist::rules::getRuleChain
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:455,1
    - Dst: clear
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:456,1
    - Dst: push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:461,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:461,1
    - Dst: dnsdist::rules::getRuleChainDescriptions
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:468,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:469,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:469,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:470,1
    - Dst: type
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:471,1
    - Dst: typeid
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:471,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:472,1
    - Dst: addRule
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:475,1
    - Dst: boost::get<std::shared_ptr<DNSAction>>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:475,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:477,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:477,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:478,1
    - Dst: setLuaNoSideEffect
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:479,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:481,1
    - Dst: dnsdist::rules::getRuleChain
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:482,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:483,1
    - Dst: dnsdist::rules::getResponseRuleChainDescriptions
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:490,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:491,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:491,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:492,1
    - Dst: type
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:493,1
    - Dst: typeid
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:493,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:494,1
    - Dst: addRule
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:497,1
    - Dst: boost::get<std::shared_ptr<DNSResponseAction>>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:497,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:501,1
    - Dst: setLuaNoSideEffect
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:502,1
    - Dst: vector::reserve
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:512,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:515,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:515,1
    - Dst: dns_random_uint32
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:515,1
    - Dst: dns_random
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:517,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:520,1
    - Dst: dns_random_uint32
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:521,1
    - Dst: item::ids::queryRealTime::start
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:522,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:524,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:524,1
    - Dst: StopWatch::start
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:530,1
    - Dst: vector::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:532,1
    - Dst: auto::matches
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:535,1
    - Dst: StopWatch::udiff
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:539,1
    - Dst: boost::format
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:540,1
    - Dst: str
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:540,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 115
    argCount: 1
    argNames:
    - ' luaCtx'
    argTypes:
    - LuaContext
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 542
      start: 366
    functionDepth: 4
    functionLinenumber: 366
    functionLinenumberEnd: 542
    functionName: setupLuaRuleChainsManagement
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc
    functionUses: 0
    functionsReached:
    - std::to_string
    - dnsdist::configuration::updateRuntimeConfiguration
    - toLuaArray
    - showRules
    - vector::reserve
    - std::string
    - auto::matches
    - boost::get<std::shared_ptr<DNSResponseAction>>
    - boost::get<std::shared_ptr<DNSAction>>
    - dns_random_uint32
    - getTopRules
    - addRule
    - dnsdist::rules::getResponseRuleChainDescriptions
    - getRuleFromSelector
    - dnsdist::rules::getRuleChainDescriptions
    - size
    - item::ids::queryRealTime::start
    - dnsdist::rules::getResponseRuleChain
    - rulesToString
    - clear
    - writeFunction
    - type
    - vector::push_back
    - dnsdist::configuration::getCurrentRuntimeConfiguration
    - dnsdist::rules::getRuleChain
    - std::runtime_error
    - push_back
    - moveRuleToTop
    - setLuaNoSideEffect
    - DNSName
    - mvRule
    - str
    - ComboAddress
    - std::move
    - typeid
    - dns_random
    - StopWatch::udiff
    - setLuaSideEffect
    - boost::format
    - StopWatch::start
    - vector::size
    - rmRule
    linkageType: ''
    returnType: void
    signature: void setupLuaRuleChainsManagement(LuaContext& luaCtx)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:547,1
    - Dst: makeRule
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:548,1
    - Dst: string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:551,1
    - Dst: toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:551,1
    - Dst: d_matches::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:553,1
    - Dst: std::shared_ptr<DNSRule>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:555,1
    - Dst: std::shared_ptr<DNSAction>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:557,1
    - Dst: std::shared_ptr<DNSRule>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:559,1
    - Dst: std::shared_ptr<DNSResponseAction>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:561,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:563,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:565,1
    - Dst: type
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:566,1
    - Dst: typeid
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:566,1
    - Dst: NetmaskGroup::NetmaskGroup
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:567,1
    - Dst: NetmaskGroup::addMask
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:568,1
    - Dst: boost::get<std::string>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:568,1
    - Dst: std::shared_ptr<DNSRule>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:569,1
    - Dst: NetmaskGroupRule::NetmaskGroupRule
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:569,1
    - Dst: type
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:572,1
    - Dst: typeid
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:572,1
    - Dst: NetmaskGroup::NetmaskGroup
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:573,1
    - Dst: boost::get<const LuaArray<std::string>>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:574,1
    - Dst: NetmaskGroup::addMask
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:575,1
    - Dst: std::shared_ptr<DNSRule>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:577,1
    - Dst: NetmaskGroupRule::NetmaskGroupRule
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:577,1
    - Dst: boost::get<const NetmaskGroup&>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:580,1
    - Dst: std::shared_ptr<DNSRule>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:581,1
    - Dst: NetmaskGroupRule::NetmaskGroupRule
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:581,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:584,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:586,1
    - Dst: boost::get<unsigned int>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:588,1
    - Dst: boost::get<string>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:592,1
    - Dst: QType::chartocode
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:593,1
    - Dst: string::c_str
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:593,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:595,1
    - Dst: std::shared_ptr<DNSRule>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:598,1
    - Dst: QTypeRule::QTypeRule
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:598,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:601,1
    - Dst: checkParameterBound
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:602,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:602,1
    - Dst: std::shared_ptr<DNSRule>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:603,1
    - Dst: QClassRule::QClassRule
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:603,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:606,1
    - Dst: std::vector::reserve
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:608,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:608,1
    - Dst: std::vector::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:610,1
    - Dst: std::shared_ptr<DNSRule>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:612,1
    - Dst: AndRule::AndRule
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:612,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:615,1
    - Dst: std::vector::reserve
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:617,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:617,1
    - Dst: std::vector::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:619,1
    - Dst: std::shared_ptr<DNSRule>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:621,1
    - Dst: OrRule::OrRule
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:621,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:624,1
    - Dst: std::shared_ptr<DNSRule>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:625,1
    - Dst: NotRule::NotRule
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:625,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:628,1
    - Dst: std::shared_ptr<DNSRule>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:629,1
    - Dst: dnsdist::selectors::getLuaSelector
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:629,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:632,1
    - Dst: std::shared_ptr<DNSRule>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:633,1
    - Dst: dnsdist::selectors::getLuaFFISelector
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:633,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:636,1
    - Dst: checkParameterBound
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:637,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:637,1
    - Dst: std::shared_ptr<DNSRule>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:638,1
    - Dst: RCodeRule::RCodeRule
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:638,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:641,1
    - Dst: checkParameterBound
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:642,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:642,1
    - Dst: std::shared_ptr<DNSRule>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:643,1
    - Dst: ERCodeRule::ERCodeRule
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:643,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:646,1
    - Dst: std::make_shared<TimedIPSetRule>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:647,1
    - Dst: clear
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:651,1
    - Dst: cleanup
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:655,1
    - Dst: add
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:659,1
    - Dst: time
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:659,1
    - Dst: std::shared_ptr<DNSRule>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:662,1
    - Dst: std::dynamic_pointer_cast<DNSRule>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:663,1
    - Dst: toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:666,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:669,1
    - Dst: std::shared_ptr<DNSRule>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:670,1
    - Dst: dnsdist::selectors::getQNameSelector
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:670,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:670,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:673,1
    - Dst: std::shared_ptr<DNSRule>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:674,1
    - Dst: QNameSetRule::QNameSetRule
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:674,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:678,1
    - Dst: std::shared_ptr<DNSRule>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:679,1
    - Dst: dnsdist::selectors::getTagSelector
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:679,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:683,1
    - Dst: std::shared_ptr<DNSRule>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:684,1
    - Dst: KeyValueStoreLookupRule::KeyValueStoreLookupRule
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:684,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:687,1
    - Dst: std::shared_ptr<DNSRule>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:688,1
    - Dst: KeyValueStoreRangeLookupRule::KeyValueStoreRangeLookupRule
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc:688,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 113
    argCount: 1
    argNames:
    - ' luaCtx'
    argTypes:
    - LuaContext
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 693
      start: 545
    functionDepth: 2
    functionLinenumber: 545
    functionLinenumberEnd: 693
    functionName: setupLuaSelectors
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc
    functionUses: 0
    functionsReached:
    - QNameSetRule::QNameSetRule
    - add
    - toString
    - std::shared_ptr<DNSResponseAction>
    - NetmaskGroupRule::NetmaskGroupRule
    - ERCodeRule::ERCodeRule
    - boost::get<std::string>
    - std::dynamic_pointer_cast<DNSRule>
    - dnsdist::selectors::getQNameSelector
    - QType::chartocode
    - cleanup
    - NotRule::NotRule
    - std::shared_ptr<DNSRule>
    - boost::get<const LuaArray<std::string>>
    - boost::get<const NetmaskGroup&>
    - std::make_shared<TimedIPSetRule>
    - makeRule
    - boost::get<string>
    - dnsdist::selectors::getLuaSelector
    - dnsdist::selectors::getLuaFFISelector
    - time
    - string
    - size
    - dnsdist::selectors::getTagSelector
    - clear
    - writeFunction
    - type
    - string::c_str
    - pdns::max
    - NetmaskGroup::NetmaskGroup
    - KeyValueStoreRangeLookupRule::KeyValueStoreRangeLookupRule
    - std::runtime_error
    - QTypeRule::QTypeRule
    - RCodeRule::RCodeRule
    - DNSName
    - std::vector::reserve
    - checkParameterBound
    - OrRule::OrRule
    - KeyValueStoreLookupRule::KeyValueStoreLookupRule
    - d_matches::load
    - boost::get<unsigned int>
    - std::shared_ptr<DNSAction>
    - typeid
    - std::vector::emplace_back
    - AndRule::AndRule
    - NetmaskGroup::addMask
    - QClassRule::QClassRule
    linkageType: ''
    returnType: void
    signature: void setupLuaSelectors(LuaContext& luaCtx)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 44
    functionDepth: 0
    functionLinenumber: 44
    functionLinenumberEnd: 45
    functionName: DEBUGLOG
    functionSourceFile: /src/pdns/pdns/dnsdistdist/doh3.cc
    functionUses: 8
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEBUGLOG(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:55,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:55,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 4
    argNames:
    - ' peer'
    - ' localAddr'
    - config
    - ' conn'
    argTypes:
    - ComboAddress
    - ComboAddress
    - QuicheConfig
    - QuicheConnection
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 54
    functionDepth: 0
    functionLinenumber: 54
    functionLinenumberEnd: 57
    functionName: H3Connection::H3Connection
    functionSourceFile: /src/pdns/pdns/dnsdistdist/doh3.cc
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void H3Connection(const ComboAddress& peer, const ComboAddress& localAddr,
      QuicheConfig config, QuicheConnection&& conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 58
    functionDepth: 0
    functionLinenumber: 58
    functionLinenumberEnd: 58
    functionName: H3Connection::H3Connection
    functionSourceFile: /src/pdns/pdns/dnsdistdist/doh3.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void H3Connection(const H3Connection&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 59
    functionDepth: 0
    functionLinenumber: 59
    functionLinenumberEnd: 59
    functionName: H3Connection::H3Connection
    functionSourceFile: /src/pdns/pdns/dnsdistdist/doh3.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void H3Connection(H3Connection&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 60
    functionDepth: 0
    functionLinenumber: 60
    functionLinenumberEnd: 60
    functionName: '& operator=(const H3Connection&)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/doh3.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: H3Connection
    signature: H3Connection & operator=(const H3Connection&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 61
    functionDepth: 0
    functionLinenumber: 61
    functionLinenumberEnd: 61
    functionName: '& operator=(H3Connection&&)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/doh3.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: H3Connection
    signature: H3Connection & operator=(H3Connection&&)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::IncomingConcurrentTCPConnectionsManager::accountClosedTCPConnection
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:67,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 62
    functionDepth: 1
    functionLinenumber: 62
    functionLinenumberEnd: 73
    functionName: ~H3Connection()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/doh3.cc
    functionUses: 0
    functionsReached:
    - dnsdist::IncomingConcurrentTCPConnectionsManager::accountClosedTCPConnection
    linkageType: ''
    returnType: void
    signature: void ~H3Connection()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<const std::string>
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:78,1
    - Dst: getSNIFromQuicheConnection
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:78,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: H3Connection::getSNI
    functionSourceFile: /src/pdns/pdns/dnsdistdist/doh3.cc
    functionUses: 0
    functionsReached:
    - std::make_shared<const std::string>
    - getSNIFromQuicheConnection
    linkageType: ''
    returnType: std::shared_ptr<const std::string>
    signature: std::shared_ptr<const std::string> getSNI()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:100,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:100,1
    - Dst: pdns::channel::createObjectQueue<DOH3Unit>
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:103,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:104,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:105,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 3
    argNames:
    - ' config_'
    - ' http3config_'
    - internalPipeBufferSize
    argTypes:
    - QuicheConfig
    - QuicheHTTP3Config
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 107
      start: 99
    functionDepth: 0
    functionLinenumber: 99
    functionLinenumberEnd: 107
    functionName: DOH3ServerConfig
    functionSourceFile: /src/pdns/pdns/dnsdistdist/doh3.cc
    functionUses: 0
    functionsReached:
    - pdns::channel::createObjectQueue<DOH3Unit>
    - std::move
    linkageType: ''
    returnType: void
    signature: void DOH3ServerConfig(QuicheConfig&& config_, QuicheHTTP3Config&& http3config_,
      uint32_t internalPipeBufferSize)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 108
    functionDepth: 0
    functionLinenumber: 108
    functionLinenumberEnd: 108
    functionName: DOH3ServerConfig
    functionSourceFile: /src/pdns/pdns/dnsdistdist/doh3.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void DOH3ServerConfig(const DOH3ServerConfig&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 109
    functionDepth: 0
    functionLinenumber: 109
    functionLinenumberEnd: 109
    functionName: DOH3ServerConfig
    functionSourceFile: /src/pdns/pdns/dnsdistdist/doh3.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void DOH3ServerConfig(DOH3ServerConfig&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 110
    functionDepth: 0
    functionLinenumber: 110
    functionLinenumberEnd: 110
    functionName: '& operator=(const DOH3ServerConfig&)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/doh3.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: DOH3ServerConfig
    signature: DOH3ServerConfig & operator=(const DOH3ServerConfig&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 111
      start: 111
    functionDepth: 0
    functionLinenumber: 111
    functionLinenumberEnd: 111
    functionName: '& operator=(DOH3ServerConfig&&)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/doh3.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: DOH3ServerConfig
    signature: DOH3ServerConfig & operator=(DOH3ServerConfig&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 112
      start: 112
    functionDepth: 0
    functionLinenumber: 112
    functionLinenumberEnd: 112
    functionName: ~DOH3ServerConfig()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/doh3.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~DOH3ServerConfig()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 128
    functionDepth: 0
    functionLinenumber: 128
    functionLinenumberEnd: 128
    functionName: DOH3Frontend::DOH3Frontend
    functionSourceFile: /src/pdns/pdns/dnsdistdist/doh3.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void DOH3Frontend::DOH3Frontend()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 129
      start: 129
    functionDepth: 0
    functionLinenumber: 129
    functionLinenumberEnd: 129
    functionName: DOH3Frontend::~DOH3Frontend()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/doh3.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void DOH3Frontend::~DOH3Frontend()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 134
      start: 134
    functionDepth: 0
    functionLinenumber: 134
    functionLinenumberEnd: 134
    functionName: DOH3TCPCrossQuerySender::DOH3TCPCrossQuerySender
    functionSourceFile: /src/pdns/pdns/dnsdistdist/doh3.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void DOH3TCPCrossQuerySender()
  - 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: DOH3TCPCrossQuerySender::active
    functionSourceFile: /src/pdns/pdns/dnsdistdist/doh3.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool active() const override
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:147,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:152,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:153,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:157,1
    - Dst: DNSResponse::getHeader
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:157,1
    - Dst: isAsync
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:159,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:161,1
    - Dst: processResponse
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:163,1
    - Dst: sendBackDOH3Unit
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:166,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:166,1
    - Dst: DNSResponse::isAsynchronous
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:171,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:175,1
    - Dst: auto::ids::queryRealTime::udiff
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:179,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:180,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:180,1
    - Dst: auto::downstream::d_config::remote::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:180,1
    - Dst: auto::ids::origRemote::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:180,1
    - Dst: auto::response::size
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:180,1
    - Dst: DNSResponse::getLogger
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:181,1
    - Dst: auto::downstream::getProtocol
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:183,1
    - Dst: handleResponseSent
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:187,1
    - Dst: auto::response::size
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:187,1
    - Dst: sendBackDOH3Unit
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:195,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:195,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 35
    argCount: 2
    argNames:
    - ' now'
    - ' response'
    argTypes:
    - struct timeval
    - TCPResponse
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 196
      start: 141
    functionDepth: 1
    functionLinenumber: 141
    functionLinenumberEnd: 196
    functionName: DOH3TCPCrossQuerySender::handleResponse
    functionSourceFile: /src/pdns/pdns/dnsdistdist/doh3.cc
    functionUses: 0
    functionsReached:
    - auto::downstream::getProtocol
    - DNSResponse::getHeader
    - memcpy
    - std::move
    - auto::ids::queryRealTime::udiff
    - sendBackDOH3Unit
    - processResponse
    - DNSResponse::isAsynchronous
    - VERBOSESLOG
    - infolog
    - auto::downstream::d_config::remote::toStringWithPort
    - auto::response::size
    - isAsync
    - handleResponseSent
    - auto::ids::origRemote::toStringWithPort
    - DNSResponse::getLogger
    linkageType: ''
    returnType: void
    signature: void handleResponse([[maybe_unused]] const struct timeval& now, TCPResponse&&
      response) override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DOH3TCPCrossQuerySender::handleResponse
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:200,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:200,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 2
    argNames:
    - ' now'
    - ' response'
    argTypes:
    - struct timeval
    - TCPResponse
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 201
      start: 198
    functionDepth: 0
    functionLinenumber: 198
    functionLinenumberEnd: 201
    functionName: DOH3TCPCrossQuerySender::handleXFRResponse
    functionSourceFile: /src/pdns/pdns/dnsdistdist/doh3.cc
    functionUses: 0
    functionsReached:
    - std::move
    - DOH3TCPCrossQuerySender::handleResponse
    linkageType: ''
    returnType: void
    signature: void handleXFRResponse(const struct timeval& now, TCPResponse&& response)
      override
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:209,1
    - Dst: auto::response::clear
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:215,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:216,1
    - Dst: sendBackDOH3Unit
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:217,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:217,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - ' now'
    - ' response'
    argTypes:
    - struct timeval
    - TCPResponse
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 218
      start: 203
    functionDepth: 1
    functionLinenumber: 203
    functionLinenumberEnd: 218
    functionName: DOH3TCPCrossQuerySender::notifyIOError
    functionSourceFile: /src/pdns/pdns/dnsdistdist/doh3.cc
    functionUses: 0
    functionsReached:
    - std::move
    - auto::response::clear
    - sendBackDOH3Unit
    linkageType: ''
    returnType: void
    signature: void notifyIOError([[maybe_unused]] const struct timeval& now, TCPResponse&&
      response) override
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: InternalQuery
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:228,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:228,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:228,1
    - Dst: InternalQuery
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:233,1
    - Dst: PacketBuffer
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:233,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:233,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:238,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - ' unit'
    - isResponse
    argTypes:
    - DOH3UnitUniquePtr
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 248
      start: 224
    functionDepth: 0
    functionLinenumber: 224
    functionLinenumberEnd: 248
    functionName: DOH3CrossProtocolQuery::DOH3CrossProtocolQuery
    functionSourceFile: /src/pdns/pdns/dnsdistdist/doh3.cc
    functionUses: 0
    functionsReached:
    - PacketBuffer
    - std::move
    - InternalQuery
    linkageType: ''
    returnType: void
    signature: void DOH3CrossProtocolQuery(DOH3UnitUniquePtr&& unit, bool isResponse)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sendBackDOH3Unit
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:252,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:252,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 253
      start: 250
    functionDepth: 1
    functionLinenumber: 250
    functionLinenumberEnd: 253
    functionName: DOH3CrossProtocolQuery::handleInternalError
    functionSourceFile: /src/pdns/pdns/dnsdistdist/doh3.cc
    functionUses: 0
    functionsReached:
    - std::move
    - sendBackDOH3Unit
    linkageType: ''
    returnType: void
    signature: void handleInternalError()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 259
      start: 255
    functionDepth: 0
    functionLinenumber: 255
    functionLinenumberEnd: 259
    functionName: DOH3CrossProtocolQuery::getTCPQuerySender
    functionSourceFile: /src/pdns/pdns/dnsdistdist/doh3.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::shared_ptr<TCPQuerySender>
    signature: std::shared_ptr<TCPQuerySender> getTCPQuerySender() override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 266
      start: 261
    functionDepth: 0
    functionLinenumber: 261
    functionLinenumberEnd: 266
    functionName: DOH3CrossProtocolQuery::getDQ
    functionSourceFile: /src/pdns/pdns/dnsdistdist/doh3.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: DNSQuestion
    signature: DNSQuestion getDQ() override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 273
      start: 268
    functionDepth: 0
    functionLinenumber: 268
    functionLinenumberEnd: 273
    functionName: DOH3CrossProtocolQuery::getDR
    functionSourceFile: /src/pdns/pdns/dnsdistdist/doh3.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: DNSResponse
    signature: DNSResponse getDR() override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:277,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 278
      start: 275
    functionDepth: 0
    functionLinenumber: 275
    functionLinenumberEnd: 278
    functionName: '&& releaseDU()'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/doh3.cc
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: DOH3UnitUniquePtr
    signature: DOH3UnitUniquePtr && releaseDU()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:289,1
    - Dst: quiche_h3_send_body
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:291,1
    - Dst: d_http3::get
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:291,1
    - Dst: d_conn::get
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:291,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:292,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:292,1
    - Dst: erase
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:294,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:294,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:294,1
    - Dst: static_cast<ssize_t>
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:294,1
    - Dst: quiche_conn_stream_shutdown
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:299,1
    - Dst: d_conn::get
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:299,1
    - Dst: static_cast<uint64_t>
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:299,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 3
    argNames:
    - ' conn'
    - streamID
    - ' response'
    argTypes:
    - H3Connection
    - uint64_t
    - PacketBuffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 306
      start: 286
    functionDepth: 0
    functionLinenumber: 286
    functionLinenumberEnd: 306
    functionName: tryWriteResponse
    functionSourceFile: /src/pdns/pdns/dnsdistdist/doh3.cc
    functionUses: 0
    functionsReached:
    - static_cast<ssize_t>
    - static_cast<uint64_t>
    - d_http3::get
    - size
    - begin
    - quiche_conn_stream_shutdown
    - quiche_h3_send_body
    - d_conn::get
    - erase
    - at
    linkageType: ''
    returnType: bool
    signature: bool tryWriteResponse(H3Connection& conn, const uint64_t streamID,
      PacketBuffer& response)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: emplace_back
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:310,1
    - Dst: reinterpret_cast<const uint8_t*>
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:312,1
    - Dst: reinterpret_cast<const uint8_t*>
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:315,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - ' headers'
    - name
    - nameLen
    - value
    - valueLen
    argTypes:
    - std::vector<quiche_h3_header>
    - char*
    - size_t
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 318
      start: 308
    functionDepth: 0
    functionLinenumber: 308
    functionLinenumberEnd: 318
    functionName: addHeaderToList
    functionSourceFile: /src/pdns/pdns/dnsdistdist/doh3.cc
    functionUses: 0
    functionsReached:
    - reinterpret_cast<const uint8_t*>
    - emplace_back
    linkageType: ''
    returnType: void
    signature: void addHeaderToList(std::vector<quiche_h3_header>& headers, const
      char* name, size_t nameLen, const char* value, size_t valueLen)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:322,1
    - Dst: std::vector::reserve
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:326,1
    - Dst: addHeaderToList
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:327,1
    - Dst: std::string::data
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:327,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:327,1
    - Dst: addHeaderToList
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:331,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:331,1
    - Dst: addHeaderToList
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:335,1
    - Dst: std::string::data
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:335,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:335,1
    - Dst: PacketBuffer::reserve
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:336,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:336,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:336,1
    - Dst: PacketBuffer::insert
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:337,1
    - Dst: PacketBuffer::begin
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:337,1
    - Dst: std::string::begin
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:337,1
    - Dst: std::string::end
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:337,1
    - Dst: PacketBuffer::insert
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:339,1
    - Dst: PacketBuffer::end
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:339,1
    - Dst: PacketBuffer::insert
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:340,1
    - Dst: PacketBuffer::end
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:340,1
    - Dst: std::string::begin
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:340,1
    - Dst: std::string::end
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:340,1
    - Dst: PacketBuffer::data
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:341,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:342,1
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:344,1
    - Dst: addHeaderToList
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:346,1
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:346,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:346,1
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:346,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:346,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:349,1
    - Dst: addHeaderToList
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:350,1
    - Dst: std::string::data
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:350,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:350,1
    - Dst: quiche_h3_send_response
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:352,1
    - Dst: d_http3::get
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:352,1
    - Dst: d_conn::get
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:352,1
    - Dst: std::vector::data
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:353,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:354,1
    - Dst: quiche_conn_stream_shutdown
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:358,1
    - Dst: d_conn::get
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:358,1
    - Dst: static_cast<uint64_t>
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:358,1
    - Dst: quiche_h3_send_body
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:369,1
    - Dst: d_http3::get
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:369,1
    - Dst: d_conn::get
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:369,1
    - Dst: const_cast<uint8_t*>
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:371,1
    - Dst: PacketBuffer
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:374,1
    - Dst: quiche_conn_stream_shutdown
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:379,1
    - Dst: d_conn::get
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:379,1
    - Dst: static_cast<uint64_t>
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:379,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 35
    argCount: 5
    argNames:
    - ' conn'
    - streamID
    - statusCode
    - body
    - len
    argTypes:
    - H3Connection
    - uint64_t
    - uint16_t
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 384
      start: 320
    functionDepth: 1
    functionLinenumber: 320
    functionLinenumberEnd: 384
    functionName: h3_send_response
    functionSourceFile: /src/pdns/pdns/dnsdistdist/doh3.cc
    functionUses: 1
    functionsReached:
    - std::to_string
    - PacketBuffer::end
    - std::string::end
    - PacketBuffer::size
    - const_cast<uint8_t*>
    - std::string::size
    - std::vector::data
    - PacketBuffer::begin
    - std::vector::size
    - size
    - quiche_h3_send_body
    - empty
    - std::string::begin
    - d_conn::get
    - static_cast<uint64_t>
    - std::string::data
    - d_http3::get
    - std::vector::reserve
    - quiche_conn_stream_shutdown
    - reinterpret_cast<const char*>
    - PacketBuffer::data
    - PacketBuffer::insert
    - PacketBuffer::reserve
    - addHeaderToList
    - PacketBuffer
    - data
    - quiche_h3_send_response
    linkageType: ''
    returnType: void
    signature: void h3_send_response(H3Connection& conn, const uint64_t streamID,
      uint16_t statusCode, const uint8_t* body, size_t len, const std::string& contentType
      = {})
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: h3_send_response
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:389,1
    - Dst: reinterpret_cast<const uint8_t*>
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:389,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:389,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:389,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' conn'
    - streamID
    - statusCode
    argTypes:
    - H3Connection
    - uint64_t
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 390
      start: 386
    functionDepth: 1
    functionLinenumber: 386
    functionLinenumberEnd: 390
    functionName: h3_send_response
    functionSourceFile: /src/pdns/pdns/dnsdistdist/doh3.cc
    functionUses: 2
    functionsReached:
    - size
    - h3_send_response
    - reinterpret_cast<const uint8_t*>
    - data
    linkageType: ''
    returnType: void
    signature: void h3_send_response(H3Connection& conn, const uint64_t streamID,
      uint16_t statusCode, const std::string& content = {})
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:400,1
    - Dst: quiche_conn_stream_shutdown
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:401,1
    - Dst: d_conn::get
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:401,1
    - Dst: static_cast<uint64_t>
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:401,1
    - Dst: h3_send_response
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:404,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:404,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:404,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 6
    argNames:
    - ' frontend'
    - ' conn'
    - streamID
    - statusCode
    - ' response'
    - ' contentType'
    argTypes:
    - DOH3Frontend
    - H3Connection
    - uint64_t
    - uint16_t
    - PacketBuffer
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 406
      start: 392
    functionDepth: 2
    functionLinenumber: 392
    functionLinenumberEnd: 406
    functionName: handleResponse
    functionSourceFile: /src/pdns/pdns/dnsdistdist/doh3.cc
    functionUses: 6
    functionsReached:
    - d_conn::get
    - static_cast<uint64_t>
    - size
    - quiche_conn_stream_shutdown
    - empty
    - at
    - h3_send_response
    linkageType: ''
    returnType: void
    signature: void handleResponse(DOH3Frontend& frontend, H3Connection& conn, const
      uint64_t streamID, uint16_t statusCode, const PacketBuffer& response, const
      std::string& contentType)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: QuicheConfig
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:410,1
    - Dst: quiche_config_new
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:410,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:411,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:411,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:411,1
    - Dst: configureQuiche
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:412,1
    - Dst: QuicheHTTP3Config
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:414,1
    - Dst: quiche_h3_config_new
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:414,1
    - Dst: std::make_unique<DOH3ServerConfig>
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:416,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:416,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:416,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 417
      start: 408
    functionDepth: 0
    functionLinenumber: 408
    functionLinenumberEnd: 417
    functionName: DOH3Frontend::setup
    functionSourceFile: /src/pdns/pdns/dnsdistdist/doh3.cc
    functionUses: 0
    functionsReached:
    - std::make_unique<DOH3ServerConfig>
    - std::move
    - configureQuiche
    - QuicheConfig
    - end
    - quiche_h3_config_new
    - quiche_config_new
    - begin
    - QuicheHTTP3Config
    - std::string
    linkageType: ''
    returnType: void
    signature: void DOH3Frontend::setup()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: QuicheConfig
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:421,1
    - Dst: quiche_config_new
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:421,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:422,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:422,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:422,1
    - Dst: configureQuiche
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:423,1
    - Dst: std::atomic_store_explicit
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:424,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:424,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 425
      start: 419
    functionDepth: 0
    functionLinenumber: 419
    functionLinenumberEnd: 425
    functionName: DOH3Frontend::reloadCertificates
    functionSourceFile: /src/pdns/pdns/dnsdistdist/doh3.cc
    functionUses: 0
    functionsReached:
    - std::move
    - configureQuiche
    - QuicheConfig
    - end
    - std::atomic_store_explicit
    - quiche_config_new
    - begin
    - std::string
    linkageType: ''
    returnType: void
    signature: void DOH3Frontend::reloadCertificates()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: find
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:429,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:430,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - ' connMap'
    - ' connID'
    argTypes:
    - DOH3ServerConfig::ConnectionsMap
    - PacketBuffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 434
      start: 427
    functionDepth: 0
    functionLinenumber: 427
    functionLinenumberEnd: 434
    functionName: getConnection
    functionSourceFile: /src/pdns/pdns/dnsdistdist/doh3.cc
    functionUses: 1
    functionsReached:
    - end
    - find
    linkageType: ''
    returnType: std::optional<std::reference_wrapper<H3Connection>>
    signature: std::optional<std::reference_wrapper<H3Connection>> getConnection(DOH3ServerConfig::ConnectionsMap&
      connMap, const PacketBuffer& connID)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dsc::d_responseSender::send
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:442,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:442,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:444,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:444,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:445,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:445,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:445,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:449,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:449,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:449,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:450,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:450,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:450,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:450,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 2
    argNames:
    - ' unit'
    - description
    argTypes:
    - DOH3UnitUniquePtr
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 452
      start: 436
    functionDepth: 1
    functionLinenumber: 436
    functionLinenumberEnd: 452
    functionName: sendBackDOH3Unit
    functionSourceFile: /src/pdns/pdns/dnsdistdist/doh3.cc
    functionUses: 3
    functionsReached:
    - std::move
    - what
    - VERBOSESLOG
    - infolog
    - dsc::d_responseSender::send
    - dnsdist::logging::getTopLogger
    - std::string
    linkageType: ''
    returnType: void
    signature: void sendBackDOH3Unit(DOH3UnitUniquePtr&& unit, const char* description)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::atomic_load_explicit
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:456,1
    - Dst: QuicheConnection
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:457,1
    - Dst: quiche_accept
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:457,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:457,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:457,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:458,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:458,1
    - Dst: reinterpret_cast<const struct sockaddr*>
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:460,1
    - Dst: getSocklen
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:461,1
    - Dst: reinterpret_cast<const struct sockaddr*>
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:463,1
    - Dst: getSocklen
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:464,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:465,1
    - Dst: df::d_quicheParams::d_keyLogFile::empty
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:468,1
    - Dst: quiche_conn_set_keylog_path
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:469,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:469,1
    - Dst: df::d_quicheParams::d_keyLogFile::c_str
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:469,1
    - Dst: H3Connection
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:472,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:472,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:472,1
    - Dst: d_connections::emplace
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:473,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:473,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 5
    argNames:
    - ' config'
    - ' serverSideID'
    - ' originalDestinationID'
    - ' localAddr'
    - ' peer'
    argTypes:
    - DOH3ServerConfig
    - PacketBuffer
    - PacketBuffer
    - ComboAddress
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 475
      start: 454
    functionDepth: 0
    functionLinenumber: 454
    functionLinenumberEnd: 475
    functionName: createConnection
    functionSourceFile: /src/pdns/pdns/dnsdistdist/doh3.cc
    functionUses: 0
    functionsReached:
    - std::move
    - QuicheConnection
    - auto::get
    - std::atomic_load_explicit
    - H3Connection
    - size
    - reinterpret_cast<const struct sockaddr*>
    - quiche_conn_set_keylog_path
    - df::d_quicheParams::d_keyLogFile::c_str
    - data
    - quiche_accept
    - getSocklen
    - d_connections::emplace
    - df::d_quicheParams::d_keyLogFile::empty
    linkageType: ''
    returnType: std::optional<std::reference_wrapper<H3Connection>>
    signature: std::optional<std::reference_wrapper<H3Connection>> createConnection(DOH3ServerConfig&
      config, const PacketBuffer& serverSideID, const PacketBuffer& originalDestinationID,
      const ComboAddress& localAddr, const ComboAddress& peer)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:480,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:483,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:485,1
    - Dst: getHeader
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:488,1
    - Dst: auto::query::data
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:491,1
    - Dst: getMutableData
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:491,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:492,1
    - Dst: getMutableData
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:492,1
    - Dst: auto::response::data
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:496,1
    - Dst: getMutableData
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:496,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:497,1
    - Dst: getMutableData
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:497,1
    - Dst: std::make_unique<DOH3CrossProtocolQuery>
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:501,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:501,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 2
    argNames:
    - ' dnsQuestion'
    - isResponse
    argTypes:
    - DNSQuestion
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 502
      start: 477
    functionDepth: 1
    functionLinenumber: 477
    functionLinenumberEnd: 502
    functionName: getDOH3CrossProtocolQueryFromDQ
    functionSourceFile: /src/pdns/pdns/dnsdistdist/doh3.cc
    functionUses: 0
    functionsReached:
    - std::move
    - getMutableData
    - std::runtime_error
    - auto::response::data
    - getHeader
    - auto::query::data
    - std::make_unique<DOH3CrossProtocolQuery>
    linkageType: ''
    returnType: std::unique_ptr<CrossProtocolQuery>
    signature: std::unique_ptr<CrossProtocolQuery> getDOH3CrossProtocolQueryFromDQ(DNSQuestion&
      dnsQuestion, bool isResponse)
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: DEBUGLOG
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:507,1
    - Dst: getConnection
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:508,1
    - Dst: handleResponse
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:509,1
    - Dst: ids::doh3u::reset
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:510,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:514,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:525,1
    - Dst: match
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:525,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:526,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:526,1
    - Dst: ComboAddress::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:526,1
    - Dst: DOH3ServerConfig*::df::getLogger
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:527,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:527,1
    - Dst: response::clear
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:529,1
    - Dst: handleImmediateResponse
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:532,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:532,1
    - Dst: matches
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:541,1
    - Dst: getHTTPPath
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:541,1
    - Dst: getHeaders
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:542,1
    - Dst: getStatusCode
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:543,1
    - Dst: getContent
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:544,1
    - Dst: handleImmediateResponse
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:549,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:549,1
    - Dst: query::size
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:555,1
    - Dst: response::clear
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:558,1
    - Dst: handleImmediateResponse
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:561,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:561,1
    - Dst: ids::queryRealTime::start
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:567,1
    - Dst: query::data
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:571,1
    - Dst: checkQueryHeaders
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:573,1
    - Dst: dnsdist::PacketMangling::editDNSHeaderFromPacket
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:574,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:579,1
    - Dst: handleImmediateResponse
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:582,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:582,1
    - Dst: dnsdist::PacketMangling::editDNSHeaderFromPacket
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:587,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:592,1
    - Dst: handleImmediateResponse
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:595,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:595,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:599,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:604,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:604,1
    - Dst: query::data
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:604,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:604,1
    - Dst: query::size
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:604,1
    - Dst: dnsdist::PacketMangling::editDNSHeaderFromPacket
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:606,1
    - Dst: DNSQuestion::getMutableData
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:606,1
    - Dst: getFlagsFromDNSHeader
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:607,1
    - Dst: processQuery
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:616,1
    - Dst: handleImmediateResponse
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:619,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:619,1
    - Dst: response::empty
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:626,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:627,1
    - Dst: response::size
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:629,1
    - Dst: response::data
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:630,1
    - Dst: handleResponseSent
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:632,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:632,1
    - Dst: QType
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:632,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:632,1
    - Dst: response::size
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:632,1
    - Dst: handleImmediateResponse
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:634,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:634,1
    - Dst: handleImmediateResponse
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:645,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:645,1
    - Dst: handleImmediateResponse
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:651,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:651,1
    - Dst: getProxyProtocolPayload
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:661,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:664,1
    - Dst: std::make_unique<DOH3CrossProtocolQuery>
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:668,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:668,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:669,1
    - Dst: auto::passCrossProtocolQuery
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:671,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:671,1
    - Dst: auto::releaseDU
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:678,1
    - Dst: handleImmediateResponse
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:680,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:680,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:686,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:686,1
    - Dst: ComboAddress::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:686,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:686,1
    - Dst: dsc::df::getLogger
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:687,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:687,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:687,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:687,1
    - Dst: handleImmediateResponse
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:689,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:689,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 128
    argCount: 1
    argNames:
    - ' doh3Unit'
    argTypes:
    - DOH3UnitUniquePtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 693
      start: 504
    functionDepth: 2
    functionLinenumber: 504
    functionLinenumberEnd: 693
    functionName: processDOH3Query
    functionSourceFile: /src/pdns/pdns/dnsdistdist/doh3.cc
    functionUses: 0
    functionsReached:
    - processQuery
    - DEBUGLOG
    - ntohs
    - getFlagsFromDNSHeader
    - handleResponseSent
    - response::size
    - static_cast<int>
    - matches
    - Logging::Loggable
    - QType
    - handleResponse
    - match
    - query::data
    - getProxyProtocolPayload
    - htons
    - auto::passCrossProtocolQuery
    - dnsdist::configuration::getCurrentRuntimeConfiguration
    - response::data
    - VERBOSESLOG
    - query::size
    - handleImmediateResponse
    - DNSName
    - reinterpret_cast<const char*>
    - getStatusCode
    - getHeaders
    - getHTTPPath
    - DNSQuestion::getMutableData
    - ComboAddress::toStringWithPort
    - ids::doh3u::reset
    - response::empty
    - std::move
    - ComboAddress
    - std::make_unique<DOH3CrossProtocolQuery>
    - getConnection
    - what
    - DOH3ServerConfig*::df::getLogger
    - infolog
    - getContent
    - auto::releaseDU
    - checkQueryHeaders
    - ids::queryRealTime::start
    - dsc::df::getLogger
    - dnsdist::PacketMangling::editDNSHeaderFromPacket
    - response::clear
    linkageType: ''
    returnType: void
    signature: void processDOH3Query(DOH3UnitUniquePtr&& doh3Unit)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::make_unique<DOH3Unit>
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:698,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:698,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:706,1
    - Dst: processDOH3Query
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:708,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:708,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:711,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:711,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:711,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:711,1
    - Dst: df::getLogger
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:712,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:712,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:712,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 8
    argNames:
    - ' dsc'
    - ' query'
    - ' local'
    - ' remote'
    - ' serverConnID'
    - streamID
    - ' sni'
    - ' headers'
    argTypes:
    - DOH3ServerConfig
    - PacketBuffer
    - ComboAddress
    - ComboAddress
    - PacketBuffer
    - uint64_t
    - std::shared_ptr<const std::string>
    - dnsdist::doh3::h3_headers_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 714
      start: 695
    functionDepth: 3
    functionLinenumber: 695
    functionLinenumberEnd: 714
    functionName: doh3_dispatch_query
    functionSourceFile: /src/pdns/pdns/dnsdistdist/doh3.cc
    functionUses: 0
    functionsReached:
    - std::move
    - Logging::Loggable
    - what
    - std::make_unique<DOH3Unit>
    - VERBOSESLOG
    - infolog
    - df::getLogger
    - toStringWithPort
    - processDOH3Query
    linkageType: ''
    returnType: void
    signature: void doh3_dispatch_query(DOH3ServerConfig& dsc, PacketBuffer&& query,
      const ComboAddress& local, const ComboAddress& remote, const PacketBuffer& serverConnID,
      const uint64_t streamID, const std::shared_ptr<const std::string>& sni, dnsdist::doh3::h3_headers_t&&
      headers)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: receive
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:720,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:725,1
    - Dst: getConnection
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:726,1
    - Dst: handleResponse
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:728,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:732,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:732,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:732,1
    - Dst: error
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:733,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:733,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:736,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:736,1
    - Dst: info
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:737,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 2
    argNames:
    - ' receiver'
    - ' frontendLogger'
    argTypes:
    - pdns::channel::Receiver<DOH3Unit>
    - Logr::Logger
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 740
      start: 716
    functionDepth: 0
    functionLinenumber: 716
    functionLinenumberEnd: 740
    functionName: flushResponses
    functionSourceFile: /src/pdns/pdns/dnsdistdist/doh3.cc
    functionUses: 0
    functionsReached:
    - errlog
    - std::move
    - SLOG
    - getConnection
    - what
    - handleResponse
    - info
    - receive
    - error
    linkageType: ''
    returnType: void
    signature: void flushResponses(pdns::channel::Receiver<DOH3Unit>& receiver, const
      Logr::Logger& frontendLogger)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: d_streamOutBuffers::begin
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:744,1
    - Dst: d_streamOutBuffers::end
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:744,1
    - Dst: quiche_conn_stream_writable
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:747,1
    - Dst: d_conn::get
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:747,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:747,1
    - Dst: tryWriteResponse
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:748,1
    - Dst: d_streamOutBuffers::erase
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:749,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 1
    argNames:
    - ' conn'
    argTypes:
    - H3Connection
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 755
      start: 742
    functionDepth: 0
    functionLinenumber: 742
    functionLinenumberEnd: 755
    functionName: flushStalledResponses
    functionSourceFile: /src/pdns/pdns/dnsdistdist/doh3.cc
    functionUses: 0
    functionsReached:
    - d_streamOutBuffers::begin
    - d_streamOutBuffers::end
    - tryWriteResponse
    - size
    - d_streamOutBuffers::erase
    - d_conn::get
    - quiche_conn_stream_writable
    linkageType: ''
    returnType: void
    signature: void flushStalledResponses(H3Connection& conn)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: DEBUGLOG
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:839,1
    - Dst: h3_send_response
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:843,1
    - Dst: d_headersBuffers::at
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:845,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:847,1
    - Dst: handleImmediateError
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:848,1
    - Dst: count
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:852,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:852,1
    - Dst: handleImmediateError
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:853,1
    - Dst: resize
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:857,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:857,1
    - Dst: resize
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:861,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:861,1
    - Dst: quiche_h3_recv_body
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:862,1
    - Dst: d_http3::get
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:862,1
    - Dst: d_conn::get
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:863,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:864,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:864,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:870,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:870,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:870,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:870,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:871,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:871,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:871,1
    - Dst: d_logger::info
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:872,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:872,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:872,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:872,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:872,1
    - Dst: d_streamBuffers::erase
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:873,1
    - Dst: handleImmediateError
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:874,1
    - Dst: resize
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:878,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:878,1
    - Dst: insert
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:879,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:879,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:879,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:879,1
    - Dst: quiche_conn_stream_finished
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:882,1
    - Dst: d_conn::get
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:882,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:886,1
    - Dst: d_streamBuffers::erase
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:887,1
    - Dst: handleImmediateError
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:888,1
    - Dst: DEBUGLOG
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:892,1
    - Dst: doh3_dispatch_query
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:893,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:893,1
    - Dst: getSNI
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:893,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:893,1
    - Dst: d_headersBuffers::erase
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:894,1
    - Dst: d_streamBuffers::erase
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:895,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 42
    argCount: 7
    argNames:
    - ' clientState'
    - ' frontend'
    - ' conn'
    - ' client'
    - ' serverConnID'
    - streamID
    - ' buffer'
    argTypes:
    - ClientState
    - DOH3Frontend
    - H3Connection
    - ComboAddress
    - PacketBuffer
    - uint64_t
    - PacketBuffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 896
      start: 836
    functionDepth: 4
    functionLinenumber: 836
    functionLinenumberEnd: 896
    functionName: processH3DataEvent
    functionSourceFile: /src/pdns/pdns/dnsdistdist/doh3.cc
    functionUses: 0
    functionsReached:
    - d_logger::info
    - DEBUGLOG
    - quiche_conn_stream_finished
    - insert
    - d_streamBuffers::erase
    - static_cast<size_t>
    - resize
    - Logging::Loggable
    - quiche_h3_recv_body
    - size
    - begin
    - d_headersBuffers::erase
    - at
    - h3_send_response
    - pdns::max
    - VERBOSESLOG
    - d_http3::get
    - handleImmediateError
    - doh3_dispatch_query
    - std::move
    - count
    - d_headersBuffers::at
    - end
    - infolog
    - data
    - d_conn::get
    - getSNI
    linkageType: ''
    returnType: void
    signature: void processH3DataEvent(ClientState& clientState, DOH3Frontend& frontend,
      H3Connection& conn, const ComboAddress& client, const PacketBuffer& serverConnID,
      const uint64_t streamID, PacketBuffer& buffer)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: quiche_h3_conn_poll
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:903,1
    - Dst: d_http3::get
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:903,1
    - Dst: d_conn::get
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:904,1
    - Dst: d_headersBuffers::try_emplace
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:912,1
    - Dst: quiche_h3_event_type
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:914,1
    - Dst: std::unique_ptr::get
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:914,1
    - Dst: processH3HeaderEvent
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:916,1
    - Dst: std::unique_ptr::get
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:916,1
    - Dst: processH3DataEvent
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:920,1
    - Dst: d_headersBuffers::erase
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:925,1
    - Dst: d_streamBuffers::erase
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:926,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 26
    argCount: 6
    argNames:
    - ' clientState'
    - ' frontend'
    - ' conn'
    - ' client'
    - ' serverConnID'
    - ' buffer'
    argTypes:
    - ClientState
    - DOH3Frontend
    - H3Connection
    - ComboAddress
    - PacketBuffer
    - PacketBuffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 933
      start: 898
    functionDepth: 5
    functionLinenumber: 898
    functionLinenumberEnd: 933
    functionName: processH3Events
    functionSourceFile: /src/pdns/pdns/dnsdistdist/doh3.cc
    functionUses: 0
    functionsReached:
    - quiche_h3_conn_poll
    - d_headersBuffers::try_emplace
    - d_headersBuffers::erase
    - d_http3::get
    - processH3DataEvent
    - processH3HeaderEvent
    - d_conn::get
    - d_streamBuffers::erase
    - std::unique_ptr::get
    - quiche_h3_event_type
    linkageType: ''
    returnType: void
    signature: void processH3Events(ClientState& clientState, DOH3Frontend& frontend,
      H3Connection& conn, const ComboAddress& client, const PacketBuffer& serverConnID,
      PacketBuffer& buffer)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: resize
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:947,1
    - Dst: dnsdist::doq::recvAsync
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:948,1
    - Dst: DEBUGLOG
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:959,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:959,1
    - Dst: ComboAddress::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:959,1
    - Dst: std::array::size
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:964,1
    - Dst: std::array::size
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:966,1
    - Dst: std::array::size
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:968,1
    - Dst: quiche_header_info
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:970,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:970,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:970,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:972,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:973,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:974,1
    - Dst: DEBUGLOG
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:976,1
    - Dst: PacketBuffer::assign
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:980,1
    - Dst: std::array::begin
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:980,1
    - Dst: std::array::begin
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:980,1
    - Dst: PacketBuffer::assign
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:982,1
    - Dst: std::array::begin
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:982,1
    - Dst: std::array::begin
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:982,1
    - Dst: getConnection
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:983,1
    - Dst: DEBUGLOG
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:986,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:987,1
    - Dst: DEBUGLOG
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:988,1
    - Dst: quiche_version_is_supported
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:992,1
    - Dst: DEBUGLOG
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:993,1
    - Dst: handleVersionNegotiation
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:995,1
    - Dst: local::isUnspecified
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:995,1
    - Dst: DEBUGLOG
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:1001,1
    - Dst: handleStatelessRetry
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:1002,1
    - Dst: local::isUnspecified
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:1002,1
    - Dst: PacketBuffer::assign
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:1006,1
    - Dst: std::array::begin
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:1006,1
    - Dst: std::array::begin
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:1006,1
    - Dst: validateToken
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:1007,1
    - Dst: DEBUGLOG
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:1010,1
    - Dst: dnsdist::IncomingConcurrentTCPConnectionsManager::accountNewTCPConnection
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:1014,1
    - Dst: DEBUGLOG
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:1016,1
    - Dst: DEBUGLOG
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:1020,1
    - Dst: createConnection
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:1021,1
    - Dst: DEBUGLOG
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:1026,1
    - Dst: reinterpret_cast<struct sockaddr*>
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:1029,1
    - Dst: ComboAddress::getSocklen
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:1030,1
    - Dst: reinterpret_cast<struct sockaddr*>
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:1032,1
    - Dst: ComboAddress::getSocklen
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:1033,1
    - Dst: quiche_conn_recv
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:1036,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:1036,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:1036,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:1036,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:1036,1
    - Dst: quiche_conn_is_established
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:1041,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:1041,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:1041,1
    - Dst: quiche_conn_is_in_early_data
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:1041,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:1041,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:1041,1
    - Dst: DEBUGLOG
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:1042,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:1044,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:1045,1
    - Dst: QuicheHTTP3Connection
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:1045,1
    - Dst: quiche_h3_conn_new_with_transport
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:1045,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:1045,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:1045,1
    - Dst: d_server_config::http3config::get
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:1045,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:1047,1
    - Dst: DEBUGLOG
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:1050,1
    - Dst: processH3Events
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:1053,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:1053,1
    - Dst: flushEgress
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:1055,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:1055,1
    - Dst: local::isUnspecified
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:1055,1
    - Dst: DEBUGLOG
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:1058,1
    CyclomaticComplexity: 25
    EdgeCount: 25
    ICount: 72
    argCount: 4
    argNames:
    - ' frontend'
    - ' clientState'
    - ' sock'
    - ' buffer'
    argTypes:
    - DOH3Frontend
    - ClientState
    - Socket
    - PacketBuffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1061
      start: 935
    functionDepth: 6
    functionLinenumber: 935
    functionLinenumberEnd: 1061
    functionName: handleSocketReadable
    functionSourceFile: /src/pdns/pdns/dnsdistdist/doh3.cc
    functionUses: 0
    functionsReached:
    - DEBUGLOG
    - local::isUnspecified
    - d_server_config::http3config::get
    - quiche_conn_is_established
    - ComboAddress::getSocklen
    - handleStatelessRetry
    - reinterpret_cast<struct sockaddr*>
    - validateToken
    - resize
    - quiche_header_info
    - processH3Events
    - size
    - PacketBuffer::assign
    - std::array::begin
    - createConnection
    - auto::get
    - dnsdist::doq::recvAsync
    - quiche_conn_recv
    - dnsdist::IncomingConcurrentTCPConnectionsManager::accountNewTCPConnection
    - static_cast<uint8_t>
    - get
    - QuicheHTTP3Connection
    - std::array::data
    - quiche_conn_is_in_early_data
    - ComboAddress::toStringWithPort
    - handleVersionNegotiation
    - getConnection
    - flushEgress
    - quiche_version_is_supported
    - data
    - quiche_h3_conn_new_with_transport
    - std::array::size
    linkageType: ''
    returnType: void
    signature: void handleSocketReadable(DOH3Frontend& frontend, ClientState& clientState,
      Socket& sock, PacketBuffer& buffer)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:1068,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:1068,1
    - Dst: setThreadName
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:1074,1
    - Dst: Socket::setNonBlocking
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:1077,1
    - Dst: std::unique_ptr<FDMultiplexer>
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:1079,1
    - Dst: FDMultiplexer::getMultiplexerSilent
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:1079,1
    - Dst: d_server_config::d_responseReceiver::getDescriptor
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:1081,1
    - Dst: auto::addReadFD
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:1082,1
    - Dst: Socket::getHandle
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:1082,1
    - Dst: auto::addReadFD
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:1083,1
    - Dst: std::vector::clear
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:1087,1
    - Dst: auto::getAvailableFDs
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:1088,1
    - Dst: dnsdist::configuration::refreshLocalRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:1090,1
    - Dst: std::find
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:1093,1
    - Dst: std::vector::begin
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:1093,1
    - Dst: std::vector::end
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:1093,1
    - Dst: Socket::getHandle
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:1093,1
    - Dst: std::vector::end
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:1093,1
    - Dst: handleSocketReadable
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:1094,1
    - Dst: std::find
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:1097,1
    - Dst: std::vector::begin
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:1097,1
    - Dst: std::vector::end
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:1097,1
    - Dst: std::vector::end
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:1097,1
    - Dst: flushResponses
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:1098,1
    - Dst: d_server_config::d_connections::begin
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:1101,1
    - Dst: d_server_config::d_connections::end
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:1101,1
    - Dst: quiche_conn_on_timeout
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:1102,1
    - Dst: auto::second::d_conn::get
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:1102,1
    - Dst: flushEgress
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:1104,1
    - Dst: ClientState*::local::isUnspecified
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:1104,1
    - Dst: quiche_conn_is_closed
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:1106,1
    - Dst: auto::second::d_conn::get
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:1106,1
    - Dst: quiche_conn_stats
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:1111,1
    - Dst: auto::second::d_conn::get
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:1111,1
    - Dst: quiche_conn_path_stats
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:1112,1
    - Dst: auto::second::d_conn::get
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:1112,1
    - Dst: DEBUGLOG
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:1114,1
    - Dst: d_server_config::d_connections::erase
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:1116,1
    - Dst: flushStalledResponses
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:1119,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:1125,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:1125,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:1125,1
    - Dst: auto::error
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:1126,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:1126,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:1129,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:1129,1
    - Dst: auto::info
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:1130,1
    - Dst: DEBUGLOG
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:1135,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:1135,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 44
    argCount: 1
    argNames:
    - clientState
    argTypes:
    - ClientState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1137
      start: 1064
    functionDepth: 1
    functionLinenumber: 1064
    functionLinenumberEnd: 1137
    functionName: doh3Thread
    functionSourceFile: /src/pdns/pdns/dnsdistdist/doh3.cc
    functionUses: 0
    functionsReached:
    - flushStalledResponses
    - DEBUGLOG
    - auto::addReadFD
    - ClientState*::local::isUnspecified
    - flushResponses
    - d_server_config::d_connections::erase
    - d_server_config::d_connections::begin
    - quiche_conn_on_timeout
    - d_server_config::d_responseReceiver::getDescriptor
    - Socket::setNonBlocking
    - Logging::Loggable
    - auto::getAvailableFDs
    - std::vector::begin
    - handleSocketReadable
    - auto::error
    - dnsdist::logging::getTopLogger
    - quiche_conn_path_stats
    - setThreadName
    - auto::info
    - std::vector::end
    - quiche_conn_is_closed
    - VERBOSESLOG
    - quiche_conn_stats
    - auto::second::d_conn::get
    - FDMultiplexer::getMultiplexerSilent
    - std::vector::clear
    - d_server_config::d_connections::end
    - Socket::getHandle
    - flushEgress
    - what
    - infolog
    - std::unique_ptr<FDMultiplexer>
    - std::find
    - dnsdist::configuration::refreshLocalRuntimeConfiguration
    linkageType: ''
    returnType: void
    signature: void doh3Thread(ClientState* clientState)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:1141,1
    - Dst: find
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:1142,1
    - Dst: substr
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:1146,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1147
      start: 1139
    functionDepth: 0
    functionLinenumber: 1139
    functionLinenumberEnd: 1147
    functionName: DOH3Unit::getHTTPPath
    functionSourceFile: /src/pdns/pdns/dnsdistdist/doh3.cc
    functionUses: 0
    functionsReached:
    - substr
    - at
    - find
    linkageType: ''
    returnType: std::string
    signature: std::string DOH3Unit::getHTTPPath() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:1151,1
    - Dst: find
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:1152,1
    - Dst: substr
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:1157,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1158
      start: 1149
    functionDepth: 0
    functionLinenumber: 1149
    functionLinenumberEnd: 1158
    functionName: DOH3Unit::getHTTPQueryString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/doh3.cc
    functionUses: 0
    functionsReached:
    - substr
    - at
    - find
    linkageType: ''
    returnType: std::string
    signature: std::string DOH3Unit::getHTTPQueryString() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: find
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:1162,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:1163,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1167
      start: 1160
    functionDepth: 0
    functionLinenumber: 1160
    functionLinenumberEnd: 1167
    functionName: DOH3Unit::getHTTPHost
    functionSourceFile: /src/pdns/pdns/dnsdistdist/doh3.cc
    functionUses: 0
    functionsReached:
    - end
    - find
    linkageType: ''
    returnType: std::string
    signature: std::string DOH3Unit::getHTTPHost() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: find
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:1171,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:1172,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1176
      start: 1169
    functionDepth: 0
    functionLinenumber: 1169
    functionLinenumberEnd: 1176
    functionName: DOH3Unit::getHTTPScheme
    functionSourceFile: /src/pdns/pdns/dnsdistdist/doh3.cc
    functionUses: 0
    functionsReached:
    - end
    - find
    linkageType: ''
    returnType: std::string
    signature: std::string DOH3Unit::getHTTPScheme() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1181
      start: 1178
    functionDepth: 0
    functionLinenumber: 1178
    functionLinenumberEnd: 1181
    functionName: '& DOH3Unit::getHTTPHeaders() const'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/doh3.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: dnsdist::doh3::h3_headers_t
    signature: dnsdist::doh3::h3_headers_t & DOH3Unit::getHTTPHeaders() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/doh3.cc:1186,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - statusCode
    - ' body'
    - ' contentType'
    argTypes:
    - uint16_t
    - PacketBuffer
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1188
      start: 1183
    functionDepth: 0
    functionLinenumber: 1183
    functionLinenumberEnd: 1188
    functionName: DOH3Unit::setHTTPResponse
    functionSourceFile: /src/pdns/pdns/dnsdistdist/doh3.cc
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void DOH3Unit::setHTTPResponse(uint16_t statusCode, PacketBuffer&&
      body, const std::string& contentType)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1195
      start: 1192
    functionDepth: 0
    functionLinenumber: 1192
    functionLinenumberEnd: 1195
    functionName: DOH3Unit::getHTTPPath
    functionSourceFile: /src/pdns/pdns/dnsdistdist/doh3.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string DOH3Unit::getHTTPPath() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1200
      start: 1197
    functionDepth: 0
    functionLinenumber: 1197
    functionLinenumberEnd: 1200
    functionName: DOH3Unit::getHTTPQueryString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/doh3.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string DOH3Unit::getHTTPQueryString() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1205
      start: 1202
    functionDepth: 0
    functionLinenumber: 1202
    functionLinenumberEnd: 1205
    functionName: DOH3Unit::getHTTPHost
    functionSourceFile: /src/pdns/pdns/dnsdistdist/doh3.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string DOH3Unit::getHTTPHost() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1210
      start: 1207
    functionDepth: 0
    functionLinenumber: 1207
    functionLinenumberEnd: 1210
    functionName: DOH3Unit::getHTTPScheme
    functionSourceFile: /src/pdns/pdns/dnsdistdist/doh3.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string DOH3Unit::getHTTPScheme() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1216
      start: 1212
    functionDepth: 0
    functionLinenumber: 1212
    functionLinenumberEnd: 1216
    functionName: '& DOH3Unit::getHTTPHeaders() const'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/doh3.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: dnsdist::doh3::h3_headers_t
    signature: dnsdist::doh3::h3_headers_t & DOH3Unit::getHTTPHeaders() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1220
      start: 1218
    functionDepth: 0
    functionLinenumber: 1218
    functionLinenumberEnd: 1220
    functionName: DOH3Unit::setHTTPResponse
    functionSourceFile: /src/pdns/pdns/dnsdistdist/doh3.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void DOH3Unit::setHTTPResponse(uint16_t, PacketBuffer&&, const std::string&)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-web.cc:36,1
    - Dst: dnsdist::webserver::registerWebHandler
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-web.cc:38,1
    - Dst: handler
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-web.cc:38,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-web.cc:41,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-web.cc:43,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-web.cc:44,1
    - Dst: LuaAssociativeTable<std::string>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-web.cc:45,1
    - Dst: LuaAssociativeTable::insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-web.cc:48,1
    - Dst: LuaAssociativeTable<std::string>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-web.cc:51,1
    - Dst: LuaAssociativeTable::insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-web.cc:54,1
    - Dst: LuaAssociativeTable<std::string>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-web.cc:57,1
    - Dst: LuaAssociativeTable::insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-web.cc:60,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-web.cc:65,1
    - Dst: LuaAssociativeTable<std::string>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-web.cc:67,1
    - Dst: LuaAssociativeTable::insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-web.cc:70,1
    - Dst: headers::clear
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-web.cc:73,1
    - Dst: headers::insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-web.cc:75,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 73
    argCount: 1
    argNames:
    - ' luaCtx'
    argTypes:
    - LuaContext
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 33
    functionDepth: 1
    functionLinenumber: 33
    functionLinenumberEnd: 78
    functionName: setupLuaWeb
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-web.cc
    functionUses: 0
    functionsReached:
    - headers::insert
    - LuaAssociativeTable::insert
    - dnsdist::webserver::registerWebHandler
    - handler
    - LuaAssociativeTable<std::string>
    - headers::clear
    - std::string
    - writeFunction
    linkageType: ''
    returnType: void
    signature: void setupLuaWeb([[maybe_unused]] LuaContext& luaCtx)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 50
    functionDepth: 0
    functionLinenumber: 50
    functionLinenumberEnd: 50
    functionName: SvcParam::SvcParam
    functionSourceFile: /src/pdns/pdns/dnsdistdist/svc-records.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void SvcParam()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' key'
    argTypes:
    - SvcParamKey
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 91
    functionDepth: 0
    functionLinenumber: 91
    functionLinenumberEnd: 94
    functionName: operator==(const SvcParamKey& key) const
    functionSourceFile: /src/pdns/pdns/dnsdistdist/svc-records.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool operator==(const SvcParamKey& key) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 96
    functionDepth: 0
    functionLinenumber: 96
    functionLinenumberEnd: 99
    functionName: SvcParam::getKey
    functionSourceFile: /src/pdns/pdns/dnsdistdist/svc-records.hh
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: SvcParamKey
    signature: SvcParamKey getKey() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 109
    functionDepth: 0
    functionLinenumber: 109
    functionLinenumberEnd: 109
    functionName: SvcParam::getAutoHint
    functionSourceFile: /src/pdns/pdns/dnsdistdist/svc-records.hh
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool getAutoHint() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - value
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 110
    functionDepth: 0
    functionLinenumber: 110
    functionLinenumberEnd: 110
    functionName: SvcParam::setAutoHint
    functionSourceFile: /src/pdns/pdns/dnsdistdist/svc-records.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setAutoHint(const bool value)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - source
    argTypes:
    - GlobalStateHolder<T>*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 60
    functionDepth: 0
    functionLinenumber: 60
    functionLinenumberEnd: 62
    functionName: LocalStateHolder::LocalStateHolder
    functionSourceFile: /src/pdns/pdns/dnsdistdist/sholder.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void LocalStateHolder(GlobalStateHolder<T>* source)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: getGeneration
      Src: /src/pdns/pdns/dnsdistdist/sholder.hh:66,1
    - Dst: getState
      Src: /src/pdns/pdns/dnsdistdist/sholder.hh:67,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/sholder.hh:70,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 64
    functionDepth: 0
    functionLinenumber: 64
    functionLinenumberEnd: 71
    functionName: '* operator->()'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/sholder.hh
    functionUses: 0
    functionsReached:
    - getGeneration
    - get
    - getState
    linkageType: ''
    returnType: T
    signature: T * operator->()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 72
    functionDepth: 0
    functionLinenumber: 72
    functionLinenumberEnd: 75
    functionName: '& operator*()'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/sholder.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: T
    signature: T & operator*()
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 80
    functionDepth: 0
    functionLinenumber: 80
    functionLinenumberEnd: 86
    functionName: '& get(bool allowedOutdated = false)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/sholder.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: T
    signature: T & get(bool allowedOutdated = false)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LocalStateHolder::reset
      Src: /src/pdns/pdns/dnsdistdist/sholder.hh:91,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 88
    functionDepth: 0
    functionLinenumber: 88
    functionLinenumberEnd: 92
    functionName: LocalStateHolder::reset
    functionSourceFile: /src/pdns/pdns/dnsdistdist/sholder.hh
    functionUses: 2
    functionsReached:
    - LocalStateHolder::reset
    linkageType: ''
    returnType: void
    signature: void reset()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<T>
      Src: /src/pdns/pdns/dnsdistdist/sholder.hh:105,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 104
    functionDepth: 0
    functionLinenumber: 104
    functionLinenumberEnd: 106
    functionName: GlobalStateHolder::GlobalStateHolder
    functionSourceFile: /src/pdns/pdns/dnsdistdist/sholder.hh
    functionUses: 0
    functionsReached:
    - std::make_shared<T>
    linkageType: ''
    returnType: void
    signature: void GlobalStateHolder()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LocalStateHolder<T>
      Src: /src/pdns/pdns/dnsdistdist/sholder.hh:109,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 107
    functionDepth: 0
    functionLinenumber: 107
    functionLinenumberEnd: 110
    functionName: GlobalStateHolder::getLocal
    functionSourceFile: /src/pdns/pdns/dnsdistdist/sholder.hh
    functionUses: 0
    functionsReached:
    - LocalStateHolder<T>
    linkageType: ''
    returnType: LocalStateHolder<T>
    signature: LocalStateHolder<T> getLocal()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<T>
      Src: /src/pdns/pdns/dnsdistdist/sholder.hh:114,1
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/sholder.hh:116,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/sholder.hh:116,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - ' state'
    argTypes:
    - T
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 119
      start: 112
    functionDepth: 0
    functionLinenumber: 112
    functionLinenumberEnd: 119
    functionName: GlobalStateHolder::setState
    functionSourceFile: /src/pdns/pdns/dnsdistdist/sholder.hh
    functionUses: 0
    functionsReached:
    - std::make_shared<T>
    - std::move
    - lock
    linkageType: ''
    returnType: void
    signature: void setState(const T& state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<T>
      Src: /src/pdns/pdns/dnsdistdist/sholder.hh:123,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/sholder.hh:123,1
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/sholder.hh:125,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/sholder.hh:125,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ' state'
    argTypes:
    - T
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 121
    functionDepth: 0
    functionLinenumber: 121
    functionLinenumberEnd: 128
    functionName: GlobalStateHolder::setState
    functionSourceFile: /src/pdns/pdns/dnsdistdist/sholder.hh
    functionUses: 0
    functionsReached:
    - std::make_shared<T>
    - std::move
    - lock
    linkageType: ''
    returnType: void
    signature: void setState(T&& state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/sholder.hh:132,1
    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: GlobalStateHolder::getCopy
    functionSourceFile: /src/pdns/pdns/dnsdistdist/sholder.hh
    functionUses: 0
    functionsReached:
    - lock
    linkageType: ''
    returnType: T
    signature: T getCopy() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/sholder.hh:139,1
    - Dst: act
      Src: /src/pdns/pdns/dnsdistdist/sholder.hh:141,1
    - Dst: std::make_shared<T>
      Src: /src/pdns/pdns/dnsdistdist/sholder.hh:142,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/sholder.hh:142,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - act
    argTypes:
    - F
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 144
      start: 137
    functionDepth: 0
    functionLinenumber: 137
    functionLinenumberEnd: 144
    functionName: GlobalStateHolder::modify
    functionSourceFile: /src/pdns/pdns/dnsdistdist/sholder.hh
    functionUses: 0
    functionsReached:
    - std::make_shared<T>
    - std::move
    - act
    - lock
    linkageType: ''
    returnType: void
    signature: void modify(F act)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 152
      start: 149
    functionDepth: 0
    functionLinenumber: 149
    functionLinenumberEnd: 152
    functionName: GlobalStateHolder::getGeneration
    functionSourceFile: /src/pdns/pdns/dnsdistdist/sholder.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int getGeneration() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/sholder.hh:155,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - state
    - generation
    argTypes:
    - std::shared_ptr<T>*
    - unsigned int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 157
      start: 153
    functionDepth: 0
    functionLinenumber: 153
    functionLinenumberEnd: 157
    functionName: GlobalStateHolder::getState
    functionSourceFile: /src/pdns/pdns/dnsdistdist/sholder.hh
    functionUses: 0
    functionsReached:
    - lock
    linkageType: ''
    returnType: void
    signature: void getState(std::shared_ptr<T>* state, unsigned int* generation)
      const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: query::d_idstate::getCloser
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:46,1
    - Dst: d_dohPath::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:48,1
    - Dst: passCrossProtocolQueryToThread
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:49,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:49,1
    - Dst: passCrossProtocolQueryToThread
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:52,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:52,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 5
    argCount: 1
    argNames:
    - ' cpq'
    argTypes:
    - std::unique_ptr<CrossProtocolQuery>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 44
    functionDepth: 0
    functionLinenumber: 44
    functionLinenumberEnd: 53
    functionName: DownstreamState::passCrossProtocolQuery
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc
    functionUses: 0
    functionsReached:
    - d_dohPath::empty
    - std::move
    - query::d_idstate::getCloser
    - passCrossProtocolQueryToThread
    linkageType: ''
    returnType: bool
    signature: bool DownstreamState::passCrossProtocolQuery(std::unique_ptr<CrossProtocolQuery>&&
      cpq)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: remote::getSocklen
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:58,1
    - Dst: getsockname
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:61,1
    - Dst: reinterpret_cast<sockaddr*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:61,1
    - Dst: write_lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:66,1
    - Dst: auto::push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:67,1
    - Dst: dnsdist::xsk::addDestinationAddress
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:69,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:70,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:71,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:71,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - fd
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 56
    functionDepth: 1
    functionLinenumber: 56
    functionLinenumberEnd: 73
    functionName: DownstreamState::addXSKDestination
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc
    functionUses: 0
    functionsReached:
    - reinterpret_cast<sockaddr*>
    - dnsdist::xsk::addDestinationAddress
    - getsockname
    - size
    - write_lock
    - auto::push_back
    - remote::getSocklen
    - at
    linkageType: ''
    returnType: void
    signature: void DownstreamState::addXSKDestination(int fd)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: remote::getSocklen
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:77,1
    - Dst: getsockname
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:80,1
    - Dst: reinterpret_cast<sockaddr*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:80,1
    - Dst: dnsdist::xsk::removeDestinationAddress
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:84,1
    - Dst: removeWorkerRoute
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:86,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - fd
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 75
    functionDepth: 1
    functionLinenumber: 75
    functionLinenumberEnd: 88
    functionName: DownstreamState::removeXSKDestination
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc
    functionUses: 0
    functionsReached:
    - reinterpret_cast<sockaddr*>
    - dnsdist::xsk::removeDestinationAddress
    - getsockname
    - removeWorkerRoute
    - remote::getSocklen
    linkageType: ''
    returnType: void
    signature: void DownstreamState::removeXSKDestination(int fd)
  - BBCount: 22
    BranchProfiles: []
    Callsites:
    - Dst: std::unique_lock::owns_lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:94,1
    - Dst: isStopped
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:94,1
    - Dst: IsAnyAddress
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:99,1
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:105,1
    - Dst: write_lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:106,1
    - Dst: auto::clear
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:107,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:113,1
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:114,1
    - Dst: removeReadFD
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:114,1
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:117,1
    - Dst: DownstreamState::removeXSKDestination
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:118,1
    - Dst: shutdown
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:122,1
    - Dst: close
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:123,1
    - Dst: SSocket
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:126,1
    - Dst: sourceItfName::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:129,1
    - Dst: setsockopt
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:130,1
    - Dst: sourceItfName::c_str
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:130,1
    - Dst: sourceItfName::length
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:130,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:133,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:133,1
    - Dst: remote::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:133,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:133,1
    - Dst: DownstreamState::getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:134,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:134,1
    - Dst: dnsdist::udp::setUDPSocketBufferSizes
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:139,1
    - Dst: DownstreamState::getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:139,1
    - Dst: IsAnyAddress
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:141,1
    - Dst: SSetsockopt
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:144,1
    - Dst: SBind
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:147,1
    - Dst: setDscp
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:151,1
    - Dst: SConnect
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:152,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:153,1
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:154,1
    - Dst: addReadFD
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:154,1
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:157,1
    - Dst: DownstreamState::addXSKDestination
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:158,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:164,1
    - Dst: IsAnyAddress
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:165,1
    - Dst: sourceItfName::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:165,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:166,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:166,1
    - Dst: remote::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:166,1
    - Dst: IsAnyAddress
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:166,1
    - Dst: sourceAddr::toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:166,1
    - Dst: sourceItfName::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:166,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:166,1
    - Dst: DownstreamState::getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:167,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:167,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:167,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:167,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:170,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:170,1
    - Dst: remote::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:170,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:170,1
    - Dst: DownstreamState::getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:171,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:171,1
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:182,1
    - Dst: write_lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:183,1
    - Dst: auto::clear
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:184,1
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:190,1
    - Dst: DownstreamState::removeXSKDestination
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:191,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:194,1
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:196,1
    - Dst: removeReadFD
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:196,1
    - Dst: shutdown
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:204,1
    - Dst: close
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:205,1
    - Dst: std::unique_lock::unlock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:212,1
    - Dst: notify_all
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:213,1
    - Dst: DownstreamState::start
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:218,1
    CyclomaticComplexity: 29
    EdgeCount: 29
    ICount: 86
    argCount: 1
    argNames:
    - initialAttempt
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 223
      start: 91
    functionDepth: 2
    functionLinenumber: 91
    functionLinenumberEnd: 223
    functionName: DownstreamState::reconnect
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc
    functionUses: 0
    functionsReached:
    - std::unique_lock::unlock
    - sourceItfName::c_str
    - stringerror
    - shutdown
    - std::unique_lock::owns_lock
    - removeReadFD
    - sourceItfName::empty
    - DownstreamState::start
    - IsAnyAddress
    - SBind
    - notify_all
    - SLOG
    - DownstreamState::removeXSKDestination
    - Logging::Loggable
    - addReadFD
    - size
    - lock
    - setsockopt
    - dnsdist::udp::setUDPSocketBufferSizes
    - sourceItfName::length
    - empty
    - auto::clear
    - isStopped
    - setDscp
    - remote::toStringWithPort
    - SSocket
    - dnsdist::configuration::getCurrentRuntimeConfiguration
    - sourceAddr::toString
    - what
    - infolog
    - write_lock
    - SSetsockopt
    - SConnect
    - DownstreamState::addXSKDestination
    - DownstreamState::getLogger
    - close
    linkageType: ''
    returnType: bool
    signature: bool DownstreamState::reconnect(bool initialAttempt)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: wait
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:235,1
    - Dst: load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:236,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 239
      start: 225
    functionDepth: 0
    functionLinenumber: 225
    functionLinenumberEnd: 239
    functionName: DownstreamState::waitUntilConnected
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc
    functionUses: 0
    functionsReached:
    - wait
    - load
    linkageType: ''
    returnType: void
    signature: void DownstreamState::waitUntilConnected()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: std::scoped_lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:249,1
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:250,1
    - Dst: shutdown
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:255,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 259
      start: 241
    functionDepth: 0
    functionLinenumber: 241
    functionLinenumberEnd: 259
    functionName: DownstreamState::stop
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc
    functionUses: 0
    functionsReached:
    - std::scoped_lock
    - shutdown
    - lock
    linkageType: ''
    returnType: void
    signature: void DownstreamState::stop()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::configuration::getImmutableConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:263,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:264,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:264,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:265,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:265,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:265,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:265,1
    - Dst: sqlstr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:268,1
    - Dst: boost::format
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:268,1
    - Dst: write_lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:269,1
    - Dst: auto::clear
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:270,1
    - Dst: auto::reserve
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:271,1
    - Dst: sqlstr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:273,1
    - Dst: boost::format
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:273,1
    - Dst: burtleCI
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:275,1
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:275,1
    - Dst: std::string::c_str
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:275,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:275,1
    - Dst: auto::push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:276,1
    - Dst: std::sort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:279,1
    - Dst: auto::begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:279,1
    - Dst: auto::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:279,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 281
      start: 261
    functionDepth: 1
    functionLinenumber: 261
    functionLinenumberEnd: 281
    functionName: DownstreamState::hash
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc
    functionUses: 0
    functionsReached:
    - burtleCI
    - boost::format
    - Logging::Loggable
    - std::string::size
    - std::string::c_str
    - auto::end
    - std::sort
    - VERBOSESLOG
    - infolog
    - reinterpret_cast<const unsigned char*>
    - auto::begin
    - dnsdist::logging::getTopLogger
    - dnsdist::configuration::getImmutableConfiguration
    - sqlstr
    - write_lock
    - auto::reserve
    - auto::clear
    - auto::push_back
    linkageType: ''
    returnType: void
    signature: void DownstreamState::hash()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DownstreamState::hash
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:288,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ' newId'
    argTypes:
    - boost::uuids::uuid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 290
      start: 283
    functionDepth: 0
    functionLinenumber: 283
    functionLinenumberEnd: 290
    functionName: DownstreamState::setId
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc
    functionUses: 0
    functionsReached:
    - DownstreamState::hash
    linkageType: ''
    returnType: void
    signature: void DownstreamState::setId(const boost::uuids::uuid& newId)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:295,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:295,1
    - Dst: DownstreamState::getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:296,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:296,1
    - Dst: DownstreamState::hash
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:303,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - newWeight
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 305
      start: 292
    functionDepth: 0
    functionLinenumber: 292
    functionLinenumberEnd: 305
    functionName: DownstreamState::setWeight
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc
    functionUses: 0
    functionsReached:
    - errlog
    - SLOG
    - Logging::Loggable
    - DownstreamState::getLogger
    - DownstreamState::hash
    linkageType: ''
    returnType: void
    signature: void DownstreamState::setWeight(int newWeight)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:308,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:308,1
    - Dst: clear
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:310,1
    - Dst: QPSLimiter
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:313,1
    - Dst: DownstreamState::setId
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:317,1
    - Dst: getUniqueID
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:320,1
    - Dst: DownstreamState::setWeight
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:324,1
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:328,1
    - Dst: set_capacity
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:328,1
    - Dst: setUpStatus
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:329,1
    - Dst: setName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:332,1
    - Dst: d_dohPath::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:334,1
    - Dst: dnsdist::configuration::getImmutableConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:336,1
    - Dst: dnsdist::configuration::isImmutableConfigurationDone
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:337,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:338,1
    - Dst: dnsdist::configuration::isImmutableConfigurationDone
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:341,1
    - Dst: dnsdist::configuration::updateImmutableConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:342,1
    - Dst: isTCPOnly
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:349,1
    - Dst: IsAnyAddress
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:350,1
    - Dst: DownstreamState::connectUDPSockets
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:351,1
    - Dst: DownstreamState::start
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:355,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 34
    argCount: 3
    argNames:
    - ' config'
    - tlsCtx
    - connect
    argTypes:
    - DownstreamState::Config
    - std::shared_ptr<TLSCtx>
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 356
      start: 307
    functionDepth: 1
    functionLinenumber: 307
    functionLinenumberEnd: 356
    functionName: DownstreamState::DownstreamState
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc
    functionUses: 0
    functionsReached:
    - getUniqueID
    - dnsdist::configuration::isImmutableConfigurationDone
    - dnsdist::configuration::getImmutableConfiguration
    - DownstreamState::start
    - IsAnyAddress
    - DownstreamState::connectUDPSockets
    - lock
    - clear
    - setName
    - DownstreamState::setId
    - std::runtime_error
    - set_capacity
    - QPSLimiter
    - dnsdist::configuration::updateImmutableConfiguration
    - d_dohPath::empty
    - DownstreamState::setWeight
    - setUpStatus
    - std::move
    - isTCPOnly
    linkageType: ''
    returnType: void
    signature: void DownstreamState::DownstreamState(DownstreamState::Config&& config,
      std::shared_ptr<TLSCtx> tlsCtx, bool connect)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: test_and_set
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:360,1
    - Dst: std::thread
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:363,1
    - Dst: shared_from_this
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:363,1
    - Dst: d_cpus::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:364,1
    - Dst: mapThreadToCPUList
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:365,1
    - Dst: auto::native_handle
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:365,1
    - Dst: auto::detach
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:367,1
    - Dst: std::thread
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:371,1
    - Dst: shared_from_this
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:371,1
    - Dst: d_cpus::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:372,1
    - Dst: mapThreadToCPUList
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:373,1
    - Dst: auto::native_handle
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:373,1
    - Dst: auto::detach
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:375,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 377
      start: 358
    functionDepth: 0
    functionLinenumber: 358
    functionLinenumberEnd: 377
    functionName: DownstreamState::start
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc
    functionUses: 2
    functionsReached:
    - mapThreadToCPUList
    - auto::detach
    - std::thread
    - auto::native_handle
    - d_cpus::empty
    - shared_from_this
    - test_and_set
    linkageType: ''
    returnType: void
    signature: void DownstreamState::start()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::configuration::getImmutableConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:381,1
    - Dst: clear
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:383,1
    - Dst: resize
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:387,1
    - Dst: resize
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:389,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:391,1
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:392,1
    - Dst: std::unique_ptr<FDMultiplexer>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:392,1
    - Dst: FDMultiplexer::getMultiplexerSilent
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:392,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:392,1
    - Dst: DownstreamState::reconnect
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:399,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 400
      start: 379
    functionDepth: 3
    functionLinenumber: 379
    functionLinenumberEnd: 400
    functionName: DownstreamState::connectUDPSockets
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc
    functionUses: 1
    functionsReached:
    - DownstreamState::reconnect
    - resize
    - size
    - lock
    - std::unique_ptr<FDMultiplexer>
    - dnsdist::configuration::getImmutableConfiguration
    - clear
    - FDMultiplexer::getMultiplexerSilent
    linkageType: ''
    returnType: void
    signature: void DownstreamState::connectUDPSockets()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: close
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:406,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 410
      start: 402
    functionDepth: 0
    functionLinenumber: 402
    functionLinenumberEnd: 410
    functionName: DownstreamState::~DownstreamState()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc
    functionUses: 0
    functionsReached:
    - close
    linkageType: ''
    returnType: void
    signature: void DownstreamState::~DownstreamState()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: store
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:416,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 418
      start: 412
    functionDepth: 0
    functionLinenumber: 412
    functionLinenumberEnd: 418
    functionName: DownstreamState::incCurrentConnectionsCount
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc
    functionUses: 0
    functionsReached:
    - store
    linkageType: ''
    returnType: void
    signature: void DownstreamState::incCurrentConnectionsCount()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:422,1
    - Dst: dnsdist::configuration::getImmutableConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:428,1
    - Dst: dnsdist::getRandomValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:429,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 436
      start: 420
    functionDepth: 1
    functionLinenumber: 420
    functionLinenumberEnd: 436
    functionName: DownstreamState::pickSocketForSending
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc
    functionUses: 0
    functionsReached:
    - dnsdist::getRandomValue
    - size
    - dnsdist::configuration::getImmutableConfiguration
    linkageType: ''
    returnType: int
    signature: int DownstreamState::pickSocketForSending()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: clear
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:440,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:442,1
    - Dst: push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:443,1
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:447,1
    - Dst: getAvailableFDs
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:447,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - ' ready'
    argTypes:
    - std::vector<int>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 448
      start: 438
    functionDepth: 1
    functionLinenumber: 438
    functionLinenumberEnd: 448
    functionName: DownstreamState::pickSocketsReadyForReceiving
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc
    functionUses: 0
    functionsReached:
    - getAvailableFDs
    - push_back
    - size
    - lock
    - clear
    linkageType: ''
    returnType: void
    signature: void DownstreamState::pickSocketsReadyForReceiving(std::vector<int>&
      ready)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: age::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:452,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' ids'
    - udpTimeout
    argTypes:
    - IDState
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 454
      start: 450
    functionDepth: 0
    functionLinenumber: 450
    functionLinenumberEnd: 454
    functionName: isIDSExpired
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc
    functionUses: 0
    functionsReached:
    - age::load
    linkageType: ''
    returnType: bool
    signature: bool isIDSExpired(const IDState& ids, uint8_t udpTimeout)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:463,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:463,1
    - Dst: remote::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:464,1
    - Dst: getName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:464,1
    - Dst: internal::qname::toLogString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:465,1
    - Dst: QType
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:465,1
    - Dst: internal::origRemote::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:465,1
    - Dst: DownstreamState::getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:466,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:466,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:466,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:466,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:466,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:466,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:466,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:468,1
    - Dst: dnsdist::rules::getResponseRuleChain
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:469,1
    - Dst: internal::du::getQuerySender
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:470,1
    - Dst: handleTimeoutResponseRules
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:471,1
    - Dst: shared_from_this
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:471,1
    - Dst: DoHConnectionToBackend::handleTimeout
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:472,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:472,1
    - Dst: shouldRecordResponses
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:475,1
    - Dst: gettime
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:477,1
    - Dst: memset
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:480,1
    - Dst: getFlagsFromDNSHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:482,1
    - Dst: insertResponse
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:485,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:485,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:485,1
    - Dst: getProtocol
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:485,1
    - Dst: DownstreamState::reportTimeoutOrError
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:488,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 18
    argCount: 1
    argNames:
    - ' ids'
    argTypes:
    - IDState
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 489
      start: 456
    functionDepth: 2
    functionLinenumber: 456
    functionLinenumberEnd: 489
    functionName: DownstreamState::handleUDPTimeout
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc
    functionUses: 0
    functionsReached:
    - internal::qname::toLogString
    - ntohs
    - getFlagsFromDNSHeader
    - getName
    - Logging::Loggable
    - QType
    - getProtocol
    - memset
    - dnsdist::rules::getResponseRuleChain
    - DownstreamState::reportTimeoutOrError
    - insertResponse
    - pdns::max
    - remote::toStringWithPort
    - dnsdist::configuration::getCurrentRuntimeConfiguration
    - VERBOSESLOG
    - handleTimeoutResponseRules
    - internal::origRemote::toStringWithPort
    - gettime
    - std::move
    - internal::du::getQuerySender
    - infolog
    - DoHConnectionToBackend::handleTimeout
    - shouldRecordResponses
    - DownstreamState::getLogger
    - shared_from_this
    linkageType: ''
    returnType: void
    signature: void DownstreamState::handleUDPTimeout(IDState& ids)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:495,1
    - Dst: push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:495,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 4
    argCount: 1
    argNames:
    - rcode
    argTypes:
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 497
      start: 491
    functionDepth: 0
    functionLinenumber: 491
    functionLinenumberEnd: 497
    functionName: DownstreamState::reportResponse
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc
    functionUses: 0
    functionsReached:
    - push_back
    - lock
    linkageType: ''
    returnType: void
    signature: void DownstreamState::reportResponse(uint8_t rcode)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:502,1
    - Dst: push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:502,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 504
      start: 499
    functionDepth: 0
    functionLinenumber: 499
    functionLinenumberEnd: 504
    functionName: DownstreamState::reportTimeoutOrError
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc
    functionUses: 1
    functionsReached:
    - push_back
    - lock
    linkageType: ''
    returnType: void
    signature: void DownstreamState::reportTimeoutOrError()
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: getProtocol
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:508,1
    - Dst: dnsdist::configuration::getImmutableConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:512,1
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:515,1
    - Dst: auto::begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:516,1
    - Dst: auto::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:516,1
    - Dst: isIDSExpired
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:518,1
    - Dst: DownstreamState::handleUDPTimeout
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:519,1
    - Dst: auto::erase
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:520,1
    - Dst: load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:528,1
    - Dst: isInUse
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:530,1
    - Dst: isIDSExpired
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:533,1
    - Dst: acquire
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:537,1
    - Dst: isInUse
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:542,1
    - Dst: isIDSExpired
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:542,1
    - Dst: DownstreamState::handleUDPTimeout
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:543,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 32
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 548
      start: 506
    functionDepth: 3
    functionLinenumber: 506
    functionLinenumberEnd: 548
    functionName: DownstreamState::handleUDPTimeouts
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc
    functionUses: 0
    functionsReached:
    - load
    - getProtocol
    - lock
    - auto::begin
    - isInUse
    - dnsdist::configuration::getImmutableConfiguration
    - DownstreamState::handleUDPTimeout
    - auto::end
    - isIDSExpired
    - auto::erase
    - acquire
    linkageType: ''
    returnType: void
    signature: void DownstreamState::handleUDPTimeouts()
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::configuration::getImmutableConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:552,1
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:558,1
    - Dst: dnsdist::getRandomValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:561,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:561,1
    - Dst: auto::emplace
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:562,1
    - Dst: IDState
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:562,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:570,1
    - Dst: DoHConnectionToBackend::handleTimeout
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:573,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:573,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:579,1
    - Dst: second::age::store
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:580,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:587,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:588,1
    - Dst: acquire
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:589,1
    - Dst: isInUse
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:593,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:596,1
    - Dst: DoHConnectionToBackend::handleTimeout
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:599,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:599,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:604,1
    - Dst: age::store
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:605,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 35
    argCount: 1
    argNames:
    - ' state'
    argTypes:
    - InternalQueryState
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 609
      start: 550
    functionDepth: 1
    functionLinenumber: 550
    functionLinenumberEnd: 609
    functionName: DownstreamState::saveState
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc
    functionUses: 0
    functionsReached:
    - pdns::max
    - std::move
    - IDState
    - dnsdist::getRandomValue
    - size
    - lock
    - DoHConnectionToBackend::handleTimeout
    - auto::emplace
    - second::age::store
    - dnsdist::configuration::getImmutableConfiguration
    - isInUse
    - age::store
    - at
    - acquire
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t DownstreamState::saveState(InternalQueryState&& state)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::configuration::getImmutableConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:613,1
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:615,1
    - Dst: auto::emplace
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:617,1
    - Dst: IDState
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:617,1
    - Dst: DoHConnectionToBackend::handleTimeout
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:622,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:622,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:625,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:631,1
    - Dst: acquire
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:632,1
    - Dst: DoHConnectionToBackend::handleTimeout
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:637,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:637,1
    - Dst: isInUse
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:640,1
    - Dst: DoHConnectionToBackend::handleTimeout
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:644,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:644,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:647,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 27
    argCount: 2
    argNames:
    - id
    - ' state'
    argTypes:
    - uint16_t
    - InternalQueryState
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 650
      start: 611
    functionDepth: 1
    functionLinenumber: 611
    functionLinenumberEnd: 650
    functionName: DownstreamState::restoreState
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc
    functionUses: 0
    functionsReached:
    - std::move
    - IDState
    - lock
    - DoHConnectionToBackend::handleTimeout
    - auto::emplace
    - isInUse
    - dnsdist::configuration::getImmutableConfiguration
    - at
    - acquire
    linkageType: ''
    returnType: void
    signature: void DownstreamState::restoreState(uint16_t id, InternalQueryState&&
      state)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::configuration::getImmutableConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:655,1
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:657,1
    - Dst: auto::find
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:659,1
    - Dst: auto::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:660,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:664,1
    - Dst: auto::erase
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:665,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:670,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:674,1
    - Dst: acquire
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:675,1
    - Dst: isInUse
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:680,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:681,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 22
    argCount: 1
    argNames:
    - id
    argTypes:
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 686
      start: 652
    functionDepth: 1
    functionLinenumber: 652
    functionLinenumberEnd: 686
    functionName: DownstreamState::getState
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc
    functionUses: 0
    functionsReached:
    - std::move
    - size
    - lock
    - isInUse
    - dnsdist::configuration::getImmutableConfiguration
    - auto::end
    - auto::erase
    - at
    - auto::find
    - acquire
    linkageType: ''
    returnType: std::optional<InternalQueryState>
    signature: std::optional<InternalQueryState> DownstreamState::getState(uint16_t
      id)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:695,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:697,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:697,1
    - Dst: getNameWithAddr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:697,1
    - Dst: DownstreamState::getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:698,1
    - Dst: time
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:702,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:707,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:707,1
    - Dst: getNameWithAddr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:707,1
    - Dst: DownstreamState::getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:708,1
    - Dst: DownstreamState::updateNextLazyHealthCheck
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:709,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:716,1
    - Dst: static_cast<float>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:728,1
    - Dst: clear
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:731,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:732,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:732,1
    - Dst: getNameWithAddr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:732,1
    - Dst: DownstreamState::getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:733,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:733,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:733,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:733,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:733,1
    - Dst: DownstreamState::updateNextLazyHealthCheck
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:739,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 45
    argCount: 1
    argNames:
    - currentTime
    argTypes:
    - std::optional<time_t>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 758
      start: 688
    functionDepth: 1
    functionLinenumber: 688
    functionLinenumberEnd: 758
    functionName: DownstreamState::healthCheckRequired
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc
    functionUses: 0
    functionsReached:
    - Logging::Loggable
    - time
    - VERBOSESLOG
    - infolog
    - DownstreamState::updateNextLazyHealthCheck
    - lock
    - size
    - static_cast<float>
    - clear
    - DownstreamState::getLogger
    - getNameWithAddr
    linkageType: ''
    returnType: bool
    signature: bool DownstreamState::healthCheckRequired(std::optional<time_t> currentTime)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:762,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 764
      start: 760
    functionDepth: 0
    functionLinenumber: 760
    functionLinenumberEnd: 764
    functionName: DownstreamState::getNextLazyHealthCheck
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc
    functionUses: 0
    functionsReached:
    - lock
    linkageType: ''
    returnType: time_t
    signature: time_t DownstreamState::getNextLazyHealthCheck()
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: time
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:768,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:774,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:774,1
    - Dst: getNameWithAddr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:774,1
    - Dst: checkInterval::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:774,1
    - Dst: DownstreamState::getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:775,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:775,1
    - Dst: checkInterval::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:775,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:783,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:783,1
    - Dst: getNameWithAddr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:783,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:783,1
    - Dst: DownstreamState::getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:784,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:784,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:784,1
    - Dst: ExponentialBackOffTimer::get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:797,1
    - Dst: static_cast<time_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:799,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:800,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:802,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:808,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:808,1
    - Dst: getNameWithAddr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:808,1
    - Dst: DownstreamState::getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:809,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:809,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:809,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:814,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:814,1
    - Dst: getNameWithAddr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:814,1
    - Dst: DownstreamState::getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:815,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:815,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:815,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 28
    argCount: 3
    argNames:
    - ' stats'
    - checkScheduled
    - currentTime
    argTypes:
    - LazyHealthCheckStats
    - bool
    - std::optional<time_t>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 817
      start: 766
    functionDepth: 0
    functionLinenumber: 766
    functionLinenumberEnd: 817
    functionName: DownstreamState::updateNextLazyHealthCheck
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc
    functionUses: 1
    functionsReached:
    - pdns::max
    - std::to_string
    - Logging::Loggable
    - ExponentialBackOffTimer::get
    - time
    - static_cast<time_t>
    - VERBOSESLOG
    - infolog
    - checkInterval::load
    - DownstreamState::getLogger
    - getNameWithAddr
    linkageType: ''
    returnType: void
    signature: void DownstreamState::updateNextLazyHealthCheck(LazyHealthCheckStats&
      stats, bool checkScheduled, std::optional<time_t> currentTime)
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: IsAnyAddress
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:828,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:829,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:829,1
    - Dst: getNameWithAddr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:829,1
    - Dst: DownstreamState::getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:830,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:830,1
    - Dst: setUpStatus
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:832,1
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:836,1
    - Dst: DownstreamState::updateNextLazyHealthCheck
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:838,1
    - Dst: handleServerStateChange
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:841,1
    - Dst: getNameWithAddr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:841,1
    - Dst: load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:852,1
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:862,1
    - Dst: DownstreamState::updateNextLazyHealthCheck
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:863,1
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:870,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:871,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:871,1
    - Dst: getNameWithAddr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:871,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:871,1
    - Dst: DownstreamState::getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:872,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:872,1
    - Dst: auto::d_lastResults::clear
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:874,1
    - Dst: load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:884,1
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:894,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:895,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:895,1
    - Dst: getNameWithAddr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:895,1
    - Dst: DownstreamState::getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:896,1
    - Dst: DownstreamState::updateNextLazyHealthCheck
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:899,1
    - Dst: load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:904,1
    - Dst: IsAnyAddress
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:906,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:907,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:907,1
    - Dst: getNameWithAddr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:907,1
    - Dst: DownstreamState::getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:908,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:908,1
    - Dst: isTCPOnly
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:911,1
    - Dst: DownstreamState::reconnect
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:912,1
    - Dst: setUpStatus
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:915,1
    - Dst: dnsdist::configuration::getImmutableConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:916,1
    - Dst: sendBackendStatusChangeTrap
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:917,1
    - Dst: handleServerStateChange
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:919,1
    - Dst: getNameWithAddr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:919,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 65
    argCount: 2
    argNames:
    - initial
    - newResult
    argTypes:
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 921
      start: 819
    functionDepth: 3
    functionLinenumber: 819
    functionLinenumberEnd: 921
    functionName: DownstreamState::submitHealthCheckResult
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc
    functionUses: 0
    functionsReached:
    - load
    - SLOG
    - handleServerStateChange
    - std::to_string
    - Logging::Loggable
    - auto::d_lastResults::clear
    - VERBOSESLOG
    - infolog
    - DownstreamState::updateNextLazyHealthCheck
    - lock
    - DownstreamState::getLogger
    - setUpStatus
    - sendBackendStatusChangeTrap
    - isTCPOnly
    - dnsdist::configuration::getImmutableConfiguration
    - DownstreamState::reconnect
    - IsAnyAddress
    - getNameWithAddr
    linkageType: ''
    returnType: void
    signature: void DownstreamState::submitHealthCheckResult(bool initial, bool newResult)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: DownstreamState::waitUntilConnected
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:927,1
    - Dst: read_lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:930,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:931,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:933,1
    - Dst: getNameWithAddr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:933,1
    - Dst: dnsdist::getRandomValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:935,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 937
      start: 924
    functionDepth: 1
    functionLinenumber: 924
    functionLinenumberEnd: 937
    functionName: DownstreamState::pickSourceAddressForSending
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc
    functionUses: 0
    functionsReached:
    - std::runtime_error
    - dnsdist::getRandomValue
    - read_lock
    - DownstreamState::waitUntilConnected
    - getNameWithAddr
    - auto::size
    linkageType: ''
    returnType: ComboAddress
    signature: ComboAddress DownstreamState::pickSourceAddressForSending()
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: IsAnyAddress
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:943,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:944,1
    - Dst: getListOfAddressesOfNetworkInterface
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:945,1
    - Dst: auto::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:946,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:947,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:950,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:951,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:951,1
    - Dst: auto::at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:951,1
    - Dst: DownstreamState::getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:952,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:952,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:952,1
    - Dst: auto::at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:952,1
    - Dst: auto::at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:954,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:956,1
    - Dst: XskWorker::create
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:959,1
    - Dst: push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:960,1
    - Dst: addWorker
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:961,1
    - Dst: DownstreamState::reconnect
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:963,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 16
    argCount: 1
    argNames:
    - ' xsks'
    argTypes:
    - std::vector<std::shared_ptr<XskSocket>>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 964
      start: 939
    functionDepth: 3
    functionLinenumber: 939
    functionLinenumberEnd: 964
    functionName: DownstreamState::registerXsk
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc
    functionUses: 0
    functionsReached:
    - DownstreamState::reconnect
    - SLOG
    - std::runtime_error
    - Logging::Loggable
    - push_back
    - XskWorker::create
    - warnlog
    - DownstreamState::getLogger
    - addWorker
    - getListOfAddressesOfNetworkInterface
    - auto::at
    - IsAnyAddress
    - at
    - auto::size
    - auto::empty
    linkageType: ''
    returnType: void
    signature: void DownstreamState::registerXsk(std::vector<std::shared_ptr<XskSocket>>&
      xsks)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: find
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:976,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:980,1
    - Dst: substr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:988,1
    - Dst: if_nametoindex
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:989,1
    - Dst: sourceItfName::c_str
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:989,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:997,1
    - Dst: substr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:997,1
    - Dst: dnsdist::configuration::isImmutableConfigurationDone
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:1001,1
    - Dst: dnsdist::configuration::updateImmutableConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:1003,1
    - Dst: d_capabilitiesToRetain::insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:1004,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:1011,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:1011,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:1012,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:1012,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:1012,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:1012,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:1012,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 25
    argCount: 2
    argNames:
    - ' source'
    - ' config'
    argTypes:
    - std::string
    - DownstreamState::Config
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1015
      start: 967
    functionDepth: 1
    functionLinenumber: 967
    functionLinenumberEnd: 1015
    functionName: DownstreamState::parseSourceParameter
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc
    functionUses: 0
    functionsReached:
    - SLOG
    - Logging::Loggable
    - sourceItfName::c_str
    - dnsdist::configuration::isImmutableConfigurationDone
    - dnsdist::configuration::updateImmutableConfiguration
    - warnlog
    - if_nametoindex
    - substr
    - d_capabilitiesToRetain::insert
    - dnsdist::logging::getTopLogger
    - find
    - ComboAddress
    linkageType: ''
    returnType: bool
    signature: bool DownstreamState::parseSourceParameter(const std::string& source,
      DownstreamState::Config& config)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pdns_iequals
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:1019,1
    - Dst: pdns_iequals
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:1024,1
    - Dst: pdns_iequals
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:1029,1
    - Dst: pdns_iequals
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:1033,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 2
    argNames:
    - ' config'
    - ' str'
    argTypes:
    - DownstreamState::Config
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1038
      start: 1017
    functionDepth: 0
    functionLinenumber: 1017
    functionLinenumberEnd: 1038
    functionName: DownstreamState::parseAvailabilityConfigFromStr
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc
    functionUses: 0
    functionsReached:
    - pdns_iequals
    linkageType: ''
    returnType: bool
    signature: bool DownstreamState::parseAvailabilityConfigFromStr(DownstreamState::Config&
      config, const std::string& str)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getRate
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:1042,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1043
      start: 1040
    functionDepth: 0
    functionLinenumber: 1040
    functionLinenumberEnd: 1043
    functionName: DownstreamState::getQPSLimit
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc
    functionUses: 0
    functionsReached:
    - getRate
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int DownstreamState::getQPSLimit() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:1047,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:1047,1
    - Dst: getName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:1047,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:1047,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:1047,1
    - Dst: getProtocol
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:1047,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1048
      start: 1045
    functionDepth: 1
    functionLinenumber: 1045
    functionLinenumberEnd: 1048
    functionName: DownstreamState::getLogger
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc
    functionUses: 7
    functionsReached:
    - getProtocol
    - getName
    - dnsdist::logging::getTopLogger
    - Logging::Loggable
    linkageType: ''
    returnType: std::shared_ptr<const Logr::Logger>
    signature: std::shared_ptr<const Logr::Logger> DownstreamState::getLogger() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::get<1>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:1054,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 1
    argNames:
    - upOnly
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1060
      start: 1050
    functionDepth: 0
    functionLinenumber: 1050
    functionLinenumberEnd: 1060
    functionName: ServerPool::countServers
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc
    functionUses: 0
    functionsReached:
    - std::get<1>
    linkageType: ''
    returnType: size_t
    signature: size_t ServerPool::countServers(bool upOnly) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::get<1>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:1066,1
    - Dst: load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:1066,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1070
      start: 1062
    functionDepth: 0
    functionLinenumber: 1062
    functionLinenumberEnd: 1070
    functionName: ServerPool::poolLoad
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc
    functionUses: 0
    functionsReached:
    - load
    - std::get<1>
    linkageType: ''
    returnType: size_t
    signature: size_t ServerPool::poolLoad() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::get<1>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:1076,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1081
      start: 1072
    functionDepth: 0
    functionLinenumber: 1072
    functionLinenumberEnd: 1081
    functionName: ServerPool::hasAtLeastOneServerAvailable
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc
    functionUses: 0
    functionsReached:
    - std::get<1>
    linkageType: ''
    returnType: bool
    signature: bool ServerPool::hasAtLeastOneServerAvailable() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1086
      start: 1083
    functionDepth: 0
    functionLinenumber: 1083
    functionLinenumberEnd: 1086
    functionName: '& ServerPool::getServers() const'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: ServerPolicy::NumberedServerVector
    signature: ServerPolicy::NumberedServerVector & ServerPool::getServers() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<unsigned int>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:1090,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:1090,1
    - Dst: emplace_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:1091,1
    - Dst: std::stable_sort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:1093,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:1093,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:1093,1
    - Dst: ServerPool::updateConsistency
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:1102,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - ' server'
    argTypes:
    - std::shared_ptr<DownstreamState>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1103
      start: 1088
    functionDepth: 1
    functionLinenumber: 1088
    functionLinenumberEnd: 1103
    functionName: ServerPool::addServer
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc
    functionUses: 0
    functionsReached:
    - ServerPool::updateConsistency
    - std::stable_sort
    - end
    - size
    - static_cast<unsigned int>
    - emplace_back
    - begin
    linkageType: ''
    returnType: void
    signature: void ServerPool::addServer(std::shared_ptr<DownstreamState>& server)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:1109,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:1109,1
    - Dst: erase
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:1117,1
    - Dst: ServerPool::updateConsistency
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:1127,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 1
    argNames:
    - ' server'
    argTypes:
    - shared_ptr<DownstreamState>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1129
      start: 1105
    functionDepth: 1
    functionLinenumber: 1105
    functionLinenumberEnd: 1129
    functionName: ServerPool::removeServer
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc
    functionUses: 0
    functionsReached:
    - ServerPool::updateConsistency
    - erase
    - end
    - begin
    linkageType: ''
    returnType: void
    signature: void ServerPool::removeServer(shared_ptr<DownstreamState>& server)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: isTCPOnly
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:1144,1
    - Dst: isTCPOnly
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:1156,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 27
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1171
      start: 1131
    functionDepth: 0
    functionLinenumber: 1131
    functionLinenumberEnd: 1171
    functionName: ServerPool::updateConsistency
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc
    functionUses: 2
    functionsReached:
    - isTCPOnly
    linkageType: ''
    returnType: void
    signature: void ServerPool::updateConsistency()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ServerPool::updateConsistency
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:1176,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - enabled
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1177
      start: 1173
    functionDepth: 1
    functionLinenumber: 1173
    functionLinenumberEnd: 1177
    functionName: ServerPool::setZeroScope
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc
    functionUses: 0
    functionsReached:
    - ServerPool::updateConsistency
    linkageType: ''
    returnType: void
    signature: void ServerPool::setZeroScope(bool enabled)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ServerPool::updateConsistency
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:1182,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - useECS
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1183
      start: 1179
    functionDepth: 1
    functionLinenumber: 1179
    functionLinenumberEnd: 1183
    functionName: ServerPool::setECS
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc
    functionUses: 0
    functionsReached:
    - ServerPool::updateConsistency
    linkageType: ''
    returnType: void
    signature: void ServerPool::setECS(bool useECS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getServers
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:1187,1
    - Dst: ServerPool::countServers
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:1187,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1188
      start: 1185
    functionDepth: 1
    functionLinenumber: 1185
    functionLinenumberEnd: 1188
    functionName: ServerPool::shouldKeepStaleData
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc
    functionUses: 0
    functionsReached:
    - ServerPool::countServers
    - getServers
    linkageType: ''
    returnType: bool
    signature: bool ServerPool::shouldKeepStaleData() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::configuration::updateRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:1194,1
    - Dst: push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:1196,1
    - Dst: std::stable_sort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:1197,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:1197,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:1197,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - ' backend'
    argTypes:
    - std::shared_ptr<DownstreamState>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1201
      start: 1192
    functionDepth: 1
    functionLinenumber: 1192
    functionLinenumberEnd: 1201
    functionName: dnsdist::backend::registerNewBackend
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc
    functionUses: 0
    functionsReached:
    - push_back
    - dnsdist::configuration::updateRuntimeConfiguration
    - std::stable_sort
    - end
    - begin
    linkageType: ''
    returnType: void
    signature: void registerNewBackend(std::shared_ptr<DownstreamState>& backend)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::configuration::updateRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:1194,1
    - Dst: push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:1196,1
    - Dst: std::stable_sort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:1197,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:1197,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc:1197,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - ' backend'
    argTypes:
    - std::shared_ptr<DownstreamState>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1201
      start: 1192
    functionDepth: 1
    functionLinenumber: 1192
    functionLinenumberEnd: 1201
    functionName: dnsdist::backend::registerNewBackend
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc
    functionUses: 0
    functionsReached:
    - push_back
    - dnsdist::configuration::updateRuntimeConfiguration
    - std::stable_sort
    - end
    - begin
    linkageType: ''
    returnType: void
    signature: void registerNewBackend(std::shared_ptr<DownstreamState>& backend)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: map::emplace
      Src: /src/pdns/pdns/dnsdistdist/qtype.cc:111,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ' names'
    argTypes:
    - map<const string, uint16_t>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 107
    functionDepth: 0
    functionLinenumber: 107
    functionLinenumberEnd: 114
    functionName: swapElements
    functionSourceFile: /src/pdns/pdns/dnsdistdist/qtype.cc
    functionUses: 0
    functionsReached:
    - map::emplace
    linkageType: ''
    returnType: map<uint16_t, const string>
    signature: map<uint16_t, const string> swapElements(const map<const string, uint16_t>&
      names)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: count
      Src: /src/pdns/pdns/dnsdistdist/qtype.cc:121,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 122
      start: 119
    functionDepth: 0
    functionLinenumber: 119
    functionLinenumberEnd: 122
    functionName: QType::isSupportedType
    functionSourceFile: /src/pdns/pdns/dnsdistdist/qtype.cc
    functionUses: 0
    functionsReached:
    - count
    linkageType: ''
    returnType: bool
    signature: bool QType::isSupportedType() const
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 131
      start: 124
    functionDepth: 0
    functionLinenumber: 124
    functionLinenumberEnd: 131
    functionName: QType::isMetadataType
    functionSourceFile: /src/pdns/pdns/dnsdistdist/qtype.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool QType::isMetadataType() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: find
      Src: /src/pdns/pdns/dnsdistdist/qtype.cc:135,1
    - Dst: cend
      Src: /src/pdns/pdns/dnsdistdist/qtype.cc:136,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/qtype.cc:139,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 133
    functionDepth: 0
    functionLinenumber: 133
    functionLinenumberEnd: 140
    functionName: QType::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/qtype.cc
    functionUses: 5
    functionsReached:
    - cend
    - std::to_string
    - find
    linkageType: ''
    returnType: string
    signature: string QType::toString() const
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: toUpper
      Src: /src/pdns/pdns/dnsdistdist/qtype.cc:144,1
    - Dst: find
      Src: /src/pdns/pdns/dnsdistdist/qtype.cc:146,1
    - Dst: cend
      Src: /src/pdns/pdns/dnsdistdist/qtype.cc:147,1
    - Dst: static_cast<uint16_t>
      Src: /src/pdns/pdns/dnsdistdist/qtype.cc:151,1
    - Dst: atoi
      Src: /src/pdns/pdns/dnsdistdist/qtype.cc:151,1
    - Dst: boost::starts_with
      Src: /src/pdns/pdns/dnsdistdist/qtype.cc:154,1
    - Dst: static_cast<uint16_t>
      Src: /src/pdns/pdns/dnsdistdist/qtype.cc:155,1
    - Dst: atoi
      Src: /src/pdns/pdns/dnsdistdist/qtype.cc:155,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - p
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 159
      start: 142
    functionDepth: 0
    functionLinenumber: 142
    functionLinenumberEnd: 159
    functionName: QType::chartocode
    functionSourceFile: /src/pdns/pdns/dnsdistdist/qtype.cc
    functionUses: 2
    functionsReached:
    - atoi
    - boost::starts_with
    - toUpper
    - static_cast<uint16_t>
    - cend
    - find
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t QType::chartocode(const char *p)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: chartocode
      Src: /src/pdns/pdns/dnsdistdist/qtype.cc:163,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - p
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 165
      start: 161
    functionDepth: 0
    functionLinenumber: 161
    functionLinenumberEnd: 165
    functionName: '&QType::operator=(const char *p)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/qtype.cc
    functionUses: 0
    functionsReached:
    - chartocode
    linkageType: ''
    returnType: QType
    signature: QType &QType::operator=(const char *p)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: chartocode
      Src: /src/pdns/pdns/dnsdistdist/qtype.cc:169,1
    - Dst: string::c_str
      Src: /src/pdns/pdns/dnsdistdist/qtype.cc:169,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - s
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 171
      start: 167
    functionDepth: 0
    functionLinenumber: 167
    functionLinenumberEnd: 171
    functionName: '&QType::operator=(const string &s)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/qtype.cc
    functionUses: 0
    functionsReached:
    - string::c_str
    - chartocode
    linkageType: ''
    returnType: QType
    signature: QType &QType::operator=(const string &s)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: find
      Src: /src/pdns/pdns/dnsdistdist/qtype.cc:182,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/qtype.cc:183,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/qtype.cc:184,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - ' code'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 187
      start: 180
    functionDepth: 0
    functionLinenumber: 180
    functionLinenumberEnd: 187
    functionName: QClass::QClass
    functionSourceFile: /src/pdns/pdns/dnsdistdist/qtype.cc
    functionUses: 0
    functionsReached:
    - end
    - find
    - std::runtime_error
    linkageType: ''
    returnType: void
    signature: void QClass::QClass(const std::string& code)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/qtype.cc:201,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 203
      start: 189
    functionDepth: 0
    functionLinenumber: 189
    functionLinenumberEnd: 203
    functionName: QClass::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/qtype.cc
    functionUses: 2
    functionsReached:
    - std::to_string
    linkageType: ''
    returnType: std::string
    signature: std::string QClass::toString() const
  - BBCount: 6
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 2
    argNames:
    - ' container'
    - elapsed
    argTypes:
    - T
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 132
      start: 109
    functionDepth: 0
    functionLinenumber: 109
    functionLinenumberEnd: 132
    functionName: dnsdist::metrics::updateLatencyHistogram
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void updateLatencyHistogram(T& container, uint64_t elapsed /* microseconds
      */)
  - BBCount: 6
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 2
    argNames:
    - ' container'
    - elapsed
    argTypes:
    - T
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 132
      start: 109
    functionDepth: 0
    functionLinenumber: 109
    functionLinenumberEnd: 132
    functionName: dnsdist::metrics::updateLatencyHistogram
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void updateLatencyHistogram(T& container, uint64_t elapsed /* microseconds
      */)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - dnsquestion
    - ruleresult
    argTypes:
    - DNSQuestion*
    - std::string*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 67
    functionDepth: 0
    functionLinenumber: 67
    functionLinenumberEnd: 72
    functionName: operator()(DNSQuestion* dnsquestion, std::string* ruleresult) const
      override
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: DNSAction::Action
    signature: DNSAction::Action operator()(DNSQuestion* dnsquestion, std::string*
      ruleresult) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 73
    functionDepth: 0
    functionLinenumber: 73
    functionLinenumberEnd: 76
    functionName: dnsdist::actions::DropAction::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string toString() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - dnsquestion
    - ruleresult
    argTypes:
    - DNSQuestion*
    - std::string*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 82
    functionDepth: 0
    functionLinenumber: 82
    functionLinenumberEnd: 87
    functionName: operator()(DNSQuestion* dnsquestion, std::string* ruleresult) const
      override
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: DNSAction::Action
    signature: DNSAction::Action operator()(DNSQuestion* dnsquestion, std::string*
      ruleresult) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 88
    functionDepth: 0
    functionLinenumber: 88
    functionLinenumberEnd: 91
    functionName: dnsdist::actions::AllowAction::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string toString() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - dnsquestion
    - ruleresult
    argTypes:
    - DNSQuestion*
    - std::string*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 98
    functionDepth: 0
    functionLinenumber: 98
    functionLinenumberEnd: 103
    functionName: operator()(DNSQuestion* dnsquestion, std::string* ruleresult) const
      override
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: DNSAction::Action
    signature: DNSAction::Action operator()(DNSQuestion* dnsquestion, std::string*
      ruleresult) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 107
      start: 104
    functionDepth: 0
    functionLinenumber: 104
    functionLinenumberEnd: 107
    functionName: dnsdist::actions::NoneAction::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string toString() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: QPSLimiter
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:114,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - limit
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 113
    functionDepth: 0
    functionLinenumber: 113
    functionLinenumberEnd: 116
    functionName: dnsdist::actions::QPSAction::QPSAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - QPSLimiter
    linkageType: ''
    returnType: void
    signature: void QPSAction(int limit)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:121,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - dnsquestion
    - ruleresult
    argTypes:
    - DNSQuestion*
    - std::string*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 125
      start: 117
    functionDepth: 0
    functionLinenumber: 117
    functionLinenumberEnd: 125
    functionName: operator()(DNSQuestion* dnsquestion, std::string* ruleresult) const
      override
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - lock
    linkageType: ''
    returnType: DNSAction::Action
    signature: DNSAction::Action operator()(DNSQuestion* dnsquestion, std::string*
      ruleresult) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:128,1
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:128,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 129
      start: 126
    functionDepth: 0
    functionLinenumber: 126
    functionLinenumberEnd: 129
    functionName: dnsdist::actions::QPSAction::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - std::to_string
    - lock
    linkageType: ''
    returnType: std::string
    signature: std::string toString() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - msec
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 141
      start: 138
    functionDepth: 0
    functionLinenumber: 138
    functionLinenumberEnd: 141
    functionName: dnsdist::actions::DelayAction::DelayAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void DelayAction(int msec)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:145,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - dnsquestion
    - ruleresult
    argTypes:
    - DNSQuestion*
    - std::string*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 142
    functionDepth: 0
    functionLinenumber: 142
    functionLinenumberEnd: 147
    functionName: operator()(DNSQuestion* dnsquestion, std::string* ruleresult) const
      override
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - std::to_string
    linkageType: ''
    returnType: DNSAction::Action
    signature: DNSAction::Action operator()(DNSQuestion* dnsquestion, std::string*
      ruleresult) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:150,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 151
      start: 148
    functionDepth: 0
    functionLinenumber: 148
    functionLinenumberEnd: 151
    functionName: dnsdist::actions::DelayAction::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - std::to_string
    linkageType: ''
    returnType: std::string
    signature: std::string toString() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 1
    argNames:
    - ' other'
    argTypes:
    - TeeAction
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 162
      start: 162
    functionDepth: 0
    functionLinenumber: 162
    functionLinenumberEnd: 162
    functionName: dnsdist::actions::TeeAction::TeeAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void TeeAction(TeeAction& other)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 1
    argNames:
    - ' other'
    argTypes:
    - TeeAction
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 163
      start: 163
    functionDepth: 0
    functionLinenumber: 163
    functionLinenumberEnd: 163
    functionName: dnsdist::actions::TeeAction::TeeAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void TeeAction(TeeAction&& other)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 1
    argNames:
    - ' other'
    argTypes:
    - TeeAction
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 164
      start: 164
    functionDepth: 0
    functionLinenumber: 164
    functionLinenumberEnd: 164
    functionName: '& operator=(TeeAction& other)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: TeeAction
    signature: TeeAction & operator=(TeeAction& other)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 1
    argNames:
    - ' other'
    argTypes:
    - TeeAction
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 165
      start: 165
    functionDepth: 0
    functionLinenumber: 165
    functionLinenumberEnd: 165
    functionName: '& operator=(TeeAction&& other)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: TeeAction
    signature: TeeAction & operator=(TeeAction&& other)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: bind
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:198,1
    - Dst: connect
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:200,1
    - Dst: setNonBlocking
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:201,1
    - Dst: std::thread
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:202,1
    - Dst: dnsdist::actions::TeeAction::worker
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:203,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 4
    argNames:
    - ' rca'
    - ' lca'
    - addECS
    - addProxyProtocol
    argTypes:
    - ComboAddress
    - std::optional<ComboAddress>
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 205
      start: 194
    functionDepth: 0
    functionLinenumber: 194
    functionLinenumberEnd: 205
    functionName: dnsdist::actions::TeeAction::TeeAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - setNonBlocking
    - bind
    - dnsdist::actions::TeeAction::worker
    - std::thread
    - connect
    linkageType: ''
    returnType: void
    signature: void TeeAction::TeeAction(const ComboAddress& rca, const std::optional<ComboAddress>&
      lca, bool addECS, bool addProxyProtocol)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: close
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:210,1
    - Dst: releaseHandle
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:210,1
    - Dst: join
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:211,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 212
      start: 207
    functionDepth: 0
    functionLinenumber: 207
    functionLinenumberEnd: 212
    functionName: TeeAction::~TeeAction()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - releaseHandle
    - join
    - close
    linkageType: ''
    returnType: void
    signature: void TeeAction::~TeeAction()
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: DNSQuestion*::overTCP
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:217,1
    - Dst: DNSQuestion*::getData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:226,1
    - Dst: generateECSOption
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:231,1
    - Dst: DNSQuestion*::ecs::getNetwork
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:231,1
    - Dst: DNSQuestion*::ecs::getBits
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:231,1
    - Dst: handleEDNSClientSubnet
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:233,1
    - Dst: DNSQuestion*::getMaximumSize
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:233,1
    - Dst: DNSQuestion*::ids::qname::wirelength
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:233,1
    - Dst: getProxyProtocolPayload
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:239,1
    - Dst: PacketBuffer::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:240,1
    - Dst: DNSQuestion*::getData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:241,1
    - Dst: addProxyProtocol
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:243,1
    - Dst: PacketBuffer::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:249,1
    - Dst: DNSQuestion*::getData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:249,1
    - Dst: send
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:250,1
    - Dst: getHandle
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:250,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:250,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:250,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 27
    argCount: 2
    argNames:
    - dnsquestion
    - ruleresult
    argTypes:
    - DNSQuestion*
    - std::string*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 258
      start: 214
    functionDepth: 2
    functionLinenumber: 214
    functionLinenumberEnd: 258
    functionName: TeeAction::operator()(DNSQuestion* dnsquestion, std::string* ruleresult)
      const
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - generateECSOption
    - DNSQuestion*::ids::qname::wirelength
    - addProxyProtocol
    - DNSQuestion*::ecs::getNetwork
    - data
    - PacketBuffer::empty
    - getHandle
    - size
    - handleEDNSClientSubnet
    - DNSQuestion*::getData
    - send
    - DNSQuestion*::getMaximumSize
    - DNSQuestion*::ecs::getBits
    - getProxyProtocolPayload
    - DNSQuestion*::overTCP
    linkageType: ''
    returnType: DNSAction::Action
    signature: DNSAction::Action TeeAction::operator()(DNSQuestion* dnsquestion, std::string*
      ruleresult) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:262,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 263
      start: 260
    functionDepth: 0
    functionLinenumber: 260
    functionLinenumberEnd: 263
    functionName: dnsdist::actions::TeeAction::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - toStringWithPort
    linkageType: ''
    returnType: std::string
    signature: std::string TeeAction::toString() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 277
      start: 265
    functionDepth: 0
    functionLinenumber: 265
    functionLinenumberEnd: 277
    functionName: dnsdist::actions::TeeAction::getStats
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::map<std::string, double>
    signature: std::map<std::string, double> TeeAction::getStats() const
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: setThreadName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:281,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:284,1
    - Dst: waitForData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:286,1
    - Dst: getHandle
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:286,1
    - Dst: usleep
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:292,1
    - Dst: recv
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:298,1
    - Dst: getHandle
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:298,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:298,1
    - Dst: std::array::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:298,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:299,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 39
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 330
      start: 279
    functionDepth: 0
    functionLinenumber: 279
    functionLinenumberEnd: 330
    functionName: dnsdist::actions::TeeAction::worker
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 1
    functionsReached:
    - recv
    - static_cast<size_t>
    - usleep
    - getHandle
    - waitForData
    - setThreadName
    - std::array::data
    - std::array::size
    linkageType: ''
    returnType: void
    signature: void TeeAction::worker()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:336,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - pool
    - stopProcessing
    argTypes:
    - std::string
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 336
      start: 335
    functionDepth: 0
    functionLinenumber: 335
    functionLinenumberEnd: 336
    functionName: dnsdist::actions::PoolAction::PoolAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void PoolAction(std::string pool, bool stopProcessing)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - dnsquestion
    - ruleresult
    argTypes:
    - DNSQuestion*
    - std::string*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 347
      start: 338
    functionDepth: 0
    functionLinenumber: 338
    functionLinenumberEnd: 347
    functionName: operator()(DNSQuestion* dnsquestion, std::string* ruleresult) const
      override
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: DNSAction::Action
    signature: DNSAction::Action operator()(DNSQuestion* dnsquestion, std::string*
      ruleresult) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 352
      start: 349
    functionDepth: 0
    functionLinenumber: 349
    functionLinenumberEnd: 352
    functionName: dnsdist::actions::PoolAction::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string toString() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: QPSLimiter
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:365,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:365,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 3
    argNames:
    - limit
    - pool
    - stopProcessing
    argTypes:
    - unsigned int
    - std::string
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 365
      start: 364
    functionDepth: 0
    functionLinenumber: 364
    functionLinenumberEnd: 365
    functionName: dnsdist::actions::QPSPoolAction::QPSPoolAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - std::move
    - QPSLimiter
    linkageType: ''
    returnType: void
    signature: void QPSPoolAction(unsigned int limit, std::string pool, bool stopProcessing)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:369,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - dnsquestion
    - ruleresult
    argTypes:
    - DNSQuestion*
    - std::string*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 378
      start: 366
    functionDepth: 0
    functionLinenumber: 366
    functionLinenumberEnd: 378
    functionName: operator()(DNSQuestion* dnsquestion, std::string* ruleresult) const
      override
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - lock
    linkageType: ''
    returnType: DNSAction::Action
    signature: DNSAction::Action operator()(DNSQuestion* dnsquestion, std::string*
      ruleresult) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:381,1
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:381,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 382
      start: 379
    functionDepth: 0
    functionLinenumber: 379
    functionLinenumberEnd: 382
    functionName: dnsdist::actions::QPSPoolAction::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - std::to_string
    - lock
    linkageType: ''
    returnType: std::string
    signature: std::string toString() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - rcode
    - ' responseConfig'
    argTypes:
    - uint8_t
    - dnsdist::ResponseConfig
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 396
      start: 395
    functionDepth: 0
    functionLinenumber: 395
    functionLinenumberEnd: 396
    functionName: dnsdist::actions::RCodeAction::RCodeAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void RCodeAction(uint8_t rcode, const dnsdist::ResponseConfig& responseConfig)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::self_answers::removeRecordsAndSetRCode
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:400,1
    - Dst: dnsdist::PacketMangling::editDNSHeaderFromPacket
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:401,1
    - Dst: DNSQuestion*::getMutableData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:401,1
    - Dst: setResponseHeadersFromConfig
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:402,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 2
    argNames:
    - dnsquestion
    - ruleresult
    argTypes:
    - DNSQuestion*
    - std::string*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 406
      start: 397
    functionDepth: 1
    functionLinenumber: 397
    functionLinenumberEnd: 406
    functionName: operator()(DNSQuestion* dnsquestion, std::string* ruleresult) const
      override
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - dnsdist::self_answers::removeRecordsAndSetRCode
    - setResponseHeadersFromConfig
    - dnsdist::PacketMangling::editDNSHeaderFromPacket
    - DNSQuestion*::getMutableData
    linkageType: ''
    returnType: DNSAction::Action
    signature: DNSAction::Action operator()(DNSQuestion* dnsquestion, std::string*
      ruleresult) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:409,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 410
      start: 407
    functionDepth: 0
    functionLinenumber: 407
    functionLinenumberEnd: 410
    functionName: dnsdist::actions::RCodeAction::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - std::to_string
    linkageType: ''
    returnType: std::string
    signature: std::string toString() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - rcode
    - responseConfig
    argTypes:
    - uint8_t
    - dnsdist::ResponseConfig
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 423
      start: 420
    functionDepth: 0
    functionLinenumber: 420
    functionLinenumberEnd: 423
    functionName: dnsdist::actions::ERCodeAction::ERCodeAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ERCodeAction(uint8_t rcode, dnsdist::ResponseConfig responseConfig)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::self_answers::removeRecordsAndSetRCode
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:427,1
    - Dst: dnsdist::PacketMangling::editDNSHeaderFromPacket
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:428,1
    - Dst: DNSQuestion*::getMutableData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:428,1
    - Dst: setResponseHeadersFromConfig
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:429,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 2
    argNames:
    - dnsquestion
    - ruleresult
    argTypes:
    - DNSQuestion*
    - std::string*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 434
      start: 424
    functionDepth: 1
    functionLinenumber: 424
    functionLinenumberEnd: 434
    functionName: operator()(DNSQuestion* dnsquestion, std::string* ruleresult) const
      override
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - dnsdist::self_answers::removeRecordsAndSetRCode
    - setResponseHeadersFromConfig
    - dnsdist::PacketMangling::editDNSHeaderFromPacket
    - DNSQuestion*::getMutableData
    linkageType: ''
    returnType: DNSAction::Action
    signature: DNSAction::Action operator()(DNSQuestion* dnsquestion, std::string*
      ruleresult) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ERCode::to_s
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:437,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 438
      start: 435
    functionDepth: 0
    functionLinenumber: 435
    functionLinenumberEnd: 438
    functionName: dnsdist::actions::ERCodeAction::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - ERCode::to_s
    linkageType: ''
    returnType: std::string
    signature: std::string toString() const override
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: reserve
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:451,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:451,1
    - Dst: generateSVCPayload
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:455,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:456,1
    - Dst: push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:459,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:459,1
    - Dst: insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:462,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:462,1
    - Dst: insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:466,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:466,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 2
    argNames:
    - ' parameters'
    - ' responseConfig'
    argTypes:
    - std::vector<SVCRecordParameters>
    - dnsdist::ResponseConfig
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 469
      start: 448
    functionDepth: 2
    functionLinenumber: 448
    functionLinenumberEnd: 469
    functionName: dnsdist::actions::SpoofSVCAction::SpoofSVCAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - std::move
    - generateSVCPayload
    - std::runtime_error
    - push_back
    - size
    - reserve
    - insert
    - ComboAddress
    linkageType: ''
    returnType: void
    signature: void SpoofSVCAction(const std::vector<SVCRecordParameters>& parameters,
      const dnsdist::ResponseConfig& responseConfig)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::svc::generateSVCResponse
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:474,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - dnsquestion
    - ruleresult
    argTypes:
    - DNSQuestion*
    - std::string*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 479
      start: 471
    functionDepth: 2
    functionLinenumber: 471
    functionLinenumberEnd: 479
    functionName: operator()(DNSQuestion* dnsquestion, std::string* ruleresult) const
      override
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - dnsdist::svc::generateSVCResponse
    linkageType: ''
    returnType: DNSAction::Action
    signature: DNSAction::Action operator()(DNSQuestion* dnsquestion, std::string*
      ruleresult) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 484
      start: 481
    functionDepth: 0
    functionLinenumber: 481
    functionLinenumberEnd: 484
    functionName: dnsdist::actions::SpoofSVCAction::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string toString() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - dnsquestion
    - ruleresult
    argTypes:
    - DNSQuestion*
    - std::string*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 501
      start: 496
    functionDepth: 0
    functionLinenumber: 496
    functionLinenumberEnd: 501
    functionName: operator()(DNSQuestion* dnsquestion, std::string* ruleresult) const
      override
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: DNSAction::Action
    signature: DNSAction::Action operator()(DNSQuestion* dnsquestion, std::string*
      ruleresult) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 505
      start: 502
    functionDepth: 0
    functionLinenumber: 502
    functionLinenumberEnd: 505
    functionName: dnsdist::actions::TCAction::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string toString() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - dnsResponse
    - ruleresult
    argTypes:
    - DNSResponse*
    - std::string*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 516
      start: 511
    functionDepth: 0
    functionLinenumber: 511
    functionLinenumberEnd: 516
    functionName: operator()(DNSResponse* dnsResponse, std::string* ruleresult) const
      override
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: DNSResponseAction::Action
    signature: DNSResponseAction::Action operator()(DNSResponse* dnsResponse, std::string*
      ruleresult) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 520
      start: 517
    functionDepth: 0
    functionLinenumber: 517
    functionLinenumberEnd: 520
    functionName: dnsdist::actions::TCResponseAction::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string toString() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:527,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - func
    argTypes:
    - LuaActionFunction
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 528
      start: 526
    functionDepth: 0
    functionLinenumber: 526
    functionLinenumberEnd: 528
    functionName: dnsdist::actions::LuaAction::LuaAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void LuaAction(LuaActionFunction func)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:535,1
    - Dst: d_func
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:536,1
    - Dst: std::get<1>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:538,1
    - Dst: std::string*::clear
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:543,1
    - Dst: static_cast<Action>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:546,1
    - Dst: std::get<0>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:546,1
    - Dst: dnsdist::handleQueuedAsynchronousEvents
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:548,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:552,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:552,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:552,1
    - Dst: DNSQuestion*::getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:553,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:553,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:556,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:556,1
    - Dst: DNSQuestion*::getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:557,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 2
    argNames:
    - dnsquestion
    - ruleresult
    argTypes:
    - DNSQuestion*
    - std::string*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 560
      start: 530
    functionDepth: 1
    functionLinenumber: 530
    functionLinenumberEnd: 560
    functionName: operator()(DNSQuestion* dnsquestion, std::string* ruleresult) const
      override
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - SLOG
    - d_func
    - static_cast<Action>
    - what
    - DNSQuestion*::getLogger
    - std::string*::clear
    - std::get<1>
    - lock
    - std::get<0>
    - warnlog
    - dnsdist::handleQueuedAsynchronousEvents
    linkageType: ''
    returnType: DNSAction::Action
    signature: DNSAction::Action operator()(DNSQuestion* dnsquestion, std::string*
      ruleresult) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 565
      start: 562
    functionDepth: 0
    functionLinenumber: 562
    functionLinenumberEnd: 565
    functionName: dnsdist::actions::LuaAction::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string toString() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:575,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - func
    argTypes:
    - LuaResponseActionFunction
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 576
      start: 574
    functionDepth: 0
    functionLinenumber: 574
    functionLinenumberEnd: 576
    functionName: dnsdist::actions::LuaResponseAction::LuaResponseAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void LuaResponseAction(LuaResponseActionFunction func)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:582,1
    - Dst: d_func
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:583,1
    - Dst: std::get<1>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:585,1
    - Dst: std::string*::clear
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:590,1
    - Dst: static_cast<Action>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:593,1
    - Dst: std::get<0>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:593,1
    - Dst: dnsdist::handleQueuedAsynchronousEvents
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:595,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:599,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:599,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:599,1
    - Dst: DNSResponse*::getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:600,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:600,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:603,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:603,1
    - Dst: DNSResponse*::getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:604,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 2
    argNames:
    - response
    - ruleresult
    argTypes:
    - DNSResponse*
    - std::string*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 607
      start: 577
    functionDepth: 1
    functionLinenumber: 577
    functionLinenumberEnd: 607
    functionName: operator()(DNSResponse* response, std::string* ruleresult) const
      override
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - SLOG
    - d_func
    - static_cast<Action>
    - what
    - DNSResponse*::getLogger
    - std::string*::clear
    - std::get<1>
    - lock
    - std::get<0>
    - warnlog
    - dnsdist::handleQueuedAsynchronousEvents
    linkageType: ''
    returnType: DNSResponseAction::Action
    signature: DNSResponseAction::Action operator()(DNSResponse* response, std::string*
      ruleresult) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 612
      start: 609
    functionDepth: 0
    functionLinenumber: 609
    functionLinenumberEnd: 612
    functionName: dnsdist::actions::LuaResponseAction::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string toString() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:622,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - func
    argTypes:
    - LuaActionFFIFunction
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 624
      start: 621
    functionDepth: 0
    functionLinenumber: 621
    functionLinenumberEnd: 624
    functionName: dnsdist::actions::LuaFFIAction::LuaFFIAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void LuaFFIAction(LuaActionFFIFunction func)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:632,1
    - Dst: d_func
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:633,1
    - Dst: std::string*::clear
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:640,1
    - Dst: static_cast<DNSAction::Action>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:643,1
    - Dst: dnsdist::handleQueuedAsynchronousEvents
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:645,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:649,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:649,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:649,1
    - Dst: DNSQuestion*::getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:650,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:650,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:653,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:653,1
    - Dst: DNSQuestion*::getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:654,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 2
    argNames:
    - dnsquestion
    - ruleresult
    argTypes:
    - DNSQuestion*
    - std::string*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 657
      start: 626
    functionDepth: 1
    functionLinenumber: 626
    functionLinenumberEnd: 657
    functionName: operator()(DNSQuestion* dnsquestion, std::string* ruleresult) const
      override
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - SLOG
    - d_func
    - what
    - DNSQuestion*::getLogger
    - std::string*::clear
    - warnlog
    - static_cast<DNSAction::Action>
    - lock
    - dnsdist::handleQueuedAsynchronousEvents
    linkageType: ''
    returnType: DNSAction::Action
    signature: DNSAction::Action operator()(DNSQuestion* dnsquestion, std::string*
      ruleresult) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 662
      start: 659
    functionDepth: 0
    functionLinenumber: 659
    functionLinenumberEnd: 662
    functionName: dnsdist::actions::LuaFFIAction::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string toString() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:672,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - code
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 674
      start: 671
    functionDepth: 0
    functionLinenumber: 671
    functionLinenumberEnd: 674
    functionName: dnsdist::actions::LuaFFIPerThreadAction::LuaFFIPerThreadAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void LuaFFIPerThreadAction(std::string code)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: setupLuaFFIPerThreadContext
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:681,1
    - Dst: d_luaContext::executeCode
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:685,1
    - Dst: d_func
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:694,1
    - Dst: std::string*::clear
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:701,1
    - Dst: dnsdist::handleQueuedAsynchronousEvents
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:704,1
    - Dst: static_cast<DNSAction::Action>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:705,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:708,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:708,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:708,1
    - Dst: DNSQuestion*::getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:709,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:709,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:712,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:712,1
    - Dst: DNSQuestion*::getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:713,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 25
    argCount: 2
    argNames:
    - dnsquestion
    - ruleresult
    argTypes:
    - DNSQuestion*
    - std::string*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 716
      start: 676
    functionDepth: 2
    functionLinenumber: 676
    functionLinenumberEnd: 716
    functionName: operator()(DNSQuestion* dnsquestion, std::string* ruleresult) const
      override
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - SLOG
    - d_func
    - what
    - DNSQuestion*::getLogger
    - std::string*::clear
    - warnlog
    - static_cast<DNSAction::Action>
    - d_luaContext::executeCode
    - dnsdist::handleQueuedAsynchronousEvents
    - setupLuaFFIPerThreadContext
    linkageType: ''
    returnType: DNSAction::Action
    signature: DNSAction::Action operator()(DNSQuestion* dnsquestion, std::string*
      ruleresult) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 721
      start: 718
    functionDepth: 0
    functionLinenumber: 718
    functionLinenumberEnd: 721
    functionName: dnsdist::actions::LuaFFIPerThreadAction::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string toString() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:745,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - func
    argTypes:
    - LuaResponseActionFFIFunction
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 747
      start: 744
    functionDepth: 0
    functionLinenumber: 744
    functionLinenumberEnd: 747
    functionName: dnsdist::actions::LuaFFIResponseAction::LuaFFIResponseAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void LuaFFIResponseAction(LuaResponseActionFFIFunction func)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:755,1
    - Dst: d_func
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:756,1
    - Dst: std::string*::clear
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:763,1
    - Dst: static_cast<DNSResponseAction::Action>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:766,1
    - Dst: dnsdist::handleQueuedAsynchronousEvents
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:768,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:772,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:772,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:772,1
    - Dst: DNSResponse*::getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:773,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:773,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:776,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:776,1
    - Dst: DNSResponse*::getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:777,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 2
    argNames:
    - response
    - ruleresult
    argTypes:
    - DNSResponse*
    - std::string*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 780
      start: 749
    functionDepth: 1
    functionLinenumber: 749
    functionLinenumberEnd: 780
    functionName: operator()(DNSResponse* response, std::string* ruleresult) const
      override
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - static_cast<DNSResponseAction::Action>
    - SLOG
    - d_func
    - what
    - DNSResponse*::getLogger
    - std::string*::clear
    - warnlog
    - lock
    - dnsdist::handleQueuedAsynchronousEvents
    linkageType: ''
    returnType: DNSResponseAction::Action
    signature: DNSResponseAction::Action operator()(DNSResponse* response, std::string*
      ruleresult) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 785
      start: 782
    functionDepth: 0
    functionLinenumber: 782
    functionLinenumberEnd: 785
    functionName: dnsdist::actions::LuaFFIResponseAction::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string toString() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:795,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - code
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 797
      start: 794
    functionDepth: 0
    functionLinenumber: 794
    functionLinenumberEnd: 797
    functionName: dnsdist::actions::LuaFFIPerThreadResponseAction::LuaFFIPerThreadResponseAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void LuaFFIPerThreadResponseAction(std::string code)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: setupLuaFFIPerThreadContext
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:804,1
    - Dst: d_luaContext::executeCode
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:808,1
    - Dst: d_func
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:817,1
    - Dst: std::string*::clear
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:824,1
    - Dst: dnsdist::handleQueuedAsynchronousEvents
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:827,1
    - Dst: static_cast<DNSResponseAction::Action>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:828,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:831,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:831,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:831,1
    - Dst: DNSResponse*::getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:832,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:832,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:835,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:835,1
    - Dst: DNSResponse*::getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:836,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 25
    argCount: 2
    argNames:
    - response
    - ruleresult
    argTypes:
    - DNSResponse*
    - std::string*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 839
      start: 799
    functionDepth: 2
    functionLinenumber: 799
    functionLinenumberEnd: 839
    functionName: operator()(DNSResponse* response, std::string* ruleresult) const
      override
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - static_cast<DNSResponseAction::Action>
    - SLOG
    - d_func
    - what
    - DNSResponse*::getLogger
    - std::string*::clear
    - warnlog
    - d_luaContext::executeCode
    - dnsdist::handleQueuedAsynchronousEvents
    - setupLuaFFIPerThreadContext
    linkageType: ''
    returnType: DNSResponseAction::Action
    signature: DNSResponseAction::Action operator()(DNSResponse* response, std::string*
      ruleresult) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 844
      start: 841
    functionDepth: 0
    functionLinenumber: 841
    functionLinenumberEnd: 844
    functionName: dnsdist::actions::LuaFFIPerThreadResponseAction::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string toString() const override
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: isIPv4
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:872,1
    - Dst: insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:873,1
    - Dst: isIPv6
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:875,1
    - Dst: insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:876,1
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:880,1
    - Dst: insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:881,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 2
    argNames:
    - ' addrs'
    - ' responseConfig'
    argTypes:
    - vector<ComboAddress>
    - dnsdist::ResponseConfig
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 883
      start: 868
    functionDepth: 1
    functionLinenumber: 868
    functionLinenumberEnd: 883
    functionName: dnsdist::actions::SpoofAction::SpoofAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - empty
    - isIPv6
    - isIPv4
    - insert
    linkageType: ''
    returnType: void
    signature: void SpoofAction(const vector<ComboAddress>& addrs, const dnsdist::ResponseConfig&
      responseConfig)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:886,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - cname
    - ' responseConfig'
    argTypes:
    - DNSName
    - dnsdist::ResponseConfig
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 888
      start: 885
    functionDepth: 0
    functionLinenumber: 885
    functionLinenumberEnd: 888
    functionName: dnsdist::actions::SpoofAction::SpoofAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void SpoofAction(DNSName cname, const dnsdist::ResponseConfig& responseConfig)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:891,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - rawresponse
    argTypes:
    - PacketBuffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 893
      start: 890
    functionDepth: 0
    functionLinenumber: 890
    functionLinenumberEnd: 893
    functionName: dnsdist::actions::SpoofAction::SpoofAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void SpoofAction(PacketBuffer rawresponse)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 3
    argNames:
    - ' raws'
    - typeForAny
    - ' responseConfig'
    argTypes:
    - vector<std::string>
    - std::optional<uint16_t>
    - dnsdist::ResponseConfig
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 898
      start: 895
    functionDepth: 0
    functionLinenumber: 895
    functionLinenumberEnd: 898
    functionName: dnsdist::actions::SpoofAction::SpoofAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void SpoofAction(const vector<std::string>& raws, std::optional<uint16_t>
      typeForAny, const dnsdist::ResponseConfig& responseConfig)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:905,1
    - Dst: dnsdist::actions::SpoofAction::toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:906,1
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:908,1
    - Dst: isIPv4
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:913,1
    - Dst: isIPv6
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:916,1
    - Dst: dnsdist::actions::SpoofAction::toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:919,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 923
      start: 902
    functionDepth: 0
    functionLinenumber: 902
    functionLinenumberEnd: 923
    functionName: dnsdist::actions::SpoofAction::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 1
    functionsReached:
    - empty
    - dnsdist::actions::SpoofAction::toString
    - isIPv4
    - isIPv6
    linkageType: ''
    returnType: string
    signature: string toString() const override
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:940,1
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:940,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:942,1
    - Dst: count
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:942,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:946,1
    - Dst: dnsdist::self_answers::generateAnswerFromRawPacket
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:947,1
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:951,1
    - Dst: dnsdist::self_answers::generateAnswerFromCNAME
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:952,1
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:956,1
    - Dst: dnsdist::self_answers::generateAnswerFromRDataEntries
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:957,1
    - Dst: dnsdist::self_answers::generateAnswerFromIPAddresses
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:962,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 24
    argCount: 2
    argNames:
    - dnsquestion
    - ruleresult
    argTypes:
    - DNSQuestion*
    - std::string*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 968
      start: 935
    functionDepth: 1
    functionLinenumber: 935
    functionLinenumberEnd: 968
    functionName: SpoofAction::operator()(DNSQuestion* dnsquestion, std::string* ruleresult)
      const
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - count
    - dnsdist::self_answers::generateAnswerFromRawPacket
    - dnsdist::self_answers::generateAnswerFromIPAddresses
    - size
    - dnsdist::self_answers::generateAnswerFromCNAME
    - empty
    - dnsdist::self_answers::generateAnswerFromRDataEntries
    linkageType: ''
    returnType: DNSAction::Action
    signature: DNSAction::Action SpoofAction::operator()(DNSQuestion* dnsquestion,
      std::string* ruleresult) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - code
    argTypes:
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 977
      start: 974
    functionDepth: 0
    functionLinenumber: 974
    functionLinenumberEnd: 977
    functionName: dnsdist::actions::SetMacAddrAction::SetMacAddrAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void SetMacAddrAction(uint16_t code)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::MacAddressesCache::get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:983,1
    - Dst: dnsdist::MacAddress::data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:983,1
    - Dst: dnsdist::MacAddress::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:983,1
    - Dst: generateEDNSOption
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:990,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:990,1
    - Dst: dnsdist::MacAddress::data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:990,1
    - Dst: DNSQuestion*::getHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:992,1
    - Dst: PacketBuffer::reserve
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:996,1
    - Dst: DNSQuestion*::getData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:996,1
    - Dst: slowRewriteEDNSOptionInQueryWithRecords
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:998,1
    - Dst: DNSQuestion*::getData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:998,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1002,1
    - Dst: DNSQuestion*::getMaximumSize
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1002,1
    - Dst: DNSQuestion*::getMutableData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1006,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1006,1
    - Dst: DNSQuestion*::getMutableData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1014,1
    - Dst: generateOptRR
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1015,1
    - Dst: DNSQuestion*::getMaximumSize
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1015,1
    - Dst: dnsdist::PacketMangling::editDNSHeaderFromPacket
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1016,1
    - Dst: DNSQuestion*::getMutableData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1016,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1017,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 28
    argCount: 2
    argNames:
    - dnsquestion
    - ruleresult
    argTypes:
    - DNSQuestion*
    - std::string*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1025
      start: 979
    functionDepth: 1
    functionLinenumber: 979
    functionLinenumberEnd: 1025
    functionName: operator()(DNSQuestion* dnsquestion, std::string* ruleresult) const
      override
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - generateOptRR
    - std::move
    - DNSQuestion*::getHeader
    - DNSQuestion*::getMutableData
    - PacketBuffer::reserve
    - dnsdist::MacAddressesCache::get
    - PacketBuffer::size
    - reinterpret_cast<const char*>
    - generateEDNSOption
    - DNSQuestion*::getData
    - dnsdist::PacketMangling::editDNSHeaderFromPacket
    - dnsdist::MacAddress::data
    - DNSQuestion*::getMaximumSize
    - slowRewriteEDNSOptionInQueryWithRecords
    - dnsdist::MacAddress::size
    - htons
    linkageType: ''
    returnType: DNSAction::Action
    signature: DNSAction::Action operator()(DNSQuestion* dnsquestion, std::string*
      ruleresult) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1028,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1029
      start: 1026
    functionDepth: 0
    functionLinenumber: 1026
    functionLinenumberEnd: 1029
    functionName: dnsdist::actions::SetMacAddrAction::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - std::to_string
    linkageType: ''
    returnType: std::string
    signature: std::string toString() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1040,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - code
    - data
    argTypes:
    - uint16_t
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1042
      start: 1039
    functionDepth: 0
    functionLinenumber: 1039
    functionLinenumberEnd: 1042
    functionName: dnsdist::actions::SetEDNSOptionAction::SetEDNSOptionAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void SetEDNSOptionAction(uint16_t code, std::string data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: setEDNSOption
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1047,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - dnsquestion
    - ruleresult
    argTypes:
    - DNSQuestion*
    - std::string*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1049
      start: 1044
    functionDepth: 1
    functionLinenumber: 1044
    functionLinenumberEnd: 1049
    functionName: operator()(DNSQuestion* dnsquestion, std::string* ruleresult) const
      override
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - setEDNSOption
    linkageType: ''
    returnType: DNSAction::Action
    signature: DNSAction::Action operator()(DNSQuestion* dnsquestion, std::string*
      ruleresult) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1053,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1054
      start: 1051
    functionDepth: 0
    functionLinenumber: 1051
    functionLinenumberEnd: 1054
    functionName: dnsdist::actions::SetEDNSOptionAction::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - std::to_string
    linkageType: ''
    returnType: std::string
    signature: std::string toString() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1066,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - code
    - data
    argTypes:
    - uint16_t
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1068
      start: 1065
    functionDepth: 0
    functionLinenumber: 1065
    functionLinenumberEnd: 1068
    functionName: dnsdist::actions::SetEDNSOptionResponseAction::SetEDNSOptionResponseAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void SetEDNSOptionResponseAction(uint16_t code, std::string data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: setEDNSOption
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1072,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - response
    - ruleresult
    argTypes:
    - DNSResponse*
    - std::string*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1074
      start: 1070
    functionDepth: 1
    functionLinenumber: 1070
    functionLinenumberEnd: 1074
    functionName: operator()(DNSResponse* response, [[maybe_unused]] std::string*
      ruleresult) const override
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - setEDNSOption
    linkageType: ''
    returnType: DNSResponseAction::Action
    signature: DNSResponseAction::Action operator()(DNSResponse* response, [[maybe_unused]]
      std::string* ruleresult) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1078,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1079
      start: 1076
    functionDepth: 0
    functionLinenumber: 1076
    functionLinenumberEnd: 1079
    functionName: dnsdist::actions::SetEDNSOptionResponseAction::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - std::to_string
    linkageType: ''
    returnType: std::string
    signature: std::string toString() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::PacketMangling::editDNSHeaderFromPacket
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1093,1
    - Dst: DNSQuestion*::getMutableData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1093,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - dnsquestion
    - ruleresult
    argTypes:
    - DNSQuestion*
    - std::string*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1098
      start: 1090
    functionDepth: 1
    functionLinenumber: 1090
    functionLinenumberEnd: 1098
    functionName: operator()(DNSQuestion* dnsquestion, std::string* ruleresult) const
      override
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - dnsdist::PacketMangling::editDNSHeaderFromPacket
    - DNSQuestion*::getMutableData
    linkageType: ''
    returnType: DNSAction::Action
    signature: DNSAction::Action operator()(DNSQuestion* dnsquestion, std::string*
      ruleresult) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1102
      start: 1099
    functionDepth: 0
    functionLinenumber: 1099
    functionLinenumberEnd: 1102
    functionName: dnsdist::actions::SetNoRecurseAction::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string toString() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1109
      start: 1109
    functionDepth: 0
    functionLinenumber: 1109
    functionLinenumberEnd: 1109
    functionName: dnsdist::actions::LogAction::LogAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void LogAction()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1114,1
    - Dst: dnsdist::actions::LogAction::reopenLogFile
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1118,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1119,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1119,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 1
    argNames:
    - ' str'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1121
      start: 1111
    functionDepth: 1
    functionLinenumber: 1111
    functionLinenumberEnd: 1121
    functionName: dnsdist::actions::LogAction::LogAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - empty
    - stringerror
    - dnsdist::actions::LogAction::reopenLogFile
    - std::runtime_error
    linkageType: ''
    returnType: void
    signature: void LogAction(const std::string& str, bool binary = true, bool append
      = false, bool buffered = true, bool verboseOnly = true, bool includeTimestamp
      = false)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: std::atomic_load_explicit
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1126,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1128,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1130,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1130,1
    - Dst: static_cast<unsigned long long>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1130,1
    - Dst: DNSQuestion*::getQueryRealTime
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1130,1
    - Dst: static_cast<unsigned long>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1130,1
    - Dst: DNSQuestion*::getQueryRealTime
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1130,1
    - Dst: DNSQuestion*::ids::origRemote::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1130,1
    - Dst: DNSQuestion*::ids::qname::toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1130,1
    - Dst: QType
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1130,1
    - Dst: DNSQuestion*::getHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1130,1
    - Dst: DNSQuestion*::getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1131,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1131,1
    - Dst: DNSQuestion*::getQueryRealTime
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1131,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1131,1
    - Dst: DNSQuestion*::getQueryRealTime
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1131,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1134,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1134,1
    - Dst: DNSQuestion*::ids::origRemote::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1134,1
    - Dst: DNSQuestion*::ids::qname::toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1134,1
    - Dst: QType
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1134,1
    - Dst: DNSQuestion*::getHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1134,1
    - Dst: DNSQuestion*::getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1135,1
    - Dst: DNSQuestion*::ids::qname::getStorage
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1141,1
    - Dst: static_cast<uint64_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1143,1
    - Dst: DNSQuestion*::getQueryRealTime
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1143,1
    - Dst: static_cast<uint32_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1144,1
    - Dst: DNSQuestion*::getQueryRealTime
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1144,1
    - Dst: fwrite
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1145,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1145,1
    - Dst: fwrite
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1146,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1146,1
    - Dst: DNSQuestion*::getHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1148,1
    - Dst: fwrite
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1149,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1149,1
    - Dst: fwrite
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1150,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1150,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1150,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1150,1
    - Dst: fwrite
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1151,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1151,1
    - Dst: fwrite
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1152,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1152,1
    - Dst: fwrite
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1154,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1154,1
    - Dst: fwrite
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1157,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1157,1
    - Dst: fwrite
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1159,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1159,1
    - Dst: fprintf
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1163,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1163,1
    - Dst: static_cast<unsigned long long>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1163,1
    - Dst: DNSQuestion*::getQueryRealTime
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1163,1
    - Dst: static_cast<unsigned long>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1163,1
    - Dst: DNSQuestion*::getQueryRealTime
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1163,1
    - Dst: DNSQuestion*::ids::origRemote::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1163,1
    - Dst: DNSQuestion*::ids::qname::toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1163,1
    - Dst: QType
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1163,1
    - Dst: DNSQuestion*::getHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1163,1
    - Dst: fprintf
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1166,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1166,1
    - Dst: DNSQuestion*::ids::origRemote::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1166,1
    - Dst: DNSQuestion*::ids::qname::toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1166,1
    - Dst: QType
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1166,1
    - Dst: DNSQuestion*::getHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1166,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 36
    argCount: 2
    argNames:
    - dnsquestion
    - ruleresult
    argTypes:
    - DNSQuestion*
    - std::string*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1171
      start: 1123
    functionDepth: 1
    functionLinenumber: 1123
    functionLinenumberEnd: 1171
    functionName: operator()(DNSQuestion* dnsquestion, std::string* ruleresult) const
      override
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - fprintf
    - DNSQuestion*::getHeader
    - DNSQuestion*::ids::origRemote::toStringWithPort
    - static_cast<uint32_t>
    - SLOG
    - static_cast<unsigned long long>
    - std::atomic_load_explicit
    - Logging::Loggable
    - QType
    - DNSQuestion*::getLogger
    - size
    - fwrite
    - c_str
    - DNSQuestion*::ids::qname::getStorage
    - auto::get
    - dnsdist::configuration::getCurrentRuntimeConfiguration
    - DNSQuestion*::ids::qname::toString
    - static_cast<uint64_t>
    - DNSQuestion*::getQueryRealTime
    - infolog
    - static_cast<unsigned long>
    linkageType: ''
    returnType: DNSAction::Action
    signature: DNSAction::Action operator()(DNSQuestion* dnsquestion, std::string*
      ruleresult) const override
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1175,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1179
      start: 1173
    functionDepth: 0
    functionLinenumber: 1173
    functionLinenumberEnd: 1179
    functionName: dnsdist::actions::LogAction::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - empty
    linkageType: ''
    returnType: std::string
    signature: std::string toString() const override
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::actions::LogAction::reopenLogFile
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1183,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1185,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1185,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1185,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1186,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1186,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1188
      start: 1181
    functionDepth: 1
    functionLinenumber: 1181
    functionLinenumberEnd: 1188
    functionName: dnsdist::actions::LogAction::reload
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - SLOG
    - Logging::Loggable
    - stringerror
    - warnlog
    - dnsdist::logging::getTopLogger
    - dnsdist::actions::LogAction::reopenLogFile
    linkageType: ''
    returnType: void
    signature: void reload() override
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: fopen
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1197,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1197,1
    - Dst: std::shared_ptr<FILE>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1203,1
    - Dst: setbuf
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1207,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1207,1
    - Dst: std::atomic_store_explicit
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1210,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1210,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1212
      start: 1191
    functionDepth: 0
    functionLinenumber: 1191
    functionLinenumberEnd: 1212
    functionName: dnsdist::actions::LogAction::reopenLogFile
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 2
    functionsReached:
    - std::move
    - auto::get
    - std::shared_ptr<FILE>
    - fopen
    - std::atomic_store_explicit
    - c_str
    - setbuf
    linkageType: ''
    returnType: bool
    signature: bool reopenLogFile()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1226
      start: 1226
    functionDepth: 0
    functionLinenumber: 1226
    functionLinenumberEnd: 1226
    functionName: dnsdist::actions::LogResponseAction::LogResponseAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void LogResponseAction()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1231,1
    - Dst: dnsdist::actions::LogResponseAction::reopenLogFile
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1235,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1236,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1236,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 1
    argNames:
    - ' str'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1238
      start: 1228
    functionDepth: 1
    functionLinenumber: 1228
    functionLinenumberEnd: 1238
    functionName: dnsdist::actions::LogResponseAction::LogResponseAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - empty
    - stringerror
    - dnsdist::actions::LogResponseAction::reopenLogFile
    - std::runtime_error
    linkageType: ''
    returnType: void
    signature: void LogResponseAction(const std::string& str, bool append = false,
      bool buffered = true, bool verboseOnly = true, bool includeTimestamp = false)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: std::atomic_load_explicit
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1243,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1245,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1247,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1247,1
    - Dst: static_cast<unsigned long long>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1247,1
    - Dst: DNSResponse*::getQueryRealTime
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1247,1
    - Dst: static_cast<unsigned long>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1247,1
    - Dst: DNSResponse*::getQueryRealTime
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1247,1
    - Dst: DNSResponse*::ids::origRemote::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1247,1
    - Dst: DNSResponse*::ids::qname::toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1247,1
    - Dst: QType
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1247,1
    - Dst: RCode::to_s
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1247,1
    - Dst: DNSResponse*::getHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1247,1
    - Dst: DNSResponse*::getHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1247,1
    - Dst: DNSResponse*::getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1248,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1248,1
    - Dst: DNSResponse*::getQueryRealTime
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1248,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1248,1
    - Dst: DNSResponse*::getQueryRealTime
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1248,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1251,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1251,1
    - Dst: DNSResponse*::ids::origRemote::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1251,1
    - Dst: DNSResponse*::ids::qname::toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1251,1
    - Dst: QType
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1251,1
    - Dst: RCode::to_s
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1251,1
    - Dst: DNSResponse*::getHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1251,1
    - Dst: DNSResponse*::getHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1251,1
    - Dst: DNSResponse*::getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1252,1
    - Dst: fprintf
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1258,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1258,1
    - Dst: static_cast<unsigned long long>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1258,1
    - Dst: DNSResponse*::getQueryRealTime
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1258,1
    - Dst: static_cast<unsigned long>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1258,1
    - Dst: DNSResponse*::getQueryRealTime
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1258,1
    - Dst: DNSResponse*::ids::origRemote::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1258,1
    - Dst: DNSResponse*::ids::qname::toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1258,1
    - Dst: QType
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1258,1
    - Dst: RCode::to_s
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1258,1
    - Dst: DNSResponse*::getHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1258,1
    - Dst: DNSResponse*::getHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1258,1
    - Dst: fprintf
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1261,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1261,1
    - Dst: DNSResponse*::ids::origRemote::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1261,1
    - Dst: DNSResponse*::ids::qname::toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1261,1
    - Dst: QType
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1261,1
    - Dst: RCode::to_s
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1261,1
    - Dst: DNSResponse*::getHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1261,1
    - Dst: DNSResponse*::getHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1261,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 2
    argNames:
    - response
    - ruleresult
    argTypes:
    - DNSResponse*
    - std::string*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1265
      start: 1240
    functionDepth: 1
    functionLinenumber: 1240
    functionLinenumberEnd: 1265
    functionName: operator()(DNSResponse* response, std::string* ruleresult) const
      override
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - SLOG
    - static_cast<unsigned long long>
    - dnsdist::configuration::getCurrentRuntimeConfiguration
    - std::atomic_load_explicit
    - Logging::Loggable
    - fprintf
    - auto::get
    - QType
    - DNSResponse*::getQueryRealTime
    - DNSResponse*::getLogger
    - infolog
    - DNSResponse*::getHeader
    - DNSResponse*::ids::qname::toString
    - RCode::to_s
    - DNSResponse*::ids::origRemote::toStringWithPort
    - static_cast<unsigned long>
    linkageType: ''
    returnType: DNSResponseAction::Action
    signature: DNSResponseAction::Action operator()(DNSResponse* response, std::string*
      ruleresult) const override
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1269,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1273
      start: 1267
    functionDepth: 0
    functionLinenumber: 1267
    functionLinenumberEnd: 1273
    functionName: dnsdist::actions::LogResponseAction::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - empty
    linkageType: ''
    returnType: std::string
    signature: std::string toString() const override
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::actions::LogResponseAction::reopenLogFile
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1277,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1279,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1279,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1279,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1280,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1280,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1282
      start: 1275
    functionDepth: 1
    functionLinenumber: 1275
    functionLinenumberEnd: 1282
    functionName: dnsdist::actions::LogResponseAction::reload
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - SLOG
    - Logging::Loggable
    - stringerror
    - dnsdist::actions::LogResponseAction::reopenLogFile
    - warnlog
    - dnsdist::logging::getTopLogger
    linkageType: ''
    returnType: void
    signature: void reload() override
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: fopen
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1291,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1291,1
    - Dst: std::shared_ptr<FILE>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1297,1
    - Dst: setbuf
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1301,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1301,1
    - Dst: std::atomic_store_explicit
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1304,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1304,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1306
      start: 1285
    functionDepth: 0
    functionLinenumber: 1285
    functionLinenumberEnd: 1306
    functionName: dnsdist::actions::LogResponseAction::reopenLogFile
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 2
    functionsReached:
    - std::move
    - auto::get
    - std::shared_ptr<FILE>
    - fopen
    - std::atomic_store_explicit
    - c_str
    - setbuf
    linkageType: ''
    returnType: bool
    signature: bool reopenLogFile()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::PacketMangling::editDNSHeaderFromPacket
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1323,1
    - Dst: DNSQuestion*::getMutableData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1323,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - dnsquestion
    - ruleresult
    argTypes:
    - DNSQuestion*
    - std::string*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1328
      start: 1320
    functionDepth: 1
    functionLinenumber: 1320
    functionLinenumberEnd: 1328
    functionName: operator()(DNSQuestion* dnsquestion, std::string* ruleresult) const
      override
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - dnsdist::PacketMangling::editDNSHeaderFromPacket
    - DNSQuestion*::getMutableData
    linkageType: ''
    returnType: DNSAction::Action
    signature: DNSAction::Action operator()(DNSQuestion* dnsquestion, std::string*
      ruleresult) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1332
      start: 1329
    functionDepth: 0
    functionLinenumber: 1329
    functionLinenumberEnd: 1332
    functionName: dnsdist::actions::SetDisableValidationAction::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string toString() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - dnsquestion
    - ruleresult
    argTypes:
    - DNSQuestion*
    - std::string*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1344
      start: 1339
    functionDepth: 0
    functionLinenumber: 1339
    functionLinenumberEnd: 1344
    functionName: operator()(DNSQuestion* dnsquestion, std::string* ruleresult) const
      override
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: DNSAction::Action
    signature: DNSAction::Action operator()(DNSQuestion* dnsquestion, std::string*
      ruleresult) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1348
      start: 1345
    functionDepth: 0
    functionLinenumber: 1345
    functionLinenumberEnd: 1348
    functionName: dnsdist::actions::SetSkipCacheAction::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string toString() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - response
    - ruleresult
    argTypes:
    - DNSResponse*
    - std::string*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1359
      start: 1354
    functionDepth: 0
    functionLinenumber: 1354
    functionLinenumberEnd: 1359
    functionName: operator()(DNSResponse* response, std::string* ruleresult) const
      override
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: DNSResponseAction::Action
    signature: DNSResponseAction::Action operator()(DNSResponse* response, std::string*
      ruleresult) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1363
      start: 1360
    functionDepth: 0
    functionLinenumber: 1360
    functionLinenumberEnd: 1363
    functionName: dnsdist::actions::SetSkipCacheResponseAction::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string toString() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ttl
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1373
      start: 1370
    functionDepth: 0
    functionLinenumber: 1370
    functionLinenumberEnd: 1373
    functionName: dnsdist::actions::SetTempFailureCacheTTLAction::SetTempFailureCacheTTLAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void SetTempFailureCacheTTLAction(uint32_t ttl)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - dnsquestion
    - ruleresult
    argTypes:
    - DNSQuestion*
    - std::string*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1379
      start: 1374
    functionDepth: 0
    functionLinenumber: 1374
    functionLinenumberEnd: 1379
    functionName: operator()(DNSQuestion* dnsquestion, std::string* ruleresult) const
      override
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: DNSAction::Action
    signature: DNSAction::Action operator()(DNSQuestion* dnsquestion, std::string*
      ruleresult) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1382,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1383
      start: 1380
    functionDepth: 0
    functionLinenumber: 1380
    functionLinenumberEnd: 1383
    functionName: dnsdist::actions::SetTempFailureCacheTTLAction::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - std::to_string
    linkageType: ''
    returnType: std::string
    signature: std::string toString() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - v4Length
    - v6Length
    argTypes:
    - uint16_t
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1396
      start: 1393
    functionDepth: 0
    functionLinenumber: 1393
    functionLinenumberEnd: 1396
    functionName: dnsdist::actions::SetECSPrefixLengthAction::SetECSPrefixLengthAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void SetECSPrefixLengthAction(uint16_t v4Length, uint16_t v6Length)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - dnsquestion
    - ruleresult
    argTypes:
    - DNSQuestion*
    - std::string*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1402
      start: 1397
    functionDepth: 0
    functionLinenumber: 1397
    functionLinenumberEnd: 1402
    functionName: operator()(DNSQuestion* dnsquestion, std::string* ruleresult) const
      override
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: DNSAction::Action
    signature: DNSAction::Action operator()(DNSQuestion* dnsquestion, std::string*
      ruleresult) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1405,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1405,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1406
      start: 1403
    functionDepth: 0
    functionLinenumber: 1403
    functionLinenumberEnd: 1406
    functionName: dnsdist::actions::SetECSPrefixLengthAction::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - std::to_string
    linkageType: ''
    returnType: std::string
    signature: std::string toString() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ecsOverride
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1420
      start: 1417
    functionDepth: 0
    functionLinenumber: 1417
    functionLinenumberEnd: 1420
    functionName: dnsdist::actions::SetECSOverrideAction::SetECSOverrideAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void SetECSOverrideAction(bool ecsOverride)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - dnsquestion
    - ruleresult
    argTypes:
    - DNSQuestion*
    - std::string*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1426
      start: 1421
    functionDepth: 0
    functionLinenumber: 1421
    functionLinenumberEnd: 1426
    functionName: operator()(DNSQuestion* dnsquestion, std::string* ruleresult) const
      override
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: DNSAction::Action
    signature: DNSAction::Action operator()(DNSQuestion* dnsquestion, std::string*
      ruleresult) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1429,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1429,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1430
      start: 1427
    functionDepth: 0
    functionLinenumber: 1427
    functionLinenumberEnd: 1430
    functionName: dnsdist::actions::SetECSOverrideAction::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - std::to_string
    - static_cast<int>
    linkageType: ''
    returnType: std::string
    signature: std::string toString() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - dnsquestion
    - ruleresult
    argTypes:
    - DNSQuestion*
    - std::string*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1445
      start: 1440
    functionDepth: 0
    functionLinenumber: 1440
    functionLinenumberEnd: 1445
    functionName: operator()(DNSQuestion* dnsquestion, std::string* ruleresult) const
      override
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: DNSAction::Action
    signature: DNSAction::Action operator()(DNSQuestion* dnsquestion, std::string*
      ruleresult) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1449
      start: 1446
    functionDepth: 0
    functionLinenumber: 1446
    functionLinenumberEnd: 1449
    functionName: dnsdist::actions::SetDisableECSAction::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string toString() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' v4Netmask'
    argTypes:
    - Netmask
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1459
      start: 1456
    functionDepth: 0
    functionLinenumber: 1456
    functionLinenumberEnd: 1459
    functionName: dnsdist::actions::SetECSAction::SetECSAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void SetECSAction(const Netmask& v4Netmask)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - ' v4Netmask'
    - ' v6Netmask'
    argTypes:
    - Netmask
    - Netmask
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1464
      start: 1461
    functionDepth: 0
    functionLinenumber: 1461
    functionLinenumberEnd: 1464
    functionName: dnsdist::actions::SetECSAction::SetECSAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void SetECSAction(const Netmask& v4Netmask, const Netmask& v6Netmask)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::make_unique<Netmask>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1470,1
    - Dst: DNSQuestion*::ids::origRemote::isIPv4
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1470,1
    - Dst: std::make_unique<Netmask>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1473,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - dnsquestion
    - ruleresult
    argTypes:
    - DNSQuestion*
    - std::string*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1477
      start: 1466
    functionDepth: 0
    functionLinenumber: 1466
    functionLinenumberEnd: 1477
    functionName: operator()(DNSQuestion* dnsquestion, std::string* ruleresult) const
      override
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - std::make_unique<Netmask>
    - DNSQuestion*::ids::origRemote::isIPv4
    linkageType: ''
    returnType: DNSAction::Action
    signature: DNSAction::Action operator()(DNSQuestion* dnsquestion, std::string*
      ruleresult) const override
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::actions::SetECSAction::toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1481,1
    - Dst: dnsdist::actions::SetECSAction::toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1483,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1486
      start: 1479
    functionDepth: 0
    functionLinenumber: 1479
    functionLinenumberEnd: 1486
    functionName: dnsdist::actions::SetECSAction::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 1
    functionsReached:
    - dnsdist::actions::SetECSAction::toString
    linkageType: ''
    returnType: std::string
    signature: std::string toString() const override
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1521,1
    - Dst: dnsdist::Protocol::toPrettyString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1521,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 26
    argCount: 1
    argNames:
    - protocol
    argTypes:
    - dnsdist::Protocol
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1522
      start: 1495
    functionDepth: 0
    functionLinenumber: 1495
    functionLinenumberEnd: 1522
    functionName: dnsdist::actions::ProtocolToDNSTap
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - dnsdist::Protocol::toPrettyString
    - std::runtime_error
    linkageType: ''
    returnType: std::tuple<DnstapMessage::ProtocolType, std::optional<DnstapMessage::HttpProtocolType>>
    signature: std::tuple<DnstapMessage::ProtocolType, std::optional<DnstapMessage::HttpProtocolType>>
      ProtocolToDNSTap(dnsdist::Protocol protocol)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: queueData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1526,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1532,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1532,1
    - Dst: name
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1532,1
    - Dst: RemoteLoggerInterface::toErrorString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1532,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1533,1
    - Dst: RemoteLoggerInterface::toErrorString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1533,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1533,1
    - Dst: name
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1533,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1537,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1537,1
    - Dst: name
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1537,1
    - Dst: RemoteLoggerInterface::toErrorString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1537,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1538,1
    - Dst: RemoteLoggerInterface::toErrorString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1538,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1538,1
    - Dst: name
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1538,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1542,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1542,1
    - Dst: name
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1542,1
    - Dst: RemoteLoggerInterface::toErrorString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1542,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1543,1
    - Dst: RemoteLoggerInterface::toErrorString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1543,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1543,1
    - Dst: name
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1543,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 2
    argNames:
    - ' remoteLogger'
    - ' data'
    argTypes:
    - RemoteLoggerInterface
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1545
      start: 1524
    functionDepth: 1
    functionLinenumber: 1524
    functionLinenumberEnd: 1545
    functionName: dnsdist::actions::remoteLoggerQueueData
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - SLOG
    - Logging::Loggable
    - VERBOSESLOG
    - infolog
    - warnlog
    - queueData
    - RemoteLoggerInterface::toErrorString
    - dnsdist::logging::getTopLogger
    - name
    linkageType: ''
    returnType: void
    signature: void remoteLoggerQueueData(RemoteLoggerInterface& remoteLogger, const
      std::string& data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1552,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1552,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 3
    argNames:
    - identity
    - ' logger'
    - alterFunc
    argTypes:
    - std::string
    - std::shared_ptr<RemoteLoggerInterface>
    - std::optional<std::function<void(DNSQuestion*, DnstapMessage*)>>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1554
      start: 1551
    functionDepth: 0
    functionLinenumber: 1551
    functionLinenumberEnd: 1554
    functionName: dnsdist::actions::DnstapLogAction::DnstapLogAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void DnstapLogAction(std::string identity, std::shared_ptr<RemoteLoggerInterface>&
      logger, std::optional<std::function<void(DNSQuestion*, DnstapMessage*)>> alterFunc)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::string::clear
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1559,1
    - Dst: ProtocolToDNSTap
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1561,1
    - Dst: DNSQuestion*::getProtocol
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1561,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1563,1
    - Dst: DNSQuestion*::getHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1563,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1563,1
    - Dst: DNSQuestion*::getData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1563,1
    - Dst: DNSQuestion*::getData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1563,1
    - Dst: DNSQuestion*::getQueryRealTime
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1563,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1563,1
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1566,1
    - Dst: DnstapMessage::getBuffer
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1571,1
    - Dst: remoteLoggerQueueData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1572,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - dnsquestion
    - ruleresult
    argTypes:
    - DNSQuestion*
    - std::string*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1575
      start: 1555
    functionDepth: 1
    functionLinenumber: 1555
    functionLinenumberEnd: 1575
    functionName: operator()(DNSQuestion* dnsquestion, std::string* ruleresult) const
      override
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - ProtocolToDNSTap
    - std::move
    - DnstapMessage::getBuffer
    - DNSQuestion*::getHeader
    - std::string::clear
    - DNSQuestion*::getQueryRealTime
    - DNSName
    - lock
    - reinterpret_cast<const char*>
    - DNSQuestion*::getData
    - remoteLoggerQueueData
    - DNSQuestion*::getProtocol
    linkageType: ''
    returnType: DNSAction::Action
    signature: DNSAction::Action operator()(DNSQuestion* dnsquestion, std::string*
      ruleresult) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::actions::DnstapLogAction::toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1578,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1579
      start: 1576
    functionDepth: 0
    functionLinenumber: 1576
    functionLinenumberEnd: 1579
    functionName: dnsdist::actions::DnstapLogAction::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 1
    functionsReached:
    - dnsdist::actions::DnstapLogAction::toString
    linkageType: ''
    returnType: std::string
    signature: std::string toString() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: addMeta
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1592,1
    - Dst: getValues
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1592,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 3
    argNames:
    - ' message'
    - ' dnsquestion'
    - ' metas'
    argTypes:
    - DNSDistProtoBufMessage
    - DNSQuestion
    - std::vector<std::pair<std::string, ProtoBufMetaKey>>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1594
      start: 1589
    functionDepth: 4
    functionLinenumber: 1589
    functionLinenumberEnd: 1594
    functionName: dnsdist::actions::addMetaDataToProtobuf
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - getValues
    - addMeta
    linkageType: ''
    returnType: void
    signature: void addMetaDataToProtobuf(DNSDistProtoBufMessage& message, const DNSQuestion&
      dnsquestion, const std::vector<std::pair<std::string, ProtoBufMetaKey>>& metas)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: substr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1598,1
    - Dst: length
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1598,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' key'
    - ' matchedPrefix'
    argTypes:
    - std::string
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1599
      start: 1596
    functionDepth: 0
    functionLinenumber: 1596
    functionLinenumberEnd: 1599
    functionName: dnsdist::actions::stripPrefix
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - length
    - substr
    linkageType: ''
    returnType: std::string
    signature: std::string stripPrefix(const std::string& key, const std::string&
      matchedPrefix)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1603,1
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1611,1
    - Dst: count
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1611,1
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1614,1
    - Dst: boost::starts_with
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1616,1
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1629,1
    - Dst: addTag
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1631,1
    - Dst: dnsdist::actions::stripPrefix
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1631,1
    - Dst: addTag
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1634,1
    - Dst: dnsdist::actions::stripPrefix
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1640,1
    - Dst: std::string::append
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1645,1
    - Dst: std::string::append
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1646,1
    - Dst: addTag
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1647,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 36
    argCount: 6
    argNames:
    - ' message'
    - ' tags'
    - ' allowedKeys'
    - ' allowedPrefixes'
    - keyOnly
    - stripPrefixes
    argTypes:
    - DNSDistProtoBufMessage
    - QTag
    - std::optional<std::unordered_set<std::string>>
    - std::unordered_set<std::string>
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1650
      start: 1601
    functionDepth: 1
    functionLinenumber: 1601
    functionLinenumberEnd: 1650
    functionName: dnsdist::actions::addTagsToProtobuf
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - std::string::append
    - count
    - boost::starts_with
    - dnsdist::actions::stripPrefix
    - empty
    - addTag
    linkageType: ''
    returnType: void
    signature: void addTagsToProtobuf(DNSDistProtoBufMessage& message, const QTag&
      tags, const std::optional<std::unordered_set<std::string>>& allowedKeys, const
      std::unordered_set<std::string>& allowedPrefixes, bool keyOnly, bool stripPrefixes)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::edns::getExtendedDNSError
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1654,1
    - Dst: getData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1654,1
    - Dst: addMeta
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1660,1
    - Dst: addMeta
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1663,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 3
    argNames:
    - ' message'
    - ' response'
    - ' metaKey'
    argTypes:
    - DNSDistProtoBufMessage
    - DNSResponse
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1665
      start: 1652
    functionDepth: 4
    functionLinenumber: 1652
    functionLinenumberEnd: 1665
    functionName: dnsdist::actions::addExtendedDNSErrorToProtobuf
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - getData
    - dnsdist::edns::getExtendedDNSError
    - addMeta
    linkageType: ''
    returnType: void
    signature: void addExtendedDNSErrorToProtobuf(DNSDistProtoBufMessage& message,
      const DNSResponse& response, const std::string& metaKey)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: addMeta
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1592,1
    - Dst: getValues
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1592,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 3
    argNames:
    - ' message'
    - ' dnsquestion'
    - ' metas'
    argTypes:
    - DNSDistProtoBufMessage
    - DNSQuestion
    - std::vector<std::pair<std::string, ProtoBufMetaKey>>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1594
      start: 1589
    functionDepth: 4
    functionLinenumber: 1589
    functionLinenumberEnd: 1594
    functionName: dnsdist::actions::addMetaDataToProtobuf
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - getValues
    - addMeta
    linkageType: ''
    returnType: void
    signature: void addMetaDataToProtobuf(DNSDistProtoBufMessage& message, const DNSQuestion&
      dnsquestion, const std::vector<std::pair<std::string, ProtoBufMetaKey>>& metas)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: substr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1598,1
    - Dst: length
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1598,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' key'
    - ' matchedPrefix'
    argTypes:
    - std::string
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1599
      start: 1596
    functionDepth: 0
    functionLinenumber: 1596
    functionLinenumberEnd: 1599
    functionName: dnsdist::actions::stripPrefix
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 1
    functionsReached:
    - length
    - substr
    linkageType: ''
    returnType: std::string
    signature: std::string stripPrefix(const std::string& key, const std::string&
      matchedPrefix)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1603,1
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1611,1
    - Dst: count
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1611,1
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1614,1
    - Dst: boost::starts_with
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1616,1
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1629,1
    - Dst: addTag
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1631,1
    - Dst: dnsdist::actions::stripPrefix
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1631,1
    - Dst: addTag
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1634,1
    - Dst: dnsdist::actions::stripPrefix
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1640,1
    - Dst: std::string::append
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1645,1
    - Dst: std::string::append
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1646,1
    - Dst: addTag
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1647,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 36
    argCount: 6
    argNames:
    - ' message'
    - ' tags'
    - ' allowedKeys'
    - ' allowedPrefixes'
    - keyOnly
    - stripPrefixes
    argTypes:
    - DNSDistProtoBufMessage
    - QTag
    - std::optional<std::unordered_set<std::string>>
    - std::unordered_set<std::string>
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1650
      start: 1601
    functionDepth: 1
    functionLinenumber: 1601
    functionLinenumberEnd: 1650
    functionName: dnsdist::actions::addTagsToProtobuf
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - std::string::append
    - count
    - boost::starts_with
    - dnsdist::actions::stripPrefix
    - empty
    - addTag
    linkageType: ''
    returnType: void
    signature: void addTagsToProtobuf(DNSDistProtoBufMessage& message, const QTag&
      tags, const std::optional<std::unordered_set<std::string>>& allowedKeys, const
      std::unordered_set<std::string>& allowedPrefixes, bool keyOnly, bool stripPrefixes)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::edns::getExtendedDNSError
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1654,1
    - Dst: getData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1654,1
    - Dst: addMeta
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1660,1
    - Dst: addMeta
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1663,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 3
    argNames:
    - ' message'
    - ' response'
    - ' metaKey'
    argTypes:
    - DNSDistProtoBufMessage
    - DNSResponse
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1665
      start: 1652
    functionDepth: 4
    functionLinenumber: 1652
    functionLinenumberEnd: 1665
    functionName: dnsdist::actions::addExtendedDNSErrorToProtobuf
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - getData
    - dnsdist::edns::getExtendedDNSError
    - addMeta
    linkageType: ''
    returnType: void
    signature: void addExtendedDNSErrorToProtobuf(DNSDistProtoBufMessage& message,
      const DNSResponse& response, const std::string& metaKey)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1673,1
    - Dst: ipEncryptKey::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1675,1
    - Dst: pdns::ipcrypt2::IPCrypt2::IPCrypt2
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1676,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 4
    argCount: 1
    argNames:
    - ' config'
    argTypes:
    - RemoteLogActionConfiguration
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1678
      start: 1672
    functionDepth: 0
    functionLinenumber: 1672
    functionLinenumberEnd: 1678
    functionName: dnsdist::actions::RemoteLogAction::RemoteLogAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - pdns::ipcrypt2::IPCrypt2::IPCrypt2
    - std::move
    - ipEncryptKey::empty
    linkageType: ''
    returnType: void
    signature: void RemoteLogAction(RemoteLogActionConfiguration&& config)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: std::make_unique<InternalQueryState::ProtoBufData>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1684,1
    - Dst: getUniqueID
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1687,1
    - Dst: DNSDistProtoBufMessage::setServerIdentity
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1692,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1692,1
    - Dst: serverID::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1694,1
    - Dst: DNSDistProtoBufMessage::setServerIdentity
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1695,1
    - Dst: ipEncryptKey::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1699,1
    - Dst: DNSDistProtoBufMessage::setRequestor
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1700,1
    - Dst: encryptCA
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1700,1
    - Dst: encrypt
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1704,1
    - Dst: auto::setPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1705,1
    - Dst: DNSQuestion*::ids::origRemote::getPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1705,1
    - Dst: DNSDistProtoBufMessage::setRequestor
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1706,1
    - Dst: addTagsToProtobuf
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1710,1
    - Dst: addMetaDataToProtobuf
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1713,1
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1716,1
    - Dst: std::string::clear
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1721,1
    - Dst: DNSDistProtoBufMessage::serialize
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1722,1
    - Dst: DNSQuestion*::ids::d_rawProtobufContent::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1723,1
    - Dst: std::string::insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1724,1
    - Dst: std::string::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1724,1
    - Dst: DNSQuestion*::ids::d_rawProtobufContent::begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1724,1
    - Dst: DNSQuestion*::ids::d_rawProtobufContent::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1724,1
    - Dst: remoteLoggerQueueData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1726,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 35
    argCount: 2
    argNames:
    - dnsquestion
    - ruleresult
    argTypes:
    - DNSQuestion*
    - std::string*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1729
      start: 1680
    functionDepth: 1
    functionLinenumber: 1680
    functionLinenumberEnd: 1729
    functionName: operator()(DNSQuestion* dnsquestion, std::string* ruleresult) const
      override
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - ipEncryptKey::empty
    - DNSQuestion*::ids::origRemote::getPort
    - addTagsToProtobuf
    - getUniqueID
    - std::string::end
    - auto::setPort
    - remoteLoggerQueueData
    - serverID::empty
    - DNSQuestion*::ids::d_rawProtobufContent::empty
    - encryptCA
    - DNSQuestion*::ids::d_rawProtobufContent::begin
    - std::string::insert
    - lock
    - DNSDistProtoBufMessage::setServerIdentity
    - dnsdist::configuration::getCurrentRuntimeConfiguration
    - DNSDistProtoBufMessage::setRequestor
    - addMetaDataToProtobuf
    - std::string::clear
    - DNSQuestion*::ids::d_rawProtobufContent::end
    - std::make_unique<InternalQueryState::ProtoBufData>
    - encrypt
    - DNSDistProtoBufMessage::serialize
    linkageType: ''
    returnType: DNSAction::Action
    signature: DNSAction::Action operator()(DNSQuestion* dnsquestion, std::string*
      ruleresult) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: logger::toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1732,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1733
      start: 1730
    functionDepth: 0
    functionLinenumber: 1730
    functionLinenumberEnd: 1733
    functionName: dnsdist::actions::RemoteLogAction::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - logger::toString
    linkageType: ''
    returnType: std::string
    signature: std::string toString() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' config'
    argTypes:
    - SetTraceActionConfiguration
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1746
      start: 1745
    functionDepth: 0
    functionLinenumber: 1745
    functionLinenumberEnd: 1746
    functionName: dnsdist::actions::SetTraceAction::SetTraceAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void SetTraceAction(SetTraceActionConfiguration& config)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: DNSQuestion*::ids::getTracer
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1750,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1752,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1752,1
    - Dst: DNSQuestion*::getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1753,1
    - Dst: DNSQuestion*::ids::ottraceLoggers::clear
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1761,1
    - Dst: setRootSpanAttribute
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1766,1
    - Dst: DNSQuestion*::ids::qname::toStringNoDot
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1766,1
    - Dst: setRootSpanAttribute
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1767,1
    - Dst: QType
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1767,1
    - Dst: setRootSpanAttribute
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1768,1
    - Dst: DNSQuestion*::ids::origRemote::toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1768,1
    - Dst: setRootSpanAttribute
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1769,1
    - Dst: DNSQuestion*::ids::origRemote::getPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1769,1
    - Dst: setTraceAttribute
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1770,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1770,1
    - Dst: parseEDNSOptions
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1782,1
    - Dst: pdns::trace::extractOTraceIDs
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1791,1
    - Dst: EDNSOptionCode::EDNSOptionCodeEnum
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1791,1
    - Dst: setTraceID
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1792,1
    - Dst: setRootSpanID
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1794,1
    - Dst: locateEDNSOptRR
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1804,1
    - Dst: DNSQuestion*::getData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1804,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1810,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1810,1
    - Dst: DNSQuestion*::getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1811,1
    - Dst: removeEDNSOptionFromOPT
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1816,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1816,1
    - Dst: DNSQuestion*::getMutableData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1816,1
    - Dst: DNSQuestion*::getMutableData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1817,1
    - Dst: DNSQuestion*::getData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1817,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 45
    argCount: 2
    argNames:
    - dnsquestion
    - ruleresult
    argTypes:
    - DNSQuestion*
    - std::string*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1821
      start: 1748
    functionDepth: 1
    functionLinenumber: 1748
    functionLinenumberEnd: 1821
    functionName: operator()([[maybe_unused]] DNSQuestion* dnsquestion, [[maybe_unused]]
      std::string* ruleresult) const override
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - reinterpret_cast<char*>
    - DNSQuestion*::ids::origRemote::getPort
    - setTraceID
    - setRootSpanID
    - DNSQuestion*::ids::getTracer
    - locateEDNSOptRR
    - setRootSpanAttribute
    - QType
    - DNSQuestion*::getLogger
    - DNSQuestion*::ids::ottraceLoggers::clear
    - parseEDNSOptions
    - DNSQuestion*::ids::origRemote::toString
    - DNSQuestion*::ids::qname::toStringNoDot
    - removeEDNSOptionFromOPT
    - dnsdist::configuration::getCurrentRuntimeConfiguration
    - VERBOSESLOG
    - setTraceAttribute
    - DNSQuestion*::getMutableData
    - pdns::trace::extractOTraceIDs
    - infolog
    - EDNSOptionCode::EDNSOptionCodeEnum
    - DNSQuestion*::getData
    linkageType: ''
    returnType: DNSAction::Action
    signature: DNSAction::Action operator()([[maybe_unused]] DNSQuestion* dnsquestion,
      [[maybe_unused]] std::string* ruleresult) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1825,1
    - Dst: string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1825,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1826
      start: 1823
    functionDepth: 0
    functionLinenumber: 1823
    functionLinenumberEnd: 1826
    functionName: dnsdist::actions::SetTraceAction::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - string
    linkageType: ''
    returnType: std::string
    signature: std::string toString() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1844,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - reason
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1846
      start: 1843
    functionDepth: 0
    functionLinenumber: 1843
    functionLinenumberEnd: 1846
    functionName: dnsdist::actions::SNMPTrapAction::SNMPTrapAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void SNMPTrapAction(std::string reason)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::configuration::getImmutableConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1850,1
    - Dst: sendDNSTrap
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1851,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - dnsquestion
    - ruleresult
    argTypes:
    - DNSQuestion*
    - std::string*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1855
      start: 1847
    functionDepth: 1
    functionLinenumber: 1847
    functionLinenumberEnd: 1855
    functionName: operator()(DNSQuestion* dnsquestion, std::string* ruleresult) const
      override
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - sendDNSTrap
    - dnsdist::configuration::getImmutableConfiguration
    linkageType: ''
    returnType: DNSAction::Action
    signature: DNSAction::Action operator()(DNSQuestion* dnsquestion, std::string*
      ruleresult) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1859
      start: 1856
    functionDepth: 0
    functionLinenumber: 1856
    functionLinenumberEnd: 1859
    functionName: dnsdist::actions::SNMPTrapAction::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string toString() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1870,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1870,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - tag
    - value
    argTypes:
    - std::string
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1872
      start: 1869
    functionDepth: 0
    functionLinenumber: 1869
    functionLinenumberEnd: 1872
    functionName: dnsdist::actions::SetTagAction::SetTagAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void SetTagAction(std::string tag, std::string value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSQuestion*::setTag
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1876,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - dnsquestion
    - ruleresult
    argTypes:
    - DNSQuestion*
    - std::string*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1879
      start: 1873
    functionDepth: 1
    functionLinenumber: 1873
    functionLinenumberEnd: 1879
    functionName: operator()(DNSQuestion* dnsquestion, std::string* ruleresult) const
      override
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - DNSQuestion*::setTag
    linkageType: ''
    returnType: DNSAction::Action
    signature: DNSAction::Action operator()(DNSQuestion* dnsquestion, std::string*
      ruleresult) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1883
      start: 1880
    functionDepth: 0
    functionLinenumber: 1880
    functionLinenumberEnd: 1883
    functionName: dnsdist::actions::SetTagAction::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string toString() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1895,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - tag
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1897
      start: 1894
    functionDepth: 0
    functionLinenumber: 1894
    functionLinenumberEnd: 1897
    functionName: dnsdist::actions::UnsetTagAction::UnsetTagAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void UnsetTagAction(std::string tag)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSQuestion*::unsetTag
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1901,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - dnsquestion
    - ruleresult
    argTypes:
    - DNSQuestion*
    - std::string*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1904
      start: 1898
    functionDepth: 1
    functionLinenumber: 1898
    functionLinenumberEnd: 1904
    functionName: operator()(DNSQuestion* dnsquestion, std::string* ruleresult) const
      override
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - DNSQuestion*::unsetTag
    linkageType: ''
    returnType: DNSAction::Action
    signature: DNSAction::Action operator()(DNSQuestion* dnsquestion, std::string*
      ruleresult) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1908
      start: 1905
    functionDepth: 0
    functionLinenumber: 1905
    functionLinenumberEnd: 1908
    functionName: dnsdist::actions::UnsetTagAction::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string toString() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1920,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1920,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 3
    argNames:
    - identity
    - ' logger'
    - alterFunc
    argTypes:
    - std::string
    - std::shared_ptr<RemoteLoggerInterface>
    - std::optional<std::function<void(DNSResponse*, DnstapMessage*)>>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1922
      start: 1919
    functionDepth: 0
    functionLinenumber: 1919
    functionLinenumberEnd: 1922
    functionName: dnsdist::actions::DnstapLogResponseAction::DnstapLogResponseAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void DnstapLogResponseAction(std::string identity, std::shared_ptr<RemoteLoggerInterface>&
      logger, std::optional<std::function<void(DNSResponse*, DnstapMessage*)>> alterFunc)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: gettime
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1928,1
    - Dst: std::string::clear
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1929,1
    - Dst: ProtocolToDNSTap
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1931,1
    - Dst: DNSResponse*::getProtocol
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1931,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1933,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1933,1
    - Dst: DNSResponse*::getData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1933,1
    - Dst: DNSResponse*::getData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1933,1
    - Dst: DNSResponse*::getQueryRealTime
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1933,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1933,1
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1936,1
    - Dst: DnstapMessage::getBuffer
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1941,1
    - Dst: remoteLoggerQueueData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1942,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 2
    argNames:
    - response
    - ruleresult
    argTypes:
    - DNSResponse*
    - std::string*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1945
      start: 1923
    functionDepth: 1
    functionLinenumber: 1923
    functionLinenumberEnd: 1945
    functionName: operator()(DNSResponse* response, std::string* ruleresult) const
      override
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - ProtocolToDNSTap
    - std::move
    - DnstapMessage::getBuffer
    - DNSResponse*::getQueryRealTime
    - std::string::clear
    - DNSResponse*::getData
    - DNSName
    - lock
    - reinterpret_cast<const char*>
    - remoteLoggerQueueData
    - gettime
    - DNSResponse*::getProtocol
    linkageType: ''
    returnType: DNSResponseAction::Action
    signature: DNSResponseAction::Action operator()(DNSResponse* response, std::string*
      ruleresult) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::actions::DnstapLogResponseAction::toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1948,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1949
      start: 1946
    functionDepth: 0
    functionLinenumber: 1946
    functionLinenumberEnd: 1949
    functionName: dnsdist::actions::DnstapLogResponseAction::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 1
    functionsReached:
    - dnsdist::actions::DnstapLogResponseAction::toString
    linkageType: ''
    returnType: std::string
    signature: std::string toString() const override
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1962,1
    - Dst: ipEncryptKey::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1964,1
    - Dst: pdns::ipcrypt2::IPCrypt2::IPCrypt2
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1965,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 4
    argCount: 1
    argNames:
    - ' config'
    argTypes:
    - RemoteLogActionConfiguration
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1967
      start: 1961
    functionDepth: 0
    functionLinenumber: 1961
    functionLinenumberEnd: 1967
    functionName: dnsdist::actions::RemoteLogResponseAction::RemoteLogResponseAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - pdns::ipcrypt2::IPCrypt2::IPCrypt2
    - std::move
    - ipEncryptKey::empty
    linkageType: ''
    returnType: void
    signature: void RemoteLogResponseAction(RemoteLogActionConfiguration&& config)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: std::make_unique<InternalQueryState::ProtoBufData>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1972,1
    - Dst: getUniqueID
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1975,1
    - Dst: DNSDistProtoBufMessage::setServerIdentity
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1980,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1980,1
    - Dst: serverID::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1982,1
    - Dst: DNSDistProtoBufMessage::setServerIdentity
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1983,1
    - Dst: ipEncryptKey::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1987,1
    - Dst: DNSDistProtoBufMessage::setRequestor
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1988,1
    - Dst: encryptCA
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1988,1
    - Dst: encrypt
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1992,1
    - Dst: auto::setPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1993,1
    - Dst: DNSResponse*::ids::origRemote::getPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1993,1
    - Dst: DNSDistProtoBufMessage::setRequestor
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1994,1
    - Dst: addTagsToProtobuf
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1998,1
    - Dst: addMetaDataToProtobuf
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2001,1
    - Dst: addExtendedDNSErrorToProtobuf
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2004,1
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2008,1
    - Dst: std::string::clear
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2013,1
    - Dst: DNSDistProtoBufMessage::serialize
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2014,1
    - Dst: DNSResponse*::ids::d_rawProtobufContent::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2016,1
    - Dst: std::string::insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2017,1
    - Dst: std::string::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2017,1
    - Dst: DNSResponse*::ids::d_rawProtobufContent::begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2017,1
    - Dst: DNSResponse*::ids::d_rawProtobufContent::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2017,1
    - Dst: DNSResponse*::ids::delayedResponseMsgs::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2021,1
    - Dst: std::shared_ptr<RemoteLoggerInterface>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2021,1
    - Dst: logger::queueData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2024,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 42
    argCount: 2
    argNames:
    - response
    - ruleresult
    argTypes:
    - DNSResponse*
    - std::string*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2028
      start: 1968
    functionDepth: 1
    functionLinenumber: 1968
    functionLinenumberEnd: 2028
    functionName: operator()(DNSResponse* response, std::string* ruleresult) const
      override
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - ipEncryptKey::empty
    - addTagsToProtobuf
    - getUniqueID
    - std::string::end
    - auto::setPort
    - std::shared_ptr<RemoteLoggerInterface>
    - serverID::empty
    - encryptCA
    - std::string::insert
    - logger::queueData
    - DNSResponse*::ids::d_rawProtobufContent::empty
    - lock
    - DNSResponse*::ids::origRemote::getPort
    - DNSResponse*::ids::d_rawProtobufContent::begin
    - DNSDistProtoBufMessage::setServerIdentity
    - DNSResponse*::ids::delayedResponseMsgs::emplace_back
    - addExtendedDNSErrorToProtobuf
    - dnsdist::configuration::getCurrentRuntimeConfiguration
    - DNSDistProtoBufMessage::setRequestor
    - addMetaDataToProtobuf
    - std::string::clear
    - std::make_unique<InternalQueryState::ProtoBufData>
    - encrypt
    - DNSDistProtoBufMessage::serialize
    - DNSResponse*::ids::d_rawProtobufContent::end
    linkageType: ''
    returnType: DNSResponseAction::Action
    signature: DNSResponseAction::Action operator()(DNSResponse* response, std::string*
      ruleresult) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: logger::toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2031,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2032
      start: 2029
    functionDepth: 0
    functionLinenumber: 2029
    functionLinenumberEnd: 2032
    functionName: dnsdist::actions::RemoteLogResponseAction::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - logger::toString
    linkageType: ''
    returnType: std::string
    signature: std::string toString() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - response
    - ruleresult
    argTypes:
    - DNSResponse*
    - std::string*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2049
      start: 2044
    functionDepth: 0
    functionLinenumber: 2044
    functionLinenumberEnd: 2049
    functionName: operator()(DNSResponse* response, std::string* ruleresult) const
      override
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: DNSResponseAction::Action
    signature: DNSResponseAction::Action operator()(DNSResponse* response, std::string*
      ruleresult) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2053
      start: 2050
    functionDepth: 0
    functionLinenumber: 2050
    functionLinenumberEnd: 2053
    functionName: dnsdist::actions::DropResponseAction::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string toString() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - response
    - ruleresult
    argTypes:
    - DNSResponse*
    - std::string*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2064
      start: 2059
    functionDepth: 0
    functionLinenumber: 2059
    functionLinenumberEnd: 2064
    functionName: operator()(DNSResponse* response, std::string* ruleresult) const
      override
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: DNSResponseAction::Action
    signature: DNSResponseAction::Action operator()(DNSResponse* response, std::string*
      ruleresult) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2068
      start: 2065
    functionDepth: 0
    functionLinenumber: 2065
    functionLinenumberEnd: 2068
    functionName: dnsdist::actions::AllowResponseAction::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string toString() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - msec
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2077
      start: 2074
    functionDepth: 0
    functionLinenumber: 2074
    functionLinenumberEnd: 2077
    functionName: dnsdist::actions::DelayResponseAction::DelayResponseAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void DelayResponseAction(int msec)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2081,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - response
    - ruleresult
    argTypes:
    - DNSResponse*
    - std::string*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2083
      start: 2078
    functionDepth: 0
    functionLinenumber: 2078
    functionLinenumberEnd: 2083
    functionName: operator()(DNSResponse* response, std::string* ruleresult) const
      override
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - std::to_string
    linkageType: ''
    returnType: DNSResponseAction::Action
    signature: DNSResponseAction::Action operator()(DNSResponse* response, std::string*
      ruleresult) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2086,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2087
      start: 2084
    functionDepth: 0
    functionLinenumber: 2084
    functionLinenumberEnd: 2087
    functionName: dnsdist::actions::DelayResponseAction::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - std::to_string
    linkageType: ''
    returnType: std::string
    signature: std::string toString() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2098,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - reason
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2100
      start: 2097
    functionDepth: 0
    functionLinenumber: 2097
    functionLinenumberEnd: 2100
    functionName: dnsdist::actions::SNMPTrapResponseAction::SNMPTrapResponseAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void SNMPTrapResponseAction(std::string reason)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::configuration::getImmutableConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2104,1
    - Dst: sendDNSTrap
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2105,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - response
    - ruleresult
    argTypes:
    - DNSResponse*
    - std::string*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2109
      start: 2101
    functionDepth: 1
    functionLinenumber: 2101
    functionLinenumberEnd: 2109
    functionName: operator()(DNSResponse* response, std::string* ruleresult) const
      override
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - sendDNSTrap
    - dnsdist::configuration::getImmutableConfiguration
    linkageType: ''
    returnType: DNSResponseAction::Action
    signature: DNSResponseAction::Action operator()(DNSResponse* response, std::string*
      ruleresult) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2113
      start: 2110
    functionDepth: 0
    functionLinenumber: 2110
    functionLinenumberEnd: 2113
    functionName: dnsdist::actions::SNMPTrapResponseAction::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string toString() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2124,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2124,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - tag
    - value
    argTypes:
    - std::string
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2126
      start: 2123
    functionDepth: 0
    functionLinenumber: 2123
    functionLinenumberEnd: 2126
    functionName: dnsdist::actions::SetTagResponseAction::SetTagResponseAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void SetTagResponseAction(std::string tag, std::string value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSResponse*::setTag
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2130,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - response
    - ruleresult
    argTypes:
    - DNSResponse*
    - std::string*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2133
      start: 2127
    functionDepth: 1
    functionLinenumber: 2127
    functionLinenumberEnd: 2133
    functionName: operator()(DNSResponse* response, std::string* ruleresult) const
      override
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - DNSResponse*::setTag
    linkageType: ''
    returnType: DNSResponseAction::Action
    signature: DNSResponseAction::Action operator()(DNSResponse* response, std::string*
      ruleresult) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2137
      start: 2134
    functionDepth: 0
    functionLinenumber: 2134
    functionLinenumberEnd: 2137
    functionName: dnsdist::actions::SetTagResponseAction::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string toString() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2149,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - tag
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2151
      start: 2148
    functionDepth: 0
    functionLinenumber: 2148
    functionLinenumberEnd: 2151
    functionName: dnsdist::actions::UnsetTagResponseAction::UnsetTagResponseAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void UnsetTagResponseAction(std::string tag)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSResponse*::unsetTag
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2155,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - dnsresponse
    - ruleresult
    argTypes:
    - DNSResponse*
    - std::string*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2158
      start: 2152
    functionDepth: 1
    functionLinenumber: 2152
    functionLinenumberEnd: 2158
    functionName: operator()(DNSResponse* dnsresponse, std::string* ruleresult) const
      override
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - DNSResponse*::unsetTag
    linkageType: ''
    returnType: DNSResponseAction::Action
    signature: DNSResponseAction::Action operator()(DNSResponse* dnsresponse, std::string*
      ruleresult) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2162
      start: 2159
    functionDepth: 0
    functionLinenumber: 2159
    functionLinenumberEnd: 2162
    functionName: dnsdist::actions::UnsetTagResponseAction::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string toString() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2172,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - qtypes
    argTypes:
    - std::unordered_set<QType>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2174
      start: 2171
    functionDepth: 0
    functionLinenumber: 2171
    functionLinenumberEnd: 2174
    functionName: dnsdist::actions::ClearRecordTypesResponseAction::ClearRecordTypesResponseAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void ClearRecordTypesResponseAction(std::unordered_set<QType> qtypes)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2179,1
    - Dst: clearDNSPacketRecordTypes
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2180,1
    - Dst: DNSResponse*::getMutableData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2180,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - response
    - ruleresult
    argTypes:
    - DNSResponse*
    - std::string*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2183
      start: 2176
    functionDepth: 0
    functionLinenumber: 2176
    functionLinenumberEnd: 2183
    functionName: operator()(DNSResponse* response, std::string* ruleresult) const
      override
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - empty
    - clearDNSPacketRecordTypes
    - DNSResponse*::getMutableData
    linkageType: ''
    returnType: DNSResponseAction::Action
    signature: DNSResponseAction::Action operator()(DNSResponse* response, std::string*
      ruleresult) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2188
      start: 2185
    functionDepth: 0
    functionLinenumber: 2185
    functionLinenumberEnd: 2188
    functionName: dnsdist::actions::ClearRecordTypesResponseAction::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string toString() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' action'
    argTypes:
    - std::shared_ptr<DNSAction>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2201
      start: 2198
    functionDepth: 0
    functionLinenumber: 2198
    functionLinenumberEnd: 2201
    functionName: dnsdist::actions::ContinueAction::ContinueAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ContinueAction(std::shared_ptr<DNSAction>& action)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: processRulesResult
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2211,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - dnsquestion
    - ruleresult
    argTypes:
    - DNSQuestion*
    - std::string*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2216
      start: 2203
    functionDepth: 0
    functionLinenumber: 2203
    functionLinenumberEnd: 2216
    functionName: operator()(DNSQuestion* dnsquestion, std::string* ruleresult) const
      override
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - processRulesResult
    linkageType: ''
    returnType: DNSAction::Action
    signature: DNSAction::Action operator()(DNSQuestion* dnsquestion, std::string*
      ruleresult) const override
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::actions::ContinueAction::toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2221,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2224
      start: 2218
    functionDepth: 0
    functionLinenumber: 2218
    functionLinenumberEnd: 2224
    functionName: dnsdist::actions::ContinueAction::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 1
    functionsReached:
    - dnsdist::actions::ContinueAction::toString
    linkageType: ''
    returnType: std::string
    signature: std::string toString() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2235,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2235,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 4
    argNames:
    - code
    - body
    - contentType
    - ' responseConfig'
    argTypes:
    - uint16_t
    - PacketBuffer
    - std::string
    - dnsdist::ResponseConfig
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2237
      start: 2234
    functionDepth: 0
    functionLinenumber: 2234
    functionLinenumberEnd: 2237
    functionName: dnsdist::actions::HTTPStatusAction::HTTPStatusAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void HTTPStatusAction(uint16_t code, PacketBuffer body, std::string
      contentType, const dnsdist::ResponseConfig& responseConfig)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: DNSQuestion*::ids::du::setHTTPResponse
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2244,1
    - Dst: PacketBuffer
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2244,1
    - Dst: dnsdist::PacketMangling::editDNSHeaderFromPacket
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2245,1
    - Dst: DNSQuestion*::getMutableData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2245,1
    - Dst: setResponseHeadersFromConfig
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2247,1
    - Dst: DNSQuestion*::ids::doh3u::setHTTPResponse
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2255,1
    - Dst: PacketBuffer
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2255,1
    - Dst: dnsdist::PacketMangling::editDNSHeaderFromPacket
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2256,1
    - Dst: DNSQuestion*::getMutableData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2256,1
    - Dst: setResponseHeadersFromConfig
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2258,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 21
    argCount: 2
    argNames:
    - dnsquestion
    - ruleresult
    argTypes:
    - DNSQuestion*
    - std::string*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2265
      start: 2239
    functionDepth: 1
    functionLinenumber: 2239
    functionLinenumberEnd: 2265
    functionName: operator()([[maybe_unused]] DNSQuestion* dnsquestion, std::string*
      ruleresult) const override
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - DNSQuestion*::ids::du::setHTTPResponse
    - setResponseHeadersFromConfig
    - PacketBuffer
    - DNSQuestion*::ids::doh3u::setHTTPResponse
    - dnsdist::PacketMangling::editDNSHeaderFromPacket
    - DNSQuestion*::getMutableData
    linkageType: ''
    returnType: DNSAction::Action
    signature: DNSAction::Action operator()([[maybe_unused]] DNSQuestion* dnsquestion,
      std::string* ruleresult) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2269,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2270
      start: 2267
    functionDepth: 0
    functionLinenumber: 2267
    functionLinenumberEnd: 2270
    functionName: dnsdist::actions::HTTPStatusAction::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - std::to_string
    linkageType: ''
    returnType: std::string
    signature: std::string toString() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2286,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 3
    argNames:
    - ' kvs'
    - ' lookupKey'
    - destinationTag
    argTypes:
    - std::shared_ptr<KeyValueStore>
    - std::shared_ptr<KeyValueLookupKey>
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2288
      start: 2285
    functionDepth: 0
    functionLinenumber: 2285
    functionLinenumberEnd: 2288
    functionName: dnsdist::actions::KeyValueStoreLookupAction::KeyValueStoreLookupAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void KeyValueStoreLookupAction(std::shared_ptr<KeyValueStore>& kvs,
      std::shared_ptr<KeyValueLookupKey>& lookupKey, std::string destinationTag)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: getKeys
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2293,1
    - Dst: getValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2296,1
    - Dst: DNSQuestion*::setTag
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2301,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2301,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - dnsquestion
    - ruleresult
    argTypes:
    - DNSQuestion*
    - std::string*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2304
      start: 2290
    functionDepth: 1
    functionLinenumber: 2290
    functionLinenumberEnd: 2304
    functionName: operator()(DNSQuestion* dnsquestion, std::string* ruleresult) const
      override
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - std::move
    - getValue
    - getKeys
    - DNSQuestion*::setTag
    linkageType: ''
    returnType: DNSAction::Action
    signature: DNSAction::Action operator()(DNSQuestion* dnsquestion, std::string*
      ruleresult) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::actions::KeyValueStoreLookupAction::toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2308,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2309
      start: 2306
    functionDepth: 0
    functionLinenumber: 2306
    functionLinenumberEnd: 2309
    functionName: dnsdist::actions::KeyValueStoreLookupAction::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 1
    functionsReached:
    - dnsdist::actions::KeyValueStoreLookupAction::toString
    linkageType: ''
    returnType: std::string
    signature: std::string toString() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2322,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 3
    argNames:
    - ' kvs'
    - ' lookupKey'
    - destinationTag
    argTypes:
    - std::shared_ptr<KeyValueStore>
    - std::shared_ptr<KeyValueLookupKey>
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2324
      start: 2321
    functionDepth: 0
    functionLinenumber: 2321
    functionLinenumberEnd: 2324
    functionName: dnsdist::actions::KeyValueStoreRangeLookupAction::KeyValueStoreRangeLookupAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void KeyValueStoreRangeLookupAction(std::shared_ptr<KeyValueStore>&
      kvs, std::shared_ptr<KeyValueLookupKey>& lookupKey, std::string destinationTag)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: getKeys
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2329,1
    - Dst: getRangeValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2332,1
    - Dst: DNSQuestion*::setTag
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2337,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2337,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - dnsquestion
    - ruleresult
    argTypes:
    - DNSQuestion*
    - std::string*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2340
      start: 2326
    functionDepth: 1
    functionLinenumber: 2326
    functionLinenumberEnd: 2340
    functionName: operator()(DNSQuestion* dnsquestion, std::string* ruleresult) const
      override
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - getRangeValue
    - std::move
    - getKeys
    - DNSQuestion*::setTag
    linkageType: ''
    returnType: DNSAction::Action
    signature: DNSAction::Action operator()(DNSQuestion* dnsquestion, std::string*
      ruleresult) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::actions::KeyValueStoreRangeLookupAction::toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2344,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2345
      start: 2342
    functionDepth: 0
    functionLinenumber: 2342
    functionLinenumberEnd: 2345
    functionName: dnsdist::actions::KeyValueStoreRangeLookupAction::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 1
    functionsReached:
    - dnsdist::actions::KeyValueStoreRangeLookupAction::toString
    linkageType: ''
    returnType: std::string
    signature: std::string toString() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - cap
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2360
      start: 2357
    functionDepth: 0
    functionLinenumber: 2357
    functionLinenumberEnd: 2360
    functionName: dnsdist::actions::SetMaxReturnedTTLAction::SetMaxReturnedTTLAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void SetMaxReturnedTTLAction(uint32_t cap)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - dnsquestion
    - ruleresult
    argTypes:
    - DNSQuestion*
    - std::string*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2367
      start: 2362
    functionDepth: 0
    functionLinenumber: 2362
    functionLinenumberEnd: 2367
    functionName: operator()(DNSQuestion* dnsquestion, std::string* ruleresult) const
      override
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: DNSAction::Action
    signature: DNSAction::Action operator()(DNSQuestion* dnsquestion, std::string*
      ruleresult) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2371,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2372
      start: 2369
    functionDepth: 0
    functionLinenumber: 2369
    functionLinenumberEnd: 2372
    functionName: dnsdist::actions::SetMaxReturnedTTLAction::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - std::to_string
    linkageType: ''
    returnType: std::string
    signature: std::string toString() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - cap
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2384
      start: 2381
    functionDepth: 0
    functionLinenumber: 2381
    functionLinenumberEnd: 2384
    functionName: dnsdist::actions::SetMaxReturnedTTLResponseAction::SetMaxReturnedTTLResponseAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void SetMaxReturnedTTLResponseAction(uint32_t cap)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - response
    - ruleresult
    argTypes:
    - DNSResponse*
    - std::string*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2391
      start: 2386
    functionDepth: 0
    functionLinenumber: 2386
    functionLinenumberEnd: 2391
    functionName: operator()(DNSResponse* response, std::string* ruleresult) const
      override
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: DNSResponseAction::Action
    signature: DNSResponseAction::Action operator()(DNSResponse* response, std::string*
      ruleresult) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2395,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2396
      start: 2393
    functionDepth: 0
    functionLinenumber: 2393
    functionLinenumberEnd: 2396
    functionName: dnsdist::actions::SetMaxReturnedTTLResponseAction::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - std::to_string
    linkageType: ''
    returnType: std::string
    signature: std::string toString() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2406,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2406,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2406,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 8
    argNames:
    - nxd
    - zone
    - ttl
    - mname
    - rname
    - params
    - soaInAuthoritySection
    - responseConfig
    argTypes:
    - bool
    - DNSName
    - uint32_t
    - DNSName
    - DNSName
    - dnsdist::actions::SOAParams
    - bool
    - dnsdist::ResponseConfig
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2408
      start: 2405
    functionDepth: 0
    functionLinenumber: 2405
    functionLinenumberEnd: 2408
    functionName: dnsdist::actions::NegativeAndSOAAction::NegativeAndSOAAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void NegativeAndSOAAction(bool nxd, DNSName zone, uint32_t ttl, DNSName
      mname, DNSName rname, dnsdist::actions::SOAParams params, bool soaInAuthoritySection,
      dnsdist::ResponseConfig responseConfig)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: setNegativeAndAdditionalSOA
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2413,1
    - Dst: dnsdist::PacketMangling::editDNSHeaderFromPacket
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2417,1
    - Dst: DNSQuestion*::getMutableData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2417,1
    - Dst: setResponseHeadersFromConfig
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2418,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - dnsquestion
    - ruleresult
    argTypes:
    - DNSQuestion*
    - std::string*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2423
      start: 2410
    functionDepth: 1
    functionLinenumber: 2410
    functionLinenumberEnd: 2423
    functionName: operator()(DNSQuestion* dnsquestion, std::string* ruleresult) const
      override
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - setResponseHeadersFromConfig
    - DNSQuestion*::getMutableData
    - dnsdist::PacketMangling::editDNSHeaderFromPacket
    - setNegativeAndAdditionalSOA
    linkageType: ''
    returnType: DNSAction::Action
    signature: DNSAction::Action operator()(DNSQuestion* dnsquestion, std::string*
      ruleresult) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2427,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2428
      start: 2425
    functionDepth: 0
    functionLinenumber: 2425
    functionLinenumberEnd: 2428
    functionName: dnsdist::actions::NegativeAndSOAAction::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - std::string
    linkageType: ''
    returnType: std::string
    signature: std::string toString() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: reserve
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2447,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2447,1
    - Dst: push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2449,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ' values'
    argTypes:
    - std::vector<std::pair<uint8_t, std::string>>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2451
      start: 2445
    functionDepth: 0
    functionLinenumber: 2445
    functionLinenumberEnd: 2451
    functionName: dnsdist::actions::SetProxyProtocolValuesAction::SetProxyProtocolValuesAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - push_back
    - reserve
    - size
    linkageType: ''
    returnType: void
    signature: void SetProxyProtocolValuesAction(const std::vector<std::pair<uint8_t,
      std::string>>& values)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: make_unique<std::vector<ProxyProtocolValue>>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2457,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - dnsquestion
    - ruleresult
    argTypes:
    - DNSQuestion*
    - std::string*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2463
      start: 2453
    functionDepth: 0
    functionLinenumber: 2453
    functionLinenumberEnd: 2463
    functionName: operator()(DNSQuestion* dnsquestion, std::string* ruleresult) const
      override
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - make_unique<std::vector<ProxyProtocolValue>>
    linkageType: ''
    returnType: DNSAction::Action
    signature: DNSAction::Action operator()(DNSQuestion* dnsquestion, std::string*
      ruleresult) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2468
      start: 2465
    functionDepth: 0
    functionLinenumber: 2465
    functionLinenumberEnd: 2468
    functionName: dnsdist::actions::SetProxyProtocolValuesAction::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string toString() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2479,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - type
    - value
    argTypes:
    - uint8_t
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2481
      start: 2478
    functionDepth: 0
    functionLinenumber: 2478
    functionLinenumberEnd: 2481
    functionName: dnsdist::actions::SetAdditionalProxyProtocolValueAction::SetAdditionalProxyProtocolValueAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void SetAdditionalProxyProtocolValueAction(uint8_t type, std::string
      value)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: make_unique<std::vector<ProxyProtocolValue>>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2487,1
    - Dst: DNSQuestion*::proxyProtocolValues::push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2490,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - dnsquestion
    - ruleresult
    argTypes:
    - DNSQuestion*
    - std::string*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2493
      start: 2483
    functionDepth: 0
    functionLinenumber: 2483
    functionLinenumberEnd: 2493
    functionName: operator()(DNSQuestion* dnsquestion, std::string* ruleresult) const
      override
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - make_unique<std::vector<ProxyProtocolValue>>
    - DNSQuestion*::proxyProtocolValues::push_back
    linkageType: ''
    returnType: DNSAction::Action
    signature: DNSAction::Action operator()(DNSQuestion* dnsquestion, std::string*
      ruleresult) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2497,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2498
      start: 2495
    functionDepth: 0
    functionLinenumber: 2495
    functionLinenumberEnd: 2498
    functionName: dnsdist::actions::SetAdditionalProxyProtocolValueAction::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - std::to_string
    linkageType: ''
    returnType: std::string
    signature: std::string toString() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - percentage
    argTypes:
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2512
      start: 2509
    functionDepth: 0
    functionLinenumber: 2509
    functionLinenumberEnd: 2512
    functionName: dnsdist::actions::SetReducedTTLResponseAction::SetReducedTTLResponseAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void SetReducedTTLResponseAction(uint8_t percentage)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: editDNSPacketTTL
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2525,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2525,1
    - Dst: DNSResponse*::getMutableData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2525,1
    - Dst: DNSResponse*::getData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2525,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 2
    argNames:
    - response
    - ruleresult
    argTypes:
    - DNSResponse*
    - std::string*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2527
      start: 2514
    functionDepth: 0
    functionLinenumber: 2514
    functionLinenumberEnd: 2527
    functionName: operator()(DNSResponse* response, std::string* ruleresult) const
      override
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - reinterpret_cast<char*>
    - DNSResponse*::getData
    - editDNSPacketTTL
    - DNSResponse*::getMutableData
    linkageType: ''
    returnType: DNSResponseAction::Action
    signature: DNSResponseAction::Action operator()(DNSResponse* response, std::string*
      ruleresult) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2531,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2532
      start: 2529
    functionDepth: 0
    functionLinenumber: 2529
    functionLinenumberEnd: 2532
    functionName: dnsdist::actions::SetReducedTTLResponseAction::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - std::to_string
    linkageType: ''
    returnType: std::string
    signature: std::string toString() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - infoCode
    - ' extraText'
    - clearExistingEntries
    argTypes:
    - uint16_t
    - std::string
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2547
      start: 2542
    functionDepth: 0
    functionLinenumber: 2542
    functionLinenumberEnd: 2547
    functionName: dnsdist::actions::SetExtendedDNSErrorAction::SetExtendedDNSErrorAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void SetExtendedDNSErrorAction(uint16_t infoCode, const std::string&
      extraText, bool clearExistingEntries)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: std::make_unique<std::vector<edns::SetExtendedDNSErrorOperation>>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2553,1
    - Dst: std::initializer_list<edns::SetExtendedDNSErrorOperation>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2553,1
    - Dst: std::make_unique<std::vector<edns::SetExtendedDNSErrorOperation>>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2557,1
    - Dst: std::initializer_list<edns::SetExtendedDNSErrorOperation>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2557,1
    - Dst: DNSQuestion*::ids::d_extendedErrors::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2560,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 2
    argNames:
    - dnsQuestion
    - ruleresult
    argTypes:
    - DNSQuestion*
    - std::string*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2565
      start: 2549
    functionDepth: 0
    functionLinenumber: 2549
    functionLinenumberEnd: 2565
    functionName: operator()(DNSQuestion* dnsQuestion, std::string* ruleresult) const
      override
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - DNSQuestion*::ids::d_extendedErrors::emplace_back
    - std::initializer_list<edns::SetExtendedDNSErrorOperation>
    - std::make_unique<std::vector<edns::SetExtendedDNSErrorOperation>>
    linkageType: ''
    returnType: DNSAction::Action
    signature: DNSAction::Action operator()(DNSQuestion* dnsQuestion, std::string*
      ruleresult) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2569,1
    - Dst: error::extraText::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2569,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2569,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2569,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2569,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2570
      start: 2567
    functionDepth: 0
    functionLinenumber: 2567
    functionLinenumberEnd: 2570
    functionName: dnsdist::actions::SetExtendedDNSErrorAction::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - error::extraText::empty
    - std::string
    - std::to_string
    linkageType: ''
    returnType: std::string
    signature: std::string toString() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - infoCode
    - ' extraText'
    - clearExistingEntries
    argTypes:
    - uint16_t
    - std::string
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2585
      start: 2580
    functionDepth: 0
    functionLinenumber: 2580
    functionLinenumberEnd: 2585
    functionName: dnsdist::actions::SetExtendedDNSErrorResponseAction::SetExtendedDNSErrorResponseAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void SetExtendedDNSErrorResponseAction(uint16_t infoCode, const std::string&
      extraText, bool clearExistingEntries)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: std::make_unique<std::vector<edns::SetExtendedDNSErrorOperation>>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2591,1
    - Dst: std::initializer_list<edns::SetExtendedDNSErrorOperation>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2591,1
    - Dst: std::make_unique<std::vector<edns::SetExtendedDNSErrorOperation>>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2595,1
    - Dst: std::initializer_list<edns::SetExtendedDNSErrorOperation>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2595,1
    - Dst: DNSResponse*::ids::d_extendedErrors::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2598,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 2
    argNames:
    - dnsResponse
    - ruleresult
    argTypes:
    - DNSResponse*
    - std::string*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2603
      start: 2587
    functionDepth: 0
    functionLinenumber: 2587
    functionLinenumberEnd: 2603
    functionName: operator()(DNSResponse* dnsResponse, std::string* ruleresult) const
      override
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - DNSResponse*::ids::d_extendedErrors::emplace_back
    - std::initializer_list<edns::SetExtendedDNSErrorOperation>
    - std::make_unique<std::vector<edns::SetExtendedDNSErrorOperation>>
    linkageType: ''
    returnType: DNSResponseAction::Action
    signature: DNSResponseAction::Action operator()(DNSResponse* dnsResponse, std::string*
      ruleresult) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2607,1
    - Dst: error::extraText::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2607,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2607,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2607,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2607,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2608
      start: 2605
    functionDepth: 0
    functionLinenumber: 2605
    functionLinenumberEnd: 2608
    functionName: dnsdist::actions::SetExtendedDNSErrorResponseAction::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - error::extraText::empty
    - std::string
    - std::to_string
    linkageType: ''
    returnType: std::string
    signature: std::string toString() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2617,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2618,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - min
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2620
      start: 2617
    functionDepth: 0
    functionLinenumber: 2617
    functionLinenumberEnd: 2620
    functionName: dnsdist::actions::LimitTTLResponseAction::LimitTTLResponseAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - pdns::max
    - std::move
    linkageType: ''
    returnType: void
    signature: void LimitTTLResponseAction(uint32_t min, uint32_t max = std::numeric_limits<uint32_t>::max(),
      std::unordered_set<QType> types = {})
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::PacketMangling::restrictDNSPacketTTLs
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2625,1
    - Dst: DNSResponse*::getMutableData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2625,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - dnsResponse
    - ruleresult
    argTypes:
    - DNSResponse*
    - std::string*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2627
      start: 2622
    functionDepth: 1
    functionLinenumber: 2622
    functionLinenumberEnd: 2627
    functionName: operator()(DNSResponse* dnsResponse, std::string* ruleresult) const
      override
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - dnsdist::PacketMangling::restrictDNSPacketTTLs
    - DNSResponse*::getMutableData
    linkageType: ''
    returnType: DNSResponseAction::Action
    signature: DNSResponseAction::Action operator()(DNSResponse* dnsResponse, std::string*
      ruleresult) const override
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2631,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2631,1
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2632,1
    - Dst: dnsdist::actions::LimitTTLResponseAction::toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2642,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2648
      start: 2629
    functionDepth: 0
    functionLinenumber: 2629
    functionLinenumberEnd: 2648
    functionName: dnsdist::actions::LimitTTLResponseAction::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 1
    functionsReached:
    - empty
    - dnsdist::actions::LimitTTLResponseAction::toString
    - std::to_string
    linkageType: ''
    returnType: std::string
    signature: std::string toString() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::shared_ptr<DNSAction>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2658,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2658,1
    - Dst: LuaAction::LuaAction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2658,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - function
    argTypes:
    - dnsdist::actions::LuaActionFunction
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2659
      start: 2656
    functionDepth: 0
    functionLinenumber: 2656
    functionLinenumberEnd: 2659
    functionName: dnsdist::actions::getLuaAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - LuaAction::LuaAction
    - std::move
    - std::shared_ptr<DNSAction>
    linkageType: ''
    returnType: std::shared_ptr<DNSAction>
    signature: std::shared_ptr<DNSAction> getLuaAction(dnsdist::actions::LuaActionFunction
      function)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::shared_ptr<DNSAction>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2663,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2663,1
    - Dst: LuaFFIAction::LuaFFIAction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2663,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - function
    argTypes:
    - dnsdist::actions::LuaActionFFIFunction
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2664
      start: 2661
    functionDepth: 0
    functionLinenumber: 2661
    functionLinenumberEnd: 2664
    functionName: dnsdist::actions::getLuaFFIAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - std::move
    - LuaFFIAction::LuaFFIAction
    - std::shared_ptr<DNSAction>
    linkageType: ''
    returnType: std::shared_ptr<DNSAction>
    signature: std::shared_ptr<DNSAction> getLuaFFIAction(dnsdist::actions::LuaActionFFIFunction
      function)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::shared_ptr<DNSResponseAction>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2668,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2668,1
    - Dst: LuaResponseAction::LuaResponseAction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2668,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - function
    argTypes:
    - dnsdist::actions::LuaResponseActionFunction
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2669
      start: 2666
    functionDepth: 0
    functionLinenumber: 2666
    functionLinenumberEnd: 2669
    functionName: dnsdist::actions::getLuaResponseAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - std::move
    - std::shared_ptr<DNSResponseAction>
    - LuaResponseAction::LuaResponseAction
    linkageType: ''
    returnType: std::shared_ptr<DNSResponseAction>
    signature: std::shared_ptr<DNSResponseAction> getLuaResponseAction(dnsdist::actions::LuaResponseActionFunction
      function)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::shared_ptr<DNSResponseAction>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2673,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2673,1
    - Dst: LuaFFIResponseAction::LuaFFIResponseAction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2673,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - function
    argTypes:
    - dnsdist::actions::LuaResponseActionFFIFunction
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2674
      start: 2671
    functionDepth: 0
    functionLinenumber: 2671
    functionLinenumberEnd: 2674
    functionName: dnsdist::actions::getLuaFFIResponseAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - LuaFFIResponseAction::LuaFFIResponseAction
    - std::move
    - std::shared_ptr<DNSResponseAction>
    linkageType: ''
    returnType: std::shared_ptr<DNSResponseAction>
    signature: std::shared_ptr<DNSResponseAction> getLuaFFIResponseAction(dnsdist::actions::LuaResponseActionFFIFunction
      function)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::shared_ptr<DNSAction>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2679,1
    - Dst: SetTraceAction::SetTraceAction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2679,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' config'
    argTypes:
    - SetTraceActionConfiguration
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2680
      start: 2677
    functionDepth: 0
    functionLinenumber: 2677
    functionLinenumberEnd: 2680
    functionName: dnsdist::actions::getSetTraceAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - SetTraceAction::SetTraceAction
    - std::shared_ptr<DNSAction>
    linkageType: ''
    returnType: std::shared_ptr<DNSAction>
    signature: std::shared_ptr<DNSAction> getSetTraceAction(SetTraceActionConfiguration&
      config)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::shared_ptr<DNSAction>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2684,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2684,1
    - Dst: RemoteLogAction::RemoteLogAction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2684,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - ' config'
    argTypes:
    - RemoteLogActionConfiguration
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2685
      start: 2682
    functionDepth: 0
    functionLinenumber: 2682
    functionLinenumberEnd: 2685
    functionName: dnsdist::actions::getRemoteLogAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - std::move
    - RemoteLogAction::RemoteLogAction
    - std::shared_ptr<DNSAction>
    linkageType: ''
    returnType: std::shared_ptr<DNSAction>
    signature: std::shared_ptr<DNSAction> getRemoteLogAction(RemoteLogActionConfiguration&&
      config)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::shared_ptr<DNSResponseAction>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2689,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2689,1
    - Dst: RemoteLogResponseAction::RemoteLogResponseAction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2689,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - ' config'
    argTypes:
    - RemoteLogActionConfiguration
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2690
      start: 2687
    functionDepth: 0
    functionLinenumber: 2687
    functionLinenumberEnd: 2690
    functionName: dnsdist::actions::getRemoteLogResponseAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - RemoteLogResponseAction::RemoteLogResponseAction
    - std::move
    - std::shared_ptr<DNSResponseAction>
    linkageType: ''
    returnType: std::shared_ptr<DNSResponseAction>
    signature: std::shared_ptr<DNSResponseAction> getRemoteLogResponseAction(RemoteLogActionConfiguration&&
      config)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::shared_ptr<DNSAction>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2694,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2694,1
    - Dst: DnstapLogAction::DnstapLogAction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2694,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' identity'
    - logger
    - alterFunc
    argTypes:
    - std::string
    - std::shared_ptr<RemoteLoggerInterface>
    - std::optional<DnstapAlterFunction>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2695
      start: 2692
    functionDepth: 0
    functionLinenumber: 2692
    functionLinenumberEnd: 2695
    functionName: dnsdist::actions::getDnstapLogAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - std::move
    - DnstapLogAction::DnstapLogAction
    - std::shared_ptr<DNSAction>
    linkageType: ''
    returnType: std::shared_ptr<DNSAction>
    signature: std::shared_ptr<DNSAction> getDnstapLogAction(const std::string& identity,
      std::shared_ptr<RemoteLoggerInterface> logger, std::optional<DnstapAlterFunction>
      alterFunc)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::shared_ptr<DNSResponseAction>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2699,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2699,1
    - Dst: DnstapLogResponseAction::DnstapLogResponseAction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2699,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' identity'
    - logger
    - alterFunc
    argTypes:
    - std::string
    - std::shared_ptr<RemoteLoggerInterface>
    - std::optional<DnstapAlterResponseFunction>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2700
      start: 2697
    functionDepth: 0
    functionLinenumber: 2697
    functionLinenumberEnd: 2700
    functionName: dnsdist::actions::getDnstapLogResponseAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - std::move
    - std::shared_ptr<DNSResponseAction>
    - DnstapLogResponseAction::DnstapLogResponseAction
    linkageType: ''
    returnType: std::shared_ptr<DNSResponseAction>
    signature: std::shared_ptr<DNSResponseAction> getDnstapLogResponseAction(const
      std::string& identity, std::shared_ptr<RemoteLoggerInterface> logger, std::optional<DnstapAlterResponseFunction>
      alterFunc)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::shared_ptr<DNSAction>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2706,1
    - Dst: KeyValueStoreLookupAction::KeyValueStoreLookupAction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2706,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' kvs'
    - ' lookupKey'
    - ' destinationTag'
    argTypes:
    - std::shared_ptr<KeyValueStore>
    - std::shared_ptr<KeyValueLookupKey>
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2707
      start: 2704
    functionDepth: 0
    functionLinenumber: 2704
    functionLinenumberEnd: 2707
    functionName: dnsdist::actions::getKeyValueStoreLookupAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - KeyValueStoreLookupAction::KeyValueStoreLookupAction
    - std::shared_ptr<DNSAction>
    linkageType: ''
    returnType: std::shared_ptr<DNSAction>
    signature: std::shared_ptr<DNSAction> getKeyValueStoreLookupAction(std::shared_ptr<KeyValueStore>&
      kvs, std::shared_ptr<KeyValueLookupKey>& lookupKey, const std::string& destinationTag)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::shared_ptr<DNSAction>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2711,1
    - Dst: KeyValueStoreRangeLookupAction::KeyValueStoreRangeLookupAction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2711,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' kvs'
    - ' lookupKey'
    - ' destinationTag'
    argTypes:
    - std::shared_ptr<KeyValueStore>
    - std::shared_ptr<KeyValueLookupKey>
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2712
      start: 2709
    functionDepth: 0
    functionLinenumber: 2709
    functionLinenumberEnd: 2712
    functionName: dnsdist::actions::getKeyValueStoreRangeLookupAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - KeyValueStoreRangeLookupAction::KeyValueStoreRangeLookupAction
    - std::shared_ptr<DNSAction>
    linkageType: ''
    returnType: std::shared_ptr<DNSAction>
    signature: std::shared_ptr<DNSAction> getKeyValueStoreRangeLookupAction(std::shared_ptr<KeyValueStore>&
      kvs, std::shared_ptr<KeyValueLookupKey>& lookupKey, const std::string& destinationTag)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::shared_ptr<DNSAction>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2718,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2718,1
    - Dst: HTTPStatusAction::HTTPStatusAction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2718,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2720,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 3
    argCount: 4
    argNames:
    - status
    - ' body'
    - ' contentType'
    - ' responseConfig'
    argTypes:
    - uint16_t
    - PacketBuffer
    - std::string
    - dnsdist::ResponseConfig
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2722
      start: 2715
    functionDepth: 0
    functionLinenumber: 2715
    functionLinenumberEnd: 2722
    functionName: dnsdist::actions::getHTTPStatusAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - HTTPStatusAction::HTTPStatusAction
    - std::runtime_error
    - std::move
    - std::shared_ptr<DNSAction>
    linkageType: ''
    returnType: std::shared_ptr<DNSAction>
    signature: std::shared_ptr<DNSAction> getHTTPStatusAction([[maybe_unused]] uint16_t
      status, [[maybe_unused]] PacketBuffer&& body, [[maybe_unused]] const std::string&
      contentType, [[maybe_unused]] const dnsdist::ResponseConfig& responseConfig)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::shared_ptr<DNSResponseAction>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2726,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2726,1
    - Dst: LimitTTLResponseAction::LimitTTLResponseAction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2726,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - min
    - max
    - types
    argTypes:
    - uint32_t
    - uint32_t
    - std::unordered_set<QType>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2727
      start: 2724
    functionDepth: 0
    functionLinenumber: 2724
    functionLinenumberEnd: 2727
    functionName: dnsdist::actions::getLimitTTLResponseAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - std::move
    - LimitTTLResponseAction::LimitTTLResponseAction
    - std::shared_ptr<DNSResponseAction>
    linkageType: ''
    returnType: std::shared_ptr<DNSResponseAction>
    signature: std::shared_ptr<DNSResponseAction> getLimitTTLResponseAction(uint32_t
      min, uint32_t max, std::unordered_set<QType> types)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::shared_ptr<DNSResponseAction>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2731,1
    - Dst: LimitTTLResponseAction::LimitTTLResponseAction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2731,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - min
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2732
      start: 2729
    functionDepth: 0
    functionLinenumber: 2729
    functionLinenumberEnd: 2732
    functionName: dnsdist::actions::getMinTTLResponseAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - LimitTTLResponseAction::LimitTTLResponseAction
    - std::shared_ptr<DNSResponseAction>
    linkageType: ''
    returnType: std::shared_ptr<DNSResponseAction>
    signature: std::shared_ptr<DNSResponseAction> getMinTTLResponseAction(uint32_t
      min)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::shared_ptr<DNSResponseAction>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2736,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2736,1
    - Dst: ClearRecordTypesResponseAction::ClearRecordTypesResponseAction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2736,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - types
    argTypes:
    - std::unordered_set<QType>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2737
      start: 2734
    functionDepth: 0
    functionLinenumber: 2734
    functionLinenumberEnd: 2737
    functionName: dnsdist::actions::getClearRecordTypesResponseAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - ClearRecordTypesResponseAction::ClearRecordTypesResponseAction
    - std::move
    - std::shared_ptr<DNSResponseAction>
    linkageType: ''
    returnType: std::shared_ptr<DNSResponseAction>
    signature: std::shared_ptr<DNSResponseAction> getClearRecordTypesResponseAction(std::unordered_set<QType>
      types)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::shared_ptr<DNSAction>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2741,1
    - Dst: ContinueAction::ContinueAction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2741,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - action
    argTypes:
    - std::shared_ptr<DNSAction>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2742
      start: 2739
    functionDepth: 0
    functionLinenumber: 2739
    functionLinenumberEnd: 2742
    functionName: dnsdist::actions::getContinueAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - ContinueAction::ContinueAction
    - std::shared_ptr<DNSAction>
    linkageType: ''
    returnType: std::shared_ptr<DNSAction>
    signature: std::shared_ptr<DNSAction> getContinueAction(std::shared_ptr<DNSAction>
      action)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::shared_ptr<DNSAction>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2746,1
    - Dst: NegativeAndSOAAction::NegativeAndSOAAction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2746,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 8
    argNames:
    - nxd
    - ' zone'
    - ttl
    - ' mname'
    - ' rname'
    - ' params'
    - soaInAuthority
    - responseConfig
    argTypes:
    - bool
    - DNSName
    - uint32_t
    - DNSName
    - DNSName
    - SOAParams
    - bool
    - dnsdist::ResponseConfig
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2747
      start: 2744
    functionDepth: 0
    functionLinenumber: 2744
    functionLinenumberEnd: 2747
    functionName: dnsdist::actions::getNegativeAndSOAAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - NegativeAndSOAAction::NegativeAndSOAAction
    - std::shared_ptr<DNSAction>
    linkageType: ''
    returnType: std::shared_ptr<DNSAction>
    signature: std::shared_ptr<DNSAction> getNegativeAndSOAAction(bool nxd, const
      DNSName& zone, uint32_t ttl, const DNSName& mname, const DNSName& rname, const
      SOAParams& params, bool soaInAuthority, dnsdist::ResponseConfig responseConfig)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::shared_ptr<DNSAction>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2751,1
    - Dst: RCodeAction::RCodeAction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2751,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - rcode
    - ' responseConfig'
    argTypes:
    - uint8_t
    - dnsdist::ResponseConfig
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2752
      start: 2749
    functionDepth: 0
    functionLinenumber: 2749
    functionLinenumberEnd: 2752
    functionName: dnsdist::actions::getRCodeAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - RCodeAction::RCodeAction
    - std::shared_ptr<DNSAction>
    linkageType: ''
    returnType: std::shared_ptr<DNSAction>
    signature: std::shared_ptr<DNSAction> getRCodeAction(uint8_t rcode, const dnsdist::ResponseConfig&
      responseConfig)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::shared_ptr<DNSAction>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2756,1
    - Dst: ERCodeAction::ERCodeAction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2756,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - rcode
    - ' responseConfig'
    argTypes:
    - uint8_t
    - dnsdist::ResponseConfig
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2757
      start: 2754
    functionDepth: 0
    functionLinenumber: 2754
    functionLinenumberEnd: 2757
    functionName: dnsdist::actions::getERCodeAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - ERCodeAction::ERCodeAction
    - std::shared_ptr<DNSAction>
    linkageType: ''
    returnType: std::shared_ptr<DNSAction>
    signature: std::shared_ptr<DNSAction> getERCodeAction(uint8_t rcode, const dnsdist::ResponseConfig&
      responseConfig)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::shared_ptr<DNSAction>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2761,1
    - Dst: Netmask
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2761,1
    - Dst: SetECSAction::SetECSAction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2761,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' ipv4'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2762
      start: 2759
    functionDepth: 0
    functionLinenumber: 2759
    functionLinenumberEnd: 2762
    functionName: dnsdist::actions::getSetECSAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - SetECSAction::SetECSAction
    - Netmask
    - std::shared_ptr<DNSAction>
    linkageType: ''
    returnType: std::shared_ptr<DNSAction>
    signature: std::shared_ptr<DNSAction> getSetECSAction(const std::string& ipv4)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::shared_ptr<DNSAction>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2766,1
    - Dst: Netmask
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2766,1
    - Dst: Netmask
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2766,1
    - Dst: SetECSAction::SetECSAction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2766,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' ipv4'
    - ' ipv6'
    argTypes:
    - std::string
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2767
      start: 2764
    functionDepth: 0
    functionLinenumber: 2764
    functionLinenumberEnd: 2767
    functionName: dnsdist::actions::getSetECSAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - SetECSAction::SetECSAction
    - Netmask
    - std::shared_ptr<DNSAction>
    linkageType: ''
    returnType: std::shared_ptr<DNSAction>
    signature: std::shared_ptr<DNSAction> getSetECSAction(const std::string& ipv4,
      const std::string& ipv6)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::shared_ptr<DNSAction>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2771,1
    - Dst: SpoofAction::SpoofAction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2771,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' addresses'
    - ' config'
    argTypes:
    - std::vector<ComboAddress>
    - dnsdist::ResponseConfig
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2772
      start: 2769
    functionDepth: 0
    functionLinenumber: 2769
    functionLinenumberEnd: 2772
    functionName: dnsdist::actions::getSpoofAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - SpoofAction::SpoofAction
    - std::shared_ptr<DNSAction>
    linkageType: ''
    returnType: std::shared_ptr<DNSAction>
    signature: std::shared_ptr<DNSAction> getSpoofAction(const std::vector<ComboAddress>&
      addresses, const dnsdist::ResponseConfig& config)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::shared_ptr<DNSAction>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2776,1
    - Dst: SpoofAction::SpoofAction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2776,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' rawRDatas'
    - qtypeForAny
    - ' config'
    argTypes:
    - std::vector<std::string>
    - std::optional<uint16_t>
    - dnsdist::ResponseConfig
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2777
      start: 2774
    functionDepth: 0
    functionLinenumber: 2774
    functionLinenumberEnd: 2777
    functionName: dnsdist::actions::getSpoofAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - SpoofAction::SpoofAction
    - std::shared_ptr<DNSAction>
    linkageType: ''
    returnType: std::shared_ptr<DNSAction>
    signature: std::shared_ptr<DNSAction> getSpoofAction(const std::vector<std::string>&
      rawRDatas, std::optional<uint16_t> qtypeForAny, const dnsdist::ResponseConfig&
      config)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::shared_ptr<DNSAction>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2781,1
    - Dst: SpoofAction::SpoofAction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2781,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' cname'
    - ' config'
    argTypes:
    - DNSName
    - dnsdist::ResponseConfig
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2782
      start: 2779
    functionDepth: 0
    functionLinenumber: 2779
    functionLinenumberEnd: 2782
    functionName: dnsdist::actions::getSpoofAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - SpoofAction::SpoofAction
    - std::shared_ptr<DNSAction>
    linkageType: ''
    returnType: std::shared_ptr<DNSAction>
    signature: std::shared_ptr<DNSAction> getSpoofAction(const DNSName& cname, const
      dnsdist::ResponseConfig& config)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::shared_ptr<DNSAction>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2786,1
    - Dst: SpoofAction::SpoofAction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2786,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' packet'
    argTypes:
    - PacketBuffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2787
      start: 2784
    functionDepth: 0
    functionLinenumber: 2784
    functionLinenumberEnd: 2787
    functionName: dnsdist::actions::getSpoofAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - SpoofAction::SpoofAction
    - std::shared_ptr<DNSAction>
    linkageType: ''
    returnType: std::shared_ptr<DNSAction>
    signature: std::shared_ptr<DNSAction> getSpoofAction(const PacketBuffer& packet)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::shared_ptr<DNSAction>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2791,1
    - Dst: SpoofSVCAction::SpoofSVCAction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2791,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' parameters'
    - ' responseConfig'
    argTypes:
    - std::vector<SVCRecordParameters>
    - dnsdist::ResponseConfig
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2792
      start: 2789
    functionDepth: 0
    functionLinenumber: 2789
    functionLinenumberEnd: 2792
    functionName: dnsdist::actions::getSpoofSVCAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - SpoofSVCAction::SpoofSVCAction
    - std::shared_ptr<DNSAction>
    linkageType: ''
    returnType: std::shared_ptr<DNSAction>
    signature: std::shared_ptr<DNSAction> getSpoofSVCAction(const std::vector<SVCRecordParameters>&
      parameters, const dnsdist::ResponseConfig& responseConfig)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::shared_ptr<DNSAction>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2796,1
    - Dst: SetMaxReturnedTTLAction::SetMaxReturnedTTLAction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2796,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - max
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2797
      start: 2794
    functionDepth: 0
    functionLinenumber: 2794
    functionLinenumberEnd: 2797
    functionName: dnsdist::actions::getSetMaxReturnedTTLAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - SetMaxReturnedTTLAction::SetMaxReturnedTTLAction
    - std::shared_ptr<DNSAction>
    linkageType: ''
    returnType: std::shared_ptr<DNSAction>
    signature: std::shared_ptr<DNSAction> getSetMaxReturnedTTLAction(uint32_t max)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::shared_ptr<DNSResponseAction>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2801,1
    - Dst: SetMaxReturnedTTLResponseAction::SetMaxReturnedTTLResponseAction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2801,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - max
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2802
      start: 2799
    functionDepth: 0
    functionLinenumber: 2799
    functionLinenumberEnd: 2802
    functionName: dnsdist::actions::getSetMaxReturnedTTLResponseAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - SetMaxReturnedTTLResponseAction::SetMaxReturnedTTLResponseAction
    - std::shared_ptr<DNSResponseAction>
    linkageType: ''
    returnType: std::shared_ptr<DNSResponseAction>
    signature: std::shared_ptr<DNSResponseAction> getSetMaxReturnedTTLResponseAction(uint32_t
      max)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::shared_ptr<DNSResponseAction>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2806,1
    - Dst: LimitTTLResponseAction::LimitTTLResponseAction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2806,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - max
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2807
      start: 2804
    functionDepth: 0
    functionLinenumber: 2804
    functionLinenumberEnd: 2807
    functionName: dnsdist::actions::getSetMaxTTLResponseAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - LimitTTLResponseAction::LimitTTLResponseAction
    - std::shared_ptr<DNSResponseAction>
    linkageType: ''
    returnType: std::shared_ptr<DNSResponseAction>
    signature: std::shared_ptr<DNSResponseAction> getSetMaxTTLResponseAction(uint32_t
      max)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::shared_ptr<DNSAction>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2811,1
    - Dst: SetProxyProtocolValuesAction::SetProxyProtocolValuesAction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2811,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' values'
    argTypes:
    - std::vector<std::pair<uint8_t, std::string>>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2812
      start: 2809
    functionDepth: 0
    functionLinenumber: 2809
    functionLinenumberEnd: 2812
    functionName: dnsdist::actions::getSetProxyProtocolValuesAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - SetProxyProtocolValuesAction::SetProxyProtocolValuesAction
    - std::shared_ptr<DNSAction>
    linkageType: ''
    returnType: std::shared_ptr<DNSAction>
    signature: std::shared_ptr<DNSAction> getSetProxyProtocolValuesAction(const std::vector<std::pair<uint8_t,
      std::string>>& values)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::shared_ptr<DNSAction>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2816,1
    - Dst: TeeAction::TeeAction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2816,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - ' rca'
    - lca
    - addECS
    - addProxyProtocol
    argTypes:
    - ComboAddress
    - std::optional<ComboAddress>
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2817
      start: 2814
    functionDepth: 0
    functionLinenumber: 2814
    functionLinenumberEnd: 2817
    functionName: dnsdist::actions::getTeeAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - TeeAction::TeeAction
    - std::shared_ptr<DNSAction>
    linkageType: ''
    returnType: std::shared_ptr<DNSAction>
    signature: std::shared_ptr<DNSAction> getTeeAction(const ComboAddress& rca, std::optional<ComboAddress>
      lca, bool addECS, bool addProxyProtocol)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - dnsquestion
    - ruleresult
    argTypes:
    - DNSQuestion*
    - std::string*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 67
    functionDepth: 0
    functionLinenumber: 67
    functionLinenumberEnd: 72
    functionName: operator()(DNSQuestion* dnsquestion, std::string* ruleresult) const
      override
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: DNSAction::Action
    signature: DNSAction::Action operator()(DNSQuestion* dnsquestion, std::string*
      ruleresult) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 73
    functionDepth: 0
    functionLinenumber: 73
    functionLinenumberEnd: 76
    functionName: dnsdist::actions::DropAction::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string toString() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - dnsquestion
    - ruleresult
    argTypes:
    - DNSQuestion*
    - std::string*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 82
    functionDepth: 0
    functionLinenumber: 82
    functionLinenumberEnd: 87
    functionName: operator()(DNSQuestion* dnsquestion, std::string* ruleresult) const
      override
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: DNSAction::Action
    signature: DNSAction::Action operator()(DNSQuestion* dnsquestion, std::string*
      ruleresult) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 88
    functionDepth: 0
    functionLinenumber: 88
    functionLinenumberEnd: 91
    functionName: dnsdist::actions::AllowAction::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string toString() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - dnsquestion
    - ruleresult
    argTypes:
    - DNSQuestion*
    - std::string*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 98
    functionDepth: 0
    functionLinenumber: 98
    functionLinenumberEnd: 103
    functionName: operator()(DNSQuestion* dnsquestion, std::string* ruleresult) const
      override
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: DNSAction::Action
    signature: DNSAction::Action operator()(DNSQuestion* dnsquestion, std::string*
      ruleresult) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 107
      start: 104
    functionDepth: 0
    functionLinenumber: 104
    functionLinenumberEnd: 107
    functionName: dnsdist::actions::NoneAction::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string toString() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: QPSLimiter
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:114,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - limit
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 113
    functionDepth: 0
    functionLinenumber: 113
    functionLinenumberEnd: 116
    functionName: dnsdist::actions::QPSAction::QPSAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - QPSLimiter
    linkageType: ''
    returnType: void
    signature: void QPSAction(int limit)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:121,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - dnsquestion
    - ruleresult
    argTypes:
    - DNSQuestion*
    - std::string*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 125
      start: 117
    functionDepth: 0
    functionLinenumber: 117
    functionLinenumberEnd: 125
    functionName: operator()(DNSQuestion* dnsquestion, std::string* ruleresult) const
      override
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - lock
    linkageType: ''
    returnType: DNSAction::Action
    signature: DNSAction::Action operator()(DNSQuestion* dnsquestion, std::string*
      ruleresult) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:128,1
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:128,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 129
      start: 126
    functionDepth: 0
    functionLinenumber: 126
    functionLinenumberEnd: 129
    functionName: dnsdist::actions::QPSAction::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - std::to_string
    - lock
    linkageType: ''
    returnType: std::string
    signature: std::string toString() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - msec
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 141
      start: 138
    functionDepth: 0
    functionLinenumber: 138
    functionLinenumberEnd: 141
    functionName: dnsdist::actions::DelayAction::DelayAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void DelayAction(int msec)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:145,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - dnsquestion
    - ruleresult
    argTypes:
    - DNSQuestion*
    - std::string*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 142
    functionDepth: 0
    functionLinenumber: 142
    functionLinenumberEnd: 147
    functionName: operator()(DNSQuestion* dnsquestion, std::string* ruleresult) const
      override
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - std::to_string
    linkageType: ''
    returnType: DNSAction::Action
    signature: DNSAction::Action operator()(DNSQuestion* dnsquestion, std::string*
      ruleresult) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:150,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 151
      start: 148
    functionDepth: 0
    functionLinenumber: 148
    functionLinenumberEnd: 151
    functionName: dnsdist::actions::DelayAction::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - std::to_string
    linkageType: ''
    returnType: std::string
    signature: std::string toString() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 1
    argNames:
    - ' other'
    argTypes:
    - TeeAction
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 162
      start: 162
    functionDepth: 0
    functionLinenumber: 162
    functionLinenumberEnd: 162
    functionName: dnsdist::actions::TeeAction::TeeAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void TeeAction(TeeAction& other)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 1
    argNames:
    - ' other'
    argTypes:
    - TeeAction
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 163
      start: 163
    functionDepth: 0
    functionLinenumber: 163
    functionLinenumberEnd: 163
    functionName: dnsdist::actions::TeeAction::TeeAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void TeeAction(TeeAction&& other)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 1
    argNames:
    - ' other'
    argTypes:
    - TeeAction
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 164
      start: 164
    functionDepth: 0
    functionLinenumber: 164
    functionLinenumberEnd: 164
    functionName: '& operator=(TeeAction& other)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: TeeAction
    signature: TeeAction & operator=(TeeAction& other)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 1
    argNames:
    - ' other'
    argTypes:
    - TeeAction
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 165
      start: 165
    functionDepth: 0
    functionLinenumber: 165
    functionLinenumberEnd: 165
    functionName: '& operator=(TeeAction&& other)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: TeeAction
    signature: TeeAction & operator=(TeeAction&& other)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: bind
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:198,1
    - Dst: connect
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:200,1
    - Dst: setNonBlocking
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:201,1
    - Dst: std::thread
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:202,1
    - Dst: dnsdist::actions::TeeAction::worker
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:203,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 4
    argNames:
    - ' rca'
    - ' lca'
    - addECS
    - addProxyProtocol
    argTypes:
    - ComboAddress
    - std::optional<ComboAddress>
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 205
      start: 194
    functionDepth: 0
    functionLinenumber: 194
    functionLinenumberEnd: 205
    functionName: dnsdist::actions::TeeAction::TeeAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - setNonBlocking
    - bind
    - dnsdist::actions::TeeAction::worker
    - std::thread
    - connect
    linkageType: ''
    returnType: void
    signature: void TeeAction::TeeAction(const ComboAddress& rca, const std::optional<ComboAddress>&
      lca, bool addECS, bool addProxyProtocol)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: close
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:210,1
    - Dst: releaseHandle
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:210,1
    - Dst: join
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:211,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 212
      start: 207
    functionDepth: 0
    functionLinenumber: 207
    functionLinenumberEnd: 212
    functionName: TeeAction::~TeeAction()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - releaseHandle
    - join
    - close
    linkageType: ''
    returnType: void
    signature: void TeeAction::~TeeAction()
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: DNSQuestion*::overTCP
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:217,1
    - Dst: DNSQuestion*::getData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:226,1
    - Dst: generateECSOption
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:231,1
    - Dst: DNSQuestion*::ecs::getNetwork
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:231,1
    - Dst: DNSQuestion*::ecs::getBits
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:231,1
    - Dst: handleEDNSClientSubnet
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:233,1
    - Dst: DNSQuestion*::getMaximumSize
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:233,1
    - Dst: DNSQuestion*::ids::qname::wirelength
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:233,1
    - Dst: getProxyProtocolPayload
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:239,1
    - Dst: PacketBuffer::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:240,1
    - Dst: DNSQuestion*::getData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:241,1
    - Dst: addProxyProtocol
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:243,1
    - Dst: PacketBuffer::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:249,1
    - Dst: DNSQuestion*::getData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:249,1
    - Dst: send
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:250,1
    - Dst: getHandle
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:250,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:250,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:250,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 27
    argCount: 2
    argNames:
    - dnsquestion
    - ruleresult
    argTypes:
    - DNSQuestion*
    - std::string*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 258
      start: 214
    functionDepth: 2
    functionLinenumber: 214
    functionLinenumberEnd: 258
    functionName: TeeAction::operator()(DNSQuestion* dnsquestion, std::string* ruleresult)
      const
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - generateECSOption
    - DNSQuestion*::ids::qname::wirelength
    - addProxyProtocol
    - DNSQuestion*::ecs::getNetwork
    - data
    - PacketBuffer::empty
    - getHandle
    - size
    - handleEDNSClientSubnet
    - DNSQuestion*::getData
    - send
    - DNSQuestion*::getMaximumSize
    - DNSQuestion*::ecs::getBits
    - getProxyProtocolPayload
    - DNSQuestion*::overTCP
    linkageType: ''
    returnType: DNSAction::Action
    signature: DNSAction::Action TeeAction::operator()(DNSQuestion* dnsquestion, std::string*
      ruleresult) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:262,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 263
      start: 260
    functionDepth: 0
    functionLinenumber: 260
    functionLinenumberEnd: 263
    functionName: dnsdist::actions::TeeAction::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - toStringWithPort
    linkageType: ''
    returnType: std::string
    signature: std::string TeeAction::toString() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 277
      start: 265
    functionDepth: 0
    functionLinenumber: 265
    functionLinenumberEnd: 277
    functionName: dnsdist::actions::TeeAction::getStats
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::map<std::string, double>
    signature: std::map<std::string, double> TeeAction::getStats() const
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: setThreadName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:281,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:284,1
    - Dst: waitForData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:286,1
    - Dst: getHandle
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:286,1
    - Dst: usleep
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:292,1
    - Dst: recv
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:298,1
    - Dst: getHandle
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:298,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:298,1
    - Dst: std::array::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:298,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:299,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 39
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 330
      start: 279
    functionDepth: 0
    functionLinenumber: 279
    functionLinenumberEnd: 330
    functionName: dnsdist::actions::TeeAction::worker
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 2
    functionsReached:
    - recv
    - static_cast<size_t>
    - usleep
    - getHandle
    - waitForData
    - setThreadName
    - std::array::data
    - std::array::size
    linkageType: ''
    returnType: void
    signature: void TeeAction::worker()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:336,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - pool
    - stopProcessing
    argTypes:
    - std::string
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 336
      start: 335
    functionDepth: 0
    functionLinenumber: 335
    functionLinenumberEnd: 336
    functionName: dnsdist::actions::PoolAction::PoolAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void PoolAction(std::string pool, bool stopProcessing)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - dnsquestion
    - ruleresult
    argTypes:
    - DNSQuestion*
    - std::string*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 347
      start: 338
    functionDepth: 0
    functionLinenumber: 338
    functionLinenumberEnd: 347
    functionName: operator()(DNSQuestion* dnsquestion, std::string* ruleresult) const
      override
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: DNSAction::Action
    signature: DNSAction::Action operator()(DNSQuestion* dnsquestion, std::string*
      ruleresult) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 352
      start: 349
    functionDepth: 0
    functionLinenumber: 349
    functionLinenumberEnd: 352
    functionName: dnsdist::actions::PoolAction::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string toString() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: QPSLimiter
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:365,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:365,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 3
    argNames:
    - limit
    - pool
    - stopProcessing
    argTypes:
    - unsigned int
    - std::string
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 365
      start: 364
    functionDepth: 0
    functionLinenumber: 364
    functionLinenumberEnd: 365
    functionName: dnsdist::actions::QPSPoolAction::QPSPoolAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - std::move
    - QPSLimiter
    linkageType: ''
    returnType: void
    signature: void QPSPoolAction(unsigned int limit, std::string pool, bool stopProcessing)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:369,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - dnsquestion
    - ruleresult
    argTypes:
    - DNSQuestion*
    - std::string*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 378
      start: 366
    functionDepth: 0
    functionLinenumber: 366
    functionLinenumberEnd: 378
    functionName: operator()(DNSQuestion* dnsquestion, std::string* ruleresult) const
      override
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - lock
    linkageType: ''
    returnType: DNSAction::Action
    signature: DNSAction::Action operator()(DNSQuestion* dnsquestion, std::string*
      ruleresult) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:381,1
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:381,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 382
      start: 379
    functionDepth: 0
    functionLinenumber: 379
    functionLinenumberEnd: 382
    functionName: dnsdist::actions::QPSPoolAction::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - std::to_string
    - lock
    linkageType: ''
    returnType: std::string
    signature: std::string toString() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - rcode
    - ' responseConfig'
    argTypes:
    - uint8_t
    - dnsdist::ResponseConfig
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 396
      start: 395
    functionDepth: 0
    functionLinenumber: 395
    functionLinenumberEnd: 396
    functionName: dnsdist::actions::RCodeAction::RCodeAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void RCodeAction(uint8_t rcode, const dnsdist::ResponseConfig& responseConfig)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::self_answers::removeRecordsAndSetRCode
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:400,1
    - Dst: dnsdist::PacketMangling::editDNSHeaderFromPacket
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:401,1
    - Dst: DNSQuestion*::getMutableData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:401,1
    - Dst: setResponseHeadersFromConfig
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:402,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 2
    argNames:
    - dnsquestion
    - ruleresult
    argTypes:
    - DNSQuestion*
    - std::string*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 406
      start: 397
    functionDepth: 1
    functionLinenumber: 397
    functionLinenumberEnd: 406
    functionName: operator()(DNSQuestion* dnsquestion, std::string* ruleresult) const
      override
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - dnsdist::self_answers::removeRecordsAndSetRCode
    - setResponseHeadersFromConfig
    - dnsdist::PacketMangling::editDNSHeaderFromPacket
    - DNSQuestion*::getMutableData
    linkageType: ''
    returnType: DNSAction::Action
    signature: DNSAction::Action operator()(DNSQuestion* dnsquestion, std::string*
      ruleresult) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:409,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 410
      start: 407
    functionDepth: 0
    functionLinenumber: 407
    functionLinenumberEnd: 410
    functionName: dnsdist::actions::RCodeAction::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - std::to_string
    linkageType: ''
    returnType: std::string
    signature: std::string toString() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - rcode
    - responseConfig
    argTypes:
    - uint8_t
    - dnsdist::ResponseConfig
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 423
      start: 420
    functionDepth: 0
    functionLinenumber: 420
    functionLinenumberEnd: 423
    functionName: dnsdist::actions::ERCodeAction::ERCodeAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ERCodeAction(uint8_t rcode, dnsdist::ResponseConfig responseConfig)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::self_answers::removeRecordsAndSetRCode
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:427,1
    - Dst: dnsdist::PacketMangling::editDNSHeaderFromPacket
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:428,1
    - Dst: DNSQuestion*::getMutableData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:428,1
    - Dst: setResponseHeadersFromConfig
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:429,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 2
    argNames:
    - dnsquestion
    - ruleresult
    argTypes:
    - DNSQuestion*
    - std::string*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 434
      start: 424
    functionDepth: 1
    functionLinenumber: 424
    functionLinenumberEnd: 434
    functionName: operator()(DNSQuestion* dnsquestion, std::string* ruleresult) const
      override
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - dnsdist::self_answers::removeRecordsAndSetRCode
    - setResponseHeadersFromConfig
    - dnsdist::PacketMangling::editDNSHeaderFromPacket
    - DNSQuestion*::getMutableData
    linkageType: ''
    returnType: DNSAction::Action
    signature: DNSAction::Action operator()(DNSQuestion* dnsquestion, std::string*
      ruleresult) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ERCode::to_s
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:437,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 438
      start: 435
    functionDepth: 0
    functionLinenumber: 435
    functionLinenumberEnd: 438
    functionName: dnsdist::actions::ERCodeAction::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - ERCode::to_s
    linkageType: ''
    returnType: std::string
    signature: std::string toString() const override
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: reserve
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:451,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:451,1
    - Dst: generateSVCPayload
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:455,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:456,1
    - Dst: push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:459,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:459,1
    - Dst: insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:462,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:462,1
    - Dst: insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:466,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:466,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 2
    argNames:
    - ' parameters'
    - ' responseConfig'
    argTypes:
    - std::vector<SVCRecordParameters>
    - dnsdist::ResponseConfig
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 469
      start: 448
    functionDepth: 2
    functionLinenumber: 448
    functionLinenumberEnd: 469
    functionName: dnsdist::actions::SpoofSVCAction::SpoofSVCAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - std::move
    - generateSVCPayload
    - std::runtime_error
    - push_back
    - size
    - reserve
    - insert
    - ComboAddress
    linkageType: ''
    returnType: void
    signature: void SpoofSVCAction(const std::vector<SVCRecordParameters>& parameters,
      const dnsdist::ResponseConfig& responseConfig)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::svc::generateSVCResponse
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:474,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - dnsquestion
    - ruleresult
    argTypes:
    - DNSQuestion*
    - std::string*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 479
      start: 471
    functionDepth: 2
    functionLinenumber: 471
    functionLinenumberEnd: 479
    functionName: operator()(DNSQuestion* dnsquestion, std::string* ruleresult) const
      override
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - dnsdist::svc::generateSVCResponse
    linkageType: ''
    returnType: DNSAction::Action
    signature: DNSAction::Action operator()(DNSQuestion* dnsquestion, std::string*
      ruleresult) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 484
      start: 481
    functionDepth: 0
    functionLinenumber: 481
    functionLinenumberEnd: 484
    functionName: dnsdist::actions::SpoofSVCAction::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string toString() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - dnsquestion
    - ruleresult
    argTypes:
    - DNSQuestion*
    - std::string*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 501
      start: 496
    functionDepth: 0
    functionLinenumber: 496
    functionLinenumberEnd: 501
    functionName: operator()(DNSQuestion* dnsquestion, std::string* ruleresult) const
      override
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: DNSAction::Action
    signature: DNSAction::Action operator()(DNSQuestion* dnsquestion, std::string*
      ruleresult) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 505
      start: 502
    functionDepth: 0
    functionLinenumber: 502
    functionLinenumberEnd: 505
    functionName: dnsdist::actions::TCAction::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string toString() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - dnsResponse
    - ruleresult
    argTypes:
    - DNSResponse*
    - std::string*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 516
      start: 511
    functionDepth: 0
    functionLinenumber: 511
    functionLinenumberEnd: 516
    functionName: operator()(DNSResponse* dnsResponse, std::string* ruleresult) const
      override
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: DNSResponseAction::Action
    signature: DNSResponseAction::Action operator()(DNSResponse* dnsResponse, std::string*
      ruleresult) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 520
      start: 517
    functionDepth: 0
    functionLinenumber: 517
    functionLinenumberEnd: 520
    functionName: dnsdist::actions::TCResponseAction::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string toString() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:527,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - func
    argTypes:
    - LuaActionFunction
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 528
      start: 526
    functionDepth: 0
    functionLinenumber: 526
    functionLinenumberEnd: 528
    functionName: dnsdist::actions::LuaAction::LuaAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void LuaAction(LuaActionFunction func)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:535,1
    - Dst: d_func
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:536,1
    - Dst: std::get<1>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:538,1
    - Dst: std::string*::clear
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:543,1
    - Dst: static_cast<Action>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:546,1
    - Dst: std::get<0>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:546,1
    - Dst: dnsdist::handleQueuedAsynchronousEvents
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:548,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:552,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:552,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:552,1
    - Dst: DNSQuestion*::getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:553,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:553,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:556,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:556,1
    - Dst: DNSQuestion*::getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:557,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 2
    argNames:
    - dnsquestion
    - ruleresult
    argTypes:
    - DNSQuestion*
    - std::string*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 560
      start: 530
    functionDepth: 1
    functionLinenumber: 530
    functionLinenumberEnd: 560
    functionName: operator()(DNSQuestion* dnsquestion, std::string* ruleresult) const
      override
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - SLOG
    - d_func
    - static_cast<Action>
    - what
    - DNSQuestion*::getLogger
    - std::string*::clear
    - std::get<1>
    - lock
    - std::get<0>
    - warnlog
    - dnsdist::handleQueuedAsynchronousEvents
    linkageType: ''
    returnType: DNSAction::Action
    signature: DNSAction::Action operator()(DNSQuestion* dnsquestion, std::string*
      ruleresult) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 565
      start: 562
    functionDepth: 0
    functionLinenumber: 562
    functionLinenumberEnd: 565
    functionName: dnsdist::actions::LuaAction::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string toString() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:575,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - func
    argTypes:
    - LuaResponseActionFunction
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 576
      start: 574
    functionDepth: 0
    functionLinenumber: 574
    functionLinenumberEnd: 576
    functionName: dnsdist::actions::LuaResponseAction::LuaResponseAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void LuaResponseAction(LuaResponseActionFunction func)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:582,1
    - Dst: d_func
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:583,1
    - Dst: std::get<1>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:585,1
    - Dst: std::string*::clear
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:590,1
    - Dst: static_cast<Action>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:593,1
    - Dst: std::get<0>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:593,1
    - Dst: dnsdist::handleQueuedAsynchronousEvents
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:595,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:599,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:599,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:599,1
    - Dst: DNSResponse*::getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:600,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:600,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:603,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:603,1
    - Dst: DNSResponse*::getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:604,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 2
    argNames:
    - response
    - ruleresult
    argTypes:
    - DNSResponse*
    - std::string*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 607
      start: 577
    functionDepth: 1
    functionLinenumber: 577
    functionLinenumberEnd: 607
    functionName: operator()(DNSResponse* response, std::string* ruleresult) const
      override
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - SLOG
    - d_func
    - static_cast<Action>
    - what
    - DNSResponse*::getLogger
    - std::string*::clear
    - std::get<1>
    - lock
    - std::get<0>
    - warnlog
    - dnsdist::handleQueuedAsynchronousEvents
    linkageType: ''
    returnType: DNSResponseAction::Action
    signature: DNSResponseAction::Action operator()(DNSResponse* response, std::string*
      ruleresult) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 612
      start: 609
    functionDepth: 0
    functionLinenumber: 609
    functionLinenumberEnd: 612
    functionName: dnsdist::actions::LuaResponseAction::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string toString() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:622,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - func
    argTypes:
    - LuaActionFFIFunction
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 624
      start: 621
    functionDepth: 0
    functionLinenumber: 621
    functionLinenumberEnd: 624
    functionName: dnsdist::actions::LuaFFIAction::LuaFFIAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void LuaFFIAction(LuaActionFFIFunction func)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:632,1
    - Dst: d_func
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:633,1
    - Dst: std::string*::clear
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:640,1
    - Dst: static_cast<DNSAction::Action>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:643,1
    - Dst: dnsdist::handleQueuedAsynchronousEvents
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:645,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:649,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:649,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:649,1
    - Dst: DNSQuestion*::getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:650,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:650,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:653,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:653,1
    - Dst: DNSQuestion*::getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:654,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 2
    argNames:
    - dnsquestion
    - ruleresult
    argTypes:
    - DNSQuestion*
    - std::string*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 657
      start: 626
    functionDepth: 1
    functionLinenumber: 626
    functionLinenumberEnd: 657
    functionName: operator()(DNSQuestion* dnsquestion, std::string* ruleresult) const
      override
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - SLOG
    - d_func
    - what
    - DNSQuestion*::getLogger
    - std::string*::clear
    - warnlog
    - static_cast<DNSAction::Action>
    - lock
    - dnsdist::handleQueuedAsynchronousEvents
    linkageType: ''
    returnType: DNSAction::Action
    signature: DNSAction::Action operator()(DNSQuestion* dnsquestion, std::string*
      ruleresult) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 662
      start: 659
    functionDepth: 0
    functionLinenumber: 659
    functionLinenumberEnd: 662
    functionName: dnsdist::actions::LuaFFIAction::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string toString() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:672,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - code
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 674
      start: 671
    functionDepth: 0
    functionLinenumber: 671
    functionLinenumberEnd: 674
    functionName: dnsdist::actions::LuaFFIPerThreadAction::LuaFFIPerThreadAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void LuaFFIPerThreadAction(std::string code)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: setupLuaFFIPerThreadContext
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:681,1
    - Dst: d_luaContext::executeCode
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:685,1
    - Dst: d_func
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:694,1
    - Dst: std::string*::clear
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:701,1
    - Dst: dnsdist::handleQueuedAsynchronousEvents
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:704,1
    - Dst: static_cast<DNSAction::Action>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:705,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:708,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:708,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:708,1
    - Dst: DNSQuestion*::getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:709,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:709,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:712,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:712,1
    - Dst: DNSQuestion*::getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:713,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 25
    argCount: 2
    argNames:
    - dnsquestion
    - ruleresult
    argTypes:
    - DNSQuestion*
    - std::string*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 716
      start: 676
    functionDepth: 2
    functionLinenumber: 676
    functionLinenumberEnd: 716
    functionName: operator()(DNSQuestion* dnsquestion, std::string* ruleresult) const
      override
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - SLOG
    - d_func
    - what
    - DNSQuestion*::getLogger
    - std::string*::clear
    - warnlog
    - static_cast<DNSAction::Action>
    - d_luaContext::executeCode
    - dnsdist::handleQueuedAsynchronousEvents
    - setupLuaFFIPerThreadContext
    linkageType: ''
    returnType: DNSAction::Action
    signature: DNSAction::Action operator()(DNSQuestion* dnsquestion, std::string*
      ruleresult) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 721
      start: 718
    functionDepth: 0
    functionLinenumber: 718
    functionLinenumberEnd: 721
    functionName: dnsdist::actions::LuaFFIPerThreadAction::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string toString() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:745,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - func
    argTypes:
    - LuaResponseActionFFIFunction
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 747
      start: 744
    functionDepth: 0
    functionLinenumber: 744
    functionLinenumberEnd: 747
    functionName: dnsdist::actions::LuaFFIResponseAction::LuaFFIResponseAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void LuaFFIResponseAction(LuaResponseActionFFIFunction func)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:755,1
    - Dst: d_func
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:756,1
    - Dst: std::string*::clear
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:763,1
    - Dst: static_cast<DNSResponseAction::Action>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:766,1
    - Dst: dnsdist::handleQueuedAsynchronousEvents
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:768,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:772,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:772,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:772,1
    - Dst: DNSResponse*::getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:773,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:773,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:776,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:776,1
    - Dst: DNSResponse*::getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:777,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 2
    argNames:
    - response
    - ruleresult
    argTypes:
    - DNSResponse*
    - std::string*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 780
      start: 749
    functionDepth: 1
    functionLinenumber: 749
    functionLinenumberEnd: 780
    functionName: operator()(DNSResponse* response, std::string* ruleresult) const
      override
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - static_cast<DNSResponseAction::Action>
    - SLOG
    - d_func
    - what
    - DNSResponse*::getLogger
    - std::string*::clear
    - warnlog
    - lock
    - dnsdist::handleQueuedAsynchronousEvents
    linkageType: ''
    returnType: DNSResponseAction::Action
    signature: DNSResponseAction::Action operator()(DNSResponse* response, std::string*
      ruleresult) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 785
      start: 782
    functionDepth: 0
    functionLinenumber: 782
    functionLinenumberEnd: 785
    functionName: dnsdist::actions::LuaFFIResponseAction::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string toString() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:795,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - code
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 797
      start: 794
    functionDepth: 0
    functionLinenumber: 794
    functionLinenumberEnd: 797
    functionName: dnsdist::actions::LuaFFIPerThreadResponseAction::LuaFFIPerThreadResponseAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void LuaFFIPerThreadResponseAction(std::string code)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: setupLuaFFIPerThreadContext
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:804,1
    - Dst: d_luaContext::executeCode
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:808,1
    - Dst: d_func
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:817,1
    - Dst: std::string*::clear
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:824,1
    - Dst: dnsdist::handleQueuedAsynchronousEvents
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:827,1
    - Dst: static_cast<DNSResponseAction::Action>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:828,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:831,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:831,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:831,1
    - Dst: DNSResponse*::getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:832,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:832,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:835,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:835,1
    - Dst: DNSResponse*::getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:836,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 25
    argCount: 2
    argNames:
    - response
    - ruleresult
    argTypes:
    - DNSResponse*
    - std::string*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 839
      start: 799
    functionDepth: 2
    functionLinenumber: 799
    functionLinenumberEnd: 839
    functionName: operator()(DNSResponse* response, std::string* ruleresult) const
      override
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - static_cast<DNSResponseAction::Action>
    - SLOG
    - d_func
    - what
    - DNSResponse*::getLogger
    - std::string*::clear
    - warnlog
    - d_luaContext::executeCode
    - dnsdist::handleQueuedAsynchronousEvents
    - setupLuaFFIPerThreadContext
    linkageType: ''
    returnType: DNSResponseAction::Action
    signature: DNSResponseAction::Action operator()(DNSResponse* response, std::string*
      ruleresult) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 844
      start: 841
    functionDepth: 0
    functionLinenumber: 841
    functionLinenumberEnd: 844
    functionName: dnsdist::actions::LuaFFIPerThreadResponseAction::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string toString() const override
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: isIPv4
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:872,1
    - Dst: insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:873,1
    - Dst: isIPv6
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:875,1
    - Dst: insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:876,1
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:880,1
    - Dst: insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:881,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 2
    argNames:
    - ' addrs'
    - ' responseConfig'
    argTypes:
    - vector<ComboAddress>
    - dnsdist::ResponseConfig
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 883
      start: 868
    functionDepth: 1
    functionLinenumber: 868
    functionLinenumberEnd: 883
    functionName: dnsdist::actions::SpoofAction::SpoofAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - empty
    - isIPv6
    - isIPv4
    - insert
    linkageType: ''
    returnType: void
    signature: void SpoofAction(const vector<ComboAddress>& addrs, const dnsdist::ResponseConfig&
      responseConfig)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:886,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - cname
    - ' responseConfig'
    argTypes:
    - DNSName
    - dnsdist::ResponseConfig
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 888
      start: 885
    functionDepth: 0
    functionLinenumber: 885
    functionLinenumberEnd: 888
    functionName: dnsdist::actions::SpoofAction::SpoofAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void SpoofAction(DNSName cname, const dnsdist::ResponseConfig& responseConfig)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:891,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - rawresponse
    argTypes:
    - PacketBuffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 893
      start: 890
    functionDepth: 0
    functionLinenumber: 890
    functionLinenumberEnd: 893
    functionName: dnsdist::actions::SpoofAction::SpoofAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void SpoofAction(PacketBuffer rawresponse)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 3
    argNames:
    - ' raws'
    - typeForAny
    - ' responseConfig'
    argTypes:
    - vector<std::string>
    - std::optional<uint16_t>
    - dnsdist::ResponseConfig
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 898
      start: 895
    functionDepth: 0
    functionLinenumber: 895
    functionLinenumberEnd: 898
    functionName: dnsdist::actions::SpoofAction::SpoofAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void SpoofAction(const vector<std::string>& raws, std::optional<uint16_t>
      typeForAny, const dnsdist::ResponseConfig& responseConfig)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:905,1
    - Dst: dnsdist::actions::SpoofAction::toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:906,1
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:908,1
    - Dst: isIPv4
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:913,1
    - Dst: isIPv6
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:916,1
    - Dst: dnsdist::actions::SpoofAction::toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:919,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 923
      start: 902
    functionDepth: 0
    functionLinenumber: 902
    functionLinenumberEnd: 923
    functionName: dnsdist::actions::SpoofAction::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 2
    functionsReached:
    - empty
    - dnsdist::actions::SpoofAction::toString
    - isIPv4
    - isIPv6
    linkageType: ''
    returnType: string
    signature: string toString() const override
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:940,1
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:940,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:942,1
    - Dst: count
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:942,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:946,1
    - Dst: dnsdist::self_answers::generateAnswerFromRawPacket
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:947,1
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:951,1
    - Dst: dnsdist::self_answers::generateAnswerFromCNAME
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:952,1
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:956,1
    - Dst: dnsdist::self_answers::generateAnswerFromRDataEntries
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:957,1
    - Dst: dnsdist::self_answers::generateAnswerFromIPAddresses
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:962,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 24
    argCount: 2
    argNames:
    - dnsquestion
    - ruleresult
    argTypes:
    - DNSQuestion*
    - std::string*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 968
      start: 935
    functionDepth: 1
    functionLinenumber: 935
    functionLinenumberEnd: 968
    functionName: SpoofAction::operator()(DNSQuestion* dnsquestion, std::string* ruleresult)
      const
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - count
    - dnsdist::self_answers::generateAnswerFromRawPacket
    - dnsdist::self_answers::generateAnswerFromIPAddresses
    - size
    - dnsdist::self_answers::generateAnswerFromCNAME
    - empty
    - dnsdist::self_answers::generateAnswerFromRDataEntries
    linkageType: ''
    returnType: DNSAction::Action
    signature: DNSAction::Action SpoofAction::operator()(DNSQuestion* dnsquestion,
      std::string* ruleresult) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - code
    argTypes:
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 977
      start: 974
    functionDepth: 0
    functionLinenumber: 974
    functionLinenumberEnd: 977
    functionName: dnsdist::actions::SetMacAddrAction::SetMacAddrAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void SetMacAddrAction(uint16_t code)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::MacAddressesCache::get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:983,1
    - Dst: dnsdist::MacAddress::data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:983,1
    - Dst: dnsdist::MacAddress::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:983,1
    - Dst: generateEDNSOption
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:990,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:990,1
    - Dst: dnsdist::MacAddress::data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:990,1
    - Dst: DNSQuestion*::getHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:992,1
    - Dst: PacketBuffer::reserve
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:996,1
    - Dst: DNSQuestion*::getData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:996,1
    - Dst: slowRewriteEDNSOptionInQueryWithRecords
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:998,1
    - Dst: DNSQuestion*::getData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:998,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1002,1
    - Dst: DNSQuestion*::getMaximumSize
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1002,1
    - Dst: DNSQuestion*::getMutableData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1006,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1006,1
    - Dst: DNSQuestion*::getMutableData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1014,1
    - Dst: generateOptRR
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1015,1
    - Dst: DNSQuestion*::getMaximumSize
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1015,1
    - Dst: dnsdist::PacketMangling::editDNSHeaderFromPacket
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1016,1
    - Dst: DNSQuestion*::getMutableData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1016,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1017,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 28
    argCount: 2
    argNames:
    - dnsquestion
    - ruleresult
    argTypes:
    - DNSQuestion*
    - std::string*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1025
      start: 979
    functionDepth: 1
    functionLinenumber: 979
    functionLinenumberEnd: 1025
    functionName: operator()(DNSQuestion* dnsquestion, std::string* ruleresult) const
      override
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - generateOptRR
    - std::move
    - DNSQuestion*::getHeader
    - DNSQuestion*::getMutableData
    - PacketBuffer::reserve
    - dnsdist::MacAddressesCache::get
    - PacketBuffer::size
    - reinterpret_cast<const char*>
    - generateEDNSOption
    - DNSQuestion*::getData
    - dnsdist::PacketMangling::editDNSHeaderFromPacket
    - dnsdist::MacAddress::data
    - DNSQuestion*::getMaximumSize
    - slowRewriteEDNSOptionInQueryWithRecords
    - dnsdist::MacAddress::size
    - htons
    linkageType: ''
    returnType: DNSAction::Action
    signature: DNSAction::Action operator()(DNSQuestion* dnsquestion, std::string*
      ruleresult) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1028,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1029
      start: 1026
    functionDepth: 0
    functionLinenumber: 1026
    functionLinenumberEnd: 1029
    functionName: dnsdist::actions::SetMacAddrAction::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - std::to_string
    linkageType: ''
    returnType: std::string
    signature: std::string toString() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1040,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - code
    - data
    argTypes:
    - uint16_t
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1042
      start: 1039
    functionDepth: 0
    functionLinenumber: 1039
    functionLinenumberEnd: 1042
    functionName: dnsdist::actions::SetEDNSOptionAction::SetEDNSOptionAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void SetEDNSOptionAction(uint16_t code, std::string data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: setEDNSOption
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1047,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - dnsquestion
    - ruleresult
    argTypes:
    - DNSQuestion*
    - std::string*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1049
      start: 1044
    functionDepth: 1
    functionLinenumber: 1044
    functionLinenumberEnd: 1049
    functionName: operator()(DNSQuestion* dnsquestion, std::string* ruleresult) const
      override
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - setEDNSOption
    linkageType: ''
    returnType: DNSAction::Action
    signature: DNSAction::Action operator()(DNSQuestion* dnsquestion, std::string*
      ruleresult) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1053,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1054
      start: 1051
    functionDepth: 0
    functionLinenumber: 1051
    functionLinenumberEnd: 1054
    functionName: dnsdist::actions::SetEDNSOptionAction::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - std::to_string
    linkageType: ''
    returnType: std::string
    signature: std::string toString() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1066,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - code
    - data
    argTypes:
    - uint16_t
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1068
      start: 1065
    functionDepth: 0
    functionLinenumber: 1065
    functionLinenumberEnd: 1068
    functionName: dnsdist::actions::SetEDNSOptionResponseAction::SetEDNSOptionResponseAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void SetEDNSOptionResponseAction(uint16_t code, std::string data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: setEDNSOption
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1072,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - response
    - ruleresult
    argTypes:
    - DNSResponse*
    - std::string*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1074
      start: 1070
    functionDepth: 1
    functionLinenumber: 1070
    functionLinenumberEnd: 1074
    functionName: operator()(DNSResponse* response, [[maybe_unused]] std::string*
      ruleresult) const override
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - setEDNSOption
    linkageType: ''
    returnType: DNSResponseAction::Action
    signature: DNSResponseAction::Action operator()(DNSResponse* response, [[maybe_unused]]
      std::string* ruleresult) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1078,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1079
      start: 1076
    functionDepth: 0
    functionLinenumber: 1076
    functionLinenumberEnd: 1079
    functionName: dnsdist::actions::SetEDNSOptionResponseAction::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - std::to_string
    linkageType: ''
    returnType: std::string
    signature: std::string toString() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::PacketMangling::editDNSHeaderFromPacket
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1093,1
    - Dst: DNSQuestion*::getMutableData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1093,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - dnsquestion
    - ruleresult
    argTypes:
    - DNSQuestion*
    - std::string*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1098
      start: 1090
    functionDepth: 1
    functionLinenumber: 1090
    functionLinenumberEnd: 1098
    functionName: operator()(DNSQuestion* dnsquestion, std::string* ruleresult) const
      override
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - dnsdist::PacketMangling::editDNSHeaderFromPacket
    - DNSQuestion*::getMutableData
    linkageType: ''
    returnType: DNSAction::Action
    signature: DNSAction::Action operator()(DNSQuestion* dnsquestion, std::string*
      ruleresult) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1102
      start: 1099
    functionDepth: 0
    functionLinenumber: 1099
    functionLinenumberEnd: 1102
    functionName: dnsdist::actions::SetNoRecurseAction::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string toString() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1109
      start: 1109
    functionDepth: 0
    functionLinenumber: 1109
    functionLinenumberEnd: 1109
    functionName: dnsdist::actions::LogAction::LogAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void LogAction()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1114,1
    - Dst: dnsdist::actions::LogAction::reopenLogFile
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1118,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1119,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1119,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 1
    argNames:
    - ' str'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1121
      start: 1111
    functionDepth: 1
    functionLinenumber: 1111
    functionLinenumberEnd: 1121
    functionName: dnsdist::actions::LogAction::LogAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - empty
    - stringerror
    - dnsdist::actions::LogAction::reopenLogFile
    - std::runtime_error
    linkageType: ''
    returnType: void
    signature: void LogAction(const std::string& str, bool binary = true, bool append
      = false, bool buffered = true, bool verboseOnly = true, bool includeTimestamp
      = false)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: std::atomic_load_explicit
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1126,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1128,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1130,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1130,1
    - Dst: static_cast<unsigned long long>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1130,1
    - Dst: DNSQuestion*::getQueryRealTime
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1130,1
    - Dst: static_cast<unsigned long>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1130,1
    - Dst: DNSQuestion*::getQueryRealTime
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1130,1
    - Dst: DNSQuestion*::ids::origRemote::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1130,1
    - Dst: DNSQuestion*::ids::qname::toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1130,1
    - Dst: QType
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1130,1
    - Dst: DNSQuestion*::getHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1130,1
    - Dst: DNSQuestion*::getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1131,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1131,1
    - Dst: DNSQuestion*::getQueryRealTime
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1131,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1131,1
    - Dst: DNSQuestion*::getQueryRealTime
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1131,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1134,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1134,1
    - Dst: DNSQuestion*::ids::origRemote::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1134,1
    - Dst: DNSQuestion*::ids::qname::toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1134,1
    - Dst: QType
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1134,1
    - Dst: DNSQuestion*::getHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1134,1
    - Dst: DNSQuestion*::getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1135,1
    - Dst: DNSQuestion*::ids::qname::getStorage
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1141,1
    - Dst: static_cast<uint64_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1143,1
    - Dst: DNSQuestion*::getQueryRealTime
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1143,1
    - Dst: static_cast<uint32_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1144,1
    - Dst: DNSQuestion*::getQueryRealTime
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1144,1
    - Dst: fwrite
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1145,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1145,1
    - Dst: fwrite
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1146,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1146,1
    - Dst: DNSQuestion*::getHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1148,1
    - Dst: fwrite
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1149,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1149,1
    - Dst: fwrite
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1150,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1150,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1150,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1150,1
    - Dst: fwrite
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1151,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1151,1
    - Dst: fwrite
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1152,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1152,1
    - Dst: fwrite
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1154,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1154,1
    - Dst: fwrite
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1157,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1157,1
    - Dst: fwrite
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1159,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1159,1
    - Dst: fprintf
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1163,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1163,1
    - Dst: static_cast<unsigned long long>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1163,1
    - Dst: DNSQuestion*::getQueryRealTime
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1163,1
    - Dst: static_cast<unsigned long>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1163,1
    - Dst: DNSQuestion*::getQueryRealTime
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1163,1
    - Dst: DNSQuestion*::ids::origRemote::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1163,1
    - Dst: DNSQuestion*::ids::qname::toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1163,1
    - Dst: QType
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1163,1
    - Dst: DNSQuestion*::getHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1163,1
    - Dst: fprintf
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1166,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1166,1
    - Dst: DNSQuestion*::ids::origRemote::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1166,1
    - Dst: DNSQuestion*::ids::qname::toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1166,1
    - Dst: QType
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1166,1
    - Dst: DNSQuestion*::getHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1166,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 36
    argCount: 2
    argNames:
    - dnsquestion
    - ruleresult
    argTypes:
    - DNSQuestion*
    - std::string*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1171
      start: 1123
    functionDepth: 1
    functionLinenumber: 1123
    functionLinenumberEnd: 1171
    functionName: operator()(DNSQuestion* dnsquestion, std::string* ruleresult) const
      override
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - fprintf
    - DNSQuestion*::getHeader
    - DNSQuestion*::ids::origRemote::toStringWithPort
    - static_cast<uint32_t>
    - SLOG
    - static_cast<unsigned long long>
    - std::atomic_load_explicit
    - Logging::Loggable
    - QType
    - DNSQuestion*::getLogger
    - size
    - fwrite
    - c_str
    - DNSQuestion*::ids::qname::getStorage
    - auto::get
    - dnsdist::configuration::getCurrentRuntimeConfiguration
    - DNSQuestion*::ids::qname::toString
    - static_cast<uint64_t>
    - DNSQuestion*::getQueryRealTime
    - infolog
    - static_cast<unsigned long>
    linkageType: ''
    returnType: DNSAction::Action
    signature: DNSAction::Action operator()(DNSQuestion* dnsquestion, std::string*
      ruleresult) const override
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1175,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1179
      start: 1173
    functionDepth: 0
    functionLinenumber: 1173
    functionLinenumberEnd: 1179
    functionName: dnsdist::actions::LogAction::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - empty
    linkageType: ''
    returnType: std::string
    signature: std::string toString() const override
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::actions::LogAction::reopenLogFile
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1183,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1185,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1185,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1185,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1186,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1186,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1188
      start: 1181
    functionDepth: 1
    functionLinenumber: 1181
    functionLinenumberEnd: 1188
    functionName: dnsdist::actions::LogAction::reload
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - SLOG
    - Logging::Loggable
    - stringerror
    - warnlog
    - dnsdist::logging::getTopLogger
    - dnsdist::actions::LogAction::reopenLogFile
    linkageType: ''
    returnType: void
    signature: void reload() override
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: fopen
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1197,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1197,1
    - Dst: std::shared_ptr<FILE>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1203,1
    - Dst: setbuf
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1207,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1207,1
    - Dst: std::atomic_store_explicit
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1210,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1210,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1212
      start: 1191
    functionDepth: 0
    functionLinenumber: 1191
    functionLinenumberEnd: 1212
    functionName: dnsdist::actions::LogAction::reopenLogFile
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 4
    functionsReached:
    - std::move
    - auto::get
    - std::shared_ptr<FILE>
    - fopen
    - std::atomic_store_explicit
    - c_str
    - setbuf
    linkageType: ''
    returnType: bool
    signature: bool reopenLogFile()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1226
      start: 1226
    functionDepth: 0
    functionLinenumber: 1226
    functionLinenumberEnd: 1226
    functionName: dnsdist::actions::LogResponseAction::LogResponseAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void LogResponseAction()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1231,1
    - Dst: dnsdist::actions::LogResponseAction::reopenLogFile
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1235,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1236,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1236,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 1
    argNames:
    - ' str'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1238
      start: 1228
    functionDepth: 1
    functionLinenumber: 1228
    functionLinenumberEnd: 1238
    functionName: dnsdist::actions::LogResponseAction::LogResponseAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - empty
    - stringerror
    - dnsdist::actions::LogResponseAction::reopenLogFile
    - std::runtime_error
    linkageType: ''
    returnType: void
    signature: void LogResponseAction(const std::string& str, bool append = false,
      bool buffered = true, bool verboseOnly = true, bool includeTimestamp = false)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: std::atomic_load_explicit
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1243,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1245,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1247,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1247,1
    - Dst: static_cast<unsigned long long>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1247,1
    - Dst: DNSResponse*::getQueryRealTime
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1247,1
    - Dst: static_cast<unsigned long>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1247,1
    - Dst: DNSResponse*::getQueryRealTime
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1247,1
    - Dst: DNSResponse*::ids::origRemote::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1247,1
    - Dst: DNSResponse*::ids::qname::toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1247,1
    - Dst: QType
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1247,1
    - Dst: RCode::to_s
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1247,1
    - Dst: DNSResponse*::getHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1247,1
    - Dst: DNSResponse*::getHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1247,1
    - Dst: DNSResponse*::getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1248,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1248,1
    - Dst: DNSResponse*::getQueryRealTime
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1248,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1248,1
    - Dst: DNSResponse*::getQueryRealTime
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1248,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1251,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1251,1
    - Dst: DNSResponse*::ids::origRemote::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1251,1
    - Dst: DNSResponse*::ids::qname::toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1251,1
    - Dst: QType
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1251,1
    - Dst: RCode::to_s
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1251,1
    - Dst: DNSResponse*::getHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1251,1
    - Dst: DNSResponse*::getHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1251,1
    - Dst: DNSResponse*::getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1252,1
    - Dst: fprintf
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1258,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1258,1
    - Dst: static_cast<unsigned long long>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1258,1
    - Dst: DNSResponse*::getQueryRealTime
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1258,1
    - Dst: static_cast<unsigned long>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1258,1
    - Dst: DNSResponse*::getQueryRealTime
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1258,1
    - Dst: DNSResponse*::ids::origRemote::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1258,1
    - Dst: DNSResponse*::ids::qname::toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1258,1
    - Dst: QType
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1258,1
    - Dst: RCode::to_s
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1258,1
    - Dst: DNSResponse*::getHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1258,1
    - Dst: DNSResponse*::getHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1258,1
    - Dst: fprintf
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1261,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1261,1
    - Dst: DNSResponse*::ids::origRemote::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1261,1
    - Dst: DNSResponse*::ids::qname::toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1261,1
    - Dst: QType
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1261,1
    - Dst: RCode::to_s
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1261,1
    - Dst: DNSResponse*::getHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1261,1
    - Dst: DNSResponse*::getHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1261,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 2
    argNames:
    - response
    - ruleresult
    argTypes:
    - DNSResponse*
    - std::string*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1265
      start: 1240
    functionDepth: 1
    functionLinenumber: 1240
    functionLinenumberEnd: 1265
    functionName: operator()(DNSResponse* response, std::string* ruleresult) const
      override
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - SLOG
    - static_cast<unsigned long long>
    - dnsdist::configuration::getCurrentRuntimeConfiguration
    - std::atomic_load_explicit
    - Logging::Loggable
    - fprintf
    - auto::get
    - QType
    - DNSResponse*::getQueryRealTime
    - DNSResponse*::getLogger
    - infolog
    - DNSResponse*::getHeader
    - DNSResponse*::ids::qname::toString
    - RCode::to_s
    - DNSResponse*::ids::origRemote::toStringWithPort
    - static_cast<unsigned long>
    linkageType: ''
    returnType: DNSResponseAction::Action
    signature: DNSResponseAction::Action operator()(DNSResponse* response, std::string*
      ruleresult) const override
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1269,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1273
      start: 1267
    functionDepth: 0
    functionLinenumber: 1267
    functionLinenumberEnd: 1273
    functionName: dnsdist::actions::LogResponseAction::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - empty
    linkageType: ''
    returnType: std::string
    signature: std::string toString() const override
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::actions::LogResponseAction::reopenLogFile
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1277,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1279,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1279,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1279,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1280,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1280,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1282
      start: 1275
    functionDepth: 1
    functionLinenumber: 1275
    functionLinenumberEnd: 1282
    functionName: dnsdist::actions::LogResponseAction::reload
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - SLOG
    - Logging::Loggable
    - stringerror
    - dnsdist::actions::LogResponseAction::reopenLogFile
    - warnlog
    - dnsdist::logging::getTopLogger
    linkageType: ''
    returnType: void
    signature: void reload() override
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: fopen
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1291,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1291,1
    - Dst: std::shared_ptr<FILE>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1297,1
    - Dst: setbuf
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1301,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1301,1
    - Dst: std::atomic_store_explicit
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1304,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1304,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1306
      start: 1285
    functionDepth: 0
    functionLinenumber: 1285
    functionLinenumberEnd: 1306
    functionName: dnsdist::actions::LogResponseAction::reopenLogFile
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 4
    functionsReached:
    - std::move
    - auto::get
    - std::shared_ptr<FILE>
    - fopen
    - std::atomic_store_explicit
    - c_str
    - setbuf
    linkageType: ''
    returnType: bool
    signature: bool reopenLogFile()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::PacketMangling::editDNSHeaderFromPacket
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1323,1
    - Dst: DNSQuestion*::getMutableData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1323,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - dnsquestion
    - ruleresult
    argTypes:
    - DNSQuestion*
    - std::string*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1328
      start: 1320
    functionDepth: 1
    functionLinenumber: 1320
    functionLinenumberEnd: 1328
    functionName: operator()(DNSQuestion* dnsquestion, std::string* ruleresult) const
      override
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - dnsdist::PacketMangling::editDNSHeaderFromPacket
    - DNSQuestion*::getMutableData
    linkageType: ''
    returnType: DNSAction::Action
    signature: DNSAction::Action operator()(DNSQuestion* dnsquestion, std::string*
      ruleresult) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1332
      start: 1329
    functionDepth: 0
    functionLinenumber: 1329
    functionLinenumberEnd: 1332
    functionName: dnsdist::actions::SetDisableValidationAction::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string toString() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - dnsquestion
    - ruleresult
    argTypes:
    - DNSQuestion*
    - std::string*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1344
      start: 1339
    functionDepth: 0
    functionLinenumber: 1339
    functionLinenumberEnd: 1344
    functionName: operator()(DNSQuestion* dnsquestion, std::string* ruleresult) const
      override
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: DNSAction::Action
    signature: DNSAction::Action operator()(DNSQuestion* dnsquestion, std::string*
      ruleresult) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1348
      start: 1345
    functionDepth: 0
    functionLinenumber: 1345
    functionLinenumberEnd: 1348
    functionName: dnsdist::actions::SetSkipCacheAction::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string toString() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - response
    - ruleresult
    argTypes:
    - DNSResponse*
    - std::string*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1359
      start: 1354
    functionDepth: 0
    functionLinenumber: 1354
    functionLinenumberEnd: 1359
    functionName: operator()(DNSResponse* response, std::string* ruleresult) const
      override
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: DNSResponseAction::Action
    signature: DNSResponseAction::Action operator()(DNSResponse* response, std::string*
      ruleresult) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1363
      start: 1360
    functionDepth: 0
    functionLinenumber: 1360
    functionLinenumberEnd: 1363
    functionName: dnsdist::actions::SetSkipCacheResponseAction::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string toString() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ttl
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1373
      start: 1370
    functionDepth: 0
    functionLinenumber: 1370
    functionLinenumberEnd: 1373
    functionName: dnsdist::actions::SetTempFailureCacheTTLAction::SetTempFailureCacheTTLAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void SetTempFailureCacheTTLAction(uint32_t ttl)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - dnsquestion
    - ruleresult
    argTypes:
    - DNSQuestion*
    - std::string*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1379
      start: 1374
    functionDepth: 0
    functionLinenumber: 1374
    functionLinenumberEnd: 1379
    functionName: operator()(DNSQuestion* dnsquestion, std::string* ruleresult) const
      override
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: DNSAction::Action
    signature: DNSAction::Action operator()(DNSQuestion* dnsquestion, std::string*
      ruleresult) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1382,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1383
      start: 1380
    functionDepth: 0
    functionLinenumber: 1380
    functionLinenumberEnd: 1383
    functionName: dnsdist::actions::SetTempFailureCacheTTLAction::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - std::to_string
    linkageType: ''
    returnType: std::string
    signature: std::string toString() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - v4Length
    - v6Length
    argTypes:
    - uint16_t
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1396
      start: 1393
    functionDepth: 0
    functionLinenumber: 1393
    functionLinenumberEnd: 1396
    functionName: dnsdist::actions::SetECSPrefixLengthAction::SetECSPrefixLengthAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void SetECSPrefixLengthAction(uint16_t v4Length, uint16_t v6Length)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - dnsquestion
    - ruleresult
    argTypes:
    - DNSQuestion*
    - std::string*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1402
      start: 1397
    functionDepth: 0
    functionLinenumber: 1397
    functionLinenumberEnd: 1402
    functionName: operator()(DNSQuestion* dnsquestion, std::string* ruleresult) const
      override
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: DNSAction::Action
    signature: DNSAction::Action operator()(DNSQuestion* dnsquestion, std::string*
      ruleresult) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1405,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1405,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1406
      start: 1403
    functionDepth: 0
    functionLinenumber: 1403
    functionLinenumberEnd: 1406
    functionName: dnsdist::actions::SetECSPrefixLengthAction::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - std::to_string
    linkageType: ''
    returnType: std::string
    signature: std::string toString() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ecsOverride
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1420
      start: 1417
    functionDepth: 0
    functionLinenumber: 1417
    functionLinenumberEnd: 1420
    functionName: dnsdist::actions::SetECSOverrideAction::SetECSOverrideAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void SetECSOverrideAction(bool ecsOverride)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - dnsquestion
    - ruleresult
    argTypes:
    - DNSQuestion*
    - std::string*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1426
      start: 1421
    functionDepth: 0
    functionLinenumber: 1421
    functionLinenumberEnd: 1426
    functionName: operator()(DNSQuestion* dnsquestion, std::string* ruleresult) const
      override
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: DNSAction::Action
    signature: DNSAction::Action operator()(DNSQuestion* dnsquestion, std::string*
      ruleresult) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1429,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1429,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1430
      start: 1427
    functionDepth: 0
    functionLinenumber: 1427
    functionLinenumberEnd: 1430
    functionName: dnsdist::actions::SetECSOverrideAction::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - std::to_string
    - static_cast<int>
    linkageType: ''
    returnType: std::string
    signature: std::string toString() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - dnsquestion
    - ruleresult
    argTypes:
    - DNSQuestion*
    - std::string*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1445
      start: 1440
    functionDepth: 0
    functionLinenumber: 1440
    functionLinenumberEnd: 1445
    functionName: operator()(DNSQuestion* dnsquestion, std::string* ruleresult) const
      override
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: DNSAction::Action
    signature: DNSAction::Action operator()(DNSQuestion* dnsquestion, std::string*
      ruleresult) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1449
      start: 1446
    functionDepth: 0
    functionLinenumber: 1446
    functionLinenumberEnd: 1449
    functionName: dnsdist::actions::SetDisableECSAction::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string toString() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' v4Netmask'
    argTypes:
    - Netmask
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1459
      start: 1456
    functionDepth: 0
    functionLinenumber: 1456
    functionLinenumberEnd: 1459
    functionName: dnsdist::actions::SetECSAction::SetECSAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void SetECSAction(const Netmask& v4Netmask)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - ' v4Netmask'
    - ' v6Netmask'
    argTypes:
    - Netmask
    - Netmask
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1464
      start: 1461
    functionDepth: 0
    functionLinenumber: 1461
    functionLinenumberEnd: 1464
    functionName: dnsdist::actions::SetECSAction::SetECSAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void SetECSAction(const Netmask& v4Netmask, const Netmask& v6Netmask)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::make_unique<Netmask>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1470,1
    - Dst: DNSQuestion*::ids::origRemote::isIPv4
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1470,1
    - Dst: std::make_unique<Netmask>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1473,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - dnsquestion
    - ruleresult
    argTypes:
    - DNSQuestion*
    - std::string*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1477
      start: 1466
    functionDepth: 0
    functionLinenumber: 1466
    functionLinenumberEnd: 1477
    functionName: operator()(DNSQuestion* dnsquestion, std::string* ruleresult) const
      override
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - std::make_unique<Netmask>
    - DNSQuestion*::ids::origRemote::isIPv4
    linkageType: ''
    returnType: DNSAction::Action
    signature: DNSAction::Action operator()(DNSQuestion* dnsquestion, std::string*
      ruleresult) const override
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::actions::SetECSAction::toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1481,1
    - Dst: dnsdist::actions::SetECSAction::toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1483,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1486
      start: 1479
    functionDepth: 0
    functionLinenumber: 1479
    functionLinenumberEnd: 1486
    functionName: dnsdist::actions::SetECSAction::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 2
    functionsReached:
    - dnsdist::actions::SetECSAction::toString
    linkageType: ''
    returnType: std::string
    signature: std::string toString() const override
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1521,1
    - Dst: dnsdist::Protocol::toPrettyString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1521,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 26
    argCount: 1
    argNames:
    - protocol
    argTypes:
    - dnsdist::Protocol
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1522
      start: 1495
    functionDepth: 0
    functionLinenumber: 1495
    functionLinenumberEnd: 1522
    functionName: dnsdist::actions::ProtocolToDNSTap
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - dnsdist::Protocol::toPrettyString
    - std::runtime_error
    linkageType: ''
    returnType: std::tuple<DnstapMessage::ProtocolType, std::optional<DnstapMessage::HttpProtocolType>>
    signature: std::tuple<DnstapMessage::ProtocolType, std::optional<DnstapMessage::HttpProtocolType>>
      ProtocolToDNSTap(dnsdist::Protocol protocol)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: queueData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1526,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1532,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1532,1
    - Dst: name
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1532,1
    - Dst: RemoteLoggerInterface::toErrorString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1532,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1533,1
    - Dst: RemoteLoggerInterface::toErrorString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1533,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1533,1
    - Dst: name
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1533,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1537,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1537,1
    - Dst: name
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1537,1
    - Dst: RemoteLoggerInterface::toErrorString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1537,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1538,1
    - Dst: RemoteLoggerInterface::toErrorString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1538,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1538,1
    - Dst: name
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1538,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1542,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1542,1
    - Dst: name
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1542,1
    - Dst: RemoteLoggerInterface::toErrorString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1542,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1543,1
    - Dst: RemoteLoggerInterface::toErrorString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1543,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1543,1
    - Dst: name
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1543,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 2
    argNames:
    - ' remoteLogger'
    - ' data'
    argTypes:
    - RemoteLoggerInterface
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1545
      start: 1524
    functionDepth: 1
    functionLinenumber: 1524
    functionLinenumberEnd: 1545
    functionName: dnsdist::actions::remoteLoggerQueueData
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - SLOG
    - Logging::Loggable
    - VERBOSESLOG
    - infolog
    - warnlog
    - queueData
    - RemoteLoggerInterface::toErrorString
    - dnsdist::logging::getTopLogger
    - name
    linkageType: ''
    returnType: void
    signature: void remoteLoggerQueueData(RemoteLoggerInterface& remoteLogger, const
      std::string& data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1552,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1552,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 3
    argNames:
    - identity
    - ' logger'
    - alterFunc
    argTypes:
    - std::string
    - std::shared_ptr<RemoteLoggerInterface>
    - std::optional<std::function<void(DNSQuestion*, DnstapMessage*)>>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1554
      start: 1551
    functionDepth: 0
    functionLinenumber: 1551
    functionLinenumberEnd: 1554
    functionName: dnsdist::actions::DnstapLogAction::DnstapLogAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void DnstapLogAction(std::string identity, std::shared_ptr<RemoteLoggerInterface>&
      logger, std::optional<std::function<void(DNSQuestion*, DnstapMessage*)>> alterFunc)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::string::clear
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1559,1
    - Dst: ProtocolToDNSTap
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1561,1
    - Dst: DNSQuestion*::getProtocol
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1561,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1563,1
    - Dst: DNSQuestion*::getHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1563,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1563,1
    - Dst: DNSQuestion*::getData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1563,1
    - Dst: DNSQuestion*::getData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1563,1
    - Dst: DNSQuestion*::getQueryRealTime
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1563,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1563,1
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1566,1
    - Dst: DnstapMessage::getBuffer
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1571,1
    - Dst: remoteLoggerQueueData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1572,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - dnsquestion
    - ruleresult
    argTypes:
    - DNSQuestion*
    - std::string*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1575
      start: 1555
    functionDepth: 1
    functionLinenumber: 1555
    functionLinenumberEnd: 1575
    functionName: operator()(DNSQuestion* dnsquestion, std::string* ruleresult) const
      override
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - ProtocolToDNSTap
    - std::move
    - DnstapMessage::getBuffer
    - DNSQuestion*::getHeader
    - std::string::clear
    - DNSQuestion*::getQueryRealTime
    - DNSName
    - lock
    - reinterpret_cast<const char*>
    - DNSQuestion*::getData
    - remoteLoggerQueueData
    - DNSQuestion*::getProtocol
    linkageType: ''
    returnType: DNSAction::Action
    signature: DNSAction::Action operator()(DNSQuestion* dnsquestion, std::string*
      ruleresult) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::actions::DnstapLogAction::toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1578,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1579
      start: 1576
    functionDepth: 0
    functionLinenumber: 1576
    functionLinenumberEnd: 1579
    functionName: dnsdist::actions::DnstapLogAction::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 2
    functionsReached:
    - dnsdist::actions::DnstapLogAction::toString
    linkageType: ''
    returnType: std::string
    signature: std::string toString() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: addMeta
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1592,1
    - Dst: getValues
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1592,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 3
    argNames:
    - ' message'
    - ' dnsquestion'
    - ' metas'
    argTypes:
    - DNSDistProtoBufMessage
    - DNSQuestion
    - std::vector<std::pair<std::string, ProtoBufMetaKey>>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1594
      start: 1589
    functionDepth: 4
    functionLinenumber: 1589
    functionLinenumberEnd: 1594
    functionName: dnsdist::actions::addMetaDataToProtobuf
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - getValues
    - addMeta
    linkageType: ''
    returnType: void
    signature: void addMetaDataToProtobuf(DNSDistProtoBufMessage& message, const DNSQuestion&
      dnsquestion, const std::vector<std::pair<std::string, ProtoBufMetaKey>>& metas)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: substr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1598,1
    - Dst: length
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1598,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' key'
    - ' matchedPrefix'
    argTypes:
    - std::string
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1599
      start: 1596
    functionDepth: 0
    functionLinenumber: 1596
    functionLinenumberEnd: 1599
    functionName: dnsdist::actions::stripPrefix
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 2
    functionsReached:
    - length
    - substr
    linkageType: ''
    returnType: std::string
    signature: std::string stripPrefix(const std::string& key, const std::string&
      matchedPrefix)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1603,1
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1611,1
    - Dst: count
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1611,1
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1614,1
    - Dst: boost::starts_with
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1616,1
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1629,1
    - Dst: addTag
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1631,1
    - Dst: dnsdist::actions::stripPrefix
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1631,1
    - Dst: addTag
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1634,1
    - Dst: dnsdist::actions::stripPrefix
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1640,1
    - Dst: std::string::append
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1645,1
    - Dst: std::string::append
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1646,1
    - Dst: addTag
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1647,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 36
    argCount: 6
    argNames:
    - ' message'
    - ' tags'
    - ' allowedKeys'
    - ' allowedPrefixes'
    - keyOnly
    - stripPrefixes
    argTypes:
    - DNSDistProtoBufMessage
    - QTag
    - std::optional<std::unordered_set<std::string>>
    - std::unordered_set<std::string>
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1650
      start: 1601
    functionDepth: 1
    functionLinenumber: 1601
    functionLinenumberEnd: 1650
    functionName: dnsdist::actions::addTagsToProtobuf
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - std::string::append
    - count
    - boost::starts_with
    - dnsdist::actions::stripPrefix
    - empty
    - addTag
    linkageType: ''
    returnType: void
    signature: void addTagsToProtobuf(DNSDistProtoBufMessage& message, const QTag&
      tags, const std::optional<std::unordered_set<std::string>>& allowedKeys, const
      std::unordered_set<std::string>& allowedPrefixes, bool keyOnly, bool stripPrefixes)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::edns::getExtendedDNSError
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1654,1
    - Dst: getData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1654,1
    - Dst: addMeta
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1660,1
    - Dst: addMeta
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1663,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 3
    argNames:
    - ' message'
    - ' response'
    - ' metaKey'
    argTypes:
    - DNSDistProtoBufMessage
    - DNSResponse
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1665
      start: 1652
    functionDepth: 4
    functionLinenumber: 1652
    functionLinenumberEnd: 1665
    functionName: dnsdist::actions::addExtendedDNSErrorToProtobuf
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - getData
    - dnsdist::edns::getExtendedDNSError
    - addMeta
    linkageType: ''
    returnType: void
    signature: void addExtendedDNSErrorToProtobuf(DNSDistProtoBufMessage& message,
      const DNSResponse& response, const std::string& metaKey)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: addMeta
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1592,1
    - Dst: getValues
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1592,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 3
    argNames:
    - ' message'
    - ' dnsquestion'
    - ' metas'
    argTypes:
    - DNSDistProtoBufMessage
    - DNSQuestion
    - std::vector<std::pair<std::string, ProtoBufMetaKey>>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1594
      start: 1589
    functionDepth: 4
    functionLinenumber: 1589
    functionLinenumberEnd: 1594
    functionName: dnsdist::actions::addMetaDataToProtobuf
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - getValues
    - addMeta
    linkageType: ''
    returnType: void
    signature: void addMetaDataToProtobuf(DNSDistProtoBufMessage& message, const DNSQuestion&
      dnsquestion, const std::vector<std::pair<std::string, ProtoBufMetaKey>>& metas)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: substr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1598,1
    - Dst: length
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1598,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' key'
    - ' matchedPrefix'
    argTypes:
    - std::string
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1599
      start: 1596
    functionDepth: 0
    functionLinenumber: 1596
    functionLinenumberEnd: 1599
    functionName: dnsdist::actions::stripPrefix
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 3
    functionsReached:
    - length
    - substr
    linkageType: ''
    returnType: std::string
    signature: std::string stripPrefix(const std::string& key, const std::string&
      matchedPrefix)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1603,1
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1611,1
    - Dst: count
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1611,1
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1614,1
    - Dst: boost::starts_with
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1616,1
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1629,1
    - Dst: addTag
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1631,1
    - Dst: dnsdist::actions::stripPrefix
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1631,1
    - Dst: addTag
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1634,1
    - Dst: dnsdist::actions::stripPrefix
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1640,1
    - Dst: std::string::append
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1645,1
    - Dst: std::string::append
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1646,1
    - Dst: addTag
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1647,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 36
    argCount: 6
    argNames:
    - ' message'
    - ' tags'
    - ' allowedKeys'
    - ' allowedPrefixes'
    - keyOnly
    - stripPrefixes
    argTypes:
    - DNSDistProtoBufMessage
    - QTag
    - std::optional<std::unordered_set<std::string>>
    - std::unordered_set<std::string>
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1650
      start: 1601
    functionDepth: 1
    functionLinenumber: 1601
    functionLinenumberEnd: 1650
    functionName: dnsdist::actions::addTagsToProtobuf
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - std::string::append
    - count
    - boost::starts_with
    - dnsdist::actions::stripPrefix
    - empty
    - addTag
    linkageType: ''
    returnType: void
    signature: void addTagsToProtobuf(DNSDistProtoBufMessage& message, const QTag&
      tags, const std::optional<std::unordered_set<std::string>>& allowedKeys, const
      std::unordered_set<std::string>& allowedPrefixes, bool keyOnly, bool stripPrefixes)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::edns::getExtendedDNSError
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1654,1
    - Dst: getData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1654,1
    - Dst: addMeta
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1660,1
    - Dst: addMeta
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1663,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 3
    argNames:
    - ' message'
    - ' response'
    - ' metaKey'
    argTypes:
    - DNSDistProtoBufMessage
    - DNSResponse
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1665
      start: 1652
    functionDepth: 4
    functionLinenumber: 1652
    functionLinenumberEnd: 1665
    functionName: dnsdist::actions::addExtendedDNSErrorToProtobuf
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - getData
    - dnsdist::edns::getExtendedDNSError
    - addMeta
    linkageType: ''
    returnType: void
    signature: void addExtendedDNSErrorToProtobuf(DNSDistProtoBufMessage& message,
      const DNSResponse& response, const std::string& metaKey)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1673,1
    - Dst: ipEncryptKey::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1675,1
    - Dst: pdns::ipcrypt2::IPCrypt2::IPCrypt2
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1676,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 4
    argCount: 1
    argNames:
    - ' config'
    argTypes:
    - RemoteLogActionConfiguration
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1678
      start: 1672
    functionDepth: 0
    functionLinenumber: 1672
    functionLinenumberEnd: 1678
    functionName: dnsdist::actions::RemoteLogAction::RemoteLogAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - pdns::ipcrypt2::IPCrypt2::IPCrypt2
    - std::move
    - ipEncryptKey::empty
    linkageType: ''
    returnType: void
    signature: void RemoteLogAction(RemoteLogActionConfiguration&& config)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: std::make_unique<InternalQueryState::ProtoBufData>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1684,1
    - Dst: getUniqueID
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1687,1
    - Dst: DNSDistProtoBufMessage::setServerIdentity
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1692,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1692,1
    - Dst: serverID::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1694,1
    - Dst: DNSDistProtoBufMessage::setServerIdentity
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1695,1
    - Dst: ipEncryptKey::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1699,1
    - Dst: DNSDistProtoBufMessage::setRequestor
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1700,1
    - Dst: encryptCA
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1700,1
    - Dst: encrypt
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1704,1
    - Dst: auto::setPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1705,1
    - Dst: DNSQuestion*::ids::origRemote::getPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1705,1
    - Dst: DNSDistProtoBufMessage::setRequestor
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1706,1
    - Dst: addTagsToProtobuf
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1710,1
    - Dst: addMetaDataToProtobuf
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1713,1
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1716,1
    - Dst: std::string::clear
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1721,1
    - Dst: DNSDistProtoBufMessage::serialize
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1722,1
    - Dst: DNSQuestion*::ids::d_rawProtobufContent::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1723,1
    - Dst: std::string::insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1724,1
    - Dst: std::string::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1724,1
    - Dst: DNSQuestion*::ids::d_rawProtobufContent::begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1724,1
    - Dst: DNSQuestion*::ids::d_rawProtobufContent::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1724,1
    - Dst: remoteLoggerQueueData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1726,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 35
    argCount: 2
    argNames:
    - dnsquestion
    - ruleresult
    argTypes:
    - DNSQuestion*
    - std::string*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1729
      start: 1680
    functionDepth: 1
    functionLinenumber: 1680
    functionLinenumberEnd: 1729
    functionName: operator()(DNSQuestion* dnsquestion, std::string* ruleresult) const
      override
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - ipEncryptKey::empty
    - DNSQuestion*::ids::origRemote::getPort
    - addTagsToProtobuf
    - getUniqueID
    - std::string::end
    - auto::setPort
    - remoteLoggerQueueData
    - serverID::empty
    - DNSQuestion*::ids::d_rawProtobufContent::empty
    - encryptCA
    - DNSQuestion*::ids::d_rawProtobufContent::begin
    - std::string::insert
    - lock
    - DNSDistProtoBufMessage::setServerIdentity
    - dnsdist::configuration::getCurrentRuntimeConfiguration
    - DNSDistProtoBufMessage::setRequestor
    - addMetaDataToProtobuf
    - std::string::clear
    - DNSQuestion*::ids::d_rawProtobufContent::end
    - std::make_unique<InternalQueryState::ProtoBufData>
    - encrypt
    - DNSDistProtoBufMessage::serialize
    linkageType: ''
    returnType: DNSAction::Action
    signature: DNSAction::Action operator()(DNSQuestion* dnsquestion, std::string*
      ruleresult) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: logger::toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1732,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1733
      start: 1730
    functionDepth: 0
    functionLinenumber: 1730
    functionLinenumberEnd: 1733
    functionName: dnsdist::actions::RemoteLogAction::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - logger::toString
    linkageType: ''
    returnType: std::string
    signature: std::string toString() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' config'
    argTypes:
    - SetTraceActionConfiguration
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1746
      start: 1745
    functionDepth: 0
    functionLinenumber: 1745
    functionLinenumberEnd: 1746
    functionName: dnsdist::actions::SetTraceAction::SetTraceAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void SetTraceAction(SetTraceActionConfiguration& config)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: DNSQuestion*::ids::getTracer
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1750,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1752,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1752,1
    - Dst: DNSQuestion*::getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1753,1
    - Dst: DNSQuestion*::ids::ottraceLoggers::clear
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1761,1
    - Dst: setRootSpanAttribute
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1766,1
    - Dst: DNSQuestion*::ids::qname::toStringNoDot
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1766,1
    - Dst: setRootSpanAttribute
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1767,1
    - Dst: QType
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1767,1
    - Dst: setRootSpanAttribute
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1768,1
    - Dst: DNSQuestion*::ids::origRemote::toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1768,1
    - Dst: setRootSpanAttribute
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1769,1
    - Dst: DNSQuestion*::ids::origRemote::getPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1769,1
    - Dst: setTraceAttribute
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1770,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1770,1
    - Dst: parseEDNSOptions
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1782,1
    - Dst: pdns::trace::extractOTraceIDs
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1791,1
    - Dst: EDNSOptionCode::EDNSOptionCodeEnum
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1791,1
    - Dst: setTraceID
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1792,1
    - Dst: setRootSpanID
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1794,1
    - Dst: locateEDNSOptRR
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1804,1
    - Dst: DNSQuestion*::getData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1804,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1810,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1810,1
    - Dst: DNSQuestion*::getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1811,1
    - Dst: removeEDNSOptionFromOPT
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1816,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1816,1
    - Dst: DNSQuestion*::getMutableData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1816,1
    - Dst: DNSQuestion*::getMutableData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1817,1
    - Dst: DNSQuestion*::getData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1817,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 45
    argCount: 2
    argNames:
    - dnsquestion
    - ruleresult
    argTypes:
    - DNSQuestion*
    - std::string*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1821
      start: 1748
    functionDepth: 1
    functionLinenumber: 1748
    functionLinenumberEnd: 1821
    functionName: operator()([[maybe_unused]] DNSQuestion* dnsquestion, [[maybe_unused]]
      std::string* ruleresult) const override
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - reinterpret_cast<char*>
    - DNSQuestion*::ids::origRemote::getPort
    - setTraceID
    - setRootSpanID
    - DNSQuestion*::ids::getTracer
    - locateEDNSOptRR
    - setRootSpanAttribute
    - QType
    - DNSQuestion*::getLogger
    - DNSQuestion*::ids::ottraceLoggers::clear
    - parseEDNSOptions
    - DNSQuestion*::ids::origRemote::toString
    - DNSQuestion*::ids::qname::toStringNoDot
    - removeEDNSOptionFromOPT
    - dnsdist::configuration::getCurrentRuntimeConfiguration
    - VERBOSESLOG
    - setTraceAttribute
    - DNSQuestion*::getMutableData
    - pdns::trace::extractOTraceIDs
    - infolog
    - EDNSOptionCode::EDNSOptionCodeEnum
    - DNSQuestion*::getData
    linkageType: ''
    returnType: DNSAction::Action
    signature: DNSAction::Action operator()([[maybe_unused]] DNSQuestion* dnsquestion,
      [[maybe_unused]] std::string* ruleresult) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1825,1
    - Dst: string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1825,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1826
      start: 1823
    functionDepth: 0
    functionLinenumber: 1823
    functionLinenumberEnd: 1826
    functionName: dnsdist::actions::SetTraceAction::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - string
    linkageType: ''
    returnType: std::string
    signature: std::string toString() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1844,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - reason
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1846
      start: 1843
    functionDepth: 0
    functionLinenumber: 1843
    functionLinenumberEnd: 1846
    functionName: dnsdist::actions::SNMPTrapAction::SNMPTrapAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void SNMPTrapAction(std::string reason)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::configuration::getImmutableConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1850,1
    - Dst: sendDNSTrap
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1851,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - dnsquestion
    - ruleresult
    argTypes:
    - DNSQuestion*
    - std::string*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1855
      start: 1847
    functionDepth: 1
    functionLinenumber: 1847
    functionLinenumberEnd: 1855
    functionName: operator()(DNSQuestion* dnsquestion, std::string* ruleresult) const
      override
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - sendDNSTrap
    - dnsdist::configuration::getImmutableConfiguration
    linkageType: ''
    returnType: DNSAction::Action
    signature: DNSAction::Action operator()(DNSQuestion* dnsquestion, std::string*
      ruleresult) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1859
      start: 1856
    functionDepth: 0
    functionLinenumber: 1856
    functionLinenumberEnd: 1859
    functionName: dnsdist::actions::SNMPTrapAction::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string toString() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1870,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1870,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - tag
    - value
    argTypes:
    - std::string
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1872
      start: 1869
    functionDepth: 0
    functionLinenumber: 1869
    functionLinenumberEnd: 1872
    functionName: dnsdist::actions::SetTagAction::SetTagAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void SetTagAction(std::string tag, std::string value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSQuestion*::setTag
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1876,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - dnsquestion
    - ruleresult
    argTypes:
    - DNSQuestion*
    - std::string*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1879
      start: 1873
    functionDepth: 1
    functionLinenumber: 1873
    functionLinenumberEnd: 1879
    functionName: operator()(DNSQuestion* dnsquestion, std::string* ruleresult) const
      override
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - DNSQuestion*::setTag
    linkageType: ''
    returnType: DNSAction::Action
    signature: DNSAction::Action operator()(DNSQuestion* dnsquestion, std::string*
      ruleresult) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1883
      start: 1880
    functionDepth: 0
    functionLinenumber: 1880
    functionLinenumberEnd: 1883
    functionName: dnsdist::actions::SetTagAction::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string toString() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1895,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - tag
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1897
      start: 1894
    functionDepth: 0
    functionLinenumber: 1894
    functionLinenumberEnd: 1897
    functionName: dnsdist::actions::UnsetTagAction::UnsetTagAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void UnsetTagAction(std::string tag)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSQuestion*::unsetTag
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1901,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - dnsquestion
    - ruleresult
    argTypes:
    - DNSQuestion*
    - std::string*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1904
      start: 1898
    functionDepth: 1
    functionLinenumber: 1898
    functionLinenumberEnd: 1904
    functionName: operator()(DNSQuestion* dnsquestion, std::string* ruleresult) const
      override
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - DNSQuestion*::unsetTag
    linkageType: ''
    returnType: DNSAction::Action
    signature: DNSAction::Action operator()(DNSQuestion* dnsquestion, std::string*
      ruleresult) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1908
      start: 1905
    functionDepth: 0
    functionLinenumber: 1905
    functionLinenumberEnd: 1908
    functionName: dnsdist::actions::UnsetTagAction::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string toString() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1920,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1920,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 3
    argNames:
    - identity
    - ' logger'
    - alterFunc
    argTypes:
    - std::string
    - std::shared_ptr<RemoteLoggerInterface>
    - std::optional<std::function<void(DNSResponse*, DnstapMessage*)>>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1922
      start: 1919
    functionDepth: 0
    functionLinenumber: 1919
    functionLinenumberEnd: 1922
    functionName: dnsdist::actions::DnstapLogResponseAction::DnstapLogResponseAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void DnstapLogResponseAction(std::string identity, std::shared_ptr<RemoteLoggerInterface>&
      logger, std::optional<std::function<void(DNSResponse*, DnstapMessage*)>> alterFunc)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: gettime
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1928,1
    - Dst: std::string::clear
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1929,1
    - Dst: ProtocolToDNSTap
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1931,1
    - Dst: DNSResponse*::getProtocol
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1931,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1933,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1933,1
    - Dst: DNSResponse*::getData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1933,1
    - Dst: DNSResponse*::getData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1933,1
    - Dst: DNSResponse*::getQueryRealTime
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1933,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1933,1
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1936,1
    - Dst: DnstapMessage::getBuffer
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1941,1
    - Dst: remoteLoggerQueueData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1942,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 2
    argNames:
    - response
    - ruleresult
    argTypes:
    - DNSResponse*
    - std::string*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1945
      start: 1923
    functionDepth: 1
    functionLinenumber: 1923
    functionLinenumberEnd: 1945
    functionName: operator()(DNSResponse* response, std::string* ruleresult) const
      override
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - ProtocolToDNSTap
    - std::move
    - DnstapMessage::getBuffer
    - DNSResponse*::getQueryRealTime
    - std::string::clear
    - DNSResponse*::getData
    - DNSName
    - lock
    - reinterpret_cast<const char*>
    - remoteLoggerQueueData
    - gettime
    - DNSResponse*::getProtocol
    linkageType: ''
    returnType: DNSResponseAction::Action
    signature: DNSResponseAction::Action operator()(DNSResponse* response, std::string*
      ruleresult) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::actions::DnstapLogResponseAction::toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1948,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1949
      start: 1946
    functionDepth: 0
    functionLinenumber: 1946
    functionLinenumberEnd: 1949
    functionName: dnsdist::actions::DnstapLogResponseAction::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 2
    functionsReached:
    - dnsdist::actions::DnstapLogResponseAction::toString
    linkageType: ''
    returnType: std::string
    signature: std::string toString() const override
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1962,1
    - Dst: ipEncryptKey::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1964,1
    - Dst: pdns::ipcrypt2::IPCrypt2::IPCrypt2
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1965,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 4
    argCount: 1
    argNames:
    - ' config'
    argTypes:
    - RemoteLogActionConfiguration
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1967
      start: 1961
    functionDepth: 0
    functionLinenumber: 1961
    functionLinenumberEnd: 1967
    functionName: dnsdist::actions::RemoteLogResponseAction::RemoteLogResponseAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - pdns::ipcrypt2::IPCrypt2::IPCrypt2
    - std::move
    - ipEncryptKey::empty
    linkageType: ''
    returnType: void
    signature: void RemoteLogResponseAction(RemoteLogActionConfiguration&& config)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: std::make_unique<InternalQueryState::ProtoBufData>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1972,1
    - Dst: getUniqueID
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1975,1
    - Dst: DNSDistProtoBufMessage::setServerIdentity
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1980,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1980,1
    - Dst: serverID::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1982,1
    - Dst: DNSDistProtoBufMessage::setServerIdentity
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1983,1
    - Dst: ipEncryptKey::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1987,1
    - Dst: DNSDistProtoBufMessage::setRequestor
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1988,1
    - Dst: encryptCA
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1988,1
    - Dst: encrypt
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1992,1
    - Dst: auto::setPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1993,1
    - Dst: DNSResponse*::ids::origRemote::getPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1993,1
    - Dst: DNSDistProtoBufMessage::setRequestor
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1994,1
    - Dst: addTagsToProtobuf
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:1998,1
    - Dst: addMetaDataToProtobuf
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2001,1
    - Dst: addExtendedDNSErrorToProtobuf
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2004,1
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2008,1
    - Dst: std::string::clear
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2013,1
    - Dst: DNSDistProtoBufMessage::serialize
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2014,1
    - Dst: DNSResponse*::ids::d_rawProtobufContent::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2016,1
    - Dst: std::string::insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2017,1
    - Dst: std::string::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2017,1
    - Dst: DNSResponse*::ids::d_rawProtobufContent::begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2017,1
    - Dst: DNSResponse*::ids::d_rawProtobufContent::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2017,1
    - Dst: DNSResponse*::ids::delayedResponseMsgs::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2021,1
    - Dst: std::shared_ptr<RemoteLoggerInterface>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2021,1
    - Dst: logger::queueData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2024,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 42
    argCount: 2
    argNames:
    - response
    - ruleresult
    argTypes:
    - DNSResponse*
    - std::string*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2028
      start: 1968
    functionDepth: 1
    functionLinenumber: 1968
    functionLinenumberEnd: 2028
    functionName: operator()(DNSResponse* response, std::string* ruleresult) const
      override
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - ipEncryptKey::empty
    - addTagsToProtobuf
    - getUniqueID
    - std::string::end
    - auto::setPort
    - std::shared_ptr<RemoteLoggerInterface>
    - serverID::empty
    - encryptCA
    - std::string::insert
    - logger::queueData
    - DNSResponse*::ids::d_rawProtobufContent::empty
    - lock
    - DNSResponse*::ids::origRemote::getPort
    - DNSResponse*::ids::d_rawProtobufContent::begin
    - DNSDistProtoBufMessage::setServerIdentity
    - DNSResponse*::ids::delayedResponseMsgs::emplace_back
    - addExtendedDNSErrorToProtobuf
    - dnsdist::configuration::getCurrentRuntimeConfiguration
    - DNSDistProtoBufMessage::setRequestor
    - addMetaDataToProtobuf
    - std::string::clear
    - std::make_unique<InternalQueryState::ProtoBufData>
    - encrypt
    - DNSDistProtoBufMessage::serialize
    - DNSResponse*::ids::d_rawProtobufContent::end
    linkageType: ''
    returnType: DNSResponseAction::Action
    signature: DNSResponseAction::Action operator()(DNSResponse* response, std::string*
      ruleresult) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: logger::toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2031,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2032
      start: 2029
    functionDepth: 0
    functionLinenumber: 2029
    functionLinenumberEnd: 2032
    functionName: dnsdist::actions::RemoteLogResponseAction::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - logger::toString
    linkageType: ''
    returnType: std::string
    signature: std::string toString() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - response
    - ruleresult
    argTypes:
    - DNSResponse*
    - std::string*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2049
      start: 2044
    functionDepth: 0
    functionLinenumber: 2044
    functionLinenumberEnd: 2049
    functionName: operator()(DNSResponse* response, std::string* ruleresult) const
      override
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: DNSResponseAction::Action
    signature: DNSResponseAction::Action operator()(DNSResponse* response, std::string*
      ruleresult) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2053
      start: 2050
    functionDepth: 0
    functionLinenumber: 2050
    functionLinenumberEnd: 2053
    functionName: dnsdist::actions::DropResponseAction::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string toString() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - response
    - ruleresult
    argTypes:
    - DNSResponse*
    - std::string*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2064
      start: 2059
    functionDepth: 0
    functionLinenumber: 2059
    functionLinenumberEnd: 2064
    functionName: operator()(DNSResponse* response, std::string* ruleresult) const
      override
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: DNSResponseAction::Action
    signature: DNSResponseAction::Action operator()(DNSResponse* response, std::string*
      ruleresult) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2068
      start: 2065
    functionDepth: 0
    functionLinenumber: 2065
    functionLinenumberEnd: 2068
    functionName: dnsdist::actions::AllowResponseAction::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string toString() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - msec
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2077
      start: 2074
    functionDepth: 0
    functionLinenumber: 2074
    functionLinenumberEnd: 2077
    functionName: dnsdist::actions::DelayResponseAction::DelayResponseAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void DelayResponseAction(int msec)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2081,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - response
    - ruleresult
    argTypes:
    - DNSResponse*
    - std::string*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2083
      start: 2078
    functionDepth: 0
    functionLinenumber: 2078
    functionLinenumberEnd: 2083
    functionName: operator()(DNSResponse* response, std::string* ruleresult) const
      override
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - std::to_string
    linkageType: ''
    returnType: DNSResponseAction::Action
    signature: DNSResponseAction::Action operator()(DNSResponse* response, std::string*
      ruleresult) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2086,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2087
      start: 2084
    functionDepth: 0
    functionLinenumber: 2084
    functionLinenumberEnd: 2087
    functionName: dnsdist::actions::DelayResponseAction::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - std::to_string
    linkageType: ''
    returnType: std::string
    signature: std::string toString() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2098,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - reason
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2100
      start: 2097
    functionDepth: 0
    functionLinenumber: 2097
    functionLinenumberEnd: 2100
    functionName: dnsdist::actions::SNMPTrapResponseAction::SNMPTrapResponseAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void SNMPTrapResponseAction(std::string reason)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::configuration::getImmutableConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2104,1
    - Dst: sendDNSTrap
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2105,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - response
    - ruleresult
    argTypes:
    - DNSResponse*
    - std::string*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2109
      start: 2101
    functionDepth: 1
    functionLinenumber: 2101
    functionLinenumberEnd: 2109
    functionName: operator()(DNSResponse* response, std::string* ruleresult) const
      override
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - sendDNSTrap
    - dnsdist::configuration::getImmutableConfiguration
    linkageType: ''
    returnType: DNSResponseAction::Action
    signature: DNSResponseAction::Action operator()(DNSResponse* response, std::string*
      ruleresult) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2113
      start: 2110
    functionDepth: 0
    functionLinenumber: 2110
    functionLinenumberEnd: 2113
    functionName: dnsdist::actions::SNMPTrapResponseAction::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string toString() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2124,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2124,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - tag
    - value
    argTypes:
    - std::string
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2126
      start: 2123
    functionDepth: 0
    functionLinenumber: 2123
    functionLinenumberEnd: 2126
    functionName: dnsdist::actions::SetTagResponseAction::SetTagResponseAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void SetTagResponseAction(std::string tag, std::string value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSResponse*::setTag
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2130,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - response
    - ruleresult
    argTypes:
    - DNSResponse*
    - std::string*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2133
      start: 2127
    functionDepth: 1
    functionLinenumber: 2127
    functionLinenumberEnd: 2133
    functionName: operator()(DNSResponse* response, std::string* ruleresult) const
      override
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - DNSResponse*::setTag
    linkageType: ''
    returnType: DNSResponseAction::Action
    signature: DNSResponseAction::Action operator()(DNSResponse* response, std::string*
      ruleresult) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2137
      start: 2134
    functionDepth: 0
    functionLinenumber: 2134
    functionLinenumberEnd: 2137
    functionName: dnsdist::actions::SetTagResponseAction::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string toString() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2149,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - tag
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2151
      start: 2148
    functionDepth: 0
    functionLinenumber: 2148
    functionLinenumberEnd: 2151
    functionName: dnsdist::actions::UnsetTagResponseAction::UnsetTagResponseAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void UnsetTagResponseAction(std::string tag)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSResponse*::unsetTag
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2155,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - dnsresponse
    - ruleresult
    argTypes:
    - DNSResponse*
    - std::string*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2158
      start: 2152
    functionDepth: 1
    functionLinenumber: 2152
    functionLinenumberEnd: 2158
    functionName: operator()(DNSResponse* dnsresponse, std::string* ruleresult) const
      override
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - DNSResponse*::unsetTag
    linkageType: ''
    returnType: DNSResponseAction::Action
    signature: DNSResponseAction::Action operator()(DNSResponse* dnsresponse, std::string*
      ruleresult) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2162
      start: 2159
    functionDepth: 0
    functionLinenumber: 2159
    functionLinenumberEnd: 2162
    functionName: dnsdist::actions::UnsetTagResponseAction::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string toString() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2172,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - qtypes
    argTypes:
    - std::unordered_set<QType>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2174
      start: 2171
    functionDepth: 0
    functionLinenumber: 2171
    functionLinenumberEnd: 2174
    functionName: dnsdist::actions::ClearRecordTypesResponseAction::ClearRecordTypesResponseAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void ClearRecordTypesResponseAction(std::unordered_set<QType> qtypes)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2179,1
    - Dst: clearDNSPacketRecordTypes
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2180,1
    - Dst: DNSResponse*::getMutableData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2180,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - response
    - ruleresult
    argTypes:
    - DNSResponse*
    - std::string*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2183
      start: 2176
    functionDepth: 0
    functionLinenumber: 2176
    functionLinenumberEnd: 2183
    functionName: operator()(DNSResponse* response, std::string* ruleresult) const
      override
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - empty
    - clearDNSPacketRecordTypes
    - DNSResponse*::getMutableData
    linkageType: ''
    returnType: DNSResponseAction::Action
    signature: DNSResponseAction::Action operator()(DNSResponse* response, std::string*
      ruleresult) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2188
      start: 2185
    functionDepth: 0
    functionLinenumber: 2185
    functionLinenumberEnd: 2188
    functionName: dnsdist::actions::ClearRecordTypesResponseAction::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string toString() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' action'
    argTypes:
    - std::shared_ptr<DNSAction>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2201
      start: 2198
    functionDepth: 0
    functionLinenumber: 2198
    functionLinenumberEnd: 2201
    functionName: dnsdist::actions::ContinueAction::ContinueAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ContinueAction(std::shared_ptr<DNSAction>& action)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: processRulesResult
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2211,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - dnsquestion
    - ruleresult
    argTypes:
    - DNSQuestion*
    - std::string*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2216
      start: 2203
    functionDepth: 0
    functionLinenumber: 2203
    functionLinenumberEnd: 2216
    functionName: operator()(DNSQuestion* dnsquestion, std::string* ruleresult) const
      override
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - processRulesResult
    linkageType: ''
    returnType: DNSAction::Action
    signature: DNSAction::Action operator()(DNSQuestion* dnsquestion, std::string*
      ruleresult) const override
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::actions::ContinueAction::toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2221,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2224
      start: 2218
    functionDepth: 0
    functionLinenumber: 2218
    functionLinenumberEnd: 2224
    functionName: dnsdist::actions::ContinueAction::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 2
    functionsReached:
    - dnsdist::actions::ContinueAction::toString
    linkageType: ''
    returnType: std::string
    signature: std::string toString() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2235,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2235,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 4
    argNames:
    - code
    - body
    - contentType
    - ' responseConfig'
    argTypes:
    - uint16_t
    - PacketBuffer
    - std::string
    - dnsdist::ResponseConfig
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2237
      start: 2234
    functionDepth: 0
    functionLinenumber: 2234
    functionLinenumberEnd: 2237
    functionName: dnsdist::actions::HTTPStatusAction::HTTPStatusAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void HTTPStatusAction(uint16_t code, PacketBuffer body, std::string
      contentType, const dnsdist::ResponseConfig& responseConfig)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: DNSQuestion*::ids::du::setHTTPResponse
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2244,1
    - Dst: PacketBuffer
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2244,1
    - Dst: dnsdist::PacketMangling::editDNSHeaderFromPacket
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2245,1
    - Dst: DNSQuestion*::getMutableData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2245,1
    - Dst: setResponseHeadersFromConfig
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2247,1
    - Dst: DNSQuestion*::ids::doh3u::setHTTPResponse
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2255,1
    - Dst: PacketBuffer
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2255,1
    - Dst: dnsdist::PacketMangling::editDNSHeaderFromPacket
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2256,1
    - Dst: DNSQuestion*::getMutableData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2256,1
    - Dst: setResponseHeadersFromConfig
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2258,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 21
    argCount: 2
    argNames:
    - dnsquestion
    - ruleresult
    argTypes:
    - DNSQuestion*
    - std::string*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2265
      start: 2239
    functionDepth: 1
    functionLinenumber: 2239
    functionLinenumberEnd: 2265
    functionName: operator()([[maybe_unused]] DNSQuestion* dnsquestion, std::string*
      ruleresult) const override
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - DNSQuestion*::ids::du::setHTTPResponse
    - setResponseHeadersFromConfig
    - PacketBuffer
    - DNSQuestion*::ids::doh3u::setHTTPResponse
    - dnsdist::PacketMangling::editDNSHeaderFromPacket
    - DNSQuestion*::getMutableData
    linkageType: ''
    returnType: DNSAction::Action
    signature: DNSAction::Action operator()([[maybe_unused]] DNSQuestion* dnsquestion,
      std::string* ruleresult) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2269,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2270
      start: 2267
    functionDepth: 0
    functionLinenumber: 2267
    functionLinenumberEnd: 2270
    functionName: dnsdist::actions::HTTPStatusAction::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - std::to_string
    linkageType: ''
    returnType: std::string
    signature: std::string toString() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2286,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 3
    argNames:
    - ' kvs'
    - ' lookupKey'
    - destinationTag
    argTypes:
    - std::shared_ptr<KeyValueStore>
    - std::shared_ptr<KeyValueLookupKey>
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2288
      start: 2285
    functionDepth: 0
    functionLinenumber: 2285
    functionLinenumberEnd: 2288
    functionName: dnsdist::actions::KeyValueStoreLookupAction::KeyValueStoreLookupAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void KeyValueStoreLookupAction(std::shared_ptr<KeyValueStore>& kvs,
      std::shared_ptr<KeyValueLookupKey>& lookupKey, std::string destinationTag)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: getKeys
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2293,1
    - Dst: getValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2296,1
    - Dst: DNSQuestion*::setTag
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2301,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2301,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - dnsquestion
    - ruleresult
    argTypes:
    - DNSQuestion*
    - std::string*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2304
      start: 2290
    functionDepth: 1
    functionLinenumber: 2290
    functionLinenumberEnd: 2304
    functionName: operator()(DNSQuestion* dnsquestion, std::string* ruleresult) const
      override
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - std::move
    - getValue
    - getKeys
    - DNSQuestion*::setTag
    linkageType: ''
    returnType: DNSAction::Action
    signature: DNSAction::Action operator()(DNSQuestion* dnsquestion, std::string*
      ruleresult) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::actions::KeyValueStoreLookupAction::toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2308,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2309
      start: 2306
    functionDepth: 0
    functionLinenumber: 2306
    functionLinenumberEnd: 2309
    functionName: dnsdist::actions::KeyValueStoreLookupAction::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 2
    functionsReached:
    - dnsdist::actions::KeyValueStoreLookupAction::toString
    linkageType: ''
    returnType: std::string
    signature: std::string toString() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2322,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 3
    argNames:
    - ' kvs'
    - ' lookupKey'
    - destinationTag
    argTypes:
    - std::shared_ptr<KeyValueStore>
    - std::shared_ptr<KeyValueLookupKey>
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2324
      start: 2321
    functionDepth: 0
    functionLinenumber: 2321
    functionLinenumberEnd: 2324
    functionName: dnsdist::actions::KeyValueStoreRangeLookupAction::KeyValueStoreRangeLookupAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void KeyValueStoreRangeLookupAction(std::shared_ptr<KeyValueStore>&
      kvs, std::shared_ptr<KeyValueLookupKey>& lookupKey, std::string destinationTag)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: getKeys
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2329,1
    - Dst: getRangeValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2332,1
    - Dst: DNSQuestion*::setTag
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2337,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2337,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - dnsquestion
    - ruleresult
    argTypes:
    - DNSQuestion*
    - std::string*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2340
      start: 2326
    functionDepth: 1
    functionLinenumber: 2326
    functionLinenumberEnd: 2340
    functionName: operator()(DNSQuestion* dnsquestion, std::string* ruleresult) const
      override
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - getRangeValue
    - std::move
    - getKeys
    - DNSQuestion*::setTag
    linkageType: ''
    returnType: DNSAction::Action
    signature: DNSAction::Action operator()(DNSQuestion* dnsquestion, std::string*
      ruleresult) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::actions::KeyValueStoreRangeLookupAction::toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2344,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2345
      start: 2342
    functionDepth: 0
    functionLinenumber: 2342
    functionLinenumberEnd: 2345
    functionName: dnsdist::actions::KeyValueStoreRangeLookupAction::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 2
    functionsReached:
    - dnsdist::actions::KeyValueStoreRangeLookupAction::toString
    linkageType: ''
    returnType: std::string
    signature: std::string toString() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - cap
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2360
      start: 2357
    functionDepth: 0
    functionLinenumber: 2357
    functionLinenumberEnd: 2360
    functionName: dnsdist::actions::SetMaxReturnedTTLAction::SetMaxReturnedTTLAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void SetMaxReturnedTTLAction(uint32_t cap)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - dnsquestion
    - ruleresult
    argTypes:
    - DNSQuestion*
    - std::string*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2367
      start: 2362
    functionDepth: 0
    functionLinenumber: 2362
    functionLinenumberEnd: 2367
    functionName: operator()(DNSQuestion* dnsquestion, std::string* ruleresult) const
      override
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: DNSAction::Action
    signature: DNSAction::Action operator()(DNSQuestion* dnsquestion, std::string*
      ruleresult) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2371,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2372
      start: 2369
    functionDepth: 0
    functionLinenumber: 2369
    functionLinenumberEnd: 2372
    functionName: dnsdist::actions::SetMaxReturnedTTLAction::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - std::to_string
    linkageType: ''
    returnType: std::string
    signature: std::string toString() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - cap
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2384
      start: 2381
    functionDepth: 0
    functionLinenumber: 2381
    functionLinenumberEnd: 2384
    functionName: dnsdist::actions::SetMaxReturnedTTLResponseAction::SetMaxReturnedTTLResponseAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void SetMaxReturnedTTLResponseAction(uint32_t cap)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - response
    - ruleresult
    argTypes:
    - DNSResponse*
    - std::string*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2391
      start: 2386
    functionDepth: 0
    functionLinenumber: 2386
    functionLinenumberEnd: 2391
    functionName: operator()(DNSResponse* response, std::string* ruleresult) const
      override
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: DNSResponseAction::Action
    signature: DNSResponseAction::Action operator()(DNSResponse* response, std::string*
      ruleresult) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2395,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2396
      start: 2393
    functionDepth: 0
    functionLinenumber: 2393
    functionLinenumberEnd: 2396
    functionName: dnsdist::actions::SetMaxReturnedTTLResponseAction::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - std::to_string
    linkageType: ''
    returnType: std::string
    signature: std::string toString() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2406,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2406,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2406,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 8
    argNames:
    - nxd
    - zone
    - ttl
    - mname
    - rname
    - params
    - soaInAuthoritySection
    - responseConfig
    argTypes:
    - bool
    - DNSName
    - uint32_t
    - DNSName
    - DNSName
    - dnsdist::actions::SOAParams
    - bool
    - dnsdist::ResponseConfig
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2408
      start: 2405
    functionDepth: 0
    functionLinenumber: 2405
    functionLinenumberEnd: 2408
    functionName: dnsdist::actions::NegativeAndSOAAction::NegativeAndSOAAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void NegativeAndSOAAction(bool nxd, DNSName zone, uint32_t ttl, DNSName
      mname, DNSName rname, dnsdist::actions::SOAParams params, bool soaInAuthoritySection,
      dnsdist::ResponseConfig responseConfig)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: setNegativeAndAdditionalSOA
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2413,1
    - Dst: dnsdist::PacketMangling::editDNSHeaderFromPacket
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2417,1
    - Dst: DNSQuestion*::getMutableData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2417,1
    - Dst: setResponseHeadersFromConfig
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2418,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - dnsquestion
    - ruleresult
    argTypes:
    - DNSQuestion*
    - std::string*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2423
      start: 2410
    functionDepth: 1
    functionLinenumber: 2410
    functionLinenumberEnd: 2423
    functionName: operator()(DNSQuestion* dnsquestion, std::string* ruleresult) const
      override
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - setResponseHeadersFromConfig
    - DNSQuestion*::getMutableData
    - dnsdist::PacketMangling::editDNSHeaderFromPacket
    - setNegativeAndAdditionalSOA
    linkageType: ''
    returnType: DNSAction::Action
    signature: DNSAction::Action operator()(DNSQuestion* dnsquestion, std::string*
      ruleresult) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2427,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2428
      start: 2425
    functionDepth: 0
    functionLinenumber: 2425
    functionLinenumberEnd: 2428
    functionName: dnsdist::actions::NegativeAndSOAAction::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - std::string
    linkageType: ''
    returnType: std::string
    signature: std::string toString() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: reserve
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2447,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2447,1
    - Dst: push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2449,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ' values'
    argTypes:
    - std::vector<std::pair<uint8_t, std::string>>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2451
      start: 2445
    functionDepth: 0
    functionLinenumber: 2445
    functionLinenumberEnd: 2451
    functionName: dnsdist::actions::SetProxyProtocolValuesAction::SetProxyProtocolValuesAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - push_back
    - reserve
    - size
    linkageType: ''
    returnType: void
    signature: void SetProxyProtocolValuesAction(const std::vector<std::pair<uint8_t,
      std::string>>& values)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: make_unique<std::vector<ProxyProtocolValue>>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2457,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - dnsquestion
    - ruleresult
    argTypes:
    - DNSQuestion*
    - std::string*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2463
      start: 2453
    functionDepth: 0
    functionLinenumber: 2453
    functionLinenumberEnd: 2463
    functionName: operator()(DNSQuestion* dnsquestion, std::string* ruleresult) const
      override
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - make_unique<std::vector<ProxyProtocolValue>>
    linkageType: ''
    returnType: DNSAction::Action
    signature: DNSAction::Action operator()(DNSQuestion* dnsquestion, std::string*
      ruleresult) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2468
      start: 2465
    functionDepth: 0
    functionLinenumber: 2465
    functionLinenumberEnd: 2468
    functionName: dnsdist::actions::SetProxyProtocolValuesAction::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string toString() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2479,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - type
    - value
    argTypes:
    - uint8_t
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2481
      start: 2478
    functionDepth: 0
    functionLinenumber: 2478
    functionLinenumberEnd: 2481
    functionName: dnsdist::actions::SetAdditionalProxyProtocolValueAction::SetAdditionalProxyProtocolValueAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void SetAdditionalProxyProtocolValueAction(uint8_t type, std::string
      value)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: make_unique<std::vector<ProxyProtocolValue>>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2487,1
    - Dst: DNSQuestion*::proxyProtocolValues::push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2490,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - dnsquestion
    - ruleresult
    argTypes:
    - DNSQuestion*
    - std::string*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2493
      start: 2483
    functionDepth: 0
    functionLinenumber: 2483
    functionLinenumberEnd: 2493
    functionName: operator()(DNSQuestion* dnsquestion, std::string* ruleresult) const
      override
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - make_unique<std::vector<ProxyProtocolValue>>
    - DNSQuestion*::proxyProtocolValues::push_back
    linkageType: ''
    returnType: DNSAction::Action
    signature: DNSAction::Action operator()(DNSQuestion* dnsquestion, std::string*
      ruleresult) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2497,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2498
      start: 2495
    functionDepth: 0
    functionLinenumber: 2495
    functionLinenumberEnd: 2498
    functionName: dnsdist::actions::SetAdditionalProxyProtocolValueAction::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - std::to_string
    linkageType: ''
    returnType: std::string
    signature: std::string toString() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - percentage
    argTypes:
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2512
      start: 2509
    functionDepth: 0
    functionLinenumber: 2509
    functionLinenumberEnd: 2512
    functionName: dnsdist::actions::SetReducedTTLResponseAction::SetReducedTTLResponseAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void SetReducedTTLResponseAction(uint8_t percentage)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: editDNSPacketTTL
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2525,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2525,1
    - Dst: DNSResponse*::getMutableData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2525,1
    - Dst: DNSResponse*::getData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2525,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 2
    argNames:
    - response
    - ruleresult
    argTypes:
    - DNSResponse*
    - std::string*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2527
      start: 2514
    functionDepth: 0
    functionLinenumber: 2514
    functionLinenumberEnd: 2527
    functionName: operator()(DNSResponse* response, std::string* ruleresult) const
      override
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - reinterpret_cast<char*>
    - DNSResponse*::getData
    - editDNSPacketTTL
    - DNSResponse*::getMutableData
    linkageType: ''
    returnType: DNSResponseAction::Action
    signature: DNSResponseAction::Action operator()(DNSResponse* response, std::string*
      ruleresult) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2531,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2532
      start: 2529
    functionDepth: 0
    functionLinenumber: 2529
    functionLinenumberEnd: 2532
    functionName: dnsdist::actions::SetReducedTTLResponseAction::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - std::to_string
    linkageType: ''
    returnType: std::string
    signature: std::string toString() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - infoCode
    - ' extraText'
    - clearExistingEntries
    argTypes:
    - uint16_t
    - std::string
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2547
      start: 2542
    functionDepth: 0
    functionLinenumber: 2542
    functionLinenumberEnd: 2547
    functionName: dnsdist::actions::SetExtendedDNSErrorAction::SetExtendedDNSErrorAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void SetExtendedDNSErrorAction(uint16_t infoCode, const std::string&
      extraText, bool clearExistingEntries)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: std::make_unique<std::vector<edns::SetExtendedDNSErrorOperation>>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2553,1
    - Dst: std::initializer_list<edns::SetExtendedDNSErrorOperation>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2553,1
    - Dst: std::make_unique<std::vector<edns::SetExtendedDNSErrorOperation>>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2557,1
    - Dst: std::initializer_list<edns::SetExtendedDNSErrorOperation>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2557,1
    - Dst: DNSQuestion*::ids::d_extendedErrors::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2560,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 2
    argNames:
    - dnsQuestion
    - ruleresult
    argTypes:
    - DNSQuestion*
    - std::string*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2565
      start: 2549
    functionDepth: 0
    functionLinenumber: 2549
    functionLinenumberEnd: 2565
    functionName: operator()(DNSQuestion* dnsQuestion, std::string* ruleresult) const
      override
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - DNSQuestion*::ids::d_extendedErrors::emplace_back
    - std::initializer_list<edns::SetExtendedDNSErrorOperation>
    - std::make_unique<std::vector<edns::SetExtendedDNSErrorOperation>>
    linkageType: ''
    returnType: DNSAction::Action
    signature: DNSAction::Action operator()(DNSQuestion* dnsQuestion, std::string*
      ruleresult) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2569,1
    - Dst: error::extraText::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2569,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2569,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2569,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2569,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2570
      start: 2567
    functionDepth: 0
    functionLinenumber: 2567
    functionLinenumberEnd: 2570
    functionName: dnsdist::actions::SetExtendedDNSErrorAction::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - error::extraText::empty
    - std::string
    - std::to_string
    linkageType: ''
    returnType: std::string
    signature: std::string toString() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - infoCode
    - ' extraText'
    - clearExistingEntries
    argTypes:
    - uint16_t
    - std::string
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2585
      start: 2580
    functionDepth: 0
    functionLinenumber: 2580
    functionLinenumberEnd: 2585
    functionName: dnsdist::actions::SetExtendedDNSErrorResponseAction::SetExtendedDNSErrorResponseAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void SetExtendedDNSErrorResponseAction(uint16_t infoCode, const std::string&
      extraText, bool clearExistingEntries)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: std::make_unique<std::vector<edns::SetExtendedDNSErrorOperation>>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2591,1
    - Dst: std::initializer_list<edns::SetExtendedDNSErrorOperation>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2591,1
    - Dst: std::make_unique<std::vector<edns::SetExtendedDNSErrorOperation>>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2595,1
    - Dst: std::initializer_list<edns::SetExtendedDNSErrorOperation>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2595,1
    - Dst: DNSResponse*::ids::d_extendedErrors::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2598,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 2
    argNames:
    - dnsResponse
    - ruleresult
    argTypes:
    - DNSResponse*
    - std::string*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2603
      start: 2587
    functionDepth: 0
    functionLinenumber: 2587
    functionLinenumberEnd: 2603
    functionName: operator()(DNSResponse* dnsResponse, std::string* ruleresult) const
      override
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - DNSResponse*::ids::d_extendedErrors::emplace_back
    - std::initializer_list<edns::SetExtendedDNSErrorOperation>
    - std::make_unique<std::vector<edns::SetExtendedDNSErrorOperation>>
    linkageType: ''
    returnType: DNSResponseAction::Action
    signature: DNSResponseAction::Action operator()(DNSResponse* dnsResponse, std::string*
      ruleresult) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2607,1
    - Dst: error::extraText::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2607,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2607,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2607,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2607,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2608
      start: 2605
    functionDepth: 0
    functionLinenumber: 2605
    functionLinenumberEnd: 2608
    functionName: dnsdist::actions::SetExtendedDNSErrorResponseAction::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - error::extraText::empty
    - std::string
    - std::to_string
    linkageType: ''
    returnType: std::string
    signature: std::string toString() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2617,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2618,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - min
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2620
      start: 2617
    functionDepth: 0
    functionLinenumber: 2617
    functionLinenumberEnd: 2620
    functionName: dnsdist::actions::LimitTTLResponseAction::LimitTTLResponseAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - pdns::max
    - std::move
    linkageType: ''
    returnType: void
    signature: void LimitTTLResponseAction(uint32_t min, uint32_t max = std::numeric_limits<uint32_t>::max(),
      std::unordered_set<QType> types = {})
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::PacketMangling::restrictDNSPacketTTLs
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2625,1
    - Dst: DNSResponse*::getMutableData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2625,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - dnsResponse
    - ruleresult
    argTypes:
    - DNSResponse*
    - std::string*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2627
      start: 2622
    functionDepth: 1
    functionLinenumber: 2622
    functionLinenumberEnd: 2627
    functionName: operator()(DNSResponse* dnsResponse, std::string* ruleresult) const
      override
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - dnsdist::PacketMangling::restrictDNSPacketTTLs
    - DNSResponse*::getMutableData
    linkageType: ''
    returnType: DNSResponseAction::Action
    signature: DNSResponseAction::Action operator()(DNSResponse* dnsResponse, std::string*
      ruleresult) const override
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2631,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2631,1
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2632,1
    - Dst: dnsdist::actions::LimitTTLResponseAction::toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2642,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2648
      start: 2629
    functionDepth: 0
    functionLinenumber: 2629
    functionLinenumberEnd: 2648
    functionName: dnsdist::actions::LimitTTLResponseAction::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 2
    functionsReached:
    - empty
    - dnsdist::actions::LimitTTLResponseAction::toString
    - std::to_string
    linkageType: ''
    returnType: std::string
    signature: std::string toString() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::shared_ptr<DNSAction>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2658,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2658,1
    - Dst: LuaAction::LuaAction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2658,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - function
    argTypes:
    - dnsdist::actions::LuaActionFunction
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2659
      start: 2656
    functionDepth: 0
    functionLinenumber: 2656
    functionLinenumberEnd: 2659
    functionName: dnsdist::actions::getLuaAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - LuaAction::LuaAction
    - std::move
    - std::shared_ptr<DNSAction>
    linkageType: ''
    returnType: std::shared_ptr<DNSAction>
    signature: std::shared_ptr<DNSAction> getLuaAction(dnsdist::actions::LuaActionFunction
      function)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::shared_ptr<DNSAction>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2663,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2663,1
    - Dst: LuaFFIAction::LuaFFIAction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2663,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - function
    argTypes:
    - dnsdist::actions::LuaActionFFIFunction
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2664
      start: 2661
    functionDepth: 0
    functionLinenumber: 2661
    functionLinenumberEnd: 2664
    functionName: dnsdist::actions::getLuaFFIAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - std::move
    - LuaFFIAction::LuaFFIAction
    - std::shared_ptr<DNSAction>
    linkageType: ''
    returnType: std::shared_ptr<DNSAction>
    signature: std::shared_ptr<DNSAction> getLuaFFIAction(dnsdist::actions::LuaActionFFIFunction
      function)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::shared_ptr<DNSResponseAction>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2668,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2668,1
    - Dst: LuaResponseAction::LuaResponseAction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2668,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - function
    argTypes:
    - dnsdist::actions::LuaResponseActionFunction
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2669
      start: 2666
    functionDepth: 0
    functionLinenumber: 2666
    functionLinenumberEnd: 2669
    functionName: dnsdist::actions::getLuaResponseAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - std::move
    - std::shared_ptr<DNSResponseAction>
    - LuaResponseAction::LuaResponseAction
    linkageType: ''
    returnType: std::shared_ptr<DNSResponseAction>
    signature: std::shared_ptr<DNSResponseAction> getLuaResponseAction(dnsdist::actions::LuaResponseActionFunction
      function)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::shared_ptr<DNSResponseAction>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2673,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2673,1
    - Dst: LuaFFIResponseAction::LuaFFIResponseAction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2673,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - function
    argTypes:
    - dnsdist::actions::LuaResponseActionFFIFunction
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2674
      start: 2671
    functionDepth: 0
    functionLinenumber: 2671
    functionLinenumberEnd: 2674
    functionName: dnsdist::actions::getLuaFFIResponseAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - LuaFFIResponseAction::LuaFFIResponseAction
    - std::move
    - std::shared_ptr<DNSResponseAction>
    linkageType: ''
    returnType: std::shared_ptr<DNSResponseAction>
    signature: std::shared_ptr<DNSResponseAction> getLuaFFIResponseAction(dnsdist::actions::LuaResponseActionFFIFunction
      function)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::shared_ptr<DNSAction>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2679,1
    - Dst: SetTraceAction::SetTraceAction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2679,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' config'
    argTypes:
    - SetTraceActionConfiguration
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2680
      start: 2677
    functionDepth: 0
    functionLinenumber: 2677
    functionLinenumberEnd: 2680
    functionName: dnsdist::actions::getSetTraceAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - SetTraceAction::SetTraceAction
    - std::shared_ptr<DNSAction>
    linkageType: ''
    returnType: std::shared_ptr<DNSAction>
    signature: std::shared_ptr<DNSAction> getSetTraceAction(SetTraceActionConfiguration&
      config)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::shared_ptr<DNSAction>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2684,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2684,1
    - Dst: RemoteLogAction::RemoteLogAction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2684,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - ' config'
    argTypes:
    - RemoteLogActionConfiguration
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2685
      start: 2682
    functionDepth: 0
    functionLinenumber: 2682
    functionLinenumberEnd: 2685
    functionName: dnsdist::actions::getRemoteLogAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - std::move
    - RemoteLogAction::RemoteLogAction
    - std::shared_ptr<DNSAction>
    linkageType: ''
    returnType: std::shared_ptr<DNSAction>
    signature: std::shared_ptr<DNSAction> getRemoteLogAction(RemoteLogActionConfiguration&&
      config)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::shared_ptr<DNSResponseAction>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2689,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2689,1
    - Dst: RemoteLogResponseAction::RemoteLogResponseAction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2689,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - ' config'
    argTypes:
    - RemoteLogActionConfiguration
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2690
      start: 2687
    functionDepth: 0
    functionLinenumber: 2687
    functionLinenumberEnd: 2690
    functionName: dnsdist::actions::getRemoteLogResponseAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - RemoteLogResponseAction::RemoteLogResponseAction
    - std::move
    - std::shared_ptr<DNSResponseAction>
    linkageType: ''
    returnType: std::shared_ptr<DNSResponseAction>
    signature: std::shared_ptr<DNSResponseAction> getRemoteLogResponseAction(RemoteLogActionConfiguration&&
      config)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::shared_ptr<DNSAction>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2694,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2694,1
    - Dst: DnstapLogAction::DnstapLogAction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2694,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' identity'
    - logger
    - alterFunc
    argTypes:
    - std::string
    - std::shared_ptr<RemoteLoggerInterface>
    - std::optional<DnstapAlterFunction>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2695
      start: 2692
    functionDepth: 0
    functionLinenumber: 2692
    functionLinenumberEnd: 2695
    functionName: dnsdist::actions::getDnstapLogAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - std::move
    - DnstapLogAction::DnstapLogAction
    - std::shared_ptr<DNSAction>
    linkageType: ''
    returnType: std::shared_ptr<DNSAction>
    signature: std::shared_ptr<DNSAction> getDnstapLogAction(const std::string& identity,
      std::shared_ptr<RemoteLoggerInterface> logger, std::optional<DnstapAlterFunction>
      alterFunc)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::shared_ptr<DNSResponseAction>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2699,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2699,1
    - Dst: DnstapLogResponseAction::DnstapLogResponseAction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2699,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' identity'
    - logger
    - alterFunc
    argTypes:
    - std::string
    - std::shared_ptr<RemoteLoggerInterface>
    - std::optional<DnstapAlterResponseFunction>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2700
      start: 2697
    functionDepth: 0
    functionLinenumber: 2697
    functionLinenumberEnd: 2700
    functionName: dnsdist::actions::getDnstapLogResponseAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - std::move
    - std::shared_ptr<DNSResponseAction>
    - DnstapLogResponseAction::DnstapLogResponseAction
    linkageType: ''
    returnType: std::shared_ptr<DNSResponseAction>
    signature: std::shared_ptr<DNSResponseAction> getDnstapLogResponseAction(const
      std::string& identity, std::shared_ptr<RemoteLoggerInterface> logger, std::optional<DnstapAlterResponseFunction>
      alterFunc)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::shared_ptr<DNSAction>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2706,1
    - Dst: KeyValueStoreLookupAction::KeyValueStoreLookupAction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2706,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' kvs'
    - ' lookupKey'
    - ' destinationTag'
    argTypes:
    - std::shared_ptr<KeyValueStore>
    - std::shared_ptr<KeyValueLookupKey>
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2707
      start: 2704
    functionDepth: 0
    functionLinenumber: 2704
    functionLinenumberEnd: 2707
    functionName: dnsdist::actions::getKeyValueStoreLookupAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - KeyValueStoreLookupAction::KeyValueStoreLookupAction
    - std::shared_ptr<DNSAction>
    linkageType: ''
    returnType: std::shared_ptr<DNSAction>
    signature: std::shared_ptr<DNSAction> getKeyValueStoreLookupAction(std::shared_ptr<KeyValueStore>&
      kvs, std::shared_ptr<KeyValueLookupKey>& lookupKey, const std::string& destinationTag)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::shared_ptr<DNSAction>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2711,1
    - Dst: KeyValueStoreRangeLookupAction::KeyValueStoreRangeLookupAction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2711,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' kvs'
    - ' lookupKey'
    - ' destinationTag'
    argTypes:
    - std::shared_ptr<KeyValueStore>
    - std::shared_ptr<KeyValueLookupKey>
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2712
      start: 2709
    functionDepth: 0
    functionLinenumber: 2709
    functionLinenumberEnd: 2712
    functionName: dnsdist::actions::getKeyValueStoreRangeLookupAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - KeyValueStoreRangeLookupAction::KeyValueStoreRangeLookupAction
    - std::shared_ptr<DNSAction>
    linkageType: ''
    returnType: std::shared_ptr<DNSAction>
    signature: std::shared_ptr<DNSAction> getKeyValueStoreRangeLookupAction(std::shared_ptr<KeyValueStore>&
      kvs, std::shared_ptr<KeyValueLookupKey>& lookupKey, const std::string& destinationTag)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::shared_ptr<DNSAction>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2718,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2718,1
    - Dst: HTTPStatusAction::HTTPStatusAction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2718,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2720,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 3
    argCount: 4
    argNames:
    - status
    - ' body'
    - ' contentType'
    - ' responseConfig'
    argTypes:
    - uint16_t
    - PacketBuffer
    - std::string
    - dnsdist::ResponseConfig
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2722
      start: 2715
    functionDepth: 0
    functionLinenumber: 2715
    functionLinenumberEnd: 2722
    functionName: dnsdist::actions::getHTTPStatusAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - HTTPStatusAction::HTTPStatusAction
    - std::runtime_error
    - std::move
    - std::shared_ptr<DNSAction>
    linkageType: ''
    returnType: std::shared_ptr<DNSAction>
    signature: std::shared_ptr<DNSAction> getHTTPStatusAction([[maybe_unused]] uint16_t
      status, [[maybe_unused]] PacketBuffer&& body, [[maybe_unused]] const std::string&
      contentType, [[maybe_unused]] const dnsdist::ResponseConfig& responseConfig)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::shared_ptr<DNSResponseAction>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2726,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2726,1
    - Dst: LimitTTLResponseAction::LimitTTLResponseAction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2726,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - min
    - max
    - types
    argTypes:
    - uint32_t
    - uint32_t
    - std::unordered_set<QType>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2727
      start: 2724
    functionDepth: 0
    functionLinenumber: 2724
    functionLinenumberEnd: 2727
    functionName: dnsdist::actions::getLimitTTLResponseAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - std::move
    - LimitTTLResponseAction::LimitTTLResponseAction
    - std::shared_ptr<DNSResponseAction>
    linkageType: ''
    returnType: std::shared_ptr<DNSResponseAction>
    signature: std::shared_ptr<DNSResponseAction> getLimitTTLResponseAction(uint32_t
      min, uint32_t max, std::unordered_set<QType> types)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::shared_ptr<DNSResponseAction>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2731,1
    - Dst: LimitTTLResponseAction::LimitTTLResponseAction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2731,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - min
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2732
      start: 2729
    functionDepth: 0
    functionLinenumber: 2729
    functionLinenumberEnd: 2732
    functionName: dnsdist::actions::getMinTTLResponseAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - LimitTTLResponseAction::LimitTTLResponseAction
    - std::shared_ptr<DNSResponseAction>
    linkageType: ''
    returnType: std::shared_ptr<DNSResponseAction>
    signature: std::shared_ptr<DNSResponseAction> getMinTTLResponseAction(uint32_t
      min)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::shared_ptr<DNSResponseAction>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2736,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2736,1
    - Dst: ClearRecordTypesResponseAction::ClearRecordTypesResponseAction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2736,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - types
    argTypes:
    - std::unordered_set<QType>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2737
      start: 2734
    functionDepth: 0
    functionLinenumber: 2734
    functionLinenumberEnd: 2737
    functionName: dnsdist::actions::getClearRecordTypesResponseAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - ClearRecordTypesResponseAction::ClearRecordTypesResponseAction
    - std::move
    - std::shared_ptr<DNSResponseAction>
    linkageType: ''
    returnType: std::shared_ptr<DNSResponseAction>
    signature: std::shared_ptr<DNSResponseAction> getClearRecordTypesResponseAction(std::unordered_set<QType>
      types)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::shared_ptr<DNSAction>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2741,1
    - Dst: ContinueAction::ContinueAction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2741,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - action
    argTypes:
    - std::shared_ptr<DNSAction>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2742
      start: 2739
    functionDepth: 0
    functionLinenumber: 2739
    functionLinenumberEnd: 2742
    functionName: dnsdist::actions::getContinueAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - ContinueAction::ContinueAction
    - std::shared_ptr<DNSAction>
    linkageType: ''
    returnType: std::shared_ptr<DNSAction>
    signature: std::shared_ptr<DNSAction> getContinueAction(std::shared_ptr<DNSAction>
      action)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::shared_ptr<DNSAction>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2746,1
    - Dst: NegativeAndSOAAction::NegativeAndSOAAction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2746,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 8
    argNames:
    - nxd
    - ' zone'
    - ttl
    - ' mname'
    - ' rname'
    - ' params'
    - soaInAuthority
    - responseConfig
    argTypes:
    - bool
    - DNSName
    - uint32_t
    - DNSName
    - DNSName
    - SOAParams
    - bool
    - dnsdist::ResponseConfig
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2747
      start: 2744
    functionDepth: 0
    functionLinenumber: 2744
    functionLinenumberEnd: 2747
    functionName: dnsdist::actions::getNegativeAndSOAAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - NegativeAndSOAAction::NegativeAndSOAAction
    - std::shared_ptr<DNSAction>
    linkageType: ''
    returnType: std::shared_ptr<DNSAction>
    signature: std::shared_ptr<DNSAction> getNegativeAndSOAAction(bool nxd, const
      DNSName& zone, uint32_t ttl, const DNSName& mname, const DNSName& rname, const
      SOAParams& params, bool soaInAuthority, dnsdist::ResponseConfig responseConfig)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::shared_ptr<DNSAction>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2751,1
    - Dst: RCodeAction::RCodeAction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2751,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - rcode
    - ' responseConfig'
    argTypes:
    - uint8_t
    - dnsdist::ResponseConfig
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2752
      start: 2749
    functionDepth: 0
    functionLinenumber: 2749
    functionLinenumberEnd: 2752
    functionName: dnsdist::actions::getRCodeAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - RCodeAction::RCodeAction
    - std::shared_ptr<DNSAction>
    linkageType: ''
    returnType: std::shared_ptr<DNSAction>
    signature: std::shared_ptr<DNSAction> getRCodeAction(uint8_t rcode, const dnsdist::ResponseConfig&
      responseConfig)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::shared_ptr<DNSAction>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2756,1
    - Dst: ERCodeAction::ERCodeAction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2756,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - rcode
    - ' responseConfig'
    argTypes:
    - uint8_t
    - dnsdist::ResponseConfig
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2757
      start: 2754
    functionDepth: 0
    functionLinenumber: 2754
    functionLinenumberEnd: 2757
    functionName: dnsdist::actions::getERCodeAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - ERCodeAction::ERCodeAction
    - std::shared_ptr<DNSAction>
    linkageType: ''
    returnType: std::shared_ptr<DNSAction>
    signature: std::shared_ptr<DNSAction> getERCodeAction(uint8_t rcode, const dnsdist::ResponseConfig&
      responseConfig)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::shared_ptr<DNSAction>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2761,1
    - Dst: Netmask
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2761,1
    - Dst: SetECSAction::SetECSAction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2761,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' ipv4'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2762
      start: 2759
    functionDepth: 0
    functionLinenumber: 2759
    functionLinenumberEnd: 2762
    functionName: dnsdist::actions::getSetECSAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - SetECSAction::SetECSAction
    - Netmask
    - std::shared_ptr<DNSAction>
    linkageType: ''
    returnType: std::shared_ptr<DNSAction>
    signature: std::shared_ptr<DNSAction> getSetECSAction(const std::string& ipv4)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::shared_ptr<DNSAction>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2766,1
    - Dst: Netmask
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2766,1
    - Dst: Netmask
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2766,1
    - Dst: SetECSAction::SetECSAction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2766,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' ipv4'
    - ' ipv6'
    argTypes:
    - std::string
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2767
      start: 2764
    functionDepth: 0
    functionLinenumber: 2764
    functionLinenumberEnd: 2767
    functionName: dnsdist::actions::getSetECSAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - SetECSAction::SetECSAction
    - Netmask
    - std::shared_ptr<DNSAction>
    linkageType: ''
    returnType: std::shared_ptr<DNSAction>
    signature: std::shared_ptr<DNSAction> getSetECSAction(const std::string& ipv4,
      const std::string& ipv6)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::shared_ptr<DNSAction>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2771,1
    - Dst: SpoofAction::SpoofAction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2771,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' addresses'
    - ' config'
    argTypes:
    - std::vector<ComboAddress>
    - dnsdist::ResponseConfig
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2772
      start: 2769
    functionDepth: 0
    functionLinenumber: 2769
    functionLinenumberEnd: 2772
    functionName: dnsdist::actions::getSpoofAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - SpoofAction::SpoofAction
    - std::shared_ptr<DNSAction>
    linkageType: ''
    returnType: std::shared_ptr<DNSAction>
    signature: std::shared_ptr<DNSAction> getSpoofAction(const std::vector<ComboAddress>&
      addresses, const dnsdist::ResponseConfig& config)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::shared_ptr<DNSAction>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2776,1
    - Dst: SpoofAction::SpoofAction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2776,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' rawRDatas'
    - qtypeForAny
    - ' config'
    argTypes:
    - std::vector<std::string>
    - std::optional<uint16_t>
    - dnsdist::ResponseConfig
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2777
      start: 2774
    functionDepth: 0
    functionLinenumber: 2774
    functionLinenumberEnd: 2777
    functionName: dnsdist::actions::getSpoofAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - SpoofAction::SpoofAction
    - std::shared_ptr<DNSAction>
    linkageType: ''
    returnType: std::shared_ptr<DNSAction>
    signature: std::shared_ptr<DNSAction> getSpoofAction(const std::vector<std::string>&
      rawRDatas, std::optional<uint16_t> qtypeForAny, const dnsdist::ResponseConfig&
      config)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::shared_ptr<DNSAction>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2781,1
    - Dst: SpoofAction::SpoofAction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2781,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' cname'
    - ' config'
    argTypes:
    - DNSName
    - dnsdist::ResponseConfig
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2782
      start: 2779
    functionDepth: 0
    functionLinenumber: 2779
    functionLinenumberEnd: 2782
    functionName: dnsdist::actions::getSpoofAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - SpoofAction::SpoofAction
    - std::shared_ptr<DNSAction>
    linkageType: ''
    returnType: std::shared_ptr<DNSAction>
    signature: std::shared_ptr<DNSAction> getSpoofAction(const DNSName& cname, const
      dnsdist::ResponseConfig& config)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::shared_ptr<DNSAction>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2786,1
    - Dst: SpoofAction::SpoofAction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2786,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' packet'
    argTypes:
    - PacketBuffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2787
      start: 2784
    functionDepth: 0
    functionLinenumber: 2784
    functionLinenumberEnd: 2787
    functionName: dnsdist::actions::getSpoofAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - SpoofAction::SpoofAction
    - std::shared_ptr<DNSAction>
    linkageType: ''
    returnType: std::shared_ptr<DNSAction>
    signature: std::shared_ptr<DNSAction> getSpoofAction(const PacketBuffer& packet)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::shared_ptr<DNSAction>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2791,1
    - Dst: SpoofSVCAction::SpoofSVCAction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2791,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' parameters'
    - ' responseConfig'
    argTypes:
    - std::vector<SVCRecordParameters>
    - dnsdist::ResponseConfig
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2792
      start: 2789
    functionDepth: 0
    functionLinenumber: 2789
    functionLinenumberEnd: 2792
    functionName: dnsdist::actions::getSpoofSVCAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - SpoofSVCAction::SpoofSVCAction
    - std::shared_ptr<DNSAction>
    linkageType: ''
    returnType: std::shared_ptr<DNSAction>
    signature: std::shared_ptr<DNSAction> getSpoofSVCAction(const std::vector<SVCRecordParameters>&
      parameters, const dnsdist::ResponseConfig& responseConfig)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::shared_ptr<DNSAction>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2796,1
    - Dst: SetMaxReturnedTTLAction::SetMaxReturnedTTLAction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2796,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - max
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2797
      start: 2794
    functionDepth: 0
    functionLinenumber: 2794
    functionLinenumberEnd: 2797
    functionName: dnsdist::actions::getSetMaxReturnedTTLAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - SetMaxReturnedTTLAction::SetMaxReturnedTTLAction
    - std::shared_ptr<DNSAction>
    linkageType: ''
    returnType: std::shared_ptr<DNSAction>
    signature: std::shared_ptr<DNSAction> getSetMaxReturnedTTLAction(uint32_t max)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::shared_ptr<DNSResponseAction>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2801,1
    - Dst: SetMaxReturnedTTLResponseAction::SetMaxReturnedTTLResponseAction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2801,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - max
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2802
      start: 2799
    functionDepth: 0
    functionLinenumber: 2799
    functionLinenumberEnd: 2802
    functionName: dnsdist::actions::getSetMaxReturnedTTLResponseAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - SetMaxReturnedTTLResponseAction::SetMaxReturnedTTLResponseAction
    - std::shared_ptr<DNSResponseAction>
    linkageType: ''
    returnType: std::shared_ptr<DNSResponseAction>
    signature: std::shared_ptr<DNSResponseAction> getSetMaxReturnedTTLResponseAction(uint32_t
      max)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::shared_ptr<DNSResponseAction>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2806,1
    - Dst: LimitTTLResponseAction::LimitTTLResponseAction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2806,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - max
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2807
      start: 2804
    functionDepth: 0
    functionLinenumber: 2804
    functionLinenumberEnd: 2807
    functionName: dnsdist::actions::getSetMaxTTLResponseAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - LimitTTLResponseAction::LimitTTLResponseAction
    - std::shared_ptr<DNSResponseAction>
    linkageType: ''
    returnType: std::shared_ptr<DNSResponseAction>
    signature: std::shared_ptr<DNSResponseAction> getSetMaxTTLResponseAction(uint32_t
      max)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::shared_ptr<DNSAction>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2811,1
    - Dst: SetProxyProtocolValuesAction::SetProxyProtocolValuesAction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2811,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' values'
    argTypes:
    - std::vector<std::pair<uint8_t, std::string>>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2812
      start: 2809
    functionDepth: 0
    functionLinenumber: 2809
    functionLinenumberEnd: 2812
    functionName: dnsdist::actions::getSetProxyProtocolValuesAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - SetProxyProtocolValuesAction::SetProxyProtocolValuesAction
    - std::shared_ptr<DNSAction>
    linkageType: ''
    returnType: std::shared_ptr<DNSAction>
    signature: std::shared_ptr<DNSAction> getSetProxyProtocolValuesAction(const std::vector<std::pair<uint8_t,
      std::string>>& values)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::shared_ptr<DNSAction>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2816,1
    - Dst: TeeAction::TeeAction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc:2816,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - ' rca'
    - lca
    - addECS
    - addProxyProtocol
    argTypes:
    - ComboAddress
    - std::optional<ComboAddress>
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2817
      start: 2814
    functionDepth: 0
    functionLinenumber: 2814
    functionLinenumberEnd: 2817
    functionName: dnsdist::actions::getTeeAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    functionUses: 0
    functionsReached:
    - TeeAction::TeeAction
    - std::shared_ptr<DNSAction>
    linkageType: ''
    returnType: std::shared_ptr<DNSAction>
    signature: std::shared_ptr<DNSAction> getTeeAction(const ComboAddress& rca, std::optional<ComboAddress>
      lca, bool addECS, bool addProxyProtocol)
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - alpn
    - client
    argTypes:
    - TLSFrontend::ALPN
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 36
      start: 18
    functionDepth: 0
    functionLinenumber: 18
    functionLinenumberEnd: 36
    functionName: getALPNVector
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: std::vector<std::vector<uint8_t>>
    signature: std::vector<std::vector<uint8_t>> getALPNVector(TLSFrontend::ALPN alpn,
      bool client)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:44,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 41
    functionDepth: 1
    functionLinenumber: 41
    functionLinenumberEnd: 50
    functionName: shouldDoVerboseLogging
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc
    functionUses: 4
    functionsReached:
    - dnsdist::configuration::getCurrentRuntimeConfiguration
    linkageType: ''
    returnType: bool
    signature: bool shouldDoVerboseLogging()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:44,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 41
    functionDepth: 1
    functionLinenumber: 41
    functionLinenumberEnd: 50
    functionName: shouldDoVerboseLogging
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc
    functionUses: 4
    functionsReached:
    - dnsdist::configuration::getCurrentRuntimeConfiguration
    linkageType: ''
    returnType: bool
    signature: bool shouldDoVerboseLogging()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: registerOpenSSLUser
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:68,1
    - Dst: libssl_init_server_context
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:70,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:73,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:73,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:74,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:76,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:80,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:82,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:84,1
    - Dst: SSL_CTX_set_tlsext_servername_callback
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:86,1
    - Dst: second::get
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:86,1
    - Dst: ERR_print_errors_fp
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:90,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:91,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:91,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 2
    argNames:
    - ' addr'
    - ' tlsConfig'
    argTypes:
    - ComboAddress
    - TLSConfig
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 66
    functionDepth: 1
    functionLinenumber: 66
    functionLinenumberEnd: 93
    functionName: OpenSSLFrontendContext::OpenSSLFrontendContext
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc
    functionUses: 0
    functionsReached:
    - SSL_CTX_set_tlsext_servername_callback
    - std::move
    - SLOG
    - std::runtime_error
    - libssl_init_server_context
    - second::get
    - warnlog
    - ERR_print_errors_fp
    - registerOpenSSLUser
    - dnsdist::logging::getTopLogger
    - toStringWithPort
    linkageType: ''
    returnType: void
    signature: void OpenSSLFrontendContext(const ComboAddress& addr, const TLSConfig&
      tlsConfig)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: reset
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:97,1
    - Dst: unregisterOpenSSLUser
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:99,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 95
    functionDepth: 0
    functionLinenumber: 95
    functionLinenumberEnd: 100
    functionName: OpenSSLFrontendContext::cleanup
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc
    functionUses: 0
    functionsReached:
    - reset
    - unregisterOpenSSLUser
    linkageType: ''
    returnType: void
    signature: void cleanup()
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: SSL_get_servername
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:112,1
    - Dst: reinterpret_cast<OpenSSLFrontendContext*>
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:117,1
    - Dst: libssl_get_ticket_key_callback_data
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:117,1
    - Dst: std::string_view
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:122,1
    - Dst: auto*::d_sniMap::find
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:124,1
    - Dst: auto*::d_sniMap::end
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:125,1
    - Dst: SSL_set_SSL_CTX
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:133,1
    - Dst: auto::second::get
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:133,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - ssl
    argTypes:
    - SSL*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 135
      start: 110
    functionDepth: 0
    functionLinenumber: 110
    functionLinenumberEnd: 135
    functionName: sni_server_name_callback
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc
    functionUses: 0
    functionsReached:
    - libssl_get_ticket_key_callback_data
    - auto*::d_sniMap::end
    - auto*::d_sniMap::find
    - std::string_view
    - SSL_set_SSL_CTX
    - reinterpret_cast<OpenSSLFrontendContext*>
    - SSL_get_servername
    - auto::second::get
    linkageType: ''
    returnType: int
    signature: int sni_server_name_callback(SSL* ssl, int* /* alert */, void* /* arg
      */)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:140,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 1
    argNames:
    - ' sess'
    argTypes:
    - std::unique_ptr<SSL_SESSION, void(*)(SSL_SESSION*)>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 142
      start: 140
    functionDepth: 0
    functionLinenumber: 140
    functionLinenumberEnd: 142
    functionName: OpenSSLSession::OpenSSLSession
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void OpenSSLSession(std::unique_ptr<SSL_SESSION, void(*)(SSL_SESSION*)>&&
      sess)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:146,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 144
    functionDepth: 0
    functionLinenumber: 144
    functionLinenumberEnd: 147
    functionName: OpenSSLSession::getNative
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: std::unique_ptr<SSL_SESSION, void(*)(SSL_SESSION*)>
    signature: std::unique_ptr<SSL_SESSION, void(*)(SSL_SESSION*)> getNative()
  - BBCount: 25
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:159,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:159,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:164,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:164,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:165,1
    - Dst: shouldDoVerboseLogging
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:166,1
    - Dst: ERR_print_errors_fp
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:167,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:169,1
    - Dst: SSL_set_fd
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:172,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:172,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:173,1
    - Dst: SSL_set_ex_data
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:176,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:176,1
    - Dst: getConnectionIndex
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:176,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:180,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:180,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:180,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:185,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:185,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:186,1
    - Dst: shouldDoVerboseLogging
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:187,1
    - Dst: ERR_print_errors_fp
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:188,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:190,1
    - Dst: SSL_set_fd
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:193,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:193,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:194,1
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:198,1
    - Dst: SSL_set_tlsext_host_name
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:198,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:198,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:198,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:199,1
    - Dst: SSL_get0_param
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:204,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:204,1
    - Dst: X509_VERIFY_PARAM_set_hostflags
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:206,1
    - Dst: X509_VERIFY_PARAM_set1_ip_asc
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:207,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:207,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:208,1
    - Dst: SSL_set_hostflags
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:216,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:216,1
    - Dst: SSL_set1_host
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:217,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:217,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:217,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:218,1
    - Dst: SSL_get0_param
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:221,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:221,1
    - Dst: X509_VERIFY_PARAM_set_hostflags
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:223,1
    - Dst: X509_VERIFY_PARAM_set1_host
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:224,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:224,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:224,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:225,1
    - Dst: SSL_set_ex_data
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:232,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:232,1
    - Dst: getConnectionIndex
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:232,1
    - Dst: SSL_waiting_for_async
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:239,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:239,1
    - Dst: SSL_get_all_async_fds
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:245,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:245,1
    - Dst: SSL_get_all_async_fds
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:250,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:250,1
    - Dst: std::vector::reserve
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:251,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:253,1
    - Dst: SSL_get_error
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:261,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:261,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:270,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:273,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:273,1
    - Dst: strerror
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:273,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:277,1
    - Dst: if
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:285,1
    - Dst: shouldDoVerboseLogging
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:285,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:286,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:286,1
    - Dst: libssl_get_error_string
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:286,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:288,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:288,1
    - Dst: convertIORequestToIOState
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:295,1
    - Dst: waitForData
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:297,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:299,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:302,1
    - Dst: waitForRWData
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:306,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:308,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:311,1
    CyclomaticComplexity: 46
    EdgeCount: 46
    ICount: 99
    argCount: 2
    argNames:
    - res
    - ' timeout'
    argTypes:
    - int
    - struct timeval
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 314
      start: 155
    functionDepth: 1
    functionLinenumber: 155
    functionLinenumberEnd: 314
    functionName: handleIORequest
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc
    functionUses: 4
    functionsReached:
    - std::to_string
    - std::string
    - std::vector::push_back
    - SSL_get0_param
    - SSL_set_tlsext_host_name
    - ERR_print_errors_fp
    - size
    - X509_VERIFY_PARAM_set1_ip_asc
    - dnsdist::logging::getTopLogger
    - strerror
    - c_str
    - empty
    - SSL_set_fd
    - X509_VERIFY_PARAM_set_hostflags
    - std::runtime_error
    - VERBOSESLOG
    - get
    - std::vector::reserve
    - SSL_set_hostflags
    - SSL_get_error
    - shouldDoVerboseLogging
    - waitForRWData
    - convertIORequestToIOState
    - X509_VERIFY_PARAM_set1_host
    - std::move
    - libssl_get_error_string
    - SSL_set1_host
    - getConnectionIndex
    - SSL_set_ex_data
    - infolog
    - waitForData
    - if
    - SSL_get_all_async_fds
    - SSL_waiting_for_async
    linkageType: ''
    returnType: "class OpenSSLTLSConnection: public TLSConnection\n{\npublic:\n  /*
      server side connection */\n  OpenSSLTLSConnection(int socket, const struct timeval&
      timeout, std::shared_ptr<const OpenSSLTLSIOCtx> tlsCtx, std::unique_ptr<SSL,
      void(*)(SSL*)>&& conn): d_tlsCtx(std::move(tlsCtx)), d_conn(std::move(conn)),
      d_timeout(timeout)\n  {\n    d_socket = socket;\n\n    if (!d_conn) {\n      VERBOSESLOG(infolog(\"Error
      creating TLS object\"),\n                  dnsdist::logging::getTopLogger(\"openssl-server-side\")->info(Logr::Info,
      \"Error creating server-side TLS object\"));\n      if (shouldDoVerboseLogging())
      {\n        ERR_print_errors_fp(stderr);\n      }\n      throw std::runtime_error(\"Error
      creating TLS object\");\n    }\n\n    if (!SSL_set_fd(d_conn.get(), d_socket))
      {\n      throw std::runtime_error(\"Error assigning socket\");\n    }\n\n    SSL_set_ex_data(d_conn.get(),
      getConnectionIndex(), this);\n  }\n\n  /* client-side connection */\n  OpenSSLTLSConnection(std::string
      hostname, bool hostIsAddr, int socket, const struct timeval& timeout, std::shared_ptr<const
      OpenSSLTLSIOCtx> tlsCtx, std::unique_ptr<SSL, void(*)(SSL*)>&& conn): d_tlsCtx(std::move(tlsCtx)),
      d_conn(std::move(conn)), d_hostname(std::move(hostname)), d_timeout(timeout),
      d_isClient(true)\n  {\n    d_socket = socket;\n\n    if (!d_conn) {\n      VERBOSESLOG(infolog(\"Error
      creating TLS object\"),\n                  dnsdist::logging::getTopLogger(\"openssl-client-side\")->info(Logr::Info,
      \"Error creating client-side TLS object\"));\n      if (shouldDoVerboseLogging())
      {\n        ERR_print_errors_fp(stderr);\n      }\n      throw std::runtime_error(\"Error
      creating TLS object\");\n    }\n\n    if (!SSL_set_fd(d_conn.get(), d_socket))
      {\n      throw std::runtime_error(\"Error assigning socket\");\n    }\n\n    /*
      set outgoing Server Name Indication */\n    if (!d_hostname.empty() && SSL_set_tlsext_host_name(d_conn.get(),
      d_hostname.c_str()) != 1) {\n      throw std::runtime_error(\"Error setting
      TLS SNI to \" + d_hostname);\n    }\n\n    if (hostIsAddr) {\n#if (OPENSSL_VERSION_NUMBER
      >= 0x10002000L)\n      X509_VERIFY_PARAM *param = SSL_get0_param(d_conn.get());\n
      \     /* Enable automatic IP checks */\n      X509_VERIFY_PARAM_set_hostflags(param,
      X509_CHECK_FLAG_NO_PARTIAL_WILDCARDS);\n      if (X509_VERIFY_PARAM_set1_ip_asc(param,
      d_hostname.c_str()) != 1) {\n        throw std::runtime_error(\"Error setting
      TLS IP for certificate validation\");\n      }\n#else\n      /* no validation
      for you, see https://wiki.openssl.org/index.php/Hostname_validation */\n#endif\n
      \   }\n    else {\n#if (OPENSSL_VERSION_NUMBER >= 0x1010000fL) && defined(HAVE_SSL_SET_HOSTFLAGS)
      // grrr libressl\n      SSL_set_hostflags(d_conn.get(), X509_CHECK_FLAG_NO_PARTIAL_WILDCARDS);\n
      \     if (SSL_set1_host(d_conn.get(), d_hostname.c_str()) != 1) {\n        throw
      std::runtime_error(\"Error setting TLS hostname for certificate validation\");\n
      \     }\n#elif (OPENSSL_VERSION_NUMBER >= 0x10002000L)\n      X509_VERIFY_PARAM
      *param = SSL_get0_param(d_conn.get());\n      /* Enable automatic hostname checks
      */\n      X509_VERIFY_PARAM_set_hostflags(param, X509_CHECK_FLAG_NO_PARTIAL_WILDCARDS);\n
      \     if (X509_VERIFY_PARAM_set1_host(param, d_hostname.c_str(), d_hostname.size())
      != 1) {\n        throw std::runtime_error(\"Error setting TLS hostname for certificate
      validation\");\n      }\n#else\n      /* no hostname validation for you, see
      https://wiki.openssl.org/index.php/Hostname_validation */\n#endif\n    }\n\n
      \   SSL_set_ex_data(d_conn.get(), getConnectionIndex(), this);\n  }\n\n  std::vector<int>
      getAsyncFDs() override\n  {\n    std::vector<int> results;\n#ifdef SSL_MODE_ASYNC\n
      \   if (SSL_waiting_for_async(d_conn.get()) != 1) {\n      return results;\n
      \   }\n\n    OSSL_ASYNC_FD fds[32];\n    size_t numfds = sizeof(fds)/sizeof(*fds);\n
      \   SSL_get_all_async_fds(d_conn.get(), nullptr, &numfds);\n    if (numfds ==
      0) {\n      return results;\n    }\n\n    SSL_get_all_async_fds(d_conn.get(),
      fds, &numfds);\n    results.reserve(numfds);\n    for (size_t idx = 0; idx <
      numfds; idx++) {\n      results.push_back(fds[idx]);\n    }\n#endif\n    return
      results;\n  }\n\n  IOState convertIORequestToIOState(int res) const\n  {\n    int
      error = SSL_get_error(d_conn.get(), res);\n    if (error == SSL_ERROR_WANT_READ)
      {\n      return IOState::NeedRead;\n    }\n    else if (error == SSL_ERROR_WANT_WRITE)
      {\n      return IOState::NeedWrite;\n    }\n    else if (error == SSL_ERROR_SYSCALL)
      {\n      if (errno == 0) {\n        throw std::runtime_error(\"TLS connection
      closed by remote end\");\n      }\n      else {\n        throw std::runtime_error(\"Syscall
      error while processing TLS connection: \" + std::string(strerror(errno)));\n
      \     }\n    }\n    else if (error == SSL_ERROR_ZERO_RETURN) {\n      throw
      std::runtime_error(\"TLS connection closed by remote end\");\n    }\n#ifdef
      SSL_MODE_ASYNC\n    else if (error == SSL_ERROR_WANT_ASYNC) {\n      return
      IOState::Async;\n    }\n#endif\n    else {\n      if (shouldDoVerboseLogging())
      {\n        throw std::runtime_error(\"Error while processing TLS connection:
      (\" + std::to_string(error) + \") \" + libssl_get_error_string());\n      }
      else {\n        throw std::runtime_error(\"Error while processing TLS connection:
      \" + std::to_string(error));\n      }\n    }"
    signature: "class OpenSSLTLSConnection: public TLSConnection\n{\npublic:\n  /*
      server side connection */\n  OpenSSLTLSConnection(int socket, const struct timeval&
      timeout, std::shared_ptr<const OpenSSLTLSIOCtx> tlsCtx, std::unique_ptr<SSL,
      void(*)(SSL*)>&& conn): d_tlsCtx(std::move(tlsCtx)), d_conn(std::move(conn)),
      d_timeout(timeout)\n  {\n    d_socket = socket;\n\n    if (!d_conn) {\n      VERBOSESLOG(infolog(\"Error
      creating TLS object\"),\n                  dnsdist::logging::getTopLogger(\"openssl-server-side\")->info(Logr::Info,
      \"Error creating server-side TLS object\"));\n      if (shouldDoVerboseLogging())
      {\n        ERR_print_errors_fp(stderr);\n      }\n      throw std::runtime_error(\"Error
      creating TLS object\");\n    }\n\n    if (!SSL_set_fd(d_conn.get(), d_socket))
      {\n      throw std::runtime_error(\"Error assigning socket\");\n    }\n\n    SSL_set_ex_data(d_conn.get(),
      getConnectionIndex(), this);\n  }\n\n  /* client-side connection */\n  OpenSSLTLSConnection(std::string
      hostname, bool hostIsAddr, int socket, const struct timeval& timeout, std::shared_ptr<const
      OpenSSLTLSIOCtx> tlsCtx, std::unique_ptr<SSL, void(*)(SSL*)>&& conn): d_tlsCtx(std::move(tlsCtx)),
      d_conn(std::move(conn)), d_hostname(std::move(hostname)), d_timeout(timeout),
      d_isClient(true)\n  {\n    d_socket = socket;\n\n    if (!d_conn) {\n      VERBOSESLOG(infolog(\"Error
      creating TLS object\"),\n                  dnsdist::logging::getTopLogger(\"openssl-client-side\")->info(Logr::Info,
      \"Error creating client-side TLS object\"));\n      if (shouldDoVerboseLogging())
      {\n        ERR_print_errors_fp(stderr);\n      }\n      throw std::runtime_error(\"Error
      creating TLS object\");\n    }\n\n    if (!SSL_set_fd(d_conn.get(), d_socket))
      {\n      throw std::runtime_error(\"Error assigning socket\");\n    }\n\n    /*
      set outgoing Server Name Indication */\n    if (!d_hostname.empty() && SSL_set_tlsext_host_name(d_conn.get(),
      d_hostname.c_str()) != 1) {\n      throw std::runtime_error(\"Error setting
      TLS SNI to \" + d_hostname);\n    }\n\n    if (hostIsAddr) {\n#if (OPENSSL_VERSION_NUMBER
      >= 0x10002000L)\n      X509_VERIFY_PARAM *param = SSL_get0_param(d_conn.get());\n
      \     /* Enable automatic IP checks */\n      X509_VERIFY_PARAM_set_hostflags(param,
      X509_CHECK_FLAG_NO_PARTIAL_WILDCARDS);\n      if (X509_VERIFY_PARAM_set1_ip_asc(param,
      d_hostname.c_str()) != 1) {\n        throw std::runtime_error(\"Error setting
      TLS IP for certificate validation\");\n      }\n#else\n      /* no validation
      for you, see https://wiki.openssl.org/index.php/Hostname_validation */\n#endif\n
      \   }\n    else {\n#if (OPENSSL_VERSION_NUMBER >= 0x1010000fL) && defined(HAVE_SSL_SET_HOSTFLAGS)
      // grrr libressl\n      SSL_set_hostflags(d_conn.get(), X509_CHECK_FLAG_NO_PARTIAL_WILDCARDS);\n
      \     if (SSL_set1_host(d_conn.get(), d_hostname.c_str()) != 1) {\n        throw
      std::runtime_error(\"Error setting TLS hostname for certificate validation\");\n
      \     }\n#elif (OPENSSL_VERSION_NUMBER >= 0x10002000L)\n      X509_VERIFY_PARAM
      *param = SSL_get0_param(d_conn.get());\n      /* Enable automatic hostname checks
      */\n      X509_VERIFY_PARAM_set_hostflags(param, X509_CHECK_FLAG_NO_PARTIAL_WILDCARDS);\n
      \     if (X509_VERIFY_PARAM_set1_host(param, d_hostname.c_str(), d_hostname.size())
      != 1) {\n        throw std::runtime_error(\"Error setting TLS hostname for certificate
      validation\");\n      }\n#else\n      /* no hostname validation for you, see
      https://wiki.openssl.org/index.php/Hostname_validation */\n#endif\n    }\n\n
      \   SSL_set_ex_data(d_conn.get(), getConnectionIndex(), this);\n  }\n\n  std::vector<int>
      getAsyncFDs() override\n  {\n    std::vector<int> results;\n#ifdef SSL_MODE_ASYNC\n
      \   if (SSL_waiting_for_async(d_conn.get()) != 1) {\n      return results;\n
      \   }\n\n    OSSL_ASYNC_FD fds[32];\n    size_t numfds = sizeof(fds)/sizeof(*fds);\n
      \   SSL_get_all_async_fds(d_conn.get(), nullptr, &numfds);\n    if (numfds ==
      0) {\n      return results;\n    }\n\n    SSL_get_all_async_fds(d_conn.get(),
      fds, &numfds);\n    results.reserve(numfds);\n    for (size_t idx = 0; idx <
      numfds; idx++) {\n      results.push_back(fds[idx]);\n    }\n#endif\n    return
      results;\n  }\n\n  IOState convertIORequestToIOState(int res) const\n  {\n    int
      error = SSL_get_error(d_conn.get(), res);\n    if (error == SSL_ERROR_WANT_READ)
      {\n      return IOState::NeedRead;\n    }\n    else if (error == SSL_ERROR_WANT_WRITE)
      {\n      return IOState::NeedWrite;\n    }\n    else if (error == SSL_ERROR_SYSCALL)
      {\n      if (errno == 0) {\n        throw std::runtime_error(\"TLS connection
      closed by remote end\");\n      }\n      else {\n        throw std::runtime_error(\"Syscall
      error while processing TLS connection: \" + std::string(strerror(errno)));\n
      \     }\n    }\n    else if (error == SSL_ERROR_ZERO_RETURN) {\n      throw
      std::runtime_error(\"TLS connection closed by remote end\");\n    }\n#ifdef
      SSL_MODE_ASYNC\n    else if (error == SSL_ERROR_WANT_ASYNC) {\n      return
      IOState::Async;\n    }\n#endif\n    else {\n      if (shouldDoVerboseLogging())
      {\n        throw std::runtime_error(\"Error while processing TLS connection:
      (\" + std::to_string(error) + \") \" + libssl_get_error_string());\n      }
      else {\n        throw std::runtime_error(\"Error while processing TLS connection:
      \" + std::to_string(error));\n      }\n    } handleIORequest(int res, const
      struct timeval& timeout)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:159,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:159,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:164,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:164,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:165,1
    - Dst: shouldDoVerboseLogging
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:166,1
    - Dst: ERR_print_errors_fp
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:167,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:169,1
    - Dst: SSL_set_fd
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:172,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:172,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:173,1
    - Dst: SSL_set_ex_data
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:176,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:176,1
    - Dst: getConnectionIndex
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:176,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 13
    argCount: 4
    argNames:
    - socket
    - ' timeout'
    - tlsCtx
    - ' conn'
    argTypes:
    - int
    - struct timeval
    - std::shared_ptr<const OpenSSLTLSIOCtx>
    - std::unique_ptr<SSL, void(*)(SSL*)>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 177
      start: 159
    functionDepth: 1
    functionLinenumber: 159
    functionLinenumberEnd: 177
    functionName: OpenSSLTLSConnection::OpenSSLTLSConnection
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc
    functionUses: 0
    functionsReached:
    - std::move
    - SSL_set_fd
    - std::runtime_error
    - getConnectionIndex
    - SSL_set_ex_data
    - ERR_print_errors_fp
    - VERBOSESLOG
    - infolog
    - get
    - shouldDoVerboseLogging
    - dnsdist::logging::getTopLogger
    linkageType: ''
    returnType: void
    signature: void OpenSSLTLSConnection(int socket, const struct timeval& timeout,
      std::shared_ptr<const OpenSSLTLSIOCtx> tlsCtx, std::unique_ptr<SSL, void(*)(SSL*)>&&
      conn)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:180,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:180,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:180,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:185,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:185,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:186,1
    - Dst: shouldDoVerboseLogging
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:187,1
    - Dst: ERR_print_errors_fp
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:188,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:190,1
    - Dst: SSL_set_fd
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:193,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:193,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:194,1
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:198,1
    - Dst: SSL_set_tlsext_host_name
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:198,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:198,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:198,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:199,1
    - Dst: SSL_get0_param
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:204,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:204,1
    - Dst: X509_VERIFY_PARAM_set_hostflags
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:206,1
    - Dst: X509_VERIFY_PARAM_set1_ip_asc
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:207,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:207,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:208,1
    - Dst: SSL_set_hostflags
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:216,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:216,1
    - Dst: SSL_set1_host
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:217,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:217,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:217,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:218,1
    - Dst: SSL_get0_param
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:221,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:221,1
    - Dst: X509_VERIFY_PARAM_set_hostflags
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:223,1
    - Dst: X509_VERIFY_PARAM_set1_host
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:224,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:224,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:224,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:225,1
    - Dst: SSL_set_ex_data
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:232,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:232,1
    - Dst: getConnectionIndex
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:232,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 31
    argCount: 6
    argNames:
    - hostname
    - hostIsAddr
    - socket
    - ' timeout'
    - tlsCtx
    - ' conn'
    argTypes:
    - std::string
    - bool
    - int
    - struct timeval
    - std::shared_ptr<const OpenSSLTLSIOCtx>
    - std::unique_ptr<SSL, void(*)(SSL*)>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 233
      start: 180
    functionDepth: 1
    functionLinenumber: 180
    functionLinenumberEnd: 233
    functionName: OpenSSLTLSConnection::OpenSSLTLSConnection
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc
    functionUses: 0
    functionsReached:
    - SSL_get0_param
    - SSL_set_tlsext_host_name
    - ERR_print_errors_fp
    - size
    - X509_VERIFY_PARAM_set1_ip_asc
    - dnsdist::logging::getTopLogger
    - c_str
    - empty
    - SSL_set_fd
    - X509_VERIFY_PARAM_set_hostflags
    - std::runtime_error
    - VERBOSESLOG
    - get
    - SSL_set_hostflags
    - shouldDoVerboseLogging
    - X509_VERIFY_PARAM_set1_host
    - std::move
    - SSL_set1_host
    - getConnectionIndex
    - SSL_set_ex_data
    - infolog
    linkageType: ''
    returnType: void
    signature: void OpenSSLTLSConnection(std::string hostname, bool hostIsAddr, int
      socket, const struct timeval& timeout, std::shared_ptr<const OpenSSLTLSIOCtx>
      tlsCtx, std::unique_ptr<SSL, void(*)(SSL*)>&& conn)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: SSL_waiting_for_async
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:239,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:239,1
    - Dst: SSL_get_all_async_fds
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:245,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:245,1
    - Dst: SSL_get_all_async_fds
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:250,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:250,1
    - Dst: std::vector::reserve
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:251,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:253,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 257
      start: 235
    functionDepth: 0
    functionLinenumber: 235
    functionLinenumberEnd: 257
    functionName: OpenSSLTLSConnection::getAsyncFDs
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc
    functionUses: 0
    functionsReached:
    - std::vector::push_back
    - get
    - std::vector::reserve
    - SSL_get_all_async_fds
    - SSL_waiting_for_async
    linkageType: ''
    returnType: std::vector<int>
    signature: std::vector<int> getAsyncFDs() override
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: SSL_get_error
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:261,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:261,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:270,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:273,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:273,1
    - Dst: strerror
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:273,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:277,1
    - Dst: if
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:285,1
    - Dst: shouldDoVerboseLogging
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:285,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:286,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:286,1
    - Dst: libssl_get_error_string
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:286,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 20
    argCount: 1
    argNames:
    - res
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 287
      start: 259
    functionDepth: 0
    functionLinenumber: 259
    functionLinenumberEnd: 287
    functionName: OpenSSLTLSConnection::convertIORequestToIOState
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc
    functionUses: 0
    functionsReached:
    - std::to_string
    - libssl_get_error_string
    - std::runtime_error
    - get
    - if
    - SSL_get_error
    - shouldDoVerboseLogging
    - strerror
    - std::string
    linkageType: ''
    returnType: IOState
    signature: IOState convertIORequestToIOState(int res) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:288,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:288,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 289
      start: 287
    functionDepth: 0
    functionLinenumber: 287
    functionLinenumberEnd: 289
    functionName: ''
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc
    functionUses: 5071
    functionsReached:
    - std::to_string
    - std::runtime_error
    linkageType: ''
    returnType: else
    signature: 'else '
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: SSL_connect
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:322,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:322,1
    - Dst: convertIORequestToIOState
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:327,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:330,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - fastOpen
    - ' remote'
    argTypes:
    - bool
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 331
      start: 316
    functionDepth: 0
    functionLinenumber: 316
    functionLinenumberEnd: 331
    functionName: tryConnect
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc
    functionUses: 3
    functionsReached:
    - convertIORequestToIOState
    - std::runtime_error
    - SSL_connect
    - get
    linkageType: ''
    returnType: IOState
    signature: IOState tryConnect(bool fastOpen, const ComboAddress& remote) override
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: gettimeofday
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:342,1
    - Dst: SSL_connect
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:347,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:347,1
    - Dst: handleIORequest
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:349,1
    - Dst: gettimeofday
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:354,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:357,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 20
    argCount: 3
    argNames:
    - fastOpen
    - ' remote'
    - timeout
    argTypes:
    - bool
    - ComboAddress
    - struct timeval
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 364
      start: 333
    functionDepth: 0
    functionLinenumber: 333
    functionLinenumberEnd: 364
    functionName: connect
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc
    functionUses: 38
    functionsReached:
    - runtime_error
    - get
    - gettimeofday
    - SSL_connect
    - handleIORequest
    linkageType: ''
    returnType: void
    signature: void connect(bool fastOpen, const ComboAddress& remote, const struct
      timeval &timeout) override
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: isClient
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:368,1
    - Dst: SSL_accept
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:383,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:383,1
    - Dst: convertIORequestToIOState
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:388,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:391,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 392
      start: 366
    functionDepth: 0
    functionLinenumber: 366
    functionLinenumberEnd: 392
    functionName: tryHandshake
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc
    functionUses: 3
    functionsReached:
    - convertIORequestToIOState
    - std::runtime_error
    - get
    - isClient
    - SSL_accept
    linkageType: ''
    returnType: IOState
    signature: IOState tryHandshake() override
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: isClient
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:396,1
    - Dst: SSL_accept
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:403,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:403,1
    - Dst: handleIORequest
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:405,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:411,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 413
      start: 394
    functionDepth: 0
    functionLinenumber: 394
    functionLinenumberEnd: 413
    functionName: doHandshake
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc
    functionUses: 0
    functionsReached:
    - std::runtime_error
    - get
    - isClient
    - handleIORequest
    - SSL_accept
    linkageType: ''
    returnType: void
    signature: void doHandshake() override
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: isClient
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:417,1
    - Dst: SSL_set_fd
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:420,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:420,1
    - Dst: SSL_get_fd
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:420,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:420,1
    - Dst: SSL_write
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:425,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:425,1
    - Dst: reinterpret_cast<const char *>
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:425,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:425,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:425,1
    - Dst: convertIORequestToIOState
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:427,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:430,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 3
    argNames:
    - ' buffer'
    - ' pos'
    - toWrite
    argTypes:
    - PacketBuffer
    - size_t
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 440
      start: 415
    functionDepth: 0
    functionLinenumber: 415
    functionLinenumberEnd: 440
    functionName: tryWrite
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc
    functionUses: 4
    functionsReached:
    - convertIORequestToIOState
    - SSL_set_fd
    - static_cast<size_t>
    - get
    - reinterpret_cast<const char *>
    - isClient
    - SSL_write
    - at
    - SSL_get_fd
    - static_cast<int>
    linkageType: ''
    returnType: IOState
    signature: IOState tryWrite(const PacketBuffer& buffer, size_t& pos, size_t toWrite)
      override
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: SSL_read
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:445,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:445,1
    - Dst: reinterpret_cast<char *>
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:445,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:445,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:445,1
    - Dst: convertIORequestToIOState
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:447,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:450,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 4
    argNames:
    - ' buffer'
    - ' pos'
    - toRead
    - allowIncomplete
    argTypes:
    - PacketBuffer
    - size_t
    - size_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 458
      start: 442
    functionDepth: 0
    functionLinenumber: 442
    functionLinenumberEnd: 458
    functionName: tryRead
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc
    functionUses: 3
    functionsReached:
    - convertIORequestToIOState
    - static_cast<size_t>
    - at
    - get
    - reinterpret_cast<char *>
    - SSL_read
    - static_cast<int>
    linkageType: ''
    returnType: IOState
    signature: IOState tryRead(PacketBuffer& buffer, size_t& pos, size_t toRead, bool
      allowIncomplete) override
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: gettimeofday
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:466,1
    - Dst: SSL_read
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:470,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:470,1
    - Dst: reinterpret_cast<char *>
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:470,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:470,1
    - Dst: handleIORequest
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:472,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:475,1
    - Dst: gettimeofday
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:483,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:486,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 23
    argCount: 5
    argNames:
    - buffer
    - bufferSize
    - ' readTimeout'
    - ' totalTimeout'
    - allowIncomplete
    argTypes:
    - void*
    - size_t
    - struct timeval
    - struct timeval
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 495
      start: 460
    functionDepth: 0
    functionLinenumber: 460
    functionLinenumberEnd: 495
    functionName: read
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc
    functionUses: 74
    functionsReached:
    - static_cast<size_t>
    - handleIORequest
    - runtime_error
    - get
    - gettimeofday
    - reinterpret_cast<char *>
    - SSL_read
    - static_cast<int>
    linkageType: ''
    returnType: size_t
    signature: size_t read(void* buffer, size_t bufferSize, const struct timeval&
      readTimeout, const struct timeval& totalTimeout, bool allowIncomplete) override
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SSL_write
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:501,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:501,1
    - Dst: reinterpret_cast<const char *>
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:501,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:501,1
    - Dst: handleIORequest
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:503,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:506,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 3
    argNames:
    - buffer
    - bufferSize
    - ' writeTimeout'
    argTypes:
    - void*
    - size_t
    - struct timeval
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 512
      start: 497
    functionDepth: 0
    functionLinenumber: 497
    functionLinenumberEnd: 512
    functionName: write
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc
    functionUses: 44
    functionsReached:
    - static_cast<size_t>
    - get
    - reinterpret_cast<const char *>
    - SSL_write
    - handleIORequest
    - static_cast<int>
    linkageType: ''
    returnType: size_t
    signature: size_t write(const void* buffer, size_t bufferSize, const struct timeval&
      writeTimeout) override
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: SSL_peek
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:521,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:521,1
    - Dst: convertIORequestToIOState
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:526,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 534
      start: 514
    functionDepth: 0
    functionLinenumber: 514
    functionLinenumberEnd: 534
    functionName: isUsable
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc
    functionUses: 2
    functionsReached:
    - convertIORequestToIOState
    - SSL_peek
    - get
    linkageType: ''
    returnType: bool
    signature: bool isUsable() const override
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SSL_shutdown
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:539,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:539,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 541
      start: 536
    functionDepth: 0
    functionLinenumber: 536
    functionLinenumberEnd: 541
    functionName: close
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc
    functionUses: 85
    functionsReached:
    - SSL_shutdown
    - get
    linkageType: ''
    returnType: void
    signature: void close() override
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: SSL_get_servername
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:546,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:546,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:548,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:551,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 552
      start: 543
    functionDepth: 0
    functionLinenumber: 543
    functionLinenumberEnd: 552
    functionName: getServerNameIndication
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc
    functionUses: 1
    functionsReached:
    - std::string
    - SSL_get_servername
    - get
    linkageType: ''
    returnType: std::string
    signature: std::string getServerNameIndication() const override
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: SSL_get0_alpn_selected
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:565,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:565,1
    - Dst: std::vector::insert
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:569,1
    - Dst: std::vector::end
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:569,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 572
      start: 554
    functionDepth: 1
    functionLinenumber: 554
    functionLinenumberEnd: 572
    functionName: getNextProtocol
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc
    functionUses: 1
    functionsReached:
    - std::vector::end
    - std::vector::insert
    - SSL_get0_alpn_selected
    - get
    linkageType: ''
    returnType: std::vector<uint8_t>
    signature: std::vector<uint8_t> getNextProtocol() const override
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: SSL_get_verify_result
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:577,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:577,1
    - Dst: SSL_get_peer_certificate
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:580,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:580,1
    - Dst: X509_free
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:583,1
    - Dst: X509_verify_cert_error_string
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:589,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 593
      start: 574
    functionDepth: 0
    functionLinenumber: 574
    functionLinenumberEnd: 593
    functionName: getVerifyResult
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc
    functionUses: 1
    functionsReached:
    - X509_verify_cert_error_string
    - X509_free
    - get
    - SSL_get_verify_result
    - SSL_get_peer_certificate
    linkageType: ''
    returnType: std::pair<long, std::string>
    signature: std::pair<long, std::string> getVerifyResult() const override
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: SSL_version
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:597,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:597,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 612
      start: 595
    functionDepth: 0
    functionLinenumber: 595
    functionLinenumberEnd: 612
    functionName: getTLSVersion
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc
    functionUses: 1
    functionsReached:
    - SSL_version
    - get
    linkageType: ''
    returnType: LibsslTLSVersion
    signature: LibsslTLSVersion getTLSVersion() const override
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SSL_session_reused
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:617,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:617,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 620
      start: 614
    functionDepth: 0
    functionLinenumber: 614
    functionLinenumberEnd: 620
    functionName: hasSessionBeenResumed
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc
    functionUses: 1
    functionsReached:
    - SSL_session_reused
    - get
    linkageType: ''
    returnType: bool
    signature: bool hasSessionBeenResumed() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:624,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 625
      start: 622
    functionDepth: 0
    functionLinenumber: 622
    functionLinenumberEnd: 625
    functionName: getSessions
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc
    functionUses: 1
    functionsReached:
    - std::move
    linkageType: ''
    returnType: std::vector<std::unique_ptr<TLSSession>>
    signature: std::vector<std::unique_ptr<TLSSession>> getSessions() override
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dynamic_cast<OpenSSLSession*>
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:629,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:629,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:631,1
    - Dst: auto::getNative
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:634,1
    - Dst: SSL_set_session
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:635,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:635,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:635,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:637,1
    - Dst: libssl_get_error_string
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:637,1
    - Dst: reset
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:639,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 1
    argNames:
    - ' session'
    argTypes:
    - std::unique_ptr<TLSSession>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 640
      start: 627
    functionDepth: 0
    functionLinenumber: 627
    functionLinenumberEnd: 640
    functionName: setSession
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc
    functionUses: 1
    functionsReached:
    - dynamic_cast<OpenSSLSession*>
    - reset
    - auto::get
    - libssl_get_error_string
    - std::runtime_error
    - get
    - SSL_set_session
    - auto::getNative
    linkageType: ''
    returnType: void
    signature: void setSession(std::unique_ptr<TLSSession>& session) override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: push_back
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:644,1
    - Dst: std::make_unique<OpenSSLSession>
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:644,1
    - Dst: std::unique_ptr<SSL_SESSION, void (*)(SSL_SESSION*)>
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:644,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - session
    argTypes:
    - SSL_SESSION*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 645
      start: 642
    functionDepth: 0
    functionLinenumber: 642
    functionLinenumberEnd: 645
    functionName: addNewTicket
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc
    functionUses: 1
    functionsReached:
    - push_back
    - std::unique_ptr<SSL_SESSION, void (*)(SSL_SESSION*)>
    - std::make_unique<OpenSSLSession>
    linkageType: ''
    returnType: void
    signature: void addNewTicket(SSL_SESSION* session)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 650
      start: 647
    functionDepth: 0
    functionLinenumber: 647
    functionLinenumberEnd: 650
    functionName: enableKTLS
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void enableKTLS()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 655
      start: 652
    functionDepth: 0
    functionLinenumber: 652
    functionLinenumberEnd: 655
    functionName: isClient
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool isClient() const
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:659,1
    - Dst: SSL_get_ex_new_index
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:665,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:667,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 671
      start: 657
    functionDepth: 0
    functionLinenumber: 657
    functionLinenumberEnd: 671
    functionName: generateConnectionIndexIfNeeded
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc
    functionUses: 2
    functionsReached:
    - std::runtime_error
    - SSL_get_ex_new_index
    - lock
    linkageType: ''
    returnType: void
    signature: void generateConnectionIndexIfNeeded()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 676
      start: 673
    functionDepth: 0
    functionLinenumber: 673
    functionLinenumberEnd: 676
    functionName: getConnectionIndex
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc
    functionUses: 8
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int getConnectionIndex()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 698
      start: 698
    functionDepth: 0
    functionLinenumber: 698
    functionLinenumberEnd: 698
    functionName: Private
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Private()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<OpenSSLTLSIOCtx>
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:704,1
    - Dst: Private
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:704,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' frontend'
    argTypes:
    - TLSFrontend
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 705
      start: 702
    functionDepth: 0
    functionLinenumber: 702
    functionLinenumberEnd: 705
    functionName: createServerSideContext
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc
    functionUses: 1
    functionsReached:
    - std::make_shared<OpenSSLTLSIOCtx>
    - Private
    linkageType: ''
    returnType: std::shared_ptr<OpenSSLTLSIOCtx>
    signature: std::shared_ptr<OpenSSLTLSIOCtx> createServerSideContext(TLSFrontend&
      frontend)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<OpenSSLTLSIOCtx>
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:709,1
    - Dst: Private
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:709,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' params'
    argTypes:
    - TLSContextParameters
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 710
      start: 707
    functionDepth: 0
    functionLinenumber: 707
    functionLinenumberEnd: 710
    functionName: createClientSideContext
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc
    functionUses: 1
    functionsReached:
    - std::make_shared<OpenSSLTLSIOCtx>
    - Private
    linkageType: ''
    returnType: std::shared_ptr<OpenSSLTLSIOCtx>
    signature: std::shared_ptr<OpenSSLTLSIOCtx> createClientSideContext(const TLSContextParameters&
      params)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: getALPNVector
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:713,1
    - Dst: std::make_unique<OpenSSLFrontendContext>
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:713,1
    - Dst: generateConnectionIndexIfNeeded
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:715,1
    - Dst: second::get
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:720,1
    - Dst: SSL_CTX_set_tlsext_ticket_key_evp_cb
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:724,1
    - Dst: SSL_CTX_set_tlsext_ticket_key_cb
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:726,1
    - Dst: libssl_set_ticket_key_callback_data
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:728,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:728,1
    - Dst: d_ocspResponses::empty
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:732,1
    - Dst: SSL_CTX_set_tlsext_status_cb
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:733,1
    - Dst: SSL_CTX_set_tlsext_status_arg
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:734,1
    - Dst: SSL_CTX_set_read_ahead
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:739,1
    - Dst: libssl_set_error_counters_callback
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:742,1
    - Dst: libssl_set_alpn_select_callback
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:744,1
    - Dst: d_tlsConfig::d_keyLogFile::empty
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:746,1
    - Dst: libssl_set_key_log_file
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:747,1
    - Dst: d_tlsConfig::d_ticketKeyFile::empty
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:752,1
    - Dst: handleTicketsKeyRotation
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:753,1
    - Dst: time
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:753,1
    - Dst: loadTicketsKeys
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:756,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 30
    argCount: 2
    argNames:
    - ' frontend'
    - priv
    argTypes:
    - TLSFrontend
    - Private
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 762
      start: 713
    functionDepth: 1
    functionLinenumber: 713
    functionLinenumberEnd: 762
    functionName: OpenSSLTLSIOCtx
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc
    functionUses: 0
    functionsReached:
    - d_ocspResponses::empty
    - handleTicketsKeyRotation
    - d_tlsConfig::d_ticketKeyFile::empty
    - SSL_CTX_set_tlsext_ticket_key_evp_cb
    - generateConnectionIndexIfNeeded
    - time
    - libssl_set_ticket_key_callback_data
    - SSL_CTX_set_read_ahead
    - SSL_CTX_set_tlsext_status_cb
    - std::make_unique<OpenSSLFrontendContext>
    - libssl_set_alpn_select_callback
    - SSL_CTX_set_tlsext_status_arg
    - getALPNVector
    - second::get
    - get
    - d_tlsConfig::d_keyLogFile::empty
    - libssl_set_error_counters_callback
    - loadTicketsKeys
    - libssl_set_key_log_file
    - SSL_CTX_set_tlsext_ticket_key_cb
    linkageType: ''
    returnType: void
    signature: void OpenSSLTLSIOCtx(TLSFrontend& frontend, [[maybe_unused]] Private
      priv)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: registerOpenSSLUser
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:793,1
    - Dst: generateConnectionIndexIfNeeded
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:795,1
    - Dst: std::shared_ptr<SSL_CTX>
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:798,1
    - Dst: SSL_CTX_new
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:798,1
    - Dst: TLS_client_method
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:798,1
    - Dst: std::shared_ptr<SSL_CTX>
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:800,1
    - Dst: SSL_CTX_new
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:800,1
    - Dst: SSLv23_client_method
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:800,1
    - Dst: ERR_print_errors_fp
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:803,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:804,1
    - Dst: SSL_CTX_set_options
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:807,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:807,1
    - Dst: SSL_CTX_set_ecdh_auto
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:809,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:809,1
    - Dst: d_ciphers::empty
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:812,1
    - Dst: SSL_CTX_set_cipher_list
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:813,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:813,1
    - Dst: d_ciphers::c_str
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:813,1
    - Dst: ERR_print_errors_fp
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:814,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:815,1
    - Dst: d_ciphers13::empty
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:819,1
    - Dst: SSL_CTX_set_ciphersuites
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:820,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:820,1
    - Dst: d_ciphers13::c_str
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:820,1
    - Dst: ERR_print_errors_fp
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:821,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:822,1
    - Dst: d_caStore::empty
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:828,1
    - Dst: SSL_CTX_set_default_verify_paths
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:829,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:829,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:830,1
    - Dst: SSL_CTX_load_verify_locations
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:833,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:833,1
    - Dst: d_caStore::c_str
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:833,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:834,1
    - Dst: SSL_CTX_set_verify
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:838,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:838,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:841,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:841,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:842,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:844,1
    - Dst: SSL_CTX_set_session_cache_mode
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:851,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:851,1
    - Dst: SSL_CTX_sess_set_new_cb
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:852,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:852,1
    - Dst: d_keyLogFile::empty
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:854,1
    - Dst: libssl_set_key_log_file
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:855,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:855,1
    - Dst: libssl_set_alpn_protos
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:858,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:858,1
    - Dst: getALPNVector
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:858,1
    - Dst: d_client_certificate::empty
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:860,1
    - Dst: d_client_certificate_key::empty
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:862,1
    - Dst: d_client_certificate_password::empty
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:866,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:869,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:869,1
    - Dst: libssl_setup_context_no_sni
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:871,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:871,1
    - Dst: SSL_CTX_set_mode
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:876,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:876,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 63
    argCount: 2
    argNames:
    - ' params'
    - priv
    argTypes:
    - TLSContextParameters
    - Private
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 879
      start: 765
    functionDepth: 1
    functionLinenumber: 765
    functionLinenumberEnd: 879
    functionName: OpenSSLTLSIOCtx
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc
    functionUses: 0
    functionsReached:
    - SSL_CTX_set_verify
    - d_client_certificate_key::empty
    - d_client_certificate::empty
    - d_ciphers::empty
    - SLOG
    - generateConnectionIndexIfNeeded
    - SSL_CTX_set_ciphersuites
    - ERR_print_errors_fp
    - warnlog
    - registerOpenSSLUser
    - libssl_set_alpn_protos
    - dnsdist::logging::getTopLogger
    - SSL_CTX_sess_set_new_cb
    - SSL_CTX_set_options
    - SSL_CTX_new
    - SSL_CTX_load_verify_locations
    - SSL_CTX_set_session_cache_mode
    - d_ciphers13::empty
    - SSL_CTX_set_mode
    - SSL_CTX_set_cipher_list
    - d_keyLogFile::empty
    - getALPNVector
    - std::runtime_error
    - TLS_client_method
    - get
    - libssl_setup_context_no_sni
    - d_caStore::empty
    - libssl_set_key_log_file
    - std::move
    - std::shared_ptr<SSL_CTX>
    - d_ciphers13::c_str
    - SSLv23_client_method
    - SSL_CTX_set_ecdh_auto
    - d_client_certificate_password::empty
    - SSL_CTX_set_default_verify_paths
    - d_caStore::c_str
    - d_ciphers::c_str
    linkageType: ''
    returnType: void
    signature: void OpenSSLTLSIOCtx(const TLSContextParameters& params, [[maybe_unused]]
      Private priv)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 881
      start: 881
    functionDepth: 0
    functionLinenumber: 881
    functionLinenumberEnd: 881
    functionName: OpenSSLTLSIOCtx
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void OpenSSLTLSIOCtx(const OpenSSLTLSIOCtx&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 882
      start: 882
    functionDepth: 0
    functionLinenumber: 882
    functionLinenumberEnd: 882
    functionName: OpenSSLTLSIOCtx
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void OpenSSLTLSIOCtx(OpenSSLTLSIOCtx&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 883
      start: 883
    functionDepth: 0
    functionLinenumber: 883
    functionLinenumberEnd: 883
    functionName: '& operator=(const OpenSSLTLSIOCtx&)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: OpenSSLTLSIOCtx
    signature: OpenSSLTLSIOCtx & operator=(const OpenSSLTLSIOCtx&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 884
      start: 884
    functionDepth: 0
    functionLinenumber: 884
    functionLinenumberEnd: 884
    functionName: '& operator=(OpenSSLTLSIOCtx&&)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: OpenSSLTLSIOCtx
    signature: OpenSSLTLSIOCtx & operator=(OpenSSLTLSIOCtx&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: reset
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:888,1
    - Dst: unregisterOpenSSLUser
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:889,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 890
      start: 886
    functionDepth: 0
    functionLinenumber: 886
    functionLinenumberEnd: 890
    functionName: ~OpenSSLTLSIOCtx() override
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc
    functionUses: 0
    functionsReached:
    - reset
    - unregisterOpenSSLUser
    linkageType: ''
    returnType: void
    signature: void ~OpenSSLTLSIOCtx() override
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: reinterpret_cast<OpenSSLFrontendContext*>
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:898,1
    - Dst: libssl_get_ticket_key_callback_data
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:898,1
    - Dst: libssl_ticket_key_callback
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:903,1
    - Dst: reinterpret_cast<OpenSSLTLSConnection*>
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:906,1
    - Dst: SSL_get_ex_data
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:906,1
    - Dst: getConnectionIndex
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:906,1
    - Dst: auto*::setUnknownTicketKey
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:909,1
    - Dst: auto*::setResumedFromInactiveTicketKey
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:912,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 17
    argCount: 6
    argNames:
    - s
    - keyName
    - iv
    - ectx
    - hctx
    - enc
    argTypes:
    - SSL*
    - unsigned char[]
    - unsigned char*
    - EVP_CIPHER_CTX*
    - HMAC_CTX*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 919
      start: 895
    functionDepth: 0
    functionLinenumber: 895
    functionLinenumberEnd: 919
    functionName: ticketKeyCb
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc
    functionUses: 0
    functionsReached:
    - libssl_get_ticket_key_callback_data
    - reinterpret_cast<OpenSSLTLSConnection*>
    - auto*::setUnknownTicketKey
    - getConnectionIndex
    - SSL_get_ex_data
    - auto*::setResumedFromInactiveTicketKey
    - reinterpret_cast<OpenSSLFrontendContext*>
    - libssl_ticket_key_callback
    linkageType: ''
    returnType: int
    signature: int ticketKeyCb(SSL* s, unsigned char keyName[TLS_TICKETS_KEY_NAME_SIZE],
      unsigned char* iv, EVP_CIPHER_CTX* ectx, HMAC_CTX* hctx, int enc)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: reinterpret_cast<std::map<int, std::string>*>
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:927,1
    - Dst: libssl_ocsp_stapling_callback
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:928,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - ssl
    - arg
    argTypes:
    - SSL*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 929
      start: 922
    functionDepth: 0
    functionLinenumber: 922
    functionLinenumberEnd: 929
    functionName: ocspStaplingCb
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc
    functionUses: 0
    functionsReached:
    - reinterpret_cast<std::map<int, std::string>*>
    - libssl_ocsp_stapling_callback
    linkageType: ''
    returnType: int
    signature: int ocspStaplingCb(SSL* ssl, void* arg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: reinterpret_cast<OpenSSLTLSConnection*>
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:934,1
    - Dst: SSL_get_ex_data
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:934,1
    - Dst: getConnectionIndex
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:934,1
    - Dst: OpenSSLTLSConnection*::addNewTicket
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:940,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - ssl
    - session
    argTypes:
    - SSL*
    - SSL_SESSION*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 947
      start: 932
    functionDepth: 0
    functionLinenumber: 932
    functionLinenumberEnd: 947
    functionName: newTicketFromServerCb
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc
    functionUses: 0
    functionsReached:
    - reinterpret_cast<OpenSSLTLSConnection*>
    - SSL_get_ex_data
    - getConnectionIndex
    - OpenSSLTLSConnection*::addNewTicket
    linkageType: ''
    returnType: int
    signature: int newTicketFromServerCb(SSL* ssl, SSL_SESSION* session)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: d_tlsCtx::get
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:952,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:954,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 955
      start: 949
    functionDepth: 0
    functionLinenumber: 949
    functionLinenumberEnd: 955
    functionName: getOpenSSLContext
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc
    functionUses: 2
    functionsReached:
    - get
    - d_tlsCtx::get
    linkageType: ''
    returnType: SSL_CTX
    signature: SSL_CTX * getOpenSSLContext() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: handleTicketsKeyRotation
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:959,1
    - Dst: std::make_unique<OpenSSLTLSConnection>
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:961,1
    - Dst: shared_from_this
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:961,1
    - Dst: std::unique_ptr<SSL, void(*)(SSL*)>
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:961,1
    - Dst: SSL_new
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:961,1
    - Dst: getOpenSSLContext
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:961,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - socket
    - ' timeout'
    - now
    argTypes:
    - int
    - struct timeval
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 962
      start: 957
    functionDepth: 1
    functionLinenumber: 957
    functionLinenumberEnd: 962
    functionName: getConnection
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc
    functionUses: 4
    functionsReached:
    - handleTicketsKeyRotation
    - SSL_new
    - std::unique_ptr<SSL, void(*)(SSL*)>
    - std::make_unique<OpenSSLTLSConnection>
    - getOpenSSLContext
    - shared_from_this
    linkageType: ''
    returnType: std::unique_ptr<TLSConnection>
    signature: std::unique_ptr<TLSConnection> getConnection(int socket, const struct
      timeval& timeout, time_t now) override
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::make_unique<OpenSSLTLSConnection>
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:966,1
    - Dst: shared_from_this
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:966,1
    - Dst: std::unique_ptr<SSL, void(*)(SSL*)>
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:966,1
    - Dst: SSL_new
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:966,1
    - Dst: getOpenSSLContext
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:966,1
    - Dst: auto::enableKTLS
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:968,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 4
    argNames:
    - ' host'
    - hostIsAddr
    - socket
    - ' timeout'
    argTypes:
    - std::string
    - bool
    - int
    - struct timeval
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 971
      start: 964
    functionDepth: 0
    functionLinenumber: 964
    functionLinenumberEnd: 971
    functionName: getClientConnection
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc
    functionUses: 1
    functionsReached:
    - auto::enableKTLS
    - SSL_new
    - std::unique_ptr<SSL, void(*)(SSL*)>
    - std::make_unique<OpenSSLTLSConnection>
    - getOpenSSLContext
    - shared_from_this
    linkageType: ''
    returnType: std::unique_ptr<TLSConnection>
    signature: std::unique_ptr<TLSConnection> getClientConnection(const std::string&
      host, bool hostIsAddr, int socket, const struct timeval& timeout) override
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: d_ticketKeys::rotateTicketsKey
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:975,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - now
    argTypes:
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 980
      start: 973
    functionDepth: 0
    functionLinenumber: 973
    functionLinenumberEnd: 980
    functionName: rotateTicketsKey
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc
    functionUses: 5
    functionsReached:
    - d_ticketKeys::rotateTicketsKey
    linkageType: ''
    returnType: void
    signature: void rotateTicketsKey(time_t now) override
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: d_ticketKeys::loadTicketsKeys
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:984,1
    - Dst: time
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:987,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ' keyFile'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 989
      start: 982
    functionDepth: 0
    functionLinenumber: 982
    functionLinenumberEnd: 989
    functionName: loadTicketsKeys
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc
    functionUses: 7
    functionsReached:
    - time
    - d_ticketKeys::loadTicketsKeys
    linkageType: ''
    returnType: void
    signature: void loadTicketsKeys(const std::string& keyFile) final
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: d_ticketKeys::loadTicketsKey
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:993,1
    - Dst: time
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:996,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ' key'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 998
      start: 991
    functionDepth: 0
    functionLinenumber: 991
    functionLinenumberEnd: 998
    functionName: loadTicketsKey
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc
    functionUses: 4
    functionsReached:
    - time
    - d_ticketKeys::loadTicketsKey
    linkageType: ''
    returnType: void
    signature: void loadTicketsKey(const std::string& key) final
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: d_ticketKeys::getKeysCount
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1002,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1003
      start: 1000
    functionDepth: 0
    functionLinenumber: 1000
    functionLinenumberEnd: 1003
    functionName: getTicketsKeysCount
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc
    functionUses: 2
    functionsReached:
    - d_ticketKeys::getKeysCount
    linkageType: ''
    returnType: size_t
    signature: size_t getTicketsKeysCount() override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1008
      start: 1005
    functionDepth: 0
    functionLinenumber: 1005
    functionLinenumberEnd: 1008
    functionName: getName
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc
    functionUses: 71
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string getName() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1013
      start: 1010
    functionDepth: 0
    functionLinenumber: 1010
    functionLinenumberEnd: 1013
    functionName: isServerContext
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool isServerContext() const
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: reinterpret_cast<OpenSSLTLSIOCtx*>
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1023,1
    - Dst: pdns::views::UnsignedCharView::size
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1029,1
    - Dst: pdns::views::UnsignedCharView::at
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1030,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1037,1
    - Dst: memcmp
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1037,1
    - Dst: pdns::views::UnsignedCharView::at
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1037,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1037,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1037,1
    - Dst: pdns::views::UnsignedCharView::at
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1038,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 5
    argNames:
    - out
    - outlen
    - in
    - inlen
    - arg
    argTypes:
    - unsigned char**
    - unsigned char*
    - unsigned char*
    - unsigned int
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1047
      start: 1017
    functionDepth: 0
    functionLinenumber: 1017
    functionLinenumberEnd: 1047
    functionName: alpnServerSelectCallback
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc
    functionUses: 0
    functionsReached:
    - memcmp
    - pdns::views::UnsignedCharView::at
    - size
    - pdns::views::UnsignedCharView::size
    - reinterpret_cast<OpenSSLTLSIOCtx*>
    - data
    linkageType: ''
    returnType: int
    signature: int alpnServerSelectCallback(SSL*, const unsigned char** out, unsigned
      char* outlen, const unsigned char* in, unsigned int inlen, void* arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sodium_mlock
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1066,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - data
    - size
    argTypes:
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1068
      start: 1063
    functionDepth: 0
    functionLinenumber: 1063
    functionLinenumberEnd: 1068
    functionName: safe_memory_lock
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc
    functionUses: 4
    functionsReached:
    - sodium_mlock
    linkageType: ''
    returnType: void
    signature: void safe_memory_lock([[maybe_unused]] void* data, [[maybe_unused]]
      size_t size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sodium_munlock
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1073,1
    - Dst: SensitiveData::reallyClearContent
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1075,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - data
    - size
    argTypes:
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1077
      start: 1070
    functionDepth: 0
    functionLinenumber: 1070
    functionLinenumberEnd: 1077
    functionName: safe_memory_release
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc
    functionUses: 5
    functionsReached:
    - SensitiveData::reallyClearContent
    - sodium_munlock
    linkageType: ''
    returnType: void
    signature: void safe_memory_release(void* data, size_t size)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: gnutls_session_ticket_key_generate
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1084,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1085,1
    - Dst: safe_memory_lock
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1088,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1089
      start: 1082
    functionDepth: 0
    functionLinenumber: 1082
    functionLinenumberEnd: 1089
    functionName: GnuTLSTicketsKey::GnuTLSTicketsKey
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc
    functionUses: 0
    functionsReached:
    - gnutls_session_ticket_key_generate
    - safe_memory_lock
    - std::runtime_error
    linkageType: ''
    returnType: void
    signature: void GnuTLSTicketsKey()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: gnutls_session_ticket_key_generate
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1095,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1096,1
    - Dst: safe_memory_lock
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1099,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1100,1
    - Dst: safe_memory_release
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1101,1
    - Dst: gnutls_free
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1102,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1104,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1106,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1106,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1106,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 1
    argNames:
    - ' key'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1107
      start: 1091
    functionDepth: 0
    functionLinenumber: 1091
    functionLinenumberEnd: 1107
    functionName: GnuTLSTicketsKey::GnuTLSTicketsKey
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc
    functionUses: 0
    functionsReached:
    - memcpy
    - safe_memory_release
    - std::runtime_error
    - size
    - safe_memory_lock
    - data
    - gnutls_session_ticket_key_generate
    - gnutls_free
    linkageType: ''
    returnType: void
    signature: void GnuTLSTicketsKey(const std::string& key)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: gnutls_session_ticket_key_generate
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1112,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1113,1
    - Dst: safe_memory_lock
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1116,1
    - Dst: read
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1119,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1119,1
    - Dst: fail
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1121,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1122,1
    - Dst: safe_memory_release
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1127,1
    - Dst: gnutls_free
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1128,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 16
    argCount: 1
    argNames:
    - ' file'
    argTypes:
    - std::ifstream
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1132
      start: 1108
    functionDepth: 0
    functionLinenumber: 1108
    functionLinenumberEnd: 1132
    functionName: GnuTLSTicketsKey::GnuTLSTicketsKey
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc
    functionUses: 0
    functionsReached:
    - reinterpret_cast<char*>
    - safe_memory_release
    - read
    - std::runtime_error
    - fail
    - safe_memory_lock
    - gnutls_session_ticket_key_generate
    - gnutls_free
    linkageType: ''
    returnType: void
    signature: void GnuTLSTicketsKey(std::ifstream& file)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::string::append
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1138,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1138,1
    - Dst: safe_memory_lock
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1139,1
    - Dst: std::string::data
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1139,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1139,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1142
      start: 1133
    functionDepth: 0
    functionLinenumber: 1133
    functionLinenumberEnd: 1142
    functionName: GnuTLSTicketsKey::content
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc
    functionUses: 0
    functionsReached:
    - std::string::append
    - std::string::data
    - safe_memory_lock
    - reinterpret_cast<const char*>
    - std::string::size
    linkageType: ''
    returnType: std::string
    signature: std::string content() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: safe_memory_release
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1147,1
    - Dst: gnutls_free
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1149,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1151
      start: 1144
    functionDepth: 0
    functionLinenumber: 1144
    functionLinenumberEnd: 1151
    functionName: ~GnuTLSTicketsKey()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc
    functionUses: 0
    functionsReached:
    - safe_memory_release
    - gnutls_free
    linkageType: ''
    returnType: void
    signature: void ~GnuTLSTicketsKey()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1155
      start: 1152
    functionDepth: 0
    functionLinenumber: 1152
    functionLinenumberEnd: 1155
    functionName: '& getKey() const'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: gnutls_datum_t
    signature: gnutls_datum_t & getKey() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ' sess'
    argTypes:
    - gnutls_datum_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1168
      start: 1164
    functionDepth: 0
    functionLinenumber: 1164
    functionLinenumberEnd: 1168
    functionName: GnuTLSSession::GnuTLSSession
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void GnuTLSSession(gnutls_datum_t& sess)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: safe_memory_release
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1173,1
    - Dst: gnutls_free
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1175,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1177
      start: 1170
    functionDepth: 0
    functionLinenumber: 1170
    functionLinenumberEnd: 1177
    functionName: ~GnuTLSSession() override
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc
    functionUses: 0
    functionsReached:
    - safe_memory_release
    - gnutls_free
    linkageType: ''
    returnType: void
    signature: void ~GnuTLSSession() override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1182
      start: 1179
    functionDepth: 0
    functionLinenumber: 1179
    functionLinenumberEnd: 1182
    functionName: '& getNative()'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: gnutls_datum_t
    signature: gnutls_datum_t & getNative()
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: std::unique_ptr<gnutls_session_int, void(*)(gnutls_session_t)>
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1192,1
    - Dst: gnutls_init
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1202,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1203,1
    - Dst: std::unique_ptr<gnutls_session_int, void(*)(gnutls_session_t)>
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1206,1
    - Dst: gnutls_credentials_set
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1209,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1209,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1209,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1210,1
    - Dst: gnutls_priority_set
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1213,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1213,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1214,1
    - Dst: getKey
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1218,1
    - Dst: gnutls_session_ticket_enable_server
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1219,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1219,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1220,1
    - Dst: gnutls_transport_set_int
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1224,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1224,1
    - Dst: gnutls_handshake_set_timeout
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1227,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1227,1
    - Dst: gnutls_record_set_timeout
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1228,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1228,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 22
    argCount: 6
    argNames:
    - socket
    - ' timeout'
    - ' creds'
    - priorityCache
    - ' ticketsKey'
    - enableTickets
    argTypes:
    - int
    - struct timeval
    - std::shared_ptr<gnutls_certificate_credentials_st>
    - gnutls_priority_t
    - std::shared_ptr<GnuTLSTicketsKey>
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1229
      start: 1192
    functionDepth: 0
    functionLinenumber: 1192
    functionLinenumberEnd: 1229
    functionName: GnuTLSConnection
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc
    functionUses: 0
    functionsReached:
    - gnutls_handshake_set_timeout
    - std::runtime_error
    - gnutls_transport_set_int
    - gnutls_credentials_set
    - gnutls_record_set_timeout
    - get
    - getKey
    - gnutls_session_ticket_enable_server
    - gnutls_init
    - std::unique_ptr<gnutls_session_int, void(*)(gnutls_session_t)>
    - gnutls_priority_set
    linkageType: ''
    returnType: void
    signature: void GnuTLSConnection(int socket, const struct timeval& timeout, std::shared_ptr<gnutls_certificate_credentials_st>&
      creds, const gnutls_priority_t priorityCache, std::shared_ptr<GnuTLSTicketsKey>&
      ticketsKey, bool enableTickets)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: std::unique_ptr<gnutls_session_int, void(*)(gnutls_session_t)>
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1232,1
    - Dst: gnutls_init
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1242,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1243,1
    - Dst: std::unique_ptr<gnutls_session_int, void(*)(gnutls_session_t)>
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1246,1
    - Dst: gnutls_credentials_set
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1249,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1249,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1249,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1251,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1251,1
    - Dst: gnutls_strerror
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1251,1
    - Dst: gnutls_priority_set
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1254,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1254,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1256,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1256,1
    - Dst: gnutls_strerror
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1256,1
    - Dst: gnutls_transport_set_int
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1259,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1259,1
    - Dst: gnutls_handshake_set_timeout
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1262,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1262,1
    - Dst: gnutls_record_set_timeout
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1263,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1263,1
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1266,1
    - Dst: gnutls_session_set_verify_cert
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1267,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1267,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1267,1
    - Dst: gnutls_server_name_set
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1268,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1268,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1268,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1268,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1270,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1270,1
    - Dst: gnutls_strerror
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1270,1
    - Dst: gnutls_session_set_ptr
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1278,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1278,1
    - Dst: gnutls_handshake_set_hook_function
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1279,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1279,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 27
    argCount: 6
    argNames:
    - ' host'
    - socket
    - ' timeout'
    - ' creds'
    - priorityCache
    - validateCerts
    argTypes:
    - std::string
    - int
    - struct timeval
    - std::shared_ptr<gnutls_certificate_credentials_st>
    - gnutls_priority_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1280
      start: 1232
    functionDepth: 0
    functionLinenumber: 1232
    functionLinenumberEnd: 1280
    functionName: GnuTLSConnection
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc
    functionUses: 0
    functionsReached:
    - gnutls_session_set_verify_cert
    - gnutls_handshake_set_timeout
    - gnutls_session_set_ptr
    - gnutls_server_name_set
    - c_str
    - std::runtime_error
    - gnutls_transport_set_int
    - gnutls_credentials_set
    - gnutls_record_set_timeout
    - size
    - get
    - gnutls_strerror
    - gnutls_handshake_set_hook_function
    - empty
    - std::string
    - gnutls_init
    - std::unique_ptr<gnutls_session_int, void(*)(gnutls_session_t)>
    - gnutls_priority_set
    linkageType: ''
    returnType: void
    signature: void GnuTLSConnection(const std::string& host, int socket, const struct
      timeval& timeout, std::shared_ptr<gnutls_certificate_credentials_st>& creds,
      const gnutls_priority_t priorityCache, bool validateCerts)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: reinterpret_cast<GnuTLSConnection*>
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1294,1
    - Dst: gnutls_session_get_ptr
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1294,1
    - Dst: gnutls_session_get_data2
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1300,1
    - Dst: gnutls_free
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1304,1
    - Dst: auto*::d_tlsSessions::push_back
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1308,1
    - Dst: std::make_unique<GnuTLSSession>
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1308,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 15
    argCount: 3
    argNames:
    - session
    - htype
    - post
    argTypes:
    - gnutls_session_t
    - unsigned int
    - unsigned
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1310
      start: 1286
    functionDepth: 0
    functionLinenumber: 1286
    functionLinenumberEnd: 1310
    functionName: newTicketFromServerCb
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc
    functionUses: 0
    functionsReached:
    - reinterpret_cast<GnuTLSConnection*>
    - auto*::d_tlsSessions::push_back
    - gnutls_session_get_ptr
    - gnutls_session_get_data2
    - std::make_unique<GnuTLSSession>
    - gnutls_free
    linkageType: ''
    returnType: int
    signature: int newTicketFromServerCb(gnutls_session_t session, unsigned int htype,
      unsigned post, unsigned int /* incoming */)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: gnutls_transport_set_fastopen
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1318,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1318,1
    - Dst: const_cast<struct sockaddr*>
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1318,1
    - Dst: reinterpret_cast<const struct sockaddr*>
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1318,1
    - Dst: getSocklen
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1318,1
    - Dst: gnutls_handshake
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1323,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1323,1
    - Dst: gnutls_record_get_direction
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1329,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1329,1
    - Dst: gnutls_error_is_fatal
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1332,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1333,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1333,1
    - Dst: gnutls_strerror
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1333,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1337,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1337,1
    - Dst: gnutls_strerror
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1337,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 18
    argCount: 2
    argNames:
    - fastOpen
    - ' remote'
    argTypes:
    - bool
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1338
      start: 1312
    functionDepth: 0
    functionLinenumber: 1312
    functionLinenumberEnd: 1338
    functionName: tryConnect
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc
    functionUses: 3
    functionsReached:
    - std::runtime_error
    - gnutls_handshake
    - gnutls_record_get_direction
    - const_cast<struct sockaddr*>
    - get
    - gnutls_transport_set_fastopen
    - reinterpret_cast<const struct sockaddr*>
    - gnutls_strerror
    - std::string
    - getSocklen
    - gnutls_error_is_fatal
    linkageType: ''
    returnType: IOState
    signature: IOState tryConnect(bool fastOpen, [[maybe_unused]] const ComboAddress&
      remote) override
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: gettimeofday
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1345,1
    - Dst: tryConnect
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1350,1
    - Dst: waitForData
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1355,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1357,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1357,1
    - Dst: waitForRWData
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1361,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1363,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1363,1
    - Dst: gettimeofday
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1369,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1372,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 28
    argCount: 3
    argNames:
    - fastOpen
    - ' remote'
    - ' timeout'
    argTypes:
    - bool
    - ComboAddress
    - struct timeval
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1379
      start: 1340
    functionDepth: 0
    functionLinenumber: 1340
    functionLinenumberEnd: 1379
    functionName: connect
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc
    functionUses: 38
    functionsReached:
    - std::to_string
    - std::runtime_error
    - tryConnect
    - runtime_error
    - waitForData
    - gettimeofday
    - waitForRWData
    linkageType: ''
    returnType: void
    signature: void connect(bool fastOpen, const ComboAddress& remote, const struct
      timeval& timeout) override
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: gnutls_handshake
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1385,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1385,1
    - Dst: gnutls_error_is_fatal
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1386,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1388,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1388,1
    - Dst: gnutls_strerror
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1388,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1391,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1391,1
    - Dst: gnutls_strerror
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1391,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1398
      start: 1381
    functionDepth: 0
    functionLinenumber: 1381
    functionLinenumberEnd: 1398
    functionName: doHandshake
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc
    functionUses: 0
    functionsReached:
    - std::runtime_error
    - gnutls_handshake
    - get
    - gnutls_strerror
    - std::string
    - gnutls_error_is_fatal
    linkageType: ''
    returnType: void
    signature: void doHandshake() override
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: gnutls_handshake
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1405,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1405,1
    - Dst: gnutls_record_get_direction
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1411,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1411,1
    - Dst: gnutls_error_is_fatal
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1414,1
    - Dst: gnutls_certificate_verification_status_print
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1420,1
    - Dst: gnutls_session_get_verify_cert_status
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1420,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1420,1
    - Dst: gnutls_certificate_type_get
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1420,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1420,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1421,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1421,1
    - Dst: gnutls_free
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1422,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1426,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1426,1
    - Dst: gnutls_strerror
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1426,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1429,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1429,1
    - Dst: gnutls_strerror
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1429,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1435,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1435,1
    - Dst: gnutls_strerror
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1435,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1438,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1438,1
    - Dst: gnutls_strerror
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1438,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 29
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1440
      start: 1400
    functionDepth: 0
    functionLinenumber: 1400
    functionLinenumberEnd: 1440
    functionName: tryHandshake
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc
    functionUses: 3
    functionsReached:
    - gnutls_certificate_verification_status_print
    - gnutls_certificate_type_get
    - std::runtime_error
    - gnutls_handshake
    - gnutls_record_get_direction
    - get
    - gnutls_session_get_verify_cert_status
    - reinterpret_cast<const char*>
    - gnutls_strerror
    - std::string
    - gnutls_error_is_fatal
    - gnutls_free
    linkageType: ''
    returnType: IOState
    signature: IOState tryHandshake() override
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: tryHandshake
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1447,1
    - Dst: gnutls_record_send
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1454,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1454,1
    - Dst: reinterpret_cast<const char *>
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1454,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1454,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1456,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1459,1
    - Dst: gnutls_error_is_fatal
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1462,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1463,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1463,1
    - Dst: gnutls_strerror
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1463,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1468,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1468,1
    - Dst: gnutls_strerror
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1468,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1469,1
    - Dst: gnutls_strerror
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1469,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1469,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 24
    argCount: 3
    argNames:
    - ' buffer'
    - ' pos'
    - toWrite
    argTypes:
    - PacketBuffer
    - size_t
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1474
      start: 1442
    functionDepth: 1
    functionLinenumber: 1442
    functionLinenumberEnd: 1474
    functionName: tryWrite
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc
    functionUses: 4
    functionsReached:
    - gnutls_record_send
    - static_cast<size_t>
    - std::runtime_error
    - Logging::Loggable
    - VERBOSESLOG
    - infolog
    - get
    - reinterpret_cast<const char *>
    - tryHandshake
    - gnutls_strerror
    - dnsdist::logging::getTopLogger
    - std::string
    - at
    - gnutls_error_is_fatal
    linkageType: ''
    returnType: IOState
    signature: IOState tryWrite(const PacketBuffer& buffer, size_t& pos, size_t toWrite)
      override
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: tryHandshake
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1481,1
    - Dst: gnutls_record_recv
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1488,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1488,1
    - Dst: reinterpret_cast<char *>
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1488,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1488,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1490,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1493,1
    - Dst: gnutls_error_is_fatal
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1499,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1500,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1500,1
    - Dst: gnutls_strerror
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1500,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1505,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1505,1
    - Dst: gnutls_strerror
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1505,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1506,1
    - Dst: gnutls_strerror
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1506,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1506,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 27
    argCount: 4
    argNames:
    - ' buffer'
    - ' pos'
    - toRead
    - allowIncomplete
    argTypes:
    - PacketBuffer
    - size_t
    - size_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1511
      start: 1476
    functionDepth: 1
    functionLinenumber: 1476
    functionLinenumberEnd: 1511
    functionName: tryRead
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc
    functionUses: 3
    functionsReached:
    - static_cast<size_t>
    - gnutls_record_recv
    - std::runtime_error
    - Logging::Loggable
    - VERBOSESLOG
    - infolog
    - get
    - std::string
    - tryHandshake
    - gnutls_strerror
    - dnsdist::logging::getTopLogger
    - reinterpret_cast<char *>
    - at
    - gnutls_error_is_fatal
    linkageType: ''
    returnType: IOState
    signature: IOState tryRead(PacketBuffer& buffer, size_t& pos, size_t toRead, bool
      allowIncomplete) override
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: gettimeofday
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1519,1
    - Dst: gnutls_record_recv
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1523,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1523,1
    - Dst: reinterpret_cast<char *>
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1523,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1525,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1528,1
    - Dst: gnutls_error_is_fatal
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1534,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1535,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1535,1
    - Dst: gnutls_strerror
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1535,1
    - Dst: waitForData
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1538,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1540,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1540,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1544,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1544,1
    - Dst: gnutls_strerror
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1544,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1545,1
    - Dst: gnutls_strerror
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1545,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1545,1
    - Dst: gettimeofday
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1551,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1554,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 36
    argCount: 5
    argNames:
    - buffer
    - bufferSize
    - ' readTimeout'
    - ' totalTimeout'
    - allowIncomplete
    argTypes:
    - void*
    - size_t
    - struct timeval
    - struct timeval
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1563
      start: 1513
    functionDepth: 1
    functionLinenumber: 1513
    functionLinenumberEnd: 1563
    functionName: read
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc
    functionUses: 75
    functionsReached:
    - static_cast<size_t>
    - gnutls_record_recv
    - std::to_string
    - std::runtime_error
    - Logging::Loggable
    - VERBOSESLOG
    - waitForData
    - infolog
    - get
    - runtime_error
    - gnutls_strerror
    - gettimeofday
    - dnsdist::logging::getTopLogger
    - reinterpret_cast<char *>
    - std::string
    - gnutls_error_is_fatal
    linkageType: ''
    returnType: size_t
    signature: size_t read(void* buffer, size_t bufferSize, const struct timeval&
      readTimeout, const struct timeval& totalTimeout, bool allowIncomplete) override
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: gnutls_record_send
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1570,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1570,1
    - Dst: reinterpret_cast<const char *>
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1570,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1572,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1575,1
    - Dst: gnutls_error_is_fatal
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1578,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1579,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1579,1
    - Dst: gnutls_strerror
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1579,1
    - Dst: waitForRWData
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1582,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1584,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1584,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1588,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1588,1
    - Dst: gnutls_strerror
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1588,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1589,1
    - Dst: gnutls_strerror
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1589,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1589,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 22
    argCount: 3
    argNames:
    - buffer
    - bufferSize
    - ' writeTimeout'
    argTypes:
    - void*
    - size_t
    - struct timeval
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1596
      start: 1565
    functionDepth: 1
    functionLinenumber: 1565
    functionLinenumberEnd: 1596
    functionName: write
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc
    functionUses: 44
    functionsReached:
    - gnutls_record_send
    - static_cast<size_t>
    - std::to_string
    - std::runtime_error
    - Logging::Loggable
    - VERBOSESLOG
    - infolog
    - get
    - reinterpret_cast<const char *>
    - gnutls_strerror
    - dnsdist::logging::getTopLogger
    - std::string
    - waitForRWData
    - gnutls_error_is_fatal
    linkageType: ''
    returnType: size_t
    signature: size_t write(const void* buffer, size_t bufferSize, const struct timeval&
      writeTimeout) override
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: isTCPSocketUsable
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1605,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1606
      start: 1598
    functionDepth: 0
    functionLinenumber: 1598
    functionLinenumberEnd: 1606
    functionName: isUsable
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc
    functionUses: 2
    functionsReached:
    - isTCPSocketUsable
    linkageType: ''
    returnType: bool
    signature: bool isUsable() const override
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: std::string::resize
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1614,1
    - Dst: gnutls_server_name_get
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1616,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1616,1
    - Dst: const_cast<char*>
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1616,1
    - Dst: std::string::c_str
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1616,1
    - Dst: std::string::resize
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1618,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1622,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1623
      start: 1608
    functionDepth: 1
    functionLinenumber: 1608
    functionLinenumberEnd: 1623
    functionName: getServerNameIndication
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc
    functionUses: 1
    functionsReached:
    - gnutls_server_name_get
    - const_cast<char*>
    - std::string::c_str
    - get
    - std::string::resize
    - std::string
    linkageType: ''
    returnType: std::string
    signature: std::string getServerNameIndication() const override
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: gnutls_alpn_get_selected_protocol
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1632,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1632,1
    - Dst: std::vector::insert
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1635,1
    - Dst: std::vector::end
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1635,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1637
      start: 1625
    functionDepth: 1
    functionLinenumber: 1625
    functionLinenumberEnd: 1637
    functionName: getNextProtocol
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc
    functionUses: 1
    functionsReached:
    - std::vector::end
    - std::vector::insert
    - gnutls_alpn_get_selected_protocol
    - get
    linkageType: ''
    returnType: std::vector<uint8_t>
    signature: std::vector<uint8_t> getNextProtocol() const override
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: gnutls_protocol_get_version
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1641,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1641,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1656
      start: 1639
    functionDepth: 0
    functionLinenumber: 1639
    functionLinenumberEnd: 1656
    functionName: getTLSVersion
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc
    functionUses: 1
    functionsReached:
    - gnutls_protocol_get_version
    - get
    linkageType: ''
    returnType: LibsslTLSVersion
    signature: LibsslTLSVersion getTLSVersion() const override
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: gnutls_session_get_verify_cert_status
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1661,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1661,1
    - Dst: gnutls_certificate_verification_status_print
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1663,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1664,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1664,1
    - Dst: gnutls_free
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1665,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1671
      start: 1658
    functionDepth: 0
    functionLinenumber: 1658
    functionLinenumberEnd: 1671
    functionName: getVerifyResult
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc
    functionUses: 1
    functionsReached:
    - gnutls_certificate_verification_status_print
    - get
    - gnutls_session_get_verify_cert_status
    - reinterpret_cast<const char*>
    - std::string
    - gnutls_free
    linkageType: ''
    returnType: std::pair<long, std::string>
    signature: std::pair<long, std::string> getVerifyResult() const override
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: gnutls_session_is_resumed
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1676,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1676,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1679
      start: 1673
    functionDepth: 0
    functionLinenumber: 1673
    functionLinenumberEnd: 1679
    functionName: hasSessionBeenResumed
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc
    functionUses: 1
    functionsReached:
    - gnutls_session_is_resumed
    - get
    linkageType: ''
    returnType: bool
    signature: bool hasSessionBeenResumed() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1683,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1684
      start: 1681
    functionDepth: 0
    functionLinenumber: 1681
    functionLinenumberEnd: 1684
    functionName: getSessions
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc
    functionUses: 1
    functionsReached:
    - std::move
    linkageType: ''
    returnType: std::vector<std::unique_ptr<TLSSession>>
    signature: std::vector<std::unique_ptr<TLSSession>> getSessions() override
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dynamic_cast<GnuTLSSession*>
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1688,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1688,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1690,1
    - Dst: auto::getNative
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1693,1
    - Dst: gnutls_session_set_data
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1694,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1694,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1696,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1696,1
    - Dst: gnutls_strerror
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1696,1
    - Dst: reset
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1698,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 1
    argNames:
    - ' session'
    argTypes:
    - std::unique_ptr<TLSSession>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1699
      start: 1686
    functionDepth: 0
    functionLinenumber: 1686
    functionLinenumberEnd: 1699
    functionName: setSession
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc
    functionUses: 1
    functionsReached:
    - gnutls_session_set_data
    - reset
    - std::runtime_error
    - get
    - gnutls_strerror
    - std::string
    - auto::getNative
    - dynamic_cast<GnuTLSSession*>
    linkageType: ''
    returnType: void
    signature: void setSession(std::unique_ptr<TLSSession>& session) override
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: gnutls_bye
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1704,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1704,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1706
      start: 1701
    functionDepth: 0
    functionLinenumber: 1701
    functionLinenumberEnd: 1706
    functionName: close
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc
    functionUses: 85
    functionsReached:
    - gnutls_bye
    - get
    linkageType: ''
    returnType: void
    signature: void close() override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::vector::reserve
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1711,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1711,1
    - Dst: const_cast<uint8_t*>
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1714,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1714,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1715,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1716,1
    - Dst: gnutls_alpn_set_protocols
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1724,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1724,1
    - Dst: std::vector::data
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1724,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1724,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - ' protos'
    argTypes:
    - std::vector<std::vector<uint8_t>>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1725
      start: 1708
    functionDepth: 0
    functionLinenumber: 1708
    functionLinenumberEnd: 1725
    functionName: setALPNProtos
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc
    functionUses: 2
    functionsReached:
    - std::vector::push_back
    - std::vector::size
    - size
    - get
    - std::vector::reserve
    - const_cast<uint8_t*>
    - gnutls_alpn_set_protocols
    - data
    - std::vector::data
    linkageType: ''
    returnType: bool
    signature: bool setALPNProtos(const std::vector<std::vector<uint8_t>>& protos)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1730
      start: 1727
    functionDepth: 0
    functionLinenumber: 1727
    functionLinenumberEnd: 1730
    functionName: getAsyncFDs
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: std::vector<int>
    signature: std::vector<int> getAsyncFDs() override
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: getALPNVector
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1746,1
    - Dst: gnutls_certificate_allocate_credentials
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1752,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1754,1
    - Dst: d_addr::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1754,1
    - Dst: gnutls_strerror
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1754,1
    - Dst: std::shared_ptr<gnutls_certificate_credentials_st>
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1757,1
    - Dst: gnutls_certificate_set_x509_key_file
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1761,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1761,1
    - Dst: d_cert::c_str
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1761,1
    - Dst: d_key::c_str
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1761,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1763,1
    - Dst: d_key::value
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1763,1
    - Dst: d_addr::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1763,1
    - Dst: gnutls_strerror
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1763,1
    - Dst: gnutls_certificate_set_ocsp_status_request_file
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1770,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1770,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1770,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1773,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1773,1
    - Dst: d_tlsConfig::d_certKeyPairs::at
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1773,1
    - Dst: d_tlsConfig::d_certKeyPairs::at
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1773,1
    - Dst: value
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1773,1
    - Dst: d_addr::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1773,1
    - Dst: gnutls_strerror
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1773,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1774,1
    - Dst: gnutls_strerror
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1774,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1774,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1774,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1774,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1774,1
    - Dst: d_tlsConfig::d_certKeyPairs::at
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1774,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1774,1
    - Dst: d_tlsConfig::d_certKeyPairs::at
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1774,1
    - Dst: value
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1774,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1776,1
    - Dst: d_tlsConfig::d_certKeyPairs::at
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1776,1
    - Dst: d_tlsConfig::d_certKeyPairs::at
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1776,1
    - Dst: value
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1776,1
    - Dst: d_addr::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1776,1
    - Dst: gnutls_strerror
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1776,1
    - Dst: gnutls_certificate_set_known_dh_params
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1784,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1784,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1786,1
    - Dst: d_addr::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1786,1
    - Dst: gnutls_strerror
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1786,1
    - Dst: gnutls_priority_init
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1790,1
    - Dst: d_tlsConfig::d_ciphers::empty
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1790,1
    - Dst: d_tlsConfig::d_ciphers::c_str
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1790,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1792,1
    - Dst: gnutls_strerror
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1792,1
    - Dst: d_addr::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1792,1
    - Dst: d_tlsConfig::d_ticketKeyFile::empty
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1796,1
    - Dst: handleTicketsKeyRotation
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1797,1
    - Dst: time
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1797,1
    - Dst: GnuTLSIOCtx::loadTicketsKeys
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1800,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1804,1
    - Dst: d_addr::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1804,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1804,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 37
    argCount: 1
    argNames:
    - ' frontend'
    argTypes:
    - TLSFrontend
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1806
      start: 1746
    functionDepth: 1
    functionLinenumber: 1746
    functionLinenumberEnd: 1806
    functionName: GnuTLSIOCtx::GnuTLSIOCtx
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc
    functionUses: 0
    functionsReached:
    - handleTicketsKeyRotation
    - gnutls_certificate_set_ocsp_status_request_file
    - d_tlsConfig::d_ticketKeyFile::empty
    - d_key::value
    - gnutls_strerror
    - d_tlsConfig::d_certKeyPairs::at
    - SLOG
    - Logging::Loggable
    - gnutls_certificate_allocate_credentials
    - time
    - warnlog
    - d_addr::toStringWithPort
    - dnsdist::logging::getTopLogger
    - c_str
    - GnuTLSIOCtx::loadTicketsKeys
    - getALPNVector
    - std::runtime_error
    - gnutls_certificate_set_x509_key_file
    - get
    - d_cert::c_str
    - gnutls_certificate_set_known_dh_params
    - gnutls_priority_init
    - d_tlsConfig::d_ciphers::empty
    - d_key::c_str
    - value
    - std::shared_ptr<gnutls_certificate_credentials_st>
    - what
    - d_tlsConfig::d_ciphers::c_str
    linkageType: ''
    returnType: void
    signature: void GnuTLSIOCtx(TLSFrontend& frontend)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: getALPNVector
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1809,1
    - Dst: std::make_unique<TLSContextParameters>
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1809,1
    - Dst: gnutls_certificate_allocate_credentials
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1814,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1816,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1816,1
    - Dst: gnutls_strerror
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1816,1
    - Dst: std::shared_ptr<gnutls_certificate_credentials_st>
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1819,1
    - Dst: d_caStore::empty
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1823,1
    - Dst: gnutls_certificate_set_x509_system_trust
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1828,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1828,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1830,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1830,1
    - Dst: gnutls_strerror
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1830,1
    - Dst: gnutls_certificate_set_x509_trust_file
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1834,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1834,1
    - Dst: d_caStore::c_str
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1834,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1836,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1836,1
    - Dst: gnutls_strerror
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1836,1
    - Dst: gnutls_priority_init
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1841,1
    - Dst: d_ciphers::empty
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1841,1
    - Dst: d_ciphers::c_str
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1841,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1843,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1843,1
    - Dst: gnutls_strerror
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1843,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 25
    argCount: 1
    argNames:
    - ' params'
    argTypes:
    - TLSContextParameters
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1845
      start: 1809
    functionDepth: 0
    functionLinenumber: 1809
    functionLinenumberEnd: 1845
    functionName: GnuTLSIOCtx::GnuTLSIOCtx
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc
    functionUses: 0
    functionsReached:
    - d_ciphers::empty
    - getALPNVector
    - std::runtime_error
    - std::make_unique<TLSContextParameters>
    - gnutls_certificate_allocate_credentials
    - std::shared_ptr<gnutls_certificate_credentials_st>
    - gnutls_certificate_set_x509_trust_file
    - get
    - d_caStore::empty
    - gnutls_strerror
    - gnutls_certificate_set_x509_system_trust
    - gnutls_priority_init
    - std::string
    - d_caStore::c_str
    - d_ciphers::c_str
    linkageType: ''
    returnType: void
    signature: void GnuTLSIOCtx(const TLSContextParameters& params)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: reset
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1849,1
    - Dst: gnutls_priority_deinit
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1852,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1854
      start: 1847
    functionDepth: 0
    functionLinenumber: 1847
    functionLinenumberEnd: 1854
    functionName: ~GnuTLSIOCtx() override
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc
    functionUses: 0
    functionsReached:
    - reset
    - gnutls_priority_deinit
    linkageType: ''
    returnType: void
    signature: void ~GnuTLSIOCtx() override
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: handleTicketsKeyRotation
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1858,1
    - Dst: read_lock
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1862,1
    - Dst: std::make_unique<GnuTLSConnection>
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1865,1
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1866,1
    - Dst: auto::setALPNProtos
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1867,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 3
    argNames:
    - socket
    - ' timeout'
    - now
    argTypes:
    - int
    - struct timeval
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1870
      start: 1856
    functionDepth: 1
    functionLinenumber: 1856
    functionLinenumberEnd: 1870
    functionName: GnuTLSIOCtx::getConnection
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc
    functionUses: 0
    functionsReached:
    - handleTicketsKeyRotation
    - auto::setALPNProtos
    - read_lock
    - empty
    - std::make_unique<GnuTLSConnection>
    linkageType: ''
    returnType: std::unique_ptr<TLSConnection>
    signature: std::unique_ptr<TLSConnection> getConnection(int socket, const struct
      timeval& timeout, time_t now) override
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: gnutls_certificate_allocate_credentials
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1878,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1880,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1880,1
    - Dst: gnutls_strerror
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1880,1
    - Dst: std::shared_ptr<gnutls_certificate_credentials_st>
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1883,1
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1887,1
    - Dst: gnutls_certificate_set_x509_system_trust
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1888,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1888,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1890,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1890,1
    - Dst: gnutls_strerror
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1890,1
    - Dst: gnutls_certificate_set_x509_trust_file
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1894,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1894,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1894,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1896,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1896,1
    - Dst: gnutls_strerror
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1896,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 22
    argCount: 2
    argNames:
    - validate
    - ' caStore'
    argTypes:
    - bool
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1902
      start: 1872
    functionDepth: 0
    functionLinenumber: 1872
    functionLinenumberEnd: 1902
    functionName: GnuTLSIOCtx::getPerThreadCredentials
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc
    functionUses: 1
    functionsReached:
    - c_str
    - std::runtime_error
    - std::shared_ptr<gnutls_certificate_credentials_st>
    - gnutls_certificate_allocate_credentials
    - gnutls_certificate_set_x509_trust_file
    - get
    - gnutls_certificate_set_x509_system_trust
    - gnutls_strerror
    - empty
    - std::string
    linkageType: ''
    returnType: std::shared_ptr<gnutls_certificate_credentials_st>
    signature: std::shared_ptr<gnutls_certificate_credentials_st> getPerThreadCredentials(bool
      validate, const std::string& caStore)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: GnuTLSIOCtx::getPerThreadCredentials
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1906,1
    - Dst: std::make_unique<GnuTLSConnection>
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1907,1
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1908,1
    - Dst: auto::setALPNProtos
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1909,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - ' host'
    - socket
    - ' timeout'
    argTypes:
    - std::string
    - int
    - struct timeval
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1912
      start: 1904
    functionDepth: 0
    functionLinenumber: 1904
    functionLinenumberEnd: 1912
    functionName: GnuTLSIOCtx::getClientConnection
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc
    functionUses: 0
    functionsReached:
    - empty
    - GnuTLSIOCtx::getPerThreadCredentials
    - auto::setALPNProtos
    - std::make_unique<GnuTLSConnection>
    linkageType: ''
    returnType: std::unique_ptr<TLSConnection>
    signature: std::unique_ptr<TLSConnection> getClientConnection(const std::string&
      host, bool, int socket, const struct timeval& timeout) override
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: write_lock
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1921,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1921,1
    - Dst: TLSCtx::hasTicketsKeyAddedHook
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1928,1
    - Dst: read_lock
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1929,1
    - Dst: auto::content
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1930,1
    - Dst: TLSCtx::getTicketsKeyAddedHook
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1931,1
    - Dst: safe_memory_release
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1932,1
    - Dst: auto::data
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1932,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1932,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 2
    argNames:
    - now
    - ' newKey'
    argTypes:
    - time_t
    - std::shared_ptr<GnuTLSTicketsKey>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1934
      start: 1914
    functionDepth: 0
    functionLinenumber: 1914
    functionLinenumberEnd: 1934
    functionName: GnuTLSIOCtx::addTicketsKey
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc
    functionUses: 3
    functionsReached:
    - std::move
    - TLSCtx::getTicketsKeyAddedHook
    - safe_memory_release
    - auto::content
    - read_lock
    - auto::data
    - TLSCtx::hasTicketsKeyAddedHook
    - write_lock
    - auto::size
    linkageType: ''
    returnType: void
    signature: void addTicketsKey(time_t now, std::shared_ptr<GnuTLSTicketsKey>&&
      newKey)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<GnuTLSTicketsKey>
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1941,1
    - Dst: GnuTLSIOCtx::addTicketsKey
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1942,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1942,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - now
    argTypes:
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1943
      start: 1935
    functionDepth: 0
    functionLinenumber: 1935
    functionLinenumberEnd: 1943
    functionName: GnuTLSIOCtx::rotateTicketsKey
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc
    functionUses: 0
    functionsReached:
    - std::make_shared<GnuTLSTicketsKey>
    - std::move
    - GnuTLSIOCtx::addTicketsKey
    linkageType: ''
    returnType: void
    signature: void rotateTicketsKey(time_t now) override
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<GnuTLSTicketsKey>
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1950,1
    - Dst: GnuTLSIOCtx::addTicketsKey
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1951,1
    - Dst: time
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1951,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1951,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ' key'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1952
      start: 1944
    functionDepth: 0
    functionLinenumber: 1944
    functionLinenumberEnd: 1952
    functionName: GnuTLSIOCtx::loadTicketsKey
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc
    functionUses: 0
    functionsReached:
    - std::make_shared<GnuTLSTicketsKey>
    - time
    - std::move
    - GnuTLSIOCtx::addTicketsKey
    linkageType: ''
    returnType: void
    signature: void loadTicketsKey(const std::string& key) final
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<GnuTLSTicketsKey>
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1961,1
    - Dst: GnuTLSIOCtx::addTicketsKey
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1962,1
    - Dst: time
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1962,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1962,1
    - Dst: std::ifstream::close
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1963,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - ' keyFile'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1964
      start: 1954
    functionDepth: 0
    functionLinenumber: 1954
    functionLinenumberEnd: 1964
    functionName: GnuTLSIOCtx::loadTicketsKeys
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc
    functionUses: 2
    functionsReached:
    - std::move
    - std::ifstream::close
    - GnuTLSIOCtx::addTicketsKey
    - time
    - std::make_shared<GnuTLSTicketsKey>
    linkageType: ''
    returnType: void
    signature: void loadTicketsKeys(const std::string& keyFile) final
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: read_lock
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1968,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1969
      start: 1966
    functionDepth: 0
    functionLinenumber: 1966
    functionLinenumberEnd: 1969
    functionName: GnuTLSIOCtx::getTicketsKeysCount
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc
    functionUses: 0
    functionsReached:
    - read_lock
    linkageType: ''
    returnType: size_t
    signature: size_t getTicketsKeysCount() override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1974
      start: 1971
    functionDepth: 0
    functionLinenumber: 1971
    functionLinenumberEnd: 1974
    functionName: GnuTLSIOCtx::getName
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string getName() const override
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: setupTLS
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1991,1
    - Dst: getContext
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1996,1
    - Dst: std::atomic_store_explicit
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1998,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:1998,1
    - Dst: std::make_shared<GnuTLSIOCtx>
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:2006,1
    - Dst: createServerSideContext
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:2011,1
    - Dst: createServerSideContext
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:2017,1
    - Dst: std::make_shared<GnuTLSIOCtx>
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:2019,1
    - Dst: std::atomic_store_explicit
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:2025,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:2025,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2028
      start: 1991
    functionDepth: 0
    functionLinenumber: 1991
    functionLinenumberEnd: 2028
    functionName: TLSFrontend
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc
    functionUses: 1
    functionsReached:
    - std::move
    - std::make_shared<GnuTLSIOCtx>
    - std::atomic_store_explicit
    - createServerSideContext
    - getContext
    - setupTLS
    linkageType: ''
    returnType: bool
    signature: bool TLSFrontend
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: d_provider::empty
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:2034,1
    - Dst: std::make_shared<GnuTLSIOCtx>
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:2037,1
    - Dst: createClientSideContext
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:2042,1
    - Dst: createClientSideContext
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:2048,1
    - Dst: std::make_shared<GnuTLSIOCtx>
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc:2050,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - ' params'
    argTypes:
    - TLSContextParameters
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2057
      start: 2030
    functionDepth: 0
    functionLinenumber: 2030
    functionLinenumberEnd: 2057
    functionName: getTLSContext
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc
    functionUses: 1
    functionsReached:
    - std::make_shared<GnuTLSIOCtx>
    - d_provider::empty
    - createClientSideContext
    linkageType: ''
    returnType: std::shared_ptr<TLSCtx>
    signature: std::shared_ptr<TLSCtx> getTLSContext([[maybe_unused]] const TLSContextParameters&
      params)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:28,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:31,1
    - Dst: DNSPacketWriter::xfrIP
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:32,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:33,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:36,1
    - Dst: DNSPacketWriter::xfrIP
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:37,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:38,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:41,1
    - Dst: DNSPacketWriter::xfrIP6
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:42,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:42,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:42,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:43,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:46,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:47,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:50,1
    - Dst: DNSPacketWriter::xfrIP
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:51,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:52,1
    - Dst: generatePacket
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:57,1
    - Dst: generatePacket
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:58,1
    - Dst: editDNSPacketTTL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:61,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:61,1
    - Dst: auto::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:61,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:61,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:73,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:75,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:75,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:75,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:76,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:77,1
    - Dst: auto::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:77,1
    - Dst: auto::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:77,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:79,1
    - Dst: editDNSPacketTTL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:84,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:84,1
    - Dst: auto::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:84,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:84,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:96,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:97,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 41
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 19
    functionDepth: 1
    functionLinenumber: 19
    functionLinenumberEnd: 98
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc
    functionUses: 0
    functionsReached:
    - reinterpret_cast<char*>
    - DNSPacketWriter::xfrIP6
    - DNSPacketWriter::commit
    - BOOST_CHECK
    - DNSPacketWriter::getHeader
    - auto::data
    - BOOST_CHECK_EQUAL
    - reinterpret_cast<const char*>
    - generatePacket
    - editDNSPacketTTL
    - auto::at
    - std::string
    - DNSPacketWriter::startRecord
    - DNSPacketWriter::xfrIP
    - BOOST_REQUIRE_EQUAL
    - auto::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_editDNSPacketTTL)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:109,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:112,1
    - Dst: DNSPacketWriter::xfrIP
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:113,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:114,1
    - Dst: DNSPacketWriter::addOpt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:116,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:117,1
    - Dst: generatePacket
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:122,1
    - Dst: generatePacket
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:123,1
    - Dst: auto::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:125,1
    - Dst: ageDNSPacket
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:126,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:126,1
    - Dst: auto::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:126,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:126,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:128,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:128,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:128,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:129,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:130,1
    - Dst: auto::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:130,1
    - Dst: auto::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:130,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:132,1
    - Dst: ageDNSPacket
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:136,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:136,1
    - Dst: auto::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:136,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:136,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:138,1
    - Dst: ageDNSPacket
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:143,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:143,1
    - Dst: auto::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:143,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:143,1
    - Dst: generatePacket
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:147,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:148,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:148,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:148,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:149,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:150,1
    - Dst: auto::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:150,1
    - Dst: auto::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:150,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:152,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 24
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 153
      start: 100
    functionDepth: 1
    functionLinenumber: 100
    functionLinenumberEnd: 153
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc
    functionUses: 0
    functionsReached:
    - reinterpret_cast<char*>
    - DNSPacketWriter::commit
    - BOOST_CHECK
    - DNSPacketWriter::getHeader
    - auto::data
    - DNSPacketWriter::addOpt
    - ageDNSPacket
    - BOOST_CHECK_EQUAL
    - generatePacket
    - auto::at
    - DNSPacketWriter::startRecord
    - DNSPacketWriter::xfrIP
    - BOOST_REQUIRE_EQUAL
    - auto::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_ageDNSPacket)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:165,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:166,1
    - Dst: getDNSPacketMinTTL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:168,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:168,1
    - Dst: vector::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:168,1
    - Dst: vector::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:168,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:169,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:169,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:177,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:178,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:180,1
    - Dst: DNSPacketWriter::xfrIP
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:181,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:182,1
    - Dst: getDNSPacketMinTTL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:184,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:184,1
    - Dst: vector::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:184,1
    - Dst: vector::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:184,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:185,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:192,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:193,1
    - Dst: DNSPacketWriter::addOpt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:195,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:196,1
    - Dst: getDNSPacketMinTTL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:198,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:198,1
    - Dst: vector::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:198,1
    - Dst: vector::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:198,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:199,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:199,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:206,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:207,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:209,1
    - Dst: DNSPacketWriter::xfrIP
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:210,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:211,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:213,1
    - Dst: DNSPacketWriter::xfrIP
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:214,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:215,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:217,1
    - Dst: DNSPacketWriter::xfrIP
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:218,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:219,1
    - Dst: getDNSPacketMinTTL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:221,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:221,1
    - Dst: vector::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:221,1
    - Dst: vector::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:221,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:222,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:229,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:230,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:232,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:233,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:235,1
    - Dst: DNSPacketWriter::xfrIP
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:236,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:237,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:239,1
    - Dst: DNSPacketWriter::xfrIP
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:240,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:241,1
    - Dst: getDNSPacketMinTTL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:244,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:244,1
    - Dst: vector::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:244,1
    - Dst: vector::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:244,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:245,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:246,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:253,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:254,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:256,1
    - Dst: DNSPacketWriter::xfrIP
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:257,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:258,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:260,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:261,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:263,1
    - Dst: DNSPacketWriter::xfrIP
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:264,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:265,1
    - Dst: getDNSPacketMinTTL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:268,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:268,1
    - Dst: vector::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:268,1
    - Dst: vector::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:268,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:269,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:270,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:277,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:278,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:280,1
    - Dst: DNSPacketWriter::xfrIP
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:281,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:282,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:284,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:285,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:287,1
    - Dst: DNSPacketWriter::xfrIP
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:288,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:289,1
    - Dst: getDNSPacketMinTTL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:292,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:292,1
    - Dst: vector::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:292,1
    - Dst: vector::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:292,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:293,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:294,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:301,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:302,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:304,1
    - Dst: DNSPacketWriter::xfrIP
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:305,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:306,1
    - Dst: getDNSPacketMinTTL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:309,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:309,1
    - Dst: vector::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:309,1
    - Dst: vector::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:309,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:310,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:311,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:318,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:319,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:321,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:322,1
    - Dst: getDNSPacketMinTTL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:325,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:325,1
    - Dst: vector::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:325,1
    - Dst: vector::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:325,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:326,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:327,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:335,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:336,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:338,1
    - Dst: DNSPacketWriter::xfrIP
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:339,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:340,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:342,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:343,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:345,1
    - Dst: DNSPacketWriter::xfrIP
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:346,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:347,1
    - Dst: getDNSPacketMinTTL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:350,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:350,1
    - Dst: vector::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:350,1
    - Dst: vector::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:350,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:351,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:352,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 98
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 354
      start: 155
    functionDepth: 1
    functionLinenumber: 155
    functionLinenumberEnd: 354
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc
    functionUses: 0
    functionsReached:
    - reinterpret_cast<char*>
    - pdns::max
    - DNSPacketWriter::xfrIP
    - DNSPacketWriter::commit
    - getDNSPacketMinTTL
    - DNSPacketWriter::getHeader
    - BOOST_CHECK_EQUAL
    - DNSPacketWriter::addOpt
    - vector::data
    - vector::size
    - DNSPacketWriter::startRecord
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_getDNSPacketMinTTL)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:366,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:367,1
    - Dst: getDNSPacketLength
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:369,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:369,1
    - Dst: vector::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:369,1
    - Dst: vector::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:369,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:370,1
    - Dst: vector::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:370,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:377,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:378,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:380,1
    - Dst: DNSPacketWriter::xfrIP
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:381,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:382,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:384,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:385,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:387,1
    - Dst: DNSPacketWriter::xfrIP
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:388,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:389,1
    - Dst: DNSPacketWriter::addOpt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:391,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:392,1
    - Dst: getDNSPacketLength
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:394,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:394,1
    - Dst: vector::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:394,1
    - Dst: vector::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:394,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:395,1
    - Dst: vector::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:395,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:402,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:403,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:405,1
    - Dst: DNSPacketWriter::xfrIP
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:406,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:407,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:409,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:410,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:412,1
    - Dst: DNSPacketWriter::xfrIP
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:413,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:414,1
    - Dst: DNSPacketWriter::addOpt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:416,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:417,1
    - Dst: vector::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:419,1
    - Dst: vector::resize
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:420,1
    - Dst: getDNSPacketLength
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:421,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:421,1
    - Dst: vector::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:421,1
    - Dst: vector::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:421,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:422,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:429,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:430,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:432,1
    - Dst: DNSPacketWriter::xfrIP
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:433,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:434,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:436,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:437,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:439,1
    - Dst: DNSPacketWriter::xfrIP
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:440,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:441,1
    - Dst: DNSPacketWriter::addOpt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:443,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:444,1
    - Dst: vector::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:446,1
    - Dst: getDNSPacketLength
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:447,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:447,1
    - Dst: vector::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:447,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:448,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 48
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 451
      start: 356
    functionDepth: 1
    functionLinenumber: 356
    functionLinenumberEnd: 451
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc
    functionUses: 0
    functionsReached:
    - reinterpret_cast<char*>
    - vector::resize
    - DNSPacketWriter::xfrIP
    - DNSPacketWriter::commit
    - DNSPacketWriter::getHeader
    - BOOST_CHECK_EQUAL
    - DNSPacketWriter::addOpt
    - vector::data
    - getDNSPacketLength
    - vector::size
    - DNSPacketWriter::startRecord
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_getDNSPacketLength)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:461,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:462,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:464,1
    - Dst: DNSPacketWriter::xfrIP
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:465,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:466,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:468,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:469,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:471,1
    - Dst: DNSPacketWriter::xfrIP
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:472,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:473,1
    - Dst: DNSPacketWriter::addOpt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:475,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:476,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:478,1
    - Dst: getRecordsOfTypeCount
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:478,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:478,1
    - Dst: vector::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:478,1
    - Dst: vector::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:478,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:479,1
    - Dst: getRecordsOfTypeCount
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:479,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:479,1
    - Dst: vector::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:479,1
    - Dst: vector::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:479,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:480,1
    - Dst: getRecordsOfTypeCount
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:480,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:480,1
    - Dst: vector::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:480,1
    - Dst: vector::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:480,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:481,1
    - Dst: getRecordsOfTypeCount
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:481,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:481,1
    - Dst: vector::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:481,1
    - Dst: vector::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:481,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:482,1
    - Dst: getRecordsOfTypeCount
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:482,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:482,1
    - Dst: vector::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:482,1
    - Dst: vector::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:482,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:483,1
    - Dst: getRecordsOfTypeCount
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:483,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:483,1
    - Dst: vector::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:483,1
    - Dst: vector::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:483,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:484,1
    - Dst: getRecordsOfTypeCount
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:484,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:484,1
    - Dst: vector::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:484,1
    - Dst: vector::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:484,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:485,1
    - Dst: getRecordsOfTypeCount
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:485,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:485,1
    - Dst: vector::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:485,1
    - Dst: vector::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:485,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:487,1
    - Dst: getRecordsOfTypeCount
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:487,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:487,1
    - Dst: vector::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:487,1
    - Dst: vector::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:487,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 23
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 490
      start: 453
    functionDepth: 1
    functionLinenumber: 453
    functionLinenumberEnd: 490
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc
    functionUses: 0
    functionsReached:
    - reinterpret_cast<char*>
    - DNSPacketWriter::commit
    - DNSPacketWriter::getHeader
    - BOOST_CHECK_EQUAL
    - DNSPacketWriter::addOpt
    - getRecordsOfTypeCount
    - vector::data
    - vector::size
    - DNSPacketWriter::startRecord
    - DNSPacketWriter::xfrIP
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_getRecordsOfTypeCount)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:501,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:502,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:504,1
    - Dst: DNSPacketWriter::xfrIP
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:505,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:506,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:509,1
    - Dst: DNSPacketWriter::xfrIP6
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:510,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:510,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:510,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:511,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:513,1
    - Dst: DNSPacketWriter::xfrIP
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:514,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:515,1
    - Dst: DNSPacketWriter::addOpt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:517,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:518,1
    - Dst: generatePacket
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:522,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:524,1
    - Dst: getRecordsOfTypeCount
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:524,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:524,1
    - Dst: auto::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:524,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:524,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:525,1
    - Dst: getRecordsOfTypeCount
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:525,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:525,1
    - Dst: auto::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:525,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:525,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:526,1
    - Dst: getRecordsOfTypeCount
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:526,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:526,1
    - Dst: auto::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:526,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:526,1
    - Dst: clearDNSPacketRecordTypes
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:529,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:531,1
    - Dst: getRecordsOfTypeCount
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:531,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:531,1
    - Dst: auto::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:531,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:531,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:532,1
    - Dst: getRecordsOfTypeCount
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:532,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:532,1
    - Dst: auto::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:532,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:532,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:533,1
    - Dst: getRecordsOfTypeCount
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:533,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:533,1
    - Dst: auto::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:533,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:533,1
    - Dst: clearDNSPacketRecordTypes
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:536,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:538,1
    - Dst: getRecordsOfTypeCount
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:538,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:538,1
    - Dst: auto::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:538,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:538,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:539,1
    - Dst: getRecordsOfTypeCount
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:539,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:539,1
    - Dst: auto::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:539,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:539,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:540,1
    - Dst: getRecordsOfTypeCount
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:540,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:540,1
    - Dst: auto::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:540,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:540,1
    - Dst: generatePacket
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:542,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:544,1
    - Dst: getRecordsOfTypeCount
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:544,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:544,1
    - Dst: auto::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:544,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:544,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:545,1
    - Dst: getRecordsOfTypeCount
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:545,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:545,1
    - Dst: auto::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:545,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:545,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:546,1
    - Dst: getRecordsOfTypeCount
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:546,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:546,1
    - Dst: auto::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:546,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:546,1
    - Dst: clearDNSPacketRecordTypes
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:549,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:551,1
    - Dst: getRecordsOfTypeCount
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:551,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:551,1
    - Dst: auto::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:551,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:551,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:552,1
    - Dst: getRecordsOfTypeCount
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:552,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:552,1
    - Dst: auto::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:552,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:552,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:553,1
    - Dst: getRecordsOfTypeCount
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:553,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:553,1
    - Dst: auto::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:553,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:553,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 38
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 556
      start: 492
    functionDepth: 1
    functionLinenumber: 492
    functionLinenumberEnd: 556
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc
    functionUses: 0
    functionsReached:
    - reinterpret_cast<char*>
    - DNSPacketWriter::xfrIP6
    - DNSPacketWriter::commit
    - DNSPacketWriter::getHeader
    - BOOST_CHECK_EQUAL
    - DNSPacketWriter::addOpt
    - getRecordsOfTypeCount
    - auto::data
    - reinterpret_cast<const char*>
    - generatePacket
    - std::string
    - DNSPacketWriter::startRecord
    - clearDNSPacketRecordTypes
    - DNSPacketWriter::xfrIP
    - auto::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_clearDNSPacketRecordTypes)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:568,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:569,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:571,1
    - Dst: DNSPacketWriter::xfrIP
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:572,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:573,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:576,1
    - Dst: DNSPacketWriter::xfrIP6
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:577,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:577,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:577,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:578,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:580,1
    - Dst: DNSPacketWriter::xfrIP
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:581,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:582,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:584,1
    - Dst: DNSPacketWriter::xfrName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:585,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:586,1
    - Dst: DNSPacketWriter::addOpt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:588,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:589,1
    - Dst: generatePacket
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:593,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:595,1
    - Dst: getRecordsOfTypeCount
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:595,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:595,1
    - Dst: auto::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:595,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:595,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:596,1
    - Dst: getRecordsOfTypeCount
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:596,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:596,1
    - Dst: auto::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:596,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:596,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:597,1
    - Dst: getRecordsOfTypeCount
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:597,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:597,1
    - Dst: auto::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:597,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:597,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:598,1
    - Dst: getRecordsOfTypeCount
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:598,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:598,1
    - Dst: auto::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:598,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:598,1
    - Dst: clearDNSPacketRecordTypes
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:601,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:604,1
    - Dst: getRecordsOfTypeCount
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:604,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:604,1
    - Dst: auto::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:604,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:604,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:605,1
    - Dst: getRecordsOfTypeCount
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:605,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:605,1
    - Dst: auto::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:605,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:605,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:606,1
    - Dst: getRecordsOfTypeCount
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:606,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:606,1
    - Dst: auto::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:606,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:606,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:607,1
    - Dst: getRecordsOfTypeCount
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:607,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:607,1
    - Dst: auto::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:607,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:607,1
    - Dst: clearDNSPacketRecordTypes
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:610,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:613,1
    - Dst: getRecordsOfTypeCount
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:613,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:613,1
    - Dst: auto::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:613,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:613,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:614,1
    - Dst: getRecordsOfTypeCount
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:614,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:614,1
    - Dst: auto::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:614,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:614,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:615,1
    - Dst: getRecordsOfTypeCount
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:615,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:615,1
    - Dst: auto::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:615,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:615,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:616,1
    - Dst: getRecordsOfTypeCount
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:616,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:616,1
    - Dst: auto::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:616,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:616,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 35
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 619
      start: 558
    functionDepth: 1
    functionLinenumber: 558
    functionLinenumberEnd: 619
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc
    functionUses: 0
    functionsReached:
    - reinterpret_cast<char*>
    - DNSPacketWriter::xfrIP6
    - DNSPacketWriter::commit
    - DNSPacketWriter::getHeader
    - BOOST_CHECK_EQUAL
    - DNSPacketWriter::addOpt
    - getRecordsOfTypeCount
    - auto::data
    - reinterpret_cast<const char*>
    - DNSPacketWriter::xfrName
    - generatePacket
    - std::string
    - DNSPacketWriter::startRecord
    - clearDNSPacketRecordTypes
    - DNSPacketWriter::xfrIP
    - auto::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_clearDNSPacketUnsafeRecordTypes)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::string_view
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:631,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:631,1
    - Dst: vector::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:631,1
    - Dst: vector::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:631,1
    - Dst: std::set::insert
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:637,1
    - Dst: SvcParam
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:637,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:637,1
    - Dst: BOOST_CHECK_NO_THROW
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:639,1
    - Dst: PacketReader::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:639,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:640,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 641
      start: 621
    functionDepth: 1
    functionLinenumber: 621
    functionLinenumberEnd: 641
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc
    functionUses: 0
    functionsReached:
    - std::move
    - BOOST_CHECK
    - SvcParam
    - std::string_view
    - reinterpret_cast<const char*>
    - PacketReader::xfrSvcParamKeyVals
    - std::set::insert
    - vector::data
    - vector::size
    - BOOST_CHECK_NO_THROW
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_xfrSvcParamKeyVals)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::string_view
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:651,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:651,1
    - Dst: vector::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:651,1
    - Dst: vector::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:651,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:655,1
    - Dst: PacketReader::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:655,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:664,1
    - Dst: PacketReader::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:664,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 665
      start: 643
    functionDepth: 0
    functionLinenumber: 643
    functionLinenumberEnd: 665
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc
    functionUses: 0
    functionsReached:
    - std::string_view
    - reinterpret_cast<const char*>
    - PacketReader::xfrSvcParamKeyVals
    - BOOST_CHECK_THROW
    - vector::data
    - vector::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_xfrSvcParamKeyVals_length_wrong)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::string_view
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:676,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:676,1
    - Dst: vector::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:676,1
    - Dst: vector::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:676,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:680,1
    - Dst: PacketReader::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:680,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:689,1
    - Dst: PacketReader::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:689,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 690
      start: 667
    functionDepth: 0
    functionLinenumber: 667
    functionLinenumberEnd: 690
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc
    functionUses: 0
    functionsReached:
    - std::string_view
    - reinterpret_cast<const char*>
    - PacketReader::xfrSvcParamKeyVals
    - BOOST_CHECK_THROW
    - vector::data
    - vector::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_xfrSvcParamKeyVals_alpn_length_wrong)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::string_view
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:706,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:706,1
    - Dst: vector::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:706,1
    - Dst: vector::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:706,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:710,1
    - Dst: PacketReader::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:710,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 711
      start: 692
    functionDepth: 0
    functionLinenumber: 692
    functionLinenumberEnd: 711
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc
    functionUses: 0
    functionsReached:
    - std::string_view
    - reinterpret_cast<const char*>
    - PacketReader::xfrSvcParamKeyVals
    - BOOST_CHECK_THROW
    - vector::data
    - vector::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_xfrSvcParamKeyVals_multiple)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::string_view
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:726,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:726,1
    - Dst: vector::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:726,1
    - Dst: vector::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:726,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:730,1
    - Dst: PacketReader::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc:730,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 731
      start: 713
    functionDepth: 0
    functionLinenumber: 713
    functionLinenumberEnd: 731
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc
    functionUses: 0
    functionsReached:
    - std::string_view
    - reinterpret_cast<const char*>
    - PacketReader::xfrSvcParamKeyVals
    - BOOST_CHECK_THROW
    - vector::data
    - vector::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_xfrSvcParamKeyVals_bad_ordering)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:43,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:43,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 6
    argNames:
    - ' mplexer'
    - downstream
    - ' checkName'
    - checkType
    - checkClass
    - queryID
    argTypes:
    - FDMultiplexer
    - std::shared_ptr<DownstreamState>
    - DNSName
    - uint16_t
    - uint16_t
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 42
    functionDepth: 0
    functionLinenumber: 42
    functionLinenumberEnd: 45
    functionName: HealthCheckData
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void HealthCheckData(FDMultiplexer& mplexer, std::shared_ptr<DownstreamState>
      downstream, DNSName&& checkName, uint16_t checkType, uint16_t checkClass, uint16_t
      queryID)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: d_healthCheckLatency::store
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:67,1
    - Dst: dnsdist::metrics::updateLatencyHistogram
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:70,1
    - Dst: static_cast<uint64_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:70,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - ' downstream'
    - elapsedUs
    argTypes:
    - DownstreamState
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 64
    functionDepth: 1
    functionLinenumber: 64
    functionLinenumberEnd: 72
    functionName: updateLatencyMetrics
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc
    functionUses: 0
    functionsReached:
    - dnsdist::metrics::updateLatencyHistogram
    - d_healthCheckLatency::store
    - static_cast<uint64_t>
    linkageType: ''
    returnType: void
    signature: void updateLatencyMetrics(DownstreamState& downstream, double elapsedUs
      /* microseconds */)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: doHealthcheckOverTCP
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:77,1
    - Dst: isDoH
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:80,1
    - Dst: d_tcpHandler::isTLS
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:83,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 1
    argNames:
    - ' data'
    argTypes:
    - std::shared_ptr<const HealthCheckData>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 74
    functionDepth: 1
    functionLinenumber: 74
    functionLinenumberEnd: 87
    functionName: getHealthCheckProtocol
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc
    functionUses: 0
    functionsReached:
    - isDoH
    - doHealthcheckOverTCP
    - d_tcpHandler::isTLS
    linkageType: ''
    returnType: std::string
    signature: std::string getHealthCheckProtocol(const std::shared_ptr<const HealthCheckData>&
      data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:92,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:92,1
    - Dst: getHealthCheckProtocol
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:92,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:92,1
    - Dst: getName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:92,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:92,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:92,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:92,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:92,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:92,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' data'
    argTypes:
    - std::shared_ptr<const HealthCheckData>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 89
    functionDepth: 2
    functionLinenumber: 89
    functionLinenumberEnd: 93
    functionName: getLoggerFromData
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc
    functionUses: 0
    functionsReached:
    - getHealthCheckProtocol
    - getName
    - dnsdist::logging::getTopLogger
    - Logging::Loggable
    linkageType: ''
    returnType: std::shared_ptr<Logr::Logger>
    signature: std::shared_ptr<Logr::Logger> getLoggerFromData(const std::shared_ptr<const
      HealthCheckData>& data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:106,1
    - Dst: d_config::d_healthCheckResponseValidationCallback
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:107,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - ' data'
    argTypes:
    - std::shared_ptr<const HealthCheckData>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 95
    functionDepth: 0
    functionLinenumber: 95
    functionLinenumberEnd: 109
    functionName: validateHealthCheckResponseWithCallback
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc
    functionUses: 0
    functionsReached:
    - d_config::d_healthCheckResponseValidationCallback
    - lock
    linkageType: ''
    returnType: bool
    signature: bool validateHealthCheckResponseWithCallback(const std::shared_ptr<const
      HealthCheckData>& data)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:115,1
    - Dst: getLoggerFromData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:117,1
    - Dst: d_buffer::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:121,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:124,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:124,1
    - Dst: d_buffer::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:124,1
    - Dst: getNameWithAddr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:124,1
    - Dst: std::shared_ptr::info
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:125,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:125,1
    - Dst: d_buffer::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:125,1
    - Dst: d_buffer::data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:130,1
    - Dst: dnsheader_aligned::get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:131,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:134,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:134,1
    - Dst: dnsheader_aligned::get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:134,1
    - Dst: getNameWithAddr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:134,1
    - Dst: std::shared_ptr::info
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:135,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:135,1
    - Dst: dnsheader_aligned::get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:135,1
    - Dst: dnsheader_aligned::get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:140,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:143,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:143,1
    - Dst: getNameWithAddr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:143,1
    - Dst: std::shared_ptr::info
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:144,1
    - Dst: dnsheader_aligned::get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:149,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:152,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:152,1
    - Dst: getNameWithAddr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:152,1
    - Dst: std::shared_ptr::info
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:153,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:153,1
    - Dst: RCode::to_s
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:153,1
    - Dst: dnsheader_aligned::get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:153,1
    - Dst: dnsheader_aligned::get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:158,1
    - Dst: dnsheader_aligned::get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:158,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:161,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:161,1
    - Dst: getNameWithAddr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:161,1
    - Dst: dnsheader_aligned::get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:161,1
    - Dst: std::shared_ptr::info
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:162,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:162,1
    - Dst: RCode::to_s
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:162,1
    - Dst: dnsheader_aligned::get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:162,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:170,1
    - Dst: d_buffer::data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:170,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:170,1
    - Dst: d_buffer::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:170,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:175,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:175,1
    - Dst: getNameWithAddr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:175,1
    - Dst: DNSName::toLogString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:175,1
    - Dst: d_checkName::toLogString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:175,1
    - Dst: QType
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:175,1
    - Dst: QType
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:175,1
    - Dst: std::shared_ptr::info
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:176,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:176,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:176,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:176,1
    - Dst: validateHealthCheckResponseWithCallback
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:182,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:188,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:188,1
    - Dst: getNameWithAddr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:188,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:188,1
    - Dst: std::shared_ptr::error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:189,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:189,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:195,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:195,1
    - Dst: getNameWithAddr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:195,1
    - Dst: std::shared_ptr::info
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:196,1
    - Dst: d_elapsed::udiff
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:201,1
    - Dst: updateLatencyMetrics
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:202,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 64
    argCount: 1
    argNames:
    - ' data'
    argTypes:
    - std::shared_ptr<HealthCheckData>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 205
      start: 111
    functionDepth: 3
    functionLinenumber: 111
    functionLinenumberEnd: 205
    functionName: handleResponse
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc
    functionUses: 8
    functionsReached:
    - dnsheader_aligned::get
    - d_checkName::toLogString
    - d_buffer::data
    - DNSName::toLogString
    - RCode::to_s
    - std::shared_ptr::error
    - static_cast<int>
    - std::shared_ptr::info
    - SLOG
    - Logging::Loggable
    - QType
    - updateLatencyMetrics
    - d_elapsed::udiff
    - getLoggerFromData
    - validateHealthCheckResponseWithCallback
    - getNameWithAddr
    - d_buffer::size
    - dnsdist::configuration::getCurrentRuntimeConfiguration
    - reinterpret_cast<const char*>
    - what
    - infolog
    linkageType: ''
    returnType: bool
    signature: bool handleResponse(std::shared_ptr<HealthCheckData>& data)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' data'
    argTypes:
    - std::shared_ptr<HealthCheckData>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 213
      start: 210
    functionDepth: 0
    functionLinenumber: 210
    functionLinenumberEnd: 213
    functionName: HealthCheckQuerySender::HealthCheckQuerySender
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void HealthCheckQuerySender(std::shared_ptr<HealthCheckData>& data)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 214
      start: 214
    functionDepth: 0
    functionLinenumber: 214
    functionLinenumberEnd: 214
    functionName: HealthCheckQuerySender::HealthCheckQuerySender
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void HealthCheckQuerySender(const HealthCheckQuerySender&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 215
      start: 215
    functionDepth: 0
    functionLinenumber: 215
    functionLinenumberEnd: 215
    functionName: HealthCheckQuerySender::HealthCheckQuerySender
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void HealthCheckQuerySender(HealthCheckQuerySender&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 216
      start: 216
    functionDepth: 0
    functionLinenumber: 216
    functionLinenumberEnd: 216
    functionName: '& operator=(const HealthCheckQuerySender&)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: HealthCheckQuerySender
    signature: HealthCheckQuerySender & operator=(const HealthCheckQuerySender&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 217
      start: 217
    functionDepth: 0
    functionLinenumber: 217
    functionLinenumberEnd: 217
    functionName: '& operator=(HealthCheckQuerySender&&)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: HealthCheckQuerySender
    signature: HealthCheckQuerySender & operator=(HealthCheckQuerySender&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 218
      start: 218
    functionDepth: 0
    functionLinenumber: 218
    functionLinenumberEnd: 218
    functionName: ~HealthCheckQuerySender() override
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~HealthCheckQuerySender() override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 223
      start: 220
    functionDepth: 0
    functionLinenumber: 220
    functionLinenumberEnd: 223
    functionName: HealthCheckQuerySender::active
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool active() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:228,1
    - Dst: d_ds::submitHealthCheckResult
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:229,1
    - Dst: DoHConnectionToBackend::handleResponse
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:229,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - ' now'
    - ' response'
    argTypes:
    - struct timeval
    - TCPResponse
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 230
      start: 225
    functionDepth: 0
    functionLinenumber: 225
    functionLinenumberEnd: 230
    functionName: HealthCheckQuerySender::handleResponse
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc
    functionUses: 0
    functionsReached:
    - std::move
    - d_ds::submitHealthCheckResult
    - DoHConnectionToBackend::handleResponse
    linkageType: ''
    returnType: void
    signature: void handleResponse(const struct timeval& now, TCPResponse&& response)
      override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:236,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 2
    argNames:
    - ' now'
    - ' response'
    argTypes:
    - struct timeval
    - TCPResponse
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 237
      start: 232
    functionDepth: 0
    functionLinenumber: 232
    functionLinenumberEnd: 237
    functionName: HealthCheckQuerySender::handleXFRResponse
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc
    functionUses: 0
    functionsReached:
    - std::runtime_error
    linkageType: ''
    returnType: void
    signature: void handleXFRResponse(const struct timeval& now, TCPResponse&& response)
      override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: d_ds::submitHealthCheckResult
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:244,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - ' now'
    - ' response'
    argTypes:
    - struct timeval
    - TCPResponse
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 245
      start: 239
    functionDepth: 0
    functionLinenumber: 239
    functionLinenumberEnd: 245
    functionName: HealthCheckQuerySender::notifyIOError
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc
    functionUses: 0
    functionsReached:
    - d_ds::submitHealthCheckResult
    linkageType: ''
    returnType: void
    signature: void notifyIOError(const struct timeval& now, [[maybe_unused]] TCPResponse&&
      response) override
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: boost::any_cast<std::shared_ptr<HealthCheckData>>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:253,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:255,1
    - Dst: getLoggerFromData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:257,1
    - Dst: ComboAddress::getSocklen
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:264,1
    - Dst: auto::d_buffer::resize
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:265,1
    - Dst: recvfrom
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:268,1
    - Dst: auto::d_udpSocket::getHandle
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:268,1
    - Dst: auto::d_buffer::data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:268,1
    - Dst: auto::d_buffer::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:268,1
    - Dst: reinterpret_cast<sockaddr*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:268,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:281,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:281,1
    - Dst: auto::d_ds::d_config::remote::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:281,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:281,1
    - Dst: std::shared_ptr::error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:282,1
    - Dst: auto::d_ds::submitHealthCheckResult
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:285,1
    - Dst: auto::d_mplexer::removeReadFD
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:286,1
    - Dst: auto::d_buffer::resize
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:291,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:291,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:296,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:296,1
    - Dst: ComboAddress::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:296,1
    - Dst: auto::d_ds::d_config::remote::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:296,1
    - Dst: std::shared_ptr::info
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:297,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:297,1
    - Dst: auto::d_ds::submitHealthCheckResult
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:300,1
    - Dst: auto::d_mplexer::removeReadFD
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:304,1
    - Dst: auto::d_ds::submitHealthCheckResult
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:305,1
    - Dst: handleResponse
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:305,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 35
    argCount: 2
    argNames:
    - descriptor
    - ' param'
    argTypes:
    - int
    - FDMultiplexer::funcparam_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 306
      start: 251
    functionDepth: 3
    functionLinenumber: 251
    functionLinenumberEnd: 306
    functionName: healthCheckUDPCallback
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc
    functionUses: 0
    functionsReached:
    - boost::any_cast<std::shared_ptr<HealthCheckData>>
    - stringerror
    - auto::d_ds::d_config::remote::toStringWithPort
    - std::shared_ptr::error
    - auto::d_mplexer::removeReadFD
    - reinterpret_cast<sockaddr*>
    - ComboAddress::getSocklen
    - std::shared_ptr::info
    - SLOG
    - static_cast<size_t>
    - Logging::Loggable
    - recvfrom
    - handleResponse
    - getLoggerFromData
    - auto::d_buffer::size
    - auto::d_ds::submitHealthCheckResult
    - auto::d_buffer::data
    - auto::d_udpSocket::getHandle
    - dnsdist::configuration::getCurrentRuntimeConfiguration
    - ComboAddress::toStringWithPort
    - infolog
    - auto::d_buffer::resize
    linkageType: ''
    returnType: void
    signature: void healthCheckUDPCallback(int descriptor, FDMultiplexer::funcparam_t&
      param)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: boost::any_cast<std::shared_ptr<HealthCheckData>>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:311,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:313,1
    - Dst: getLoggerFromData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:315,1
    - Dst: auto::d_tcpHandler::tryWrite
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:323,1
    - Dst: auto::d_buffer::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:323,1
    - Dst: auto::d_buffer::resize
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:326,1
    - Dst: auto::d_tcpHandler::tryRead
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:332,1
    - Dst: auto::d_buffer::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:332,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:336,1
    - Dst: auto::d_buffer::data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:336,1
    - Dst: auto::d_buffer::resize
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:337,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:337,1
    - Dst: auto::d_tcpHandler::tryRead
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:343,1
    - Dst: auto::d_buffer::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:343,1
    - Dst: auto::d_ds::submitHealthCheckResult
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:345,1
    - Dst: handleResponse
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:345,1
    - Dst: auto::d_ioState::update
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:351,1
    - Dst: auto::d_tcpHandler::isTLS
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:352,1
    - Dst: auto::d_tcpHandler::getTLSSessions
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:354,1
    - Dst: auto::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:355,1
    - Dst: putSessions
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:356,1
    - Dst: auto::d_ds::getID
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:356,1
    - Dst: time
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:356,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:356,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:360,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:360,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:360,1
    - Dst: std::shared_ptr::error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:361,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:361,1
    - Dst: auto::d_ioState::update
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:366,1
    - Dst: IOStateGuard::release
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:370,1
    - Dst: auto::d_ds::submitHealthCheckResult
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:374,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:376,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:376,1
    - Dst: auto::d_ds::getNameWithAddr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:376,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:376,1
    - Dst: std::shared_ptr::error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:377,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:377,1
    - Dst: auto::d_ds::submitHealthCheckResult
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:381,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:383,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:383,1
    - Dst: auto::d_ds::getNameWithAddr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:383,1
    - Dst: std::shared_ptr::info
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:384,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 56
    argCount: 2
    argNames:
    - descriptor
    - ' param'
    argTypes:
    - int
    - FDMultiplexer::funcparam_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 387
      start: 308
    functionDepth: 3
    functionLinenumber: 308
    functionLinenumberEnd: 387
    functionName: healthCheckTCPCallback
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc
    functionUses: 0
    functionsReached:
    - boost::any_cast<std::shared_ptr<HealthCheckData>>
    - ntohs
    - auto::d_ds::getID
    - auto::d_tcpHandler::tryRead
    - std::shared_ptr::error
    - auto::d_ioState::update
    - putSessions
    - auto::d_tcpHandler::tryWrite
    - std::shared_ptr::info
    - SLOG
    - time
    - handleResponse
    - auto::d_buffer::size
    - getLoggerFromData
    - auto::d_ds::submitHealthCheckResult
    - auto::d_ds::getNameWithAddr
    - auto::d_buffer::data
    - dnsdist::configuration::getCurrentRuntimeConfiguration
    - VERBOSESLOG
    - IOStateGuard::release
    - auto::d_tcpHandler::getTLSSessions
    - memcpy
    - std::move
    - what
    - auto::d_tcpHandler::isTLS
    - infolog
    - auto::d_buffer::resize
    - auto::empty
    linkageType: ''
    returnType: void
    signature: void healthCheckTCPCallback(int descriptor, FDMultiplexer::funcparam_t&
      param)
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:391,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:394,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:394,1
    - Dst: getName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:394,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:394,1
    - Dst: dnsdist::getRandomDNSID
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:398,1
    - Dst: d_config::checkType::getCode
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:400,1
    - Dst: memset
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:403,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:405,1
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:414,1
    - Dst: d_config::d_healthCheckGenerationFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:415,1
    - Dst: std::get<0>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:416,1
    - Dst: std::get<1>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:417,1
    - Dst: std::get<2>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:418,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:423,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:427,1
    - Dst: makeLocalProxyHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:431,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:432,1
    - Dst: isDoH
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:433,1
    - Dst: PacketBuffer::insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:434,1
    - Dst: PacketBuffer::begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:434,1
    - Dst: std::string::begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:434,1
    - Dst: std::string::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:434,1
    - Dst: doHealthcheckOverTCP
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:438,1
    - Dst: Socket::setNonBlocking
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:440,1
    - Dst: d_config::sourceItfName::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:443,1
    - Dst: setsockopt
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:444,1
    - Dst: Socket::getHandle
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:444,1
    - Dst: d_config::sourceItfName::c_str
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:444,1
    - Dst: d_config::sourceItfName::length
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:444,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:447,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:447,1
    - Dst: getNameWithAddr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:447,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:447,1
    - Dst: std::shared_ptr::error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:448,1
    - Dst: IsAnyAddress
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:453,1
    - Dst: doHealthcheckOverTCP
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:454,1
    - Dst: Socket::setReuseAddr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:455,1
    - Dst: SSetsockopt
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:459,1
    - Dst: Socket::getHandle
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:459,1
    - Dst: Socket::bind
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:462,1
    - Dst: std::make_shared<HealthCheckData>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:465,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:465,1
    - Dst: gettimeofday
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:468,1
    - Dst: static_cast<decltype(data->d_ttd.tv_sec)>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:469,1
    - Dst: static_cast<decltype(data->d_ttd.tv_usec)>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:470,1
    - Dst: normalizeTV
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:471,1
    - Dst: auto::d_elapsed::start
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:472,1
    - Dst: doHealthcheckOverTCP
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:474,1
    - Dst: Socket::connect
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:475,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:476,1
    - Dst: udpClientSendRequestToBackend
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:477,1
    - Dst: auto::d_udpSocket::getHandle
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:477,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:481,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:481,1
    - Dst: getNameWithAddr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:481,1
    - Dst: std::shared_ptr::error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:482,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:482,1
    - Dst: addReadFD
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:487,1
    - Dst: auto::d_udpSocket::getHandle
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:487,1
    - Dst: isDoH
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:490,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:492,1
    - Dst: std::shared_ptr<TCPQuerySender>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:493,1
    - Dst: HealthCheckQuerySender::HealthCheckQuerySender
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:493,1
    - Dst: sendH2Query
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:494,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:494,1
    - Dst: auto::d_ds::submitHealthCheckResult
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:495,1
    - Dst: std::make_unique<TCPIOHandler>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:500,1
    - Dst: Socket::releaseHandle
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:500,1
    - Dst: std::make_unique<IOStateHandler>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:501,1
    - Dst: auto::d_tcpHandler::getDescriptor
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:501,1
    - Dst: time
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:504,1
    - Dst: getSession
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:505,1
    - Dst: getID
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:505,1
    - Dst: auto::d_tcpHandler::setTLSSession
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:507,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:511,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:511,1
    - Dst: getNameWithAddr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:511,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:511,1
    - Dst: std::shared_ptr::error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:512,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:512,1
    - Dst: auto::d_tcpHandler::tryConnect
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:515,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:517,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:517,1
    - Dst: PacketBuffer::insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:518,1
    - Dst: PacketBuffer::begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:518,1
    - Dst: static_cast<ssize_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:518,1
    - Dst: std::array::begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:518,1
    - Dst: std::array::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:518,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:519,1
    - Dst: auto::d_tcpHandler::tryWrite
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:521,1
    - Dst: auto::d_buffer::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:521,1
    - Dst: auto::d_buffer::resize
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:524,1
    - Dst: auto::d_ioState::update
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:529,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:536,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:536,1
    - Dst: getNameWithAddr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:536,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:536,1
    - Dst: std::shared_ptr::error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:537,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:537,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:543,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:543,1
    - Dst: getNameWithAddr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:543,1
    - Dst: std::shared_ptr::info
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:544,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 94
    argCount: 3
    argNames:
    - ' mplexer'
    - ' downstream'
    - initialCheck
    argTypes:
    - std::unique_ptr<FDMultiplexer>
    - std::shared_ptr<DownstreamState>
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 548
      start: 389
    functionDepth: 1
    functionLinenumber: 389
    functionLinenumberEnd: 548
    functionName: queueHealthCheck
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc
    functionUses: 0
    functionsReached:
    - Socket::releaseHandle
    - static_cast<decltype(data->d_ttd.tv_usec)>
    - GenericDNSPacketWriter::getHeader
    - std::string::end
    - stringerror
    - std::make_unique<IOStateHandler>
    - auto::d_tcpHandler::setTLSSession
    - PacketBuffer::size
    - std::shared_ptr<TCPQuerySender>
    - std::shared_ptr::error
    - gettimeofday
    - auto::d_ioState::update
    - std::string::size
    - IsAnyAddress
    - d_config::d_healthCheckGenerationFunction
    - auto::d_tcpHandler::tryWrite
    - d_config::sourceItfName::length
    - auto::d_tcpHandler::getDescriptor
    - PacketBuffer::begin
    - auto::d_elapsed::start
    - auto::d_tcpHandler::tryConnect
    - SLOG
    - std::shared_ptr::info
    - udpClientSendRequestToBackend
    - getName
    - Logging::Loggable
    - Socket::setNonBlocking
    - addReadFD
    - d_config::checkType::getCode
    - sendH2Query
    - doHealthcheckOverTCP
    - time
    - lock
    - setsockopt
    - memset
    - Socket::connect
    - auto::d_buffer::size
    - makeLocalProxyHeader
    - dnsdist::logging::getTopLogger
    - std::array::begin
    - auto::d_ds::submitHealthCheckResult
    - getNameWithAddr
    - htons
    - std::string::begin
    - auto::d_udpSocket::getHandle
    - HealthCheckQuerySender::HealthCheckQuerySender
    - dnsdist::configuration::getCurrentRuntimeConfiguration
    - std::get<2>
    - Socket::setReuseAddr
    - dnsdist::getRandomDNSID
    - VERBOSESLOG
    - static_cast<uint8_t>
    - std::make_shared<HealthCheckData>
    - d_config::sourceItfName::c_str
    - getSession
    - static_cast<decltype(data->d_ttd.tv_sec)>
    - std::move
    - Socket::getHandle
    - std::make_unique<TCPIOHandler>
    - what
    - PacketBuffer::insert
    - d_config::sourceItfName::empty
    - static_cast<ssize_t>
    - std::get<0>
    - std::get<1>
    - infolog
    - std::array::end
    - auto::d_buffer::resize
    - SSetsockopt
    - getID
    - Socket::bind
    - isDoH
    - normalizeTV
    linkageType: ''
    returnType: bool
    signature: bool queueHealthCheck(std::unique_ptr<FDMultiplexer>& mplexer, const
      std::shared_ptr<DownstreamState>& downstream, bool initialCheck)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:552,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:555,1
    - Dst: getWatchedFDCount
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:558,1
    - Dst: getWatchedFDCount
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:558,1
    - Dst: run
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:560,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:563,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:563,1
    - Dst: std::shared_ptr::error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:564,1
    - Dst: handleH2Timeouts
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:574,1
    - Dst: getTimeouts
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:577,1
    - Dst: second::type
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:579,1
    - Dst: typeid
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:579,1
    - Dst: boost::any_cast<std::shared_ptr<HealthCheckData>>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:583,1
    - Dst: getLoggerFromData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:586,1
    - Dst: auto::d_ioState::reset
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:592,1
    - Dst: removeReadFD
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:595,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:599,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:599,1
    - Dst: auto::d_ds::getNameWithAddr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:599,1
    - Dst: std::shared_ptr::info
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:600,1
    - Dst: auto::d_ds::submitHealthCheckResult
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:604,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:611,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:611,1
    - Dst: auto::d_ds::getNameWithAddr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:611,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:611,1
    - Dst: std::shared_ptr::error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:612,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:612,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:618,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:618,1
    - Dst: auto::d_ds::getNameWithAddr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:618,1
    - Dst: std::shared_ptr::info
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:619,1
    - Dst: getTimeouts
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:624,1
    - Dst: second::type
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:626,1
    - Dst: typeid
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:626,1
    - Dst: boost::any_cast<std::shared_ptr<HealthCheckData>>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:629,1
    - Dst: getLoggerFromData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:632,1
    - Dst: auto::d_ioState::reset
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:636,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:638,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:638,1
    - Dst: auto::d_ds::getNameWithAddr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:638,1
    - Dst: std::shared_ptr::info
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:639,1
    - Dst: auto::d_ds::submitHealthCheckResult
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:643,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:649,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:649,1
    - Dst: auto::d_ds::getNameWithAddr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:649,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:649,1
    - Dst: std::shared_ptr::error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:650,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:650,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:656,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:656,1
    - Dst: auto::d_ds::getNameWithAddr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:656,1
    - Dst: std::shared_ptr::info
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc:657,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 67
    argCount: 2
    argNames:
    - ' mplexer'
    - initial
    argTypes:
    - FDMultiplexer
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 662
      start: 550
    functionDepth: 3
    functionLinenumber: 550
    functionLinenumberEnd: 662
    functionName: handleQueuedHealthChecks
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc
    functionUses: 0
    functionsReached:
    - boost::any_cast<std::shared_ptr<HealthCheckData>>
    - removeReadFD
    - std::shared_ptr::error
    - std::shared_ptr::info
    - SLOG
    - second::type
    - getTimeouts
    - handleH2Timeouts
    - getWatchedFDCount
    - getLoggerFromData
    - dnsdist::logging::getTopLogger
    - auto::d_ds::submitHealthCheckResult
    - run
    - auto::d_ds::getNameWithAddr
    - dnsdist::configuration::getCurrentRuntimeConfiguration
    - auto::d_ioState::reset
    - typeid
    - what
    - infolog
    linkageType: ''
    returnType: void
    signature: void handleQueuedHealthChecks(FDMultiplexer& mplexer, bool initial)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: getProtocol
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-internal-queries.cc:33,1
    - Dst: getUDPCrossProtocolQueryFromDQ
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-internal-queries.cc:35,1
    - Dst: getTCPCrossProtocolQueryFromDQ
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-internal-queries.cc:39,1
    - Dst: getDOQCrossProtocolQueryFromDQ
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-internal-queries.cc:44,1
    - Dst: getDOH3CrossProtocolQueryFromDQ
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-internal-queries.cc:49,1
    - Dst: getTCPCrossProtocolQueryFromDQ
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-internal-queries.cc:53,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - ' dnsQuestion'
    - isResponse
    argTypes:
    - DNSQuestion
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 31
    functionDepth: 2
    functionLinenumber: 31
    functionLinenumberEnd: 54
    functionName: dnsdist::getInternalQueryFromDQ
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-internal-queries.cc
    functionUses: 1
    functionsReached:
    - getDOH3CrossProtocolQueryFromDQ
    - getTCPCrossProtocolQueryFromDQ
    - getProtocol
    - getDOQCrossProtocolQueryFromDQ
    - getUDPCrossProtocolQueryFromDQ
    linkageType: ''
    returnType: std::unique_ptr<CrossProtocolQuery>
    signature: std::unique_ptr<CrossProtocolQuery> getInternalQueryFromDQ(DNSQuestion&
      dnsQuestion, [[maybe_unused]] bool isResponse)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: getProtocol
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-internal-queries.cc:33,1
    - Dst: getUDPCrossProtocolQueryFromDQ
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-internal-queries.cc:35,1
    - Dst: getTCPCrossProtocolQueryFromDQ
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-internal-queries.cc:39,1
    - Dst: getDOQCrossProtocolQueryFromDQ
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-internal-queries.cc:44,1
    - Dst: getDOH3CrossProtocolQueryFromDQ
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-internal-queries.cc:49,1
    - Dst: getTCPCrossProtocolQueryFromDQ
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-internal-queries.cc:53,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - ' dnsQuestion'
    - isResponse
    argTypes:
    - DNSQuestion
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 31
    functionDepth: 2
    functionLinenumber: 31
    functionLinenumberEnd: 54
    functionName: dnsdist::getInternalQueryFromDQ
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-internal-queries.cc
    functionUses: 1
    functionsReached:
    - getDOH3CrossProtocolQueryFromDQ
    - getTCPCrossProtocolQueryFromDQ
    - getProtocol
    - getDOQCrossProtocolQueryFromDQ
    - getUDPCrossProtocolQueryFromDQ
    linkageType: ''
    returnType: std::unique_ptr<CrossProtocolQuery>
    signature: std::unique_ptr<CrossProtocolQuery> getInternalQueryFromDQ(DNSQuestion&
      dnsQuestion, [[maybe_unused]] bool isResponse)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: std::holds_alternative<std::string>
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:35,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:36,1
    - Dst: std::get<std::string>
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:36,1
    - Dst: std::holds_alternative<bool>
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:38,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:39,1
    - Dst: std::get<bool>
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:39,1
    - Dst: std::holds_alternative<int64_t>
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:41,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:42,1
    - Dst: std::get<int64_t>
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:42,1
    - Dst: std::holds_alternative<double>
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:44,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:45,1
    - Dst: std::get<double>
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:45,1
    - Dst: std::holds_alternative<ArrayValue>
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:47,1
    - Dst: std::get<ArrayValue>
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:49,1
    - Dst: std::holds_alternative<KeyValueList>
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:51,1
    - Dst: std::get<KeyValueList>
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:53,1
    - Dst: std::holds_alternative<std::vector<uint8_t>>
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:55,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:56,1
    - Dst: std::get<std::vector<uint8_t>>
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:56,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 22
    argCount: 1
    argNames:
    - ' writer'
    argTypes:
    - protozero::pbf_writer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 33
    functionDepth: 0
    functionLinenumber: 33
    functionLinenumberEnd: 58
    functionName: pdns::trace::AnyValue::encode
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.cc
    functionUses: 1
    functionsReached:
    - std::get<std::vector<uint8_t>>
    - std::get<ArrayValue>
    - std::holds_alternative<std::string>
    - std::holds_alternative<ArrayValue>
    - std::holds_alternative<std::vector<uint8_t>>
    - std::get<std::string>
    - std::get<double>
    - std::holds_alternative<double>
    - std::holds_alternative<bool>
    - std::holds_alternative<KeyValueList>
    - std::holds_alternative<int64_t>
    - pdns::trace::encode
    - std::get<int64_t>
    - std::get<KeyValueList>
    - std::get<bool>
    linkageType: ''
    returnType: void
    signature: void AnyValue::encode(protozero::pbf_writer& writer) const
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: next
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:62,1
    - Dst: tag
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:63,1
    - Dst: get_string
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:65,1
    - Dst: get_bool
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:68,1
    - Dst: get_int64
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:71,1
    - Dst: get_double
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:74,1
    - Dst: get_message
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:77,1
    - Dst: pdns::trace::ArrayValue::decode
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:78,1
    - Dst: get_message
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:82,1
    - Dst: pdns::trace::KeyValueList::decode
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:83,1
    - Dst: get_view
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:87,1
    - Dst: std::vector::reserve
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:89,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:89,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:90,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:91,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:91,1
    - Dst: auto::data
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:91,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:93,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 36
    argCount: 1
    argNames:
    - ' reader'
    argTypes:
    - protozero::pbf_reader
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 60
    functionDepth: 0
    functionLinenumber: 60
    functionLinenumberEnd: 102
    functionName: pdns::trace::AnyValue::decode
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.cc
    functionUses: 3
    functionsReached:
    - next
    - get_double
    - std::vector::push_back
    - std::move
    - get_bool
    - tag
    - pdns::trace::KeyValueList::decode
    - auto::data
    - get_message
    - get_int64
    - std::vector::reserve
    - static_cast<uint8_t>
    - pdns::trace::ArrayValue::decode
    - auto::size
    - get_string
    - get_view
    linkageType: ''
    returnType: AnyValue
    signature: AnyValue AnyValue::decode(protozero::pbf_reader& reader)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: std::holds_alternative<std::string>
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:106,1
    - Dst: std::get<std::string>
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:107,1
    - Dst: std::holds_alternative<bool>
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:109,1
    - Dst: std::get<bool>
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:110,1
    - Dst: std::holds_alternative<int64_t>
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:115,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:116,1
    - Dst: std::get<int64_t>
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:116,1
    - Dst: std::holds_alternative<double>
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:118,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:119,1
    - Dst: std::get<double>
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:119,1
    - Dst: std::holds_alternative<ArrayValue>
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:121,1
    - Dst: std::get<ArrayValue>
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:123,1
    - Dst: pdns::trace::AnyValue::toLogString
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:124,1
    - Dst: std::string::resize
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:126,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:126,1
    - Dst: std::holds_alternative<KeyValueList>
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:129,1
    - Dst: std::get<KeyValueList>
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:131,1
    - Dst: value::toLogString
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:132,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:134,1
    - Dst: std::string::resize
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:135,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:135,1
    - Dst: std::holds_alternative<std::vector<uint8_t>>
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:139,1
    - Dst: std::get<std::vector<uint8_t>>
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:140,1
    - Dst: Base64Encode
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:141,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:141,1
    - Dst: auto::begin
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:141,1
    - Dst: auto::end
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:141,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 34
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 144
      start: 104
    functionDepth: 1
    functionLinenumber: 104
    functionLinenumberEnd: 144
    functionName: pdns::trace::AnyValue::toLogString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.cc
    functionUses: 3
    functionsReached:
    - std::to_string
    - std::get<double>
    - std::holds_alternative<KeyValueList>
    - auto::begin
    - std::holds_alternative<ArrayValue>
    - std::get<int64_t>
    - std::string
    - std::get<KeyValueList>
    - std::string::size
    - value::toLogString
    - std::holds_alternative<std::vector<uint8_t>>
    - std::holds_alternative<std::string>
    - pdns::trace::AnyValue::toLogString
    - std::holds_alternative<double>
    - std::holds_alternative<bool>
    - std::string::resize
    - std::holds_alternative<int64_t>
    - std::get<std::vector<uint8_t>>
    - std::get<ArrayValue>
    - std::get<std::string>
    - auto::end
    - std::get<bool>
    - Base64Encode
    linkageType: ''
    returnType: std::string
    signature: std::string AnyValue::toLogString() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:148,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:149,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:151,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:154,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - ' writer'
    argTypes:
    - protozero::pbf_writer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 156
      start: 146
    functionDepth: 0
    functionLinenumber: 146
    functionLinenumberEnd: 156
    functionName: pdns::trace::EntityRef::encode
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.cc
    functionUses: 0
    functionsReached:
    - pdns::trace::encode
    linkageType: ''
    returnType: void
    signature: void EntityRef::encode(protozero::pbf_writer& writer) const
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: next
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:161,1
    - Dst: tag
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:162,1
    - Dst: get_string
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:164,1
    - Dst: get_string
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:167,1
    - Dst: EntityRef::id_keys::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:170,1
    - Dst: get_string
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:170,1
    - Dst: EntityRef::description_keys::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:173,1
    - Dst: get_string
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:173,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 20
    argCount: 1
    argNames:
    - ' reader'
    argTypes:
    - protozero::pbf_reader
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 180
      start: 158
    functionDepth: 0
    functionLinenumber: 158
    functionLinenumberEnd: 180
    functionName: pdns::trace::EntityRef::decode
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.cc
    functionUses: 2
    functionsReached:
    - next
    - tag
    - EntityRef::description_keys::emplace_back
    - EntityRef::id_keys::emplace_back
    - get_string
    linkageType: ''
    returnType: EntityRef
    signature: EntityRef EntityRef::decode(protozero::pbf_reader& reader)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:184,1
    - Dst: pdns::trace::KeyValue::encode
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:187,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - ' writer'
    argTypes:
    - protozero::pbf_writer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 189
      start: 182
    functionDepth: 0
    functionLinenumber: 182
    functionLinenumberEnd: 189
    functionName: pdns::trace::KeyValue::encode
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.cc
    functionUses: 3
    functionsReached:
    - pdns::trace::KeyValue::encode
    - pdns::trace::encode
    linkageType: ''
    returnType: void
    signature: void KeyValue::encode(protozero::pbf_writer& writer) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:193,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:194,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:195,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - ' writer'
    argTypes:
    - protozero::pbf_writer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 196
      start: 191
    functionDepth: 0
    functionLinenumber: 191
    functionLinenumberEnd: 196
    functionName: pdns::trace::Resource::encode
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.cc
    functionUses: 2
    functionsReached:
    - pdns::trace::encode
    linkageType: ''
    returnType: void
    signature: void Resource::encode(protozero::pbf_writer& writer) const
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: next
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:201,1
    - Dst: tag
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:202,1
    - Dst: get_message
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:204,1
    - Dst: Resource::attributes::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:205,1
    - Dst: pdns::trace::KeyValue::decode
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:205,1
    - Dst: get_uint32
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:209,1
    - Dst: get_message
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:212,1
    - Dst: Resource::entity_refs::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:213,1
    - Dst: pdns::trace::EntityRef::decode
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:213,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 1
    argNames:
    - ' reader'
    argTypes:
    - protozero::pbf_reader
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 221
      start: 198
    functionDepth: 0
    functionLinenumber: 198
    functionLinenumberEnd: 221
    functionName: pdns::trace::Resource::decode
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.cc
    functionUses: 2
    functionsReached:
    - next
    - Resource::attributes::emplace_back
    - Resource::entity_refs::emplace_back
    - tag
    - get_message
    - pdns::trace::KeyValue::decode
    - get_uint32
    - pdns::trace::EntityRef::decode
    linkageType: ''
    returnType: Resource
    signature: Resource Resource::decode(protozero::pbf_reader& reader)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:225,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:226,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:227,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:228,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - ' writer'
    argTypes:
    - protozero::pbf_writer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 229
      start: 223
    functionDepth: 0
    functionLinenumber: 223
    functionLinenumberEnd: 229
    functionName: pdns::trace::InstrumentationScope::encode
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.cc
    functionUses: 0
    functionsReached:
    - pdns::trace::encode
    linkageType: ''
    returnType: void
    signature: void InstrumentationScope::encode(protozero::pbf_writer& writer) const
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: next
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:234,1
    - Dst: tag
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:235,1
    - Dst: get_string
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:237,1
    - Dst: get_string
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:240,1
    - Dst: get_message
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:243,1
    - Dst: InstrumentationScope::attributes::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:244,1
    - Dst: pdns::trace::KeyValue::decode
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:244,1
    - Dst: get_uint32
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:248,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 21
    argCount: 1
    argNames:
    - ' reader'
    argTypes:
    - protozero::pbf_reader
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 255
      start: 231
    functionDepth: 0
    functionLinenumber: 231
    functionLinenumberEnd: 255
    functionName: pdns::trace::InstrumentationScope::decode
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.cc
    functionUses: 2
    functionsReached:
    - next
    - tag
    - get_message
    - pdns::trace::KeyValue::decode
    - get_uint32
    - get_string
    - InstrumentationScope::attributes::emplace_back
    linkageType: ''
    returnType: InstrumentationScope
    signature: InstrumentationScope InstrumentationScope::decode(protozero::pbf_reader&
      reader)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:259,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:260,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ' writer'
    argTypes:
    - protozero::pbf_writer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 261
      start: 257
    functionDepth: 0
    functionLinenumber: 257
    functionLinenumberEnd: 261
    functionName: pdns::trace::Status::encode
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.cc
    functionUses: 0
    functionsReached:
    - pdns::trace::encode
    linkageType: ''
    returnType: void
    signature: void Status::encode(protozero::pbf_writer& writer) const
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: next
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:266,1
    - Dst: tag
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:267,1
    - Dst: get_string
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:269,1
    - Dst: static_cast<StatusCode>
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:272,1
    - Dst: get_uint32
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:272,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 1
    argNames:
    - ' reader'
    argTypes:
    - protozero::pbf_reader
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 279
      start: 263
    functionDepth: 0
    functionLinenumber: 263
    functionLinenumberEnd: 279
    functionName: pdns::trace::Status::decode
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.cc
    functionUses: 2
    functionsReached:
    - next
    - tag
    - static_cast<StatusCode>
    - get_uint32
    - get_string
    linkageType: ''
    returnType: Status
    signature: Status Status::decode(protozero::pbf_reader& reader)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::encodeFixed
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:283,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:284,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:285,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:286,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - ' writer'
    argTypes:
    - protozero::pbf_writer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 287
      start: 281
    functionDepth: 0
    functionLinenumber: 281
    functionLinenumberEnd: 287
    functionName: Span::Event::encode(protozero::pbf_writer& writer) const
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.cc
    functionUses: 0
    functionsReached:
    - pdns::trace::encodeFixed
    - pdns::trace::encode
    linkageType: ''
    returnType: void
    signature: void Span::Event::encode(protozero::pbf_writer& writer) const
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: next
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:292,1
    - Dst: tag
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:293,1
    - Dst: get_fixed64
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:295,1
    - Dst: get_string
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:298,1
    - Dst: get_message
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:301,1
    - Dst: Span::Event::attributes::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:302,1
    - Dst: pdns::trace::KeyValue::decode
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:302,1
    - Dst: get_uint32
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:306,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    argCount: 1
    argNames:
    - ' reader'
    argTypes:
    - protozero::pbf_reader
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 312
      start: 289
    functionDepth: 0
    functionLinenumber: 289
    functionLinenumberEnd: 312
    functionName: Span::Event::decode(protozero::pbf_reader& reader)
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.cc
    functionUses: 0
    functionsReached:
    - next
    - tag
    - Span::Event::attributes::emplace_back
    - get_message
    - pdns::trace::KeyValue::decode
    - get_fixed64
    - get_uint32
    - get_string
    linkageType: ''
    returnType: Span::Event
    signature: Span::Event Span::Event::decode(protozero::pbf_reader& reader)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:316,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:317,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:318,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:319,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:320,1
    - Dst: pdns::trace::encodeFixed
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:321,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - ' writer'
    argTypes:
    - protozero::pbf_writer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 322
      start: 314
    functionDepth: 0
    functionLinenumber: 314
    functionLinenumberEnd: 322
    functionName: Span::Link::encode(protozero::pbf_writer& writer) const
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.cc
    functionUses: 0
    functionsReached:
    - pdns::trace::encodeFixed
    - pdns::trace::encode
    linkageType: ''
    returnType: void
    signature: void Span::Link::encode(protozero::pbf_writer& writer) const
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: next
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:327,1
    - Dst: tag
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:328,1
    - Dst: decodeTraceID
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:330,1
    - Dst: decodeSpanID
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:333,1
    - Dst: get_string
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:336,1
    - Dst: get_message
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:339,1
    - Dst: Link::attributes::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:340,1
    - Dst: pdns::trace::KeyValue::decode
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:340,1
    - Dst: get_uint32
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:344,1
    - Dst: get_fixed32
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:347,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 26
    argCount: 1
    argNames:
    - ' reader'
    argTypes:
    - protozero::pbf_reader
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 353
      start: 324
    functionDepth: 0
    functionLinenumber: 324
    functionLinenumberEnd: 353
    functionName: Span::Link::decode(protozero::pbf_reader& reader)
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.cc
    functionUses: 0
    functionsReached:
    - next
    - decodeSpanID
    - Link::attributes::emplace_back
    - decodeTraceID
    - tag
    - get_message
    - pdns::trace::KeyValue::decode
    - get_uint32
    - get_fixed32
    - get_string
    linkageType: ''
    returnType: Span::Link
    signature: Span::Link Span::Link::decode(protozero::pbf_reader& reader)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:357,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:358,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:359,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:360,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:361,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:362,1
    - Dst: pdns::trace::encodeFixed
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:363,1
    - Dst: pdns::trace::encodeFixed
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:364,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:365,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:366,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:367,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:368,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:369,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:370,1
    - Dst: message::empty
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:371,1
    - Dst: pdns::trace::Span::encode
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:373,1
    - Dst: pdns::trace::encodeFixed
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:375,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 19
    argCount: 1
    argNames:
    - ' writer'
    argTypes:
    - protozero::pbf_writer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 376
      start: 355
    functionDepth: 0
    functionLinenumber: 355
    functionLinenumberEnd: 376
    functionName: pdns::trace::Span::encode
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.cc
    functionUses: 3
    functionsReached:
    - pdns::trace::Span::encode
    - pdns::trace::encodeFixed
    - pdns::trace::encode
    - message::empty
    linkageType: ''
    returnType: void
    signature: void Span::encode(protozero::pbf_writer& writer) const
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: next
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:381,1
    - Dst: tag
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:382,1
    - Dst: decodeTraceID
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:384,1
    - Dst: decodeSpanID
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:387,1
    - Dst: get_string
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:390,1
    - Dst: decodeSpanID
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:393,1
    - Dst: get_string
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:396,1
    - Dst: static_cast<Span::SpanKind>
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:399,1
    - Dst: get_uint32
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:399,1
    - Dst: get_fixed64
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:402,1
    - Dst: get_fixed64
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:405,1
    - Dst: get_message
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:408,1
    - Dst: Span::attributes::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:409,1
    - Dst: pdns::trace::KeyValue::decode
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:409,1
    - Dst: get_uint32
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:413,1
    - Dst: get_message
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:416,1
    - Dst: Span::events::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:417,1
    - Dst: YAML::decode
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:417,1
    - Dst: get_uint32
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:421,1
    - Dst: get_message
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:424,1
    - Dst: Span::links::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:425,1
    - Dst: YAML::decode
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:425,1
    - Dst: get_uint32
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:429,1
    - Dst: get_message
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:432,1
    - Dst: pdns::trace::Status::decode
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:433,1
    - Dst: get_fixed32
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:437,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 60
    argCount: 1
    argNames:
    - ' reader'
    argTypes:
    - protozero::pbf_reader
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 444
      start: 378
    functionDepth: 1
    functionLinenumber: 378
    functionLinenumberEnd: 444
    functionName: pdns::trace::Span::decode
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.cc
    functionUses: 2
    functionsReached:
    - next
    - Span::attributes::emplace_back
    - decodeSpanID
    - static_cast<Span::SpanKind>
    - decodeTraceID
    - tag
    - YAML::decode
    - get_message
    - pdns::trace::KeyValue::decode
    - pdns::trace::Status::decode
    - get_fixed64
    - Span::events::emplace_back
    - get_uint32
    - get_fixed32
    - get_string
    - Span::links::emplace_back
    linkageType: ''
    returnType: Span
    signature: Span Span::decode(protozero::pbf_reader& reader)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::ScopeSpans::encode
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:450,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:452,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:453,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - ' writer'
    argTypes:
    - protozero::pbf_writer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 454
      start: 446
    functionDepth: 0
    functionLinenumber: 446
    functionLinenumberEnd: 454
    functionName: pdns::trace::ScopeSpans::encode
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.cc
    functionUses: 3
    functionsReached:
    - pdns::trace::ScopeSpans::encode
    - pdns::trace::encode
    linkageType: ''
    returnType: void
    signature: void ScopeSpans::encode(protozero::pbf_writer& writer) const
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: next
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:459,1
    - Dst: tag
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:460,1
    - Dst: get_message
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:462,1
    - Dst: pdns::trace::InstrumentationScope::decode
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:463,1
    - Dst: get_message
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:467,1
    - Dst: ScopeSpans::spans::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:468,1
    - Dst: pdns::trace::Span::decode
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:468,1
    - Dst: get_string
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:472,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 1
    argNames:
    - ' reader'
    argTypes:
    - protozero::pbf_reader
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 478
      start: 456
    functionDepth: 0
    functionLinenumber: 456
    functionLinenumberEnd: 478
    functionName: pdns::trace::ScopeSpans::decode
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.cc
    functionUses: 2
    functionsReached:
    - next
    - ScopeSpans::spans::emplace_back
    - tag
    - get_message
    - pdns::trace::InstrumentationScope::decode
    - get_string
    - pdns::trace::Span::decode
    linkageType: ''
    returnType: ScopeSpans
    signature: ScopeSpans ScopeSpans::decode(protozero::pbf_reader& reader)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::ResourceSpans::encode
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:484,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:486,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:487,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - ' writer'
    argTypes:
    - protozero::pbf_writer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 488
      start: 480
    functionDepth: 0
    functionLinenumber: 480
    functionLinenumberEnd: 488
    functionName: pdns::trace::ResourceSpans::encode
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.cc
    functionUses: 3
    functionsReached:
    - pdns::trace::encode
    - pdns::trace::ResourceSpans::encode
    linkageType: ''
    returnType: void
    signature: void ResourceSpans::encode(protozero::pbf_writer& writer) const
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: next
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:493,1
    - Dst: tag
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:494,1
    - Dst: get_message
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:496,1
    - Dst: pdns::trace::Resource::decode
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:497,1
    - Dst: get_message
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:501,1
    - Dst: ResourceSpans::scope_spans::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:502,1
    - Dst: pdns::trace::ScopeSpans::decode
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:502,1
    - Dst: get_string
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:506,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 1
    argNames:
    - ' reader'
    argTypes:
    - protozero::pbf_reader
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 512
      start: 490
    functionDepth: 0
    functionLinenumber: 490
    functionLinenumberEnd: 512
    functionName: pdns::trace::ResourceSpans::decode
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.cc
    functionUses: 2
    functionsReached:
    - next
    - pdns::trace::Resource::decode
    - tag
    - pdns::trace::ScopeSpans::decode
    - get_message
    - ResourceSpans::scope_spans::emplace_back
    - get_string
    linkageType: ''
    returnType: ResourceSpans
    signature: ResourceSpans ResourceSpans::decode(protozero::pbf_reader& reader)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:516,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' writer'
    argTypes:
    - protozero::pbf_writer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 517
      start: 514
    functionDepth: 0
    functionLinenumber: 514
    functionLinenumberEnd: 517
    functionName: pdns::trace::TracesData::encode
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.cc
    functionUses: 2
    functionsReached:
    - pdns::trace::encode
    linkageType: ''
    returnType: void
    signature: void TracesData::encode(protozero::pbf_writer& writer) const
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: next
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:522,1
    - Dst: tag
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:523,1
    - Dst: get_message
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:525,1
    - Dst: TracesData::resource_spans::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:526,1
    - Dst: pdns::trace::ResourceSpans::decode
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:526,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 1
    argNames:
    - ' reader'
    argTypes:
    - protozero::pbf_reader
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 534
      start: 519
    functionDepth: 0
    functionLinenumber: 519
    functionLinenumberEnd: 534
    functionName: pdns::trace::TracesData::decode
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.cc
    functionUses: 2
    functionsReached:
    - next
    - TracesData::resource_spans::emplace_back
    - tag
    - get_message
    - pdns::trace::ResourceSpans::decode
    linkageType: ''
    returnType: TracesData
    signature: TracesData TracesData::decode(protozero::pbf_reader& reader)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: next
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:539,1
    - Dst: tag
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:540,1
    - Dst: get_string
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:542,1
    - Dst: get_message
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:545,1
    - Dst: pdns::trace::AnyValue::decode
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:546,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 1
    argNames:
    - ' reader'
    argTypes:
    - protozero::pbf_reader
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 554
      start: 536
    functionDepth: 0
    functionLinenumber: 536
    functionLinenumberEnd: 554
    functionName: pdns::trace::KeyValue::decode
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.cc
    functionUses: 15
    functionsReached:
    - next
    - pdns::trace::AnyValue::decode
    - tag
    - get_message
    - get_string
    linkageType: ''
    returnType: KeyValue
    signature: KeyValue KeyValue::decode(protozero::pbf_reader& reader)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::extractOTraceIDs
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:560,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' map'
    - eoc
    - ' span'
    argTypes:
    - EDNSOptionViewMap
    - EDNSOptionCode::EDNSOptionCodeEnum
    - pdns::trace::InitialSpanInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 562
      start: 556
    functionDepth: 0
    functionLinenumber: 556
    functionLinenumberEnd: 562
    functionName: pdns::trace::extractOTraceIDs
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.cc
    functionUses: 5
    functionsReached:
    - pdns::trace::extractOTraceIDs
    linkageType: ''
    returnType: bool
    signature: bool extractOTraceIDs(const EDNSOptionViewMap& map, EDNSOptionCode::EDNSOptionCodeEnum
      eoc, pdns::trace::InitialSpanInfo& span)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: find
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:580,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:580,1
    - Dst: second::values::at
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:581,1
    - Dst: reinterpret_cast<const uint8_t*>
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:582,1
    - Dst: EDNSOTTraceRecordView::getVersion
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:585,1
    - Dst: EDNSOTTraceRecordView::getTraceID
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:586,1
    - Dst: EDNSOTTraceRecordView::getSpanID
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:589,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 4
    argNames:
    - ' map'
    - eoc
    - ' traceID'
    - ' spanID'
    argTypes:
    - EDNSOptionViewMap
    - EDNSOptionCode::EDNSOptionCodeEnum
    - pdns::trace::TraceID
    - pdns::trace::SpanID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 593
      start: 573
    functionDepth: 0
    functionLinenumber: 573
    functionLinenumberEnd: 593
    functionName: pdns::trace::extractOTraceIDs
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.cc
    functionUses: 5
    functionsReached:
    - EDNSOTTraceRecordView::getVersion
    - EDNSOTTraceRecordView::getSpanID
    - reinterpret_cast<const uint8_t*>
    - end
    - second::values::at
    - EDNSOTTraceRecordView::getTraceID
    - find
    linkageType: ''
    returnType: bool
    signature: bool extractOTraceIDs(const EDNSOptionViewMap& map, EDNSOptionCode::EDNSOptionCodeEnum
      eoc, pdns::trace::TraceID& traceID, pdns::trace::SpanID& spanID)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeHexDump
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:597,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:597,1
    - Dst: pdns::trace::SpanID::begin
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:597,1
    - Dst: pdns::trace::SpanID::end
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:597,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 598
      start: 595
    functionDepth: 0
    functionLinenumber: 595
    functionLinenumberEnd: 598
    functionName: pdns::trace::SpanID::toLogString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.cc
    functionUses: 0
    functionsReached:
    - std::string
    - pdns::trace::SpanID::end
    - makeHexDump
    - pdns::trace::SpanID::begin
    linkageType: ''
    returnType: std::string
    signature: std::string SpanID::toLogString() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeHexDump
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:602,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:602,1
    - Dst: pdns::trace::TraceID::begin
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:602,1
    - Dst: pdns::trace::TraceID::end
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:602,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 603
      start: 600
    functionDepth: 0
    functionLinenumber: 600
    functionLinenumberEnd: 603
    functionName: pdns::trace::TraceID::toLogString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.cc
    functionUses: 0
    functionsReached:
    - pdns::trace::TraceID::end
    - std::string
    - makeHexDump
    - pdns::trace::TraceID::begin
    linkageType: ''
    returnType: std::string
    signature: std::string TraceID::toLogString() const
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: std::holds_alternative<std::string>
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:35,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:36,1
    - Dst: std::get<std::string>
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:36,1
    - Dst: std::holds_alternative<bool>
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:38,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:39,1
    - Dst: std::get<bool>
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:39,1
    - Dst: std::holds_alternative<int64_t>
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:41,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:42,1
    - Dst: std::get<int64_t>
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:42,1
    - Dst: std::holds_alternative<double>
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:44,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:45,1
    - Dst: std::get<double>
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:45,1
    - Dst: std::holds_alternative<ArrayValue>
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:47,1
    - Dst: std::get<ArrayValue>
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:49,1
    - Dst: std::holds_alternative<KeyValueList>
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:51,1
    - Dst: std::get<KeyValueList>
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:53,1
    - Dst: std::holds_alternative<std::vector<uint8_t>>
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:55,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:56,1
    - Dst: std::get<std::vector<uint8_t>>
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:56,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 22
    argCount: 1
    argNames:
    - ' writer'
    argTypes:
    - protozero::pbf_writer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 33
    functionDepth: 0
    functionLinenumber: 33
    functionLinenumberEnd: 58
    functionName: pdns::trace::AnyValue::encode
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.cc
    functionUses: 1
    functionsReached:
    - std::get<std::vector<uint8_t>>
    - std::get<ArrayValue>
    - std::holds_alternative<std::string>
    - std::holds_alternative<ArrayValue>
    - std::holds_alternative<std::vector<uint8_t>>
    - std::get<std::string>
    - std::get<double>
    - std::holds_alternative<double>
    - std::holds_alternative<bool>
    - std::holds_alternative<KeyValueList>
    - std::holds_alternative<int64_t>
    - pdns::trace::encode
    - std::get<int64_t>
    - std::get<KeyValueList>
    - std::get<bool>
    linkageType: ''
    returnType: void
    signature: void AnyValue::encode(protozero::pbf_writer& writer) const
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: next
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:62,1
    - Dst: tag
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:63,1
    - Dst: get_string
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:65,1
    - Dst: get_bool
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:68,1
    - Dst: get_int64
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:71,1
    - Dst: get_double
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:74,1
    - Dst: get_message
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:77,1
    - Dst: pdns::trace::ArrayValue::decode
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:78,1
    - Dst: get_message
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:82,1
    - Dst: pdns::trace::KeyValueList::decode
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:83,1
    - Dst: get_view
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:87,1
    - Dst: std::vector::reserve
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:89,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:89,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:90,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:91,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:91,1
    - Dst: auto::data
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:91,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:93,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 36
    argCount: 1
    argNames:
    - ' reader'
    argTypes:
    - protozero::pbf_reader
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 60
    functionDepth: 0
    functionLinenumber: 60
    functionLinenumberEnd: 102
    functionName: pdns::trace::AnyValue::decode
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.cc
    functionUses: 4
    functionsReached:
    - next
    - get_double
    - std::vector::push_back
    - std::move
    - get_bool
    - tag
    - pdns::trace::KeyValueList::decode
    - auto::data
    - get_message
    - get_int64
    - std::vector::reserve
    - static_cast<uint8_t>
    - pdns::trace::ArrayValue::decode
    - auto::size
    - get_string
    - get_view
    linkageType: ''
    returnType: AnyValue
    signature: AnyValue AnyValue::decode(protozero::pbf_reader& reader)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: std::holds_alternative<std::string>
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:106,1
    - Dst: std::get<std::string>
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:107,1
    - Dst: std::holds_alternative<bool>
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:109,1
    - Dst: std::get<bool>
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:110,1
    - Dst: std::holds_alternative<int64_t>
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:115,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:116,1
    - Dst: std::get<int64_t>
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:116,1
    - Dst: std::holds_alternative<double>
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:118,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:119,1
    - Dst: std::get<double>
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:119,1
    - Dst: std::holds_alternative<ArrayValue>
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:121,1
    - Dst: std::get<ArrayValue>
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:123,1
    - Dst: pdns::trace::AnyValue::toLogString
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:124,1
    - Dst: std::string::resize
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:126,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:126,1
    - Dst: std::holds_alternative<KeyValueList>
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:129,1
    - Dst: std::get<KeyValueList>
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:131,1
    - Dst: value::toLogString
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:132,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:134,1
    - Dst: std::string::resize
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:135,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:135,1
    - Dst: std::holds_alternative<std::vector<uint8_t>>
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:139,1
    - Dst: std::get<std::vector<uint8_t>>
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:140,1
    - Dst: Base64Encode
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:141,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:141,1
    - Dst: auto::begin
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:141,1
    - Dst: auto::end
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:141,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 34
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 144
      start: 104
    functionDepth: 1
    functionLinenumber: 104
    functionLinenumberEnd: 144
    functionName: pdns::trace::AnyValue::toLogString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.cc
    functionUses: 4
    functionsReached:
    - std::to_string
    - std::get<double>
    - std::holds_alternative<KeyValueList>
    - auto::begin
    - std::holds_alternative<ArrayValue>
    - std::get<int64_t>
    - std::string
    - std::get<KeyValueList>
    - std::string::size
    - value::toLogString
    - std::holds_alternative<std::vector<uint8_t>>
    - std::holds_alternative<std::string>
    - pdns::trace::AnyValue::toLogString
    - std::holds_alternative<double>
    - std::holds_alternative<bool>
    - std::string::resize
    - std::holds_alternative<int64_t>
    - std::get<std::vector<uint8_t>>
    - std::get<ArrayValue>
    - std::get<std::string>
    - auto::end
    - std::get<bool>
    - Base64Encode
    linkageType: ''
    returnType: std::string
    signature: std::string AnyValue::toLogString() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:148,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:149,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:151,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:154,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - ' writer'
    argTypes:
    - protozero::pbf_writer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 156
      start: 146
    functionDepth: 0
    functionLinenumber: 146
    functionLinenumberEnd: 156
    functionName: pdns::trace::EntityRef::encode
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.cc
    functionUses: 0
    functionsReached:
    - pdns::trace::encode
    linkageType: ''
    returnType: void
    signature: void EntityRef::encode(protozero::pbf_writer& writer) const
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: next
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:161,1
    - Dst: tag
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:162,1
    - Dst: get_string
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:164,1
    - Dst: get_string
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:167,1
    - Dst: EntityRef::id_keys::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:170,1
    - Dst: get_string
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:170,1
    - Dst: EntityRef::description_keys::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:173,1
    - Dst: get_string
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:173,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 20
    argCount: 1
    argNames:
    - ' reader'
    argTypes:
    - protozero::pbf_reader
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 180
      start: 158
    functionDepth: 0
    functionLinenumber: 158
    functionLinenumberEnd: 180
    functionName: pdns::trace::EntityRef::decode
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.cc
    functionUses: 3
    functionsReached:
    - next
    - tag
    - EntityRef::description_keys::emplace_back
    - EntityRef::id_keys::emplace_back
    - get_string
    linkageType: ''
    returnType: EntityRef
    signature: EntityRef EntityRef::decode(protozero::pbf_reader& reader)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:184,1
    - Dst: pdns::trace::KeyValue::encode
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:187,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - ' writer'
    argTypes:
    - protozero::pbf_writer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 189
      start: 182
    functionDepth: 0
    functionLinenumber: 182
    functionLinenumberEnd: 189
    functionName: pdns::trace::KeyValue::encode
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.cc
    functionUses: 4
    functionsReached:
    - pdns::trace::KeyValue::encode
    - pdns::trace::encode
    linkageType: ''
    returnType: void
    signature: void KeyValue::encode(protozero::pbf_writer& writer) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:193,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:194,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:195,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - ' writer'
    argTypes:
    - protozero::pbf_writer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 196
      start: 191
    functionDepth: 0
    functionLinenumber: 191
    functionLinenumberEnd: 196
    functionName: pdns::trace::Resource::encode
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.cc
    functionUses: 2
    functionsReached:
    - pdns::trace::encode
    linkageType: ''
    returnType: void
    signature: void Resource::encode(protozero::pbf_writer& writer) const
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: next
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:201,1
    - Dst: tag
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:202,1
    - Dst: get_message
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:204,1
    - Dst: Resource::attributes::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:205,1
    - Dst: pdns::trace::KeyValue::decode
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:205,1
    - Dst: get_uint32
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:209,1
    - Dst: get_message
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:212,1
    - Dst: Resource::entity_refs::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:213,1
    - Dst: pdns::trace::EntityRef::decode
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:213,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 1
    argNames:
    - ' reader'
    argTypes:
    - protozero::pbf_reader
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 221
      start: 198
    functionDepth: 0
    functionLinenumber: 198
    functionLinenumberEnd: 221
    functionName: pdns::trace::Resource::decode
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.cc
    functionUses: 3
    functionsReached:
    - next
    - Resource::attributes::emplace_back
    - Resource::entity_refs::emplace_back
    - tag
    - get_message
    - pdns::trace::KeyValue::decode
    - get_uint32
    - pdns::trace::EntityRef::decode
    linkageType: ''
    returnType: Resource
    signature: Resource Resource::decode(protozero::pbf_reader& reader)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:225,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:226,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:227,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:228,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - ' writer'
    argTypes:
    - protozero::pbf_writer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 229
      start: 223
    functionDepth: 0
    functionLinenumber: 223
    functionLinenumberEnd: 229
    functionName: pdns::trace::InstrumentationScope::encode
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.cc
    functionUses: 0
    functionsReached:
    - pdns::trace::encode
    linkageType: ''
    returnType: void
    signature: void InstrumentationScope::encode(protozero::pbf_writer& writer) const
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: next
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:234,1
    - Dst: tag
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:235,1
    - Dst: get_string
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:237,1
    - Dst: get_string
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:240,1
    - Dst: get_message
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:243,1
    - Dst: InstrumentationScope::attributes::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:244,1
    - Dst: pdns::trace::KeyValue::decode
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:244,1
    - Dst: get_uint32
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:248,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 21
    argCount: 1
    argNames:
    - ' reader'
    argTypes:
    - protozero::pbf_reader
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 255
      start: 231
    functionDepth: 0
    functionLinenumber: 231
    functionLinenumberEnd: 255
    functionName: pdns::trace::InstrumentationScope::decode
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.cc
    functionUses: 3
    functionsReached:
    - next
    - tag
    - get_message
    - pdns::trace::KeyValue::decode
    - get_uint32
    - get_string
    - InstrumentationScope::attributes::emplace_back
    linkageType: ''
    returnType: InstrumentationScope
    signature: InstrumentationScope InstrumentationScope::decode(protozero::pbf_reader&
      reader)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:259,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:260,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ' writer'
    argTypes:
    - protozero::pbf_writer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 261
      start: 257
    functionDepth: 0
    functionLinenumber: 257
    functionLinenumberEnd: 261
    functionName: pdns::trace::Status::encode
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.cc
    functionUses: 0
    functionsReached:
    - pdns::trace::encode
    linkageType: ''
    returnType: void
    signature: void Status::encode(protozero::pbf_writer& writer) const
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: next
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:266,1
    - Dst: tag
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:267,1
    - Dst: get_string
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:269,1
    - Dst: static_cast<StatusCode>
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:272,1
    - Dst: get_uint32
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:272,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 1
    argNames:
    - ' reader'
    argTypes:
    - protozero::pbf_reader
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 279
      start: 263
    functionDepth: 0
    functionLinenumber: 263
    functionLinenumberEnd: 279
    functionName: pdns::trace::Status::decode
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.cc
    functionUses: 3
    functionsReached:
    - next
    - tag
    - static_cast<StatusCode>
    - get_uint32
    - get_string
    linkageType: ''
    returnType: Status
    signature: Status Status::decode(protozero::pbf_reader& reader)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::encodeFixed
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:283,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:284,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:285,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:286,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - ' writer'
    argTypes:
    - protozero::pbf_writer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 287
      start: 281
    functionDepth: 0
    functionLinenumber: 281
    functionLinenumberEnd: 287
    functionName: Span::Event::encode(protozero::pbf_writer& writer) const
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.cc
    functionUses: 0
    functionsReached:
    - pdns::trace::encodeFixed
    - pdns::trace::encode
    linkageType: ''
    returnType: void
    signature: void Span::Event::encode(protozero::pbf_writer& writer) const
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: next
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:292,1
    - Dst: tag
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:293,1
    - Dst: get_fixed64
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:295,1
    - Dst: get_string
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:298,1
    - Dst: get_message
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:301,1
    - Dst: Span::Event::attributes::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:302,1
    - Dst: pdns::trace::KeyValue::decode
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:302,1
    - Dst: get_uint32
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:306,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    argCount: 1
    argNames:
    - ' reader'
    argTypes:
    - protozero::pbf_reader
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 312
      start: 289
    functionDepth: 0
    functionLinenumber: 289
    functionLinenumberEnd: 312
    functionName: Span::Event::decode(protozero::pbf_reader& reader)
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.cc
    functionUses: 0
    functionsReached:
    - next
    - tag
    - Span::Event::attributes::emplace_back
    - get_message
    - pdns::trace::KeyValue::decode
    - get_fixed64
    - get_uint32
    - get_string
    linkageType: ''
    returnType: Span::Event
    signature: Span::Event Span::Event::decode(protozero::pbf_reader& reader)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:316,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:317,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:318,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:319,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:320,1
    - Dst: pdns::trace::encodeFixed
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:321,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - ' writer'
    argTypes:
    - protozero::pbf_writer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 322
      start: 314
    functionDepth: 0
    functionLinenumber: 314
    functionLinenumberEnd: 322
    functionName: Span::Link::encode(protozero::pbf_writer& writer) const
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.cc
    functionUses: 0
    functionsReached:
    - pdns::trace::encodeFixed
    - pdns::trace::encode
    linkageType: ''
    returnType: void
    signature: void Span::Link::encode(protozero::pbf_writer& writer) const
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: next
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:327,1
    - Dst: tag
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:328,1
    - Dst: decodeTraceID
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:330,1
    - Dst: decodeSpanID
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:333,1
    - Dst: get_string
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:336,1
    - Dst: get_message
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:339,1
    - Dst: Link::attributes::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:340,1
    - Dst: pdns::trace::KeyValue::decode
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:340,1
    - Dst: get_uint32
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:344,1
    - Dst: get_fixed32
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:347,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 26
    argCount: 1
    argNames:
    - ' reader'
    argTypes:
    - protozero::pbf_reader
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 353
      start: 324
    functionDepth: 0
    functionLinenumber: 324
    functionLinenumberEnd: 353
    functionName: Span::Link::decode(protozero::pbf_reader& reader)
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.cc
    functionUses: 0
    functionsReached:
    - next
    - decodeSpanID
    - Link::attributes::emplace_back
    - decodeTraceID
    - tag
    - get_message
    - pdns::trace::KeyValue::decode
    - get_uint32
    - get_fixed32
    - get_string
    linkageType: ''
    returnType: Span::Link
    signature: Span::Link Span::Link::decode(protozero::pbf_reader& reader)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:357,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:358,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:359,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:360,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:361,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:362,1
    - Dst: pdns::trace::encodeFixed
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:363,1
    - Dst: pdns::trace::encodeFixed
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:364,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:365,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:366,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:367,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:368,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:369,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:370,1
    - Dst: message::empty
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:371,1
    - Dst: pdns::trace::Span::encode
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:373,1
    - Dst: pdns::trace::encodeFixed
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:375,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 19
    argCount: 1
    argNames:
    - ' writer'
    argTypes:
    - protozero::pbf_writer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 376
      start: 355
    functionDepth: 0
    functionLinenumber: 355
    functionLinenumberEnd: 376
    functionName: pdns::trace::Span::encode
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.cc
    functionUses: 4
    functionsReached:
    - pdns::trace::Span::encode
    - pdns::trace::encodeFixed
    - pdns::trace::encode
    - message::empty
    linkageType: ''
    returnType: void
    signature: void Span::encode(protozero::pbf_writer& writer) const
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: next
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:381,1
    - Dst: tag
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:382,1
    - Dst: decodeTraceID
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:384,1
    - Dst: decodeSpanID
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:387,1
    - Dst: get_string
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:390,1
    - Dst: decodeSpanID
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:393,1
    - Dst: get_string
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:396,1
    - Dst: static_cast<Span::SpanKind>
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:399,1
    - Dst: get_uint32
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:399,1
    - Dst: get_fixed64
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:402,1
    - Dst: get_fixed64
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:405,1
    - Dst: get_message
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:408,1
    - Dst: Span::attributes::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:409,1
    - Dst: pdns::trace::KeyValue::decode
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:409,1
    - Dst: get_uint32
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:413,1
    - Dst: get_message
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:416,1
    - Dst: Span::events::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:417,1
    - Dst: YAML::decode
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:417,1
    - Dst: get_uint32
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:421,1
    - Dst: get_message
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:424,1
    - Dst: Span::links::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:425,1
    - Dst: YAML::decode
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:425,1
    - Dst: get_uint32
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:429,1
    - Dst: get_message
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:432,1
    - Dst: pdns::trace::Status::decode
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:433,1
    - Dst: get_fixed32
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:437,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 60
    argCount: 1
    argNames:
    - ' reader'
    argTypes:
    - protozero::pbf_reader
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 444
      start: 378
    functionDepth: 1
    functionLinenumber: 378
    functionLinenumberEnd: 444
    functionName: pdns::trace::Span::decode
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.cc
    functionUses: 3
    functionsReached:
    - next
    - Span::attributes::emplace_back
    - decodeSpanID
    - static_cast<Span::SpanKind>
    - decodeTraceID
    - tag
    - YAML::decode
    - get_message
    - pdns::trace::KeyValue::decode
    - pdns::trace::Status::decode
    - get_fixed64
    - Span::events::emplace_back
    - get_uint32
    - get_fixed32
    - get_string
    - Span::links::emplace_back
    linkageType: ''
    returnType: Span
    signature: Span Span::decode(protozero::pbf_reader& reader)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::ScopeSpans::encode
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:450,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:452,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:453,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - ' writer'
    argTypes:
    - protozero::pbf_writer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 454
      start: 446
    functionDepth: 0
    functionLinenumber: 446
    functionLinenumberEnd: 454
    functionName: pdns::trace::ScopeSpans::encode
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.cc
    functionUses: 4
    functionsReached:
    - pdns::trace::ScopeSpans::encode
    - pdns::trace::encode
    linkageType: ''
    returnType: void
    signature: void ScopeSpans::encode(protozero::pbf_writer& writer) const
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: next
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:459,1
    - Dst: tag
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:460,1
    - Dst: get_message
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:462,1
    - Dst: pdns::trace::InstrumentationScope::decode
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:463,1
    - Dst: get_message
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:467,1
    - Dst: ScopeSpans::spans::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:468,1
    - Dst: pdns::trace::Span::decode
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:468,1
    - Dst: get_string
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:472,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 1
    argNames:
    - ' reader'
    argTypes:
    - protozero::pbf_reader
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 478
      start: 456
    functionDepth: 0
    functionLinenumber: 456
    functionLinenumberEnd: 478
    functionName: pdns::trace::ScopeSpans::decode
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.cc
    functionUses: 3
    functionsReached:
    - next
    - ScopeSpans::spans::emplace_back
    - tag
    - get_message
    - pdns::trace::InstrumentationScope::decode
    - get_string
    - pdns::trace::Span::decode
    linkageType: ''
    returnType: ScopeSpans
    signature: ScopeSpans ScopeSpans::decode(protozero::pbf_reader& reader)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::ResourceSpans::encode
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:484,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:486,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:487,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - ' writer'
    argTypes:
    - protozero::pbf_writer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 488
      start: 480
    functionDepth: 0
    functionLinenumber: 480
    functionLinenumberEnd: 488
    functionName: pdns::trace::ResourceSpans::encode
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.cc
    functionUses: 4
    functionsReached:
    - pdns::trace::encode
    - pdns::trace::ResourceSpans::encode
    linkageType: ''
    returnType: void
    signature: void ResourceSpans::encode(protozero::pbf_writer& writer) const
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: next
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:493,1
    - Dst: tag
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:494,1
    - Dst: get_message
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:496,1
    - Dst: pdns::trace::Resource::decode
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:497,1
    - Dst: get_message
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:501,1
    - Dst: ResourceSpans::scope_spans::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:502,1
    - Dst: pdns::trace::ScopeSpans::decode
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:502,1
    - Dst: get_string
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:506,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 1
    argNames:
    - ' reader'
    argTypes:
    - protozero::pbf_reader
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 512
      start: 490
    functionDepth: 0
    functionLinenumber: 490
    functionLinenumberEnd: 512
    functionName: pdns::trace::ResourceSpans::decode
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.cc
    functionUses: 3
    functionsReached:
    - next
    - pdns::trace::Resource::decode
    - tag
    - pdns::trace::ScopeSpans::decode
    - get_message
    - ResourceSpans::scope_spans::emplace_back
    - get_string
    linkageType: ''
    returnType: ResourceSpans
    signature: ResourceSpans ResourceSpans::decode(protozero::pbf_reader& reader)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:516,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' writer'
    argTypes:
    - protozero::pbf_writer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 517
      start: 514
    functionDepth: 0
    functionLinenumber: 514
    functionLinenumberEnd: 517
    functionName: pdns::trace::TracesData::encode
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.cc
    functionUses: 2
    functionsReached:
    - pdns::trace::encode
    linkageType: ''
    returnType: void
    signature: void TracesData::encode(protozero::pbf_writer& writer) const
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: next
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:522,1
    - Dst: tag
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:523,1
    - Dst: get_message
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:525,1
    - Dst: TracesData::resource_spans::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:526,1
    - Dst: pdns::trace::ResourceSpans::decode
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:526,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 1
    argNames:
    - ' reader'
    argTypes:
    - protozero::pbf_reader
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 534
      start: 519
    functionDepth: 0
    functionLinenumber: 519
    functionLinenumberEnd: 534
    functionName: pdns::trace::TracesData::decode
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.cc
    functionUses: 2
    functionsReached:
    - next
    - TracesData::resource_spans::emplace_back
    - tag
    - get_message
    - pdns::trace::ResourceSpans::decode
    linkageType: ''
    returnType: TracesData
    signature: TracesData TracesData::decode(protozero::pbf_reader& reader)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: next
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:539,1
    - Dst: tag
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:540,1
    - Dst: get_string
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:542,1
    - Dst: get_message
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:545,1
    - Dst: pdns::trace::AnyValue::decode
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:546,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 1
    argNames:
    - ' reader'
    argTypes:
    - protozero::pbf_reader
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 554
      start: 536
    functionDepth: 0
    functionLinenumber: 536
    functionLinenumberEnd: 554
    functionName: pdns::trace::KeyValue::decode
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.cc
    functionUses: 20
    functionsReached:
    - next
    - pdns::trace::AnyValue::decode
    - tag
    - get_message
    - get_string
    linkageType: ''
    returnType: KeyValue
    signature: KeyValue KeyValue::decode(protozero::pbf_reader& reader)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::extractOTraceIDs
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:560,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' map'
    - eoc
    - ' span'
    argTypes:
    - EDNSOptionViewMap
    - EDNSOptionCode::EDNSOptionCodeEnum
    - pdns::trace::InitialSpanInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 562
      start: 556
    functionDepth: 0
    functionLinenumber: 556
    functionLinenumberEnd: 562
    functionName: pdns::trace::extractOTraceIDs
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.cc
    functionUses: 6
    functionsReached:
    - pdns::trace::extractOTraceIDs
    linkageType: ''
    returnType: bool
    signature: bool extractOTraceIDs(const EDNSOptionViewMap& map, EDNSOptionCode::EDNSOptionCodeEnum
      eoc, pdns::trace::InitialSpanInfo& span)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: find
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:580,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:580,1
    - Dst: second::values::at
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:581,1
    - Dst: reinterpret_cast<const uint8_t*>
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:582,1
    - Dst: EDNSOTTraceRecordView::getVersion
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:585,1
    - Dst: EDNSOTTraceRecordView::getTraceID
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:586,1
    - Dst: EDNSOTTraceRecordView::getSpanID
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:589,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 4
    argNames:
    - ' map'
    - eoc
    - ' traceID'
    - ' spanID'
    argTypes:
    - EDNSOptionViewMap
    - EDNSOptionCode::EDNSOptionCodeEnum
    - pdns::trace::TraceID
    - pdns::trace::SpanID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 593
      start: 573
    functionDepth: 0
    functionLinenumber: 573
    functionLinenumberEnd: 593
    functionName: pdns::trace::extractOTraceIDs
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.cc
    functionUses: 6
    functionsReached:
    - EDNSOTTraceRecordView::getVersion
    - EDNSOTTraceRecordView::getSpanID
    - reinterpret_cast<const uint8_t*>
    - end
    - second::values::at
    - EDNSOTTraceRecordView::getTraceID
    - find
    linkageType: ''
    returnType: bool
    signature: bool extractOTraceIDs(const EDNSOptionViewMap& map, EDNSOptionCode::EDNSOptionCodeEnum
      eoc, pdns::trace::TraceID& traceID, pdns::trace::SpanID& spanID)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeHexDump
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:597,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:597,1
    - Dst: pdns::trace::SpanID::begin
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:597,1
    - Dst: pdns::trace::SpanID::end
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:597,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 598
      start: 595
    functionDepth: 0
    functionLinenumber: 595
    functionLinenumberEnd: 598
    functionName: pdns::trace::SpanID::toLogString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.cc
    functionUses: 0
    functionsReached:
    - std::string
    - pdns::trace::SpanID::end
    - makeHexDump
    - pdns::trace::SpanID::begin
    linkageType: ''
    returnType: std::string
    signature: std::string SpanID::toLogString() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeHexDump
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:602,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:602,1
    - Dst: pdns::trace::TraceID::begin
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:602,1
    - Dst: pdns::trace::TraceID::end
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.cc:602,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 603
      start: 600
    functionDepth: 0
    functionLinenumber: 600
    functionLinenumberEnd: 603
    functionName: pdns::trace::TraceID::toLogString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.cc
    functionUses: 0
    functionsReached:
    - pdns::trace::TraceID::end
    - std::string
    - makeHexDump
    - pdns::trace::TraceID::begin
    linkageType: ''
    returnType: std::string
    signature: std::string TraceID::toLogString() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:61,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:64,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 4
    argNames:
    - mode
    - type
    - file
    - line
    argTypes:
    - int
    - int
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 58
    functionDepth: 0
    functionLinenumber: 58
    functionLinenumberEnd: 66
    functionName: openssl_pthreads_locking_callback
    functionSourceFile: /src/pdns/pdns/dnsdistdist/libssl.cc
    functionUses: 0
    functionsReached:
    - at
    linkageType: ''
    returnType: void
    signature: void openssl_pthreads_locking_callback(int mode, int type, const char
      *file, int line)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pthread_self
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:70,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 68
    functionDepth: 0
    functionLinenumber: 68
    functionLinenumberEnd: 71
    functionName: openssl_pthreads_id_callback
    functionSourceFile: /src/pdns/pdns/dnsdistdist/libssl.cc
    functionUses: 0
    functionsReached:
    - pthread_self
    linkageType: ''
    returnType: unsigned long
    signature: unsigned long openssl_pthreads_id_callback()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::vector<std::mutex>
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:76,1
    - Dst: CRYPTO_num_locks
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:76,1
    - Dst: CRYPTO_set_id_callback
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:77,1
    - Dst: CRYPTO_set_locking_callback
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:78,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 74
    functionDepth: 0
    functionLinenumber: 74
    functionLinenumberEnd: 79
    functionName: openssl_thread_setup
    functionSourceFile: /src/pdns/pdns/dnsdistdist/libssl.cc
    functionUses: 2
    functionsReached:
    - CRYPTO_set_locking_callback
    - std::vector<std::mutex>
    - CRYPTO_set_id_callback
    - CRYPTO_num_locks
    linkageType: ''
    returnType: void
    signature: void openssl_thread_setup()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CRYPTO_set_locking_callback
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:83,1
    - Dst: clear
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:84,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 81
    functionDepth: 1
    functionLinenumber: 81
    functionLinenumberEnd: 85
    functionName: openssl_thread_cleanup
    functionSourceFile: /src/pdns/pdns/dnsdistdist/libssl.cc
    functionUses: 1
    functionsReached:
    - clear
    - CRYPTO_set_locking_callback
    linkageType: ''
    returnType: void
    signature: void openssl_thread_cleanup()
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: fetch_add
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:105,1
    - Dst: OPENSSL_init_crypto
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:126,1
    - Dst: OPENSSL_init_ssl
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:127,1
    - Dst: SSL_load_error_strings
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:132,1
    - Dst: OpenSSL_add_ssl_algorithms
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:134,1
    - Dst: openssl_thread_setup
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:135,1
    - Dst: SSL_CTX_get_ex_new_index
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:137,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:140,1
    - Dst: SSL_CTX_get_ex_new_index
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:143,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:146,1
    - Dst: SSL_CTX_get_ex_new_index
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:149,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:152,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 21
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 103
    functionDepth: 0
    functionLinenumber: 103
    functionLinenumberEnd: 155
    functionName: registerOpenSSLUser
    functionSourceFile: /src/pdns/pdns/dnsdistdist/libssl.cc
    functionUses: 10
    functionsReached:
    - fetch_add
    - std::runtime_error
    - openssl_thread_setup
    - OpenSSL_add_ssl_algorithms
    - OPENSSL_init_crypto
    - OPENSSL_init_ssl
    - SSL_CTX_get_ex_new_index
    - SSL_load_error_strings
    linkageType: ''
    returnType: void
    signature: void registerOpenSSLUser()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: fetch_sub
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:159,1
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:161,1
    - Dst: ENGINE_finish
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:162,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:162,1
    - Dst: reset
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:163,1
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:165,1
    - Dst: ERR_free_strings
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:168,1
    - Dst: EVP_cleanup
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:170,1
    - Dst: CONF_modules_finish
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:172,1
    - Dst: CONF_modules_free
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:173,1
    - Dst: CONF_modules_unload
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:174,1
    - Dst: CRYPTO_cleanup_all_ex_data
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:176,1
    - Dst: openssl_thread_cleanup
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:177,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 180
      start: 157
    functionDepth: 0
    functionLinenumber: 157
    functionLinenumberEnd: 180
    functionName: unregisterOpenSSLUser
    functionSourceFile: /src/pdns/pdns/dnsdistdist/libssl.cc
    functionUses: 4
    functionsReached:
    - reset
    - fetch_sub
    - CONF_modules_unload
    - EVP_cleanup
    - get
    - lock
    - CONF_modules_free
    - openssl_thread_cleanup
    - CONF_modules_finish
    - CRYPTO_cleanup_all_ex_data
    - ERR_free_strings
    - ENGINE_finish
    linkageType: ''
    returnType: void
    signature: void unregisterOpenSSLUser()
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: load
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:185,1
    - Dst: registerOpenSSLUser
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:189,1
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:192,1
    - Dst: auto::count
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:193,1
    - Dst: std::unique_ptr<OSSL_PROVIDER, decltype(&OSSL_PROVIDER_unload)>
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:197,1
    - Dst: OSSL_PROVIDER_load
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:197,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:197,1
    - Dst: auto::insert
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:202,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:202,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - ' providerName'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 204
      start: 183
    functionDepth: 1
    functionLinenumber: 183
    functionLinenumberEnd: 204
    functionName: libssl_load_provider
    functionSourceFile: /src/pdns/pdns/dnsdistdist/libssl.cc
    functionUses: 0
    functionsReached:
    - load
    - std::unique_ptr<OSSL_PROVIDER, decltype(&OSSL_PROVIDER_unload)>
    - OSSL_PROVIDER_load
    - std::move
    - lock
    - registerOpenSSLUser
    - auto::insert
    - c_str
    - auto::count
    linkageType: ''
    returnType: std::pair<bool, std::string>
    signature: std::pair<bool, std::string> libssl_load_provider(const std::string&
      providerName)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: load
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:215,1
    - Dst: registerOpenSSLUser
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:219,1
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:222,1
    - Dst: auto::count
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:223,1
    - Dst: std::unique_ptr<ENGINE, decltype(&ENGINE_free)>
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:227,1
    - Dst: ENGINE_by_id
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:227,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:227,1
    - Dst: ENGINE_init
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:232,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:232,1
    - Dst: ENGINE_set_default_string
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:237,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:237,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:237,1
    - Dst: auto::insert
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:242,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:242,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 22
    argCount: 2
    argNames:
    - ' engineName'
    - ' defaultString'
    argTypes:
    - std::string
    - std::optional<std::string>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 245
      start: 208
    functionDepth: 1
    functionLinenumber: 208
    functionLinenumberEnd: 245
    functionName: libssl_load_engine
    functionSourceFile: /src/pdns/pdns/dnsdistdist/libssl.cc
    functionUses: 0
    functionsReached:
    - load
    - std::move
    - ENGINE_init
    - auto::get
    - lock
    - registerOpenSSLUser
    - std::unique_ptr<ENGINE, decltype(&ENGINE_free)>
    - auto::insert
    - ENGINE_set_default_string
    - c_str
    - auto::count
    - ENGINE_by_id
    linkageType: ''
    returnType: std::pair<bool, std::string>
    signature: std::pair<bool, std::string> libssl_load_engine([[maybe_unused]] const
      std::string& engineName, [[maybe_unused]] const std::optional<std::string>&
      defaultString)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SSL_get_SSL_CTX
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:250,1
    - Dst: SSL_CTX_get_ex_data
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:255,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - s
    argTypes:
    - SSL*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 256
      start: 248
    functionDepth: 0
    functionLinenumber: 248
    functionLinenumberEnd: 256
    functionName: libssl_get_ticket_key_callback_data
    functionSourceFile: /src/pdns/pdns/dnsdistdist/libssl.cc
    functionUses: 4
    functionsReached:
    - SSL_CTX_get_ex_data
    - SSL_get_SSL_CTX
    linkageType: ''
    returnType: void
    signature: void * libssl_get_ticket_key_callback_data(SSL* s)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SSL_CTX_set_ex_data
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:260,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ctx
    - data
    argTypes:
    - SSL_CTX*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 261
      start: 258
    functionDepth: 0
    functionLinenumber: 258
    functionLinenumberEnd: 261
    functionName: libssl_set_ticket_key_callback_data
    functionSourceFile: /src/pdns/pdns/dnsdistdist/libssl.cc
    functionUses: 2
    functionsReached:
    - SSL_CTX_set_ex_data
    linkageType: ''
    returnType: void
    signature: void libssl_set_ticket_key_callback_data(SSL_CTX* ctx, void* data)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: getEncryptionKey
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:270,1
    - Dst: auto::encrypt
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:275,1
    - Dst: getDecryptionKey
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:280,1
    - Dst: auto::decrypt
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:286,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 6
    argNames:
    - ' keyring'
    - keyName
    - iv
    - ectx
    - hctx
    - enc
    argTypes:
    - OpenSSLTLSTicketKeysRing
    - unsigned char[]
    - unsigned char*
    - EVP_CIPHER_CTX*
    - HMAC_CTX*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 296
      start: 266
    functionDepth: 0
    functionLinenumber: 266
    functionLinenumberEnd: 296
    functionName: libssl_ticket_key_callback
    functionSourceFile: /src/pdns/pdns/dnsdistdist/libssl.cc
    functionUses: 2
    functionsReached:
    - auto::decrypt
    - getEncryptionKey
    - auto::encrypt
    - getDecryptionKey
    linkageType: ''
    returnType: int
    signature: int libssl_ticket_key_callback(SSL* /* s */, OpenSSLTLSTicketKeysRing&
      keyring, unsigned char keyName[TLS_TICKETS_KEY_NAME_SIZE], unsigned char* iv,
      EVP_CIPHER_CTX* ectx, HMAC_CTX* hctx, int enc)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SSL_get_servername
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:300,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ssl
    argTypes:
    - SSL*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 305
      start: 298
    functionDepth: 0
    functionLinenumber: 298
    functionLinenumberEnd: 305
    functionName: libssl_server_name_callback
    functionSourceFile: /src/pdns/pdns/dnsdistdist/libssl.cc
    functionUses: 0
    functionsReached:
    - SSL_get_servername
    linkageType: ''
    returnType: int
    signature: int libssl_server_name_callback(SSL* ssl, int* /* alert */, void* /*
      arg */)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: SSL_get_SSL_CTX
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:309,1
    - Dst: reinterpret_cast<TLSErrorCounters*>
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:314,1
    - Dst: SSL_CTX_get_ex_data
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:314,1
    - Dst: ERR_peek_last_error
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:320,1
    - Dst: ERR_GET_REASON
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:321,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 38
    argCount: 2
    argNames:
    - ssl
    - where
    argTypes:
    - SSL*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 355
      start: 307
    functionDepth: 0
    functionLinenumber: 307
    functionLinenumberEnd: 355
    functionName: libssl_info_callback
    functionSourceFile: /src/pdns/pdns/dnsdistdist/libssl.cc
    functionUses: 0
    functionsReached:
    - ERR_peek_last_error
    - ERR_GET_REASON
    - reinterpret_cast<TLSErrorCounters*>
    - SSL_CTX_get_ex_data
    - SSL_get_SSL_CTX
    linkageType: ''
    returnType: void
    signature: void libssl_info_callback(const SSL *ssl, int where, int /* ret */)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SSL_CTX_set_ex_data
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:359,1
    - Dst: SSL_CTX_set_info_callback
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:360,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ' ctx'
    - counters
    argTypes:
    - SSL_CTX
    - TLSErrorCounters*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 361
      start: 357
    functionDepth: 0
    functionLinenumber: 357
    functionLinenumberEnd: 361
    functionName: libssl_set_error_counters_callback
    functionSourceFile: /src/pdns/pdns/dnsdistdist/libssl.cc
    functionUses: 2
    functionsReached:
    - SSL_CTX_set_info_callback
    - SSL_CTX_set_ex_data
    linkageType: ''
    returnType: void
    signature: void libssl_set_error_counters_callback(SSL_CTX& ctx, TLSErrorCounters*
      counters)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: SSL_get_privatekey
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:366,1
    - Dst: find
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:372,1
    - Dst: EVP_PKEY_base_id
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:372,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:373,1
    - Dst: second::size
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:377,1
    - Dst: OPENSSL_malloc
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:383,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:388,1
    - Dst: second::data
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:388,1
    - Dst: const_cast<char*>
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:391,1
    - Dst: second::data
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:391,1
    - Dst: SSL_set_tlsext_status_ocsp_resp
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:393,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 2
    argNames:
    - ssl
    - ' ocspMap'
    argTypes:
    - SSL*
    - std::map<int, std::string>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 395
      start: 364
    functionDepth: 0
    functionLinenumber: 364
    functionLinenumberEnd: 395
    functionName: libssl_ocsp_stapling_callback
    functionSourceFile: /src/pdns/pdns/dnsdistdist/libssl.cc
    functionUses: 2
    functionsReached:
    - memcpy
    - const_cast<char*>
    - SSL_set_tlsext_status_ocsp_resp
    - end
    - OPENSSL_malloc
    - EVP_PKEY_base_id
    - SSL_get_privatekey
    - second::data
    - find
    - second::size
    linkageType: ''
    returnType: int
    signature: int libssl_ocsp_stapling_callback(SSL* ssl, const std::map<int, std::string>&
      ocspMap)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: reinterpret_cast<const unsigned char *>
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:399,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:399,1
    - Dst: d2i_OCSP_RESPONSE
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:400,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:400,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:402,1
    - Dst: OCSP_response_status
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:405,1
    - Dst: std::unique_ptr::get
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:405,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:407,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:407,1
    - Dst: OCSP_response_get1_basic
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:410,1
    - Dst: std::unique_ptr::get
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:410,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:412,1
    - Dst: OCSP_resp_count
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:415,1
    - Dst: std::unique_ptr::get
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:415,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:416,1
    - Dst: OCSP_resp_get0
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:419,1
    - Dst: std::unique_ptr::get
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:419,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:421,1
    - Dst: OCSP_single_get0_status
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:429,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:431,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:431,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:434,1
    - Dst: OCSP_check_validity
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:437,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:439,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 26
    argCount: 1
    argNames:
    - ' response'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 443
      start: 397
    functionDepth: 0
    functionLinenumber: 397
    functionLinenumberEnd: 443
    functionName: libssl_validate_ocsp_response
    functionSourceFile: /src/pdns/pdns/dnsdistdist/libssl.cc
    functionUses: 1
    functionsReached:
    - reinterpret_cast<const unsigned char *>
    - OCSP_single_get0_status
    - d2i_OCSP_RESPONSE
    - std::to_string
    - std::runtime_error
    - OCSP_response_status
    - size
    - OCSP_resp_get0
    - OCSP_resp_count
    - data
    - OCSP_response_get1_basic
    - std::unique_ptr::get
    - OCSP_check_validity
    linkageType: ''
    returnType: bool
    signature: bool libssl_validate_ocsp_response(const std::string& response)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:449,1
    - Dst: std::vector<int>::size
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:449,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:450,1
    - Dst: std::ifstream::read
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:460,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:460,1
    - Dst: std::array::size
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:460,1
    - Dst: std::ifstream::bad
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:461,1
    - Dst: std::ifstream::close
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:462,1
    - Dst: push_back
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:463,1
    - Dst: std::string::append
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:466,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:466,1
    - Dst: std::ifstream::gcount
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:466,1
    - Dst: std::ifstream::close
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:468,1
    - Dst: libssl_validate_ocsp_response
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:471,1
    - Dst: std::map::insert
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:472,1
    - Dst: std::vector<int>::at
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:472,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:472,1
    - Dst: push_back
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:475,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:475,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 23
    argCount: 3
    argNames:
    - ' ocspFiles'
    - keyTypes
    - ' warnings'
    argTypes:
    - std::vector<std::string>
    - std::vector<int>
    - std::vector<std::string>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 481
      start: 445
    functionDepth: 1
    functionLinenumber: 445
    functionLinenumberEnd: 481
    functionName: libssl_load_ocsp_responses
    functionSourceFile: /src/pdns/pdns/dnsdistdist/libssl.cc
    functionUses: 2
    functionsReached:
    - std::move
    - std::vector<int>::size
    - std::ifstream::close
    - std::runtime_error
    - push_back
    - std::string::append
    - what
    - std::map::insert
    - size
    - libssl_validate_ocsp_response
    - std::ifstream::gcount
    - std::ifstream::read
    - std::vector<int>::at
    - std::array::data
    - std::ifstream::bad
    - std::array::size
    linkageType: ''
    returnType: std::map<int, std::string>
    signature: std::map<int, std::string> libssl_load_ocsp_responses(const std::vector<std::string>&
      ocspFiles, std::vector<int> keyTypes, std::vector<std::string>& warnings)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: EVP_sha256
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:486,1
    - Dst: pdns::UniqueFilePtr
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:488,1
    - Dst: fopen
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:488,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:488,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:490,1
    - Dst: std::unique_ptr<X509, void(*)(X509*)>
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:492,1
    - Dst: PEM_read_X509_AUX
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:492,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:492,1
    - Dst: pdns::UniqueFilePtr
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:494,1
    - Dst: fopen
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:494,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:494,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:496,1
    - Dst: std::unique_ptr<X509, void(*)(X509*)>
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:498,1
    - Dst: PEM_read_X509_AUX
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:498,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:498,1
    - Dst: pdns::UniqueFilePtr
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:499,1
    - Dst: fopen
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:499,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:499,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:501,1
    - Dst: std::unique_ptr<EVP_PKEY, void(*)(EVP_PKEY*)>
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:503,1
    - Dst: PEM_read_PrivateKey
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:503,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:503,1
    - Dst: auto::reset
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:504,1
    - Dst: std::unique_ptr<OCSP_BASICRESP, void(*)(OCSP_BASICRESP*)>
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:506,1
    - Dst: OCSP_BASICRESP_new
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:506,1
    - Dst: std::unique_ptr<ASN1_TIME, void(*)(ASN1_TIME*)>
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:507,1
    - Dst: X509_gmtime_adj
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:507,1
    - Dst: std::unique_ptr<ASN1_TIME, void(*)(ASN1_TIME*)>
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:508,1
    - Dst: X509_time_adj_ex
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:508,1
    - Dst: std::unique_ptr<OCSP_CERTID, void(*)(OCSP_CERTID*)>
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:510,1
    - Dst: OCSP_cert_to_id
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:510,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:510,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:510,1
    - Dst: OCSP_basic_add1_status
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:511,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:511,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:511,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:511,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:511,1
    - Dst: OCSP_basic_sign
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:513,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:513,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:513,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:513,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:514,1
    - Dst: std::unique_ptr<OCSP_RESPONSE, void(*)(OCSP_RESPONSE*)>
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:517,1
    - Dst: OCSP_response_create
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:517,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:517,1
    - Dst: std::unique_ptr<BIO, void(*)(BIO*)>
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:518,1
    - Dst: BIO_new_file
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:518,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:518,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:520,1
    - Dst: ASN1_i2d_bio
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:524,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:524,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:524,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 22
    argCount: 6
    argNames:
    - ' certFile'
    - ' caCert'
    - ' caKey'
    - ' outFile'
    - ndays
    - nmin
    argTypes:
    - std::string
    - std::string
    - std::string
    - std::string
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 527
      start: 484
    functionDepth: 0
    functionLinenumber: 484
    functionLinenumberEnd: 527
    functionName: libssl_generate_ocsp_response
    functionSourceFile: /src/pdns/pdns/dnsdistdist/libssl.cc
    functionUses: 0
    functionsReached:
    - OCSP_response_create
    - std::unique_ptr<X509, void(*)(X509*)>
    - fopen
    - X509_time_adj_ex
    - std::unique_ptr<OCSP_RESPONSE, void(*)(OCSP_RESPONSE*)>
    - std::unique_ptr<BIO, void(*)(BIO*)>
    - pdns::UniqueFilePtr
    - OCSP_cert_to_id
    - OCSP_BASICRESP_new
    - std::unique_ptr<ASN1_TIME, void(*)(ASN1_TIME*)>
    - c_str
    - std::unique_ptr<OCSP_CERTID, void(*)(OCSP_CERTID*)>
    - ASN1_i2d_bio
    - auto::get
    - std::runtime_error
    - OCSP_basic_add1_status
    - PEM_read_PrivateKey
    - EVP_sha256
    - PEM_read_X509_AUX
    - BIO_new_file
    - std::unique_ptr<OCSP_BASICRESP, void(*)(OCSP_BASICRESP*)>
    - auto::reset
    - OCSP_basic_sign
    - std::unique_ptr<EVP_PKEY, void(*)(EVP_PKEY*)>
    - X509_gmtime_adj
    linkageType: ''
    returnType: bool
    signature: bool libssl_generate_ocsp_response(const std::string& certFile, const
      std::string& caCert, const std::string& caKey, const std::string& outFile, int
      ndays, int nmin)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: SSL_CTX_get0_privatekey
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:534,1
    - Dst: std::unique_ptr<SSL, void(*)(SSL*)>
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:536,1
    - Dst: SSL_new
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:536,1
    - Dst: SSL_get_privatekey
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:540,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:540,1
    - Dst: EVP_PKEY_base_id
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:547,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - ' ctx'
    argTypes:
    - SSL_CTX
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 548
      start: 531
    functionDepth: 0
    functionLinenumber: 531
    functionLinenumberEnd: 548
    functionName: libssl_get_last_key_type
    functionSourceFile: /src/pdns/pdns/dnsdistdist/libssl.cc
    functionUses: 0
    functionsReached:
    - auto::get
    - SSL_new
    - std::unique_ptr<SSL, void(*)(SSL*)>
    - EVP_PKEY_base_id
    - SSL_get_privatekey
    - SSL_CTX_get0_privatekey
    linkageType: ''
    returnType: int
    signature: int libssl_get_last_key_type(SSL_CTX& ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sk_GENERAL_NAME_pop_free
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:553,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ptr
    argTypes:
    - STACK_OF*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 554
      start: 552
    functionDepth: 0
    functionLinenumber: 552
    functionLinenumberEnd: 554
    functionName: operator()(STACK_OF(GENERAL_NAME)* ptr) const noexcept
    functionSourceFile: /src/pdns/pdns/dnsdistdist/libssl.cc
    functionUses: 0
    functionsReached:
    - sk_GENERAL_NAME_pop_free
    linkageType: ''
    returnType: void
    signature: void operator()(STACK_OF(GENERAL_NAME)* ptr) const noexcept
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: std::unique_ptr<STACK_OF(GENERAL_NAME), StackOfNamesDeleter>
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:567,1
    - Dst: STACK_OF
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:567,1
    - Dst: static_cast<STACK_OF(GENERAL_NAME)*>
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:567,1
    - Dst: X509_get_ext_d2i
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:567,1
    - Dst: sk_GENERAL_NAME_num
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:569,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:569,1
    - Dst: sk_GENERAL_NAME_value
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:570,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:570,1
    - Dst: ASN1_STRING_to_UTF8
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:576,1
    - Dst: std::unordered_set::emplace
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:580,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:580,1
    - Dst: OPENSSL_free
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:581,1
    - Dst: X509_get_subject_name
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:585,1
    - Dst: X509_NAME_get_index_by_NID
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:588,1
    - Dst: X509_NAME_get_entry
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:589,1
    - Dst: X509_NAME_ENTRY_get_data
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:590,1
    - Dst: ASN1_STRING_to_UTF8
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:592,1
    - Dst: std::unordered_set::emplace
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:596,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:596,1
    - Dst: OPENSSL_free
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:597,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 23
    argCount: 1
    argNames:
    - certificate
    argTypes:
    - X509*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 602
      start: 564
    functionDepth: 0
    functionLinenumber: 564
    functionLinenumberEnd: 602
    functionName: get_names_from_certificate
    functionSourceFile: /src/pdns/pdns/dnsdistdist/libssl.cc
    functionUses: 1
    functionsReached:
    - sk_GENERAL_NAME_value
    - sk_GENERAL_NAME_num
    - ASN1_STRING_to_UTF8
    - auto::get
    - std::unordered_set::emplace
    - OPENSSL_free
    - X509_get_subject_name
    - X509_NAME_get_entry
    - std::unique_ptr<STACK_OF(GENERAL_NAME), StackOfNamesDeleter>
    - reinterpret_cast<const char*>
    - X509_NAME_get_index_by_NID
    - static_cast<STACK_OF(GENERAL_NAME)*>
    - STACK_OF
    - X509_get_ext_d2i
    - X509_NAME_ENTRY_get_data
    linkageType: ''
    returnType: std::unordered_set<std::string>
    signature: std::unordered_set<std::string> get_names_from_certificate(const X509*
      certificate)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SSL_CTX_get0_certificate
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:606,1
    - Dst: get_names_from_certificate
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:611,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ' ctx'
    argTypes:
    - SSL_CTX
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 612
      start: 604
    functionDepth: 0
    functionLinenumber: 604
    functionLinenumberEnd: 612
    functionName: get_names_from_last_certificate
    functionSourceFile: /src/pdns/pdns/dnsdistdist/libssl.cc
    functionUses: 0
    functionsReached:
    - SSL_CTX_get0_certificate
    - get_names_from_certificate
    linkageType: ''
    returnType: std::unordered_set<std::string>
    signature: std::unordered_set<std::string> get_names_from_last_certificate(const
      SSL_CTX& ctx)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:628,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 1
    argNames:
    - ' str'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 629
      start: 614
    functionDepth: 0
    functionLinenumber: 614
    functionLinenumberEnd: 629
    functionName: libssl_tls_version_from_string
    functionSourceFile: /src/pdns/pdns/dnsdistdist/libssl.cc
    functionUses: 0
    functionsReached:
    - std::runtime_error
    linkageType: ''
    returnType: LibsslTLSVersion
    signature: LibsslTLSVersion libssl_tls_version_from_string(const std::string&
      str)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::map::find
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:640,1
    - Dst: std::map::end
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:641,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:642,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:642,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - version
    argTypes:
    - LibsslTLSVersion
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 645
      start: 631
    functionDepth: 0
    functionLinenumber: 631
    functionLinenumberEnd: 645
    functionName: libssl_tls_version_to_string
    functionSourceFile: /src/pdns/pdns/dnsdistdist/libssl.cc
    functionUses: 2
    functionsReached:
    - std::map::find
    - std::map::end
    - std::to_string
    - std::runtime_error
    linkageType: ''
    returnType: std::string
    signature: std::string & libssl_tls_version_to_string(LibsslTLSVersion version)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: SSL_CTX_set_min_proto_version
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:674,1
    - Dst: SSL_CTX_get_options
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:696,1
    - Dst: SSL_CTX_set_options
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:697,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 39
    argCount: 2
    argNames:
    - ' ctx'
    - version
    argTypes:
    - SSL_CTX
    - LibsslTLSVersion
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 700
      start: 647
    functionDepth: 0
    functionLinenumber: 647
    functionLinenumberEnd: 700
    functionName: libssl_set_min_tls_version
    functionSourceFile: /src/pdns/pdns/dnsdistdist/libssl.cc
    functionUses: 1
    functionsReached:
    - SSL_CTX_set_options
    - SSL_CTX_get_options
    - SSL_CTX_set_min_proto_version
    linkageType: ''
    returnType: bool
    signature: bool libssl_set_min_tls_version(SSL_CTX& ctx, LibsslTLSVersion version)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: write_lock
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:704,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - capacity
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 705
      start: 702
    functionDepth: 0
    functionLinenumber: 702
    functionLinenumberEnd: 705
    functionName: OpenSSLTLSTicketKeysRing::OpenSSLTLSTicketKeysRing
    functionSourceFile: /src/pdns/pdns/dnsdistdist/libssl.cc
    functionUses: 0
    functionsReached:
    - write_lock
    linkageType: ''
    returnType: void
    signature: void OpenSSLTLSTicketKeysRing::OpenSSLTLSTicketKeysRing(size_t capacity)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 707
      start: 707
    functionDepth: 0
    functionLinenumber: 707
    functionLinenumberEnd: 707
    functionName: OpenSSLTLSTicketKeysRing::~OpenSSLTLSTicketKeysRing()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/libssl.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void OpenSSLTLSTicketKeysRing::~OpenSSLTLSTicketKeysRing()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: write_lock
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:711,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:711,1
    - Dst: TLSCtx::hasTicketsKeyAddedHook
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:712,1
    - Dst: read_lock
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:713,1
    - Dst: auto::content
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:714,1
    - Dst: TLSCtx::getTicketsKeyAddedHook
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:715,1
    - Dst: OPENSSL_cleanse
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:717,1
    - Dst: auto::data
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:717,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:717,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - ' newKey'
    argTypes:
    - std::shared_ptr<OpenSSLTLSTicketKey>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 719
      start: 709
    functionDepth: 0
    functionLinenumber: 709
    functionLinenumberEnd: 719
    functionName: OpenSSLTLSTicketKeysRing::addKey
    functionSourceFile: /src/pdns/pdns/dnsdistdist/libssl.cc
    functionUses: 3
    functionsReached:
    - std::move
    - TLSCtx::getTicketsKeyAddedHook
    - auto::content
    - read_lock
    - auto::data
    - TLSCtx::hasTicketsKeyAddedHook
    - write_lock
    - OPENSSL_cleanse
    - auto::size
    linkageType: ''
    returnType: void
    signature: void OpenSSLTLSTicketKeysRing::addKey(std::shared_ptr<OpenSSLTLSTicketKey>&&
      newKey)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: read_lock
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:723,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 724
      start: 721
    functionDepth: 0
    functionLinenumber: 721
    functionLinenumberEnd: 724
    functionName: OpenSSLTLSTicketKeysRing::getEncryptionKey
    functionSourceFile: /src/pdns/pdns/dnsdistdist/libssl.cc
    functionUses: 0
    functionsReached:
    - read_lock
    linkageType: ''
    returnType: std::shared_ptr<OpenSSLTLSTicketKey>
    signature: std::shared_ptr<OpenSSLTLSTicketKey> OpenSSLTLSTicketKeysRing::getEncryptionKey()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: read_lock
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:728,1
    - Dst: nameMatches
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:730,1
    - Dst: auto::front
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:731,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - name
    - ' activeKey'
    argTypes:
    - unsigned char[]
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 736
      start: 726
    functionDepth: 0
    functionLinenumber: 726
    functionLinenumberEnd: 736
    functionName: OpenSSLTLSTicketKeysRing::getDecryptionKey
    functionSourceFile: /src/pdns/pdns/dnsdistdist/libssl.cc
    functionUses: 0
    functionsReached:
    - nameMatches
    - read_lock
    - auto::front
    linkageType: ''
    returnType: std::shared_ptr<OpenSSLTLSTicketKey>
    signature: std::shared_ptr<OpenSSLTLSTicketKey> OpenSSLTLSTicketKeysRing::getDecryptionKey(unsigned
      char name[TLS_TICKETS_KEY_NAME_SIZE], bool& activeKey)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: read_lock
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:740,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 741
      start: 738
    functionDepth: 0
    functionLinenumber: 738
    functionLinenumberEnd: 741
    functionName: OpenSSLTLSTicketKeysRing::getKeysCount
    functionSourceFile: /src/pdns/pdns/dnsdistdist/libssl.cc
    functionUses: 0
    functionsReached:
    - read_lock
    linkageType: ''
    returnType: size_t
    signature: size_t OpenSSLTLSTicketKeysRing::getKeysCount()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<OpenSSLTLSTicketKey>
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:749,1
    - Dst: OpenSSLTLSTicketKeysRing::addKey
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:750,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:750,1
    - Dst: std::ifstream::fail
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:753,1
    - Dst: std::ifstream::close
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:762,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 1
    argNames:
    - ' keyFile'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 763
      start: 743
    functionDepth: 0
    functionLinenumber: 743
    functionLinenumberEnd: 763
    functionName: OpenSSLTLSTicketKeysRing::loadTicketsKeys
    functionSourceFile: /src/pdns/pdns/dnsdistdist/libssl.cc
    functionUses: 0
    functionsReached:
    - std::move
    - std::ifstream::close
    - std::make_shared<OpenSSLTLSTicketKey>
    - std::ifstream::fail
    - OpenSSLTLSTicketKeysRing::addKey
    linkageType: ''
    returnType: void
    signature: void OpenSSLTLSTicketKeysRing::loadTicketsKeys(const std::string& keyFile)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<OpenSSLTLSTicketKey>
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:769,1
    - Dst: OpenSSLTLSTicketKeysRing::addKey
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:770,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:770,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - ' key'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 779
      start: 765
    functionDepth: 0
    functionLinenumber: 765
    functionLinenumberEnd: 779
    functionName: OpenSSLTLSTicketKeysRing::loadTicketsKey
    functionSourceFile: /src/pdns/pdns/dnsdistdist/libssl.cc
    functionUses: 0
    functionsReached:
    - std::move
    - OpenSSLTLSTicketKeysRing::addKey
    - std::make_shared<OpenSSLTLSTicketKey>
    linkageType: ''
    returnType: void
    signature: void OpenSSLTLSTicketKeysRing::loadTicketsKey(const std::string& key)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<OpenSSLTLSTicketKey>
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:783,1
    - Dst: OpenSSLTLSTicketKeysRing::addKey
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:784,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:784,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 785
      start: 781
    functionDepth: 0
    functionLinenumber: 781
    functionLinenumberEnd: 785
    functionName: OpenSSLTLSTicketKeysRing::rotateTicketsKey
    functionSourceFile: /src/pdns/pdns/dnsdistdist/libssl.cc
    functionUses: 0
    functionsReached:
    - std::move
    - OpenSSLTLSTicketKeysRing::addKey
    - std::make_shared<OpenSSLTLSTicketKey>
    linkageType: ''
    returnType: void
    signature: void OpenSSLTLSTicketKeysRing::rotateTicketsKey(time_t /* now */)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: RAND_bytes
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:789,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:790,1
    - Dst: RAND_bytes
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:793,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:794,1
    - Dst: RAND_bytes
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:797,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:798,1
    - Dst: sodium_mlock
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:801,1
    - Dst: sodium_mlock
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:802,1
    - Dst: sodium_mlock
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:803,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 805
      start: 787
    functionDepth: 0
    functionLinenumber: 787
    functionLinenumberEnd: 805
    functionName: OpenSSLTLSTicketKey::OpenSSLTLSTicketKey
    functionSourceFile: /src/pdns/pdns/dnsdistdist/libssl.cc
    functionUses: 0
    functionsReached:
    - RAND_bytes
    - sodium_mlock
    - std::runtime_error
    linkageType: ''
    returnType: void
    signature: void OpenSSLTLSTicketKey::OpenSSLTLSTicketKey()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: read
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:809,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:809,1
    - Dst: read
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:810,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:810,1
    - Dst: read
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:811,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:811,1
    - Dst: fail
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:813,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:814,1
    - Dst: sodium_mlock
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:817,1
    - Dst: sodium_mlock
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:818,1
    - Dst: sodium_mlock
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:819,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - ' file'
    argTypes:
    - std::ifstream
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 821
      start: 807
    functionDepth: 0
    functionLinenumber: 807
    functionLinenumberEnd: 821
    functionName: OpenSSLTLSTicketKey::OpenSSLTLSTicketKey
    functionSourceFile: /src/pdns/pdns/dnsdistdist/libssl.cc
    functionUses: 0
    functionsReached:
    - reinterpret_cast<char*>
    - read
    - std::runtime_error
    - sodium_mlock
    - fail
    linkageType: ''
    returnType: void
    signature: void OpenSSLTLSTicketKey::OpenSSLTLSTicketKey(std::ifstream& file)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:825,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:826,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:829,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:829,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:831,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:831,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:833,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:833,1
    - Dst: sodium_mlock
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:836,1
    - Dst: sodium_mlock
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:837,1
    - Dst: sodium_mlock
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:838,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 1
    argNames:
    - ' key'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 840
      start: 823
    functionDepth: 0
    functionLinenumber: 823
    functionLinenumberEnd: 840
    functionName: OpenSSLTLSTicketKey::OpenSSLTLSTicketKey
    functionSourceFile: /src/pdns/pdns/dnsdistdist/libssl.cc
    functionUses: 0
    functionsReached:
    - memcpy
    - std::runtime_error
    - sodium_mlock
    - size
    - at
    linkageType: ''
    returnType: void
    signature: void OpenSSLTLSTicketKey::OpenSSLTLSTicketKey(const std::string& key)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sodium_munlock
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:845,1
    - Dst: sodium_munlock
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:846,1
    - Dst: sodium_munlock
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:847,1
    - Dst: OPENSSL_cleanse
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:849,1
    - Dst: OPENSSL_cleanse
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:850,1
    - Dst: OPENSSL_cleanse
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:851,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 853
      start: 842
    functionDepth: 0
    functionLinenumber: 842
    functionLinenumberEnd: 853
    functionName: OpenSSLTLSTicketKey::~OpenSSLTLSTicketKey()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/libssl.cc
    functionUses: 0
    functionsReached:
    - OPENSSL_cleanse
    - sodium_munlock
    linkageType: ''
    returnType: void
    signature: void OpenSSLTLSTicketKey::~OpenSSLTLSTicketKey()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:857,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - name
    argTypes:
    - unsigned char[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 858
      start: 855
    functionDepth: 0
    functionLinenumber: 855
    functionLinenumberEnd: 858
    functionName: OpenSSLTLSTicketKey::nameMatches
    functionSourceFile: /src/pdns/pdns/dnsdistdist/libssl.cc
    functionUses: 0
    functionsReached:
    - memcmp
    linkageType: ''
    returnType: bool
    signature: bool OpenSSLTLSTicketKey::nameMatches(const unsigned char name[TLS_TICKETS_KEY_NAME_SIZE])
      const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::string::reserve
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:863,1
    - Dst: std::string::append
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:865,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:865,1
    - Dst: std::string::append
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:866,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:866,1
    - Dst: std::string::append
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:867,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:867,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 871
      start: 860
    functionDepth: 0
    functionLinenumber: 860
    functionLinenumberEnd: 871
    functionName: OpenSSLTLSTicketKey::content
    functionSourceFile: /src/pdns/pdns/dnsdistdist/libssl.cc
    functionUses: 0
    functionsReached:
    - reinterpret_cast<const char*>
    - std::string::append
    - std::string::reserve
    linkageType: ''
    returnType: std::string
    signature: std::string OpenSSLTLSTicketKey::content() const
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:883,1
    - Dst: RAND_bytes
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:885,1
    - Dst: EVP_EncryptInit_ex
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:889,1
    - Dst: TLS_TICKETS_CIPHER_ALGO
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:889,1
    - Dst: ParamsBuilder
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:897,1
    - Dst: OSSL_PARAM_BLD_new
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:897,1
    - Dst: OSSL_PARAM_BLD_push_utf8_string
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:902,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:902,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:902,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:902,1
    - Dst: Params
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:906,1
    - Dst: OSSL_PARAM_BLD_to_param
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:906,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:906,1
    - Dst: EVP_MAC_CTX_set_params
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:911,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:911,1
    - Dst: EVP_MAC_init
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:915,1
    - Dst: HMAC_Init_ex
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:919,1
    - Dst: TLS_TICKETS_MAC_ALGO
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:919,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 27
    argCount: 4
    argNames:
    - keyName
    - iv
    - ectx
    - hctx
    argTypes:
    - unsigned char[]
    - unsigned char*
    - EVP_CIPHER_CTX*
    - HMAC_CTX*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 925
      start: 880
    functionDepth: 0
    functionLinenumber: 880
    functionLinenumberEnd: 925
    functionName: OpenSSLTLSTicketKey::encrypt
    functionSourceFile: /src/pdns/pdns/dnsdistdist/libssl.cc
    functionUses: 0
    functionsReached:
    - memcpy
    - OSSL_PARAM_BLD_new
    - RAND_bytes
    - auto::get
    - c_str
    - OSSL_PARAM_BLD_to_param
    - Params
    - EVP_MAC_init
    - TLS_TICKETS_MAC_ALGO
    - size
    - HMAC_Init_ex
    - EVP_EncryptInit_ex
    - TLS_TICKETS_CIPHER_ALGO
    - OSSL_PARAM_BLD_push_utf8_string
    - ParamsBuilder
    - EVP_MAC_CTX_set_params
    linkageType: ''
    returnType: int
    signature: int OpenSSLTLSTicketKey::encrypt(unsigned char keyName[TLS_TICKETS_KEY_NAME_SIZE],
      unsigned char* iv, EVP_CIPHER_CTX* ectx, HMAC_CTX* hctx) const
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: ParamsBuilder
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:937,1
    - Dst: OSSL_PARAM_BLD_new
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:937,1
    - Dst: OSSL_PARAM_BLD_push_utf8_string
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:942,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:942,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:942,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:942,1
    - Dst: Params
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:946,1
    - Dst: OSSL_PARAM_BLD_to_param
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:946,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:946,1
    - Dst: EVP_MAC_CTX_set_params
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:951,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:951,1
    - Dst: EVP_MAC_init
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:955,1
    - Dst: HMAC_Init_ex
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:959,1
    - Dst: TLS_TICKETS_MAC_ALGO
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:959,1
    - Dst: EVP_DecryptInit_ex
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:964,1
    - Dst: TLS_TICKETS_CIPHER_ALGO
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:964,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 23
    argCount: 3
    argNames:
    - iv
    - ectx
    - hctx
    argTypes:
    - unsigned char*
    - EVP_CIPHER_CTX*
    - HMAC_CTX*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 969
      start: 930
    functionDepth: 0
    functionLinenumber: 930
    functionLinenumberEnd: 969
    functionName: OpenSSLTLSTicketKey::decrypt
    functionSourceFile: /src/pdns/pdns/dnsdistdist/libssl.cc
    functionUses: 0
    functionsReached:
    - OSSL_PARAM_BLD_new
    - auto::get
    - OSSL_PARAM_BLD_to_param
    - Params
    - EVP_MAC_init
    - TLS_TICKETS_MAC_ALGO
    - size
    - EVP_DecryptInit_ex
    - TLS_TICKETS_CIPHER_ALGO
    - c_str
    - EVP_MAC_CTX_set_params
    - OSSL_PARAM_BLD_push_utf8_string
    - ParamsBuilder
    - HMAC_Init_ex
    linkageType: ''
    returnType: bool
    signature: bool OpenSSLTLSTicketKey::decrypt(const unsigned char* iv, EVP_CIPHER_CTX*
      ectx, HMAC_CTX* hctx) const
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: std::unique_ptr<SSL_CTX, decltype(&SSL_CTX_free)>
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:973,1
    - Dst: SSL_CTX_new
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:973,1
    - Dst: SSLv23_server_method
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:973,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:976,1
    - Dst: SSL_CTX_set_num_tickets
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:993,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:993,1
    - Dst: SSL_CTX_set_timeout
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:1004,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:1004,1
    - Dst: SSL_CTX_set_options
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:1026,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:1026,1
    - Dst: libssl_set_min_tls_version
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:1027,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:1028,1
    - Dst: libssl_tls_version_to_string
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:1028,1
    - Dst: SSL_CTX_set_ecdh_auto
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:1032,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:1032,1
    - Dst: SSL_CTX_set_session_cache_mode
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:1037,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:1037,1
    - Dst: SSL_CTX_set_session_cache_mode
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:1041,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:1041,1
    - Dst: SSL_CTX_sess_set_cache_size
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:1042,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:1042,1
    - Dst: push_back
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:1056,1
    - Dst: SSL_CTX_set_mode
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:1060,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:1060,1
    - Dst: SSL_CTX_set_tlsext_servername_callback
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:1065,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:1065,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 44
    argCount: 2
    argNames:
    - ' config'
    - ' warnings'
    argTypes:
    - TLSConfig
    - std::vector<std::string>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1068
      start: 971
    functionDepth: 0
    functionLinenumber: 971
    functionLinenumberEnd: 1068
    functionName: getNewServerContext
    functionSourceFile: /src/pdns/pdns/dnsdistdist/libssl.cc
    functionUses: 1
    functionsReached:
    - SSL_CTX_set_mode
    - SSL_CTX_set_tlsext_servername_callback
    - libssl_set_min_tls_version
    - auto::get
    - SSL_CTX_set_options
    - SSL_CTX_set_num_tickets
    - SSLv23_server_method
    - SSL_CTX_set_timeout
    - std::runtime_error
    - push_back
    - SSL_CTX_set_ecdh_auto
    - SSL_CTX_sess_set_cache_size
    - libssl_tls_version_to_string
    - std::unique_ptr<SSL_CTX, decltype(&SSL_CTX_free)>
    - SSL_CTX_new
    - SSL_CTX_set_session_cache_mode
    - Logging::Logger::error
    linkageType: ''
    returnType: std::unique_ptr<SSL_CTX, decltype(&SSL_CTX_free)>
    signature: std::unique_ptr<SSL_CTX, decltype(&SSL_CTX_free)> getNewServerContext(const
      TLSConfig& config, [[maybe_unused]] std::vector<std::string>& warnings)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: d_sniMap::emplace
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:1073,1
    - Dst: existingContextCallback
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:1076,1
    - Dst: d_sniMap::size
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:1078,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 4
    argNames:
    - ' serverContext'
    - newContext
    - ' names'
    - ' existingContextCallback'
    argTypes:
    - pdns::libssl::ServerContext
    - pdns::libssl::ServerContext::SharedContext
    - std::unordered_set<std::string>
    - std::function<void(pdns::libssl::ServerContext::SharedContext&)>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1082
      start: 1070
    functionDepth: 0
    functionLinenumber: 1070
    functionLinenumberEnd: 1082
    functionName: mergeNewCertificateAndKey
    functionSourceFile: /src/pdns/pdns/dnsdistdist/libssl.cc
    functionUses: 0
    functionsReached:
    - existingContextCallback
    - d_sniMap::emplace
    - d_sniMap::size
    linkageType: ''
    returnType: void
    signature: void mergeNewCertificateAndKey(pdns::libssl::ServerContext& serverContext,
      pdns::libssl::ServerContext::SharedContext newContext, std::unordered_set<std::string>&
      names, const std::function<void(pdns::libssl::ServerContext::SharedContext&)>&
      existingContextCallback)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: getNewServerContext
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:1163,1
    - Dst: libssl_setup_context_no_sni
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:1168,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:1168,1
    - Dst: d_ocspFiles::empty
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:1172,1
    - Dst: libssl_load_ocsp_responses
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:1174,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:1174,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:1177,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:1177,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:1177,1
    - Dst: d_ciphers::empty
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:1182,1
    - Dst: SSL_CTX_set_cipher_list
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:1182,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:1182,1
    - Dst: d_ciphers::c_str
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:1182,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:1183,1
    - Dst: d_ciphers13::empty
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:1187,1
    - Dst: SSL_CTX_set_ciphersuites
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:1187,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:1187,1
    - Dst: d_ciphers13::c_str
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:1187,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:1188,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:1192,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:1192,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 17
    argCount: 2
    argNames:
    - ' config'
    - ' ocspResponses'
    argTypes:
    - TLSConfig
    - std::map<int, std::string>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1193
      start: 1159
    functionDepth: 0
    functionLinenumber: 1159
    functionLinenumberEnd: 1193
    functionName: libssl_init_server_context_no_sni
    functionSourceFile: /src/pdns/pdns/dnsdistdist/libssl.cc
    functionUses: 0
    functionsReached:
    - std::move
    - d_ciphers::empty
    - auto::get
    - SSL_CTX_set_cipher_list
    - d_ciphers13::c_str
    - std::runtime_error
    - what
    - SSL_CTX_set_ciphersuites
    - getNewServerContext
    - d_ocspFiles::empty
    - std::string
    - libssl_load_ocsp_responses
    - libssl_setup_context_no_sni
    - d_ciphers13::empty
    - d_ciphers::c_str
    linkageType: ''
    returnType: std::pair<std::unique_ptr<SSL_CTX, decltype(&SSL_CTX_free)>, std::vector<std::string>>
    signature: "std::pair<std::unique_ptr<SSL_CTX, decltype(&SSL_CTX_free)>, std::vector<std::string>>
      libssl_init_server_context_no_sni(const TLSConfig& config,\n                                                                                                                         [[maybe_unused]]
      std::map<int, std::string>& ocspResponses)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: libssl_setup_context
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:1303,1
    - Dst: d_ocspFiles::empty
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:1307,1
    - Dst: libssl_load_ocsp_responses
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:1309,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:1309,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:1312,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:1312,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:1312,1
    - Dst: d_ciphers::empty
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:1319,1
    - Dst: SSL_CTX_set_cipher_list
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:1319,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:1319,1
    - Dst: d_ciphers::c_str
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:1319,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:1320,1
    - Dst: d_ciphers13::empty
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:1324,1
    - Dst: SSL_CTX_set_ciphersuites
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:1324,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:1324,1
    - Dst: d_ciphers13::c_str
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:1324,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:1325,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:1330,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:1330,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 18
    argCount: 1
    argNames:
    - ' config'
    argTypes:
    - TLSConfig
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1331
      start: 1295
    functionDepth: 0
    functionLinenumber: 1295
    functionLinenumberEnd: 1331
    functionName: libssl_init_server_context
    functionSourceFile: /src/pdns/pdns/dnsdistdist/libssl.cc
    functionUses: 2
    functionsReached:
    - std::move
    - d_ciphers::empty
    - SSL_CTX_set_cipher_list
    - libssl_setup_context
    - d_ciphers13::c_str
    - std::runtime_error
    - what
    - SSL_CTX_set_ciphersuites
    - get
    - d_ocspFiles::empty
    - std::string
    - libssl_load_ocsp_responses
    - d_ciphers13::empty
    - d_ciphers::c_str
    linkageType: ''
    returnType: std::pair<pdns::libssl::ServerContext, std::vector<std::string>>
    signature: std::pair<pdns::libssl::ServerContext, std::vector<std::string>> libssl_init_server_context(const
      TLSConfig& config)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: SSL_get_SSL_CTX
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:1336,1
    - Dst: reinterpret_cast<FILE*>
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:1342,1
    - Dst: SSL_CTX_get_ex_data
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:1342,1
    - Dst: fprintf
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:1347,1
    - Dst: fflush
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:1348,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - ssl
    - line
    argTypes:
    - SSL*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1349
      start: 1334
    functionDepth: 0
    functionLinenumber: 1334
    functionLinenumberEnd: 1349
    functionName: libssl_key_log_file_callback
    functionSourceFile: /src/pdns/pdns/dnsdistdist/libssl.cc
    functionUses: 0
    functionsReached:
    - fprintf
    - reinterpret_cast<FILE*>
    - SSL_CTX_get_ex_data
    - fflush
    - SSL_get_SSL_CTX
    linkageType: ''
    returnType: void
    signature: void libssl_key_log_file_callback(const SSL* ssl, const char* line)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pdns::openFileForWriting
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:1355,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:1358,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:1358,1
    - Dst: SSL_CTX_set_ex_data
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:1360,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:1360,1
    - Dst: SSL_CTX_set_keylog_callback
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:1361,1
    - Dst: pdns::UniqueFilePtr
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:1364,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - ctx
    - ' logFile'
    argTypes:
    - SSL_CTX*
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1366
      start: 1352
    functionDepth: 0
    functionLinenumber: 1352
    functionLinenumberEnd: 1366
    functionName: libssl_set_key_log_file
    functionSourceFile: /src/pdns/pdns/dnsdistdist/libssl.cc
    functionUses: 4
    functionsReached:
    - auto::get
    - std::runtime_error
    - stringerror
    - pdns::openFileForWriting
    - SSL_CTX_set_keylog_callback
    - SSL_CTX_set_ex_data
    - pdns::UniqueFilePtr
    linkageType: ''
    returnType: pdns::UniqueFilePtr
    signature: pdns::UniqueFilePtr libssl_set_key_log_file([[maybe_unused]] SSL_CTX*
      ctx, [[maybe_unused]] const std::string& logFile)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SSL_CTX_set_alpn_select_cb
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:1372,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ctx
    - arg
    argTypes:
    - SSL_CTX*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1374
      start: 1369
    functionDepth: 0
    functionLinenumber: 1369
    functionLinenumberEnd: 1374
    functionName: libssl_set_alpn_select_callback
    functionSourceFile: /src/pdns/pdns/dnsdistdist/libssl.cc
    functionUses: 2
    functionsReached:
    - SSL_CTX_set_alpn_select_cb
    linkageType: ''
    returnType: void
    signature: void libssl_set_alpn_select_callback([[maybe_unused]] SSL_CTX* ctx,
      [[maybe_unused]] int (*callback)(SSL* ssl, const unsigned char** out, unsigned
      char* outlen, const unsigned char* inPtr, unsigned int inlen, void* arg), [[maybe_unused]]
      void* arg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:1381,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:1381,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:1382,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:1384,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:1385,1
    - Dst: std::vector::insert
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:1386,1
    - Dst: std::vector::end
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:1386,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:1386,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:1386,1
    - Dst: SSL_CTX_set_alpn_protos
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:1388,1
    - Dst: std::vector::data
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:1388,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:1388,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - ctx
    - ' protos'
    argTypes:
    - SSL_CTX*
    - std::vector<std::vector<uint8_t>>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1392
      start: 1376
    functionDepth: 1
    functionLinenumber: 1376
    functionLinenumberEnd: 1392
    functionName: libssl_set_alpn_protos
    functionSourceFile: /src/pdns/pdns/dnsdistdist/libssl.cc
    functionUses: 2
    functionsReached:
    - std::vector::end
    - pdns::max
    - std::vector::push_back
    - std::vector::insert
    - SSL_CTX_set_alpn_protos
    - std::vector::size
    - std::runtime_error
    - end
    - size
    - begin
    - std::vector::data
    linkageType: ''
    returnType: bool
    signature: bool libssl_set_alpn_protos([[maybe_unused]] SSL_CTX* ctx, [[maybe_unused]]
      const std::vector<std::vector<uint8_t>>& protos)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: BIO_new
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:1397,1
    - Dst: BIO_s_mem
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:1397,1
    - Dst: ERR_print_errors
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:1398,1
    - Dst: BIO_get_mem_data
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:1400,1
    - Dst: std::string::empty
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:1403,1
    - Dst: std::string::back
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:1403,1
    - Dst: std::string::pop_back
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:1404,1
    - Dst: std::replace
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:1406,1
    - Dst: std::string::begin
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:1406,1
    - Dst: std::string::end
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:1406,1
    - Dst: BIO_free
      Src: /src/pdns/pdns/dnsdistdist/libssl.cc:1407,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1409
      start: 1395
    functionDepth: 0
    functionLinenumber: 1395
    functionLinenumberEnd: 1409
    functionName: libssl_get_error_string
    functionSourceFile: /src/pdns/pdns/dnsdistdist/libssl.cc
    functionUses: 6
    functionsReached:
    - std::string::back
    - std::string::begin
    - BIO_get_mem_data
    - ERR_print_errors
    - std::string::pop_back
    - std::string::end
    - std::string::empty
    - BIO_free
    - BIO_s_mem
    - std::replace
    - BIO_new
    linkageType: ''
    returnType: std::string
    signature: std::string libssl_get_error_string()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: boost::to_lower_copy
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions.cc:47,1
    - Dst: auto::erase
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions.cc:48,1
    - Dst: remove
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions.cc:48,1
    - Dst: auto::begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions.cc:48,1
    - Dst: auto::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions.cc:48,1
    - Dst: auto::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions.cc:48,1
    - Dst: std::unordered_map::find
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions.cc:49,1
    - Dst: std::unordered_map::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions.cc:50,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-actions.cc:53,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - ' str'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 26
    functionDepth: 0
    functionLinenumber: 26
    functionLinenumberEnd: 54
    functionName: DNSAction::typeFromString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions.cc
    functionUses: 0
    functionsReached:
    - std::unordered_map::find
    - std::runtime_error
    - boost::to_lower_copy
    - auto::begin
    - auto::end
    - auto::erase
    - std::unordered_map::end
    - remove
    linkageType: ''
    returnType: DNSAction::Action
    signature: DNSAction::Action DNSAction::typeFromString(const std::string& str)
  - BBCount: 17
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 35
    argCount: 1
    argNames:
    - action
    argTypes:
    - DNSAction::Action
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 56
    functionDepth: 0
    functionLinenumber: 56
    functionLinenumberEnd: 93
    functionName: DNSAction::typeToString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-actions.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string DNSAction::typeToString(DNSAction::Action action)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 56
    functionDepth: 0
    functionLinenumber: 56
    functionLinenumberEnd: 56
    functionName: DOH3Frontend
    functionSourceFile: /src/pdns/pdns/dnsdistdist/doh3.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void DOH3Frontend(const DOH3Frontend&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 57
    functionDepth: 0
    functionLinenumber: 57
    functionLinenumberEnd: 57
    functionName: DOH3Frontend
    functionSourceFile: /src/pdns/pdns/dnsdistdist/doh3.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void DOH3Frontend(DOH3Frontend&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 58
    functionDepth: 0
    functionLinenumber: 58
    functionLinenumberEnd: 58
    functionName: '& operator=(const DOH3Frontend&)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/doh3.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: DOH3Frontend
    signature: DOH3Frontend & operator=(const DOH3Frontend&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 59
    functionDepth: 0
    functionLinenumber: 59
    functionLinenumberEnd: 59
    functionName: '& operator=(DOH3Frontend&&)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/doh3.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: DOH3Frontend
    signature: DOH3Frontend & operator=(DOH3Frontend&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 64
    functionDepth: 0
    functionLinenumber: 64
    functionLinenumberEnd: 67
    functionName: '& getLogger()'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/doh3.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Logr::Logger
    signature: Logr::Logger & getLogger()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/doh3.hh:92,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 1
    argNames:
    - ' query_'
    argTypes:
    - PacketBuffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 91
    functionDepth: 0
    functionLinenumber: 91
    functionLinenumberEnd: 94
    functionName: DOH3Unit
    functionSourceFile: /src/pdns/pdns/dnsdistdist/doh3.hh
    functionUses: 3
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void DOH3Unit(PacketBuffer&& query_)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 96
    functionDepth: 0
    functionLinenumber: 96
    functionLinenumberEnd: 96
    functionName: DOH3Unit
    functionSourceFile: /src/pdns/pdns/dnsdistdist/doh3.hh
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void DOH3Unit(const DOH3Unit&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 97
    functionDepth: 0
    functionLinenumber: 97
    functionLinenumberEnd: 97
    functionName: '& operator=(const DOH3Unit&)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/doh3.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: DOH3Unit
    signature: DOH3Unit & operator=(const DOH3Unit&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 145
      start: 145
    functionDepth: 0
    functionLinenumber: 145
    functionLinenumberEnd: 145
    functionName: DOH3Frontend
    functionSourceFile: /src/pdns/pdns/dnsdistdist/doh3.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void DOH3Frontend()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 148
      start: 146
    functionDepth: 0
    functionLinenumber: 146
    functionLinenumberEnd: 148
    functionName: setup
    functionSourceFile: /src/pdns/pdns/dnsdistdist/doh3.hh
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setup()
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: setThreadName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:41,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:42,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:42,1
    - Dst: std::shared_ptr<DownstreamState>::getName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:42,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:42,1
    - Dst: getPollFdsForWorker
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:44,1
    - Dst: std::shared_ptr<DownstreamState>::isStopped
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:45,1
    - Dst: poll
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:46,1
    - Dst: auto::data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:46,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:46,1
    - Dst: dnsdist::configuration::refreshLocalRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:47,1
    - Dst: std::shared_ptr<XskWorker>::cleanSocketNotification
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:51,1
    - Dst: std::shared_ptr<XskWorker>::processIncomingFrames
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:52,1
    - Dst: getDataLen
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:53,1
    - Dst: std::shared_ptr<XskWorker>::markAsFree
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:54,1
    - Dst: getPayloadData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:57,1
    - Dst: std::shared_ptr<DownstreamState>::getState
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:59,1
    - Dst: auto::isXSK
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:61,1
    - Dst: std::shared_ptr<DownstreamState>::restoreState
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:62,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:62,1
    - Dst: std::shared_ptr<XskWorker>::markAsFree
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:67,1
    - Dst: clonePacketBuffer
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:70,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:71,1
    - Dst: getCapacity
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:71,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:73,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:73,1
    - Dst: auto::info
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:74,1
    - Dst: auto::xskPacketHeader::clear
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:75,1
    - Dst: processResponderPacket
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:77,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:77,1
    - Dst: std::shared_ptr<XskWorker>::markAsFree
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:78,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:79,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:79,1
    - Dst: auto::info
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:80,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:83,1
    - Dst: getCapacity
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:83,1
    - Dst: std::shared_ptr<XskWorker>::markAsFree
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:84,1
    - Dst: setHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:87,1
    - Dst: setPayload
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:88,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:89,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:89,1
    - Dst: auto::info
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:90,1
    - Dst: addDelay
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:93,1
    - Dst: updatePacket
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:95,1
    - Dst: std::shared_ptr<XskWorker>::pushToSendQueue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:96,1
    - Dst: std::shared_ptr<XskWorker>::notifyXskSocket
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:100,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:105,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:105,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:105,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:106,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:106,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:109,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:109,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:110,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:113,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:113,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:114,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 59
    argCount: 2
    argNames:
    - dss
    - xskInfo
    argTypes:
    - std::shared_ptr<DownstreamState>
    - std::shared_ptr<XskWorker>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 38
    functionDepth: 1
    functionLinenumber: 38
    functionLinenumberEnd: 116
    functionName: dnsdist::xsk::XskResponderThread
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc
    functionUses: 0
    functionsReached:
    - errlog
    - updatePacket
    - auto::isXSK
    - std::shared_ptr<DownstreamState>::isStopped
    - getCapacity
    - auto::size
    - setPayload
    - std::shared_ptr<XskWorker>::notifyXskSocket
    - SLOG
    - Logging::Loggable
    - processResponderPacket
    - getPollFdsForWorker
    - dnsdist::logging::getTopLogger
    - poll
    - setThreadName
    - std::shared_ptr<XskWorker>::processIncomingFrames
    - setHeader
    - getPayloadData
    - auto::info
    - std::shared_ptr<DownstreamState>::getName
    - VERBOSESLOG
    - auto::data
    - std::shared_ptr<DownstreamState>::getState
    - getDataLen
    - std::move
    - std::shared_ptr<XskWorker>::cleanSocketNotification
    - what
    - infolog
    - clonePacketBuffer
    - addDelay
    - std::shared_ptr<DownstreamState>::restoreState
    - std::shared_ptr<XskWorker>::pushToSendQueue
    - std::shared_ptr<XskWorker>::markAsFree
    - dnsdist::configuration::refreshLocalRuntimeConfiguration
    - auto::xskPacketHeader::clear
    linkageType: ''
    returnType: void
    signature: void XskResponderThread(std::shared_ptr<DownstreamState> dss, std::shared_ptr<XskWorker>
      xskInfo)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: getFromAddr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:120,1
    - Dst: expectProxyProtocolFrom
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:121,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:122,1
    - Dst: match
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:122,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:123,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:123,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:123,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:124,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:124,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 3
    argNames:
    - ' packet'
    - ' clientState'
    - ' expectProxyProtocol'
    argTypes:
    - XskPacket
    - ClientState
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 132
      start: 118
    functionDepth: 2
    functionLinenumber: 118
    functionLinenumberEnd: 132
    functionName: dnsdist::xsk::XskIsQueryAcceptable
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc
    functionUses: 0
    functionsReached:
    - expectProxyProtocolFrom
    - dnsdist::configuration::getCurrentRuntimeConfiguration
    - Logging::Loggable
    - getFromAddr
    - VERBOSESLOG
    - infolog
    - match
    - dnsdist::logging::getTopLogger
    - toStringWithPort
    linkageType: ''
    returnType: bool
    signature: bool XskIsQueryAcceptable(const XskPacket& packet, ClientState& clientState,
      bool& expectProxyProtocol)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: setThreadName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:136,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:137,1
    - Dst: std::shared_ptr<XskSocket>::getDescriptors
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:142,1
    - Dst: std::shared_ptr<XskSocket>::wait
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:148,1
    - Dst: dnsdist::configuration::refreshLocalRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:149,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:151,1
    - Dst: std::shared_ptr<XskSocket>::recv
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:152,1
    - Dst: getToAddr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:155,1
    - Dst: std::shared_ptr<XskSocket>::getWorkerByDestination
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:156,1
    - Dst: std::shared_ptr<XskSocket>::markAsFree
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:158,1
    - Dst: auto::pushToProcessingQueue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:161,1
    - Dst: std::set::insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:162,1
    - Dst: auto::workerWaker::getHandle
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:162,1
    - Dst: write
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:166,1
    - Dst: std::set::clear
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:173,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:176,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:177,1
    - Dst: std::shared_ptr<XskSocket>::getWorkerByDescriptor
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:179,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:179,1
    - Dst: processOutgoingFrames
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:180,1
    - Dst: getFlags
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:181,1
    - Dst: std::shared_ptr<XskSocket>::markAsFree
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:182,1
    - Dst: getFlags
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:185,1
    - Dst: std::shared_ptr<XskSocket>::pushDelayed
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:186,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:189,1
    - Dst: cleanWorkerNotification
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:191,1
    - Dst: std::shared_ptr<XskSocket>::pickUpReadyPacket
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:194,1
    - Dst: std::shared_ptr<XskSocket>::recycle
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:195,1
    - Dst: std::shared_ptr<XskSocket>::fillFq
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:196,1
    - Dst: std::shared_ptr<XskSocket>::send
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:197,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:200,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:200,1
    - Dst: auto::info
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:201,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 46
    argCount: 1
    argNames:
    - xsk
    argTypes:
    - std::shared_ptr<XskSocket>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 204
      start: 134
    functionDepth: 1
    functionLinenumber: 134
    functionLinenumberEnd: 204
    functionName: dnsdist::xsk::XskRouter
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc
    functionUses: 0
    functionsReached:
    - std::shared_ptr<XskSocket>::pickUpReadyPacket
    - std::shared_ptr<XskSocket>::markAsFree
    - cleanWorkerNotification
    - std::shared_ptr<XskSocket>::pushDelayed
    - auto::pushToProcessingQueue
    - std::shared_ptr<XskSocket>::getWorkerByDestination
    - size
    - auto::workerWaker::getHandle
    - std::set::insert
    - dnsdist::logging::getTopLogger
    - getFlags
    - std::shared_ptr<XskSocket>::recycle
    - std::shared_ptr<XskSocket>::getWorkerByDescriptor
    - setThreadName
    - at
    - getToAddr
    - std::shared_ptr<XskSocket>::recv
    - auto::info
    - std::shared_ptr<XskSocket>::wait
    - vector::push_back
    - std::shared_ptr<XskSocket>::send
    - VERBOSESLOG
    - write
    - processOutgoingFrames
    - std::shared_ptr<XskSocket>::fillFq
    - infolog
    - std::shared_ptr<XskSocket>::getDescriptors
    - std::set::clear
    - dnsdist::configuration::refreshLocalRuntimeConfiguration
    linkageType: ''
    returnType: void
    signature: void XskRouter(std::shared_ptr<XskSocket> xsk)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: setThreadName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:208,1
    - Dst: auto::hasIncomingFrames
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:212,1
    - Dst: auto::waitForXskSocket
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:213,1
    - Dst: dnsdist::configuration::refreshLocalRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:215,1
    - Dst: auto::processIncomingFrames
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:216,1
    - Dst: dnsdist::xsk::XskProcessQuery
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:217,1
    - Dst: updatePacket
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:218,1
    - Dst: auto::pushToSendQueue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:219,1
    - Dst: auto::markAsFree
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:222,1
    - Dst: auto::notifyXskSocket
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:225,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 1
    argNames:
    - clientState
    argTypes:
    - ClientState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 227
      start: 206
    functionDepth: 1
    functionLinenumber: 206
    functionLinenumberEnd: 227
    functionName: dnsdist::xsk::XskClientThread
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc
    functionUses: 0
    functionsReached:
    - auto::markAsFree
    - auto::pushToSendQueue
    - updatePacket
    - dnsdist::xsk::XskProcessQuery
    - auto::hasIncomingFrames
    - auto::waitForXskSocket
    - auto::processIncomingFrames
    - dnsdist::configuration::refreshLocalRuntimeConfiguration
    - setThreadName
    - auto::notifyXskSocket
    linkageType: ''
    returnType: void
    signature: void XskClientThread(ClientState* clientState)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - isV6
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 232
      start: 229
    functionDepth: 0
    functionLinenumber: 229
    functionLinenumberEnd: 232
    functionName: dnsdist::xsk::getDestinationMap
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string getDestinationMap(bool isV6)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::xsk::getDestinationMap
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:236,1
    - Dst: isIPv6
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:236,1
    - Dst: XskSocket::addDestinationAddress
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:237,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' addr'
    argTypes:
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 238
      start: 234
    functionDepth: 1
    functionLinenumber: 234
    functionLinenumberEnd: 238
    functionName: dnsdist::xsk::addDestinationAddress
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc
    functionUses: 1
    functionsReached:
    - XskSocket::addDestinationAddress
    - isIPv6
    - dnsdist::xsk::getDestinationMap
    linkageType: ''
    returnType: void
    signature: void addDestinationAddress(const ComboAddress& addr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::xsk::getDestinationMap
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:242,1
    - Dst: isIPv6
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:242,1
    - Dst: XskSocket::removeDestinationAddress
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:243,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' addr'
    argTypes:
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 244
      start: 240
    functionDepth: 1
    functionLinenumber: 240
    functionLinenumberEnd: 244
    functionName: dnsdist::xsk::removeDestinationAddress
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc
    functionUses: 1
    functionsReached:
    - XskSocket::removeDestinationAddress
    - isIPv6
    - dnsdist::xsk::getDestinationMap
    linkageType: ''
    returnType: void
    signature: void removeDestinationAddress(const ComboAddress& addr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::xsk::getDestinationMap
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:248,1
    - Dst: XskSocket::clearDestinationMap
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:249,1
    - Dst: dnsdist::xsk::getDestinationMap
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:250,1
    - Dst: XskSocket::clearDestinationMap
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:251,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 252
      start: 246
    functionDepth: 1
    functionLinenumber: 246
    functionLinenumberEnd: 252
    functionName: dnsdist::xsk::clearDestinationAddresses
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc
    functionUses: 0
    functionsReached:
    - XskSocket::clearDestinationMap
    - dnsdist::xsk::getDestinationMap
    linkageType: ''
    returnType: void
    signature: void clearDestinationAddresses()
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: setThreadName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:41,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:42,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:42,1
    - Dst: std::shared_ptr<DownstreamState>::getName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:42,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:42,1
    - Dst: getPollFdsForWorker
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:44,1
    - Dst: std::shared_ptr<DownstreamState>::isStopped
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:45,1
    - Dst: poll
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:46,1
    - Dst: auto::data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:46,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:46,1
    - Dst: dnsdist::configuration::refreshLocalRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:47,1
    - Dst: std::shared_ptr<XskWorker>::cleanSocketNotification
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:51,1
    - Dst: std::shared_ptr<XskWorker>::processIncomingFrames
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:52,1
    - Dst: getDataLen
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:53,1
    - Dst: std::shared_ptr<XskWorker>::markAsFree
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:54,1
    - Dst: getPayloadData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:57,1
    - Dst: std::shared_ptr<DownstreamState>::getState
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:59,1
    - Dst: auto::isXSK
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:61,1
    - Dst: std::shared_ptr<DownstreamState>::restoreState
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:62,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:62,1
    - Dst: std::shared_ptr<XskWorker>::markAsFree
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:67,1
    - Dst: clonePacketBuffer
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:70,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:71,1
    - Dst: getCapacity
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:71,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:73,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:73,1
    - Dst: auto::info
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:74,1
    - Dst: auto::xskPacketHeader::clear
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:75,1
    - Dst: processResponderPacket
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:77,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:77,1
    - Dst: std::shared_ptr<XskWorker>::markAsFree
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:78,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:79,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:79,1
    - Dst: auto::info
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:80,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:83,1
    - Dst: getCapacity
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:83,1
    - Dst: std::shared_ptr<XskWorker>::markAsFree
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:84,1
    - Dst: setHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:87,1
    - Dst: setPayload
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:88,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:89,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:89,1
    - Dst: auto::info
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:90,1
    - Dst: addDelay
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:93,1
    - Dst: updatePacket
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:95,1
    - Dst: std::shared_ptr<XskWorker>::pushToSendQueue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:96,1
    - Dst: std::shared_ptr<XskWorker>::notifyXskSocket
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:100,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:105,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:105,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:105,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:106,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:106,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:109,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:109,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:110,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:113,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:113,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:114,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 59
    argCount: 2
    argNames:
    - dss
    - xskInfo
    argTypes:
    - std::shared_ptr<DownstreamState>
    - std::shared_ptr<XskWorker>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 38
    functionDepth: 1
    functionLinenumber: 38
    functionLinenumberEnd: 116
    functionName: dnsdist::xsk::XskResponderThread
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc
    functionUses: 0
    functionsReached:
    - errlog
    - updatePacket
    - auto::isXSK
    - std::shared_ptr<DownstreamState>::isStopped
    - getCapacity
    - auto::size
    - setPayload
    - std::shared_ptr<XskWorker>::notifyXskSocket
    - SLOG
    - Logging::Loggable
    - processResponderPacket
    - getPollFdsForWorker
    - dnsdist::logging::getTopLogger
    - poll
    - setThreadName
    - std::shared_ptr<XskWorker>::processIncomingFrames
    - setHeader
    - getPayloadData
    - auto::info
    - std::shared_ptr<DownstreamState>::getName
    - VERBOSESLOG
    - auto::data
    - std::shared_ptr<DownstreamState>::getState
    - getDataLen
    - std::move
    - std::shared_ptr<XskWorker>::cleanSocketNotification
    - what
    - infolog
    - clonePacketBuffer
    - addDelay
    - std::shared_ptr<DownstreamState>::restoreState
    - std::shared_ptr<XskWorker>::pushToSendQueue
    - std::shared_ptr<XskWorker>::markAsFree
    - dnsdist::configuration::refreshLocalRuntimeConfiguration
    - auto::xskPacketHeader::clear
    linkageType: ''
    returnType: void
    signature: void XskResponderThread(std::shared_ptr<DownstreamState> dss, std::shared_ptr<XskWorker>
      xskInfo)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: getFromAddr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:120,1
    - Dst: expectProxyProtocolFrom
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:121,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:122,1
    - Dst: match
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:122,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:123,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:123,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:123,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:124,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:124,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 3
    argNames:
    - ' packet'
    - ' clientState'
    - ' expectProxyProtocol'
    argTypes:
    - XskPacket
    - ClientState
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 132
      start: 118
    functionDepth: 2
    functionLinenumber: 118
    functionLinenumberEnd: 132
    functionName: dnsdist::xsk::XskIsQueryAcceptable
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc
    functionUses: 0
    functionsReached:
    - expectProxyProtocolFrom
    - dnsdist::configuration::getCurrentRuntimeConfiguration
    - Logging::Loggable
    - getFromAddr
    - VERBOSESLOG
    - infolog
    - match
    - dnsdist::logging::getTopLogger
    - toStringWithPort
    linkageType: ''
    returnType: bool
    signature: bool XskIsQueryAcceptable(const XskPacket& packet, ClientState& clientState,
      bool& expectProxyProtocol)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: setThreadName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:136,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:137,1
    - Dst: std::shared_ptr<XskSocket>::getDescriptors
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:142,1
    - Dst: std::shared_ptr<XskSocket>::wait
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:148,1
    - Dst: dnsdist::configuration::refreshLocalRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:149,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:151,1
    - Dst: std::shared_ptr<XskSocket>::recv
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:152,1
    - Dst: getToAddr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:155,1
    - Dst: std::shared_ptr<XskSocket>::getWorkerByDestination
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:156,1
    - Dst: std::shared_ptr<XskSocket>::markAsFree
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:158,1
    - Dst: auto::pushToProcessingQueue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:161,1
    - Dst: std::set::insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:162,1
    - Dst: auto::workerWaker::getHandle
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:162,1
    - Dst: write
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:166,1
    - Dst: std::set::clear
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:173,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:176,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:177,1
    - Dst: std::shared_ptr<XskSocket>::getWorkerByDescriptor
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:179,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:179,1
    - Dst: processOutgoingFrames
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:180,1
    - Dst: getFlags
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:181,1
    - Dst: std::shared_ptr<XskSocket>::markAsFree
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:182,1
    - Dst: getFlags
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:185,1
    - Dst: std::shared_ptr<XskSocket>::pushDelayed
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:186,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:189,1
    - Dst: cleanWorkerNotification
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:191,1
    - Dst: std::shared_ptr<XskSocket>::pickUpReadyPacket
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:194,1
    - Dst: std::shared_ptr<XskSocket>::recycle
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:195,1
    - Dst: std::shared_ptr<XskSocket>::fillFq
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:196,1
    - Dst: std::shared_ptr<XskSocket>::send
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:197,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:200,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:200,1
    - Dst: auto::info
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:201,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 46
    argCount: 1
    argNames:
    - xsk
    argTypes:
    - std::shared_ptr<XskSocket>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 204
      start: 134
    functionDepth: 1
    functionLinenumber: 134
    functionLinenumberEnd: 204
    functionName: dnsdist::xsk::XskRouter
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc
    functionUses: 0
    functionsReached:
    - std::shared_ptr<XskSocket>::pickUpReadyPacket
    - std::shared_ptr<XskSocket>::markAsFree
    - cleanWorkerNotification
    - std::shared_ptr<XskSocket>::pushDelayed
    - auto::pushToProcessingQueue
    - std::shared_ptr<XskSocket>::getWorkerByDestination
    - size
    - auto::workerWaker::getHandle
    - std::set::insert
    - dnsdist::logging::getTopLogger
    - getFlags
    - std::shared_ptr<XskSocket>::recycle
    - std::shared_ptr<XskSocket>::getWorkerByDescriptor
    - setThreadName
    - at
    - getToAddr
    - std::shared_ptr<XskSocket>::recv
    - auto::info
    - std::shared_ptr<XskSocket>::wait
    - vector::push_back
    - std::shared_ptr<XskSocket>::send
    - VERBOSESLOG
    - write
    - processOutgoingFrames
    - std::shared_ptr<XskSocket>::fillFq
    - infolog
    - std::shared_ptr<XskSocket>::getDescriptors
    - std::set::clear
    - dnsdist::configuration::refreshLocalRuntimeConfiguration
    linkageType: ''
    returnType: void
    signature: void XskRouter(std::shared_ptr<XskSocket> xsk)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: setThreadName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:208,1
    - Dst: auto::hasIncomingFrames
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:212,1
    - Dst: auto::waitForXskSocket
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:213,1
    - Dst: dnsdist::configuration::refreshLocalRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:215,1
    - Dst: auto::processIncomingFrames
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:216,1
    - Dst: dnsdist::xsk::XskProcessQuery
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:217,1
    - Dst: updatePacket
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:218,1
    - Dst: auto::pushToSendQueue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:219,1
    - Dst: auto::markAsFree
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:222,1
    - Dst: auto::notifyXskSocket
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:225,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 1
    argNames:
    - clientState
    argTypes:
    - ClientState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 227
      start: 206
    functionDepth: 1
    functionLinenumber: 206
    functionLinenumberEnd: 227
    functionName: dnsdist::xsk::XskClientThread
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc
    functionUses: 0
    functionsReached:
    - auto::markAsFree
    - auto::pushToSendQueue
    - updatePacket
    - dnsdist::xsk::XskProcessQuery
    - auto::hasIncomingFrames
    - auto::waitForXskSocket
    - auto::processIncomingFrames
    - dnsdist::configuration::refreshLocalRuntimeConfiguration
    - setThreadName
    - auto::notifyXskSocket
    linkageType: ''
    returnType: void
    signature: void XskClientThread(ClientState* clientState)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - isV6
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 232
      start: 229
    functionDepth: 0
    functionLinenumber: 229
    functionLinenumberEnd: 232
    functionName: dnsdist::xsk::getDestinationMap
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string getDestinationMap(bool isV6)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::xsk::getDestinationMap
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:236,1
    - Dst: isIPv6
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:236,1
    - Dst: XskSocket::addDestinationAddress
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:237,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' addr'
    argTypes:
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 238
      start: 234
    functionDepth: 1
    functionLinenumber: 234
    functionLinenumberEnd: 238
    functionName: dnsdist::xsk::addDestinationAddress
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc
    functionUses: 1
    functionsReached:
    - XskSocket::addDestinationAddress
    - isIPv6
    - dnsdist::xsk::getDestinationMap
    linkageType: ''
    returnType: void
    signature: void addDestinationAddress(const ComboAddress& addr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::xsk::getDestinationMap
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:242,1
    - Dst: isIPv6
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:242,1
    - Dst: XskSocket::removeDestinationAddress
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:243,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' addr'
    argTypes:
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 244
      start: 240
    functionDepth: 1
    functionLinenumber: 240
    functionLinenumberEnd: 244
    functionName: dnsdist::xsk::removeDestinationAddress
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc
    functionUses: 1
    functionsReached:
    - XskSocket::removeDestinationAddress
    - isIPv6
    - dnsdist::xsk::getDestinationMap
    linkageType: ''
    returnType: void
    signature: void removeDestinationAddress(const ComboAddress& addr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::xsk::getDestinationMap
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:248,1
    - Dst: XskSocket::clearDestinationMap
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:249,1
    - Dst: dnsdist::xsk::getDestinationMap
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:250,1
    - Dst: XskSocket::clearDestinationMap
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc:251,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 252
      start: 246
    functionDepth: 1
    functionLinenumber: 246
    functionLinenumberEnd: 252
    functionName: dnsdist::xsk::clearDestinationAddresses
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc
    functionUses: 0
    functionsReached:
    - XskSocket::clearDestinationMap
    - dnsdist::xsk::getDestinationMap
    linkageType: ''
    returnType: void
    signature: void clearDestinationAddresses()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ConcurrentConnectionManager::setMaxConcurrentConnections
      Src: /src/pdns/pdns/dnsdistdist/connection-management.hh:31,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - max
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 32
      start: 29
    functionDepth: 0
    functionLinenumber: 29
    functionLinenumberEnd: 32
    functionName: ConcurrentConnectionManager::ConcurrentConnectionManager
    functionSourceFile: /src/pdns/pdns/dnsdistdist/connection-management.hh
    functionUses: 0
    functionsReached:
    - ConcurrentConnectionManager::setMaxConcurrentConnections
    linkageType: ''
    returnType: void
    signature: void ConcurrentConnectionManager(size_t max)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/connection-management.hh:36,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - max
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 34
    functionDepth: 0
    functionLinenumber: 34
    functionLinenumberEnd: 37
    functionName: ConcurrentConnectionManager::setMaxConcurrentConnections
    functionSourceFile: /src/pdns/pdns/dnsdistdist/connection-management.hh
    functionUses: 4
    functionsReached:
    - lock
    linkageType: ''
    returnType: void
    signature: void setMaxConcurrentConnections(size_t max)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/connection-management.hh:41,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 39
    functionDepth: 0
    functionLinenumber: 39
    functionLinenumberEnd: 42
    functionName: ConcurrentConnectionManager::getMaxConcurrentConnections
    functionSourceFile: /src/pdns/pdns/dnsdistdist/connection-management.hh
    functionUses: 1
    functionsReached:
    - lock
    linkageType: ''
    returnType: size_t
    signature: size_t getMaxConcurrentConnections()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/connection-management.hh:46,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 44
    functionDepth: 0
    functionLinenumber: 44
    functionLinenumberEnd: 52
    functionName: ConcurrentConnectionManager::registerConnection
    functionSourceFile: /src/pdns/pdns/dnsdistdist/connection-management.hh
    functionUses: 2
    functionsReached:
    - lock
    linkageType: ''
    returnType: bool
    signature: bool registerConnection()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/connection-management.hh:56,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 54
    functionDepth: 0
    functionLinenumber: 54
    functionLinenumberEnd: 57
    functionName: ConcurrentConnectionManager::releaseConnection
    functionSourceFile: /src/pdns/pdns/dnsdistdist/connection-management.hh
    functionUses: 2
    functionsReached:
    - lock
    linkageType: ''
    returnType: void
    signature: void releaseConnection()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:59,1
    - Dst: registerConnection
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:61,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:62,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 4
    argCount: 2
    argNames:
    - ' client'
    - ' fileDesc'
    argTypes:
    - ComboAddress
    - FDWrapper
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 58
    functionDepth: 0
    functionLinenumber: 58
    functionLinenumberEnd: 64
    functionName: ConsoleConnection::ConsoleConnection
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc
    functionUses: 0
    functionsReached:
    - std::move
    - registerConnection
    - std::runtime_error
    linkageType: ''
    returnType: void
    signature: void ConsoleConnection(const ComboAddress& client, FDWrapper&& fileDesc)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:66,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - ConsoleConnection
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 65
    functionDepth: 0
    functionLinenumber: 65
    functionLinenumberEnd: 68
    functionName: ConsoleConnection::ConsoleConnection
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void ConsoleConnection(ConsoleConnection&& rhs) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 70
    functionDepth: 0
    functionLinenumber: 70
    functionLinenumberEnd: 70
    functionName: ConsoleConnection::ConsoleConnection
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ConsoleConnection(const ConsoleConnection&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 71
    functionDepth: 0
    functionLinenumber: 71
    functionLinenumberEnd: 71
    functionName: '& operator=(const ConsoleConnection&)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: ConsoleConnection
    signature: ConsoleConnection & operator=(const ConsoleConnection&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 72
    functionDepth: 0
    functionLinenumber: 72
    functionLinenumberEnd: 72
    functionName: '& operator=(ConsoleConnection&&)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: ConsoleConnection
    signature: ConsoleConnection & operator=(ConsoleConnection&&)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: getHandle
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:76,1
    - Dst: releaseConnection
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:77,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 74
    functionDepth: 0
    functionLinenumber: 74
    functionLinenumberEnd: 79
    functionName: ~ConsoleConnection()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc
    functionUses: 0
    functionsReached:
    - getHandle
    - releaseConnection
    linkageType: ''
    returnType: void
    signature: void ~ConsoleConnection()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getHandle
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:83,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 81
    functionDepth: 0
    functionLinenumber: 81
    functionLinenumberEnd: 84
    functionName: ConsoleConnection::getFD
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc
    functionUses: 0
    functionsReached:
    - getHandle
    linkageType: ''
    returnType: int
    signature: int getFD() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 86
    functionDepth: 0
    functionLinenumber: 86
    functionLinenumberEnd: 89
    functionName: '& getClient() const'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: ComboAddress
    signature: ComboAddress & getClient() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:98,1
    - Dst: gettimeofday
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:102,1
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:103,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - ' line'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 104
      start: 96
    functionDepth: 0
    functionLinenumber: 96
    functionLinenumberEnd: 104
    functionName: feedConfigDelta
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc
    functionUses: 0
    functionsReached:
    - empty
    - gettimeofday
    - lock
    linkageType: ''
    returnType: void
    signature: void feedConfigDelta(const std::string& line)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:110,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 111
      start: 108
    functionDepth: 0
    functionLinenumber: 108
    functionLinenumberEnd: 111
    functionName: dnsdist::console::getConfigurationDelta
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc
    functionUses: 0
    functionsReached:
    - lock
    linkageType: ''
    returnType: std::vector<std::pair<timeval, std::string>>
    signature: std::vector<std::pair<timeval, std::string>> & getConfigurationDelta()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:110,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 111
      start: 108
    functionDepth: 0
    functionLinenumber: 108
    functionLinenumberEnd: 111
    functionName: dnsdist::console::getConfigurationDelta
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc
    functionUses: 0
    functionsReached:
    - lock
    linkageType: ''
    returnType: std::vector<std::pair<timeval, std::string>>
    signature: std::vector<std::pair<timeval, std::string>> & getConfigurationDelta()
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: getpwuid_r
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:122,1
    - Dst: geteuid
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:122,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:122,1
    - Dst: std::array::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:122,1
    - Dst: getenv
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:125,1
    - Dst: string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:127,1
    - Dst: string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:130,1
    - Dst: string::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:132,1
    - Dst: string::append
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:135,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 137
      start: 115
    functionDepth: 0
    functionLinenumber: 115
    functionLinenumberEnd: 137
    functionName: historyFile
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc
    functionUses: 0
    functionsReached:
    - getenv
    - geteuid
    - string::empty
    - string::append
    - string
    - getpwuid_r
    - std::array::data
    - std::array::size
    linkageType: ''
    returnType: string
    signature: string historyFile(const bool& ignoreHOME = false)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: readn2
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:151,1
    - Dst: ntohl
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:157,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:158,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 2
    argNames:
    - fileDesc
    - len
    argTypes:
    - int
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 167
      start: 147
    functionDepth: 1
    functionLinenumber: 147
    functionLinenumberEnd: 167
    functionName: getMsgLen32
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc
    functionUses: 0
    functionsReached:
    - ntohl
    - readn2
    - dnsdist::configuration::getCurrentRuntimeConfiguration
    linkageType: ''
    returnType: ConsoleCommandResult
    signature: ConsoleCommandResult getMsgLen32(int fileDesc, uint32_t* len)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: htonl
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:172,1
    - Dst: writen2
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:173,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - fileDesc
    - len
    argTypes:
    - int
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 179
      start: 169
    functionDepth: 0
    functionLinenumber: 169
    functionLinenumberEnd: 179
    functionName: putMsgLen32
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc
    functionUses: 0
    functionsReached:
    - writen2
    - htonl
    linkageType: ''
    returnType: bool
    signature: bool putMsgLen32(int fileDesc, uint32_t len)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:183,1
    - Dst: dnsdist::crypto::authenticated::encryptSym
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:184,1
    - Dst: string::length
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:185,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:186,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:187,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:187,1
    - Dst: putMsgLen32
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:191,1
    - Dst: static_cast<uint32_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:191,1
    - Dst: string::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:193,1
    - Dst: writen2
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:194,1
    - Dst: getMsgLen32
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:198,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:204,1
    - Dst: string::clear
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:216,1
    - Dst: string::resize
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:217,1
    - Dst: readn2
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:218,1
    - Dst: string::data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:218,1
    - Dst: dnsdist::crypto::authenticated::decryptSym
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:219,1
    - Dst: flush
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:221,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 30
    argCount: 5
    argNames:
    - fileDesc
    - ' line'
    - ' readingNonce'
    - ' writingNonce'
    - outputEmptyLine
    argTypes:
    - int
    - std::string
    - dnsdist::crypto::authenticated::Nonce
    - dnsdist::crypto::authenticated::Nonce
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 224
      start: 181
    functionDepth: 2
    functionLinenumber: 181
    functionLinenumberEnd: 224
    functionName: sendMessageToServer
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc
    functionUses: 0
    functionsReached:
    - string::data
    - pdns::max
    - string::resize
    - flush
    - dnsdist::configuration::getCurrentRuntimeConfiguration
    - std::to_string
    - string::empty
    - writen2
    - dnsdist::crypto::authenticated::encryptSym
    - static_cast<uint32_t>
    - putMsgLen32
    - readn2
    - string::length
    - dnsdist::crypto::authenticated::decryptSym
    - getMsgLen32
    - string::clear
    linkageType: ''
    returnType: ConsoleCommandResult
    signature: ConsoleCommandResult sendMessageToServer(int fileDesc, const std::string&
      line, dnsdist::crypto::authenticated::Nonce& readingNonce, dnsdist::crypto::authenticated::Nonce&
      writingNonce, const bool outputEmptyLine)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:231,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:233,1
    - Dst: dnsdist::crypto::authenticated::isValidKey
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:234,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:239,1
    - Dst: auto::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:240,1
    - Dst: FDWrapper
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:243,1
    - Dst: socket
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:243,1
    - Dst: auto::getHandle
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:244,1
    - Dst: auto::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:245,1
    - Dst: SConnect
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:248,1
    - Dst: auto::getHandle
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:248,1
    - Dst: setTCPNoDelay
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:249,1
    - Dst: auto::getHandle
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:249,1
    - Dst: dnsdist::crypto::authenticated::Nonce::init
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:254,1
    - Dst: writen2
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:256,1
    - Dst: auto::getHandle
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:256,1
    - Dst: dnsdist::crypto::authenticated::Nonce::value::data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:256,1
    - Dst: dnsdist::crypto::authenticated::Nonce::value::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:256,1
    - Dst: readn2
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:257,1
    - Dst: auto::getHandle
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:257,1
    - Dst: dnsdist::crypto::authenticated::Nonce::value::data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:257,1
    - Dst: dnsdist::crypto::authenticated::Nonce::value::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:257,1
    - Dst: dnsdist::crypto::authenticated::Nonce::merge
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:258,1
    - Dst: dnsdist::crypto::authenticated::Nonce::merge
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:259,1
    - Dst: sendMessageToServer
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:264,1
    - Dst: auto::getHandle
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:264,1
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:273,1
    - Dst: sendMessageToServer
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:274,1
    - Dst: auto::getHandle
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:274,1
    - Dst: historyFile
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:279,1
    - Dst: getline
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:283,1
    - Dst: add_history
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:284,1
    - Dst: string::c_str
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:284,1
    - Dst: readline
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:290,1
    - Dst: rl_bind_key
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:291,1
    - Dst: string::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:297,1
    - Dst: add_history
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:298,1
    - Dst: ofstream::flush
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:300,1
    - Dst: free
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:304,1
    - Dst: string::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:314,1
    - Dst: sendMessageToServer
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:318,1
    - Dst: auto::getHandle
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:318,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:324,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:324,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:325,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 61
    argCount: 1
    argNames:
    - ' command'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 327
      start: 228
    functionDepth: 3
    functionLinenumber: 228
    functionLinenumberEnd: 327
    functionName: dnsdist::console::doClient
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc
    functionUses: 0
    functionsReached:
    - dnsdist::crypto::authenticated::Nonce::value::size
    - errlog
    - writen2
    - historyFile
    - add_history
    - getline
    - dnsdist::crypto::authenticated::isValidKey
    - auto::toStringWithPort
    - SLOG
    - auto::getHandle
    - string::empty
    - free
    - dnsdist::crypto::authenticated::Nonce::value::data
    - dnsdist::logging::getTopLogger
    - empty
    - ofstream::flush
    - string::c_str
    - dnsdist::configuration::getCurrentRuntimeConfiguration
    - rl_bind_key
    - FDWrapper
    - sendMessageToServer
    - socket
    - setTCPNoDelay
    - readline
    - dnsdist::crypto::authenticated::Nonce::init
    - dnsdist::crypto::authenticated::Nonce::merge
    - SConnect
    - readn2
    linkageType: ''
    returnType: void
    signature: void doClient(const std::string& command)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: readline
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:332,1
    - Dst: rl_bind_key
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:333,1
    - Dst: string::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:339,1
    - Dst: add_history
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:340,1
    - Dst: flush
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:342,1
    - Dst: free
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:347,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 2
    argNames:
    - ' history'
    - ' lastline'
    argTypes:
    - ofstream
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 350
      start: 330
    functionDepth: 0
    functionLinenumber: 330
    functionLinenumberEnd: 350
    functionName: dnsdist::console::getNextConsoleLine
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc
    functionUses: 0
    functionsReached:
    - add_history
    - string::empty
    - free
    - rl_bind_key
    - readline
    - flush
    linkageType: ''
    returnType: std::optional<std::string>
    signature: std::optional<std::string> getNextConsoleLine(ofstream& history, std::string&
      lastline)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::getline
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:355,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 359
      start: 352
    functionDepth: 0
    functionLinenumber: 352
    functionLinenumberEnd: 359
    functionName: dnsdist::console::getNextConsoleLine
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc
    functionUses: 0
    functionsReached:
    - std::getline
    linkageType: ''
    returnType: std::optional<std::string>
    signature: std::optional<std::string> getNextConsoleLine()
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: historyFile
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:365,1
    - Dst: getline
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:369,1
    - Dst: add_history
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:370,1
    - Dst: string::c_str
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:370,1
    - Dst: dnsdist::console::getNextConsoleLine
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:379,1
    - Dst: dnsdist::console::getNextConsoleLine
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:381,1
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:399,1
    - Dst: clear
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:400,1
    - Dst: resetLuaSideEffect
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:401,1
    - Dst: boost::get<shared_ptr<DownstreamState>>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:410,1
    - Dst: getName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:412,1
    - Dst: boost::get<ClientState*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:415,1
    - Dst: local::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:417,1
    - Dst: boost::get<string>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:420,1
    - Dst: boost::get<std::unordered_map<string, double>>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:423,1
    - Dst: Json::dump
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:430,1
    - Dst: getLuaNoSideEffect
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:437,1
    - Dst: feedConfigDelta
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:438,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:451,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:451,1
    - Dst: strcmp
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:455,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:455,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:459,1
    - Dst: std::rethrow_if_nested
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:463,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:469,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:477,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 75
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 480
      start: 362
    functionDepth: 1
    functionLinenumber: 362
    functionLinenumberEnd: 480
    functionName: dnsdist::console::doConsole
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc
    functionUses: 0
    functionsReached:
    - add_history
    - historyFile
    - dnsdist::console::getNextConsoleLine
    - getline
    - std::string
    - Json::dump
    - resetLuaSideEffect
    - boost::get<string>
    - getName
    - lock
    - local::toStringWithPort
    - boost::get<std::unordered_map<string, double>>
    - clear
    - std::rethrow_if_nested
    - string::c_str
    - boost::get<ClientState*>
    - boost::get<shared_ptr<DownstreamState>>
    - what
    - strcmp
    - feedConfigDelta
    - getLuaNoSideEffect
    linkageType: ''
    returnType: void
    signature: void doConsole()
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:231,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:233,1
    - Dst: dnsdist::crypto::authenticated::isValidKey
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:234,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:239,1
    - Dst: auto::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:240,1
    - Dst: FDWrapper
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:243,1
    - Dst: socket
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:243,1
    - Dst: auto::getHandle
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:244,1
    - Dst: auto::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:245,1
    - Dst: SConnect
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:248,1
    - Dst: auto::getHandle
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:248,1
    - Dst: setTCPNoDelay
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:249,1
    - Dst: auto::getHandle
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:249,1
    - Dst: dnsdist::crypto::authenticated::Nonce::init
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:254,1
    - Dst: writen2
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:256,1
    - Dst: auto::getHandle
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:256,1
    - Dst: dnsdist::crypto::authenticated::Nonce::value::data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:256,1
    - Dst: dnsdist::crypto::authenticated::Nonce::value::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:256,1
    - Dst: readn2
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:257,1
    - Dst: auto::getHandle
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:257,1
    - Dst: dnsdist::crypto::authenticated::Nonce::value::data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:257,1
    - Dst: dnsdist::crypto::authenticated::Nonce::value::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:257,1
    - Dst: dnsdist::crypto::authenticated::Nonce::merge
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:258,1
    - Dst: dnsdist::crypto::authenticated::Nonce::merge
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:259,1
    - Dst: sendMessageToServer
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:264,1
    - Dst: auto::getHandle
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:264,1
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:273,1
    - Dst: sendMessageToServer
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:274,1
    - Dst: auto::getHandle
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:274,1
    - Dst: historyFile
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:279,1
    - Dst: getline
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:283,1
    - Dst: add_history
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:284,1
    - Dst: string::c_str
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:284,1
    - Dst: readline
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:290,1
    - Dst: rl_bind_key
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:291,1
    - Dst: string::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:297,1
    - Dst: add_history
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:298,1
    - Dst: ofstream::flush
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:300,1
    - Dst: free
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:304,1
    - Dst: string::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:314,1
    - Dst: sendMessageToServer
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:318,1
    - Dst: auto::getHandle
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:318,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:324,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:324,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:325,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 61
    argCount: 1
    argNames:
    - ' command'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 327
      start: 228
    functionDepth: 3
    functionLinenumber: 228
    functionLinenumberEnd: 327
    functionName: dnsdist::console::doClient
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc
    functionUses: 0
    functionsReached:
    - dnsdist::crypto::authenticated::Nonce::value::size
    - errlog
    - writen2
    - historyFile
    - add_history
    - getline
    - dnsdist::crypto::authenticated::isValidKey
    - auto::toStringWithPort
    - SLOG
    - auto::getHandle
    - string::empty
    - free
    - dnsdist::crypto::authenticated::Nonce::value::data
    - dnsdist::logging::getTopLogger
    - empty
    - ofstream::flush
    - string::c_str
    - dnsdist::configuration::getCurrentRuntimeConfiguration
    - rl_bind_key
    - FDWrapper
    - sendMessageToServer
    - socket
    - setTCPNoDelay
    - readline
    - dnsdist::crypto::authenticated::Nonce::init
    - dnsdist::crypto::authenticated::Nonce::merge
    - SConnect
    - readn2
    linkageType: ''
    returnType: void
    signature: void doClient(const std::string& command)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: readline
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:332,1
    - Dst: rl_bind_key
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:333,1
    - Dst: string::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:339,1
    - Dst: add_history
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:340,1
    - Dst: flush
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:342,1
    - Dst: free
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:347,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 2
    argNames:
    - ' history'
    - ' lastline'
    argTypes:
    - ofstream
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 350
      start: 330
    functionDepth: 0
    functionLinenumber: 330
    functionLinenumberEnd: 350
    functionName: dnsdist::console::getNextConsoleLine
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc
    functionUses: 1
    functionsReached:
    - add_history
    - string::empty
    - free
    - rl_bind_key
    - readline
    - flush
    linkageType: ''
    returnType: std::optional<std::string>
    signature: std::optional<std::string> getNextConsoleLine(ofstream& history, std::string&
      lastline)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::getline
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:355,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 359
      start: 352
    functionDepth: 0
    functionLinenumber: 352
    functionLinenumberEnd: 359
    functionName: dnsdist::console::getNextConsoleLine
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc
    functionUses: 1
    functionsReached:
    - std::getline
    linkageType: ''
    returnType: std::optional<std::string>
    signature: std::optional<std::string> getNextConsoleLine()
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: historyFile
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:365,1
    - Dst: getline
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:369,1
    - Dst: add_history
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:370,1
    - Dst: string::c_str
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:370,1
    - Dst: dnsdist::console::getNextConsoleLine
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:379,1
    - Dst: dnsdist::console::getNextConsoleLine
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:381,1
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:399,1
    - Dst: clear
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:400,1
    - Dst: resetLuaSideEffect
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:401,1
    - Dst: boost::get<shared_ptr<DownstreamState>>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:410,1
    - Dst: getName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:412,1
    - Dst: boost::get<ClientState*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:415,1
    - Dst: local::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:417,1
    - Dst: boost::get<string>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:420,1
    - Dst: boost::get<std::unordered_map<string, double>>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:423,1
    - Dst: Json::dump
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:430,1
    - Dst: getLuaNoSideEffect
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:437,1
    - Dst: feedConfigDelta
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:438,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:451,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:451,1
    - Dst: strcmp
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:455,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:455,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:459,1
    - Dst: std::rethrow_if_nested
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:463,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:469,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:477,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 75
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 480
      start: 362
    functionDepth: 1
    functionLinenumber: 362
    functionLinenumberEnd: 480
    functionName: dnsdist::console::doConsole
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc
    functionUses: 0
    functionsReached:
    - add_history
    - historyFile
    - dnsdist::console::getNextConsoleLine
    - getline
    - std::string
    - Json::dump
    - resetLuaSideEffect
    - boost::get<string>
    - getName
    - lock
    - local::toStringWithPort
    - boost::get<std::unordered_map<string, double>>
    - clear
    - std::rethrow_if_nested
    - string::c_str
    - boost::get<ClientState*>
    - boost::get<shared_ptr<DownstreamState>>
    - what
    - strcmp
    - feedConfigDelta
    - getLuaNoSideEffect
    linkageType: ''
    returnType: void
    signature: void doConsole()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: clear_history
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:488,1
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:490,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 491
      start: 485
    functionDepth: 0
    functionLinenumber: 485
    functionLinenumberEnd: 491
    functionName: dnsdist::console::clearHistory
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc
    functionUses: 0
    functionsReached:
    - clear_history
    - lock
    linkageType: ''
    returnType: void
    signature: void clearHistory()
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: setThreadName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:496,1
    - Dst: setTCPNoDelay
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:498,1
    - Dst: getFD
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:498,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:501,1
    - Dst: dnsdist::crypto::authenticated::Nonce::init
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:506,1
    - Dst: readn2
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:507,1
    - Dst: getFD
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:507,1
    - Dst: dnsdist::crypto::authenticated::Nonce::value::data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:507,1
    - Dst: dnsdist::crypto::authenticated::Nonce::value::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:507,1
    - Dst: writen2
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:508,1
    - Dst: getFD
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:508,1
    - Dst: dnsdist::crypto::authenticated::Nonce::value::data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:508,1
    - Dst: dnsdist::crypto::authenticated::Nonce::value::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:508,1
    - Dst: dnsdist::crypto::authenticated::Nonce::merge
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:509,1
    - Dst: dnsdist::crypto::authenticated::Nonce::merge
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:510,1
    - Dst: getMsgLen32
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:514,1
    - Dst: getFD
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:514,1
    - Dst: putMsgLen32
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:521,1
    - Dst: getFD
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:521,1
    - Dst: std::string::resize
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:527,1
    - Dst: readn2
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:528,1
    - Dst: getFD
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:528,1
    - Dst: std::string::data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:528,1
    - Dst: dnsdist::crypto::authenticated::decryptSym
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:530,1
    - Dst: dnsdist::configuration::refreshLocalRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:532,1
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:539,1
    - Dst: clear
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:541,1
    - Dst: resetLuaSideEffect
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:542,1
    - Dst: boost::get<shared_ptr<DownstreamState>>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:552,1
    - Dst: getName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:554,1
    - Dst: boost::get<ClientState*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:560,1
    - Dst: local::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:562,1
    - Dst: boost::get<string>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:568,1
    - Dst: boost::get<std::unordered_map<string, double>>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:571,1
    - Dst: Json::dump
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:578,1
    - Dst: getLuaNoSideEffect
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:584,1
    - Dst: feedConfigDelta
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:585,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:598,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:598,1
    - Dst: strcmp
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:602,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:602,1
    - Dst: string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:606,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:606,1
    - Dst: std::rethrow_if_nested
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:610,1
    - Dst: string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:614,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:614,1
    - Dst: string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:618,1
    - Dst: string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:622,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:622,1
    - Dst: dnsdist::crypto::authenticated::encryptSym
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:624,1
    - Dst: putMsgLen32
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:625,1
    - Dst: getFD
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:625,1
    - Dst: string::length
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:625,1
    - Dst: writen2
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:626,1
    - Dst: getFD
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:626,1
    - Dst: string::c_str
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:626,1
    - Dst: string::length
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:626,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:628,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:629,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:629,1
    - Dst: getClient
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:629,1
    - Dst: std::shared_ptr<Logr::Logger>::info
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:630,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:634,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:634,1
    - Dst: getClient
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:634,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:634,1
    - Dst: std::shared_ptr<Logr::Logger>::error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:635,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:635,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 93
    argCount: 2
    argNames:
    - ' conn'
    - logger
    argTypes:
    - ConsoleConnection
    - std::shared_ptr<Logr::Logger>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 637
      start: 493
    functionDepth: 2
    functionLinenumber: 493
    functionLinenumberEnd: 637
    functionName: dnsdist::console::controlClientThread
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc
    functionUses: 0
    functionsReached:
    - dnsdist::crypto::authenticated::Nonce::value::size
    - getFD
    - writen2
    - std::string
    - Json::dump
    - resetLuaSideEffect
    - SLOG
    - boost::get<string>
    - getName
    - string
    - dnsdist::crypto::authenticated::encryptSym
    - lock
    - local::toStringWithPort
    - dnsdist::crypto::authenticated::Nonce::value::data
    - boost::get<std::unordered_map<string, double>>
    - std::shared_ptr<Logr::Logger>::info
    - clear
    - setThreadName
    - std::rethrow_if_nested
    - string::c_str
    - dnsdist::configuration::getCurrentRuntimeConfiguration
    - std::shared_ptr<Logr::Logger>::error
    - std::string::data
    - putMsgLen32
    - std::string::resize
    - string::length
    - boost::get<ClientState*>
    - getClient
    - setTCPNoDelay
    - boost::get<shared_ptr<DownstreamState>>
    - what
    - strcmp
    - infolog
    - dnsdist::crypto::authenticated::Nonce::init
    - feedConfigDelta
    - getLuaNoSideEffect
    - dnsdist::crypto::authenticated::Nonce::merge
    - dnsdist::configuration::refreshLocalRuntimeConfiguration
    - readn2
    - dnsdist::crypto::authenticated::decryptSym
    - getMsgLen32
    linkageType: ''
    returnType: void
    signature: void controlClientThread(ConsoleConnection&& conn, std::shared_ptr<Logr::Logger>
      logger)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: setThreadName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:641,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:642,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:643,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:643,1
    - Dst: setMaxConcurrentConnections
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:645,1
    - Dst: dnsdist::configuration::getImmutableConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:645,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:654,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:654,1
    - Dst: ComboAddress::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:654,1
    - Dst: auto::info
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:655,1
    - Dst: SAccept
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:657,1
    - Dst: getHandle
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:657,1
    - Dst: dnsdist::configuration::refreshLocalRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:658,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:659,1
    - Dst: dnsdist::crypto::authenticated::isValidKey
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:661,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:662,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:662,1
    - Dst: ComboAddress::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:662,1
    - Dst: auto::info
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:663,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:663,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:667,1
    - Dst: d_consoleACL::match
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:668,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:669,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:669,1
    - Dst: ComboAddress::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:669,1
    - Dst: auto::info
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:670,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:670,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:676,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:676,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:678,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:678,1
    - Dst: ComboAddress::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:678,1
    - Dst: auto::info
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:679,1
    - Dst: std::thread::detach
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:683,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:686,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:686,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:686,1
    - Dst: auto::error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:687,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:687,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:687,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:692,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:692,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:692,1
    - Dst: auto::error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:693,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:693,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 28
    argCount: 1
    argNames:
    - ' acceptFD'
    argTypes:
    - Socket
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 695
      start: 639
    functionDepth: 1
    functionLinenumber: 639
    functionLinenumberEnd: 695
    functionName: dnsdist::console::controlThread
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc
    functionUses: 0
    functionsReached:
    - errlog
    - d_consoleACL::match
    - dnsdist::configuration::getImmutableConfiguration
    - dnsdist::crypto::authenticated::isValidKey
    - SLOG
    - Logging::Loggable
    - warnlog
    - auto::error
    - dnsdist::logging::getTopLogger
    - setThreadName
    - auto::info
    - dnsdist::configuration::getCurrentRuntimeConfiguration
    - getHandle
    - VERBOSESLOG
    - setMaxConcurrentConnections
    - SAccept
    - ComboAddress::toStringWithPort
    - what
    - infolog
    - std::thread::detach
    - dnsdist::configuration::refreshLocalRuntimeConfiguration
    linkageType: ''
    returnType: void
    signature: void controlThread(Socket&& acceptFD)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: clear_history
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:488,1
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:490,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 491
      start: 485
    functionDepth: 0
    functionLinenumber: 485
    functionLinenumberEnd: 491
    functionName: dnsdist::console::clearHistory
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc
    functionUses: 0
    functionsReached:
    - clear_history
    - lock
    linkageType: ''
    returnType: void
    signature: void clearHistory()
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: setThreadName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:496,1
    - Dst: setTCPNoDelay
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:498,1
    - Dst: getFD
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:498,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:501,1
    - Dst: dnsdist::crypto::authenticated::Nonce::init
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:506,1
    - Dst: readn2
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:507,1
    - Dst: getFD
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:507,1
    - Dst: dnsdist::crypto::authenticated::Nonce::value::data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:507,1
    - Dst: dnsdist::crypto::authenticated::Nonce::value::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:507,1
    - Dst: writen2
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:508,1
    - Dst: getFD
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:508,1
    - Dst: dnsdist::crypto::authenticated::Nonce::value::data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:508,1
    - Dst: dnsdist::crypto::authenticated::Nonce::value::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:508,1
    - Dst: dnsdist::crypto::authenticated::Nonce::merge
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:509,1
    - Dst: dnsdist::crypto::authenticated::Nonce::merge
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:510,1
    - Dst: getMsgLen32
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:514,1
    - Dst: getFD
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:514,1
    - Dst: putMsgLen32
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:521,1
    - Dst: getFD
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:521,1
    - Dst: std::string::resize
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:527,1
    - Dst: readn2
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:528,1
    - Dst: getFD
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:528,1
    - Dst: std::string::data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:528,1
    - Dst: dnsdist::crypto::authenticated::decryptSym
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:530,1
    - Dst: dnsdist::configuration::refreshLocalRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:532,1
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:539,1
    - Dst: clear
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:541,1
    - Dst: resetLuaSideEffect
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:542,1
    - Dst: boost::get<shared_ptr<DownstreamState>>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:552,1
    - Dst: getName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:554,1
    - Dst: boost::get<ClientState*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:560,1
    - Dst: local::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:562,1
    - Dst: boost::get<string>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:568,1
    - Dst: boost::get<std::unordered_map<string, double>>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:571,1
    - Dst: Json::dump
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:578,1
    - Dst: getLuaNoSideEffect
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:584,1
    - Dst: feedConfigDelta
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:585,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:598,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:598,1
    - Dst: strcmp
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:602,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:602,1
    - Dst: string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:606,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:606,1
    - Dst: std::rethrow_if_nested
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:610,1
    - Dst: string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:614,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:614,1
    - Dst: string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:618,1
    - Dst: string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:622,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:622,1
    - Dst: dnsdist::crypto::authenticated::encryptSym
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:624,1
    - Dst: putMsgLen32
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:625,1
    - Dst: getFD
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:625,1
    - Dst: string::length
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:625,1
    - Dst: writen2
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:626,1
    - Dst: getFD
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:626,1
    - Dst: string::c_str
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:626,1
    - Dst: string::length
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:626,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:628,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:629,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:629,1
    - Dst: getClient
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:629,1
    - Dst: std::shared_ptr<Logr::Logger>::info
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:630,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:634,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:634,1
    - Dst: getClient
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:634,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:634,1
    - Dst: std::shared_ptr<Logr::Logger>::error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:635,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:635,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 93
    argCount: 2
    argNames:
    - ' conn'
    - logger
    argTypes:
    - ConsoleConnection
    - std::shared_ptr<Logr::Logger>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 637
      start: 493
    functionDepth: 2
    functionLinenumber: 493
    functionLinenumberEnd: 637
    functionName: dnsdist::console::controlClientThread
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc
    functionUses: 0
    functionsReached:
    - dnsdist::crypto::authenticated::Nonce::value::size
    - getFD
    - writen2
    - std::string
    - Json::dump
    - resetLuaSideEffect
    - SLOG
    - boost::get<string>
    - getName
    - string
    - dnsdist::crypto::authenticated::encryptSym
    - lock
    - local::toStringWithPort
    - dnsdist::crypto::authenticated::Nonce::value::data
    - boost::get<std::unordered_map<string, double>>
    - std::shared_ptr<Logr::Logger>::info
    - clear
    - setThreadName
    - std::rethrow_if_nested
    - string::c_str
    - dnsdist::configuration::getCurrentRuntimeConfiguration
    - std::shared_ptr<Logr::Logger>::error
    - std::string::data
    - putMsgLen32
    - std::string::resize
    - string::length
    - boost::get<ClientState*>
    - getClient
    - setTCPNoDelay
    - boost::get<shared_ptr<DownstreamState>>
    - what
    - strcmp
    - infolog
    - dnsdist::crypto::authenticated::Nonce::init
    - feedConfigDelta
    - getLuaNoSideEffect
    - dnsdist::crypto::authenticated::Nonce::merge
    - dnsdist::configuration::refreshLocalRuntimeConfiguration
    - readn2
    - dnsdist::crypto::authenticated::decryptSym
    - getMsgLen32
    linkageType: ''
    returnType: void
    signature: void controlClientThread(ConsoleConnection&& conn, std::shared_ptr<Logr::Logger>
      logger)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: setThreadName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:641,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:642,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:643,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:643,1
    - Dst: setMaxConcurrentConnections
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:645,1
    - Dst: dnsdist::configuration::getImmutableConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:645,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:654,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:654,1
    - Dst: ComboAddress::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:654,1
    - Dst: auto::info
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:655,1
    - Dst: SAccept
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:657,1
    - Dst: getHandle
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:657,1
    - Dst: dnsdist::configuration::refreshLocalRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:658,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:659,1
    - Dst: dnsdist::crypto::authenticated::isValidKey
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:661,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:662,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:662,1
    - Dst: ComboAddress::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:662,1
    - Dst: auto::info
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:663,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:663,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:667,1
    - Dst: d_consoleACL::match
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:668,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:669,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:669,1
    - Dst: ComboAddress::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:669,1
    - Dst: auto::info
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:670,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:670,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:676,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:676,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:678,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:678,1
    - Dst: ComboAddress::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:678,1
    - Dst: auto::info
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:679,1
    - Dst: std::thread::detach
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:683,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:686,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:686,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:686,1
    - Dst: auto::error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:687,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:687,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:687,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:692,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:692,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:692,1
    - Dst: auto::error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:693,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc:693,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 28
    argCount: 1
    argNames:
    - ' acceptFD'
    argTypes:
    - Socket
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 695
      start: 639
    functionDepth: 1
    functionLinenumber: 639
    functionLinenumberEnd: 695
    functionName: dnsdist::console::controlThread
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc
    functionUses: 0
    functionsReached:
    - errlog
    - d_consoleACL::match
    - dnsdist::configuration::getImmutableConfiguration
    - dnsdist::crypto::authenticated::isValidKey
    - SLOG
    - Logging::Loggable
    - warnlog
    - auto::error
    - dnsdist::logging::getTopLogger
    - setThreadName
    - auto::info
    - dnsdist::configuration::getCurrentRuntimeConfiguration
    - getHandle
    - VERBOSESLOG
    - setMaxConcurrentConnections
    - SAccept
    - ComboAddress::toStringWithPort
    - what
    - infolog
    - std::thread::detach
    - dnsdist::configuration::refreshLocalRuntimeConfiguration
    linkageType: ''
    returnType: void
    signature: void controlThread(Socket&& acceptFD)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 8
    argNames:
    - ' ids'
    - udiff
    - ' client'
    - ' backend'
    - size
    - ' cleartextDH'
    - protocol
    - fromBackend
    argTypes:
    - InternalQueryState
    - double
    - ComboAddress
    - ComboAddress
    - unsigned int
    - dnsheader
    - dnsdist::Protocol
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 40
    functionDepth: 0
    functionLinenumber: 40
    functionLinenumberEnd: 42
    functionName: handleResponseSent
    functionSourceFile: /src/pdns/pdns/dnsdistdist/benchmarkrunner.cc
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void handleResponseSent([[maybe_unused]] InternalQueryState& ids, [[maybe_unused]]
      double udiff, [[maybe_unused]] const ComboAddress& client, [[maybe_unused]]
      const ComboAddress& backend, [[maybe_unused]] unsigned int size, [[maybe_unused]]
      const dnsheader& cleartextDH, [[maybe_unused]] dnsdist::Protocol protocol, [[maybe_unused]]
      bool fromBackend)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 10
    argNames:
    - ' qname'
    - ' qtype'
    - udiff
    - ' client'
    - ' backend'
    - size
    - ' cleartextDH'
    - outgoingProtocol
    - incomingProtocol
    - fromBackend
    argTypes:
    - DNSName
    - QType
    - double
    - ComboAddress
    - ComboAddress
    - unsigned int
    - dnsheader
    - dnsdist::Protocol
    - dnsdist::Protocol
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 44
    functionDepth: 0
    functionLinenumber: 44
    functionLinenumberEnd: 46
    functionName: handleResponseSent
    functionSourceFile: /src/pdns/pdns/dnsdistdist/benchmarkrunner.cc
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void handleResponseSent([[maybe_unused]] DNSName&& qname, [[maybe_unused]]
      const QType& qtype, [[maybe_unused]] double udiff, [[maybe_unused]] const ComboAddress&
      client, [[maybe_unused]] const ComboAddress& backend, [[maybe_unused]] unsigned
      int size, [[maybe_unused]] const dnsheader& cleartextDH, [[maybe_unused]] dnsdist::Protocol
      outgoingProtocol, [[maybe_unused]] dnsdist::Protocol incomingProtocol, [[maybe_unused]]
      bool fromBackend)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' response'
    - ' dnsResponse'
    - muted
    argTypes:
    - PacketBuffer
    - DNSResponse
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 48
    functionDepth: 0
    functionLinenumber: 48
    functionLinenumberEnd: 51
    functionName: processResponse
    functionSourceFile: /src/pdns/pdns/dnsdistdist/benchmarkrunner.cc
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool processResponse([[maybe_unused]] PacketBuffer& response, [[maybe_unused]]
      DNSResponse& dnsResponse, [[maybe_unused]] bool muted)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' dnsQuestion'
    - ' selectedBackend'
    argTypes:
    - DNSQuestion
    - std::shared_ptr<DownstreamState>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 57
    functionDepth: 0
    functionLinenumber: 57
    functionLinenumberEnd: 60
    functionName: processQuery
    functionSourceFile: /src/pdns/pdns/dnsdistdist/benchmarkrunner.cc
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: ProcessQueryResult
    signature: ProcessQueryResult processQuery([[maybe_unused]] DNSQuestion& dnsQuestion,
      [[maybe_unused]] std::shared_ptr<DownstreamState>& selectedBackend)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - ' action'
    - ' dnsQuestion'
    - ' ruleresult'
    - ' drop'
    argTypes:
    - DNSAction::Action
    - DNSQuestion
    - std::string
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 62
    functionDepth: 0
    functionLinenumber: 62
    functionLinenumberEnd: 65
    functionName: processRulesResult
    functionSourceFile: /src/pdns/pdns/dnsdistdist/benchmarkrunner.cc
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool processRulesResult([[maybe_unused]] const DNSAction::Action& action,
      [[maybe_unused]] DNSQuestion& dnsQuestion, [[maybe_unused]] std::string& ruleresult,
      [[maybe_unused]] bool& drop)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' dnsQuestion'
    - ' outgoingBackend'
    argTypes:
    - DNSQuestion
    - std::shared_ptr<DownstreamState>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 67
    functionDepth: 0
    functionLinenumber: 67
    functionLinenumberEnd: 70
    functionName: processQueryAfterRules
    functionSourceFile: /src/pdns/pdns/dnsdistdist/benchmarkrunner.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: ProcessQueryResult
    signature: ProcessQueryResult processQueryAfterRules([[maybe_unused]] DNSQuestion&
      dnsQuestion, [[maybe_unused]] std::shared_ptr<DownstreamState>& outgoingBackend)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' response'
    - ' dnsResponse'
    - muted
    argTypes:
    - PacketBuffer
    - DNSResponse
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 72
    functionDepth: 0
    functionLinenumber: 72
    functionLinenumberEnd: 75
    functionName: processResponseAfterRules
    functionSourceFile: /src/pdns/pdns/dnsdistdist/benchmarkrunner.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool processResponseAfterRules([[maybe_unused]] PacketBuffer& response,
      [[maybe_unused]] DNSResponse& dnsResponse, [[maybe_unused]] bool muted)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - ' respRuleActions'
    - ' dnsResponse'
    argTypes:
    - std::vector<dnsdist::rules::ResponseRuleAction>
    - DNSResponse
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 77
    functionDepth: 0
    functionLinenumber: 77
    functionLinenumberEnd: 82
    functionName: applyRulesToResponse
    functionSourceFile: /src/pdns/pdns/dnsdistdist/benchmarkrunner.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool applyRulesToResponse([[maybe_unused]] const std::vector<dnsdist::rules::ResponseRuleAction>&
      respRuleActions, [[maybe_unused]] DNSResponse& dnsResponse)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - ' rules'
    - ' ids'
    - ' d_ds'
    - ' sender'
    argTypes:
    - std::vector<dnsdist::rules::ResponseRuleAction>
    - InternalQueryState
    - std::shared_ptr<DownstreamState>
    - std::shared_ptr<TCPQuerySender>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 84
    functionDepth: 0
    functionLinenumber: 84
    functionLinenumberEnd: 87
    functionName: handleTimeoutResponseRules
    functionSourceFile: /src/pdns/pdns/dnsdistdist/benchmarkrunner.cc
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool handleTimeoutResponseRules([[maybe_unused]] const std::vector<dnsdist::rules::ResponseRuleAction>&
      rules, [[maybe_unused]] InternalQueryState& ids, [[maybe_unused]] const std::shared_ptr<DownstreamState>&
      d_ds, [[maybe_unused]] const std::shared_ptr<TCPQuerySender>& sender)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - ' nameWithAddr'
    - newResult
    argTypes:
    - string
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 89
    functionDepth: 0
    functionLinenumber: 89
    functionLinenumberEnd: 91
    functionName: handleServerStateChange
    functionSourceFile: /src/pdns/pdns/dnsdistdist/benchmarkrunner.cc
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void handleServerStateChange([[maybe_unused]] const string& nameWithAddr,
      [[maybe_unused]] bool newResult)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - origFD
    - ' response'
    - delayMsec
    - ' origDest'
    - ' origRemote'
    argTypes:
    - int
    - PacketBuffer
    - int
    - ComboAddress
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 93
    functionDepth: 0
    functionLinenumber: 93
    functionLinenumberEnd: 96
    functionName: sendUDPResponse
    functionSourceFile: /src/pdns/pdns/dnsdistdist/benchmarkrunner.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool sendUDPResponse([[maybe_unused]] int origFD, [[maybe_unused]]
      const PacketBuffer& response, [[maybe_unused]] const int delayMsec, [[maybe_unused]]
      const ComboAddress& origDest, [[maybe_unused]] const ComboAddress& origRemote)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - ' downstream'
    - queryID
    - ' dnsQuestion'
    - ' query'
    - actuallySend
    argTypes:
    - std::shared_ptr<DownstreamState>
    - uint16_t
    - DNSQuestion
    - PacketBuffer
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 98
    functionDepth: 0
    functionLinenumber: 98
    functionLinenumberEnd: 101
    functionName: assignOutgoingUDPQueryToBackend
    functionSourceFile: /src/pdns/pdns/dnsdistdist/benchmarkrunner.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool assignOutgoingUDPQueryToBackend([[maybe_unused]] std::shared_ptr<DownstreamState>&
      downstream, [[maybe_unused]] uint16_t queryID, [[maybe_unused]] DNSQuestion&
      dnsQuestion, [[maybe_unused]] PacketBuffer& query, [[maybe_unused]] bool actuallySend)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' clientState'
    - ' packet'
    argTypes:
    - ClientState
    - XskPacket
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 106
    functionDepth: 0
    functionLinenumber: 106
    functionLinenumberEnd: 109
    functionName: dnsdist::xsk::XskProcessQuery
    functionSourceFile: /src/pdns/pdns/dnsdistdist/benchmarkrunner.cc
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool XskProcessQuery([[maybe_unused]] ClientState& clientState, [[maybe_unused]]
      XskPacket& packet)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' clientState'
    - ' packet'
    argTypes:
    - ClientState
    - XskPacket
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 106
    functionDepth: 0
    functionLinenumber: 106
    functionLinenumberEnd: 109
    functionName: dnsdist::xsk::XskProcessQuery
    functionSourceFile: /src/pdns/pdns/dnsdistdist/benchmarkrunner.cc
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool XskProcessQuery([[maybe_unused]] ClientState& clientState, [[maybe_unused]]
      XskPacket& packet)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 3
    argNames:
    - ' dss'
    - ' response'
    - ' ids'
    argTypes:
    - std::shared_ptr<DownstreamState>
    - PacketBuffer
    - InternalQueryState
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 113
    functionDepth: 0
    functionLinenumber: 113
    functionLinenumberEnd: 116
    functionName: processResponderPacket
    functionSourceFile: /src/pdns/pdns/dnsdistdist/benchmarkrunner.cc
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool processResponderPacket([[maybe_unused]] std::shared_ptr<DownstreamState>&
      dss, [[maybe_unused]] PacketBuffer& response, [[maybe_unused]] InternalQueryState&&
      ids)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - dss
    argTypes:
    - std::shared_ptr<DownstreamState>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 119
    functionDepth: 0
    functionLinenumber: 119
    functionLinenumberEnd: 121
    functionName: responderThread
    functionSourceFile: /src/pdns/pdns/dnsdistdist/benchmarkrunner.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void responderThread([[maybe_unused]] std::shared_ptr<DownstreamState>
      dss)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' dnsHeader'
    - ' clientState'
    argTypes:
    - struct dnsheader
    - ClientState
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 123
    functionDepth: 0
    functionLinenumber: 123
    functionLinenumberEnd: 126
    functionName: checkQueryHeaders
    functionSourceFile: /src/pdns/pdns/dnsdistdist/benchmarkrunner.cc
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool checkQueryHeaders([[maybe_unused]] const struct dnsheader& dnsHeader,
      [[maybe_unused]] ClientState& clientState)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - ' clientState'
    - ' query'
    - ' dnsCryptQuery'
    - now
    - tcp
    argTypes:
    - ClientState
    - PacketBuffer
    - std::unique_ptr<DNSCryptQuery>
    - time_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 131
      start: 128
    functionDepth: 0
    functionLinenumber: 128
    functionLinenumberEnd: 131
    functionName: checkDNSCryptQuery
    functionSourceFile: /src/pdns/pdns/dnsdistdist/benchmarkrunner.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool checkDNSCryptQuery([[maybe_unused]] const ClientState& clientState,
      [[maybe_unused]] PacketBuffer& query, [[maybe_unused]] std::unique_ptr<DNSCryptQuery>&
      dnsCryptQuery, [[maybe_unused]] time_t now, [[maybe_unused]] bool tcp)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 6
    argNames:
    - ' response'
    - ' qname'
    - qtype
    - qclass
    - ' remote'
    - allowEmptyResponse
    argTypes:
    - PacketBuffer
    - DNSName
    - uint16_t
    - uint16_t
    - std::shared_ptr<DownstreamState>
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 136
      start: 133
    functionDepth: 0
    functionLinenumber: 133
    functionLinenumberEnd: 136
    functionName: responseContentMatches
    functionSourceFile: /src/pdns/pdns/dnsdistdist/benchmarkrunner.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool responseContentMatches([[maybe_unused]] const PacketBuffer& response,
      [[maybe_unused]] const DNSName& qname, [[maybe_unused]] const uint16_t qtype,
      [[maybe_unused]] const uint16_t qclass, [[maybe_unused]] const std::shared_ptr<DownstreamState>&
      remote, [[maybe_unused]] bool allowEmptyResponse)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 141
      start: 141
    functionDepth: 0
    functionLinenumber: 141
    functionLinenumberEnd: 141
    functionName: UDPTCPCrossQuerySender::UDPTCPCrossQuerySender
    functionSourceFile: /src/pdns/pdns/dnsdistdist/benchmarkrunner.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void UDPTCPCrossQuerySender()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 142
      start: 142
    functionDepth: 0
    functionLinenumber: 142
    functionLinenumberEnd: 142
    functionName: UDPTCPCrossQuerySender::UDPTCPCrossQuerySender
    functionSourceFile: /src/pdns/pdns/dnsdistdist/benchmarkrunner.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void UDPTCPCrossQuerySender(const UDPTCPCrossQuerySender&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 143
      start: 143
    functionDepth: 0
    functionLinenumber: 143
    functionLinenumberEnd: 143
    functionName: '& operator=(const UDPTCPCrossQuerySender&)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/benchmarkrunner.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: UDPTCPCrossQuerySender
    signature: UDPTCPCrossQuerySender & operator=(const UDPTCPCrossQuerySender&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 144
      start: 144
    functionDepth: 0
    functionLinenumber: 144
    functionLinenumberEnd: 144
    functionName: UDPTCPCrossQuerySender::UDPTCPCrossQuerySender
    functionSourceFile: /src/pdns/pdns/dnsdistdist/benchmarkrunner.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void UDPTCPCrossQuerySender(UDPTCPCrossQuerySender&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 145
      start: 145
    functionDepth: 0
    functionLinenumber: 145
    functionLinenumberEnd: 145
    functionName: '& operator=(UDPTCPCrossQuerySender&&)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/benchmarkrunner.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: UDPTCPCrossQuerySender
    signature: UDPTCPCrossQuerySender & operator=(UDPTCPCrossQuerySender&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 146
      start: 146
    functionDepth: 0
    functionLinenumber: 146
    functionLinenumberEnd: 146
    functionName: ~UDPTCPCrossQuerySender() override
    functionSourceFile: /src/pdns/pdns/dnsdistdist/benchmarkrunner.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~UDPTCPCrossQuerySender() override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 151
      start: 148
    functionDepth: 0
    functionLinenumber: 148
    functionLinenumberEnd: 151
    functionName: UDPTCPCrossQuerySender::active
    functionSourceFile: /src/pdns/pdns/dnsdistdist/benchmarkrunner.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool active() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - ' now'
    - ' response'
    argTypes:
    - struct timeval
    - TCPResponse
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 153
    functionDepth: 0
    functionLinenumber: 153
    functionLinenumberEnd: 155
    functionName: UDPTCPCrossQuerySender::handleResponse
    functionSourceFile: /src/pdns/pdns/dnsdistdist/benchmarkrunner.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void handleResponse([[maybe_unused]] const struct timeval& now, [[maybe_unused]]
      TCPResponse&& response) override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - ' now'
    - ' response'
    argTypes:
    - struct timeval
    - TCPResponse
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 159
      start: 157
    functionDepth: 0
    functionLinenumber: 157
    functionLinenumberEnd: 159
    functionName: UDPTCPCrossQuerySender::handleXFRResponse
    functionSourceFile: /src/pdns/pdns/dnsdistdist/benchmarkrunner.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void handleXFRResponse([[maybe_unused]] const struct timeval& now,
      [[maybe_unused]] TCPResponse&& response) override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - ' now'
    - ' response'
    argTypes:
    - struct timeval
    - TCPResponse
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 163
      start: 161
    functionDepth: 0
    functionLinenumber: 161
    functionLinenumberEnd: 163
    functionName: UDPTCPCrossQuerySender::notifyIOError
    functionSourceFile: /src/pdns/pdns/dnsdistdist/benchmarkrunner.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void notifyIOError([[maybe_unused]] const struct timeval& now, [[maybe_unused]]
      TCPResponse&& response) override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 169
      start: 169
    functionDepth: 0
    functionLinenumber: 169
    functionLinenumberEnd: 169
    functionName: UDPCrossProtocolQuery::UDPCrossProtocolQuery
    functionSourceFile: /src/pdns/pdns/dnsdistdist/benchmarkrunner.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void UDPCrossProtocolQuery()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: InternalQuery
      Src: /src/pdns/pdns/dnsdistdist/benchmarkrunner.cc:171,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/benchmarkrunner.cc:171,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/benchmarkrunner.cc:171,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 1
    argCount: 3
    argNames:
    - ' buffer_'
    - ' ids_'
    - backend
    argTypes:
    - PacketBuffer
    - InternalQueryState
    - std::shared_ptr<DownstreamState>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 173
      start: 170
    functionDepth: 0
    functionLinenumber: 170
    functionLinenumberEnd: 173
    functionName: UDPCrossProtocolQuery::UDPCrossProtocolQuery
    functionSourceFile: /src/pdns/pdns/dnsdistdist/benchmarkrunner.cc
    functionUses: 0
    functionsReached:
    - std::move
    - InternalQuery
    linkageType: ''
    returnType: void
    signature: void UDPCrossProtocolQuery(PacketBuffer&& buffer_, InternalQueryState&&
      ids_, std::shared_ptr<DownstreamState> backend)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 174
      start: 174
    functionDepth: 0
    functionLinenumber: 174
    functionLinenumberEnd: 174
    functionName: UDPCrossProtocolQuery::UDPCrossProtocolQuery
    functionSourceFile: /src/pdns/pdns/dnsdistdist/benchmarkrunner.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void UDPCrossProtocolQuery(const UDPCrossProtocolQuery&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 175
      start: 175
    functionDepth: 0
    functionLinenumber: 175
    functionLinenumberEnd: 175
    functionName: '& operator=(const UDPCrossProtocolQuery&)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/benchmarkrunner.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: UDPCrossProtocolQuery
    signature: UDPCrossProtocolQuery & operator=(const UDPCrossProtocolQuery&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 176
      start: 176
    functionDepth: 0
    functionLinenumber: 176
    functionLinenumberEnd: 176
    functionName: UDPCrossProtocolQuery::UDPCrossProtocolQuery
    functionSourceFile: /src/pdns/pdns/dnsdistdist/benchmarkrunner.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void UDPCrossProtocolQuery(UDPCrossProtocolQuery&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 177
      start: 177
    functionDepth: 0
    functionLinenumber: 177
    functionLinenumberEnd: 177
    functionName: '& operator=(UDPCrossProtocolQuery&&)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/benchmarkrunner.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: UDPCrossProtocolQuery
    signature: UDPCrossProtocolQuery & operator=(UDPCrossProtocolQuery&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 178
      start: 178
    functionDepth: 0
    functionLinenumber: 178
    functionLinenumberEnd: 178
    functionName: ~UDPCrossProtocolQuery() override
    functionSourceFile: /src/pdns/pdns/dnsdistdist/benchmarkrunner.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~UDPCrossProtocolQuery() override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 183
      start: 180
    functionDepth: 0
    functionLinenumber: 180
    functionLinenumberEnd: 183
    functionName: UDPCrossProtocolQuery::getTCPQuerySender
    functionSourceFile: /src/pdns/pdns/dnsdistdist/benchmarkrunner.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::shared_ptr<TCPQuerySender>
    signature: std::shared_ptr<TCPQuerySender> getTCPQuerySender() override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::make_unique<UDPCrossProtocolQuery>
      Src: /src/pdns/pdns/dnsdistdist/benchmarkrunner.cc:194,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' dnsQuestion'
    argTypes:
    - DNSQuestion
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 195
      start: 192
    functionDepth: 0
    functionLinenumber: 192
    functionLinenumberEnd: 195
    functionName: getUDPCrossProtocolQueryFromDQ
    functionSourceFile: /src/pdns/pdns/dnsdistdist/benchmarkrunner.cc
    functionUses: 2
    functionsReached:
    - std::make_unique<UDPCrossProtocolQuery>
    linkageType: ''
    returnType: std::unique_ptr<CrossProtocolQuery>
    signature: std::unique_ptr<CrossProtocolQuery> getUDPCrossProtocolQueryFromDQ([[maybe_unused]]
      DNSQuestion& dnsQuestion)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:33,1
    - Dst: DNSDistPacketCache::getSize
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:33,1
    - Dst: time
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:38,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:46,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:46,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:46,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:50,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:54,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:55,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:56,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:57,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:57,1
    - Dst: GenericDNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:58,1
    - Dst: GenericDNSPacketWriter::xfr32BitInt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:59,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:60,1
    - Dst: DNSDistPacketCache::get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:65,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:66,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:67,1
    - Dst: DNSDistPacketCache::insert
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:69,1
    - Dst: getFlagsFromDNSHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:69,1
    - Dst: DNSQuestion::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:69,1
    - Dst: DNSDistPacketCache::get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:71,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:71,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:73,1
    - Dst: DNSQuestion::getData
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:73,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:73,1
    - Dst: memcmp
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:74,1
    - Dst: DNSQuestion::getData
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:74,1
    - Dst: PacketBuffer::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:74,1
    - Dst: DNSQuestion::getData
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:74,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:75,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:76,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:83,1
    - Dst: DNSDistPacketCache::getInsertCollisions
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:83,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:84,1
    - Dst: DNSDistPacketCache::getSize
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:84,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:89,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:89,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:89,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:92,1
    - Dst: DNSDistPacketCache::get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:96,1
    - Dst: DNSDistPacketCache::expungeByName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:98,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:99,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:103,1
    - Dst: DNSDistPacketCache::getSize
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:103,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:108,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:108,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:108,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:111,1
    - Dst: DNSDistPacketCache::get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:115,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:115,1
    - Dst: DNSDistPacketCache::purgeExpired
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:121,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:122,1
    - Dst: DNSDistPacketCache::getSize
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:124,1
    - Dst: DNSDistPacketCache::expungeByName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:125,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:125,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:126,1
    - Dst: DNSDistPacketCache::getSize
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:126,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:127,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:130,1
    - Dst: DNSDistPacketCache::purgeExpired
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:130,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 54
    argCount: 1
    argNames:
    - shuffle
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 136
      start: 24
    functionDepth: 1
    functionLinenumber: 24
    functionLinenumberEnd: 136
    functionName: test_packetcache_simple
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc
    functionUses: 0
    functionsReached:
    - DNSDistPacketCache::get
    - std::to_string
    - DNSQuestion::getData
    - GenericDNSPacketWriter::getHeader
    - DNSDistPacketCache::getInsertCollisions
    - getFlagsFromDNSHeader
    - PacketBuffer::size
    - GenericDNSPacketWriter::xfr32BitInt
    - DNSQuestion::getHeader
    - memcmp
    - GenericDNSPacketWriter::startRecord
    - time
    - DNSName
    - DNSDistPacketCache::insert
    - PacketBuffer::data
    - DNSDistPacketCache::purgeExpired
    - DNSDistPacketCache::getSize
    - BOOST_CHECK_EQUAL
    - GenericDNSPacketWriter::commit
    - DNSDistPacketCache::expungeByName
    - BOOST_CHECK
    linkageType: ''
    returnType: void
    signature: void test_packetcache_simple(bool shuffle)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_packetcache_simple
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:141,1
    - Dst: test_packetcache_simple
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:142,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 143
      start: 138
    functionDepth: 2
    functionLinenumber: 138
    functionLinenumberEnd: 143
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc
    functionUses: 0
    functionsReached:
    - test_packetcache_simple
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_PacketCacheSimple)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:158,1
    - Dst: DNSDistPacketCache::getSize
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:158,1
    - Dst: time
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:164,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:172,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:172,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:176,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:180,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:181,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:182,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:183,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:183,1
    - Dst: GenericDNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:184,1
    - Dst: GenericDNSPacketWriter::xfrCAWithoutPort
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:186,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:187,1
    - Dst: DNSDistPacketCache::get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:192,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:193,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:194,1
    - Dst: DNSDistPacketCache::insert
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:196,1
    - Dst: getFlagsFromDNSHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:196,1
    - Dst: DNSQuestion::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:196,1
    - Dst: DNSDistPacketCache::get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:198,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:198,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:200,1
    - Dst: DNSQuestion::getData
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:200,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:200,1
    - Dst: memcmp
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:201,1
    - Dst: DNSQuestion::getData
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:201,1
    - Dst: PacketBuffer::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:201,1
    - Dst: DNSQuestion::getData
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:201,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:202,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:203,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:210,1
    - Dst: DNSDistPacketCache::getInsertCollisions
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:210,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:211,1
    - Dst: DNSDistPacketCache::getSize
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:211,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:215,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:215,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:219,1
    - Dst: DNSDistPacketCache::get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:223,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:223,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:228,1
    - Dst: DNSDistPacketCache::getSize
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:230,1
    - Dst: DNSDistPacketCache::purgeExpired
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:233,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:234,1
    - Dst: DNSDistPacketCache::purgeExpired
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:237,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:238,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:239,1
    - Dst: DNSDistPacketCache::getSize
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:239,1
    - Dst: DNSDistPacketCache::purgeExpired
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:242,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:243,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:244,1
    - Dst: DNSDistPacketCache::getSize
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:244,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:247,1
    - Dst: DNSDistPacketCache::purgeExpired
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:247,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 49
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 253
      start: 145
    functionDepth: 1
    functionLinenumber: 145
    functionLinenumberEnd: 253
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc
    functionUses: 0
    functionsReached:
    - DNSDistPacketCache::get
    - std::to_string
    - DNSQuestion::getData
    - GenericDNSPacketWriter::getHeader
    - DNSDistPacketCache::getInsertCollisions
    - getFlagsFromDNSHeader
    - PacketBuffer::size
    - DNSQuestion::getHeader
    - memcmp
    - GenericDNSPacketWriter::xfrCAWithoutPort
    - GenericDNSPacketWriter::startRecord
    - time
    - DNSName
    - DNSDistPacketCache::insert
    - PacketBuffer::data
    - DNSDistPacketCache::purgeExpired
    - DNSDistPacketCache::getSize
    - BOOST_CHECK_EQUAL
    - GenericDNSPacketWriter::commit
    - BOOST_CHECK
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_PacketCacheSharded)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:271,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:275,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:279,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:280,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:281,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:282,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:282,1
    - Dst: GenericDNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:283,1
    - Dst: GenericDNSPacketWriter::xfrCAWithoutPort
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:285,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:286,1
    - Dst: DNSDistPacketCache::get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:293,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:294,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:295,1
    - Dst: DNSDistPacketCache::insert
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:297,1
    - Dst: getFlagsFromDNSHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:297,1
    - Dst: DNSQuestion::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:297,1
    - Dst: DNSDistPacketCache::get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:298,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:298,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:299,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:300,1
    - Dst: DNSDistPacketCache::get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:309,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:310,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:311,1
    - Dst: DNSDistPacketCache::insert
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:313,1
    - Dst: getFlagsFromDNSHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:313,1
    - Dst: DNSQuestion::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:313,1
    - Dst: DNSDistPacketCache::get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:314,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:314,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:315,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:316,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 33
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 323
      start: 255
    functionDepth: 1
    functionLinenumber: 255
    functionLinenumberEnd: 323
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc
    functionUses: 0
    functionsReached:
    - DNSDistPacketCache::get
    - GenericDNSPacketWriter::xfrCAWithoutPort
    - GenericDNSPacketWriter::startRecord
    - GenericDNSPacketWriter::getHeader
    - DNSName
    - BOOST_CHECK_EQUAL
    - GenericDNSPacketWriter::commit
    - getFlagsFromDNSHeader
    - BOOST_CHECK
    - DNSQuestion::getHeader
    - DNSDistPacketCache::insert
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_PacketCacheTCP)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:341,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:345,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:349,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:350,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:351,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:352,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:353,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:353,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:354,1
    - Dst: DNSDistPacketCache::get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:359,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:360,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:361,1
    - Dst: DNSDistPacketCache::insert
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:364,1
    - Dst: getFlagsFromDNSHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:364,1
    - Dst: DNSQuestion::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:364,1
    - Dst: std::optional<uint32_t>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:364,1
    - Dst: DNSDistPacketCache::get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:365,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:365,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:366,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:367,1
    - Dst: DNSDistPacketCache::insert
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:370,1
    - Dst: getFlagsFromDNSHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:370,1
    - Dst: DNSQuestion::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:370,1
    - Dst: std::optional<uint32_t>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:370,1
    - Dst: DNSDistPacketCache::get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:371,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:371,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:372,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:373,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 27
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 379
      start: 325
    functionDepth: 1
    functionLinenumber: 325
    functionLinenumberEnd: 379
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc
    functionUses: 0
    functionsReached:
    - std::optional<uint32_t>
    - DNSDistPacketCache::get
    - GenericDNSPacketWriter::getHeader
    - BOOST_CHECK_EQUAL
    - DNSName
    - GenericDNSPacketWriter::commit
    - getFlagsFromDNSHeader
    - BOOST_CHECK
    - DNSQuestion::getHeader
    - DNSDistPacketCache::insert
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_PacketCacheServFailTTL)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:404,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:408,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:409,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:410,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:411,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:412,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:412,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:413,1
    - Dst: GenericDNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:414,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:415,1
    - Dst: GenericDNSPacketWriter::addOpt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:416,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:417,1
    - Dst: DNSDistPacketCache::get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:422,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:423,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:424,1
    - Dst: DNSDistPacketCache::insert
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:426,1
    - Dst: getFlagsFromDNSHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:426,1
    - Dst: DNSQuestion::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:426,1
    - Dst: DNSDistPacketCache::get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:427,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:427,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:428,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:429,1
    - Dst: std::this_thread::sleep_for
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:431,1
    - Dst: std::chrono::seconds
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:431,1
    - Dst: DNSDistPacketCache::get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:433,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:433,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:434,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:435,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 31
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 441
      start: 381
    functionDepth: 1
    functionLinenumber: 381
    functionLinenumberEnd: 441
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc
    functionUses: 0
    functionsReached:
    - std::this_thread::sleep_for
    - GenericDNSPacketWriter::addOpt
    - DNSDistPacketCache::get
    - GenericDNSPacketWriter::startRecord
    - std::chrono::seconds
    - GenericDNSPacketWriter::getHeader
    - BOOST_CHECK_EQUAL
    - GenericDNSPacketWriter::commit
    - getFlagsFromDNSHeader
    - BOOST_CHECK
    - DNSQuestion::getHeader
    - DNSDistPacketCache::insert
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_PacketCacheNoDataTTL)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:466,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:470,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:471,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:472,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:473,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:474,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:474,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:475,1
    - Dst: GenericDNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:476,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:477,1
    - Dst: GenericDNSPacketWriter::addOpt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:478,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:479,1
    - Dst: DNSDistPacketCache::get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:484,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:485,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:486,1
    - Dst: DNSDistPacketCache::insert
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:488,1
    - Dst: getFlagsFromDNSHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:488,1
    - Dst: DNSQuestion::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:488,1
    - Dst: DNSDistPacketCache::get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:489,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:489,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:490,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:491,1
    - Dst: std::this_thread::sleep_for
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:493,1
    - Dst: std::chrono::seconds
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:493,1
    - Dst: DNSDistPacketCache::get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:495,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:495,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:496,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:497,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 31
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 503
      start: 443
    functionDepth: 1
    functionLinenumber: 443
    functionLinenumberEnd: 503
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc
    functionUses: 0
    functionsReached:
    - std::this_thread::sleep_for
    - GenericDNSPacketWriter::addOpt
    - DNSDistPacketCache::get
    - GenericDNSPacketWriter::startRecord
    - std::chrono::seconds
    - GenericDNSPacketWriter::getHeader
    - BOOST_CHECK_EQUAL
    - GenericDNSPacketWriter::commit
    - getFlagsFromDNSHeader
    - BOOST_CHECK
    - DNSQuestion::getHeader
    - DNSDistPacketCache::insert
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_PacketCacheNXDomainTTL)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: InternalQueryState::queryRealTime::start
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:511,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:512,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:516,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:520,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:521,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:522,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:523,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:524,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:525,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:525,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:526,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:543,1
    - Dst: DNSDistPacketCache::getSize
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:543,1
    - Dst: DNSDistPacketCache::get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:545,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:546,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:547,1
    - Dst: DNSDistPacketCache::insert
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:549,1
    - Dst: getFlagsFromDNSHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:549,1
    - Dst: DNSQuestion::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:549,1
    - Dst: DNSDistPacketCache::get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:551,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:551,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:552,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:564,1
    - Dst: DNSDistPacketCache::getSize
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:564,1
    - Dst: DNSDistPacketCache::get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:566,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:567,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:568,1
    - Dst: DNSDistPacketCache::insert
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:570,1
    - Dst: getFlagsFromDNSHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:570,1
    - Dst: DNSQuestion::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:570,1
    - Dst: DNSDistPacketCache::get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:573,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:573,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:574,1
    - Dst: DNSDistPacketCache::get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:577,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:577,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:578,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:579,1
    - Dst: DNSQuestion::getData
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:579,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:579,1
    - Dst: memcmp
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:580,1
    - Dst: DNSQuestion::getData
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:580,1
    - Dst: PacketBuffer::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:580,1
    - Dst: DNSQuestion::getData
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:580,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:581,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:582,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 35
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 584
      start: 505
    functionDepth: 1
    functionLinenumber: 505
    functionLinenumberEnd: 584
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc
    functionUses: 0
    functionsReached:
    - memcmp
    - DNSDistPacketCache::get
    - PacketBuffer::data
    - DNSQuestion::getData
    - GenericDNSPacketWriter::getHeader
    - DNSDistPacketCache::getSize
    - BOOST_CHECK_EQUAL
    - DNSName
    - GenericDNSPacketWriter::commit
    - getFlagsFromDNSHeader
    - PacketBuffer::size
    - InternalQueryState::queryRealTime::start
    - BOOST_CHECK
    - DNSQuestion::getHeader
    - BOOST_REQUIRE_EQUAL
    - DNSDistPacketCache::insert
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_PacketCacheTruncated)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:595,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:601,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:602,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:608,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:609,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:610,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:611,1
    - Dst: GenericDNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:612,1
    - Dst: GenericDNSPacketWriter::xfrCAWithoutPort
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:614,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:615,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:622,1
    - Dst: DNSDistPacketCache::get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:633,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:634,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:635,1
    - Dst: DNSDistPacketCache::insert
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:637,1
    - Dst: getFlagsFromDNSHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:637,1
    - Dst: DNSQuestion::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:637,1
    - Dst: DNSDistPacketCache::get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:638,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:639,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:640,1
    - Dst: DNSDistPacketCache::get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:649,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:650,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:651,1
    - Dst: DNSDistPacketCache::insert
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:653,1
    - Dst: getFlagsFromDNSHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:653,1
    - Dst: DNSQuestion::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:653,1
    - Dst: DNSDistPacketCache::get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:654,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:655,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:656,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:664,1
    - Dst: DNSDistPacketCache::get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:675,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:676,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:677,1
    - Dst: DNSDistPacketCache::insert
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:679,1
    - Dst: getFlagsFromDNSHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:679,1
    - Dst: DNSQuestion::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:679,1
    - Dst: DNSDistPacketCache::get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:680,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:681,1
    - Dst: DNSDistPacketCache::get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:690,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:691,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:692,1
    - Dst: DNSDistPacketCache::insert
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:694,1
    - Dst: getFlagsFromDNSHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:694,1
    - Dst: DNSQuestion::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:694,1
    - Dst: DNSDistPacketCache::get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:695,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:696,1
    - Dst: PacketBuffer::clear
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:701,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:704,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:705,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:706,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:707,1
    - Dst: GenericDNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:709,1
    - Dst: GenericDNSPacketWriter::xfrCAWithoutPort
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:711,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:713,1
    - Dst: BOOST_REQUIRE_GT
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:716,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:716,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:722,1
    - Dst: DNSDistPacketCache::get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:733,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:734,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:735,1
    - Dst: DNSDistPacketCache::insert
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:737,1
    - Dst: getFlagsFromDNSHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:737,1
    - Dst: DNSQuestion::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:737,1
    - Dst: DNSDistPacketCache::get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:738,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:739,1
    - Dst: DNSDistPacketCache::get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:748,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:749,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:750,1
    - Dst: DNSDistPacketCache::insert
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:752,1
    - Dst: getFlagsFromDNSHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:752,1
    - Dst: DNSQuestion::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:752,1
    - Dst: DNSDistPacketCache::get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:753,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:754,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 72
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 757
      start: 586
    functionDepth: 1
    functionLinenumber: 586
    functionLinenumberEnd: 757
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc
    functionUses: 0
    functionsReached:
    - DNSDistPacketCache::get
    - GenericDNSPacketWriter::xfrCAWithoutPort
    - GenericDNSPacketWriter::startRecord
    - GenericDNSPacketWriter::getHeader
    - DNSName
    - BOOST_CHECK_EQUAL
    - GenericDNSPacketWriter::commit
    - PacketBuffer::size
    - getFlagsFromDNSHeader
    - BOOST_REQUIRE_GT
    - BOOST_CHECK
    - DNSQuestion::getHeader
    - PacketBuffer::clear
    - DNSDistPacketCache::insert
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_PacketCacheMaximumSize)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:775,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:775,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:775,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:778,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:782,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:783,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:784,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:785,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:785,1
    - Dst: GenericDNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:786,1
    - Dst: GenericDNSPacketWriter::xfr32BitInt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:787,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:788,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:793,1
    - Dst: insert
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:795,1
    - Dst: getFlagsFromDNSHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:795,1
    - Dst: DNSQuestion::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:795,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 22
    argCount: 1
    argNames:
    - offset
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 802
      start: 764
    functionDepth: 1
    functionLinenumber: 764
    functionLinenumberEnd: 802
    functionName: threadMangler
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc
    functionUses: 0
    functionsReached:
    - std::to_string
    - GenericDNSPacketWriter::startRecord
    - GenericDNSPacketWriter::getHeader
    - DNSName
    - get
    - GenericDNSPacketWriter::commit
    - getFlagsFromDNSHeader
    - GenericDNSPacketWriter::xfr32BitInt
    - insert
    - DNSQuestion::getHeader
    linkageType: ''
    returnType: void
    signature: void threadMangler(unsigned int offset)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:811,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:817,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:817,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:817,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:820,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:825,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 1
    argNames:
    - offset
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 835
      start: 806
    functionDepth: 1
    functionLinenumber: 806
    functionLinenumberEnd: 835
    functionName: threadReader
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc
    functionUses: 0
    functionsReached:
    - GenericDNSPacketWriter::getHeader
    - std::to_string
    - DNSName
    - get
    linkageType: ''
    returnType: void
    signature: void threadReader(unsigned int offset)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::vector::reserve
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:841,1
    - Dst: std::vector::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:843,1
    - Dst: join
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:847,1
    - Dst: std::vector::clear
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:850,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:852,1
    - Dst: getSize
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:852,1
    - Dst: getDeferredInserts
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:852,1
    - Dst: getInsertCollisions
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:852,1
    - Dst: BOOST_CHECK_SMALL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:853,1
    - Dst: getInsertCollisions
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:853,1
    - Dst: std::vector::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:856,1
    - Dst: join
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:860,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:863,1
    - Dst: getDeferredInserts
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:863,1
    - Dst: getDeferredLookups
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:863,1
    - Dst: getInsertCollisions
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:863,1
    - Dst: load
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:863,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 869
      start: 837
    functionDepth: 1
    functionLinenumber: 837
    functionLinenumberEnd: 869
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc
    functionUses: 0
    functionsReached:
    - load
    - getInsertCollisions
    - BOOST_CHECK_SMALL
    - std::vector::emplace_back
    - BOOST_CHECK_EQUAL
    - getSize
    - std::vector::reserve
    - join
    - getDeferredLookups
    - getDeferredInserts
    - BOOST_CHECK
    - std::vector::clear
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_PacketCacheThreaded)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:886,1
    - Dst: DNSDistPacketCache::getSize
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:886,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:891,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:904,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:905,1
    - Dst: EDNSSubnetOpts::setSource
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:908,1
    - Dst: Netmask
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:908,1
    - Dst: GenericDNSPacketWriter<PacketBuffer>::optvect_t::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:909,1
    - Dst: EDNSSubnetOpts::makeOptString
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:909,1
    - Dst: GenericDNSPacketWriter::addOpt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:910,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:911,1
    - Dst: InternalQueryState::queryRealTime::start
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:914,1
    - Dst: DNSDistPacketCache::get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:916,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:917,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:918,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:919,1
    - Dst: std::optional::toString
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:919,1
    - Dst: EDNSSubnetOpts::getSource
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:919,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:923,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:924,1
    - Dst: GenericDNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:925,1
    - Dst: GenericDNSPacketWriter::xfrCAWithoutPort
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:927,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:928,1
    - Dst: GenericDNSPacketWriter::addOpt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:929,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:930,1
    - Dst: DNSDistPacketCache::insert
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:932,1
    - Dst: getFlagsFromDNSHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:932,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:932,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:933,1
    - Dst: DNSDistPacketCache::getSize
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:933,1
    - Dst: DNSDistPacketCache::get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:935,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:936,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:937,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:938,1
    - Dst: std::optional::toString
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:938,1
    - Dst: EDNSSubnetOpts::getSource
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:938,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:946,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:947,1
    - Dst: EDNSSubnetOpts::setSource
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:950,1
    - Dst: Netmask
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:950,1
    - Dst: GenericDNSPacketWriter<PacketBuffer>::optvect_t::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:951,1
    - Dst: EDNSSubnetOpts::makeOptString
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:951,1
    - Dst: GenericDNSPacketWriter::addOpt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:952,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:953,1
    - Dst: InternalQueryState::queryRealTime::start
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:956,1
    - Dst: DNSDistPacketCache::get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:958,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:959,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:960,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:961,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:962,1
    - Dst: std::optional::toString
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:962,1
    - Dst: EDNSSubnetOpts::getSource
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:962,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:963,1
    - Dst: DNSDistPacketCache::getLookupCollisions
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:963,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:985,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:986,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:987,1
    - Dst: Netmask
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:988,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:988,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:988,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:988,1
    - Dst: GenericDNSPacketWriter<PacketBuffer>::optvect_t::clear
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:989,1
    - Dst: GenericDNSPacketWriter<PacketBuffer>::optvect_t::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:990,1
    - Dst: makeEDNSSubnetOptsString
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:990,1
    - Dst: GenericDNSPacketWriter::addOpt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:991,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:992,1
    - Dst: DNSDistPacketCache::getKey
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:993,1
    - Dst: InternalQueryState::qname::toDNSString
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:993,1
    - Dst: InternalQueryState::qname::wirelength
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:993,1
    - Dst: std::map::emplace
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:994,1
    - Dst: toString
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:998,1
    - Dst: EDNSSubnetOpts::source::toString
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:998,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 70
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1009
      start: 871
    functionDepth: 1
    functionLinenumber: 871
    functionLinenumberEnd: 1009
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc
    functionUses: 0
    functionsReached:
    - toString
    - DNSDistPacketCache::get
    - std::to_string
    - std::optional::toString
    - GenericDNSPacketWriter::getHeader
    - GenericDNSPacketWriter<PacketBuffer>::optvect_t::emplace_back
    - getFlagsFromDNSHeader
    - EDNSSubnetOpts::source::toString
    - GenericDNSPacketWriter::xfrCAWithoutPort
    - GenericDNSPacketWriter::startRecord
    - InternalQueryState::qname::toDNSString
    - std::map::emplace
    - BOOST_REQUIRE
    - GenericDNSPacketWriter<PacketBuffer>::optvect_t::clear
    - Netmask
    - DNSDistPacketCache::getLookupCollisions
    - EDNSSubnetOpts::setSource
    - DNSName
    - EDNSSubnetOpts::getSource
    - DNSDistPacketCache::insert
    - InternalQueryState::qname::wirelength
    - GenericDNSPacketWriter::addOpt
    - DNSDistPacketCache::getKey
    - DNSDistPacketCache::getSize
    - BOOST_CHECK_EQUAL
    - makeEDNSSubnetOptsString
    - GenericDNSPacketWriter::commit
    - InternalQueryState::queryRealTime::start
    - EDNSSubnetOpts::makeOptString
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_PCCollision)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1026,1
    - Dst: DNSDistPacketCache::getSize
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1026,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1031,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1043,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1044,1
    - Dst: GenericDNSPacketWriter::addOpt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1045,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1046,1
    - Dst: InternalQueryState::queryRealTime::start
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1049,1
    - Dst: DNSDistPacketCache::get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1052,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1053,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1057,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1058,1
    - Dst: GenericDNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1059,1
    - Dst: GenericDNSPacketWriter::xfrCAWithoutPort
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1061,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1062,1
    - Dst: GenericDNSPacketWriter::addOpt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1063,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1064,1
    - Dst: DNSDistPacketCache::insert
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1066,1
    - Dst: getFlagsFromDNSHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1066,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1066,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1067,1
    - Dst: DNSDistPacketCache::getSize
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1067,1
    - Dst: DNSDistPacketCache::get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1069,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1070,1
    - Dst: DNSDistPacketCache::get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1072,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1073,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 27
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1075
      start: 1011
    functionDepth: 1
    functionLinenumber: 1011
    functionLinenumberEnd: 1075
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc
    functionUses: 0
    functionsReached:
    - GenericDNSPacketWriter::addOpt
    - DNSDistPacketCache::get
    - GenericDNSPacketWriter::xfrCAWithoutPort
    - GenericDNSPacketWriter::startRecord
    - DNSDistPacketCache::getSize
    - GenericDNSPacketWriter::getHeader
    - DNSName
    - BOOST_CHECK_EQUAL
    - GenericDNSPacketWriter::commit
    - getFlagsFromDNSHeader
    - InternalQueryState::queryRealTime::start
    - DNSDistPacketCache::insert
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_PCDNSSECCollision)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1085,1
    - Dst: DNSDistPacketCache::getSize
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1085,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1097,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1101,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1102,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1103,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1104,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1104,1
    - Dst: GenericDNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1107,1
    - Dst: GenericDNSPacketWriter::xfrCAWithoutPort
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1108,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1109,1
    - Dst: GenericDNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1113,1
    - Dst: GenericDNSPacketWriter::xfrCAWithoutPort
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1114,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1115,1
    - Dst: DNSDistPacketCache::insert
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1118,1
    - Dst: getFlagsFromDNSHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1118,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1118,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1119,1
    - Dst: DNSDistPacketCache::getSize
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1119,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1127,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1131,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1132,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1133,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1134,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1134,1
    - Dst: GenericDNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1137,1
    - Dst: GenericDNSPacketWriter::xfrCAWithoutPort
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1138,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1139,1
    - Dst: GenericDNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1143,1
    - Dst: GenericDNSPacketWriter::xfrCAWithoutPort
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1144,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1145,1
    - Dst: GenericDNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1149,1
    - Dst: GenericDNSPacketWriter::xfrCAWithoutPort
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1150,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1151,1
    - Dst: GenericDNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1155,1
    - Dst: GenericDNSPacketWriter::xfrCAWithoutPort
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1156,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1157,1
    - Dst: DNSDistPacketCache::insert
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1160,1
    - Dst: getFlagsFromDNSHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1160,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1160,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1161,1
    - Dst: DNSDistPacketCache::getSize
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1161,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1169,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1173,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1174,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1175,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1176,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1176,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1177,1
    - Dst: GenericDNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1178,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1179,1
    - Dst: GenericDNSPacketWriter::addOpt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1180,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1181,1
    - Dst: DNSDistPacketCache::insert
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1183,1
    - Dst: getFlagsFromDNSHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1183,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1183,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1184,1
    - Dst: DNSDistPacketCache::getSize
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1184,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1192,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1196,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1197,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1198,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1199,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1199,1
    - Dst: GenericDNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1202,1
    - Dst: GenericDNSPacketWriter::xfrCAWithoutPort
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1203,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1204,1
    - Dst: GenericDNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1208,1
    - Dst: GenericDNSPacketWriter::xfrCAWithoutPort
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1209,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1210,1
    - Dst: DNSDistPacketCache::insert
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1213,1
    - Dst: getFlagsFromDNSHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1213,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1213,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1214,1
    - Dst: DNSDistPacketCache::getSize
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1214,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1222,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1226,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1227,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1228,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1229,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1229,1
    - Dst: GenericDNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1232,1
    - Dst: GenericDNSPacketWriter::xfrCAWithoutPort
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1233,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1234,1
    - Dst: DNSDistPacketCache::insert
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1237,1
    - Dst: getFlagsFromDNSHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1237,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1237,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1238,1
    - Dst: DNSDistPacketCache::getSize
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1238,1
    - Dst: DNSDistPacketCache::getDomainsContainingRecords
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1242,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1242,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1243,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1243,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1244,1
    - Dst: auto::count
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1244,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1244,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1245,1
    - Dst: auto::count
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1245,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1245,1
    - Dst: DNSDistPacketCache::getDomainsContainingRecords
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1248,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1248,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1249,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1249,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1250,1
    - Dst: auto::count
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1250,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1250,1
    - Dst: DNSDistPacketCache::getDomainsContainingRecords
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1253,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1253,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1254,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1254,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1255,1
    - Dst: auto::count
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1255,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1255,1
    - Dst: DNSDistPacketCache::getDomainsContainingRecords
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1258,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1258,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1259,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1259,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1260,1
    - Dst: auto::count
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1260,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1260,1
    - Dst: DNSDistPacketCache::getDomainsContainingRecords
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1263,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1263,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1264,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1264,1
    - Dst: DNSDistPacketCache::getDomainsContainingRecords
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1267,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1267,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1268,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1268,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1269,1
    - Dst: auto::count
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1269,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1269,1
    - Dst: DNSDistPacketCache::getDomainsContainingRecords
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1272,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1272,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1273,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1273,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1274,1
    - Dst: auto::count
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1274,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1274,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1275,1
    - Dst: auto::count
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1275,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1275,1
    - Dst: DNSDistPacketCache::getDomainsContainingRecords
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1278,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1278,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1279,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1279,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1280,1
    - Dst: auto::count
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1280,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1280,1
    - Dst: DNSDistPacketCache::getRecordsForDomain
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1284,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1284,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1285,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1285,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1286,1
    - Dst: auto::count
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1286,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1286,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1287,1
    - Dst: auto::count
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1287,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1287,1
    - Dst: DNSDistPacketCache::getRecordsForDomain
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1291,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1291,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1292,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1292,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1293,1
    - Dst: auto::count
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1293,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1293,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1294,1
    - Dst: auto::count
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1294,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1294,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1295,1
    - Dst: auto::count
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1295,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1295,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1296,1
    - Dst: auto::count
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1296,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1296,1
    - Dst: DNSDistPacketCache::getRecordsForDomain
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1300,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1300,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1301,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1301,1
    - Dst: DNSDistPacketCache::getRecordsForDomain
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1305,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1305,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1306,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1306,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1307,1
    - Dst: auto::count
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1307,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1307,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1308,1
    - Dst: auto::count
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1308,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1308,1
    - Dst: DNSDistPacketCache::getRecordsForDomain
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1312,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1312,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1313,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1313,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1314,1
    - Dst: auto::count
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1314,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1314,1
    - Dst: DNSDistPacketCache::getRecordsForDomain
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1318,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1318,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1319,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1319,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 129
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1321
      start: 1077
    functionDepth: 2
    functionLinenumber: 1077
    functionLinenumberEnd: 1321
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc
    functionUses: 0
    functionsReached:
    - DNSDistPacketCache::getRecordsForDomain
    - GenericDNSPacketWriter::addOpt
    - GenericDNSPacketWriter::xfrCAWithoutPort
    - GenericDNSPacketWriter::startRecord
    - DNSDistPacketCache::getSize
    - GenericDNSPacketWriter::getHeader
    - BOOST_CHECK_EQUAL
    - DNSName
    - GenericDNSPacketWriter::commit
    - getFlagsFromDNSHeader
    - DNSDistPacketCache::getDomainsContainingRecords
    - auto::count
    - auto::size
    - DNSDistPacketCache::insert
    - ComboAddress
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_PacketCacheInspection)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1331,1
    - Dst: DNSDistPacketCache::getSize
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1331,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1340,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1344,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1348,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1349,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1350,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1351,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1351,1
    - Dst: GenericDNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1352,1
    - Dst: GenericDNSPacketWriter::xfr32BitInt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1353,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1354,1
    - Dst: DNSDistPacketCache::get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1359,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1360,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1361,1
    - Dst: DNSDistPacketCache::insert
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1363,1
    - Dst: getFlagsFromDNSHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1363,1
    - Dst: DNSQuestion::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1363,1
    - Dst: DNSDistPacketCache::get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1364,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1364,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1365,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 20
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1367
      start: 1323
    functionDepth: 1
    functionLinenumber: 1323
    functionLinenumberEnd: 1367
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc
    functionUses: 0
    functionsReached:
    - DNSDistPacketCache::get
    - GenericDNSPacketWriter::startRecord
    - DNSDistPacketCache::getSize
    - GenericDNSPacketWriter::getHeader
    - DNSName
    - BOOST_CHECK_EQUAL
    - GenericDNSPacketWriter::commit
    - getFlagsFromDNSHeader
    - GenericDNSPacketWriter::xfr32BitInt
    - BOOST_CHECK
    - DNSQuestion::getHeader
    - DNSDistPacketCache::insert
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_PacketCacheXFR)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1386,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1387,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1388,1
    - Dst: GenericDNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1393,1
    - Dst: GenericDNSPacketWriter::xfrName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1394,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1395,1
    - Dst: GenericDNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1400,1
    - Dst: GenericDNSPacketWriter::xfrCAWithoutPort
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1401,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1402,1
    - Dst: GenericDNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1405,1
    - Dst: GenericDNSPacketWriter::xfrCAWithoutPort
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1406,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1407,1
    - Dst: GenericDNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1413,1
    - Dst: GenericDNSPacketWriter::xfrCAWithoutPort
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1414,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1414,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1415,1
    - Dst: GenericDNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1419,1
    - Dst: GenericDNSPacketWriter::xfrCAWithoutPort
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1420,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1420,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1421,1
    - Dst: GenericDNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1428,1
    - Dst: GenericDNSPacketWriter::xfrCAWithoutPort
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1429,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1429,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1430,1
    - Dst: GenericDNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1433,1
    - Dst: GenericDNSPacketWriter::xfrCAWithoutPort
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1434,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1434,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1435,1
    - Dst: EDNSSubnetOpts::setSource
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1442,1
    - Dst: Netmask
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1442,1
    - Dst: GenericDNSPacketWriter<PacketBuffer>::optvect_t::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1443,1
    - Dst: EDNSSubnetOpts::makeOptString
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1443,1
    - Dst: GenericDNSPacketWriter::addOpt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1444,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1445,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 50
    argCount: 5
    argNames:
    - ' addresses'
    - ' qname'
    - ' response'
    - qtype
    - testtype
    argTypes:
    - std::array<ComboAddress, 4>
    - DNSName
    - PacketBuffer
    - QType
    - PacketCacheShuffleTestType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1447
      start: 1378
    functionDepth: 1
    functionLinenumber: 1378
    functionLinenumberEnd: 1447
    functionName: create_shuffle_response
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc
    functionUses: 0
    functionsReached:
    - Netmask
    - GenericDNSPacketWriter::addOpt
    - GenericDNSPacketWriter::xfrCAWithoutPort
    - GenericDNSPacketWriter::startRecord
    - GenericDNSPacketWriter::getHeader
    - GenericDNSPacketWriter<PacketBuffer>::optvect_t::emplace_back
    - EDNSSubnetOpts::setSource
    - GenericDNSPacketWriter::commit
    - GenericDNSPacketWriter::xfrName
    - EDNSSubnetOpts::makeOptString
    - ComboAddress
    linkageType: ''
    returnType: void
    signature: "void create_shuffle_response(\n  const std::array<ComboAddress, 4>&
      addresses,\n  const DNSName& qname,\n  PacketBuffer& response,\n  const QType
      qtype,\n  const PacketCacheShuffleTestType testtype)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1461,1
    - Dst: DNSDistPacketCache::getSize
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1461,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1469,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1474,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1475,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1476,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1477,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1482,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1483,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1484,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1485,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1493,1
    - Dst: create_shuffle_response
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1496,1
    - Dst: DNSDistPacketCache::get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1501,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1502,1
    - Dst: DNSDistPacketCache::insert
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1504,1
    - Dst: getFlagsFromDNSHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1504,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1504,1
    - Dst: std::array::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1539,1
    - Dst: std::array::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1542,1
    - Dst: std::array::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1542,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1542,1
    - Dst: create_shuffle_response
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1545,1
    - Dst: std::array::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1545,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1559,1
    - Dst: DNSDistPacketCache::get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1564,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1565,1
    - Dst: std::array::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1569,1
    - Dst: DNSQuestion::getData
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1570,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1570,1
    - Dst: memcmp
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1571,1
    - Dst: DNSQuestion::getData
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1571,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1571,1
    - Dst: DNSQuestion::getData
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1571,1
    - Dst: std::array::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1574,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1578,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1581,1
    - Dst: std::array::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1581,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 38
    argCount: 2
    argNames:
    - testqtype
    - testtype
    argTypes:
    - QType
    - PacketCacheShuffleTestType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1583
      start: 1449
    functionDepth: 2
    functionLinenumber: 1449
    functionLinenumberEnd: 1583
    functionName: test_packetcache_shuffle
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc
    functionUses: 0
    functionsReached:
    - memcmp
    - DNSDistPacketCache::get
    - at
    - DNSQuestion::getData
    - DNSDistPacketCache::getSize
    - GenericDNSPacketWriter::getHeader
    - DNSName
    - BOOST_CHECK_EQUAL
    - size
    - getFlagsFromDNSHeader
    - create_shuffle_response
    - data
    - BOOST_CHECK
    - std::array::at
    - DNSDistPacketCache::insert
    - ComboAddress
    linkageType: ''
    returnType: void
    signature: "void test_packetcache_shuffle(\n  const QType testqtype,\n  const
      PacketCacheShuffleTestType testtype)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_packetcache_shuffle
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1587,1
    - Dst: test_packetcache_shuffle
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1588,1
    - Dst: test_packetcache_shuffle
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1589,1
    - Dst: test_packetcache_shuffle
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1590,1
    - Dst: test_packetcache_shuffle
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1591,1
    - Dst: test_packetcache_shuffle
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1593,1
    - Dst: test_packetcache_shuffle
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1594,1
    - Dst: test_packetcache_shuffle
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1595,1
    - Dst: test_packetcache_shuffle
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1596,1
    - Dst: test_packetcache_shuffle
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc:1597,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1598
      start: 1585
    functionDepth: 3
    functionLinenumber: 1585
    functionLinenumberEnd: 1598
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc
    functionUses: 0
    functionsReached:
    - test_packetcache_shuffle
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_PacketCacheShuffle)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::configuration::updateImmutableConfiguration
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:38,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 4
    argNames:
    - maxTCPConnectionsRatePerClient
    - tcpConnectionsRatePerClientInterval
    - maxTCPConnectionsPerClient
    - banDuration
    argTypes:
    - uint64_t
    - uint64_t
    - uint64_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 36
    functionDepth: 1
    functionLinenumber: 36
    functionLinenumberEnd: 47
    functionName: initConfiguration
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc
    functionUses: 0
    functionsReached:
    - dnsdist::configuration::updateImmutableConfiguration
    linkageType: ''
    returnType: void
    signature: void initConfiguration(uint64_t maxTCPConnectionsRatePerClient, uint64_t
      tcpConnectionsRatePerClientInterval, uint64_t maxTCPConnectionsPerClient, uint32_t
      banDuration, uint64_t maxTLSNewSessionsRatePerClient = 0U, uint64_t maxTLSResumedSessionsRatePerClient
      = 0U, uint32_t maxTCPReadIOsPerQuery = 50U)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::IncomingConcurrentTCPConnectionsManager::clear
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:53,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 51
    functionDepth: 0
    functionLinenumber: 51
    functionLinenumberEnd: 54
    functionName: TestFixture
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc
    functionUses: 0
    functionsReached:
    - dnsdist::IncomingConcurrentTCPConnectionsManager::clear
    linkageType: ''
    returnType: void
    signature: void TestFixture()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::IncomingConcurrentTCPConnectionsManager::clear
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:57,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 55
    functionDepth: 0
    functionLinenumber: 55
    functionLinenumberEnd: 58
    functionName: ~TestFixture()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc
    functionUses: 0
    functionsReached:
    - dnsdist::IncomingConcurrentTCPConnectionsManager::clear
    linkageType: ''
    returnType: void
    signature: void ~TestFixture()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 59
    functionDepth: 0
    functionLinenumber: 59
    functionLinenumberEnd: 59
    functionName: TestFixture
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void TestFixture(const TestFixture&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 60
    functionDepth: 0
    functionLinenumber: 60
    functionLinenumberEnd: 60
    functionName: TestFixture
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void TestFixture(TestFixture&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 61
    functionDepth: 0
    functionLinenumber: 61
    functionLinenumberEnd: 61
    functionName: '& operator=(const TestFixture&)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: TestFixture
    signature: TestFixture & operator=(const TestFixture&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 62
    functionDepth: 0
    functionLinenumber: 62
    functionLinenumberEnd: 62
    functionName: '& operator=(TestFixture&&)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: TestFixture
    signature: TestFixture & operator=(TestFixture&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: initConfiguration
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:73,1
    - Dst: time
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:75,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:77,1
    - Dst: dnsdist::IncomingConcurrentTCPConnectionsManager::getNumberOfEntries
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:77,1
    - Dst: dnsdist::IncomingConcurrentTCPConnectionsManager::accountNewTCPConnection
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:79,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:80,1
    - Dst: dnsdist::IncomingConcurrentTCPConnectionsManager::accountClosedTCPConnection
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:81,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:82,1
    - Dst: dnsdist::IncomingConcurrentTCPConnectionsManager::isClientOverThreshold
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:82,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:84,1
    - Dst: dnsdist::IncomingConcurrentTCPConnectionsManager::getNumberOfEntries
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:84,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 65
    functionDepth: 2
    functionLinenumber: 65
    functionLinenumberEnd: 85
    functionName: BOOST_FIXTURE_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc
    functionUses: 0
    functionsReached:
    - dnsdist::IncomingConcurrentTCPConnectionsManager::accountClosedTCPConnection
    - time
    - dnsdist::IncomingConcurrentTCPConnectionsManager::accountNewTCPConnection
    - BOOST_REQUIRE
    - dnsdist::IncomingConcurrentTCPConnectionsManager::isClientOverThreshold
    - dnsdist::IncomingConcurrentTCPConnectionsManager::getNumberOfEntries
    - BOOST_REQUIRE_EQUAL
    - initConfiguration
    linkageType: ''
    returnType: void
    signature: void BOOST_FIXTURE_TEST_CASE(test_No_Rate_Limiting, TestFixture)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: initConfiguration
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:93,1
    - Dst: time
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:94,1
    - Dst: dnsdist::IncomingConcurrentTCPConnectionsManager::accountNewTCPConnection
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:100,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:101,1
    - Dst: dnsdist::IncomingConcurrentTCPConnectionsManager::accountClosedTCPConnection
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:102,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:104,1
    - Dst: dnsdist::IncomingConcurrentTCPConnectionsManager::isClientOverThreshold
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:104,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:110,1
    - Dst: dnsdist::IncomingConcurrentTCPConnectionsManager::getNumberOfEntries
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:110,1
    - Dst: dnsdist::IncomingConcurrentTCPConnectionsManager::cleanup
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:113,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:114,1
    - Dst: dnsdist::IncomingConcurrentTCPConnectionsManager::getNumberOfEntries
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:114,1
    - Dst: dnsdist::IncomingConcurrentTCPConnectionsManager::cleanup
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:118,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:119,1
    - Dst: dnsdist::IncomingConcurrentTCPConnectionsManager::getNumberOfEntries
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:119,1
    - Dst: dnsdist::IncomingConcurrentTCPConnectionsManager::cleanup
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:123,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:124,1
    - Dst: dnsdist::IncomingConcurrentTCPConnectionsManager::getNumberOfEntries
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:124,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 19
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 125
      start: 87
    functionDepth: 2
    functionLinenumber: 87
    functionLinenumberEnd: 125
    functionName: BOOST_FIXTURE_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc
    functionUses: 0
    functionsReached:
    - dnsdist::IncomingConcurrentTCPConnectionsManager::accountClosedTCPConnection
    - time
    - dnsdist::IncomingConcurrentTCPConnectionsManager::accountNewTCPConnection
    - BOOST_REQUIRE
    - dnsdist::IncomingConcurrentTCPConnectionsManager::cleanup
    - dnsdist::IncomingConcurrentTCPConnectionsManager::isClientOverThreshold
    - dnsdist::IncomingConcurrentTCPConnectionsManager::getNumberOfEntries
    - BOOST_REQUIRE_EQUAL
    - initConfiguration
    linkageType: ''
    returnType: void
    signature: void BOOST_FIXTURE_TEST_CASE(test_Below_Rate, TestFixture)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: initConfiguration
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:133,1
    - Dst: dnsdist::IncomingConcurrentTCPConnectionsManager::clear
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:135,1
    - Dst: time
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:136,1
    - Dst: dnsdist::IncomingConcurrentTCPConnectionsManager::accountNewTCPConnection
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:142,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:143,1
    - Dst: dnsdist::IncomingConcurrentTCPConnectionsManager::accountClosedTCPConnection
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:144,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:146,1
    - Dst: dnsdist::IncomingConcurrentTCPConnectionsManager::isClientOverThreshold
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:146,1
    - Dst: dnsdist::IncomingConcurrentTCPConnectionsManager::accountNewTCPConnection
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:159,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:160,1
    - Dst: dnsdist::IncomingConcurrentTCPConnectionsManager::accountClosedTCPConnection
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:161,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:163,1
    - Dst: dnsdist::IncomingConcurrentTCPConnectionsManager::isClientOverThreshold
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:163,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 168
      start: 127
    functionDepth: 2
    functionLinenumber: 127
    functionLinenumberEnd: 168
    functionName: BOOST_FIXTURE_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc
    functionUses: 0
    functionsReached:
    - dnsdist::IncomingConcurrentTCPConnectionsManager::accountClosedTCPConnection
    - time
    - dnsdist::IncomingConcurrentTCPConnectionsManager::accountNewTCPConnection
    - dnsdist::IncomingConcurrentTCPConnectionsManager::clear
    - BOOST_REQUIRE
    - dnsdist::IncomingConcurrentTCPConnectionsManager::isClientOverThreshold
    - initConfiguration
    linkageType: ''
    returnType: void
    signature: void BOOST_FIXTURE_TEST_CASE(test_Below_Rate_Skipping_Bucket, TestFixture)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: initConfiguration
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:176,1
    - Dst: dnsdist::IncomingConcurrentTCPConnectionsManager::clear
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:178,1
    - Dst: time
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:179,1
    - Dst: dnsdist::IncomingConcurrentTCPConnectionsManager::accountNewTCPConnection
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:184,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:185,1
    - Dst: dnsdist::IncomingConcurrentTCPConnectionsManager::accountClosedTCPConnection
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:186,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:187,1
    - Dst: dnsdist::IncomingConcurrentTCPConnectionsManager::isClientOverThreshold
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:187,1
    - Dst: dnsdist::IncomingConcurrentTCPConnectionsManager::accountNewTCPConnection
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:196,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:197,1
    - Dst: dnsdist::IncomingConcurrentTCPConnectionsManager::accountClosedTCPConnection
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:198,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:200,1
    - Dst: dnsdist::IncomingConcurrentTCPConnectionsManager::isClientOverThreshold
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:200,1
    - Dst: dnsdist::IncomingConcurrentTCPConnectionsManager::accountNewTCPConnection
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:214,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:215,1
    - Dst: dnsdist::IncomingConcurrentTCPConnectionsManager::accountClosedTCPConnection
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:216,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:217,1
    - Dst: dnsdist::IncomingConcurrentTCPConnectionsManager::isClientOverThreshold
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:217,1
    - Dst: dnsdist::IncomingConcurrentTCPConnectionsManager::accountNewTCPConnection
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:220,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:221,1
    - Dst: dnsdist::IncomingConcurrentTCPConnectionsManager::accountNewTCPConnection
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:224,1
    - Dst: std::max
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:224,1
    - Dst: static_cast<uint64_t>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:224,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:225,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 26
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 226
      start: 170
    functionDepth: 2
    functionLinenumber: 170
    functionLinenumberEnd: 226
    functionName: BOOST_FIXTURE_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc
    functionUses: 0
    functionsReached:
    - dnsdist::IncomingConcurrentTCPConnectionsManager::accountClosedTCPConnection
    - time
    - static_cast<uint64_t>
    - dnsdist::IncomingConcurrentTCPConnectionsManager::accountNewTCPConnection
    - dnsdist::IncomingConcurrentTCPConnectionsManager::clear
    - BOOST_REQUIRE
    - std::max
    - dnsdist::IncomingConcurrentTCPConnectionsManager::isClientOverThreshold
    - initConfiguration
    linkageType: ''
    returnType: void
    signature: void BOOST_FIXTURE_TEST_CASE(test_Above_Rate_After_Being_Below, TestFixture)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: initConfiguration
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:234,1
    - Dst: dnsdist::IncomingConcurrentTCPConnectionsManager::clear
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:236,1
    - Dst: time
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:237,1
    - Dst: dnsdist::IncomingConcurrentTCPConnectionsManager::accountNewTCPConnection
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:241,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:242,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:244,1
    - Dst: dnsdist::IncomingConcurrentTCPConnectionsManager::isClientOverThreshold
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:244,1
    - Dst: dnsdist::IncomingConcurrentTCPConnectionsManager::accountNewTCPConnection
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:247,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:248,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:249,1
    - Dst: dnsdist::IncomingConcurrentTCPConnectionsManager::isClientOverThreshold
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:249,1
    - Dst: dnsdist::IncomingConcurrentTCPConnectionsManager::accountClosedTCPConnection
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:252,1
    - Dst: dnsdist::IncomingConcurrentTCPConnectionsManager::accountNewTCPConnection
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:253,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:254,1
    - Dst: dnsdist::IncomingConcurrentTCPConnectionsManager::accountClosedTCPConnection
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:255,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:256,1
    - Dst: dnsdist::IncomingConcurrentTCPConnectionsManager::isClientOverThreshold
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:256,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 257
      start: 228
    functionDepth: 2
    functionLinenumber: 228
    functionLinenumberEnd: 257
    functionName: BOOST_FIXTURE_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc
    functionUses: 0
    functionsReached:
    - dnsdist::IncomingConcurrentTCPConnectionsManager::accountClosedTCPConnection
    - time
    - dnsdist::IncomingConcurrentTCPConnectionsManager::accountNewTCPConnection
    - dnsdist::IncomingConcurrentTCPConnectionsManager::clear
    - BOOST_REQUIRE
    - dnsdist::IncomingConcurrentTCPConnectionsManager::isClientOverThreshold
    - initConfiguration
    linkageType: ''
    returnType: void
    signature: void BOOST_FIXTURE_TEST_CASE(test_Above_Max_Concurrent_Connections,
      TestFixture)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: initConfiguration
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:265,1
    - Dst: dnsdist::configuration::getImmutableConfiguration
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:266,1
    - Dst: BOOST_REQUIRE_GT
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:267,1
    - Dst: dnsdist::IncomingConcurrentTCPConnectionsManager::clear
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:269,1
    - Dst: time
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:270,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:273,1
    - Dst: static_cast<double>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:273,1
    - Dst: dnsdist::IncomingConcurrentTCPConnectionsManager::accountNewTCPConnection
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:274,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:275,1
    - Dst: dnsdist::IncomingConcurrentTCPConnectionsManager::accountNewTCPConnection
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:279,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:280,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:281,1
    - Dst: dnsdist::IncomingConcurrentTCPConnectionsManager::isClientOverThreshold
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:281,1
    - Dst: dnsdist::IncomingConcurrentTCPConnectionsManager::accountClosedTCPConnection
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:282,1
    - Dst: dnsdist::IncomingConcurrentTCPConnectionsManager::accountClosedTCPConnection
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:285,1
    - Dst: dnsdist::IncomingConcurrentTCPConnectionsManager::accountNewTCPConnection
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:286,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:287,1
    - Dst: dnsdist::IncomingConcurrentTCPConnectionsManager::accountClosedTCPConnection
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:288,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:289,1
    - Dst: dnsdist::IncomingConcurrentTCPConnectionsManager::isClientOverThreshold
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:289,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 290
      start: 259
    functionDepth: 2
    functionLinenumber: 259
    functionLinenumberEnd: 290
    functionName: BOOST_FIXTURE_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc
    functionUses: 0
    functionsReached:
    - static_cast<size_t>
    - static_cast<double>
    - dnsdist::IncomingConcurrentTCPConnectionsManager::accountClosedTCPConnection
    - time
    - dnsdist::IncomingConcurrentTCPConnectionsManager::accountNewTCPConnection
    - dnsdist::IncomingConcurrentTCPConnectionsManager::clear
    - BOOST_REQUIRE_GT
    - dnsdist::configuration::getImmutableConfiguration
    - BOOST_REQUIRE
    - dnsdist::IncomingConcurrentTCPConnectionsManager::isClientOverThreshold
    - initConfiguration
    linkageType: ''
    returnType: void
    signature: void BOOST_FIXTURE_TEST_CASE(test_Max_Concurrent_Connections_Overload_Threshold,
      TestFixture)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: initConfiguration
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:298,1
    - Dst: dnsdist::IncomingConcurrentTCPConnectionsManager::clear
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:300,1
    - Dst: time
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:301,1
    - Dst: dnsdist::IncomingConcurrentTCPConnectionsManager::accountNewTCPConnection
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:305,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:306,1
    - Dst: dnsdist::IncomingConcurrentTCPConnectionsManager::accountClosedTCPConnection
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:307,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:309,1
    - Dst: dnsdist::IncomingConcurrentTCPConnectionsManager::isClientOverThreshold
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:309,1
    - Dst: dnsdist::IncomingConcurrentTCPConnectionsManager::accountNewTCPConnection
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:312,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:313,1
    - Dst: dnsdist::IncomingConcurrentTCPConnectionsManager::accountNewTCPConnection
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:316,1
    - Dst: std::max
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:316,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:317,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 318
      start: 292
    functionDepth: 2
    functionLinenumber: 292
    functionLinenumberEnd: 318
    functionName: BOOST_FIXTURE_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc
    functionUses: 0
    functionsReached:
    - dnsdist::IncomingConcurrentTCPConnectionsManager::accountClosedTCPConnection
    - time
    - dnsdist::IncomingConcurrentTCPConnectionsManager::accountNewTCPConnection
    - dnsdist::IncomingConcurrentTCPConnectionsManager::clear
    - BOOST_REQUIRE
    - std::max
    - dnsdist::IncomingConcurrentTCPConnectionsManager::isClientOverThreshold
    - initConfiguration
    linkageType: ''
    returnType: void
    signature: void BOOST_FIXTURE_TEST_CASE(test_Above_Max_Connection_Rate, TestFixture)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: initConfiguration
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:327,1
    - Dst: time
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:329,1
    - Dst: dnsdist::IncomingConcurrentTCPConnectionsManager::accountNewTCPConnection
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:333,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:334,1
    - Dst: dnsdist::IncomingConcurrentTCPConnectionsManager::accountClosedTCPConnection
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:335,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:336,1
    - Dst: dnsdist::IncomingConcurrentTCPConnectionsManager::isClientOverThreshold
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:336,1
    - Dst: dnsdist::IncomingConcurrentTCPConnectionsManager::accountNewTCPConnection
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:341,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:342,1
    - Dst: dnsdist::IncomingConcurrentTCPConnectionsManager::accountTLSResumedSession
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:343,1
    - Dst: dnsdist::IncomingConcurrentTCPConnectionsManager::accountClosedTCPConnection
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:344,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:345,1
    - Dst: dnsdist::IncomingConcurrentTCPConnectionsManager::isClientOverThreshold
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:345,1
    - Dst: dnsdist::IncomingConcurrentTCPConnectionsManager::accountNewTCPConnection
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:350,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:351,1
    - Dst: dnsdist::IncomingConcurrentTCPConnectionsManager::accountTLSNewSession
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:352,1
    - Dst: dnsdist::IncomingConcurrentTCPConnectionsManager::accountClosedTCPConnection
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:353,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:354,1
    - Dst: dnsdist::IncomingConcurrentTCPConnectionsManager::isClientOverThreshold
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:354,1
    - Dst: dnsdist::IncomingConcurrentTCPConnectionsManager::accountNewTCPConnection
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:356,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:357,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 20
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 358
      start: 320
    functionDepth: 2
    functionLinenumber: 320
    functionLinenumberEnd: 358
    functionName: BOOST_FIXTURE_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc
    functionUses: 0
    functionsReached:
    - dnsdist::IncomingConcurrentTCPConnectionsManager::accountTLSResumedSession
    - dnsdist::IncomingConcurrentTCPConnectionsManager::accountClosedTCPConnection
    - time
    - dnsdist::IncomingConcurrentTCPConnectionsManager::accountNewTCPConnection
    - dnsdist::IncomingConcurrentTCPConnectionsManager::accountTLSNewSession
    - BOOST_REQUIRE
    - dnsdist::IncomingConcurrentTCPConnectionsManager::isClientOverThreshold
    - initConfiguration
    linkageType: ''
    returnType: void
    signature: void BOOST_FIXTURE_TEST_CASE(test_TLS_New_Without_TCP_Rate_Limiting,
      TestFixture)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: initConfiguration
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:368,1
    - Dst: time
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:370,1
    - Dst: dnsdist::IncomingConcurrentTCPConnectionsManager::accountNewTCPConnection
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:374,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:375,1
    - Dst: dnsdist::IncomingConcurrentTCPConnectionsManager::accountClosedTCPConnection
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:376,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:377,1
    - Dst: dnsdist::IncomingConcurrentTCPConnectionsManager::isClientOverThreshold
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:377,1
    - Dst: dnsdist::IncomingConcurrentTCPConnectionsManager::accountNewTCPConnection
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:382,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:383,1
    - Dst: dnsdist::IncomingConcurrentTCPConnectionsManager::accountTLSNewSession
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:384,1
    - Dst: dnsdist::IncomingConcurrentTCPConnectionsManager::accountClosedTCPConnection
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:385,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:386,1
    - Dst: dnsdist::IncomingConcurrentTCPConnectionsManager::isClientOverThreshold
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:386,1
    - Dst: dnsdist::IncomingConcurrentTCPConnectionsManager::accountNewTCPConnection
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:391,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:392,1
    - Dst: dnsdist::IncomingConcurrentTCPConnectionsManager::accountTLSResumedSession
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:393,1
    - Dst: dnsdist::IncomingConcurrentTCPConnectionsManager::accountClosedTCPConnection
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:394,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:395,1
    - Dst: dnsdist::IncomingConcurrentTCPConnectionsManager::isClientOverThreshold
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:395,1
    - Dst: dnsdist::IncomingConcurrentTCPConnectionsManager::accountNewTCPConnection
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:397,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:398,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 20
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 399
      start: 360
    functionDepth: 2
    functionLinenumber: 360
    functionLinenumberEnd: 399
    functionName: BOOST_FIXTURE_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc
    functionUses: 0
    functionsReached:
    - dnsdist::IncomingConcurrentTCPConnectionsManager::accountTLSResumedSession
    - dnsdist::IncomingConcurrentTCPConnectionsManager::accountClosedTCPConnection
    - time
    - dnsdist::IncomingConcurrentTCPConnectionsManager::accountNewTCPConnection
    - dnsdist::IncomingConcurrentTCPConnectionsManager::accountTLSNewSession
    - BOOST_REQUIRE
    - dnsdist::IncomingConcurrentTCPConnectionsManager::isClientOverThreshold
    - initConfiguration
    linkageType: ''
    returnType: void
    signature: void BOOST_FIXTURE_TEST_CASE(test_TLS_Resumed_Without_TCP_Rate_Limiting,
      TestFixture)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: initConfiguration
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:407,1
    - Dst: time
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:408,1
    - Dst: dnsdist::IncomingConcurrentTCPConnectionsManager::accountNewTCPConnection
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:412,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:413,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:415,1
    - Dst: dnsdist::IncomingConcurrentTCPConnectionsManager::getNumberOfEntries
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:415,1
    - Dst: dnsdist::IncomingConcurrentTCPConnectionsManager::cleanup
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:419,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:420,1
    - Dst: dnsdist::IncomingConcurrentTCPConnectionsManager::getNumberOfEntries
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:420,1
    - Dst: dnsdist::IncomingConcurrentTCPConnectionsManager::accountClosedTCPConnection
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:423,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:424,1
    - Dst: dnsdist::IncomingConcurrentTCPConnectionsManager::getNumberOfEntries
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:424,1
    - Dst: dnsdist::IncomingConcurrentTCPConnectionsManager::cleanup
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:428,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:429,1
    - Dst: dnsdist::IncomingConcurrentTCPConnectionsManager::getNumberOfEntries
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc:429,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 430
      start: 401
    functionDepth: 2
    functionLinenumber: 401
    functionLinenumberEnd: 430
    functionName: BOOST_FIXTURE_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc
    functionUses: 0
    functionsReached:
    - dnsdist::IncomingConcurrentTCPConnectionsManager::accountClosedTCPConnection
    - time
    - dnsdist::IncomingConcurrentTCPConnectionsManager::accountNewTCPConnection
    - BOOST_REQUIRE
    - dnsdist::IncomingConcurrentTCPConnectionsManager::cleanup
    - dnsdist::IncomingConcurrentTCPConnectionsManager::getNumberOfEntries
    - BOOST_REQUIRE_EQUAL
    - initConfiguration
    linkageType: ''
    returnType: void
    signature: void BOOST_FIXTURE_TEST_CASE(test_Live_Connections_Cleanup, TestFixture)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynbpf.hh:37,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' bpf'
    argTypes:
    - std::shared_ptr<BPFFilter>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 35
    functionDepth: 0
    functionLinenumber: 35
    functionLinenumberEnd: 38
    functionName: DynBPFFilter::DynBPFFilter
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-dynbpf.hh
    functionUses: 0
    functionsReached:
    - lock
    linkageType: ''
    returnType: void
    signature: void DynBPFFilter(std::shared_ptr<BPFFilter>& bpf)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 39
    functionDepth: 0
    functionLinenumber: 39
    functionLinenumberEnd: 41
    functionName: ~DynBPFFilter()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-dynbpf.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~DynBPFFilter()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynbpf.hh:44,1
    - Dst: addMask
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynbpf.hh:44,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' range'
    argTypes:
    - Netmask
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 42
    functionDepth: 0
    functionLinenumber: 42
    functionLinenumberEnd: 45
    functionName: DynBPFFilter::excludeRange
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-dynbpf.hh
    functionUses: 0
    functionsReached:
    - addMask
    - lock
    linkageType: ''
    returnType: void
    signature: void excludeRange(const Netmask& range)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynbpf.hh:48,1
    - Dst: addMask
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynbpf.hh:48,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' range'
    argTypes:
    - Netmask
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 46
    functionDepth: 0
    functionLinenumber: 46
    functionLinenumberEnd: 49
    functionName: DynBPFFilter::includeRange
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-dynbpf.hh
    functionUses: 0
    functionsReached:
    - addMask
    - lock
    linkageType: ''
    returnType: void
    signature: void includeRange(const Netmask& range)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - ' addr'
    - until
    argTypes:
    - ComboAddress
    - struct timespec
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 58
    functionDepth: 0
    functionLinenumber: 58
    functionLinenumberEnd: 61
    functionName: DynBPFFilter::BlockEntry
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-dynbpf.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void BlockEntry(const ComboAddress& addr, const struct timespec until)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 40
    functionDepth: 0
    functionLinenumber: 40
    functionLinenumberEnd: 40
    functionName: FrameStreamLogger::FrameStreamLogger
    functionSourceFile: /src/pdns/pdns/dnsdistdist/fstrm_logger.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void FrameStreamLogger(const FrameStreamLogger&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 41
    functionDepth: 0
    functionLinenumber: 41
    functionLinenumberEnd: 41
    functionName: FrameStreamLogger::FrameStreamLogger
    functionSourceFile: /src/pdns/pdns/dnsdistdist/fstrm_logger.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void FrameStreamLogger(FrameStreamLogger&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 42
    functionDepth: 0
    functionLinenumber: 42
    functionLinenumberEnd: 42
    functionName: '& operator=(const FrameStreamLogger&)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/fstrm_logger.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: FrameStreamLogger
    signature: FrameStreamLogger & operator=(const FrameStreamLogger&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 43
    functionName: '& operator=(FrameStreamLogger&&)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/fstrm_logger.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: FrameStreamLogger
    signature: FrameStreamLogger & operator=(FrameStreamLogger&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 47
    functionDepth: 0
    functionLinenumber: 47
    functionLinenumberEnd: 50
    functionName: FrameStreamLogger::address
    functionSourceFile: /src/pdns/pdns/dnsdistdist/fstrm_logger.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string address() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 52
    functionDepth: 0
    functionLinenumber: 52
    functionLinenumberEnd: 55
    functionName: FrameStreamLogger::name
    functionSourceFile: /src/pdns/pdns/dnsdistdist/fstrm_logger.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string name() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/fstrm_logger.hh:59,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/fstrm_logger.hh:59,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/fstrm_logger.hh:59,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 57
    functionDepth: 0
    functionLinenumber: 57
    functionLinenumberEnd: 60
    functionName: FrameStreamLogger::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/fstrm_logger.hh
    functionUses: 0
    functionsReached:
    - std::to_string
    linkageType: ''
    returnType: std::string
    signature: std::string toString() override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 62
    functionDepth: 0
    functionLinenumber: 62
    functionLinenumberEnd: 68
    functionName: FrameStreamLogger::getStats
    functionSourceFile: /src/pdns/pdns/dnsdistdist/fstrm_logger.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: RemoteLoggerInterface::Stats
    signature: RemoteLoggerInterface::Stats getStats() override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 93
    functionDepth: 0
    functionLinenumber: 93
    functionLinenumberEnd: 93
    functionName: FrameStreamLogger::FrameStreamLogger
    functionSourceFile: /src/pdns/pdns/dnsdistdist/fstrm_logger.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void FrameStreamLogger(const FrameStreamLogger&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 94
    functionDepth: 0
    functionLinenumber: 94
    functionLinenumberEnd: 94
    functionName: FrameStreamLogger::FrameStreamLogger
    functionSourceFile: /src/pdns/pdns/dnsdistdist/fstrm_logger.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void FrameStreamLogger(FrameStreamLogger&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 95
    functionDepth: 0
    functionLinenumber: 95
    functionLinenumberEnd: 95
    functionName: '& operator=(const FrameStreamLogger&)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/fstrm_logger.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: FrameStreamLogger
    signature: FrameStreamLogger & operator=(const FrameStreamLogger&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 96
    functionDepth: 0
    functionLinenumber: 96
    functionLinenumberEnd: 96
    functionName: '& operator=(FrameStreamLogger&&)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/fstrm_logger.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: FrameStreamLogger
    signature: FrameStreamLogger & operator=(FrameStreamLogger&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 33
      start: 33
    functionDepth: 0
    functionLinenumber: 33
    functionLinenumberEnd: 33
    functionName: StatNode::Stat
    functionSourceFile: /src/pdns/pdns/dnsdistdist/statnode.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Stat()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - Stat
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 44
    functionDepth: 0
    functionLinenumber: 44
    functionLinenumberEnd: 57
    functionName: '& operator+=(const Stat& rhs)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/statnode.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Stat
    signature: Stat & operator+=(const Stat& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: StatNode::empty
      Src: /src/pdns/pdns/dnsdistdist/statnode.hh:72,1
    - Dst: remotes::empty
      Src: /src/pdns/pdns/dnsdistdist/statnode.hh:72,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 70
    functionDepth: 0
    functionLinenumber: 70
    functionLinenumberEnd: 73
    functionName: StatNode::empty
    functionSourceFile: /src/pdns/pdns/dnsdistdist/statnode.hh
    functionUses: 4
    functionsReached:
    - StatNode::empty
    - remotes::empty
    linkageType: ''
    returnType: bool
    signature: bool empty() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: StatNode::size
      Src: /src/pdns/pdns/dnsdistdist/statnode.hh:76,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 74
    functionDepth: 0
    functionLinenumber: 74
    functionLinenumberEnd: 77
    functionName: StatNode::size
    functionSourceFile: /src/pdns/pdns/dnsdistdist/statnode.hh
    functionUses: 4
    functionsReached:
    - StatNode::size
    linkageType: ''
    returnType: size_t
    signature: size_t size() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 34
      start: 31
    functionDepth: 0
    functionLinenumber: 31
    functionLinenumberEnd: 34
    functionName: getCache
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-server-pool.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::shared_ptr<DNSDistPacketCache>
    signature: std::shared_ptr<DNSDistPacketCache> getCache() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 39
      start: 36
    functionDepth: 0
    functionLinenumber: 36
    functionLinenumberEnd: 39
    functionName: getECS
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-server-pool.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool getECS() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 47
    functionDepth: 0
    functionLinenumber: 47
    functionLinenumberEnd: 50
    functionName: getZeroScope
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-server-pool.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool getZeroScope() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 58
    functionDepth: 0
    functionLinenumber: 58
    functionLinenumberEnd: 61
    functionName: isConsistent
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-server-pool.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool isConsistent() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 71
    functionDepth: 0
    functionLinenumber: 71
    functionLinenumberEnd: 75
    functionName: isTCPOnly
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-server-pool.hh
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool isTCPOnly() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MaxQPSIPRule::clear
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:52,1
    - Dst: gettime
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:53,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - qps
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 49
    functionDepth: 0
    functionLinenumber: 49
    functionLinenumberEnd: 54
    functionName: MaxQPSIPRule::MaxQPSIPRule
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh
    functionUses: 0
    functionsReached:
    - gettime
    - MaxQPSIPRule::clear
    linkageType: ''
    returnType: void
    signature: void MaxQPSIPRule(unsigned int qps, unsigned int ipv4trunc = 32, unsigned
      int ipv6trunc = 64, unsigned int burst = 0, unsigned int expiration = 300, unsigned
      int cleanupDelay = 60, unsigned int scanFraction = 10, size_t shardsCount =
      10)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:59,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 56
    functionDepth: 0
    functionLinenumber: 56
    functionLinenumberEnd: 61
    functionName: MaxQPSIPRule::clear
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh
    functionUses: 1
    functionsReached:
    - lock
    linkageType: ''
    returnType: void
    signature: void clear()
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:71,1
    - Dst: std::round
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:72,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:72,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:75,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:76,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:76,1
    - Dst: auto::d_limiter::seenSince
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:77,1
    - Dst: erase
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:85,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 17
    argCount: 1
    argNames:
    - ' cutOff'
    argTypes:
    - struct timespec
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 63
    functionDepth: 0
    functionLinenumber: 63
    functionLinenumberEnd: 95
    functionName: MaxQPSIPRule::cleanup
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh
    functionUses: 0
    functionsReached:
    - auto::get
    - end
    - lock
    - std::round
    - auto::d_limiter::seenSince
    - begin
    - erase
    - auto::size
    linkageType: ''
    returnType: size_t
    signature: size_t cleanup(const struct timespec& cutOff, size_t* scannedCount
      = nullptr) const
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: test_and_set
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:105,1
    - Dst: gettime
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:111,1
    - Dst: MaxQPSIPRule::cleanup
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:114,1
    - Dst: MaxQPSIPRule::clear
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:115,1
    - Dst: MaxQPSIPRule::clear
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:118,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 1
    argNames:
    - ' now'
    argTypes:
    - struct timespec
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 97
    functionDepth: 1
    functionLinenumber: 97
    functionLinenumberEnd: 123
    functionName: MaxQPSIPRule::cleanupIfNeeded
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh
    functionUses: 0
    functionsReached:
    - MaxQPSIPRule::cleanup
    - MaxQPSIPRule::clear
    - gettime
    - test_and_set
    linkageType: ''
    returnType: void
    signature: void cleanupIfNeeded(const struct timespec& now) const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: MaxQPSIPRule::cleanupIfNeeded
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:127,1
    - Dst: DNSQuestion*::getQueryRealTime
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:127,1
    - Dst: ComboAddress::truncate
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:131,1
    - Dst: ComboAddress::addressOnlyHash
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:132,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:133,1
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:135,1
    - Dst: auto::find
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:136,1
    - Dst: auto::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:137,1
    - Dst: auto::insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:139,1
    - Dst: moveCacheItemToBack
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:142,1
    - Dst: auto::d_limiter::check
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:143,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - dq
    argTypes:
    - DNSQuestion*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 145
      start: 125
    functionDepth: 2
    functionLinenumber: 125
    functionLinenumberEnd: 145
    functionName: MaxQPSIPRule::matches
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh
    functionUses: 0
    functionsReached:
    - auto::d_limiter::check
    - size
    - DNSQuestion*::getQueryRealTime
    - lock
    - moveCacheItemToBack
    - ComboAddress::truncate
    - MaxQPSIPRule::cleanupIfNeeded
    - ComboAddress::addressOnlyHash
    - auto::insert
    - auto::end
    - auto::find
    linkageType: ''
    returnType: bool
    signature: bool matches(const DNSQuestion* dq) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:149,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:149,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:149,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:149,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 150
      start: 147
    functionDepth: 0
    functionLinenumber: 147
    functionLinenumberEnd: 150
    functionName: MaxQPSIPRule::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh
    functionUses: 0
    functionsReached:
    - std::to_string
    linkageType: ''
    returnType: string
    signature: string toString() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:156,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 159
      start: 152
    functionDepth: 0
    functionLinenumber: 152
    functionLinenumberEnd: 159
    functionName: MaxQPSIPRule::getEntriesCount
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh
    functionUses: 0
    functionsReached:
    - lock
    linkageType: ''
    returnType: size_t
    signature: size_t getEntriesCount() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:163,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 164
      start: 161
    functionDepth: 0
    functionLinenumber: 161
    functionLinenumberEnd: 164
    functionName: MaxQPSIPRule::getNumberOfShards
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh
    functionUses: 0
    functionsReached:
    - size
    linkageType: ''
    returnType: size_t
    signature: size_t getNumberOfShards() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - ' addr'
    - ' limiter'
    argTypes:
    - ComboAddress
    - BasicQPSLimiter
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 178
      start: 175
    functionDepth: 0
    functionLinenumber: 175
    functionLinenumberEnd: 178
    functionName: MaxQPSIPRule::Entry
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Entry(const ComboAddress& addr, BasicQPSLimiter&& limiter)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - qps
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 202
      start: 199
    functionDepth: 0
    functionLinenumber: 199
    functionLinenumberEnd: 202
    functionName: MaxQPSRule::MaxQPSRule
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void MaxQPSRule(unsigned int qps)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - qps
    - burst
    argTypes:
    - unsigned int
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 207
      start: 204
    functionDepth: 0
    functionLinenumber: 204
    functionLinenumberEnd: 207
    functionName: MaxQPSRule::MaxQPSRule
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void MaxQPSRule(unsigned int qps, unsigned int burst)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: check
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:212,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - dnsQuestion
    argTypes:
    - DNSQuestion*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 213
      start: 209
    functionDepth: 0
    functionLinenumber: 209
    functionLinenumberEnd: 213
    functionName: MaxQPSRule::matches
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh
    functionUses: 0
    functionsReached:
    - check
    linkageType: ''
    returnType: bool
    signature: bool matches(const DNSQuestion* dnsQuestion) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:217,1
    - Dst: getRate
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:217,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 218
      start: 215
    functionDepth: 0
    functionLinenumber: 215
    functionLinenumberEnd: 218
    functionName: MaxQPSRule::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh
    functionUses: 0
    functionsReached:
    - getRate
    - std::to_string
    linkageType: ''
    returnType: string
    signature: string toString() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ' nmg'
    - src
    argTypes:
    - NetmaskGroup
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 232
      start: 227
    functionDepth: 0
    functionLinenumber: 227
    functionLinenumberEnd: 232
    functionName: NetmaskGroupRule::NetmaskGroupRule
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void NetmaskGroupRule(const NetmaskGroup& nmg, bool src, bool quiet
      = false)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: match
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:236,1
    - Dst: match
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:238,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - dq
    argTypes:
    - DNSQuestion*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 239
      start: 233
    functionDepth: 0
    functionLinenumber: 233
    functionLinenumberEnd: 239
    functionName: NetmaskGroupRule::matches
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh
    functionUses: 0
    functionsReached:
    - match
    linkageType: ''
    returnType: bool
    signature: bool matches(const DNSQuestion* dq) const override
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: NetmaskGroupRule::toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:250,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 251
      start: 241
    functionDepth: 0
    functionLinenumber: 241
    functionLinenumberEnd: 251
    functionName: NetmaskGroupRule::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh
    functionUses: 1
    functionsReached:
    - NetmaskGroupRule::toString
    linkageType: ''
    returnType: string
    signature: string toString() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:267,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' ca'
    argTypes:
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 268
      start: 264
    functionDepth: 0
    functionLinenumber: 264
    functionLinenumberEnd: 268
    functionName: TimedIPSetRule::IPv6
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh
    functionUses: 0
    functionsReached:
    - memcpy
    linkageType: ''
    returnType: void
    signature: void IPv6(const ComboAddress& ca)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - IPv6
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 272
      start: 269
    functionDepth: 0
    functionLinenumber: 269
    functionLinenumberEnd: 272
    functionName: operator==(const IPv6& rhs) const
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool operator==(const IPv6& rhs) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 279
      start: 277
    functionDepth: 0
    functionLinenumber: 277
    functionLinenumberEnd: 279
    functionName: TimedIPSetRule::TimedIPSetRule
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void TimedIPSetRule()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 282
      start: 280
    functionDepth: 0
    functionLinenumber: 280
    functionLinenumberEnd: 282
    functionName: ~TimedIPSetRule()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~TimedIPSetRule()
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: read_lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:286,1
    - Dst: auto::find
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:287,1
    - Dst: auto::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:288,1
    - Dst: time
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:291,1
    - Dst: read_lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:294,1
    - Dst: auto::find
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:295,1
    - Dst: auto::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:296,1
    - Dst: time
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:299,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - dq
    argTypes:
    - DNSQuestion*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 301
      start: 283
    functionDepth: 0
    functionLinenumber: 283
    functionLinenumberEnd: 301
    functionName: TimedIPSetRule::matches
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh
    functionUses: 0
    functionsReached:
    - auto::end
    - time
    - read_lock
    - auto::find
    linkageType: ''
    returnType: bool
    signature: bool matches(const DNSQuestion* dq) const override
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: write_lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:307,1
    - Dst: write_lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:313,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 10
    argCount: 2
    argNames:
    - ' ca'
    - ttd
    argTypes:
    - ComboAddress
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 319
      start: 303
    functionDepth: 0
    functionLinenumber: 303
    functionLinenumberEnd: 319
    functionName: TimedIPSetRule::add
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh
    functionUses: 0
    functionsReached:
    - write_lock
    linkageType: ''
    returnType: void
    signature: void add(const ComboAddress& ca, time_t ttd)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: write_lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:324,1
    - Dst: write_lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:327,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - ' ca'
    argTypes:
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 329
      start: 321
    functionDepth: 0
    functionLinenumber: 321
    functionLinenumberEnd: 329
    functionName: TimedIPSetRule::remove
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh
    functionUses: 0
    functionsReached:
    - write_lock
    linkageType: ''
    returnType: void
    signature: void remove(const ComboAddress& ca)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: write_lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:333,1
    - Dst: write_lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:334,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 335
      start: 331
    functionDepth: 0
    functionLinenumber: 331
    functionLinenumberEnd: 335
    functionName: TimedIPSetRule::clear
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh
    functionUses: 0
    functionsReached:
    - write_lock
    linkageType: ''
    returnType: void
    signature: void clear()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: time
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:339,1
    - Dst: write_lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:341,1
    - Dst: auto::begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:342,1
    - Dst: auto::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:342,1
    - Dst: auto::erase
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:344,1
    - Dst: write_lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:353,1
    - Dst: auto::begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:354,1
    - Dst: auto::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:354,1
    - Dst: auto::erase
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:356,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 363
      start: 337
    functionDepth: 0
    functionLinenumber: 337
    functionLinenumberEnd: 363
    functionName: TimedIPSetRule::cleanup
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh
    functionUses: 0
    functionsReached:
    - time
    - auto::begin
    - write_lock
    - auto::end
    - auto::erase
    linkageType: ''
    returnType: void
    signature: void cleanup()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: time
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:367,1
    - Dst: read_lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:370,1
    - Dst: read_lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:376,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:382,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 383
      start: 365
    functionDepth: 0
    functionLinenumber: 365
    functionLinenumberEnd: 383
    functionName: TimedIPSetRule::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh
    functionUses: 0
    functionsReached:
    - time
    - read_lock
    - std::to_string
    linkageType: ''
    returnType: string
    signature: string toString() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' ip'
    argTypes:
    - IPv6
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 393
      start: 388
    functionDepth: 0
    functionLinenumber: 388
    functionLinenumberEnd: 393
    functionName: operator()(const IPv6& ip) const
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::size_t
    signature: std::size_t operator()(const IPv6& ip) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 402
      start: 402
    functionDepth: 0
    functionLinenumber: 402
    functionLinenumberEnd: 402
    functionName: AllRule::AllRule
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void AllRule()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - dnsQuestion
    argTypes:
    - DNSQuestion*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 407
      start: 403
    functionDepth: 0
    functionLinenumber: 403
    functionLinenumberEnd: 407
    functionName: AllRule::matches
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool matches(const DNSQuestion* dnsQuestion) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 412
      start: 409
    functionDepth: 0
    functionLinenumber: 409
    functionLinenumberEnd: 412
    functionName: AllRule::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: string
    signature: string toString() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 420
      start: 418
    functionDepth: 0
    functionLinenumber: 418
    functionLinenumberEnd: 420
    functionName: DNSSECRule::DNSSECRule
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void DNSSECRule()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSQuestion*::getHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:423,1
    - Dst: dnsdist::getEDNSZ
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:423,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - dq
    argTypes:
    - DNSQuestion*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 424
      start: 421
    functionDepth: 1
    functionLinenumber: 421
    functionLinenumberEnd: 424
    functionName: DNSSECRule::matches
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh
    functionUses: 0
    functionsReached:
    - dnsdist::getEDNSZ
    - DNSQuestion*::getHeader
    linkageType: ''
    returnType: bool
    signature: bool matches(const DNSQuestion* dq) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 429
      start: 426
    functionDepth: 0
    functionLinenumber: 426
    functionLinenumberEnd: 429
    functionName: DNSSECRule::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: string
    signature: string toString() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' rules'
    argTypes:
    - std::vector<std::shared_ptr<DNSRule>>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 438
      start: 435
    functionDepth: 0
    functionLinenumber: 435
    functionLinenumberEnd: 438
    functionName: AndRule::AndRule
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void AndRule(const std::vector<std::shared_ptr<DNSRule>>& rules)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: AndRule::matches
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:443,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - dq
    argTypes:
    - DNSQuestion*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 448
      start: 440
    functionDepth: 1
    functionLinenumber: 440
    functionLinenumberEnd: 448
    functionName: AndRule::matches
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh
    functionUses: 1
    functionsReached:
    - AndRule::matches
    linkageType: ''
    returnType: bool
    signature: bool matches(const DNSQuestion* dq) const override
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: string::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:454,1
    - Dst: AndRule::toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:457,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 460
      start: 450
    functionDepth: 0
    functionLinenumber: 450
    functionLinenumberEnd: 460
    functionName: AndRule::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh
    functionUses: 1
    functionsReached:
    - AndRule::toString
    - string::empty
    linkageType: ''
    returnType: string
    signature: string toString() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' rules'
    argTypes:
    - std::vector<std::shared_ptr<DNSRule>>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 472
      start: 469
    functionDepth: 0
    functionLinenumber: 469
    functionLinenumberEnd: 472
    functionName: OrRule::OrRule
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void OrRule(const std::vector<std::shared_ptr<DNSRule>>& rules)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: OrRule::matches
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:477,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - dq
    argTypes:
    - DNSQuestion*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 482
      start: 474
    functionDepth: 1
    functionLinenumber: 474
    functionLinenumberEnd: 482
    functionName: OrRule::matches
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh
    functionUses: 1
    functionsReached:
    - OrRule::matches
    linkageType: ''
    returnType: bool
    signature: bool matches(const DNSQuestion* dq) const override
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: string::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:488,1
    - Dst: OrRule::toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:491,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 494
      start: 484
    functionDepth: 0
    functionLinenumber: 484
    functionLinenumberEnd: 494
    functionName: OrRule::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh
    functionUses: 1
    functionsReached:
    - OrRule::toString
    - string::empty
    linkageType: ''
    returnType: string
    signature: string toString() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Regex
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:507,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:510,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - ' regex'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 512
      start: 503
    functionDepth: 0
    functionLinenumber: 503
    functionLinenumberEnd: 512
    functionName: RegexRule::RegexRule
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh
    functionUses: 0
    functionsReached:
    - Regex
    - std::runtime_error
    linkageType: ''
    returnType: void
    signature: void RegexRule(const std::string& regex)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: match
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:515,1
    - Dst: DNSQuestion*::ids::qname::toStringNoDot
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:515,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - dq
    argTypes:
    - DNSQuestion*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 516
      start: 513
    functionDepth: 0
    functionLinenumber: 513
    functionLinenumberEnd: 516
    functionName: RegexRule::matches
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh
    functionUses: 0
    functionsReached:
    - match
    - DNSQuestion*::ids::qname::toStringNoDot
    linkageType: ''
    returnType: bool
    signature: bool matches(const DNSQuestion* dq) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 521
      start: 518
    functionDepth: 0
    functionLinenumber: 518
    functionLinenumberEnd: 521
    functionName: RegexRule::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: string
    signature: string toString() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' re2'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 536
      start: 533
    functionDepth: 0
    functionLinenumber: 533
    functionLinenumberEnd: 536
    functionName: RE2Rule::RE2Rule
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void RE2Rule(const std::string& re2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RE2::FullMatch
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:539,1
    - Dst: DNSQuestion*::ids::qname::toStringNoDot
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:539,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - dq
    argTypes:
    - DNSQuestion*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 540
      start: 537
    functionDepth: 0
    functionLinenumber: 537
    functionLinenumberEnd: 540
    functionName: RE2Rule::matches
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh
    functionUses: 0
    functionsReached:
    - DNSQuestion*::ids::qname::toStringNoDot
    - RE2::FullMatch
    linkageType: ''
    returnType: bool
    signature: bool matches(const DNSQuestion* dq) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 545
      start: 542
    functionDepth: 0
    functionLinenumber: 542
    functionLinenumberEnd: 545
    functionName: RE2Rule::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: string
    signature: string toString() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:557,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 558
      start: 555
    functionDepth: 0
    functionLinenumber: 555
    functionLinenumberEnd: 558
    functionName: RE2Rule::RE2Rule
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh
    functionUses: 0
    functionsReached:
    - std::runtime_error
    linkageType: ''
    returnType: void
    signature: void RE2Rule(const std::string& /* re2 */)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 562
      start: 559
    functionDepth: 0
    functionLinenumber: 559
    functionLinenumberEnd: 562
    functionName: RE2Rule::matches
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool matches(const DNSQuestion* /* dq */) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 567
      start: 564
    functionDepth: 0
    functionLinenumber: 564
    functionLinenumberEnd: 567
    functionName: RE2Rule::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: string
    signature: string toString() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' name'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 613
      start: 610
    functionDepth: 0
    functionLinenumber: 610
    functionLinenumberEnd: 613
    functionName: SNIRule::SNIRule
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void SNIRule(const std::string& name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - dq
    argTypes:
    - DNSQuestion*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 617
      start: 614
    functionDepth: 0
    functionLinenumber: 614
    functionLinenumberEnd: 617
    functionName: SNIRule::matches
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool matches(const DNSQuestion* dq) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 621
      start: 618
    functionDepth: 0
    functionLinenumber: 618
    functionLinenumberEnd: 621
    functionName: SNIRule::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: string
    signature: string toString() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' smn'
    argTypes:
    - SuffixMatchNode
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 633
      start: 630
    functionDepth: 0
    functionLinenumber: 630
    functionLinenumberEnd: 633
    functionName: SuffixMatchNodeRule::SuffixMatchNodeRule
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void SuffixMatchNodeRule(const SuffixMatchNode& smn, bool quiet = false)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: check
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:636,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - dq
    argTypes:
    - DNSQuestion*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 637
      start: 634
    functionDepth: 0
    functionLinenumber: 634
    functionLinenumberEnd: 637
    functionName: SuffixMatchNodeRule::matches
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh
    functionUses: 0
    functionsReached:
    - check
    linkageType: ''
    returnType: bool
    signature: bool matches(const DNSQuestion* dq) const override
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SuffixMatchNodeRule::toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:643,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 644
      start: 638
    functionDepth: 0
    functionLinenumber: 638
    functionLinenumberEnd: 644
    functionName: SuffixMatchNodeRule::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh
    functionUses: 1
    functionsReached:
    - SuffixMatchNodeRule::toString
    linkageType: ''
    returnType: string
    signature: string toString() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' qname'
    argTypes:
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 657
      start: 654
    functionDepth: 0
    functionLinenumber: 654
    functionLinenumberEnd: 657
    functionName: QNameRule::QNameRule
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void QNameRule(const DNSName& qname)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - dq
    argTypes:
    - DNSQuestion*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 662
      start: 659
    functionDepth: 0
    functionLinenumber: 659
    functionLinenumberEnd: 662
    functionName: QNameRule::matches
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool matches(const DNSQuestion* dq) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: QNameRule::toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:665,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 666
      start: 663
    functionDepth: 0
    functionLinenumber: 663
    functionLinenumberEnd: 666
    functionName: QNameRule::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh
    functionUses: 1
    functionsReached:
    - QNameRule::toString
    linkageType: ''
    returnType: string
    signature: string toString() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' names'
    argTypes:
    - DNSNameSet
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 676
      start: 675
    functionDepth: 0
    functionLinenumber: 675
    functionLinenumberEnd: 676
    functionName: QNameSetRule::QNameSetRule
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void QNameSetRule(const DNSNameSet& names)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: find
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:680,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:680,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - dq
    argTypes:
    - DNSQuestion*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 681
      start: 678
    functionDepth: 0
    functionLinenumber: 678
    functionLinenumberEnd: 681
    functionName: QNameSetRule::matches
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh
    functionUses: 0
    functionsReached:
    - end
    - find
    linkageType: ''
    returnType: bool
    signature: bool matches(const DNSQuestion* dq) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:686,1
    - Dst: std::stringstream::str
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:687,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 688
      start: 683
    functionDepth: 0
    functionLinenumber: 683
    functionLinenumberEnd: 688
    functionName: QNameSetRule::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh
    functionUses: 0
    functionsReached:
    - std::stringstream::str
    - size
    linkageType: ''
    returnType: string
    signature: string toString() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - qtype
    argTypes:
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 700
      start: 697
    functionDepth: 0
    functionLinenumber: 697
    functionLinenumberEnd: 700
    functionName: QTypeRule::QTypeRule
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void QTypeRule(uint16_t qtype)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - dq
    argTypes:
    - DNSQuestion*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 704
      start: 701
    functionDepth: 0
    functionLinenumber: 701
    functionLinenumberEnd: 704
    functionName: QTypeRule::matches
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool matches(const DNSQuestion* dq) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: QType::toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:708,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 709
      start: 705
    functionDepth: 0
    functionLinenumber: 705
    functionLinenumberEnd: 709
    functionName: QTypeRule::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh
    functionUses: 0
    functionsReached:
    - QType::toString
    linkageType: ''
    returnType: string
    signature: string toString() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - qclass
    argTypes:
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 721
      start: 718
    functionDepth: 0
    functionLinenumber: 718
    functionLinenumberEnd: 721
    functionName: QClassRule::QClassRule
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void QClassRule(uint16_t qclass)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - dq
    argTypes:
    - DNSQuestion*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 725
      start: 722
    functionDepth: 0
    functionLinenumber: 722
    functionLinenumberEnd: 725
    functionName: QClassRule::matches
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool matches(const DNSQuestion* dq) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:728,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 729
      start: 726
    functionDepth: 0
    functionLinenumber: 726
    functionLinenumberEnd: 729
    functionName: QClassRule::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh
    functionUses: 0
    functionsReached:
    - std::to_string
    linkageType: ''
    returnType: string
    signature: string toString() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - opcode
    argTypes:
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 741
      start: 738
    functionDepth: 0
    functionLinenumber: 738
    functionLinenumberEnd: 741
    functionName: OpcodeRule::OpcodeRule
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void OpcodeRule(uint8_t opcode)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSQuestion*::getHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:744,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - dq
    argTypes:
    - DNSQuestion*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 745
      start: 742
    functionDepth: 1
    functionLinenumber: 742
    functionLinenumberEnd: 745
    functionName: OpcodeRule::matches
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh
    functionUses: 0
    functionsReached:
    - DNSQuestion*::getHeader
    linkageType: ''
    returnType: bool
    signature: bool matches(const DNSQuestion* dq) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:748,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 749
      start: 746
    functionDepth: 0
    functionLinenumber: 746
    functionLinenumberEnd: 749
    functionName: OpcodeRule::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh
    functionUses: 0
    functionsReached:
    - std::to_string
    linkageType: ''
    returnType: string
    signature: string toString() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - port
    argTypes:
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 761
      start: 758
    functionDepth: 0
    functionLinenumber: 758
    functionLinenumberEnd: 761
    functionName: DSTPortRule::DSTPortRule
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void DSTPortRule(uint16_t port)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: htons
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:764,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - dq
    argTypes:
    - DNSQuestion*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 765
      start: 762
    functionDepth: 0
    functionLinenumber: 762
    functionLinenumberEnd: 765
    functionName: DSTPortRule::matches
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh
    functionUses: 0
    functionsReached:
    - htons
    linkageType: ''
    returnType: bool
    signature: bool matches(const DNSQuestion* dq) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:768,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 769
      start: 766
    functionDepth: 0
    functionLinenumber: 766
    functionLinenumberEnd: 769
    functionName: DSTPortRule::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh
    functionUses: 0
    functionsReached:
    - std::to_string
    linkageType: ''
    returnType: string
    signature: string toString() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - tcp
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 781
      start: 778
    functionDepth: 0
    functionLinenumber: 778
    functionLinenumberEnd: 781
    functionName: TCPRule::TCPRule
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void TCPRule(bool tcp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSQuestion*::overTCP
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:784,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - dq
    argTypes:
    - DNSQuestion*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 785
      start: 782
    functionDepth: 1
    functionLinenumber: 782
    functionLinenumberEnd: 785
    functionName: TCPRule::matches
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh
    functionUses: 0
    functionsReached:
    - DNSQuestion*::overTCP
    linkageType: ''
    returnType: bool
    signature: bool matches(const DNSQuestion* dq) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 789
      start: 786
    functionDepth: 0
    functionLinenumber: 786
    functionLinenumberEnd: 789
    functionName: TCPRule::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: string
    signature: string toString() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' rule'
    argTypes:
    - std::shared_ptr<DNSRule>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 801
      start: 798
    functionDepth: 0
    functionLinenumber: 798
    functionLinenumberEnd: 801
    functionName: NotRule::NotRule
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void NotRule(const std::shared_ptr<DNSRule>& rule)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: NotRule::matches
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:804,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - dq
    argTypes:
    - DNSQuestion*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 805
      start: 802
    functionDepth: 1
    functionLinenumber: 802
    functionLinenumberEnd: 805
    functionName: NotRule::matches
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh
    functionUses: 1
    functionsReached:
    - NotRule::matches
    linkageType: ''
    returnType: bool
    signature: bool matches(const DNSQuestion* dq) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: NotRule::toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:808,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 809
      start: 806
    functionDepth: 0
    functionLinenumber: 806
    functionLinenumberEnd: 809
    functionName: NotRule::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh
    functionUses: 1
    functionsReached:
    - NotRule::toString
    linkageType: ''
    returnType: string
    signature: string toString() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 3
    argNames:
    - section
    - minCount
    - maxCount
    argTypes:
    - uint8_t
    - uint16_t
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 821
      start: 818
    functionDepth: 0
    functionLinenumber: 818
    functionLinenumberEnd: 821
    functionName: RecordsCountRule::RecordsCountRule
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void RecordsCountRule(uint8_t section, uint16_t minCount, uint16_t
      maxCount)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:827,1
    - Dst: DNSQuestion*::getHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:827,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:830,1
    - Dst: DNSQuestion*::getHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:830,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:833,1
    - Dst: DNSQuestion*::getHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:833,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:836,1
    - Dst: DNSQuestion*::getHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:836,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 16
    argCount: 1
    argNames:
    - dq
    argTypes:
    - DNSQuestion*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 840
      start: 822
    functionDepth: 1
    functionLinenumber: 822
    functionLinenumberEnd: 840
    functionName: RecordsCountRule::matches
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh
    functionUses: 0
    functionsReached:
    - DNSQuestion*::getHeader
    - ntohs
    linkageType: ''
    returnType: bool
    signature: bool matches(const DNSQuestion* dq) const override
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:858,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:858,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 859
      start: 841
    functionDepth: 0
    functionLinenumber: 841
    functionLinenumberEnd: 859
    functionName: RecordsCountRule::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh
    functionUses: 0
    functionsReached:
    - std::to_string
    linkageType: ''
    returnType: string
    signature: string toString() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 4
    argNames:
    - section
    - type
    - minCount
    - maxCount
    argTypes:
    - uint8_t
    - uint16_t
    - uint16_t
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 873
      start: 870
    functionDepth: 0
    functionLinenumber: 870
    functionLinenumberEnd: 873
    functionName: RecordsTypeCountRule::RecordsTypeCountRule
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void RecordsTypeCountRule(uint8_t section, uint16_t type, uint16_t
      minCount, uint16_t maxCount)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:879,1
    - Dst: DNSQuestion*::getHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:879,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:882,1
    - Dst: DNSQuestion*::getHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:882,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:885,1
    - Dst: DNSQuestion*::getHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:885,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:888,1
    - Dst: DNSQuestion*::getHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:888,1
    - Dst: getRecordsOfTypeCount
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:894,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:894,1
    - Dst: DNSQuestion*::getData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:894,1
    - Dst: DNSQuestion*::getData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:894,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 20
    argCount: 1
    argNames:
    - dq
    argTypes:
    - DNSQuestion*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 896
      start: 874
    functionDepth: 1
    functionLinenumber: 874
    functionLinenumberEnd: 896
    functionName: RecordsTypeCountRule::matches
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh
    functionUses: 0
    functionsReached:
    - DNSQuestion*::getHeader
    - ntohs
    - getRecordsOfTypeCount
    - reinterpret_cast<const char*>
    - DNSQuestion*::getData
    linkageType: ''
    returnType: bool
    signature: bool matches(const DNSQuestion* dq) const override
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:914,1
    - Dst: QType
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:914,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:914,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 915
      start: 897
    functionDepth: 0
    functionLinenumber: 897
    functionLinenumberEnd: 915
    functionName: RecordsTypeCountRule::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh
    functionUses: 0
    functionsReached:
    - QType
    - std::to_string
    linkageType: ''
    returnType: string
    signature: string toString() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 929
      start: 927
    functionDepth: 0
    functionLinenumber: 927
    functionLinenumberEnd: 929
    functionName: TrailingDataRule::TrailingDataRule
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void TrailingDataRule()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getDNSPacketLength
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:932,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:932,1
    - Dst: DNSQuestion*::getData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:932,1
    - Dst: DNSQuestion*::getData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:932,1
    - Dst: DNSQuestion*::getData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:933,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - dq
    argTypes:
    - DNSQuestion*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 934
      start: 930
    functionDepth: 0
    functionLinenumber: 930
    functionLinenumberEnd: 934
    functionName: TrailingDataRule::matches
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh
    functionUses: 0
    functionsReached:
    - getDNSPacketLength
    - reinterpret_cast<const char*>
    - DNSQuestion*::getData
    linkageType: ''
    returnType: bool
    signature: bool matches(const DNSQuestion* dq) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 938
      start: 935
    functionDepth: 0
    functionLinenumber: 935
    functionLinenumberEnd: 938
    functionName: TrailingDataRule::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: string
    signature: string toString() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - minLabelsCount
    - maxLabelsCount
    argTypes:
    - unsigned int
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 947
      start: 944
    functionDepth: 0
    functionLinenumber: 944
    functionLinenumberEnd: 947
    functionName: QNameLabelsCountRule::QNameLabelsCountRule
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void QNameLabelsCountRule(unsigned int minLabelsCount, unsigned int
      maxLabelsCount)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSQuestion*::ids::qname::countLabels
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:950,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - dq
    argTypes:
    - DNSQuestion*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 952
      start: 948
    functionDepth: 0
    functionLinenumber: 948
    functionLinenumberEnd: 952
    functionName: QNameLabelsCountRule::matches
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh
    functionUses: 0
    functionsReached:
    - DNSQuestion*::ids::qname::countLabels
    linkageType: ''
    returnType: bool
    signature: bool matches(const DNSQuestion* dq) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:955,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:955,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 956
      start: 953
    functionDepth: 0
    functionLinenumber: 953
    functionLinenumberEnd: 956
    functionName: QNameLabelsCountRule::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh
    functionUses: 0
    functionsReached:
    - std::to_string
    linkageType: ''
    returnType: string
    signature: string toString() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - min
    - max
    argTypes:
    - size_t
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 969
      start: 966
    functionDepth: 0
    functionLinenumber: 966
    functionLinenumberEnd: 969
    functionName: QNameWireLengthRule::QNameWireLengthRule
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void QNameWireLengthRule(size_t min, size_t max)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSQuestion*::ids::qname::wirelength
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:972,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - dq
    argTypes:
    - DNSQuestion*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 974
      start: 970
    functionDepth: 0
    functionLinenumber: 970
    functionLinenumberEnd: 974
    functionName: QNameWireLengthRule::matches
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh
    functionUses: 0
    functionsReached:
    - DNSQuestion*::ids::qname::wirelength
    linkageType: ''
    returnType: bool
    signature: bool matches(const DNSQuestion* dq) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:977,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:977,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 978
      start: 975
    functionDepth: 0
    functionLinenumber: 975
    functionLinenumberEnd: 978
    functionName: QNameWireLengthRule::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh
    functionUses: 0
    functionsReached:
    - std::to_string
    linkageType: ''
    returnType: string
    signature: string toString() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - rcode
    argTypes:
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 991
      start: 988
    functionDepth: 0
    functionLinenumber: 988
    functionLinenumberEnd: 991
    functionName: RCodeRule::RCodeRule
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void RCodeRule(uint8_t rcode)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSQuestion*::getHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:994,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - dq
    argTypes:
    - DNSQuestion*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 995
      start: 992
    functionDepth: 1
    functionLinenumber: 992
    functionLinenumberEnd: 995
    functionName: RCodeRule::matches
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh
    functionUses: 0
    functionsReached:
    - DNSQuestion*::getHeader
    linkageType: ''
    returnType: bool
    signature: bool matches(const DNSQuestion* dq) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RCode::to_s
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:998,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 999
      start: 996
    functionDepth: 0
    functionLinenumber: 996
    functionLinenumberEnd: 999
    functionName: RCodeRule::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh
    functionUses: 0
    functionsReached:
    - RCode::to_s
    linkageType: ''
    returnType: string
    signature: string toString() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - rcode
    argTypes:
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1011
      start: 1008
    functionDepth: 0
    functionLinenumber: 1008
    functionLinenumberEnd: 1011
    functionName: ERCodeRule::ERCodeRule
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ERCodeRule(uint8_t rcode)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: DNSQuestion*::getHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:1015,1
    - Dst: getEDNS0Record
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:1020,1
    - Dst: DNSQuestion*::getData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:1020,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - dq
    argTypes:
    - DNSQuestion*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1025
      start: 1012
    functionDepth: 1
    functionLinenumber: 1012
    functionLinenumberEnd: 1025
    functionName: ERCodeRule::matches
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh
    functionUses: 0
    functionsReached:
    - getEDNS0Record
    - DNSQuestion*::getHeader
    - DNSQuestion*::getData
    linkageType: ''
    returnType: bool
    signature: bool matches(const DNSQuestion* dq) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ERCode::to_s
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:1028,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1029
      start: 1026
    functionDepth: 0
    functionLinenumber: 1026
    functionLinenumberEnd: 1029
    functionName: ERCodeRule::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh
    functionUses: 0
    functionsReached:
    - ERCode::to_s
    linkageType: ''
    returnType: string
    signature: string toString() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - version
    argTypes:
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1042
      start: 1039
    functionDepth: 0
    functionLinenumber: 1039
    functionLinenumberEnd: 1042
    functionName: EDNSVersionRule::EDNSVersionRule
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void EDNSVersionRule(uint8_t version)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: getEDNS0Record
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:1046,1
    - Dst: DNSQuestion*::getData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:1046,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - dq
    argTypes:
    - DNSQuestion*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1051
      start: 1043
    functionDepth: 1
    functionLinenumber: 1043
    functionLinenumberEnd: 1051
    functionName: EDNSVersionRule::matches
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh
    functionUses: 0
    functionsReached:
    - getEDNS0Record
    - DNSQuestion*::getData
    linkageType: ''
    returnType: bool
    signature: bool matches(const DNSQuestion* dq) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:1054,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1055
      start: 1052
    functionDepth: 0
    functionLinenumber: 1052
    functionLinenumberEnd: 1055
    functionName: EDNSVersionRule::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh
    functionUses: 0
    functionsReached:
    - std::to_string
    linkageType: ''
    returnType: string
    signature: string toString() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - optcode
    argTypes:
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1067
      start: 1064
    functionDepth: 0
    functionLinenumber: 1064
    functionLinenumberEnd: 1067
    functionName: EDNSOptionRule::EDNSOptionRule
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void EDNSOptionRule(uint16_t optcode)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: locateEDNSOptRR
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:1073,1
    - Dst: DNSQuestion*::getData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:1073,1
    - Dst: DNSQuestion*::getData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:1083,1
    - Dst: DNSQuestion*::getData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:1083,1
    - Dst: isEDNSOptionInOpt
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:1088,1
    - Dst: DNSQuestion*::getData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:1088,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 1
    argNames:
    - dq
    argTypes:
    - DNSQuestion*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1089
      start: 1068
    functionDepth: 1
    functionLinenumber: 1068
    functionLinenumberEnd: 1089
    functionName: EDNSOptionRule::matches
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh
    functionUses: 0
    functionsReached:
    - locateEDNSOptRR
    - isEDNSOptionInOpt
    - DNSQuestion*::getData
    linkageType: ''
    returnType: bool
    signature: bool matches(const DNSQuestion* dq) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:1092,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1093
      start: 1090
    functionDepth: 0
    functionLinenumber: 1090
    functionLinenumberEnd: 1093
    functionName: EDNSOptionRule::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh
    functionUses: 0
    functionsReached:
    - std::to_string
    linkageType: ''
    returnType: string
    signature: string toString() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1104
      start: 1102
    functionDepth: 0
    functionLinenumber: 1102
    functionLinenumberEnd: 1104
    functionName: RDRule::RDRule
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void RDRule()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSQuestion*::getHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:1107,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - dq
    argTypes:
    - DNSQuestion*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1108
      start: 1105
    functionDepth: 1
    functionLinenumber: 1105
    functionLinenumberEnd: 1108
    functionName: RDRule::matches
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh
    functionUses: 0
    functionsReached:
    - DNSQuestion*::getHeader
    linkageType: ''
    returnType: bool
    signature: bool matches(const DNSQuestion* dq) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1112
      start: 1109
    functionDepth: 0
    functionLinenumber: 1109
    functionLinenumberEnd: 1112
    functionName: RDRule::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: string
    signature: string toString() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - proba
    argTypes:
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1121
      start: 1118
    functionDepth: 0
    functionLinenumber: 1118
    functionLinenumberEnd: 1121
    functionName: ProbaRule::ProbaRule
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ProbaRule(double proba)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dns_random_uint32
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:1128,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - dnsQuestion
    argTypes:
    - DNSQuestion*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1130
      start: 1122
    functionDepth: 0
    functionLinenumber: 1122
    functionLinenumberEnd: 1130
    functionName: ProbaRule::matches
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh
    functionUses: 0
    functionsReached:
    - dns_random_uint32
    linkageType: ''
    returnType: bool
    signature: bool matches(const DNSQuestion* dnsQuestion) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: boost::format
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:1133,1
    - Dst: str
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:1133,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1134
      start: 1131
    functionDepth: 0
    functionLinenumber: 1131
    functionLinenumberEnd: 1134
    functionName: ProbaRule::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh
    functionUses: 0
    functionsReached:
    - str
    - boost::format
    linkageType: ''
    returnType: string
    signature: string toString() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:1144,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 3
    argNames:
    - ' tag'
    - value
    - emptyAsWildcard
    argTypes:
    - std::string
    - std::optional<std::string>
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1146
      start: 1143
    functionDepth: 0
    functionLinenumber: 1143
    functionLinenumberEnd: 1146
    functionName: TagRule::TagRule
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void TagRule(const std::string& tag, std::optional<std::string> value,
      bool emptyAsWildcard)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: DNSQuestion*::ids::qTag::find
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:1153,1
    - Dst: DNSQuestion*::ids::qTag::cend
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:1154,1
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:1158,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 1
    argNames:
    - dq
    argTypes:
    - DNSQuestion*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1163
      start: 1147
    functionDepth: 0
    functionLinenumber: 1147
    functionLinenumberEnd: 1163
    functionName: TagRule::matches
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh
    functionUses: 0
    functionsReached:
    - empty
    - DNSQuestion*::ids::qTag::cend
    - DNSQuestion*::ids::qTag::find
    linkageType: ''
    returnType: bool
    signature: bool matches(const DNSQuestion* dq) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:1167,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1168
      start: 1165
    functionDepth: 0
    functionLinenumber: 1165
    functionLinenumberEnd: 1168
    functionName: TagRule::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh
    functionUses: 0
    functionsReached:
    - empty
    linkageType: ''
    returnType: string
    signature: string toString() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' poolname'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1182
      start: 1179
    functionDepth: 0
    functionLinenumber: 1179
    functionLinenumberEnd: 1182
    functionName: PoolAvailableRule::PoolAvailableRule
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void PoolAvailableRule(const std::string& poolname)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getPool
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:1187,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - dnsQuestion
    argTypes:
    - DNSQuestion*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1188
      start: 1184
    functionDepth: 2
    functionLinenumber: 1184
    functionLinenumberEnd: 1188
    functionName: PoolAvailableRule::matches
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh
    functionUses: 0
    functionsReached:
    - getPool
    linkageType: ''
    returnType: bool
    signature: bool matches(const DNSQuestion* dnsQuestion) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1193
      start: 1190
    functionDepth: 0
    functionLinenumber: 1190
    functionLinenumberEnd: 1193
    functionName: PoolAvailableRule::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: string
    signature: string toString() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - ' poolname'
    - limit
    argTypes:
    - std::string
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1205
      start: 1202
    functionDepth: 0
    functionLinenumber: 1202
    functionLinenumberEnd: 1205
    functionName: PoolOutstandingRule::PoolOutstandingRule
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void PoolOutstandingRule(const std::string& poolname, const size_t
      limit)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getPool
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:1210,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - dnsQuestion
    argTypes:
    - DNSQuestion*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1211
      start: 1207
    functionDepth: 2
    functionLinenumber: 1207
    functionLinenumberEnd: 1211
    functionName: PoolOutstandingRule::matches
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh
    functionUses: 0
    functionsReached:
    - getPool
    linkageType: ''
    returnType: bool
    signature: bool matches(const DNSQuestion* dnsQuestion) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:1215,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1216
      start: 1213
    functionDepth: 0
    functionLinenumber: 1213
    functionLinenumberEnd: 1216
    functionName: PoolOutstandingRule::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh
    functionUses: 0
    functionsReached:
    - std::to_string
    linkageType: ''
    returnType: string
    signature: string toString() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - ' kvs'
    - ' lookupKey'
    argTypes:
    - std::shared_ptr<KeyValueStore>
    - std::shared_ptr<KeyValueLookupKey>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1229
      start: 1226
    functionDepth: 0
    functionLinenumber: 1226
    functionLinenumberEnd: 1229
    functionName: KeyValueStoreLookupRule::KeyValueStoreLookupRule
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void KeyValueStoreLookupRule(const std::shared_ptr<KeyValueStore>&
      kvs, const std::shared_ptr<KeyValueLookupKey>& lookupKey)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: getKeys
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:1233,1
    - Dst: keyExists
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:1235,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - dq
    argTypes:
    - DNSQuestion*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1241
      start: 1231
    functionDepth: 0
    functionLinenumber: 1231
    functionLinenumberEnd: 1241
    functionName: KeyValueStoreLookupRule::matches
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh
    functionUses: 0
    functionsReached:
    - keyExists
    - getKeys
    linkageType: ''
    returnType: bool
    signature: bool matches(const DNSQuestion* dq) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: KeyValueStoreLookupRule::toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:1245,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1246
      start: 1243
    functionDepth: 0
    functionLinenumber: 1243
    functionLinenumberEnd: 1246
    functionName: KeyValueStoreLookupRule::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh
    functionUses: 1
    functionsReached:
    - KeyValueStoreLookupRule::toString
    linkageType: ''
    returnType: string
    signature: string toString() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - ' kvs'
    - ' lookupKey'
    argTypes:
    - std::shared_ptr<KeyValueStore>
    - std::shared_ptr<KeyValueLookupKey>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1259
      start: 1256
    functionDepth: 0
    functionLinenumber: 1256
    functionLinenumberEnd: 1259
    functionName: KeyValueStoreRangeLookupRule::KeyValueStoreRangeLookupRule
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void KeyValueStoreRangeLookupRule(const std::shared_ptr<KeyValueStore>&
      kvs, const std::shared_ptr<KeyValueLookupKey>& lookupKey)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: getKeys
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:1263,1
    - Dst: getRangeValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:1266,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - dq
    argTypes:
    - DNSQuestion*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1272
      start: 1261
    functionDepth: 0
    functionLinenumber: 1261
    functionLinenumberEnd: 1272
    functionName: KeyValueStoreRangeLookupRule::matches
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh
    functionUses: 0
    functionsReached:
    - getRangeValue
    - getKeys
    linkageType: ''
    returnType: bool
    signature: bool matches(const DNSQuestion* dq) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: KeyValueStoreRangeLookupRule::toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:1276,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1277
      start: 1274
    functionDepth: 0
    functionLinenumber: 1274
    functionLinenumberEnd: 1277
    functionName: KeyValueStoreRangeLookupRule::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh
    functionUses: 1
    functionsReached:
    - KeyValueStoreRangeLookupRule::toString
    linkageType: ''
    returnType: string
    signature: string toString() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' func'
    argTypes:
    - dnsdist::selectors::LuaSelectorFunction
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1289
      start: 1287
    functionDepth: 0
    functionLinenumber: 1287
    functionLinenumberEnd: 1289
    functionName: LuaRule::LuaRule
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void LuaRule(const dnsdist::selectors::LuaSelectorFunction& func)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:1294,1
    - Dst: d_func
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:1295,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:1298,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:1298,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:1298,1
    - Dst: DNSQuestion*::getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:1299,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:1299,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:1302,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:1302,1
    - Dst: DNSQuestion*::getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:1303,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - dq
    argTypes:
    - DNSQuestion*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1306
      start: 1291
    functionDepth: 0
    functionLinenumber: 1291
    functionLinenumberEnd: 1306
    functionName: LuaRule::matches
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh
    functionUses: 0
    functionsReached:
    - SLOG
    - d_func
    - what
    - DNSQuestion*::getLogger
    - warnlog
    - lock
    linkageType: ''
    returnType: bool
    signature: bool matches(const DNSQuestion* dq) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1311
      start: 1308
    functionDepth: 0
    functionLinenumber: 1308
    functionLinenumberEnd: 1311
    functionName: LuaRule::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: string
    signature: string toString() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' func'
    argTypes:
    - dnsdist::selectors::LuaSelectorFFIFunction
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1322
      start: 1320
    functionDepth: 0
    functionLinenumber: 1320
    functionLinenumberEnd: 1322
    functionName: LuaFFIRule::LuaFFIRule
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void LuaFFIRule(const dnsdist::selectors::LuaSelectorFFIFunction& func)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:1328,1
    - Dst: d_func
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:1329,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:1332,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:1332,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:1332,1
    - Dst: DNSQuestion*::getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:1333,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:1333,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:1336,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:1336,1
    - Dst: DNSQuestion*::getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:1337,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - dq
    argTypes:
    - DNSQuestion*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1340
      start: 1324
    functionDepth: 0
    functionLinenumber: 1324
    functionLinenumberEnd: 1340
    functionName: LuaFFIRule::matches
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh
    functionUses: 0
    functionsReached:
    - SLOG
    - d_func
    - what
    - DNSQuestion*::getLogger
    - warnlog
    - lock
    linkageType: ''
    returnType: bool
    signature: bool matches(const DNSQuestion* dq) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1345
      start: 1342
    functionDepth: 0
    functionLinenumber: 1342
    functionLinenumberEnd: 1345
    functionName: LuaFFIRule::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: string
    signature: string toString() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' code'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1357
      start: 1354
    functionDepth: 0
    functionLinenumber: 1354
    functionLinenumberEnd: 1357
    functionName: LuaFFIPerThreadRule::LuaFFIPerThreadRule
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void LuaFFIPerThreadRule(const std::string& code)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: setupLuaFFIPerThreadContext
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:1364,1
    - Dst: d_luaContext::executeCode
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:1368,1
    - Dst: d_func
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:1377,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:1380,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:1380,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:1380,1
    - Dst: DNSQuestion*::getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:1381,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:1381,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:1384,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:1384,1
    - Dst: DNSQuestion*::getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:1385,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 1
    argNames:
    - dq
    argTypes:
    - DNSQuestion*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1388
      start: 1359
    functionDepth: 2
    functionLinenumber: 1359
    functionLinenumberEnd: 1388
    functionName: LuaFFIPerThreadRule::matches
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh
    functionUses: 0
    functionsReached:
    - SLOG
    - d_func
    - what
    - DNSQuestion*::getLogger
    - warnlog
    - d_luaContext::executeCode
    - setupLuaFFIPerThreadContext
    linkageType: ''
    returnType: bool
    signature: bool matches(const DNSQuestion* dq) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1393
      start: 1390
    functionDepth: 0
    functionLinenumber: 1390
    functionLinenumberEnd: 1393
    functionName: LuaFFIPerThreadRule::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: string
    signature: string toString() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:1413,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - type
    - value
    argTypes:
    - uint8_t
    - std::optional<std::string>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1415
      start: 1412
    functionDepth: 0
    functionLinenumber: 1412
    functionLinenumberEnd: 1415
    functionName: ProxyProtocolValueRule::ProxyProtocolValueRule
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void ProxyProtocolValueRule(uint8_t type, std::optional<std::string>
      value)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:1424,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 9
    argCount: 1
    argNames:
    - dq
    argTypes:
    - DNSQuestion*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1430
      start: 1417
    functionDepth: 0
    functionLinenumber: 1417
    functionLinenumberEnd: 1430
    functionName: ProxyProtocolValueRule::matches
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh
    functionUses: 0
    functionsReached:
    - empty
    linkageType: ''
    returnType: bool
    signature: bool matches(const DNSQuestion* dq) const override
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:1435,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:1437,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1438
      start: 1432
    functionDepth: 0
    functionLinenumber: 1432
    functionLinenumberEnd: 1438
    functionName: ProxyProtocolValueRule::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh
    functionUses: 0
    functionsReached:
    - std::to_string
    linkageType: ''
    returnType: string
    signature: string toString() const override
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:1476,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 2
    argNames:
    - ' comparison'
    - size
    argTypes:
    - std::string
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1478
      start: 1457
    functionDepth: 0
    functionLinenumber: 1457
    functionLinenumberEnd: 1478
    functionName: PayloadSizeRule::PayloadSizeRule
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh
    functionUses: 0
    functionsReached:
    - std::runtime_error
    linkageType: ''
    returnType: void
    signature: void PayloadSizeRule(const std::string& comparison, uint16_t size)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: DNSQuestion*::getData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:1482,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 1
    argNames:
    - dq
    argTypes:
    - DNSQuestion*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1498
      start: 1480
    functionDepth: 0
    functionLinenumber: 1480
    functionLinenumberEnd: 1498
    functionName: PayloadSizeRule::matches
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh
    functionUses: 0
    functionsReached:
    - DNSQuestion*::getData
    linkageType: ''
    returnType: bool
    signature: bool matches(const DNSQuestion* dq) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::array::at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:1508,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:1508,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:1508,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1509
      start: 1500
    functionDepth: 0
    functionLinenumber: 1500
    functionLinenumberEnd: 1509
    functionName: PayloadSizeRule::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh
    functionUses: 0
    functionsReached:
    - static_cast<size_t>
    - std::array::at
    - std::to_string
    linkageType: ''
    returnType: string
    signature: string toString() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' protocol'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1522
      start: 1519
    functionDepth: 0
    functionLinenumber: 1519
    functionLinenumberEnd: 1522
    functionName: IncomingProtocolRule::IncomingProtocolRule
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void IncomingProtocolRule(const std::string& protocol)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSQuestion*::getProtocol
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:1526,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - dq
    argTypes:
    - DNSQuestion*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1527
      start: 1524
    functionDepth: 1
    functionLinenumber: 1524
    functionLinenumberEnd: 1527
    functionName: IncomingProtocolRule::matches
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh
    functionUses: 0
    functionsReached:
    - DNSQuestion*::getProtocol
    linkageType: ''
    returnType: bool
    signature: bool matches(const DNSQuestion* dq) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: IncomingProtocolRule::toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh:1531,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1532
      start: 1529
    functionDepth: 0
    functionLinenumber: 1529
    functionLinenumberEnd: 1532
    functionName: IncomingProtocolRule::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh
    functionUses: 1
    functionsReached:
    - IncomingProtocolRule::toString
    linkageType: ''
    returnType: string
    signature: string toString() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 39
      start: 39
    functionDepth: 0
    functionLinenumber: 39
    functionLinenumberEnd: 39
    functionName: dnsdist::QueryCount::Configuration
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-query-count.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Configuration()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 39
      start: 39
    functionDepth: 0
    functionLinenumber: 39
    functionLinenumberEnd: 39
    functionName: dnsdist::QueryCount::Configuration
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-query-count.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Configuration()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistserverpool.cc:38,1
    - Dst: ServerPool::getCache
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistserverpool.cc:38,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistserverpool.cc:40,1
    - Dst: ServerPool::getECS
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistserverpool.cc:40,1
    - Dst: ServerPool::setECS
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistserverpool.cc:43,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistserverpool.cc:44,1
    - Dst: ServerPool::getECS
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistserverpool.cc:44,1
    - Dst: ServerPool::setECS
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistserverpool.cc:45,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistserverpool.cc:46,1
    - Dst: ServerPool::getECS
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistserverpool.cc:46,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistserverpool.cc:48,1
    - Dst: ServerPool::getZeroScope
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistserverpool.cc:48,1
    - Dst: ServerPool::setZeroScope
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistserverpool.cc:51,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistserverpool.cc:52,1
    - Dst: ServerPool::getZeroScope
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistserverpool.cc:52,1
    - Dst: ServerPool::setZeroScope
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistserverpool.cc:53,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistserverpool.cc:54,1
    - Dst: ServerPool::getZeroScope
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistserverpool.cc:54,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistserverpool.cc:56,1
    - Dst: ServerPool::isTCPOnly
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistserverpool.cc:56,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistserverpool.cc:57,1
    - Dst: ServerPool::isConsistent
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistserverpool.cc:57,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistserverpool.cc:58,1
    - Dst: ServerPool::hasAtLeastOneServerAvailable
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistserverpool.cc:58,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistserverpool.cc:59,1
    - Dst: ServerPool::countServers
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistserverpool.cc:59,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistserverpool.cc:60,1
    - Dst: ServerPool::countServers
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistserverpool.cc:60,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistserverpool.cc:61,1
    - Dst: ServerPool::poolLoad
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistserverpool.cc:61,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistserverpool.cc:62,1
    - Dst: ServerPool::shouldKeepStaleData
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistserverpool.cc:62,1
    - Dst: ServerPool::getServers
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistserverpool.cc:65,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistserverpool.cc:66,1
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistserverpool.cc:66,1
    - Dst: std::make_shared<DownstreamState>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistserverpool.cc:72,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistserverpool.cc:72,1
    - Dst: ServerPool::addServer
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistserverpool.cc:73,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistserverpool.cc:74,1
    - Dst: ServerPool::isTCPOnly
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistserverpool.cc:74,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistserverpool.cc:75,1
    - Dst: ServerPool::isConsistent
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistserverpool.cc:75,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistserverpool.cc:77,1
    - Dst: ServerPool::hasAtLeastOneServerAvailable
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistserverpool.cc:77,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistserverpool.cc:78,1
    - Dst: ServerPool::countServers
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistserverpool.cc:78,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistserverpool.cc:79,1
    - Dst: ServerPool::countServers
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistserverpool.cc:79,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistserverpool.cc:80,1
    - Dst: ServerPool::shouldKeepStaleData
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistserverpool.cc:80,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistserverpool.cc:82,1
    - Dst: ServerPool::poolLoad
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistserverpool.cc:82,1
    - Dst: ServerPool::getServers
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistserverpool.cc:84,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistserverpool.cc:85,1
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistserverpool.cc:85,1
    - Dst: auto::setUp
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistserverpool.cc:89,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistserverpool.cc:90,1
    - Dst: ServerPool::hasAtLeastOneServerAvailable
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistserverpool.cc:90,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistserverpool.cc:91,1
    - Dst: ServerPool::countServers
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistserverpool.cc:91,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistserverpool.cc:92,1
    - Dst: ServerPool::countServers
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistserverpool.cc:92,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistserverpool.cc:93,1
    - Dst: ServerPool::shouldKeepStaleData
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistserverpool.cc:93,1
    - Dst: ServerPool::removeServer
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistserverpool.cc:96,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistserverpool.cc:97,1
    - Dst: ServerPool::countServers
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistserverpool.cc:97,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistserverpool.cc:98,1
    - Dst: ServerPool::countServers
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistserverpool.cc:98,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistserverpool.cc:99,1
    - Dst: ServerPool::shouldKeepStaleData
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistserverpool.cc:99,1
    - Dst: ServerPool::getServers
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistserverpool.cc:101,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistserverpool.cc:102,1
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistserverpool.cc:102,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 43
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 35
    functionDepth: 2
    functionLinenumber: 35
    functionLinenumberEnd: 105
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistserverpool.cc
    functionUses: 0
    functionsReached:
    - ServerPool::setECS
    - ServerPool::hasAtLeastOneServerAvailable
    - ServerPool::isTCPOnly
    - ServerPool::getCache
    - ServerPool::addServer
    - ServerPool::getZeroScope
    - ServerPool::countServers
    - ServerPool::getServers
    - std::make_shared<DownstreamState>
    - empty
    - ServerPool::removeServer
    - ServerPool::setZeroScope
    - ServerPool::getECS
    - ServerPool::shouldKeepStaleData
    - ServerPool::poolLoad
    - ServerPool::isConsistent
    - std::move
    - auto::setUp
    - BOOST_CHECK_EQUAL
    - BOOST_CHECK
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_ServerPoolBasics)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<DownstreamState>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistserverpool.cc:114,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistserverpool.cc:114,1
    - Dst: ServerPool::addServer
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistserverpool.cc:115,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistserverpool.cc:116,1
    - Dst: ServerPool::countServers
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistserverpool.cc:116,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistserverpool.cc:117,1
    - Dst: ServerPool::isTCPOnly
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistserverpool.cc:117,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistserverpool.cc:118,1
    - Dst: ServerPool::isConsistent
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistserverpool.cc:118,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistserverpool.cc:119,1
    - Dst: ServerPool::getECS
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistserverpool.cc:119,1
    - Dst: ServerPool::setECS
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistserverpool.cc:121,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistserverpool.cc:122,1
    - Dst: ServerPool::getECS
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistserverpool.cc:122,1
    - Dst: std::make_shared<DownstreamState>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistserverpool.cc:127,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistserverpool.cc:127,1
    - Dst: ServerPool::addServer
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistserverpool.cc:128,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistserverpool.cc:129,1
    - Dst: ServerPool::countServers
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistserverpool.cc:129,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistserverpool.cc:130,1
    - Dst: ServerPool::isTCPOnly
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistserverpool.cc:130,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistserverpool.cc:131,1
    - Dst: ServerPool::isConsistent
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistserverpool.cc:131,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistserverpool.cc:135,1
    - Dst: ServerPool::getECS
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistserverpool.cc:135,1
    - Dst: ServerPool::setECS
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistserverpool.cc:137,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistserverpool.cc:138,1
    - Dst: ServerPool::getECS
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistserverpool.cc:138,1
    - Dst: ServerPool::setECS
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistserverpool.cc:140,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistserverpool.cc:141,1
    - Dst: ServerPool::getECS
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistserverpool.cc:141,1
    - Dst: ServerPool::removeServer
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistserverpool.cc:144,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistserverpool.cc:145,1
    - Dst: ServerPool::countServers
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistserverpool.cc:145,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistserverpool.cc:146,1
    - Dst: ServerPool::isTCPOnly
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistserverpool.cc:146,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistserverpool.cc:147,1
    - Dst: ServerPool::isConsistent
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistserverpool.cc:147,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistserverpool.cc:148,1
    - Dst: ServerPool::getECS
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistserverpool.cc:148,1
    - Dst: ServerPool::addServer
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistserverpool.cc:151,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistserverpool.cc:152,1
    - Dst: ServerPool::countServers
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistserverpool.cc:152,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistserverpool.cc:153,1
    - Dst: ServerPool::isTCPOnly
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistserverpool.cc:153,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistserverpool.cc:154,1
    - Dst: ServerPool::isConsistent
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistserverpool.cc:154,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistserverpool.cc:158,1
    - Dst: ServerPool::getECS
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistserverpool.cc:158,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 29
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 159
      start: 107
    functionDepth: 2
    functionLinenumber: 107
    functionLinenumberEnd: 159
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistserverpool.cc
    functionUses: 0
    functionsReached:
    - std::move
    - ServerPool::setECS
    - ServerPool::isTCPOnly
    - BOOST_CHECK_EQUAL
    - ServerPool::addServer
    - ServerPool::countServers
    - ServerPool::isConsistent
    - std::make_shared<DownstreamState>
    - ServerPool::removeServer
    - BOOST_CHECK
    - ServerPool::getECS
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_ServerPoolECSConsistency)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<DownstreamState>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistserverpool.cc:167,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistserverpool.cc:167,1
    - Dst: ServerPool::addServer
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistserverpool.cc:168,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistserverpool.cc:169,1
    - Dst: ServerPool::countServers
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistserverpool.cc:169,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistserverpool.cc:170,1
    - Dst: ServerPool::isTCPOnly
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistserverpool.cc:170,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistserverpool.cc:171,1
    - Dst: ServerPool::isConsistent
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistserverpool.cc:171,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistserverpool.cc:172,1
    - Dst: ServerPool::getECS
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistserverpool.cc:172,1
    - Dst: std::make_shared<DownstreamState>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistserverpool.cc:176,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistserverpool.cc:176,1
    - Dst: ServerPool::addServer
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistserverpool.cc:177,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistserverpool.cc:178,1
    - Dst: ServerPool::countServers
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistserverpool.cc:178,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistserverpool.cc:179,1
    - Dst: ServerPool::isTCPOnly
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistserverpool.cc:179,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistserverpool.cc:180,1
    - Dst: ServerPool::isConsistent
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistserverpool.cc:180,1
    - Dst: ServerPool::removeServer
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistserverpool.cc:183,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistserverpool.cc:184,1
    - Dst: ServerPool::countServers
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistserverpool.cc:184,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistserverpool.cc:185,1
    - Dst: ServerPool::isTCPOnly
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistserverpool.cc:185,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistserverpool.cc:186,1
    - Dst: ServerPool::isConsistent
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistserverpool.cc:186,1
    - Dst: ServerPool::addServer
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistserverpool.cc:189,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistserverpool.cc:190,1
    - Dst: ServerPool::countServers
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistserverpool.cc:190,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistserverpool.cc:191,1
    - Dst: ServerPool::isTCPOnly
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistserverpool.cc:191,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistserverpool.cc:192,1
    - Dst: ServerPool::isConsistent
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistserverpool.cc:192,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 20
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 193
      start: 161
    functionDepth: 2
    functionLinenumber: 161
    functionLinenumberEnd: 193
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistserverpool.cc
    functionUses: 0
    functionsReached:
    - std::move
    - ServerPool::isTCPOnly
    - BOOST_CHECK_EQUAL
    - ServerPool::addServer
    - ServerPool::countServers
    - ServerPool::isConsistent
    - std::make_shared<DownstreamState>
    - ServerPool::removeServer
    - BOOST_CHECK
    - ServerPool::getECS
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_ServerPoolTCPOnlyConsistency)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: clock_gettime
      Src: /src/pdns/pdns/dnsdistdist/gettime.cc:34,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - tp
    - needRealTime
    argTypes:
    - struct timespec*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 35
      start: 32
    functionDepth: 0
    functionLinenumber: 32
    functionLinenumberEnd: 35
    functionName: gettime
    functionSourceFile: /src/pdns/pdns/dnsdistdist/gettime.cc
    functionUses: 25
    functionsReached:
    - clock_gettime
    linkageType: ''
    returnType: int
    signature: int gettime(struct timespec *tp, bool needRealTime)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: gettimeofday
      Src: /src/pdns/pdns/dnsdistdist/gettime.cc:45,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - tp
    argTypes:
    - struct timespec*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 41
    functionDepth: 0
    functionLinenumber: 41
    functionLinenumberEnd: 51
    functionName: gettime
    functionSourceFile: /src/pdns/pdns/dnsdistdist/gettime.cc
    functionUses: 25
    functionsReached:
    - gettimeofday
    linkageType: ''
    returnType: int
    signature: int gettime(struct timespec *tp, bool /* needRealTime */)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: string::length
      Src: /src/pdns/pdns/dnsdistdist/misc.hh:126,1
    - Dst: string::find_first_not_of
      Src: /src/pdns/pdns/dnsdistdist/misc.hh:131,1
    - Dst: string::find_first_of
      Src: /src/pdns/pdns/dnsdistdist/misc.hh:136,1
    - Dst: Container::push_back
      Src: /src/pdns/pdns/dnsdistdist/misc.hh:140,1
    - Dst: string::substr
      Src: /src/pdns/pdns/dnsdistdist/misc.hh:140,1
    - Dst: Container::push_back
      Src: /src/pdns/pdns/dnsdistdist/misc.hh:143,1
    - Dst: string::substr
      Src: /src/pdns/pdns/dnsdistdist/misc.hh:143,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 2
    argNames:
    - container
    - in
    argTypes:
    - Container
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 148
      start: 122
    functionDepth: 0
    functionLinenumber: 122
    functionLinenumberEnd: 148
    functionName: stringtok
    functionSourceFile: /src/pdns/pdns/dnsdistdist/misc.hh
    functionUses: 57
    functionsReached:
    - Container::push_back
    - string::length
    - string::substr
    - string::find_first_not_of
    - string::find_first_of
    linkageType: ''
    returnType: void
    signature: "void stringtok (Container &container, string const &in,\n           const
      char * const delimiters = \" \\t\\n\")"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<std::make_signed_t<T>>
      Src: /src/pdns/pdns/dnsdistdist/misc.hh:153,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - lhs
    - rhs
    argTypes:
    - T
    - T
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 154
      start: 150
    functionDepth: 0
    functionLinenumber: 150
    functionLinenumberEnd: 154
    functionName: rfc1982LessThan
    functionSourceFile: /src/pdns/pdns/dnsdistdist/misc.hh
    functionUses: 9
    functionsReached:
    - static_cast<std::make_signed_t<T>>
    linkageType: ''
    returnType: bool
    signature: bool rfc1982LessThan(T lhs, T rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<std::make_signed_t<T>>
      Src: /src/pdns/pdns/dnsdistdist/misc.hh:159,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - lhs
    - rhs
    argTypes:
    - T
    - T
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 160
      start: 156
    functionDepth: 0
    functionLinenumber: 156
    functionLinenumberEnd: 160
    functionName: rfc1982LessThanOrEqual
    functionSourceFile: /src/pdns/pdns/dnsdistdist/misc.hh
    functionUses: 3
    functionsReached:
    - static_cast<std::make_signed_t<T>>
    linkageType: ''
    returnType: bool
    signature: bool rfc1982LessThanOrEqual(T lhs, T rhs)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: string::length
      Src: /src/pdns/pdns/dnsdistdist/misc.hh:168,1
    - Dst: string::find_first_not_of
      Src: /src/pdns/pdns/dnsdistdist/misc.hh:173,1
    - Dst: string::find_first_of
      Src: /src/pdns/pdns/dnsdistdist/misc.hh:178,1
    - Dst: Container::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/misc.hh:182,1
    - Dst: Container::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/misc.hh:185,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 2
    argNames:
    - container
    - in
    argTypes:
    - Container
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 190
      start: 164
    functionDepth: 0
    functionLinenumber: 164
    functionLinenumberEnd: 190
    functionName: vstringtok
    functionSourceFile: /src/pdns/pdns/dnsdistdist/misc.hh
    functionUses: 3
    functionsReached:
    - Container::emplace_back
    - string::find_first_of
    - string::length
    - string::find_first_not_of
    linkageType: ''
    returnType: void
    signature: "void vstringtok (Container &container, string const &in,\n           const
      char * const delimiters = \" \\t\\n\")"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: writen2
      Src: /src/pdns/pdns/dnsdistdist/misc.hh:193,1
    - Dst: std::string::data
      Src: /src/pdns/pdns/dnsdistdist/misc.hh:193,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/dnsdistdist/misc.hh:193,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - fd
    - s
    argTypes:
    - int
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 193
      start: 193
    functionDepth: 0
    functionLinenumber: 193
    functionLinenumberEnd: 193
    functionName: writen2
    functionSourceFile: /src/pdns/pdns/dnsdistdist/misc.hh
    functionUses: 15
    functionsReached:
    - std::string::data
    - std::string::size
    - writen2
    linkageType: ''
    returnType: size_t
    signature: size_t writen2(int fd, const std::string &s)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::getMessageFromErrno
      Src: /src/pdns/pdns/dnsdistdist/misc.hh:206,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 207
      start: 204
    functionDepth: 0
    functionLinenumber: 204
    functionLinenumberEnd: 207
    functionName: stringerror
    functionSourceFile: /src/pdns/pdns/dnsdistdist/misc.hh
    functionUses: 159
    functionsReached:
    - pdns::getMessageFromErrno
    linkageType: ''
    returnType: string
    signature: string stringerror(int err = errno)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: clock_gettime
      Src: /src/pdns/pdns/dnsdistdist/misc.hh:219,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 220
      start: 217
    functionDepth: 0
    functionLinenumber: 217
    functionLinenumberEnd: 220
    functionName: CPUTime::start
    functionSourceFile: /src/pdns/pdns/dnsdistdist/misc.hh
    functionUses: 1
    functionsReached:
    - clock_gettime
    linkageType: ''
    returnType: void
    signature: void start()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: clock_gettime
      Src: /src/pdns/pdns/dnsdistdist/misc.hh:224,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 226
      start: 221
    functionDepth: 0
    functionLinenumber: 221
    functionLinenumberEnd: 226
    functionName: CPUTime::ndiff
    functionSourceFile: /src/pdns/pdns/dnsdistdist/misc.hh
    functionUses: 1
    functionsReached:
    - clock_gettime
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t ndiff()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 238
      start: 238
    functionDepth: 0
    functionLinenumber: 238
    functionLinenumberEnd: 238
    functionName: DTime::DTime
    functionSourceFile: /src/pdns/pdns/dnsdistdist/misc.hh
    functionUses: 7
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void DTime()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 1
    argNames:
    - dt
    argTypes:
    - DTime
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 239
      start: 239
    functionDepth: 0
    functionLinenumber: 239
    functionLinenumberEnd: 239
    functionName: DTime::DTime
    functionSourceFile: /src/pdns/pdns/dnsdistdist/misc.hh
    functionUses: 7
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void DTime(const DTime &dt)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 1
    argNames:
    - dt
    argTypes:
    - DTime
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 240
      start: 240
    functionDepth: 0
    functionLinenumber: 240
    functionLinenumberEnd: 240
    functionName: '& operator=(const DTime &dt)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/misc.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: DTime
    signature: DTime & operator=(const DTime &dt)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DTime::udiff
      Src: /src/pdns/pdns/dnsdistdist/misc.hh:247,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 248
      start: 245
    functionDepth: 0
    functionLinenumber: 245
    functionLinenumberEnd: 248
    functionName: DTime::udiffNoReset
    functionSourceFile: /src/pdns/pdns/dnsdistdist/misc.hh
    functionUses: 4
    functionsReached:
    - DTime::udiff
    linkageType: ''
    returnType: int
    signature: int udiffNoReset()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' tv'
    argTypes:
    - struct timeval
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 252
      start: 249
    functionDepth: 0
    functionLinenumber: 249
    functionLinenumberEnd: 252
    functionName: DTime::setTimeval
    functionSourceFile: /src/pdns/pdns/dnsdistdist/misc.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setTimeval(const struct timeval& tv)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 256
      start: 253
    functionDepth: 0
    functionLinenumber: 253
    functionLinenumberEnd: 256
    functionName: DTime::getTimeval
    functionSourceFile: /src/pdns/pdns/dnsdistdist/misc.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct timeval
    signature: struct timeval getTimeval() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 264
      start: 261
    functionDepth: 0
    functionLinenumber: 261
    functionLinenumberEnd: 264
    functionName: DTime::time
    functionSourceFile: /src/pdns/pdns/dnsdistdist/misc.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: time_t
    signature: time_t DTime::time() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: gettimeofday
      Src: /src/pdns/pdns/dnsdistdist/misc.hh:268,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 269
      start: 266
    functionDepth: 0
    functionLinenumber: 266
    functionLinenumberEnd: 269
    functionName: DTime::set
    functionSourceFile: /src/pdns/pdns/dnsdistdist/misc.hh
    functionUses: 7
    functionsReached:
    - gettimeofday
    linkageType: ''
    returnType: void
    signature: void DTime::set()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: gettimeofday
      Src: /src/pdns/pdns/dnsdistdist/misc.hh:274,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - reset
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 283
      start: 271
    functionDepth: 0
    functionLinenumber: 271
    functionLinenumberEnd: 283
    functionName: DTime::udiff
    functionSourceFile: /src/pdns/pdns/dnsdistdist/misc.hh
    functionUses: 7
    functionsReached:
    - gettimeofday
    linkageType: ''
    returnType: int
    signature: int DTime::udiff(bool reset)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: length
      Src: /src/pdns/pdns/dnsdistdist/misc.hh:287,1
    - Dst: dns_tolower
      Src: /src/pdns/pdns/dnsdistdist/misc.hh:290,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - ' str'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 295
      start: 285
    functionDepth: 0
    functionLinenumber: 285
    functionLinenumberEnd: 295
    functionName: toLowerInPlace
    functionSourceFile: /src/pdns/pdns/dnsdistdist/misc.hh
    functionUses: 6
    functionsReached:
    - length
    - dns_tolower
    linkageType: ''
    returnType: void
    signature: void toLowerInPlace(string& str)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: toLowerInPlace
      Src: /src/pdns/pdns/dnsdistdist/misc.hh:301,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - upper
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 304
      start: 297
    functionDepth: 0
    functionLinenumber: 297
    functionLinenumberEnd: 304
    functionName: toLower
    functionSourceFile: /src/pdns/pdns/dnsdistdist/misc.hh
    functionUses: 14
    functionsReached:
    - toLowerInPlace
    linkageType: ''
    returnType: string
    signature: string toLower(const string &upper)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: string::empty
      Src: /src/pdns/pdns/dnsdistdist/misc.hh:309,1
    - Dst: string::length
      Src: /src/pdns/pdns/dnsdistdist/misc.hh:310,1
    - Dst: string::resize
      Src: /src/pdns/pdns/dnsdistdist/misc.hh:312,1
    - Dst: toLowerInPlace
      Src: /src/pdns/pdns/dnsdistdist/misc.hh:314,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - upper
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 317
      start: 306
    functionDepth: 1
    functionLinenumber: 306
    functionLinenumberEnd: 317
    functionName: toLowerCanonic
    functionSourceFile: /src/pdns/pdns/dnsdistdist/misc.hh
    functionUses: 0
    functionsReached:
    - string::resize
    - toLowerInPlace
    - string::length
    - string::empty
    linkageType: ''
    returnType: string
    signature: string toLowerCanonic(const string &upper)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: length
      Src: /src/pdns/pdns/dnsdistdist/misc.hh:323,1
    - Dst: dns_toupper
      Src: /src/pdns/pdns/dnsdistdist/misc.hh:324,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ' s'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 327
      start: 320
    functionDepth: 0
    functionLinenumber: 320
    functionLinenumberEnd: 327
    functionName: toUpper
    functionSourceFile: /src/pdns/pdns/dnsdistdist/misc.hh
    functionUses: 9
    functionsReached:
    - length
    - dns_toupper
    linkageType: ''
    returnType: string
    signature: string toUpper( const string& s )
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: gettimeofday
      Src: /src/pdns/pdns/dnsdistdist/misc.hh:332,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 335
      start: 329
    functionDepth: 0
    functionLinenumber: 329
    functionLinenumberEnd: 335
    functionName: getTime
    functionSourceFile: /src/pdns/pdns/dnsdistdist/misc.hh
    functionUses: 0
    functionsReached:
    - gettimeofday
    linkageType: ''
    returnType: double
    signature: double getTime()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: runtime_error
      Src: /src/pdns/pdns/dnsdistdist/misc.hh:339,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/misc.hh:339,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - why
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 340
      start: 337
    functionDepth: 0
    functionLinenumber: 337
    functionLinenumberEnd: 340
    functionName: unixDie
    functionSourceFile: /src/pdns/pdns/dnsdistdist/misc.hh
    functionUses: 32
    functionsReached:
    - stringerror
    - runtime_error
    linkageType: ''
    returnType: void
    signature: void unixDie(const string &why)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' tv'
    argTypes:
    - struct timeval
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 353
      start: 350
    functionDepth: 0
    functionLinenumber: 350
    functionLinenumberEnd: 353
    functionName: makeFloat
    functionSourceFile: /src/pdns/pdns/dnsdistdist/misc.hh
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: float
    signature: float makeFloat(const struct timeval& tv)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' tv'
    argTypes:
    - struct timeval
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 357
      start: 354
    functionDepth: 0
    functionLinenumber: 354
    functionLinenumberEnd: 357
    functionName: uSec
    functionSourceFile: /src/pdns/pdns/dnsdistdist/misc.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t uSec(const struct timeval& tv)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::tie
      Src: /src/pdns/pdns/dnsdistdist/misc.hh:361,1
    - Dst: std::tie
      Src: /src/pdns/pdns/dnsdistdist/misc.hh:361,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' lhs'
    - ' rhs'
    argTypes:
    - struct timeval
    - struct timeval
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 362
      start: 359
    functionDepth: 0
    functionLinenumber: 359
    functionLinenumberEnd: 362
    functionName: operator<(const struct timeval& lhs, const struct timeval& rhs)
    functionSourceFile: /src/pdns/pdns/dnsdistdist/misc.hh
    functionUses: 0
    functionsReached:
    - std::tie
    linkageType: ''
    returnType: bool
    signature: bool operator<(const struct timeval& lhs, const struct timeval& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::tie
      Src: /src/pdns/pdns/dnsdistdist/misc.hh:365,1
    - Dst: std::tie
      Src: /src/pdns/pdns/dnsdistdist/misc.hh:365,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' lhs'
    - ' rhs'
    argTypes:
    - struct timeval
    - struct timeval
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 366
      start: 363
    functionDepth: 0
    functionLinenumber: 363
    functionLinenumberEnd: 366
    functionName: operator<=(const struct timeval& lhs, const struct timeval& rhs)
    functionSourceFile: /src/pdns/pdns/dnsdistdist/misc.hh
    functionUses: 0
    functionsReached:
    - std::tie
    linkageType: ''
    returnType: bool
    signature: bool operator<=(const struct timeval& lhs, const struct timeval& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::tie
      Src: /src/pdns/pdns/dnsdistdist/misc.hh:370,1
    - Dst: std::tie
      Src: /src/pdns/pdns/dnsdistdist/misc.hh:370,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' lhs'
    - ' rhs'
    argTypes:
    - struct timespec
    - struct timespec
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 371
      start: 368
    functionDepth: 0
    functionLinenumber: 368
    functionLinenumberEnd: 371
    functionName: operator<(const struct timespec& lhs, const struct timespec& rhs)
    functionSourceFile: /src/pdns/pdns/dnsdistdist/misc.hh
    functionUses: 0
    functionsReached:
    - std::tie
    linkageType: ''
    returnType: bool
    signature: bool operator<(const struct timespec& lhs, const struct timespec& rhs)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: std::string_view::data
      Src: /src/pdns/pdns/dnsdistdist/misc.hh:377,1
    - Dst: std::string_view::data
      Src: /src/pdns/pdns/dnsdistdist/misc.hh:377,1
    - Dst: std::string_view::length
      Src: /src/pdns/pdns/dnsdistdist/misc.hh:378,1
    - Dst: std::string_view::length
      Src: /src/pdns/pdns/dnsdistdist/misc.hh:378,1
    - Dst: dns_tolower
      Src: /src/pdns/pdns/dnsdistdist/misc.hh:381,1
    - Dst: dns_tolower
      Src: /src/pdns/pdns/dnsdistdist/misc.hh:381,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - std::string_view
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 400
      start: 375
    functionDepth: 0
    functionLinenumber: 375
    functionLinenumberEnd: 400
    functionName: pdns_ilexicographical_compare_three_way
    functionSourceFile: /src/pdns/pdns/dnsdistdist/misc.hh
    functionUses: 5
    functionsReached:
    - std::string_view::data
    - std::string_view::length
    - dns_tolower
    linkageType: ''
    returnType: int
    signature: int pdns_ilexicographical_compare_three_way(std::string_view a, std::string_view
      b)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns_ilexicographical_compare_three_way
      Src: /src/pdns/pdns/dnsdistdist/misc.hh:405,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' a'
    - ' b'
    argTypes:
    - std::string
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 406
      start: 403
    functionDepth: 0
    functionLinenumber: 403
    functionLinenumberEnd: 406
    functionName: pdns_ilexicographical_compare
    functionSourceFile: /src/pdns/pdns/dnsdistdist/misc.hh
    functionUses: 3
    functionsReached:
    - pdns_ilexicographical_compare_three_way
    linkageType: ''
    returnType: bool
    signature: bool pdns_ilexicographical_compare(const std::string& a, const std::string&
      b)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: length
      Src: /src/pdns/pdns/dnsdistdist/misc.hh:411,1
    - Dst: length
      Src: /src/pdns/pdns/dnsdistdist/misc.hh:411,1
    - Dst: pdns_ilexicographical_compare_three_way
      Src: /src/pdns/pdns/dnsdistdist/misc.hh:414,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - ' a'
    - ' b'
    argTypes:
    - std::string
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 415
      start: 409
    functionDepth: 0
    functionLinenumber: 409
    functionLinenumberEnd: 415
    functionName: pdns_iequals
    functionSourceFile: /src/pdns/pdns/dnsdistdist/misc.hh
    functionUses: 26
    functionsReached:
    - length
    - pdns_ilexicographical_compare_three_way
    linkageType: ''
    returnType: bool
    signature: bool pdns_iequals(const std::string& a, const std::string& b)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dns_tolower
      Src: /src/pdns/pdns/dnsdistdist/misc.hh:420,1
    - Dst: dns_tolower
      Src: /src/pdns/pdns/dnsdistdist/misc.hh:420,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - char
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 424
      start: 418
    functionDepth: 0
    functionLinenumber: 418
    functionLinenumberEnd: 424
    functionName: pdns_iequals_ch
    functionSourceFile: /src/pdns/pdns/dnsdistdist/misc.hh
    functionUses: 0
    functionsReached:
    - dns_tolower
    linkageType: ''
    returnType: bool
    signature: bool pdns_iequals_ch(const char a, const char b)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns_ilexicographical_compare
      Src: /src/pdns/pdns/dnsdistdist/misc.hh:435,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' a'
    - ' b'
    argTypes:
    - string
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 436
      start: 433
    functionDepth: 0
    functionLinenumber: 433
    functionLinenumberEnd: 436
    functionName: operator()(const string& a, const string& b) const
    functionSourceFile: /src/pdns/pdns/dnsdistdist/misc.hh
    functionUses: 0
    functionsReached:
    - pdns_ilexicographical_compare
    linkageType: ''
    returnType: bool
    signature: bool operator()(const string& a, const string& b) const
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: std::locale
      Src: /src/pdns/pdns/dnsdistdist/misc.hh:443,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/misc.hh:444,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/misc.hh:445,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/misc.hh:446,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/misc.hh:447,1
    - Dst: std::tolower
      Src: /src/pdns/pdns/dnsdistdist/misc.hh:447,1
    - Dst: std::tolower
      Src: /src/pdns/pdns/dnsdistdist/misc.hh:447,1
    - Dst: std::tolower
      Src: /src/pdns/pdns/dnsdistdist/misc.hh:450,1
    - Dst: std::tolower
      Src: /src/pdns/pdns/dnsdistdist/misc.hh:450,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/misc.hh:455,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 2
    argNames:
    - ' lhs'
    - ' rhs'
    argTypes:
    - std::string
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 456
      start: 441
    functionDepth: 0
    functionLinenumber: 441
    functionLinenumberEnd: 456
    functionName: operator() (const std::string& lhs, const std::string& rhs) const
    functionSourceFile: /src/pdns/pdns/dnsdistdist/misc.hh
    functionUses: 0
    functionsReached:
    - std::locale
    - std::tolower
    - end
    - begin
    linkageType: ''
    returnType: bool
    signature: bool operator() (const std::string& lhs, const std::string& rhs) const
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pdns_ilexicographical_compare
      Src: /src/pdns/pdns/dnsdistdist/misc.hh:463,1
    - Dst: pdns_ilexicographical_compare
      Src: /src/pdns/pdns/dnsdistdist/misc.hh:465,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - ' a'
    - ' b'
    argTypes:
    - pair<string, uint16_t>
    - pair<string, uint16_t>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 468
      start: 461
    functionDepth: 0
    functionLinenumber: 461
    functionLinenumberEnd: 468
    functionName: operator()(const pair<string, uint16_t>& a, const pair<string, uint16_t>&
      b) const
    functionSourceFile: /src/pdns/pdns/dnsdistdist/misc.hh
    functionUses: 0
    functionsReached:
    - pdns_ilexicographical_compare
    linkageType: ''
    returnType: bool
    signature: bool operator()(const pair<string, uint16_t>& a, const pair<string,
      uint16_t>& b) const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::search
      Src: /src/pdns/pdns/dnsdistdist/misc.hh:473,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/misc.hh:473,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/misc.hh:473,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/misc.hh:474,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/misc.hh:474,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/misc.hh:475,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/misc.hh:479,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - ' haystack'
    - ' needle'
    argTypes:
    - string
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 481
      start: 471
    functionDepth: 0
    functionLinenumber: 471
    functionLinenumberEnd: 481
    functionName: pdns_ci_find
    functionSourceFile: /src/pdns/pdns/dnsdistdist/misc.hh
    functionUses: 0
    functionsReached:
    - std::search
    - end
    - begin
    linkageType: ''
    returnType: size_t
    signature: size_t pdns_ci_find(const string& haystack, const string& needle)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: boost::ends_with
      Src: /src/pdns/pdns/dnsdistdist/misc.hh:487,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - qname
    argTypes:
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 488
      start: 485
    functionDepth: 0
    functionLinenumber: 485
    functionLinenumberEnd: 488
    functionName: isCanonical
    functionSourceFile: /src/pdns/pdns/dnsdistdist/misc.hh
    functionUses: 5
    functionsReached:
    - boost::ends_with
    linkageType: ''
    returnType: bool
    signature: bool isCanonical(std::string_view qname)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/misc.hh:492,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/misc.hh:493,1
    - Dst: isCanonical
      Src: /src/pdns/pdns/dnsdistdist/misc.hh:494,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/misc.hh:495,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/misc.hh:496,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/misc.hh:496,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 2
    argNames:
    - ' zone'
    - ' qname'
    argTypes:
    - ZoneName
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 497
      start: 490
    functionDepth: 0
    functionLinenumber: 490
    functionLinenumberEnd: 497
    functionName: toCanonic
    functionSourceFile: /src/pdns/pdns/dnsdistdist/misc.hh
    functionUses: 1
    functionsReached:
    - isCanonical
    - DNSName
    - size
    linkageType: ''
    returnType: DNSName
    signature: DNSName toCanonic(const ZoneName& zone, const string& qname)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: insert
      Src: /src/pdns/pdns/dnsdistdist/misc.hh:510,1
    - Dst: replace
      Src: /src/pdns/pdns/dnsdistdist/misc.hh:511,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - ' i'
    - ' x'
    argTypes:
    - Index
    - typename Index::value_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 513
      start: 507
    functionDepth: 1
    functionLinenumber: 507
    functionLinenumberEnd: 513
    functionName: replacing_insert
    functionSourceFile: /src/pdns/pdns/dnsdistdist/misc.hh
    functionUses: 0
    functionsReached:
    - replace
    - insert
    linkageType: ''
    returnType: std::pair<typename Index::iterator,bool>
    signature: std::pair<typename Index::iterator,bool> replacing_insert(Index& i,const
      typename Index::value_type& x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 521
      start: 521
    functionDepth: 0
    functionLinenumber: 521
    functionLinenumberEnd: 521
    functionName: Regex::Regex
    functionSourceFile: /src/pdns/pdns/dnsdistdist/misc.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Regex(const Regex&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 522
      start: 522
    functionDepth: 0
    functionLinenumber: 522
    functionLinenumberEnd: 522
    functionName: '& operator=(const Regex&)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/misc.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Regex
    signature: Regex & operator=(const Regex&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - Regex
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 523
      start: 523
    functionDepth: 0
    functionLinenumber: 523
    functionLinenumberEnd: 523
    functionName: Regex::Regex
    functionSourceFile: /src/pdns/pdns/dnsdistdist/misc.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Regex(Regex&& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - Regex
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 524
      start: 524
    functionDepth: 0
    functionLinenumber: 524
    functionLinenumberEnd: 524
    functionName: '& operator=(Regex&& rhs)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/misc.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Regex
    signature: Regex & operator=(Regex&& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 525
      start: 525
    functionDepth: 0
    functionLinenumber: 525
    functionLinenumberEnd: 525
    functionName: ~Regex()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/misc.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~Regex()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: regfree
      Src: /src/pdns/pdns/dnsdistdist/misc.hh:534,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ptr
    argTypes:
    - regex_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 536
      start: 533
    functionDepth: 0
    functionLinenumber: 533
    functionLinenumberEnd: 536
    functionName: operator()(regex_t* ptr) const noexcept
    functionSourceFile: /src/pdns/pdns/dnsdistdist/misc.hh
    functionUses: 0
    functionsReached:
    - regfree
    linkageType: ''
    returnType: void
    signature: void operator()(regex_t* ptr) const noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/misc.hh:546,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - mask
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 548
      start: 545
    functionDepth: 0
    functionLinenumber: 545
    functionLinenumberEnd: 548
    functionName: SimpleMatch::SimpleMatch
    functionSourceFile: /src/pdns/pdns/dnsdistdist/misc.hh
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void SimpleMatch(string mask, bool caseFold = false)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: SimpleMatch::match
      Src: /src/pdns/pdns/dnsdistdist/misc.hh:562,1
    - Dst: dns_tolower
      Src: /src/pdns/pdns/dnsdistdist/misc.hh:570,1
    - Dst: dns_tolower
      Src: /src/pdns/pdns/dnsdistdist/misc.hh:570,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 34
    argCount: 4
    argNames:
    - mi
    - mend
    - vi
    - vend
    argTypes:
    - string::const_iterator
    - string::const_iterator
    - string::const_iterator
    - string::const_iterator
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 577
      start: 550
    functionDepth: 0
    functionLinenumber: 550
    functionLinenumberEnd: 577
    functionName: SimpleMatch::match
    functionSourceFile: /src/pdns/pdns/dnsdistdist/misc.hh
    functionUses: 8
    functionsReached:
    - SimpleMatch::match
    - dns_tolower
    linkageType: ''
    returnType: bool
    signature: bool match(string::const_iterator mi, string::const_iterator mend,
      string::const_iterator vi, string::const_iterator vend) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SimpleMatch::match
      Src: /src/pdns/pdns/dnsdistdist/misc.hh:580,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/misc.hh:580,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/misc.hh:580,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/misc.hh:580,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/misc.hh:580,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' value'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 581
      start: 579
    functionDepth: 0
    functionLinenumber: 579
    functionLinenumberEnd: 581
    functionName: SimpleMatch::match
    functionSourceFile: /src/pdns/pdns/dnsdistdist/misc.hh
    functionUses: 9
    functionsReached:
    - SimpleMatch::match
    - end
    - begin
    linkageType: ''
    returnType: bool
    signature: bool match(const string& value) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SimpleMatch::match
      Src: /src/pdns/pdns/dnsdistdist/misc.hh:584,1
    - Dst: toStringNoDot
      Src: /src/pdns/pdns/dnsdistdist/misc.hh:584,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' name'
    argTypes:
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 585
      start: 583
    functionDepth: 0
    functionLinenumber: 583
    functionLinenumberEnd: 585
    functionName: SimpleMatch::match
    functionSourceFile: /src/pdns/pdns/dnsdistdist/misc.hh
    functionUses: 10
    functionsReached:
    - SimpleMatch::match
    - toStringNoDot
    linkageType: ''
    returnType: bool
    signature: bool match(const DNSName& name) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SimpleMatch::match
      Src: /src/pdns/pdns/dnsdistdist/misc.hh:589,1
    - Dst: toStringNoDot
      Src: /src/pdns/pdns/dnsdistdist/misc.hh:589,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' name'
    argTypes:
    - ZoneName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 590
      start: 588
    functionDepth: 0
    functionLinenumber: 588
    functionLinenumberEnd: 590
    functionName: SimpleMatch::match
    functionSourceFile: /src/pdns/pdns/dnsdistdist/misc.hh
    functionUses: 11
    functionsReached:
    - SimpleMatch::match
    - toStringNoDot
    linkageType: ''
    returnType: bool
    signature: bool match(const ZoneName& name) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' a'
    - ' b'
    argTypes:
    - T
    - T
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 645
      start: 642
    functionDepth: 0
    functionLinenumber: 642
    functionLinenumberEnd: 645
    functionName: defTer
    functionSourceFile: /src/pdns/pdns/dnsdistdist/misc.hh
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: T
    signature: T & defTer(const T& a, const T& b)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: T
      Src: /src/pdns/pdns/dnsdistdist/misc.hh:650,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - val
    argTypes:
    - P
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 651
      start: 648
    functionDepth: 0
    functionLinenumber: 648
    functionLinenumberEnd: 651
    functionName: valueOrEmpty
    functionSourceFile: /src/pdns/pdns/dnsdistdist/misc.hh
    functionUses: 0
    functionsReached:
    - T
    linkageType: ''
    returnType: T
    signature: T valueOrEmpty(const P val)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - siz
    argTypes:
    - Integer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 663
      start: 657
    functionDepth: 0
    functionLinenumber: 657
    functionLinenumberEnd: 663
    functionName: addS
    functionSourceFile: /src/pdns/pdns/dnsdistdist/misc.hh
    functionUses: 7
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char * addS(Integer siz, const char* singular = "", const char *plural
      = "s")
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: addS
      Src: /src/pdns/pdns/dnsdistdist/misc.hh:669,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/misc.hh:669,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' c'
    argTypes:
    - C
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 670
      start: 667
    functionDepth: 0
    functionLinenumber: 667
    functionLinenumberEnd: 670
    functionName: addS
    functionSourceFile: /src/pdns/pdns/dnsdistdist/misc.hh
    functionUses: 8
    functionsReached:
    - addS
    - size
    linkageType: ''
    returnType: char
    signature: char * addS(const C& c, const char* singular = "", const char *plural
      = "s")
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: find
      Src: /src/pdns/pdns/dnsdistdist/misc.hh:675,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/misc.hh:676,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - ' c'
    - ' key'
    argTypes:
    - C
    - typename C::value_type::first_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 679
      start: 673
    functionDepth: 0
    functionLinenumber: 673
    functionLinenumberEnd: 679
    functionName: rplookup
    functionSourceFile: /src/pdns/pdns/dnsdistdist/misc.hh
    functionUses: 1
    functionsReached:
    - end
    - find
    linkageType: ''
    returnType: typename C::value_type::second_type
    signature: typename C::value_type::second_type * rplookup(const C& c, const typename
      C::value_type::first_type& key)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pdns::min
      Src: /src/pdns/pdns/dnsdistdist/misc.hh:709,1
    - Dst: pdns::min
      Src: /src/pdns/pdns/dnsdistdist/misc.hh:710,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/misc.hh:712,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/misc.hh:712,1
    - Dst: std::out_of_range
      Src: /src/pdns/pdns/dnsdistdist/misc.hh:713,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/misc.hh:717,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/misc.hh:718,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/misc.hh:720,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/misc.hh:720,1
    - Dst: std::out_of_range
      Src: /src/pdns/pdns/dnsdistdist/misc.hh:721,1
    - Dst: static_cast<T>
      Src: /src/pdns/pdns/dnsdistdist/misc.hh:725,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 12
    argCount: 1
    argNames:
    - from
    argTypes:
    - F
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 726
      start: 702
    functionDepth: 0
    functionLinenumber: 702
    functionLinenumberEnd: 726
    functionName: pdns::checked_conv
    functionSourceFile: /src/pdns/pdns/dnsdistdist/misc.hh
    functionUses: 0
    functionsReached:
    - pdns::max
    - std::out_of_range
    - std::to_string
    - static_cast<T>
    - pdns::min
    linkageType: ''
    returnType: auto
    signature: auto checked_conv(F from) -> T
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/misc.hh:759,1
    - Dst: pdns::checked_conv<T>
      Src: /src/pdns/pdns/dnsdistdist/misc.hh:768,1
    - Dst: std::stoull
      Src: /src/pdns/pdns/dnsdistdist/misc.hh:768,1
    - Dst: pdns::checked_conv<T>
      Src: /src/pdns/pdns/dnsdistdist/misc.hh:771,1
    - Dst: std::stoll
      Src: /src/pdns/pdns/dnsdistdist/misc.hh:771,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - ' str'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 773
      start: 755
    functionDepth: 0
    functionLinenumber: 755
    functionLinenumberEnd: 773
    functionName: pdns::checked_stoi
    functionSourceFile: /src/pdns/pdns/dnsdistdist/misc.hh
    functionUses: 4
    functionsReached:
    - empty
    - std::stoll
    - std::stoull
    - pdns::checked_conv<T>
    linkageType: ''
    returnType: auto
    signature: auto checked_stoi(const std::string& str, size_t* idx = nullptr, int
      base = 10) -> T
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pdns::checked_stoi
      Src: /src/pdns/pdns/dnsdistdist/misc.hh:797,1
    - Dst: std::out_of_range
      Src: /src/pdns/pdns/dnsdistdist/misc.hh:799,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - ' str'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 802
      start: 795
    functionDepth: 0
    functionLinenumber: 795
    functionLinenumberEnd: 802
    functionName: pdns::checked_stoi_nonzero
    functionSourceFile: /src/pdns/pdns/dnsdistdist/misc.hh
    functionUses: 0
    functionsReached:
    - std::out_of_range
    - pdns::checked_stoi
    linkageType: ''
    returnType: auto
    signature: auto checked_stoi_nonzero(const std::string& str, size_t* idx = nullptr,
      int base = 10) -> T
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::checked_stoi
      Src: /src/pdns/pdns/dnsdistdist/misc.hh:827,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' out'
    - ' str'
    argTypes:
    - T
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 828
      start: 825
    functionDepth: 0
    functionLinenumber: 825
    functionLinenumberEnd: 828
    functionName: pdns::checked_stoi_into
    functionSourceFile: /src/pdns/pdns/dnsdistdist/misc.hh
    functionUses: 23
    functionsReached:
    - pdns::checked_stoi
    linkageType: ''
    returnType: auto
    signature: auto checked_stoi_into(T& out, const std::string& str, size_t* idx
      = nullptr, int base = 10)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pdns::min
      Src: /src/pdns/pdns/dnsdistdist/misc.hh:709,1
    - Dst: pdns::min
      Src: /src/pdns/pdns/dnsdistdist/misc.hh:710,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/misc.hh:712,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/misc.hh:712,1
    - Dst: std::out_of_range
      Src: /src/pdns/pdns/dnsdistdist/misc.hh:713,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/misc.hh:717,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/misc.hh:718,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/misc.hh:720,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/misc.hh:720,1
    - Dst: std::out_of_range
      Src: /src/pdns/pdns/dnsdistdist/misc.hh:721,1
    - Dst: static_cast<T>
      Src: /src/pdns/pdns/dnsdistdist/misc.hh:725,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 12
    argCount: 1
    argNames:
    - from
    argTypes:
    - F
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 726
      start: 702
    functionDepth: 0
    functionLinenumber: 702
    functionLinenumberEnd: 726
    functionName: pdns::checked_conv
    functionSourceFile: /src/pdns/pdns/dnsdistdist/misc.hh
    functionUses: 0
    functionsReached:
    - pdns::max
    - std::out_of_range
    - std::to_string
    - static_cast<T>
    - pdns::min
    linkageType: ''
    returnType: auto
    signature: auto checked_conv(F from) -> T
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/misc.hh:759,1
    - Dst: pdns::checked_conv<T>
      Src: /src/pdns/pdns/dnsdistdist/misc.hh:768,1
    - Dst: std::stoull
      Src: /src/pdns/pdns/dnsdistdist/misc.hh:768,1
    - Dst: pdns::checked_conv<T>
      Src: /src/pdns/pdns/dnsdistdist/misc.hh:771,1
    - Dst: std::stoll
      Src: /src/pdns/pdns/dnsdistdist/misc.hh:771,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - ' str'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 773
      start: 755
    functionDepth: 0
    functionLinenumber: 755
    functionLinenumberEnd: 773
    functionName: pdns::checked_stoi
    functionSourceFile: /src/pdns/pdns/dnsdistdist/misc.hh
    functionUses: 6
    functionsReached:
    - empty
    - std::stoll
    - std::stoull
    - pdns::checked_conv<T>
    linkageType: ''
    returnType: auto
    signature: auto checked_stoi(const std::string& str, size_t* idx = nullptr, int
      base = 10) -> T
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pdns::checked_stoi
      Src: /src/pdns/pdns/dnsdistdist/misc.hh:797,1
    - Dst: std::out_of_range
      Src: /src/pdns/pdns/dnsdistdist/misc.hh:799,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - ' str'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 802
      start: 795
    functionDepth: 0
    functionLinenumber: 795
    functionLinenumberEnd: 802
    functionName: pdns::checked_stoi_nonzero
    functionSourceFile: /src/pdns/pdns/dnsdistdist/misc.hh
    functionUses: 0
    functionsReached:
    - std::out_of_range
    - pdns::checked_stoi
    linkageType: ''
    returnType: auto
    signature: auto checked_stoi_nonzero(const std::string& str, size_t* idx = nullptr,
      int base = 10) -> T
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::checked_stoi
      Src: /src/pdns/pdns/dnsdistdist/misc.hh:827,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' out'
    - ' str'
    argTypes:
    - T
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 828
      start: 825
    functionDepth: 0
    functionLinenumber: 825
    functionLinenumberEnd: 828
    functionName: pdns::checked_stoi_into
    functionSourceFile: /src/pdns/pdns/dnsdistdist/misc.hh
    functionUses: 23
    functionsReached:
    - pdns::checked_stoi
    linkageType: ''
    returnType: auto
    signature: auto checked_stoi_into(T& out, const std::string& str, size_t* idx
      = nullptr, int base = 10)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 856
      start: 856
    functionDepth: 0
    functionLinenumber: 856
    functionLinenumberEnd: 856
    functionName: FDWrapper
    functionSourceFile: /src/pdns/pdns/dnsdistdist/misc.hh
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void FDWrapper()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - desc
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 857
      start: 857
    functionDepth: 0
    functionLinenumber: 857
    functionLinenumberEnd: 857
    functionName: FDWrapper
    functionSourceFile: /src/pdns/pdns/dnsdistdist/misc.hh
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void FDWrapper(int desc)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 858
      start: 858
    functionDepth: 0
    functionLinenumber: 858
    functionLinenumberEnd: 858
    functionName: FDWrapper
    functionSourceFile: /src/pdns/pdns/dnsdistdist/misc.hh
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void FDWrapper(const FDWrapper&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - FDWrapper
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 859
      start: 859
    functionDepth: 0
    functionLinenumber: 859
    functionLinenumberEnd: 859
    functionName: '& operator=(const FDWrapper& rhs)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/misc.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: FDWrapper
    signature: FDWrapper & operator=(const FDWrapper& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: reset
      Src: /src/pdns/pdns/dnsdistdist/misc.hh:864,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 865
      start: 862
    functionDepth: 0
    functionLinenumber: 862
    functionLinenumberEnd: 865
    functionName: ~FDWrapper()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/misc.hh
    functionUses: 0
    functionsReached:
    - reset
    linkageType: ''
    returnType: void
    signature: void ~FDWrapper()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - FDWrapper
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 870
      start: 867
    functionDepth: 0
    functionLinenumber: 867
    functionLinenumberEnd: 870
    functionName: FDWrapper
    functionSourceFile: /src/pdns/pdns/dnsdistdist/misc.hh
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void FDWrapper(FDWrapper&& rhs) noexcept
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: close
      Src: /src/pdns/pdns/dnsdistdist/misc.hh:875,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - FDWrapper
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 880
      start: 872
    functionDepth: 0
    functionLinenumber: 872
    functionLinenumberEnd: 880
    functionName: '& operator=(FDWrapper&& rhs) noexcept'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/misc.hh
    functionUses: 0
    functionsReached:
    - close
    linkageType: ''
    returnType: FDWrapper
    signature: FDWrapper & operator=(FDWrapper&& rhs) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 885
      start: 882
    functionDepth: 0
    functionLinenumber: 882
    functionLinenumberEnd: 885
    functionName: getHandle
    functionSourceFile: /src/pdns/pdns/dnsdistdist/misc.hh
    functionUses: 69
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int getHandle() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 890
      start: 887
    functionDepth: 0
    functionLinenumber: 887
    functionLinenumberEnd: 890
    functionName: operator int() const
    functionSourceFile: /src/pdns/pdns/dnsdistdist/misc.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void operator int() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: close
      Src: /src/pdns/pdns/dnsdistdist/misc.hh:896,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 900
      start: 892
    functionDepth: 0
    functionLinenumber: 892
    functionLinenumberEnd: 900
    functionName: reset
    functionSourceFile: /src/pdns/pdns/dnsdistdist/misc.hh
    functionUses: 79
    functionsReached:
    - close
    linkageType: ''
    returnType: int
    signature: int reset()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 907
      start: 902
    functionDepth: 0
    functionLinenumber: 902
    functionLinenumberEnd: 907
    functionName: release
    functionSourceFile: /src/pdns/pdns/dnsdistdist/misc.hh
    functionUses: 41
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int release()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fclose
      Src: /src/pdns/pdns/dnsdistdist/misc.hh:927,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - filePtr
    argTypes:
    - FILE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 928
      start: 926
    functionDepth: 0
    functionLinenumber: 926
    functionLinenumberEnd: 928
    functionName: operator()(FILE* filePtr) const noexcept
    functionSourceFile: /src/pdns/pdns/dnsdistdist/misc.hh
    functionUses: 0
    functionsReached:
    - fclose
    linkageType: ''
    returnType: void
    signature: void operator()(FILE* filePtr) const noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fclose
      Src: /src/pdns/pdns/dnsdistdist/misc.hh:927,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - filePtr
    argTypes:
    - FILE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 928
      start: 926
    functionDepth: 0
    functionLinenumber: 926
    functionLinenumberEnd: 928
    functionName: operator()(FILE* filePtr) const noexcept
    functionSourceFile: /src/pdns/pdns/dnsdistdist/misc.hh
    functionUses: 0
    functionsReached:
    - fclose
    linkageType: ''
    returnType: void
    signature: void operator()(FILE* filePtr) const noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 36
      start: 36
    functionDepth: 0
    functionLinenumber: 36
    functionLinenumberEnd: 36
    functionName: ~MockTLSSession() override
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdist-session-cache.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~MockTLSSession() override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getUniqueID
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-session-cache.cc:44,1
    - Dst: getUniqueID
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-session-cache.cc:45,1
    - Dst: time
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-session-cache.cc:46,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-session-cache.cc:48,1
    - Dst: TLSSessionCache::getSize
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-session-cache.cc:48,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-session-cache.cc:52,1
    - Dst: std::make_unique<MockTLSSession>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-session-cache.cc:52,1
    - Dst: TLSSessionCache::putSessions
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-session-cache.cc:53,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-session-cache.cc:53,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-session-cache.cc:54,1
    - Dst: TLSSessionCache::getSize
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-session-cache.cc:54,1
    - Dst: TLSSessionCache::getSession
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-session-cache.cc:57,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-session-cache.cc:58,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-session-cache.cc:59,1
    - Dst: TLSSessionCache::getSize
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-session-cache.cc:59,1
    - Dst: TLSSessionCache::getSession
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-session-cache.cc:62,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-session-cache.cc:63,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-session-cache.cc:64,1
    - Dst: TLSSessionCache::getSize
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-session-cache.cc:64,1
    - Dst: std::vector::clear
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-session-cache.cc:67,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-session-cache.cc:68,1
    - Dst: std::make_unique<MockTLSSession>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-session-cache.cc:68,1
    - Dst: TLSSessionCache::putSessions
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-session-cache.cc:69,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-session-cache.cc:69,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-session-cache.cc:70,1
    - Dst: TLSSessionCache::getSize
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-session-cache.cc:70,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-session-cache.cc:73,1
    - Dst: std::max
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-session-cache.cc:74,1
    - Dst: std::vector::clear
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-session-cache.cc:77,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-session-cache.cc:78,1
    - Dst: std::make_unique<MockTLSSession>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-session-cache.cc:78,1
    - Dst: TLSSessionCache::putSessions
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-session-cache.cc:79,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-session-cache.cc:79,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-session-cache.cc:80,1
    - Dst: TLSSessionCache::getSize
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-session-cache.cc:80,1
    - Dst: TLSSessionCache::getSession
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-session-cache.cc:82,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-session-cache.cc:83,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 21
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 41
    functionDepth: 1
    functionLinenumber: 41
    functionLinenumberEnd: 84
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdist-session-cache.cc
    functionUses: 0
    functionsReached:
    - std::vector::push_back
    - std::move
    - dnsdist::configuration::getCurrentRuntimeConfiguration
    - getUniqueID
    - time
    - std::make_unique<MockTLSSession>
    - std::vector::clear
    - BOOST_REQUIRE
    - TLSSessionCache::getSession
    - std::max
    - TLSSessionCache::putSessions
    - TLSSessionCache::getSize
    - BOOST_REQUIRE_EQUAL
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_No_Rate_Limiting)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: add_bytes
      Src: /src/pdns/pdns/dnsdistdist/protozero.cc:31,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/protozero.cc:31,1
    - Dst: add_bytes
      Src: /src/pdns/pdns/dnsdistdist/protozero.cc:34,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/protozero.cc:34,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - type
    - ' address'
    argTypes:
    - protozero::pbf_tag_type
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 36
      start: 28
    functionDepth: 0
    functionLinenumber: 28
    functionLinenumberEnd: 36
    functionName: pdns::ProtoZero::Message::encodeComboAddress(const protozero::pbf_tag_type
      type, const ComboAddress& address)
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.cc
    functionUses: 0
    functionsReached:
    - add_bytes
    - reinterpret_cast<const char*>
    linkageType: ''
    returnType: void
    signature: void pdns::ProtoZero::Message::encodeComboAddress(const protozero::pbf_tag_type
      type, const ComboAddress& address)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/protozero.cc:40,1
    - Dst: getNetwork
      Src: /src/pdns/pdns/dnsdistdist/protozero.cc:41,1
    - Dst: ComboAddress::truncate
      Src: /src/pdns/pdns/dnsdistdist/protozero.cc:42,1
    - Dst: add_bytes
      Src: /src/pdns/pdns/dnsdistdist/protozero.cc:44,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/protozero.cc:44,1
    - Dst: add_bytes
      Src: /src/pdns/pdns/dnsdistdist/protozero.cc:47,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/protozero.cc:47,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 3
    argNames:
    - type
    - ' subnet'
    - mask
    argTypes:
    - protozero::pbf_tag_type
    - Netmask
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 38
    functionDepth: 0
    functionLinenumber: 38
    functionLinenumberEnd: 50
    functionName: pdns::ProtoZero::Message::encodeNetmask(const protozero::pbf_tag_type
      type, const Netmask& subnet, uint8_t mask)
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.cc
    functionUses: 0
    functionsReached:
    - add_bytes
    - reinterpret_cast<const char*>
    - getNetwork
    - ComboAddress::truncate
    - empty
    linkageType: ''
    returnType: void
    signature: void pdns::ProtoZero::Message::encodeNetmask(const protozero::pbf_tag_type
      type, const Netmask& subnet, uint8_t mask)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: toString
      Src: /src/pdns/pdns/dnsdistdist/protozero.cc:57,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - ' pbf'
    - ' buffer'
    - type
    - ' name'
    argTypes:
    - protozero::pbf_writer
    - std::string
    - protozero::pbf_tag_type
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 52
    functionDepth: 0
    functionLinenumber: 52
    functionLinenumberEnd: 59
    functionName: pdns::ProtoZero::Message::encodeDNSName(protozero::pbf_writer& pbf,
      std::string& buffer, const protozero::pbf_tag_type type, const DNSName& name)
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.cc
    functionUses: 0
    functionsReached:
    - toString
    linkageType: ''
    returnType: void
    signature: void pdns::ProtoZero::Message::encodeDNSName(protozero::pbf_writer&
      pbf, std::string& buffer, const protozero::pbf_tag_type type, const DNSName&
      name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: setMessageIdentity
      Src: /src/pdns/pdns/dnsdistdist/protozero.cc:63,1
    - Dst: setSocketFamily
      Src: /src/pdns/pdns/dnsdistdist/protozero.cc:64,1
    - Dst: setSocketProtocol
      Src: /src/pdns/pdns/dnsdistdist/protozero.cc:65,1
    - Dst: setFrom
      Src: /src/pdns/pdns/dnsdistdist/protozero.cc:66,1
    - Dst: setTo
      Src: /src/pdns/pdns/dnsdistdist/protozero.cc:67,1
    - Dst: setInBytes
      Src: /src/pdns/pdns/dnsdistdist/protozero.cc:68,1
    - Dst: setTime
      Src: /src/pdns/pdns/dnsdistdist/protozero.cc:69,1
    - Dst: setId
      Src: /src/pdns/pdns/dnsdistdist/protozero.cc:70,1
    - Dst: setQuestion
      Src: /src/pdns/pdns/dnsdistdist/protozero.cc:71,1
    - Dst: setFromPort
      Src: /src/pdns/pdns/dnsdistdist/protozero.cc:72,1
    - Dst: getPort
      Src: /src/pdns/pdns/dnsdistdist/protozero.cc:72,1
    - Dst: setToPort
      Src: /src/pdns/pdns/dnsdistdist/protozero.cc:73,1
    - Dst: getPort
      Src: /src/pdns/pdns/dnsdistdist/protozero.cc:73,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 9
    argNames:
    - ' uniqueId'
    - ' requestor'
    - ' local'
    - ' qname'
    - qtype
    - qclass
    - qid
    - proto
    - len
    argTypes:
    - boost::uuids::uuid
    - ComboAddress
    - ComboAddress
    - DNSName
    - uint16_t
    - uint16_t
    - uint16_t
    - pdns::ProtoZero::Message::TransportProtocol
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 61
    functionDepth: 0
    functionLinenumber: 61
    functionLinenumberEnd: 74
    functionName: pdns::ProtoZero::Message::setRequest(const boost::uuids::uuid& uniqueId,
      const ComboAddress& requestor, const ComboAddress& local, const DNSName& qname,
      uint16_t qtype, uint16_t qclass, uint16_t qid, pdns::ProtoZero::Message::TransportProtocol
      proto, size_t len)
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.cc
    functionUses: 0
    functionsReached:
    - setQuestion
    - setTo
    - setFrom
    - setId
    - setInBytes
    - setMessageIdentity
    - setTime
    - setFromPort
    - setSocketProtocol
    - setToPort
    - getPort
    - setSocketFamily
    linkageType: ''
    returnType: void
    signature: void pdns::ProtoZero::Message::setRequest(const boost::uuids::uuid&
      uniqueId, const ComboAddress& requestor, const ComboAddress& local, const DNSName&
      qname, uint16_t qtype, uint16_t qclass, uint16_t qid, pdns::ProtoZero::Message::TransportProtocol
      proto, size_t len)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::setType
      Src: /src/pdns/pdns/dnsdistdist/protozero.cc:78,1
    - Dst: pdns::ProtoZero::Message::setQuestion
      Src: /src/pdns/pdns/dnsdistdist/protozero.cc:79,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - ' qname'
    - qtype
    - qclass
    argTypes:
    - DNSName
    - uint16_t
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 76
    functionDepth: 0
    functionLinenumber: 76
    functionLinenumberEnd: 80
    functionName: pdns::ProtoZero::Message::setResponse(const DNSName& qname, uint16_t
      qtype, uint16_t qclass)
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.cc
    functionUses: 0
    functionsReached:
    - pdns::ProtoZero::Message::setQuestion
    - pdns::ProtoZero::Message::setType
    linkageType: ''
    returnType: void
    signature: void pdns::ProtoZero::Message::setResponse(const DNSName& qname, uint16_t
      qtype, uint16_t qclass)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/protozero.cc:90,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/protozero.cc:94,1
    - Dst: DNSName::DNSName
      Src: /src/pdns/pdns/dnsdistdist/protozero.cc:101,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/protozero.cc:102,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/protozero.cc:103,1
    - Dst: PacketReader::getName
      Src: /src/pdns/pdns/dnsdistdist/protozero.cc:109,1
    - Dst: PacketReader::get16BitInt
      Src: /src/pdns/pdns/dnsdistdist/protozero.cc:110,1
    - Dst: PacketReader::get16BitInt
      Src: /src/pdns/pdns/dnsdistdist/protozero.cc:111,1
    - Dst: PacketReader::getName
      Src: /src/pdns/pdns/dnsdistdist/protozero.cc:118,1
    - Dst: PacketReader::get16BitInt
      Src: /src/pdns/pdns/dnsdistdist/protozero.cc:119,1
    - Dst: PacketReader::get16BitInt
      Src: /src/pdns/pdns/dnsdistdist/protozero.cc:120,1
    - Dst: PacketReader::getName
      Src: /src/pdns/pdns/dnsdistdist/protozero.cc:128,1
    - Dst: PacketReader::getDnsrecordheader
      Src: /src/pdns/pdns/dnsdistdist/protozero.cc:129,1
    - Dst: PacketReader::xfrBlob
      Src: /src/pdns/pdns/dnsdistdist/protozero.cc:132,1
    - Dst: addRR
      Src: /src/pdns/pdns/dnsdistdist/protozero.cc:134,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/dnsdistdist/protozero.cc:137,1
    - Dst: encodeDNSName
      Src: /src/pdns/pdns/dnsdistdist/protozero.cc:139,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/dnsdistdist/protozero.cc:139,1
    - Dst: protozero::pbf_writer::add_uint32
      Src: /src/pdns/pdns/dnsdistdist/protozero.cc:140,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/dnsdistdist/protozero.cc:140,1
    - Dst: protozero::pbf_writer::add_uint32
      Src: /src/pdns/pdns/dnsdistdist/protozero.cc:141,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/dnsdistdist/protozero.cc:141,1
    - Dst: protozero::pbf_writer::add_uint32
      Src: /src/pdns/pdns/dnsdistdist/protozero.cc:142,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/dnsdistdist/protozero.cc:142,1
    - Dst: DNSName::DNSName
      Src: /src/pdns/pdns/dnsdistdist/protozero.cc:143,1
    - Dst: PacketReader::xfrName
      Src: /src/pdns/pdns/dnsdistdist/protozero.cc:144,1
    - Dst: encodeDNSName
      Src: /src/pdns/pdns/dnsdistdist/protozero.cc:145,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/dnsdistdist/protozero.cc:145,1
    - Dst: PacketReader::xfrBlob
      Src: /src/pdns/pdns/dnsdistdist/protozero.cc:148,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 42
    argCount: 3
    argNames:
    - packet
    - len
    - includeCNAME
    argTypes:
    - char*
    - size_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 151
      start: 82
    functionDepth: 0
    functionLinenumber: 82
    functionLinenumberEnd: 151
    functionName: pdns::ProtoZero::Message::addRRsFromPacket(const char* packet, const
      size_t len, bool includeCNAME)
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.cc
    functionUses: 0
    functionsReached:
    - static_cast<protozero::pbf_tag_type>
    - PacketReader::getName
    - PacketReader::xfrBlob
    - ntohs
    - PacketReader::xfrName
    - encodeDNSName
    - PacketReader::get16BitInt
    - addRR
    - PacketReader::getDnsrecordheader
    - DNSName::DNSName
    - protozero::pbf_writer::add_uint32
    linkageType: ''
    returnType: void
    signature: void pdns::ProtoZero::Message::addRRsFromPacket(const char* packet,
      const size_t len, bool includeCNAME)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/dnsdistdist/protozero.cc:155,1
    - Dst: encodeDNSName
      Src: /src/pdns/pdns/dnsdistdist/protozero.cc:156,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/dnsdistdist/protozero.cc:156,1
    - Dst: protozero::pbf_writer::add_uint32
      Src: /src/pdns/pdns/dnsdistdist/protozero.cc:157,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/dnsdistdist/protozero.cc:157,1
    - Dst: protozero::pbf_writer::add_uint32
      Src: /src/pdns/pdns/dnsdistdist/protozero.cc:158,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/dnsdistdist/protozero.cc:158,1
    - Dst: protozero::pbf_writer::add_uint32
      Src: /src/pdns/pdns/dnsdistdist/protozero.cc:159,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/dnsdistdist/protozero.cc:159,1
    - Dst: protozero::pbf_writer::add_string
      Src: /src/pdns/pdns/dnsdistdist/protozero.cc:160,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/dnsdistdist/protozero.cc:160,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 5
    argNames:
    - ' name'
    - uType
    - uClass
    - uTTL
    - ' blob'
    argTypes:
    - DNSName
    - uint16_t
    - uint16_t
    - uint32_t
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 161
      start: 153
    functionDepth: 0
    functionLinenumber: 153
    functionLinenumberEnd: 161
    functionName: pdns::ProtoZero::Message::addRR(const DNSName& name, uint16_t uType,
      uint16_t uClass, uint32_t uTTL, const std::string& blob)
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.cc
    functionUses: 0
    functionsReached:
    - static_cast<protozero::pbf_tag_type>
    - protozero::pbf_writer::add_uint32
    - encodeDNSName
    - protozero::pbf_writer::add_string
    linkageType: ''
    returnType: void
    signature: void pdns::ProtoZero::Message::addRR(const DNSName& name, uint16_t
      uType, uint16_t uClass, uint32_t uTTL, const std::string& blob)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 62
    functionDepth: 0
    functionLinenumber: 62
    functionLinenumberEnd: 62
    functionName: ~IncomingHTTP2Connection()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~IncomingHTTP2Connection()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 82
    functionDepth: 0
    functionLinenumber: 82
    functionLinenumberEnd: 85
    functionName: IncomingHTTP2Connection::forwardViaUDPFirst
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool forwardViaUDPFirst() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 46
    functionDepth: 0
    functionLinenumber: 46
    functionLinenumberEnd: 47
    functionName: DEBUGLOG
    functionSourceFile: /src/pdns/pdns/dnsdistdist/doq.cc
    functionUses: 12
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEBUGLOG(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:55,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:55,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 4
    argNames:
    - ' peer'
    - ' localAddr'
    - config
    - conn
    argTypes:
    - ComboAddress
    - ComboAddress
    - QuicheConfig
    - QuicheConnection
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 54
    functionDepth: 0
    functionLinenumber: 54
    functionLinenumberEnd: 57
    functionName: Connection::Connection
    functionSourceFile: /src/pdns/pdns/dnsdistdist/doq.cc
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void Connection(const ComboAddress& peer, const ComboAddress& localAddr,
      QuicheConfig config, QuicheConnection conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 58
    functionDepth: 0
    functionLinenumber: 58
    functionLinenumberEnd: 58
    functionName: Connection::Connection
    functionSourceFile: /src/pdns/pdns/dnsdistdist/doq.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Connection(const Connection&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 59
    functionDepth: 0
    functionLinenumber: 59
    functionLinenumberEnd: 59
    functionName: Connection::Connection
    functionSourceFile: /src/pdns/pdns/dnsdistdist/doq.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Connection(Connection&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 60
    functionDepth: 0
    functionLinenumber: 60
    functionLinenumberEnd: 60
    functionName: '& operator=(const Connection&)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/doq.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Connection
    signature: Connection & operator=(const Connection&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 61
    functionDepth: 0
    functionLinenumber: 61
    functionLinenumberEnd: 61
    functionName: '& operator=(Connection&&)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/doq.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Connection
    signature: Connection & operator=(Connection&&)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::IncomingConcurrentTCPConnectionsManager::accountClosedTCPConnection
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:67,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 62
    functionDepth: 1
    functionLinenumber: 62
    functionLinenumberEnd: 73
    functionName: ~Connection()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/doq.cc
    functionUses: 0
    functionsReached:
    - dnsdist::IncomingConcurrentTCPConnectionsManager::accountClosedTCPConnection
    linkageType: ''
    returnType: void
    signature: void ~Connection()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<const std::string>
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:78,1
    - Dst: getSNIFromQuicheConnection
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:78,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: Connection::getSNI
    functionSourceFile: /src/pdns/pdns/dnsdistdist/doq.cc
    functionUses: 0
    functionsReached:
    - std::make_shared<const std::string>
    - getSNIFromQuicheConnection
    linkageType: ''
    returnType: std::shared_ptr<const std::string>
    signature: std::shared_ptr<const std::string> getSNI()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:98,1
    - Dst: pdns::channel::createObjectQueue<DOQUnit>
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:101,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:102,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:103,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - ' config_'
    - internalPipeBufferSize
    argTypes:
    - QuicheConfig
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 97
    functionDepth: 0
    functionLinenumber: 97
    functionLinenumberEnd: 105
    functionName: DOQServerConfig
    functionSourceFile: /src/pdns/pdns/dnsdistdist/doq.cc
    functionUses: 0
    functionsReached:
    - std::move
    - pdns::channel::createObjectQueue<DOQUnit>
    linkageType: ''
    returnType: void
    signature: void DOQServerConfig(QuicheConfig&& config_, uint32_t internalPipeBufferSize)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 106
    functionDepth: 0
    functionLinenumber: 106
    functionLinenumberEnd: 106
    functionName: DOQServerConfig
    functionSourceFile: /src/pdns/pdns/dnsdistdist/doq.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void DOQServerConfig(const DOQServerConfig&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 107
      start: 107
    functionDepth: 0
    functionLinenumber: 107
    functionLinenumberEnd: 107
    functionName: DOQServerConfig
    functionSourceFile: /src/pdns/pdns/dnsdistdist/doq.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void DOQServerConfig(DOQServerConfig&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 108
    functionDepth: 0
    functionLinenumber: 108
    functionLinenumberEnd: 108
    functionName: '& operator=(const DOQServerConfig&)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/doq.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: DOQServerConfig
    signature: DOQServerConfig & operator=(const DOQServerConfig&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 109
    functionDepth: 0
    functionLinenumber: 109
    functionLinenumberEnd: 109
    functionName: '& operator=(DOQServerConfig&&)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/doq.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: DOQServerConfig
    signature: DOQServerConfig & operator=(DOQServerConfig&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 110
    functionDepth: 0
    functionLinenumber: 110
    functionLinenumberEnd: 110
    functionName: ~DOQServerConfig()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/doq.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~DOQServerConfig()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 125
      start: 125
    functionDepth: 0
    functionLinenumber: 125
    functionLinenumberEnd: 125
    functionName: DOQFrontend::DOQFrontend
    functionSourceFile: /src/pdns/pdns/dnsdistdist/doq.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void DOQFrontend::DOQFrontend()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 126
    functionDepth: 0
    functionLinenumber: 126
    functionLinenumberEnd: 126
    functionName: DOQFrontend::~DOQFrontend()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/doq.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void DOQFrontend::~DOQFrontend()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 131
      start: 131
    functionDepth: 0
    functionLinenumber: 131
    functionLinenumberEnd: 131
    functionName: DOQTCPCrossQuerySender::DOQTCPCrossQuerySender
    functionSourceFile: /src/pdns/pdns/dnsdistdist/doq.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void DOQTCPCrossQuerySender()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 136
      start: 133
    functionDepth: 0
    functionLinenumber: 133
    functionLinenumberEnd: 136
    functionName: DOQTCPCrossQuerySender::active
    functionSourceFile: /src/pdns/pdns/dnsdistdist/doq.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool active() const override
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:144,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:149,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:150,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:154,1
    - Dst: DNSResponse::getHeader
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:154,1
    - Dst: isAsync
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:156,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:157,1
    - Dst: processResponse
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:159,1
    - Dst: sendBackDOQUnit
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:162,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:162,1
    - Dst: DNSResponse::isAsynchronous
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:167,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:171,1
    - Dst: auto::ids::queryRealTime::udiff
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:175,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:176,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:176,1
    - Dst: auto::downstream::d_config::remote::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:176,1
    - Dst: auto::ids::origRemote::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:176,1
    - Dst: auto::response::size
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:176,1
    - Dst: DNSResponse::getLogger
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:177,1
    - Dst: auto::downstream::getProtocol
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:179,1
    - Dst: handleResponseSent
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:183,1
    - Dst: auto::response::size
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:183,1
    - Dst: sendBackDOQUnit
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:191,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:191,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 35
    argCount: 2
    argNames:
    - ' now'
    - ' response'
    argTypes:
    - struct timeval
    - TCPResponse
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 192
      start: 138
    functionDepth: 1
    functionLinenumber: 138
    functionLinenumberEnd: 192
    functionName: DOQTCPCrossQuerySender::handleResponse
    functionSourceFile: /src/pdns/pdns/dnsdistdist/doq.cc
    functionUses: 0
    functionsReached:
    - auto::downstream::getProtocol
    - DNSResponse::getHeader
    - memcpy
    - std::move
    - auto::ids::queryRealTime::udiff
    - processResponse
    - DNSResponse::isAsynchronous
    - VERBOSESLOG
    - infolog
    - auto::downstream::d_config::remote::toStringWithPort
    - auto::response::size
    - sendBackDOQUnit
    - isAsync
    - handleResponseSent
    - auto::ids::origRemote::toStringWithPort
    - DNSResponse::getLogger
    linkageType: ''
    returnType: void
    signature: void handleResponse([[maybe_unused]] const struct timeval& now, TCPResponse&&
      response) override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DOQTCPCrossQuerySender::handleResponse
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:196,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:196,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 2
    argNames:
    - ' now'
    - ' response'
    argTypes:
    - struct timeval
    - TCPResponse
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 197
      start: 194
    functionDepth: 0
    functionLinenumber: 194
    functionLinenumberEnd: 197
    functionName: DOQTCPCrossQuerySender::handleXFRResponse
    functionSourceFile: /src/pdns/pdns/dnsdistdist/doq.cc
    functionUses: 0
    functionsReached:
    - DOQTCPCrossQuerySender::handleResponse
    - std::move
    linkageType: ''
    returnType: void
    signature: void handleXFRResponse(const struct timeval& now, TCPResponse&& response)
      override
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:205,1
    - Dst: auto::response::clear
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:211,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:212,1
    - Dst: sendBackDOQUnit
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:213,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:213,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - ' now'
    - ' response'
    argTypes:
    - struct timeval
    - TCPResponse
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 214
      start: 199
    functionDepth: 1
    functionLinenumber: 199
    functionLinenumberEnd: 214
    functionName: DOQTCPCrossQuerySender::notifyIOError
    functionSourceFile: /src/pdns/pdns/dnsdistdist/doq.cc
    functionUses: 0
    functionsReached:
    - sendBackDOQUnit
    - std::move
    - auto::response::clear
    linkageType: ''
    returnType: void
    signature: void notifyIOError([[maybe_unused]] const struct timeval& now, TCPResponse&&
      response) override
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: InternalQuery
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:224,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:224,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:224,1
    - Dst: InternalQuery
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:229,1
    - Dst: PacketBuffer
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:229,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:229,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:234,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - ' unit'
    - isResponse
    argTypes:
    - DOQUnitUniquePtr
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 244
      start: 220
    functionDepth: 0
    functionLinenumber: 220
    functionLinenumberEnd: 244
    functionName: DOQCrossProtocolQuery::DOQCrossProtocolQuery
    functionSourceFile: /src/pdns/pdns/dnsdistdist/doq.cc
    functionUses: 0
    functionsReached:
    - PacketBuffer
    - std::move
    - InternalQuery
    linkageType: ''
    returnType: void
    signature: void DOQCrossProtocolQuery(DOQUnitUniquePtr&& unit, bool isResponse)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sendBackDOQUnit
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:248,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:248,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 249
      start: 246
    functionDepth: 1
    functionLinenumber: 246
    functionLinenumberEnd: 249
    functionName: DOQCrossProtocolQuery::handleInternalError
    functionSourceFile: /src/pdns/pdns/dnsdistdist/doq.cc
    functionUses: 0
    functionsReached:
    - sendBackDOQUnit
    - std::move
    linkageType: ''
    returnType: void
    signature: void handleInternalError()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 255
      start: 251
    functionDepth: 0
    functionLinenumber: 251
    functionLinenumberEnd: 255
    functionName: DOQCrossProtocolQuery::getTCPQuerySender
    functionSourceFile: /src/pdns/pdns/dnsdistdist/doq.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::shared_ptr<TCPQuerySender>
    signature: std::shared_ptr<TCPQuerySender> getTCPQuerySender() override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 262
      start: 257
    functionDepth: 0
    functionLinenumber: 257
    functionLinenumberEnd: 262
    functionName: DOQCrossProtocolQuery::getDQ
    functionSourceFile: /src/pdns/pdns/dnsdistdist/doq.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: DNSQuestion
    signature: DNSQuestion getDQ() override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 269
      start: 264
    functionDepth: 0
    functionLinenumber: 264
    functionLinenumberEnd: 269
    functionName: DOQCrossProtocolQuery::getDR
    functionSourceFile: /src/pdns/pdns/dnsdistdist/doq.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: DNSResponse
    signature: DNSResponse getDR() override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:273,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 274
      start: 271
    functionDepth: 0
    functionLinenumber: 271
    functionLinenumberEnd: 274
    functionName: '&& releaseDU()'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/doq.cc
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: DOQUnitUniquePtr
    signature: DOQUnitUniquePtr && releaseDU()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:285,1
    - Dst: quiche_conn_stream_send
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:288,1
    - Dst: d_conn::get
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:288,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:288,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:288,1
    - Dst: quiche_conn_stream_send
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:290,1
    - Dst: d_conn::get
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:290,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:290,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:290,1
    - Dst: erase
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:293,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:293,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:293,1
    - Dst: static_cast<ssize_t>
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:293,1
    - Dst: quiche_conn_stream_shutdown
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:297,1
    - Dst: d_conn::get
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:297,1
    - Dst: static_cast<uint64_t>
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:297,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 3
    argNames:
    - ' conn'
    - streamID
    - ' response'
    argTypes:
    - Connection
    - uint64_t
    - PacketBuffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 304
      start: 282
    functionDepth: 0
    functionLinenumber: 282
    functionLinenumberEnd: 304
    functionName: tryWriteResponse
    functionSourceFile: /src/pdns/pdns/dnsdistdist/doq.cc
    functionUses: 1
    functionsReached:
    - quiche_conn_stream_send
    - at
    - static_cast<ssize_t>
    - static_cast<uint64_t>
    - size
    - quiche_conn_stream_shutdown
    - begin
    - d_conn::get
    - erase
    linkageType: ''
    returnType: bool
    signature: bool tryWriteResponse(Connection& conn, const uint64_t streamID, PacketBuffer&
      response)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:308,1
    - Dst: quiche_conn_stream_shutdown
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:310,1
    - Dst: d_conn::get
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:310,1
    - Dst: static_cast<uint64_t>
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:310,1
    - Dst: static_cast<uint16_t>
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:314,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:314,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:315,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:315,1
    - Dst: insert
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:316,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:316,1
    - Dst: std::array::begin
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:316,1
    - Dst: std::array::end
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:316,1
    - Dst: tryWriteResponse
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:317,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:318,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 4
    argNames:
    - ' frontend'
    - ' conn'
    - streamID
    - ' response'
    argTypes:
    - DOQFrontend
    - Connection
    - uint64_t
    - PacketBuffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 320
      start: 306
    functionDepth: 1
    functionLinenumber: 306
    functionLinenumberEnd: 320
    functionName: handleResponse
    functionSourceFile: /src/pdns/pdns/dnsdistdist/doq.cc
    functionUses: 12
    functionsReached:
    - std::move
    - d_conn::get
    - std::array::begin
    - static_cast<uint64_t>
    - std::array::end
    - size
    - static_cast<uint8_t>
    - tryWriteResponse
    - quiche_conn_stream_shutdown
    - static_cast<uint16_t>
    - insert
    - begin
    - empty
    linkageType: ''
    returnType: void
    signature: void handleResponse(DOQFrontend& frontend, Connection& conn, const
      uint64_t streamID, PacketBuffer&& response)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: QuicheConfig
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:324,1
    - Dst: quiche_config_new
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:324,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:325,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:325,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:325,1
    - Dst: configureQuiche
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:326,1
    - Dst: std::make_unique<DOQServerConfig>
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:327,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:327,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 328
      start: 322
    functionDepth: 0
    functionLinenumber: 322
    functionLinenumberEnd: 328
    functionName: DOQFrontend::setup
    functionSourceFile: /src/pdns/pdns/dnsdistdist/doq.cc
    functionUses: 0
    functionsReached:
    - std::move
    - configureQuiche
    - QuicheConfig
    - end
    - std::make_unique<DOQServerConfig>
    - quiche_config_new
    - begin
    - std::string
    linkageType: ''
    returnType: void
    signature: void DOQFrontend::setup()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: QuicheConfig
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:332,1
    - Dst: quiche_config_new
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:332,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:333,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:333,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:333,1
    - Dst: configureQuiche
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:334,1
    - Dst: std::atomic_store_explicit
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:335,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:335,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 336
      start: 330
    functionDepth: 0
    functionLinenumber: 330
    functionLinenumberEnd: 336
    functionName: DOQFrontend::reloadCertificates
    functionSourceFile: /src/pdns/pdns/dnsdistdist/doq.cc
    functionUses: 0
    functionsReached:
    - std::move
    - configureQuiche
    - QuicheConfig
    - end
    - std::atomic_store_explicit
    - quiche_config_new
    - begin
    - std::string
    linkageType: ''
    returnType: void
    signature: void DOQFrontend::reloadCertificates()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: find
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:340,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:341,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - ' connMap'
    - ' connID'
    argTypes:
    - DOQServerConfig::ConnectionsMap
    - PacketBuffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 345
      start: 338
    functionDepth: 0
    functionLinenumber: 338
    functionLinenumberEnd: 345
    functionName: getConnection
    functionSourceFile: /src/pdns/pdns/dnsdistdist/doq.cc
    functionUses: 4
    functionsReached:
    - end
    - find
    linkageType: ''
    returnType: std::optional<std::reference_wrapper<Connection>>
    signature: std::optional<std::reference_wrapper<Connection>> getConnection(DOQServerConfig::ConnectionsMap&
      connMap, const PacketBuffer& connID)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dsc::d_responseSender::send
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:353,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:353,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:355,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:355,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:356,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:356,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:356,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:360,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:360,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:360,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:361,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:361,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:361,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:361,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 2
    argNames:
    - ' unit'
    - description
    argTypes:
    - DOQUnitUniquePtr
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 363
      start: 347
    functionDepth: 1
    functionLinenumber: 347
    functionLinenumberEnd: 363
    functionName: sendBackDOQUnit
    functionSourceFile: /src/pdns/pdns/dnsdistdist/doq.cc
    functionUses: 3
    functionsReached:
    - std::move
    - what
    - VERBOSESLOG
    - infolog
    - dsc::d_responseSender::send
    - dnsdist::logging::getTopLogger
    - std::string
    linkageType: ''
    returnType: void
    signature: void sendBackDOQUnit(DOQUnitUniquePtr&& unit, const char* description)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::atomic_load_explicit
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:367,1
    - Dst: QuicheConnection
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:368,1
    - Dst: quiche_accept
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:368,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:368,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:368,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:369,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:369,1
    - Dst: reinterpret_cast<const struct sockaddr*>
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:371,1
    - Dst: getSocklen
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:372,1
    - Dst: reinterpret_cast<const struct sockaddr*>
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:374,1
    - Dst: getSocklen
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:375,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:376,1
    - Dst: df::d_quicheParams::d_keyLogFile::empty
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:379,1
    - Dst: quiche_conn_set_keylog_path
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:380,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:380,1
    - Dst: df::d_quicheParams::d_keyLogFile::c_str
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:380,1
    - Dst: Connection
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:383,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:383,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:383,1
    - Dst: d_connections::emplace
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:384,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:384,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 5
    argNames:
    - ' config'
    - ' serverSideID'
    - ' originalDestinationID'
    - ' peer'
    - ' localAddr'
    argTypes:
    - DOQServerConfig
    - PacketBuffer
    - PacketBuffer
    - ComboAddress
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 386
      start: 365
    functionDepth: 0
    functionLinenumber: 365
    functionLinenumberEnd: 386
    functionName: createConnection
    functionSourceFile: /src/pdns/pdns/dnsdistdist/doq.cc
    functionUses: 1
    functionsReached:
    - std::move
    - QuicheConnection
    - auto::get
    - std::atomic_load_explicit
    - size
    - reinterpret_cast<const struct sockaddr*>
    - quiche_conn_set_keylog_path
    - df::d_quicheParams::d_keyLogFile::c_str
    - Connection
    - data
    - quiche_accept
    - getSocklen
    - d_connections::emplace
    - df::d_quicheParams::d_keyLogFile::empty
    linkageType: ''
    returnType: std::optional<std::reference_wrapper<Connection>>
    signature: std::optional<std::reference_wrapper<Connection>> createConnection(DOQServerConfig&
      config, const PacketBuffer& serverSideID, const PacketBuffer& originalDestinationID,
      const ComboAddress& peer, const ComboAddress& localAddr)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:391,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:394,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:396,1
    - Dst: getHeader
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:399,1
    - Dst: auto::query::data
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:402,1
    - Dst: getMutableData
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:402,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:403,1
    - Dst: getMutableData
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:403,1
    - Dst: auto::response::data
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:407,1
    - Dst: getMutableData
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:407,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:408,1
    - Dst: getMutableData
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:408,1
    - Dst: std::make_unique<DOQCrossProtocolQuery>
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:412,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:412,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 2
    argNames:
    - ' dnsQuestion'
    - isResponse
    argTypes:
    - DNSQuestion
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 413
      start: 388
    functionDepth: 1
    functionLinenumber: 388
    functionLinenumberEnd: 413
    functionName: getDOQCrossProtocolQueryFromDQ
    functionSourceFile: /src/pdns/pdns/dnsdistdist/doq.cc
    functionUses: 2
    functionsReached:
    - std::move
    - getMutableData
    - std::make_unique<DOQCrossProtocolQuery>
    - std::runtime_error
    - auto::response::data
    - getHeader
    - auto::query::data
    linkageType: ''
    returnType: std::unique_ptr<CrossProtocolQuery>
    signature: std::unique_ptr<CrossProtocolQuery> getDOQCrossProtocolQueryFromDQ(DNSQuestion&
      dnsQuestion, bool isResponse)
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: DEBUGLOG
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:418,1
    - Dst: getConnection
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:419,1
    - Dst: handleResponse
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:420,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:420,1
    - Dst: ids::doqu::reset
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:421,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:425,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:436,1
    - Dst: match
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:436,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:437,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:437,1
    - Dst: ComboAddress::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:437,1
    - Dst: DOQServerConfig*::df::getLogger
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:438,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:438,1
    - Dst: response::clear
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:440,1
    - Dst: handleImmediateResponse
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:442,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:442,1
    - Dst: query::size
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:446,1
    - Dst: response::clear
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:449,1
    - Dst: handleImmediateResponse
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:451,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:451,1
    - Dst: ids::queryRealTime::start
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:457,1
    - Dst: query::data
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:461,1
    - Dst: checkQueryHeaders
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:463,1
    - Dst: dnsdist::PacketMangling::editDNSHeaderFromPacket
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:464,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:469,1
    - Dst: handleImmediateResponse
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:471,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:471,1
    - Dst: dnsdist::PacketMangling::editDNSHeaderFromPacket
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:476,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:481,1
    - Dst: handleImmediateResponse
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:483,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:483,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:487,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:492,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:492,1
    - Dst: query::data
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:492,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:492,1
    - Dst: query::size
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:492,1
    - Dst: dnsdist::PacketMangling::editDNSHeaderFromPacket
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:494,1
    - Dst: DNSQuestion::getMutableData
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:494,1
    - Dst: getFlagsFromDNSHeader
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:495,1
    - Dst: processQuery
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:504,1
    - Dst: handleImmediateResponse
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:506,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:506,1
    - Dst: response::empty
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:513,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:514,1
    - Dst: response::size
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:516,1
    - Dst: response::data
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:517,1
    - Dst: handleResponseSent
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:519,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:519,1
    - Dst: QType
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:519,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:519,1
    - Dst: response::size
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:519,1
    - Dst: handleImmediateResponse
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:521,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:521,1
    - Dst: handleImmediateResponse
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:531,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:531,1
    - Dst: handleImmediateResponse
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:536,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:536,1
    - Dst: getProxyProtocolPayload
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:546,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:549,1
    - Dst: std::make_unique<DOQCrossProtocolQuery>
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:553,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:553,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:554,1
    - Dst: auto::passCrossProtocolQuery
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:556,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:556,1
    - Dst: auto::releaseDU
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:562,1
    - Dst: handleImmediateResponse
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:563,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:563,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:569,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:569,1
    - Dst: ComboAddress::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:569,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:569,1
    - Dst: dsc::df::getLogger
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:570,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:570,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:570,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:570,1
    - Dst: handleImmediateResponse
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:571,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:571,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 107
    argCount: 1
    argNames:
    - ' doqUnit'
    argTypes:
    - DOQUnitUniquePtr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 575
      start: 415
    functionDepth: 2
    functionLinenumber: 415
    functionLinenumberEnd: 575
    functionName: processDOQQuery
    functionSourceFile: /src/pdns/pdns/dnsdistdist/doq.cc
    functionUses: 0
    functionsReached:
    - processQuery
    - DEBUGLOG
    - ntohs
    - getFlagsFromDNSHeader
    - handleResponseSent
    - response::size
    - static_cast<int>
    - Logging::Loggable
    - QType
    - handleResponse
    - match
    - query::data
    - DOQServerConfig*::df::getLogger
    - getProxyProtocolPayload
    - htons
    - auto::passCrossProtocolQuery
    - dnsdist::configuration::getCurrentRuntimeConfiguration
    - response::data
    - std::make_unique<DOQCrossProtocolQuery>
    - VERBOSESLOG
    - query::size
    - handleImmediateResponse
    - DNSName
    - reinterpret_cast<const char*>
    - DNSQuestion::getMutableData
    - ComboAddress::toStringWithPort
    - ComboAddress
    - response::empty
    - std::move
    - ids::doqu::reset
    - getConnection
    - what
    - infolog
    - auto::releaseDU
    - checkQueryHeaders
    - ids::queryRealTime::start
    - dsc::df::getLogger
    - dnsdist::PacketMangling::editDNSHeaderFromPacket
    - response::clear
    linkageType: ''
    returnType: void
    signature: void processDOQQuery(DOQUnitUniquePtr&& doqUnit)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::make_unique<DOQUnit>
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:580,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:580,1
    - Dst: processDOQQuery
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:589,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:589,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:592,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:592,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:592,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:592,1
    - Dst: df::getLogger
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:593,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:593,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:593,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 7
    argNames:
    - ' dsc'
    - ' query'
    - ' local'
    - ' remote'
    - ' serverConnID'
    - streamID
    - ' sni'
    argTypes:
    - DOQServerConfig
    - PacketBuffer
    - ComboAddress
    - ComboAddress
    - PacketBuffer
    - uint64_t
    - std::shared_ptr<const std::string>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 595
      start: 577
    functionDepth: 3
    functionLinenumber: 577
    functionLinenumberEnd: 595
    functionName: doq_dispatch_query
    functionSourceFile: /src/pdns/pdns/dnsdistdist/doq.cc
    functionUses: 0
    functionsReached:
    - std::move
    - Logging::Loggable
    - processDOQQuery
    - what
    - std::make_unique<DOQUnit>
    - VERBOSESLOG
    - infolog
    - df::getLogger
    - toStringWithPort
    linkageType: ''
    returnType: void
    signature: void doq_dispatch_query(DOQServerConfig& dsc, PacketBuffer&& query,
      const ComboAddress& local, const ComboAddress& remote, const PacketBuffer& serverConnID,
      const uint64_t streamID, const std::shared_ptr<const std::string>& sni)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: receive
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:601,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:606,1
    - Dst: getConnection
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:607,1
    - Dst: handleResponse
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:609,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:609,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:613,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:613,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:613,1
    - Dst: error
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:614,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:614,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:617,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:617,1
    - Dst: info
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:618,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 2
    argNames:
    - ' receiver'
    - ' frontendLogger'
    argTypes:
    - pdns::channel::Receiver<DOQUnit>
    - Logr::Logger
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 621
      start: 597
    functionDepth: 0
    functionLinenumber: 597
    functionLinenumberEnd: 621
    functionName: flushResponses
    functionSourceFile: /src/pdns/pdns/dnsdistdist/doq.cc
    functionUses: 1
    functionsReached:
    - errlog
    - std::move
    - SLOG
    - getConnection
    - what
    - handleResponse
    - info
    - receive
    - error
    linkageType: ''
    returnType: void
    signature: void flushResponses(pdns::channel::Receiver<DOQUnit>& receiver, const
      Logr::Logger& frontendLogger)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: d_streamOutBuffers::begin
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:625,1
    - Dst: d_streamOutBuffers::end
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:625,1
    - Dst: quiche_conn_stream_writable
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:628,1
    - Dst: d_conn::get
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:628,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:628,1
    - Dst: tryWriteResponse
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:629,1
    - Dst: d_streamOutBuffers::erase
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:630,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 1
    argNames:
    - ' conn'
    argTypes:
    - Connection
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 636
      start: 623
    functionDepth: 0
    functionLinenumber: 623
    functionLinenumberEnd: 636
    functionName: flushStalledResponses
    functionSourceFile: /src/pdns/pdns/dnsdistdist/doq.cc
    functionUses: 1
    functionsReached:
    - d_streamOutBuffers::begin
    - d_streamOutBuffers::end
    - tryWriteResponse
    - size
    - d_streamOutBuffers::erase
    - d_conn::get
    - quiche_conn_stream_writable
    linkageType: ''
    returnType: void
    signature: void flushStalledResponses(Connection& conn)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:643,1
    - Dst: resize
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:644,1
    - Dst: quiche_conn_stream_recv
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:647,1
    - Dst: d_conn::get
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:647,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:648,1
    - Dst: quiche_conn_stream_recv
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:652,1
    - Dst: d_conn::get
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:652,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:653,1
    - Dst: resize
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:657,1
    - Dst: quiche_conn_stream_shutdown
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:663,1
    - Dst: d_conn::get
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:663,1
    - Dst: static_cast<uint64_t>
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:663,1
    - Dst: d_streamBuffers::erase
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:664,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:668,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:668,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:668,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:669,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:669,1
    - Dst: d_logger::info
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:670,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:670,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:670,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:670,1
    - Dst: d_streamBuffers::erase
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:671,1
    - Dst: quiche_conn_stream_shutdown
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:674,1
    - Dst: d_conn::get
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:674,1
    - Dst: static_cast<uint64_t>
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:674,1
    - Dst: resize
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:678,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:684,1
    - Dst: quiche_conn_stream_shutdown
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:687,1
    - Dst: d_conn::get
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:687,1
    - Dst: static_cast<uint64_t>
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:687,1
    - Dst: d_streamBuffers::erase
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:688,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:692,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:692,1
    - Dst: erase
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:693,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:693,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:693,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:694,1
    - Dst: quiche_conn_stream_shutdown
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:697,1
    - Dst: d_conn::get
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:697,1
    - Dst: static_cast<uint64_t>
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:697,1
    - Dst: d_streamBuffers::erase
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:698,1
    - Dst: DEBUGLOG
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:701,1
    - Dst: doq_dispatch_query
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:702,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:702,1
    - Dst: getSNI
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:702,1
    - Dst: d_streamBuffers::erase
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:703,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 45
    argCount: 6
    argNames:
    - ' frontend'
    - ' clientState'
    - ' conn'
    - streamID
    - ' client'
    - ' serverConnID'
    argTypes:
    - DOQFrontend
    - ClientState
    - Connection
    - uint64_t
    - ComboAddress
    - PacketBuffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 704
      start: 638
    functionDepth: 4
    functionLinenumber: 638
    functionLinenumberEnd: 704
    functionName: handleReadableStream
    functionSourceFile: /src/pdns/pdns/dnsdistdist/doq.cc
    functionUses: 0
    functionsReached:
    - d_logger::info
    - DEBUGLOG
    - doq_dispatch_query
    - d_streamBuffers::erase
    - erase
    - static_cast<size_t>
    - resize
    - Logging::Loggable
    - size
    - begin
    - quiche_conn_stream_recv
    - at
    - pdns::max
    - static_cast<uint64_t>
    - VERBOSESLOG
    - quiche_conn_stream_shutdown
    - std::move
    - infolog
    - d_conn::get
    - getSNI
    linkageType: ''
    returnType: void
    signature: void handleReadableStream(DOQFrontend& frontend, ClientState& clientState,
      Connection& conn, uint64_t streamID, const ComboAddress& client, const PacketBuffer&
      serverConnID)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: resize
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:718,1
    - Dst: dnsdist::doq::recvAsync
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:719,1
    - Dst: DEBUGLOG
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:730,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:730,1
    - Dst: ComboAddress::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:730,1
    - Dst: std::array::size
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:735,1
    - Dst: std::array::size
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:737,1
    - Dst: std::array::size
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:739,1
    - Dst: quiche_header_info
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:741,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:741,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:741,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:743,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:744,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:745,1
    - Dst: DEBUGLOG
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:747,1
    - Dst: PacketBuffer::assign
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:751,1
    - Dst: std::array::begin
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:751,1
    - Dst: std::array::begin
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:751,1
    - Dst: PacketBuffer::assign
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:752,1
    - Dst: std::array::begin
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:752,1
    - Dst: std::array::begin
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:752,1
    - Dst: getConnection
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:753,1
    - Dst: DEBUGLOG
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:756,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:757,1
    - Dst: DEBUGLOG
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:758,1
    - Dst: quiche_version_is_supported
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:762,1
    - Dst: DEBUGLOG
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:763,1
    - Dst: handleVersionNegotiation
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:765,1
    - Dst: local::isUnspecified
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:765,1
    - Dst: DEBUGLOG
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:771,1
    - Dst: handleStatelessRetry
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:772,1
    - Dst: local::isUnspecified
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:772,1
    - Dst: PacketBuffer::assign
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:776,1
    - Dst: std::array::begin
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:776,1
    - Dst: std::array::begin
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:776,1
    - Dst: validateToken
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:777,1
    - Dst: DEBUGLOG
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:780,1
    - Dst: dnsdist::IncomingConcurrentTCPConnectionsManager::accountNewTCPConnection
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:784,1
    - Dst: DEBUGLOG
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:786,1
    - Dst: DEBUGLOG
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:790,1
    - Dst: createConnection
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:791,1
    - Dst: DEBUGLOG
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:796,1
    - Dst: reinterpret_cast<struct sockaddr*>
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:799,1
    - Dst: ComboAddress::getSocklen
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:800,1
    - Dst: reinterpret_cast<struct sockaddr*>
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:802,1
    - Dst: ComboAddress::getSocklen
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:803,1
    - Dst: quiche_conn_recv
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:806,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:806,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:806,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:806,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:806,1
    - Dst: quiche_conn_is_established
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:811,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:811,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:811,1
    - Dst: quiche_conn_is_in_early_data
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:811,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:811,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:811,1
    - Dst: std::unique_ptr<quiche_stream_iter, decltype(&quiche_stream_iter_free)>
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:812,1
    - Dst: quiche_conn_readable
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:812,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:812,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:812,1
    - Dst: quiche_stream_iter_next
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:815,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:815,1
    - Dst: handleReadableStream
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:816,1
    - Dst: flushEgress
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:819,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:819,1
    - Dst: local::isUnspecified
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:819,1
    - Dst: DEBUGLOG
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:822,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 66
    argCount: 4
    argNames:
    - ' frontend'
    - ' clientState'
    - ' sock'
    - ' buffer'
    argTypes:
    - DOQFrontend
    - ClientState
    - Socket
    - PacketBuffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 825
      start: 706
    functionDepth: 5
    functionLinenumber: 706
    functionLinenumberEnd: 825
    functionName: handleSocketReadable
    functionSourceFile: /src/pdns/pdns/dnsdistdist/doq.cc
    functionUses: 1
    functionsReached:
    - DEBUGLOG
    - local::isUnspecified
    - quiche_conn_is_established
    - ComboAddress::getSocklen
    - handleStatelessRetry
    - reinterpret_cast<struct sockaddr*>
    - validateToken
    - handleReadableStream
    - resize
    - quiche_header_info
    - size
    - PacketBuffer::assign
    - std::array::begin
    - createConnection
    - auto::get
    - dnsdist::doq::recvAsync
    - quiche_conn_recv
    - quiche_stream_iter_next
    - dnsdist::IncomingConcurrentTCPConnectionsManager::accountNewTCPConnection
    - static_cast<uint8_t>
    - get
    - quiche_conn_readable
    - std::array::data
    - quiche_conn_is_in_early_data
    - ComboAddress::toStringWithPort
    - handleVersionNegotiation
    - std::unique_ptr<quiche_stream_iter, decltype(&quiche_stream_iter_free)>
    - getConnection
    - flushEgress
    - quiche_version_is_supported
    - data
    - std::array::size
    linkageType: ''
    returnType: void
    signature: void handleSocketReadable(DOQFrontend& frontend, ClientState& clientState,
      Socket& sock, PacketBuffer& buffer)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:832,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:832,1
    - Dst: setThreadName
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:838,1
    - Dst: Socket::setNonBlocking
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:841,1
    - Dst: std::unique_ptr<FDMultiplexer>
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:843,1
    - Dst: FDMultiplexer::getMultiplexerSilent
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:843,1
    - Dst: d_server_config::d_responseReceiver::getDescriptor
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:845,1
    - Dst: auto::addReadFD
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:846,1
    - Dst: Socket::getHandle
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:846,1
    - Dst: auto::addReadFD
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:847,1
    - Dst: std::vector::clear
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:851,1
    - Dst: auto::getAvailableFDs
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:852,1
    - Dst: dnsdist::configuration::refreshLocalRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:854,1
    - Dst: std::find
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:857,1
    - Dst: std::vector::begin
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:857,1
    - Dst: std::vector::end
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:857,1
    - Dst: Socket::getHandle
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:857,1
    - Dst: std::vector::end
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:857,1
    - Dst: handleSocketReadable
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:858,1
    - Dst: std::find
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:861,1
    - Dst: std::vector::begin
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:861,1
    - Dst: std::vector::end
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:861,1
    - Dst: std::vector::end
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:861,1
    - Dst: flushResponses
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:862,1
    - Dst: d_server_config::d_connections::begin
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:865,1
    - Dst: d_server_config::d_connections::end
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:865,1
    - Dst: quiche_conn_on_timeout
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:866,1
    - Dst: auto::second::d_conn::get
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:866,1
    - Dst: flushEgress
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:868,1
    - Dst: ClientState*::local::isUnspecified
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:868,1
    - Dst: quiche_conn_is_closed
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:870,1
    - Dst: auto::second::d_conn::get
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:870,1
    - Dst: quiche_conn_stats
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:875,1
    - Dst: auto::second::d_conn::get
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:875,1
    - Dst: quiche_conn_path_stats
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:876,1
    - Dst: auto::second::d_conn::get
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:876,1
    - Dst: DEBUGLOG
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:878,1
    - Dst: d_server_config::d_connections::erase
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:880,1
    - Dst: flushStalledResponses
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:883,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:889,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:889,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:889,1
    - Dst: auto::error
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:890,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:890,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:893,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:893,1
    - Dst: auto::info
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:894,1
    - Dst: DEBUGLOG
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:899,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/doq.cc:899,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 44
    argCount: 1
    argNames:
    - clientState
    argTypes:
    - ClientState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 901
      start: 828
    functionDepth: 1
    functionLinenumber: 828
    functionLinenumberEnd: 901
    functionName: doqThread
    functionSourceFile: /src/pdns/pdns/dnsdistdist/doq.cc
    functionUses: 0
    functionsReached:
    - flushStalledResponses
    - DEBUGLOG
    - auto::addReadFD
    - ClientState*::local::isUnspecified
    - flushResponses
    - d_server_config::d_connections::erase
    - d_server_config::d_connections::begin
    - quiche_conn_on_timeout
    - d_server_config::d_responseReceiver::getDescriptor
    - Socket::setNonBlocking
    - Logging::Loggable
    - auto::getAvailableFDs
    - std::vector::begin
    - handleSocketReadable
    - auto::error
    - dnsdist::logging::getTopLogger
    - quiche_conn_path_stats
    - setThreadName
    - auto::info
    - std::vector::end
    - quiche_conn_is_closed
    - VERBOSESLOG
    - quiche_conn_stats
    - auto::second::d_conn::get
    - FDMultiplexer::getMultiplexerSilent
    - std::vector::clear
    - d_server_config::d_connections::end
    - Socket::getHandle
    - flushEgress
    - what
    - infolog
    - std::unique_ptr<FDMultiplexer>
    - std::find
    - dnsdist::configuration::refreshLocalRuntimeConfiguration
    linkageType: ''
    returnType: void
    signature: void doqThread(ClientState* clientState)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: close
      Src: /src/pdns/pdns/dnsdistdist/devpollmplexer.cc:46,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 48
    functionName: ~DevPollFDMultiplexer()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/devpollmplexer.cc
    functionUses: 0
    functionsReached:
    - close
    linkageType: ''
    returnType: void
    signature: void ~DevPollFDMultiplexer()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 56
    functionDepth: 0
    functionLinenumber: 56
    functionLinenumberEnd: 59
    functionName: DevPollFDMultiplexer::getName
    functionSourceFile: /src/pdns/pdns/dnsdistdist/devpollmplexer.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: string
    signature: string getName() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DevPollFDMultiplexer::DevPollFDMultiplexer
      Src: /src/pdns/pdns/dnsdistdist/devpollmplexer.cc:67,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 65
    functionDepth: 0
    functionLinenumber: 65
    functionLinenumberEnd: 68
    functionName: makeDevPoll
    functionSourceFile: /src/pdns/pdns/dnsdistdist/devpollmplexer.cc
    functionUses: 0
    functionsReached:
    - DevPollFDMultiplexer::DevPollFDMultiplexer
    linkageType: ''
    returnType: FDMultiplexer
    signature: FDMultiplexer * makeDevPoll(unsigned int)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: FDMultiplexer::getMultiplexerMap
      Src: /src/pdns/pdns/dnsdistdist/devpollmplexer.cc:74,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 72
    functionDepth: 0
    functionLinenumber: 72
    functionLinenumberEnd: 75
    functionName: DevPollRegisterOurselves
    functionSourceFile: /src/pdns/pdns/dnsdistdist/devpollmplexer.cc
    functionUses: 0
    functionsReached:
    - FDMultiplexer::getMultiplexerMap
    linkageType: ''
    returnType: void
    signature: void DevPollRegisterOurselves()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: open
      Src: /src/pdns/pdns/dnsdistdist/devpollmplexer.cc:80,1
    - Dst: FDMultiplexerException
      Src: /src/pdns/pdns/dnsdistdist/devpollmplexer.cc:82,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/devpollmplexer.cc:82,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 78
    functionDepth: 0
    functionLinenumber: 78
    functionLinenumberEnd: 84
    functionName: DevPollFDMultiplexer::DevPollFDMultiplexer
    functionSourceFile: /src/pdns/pdns/dnsdistdist/devpollmplexer.cc
    functionUses: 3
    functionsReached:
    - FDMultiplexerException
    - stringerror
    - open
    linkageType: ''
    returnType: void
    signature: void DevPollFDMultiplexer::DevPollFDMultiplexer()
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/devpollmplexer.cc:96,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - kind
    argTypes:
    - FDMultiplexer::EventKind
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 86
    functionDepth: 0
    functionLinenumber: 86
    functionLinenumberEnd: 97
    functionName: convertEventKind
    functionSourceFile: /src/pdns/pdns/dnsdistdist/devpollmplexer.cc
    functionUses: 8
    functionsReached:
    - std::runtime_error
    linkageType: ''
    returnType: int
    signature: int convertEventKind(FDMultiplexer::EventKind kind)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: convertEventKind
      Src: /src/pdns/pdns/dnsdistdist/devpollmplexer.cc:103,1
    - Dst: write
      Src: /src/pdns/pdns/dnsdistdist/devpollmplexer.cc:106,1
    - Dst: FDMultiplexerException
      Src: /src/pdns/pdns/dnsdistdist/devpollmplexer.cc:107,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/devpollmplexer.cc:107,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - fd
    - kind
    argTypes:
    - int
    - FDMultiplexer::EventKind
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 99
    functionDepth: 0
    functionLinenumber: 99
    functionLinenumberEnd: 109
    functionName: DevPollFDMultiplexer::addFD
    functionSourceFile: /src/pdns/pdns/dnsdistdist/devpollmplexer.cc
    functionUses: 0
    functionsReached:
    - FDMultiplexerException
    - stringerror
    - write
    - convertEventKind
    linkageType: ''
    returnType: void
    signature: void DevPollFDMultiplexer::addFD(int fd, FDMultiplexer::EventKind kind)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: write
      Src: /src/pdns/pdns/dnsdistdist/devpollmplexer.cc:118,1
    - Dst: FDMultiplexerException
      Src: /src/pdns/pdns/dnsdistdist/devpollmplexer.cc:119,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/devpollmplexer.cc:119,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - fd
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 111
    functionDepth: 0
    functionLinenumber: 111
    functionLinenumberEnd: 121
    functionName: DevPollFDMultiplexer::removeFD
    functionSourceFile: /src/pdns/pdns/dnsdistdist/devpollmplexer.cc
    functionUses: 0
    functionsReached:
    - FDMultiplexerException
    - stringerror
    - write
    linkageType: ''
    returnType: void
    signature: void DevPollFDMultiplexer::removeFD(int fd, FDMultiplexer::EventKind)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/devpollmplexer.cc:125,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/devpollmplexer.cc:125,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/devpollmplexer.cc:127,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/devpollmplexer.cc:127,1
    - Dst: std::vector::data
      Src: /src/pdns/pdns/dnsdistdist/devpollmplexer.cc:128,1
    - Dst: ioctl
      Src: /src/pdns/pdns/dnsdistdist/devpollmplexer.cc:130,1
    - Dst: FDMultiplexerException
      Src: /src/pdns/pdns/dnsdistdist/devpollmplexer.cc:133,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/devpollmplexer.cc:133,1
    - Dst: push_back
      Src: /src/pdns/pdns/dnsdistdist/devpollmplexer.cc:137,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/devpollmplexer.cc:137,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 2
    argNames:
    - ' fds'
    - timeout
    argTypes:
    - std::vector<int>
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 139
      start: 123
    functionDepth: 0
    functionLinenumber: 123
    functionLinenumberEnd: 139
    functionName: DevPollFDMultiplexer::getAvailableFDs
    functionSourceFile: /src/pdns/pdns/dnsdistdist/devpollmplexer.cc
    functionUses: 0
    functionsReached:
    - push_back
    - stringerror
    - size
    - std::vector::at
    - FDMultiplexerException
    - std::vector::data
    - ioctl
    linkageType: ''
    returnType: void
    signature: void DevPollFDMultiplexer::getAvailableFDs(std::vector<int>& fds, int
      timeout)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/devpollmplexer.cc:145,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/devpollmplexer.cc:145,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/devpollmplexer.cc:147,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/devpollmplexer.cc:147,1
    - Dst: std::vector::data
      Src: /src/pdns/pdns/dnsdistdist/devpollmplexer.cc:148,1
    - Dst: ioctl
      Src: /src/pdns/pdns/dnsdistdist/devpollmplexer.cc:150,1
    - Dst: gettimeofday
      Src: /src/pdns/pdns/dnsdistdist/devpollmplexer.cc:152,1
    - Dst: FDMultiplexerException
      Src: /src/pdns/pdns/dnsdistdist/devpollmplexer.cc:155,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/devpollmplexer.cc:155,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/devpollmplexer.cc:164,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/devpollmplexer.cc:164,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/devpollmplexer.cc:164,1
    - Dst: find
      Src: /src/pdns/pdns/dnsdistdist/devpollmplexer.cc:165,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/devpollmplexer.cc:165,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/devpollmplexer.cc:166,1
    - Dst: d_callback
      Src: /src/pdns/pdns/dnsdistdist/devpollmplexer.cc:167,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/devpollmplexer.cc:172,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/devpollmplexer.cc:172,1
    - Dst: find
      Src: /src/pdns/pdns/dnsdistdist/devpollmplexer.cc:173,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/devpollmplexer.cc:173,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/devpollmplexer.cc:174,1
    - Dst: d_callback
      Src: /src/pdns/pdns/dnsdistdist/devpollmplexer.cc:175,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 26
    argCount: 2
    argNames:
    - now
    - timeout
    argTypes:
    - struct timeval*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 182
      start: 141
    functionDepth: 0
    functionLinenumber: 141
    functionLinenumberEnd: 182
    functionName: DevPollFDMultiplexer::run
    functionSourceFile: /src/pdns/pdns/dnsdistdist/devpollmplexer.cc
    functionUses: 1
    functionsReached:
    - stringerror
    - end
    - size
    - d_callback
    - std::vector::at
    - gettimeofday
    - FDMultiplexerException
    - std::vector::data
    - find
    - ioctl
    linkageType: ''
    returnType: int
    signature: int DevPollFDMultiplexer::run(struct timeval* now, int timeout)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: funcparam_t_cast<Socket*>
      Src: /src/pdns/pdns/dnsdistdist/devpollmplexer.cc:188,1
    - Dst: Socket*::recvFrom
      Src: /src/pdns/pdns/dnsdistdist/devpollmplexer.cc:191,1
    - Dst: string::size
      Src: /src/pdns/pdns/dnsdistdist/devpollmplexer.cc:192,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - fd
    - ' parameter'
    argTypes:
    - int
    - funcparam_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 193
      start: 185
    functionDepth: 0
    functionLinenumber: 185
    functionLinenumberEnd: 193
    functionName: acceptData
    functionSourceFile: /src/pdns/pdns/dnsdistdist/devpollmplexer.cc
    functionUses: 0
    functionsReached:
    - string::size
    - funcparam_t_cast<Socket*>
    - Socket*::recvFrom
    linkageType: ''
    returnType: void
    signature: void acceptData(int fd, funcparam_t& parameter)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Socket::bind
      Src: /src/pdns/pdns/dnsdistdist/devpollmplexer.cc:201,1
    - Dst: DevPollFDMultiplexer::DevPollFDMultiplexer
      Src: /src/pdns/pdns/dnsdistdist/devpollmplexer.cc:203,1
    - Dst: DevPollFDMultiplexer::addReadFD
      Src: /src/pdns/pdns/dnsdistdist/devpollmplexer.cc:205,1
    - Dst: Socket::getHandle
      Src: /src/pdns/pdns/dnsdistdist/devpollmplexer.cc:205,1
    - Dst: DevPollFDMultiplexer::run
      Src: /src/pdns/pdns/dnsdistdist/devpollmplexer.cc:208,1
    - Dst: DevPollFDMultiplexer::removeReadFD
      Src: /src/pdns/pdns/dnsdistdist/devpollmplexer.cc:210,1
    - Dst: Socket::getHandle
      Src: /src/pdns/pdns/dnsdistdist/devpollmplexer.cc:210,1
    - Dst: DevPollFDMultiplexer::removeReadFD
      Src: /src/pdns/pdns/dnsdistdist/devpollmplexer.cc:211,1
    - Dst: Socket::getHandle
      Src: /src/pdns/pdns/dnsdistdist/devpollmplexer.cc:211,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 212
      start: 196
    functionDepth: 0
    functionLinenumber: 196
    functionLinenumberEnd: 212
    functionName: main
    functionSourceFile: /src/pdns/pdns/dnsdistdist/devpollmplexer.cc
    functionUses: 33
    functionsReached:
    - DevPollFDMultiplexer::removeReadFD
    - Socket::getHandle
    - DevPollFDMultiplexer::run
    - DevPollFDMultiplexer::addReadFD
    - DevPollFDMultiplexer::DevPollFDMultiplexer
    - Socket::bind
    linkageType: ''
    returnType: int
    signature: int main()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 18
      start: 18
    functionDepth: 0
    functionLinenumber: 18
    functionLinenumberEnd: 18
    functionName: ~TLSSession()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~TLSSession()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 24
      start: 24
    functionDepth: 0
    functionLinenumber: 24
    functionLinenumberEnd: 24
    functionName: ~TLSConnection()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~TLSConnection()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 44
    functionDepth: 0
    functionLinenumber: 44
    functionLinenumberEnd: 47
    functionName: TLSConnection::setUnknownTicketKey
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setUnknownTicketKey()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 49
    functionDepth: 0
    functionLinenumber: 49
    functionLinenumberEnd: 52
    functionName: TLSConnection::getUnknownTicketKey
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool getUnknownTicketKey() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 54
    functionDepth: 0
    functionLinenumber: 54
    functionLinenumberEnd: 57
    functionName: TLSConnection::setResumedFromInactiveTicketKey
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setResumedFromInactiveTicketKey()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 59
    functionDepth: 0
    functionLinenumber: 59
    functionLinenumberEnd: 62
    functionName: TLSConnection::getResumedFromInactiveTicketKey
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool getResumedFromInactiveTicketKey() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: clear
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.hh:75,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 73
    functionDepth: 1
    functionLinenumber: 73
    functionLinenumberEnd: 76
    functionName: TLSCtx::TLSCtx
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler.hh
    functionUses: 0
    functionsReached:
    - clear
    linkageType: ''
    returnType: void
    signature: void TLSCtx()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 77
    functionDepth: 0
    functionLinenumber: 77
    functionLinenumberEnd: 77
    functionName: ~TLSCtx()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~TLSCtx()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.hh:83,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 81
    functionDepth: 0
    functionLinenumber: 81
    functionLinenumberEnd: 84
    functionName: TLSCtx::loadTicketsKeys
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler.hh
    functionUses: 0
    functionsReached:
    - std::runtime_error
    linkageType: ''
    returnType: void
    signature: void loadTicketsKeys(const std::string& /* file */)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.hh:87,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 85
    functionDepth: 0
    functionLinenumber: 85
    functionLinenumberEnd: 88
    functionName: TLSCtx::loadTicketsKey
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler.hh
    functionUses: 0
    functionsReached:
    - std::runtime_error
    linkageType: ''
    returnType: void
    signature: void loadTicketsKey(const std::string& /* key */)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: test_and_set
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.hh:92,1
    - Dst: rotateTicketsKey
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.hh:97,1
    - Dst: clear
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.hh:98,1
    - Dst: clear
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.hh:101,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.hh:102,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.hh:102,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.hh:102,1
    - Dst: clear
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.hh:105,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 16
    argCount: 1
    argNames:
    - now
    argTypes:
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 89
    functionDepth: 1
    functionLinenumber: 89
    functionLinenumberEnd: 109
    functionName: TLSCtx::handleTicketsKeyRotation
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler.hh
    functionUses: 0
    functionsReached:
    - std::runtime_error
    - rotateTicketsKey
    - what
    - clear
    - std::string
    - test_and_set
    linkageType: ''
    returnType: void
    signature: void handleTicketsKeyRotation(time_t now)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 111
    functionDepth: 0
    functionLinenumber: 111
    functionLinenumberEnd: 114
    functionName: TLSCtx::getNextTicketsKeyRotation
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: time_t
    signature: time_t getNextTicketsKeyRotation() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' hook'
    argTypes:
    - tickets_key_added_hook
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 124
      start: 121
    functionDepth: 0
    functionLinenumber: 121
    functionLinenumberEnd: 124
    functionName: TLSCtx::setTicketsKeyAddedHook
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setTicketsKeyAddedHook(const tickets_key_added_hook& hook)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 125
    functionDepth: 0
    functionLinenumber: 125
    functionLinenumberEnd: 128
    functionName: '& getTicketsKeyAddedHook()'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: tickets_key_added_hook
    signature: tickets_key_added_hook & getTicketsKeyAddedHook()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 132
      start: 129
    functionDepth: 0
    functionLinenumber: 129
    functionLinenumberEnd: 132
    functionName: TLSCtx::hasTicketsKeyAddedHook
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler.hh
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool hasTicketsKeyAddedHook()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - alpn
    argTypes:
    - ALPN
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 149
      start: 147
    functionDepth: 0
    functionLinenumber: 147
    functionLinenumberEnd: 149
    functionName: TLSFrontend::TLSFrontend
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void TLSFrontend(ALPN alpn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.hh:151,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - std::shared_ptr<TLSCtx>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 153
      start: 151
    functionDepth: 0
    functionLinenumber: 151
    functionLinenumberEnd: 153
    functionName: TLSFrontend::TLSFrontend
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler.hh
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void TLSFrontend(std::shared_ptr<TLSCtx> ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: TLSFrontend::rotateTicketsKey
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.hh:160,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - now
    argTypes:
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 162
      start: 157
    functionDepth: 0
    functionLinenumber: 157
    functionLinenumberEnd: 162
    functionName: TLSFrontend::rotateTicketsKey
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler.hh
    functionUses: 2
    functionsReached:
    - TLSFrontend::rotateTicketsKey
    linkageType: ''
    returnType: void
    signature: void rotateTicketsKey(time_t now)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: TLSFrontend::loadTicketsKeys
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.hh:167,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - ' file'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 169
      start: 164
    functionDepth: 0
    functionLinenumber: 164
    functionLinenumberEnd: 169
    functionName: TLSFrontend::loadTicketsKeys
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler.hh
    functionUses: 2
    functionsReached:
    - TLSFrontend::loadTicketsKeys
    linkageType: ''
    returnType: void
    signature: void loadTicketsKeys(const std::string& file)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: TLSFrontend::loadTicketsKey
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.hh:174,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - ' key'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 176
      start: 171
    functionDepth: 0
    functionLinenumber: 171
    functionLinenumberEnd: 176
    functionName: TLSFrontend::loadTicketsKey
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler.hh
    functionUses: 2
    functionsReached:
    - TLSFrontend::loadTicketsKey
    linkageType: ''
    returnType: void
    signature: void loadTicketsKey(const std::string& key)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::atomic_load_explicit
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.hh:180,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 181
      start: 178
    functionDepth: 0
    functionLinenumber: 178
    functionLinenumberEnd: 181
    functionName: TLSFrontend::getContext
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler.hh
    functionUses: 0
    functionsReached:
    - std::atomic_load_explicit
    linkageType: ''
    returnType: std::shared_ptr<TLSCtx>
    signature: std::shared_ptr<TLSCtx> getContext() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::atomic_store_explicit
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.hh:185,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.hh:185,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - parent
    argTypes:
    - std::shared_ptr<const TLSFrontend>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 186
      start: 183
    functionDepth: 0
    functionLinenumber: 183
    functionLinenumberEnd: 186
    functionName: TLSFrontend::setParent
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler.hh
    functionUses: 0
    functionsReached:
    - std::move
    - std::atomic_store_explicit
    linkageType: ''
    returnType: void
    signature: void setParent(std::shared_ptr<const TLSFrontend> parent)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: reset
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.hh:190,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 191
      start: 188
    functionDepth: 0
    functionLinenumber: 188
    functionLinenumberEnd: 191
    functionName: TLSFrontend::cleanup
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler.hh
    functionUses: 0
    functionsReached:
    - reset
    linkageType: ''
    returnType: void
    signature: void cleanup()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: TLSFrontend::getTicketsKeysCount
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.hh:196,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 200
      start: 193
    functionDepth: 0
    functionLinenumber: 193
    functionLinenumberEnd: 200
    functionName: TLSFrontend::getTicketsKeysCount
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler.hh
    functionUses: 2
    functionsReached:
    - TLSFrontend::getTicketsKeysCount
    linkageType: ''
    returnType: size_t
    signature: size_t getTicketsKeysCount()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: localtime_r
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.hh:207,1
    - Dst: strftime
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.hh:208,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.hh:210,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - rotationTime
    argTypes:
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 211
      start: 202
    functionDepth: 0
    functionLinenumber: 202
    functionLinenumberEnd: 211
    functionName: TLSFrontend::timeToString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler.hh
    functionUses: 1
    functionsReached:
    - strftime
    - std::string
    - localtime_r
    linkageType: ''
    returnType: std::string
    signature: std::string timeToString(time_t rotationTime)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 216
      start: 213
    functionDepth: 0
    functionLinenumber: 213
    functionLinenumberEnd: 216
    functionName: TLSFrontend::getTicketsKeyRotationDelay
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: time_t
    signature: time_t getTicketsKeyRotationDelay() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: TLSFrontend::timeToString
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.hh:223,1
    - Dst: TLSFrontend::getNextTicketsKeyRotation
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.hh:223,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 227
      start: 218
    functionDepth: 0
    functionLinenumber: 218
    functionLinenumberEnd: 227
    functionName: TLSFrontend::getNextTicketsKeyRotation
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler.hh
    functionUses: 2
    functionsReached:
    - TLSFrontend::getNextTicketsKeyRotation
    - TLSFrontend::timeToString
    linkageType: ''
    returnType: std::string
    signature: std::string getNextTicketsKeyRotation() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 232
      start: 229
    functionDepth: 0
    functionLinenumber: 229
    functionLinenumberEnd: 232
    functionName: TLSFrontend::getRequestedProvider
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string getRequestedProvider() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: getName
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.hh:237,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 240
      start: 234
    functionDepth: 0
    functionLinenumber: 234
    functionLinenumberEnd: 240
    functionName: TLSFrontend::getEffectiveProvider
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler.hh
    functionUses: 0
    functionsReached:
    - getName
    linkageType: ''
    returnType: std::string
    signature: std::string getEffectiveProvider() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: getClientConnection
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.hh:261,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 5
    argNames:
    - ' host'
    - hostIsAddr
    - socket
    - ' timeout'
    - ' ctx'
    argTypes:
    - std::string
    - bool
    - int
    - struct timeval
    - std::shared_ptr<TLSCtx>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 263
      start: 257
    functionDepth: 0
    functionLinenumber: 257
    functionLinenumberEnd: 263
    functionName: TCPIOHandler::TCPIOHandler
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler.hh
    functionUses: 0
    functionsReached:
    - getClientConnection
    linkageType: ''
    returnType: void
    signature: void TCPIOHandler(const std::string& host, bool hostIsAddr, int socket,
      const struct timeval& timeout, const std::shared_ptr<TLSCtx>& ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: getConnection
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.hh:269,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 4
    argNames:
    - socket
    - ' timeout'
    - ' ctx'
    - now
    argTypes:
    - int
    - struct timeval
    - std::shared_ptr<TLSCtx>
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 271
      start: 265
    functionDepth: 0
    functionLinenumber: 265
    functionLinenumberEnd: 271
    functionName: TCPIOHandler::TCPIOHandler
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler.hh
    functionUses: 0
    functionsReached:
    - getConnection
    linkageType: ''
    returnType: void
    signature: void TCPIOHandler(int socket, const struct timeval& timeout, const
      std::shared_ptr<TLSCtx>& ctx, time_t now)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: close
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.hh:275,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 276
      start: 273
    functionDepth: 0
    functionLinenumber: 273
    functionLinenumberEnd: 276
    functionName: ~TCPIOHandler()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler.hh
    functionUses: 0
    functionsReached:
    - close
    linkageType: ''
    returnType: void
    signature: void ~TCPIOHandler()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: TCPIOHandler::close
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.hh:281,1
    - Dst: reset
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.hh:282,1
    - Dst: shutdown
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.hh:286,1
    - Dst: TCPIOHandler::close
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.hh:287,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 290
      start: 278
    functionDepth: 0
    functionLinenumber: 278
    functionLinenumberEnd: 290
    functionName: TCPIOHandler::close
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler.hh
    functionUses: 4
    functionsReached:
    - reset
    - shutdown
    - TCPIOHandler::close
    linkageType: ''
    returnType: void
    signature: void close()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 295
      start: 292
    functionDepth: 0
    functionLinenumber: 292
    functionLinenumberEnd: 295
    functionName: TCPIOHandler::getDescriptor
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int getDescriptor() const
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: setsockopt
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.hh:304,1
    - Dst: SConnectWithTimeout
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.hh:317,1
    - Dst: SConnectWithTimeout
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.hh:322,1
    - Dst: TCPIOHandler::tryConnect
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.hh:327,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 21
    argCount: 2
    argNames:
    - fastOpen
    - ' remote'
    argTypes:
    - bool
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 331
      start: 297
    functionDepth: 0
    functionLinenumber: 297
    functionLinenumberEnd: 331
    functionName: TCPIOHandler::tryConnect
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler.hh
    functionUses: 2
    functionsReached:
    - SConnectWithTimeout
    - TCPIOHandler::tryConnect
    - setsockopt
    linkageType: ''
    returnType: IOState
    signature: IOState tryConnect(bool fastOpen, const ComboAddress& remote)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: setsockopt
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.hh:340,1
    - Dst: SConnectWithTimeout
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.hh:353,1
    - Dst: SConnectWithTimeout
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.hh:358,1
    - Dst: TCPIOHandler::connect
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.hh:363,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 20
    argCount: 3
    argNames:
    - fastOpen
    - ' remote'
    - ' timeout'
    argTypes:
    - bool
    - ComboAddress
    - struct timeval
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 365
      start: 333
    functionDepth: 0
    functionLinenumber: 333
    functionLinenumberEnd: 365
    functionName: TCPIOHandler::connect
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler.hh
    functionUses: 4
    functionsReached:
    - TCPIOHandler::connect
    - SConnectWithTimeout
    - setsockopt
    linkageType: ''
    returnType: void
    signature: void connect(bool fastOpen, const ComboAddress& remote, const struct
      timeval& timeout)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: TCPIOHandler::tryHandshake
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.hh:370,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 373
      start: 367
    functionDepth: 0
    functionLinenumber: 367
    functionLinenumberEnd: 373
    functionName: TCPIOHandler::tryHandshake
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler.hh
    functionUses: 2
    functionsReached:
    - TCPIOHandler::tryHandshake
    linkageType: ''
    returnType: IOState
    signature: IOState tryHandshake()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: TCPIOHandler::read
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.hh:378,1
    - Dst: readn2WithTimeout
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.hh:380,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - buffer
    - bufferSize
    - ' readTimeout'
    argTypes:
    - void*
    - size_t
    - struct timeval
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 382
      start: 375
    functionDepth: 0
    functionLinenumber: 375
    functionLinenumberEnd: 382
    functionName: TCPIOHandler::read
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler.hh
    functionUses: 4
    functionsReached:
    - readn2WithTimeout
    - TCPIOHandler::read
    linkageType: ''
    returnType: size_t
    signature: size_t read(void* buffer, size_t bufferSize, const struct timeval&
      readTimeout, const struct timeval& totalTimeout = {0,0}, bool allowIncomplete=false)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.hh:392,1
    - Dst: std::out_of_range
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.hh:393,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.hh:393,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.hh:393,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.hh:393,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.hh:393,1
    - Dst: TCPIOHandler::tryRead
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.hh:397,1
    - Dst: TCPIOHandler::read
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.hh:401,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.hh:401,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.hh:401,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.hh:403,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.hh:410,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.hh:410,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.hh:414,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 24
    argCount: 3
    argNames:
    - ' buffer'
    - ' pos'
    - toRead
    argTypes:
    - PacketBuffer
    - size_t
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 422
      start: 390
    functionDepth: 0
    functionLinenumber: 390
    functionLinenumberEnd: 422
    functionName: TCPIOHandler::tryRead
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler.hh
    functionUses: 2
    functionsReached:
    - reinterpret_cast<char*>
    - static_cast<size_t>
    - TCPIOHandler::tryRead
    - std::out_of_range
    - std::to_string
    - std::runtime_error
    - stringerror
    - runtime_error
    - size
    - TCPIOHandler::read
    - at
    linkageType: ''
    returnType: IOState
    signature: IOState tryRead(PacketBuffer& buffer, size_t& pos, size_t toRead, bool
      allowIncomplete=false, bool bypassFilters=false)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.hh:432,1
    - Dst: std::out_of_range
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.hh:433,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.hh:433,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.hh:433,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.hh:433,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.hh:433,1
    - Dst: TCPIOHandler::tryWrite
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.hh:436,1
    - Dst: sendMsgWithOptions
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.hh:442,1
    - Dst: reinterpret_cast<const char *>
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.hh:442,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.hh:442,1
    - Dst: TCPIOHandler::write
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.hh:457,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.hh:457,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.hh:457,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.hh:460,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.hh:467,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.hh:467,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.hh:471,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 31
    argCount: 3
    argNames:
    - ' buffer'
    - ' pos'
    - toWrite
    argTypes:
    - PacketBuffer
    - size_t
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 476
      start: 430
    functionDepth: 0
    functionLinenumber: 430
    functionLinenumberEnd: 476
    functionName: TCPIOHandler::tryWrite
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler.hh
    functionUses: 2
    functionsReached:
    - TCPIOHandler::write
    - static_cast<size_t>
    - std::out_of_range
    - std::to_string
    - at
    - std::runtime_error
    - stringerror
    - runtime_error
    - size
    - reinterpret_cast<const char *>
    - reinterpret_cast<const char*>
    - TCPIOHandler::tryWrite
    - sendMsgWithOptions
    linkageType: ''
    returnType: IOState
    signature: IOState tryWrite(const PacketBuffer& buffer, size_t& pos, size_t toWrite)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: TCPIOHandler::write
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.hh:481,1
    - Dst: sendMsgWithOptions
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.hh:487,1
    - Dst: reinterpret_cast<const char *>
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.hh:487,1
    - Dst: writen2WithTimeout
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.hh:496,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 3
    argNames:
    - buffer
    - bufferSize
    - ' writeTimeout'
    argTypes:
    - void*
    - size_t
    - struct timeval
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 497
      start: 478
    functionDepth: 0
    functionLinenumber: 478
    functionLinenumberEnd: 497
    functionName: TCPIOHandler::write
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler.hh
    functionUses: 7
    functionsReached:
    - TCPIOHandler::write
    - writen2WithTimeout
    - reinterpret_cast<const char *>
    - sendMsgWithOptions
    linkageType: ''
    returnType: size_t
    signature: size_t write(const void* buffer, size_t bufferSize, const struct timeval&
      writeTimeout)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: TCPIOHandler::getServerNameIndication
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.hh:502,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.hh:504,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 505
      start: 499
    functionDepth: 0
    functionLinenumber: 499
    functionLinenumberEnd: 505
    functionName: TCPIOHandler::getServerNameIndication
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler.hh
    functionUses: 2
    functionsReached:
    - std::string
    - TCPIOHandler::getServerNameIndication
    linkageType: ''
    returnType: std::string
    signature: std::string getServerNameIndication() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: TCPIOHandler::getNextProtocol
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.hh:510,1
    - Dst: std::vector<uint8_t>
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.hh:512,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 513
      start: 507
    functionDepth: 0
    functionLinenumber: 507
    functionLinenumberEnd: 513
    functionName: TCPIOHandler::getNextProtocol
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler.hh
    functionUses: 2
    functionsReached:
    - std::vector<uint8_t>
    - TCPIOHandler::getNextProtocol
    linkageType: ''
    returnType: std::vector<uint8_t>
    signature: std::vector<uint8_t> getNextProtocol() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: TCPIOHandler::getTLSVersion
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.hh:518,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 521
      start: 515
    functionDepth: 0
    functionLinenumber: 515
    functionLinenumberEnd: 521
    functionName: TCPIOHandler::getTLSVersion
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler.hh
    functionUses: 2
    functionsReached:
    - TCPIOHandler::getTLSVersion
    linkageType: ''
    returnType: LibsslTLSVersion
    signature: LibsslTLSVersion getTLSVersion() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 526
      start: 523
    functionDepth: 0
    functionLinenumber: 523
    functionLinenumberEnd: 526
    functionName: TCPIOHandler::isTLS
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool isTLS() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: TCPIOHandler::getVerifyResult
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.hh:531,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 534
      start: 528
    functionDepth: 0
    functionLinenumber: 528
    functionLinenumberEnd: 534
    functionName: TCPIOHandler::getVerifyResult
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler.hh
    functionUses: 2
    functionsReached:
    - TCPIOHandler::getVerifyResult
    linkageType: ''
    returnType: std::pair<long, std::string>
    signature: std::pair<long, std::string> getVerifyResult() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hasSessionBeenResumed
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.hh:538,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 539
      start: 536
    functionDepth: 0
    functionLinenumber: 536
    functionLinenumberEnd: 539
    functionName: TCPIOHandler::hasTLSSessionBeenResumed
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler.hh
    functionUses: 0
    functionsReached:
    - hasSessionBeenResumed
    linkageType: ''
    returnType: bool
    signature: bool hasTLSSessionBeenResumed() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TCPIOHandler::getResumedFromInactiveTicketKey
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.hh:543,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 544
      start: 541
    functionDepth: 0
    functionLinenumber: 541
    functionLinenumberEnd: 544
    functionName: TCPIOHandler::getResumedFromInactiveTicketKey
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler.hh
    functionUses: 2
    functionsReached:
    - TCPIOHandler::getResumedFromInactiveTicketKey
    linkageType: ''
    returnType: bool
    signature: bool getResumedFromInactiveTicketKey() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TCPIOHandler::getUnknownTicketKey
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.hh:548,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 549
      start: 546
    functionDepth: 0
    functionLinenumber: 546
    functionLinenumberEnd: 549
    functionName: TCPIOHandler::getUnknownTicketKey
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler.hh
    functionUses: 2
    functionsReached:
    - TCPIOHandler::getUnknownTicketKey
    linkageType: ''
    returnType: bool
    signature: bool getUnknownTicketKey() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: setSession
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.hh:554,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ' session'
    argTypes:
    - std::unique_ptr<TLSSession>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 556
      start: 551
    functionDepth: 0
    functionLinenumber: 551
    functionLinenumberEnd: 556
    functionName: TCPIOHandler::setTLSSession
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler.hh
    functionUses: 0
    functionsReached:
    - setSession
    linkageType: ''
    returnType: void
    signature: void setTLSSession(std::unique_ptr<TLSSession>& session)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.hh:561,1
    - Dst: getSessions
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.hh:564,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 565
      start: 558
    functionDepth: 0
    functionLinenumber: 558
    functionLinenumberEnd: 565
    functionName: TCPIOHandler::getTLSSessions
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler.hh
    functionUses: 0
    functionsReached:
    - getSessions
    - std::runtime_error
    linkageType: ''
    returnType: std::vector<std::unique_ptr<TLSSession>>
    signature: std::vector<std::unique_ptr<TLSSession>> getTLSSessions()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: isTCPSocketUsable
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.hh:570,1
    - Dst: TCPIOHandler::isUsable
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.hh:572,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 573
      start: 567
    functionDepth: 0
    functionLinenumber: 567
    functionLinenumberEnd: 573
    functionName: TCPIOHandler::isUsable
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler.hh
    functionUses: 2
    functionsReached:
    - TCPIOHandler::isUsable
    - isTCPSocketUsable
    linkageType: ''
    returnType: bool
    signature: bool isUsable() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: TCPIOHandler::getAsyncFDs
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler.hh:580,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 581
      start: 575
    functionDepth: 0
    functionLinenumber: 575
    functionLinenumberEnd: 581
    functionName: TCPIOHandler::getAsyncFDs
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler.hh
    functionUses: 2
    functionsReached:
    - TCPIOHandler::getAsyncFDs
    linkageType: ''
    returnType: std::vector<int>
    signature: std::vector<int> getAsyncFDs()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/libssl.hh:25,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/libssl.hh:25,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' cert'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 26
      start: 24
    functionDepth: 0
    functionLinenumber: 24
    functionLinenumberEnd: 26
    functionName: TLSCertKeyPair
    functionSourceFile: /src/pdns/pdns/dnsdistdist/libssl.hh
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void TLSCertKeyPair(const std::string& cert, std::optional<std::string>
      key = std::nullopt, std::optional<std::string> password = std::nullopt)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - ' other'
    argTypes:
    - DNSResourceRecord
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 118
      start: 109
    functionDepth: 0
    functionLinenumber: 109
    functionLinenumberEnd: 118
    functionName: operator<(const DNSResourceRecord& other) const
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dns.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool operator<(const DNSResourceRecord& other) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: reinterpret_cast<uintptr_t>
      Src: /src/pdns/pdns/dnsdistdist/dns.hh:195,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - mem
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 196
      start: 193
    functionDepth: 0
    functionLinenumber: 193
    functionLinenumberEnd: 196
    functionName: dnsheader_aligned::isMemoryAligned
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dns.hh
    functionUses: 1
    functionsReached:
    - reinterpret_cast<uintptr_t>
    linkageType: ''
    returnType: bool
    signature: bool isMemoryAligned(const void* mem)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dnsheader_aligned::isMemoryAligned
      Src: /src/pdns/pdns/dnsdistdist/dns.hh:200,1
    - Dst: reinterpret_cast<const dnsheader*>
      Src: /src/pdns/pdns/dnsdistdist/dns.hh:201,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/dns.hh:204,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - mem
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 207
      start: 198
    functionDepth: 0
    functionLinenumber: 198
    functionLinenumberEnd: 207
    functionName: dnsheader_aligned::dnsheader_aligned
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dns.hh
    functionUses: 0
    functionsReached:
    - dnsheader_aligned::isMemoryAligned
    - memcpy
    - reinterpret_cast<const dnsheader*>
    linkageType: ''
    returnType: void
    signature: void dnsheader_aligned(const void* mem)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 208
      start: 208
    functionDepth: 0
    functionLinenumber: 208
    functionLinenumberEnd: 208
    functionName: dnsheader_aligned::dnsheader_aligned
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dns.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void dnsheader_aligned(const dnsheader_aligned&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 209
      start: 209
    functionDepth: 0
    functionLinenumber: 209
    functionLinenumberEnd: 209
    functionName: dnsheader_aligned::dnsheader_aligned
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dns.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void dnsheader_aligned(dnsheader_aligned&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 210
      start: 210
    functionDepth: 0
    functionLinenumber: 210
    functionLinenumberEnd: 210
    functionName: '& operator=(const dnsheader_aligned&)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dns.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: dnsheader_aligned
    signature: dnsheader_aligned & operator=(const dnsheader_aligned&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 211
      start: 211
    functionDepth: 0
    functionLinenumber: 211
    functionLinenumberEnd: 211
    functionName: '& operator=(dnsheader_aligned&&)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dns.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: dnsheader_aligned
    signature: dnsheader_aligned & operator=(dnsheader_aligned&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 212
      start: 212
    functionDepth: 0
    functionLinenumber: 212
    functionLinenumberEnd: 212
    functionName: ~dnsheader_aligned()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dns.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~dnsheader_aligned()
  - 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: dnsheader_aligned::get
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dns.hh
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: dnsheader
    signature: dnsheader * get() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 222
      start: 219
    functionDepth: 0
    functionLinenumber: 219
    functionLinenumberEnd: 222
    functionName: '& operator*() const'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dns.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: dnsheader
    signature: dnsheader & operator*() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 227
      start: 224
    functionDepth: 0
    functionLinenumber: 224
    functionLinenumberEnd: 227
    functionName: '* operator->() const'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dns.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: dnsheader
    signature: dnsheader * operator->() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: reinterpret_cast<uint16_t*>
      Src: /src/pdns/pdns/dnsdistdist/dns.hh:237,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/dnsdistdist/dns.hh:237,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - dh
    argTypes:
    - dnsheader*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 238
      start: 234
    functionDepth: 0
    functionLinenumber: 234
    functionLinenumberEnd: 238
    functionName: getFlagsFromDNSHeader
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dns.hh
    functionUses: 19
    functionsReached:
    - reinterpret_cast<char*>
    - reinterpret_cast<uint16_t*>
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t * getFlagsFromDNSHeader(dnsheader* dh)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: reinterpret_cast<const uint16_t*>
      Src: /src/pdns/pdns/dnsdistdist/dns.hh:243,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/dns.hh:243,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - dh
    argTypes:
    - dnsheader*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 244
      start: 240
    functionDepth: 0
    functionLinenumber: 240
    functionLinenumberEnd: 244
    functionName: getFlagsFromDNSHeader
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dns.hh
    functionUses: 19
    functionsReached:
    - reinterpret_cast<const char*>
    - reinterpret_cast<const uint16_t*>
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t * getFlagsFromDNSHeader(const dnsheader* dh)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:48,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:49,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:52,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:54,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:55,1
    - Dst: DNSName::DNSName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:57,1
    - Dst: PacketReader::getName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:64,1
    - Dst: PacketReader::get16BitInt
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:65,1
    - Dst: PacketReader::get16BitInt
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:66,1
    - Dst: PacketReader::getName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:75,1
    - Dst: PacketReader::getDnsrecordheader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:76,1
    - Dst: PacketReader::xfrText
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:80,1
    - Dst: PacketReader::xfrBlob
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:84,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:87,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 1
    argNames:
    - ' answer'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 46
    functionDepth: 0
    functionLinenumber: 46
    functionLinenumberEnd: 88
    functionName: getFirstTXTAnswer
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc
    functionUses: 0
    functionsReached:
    - PacketReader::getName
    - PacketReader::xfrBlob
    - ntohs
    - std::runtime_error
    - size
    - PacketReader::get16BitInt
    - PacketReader::getDnsrecordheader
    - PacketReader::xfrText
    - data
    - DNSName::DNSName
    linkageType: ''
    returnType: std::string
    signature: std::string getFirstTXTAnswer(const std::string& answer)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:95,1
    - Dst: dnsdist::getRandomDNSID
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:95,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:96,1
    - Dst: getResolvers
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:98,1
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:100,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:101,1
    - Dst: withValues
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:105,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:105,1
    - Dst: Socket::setNonBlocking
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:107,1
    - Dst: Socket::connect
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:108,1
    - Dst: Socket::send
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:109,1
    - Dst: string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:109,1
    - Dst: std::vector::begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:109,1
    - Dst: std::vector::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:109,1
    - Dst: waitForData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:112,1
    - Dst: Socket::getHandle
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:112,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:114,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:114,1
    - Dst: toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:114,1
    - Dst: auto::error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:115,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:119,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:119,1
    - Dst: toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:119,1
    - Dst: auto::info
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:120,1
    - Dst: Socket::read
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:125,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:128,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:128,1
    - Dst: toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:128,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:128,1
    - Dst: auto::error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:129,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:129,1
    - Dst: string::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:133,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:134,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:134,1
    - Dst: string::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:134,1
    - Dst: toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:134,1
    - Dst: auto::info
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:135,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:135,1
    - Dst: string::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:135,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:140,1
    - Dst: string::c_str
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:140,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:141,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:142,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:142,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:142,1
    - Dst: toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:142,1
    - Dst: auto::info
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:143,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:143,1
    - Dst: string::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:143,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:143,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:143,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:143,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:148,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:148,1
    - Dst: RCode::to_s
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:148,1
    - Dst: toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:148,1
    - Dst: auto::info
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:149,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:149,1
    - Dst: string::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:149,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:149,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:149,1
    - Dst: RCode::to_s
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:149,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:153,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:158,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:158,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:159,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:159,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:159,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:159,1
    - Dst: toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:159,1
    - Dst: auto::info
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:160,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:160,1
    - Dst: string::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:160,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:160,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:160,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:160,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:160,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:160,1
    - Dst: string::c_str
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:166,1
    - Dst: string::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:166,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:169,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:169,1
    - Dst: QType
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:169,1
    - Dst: QType
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:169,1
    - Dst: QClass
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:169,1
    - Dst: toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:169,1
    - Dst: toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:169,1
    - Dst: auto::info
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:170,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:170,1
    - Dst: string::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:170,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:170,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:170,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:170,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:170,1
    - Dst: getFirstTXTAnswer
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:174,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:177,1
    CyclomaticComplexity: 25
    EdgeCount: 25
    ICount: 50
    argCount: 2
    argNames:
    - ' logger'
    - ' queriedName'
    argTypes:
    - Logr::Logger
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 178
      start: 90
    functionDepth: 1
    functionLinenumber: 90
    functionLinenumberEnd: 178
    functionName: getSecPollStatus
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc
    functionUses: 0
    functionsReached:
    - Socket::send
    - toString
    - ntohs
    - QClass
    - getResolvers
    - RCode::to_s
    - Socket::read
    - string::size
    - Logging::Loggable
    - Socket::setNonBlocking
    - std::vector::begin
    - QType
    - string
    - warnlog
    - DNSPacketWriter::getHeader
    - Socket::connect
    - auto::error
    - empty
    - auto::info
    - std::vector::end
    - string::c_str
    - std::runtime_error
    - dnsdist::getRandomDNSID
    - VERBOSESLOG
    - withValues
    - getFirstTXTAnswer
    - memcpy
    - Socket::getHandle
    - what
    - waitForData
    linkageType: ''
    returnType: std::string
    signature: std::string getSecPollStatus(const Logr::Logger& logger, const std::string&
      queriedName, int timeout = 2)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: std::count
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:186,1
    - Dst: std::string_view::begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:186,1
    - Dst: std::string_view::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:186,1
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:188,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:192,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:192,1
    - Dst: std::string::substr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:193,1
    - Dst: std::string::rbegin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:195,1
    - Dst: std::replace
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:199,1
    - Dst: std::string::begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:199,1
    - Dst: std::string::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:199,1
    - Dst: std::replace
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:200,1
    - Dst: std::string::begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:200,1
    - Dst: std::string::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:200,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:202,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:202,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:202,1
    - Dst: getSecPollStatus
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:205,1
    - Dst: splitField
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:206,1
    - Dst: unquotify
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:206,1
    - Dst: pdns::checked_stoi<uint8_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:208,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:212,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:212,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:212,1
    - Dst: auto::info
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:213,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:213,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:213,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:216,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:216,1
    - Dst: auto::error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:217,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:217,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:220,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:220,1
    - Dst: auto::error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:221,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:221,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:230,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:230,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:230,1
    - Dst: auto::error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:231,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:231,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:234,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:234,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:234,1
    - Dst: auto::error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:235,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:235,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:240,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:240,1
    - Dst: auto::info
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:241,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:244,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:244,1
    - Dst: auto::info
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:245,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 37
    argCount: 1
    argNames:
    - ' suffix'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 250
      start: 182
    functionDepth: 2
    functionLinenumber: 182
    functionLinenumberEnd: 250
    functionName: dnsdist::secpoll::doSecPoll
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc
    functionUses: 0
    functionsReached:
    - errlog
    - std::string_view::begin
    - std::count
    - std::string::rbegin
    - std::string::end
    - std::string
    - std::replace
    - SLOG
    - splitField
    - unquotify
    - getSecPollStatus
    - Logging::Loggable
    - std::string::substr
    - pdns::checked_stoi<uint8_t>
    - warnlog
    - auto::error
    - dnsdist::logging::getTopLogger
    - empty
    - auto::info
    - std::string::begin
    - what
    - infolog
    - std::string_view::end
    linkageType: ''
    returnType: void
    signature: void doSecPoll(const std::string& suffix)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: std::count
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:186,1
    - Dst: std::string_view::begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:186,1
    - Dst: std::string_view::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:186,1
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:188,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:192,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:192,1
    - Dst: std::string::substr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:193,1
    - Dst: std::string::rbegin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:195,1
    - Dst: std::replace
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:199,1
    - Dst: std::string::begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:199,1
    - Dst: std::string::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:199,1
    - Dst: std::replace
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:200,1
    - Dst: std::string::begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:200,1
    - Dst: std::string::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:200,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:202,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:202,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:202,1
    - Dst: getSecPollStatus
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:205,1
    - Dst: splitField
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:206,1
    - Dst: unquotify
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:206,1
    - Dst: pdns::checked_stoi<uint8_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:208,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:212,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:212,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:212,1
    - Dst: auto::info
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:213,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:213,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:213,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:216,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:216,1
    - Dst: auto::error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:217,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:217,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:220,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:220,1
    - Dst: auto::error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:221,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:221,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:230,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:230,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:230,1
    - Dst: auto::error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:231,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:231,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:234,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:234,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:234,1
    - Dst: auto::error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:235,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:235,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:240,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:240,1
    - Dst: auto::info
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:241,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:244,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:244,1
    - Dst: auto::info
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc:245,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 37
    argCount: 1
    argNames:
    - ' suffix'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 250
      start: 182
    functionDepth: 2
    functionLinenumber: 182
    functionLinenumberEnd: 250
    functionName: dnsdist::secpoll::doSecPoll
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc
    functionUses: 0
    functionsReached:
    - errlog
    - std::string_view::begin
    - std::count
    - std::string::rbegin
    - std::string::end
    - std::string
    - std::replace
    - SLOG
    - splitField
    - unquotify
    - getSecPollStatus
    - Logging::Loggable
    - std::string::substr
    - pdns::checked_stoi<uint8_t>
    - warnlog
    - auto::error
    - dnsdist::logging::getTopLogger
    - empty
    - auto::info
    - std::string::begin
    - what
    - infolog
    - std::string_view::end
    linkageType: ''
    returnType: void
    signature: void doSecPoll(const std::string& suffix)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:35,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:35,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - ' query'
    - connection
    - streamID
    argTypes:
    - IncomingHTTP2Connection::PendingQuery
    - std::shared_ptr<IncomingHTTP2Connection>
    - IncomingHTTP2Connection::StreamID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 35
    functionDepth: 0
    functionLinenumber: 35
    functionLinenumberEnd: 37
    functionName: IncomingDoHCrossProtocolContext::IncomingDoHCrossProtocolContext
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void IncomingDoHCrossProtocolContext(IncomingHTTP2Connection::PendingQuery&&
      query, std::shared_ptr<IncomingHTTP2Connection> connection, IncomingHTTP2Connection::StreamID
      streamID)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 39
    functionDepth: 0
    functionLinenumber: 39
    functionLinenumberEnd: 42
    functionName: IncomingDoHCrossProtocolContext::getHTTPPath
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::optional<std::string>
    signature: std::optional<std::string> getHTTPPath() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 44
    functionDepth: 0
    functionLinenumber: 44
    functionLinenumberEnd: 47
    functionName: IncomingDoHCrossProtocolContext::getHTTPScheme
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::optional<std::string>
    signature: std::optional<std::string> getHTTPScheme() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 49
    functionDepth: 0
    functionLinenumber: 49
    functionLinenumberEnd: 52
    functionName: IncomingDoHCrossProtocolContext::getHTTPHost
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::optional<std::string>
    signature: std::optional<std::string> getHTTPHost() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 54
    functionDepth: 0
    functionLinenumber: 54
    functionLinenumberEnd: 57
    functionName: IncomingDoHCrossProtocolContext::getHTTPQueryString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::optional<std::string>
    signature: std::optional<std::string> getHTTPQueryString() const override
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 59
    functionDepth: 0
    functionLinenumber: 59
    functionLinenumberEnd: 65
    functionName: IncomingDoHCrossProtocolContext::getHTTPHeaders
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::optional<HeadersMap>
    signature: std::optional<HeadersMap> getHTTPHeaders() const override
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:69,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 4
    argCount: 2
    argNames:
    - ' response'
    - ' state'
    argTypes:
    - PacketBuffer
    - InternalQueryState
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 67
    functionDepth: 0
    functionLinenumber: 67
    functionLinenumberEnd: 74
    functionName: IncomingDoHCrossProtocolContext::handleResponse
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc
    functionUses: 0
    functionsReached:
    - lock
    linkageType: ''
    returnType: void
    signature: void handleResponse(PacketBuffer&& response, InternalQueryState&& state)
      override
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:78,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 76
    functionDepth: 0
    functionLinenumber: 76
    functionLinenumberEnd: 83
    functionName: IncomingDoHCrossProtocolContext::handleTimeout
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc
    functionUses: 0
    functionsReached:
    - lock
    linkageType: ''
    returnType: void
    signature: void handleTimeout() override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 85
    functionDepth: 0
    functionLinenumber: 85
    functionLinenumberEnd: 87
    functionName: ~IncomingDoHCrossProtocolContext() override
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~IncomingDoHCrossProtocolContext() override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:100,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - ' query'
    - ' connection'
    - streamID
    argTypes:
    - IncomingHTTP2Connection::PendingQuery
    - std::shared_ptr<IncomingHTTP2Connection>
    - IncomingHTTP2Connection::StreamID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 99
    functionDepth: 0
    functionLinenumber: 99
    functionLinenumberEnd: 102
    functionName: IncomingDoHCrossProtocolContext::IncomingDoHCrossProtocolContext
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void IncomingDoHCrossProtocolContext(IncomingHTTP2Connection::PendingQuery&&
      query, const std::shared_ptr<IncomingHTTP2Connection>& connection, IncomingHTTP2Connection::StreamID
      streamID)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 103
    functionDepth: 0
    functionLinenumber: 103
    functionLinenumberEnd: 103
    functionName: IncomingDoHCrossProtocolContext::IncomingDoHCrossProtocolContext
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void IncomingDoHCrossProtocolContext(const IncomingDoHCrossProtocolContext&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 104
      start: 104
    functionDepth: 0
    functionLinenumber: 104
    functionLinenumberEnd: 104
    functionName: IncomingDoHCrossProtocolContext::IncomingDoHCrossProtocolContext
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void IncomingDoHCrossProtocolContext(IncomingDoHCrossProtocolContext&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 105
    functionDepth: 0
    functionLinenumber: 105
    functionLinenumberEnd: 105
    functionName: '& operator=(const IncomingDoHCrossProtocolContext&)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: IncomingDoHCrossProtocolContext
    signature: IncomingDoHCrossProtocolContext & operator=(const IncomingDoHCrossProtocolContext&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 106
    functionDepth: 0
    functionLinenumber: 106
    functionLinenumberEnd: 106
    functionName: '& operator=(IncomingDoHCrossProtocolContext&&)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: IncomingDoHCrossProtocolContext
    signature: IncomingDoHCrossProtocolContext & operator=(IncomingDoHCrossProtocolContext&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 108
    functionDepth: 0
    functionLinenumber: 108
    functionLinenumberEnd: 108
    functionName: ~IncomingDoHCrossProtocolContext() override
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~IncomingDoHCrossProtocolContext() override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 113
      start: 110
    functionDepth: 0
    functionLinenumber: 110
    functionLinenumberEnd: 113
    functionName: IncomingDoHCrossProtocolContext::getHTTPPath
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string getHTTPPath() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 118
      start: 115
    functionDepth: 0
    functionLinenumber: 115
    functionLinenumberEnd: 118
    functionName: '& getHTTPScheme() const override'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string & getHTTPScheme() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 120
    functionDepth: 0
    functionLinenumber: 120
    functionLinenumberEnd: 123
    functionName: '& getHTTPHost() const override'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string & getHTTPHost() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 125
    functionDepth: 0
    functionLinenumber: 125
    functionLinenumberEnd: 128
    functionName: IncomingDoHCrossProtocolContext::getHTTPQueryString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string getHTTPQueryString() const override
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 137
      start: 130
    functionDepth: 0
    functionLinenumber: 130
    functionLinenumberEnd: 137
    functionName: '& getHTTPHeaders() const override'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: HeadersMap
    signature: HeadersMap & getHTTPHeaders() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::dynamic_pointer_cast<TCPQuerySender>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:141,1
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:141,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 142
      start: 139
    functionDepth: 0
    functionLinenumber: 139
    functionLinenumberEnd: 142
    functionName: IncomingDoHCrossProtocolContext::getQuerySender
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc
    functionUses: 0
    functionsReached:
    - std::dynamic_pointer_cast<TCPQuerySender>
    - lock
    linkageType: ''
    returnType: std::shared_ptr<TCPQuerySender>
    signature: std::shared_ptr<TCPQuerySender> getQuerySender() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:147,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - statusCode
    - ' body'
    argTypes:
    - uint16_t
    - PacketBuffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 149
      start: 144
    functionDepth: 0
    functionLinenumber: 144
    functionLinenumberEnd: 149
    functionName: IncomingDoHCrossProtocolContext::setHTTPResponse
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void setHTTPResponse(uint16_t statusCode, PacketBuffer&& body, const
      std::string& contentType = "") override
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:154,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:160,1
    - Dst: gettimeofday
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:164,1
    - Dst: auto::handleResponse
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:165,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:165,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 3
    argNames:
    - ' response'
    - ' state'
    - ' downstream_'
    argTypes:
    - PacketBuffer
    - InternalQueryState
    - std::shared_ptr<DownstreamState>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 166
      start: 151
    functionDepth: 0
    functionLinenumber: 151
    functionLinenumberEnd: 166
    functionName: IncomingDoHCrossProtocolContext::handleUDPResponse
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc
    functionUses: 0
    functionsReached:
    - auto::handleResponse
    - std::move
    - gettimeofday
    - lock
    linkageType: ''
    returnType: void
    signature: void handleUDPResponse(PacketBuffer&& response, InternalQueryState&&
      state, const std::shared_ptr<DownstreamState>& downstream_) override
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:171,1
    - Dst: gettimeofday
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:177,1
    - Dst: auto::notifyIOError
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:180,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:180,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 181
      start: 168
    functionDepth: 0
    functionLinenumber: 168
    functionLinenumberEnd: 181
    functionName: IncomingDoHCrossProtocolContext::handleTimeout
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc
    functionUses: 0
    functionsReached:
    - std::move
    - auto::notifyIOError
    - gettimeofday
    - lock
    linkageType: ''
    returnType: void
    signature: void handleTimeout() override
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist_ffi_dnsquestion_get_id
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:190,1
    - Dst: handleCrossProtocolResponse
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:191,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:191,1
    - Dst: d_buffer::data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:198,1
    - Dst: d_packet::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:200,1
    - Dst: d_packet::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:200,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:201,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:201,1
    - Dst: d_ds::getNameWithAddr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:201,1
    - Dst: origRemote::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:201,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:202,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:202,1
    - Dst: d_ds::getName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:202,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:202,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:202,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:202,1
    - Dst: dnsdist::PacketMangling::editDNSHeaderFromRawPacket
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:204,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:204,1
    - Dst: getCrossProtocolQuery
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:212,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:212,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:212,1
    - Dst: std::make_unique<PacketBuffer>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:214,1
    - Dst: passCrossProtocolQueryToThread
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:216,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:216,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:219,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:219,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:220,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:220,1
    - Dst: d_ds::getName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:220,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:220,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:220,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:220,1
    - Dst: IncomingHTTP2Connection::notifyIOError
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:221,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:221,1
    - Dst: IncomingTCPConnectionState::handleResponse
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:226,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:226,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 24
    argCount: 2
    argNames:
    - ' now'
    - ' response'
    argTypes:
    - struct timeval
    - TCPResponse
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 227
      start: 188
    functionDepth: 2
    functionLinenumber: 188
    functionLinenumberEnd: 227
    functionName: IncomingHTTP2Connection::handleResponse
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc
    functionUses: 0
    functionsReached:
    - IncomingTCPConnectionState::handleResponse
    - ntohs
    - d_ds::getName
    - d_buffer::data
    - std::make_unique<PacketBuffer>
    - Logging::Loggable
    - getCrossProtocolQuery
    - at
    - getLogger
    - d_ds::getNameWithAddr
    - passCrossProtocolQueryToThread
    - handleCrossProtocolResponse
    - VERBOSESLOG
    - dnsdist::PacketMangling::editDNSHeaderFromRawPacket
    - IncomingHTTP2Connection::notifyIOError
    - d_packet::size
    - std::move
    - infolog
    - dnsdist_ffi_dnsquestion_get_id
    - origRemote::toStringWithPort
    linkageType: ''
    returnType: void
    signature: void IncomingHTTP2Connection::handleResponse(const struct timeval&
      now, TCPResponse&& response)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:231,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:232,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:236,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:236,1
    - Dst: static_cast<IncomingHTTP2Connection::StreamID>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:236,1
    - Dst: std::make_unique<IncomingDoHCrossProtocolContext>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:237,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:237,1
    - Dst: std::dynamic_pointer_cast<IncomingHTTP2Connection>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:237,1
    - Dst: shared_from_this
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:237,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - streamID
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 238
      start: 229
    functionDepth: 0
    functionLinenumber: 229
    functionLinenumberEnd: 238
    functionName: IncomingHTTP2Connection::getDOHUnit
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc
    functionUses: 0
    functionsReached:
    - pdns::max
    - std::move
    - std::runtime_error
    - std::dynamic_pointer_cast<IncomingHTTP2Connection>
    - std::make_unique<IncomingDoHCrossProtocolContext>
    - static_cast<IncomingHTTP2Connection::StreamID>
    - at
    - shared_from_this
    linkageType: ''
    returnType: std::unique_ptr<DOHUnitInterface>
    signature: std::unique_ptr<DOHUnitInterface> IncomingHTTP2Connection::getDOHUnit(uint32_t
      streamID)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::unique_ptr<IncomingDoHCrossProtocolContext>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:242,1
    - Dst: dynamic_cast<IncomingDoHCrossProtocolContext*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:242,1
    - Dst: release
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:242,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:244,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:244,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - ' unit'
    argTypes:
    - std::unique_ptr<DOHUnitInterface>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 246
      start: 240
    functionDepth: 0
    functionLinenumber: 240
    functionLinenumberEnd: 246
    functionName: IncomingHTTP2Connection::restoreDOHUnit
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc
    functionUses: 0
    functionsReached:
    - std::move
    - release
    - std::unique_ptr<IncomingDoHCrossProtocolContext>
    - dynamic_cast<IncomingDoHCrossProtocolContext*>
    - at
    linkageType: ''
    returnType: void
    signature: void IncomingHTTP2Connection::restoreDOHUnit(std::unique_ptr<DOHUnitInterface>&&
      unit)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:249,1
    - Dst: nghttp2_session_callbacks_new
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:252,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:253,1
    - Dst: nghttp2_session_callbacks_set_send_callback
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:258,1
    - Dst: std::unique_ptr::get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:258,1
    - Dst: nghttp2_session_callbacks_set_on_frame_recv_callback
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:259,1
    - Dst: std::unique_ptr::get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:259,1
    - Dst: nghttp2_session_callbacks_set_on_stream_close_callback
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:260,1
    - Dst: std::unique_ptr::get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:260,1
    - Dst: nghttp2_session_callbacks_set_on_begin_headers_callback
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:261,1
    - Dst: std::unique_ptr::get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:261,1
    - Dst: nghttp2_session_callbacks_set_on_header_callback
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:262,1
    - Dst: std::unique_ptr::get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:262,1
    - Dst: nghttp2_session_callbacks_set_on_data_chunk_recv_callback
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:263,1
    - Dst: std::unique_ptr::get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:263,1
    - Dst: nghttp2_session_callbacks_set_error_callback2
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:264,1
    - Dst: std::unique_ptr::get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:264,1
    - Dst: nghttp2_session_server_new
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:267,1
    - Dst: std::unique_ptr::get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:267,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:268,1
    - Dst: std::unique_ptr<nghttp2_session, decltype(&nghttp2_session_del)>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:271,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 3
    argNames:
    - ' connectionInfo'
    - ' threadData'
    - ' now'
    argTypes:
    - ConnectionInfo
    - TCPClientThreadData
    - struct timeval
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 273
      start: 248
    functionDepth: 0
    functionLinenumber: 248
    functionLinenumberEnd: 273
    functionName: IncomingHTTP2Connection::IncomingHTTP2Connection
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc
    functionUses: 0
    functionsReached:
    - std::move
    - nghttp2_session_callbacks_new
    - nghttp2_session_callbacks_set_send_callback
    - std::runtime_error
    - nghttp2_session_callbacks_set_on_header_callback
    - nghttp2_session_callbacks_set_error_callback2
    - nghttp2_session_callbacks_set_on_frame_recv_callback
    - nghttp2_session_callbacks_set_on_stream_close_callback
    - nghttp2_session_callbacks_set_on_begin_headers_callback
    - std::unique_ptr<nghttp2_session, decltype(&nghttp2_session_del)>
    - nghttp2_session_server_new
    - nghttp2_session_callbacks_set_on_data_chunk_recv_callback
    - std::unique_ptr::get
    linkageType: ''
    returnType: void
    signature: void IncomingHTTP2Connection::IncomingHTTP2Connection(ConnectionInfo&&
      connectionInfo, TCPClientThreadData& threadData, const struct timeval& now)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: time
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:280,1
    - Dst: newlocale
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:283,1
    - Dst: strftime_l
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:288,1
    - Dst: timebuf_t::data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:288,1
    - Dst: timebuf_t::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:288,1
    - Dst: std::string::data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:288,1
    - Dst: gmtime_r
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:288,1
    - Dst: timebuf_t::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:290,1
    - Dst: insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:291,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:291,1
    - Dst: timebuf_t::begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:291,1
    - Dst: timebuf_t::begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:291,1
    - Dst: freelocale
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:297,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 1
    argNames:
    - ' out'
    argTypes:
    - PacketBuffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 298
      start: 275
    functionDepth: 1
    functionLinenumber: 275
    functionLinenumberEnd: 298
    functionName: addDateHeader
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc
    functionUses: 0
    functionsReached:
    - timebuf_t::data
    - timebuf_t::size
    - strftime_l
    - gmtime_r
    - freelocale
    - time
    - end
    - std::string::data
    - newlocale
    - insert
    - timebuf_t::begin
    linkageType: ''
    returnType: void
    signature: void addDateHeader(PacketBuffer& out)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: getNextProtocol
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:303,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:304,1
    - Dst: std::array::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:304,1
    - Dst: memcmp
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:304,1
    - Dst: auto::data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:304,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:304,1
    - Dst: std::array::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:304,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:309,1
    - Dst: std::array::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:309,1
    - Dst: memcmp
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:309,1
    - Dst: auto::data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:309,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:309,1
    - Dst: std::array::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:309,1
    - Dst: insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:314,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:314,1
    - Dst: std::string::begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:314,1
    - Dst: std::string::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:314,1
    - Dst: addDateHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:316,1
    - Dst: insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:320,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:320,1
    - Dst: std::string::begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:320,1
    - Dst: std::string::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:320,1
    - Dst: IncomingHTTP2Connection::writeToSocket
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:321,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:323,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:323,1
    - Dst: remote::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:323,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:323,1
    - Dst: auto::begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:323,1
    - Dst: auto::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:323,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:324,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:324,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:324,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:324,1
    - Dst: auto::begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:324,1
    - Dst: auto::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:324,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 327
      start: 300
    functionDepth: 2
    functionLinenumber: 300
    functionLinenumberEnd: 327
    functionName: IncomingHTTP2Connection::checkALPN
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc
    functionUses: 0
    functionsReached:
    - std::string::end
    - auto::begin
    - insert
    - std::string
    - auto::size
    - memcmp
    - Logging::Loggable
    - getLogger
    - std::string::begin
    - remote::toStringWithPort
    - VERBOSESLOG
    - auto::data
    - std::array::data
    - IncomingHTTP2Connection::writeToSocket
    - end
    - infolog
    - getNextProtocol
    - addDateHeader
    - auto::end
    - std::array::size
    linkageType: ''
    returnType: bool
    signature: bool IncomingHTTP2Connection::checkALPN()
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: nghttp2_submit_settings
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:333,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:333,1
    - Dst: isNearTCPLimits
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:333,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:333,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:333,1
    - Dst: isNearTCPLimits
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:333,1
    - Dst: std::array::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:333,1
    - Dst: std::array::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:333,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:335,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:335,1
    - Dst: nghttp2_strerror
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:335,1
    - Dst: nghttp2_session_send
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:340,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:340,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:342,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:342,1
    - Dst: nghttp2_strerror
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:342,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 345
      start: 329
    functionDepth: 0
    functionLinenumber: 329
    functionLinenumberEnd: 345
    functionName: IncomingHTTP2Connection::handleConnectionReady
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc
    functionUses: 0
    functionsReached:
    - std::runtime_error
    - nghttp2_strerror
    - get
    - nghttp2_session_send
    - isNearTCPLimits
    - std::string
    - nghttp2_submit_settings
    - std::array::data
    - std::array::size
    linkageType: ''
    returnType: void
    signature: void IncomingHTTP2Connection::handleConnectionReady()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 350
      start: 347
    functionDepth: 0
    functionLinenumber: 347
    functionLinenumberEnd: 350
    functionName: IncomingHTTP2Connection::hasPendingWrite
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool IncomingHTTP2Connection::hasPendingWrite() const
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: tryHandshake
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:354,1
    - Dst: handleHandshakeDone
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:356,1
    - Dst: isTLS
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:357,1
    - Dst: IncomingHTTP2Connection::checkALPN
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:358,1
    - Dst: IncomingHTTP2Connection::stopIO
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:360,1
    - Dst: isProxyPayloadOutsideTLS
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:365,1
    - Dst: expectProxyProtocolFrom
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:365,1
    - Dst: resize
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:367,1
    - Dst: IncomingHTTP2Connection::handleConnectionReady
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:372,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 20
    argCount: 1
    argNames:
    - ' now'
    argTypes:
    - struct timeval
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 376
      start: 352
    functionDepth: 3
    functionLinenumber: 352
    functionLinenumberEnd: 376
    functionName: IncomingHTTP2Connection::handleHandshake
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc
    functionUses: 0
    functionsReached:
    - expectProxyProtocolFrom
    - IncomingHTTP2Connection::stopIO
    - resize
    - isProxyPayloadOutsideTLS
    - IncomingHTTP2Connection::handleConnectionReady
    - IncomingHTTP2Connection::checkALPN
    - isTLS
    - tryHandshake
    - handleHandshakeDone
    linkageType: ''
    returnType: IOState
    signature: IOState IncomingHTTP2Connection::handleHandshake(const struct timeval&
      now)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' inReadFunction'
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 385
      start: 381
    functionDepth: 0
    functionLinenumber: 381
    functionLinenumberEnd: 385
    functionName: ReadFunctionGuard::ReadFunctionGuard
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ReadFunctionGuard(bool& inReadFunction)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 386
      start: 386
    functionDepth: 0
    functionLinenumber: 386
    functionLinenumberEnd: 386
    functionName: ReadFunctionGuard::ReadFunctionGuard
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ReadFunctionGuard(ReadFunctionGuard&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 387
      start: 387
    functionDepth: 0
    functionLinenumber: 387
    functionLinenumberEnd: 387
    functionName: ReadFunctionGuard::ReadFunctionGuard
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ReadFunctionGuard(const ReadFunctionGuard&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 388
      start: 388
    functionDepth: 0
    functionLinenumber: 388
    functionLinenumberEnd: 388
    functionName: '& operator=(ReadFunctionGuard&&)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: ReadFunctionGuard
    signature: ReadFunctionGuard & operator=(ReadFunctionGuard&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 389
      start: 389
    functionDepth: 0
    functionLinenumber: 389
    functionLinenumberEnd: 389
    functionName: '& operator=(const ReadFunctionGuard&)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: ReadFunctionGuard
    signature: ReadFunctionGuard & operator=(const ReadFunctionGuard&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 393
      start: 390
    functionDepth: 0
    functionLinenumber: 390
    functionLinenumberEnd: 393
    functionName: ~ReadFunctionGuard()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~ReadFunctionGuard()
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: gettimeofday
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:403,1
    - Dst: maxConnectionDurationReached
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:406,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:406,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:407,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:407,1
    - Dst: remote::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:407,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:408,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:408,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:408,1
    - Dst: IncomingHTTP2Connection::stopIO
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:409,1
    - Dst: isProxyPayloadOutsideTLS
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:418,1
    - Dst: expectProxyProtocolFrom
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:418,1
    - Dst: resize
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:420,1
    - Dst: IncomingHTTP2Connection::handleHandshake
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:429,1
    - Dst: handleProxyProtocolPayload
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:436,1
    - Dst: isProxyPayloadOutsideTLS
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:438,1
    - Dst: IncomingHTTP2Connection::handleHandshake
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:440,1
    - Dst: IncomingHTTP2Connection::handleConnectionReady
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:447,1
    - Dst: IncomingHTTP2Connection::stopIO
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:452,1
    - Dst: IncomingHTTP2Connection::active
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:457,1
    - Dst: IncomingHTTP2Connection::readHTTPData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:459,1
    - Dst: IncomingHTTP2Connection::active
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:460,1
    - Dst: IncomingHTTP2Connection::active
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:463,1
    - Dst: IncomingHTTP2Connection::stopIO
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:464,1
    - Dst: IncomingHTTP2Connection::hasPendingWrite
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:476,1
    - Dst: IncomingHTTP2Connection::updateIO
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:477,1
    - Dst: IncomingHTTP2Connection::updateIO
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:480,1
    - Dst: nghttp2_session_want_read
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:483,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:483,1
    - Dst: IncomingHTTP2Connection::updateIO
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:484,1
    - Dst: IncomingHTTP2Connection::getConcurrentStreamsCount
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:487,1
    - Dst: IncomingHTTP2Connection::stopIO
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:489,1
    - Dst: IncomingHTTP2Connection::updateIO
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:492,1
    - Dst: IncomingHTTP2Connection::getConcurrentStreamsCount
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:497,1
    - Dst: IncomingHTTP2Connection::stopIO
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:499,1
    - Dst: IncomingHTTP2Connection::updateIO
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:502,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:507,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:507,1
    - Dst: remote::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:507,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:507,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:508,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:508,1
    - Dst: IncomingHTTP2Connection::stopIO
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:510,1
    CyclomaticComplexity: 32
    EdgeCount: 32
    ICount: 85
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 512
      start: 399
    functionDepth: 4
    functionLinenumber: 399
    functionLinenumberEnd: 512
    functionName: IncomingHTTP2Connection::handleIO
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc
    functionUses: 0
    functionsReached:
    - maxConnectionDurationReached
    - isProxyPayloadOutsideTLS
    - gettimeofday
    - nghttp2_session_want_read
    - handleProxyProtocolPayload
    - expectProxyProtocolFrom
    - resize
    - Logging::Loggable
    - IncomingHTTP2Connection::handleHandshake
    - IncomingHTTP2Connection::hasPendingWrite
    - IncomingHTTP2Connection::handleConnectionReady
    - getLogger
    - remote::toStringWithPort
    - dnsdist::configuration::getCurrentRuntimeConfiguration
    - IncomingHTTP2Connection::stopIO
    - VERBOSESLOG
    - get
    - IncomingHTTP2Connection::active
    - what
    - IncomingHTTP2Connection::readHTTPData
    - infolog
    - IncomingHTTP2Connection::updateIO
    - IncomingHTTP2Connection::getConcurrentStreamsCount
    linkageType: ''
    returnType: void
    signature: void IncomingHTTP2Connection::handleIO()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: tryWrite
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:518,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:518,1
    - Dst: clear
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:522,1
    - Dst: IncomingHTTP2Connection::active
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:524,1
    - Dst: IncomingHTTP2Connection::updateIO
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:525,1
    - Dst: IncomingHTTP2Connection::stopIO
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:528,1
    - Dst: IncomingHTTP2Connection::updateIO
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:532,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:537,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:537,1
    - Dst: remote::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:537,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:537,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:538,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:538,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:538,1
    - Dst: IncomingHTTP2Connection::handleIOError
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:539,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 1
    argNames:
    - socketReady
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 541
      start: 514
    functionDepth: 1
    functionLinenumber: 514
    functionLinenumberEnd: 541
    functionName: IncomingHTTP2Connection::writeToSocket
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc
    functionUses: 1
    functionsReached:
    - remote::toStringWithPort
    - IncomingHTTP2Connection::stopIO
    - Logging::Loggable
    - what
    - VERBOSESLOG
    - infolog
    - IncomingHTTP2Connection::updateIO
    - size
    - IncomingHTTP2Connection::active
    - clear
    - IncomingHTTP2Connection::handleIOError
    - tryWrite
    - getLogger
    linkageType: ''
    returnType: void
    signature: void IncomingHTTP2Connection::writeToSocket(bool socketReady)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<IncomingHTTP2Connection*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:547,1
    - Dst: static_cast<ssize_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:549,1
    - Dst: auto*::d_out::insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:552,1
    - Dst: auto*::d_out::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:552,1
    - Dst: auto*::writeToSocket
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:555,1
    - Dst: static_cast<ssize_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:558,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 5
    argNames:
    - session
    - data
    - length
    - flags
    - user_data
    argTypes:
    - nghttp2_session*
    - uint8_t*
    - size_t
    - int
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 559
      start: 543
    functionDepth: 1
    functionLinenumber: 543
    functionLinenumberEnd: 559
    functionName: IncomingHTTP2Connection::send_callback
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc
    functionUses: 0
    functionsReached:
    - static_cast<IncomingHTTP2Connection*>
    - static_cast<ssize_t>
    - auto*::d_out::end
    - auto*::writeToSocket
    - auto*::d_out::insert
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t IncomingHTTP2Connection::send_callback(nghttp2_session* session,
      const uint8_t* data, size_t length, int flags, void* user_data)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:606,1
    - Dst: const_cast<uint8_t*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:606,1
    - Dst: reinterpret_cast<const uint8_t*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:606,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:606,1
    - Dst: const_cast<uint8_t*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:606,1
    - Dst: reinterpret_cast<const uint8_t*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:606,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:606,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:606,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:606,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 5
    argNames:
    - ' headers'
    - ' name'
    - nameIsStatic
    - ' value'
    - valueIsStatic
    argTypes:
    - std::vector<nghttp2_nv>
    - std::string_view
    - bool
    - std::string_view
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 607
      start: 594
    functionDepth: 0
    functionLinenumber: 594
    functionLinenumberEnd: 607
    functionName: addHeader
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc
    functionUses: 0
    functionsReached:
    - reinterpret_cast<const uint8_t*>
    - push_back
    - size
    - const_cast<uint8_t*>
    - data
    linkageType: ''
    returnType: void
    signature: void addHeader(std::vector<nghttp2_nv>& headers, const std::string_view&
      name, bool nameIsStatic, const std::string_view& value, bool valueIsStatic)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:611,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:611,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:612,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:612,1
    - Dst: addHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:614,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' headers'
    - nameKey
    - valueKey
    argTypes:
    - std::vector<nghttp2_nv>
    - NGHTTP2Headers::HeaderConstantIndexes
    - NGHTTP2Headers::HeaderConstantIndexes
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 615
      start: 609
    functionDepth: 1
    functionLinenumber: 609
    functionLinenumberEnd: 615
    functionName: NGHTTP2Headers::addStaticHeader
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc
    functionUses: 1
    functionsReached:
    - addHeader
    - static_cast<size_t>
    - at
    linkageType: ''
    returnType: void
    signature: void NGHTTP2Headers::addStaticHeader(std::vector<nghttp2_nv>& headers,
      NGHTTP2Headers::HeaderConstantIndexes nameKey, NGHTTP2Headers::HeaderConstantIndexes
      valueKey)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: addHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:619,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' headers'
    - ' name'
    - ' value'
    argTypes:
    - std::vector<nghttp2_nv>
    - std::string
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 620
      start: 617
    functionDepth: 1
    functionLinenumber: 617
    functionLinenumberEnd: 620
    functionName: NGHTTP2Headers::addCustomDynamicHeader
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc
    functionUses: 0
    functionsReached:
    - addHeader
    linkageType: ''
    returnType: void
    signature: void NGHTTP2Headers::addCustomDynamicHeader(std::vector<nghttp2_nv>&
      headers, const std::string& name, const std::string_view& value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:624,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:624,1
    - Dst: addHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:625,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' headers'
    - nameKey
    - ' value'
    argTypes:
    - std::vector<nghttp2_nv>
    - NGHTTP2Headers::HeaderConstantIndexes
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 626
      start: 622
    functionDepth: 1
    functionLinenumber: 622
    functionLinenumberEnd: 626
    functionName: NGHTTP2Headers::addDynamicHeader
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc
    functionUses: 1
    functionsReached:
    - addHeader
    - static_cast<size_t>
    - at
    linkageType: ''
    returnType: void
    signature: void NGHTTP2Headers::addDynamicHeader(std::vector<nghttp2_nv>& headers,
      NGHTTP2Headers::HeaderConstantIndexes nameKey, const std::string_view& value)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: find
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:630,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:631,1
    - Dst: erase
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:633,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - streamID
    argTypes:
    - StreamID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 636
      start: 628
    functionDepth: 0
    functionLinenumber: 628
    functionLinenumberEnd: 636
    functionName: IncomingHTTP2Connection::getStreamContext
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc
    functionUses: 0
    functionsReached:
    - erase
    - end
    - find
    linkageType: ''
    returnType: std::unordered_map<IncomingHTTP2Connection::StreamID, IncomingHTTP2Connection::PendingQuery>::iterator
    signature: std::unordered_map<IncomingHTTP2Connection::StreamID, IncomingHTTP2Connection::PendingQuery>::iterator
      IncomingHTTP2Connection::getStreamContext(StreamID streamID)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:642,1
    - Dst: IncomingHTTP2Connection::getStreamContext
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:644,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:645,1
    - Dst: IncomingHTTP2Connection::hasPendingWrite
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:647,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:656,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:658,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:661,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:664,1
    - Dst: IncomingHTTP2Connection::sendResponse
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:665,1
    - Dst: handleResponseSent
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:666,1
    - Dst: IncomingHTTP2Connection::hasPendingWrite
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:668,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 2
    argNames:
    - ' now'
    - ' response'
    argTypes:
    - struct timeval
    - TCPResponse
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 669
      start: 638
    functionDepth: 1
    functionLinenumber: 638
    functionLinenumberEnd: 669
    functionName: IncomingHTTP2Connection::sendResponse
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc
    functionUses: 1
    functionsReached:
    - std::move
    - std::runtime_error
    - IncomingHTTP2Connection::getStreamContext
    - end
    - IncomingHTTP2Connection::hasPendingWrite
    - size
    - handleResponseSent
    - IncomingHTTP2Connection::sendResponse
    linkageType: ''
    returnType: IOState
    signature: IOState IncomingHTTP2Connection::sendResponse(const struct timeval&
      now, TCPResponse&& response)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist_ffi_dnsquestion_get_id
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:673,1
    - Dst: d_buffer::clear
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:675,1
    - Dst: handleCrossProtocolResponse
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:676,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:676,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:681,1
    - Dst: IncomingHTTP2Connection::getStreamContext
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:684,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:685,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:690,1
    - Dst: IncomingHTTP2Connection::sendResponse
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:691,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 2
    argNames:
    - ' now'
    - ' response'
    argTypes:
    - struct timeval
    - TCPResponse
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 692
      start: 671
    functionDepth: 2
    functionLinenumber: 671
    functionLinenumberEnd: 692
    functionName: IncomingHTTP2Connection::notifyIOError
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc
    functionUses: 1
    functionsReached:
    - d_buffer::clear
    - std::move
    - std::runtime_error
    - handleCrossProtocolResponse
    - IncomingHTTP2Connection::getStreamContext
    - end
    - dnsdist_ffi_dnsquestion_get_id
    - IncomingHTTP2Connection::sendResponse
    linkageType: ''
    returnType: void
    signature: void IncomingHTTP2Connection::notifyIOError(const struct timeval& now,
      TCPResponse&& response)
  - BBCount: 23
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<IncomingHTTP2Connection*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:703,1
    - Dst: auto*::d_currentStreams::at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:704,1
    - Dst: d_buffer::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:706,1
    - Dst: d_buffer::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:707,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:709,1
    - Dst: d_buffer::at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:709,1
    - Dst: d_buffer::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:713,1
    - Dst: d_buffer::clear
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:715,1
    - Dst: static_cast<ssize_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:718,1
    - Dst: std::vector::reserve
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:731,1
    - Dst: NGHTTP2Headers::addStaticHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:734,1
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:739,1
    - Dst: NGHTTP2Headers::addStaticHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:740,1
    - Dst: NGHTTP2Headers::addDynamicHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:743,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:747,1
    - Dst: getDNSPacketMinTTL
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:749,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:749,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:749,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:749,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:750,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:751,1
    - Dst: NGHTTP2Headers::addDynamicHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:752,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:757,1
    - Dst: NGHTTP2Headers::addDynamicHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:758,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:762,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:762,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:762,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:762,1
    - Dst: NGHTTP2Headers::addDynamicHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:763,1
    - Dst: NGHTTP2Headers::addDynamicHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:764,1
    - Dst: reserve
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:767,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:767,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:767,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:767,1
    - Dst: insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:768,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:768,1
    - Dst: std::string::begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:768,1
    - Dst: std::string::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:768,1
    - Dst: insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:769,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:769,1
    - Dst: std::string::begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:769,1
    - Dst: std::string::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:769,1
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:792,1
    - Dst: NGHTTP2Headers::addDynamicHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:793,1
    - Dst: insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:803,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:803,1
    - Dst: std::string::begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:803,1
    - Dst: std::string::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:803,1
    - Dst: insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:806,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:806,1
    - Dst: std::string::begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:806,1
    - Dst: std::string::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:806,1
    - Dst: insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:809,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:809,1
    - Dst: std::string::begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:809,1
    - Dst: std::string::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:809,1
    - Dst: insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:814,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:814,1
    - Dst: std::string::begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:814,1
    - Dst: std::string::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:814,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:821,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:821,1
    - Dst: NGHTTP2Headers::addDynamicHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:822,1
    - Dst: NGHTTP2Headers::addCustomDynamicHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:825,1
    - Dst: nghttp2_submit_response
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:829,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:829,1
    - Dst: std::vector::data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:829,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:829,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:831,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:831,1
    - Dst: nghttp2_strerror
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:831,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:832,1
    - Dst: nghttp2_strerror
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:832,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:832,1
    - Dst: erase
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:833,1
    - Dst: nghttp2_session_send
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:838,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:838,1
    - Dst: erase
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:840,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:841,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:841,1
    - Dst: nghttp2_strerror
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:841,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:842,1
    - Dst: nghttp2_strerror
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:842,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:842,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 103
    argCount: 6
    argNames:
    - streamID
    - ' context'
    - responseCode
    - ' customResponseHeaders'
    - ' contentType'
    - addContentType
    argTypes:
    - IncomingHTTP2Connection::StreamID
    - IncomingHTTP2Connection::PendingQuery
    - uint16_t
    - HeadersMap
    - std::string
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 848
      start: 694
    functionDepth: 2
    functionLinenumber: 694
    functionLinenumberEnd: 848
    functionName: IncomingHTTP2Connection::sendResponse
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc
    functionUses: 2
    functionsReached:
    - std::to_string
    - std::string::end
    - getDNSPacketMinTTL
    - insert
    - nghttp2_session_send
    - std::string
    - std::string::size
    - std::vector::data
    - nghttp2_submit_response
    - erase
    - std::vector::size
    - Logging::Loggable
    - size
    - d_buffer::at
    - begin
    - NGHTTP2Headers::addDynamicHeader
    - empty
    - NGHTTP2Headers::addCustomDynamicHeader
    - getLogger
    - std::string::begin
    - NGHTTP2Headers::addStaticHeader
    - pdns::max
    - d_buffer::size
    - nghttp2_strerror
    - VERBOSESLOG
    - get
    - std::vector::reserve
    - reserve
    - reinterpret_cast<const char*>
    - memcpy
    - d_buffer::clear
    - auto*::d_currentStreams::at
    - static_cast<IncomingHTTP2Connection*>
    - static_cast<ssize_t>
    - end
    - infolog
    - data
    linkageType: ''
    returnType: bool
    signature: bool IncomingHTTP2Connection::sendResponse(IncomingHTTP2Connection::StreamID
      streamID, IncomingHTTP2Connection::PendingQuery& context, uint16_t responseCode,
      const HeadersMap& customResponseHeaders, const std::string& contentType, bool
      addContentType)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: find
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:857,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:858,1
    - Dst: std::string_view::rfind
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:864,1
    - Dst: std::string_view::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:867,1
    - Dst: std::string_view::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:870,1
    - Dst: std::string_view::substr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:871,1
    - Dst: std::optional::emplace
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:874,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:874,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:877,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:877,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:877,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:877,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:877,1
    - Dst: std::shared_ptr<const Logr::Logger>::error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:878,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:878,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:878,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:881,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:881,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:881,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:881,1
    - Dst: std::shared_ptr<const Logr::Logger>::error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:882,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:882,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 23
    argCount: 3
    argNames:
    - logger
    - ' headers'
    - ' remote'
    argTypes:
    - std::shared_ptr<const Logr::Logger>
    - std::unique_ptr<HeadersMap>
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 885
      start: 850
    functionDepth: 0
    functionLinenumber: 850
    functionLinenumberEnd: 885
    functionName: processForwardedForHeader
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc
    functionUses: 0
    functionsReached:
    - std::string_view::substr
    - std::shared_ptr<const Logr::Logger>::error
    - Logging::Loggable
    - what
    - end
    - VERBOSESLOG
    - infolog
    - std::optional::emplace
    - std::string_view::size
    - std::string
    - toStringWithPort
    - find
    - std::string_view::rfind
    linkageType: ''
    returnType: std::optional<ComboAddress>
    signature: std::optional<ComboAddress> processForwardedForHeader(std::shared_ptr<const
      Logr::Logger> logger, const std::unique_ptr<HeadersMap>& headers, const ComboAddress&
      remote)
  - BBCount: 27
    BranchProfiles: []
    Callsites:
    - Dst: PacketBuffer
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:889,1
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:890,1
    - Dst: d_buffer::clear
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:891,1
    - Dst: d_buffer::insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:892,1
    - Dst: d_buffer::begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:892,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:892,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:892,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:895,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:897,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:897,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:898,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:898,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:898,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:898,1
    - Dst: IncomingHTTP2Connection::sendResponse
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:899,1
    - Dst: handleImmediateResponse
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:903,1
    - Dst: processForwardedForHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:910,1
    - Dst: dnsdist::logging::doVerboseLogging
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:910,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:910,1
    - Dst: std::shared_ptr<const Logr::Logger>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:910,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:912,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:919,1
    - Dst: match
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:919,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:921,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:921,1
    - Dst: remote::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:921,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:921,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:922,1
    - Dst: handleImmediateResponse
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:923,1
    - Dst: d_headers::reset
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:928,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:933,1
    - Dst: match
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:933,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:935,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:935,1
    - Dst: remote::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:935,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:935,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:936,1
    - Dst: handleImmediateResponse
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:937,1
    - Dst: cs::dohFrontend::d_urls::count
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:943,1
    - Dst: handleImmediateResponse
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:944,1
    - Dst: boost::starts_with
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:951,1
    - Dst: handleImmediateResponse
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:957,1
    - Dst: matches
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:967,1
    - Dst: getHeaders
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:968,1
    - Dst: getContent
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:969,1
    - Dst: getStatusCode
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:970,1
    - Dst: d_buffer::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:970,1
    - Dst: d_buffer::pop_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:972,1
    - Dst: IncomingHTTP2Connection::sendResponse
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:975,1
    - Dst: getStatusCode
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:975,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:975,1
    - Dst: d_buffer::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:981,1
    - Dst: d_queryString::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:981,1
    - Dst: dnsdist::doh::getPayloadFromPath
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:982,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:984,1
    - Dst: handleImmediateResponse
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:988,1
    - Dst: gettimeofday
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1002,1
    - Dst: handleQuery
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1003,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1003,1
    - Dst: handleImmediateResponse
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1007,1
    - Dst: handleImmediateResponse
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1010,1
    - Dst: handleImmediateResponse
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1013,1
    - Dst: handleImmediateResponse
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1016,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1025,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1025,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1025,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1026,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1026,1
    - Dst: handleImmediateResponse
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1027,1
    CyclomaticComplexity: 34
    EdgeCount: 34
    ICount: 106
    argCount: 2
    argNames:
    - ' query'
    - streamID
    argTypes:
    - IncomingHTTP2Connection::PendingQuery
    - IncomingHTTP2Connection::StreamID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1030
      start: 887
    functionDepth: 2
    functionLinenumber: 887
    functionLinenumberEnd: 1030
    functionName: IncomingHTTP2Connection::handleIncomingQuery
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc
    functionUses: 0
    functionsReached:
    - d_queryString::empty
    - dnsdist::doh::getPayloadFromPath
    - gettimeofday
    - std::string
    - std::shared_ptr<const Logr::Logger>
    - matches
    - d_buffer::begin
    - Logging::Loggable
    - boost::starts_with
    - match
    - IncomingHTTP2Connection::sendResponse
    - cs::dohFrontend::d_urls::count
    - begin
    - empty
    - getLogger
    - remote::toStringWithPort
    - dnsdist::configuration::getCurrentRuntimeConfiguration
    - d_buffer::insert
    - d_buffer::empty
    - VERBOSESLOG
    - handleImmediateResponse
    - dnsdist::logging::doVerboseLogging
    - getHeaders
    - getStatusCode
    - toStringWithPort
    - d_buffer::pop_back
    - handleQuery
    - d_buffer::clear
    - std::move
    - what
    - end
    - infolog
    - getContent
    - PacketBuffer
    - d_headers::reset
    - processForwardedForHeader
    linkageType: ''
    returnType: void
    signature: void IncomingHTTP2Connection::handleIncomingQuery(IncomingHTTP2Connection::PendingQuery&&
      query, IncomingHTTP2Connection::StreamID streamID)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<IncomingHTTP2Connection*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1035,1
    - Dst: auto*::getStreamContext
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1039,1
    - Dst: auto*::d_currentStreams::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1040,1
    - Dst: auto*::handleIncomingQuery
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1041,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1041,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1044,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1044,1
    - Dst: auto*::getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1045,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1045,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 3
    argNames:
    - session
    - frame
    - user_data
    argTypes:
    - nghttp2_session*
    - nghttp2_frame*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1054
      start: 1032
    functionDepth: 0
    functionLinenumber: 1032
    functionLinenumberEnd: 1054
    functionName: IncomingHTTP2Connection::on_frame_recv_callback
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc
    functionUses: 0
    functionsReached:
    - std::move
    - static_cast<IncomingHTTP2Connection*>
    - auto*::getLogger
    - Logging::Loggable
    - VERBOSESLOG
    - auto*::d_currentStreams::end
    - infolog
    - auto*::getStreamContext
    - auto*::handleIncomingQuery
    linkageType: ''
    returnType: int
    signature: int IncomingHTTP2Connection::on_frame_recv_callback(nghttp2_session*
      session, const nghttp2_frame* frame, void* user_data)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<IncomingHTTP2Connection*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1060,1
    - Dst: auto*::d_currentStreams::find
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1062,1
    - Dst: auto*::d_currentStreams::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1063,1
    - Dst: auto*::d_killedStreams::emplace
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1068,1
    - Dst: auto*::d_currentStreams::erase
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1071,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 4
    argNames:
    - session
    - stream_id
    - error_code
    - user_data
    argTypes:
    - nghttp2_session*
    - IncomingHTTP2Connection::StreamID
    - uint32_t
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1073
      start: 1056
    functionDepth: 0
    functionLinenumber: 1056
    functionLinenumberEnd: 1073
    functionName: IncomingHTTP2Connection::on_stream_close_callback
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc
    functionUses: 0
    functionsReached:
    - auto*::d_currentStreams::find
    - static_cast<IncomingHTTP2Connection*>
    - auto*::d_currentStreams::end
    - auto*::d_currentStreams::erase
    - auto*::d_killedStreams::emplace
    linkageType: ''
    returnType: int
    signature: int IncomingHTTP2Connection::on_stream_close_callback(nghttp2_session*
      session, IncomingHTTP2Connection::StreamID stream_id, uint32_t error_code, void*
      user_data)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<IncomingHTTP2Connection*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1082,1
    - Dst: nghttp2_session_terminate_session
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1086,1
    - Dst: d_session::get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1086,1
    - Dst: auto*::getConcurrentStreamsCount
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1090,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1091,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1091,1
    - Dst: auto*::d_ci::remote::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1091,1
    - Dst: auto*::getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1092,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1092,1
    - Dst: auto*::getConcurrentStreamsCount
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1092,1
    - Dst: close_connection
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1093,1
    - Dst: auto*::d_currentStreams::emplace
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1096,1
    - Dst: PendingQuery
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1096,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1099,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1099,1
    - Dst: auto*::d_ci::remote::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1099,1
    - Dst: auto*::getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1100,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1100,1
    - Dst: close_connection
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1101,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 3
    argNames:
    - session
    - frame
    - user_data
    argTypes:
    - nghttp2_session*
    - nghttp2_frame*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1105
      start: 1075
    functionDepth: 0
    functionLinenumber: 1075
    functionLinenumberEnd: 1105
    functionName: IncomingHTTP2Connection::on_begin_headers_callback
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc
    functionUses: 0
    functionsReached:
    - PendingQuery
    - close_connection
    - static_cast<IncomingHTTP2Connection*>
    - auto*::getLogger
    - auto*::d_ci::remote::toStringWithPort
    - Logging::Loggable
    - auto*::d_currentStreams::emplace
    - d_session::get
    - VERBOSESLOG
    - infolog
    - auto*::getConcurrentStreamsCount
    - nghttp2_session_terminate_session
    linkageType: ''
    returnType: int
    signature: int IncomingHTTP2Connection::on_begin_headers_callback(nghttp2_session*
      session, const nghttp2_frame* frame, void* user_data)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: find
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1109,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1111,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ' path'
    argTypes:
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1115
      start: 1107
    functionDepth: 0
    functionLinenumber: 1107
    functionLinenumberEnd: 1115
    functionName: getLengthOfPathWithoutParameters
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc
    functionUses: 0
    functionsReached:
    - size
    - find
    linkageType: ''
    returnType: std::string::size_type
    signature: std::string::size_type getLengthOfPathWithoutParameters(const std::string_view&
      path)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<IncomingHTTP2Connection*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1121,1
    - Dst: nghttp2_check_header_name
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1124,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1125,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1125,1
    - Dst: auto*::getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1126,1
    - Dst: nghttp2_check_header_value_rfc9113
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1131,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1132,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1132,1
    - Dst: auto*::getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1133,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1139,1
    - Dst: memcmp
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1139,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1139,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1139,1
    - Dst: auto*::getStreamContext
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1142,1
    - Dst: auto*::d_currentStreams::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1143,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1144,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1144,1
    - Dst: auto*::getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1145,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1145,1
    - Dst: std::string_view
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1150,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1150,1
    - Dst: headerMatches
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1151,1
    - Dst: nghttp2_check_path
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1153,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1154,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1154,1
    - Dst: auto*::getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1155,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1155,1
    - Dst: getLengthOfPathWithoutParameters
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1160,1
    - Dst: auto::substr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1161,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1162,1
    - Dst: auto::substr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1163,1
    - Dst: headerMatches
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1166,1
    - Dst: headerMatches
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1169,1
    - Dst: headerMatches
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1172,1
    - Dst: nghttp2_check_method
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1174,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1175,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1175,1
    - Dst: auto*::getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1176,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1189,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1189,1
    - Dst: auto*::getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1190,1
    - Dst: headerMatches
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1195,1
    - Dst: std::make_unique<HeadersMap>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1197,1
    - Dst: d_headers::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1199,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1201,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1201,1
    - Dst: auto*::getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1202,1
    - Dst: d_headers::insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1206,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1206,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1206,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1206,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 62
    argCount: 8
    argNames:
    - session
    - frame
    - name
    - nameLen
    - value
    - valuelen
    - flags
    - user_data
    argTypes:
    - nghttp2_session*
    - nghttp2_frame*
    - uint8_t*
    - size_t
    - uint8_t*
    - size_t
    - uint8_t
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1210
      start: 1117
    functionDepth: 1
    functionLinenumber: 1117
    functionLinenumberEnd: 1210
    functionName: IncomingHTTP2Connection::on_header_callback
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc
    functionUses: 0
    functionsReached:
    - nghttp2_check_method
    - nghttp2_check_header_name
    - auto*::getStreamContext
    - std::string
    - auto::size
    - memcmp
    - Logging::Loggable
    - size
    - d_headers::insert
    - nghttp2_check_path
    - nghttp2_check_header_value_rfc9113
    - getLengthOfPathWithoutParameters
    - std::string_view
    - VERBOSESLOG
    - std::make_unique<HeadersMap>
    - d_headers::size
    - reinterpret_cast<const char*>
    - auto::substr
    - auto*::getLogger
    - static_cast<IncomingHTTP2Connection*>
    - headerMatches
    - infolog
    - auto*::d_currentStreams::end
    - data
    linkageType: ''
    returnType: int
    signature: int IncomingHTTP2Connection::on_header_callback(nghttp2_session* session,
      const nghttp2_frame* frame, const uint8_t* name, size_t nameLen, const uint8_t*
      value, size_t valuelen, uint8_t flags, void* user_data)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<IncomingHTTP2Connection*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1216,1
    - Dst: auto*::getStreamContext
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1217,1
    - Dst: auto*::d_currentStreams::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1218,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1219,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1219,1
    - Dst: auto*::getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1220,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1220,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1223,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1223,1
    - Dst: auto::second::d_buffer::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1223,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1224,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1224,1
    - Dst: auto::second::d_buffer::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1224,1
    - Dst: auto*::getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1225,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1225,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1225,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1225,1
    - Dst: auto::second::d_buffer::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1225,1
    - Dst: auto::second::d_buffer::insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1230,1
    - Dst: auto::second::d_buffer::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1230,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 6
    argNames:
    - session
    - flags
    - stream_id
    - data
    - len
    - user_data
    argTypes:
    - nghttp2_session*
    - uint8_t
    - IncomingHTTP2Connection::StreamID
    - uint8_t*
    - size_t
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1233
      start: 1212
    functionDepth: 1
    functionLinenumber: 1212
    functionLinenumberEnd: 1233
    functionName: IncomingHTTP2Connection::on_data_chunk_recv_callback
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc
    functionUses: 0
    functionsReached:
    - pdns::max
    - static_cast<IncomingHTTP2Connection*>
    - auto*::getLogger
    - Logging::Loggable
    - VERBOSESLOG
    - infolog
    - auto*::d_currentStreams::end
    - auto::second::d_buffer::end
    - auto*::getStreamContext
    - auto::second::d_buffer::size
    - auto::second::d_buffer::insert
    linkageType: ''
    returnType: int
    signature: int IncomingHTTP2Connection::on_data_chunk_recv_callback(nghttp2_session*
      session, uint8_t flags, IncomingHTTP2Connection::StreamID stream_id, const uint8_t*
      data, size_t len, void* user_data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<IncomingHTTP2Connection*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1238,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1240,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1240,1
    - Dst: auto*::d_ci::remote::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1240,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1240,1
    - Dst: auto*::getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1241,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1241,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1241,1
    - Dst: nghttp2_session_terminate_session
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1244,1
    - Dst: auto*::d_session::get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1244,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 5
    argNames:
    - session
    - lib_error_code
    - msg
    - len
    - user_data
    argTypes:
    - nghttp2_session*
    - int
    - char*
    - size_t
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1247
      start: 1235
    functionDepth: 0
    functionLinenumber: 1235
    functionLinenumberEnd: 1247
    functionName: IncomingHTTP2Connection::on_error_callback
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc
    functionUses: 0
    functionsReached:
    - static_cast<IncomingHTTP2Connection*>
    - auto*::getLogger
    - auto*::d_ci::remote::toStringWithPort
    - Logging::Loggable
    - auto*::d_session::get
    - VERBOSESLOG
    - infolog
    - std::string
    - nghttp2_session_terminate_session
    linkageType: ''
    returnType: int
    signature: int IncomingHTTP2Connection::on_error_callback(nghttp2_session* session,
      int lib_error_code, const char* msg, size_t len, void* user_data)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1258,1
    - Dst: resize
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1259,1
    - Dst: std::max
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1259,1
    - Dst: capacity
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1259,1
    - Dst: tryRead
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1262,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1262,1
    - Dst: resize
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1263,1
    - Dst: nghttp2_session_mem_recv
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1267,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1267,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1267,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1267,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1270,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1270,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1271,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1271,1
    - Dst: nghttp2_strerror
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1271,1
    - Dst: nghttp2_session_send
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1274,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1274,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1276,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1276,1
    - Dst: nghttp2_strerror
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1276,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1276,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1281,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1281,1
    - Dst: remote::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1281,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1281,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1282,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1282,1
    - Dst: IncomingHTTP2Connection::handleIOError
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1283,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 24
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1287
      start: 1249
    functionDepth: 1
    functionLinenumber: 1249
    functionLinenumberEnd: 1287
    functionName: IncomingHTTP2Connection::readHTTPData
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc
    functionUses: 1
    functionsReached:
    - tryRead
    - nghttp2_session_send
    - std::string
    - static_cast<int>
    - static_cast<size_t>
    - resize
    - size
    - std::max
    - nghttp2_session_mem_recv
    - getLogger
    - remote::toStringWithPort
    - std::runtime_error
    - nghttp2_strerror
    - VERBOSESLOG
    - get
    - capacity
    - IncomingHTTP2Connection::handleIOError
    - what
    - infolog
    - data
    linkageType: ''
    returnType: IOState
    signature: IOState IncomingHTTP2Connection::readHTTPData()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: boost::any_cast<std::shared_ptr<IncomingHTTP2Connection>>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1291,1
    - Dst: auto::handleIO
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1292,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - descriptor
    - ' param'
    argTypes:
    - int
    - FDMultiplexer::funcparam_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1293
      start: 1289
    functionDepth: 0
    functionLinenumber: 1289
    functionLinenumberEnd: 1293
    functionName: IncomingHTTP2Connection::handleReadableIOCallback
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc
    functionUses: 0
    functionsReached:
    - auto::handleIO
    - boost::any_cast<std::shared_ptr<IncomingHTTP2Connection>>
    linkageType: ''
    returnType: void
    signature: void IncomingHTTP2Connection::handleReadableIOCallback([[maybe_unused]]
      int descriptor, FDMultiplexer::funcparam_t& param)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: boost::any_cast<std::shared_ptr<IncomingHTTP2Connection>>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1297,1
    - Dst: auto::writeToSocket
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1298,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - descriptor
    - ' param'
    argTypes:
    - int
    - FDMultiplexer::funcparam_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1299
      start: 1295
    functionDepth: 0
    functionLinenumber: 1295
    functionLinenumberEnd: 1299
    functionName: IncomingHTTP2Connection::handleWritableIOCallback
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc
    functionUses: 0
    functionsReached:
    - auto::writeToSocket
    - boost::any_cast<std::shared_ptr<IncomingHTTP2Connection>>
    linkageType: ''
    returnType: void
    signature: void IncomingHTTP2Connection::handleWritableIOCallback([[maybe_unused]]
      int descriptor, FDMultiplexer::funcparam_t& param)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: reset
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1304,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1306
      start: 1301
    functionDepth: 0
    functionLinenumber: 1301
    functionLinenumberEnd: 1306
    functionName: IncomingHTTP2Connection::stopIO
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc
    functionUses: 3
    functionsReached:
    - reset
    linkageType: ''
    returnType: void
    signature: void IncomingHTTP2Connection::stopIO()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1310,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1310,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1311
      start: 1308
    functionDepth: 0
    functionLinenumber: 1308
    functionLinenumberEnd: 1311
    functionName: IncomingHTTP2Connection::getConcurrentStreamsCount
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc
    functionUses: 1
    functionsReached:
    - size
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t IncomingHTTP2Connection::getConcurrentStreamsCount() const
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1315,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1323,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1327,1
    - Dst: static_cast<time_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1328,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 15
    argCount: 1
    argNames:
    - now
    argTypes:
    - struct timeval
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1335
      start: 1313
    functionDepth: 1
    functionLinenumber: 1313
    functionLinenumberEnd: 1335
    functionName: IncomingHTTP2Connection::getIdleClientReadTTD
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc
    functionUses: 0
    functionsReached:
    - static_cast<time_t>
    - static_cast<size_t>
    - dnsdist::configuration::getCurrentRuntimeConfiguration
    linkageType: ''
    returnType: std::optional<struct timeval>
    signature: std::optional<struct timeval> IncomingHTTP2Connection::getIdleClientReadTTD(struct
      timeval now) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: IncomingHTTP2Connection::updateIO
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1340,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - newState
    - ' now'
    argTypes:
    - IOState
    - timeval
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1341
      start: 1337
    functionDepth: 1
    functionLinenumber: 1337
    functionLinenumberEnd: 1341
    functionName: IncomingHTTP2Connection::updateIO
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc
    functionUses: 3
    functionsReached:
    - IncomingHTTP2Connection::updateIO
    linkageType: ''
    returnType: void
    signature: void IncomingHTTP2Connection::updateIO(IOState newState, const timeval&
      now)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: shared_from_this
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1348,1
    - Dst: updateIOForAsync
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1349,1
    - Dst: std::dynamic_pointer_cast<IncomingHTTP2Connection>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1353,1
    - Dst: shared_from_this
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1353,1
    - Dst: gettimeofday
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1359,1
    - Dst: IncomingHTTP2Connection::getIdleClientReadTTD
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1365,1
    - Dst: getClientReadTTD
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1368,1
    - Dst: update
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1370,1
    - Dst: getClientWriteTTD
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1373,1
    - Dst: update
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1374,1
    - Dst: reset
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1377,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 24
    argCount: 2
    argNames:
    - newState
    - ' callback'
    argTypes:
    - IOState
    - FDMultiplexer::callbackfunc_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1379
      start: 1343
    functionDepth: 2
    functionLinenumber: 1343
    functionLinenumberEnd: 1379
    functionName: IncomingHTTP2Connection::updateIO
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc
    functionUses: 3
    functionsReached:
    - reset
    - std::dynamic_pointer_cast<IncomingHTTP2Connection>
    - getClientWriteTTD
    - gettimeofday
    - getClientReadTTD
    - updateIOForAsync
    - shared_from_this
    - update
    - IncomingHTTP2Connection::getIdleClientReadTTD
    linkageType: ''
    returnType: void
    signature: void IncomingHTTP2Connection::updateIO(IOState newState, const FDMultiplexer::callbackfunc_t&
      callback)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: clear
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1384,1
    - Dst: nghttp2_session_terminate_session
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1386,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1386,1
    - Dst: clear
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1387,1
    - Dst: clear
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1388,1
    - Dst: IncomingHTTP2Connection::stopIO
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc:1389,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1390
      start: 1381
    functionDepth: 1
    functionLinenumber: 1381
    functionLinenumberEnd: 1390
    functionName: IncomingHTTP2Connection::handleIOError
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc
    functionUses: 2
    functionsReached:
    - clear
    - IncomingHTTP2Connection::stopIO
    - nghttp2_session_terminate_session
    - get
    linkageType: ''
    returnType: void
    signature: void IncomingHTTP2Connection::handleIOError()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1395
      start: 1392
    functionDepth: 0
    functionLinenumber: 1392
    functionLinenumberEnd: 1395
    functionName: IncomingHTTP2Connection::active
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool IncomingHTTP2Connection::active() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrules_cc.cc:18,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrules_cc.cc:18,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 3
    argNames:
    - ' parameter'
    - value
    - max
    argTypes:
    - std::string
    - uint64_t
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 20
      start: 15
    functionDepth: 0
    functionLinenumber: 15
    functionLinenumberEnd: 20
    functionName: checkParameterBound
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistrules_cc.cc
    functionUses: 2
    functionsReached:
    - std::to_string
    - std::runtime_error
    linkageType: ''
    returnType: void
    signature: void checkParameterBound(const std::string& parameter, uint64_t value,
      uint64_t max)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrules_cc.cc:31,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrules_cc.cc:31,1
    - Dst: std::get<ParameterType>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrules_cc.cc:36,1
    - Dst: erase
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrules_cc.cc:37,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrules_cc.cc:41,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 3
    argNames:
    - ' ruleName'
    - ' parameters'
    - ' parameterName'
    argTypes:
    - std::string
    - std::vector<RuleParameter>
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 29
    functionDepth: 0
    functionLinenumber: 29
    functionLinenumberEnd: 42
    functionName: getRequiredRuleParameter
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistrules_cc.cc
    functionUses: 0
    functionsReached:
    - std::runtime_error
    - end
    - std::get<ParameterType>
    - begin
    - erase
    linkageType: ''
    returnType: ParameterType
    signature: ParameterType getRequiredRuleParameter(const std::string& ruleName,
      std::vector<RuleParameter>& parameters, const std::string& parameterName)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrules_cc.cc:49,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrules_cc.cc:49,1
    - Dst: std::get<ParameterType>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrules_cc.cc:54,1
    - Dst: erase
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrules_cc.cc:55,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 4
    argNames:
    - ' ruleName'
    - ' parameters'
    - ' parameterName'
    - defaultValue
    argTypes:
    - std::string
    - std::vector<RuleParameter>
    - std::string
    - ParameterType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 45
    functionDepth: 0
    functionLinenumber: 45
    functionLinenumberEnd: 60
    functionName: getOptionalRuleParameter
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistrules_cc.cc
    functionUses: 0
    functionsReached:
    - erase
    - end
    - std::get<ParameterType>
    - begin
    linkageType: ''
    returnType: ParameterType
    signature: ParameterType getOptionalRuleParameter(const std::string& ruleName,
      std::vector<RuleParameter>& parameters, const std::string& parameterName, ParameterType
      defaultValue)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getRequiredRuleParameter
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrules_cc.cc:66,1
    - Dst: getOptionalRuleParameter
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrules_cc.cc:67,1
    - Dst: getOptionalRuleParameter
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrules_cc.cc:68,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - ' ruleName'
    - ' parameters'
    argTypes:
    - std::string
    - std::vector<RuleParameter>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 65
    functionDepth: 1
    functionLinenumber: 65
    functionLinenumberEnd: 70
    functionName: TestMaxQPSIPRule::TestMaxQPSIPRule
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistrules_cc.cc
    functionUses: 0
    functionsReached:
    - getRequiredRuleParameter
    - getOptionalRuleParameter
    linkageType: ''
    returnType: void
    signature: void TestMaxQPSIPRule(const std::string& ruleName, std::vector<RuleParameter>&
      parameters)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - dnsQuestion
    argTypes:
    - DNSQuestion*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 72
    functionDepth: 0
    functionLinenumber: 72
    functionLinenumberEnd: 76
    functionName: TestMaxQPSIPRule::matches
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistrules_cc.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool matches(const DNSQuestion* dnsQuestion) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 78
    functionDepth: 0
    functionLinenumber: 78
    functionLinenumberEnd: 81
    functionName: TestMaxQPSIPRule::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistrules_cc.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: string
    signature: string toString() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<TestMaxQPSIPRule>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrules_cc.cc:91,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' type'
    - ' parameters'
    argTypes:
    - std::string
    - std::vector<RuleParameter>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 89
    functionDepth: 0
    functionLinenumber: 89
    functionLinenumberEnd: 92
    functionName: buildSelector
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistrules_cc.cc
    functionUses: 0
    functionsReached:
    - std::make_shared<TestMaxQPSIPRule>
    linkageType: ''
    returnType: std::shared_ptr<DNSRule>
    signature: std::shared_ptr<DNSRule> buildSelector(const std::string& type, std::vector<RuleParameter>&
      parameters)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrules_cc.cc:99,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrules_cc.cc:100,1
    - Dst: InternalQueryState::queryRealTime::start
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrules_cc.cc:105,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 94
    functionDepth: 1
    functionLinenumber: 94
    functionLinenumberEnd: 109
    functionName: getDQ
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistrules_cc.cc
    functionUses: 2
    functionsReached:
    - InternalQueryState::queryRealTime::start
    - ComboAddress
    linkageType: ''
    returnType: DNSQuestion
    signature: DNSQuestion getDQ(const DNSName* providedName = nullptr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::selectors::getMaxQPSIPSelector
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrules_cc.cc:120,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrules_cc.cc:123,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrules_cc.cc:126,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrules_cc.cc:127,1
    - Dst: InternalQueryState::queryRealTime::start
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrules_cc.cc:129,1
    - Dst: gettime
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrules_cc.cc:133,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrules_cc.cc:139,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrules_cc.cc:139,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrules_cc.cc:140,1
    - Dst: auto::matches
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrules_cc.cc:140,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrules_cc.cc:141,1
    - Dst: auto::getEntriesCount
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrules_cc.cc:141,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrules_cc.cc:145,1
    - Dst: auto::matches
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrules_cc.cc:145,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrules_cc.cc:146,1
    - Dst: auto::getEntriesCount
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrules_cc.cc:146,1
    - Dst: auto::cleanup
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrules_cc.cc:151,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrules_cc.cc:154,1
    - Dst: auto::getEntriesCount
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrules_cc.cc:154,1
    - Dst: gettime
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrules_cc.cc:157,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrules_cc.cc:159,1
    - Dst: auto::matches
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrules_cc.cc:159,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrules_cc.cc:161,1
    - Dst: auto::getEntriesCount
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrules_cc.cc:161,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrules_cc.cc:166,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrules_cc.cc:166,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrules_cc.cc:166,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrules_cc.cc:167,1
    - Dst: auto::matches
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrules_cc.cc:167,1
    - Dst: gettime
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrules_cc.cc:171,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrules_cc.cc:175,1
    - Dst: auto::getEntriesCount
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrules_cc.cc:175,1
    - Dst: auto::cleanup
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrules_cc.cc:182,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrules_cc.cc:183,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrules_cc.cc:185,1
    - Dst: auto::getNumberOfShards
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrules_cc.cc:185,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrules_cc.cc:186,1
    - Dst: auto::getEntriesCount
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrules_cc.cc:186,1
    - Dst: auto::cleanup
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrules_cc.cc:192,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrules_cc.cc:193,1
    - Dst: auto::getNumberOfShards
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrules_cc.cc:193,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrules_cc.cc:195,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrules_cc.cc:196,1
    - Dst: auto::getEntriesCount
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrules_cc.cc:196,1
    - Dst: auto::clear
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrules_cc.cc:198,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrules_cc.cc:199,1
    - Dst: auto::getEntriesCount
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrules_cc.cc:199,1
    - Dst: auto::cleanup
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrules_cc.cc:200,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrules_cc.cc:201,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrules_cc.cc:202,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 45
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 203
      start: 113
    functionDepth: 1
    functionLinenumber: 113
    functionLinenumberEnd: 203
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistrules_cc.cc
    functionUses: 0
    functionsReached:
    - auto::cleanup
    - std::to_string
    - dnsdist::selectors::getMaxQPSIPSelector
    - auto::getEntriesCount
    - DNSName
    - BOOST_CHECK_EQUAL
    - auto::getNumberOfShards
    - InternalQueryState::queryRealTime::start
    - gettime
    - auto::matches
    - auto::clear
    - ComboAddress
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_MaxQPSIPRule)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getDQ
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrules_cc.cc:207,1
    - Dst: std::make_shared<DownstreamState>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrules_cc.cc:210,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrules_cc.cc:210,1
    - Dst: std::make_shared<DownstreamState>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrules_cc.cc:211,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrules_cc.cc:211,1
    - Dst: ServerPool::addServer
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrules_cc.cc:217,1
    - Dst: ServerPool::addServer
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrules_cc.cc:218,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrules_cc.cc:220,1
    - Dst: ServerPool::poolLoad
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrules_cc.cc:220,1
    - Dst: addServerToPool
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrules_cc.cc:222,1
    - Dst: addServerToPool
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrules_cc.cc:223,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrules_cc.cc:226,1
    - Dst: PoolOutstandingRule::matches
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrules_cc.cc:226,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrules_cc.cc:229,1
    - Dst: PoolOutstandingRule::matches
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrules_cc.cc:229,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 230
      start: 205
    functionDepth: 3
    functionLinenumber: 205
    functionLinenumberEnd: 230
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistrules_cc.cc
    functionUses: 0
    functionsReached:
    - addServerToPool
    - PoolOutstandingRule::matches
    - ServerPool::poolLoad
    - BOOST_CHECK_EQUAL
    - ServerPool::addServer
    - getDQ
    - std::make_shared<DownstreamState>
    - ComboAddress
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_poolOutstandingRule)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getDQ
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrules_cc.cc:234,1
    - Dst: auto::getData
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrules_cc.cc:237,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrules_cc.cc:238,1
    - Dst: PayloadSizeRule::matches
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrules_cc.cc:238,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrules_cc.cc:239,1
    - Dst: PayloadSizeRule::toString
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrules_cc.cc:239,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrules_cc.cc:239,1
    - Dst: auto::getData
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrules_cc.cc:239,1
    - Dst: auto::getData
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrules_cc.cc:243,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrules_cc.cc:244,1
    - Dst: PayloadSizeRule::matches
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrules_cc.cc:244,1
    - Dst: auto::getData
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrules_cc.cc:248,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrules_cc.cc:249,1
    - Dst: PayloadSizeRule::matches
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrules_cc.cc:249,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrules_cc.cc:250,1
    - Dst: PayloadSizeRule::toString
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrules_cc.cc:250,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrules_cc.cc:250,1
    - Dst: auto::getData
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrules_cc.cc:250,1
    - Dst: auto::getData
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrules_cc.cc:254,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrules_cc.cc:255,1
    - Dst: PayloadSizeRule::matches
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrules_cc.cc:255,1
    - Dst: auto::getData
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrules_cc.cc:259,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrules_cc.cc:260,1
    - Dst: PayloadSizeRule::matches
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrules_cc.cc:260,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrules_cc.cc:261,1
    - Dst: PayloadSizeRule::toString
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrules_cc.cc:261,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrules_cc.cc:261,1
    - Dst: auto::getData
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrules_cc.cc:261,1
    - Dst: auto::getData
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrules_cc.cc:265,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrules_cc.cc:266,1
    - Dst: PayloadSizeRule::matches
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrules_cc.cc:266,1
    - Dst: auto::getData
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrules_cc.cc:270,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrules_cc.cc:271,1
    - Dst: PayloadSizeRule::matches
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrules_cc.cc:271,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrules_cc.cc:272,1
    - Dst: PayloadSizeRule::toString
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrules_cc.cc:272,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrules_cc.cc:272,1
    - Dst: auto::getData
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrules_cc.cc:272,1
    - Dst: auto::getData
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrules_cc.cc:276,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrules_cc.cc:277,1
    - Dst: PayloadSizeRule::matches
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrules_cc.cc:277,1
    - Dst: auto::getData
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrules_cc.cc:281,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrules_cc.cc:282,1
    - Dst: PayloadSizeRule::matches
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrules_cc.cc:282,1
    - Dst: auto::getData
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrules_cc.cc:286,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrules_cc.cc:287,1
    - Dst: PayloadSizeRule::matches
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrules_cc.cc:287,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrules_cc.cc:288,1
    - Dst: PayloadSizeRule::toString
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrules_cc.cc:288,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrules_cc.cc:288,1
    - Dst: auto::getData
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrules_cc.cc:288,1
    - Dst: auto::getData
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrules_cc.cc:292,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrules_cc.cc:293,1
    - Dst: PayloadSizeRule::matches
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrules_cc.cc:293,1
    - Dst: auto::getData
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrules_cc.cc:297,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrules_cc.cc:298,1
    - Dst: PayloadSizeRule::matches
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrules_cc.cc:298,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrules_cc.cc:301,1
    - Dst: PayloadSizeRule
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrules_cc.cc:301,1
    - Dst: buildSelector
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrules_cc.cc:307,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 31
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 308
      start: 232
    functionDepth: 1
    functionLinenumber: 232
    functionLinenumberEnd: 308
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistrules_cc.cc
    functionUses: 0
    functionsReached:
    - buildSelector
    - std::to_string
    - PayloadSizeRule::matches
    - BOOST_CHECK_EQUAL
    - getDQ
    - PayloadSizeRule::toString
    - BOOST_CHECK_THROW
    - auto::getData
    - PayloadSizeRule
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_payloadSizeRule)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-configuration-items.cc:180,1
    - Dst: setLuaSideEffect
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-configuration-items.cc:181,1
    - Dst: dnsdist::configuration::updateRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-configuration-items.cc:182,1
    - Dst: mutator
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-configuration-items.cc:183,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-configuration-items.cc:189,1
    - Dst: setLuaSideEffect
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-configuration-items.cc:190,1
    - Dst: checkParameterBound
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-configuration-items.cc:191,1
    - Dst: dnsdist::configuration::updateRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-configuration-items.cc:192,1
    - Dst: mutator
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-configuration-items.cc:193,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-configuration-items.cc:199,1
    - Dst: setLuaSideEffect
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-configuration-items.cc:200,1
    - Dst: dnsdist::configuration::updateRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-configuration-items.cc:201,1
    - Dst: mutator
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-configuration-items.cc:202,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-configuration-items.cc:208,1
    - Dst: dnsdist::configuration::updateImmutableConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-configuration-items.cc:210,1
    - Dst: mutator
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-configuration-items.cc:211,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-configuration-items.cc:216,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-configuration-items.cc:216,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-configuration-items.cc:217,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-configuration-items.cc:223,1
    - Dst: checkParameterBound
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-configuration-items.cc:224,1
    - Dst: dnsdist::configuration::updateImmutableConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-configuration-items.cc:226,1
    - Dst: mutator
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-configuration-items.cc:227,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-configuration-items.cc:232,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-configuration-items.cc:232,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-configuration-items.cc:233,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-configuration-items.cc:238,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-configuration-items.cc:241,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-configuration-items.cc:241,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-configuration-items.cc:242,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-configuration-items.cc:242,1
    - Dst: dnsdist::configuration::updateImmutableConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-configuration-items.cc:247,1
    - Dst: mutator
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-configuration-items.cc:248,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-configuration-items.cc:253,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-configuration-items.cc:253,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-configuration-items.cc:254,1
    - Dst: setLuaSideEffect
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-configuration-items.cc:256,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 63
    argCount: 1
    argNames:
    - ' luaCtx'
    argTypes:
    - LuaContext
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 259
      start: 177
    functionDepth: 1
    functionLinenumber: 177
    functionLinenumberEnd: 259
    functionName: setupConfigurationItems
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-configuration-items.cc
    functionUses: 0
    functionsReached:
    - errlog
    - SLOG
    - Logging::Loggable
    - dnsdist::configuration::updateRuntimeConfiguration
    - dnsdist::configuration::updateImmutableConfiguration
    - setLuaSideEffect
    - checkParameterBound
    - mutator
    - dnsdist::logging::getTopLogger
    - writeFunction
    linkageType: ''
    returnType: void
    signature: void setupConfigurationItems(LuaContext& luaCtx)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:78,1
    - Dst: TCPIOHandler::write
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:82,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:85,1
    - Dst: unixDie
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:87,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:90,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 3
    argNames:
    - fileDesc
    - buf
    - count
    argTypes:
    - int
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 76
    functionDepth: 0
    functionLinenumber: 76
    functionLinenumberEnd: 97
    functionName: writen2
    functionSourceFile: /src/pdns/pdns/dnsdistdist/misc.cc
    functionUses: 15
    functionsReached:
    - TCPIOHandler::write
    - static_cast<const char*>
    - unixDie
    - std::runtime_error
    linkageType: ''
    returnType: size_t
    signature: size_t writen2(int fileDesc, const void *buf, size_t count)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: read
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:104,1
    - Dst: static_cast<char *>
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:104,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:106,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:110,1
    - Dst: unixDie
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:112,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:115,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 17
    argCount: 3
    argNames:
    - fileDesc
    - buffer
    - len
    argTypes:
    - int
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 99
    functionDepth: 0
    functionLinenumber: 99
    functionLinenumberEnd: 121
    functionName: readn2
    functionSourceFile: /src/pdns/pdns/dnsdistdist/misc.cc
    functionUses: 7
    functionsReached:
    - static_cast<size_t>
    - read
    - std::runtime_error
    - unixDie
    - runtime_error
    - static_cast<char *>
    linkageType: ''
    returnType: size_t
    signature: size_t readn2(int fileDesc, void* buffer, size_t len)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: gettimeofday
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:129,1
    - Dst: read
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:133,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:141,1
    - Dst: waitForData
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:146,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:151,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:153,1
    - Dst: unixDie
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:157,1
    - Dst: gettimeofday
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:163,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:166,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 36
    argCount: 6
    argNames:
    - fd
    - buffer
    - len
    - ' idleTimeout'
    - ' totalTimeout'
    - allowIncomplete
    argTypes:
    - int
    - void*
    - size_t
    - struct timeval
    - struct timeval
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 175
      start: 123
    functionDepth: 0
    functionLinenumber: 123
    functionLinenumberEnd: 175
    functionName: readn2WithTimeout
    functionSourceFile: /src/pdns/pdns/dnsdistdist/misc.cc
    functionUses: 4
    functionsReached:
    - read
    - unixDie
    - runtime_error
    - waitForData
    - gettimeofday
    linkageType: ''
    returnType: size_t
    signature: size_t readn2WithTimeout(int fd, void* buffer, size_t len, const struct
      timeval& idleTimeout, const struct timeval& totalTimeout, bool allowIncomplete)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: write
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:181,1
    - Dst: reinterpret_cast<const char *>
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:181,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:187,1
    - Dst: waitForRWData
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:190,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:195,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:197,1
    - Dst: unixDie
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:201,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 21
    argCount: 4
    argNames:
    - fd
    - buffer
    - len
    - ' timeout'
    argTypes:
    - int
    - void*
    - size_t
    - struct timeval
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 208
      start: 177
    functionDepth: 0
    functionLinenumber: 177
    functionLinenumberEnd: 208
    functionName: writen2WithTimeout
    functionSourceFile: /src/pdns/pdns/dnsdistdist/misc.cc
    functionUses: 4
    functionsReached:
    - unixDie
    - runtime_error
    - reinterpret_cast<const char *>
    - write
    - waitForRWData
    linkageType: ''
    returnType: size_t
    signature: size_t writen2WithTimeout(int fd, const void * buffer, size_t len,
      const struct timeval& timeout)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::string::resize
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:214,1
    - Dst: strerror_r
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:218,1
    - Dst: std::string::data
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:218,1
    - Dst: std::string::length
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:218,1
    - Dst: strerror_r
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:222,1
    - Dst: std::string::data
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:222,1
    - Dst: std::string::length
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:222,1
    - Dst: std::string::c_str
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:223,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - errnum
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 234
      start: 210
    functionDepth: 1
    functionLinenumber: 210
    functionLinenumberEnd: 234
    functionName: pdns::getMessageFromErrno
    functionSourceFile: /src/pdns/pdns/dnsdistdist/misc.cc
    functionUses: 3
    functionsReached:
    - std::string::length
    - std::string::c_str
    - std::string::data
    - std::string::resize
    - strerror_r
    linkageType: ''
    returnType: auto
    signature: auto pdns::getMessageFromErrno(const int errnum) -> std::string
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: ERR_get_error_all
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:245,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:246,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:246,1
    - Dst: ERR_lib_error_string
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:248,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:250,1
    - Dst: ERR_reason_error_string
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:253,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:255,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:259,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:262,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:262,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:265,1
    - Dst: ERR_get_error
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:269,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:270,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:270,1
    - Dst: ERR_lib_error_string
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:272,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:274,1
    - Dst: ERR_func_error_string
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:277,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:279,1
    - Dst: ERR_reason_error_string
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:282,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:284,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 32
    argCount: 1
    argNames:
    - ' errorMessage'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 289
      start: 237
    functionDepth: 0
    functionLinenumber: 237
    functionLinenumberEnd: 289
    functionName: pdns::OpenSSL::error(const std::string& errorMessage) -> std::runtime_error
    functionSourceFile: /src/pdns/pdns/dnsdistdist/misc.cc
    functionUses: 0
    functionsReached:
    - ERR_get_error
    - ERR_get_error_all
    - std::to_string
    - ERR_reason_error_string
    - ERR_lib_error_string
    - ERR_func_error_string
    - std::string
    linkageType: ''
    returnType: auto
    signature: auto pdns::OpenSSL::error(const std::string& errorMessage) -> std::runtime_error
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:293,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' componentName'
    - ' errorMessage'
    argTypes:
    - std::string
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 294
      start: 291
    functionDepth: 0
    functionLinenumber: 291
    functionLinenumberEnd: 294
    functionName: pdns::OpenSSL::error(const std::string& componentName, const std::string&
      errorMessage) -> std::runtime_error
    functionSourceFile: /src/pdns/pdns/dnsdistdist/misc.cc
    functionUses: 0
    functionsReached:
    - Logging::Logger::error
    linkageType: ''
    returnType: auto
    signature: auto pdns::OpenSSL::error(const std::string& componentName, const std::string&
      errorMessage) -> std::runtime_error
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: time
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:299,1
    - Dst: localtime_r
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:301,1
    - Dst: strftime
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:304,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:304,1
    - Dst: std::array::size
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:304,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:308,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 309
      start: 297
    functionDepth: 0
    functionLinenumber: 297
    functionLinenumberEnd: 309
    functionName: nowTime
    functionSourceFile: /src/pdns/pdns/dnsdistdist/misc.cc
    functionUses: 1
    functionsReached:
    - localtime_r
    - time
    - strftime
    - std::array::data
    - std::array::size
    linkageType: ''
    returnType: string
    signature: string nowTime()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: waitForRWData
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:314,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - fileDesc
    - seconds
    - mseconds
    argTypes:
    - int
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 315
      start: 312
    functionDepth: 0
    functionLinenumber: 312
    functionLinenumberEnd: 315
    functionName: waitForData
    functionSourceFile: /src/pdns/pdns/dnsdistdist/misc.cc
    functionUses: 27
    functionsReached:
    - waitForRWData
    linkageType: ''
    returnType: int
    signature: int waitForData(int fileDesc, int seconds, int mseconds)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: waitForRWData
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:319,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - fileDesc
    - timeout
    argTypes:
    - int
    - struct timeval
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 320
      start: 317
    functionDepth: 0
    functionLinenumber: 317
    functionLinenumberEnd: 320
    functionName: waitForData
    functionSourceFile: /src/pdns/pdns/dnsdistdist/misc.cc
    functionUses: 27
    functionsReached:
    - waitForRWData
    linkageType: ''
    returnType: int
    signature: int waitForData(int fileDesc, struct timeval timeout)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:325,1
    - Dst: poll
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:335,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 6
    argNames:
    - fileDesc
    - waitForRead
    - seconds
    - mseconds
    - error
    - disconnected
    argTypes:
    - int
    - bool
    - int
    - int
    - bool*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 346
      start: 322
    functionDepth: 0
    functionLinenumber: 322
    functionLinenumberEnd: 346
    functionName: waitForRWData
    functionSourceFile: /src/pdns/pdns/dnsdistdist/misc.cc
    functionUses: 18
    functionsReached:
    - memset
    - poll
    linkageType: ''
    returnType: int
    signature: int waitForRWData(int fileDesc, bool waitForRead, int seconds, int
      mseconds, bool* error, bool* disconnected)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: waitForRWData
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:350,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:350,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:350,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - fileDesc
    - waitForRead
    - timeout
    - error
    - disconnected
    argTypes:
    - int
    - bool
    - struct timeval
    - bool*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 351
      start: 348
    functionDepth: 0
    functionLinenumber: 348
    functionLinenumberEnd: 351
    functionName: waitForRWData
    functionSourceFile: /src/pdns/pdns/dnsdistdist/misc.cc
    functionUses: 19
    functionsReached:
    - waitForRWData
    - static_cast<int>
    linkageType: ''
    returnType: int
    signature: int waitForRWData(int fileDesc, bool waitForRead, struct timeval timeout,
      bool* error, bool* disconnected)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: set::count
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:357,1
    - Dst: set::insert
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:358,1
    - Dst: set::size
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:362,1
    - Dst: memset
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:363,1
    - Dst: std::vector::data
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:363,1
    - Dst: set::size
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:363,1
    - Dst: poll
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:373,1
    - Dst: std::vector::data
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:373,1
    - Dst: set::size
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:373,1
    - Dst: poll
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:375,1
    - Dst: std::vector::data
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:375,1
    - Dst: set::size
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:375,1
    - Dst: set::insert
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:382,1
    - Dst: set::begin
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:385,1
    - Dst: advance
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:386,1
    - Dst: dns_random
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:386,1
    - Dst: set::size
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:386,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 22
    argCount: 4
    argNames:
    - ' fds'
    - seconds
    - mseconds
    - fdOut
    argTypes:
    - set<int>
    - int
    - int
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 389
      start: 354
    functionDepth: 1
    functionLinenumber: 354
    functionLinenumberEnd: 389
    functionName: waitForMultiData
    functionSourceFile: /src/pdns/pdns/dnsdistdist/misc.cc
    functionUses: 2
    functionsReached:
    - set::insert
    - advance
    - set::size
    - dns_random
    - memset
    - set::begin
    - set::count
    - poll
    - std::vector::data
    linkageType: ''
    returnType: int
    signature: int waitForMultiData(const set<int>& fds, const int seconds, const
      int mseconds, int* fdOut)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: std::setprecision
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:397,1
    - Dst: std::setprecision
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:399,1
    - Dst: std::setprecision
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:401,1
    - Dst: std::setprecision
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:403,1
    - Dst: ostringstream::str
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:405,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 1
    argNames:
    - passed
    argTypes:
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 406
      start: 391
    functionDepth: 0
    functionLinenumber: 391
    functionLinenumberEnd: 406
    functionName: humanDuration
    functionSourceFile: /src/pdns/pdns/dnsdistdist/misc.cc
    functionUses: 2
    functionsReached:
    - std::setprecision
    - ostringstream::str
    linkageType: ''
    returnType: string
    signature: string humanDuration(time_t passed)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: string::size
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:410,1
    - Dst: string::size
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:413,1
    - Dst: string::substr
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:421,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - item
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 422
      start: 408
    functionDepth: 0
    functionLinenumber: 408
    functionLinenumberEnd: 422
    functionName: unquotify
    functionSourceFile: /src/pdns/pdns/dnsdistdist/misc.cc
    functionUses: 4
    functionsReached:
    - string::substr
    - string::size
    linkageType: ''
    returnType: string
    signature: string unquotify(const string &item)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: string::find_first_of
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:426,1
    - Dst: string::resize
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:428,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - line
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 430
      start: 424
    functionDepth: 1
    functionLinenumber: 424
    functionLinenumberEnd: 430
    functionName: stripLine
    functionSourceFile: /src/pdns/pdns/dnsdistdist/misc.cc
    functionUses: 0
    functionsReached:
    - string::resize
    - string::find_first_of
    linkageType: ''
    returnType: void
    signature: void stripLine(string &line)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: string::append
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:436,1
    - Dst: string::append
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:437,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - text
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 439
      start: 432
    functionDepth: 0
    functionLinenumber: 432
    functionLinenumberEnd: 439
    functionName: urlEncode
    functionSourceFile: /src/pdns/pdns/dnsdistdist/misc.cc
    functionUses: 0
    functionsReached:
    - string::append
    linkageType: ''
    returnType: string
    signature: string urlEncode(const string &text)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sysconf
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:448,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 456
      start: 441
    functionDepth: 0
    functionLinenumber: 441
    functionLinenumberEnd: 456
    functionName: getMaxHostNameSize
    functionSourceFile: /src/pdns/pdns/dnsdistdist/misc.cc
    functionUses: 1
    functionsReached:
    - sysconf
    linkageType: ''
    returnType: size_t
    signature: size_t getMaxHostNameSize()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: getMaxHostNameSize
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:460,1
    - Dst: std::string::resize
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:462,1
    - Dst: gethostname
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:464,1
    - Dst: std::string::data
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:464,1
    - Dst: std::string::resize
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:468,1
    - Dst: strlen
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:468,1
    - Dst: std::string::c_str
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:468,1
    - Dst: std::make_optional
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:469,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 470
      start: 458
    functionDepth: 1
    functionLinenumber: 458
    functionLinenumberEnd: 470
    functionName: getHostname
    functionSourceFile: /src/pdns/pdns/dnsdistdist/misc.cc
    functionUses: 1
    functionsReached:
    - std::string::c_str
    - getMaxHostNameSize
    - std::string::data
    - std::string::resize
    - strlen
    - std::make_optional
    - gethostname
    linkageType: ''
    returnType: std::optional<string>
    signature: std::optional<string> getHostname()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: getHostname
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:474,1
    - Dst: auto::has_value
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:475,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:476,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:476,1
    - Dst: std::replace
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:479,1
    - Dst: auto::begin
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:479,1
    - Dst: auto::end
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:479,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 481
      start: 472
    functionDepth: 0
    functionLinenumber: 472
    functionLinenumberEnd: 481
    functionName: getCarbonHostName
    functionSourceFile: /src/pdns/pdns/dnsdistdist/misc.cc
    functionUses: 2
    functionsReached:
    - std::runtime_error
    - auto::has_value
    - stringerror
    - auto::begin
    - auto::end
    - getHostname
    - std::replace
    linkageType: ''
    returnType: std::string
    signature: std::string getCarbonHostName()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: string::append
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:499,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:501,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 1
    argNames:
    - str
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 502
      start: 483
    functionDepth: 0
    functionLinenumber: 483
    functionLinenumberEnd: 502
    functionName: cleanSlashes
    functionSourceFile: /src/pdns/pdns/dnsdistdist/misc.cc
    functionUses: 5
    functionsReached:
    - string::append
    - std::move
    linkageType: ''
    returnType: void
    signature: void cleanSlashes(string &str)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: string::empty
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:506,1
    - Dst: inet_aton
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:512,1
    - Dst: string::c_str
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:512,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - str
    - ip
    argTypes:
    - string
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 517
      start: 504
    functionDepth: 0
    functionLinenumber: 504
    functionLinenumberEnd: 517
    functionName: IpToU32
    functionSourceFile: /src/pdns/pdns/dnsdistdist/misc.cc
    functionUses: 0
    functionsReached:
    - string::c_str
    - inet_aton
    - string::empty
    linkageType: ''
    returnType: bool
    signature: bool IpToU32(const string &str, uint32_t *ip)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:522,1
    - Dst: string
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:527,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - val
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 528
      start: 519
    functionDepth: 0
    functionLinenumber: 519
    functionLinenumberEnd: 528
    functionName: U32ToIP
    functionSourceFile: /src/pdns/pdns/dnsdistdist/misc.cc
    functionUses: 0
    functionsReached:
    - string
    - snprintf
    linkageType: ''
    returnType: string
    signature: string U32ToIP(uint32_t val)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: string::reserve
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:535,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:535,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:535,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:535,1
    - Dst: snprintf
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:538,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:538,1
    - Dst: std::array::size
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:538,1
    - Dst: static_cast<unsigned char>
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:538,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:539,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - ' str'
    - ' sep'
    argTypes:
    - string
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 543
      start: 531
    functionDepth: 0
    functionLinenumber: 531
    functionLinenumberEnd: 543
    functionName: makeHexDump
    functionSourceFile: /src/pdns/pdns/dnsdistdist/misc.cc
    functionUses: 29
    functionsReached:
    - static_cast<size_t>
    - string::reserve
    - snprintf
    - size
    - static_cast<unsigned char>
    - std::array::data
    - std::array::size
    linkageType: ''
    returnType: string
    signature: string makeHexDump(const string& str, const string& sep)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: string::size
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:546,1
    - Dst: std::range_error
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:547,1
    - Dst: string::reserve
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:550,1
    - Dst: string::size
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:550,1
    - Dst: string::size
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:552,1
    - Dst: string::substr
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:553,1
    - Dst: sscanf
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:555,1
    - Dst: auto::c_str
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:555,1
    - Dst: std::range_error
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:556,1
    - Dst: string::push_back
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:558,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:558,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 1
    argNames:
    - in
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 562
      start: 545
    functionDepth: 0
    functionLinenumber: 545
    functionLinenumberEnd: 562
    functionName: makeBytesFromHex
    functionSourceFile: /src/pdns/pdns/dnsdistdist/misc.cc
    functionUses: 4
    functionsReached:
    - string::reserve
    - string::size
    - sscanf
    - auto::c_str
    - string::push_back
    - static_cast<uint8_t>
    - string::substr
    - std::range_error
    linkageType: ''
    returnType: string
    signature: string makeBytesFromHex(const string &in)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - ' tv'
    argTypes:
    - struct timeval
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 574
      start: 564
    functionDepth: 0
    functionLinenumber: 564
    functionLinenumberEnd: 574
    functionName: normalizeTV
    functionSourceFile: /src/pdns/pdns/dnsdistdist/misc.cc
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void normalizeTV(struct timeval& tv)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: normalizeTV
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:581,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - ' lhs'
    - ' rhs'
    argTypes:
    - struct timeval
    - struct timeval
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 583
      start: 576
    functionDepth: 0
    functionLinenumber: 576
    functionLinenumberEnd: 583
    functionName: operator+(const struct timeval& lhs, const struct timeval& rhs)
    functionSourceFile: /src/pdns/pdns/dnsdistdist/misc.cc
    functionUses: 0
    functionsReached:
    - normalizeTV
    linkageType: ''
    returnType: struct timeval
    signature: struct timeval operator+(const struct timeval& lhs, const struct timeval&
      rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: normalizeTV
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:590,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - ' lhs'
    - ' rhs'
    argTypes:
    - struct timeval
    - struct timeval
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 592
      start: 585
    functionDepth: 0
    functionLinenumber: 585
    functionLinenumberEnd: 592
    functionName: operator-(const struct timeval& lhs, const struct timeval& rhs)
    functionSourceFile: /src/pdns/pdns/dnsdistdist/misc.cc
    functionUses: 0
    functionsReached:
    - normalizeTV
    linkageType: ''
    returnType: struct timeval
    signature: struct timeval operator-(const struct timeval& lhs, const struct timeval&
      rhs)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: find
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:597,1
    - Dst: substr
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:601,1
    - Dst: substr
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:602,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - ' inp'
    - sepa
    argTypes:
    - string
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 605
      start: 594
    functionDepth: 0
    functionLinenumber: 594
    functionLinenumberEnd: 605
    functionName: splitField
    functionSourceFile: /src/pdns/pdns/dnsdistdist/misc.cc
    functionUses: 10
    functionsReached:
    - substr
    - find
    linkageType: ''
    returnType: pair<string, string>
    signature: pair<string, string> splitField(const string& inp, char sepa)
  - BBCount: 10
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 21
    argCount: 1
    argNames:
    - facility
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 629
      start: 607
    functionDepth: 0
    functionLinenumber: 607
    functionLinenumberEnd: 629
    functionName: logFacilityToLOG
    functionSourceFile: /src/pdns/pdns/dnsdistdist/misc.cc
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int logFacilityToLOG(unsigned int facility)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: toLowerInPlace
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:678,1
    - Dst: std::unordered_map::find
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:679,1
    - Dst: std::unordered_map::end
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:680,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - facilityStr
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 685
      start: 631
    functionDepth: 0
    functionLinenumber: 631
    functionLinenumberEnd: 685
    functionName: logFacilityFromString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/misc.cc
    functionUses: 0
    functionsReached:
    - toLowerInPlace
    - std::unordered_map::end
    - std::unordered_map::find
    linkageType: ''
    returnType: std::optional<int>
    signature: std::optional<int> logFacilityFromString(std::string facilityStr)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:689,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:692,1
    - Dst: substr
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:695,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:695,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - ' dom'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 696
      start: 687
    functionDepth: 0
    functionLinenumber: 687
    functionLinenumberEnd: 696
    functionName: stripDot
    functionSourceFile: /src/pdns/pdns/dnsdistdist/misc.cc
    functionUses: 5
    functionsReached:
    - empty
    - substr
    - size
    linkageType: ''
    returnType: string
    signature: string stripDot(const string& dom)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:700,1
    - Dst: find
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:708,1
    - Dst: string::assign
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:713,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:713,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:714,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:715,1
    - Dst: pdns::checked_stoi<uint16_t>
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:720,1
    - Dst: substr
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:720,1
    - Dst: std::make_optional
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:721,1
    - Dst: inet_pton
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:732,1
    - Dst: string::c_str
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:732,1
    - Dst: std::memset
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:734,1
    - Dst: getaddrinfo
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:740,1
    - Dst: string::c_str
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:740,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:744,1
    - Dst: freeaddrinfo
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:745,1
    - Dst: std::optional::has_value
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:748,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:749,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 36
    argCount: 2
    argNames:
    - ' addr'
    - ret
    argTypes:
    - std::string
    - struct sockaddr_in6*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 753
      start: 698
    functionDepth: 1
    functionLinenumber: 698
    functionLinenumberEnd: 753
    functionName: makeIPv6sockaddr
    functionSourceFile: /src/pdns/pdns/dnsdistdist/misc.cc
    functionUses: 3
    functionsReached:
    - inet_pton
    - string::c_str
    - string::assign
    - memcpy
    - std::memset
    - c_str
    - freeaddrinfo
    - getaddrinfo
    - size
    - pdns::checked_stoi<uint16_t>
    - substr
    - std::optional::has_value
    - empty
    - std::make_optional
    - find
    - htons
    linkageType: ''
    returnType: int
    signature: int makeIPv6sockaddr(const std::string& addr, struct sockaddr_in6*
      ret)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:757,1
    - Dst: find
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:762,1
    - Dst: inet_aton
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:764,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:764,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:770,1
    - Dst: const_cast<char*>
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:773,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:773,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:773,1
    - Dst: strtol
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:774,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:774,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:781,1
    - Dst: inet_aton
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:782,1
    - Dst: substr
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:782,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 23
    argCount: 2
    argNames:
    - ' str'
    - ret
    argTypes:
    - std::string
    - struct sockaddr_in*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 787
      start: 755
    functionDepth: 0
    functionLinenumber: 755
    functionLinenumberEnd: 787
    functionName: makeIPv4sockaddr
    functionSourceFile: /src/pdns/pdns/dnsdistdist/misc.cc
    functionUses: 2
    functionsReached:
    - strtol
    - const_cast<char*>
    - c_str
    - size
    - substr
    - inet_aton
    - empty
    - find
    - htons
    linkageType: ''
    returnType: int
    signature: int makeIPv4sockaddr(const std::string& str, struct sockaddr_in* ret)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:791,1
    - Dst: memset
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:794,1
    - Dst: length
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:796,1
    - Dst: copy
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:799,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - ' path'
    - ret
    argTypes:
    - std::string
    - struct sockaddr_un*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 801
      start: 789
    functionDepth: 0
    functionLinenumber: 789
    functionLinenumberEnd: 801
    functionName: makeUNsockaddr
    functionSourceFile: /src/pdns/pdns/dnsdistdist/misc.cc
    functionUses: 5
    functionsReached:
    - empty
    - memset
    - copy
    - length
    linkageType: ''
    returnType: int
    signature: int makeUNsockaddr(const std::string& path, struct sockaddr_un* ret)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: clear
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:807,1
    - Dst: fgets
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:810,1
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:811,1
    - Dst: append
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:813,1
    - Dst: strchr
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:814,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - fp
    - ' line'
    argTypes:
    - FILE*
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 816
      start: 804
    functionDepth: 1
    functionLinenumber: 804
    functionLinenumberEnd: 816
    functionName: stringfgets
    functionSourceFile: /src/pdns/pdns/dnsdistdist/misc.cc
    functionUses: 5
    functionsReached:
    - append
    - strchr
    - empty
    - fgets
    - clear
    linkageType: ''
    returnType: bool
    signature: bool stringfgets(FILE* fp, std::string& line)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::string*::clear
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:820,1
    - Dst: pdns::UniqueFilePtr
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:821,1
    - Dst: fopen
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:821,1
    - Dst: stringfgets
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:825,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:825,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - fname
    - line
    argTypes:
    - char*
    - std::string*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 826
      start: 818
    functionDepth: 1
    functionLinenumber: 818
    functionLinenumberEnd: 826
    functionName: readFileIfThere
    functionSourceFile: /src/pdns/pdns/dnsdistdist/misc.cc
    functionUses: 0
    functionsReached:
    - auto::get
    - stringfgets
    - fopen
    - std::string*::clear
    - pdns::UniqueFilePtr
    linkageType: ''
    returnType: bool
    signature: bool readFileIfThere(const char* fname, std::string* line)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: regex_t::regex_t
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:829,1
    - Dst: regcomp
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:831,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:831,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:831,1
    - Dst: regerror
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:833,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:833,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:833,1
    - Dst: std::array::size
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:833,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:834,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:834,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:836,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 1
    argNames:
    - ' expr'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 838
      start: 828
    functionDepth: 0
    functionLinenumber: 828
    functionLinenumberEnd: 838
    functionName: Regex::Regex
    functionSourceFile: /src/pdns/pdns/dnsdistdist/misc.cc
    functionUses: 0
    functionsReached:
    - regex_t::regex_t
    - PDNSException
    - regcomp
    - regerror
    - get
    - c_str
    - std::array::data
    - std::array::size
    linkageType: ''
    returnType: void
    signature: void Regex::Regex(const string& expr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: regexec
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:843,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:843,1
    - Dst: string::c_str
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:843,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - line
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 844
      start: 841
    functionDepth: 0
    functionLinenumber: 841
    functionLinenumberEnd: 844
    functionName: Regex::match
    functionSourceFile: /src/pdns/pdns/dnsdistdist/misc.cc
    functionUses: 2
    functionsReached:
    - string::c_str
    - regexec
    - get
    linkageType: ''
    returnType: bool
    signature: bool Regex::match(const string &line) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Regex::match
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:848,1
    - Dst: toStringNoDot
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:848,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' name'
    argTypes:
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 849
      start: 846
    functionDepth: 0
    functionLinenumber: 846
    functionLinenumberEnd: 849
    functionName: Regex::match
    functionSourceFile: /src/pdns/pdns/dnsdistdist/misc.cc
    functionUses: 3
    functionsReached:
    - Regex::match
    - toStringNoDot
    linkageType: ''
    returnType: bool
    signature: bool Regex::match(const DNSName& name) const
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: CMSG_SPACE
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:865,1
    - Dst: CMSG_SPACE
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:867,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:868,1
    - Dst: CMSG_SPACE
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:871,1
    - Dst: CMSG_FIRSTHDR
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:873,1
    - Dst: CMSG_LEN
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:876,1
    - Dst: CMSG_DATA
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:878,1
    - Dst: memset
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:880,1
    - Dst: CMSG_SPACE
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:880,1
    - Dst: CMSG_SPACE
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:891,1
    - Dst: CMSG_SPACE
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:893,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:894,1
    - Dst: CMSG_SPACE
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:897,1
    - Dst: CMSG_FIRSTHDR
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:899,1
    - Dst: CMSG_LEN
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:902,1
    - Dst: CMSG_DATA
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:904,1
    - Dst: memset
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:906,1
    - Dst: CMSG_SPACE
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:906,1
    - Dst: CMSG_SPACE
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:914,1
    - Dst: CMSG_SPACE
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:916,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:917,1
    - Dst: CMSG_SPACE
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:920,1
    - Dst: CMSG_FIRSTHDR
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:922,1
    - Dst: CMSG_LEN
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:925,1
    - Dst: CMSG_DATA
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:928,1
    - Dst: memset
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:929,1
    - Dst: CMSG_SPACE
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:929,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 42
    argCount: 4
    argNames:
    - msgh
    - cmsgbuf
    - source
    - itfIndex
    argTypes:
    - struct msghdr*
    - cmsgbuf_aligned*
    - ComboAddress*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 933
      start: 855
    functionDepth: 0
    functionLinenumber: 855
    functionLinenumberEnd: 933
    functionName: addCMsgSrcAddr
    functionSourceFile: /src/pdns/pdns/dnsdistdist/misc.cc
    functionUses: 3
    functionsReached:
    - CMSG_FIRSTHDR
    - std::runtime_error
    - CMSG_DATA
    - memset
    - CMSG_SPACE
    - CMSG_LEN
    linkageType: ''
    returnType: void
    signature: void addCMsgSrcAddr(struct msghdr* msgh, cmsgbuf_aligned* cmsgbuf,
      const ComboAddress* source, int itfIndex)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: getrlimit
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:938,1
    - Dst: unixDie
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:939,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - hardOrSoft
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 941
      start: 935
    functionDepth: 0
    functionLinenumber: 935
    functionLinenumberEnd: 941
    functionName: getFilenumLimit
    functionSourceFile: /src/pdns/pdns/dnsdistdist/misc.cc
    functionUses: 0
    functionsReached:
    - unixDie
    - getrlimit
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int getFilenumLimit(bool hardOrSoft)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: getrlimit
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:947,1
    - Dst: unixDie
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:948,1
    - Dst: setrlimit
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:950,1
    - Dst: unixDie
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:951,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - lim
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 952
      start: 943
    functionDepth: 0
    functionLinenumber: 943
    functionLinenumberEnd: 952
    functionName: setFilenumLimit
    functionSourceFile: /src/pdns/pdns/dnsdistdist/misc.cc
    functionUses: 0
    functionsReached:
    - unixDie
    - setrlimit
    - getrlimit
    linkageType: ''
    returnType: void
    signature: void setFilenumLimit(unsigned int lim)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: setsockopt
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:958,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - fd
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 962
      start: 954
    functionDepth: 0
    functionLinenumber: 954
    functionLinenumberEnd: 962
    functionName: setSocketTimestamps
    functionSourceFile: /src/pdns/pdns/dnsdistdist/misc.cc
    functionUses: 1
    functionsReached:
    - setsockopt
    linkageType: ''
    returnType: bool
    signature: bool setSocketTimestamps(int fd)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: setsockopt
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:967,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - sock
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 972
      start: 964
    functionDepth: 0
    functionLinenumber: 964
    functionLinenumberEnd: 972
    functionName: setTCPNoDelay
    functionSourceFile: /src/pdns/pdns/dnsdistdist/misc.cc
    functionUses: 6
    functionsReached:
    - setsockopt
    linkageType: ''
    returnType: bool
    signature: bool setTCPNoDelay(int sock)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: fcntl
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:977,1
    - Dst: fcntl
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:978,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - sock
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 981
      start: 975
    functionDepth: 0
    functionLinenumber: 975
    functionLinenumberEnd: 981
    functionName: setNonBlocking
    functionSourceFile: /src/pdns/pdns/dnsdistdist/misc.cc
    functionUses: 34
    functionsReached:
    - fcntl
    linkageType: ''
    returnType: bool
    signature: bool setNonBlocking(int sock)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: fcntl
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:985,1
    - Dst: fcntl
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:986,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - sock
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 989
      start: 983
    functionDepth: 0
    functionLinenumber: 983
    functionLinenumberEnd: 989
    functionName: setBlocking
    functionSourceFile: /src/pdns/pdns/dnsdistdist/misc.cc
    functionUses: 4
    functionsReached:
    - fcntl
    linkageType: ''
    returnType: bool
    signature: bool setBlocking(int sock)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: setsockopt
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:994,1
    - Dst: static_cast<unsigned>
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:994,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:995,1
    - Dst: string
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:995,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:995,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - sock
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 997
      start: 991
    functionDepth: 0
    functionLinenumber: 991
    functionLinenumberEnd: 997
    functionName: setReuseAddr
    functionSourceFile: /src/pdns/pdns/dnsdistdist/misc.cc
    functionUses: 5
    functionsReached:
    - PDNSException
    - stringerror
    - string
    - setsockopt
    - static_cast<unsigned>
    linkageType: ''
    returnType: bool
    signature: bool setReuseAddr(int sock)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: getsockopt
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1010,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1011,1
    - Dst: string
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1011,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1011,1
    - Dst: setsockopt
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1014,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1015,1
    - Dst: string
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1015,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1015,1
    - Dst: getsockopt
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1019,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1020,1
    - Dst: string
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1020,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1020,1
    - Dst: setsockopt
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1023,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1024,1
    - Dst: string
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1024,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1024,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 22
    argCount: 3
    argNames:
    - sock
    - family
    - dscp
    argTypes:
    - int
    - unsigned short
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1027
      start: 999
    functionDepth: 0
    functionLinenumber: 999
    functionLinenumberEnd: 1027
    functionName: setDscp
    functionSourceFile: /src/pdns/pdns/dnsdistdist/misc.cc
    functionUses: 2
    functionsReached:
    - getsockopt
    - std::runtime_error
    - stringerror
    - string
    - setsockopt
    linkageType: ''
    returnType: void
    signature: void setDscp(int sock, unsigned short family, uint8_t dscp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fcntl
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1031,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - sock
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1033
      start: 1029
    functionDepth: 0
    functionLinenumber: 1029
    functionLinenumberEnd: 1033
    functionName: isNonBlocking
    functionSourceFile: /src/pdns/pdns/dnsdistdist/misc.cc
    functionUses: 0
    functionsReached:
    - fcntl
    linkageType: ''
    returnType: bool
    signature: bool isNonBlocking(int sock)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: setsockopt
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1040,1
    - Dst: setsockopt
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1042,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1045,1
    - Dst: string
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1045,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1045,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - sock
    - af
    argTypes:
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1049
      start: 1035
    functionDepth: 0
    functionLinenumber: 1035
    functionLinenumberEnd: 1049
    functionName: setReceiveSocketErrors
    functionSourceFile: /src/pdns/pdns/dnsdistdist/misc.cc
    functionUses: 0
    functionsReached:
    - PDNSException
    - stringerror
    - string
    - setsockopt
    linkageType: ''
    returnType: bool
    signature: bool setReceiveSocketErrors([[maybe_unused]] int sock, [[maybe_unused]]
      int af)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: TCPIOHandler::close
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1054,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1060,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1060,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 1
    argNames:
    - socket
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1063
      start: 1052
    functionDepth: 0
    functionLinenumber: 1052
    functionLinenumberEnd: 1063
    functionName: closesocket
    functionSourceFile: /src/pdns/pdns/dnsdistdist/misc.cc
    functionUses: 9
    functionsReached:
    - PDNSException
    - stringerror
    - TCPIOHandler::close
    linkageType: ''
    returnType: int
    signature: int closesocket(int socket)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: fcntl
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1067,1
    - Dst: fcntl
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1068,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - sock
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1071
      start: 1065
    functionDepth: 0
    functionLinenumber: 1065
    functionLinenumberEnd: 1071
    functionName: setCloseOnExec
    functionSourceFile: /src/pdns/pdns/dnsdistdist/misc.cc
    functionUses: 8
    functionsReached:
    - fcntl
    linkageType: ''
    returnType: bool
    signature: bool setCloseOnExec(int sock)
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: FDWrapper
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1085,1
    - Dst: socket
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1085,1
    - Dst: auto::getHandle
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1086,1
    - Dst: memset
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1090,1
    - Dst: NLMSG_LENGTH
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1091,1
    - Dst: send
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1097,1
    - Dst: auto::getHandle
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1097,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1104,1
    - Dst: recv
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1114,1
    - Dst: auto::getHandle
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1114,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1114,1
    - Dst: std::array::size
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1114,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1123,1
    - Dst: reinterpret_cast<struct nlmsghdr*>
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1124,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1124,1
    - Dst: NLMSG_OK
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1125,1
    - Dst: reinterpret_cast<struct nlmsghdr*>
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1126,1
    - Dst: NLMSG_NEXT
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1126,1
    - Dst: reinterpret_cast<struct ndmsg*>
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1133,1
    - Dst: NLMSG_DATA
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1133,1
    - Dst: reinterpret_cast<struct rtattr*>
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1134,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1134,1
    - Dst: NLMSG_ALIGN
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1134,1
    - Dst: NLMSG_LENGTH
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1135,1
    - Dst: static_cast<int32_t>
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1141,1
    - Dst: RTA_OK
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1145,1
    - Dst: RTA_NEXT
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1145,1
    - Dst: reinterpret_cast<struct in_addr*>
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1148,1
    - Dst: RTA_DATA
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1148,1
    - Dst: reinterpret_cast<struct in6_addr *>
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1154,1
    - Dst: RTA_DATA
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1154,1
    - Dst: memcmp
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1155,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1166,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1166,1
    CyclomaticComplexity: 32
    EdgeCount: 32
    ICount: 67
    argCount: 3
    argNames:
    - ' ca'
    - dest
    - destLen
    argTypes:
    - ComboAddress
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1178
      start: 1076
    functionDepth: 0
    functionLinenumber: 1076
    functionLinenumberEnd: 1178
    functionName: getMACAddress
    functionSourceFile: /src/pdns/pdns/dnsdistdist/misc.cc
    functionUses: 1
    functionsReached:
    - reinterpret_cast<char*>
    - static_cast<int32_t>
    - reinterpret_cast<struct in_addr*>
    - memcmp
    - recv
    - static_cast<size_t>
    - auto::getHandle
    - reinterpret_cast<struct rtattr*>
    - NLMSG_NEXT
    - RTA_OK
    - memset
    - NLMSG_OK
    - send
    - reinterpret_cast<struct ndmsg*>
    - RTA_DATA
    - NLMSG_LENGTH
    - FDWrapper
    - NLMSG_DATA
    - reinterpret_cast<const char*>
    - std::array::data
    - socket
    - memcpy
    - NLMSG_ALIGN
    - RTA_NEXT
    - reinterpret_cast<struct in6_addr *>
    - reinterpret_cast<struct nlmsghdr*>
    - std::array::size
    linkageType: ''
    returnType: int
    signature: int getMACAddress(const ComboAddress& ca, char* dest, size_t destLen)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1183
      start: 1180
    functionDepth: 0
    functionLinenumber: 1180
    functionLinenumberEnd: 1183
    functionName: getMACAddress
    functionSourceFile: /src/pdns/pdns/dnsdistdist/misc.cc
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int getMACAddress(const ComboAddress& /* ca */, char* /* dest */, size_t
      /* len */)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: getMACAddress
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1190,1
    - Dst: string::append
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1191,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ' ca'
    argTypes:
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1194
      start: 1186
    functionDepth: 0
    functionLinenumber: 1186
    functionLinenumberEnd: 1194
    functionName: getMACAddress
    functionSourceFile: /src/pdns/pdns/dnsdistdist/misc.cc
    functionUses: 2
    functionsReached:
    - string::append
    - getMACAddress
    linkageType: ''
    returnType: string
    signature: string getMACAddress(const ComboAddress& ca)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: getline
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1205,1
    - Dst: boost::starts_with
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1206,1
    - Dst: isdigit
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1206,1
    - Dst: string::at
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1206,1
    - Dst: stringtok
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1208,1
    - Dst: vector::size
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1210,1
    - Dst: std::stoull
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1215,1
    - Dst: vector::at
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1215,1
    - Dst: std::stoull
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1218,1
    - Dst: vector::at
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1218,1
    - Dst: std::stoull
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1221,1
    - Dst: vector::at
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1221,1
    - Dst: std::stoull
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1224,1
    - Dst: vector::at
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1224,1
    - Dst: vector::size
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1226,1
    - Dst: std::stoull
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1227,1
    - Dst: vector::at
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1227,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 30
    argCount: 1
    argNames:
    - ' str'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1236
      start: 1196
    functionDepth: 0
    functionLinenumber: 1196
    functionLinenumberEnd: 1236
    functionName: udpErrorStats
    functionSourceFile: /src/pdns/pdns/dnsdistdist/misc.cc
    functionUses: 2
    functionsReached:
    - isdigit
    - stringtok
    - vector::at
    - boost::starts_with
    - getline
    - string::at
    - std::stoull
    - vector::size
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t udpErrorStats([[maybe_unused]] const std::string& str)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: std::map::find
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1249,1
    - Dst: std::map::end
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1250,1
    - Dst: getline
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1260,1
    - Dst: boost::starts_with
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1261,1
    - Dst: stringtok
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1266,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1268,1
    - Dst: std::stoull
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1272,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1272,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 1
    argNames:
    - ' str'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1276
      start: 1238
    functionDepth: 0
    functionLinenumber: 1238
    functionLinenumberEnd: 1276
    functionName: udp6ErrorStats
    functionSourceFile: /src/pdns/pdns/dnsdistdist/misc.cc
    functionUses: 2
    functionsReached:
    - stringtok
    - std::vector::size
    - boost::starts_with
    - getline
    - std::vector::at
    - std::map::find
    - std::stoull
    - std::map::end
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t udp6ErrorStats([[maybe_unused]] const std::string& str)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: getline
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1288,1
    - Dst: string::size
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1289,1
    - Dst: boost::starts_with
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1289,1
    - Dst: isdigit
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1289,1
    - Dst: string::at
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1289,1
    - Dst: stringtok
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1290,1
    - Dst: vector::size
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1292,1
    - Dst: std::stoull
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1296,1
    - Dst: vector::at
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1296,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1301
      start: 1278
    functionDepth: 0
    functionLinenumber: 1278
    functionLinenumberEnd: 1301
    functionName: tcpErrorStats
    functionSourceFile: /src/pdns/pdns/dnsdistdist/misc.cc
    functionUses: 2
    functionsReached:
    - isdigit
    - string::size
    - stringtok
    - vector::at
    - boost::starts_with
    - getline
    - string::at
    - std::stoull
    - vector::size
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t tcpErrorStats(const std::string& /* str */)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: getline
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1313,1
    - Dst: boost::starts_with
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1314,1
    - Dst: stringtok
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1315,1
    - Dst: vector::size
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1317,1
    - Dst: std::stoull
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1321,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1326
      start: 1303
    functionDepth: 0
    functionLinenumber: 1303
    functionLinenumberEnd: 1326
    functionName: getCPUIOWait
    functionSourceFile: /src/pdns/pdns/dnsdistdist/misc.cc
    functionUses: 0
    functionsReached:
    - stringtok
    - boost::starts_with
    - getline
    - std::stoull
    - vector::size
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t getCPUIOWait(const std::string& /* str */)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: getline
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1338,1
    - Dst: boost::starts_with
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1339,1
    - Dst: stringtok
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1340,1
    - Dst: vector::size
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1342,1
    - Dst: std::stoull
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1346,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1351
      start: 1328
    functionDepth: 0
    functionLinenumber: 1328
    functionLinenumberEnd: 1351
    functionName: getCPUSteal
    functionSourceFile: /src/pdns/pdns/dnsdistdist/misc.cc
    functionUses: 0
    functionsReached:
    - stringtok
    - boost::starts_with
    - getline
    - std::stoull
    - vector::size
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t getCPUSteal(const std::string& /* str */)
  - BBCount: 8
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 25
    argCount: 2
    argNames:
    - ' algoName'
    - ' algoEnum'
    argTypes:
    - DNSName
    - TSIGHashEnum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1380
      start: 1353
    functionDepth: 0
    functionLinenumber: 1353
    functionLinenumberEnd: 1380
    functionName: getTSIGHashEnum
    functionSourceFile: /src/pdns/pdns/dnsdistdist/misc.cc
    functionUses: 10
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool getTSIGHashEnum(const DNSName& algoName, TSIGHashEnum& algoEnum)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: PDNSException
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1393,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 18
    argCount: 1
    argNames:
    - ' algoEnum'
    argTypes:
    - TSIGHashEnum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1394
      start: 1382
    functionDepth: 0
    functionLinenumber: 1382
    functionLinenumberEnd: 1394
    functionName: getTSIGAlgoName
    functionSourceFile: /src/pdns/pdns/dnsdistdist/misc.cc
    functionUses: 4
    functionsReached:
    - PDNSException
    linkageType: ''
    returnType: DNSName
    signature: DNSName getTSIGAlgoName(TSIGHashEnum& algoEnum)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1400,1
    - Dst: getpid
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1400,1
    - Dst: pdns::visit_directory
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1401,1
    - Dst: pdns::checked_stoi_into
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1404,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1404,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1405,1
    - Dst: getdtablecount
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1419,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1423
      start: 1396
    functionDepth: 0
    functionLinenumber: 1396
    functionLinenumberEnd: 1423
    functionName: getOpenFileDescriptors
    functionSourceFile: /src/pdns/pdns/dnsdistdist/misc.cc
    functionUses: 1
    functionsReached:
    - getdtablecount
    - std::to_string
    - pdns::visit_directory
    - std::string
    - pdns::checked_stoi_into
    - getpid
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t getOpenFileDescriptors(const std::string&)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: getpagesize
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1437,1
    - Dst: getrusage
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1440,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1444
      start: 1425
    functionDepth: 0
    functionLinenumber: 1425
    functionLinenumberEnd: 1444
    functionName: getRealMemoryUsage
    functionSourceFile: /src/pdns/pdns/dnsdistdist/misc.cc
    functionUses: 1
    functionsReached:
    - getpagesize
    - getrusage
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t getRealMemoryUsage(const std::string&)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: getline
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1456,1
    - Dst: boost::starts_with
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1457,1
    - Dst: std::stoull
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1458,1
    - Dst: string::substr
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1458,1
    - Dst: string::length
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1458,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1465
      start: 1447
    functionDepth: 0
    functionLinenumber: 1447
    functionLinenumberEnd: 1465
    functionName: getSpecialMemoryUsage
    functionSourceFile: /src/pdns/pdns/dnsdistdist/misc.cc
    functionUses: 0
    functionsReached:
    - boost::starts_with
    - getline
    - string::substr
    - std::stoull
    - string::length
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t getSpecialMemoryUsage(const std::string&)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getrusage
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1470,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1472
      start: 1467
    functionDepth: 0
    functionLinenumber: 1467
    functionLinenumberEnd: 1472
    functionName: getCPUTimeUser
    functionSourceFile: /src/pdns/pdns/dnsdistdist/misc.cc
    functionUses: 1
    functionsReached:
    - getrusage
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t getCPUTimeUser(const std::string&)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getrusage
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1477,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1479
      start: 1474
    functionDepth: 0
    functionLinenumber: 1474
    functionLinenumberEnd: 1479
    functionName: getCPUTimeSystem
    functionSourceFile: /src/pdns/pdns/dnsdistdist/misc.cc
    functionUses: 1
    functionsReached:
    - getrusage
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t getCPUTimeSystem(const std::string&)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<double>
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1490,1
    - Dst: static_cast<double>
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1490,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - ' first'
    - ' second'
    argTypes:
    - struct timespec
    - struct timespec
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1491
      start: 1481
    functionDepth: 0
    functionLinenumber: 1481
    functionLinenumberEnd: 1491
    functionName: DiffTime
    functionSourceFile: /src/pdns/pdns/dnsdistdist/misc.cc
    functionUses: 5
    functionsReached:
    - static_cast<double>
    linkageType: ''
    returnType: double
    signature: double DiffTime(const struct timespec& first, const struct timespec&
      second)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - ' first'
    - ' second'
    argTypes:
    - struct timeval
    - struct timeval
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1503
      start: 1493
    functionDepth: 0
    functionLinenumber: 1493
    functionLinenumberEnd: 1503
    functionName: DiffTime
    functionSourceFile: /src/pdns/pdns/dnsdistdist/misc.cc
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: double
    signature: double DiffTime(const struct timeval& first, const struct timeval&
      second)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: string::c_str
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1508,1
    - Dst: getpwnam
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1509,1
    - Dst: stoll
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1515,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1518,1
    - Dst: boost::format
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1518,1
    - Dst: str
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1518,1
    - Dst: pdns::min
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1521,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1521,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1522,1
    - Dst: boost::format
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1522,1
    - Dst: str
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1522,1
    - Dst: static_cast<uid_t>
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1525,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 1
    argNames:
    - str
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1532
      start: 1505
    functionDepth: 0
    functionLinenumber: 1505
    functionLinenumberEnd: 1532
    functionName: strToUID
    functionSourceFile: /src/pdns/pdns/dnsdistdist/misc.cc
    functionUses: 1
    functionsReached:
    - getpwnam
    - string::c_str
    - pdns::max
    - runtime_error
    - stoll
    - str
    - boost::format
    - static_cast<uid_t>
    - pdns::min
    linkageType: ''
    returnType: uid_t
    signature: uid_t strToUID(const string &str)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: string::c_str
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1537,1
    - Dst: getgrnam
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1538,1
    - Dst: stoll
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1544,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1547,1
    - Dst: boost::format
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1547,1
    - Dst: str
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1547,1
    - Dst: pdns::min
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1550,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1550,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1551,1
    - Dst: boost::format
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1551,1
    - Dst: str
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1551,1
    - Dst: static_cast<gid_t>
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1554,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 1
    argNames:
    - str
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1561
      start: 1534
    functionDepth: 0
    functionLinenumber: 1534
    functionLinenumberEnd: 1561
    functionName: strToGID
    functionSourceFile: /src/pdns/pdns/dnsdistdist/misc.cc
    functionUses: 2
    functionsReached:
    - string::c_str
    - pdns::max
    - static_cast<gid_t>
    - runtime_error
    - stoll
    - str
    - getgrnam
    - boost::format
    - pdns::min
    linkageType: ''
    returnType: gid_t
    signature: gid_t strToGID(const string &str)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1570
      start: 1563
    functionDepth: 0
    functionLinenumber: 1563
    functionLinenumberEnd: 1570
    functionName: isSettingThreadCPUAffinitySupported
    functionSourceFile: /src/pdns/pdns/dnsdistdist/misc.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool isSettingThreadCPUAffinitySupported()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: cpuset_create
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1577,1
    - Dst: cpuset_set
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1579,1
    - Dst: pthread_setaffinity_np
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1582,1
    - Dst: cpuset_size
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1583,1
    - Dst: CPU_ZERO
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1590,1
    - Dst: CPU_SET
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1592,1
    - Dst: pthread_setaffinity_np
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1595,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - tid
    - ' cpus'
    argTypes:
    - pthread_t
    - std::set<int>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1602
      start: 1572
    functionDepth: 0
    functionLinenumber: 1572
    functionLinenumberEnd: 1602
    functionName: mapThreadToCPUList
    functionSourceFile: /src/pdns/pdns/dnsdistdist/misc.cc
    functionUses: 1
    functionsReached:
    - pthread_setaffinity_np
    - cpuset_create
    - cpuset_size
    - cpuset_set
    - CPU_SET
    - CPU_ZERO
    linkageType: ''
    returnType: int
    signature: int mapThreadToCPUList([[maybe_unused]] pthread_t tid, [[maybe_unused]]
      const std::set<int>& cpus)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: std::getline
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1614,1
    - Dst: boost::trim_right_if
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1615,1
    - Dst: boost::is_any_of
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1615,1
    - Dst: boost::trim_left
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1616,1
    - Dst: string::find_first_of
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1618,1
    - Dst: string::resize
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1620,1
    - Dst: boost::starts_with
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1623,1
    - Dst: boost::starts_with
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1623,1
    - Dst: stringtok
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1625,1
    - Dst: vector::begin
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1626,1
    - Dst: vector::end
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1626,1
    - Dst: std::vector::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1628,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 21
    argCount: 1
    argNames:
    - ' resolvConfPath'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1638
      start: 1604
    functionDepth: 1
    functionLinenumber: 1604
    functionLinenumberEnd: 1638
    functionName: getResolvers
    functionSourceFile: /src/pdns/pdns/dnsdistdist/misc.cc
    functionUses: 2
    functionsReached:
    - vector::begin
    - string::resize
    - stringtok
    - boost::starts_with
    - std::vector::emplace_back
    - boost::trim_right_if
    - vector::end
    - boost::is_any_of
    - boost::trim_left
    - string::find_first_of
    - std::getline
    linkageType: ''
    returnType: std::vector<ComboAddress>
    signature: std::vector<ComboAddress> getResolvers(const std::string& resolvConfPath)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: fcntl
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1643,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - fd
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1652
      start: 1640
    functionDepth: 0
    functionLinenumber: 1640
    functionLinenumberEnd: 1652
    functionName: getPipeBufferSize
    functionSourceFile: /src/pdns/pdns/dnsdistdist/misc.cc
    functionUses: 6
    functionsReached:
    - fcntl
    linkageType: ''
    returnType: size_t
    signature: size_t getPipeBufferSize([[maybe_unused]] int fd)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1657,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1657,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1661,1
    - Dst: fcntl
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1662,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - fd
    - size
    argTypes:
    - int
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1671
      start: 1654
    functionDepth: 0
    functionLinenumber: 1654
    functionLinenumberEnd: 1671
    functionName: setPipeBufferSize
    functionSourceFile: /src/pdns/pdns/dnsdistdist/misc.cc
    functionUses: 6
    functionsReached:
    - pdns::max
    - static_cast<size_t>
    - fcntl
    - static_cast<int>
    linkageType: ''
    returnType: bool
    signature: bool setPipeBufferSize([[maybe_unused]] int fd, [[maybe_unused]] size_t
      size)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: isIPv4
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1675,1
    - Dst: reinterpret_cast<const uint8_t*>
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1677,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1679,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1681,1
    - Dst: isIPv6
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1683,1
    - Dst: reinterpret_cast<const uint8_t*>
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1685,1
    - Dst: std::stringstream::str
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1692,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1694,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1697,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 1
    argNames:
    - ' ip'
    argTypes:
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1698
      start: 1673
    functionDepth: 0
    functionLinenumber: 1673
    functionLinenumberEnd: 1698
    functionName: reverseNameFromIP
    functionSourceFile: /src/pdns/pdns/dnsdistdist/misc.cc
    functionUses: 1
    functionsReached:
    - isIPv6
    - reinterpret_cast<const uint8_t*>
    - std::to_string
    - std::runtime_error
    - DNSName
    - std::stringstream::str
    - isIPv4
    linkageType: ''
    returnType: DNSName
    signature: DNSName reverseNameFromIP(const ComboAddress& ip)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: islower
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1708,1
    - Dst: isupper
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1708,1
    - Dst: snprintf
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1713,1
    - Dst: ostringstream::str
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1720,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - ' in'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1721
      start: 1700
    functionDepth: 0
    functionLinenumber: 1700
    functionLinenumberEnd: 1721
    functionName: makeLuaString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/misc.cc
    functionUses: 2
    functionsReached:
    - islower
    - ostringstream::str
    - snprintf
    - isupper
    linkageType: ''
    returnType: std::string
    signature: std::string makeLuaString(const std::string& in)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: parseRFC1035CharString
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1725,1
    - Dst: parseSVCBValueListFromParsedRFC1035CharString
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1726,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - in
    - val
    argTypes:
    - std::string
    - vector<std::string>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1728
      start: 1723
    functionDepth: 0
    functionLinenumber: 1723
    functionLinenumberEnd: 1728
    functionName: parseSVCBValueList
    functionSourceFile: /src/pdns/pdns/dnsdistdist/misc.cc
    functionUses: 2
    functionsReached:
    - parseSVCBValueListFromParsedRFC1035CharString
    - parseRFC1035CharString
    linkageType: ''
    returnType: size_t
    signature: size_t parseSVCBValueList(const std::string &in, vector<std::string>
      &val)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1740,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1740,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1743,1
    - Dst: CRYPTO_memcmp
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1745,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1745,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1745,1
    - Dst: sodium_memcmp
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1748,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1748,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1748,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1750,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1751,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - ' a'
    - ' b'
    argTypes:
    - std::string
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1761
      start: 1738
    functionDepth: 0
    functionLinenumber: 1738
    functionLinenumberEnd: 1761
    functionName: constantTimeStringEquals
    functionSourceFile: /src/pdns/pdns/dnsdistdist/misc.cc
    functionUses: 8
    functionsReached:
    - c_str
    - CRYPTO_memcmp
    - size
    - sodium_memcmp
    linkageType: ''
    returnType: bool
    signature: bool constantTimeStringEquals(const std::string& a, const std::string&
      b)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: closedir
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1768,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - dir
    argTypes:
    - DIR*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1769
      start: 1767
    functionDepth: 0
    functionLinenumber: 1767
    functionLinenumberEnd: 1769
    functionName: operator()(DIR* dir) const noexcept
    functionSourceFile: /src/pdns/pdns/dnsdistdist/misc.cc
    functionUses: 0
    functionsReached:
    - closedir
    linkageType: ''
    returnType: void
    signature: void operator()(DIR* dir) const noexcept
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::unique_ptr<DIR, CloseDirDeleter>
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1774,1
    - Dst: opendir
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1774,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1774,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1777,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1777,1
    - Dst: readdir
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1783,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1783,1
    - Dst: std::string_view
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1785,1
    - Dst: strlen
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1785,1
    - Dst: visitor
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1786,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - ' directory'
    - ' visitor'
    argTypes:
    - std::string
    - std::function<bool(ino_t inodeNumber, const std::string_view& name)>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1790
      start: 1772
    functionDepth: 1
    functionLinenumber: 1772
    functionLinenumberEnd: 1790
    functionName: pdns::visit_directory
    functionSourceFile: /src/pdns/pdns/dnsdistdist/misc.cc
    functionUses: 7
    functionsReached:
    - std::unique_ptr<DIR, CloseDirDeleter>
    - auto::get
    - visitor
    - stringerror
    - std::string_view
    - opendir
    - strlen
    - readdir
    - c_str
    - std::string
    linkageType: ''
    returnType: std::optional<std::string>
    signature: std::optional<std::string> visit_directory(const std::string& directory,
      const std::function<bool(ino_t inodeNumber, const std::string_view& name)>&
      visitor)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: open
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1801,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1801,1
    - Dst: pdns::UniqueFilePtr
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1805,1
    - Dst: fdopen
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1805,1
    - Dst: close
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1808,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 4
    argNames:
    - ' filePath'
    - permissions
    - mustNotExist
    - appendIfExists
    argTypes:
    - std::string
    - mode_t
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1813
      start: 1792
    functionDepth: 0
    functionLinenumber: 1792
    functionLinenumberEnd: 1813
    functionName: pdns::openFileForWriting
    functionSourceFile: /src/pdns/pdns/dnsdistdist/misc.cc
    functionUses: 4
    functionsReached:
    - open
    - pdns::UniqueFilePtr
    - c_str
    - close
    - fdopen
    linkageType: ''
    returnType: UniqueFilePtr
    signature: UniqueFilePtr openFileForWriting(const std::string& filePath, mode_t
      permissions, bool mustNotExist, bool appendIfExists)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: closedir
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1768,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - dir
    argTypes:
    - DIR*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1769
      start: 1767
    functionDepth: 0
    functionLinenumber: 1767
    functionLinenumberEnd: 1769
    functionName: operator()(DIR* dir) const noexcept
    functionSourceFile: /src/pdns/pdns/dnsdistdist/misc.cc
    functionUses: 0
    functionsReached:
    - closedir
    linkageType: ''
    returnType: void
    signature: void operator()(DIR* dir) const noexcept
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::unique_ptr<DIR, CloseDirDeleter>
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1774,1
    - Dst: opendir
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1774,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1774,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1777,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1777,1
    - Dst: readdir
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1783,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1783,1
    - Dst: std::string_view
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1785,1
    - Dst: strlen
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1785,1
    - Dst: visitor
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1786,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - ' directory'
    - ' visitor'
    argTypes:
    - std::string
    - std::function<bool(ino_t inodeNumber, const std::string_view& name)>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1790
      start: 1772
    functionDepth: 1
    functionLinenumber: 1772
    functionLinenumberEnd: 1790
    functionName: pdns::visit_directory
    functionSourceFile: /src/pdns/pdns/dnsdistdist/misc.cc
    functionUses: 7
    functionsReached:
    - std::unique_ptr<DIR, CloseDirDeleter>
    - auto::get
    - visitor
    - stringerror
    - std::string_view
    - opendir
    - strlen
    - readdir
    - c_str
    - std::string
    linkageType: ''
    returnType: std::optional<std::string>
    signature: std::optional<std::string> visit_directory(const std::string& directory,
      const std::function<bool(ino_t inodeNumber, const std::string_view& name)>&
      visitor)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: open
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1801,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1801,1
    - Dst: pdns::UniqueFilePtr
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1805,1
    - Dst: fdopen
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1805,1
    - Dst: close
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1808,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 4
    argNames:
    - ' filePath'
    - permissions
    - mustNotExist
    - appendIfExists
    argTypes:
    - std::string
    - mode_t
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1813
      start: 1792
    functionDepth: 0
    functionLinenumber: 1792
    functionLinenumberEnd: 1813
    functionName: pdns::openFileForWriting
    functionSourceFile: /src/pdns/pdns/dnsdistdist/misc.cc
    functionUses: 4
    functionsReached:
    - open
    - pdns::UniqueFilePtr
    - c_str
    - close
    - fdopen
    linkageType: ''
    returnType: UniqueFilePtr
    signature: UniqueFilePtr openFileForWriting(const std::string& filePath, mode_t
      permissions, bool mustNotExist, bool appendIfExists)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strftime
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1821,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1821,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1821,1
    - Dst: std::string::c_str
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1821,1
    - Dst: localtime_r
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1821,1
    - Dst: snprintf
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1823,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1823,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1823,1
    - Dst: static_cast<long long>
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1823,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1824,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1824,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/misc.cc:1828,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 2
    argNames:
    - arg
    - ' buf'
    argTypes:
    - time_t
    - timebuf_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1829
      start: 1817
    functionDepth: 0
    functionLinenumber: 1817
    functionLinenumberEnd: 1829
    functionName: timestamp
    functionSourceFile: /src/pdns/pdns/dnsdistdist/misc.cc
    functionUses: 2
    functionsReached:
    - static_cast<size_t>
    - snprintf
    - localtime_r
    - std::string::c_str
    - static_cast<long long>
    - size
    - data
    - strftime
    linkageType: ''
    returnType: char
    signature: char * timestamp(time_t arg, timebuf_t& buf)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ipcrypt2.cc:45,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ipcrypt2.cc:46,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ipcrypt2.cc:46,1
    - Dst: std::make_unique<IPCryptPFX>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ipcrypt2.cc:48,1
    - Dst: ipcrypt_pfx_init
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ipcrypt2.cc:49,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ipcrypt2.cc:49,1
    - Dst: reinterpret_cast<const uint8_t*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ipcrypt2.cc:49,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ipcrypt2.cc:49,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ipcrypt2.cc:51,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ipcrypt2.cc:55,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ipcrypt2.cc:59,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 17
    argCount: 2
    argNames:
    - ' method'
    - ' key'
    argTypes:
    - IPCryptMethod
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 39
    functionDepth: 0
    functionLinenumber: 39
    functionLinenumberEnd: 61
    functionName: pdns::ipcrypt2::IPCrypt2::IPCrypt2
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-ipcrypt2.cc
    functionUses: 9
    functionsReached:
    - std::to_string
    - reinterpret_cast<const uint8_t*>
    - std::runtime_error
    - size
    - get
    - data
    - ipcrypt_pfx_init
    - std::make_unique<IPCryptPFX>
    linkageType: ''
    returnType: void
    signature: void IPCrypt2::IPCrypt2([[maybe_unused]] const IPCryptMethod& method,
      [[maybe_unused]] const std::string& key)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ipcrypt_pfx_deinit
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ipcrypt2.cc:69,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ipcrypt2.cc:69,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 63
    functionDepth: 0
    functionLinenumber: 63
    functionLinenumberEnd: 76
    functionName: IPCrypt2::~IPCrypt2()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-ipcrypt2.cc
    functionUses: 0
    functionsReached:
    - ipcrypt_pfx_deinit
    - get
    linkageType: ''
    returnType: void
    signature: void IPCrypt2::~IPCrypt2()
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: isIPv4
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ipcrypt2.cc:85,1
    - Dst: std::memcpy
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ipcrypt2.cc:86,1
    - Dst: std::memcpy
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ipcrypt2.cc:89,1
    - Dst: ipcrypt_sockaddr_to_ip16
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ipcrypt2.cc:91,1
    - Dst: reinterpret_cast<sockaddr*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ipcrypt2.cc:91,1
    - Dst: ipcrypt_pfx_encrypt_ip16
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ipcrypt2.cc:92,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ipcrypt2.cc:92,1
    - Dst: ipcrypt_ip16_to_sockaddr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ipcrypt2.cc:93,1
    - Dst: isIPv4
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ipcrypt2.cc:94,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ipcrypt2.cc:95,1
    - Dst: reinterpret_cast<sockaddr_in*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ipcrypt2.cc:95,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ipcrypt2.cc:98,1
    - Dst: reinterpret_cast<sockaddr_in6*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ipcrypt2.cc:98,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ipcrypt2.cc:102,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ipcrypt2.cc:106,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 23
    argCount: 1
    argNames:
    - ' address'
    argTypes:
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 78
    functionDepth: 0
    functionLinenumber: 78
    functionLinenumberEnd: 108
    functionName: pdns::ipcrypt2::IPCrypt2::encrypt
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-ipcrypt2.cc
    functionUses: 0
    functionsReached:
    - ipcrypt_sockaddr_to_ip16
    - ipcrypt_ip16_to_sockaddr
    - std::runtime_error
    - reinterpret_cast<sockaddr_in*>
    - reinterpret_cast<sockaddr_in6*>
    - ipcrypt_pfx_encrypt_ip16
    - get
    - isIPv4
    - reinterpret_cast<sockaddr*>
    - std::memcpy
    - ComboAddress
    linkageType: ''
    returnType: ComboAddress
    signature: ComboAddress IPCrypt2::encrypt([[maybe_unused]] const ComboAddress&
      address) const
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ipcrypt2.cc:45,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ipcrypt2.cc:46,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ipcrypt2.cc:46,1
    - Dst: std::make_unique<IPCryptPFX>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ipcrypt2.cc:48,1
    - Dst: ipcrypt_pfx_init
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ipcrypt2.cc:49,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ipcrypt2.cc:49,1
    - Dst: reinterpret_cast<const uint8_t*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ipcrypt2.cc:49,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ipcrypt2.cc:49,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ipcrypt2.cc:51,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ipcrypt2.cc:55,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ipcrypt2.cc:59,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 17
    argCount: 2
    argNames:
    - ' method'
    - ' key'
    argTypes:
    - IPCryptMethod
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 39
    functionDepth: 0
    functionLinenumber: 39
    functionLinenumberEnd: 61
    functionName: pdns::ipcrypt2::IPCrypt2::IPCrypt2
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-ipcrypt2.cc
    functionUses: 9
    functionsReached:
    - std::to_string
    - reinterpret_cast<const uint8_t*>
    - std::runtime_error
    - size
    - get
    - data
    - ipcrypt_pfx_init
    - std::make_unique<IPCryptPFX>
    linkageType: ''
    returnType: void
    signature: void IPCrypt2::IPCrypt2([[maybe_unused]] const IPCryptMethod& method,
      [[maybe_unused]] const std::string& key)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ipcrypt_pfx_deinit
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ipcrypt2.cc:69,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ipcrypt2.cc:69,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 63
    functionDepth: 0
    functionLinenumber: 63
    functionLinenumberEnd: 76
    functionName: IPCrypt2::~IPCrypt2()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-ipcrypt2.cc
    functionUses: 0
    functionsReached:
    - ipcrypt_pfx_deinit
    - get
    linkageType: ''
    returnType: void
    signature: void IPCrypt2::~IPCrypt2()
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: isIPv4
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ipcrypt2.cc:85,1
    - Dst: std::memcpy
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ipcrypt2.cc:86,1
    - Dst: std::memcpy
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ipcrypt2.cc:89,1
    - Dst: ipcrypt_sockaddr_to_ip16
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ipcrypt2.cc:91,1
    - Dst: reinterpret_cast<sockaddr*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ipcrypt2.cc:91,1
    - Dst: ipcrypt_pfx_encrypt_ip16
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ipcrypt2.cc:92,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ipcrypt2.cc:92,1
    - Dst: ipcrypt_ip16_to_sockaddr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ipcrypt2.cc:93,1
    - Dst: isIPv4
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ipcrypt2.cc:94,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ipcrypt2.cc:95,1
    - Dst: reinterpret_cast<sockaddr_in*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ipcrypt2.cc:95,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ipcrypt2.cc:98,1
    - Dst: reinterpret_cast<sockaddr_in6*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ipcrypt2.cc:98,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ipcrypt2.cc:102,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ipcrypt2.cc:106,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 23
    argCount: 1
    argNames:
    - ' address'
    argTypes:
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 78
    functionDepth: 0
    functionLinenumber: 78
    functionLinenumberEnd: 108
    functionName: pdns::ipcrypt2::IPCrypt2::encrypt
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-ipcrypt2.cc
    functionUses: 0
    functionsReached:
    - ipcrypt_sockaddr_to_ip16
    - ipcrypt_ip16_to_sockaddr
    - std::runtime_error
    - reinterpret_cast<sockaddr_in*>
    - reinterpret_cast<sockaddr_in6*>
    - ipcrypt_pfx_encrypt_ip16
    - get
    - isIPv4
    - reinterpret_cast<sockaddr*>
    - std::memcpy
    - ComboAddress
    linkageType: ''
    returnType: ComboAddress
    signature: ComboAddress IPCrypt2::encrypt([[maybe_unused]] const ComboAddress&
      address) const
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: cap_get_proc
      Src: /src/pdns/pdns/dnsdistdist/capabilities.cc:39,1
    - Dst: cap_clear
      Src: /src/pdns/pdns/dnsdistdist/capabilities.cc:41,1
    - Dst: std::set<std::string>::empty
      Src: /src/pdns/pdns/dnsdistdist/capabilities.cc:43,1
    - Dst: std::vector::reserve
      Src: /src/pdns/pdns/dnsdistdist/capabilities.cc:45,1
    - Dst: std::set<std::string>::size
      Src: /src/pdns/pdns/dnsdistdist/capabilities.cc:45,1
    - Dst: cap_from_name
      Src: /src/pdns/pdns/dnsdistdist/capabilities.cc:49,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/capabilities.cc:49,1
    - Dst: cap_free
      Src: /src/pdns/pdns/dnsdistdist/capabilities.cc:51,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/capabilities.cc:52,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/capabilities.cc:52,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/dnsdistdist/capabilities.cc:54,1
    - Dst: cap_set_flag
      Src: /src/pdns/pdns/dnsdistdist/capabilities.cc:57,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/dnsdistdist/capabilities.cc:57,1
    - Dst: std::vector::data
      Src: /src/pdns/pdns/dnsdistdist/capabilities.cc:57,1
    - Dst: cap_free
      Src: /src/pdns/pdns/dnsdistdist/capabilities.cc:58,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/capabilities.cc:59,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/capabilities.cc:59,1
    - Dst: cap_set_flag
      Src: /src/pdns/pdns/dnsdistdist/capabilities.cc:62,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/dnsdistdist/capabilities.cc:62,1
    - Dst: std::vector::data
      Src: /src/pdns/pdns/dnsdistdist/capabilities.cc:62,1
    - Dst: cap_free
      Src: /src/pdns/pdns/dnsdistdist/capabilities.cc:63,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/capabilities.cc:64,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/capabilities.cc:64,1
    - Dst: cap_set_proc
      Src: /src/pdns/pdns/dnsdistdist/capabilities.cc:68,1
    - Dst: cap_free
      Src: /src/pdns/pdns/dnsdistdist/capabilities.cc:69,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/capabilities.cc:73,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/capabilities.cc:73,1
    - Dst: cap_free
      Src: /src/pdns/pdns/dnsdistdist/capabilities.cc:76,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 31
    argCount: 1
    argNames:
    - capabilitiesToKeep
    argTypes:
    - std::set<std::string>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 36
    functionDepth: 0
    functionLinenumber: 36
    functionLinenumberEnd: 81
    functionName: dropCapabilities
    functionSourceFile: /src/pdns/pdns/dnsdistdist/capabilities.cc
    functionUses: 0
    functionsReached:
    - std::vector::push_back
    - std::vector::size
    - std::runtime_error
    - cap_get_proc
    - std::set<std::string>::empty
    - cap_clear
    - stringerror
    - cap_free
    - cap_from_name
    - cap_set_flag
    - std::vector::data
    - std::vector::reserve
    - cap_set_proc
    - c_str
    - std::set<std::string>::size
    linkageType: ''
    returnType: bool
    signature: bool dropCapabilities([[maybe_unused]] std::set<std::string> capabilitiesToKeep)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: prctl
      Src: /src/pdns/pdns/dnsdistdist/capabilities.cc:87,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 83
    functionDepth: 0
    functionLinenumber: 83
    functionLinenumberEnd: 95
    functionName: dropCapabilitiesAfterSwitchingIDs
    functionSourceFile: /src/pdns/pdns/dnsdistdist/capabilities.cc
    functionUses: 0
    functionsReached:
    - prctl
    linkageType: ''
    returnType: bool
    signature: bool dropCapabilitiesAfterSwitchingIDs()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: prctl
      Src: /src/pdns/pdns/dnsdistdist/capabilities.cc:101,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 97
    functionDepth: 0
    functionLinenumber: 97
    functionLinenumberEnd: 109
    functionName: keepCapabilitiesAfterSwitchingIDs
    functionSourceFile: /src/pdns/pdns/dnsdistdist/capabilities.cc
    functionUses: 0
    functionsReached:
    - prctl
    linkageType: ''
    returnType: bool
    signature: bool keepCapabilitiesAfterSwitchingIDs()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:30,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:31,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:34,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:34,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:35,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:35,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:35,1
    - Dst: std::min
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:41,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:41,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:41,1
    - Dst: reserve
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:42,1
    - Dst: std::string_view
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:45,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:45,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:45,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:45,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:47,1
    - Dst: PacketReader::xfrName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:48,1
    - Dst: PacketReader::xfrType
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:49,1
    - Dst: PacketReader::xfrType
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:50,1
    - Dst: PacketReader::xfrName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:55,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:56,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:56,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:56,1
    - Dst: PacketReader::xfrType
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:57,1
    - Dst: PacketReader::xfrType
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:58,1
    - Dst: PacketReader::xfr32BitInt
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:59,1
    - Dst: PacketReader::xfr16BitInt
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:60,1
    - Dst: PacketReader::getPosition
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:61,1
    - Dst: PacketReader::skip
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:62,1
    - Dst: push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:63,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:63,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:67,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:67,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:67,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:70,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 28
    argCount: 1
    argNames:
    - ' packet'
    argTypes:
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 28
    functionDepth: 0
    functionLinenumber: 28
    functionLinenumberEnd: 72
    functionName: dnsdist::DNSPacketOverlay::DNSPacketOverlay
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc
    functionUses: 0
    functionsReached:
    - ntohs
    - PacketReader::xfrName
    - std::string
    - static_cast<size_t>
    - PacketReader::skip
    - size
    - PacketReader::getPosition
    - std::runtime_error
    - push_back
    - std::string_view
    - reserve
    - reinterpret_cast<const char*>
    - PacketReader::xfr16BitInt
    - PacketReader::xfr32BitInt
    - memcpy
    - std::move
    - std::min
    - what
    - data
    - PacketReader::xfrType
    linkageType: ''
    returnType: void
    signature: void DNSPacketOverlay::DNSPacketOverlay(const std::string_view& packet)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:76,1
    - Dst: std::string_view
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:80,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:80,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:80,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:80,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:83,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:83,1
    - Dst: DNSName::DNSName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:85,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:86,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:87,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:88,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:89,1
    - Dst: PacketReader::getName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:97,1
    - Dst: PacketReader::get16BitInt
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:102,1
    - Dst: PacketReader::get16BitInt
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:103,1
    - Dst: PacketBuffer::reserve
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:106,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:106,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:109,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:110,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:111,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:112,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:113,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:114,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:115,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:116,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:117,1
    - Dst: PacketReader::getName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:121,1
    - Dst: PacketReader::get16BitInt
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:122,1
    - Dst: PacketReader::get16BitInt
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:123,1
    - Dst: PacketReader::getName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:131,1
    - Dst: PacketReader::getDnsrecordheader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:135,1
    - Dst: GenericDNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:138,1
    - Dst: std::unordered_set::count
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:139,1
    - Dst: PacketReader::getName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:140,1
    - Dst: GenericDNSPacketWriter::xfrName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:142,1
    - Dst: std::unordered_set::count
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:144,1
    - Dst: PacketReader::xfrBlob
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:145,1
    - Dst: GenericDNSPacketWriter::xfrBlob
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:146,1
    - Dst: PacketReader::xfrBlob
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:150,1
    - Dst: GenericDNSPacketWriter::xfrBlob
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:151,1
    - Dst: PacketReader::get16BitInt
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:154,1
    - Dst: PacketReader::getName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:155,1
    - Dst: GenericDNSPacketWriter::xfr16BitInt
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:156,1
    - Dst: GenericDNSPacketWriter::xfrName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:157,1
    - Dst: PacketReader::getName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:160,1
    - Dst: GenericDNSPacketWriter::xfrName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:161,1
    - Dst: PacketReader::getName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:162,1
    - Dst: GenericDNSPacketWriter::xfrName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:163,1
    - Dst: GenericDNSPacketWriter::xfr32BitInt
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:165,1
    - Dst: PacketReader::get32BitInt
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:165,1
    - Dst: GenericDNSPacketWriter::xfr32BitInt
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:167,1
    - Dst: PacketReader::get32BitInt
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:167,1
    - Dst: GenericDNSPacketWriter::xfr32BitInt
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:169,1
    - Dst: PacketReader::get32BitInt
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:169,1
    - Dst: GenericDNSPacketWriter::xfr32BitInt
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:171,1
    - Dst: PacketReader::get32BitInt
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:171,1
    - Dst: GenericDNSPacketWriter::xfr32BitInt
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:173,1
    - Dst: PacketReader::get32BitInt
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:173,1
    - Dst: GenericDNSPacketWriter::xfr16BitInt
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:177,1
    - Dst: PacketReader::get16BitInt
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:177,1
    - Dst: GenericDNSPacketWriter::xfr16BitInt
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:179,1
    - Dst: PacketReader::get16BitInt
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:179,1
    - Dst: GenericDNSPacketWriter::xfr16BitInt
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:181,1
    - Dst: PacketReader::get16BitInt
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:181,1
    - Dst: PacketReader::getName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:182,1
    - Dst: GenericDNSPacketWriter::xfrName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:187,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:195,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:196,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 71
    argCount: 3
    argNames:
    - ' initialPacket'
    - ' from'
    - ' to'
    argTypes:
    - PacketBuffer
    - DNSName
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 199
      start: 74
    functionDepth: 1
    functionLinenumber: 74
    functionLinenumberEnd: 199
    functionName: dnsdist::changeNameInDNSPacket
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc
    functionUses: 3
    functionsReached:
    - PacketReader::getName
    - ntohs
    - GenericDNSPacketWriter::getHeader
    - GenericDNSPacketWriter::xfr32BitInt
    - PacketReader::xfrBlob
    - GenericDNSPacketWriter::startRecord
    - size
    - PacketReader::get16BitInt
    - PacketReader::get32BitInt
    - std::unordered_set::count
    - std::string_view
    - reinterpret_cast<const char*>
    - GenericDNSPacketWriter::xfrBlob
    - GenericDNSPacketWriter::xfrName
    - memcpy
    - std::move
    - PacketBuffer::reserve
    - GenericDNSPacketWriter::commit
    - PacketReader::getDnsrecordheader
    - data
    - DNSName::DNSName
    - GenericDNSPacketWriter::xfr16BitInt
    linkageType: ''
    returnType: bool
    signature: bool changeNameInDNSPacket(PacketBuffer& initialPacket, const DNSName&
      from, const DNSName& to)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:205,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:206,1
    - Dst: dnsdist::PacketMangling::editDNSHeaderFromRawPacket
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:209,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:209,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - ' packet'
    - ' editFunction'
    argTypes:
    - PacketBuffer
    - std::function<bool(dnsheader& header)>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 210
      start: 203
    functionDepth: 1
    functionLinenumber: 203
    functionLinenumberEnd: 210
    functionName: dnsdist::PacketMangling::editDNSHeaderFromPacket
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc
    functionUses: 22
    functionsReached:
    - data
    - dnsdist::PacketMangling::editDNSHeaderFromRawPacket
    - size
    - std::runtime_error
    linkageType: ''
    returnType: bool
    signature: bool editDNSHeaderFromPacket(PacketBuffer& packet, const std::function<bool(dnsheader&
      header)>& editFunction)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dnsheader_aligned::isMemoryAligned
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:214,1
    - Dst: reinterpret_cast<dnsheader*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:216,1
    - Dst: editFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:217,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:221,1
    - Dst: editFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:222,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:225,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - packet
    - ' editFunction'
    argTypes:
    - void*
    - std::function<bool(dnsheader& header)>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 227
      start: 212
    functionDepth: 0
    functionLinenumber: 212
    functionLinenumberEnd: 227
    functionName: dnsdist::PacketMangling::editDNSHeaderFromRawPacket
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc
    functionUses: 2
    functionsReached:
    - editFunction
    - dnsheader_aligned::isMemoryAligned
    - reinterpret_cast<dnsheader*>
    - memcpy
    linkageType: ''
    returnType: bool
    signature: bool editDNSHeaderFromRawPacket(void* packet, const std::function<bool(dnsheader&
      header)>& editFunction)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:233,1
    - Dst: count
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:233,1
    - Dst: editDNSPacketTTL
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:248,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:248,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:248,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:248,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 16
    argCount: 4
    argNames:
    - ' packet'
    - minimumValue
    - maximumValue
    - ' types'
    argTypes:
    - PacketBuffer
    - uint32_t
    - uint32_t
    - std::unordered_set<QType>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 249
      start: 229
    functionDepth: 0
    functionLinenumber: 229
    functionLinenumberEnd: 249
    functionName: dnsdist::PacketMangling::restrictDNSPacketTTLs
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc
    functionUses: 3
    functionsReached:
    - reinterpret_cast<char*>
    - count
    - size
    - editDNSPacketTTL
    - data
    - empty
    linkageType: ''
    returnType: void
    signature: void restrictDNSPacketTTLs(PacketBuffer& packet, uint32_t minimumValue,
      uint32_t maximumValue, const std::unordered_set<QType>& types)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:205,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:206,1
    - Dst: dnsdist::PacketMangling::editDNSHeaderFromRawPacket
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:209,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:209,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - ' packet'
    - ' editFunction'
    argTypes:
    - PacketBuffer
    - std::function<bool(dnsheader& header)>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 210
      start: 203
    functionDepth: 1
    functionLinenumber: 203
    functionLinenumberEnd: 210
    functionName: dnsdist::PacketMangling::editDNSHeaderFromPacket
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc
    functionUses: 22
    functionsReached:
    - data
    - dnsdist::PacketMangling::editDNSHeaderFromRawPacket
    - size
    - std::runtime_error
    linkageType: ''
    returnType: bool
    signature: bool editDNSHeaderFromPacket(PacketBuffer& packet, const std::function<bool(dnsheader&
      header)>& editFunction)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dnsheader_aligned::isMemoryAligned
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:214,1
    - Dst: reinterpret_cast<dnsheader*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:216,1
    - Dst: editFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:217,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:221,1
    - Dst: editFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:222,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:225,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - packet
    - ' editFunction'
    argTypes:
    - void*
    - std::function<bool(dnsheader& header)>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 227
      start: 212
    functionDepth: 0
    functionLinenumber: 212
    functionLinenumberEnd: 227
    functionName: dnsdist::PacketMangling::editDNSHeaderFromRawPacket
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc
    functionUses: 3
    functionsReached:
    - editFunction
    - dnsheader_aligned::isMemoryAligned
    - reinterpret_cast<dnsheader*>
    - memcpy
    linkageType: ''
    returnType: bool
    signature: bool editDNSHeaderFromRawPacket(void* packet, const std::function<bool(dnsheader&
      header)>& editFunction)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:233,1
    - Dst: count
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:233,1
    - Dst: editDNSPacketTTL
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:248,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:248,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:248,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:248,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 16
    argCount: 4
    argNames:
    - ' packet'
    - minimumValue
    - maximumValue
    - ' types'
    argTypes:
    - PacketBuffer
    - uint32_t
    - uint32_t
    - std::unordered_set<QType>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 249
      start: 229
    functionDepth: 0
    functionLinenumber: 229
    functionLinenumberEnd: 249
    functionName: dnsdist::PacketMangling::restrictDNSPacketTTLs
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc
    functionUses: 3
    functionsReached:
    - reinterpret_cast<char*>
    - count
    - size
    - editDNSPacketTTL
    - data
    - empty
    linkageType: ''
    returnType: void
    signature: void restrictDNSPacketTTLs(PacketBuffer& packet, uint32_t minimumValue,
      uint32_t maximumValue, const std::unordered_set<QType>& types)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: makeComboAddressFromRaw
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:262,1
    - Dst: substr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:262,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - ' packet'
    - ' record'
    argTypes:
    - std::string_view
    - DNSPacketOverlay::Record
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 263
      start: 255
    functionDepth: 0
    functionLinenumber: 255
    functionLinenumberEnd: 263
    functionName: dnsdist::RecordParsers::parseARecord
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc
    functionUses: 0
    functionsReached:
    - substr
    - makeComboAddressFromRaw
    linkageType: ''
    returnType: std::optional<ComboAddress>
    signature: std::optional<ComboAddress> parseARecord(const std::string_view& packet,
      const DNSPacketOverlay::Record& record)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: makeComboAddressFromRaw
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:272,1
    - Dst: substr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:272,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - ' packet'
    - ' record'
    argTypes:
    - std::string_view
    - DNSPacketOverlay::Record
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 273
      start: 265
    functionDepth: 0
    functionLinenumber: 265
    functionLinenumberEnd: 273
    functionName: dnsdist::RecordParsers::parseAAAARecord
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc
    functionUses: 0
    functionsReached:
    - substr
    - makeComboAddressFromRaw
    linkageType: ''
    returnType: std::optional<ComboAddress>
    signature: std::optional<ComboAddress> parseAAAARecord(const std::string_view&
      packet, const DNSPacketOverlay::Record& record)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: makeComboAddressFromRaw
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:279,1
    - Dst: substr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:279,1
    - Dst: makeComboAddressFromRaw
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:284,1
    - Dst: substr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:284,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 2
    argNames:
    - ' packet'
    - ' record'
    argTypes:
    - std::string_view
    - DNSPacketOverlay::Record
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 288
      start: 275
    functionDepth: 0
    functionLinenumber: 275
    functionLinenumberEnd: 288
    functionName: dnsdist::RecordParsers::parseAddressRecord
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc
    functionUses: 0
    functionsReached:
    - substr
    - makeComboAddressFromRaw
    linkageType: ''
    returnType: std::optional<ComboAddress>
    signature: std::optional<ComboAddress> parseAddressRecord(const std::string_view&
      packet, const DNSPacketOverlay::Record& record)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:297,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:297,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - ' packet'
    - ' record'
    argTypes:
    - std::string_view
    - DNSPacketOverlay::Record
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 298
      start: 290
    functionDepth: 0
    functionLinenumber: 290
    functionLinenumberEnd: 298
    functionName: dnsdist::RecordParsers::parseCNAMERecord
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc
    functionUses: 0
    functionsReached:
    - DNSName
    - data
    linkageType: ''
    returnType: std::optional<DNSName>
    signature: std::optional<DNSName> parseCNAMERecord(const std::string_view& packet,
      const DNSPacketOverlay::Record& record)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: makeComboAddressFromRaw
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:262,1
    - Dst: substr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:262,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - ' packet'
    - ' record'
    argTypes:
    - std::string_view
    - DNSPacketOverlay::Record
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 263
      start: 255
    functionDepth: 0
    functionLinenumber: 255
    functionLinenumberEnd: 263
    functionName: dnsdist::RecordParsers::parseARecord
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc
    functionUses: 0
    functionsReached:
    - substr
    - makeComboAddressFromRaw
    linkageType: ''
    returnType: std::optional<ComboAddress>
    signature: std::optional<ComboAddress> parseARecord(const std::string_view& packet,
      const DNSPacketOverlay::Record& record)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: makeComboAddressFromRaw
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:272,1
    - Dst: substr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:272,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - ' packet'
    - ' record'
    argTypes:
    - std::string_view
    - DNSPacketOverlay::Record
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 273
      start: 265
    functionDepth: 0
    functionLinenumber: 265
    functionLinenumberEnd: 273
    functionName: dnsdist::RecordParsers::parseAAAARecord
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc
    functionUses: 0
    functionsReached:
    - substr
    - makeComboAddressFromRaw
    linkageType: ''
    returnType: std::optional<ComboAddress>
    signature: std::optional<ComboAddress> parseAAAARecord(const std::string_view&
      packet, const DNSPacketOverlay::Record& record)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: makeComboAddressFromRaw
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:279,1
    - Dst: substr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:279,1
    - Dst: makeComboAddressFromRaw
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:284,1
    - Dst: substr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:284,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 2
    argNames:
    - ' packet'
    - ' record'
    argTypes:
    - std::string_view
    - DNSPacketOverlay::Record
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 288
      start: 275
    functionDepth: 0
    functionLinenumber: 275
    functionLinenumberEnd: 288
    functionName: dnsdist::RecordParsers::parseAddressRecord
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc
    functionUses: 0
    functionsReached:
    - substr
    - makeComboAddressFromRaw
    linkageType: ''
    returnType: std::optional<ComboAddress>
    signature: std::optional<ComboAddress> parseAddressRecord(const std::string_view&
      packet, const DNSPacketOverlay::Record& record)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:297,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:297,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - ' packet'
    - ' record'
    argTypes:
    - std::string_view
    - DNSPacketOverlay::Record
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 298
      start: 290
    functionDepth: 0
    functionLinenumber: 290
    functionLinenumberEnd: 298
    functionName: dnsdist::RecordParsers::parseCNAMERecord
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc
    functionUses: 0
    functionsReached:
    - DNSName
    - data
    linkageType: ''
    returnType: std::optional<DNSName>
    signature: std::optional<DNSName> parseCNAMERecord(const std::string_view& packet,
      const DNSPacketOverlay::Record& record)
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 2
    argNames:
    - ' dnsheader'
    - ' config'
    argTypes:
    - dnsheader
    - ResponseConfig
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 318
      start: 301
    functionDepth: 0
    functionLinenumber: 301
    functionLinenumberEnd: 318
    functionName: dnsdist::setResponseHeadersFromConfig
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setResponseHeadersFromConfig(dnsheader& dnsheader, const ResponseConfig&
      config)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:30,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:31,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:34,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:34,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:35,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:35,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:35,1
    - Dst: std::min
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:41,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:41,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:41,1
    - Dst: reserve
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:42,1
    - Dst: std::string_view
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:45,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:45,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:45,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:45,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:47,1
    - Dst: PacketReader::xfrName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:48,1
    - Dst: PacketReader::xfrType
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:49,1
    - Dst: PacketReader::xfrType
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:50,1
    - Dst: PacketReader::xfrName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:55,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:56,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:56,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:56,1
    - Dst: PacketReader::xfrType
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:57,1
    - Dst: PacketReader::xfrType
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:58,1
    - Dst: PacketReader::xfr32BitInt
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:59,1
    - Dst: PacketReader::xfr16BitInt
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:60,1
    - Dst: PacketReader::getPosition
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:61,1
    - Dst: PacketReader::skip
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:62,1
    - Dst: push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:63,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:63,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:67,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:67,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:67,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:70,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 28
    argCount: 1
    argNames:
    - ' packet'
    argTypes:
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 28
    functionDepth: 0
    functionLinenumber: 28
    functionLinenumberEnd: 72
    functionName: dnsdist::DNSPacketOverlay::DNSPacketOverlay
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc
    functionUses: 0
    functionsReached:
    - ntohs
    - PacketReader::xfrName
    - std::string
    - static_cast<size_t>
    - PacketReader::skip
    - size
    - PacketReader::getPosition
    - std::runtime_error
    - push_back
    - std::string_view
    - reserve
    - reinterpret_cast<const char*>
    - PacketReader::xfr16BitInt
    - PacketReader::xfr32BitInt
    - memcpy
    - std::move
    - std::min
    - what
    - data
    - PacketReader::xfrType
    linkageType: ''
    returnType: void
    signature: void DNSPacketOverlay::DNSPacketOverlay(const std::string_view& packet)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:76,1
    - Dst: std::string_view
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:80,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:80,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:80,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:80,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:83,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:83,1
    - Dst: DNSName::DNSName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:85,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:86,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:87,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:88,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:89,1
    - Dst: PacketReader::getName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:97,1
    - Dst: PacketReader::get16BitInt
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:102,1
    - Dst: PacketReader::get16BitInt
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:103,1
    - Dst: PacketBuffer::reserve
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:106,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:106,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:109,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:110,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:111,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:112,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:113,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:114,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:115,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:116,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:117,1
    - Dst: PacketReader::getName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:121,1
    - Dst: PacketReader::get16BitInt
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:122,1
    - Dst: PacketReader::get16BitInt
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:123,1
    - Dst: PacketReader::getName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:131,1
    - Dst: PacketReader::getDnsrecordheader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:135,1
    - Dst: GenericDNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:138,1
    - Dst: std::unordered_set::count
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:139,1
    - Dst: PacketReader::getName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:140,1
    - Dst: GenericDNSPacketWriter::xfrName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:142,1
    - Dst: std::unordered_set::count
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:144,1
    - Dst: PacketReader::xfrBlob
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:145,1
    - Dst: GenericDNSPacketWriter::xfrBlob
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:146,1
    - Dst: PacketReader::xfrBlob
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:150,1
    - Dst: GenericDNSPacketWriter::xfrBlob
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:151,1
    - Dst: PacketReader::get16BitInt
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:154,1
    - Dst: PacketReader::getName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:155,1
    - Dst: GenericDNSPacketWriter::xfr16BitInt
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:156,1
    - Dst: GenericDNSPacketWriter::xfrName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:157,1
    - Dst: PacketReader::getName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:160,1
    - Dst: GenericDNSPacketWriter::xfrName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:161,1
    - Dst: PacketReader::getName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:162,1
    - Dst: GenericDNSPacketWriter::xfrName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:163,1
    - Dst: GenericDNSPacketWriter::xfr32BitInt
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:165,1
    - Dst: PacketReader::get32BitInt
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:165,1
    - Dst: GenericDNSPacketWriter::xfr32BitInt
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:167,1
    - Dst: PacketReader::get32BitInt
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:167,1
    - Dst: GenericDNSPacketWriter::xfr32BitInt
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:169,1
    - Dst: PacketReader::get32BitInt
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:169,1
    - Dst: GenericDNSPacketWriter::xfr32BitInt
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:171,1
    - Dst: PacketReader::get32BitInt
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:171,1
    - Dst: GenericDNSPacketWriter::xfr32BitInt
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:173,1
    - Dst: PacketReader::get32BitInt
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:173,1
    - Dst: GenericDNSPacketWriter::xfr16BitInt
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:177,1
    - Dst: PacketReader::get16BitInt
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:177,1
    - Dst: GenericDNSPacketWriter::xfr16BitInt
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:179,1
    - Dst: PacketReader::get16BitInt
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:179,1
    - Dst: GenericDNSPacketWriter::xfr16BitInt
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:181,1
    - Dst: PacketReader::get16BitInt
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:181,1
    - Dst: PacketReader::getName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:182,1
    - Dst: GenericDNSPacketWriter::xfrName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:187,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:195,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:196,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 71
    argCount: 3
    argNames:
    - ' initialPacket'
    - ' from'
    - ' to'
    argTypes:
    - PacketBuffer
    - DNSName
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 199
      start: 74
    functionDepth: 1
    functionLinenumber: 74
    functionLinenumberEnd: 199
    functionName: dnsdist::changeNameInDNSPacket
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc
    functionUses: 3
    functionsReached:
    - PacketReader::getName
    - ntohs
    - GenericDNSPacketWriter::getHeader
    - GenericDNSPacketWriter::xfr32BitInt
    - PacketReader::xfrBlob
    - GenericDNSPacketWriter::startRecord
    - size
    - PacketReader::get16BitInt
    - PacketReader::get32BitInt
    - std::unordered_set::count
    - std::string_view
    - reinterpret_cast<const char*>
    - GenericDNSPacketWriter::xfrBlob
    - GenericDNSPacketWriter::xfrName
    - memcpy
    - std::move
    - PacketBuffer::reserve
    - GenericDNSPacketWriter::commit
    - PacketReader::getDnsrecordheader
    - data
    - DNSName::DNSName
    - GenericDNSPacketWriter::xfr16BitInt
    linkageType: ''
    returnType: bool
    signature: bool changeNameInDNSPacket(PacketBuffer& initialPacket, const DNSName&
      from, const DNSName& to)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:205,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:206,1
    - Dst: dnsdist::PacketMangling::editDNSHeaderFromRawPacket
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:209,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:209,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - ' packet'
    - ' editFunction'
    argTypes:
    - PacketBuffer
    - std::function<bool(dnsheader& header)>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 210
      start: 203
    functionDepth: 1
    functionLinenumber: 203
    functionLinenumberEnd: 210
    functionName: dnsdist::PacketMangling::editDNSHeaderFromPacket
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc
    functionUses: 22
    functionsReached:
    - data
    - dnsdist::PacketMangling::editDNSHeaderFromRawPacket
    - size
    - std::runtime_error
    linkageType: ''
    returnType: bool
    signature: bool editDNSHeaderFromPacket(PacketBuffer& packet, const std::function<bool(dnsheader&
      header)>& editFunction)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dnsheader_aligned::isMemoryAligned
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:214,1
    - Dst: reinterpret_cast<dnsheader*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:216,1
    - Dst: editFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:217,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:221,1
    - Dst: editFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:222,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:225,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - packet
    - ' editFunction'
    argTypes:
    - void*
    - std::function<bool(dnsheader& header)>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 227
      start: 212
    functionDepth: 0
    functionLinenumber: 212
    functionLinenumberEnd: 227
    functionName: dnsdist::PacketMangling::editDNSHeaderFromRawPacket
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc
    functionUses: 4
    functionsReached:
    - editFunction
    - dnsheader_aligned::isMemoryAligned
    - reinterpret_cast<dnsheader*>
    - memcpy
    linkageType: ''
    returnType: bool
    signature: bool editDNSHeaderFromRawPacket(void* packet, const std::function<bool(dnsheader&
      header)>& editFunction)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:233,1
    - Dst: count
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:233,1
    - Dst: editDNSPacketTTL
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:248,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:248,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:248,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:248,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 16
    argCount: 4
    argNames:
    - ' packet'
    - minimumValue
    - maximumValue
    - ' types'
    argTypes:
    - PacketBuffer
    - uint32_t
    - uint32_t
    - std::unordered_set<QType>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 249
      start: 229
    functionDepth: 0
    functionLinenumber: 229
    functionLinenumberEnd: 249
    functionName: dnsdist::PacketMangling::restrictDNSPacketTTLs
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc
    functionUses: 3
    functionsReached:
    - reinterpret_cast<char*>
    - count
    - size
    - editDNSPacketTTL
    - data
    - empty
    linkageType: ''
    returnType: void
    signature: void restrictDNSPacketTTLs(PacketBuffer& packet, uint32_t minimumValue,
      uint32_t maximumValue, const std::unordered_set<QType>& types)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:205,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:206,1
    - Dst: dnsdist::PacketMangling::editDNSHeaderFromRawPacket
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:209,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:209,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - ' packet'
    - ' editFunction'
    argTypes:
    - PacketBuffer
    - std::function<bool(dnsheader& header)>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 210
      start: 203
    functionDepth: 1
    functionLinenumber: 203
    functionLinenumberEnd: 210
    functionName: dnsdist::PacketMangling::editDNSHeaderFromPacket
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc
    functionUses: 22
    functionsReached:
    - data
    - dnsdist::PacketMangling::editDNSHeaderFromRawPacket
    - size
    - std::runtime_error
    linkageType: ''
    returnType: bool
    signature: bool editDNSHeaderFromPacket(PacketBuffer& packet, const std::function<bool(dnsheader&
      header)>& editFunction)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dnsheader_aligned::isMemoryAligned
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:214,1
    - Dst: reinterpret_cast<dnsheader*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:216,1
    - Dst: editFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:217,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:221,1
    - Dst: editFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:222,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:225,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - packet
    - ' editFunction'
    argTypes:
    - void*
    - std::function<bool(dnsheader& header)>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 227
      start: 212
    functionDepth: 0
    functionLinenumber: 212
    functionLinenumberEnd: 227
    functionName: dnsdist::PacketMangling::editDNSHeaderFromRawPacket
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc
    functionUses: 5
    functionsReached:
    - editFunction
    - dnsheader_aligned::isMemoryAligned
    - reinterpret_cast<dnsheader*>
    - memcpy
    linkageType: ''
    returnType: bool
    signature: bool editDNSHeaderFromRawPacket(void* packet, const std::function<bool(dnsheader&
      header)>& editFunction)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:233,1
    - Dst: count
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:233,1
    - Dst: editDNSPacketTTL
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:248,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:248,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:248,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:248,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 16
    argCount: 4
    argNames:
    - ' packet'
    - minimumValue
    - maximumValue
    - ' types'
    argTypes:
    - PacketBuffer
    - uint32_t
    - uint32_t
    - std::unordered_set<QType>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 249
      start: 229
    functionDepth: 0
    functionLinenumber: 229
    functionLinenumberEnd: 249
    functionName: dnsdist::PacketMangling::restrictDNSPacketTTLs
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc
    functionUses: 3
    functionsReached:
    - reinterpret_cast<char*>
    - count
    - size
    - editDNSPacketTTL
    - data
    - empty
    linkageType: ''
    returnType: void
    signature: void restrictDNSPacketTTLs(PacketBuffer& packet, uint32_t minimumValue,
      uint32_t maximumValue, const std::unordered_set<QType>& types)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: makeComboAddressFromRaw
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:262,1
    - Dst: substr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:262,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - ' packet'
    - ' record'
    argTypes:
    - std::string_view
    - DNSPacketOverlay::Record
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 263
      start: 255
    functionDepth: 0
    functionLinenumber: 255
    functionLinenumberEnd: 263
    functionName: dnsdist::RecordParsers::parseARecord
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc
    functionUses: 0
    functionsReached:
    - substr
    - makeComboAddressFromRaw
    linkageType: ''
    returnType: std::optional<ComboAddress>
    signature: std::optional<ComboAddress> parseARecord(const std::string_view& packet,
      const DNSPacketOverlay::Record& record)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: makeComboAddressFromRaw
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:272,1
    - Dst: substr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:272,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - ' packet'
    - ' record'
    argTypes:
    - std::string_view
    - DNSPacketOverlay::Record
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 273
      start: 265
    functionDepth: 0
    functionLinenumber: 265
    functionLinenumberEnd: 273
    functionName: dnsdist::RecordParsers::parseAAAARecord
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc
    functionUses: 0
    functionsReached:
    - substr
    - makeComboAddressFromRaw
    linkageType: ''
    returnType: std::optional<ComboAddress>
    signature: std::optional<ComboAddress> parseAAAARecord(const std::string_view&
      packet, const DNSPacketOverlay::Record& record)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: makeComboAddressFromRaw
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:279,1
    - Dst: substr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:279,1
    - Dst: makeComboAddressFromRaw
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:284,1
    - Dst: substr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:284,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 2
    argNames:
    - ' packet'
    - ' record'
    argTypes:
    - std::string_view
    - DNSPacketOverlay::Record
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 288
      start: 275
    functionDepth: 0
    functionLinenumber: 275
    functionLinenumberEnd: 288
    functionName: dnsdist::RecordParsers::parseAddressRecord
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc
    functionUses: 0
    functionsReached:
    - substr
    - makeComboAddressFromRaw
    linkageType: ''
    returnType: std::optional<ComboAddress>
    signature: std::optional<ComboAddress> parseAddressRecord(const std::string_view&
      packet, const DNSPacketOverlay::Record& record)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:297,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:297,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - ' packet'
    - ' record'
    argTypes:
    - std::string_view
    - DNSPacketOverlay::Record
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 298
      start: 290
    functionDepth: 0
    functionLinenumber: 290
    functionLinenumberEnd: 298
    functionName: dnsdist::RecordParsers::parseCNAMERecord
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc
    functionUses: 0
    functionsReached:
    - DNSName
    - data
    linkageType: ''
    returnType: std::optional<DNSName>
    signature: std::optional<DNSName> parseCNAMERecord(const std::string_view& packet,
      const DNSPacketOverlay::Record& record)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: makeComboAddressFromRaw
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:262,1
    - Dst: substr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:262,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - ' packet'
    - ' record'
    argTypes:
    - std::string_view
    - DNSPacketOverlay::Record
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 263
      start: 255
    functionDepth: 0
    functionLinenumber: 255
    functionLinenumberEnd: 263
    functionName: dnsdist::RecordParsers::parseARecord
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc
    functionUses: 0
    functionsReached:
    - substr
    - makeComboAddressFromRaw
    linkageType: ''
    returnType: std::optional<ComboAddress>
    signature: std::optional<ComboAddress> parseARecord(const std::string_view& packet,
      const DNSPacketOverlay::Record& record)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: makeComboAddressFromRaw
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:272,1
    - Dst: substr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:272,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - ' packet'
    - ' record'
    argTypes:
    - std::string_view
    - DNSPacketOverlay::Record
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 273
      start: 265
    functionDepth: 0
    functionLinenumber: 265
    functionLinenumberEnd: 273
    functionName: dnsdist::RecordParsers::parseAAAARecord
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc
    functionUses: 0
    functionsReached:
    - substr
    - makeComboAddressFromRaw
    linkageType: ''
    returnType: std::optional<ComboAddress>
    signature: std::optional<ComboAddress> parseAAAARecord(const std::string_view&
      packet, const DNSPacketOverlay::Record& record)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: makeComboAddressFromRaw
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:279,1
    - Dst: substr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:279,1
    - Dst: makeComboAddressFromRaw
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:284,1
    - Dst: substr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:284,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 2
    argNames:
    - ' packet'
    - ' record'
    argTypes:
    - std::string_view
    - DNSPacketOverlay::Record
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 288
      start: 275
    functionDepth: 0
    functionLinenumber: 275
    functionLinenumberEnd: 288
    functionName: dnsdist::RecordParsers::parseAddressRecord
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc
    functionUses: 0
    functionsReached:
    - substr
    - makeComboAddressFromRaw
    linkageType: ''
    returnType: std::optional<ComboAddress>
    signature: std::optional<ComboAddress> parseAddressRecord(const std::string_view&
      packet, const DNSPacketOverlay::Record& record)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:297,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc:297,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - ' packet'
    - ' record'
    argTypes:
    - std::string_view
    - DNSPacketOverlay::Record
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 298
      start: 290
    functionDepth: 0
    functionLinenumber: 290
    functionLinenumberEnd: 298
    functionName: dnsdist::RecordParsers::parseCNAMERecord
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc
    functionUses: 0
    functionsReached:
    - DNSName
    - data
    linkageType: ''
    returnType: std::optional<DNSName>
    signature: std::optional<DNSName> parseCNAMERecord(const std::string_view& packet,
      const DNSPacketOverlay::Record& record)
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 2
    argNames:
    - ' dnsheader'
    - ' config'
    argTypes:
    - dnsheader
    - ResponseConfig
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 318
      start: 301
    functionDepth: 0
    functionLinenumber: 301
    functionLinenumberEnd: 318
    functionName: dnsdist::setResponseHeadersFromConfig
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setResponseHeadersFromConfig(dnsheader& dnsheader, const ResponseConfig&
      config)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PKCS5_PBKDF2_HMAC_SHA1
      Src: /src/pdns/pdns/dnsdistdist/ipcipher.cc:18,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/ipcipher.cc:18,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/ipcipher.cc:18,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/ipcipher.cc:20,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ' password'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 21
      start: 13
    functionDepth: 0
    functionLinenumber: 13
    functionLinenumberEnd: 21
    functionName: makeIPCipherKey
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ipcipher.cc
    functionUses: 2
    functionsReached:
    - c_str
    - std::string
    - PKCS5_PBKDF2_HMAC_SHA1
    - size
    linkageType: ''
    returnType: std::string
    signature: std::string makeIPCipherKey(const std::string& password)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/ipcipher.cc:25,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/ipcipher.cc:26,1
    - Dst: ipcrypt_encrypt
      Src: /src/pdns/pdns/dnsdistdist/ipcipher.cc:32,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/ipcipher.cc:34,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - ' ca'
    - ' key'
    argTypes:
    - ComboAddress
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 23
    functionDepth: 0
    functionLinenumber: 23
    functionLinenumberEnd: 37
    functionName: encryptCA4
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ipcipher.cc
    functionUses: 1
    functionsReached:
    - c_str
    - ipcrypt_encrypt
    - size
    - std::runtime_error
    linkageType: ''
    returnType: ComboAddress
    signature: ComboAddress encryptCA4(const ComboAddress& ca, const std::string&
      key)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/ipcipher.cc:41,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/ipcipher.cc:42,1
    - Dst: ipcrypt_decrypt
      Src: /src/pdns/pdns/dnsdistdist/ipcipher.cc:48,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/ipcipher.cc:50,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - ' ca'
    - ' key'
    argTypes:
    - ComboAddress
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 39
    functionDepth: 0
    functionLinenumber: 39
    functionLinenumberEnd: 53
    functionName: decryptCA4
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ipcipher.cc
    functionUses: 1
    functionsReached:
    - c_str
    - ipcrypt_decrypt
    - size
    - std::runtime_error
    linkageType: ''
    returnType: ComboAddress
    signature: ComboAddress decryptCA4(const ComboAddress& ca, const std::string&
      key)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/ipcipher.cc:57,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/ipcipher.cc:58,1
    - Dst: std::unique_ptr<EVP_CIPHER_CTX, decltype(&EVP_CIPHER_CTX_free)>
      Src: /src/pdns/pdns/dnsdistdist/ipcipher.cc:64,1
    - Dst: EVP_CIPHER_CTX_new
      Src: /src/pdns/pdns/dnsdistdist/ipcipher.cc:64,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/dnsdistdist/ipcipher.cc:66,1
    - Dst: std::unique_ptr<EVP_CIPHER, decltype(&EVP_CIPHER_free)>
      Src: /src/pdns/pdns/dnsdistdist/ipcipher.cc:69,1
    - Dst: EVP_CIPHER_fetch
      Src: /src/pdns/pdns/dnsdistdist/ipcipher.cc:69,1
    - Dst: EVP_EncryptInit
      Src: /src/pdns/pdns/dnsdistdist/ipcipher.cc:72,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/ipcipher.cc:72,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/ipcipher.cc:72,1
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/dnsdistdist/ipcipher.cc:72,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/ipcipher.cc:72,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/dnsdistdist/ipcipher.cc:73,1
    - Dst: EVP_CIPHER_get_block_size
      Src: /src/pdns/pdns/dnsdistdist/ipcipher.cc:79,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/ipcipher.cc:79,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/dnsdistdist/ipcipher.cc:81,1
    - Dst: EVP_CIPHER_CTX_set_padding
      Src: /src/pdns/pdns/dnsdistdist/ipcipher.cc:83,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/ipcipher.cc:83,1
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/dnsdistdist/ipcipher.cc:87,1
    - Dst: reinterpret_cast<unsigned char*>
      Src: /src/pdns/pdns/dnsdistdist/ipcipher.cc:89,1
    - Dst: EVP_EncryptUpdate
      Src: /src/pdns/pdns/dnsdistdist/ipcipher.cc:90,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/ipcipher.cc:90,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/dnsdistdist/ipcipher.cc:90,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/dnsdistdist/ipcipher.cc:91,1
    - Dst: EVP_EncryptFinal_ex
      Src: /src/pdns/pdns/dnsdistdist/ipcipher.cc:95,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/ipcipher.cc:95,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/dnsdistdist/ipcipher.cc:96,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/dnsdistdist/ipcipher.cc:100,1
    - Dst: AES_set_encrypt_key
      Src: /src/pdns/pdns/dnsdistdist/ipcipher.cc:104,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/ipcipher.cc:104,1
    - Dst: AES_encrypt
      Src: /src/pdns/pdns/dnsdistdist/ipcipher.cc:105,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 26
    argCount: 2
    argNames:
    - ' address'
    - ' key'
    argTypes:
    - ComboAddress
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 55
    functionDepth: 0
    functionLinenumber: 55
    functionLinenumberEnd: 110
    functionName: encryptCA6
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ipcipher.cc
    functionUses: 1
    functionsReached:
    - EVP_CIPHER_fetch
    - EVP_CIPHER_get_block_size
    - EVP_EncryptUpdate
    - static_cast<int>
    - AES_set_encrypt_key
    - EVP_CIPHER_CTX_set_padding
    - size
    - reinterpret_cast<unsigned char*>
    - reinterpret_cast<const unsigned char*>
    - c_str
    - EVP_EncryptInit
    - std::unique_ptr<EVP_CIPHER, decltype(&EVP_CIPHER_free)>
    - auto::get
    - std::runtime_error
    - AES_encrypt
    - std::unique_ptr<EVP_CIPHER_CTX, decltype(&EVP_CIPHER_CTX_free)>
    - EVP_EncryptFinal_ex
    - EVP_CIPHER_CTX_new
    - Logging::Logger::error
    linkageType: ''
    returnType: ComboAddress
    signature: ComboAddress encryptCA6(const ComboAddress& address, const std::string&
      key)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/ipcipher.cc:114,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/ipcipher.cc:115,1
    - Dst: std::unique_ptr<EVP_CIPHER_CTX, decltype(&EVP_CIPHER_CTX_free)>
      Src: /src/pdns/pdns/dnsdistdist/ipcipher.cc:121,1
    - Dst: EVP_CIPHER_CTX_new
      Src: /src/pdns/pdns/dnsdistdist/ipcipher.cc:121,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/dnsdistdist/ipcipher.cc:123,1
    - Dst: std::unique_ptr<EVP_CIPHER, decltype(&EVP_CIPHER_free)>
      Src: /src/pdns/pdns/dnsdistdist/ipcipher.cc:126,1
    - Dst: EVP_CIPHER_fetch
      Src: /src/pdns/pdns/dnsdistdist/ipcipher.cc:126,1
    - Dst: EVP_DecryptInit
      Src: /src/pdns/pdns/dnsdistdist/ipcipher.cc:129,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/ipcipher.cc:129,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/ipcipher.cc:129,1
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/dnsdistdist/ipcipher.cc:129,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/ipcipher.cc:129,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/dnsdistdist/ipcipher.cc:130,1
    - Dst: EVP_CIPHER_get_block_size
      Src: /src/pdns/pdns/dnsdistdist/ipcipher.cc:136,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/ipcipher.cc:136,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/dnsdistdist/ipcipher.cc:138,1
    - Dst: EVP_CIPHER_CTX_set_padding
      Src: /src/pdns/pdns/dnsdistdist/ipcipher.cc:140,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/ipcipher.cc:140,1
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/dnsdistdist/ipcipher.cc:144,1
    - Dst: reinterpret_cast<unsigned char*>
      Src: /src/pdns/pdns/dnsdistdist/ipcipher.cc:146,1
    - Dst: EVP_DecryptUpdate
      Src: /src/pdns/pdns/dnsdistdist/ipcipher.cc:147,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/ipcipher.cc:147,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/dnsdistdist/ipcipher.cc:147,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/dnsdistdist/ipcipher.cc:148,1
    - Dst: EVP_DecryptFinal_ex
      Src: /src/pdns/pdns/dnsdistdist/ipcipher.cc:152,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/ipcipher.cc:152,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/dnsdistdist/ipcipher.cc:153,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/dnsdistdist/ipcipher.cc:157,1
    - Dst: AES_set_decrypt_key
      Src: /src/pdns/pdns/dnsdistdist/ipcipher.cc:161,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/ipcipher.cc:161,1
    - Dst: AES_decrypt
      Src: /src/pdns/pdns/dnsdistdist/ipcipher.cc:162,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 26
    argCount: 2
    argNames:
    - ' address'
    - ' key'
    argTypes:
    - ComboAddress
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 167
      start: 112
    functionDepth: 0
    functionLinenumber: 112
    functionLinenumberEnd: 167
    functionName: decryptCA6
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ipcipher.cc
    functionUses: 1
    functionsReached:
    - AES_decrypt
    - EVP_CIPHER_fetch
    - EVP_DecryptFinal_ex
    - EVP_CIPHER_get_block_size
    - static_cast<int>
    - EVP_CIPHER_CTX_set_padding
    - size
    - reinterpret_cast<unsigned char*>
    - reinterpret_cast<const unsigned char*>
    - EVP_DecryptUpdate
    - c_str
    - std::unique_ptr<EVP_CIPHER, decltype(&EVP_CIPHER_free)>
    - auto::get
    - std::runtime_error
    - EVP_DecryptInit
    - std::unique_ptr<EVP_CIPHER_CTX, decltype(&EVP_CIPHER_CTX_free)>
    - EVP_CIPHER_CTX_new
    - AES_set_decrypt_key
    - Logging::Logger::error
    linkageType: ''
    returnType: ComboAddress
    signature: ComboAddress decryptCA6(const ComboAddress& address, const std::string&
      key)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: encryptCA4
      Src: /src/pdns/pdns/dnsdistdist/ipcipher.cc:172,1
    - Dst: encryptCA6
      Src: /src/pdns/pdns/dnsdistdist/ipcipher.cc:176,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/ipcipher.cc:179,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - ' ca'
    - ' key'
    argTypes:
    - ComboAddress
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 180
      start: 169
    functionDepth: 0
    functionLinenumber: 169
    functionLinenumberEnd: 180
    functionName: encryptCA
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ipcipher.cc
    functionUses: 10
    functionsReached:
    - encryptCA6
    - encryptCA4
    - std::runtime_error
    linkageType: ''
    returnType: ComboAddress
    signature: ComboAddress encryptCA(const ComboAddress& ca, const std::string& key)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: decryptCA4
      Src: /src/pdns/pdns/dnsdistdist/ipcipher.cc:185,1
    - Dst: decryptCA6
      Src: /src/pdns/pdns/dnsdistdist/ipcipher.cc:189,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/ipcipher.cc:192,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - ' ca'
    - ' key'
    argTypes:
    - ComboAddress
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 193
      start: 182
    functionDepth: 0
    functionLinenumber: 182
    functionLinenumberEnd: 193
    functionName: decryptCA
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ipcipher.cc
    functionUses: 6
    functionsReached:
    - decryptCA6
    - decryptCA4
    - std::runtime_error
    linkageType: ''
    returnType: ComboAddress
    signature: ComboAddress decryptCA(const ComboAddress& ca, const std::string& key)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/fstrm_logger.cc:19,1
    - Dst: fstrm_writer_options_init
      Src: /src/pdns/pdns/dnsdistdist/fstrm_logger.cc:22,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/fstrm_logger.cc:24,1
    - Dst: fstrm_writer_options_add_content_type
      Src: /src/pdns/pdns/dnsdistdist/fstrm_logger.cc:27,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/fstrm_logger.cc:27,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/fstrm_logger.cc:27,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/fstrm_logger.cc:29,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/fstrm_logger.cc:29,1
    - Dst: makeUNsockaddr
      Src: /src/pdns/pdns/dnsdistdist/fstrm_logger.cc:34,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/fstrm_logger.cc:35,1
    - Dst: fstrm_unix_writer_options_init
      Src: /src/pdns/pdns/dnsdistdist/fstrm_logger.cc:38,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/fstrm_logger.cc:40,1
    - Dst: fstrm_unix_writer_options_set_socket_path
      Src: /src/pdns/pdns/dnsdistdist/fstrm_logger.cc:44,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/fstrm_logger.cc:44,1
    - Dst: fstrm_unix_writer_init
      Src: /src/pdns/pdns/dnsdistdist/fstrm_logger.cc:46,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/fstrm_logger.cc:48,1
    - Dst: fstrm_tcp_writer_options_init
      Src: /src/pdns/pdns/dnsdistdist/fstrm_logger.cc:53,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/fstrm_logger.cc:55,1
    - Dst: fstrm_tcp_writer_options_set_socket_address
      Src: /src/pdns/pdns/dnsdistdist/fstrm_logger.cc:62,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/dnsdistdist/fstrm_logger.cc:62,1
    - Dst: fstrm_tcp_writer_options_set_socket_port
      Src: /src/pdns/pdns/dnsdistdist/fstrm_logger.cc:63,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/fstrm_logger.cc:63,1
    - Dst: ComboAddress::getPort
      Src: /src/pdns/pdns/dnsdistdist/fstrm_logger.cc:63,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/fstrm_logger.cc:66,1
    - Dst: fstrm_tcp_writer_init
      Src: /src/pdns/pdns/dnsdistdist/fstrm_logger.cc:69,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/fstrm_logger.cc:71,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/fstrm_logger.cc:76,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/fstrm_logger.cc:76,1
    - Dst: fstrm_iothr_options_init
      Src: /src/pdns/pdns/dnsdistdist/fstrm_logger.cc:79,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/fstrm_logger.cc:81,1
    - Dst: fstrm_iothr_options_set_queue_model
      Src: /src/pdns/pdns/dnsdistdist/fstrm_logger.cc:84,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/fstrm_logger.cc:86,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/fstrm_logger.cc:86,1
    - Dst: find
      Src: /src/pdns/pdns/dnsdistdist/fstrm_logger.cc:102,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/fstrm_logger.cc:102,1
    - Dst: function
      Src: /src/pdns/pdns/dnsdistdist/fstrm_logger.cc:103,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/fstrm_logger.cc:105,1
    - Dst: string
      Src: /src/pdns/pdns/dnsdistdist/fstrm_logger.cc:105,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/fstrm_logger.cc:105,1
    - Dst: fstrm_iothr_init
      Src: /src/pdns/pdns/dnsdistdist/fstrm_logger.cc:111,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/fstrm_logger.cc:113,1
    - Dst: fstrm_iothr_get_input_queue
      Src: /src/pdns/pdns/dnsdistdist/fstrm_logger.cc:116,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/fstrm_logger.cc:118,1
    - Dst: FrameStreamLogger::cleanup
      Src: /src/pdns/pdns/dnsdistdist/fstrm_logger.cc:123,1
    CyclomaticComplexity: 36
    EdgeCount: 36
    ICount: 70
    argCount: 4
    argNames:
    - family
    - address
    - connect
    - ' options'
    argTypes:
    - int
    - std::string
    - bool
    - std::unordered_map<string, unsigned>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 18
    functionDepth: 0
    functionLinenumber: 18
    functionLinenumberEnd: 126
    functionName: FrameStreamLogger::FrameStreamLogger
    functionSourceFile: /src/pdns/pdns/dnsdistdist/fstrm_logger.cc
    functionUses: 0
    functionsReached:
    - std::to_string
    - fstrm_iothr_init
    - fstrm_iothr_options_init
    - fstrm_writer_options_init
    - fstrm_unix_writer_options_init
    - find
    - fstrm_iothr_options_set_queue_model
    - string
    - fstrm_writer_options_add_content_type
    - size
    - fstrm_unix_writer_options_set_socket_path
    - fstrm_tcp_writer_options_init
    - ComboAddress::getPort
    - c_str
    - std::runtime_error
    - fstrm_tcp_writer_options_set_socket_port
    - makeUNsockaddr
    - FrameStreamLogger::cleanup
    - std::move
    - fstrm_tcp_writer_init
    - fstrm_iothr_get_input_queue
    - end
    - fstrm_unix_writer_init
    - ComboAddress::toString
    - function
    - fstrm_tcp_writer_options_set_socket_address
    linkageType: ''
    returnType: void
    signature: void FrameStreamLogger::FrameStreamLogger(const int family, std::string
      address, bool connect, const std::unordered_map<string, unsigned>& options)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: fstrm_iothr_destroy
      Src: /src/pdns/pdns/dnsdistdist/fstrm_logger.cc:131,1
    - Dst: fstrm_iothr_options_destroy
      Src: /src/pdns/pdns/dnsdistdist/fstrm_logger.cc:135,1
    - Dst: fstrm_writer_destroy
      Src: /src/pdns/pdns/dnsdistdist/fstrm_logger.cc:139,1
    - Dst: fstrm_unix_writer_options_destroy
      Src: /src/pdns/pdns/dnsdistdist/fstrm_logger.cc:143,1
    - Dst: fstrm_tcp_writer_options_destroy
      Src: /src/pdns/pdns/dnsdistdist/fstrm_logger.cc:148,1
    - Dst: fstrm_writer_options_destroy
      Src: /src/pdns/pdns/dnsdistdist/fstrm_logger.cc:153,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 25
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 156
      start: 128
    functionDepth: 0
    functionLinenumber: 128
    functionLinenumberEnd: 156
    functionName: FrameStreamLogger::cleanup
    functionSourceFile: /src/pdns/pdns/dnsdistdist/fstrm_logger.cc
    functionUses: 3
    functionsReached:
    - fstrm_writer_options_destroy
    - fstrm_writer_destroy
    - fstrm_iothr_destroy
    - fstrm_iothr_options_destroy
    - fstrm_unix_writer_options_destroy
    - fstrm_tcp_writer_options_destroy
    linkageType: ''
    returnType: void
    signature: void FrameStreamLogger::cleanup()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: FrameStreamLogger::cleanup
      Src: /src/pdns/pdns/dnsdistdist/fstrm_logger.cc:160,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 161
      start: 158
    functionDepth: 0
    functionLinenumber: 158
    functionLinenumberEnd: 161
    functionName: FrameStreamLogger::~FrameStreamLogger()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/fstrm_logger.cc
    functionUses: 0
    functionsReached:
    - FrameStreamLogger::cleanup
    linkageType: ''
    returnType: void
    signature: void FrameStreamLogger::~FrameStreamLogger()
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/pdns/pdns/dnsdistdist/fstrm_logger.cc:169,1
    - Dst: length
      Src: /src/pdns/pdns/dnsdistdist/fstrm_logger.cc:169,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/fstrm_logger.cc:174,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/fstrm_logger.cc:174,1
    - Dst: length
      Src: /src/pdns/pdns/dnsdistdist/fstrm_logger.cc:174,1
    - Dst: fstrm_iothr_submit
      Src: /src/pdns/pdns/dnsdistdist/fstrm_logger.cc:176,1
    - Dst: length
      Src: /src/pdns/pdns/dnsdistdist/fstrm_logger.cc:176,1
    - Dst: free
      Src: /src/pdns/pdns/dnsdistdist/fstrm_logger.cc:185,1
    - Dst: free
      Src: /src/pdns/pdns/dnsdistdist/fstrm_logger.cc:190,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 22
    argCount: 1
    argNames:
    - ' data'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 193
      start: 163
    functionDepth: 0
    functionLinenumber: 163
    functionLinenumberEnd: 193
    functionName: FrameStreamLogger::queueData
    functionSourceFile: /src/pdns/pdns/dnsdistdist/fstrm_logger.cc
    functionUses: 0
    functionsReached:
    - length
    - memcpy
    - fstrm_iothr_submit
    - free
    - malloc
    - c_str
    linkageType: ''
    returnType: RemoteLoggerInterface::Result
    signature: RemoteLoggerInterface::Result FrameStreamLogger::queueData(const std::string&
      data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: xfr16BitInt
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.hh:94,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - val
    argTypes:
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 92
    functionDepth: 0
    functionLinenumber: 92
    functionLinenumberEnd: 95
    functionName: GenericDNSPacketWriter::xfrType
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnswriter.hh
    functionUses: 0
    functionsReached:
    - xfr16BitInt
    linkageType: ''
    returnType: void
    signature: void xfrType(uint16_t val)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: xfr32BitInt
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.hh:98,1
    - Dst: htonl
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.hh:98,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' val'
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 96
    functionDepth: 0
    functionLinenumber: 96
    functionLinenumberEnd: 99
    functionName: GenericDNSPacketWriter::xfrIP
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnswriter.hh
    functionUses: 1
    functionsReached:
    - xfr32BitInt
    - htonl
    linkageType: ''
    returnType: void
    signature: void xfrIP(const uint32_t& val)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: xfrBlob
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.hh:102,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' val'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 100
    functionDepth: 0
    functionLinenumber: 100
    functionLinenumberEnd: 103
    functionName: GenericDNSPacketWriter::xfrIP6
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnswriter.hh
    functionUses: 0
    functionsReached:
    - xfrBlob
    linkageType: ''
    returnType: void
    signature: void xfrIP6(const std::string& val)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: GenericDNSPacketWriter::xfrIP
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.hh:107,1
    - Dst: string::assign
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.hh:110,1
    - Dst: xfrBlob
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.hh:111,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.hh:113,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - version
    - val
    argTypes:
    - uint8_t
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 105
    functionDepth: 1
    functionLinenumber: 105
    functionLinenumberEnd: 114
    functionName: GenericDNSPacketWriter::xfrCAWithoutPort
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnswriter.hh
    functionUses: 10
    functionsReached:
    - string::assign
    - xfrBlob
    - runtime_error
    - GenericDNSPacketWriter::xfrIP
    linkageType: ''
    returnType: void
    signature: void xfrCAWithoutPort(uint8_t version, const ComboAddress &val)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: xfr16BitInt
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.hh:120,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - val
    argTypes:
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 116
    functionDepth: 0
    functionLinenumber: 116
    functionLinenumberEnd: 121
    functionName: GenericDNSPacketWriter::xfrCAPort
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnswriter.hh
    functionUses: 0
    functionsReached:
    - xfr16BitInt
    linkageType: ''
    returnType: void
    signature: void xfrCAPort(const ComboAddress &val)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: xfr32BitInt
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.hh:125,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' val'
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 123
    functionDepth: 0
    functionLinenumber: 123
    functionLinenumberEnd: 126
    functionName: GenericDNSPacketWriter::xfrTime
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnswriter.hh
    functionUses: 0
    functionsReached:
    - xfr32BitInt
    linkageType: ''
    returnType: void
    signature: void xfrTime(const uint32_t& val)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - val
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 146
      start: 143
    functionDepth: 0
    functionLinenumber: 143
    functionLinenumberEnd: 146
    functionName: GenericDNSPacketWriter::setCanonic
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnswriter.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setCanonic(bool val)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - val
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 151
      start: 148
    functionDepth: 0
    functionLinenumber: 148
    functionLinenumberEnd: 151
    functionName: GenericDNSPacketWriter::setLowercase
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnswriter.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setLowercase(bool val)
  - 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: '& getContent()'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnswriter.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Container
    signature: Container & getContent()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 156
      start: 156
    functionDepth: 0
    functionLinenumber: 156
    functionLinenumberEnd: 156
    functionName: GenericDNSPacketWriter::eof
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnswriter.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool eof() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 160
      start: 158
    functionDepth: 0
    functionLinenumber: 158
    functionLinenumberEnd: 160
    functionName: GenericDNSPacketWriter::getRemaining
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnswriter.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string getRemaining() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 168
      start: 166
    functionDepth: 0
    functionLinenumber: 166
    functionLinenumberEnd: 168
    functionName: GenericDNSPacketWriter::consumeRemaining
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnswriter.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void consumeRemaining() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: snmp_set_var_typed_value
      Src: /src/pdns/pdns/dnsdistdist/snmp-agent.cc:44,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - request
    - value
    argTypes:
    - netsnmp_request_info*
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 38
    functionDepth: 0
    functionLinenumber: 38
    functionLinenumberEnd: 49
    functionName: SNMPAgent::setCounter64Value
    functionSourceFile: /src/pdns/pdns/dnsdistdist/snmp-agent.cc
    functionUses: 0
    functionsReached:
    - snmp_set_var_typed_value
    linkageType: ''
    returnType: int
    signature: "int SNMPAgent::setCounter64Value(netsnmp_request_info* request,\n
      \                                uint64_t value)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: snmp_varlist_add_variable
      Src: /src/pdns/pdns/dnsdistdist/snmp-agent.cc:53,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/snmp-agent.cc:54,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/snmp-agent.cc:55,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - varList
    - value
    - len
    argTypes:
    - netsnmp_variable_list**
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 51
    functionDepth: 0
    functionLinenumber: 51
    functionLinenumberEnd: 59
    functionName: SNMPAgent::addSNMPTrapOID
    functionSourceFile: /src/pdns/pdns/dnsdistdist/snmp-agent.cc
    functionUses: 0
    functionsReached:
    - snmp_varlist_add_variable
    - size
    - data
    linkageType: ''
    returnType: void
    signature: void SNMPAgent::addSNMPTrapOID(netsnmp_variable_list** varList, const
      void* value, size_t len)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::unique_ptr<netsnmp_variable_list, void(*)(netsnmp_variable_list*)>
      Src: /src/pdns/pdns/dnsdistdist/snmp-agent.cc:65,1
    - Dst: send
      Src: /src/pdns/pdns/dnsdistdist/snmp-agent.cc:66,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/snmp-agent.cc:66,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - ' sender'
    - varList
    argTypes:
    - pdns::channel::Sender<netsnmp_variable_list, void(*)(netsnmp_variable_list*)>
    - netsnmp_variable_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 61
    functionDepth: 0
    functionLinenumber: 61
    functionLinenumberEnd: 71
    functionName: SNMPAgent::sendTrap
    functionSourceFile: /src/pdns/pdns/dnsdistdist/snmp-agent.cc
    functionUses: 0
    functionsReached:
    - std::unique_ptr<netsnmp_variable_list, void(*)(netsnmp_variable_list*)>
    - std::move
    - send
    linkageType: ''
    returnType: bool
    signature: "bool SNMPAgent::sendTrap(pdns::channel::Sender<netsnmp_variable_list,
      void(*)(netsnmp_variable_list*)>& sender,\n                         netsnmp_variable_list*
      varList)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: receive
      Src: /src/pdns/pdns/dnsdistdist/snmp-agent.cc:77,1
    - Dst: send_v2trap
      Src: /src/pdns/pdns/dnsdistdist/snmp-agent.cc:81,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/snmp-agent.cc:81,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 73
    functionDepth: 0
    functionLinenumber: 73
    functionLinenumberEnd: 86
    functionName: SNMPAgent::handleTrapsEvent
    functionSourceFile: /src/pdns/pdns/dnsdistdist/snmp-agent.cc
    functionUses: 1
    functionsReached:
    - receive
    - send_v2trap
    - auto::get
    linkageType: ''
    returnType: void
    signature: void SNMPAgent::handleTrapsEvent()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: netsnmp_large_fd_set_init
      Src: /src/pdns/pdns/dnsdistdist/snmp-agent.cc:91,1
    - Dst: NETSNMP_LARGE_FD_ZERO
      Src: /src/pdns/pdns/dnsdistdist/snmp-agent.cc:92,1
    - Dst: NETSNMP_LARGE_FD_SET
      Src: /src/pdns/pdns/dnsdistdist/snmp-agent.cc:93,1
    - Dst: snmp_read2
      Src: /src/pdns/pdns/dnsdistdist/snmp-agent.cc:94,1
    - Dst: netsnmp_large_fd_set_cleanup
      Src: /src/pdns/pdns/dnsdistdist/snmp-agent.cc:95,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - fd
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 88
    functionDepth: 0
    functionLinenumber: 88
    functionLinenumberEnd: 96
    functionName: SNMPAgent::handleSNMPQueryEvent
    functionSourceFile: /src/pdns/pdns/dnsdistdist/snmp-agent.cc
    functionUses: 1
    functionsReached:
    - snmp_read2
    - NETSNMP_LARGE_FD_ZERO
    - netsnmp_large_fd_set_cleanup
    - NETSNMP_LARGE_FD_SET
    - netsnmp_large_fd_set_init
    linkageType: ''
    returnType: void
    signature: void SNMPAgent::handleSNMPQueryEvent(int fd)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: boost::any_cast<SNMPAgent*>
      Src: /src/pdns/pdns/dnsdistdist/snmp-agent.cc:100,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/snmp-agent.cc:102,1
    - Dst: SNMPAgent::handleTrapsEvent
      Src: /src/pdns/pdns/dnsdistdist/snmp-agent.cc:104,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 4
    argCount: 1
    argNames:
    - ' var'
    argTypes:
    - FDMultiplexer::funcparam_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 98
    functionDepth: 0
    functionLinenumber: 98
    functionLinenumberEnd: 105
    functionName: SNMPAgent::handleTrapsCB
    functionSourceFile: /src/pdns/pdns/dnsdistdist/snmp-agent.cc
    functionUses: 0
    functionsReached:
    - SNMPAgent::handleTrapsEvent
    - boost::any_cast<SNMPAgent*>
    - std::runtime_error
    linkageType: ''
    returnType: void
    signature: void SNMPAgent::handleTrapsCB(int /* fd */, FDMultiplexer::funcparam_t&
      var)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: boost::any_cast<SNMPAgent*>
      Src: /src/pdns/pdns/dnsdistdist/snmp-agent.cc:109,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/snmp-agent.cc:111,1
    - Dst: SNMPAgent::handleSNMPQueryEvent
      Src: /src/pdns/pdns/dnsdistdist/snmp-agent.cc:113,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 4
    argCount: 2
    argNames:
    - fd
    - ' var'
    argTypes:
    - int
    - FDMultiplexer::funcparam_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 107
    functionDepth: 0
    functionLinenumber: 107
    functionLinenumberEnd: 114
    functionName: SNMPAgent::handleSNMPQueryCB
    functionSourceFile: /src/pdns/pdns/dnsdistdist/snmp-agent.cc
    functionUses: 0
    functionsReached:
    - SNMPAgent::handleSNMPQueryEvent
    - boost::any_cast<SNMPAgent*>
    - std::runtime_error
    linkageType: ''
    returnType: void
    signature: void SNMPAgent::handleSNMPQueryCB(int fd, FDMultiplexer::funcparam_t&
      var)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: FDMultiplexer::getMultiplexerSilent
      Src: /src/pdns/pdns/dnsdistdist/snmp-agent.cc:121,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/snmp-agent.cc:123,1
    - Dst: setThreadName
      Src: /src/pdns/pdns/dnsdistdist/snmp-agent.cc:131,1
    - Dst: FDMultiplexer*::addReadFD
      Src: /src/pdns/pdns/dnsdistdist/snmp-agent.cc:141,1
    - Dst: getDescriptor
      Src: /src/pdns/pdns/dnsdistdist/snmp-agent.cc:141,1
    - Dst: netsnmp_large_fd_set_init
      Src: /src/pdns/pdns/dnsdistdist/snmp-agent.cc:144,1
    - Dst: NETSNMP_LARGE_FD_ZERO
      Src: /src/pdns/pdns/dnsdistdist/snmp-agent.cc:145,1
    - Dst: snmp_select_info2
      Src: /src/pdns/pdns/dnsdistdist/snmp-agent.cc:149,1
    - Dst: NETSNMP_LARGE_FD_ISSET
      Src: /src/pdns/pdns/dnsdistdist/snmp-agent.cc:152,1
    - Dst: FDMultiplexer*::addReadFD
      Src: /src/pdns/pdns/dnsdistdist/snmp-agent.cc:153,1
    - Dst: FDMultiplexer*::run
      Src: /src/pdns/pdns/dnsdistdist/snmp-agent.cc:158,1
    - Dst: snmp_timeout
      Src: /src/pdns/pdns/dnsdistdist/snmp-agent.cc:162,1
    - Dst: run_alarms
      Src: /src/pdns/pdns/dnsdistdist/snmp-agent.cc:163,1
    - Dst: NETSNMP_LARGE_FD_ISSET
      Src: /src/pdns/pdns/dnsdistdist/snmp-agent.cc:167,1
    - Dst: FDMultiplexer*::removeReadFD
      Src: /src/pdns/pdns/dnsdistdist/snmp-agent.cc:169,1
    - Dst: netsnmp_large_fd_set_cleanup
      Src: /src/pdns/pdns/dnsdistdist/snmp-agent.cc:177,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 31
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 180
      start: 118
    functionDepth: 0
    functionLinenumber: 118
    functionLinenumberEnd: 180
    functionName: SNMPAgent::worker
    functionSourceFile: /src/pdns/pdns/dnsdistdist/snmp-agent.cc
    functionUses: 0
    functionsReached:
    - NETSNMP_LARGE_FD_ISSET
    - std::runtime_error
    - NETSNMP_LARGE_FD_ZERO
    - FDMultiplexer*::removeReadFD
    - netsnmp_large_fd_set_cleanup
    - run_alarms
    - FDMultiplexer*::addReadFD
    - snmp_timeout
    - getDescriptor
    - FDMultiplexer::getMultiplexerSilent
    - setThreadName
    - snmp_select_info2
    - netsnmp_large_fd_set_init
    - FDMultiplexer*::run
    linkageType: ''
    returnType: void
    signature: void SNMPAgent::worker()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: netsnmp_enable_subagent
      Src: /src/pdns/pdns/dnsdistdist/snmp-agent.cc:185,1
    - Dst: snmp_disable_log
      Src: /src/pdns/pdns/dnsdistdist/snmp-agent.cc:186,1
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/snmp-agent.cc:187,1
    - Dst: netsnmp_ds_set_string
      Src: /src/pdns/pdns/dnsdistdist/snmp-agent.cc:188,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/snmp-agent.cc:190,1
    - Dst: setenv
      Src: /src/pdns/pdns/dnsdistdist/snmp-agent.cc:194,1
    - Dst: init_agent
      Src: /src/pdns/pdns/dnsdistdist/snmp-agent.cc:196,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/snmp-agent.cc:196,1
    - Dst: netsnmp_ds_set_boolean
      Src: /src/pdns/pdns/dnsdistdist/snmp-agent.cc:202,1
    - Dst: init_snmp
      Src: /src/pdns/pdns/dnsdistdist/snmp-agent.cc:206,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/snmp-agent.cc:206,1
    - Dst: pdns::channel::createObjectQueue<netsnmp_variable_list, void(*)(netsnmp_variable_list*)>
      Src: /src/pdns/pdns/dnsdistdist/snmp-agent.cc:208,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/snmp-agent.cc:209,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/snmp-agent.cc:210,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 2
    argNames:
    - ' name'
    - ' daemonSocket'
    argTypes:
    - std::string
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 212
      start: 182
    functionDepth: 0
    functionLinenumber: 182
    functionLinenumberEnd: 212
    functionName: SNMPAgent::SNMPAgent
    functionSourceFile: /src/pdns/pdns/dnsdistdist/snmp-agent.cc
    functionUses: 0
    functionsReached:
    - std::move
    - init_agent
    - netsnmp_ds_set_boolean
    - c_str
    - netsnmp_ds_set_string
    - netsnmp_enable_subagent
    - init_snmp
    - pdns::channel::createObjectQueue<netsnmp_variable_list, void(*)(netsnmp_variable_list*)>
    - setenv
    - empty
    - snmp_disable_log
    linkageType: ''
    returnType: void
    signature: void SNMPAgent::SNMPAgent([[maybe_unused]] const std::string& name,
      [[maybe_unused]] const std::string& daemonSocket)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 48
    functionDepth: 0
    functionLinenumber: 48
    functionLinenumberEnd: 48
    functionName: Socket::Socket
    functionSourceFile: /src/pdns/pdns/dnsdistdist/sstuff.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Socket(const Socket&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 49
    functionDepth: 0
    functionLinenumber: 49
    functionLinenumberEnd: 49
    functionName: '& operator=(const Socket&)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/sstuff.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Socket
    signature: Socket & operator=(const Socket&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - socketDesc
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 51
    functionDepth: 0
    functionLinenumber: 51
    functionLinenumberEnd: 54
    functionName: Socket::Socket
    functionSourceFile: /src/pdns/pdns/dnsdistdist/sstuff.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Socket(int socketDesc)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: socket
      Src: /src/pdns/pdns/dnsdistdist/sstuff.hh:58,1
    - Dst: NetworkError
      Src: /src/pdns/pdns/dnsdistdist/sstuff.hh:61,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/sstuff.hh:61,1
    - Dst: setCloseOnExec
      Src: /src/pdns/pdns/dnsdistdist/sstuff.hh:63,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - addressFamily
    - socketType
    argTypes:
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 57
    functionDepth: 0
    functionLinenumber: 57
    functionLinenumberEnd: 64
    functionName: Socket::Socket
    functionSourceFile: /src/pdns/pdns/dnsdistdist/sstuff.hh
    functionUses: 0
    functionsReached:
    - socket
    - stringerror
    - setCloseOnExec
    - NetworkError
    linkageType: ''
    returnType: void
    signature: void Socket(int addressFamily, int socketType, ProtocolType protocolType
      = 0)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/sstuff.hh:67,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - Socket
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 66
    functionDepth: 0
    functionLinenumber: 66
    functionLinenumberEnd: 70
    functionName: Socket::Socket
    functionSourceFile: /src/pdns/pdns/dnsdistdist/sstuff.hh
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void Socket(Socket&& rhs) noexcept
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: close
      Src: /src/pdns/pdns/dnsdistdist/sstuff.hh:75,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/sstuff.hh:79,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - Socket
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 72
    functionDepth: 0
    functionLinenumber: 72
    functionLinenumberEnd: 81
    functionName: '& operator=(Socket&& rhs) noexcept'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/sstuff.hh
    functionUses: 0
    functionsReached:
    - std::move
    - close
    linkageType: ''
    returnType: Socket
    signature: Socket & operator=(Socket&& rhs) noexcept
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: closesocket
      Src: /src/pdns/pdns/dnsdistdist/sstuff.hh:87,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 83
    functionDepth: 0
    functionLinenumber: 83
    functionLinenumberEnd: 92
    functionName: ~Socket()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/sstuff.hh
    functionUses: 0
    functionsReached:
    - closesocket
    linkageType: ''
    returnType: void
    signature: void ~Socket()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/pdns/pdns/dnsdistdist/sstuff.hh:99,1
    - Dst: Socket::accept
      Src: /src/pdns/pdns/dnsdistdist/sstuff.hh:100,1
    - Dst: reinterpret_cast<sockaddr*>
      Src: /src/pdns/pdns/dnsdistdist/sstuff.hh:100,1
    - Dst: NetworkError
      Src: /src/pdns/pdns/dnsdistdist/sstuff.hh:106,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/sstuff.hh:106,1
    - Dst: std::make_unique<Socket>
      Src: /src/pdns/pdns/dnsdistdist/sstuff.hh:109,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 95
    functionDepth: 0
    functionLinenumber: 95
    functionLinenumberEnd: 110
    functionName: Socket::accept
    functionSourceFile: /src/pdns/pdns/dnsdistdist/sstuff.hh
    functionUses: 2
    functionsReached:
    - Socket::accept
    - stringerror
    - memset
    - NetworkError
    - std::make_unique<Socket>
    - reinterpret_cast<sockaddr*>
    linkageType: ''
    returnType: std::unique_ptr<Socket>
    signature: std::unique_ptr<Socket> accept() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getpeername
      Src: /src/pdns/pdns/dnsdistdist/sstuff.hh:116,1
    - Dst: reinterpret_cast<struct sockaddr*>
      Src: /src/pdns/pdns/dnsdistdist/sstuff.hh:116,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' remote'
    argTypes:
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 113
    functionDepth: 0
    functionLinenumber: 113
    functionLinenumberEnd: 117
    functionName: Socket::getRemote
    functionSourceFile: /src/pdns/pdns/dnsdistdist/sstuff.hh
    functionUses: 1
    functionsReached:
    - getpeername
    - reinterpret_cast<struct sockaddr*>
    linkageType: ''
    returnType: bool
    signature: bool getRemote(ComboAddress& remote) const
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Socket::getRemote
      Src: /src/pdns/pdns/dnsdistdist/sstuff.hh:123,1
    - Dst: match
      Src: /src/pdns/pdns/dnsdistdist/sstuff.hh:124,1
    - Dst: ComboAddress::isMappedIPv4
      Src: /src/pdns/pdns/dnsdistdist/sstuff.hh:128,1
    - Dst: match
      Src: /src/pdns/pdns/dnsdistdist/sstuff.hh:129,1
    - Dst: ComboAddress::mapToIPv4
      Src: /src/pdns/pdns/dnsdistdist/sstuff.hh:129,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - ' netmaskGroup'
    argTypes:
    - NetmaskGroup
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 134
      start: 120
    functionDepth: 0
    functionLinenumber: 120
    functionLinenumberEnd: 134
    functionName: Socket::acl
    functionSourceFile: /src/pdns/pdns/dnsdistdist/sstuff.hh
    functionUses: 0
    functionsReached:
    - ComboAddress::isMappedIPv4
    - match
    - ComboAddress::mapToIPv4
    - Socket::getRemote
    linkageType: ''
    returnType: bool
    signature: bool acl(const NetmaskGroup& netmaskGroup) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Socket::setNonBlocking
      Src: /src/pdns/pdns/dnsdistdist/sstuff.hh:139,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 137
    functionDepth: 0
    functionLinenumber: 137
    functionLinenumberEnd: 140
    functionName: Socket::setNonBlocking
    functionSourceFile: /src/pdns/pdns/dnsdistdist/sstuff.hh
    functionUses: 11
    functionsReached:
    - Socket::setNonBlocking
    linkageType: ''
    returnType: void
    signature: void setNonBlocking() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Socket::setBlocking
      Src: /src/pdns/pdns/dnsdistdist/sstuff.hh:145,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 146
      start: 143
    functionDepth: 0
    functionLinenumber: 143
    functionLinenumberEnd: 146
    functionName: Socket::setBlocking
    functionSourceFile: /src/pdns/pdns/dnsdistdist/sstuff.hh
    functionUses: 2
    functionsReached:
    - Socket::setBlocking
    linkageType: ''
    returnType: void
    signature: void setBlocking() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Socket::setReuseAddr
      Src: /src/pdns/pdns/dnsdistdist/sstuff.hh:151,1
    - Dst: NetworkError
      Src: /src/pdns/pdns/dnsdistdist/sstuff.hh:154,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 156
      start: 148
    functionDepth: 0
    functionLinenumber: 148
    functionLinenumberEnd: 156
    functionName: Socket::setReuseAddr
    functionSourceFile: /src/pdns/pdns/dnsdistdist/sstuff.hh
    functionUses: 3
    functionsReached:
    - Socket::setReuseAddr
    - NetworkError
    linkageType: ''
    returnType: void
    signature: void setReuseAddr() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: setsockopt
      Src: /src/pdns/pdns/dnsdistdist/sstuff.hh:162,1
    - Dst: NetworkError
      Src: /src/pdns/pdns/dnsdistdist/sstuff.hh:163,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/sstuff.hh:163,1
    - Dst: NetworkError
      Src: /src/pdns/pdns/dnsdistdist/sstuff.hh:166,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 168
      start: 158
    functionDepth: 0
    functionLinenumber: 158
    functionLinenumberEnd: 168
    functionName: Socket::setFastOpenConnect
    functionSourceFile: /src/pdns/pdns/dnsdistdist/sstuff.hh
    functionUses: 0
    functionsReached:
    - stringerror
    - NetworkError
    - setsockopt
    linkageType: ''
    returnType: void
    signature: void setFastOpenConnect()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: setsockopt
      Src: /src/pdns/pdns/dnsdistdist/sstuff.hh:176,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/dnsdistdist/sstuff.hh:176,1
    - Dst: NetworkError
      Src: /src/pdns/pdns/dnsdistdist/sstuff.hh:177,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/sstuff.hh:177,1
    - Dst: Socket::bind
      Src: /src/pdns/pdns/dnsdistdist/sstuff.hh:180,1
    - Dst: reinterpret_cast<const struct sockaddr*>
      Src: /src/pdns/pdns/dnsdistdist/sstuff.hh:180,1
    - Dst: getSocklen
      Src: /src/pdns/pdns/dnsdistdist/sstuff.hh:180,1
    - Dst: NetworkError
      Src: /src/pdns/pdns/dnsdistdist/sstuff.hh:181,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/sstuff.hh:181,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 7
    argCount: 1
    argNames:
    - ' local'
    argTypes:
    - T
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 183
      start: 172
    functionDepth: 0
    functionLinenumber: 172
    functionLinenumberEnd: 183
    functionName: Socket::bind
    functionSourceFile: /src/pdns/pdns/dnsdistdist/sstuff.hh
    functionUses: 20
    functionsReached:
    - reinterpret_cast<char*>
    - stringerror
    - setsockopt
    - reinterpret_cast<const struct sockaddr*>
    - NetworkError
    - Socket::bind
    - getSocklen
    linkageType: ''
    returnType: void
    signature: void bind(const T& local, bool reuseaddr = true) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SConnectWithTimeout
      Src: /src/pdns/pdns/dnsdistdist/sstuff.hh:188,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' address'
    argTypes:
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 189
      start: 186
    functionDepth: 0
    functionLinenumber: 186
    functionLinenumberEnd: 189
    functionName: Socket::connect
    functionSourceFile: /src/pdns/pdns/dnsdistdist/sstuff.hh
    functionUses: 10
    functionsReached:
    - SConnectWithTimeout
    linkageType: ''
    returnType: void
    signature: void connect(const ComboAddress& address, int timeout = 0) const
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/sstuff.hh:198,1
    - Dst: resize
      Src: /src/pdns/pdns/dnsdistdist/sstuff.hh:199,1
    - Dst: recvfrom
      Src: /src/pdns/pdns/dnsdistdist/sstuff.hh:202,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/sstuff.hh:202,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/sstuff.hh:202,1
    - Dst: reinterpret_cast<sockaddr*>
      Src: /src/pdns/pdns/dnsdistdist/sstuff.hh:202,1
    - Dst: NetworkError
      Src: /src/pdns/pdns/dnsdistdist/sstuff.hh:204,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/sstuff.hh:204,1
    - Dst: resize
      Src: /src/pdns/pdns/dnsdistdist/sstuff.hh:206,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/dnsdistdist/sstuff.hh:206,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - ' dgram'
    - ' remote'
    argTypes:
    - string
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 207
      start: 195
    functionDepth: 1
    functionLinenumber: 195
    functionLinenumberEnd: 207
    functionName: Socket::recvFrom
    functionSourceFile: /src/pdns/pdns/dnsdistdist/sstuff.hh
    functionUses: 2
    functionsReached:
    - static_cast<size_t>
    - resize
    - stringerror
    - recvfrom
    - size
    - NetworkError
    - data
    - reinterpret_cast<sockaddr*>
    linkageType: ''
    returnType: void
    signature: void recvFrom(string& dgram, ComboAddress& remote) const
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/sstuff.hh:212,1
    - Dst: resize
      Src: /src/pdns/pdns/dnsdistdist/sstuff.hh:213,1
    - Dst: recvfrom
      Src: /src/pdns/pdns/dnsdistdist/sstuff.hh:216,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/sstuff.hh:216,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/sstuff.hh:216,1
    - Dst: reinterpret_cast<sockaddr*>
      Src: /src/pdns/pdns/dnsdistdist/sstuff.hh:216,1
    - Dst: NetworkError
      Src: /src/pdns/pdns/dnsdistdist/sstuff.hh:219,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/sstuff.hh:219,1
    - Dst: resize
      Src: /src/pdns/pdns/dnsdistdist/sstuff.hh:223,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/dnsdistdist/sstuff.hh:223,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 2
    argNames:
    - ' dgram'
    - ' remote'
    argTypes:
    - PacketBuffer
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 225
      start: 209
    functionDepth: 1
    functionLinenumber: 209
    functionLinenumberEnd: 225
    functionName: Socket::recvFromAsync
    functionSourceFile: /src/pdns/pdns/dnsdistdist/sstuff.hh
    functionUses: 0
    functionsReached:
    - static_cast<size_t>
    - resize
    - stringerror
    - recvfrom
    - size
    - NetworkError
    - data
    - reinterpret_cast<sockaddr*>
    linkageType: ''
    returnType: bool
    signature: bool recvFromAsync(PacketBuffer& dgram, ComboAddress& remote) const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sendto
      Src: /src/pdns/pdns/dnsdistdist/sstuff.hh:231,1
    - Dst: reinterpret_cast<const sockaddr*>
      Src: /src/pdns/pdns/dnsdistdist/sstuff.hh:231,1
    - Dst: getSocklen
      Src: /src/pdns/pdns/dnsdistdist/sstuff.hh:231,1
    - Dst: NetworkError
      Src: /src/pdns/pdns/dnsdistdist/sstuff.hh:232,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/sstuff.hh:232,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 3
    argNames:
    - msg
    - len
    - ' remote'
    argTypes:
    - char*
    - size_t
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 234
      start: 228
    functionDepth: 0
    functionLinenumber: 228
    functionLinenumberEnd: 234
    functionName: Socket::sendTo
    functionSourceFile: /src/pdns/pdns/dnsdistdist/sstuff.hh
    functionUses: 3
    functionsReached:
    - stringerror
    - reinterpret_cast<const sockaddr*>
    - NetworkError
    - sendto
    - getSocklen
    linkageType: ''
    returnType: void
    signature: void sendTo(const char* msg, size_t len, const ComboAddress& remote)
      const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Socket::send
      Src: /src/pdns/pdns/dnsdistdist/sstuff.hh:239,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/sstuff.hh:239,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/sstuff.hh:239,1
    - Dst: NetworkError
      Src: /src/pdns/pdns/dnsdistdist/sstuff.hh:240,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/sstuff.hh:240,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - ' msg'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 242
      start: 237
    functionDepth: 0
    functionLinenumber: 237
    functionLinenumberEnd: 242
    functionName: Socket::send
    functionSourceFile: /src/pdns/pdns/dnsdistdist/sstuff.hh
    functionUses: 11
    functionsReached:
    - Socket::send
    - stringerror
    - size
    - NetworkError
    - data
    linkageType: ''
    returnType: void
    signature: void send(const std::string& msg) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Socket::sendTo
      Src: /src/pdns/pdns/dnsdistdist/sstuff.hh:249,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/sstuff.hh:249,1
    - Dst: length
      Src: /src/pdns/pdns/dnsdistdist/sstuff.hh:249,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' dgram'
    - ' remote'
    argTypes:
    - string
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 250
      start: 247
    functionDepth: 0
    functionLinenumber: 247
    functionLinenumberEnd: 250
    functionName: Socket::sendTo
    functionSourceFile: /src/pdns/pdns/dnsdistdist/sstuff.hh
    functionUses: 4
    functionsReached:
    - Socket::sendTo
    - length
    - data
    linkageType: ''
    returnType: void
    signature: void sendTo(const string& dgram, const ComboAddress& remote) const
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/sstuff.hh:255,1
    - Dst: length
      Src: /src/pdns/pdns/dnsdistdist/sstuff.hh:259,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/sstuff.hh:260,1
    - Dst: Socket::send
      Src: /src/pdns/pdns/dnsdistdist/sstuff.hh:263,1
    - Dst: NetworkError
      Src: /src/pdns/pdns/dnsdistdist/sstuff.hh:265,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/sstuff.hh:265,1
    - Dst: NetworkError
      Src: /src/pdns/pdns/dnsdistdist/sstuff.hh:268,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/dnsdistdist/sstuff.hh:270,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/dnsdistdist/sstuff.hh:271,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 1
    argNames:
    - ' data'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 273
      start: 253
    functionDepth: 0
    functionLinenumber: 253
    functionLinenumberEnd: 273
    functionName: Socket::writen
    functionSourceFile: /src/pdns/pdns/dnsdistdist/sstuff.hh
    functionUses: 4
    functionsReached:
    - length
    - Socket::send
    - static_cast<size_t>
    - stringerror
    - NetworkError
    - data
    - empty
    linkageType: ''
    returnType: void
    signature: void writen(const string& data) const
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Socket::send
      Src: /src/pdns/pdns/dnsdistdist/sstuff.hh:282,1
    - Dst: NetworkError
      Src: /src/pdns/pdns/dnsdistdist/sstuff.hh:284,1
    - Dst: NetworkError
      Src: /src/pdns/pdns/dnsdistdist/sstuff.hh:294,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/sstuff.hh:294,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 2
    argNames:
    - ptr
    - toWrite
    argTypes:
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 295
      start: 280
    functionDepth: 0
    functionLinenumber: 280
    functionLinenumberEnd: 295
    functionName: Socket::tryWrite
    functionSourceFile: /src/pdns/pdns/dnsdistdist/sstuff.hh
    functionUses: 0
    functionsReached:
    - stringerror
    - Socket::send
    - NetworkError
    linkageType: ''
    returnType: size_t
    signature: size_t tryWrite(const char* ptr, size_t toWrite) const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Socket::send
      Src: /src/pdns/pdns/dnsdistdist/sstuff.hh:301,1
    - Dst: NetworkError
      Src: /src/pdns/pdns/dnsdistdist/sstuff.hh:303,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/sstuff.hh:303,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - ptr
    - toWrite
    argTypes:
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 306
      start: 299
    functionDepth: 0
    functionLinenumber: 299
    functionLinenumberEnd: 306
    functionName: Socket::write
    functionSourceFile: /src/pdns/pdns/dnsdistdist/sstuff.hh
    functionUses: 2
    functionsReached:
    - stringerror
    - Socket::send
    - NetworkError
    linkageType: ''
    returnType: size_t
    signature: size_t write(const char* ptr, size_t toWrite) const
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/sstuff.hh:311,1
    - Dst: TCPIOHandler::write
      Src: /src/pdns/pdns/dnsdistdist/sstuff.hh:314,1
    - Dst: waitForRWData
      Src: /src/pdns/pdns/dnsdistdist/sstuff.hh:317,1
    - Dst: NetworkError
      Src: /src/pdns/pdns/dnsdistdist/sstuff.hh:319,1
    - Dst: NetworkError
      Src: /src/pdns/pdns/dnsdistdist/sstuff.hh:322,1
    - Dst: NetworkError
      Src: /src/pdns/pdns/dnsdistdist/sstuff.hh:326,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/sstuff.hh:326,1
    - Dst: NetworkError
      Src: /src/pdns/pdns/dnsdistdist/sstuff.hh:329,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/dnsdistdist/sstuff.hh:332,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/dnsdistdist/sstuff.hh:333,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 21
    argCount: 3
    argNames:
    - buffer
    - n
    - timeout
    argTypes:
    - void*
    - size_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 335
      start: 308
    functionDepth: 0
    functionLinenumber: 308
    functionLinenumberEnd: 335
    functionName: Socket::writenWithTimeout
    functionSourceFile: /src/pdns/pdns/dnsdistdist/sstuff.hh
    functionUses: 1
    functionsReached:
    - TCPIOHandler::write
    - static_cast<size_t>
    - stringerror
    - static_cast<const char*>
    - NetworkError
    - waitForRWData
    linkageType: ''
    returnType: void
    signature: void writenWithTimeout(const void* buffer, size_t n, int timeout) const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: resize
      Src: /src/pdns/pdns/dnsdistdist/sstuff.hh:340,1
    - Dst: XskSocket::recv
      Src: /src/pdns/pdns/dnsdistdist/sstuff.hh:341,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/sstuff.hh:341,1
    - Dst: NetworkError
      Src: /src/pdns/pdns/dnsdistdist/sstuff.hh:343,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/sstuff.hh:343,1
    - Dst: assign
      Src: /src/pdns/pdns/dnsdistdist/sstuff.hh:345,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/dnsdistdist/sstuff.hh:345,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - ' data'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 346
      start: 338
    functionDepth: 1
    functionLinenumber: 338
    functionLinenumberEnd: 346
    functionName: Socket::read
    functionSourceFile: /src/pdns/pdns/dnsdistdist/sstuff.hh
    functionUses: 6
    functionsReached:
    - assign
    - static_cast<size_t>
    - XskSocket::recv
    - resize
    - stringerror
    - NetworkError
    - data
    linkageType: ''
    returnType: void
    signature: void read(string& data)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XskSocket::recv
      Src: /src/pdns/pdns/dnsdistdist/sstuff.hh:351,1
    - Dst: NetworkError
      Src: /src/pdns/pdns/dnsdistdist/sstuff.hh:353,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/sstuff.hh:353,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/dnsdistdist/sstuff.hh:355,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - buffer
    - bytes
    argTypes:
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 356
      start: 349
    functionDepth: 1
    functionLinenumber: 349
    functionLinenumberEnd: 356
    functionName: Socket::read
    functionSourceFile: /src/pdns/pdns/dnsdistdist/sstuff.hh
    functionUses: 6
    functionsReached:
    - stringerror
    - static_cast<size_t>
    - XskSocket::recv
    - NetworkError
    linkageType: ''
    returnType: size_t
    signature: size_t read(char* buffer, size_t bytes) const
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: waitForRWData
      Src: /src/pdns/pdns/dnsdistdist/sstuff.hh:365,1
    - Dst: NetworkError
      Src: /src/pdns/pdns/dnsdistdist/sstuff.hh:368,1
    - Dst: NetworkError
      Src: /src/pdns/pdns/dnsdistdist/sstuff.hh:371,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/sstuff.hh:371,1
    - Dst: Socket::read
      Src: /src/pdns/pdns/dnsdistdist/sstuff.hh:374,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 3
    argNames:
    - buffer
    - n
    - timeout
    argTypes:
    - char*
    - size_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 375
      start: 363
    functionDepth: 0
    functionLinenumber: 363
    functionLinenumberEnd: 375
    functionName: Socket::readWithTimeout
    functionSourceFile: /src/pdns/pdns/dnsdistdist/sstuff.hh
    functionUses: 1
    functionsReached:
    - stringerror
    - waitForRWData
    - Socket::read
    - NetworkError
    linkageType: ''
    returnType: size_t
    signature: size_t readWithTimeout(char* buffer, size_t n, int timeout) const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Socket::listen
      Src: /src/pdns/pdns/dnsdistdist/sstuff.hh:380,1
    - Dst: NetworkError
      Src: /src/pdns/pdns/dnsdistdist/sstuff.hh:381,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/sstuff.hh:381,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 383
      start: 378
    functionDepth: 0
    functionLinenumber: 378
    functionLinenumberEnd: 383
    functionName: Socket::listen
    functionSourceFile: /src/pdns/pdns/dnsdistdist/sstuff.hh
    functionUses: 3
    functionsReached:
    - stringerror
    - NetworkError
    - Socket::listen
    linkageType: ''
    returnType: void
    signature: void listen(int length = 10) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 389
      start: 386
    functionDepth: 0
    functionLinenumber: 386
    functionLinenumberEnd: 389
    functionName: Socket::getHandle
    functionSourceFile: /src/pdns/pdns/dnsdistdist/sstuff.hh
    functionUses: 20
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int getHandle() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 396
      start: 391
    functionDepth: 0
    functionLinenumber: 391
    functionLinenumberEnd: 396
    functionName: Socket::releaseHandle
    functionSourceFile: /src/pdns/pdns/dnsdistdist/sstuff.hh
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int releaseHandle()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 45
    functionDepth: 0
    functionLinenumber: 45
    functionLinenumberEnd: 48
    functionName: dnsdist::getStartTime
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: time_t
    signature: time_t getStartTime() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - now
    argTypes:
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 49
    functionDepth: 0
    functionLinenumber: 49
    functionLinenumberEnd: 52
    functionName: dnsdist::isStillValid
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool isStillValid(time_t now) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::configuration::getImmutableConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:91,1
    - Dst: isIPv4
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:92,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:92,1
    - Dst: isIPv4
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:92,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - ' from'
    argTypes:
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 89
    functionDepth: 1
    functionLinenumber: 89
    functionLinenumberEnd: 93
    functionName: dnsdist::getRange
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc
    functionUses: 0
    functionsReached:
    - isIPv4
    - dnsdist::configuration::getImmutableConfiguration
    - static_cast<uint8_t>
    linkageType: ''
    returnType: AddressAndPortRange
    signature: AddressAndPortRange getRange(const ComboAddress& from)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PKCS11DNSCryptoKeyEngine::hash
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:97,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' from'
    argTypes:
    - AddressAndPortRange
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 95
    functionDepth: 0
    functionLinenumber: 95
    functionLinenumberEnd: 99
    functionName: dnsdist::getShardID
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc
    functionUses: 0
    functionsReached:
    - PKCS11DNSCryptoKeyEngine::hash
    linkageType: ''
    returnType: size_t
    signature: size_t getShardID(const AddressAndPortRange& from)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<time_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:110,1
    - Dst: dnsdist::getStartTime
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:112,1
    - Dst: dnsdist::getStartTime
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:115,1
    - Dst: dnsdist::getStartTime
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:116,1
    - Dst: static_cast<double>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:132,1
    - Dst: static_cast<double>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:132,1
    - Dst: static_cast<double>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:133,1
    - Dst: static_cast<double>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:138,1
    - Dst: static_cast<double>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:138,1
    - Dst: static_cast<double>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:139,1
    - Dst: static_cast<double>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:144,1
    - Dst: static_cast<double>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:144,1
    - Dst: static_cast<double>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:145,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 36
    argCount: 7
    argNames:
    - ' activity'
    - now
    - maxTCPRate
    - maxTLSNewRate
    - maxTLSResumedRate
    - interval
    - isTLS
    argTypes:
    - boost::circular_buffer<ClientActivity>
    - time_t
    - uint64_t
    - uint64_t
    - uint64_t
    - uint64_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 150
      start: 101
    functionDepth: 0
    functionLinenumber: 101
    functionLinenumberEnd: 150
    functionName: dnsdist::checkTCPConnectionsRate
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc
    functionUses: 0
    functionsReached:
    - static_cast<time_t>
    - dnsdist::getStartTime
    - static_cast<double>
    linkageType: ''
    returnType: bool
    signature: bool checkTCPConnectionsRate(const boost::circular_buffer<ClientActivity>&
      activity, time_t now, uint64_t maxTCPRate, uint64_t maxTLSNewRate, uint64_t
      maxTLSResumedRate, uint64_t interval, bool isTLS)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:154,1
    - Dst: store
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:157,1
    - Dst: dnsdist::configuration::getImmutableConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:159,1
    - Dst: static_cast<time_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:161,1
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:163,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:164,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:165,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:165,1
    - Dst: erase
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:177,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 16
    argCount: 1
    argNames:
    - now
    argTypes:
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 180
      start: 152
    functionDepth: 1
    functionLinenumber: 152
    functionLinenumberEnd: 180
    functionName: dnsdist::IncomingConcurrentTCPConnectionsManager::cleanup
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc
    functionUses: 2
    functionsReached:
    - load
    - auto::get
    - end
    - lock
    - store
    - dnsdist::configuration::getImmutableConfiguration
    - begin
    - static_cast<time_t>
    - erase
    linkageType: ''
    returnType: void
    signature: void IncomingConcurrentTCPConnectionsManager::cleanup(time_t now)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:185,1
    - Dst: auto::clear
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:186,1
    - Dst: store
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:188,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 189
      start: 182
    functionDepth: 1
    functionLinenumber: 182
    functionLinenumberEnd: 189
    functionName: dnsdist::IncomingConcurrentTCPConnectionsManager::clear
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc
    functionUses: 7
    functionsReached:
    - auto::clear
    - store
    - lock
    linkageType: ''
    returnType: void
    signature: void IncomingConcurrentTCPConnectionsManager::clear()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:195,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:196,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 199
      start: 191
    functionDepth: 0
    functionLinenumber: 191
    functionLinenumberEnd: 199
    functionName: dnsdist::IncomingConcurrentTCPConnectionsManager::getNumberOfEntries
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc
    functionUses: 3
    functionsReached:
    - auto::size
    - lock
    linkageType: ''
    returnType: size_t
    signature: size_t IncomingConcurrentTCPConnectionsManager::getNumberOfEntries()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:204,1
    - Dst: front
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:204,1
    - Dst: push_front
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:205,1
    - Dst: front
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:207,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - ' entry'
    - now
    argTypes:
    - ClientEntry
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 208
      start: 201
    functionDepth: 0
    functionLinenumber: 201
    functionLinenumberEnd: 208
    functionName: dnsdist::getCurrentClientActivity
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc
    functionUses: 0
    functionsReached:
    - empty
    - front
    - push_front
    linkageType: ''
    returnType: ClientActivity
    signature: ClientActivity & getCurrentClientActivity(const ClientEntry& entry,
      time_t now)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::configuration::getImmutableConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:212,1
    - Dst: getCurrentClientActivity
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:226,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:236,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:236,1
    - Dst: getProtocol
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:236,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:236,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:237,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:237,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:237,1
    - Dst: getProtocol
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:237,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:237,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:241,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:241,1
    - Dst: getProtocol
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:241,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:241,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:242,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:242,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:242,1
    - Dst: getProtocol
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:242,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:242,1
    - Dst: checkTCPConnectionsRate
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:245,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:247,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:247,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:247,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:248,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:248,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:248,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:248,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:260,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:260,1
    - Dst: getProtocol
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:260,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:260,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:261,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:261,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:261,1
    - Dst: getProtocol
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:261,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:261,1
    - Dst: getRange
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:265,1
    - Dst: getShardID
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:267,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:268,1
    - Dst: auto::find
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:269,1
    - Dst: auto::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:270,1
    - Dst: ClientEntry::d_activity::set_capacity
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:272,1
    - Dst: updateActivity
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:274,1
    - Dst: auto::insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:275,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:275,1
    - Dst: checkConnectionAllowed
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:278,1
    - Dst: auto::modify
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:280,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 44
    argCount: 4
    argNames:
    - ' from'
    - isTLS
    - isQUIC
    - now
    argTypes:
    - ComboAddress
    - bool
    - bool
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 284
      start: 210
    functionDepth: 1
    functionLinenumber: 210
    functionLinenumberEnd: 284
    functionName: dnsdist::IncomingConcurrentTCPConnectionsManager::accountNewTCPConnection
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc
    functionUses: 12
    functionsReached:
    - ClientEntry::d_activity::set_capacity
    - auto::modify
    - updateActivity
    - dnsdist::configuration::getImmutableConfiguration
    - Logging::Loggable
    - getProtocol
    - checkTCPConnectionsRate
    - checkConnectionAllowed
    - dnsdist::logging::getTopLogger
    - at
    - getRange
    - getShardID
    - VERBOSESLOG
    - auto::insert
    - toStringWithPort
    - auto::find
    - std::move
    - infolog
    - getCurrentClientActivity
    - auto::end
    linkageType: ''
    returnType: IncomingConcurrentTCPConnectionsManager::NewConnectionResult
    signature: IncomingConcurrentTCPConnectionsManager::NewConnectionResult IncomingConcurrentTCPConnectionsManager::accountNewTCPConnection(const
      ComboAddress& from, bool isTLS, bool isQUIC, time_t now)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::configuration::getImmutableConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:288,1
    - Dst: getRange
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:295,1
    - Dst: getShardID
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:296,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:298,1
    - Dst: auto::find
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:299,1
    - Dst: auto::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:300,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - ' from'
    argTypes:
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 308
      start: 286
    functionDepth: 1
    functionLinenumber: 286
    functionLinenumberEnd: 308
    functionName: dnsdist::IncomingConcurrentTCPConnectionsManager::isClientOverThreshold
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc
    functionUses: 9
    functionsReached:
    - getRange
    - getShardID
    - dnsdist::configuration::getImmutableConfiguration
    - auto::end
    - at
    - auto::find
    linkageType: ''
    returnType: bool
    signature: bool IncomingConcurrentTCPConnectionsManager::isClientOverThreshold(const
      ComboAddress& from)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: getRange
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:312,1
    - Dst: getShardID
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:313,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:315,1
    - Dst: auto::find
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:316,1
    - Dst: auto::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:317,1
    - Dst: auto::modify
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:320,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:325,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:325,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:325,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:326,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:326,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:326,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 3
    argNames:
    - ' from'
    - now
    - seconds
    argTypes:
    - ComboAddress
    - time_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 327
      start: 310
    functionDepth: 1
    functionLinenumber: 310
    functionLinenumberEnd: 327
    functionName: dnsdist::IncomingConcurrentTCPConnectionsManager::banClientFor
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc
    functionUses: 0
    functionsReached:
    - getRange
    - Logging::Loggable
    - getShardID
    - VERBOSESLOG
    - auto::modify
    - infolog
    - dnsdist::logging::getTopLogger
    - auto::end
    - toStringWithPort
    - at
    - auto::find
    linkageType: ''
    returnType: void
    signature: void IncomingConcurrentTCPConnectionsManager::banClientFor(const ComboAddress&
      from, time_t now, uint32_t seconds)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::getRange
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:331,1
    - Dst: dnsdist::getShardID
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:332,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:334,1
    - Dst: auto::find
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:335,1
    - Dst: auto::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:336,1
    - Dst: callback
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:339,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - ' from'
    - ' callback'
    argTypes:
    - ComboAddress
    - std::function<void(const ClientEntry& entry)>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 341
      start: 329
    functionDepth: 2
    functionLinenumber: 329
    functionLinenumberEnd: 341
    functionName: dnsdist::editEntryIfPresent
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc
    functionUses: 0
    functionsReached:
    - callback
    - dnsdist::getShardID
    - dnsdist::getRange
    - auto::end
    - at
    - auto::find
    linkageType: ''
    returnType: void
    signature: void editEntryIfPresent(const ComboAddress& from, const std::function<void(const
      ClientEntry& entry)>& callback)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::configuration::getImmutableConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:345,1
    - Dst: editEntryIfPresent
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:349,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - ' from'
    argTypes:
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 355
      start: 343
    functionDepth: 1
    functionLinenumber: 343
    functionLinenumberEnd: 355
    functionName: dnsdist::IncomingConcurrentTCPConnectionsManager::accountClosedTCPConnection
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc
    functionUses: 12
    functionsReached:
    - editEntryIfPresent
    - dnsdist::configuration::getImmutableConfiguration
    linkageType: ''
    returnType: void
    signature: void IncomingConcurrentTCPConnectionsManager::accountClosedTCPConnection(const
      ComboAddress& from)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::configuration::getImmutableConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:359,1
    - Dst: editEntryIfPresent
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:363,1
    - Dst: getCurrentClientActivity
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:364,1
    - Dst: time
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:364,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - ' from'
    argTypes:
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 367
      start: 357
    functionDepth: 1
    functionLinenumber: 357
    functionLinenumberEnd: 367
    functionName: dnsdist::IncomingConcurrentTCPConnectionsManager::accountTLSNewSession
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc
    functionUses: 2
    functionsReached:
    - time
    - editEntryIfPresent
    - dnsdist::configuration::getImmutableConfiguration
    - getCurrentClientActivity
    linkageType: ''
    returnType: void
    signature: void IncomingConcurrentTCPConnectionsManager::accountTLSNewSession(const
      ComboAddress& from)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::configuration::getImmutableConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:371,1
    - Dst: editEntryIfPresent
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:375,1
    - Dst: getCurrentClientActivity
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:376,1
    - Dst: time
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:376,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - ' from'
    argTypes:
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 379
      start: 369
    functionDepth: 1
    functionLinenumber: 369
    functionLinenumberEnd: 379
    functionName: dnsdist::IncomingConcurrentTCPConnectionsManager::accountTLSResumedSession
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc
    functionUses: 2
    functionsReached:
    - time
    - editEntryIfPresent
    - dnsdist::configuration::getImmutableConfiguration
    - getCurrentClientActivity
    linkageType: ''
    returnType: void
    signature: void IncomingConcurrentTCPConnectionsManager::accountTLSResumedSession(const
      ComboAddress& from)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 45
    functionDepth: 0
    functionLinenumber: 45
    functionLinenumberEnd: 48
    functionName: dnsdist::getStartTime
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: time_t
    signature: time_t getStartTime() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - now
    argTypes:
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 49
    functionDepth: 0
    functionLinenumber: 49
    functionLinenumberEnd: 52
    functionName: dnsdist::isStillValid
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool isStillValid(time_t now) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::configuration::getImmutableConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:91,1
    - Dst: isIPv4
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:92,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:92,1
    - Dst: isIPv4
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:92,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - ' from'
    argTypes:
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 89
    functionDepth: 1
    functionLinenumber: 89
    functionLinenumberEnd: 93
    functionName: dnsdist::getRange
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc
    functionUses: 1
    functionsReached:
    - isIPv4
    - dnsdist::configuration::getImmutableConfiguration
    - static_cast<uint8_t>
    linkageType: ''
    returnType: AddressAndPortRange
    signature: AddressAndPortRange getRange(const ComboAddress& from)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PKCS11DNSCryptoKeyEngine::hash
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:97,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' from'
    argTypes:
    - AddressAndPortRange
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 95
    functionDepth: 0
    functionLinenumber: 95
    functionLinenumberEnd: 99
    functionName: dnsdist::getShardID
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc
    functionUses: 1
    functionsReached:
    - PKCS11DNSCryptoKeyEngine::hash
    linkageType: ''
    returnType: size_t
    signature: size_t getShardID(const AddressAndPortRange& from)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<time_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:110,1
    - Dst: dnsdist::getStartTime
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:112,1
    - Dst: dnsdist::getStartTime
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:115,1
    - Dst: dnsdist::getStartTime
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:116,1
    - Dst: static_cast<double>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:132,1
    - Dst: static_cast<double>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:132,1
    - Dst: static_cast<double>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:133,1
    - Dst: static_cast<double>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:138,1
    - Dst: static_cast<double>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:138,1
    - Dst: static_cast<double>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:139,1
    - Dst: static_cast<double>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:144,1
    - Dst: static_cast<double>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:144,1
    - Dst: static_cast<double>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:145,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 36
    argCount: 7
    argNames:
    - ' activity'
    - now
    - maxTCPRate
    - maxTLSNewRate
    - maxTLSResumedRate
    - interval
    - isTLS
    argTypes:
    - boost::circular_buffer<ClientActivity>
    - time_t
    - uint64_t
    - uint64_t
    - uint64_t
    - uint64_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 150
      start: 101
    functionDepth: 0
    functionLinenumber: 101
    functionLinenumberEnd: 150
    functionName: dnsdist::checkTCPConnectionsRate
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc
    functionUses: 0
    functionsReached:
    - static_cast<time_t>
    - dnsdist::getStartTime
    - static_cast<double>
    linkageType: ''
    returnType: bool
    signature: bool checkTCPConnectionsRate(const boost::circular_buffer<ClientActivity>&
      activity, time_t now, uint64_t maxTCPRate, uint64_t maxTLSNewRate, uint64_t
      maxTLSResumedRate, uint64_t interval, bool isTLS)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:154,1
    - Dst: store
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:157,1
    - Dst: dnsdist::configuration::getImmutableConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:159,1
    - Dst: static_cast<time_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:161,1
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:163,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:164,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:165,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:165,1
    - Dst: erase
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:177,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 16
    argCount: 1
    argNames:
    - now
    argTypes:
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 180
      start: 152
    functionDepth: 1
    functionLinenumber: 152
    functionLinenumberEnd: 180
    functionName: dnsdist::IncomingConcurrentTCPConnectionsManager::cleanup
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc
    functionUses: 2
    functionsReached:
    - load
    - auto::get
    - end
    - lock
    - store
    - dnsdist::configuration::getImmutableConfiguration
    - begin
    - static_cast<time_t>
    - erase
    linkageType: ''
    returnType: void
    signature: void IncomingConcurrentTCPConnectionsManager::cleanup(time_t now)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:185,1
    - Dst: auto::clear
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:186,1
    - Dst: store
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:188,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 189
      start: 182
    functionDepth: 1
    functionLinenumber: 182
    functionLinenumberEnd: 189
    functionName: dnsdist::IncomingConcurrentTCPConnectionsManager::clear
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc
    functionUses: 7
    functionsReached:
    - auto::clear
    - store
    - lock
    linkageType: ''
    returnType: void
    signature: void IncomingConcurrentTCPConnectionsManager::clear()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:195,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:196,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 199
      start: 191
    functionDepth: 0
    functionLinenumber: 191
    functionLinenumberEnd: 199
    functionName: dnsdist::IncomingConcurrentTCPConnectionsManager::getNumberOfEntries
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc
    functionUses: 3
    functionsReached:
    - auto::size
    - lock
    linkageType: ''
    returnType: size_t
    signature: size_t IncomingConcurrentTCPConnectionsManager::getNumberOfEntries()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:204,1
    - Dst: front
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:204,1
    - Dst: push_front
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:205,1
    - Dst: front
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:207,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - ' entry'
    - now
    argTypes:
    - ClientEntry
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 208
      start: 201
    functionDepth: 0
    functionLinenumber: 201
    functionLinenumberEnd: 208
    functionName: dnsdist::getCurrentClientActivity
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc
    functionUses: 0
    functionsReached:
    - empty
    - front
    - push_front
    linkageType: ''
    returnType: ClientActivity
    signature: ClientActivity & getCurrentClientActivity(const ClientEntry& entry,
      time_t now)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::configuration::getImmutableConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:212,1
    - Dst: getCurrentClientActivity
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:226,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:236,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:236,1
    - Dst: getProtocol
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:236,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:236,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:237,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:237,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:237,1
    - Dst: getProtocol
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:237,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:237,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:241,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:241,1
    - Dst: getProtocol
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:241,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:241,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:242,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:242,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:242,1
    - Dst: getProtocol
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:242,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:242,1
    - Dst: checkTCPConnectionsRate
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:245,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:247,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:247,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:247,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:248,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:248,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:248,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:248,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:260,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:260,1
    - Dst: getProtocol
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:260,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:260,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:261,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:261,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:261,1
    - Dst: getProtocol
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:261,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:261,1
    - Dst: getRange
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:265,1
    - Dst: getShardID
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:267,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:268,1
    - Dst: auto::find
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:269,1
    - Dst: auto::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:270,1
    - Dst: ClientEntry::d_activity::set_capacity
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:272,1
    - Dst: updateActivity
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:274,1
    - Dst: auto::insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:275,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:275,1
    - Dst: checkConnectionAllowed
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:278,1
    - Dst: auto::modify
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:280,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 44
    argCount: 4
    argNames:
    - ' from'
    - isTLS
    - isQUIC
    - now
    argTypes:
    - ComboAddress
    - bool
    - bool
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 284
      start: 210
    functionDepth: 1
    functionLinenumber: 210
    functionLinenumberEnd: 284
    functionName: dnsdist::IncomingConcurrentTCPConnectionsManager::accountNewTCPConnection
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc
    functionUses: 12
    functionsReached:
    - ClientEntry::d_activity::set_capacity
    - auto::modify
    - updateActivity
    - dnsdist::configuration::getImmutableConfiguration
    - Logging::Loggable
    - getProtocol
    - checkTCPConnectionsRate
    - checkConnectionAllowed
    - dnsdist::logging::getTopLogger
    - at
    - getRange
    - getShardID
    - VERBOSESLOG
    - auto::insert
    - toStringWithPort
    - auto::find
    - std::move
    - infolog
    - getCurrentClientActivity
    - auto::end
    linkageType: ''
    returnType: IncomingConcurrentTCPConnectionsManager::NewConnectionResult
    signature: IncomingConcurrentTCPConnectionsManager::NewConnectionResult IncomingConcurrentTCPConnectionsManager::accountNewTCPConnection(const
      ComboAddress& from, bool isTLS, bool isQUIC, time_t now)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::configuration::getImmutableConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:288,1
    - Dst: getRange
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:295,1
    - Dst: getShardID
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:296,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:298,1
    - Dst: auto::find
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:299,1
    - Dst: auto::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:300,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - ' from'
    argTypes:
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 308
      start: 286
    functionDepth: 1
    functionLinenumber: 286
    functionLinenumberEnd: 308
    functionName: dnsdist::IncomingConcurrentTCPConnectionsManager::isClientOverThreshold
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc
    functionUses: 9
    functionsReached:
    - getRange
    - getShardID
    - dnsdist::configuration::getImmutableConfiguration
    - auto::end
    - at
    - auto::find
    linkageType: ''
    returnType: bool
    signature: bool IncomingConcurrentTCPConnectionsManager::isClientOverThreshold(const
      ComboAddress& from)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: getRange
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:312,1
    - Dst: getShardID
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:313,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:315,1
    - Dst: auto::find
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:316,1
    - Dst: auto::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:317,1
    - Dst: auto::modify
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:320,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:325,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:325,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:325,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:326,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:326,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:326,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 3
    argNames:
    - ' from'
    - now
    - seconds
    argTypes:
    - ComboAddress
    - time_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 327
      start: 310
    functionDepth: 1
    functionLinenumber: 310
    functionLinenumberEnd: 327
    functionName: dnsdist::IncomingConcurrentTCPConnectionsManager::banClientFor
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc
    functionUses: 0
    functionsReached:
    - getRange
    - Logging::Loggable
    - getShardID
    - VERBOSESLOG
    - auto::modify
    - infolog
    - dnsdist::logging::getTopLogger
    - auto::end
    - toStringWithPort
    - at
    - auto::find
    linkageType: ''
    returnType: void
    signature: void IncomingConcurrentTCPConnectionsManager::banClientFor(const ComboAddress&
      from, time_t now, uint32_t seconds)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::getRange
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:331,1
    - Dst: dnsdist::getShardID
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:332,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:334,1
    - Dst: auto::find
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:335,1
    - Dst: auto::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:336,1
    - Dst: callback
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:339,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - ' from'
    - ' callback'
    argTypes:
    - ComboAddress
    - std::function<void(const ClientEntry& entry)>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 341
      start: 329
    functionDepth: 2
    functionLinenumber: 329
    functionLinenumberEnd: 341
    functionName: dnsdist::editEntryIfPresent
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc
    functionUses: 0
    functionsReached:
    - callback
    - dnsdist::getShardID
    - dnsdist::getRange
    - auto::end
    - at
    - auto::find
    linkageType: ''
    returnType: void
    signature: void editEntryIfPresent(const ComboAddress& from, const std::function<void(const
      ClientEntry& entry)>& callback)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::configuration::getImmutableConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:345,1
    - Dst: editEntryIfPresent
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:349,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - ' from'
    argTypes:
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 355
      start: 343
    functionDepth: 1
    functionLinenumber: 343
    functionLinenumberEnd: 355
    functionName: dnsdist::IncomingConcurrentTCPConnectionsManager::accountClosedTCPConnection
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc
    functionUses: 12
    functionsReached:
    - editEntryIfPresent
    - dnsdist::configuration::getImmutableConfiguration
    linkageType: ''
    returnType: void
    signature: void IncomingConcurrentTCPConnectionsManager::accountClosedTCPConnection(const
      ComboAddress& from)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::configuration::getImmutableConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:359,1
    - Dst: editEntryIfPresent
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:363,1
    - Dst: getCurrentClientActivity
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:364,1
    - Dst: time
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:364,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - ' from'
    argTypes:
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 367
      start: 357
    functionDepth: 1
    functionLinenumber: 357
    functionLinenumberEnd: 367
    functionName: dnsdist::IncomingConcurrentTCPConnectionsManager::accountTLSNewSession
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc
    functionUses: 2
    functionsReached:
    - time
    - editEntryIfPresent
    - dnsdist::configuration::getImmutableConfiguration
    - getCurrentClientActivity
    linkageType: ''
    returnType: void
    signature: void IncomingConcurrentTCPConnectionsManager::accountTLSNewSession(const
      ComboAddress& from)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::configuration::getImmutableConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:371,1
    - Dst: editEntryIfPresent
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:375,1
    - Dst: getCurrentClientActivity
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:376,1
    - Dst: time
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc:376,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - ' from'
    argTypes:
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 379
      start: 369
    functionDepth: 1
    functionLinenumber: 369
    functionLinenumberEnd: 379
    functionName: dnsdist::IncomingConcurrentTCPConnectionsManager::accountTLSResumedSession
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc
    functionUses: 2
    functionsReached:
    - time
    - editEntryIfPresent
    - dnsdist::configuration::getImmutableConfiguration
    - getCurrentClientActivity
    linkageType: ''
    returnType: void
    signature: void IncomingConcurrentTCPConnectionsManager::accountTLSResumedSession(const
      ComboAddress& from)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:54,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - req
    - next
    argTypes:
    - ExpectedRequest
    - IOState
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 53
    functionDepth: 0
    functionLinenumber: 53
    functionLinenumberEnd: 56
    functionName: ExpectedStep
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void ExpectedStep(ExpectedRequest req, IOState next, size_t bytes_
      = 0, std::function<void(int descriptor)> func = nullptr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:84,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:84,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ' outs'
    - step
    argTypes:
    - std::ostream
    - ExpectedStep::ExpectedRequest
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 81
    functionDepth: 0
    functionLinenumber: 81
    functionLinenumberEnd: 86
    functionName: '& operator<<(std::ostream& outs, ExpectedStep::ExpectedRequest
      step)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc
    functionUses: 0
    functionsReached:
    - static_cast<size_t>
    - std::vector::at
    linkageType: ''
    returnType: std::ostream
    signature: std::ostream & operator<<(std::ostream& outs, ExpectedStep::ExpectedRequest
      step)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: std::unique_ptr<nghttp2_session, void (*)(nghttp2_session*)>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:92,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:94,1
    - Dst: insert
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:95,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:95,1
    - Dst: d_proxyProtocolPayload::begin
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:95,1
    - Dst: d_proxyProtocolPayload::end
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:95,1
    - Dst: nghttp2_session_callbacks_new
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:98,1
    - Dst: nghttp2_session_callbacks_set_send_callback
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:101,1
    - Dst: std::unique_ptr::get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:101,1
    - Dst: nghttp2_session_callbacks_set_on_frame_recv_callback
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:102,1
    - Dst: std::unique_ptr::get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:102,1
    - Dst: nghttp2_session_callbacks_set_on_header_callback
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:103,1
    - Dst: std::unique_ptr::get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:103,1
    - Dst: nghttp2_session_callbacks_set_on_data_chunk_recv_callback
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:104,1
    - Dst: std::unique_ptr::get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:104,1
    - Dst: nghttp2_session_callbacks_set_on_stream_close_callback
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:105,1
    - Dst: std::unique_ptr::get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:105,1
    - Dst: nghttp2_session_client_new
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:107,1
    - Dst: std::unique_ptr::get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:107,1
    - Dst: std::unique_ptr<nghttp2_session, void (*)(nghttp2_session*)>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:108,1
    - Dst: nghttp2_submit_settings
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:121,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:121,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:121,1
    - Dst: std::array::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:121,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:123,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:123,1
    - Dst: nghttp2_strerror
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:123,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:129,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:129,1
    - Dst: NGHTTP2Headers::addStaticHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:132,1
    - Dst: NGHTTP2Headers::addStaticHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:133,1
    - Dst: NGHTTP2Headers::addDynamicHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:134,1
    - Dst: NGHTTP2Headers::addDynamicHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:135,1
    - Dst: NGHTTP2Headers::addStaticHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:136,1
    - Dst: NGHTTP2Headers::addStaticHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:137,1
    - Dst: NGHTTP2Headers::addStaticHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:138,1
    - Dst: NGHTTP2Headers::addDynamicHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:139,1
    - Dst: static_cast<DOHConnection*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:149,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:153,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:154,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:156,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:156,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:160,1
    - Dst: static_cast<ssize_t>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:163,1
    - Dst: nghttp2_submit_request
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:166,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:166,1
    - Dst: std::vector::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:166,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:166,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:168,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:168,1
    - Dst: nghttp2_strerror
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:168,1
    - Dst: nghttp2_session_send
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:171,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:171,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:173,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:173,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 47
    argCount: 1
    argNames:
    - connectionID
    argTypes:
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 176
      start: 91
    functionDepth: 2
    functionLinenumber: 91
    functionLinenumberEnd: 176
    functionName: DOHConnection::DOHConnection
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc
    functionUses: 0
    functionsReached:
    - nghttp2_session_callbacks_new
    - std::to_string
    - insert
    - nghttp2_session_send
    - std::string
    - nghttp2_session_callbacks_set_on_data_chunk_recv_callback
    - std::unique_ptr::get
    - std::vector::data
    - std::vector::size
    - nghttp2_session_callbacks_set_send_callback
    - nghttp2_session_callbacks_set_on_header_callback
    - size
    - d_proxyProtocolPayload::begin
    - begin
    - NGHTTP2Headers::addDynamicHeader
    - at
    - NGHTTP2Headers::addStaticHeader
    - std::runtime_error
    - nghttp2_strerror
    - nghttp2_session_callbacks_set_on_frame_recv_callback
    - nghttp2_submit_request
    - get
    - nghttp2_session_client_new
    - nghttp2_submit_settings
    - std::array::data
    - memcpy
    - static_cast<ssize_t>
    - nghttp2_session_callbacks_set_on_stream_close_callback
    - static_cast<DOHConnection*>
    - std::unique_ptr<nghttp2_session, void (*)(nghttp2_session*)>
    - d_proxyProtocolPayload::end
    - std::array::size
    linkageType: ''
    returnType: void
    signature: void DOHConnection(uint64_t connectionID)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: nghttp2_session_mem_recv
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:188,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:188,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:188,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:190,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:190,1
    - Dst: nghttp2_strerror
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:190,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:190,1
    - Dst: nghttp2_session_send
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:194,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:194,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:196,1
    - Dst: nghttp2_strerror
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:196,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 7
    argCount: 3
    argNames:
    - ' data'
    - pos
    - toWrite
    argTypes:
    - PacketBuffer
    - size_t
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 198
      start: 186
    functionDepth: 0
    functionLinenumber: 186
    functionLinenumberEnd: 198
    functionName: DOHConnection::submitIncoming
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc
    functionUses: 0
    functionsReached:
    - std::to_string
    - at
    - nghttp2_strerror
    - get
    - nghttp2_session_send
    - std::string
    - nghttp2_session_mem_recv
    - static_cast<int>
    linkageType: ''
    returnType: void
    signature: void submitIncoming(const PacketBuffer& data, size_t pos, size_t toWrite)
      const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<DOHConnection*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:205,1
    - Dst: auto*::d_clientOutBuffer::insert
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:207,1
    - Dst: auto*::d_clientOutBuffer::end
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:207,1
    - Dst: static_cast<ssize_t>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:208,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 5
    argNames:
    - session
    - data
    - length
    - flags
    - user_data
    argTypes:
    - nghttp2_session*
    - uint8_t*
    - size_t
    - int
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 209
      start: 201
    functionDepth: 1
    functionLinenumber: 201
    functionLinenumberEnd: 209
    functionName: DOHConnection::send_callback
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc
    functionUses: 0
    functionsReached:
    - static_cast<ssize_t>
    - auto*::d_clientOutBuffer::end
    - auto*::d_clientOutBuffer::insert
    - static_cast<DOHConnection*>
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t send_callback(nghttp2_session* session, const uint8_t* data,
      size_t length, int flags, void* user_data)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<DOHConnection*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:214,1
    - Dst: auto*::d_responses::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:216,1
    - Dst: auto*::d_responseCodes::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:217,1
    - Dst: BOOST_REQUIRE_GT
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:221,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:221,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:222,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:223,1
    - Dst: dnsheader_aligned::get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:223,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:225,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:225,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:226,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:226,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:226,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:227,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:228,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:228,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:229,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:229,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:229,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:229,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:230,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 16
    argCount: 3
    argNames:
    - session
    - frame
    - user_data
    argTypes:
    - nghttp2_session*
    - nghttp2_frame*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 236
      start: 211
    functionDepth: 0
    functionLinenumber: 211
    functionLinenumberEnd: 236
    functionName: DOHConnection::on_frame_recv_callback
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc
    functionUses: 0
    functionsReached:
    - auto*::d_responses::at
    - std::to_string
    - at
    - ntohs
    - dnsheader_aligned::get
    - static_cast<DOHConnection*>
    - size
    - BOOST_REQUIRE_GT
    - data
    - BOOST_CHECK
    - auto*::d_responseCodes::at
    - BOOST_REQUIRE_EQUAL
    linkageType: ''
    returnType: int
    signature: int on_frame_recv_callback(nghttp2_session* session, const nghttp2_frame*
      frame, void* user_data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<DOHConnection*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:242,1
    - Dst: insert
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:245,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:245,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 6
    argNames:
    - session
    - flags
    - stream_id
    - data
    - len
    - user_data
    argTypes:
    - nghttp2_session*
    - uint8_t
    - int32_t
    - uint8_t*
    - size_t
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 247
      start: 238
    functionDepth: 1
    functionLinenumber: 238
    functionLinenumberEnd: 247
    functionName: DOHConnection::on_data_chunk_recv_callback
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc
    functionUses: 0
    functionsReached:
    - end
    - static_cast<DOHConnection*>
    - insert
    linkageType: ''
    returnType: int
    signature: int on_data_chunk_recv_callback(nghttp2_session* session, uint8_t flags,
      int32_t stream_id, const uint8_t* data, size_t len, void* user_data)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<DOHConnection*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:253,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:256,1
    - Dst: memcmp
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:256,1
    - Dst: std::string::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:256,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:256,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:259,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:259,1
    - Dst: pdns::checked_stoi_into
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:261,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:261,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:261,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:264,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:264,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:265,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:269,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:269,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:269,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:270,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:270,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:270,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 8
    argNames:
    - session
    - frame
    - name
    - namelen
    - value
    - valuelen
    - flags
    - user_data
    argTypes:
    - nghttp2_session*
    - nghttp2_frame*
    - uint8_t*
    - size_t
    - uint8_t*
    - size_t
    - uint8_t
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 276
      start: 249
    functionDepth: 1
    functionLinenumber: 249
    functionLinenumberEnd: 276
    functionName: DOHConnection::on_header_callback
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc
    functionUses: 0
    functionsReached:
    - memcmp
    - SLOG
    - std::to_string
    - BOOST_CHECK
    - Logging::Loggable
    - pdns::checked_stoi_into
    - what
    - std::string::data
    - static_cast<DOHConnection*>
    - infolog
    - reinterpret_cast<const char*>
    - dnsdist::logging::getTopLogger
    - std::string
    - std::string::size
    - at
    linkageType: ''
    returnType: int
    signature: int on_header_callback(nghttp2_session* session, const nghttp2_frame*
      frame, const uint8_t* name, size_t namelen, const uint8_t* value, size_t valuelen,
      uint8_t flags, void* user_data)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 4
    argNames:
    - session
    - stream_id
    - error_code
    - user_data
    argTypes:
    - nghttp2_session*
    - int32_t
    - uint32_t
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 285
      start: 278
    functionDepth: 0
    functionLinenumber: 278
    functionLinenumberEnd: 285
    functionName: DOHConnection::on_stream_close_callback
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int on_stream_close_callback(nghttp2_session* session, int32_t stream_id,
      uint32_t error_code, void* user_data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::make_unique<DOHConnection>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:295,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:296,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - descriptor
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 297
      start: 291
    functionDepth: 0
    functionLinenumber: 291
    functionLinenumberEnd: 297
    functionName: MockupTLSConnection::MockupTLSConnection
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc
    functionUses: 0
    functionsReached:
    - std::make_unique<DOHConnection>
    - std::move
    linkageType: ''
    returnType: void
    signature: void MockupTLSConnection(int descriptor, [[maybe_unused]] bool client
      = false, [[maybe_unused]] bool needProxyProtocol = false)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 298
      start: 298
    functionDepth: 0
    functionLinenumber: 298
    functionLinenumberEnd: 298
    functionName: MockupTLSConnection::MockupTLSConnection
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void MockupTLSConnection(const MockupTLSConnection&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 299
      start: 299
    functionDepth: 0
    functionLinenumber: 299
    functionLinenumberEnd: 299
    functionName: MockupTLSConnection::MockupTLSConnection
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void MockupTLSConnection(MockupTLSConnection&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 300
      start: 300
    functionDepth: 0
    functionLinenumber: 300
    functionLinenumberEnd: 300
    functionName: '& operator=(const MockupTLSConnection&)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: MockupTLSConnection
    signature: MockupTLSConnection & operator=(const MockupTLSConnection&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 301
      start: 301
    functionDepth: 0
    functionLinenumber: 301
    functionLinenumberEnd: 301
    functionName: '& operator=(MockupTLSConnection&&)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: MockupTLSConnection
    signature: MockupTLSConnection & operator=(MockupTLSConnection&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 302
      start: 302
    functionDepth: 0
    functionLinenumber: 302
    functionLinenumberEnd: 302
    functionName: ~MockupTLSConnection() override
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~MockupTLSConnection() override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MockupTLSConnection::getStep
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:306,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:307,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 310
      start: 304
    functionDepth: 0
    functionLinenumber: 304
    functionLinenumberEnd: 310
    functionName: MockupTLSConnection::tryHandshake
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc
    functionUses: 0
    functionsReached:
    - MockupTLSConnection::getStep
    - BOOST_REQUIRE_EQUAL
    linkageType: ''
    returnType: IOState
    signature: IOState tryHandshake() override
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:314,1
    - Dst: MockupTLSConnection::getStep
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:315,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:316,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:322,1
    - Dst: BOOST_REQUIRE_GE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:326,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:326,1
    - Dst: submitIncoming
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:332,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 3
    argNames:
    - ' buffer'
    - ' pos'
    - toWrite
    argTypes:
    - PacketBuffer
    - size_t
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 336
      start: 312
    functionDepth: 0
    functionLinenumber: 312
    functionLinenumberEnd: 336
    functionName: MockupTLSConnection::tryWrite
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc
    functionUses: 0
    functionsReached:
    - BOOST_REQUIRE_GE
    - MockupTLSConnection::getStep
    - std::runtime_error
    - submitIncoming
    - size
    - at
    - BOOST_REQUIRE_EQUAL
    linkageType: ''
    returnType: IOState
    signature: IOState tryWrite(const PacketBuffer& buffer, size_t& pos, size_t toWrite)
      override
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:340,1
    - Dst: MockupTLSConnection::getStep
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:341,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:342,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:348,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:358,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:359,1
    - Dst: BOOST_REQUIRE_GE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:363,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:363,1
    - Dst: BOOST_REQUIRE_GE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:366,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:366,1
    - Dst: std::copy
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:369,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:369,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:369,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:369,1
    - Dst: erase
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:372,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:372,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:372,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 24
    argCount: 3
    argNames:
    - ' buffer'
    - ' pos'
    - toRead
    argTypes:
    - PacketBuffer
    - size_t
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 375
      start: 338
    functionDepth: 0
    functionLinenumber: 338
    functionLinenumberEnd: 375
    functionName: MockupTLSConnection::tryRead
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc
    functionUses: 0
    functionsReached:
    - BOOST_REQUIRE_GE
    - MockupTLSConnection::getStep
    - std::runtime_error
    - size
    - begin
    - erase
    - at
    - BOOST_REQUIRE_EQUAL
    - std::copy
    linkageType: ''
    returnType: IOState
    signature: IOState tryRead(PacketBuffer& buffer, size_t& pos, size_t toRead, bool
      allowIncomplete = false) override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:381,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - fastOpen
    - ' remote'
    argTypes:
    - bool
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 382
      start: 377
    functionDepth: 0
    functionLinenumber: 377
    functionLinenumberEnd: 382
    functionName: MockupTLSConnection::tryConnect
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc
    functionUses: 0
    functionsReached:
    - std::runtime_error
    linkageType: ''
    returnType: IOState
    signature: IOState tryConnect(bool fastOpen, const ComboAddress& remote) override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MockupTLSConnection::getStep
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:386,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:387,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 388
      start: 384
    functionDepth: 0
    functionLinenumber: 384
    functionLinenumberEnd: 388
    functionName: MockupTLSConnection::close
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc
    functionUses: 0
    functionsReached:
    - MockupTLSConnection::getStep
    - BOOST_REQUIRE_EQUAL
    linkageType: ''
    returnType: void
    signature: void close() override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 393
      start: 390
    functionDepth: 0
    functionLinenumber: 390
    functionLinenumberEnd: 393
    functionName: MockupTLSConnection::isUsable
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool isUsable() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 398
      start: 395
    functionDepth: 0
    functionLinenumber: 395
    functionLinenumberEnd: 398
    functionName: MockupTLSConnection::getServerNameIndication
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string getServerNameIndication() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 403
      start: 400
    functionDepth: 0
    functionLinenumber: 400
    functionLinenumberEnd: 403
    functionName: MockupTLSConnection::getNextProtocol
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::vector<uint8_t>
    signature: std::vector<uint8_t> getNextProtocol() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 408
      start: 405
    functionDepth: 0
    functionLinenumber: 405
    functionLinenumberEnd: 408
    functionName: MockupTLSConnection::getTLSVersion
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: LibsslTLSVersion
    signature: LibsslTLSVersion getTLSVersion() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 413
      start: 410
    functionDepth: 0
    functionLinenumber: 410
    functionLinenumberEnd: 413
    functionName: MockupTLSConnection::getVerifyResult
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::pair<long, std::string>
    signature: std::pair<long, std::string> getVerifyResult() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 418
      start: 415
    functionDepth: 0
    functionLinenumber: 415
    functionLinenumberEnd: 418
    functionName: MockupTLSConnection::hasSessionBeenResumed
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool hasSessionBeenResumed() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 423
      start: 420
    functionDepth: 0
    functionLinenumber: 420
    functionLinenumberEnd: 423
    functionName: MockupTLSConnection::getSessions
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::vector<std::unique_ptr<TLSSession>>
    signature: std::vector<std::unique_ptr<TLSSession>> getSessions() override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' session'
    argTypes:
    - std::unique_ptr<TLSSession>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 428
      start: 425
    functionDepth: 0
    functionLinenumber: 425
    functionLinenumberEnd: 428
    functionName: MockupTLSConnection::setSession
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setSession(std::unique_ptr<TLSSession>& session) override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 433
      start: 430
    functionDepth: 0
    functionLinenumber: 430
    functionLinenumberEnd: 433
    functionName: MockupTLSConnection::getAsyncFDs
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::vector<int>
    signature: std::vector<int> getAsyncFDs() override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 438
      start: 436
    functionDepth: 0
    functionLinenumber: 436
    functionLinenumberEnd: 438
    functionName: MockupTLSConnection::doHandshake
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void doHandshake() override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - fastOpen
    - ' remote'
    - ' timeout'
    argTypes:
    - bool
    - ComboAddress
    - struct timeval
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 445
      start: 440
    functionDepth: 0
    functionLinenumber: 440
    functionLinenumberEnd: 445
    functionName: MockupTLSConnection::connect
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void connect(bool fastOpen, const ComboAddress& remote, const struct
      timeval& timeout) override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 3
    argNames:
    - buffer
    - bufferSize
    - ' readTimeout'
    argTypes:
    - void*
    - size_t
    - struct timeval
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 455
      start: 447
    functionDepth: 0
    functionLinenumber: 447
    functionLinenumberEnd: 455
    functionName: MockupTLSConnection::read
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: size_t read(void* buffer, size_t bufferSize, const struct timeval&
      readTimeout, const struct timeval& totalTimeout = {0, 0}, bool allowIncomplete
      = false) override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - buffer
    - bufferSize
    - ' writeTimeout'
    argTypes:
    - void*
    - size_t
    - struct timeval
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 463
      start: 457
    functionDepth: 0
    functionLinenumber: 457
    functionLinenumberEnd: 463
    functionName: MockupTLSConnection::write
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: size_t write(const void* buffer, size_t bufferSize, const struct timeval&
      writeTimeout) override
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:468,1
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:468,1
    - Dst: front
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:469,1
    - Dst: pop_front
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:470,1
    - Dst: auto::cb
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:473,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 477
      start: 466
    functionDepth: 0
    functionLinenumber: 466
    functionLinenumberEnd: 477
    functionName: MockupTLSConnection::getStep
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc
    functionUses: 4
    functionsReached:
    - auto::cb
    - pop_front
    - BOOST_REQUIRE
    - empty
    - front
    linkageType: ''
    returnType: ExpectedStep
    signature: ExpectedStep getStep() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: reset
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:488,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 489
      start: 486
    functionDepth: 0
    functionLinenumber: 486
    functionLinenumberEnd: 489
    functionName: TestFixture
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc
    functionUses: 0
    functionsReached:
    - reset
    linkageType: ''
    returnType: void
    signature: void TestFixture()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 490
      start: 490
    functionDepth: 0
    functionLinenumber: 490
    functionLinenumberEnd: 490
    functionName: TestFixture
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void TestFixture(const TestFixture&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 491
      start: 491
    functionDepth: 0
    functionLinenumber: 491
    functionLinenumberEnd: 491
    functionName: TestFixture
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void TestFixture(TestFixture&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 492
      start: 492
    functionDepth: 0
    functionLinenumber: 492
    functionLinenumberEnd: 492
    functionName: '& operator=(const TestFixture&)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: TestFixture
    signature: TestFixture & operator=(const TestFixture&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 493
      start: 493
    functionDepth: 0
    functionLinenumber: 493
    functionLinenumberEnd: 493
    functionName: '& operator=(TestFixture&&)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: TestFixture
    signature: TestFixture & operator=(TestFixture&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: reset
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:496,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 497
      start: 494
    functionDepth: 0
    functionLinenumber: 494
    functionLinenumberEnd: 497
    functionName: ~TestFixture()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc
    functionUses: 0
    functionsReached:
    - reset
    linkageType: ''
    returnType: void
    signature: void ~TestFixture()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: clear
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:502,1
    - Dst: clear
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:503,1
    - Dst: clear
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:504,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 509
      start: 500
    functionDepth: 1
    functionLinenumber: 500
    functionLinenumberEnd: 509
    functionName: reset
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc
    functionUses: 87
    functionsReached:
    - clear
    linkageType: ''
    returnType: void
    signature: void reset()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getBackendAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:514,1
    - Dst: std::make_shared<DOHFrontend>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:516,1
    - Dst: std::make_shared<MockupTLSCtx>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:516,1
    - Dst: ClientState::dohFrontend::d_urls::insert
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:517,1
    - Dst: TCPClientThreadData::TCPClientThreadData
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:519,1
    - Dst: std::make_unique<MockupFDMultiplexer>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:520,1
    - Dst: gettimeofday
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:523,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:529,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:530,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:530,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:534,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:535,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:536,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:537,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:537,1
    - Dst: GenericDNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:538,1
    - Dst: GenericDNSPacketWriter::xfr32BitInt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:539,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:540,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:555,1
    - Dst: std::make_shared<IncomingHTTP2Connection>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:562,1
    - Dst: ConnectionInfo
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:562,1
    - Dst: getBackendAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:562,1
    - Dst: auto::handleIO
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:563,1
    - Dst: dynamic_cast<MockupFDMultiplexer*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:583,1
    - Dst: TCPClientThreadData::mplexer::get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:583,1
    - Dst: std::make_shared<IncomingHTTP2Connection>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:585,1
    - Dst: ConnectionInfo
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:585,1
    - Dst: getBackendAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:585,1
    - Dst: auto::handleIO
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:586,1
    - Dst: TCPClientThreadData::mplexer::getWatchedFDCount
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:587,1
    - Dst: TCPClientThreadData::mplexer::getWatchedFDCount
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:587,1
    - Dst: TCPClientThreadData::mplexer::run
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:588,1
    - Dst: getMutableData
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:597,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:613,1
    - Dst: std::make_shared<IncomingHTTP2Connection>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:620,1
    - Dst: ConnectionInfo
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:620,1
    - Dst: getBackendAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:620,1
    - Dst: auto::handleIO
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:621,1
    - Dst: getMutableData
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:629,1
    - Dst: dynamic_cast<MockupFDMultiplexer*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:651,1
    - Dst: TCPClientThreadData::mplexer::get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:651,1
    - Dst: std::make_shared<IncomingHTTP2Connection>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:653,1
    - Dst: ConnectionInfo
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:653,1
    - Dst: getBackendAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:653,1
    - Dst: auto::handleIO
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:654,1
    - Dst: TCPClientThreadData::mplexer::getWatchedFDCount
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:655,1
    - Dst: TCPClientThreadData::mplexer::getWatchedFDCount
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:655,1
    - Dst: TCPClientThreadData::mplexer::run
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:656,1
    - Dst: getMutableData
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:665,1
    - Dst: dynamic_cast<MockupFDMultiplexer*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:691,1
    - Dst: TCPClientThreadData::mplexer::get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:691,1
    - Dst: std::make_shared<IncomingHTTP2Connection>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:693,1
    - Dst: ConnectionInfo
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:693,1
    - Dst: getBackendAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:693,1
    - Dst: auto::handleIO
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:694,1
    - Dst: TCPClientThreadData::mplexer::getWatchedFDCount
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:695,1
    - Dst: TCPClientThreadData::mplexer::getWatchedFDCount
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:695,1
    - Dst: TCPClientThreadData::mplexer::run
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:696,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 61
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 699
      start: 512
    functionDepth: 1
    functionLinenumber: 512
    functionLinenumberEnd: 699
    functionName: BOOST_FIXTURE_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc
    functionUses: 0
    functionsReached:
    - getMutableData
    - GenericDNSPacketWriter::getHeader
    - auto::handleIO
    - gettimeofday
    - GenericDNSPacketWriter::xfr32BitInt
    - ClientState::dohFrontend::d_urls::insert
    - TCPClientThreadData::mplexer::run
    - GenericDNSPacketWriter::startRecord
    - ConnectionInfo
    - htons
    - pdns::max
    - std::make_shared<DOHFrontend>
    - TCPClientThreadData::mplexer::get
    - std::make_unique<MockupFDMultiplexer>
    - TCPClientThreadData::mplexer::getWatchedFDCount
    - dynamic_cast<MockupFDMultiplexer*>
    - TCPClientThreadData::TCPClientThreadData
    - std::make_shared<MockupTLSCtx>
    - GenericDNSPacketWriter::commit
    - std::make_shared<IncomingHTTP2Connection>
    - getBackendAddress
    linkageType: ''
    returnType: void
    signature: void BOOST_FIXTURE_TEST_CASE(test_IncomingConnection_SelfAnswered,
      TestFixture)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getBackendAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:703,1
    - Dst: std::make_shared<DOHFrontend>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:705,1
    - Dst: std::make_shared<MockupTLSCtx>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:705,1
    - Dst: ClientState::dohFrontend::d_urls::insert
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:706,1
    - Dst: TCPClientThreadData::TCPClientThreadData
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:708,1
    - Dst: std::make_unique<MockupFDMultiplexer>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:709,1
    - Dst: std::make_shared<DownstreamState>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:711,1
    - Dst: getBackendAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:711,1
    - Dst: gettimeofday
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:714,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:720,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:721,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:721,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:725,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:726,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:727,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:728,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:728,1
    - Dst: GenericDNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:729,1
    - Dst: GenericDNSPacketWriter::xfr32BitInt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:730,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:731,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:753,1
    - Dst: dynamic_cast<MockupFDMultiplexer*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:755,1
    - Dst: TCPClientThreadData::mplexer::get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:755,1
    - Dst: std::make_shared<IncomingHTTP2Connection>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:763,1
    - Dst: ConnectionInfo
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:763,1
    - Dst: getBackendAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:763,1
    - Dst: auto::handleIO
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:764,1
    - Dst: auto::notifyIOError
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:767,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:767,1
    - Dst: TCPClientThreadData::mplexer::getWatchedFDCount
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:768,1
    - Dst: TCPClientThreadData::mplexer::getWatchedFDCount
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:768,1
    - Dst: TCPClientThreadData::mplexer::run
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:769,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 30
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 772
      start: 701
    functionDepth: 1
    functionLinenumber: 701
    functionLinenumberEnd: 772
    functionName: BOOST_FIXTURE_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc
    functionUses: 0
    functionsReached:
    - GenericDNSPacketWriter::getHeader
    - auto::handleIO
    - gettimeofday
    - GenericDNSPacketWriter::xfr32BitInt
    - ClientState::dohFrontend::d_urls::insert
    - TCPClientThreadData::mplexer::run
    - GenericDNSPacketWriter::startRecord
    - ConnectionInfo
    - std::make_shared<DownstreamState>
    - htons
    - pdns::max
    - std::make_shared<DOHFrontend>
    - auto::notifyIOError
    - TCPClientThreadData::mplexer::get
    - std::make_unique<MockupFDMultiplexer>
    - std::move
    - TCPClientThreadData::mplexer::getWatchedFDCount
    - dynamic_cast<MockupFDMultiplexer*>
    - TCPClientThreadData::TCPClientThreadData
    - std::make_shared<MockupTLSCtx>
    - GenericDNSPacketWriter::commit
    - std::make_shared<IncomingHTTP2Connection>
    - getBackendAddress
    linkageType: ''
    returnType: void
    signature: void BOOST_FIXTURE_TEST_CASE(test_IncomingConnection_BackendTimeout,
      TestFixture)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getBackendAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:776,1
    - Dst: std::make_shared<DOHFrontend>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:778,1
    - Dst: std::make_shared<MockupTLSCtx>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:778,1
    - Dst: ClientState::dohFrontend::d_urls::insert
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:779,1
    - Dst: TCPClientThreadData::TCPClientThreadData
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:781,1
    - Dst: std::make_unique<MockupFDMultiplexer>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:782,1
    - Dst: std::make_shared<DownstreamState>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:784,1
    - Dst: getBackendAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:784,1
    - Dst: gettimeofday
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:787,1
    - Dst: std::make_shared<IncomingHTTP2Connection>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:799,1
    - Dst: ConnectionInfo
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:799,1
    - Dst: getBackendAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:799,1
    - Dst: std::static_pointer_cast<IncomingTCPConnectionState>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:800,1
    - Dst: DoHConnectionToBackend::handleTimeout
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:801,1
    - Dst: auto::handleIO
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc:802,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 803
      start: 774
    functionDepth: 1
    functionLinenumber: 774
    functionLinenumberEnd: 803
    functionName: BOOST_FIXTURE_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc
    functionUses: 0
    functionsReached:
    - std::static_pointer_cast<IncomingTCPConnectionState>
    - std::make_shared<DOHFrontend>
    - ConnectionInfo
    - TCPClientThreadData::TCPClientThreadData
    - std::make_shared<MockupTLSCtx>
    - std::make_shared<IncomingHTTP2Connection>
    - DoHConnectionToBackend::handleTimeout
    - std::make_unique<MockupFDMultiplexer>
    - gettimeofday
    - std::make_shared<DownstreamState>
    - auto::handleIO
    - getBackendAddress
    - ClientState::dohFrontend::d_urls::insert
    linkageType: ''
    returnType: void
    signature: void BOOST_FIXTURE_TEST_CASE(test_IncomingConnection_ClientTimeout_BackendTimeout,
      TestFixture)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:42,1
    - Dst: std::make_shared<UpgradeableBackend>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:42,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:42,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 5
    argNames:
    - ' server'
    - interval
    - poolAfterUpgrade
    - dohSVCKey
    - keepAfterUpgrade
    argTypes:
    - std::shared_ptr<DownstreamState>
    - uint32_t
    - std::string
    - uint16_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 40
    functionDepth: 0
    functionLinenumber: 40
    functionLinenumberEnd: 44
    functionName: dnsdist::ServiceDiscovery::addUpgradeableServer
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc
    functionUses: 0
    functionsReached:
    - std::make_shared<UpgradeableBackend>
    - std::move
    - lock
    linkageType: ''
    returnType: bool
    signature: bool ServiceDiscovery::addUpgradeableServer(std::shared_ptr<DownstreamState>&
      server, uint32_t interval, std::string poolAfterUpgrade, uint16_t dohSVCKey,
      bool keepAfterUpgrade)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:56,1
    - Dst: std::string_view
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:57,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:57,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:57,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:57,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:58,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:59,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:60,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:61,1
    - Dst: DNSName::DNSName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:63,1
    - Dst: PacketReader::getName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:70,1
    - Dst: PacketReader::get16BitInt
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:71,1
    - Dst: PacketReader::get16BitInt
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:72,1
    - Dst: PacketReader::getName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:81,1
    - Dst: PacketReader::getDnsrecordheader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:82,1
    - Dst: PacketReader::get16BitInt
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:85,1
    - Dst: PacketReader::getName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:86,1
    - Dst: PacketReader::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:90,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:93,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:93,1
    - Dst: PacketReader::xfrBlob
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:96,1
    - Dst: PacketReader::getName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:104,1
    - Dst: PacketReader::getDnsrecordheader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:105,1
    - Dst: PacketReader::xfrBlob
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:107,1
    - Dst: PacketReader::getName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:114,1
    - Dst: PacketReader::getDnsrecordheader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:115,1
    - Dst: PacketReader::xfrCAWithoutPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:119,1
    - Dst: push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:120,1
    - Dst: PacketReader::xfrCAWithoutPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:124,1
    - Dst: push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:125,1
    - Dst: PacketReader::xfrBlob
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:128,1
    - Dst: std::map::find
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:133,1
    - Dst: std::map::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:134,1
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:139,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 44
    argCount: 2
    argNames:
    - ' answer'
    - ' resolvers'
    argTypes:
    - PacketBuffer
    - std::map<uint16_t, DesignatedResolvers>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 53
    functionDepth: 0
    functionLinenumber: 53
    functionLinenumberEnd: 140
    functionName: dnsdist::parseSVCParams
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc
    functionUses: 0
    functionsReached:
    - PacketReader::getName
    - std::move
    - PacketReader::xfrBlob
    - ntohs
    - PacketReader::xfrCAWithoutPort
    - std::string_view
    - push_back
    - size
    - PacketReader::get16BitInt
    - empty
    - reinterpret_cast<const char*>
    - PacketReader::getDnsrecordheader
    - PacketReader::xfrSvcParamKeyVals
    - data
    - DNSName::DNSName
    - std::map::end
    - std::map::find
    linkageType: ''
    returnType: bool
    signature: bool parseSVCParams(const PacketBuffer& answer, std::map<uint16_t,
      DesignatedResolvers>& resolvers)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::parseSVCParams
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:145,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:146,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:146,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:146,1
    - Dst: info
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:147,1
    - Dst: getKey
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:159,1
    - Dst: getALPN
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:160,1
    - Dst: getKey
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:176,1
    - Dst: getPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:177,1
    - Dst: getKey
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:179,1
    - Dst: getKey
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:179,1
    - Dst: getIPHints
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:181,1
    - Dst: std::set::insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:183,1
    - Dst: getKey
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:187,1
    - Dst: getValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:188,1
    - Dst: ServiceDiscovery::DiscoveredResolverConfig::d_dohPath::find
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:189,1
    - Dst: ServiceDiscovery::DiscoveredResolverConfig::d_dohPath::resize
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:192,1
    - Dst: ServiceDiscovery::DiscoveredResolverConfig::d_dohPath::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:201,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:202,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:202,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:202,1
    - Dst: info
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:203,1
    - Dst: std::set::insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:218,1
    - Dst: std::set::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:222,1
    - Dst: std::set::count
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:222,1
    - Dst: std::set::begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:226,1
    - Dst: target::toStringNoDot
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:229,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:232,1
    CyclomaticComplexity: 27
    EdgeCount: 27
    ICount: 63
    argCount: 5
    argNames:
    - ' logger'
    - ' answer'
    - ' existingAddr'
    - dohSVCKey
    - ' config'
    argTypes:
    - Logr::Logger
    - PacketBuffer
    - ComboAddress
    - uint16_t
    - ServiceDiscovery::DiscoveredResolverConfig
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 237
      start: 142
    functionDepth: 1
    functionLinenumber: 142
    functionLinenumberEnd: 237
    functionName: dnsdist::handleSVCResult
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc
    functionUses: 0
    functionsReached:
    - getALPN
    - target::toStringNoDot
    - getValue
    - getPort
    - std::set::empty
    - std::set::insert
    - ServiceDiscovery::DiscoveredResolverConfig::d_dohPath::empty
    - ServiceDiscovery::DiscoveredResolverConfig::d_dohPath::resize
    - dnsdist::parseSVCParams
    - VERBOSESLOG
    - toStringWithPort
    - ServiceDiscovery::DiscoveredResolverConfig::d_dohPath::find
    - std::move
    - std::set::count
    - infolog
    - info
    - getIPHints
    - std::set::begin
    - getKey
    linkageType: ''
    returnType: bool
    signature: bool handleSVCResult(const Logr::Logger& logger, const PacketBuffer&
      answer, const ComboAddress& existingAddr, uint16_t dohSVCKey, ServiceDiscovery::DiscoveredResolverConfig&
      config)
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:241,1
    - Dst: dnsdist::getRandomDNSID
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:245,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:248,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:249,1
    - Dst: GenericDNSPacketWriter::addOpt
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:250,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:251,1
    - Dst: withValues
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:253,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:253,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:253,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:253,1
    - Dst: static_cast<uint16_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:255,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:255,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:256,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:256,1
    - Dst: PacketBuffer::insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:257,1
    - Dst: PacketBuffer::begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:257,1
    - Dst: Socket::setNonBlocking
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:260,1
    - Dst: d_config::sourceItfName::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:263,1
    - Dst: setsockopt
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:264,1
    - Dst: Socket::getHandle
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:264,1
    - Dst: d_config::sourceItfName::c_str
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:264,1
    - Dst: d_config::sourceItfName::length
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:264,1
    - Dst: IsAnyAddress
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:268,1
    - Dst: Socket::setReuseAddr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:269,1
    - Dst: SSetsockopt
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:272,1
    - Dst: Socket::getHandle
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:272,1
    - Dst: Socket::bind
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:275,1
    - Dst: Socket::connect
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:277,1
    - Dst: Socket::writenWithTimeout
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:279,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:279,1
    - Dst: PacketBuffer::data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:279,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:279,1
    - Dst: readn2WithTimeout
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:283,1
    - Dst: Socket::getHandle
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:283,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:286,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:286,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:286,1
    - Dst: auto::info
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:287,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:287,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:287,1
    - Dst: PacketBuffer::resize
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:292,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:292,1
    - Dst: readn2WithTimeout
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:294,1
    - Dst: Socket::getHandle
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:294,1
    - Dst: PacketBuffer::data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:294,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:294,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:295,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:297,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:297,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:297,1
    - Dst: auto::info
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:298,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:298,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:298,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:298,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:303,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:305,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:305,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:305,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:305,1
    - Dst: auto::info
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:306,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:306,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:306,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:312,1
    - Dst: PacketBuffer::data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:312,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:315,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:315,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:315,1
    - Dst: auto::info
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:316,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:316,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:323,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:323,1
    - Dst: RCode::to_s
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:323,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:323,1
    - Dst: auto::info
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:324,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:324,1
    - Dst: RCode::to_s
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:324,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:330,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:332,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:332,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:332,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:332,1
    - Dst: auto::info
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:333,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:333,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:333,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:340,1
    - Dst: PacketBuffer::data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:340,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:340,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:344,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:344,1
    - Dst: QType
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:344,1
    - Dst: toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:344,1
    - Dst: QClass
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:344,1
    - Dst: toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:344,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:344,1
    - Dst: auto::info
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:345,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:345,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:345,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:345,1
    - Dst: handleSVCResult
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:350,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:353,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:353,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:353,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:353,1
    - Dst: error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:354,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:354,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:357,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:357,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:357,1
    - Dst: info
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:358,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 72
    argCount: 3
    argNames:
    - ' topLogger'
    - ' upgradeableBackend'
    - ' config'
    argTypes:
    - Logr::Logger
    - UpgradeableBackend
    - ServiceDiscovery::DiscoveredResolverConfig
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 362
      start: 239
    functionDepth: 1
    functionLinenumber: 239
    functionLinenumberEnd: 362
    functionName: dnsdist::ServiceDiscovery::getDiscoveredConfig
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc
    functionUses: 0
    functionsReached:
    - toString
    - ntohs
    - GenericDNSPacketWriter::getHeader
    - QClass
    - PacketBuffer::size
    - RCode::to_s
    - error
    - IsAnyAddress
    - d_config::sourceItfName::length
    - PacketBuffer::begin
    - SLOG
    - Logging::Loggable
    - Socket::setNonBlocking
    - QType
    - warnlog
    - setsockopt
    - Socket::connect
    - static_cast<uint16_t>
    - auto::info
    - Socket::writenWithTimeout
    - dnsdist::configuration::getCurrentRuntimeConfiguration
    - Socket::setReuseAddr
    - readn2WithTimeout
    - dnsdist::getRandomDNSID
    - withValues
    - static_cast<uint8_t>
    - reinterpret_cast<const char*>
    - d_config::sourceItfName::c_str
    - toStringWithPort
    - GenericDNSPacketWriter::addOpt
    - memcpy
    - Socket::getHandle
    - PacketBuffer::data
    - handleSVCResult
    - what
    - PacketBuffer::insert
    - d_config::sourceItfName::empty
    - info
    - GenericDNSPacketWriter::commit
    - SSetsockopt
    - PacketBuffer::resize
    - Socket::bind
    linkageType: ''
    returnType: bool
    signature: bool ServiceDiscovery::getDiscoveredConfig(const Logr::Logger& topLogger,
      const UpgradeableBackend& upgradeableBackend, ServiceDiscovery::DiscoveredResolverConfig&
      config)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Socket::setNonBlocking
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:368,1
    - Dst: IsAnyAddress
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:370,1
    - Dst: Socket::setReuseAddr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:371,1
    - Dst: SSetsockopt
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:374,1
    - Dst: Socket::getHandle
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:374,1
    - Dst: d_config::sourceItfName::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:378,1
    - Dst: setsockopt
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:380,1
    - Dst: Socket::getHandle
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:380,1
    - Dst: d_config::sourceItfName::c_str
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:380,1
    - Dst: d_config::sourceItfName::length
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:380,1
    - Dst: Socket::bind
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:383,1
    - Dst: std::make_unique<TCPIOHandler>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:386,1
    - Dst: Socket::releaseHandle
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:386,1
    - Dst: auto::connect
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:387,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:391,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:391,1
    - Dst: getNameWithAddr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:391,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:391,1
    - Dst: error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:392,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:392,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:392,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:395,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:395,1
    - Dst: getNameWithAddr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:395,1
    - Dst: info
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:396,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:396,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 21
    argCount: 2
    argNames:
    - ' logger'
    - ' ds'
    argTypes:
    - Logr::Logger
    - std::shared_ptr<DownstreamState>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 400
      start: 364
    functionDepth: 0
    functionLinenumber: 364
    functionLinenumberEnd: 400
    functionName: dnsdist::checkBackendUsability
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc
    functionUses: 0
    functionsReached:
    - Socket::releaseHandle
    - error
    - IsAnyAddress
    - d_config::sourceItfName::length
    - Socket::setNonBlocking
    - Logging::Loggable
    - auto::connect
    - setsockopt
    - getNameWithAddr
    - Socket::setReuseAddr
    - VERBOSESLOG
    - d_config::sourceItfName::c_str
    - Socket::getHandle
    - std::make_unique<TCPIOHandler>
    - what
    - d_config::sourceItfName::empty
    - infolog
    - info
    - SSetsockopt
    - Socket::bind
    linkageType: ''
    returnType: bool
    signature: bool checkBackendUsability(const Logr::Logger& logger, std::shared_ptr<DownstreamState>&
      ds)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:406,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:406,1
    - Dst: d_ds::getNameWithAddr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:406,1
    - Dst: info
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:407,1
    - Dst: dnsdist::ServiceDiscovery::getDiscoveredConfig
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:409,1
    - Dst: DownstreamState::Config::remote::setPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:419,1
    - Dst: ServiceDiscovery::DiscoveredResolverConfig::d_subjectName::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:438,1
    - Dst: comparator
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:438,1
    - Dst: d_ds::d_config::remote::toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:449,1
    - Dst: d_poolAfterUpgrade::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:453,1
    - Dst: DownstreamState::Config::pools::clear
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:454,1
    - Dst: DownstreamState::Config::pools::insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:455,1
    - Dst: getTLSContext
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:460,1
    - Dst: std::make_shared<DownstreamState>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:461,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:461,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:461,1
    - Dst: checkBackendUsability
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:464,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:465,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:465,1
    - Dst: auto::getNameWithAddr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:465,1
    - Dst: info
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:466,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:470,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:470,1
    - Dst: auto::getNameWithAddr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:470,1
    - Dst: info
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:471,1
    - Dst: auto::d_config::pools::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:473,1
    - Dst: addServerToPool
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:475,1
    - Dst: addServerToPool
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:479,1
    - Dst: auto::start
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:482,1
    - Dst: dnsdist::configuration::updateRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:486,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:488,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:488,1
    - Dst: erase
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:490,1
    - Dst: removeServerFromPool
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:497,1
    - Dst: removeServerFromPool
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:500,1
    - Dst: dnsdist::backend::registerNewBackend
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:503,1
    - Dst: d_ds::stop
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:506,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:512,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:512,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:512,1
    - Dst: error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:513,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:513,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 65
    argCount: 2
    argNames:
    - ' logger'
    - ' backend'
    argTypes:
    - Logr::Logger
    - UpgradeableBackend
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 517
      start: 402
    functionDepth: 2
    functionLinenumber: 402
    functionLinenumberEnd: 517
    functionName: dnsdist::ServiceDiscovery::tryToUpgradeBackend
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc
    functionUses: 0
    functionsReached:
    - DownstreamState::Config::pools::insert
    - removeServerFromPool
    - dnsdist::configuration::updateRuntimeConfiguration
    - d_ds::stop
    - error
    - d_poolAfterUpgrade::empty
    - erase
    - DownstreamState::Config::pools::clear
    - ServiceDiscovery::DiscoveredResolverConfig::d_subjectName::empty
    - SLOG
    - DownstreamState::Config::remote::setPort
    - warnlog
    - getTLSContext
    - checkBackendUsability
    - std::make_shared<DownstreamState>
    - auto::getNameWithAddr
    - begin
    - dnsdist::backend::registerNewBackend
    - comparator
    - d_ds::getNameWithAddr
    - addServerToPool
    - auto::start
    - VERBOSESLOG
    - std::move
    - auto::d_config::pools::empty
    - what
    - end
    - info
    - dnsdist::ServiceDiscovery::getDiscoveredConfig
    - infolog
    - d_ds::d_config::remote::toString
    linkageType: ''
    returnType: bool
    signature: bool ServiceDiscovery::tryToUpgradeBackend(const Logr::Logger& logger,
      const UpgradeableBackend& backend)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: setThreadName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:521,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:522,1
    - Dst: dnsdist::configuration::refreshLocalRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:525,1
    - Dst: time
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:526,1
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:528,1
    - Dst: auto::begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:531,1
    - Dst: auto::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:531,1
    - Dst: auto::withValues
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:533,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:533,1
    - Dst: d_ds::getName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:533,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:533,1
    - Dst: dnsdist::ServiceDiscovery::tryToUpgradeBackend
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:541,1
    - Dst: std::set::insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:543,1
    - Dst: auto::erase
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:544,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:549,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:549,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:549,1
    - Dst: auto::error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:550,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:550,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:553,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:553,1
    - Dst: auto::info
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:554,1
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:562,1
    - Dst: auto::begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:563,1
    - Dst: auto::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:563,1
    - Dst: std::set::count
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:564,1
    - Dst: auto::erase
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:565,1
    - Dst: sleep
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:576,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 33
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 578
      start: 519
    functionDepth: 3
    functionLinenumber: 519
    functionLinenumberEnd: 578
    functionName: dnsdist::ServiceDiscovery::worker
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc
    functionUses: 0
    functionsReached:
    - dnsdist::ServiceDiscovery::tryToUpgradeBackend
    - d_ds::getName
    - auto::withValues
    - auto::begin
    - auto::erase
    - Logging::Loggable
    - time
    - lock
    - auto::error
    - std::set::insert
    - dnsdist::logging::getTopLogger
    - setThreadName
    - auto::info
    - sleep
    - VERBOSESLOG
    - std::set::count
    - what
    - infolog
    - auto::end
    - dnsdist::configuration::refreshLocalRuntimeConfiguration
    linkageType: ''
    returnType: void
    signature: void ServiceDiscovery::worker()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::thread
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:582,1
    - Dst: detach
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:583,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 586
      start: 580
    functionDepth: 0
    functionLinenumber: 580
    functionLinenumberEnd: 586
    functionName: dnsdist::ServiceDiscovery::run
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc
    functionUses: 0
    functionsReached:
    - std::thread
    - detach
    linkageType: ''
    returnType: bool
    signature: bool ServiceDiscovery::run()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:42,1
    - Dst: std::make_shared<UpgradeableBackend>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:42,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:42,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 5
    argNames:
    - ' server'
    - interval
    - poolAfterUpgrade
    - dohSVCKey
    - keepAfterUpgrade
    argTypes:
    - std::shared_ptr<DownstreamState>
    - uint32_t
    - std::string
    - uint16_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 40
    functionDepth: 0
    functionLinenumber: 40
    functionLinenumberEnd: 44
    functionName: dnsdist::ServiceDiscovery::addUpgradeableServer
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc
    functionUses: 0
    functionsReached:
    - std::make_shared<UpgradeableBackend>
    - std::move
    - lock
    linkageType: ''
    returnType: bool
    signature: bool ServiceDiscovery::addUpgradeableServer(std::shared_ptr<DownstreamState>&
      server, uint32_t interval, std::string poolAfterUpgrade, uint16_t dohSVCKey,
      bool keepAfterUpgrade)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:56,1
    - Dst: std::string_view
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:57,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:57,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:57,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:57,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:58,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:59,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:60,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:61,1
    - Dst: DNSName::DNSName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:63,1
    - Dst: PacketReader::getName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:70,1
    - Dst: PacketReader::get16BitInt
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:71,1
    - Dst: PacketReader::get16BitInt
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:72,1
    - Dst: PacketReader::getName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:81,1
    - Dst: PacketReader::getDnsrecordheader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:82,1
    - Dst: PacketReader::get16BitInt
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:85,1
    - Dst: PacketReader::getName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:86,1
    - Dst: PacketReader::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:90,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:93,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:93,1
    - Dst: PacketReader::xfrBlob
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:96,1
    - Dst: PacketReader::getName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:104,1
    - Dst: PacketReader::getDnsrecordheader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:105,1
    - Dst: PacketReader::xfrBlob
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:107,1
    - Dst: PacketReader::getName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:114,1
    - Dst: PacketReader::getDnsrecordheader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:115,1
    - Dst: PacketReader::xfrCAWithoutPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:119,1
    - Dst: push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:120,1
    - Dst: PacketReader::xfrCAWithoutPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:124,1
    - Dst: push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:125,1
    - Dst: PacketReader::xfrBlob
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:128,1
    - Dst: std::map::find
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:133,1
    - Dst: std::map::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:134,1
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:139,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 44
    argCount: 2
    argNames:
    - ' answer'
    - ' resolvers'
    argTypes:
    - PacketBuffer
    - std::map<uint16_t, DesignatedResolvers>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 53
    functionDepth: 0
    functionLinenumber: 53
    functionLinenumberEnd: 140
    functionName: dnsdist::parseSVCParams
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc
    functionUses: 1
    functionsReached:
    - PacketReader::getName
    - std::move
    - PacketReader::xfrBlob
    - ntohs
    - PacketReader::xfrCAWithoutPort
    - std::string_view
    - push_back
    - size
    - PacketReader::get16BitInt
    - empty
    - reinterpret_cast<const char*>
    - PacketReader::getDnsrecordheader
    - PacketReader::xfrSvcParamKeyVals
    - data
    - DNSName::DNSName
    - std::map::end
    - std::map::find
    linkageType: ''
    returnType: bool
    signature: bool parseSVCParams(const PacketBuffer& answer, std::map<uint16_t,
      DesignatedResolvers>& resolvers)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::parseSVCParams
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:145,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:146,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:146,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:146,1
    - Dst: info
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:147,1
    - Dst: getKey
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:159,1
    - Dst: getALPN
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:160,1
    - Dst: getKey
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:176,1
    - Dst: getPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:177,1
    - Dst: getKey
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:179,1
    - Dst: getKey
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:179,1
    - Dst: getIPHints
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:181,1
    - Dst: std::set::insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:183,1
    - Dst: getKey
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:187,1
    - Dst: getValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:188,1
    - Dst: ServiceDiscovery::DiscoveredResolverConfig::d_dohPath::find
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:189,1
    - Dst: ServiceDiscovery::DiscoveredResolverConfig::d_dohPath::resize
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:192,1
    - Dst: ServiceDiscovery::DiscoveredResolverConfig::d_dohPath::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:201,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:202,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:202,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:202,1
    - Dst: info
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:203,1
    - Dst: std::set::insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:218,1
    - Dst: std::set::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:222,1
    - Dst: std::set::count
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:222,1
    - Dst: std::set::begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:226,1
    - Dst: target::toStringNoDot
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:229,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:232,1
    CyclomaticComplexity: 27
    EdgeCount: 27
    ICount: 63
    argCount: 5
    argNames:
    - ' logger'
    - ' answer'
    - ' existingAddr'
    - dohSVCKey
    - ' config'
    argTypes:
    - Logr::Logger
    - PacketBuffer
    - ComboAddress
    - uint16_t
    - ServiceDiscovery::DiscoveredResolverConfig
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 237
      start: 142
    functionDepth: 1
    functionLinenumber: 142
    functionLinenumberEnd: 237
    functionName: dnsdist::handleSVCResult
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc
    functionUses: 0
    functionsReached:
    - getALPN
    - target::toStringNoDot
    - getValue
    - getPort
    - std::set::empty
    - std::set::insert
    - ServiceDiscovery::DiscoveredResolverConfig::d_dohPath::empty
    - ServiceDiscovery::DiscoveredResolverConfig::d_dohPath::resize
    - dnsdist::parseSVCParams
    - VERBOSESLOG
    - toStringWithPort
    - ServiceDiscovery::DiscoveredResolverConfig::d_dohPath::find
    - std::move
    - std::set::count
    - infolog
    - info
    - getIPHints
    - std::set::begin
    - getKey
    linkageType: ''
    returnType: bool
    signature: bool handleSVCResult(const Logr::Logger& logger, const PacketBuffer&
      answer, const ComboAddress& existingAddr, uint16_t dohSVCKey, ServiceDiscovery::DiscoveredResolverConfig&
      config)
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:241,1
    - Dst: dnsdist::getRandomDNSID
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:245,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:248,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:249,1
    - Dst: GenericDNSPacketWriter::addOpt
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:250,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:251,1
    - Dst: withValues
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:253,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:253,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:253,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:253,1
    - Dst: static_cast<uint16_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:255,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:255,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:256,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:256,1
    - Dst: PacketBuffer::insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:257,1
    - Dst: PacketBuffer::begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:257,1
    - Dst: Socket::setNonBlocking
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:260,1
    - Dst: d_config::sourceItfName::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:263,1
    - Dst: setsockopt
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:264,1
    - Dst: Socket::getHandle
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:264,1
    - Dst: d_config::sourceItfName::c_str
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:264,1
    - Dst: d_config::sourceItfName::length
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:264,1
    - Dst: IsAnyAddress
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:268,1
    - Dst: Socket::setReuseAddr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:269,1
    - Dst: SSetsockopt
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:272,1
    - Dst: Socket::getHandle
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:272,1
    - Dst: Socket::bind
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:275,1
    - Dst: Socket::connect
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:277,1
    - Dst: Socket::writenWithTimeout
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:279,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:279,1
    - Dst: PacketBuffer::data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:279,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:279,1
    - Dst: readn2WithTimeout
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:283,1
    - Dst: Socket::getHandle
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:283,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:286,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:286,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:286,1
    - Dst: auto::info
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:287,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:287,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:287,1
    - Dst: PacketBuffer::resize
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:292,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:292,1
    - Dst: readn2WithTimeout
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:294,1
    - Dst: Socket::getHandle
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:294,1
    - Dst: PacketBuffer::data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:294,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:294,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:295,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:297,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:297,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:297,1
    - Dst: auto::info
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:298,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:298,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:298,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:298,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:303,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:305,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:305,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:305,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:305,1
    - Dst: auto::info
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:306,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:306,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:306,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:312,1
    - Dst: PacketBuffer::data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:312,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:315,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:315,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:315,1
    - Dst: auto::info
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:316,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:316,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:323,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:323,1
    - Dst: RCode::to_s
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:323,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:323,1
    - Dst: auto::info
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:324,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:324,1
    - Dst: RCode::to_s
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:324,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:330,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:332,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:332,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:332,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:332,1
    - Dst: auto::info
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:333,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:333,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:333,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:340,1
    - Dst: PacketBuffer::data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:340,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:340,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:344,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:344,1
    - Dst: QType
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:344,1
    - Dst: toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:344,1
    - Dst: QClass
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:344,1
    - Dst: toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:344,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:344,1
    - Dst: auto::info
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:345,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:345,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:345,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:345,1
    - Dst: handleSVCResult
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:350,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:353,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:353,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:353,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:353,1
    - Dst: error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:354,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:354,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:357,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:357,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:357,1
    - Dst: info
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:358,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 72
    argCount: 3
    argNames:
    - ' topLogger'
    - ' upgradeableBackend'
    - ' config'
    argTypes:
    - Logr::Logger
    - UpgradeableBackend
    - ServiceDiscovery::DiscoveredResolverConfig
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 362
      start: 239
    functionDepth: 1
    functionLinenumber: 239
    functionLinenumberEnd: 362
    functionName: dnsdist::ServiceDiscovery::getDiscoveredConfig
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc
    functionUses: 1
    functionsReached:
    - toString
    - ntohs
    - GenericDNSPacketWriter::getHeader
    - QClass
    - PacketBuffer::size
    - RCode::to_s
    - error
    - IsAnyAddress
    - d_config::sourceItfName::length
    - PacketBuffer::begin
    - SLOG
    - Logging::Loggable
    - Socket::setNonBlocking
    - QType
    - warnlog
    - setsockopt
    - Socket::connect
    - static_cast<uint16_t>
    - auto::info
    - Socket::writenWithTimeout
    - dnsdist::configuration::getCurrentRuntimeConfiguration
    - Socket::setReuseAddr
    - readn2WithTimeout
    - dnsdist::getRandomDNSID
    - withValues
    - static_cast<uint8_t>
    - reinterpret_cast<const char*>
    - d_config::sourceItfName::c_str
    - toStringWithPort
    - GenericDNSPacketWriter::addOpt
    - memcpy
    - Socket::getHandle
    - PacketBuffer::data
    - handleSVCResult
    - what
    - PacketBuffer::insert
    - d_config::sourceItfName::empty
    - info
    - GenericDNSPacketWriter::commit
    - SSetsockopt
    - PacketBuffer::resize
    - Socket::bind
    linkageType: ''
    returnType: bool
    signature: bool ServiceDiscovery::getDiscoveredConfig(const Logr::Logger& topLogger,
      const UpgradeableBackend& upgradeableBackend, ServiceDiscovery::DiscoveredResolverConfig&
      config)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Socket::setNonBlocking
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:368,1
    - Dst: IsAnyAddress
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:370,1
    - Dst: Socket::setReuseAddr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:371,1
    - Dst: SSetsockopt
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:374,1
    - Dst: Socket::getHandle
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:374,1
    - Dst: d_config::sourceItfName::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:378,1
    - Dst: setsockopt
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:380,1
    - Dst: Socket::getHandle
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:380,1
    - Dst: d_config::sourceItfName::c_str
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:380,1
    - Dst: d_config::sourceItfName::length
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:380,1
    - Dst: Socket::bind
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:383,1
    - Dst: std::make_unique<TCPIOHandler>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:386,1
    - Dst: Socket::releaseHandle
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:386,1
    - Dst: auto::connect
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:387,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:391,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:391,1
    - Dst: getNameWithAddr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:391,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:391,1
    - Dst: error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:392,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:392,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:392,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:395,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:395,1
    - Dst: getNameWithAddr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:395,1
    - Dst: info
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:396,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:396,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 21
    argCount: 2
    argNames:
    - ' logger'
    - ' ds'
    argTypes:
    - Logr::Logger
    - std::shared_ptr<DownstreamState>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 400
      start: 364
    functionDepth: 0
    functionLinenumber: 364
    functionLinenumberEnd: 400
    functionName: dnsdist::checkBackendUsability
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc
    functionUses: 0
    functionsReached:
    - Socket::releaseHandle
    - error
    - IsAnyAddress
    - d_config::sourceItfName::length
    - Socket::setNonBlocking
    - Logging::Loggable
    - auto::connect
    - setsockopt
    - getNameWithAddr
    - Socket::setReuseAddr
    - VERBOSESLOG
    - d_config::sourceItfName::c_str
    - Socket::getHandle
    - std::make_unique<TCPIOHandler>
    - what
    - d_config::sourceItfName::empty
    - infolog
    - info
    - SSetsockopt
    - Socket::bind
    linkageType: ''
    returnType: bool
    signature: bool checkBackendUsability(const Logr::Logger& logger, std::shared_ptr<DownstreamState>&
      ds)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:406,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:406,1
    - Dst: d_ds::getNameWithAddr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:406,1
    - Dst: info
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:407,1
    - Dst: dnsdist::ServiceDiscovery::getDiscoveredConfig
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:409,1
    - Dst: DownstreamState::Config::remote::setPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:419,1
    - Dst: ServiceDiscovery::DiscoveredResolverConfig::d_subjectName::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:438,1
    - Dst: comparator
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:438,1
    - Dst: d_ds::d_config::remote::toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:449,1
    - Dst: d_poolAfterUpgrade::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:453,1
    - Dst: DownstreamState::Config::pools::clear
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:454,1
    - Dst: DownstreamState::Config::pools::insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:455,1
    - Dst: getTLSContext
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:460,1
    - Dst: std::make_shared<DownstreamState>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:461,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:461,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:461,1
    - Dst: checkBackendUsability
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:464,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:465,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:465,1
    - Dst: auto::getNameWithAddr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:465,1
    - Dst: info
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:466,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:470,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:470,1
    - Dst: auto::getNameWithAddr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:470,1
    - Dst: info
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:471,1
    - Dst: auto::d_config::pools::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:473,1
    - Dst: addServerToPool
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:475,1
    - Dst: addServerToPool
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:479,1
    - Dst: auto::start
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:482,1
    - Dst: dnsdist::configuration::updateRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:486,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:488,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:488,1
    - Dst: erase
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:490,1
    - Dst: removeServerFromPool
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:497,1
    - Dst: removeServerFromPool
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:500,1
    - Dst: dnsdist::backend::registerNewBackend
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:503,1
    - Dst: d_ds::stop
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:506,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:512,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:512,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:512,1
    - Dst: error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:513,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:513,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 65
    argCount: 2
    argNames:
    - ' logger'
    - ' backend'
    argTypes:
    - Logr::Logger
    - UpgradeableBackend
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 517
      start: 402
    functionDepth: 2
    functionLinenumber: 402
    functionLinenumberEnd: 517
    functionName: dnsdist::ServiceDiscovery::tryToUpgradeBackend
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc
    functionUses: 1
    functionsReached:
    - DownstreamState::Config::pools::insert
    - removeServerFromPool
    - dnsdist::configuration::updateRuntimeConfiguration
    - d_ds::stop
    - error
    - d_poolAfterUpgrade::empty
    - erase
    - DownstreamState::Config::pools::clear
    - ServiceDiscovery::DiscoveredResolverConfig::d_subjectName::empty
    - SLOG
    - DownstreamState::Config::remote::setPort
    - warnlog
    - getTLSContext
    - checkBackendUsability
    - std::make_shared<DownstreamState>
    - auto::getNameWithAddr
    - begin
    - dnsdist::backend::registerNewBackend
    - comparator
    - d_ds::getNameWithAddr
    - addServerToPool
    - auto::start
    - VERBOSESLOG
    - std::move
    - auto::d_config::pools::empty
    - what
    - end
    - info
    - dnsdist::ServiceDiscovery::getDiscoveredConfig
    - infolog
    - d_ds::d_config::remote::toString
    linkageType: ''
    returnType: bool
    signature: bool ServiceDiscovery::tryToUpgradeBackend(const Logr::Logger& logger,
      const UpgradeableBackend& backend)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: setThreadName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:521,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:522,1
    - Dst: dnsdist::configuration::refreshLocalRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:525,1
    - Dst: time
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:526,1
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:528,1
    - Dst: auto::begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:531,1
    - Dst: auto::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:531,1
    - Dst: auto::withValues
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:533,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:533,1
    - Dst: d_ds::getName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:533,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:533,1
    - Dst: dnsdist::ServiceDiscovery::tryToUpgradeBackend
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:541,1
    - Dst: std::set::insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:543,1
    - Dst: auto::erase
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:544,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:549,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:549,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:549,1
    - Dst: auto::error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:550,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:550,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:553,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:553,1
    - Dst: auto::info
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:554,1
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:562,1
    - Dst: auto::begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:563,1
    - Dst: auto::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:563,1
    - Dst: std::set::count
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:564,1
    - Dst: auto::erase
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:565,1
    - Dst: sleep
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:576,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 33
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 578
      start: 519
    functionDepth: 3
    functionLinenumber: 519
    functionLinenumberEnd: 578
    functionName: dnsdist::ServiceDiscovery::worker
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc
    functionUses: 0
    functionsReached:
    - dnsdist::ServiceDiscovery::tryToUpgradeBackend
    - d_ds::getName
    - auto::withValues
    - auto::begin
    - auto::erase
    - Logging::Loggable
    - time
    - lock
    - auto::error
    - std::set::insert
    - dnsdist::logging::getTopLogger
    - setThreadName
    - auto::info
    - sleep
    - VERBOSESLOG
    - std::set::count
    - what
    - infolog
    - auto::end
    - dnsdist::configuration::refreshLocalRuntimeConfiguration
    linkageType: ''
    returnType: void
    signature: void ServiceDiscovery::worker()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::thread
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:582,1
    - Dst: detach
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc:583,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 586
      start: 580
    functionDepth: 0
    functionLinenumber: 580
    functionLinenumberEnd: 586
    functionName: dnsdist::ServiceDiscovery::run
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc
    functionUses: 0
    functionsReached:
    - std::thread
    - detach
    linkageType: ''
    returnType: bool
    signature: bool ServiceDiscovery::run()
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: stringtok
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:40,1
    - Dst: vector::size
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:42,1
    - Dst: vector::size
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:42,1
    - Dst: pdns_iequals
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:42,1
    - Dst: vector::at
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:42,1
    - Dst: MOADNSException
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:43,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:43,1
    - Dst: vector::size
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:43,1
    - Dst: vector::at
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:46,1
    - Dst: MOADNSException
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:47,1
    - Dst: vector::at
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:47,1
    - Dst: vector::size
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:50,1
    - Dst: vector::at
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:50,1
    - Dst: pdns::checked_stoi<unsigned int>
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:51,1
    - Dst: vector::at
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:51,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:52,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:52,1
    - Dst: MOADNSException
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:53,1
    - Dst: boost::format
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:53,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:53,1
    - Dst: str
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:53,1
    - Dst: string::reserve
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:57,1
    - Dst: sscanf
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:61,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:61,1
    - Dst: MOADNSException
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:62,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:62,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:62,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:62,1
    - Dst: string::append
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:64,1
    - Dst: insert
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:67,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:67,1
    - Dst: string::begin
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:67,1
    - Dst: string::end
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:67,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 19
    argCount: 1
    argNames:
    - ' zone'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 36
    functionDepth: 1
    functionLinenumber: 36
    functionLinenumberEnd: 68
    functionName: UnknownRecordContent::UnknownRecordContent
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsparser.cc
    functionUses: 0
    functionsReached:
    - string::end
    - string::begin
    - string::reserve
    - stringtok
    - vector::at
    - std::to_string
    - sscanf
    - pdns_iequals
    - string::append
    - end
    - size
    - pdns::checked_stoi<unsigned int>
    - str
    - insert
    - boost::format
    - MOADNSException
    - vector::size
    - at
    linkageType: ''
    returnType: void
    signature: void UnknownRecordContent::UnknownRecordContent(const string& zone)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:73,1
    - Dst: snprintf
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:76,1
    - Dst: ostringstream::str
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:79,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 70
    functionDepth: 0
    functionLinenumber: 70
    functionLinenumberEnd: 80
    functionName: UnknownRecordContent::getZoneRepresentation
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsparser.cc
    functionUses: 0
    functionsReached:
    - ostringstream::str
    - snprintf
    - size
    linkageType: ''
    returnType: string
    signature: string UnknownRecordContent::getZoneRepresentation(bool /* noDot */)
      const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: xfrBlob
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:84,1
    - Dst: string
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:84,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:84,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:84,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' pw'
    argTypes:
    - DNSPacketWriter
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 82
    functionDepth: 0
    functionLinenumber: 82
    functionLinenumberEnd: 85
    functionName: UnknownRecordContent::toPacket
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsparser.cc
    functionUses: 0
    functionsReached:
    - end
    - xfrBlob
    - string
    - begin
    linkageType: ''
    returnType: void
    signature: void UnknownRecordContent::toPacket(DNSPacketWriter& pw) const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:90,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:91,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:92,1
    - Dst: getStorage
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:96,1
    - Dst: PacketBuffer::resize
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:97,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:97,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:97,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:100,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:103,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:103,1
    - Dst: std::array::size
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:103,1
    - Dst: std::array::size
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:103,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:105,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:105,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:105,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:105,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:108,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:109,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:111,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:111,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:113,1
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:114,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:115,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:115,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:115,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:116,1
    - Dst: DNSRecord::DNSRecord
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:120,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:124,1
    - Dst: std::string_view
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:126,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:126,1
    - Dst: PacketBuffer::data
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:126,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:126,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:126,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:126,1
    - Dst: PacketReader::getDnsrecordheader
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:128,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:129,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 28
    argCount: 5
    argNames:
    - ' qname'
    - qtype
    - ' serialized'
    - qclass
    - internalRepresentation
    argTypes:
    - DNSName
    - uint16_t
    - string
    - uint16_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 131
      start: 87
    functionDepth: 1
    functionLinenumber: 87
    functionLinenumberEnd: 131
    functionName: DNSRecordContent::deserialize
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsparser.cc
    functionUses: 3
    functionsReached:
    - memcpy
    - PacketBuffer::data
    - DNSRecord::DNSRecord
    - getStorage
    - std::string_view
    - size
    - memset
    - empty
    - reinterpret_cast<const char*>
    - PacketBuffer::size
    - PacketReader::getDnsrecordheader
    - PacketBuffer::resize
    - DNSRecordContent::make
    - c_str
    - std::array::data
    - std::array::size
    - htons
    linkageType: ''
    returnType: shared_ptr<DNSRecordContent>
    signature: shared_ptr<DNSRecordContent> DNSRecordContent::deserialize(const DNSName&
      qname, uint16_t qtype, const string& serialized, uint16_t qclass, bool internalRepresentation)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: getTypemap
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:138,1
    - Dst: pair
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:138,1
    - Dst: getTypemap
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:139,1
    - Dst: std::make_shared<UnknownRecordContent>
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:140,1
    - Dst: auto::second
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:143,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - ' dr'
    - ' pr'
    argTypes:
    - DNSRecord
    - PacketReader
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 144
      start: 133
    functionDepth: 0
    functionLinenumber: 133
    functionLinenumberEnd: 144
    functionName: DNSRecordContent::make
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsparser.cc
    functionUses: 49
    functionsReached:
    - auto::second
    - std::make_shared<UnknownRecordContent>
    - getTypemap
    - pair
    linkageType: ''
    returnType: std::shared_ptr<DNSRecordContent>
    signature: "std::shared_ptr<DNSRecordContent> DNSRecordContent::make(const DNSRecord&
      dr,\n                                                         PacketReader&
      pr)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: getZmakermap
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:149,1
    - Dst: pair
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:149,1
    - Dst: getZmakermap
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:150,1
    - Dst: std::make_shared<UnknownRecordContent>
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:151,1
    - Dst: auto::second
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:154,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - qtype
    - qclass
    - ' content'
    argTypes:
    - uint16_t
    - uint16_t
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 146
    functionDepth: 0
    functionLinenumber: 146
    functionLinenumberEnd: 155
    functionName: DNSRecordContent::make
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsparser.cc
    functionUses: 49
    functionsReached:
    - auto::second
    - getZmakermap
    - std::make_shared<UnknownRecordContent>
    - pair
    linkageType: ''
    returnType: std::shared_ptr<DNSRecordContent>
    signature: "std::shared_ptr<DNSRecordContent> DNSRecordContent::make(uint16_t
      qtype, uint16_t qclass,\n                                                         const
      string& content)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<UnknownRecordContent>
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:163,1
    - Dst: getTypemap
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:167,1
    - Dst: pair
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:167,1
    - Dst: getTypemap
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:168,1
    - Dst: std::make_shared<UnknownRecordContent>
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:169,1
    - Dst: auto::second
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:172,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 7
    argCount: 3
    argNames:
    - ' dr'
    - ' pr'
    - oc
    argTypes:
    - DNSRecord
    - PacketReader
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 173
      start: 157
    functionDepth: 0
    functionLinenumber: 157
    functionLinenumberEnd: 173
    functionName: DNSRecordContent::make
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsparser.cc
    functionUses: 49
    functionsReached:
    - auto::second
    - std::make_shared<UnknownRecordContent>
    - getTypemap
    - pair
    linkageType: ''
    returnType: std::shared_ptr<DNSRecordContent>
    signature: std::shared_ptr<DNSRecordContent> DNSRecordContent::make(const DNSRecord&
      dr, PacketReader& pr, uint16_t oc)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSRecordContent::deserialize
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:178,1
    - Dst: getCode
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:178,1
    - Dst: UnknownRecordContent::serialize
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:178,1
    - Dst: shared_ptr::getZoneRepresentation
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:179,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' qname'
    - ' qtype'
    - ' content'
    argTypes:
    - DNSName
    - QType
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 180
      start: 175
    functionDepth: 0
    functionLinenumber: 175
    functionLinenumberEnd: 180
    functionName: DNSRecordContent::upgradeContent
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsparser.cc
    functionUses: 1
    functionsReached:
    - UnknownRecordContent::serialize
    - shared_ptr::getZoneRepresentation
    - getCode
    - DNSRecordContent::deserialize
    linkageType: ''
    returnType: string
    signature: string DNSRecordContent::upgradeContent(const DNSName& qname, const
      QType& qtype, const string& content)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 186
      start: 182
    functionDepth: 0
    functionLinenumber: 182
    functionLinenumberEnd: 186
    functionName: '& DNSRecordContent::getTypemap()'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsparser.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: DNSRecordContent::typemap_t
    signature: DNSRecordContent::typemap_t & DNSRecordContent::getTypemap()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 192
      start: 188
    functionDepth: 0
    functionLinenumber: 188
    functionLinenumberEnd: 192
    functionName: '& DNSRecordContent::getN2Typemap()'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsparser.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: DNSRecordContent::n2typemap_t
    signature: DNSRecordContent::n2typemap_t & DNSRecordContent::getN2Typemap()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 198
      start: 194
    functionDepth: 0
    functionLinenumber: 194
    functionLinenumberEnd: 198
    functionName: '& DNSRecordContent::getT2Namemap()'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsparser.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: DNSRecordContent::t2namemap_t
    signature: DNSRecordContent::t2namemap_t & DNSRecordContent::getT2Namemap()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 204
      start: 200
    functionDepth: 0
    functionLinenumber: 200
    functionLinenumberEnd: 204
    functionName: '& DNSRecordContent::getZmakermap()'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsparser.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: DNSRecordContent::zmakermap_t
    signature: DNSRecordContent::zmakermap_t & DNSRecordContent::getZmakermap()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getTypemap
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:208,1
    - Dst: pair
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:208,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - rtype
    - rclass
    argTypes:
    - uint16_t
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 209
      start: 206
    functionDepth: 0
    functionLinenumber: 206
    functionLinenumberEnd: 209
    functionName: DNSRecordContent::isRegisteredType
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsparser.cc
    functionUses: 0
    functionsReached:
    - getTypemap
    - pair
    linkageType: ''
    returnType: bool
    signature: bool DNSRecordContent::isRegisteredType(uint16_t rtype, uint16_t rclass)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: qtype::getCode
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:213,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:218,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - ' rr'
    argTypes:
    - DNSResourceRecord
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 219
      start: 211
    functionDepth: 0
    functionLinenumber: 211
    functionLinenumberEnd: 219
    functionName: DNSRecord::DNSRecord
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsparser.cc
    functionUses: 10
    functionsReached:
    - qtype::getCode
    - DNSRecordContent::make
    linkageType: ''
    returnType: void
    signature: void DNSRecord::DNSRecord(const DNSResourceRecord& rr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: QType
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:226,1
    - Dst: getContent
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:228,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - ' wire'
    argTypes:
    - DNSRecord
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 232
      start: 222
    functionDepth: 0
    functionLinenumber: 222
    functionLinenumberEnd: 232
    functionName: DNSResourceRecord::fromWire
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsparser.cc
    functionUses: 6
    functionsReached:
    - QType
    - getContent
    linkageType: ''
    returnType: DNSResourceRecord
    signature: DNSResourceRecord DNSResourceRecord::fromWire(const DNSRecord& wire)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:236,1
    - Dst: MOADNSException
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:237,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:239,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:239,1
    - Dst: MOADNSException
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:242,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:242,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:244,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:245,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:246,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:247,1
    - Dst: MOADNSException
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:250,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:250,1
    - Dst: PacketReader::getName
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:260,1
    - Dst: PacketReader::get16BitInt
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:261,1
    - Dst: PacketReader::get16BitInt
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:262,1
    - Dst: std::min
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:275,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:275,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:275,1
    - Dst: reserve
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:276,1
    - Dst: DNSRecord::DNSRecord
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:278,1
    - Dst: PacketReader::getPosition
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:287,1
    - Dst: PacketReader::getName
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:289,1
    - Dst: PacketReader::getDnsrecordheader
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:291,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:296,1
    - Dst: DNSRecord::setContent
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:303,1
    - Dst: std::make_shared<UnknownRecordContent>
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:303,1
    - Dst: DNSRecord::setContent
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:307,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:307,1
    - Dst: MOADNSException
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:311,1
    - Dst: toString
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:311,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:311,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:311,1
    - Dst: MOADNSException
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:316,1
    - Dst: toLogString
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:316,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:316,1
    - Dst: emplace_back
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:322,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:322,1
    - Dst: PacketReader::getPosition
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:326,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:326,1
    - Dst: MOADNSException
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:327,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:327,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:327,1
    - Dst: PacketReader::getPosition
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:327,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:328,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:328,1
    - Dst: MOADNSException
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:345,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:345,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:345,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:346,1
    - Dst: string
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:347,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:347,1
    CyclomaticComplexity: 43
    EdgeCount: 43
    ICount: 69
    argCount: 2
    argNames:
    - query
    - ' packet'
    argTypes:
    - bool
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 350
      start: 234
    functionDepth: 0
    functionLinenumber: 234
    functionLinenumberEnd: 350
    functionName: MOADNSParser::init
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsparser.cc
    functionUses: 2
    functionsReached:
    - PacketReader::getName
    - toString
    - toLogString
    - std::to_string
    - DNSRecord::DNSRecord
    - ntohs
    - DNSRecord::setContent
    - emplace_back
    - static_cast<size_t>
    - string
    - size
    - PacketReader::get16BitInt
    - DNSRecordContent::make
    - PacketReader::getPosition
    - std::make_shared<UnknownRecordContent>
    - reserve
    - memcpy
    - std::move
    - std::min
    - what
    - PacketReader::getDnsrecordheader
    - data
    - MOADNSException
    linkageType: ''
    returnType: void
    signature: void MOADNSParser::init(bool query, const std::string_view& packet)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:354,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 365
      start: 352
    functionDepth: 0
    functionLinenumber: 352
    functionLinenumberEnd: 365
    functionName: MOADNSParser::hasEDNS
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsparser.cc
    functionUses: 0
    functionsReached:
    - empty
    linkageType: ''
    returnType: bool
    signature: bool MOADNSParser::hasEDNS() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: reinterpret_cast<unsigned char*>
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:369,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:372,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:375,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:376,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:377,1
    - Dst: ntohl
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:378,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:382,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:382,1
    - Dst: std::out_of_range
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:383,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:383,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:383,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:383,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:383,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 1
    argNames:
    - ah
    argTypes:
    - struct dnsrecordheader
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 385
      start: 367
    functionDepth: 0
    functionLinenumber: 367
    functionLinenumberEnd: 385
    functionName: PacketReader::getDnsrecordheader
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsparser.cc
    functionUses: 12
    functionsReached:
    - ntohl
    - std::out_of_range
    - std::to_string
    - ntohs
    - size
    - reinterpret_cast<unsigned char*>
    - at
    linkageType: ''
    returnType: void
    signature: void PacketReader::getDnsrecordheader(struct dnsrecordheader &ah)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:393,1
    - Dst: std::out_of_range
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:394,1
    - Dst: resize
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:397,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:400,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:400,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 2
    argNames:
    - ' dest'
    - len
    argTypes:
    - vector<unsigned char>
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 402
      start: 388
    functionDepth: 1
    functionLinenumber: 388
    functionLinenumberEnd: 402
    functionName: PacketReader::copyRecord
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsparser.cc
    functionUses: 0
    functionsReached:
    - at
    - std::out_of_range
    - resize
    - size
    linkageType: ''
    returnType: void
    signature: void PacketReader::copyRecord(vector<unsigned char>& dest, uint16_t
      len)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:406,1
    - Dst: std::out_of_range
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:407,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:410,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:410,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - dest
    - len
    argTypes:
    - unsigned char*
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 412
      start: 404
    functionDepth: 0
    functionLinenumber: 404
    functionLinenumberEnd: 412
    functionName: PacketReader::copyRecord
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsparser.cc
    functionUses: 0
    functionsReached:
    - memcpy
    - at
    - std::out_of_range
    - size
    linkageType: ''
    returnType: void
    signature: void PacketReader::copyRecord(unsigned char* dest, uint16_t len)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:416,1
    - Dst: std::out_of_range
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:417,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:419,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:419,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - ' ret'
    argTypes:
    - NodeOrLocatorID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 421
      start: 414
    functionDepth: 0
    functionLinenumber: 414
    functionLinenumberEnd: 421
    functionName: PacketReader::xfrNodeOrLocatorID
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsparser.cc
    functionUses: 0
    functionsReached:
    - memcpy
    - at
    - std::out_of_range
    - size
    linkageType: ''
    returnType: void
    signature: void PacketReader::xfrNodeOrLocatorID(NodeOrLocatorID& ret)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:426,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:426,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:428,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:428,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:430,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:430,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:432,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:432,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:434,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:434,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:436,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:436,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 1
    argNames:
    - ' ret'
    argTypes:
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 437
      start: 423
    functionDepth: 0
    functionLinenumber: 423
    functionLinenumberEnd: 437
    functionName: PacketReader::xfr48BitInt
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsparser.cc
    functionUses: 0
    functionsReached:
    - at
    - static_cast<uint8_t>
    linkageType: ''
    returnType: void
    signature: void PacketReader::xfr48BitInt(uint64_t& ret)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:442,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:442,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:444,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:444,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:446,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:446,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:448,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:448,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 451
      start: 439
    functionDepth: 0
    functionLinenumber: 439
    functionLinenumberEnd: 451
    functionName: PacketReader::get32BitInt
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsparser.cc
    functionUses: 4
    functionsReached:
    - at
    - static_cast<uint8_t>
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t PacketReader::get32BitInt()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:457,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:457,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:459,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:459,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 462
      start: 454
    functionDepth: 0
    functionLinenumber: 454
    functionLinenumberEnd: 462
    functionName: PacketReader::get16BitInt
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsparser.cc
    functionUses: 13
    functionsReached:
    - at
    - static_cast<uint8_t>
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t PacketReader::get16BitInt()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:466,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 467
      start: 464
    functionDepth: 0
    functionLinenumber: 464
    functionLinenumberEnd: 467
    functionName: PacketReader::get8BitInt
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsparser.cc
    functionUses: 1
    functionsReached:
    - at
    linkageType: ''
    returnType: uint8_t
    signature: uint8_t PacketReader::get8BitInt()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:473,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:473,1
    - Dst: std::out_of_range
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:479,1
    - Dst: string
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:479,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:479,1
    - Dst: std::out_of_range
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:482,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:484,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 485
      start: 469
    functionDepth: 0
    functionLinenumber: 469
    functionLinenumberEnd: 485
    functionName: PacketReader::getName
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsparser.cc
    functionUses: 12
    functionsReached:
    - std::out_of_range
    - PDNSException
    - what
    - string
    - size
    - data
    linkageType: ''
    returnType: DNSName
    signature: DNSName PacketReader::getName()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<unsigned char>
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:494,1
    - Dst: snprintf
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:496,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:496,1
    - Dst: std::array::size
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:496,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:497,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 1
    argNames:
    - name
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 508
      start: 488
    functionDepth: 0
    functionLinenumber: 488
    functionLinenumberEnd: 508
    functionName: txtEscape
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsparser.cc
    functionUses: 4
    functionsReached:
    - std::array::size
    - std::array::data
    - snprintf
    - static_cast<unsigned char>
    linkageType: ''
    returnType: string
    signature: string txtEscape(const string &name)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: string::reserve
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:514,1
    - Dst: string::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:516,1
    - Dst: string::append
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:517,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:521,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:521,1
    - Dst: std::out_of_range
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:529,1
    - Dst: string::append
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:532,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:534,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:534,1
    - Dst: string::append
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:535,1
    - Dst: txtEscape
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:535,1
    - Dst: string::append
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:537,1
    - Dst: string::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:544,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 28
    argCount: 2
    argNames:
    - multi
    - lenField
    argTypes:
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 549
      start: 511
    functionDepth: 0
    functionLinenumber: 511
    functionLinenumberEnd: 549
    functionName: PacketReader::getText
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsparser.cc
    functionUses: 1
    functionsReached:
    - string::reserve
    - std::out_of_range
    - string::empty
    - string::append
    - static_cast<uint8_t>
    - txtEscape
    - at
    linkageType: ''
    returnType: string
    signature: string PacketReader::getText(bool multi, bool lenField)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:555,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:555,1
    - Dst: std::out_of_range
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:563,1
    - Dst: std::out_of_range
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:569,1
    - Dst: substr
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:577,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 1
    argNames:
    - lenField
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 580
      start: 551
    functionDepth: 0
    functionLinenumber: 551
    functionLinenumberEnd: 580
    functionName: PacketReader::getUnquotedText
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsparser.cc
    functionUses: 1
    functionsReached:
    - std::out_of_range
    - substr
    - at
    - static_cast<uint8_t>
    linkageType: ''
    returnType: string
    signature: string PacketReader::getUnquotedText(bool lenField)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: std::out_of_range
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:587,1
    - Dst: assign
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:589,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:589,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:589,1
    - Dst: clear
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:592,1
    - Dst: std::out_of_range
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:599,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 1
    argNames:
    - ' blob'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 601
      start: 582
    functionDepth: 1
    functionLinenumber: 582
    functionLinenumberEnd: 601
    functionName: PacketReader::xfrBlob
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsparser.cc
    functionUses: 13
    functionsReached:
    - clear
    - assign
    - std::out_of_range
    - at
    linkageType: ''
    returnType: void
    signature: void PacketReader::xfrBlob(string& blob)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PacketReader::xfrBlob
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:604,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' blob'
    - length
    argTypes:
    - string
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 605
      start: 603
    functionDepth: 0
    functionLinenumber: 603
    functionLinenumberEnd: 605
    functionName: PacketReader::xfrBlobNoSpaces
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsparser.cc
    functionUses: 1
    functionsReached:
    - PacketReader::xfrBlob
    linkageType: ''
    returnType: void
    signature: void PacketReader::xfrBlobNoSpaces(string& blob, int length)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: std::out_of_range
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:611,1
    - Dst: std::out_of_range
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:615,1
    - Dst: assign
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:618,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:618,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:618,1
    - Dst: clear
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:623,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 2
    argNames:
    - ' blob'
    - length
    argTypes:
    - string
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 625
      start: 607
    functionDepth: 1
    functionLinenumber: 607
    functionLinenumberEnd: 625
    functionName: PacketReader::xfrBlob
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsparser.cc
    functionUses: 14
    functionsReached:
    - clear
    - assign
    - std::out_of_range
    - at
    linkageType: ''
    returnType: void
    signature: void PacketReader::xfrBlob(string& blob, int length)
  - BBCount: 22
    BranchProfiles: []
    Callsites:
    - Dst: std::out_of_range
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:632,1
    - Dst: PacketReader::xfr16BitInt
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:635,1
    - Dst: std::out_of_range
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:638,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:638,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:638,1
    - Dst: static_cast<SvcParam::SvcParamKey>
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:642,1
    - Dst: PacketReader::xfr16BitInt
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:645,1
    - Dst: std::out_of_range
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:648,1
    - Dst: std::out_of_range
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:655,1
    - Dst: std::out_of_range
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:658,1
    - Dst: PacketReader::xfr16BitInt
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:664,1
    - Dst: std::set::insert
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:665,1
    - Dst: static_cast<SvcParam::SvcParamKey>
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:665,1
    - Dst: set<SvcParam>::insert
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:667,1
    - Dst: SvcParam
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:667,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:667,1
    - Dst: PacketReader::xfr8BitInt
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:676,1
    - Dst: std::out_of_range
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:678,1
    - Dst: std::out_of_range
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:681,1
    - Dst: PacketReader::xfrBlob
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:683,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:684,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:684,1
    - Dst: set<SvcParam>::insert
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:686,1
    - Dst: SvcParam
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:686,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:686,1
    - Dst: std::out_of_range
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:692,1
    - Dst: SvcParam::keyToString
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:692,1
    - Dst: set<SvcParam>::insert
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:694,1
    - Dst: SvcParam
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:694,1
    - Dst: std::out_of_range
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:699,1
    - Dst: PacketReader::xfr16BitInt
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:702,1
    - Dst: set<SvcParam>::insert
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:703,1
    - Dst: SvcParam
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:703,1
    - Dst: std::out_of_range
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:710,1
    - Dst: SvcParam::keyToString
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:710,1
    - Dst: PacketReader::xfrCAWithoutPort
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:717,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:718,1
    - Dst: SvcParam
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:724,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:724,1
    - Dst: auto::setAutoHint
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:725,1
    - Dst: set<SvcParam>::insert
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:726,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:726,1
    - Dst: std::string::reserve
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:731,1
    - Dst: PacketReader::xfrBlobNoSpaces
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:732,1
    - Dst: set<SvcParam>::insert
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:733,1
    - Dst: SvcParam
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:733,1
    - Dst: std::out_of_range
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:738,1
    - Dst: SvcParam::keyToString
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:738,1
    - Dst: vector::reserve
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:741,1
    - Dst: PacketReader::xfr16BitInt
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:746,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:747,1
    - Dst: SvcParam
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:749,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:749,1
    - Dst: set<SvcParam>::insert
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:750,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:750,1
    - Dst: std::string::reserve
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:755,1
    - Dst: PacketReader::xfrBlob
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:756,1
    - Dst: set<SvcParam>::insert
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:757,1
    - Dst: SvcParam
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:757,1
    CyclomaticComplexity: 37
    EdgeCount: 37
    ICount: 99
    argCount: 1
    argNames:
    - kvs
    argTypes:
    - set<SvcParam>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 762
      start: 627
    functionDepth: 1
    functionLinenumber: 627
    functionLinenumberEnd: 762
    functionName: PacketReader::xfrSvcParamKeyVals
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsparser.cc
    functionUses: 13
    functionsReached:
    - std::vector::push_back
    - std::move
    - vector::push_back
    - std::out_of_range
    - std::to_string
    - PacketReader::xfr8BitInt
    - PacketReader::xfrBlob
    - set<SvcParam>::insert
    - static_cast<SvcParam::SvcParamKey>
    - SvcParam
    - PacketReader::xfrCAWithoutPort
    - auto::setAutoHint
    - std::string::reserve
    - PacketReader::xfrBlobNoSpaces
    - std::set::insert
    - vector::reserve
    - SvcParam::keyToString
    - PacketReader::xfr16BitInt
    linkageType: ''
    returnType: void
    signature: void PacketReader::xfrSvcParamKeyVals(set<SvcParam> &kvs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PacketReader::xfrBlob
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:767,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' blob'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 768
      start: 765
    functionDepth: 0
    functionLinenumber: 765
    functionLinenumberEnd: 768
    functionName: PacketReader::xfrHexBlob
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsparser.cc
    functionUses: 0
    functionsReached:
    - PacketReader::xfrBlob
    linkageType: ''
    returnType: void
    signature: void PacketReader::xfrHexBlob(string& blob, bool /* keepReading */)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strchr
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:775,1
    - Dst: string::c_str
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:775,1
    - Dst: boost::replace_all
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:776,1
    - Dst: boost::replace_all
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:777,1
    - Dst: boost::replace_all
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:778,1
    - Dst: vstringtok
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:782,1
    - Dst: string::reserve
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:784,1
    - Dst: string::size
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:784,1
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:786,1
    - Dst: strncasecmp
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:786,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:786,1
    - Dst: string::c_str
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:786,1
    - Dst: string::length
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:786,1
    - Dst: string::append
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:788,1
    - Dst: string::append
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:791,1
    - Dst: string::append
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:792,1
    - Dst: string::c_str
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:792,1
    - Dst: string::append
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:794,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 2
    argNames:
    - ' elabel'
    - ' root'
    argTypes:
    - string
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 796
      start: 771
    functionDepth: 0
    functionLinenumber: 771
    functionLinenumberEnd: 796
    functionName: simpleCompress
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsparser.cc
    functionUses: 1
    functionsReached:
    - string::c_str
    - string::reserve
    - string::size
    - c_str
    - string::append
    - strncasecmp
    - boost::replace_all
    - strchr
    - vstringtok
    - empty
    - string::length
    linkageType: ''
    returnType: string
    signature: string simpleCompress(const string& elabel, const string& root)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:806,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:807,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:807,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:807,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:811,1
    - Dst: DNSPacketMangler::skipDomainName
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:812,1
    - Dst: DNSPacketMangler::skipBytes
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:814,1
    - Dst: DNSPacketMangler::skipDomainName
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:818,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:820,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:820,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:820,1
    - Dst: DNSPacketMangler::get16BitInt
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:821,1
    - Dst: DNSPacketMangler::get16BitInt
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:822,1
    - Dst: DNSPacketMangler::get32BitInt
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:827,1
    - Dst: visitor
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:828,1
    - Dst: DNSPacketMangler::rewindBytes
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:830,1
    - Dst: DNSPacketMangler::setAndSkip32BitInt
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:831,1
    - Dst: DNSPacketMangler::skipRData
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:833,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 22
    argCount: 3
    argNames:
    - packet
    - length
    - ' visitor'
    argTypes:
    - char*
    - size_t
    - std::function<uint32_t(uint8_t, uint16_t, uint16_t, uint32_t)>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 840
      start: 799
    functionDepth: 1
    functionLinenumber: 799
    functionLinenumberEnd: 840
    functionName: editDNSPacketTTL
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsparser.cc
    functionUses: 10
    functionsReached:
    - DNSPacketMangler::skipDomainName
    - memcpy
    - DNSPacketMangler::get32BitInt
    - DNSPacketMangler::skipBytes
    - ntohs
    - visitor
    - DNSPacketMangler::setAndSkip32BitInt
    - DNSPacketMangler::rewindBytes
    - DNSPacketMangler::skipRData
    - DNSPacketMangler::get16BitInt
    linkageType: ''
    returnType: void
    signature: void editDNSPacketTTL(char* packet, size_t length, const std::function<uint32_t(uint8_t,
      uint16_t, uint16_t, uint32_t)>& visitor)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:844,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:850,1
    - Dst: const_cast<char*>
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:851,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:851,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:851,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:853,1
    - Dst: DNSPacketMangler::skipDomainName
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:855,1
    - Dst: DNSPacketMangler::skipBytes
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:857,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:859,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:859,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:859,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:859,1
    - Dst: DNSPacketMangler::skipDomainName
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:861,1
    - Dst: DNSPacketMangler::get16BitInt
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:862,1
    - Dst: DNSPacketMangler::get16BitInt
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:863,1
    - Dst: count
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:864,1
    - Dst: DNSPacketMangler::skipBytes
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:868,1
    - Dst: DNSPacketMangler::skipRData
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:869,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    argCount: 2
    argNames:
    - ' packet'
    - ' qtypes'
    argTypes:
    - PacketBuffer
    - std::unordered_set<QType>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 876
      start: 842
    functionDepth: 0
    functionLinenumber: 842
    functionLinenumberEnd: 876
    functionName: checkIfPacketContainsRecords
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsparser.cc
    functionUses: 1
    functionsReached:
    - DNSPacketMangler::skipDomainName
    - static_cast<size_t>
    - const_cast<char*>
    - DNSPacketMangler::skipBytes
    - ntohs
    - count
    - size
    - DNSPacketMangler::skipRData
    - reinterpret_cast<const char*>
    - data
    - DNSPacketMangler::get16BitInt
    linkageType: ''
    returnType: bool
    signature: bool checkIfPacketContainsRecords(const PacketBuffer& packet, const
      std::unordered_set<QType>& qtypes)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:882,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:886,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:888,1
    - Dst: std::string_view
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:890,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:890,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:890,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:890,1
    - Dst: DNSName::DNSName
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:895,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:896,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:897,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:898,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:899,1
    - Dst: PacketReader::getName
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:905,1
    - Dst: PacketReader::get16BitInt
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:906,1
    - Dst: PacketReader::get16BitInt
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:907,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:910,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:911,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:912,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:913,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:914,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:915,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:916,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:917,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:918,1
    - Dst: PacketReader::getName
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:923,1
    - Dst: PacketReader::get16BitInt
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:924,1
    - Dst: PacketReader::get16BitInt
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:925,1
    - Dst: PacketReader::getName
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:933,1
    - Dst: PacketReader::getDnsrecordheader
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:934,1
    - Dst: PacketReader::xfrBlob
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:935,1
    - Dst: find
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:937,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:937,1
    - Dst: find
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:939,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:939,1
    - Dst: clear
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:941,1
    - Dst: GenericDNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:944,1
    - Dst: GenericDNSPacketWriter::xfrBlob
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:945,1
    - Dst: PacketReader::getName
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:951,1
    - Dst: PacketReader::getDnsrecordheader
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:952,1
    - Dst: PacketReader::xfrBlob
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:953,1
    - Dst: find
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:955,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:955,1
    - Dst: find
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:956,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:956,1
    - Dst: clear
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:958,1
    - Dst: GenericDNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:961,1
    - Dst: GenericDNSPacketWriter::xfrBlob
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:962,1
    - Dst: PacketReader::getName
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:967,1
    - Dst: PacketReader::getDnsrecordheader
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:968,1
    - Dst: PacketReader::xfrBlob
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:969,1
    - Dst: find
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:971,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:971,1
    - Dst: find
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:972,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:972,1
    - Dst: clear
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:974,1
    - Dst: GenericDNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:977,1
    - Dst: GenericDNSPacketWriter::xfrBlob
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:978,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:981,1
    - Dst: clear
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:986,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 73
    argCount: 3
    argNames:
    - ' initialPacket'
    - ' newContent'
    - ' qtypes'
    argTypes:
    - PacketBuffer
    - PacketBuffer
    - std::unordered_set<QType>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 990
      start: 878
    functionDepth: 1
    functionLinenumber: 878
    functionLinenumberEnd: 990
    functionName: rewritePacketWithoutRecordTypes
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsparser.cc
    functionUses: 1
    functionsReached:
    - PacketReader::getName
    - PacketReader::xfrBlob
    - ntohs
    - GenericDNSPacketWriter::startRecord
    - std::string_view
    - GenericDNSPacketWriter::getHeader
    - end
    - size
    - PacketReader::get16BitInt
    - GenericDNSPacketWriter::commit
    - reinterpret_cast<const char*>
    - PacketReader::getDnsrecordheader
    - GenericDNSPacketWriter::xfrBlob
    - clear
    - data
    - DNSName::DNSName
    - find
    linkageType: ''
    returnType: int
    signature: int rewritePacketWithoutRecordTypes(const PacketBuffer& initialPacket,
      PacketBuffer& newContent, const std::unordered_set<QType>& qtypes)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: clearDNSPacketRecordTypes
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:994,1
    - Dst: reinterpret_cast<PacketBuffer&>
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:994,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' packet'
    - ' qtypes'
    argTypes:
    - vector<uint8_t>
    - std::unordered_set<QType>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 995
      start: 992
    functionDepth: 0
    functionLinenumber: 992
    functionLinenumberEnd: 995
    functionName: clearDNSPacketRecordTypes
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsparser.cc
    functionUses: 9
    functionsReached:
    - clearDNSPacketRecordTypes
    - reinterpret_cast<PacketBuffer&>
    linkageType: ''
    returnType: void
    signature: void clearDNSPacketRecordTypes(vector<uint8_t>& packet, const std::unordered_set<QType>&
      qtypes)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: checkIfPacketContainsRecords
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:999,1
    - Dst: rewritePacketWithoutRecordTypes
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:1005,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:1007,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - ' packet'
    - ' qtypes'
    argTypes:
    - PacketBuffer
    - std::unordered_set<QType>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1009
      start: 997
    functionDepth: 0
    functionLinenumber: 997
    functionLinenumberEnd: 1009
    functionName: clearDNSPacketRecordTypes
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsparser.cc
    functionUses: 9
    functionsReached:
    - checkIfPacketContainsRecords
    - rewritePacketWithoutRecordTypes
    - std::move
    linkageType: ''
    returnType: void
    signature: void clearDNSPacketRecordTypes(PacketBuffer& packet, const std::unordered_set<QType>&
      qtypes)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:1018,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:1019,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:1020,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:1020,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:1020,1
    - Dst: DNSPacketMangler::skipDomainName
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:1024,1
    - Dst: DNSPacketMangler::skipBytes
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:1026,1
    - Dst: DNSPacketMangler::skipDomainName
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:1030,1
    - Dst: DNSPacketMangler::get16BitInt
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:1032,1
    - Dst: DNSPacketMangler::skipBytes
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:1034,1
    - Dst: DNSPacketMangler::decreaseAndSkip32BitInt
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:1037,1
    - Dst: DNSPacketMangler::skipBytes
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:1039,1
    - Dst: DNSPacketMangler::skipRData
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:1041,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 21
    argCount: 4
    argNames:
    - packet
    - length
    - seconds
    - ' aligned_dh'
    argTypes:
    - char*
    - size_t
    - uint32_t
    - dnsheader_aligned
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1046
      start: 1012
    functionDepth: 0
    functionLinenumber: 1012
    functionLinenumberEnd: 1046
    functionName: ageDNSPacket
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsparser.cc
    functionUses: 4
    functionsReached:
    - DNSPacketMangler::skipDomainName
    - DNSPacketMangler::skipBytes
    - ntohs
    - DNSPacketMangler::decreaseAndSkip32BitInt
    - get
    - DNSPacketMangler::skipRData
    - DNSPacketMangler::get16BitInt
    linkageType: ''
    returnType: void
    signature: void ageDNSPacket(char* packet, size_t length, uint32_t seconds, const
      dnsheader_aligned& aligned_dh)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ageDNSPacket
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:1050,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:1050,1
    - Dst: length
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:1050,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' packet'
    - seconds
    - ' aligned_dh'
    argTypes:
    - std::string
    - uint32_t
    - dnsheader_aligned
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1051
      start: 1048
    functionDepth: 0
    functionLinenumber: 1048
    functionLinenumberEnd: 1051
    functionName: ageDNSPacket
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsparser.cc
    functionUses: 5
    functionsReached:
    - ageDNSPacket
    - length
    - data
    linkageType: ''
    returnType: void
    signature: void ageDNSPacket(std::string& packet, uint32_t seconds, const dnsheader_aligned&
      aligned_dh)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:1059,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:1060,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:1068,1
    - Dst: DNSPacketMangler::skipDomainName
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:1071,1
    - Dst: DNSPacketMangler::skipBytes
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:1073,1
    - Dst: std::vector::reserve
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:1080,1
    - Dst: DNSPacketMangler::getOffset
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:1083,1
    - Dst: DNSPacketMangler::skipDomainName
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:1084,1
    - Dst: DNSPacketMangler::get16BitInt
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:1085,1
    - Dst: std::vector::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:1087,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:1089,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:1094,1
    - Dst: DNSPacketMangler::skipBytes
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:1099,1
    - Dst: DNSPacketMangler::skipBytes
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:1102,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:1103,1
    - Dst: DNSPacketMangler::skipRDataAndReturnOffsets
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:1103,1
    - Dst: std::vector::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:1105,1
    - Dst: DNSPacketMangler::skipBytes
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:1109,1
    - Dst: DNSPacketMangler::skipBytes
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:1112,1
    - Dst: DNSPacketMangler::skipRData
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:1113,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:1117,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:1122,1
    - Dst: dist
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:1123,1
    - Dst: uid::param_type
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:1123,1
    - Dst: DNSPacketMangler::swapInPlace
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:1125,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:1125,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:1125,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 48
    argCount: 3
    argNames:
    - packet
    - length
    - ' aligned_dh'
    argTypes:
    - char*
    - size_t
    - dnsheader_aligned
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1132
      start: 1053
    functionDepth: 0
    functionLinenumber: 1053
    functionLinenumberEnd: 1132
    functionName: shuffleDNSPacket
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsparser.cc
    functionUses: 1
    functionsReached:
    - DNSPacketMangler::skipDomainName
    - std::vector::push_back
    - DNSPacketMangler::skipRDataAndReturnOffsets
    - std::vector::size
    - DNSPacketMangler::skipBytes
    - ntohs
    - DNSPacketMangler::swapInPlace
    - DNSName
    - get
    - std::vector::reserve
    - DNSPacketMangler::skipRData
    - uid::param_type
    - std::vector::at
    - DNSPacketMangler::get16BitInt
    - DNSPacketMangler::getOffset
    - dist
    - std::vector::empty
    linkageType: ''
    returnType: void
    signature: void shuffleDNSPacket(char* packet, size_t length, const dnsheader_aligned&
      aligned_dh)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:1136,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:1145,1
    - Dst: DNSPacketMangler::skipDomainName
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:1147,1
    - Dst: DNSPacketMangler::skipBytes
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:1149,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:1151,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:1151,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:1151,1
    - Dst: DNSPacketMangler::skipDomainName
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:1153,1
    - Dst: DNSPacketMangler::get16BitInt
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:1154,1
    - Dst: DNSPacketMangler::get16BitInt
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:1156,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:1163,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:1163,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:1163,1
    - Dst: DNSPacketMangler::get32BitInt
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:1167,1
    - Dst: std::min
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:1168,1
    - Dst: DNSPacketMangler::skipRData
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:1170,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 23
    argCount: 3
    argNames:
    - packet
    - length
    - seenAuthSOA
    argTypes:
    - char*
    - size_t
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1177
      start: 1134
    functionDepth: 0
    functionLinenumber: 1134
    functionLinenumberEnd: 1177
    functionName: getDNSPacketMinTTL
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsparser.cc
    functionUses: 4
    functionsReached:
    - DNSPacketMangler::skipDomainName
    - pdns::max
    - DNSPacketMangler::get32BitInt
    - DNSPacketMangler::skipBytes
    - ntohs
    - std::min
    - DNSPacketMangler::skipRData
    - DNSPacketMangler::get16BitInt
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t getDNSPacketMinTTL(const char* packet, size_t length, bool*
      seenAuthSOA)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:1190,1
    - Dst: DNSPacketMangler::skipDomainName
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:1192,1
    - Dst: DNSPacketMangler::skipBytes
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:1194,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:1196,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:1196,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:1196,1
    - Dst: DNSPacketMangler::skipDomainName
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:1198,1
    - Dst: DNSPacketMangler::skipBytes
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:1200,1
    - Dst: DNSPacketMangler::skipRData
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:1201,1
    - Dst: DNSPacketMangler::getOffset
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:1203,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 2
    argNames:
    - packet
    - length
    argTypes:
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1209
      start: 1179
    functionDepth: 0
    functionLinenumber: 1179
    functionLinenumberEnd: 1209
    functionName: getDNSPacketLength
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsparser.cc
    functionUses: 5
    functionsReached:
    - DNSPacketMangler::skipDomainName
    - DNSPacketMangler::skipBytes
    - ntohs
    - DNSPacketMangler::skipRData
    - DNSPacketMangler::getOffset
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t getDNSPacketLength(const char* packet, size_t length)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:1222,1
    - Dst: DNSPacketMangler::skipDomainName
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:1224,1
    - Dst: DNSPacketMangler::get16BitInt
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:1226,1
    - Dst: DNSPacketMangler::skipBytes
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:1231,1
    - Dst: DNSPacketMangler::skipBytes
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:1234,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:1237,1
    - Dst: DNSPacketMangler::skipDomainName
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:1239,1
    - Dst: DNSPacketMangler::get16BitInt
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:1241,1
    - Dst: DNSPacketMangler::skipBytes
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:1246,1
    - Dst: DNSPacketMangler::skipBytes
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:1249,1
    - Dst: DNSPacketMangler::skipBytes
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:1252,1
    - Dst: DNSPacketMangler::skipRData
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:1253,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:1255,1
    - Dst: DNSPacketMangler::skipDomainName
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:1257,1
    - Dst: DNSPacketMangler::get16BitInt
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:1259,1
    - Dst: DNSPacketMangler::skipBytes
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:1264,1
    - Dst: DNSPacketMangler::skipBytes
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:1267,1
    - Dst: DNSPacketMangler::skipBytes
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:1270,1
    - Dst: DNSPacketMangler::skipRData
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:1271,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:1273,1
    - Dst: DNSPacketMangler::skipDomainName
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:1275,1
    - Dst: DNSPacketMangler::get16BitInt
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:1277,1
    - Dst: DNSPacketMangler::skipBytes
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:1282,1
    - Dst: DNSPacketMangler::skipBytes
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:1285,1
    - Dst: DNSPacketMangler::skipBytes
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:1288,1
    - Dst: DNSPacketMangler::skipRData
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:1289,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 58
    argCount: 4
    argNames:
    - packet
    - length
    - section
    - type
    argTypes:
    - char*
    - size_t
    - uint8_t
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1296
      start: 1211
    functionDepth: 0
    functionLinenumber: 1211
    functionLinenumberEnd: 1296
    functionName: getRecordsOfTypeCount
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsparser.cc
    functionUses: 7
    functionsReached:
    - DNSPacketMangler::skipDomainName
    - DNSPacketMangler::skipBytes
    - ntohs
    - DNSPacketMangler::skipRData
    - DNSPacketMangler::get16BitInt
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t getRecordsOfTypeCount(const char* packet, size_t length, uint8_t
      section, uint16_t type)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:1317,1
    - Dst: DNSPacketMangler::skipDomainName
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:1319,1
    - Dst: DNSPacketMangler::skipBytes
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:1321,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:1323,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:1323,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:1323,1
    - Dst: DNSPacketMangler::skipDomainName
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:1325,1
    - Dst: DNSPacketMangler::get16BitInt
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:1326,1
    - Dst: DNSPacketMangler::get16BitInt
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:1329,1
    - Dst: DNSPacketMangler::skipBytes
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:1331,1
    - Dst: DNSPacketMangler::get16BitInt
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:1332,1
    - Dst: DNSPacketMangler::skipBytes
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:1337,1
    - Dst: DNSPacketMangler::skipBytes
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:1339,1
    - Dst: DNSPacketMangler::skipRData
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:1340,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 29
    argCount: 4
    argNames:
    - packet
    - length
    - payloadSize
    - z
    argTypes:
    - char*
    - size_t
    - uint16_t*
    - uint16_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1348
      start: 1298
    functionDepth: 0
    functionLinenumber: 1298
    functionLinenumberEnd: 1348
    functionName: getEDNSUDPPayloadSizeAndZ
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsparser.cc
    functionUses: 1
    functionsReached:
    - DNSPacketMangler::skipDomainName
    - DNSPacketMangler::skipBytes
    - ntohs
    - DNSPacketMangler::skipRData
    - DNSPacketMangler::get16BitInt
    linkageType: ''
    returnType: bool
    signature: bool getEDNSUDPPayloadSizeAndZ(const char* packet, size_t length, uint16_t*
      payloadSize, uint16_t* z)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:1352,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:1358,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:1359,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:1359,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:1359,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:1363,1
    - Dst: PacketReader::getName
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:1364,1
    - Dst: PacketReader::skip
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:1366,1
    - Dst: PacketReader::getName
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:1370,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:1372,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:1372,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:1372,1
    - Dst: PacketReader::get16BitInt
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:1373,1
    - Dst: PacketReader::get16BitInt
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:1374,1
    - Dst: PacketReader::get32BitInt
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:1381,1
    - Dst: PacketReader::get16BitInt
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:1382,1
    - Dst: PacketReader::getPosition
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:1383,1
    - Dst: PacketReader::skip
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:1384,1
    - Dst: visitor
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:1386,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.cc:1386,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 23
    argCount: 2
    argNames:
    - ' packet'
    - ' visitor'
    argTypes:
    - std::string_view
    - std::function<bool(uint8_t, uint16_t, uint16_t, uint32_t, uint16_t, const char*)>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1397
      start: 1350
    functionDepth: 1
    functionLinenumber: 1350
    functionLinenumberEnd: 1397
    functionName: visitDNSPacket
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsparser.cc
    functionUses: 2
    functionsReached:
    - PacketReader::getName
    - ntohs
    - PacketReader::skip
    - visitor
    - size
    - PacketReader::get16BitInt
    - PacketReader::get32BitInt
    - data
    - PacketReader::getPosition
    - at
    linkageType: ''
    returnType: bool
    signature: bool visitDNSPacket(const std::string_view& packet, const std::function<bool(uint8_t,
      uint16_t, uint16_t, uint32_t, uint16_t, const char*)>& visitor)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 5
    argNames:
    - ' cs'
    - ' query'
    - ' dnsCryptQuery'
    - now
    - tcp
    argTypes:
    - ClientState
    - PacketBuffer
    - std::unique_ptr<DNSCryptQuery>
    - time_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 39
    functionDepth: 0
    functionLinenumber: 39
    functionLinenumberEnd: 47
    functionName: checkDNSCryptQuery
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool checkDNSCryptQuery(const ClientState& cs, PacketBuffer& query,
      std::unique_ptr<DNSCryptQuery>& dnsCryptQuery, time_t now, bool tcp)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - ' dnsHeader'
    - ' clientState'
    argTypes:
    - struct dnsheader
    - ClientState
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 49
    functionDepth: 0
    functionLinenumber: 49
    functionLinenumberEnd: 54
    functionName: checkQueryHeaders
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool checkQueryHeaders(const struct dnsheader& dnsHeader, ClientState&
      clientState)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ' str'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 56
    functionDepth: 0
    functionLinenumber: 56
    functionLinenumberEnd: 60
    functionName: uptimeOfProcess
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t uptimeOfProcess(const std::string& str)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 8
    argNames:
    - ' ids'
    - udiff
    - ' client'
    - ' backend'
    - size
    - ' cleartextDH'
    - protocol
    - fromBackend
    argTypes:
    - InternalQueryState
    - double
    - ComboAddress
    - ComboAddress
    - unsigned int
    - dnsheader
    - dnsdist::Protocol
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 62
    functionDepth: 0
    functionLinenumber: 62
    functionLinenumberEnd: 72
    functionName: handleResponseSent
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void handleResponseSent(InternalQueryState& ids, double udiff, const
      ComboAddress& client, const ComboAddress& backend, unsigned int size, const
      dnsheader& cleartextDH, dnsdist::Protocol protocol, bool fromBackend)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 10
    argNames:
    - ' qname'
    - ' qtype'
    - udiff
    - ' client'
    - ' backend'
    - size
    - ' cleartextDH'
    - outgoingProtocol
    - incomingProtocol
    - fromBackend
    argTypes:
    - DNSName
    - QType
    - double
    - ComboAddress
    - ComboAddress
    - unsigned int
    - dnsheader
    - dnsdist::Protocol
    - dnsdist::Protocol
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 74
    functionDepth: 0
    functionLinenumber: 74
    functionLinenumberEnd: 86
    functionName: handleResponseSent
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void handleResponseSent(DNSName&& qname, const QType& qtype, double
      udiff, const ComboAddress& client, const ComboAddress& backend, unsigned int
      size, const dnsheader& cleartextDH, dnsdist::Protocol outgoingProtocol, dnsdist::Protocol
      incomingProtocol, bool fromBackend)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: s_processQuery
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:93,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - ' dnsQuestion'
    - ' selectedBackend'
    argTypes:
    - DNSQuestion
    - std::shared_ptr<DownstreamState>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 90
    functionDepth: 0
    functionLinenumber: 90
    functionLinenumberEnd: 97
    functionName: processQuery
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc
    functionUses: 3
    functionsReached:
    - s_processQuery
    linkageType: ''
    returnType: ProcessQueryResult
    signature: ProcessQueryResult processQuery(DNSQuestion& dnsQuestion, std::shared_ptr<DownstreamState>&
      selectedBackend)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 6
    argNames:
    - ' response'
    - ' qname'
    - qtype
    - qclass
    - ' remote'
    - allowEmptyResponse
    argTypes:
    - PacketBuffer
    - DNSName
    - uint16_t
    - uint16_t
    - std::shared_ptr<DownstreamState>
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 99
    functionDepth: 0
    functionLinenumber: 99
    functionLinenumberEnd: 108
    functionName: responseContentMatches
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool responseContentMatches(const PacketBuffer& response, const DNSName&
      qname, const uint16_t qtype, const uint16_t qclass, const std::shared_ptr<DownstreamState>&
      remote, bool allowEmptyResponse)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: s_processResponse
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:115,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - ' response'
    - ' dnsResponse'
    - muted
    argTypes:
    - PacketBuffer
    - DNSResponse
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 119
      start: 112
    functionDepth: 0
    functionLinenumber: 112
    functionLinenumberEnd: 119
    functionName: processResponse
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc
    functionUses: 3
    functionsReached:
    - s_processResponse
    linkageType: ''
    returnType: bool
    signature: bool processResponse(PacketBuffer& response, DNSResponse& dnsResponse,
      bool muted)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - r
    - n
    argTypes:
    - ExpectedRequest
    - IOState
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 141
      start: 138
    functionDepth: 0
    functionLinenumber: 138
    functionLinenumberEnd: 141
    functionName: ExpectedStep
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ExpectedStep(ExpectedRequest r, IOState n, size_t b = 0, std::function<void(int
      descriptor)> fn = nullptr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:161,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:161,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ' os'
    - d
    argTypes:
    - std::ostream
    - ExpectedStep::ExpectedRequest
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 163
      start: 158
    functionDepth: 0
    functionLinenumber: 158
    functionLinenumberEnd: 163
    functionName: '& operator<<(std::ostream& os, const ExpectedStep::ExpectedRequest
      d)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc
    functionUses: 0
    functionsReached:
    - static_cast<size_t>
    - std::vector::at
    linkageType: ''
    returnType: std::ostream
    signature: std::ostream & operator<<(std::ostream& os, const ExpectedStep::ExpectedRequest
      d)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - descriptor
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 171
      start: 168
    functionDepth: 0
    functionLinenumber: 168
    functionLinenumberEnd: 171
    functionName: MockupTLSConnection::MockupTLSConnection
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void MockupTLSConnection(int descriptor, bool client = false)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 173
      start: 173
    functionDepth: 0
    functionLinenumber: 173
    functionLinenumberEnd: 173
    functionName: ~MockupTLSConnection()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~MockupTLSConnection()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MockupTLSConnection::getStep
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:177,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:178,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 181
      start: 175
    functionDepth: 0
    functionLinenumber: 175
    functionLinenumberEnd: 181
    functionName: MockupTLSConnection::tryHandshake
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc
    functionUses: 0
    functionsReached:
    - MockupTLSConnection::getStep
    - BOOST_REQUIRE_EQUAL
    linkageType: ''
    returnType: IOState
    signature: IOState tryHandshake() override
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: MockupTLSConnection::getStep
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:185,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:186,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:192,1
    - Dst: BOOST_REQUIRE_GE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:196,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:196,1
    - Dst: insert
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:203,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:203,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:203,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:203,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 3
    argNames:
    - ' buffer'
    - ' pos'
    - toWrite
    argTypes:
    - PacketBuffer
    - size_t
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 207
      start: 183
    functionDepth: 1
    functionLinenumber: 183
    functionLinenumberEnd: 207
    functionName: MockupTLSConnection::tryWrite
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc
    functionUses: 0
    functionsReached:
    - BOOST_REQUIRE_GE
    - MockupTLSConnection::getStep
    - std::runtime_error
    - end
    - size
    - insert
    - begin
    - BOOST_REQUIRE_EQUAL
    linkageType: ''
    returnType: IOState
    signature: IOState tryWrite(const PacketBuffer& buffer, size_t& pos, size_t toWrite)
      override
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: MockupTLSConnection::getStep
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:212,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:213,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:219,1
    - Dst: BOOST_REQUIRE_GE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:229,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:229,1
    - Dst: BOOST_REQUIRE_GE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:230,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:230,1
    - Dst: std::copy
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:232,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:232,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:232,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:232,1
    - Dst: erase
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:234,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:234,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:234,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 3
    argNames:
    - ' buffer'
    - ' pos'
    - toRead
    argTypes:
    - PacketBuffer
    - size_t
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 237
      start: 209
    functionDepth: 0
    functionLinenumber: 209
    functionLinenumberEnd: 237
    functionName: MockupTLSConnection::tryRead
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc
    functionUses: 0
    functionsReached:
    - BOOST_REQUIRE_GE
    - MockupTLSConnection::getStep
    - std::runtime_error
    - size
    - begin
    - erase
    - BOOST_REQUIRE_EQUAL
    - std::copy
    linkageType: ''
    returnType: IOState
    signature: IOState tryRead(PacketBuffer& buffer, size_t& pos, size_t toRead, bool
      allowIncomplete = false) override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MockupTLSConnection::getStep
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:243,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:244,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - fastOpen
    - ' remote'
    argTypes:
    - bool
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 247
      start: 239
    functionDepth: 0
    functionLinenumber: 239
    functionLinenumberEnd: 247
    functionName: MockupTLSConnection::tryConnect
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc
    functionUses: 0
    functionsReached:
    - MockupTLSConnection::getStep
    - BOOST_REQUIRE_EQUAL
    linkageType: ''
    returnType: IOState
    signature: IOState tryConnect(bool fastOpen, const ComboAddress& remote) override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MockupTLSConnection::getStep
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:251,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:252,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 253
      start: 249
    functionDepth: 0
    functionLinenumber: 249
    functionLinenumberEnd: 253
    functionName: MockupTLSConnection::close
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc
    functionUses: 0
    functionsReached:
    - MockupTLSConnection::getStep
    - BOOST_REQUIRE_EQUAL
    linkageType: ''
    returnType: void
    signature: void close() override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 258
      start: 255
    functionDepth: 0
    functionLinenumber: 255
    functionLinenumberEnd: 258
    functionName: MockupTLSConnection::isUsable
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool isUsable() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 263
      start: 260
    functionDepth: 0
    functionLinenumber: 260
    functionLinenumberEnd: 263
    functionName: MockupTLSConnection::getServerNameIndication
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string getServerNameIndication() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::vector<uint8_t>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:267,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 268
      start: 265
    functionDepth: 0
    functionLinenumber: 265
    functionLinenumberEnd: 268
    functionName: MockupTLSConnection::getNextProtocol
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc
    functionUses: 0
    functionsReached:
    - std::vector<uint8_t>
    linkageType: ''
    returnType: std::vector<uint8_t>
    signature: std::vector<uint8_t> getNextProtocol() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 273
      start: 270
    functionDepth: 0
    functionLinenumber: 270
    functionLinenumberEnd: 273
    functionName: MockupTLSConnection::getTLSVersion
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: LibsslTLSVersion
    signature: LibsslTLSVersion getTLSVersion() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 278
      start: 275
    functionDepth: 0
    functionLinenumber: 275
    functionLinenumberEnd: 278
    functionName: MockupTLSConnection::getVerifyResult
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::pair<long, std::string>
    signature: std::pair<long, std::string> getVerifyResult() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 283
      start: 280
    functionDepth: 0
    functionLinenumber: 280
    functionLinenumberEnd: 283
    functionName: MockupTLSConnection::hasSessionBeenResumed
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool hasSessionBeenResumed() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 288
      start: 285
    functionDepth: 0
    functionLinenumber: 285
    functionLinenumberEnd: 288
    functionName: MockupTLSConnection::getSessions
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::vector<std::unique_ptr<TLSSession>>
    signature: std::vector<std::unique_ptr<TLSSession>> getSessions() override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 293
      start: 290
    functionDepth: 0
    functionLinenumber: 290
    functionLinenumberEnd: 293
    functionName: MockupTLSConnection::getAsyncFDs
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::vector<int>
    signature: std::vector<int> getAsyncFDs() override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' session'
    argTypes:
    - std::unique_ptr<TLSSession>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 298
      start: 295
    functionDepth: 0
    functionLinenumber: 295
    functionLinenumberEnd: 298
    functionName: MockupTLSConnection::setSession
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setSession(std::unique_ptr<TLSSession>& session) override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 303
      start: 301
    functionDepth: 0
    functionLinenumber: 301
    functionLinenumberEnd: 303
    functionName: MockupTLSConnection::doHandshake
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void doHandshake() override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - fastOpen
    - ' remote'
    - ' timeout'
    argTypes:
    - bool
    - ComboAddress
    - struct timeval
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 310
      start: 305
    functionDepth: 0
    functionLinenumber: 305
    functionLinenumberEnd: 310
    functionName: MockupTLSConnection::connect
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void connect(bool fastOpen, const ComboAddress& remote, const struct
      timeval& timeout) override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 3
    argNames:
    - buffer
    - bufferSize
    - ' readTimeout'
    argTypes:
    - void*
    - size_t
    - struct timeval
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 320
      start: 312
    functionDepth: 0
    functionLinenumber: 312
    functionLinenumberEnd: 320
    functionName: MockupTLSConnection::read
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: size_t read(void* buffer, size_t bufferSize, const struct timeval&
      readTimeout, const struct timeval& totalTimeout = {0, 0}, bool allowIncomplete
      = false) override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - buffer
    - bufferSize
    - ' writeTimeout'
    argTypes:
    - void*
    - size_t
    - struct timeval
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 328
      start: 322
    functionDepth: 0
    functionLinenumber: 322
    functionLinenumberEnd: 328
    functionName: MockupTLSConnection::write
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: size_t write(const void* buffer, size_t bufferSize, const struct timeval&
      writeTimeout) override
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:333,1
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:333,1
    - Dst: front
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:334,1
    - Dst: pop_front
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:335,1
    - Dst: auto::cb
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:338,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 342
      start: 331
    functionDepth: 0
    functionLinenumber: 331
    functionLinenumberEnd: 342
    functionName: MockupTLSConnection::getStep
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc
    functionUses: 9
    functionsReached:
    - auto::cb
    - pop_front
    - BOOST_REQUIRE
    - empty
    - front
    linkageType: ''
    returnType: ExpectedStep
    signature: ExpectedStep getStep() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 353
      start: 351
    functionDepth: 0
    functionLinenumber: 351
    functionLinenumberEnd: 353
    functionName: ~MockupTLSCtx()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~MockupTLSCtx()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::make_unique<MockupTLSConnection>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:359,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - socket
    - ' timeout'
    - now
    argTypes:
    - int
    - struct timeval
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 360
      start: 355
    functionDepth: 0
    functionLinenumber: 355
    functionLinenumberEnd: 360
    functionName: MockupTLSCtx::getConnection
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc
    functionUses: 0
    functionsReached:
    - std::make_unique<MockupTLSConnection>
    linkageType: ''
    returnType: std::unique_ptr<TLSConnection>
    signature: std::unique_ptr<TLSConnection> getConnection(int socket, const struct
      timeval& timeout, time_t now) override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::make_unique<MockupTLSConnection>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:367,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 4
    argNames:
    - ' host'
    - hostIsAddr
    - socket
    - ' timeout'
    argTypes:
    - std::string
    - bool
    - int
    - struct timeval
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 368
      start: 362
    functionDepth: 0
    functionLinenumber: 362
    functionLinenumberEnd: 368
    functionName: MockupTLSCtx::getClientConnection
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc
    functionUses: 0
    functionsReached:
    - std::make_unique<MockupTLSConnection>
    linkageType: ''
    returnType: std::unique_ptr<TLSConnection>
    signature: std::unique_ptr<TLSConnection> getClientConnection(const std::string&
      host, bool hostIsAddr, int socket, const struct timeval& timeout) override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - now
    argTypes:
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 373
      start: 370
    functionDepth: 0
    functionLinenumber: 370
    functionLinenumberEnd: 373
    functionName: MockupTLSCtx::rotateTicketsKey
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void rotateTicketsKey(time_t now) override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 378
      start: 375
    functionDepth: 0
    functionLinenumber: 375
    functionLinenumberEnd: 378
    functionName: MockupTLSCtx::getTicketsKeysCount
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: size_t getTicketsKeysCount() override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 383
      start: 380
    functionDepth: 0
    functionLinenumber: 380
    functionLinenumberEnd: 383
    functionName: MockupTLSCtx::getName
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string getName() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 391
      start: 389
    functionDepth: 0
    functionLinenumber: 389
    functionLinenumberEnd: 391
    functionName: MockupFDMultiplexer::MockupFDMultiplexer
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void MockupFDMultiplexer()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 395
      start: 393
    functionDepth: 0
    functionLinenumber: 393
    functionLinenumberEnd: 395
    functionName: ~MockupFDMultiplexer()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~MockupFDMultiplexer()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: gettimeofday
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:402,1
    - Dst: find
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:408,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:410,1
    - Dst: d_callback
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:411,1
    - Dst: find
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:417,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:419,1
    - Dst: d_callback
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:420,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 1
    argNames:
    - tv
    argTypes:
    - struct timeval*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 426
      start: 397
    functionDepth: 0
    functionLinenumber: 397
    functionLinenumberEnd: 426
    functionName: MockupFDMultiplexer::run
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc
    functionUses: 0
    functionsReached:
    - d_callback
    - end
    - gettimeofday
    - find
    linkageType: ''
    returnType: int
    signature: int run(struct timeval* tv, int timeout = 500) override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ' fds'
    - timeout
    argTypes:
    - std::vector<int>
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 432
      start: 428
    functionDepth: 0
    functionLinenumber: 428
    functionLinenumberEnd: 432
    functionName: MockupFDMultiplexer::getAvailableFDs
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void getAvailableFDs(std::vector<int>& fds, int timeout) override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - fd
    - kind
    argTypes:
    - int
    - FDMultiplexer::EventKind
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 438
      start: 434
    functionDepth: 0
    functionLinenumber: 434
    functionLinenumberEnd: 438
    functionName: MockupFDMultiplexer::addFD
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void addFD(int fd, FDMultiplexer::EventKind kind) override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - fd
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 443
      start: 440
    functionDepth: 0
    functionLinenumber: 440
    functionLinenumberEnd: 443
    functionName: MockupFDMultiplexer::removeFD
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void removeFD(int fd, FDMultiplexer::EventKind) override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 448
      start: 445
    functionDepth: 0
    functionLinenumber: 445
    functionLinenumberEnd: 448
    functionName: MockupFDMultiplexer::getName
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: string
    signature: string getName() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: insert
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:452,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - fd
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 453
      start: 450
    functionDepth: 1
    functionLinenumber: 450
    functionLinenumberEnd: 453
    functionName: MockupFDMultiplexer::setReady
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc
    functionUses: 0
    functionsReached:
    - insert
    linkageType: ''
    returnType: void
    signature: void setReady(int fd)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: erase
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:457,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - fd
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 458
      start: 455
    functionDepth: 0
    functionLinenumber: 455
    functionLinenumberEnd: 458
    functionName: MockupFDMultiplexer::setNotReady
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc
    functionUses: 0
    functionsReached:
    - erase
    linkageType: ''
    returnType: void
    signature: void setNotReady(int fd)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::make_unique<Socket>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:468,1
    - Dst: auto::setNonBlocking
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:469,1
    - Dst: SConnectWithTimeout
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:470,1
    - Dst: auto::getHandle
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:470,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 479
      start: 464
    functionDepth: 0
    functionLinenumber: 464
    functionLinenumberEnd: 479
    functionName: isIPv6Supported
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc
    functionUses: 0
    functionsReached:
    - std::make_unique<Socket>
    - auto::setNonBlocking
    - SConnectWithTimeout
    - auto::getHandle
    linkageType: ''
    returnType: bool
    signature: bool isIPv6Supported()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: isIPv6Supported
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:483,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:486,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:489,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - ' lastDigit'
    - port
    argTypes:
    - std::string
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 490
      start: 481
    functionDepth: 0
    functionLinenumber: 481
    functionLinenumberEnd: 490
    functionName: getBackendAddress
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc
    functionUses: 3
    functionsReached:
    - isIPv6Supported
    - ComboAddress
    linkageType: ''
    returnType: ComboAddress
    signature: ComboAddress getBackendAddress(const std::string& lastDigit, uint16_t
      port)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:496,1
    - Dst: PacketBuffer::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:496,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:497,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:498,1
    - Dst: PacketBuffer::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:498,1
    - Dst: insert
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:499,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:499,1
    - Dst: PacketBuffer::begin
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:499,1
    - Dst: PacketBuffer::end
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:499,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - ' buffer'
    - ' payload'
    - newID
    argTypes:
    - PacketBuffer
    - PacketBuffer
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 500
      start: 492
    functionDepth: 1
    functionLinenumber: 492
    functionLinenumberEnd: 500
    functionName: appendPayloadEditingID
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc
    functionUses: 0
    functionsReached:
    - PacketBuffer::begin
    - memcpy
    - PacketBuffer::end
    - PacketBuffer::at
    - end
    - insert
    - htons
    linkageType: ''
    returnType: void
    signature: void appendPayloadEditingID(PacketBuffer& buffer, const PacketBuffer&
      payload, uint16_t newID)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:506,1
    - Dst: PacketBuffer::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:506,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:507,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:508,1
    - Dst: PacketBuffer::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:508,1
    - Dst: insert
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:509,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:509,1
    - Dst: PacketBuffer::begin
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:509,1
    - Dst: PacketBuffer::end
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:509,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - ' buffer'
    - ' payload'
    - newID
    argTypes:
    - PacketBuffer
    - PacketBuffer
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 510
      start: 502
    functionDepth: 1
    functionLinenumber: 502
    functionLinenumberEnd: 510
    functionName: prependPayloadEditingID
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc
    functionUses: 0
    functionsReached:
    - PacketBuffer::begin
    - memcpy
    - PacketBuffer::end
    - PacketBuffer::at
    - insert
    - begin
    - htons
    linkageType: ''
    returnType: void
    signature: void prependPayloadEditingID(PacketBuffer& buffer, const PacketBuffer&
      payload, uint16_t newID)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: reset
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:516,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 517
      start: 514
    functionDepth: 0
    functionLinenumber: 514
    functionLinenumberEnd: 517
    functionName: TestFixture
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc
    functionUses: 0
    functionsReached:
    - reset
    linkageType: ''
    returnType: void
    signature: void TestFixture()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 518
      start: 518
    functionDepth: 0
    functionLinenumber: 518
    functionLinenumberEnd: 518
    functionName: TestFixture
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void TestFixture(const TestFixture&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 519
      start: 519
    functionDepth: 0
    functionLinenumber: 519
    functionLinenumberEnd: 519
    functionName: TestFixture
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void TestFixture(TestFixture&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 520
      start: 520
    functionDepth: 0
    functionLinenumber: 520
    functionLinenumberEnd: 520
    functionName: '& operator=(const TestFixture&)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: TestFixture
    signature: TestFixture & operator=(const TestFixture&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 521
      start: 521
    functionDepth: 0
    functionLinenumber: 521
    functionLinenumberEnd: 521
    functionName: '& operator=(TestFixture&&)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: TestFixture
    signature: TestFixture & operator=(TestFixture&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: reset
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:524,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 525
      start: 522
    functionDepth: 0
    functionLinenumber: 522
    functionLinenumberEnd: 525
    functionName: ~TestFixture()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc
    functionUses: 0
    functionsReached:
    - reset
    linkageType: ''
    returnType: void
    signature: void ~TestFixture()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: clear
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:529,1
    - Dst: clear
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:530,1
    - Dst: clear
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:531,1
    - Dst: clear
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:532,1
    - Dst: clear
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:533,1
    - Dst: dnsdist::configuration::updateRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:535,1
    - Dst: d_proxyProtocolACL::clear
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:536,1
    - Dst: IncomingTCPConnectionState::clearAllDownstreamConnections
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:538,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 543
      start: 527
    functionDepth: 1
    functionLinenumber: 527
    functionLinenumberEnd: 543
    functionName: reset
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc
    functionUses: 89
    functionsReached:
    - clear
    - dnsdist::configuration::updateRuntimeConfiguration
    - IncomingTCPConnectionState::clearAllDownstreamConnections
    - d_proxyProtocolACL::clear
    linkageType: ''
    returnType: void
    signature: void reset()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LocalStateHolder::reset
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:554,1
    - Dst: std::make_unique<MockupFDMultiplexer>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:555,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - ' name'
    - ' threadData'
    argTypes:
    - std::string
    - TCPClientThreadData
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 556
      start: 546
    functionDepth: 0
    functionLinenumber: 546
    functionLinenumberEnd: 556
    functionName: testInit
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc
    functionUses: 0
    functionsReached:
    - LocalStateHolder::reset
    - std::make_unique<MockupFDMultiplexer>
    linkageType: ''
    returnType: void
    signature: void testInit(const std::string& name, TCPClientThreadData& threadData)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - str
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 559
      start: 558
    functionDepth: 0
    functionLinenumber: 558
    functionLinenumberEnd: 559
    functionName: TEST_INIT
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TEST_INIT(str)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:562,1
    - Dst: getBackendAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:563,1
    - Dst: std::make_shared<MockupTLSCtx>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:565,1
    - Dst: std::make_shared<TLSFrontend>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:566,1
    - Dst: TCPClientThreadData::TCPClientThreadData
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:568,1
    - Dst: std::make_unique<MockupFDMultiplexer>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:569,1
    - Dst: gettimeofday
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:572,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:575,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:576,1
    - Dst: static_cast<uint16_t>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:578,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:578,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:579,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:579,1
    - Dst: PacketBuffer::insert
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:580,1
    - Dst: PacketBuffer::begin
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:580,1
    - Dst: TEST_INIT
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:584,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:590,1
    - Dst: std::make_shared<IncomingTCPConnectionState>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:599,1
    - Dst: ConnectionInfo
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:599,1
    - Dst: getBackendAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:599,1
    - Dst: auto::handleIO
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:600,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:601,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:601,1
    - Dst: TEST_INIT
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:606,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:612,1
    - Dst: std::make_shared<IncomingTCPConnectionState>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:624,1
    - Dst: ConnectionInfo
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:624,1
    - Dst: getBackendAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:624,1
    - Dst: auto::handleIO
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:625,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:626,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:626,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:626,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:627,1
    - Dst: TEST_INIT
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:631,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:644,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:646,1
    - Dst: dynamic_cast<MockupFDMultiplexer*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:659,1
    - Dst: TCPClientThreadData::mplexer::get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:659,1
    - Dst: std::make_shared<IncomingTCPConnectionState>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:661,1
    - Dst: ConnectionInfo
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:661,1
    - Dst: getBackendAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:661,1
    - Dst: auto::handleIO
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:662,1
    - Dst: TCPClientThreadData::mplexer::getWatchedFDCount
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:663,1
    - Dst: TCPClientThreadData::mplexer::getWatchedFDCount
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:663,1
    - Dst: TCPClientThreadData::mplexer::run
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:664,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:666,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:666,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:666,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:667,1
    - Dst: TEST_INIT
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:671,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:678,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:684,1
    - Dst: std::make_shared<IncomingTCPConnectionState>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:687,1
    - Dst: ConnectionInfo
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:687,1
    - Dst: getBackendAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:687,1
    - Dst: auto::handleIO
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:688,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:689,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:689,1
    - Dst: TEST_INIT
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:693,1
    - Dst: insert
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:701,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:701,1
    - Dst: PacketBuffer::begin
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:701,1
    - Dst: PacketBuffer::end
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:701,1
    - Dst: push_back
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:702,1
    - Dst: push_back
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:703,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:703,1
    - Dst: push_back
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:704,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:704,1
    - Dst: push_back
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:706,1
    - Dst: push_back
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:707,1
    - Dst: std::make_shared<IncomingTCPConnectionState>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:716,1
    - Dst: ConnectionInfo
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:716,1
    - Dst: getBackendAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:716,1
    - Dst: auto::handleIO
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:717,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:718,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:718,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:718,1
    - Dst: TEST_INIT
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:722,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:729,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:736,1
    - Dst: dynamic_cast<MockupFDMultiplexer*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:741,1
    - Dst: TCPClientThreadData::mplexer::get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:741,1
    - Dst: std::make_shared<IncomingTCPConnectionState>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:743,1
    - Dst: ConnectionInfo
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:743,1
    - Dst: getBackendAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:743,1
    - Dst: auto::handleIO
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:744,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:745,1
    - Dst: TCPClientThreadData::mplexer::run
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:745,1
    - Dst: TCPClientThreadData::mplexer::getTimeouts
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:748,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:750,1
    - Dst: auto::d_handler::getDescriptor
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:750,1
    - Dst: second::type
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:751,1
    - Dst: typeid
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:751,1
    - Dst: boost::any_cast<std::shared_ptr<IncomingTCPConnectionState>>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:752,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:753,1
    - Dst: auto::d_handler::getDescriptor
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:753,1
    - Dst: auto::handleTimeout
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:754,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:757,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:757,1
    - Dst: TEST_INIT
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:761,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:768,1
    - Dst: dynamic_cast<MockupFDMultiplexer*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:779,1
    - Dst: TCPClientThreadData::mplexer::get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:779,1
    - Dst: std::make_shared<IncomingTCPConnectionState>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:781,1
    - Dst: ConnectionInfo
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:781,1
    - Dst: getBackendAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:781,1
    - Dst: auto::handleIO
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:782,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:783,1
    - Dst: TCPClientThreadData::mplexer::run
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:783,1
    - Dst: TCPClientThreadData::mplexer::getTimeouts
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:786,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:788,1
    - Dst: auto::d_handler::getDescriptor
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:788,1
    - Dst: second::type
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:789,1
    - Dst: typeid
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:789,1
    - Dst: boost::any_cast<std::shared_ptr<IncomingTCPConnectionState>>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:790,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:791,1
    - Dst: auto::d_handler::getDescriptor
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:791,1
    - Dst: auto::handleTimeout
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:792,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:795,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:795,1
    - Dst: TEST_INIT
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:799,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:806,1
    - Dst: std::make_shared<IncomingTCPConnectionState>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:816,1
    - Dst: ConnectionInfo
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:816,1
    - Dst: getBackendAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:816,1
    - Dst: auto::handleIO
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:817,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:818,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:818,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 127
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 820
      start: 560
    functionDepth: 1
    functionLinenumber: 560
    functionLinenumberEnd: 820
    functionName: BOOST_FIXTURE_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc
    functionUses: 0
    functionsReached:
    - PacketBuffer::end
    - GenericDNSPacketWriter::getHeader
    - PacketBuffer::size
    - auto::handleIO
    - gettimeofday
    - insert
    - PacketBuffer::begin
    - TCPClientThreadData::mplexer::run
    - second::type
    - boost::any_cast<std::shared_ptr<IncomingTCPConnectionState>>
    - ConnectionInfo
    - size
    - std::make_shared<TLSFrontend>
    - static_cast<uint16_t>
    - TCPClientThreadData::mplexer::getTimeouts
    - dnsdist::configuration::getCurrentRuntimeConfiguration
    - std::runtime_error
    - push_back
    - DNSName
    - static_cast<uint8_t>
    - TCPClientThreadData::mplexer::get
    - std::make_unique<MockupFDMultiplexer>
    - auto::d_handler::getDescriptor
    - auto::handleTimeout
    - TCPClientThreadData::mplexer::getWatchedFDCount
    - typeid
    - PacketBuffer::insert
    - dynamic_cast<MockupFDMultiplexer*>
    - end
    - BOOST_CHECK_EQUAL
    - TCPClientThreadData::TCPClientThreadData
    - std::make_shared<MockupTLSCtx>
    - std::make_shared<IncomingTCPConnectionState>
    - TEST_INIT
    - getBackendAddress
    - BOOST_CHECK
    linkageType: ''
    returnType: void
    signature: void BOOST_FIXTURE_TEST_CASE(test_IncomingConnection_SelfAnswered,
      TestFixture)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:824,1
    - Dst: getBackendAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:825,1
    - Dst: std::make_shared<MockupTLSCtx>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:827,1
    - Dst: std::make_shared<TLSFrontend>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:828,1
    - Dst: TCPClientThreadData::TCPClientThreadData
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:830,1
    - Dst: std::make_unique<MockupFDMultiplexer>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:831,1
    - Dst: gettimeofday
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:834,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:837,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:838,1
    - Dst: static_cast<uint16_t>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:840,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:840,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:841,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:841,1
    - Dst: PacketBuffer::insert
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:842,1
    - Dst: PacketBuffer::begin
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:842,1
    - Dst: TEST_INIT
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:845,1
    - Dst: dnsdist::configuration::updateRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:847,1
    - Dst: d_proxyProtocolACL::addMask
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:848,1
    - Dst: d_proxyProtocolACL::addMask
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:849,1
    - Dst: makeProxyHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:852,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:852,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:852,1
    - Dst: BOOST_REQUIRE_GT
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:853,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:853,1
    - Dst: insert
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:856,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:856,1
    - Dst: auto::begin
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:856,1
    - Dst: auto::end
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:856,1
    - Dst: insert
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:858,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:858,1
    - Dst: PacketBuffer::begin
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:858,1
    - Dst: PacketBuffer::end
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:858,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:863,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:865,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:868,1
    - Dst: dynamic_cast<MockupFDMultiplexer*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:880,1
    - Dst: TCPClientThreadData::mplexer::get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:880,1
    - Dst: std::make_shared<IncomingTCPConnectionState>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:882,1
    - Dst: ConnectionInfo
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:882,1
    - Dst: getBackendAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:882,1
    - Dst: auto::handleIO
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:883,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:884,1
    - Dst: TCPClientThreadData::mplexer::run
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:884,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:885,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:885,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:885,1
    - Dst: TEST_INIT
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:889,1
    - Dst: dnsdist::configuration::updateRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:891,1
    - Dst: d_proxyProtocolACL::addMask
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:892,1
    - Dst: d_proxyProtocolACL::addMask
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:893,1
    - Dst: std::vector<uint8_t>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:896,1
    - Dst: std::fill
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:897,1
    - Dst: auto::begin
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:897,1
    - Dst: auto::end
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:897,1
    - Dst: insert
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:901,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:901,1
    - Dst: auto::begin
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:901,1
    - Dst: auto::end
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:901,1
    - Dst: std::make_shared<IncomingTCPConnectionState>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:914,1
    - Dst: ConnectionInfo
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:914,1
    - Dst: getBackendAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:914,1
    - Dst: auto::handleIO
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:915,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:917,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:917,1
    - Dst: TEST_INIT
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:921,1
    - Dst: dnsdist::configuration::updateRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:923,1
    - Dst: d_proxyProtocolACL::addMask
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:924,1
    - Dst: d_proxyProtocolACL::addMask
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:925,1
    - Dst: makeProxyHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:928,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:928,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:928,1
    - Dst: BOOST_REQUIRE_GT
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:929,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:929,1
    - Dst: insert
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:932,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:932,1
    - Dst: auto::begin
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:932,1
    - Dst: auto::end
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:932,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:937,1
    - Dst: dynamic_cast<MockupFDMultiplexer*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:947,1
    - Dst: TCPClientThreadData::mplexer::get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:947,1
    - Dst: std::make_shared<IncomingTCPConnectionState>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:949,1
    - Dst: ConnectionInfo
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:949,1
    - Dst: getBackendAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:949,1
    - Dst: auto::handleIO
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:950,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:951,1
    - Dst: TCPClientThreadData::mplexer::run
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:951,1
    - Dst: TCPClientThreadData::mplexer::getTimeouts
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:954,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:956,1
    - Dst: auto::d_handler::getDescriptor
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:956,1
    - Dst: second::type
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:957,1
    - Dst: typeid
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:957,1
    - Dst: boost::any_cast<std::shared_ptr<IncomingTCPConnectionState>>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:958,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:959,1
    - Dst: auto::d_handler::getDescriptor
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:959,1
    - Dst: auto::handleTimeout
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:960,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:963,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:963,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 69
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 965
      start: 822
    functionDepth: 1
    functionLinenumber: 822
    functionLinenumberEnd: 965
    functionName: BOOST_FIXTURE_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc
    functionUses: 0
    functionsReached:
    - PacketBuffer::end
    - GenericDNSPacketWriter::getHeader
    - dnsdist::configuration::updateRuntimeConfiguration
    - PacketBuffer::size
    - std::fill
    - auto::begin
    - auto::handleIO
    - gettimeofday
    - insert
    - auto::size
    - PacketBuffer::begin
    - TCPClientThreadData::mplexer::run
    - second::type
    - boost::any_cast<std::shared_ptr<IncomingTCPConnectionState>>
    - ConnectionInfo
    - size
    - std::make_shared<TLSFrontend>
    - static_cast<uint16_t>
    - TCPClientThreadData::mplexer::getTimeouts
    - begin
    - makeProxyHeader
    - std::vector<uint8_t>
    - dnsdist::configuration::getCurrentRuntimeConfiguration
    - DNSName
    - static_cast<uint8_t>
    - d_proxyProtocolACL::addMask
    - TCPClientThreadData::mplexer::get
    - BOOST_REQUIRE_GT
    - std::make_unique<MockupFDMultiplexer>
    - auto::d_handler::getDescriptor
    - auto::handleTimeout
    - ComboAddress
    - typeid
    - PacketBuffer::insert
    - end
    - dynamic_cast<MockupFDMultiplexer*>
    - BOOST_CHECK_EQUAL
    - TCPClientThreadData::TCPClientThreadData
    - std::make_shared<MockupTLSCtx>
    - std::make_shared<IncomingTCPConnectionState>
    - TEST_INIT
    - auto::end
    - getBackendAddress
    linkageType: ''
    returnType: void
    signature: void BOOST_FIXTURE_TEST_CASE(test_IncomingConnectionWithProxyProtocol_SelfAnswered,
      TestFixture)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: getBackendAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:969,1
    - Dst: std::make_shared<MockupTLSCtx>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:971,1
    - Dst: std::make_shared<TLSFrontend>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:972,1
    - Dst: TCPClientThreadData::TCPClientThreadData
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:974,1
    - Dst: std::make_unique<MockupFDMultiplexer>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:975,1
    - Dst: gettimeofday
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:978,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:981,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:982,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:983,1
    - Dst: auto::resize
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:986,1
    - Dst: static_cast<uint16_t>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:987,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:987,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:988,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:988,1
    - Dst: auto::insert
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:989,1
    - Dst: auto::begin
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:989,1
    - Dst: static_cast<uint16_t>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:991,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:991,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:992,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:992,1
    - Dst: PacketBuffer::insert
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:993,1
    - Dst: PacketBuffer::begin
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:993,1
    - Dst: std::make_shared<DownstreamState>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:995,1
    - Dst: getBackendAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:995,1
    - Dst: TEST_INIT
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1000,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1008,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1011,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1013,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1014,1
    - Dst: std::make_shared<IncomingTCPConnectionState>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1033,1
    - Dst: ConnectionInfo
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1033,1
    - Dst: getBackendAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1033,1
    - Dst: auto::handleIO
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1034,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1035,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1035,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1035,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1036,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1037,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1037,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1037,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1038,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1039,1
    - Dst: auto::outstanding::load
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1039,1
    - Dst: IncomingTCPConnectionState::clearAllDownstreamConnections
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1041,1
    - Dst: TEST_INIT
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1046,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1054,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1057,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1059,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1074,1
    - Dst: std::make_shared<IncomingTCPConnectionState>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1077,1
    - Dst: ConnectionInfo
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1077,1
    - Dst: getBackendAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1077,1
    - Dst: auto::handleIO
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1078,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1079,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1079,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1080,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1080,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1080,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1081,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1082,1
    - Dst: auto::outstanding::load
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1082,1
    - Dst: IncomingTCPConnectionState::clearAllDownstreamConnections
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1084,1
    - Dst: TEST_INIT
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1089,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1097,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1100,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1102,1
    - Dst: std::make_shared<IncomingTCPConnectionState>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1120,1
    - Dst: ConnectionInfo
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1120,1
    - Dst: getBackendAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1120,1
    - Dst: auto::handleIO
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1121,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1122,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1122,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1123,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1123,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1123,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1124,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1125,1
    - Dst: auto::outstanding::load
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1125,1
    - Dst: IncomingTCPConnectionState::clearAllDownstreamConnections
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1127,1
    - Dst: TEST_INIT
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1132,1
    - Dst: auto::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1137,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1144,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1147,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1149,1
    - Dst: std::make_shared<IncomingTCPConnectionState>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1167,1
    - Dst: ConnectionInfo
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1167,1
    - Dst: getBackendAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1167,1
    - Dst: auto::handleIO
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1168,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1169,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1169,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1170,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1170,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1170,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1171,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1172,1
    - Dst: auto::outstanding::load
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1172,1
    - Dst: IncomingTCPConnectionState::clearAllDownstreamConnections
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1174,1
    - Dst: TEST_INIT
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1178,1
    - Dst: std::make_shared<IncomingTCPConnectionState>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1199,1
    - Dst: ConnectionInfo
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1199,1
    - Dst: getBackendAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1199,1
    - Dst: auto::handleIO
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1200,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1201,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1201,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1202,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1202,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1203,1
    - Dst: auto::outstanding::load
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1203,1
    - Dst: IncomingTCPConnectionState::clearAllDownstreamConnections
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1206,1
    - Dst: TEST_INIT
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1210,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1218,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1221,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1223,1
    - Dst: std::make_shared<IncomingTCPConnectionState>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1241,1
    - Dst: ConnectionInfo
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1241,1
    - Dst: getBackendAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1241,1
    - Dst: auto::handleIO
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1242,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1243,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1243,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1244,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1244,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1244,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1245,1
    - Dst: auto::outstanding::load
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1245,1
    - Dst: IncomingTCPConnectionState::clearAllDownstreamConnections
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1248,1
    - Dst: TEST_INIT
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1253,1
    - Dst: appendPayloadEditingID
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1256,1
    - Dst: appendPayloadEditingID
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1260,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1265,1
    - Dst: dynamic_cast<MockupFDMultiplexer*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1269,1
    - Dst: TCPClientThreadData::mplexer::get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1269,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1273,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1277,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1280,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1284,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1286,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1289,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1291,1
    - Dst: dynamic_cast<MockupFDMultiplexer*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1313,1
    - Dst: TCPClientThreadData::mplexer::get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1313,1
    - Dst: std::make_shared<IncomingTCPConnectionState>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1314,1
    - Dst: ConnectionInfo
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1314,1
    - Dst: getBackendAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1314,1
    - Dst: auto::handleIO
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1315,1
    - Dst: TCPClientThreadData::mplexer::getWatchedFDCount
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1316,1
    - Dst: TCPClientThreadData::mplexer::getWatchedFDCount
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1316,1
    - Dst: TCPClientThreadData::mplexer::run
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1317,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1319,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1319,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1319,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1320,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1320,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1320,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1321,1
    - Dst: auto::outstanding::load
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1321,1
    - Dst: IncomingTCPConnectionState::clearAllDownstreamConnections
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1324,1
    - Dst: TEST_INIT
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1329,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1335,1
    - Dst: NetworkError
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1339,1
    - Dst: NetworkError
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1344,1
    - Dst: NetworkError
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1349,1
    - Dst: NetworkError
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1354,1
    - Dst: NetworkError
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1359,1
    - Dst: std::make_shared<IncomingTCPConnectionState>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1378,1
    - Dst: ConnectionInfo
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1378,1
    - Dst: getBackendAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1378,1
    - Dst: auto::handleIO
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1379,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1380,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1380,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1381,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1381,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1382,1
    - Dst: auto::outstanding::load
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1382,1
    - Dst: IncomingTCPConnectionState::clearAllDownstreamConnections
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1385,1
    - Dst: TEST_INIT
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1390,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1396,1
    - Dst: std::make_shared<IncomingTCPConnectionState>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1417,1
    - Dst: ConnectionInfo
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1417,1
    - Dst: getBackendAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1417,1
    - Dst: auto::handleIO
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1418,1
    - Dst: TCPClientThreadData::mplexer::getTimeouts
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1421,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1422,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1422,1
    - Dst: second::type
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1424,1
    - Dst: typeid
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1424,1
    - Dst: boost::any_cast<std::shared_ptr<TCPConnectionToBackend>>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1425,1
    - Dst: auto::handleTimeout
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1426,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1429,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1429,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1430,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1430,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1431,1
    - Dst: auto::outstanding::load
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1431,1
    - Dst: IncomingTCPConnectionState::clearAllDownstreamConnections
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1434,1
    - Dst: TEST_INIT
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1439,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1445,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1448,1
    - Dst: std::make_shared<IncomingTCPConnectionState>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1467,1
    - Dst: ConnectionInfo
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1467,1
    - Dst: getBackendAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1467,1
    - Dst: auto::handleIO
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1468,1
    - Dst: TCPClientThreadData::mplexer::getTimeouts
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1471,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1472,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1472,1
    - Dst: second::type
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1474,1
    - Dst: typeid
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1474,1
    - Dst: boost::any_cast<std::shared_ptr<TCPConnectionToBackend>>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1475,1
    - Dst: auto::handleTimeout
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1476,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1479,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1479,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1480,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1480,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1480,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1481,1
    - Dst: auto::outstanding::load
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1481,1
    - Dst: IncomingTCPConnectionState::clearAllDownstreamConnections
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1484,1
    - Dst: TEST_INIT
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1489,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1495,1
    - Dst: std::make_shared<IncomingTCPConnectionState>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1528,1
    - Dst: ConnectionInfo
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1528,1
    - Dst: getBackendAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1528,1
    - Dst: auto::handleIO
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1529,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1530,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1530,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1531,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1531,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1532,1
    - Dst: auto::outstanding::load
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1532,1
    - Dst: IncomingTCPConnectionState::clearAllDownstreamConnections
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1535,1
    - Dst: TEST_INIT
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1540,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1547,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1562,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1565,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1567,1
    - Dst: std::make_shared<IncomingTCPConnectionState>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1588,1
    - Dst: ConnectionInfo
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1588,1
    - Dst: getBackendAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1588,1
    - Dst: auto::handleIO
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1589,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1590,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1590,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1590,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1591,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1592,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1592,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1592,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1593,1
    - Dst: auto::outstanding::load
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1593,1
    - Dst: IncomingTCPConnectionState::clearAllDownstreamConnections
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1596,1
    - Dst: TEST_INIT
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1600,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1606,1
    - Dst: NetworkError
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1614,1
    - Dst: NetworkError
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1620,1
    - Dst: NetworkError
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1626,1
    - Dst: NetworkError
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1632,1
    - Dst: std::make_shared<IncomingTCPConnectionState>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1651,1
    - Dst: ConnectionInfo
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1651,1
    - Dst: getBackendAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1651,1
    - Dst: auto::handleIO
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1652,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1653,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1653,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1654,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1654,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1655,1
    - Dst: auto::outstanding::load
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1655,1
    - Dst: IncomingTCPConnectionState::clearAllDownstreamConnections
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1658,1
    - Dst: TEST_INIT
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1663,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1669,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1672,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1676,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1680,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1684,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1688,1
    - Dst: std::make_shared<IncomingTCPConnectionState>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1707,1
    - Dst: ConnectionInfo
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1707,1
    - Dst: getBackendAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1707,1
    - Dst: auto::handleIO
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1708,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1709,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1709,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1710,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1710,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1710,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1711,1
    - Dst: auto::outstanding::load
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1711,1
    - Dst: IncomingTCPConnectionState::clearAllDownstreamConnections
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1714,1
    - Dst: TEST_INIT
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1719,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1726,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1729,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1733,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1737,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1741,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1746,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1748,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1750,1
    - Dst: std::make_shared<IncomingTCPConnectionState>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1771,1
    - Dst: ConnectionInfo
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1771,1
    - Dst: getBackendAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1771,1
    - Dst: auto::handleIO
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1772,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1773,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1773,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1773,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1774,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1775,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1775,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1775,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1776,1
    - Dst: auto::outstanding::load
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1776,1
    - Dst: IncomingTCPConnectionState::clearAllDownstreamConnections
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1779,1
    - Dst: TEST_INIT
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1783,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1790,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1793,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1795,1
    - Dst: std::make_shared<IncomingTCPConnectionState>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1816,1
    - Dst: ConnectionInfo
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1816,1
    - Dst: getBackendAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1816,1
    - Dst: auto::handleIO
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1817,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1818,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1818,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1819,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1819,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1819,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1820,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1821,1
    - Dst: auto::outstanding::load
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1821,1
    - Dst: IncomingTCPConnectionState::clearAllDownstreamConnections
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1824,1
    - Dst: TEST_INIT
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1829,1
    - Dst: dnsdist::configuration::updateRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1831,1
    - Dst: appendPayloadEditingID
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1840,1
    - Dst: appendPayloadEditingID
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1841,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1846,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1849,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1851,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1852,1
    - Dst: push_back
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1856,1
    - Dst: push_back
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1857,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1857,1
    - Dst: push_back
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1859,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1859,1
    - Dst: push_back
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1860,1
    - Dst: push_back
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1861,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1861,1
    - Dst: push_back
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1863,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1863,1
    - Dst: push_back
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1866,1
    - Dst: push_back
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1868,1
    - Dst: std::make_shared<IncomingTCPConnectionState>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1882,1
    - Dst: ConnectionInfo
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1882,1
    - Dst: getBackendAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1882,1
    - Dst: auto::handleIO
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1883,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1884,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1884,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1884,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1885,1
    - Dst: auto::outstanding::load
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1885,1
    - Dst: IncomingTCPConnectionState::clearAllDownstreamConnections
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1888,1
    - Dst: dnsdist::configuration::updateRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1890,1
    - Dst: TEST_INIT
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1897,1
    - Dst: appendPayloadEditingID
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1904,1
    - Dst: appendPayloadEditingID
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1905,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1910,1
    - Dst: std::make_shared<IncomingTCPConnectionState>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1928,1
    - Dst: ConnectionInfo
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1928,1
    - Dst: getBackendAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1928,1
    - Dst: auto::handleIO
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1929,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1930,1
    - Dst: auto::outstanding::load
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1930,1
    - Dst: IncomingTCPConnectionState::clearAllDownstreamConnections
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1933,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 458
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1935
      start: 967
    functionDepth: 2
    functionLinenumber: 967
    functionLinenumberEnd: 1935
    functionName: BOOST_FIXTURE_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc
    functionUses: 0
    functionsReached:
    - GenericDNSPacketWriter::getHeader
    - dnsdist::configuration::updateRuntimeConfiguration
    - boost::any_cast<std::shared_ptr<TCPConnectionToBackend>>
    - PacketBuffer::size
    - auto::begin
    - auto::handleIO
    - gettimeofday
    - auto::size
    - auto::outstanding::load
    - PacketBuffer::begin
    - TCPClientThreadData::mplexer::run
    - second::type
    - ConnectionInfo
    - size
    - std::make_shared<TLSFrontend>
    - static_cast<uint16_t>
    - TCPClientThreadData::mplexer::getTimeouts
    - NetworkError
    - std::make_shared<DownstreamState>
    - std::runtime_error
    - push_back
    - appendPayloadEditingID
    - DNSName
    - static_cast<uint8_t>
    - TCPClientThreadData::mplexer::get
    - std::make_unique<MockupFDMultiplexer>
    - auto::insert
    - IncomingTCPConnectionState::clearAllDownstreamConnections
    - auto::handleTimeout
    - TCPClientThreadData::mplexer::getWatchedFDCount
    - typeid
    - PacketBuffer::insert
    - dynamic_cast<MockupFDMultiplexer*>
    - BOOST_CHECK_EQUAL
    - TCPClientThreadData::TCPClientThreadData
    - std::make_shared<MockupTLSCtx>
    - std::make_shared<IncomingTCPConnectionState>
    - auto::resize
    - TEST_INIT
    - auto::at
    - getBackendAddress
    - BOOST_CHECK
    linkageType: ''
    returnType: void
    signature: void BOOST_FIXTURE_TEST_CASE(test_IncomingConnection_BackendNoOOOR,
      TestFixture)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1940,1
    - Dst: getBackendAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1941,1
    - Dst: std::make_shared<MockupTLSCtx>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1946,1
    - Dst: std::make_shared<TLSFrontend>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1947,1
    - Dst: getBackendAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1950,1
    - Dst: std::make_shared<DownstreamState>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1952,1
    - Dst: getBackendAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1952,1
    - Dst: TCPClientThreadData::TCPClientThreadData
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1959,1
    - Dst: std::make_unique<MockupFDMultiplexer>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1960,1
    - Dst: gettimeofday
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1963,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1971,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1971,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1972,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1973,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1973,1
    - Dst: static_cast<uint16_t>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1974,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1974,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1975,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1975,1
    - Dst: insert
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1976,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1976,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1977,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1984,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1986,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1987,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1988,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1989,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1989,1
    - Dst: GenericDNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1990,1
    - Dst: GenericDNSPacketWriter::xfr32BitInt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1991,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1992,1
    - Dst: static_cast<uint16_t>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1994,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1994,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1995,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1995,1
    - Dst: insert
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1996,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1996,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:1997,1
    - Dst: TEST_INIT
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2002,1
    - Dst: insert
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2008,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2008,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2008,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2008,1
    - Dst: appendPayloadEditingID
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2009,1
    - Dst: prependPayloadEditingID
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2015,1
    - Dst: PacketBuffer::insert
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2016,1
    - Dst: PacketBuffer::begin
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2016,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2016,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2016,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2023,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2027,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2032,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2034,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2039,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2041,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2046,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2048,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2053,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2055,1
    - Dst: dynamic_cast<MockupFDMultiplexer*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2059,1
    - Dst: TCPClientThreadData::mplexer::get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2059,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2066,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2067,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2069,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2072,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2073,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2075,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2078,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2079,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2081,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2084,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2085,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2087,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2090,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2091,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2093,1
    - Dst: dynamic_cast<MockupFDMultiplexer*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2095,1
    - Dst: TCPClientThreadData::mplexer::get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2095,1
    - Dst: std::make_shared<IncomingTCPConnectionState>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2118,1
    - Dst: ConnectionInfo
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2118,1
    - Dst: getBackendAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2118,1
    - Dst: auto::handleIO
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2119,1
    - Dst: TCPClientThreadData::mplexer::getWatchedFDCount
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2120,1
    - Dst: TCPClientThreadData::mplexer::getWatchedFDCount
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2120,1
    - Dst: TCPClientThreadData::mplexer::run
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2121,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2124,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2124,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2125,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2126,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2126,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2127,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2128,1
    - Dst: auto::outstanding::load
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2128,1
    - Dst: IncomingTCPConnectionState::clearAllDownstreamConnections
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2131,1
    - Dst: TEST_INIT
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2135,1
    - Dst: dnsdist::configuration::updateRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2138,1
    - Dst: insert
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2146,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2146,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2146,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2146,1
    - Dst: appendPayloadEditingID
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2150,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2150,1
    - Dst: appendPayloadEditingID
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2151,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2151,1
    - Dst: appendPayloadEditingID
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2152,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2152,1
    - Dst: appendPayloadEditingID
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2153,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2153,1
    - Dst: appendPayloadEditingID
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2155,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2155,1
    - Dst: appendPayloadEditingID
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2156,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2156,1
    - Dst: PacketBuffer::insert
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2159,1
    - Dst: PacketBuffer::end
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2159,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2159,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2159,1
    - Dst: PacketBuffer::insert
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2161,1
    - Dst: PacketBuffer::end
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2161,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2161,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2161,1
    - Dst: PacketBuffer::insert
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2162,1
    - Dst: PacketBuffer::end
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2162,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2162,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2162,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2169,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2173,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2178,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2180,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2185,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2187,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2192,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2194,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2197,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2199,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2201,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2202,1
    - Dst: dynamic_cast<MockupFDMultiplexer*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2204,1
    - Dst: TCPClientThreadData::mplexer::get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2204,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2207,1
    - Dst: dynamic_cast<MockupFDMultiplexer*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2209,1
    - Dst: TCPClientThreadData::mplexer::get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2209,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2212,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2213,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2215,1
    - Dst: dynamic_cast<MockupFDMultiplexer*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2220,1
    - Dst: TCPClientThreadData::mplexer::get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2220,1
    - Dst: getMutableData
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2239,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2239,1
    - Dst: getMutableData
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2241,1
    - Dst: getMutableData
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2241,1
    - Dst: getMutableData
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2241,1
    - Dst: std::make_shared<IncomingTCPConnectionState>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2255,1
    - Dst: ConnectionInfo
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2255,1
    - Dst: getBackendAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2255,1
    - Dst: auto::handleIO
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2256,1
    - Dst: TCPClientThreadData::mplexer::getWatchedFDCount
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2258,1
    - Dst: TCPClientThreadData::mplexer::getWatchedFDCount
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2258,1
    - Dst: TCPClientThreadData::mplexer::run
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2259,1
    - Dst: TCPClientThreadData::mplexer::getTimeouts
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2264,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2265,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2265,1
    - Dst: second::type
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2267,1
    - Dst: typeid
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2267,1
    - Dst: boost::any_cast<std::shared_ptr<TCPConnectionToBackend>>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2268,1
    - Dst: auto::handleTimeout
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2269,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2273,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2273,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2273,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2274,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2275,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2275,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2275,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2276,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2277,1
    - Dst: auto::outstanding::load
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2277,1
    - Dst: IncomingTCPConnectionState::clearAllDownstreamConnections
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2280,1
    - Dst: dnsdist::configuration::updateRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2283,1
    - Dst: TEST_INIT
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2289,1
    - Dst: insert
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2295,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2295,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2295,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2295,1
    - Dst: PacketBuffer::insert
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2298,1
    - Dst: PacketBuffer::end
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2298,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2298,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2298,1
    - Dst: appendPayloadEditingID
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2302,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2302,1
    - Dst: appendPayloadEditingID
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2303,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2303,1
    - Dst: appendPayloadEditingID
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2304,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2304,1
    - Dst: appendPayloadEditingID
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2305,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2305,1
    - Dst: appendPayloadEditingID
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2309,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2309,1
    - Dst: appendPayloadEditingID
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2310,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2310,1
    - Dst: appendPayloadEditingID
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2311,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2311,1
    - Dst: appendPayloadEditingID
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2312,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2312,1
    - Dst: appendPayloadEditingID
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2313,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2313,1
    - Dst: appendPayloadEditingID
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2314,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2314,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2322,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2326,1
    - Dst: dynamic_cast<MockupFDMultiplexer*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2331,1
    - Dst: TCPClientThreadData::mplexer::get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2331,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2335,1
    - Dst: dynamic_cast<MockupFDMultiplexer*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2339,1
    - Dst: TCPClientThreadData::mplexer::get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2339,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2342,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2344,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2346,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2349,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2351,1
    - Dst: dynamic_cast<MockupFDMultiplexer*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2353,1
    - Dst: TCPClientThreadData::mplexer::get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2353,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2357,1
    - Dst: dynamic_cast<MockupFDMultiplexer*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2366,1
    - Dst: TCPClientThreadData::mplexer::get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2366,1
    - Dst: dynamic_cast<MockupFDMultiplexer*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2369,1
    - Dst: TCPClientThreadData::mplexer::get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2369,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2373,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2376,1
    - Dst: dynamic_cast<MockupFDMultiplexer*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2379,1
    - Dst: TCPClientThreadData::mplexer::get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2379,1
    - Dst: dynamic_cast<MockupFDMultiplexer*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2384,1
    - Dst: TCPClientThreadData::mplexer::get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2384,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2387,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2389,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2391,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2394,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2396,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2399,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2401,1
    - Dst: dynamic_cast<MockupFDMultiplexer*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2403,1
    - Dst: TCPClientThreadData::mplexer::get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2403,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2407,1
    - Dst: dynamic_cast<MockupFDMultiplexer*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2410,1
    - Dst: TCPClientThreadData::mplexer::get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2410,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2415,1
    - Dst: dynamic_cast<MockupFDMultiplexer*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2420,1
    - Dst: TCPClientThreadData::mplexer::get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2420,1
    - Dst: std::make_shared<IncomingTCPConnectionState>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2443,1
    - Dst: ConnectionInfo
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2443,1
    - Dst: getBackendAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2443,1
    - Dst: auto::handleIO
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2444,1
    - Dst: TCPClientThreadData::mplexer::getWatchedFDCount
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2446,1
    - Dst: TCPClientThreadData::mplexer::getWatchedFDCount
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2446,1
    - Dst: TCPClientThreadData::mplexer::run
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2447,1
    - Dst: TCPClientThreadData::mplexer::getTimeouts
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2452,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2453,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2453,1
    - Dst: second::type
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2455,1
    - Dst: typeid
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2455,1
    - Dst: boost::any_cast<std::shared_ptr<IncomingTCPConnectionState>>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2456,1
    - Dst: auto::handleTimeout
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2457,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2461,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2461,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2461,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2462,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2463,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2463,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2463,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2464,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2465,1
    - Dst: auto::outstanding::load
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2465,1
    - Dst: IncomingTCPConnectionState::clearAllDownstreamConnections
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2468,1
    - Dst: TEST_INIT
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2472,1
    - Dst: insert
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2477,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2477,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2477,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2477,1
    - Dst: insert
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2478,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2478,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2478,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2478,1
    - Dst: PacketBuffer::insert
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2481,1
    - Dst: PacketBuffer::end
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2481,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2481,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2481,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2488,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2492,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2497,1
    - Dst: std::make_shared<IncomingTCPConnectionState>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2524,1
    - Dst: ConnectionInfo
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2524,1
    - Dst: getBackendAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2524,1
    - Dst: auto::handleIO
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2525,1
    - Dst: TCPClientThreadData::mplexer::getWatchedFDCount
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2526,1
    - Dst: TCPClientThreadData::mplexer::getWatchedFDCount
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2526,1
    - Dst: TCPClientThreadData::mplexer::run
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2527,1
    - Dst: TCPClientThreadData::mplexer::getTimeouts
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2532,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2533,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2533,1
    - Dst: second::type
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2535,1
    - Dst: typeid
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2535,1
    - Dst: boost::any_cast<std::shared_ptr<TCPConnectionToBackend>>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2536,1
    - Dst: auto::handleTimeout
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2537,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2541,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2541,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2541,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2542,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2543,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2543,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2543,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2544,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2545,1
    - Dst: auto::outstanding::load
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2545,1
    - Dst: IncomingTCPConnectionState::clearAllDownstreamConnections
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2548,1
    - Dst: TEST_INIT
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2552,1
    - Dst: insert
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2557,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2557,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2557,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2557,1
    - Dst: insert
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2558,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2558,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2558,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2558,1
    - Dst: PacketBuffer::insert
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2561,1
    - Dst: PacketBuffer::end
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2561,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2561,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2561,1
    - Dst: insert
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2563,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2563,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2563,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2563,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2570,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2576,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2581,1
    - Dst: dynamic_cast<MockupFDMultiplexer*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2586,1
    - Dst: TCPClientThreadData::mplexer::get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2586,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2590,1
    - Dst: std::make_shared<IncomingTCPConnectionState>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2612,1
    - Dst: ConnectionInfo
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2612,1
    - Dst: getBackendAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2612,1
    - Dst: auto::handleIO
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2613,1
    - Dst: TCPClientThreadData::mplexer::getWatchedFDCount
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2614,1
    - Dst: TCPClientThreadData::mplexer::getWatchedFDCount
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2614,1
    - Dst: TCPClientThreadData::mplexer::run
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2615,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2618,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2618,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2618,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2619,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2620,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2620,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2620,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2621,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2622,1
    - Dst: auto::outstanding::load
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2622,1
    - Dst: IncomingTCPConnectionState::clearAllDownstreamConnections
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2625,1
    - Dst: TEST_INIT
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2629,1
    - Dst: insert
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2634,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2634,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2634,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2634,1
    - Dst: insert
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2635,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2635,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2635,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2635,1
    - Dst: insert
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2636,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2636,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2636,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2636,1
    - Dst: appendPayloadEditingID
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2639,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2639,1
    - Dst: appendPayloadEditingID
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2640,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2640,1
    - Dst: appendPayloadEditingID
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2641,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2641,1
    - Dst: appendPayloadEditingID
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2643,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2643,1
    - Dst: appendPayloadEditingID
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2644,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2644,1
    - Dst: appendPayloadEditingID
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2645,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2645,1
    - Dst: appendPayloadEditingID
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2647,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2647,1
    - Dst: appendPayloadEditingID
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2648,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2648,1
    - Dst: appendPayloadEditingID
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2649,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2649,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2660,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2664,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2669,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2671,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2681,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2683,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2686,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2688,1
    - Dst: dynamic_cast<MockupFDMultiplexer*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2690,1
    - Dst: TCPClientThreadData::mplexer::get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2690,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2694,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2696,1
    - Dst: dynamic_cast<MockupFDMultiplexer*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2699,1
    - Dst: TCPClientThreadData::mplexer::get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2699,1
    - Dst: dynamic_cast<MockupFDMultiplexer*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2704,1
    - Dst: TCPClientThreadData::mplexer::get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2704,1
    - Dst: dynamic_cast<MockupFDMultiplexer*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2706,1
    - Dst: TCPClientThreadData::mplexer::get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2706,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2710,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2712,1
    - Dst: std::make_shared<IncomingTCPConnectionState>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2734,1
    - Dst: ConnectionInfo
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2734,1
    - Dst: getBackendAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2734,1
    - Dst: auto::handleIO
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2735,1
    - Dst: TCPClientThreadData::mplexer::getWatchedFDCount
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2736,1
    - Dst: TCPClientThreadData::mplexer::getWatchedFDCount
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2736,1
    - Dst: TCPClientThreadData::mplexer::run
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2737,1
    - Dst: TCPClientThreadData::mplexer::getTimeouts
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2742,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2743,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2743,1
    - Dst: second::type
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2745,1
    - Dst: typeid
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2745,1
    - Dst: boost::any_cast<std::shared_ptr<IncomingTCPConnectionState>>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2746,1
    - Dst: auto::handleTimeout
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2747,1
    - Dst: dynamic_cast<MockupFDMultiplexer*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2748,1
    - Dst: TCPClientThreadData::mplexer::get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2748,1
    - Dst: TCPClientThreadData::mplexer::getWatchedFDCount
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2752,1
    - Dst: TCPClientThreadData::mplexer::getWatchedFDCount
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2752,1
    - Dst: TCPClientThreadData::mplexer::run
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2753,1
    - Dst: TCPClientThreadData::mplexer::getTimeouts
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2758,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2759,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2759,1
    - Dst: second::type
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2761,1
    - Dst: typeid
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2761,1
    - Dst: boost::any_cast<std::shared_ptr<IncomingTCPConnectionState>>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2762,1
    - Dst: auto::handleTimeout
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2763,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2767,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2767,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2767,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2768,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2769,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2769,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2769,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2770,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2771,1
    - Dst: auto::outstanding::load
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2771,1
    - Dst: IncomingTCPConnectionState::clearAllDownstreamConnections
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2774,1
    - Dst: TEST_INIT
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2778,1
    - Dst: insert
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2783,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2783,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2783,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2783,1
    - Dst: insert
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2784,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2784,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2784,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2784,1
    - Dst: insert
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2785,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2785,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2785,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2785,1
    - Dst: PacketBuffer::insert
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2787,1
    - Dst: PacketBuffer::end
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2787,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2787,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2787,1
    - Dst: PacketBuffer::insert
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2788,1
    - Dst: PacketBuffer::end
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2788,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2788,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2788,1
    - Dst: PacketBuffer::insert
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2789,1
    - Dst: PacketBuffer::end
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2789,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2789,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2789,1
    - Dst: insert
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2791,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2791,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2791,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2791,1
    - Dst: insert
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2792,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2792,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2792,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2792,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2800,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2804,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2809,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2811,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2816,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2818,1
    - Dst: dynamic_cast<MockupFDMultiplexer*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2822,1
    - Dst: TCPClientThreadData::mplexer::get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2822,1
    - Dst: dynamic_cast<MockupFDMultiplexer*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2827,1
    - Dst: TCPClientThreadData::mplexer::get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2827,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2831,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2836,1
    - Dst: NetworkError
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2844,1
    - Dst: NetworkError
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2850,1
    - Dst: NetworkError
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2856,1
    - Dst: NetworkError
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2862,1
    - Dst: NetworkError
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2868,1
    - Dst: dynamic_cast<MockupFDMultiplexer*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2874,1
    - Dst: TCPClientThreadData::mplexer::get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2874,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2877,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2879,1
    - Dst: std::make_shared<IncomingTCPConnectionState>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2896,1
    - Dst: ConnectionInfo
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2896,1
    - Dst: getBackendAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2896,1
    - Dst: auto::handleIO
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2897,1
    - Dst: TCPClientThreadData::mplexer::getWatchedFDCount
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2898,1
    - Dst: TCPClientThreadData::mplexer::getWatchedFDCount
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2898,1
    - Dst: TCPClientThreadData::mplexer::run
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2899,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2902,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2902,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2902,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2903,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2904,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2904,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2904,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2905,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2906,1
    - Dst: auto::outstanding::load
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2906,1
    - Dst: IncomingTCPConnectionState::clearAllDownstreamConnections
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2909,1
    - Dst: TEST_INIT
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2913,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2920,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2921,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2922,1
    - Dst: static_cast<uint16_t>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2923,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2923,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2924,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2924,1
    - Dst: PacketBuffer::insert
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2925,1
    - Dst: PacketBuffer::begin
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2925,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2930,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2932,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2933,1
    - Dst: GenericDNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2936,1
    - Dst: GenericDNSPacketWriter::xfrName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2937,1
    - Dst: GenericDNSPacketWriter::xfrName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2938,1
    - Dst: GenericDNSPacketWriter::xfr32BitInt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2939,1
    - Dst: GenericDNSPacketWriter::xfr32BitInt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2940,1
    - Dst: GenericDNSPacketWriter::xfr32BitInt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2941,1
    - Dst: GenericDNSPacketWriter::xfr32BitInt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2942,1
    - Dst: GenericDNSPacketWriter::xfr32BitInt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2943,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2944,1
    - Dst: GenericDNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2947,1
    - Dst: GenericDNSPacketWriter::xfr32BitInt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2948,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2949,1
    - Dst: static_cast<uint16_t>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2951,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2951,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2952,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2952,1
    - Dst: insert
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2953,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2953,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2957,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2959,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2960,1
    - Dst: GenericDNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2963,1
    - Dst: GenericDNSPacketWriter::xfr32BitInt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2964,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2965,1
    - Dst: static_cast<uint16_t>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2967,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2967,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2968,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2968,1
    - Dst: insert
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2969,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2969,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2973,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2975,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2976,1
    - Dst: GenericDNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2979,1
    - Dst: GenericDNSPacketWriter::xfr32BitInt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2980,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2981,1
    - Dst: GenericDNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2984,1
    - Dst: GenericDNSPacketWriter::xfrName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2985,1
    - Dst: GenericDNSPacketWriter::xfrName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2986,1
    - Dst: GenericDNSPacketWriter::xfr32BitInt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2987,1
    - Dst: GenericDNSPacketWriter::xfr32BitInt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2988,1
    - Dst: GenericDNSPacketWriter::xfr32BitInt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2989,1
    - Dst: GenericDNSPacketWriter::xfr32BitInt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2990,1
    - Dst: GenericDNSPacketWriter::xfr32BitInt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2991,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2992,1
    - Dst: static_cast<uint16_t>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2994,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2994,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2995,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2995,1
    - Dst: insert
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2996,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:2996,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3000,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3001,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3002,1
    - Dst: static_cast<uint16_t>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3003,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3003,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3004,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3004,1
    - Dst: PacketBuffer::insert
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3005,1
    - Dst: PacketBuffer::begin
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3005,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3009,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3010,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3011,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3012,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3013,1
    - Dst: GenericDNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3014,1
    - Dst: GenericDNSPacketWriter::xfr32BitInt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3015,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3016,1
    - Dst: static_cast<uint16_t>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3017,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3017,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3018,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3018,1
    - Dst: PacketBuffer::insert
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3019,1
    - Dst: PacketBuffer::begin
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3019,1
    - Dst: insert
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3026,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3026,1
    - Dst: PacketBuffer::begin
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3026,1
    - Dst: PacketBuffer::end
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3026,1
    - Dst: appendPayloadEditingID
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3029,1
    - Dst: appendPayloadEditingID
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3030,1
    - Dst: appendPayloadEditingID
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3033,1
    - Dst: PacketBuffer::insert
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3034,1
    - Dst: PacketBuffer::end
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3034,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3034,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3034,1
    - Dst: appendPayloadEditingID
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3036,1
    - Dst: PacketBuffer::insert
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3037,1
    - Dst: PacketBuffer::end
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3037,1
    - Dst: PacketBuffer::begin
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3037,1
    - Dst: PacketBuffer::end
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3037,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3044,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3048,1
    - Dst: dynamic_cast<MockupFDMultiplexer*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3052,1
    - Dst: TCPClientThreadData::mplexer::get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3052,1
    - Dst: dynamic_cast<MockupFDMultiplexer*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3058,1
    - Dst: TCPClientThreadData::mplexer::get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3058,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3062,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3064,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3067,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3069,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3072,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3074,1
    - Dst: dynamic_cast<MockupFDMultiplexer*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3077,1
    - Dst: TCPClientThreadData::mplexer::get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3077,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3081,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3083,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3086,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3088,1
    - Dst: std::make_shared<IncomingTCPConnectionState>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3109,1
    - Dst: ConnectionInfo
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3109,1
    - Dst: getBackendAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3109,1
    - Dst: auto::handleIO
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3110,1
    - Dst: TCPClientThreadData::mplexer::getWatchedFDCount
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3111,1
    - Dst: TCPClientThreadData::mplexer::getWatchedFDCount
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3111,1
    - Dst: TCPClientThreadData::mplexer::run
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3112,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3115,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3115,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3115,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3116,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3117,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3117,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3117,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3118,1
    - Dst: IncomingTCPConnectionState::clearAllDownstreamConnections
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3121,1
    - Dst: TEST_INIT
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3125,1
    - Dst: makeProxyHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3132,1
    - Dst: getBackendAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3132,1
    - Dst: BOOST_REQUIRE_GT
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3133,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3133,1
    - Dst: std::make_shared<DownstreamState>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3135,1
    - Dst: getBackendAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3135,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3139,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3140,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3141,1
    - Dst: static_cast<uint16_t>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3142,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3142,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3143,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3143,1
    - Dst: PacketBuffer::insert
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3144,1
    - Dst: PacketBuffer::begin
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3144,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3149,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3151,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3152,1
    - Dst: GenericDNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3155,1
    - Dst: GenericDNSPacketWriter::xfrName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3156,1
    - Dst: GenericDNSPacketWriter::xfrName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3157,1
    - Dst: GenericDNSPacketWriter::xfr32BitInt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3158,1
    - Dst: GenericDNSPacketWriter::xfr32BitInt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3159,1
    - Dst: GenericDNSPacketWriter::xfr32BitInt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3160,1
    - Dst: GenericDNSPacketWriter::xfr32BitInt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3161,1
    - Dst: GenericDNSPacketWriter::xfr32BitInt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3162,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3163,1
    - Dst: GenericDNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3166,1
    - Dst: GenericDNSPacketWriter::xfr32BitInt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3167,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3168,1
    - Dst: static_cast<uint16_t>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3170,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3170,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3171,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3171,1
    - Dst: insert
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3172,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3172,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3176,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3178,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3179,1
    - Dst: GenericDNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3182,1
    - Dst: GenericDNSPacketWriter::xfr32BitInt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3183,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3184,1
    - Dst: static_cast<uint16_t>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3186,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3186,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3187,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3187,1
    - Dst: insert
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3188,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3188,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3192,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3194,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3195,1
    - Dst: GenericDNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3198,1
    - Dst: GenericDNSPacketWriter::xfr32BitInt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3199,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3200,1
    - Dst: GenericDNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3203,1
    - Dst: GenericDNSPacketWriter::xfrName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3204,1
    - Dst: GenericDNSPacketWriter::xfrName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3205,1
    - Dst: GenericDNSPacketWriter::xfr32BitInt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3206,1
    - Dst: GenericDNSPacketWriter::xfr32BitInt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3207,1
    - Dst: GenericDNSPacketWriter::xfr32BitInt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3208,1
    - Dst: GenericDNSPacketWriter::xfr32BitInt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3209,1
    - Dst: GenericDNSPacketWriter::xfr32BitInt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3210,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3211,1
    - Dst: static_cast<uint16_t>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3213,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3213,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3214,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3214,1
    - Dst: insert
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3215,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3215,1
    - Dst: PacketBuffer::insert
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3224,1
    - Dst: PacketBuffer::end
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3224,1
    - Dst: auto::begin
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3224,1
    - Dst: auto::end
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3224,1
    - Dst: appendPayloadEditingID
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3225,1
    - Dst: appendPayloadEditingID
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3228,1
    - Dst: PacketBuffer::insert
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3230,1
    - Dst: PacketBuffer::end
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3230,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3230,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3230,1
    - Dst: PacketBuffer::insert
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3231,1
    - Dst: PacketBuffer::end
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3231,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3231,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3231,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3238,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3242,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3242,1
    - Dst: dynamic_cast<MockupFDMultiplexer*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3246,1
    - Dst: TCPClientThreadData::mplexer::get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3246,1
    - Dst: dynamic_cast<MockupFDMultiplexer*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3252,1
    - Dst: TCPClientThreadData::mplexer::get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3252,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3256,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3258,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3261,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3263,1
    - Dst: std::make_shared<IncomingTCPConnectionState>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3288,1
    - Dst: ConnectionInfo
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3288,1
    - Dst: getBackendAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3288,1
    - Dst: auto::handleIO
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3289,1
    - Dst: TCPClientThreadData::mplexer::getWatchedFDCount
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3290,1
    - Dst: TCPClientThreadData::mplexer::getWatchedFDCount
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3290,1
    - Dst: TCPClientThreadData::mplexer::run
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3291,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3294,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3294,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3294,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3295,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3296,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3296,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3296,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3297,1
    - Dst: IncomingTCPConnectionState::clearAllDownstreamConnections
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3300,1
    - Dst: TEST_INIT
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3304,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3314,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3315,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3316,1
    - Dst: static_cast<uint16_t>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3317,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3317,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3318,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3318,1
    - Dst: PacketBuffer::insert
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3319,1
    - Dst: PacketBuffer::begin
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3319,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3323,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3324,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3325,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3326,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3327,1
    - Dst: GenericDNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3328,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3328,1
    - Dst: GenericDNSPacketWriter::xfrName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3329,1
    - Dst: GenericDNSPacketWriter::xfrName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3330,1
    - Dst: GenericDNSPacketWriter::xfr32BitInt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3331,1
    - Dst: GenericDNSPacketWriter::xfr32BitInt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3332,1
    - Dst: GenericDNSPacketWriter::xfr32BitInt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3333,1
    - Dst: GenericDNSPacketWriter::xfr32BitInt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3334,1
    - Dst: GenericDNSPacketWriter::xfr32BitInt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3335,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3336,1
    - Dst: static_cast<uint16_t>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3338,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3338,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3339,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3339,1
    - Dst: PacketBuffer::insert
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3340,1
    - Dst: PacketBuffer::begin
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3340,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3344,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3345,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3346,1
    - Dst: static_cast<uint16_t>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3347,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3347,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3348,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3348,1
    - Dst: PacketBuffer::insert
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3349,1
    - Dst: PacketBuffer::begin
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3349,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3355,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3357,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3358,1
    - Dst: GenericDNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3361,1
    - Dst: GenericDNSPacketWriter::xfrName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3362,1
    - Dst: GenericDNSPacketWriter::xfrName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3363,1
    - Dst: GenericDNSPacketWriter::xfr32BitInt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3364,1
    - Dst: GenericDNSPacketWriter::xfr32BitInt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3365,1
    - Dst: GenericDNSPacketWriter::xfr32BitInt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3366,1
    - Dst: GenericDNSPacketWriter::xfr32BitInt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3367,1
    - Dst: GenericDNSPacketWriter::xfr32BitInt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3368,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3369,1
    - Dst: GenericDNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3372,1
    - Dst: GenericDNSPacketWriter::xfrName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3373,1
    - Dst: GenericDNSPacketWriter::xfrName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3374,1
    - Dst: GenericDNSPacketWriter::xfr32BitInt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3375,1
    - Dst: GenericDNSPacketWriter::xfr32BitInt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3376,1
    - Dst: GenericDNSPacketWriter::xfr32BitInt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3377,1
    - Dst: GenericDNSPacketWriter::xfr32BitInt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3378,1
    - Dst: GenericDNSPacketWriter::xfr32BitInt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3379,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3380,1
    - Dst: GenericDNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3384,1
    - Dst: GenericDNSPacketWriter::xfr32BitInt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3385,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3386,1
    - Dst: GenericDNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3390,1
    - Dst: GenericDNSPacketWriter::xfrName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3391,1
    - Dst: GenericDNSPacketWriter::xfrName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3392,1
    - Dst: GenericDNSPacketWriter::xfr32BitInt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3393,1
    - Dst: GenericDNSPacketWriter::xfr32BitInt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3394,1
    - Dst: GenericDNSPacketWriter::xfr32BitInt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3395,1
    - Dst: GenericDNSPacketWriter::xfr32BitInt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3396,1
    - Dst: GenericDNSPacketWriter::xfr32BitInt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3397,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3398,1
    - Dst: GenericDNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3400,1
    - Dst: GenericDNSPacketWriter::xfr32BitInt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3401,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3402,1
    - Dst: GenericDNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3404,1
    - Dst: GenericDNSPacketWriter::xfrName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3405,1
    - Dst: GenericDNSPacketWriter::xfrName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3406,1
    - Dst: GenericDNSPacketWriter::xfr32BitInt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3407,1
    - Dst: GenericDNSPacketWriter::xfr32BitInt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3408,1
    - Dst: GenericDNSPacketWriter::xfr32BitInt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3409,1
    - Dst: GenericDNSPacketWriter::xfr32BitInt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3410,1
    - Dst: GenericDNSPacketWriter::xfr32BitInt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3411,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3412,1
    - Dst: GenericDNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3418,1
    - Dst: GenericDNSPacketWriter::xfrName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3419,1
    - Dst: GenericDNSPacketWriter::xfrName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3420,1
    - Dst: GenericDNSPacketWriter::xfr32BitInt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3421,1
    - Dst: GenericDNSPacketWriter::xfr32BitInt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3422,1
    - Dst: GenericDNSPacketWriter::xfr32BitInt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3423,1
    - Dst: GenericDNSPacketWriter::xfr32BitInt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3424,1
    - Dst: GenericDNSPacketWriter::xfr32BitInt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3425,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3426,1
    - Dst: GenericDNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3430,1
    - Dst: GenericDNSPacketWriter::xfrName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3431,1
    - Dst: GenericDNSPacketWriter::xfrName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3432,1
    - Dst: GenericDNSPacketWriter::xfr32BitInt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3433,1
    - Dst: GenericDNSPacketWriter::xfr32BitInt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3434,1
    - Dst: GenericDNSPacketWriter::xfr32BitInt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3435,1
    - Dst: GenericDNSPacketWriter::xfr32BitInt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3436,1
    - Dst: GenericDNSPacketWriter::xfr32BitInt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3437,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3438,1
    - Dst: static_cast<uint16_t>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3440,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3440,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3441,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3441,1
    - Dst: insert
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3442,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3442,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3446,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3447,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3448,1
    - Dst: static_cast<uint16_t>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3449,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3449,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3450,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3450,1
    - Dst: PacketBuffer::insert
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3451,1
    - Dst: PacketBuffer::begin
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3451,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3455,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3456,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3457,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3458,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3459,1
    - Dst: GenericDNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3460,1
    - Dst: GenericDNSPacketWriter::xfr32BitInt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3461,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3462,1
    - Dst: static_cast<uint16_t>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3463,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3463,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3464,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3464,1
    - Dst: PacketBuffer::insert
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3465,1
    - Dst: PacketBuffer::begin
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3465,1
    - Dst: insert
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3472,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3472,1
    - Dst: PacketBuffer::begin
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3472,1
    - Dst: PacketBuffer::end
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3472,1
    - Dst: insert
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3473,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3473,1
    - Dst: PacketBuffer::begin
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3473,1
    - Dst: PacketBuffer::end
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3473,1
    - Dst: appendPayloadEditingID
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3475,1
    - Dst: appendPayloadEditingID
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3476,1
    - Dst: appendPayloadEditingID
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3477,1
    - Dst: appendPayloadEditingID
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3479,1
    - Dst: PacketBuffer::insert
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3480,1
    - Dst: PacketBuffer::begin
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3480,1
    - Dst: PacketBuffer::begin
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3480,1
    - Dst: PacketBuffer::end
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3480,1
    - Dst: appendPayloadEditingID
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3482,1
    - Dst: PacketBuffer::insert
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3483,1
    - Dst: PacketBuffer::end
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3483,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3483,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3483,1
    - Dst: appendPayloadEditingID
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3485,1
    - Dst: PacketBuffer::insert
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3486,1
    - Dst: PacketBuffer::end
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3486,1
    - Dst: PacketBuffer::begin
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3486,1
    - Dst: PacketBuffer::end
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3486,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3493,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3497,1
    - Dst: dynamic_cast<MockupFDMultiplexer*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3501,1
    - Dst: TCPClientThreadData::mplexer::get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3501,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3507,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3509,1
    - Dst: dynamic_cast<MockupFDMultiplexer*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3512,1
    - Dst: TCPClientThreadData::mplexer::get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3512,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3516,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3518,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3521,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3523,1
    - Dst: dynamic_cast<MockupFDMultiplexer*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3526,1
    - Dst: TCPClientThreadData::mplexer::get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3526,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3530,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3532,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3535,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3537,1
    - Dst: std::make_shared<IncomingTCPConnectionState>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3558,1
    - Dst: ConnectionInfo
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3558,1
    - Dst: getBackendAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3558,1
    - Dst: auto::handleIO
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3559,1
    - Dst: TCPClientThreadData::mplexer::getWatchedFDCount
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3560,1
    - Dst: TCPClientThreadData::mplexer::getWatchedFDCount
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3560,1
    - Dst: TCPClientThreadData::mplexer::run
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3561,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3564,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3564,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3564,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3565,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3566,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3566,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3566,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3567,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3568,1
    - Dst: auto::outstanding::load
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3568,1
    - Dst: IncomingTCPConnectionState::clearAllDownstreamConnections
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3571,1
    - Dst: TEST_INIT
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3575,1
    - Dst: makeProxyHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3580,1
    - Dst: getBackendAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3580,1
    - Dst: BOOST_REQUIRE_GT
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3581,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3581,1
    - Dst: insert
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3583,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3583,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3583,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3583,1
    - Dst: insert
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3584,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3584,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3584,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3584,1
    - Dst: insert
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3585,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3585,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3585,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3585,1
    - Dst: std::make_shared<DownstreamState>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3587,1
    - Dst: getBackendAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3587,1
    - Dst: PacketBuffer::insert
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3593,1
    - Dst: PacketBuffer::end
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3593,1
    - Dst: auto::begin
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3593,1
    - Dst: auto::end
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3593,1
    - Dst: appendPayloadEditingID
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3594,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3594,1
    - Dst: appendPayloadEditingID
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3595,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3595,1
    - Dst: appendPayloadEditingID
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3596,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3596,1
    - Dst: PacketBuffer::insert
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3597,1
    - Dst: PacketBuffer::end
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3597,1
    - Dst: auto::begin
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3597,1
    - Dst: auto::end
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3597,1
    - Dst: appendPayloadEditingID
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3599,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3599,1
    - Dst: appendPayloadEditingID
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3600,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3600,1
    - Dst: appendPayloadEditingID
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3602,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3602,1
    - Dst: appendPayloadEditingID
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3604,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3604,1
    - Dst: appendPayloadEditingID
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3605,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3605,1
    - Dst: PacketBuffer::insert
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3607,1
    - Dst: PacketBuffer::end
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3607,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3607,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3607,1
    - Dst: PacketBuffer::insert
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3608,1
    - Dst: PacketBuffer::end
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3608,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3608,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3608,1
    - Dst: PacketBuffer::insert
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3609,1
    - Dst: PacketBuffer::end
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3609,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3609,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3609,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3615,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3619,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3619,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3622,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3624,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3627,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3629,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3634,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3636,1
    - Dst: dynamic_cast<MockupFDMultiplexer*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3640,1
    - Dst: TCPClientThreadData::mplexer::get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3640,1
    - Dst: dynamic_cast<MockupFDMultiplexer*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3644,1
    - Dst: TCPClientThreadData::mplexer::get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3644,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3652,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3652,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3654,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3657,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3659,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3662,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3664,1
    - Dst: dynamic_cast<MockupFDMultiplexer*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3666,1
    - Dst: TCPClientThreadData::mplexer::get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3666,1
    - Dst: std::make_shared<IncomingTCPConnectionState>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3688,1
    - Dst: ConnectionInfo
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3688,1
    - Dst: getBackendAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3688,1
    - Dst: auto::handleIO
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3689,1
    - Dst: TCPClientThreadData::mplexer::getWatchedFDCount
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3690,1
    - Dst: TCPClientThreadData::mplexer::getWatchedFDCount
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3690,1
    - Dst: TCPClientThreadData::mplexer::run
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3691,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3694,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3694,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3694,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3695,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3696,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3696,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3696,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3697,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3698,1
    - Dst: auto::outstanding::load
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3698,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3702,1
    - Dst: IncomingTCPConnectionState::clearAllDownstreamConnections
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3702,1
    - Dst: TEST_INIT
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3706,1
    - Dst: makeProxyHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3711,1
    - Dst: getBackendAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3711,1
    - Dst: BOOST_REQUIRE_GT
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3712,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3712,1
    - Dst: insert
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3714,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3714,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3714,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3714,1
    - Dst: insert
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3715,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3715,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3715,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3715,1
    - Dst: insert
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3716,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3716,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3716,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3716,1
    - Dst: std::make_shared<DownstreamState>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3718,1
    - Dst: getBackendAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3718,1
    - Dst: PacketBuffer::insert
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3724,1
    - Dst: PacketBuffer::end
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3724,1
    - Dst: auto::begin
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3724,1
    - Dst: auto::end
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3724,1
    - Dst: appendPayloadEditingID
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3725,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3725,1
    - Dst: appendPayloadEditingID
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3726,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3726,1
    - Dst: appendPayloadEditingID
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3727,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3727,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3733,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3737,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3737,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3742,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3744,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3749,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3751,1
    - Dst: dynamic_cast<MockupFDMultiplexer*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3755,1
    - Dst: TCPClientThreadData::mplexer::get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3755,1
    - Dst: std::make_shared<IncomingTCPConnectionState>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3777,1
    - Dst: ConnectionInfo
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3777,1
    - Dst: getBackendAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3777,1
    - Dst: auto::handleIO
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3778,1
    - Dst: TCPClientThreadData::mplexer::getWatchedFDCount
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3779,1
    - Dst: TCPClientThreadData::mplexer::getWatchedFDCount
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3779,1
    - Dst: TCPClientThreadData::mplexer::run
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3780,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3783,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3783,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3783,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3784,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3785,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3785,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3785,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3786,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3787,1
    - Dst: auto::outstanding::load
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3787,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3791,1
    - Dst: IncomingTCPConnectionState::clearAllDownstreamConnections
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3791,1
    - Dst: TEST_INIT
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3795,1
    - Dst: insert
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3800,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3800,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3800,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3800,1
    - Dst: insert
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3801,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3801,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3801,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3801,1
    - Dst: insert
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3802,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3802,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3802,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3802,1
    - Dst: dnsdist::configuration::updateRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3806,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3815,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3822,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3825,1
    - Dst: std::make_shared<IncomingTCPConnectionState>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3849,1
    - Dst: ConnectionInfo
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3849,1
    - Dst: getBackendAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3849,1
    - Dst: auto::handleIO
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3850,1
    - Dst: TCPClientThreadData::mplexer::getWatchedFDCount
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3851,1
    - Dst: TCPClientThreadData::mplexer::getWatchedFDCount
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3851,1
    - Dst: TCPClientThreadData::mplexer::run
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3852,1
    - Dst: TCPClientThreadData::mplexer::getTimeouts
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3857,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3858,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3858,1
    - Dst: second::type
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3860,1
    - Dst: typeid
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3860,1
    - Dst: boost::any_cast<std::shared_ptr<TCPConnectionToBackend>>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3861,1
    - Dst: auto::handleTimeout
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3862,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3866,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3866,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3867,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3867,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3868,1
    - Dst: auto::outstanding::load
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3868,1
    - Dst: dnsdist::configuration::updateRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3872,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3878,1
    - Dst: IncomingTCPConnectionState::clearAllDownstreamConnections
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3878,1
    - Dst: TEST_INIT
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3882,1
    - Dst: insert
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3887,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3887,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3887,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3887,1
    - Dst: appendPayloadEditingID
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3893,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3893,1
    - Dst: appendPayloadEditingID
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3894,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3894,1
    - Dst: appendPayloadEditingID
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3895,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3895,1
    - Dst: appendPayloadEditingID
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3896,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3896,1
    - Dst: appendPayloadEditingID
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3897,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3897,1
    - Dst: appendPayloadEditingID
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3901,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3901,1
    - Dst: appendPayloadEditingID
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3902,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3902,1
    - Dst: appendPayloadEditingID
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3903,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3903,1
    - Dst: appendPayloadEditingID
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3904,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3904,1
    - Dst: appendPayloadEditingID
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3905,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3905,1
    - Dst: PacketBuffer::insert
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3907,1
    - Dst: PacketBuffer::end
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3907,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3907,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3907,1
    - Dst: PacketBuffer::insert
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3908,1
    - Dst: PacketBuffer::end
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3908,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3908,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3908,1
    - Dst: PacketBuffer::insert
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3909,1
    - Dst: PacketBuffer::end
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3909,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3909,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3909,1
    - Dst: PacketBuffer::insert
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3910,1
    - Dst: PacketBuffer::end
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3910,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3910,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3910,1
    - Dst: PacketBuffer::insert
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3911,1
    - Dst: PacketBuffer::end
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3911,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3911,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3911,1
    - Dst: std::make_shared<DownstreamState>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3913,1
    - Dst: getBackendAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3913,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3925,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3931,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3936,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3938,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3943,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3949,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3954,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3956,1
    - Dst: dynamic_cast<MockupFDMultiplexer*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3963,1
    - Dst: TCPClientThreadData::mplexer::get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3963,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3967,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3969,1
    - Dst: dynamic_cast<MockupFDMultiplexer*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3971,1
    - Dst: TCPClientThreadData::mplexer::get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3971,1
    - Dst: dynamic_cast<MockupFDMultiplexer*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3973,1
    - Dst: TCPClientThreadData::mplexer::get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3973,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3979,1
    - Dst: dynamic_cast<MockupFDMultiplexer*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3981,1
    - Dst: TCPClientThreadData::mplexer::get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3981,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3984,1
    - Dst: dynamic_cast<MockupFDMultiplexer*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3988,1
    - Dst: TCPClientThreadData::mplexer::get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3988,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3994,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3996,1
    - Dst: dynamic_cast<MockupFDMultiplexer*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3998,1
    - Dst: TCPClientThreadData::mplexer::get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3998,1
    - Dst: dynamic_cast<MockupFDMultiplexer*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3999,1
    - Dst: TCPClientThreadData::mplexer::get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:3999,1
    - Dst: dynamic_cast<MockupFDMultiplexer*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4000,1
    - Dst: TCPClientThreadData::mplexer::get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4000,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4006,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4008,1
    - Dst: dynamic_cast<MockupFDMultiplexer*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4011,1
    - Dst: TCPClientThreadData::mplexer::get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4011,1
    - Dst: dynamic_cast<MockupFDMultiplexer*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4012,1
    - Dst: TCPClientThreadData::mplexer::get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4012,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4018,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4020,1
    - Dst: dynamic_cast<MockupFDMultiplexer*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4023,1
    - Dst: TCPClientThreadData::mplexer::get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4023,1
    - Dst: dynamic_cast<MockupFDMultiplexer*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4024,1
    - Dst: TCPClientThreadData::mplexer::get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4024,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4030,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4032,1
    - Dst: dynamic_cast<MockupFDMultiplexer*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4035,1
    - Dst: TCPClientThreadData::mplexer::get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4035,1
    - Dst: dynamic_cast<MockupFDMultiplexer*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4037,1
    - Dst: TCPClientThreadData::mplexer::get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4037,1
    - Dst: std::make_shared<IncomingTCPConnectionState>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4060,1
    - Dst: ConnectionInfo
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4060,1
    - Dst: getBackendAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4060,1
    - Dst: auto::handleIO
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4061,1
    - Dst: TCPClientThreadData::mplexer::getWatchedFDCount
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4062,1
    - Dst: TCPClientThreadData::mplexer::getWatchedFDCount
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4062,1
    - Dst: TCPClientThreadData::mplexer::run
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4063,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4066,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4066,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4067,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4068,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4068,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4069,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4070,1
    - Dst: auto::outstanding::load
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4070,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4073,1
    - Dst: IncomingTCPConnectionState::clearAllDownstreamConnections
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4073,1
    - Dst: TEST_INIT
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4077,1
    - Dst: insert
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4081,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4081,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4081,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4081,1
    - Dst: insert
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4082,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4082,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4082,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4082,1
    - Dst: appendPayloadEditingID
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4084,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4084,1
    - Dst: appendPayloadEditingID
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4085,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4085,1
    - Dst: appendPayloadEditingID
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4087,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4087,1
    - Dst: appendPayloadEditingID
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4088,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4088,1
    - Dst: appendPayloadEditingID
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4090,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4090,1
    - Dst: appendPayloadEditingID
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4091,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4091,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4098,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4102,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4107,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4109,1
    - Dst: dynamic_cast<MockupFDMultiplexer*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4112,1
    - Dst: TCPClientThreadData::mplexer::get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4112,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4118,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4119,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4121,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4123,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4124,1
    - Dst: dynamic_cast<MockupFDMultiplexer*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4125,1
    - Dst: TCPClientThreadData::mplexer::get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4125,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4128,1
    - Dst: std::make_shared<IncomingTCPConnectionState>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4150,1
    - Dst: ConnectionInfo
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4150,1
    - Dst: getBackendAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4150,1
    - Dst: auto::handleIO
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4151,1
    - Dst: TCPClientThreadData::mplexer::getWatchedFDCount
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4152,1
    - Dst: TCPClientThreadData::mplexer::getWatchedFDCount
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4152,1
    - Dst: TCPClientThreadData::mplexer::run
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4153,1
    - Dst: TCPClientThreadData::mplexer::getTimeouts
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4158,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4159,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4159,1
    - Dst: second::type
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4161,1
    - Dst: typeid
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4161,1
    - Dst: boost::any_cast<std::shared_ptr<IncomingTCPConnectionState>>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4162,1
    - Dst: auto::handleTimeout
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4163,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4167,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4167,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4167,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4168,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4169,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4169,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4169,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4170,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4171,1
    - Dst: auto::outstanding::load
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4171,1
    - Dst: IncomingTCPConnectionState::clearAllDownstreamConnections
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4174,1
    CyclomaticComplexity: 75
    EdgeCount: 75
    ICount: 960
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4176
      start: 1938
    functionDepth: 2
    functionLinenumber: 1938
    functionLinenumberEnd: 4176
    functionName: BOOST_FIXTURE_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc
    functionUses: 0
    functionsReached:
    - getMutableData
    - std::to_string
    - PacketBuffer::end
    - GenericDNSPacketWriter::getHeader
    - dnsdist::configuration::updateRuntimeConfiguration
    - boost::any_cast<std::shared_ptr<TCPConnectionToBackend>>
    - prependPayloadEditingID
    - PacketBuffer::size
    - std::vector::at
    - auto::begin
    - auto::handleIO
    - gettimeofday
    - insert
    - GenericDNSPacketWriter::xfr32BitInt
    - auto::outstanding::load
    - auto::size
    - PacketBuffer::begin
    - TCPClientThreadData::mplexer::run
    - second::type
    - boost::any_cast<std::shared_ptr<IncomingTCPConnectionState>>
    - GenericDNSPacketWriter::startRecord
    - ConnectionInfo
    - size
    - std::make_shared<TLSFrontend>
    - static_cast<uint16_t>
    - TCPClientThreadData::mplexer::getTimeouts
    - NetworkError
    - std::make_shared<DownstreamState>
    - begin
    - makeProxyHeader
    - htons
    - dnsdist::configuration::getCurrentRuntimeConfiguration
    - appendPayloadEditingID
    - DNSName
    - static_cast<uint8_t>
    - TCPClientThreadData::mplexer::get
    - BOOST_REQUIRE_GT
    - std::make_unique<MockupFDMultiplexer>
    - GenericDNSPacketWriter::xfrName
    - IncomingTCPConnectionState::clearAllDownstreamConnections
    - auto::handleTimeout
    - TCPClientThreadData::mplexer::getWatchedFDCount
    - typeid
    - PacketBuffer::insert
    - end
    - dynamic_cast<MockupFDMultiplexer*>
    - BOOST_CHECK_EQUAL
    - TCPClientThreadData::TCPClientThreadData
    - std::make_shared<MockupTLSCtx>
    - GenericDNSPacketWriter::commit
    - std::make_shared<IncomingTCPConnectionState>
    - TEST_INIT
    - auto::end
    - getBackendAddress
    - BOOST_CHECK
    linkageType: ''
    returnType: void
    signature: void BOOST_FIXTURE_TEST_CASE(test_IncomingConnectionOOOR_BackendOOOR,
      TestFixture)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4180,1
    - Dst: getBackendAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4181,1
    - Dst: std::make_shared<MockupTLSCtx>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4186,1
    - Dst: std::make_shared<TLSFrontend>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4187,1
    - Dst: std::make_shared<DownstreamState>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4189,1
    - Dst: getBackendAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4189,1
    - Dst: TCPClientThreadData::TCPClientThreadData
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4194,1
    - Dst: std::make_unique<MockupFDMultiplexer>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4195,1
    - Dst: gettimeofday
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4198,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4206,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4206,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4207,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4208,1
    - Dst: static_cast<uint16_t>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4209,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4209,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4210,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4210,1
    - Dst: insert
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4211,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4211,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4212,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4219,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4221,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4222,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4223,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4224,1
    - Dst: GenericDNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4225,1
    - Dst: GenericDNSPacketWriter::xfr32BitInt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4226,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4227,1
    - Dst: static_cast<uint16_t>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4229,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4229,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4230,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4230,1
    - Dst: insert
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4231,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4231,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4232,1
    - Dst: TEST_INIT
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4237,1
    - Dst: insert
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4242,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4242,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4242,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4242,1
    - Dst: appendPayloadEditingID
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4245,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4245,1
    - Dst: appendPayloadEditingID
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4246,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4246,1
    - Dst: appendPayloadEditingID
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4247,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4247,1
    - Dst: appendPayloadEditingID
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4248,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4248,1
    - Dst: appendPayloadEditingID
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4249,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4249,1
    - Dst: appendPayloadEditingID
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4251,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4251,1
    - Dst: appendPayloadEditingID
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4252,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4252,1
    - Dst: appendPayloadEditingID
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4253,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4253,1
    - Dst: appendPayloadEditingID
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4254,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4254,1
    - Dst: appendPayloadEditingID
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4255,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4255,1
    - Dst: PacketBuffer::insert
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4257,1
    - Dst: PacketBuffer::end
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4257,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4257,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4257,1
    - Dst: PacketBuffer::insert
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4258,1
    - Dst: PacketBuffer::end
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4258,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4258,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4258,1
    - Dst: PacketBuffer::insert
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4259,1
    - Dst: PacketBuffer::end
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4259,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4259,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4259,1
    - Dst: PacketBuffer::insert
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4260,1
    - Dst: PacketBuffer::end
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4260,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4260,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4260,1
    - Dst: PacketBuffer::insert
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4261,1
    - Dst: PacketBuffer::end
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4261,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4261,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4261,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4269,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4272,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4275,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4280,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4283,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4286,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4291,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4294,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4297,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4302,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4305,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4308,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4313,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4316,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4319,1
    - Dst: dynamic_cast<MockupFDMultiplexer*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4323,1
    - Dst: TCPClientThreadData::mplexer::get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4323,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4323,1
    - Dst: dynamic_cast<MockupFDMultiplexer*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4327,1
    - Dst: TCPClientThreadData::mplexer::get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4327,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4331,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4333,1
    - Dst: dynamic_cast<MockupFDMultiplexer*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4335,1
    - Dst: TCPClientThreadData::mplexer::get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4335,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4335,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4339,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4341,1
    - Dst: dynamic_cast<MockupFDMultiplexer*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4343,1
    - Dst: TCPClientThreadData::mplexer::get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4343,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4343,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4347,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4349,1
    - Dst: dynamic_cast<MockupFDMultiplexer*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4351,1
    - Dst: TCPClientThreadData::mplexer::get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4351,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4351,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4355,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4357,1
    - Dst: dynamic_cast<MockupFDMultiplexer*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4359,1
    - Dst: TCPClientThreadData::mplexer::get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4359,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4359,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4363,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4365,1
    - Dst: dynamic_cast<MockupFDMultiplexer*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4367,1
    - Dst: TCPClientThreadData::mplexer::get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4367,1
    - Dst: std::make_shared<IncomingTCPConnectionState>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4393,1
    - Dst: ConnectionInfo
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4393,1
    - Dst: getBackendAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4393,1
    - Dst: auto::handleIO
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4394,1
    - Dst: TCPClientThreadData::mplexer::getWatchedFDCount
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4395,1
    - Dst: TCPClientThreadData::mplexer::getWatchedFDCount
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4395,1
    - Dst: TCPClientThreadData::mplexer::run
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4396,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4399,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4399,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4400,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4401,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4401,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4402,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4403,1
    - Dst: auto::outstanding::load
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4403,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4406,1
    - Dst: IncomingTCPConnectionState::clearAllDownstreamConnections
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4406,1
    - Dst: TEST_INIT
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4411,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4415,1
    - Dst: appendPayloadEditingID
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4418,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4418,1
    - Dst: appendPayloadEditingID
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4419,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4419,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4425,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4427,1
    - Dst: std::make_shared<IncomingTCPConnectionState>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4448,1
    - Dst: ConnectionInfo
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4448,1
    - Dst: getBackendAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4448,1
    - Dst: auto::handleIO
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4449,1
    - Dst: TCPClientThreadData::mplexer::getWatchedFDCount
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4450,1
    - Dst: TCPClientThreadData::mplexer::getWatchedFDCount
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4450,1
    - Dst: TCPClientThreadData::mplexer::run
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4451,1
    - Dst: TCPClientThreadData::mplexer::getTimeouts
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4456,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4457,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4457,1
    - Dst: second::type
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4459,1
    - Dst: typeid
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4459,1
    - Dst: boost::any_cast<std::shared_ptr<IncomingTCPConnectionState>>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4460,1
    - Dst: auto::handleTimeout
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4461,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4465,1
    - Dst: auto::outstanding::load
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4465,1
    - Dst: IncomingTCPConnectionState::clearAllDownstreamConnections
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4468,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 130
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4470
      start: 4178
    functionDepth: 2
    functionLinenumber: 4178
    functionLinenumberEnd: 4470
    functionName: BOOST_FIXTURE_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc
    functionUses: 0
    functionsReached:
    - std::to_string
    - PacketBuffer::end
    - GenericDNSPacketWriter::getHeader
    - std::vector::at
    - auto::handleIO
    - gettimeofday
    - insert
    - GenericDNSPacketWriter::xfr32BitInt
    - auto::outstanding::load
    - auto::size
    - TCPClientThreadData::mplexer::run
    - second::type
    - boost::any_cast<std::shared_ptr<IncomingTCPConnectionState>>
    - GenericDNSPacketWriter::startRecord
    - ConnectionInfo
    - size
    - std::make_shared<TLSFrontend>
    - static_cast<uint16_t>
    - TCPClientThreadData::mplexer::getTimeouts
    - std::make_shared<DownstreamState>
    - begin
    - dnsdist::configuration::getCurrentRuntimeConfiguration
    - appendPayloadEditingID
    - DNSName
    - static_cast<uint8_t>
    - TCPClientThreadData::mplexer::get
    - std::make_unique<MockupFDMultiplexer>
    - IncomingTCPConnectionState::clearAllDownstreamConnections
    - auto::handleTimeout
    - TCPClientThreadData::mplexer::getWatchedFDCount
    - typeid
    - PacketBuffer::insert
    - end
    - dynamic_cast<MockupFDMultiplexer*>
    - BOOST_CHECK_EQUAL
    - TCPClientThreadData::TCPClientThreadData
    - std::make_shared<MockupTLSCtx>
    - GenericDNSPacketWriter::commit
    - std::make_shared<IncomingTCPConnectionState>
    - TEST_INIT
    - getBackendAddress
    - BOOST_CHECK
    linkageType: ''
    returnType: void
    signature: void BOOST_FIXTURE_TEST_CASE(test_IncomingConnectionOOOR_BackendNotOOOR,
      TestFixture)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getBackendAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4474,1
    - Dst: std::make_shared<MockupTLSCtx>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4476,1
    - Dst: std::make_shared<TLSFrontend>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4477,1
    - Dst: TCPClientThreadData::TCPClientThreadData
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4479,1
    - Dst: std::make_unique<MockupFDMultiplexer>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4480,1
    - Dst: gettimeofday
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4483,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4486,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4487,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4488,1
    - Dst: static_cast<uint16_t>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4490,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4490,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4491,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4491,1
    - Dst: PacketBuffer::insert
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4492,1
    - Dst: PacketBuffer::begin
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4492,1
    - Dst: std::array::begin
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4492,1
    - Dst: std::array::end
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4492,1
    - Dst: std::make_shared<DownstreamState>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4494,1
    - Dst: getBackendAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4494,1
    - Dst: TEST_INIT
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4499,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4507,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4510,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4512,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4513,1
    - Dst: appendPayloadEditingID
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4516,1
    - Dst: appendPayloadEditingID
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4517,1
    - Dst: emplace_back
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4519,1
    - Dst: emplace_back
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4520,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4520,1
    - Dst: emplace_back
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4521,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4521,1
    - Dst: emplace_back
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4522,1
    - Dst: emplace_back
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4523,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4523,1
    - Dst: emplace_back
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4524,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4524,1
    - Dst: emplace_back
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4526,1
    - Dst: emplace_back
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4528,1
    - Dst: emplace_back
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4530,1
    - Dst: std::make_shared<IncomingTCPConnectionState>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4540,1
    - Dst: ConnectionInfo
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4540,1
    - Dst: getBackendAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4540,1
    - Dst: auto::handleIO
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4541,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4542,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4542,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4542,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4543,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4543,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4543,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4544,1
    - Dst: auto::outstanding::load
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4544,1
    - Dst: IncomingTCPConnectionState::clearAllDownstreamConnections
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc:4546,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 38
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4548
      start: 4472
    functionDepth: 2
    functionLinenumber: 4472
    functionLinenumberEnd: 4548
    functionName: BOOST_FIXTURE_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc
    functionUses: 0
    functionsReached:
    - GenericDNSPacketWriter::getHeader
    - PacketBuffer::size
    - auto::handleIO
    - gettimeofday
    - emplace_back
    - auto::outstanding::load
    - PacketBuffer::begin
    - ConnectionInfo
    - size
    - std::make_shared<TLSFrontend>
    - static_cast<uint16_t>
    - std::make_shared<DownstreamState>
    - std::array::begin
    - appendPayloadEditingID
    - DNSName
    - static_cast<uint8_t>
    - std::make_unique<MockupFDMultiplexer>
    - IncomingTCPConnectionState::clearAllDownstreamConnections
    - PacketBuffer::insert
    - std::array::end
    - BOOST_CHECK_EQUAL
    - TCPClientThreadData::TCPClientThreadData
    - std::make_shared<MockupTLSCtx>
    - std::make_shared<IncomingTCPConnectionState>
    - TEST_INIT
    - getBackendAddress
    linkageType: ''
    returnType: void
    signature: void BOOST_FIXTURE_TEST_CASE(test_Pipelined_Queries_Immediate_Responses,
      TestFixture)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:147,1
    - Dst: d_webServerACL::toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:149,1
    - Dst: getMaxConcurrentConnections
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:168,1
    - Dst: ostringstream::str
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:171,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 22
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 172
      start: 142
    functionDepth: 1
    functionLinenumber: 142
    functionLinenumberEnd: 172
    functionName: dnsdist::webserver::getConfig
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc
    functionUses: 0
    functionsReached:
    - getMaxConcurrentConnections
    - d_webServerACL::toString
    - ostringstream::str
    - dnsdist::configuration::getCurrentRuntimeConfiguration
    linkageType: ''
    returnType: std::string
    signature: std::string getConfig()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: registerConnection
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:180,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:181,1
    - Dst: withValues
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:183,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:183,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 3
    argNames:
    - ' client'
    - socketDesc
    - ' logger'
    argTypes:
    - ComboAddress
    - int
    - Logr::Logger
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 184
      start: 177
    functionDepth: 0
    functionLinenumber: 177
    functionLinenumberEnd: 184
    functionName: dnsdist::webserver::WebClientConnection::WebClientConnection
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc
    functionUses: 0
    functionsReached:
    - Logging::Loggable
    - registerConnection
    - withValues
    - std::runtime_error
    linkageType: ''
    returnType: void
    signature: void WebClientConnection(const ComboAddress& client, int socketDesc,
      const Logr::Logger& logger)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:186,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:186,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - WebClientConnection
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 188
      start: 185
    functionDepth: 0
    functionLinenumber: 185
    functionLinenumberEnd: 188
    functionName: dnsdist::webserver::WebClientConnection::WebClientConnection
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void WebClientConnection(WebClientConnection&& rhs) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 189
      start: 189
    functionDepth: 0
    functionLinenumber: 189
    functionLinenumberEnd: 189
    functionName: dnsdist::webserver::WebClientConnection::WebClientConnection
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void WebClientConnection(const WebClientConnection&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 190
      start: 190
    functionDepth: 0
    functionLinenumber: 190
    functionLinenumberEnd: 190
    functionName: '& operator=(const WebClientConnection&)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: WebClientConnection
    signature: WebClientConnection & operator=(const WebClientConnection&)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:194,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:195,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - WebClientConnection
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 197
      start: 191
    functionDepth: 0
    functionLinenumber: 191
    functionLinenumberEnd: 197
    functionName: '& operator=(WebClientConnection&& rhs) noexcept'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: WebClientConnection
    signature: WebClientConnection & operator=(WebClientConnection&& rhs) noexcept
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: getHandle
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:201,1
    - Dst: releaseConnection
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:202,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 204
      start: 199
    functionDepth: 0
    functionLinenumber: 199
    functionLinenumberEnd: 204
    functionName: ~WebClientConnection()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc
    functionUses: 0
    functionsReached:
    - getHandle
    - releaseConnection
    linkageType: ''
    returnType: void
    signature: void ~WebClientConnection()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 209
      start: 206
    functionDepth: 0
    functionLinenumber: 206
    functionLinenumberEnd: 209
    functionName: '& getSocket() const'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Socket
    signature: Socket & getSocket() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 214
      start: 211
    functionDepth: 0
    functionLinenumber: 211
    functionLinenumberEnd: 214
    functionName: '& getClient() const'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: ComboAddress
    signature: ComboAddress & getClient() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 219
      start: 216
    functionDepth: 0
    functionLinenumber: 216
    functionLinenumberEnd: 219
    functionName: '& getLogger() const'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Logr::Logger
    signature: Logr::Logger & getLogger() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::webserver::addMetricDefinition
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:230,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ' def'
    argTypes:
    - dnsdist::prometheus::PrometheusMetricDefinition
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 234
      start: 227
    functionDepth: 0
    functionLinenumber: 227
    functionLinenumberEnd: 234
    functionName: dnsdist::webserver::addMetricDefinition
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc
    functionUses: 3
    functionsReached:
    - dnsdist::webserver::addMetricDefinition
    linkageType: ''
    returnType: bool
    signature: bool addMetricDefinition([[maybe_unused]] const dnsdist::prometheus::PrometheusMetricDefinition&
      def)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:239,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:241,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:241,1
    - Dst: info
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:242,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:242,1
    - Dst: d_apiConfigDirectory::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:246,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:247,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:247,1
    - Dst: info
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:248,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:248,1
    - Dst: string::c_str
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:254,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:257,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:257,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:257,1
    - Dst: error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:258,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:258,1
    - Dst: ofstream::close
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:264,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 3
    argNames:
    - ' filebasename'
    - ' content'
    - ' logger'
    argTypes:
    - string
    - string
    - Logr::Logger
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 266
      start: 237
    functionDepth: 1
    functionLinenumber: 237
    functionLinenumberEnd: 266
    functionName: dnsdist::webserver::apiWriteConfigFile
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc
    functionUses: 0
    functionsReached:
    - errlog
    - string::c_str
    - SLOG
    - dnsdist::configuration::getCurrentRuntimeConfiguration
    - Logging::Loggable
    - stringerror
    - VERBOSESLOG
    - info
    - warnlog
    - infolog
    - ofstream::close
    - error
    - d_apiConfigDirectory::empty
    linkageType: ''
    returnType: bool
    signature: bool apiWriteConfigFile(const string& filebasename, const string& content,
      const Logr::Logger& logger)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: toStringVector
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:270,1
    - Dst: string::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:274,1
    - Dst: dnsdist::webserver::apiWriteConfigFile
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:281,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - ' nmg'
    - ' logger'
    argTypes:
    - NetmaskGroup
    - Logr::Logger
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 282
      start: 268
    functionDepth: 0
    functionLinenumber: 268
    functionLinenumberEnd: 282
    functionName: dnsdist::webserver::apiSaveACL
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc
    functionUses: 0
    functionsReached:
    - toStringVector
    - dnsdist::webserver::apiWriteConfigFile
    - string::empty
    linkageType: ''
    returnType: void
    signature: void apiSaveACL(const NetmaskGroup& nmg, const Logr::Logger& logger)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: headers::find
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:291,1
    - Dst: headers::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:292,1
    - Dst: matches
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:293,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - ' req'
    - ' apiKey'
    argTypes:
    - YaHTTP::Request
    - std::shared_ptr<const CredentialsHolder>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 297
      start: 285
    functionDepth: 0
    functionLinenumber: 285
    functionLinenumberEnd: 297
    functionName: dnsdist::webserver::checkAPIKey
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc
    functionUses: 0
    functionsReached:
    - headers::find
    - matches
    - headers::end
    linkageType: ''
    returnType: bool
    signature: bool checkAPIKey(const YaHTTP::Request& req, const std::shared_ptr<const
      CredentialsHolder>& apiKey)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: headers::find
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:307,1
    - Dst: headers::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:309,1
    - Dst: toLower
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:309,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:309,1
    - Dst: auto::second::substr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:310,1
    - Dst: std::array::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:310,1
    - Dst: B64Decode
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:313,1
    - Dst: stringtok
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:316,1
    - Dst: vector::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:318,1
    - Dst: matches
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:320,1
    - Dst: vector::at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:320,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 3
    argNames:
    - ' req'
    - ' password'
    - dashboardRequiresAuthentication
    argTypes:
    - YaHTTP::Request
    - std::shared_ptr<const CredentialsHolder>
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 327
      start: 299
    functionDepth: 0
    functionLinenumber: 299
    functionLinenumberEnd: 327
    functionName: dnsdist::webserver::checkWebPassword
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc
    functionUses: 0
    functionsReached:
    - matches
    - stringtok
    - auto::second::substr
    - vector::at
    - toLower
    - B64Decode
    - headers::end
    - headers::find
    - vector::size
    - std::array::data
    - std::array::size
    linkageType: ''
    returnType: bool
    signature: bool checkWebPassword(const YaHTTP::Request& req, const std::shared_ptr<const
      CredentialsHolder>& password, bool dashboardRequiresAuthentication)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: url::path::find
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:331,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' req'
    argTypes:
    - YaHTTP::Request
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 332
      start: 329
    functionDepth: 0
    functionLinenumber: 329
    functionLinenumberEnd: 332
    functionName: dnsdist::webserver::isAnAPIRequest
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc
    functionUses: 0
    functionsReached:
    - url::path::find
    linkageType: ''
    returnType: bool
    signature: bool isAnAPIRequest(const YaHTTP::Request& req)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' req'
    argTypes:
    - YaHTTP::Request
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 337
      start: 334
    functionDepth: 0
    functionLinenumber: 334
    functionLinenumberEnd: 337
    functionName: dnsdist::webserver::isAnAPIRequestAllowedWithWebAuth
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool isAnAPIRequestAllowedWithWebAuth(const YaHTTP::Request& req)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - ' req'
    argTypes:
    - YaHTTP::Request
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 342
      start: 339
    functionDepth: 0
    functionLinenumber: 339
    functionLinenumberEnd: 342
    functionName: dnsdist::webserver::isAStatsRequest
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool isAStatsRequest(const YaHTTP::Request& req)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:346,1
    - Dst: dnsdist::webserver::isAStatsRequest
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:348,1
    - Dst: dnsdist::webserver::checkAPIKey
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:351,1
    - Dst: dnsdist::webserver::checkWebPassword
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:351,1
    - Dst: dnsdist::webserver::isAnAPIRequest
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:356,1
    - Dst: dnsdist::webserver::checkAPIKey
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:358,1
    - Dst: dnsdist::webserver::isAnAPIRequestAllowedWithWebAuth
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:362,1
    - Dst: dnsdist::webserver::checkWebPassword
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:362,1
    - Dst: dnsdist::webserver::checkWebPassword
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:365,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 14
    argCount: 1
    argNames:
    - ' req'
    argTypes:
    - YaHTTP::Request
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 366
      start: 344
    functionDepth: 1
    functionLinenumber: 344
    functionLinenumberEnd: 366
    functionName: dnsdist::webserver::handleAuthorization
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc
    functionUses: 0
    functionsReached:
    - dnsdist::webserver::isAnAPIRequestAllowedWithWebAuth
    - dnsdist::configuration::getCurrentRuntimeConfiguration
    - dnsdist::webserver::isAnAPIRequest
    - dnsdist::webserver::checkAPIKey
    - dnsdist::webserver::isAStatsRequest
    - dnsdist::webserver::checkWebPassword
    linkageType: ''
    returnType: bool
    signature: bool handleAuthorization(const YaHTTP::Request& req)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:373,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 1
    argNames:
    - ' req'
    argTypes:
    - YaHTTP::Request
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 386
      start: 368
    functionDepth: 1
    functionLinenumber: 368
    functionLinenumberEnd: 386
    functionName: dnsdist::webserver::isMethodAllowed
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc
    functionUses: 0
    functionsReached:
    - dnsdist::configuration::getCurrentRuntimeConfiguration
    linkageType: ''
    returnType: bool
    signature: bool isMethodAllowed(const YaHTTP::Request& req)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:390,1
    - Dst: d_webServerACL::match
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:391,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' remote'
    argTypes:
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 392
      start: 388
    functionDepth: 1
    functionLinenumber: 388
    functionLinenumberEnd: 392
    functionName: dnsdist::webserver::isClientAllowedByACL
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc
    functionUses: 0
    functionsReached:
    - dnsdist::configuration::getCurrentRuntimeConfiguration
    - d_webServerACL::match
    linkageType: ''
    returnType: bool
    signature: bool isClientAllowedByACL(const ComboAddress& remote)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: headers::find
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:396,1
    - Dst: headers::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:397,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:398,1
    - Dst: dnsdist::webserver::isAStatsRequest
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:414,1
    - Dst: dnsdist::webserver::isAnAPIRequestAllowedWithWebAuth
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:414,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 2
    argNames:
    - ' req'
    - ' resp'
    argTypes:
    - YaHTTP::Request
    - YaHTTP::Response
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 419
      start: 394
    functionDepth: 1
    functionLinenumber: 394
    functionLinenumberEnd: 419
    functionName: dnsdist::webserver::handleCORS
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc
    functionUses: 0
    functionsReached:
    - dnsdist::webserver::isAnAPIRequestAllowedWithWebAuth
    - dnsdist::configuration::getCurrentRuntimeConfiguration
    - headers::end
    - dnsdist::webserver::isAStatsRequest
    - headers::find
    linkageType: ''
    returnType: void
    signature: void handleCORS(const YaHTTP::Request& req, YaHTTP::Response& resp)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: find
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:433,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:434,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 2
    argNames:
    - ' resp'
    - ' customHeaders'
    argTypes:
    - YaHTTP::Response
    - std::optional<std::unordered_map<std::string, std::string>>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 440
      start: 421
    functionDepth: 0
    functionLinenumber: 421
    functionLinenumberEnd: 440
    functionName: dnsdist::webserver::addSecurityHeaders
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc
    functionUses: 0
    functionsReached:
    - end
    - find
    linkageType: ''
    returnType: void
    signature: void addSecurityHeaders(YaHTTP::Response& resp, const std::optional<std::unordered_map<std::string,
      std::string>>& customHeaders)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: second::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:449,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - ' resp'
    - ' customHeaders'
    argTypes:
    - YaHTTP::Response
    - std::optional<std::unordered_map<std::string, std::string>>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 453
      start: 442
    functionDepth: 0
    functionLinenumber: 442
    functionLinenumberEnd: 453
    functionName: dnsdist::webserver::addCustomHeaders
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc
    functionUses: 0
    functionsReached:
    - second::empty
    linkageType: ''
    returnType: void
    signature: void addCustomHeaders(YaHTTP::Response& resp, const std::optional<std::unordered_map<std::string,
      std::string>>& customHeaders)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Json::array::reserve
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:461,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:461,1
    - Dst: Json::array::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:463,1
    - Dst: static_cast<double>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:465,1
    - Dst: libssl_tls_version_to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:466,1
    - Dst: static_cast<double>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:468,1
    - Dst: d_rule::toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:469,1
    - Dst: d_action::toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:470,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ' someResponseRules'
    argTypes:
    - std::vector<T>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 474
      start: 456
    functionDepth: 0
    functionLinenumber: 456
    functionLinenumberEnd: 474
    functionName: dnsdist::webserver::someResponseRulesToJson
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc
    functionUses: 0
    functionsReached:
    - static_cast<double>
    - d_rule::toString
    - Json::array::reserve
    - size
    - d_action::toString
    - Json::array::emplace_back
    - libssl_tls_version_to_string
    linkageType: ''
    returnType: json11::Json::array
    signature: json11::Json::array someResponseRulesToJson(const std::vector<T>& someResponseRules)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: d_name::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:481,1
    - Dst: libssl_tls_version_to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:481,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 3
    argNames:
    - ' output'
    - ' rules'
    - instanceLabelWithComma
    argTypes:
    - std::ostringstream
    - std::vector<T>
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 484
      start: 478
    functionDepth: 0
    functionLinenumber: 478
    functionLinenumberEnd: 484
    functionName: dnsdist::webserver::addRulesToPrometheusOutput
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc
    functionUses: 0
    functionsReached:
    - d_name::empty
    - libssl_tls_version_to_string
    linkageType: ''
    returnType: void
    signature: void addRulesToPrometheusOutput(std::ostringstream& output, const std::vector<T>&
      rules, const std::string instanceLabelWithComma)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:489,1
    - Dst: substr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:489,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:489,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 15
    argCount: 4
    argNames:
    - ' output'
    - ' container'
    - ' metricName'
    - ' label'
    argTypes:
    - std::ostringstream
    - T
    - std::string
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 506
      start: 487
    functionDepth: 0
    functionLinenumber: 487
    functionLinenumberEnd: 506
    functionName: dnsdist::webserver::addHistogramToPrometheusOutput
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc
    functionUses: 0
    functionsReached:
    - empty
    - substr
    - size
    linkageType: ''
    returnType: void
    signature: void addHistogramToPrometheusOutput(std::ostringstream& output, const
      T& container, const std::string& metricName, const std::string& label)
  - BBCount: 26
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::webserver::handleCORS
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:510,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:516,1
    - Dst: entries::read_lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:521,1
    - Dst: std::set::count
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:526,1
    - Dst: getMetricDetails
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:531,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:532,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:532,1
    - Dst: info
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:533,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:533,1
    - Dst: getPrometheusStringMetricType
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:537,1
    - Dst: std::string::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:538,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:539,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:539,1
    - Dst: info
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:540,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:540,1
    - Dst: MetricDefinition::customName::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:546,1
    - Dst: boost::replace_all_copy
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:547,1
    - Dst: d_labels::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:553,1
    - Dst: std::string::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:553,1
    - Dst: d_labels::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:555,1
    - Dst: std::string::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:557,1
    - Dst: std::string::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:561,1
    - Dst: std::string::substr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:569,1
    - Dst: std::string::find
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:569,1
    - Dst: std::unordered_set::count
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:570,1
    - Dst: std::unordered_set::insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:571,1
    - Dst: std::get_if<pdns::stat_t*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:577,1
    - Dst: load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:578,1
    - Dst: std::get_if<pdns::stat_double_t*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:580,1
    - Dst: load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:581,1
    - Dst: std::get_if<dnsdist::metrics::Stats::statfunction_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:583,1
    - Dst: std::string::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:593,1
    - Dst: dnsdist::webserver::addHistogramToPrometheusOutput
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:600,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:673,1
    - Dst: getName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:676,1
    - Dst: d_config::remote::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:677,1
    - Dst: getName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:680,1
    - Dst: std::replace
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:683,1
    - Dst: string::begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:683,1
    - Dst: string::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:683,1
    - Dst: sqlstr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:685,1
    - Dst: boost::format
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:685,1
    - Dst: d_config::remote::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:686,1
    - Dst: std::string::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:686,1
    - Dst: isUp
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:688,1
    - Dst: queries::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:689,1
    - Dst: responses::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:690,1
    - Dst: nonCompliantResponses::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:691,1
    - Dst: reuseds::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:692,1
    - Dst: isUp
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:693,1
    - Dst: sendErrors::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:697,1
    - Dst: outstanding::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:698,1
    - Dst: dnsdist::webserver::addHistogramToPrometheusOutput
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:724,1
    - Dst: dnsdist::getFrontends
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:768,1
    - Dst: local::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:773,1
    - Dst: getType
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:774,1
    - Dst: std::map::emplace
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:779,1
    - Dst: sqlstr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:784,1
    - Dst: boost::format
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:784,1
    - Dst: std::string::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:785,1
    - Dst: queries::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:787,1
    - Dst: nonCompliantQueries::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:788,1
    - Dst: responses::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:789,1
    - Dst: isTCP
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:790,1
    - Dst: tcpDiedReadingQuery::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:791,1
    - Dst: tcpDiedSendingResponse::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:792,1
    - Dst: tcpGaveUp::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:793,1
    - Dst: tcpClientTimeouts::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:794,1
    - Dst: tcpDownstreamTimeouts::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:795,1
    - Dst: tcpCurrentConnections::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:796,1
    - Dst: tcpMaxConcurrentConnections::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:797,1
    - Dst: tcpAvgQueriesPerConnection::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:798,1
    - Dst: tcpAvgConnectionDuration::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:799,1
    - Dst: hasTLS
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:801,1
    - Dst: tlsNewSessions::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:802,1
    - Dst: tlsResumptions::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:803,1
    - Dst: tlsUnknownTicketKey::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:804,1
    - Dst: tlsInactiveTicketKey::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:805,1
    - Dst: std::string::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:807,1
    - Dst: tls10queries::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:807,1
    - Dst: std::string::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:808,1
    - Dst: tls11queries::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:808,1
    - Dst: std::string::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:809,1
    - Dst: tls12queries::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:809,1
    - Dst: std::string::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:810,1
    - Dst: tls13queries::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:810,1
    - Dst: std::string::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:811,1
    - Dst: tlsUnknownqueries::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:811,1
    - Dst: std::string::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:822,1
    - Dst: std::string::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:823,1
    - Dst: std::string::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:824,1
    - Dst: std::string::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:825,1
    - Dst: std::string::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:826,1
    - Dst: std::string::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:827,1
    - Dst: std::string::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:828,1
    - Dst: std::string::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:829,1
    - Dst: dnsdist::getDoHFrontends
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:855,1
    - Dst: d_tlsContext::d_addr::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:856,1
    - Dst: std::map::emplace
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:858,1
    - Dst: sqlstr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:863,1
    - Dst: boost::format
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:863,1
    - Dst: std::string::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:863,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:921,1
    - Dst: string::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:924,1
    - Dst: std::string::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:927,1
    - Dst: countServers
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:929,1
    - Dst: countServers
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:930,1
    - Dst: getMaxEntries
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:935,1
    - Dst: getEntriesCount
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:936,1
    - Dst: getHits
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:937,1
    - Dst: getMisses
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:938,1
    - Dst: getDeferredInserts
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:939,1
    - Dst: getDeferredLookups
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:940,1
    - Dst: getLookupCollisions
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:941,1
    - Dst: getInsertCollisions
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:942,1
    - Dst: getTTLTooShorts
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:943,1
    - Dst: getCleanupCount
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:944,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:950,1
    - Dst: dnsdist::rules::getRuleChainDescriptions
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:951,1
    - Dst: dnsdist::rules::getRuleChain
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:952,1
    - Dst: dnsdist::webserver::addRulesToPrometheusOutput
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:953,1
    - Dst: dnsdist::rules::getResponseRuleChainDescriptions
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:955,1
    - Dst: dnsdist::rules::getResponseRuleChain
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:956,1
    - Dst: dnsdist::webserver::addRulesToPrometheusOutput
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:957,1
    - Dst: DynBlockMaintenance::getHitsForTopNetmasks
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:963,1
    - Dst: first::toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:966,1
    - Dst: std::string::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:966,1
    - Dst: DynBlockMaintenance::getHitsForTopSuffixes
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:972,1
    - Dst: first::toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:975,1
    - Dst: std::string::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:975,1
    - Dst: std::string::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:982,1
    - Dst: std::ostringstream::str
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:984,1
    CyclomaticComplexity: 42
    EdgeCount: 42
    ICount: 358
    argCount: 3
    argNames:
    - ' req'
    - ' resp'
    - ' logger'
    argTypes:
    - YaHTTP::Request
    - YaHTTP::Response
    - Logr::Logger
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 987
      start: 508
    functionDepth: 3
    functionLinenumber: 508
    functionLinenumberEnd: 987
    functionName: dnsdist::webserver::handlePrometheus
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc
    functionUses: 0
    functionsReached:
    - std::unordered_set::insert
    - outstanding::load
    - queries::load
    - nonCompliantQueries::load
    - getHits
    - sendErrors::load
    - isTCP
    - dnsdist::rules::getResponseRuleChainDescriptions
    - std::string::substr
    - std::map::emplace
    - tcpClientTimeouts::load
    - std::unordered_set::count
    - dnsdist::webserver::addRulesToPrometheusOutput
    - getMisses
    - VERBOSESLOG
    - getMetricDetails
    - std::set::count
    - infolog
    - string::end
    - tlsUnknownTicketKey::load
    - string::empty
    - std::ostringstream::str
    - dnsdist::rules::getRuleChainDescriptions
    - getCleanupCount
    - dnsdist::rules::getResponseRuleChain
    - getTTLTooShorts
    - tcpCurrentConnections::load
    - getInsertCollisions
    - tls12queries::load
    - countServers
    - sqlstr
    - hasTLS
    - tcpGaveUp::load
    - tlsUnknownqueries::load
    - getMaxEntries
    - tlsNewSessions::load
    - d_config::remote::toStringWithPort
    - dnsdist::webserver::handleCORS
    - nonCompliantResponses::load
    - tcpDiedSendingResponse::load
    - std::replace
    - boost::replace_all_copy
    - std::get_if<dnsdist::metrics::Stats::statfunction_t>
    - local::toStringWithPort
    - std::string::find
    - first::toString
    - getDeferredLookups
    - std::string::empty
    - tls10queries::load
    - getDeferredInserts
    - getType
    - dnsdist::configuration::getCurrentRuntimeConfiguration
    - dnsdist::rules::getRuleChain
    - std::get_if<pdns::stat_double_t*>
    - getPrometheusStringMetricType
    - DynBlockMaintenance::getHitsForTopNetmasks
    - d_tlsContext::d_addr::toStringWithPort
    - dnsdist::getFrontends
    - std::get_if<pdns::stat_t*>
    - tls11queries::load
    - tlsInactiveTicketKey::load
    - responses::load
    - dnsdist::webserver::addHistogramToPrometheusOutput
    - dnsdist::getDoHFrontends
    - tcpAvgQueriesPerConnection::load
    - tcpAvgConnectionDuration::load
    - tlsResumptions::load
    - tcpDiedReadingQuery::load
    - getName
    - Logging::Loggable
    - tcpDownstreamTimeouts::load
    - tls13queries::load
    - MetricDefinition::customName::empty
    - getEntriesCount
    - entries::read_lock
    - string::begin
    - load
    - DynBlockMaintenance::getHitsForTopSuffixes
    - isUp
    - tcpMaxConcurrentConnections::load
    - d_labels::empty
    - reuseds::load
    - info
    - getLookupCollisions
    - boost::format
    linkageType: ''
    returnType: void
    signature: void handlePrometheus(const YaHTTP::Request& req, YaHTTP::Response&
      resp, const Logr::Logger& logger)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: entries::read_lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:994,1
    - Dst: d_labels::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:999,1
    - Dst: std::get_if<pdns::stat_t*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1002,1
    - Dst: emplace
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1003,1
    - Dst: load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1003,1
    - Dst: std::get_if<pdns::stat_double_t*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1005,1
    - Dst: emplace
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1006,1
    - Dst: load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1006,1
    - Dst: std::get_if<dnsdist::metrics::Stats::statfunction_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1008,1
    - Dst: emplace
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1009,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 17
    argCount: 1
    argNames:
    - ' obj'
    argTypes:
    - Json::object
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1012
      start: 992
    functionDepth: 0
    functionLinenumber: 992
    functionLinenumberEnd: 1012
    functionName: dnsdist::webserver::addStatsToJSONObject
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc
    functionUses: 0
    functionsReached:
    - load
    - d_labels::empty
    - std::get_if<pdns::stat_double_t*>
    - std::get_if<dnsdist::metrics::Stats::statfunction_t>
    - std::get_if<pdns::stat_t*>
    - entries::read_lock
    - emplace
    linkageType: ''
    returnType: void
    signature: void addStatsToJSONObject(Json::object& obj)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::webserver::handleCORS
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1018,1
    - Dst: getvars::count
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1021,1
    - Dst: getvars::at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1026,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1027,1
    - Dst: d_lbPolicy::getName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1035,1
    - Dst: dnsdist::webserver::addStatsToJSONObject
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1037,1
    - Dst: Json::dump
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1040,1
    - Dst: gettime
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1047,1
    - Dst: dnsdist::DynamicBlocks::getClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1048,1
    - Dst: getHits
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1055,1
    - Dst: first::getNetwork
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1055,1
    - Dst: static_cast<double>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1059,1
    - Dst: static_cast<double>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1060,1
    - Dst: DNSAction::typeToString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1061,1
    - Dst: Json::object::emplace
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1064,1
    - Dst: first::toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1064,1
    - Dst: dnsdist::DynamicBlocks::getSuffixDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1067,1
    - Dst: visit
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1068,1
    - Dst: d_value::domain::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1073,1
    - Dst: d_value::domain::toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1074,1
    - Dst: static_cast<double>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1078,1
    - Dst: static_cast<double>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1079,1
    - Dst: DNSAction::typeToString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1080,1
    - Dst: Json::object::emplace
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1082,1
    - Dst: Json::dump
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1086,1
    - Dst: gettime
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1093,1
    - Dst: getAddrStats
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1095,1
    - Dst: std::get<2>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1098,1
    - Dst: std::get<1>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1099,1
    - Dst: Json::object::emplace
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1100,1
    - Dst: std::get<0>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1100,1
    - Dst: dnsdist::DynamicBlocks::getClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1104,1
    - Dst: getHits
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1109,1
    - Dst: first::getNetwork
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1109,1
    - Dst: static_cast<double>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1112,1
    - Dst: static_cast<double>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1113,1
    - Dst: DNSAction::typeToString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1114,1
    - Dst: Json::object::emplace
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1117,1
    - Dst: first::toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1117,1
    - Dst: Json::dump
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1122,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 52
    argCount: 3
    argNames:
    - ' req'
    - ' resp'
    - ' logger'
    argTypes:
    - YaHTTP::Request
    - YaHTTP::Response
    - Logr::Logger
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1128
      start: 1015
    functionDepth: 2
    functionLinenumber: 1015
    functionLinenumberEnd: 1128
    functionName: dnsdist::webserver::handleJSONStats
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc
    functionUses: 0
    functionsReached:
    - dnsdist::webserver::handleCORS
    - DNSAction::typeToString
    - Json::dump
    - d_lbPolicy::getName
    - getHits
    - d_value::domain::toString
    - static_cast<double>
    - Json::object::emplace
    - dnsdist::DynamicBlocks::getSuffixDynamicRules
    - getvars::at
    - dnsdist::DynamicBlocks::getClientAddressDynamicRules
    - getAddrStats
    - first::toString
    - d_value::domain::empty
    - dnsdist::configuration::getCurrentRuntimeConfiguration
    - std::get<2>
    - getvars::count
    - visit
    - gettime
    - first::getNetwork
    - std::get<0>
    - std::get<1>
    - dnsdist::webserver::addStatsToJSONObject
    linkageType: ''
    returnType: void
    signature: void handleJSONStats(const YaHTTP::Request& req, YaHTTP::Response&
      resp, const Logr::Logger& logger)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: upStatus::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1141,1
    - Dst: Json::array::reserve
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1145,1
    - Dst: d_config::pools::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1145,1
    - Dst: Json::array::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1147,1
    - Dst: getName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1152,1
    - Dst: d_config::remote::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1153,1
    - Dst: getProtocol
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1155,1
    - Dst: static_cast<double>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1157,1
    - Dst: getQPSLimit
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1157,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1162,1
    - Dst: emplace_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1198,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1198,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 3
    argNames:
    - ' servers'
    - identifier
    - ' backend'
    argTypes:
    - Json::array
    - int
    - std::shared_ptr<DownstreamState>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1199
      start: 1131
    functionDepth: 1
    functionLinenumber: 1131
    functionLinenumberEnd: 1199
    functionName: dnsdist::webserver::addServerToJSON
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc
    functionUses: 0
    functionsReached:
    - getQPSLimit
    - std::move
    - static_cast<double>
    - getName
    - getProtocol
    - upStatus::load
    - Json::array::reserve
    - d_config::remote::toStringWithPort
    - Json::array::emplace_back
    - emplace_back
    - d_config::pools::size
    linkageType: ''
    returnType: void
    signature: void addServerToJSON(Json::array& servers, int identifier, const std::shared_ptr<DownstreamState>&
      backend)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::webserver::handleCORS
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1204,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1211,1
    - Dst: Json::array::reserve
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1212,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1212,1
    - Dst: dnsdist::webserver::addServerToJSON
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1214,1
    - Dst: Json::array::reserve
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1220,1
    - Dst: dnsdist::getFrontends
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1220,1
    - Dst: dnsdist::getFrontends
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1221,1
    - Dst: local::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1227,1
    - Dst: getType
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1230,1
    - Dst: queries::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1231,1
    - Dst: nonCompliantQueries::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1232,1
    - Dst: responses::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1233,1
    - Dst: tcpDiedReadingQuery::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1234,1
    - Dst: tcpDiedSendingResponse::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1235,1
    - Dst: tcpGaveUp::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1236,1
    - Dst: Json::array::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1270,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1270,1
    - Dst: dnsdist::getDoHFrontends
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1276,1
    - Dst: Json::array::reserve
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1277,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1277,1
    - Dst: Json::array::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1280,1
    - Dst: d_tlsContext::d_addr::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1282,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1311,1
    - Dst: Json::array::reserve
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1312,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1312,1
    - Dst: second::countServers
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1318,1
    - Dst: getMaxEntries
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1319,1
    - Dst: getEntriesCount
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1320,1
    - Dst: getHits
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1321,1
    - Dst: getMisses
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1322,1
    - Dst: getDeferredInserts
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1323,1
    - Dst: getDeferredLookups
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1324,1
    - Dst: getLookupCollisions
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1325,1
    - Dst: getInsertCollisions
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1326,1
    - Dst: getTTLTooShorts
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1327,1
    - Dst: getCleanupCount
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1328,1
    - Dst: Json::array::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1329,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1329,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1335,1
    - Dst: toStringVector
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1335,1
    - Dst: string::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1338,1
    - Dst: dnsdist::getFrontends
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1348,1
    - Dst: std::set::insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1349,1
    - Dst: local::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1349,1
    - Dst: string::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1352,1
    - Dst: dnsdist::webserver::addStatsToJSONObject
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1360,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1364,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1365,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1366,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1367,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1368,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1369,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1370,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1374,1
    - Dst: dnsdist::rules::getRuleChainDescriptions
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1375,1
    - Dst: dnsdist::rules::getRuleChain
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1377,1
    - Dst: Json::array::reserve
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1379,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1379,1
    - Dst: libssl_tls_version_to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1384,1
    - Dst: d_rule::toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1387,1
    - Dst: d_action::toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1388,1
    - Dst: d_action::getStats
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1389,1
    - Dst: Json::array::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1390,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1390,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1392,1
    - Dst: dnsdist::rules::getResponseRuleChainDescriptions
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1395,1
    - Dst: dnsdist::rules::getResponseRuleChain
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1396,1
    - Dst: dnsdist::webserver::someResponseRulesToJson
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1397,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1398,1
    - Dst: Json
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1402,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 66
    argCount: 3
    argNames:
    - ' req'
    - ' resp'
    - ' logger'
    argTypes:
    - YaHTTP::Request
    - YaHTTP::Response
    - Logr::Logger
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1403
      start: 1201
    functionDepth: 3
    functionLinenumber: 1201
    functionLinenumberEnd: 1403
    functionName: dnsdist::webserver::handleStats
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc
    functionUses: 0
    functionsReached:
    - getMaxEntries
    - dnsdist::getDoHFrontends
    - d_rule::toString
    - queries::load
    - tcpDiedSendingResponse::load
    - dnsdist::webserver::handleCORS
    - libssl_tls_version_to_string
    - second::countServers
    - nonCompliantQueries::load
    - auto::size
    - tcpDiedReadingQuery::load
    - getHits
    - dnsdist::webserver::someResponseRulesToJson
    - string::empty
    - dnsdist::rules::getResponseRuleChainDescriptions
    - Json::array::reserve
    - size
    - dnsdist::rules::getRuleChainDescriptions
    - local::toStringWithPort
    - getCleanupCount
    - dnsdist::rules::getResponseRuleChain
    - getEntriesCount
    - getDeferredLookups
    - std::set::insert
    - getDeferredInserts
    - getType
    - getMisses
    - dnsdist::configuration::getCurrentRuntimeConfiguration
    - dnsdist::rules::getRuleChain
    - Json::array::emplace_back
    - Json
    - getTTLTooShorts
    - std::move
    - d_tlsContext::d_addr::toStringWithPort
    - getInsertCollisions
    - toStringVector
    - dnsdist::webserver::addServerToJSON
    - getLookupCollisions
    - dnsdist::getFrontends
    - d_action::toString
    - dnsdist::webserver::addStatsToJSONObject
    - responses::load
    - tcpGaveUp::load
    - d_action::getStats
    linkageType: ''
    returnType: void
    signature: void handleStats(const YaHTTP::Request& req, YaHTTP::Response& resp,
      const Logr::Logger& logger)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::webserver::handleCORS
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1408,1
    - Dst: getvars::find
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1409,1
    - Dst: getvars::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1410,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1418,1
    - Dst: find
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1419,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1420,1
    - Dst: countServers
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1429,1
    - Dst: getMaxEntries
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1430,1
    - Dst: getEntriesCount
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1431,1
    - Dst: getHits
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1432,1
    - Dst: getMisses
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1433,1
    - Dst: getDeferredInserts
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1434,1
    - Dst: getDeferredLookups
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1435,1
    - Dst: getLookupCollisions
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1436,1
    - Dst: getInsertCollisions
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1437,1
    - Dst: getTTLTooShorts
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1438,1
    - Dst: getCleanupCount
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1439,1
    - Dst: getServers
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1443,1
    - Dst: dnsdist::webserver::addServerToJSON
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1444,1
    - Dst: Json::dump
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1453,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 3
    argNames:
    - ' req'
    - ' resp'
    - ' logger'
    argTypes:
    - YaHTTP::Request
    - YaHTTP::Response
    - Logr::Logger
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1454
      start: 1405
    functionDepth: 2
    functionLinenumber: 1405
    functionLinenumberEnd: 1454
    functionName: dnsdist::webserver::handlePoolStats
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc
    functionUses: 0
    functionsReached:
    - getMaxEntries
    - dnsdist::webserver::handleCORS
    - Json::dump
    - getvars::end
    - find
    - getHits
    - getCleanupCount
    - getEntriesCount
    - getDeferredLookups
    - getDeferredInserts
    - getServers
    - getMisses
    - dnsdist::configuration::getCurrentRuntimeConfiguration
    - getTTLTooShorts
    - getInsertCollisions
    - getvars::find
    - dnsdist::webserver::addServerToJSON
    - countServers
    - end
    - getLookupCollisions
    linkageType: ''
    returnType: void
    signature: void handlePoolStats(const YaHTTP::Request& req, YaHTTP::Response&
      resp, const Logr::Logger& logger)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::webserver::handleCORS
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1459,1
    - Dst: entries::read_lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1464,1
    - Dst: std::get_if<pdns::stat_t*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1470,1
    - Dst: Json::array::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1471,1
    - Dst: load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1474,1
    - Dst: std::get_if<pdns::stat_double_t*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1476,1
    - Dst: Json::array::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1477,1
    - Dst: load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1480,1
    - Dst: std::get_if<dnsdist::metrics::Stats::statfunction_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1482,1
    - Dst: Json::array::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1483,1
    - Dst: Json::dump
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1491,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    argCount: 3
    argNames:
    - ' req'
    - ' resp'
    - ' logger'
    argTypes:
    - YaHTTP::Request
    - YaHTTP::Response
    - Logr::Logger
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1493
      start: 1456
    functionDepth: 2
    functionLinenumber: 1456
    functionLinenumberEnd: 1493
    functionName: dnsdist::webserver::handleStatsOnly
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc
    functionUses: 0
    functionsReached:
    - load
    - std::get_if<pdns::stat_double_t*>
    - std::get_if<dnsdist::metrics::Stats::statfunction_t>
    - dnsdist::webserver::handleCORS
    - Json::array::emplace_back
    - std::get_if<pdns::stat_t*>
    - Json::dump
    - entries::read_lock
    linkageType: ''
    returnType: void
    signature: void handleStatsOnly(const YaHTTP::Request& req, YaHTTP::Response&
      resp, const Logr::Logger& logger)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::webserver::handleCORS
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1499,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1503,1
    - Dst: dnsdist::configuration::getImmutableConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1504,1
    - Dst: d_ACL::toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1507,1
    - Dst: d_consoleServerAddress::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1509,1
    - Dst: static_cast<double>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1511,1
    - Dst: static_cast<double>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1512,1
    - Dst: static_cast<double>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1514,1
    - Dst: d_lbPolicy::getName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1515,1
    - Dst: static_cast<double>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1516,1
    - Dst: static_cast<double>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1517,1
    - Dst: static_cast<double>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1518,1
    - Dst: boost::get<bool>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1523,1
    - Dst: Json::array::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1524,1
    - Dst: boost::get<string>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1529,1
    - Dst: Json::array::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1530,1
    - Dst: boost::get<double>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1535,1
    - Dst: Json::array::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1536,1
    - Dst: Json::dump
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1543,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 3
    argNames:
    - ' req'
    - ' resp'
    - ' logger'
    argTypes:
    - YaHTTP::Request
    - YaHTTP::Response
    - Logr::Logger
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1545
      start: 1496
    functionDepth: 2
    functionLinenumber: 1496
    functionLinenumberEnd: 1545
    functionName: dnsdist::webserver::handleConfigDump
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc
    functionUses: 0
    functionsReached:
    - static_cast<double>
    - dnsdist::configuration::getCurrentRuntimeConfiguration
    - boost::get<string>
    - d_consoleServerAddress::toStringWithPort
    - Json::dump
    - dnsdist::webserver::handleCORS
    - boost::get<bool>
    - Json::array::emplace_back
    - dnsdist::configuration::getImmutableConfiguration
    - d_ACL::toString
    - boost::get<double>
    - d_lbPolicy::getName
    linkageType: ''
    returnType: void
    signature: void handleConfigDump(const YaHTTP::Request& req, YaHTTP::Response&
      resp, const Logr::Logger& logger)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::webserver::handleCORS
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1549,1
    - Dst: json11::Json::parse
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1556,1
    - Dst: Json::is_null
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1558,1
    - Dst: NetmaskGroup::NetmaskGroup
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1559,1
    - Dst: auto::is_array
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1561,1
    - Dst: auto::array_items
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1563,1
    - Dst: NetmaskGroup::addMask
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1565,1
    - Dst: string_value
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1565,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1574,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1574,1
    - Dst: NetmaskGroup::toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1574,1
    - Dst: info
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1575,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1575,1
    - Dst: dnsdist::configuration::updateRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1577,1
    - Dst: dnsdist::webserver::apiSaveACL
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1580,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1592,1
    - Dst: toStringVector
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1592,1
    - Dst: Json::dump
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1599,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 31
    argCount: 3
    argNames:
    - ' req'
    - ' resp'
    - ' logger'
    argTypes:
    - YaHTTP::Request
    - YaHTTP::Response
    - Logr::Logger
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1601
      start: 1547
    functionDepth: 2
    functionLinenumber: 1547
    functionLinenumberEnd: 1601
    functionName: dnsdist::webserver::handleAllowFrom
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc
    functionUses: 0
    functionsReached:
    - auto::array_items
    - toStringVector
    - SLOG
    - NetmaskGroup::NetmaskGroup
    - string_value
    - dnsdist::configuration::getCurrentRuntimeConfiguration
    - json11::Json::parse
    - Logging::Loggable
    - dnsdist::configuration::updateRuntimeConfiguration
    - infolog
    - dnsdist::webserver::handleCORS
    - info
    - Json::dump
    - auto::is_array
    - NetmaskGroup::addMask
    - NetmaskGroup::toString
    - dnsdist::webserver::apiSaveACL
    - Json::is_null
    linkageType: ''
    returnType: void
    signature: void handleAllowFrom(const YaHTTP::Request& req, YaHTTP::Response&
      resp, const Logr::Logger& logger)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::webserver::handleCORS
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1608,1
    - Dst: Json
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1618,1
    - Dst: getvars::find
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1622,1
    - Dst: getvars::find
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1623,1
    - Dst: getvars::find
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1624,1
    - Dst: getvars::find
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1625,1
    - Dst: getvars::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1626,1
    - Dst: getvars::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1626,1
    - Dst: Json
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1632,1
    - Dst: DNSName::DNSName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1636,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1639,1
    - Dst: Json
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1647,1
    - Dst: getvars::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1650,1
    - Dst: QType::chartocode
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1651,1
    - Dst: auto::second::c_str
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1651,1
    - Dst: getPool
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1656,1
    - Dst: Json
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1664,1
    - Dst: std::optional::getCache
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1668,1
    - Dst: Json
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1675,1
    - Dst: auto::expungeByName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1679,1
    - Dst: QType::getCode
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1679,1
    - Dst: getvars::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1679,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1683,1
    - Dst: Json
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1684,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 38
    argCount: 3
    argNames:
    - ' req'
    - ' resp'
    - ' logger'
    argTypes:
    - YaHTTP::Request
    - YaHTTP::Response
    - Logr::Logger
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1685
      start: 1605
    functionDepth: 2
    functionLinenumber: 1605
    functionLinenumberEnd: 1685
    functionName: dnsdist::webserver::handleCacheManagement
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc
    functionUses: 0
    functionsReached:
    - auto::expungeByName
    - std::to_string
    - getvars::find
    - auto::second::c_str
    - getPool
    - dnsdist::webserver::handleCORS
    - DNSName
    - std::optional::getCache
    - QType::chartocode
    - QType::getCode
    - DNSName::DNSName
    - Json
    - getvars::end
    linkageType: ''
    returnType: void
    signature: void handleCacheManagement(const YaHTTP::Request& req, YaHTTP::Response&
      resp, const Logr::Logger& logger)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<double>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1693,1
    - Dst: DiffTime
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1693,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1694,1
    - Dst: name::toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1695,1
    - Dst: requestor::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1696,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1697,1
    - Dst: protocol::toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1699,1
    - Dst: static_cast<bool>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1700,1
    - Dst: Json::object::emplace
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1705,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1705,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1705,1
    - Dst: macaddress::data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1705,1
    - Dst: macaddress::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1705,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1705,1
    - Dst: Json::object::emplace
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1709,1
    - Dst: static_cast<double>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1709,1
    - Dst: Json::object::emplace
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1710,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1710,1
    - Dst: Json::object::emplace
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1711,1
    - Dst: static_cast<bool>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1711,1
    - Dst: Json::object::emplace
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1712,1
    - Dst: static_cast<bool>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1712,1
    - Dst: Json::object::emplace
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1713,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1713,1
    - Dst: ds::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1714,1
    - Dst: Json::object::emplace
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1715,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1715,1
    - Dst: emplace_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1717,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1717,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 3
    argNames:
    - ' now'
    - ' list'
    - ' entry'
    argTypes:
    - struct timespec
    - Json::array
    - T
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1718
      start: 1689
    functionDepth: 0
    functionLinenumber: 1689
    functionLinenumberEnd: 1718
    functionName: dnsdist::webserver::addRingEntryToList
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc
    functionUses: 0
    functionsReached:
    - std::move
    - static_cast<bool>
    - static_cast<double>
    - name::toString
    - Json::object::emplace
    - ntohs
    - ds::toStringWithPort
    - macaddress::size
    - DiffTime
    - static_cast<uint8_t>
    - requestor::toStringWithPort
    - reinterpret_cast<const char*>
    - macaddress::data
    - emplace_back
    - std::string
    - protocol::toString
    - static_cast<int>
    linkageType: ''
    returnType: void
    signature: void addRingEntryToList(const struct timespec& now, Json::array& list,
      const T& entry)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::webserver::handleCORS
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1722,1
    - Dst: getvars::find
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1727,1
    - Dst: getvars::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1728,1
    - Dst: pdns::checked_stoi<size_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1730,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1733,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1733,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1733,1
    - Dst: error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1734,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1734,1
    - Dst: getvars::find
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1738,1
    - Dst: getvars::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1739,1
    - Dst: pdns::checked_stoi<size_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1741,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1744,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1744,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1744,1
    - Dst: error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1745,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1745,1
    - Dst: gettime
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1757,1
    - Dst: queryRing::lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1761,1
    - Dst: dnsdist::webserver::addRingEntryToList
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1763,1
    - Dst: respRing::lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1771,1
    - Dst: dnsdist::webserver::addRingEntryToList
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1773,1
    - Dst: Json::object::emplace
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1781,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1781,1
    - Dst: Json::object::emplace
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1782,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1782,1
    - Dst: Json::dump
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1784,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 39
    argCount: 3
    argNames:
    - ' req'
    - ' resp'
    - ' logger'
    argTypes:
    - YaHTTP::Request
    - YaHTTP::Response
    - Logr::Logger
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1786
      start: 1720
    functionDepth: 2
    functionLinenumber: 1720
    functionLinenumberEnd: 1786
    functionName: dnsdist::webserver::handleRings
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc
    functionUses: 0
    functionsReached:
    - std::move
    - queryRing::lock
    - Json::object::emplace
    - getvars::find
    - pdns::checked_stoi<size_t>
    - what
    - VERBOSESLOG
    - infolog
    - dnsdist::webserver::handleCORS
    - Json::dump
    - gettime
    - error
    - respRing::lock
    - getvars::end
    - dnsdist::webserver::addRingEntryToList
    linkageType: ''
    returnType: void
    signature: void handleRings(const YaHTTP::Request& req, YaHTTP::Response& resp,
      const Logr::Logger& logger)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: write_lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1798,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1799,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' endpoint'
    - handler
    argTypes:
    - std::string
    - LuaWebHandler
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1800
      start: 1796
    functionDepth: 0
    functionLinenumber: 1796
    functionLinenumberEnd: 1800
    functionName: dnsdist::webserver::registerWebHandler
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc
    functionUses: 1
    functionsReached:
    - std::move
    - write_lock
    linkageType: ''
    returnType: void
    signature: void registerWebHandler(const std::string& endpoint, LuaWebHandler
      handler)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: write_lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1804,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1805,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' endpoint'
    - handler
    argTypes:
    - std::string
    - BuiltinWebHandler
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1806
      start: 1802
    functionDepth: 0
    functionLinenumber: 1802
    functionLinenumberEnd: 1806
    functionName: dnsdist::webserver::registerWebHandler
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc
    functionUses: 1
    functionsReached:
    - std::move
    - write_lock
    linkageType: ''
    returnType: void
    signature: void registerWebHandler(const std::string& endpoint, BuiltinWebHandler
      handler)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: write_lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1810,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1811
      start: 1808
    functionDepth: 0
    functionLinenumber: 1808
    functionLinenumberEnd: 1811
    functionName: dnsdist::webserver::clearWebHandlers
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc
    functionUses: 0
    functionsReached:
    - write_lock
    linkageType: ''
    returnType: void
    signature: void clearWebHandlers()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: body::assign
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1820,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1820,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - ' req'
    - ' resp'
    - ' logger'
    argTypes:
    - YaHTTP::Request
    - YaHTTP::Response
    - Logr::Logger
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1823
      start: 1816
    functionDepth: 1
    functionLinenumber: 1816
    functionLinenumberEnd: 1823
    functionName: dnsdist::webserver::redirectToIndex
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc
    functionUses: 0
    functionsReached:
    - body::assign
    - at
    linkageType: ''
    returnType: void
    signature: void redirectToIndex([[maybe_unused]] const YaHTTP::Request& req, YaHTTP::Response&
      resp, const Logr::Logger& logger)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: url::path::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1828,1
    - Dst: std::string_view
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1832,1
    - Dst: find
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1833,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1834,1
    - Dst: body::assign
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1839,1
    - Dst: stringtok
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1842,1
    - Dst: std::unordered_map::find
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1850,1
    - Dst: vector::back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1850,1
    - Dst: std::unordered_map::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1851,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 3
    argNames:
    - ' req'
    - ' resp'
    - ' logger'
    argTypes:
    - YaHTTP::Request
    - YaHTTP::Response
    - Logr::Logger
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1857
      start: 1825
    functionDepth: 1
    functionLinenumber: 1825
    functionLinenumberEnd: 1857
    functionName: dnsdist::webserver::handleBuiltInFiles
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc
    functionUses: 0
    functionsReached:
    - vector::back
    - stringtok
    - std::unordered_map::find
    - std::string_view
    - end
    - url::path::empty
    - body::assign
    - std::unordered_map::end
    - find
    linkageType: ''
    returnType: void
    signature: void handleBuiltInFiles(const YaHTTP::Request& req, YaHTTP::Response&
      resp, const Logr::Logger& logger)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::webserver::registerWebHandler
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1863,1
    - Dst: dnsdist::webserver::registerWebHandler
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1866,1
    - Dst: dnsdist::webserver::registerWebHandler
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1868,1
    - Dst: dnsdist::webserver::registerWebHandler
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1869,1
    - Dst: dnsdist::webserver::registerWebHandler
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1870,1
    - Dst: dnsdist::webserver::registerWebHandler
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1871,1
    - Dst: dnsdist::webserver::registerWebHandler
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1873,1
    - Dst: dnsdist::webserver::registerWebHandler
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1874,1
    - Dst: dnsdist::webserver::registerWebHandler
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1877,1
    - Dst: dnsdist::webserver::registerWebHandler
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1880,1
    - Dst: dnsdist::webserver::registerWebHandler
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1883,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1886
      start: 1860
    functionDepth: 1
    functionLinenumber: 1860
    functionLinenumberEnd: 1886
    functionName: dnsdist::webserver::registerBuiltInWebHandlers
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc
    functionUses: 0
    functionsReached:
    - dnsdist::webserver::registerWebHandler
    linkageType: ''
    returnType: void
    signature: void registerBuiltInWebHandlers()
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: setThreadName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1890,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1892,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1892,1
    - Dst: getClient
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1892,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1893,1
    - Dst: YaHTTP::Request::Request
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1897,1
    - Dst: YaHTTP::AsyncRequestLoader::initialize
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1901,1
    - Dst: std::string::resize
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1904,1
    - Dst: read
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1905,1
    - Dst: getSocket
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1905,1
    - Dst: std::string::data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1905,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1905,1
    - Dst: std::string::resize
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1907,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1907,1
    - Dst: YaHTTP::AsyncRequestLoader::feed
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1908,1
    - Dst: YaHTTP::AsyncRequestLoader::finalize
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1915,1
    - Dst: YaHTTP::Request::getvars::erase
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1917,1
    - Dst: YaHTTP::Response::Response
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1919,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1923,1
    - Dst: dnsdist::webserver::addCustomHeaders
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1924,1
    - Dst: dnsdist::webserver::addSecurityHeaders
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1925,1
    - Dst: YaHTTP::Response::headers::erase
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1931,1
    - Dst: dnsdist::webserver::handleCORS
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1935,1
    - Dst: dnsdist::webserver::handleAuthorization
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1938,1
    - Dst: YaHTTP::Request::headers::find
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1939,1
    - Dst: YaHTTP::Request::headers::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1940,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1941,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1941,1
    - Dst: getClient
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1941,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1942,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1942,1
    - Dst: dnsdist::webserver::isMethodAllowed
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1948,1
    - Dst: read_lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1954,1
    - Dst: auto::find
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1955,1
    - Dst: auto::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1956,1
    - Dst: std::get_if<LuaWebHandler>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1962,1
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1963,1
    - Dst: std::get_if<BuiltinWebHandler>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1966,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1967,1
    - Dst: std::ostringstream::str
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1977,1
    - Dst: writen2
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1978,1
    - Dst: getSocket
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1978,1
    - Dst: string::c_str
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1978,1
    - Dst: string::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1978,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1981,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1981,1
    - Dst: getClient
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1981,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1981,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1982,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1982,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1985,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1985,1
    - Dst: getClient
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1985,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1985,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1986,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1986,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1989,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1989,1
    - Dst: getClient
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1989,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1990,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 62
    argCount: 1
    argNames:
    - ' conn'
    argTypes:
    - WebClientConnection
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1992
      start: 1888
    functionDepth: 2
    functionLinenumber: 1888
    functionLinenumberEnd: 1992
    functionName: dnsdist::webserver::connectionThread
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc
    functionUses: 0
    functionsReached:
    - dnsdist::webserver::isMethodAllowed
    - writen2
    - dnsdist::webserver::handleCORS
    - YaHTTP::Request::Request
    - std::string::size
    - static_cast<size_t>
    - string::size
    - Logging::Loggable
    - std::ostringstream::str
    - read_lock
    - YaHTTP::Request::headers::find
    - lock
    - YaHTTP::AsyncRequestLoader::initialize
    - getSocket
    - YaHTTP::AsyncRequestLoader::finalize
    - dnsdist::webserver::addSecurityHeaders
    - setThreadName
    - std::get_if<BuiltinWebHandler>
    - getLogger
    - YaHTTP::Request::headers::end
    - dnsdist::webserver::handleAuthorization
    - string::c_str
    - dnsdist::webserver::addCustomHeaders
    - YaHTTP::Response::headers::erase
    - dnsdist::configuration::getCurrentRuntimeConfiguration
    - YaHTTP::Request::getvars::erase
    - YaHTTP::Response::Response
    - VERBOSESLOG
    - std::string::data
    - std::string::resize
    - auto::find
    - getClient
    - read
    - what
    - infolog
    - YaHTTP::AsyncRequestLoader::feed
    - auto::end
    - std::get_if<LuaWebHandler>
    linkageType: ''
    returnType: void
    signature: void connectionThread(WebClientConnection&& conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::webserver::setMaxConcurrentConnections
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1996,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - max
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1997
      start: 1994
    functionDepth: 1
    functionLinenumber: 1994
    functionLinenumberEnd: 1997
    functionName: dnsdist::webserver::setMaxConcurrentConnections
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc
    functionUses: 1
    functionsReached:
    - dnsdist::webserver::setMaxConcurrentConnections
    linkageType: ''
    returnType: void
    signature: void setMaxConcurrentConnections(size_t max)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: setThreadName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:2001,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:2002,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:2002,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:2003,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:2003,1
    - Dst: ComboAddress::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:2003,1
    - Dst: auto::info
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:2004,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:2007,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:2009,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:2009,1
    - Dst: ComboAddress::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:2009,1
    - Dst: auto::info
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:2010,1
    - Dst: SAccept
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:2017,1
    - Dst: Socket::getHandle
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:2017,1
    - Dst: dnsdist::configuration::refreshLocalRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:2018,1
    - Dst: dnsdist::webserver::isClientAllowedByACL
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:2020,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:2021,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:2021,1
    - Dst: ComboAddress::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:2021,1
    - Dst: auto::info
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:2022,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:2022,1
    - Dst: close
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:2023,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:2028,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:2028,1
    - Dst: ComboAddress::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:2028,1
    - Dst: WebClientConnection::getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:2029,1
    - Dst: std::thread::detach
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:2032,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:2035,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:2035,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:2035,1
    - Dst: auto::error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:2036,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:2036,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 2
    argNames:
    - listeningAddress
    - sock
    argTypes:
    - ComboAddress
    - Socket
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2039
      start: 1999
    functionDepth: 2
    functionLinenumber: 1999
    functionLinenumberEnd: 2039
    functionName: dnsdist::webserver::WebserverThread
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc
    functionUses: 0
    functionsReached:
    - SLOG
    - Logging::Loggable
    - warnlog
    - auto::error
    - dnsdist::logging::getTopLogger
    - setThreadName
    - WebClientConnection::getLogger
    - auto::info
    - dnsdist::webserver::isClientAllowedByACL
    - dnsdist::configuration::getCurrentRuntimeConfiguration
    - VERBOSESLOG
    - SAccept
    - ComboAddress::toStringWithPort
    - Socket::getHandle
    - what
    - infolog
    - std::thread::detach
    - dnsdist::configuration::refreshLocalRuntimeConfiguration
    - close
    linkageType: ''
    returnType: void
    signature: void WebserverThread(ComboAddress listeningAddress, Socket sock)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:147,1
    - Dst: d_webServerACL::toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:149,1
    - Dst: getMaxConcurrentConnections
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:168,1
    - Dst: ostringstream::str
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:171,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 22
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 172
      start: 142
    functionDepth: 1
    functionLinenumber: 142
    functionLinenumberEnd: 172
    functionName: dnsdist::webserver::getConfig
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc
    functionUses: 0
    functionsReached:
    - getMaxConcurrentConnections
    - d_webServerACL::toString
    - ostringstream::str
    - dnsdist::configuration::getCurrentRuntimeConfiguration
    linkageType: ''
    returnType: std::string
    signature: std::string getConfig()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: registerConnection
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:180,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:181,1
    - Dst: withValues
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:183,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:183,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 3
    argNames:
    - ' client'
    - socketDesc
    - ' logger'
    argTypes:
    - ComboAddress
    - int
    - Logr::Logger
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 184
      start: 177
    functionDepth: 0
    functionLinenumber: 177
    functionLinenumberEnd: 184
    functionName: dnsdist::webserver::WebClientConnection::WebClientConnection
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc
    functionUses: 0
    functionsReached:
    - Logging::Loggable
    - registerConnection
    - withValues
    - std::runtime_error
    linkageType: ''
    returnType: void
    signature: void WebClientConnection(const ComboAddress& client, int socketDesc,
      const Logr::Logger& logger)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:186,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:186,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - WebClientConnection
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 188
      start: 185
    functionDepth: 0
    functionLinenumber: 185
    functionLinenumberEnd: 188
    functionName: dnsdist::webserver::WebClientConnection::WebClientConnection
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void WebClientConnection(WebClientConnection&& rhs) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 189
      start: 189
    functionDepth: 0
    functionLinenumber: 189
    functionLinenumberEnd: 189
    functionName: dnsdist::webserver::WebClientConnection::WebClientConnection
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void WebClientConnection(const WebClientConnection&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 190
      start: 190
    functionDepth: 0
    functionLinenumber: 190
    functionLinenumberEnd: 190
    functionName: '& operator=(const WebClientConnection&)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: WebClientConnection
    signature: WebClientConnection & operator=(const WebClientConnection&)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:194,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:195,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - WebClientConnection
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 197
      start: 191
    functionDepth: 0
    functionLinenumber: 191
    functionLinenumberEnd: 197
    functionName: '& operator=(WebClientConnection&& rhs) noexcept'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: WebClientConnection
    signature: WebClientConnection & operator=(WebClientConnection&& rhs) noexcept
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: getHandle
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:201,1
    - Dst: releaseConnection
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:202,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 204
      start: 199
    functionDepth: 0
    functionLinenumber: 199
    functionLinenumberEnd: 204
    functionName: ~WebClientConnection()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc
    functionUses: 0
    functionsReached:
    - getHandle
    - releaseConnection
    linkageType: ''
    returnType: void
    signature: void ~WebClientConnection()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 209
      start: 206
    functionDepth: 0
    functionLinenumber: 206
    functionLinenumberEnd: 209
    functionName: '& getSocket() const'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Socket
    signature: Socket & getSocket() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 214
      start: 211
    functionDepth: 0
    functionLinenumber: 211
    functionLinenumberEnd: 214
    functionName: '& getClient() const'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: ComboAddress
    signature: ComboAddress & getClient() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 219
      start: 216
    functionDepth: 0
    functionLinenumber: 216
    functionLinenumberEnd: 219
    functionName: '& getLogger() const'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Logr::Logger
    signature: Logr::Logger & getLogger() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::webserver::addMetricDefinition
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:230,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ' def'
    argTypes:
    - dnsdist::prometheus::PrometheusMetricDefinition
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 234
      start: 227
    functionDepth: 0
    functionLinenumber: 227
    functionLinenumberEnd: 234
    functionName: dnsdist::webserver::addMetricDefinition
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc
    functionUses: 4
    functionsReached:
    - dnsdist::webserver::addMetricDefinition
    linkageType: ''
    returnType: bool
    signature: bool addMetricDefinition([[maybe_unused]] const dnsdist::prometheus::PrometheusMetricDefinition&
      def)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:239,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:241,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:241,1
    - Dst: info
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:242,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:242,1
    - Dst: d_apiConfigDirectory::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:246,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:247,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:247,1
    - Dst: info
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:248,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:248,1
    - Dst: string::c_str
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:254,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:257,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:257,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:257,1
    - Dst: error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:258,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:258,1
    - Dst: ofstream::close
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:264,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 3
    argNames:
    - ' filebasename'
    - ' content'
    - ' logger'
    argTypes:
    - string
    - string
    - Logr::Logger
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 266
      start: 237
    functionDepth: 1
    functionLinenumber: 237
    functionLinenumberEnd: 266
    functionName: dnsdist::webserver::apiWriteConfigFile
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc
    functionUses: 1
    functionsReached:
    - errlog
    - string::c_str
    - SLOG
    - dnsdist::configuration::getCurrentRuntimeConfiguration
    - Logging::Loggable
    - stringerror
    - VERBOSESLOG
    - info
    - warnlog
    - infolog
    - ofstream::close
    - error
    - d_apiConfigDirectory::empty
    linkageType: ''
    returnType: bool
    signature: bool apiWriteConfigFile(const string& filebasename, const string& content,
      const Logr::Logger& logger)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: toStringVector
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:270,1
    - Dst: string::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:274,1
    - Dst: dnsdist::webserver::apiWriteConfigFile
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:281,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - ' nmg'
    - ' logger'
    argTypes:
    - NetmaskGroup
    - Logr::Logger
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 282
      start: 268
    functionDepth: 0
    functionLinenumber: 268
    functionLinenumberEnd: 282
    functionName: dnsdist::webserver::apiSaveACL
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc
    functionUses: 1
    functionsReached:
    - toStringVector
    - dnsdist::webserver::apiWriteConfigFile
    - string::empty
    linkageType: ''
    returnType: void
    signature: void apiSaveACL(const NetmaskGroup& nmg, const Logr::Logger& logger)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: headers::find
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:291,1
    - Dst: headers::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:292,1
    - Dst: matches
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:293,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - ' req'
    - ' apiKey'
    argTypes:
    - YaHTTP::Request
    - std::shared_ptr<const CredentialsHolder>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 297
      start: 285
    functionDepth: 0
    functionLinenumber: 285
    functionLinenumberEnd: 297
    functionName: dnsdist::webserver::checkAPIKey
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc
    functionUses: 1
    functionsReached:
    - headers::find
    - matches
    - headers::end
    linkageType: ''
    returnType: bool
    signature: bool checkAPIKey(const YaHTTP::Request& req, const std::shared_ptr<const
      CredentialsHolder>& apiKey)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: headers::find
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:307,1
    - Dst: headers::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:309,1
    - Dst: toLower
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:309,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:309,1
    - Dst: auto::second::substr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:310,1
    - Dst: std::array::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:310,1
    - Dst: B64Decode
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:313,1
    - Dst: stringtok
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:316,1
    - Dst: vector::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:318,1
    - Dst: matches
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:320,1
    - Dst: vector::at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:320,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 3
    argNames:
    - ' req'
    - ' password'
    - dashboardRequiresAuthentication
    argTypes:
    - YaHTTP::Request
    - std::shared_ptr<const CredentialsHolder>
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 327
      start: 299
    functionDepth: 0
    functionLinenumber: 299
    functionLinenumberEnd: 327
    functionName: dnsdist::webserver::checkWebPassword
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc
    functionUses: 1
    functionsReached:
    - matches
    - stringtok
    - auto::second::substr
    - vector::at
    - toLower
    - B64Decode
    - headers::end
    - headers::find
    - vector::size
    - std::array::data
    - std::array::size
    linkageType: ''
    returnType: bool
    signature: bool checkWebPassword(const YaHTTP::Request& req, const std::shared_ptr<const
      CredentialsHolder>& password, bool dashboardRequiresAuthentication)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: url::path::find
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:331,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' req'
    argTypes:
    - YaHTTP::Request
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 332
      start: 329
    functionDepth: 0
    functionLinenumber: 329
    functionLinenumberEnd: 332
    functionName: dnsdist::webserver::isAnAPIRequest
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc
    functionUses: 1
    functionsReached:
    - url::path::find
    linkageType: ''
    returnType: bool
    signature: bool isAnAPIRequest(const YaHTTP::Request& req)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' req'
    argTypes:
    - YaHTTP::Request
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 337
      start: 334
    functionDepth: 0
    functionLinenumber: 334
    functionLinenumberEnd: 337
    functionName: dnsdist::webserver::isAnAPIRequestAllowedWithWebAuth
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool isAnAPIRequestAllowedWithWebAuth(const YaHTTP::Request& req)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - ' req'
    argTypes:
    - YaHTTP::Request
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 342
      start: 339
    functionDepth: 0
    functionLinenumber: 339
    functionLinenumberEnd: 342
    functionName: dnsdist::webserver::isAStatsRequest
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool isAStatsRequest(const YaHTTP::Request& req)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:346,1
    - Dst: dnsdist::webserver::isAStatsRequest
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:348,1
    - Dst: dnsdist::webserver::checkAPIKey
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:351,1
    - Dst: dnsdist::webserver::checkWebPassword
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:351,1
    - Dst: dnsdist::webserver::isAnAPIRequest
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:356,1
    - Dst: dnsdist::webserver::checkAPIKey
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:358,1
    - Dst: dnsdist::webserver::isAnAPIRequestAllowedWithWebAuth
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:362,1
    - Dst: dnsdist::webserver::checkWebPassword
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:362,1
    - Dst: dnsdist::webserver::checkWebPassword
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:365,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 14
    argCount: 1
    argNames:
    - ' req'
    argTypes:
    - YaHTTP::Request
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 366
      start: 344
    functionDepth: 1
    functionLinenumber: 344
    functionLinenumberEnd: 366
    functionName: dnsdist::webserver::handleAuthorization
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc
    functionUses: 1
    functionsReached:
    - dnsdist::webserver::isAnAPIRequestAllowedWithWebAuth
    - dnsdist::configuration::getCurrentRuntimeConfiguration
    - dnsdist::webserver::isAnAPIRequest
    - dnsdist::webserver::checkAPIKey
    - dnsdist::webserver::isAStatsRequest
    - dnsdist::webserver::checkWebPassword
    linkageType: ''
    returnType: bool
    signature: bool handleAuthorization(const YaHTTP::Request& req)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:373,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 1
    argNames:
    - ' req'
    argTypes:
    - YaHTTP::Request
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 386
      start: 368
    functionDepth: 1
    functionLinenumber: 368
    functionLinenumberEnd: 386
    functionName: dnsdist::webserver::isMethodAllowed
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc
    functionUses: 1
    functionsReached:
    - dnsdist::configuration::getCurrentRuntimeConfiguration
    linkageType: ''
    returnType: bool
    signature: bool isMethodAllowed(const YaHTTP::Request& req)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:390,1
    - Dst: d_webServerACL::match
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:391,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' remote'
    argTypes:
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 392
      start: 388
    functionDepth: 1
    functionLinenumber: 388
    functionLinenumberEnd: 392
    functionName: dnsdist::webserver::isClientAllowedByACL
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc
    functionUses: 1
    functionsReached:
    - dnsdist::configuration::getCurrentRuntimeConfiguration
    - d_webServerACL::match
    linkageType: ''
    returnType: bool
    signature: bool isClientAllowedByACL(const ComboAddress& remote)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: headers::find
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:396,1
    - Dst: headers::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:397,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:398,1
    - Dst: dnsdist::webserver::isAStatsRequest
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:414,1
    - Dst: dnsdist::webserver::isAnAPIRequestAllowedWithWebAuth
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:414,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 2
    argNames:
    - ' req'
    - ' resp'
    argTypes:
    - YaHTTP::Request
    - YaHTTP::Response
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 419
      start: 394
    functionDepth: 1
    functionLinenumber: 394
    functionLinenumberEnd: 419
    functionName: dnsdist::webserver::handleCORS
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc
    functionUses: 10
    functionsReached:
    - dnsdist::webserver::isAnAPIRequestAllowedWithWebAuth
    - dnsdist::configuration::getCurrentRuntimeConfiguration
    - headers::end
    - dnsdist::webserver::isAStatsRequest
    - headers::find
    linkageType: ''
    returnType: void
    signature: void handleCORS(const YaHTTP::Request& req, YaHTTP::Response& resp)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: find
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:433,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:434,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 2
    argNames:
    - ' resp'
    - ' customHeaders'
    argTypes:
    - YaHTTP::Response
    - std::optional<std::unordered_map<std::string, std::string>>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 440
      start: 421
    functionDepth: 0
    functionLinenumber: 421
    functionLinenumberEnd: 440
    functionName: dnsdist::webserver::addSecurityHeaders
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc
    functionUses: 1
    functionsReached:
    - end
    - find
    linkageType: ''
    returnType: void
    signature: void addSecurityHeaders(YaHTTP::Response& resp, const std::optional<std::unordered_map<std::string,
      std::string>>& customHeaders)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: second::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:449,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - ' resp'
    - ' customHeaders'
    argTypes:
    - YaHTTP::Response
    - std::optional<std::unordered_map<std::string, std::string>>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 453
      start: 442
    functionDepth: 0
    functionLinenumber: 442
    functionLinenumberEnd: 453
    functionName: dnsdist::webserver::addCustomHeaders
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc
    functionUses: 1
    functionsReached:
    - second::empty
    linkageType: ''
    returnType: void
    signature: void addCustomHeaders(YaHTTP::Response& resp, const std::optional<std::unordered_map<std::string,
      std::string>>& customHeaders)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Json::array::reserve
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:461,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:461,1
    - Dst: Json::array::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:463,1
    - Dst: static_cast<double>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:465,1
    - Dst: libssl_tls_version_to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:466,1
    - Dst: static_cast<double>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:468,1
    - Dst: d_rule::toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:469,1
    - Dst: d_action::toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:470,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ' someResponseRules'
    argTypes:
    - std::vector<T>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 474
      start: 456
    functionDepth: 0
    functionLinenumber: 456
    functionLinenumberEnd: 474
    functionName: dnsdist::webserver::someResponseRulesToJson
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc
    functionUses: 1
    functionsReached:
    - static_cast<double>
    - d_rule::toString
    - Json::array::reserve
    - size
    - d_action::toString
    - Json::array::emplace_back
    - libssl_tls_version_to_string
    linkageType: ''
    returnType: json11::Json::array
    signature: json11::Json::array someResponseRulesToJson(const std::vector<T>& someResponseRules)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: d_name::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:481,1
    - Dst: libssl_tls_version_to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:481,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 3
    argNames:
    - ' output'
    - ' rules'
    - instanceLabelWithComma
    argTypes:
    - std::ostringstream
    - std::vector<T>
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 484
      start: 478
    functionDepth: 0
    functionLinenumber: 478
    functionLinenumberEnd: 484
    functionName: dnsdist::webserver::addRulesToPrometheusOutput
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc
    functionUses: 1
    functionsReached:
    - d_name::empty
    - libssl_tls_version_to_string
    linkageType: ''
    returnType: void
    signature: void addRulesToPrometheusOutput(std::ostringstream& output, const std::vector<T>&
      rules, const std::string instanceLabelWithComma)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:489,1
    - Dst: substr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:489,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:489,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 15
    argCount: 4
    argNames:
    - ' output'
    - ' container'
    - ' metricName'
    - ' label'
    argTypes:
    - std::ostringstream
    - T
    - std::string
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 506
      start: 487
    functionDepth: 0
    functionLinenumber: 487
    functionLinenumberEnd: 506
    functionName: dnsdist::webserver::addHistogramToPrometheusOutput
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc
    functionUses: 1
    functionsReached:
    - empty
    - substr
    - size
    linkageType: ''
    returnType: void
    signature: void addHistogramToPrometheusOutput(std::ostringstream& output, const
      T& container, const std::string& metricName, const std::string& label)
  - BBCount: 26
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::webserver::handleCORS
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:510,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:516,1
    - Dst: entries::read_lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:521,1
    - Dst: std::set::count
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:526,1
    - Dst: getMetricDetails
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:531,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:532,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:532,1
    - Dst: info
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:533,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:533,1
    - Dst: getPrometheusStringMetricType
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:537,1
    - Dst: std::string::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:538,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:539,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:539,1
    - Dst: info
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:540,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:540,1
    - Dst: MetricDefinition::customName::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:546,1
    - Dst: boost::replace_all_copy
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:547,1
    - Dst: d_labels::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:553,1
    - Dst: std::string::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:553,1
    - Dst: d_labels::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:555,1
    - Dst: std::string::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:557,1
    - Dst: std::string::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:561,1
    - Dst: std::string::substr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:569,1
    - Dst: std::string::find
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:569,1
    - Dst: std::unordered_set::count
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:570,1
    - Dst: std::unordered_set::insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:571,1
    - Dst: std::get_if<pdns::stat_t*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:577,1
    - Dst: load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:578,1
    - Dst: std::get_if<pdns::stat_double_t*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:580,1
    - Dst: load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:581,1
    - Dst: std::get_if<dnsdist::metrics::Stats::statfunction_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:583,1
    - Dst: std::string::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:593,1
    - Dst: dnsdist::webserver::addHistogramToPrometheusOutput
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:600,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:673,1
    - Dst: getName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:676,1
    - Dst: d_config::remote::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:677,1
    - Dst: getName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:680,1
    - Dst: std::replace
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:683,1
    - Dst: string::begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:683,1
    - Dst: string::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:683,1
    - Dst: sqlstr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:685,1
    - Dst: boost::format
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:685,1
    - Dst: d_config::remote::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:686,1
    - Dst: std::string::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:686,1
    - Dst: isUp
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:688,1
    - Dst: queries::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:689,1
    - Dst: responses::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:690,1
    - Dst: nonCompliantResponses::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:691,1
    - Dst: reuseds::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:692,1
    - Dst: isUp
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:693,1
    - Dst: sendErrors::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:697,1
    - Dst: outstanding::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:698,1
    - Dst: dnsdist::webserver::addHistogramToPrometheusOutput
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:724,1
    - Dst: dnsdist::getFrontends
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:768,1
    - Dst: local::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:773,1
    - Dst: getType
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:774,1
    - Dst: std::map::emplace
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:779,1
    - Dst: sqlstr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:784,1
    - Dst: boost::format
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:784,1
    - Dst: std::string::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:785,1
    - Dst: queries::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:787,1
    - Dst: nonCompliantQueries::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:788,1
    - Dst: responses::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:789,1
    - Dst: isTCP
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:790,1
    - Dst: tcpDiedReadingQuery::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:791,1
    - Dst: tcpDiedSendingResponse::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:792,1
    - Dst: tcpGaveUp::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:793,1
    - Dst: tcpClientTimeouts::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:794,1
    - Dst: tcpDownstreamTimeouts::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:795,1
    - Dst: tcpCurrentConnections::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:796,1
    - Dst: tcpMaxConcurrentConnections::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:797,1
    - Dst: tcpAvgQueriesPerConnection::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:798,1
    - Dst: tcpAvgConnectionDuration::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:799,1
    - Dst: hasTLS
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:801,1
    - Dst: tlsNewSessions::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:802,1
    - Dst: tlsResumptions::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:803,1
    - Dst: tlsUnknownTicketKey::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:804,1
    - Dst: tlsInactiveTicketKey::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:805,1
    - Dst: std::string::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:807,1
    - Dst: tls10queries::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:807,1
    - Dst: std::string::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:808,1
    - Dst: tls11queries::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:808,1
    - Dst: std::string::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:809,1
    - Dst: tls12queries::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:809,1
    - Dst: std::string::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:810,1
    - Dst: tls13queries::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:810,1
    - Dst: std::string::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:811,1
    - Dst: tlsUnknownqueries::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:811,1
    - Dst: std::string::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:822,1
    - Dst: std::string::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:823,1
    - Dst: std::string::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:824,1
    - Dst: std::string::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:825,1
    - Dst: std::string::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:826,1
    - Dst: std::string::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:827,1
    - Dst: std::string::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:828,1
    - Dst: std::string::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:829,1
    - Dst: dnsdist::getDoHFrontends
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:855,1
    - Dst: d_tlsContext::d_addr::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:856,1
    - Dst: std::map::emplace
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:858,1
    - Dst: sqlstr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:863,1
    - Dst: boost::format
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:863,1
    - Dst: std::string::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:863,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:921,1
    - Dst: string::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:924,1
    - Dst: std::string::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:927,1
    - Dst: countServers
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:929,1
    - Dst: countServers
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:930,1
    - Dst: getMaxEntries
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:935,1
    - Dst: getEntriesCount
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:936,1
    - Dst: getHits
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:937,1
    - Dst: getMisses
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:938,1
    - Dst: getDeferredInserts
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:939,1
    - Dst: getDeferredLookups
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:940,1
    - Dst: getLookupCollisions
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:941,1
    - Dst: getInsertCollisions
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:942,1
    - Dst: getTTLTooShorts
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:943,1
    - Dst: getCleanupCount
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:944,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:950,1
    - Dst: dnsdist::rules::getRuleChainDescriptions
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:951,1
    - Dst: dnsdist::rules::getRuleChain
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:952,1
    - Dst: dnsdist::webserver::addRulesToPrometheusOutput
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:953,1
    - Dst: dnsdist::rules::getResponseRuleChainDescriptions
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:955,1
    - Dst: dnsdist::rules::getResponseRuleChain
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:956,1
    - Dst: dnsdist::webserver::addRulesToPrometheusOutput
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:957,1
    - Dst: DynBlockMaintenance::getHitsForTopNetmasks
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:963,1
    - Dst: first::toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:966,1
    - Dst: std::string::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:966,1
    - Dst: DynBlockMaintenance::getHitsForTopSuffixes
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:972,1
    - Dst: first::toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:975,1
    - Dst: std::string::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:975,1
    - Dst: std::string::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:982,1
    - Dst: std::ostringstream::str
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:984,1
    CyclomaticComplexity: 42
    EdgeCount: 42
    ICount: 358
    argCount: 3
    argNames:
    - ' req'
    - ' resp'
    - ' logger'
    argTypes:
    - YaHTTP::Request
    - YaHTTP::Response
    - Logr::Logger
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 987
      start: 508
    functionDepth: 3
    functionLinenumber: 508
    functionLinenumberEnd: 987
    functionName: dnsdist::webserver::handlePrometheus
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc
    functionUses: 0
    functionsReached:
    - std::unordered_set::insert
    - outstanding::load
    - queries::load
    - nonCompliantQueries::load
    - getHits
    - sendErrors::load
    - isTCP
    - dnsdist::rules::getResponseRuleChainDescriptions
    - std::string::substr
    - std::map::emplace
    - tcpClientTimeouts::load
    - std::unordered_set::count
    - dnsdist::webserver::addRulesToPrometheusOutput
    - getMisses
    - VERBOSESLOG
    - getMetricDetails
    - std::set::count
    - infolog
    - string::end
    - tlsUnknownTicketKey::load
    - string::empty
    - std::ostringstream::str
    - dnsdist::rules::getRuleChainDescriptions
    - getCleanupCount
    - dnsdist::rules::getResponseRuleChain
    - getTTLTooShorts
    - tcpCurrentConnections::load
    - getInsertCollisions
    - tls12queries::load
    - countServers
    - sqlstr
    - hasTLS
    - tcpGaveUp::load
    - tlsUnknownqueries::load
    - getMaxEntries
    - tlsNewSessions::load
    - d_config::remote::toStringWithPort
    - dnsdist::webserver::handleCORS
    - nonCompliantResponses::load
    - tcpDiedSendingResponse::load
    - std::replace
    - boost::replace_all_copy
    - std::get_if<dnsdist::metrics::Stats::statfunction_t>
    - local::toStringWithPort
    - std::string::find
    - first::toString
    - getDeferredLookups
    - std::string::empty
    - tls10queries::load
    - getDeferredInserts
    - getType
    - dnsdist::configuration::getCurrentRuntimeConfiguration
    - dnsdist::rules::getRuleChain
    - std::get_if<pdns::stat_double_t*>
    - getPrometheusStringMetricType
    - DynBlockMaintenance::getHitsForTopNetmasks
    - d_tlsContext::d_addr::toStringWithPort
    - dnsdist::getFrontends
    - std::get_if<pdns::stat_t*>
    - tls11queries::load
    - tlsInactiveTicketKey::load
    - responses::load
    - dnsdist::webserver::addHistogramToPrometheusOutput
    - dnsdist::getDoHFrontends
    - tcpAvgQueriesPerConnection::load
    - tcpAvgConnectionDuration::load
    - tlsResumptions::load
    - tcpDiedReadingQuery::load
    - getName
    - Logging::Loggable
    - tcpDownstreamTimeouts::load
    - tls13queries::load
    - MetricDefinition::customName::empty
    - getEntriesCount
    - entries::read_lock
    - string::begin
    - load
    - DynBlockMaintenance::getHitsForTopSuffixes
    - isUp
    - tcpMaxConcurrentConnections::load
    - d_labels::empty
    - reuseds::load
    - info
    - getLookupCollisions
    - boost::format
    linkageType: ''
    returnType: void
    signature: void handlePrometheus(const YaHTTP::Request& req, YaHTTP::Response&
      resp, const Logr::Logger& logger)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: entries::read_lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:994,1
    - Dst: d_labels::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:999,1
    - Dst: std::get_if<pdns::stat_t*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1002,1
    - Dst: emplace
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1003,1
    - Dst: load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1003,1
    - Dst: std::get_if<pdns::stat_double_t*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1005,1
    - Dst: emplace
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1006,1
    - Dst: load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1006,1
    - Dst: std::get_if<dnsdist::metrics::Stats::statfunction_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1008,1
    - Dst: emplace
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1009,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 17
    argCount: 1
    argNames:
    - ' obj'
    argTypes:
    - Json::object
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1012
      start: 992
    functionDepth: 0
    functionLinenumber: 992
    functionLinenumberEnd: 1012
    functionName: dnsdist::webserver::addStatsToJSONObject
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc
    functionUses: 2
    functionsReached:
    - load
    - d_labels::empty
    - std::get_if<pdns::stat_double_t*>
    - std::get_if<dnsdist::metrics::Stats::statfunction_t>
    - std::get_if<pdns::stat_t*>
    - entries::read_lock
    - emplace
    linkageType: ''
    returnType: void
    signature: void addStatsToJSONObject(Json::object& obj)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::webserver::handleCORS
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1018,1
    - Dst: getvars::count
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1021,1
    - Dst: getvars::at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1026,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1027,1
    - Dst: d_lbPolicy::getName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1035,1
    - Dst: dnsdist::webserver::addStatsToJSONObject
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1037,1
    - Dst: Json::dump
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1040,1
    - Dst: gettime
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1047,1
    - Dst: dnsdist::DynamicBlocks::getClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1048,1
    - Dst: getHits
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1055,1
    - Dst: first::getNetwork
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1055,1
    - Dst: static_cast<double>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1059,1
    - Dst: static_cast<double>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1060,1
    - Dst: DNSAction::typeToString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1061,1
    - Dst: Json::object::emplace
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1064,1
    - Dst: first::toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1064,1
    - Dst: dnsdist::DynamicBlocks::getSuffixDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1067,1
    - Dst: visit
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1068,1
    - Dst: d_value::domain::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1073,1
    - Dst: d_value::domain::toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1074,1
    - Dst: static_cast<double>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1078,1
    - Dst: static_cast<double>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1079,1
    - Dst: DNSAction::typeToString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1080,1
    - Dst: Json::object::emplace
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1082,1
    - Dst: Json::dump
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1086,1
    - Dst: gettime
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1093,1
    - Dst: getAddrStats
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1095,1
    - Dst: std::get<2>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1098,1
    - Dst: std::get<1>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1099,1
    - Dst: Json::object::emplace
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1100,1
    - Dst: std::get<0>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1100,1
    - Dst: dnsdist::DynamicBlocks::getClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1104,1
    - Dst: getHits
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1109,1
    - Dst: first::getNetwork
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1109,1
    - Dst: static_cast<double>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1112,1
    - Dst: static_cast<double>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1113,1
    - Dst: DNSAction::typeToString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1114,1
    - Dst: Json::object::emplace
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1117,1
    - Dst: first::toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1117,1
    - Dst: Json::dump
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1122,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 52
    argCount: 3
    argNames:
    - ' req'
    - ' resp'
    - ' logger'
    argTypes:
    - YaHTTP::Request
    - YaHTTP::Response
    - Logr::Logger
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1128
      start: 1015
    functionDepth: 2
    functionLinenumber: 1015
    functionLinenumberEnd: 1128
    functionName: dnsdist::webserver::handleJSONStats
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc
    functionUses: 0
    functionsReached:
    - dnsdist::webserver::handleCORS
    - DNSAction::typeToString
    - Json::dump
    - d_lbPolicy::getName
    - getHits
    - d_value::domain::toString
    - static_cast<double>
    - Json::object::emplace
    - dnsdist::DynamicBlocks::getSuffixDynamicRules
    - getvars::at
    - dnsdist::DynamicBlocks::getClientAddressDynamicRules
    - getAddrStats
    - first::toString
    - d_value::domain::empty
    - dnsdist::configuration::getCurrentRuntimeConfiguration
    - std::get<2>
    - getvars::count
    - visit
    - gettime
    - first::getNetwork
    - std::get<0>
    - std::get<1>
    - dnsdist::webserver::addStatsToJSONObject
    linkageType: ''
    returnType: void
    signature: void handleJSONStats(const YaHTTP::Request& req, YaHTTP::Response&
      resp, const Logr::Logger& logger)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: upStatus::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1141,1
    - Dst: Json::array::reserve
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1145,1
    - Dst: d_config::pools::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1145,1
    - Dst: Json::array::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1147,1
    - Dst: getName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1152,1
    - Dst: d_config::remote::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1153,1
    - Dst: getProtocol
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1155,1
    - Dst: static_cast<double>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1157,1
    - Dst: getQPSLimit
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1157,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1162,1
    - Dst: emplace_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1198,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1198,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 3
    argNames:
    - ' servers'
    - identifier
    - ' backend'
    argTypes:
    - Json::array
    - int
    - std::shared_ptr<DownstreamState>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1199
      start: 1131
    functionDepth: 1
    functionLinenumber: 1131
    functionLinenumberEnd: 1199
    functionName: dnsdist::webserver::addServerToJSON
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc
    functionUses: 2
    functionsReached:
    - getQPSLimit
    - std::move
    - static_cast<double>
    - getName
    - getProtocol
    - upStatus::load
    - Json::array::reserve
    - d_config::remote::toStringWithPort
    - Json::array::emplace_back
    - emplace_back
    - d_config::pools::size
    linkageType: ''
    returnType: void
    signature: void addServerToJSON(Json::array& servers, int identifier, const std::shared_ptr<DownstreamState>&
      backend)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::webserver::handleCORS
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1204,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1211,1
    - Dst: Json::array::reserve
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1212,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1212,1
    - Dst: dnsdist::webserver::addServerToJSON
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1214,1
    - Dst: Json::array::reserve
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1220,1
    - Dst: dnsdist::getFrontends
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1220,1
    - Dst: dnsdist::getFrontends
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1221,1
    - Dst: local::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1227,1
    - Dst: getType
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1230,1
    - Dst: queries::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1231,1
    - Dst: nonCompliantQueries::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1232,1
    - Dst: responses::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1233,1
    - Dst: tcpDiedReadingQuery::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1234,1
    - Dst: tcpDiedSendingResponse::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1235,1
    - Dst: tcpGaveUp::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1236,1
    - Dst: Json::array::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1270,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1270,1
    - Dst: dnsdist::getDoHFrontends
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1276,1
    - Dst: Json::array::reserve
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1277,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1277,1
    - Dst: Json::array::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1280,1
    - Dst: d_tlsContext::d_addr::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1282,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1311,1
    - Dst: Json::array::reserve
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1312,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1312,1
    - Dst: second::countServers
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1318,1
    - Dst: getMaxEntries
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1319,1
    - Dst: getEntriesCount
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1320,1
    - Dst: getHits
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1321,1
    - Dst: getMisses
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1322,1
    - Dst: getDeferredInserts
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1323,1
    - Dst: getDeferredLookups
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1324,1
    - Dst: getLookupCollisions
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1325,1
    - Dst: getInsertCollisions
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1326,1
    - Dst: getTTLTooShorts
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1327,1
    - Dst: getCleanupCount
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1328,1
    - Dst: Json::array::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1329,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1329,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1335,1
    - Dst: toStringVector
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1335,1
    - Dst: string::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1338,1
    - Dst: dnsdist::getFrontends
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1348,1
    - Dst: std::set::insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1349,1
    - Dst: local::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1349,1
    - Dst: string::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1352,1
    - Dst: dnsdist::webserver::addStatsToJSONObject
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1360,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1364,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1365,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1366,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1367,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1368,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1369,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1370,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1374,1
    - Dst: dnsdist::rules::getRuleChainDescriptions
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1375,1
    - Dst: dnsdist::rules::getRuleChain
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1377,1
    - Dst: Json::array::reserve
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1379,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1379,1
    - Dst: libssl_tls_version_to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1384,1
    - Dst: d_rule::toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1387,1
    - Dst: d_action::toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1388,1
    - Dst: d_action::getStats
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1389,1
    - Dst: Json::array::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1390,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1390,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1392,1
    - Dst: dnsdist::rules::getResponseRuleChainDescriptions
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1395,1
    - Dst: dnsdist::rules::getResponseRuleChain
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1396,1
    - Dst: dnsdist::webserver::someResponseRulesToJson
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1397,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1398,1
    - Dst: Json
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1402,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 66
    argCount: 3
    argNames:
    - ' req'
    - ' resp'
    - ' logger'
    argTypes:
    - YaHTTP::Request
    - YaHTTP::Response
    - Logr::Logger
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1403
      start: 1201
    functionDepth: 3
    functionLinenumber: 1201
    functionLinenumberEnd: 1403
    functionName: dnsdist::webserver::handleStats
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc
    functionUses: 0
    functionsReached:
    - getMaxEntries
    - dnsdist::getDoHFrontends
    - d_rule::toString
    - queries::load
    - tcpDiedSendingResponse::load
    - dnsdist::webserver::handleCORS
    - libssl_tls_version_to_string
    - second::countServers
    - nonCompliantQueries::load
    - auto::size
    - tcpDiedReadingQuery::load
    - getHits
    - dnsdist::webserver::someResponseRulesToJson
    - string::empty
    - dnsdist::rules::getResponseRuleChainDescriptions
    - Json::array::reserve
    - size
    - dnsdist::rules::getRuleChainDescriptions
    - local::toStringWithPort
    - getCleanupCount
    - dnsdist::rules::getResponseRuleChain
    - getEntriesCount
    - getDeferredLookups
    - std::set::insert
    - getDeferredInserts
    - getType
    - getMisses
    - dnsdist::configuration::getCurrentRuntimeConfiguration
    - dnsdist::rules::getRuleChain
    - Json::array::emplace_back
    - Json
    - getTTLTooShorts
    - std::move
    - d_tlsContext::d_addr::toStringWithPort
    - getInsertCollisions
    - toStringVector
    - dnsdist::webserver::addServerToJSON
    - getLookupCollisions
    - dnsdist::getFrontends
    - d_action::toString
    - dnsdist::webserver::addStatsToJSONObject
    - responses::load
    - tcpGaveUp::load
    - d_action::getStats
    linkageType: ''
    returnType: void
    signature: void handleStats(const YaHTTP::Request& req, YaHTTP::Response& resp,
      const Logr::Logger& logger)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::webserver::handleCORS
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1408,1
    - Dst: getvars::find
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1409,1
    - Dst: getvars::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1410,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1418,1
    - Dst: find
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1419,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1420,1
    - Dst: countServers
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1429,1
    - Dst: getMaxEntries
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1430,1
    - Dst: getEntriesCount
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1431,1
    - Dst: getHits
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1432,1
    - Dst: getMisses
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1433,1
    - Dst: getDeferredInserts
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1434,1
    - Dst: getDeferredLookups
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1435,1
    - Dst: getLookupCollisions
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1436,1
    - Dst: getInsertCollisions
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1437,1
    - Dst: getTTLTooShorts
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1438,1
    - Dst: getCleanupCount
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1439,1
    - Dst: getServers
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1443,1
    - Dst: dnsdist::webserver::addServerToJSON
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1444,1
    - Dst: Json::dump
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1453,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 3
    argNames:
    - ' req'
    - ' resp'
    - ' logger'
    argTypes:
    - YaHTTP::Request
    - YaHTTP::Response
    - Logr::Logger
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1454
      start: 1405
    functionDepth: 2
    functionLinenumber: 1405
    functionLinenumberEnd: 1454
    functionName: dnsdist::webserver::handlePoolStats
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc
    functionUses: 0
    functionsReached:
    - getMaxEntries
    - dnsdist::webserver::handleCORS
    - Json::dump
    - getvars::end
    - find
    - getHits
    - getCleanupCount
    - getEntriesCount
    - getDeferredLookups
    - getDeferredInserts
    - getServers
    - getMisses
    - dnsdist::configuration::getCurrentRuntimeConfiguration
    - getTTLTooShorts
    - getInsertCollisions
    - getvars::find
    - dnsdist::webserver::addServerToJSON
    - countServers
    - end
    - getLookupCollisions
    linkageType: ''
    returnType: void
    signature: void handlePoolStats(const YaHTTP::Request& req, YaHTTP::Response&
      resp, const Logr::Logger& logger)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::webserver::handleCORS
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1459,1
    - Dst: entries::read_lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1464,1
    - Dst: std::get_if<pdns::stat_t*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1470,1
    - Dst: Json::array::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1471,1
    - Dst: load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1474,1
    - Dst: std::get_if<pdns::stat_double_t*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1476,1
    - Dst: Json::array::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1477,1
    - Dst: load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1480,1
    - Dst: std::get_if<dnsdist::metrics::Stats::statfunction_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1482,1
    - Dst: Json::array::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1483,1
    - Dst: Json::dump
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1491,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    argCount: 3
    argNames:
    - ' req'
    - ' resp'
    - ' logger'
    argTypes:
    - YaHTTP::Request
    - YaHTTP::Response
    - Logr::Logger
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1493
      start: 1456
    functionDepth: 2
    functionLinenumber: 1456
    functionLinenumberEnd: 1493
    functionName: dnsdist::webserver::handleStatsOnly
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc
    functionUses: 0
    functionsReached:
    - load
    - std::get_if<pdns::stat_double_t*>
    - std::get_if<dnsdist::metrics::Stats::statfunction_t>
    - dnsdist::webserver::handleCORS
    - Json::array::emplace_back
    - std::get_if<pdns::stat_t*>
    - Json::dump
    - entries::read_lock
    linkageType: ''
    returnType: void
    signature: void handleStatsOnly(const YaHTTP::Request& req, YaHTTP::Response&
      resp, const Logr::Logger& logger)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::webserver::handleCORS
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1499,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1503,1
    - Dst: dnsdist::configuration::getImmutableConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1504,1
    - Dst: d_ACL::toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1507,1
    - Dst: d_consoleServerAddress::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1509,1
    - Dst: static_cast<double>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1511,1
    - Dst: static_cast<double>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1512,1
    - Dst: static_cast<double>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1514,1
    - Dst: d_lbPolicy::getName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1515,1
    - Dst: static_cast<double>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1516,1
    - Dst: static_cast<double>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1517,1
    - Dst: static_cast<double>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1518,1
    - Dst: boost::get<bool>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1523,1
    - Dst: Json::array::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1524,1
    - Dst: boost::get<string>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1529,1
    - Dst: Json::array::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1530,1
    - Dst: boost::get<double>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1535,1
    - Dst: Json::array::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1536,1
    - Dst: Json::dump
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1543,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 3
    argNames:
    - ' req'
    - ' resp'
    - ' logger'
    argTypes:
    - YaHTTP::Request
    - YaHTTP::Response
    - Logr::Logger
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1545
      start: 1496
    functionDepth: 2
    functionLinenumber: 1496
    functionLinenumberEnd: 1545
    functionName: dnsdist::webserver::handleConfigDump
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc
    functionUses: 0
    functionsReached:
    - static_cast<double>
    - dnsdist::configuration::getCurrentRuntimeConfiguration
    - boost::get<string>
    - d_consoleServerAddress::toStringWithPort
    - Json::dump
    - dnsdist::webserver::handleCORS
    - boost::get<bool>
    - Json::array::emplace_back
    - dnsdist::configuration::getImmutableConfiguration
    - d_ACL::toString
    - boost::get<double>
    - d_lbPolicy::getName
    linkageType: ''
    returnType: void
    signature: void handleConfigDump(const YaHTTP::Request& req, YaHTTP::Response&
      resp, const Logr::Logger& logger)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::webserver::handleCORS
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1549,1
    - Dst: json11::Json::parse
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1556,1
    - Dst: Json::is_null
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1558,1
    - Dst: NetmaskGroup::NetmaskGroup
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1559,1
    - Dst: auto::is_array
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1561,1
    - Dst: auto::array_items
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1563,1
    - Dst: NetmaskGroup::addMask
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1565,1
    - Dst: string_value
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1565,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1574,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1574,1
    - Dst: NetmaskGroup::toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1574,1
    - Dst: info
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1575,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1575,1
    - Dst: dnsdist::configuration::updateRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1577,1
    - Dst: dnsdist::webserver::apiSaveACL
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1580,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1592,1
    - Dst: toStringVector
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1592,1
    - Dst: Json::dump
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1599,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 31
    argCount: 3
    argNames:
    - ' req'
    - ' resp'
    - ' logger'
    argTypes:
    - YaHTTP::Request
    - YaHTTP::Response
    - Logr::Logger
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1601
      start: 1547
    functionDepth: 2
    functionLinenumber: 1547
    functionLinenumberEnd: 1601
    functionName: dnsdist::webserver::handleAllowFrom
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc
    functionUses: 0
    functionsReached:
    - auto::array_items
    - toStringVector
    - SLOG
    - NetmaskGroup::NetmaskGroup
    - string_value
    - dnsdist::configuration::getCurrentRuntimeConfiguration
    - json11::Json::parse
    - Logging::Loggable
    - dnsdist::configuration::updateRuntimeConfiguration
    - infolog
    - dnsdist::webserver::handleCORS
    - info
    - Json::dump
    - auto::is_array
    - NetmaskGroup::addMask
    - NetmaskGroup::toString
    - dnsdist::webserver::apiSaveACL
    - Json::is_null
    linkageType: ''
    returnType: void
    signature: void handleAllowFrom(const YaHTTP::Request& req, YaHTTP::Response&
      resp, const Logr::Logger& logger)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::webserver::handleCORS
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1608,1
    - Dst: Json
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1618,1
    - Dst: getvars::find
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1622,1
    - Dst: getvars::find
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1623,1
    - Dst: getvars::find
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1624,1
    - Dst: getvars::find
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1625,1
    - Dst: getvars::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1626,1
    - Dst: getvars::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1626,1
    - Dst: Json
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1632,1
    - Dst: DNSName::DNSName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1636,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1639,1
    - Dst: Json
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1647,1
    - Dst: getvars::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1650,1
    - Dst: QType::chartocode
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1651,1
    - Dst: auto::second::c_str
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1651,1
    - Dst: getPool
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1656,1
    - Dst: Json
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1664,1
    - Dst: std::optional::getCache
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1668,1
    - Dst: Json
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1675,1
    - Dst: auto::expungeByName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1679,1
    - Dst: QType::getCode
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1679,1
    - Dst: getvars::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1679,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1683,1
    - Dst: Json
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1684,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 38
    argCount: 3
    argNames:
    - ' req'
    - ' resp'
    - ' logger'
    argTypes:
    - YaHTTP::Request
    - YaHTTP::Response
    - Logr::Logger
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1685
      start: 1605
    functionDepth: 2
    functionLinenumber: 1605
    functionLinenumberEnd: 1685
    functionName: dnsdist::webserver::handleCacheManagement
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc
    functionUses: 0
    functionsReached:
    - auto::expungeByName
    - std::to_string
    - getvars::find
    - auto::second::c_str
    - getPool
    - dnsdist::webserver::handleCORS
    - DNSName
    - std::optional::getCache
    - QType::chartocode
    - QType::getCode
    - DNSName::DNSName
    - Json
    - getvars::end
    linkageType: ''
    returnType: void
    signature: void handleCacheManagement(const YaHTTP::Request& req, YaHTTP::Response&
      resp, const Logr::Logger& logger)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<double>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1693,1
    - Dst: DiffTime
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1693,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1694,1
    - Dst: name::toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1695,1
    - Dst: requestor::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1696,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1697,1
    - Dst: protocol::toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1699,1
    - Dst: static_cast<bool>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1700,1
    - Dst: Json::object::emplace
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1705,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1705,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1705,1
    - Dst: macaddress::data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1705,1
    - Dst: macaddress::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1705,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1705,1
    - Dst: Json::object::emplace
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1709,1
    - Dst: static_cast<double>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1709,1
    - Dst: Json::object::emplace
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1710,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1710,1
    - Dst: Json::object::emplace
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1711,1
    - Dst: static_cast<bool>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1711,1
    - Dst: Json::object::emplace
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1712,1
    - Dst: static_cast<bool>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1712,1
    - Dst: Json::object::emplace
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1713,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1713,1
    - Dst: ds::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1714,1
    - Dst: Json::object::emplace
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1715,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1715,1
    - Dst: emplace_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1717,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1717,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 3
    argNames:
    - ' now'
    - ' list'
    - ' entry'
    argTypes:
    - struct timespec
    - Json::array
    - T
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1718
      start: 1689
    functionDepth: 0
    functionLinenumber: 1689
    functionLinenumberEnd: 1718
    functionName: dnsdist::webserver::addRingEntryToList
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc
    functionUses: 1
    functionsReached:
    - std::move
    - static_cast<bool>
    - static_cast<double>
    - name::toString
    - Json::object::emplace
    - ntohs
    - ds::toStringWithPort
    - macaddress::size
    - DiffTime
    - static_cast<uint8_t>
    - requestor::toStringWithPort
    - reinterpret_cast<const char*>
    - macaddress::data
    - emplace_back
    - std::string
    - protocol::toString
    - static_cast<int>
    linkageType: ''
    returnType: void
    signature: void addRingEntryToList(const struct timespec& now, Json::array& list,
      const T& entry)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::webserver::handleCORS
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1722,1
    - Dst: getvars::find
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1727,1
    - Dst: getvars::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1728,1
    - Dst: pdns::checked_stoi<size_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1730,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1733,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1733,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1733,1
    - Dst: error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1734,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1734,1
    - Dst: getvars::find
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1738,1
    - Dst: getvars::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1739,1
    - Dst: pdns::checked_stoi<size_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1741,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1744,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1744,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1744,1
    - Dst: error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1745,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1745,1
    - Dst: gettime
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1757,1
    - Dst: queryRing::lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1761,1
    - Dst: dnsdist::webserver::addRingEntryToList
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1763,1
    - Dst: respRing::lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1771,1
    - Dst: dnsdist::webserver::addRingEntryToList
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1773,1
    - Dst: Json::object::emplace
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1781,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1781,1
    - Dst: Json::object::emplace
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1782,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1782,1
    - Dst: Json::dump
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1784,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 39
    argCount: 3
    argNames:
    - ' req'
    - ' resp'
    - ' logger'
    argTypes:
    - YaHTTP::Request
    - YaHTTP::Response
    - Logr::Logger
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1786
      start: 1720
    functionDepth: 2
    functionLinenumber: 1720
    functionLinenumberEnd: 1786
    functionName: dnsdist::webserver::handleRings
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc
    functionUses: 0
    functionsReached:
    - std::move
    - queryRing::lock
    - Json::object::emplace
    - getvars::find
    - pdns::checked_stoi<size_t>
    - what
    - VERBOSESLOG
    - infolog
    - dnsdist::webserver::handleCORS
    - Json::dump
    - gettime
    - error
    - respRing::lock
    - getvars::end
    - dnsdist::webserver::addRingEntryToList
    linkageType: ''
    returnType: void
    signature: void handleRings(const YaHTTP::Request& req, YaHTTP::Response& resp,
      const Logr::Logger& logger)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: write_lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1798,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1799,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' endpoint'
    - handler
    argTypes:
    - std::string
    - LuaWebHandler
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1800
      start: 1796
    functionDepth: 0
    functionLinenumber: 1796
    functionLinenumberEnd: 1800
    functionName: dnsdist::webserver::registerWebHandler
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc
    functionUses: 2
    functionsReached:
    - std::move
    - write_lock
    linkageType: ''
    returnType: void
    signature: void registerWebHandler(const std::string& endpoint, LuaWebHandler
      handler)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: write_lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1804,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1805,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' endpoint'
    - handler
    argTypes:
    - std::string
    - BuiltinWebHandler
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1806
      start: 1802
    functionDepth: 0
    functionLinenumber: 1802
    functionLinenumberEnd: 1806
    functionName: dnsdist::webserver::registerWebHandler
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc
    functionUses: 2
    functionsReached:
    - std::move
    - write_lock
    linkageType: ''
    returnType: void
    signature: void registerWebHandler(const std::string& endpoint, BuiltinWebHandler
      handler)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: write_lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1810,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1811
      start: 1808
    functionDepth: 0
    functionLinenumber: 1808
    functionLinenumberEnd: 1811
    functionName: dnsdist::webserver::clearWebHandlers
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc
    functionUses: 0
    functionsReached:
    - write_lock
    linkageType: ''
    returnType: void
    signature: void clearWebHandlers()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: body::assign
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1820,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1820,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - ' req'
    - ' resp'
    - ' logger'
    argTypes:
    - YaHTTP::Request
    - YaHTTP::Response
    - Logr::Logger
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1823
      start: 1816
    functionDepth: 1
    functionLinenumber: 1816
    functionLinenumberEnd: 1823
    functionName: dnsdist::webserver::redirectToIndex
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc
    functionUses: 0
    functionsReached:
    - body::assign
    - at
    linkageType: ''
    returnType: void
    signature: void redirectToIndex([[maybe_unused]] const YaHTTP::Request& req, YaHTTP::Response&
      resp, const Logr::Logger& logger)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: url::path::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1828,1
    - Dst: std::string_view
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1832,1
    - Dst: find
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1833,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1834,1
    - Dst: body::assign
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1839,1
    - Dst: stringtok
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1842,1
    - Dst: std::unordered_map::find
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1850,1
    - Dst: vector::back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1850,1
    - Dst: std::unordered_map::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1851,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 3
    argNames:
    - ' req'
    - ' resp'
    - ' logger'
    argTypes:
    - YaHTTP::Request
    - YaHTTP::Response
    - Logr::Logger
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1857
      start: 1825
    functionDepth: 1
    functionLinenumber: 1825
    functionLinenumberEnd: 1857
    functionName: dnsdist::webserver::handleBuiltInFiles
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc
    functionUses: 0
    functionsReached:
    - vector::back
    - stringtok
    - std::unordered_map::find
    - std::string_view
    - end
    - url::path::empty
    - body::assign
    - std::unordered_map::end
    - find
    linkageType: ''
    returnType: void
    signature: void handleBuiltInFiles(const YaHTTP::Request& req, YaHTTP::Response&
      resp, const Logr::Logger& logger)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::webserver::registerWebHandler
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1863,1
    - Dst: dnsdist::webserver::registerWebHandler
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1866,1
    - Dst: dnsdist::webserver::registerWebHandler
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1868,1
    - Dst: dnsdist::webserver::registerWebHandler
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1869,1
    - Dst: dnsdist::webserver::registerWebHandler
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1870,1
    - Dst: dnsdist::webserver::registerWebHandler
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1871,1
    - Dst: dnsdist::webserver::registerWebHandler
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1873,1
    - Dst: dnsdist::webserver::registerWebHandler
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1874,1
    - Dst: dnsdist::webserver::registerWebHandler
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1877,1
    - Dst: dnsdist::webserver::registerWebHandler
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1880,1
    - Dst: dnsdist::webserver::registerWebHandler
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1883,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1886
      start: 1860
    functionDepth: 1
    functionLinenumber: 1860
    functionLinenumberEnd: 1886
    functionName: dnsdist::webserver::registerBuiltInWebHandlers
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc
    functionUses: 0
    functionsReached:
    - dnsdist::webserver::registerWebHandler
    linkageType: ''
    returnType: void
    signature: void registerBuiltInWebHandlers()
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: setThreadName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1890,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1892,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1892,1
    - Dst: getClient
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1892,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1893,1
    - Dst: YaHTTP::Request::Request
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1897,1
    - Dst: YaHTTP::AsyncRequestLoader::initialize
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1901,1
    - Dst: std::string::resize
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1904,1
    - Dst: read
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1905,1
    - Dst: getSocket
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1905,1
    - Dst: std::string::data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1905,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1905,1
    - Dst: std::string::resize
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1907,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1907,1
    - Dst: YaHTTP::AsyncRequestLoader::feed
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1908,1
    - Dst: YaHTTP::AsyncRequestLoader::finalize
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1915,1
    - Dst: YaHTTP::Request::getvars::erase
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1917,1
    - Dst: YaHTTP::Response::Response
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1919,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1923,1
    - Dst: dnsdist::webserver::addCustomHeaders
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1924,1
    - Dst: dnsdist::webserver::addSecurityHeaders
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1925,1
    - Dst: YaHTTP::Response::headers::erase
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1931,1
    - Dst: dnsdist::webserver::handleCORS
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1935,1
    - Dst: dnsdist::webserver::handleAuthorization
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1938,1
    - Dst: YaHTTP::Request::headers::find
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1939,1
    - Dst: YaHTTP::Request::headers::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1940,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1941,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1941,1
    - Dst: getClient
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1941,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1942,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1942,1
    - Dst: dnsdist::webserver::isMethodAllowed
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1948,1
    - Dst: read_lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1954,1
    - Dst: auto::find
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1955,1
    - Dst: auto::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1956,1
    - Dst: std::get_if<LuaWebHandler>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1962,1
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1963,1
    - Dst: std::get_if<BuiltinWebHandler>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1966,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1967,1
    - Dst: std::ostringstream::str
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1977,1
    - Dst: writen2
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1978,1
    - Dst: getSocket
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1978,1
    - Dst: string::c_str
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1978,1
    - Dst: string::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1978,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1981,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1981,1
    - Dst: getClient
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1981,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1981,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1982,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1982,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1985,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1985,1
    - Dst: getClient
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1985,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1985,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1986,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1986,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1989,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1989,1
    - Dst: getClient
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1989,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1990,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 62
    argCount: 1
    argNames:
    - ' conn'
    argTypes:
    - WebClientConnection
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1992
      start: 1888
    functionDepth: 2
    functionLinenumber: 1888
    functionLinenumberEnd: 1992
    functionName: dnsdist::webserver::connectionThread
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc
    functionUses: 0
    functionsReached:
    - dnsdist::webserver::isMethodAllowed
    - writen2
    - dnsdist::webserver::handleCORS
    - YaHTTP::Request::Request
    - std::string::size
    - static_cast<size_t>
    - string::size
    - Logging::Loggable
    - std::ostringstream::str
    - read_lock
    - YaHTTP::Request::headers::find
    - lock
    - YaHTTP::AsyncRequestLoader::initialize
    - getSocket
    - YaHTTP::AsyncRequestLoader::finalize
    - dnsdist::webserver::addSecurityHeaders
    - setThreadName
    - std::get_if<BuiltinWebHandler>
    - getLogger
    - YaHTTP::Request::headers::end
    - dnsdist::webserver::handleAuthorization
    - string::c_str
    - dnsdist::webserver::addCustomHeaders
    - YaHTTP::Response::headers::erase
    - dnsdist::configuration::getCurrentRuntimeConfiguration
    - YaHTTP::Request::getvars::erase
    - YaHTTP::Response::Response
    - VERBOSESLOG
    - std::string::data
    - std::string::resize
    - auto::find
    - getClient
    - read
    - what
    - infolog
    - YaHTTP::AsyncRequestLoader::feed
    - auto::end
    - std::get_if<LuaWebHandler>
    linkageType: ''
    returnType: void
    signature: void connectionThread(WebClientConnection&& conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::webserver::setMaxConcurrentConnections
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:1996,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - max
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1997
      start: 1994
    functionDepth: 1
    functionLinenumber: 1994
    functionLinenumberEnd: 1997
    functionName: dnsdist::webserver::setMaxConcurrentConnections
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc
    functionUses: 2
    functionsReached:
    - dnsdist::webserver::setMaxConcurrentConnections
    linkageType: ''
    returnType: void
    signature: void setMaxConcurrentConnections(size_t max)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: setThreadName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:2001,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:2002,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:2002,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:2003,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:2003,1
    - Dst: ComboAddress::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:2003,1
    - Dst: auto::info
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:2004,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:2007,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:2009,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:2009,1
    - Dst: ComboAddress::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:2009,1
    - Dst: auto::info
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:2010,1
    - Dst: SAccept
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:2017,1
    - Dst: Socket::getHandle
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:2017,1
    - Dst: dnsdist::configuration::refreshLocalRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:2018,1
    - Dst: dnsdist::webserver::isClientAllowedByACL
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:2020,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:2021,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:2021,1
    - Dst: ComboAddress::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:2021,1
    - Dst: auto::info
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:2022,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:2022,1
    - Dst: close
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:2023,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:2028,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:2028,1
    - Dst: ComboAddress::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:2028,1
    - Dst: WebClientConnection::getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:2029,1
    - Dst: std::thread::detach
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:2032,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:2035,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:2035,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:2035,1
    - Dst: auto::error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:2036,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc:2036,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 2
    argNames:
    - listeningAddress
    - sock
    argTypes:
    - ComboAddress
    - Socket
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2039
      start: 1999
    functionDepth: 2
    functionLinenumber: 1999
    functionLinenumberEnd: 2039
    functionName: dnsdist::webserver::WebserverThread
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc
    functionUses: 0
    functionsReached:
    - SLOG
    - Logging::Loggable
    - warnlog
    - auto::error
    - dnsdist::logging::getTopLogger
    - setThreadName
    - WebClientConnection::getLogger
    - auto::info
    - dnsdist::webserver::isClientAllowedByACL
    - dnsdist::configuration::getCurrentRuntimeConfiguration
    - VERBOSESLOG
    - SAccept
    - ComboAddress::toStringWithPort
    - Socket::getHandle
    - what
    - infolog
    - std::thread::detach
    - dnsdist::configuration::refreshLocalRuntimeConfiguration
    - close
    linkageType: ''
    returnType: void
    signature: void WebserverThread(ComboAddress listeningAddress, Socket sock)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-hooks.cc:21,1
    - Dst: callback
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-hooks.cc:22,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ' context'
    argTypes:
    - LuaContext
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 24
      start: 18
    functionDepth: 0
    functionLinenumber: 18
    functionLinenumberEnd: 24
    functionName: dnsdist::lua::hooks::runMaintenanceHooks
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-hooks.cc
    functionUses: 0
    functionsReached:
    - callback
    - lock
    linkageType: ''
    returnType: void
    signature: void runMaintenanceHooks(const LuaContext& context)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-hooks.cc:29,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-hooks.cc:29,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ' context'
    - callback
    argTypes:
    - LuaContext
    - MaintenanceCallback
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 30
      start: 26
    functionDepth: 0
    functionLinenumber: 26
    functionLinenumberEnd: 30
    functionName: dnsdist::lua::hooks::addMaintenanceCallback
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-hooks.cc
    functionUses: 0
    functionsReached:
    - std::move
    - lock
    linkageType: ''
    returnType: void
    signature: void addMaintenanceCallback(const LuaContext& context, MaintenanceCallback
      callback)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-hooks.cc:34,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 35
      start: 32
    functionDepth: 0
    functionLinenumber: 32
    functionLinenumberEnd: 35
    functionName: dnsdist::lua::hooks::clearMaintenanceHooks
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-hooks.cc
    functionUses: 0
    functionsReached:
    - lock
    linkageType: ''
    returnType: void
    signature: void clearMaintenanceHooks()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-hooks.cc:40,1
    - Dst: callback
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-hooks.cc:41,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ' context'
    argTypes:
    - LuaContext
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 37
    functionDepth: 0
    functionLinenumber: 37
    functionLinenumberEnd: 43
    functionName: dnsdist::lua::hooks::runExitCallbacks
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-hooks.cc
    functionUses: 0
    functionsReached:
    - callback
    - lock
    linkageType: ''
    returnType: void
    signature: void runExitCallbacks(const LuaContext& context)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-hooks.cc:48,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-hooks.cc:48,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ' context'
    - callback
    argTypes:
    - LuaContext
    - ExitCallback
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 45
    functionDepth: 0
    functionLinenumber: 45
    functionLinenumberEnd: 49
    functionName: dnsdist::lua::hooks::addExitCallback
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-hooks.cc
    functionUses: 0
    functionsReached:
    - std::move
    - lock
    linkageType: ''
    returnType: void
    signature: void addExitCallback(const LuaContext& context, ExitCallback callback)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-hooks.cc:53,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 51
    functionDepth: 0
    functionLinenumber: 51
    functionLinenumberEnd: 54
    functionName: dnsdist::lua::hooks::clearExitCallbacks
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-hooks.cc
    functionUses: 0
    functionsReached:
    - lock
    linkageType: ''
    returnType: void
    signature: void clearExitCallbacks()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TLSCtx::setTicketsKeyAddedHook
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-hooks.cc:59,1
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-hooks.cc:61,1
    - Dst: hook
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-hooks.cc:62,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-hooks.cc:62,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-hooks.cc:65,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-hooks.cc:65,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-hooks.cc:65,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-hooks.cc:66,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-hooks.cc:66,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - ' context'
    - ' hook'
    argTypes:
    - LuaContext
    - TicketsKeyAddedHook
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 56
    functionDepth: 1
    functionLinenumber: 56
    functionLinenumberEnd: 69
    functionName: dnsdist::lua::hooks::setTicketsKeyAddedHook
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-hooks.cc
    functionUses: 0
    functionsReached:
    - hook
    - SLOG
    - what
    - warnlog
    - size
    - lock
    - dnsdist::logging::getTopLogger
    - TLSCtx::setTicketsKeyAddedHook
    linkageType: ''
    returnType: void
    signature: void setTicketsKeyAddedHook(const LuaContext& context, const TicketsKeyAddedHook&
      hook)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-hooks.cc:74,1
    - Dst: callback
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-hooks.cc:75,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - ' context'
    - ' nameWithAddr'
    - newState
    argTypes:
    - LuaContext
    - std::string
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 71
    functionDepth: 0
    functionLinenumber: 71
    functionLinenumberEnd: 77
    functionName: dnsdist::lua::hooks::runServerStateChangeHooks
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-hooks.cc
    functionUses: 0
    functionsReached:
    - callback
    - lock
    linkageType: ''
    returnType: void
    signature: void runServerStateChangeHooks(const LuaContext& context, const std::string&
      nameWithAddr, bool newState)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-hooks.cc:82,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-hooks.cc:82,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ' context'
    - callback
    argTypes:
    - LuaContext
    - ServerStateChangeCallback
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 79
    functionDepth: 0
    functionLinenumber: 79
    functionLinenumberEnd: 83
    functionName: dnsdist::lua::hooks::addServerStateChangeCallback
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-hooks.cc
    functionUses: 0
    functionsReached:
    - std::move
    - lock
    linkageType: ''
    returnType: void
    signature: void addServerStateChangeCallback(const LuaContext& context, ServerStateChangeCallback
      callback)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-hooks.cc:87,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 85
    functionDepth: 0
    functionLinenumber: 85
    functionLinenumberEnd: 88
    functionName: dnsdist::lua::hooks::clearServerStateChangeCallbacks
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-hooks.cc
    functionUses: 0
    functionsReached:
    - lock
    linkageType: ''
    returnType: void
    signature: void clearServerStateChangeCallbacks()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-hooks.cc:92,1
    - Dst: setLuaSideEffect
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-hooks.cc:93,1
    - Dst: dnsdist::lua::hooks::addMaintenanceCallback
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-hooks.cc:94,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-hooks.cc:96,1
    - Dst: setLuaSideEffect
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-hooks.cc:97,1
    - Dst: dnsdist::lua::hooks::addExitCallback
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-hooks.cc:98,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-hooks.cc:100,1
    - Dst: setLuaSideEffect
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-hooks.cc:101,1
    - Dst: dnsdist::lua::hooks::setTicketsKeyAddedHook
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-hooks.cc:102,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-hooks.cc:104,1
    - Dst: setLuaSideEffect
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-hooks.cc:105,1
    - Dst: dnsdist::lua::hooks::addServerStateChangeCallback
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-hooks.cc:106,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 17
    argCount: 1
    argNames:
    - ' luaCtx'
    argTypes:
    - LuaContext
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 90
    functionDepth: 2
    functionLinenumber: 90
    functionLinenumberEnd: 108
    functionName: dnsdist::lua::hooks::setupLuaHooks
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-hooks.cc
    functionUses: 0
    functionsReached:
    - dnsdist::lua::hooks::addServerStateChangeCallback
    - dnsdist::lua::hooks::addMaintenanceCallback
    - setLuaSideEffect
    - dnsdist::lua::hooks::addExitCallback
    - writeFunction
    - dnsdist::lua::hooks::setTicketsKeyAddedHook
    linkageType: ''
    returnType: void
    signature: void setupLuaHooks(LuaContext& luaCtx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-hooks.cc:21,1
    - Dst: callback
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-hooks.cc:22,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ' context'
    argTypes:
    - LuaContext
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 24
      start: 18
    functionDepth: 0
    functionLinenumber: 18
    functionLinenumberEnd: 24
    functionName: dnsdist::lua::hooks::runMaintenanceHooks
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-hooks.cc
    functionUses: 0
    functionsReached:
    - callback
    - lock
    linkageType: ''
    returnType: void
    signature: void runMaintenanceHooks(const LuaContext& context)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-hooks.cc:29,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-hooks.cc:29,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ' context'
    - callback
    argTypes:
    - LuaContext
    - MaintenanceCallback
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 30
      start: 26
    functionDepth: 0
    functionLinenumber: 26
    functionLinenumberEnd: 30
    functionName: dnsdist::lua::hooks::addMaintenanceCallback
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-hooks.cc
    functionUses: 1
    functionsReached:
    - std::move
    - lock
    linkageType: ''
    returnType: void
    signature: void addMaintenanceCallback(const LuaContext& context, MaintenanceCallback
      callback)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-hooks.cc:34,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 35
      start: 32
    functionDepth: 0
    functionLinenumber: 32
    functionLinenumberEnd: 35
    functionName: dnsdist::lua::hooks::clearMaintenanceHooks
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-hooks.cc
    functionUses: 0
    functionsReached:
    - lock
    linkageType: ''
    returnType: void
    signature: void clearMaintenanceHooks()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-hooks.cc:40,1
    - Dst: callback
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-hooks.cc:41,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ' context'
    argTypes:
    - LuaContext
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 37
    functionDepth: 0
    functionLinenumber: 37
    functionLinenumberEnd: 43
    functionName: dnsdist::lua::hooks::runExitCallbacks
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-hooks.cc
    functionUses: 0
    functionsReached:
    - callback
    - lock
    linkageType: ''
    returnType: void
    signature: void runExitCallbacks(const LuaContext& context)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-hooks.cc:48,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-hooks.cc:48,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ' context'
    - callback
    argTypes:
    - LuaContext
    - ExitCallback
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 45
    functionDepth: 0
    functionLinenumber: 45
    functionLinenumberEnd: 49
    functionName: dnsdist::lua::hooks::addExitCallback
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-hooks.cc
    functionUses: 1
    functionsReached:
    - std::move
    - lock
    linkageType: ''
    returnType: void
    signature: void addExitCallback(const LuaContext& context, ExitCallback callback)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-hooks.cc:53,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 51
    functionDepth: 0
    functionLinenumber: 51
    functionLinenumberEnd: 54
    functionName: dnsdist::lua::hooks::clearExitCallbacks
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-hooks.cc
    functionUses: 0
    functionsReached:
    - lock
    linkageType: ''
    returnType: void
    signature: void clearExitCallbacks()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TLSCtx::setTicketsKeyAddedHook
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-hooks.cc:59,1
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-hooks.cc:61,1
    - Dst: hook
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-hooks.cc:62,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-hooks.cc:62,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-hooks.cc:65,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-hooks.cc:65,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-hooks.cc:65,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-hooks.cc:66,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-hooks.cc:66,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - ' context'
    - ' hook'
    argTypes:
    - LuaContext
    - TicketsKeyAddedHook
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 56
    functionDepth: 1
    functionLinenumber: 56
    functionLinenumberEnd: 69
    functionName: dnsdist::lua::hooks::setTicketsKeyAddedHook
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-hooks.cc
    functionUses: 1
    functionsReached:
    - hook
    - SLOG
    - what
    - warnlog
    - size
    - lock
    - dnsdist::logging::getTopLogger
    - TLSCtx::setTicketsKeyAddedHook
    linkageType: ''
    returnType: void
    signature: void setTicketsKeyAddedHook(const LuaContext& context, const TicketsKeyAddedHook&
      hook)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-hooks.cc:74,1
    - Dst: callback
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-hooks.cc:75,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - ' context'
    - ' nameWithAddr'
    - newState
    argTypes:
    - LuaContext
    - std::string
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 71
    functionDepth: 0
    functionLinenumber: 71
    functionLinenumberEnd: 77
    functionName: dnsdist::lua::hooks::runServerStateChangeHooks
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-hooks.cc
    functionUses: 0
    functionsReached:
    - callback
    - lock
    linkageType: ''
    returnType: void
    signature: void runServerStateChangeHooks(const LuaContext& context, const std::string&
      nameWithAddr, bool newState)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-hooks.cc:82,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-hooks.cc:82,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ' context'
    - callback
    argTypes:
    - LuaContext
    - ServerStateChangeCallback
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 79
    functionDepth: 0
    functionLinenumber: 79
    functionLinenumberEnd: 83
    functionName: dnsdist::lua::hooks::addServerStateChangeCallback
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-hooks.cc
    functionUses: 1
    functionsReached:
    - std::move
    - lock
    linkageType: ''
    returnType: void
    signature: void addServerStateChangeCallback(const LuaContext& context, ServerStateChangeCallback
      callback)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-hooks.cc:87,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 85
    functionDepth: 0
    functionLinenumber: 85
    functionLinenumberEnd: 88
    functionName: dnsdist::lua::hooks::clearServerStateChangeCallbacks
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-hooks.cc
    functionUses: 0
    functionsReached:
    - lock
    linkageType: ''
    returnType: void
    signature: void clearServerStateChangeCallbacks()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-hooks.cc:92,1
    - Dst: setLuaSideEffect
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-hooks.cc:93,1
    - Dst: dnsdist::lua::hooks::addMaintenanceCallback
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-hooks.cc:94,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-hooks.cc:96,1
    - Dst: setLuaSideEffect
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-hooks.cc:97,1
    - Dst: dnsdist::lua::hooks::addExitCallback
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-hooks.cc:98,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-hooks.cc:100,1
    - Dst: setLuaSideEffect
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-hooks.cc:101,1
    - Dst: dnsdist::lua::hooks::setTicketsKeyAddedHook
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-hooks.cc:102,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-hooks.cc:104,1
    - Dst: setLuaSideEffect
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-hooks.cc:105,1
    - Dst: dnsdist::lua::hooks::addServerStateChangeCallback
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-hooks.cc:106,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 17
    argCount: 1
    argNames:
    - ' luaCtx'
    argTypes:
    - LuaContext
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 90
    functionDepth: 2
    functionLinenumber: 90
    functionLinenumberEnd: 108
    functionName: dnsdist::lua::hooks::setupLuaHooks
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-hooks.cc
    functionUses: 0
    functionsReached:
    - dnsdist::lua::hooks::addServerStateChangeCallback
    - dnsdist::lua::hooks::addMaintenanceCallback
    - setLuaSideEffect
    - dnsdist::lua::hooks::addExitCallback
    - writeFunction
    - dnsdist::lua::hooks::setTicketsKeyAddedHook
    linkageType: ''
    returnType: void
    signature: void setupLuaHooks(LuaContext& luaCtx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getLocal
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration.cc:34,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration.cc:35,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - refresh
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 36
      start: 32
    functionDepth: 0
    functionLinenumber: 32
    functionLinenumberEnd: 36
    functionName: dnsdist::configuration::getCurrentRuntimeConfigurationInternal
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-configuration.cc
    functionUses: 0
    functionsReached:
    - getLocal
    - auto::get
    linkageType: ''
    returnType: RuntimeConfiguration
    signature: RuntimeConfiguration & getCurrentRuntimeConfigurationInternal(bool
      refresh)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::configuration::getCurrentRuntimeConfigurationInternal
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration.cc:40,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 38
    functionDepth: 1
    functionLinenumber: 38
    functionLinenumberEnd: 41
    functionName: dnsdist::configuration::getCurrentRuntimeConfiguration
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-configuration.cc
    functionUses: 96
    functionsReached:
    - dnsdist::configuration::getCurrentRuntimeConfigurationInternal
    linkageType: ''
    returnType: RuntimeConfiguration
    signature: RuntimeConfiguration & getCurrentRuntimeConfiguration()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::configuration::getCurrentRuntimeConfigurationInternal
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration.cc:45,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 43
    functionDepth: 1
    functionLinenumber: 43
    functionLinenumberEnd: 46
    functionName: dnsdist::configuration::refreshLocalRuntimeConfiguration
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-configuration.cc
    functionUses: 17
    functionsReached:
    - dnsdist::configuration::getCurrentRuntimeConfigurationInternal
    linkageType: ''
    returnType: RuntimeConfiguration
    signature: RuntimeConfiguration & refreshLocalRuntimeConfiguration()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: modify
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration.cc:50,1
    - Dst: dnsdist::configuration::refreshLocalRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration.cc:52,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ' mutator'
    argTypes:
    - std::function<void(RuntimeConfiguration&)>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 48
    functionDepth: 2
    functionLinenumber: 48
    functionLinenumberEnd: 53
    functionName: dnsdist::configuration::updateRuntimeConfiguration
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-configuration.cc
    functionUses: 20
    functionsReached:
    - modify
    - dnsdist::configuration::refreshLocalRuntimeConfiguration
    linkageType: ''
    returnType: void
    signature: void updateRuntimeConfiguration(const std::function<void(RuntimeConfiguration&)>&
      mutator)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::configuration::isImmutableConfigurationDone
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration.cc:57,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration.cc:58,1
    - Dst: mutator
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration.cc:61,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - ' mutator'
    argTypes:
    - std::function<void(ImmutableConfiguration&)>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 55
    functionDepth: 1
    functionLinenumber: 55
    functionLinenumberEnd: 62
    functionName: dnsdist::configuration::updateImmutableConfiguration
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-configuration.cc
    functionUses: 4
    functionsReached:
    - dnsdist::configuration::isImmutableConfigurationDone
    - mutator
    - std::runtime_error
    linkageType: ''
    returnType: void
    signature: void updateImmutableConfiguration(const std::function<void(ImmutableConfiguration&)>&
      mutator)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 64
    functionDepth: 0
    functionLinenumber: 64
    functionLinenumberEnd: 67
    functionName: dnsdist::configuration::getImmutableConfiguration
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-configuration.cc
    functionUses: 53
    functionsReached: []
    linkageType: ''
    returnType: ImmutableConfiguration
    signature: ImmutableConfiguration & getImmutableConfiguration()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration.cc:71,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 69
    functionDepth: 0
    functionLinenumber: 69
    functionLinenumberEnd: 72
    functionName: dnsdist::configuration::isImmutableConfigurationDone
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-configuration.cc
    functionUses: 3
    functionsReached:
    - load
    linkageType: ''
    returnType: bool
    signature: bool isImmutableConfigurationDone()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: exchange
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration.cc:76,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration.cc:77,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 74
    functionDepth: 0
    functionLinenumber: 74
    functionLinenumberEnd: 79
    functionName: dnsdist::configuration::setImmutableConfigurationDone
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-configuration.cc
    functionUses: 0
    functionsReached:
    - exchange
    - std::runtime_error
    linkageType: ''
    returnType: void
    signature: void setImmutableConfigurationDone()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getLocal
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration.cc:34,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration.cc:35,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - refresh
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 36
      start: 32
    functionDepth: 0
    functionLinenumber: 32
    functionLinenumberEnd: 36
    functionName: dnsdist::configuration::getCurrentRuntimeConfigurationInternal
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-configuration.cc
    functionUses: 2
    functionsReached:
    - getLocal
    - auto::get
    linkageType: ''
    returnType: RuntimeConfiguration
    signature: RuntimeConfiguration & getCurrentRuntimeConfigurationInternal(bool
      refresh)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::configuration::getCurrentRuntimeConfigurationInternal
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration.cc:40,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 38
    functionDepth: 1
    functionLinenumber: 38
    functionLinenumberEnd: 41
    functionName: dnsdist::configuration::getCurrentRuntimeConfiguration
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-configuration.cc
    functionUses: 96
    functionsReached:
    - dnsdist::configuration::getCurrentRuntimeConfigurationInternal
    linkageType: ''
    returnType: RuntimeConfiguration
    signature: RuntimeConfiguration & getCurrentRuntimeConfiguration()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::configuration::getCurrentRuntimeConfigurationInternal
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration.cc:45,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 43
    functionDepth: 1
    functionLinenumber: 43
    functionLinenumberEnd: 46
    functionName: dnsdist::configuration::refreshLocalRuntimeConfiguration
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-configuration.cc
    functionUses: 18
    functionsReached:
    - dnsdist::configuration::getCurrentRuntimeConfigurationInternal
    linkageType: ''
    returnType: RuntimeConfiguration
    signature: RuntimeConfiguration & refreshLocalRuntimeConfiguration()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: modify
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration.cc:50,1
    - Dst: dnsdist::configuration::refreshLocalRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration.cc:52,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ' mutator'
    argTypes:
    - std::function<void(RuntimeConfiguration&)>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 48
    functionDepth: 2
    functionLinenumber: 48
    functionLinenumberEnd: 53
    functionName: dnsdist::configuration::updateRuntimeConfiguration
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-configuration.cc
    functionUses: 20
    functionsReached:
    - modify
    - dnsdist::configuration::refreshLocalRuntimeConfiguration
    linkageType: ''
    returnType: void
    signature: void updateRuntimeConfiguration(const std::function<void(RuntimeConfiguration&)>&
      mutator)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::configuration::isImmutableConfigurationDone
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration.cc:57,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration.cc:58,1
    - Dst: mutator
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration.cc:61,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - ' mutator'
    argTypes:
    - std::function<void(ImmutableConfiguration&)>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 55
    functionDepth: 1
    functionLinenumber: 55
    functionLinenumberEnd: 62
    functionName: dnsdist::configuration::updateImmutableConfiguration
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-configuration.cc
    functionUses: 4
    functionsReached:
    - dnsdist::configuration::isImmutableConfigurationDone
    - mutator
    - std::runtime_error
    linkageType: ''
    returnType: void
    signature: void updateImmutableConfiguration(const std::function<void(ImmutableConfiguration&)>&
      mutator)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 64
    functionDepth: 0
    functionLinenumber: 64
    functionLinenumberEnd: 67
    functionName: dnsdist::configuration::getImmutableConfiguration
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-configuration.cc
    functionUses: 53
    functionsReached: []
    linkageType: ''
    returnType: ImmutableConfiguration
    signature: ImmutableConfiguration & getImmutableConfiguration()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration.cc:71,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 69
    functionDepth: 0
    functionLinenumber: 69
    functionLinenumberEnd: 72
    functionName: dnsdist::configuration::isImmutableConfigurationDone
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-configuration.cc
    functionUses: 4
    functionsReached:
    - load
    linkageType: ''
    returnType: bool
    signature: bool isImmutableConfigurationDone()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: exchange
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration.cc:76,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration.cc:77,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 74
    functionDepth: 0
    functionLinenumber: 74
    functionLinenumberEnd: 79
    functionName: dnsdist::configuration::setImmutableConfigurationDone
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-configuration.cc
    functionUses: 0
    functionsReached:
    - exchange
    - std::runtime_error
    linkageType: ''
    returnType: void
    signature: void setImmutableConfigurationDone()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SvcParam::keyFromString
      Src: /src/pdns/pdns/dnsdistdist/svc-records.cc:42,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' k'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 39
    functionDepth: 0
    functionLinenumber: 39
    functionLinenumberEnd: 43
    functionName: SvcParam::keyFromString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/svc-records.cc
    functionUses: 16
    functionsReached:
    - SvcParam::keyFromString
    linkageType: ''
    returnType: SvcParam::SvcParamKey
    signature: SvcParam::SvcParamKey SvcParam::keyFromString(const std::string& k)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: find
      Src: /src/pdns/pdns/dnsdistdist/svc-records.cc:47,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/svc-records.cc:48,1
    - Dst: substr
      Src: /src/pdns/pdns/dnsdistdist/svc-records.cc:52,1
    - Dst: SvcParam::SvcParamKey
      Src: /src/pdns/pdns/dnsdistdist/svc-records.cc:55,1
    - Dst: pdns::checked_stoi<uint16_t>
      Src: /src/pdns/pdns/dnsdistdist/svc-records.cc:55,1
    - Dst: substr
      Src: /src/pdns/pdns/dnsdistdist/svc-records.cc:55,1
    - Dst: std::invalid_argument
      Src: /src/pdns/pdns/dnsdistdist/svc-records.cc:60,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 2
    argNames:
    - ' k'
    - ' generic'
    argTypes:
    - std::string
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 45
    functionDepth: 0
    functionLinenumber: 45
    functionLinenumberEnd: 61
    functionName: SvcParam::keyFromString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/svc-records.cc
    functionUses: 16
    functionsReached:
    - SvcParam::SvcParamKey
    - std::invalid_argument
    - end
    - pdns::checked_stoi<uint16_t>
    - substr
    - find
    linkageType: ''
    returnType: SvcParam::SvcParamKey
    signature: SvcParam::SvcParamKey SvcParam::keyFromString(const std::string& k,
      bool& generic)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::find_if
      Src: /src/pdns/pdns/dnsdistdist/svc-records.cc:65,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/svc-records.cc:65,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/svc-records.cc:65,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/svc-records.cc:66,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/svc-records.cc:69,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - ' k'
    argTypes:
    - SvcParam::SvcParamKey
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 63
    functionDepth: 0
    functionLinenumber: 63
    functionLinenumberEnd: 70
    functionName: SvcParam::keyToString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/svc-records.cc
    functionUses: 15
    functionsReached:
    - end
    - std::find_if
    - std::to_string
    - begin
    linkageType: ''
    returnType: std::string
    signature: std::string SvcParam::keyToString(const SvcParam::SvcParamKey& k)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::invalid_argument
      Src: /src/pdns/pdns/dnsdistdist/svc-records.cc:76,1
    - Dst: SvcParam::keyToString
      Src: /src/pdns/pdns/dnsdistdist/svc-records.cc:76,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 5
    argCount: 1
    argNames:
    - ' key'
    argTypes:
    - SvcParamKey
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 72
    functionDepth: 0
    functionLinenumber: 72
    functionLinenumberEnd: 78
    functionName: SvcParam::SvcParam
    functionSourceFile: /src/pdns/pdns/dnsdistdist/svc-records.cc
    functionUses: 0
    functionsReached:
    - SvcParam::keyToString
    - std::invalid_argument
    linkageType: ''
    returnType: void
    signature: void SvcParam::SvcParam(const SvcParamKey& key)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: std::invalid_argument
      Src: /src/pdns/pdns/dnsdistdist/svc-records.cc:84,1
    - Dst: SvcParam::keyToString
      Src: /src/pdns/pdns/dnsdistdist/svc-records.cc:84,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 10
    argCount: 2
    argNames:
    - ' key'
    - ' value'
    argTypes:
    - SvcParamKey
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 80
    functionDepth: 0
    functionLinenumber: 80
    functionLinenumberEnd: 93
    functionName: SvcParam::SvcParam
    functionSourceFile: /src/pdns/pdns/dnsdistdist/svc-records.cc
    functionUses: 0
    functionsReached:
    - SvcParam::keyToString
    - std::invalid_argument
    linkageType: ''
    returnType: void
    signature: void SvcParam::SvcParam(const SvcParamKey& key, const std::string&
      value)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: std::invalid_argument
      Src: /src/pdns/pdns/dnsdistdist/svc-records.cc:99,1
    - Dst: SvcParam::keyToString
      Src: /src/pdns/pdns/dnsdistdist/svc-records.cc:99,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/svc-records.cc:102,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 2
    argNames:
    - ' key'
    - ' value'
    argTypes:
    - SvcParamKey
    - std::vector<std::string>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 104
      start: 95
    functionDepth: 0
    functionLinenumber: 95
    functionLinenumberEnd: 104
    functionName: SvcParam::SvcParam
    functionSourceFile: /src/pdns/pdns/dnsdistdist/svc-records.cc
    functionUses: 0
    functionsReached:
    - SvcParam::keyToString
    - std::invalid_argument
    - std::move
    linkageType: ''
    returnType: void
    signature: void SvcParam::SvcParam(const SvcParamKey& key, std::vector<std::string>&&
      value)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: std::invalid_argument
      Src: /src/pdns/pdns/dnsdistdist/svc-records.cc:110,1
    - Dst: SvcParam::keyToString
      Src: /src/pdns/pdns/dnsdistdist/svc-records.cc:110,1
    - Dst: insert
      Src: /src/pdns/pdns/dnsdistdist/svc-records.cc:114,1
    - Dst: SvcParam::keyFromString
      Src: /src/pdns/pdns/dnsdistdist/svc-records.cc:114,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 9
    argCount: 2
    argNames:
    - ' key'
    - ' value'
    argTypes:
    - SvcParamKey
    - std::set<std::string>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 106
    functionDepth: 1
    functionLinenumber: 106
    functionLinenumberEnd: 117
    functionName: SvcParam::SvcParam
    functionSourceFile: /src/pdns/pdns/dnsdistdist/svc-records.cc
    functionUses: 0
    functionsReached:
    - SvcParam::keyToString
    - std::invalid_argument
    - insert
    - SvcParam::keyFromString
    linkageType: ''
    returnType: void
    signature: void SvcParam::SvcParam(const SvcParamKey& key, std::set<std::string>&&
      value)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::invalid_argument
      Src: /src/pdns/pdns/dnsdistdist/svc-records.cc:123,1
    - Dst: SvcParam::keyToString
      Src: /src/pdns/pdns/dnsdistdist/svc-records.cc:123,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/svc-records.cc:125,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 2
    argNames:
    - ' key'
    - ' value'
    argTypes:
    - SvcParamKey
    - std::set<SvcParam::SvcParamKey>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 119
    functionDepth: 0
    functionLinenumber: 119
    functionLinenumberEnd: 126
    functionName: SvcParam::SvcParam
    functionSourceFile: /src/pdns/pdns/dnsdistdist/svc-records.cc
    functionUses: 0
    functionsReached:
    - SvcParam::keyToString
    - std::invalid_argument
    - std::move
    linkageType: ''
    returnType: void
    signature: void SvcParam::SvcParam(const SvcParamKey& key, std::set<SvcParam::SvcParamKey>&&
      value)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: std::invalid_argument
      Src: /src/pdns/pdns/dnsdistdist/svc-records.cc:132,1
    - Dst: SvcParam::keyToString
      Src: /src/pdns/pdns/dnsdistdist/svc-records.cc:132,1
    - Dst: isIPv6
      Src: /src/pdns/pdns/dnsdistdist/svc-records.cc:135,1
    - Dst: std::invalid_argument
      Src: /src/pdns/pdns/dnsdistdist/svc-records.cc:136,1
    - Dst: toString
      Src: /src/pdns/pdns/dnsdistdist/svc-records.cc:136,1
    - Dst: SvcParam::keyToString
      Src: /src/pdns/pdns/dnsdistdist/svc-records.cc:136,1
    - Dst: isIPv4
      Src: /src/pdns/pdns/dnsdistdist/svc-records.cc:138,1
    - Dst: std::invalid_argument
      Src: /src/pdns/pdns/dnsdistdist/svc-records.cc:139,1
    - Dst: toString
      Src: /src/pdns/pdns/dnsdistdist/svc-records.cc:139,1
    - Dst: SvcParam::keyToString
      Src: /src/pdns/pdns/dnsdistdist/svc-records.cc:139,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/svc-records.cc:142,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 13
    argCount: 2
    argNames:
    - ' key'
    - ' value'
    argTypes:
    - SvcParamKey
    - std::vector<ComboAddress>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 143
      start: 128
    functionDepth: 0
    functionLinenumber: 128
    functionLinenumberEnd: 143
    functionName: SvcParam::SvcParam
    functionSourceFile: /src/pdns/pdns/dnsdistdist/svc-records.cc
    functionUses: 0
    functionsReached:
    - std::move
    - isIPv6
    - toString
    - std::invalid_argument
    - isIPv4
    - SvcParam::keyToString
    linkageType: ''
    returnType: void
    signature: void SvcParam::SvcParam(const SvcParamKey& key, std::vector<ComboAddress>&&
      value)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::invalid_argument
      Src: /src/pdns/pdns/dnsdistdist/svc-records.cc:149,1
    - Dst: SvcParam::keyToString
      Src: /src/pdns/pdns/dnsdistdist/svc-records.cc:149,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/svc-records.cc:151,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 5
    argCount: 2
    argNames:
    - ' key'
    - ' value'
    argTypes:
    - SvcParamKey
    - std::vector<uint16_t>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 152
      start: 145
    functionDepth: 0
    functionLinenumber: 145
    functionLinenumberEnd: 152
    functionName: SvcParam::SvcParam
    functionSourceFile: /src/pdns/pdns/dnsdistdist/svc-records.cc
    functionUses: 0
    functionsReached:
    - SvcParam::keyToString
    - std::invalid_argument
    - std::move
    linkageType: ''
    returnType: void
    signature: void SvcParam::SvcParam(const SvcParamKey& key, std::vector<uint16_t>&&
      value)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::invalid_argument
      Src: /src/pdns/pdns/dnsdistdist/svc-records.cc:158,1
    - Dst: SvcParam::keyToString
      Src: /src/pdns/pdns/dnsdistdist/svc-records.cc:158,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - ' key'
    - value
    argTypes:
    - SvcParamKey
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 161
      start: 154
    functionDepth: 0
    functionLinenumber: 154
    functionLinenumberEnd: 161
    functionName: SvcParam::SvcParam
    functionSourceFile: /src/pdns/pdns/dnsdistdist/svc-records.cc
    functionUses: 0
    functionsReached:
    - SvcParam::keyToString
    - std::invalid_argument
    linkageType: ''
    returnType: void
    signature: void SvcParam::SvcParam(const SvcParamKey& key, const uint16_t value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SvcParam::getKey
      Src: /src/pdns/pdns/dnsdistdist/svc-records.cc:166,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' other'
    argTypes:
    - SvcParam
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 167
      start: 164
    functionDepth: 0
    functionLinenumber: 164
    functionLinenumberEnd: 167
    functionName: SvcParam::operator<(const SvcParam& other) const
    functionSourceFile: /src/pdns/pdns/dnsdistdist/svc-records.cc
    functionUses: 0
    functionsReached:
    - SvcParam::getKey
    linkageType: ''
    returnType: bool
    signature: bool SvcParam::operator<(const SvcParam& other) const
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: SvcParam::getKey
      Src: /src/pdns/pdns/dnsdistdist/svc-records.cc:171,1
    - Dst: SvcParam::getKey
      Src: /src/pdns/pdns/dnsdistdist/svc-records.cc:171,1
    - Dst: SvcParam::getMandatory
      Src: /src/pdns/pdns/dnsdistdist/svc-records.cc:176,1
    - Dst: getMandatory
      Src: /src/pdns/pdns/dnsdistdist/svc-records.cc:176,1
    - Dst: SvcParam::getALPN
      Src: /src/pdns/pdns/dnsdistdist/svc-records.cc:178,1
    - Dst: getALPN
      Src: /src/pdns/pdns/dnsdistdist/svc-records.cc:178,1
    - Dst: SvcParam::getPort
      Src: /src/pdns/pdns/dnsdistdist/svc-records.cc:183,1
    - Dst: SvcParam::getPort
      Src: /src/pdns/pdns/dnsdistdist/svc-records.cc:183,1
    - Dst: SvcParam::getIPHints
      Src: /src/pdns/pdns/dnsdistdist/svc-records.cc:186,1
    - Dst: getIPHints
      Src: /src/pdns/pdns/dnsdistdist/svc-records.cc:186,1
    - Dst: SvcParam::getAutoHint
      Src: /src/pdns/pdns/dnsdistdist/svc-records.cc:186,1
    - Dst: SvcParam::getAutoHint
      Src: /src/pdns/pdns/dnsdistdist/svc-records.cc:186,1
    - Dst: SvcParam::getECH
      Src: /src/pdns/pdns/dnsdistdist/svc-records.cc:188,1
    - Dst: getECH
      Src: /src/pdns/pdns/dnsdistdist/svc-records.cc:188,1
    - Dst: SvcParam::getValue
      Src: /src/pdns/pdns/dnsdistdist/svc-records.cc:190,1
    - Dst: getValue
      Src: /src/pdns/pdns/dnsdistdist/svc-records.cc:190,1
    - Dst: SvcParam::getTLSSupportedGroups
      Src: /src/pdns/pdns/dnsdistdist/svc-records.cc:192,1
    - Dst: getTLSSupportedGroups
      Src: /src/pdns/pdns/dnsdistdist/svc-records.cc:192,1
    - Dst: SvcParam::getValue
      Src: /src/pdns/pdns/dnsdistdist/svc-records.cc:194,1
    - Dst: getValue
      Src: /src/pdns/pdns/dnsdistdist/svc-records.cc:194,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 26
    argCount: 1
    argNames:
    - ' other'
    argTypes:
    - SvcParam
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 196
      start: 169
    functionDepth: 0
    functionLinenumber: 169
    functionLinenumberEnd: 196
    functionName: SvcParam::operator==(const SvcParam& other) const
    functionSourceFile: /src/pdns/pdns/dnsdistdist/svc-records.cc
    functionUses: 0
    functionsReached:
    - getTLSSupportedGroups
    - SvcParam::getIPHints
    - SvcParam::getMandatory
    - getALPN
    - SvcParam::getKey
    - getIPHints
    - getECH
    - SvcParam::getTLSSupportedGroups
    - SvcParam::getPort
    - SvcParam::getECH
    - getValue
    - getMandatory
    - SvcParam::getAutoHint
    - SvcParam::getALPN
    - SvcParam::getValue
    linkageType: ''
    returnType: bool
    signature: bool SvcParam::operator==(const SvcParam& other) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' other'
    argTypes:
    - SvcParam
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 201
      start: 198
    functionDepth: 0
    functionLinenumber: 198
    functionLinenumberEnd: 201
    functionName: SvcParam::operator!=(const SvcParam& other) const
    functionSourceFile: /src/pdns/pdns/dnsdistdist/svc-records.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool SvcParam::operator!=(const SvcParam& other) const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::invalid_argument
      Src: /src/pdns/pdns/dnsdistdist/svc-records.cc:206,1
    - Dst: keyToString
      Src: /src/pdns/pdns/dnsdistdist/svc-records.cc:206,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 209
      start: 203
    functionDepth: 0
    functionLinenumber: 203
    functionLinenumberEnd: 209
    functionName: '& SvcParam::getIPHints() const'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/svc-records.cc
    functionUses: 0
    functionsReached:
    - std::invalid_argument
    - keyToString
    linkageType: ''
    returnType: std::vector<ComboAddress>
    signature: std::vector<ComboAddress> & SvcParam::getIPHints() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::invalid_argument
      Src: /src/pdns/pdns/dnsdistdist/svc-records.cc:214,1
    - Dst: SvcParam::keyToString
      Src: /src/pdns/pdns/dnsdistdist/svc-records.cc:214,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 217
      start: 211
    functionDepth: 0
    functionLinenumber: 211
    functionLinenumberEnd: 217
    functionName: SvcParam::getPort
    functionSourceFile: /src/pdns/pdns/dnsdistdist/svc-records.cc
    functionUses: 7
    functionsReached:
    - SvcParam::keyToString
    - std::invalid_argument
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t SvcParam::getPort() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::invalid_argument
      Src: /src/pdns/pdns/dnsdistdist/svc-records.cc:222,1
    - Dst: keyToString
      Src: /src/pdns/pdns/dnsdistdist/svc-records.cc:222,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 225
      start: 219
    functionDepth: 0
    functionLinenumber: 219
    functionLinenumberEnd: 225
    functionName: '& SvcParam::getALPN() const'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/svc-records.cc
    functionUses: 0
    functionsReached:
    - std::invalid_argument
    - keyToString
    linkageType: ''
    returnType: std::vector<std::string>
    signature: std::vector<std::string> & SvcParam::getALPN() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::invalid_argument
      Src: /src/pdns/pdns/dnsdistdist/svc-records.cc:230,1
    - Dst: keyToString
      Src: /src/pdns/pdns/dnsdistdist/svc-records.cc:230,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 233
      start: 227
    functionDepth: 0
    functionLinenumber: 227
    functionLinenumberEnd: 233
    functionName: '& SvcParam::getMandatory() const'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/svc-records.cc
    functionUses: 0
    functionsReached:
    - std::invalid_argument
    - keyToString
    linkageType: ''
    returnType: std::set<SvcParam::SvcParamKey>
    signature: std::set<SvcParam::SvcParamKey> & SvcParam::getMandatory() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::invalid_argument
      Src: /src/pdns/pdns/dnsdistdist/svc-records.cc:238,1
    - Dst: keyToString
      Src: /src/pdns/pdns/dnsdistdist/svc-records.cc:238,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 241
      start: 235
    functionDepth: 0
    functionLinenumber: 235
    functionLinenumberEnd: 241
    functionName: '& SvcParam::getECH() const'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/svc-records.cc
    functionUses: 0
    functionsReached:
    - std::invalid_argument
    - keyToString
    linkageType: ''
    returnType: std::string
    signature: std::string & SvcParam::getECH() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::invalid_argument
      Src: /src/pdns/pdns/dnsdistdist/svc-records.cc:246,1
    - Dst: keyToString
      Src: /src/pdns/pdns/dnsdistdist/svc-records.cc:246,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 249
      start: 243
    functionDepth: 0
    functionLinenumber: 243
    functionLinenumberEnd: 249
    functionName: '& SvcParam::getValue() const'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/svc-records.cc
    functionUses: 0
    functionsReached:
    - std::invalid_argument
    - keyToString
    linkageType: ''
    returnType: std::string
    signature: std::string & SvcParam::getValue() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::invalid_argument
      Src: /src/pdns/pdns/dnsdistdist/svc-records.cc:254,1
    - Dst: keyToString
      Src: /src/pdns/pdns/dnsdistdist/svc-records.cc:254,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 257
      start: 251
    functionDepth: 0
    functionLinenumber: 251
    functionLinenumberEnd: 257
    functionName: '& SvcParam::getTLSSupportedGroups() const'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/svc-records.cc
    functionUses: 0
    functionsReached:
    - std::invalid_argument
    - keyToString
    linkageType: ''
    returnType: std::vector<uint16_t>
    signature: std::vector<uint16_t> & SvcParam::getTLSSupportedGroups() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: close
      Src: /src/pdns/pdns/dnsdistdist/kqueuemplexer.cc:45,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 42
    functionDepth: 0
    functionLinenumber: 42
    functionLinenumberEnd: 47
    functionName: ~KqueueFDMultiplexer()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/kqueuemplexer.cc
    functionUses: 0
    functionsReached:
    - close
    linkageType: ''
    returnType: void
    signature: void ~KqueueFDMultiplexer()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 55
    functionDepth: 0
    functionLinenumber: 55
    functionLinenumberEnd: 58
    functionName: KqueueFDMultiplexer::getName
    functionSourceFile: /src/pdns/pdns/dnsdistdist/kqueuemplexer.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: string
    signature: string getName() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: KqueueFDMultiplexer::KqueueFDMultiplexer
      Src: /src/pdns/pdns/dnsdistdist/kqueuemplexer.cc:67,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - maxEventsHint
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 65
    functionDepth: 0
    functionLinenumber: 65
    functionLinenumberEnd: 68
    functionName: make
    functionSourceFile: /src/pdns/pdns/dnsdistdist/kqueuemplexer.cc
    functionUses: 59
    functionsReached:
    - KqueueFDMultiplexer::KqueueFDMultiplexer
    linkageType: ''
    returnType: FDMultiplexer
    signature: FDMultiplexer * make(unsigned int maxEventsHint)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: FDMultiplexer::getMultiplexerMap
      Src: /src/pdns/pdns/dnsdistdist/kqueuemplexer.cc:74,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 72
    functionDepth: 0
    functionLinenumber: 72
    functionLinenumberEnd: 75
    functionName: KqueueRegisterOurselves
    functionSourceFile: /src/pdns/pdns/dnsdistdist/kqueuemplexer.cc
    functionUses: 0
    functionsReached:
    - FDMultiplexer::getMultiplexerMap
    linkageType: ''
    returnType: void
    signature: void KqueueRegisterOurselves()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: kqueue
      Src: /src/pdns/pdns/dnsdistdist/kqueuemplexer.cc:81,1
    - Dst: FDMultiplexerException
      Src: /src/pdns/pdns/dnsdistdist/kqueuemplexer.cc:83,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/kqueuemplexer.cc:83,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - maxEventsHint
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 78
    functionDepth: 0
    functionLinenumber: 78
    functionLinenumberEnd: 85
    functionName: KqueueFDMultiplexer::KqueueFDMultiplexer
    functionSourceFile: /src/pdns/pdns/dnsdistdist/kqueuemplexer.cc
    functionUses: 3
    functionsReached:
    - kqueue
    - FDMultiplexerException
    - stringerror
    linkageType: ''
    returnType: void
    signature: void KqueueFDMultiplexer::KqueueFDMultiplexer(unsigned int maxEventsHint)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/kqueuemplexer.cc:95,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/kqueuemplexer.cc:98,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - kind
    argTypes:
    - FDMultiplexer::EventKind
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 87
    functionDepth: 0
    functionLinenumber: 87
    functionLinenumberEnd: 99
    functionName: convertEventKind
    functionSourceFile: /src/pdns/pdns/dnsdistdist/kqueuemplexer.cc
    functionUses: 9
    functionsReached:
    - std::runtime_error
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t convertEventKind(FDMultiplexer::EventKind kind)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: EV_SET
      Src: /src/pdns/pdns/dnsdistdist/kqueuemplexer.cc:107,1
    - Dst: convertEventKind
      Src: /src/pdns/pdns/dnsdistdist/kqueuemplexer.cc:107,1
    - Dst: EV_SET
      Src: /src/pdns/pdns/dnsdistdist/kqueuemplexer.cc:112,1
    - Dst: convertEventKind
      Src: /src/pdns/pdns/dnsdistdist/kqueuemplexer.cc:112,1
    - Dst: kevent
      Src: /src/pdns/pdns/dnsdistdist/kqueuemplexer.cc:116,1
    - Dst: FDMultiplexerException
      Src: /src/pdns/pdns/dnsdistdist/kqueuemplexer.cc:117,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/kqueuemplexer.cc:117,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 12
    argCount: 2
    argNames:
    - fd
    - kind
    argTypes:
    - int
    - FDMultiplexer::EventKind
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 119
      start: 101
    functionDepth: 0
    functionLinenumber: 101
    functionLinenumberEnd: 119
    functionName: KqueueFDMultiplexer::addFD
    functionSourceFile: /src/pdns/pdns/dnsdistdist/kqueuemplexer.cc
    functionUses: 0
    functionsReached:
    - stringerror
    - convertEventKind
    - kevent
    - FDMultiplexerException
    - EV_SET
    linkageType: ''
    returnType: void
    signature: void KqueueFDMultiplexer::addFD(int fd, FDMultiplexer::EventKind kind)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: EV_SET
      Src: /src/pdns/pdns/dnsdistdist/kqueuemplexer.cc:127,1
    - Dst: convertEventKind
      Src: /src/pdns/pdns/dnsdistdist/kqueuemplexer.cc:127,1
    - Dst: EV_SET
      Src: /src/pdns/pdns/dnsdistdist/kqueuemplexer.cc:132,1
    - Dst: convertEventKind
      Src: /src/pdns/pdns/dnsdistdist/kqueuemplexer.cc:132,1
    - Dst: kevent
      Src: /src/pdns/pdns/dnsdistdist/kqueuemplexer.cc:136,1
    - Dst: FDMultiplexerException
      Src: /src/pdns/pdns/dnsdistdist/kqueuemplexer.cc:138,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/kqueuemplexer.cc:138,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 12
    argCount: 2
    argNames:
    - fd
    - kind
    argTypes:
    - int
    - FDMultiplexer::EventKind
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 121
    functionDepth: 0
    functionLinenumber: 121
    functionLinenumberEnd: 140
    functionName: KqueueFDMultiplexer::removeFD
    functionSourceFile: /src/pdns/pdns/dnsdistdist/kqueuemplexer.cc
    functionUses: 0
    functionsReached:
    - stringerror
    - convertEventKind
    - kevent
    - FDMultiplexerException
    - EV_SET
    linkageType: ''
    returnType: void
    signature: void KqueueFDMultiplexer::removeFD(int fd, FDMultiplexer::EventKind
      kind)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: kevent
      Src: /src/pdns/pdns/dnsdistdist/kqueuemplexer.cc:148,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/kqueuemplexer.cc:148,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/kqueuemplexer.cc:148,1
    - Dst: FDMultiplexerException
      Src: /src/pdns/pdns/dnsdistdist/kqueuemplexer.cc:151,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/kqueuemplexer.cc:151,1
    - Dst: std::unordered_set::reserve
      Src: /src/pdns/pdns/dnsdistdist/kqueuemplexer.cc:157,1
    - Dst: std::unordered_set::insert
      Src: /src/pdns/pdns/dnsdistdist/kqueuemplexer.cc:159,1
    - Dst: push_back
      Src: /src/pdns/pdns/dnsdistdist/kqueuemplexer.cc:163,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 2
    argNames:
    - ' fds'
    - timeout
    argTypes:
    - std::vector<int>
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 165
      start: 142
    functionDepth: 1
    functionLinenumber: 142
    functionLinenumberEnd: 165
    functionName: KqueueFDMultiplexer::getAvailableFDs
    functionSourceFile: /src/pdns/pdns/dnsdistdist/kqueuemplexer.cc
    functionUses: 0
    functionsReached:
    - push_back
    - stringerror
    - std::unordered_set::reserve
    - std::unordered_set::insert
    - size
    - data
    - kevent
    - FDMultiplexerException
    linkageType: ''
    returnType: void
    signature: void KqueueFDMultiplexer::getAvailableFDs(std::vector<int>& fds, int
      timeout)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: kevent
      Src: /src/pdns/pdns/dnsdistdist/kqueuemplexer.cc:175,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/kqueuemplexer.cc:175,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/kqueuemplexer.cc:175,1
    - Dst: gettimeofday
      Src: /src/pdns/pdns/dnsdistdist/kqueuemplexer.cc:176,1
    - Dst: FDMultiplexerException
      Src: /src/pdns/pdns/dnsdistdist/kqueuemplexer.cc:179,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/kqueuemplexer.cc:179,1
    - Dst: find
      Src: /src/pdns/pdns/dnsdistdist/kqueuemplexer.cc:189,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/kqueuemplexer.cc:190,1
    - Dst: d_callback
      Src: /src/pdns/pdns/dnsdistdist/kqueuemplexer.cc:191,1
    - Dst: find
      Src: /src/pdns/pdns/dnsdistdist/kqueuemplexer.cc:196,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/kqueuemplexer.cc:197,1
    - Dst: d_callback
      Src: /src/pdns/pdns/dnsdistdist/kqueuemplexer.cc:198,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 23
    argCount: 2
    argNames:
    - now
    - timeout
    argTypes:
    - struct timeval*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 204
      start: 167
    functionDepth: 0
    functionLinenumber: 167
    functionLinenumberEnd: 204
    functionName: KqueueFDMultiplexer::run
    functionSourceFile: /src/pdns/pdns/dnsdistdist/kqueuemplexer.cc
    functionUses: 1
    functionsReached:
    - stringerror
    - end
    - size
    - d_callback
    - gettimeofday
    - data
    - kevent
    - FDMultiplexerException
    - find
    linkageType: ''
    returnType: int
    signature: int KqueueFDMultiplexer::run(struct timeval* now, int timeout)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: boost::any_cast<Socket*>
      Src: /src/pdns/pdns/dnsdistdist/kqueuemplexer.cc:210,1
    - Dst: Socket*::recvFrom
      Src: /src/pdns/pdns/dnsdistdist/kqueuemplexer.cc:213,1
    - Dst: string::size
      Src: /src/pdns/pdns/dnsdistdist/kqueuemplexer.cc:214,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - fd
    - ' parameter'
    argTypes:
    - int
    - boost::any
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 215
      start: 207
    functionDepth: 0
    functionLinenumber: 207
    functionLinenumberEnd: 215
    functionName: acceptData
    functionSourceFile: /src/pdns/pdns/dnsdistdist/kqueuemplexer.cc
    functionUses: 0
    functionsReached:
    - string::size
    - boost::any_cast<Socket*>
    - Socket*::recvFrom
    linkageType: ''
    returnType: void
    signature: void acceptData(int fd, boost::any& parameter)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Socket::bind
      Src: /src/pdns/pdns/dnsdistdist/kqueuemplexer.cc:222,1
    - Dst: KqueueFDMultiplexer::KqueueFDMultiplexer
      Src: /src/pdns/pdns/dnsdistdist/kqueuemplexer.cc:224,1
    - Dst: KqueueFDMultiplexer::addReadFD
      Src: /src/pdns/pdns/dnsdistdist/kqueuemplexer.cc:226,1
    - Dst: Socket::getHandle
      Src: /src/pdns/pdns/dnsdistdist/kqueuemplexer.cc:226,1
    - Dst: KqueueFDMultiplexer::run
      Src: /src/pdns/pdns/dnsdistdist/kqueuemplexer.cc:229,1
    - Dst: KqueueFDMultiplexer::removeReadFD
      Src: /src/pdns/pdns/dnsdistdist/kqueuemplexer.cc:231,1
    - Dst: Socket::getHandle
      Src: /src/pdns/pdns/dnsdistdist/kqueuemplexer.cc:231,1
    - Dst: KqueueFDMultiplexer::removeReadFD
      Src: /src/pdns/pdns/dnsdistdist/kqueuemplexer.cc:232,1
    - Dst: Socket::getHandle
      Src: /src/pdns/pdns/dnsdistdist/kqueuemplexer.cc:232,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 233
      start: 217
    functionDepth: 0
    functionLinenumber: 217
    functionLinenumberEnd: 233
    functionName: main
    functionSourceFile: /src/pdns/pdns/dnsdistdist/kqueuemplexer.cc
    functionUses: 33
    functionsReached:
    - Socket::getHandle
    - KqueueFDMultiplexer::KqueueFDMultiplexer
    - KqueueFDMultiplexer::removeReadFD
    - KqueueFDMultiplexer::addReadFD
    - Socket::bind
    - KqueueFDMultiplexer::run
    linkageType: ''
    returnType: int
    signature: int main()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 32
      start: 32
    functionDepth: 0
    functionLinenumber: 32
    functionLinenumberEnd: 32
    functionName: PDNSException::PDNSException
    functionSourceFile: /src/pdns/pdns/dnsdistdist/pdnsexception.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void PDNSException()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/pdnsexception.hh:34,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - r
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 34
      start: 33
    functionDepth: 0
    functionLinenumber: 33
    functionLinenumberEnd: 34
    functionName: PDNSException::PDNSException
    functionSourceFile: /src/pdns/pdns/dnsdistdist/pdnsexception.hh
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void PDNSException(string r)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 42
    functionDepth: 0
    functionLinenumber: 42
    functionLinenumberEnd: 42
    functionName: TimeoutException::TimeoutException
    functionSourceFile: /src/pdns/pdns/dnsdistdist/pdnsexception.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void TimeoutException()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' r'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 43
    functionName: TimeoutException::TimeoutException
    functionSourceFile: /src/pdns/pdns/dnsdistdist/pdnsexception.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void TimeoutException(const string& r)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/remote_logger.cc:39,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/remote_logger.cc:39,1
    - Dst: capacity
      Src: /src/pdns/pdns/dnsdistdist/remote_logger.cc:39,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' str'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 37
    functionDepth: 0
    functionLinenumber: 37
    functionLinenumberEnd: 40
    functionName: CircularWriteBuffer::hasRoomFor
    functionSourceFile: /src/pdns/pdns/dnsdistdist/remote_logger.cc
    functionUses: 1
    functionsReached:
    - capacity
    - size
    linkageType: ''
    returnType: bool
    signature: bool CircularWriteBuffer::hasRoomFor(const std::string& str) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/remote_logger.cc:44,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/remote_logger.cc:44,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/remote_logger.cc:44,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' str'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 42
    functionDepth: 0
    functionLinenumber: 42
    functionLinenumberEnd: 45
    functionName: CircularWriteBuffer::tooBig
    functionSourceFile: /src/pdns/pdns/dnsdistdist/remote_logger.cc
    functionUses: 1
    functionsReached:
    - pdns::max
    - size
    linkageType: ''
    returnType: bool
    signature: bool CircularWriteBuffer::tooBig(const std::string& str) const
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: CircularWriteBuffer::tooBig
      Src: /src/pdns/pdns/dnsdistdist/remote_logger.cc:49,1
    - Dst: CircularWriteBuffer::hasRoomFor
      Src: /src/pdns/pdns/dnsdistdist/remote_logger.cc:49,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsdistdist/remote_logger.cc:54,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/remote_logger.cc:54,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/remote_logger.cc:55,1
    - Dst: insert
      Src: /src/pdns/pdns/dnsdistdist/remote_logger.cc:56,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/remote_logger.cc:56,1
    - Dst: htonl
      Src: /src/pdns/pdns/dnsdistdist/remote_logger.cc:59,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/remote_logger.cc:59,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/remote_logger.cc:60,1
    - Dst: insert
      Src: /src/pdns/pdns/dnsdistdist/remote_logger.cc:61,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/remote_logger.cc:61,1
    - Dst: insert
      Src: /src/pdns/pdns/dnsdistdist/remote_logger.cc:63,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/remote_logger.cc:63,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/remote_logger.cc:63,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/remote_logger.cc:63,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - ' str'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 47
    functionDepth: 1
    functionLinenumber: 47
    functionLinenumberEnd: 65
    functionName: CircularWriteBuffer::write
    functionSourceFile: /src/pdns/pdns/dnsdistdist/remote_logger.cc
    functionUses: 0
    functionsReached:
    - htonl
    - CircularWriteBuffer::tooBig
    - end
    - size
    - reinterpret_cast<const char*>
    - insert
    - begin
    - CircularWriteBuffer::hasRoomFor
    - htons
    linkageType: ''
    returnType: bool
    signature: bool CircularWriteBuffer::write(const std::string& str)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/remote_logger.cc:69,1
    - Dst: array_one
      Src: /src/pdns/pdns/dnsdistdist/remote_logger.cc:74,1
    - Dst: array_two
      Src: /src/pdns/pdns/dnsdistdist/remote_logger.cc:75,1
    - Dst: std::array::at
      Src: /src/pdns/pdns/dnsdistdist/remote_logger.cc:81,1
    - Dst: std::array::at
      Src: /src/pdns/pdns/dnsdistdist/remote_logger.cc:82,1
    - Dst: Utility::writev
      Src: /src/pdns/pdns/dnsdistdist/remote_logger.cc:89,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/dnsdistdist/remote_logger.cc:89,1
    - Dst: clear
      Src: /src/pdns/pdns/dnsdistdist/remote_logger.cc:102,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/remote_logger.cc:103,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/remote_logger.cc:103,1
    - Dst: clear
      Src: /src/pdns/pdns/dnsdistdist/remote_logger.cc:108,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/remote_logger.cc:109,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/dnsdistdist/remote_logger.cc:113,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/remote_logger.cc:113,1
    - Dst: clear
      Src: /src/pdns/pdns/dnsdistdist/remote_logger.cc:114,1
    - Dst: pop_front
      Src: /src/pdns/pdns/dnsdistdist/remote_logger.cc:118,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 35
    argCount: 1
    argNames:
    - fileDesc
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 67
    functionDepth: 1
    functionLinenumber: 67
    functionLinenumberEnd: 123
    functionName: CircularWriteBuffer::flush
    functionSourceFile: /src/pdns/pdns/dnsdistdist/remote_logger.cc
    functionUses: 0
    functionsReached:
    - static_cast<size_t>
    - array_one
    - std::runtime_error
    - stringerror
    - size
    - pop_front
    - std::array::data
    - clear
    - empty
    - Utility::writev
    - std::array::at
    - array_two
    linkageType: ''
    returnType: bool
    signature: bool CircularWriteBuffer::flush(int fileDesc)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<unsigned int>
      Src: /src/pdns/pdns/dnsdistdist/remote_logger.cc:133,1
    - Dst: std::array::at
      Src: /src/pdns/pdns/dnsdistdist/remote_logger.cc:134,1
    - Dst: std::min
      Src: /src/pdns/pdns/dnsdistdist/remote_logger.cc:134,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - result
    argTypes:
    - Result
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 135
      start: 125
    functionDepth: 0
    functionLinenumber: 125
    functionLinenumberEnd: 135
    functionName: '& RemoteLoggerInterface::toErrorString(Result result)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/remote_logger.cc
    functionUses: 0
    functionsReached:
    - static_cast<unsigned int>
    - std::min
    - std::array::at
    linkageType: ''
    returnType: std::string
    signature: std::string & RemoteLoggerInterface::toErrorString(Result result)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: CircularWriteBuffer
      Src: /src/pdns/pdns/dnsdistdist/remote_logger.cc:138,1
    - Dst: RemoteLogger::reconnect
      Src: /src/pdns/pdns/dnsdistdist/remote_logger.cc:141,1
    - Dst: std::thread
      Src: /src/pdns/pdns/dnsdistdist/remote_logger.cc:144,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 6
    argNames:
    - ' remote'
    - timeout
    - maxQueuedBytes
    - reconnectWaitTime
    - asyncConnect
    - frame
    argTypes:
    - ComboAddress
    - uint16_t
    - uint64_t
    - uint8_t
    - bool
    - RemoteLogger::FrameSize
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 145
      start: 137
    functionDepth: 0
    functionLinenumber: 137
    functionLinenumberEnd: 145
    functionName: RemoteLogger::RemoteLogger
    functionSourceFile: /src/pdns/pdns/dnsdistdist/remote_logger.cc
    functionUses: 0
    functionsReached:
    - RemoteLogger::reconnect
    - CircularWriteBuffer
    - std::thread
    linkageType: ''
    returnType: void
    signature: void RemoteLogger::RemoteLogger(const ComboAddress& remote, uint16_t
      timeout, uint64_t maxQueuedBytes, uint8_t reconnectWaitTime, bool asyncConnect,
      RemoteLogger::FrameSize frame)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: make_unique<Socket>
      Src: /src/pdns/pdns/dnsdistdist/remote_logger.cc:150,1
    - Dst: auto::setNonBlocking
      Src: /src/pdns/pdns/dnsdistdist/remote_logger.cc:151,1
    - Dst: auto::connect
      Src: /src/pdns/pdns/dnsdistdist/remote_logger.cc:152,1
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/remote_logger.cc:157,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/remote_logger.cc:158,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/remote_logger.cc:163,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/remote_logger.cc:163,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/remote_logger.cc:163,1
    - Dst: withName
      Src: /src/pdns/pdns/dnsdistdist/remote_logger.cc:164,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/remote_logger.cc:164,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/remote_logger.cc:164,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/remote_logger.cc:166,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/remote_logger.cc:166,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/remote_logger.cc:166,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/remote_logger.cc:166,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/remote_logger.cc:167,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/remote_logger.cc:167,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/remote_logger.cc:167,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 173
      start: 147
    functionDepth: 1
    functionLinenumber: 147
    functionLinenumberEnd: 173
    functionName: RemoteLogger::reconnect
    functionSourceFile: /src/pdns/pdns/dnsdistdist/remote_logger.cc
    functionUses: 3
    functionsReached:
    - std::move
    - SLOG
    - Logging::Loggable
    - withName
    - what
    - auto::connect
    - warnlog
    - lock
    - make_unique<Socket>
    - auto::setNonBlocking
    - dnsdist::logging::getTopLogger
    - toStringWithPort
    linkageType: ''
    returnType: bool
    signature: bool RemoteLogger::reconnect()
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/remote_logger.cc:177,1
    - Dst: auto::d_writer::tooBig
      Src: /src/pdns/pdns/dnsdistdist/remote_logger.cc:179,1
    - Dst: auto::d_writer::hasRoomFor
      Src: /src/pdns/pdns/dnsdistdist/remote_logger.cc:184,1
    - Dst: auto::d_writer::flush
      Src: /src/pdns/pdns/dnsdistdist/remote_logger.cc:192,1
    - Dst: auto::d_socket::getHandle
      Src: /src/pdns/pdns/dnsdistdist/remote_logger.cc:192,1
    - Dst: auto::d_writer::hasRoomFor
      Src: /src/pdns/pdns/dnsdistdist/remote_logger.cc:199,1
    - Dst: auto::d_socket::reset
      Src: /src/pdns/pdns/dnsdistdist/remote_logger.cc:207,1
    - Dst: auto::d_writer::write
      Src: /src/pdns/pdns/dnsdistdist/remote_logger.cc:213,1
    - Dst: auto::d_writer::flush
      Src: /src/pdns/pdns/dnsdistdist/remote_logger.cc:217,1
    - Dst: auto::d_socket::getHandle
      Src: /src/pdns/pdns/dnsdistdist/remote_logger.cc:217,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 31
    argCount: 1
    argNames:
    - ' data'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 222
      start: 175
    functionDepth: 1
    functionLinenumber: 175
    functionLinenumberEnd: 222
    functionName: RemoteLogger::queueData
    functionSourceFile: /src/pdns/pdns/dnsdistdist/remote_logger.cc
    functionUses: 0
    functionsReached:
    - auto::d_writer::flush
    - auto::d_socket::getHandle
    - auto::d_writer::tooBig
    - auto::d_socket::reset
    - auto::d_writer::write
    - lock
    - auto::d_writer::hasRoomFor
    linkageType: ''
    returnType: RemoteLoggerInterface::Result
    signature: RemoteLoggerInterface::Result RemoteLogger::queueData(const std::string&
      data)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: setThreadName
      Src: /src/pdns/pdns/dnsdistdist/remote_logger.cc:234,1
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/remote_logger.cc:242,1
    - Dst: RemoteLogger::reconnect
      Src: /src/pdns/pdns/dnsdistdist/remote_logger.cc:244,1
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/remote_logger.cc:251,1
    - Dst: auto::d_writer::flush
      Src: /src/pdns/pdns/dnsdistdist/remote_logger.cc:256,1
    - Dst: auto::d_socket::getHandle
      Src: /src/pdns/pdns/dnsdistdist/remote_logger.cc:256,1
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/remote_logger.cc:263,1
    - Dst: reset
      Src: /src/pdns/pdns/dnsdistdist/remote_logger.cc:263,1
    - Dst: RemoteLogger::reconnect
      Src: /src/pdns/pdns/dnsdistdist/remote_logger.cc:269,1
    - Dst: std::this_thread::sleep_for
      Src: /src/pdns/pdns/dnsdistdist/remote_logger.cc:272,1
    - Dst: std::chrono::seconds
      Src: /src/pdns/pdns/dnsdistdist/remote_logger.cc:272,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/remote_logger.cc:277,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/remote_logger.cc:277,1
    - Dst: withName
      Src: /src/pdns/pdns/dnsdistdist/remote_logger.cc:278,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/remote_logger.cc:278,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/remote_logger.cc:280,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/remote_logger.cc:280,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/remote_logger.cc:280,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/remote_logger.cc:281,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/remote_logger.cc:281,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/remote_logger.cc:286,1
    - Dst: withName
      Src: /src/pdns/pdns/dnsdistdist/remote_logger.cc:287,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/remote_logger.cc:289,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/remote_logger.cc:289,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/remote_logger.cc:290,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 34
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 293
      start: 224
    functionDepth: 1
    functionLinenumber: 224
    functionLinenumberEnd: 293
    functionName: RemoteLogger::maintenanceThread
    functionSourceFile: /src/pdns/pdns/dnsdistdist/remote_logger.cc
    functionUses: 0
    functionsReached:
    - std::this_thread::sleep_for
    - errlog
    - reset
    - SLOG
    - std::chrono::seconds
    - withName
    - auto::d_writer::flush
    - auto::d_socket::getHandle
    - what
    - lock
    - RemoteLogger::reconnect
    - dnsdist::logging::getTopLogger
    - setThreadName
    linkageType: ''
    returnType: void
    signature: void RemoteLogger::maintenanceThread()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: join
      Src: /src/pdns/pdns/dnsdistdist/remote_logger.cc:299,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 300
      start: 295
    functionDepth: 0
    functionLinenumber: 295
    functionLinenumberEnd: 300
    functionName: RemoteLogger::~RemoteLogger()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/remote_logger.cc
    functionUses: 0
    functionsReached:
    - join
    linkageType: ''
    returnType: void
    signature: void RemoteLogger::~RemoteLogger()
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: getOurName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:46,1
    - Dst: Socket::setNonBlocking
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:51,1
    - Dst: Socket::connect
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:52,1
    - Dst: time
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:55,1
    - Dst: entries::read_lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:58,1
    - Dst: d_labels::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:61,1
    - Dst: std::get_if<pdns::stat_t*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:66,1
    - Dst: load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:67,1
    - Dst: std::get_if<pdns::stat_double_t*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:69,1
    - Dst: load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:70,1
    - Dst: std::get_if<dnsdist::metrics::Stats::statfunction_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:72,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:79,1
    - Dst: getName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:80,1
    - Dst: d_config::remote::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:80,1
    - Dst: getName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:80,1
    - Dst: std::replace
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:81,1
    - Dst: string::begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:81,1
    - Dst: string::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:81,1
    - Dst: queries::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:90,1
    - Dst: responses::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:91,1
    - Dst: reuseds::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:92,1
    - Dst: sendErrors::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:95,1
    - Dst: outstanding::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:96,1
    - Dst: tcpDiedSendingQuery::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:97,1
    - Dst: tcpDiedReadingResponse::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:98,1
    - Dst: tcpGaveUp::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:99,1
    - Dst: tcpReadTimeouts::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:100,1
    - Dst: tcpWriteTimeouts::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:101,1
    - Dst: tcpConnectTimeouts::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:102,1
    - Dst: tcpCurrentConnections::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:103,1
    - Dst: tcpMaxConcurrentConnections::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:104,1
    - Dst: tcpNewConnections::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:105,1
    - Dst: tcpReusedConnections::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:106,1
    - Dst: tlsResumptions::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:107,1
    - Dst: tcpAvgQueriesPerConnection::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:108,1
    - Dst: tcpAvgConnectionDuration::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:109,1
    - Dst: tcpTooManyConcurrentConnections::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:110,1
    - Dst: dnsdist::getFrontends
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:121,1
    - Dst: local::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:126,1
    - Dst: std::replace
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:127,1
    - Dst: string::begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:127,1
    - Dst: string::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:127,1
    - Dst: std::map::insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:128,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:130,1
    - Dst: queries::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:142,1
    - Dst: responses::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:143,1
    - Dst: tcpDiedReadingQuery::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:144,1
    - Dst: tcpDiedSendingResponse::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:145,1
    - Dst: tcpGaveUp::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:146,1
    - Dst: tcpClientTimeouts::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:147,1
    - Dst: tcpDownstreamTimeouts::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:148,1
    - Dst: tcpCurrentConnections::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:149,1
    - Dst: tcpMaxConcurrentConnections::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:150,1
    - Dst: tcpAvgQueriesPerConnection::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:151,1
    - Dst: tcpAvgConnectionDuration::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:152,1
    - Dst: tcpAvgIOsPerConnection::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:153,1
    - Dst: tls10queries::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:154,1
    - Dst: tls11queries::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:155,1
    - Dst: tls12queries::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:156,1
    - Dst: tls13queries::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:157,1
    - Dst: tlsUnknownqueries::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:158,1
    - Dst: tlsNewSessions::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:159,1
    - Dst: tlsResumptions::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:160,1
    - Dst: tlsUnknownTicketKey::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:161,1
    - Dst: tlsInactiveTicketKey::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:162,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:183,1
    - Dst: std::replace
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:185,1
    - Dst: string::begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:185,1
    - Dst: string::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:185,1
    - Dst: string::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:186,1
    - Dst: countServers
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:199,1
    - Dst: countServers
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:201,1
    - Dst: getMaxEntries
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:205,1
    - Dst: getEntriesCount
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:207,1
    - Dst: getHits
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:209,1
    - Dst: getMisses
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:211,1
    - Dst: getDeferredInserts
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:213,1
    - Dst: getDeferredLookups
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:215,1
    - Dst: getLookupCollisions
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:217,1
    - Dst: getInsertCollisions
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:219,1
    - Dst: getTTLTooShorts
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:221,1
    - Dst: getCleanupCount
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:223,1
    - Dst: dnsdist::getDoHFrontends
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:231,1
    - Dst: d_tlsContext::d_addr::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:232,1
    - Dst: std::replace
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:233,1
    - Dst: string::begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:233,1
    - Dst: string::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:233,1
    - Dst: std::replace
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:234,1
    - Dst: string::begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:234,1
    - Dst: string::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:234,1
    - Dst: std::replace
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:235,1
    - Dst: string::begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:235,1
    - Dst: string::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:235,1
    - Dst: std::replace
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:236,1
    - Dst: string::begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:236,1
    - Dst: string::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:236,1
    - Dst: std::map::insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:238,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:240,1
    - Dst: write_lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:276,1
    - Dst: std::replace
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:279,1
    - Dst: std::string::begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:279,1
    - Dst: std::string::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:279,1
    - Dst: auto::clear
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:282,1
    - Dst: ostringstream::str
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:285,1
    - Dst: waitForRWData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:287,1
    - Dst: Socket::getHandle
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:287,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:290,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:290,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:290,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:290,1
    - Dst: info
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:291,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:291,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:291,1
    - Dst: Socket::setBlocking
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:294,1
    - Dst: writen2
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:295,1
    - Dst: Socket::getHandle
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:295,1
    - Dst: string::c_str
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:295,1
    - Dst: string::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:295,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:298,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:298,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:298,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:298,1
    - Dst: error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:299,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:299,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 165
    argCount: 2
    argNames:
    - ' endpoint'
    - ' logger'
    argTypes:
    - Carbon::Endpoint
    - Logr::Logger
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 304
      start: 42
    functionDepth: 3
    functionLinenumber: 42
    functionLinenumberEnd: 304
    functionName: dnsdist::doOneCarbonExport
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc
    functionUses: 0
    functionsReached:
    - outstanding::load
    - queries::load
    - tcpNewConnections::load
    - getHits
    - sendErrors::load
    - time
    - tcpClientTimeouts::load
    - getMisses
    - getOurName
    - tcpDiedReadingResponse::load
    - VERBOSESLOG
    - toStringWithPort
    - tcpConnectTimeouts::load
    - infolog
    - writen2
    - std::string::end
    - stringerror
    - tcpReusedConnections::load
    - string::end
    - tlsUnknownTicketKey::load
    - Socket::setNonBlocking
    - string::empty
    - warnlog
    - tcpReadTimeouts::load
    - getCleanupCount
    - getTTLTooShorts
    - tcpDiedSendingQuery::load
    - tcpCurrentConnections::load
    - getInsertCollisions
    - tls12queries::load
    - countServers
    - tcpGaveUp::load
    - tlsUnknownqueries::load
    - getMaxEntries
    - tlsNewSessions::load
    - d_config::remote::toStringWithPort
    - tcpDiedSendingResponse::load
    - std::replace
    - tcpAvgIOsPerConnection::load
    - std::get_if<dnsdist::metrics::Stats::statfunction_t>
    - local::toStringWithPort
    - getDeferredLookups
    - tls10queries::load
    - getDeferredInserts
    - Socket::setBlocking
    - std::string::begin
    - dnsdist::configuration::getCurrentRuntimeConfiguration
    - std::get_if<pdns::stat_double_t*>
    - ostringstream::str
    - waitForRWData
    - tcpTooManyConcurrentConnections::load
    - d_tlsContext::d_addr::toStringWithPort
    - dnsdist::getFrontends
    - std::get_if<pdns::stat_t*>
    - tls11queries::load
    - tlsInactiveTicketKey::load
    - responses::load
    - std::to_string
    - dnsdist::getDoHFrontends
    - tcpAvgQueriesPerConnection::load
    - tcpAvgConnectionDuration::load
    - error
    - tlsResumptions::load
    - tcpWriteTimeouts::load
    - tcpDiedReadingQuery::load
    - SLOG
    - string::size
    - getName
    - tcpDownstreamTimeouts::load
    - Logging::Loggable
    - tls13queries::load
    - Socket::connect
    - getEntriesCount
    - auto::clear
    - entries::read_lock
    - string::begin
    - load
    - string::c_str
    - tcpMaxConcurrentConnections::load
    - Socket::getHandle
    - d_labels::empty
    - reuseds::load
    - what
    - std::map::insert
    - getLookupCollisions
    - info
    - write_lock
    linkageType: ''
    returnType: bool
    signature: bool doOneCarbonExport(const Carbon::Endpoint& endpoint, const Logr::Logger&
      logger)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: setThreadName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:308,1
    - Dst: getOurName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:309,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:310,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:310,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:310,1
    - Dst: dnsdist::configuration::refreshLocalRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:319,1
    - Dst: DTime::DTime
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:321,1
    - Dst: DTime::set
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:322,1
    - Dst: dnsdist::doOneCarbonExport
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:323,1
    - Dst: DTime::udiff
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:324,1
    - Dst: static_cast<unsigned int>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:325,1
    - Dst: usleep
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:327,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:330,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:330,1
    - Dst: server::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:330,1
    - Dst: auto::info
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:331,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:331,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:331,1
    - Dst: ExponentialBackOffTimer::get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:336,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:337,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:340,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:340,1
    - Dst: server::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:340,1
    - Dst: getOurName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:340,1
    - Dst: auto::info
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:341,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:341,1
    - Dst: std::this_thread::sleep_for
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:342,1
    - Dst: std::chrono::seconds
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:342,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:347,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:347,1
    - Dst: server::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:347,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:347,1
    - Dst: auto::error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:348,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:348,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:351,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:351,1
    - Dst: server::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:351,1
    - Dst: auto::error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:352,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:355,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:355,1
    - Dst: server::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:355,1
    - Dst: auto::info
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:356,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 28
    argCount: 1
    argNames:
    - ' endpoint'
    argTypes:
    - Carbon::Endpoint
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 358
      start: 306
    functionDepth: 4
    functionLinenumber: 306
    functionLinenumberEnd: 358
    functionName: dnsdist::carbonHandler
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc
    functionUses: 0
    functionsReached:
    - errlog
    - std::chrono::seconds
    - usleep
    - DTime::set
    - std::this_thread::sleep_for
    - SLOG
    - Logging::Loggable
    - ExponentialBackOffTimer::get
    - DTime::DTime
    - auto::error
    - dnsdist::logging::getTopLogger
    - setThreadName
    - auto::info
    - getOurName
    - pdns::max
    - DTime::udiff
    - VERBOSESLOG
    - static_cast<unsigned int>
    - what
    - infolog
    - dnsdist::doOneCarbonExport
    - dnsdist::configuration::refreshLocalRuntimeConfiguration
    - server::toStringWithPort
    linkageType: ''
    returnType: void
    signature: void carbonHandler(const Carbon::Endpoint& endpoint)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:362,1
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:363,1
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:365,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:366,1
    - Dst: static_cast<unsigned int>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:366,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - ' address'
    - ' ourName'
    - interval
    - ' namespace_name'
    - ' instance_name'
    argTypes:
    - std::string
    - std::optional<std::string>
    - uint64_t
    - std::string
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 367
      start: 360
    functionDepth: 0
    functionLinenumber: 360
    functionLinenumberEnd: 367
    functionName: dnsdist::Carbon::newEndpoint
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc
    functionUses: 0
    functionsReached:
    - empty
    - pdns::max
    - static_cast<unsigned int>
    - ComboAddress
    linkageType: ''
    returnType: Carbon::Endpoint
    signature: Carbon::Endpoint Carbon::newEndpoint(const std::string& address, const
      std::optional<std::string>& ourName, uint64_t interval, const std::string& namespace_name,
      const std::string& instance_name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::thread::detach
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:373,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - ' endpoints'
    argTypes:
    - std::vector<Carbon::Endpoint>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 375
      start: 369
    functionDepth: 0
    functionLinenumber: 369
    functionLinenumberEnd: 375
    functionName: dnsdist::Carbon::run
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc
    functionUses: 0
    functionsReached:
    - std::thread::detach
    linkageType: ''
    returnType: void
    signature: void Carbon::run(const std::vector<Carbon::Endpoint>& endpoints)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: value_or
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:379,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:381,1
    - Dst: std::replace
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:383,1
    - Dst: std::string::begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:383,1
    - Dst: std::string::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:383,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 385
      start: 377
    functionDepth: 2
    functionLinenumber: 377
    functionLinenumberEnd: 385
    functionName: Carbon::Endpoint::getOurName() const
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc
    functionUses: 0
    functionsReached:
    - std::string::begin
    - dnsdist::configuration::getCurrentRuntimeConfiguration
    - std::string::end
    - value_or
    - std::replace
    linkageType: ''
    returnType: std::string
    signature: std::string Carbon::Endpoint::getOurName() const
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: getOurName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:46,1
    - Dst: Socket::setNonBlocking
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:51,1
    - Dst: Socket::connect
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:52,1
    - Dst: time
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:55,1
    - Dst: entries::read_lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:58,1
    - Dst: d_labels::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:61,1
    - Dst: std::get_if<pdns::stat_t*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:66,1
    - Dst: load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:67,1
    - Dst: std::get_if<pdns::stat_double_t*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:69,1
    - Dst: load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:70,1
    - Dst: std::get_if<dnsdist::metrics::Stats::statfunction_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:72,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:79,1
    - Dst: getName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:80,1
    - Dst: d_config::remote::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:80,1
    - Dst: getName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:80,1
    - Dst: std::replace
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:81,1
    - Dst: string::begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:81,1
    - Dst: string::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:81,1
    - Dst: queries::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:90,1
    - Dst: responses::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:91,1
    - Dst: reuseds::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:92,1
    - Dst: sendErrors::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:95,1
    - Dst: outstanding::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:96,1
    - Dst: tcpDiedSendingQuery::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:97,1
    - Dst: tcpDiedReadingResponse::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:98,1
    - Dst: tcpGaveUp::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:99,1
    - Dst: tcpReadTimeouts::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:100,1
    - Dst: tcpWriteTimeouts::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:101,1
    - Dst: tcpConnectTimeouts::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:102,1
    - Dst: tcpCurrentConnections::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:103,1
    - Dst: tcpMaxConcurrentConnections::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:104,1
    - Dst: tcpNewConnections::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:105,1
    - Dst: tcpReusedConnections::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:106,1
    - Dst: tlsResumptions::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:107,1
    - Dst: tcpAvgQueriesPerConnection::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:108,1
    - Dst: tcpAvgConnectionDuration::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:109,1
    - Dst: tcpTooManyConcurrentConnections::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:110,1
    - Dst: dnsdist::getFrontends
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:121,1
    - Dst: local::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:126,1
    - Dst: std::replace
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:127,1
    - Dst: string::begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:127,1
    - Dst: string::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:127,1
    - Dst: std::map::insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:128,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:130,1
    - Dst: queries::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:142,1
    - Dst: responses::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:143,1
    - Dst: tcpDiedReadingQuery::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:144,1
    - Dst: tcpDiedSendingResponse::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:145,1
    - Dst: tcpGaveUp::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:146,1
    - Dst: tcpClientTimeouts::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:147,1
    - Dst: tcpDownstreamTimeouts::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:148,1
    - Dst: tcpCurrentConnections::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:149,1
    - Dst: tcpMaxConcurrentConnections::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:150,1
    - Dst: tcpAvgQueriesPerConnection::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:151,1
    - Dst: tcpAvgConnectionDuration::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:152,1
    - Dst: tcpAvgIOsPerConnection::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:153,1
    - Dst: tls10queries::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:154,1
    - Dst: tls11queries::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:155,1
    - Dst: tls12queries::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:156,1
    - Dst: tls13queries::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:157,1
    - Dst: tlsUnknownqueries::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:158,1
    - Dst: tlsNewSessions::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:159,1
    - Dst: tlsResumptions::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:160,1
    - Dst: tlsUnknownTicketKey::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:161,1
    - Dst: tlsInactiveTicketKey::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:162,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:183,1
    - Dst: std::replace
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:185,1
    - Dst: string::begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:185,1
    - Dst: string::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:185,1
    - Dst: string::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:186,1
    - Dst: countServers
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:199,1
    - Dst: countServers
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:201,1
    - Dst: getMaxEntries
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:205,1
    - Dst: getEntriesCount
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:207,1
    - Dst: getHits
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:209,1
    - Dst: getMisses
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:211,1
    - Dst: getDeferredInserts
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:213,1
    - Dst: getDeferredLookups
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:215,1
    - Dst: getLookupCollisions
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:217,1
    - Dst: getInsertCollisions
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:219,1
    - Dst: getTTLTooShorts
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:221,1
    - Dst: getCleanupCount
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:223,1
    - Dst: dnsdist::getDoHFrontends
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:231,1
    - Dst: d_tlsContext::d_addr::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:232,1
    - Dst: std::replace
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:233,1
    - Dst: string::begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:233,1
    - Dst: string::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:233,1
    - Dst: std::replace
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:234,1
    - Dst: string::begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:234,1
    - Dst: string::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:234,1
    - Dst: std::replace
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:235,1
    - Dst: string::begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:235,1
    - Dst: string::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:235,1
    - Dst: std::replace
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:236,1
    - Dst: string::begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:236,1
    - Dst: string::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:236,1
    - Dst: std::map::insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:238,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:240,1
    - Dst: write_lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:276,1
    - Dst: std::replace
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:279,1
    - Dst: std::string::begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:279,1
    - Dst: std::string::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:279,1
    - Dst: auto::clear
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:282,1
    - Dst: ostringstream::str
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:285,1
    - Dst: waitForRWData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:287,1
    - Dst: Socket::getHandle
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:287,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:290,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:290,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:290,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:290,1
    - Dst: info
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:291,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:291,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:291,1
    - Dst: Socket::setBlocking
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:294,1
    - Dst: writen2
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:295,1
    - Dst: Socket::getHandle
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:295,1
    - Dst: string::c_str
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:295,1
    - Dst: string::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:295,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:298,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:298,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:298,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:298,1
    - Dst: error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:299,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:299,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 165
    argCount: 2
    argNames:
    - ' endpoint'
    - ' logger'
    argTypes:
    - Carbon::Endpoint
    - Logr::Logger
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 304
      start: 42
    functionDepth: 3
    functionLinenumber: 42
    functionLinenumberEnd: 304
    functionName: dnsdist::doOneCarbonExport
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc
    functionUses: 1
    functionsReached:
    - outstanding::load
    - queries::load
    - tcpNewConnections::load
    - getHits
    - sendErrors::load
    - time
    - tcpClientTimeouts::load
    - getMisses
    - getOurName
    - tcpDiedReadingResponse::load
    - VERBOSESLOG
    - toStringWithPort
    - tcpConnectTimeouts::load
    - infolog
    - writen2
    - std::string::end
    - stringerror
    - tcpReusedConnections::load
    - string::end
    - tlsUnknownTicketKey::load
    - Socket::setNonBlocking
    - string::empty
    - warnlog
    - tcpReadTimeouts::load
    - getCleanupCount
    - getTTLTooShorts
    - tcpDiedSendingQuery::load
    - tcpCurrentConnections::load
    - getInsertCollisions
    - tls12queries::load
    - countServers
    - tcpGaveUp::load
    - tlsUnknownqueries::load
    - getMaxEntries
    - tlsNewSessions::load
    - d_config::remote::toStringWithPort
    - tcpDiedSendingResponse::load
    - std::replace
    - tcpAvgIOsPerConnection::load
    - std::get_if<dnsdist::metrics::Stats::statfunction_t>
    - local::toStringWithPort
    - getDeferredLookups
    - tls10queries::load
    - getDeferredInserts
    - Socket::setBlocking
    - std::string::begin
    - dnsdist::configuration::getCurrentRuntimeConfiguration
    - std::get_if<pdns::stat_double_t*>
    - ostringstream::str
    - waitForRWData
    - tcpTooManyConcurrentConnections::load
    - d_tlsContext::d_addr::toStringWithPort
    - dnsdist::getFrontends
    - std::get_if<pdns::stat_t*>
    - tls11queries::load
    - tlsInactiveTicketKey::load
    - responses::load
    - std::to_string
    - dnsdist::getDoHFrontends
    - tcpAvgQueriesPerConnection::load
    - tcpAvgConnectionDuration::load
    - error
    - tlsResumptions::load
    - tcpWriteTimeouts::load
    - tcpDiedReadingQuery::load
    - SLOG
    - string::size
    - getName
    - tcpDownstreamTimeouts::load
    - Logging::Loggable
    - tls13queries::load
    - Socket::connect
    - getEntriesCount
    - auto::clear
    - entries::read_lock
    - string::begin
    - load
    - string::c_str
    - tcpMaxConcurrentConnections::load
    - Socket::getHandle
    - d_labels::empty
    - reuseds::load
    - what
    - std::map::insert
    - getLookupCollisions
    - info
    - write_lock
    linkageType: ''
    returnType: bool
    signature: bool doOneCarbonExport(const Carbon::Endpoint& endpoint, const Logr::Logger&
      logger)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: setThreadName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:308,1
    - Dst: getOurName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:309,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:310,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:310,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:310,1
    - Dst: dnsdist::configuration::refreshLocalRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:319,1
    - Dst: DTime::DTime
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:321,1
    - Dst: DTime::set
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:322,1
    - Dst: dnsdist::doOneCarbonExport
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:323,1
    - Dst: DTime::udiff
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:324,1
    - Dst: static_cast<unsigned int>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:325,1
    - Dst: usleep
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:327,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:330,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:330,1
    - Dst: server::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:330,1
    - Dst: auto::info
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:331,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:331,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:331,1
    - Dst: ExponentialBackOffTimer::get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:336,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:337,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:340,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:340,1
    - Dst: server::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:340,1
    - Dst: getOurName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:340,1
    - Dst: auto::info
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:341,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:341,1
    - Dst: std::this_thread::sleep_for
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:342,1
    - Dst: std::chrono::seconds
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:342,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:347,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:347,1
    - Dst: server::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:347,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:347,1
    - Dst: auto::error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:348,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:348,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:351,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:351,1
    - Dst: server::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:351,1
    - Dst: auto::error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:352,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:355,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:355,1
    - Dst: server::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:355,1
    - Dst: auto::info
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:356,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 28
    argCount: 1
    argNames:
    - ' endpoint'
    argTypes:
    - Carbon::Endpoint
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 358
      start: 306
    functionDepth: 4
    functionLinenumber: 306
    functionLinenumberEnd: 358
    functionName: dnsdist::carbonHandler
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc
    functionUses: 0
    functionsReached:
    - errlog
    - std::chrono::seconds
    - usleep
    - DTime::set
    - std::this_thread::sleep_for
    - SLOG
    - Logging::Loggable
    - ExponentialBackOffTimer::get
    - DTime::DTime
    - auto::error
    - dnsdist::logging::getTopLogger
    - setThreadName
    - auto::info
    - getOurName
    - pdns::max
    - DTime::udiff
    - VERBOSESLOG
    - static_cast<unsigned int>
    - what
    - infolog
    - dnsdist::doOneCarbonExport
    - dnsdist::configuration::refreshLocalRuntimeConfiguration
    - server::toStringWithPort
    linkageType: ''
    returnType: void
    signature: void carbonHandler(const Carbon::Endpoint& endpoint)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:362,1
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:363,1
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:365,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:366,1
    - Dst: static_cast<unsigned int>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:366,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - ' address'
    - ' ourName'
    - interval
    - ' namespace_name'
    - ' instance_name'
    argTypes:
    - std::string
    - std::optional<std::string>
    - uint64_t
    - std::string
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 367
      start: 360
    functionDepth: 0
    functionLinenumber: 360
    functionLinenumberEnd: 367
    functionName: dnsdist::Carbon::newEndpoint
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc
    functionUses: 0
    functionsReached:
    - empty
    - pdns::max
    - static_cast<unsigned int>
    - ComboAddress
    linkageType: ''
    returnType: Carbon::Endpoint
    signature: Carbon::Endpoint Carbon::newEndpoint(const std::string& address, const
      std::optional<std::string>& ourName, uint64_t interval, const std::string& namespace_name,
      const std::string& instance_name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::thread::detach
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:373,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - ' endpoints'
    argTypes:
    - std::vector<Carbon::Endpoint>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 375
      start: 369
    functionDepth: 0
    functionLinenumber: 369
    functionLinenumberEnd: 375
    functionName: dnsdist::Carbon::run
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc
    functionUses: 0
    functionsReached:
    - std::thread::detach
    linkageType: ''
    returnType: void
    signature: void Carbon::run(const std::vector<Carbon::Endpoint>& endpoints)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: value_or
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:379,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:381,1
    - Dst: std::replace
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:383,1
    - Dst: std::string::begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:383,1
    - Dst: std::string::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:383,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 385
      start: 377
    functionDepth: 2
    functionLinenumber: 377
    functionLinenumberEnd: 385
    functionName: Carbon::Endpoint::getOurName() const
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc
    functionUses: 0
    functionsReached:
    - std::string::begin
    - dnsdist::configuration::getCurrentRuntimeConfiguration
    - std::string::end
    - value_or
    - std::replace
    linkageType: ''
    returnType: std::string
    signature: std::string Carbon::Endpoint::getOurName() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: time
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc:395,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ' str'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 396
      start: 392
    functionDepth: 0
    functionLinenumber: 392
    functionLinenumberEnd: 396
    functionName: uptimeOfProcess
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc
    functionUses: 0
    functionsReached:
    - time
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t uptimeOfProcess(const std::string& str)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 43
    functionName: DNSDistProtoBufMessage::DNSDistProtoBufMessage
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-protobuf.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void DNSDistProtoBufMessage(const DNSQuestion&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 44
    functionDepth: 0
    functionLinenumber: 44
    functionLinenumberEnd: 44
    functionName: DNSDistProtoBufMessage::DNSDistProtoBufMessage
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-protobuf.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void DNSDistProtoBufMessage(const DNSResponse&&, bool)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-protobuf.hh:80,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 3
    argNames:
    - name
    - type
    - class_
    argTypes:
    - DNSName
    - uint16_t
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 79
    functionDepth: 0
    functionLinenumber: 79
    functionLinenumberEnd: 82
    functionName: DNSDistProtoBufMessage::PBQuestion
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-protobuf.hh
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void PBQuestion(DNSName name, uint16_t type, uint16_t class_)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: exchange
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rings.cc:32,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rings.cc:33,1
    - Dst: resize
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rings.cc:46,1
    - Dst: std::make_unique<Shard>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rings.cc:50,1
    - Dst: shouldRecordQueries
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rings.cc:51,1
    - Dst: queryRing::lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rings.cc:52,1
    - Dst: shouldRecordResponses
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rings.cc:54,1
    - Dst: respRing::lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rings.cc:55,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 24
    argCount: 1
    argNames:
    - ' config'
    argTypes:
    - RingsConfiguration
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 30
    functionDepth: 1
    functionLinenumber: 30
    functionLinenumberEnd: 62
    functionName: Rings::init
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rings.cc
    functionUses: 0
    functionsReached:
    - queryRing::lock
    - resize
    - std::runtime_error
    - shouldRecordQueries
    - exchange
    - std::make_unique<Shard>
    - shouldRecordResponses
    - respRing::lock
    linkageType: ''
    returnType: void
    signature: void Rings::init(const RingsConfiguration& config)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: queryRing::lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rings.cc:68,1
    - Dst: std::set::insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rings.cc:70,1
    - Dst: std::set::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rings.cc:73,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 64
    functionDepth: 1
    functionLinenumber: 64
    functionLinenumberEnd: 74
    functionName: Rings::numDistinctRequestors
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rings.cc
    functionUses: 0
    functionsReached:
    - queryRing::lock
    - std::set::insert
    - std::set::size
    linkageType: ''
    returnType: size_t
    signature: size_t Rings::numDistinctRequestors()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: queryRing::lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rings.cc:82,1
    - Dst: respRing::lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rings.cc:89,1
    - Dst: ret_t::reserve
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rings.cc:99,1
    - Dst: map::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rings.cc:99,1
    - Dst: ret_t::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rings.cc:101,1
    - Dst: ret_t::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rings.cc:103,1
    - Dst: ret_t::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rings.cc:103,1
    - Dst: partial_sort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rings.cc:104,1
    - Dst: ret_t::begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rings.cc:104,1
    - Dst: ret_t::begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rings.cc:104,1
    - Dst: ret_t::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rings.cc:104,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rings.cc:111,1
    - Dst: std::unordered_map::insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rings.cc:115,1
    - Dst: second::toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rings.cc:115,1
    - Dst: static_cast<double>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rings.cc:115,1
    - Dst: std::unordered_map::insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rings.cc:120,1
    - Dst: static_cast<double>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rings.cc:120,1
    - Dst: static_cast<double>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rings.cc:120,1
    - Dst: std::unordered_map::insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rings.cc:123,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 29
    argCount: 1
    argNames:
    - numentries
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 127
      start: 76
    functionDepth: 1
    functionLinenumber: 76
    functionLinenumberEnd: 127
    functionName: Rings::getTopBandwidth
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rings.cc
    functionUses: 0
    functionsReached:
    - ret_t::end
    - queryRing::lock
    - static_cast<double>
    - ret_t::size
    - ret_t::begin
    - ret_t::emplace_back
    - second::toString
    - partial_sort
    - std::unordered_map::insert
    - ret_t::reserve
    - map::size
    - respRing::lock
    - static_cast<int>
    linkageType: ''
    returnType: std::unordered_map<int, vector<boost::variant<string, double>>>
    signature: std::unordered_map<int, vector<boost::variant<string, double>>> Rings::getTopBandwidth(unsigned
      int numentries)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rings.cc:133,1
    - Dst: memset
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rings.cc:139,1
    - Dst: std::getline
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rings.cc:141,1
    - Dst: boost::trim_right_if
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rings.cc:142,1
    - Dst: boost::is_any_of
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rings.cc:142,1
    - Dst: boost::trim_left
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rings.cc:143,1
    - Dst: stringtok
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rings.cc:146,1
    - Dst: vector::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rings.cc:148,1
    - Dst: vector::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rings.cc:150,1
    - Dst: vector::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rings.cc:150,1
    - Dst: vector::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rings.cc:154,1
    - Dst: stringtok
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rings.cc:160,1
    - Dst: vector::at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rings.cc:160,1
    - Dst: vector::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rings.cc:161,1
    - Dst: vector::at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rings.cc:162,1
    - Dst: std::stoi
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rings.cc:168,1
    - Dst: vector::at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rings.cc:168,1
    - Dst: static_cast<long>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rings.cc:169,1
    - Dst: std::stoi
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rings.cc:169,1
    - Dst: vector::at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rings.cc:169,1
    - Dst: vector::at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rings.cc:172,1
    - Dst: vector::at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rings.cc:176,1
    - Dst: vector::at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rings.cc:178,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rings.cc:180,1
    - Dst: vector::at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rings.cc:180,1
    - Dst: vector::at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rings.cc:184,1
    - Dst: QType::chartocode
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rings.cc:185,1
    - Dst: vector::at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rings.cc:185,1
    - Dst: insertResponse
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rings.cc:188,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rings.cc:188,1
    - Dst: QType::getCode
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rings.cc:188,1
    - Dst: insertQuery
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rings.cc:191,1
    - Dst: QType::getCode
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rings.cc:191,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 41
    argCount: 2
    argNames:
    - ' filepath'
    - ' now'
    argTypes:
    - std::string
    - struct timespec
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 197
      start: 129
    functionDepth: 2
    functionLinenumber: 129
    functionLinenumberEnd: 197
    functionName: Rings::loadFromFile
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rings.cc
    functionUses: 0
    functionsReached:
    - std::move
    - stringtok
    - vector::at
    - std::runtime_error
    - boost::trim_right_if
    - memset
    - insertQuery
    - boost::is_any_of
    - static_cast<long>
    - QType::chartocode
    - QType::getCode
    - std::stoi
    - vector::size
    - boost::trim_left
    - insertResponse
    - std::getline
    - ComboAddress
    linkageType: ''
    returnType: size_t
    signature: size_t Rings::loadFromFile(const std::string& filepath, const struct
      timespec& now)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: isIPv4
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rings.cc:202,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 206
      start: 199
    functionDepth: 0
    functionLinenumber: 199
    functionLinenumberEnd: 206
    functionName: Rings::Response::isACacheHit() const
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rings.cc
    functionUses: 0
    functionsReached:
    - isIPv4
    linkageType: ''
    returnType: bool
    signature: bool Rings::Response::isACacheHit() const
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ComboAddress::isIPv4
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-kvs.cc:34,1
    - Dst: ComboAddress::truncate
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-kvs.cc:35,1
    - Dst: std::string::reserve
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-kvs.cc:36,1
    - Dst: std::string::append
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-kvs.cc:37,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-kvs.cc:37,1
    - Dst: ComboAddress::isIPv6
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-kvs.cc:39,1
    - Dst: ComboAddress::truncate
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-kvs.cc:40,1
    - Dst: std::string::reserve
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-kvs.cc:41,1
    - Dst: std::string::append
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-kvs.cc:42,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-kvs.cc:42,1
    - Dst: std::string::append
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-kvs.cc:46,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-kvs.cc:46,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-kvs.cc:49,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-kvs.cc:49,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 1
    argNames:
    - ' addr'
    argTypes:
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 28
    functionDepth: 0
    functionLinenumber: 28
    functionLinenumberEnd: 52
    functionName: KeyValueLookupKeySourceIP::getKeys
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-kvs.cc
    functionUses: 0
    functionsReached:
    - std::vector::push_back
    - std::move
    - std::string::append
    - ComboAddress::isIPv4
    - std::string::reserve
    - ComboAddress::isIPv6
    - reinterpret_cast<const char*>
    - ComboAddress::truncate
    linkageType: ''
    returnType: std::vector<std::string>
    signature: std::vector<std::string> KeyValueLookupKeySourceIP::getKeys(const ComboAddress&
      addr)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-kvs.cc:56,1
    - Dst: isRoot
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-kvs.cc:56,1
    - Dst: makeLowerCase
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-kvs.cc:60,1
    - Dst: auto::countLabels
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-kvs.cc:61,1
    - Dst: std::vector::reserve
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-kvs.cc:70,1
    - Dst: auto::isRoot
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-kvs.cc:72,1
    - Dst: std::vector::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-kvs.cc:73,1
    - Dst: auto::toDNSString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-kvs.cc:73,1
    - Dst: auto::toStringRootDot
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-kvs.cc:73,1
    - Dst: auto::chopOff
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-kvs.cc:75,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 19
    argCount: 1
    argNames:
    - ' qname'
    argTypes:
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 54
    functionDepth: 0
    functionLinenumber: 54
    functionLinenumberEnd: 81
    functionName: KeyValueLookupKeySuffix::getKeys
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-kvs.cc
    functionUses: 0
    functionsReached:
    - makeLowerCase
    - auto::countLabels
    - std::vector::emplace_back
    - std::vector::reserve
    - isRoot
    - auto::toDNSString
    - auto::toStringRootDot
    - empty
    - auto::isRoot
    - auto::chopOff
    linkageType: ''
    returnType: std::vector<std::string>
    signature: std::vector<std::string> KeyValueLookupKeySuffix::getKeys(const DNSName&
      qname)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-kvs.cc:86,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-kvs.cc:86,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-kvs.cc:86,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 84
    functionDepth: 1
    functionLinenumber: 84
    functionLinenumberEnd: 87
    functionName: LMDBKVStore::getLogger
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-kvs.cc
    functionUses: 0
    functionsReached:
    - dnsdist::logging::getTopLogger
    - Logging::Loggable
    linkageType: ''
    returnType: std::shared_ptr<const Logr::Logger>
    signature: std::shared_ptr<const Logr::Logger> LMDBKVStore::getLogger() const
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: getROTransaction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-kvs.cc:92,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-kvs.cc:94,1
    - Dst: MDBInVal
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-kvs.cc:94,1
    - Dst: MDBOutVal::get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-kvs.cc:96,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-kvs.cc:104,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-kvs.cc:104,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-kvs.cc:104,1
    - Dst: LMDBKVStore::getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-kvs.cc:105,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-kvs.cc:105,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-kvs.cc:105,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 2
    argNames:
    - ' key'
    - ' value'
    argTypes:
    - std::string
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 89
    functionDepth: 0
    functionLinenumber: 89
    functionLinenumberEnd: 108
    functionName: LMDBKVStore::getValue
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-kvs.cc
    functionUses: 0
    functionsReached:
    - LMDBKVStore::getLogger
    - MDBOutVal::get
    - getROTransaction
    - auto::get
    - Logging::Loggable
    - what
    - VERBOSESLOG
    - infolog
    - MDBInVal
    linkageType: ''
    returnType: bool
    signature: bool LMDBKVStore::getValue(const std::string& key, std::string& value)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: getROTransaction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-kvs.cc:113,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-kvs.cc:115,1
    - Dst: MDBInVal
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-kvs.cc:115,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-kvs.cc:124,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-kvs.cc:124,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-kvs.cc:124,1
    - Dst: LMDBKVStore::getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-kvs.cc:125,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-kvs.cc:125,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-kvs.cc:125,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - ' key'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 110
    functionDepth: 0
    functionLinenumber: 110
    functionLinenumberEnd: 128
    functionName: LMDBKVStore::keyExists
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-kvs.cc
    functionUses: 0
    functionsReached:
    - LMDBKVStore::getLogger
    - getROTransaction
    - auto::get
    - Logging::Loggable
    - what
    - VERBOSESLOG
    - infolog
    - MDBInVal
    linkageType: ''
    returnType: bool
    signature: bool LMDBKVStore::keyExists(const std::string& key)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: getROTransaction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-kvs.cc:133,1
    - Dst: auto::getROCursor
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-kvs.cc:134,1
    - Dst: auto::lower_bound
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-kvs.cc:146,1
    - Dst: MDBInVal
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-kvs.cc:146,1
    - Dst: MDBOutVal::get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-kvs.cc:149,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-kvs.cc:150,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-kvs.cc:150,1
    - Dst: MDBOutVal::get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-kvs.cc:154,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-kvs.cc:155,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-kvs.cc:155,1
    - Dst: substr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-kvs.cc:161,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-kvs.cc:161,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-kvs.cc:162,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-kvs.cc:162,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-kvs.cc:173,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-kvs.cc:173,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-kvs.cc:173,1
    - Dst: LMDBKVStore::getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-kvs.cc:174,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-kvs.cc:174,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-kvs.cc:174,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 22
    argCount: 2
    argNames:
    - ' key'
    - ' value'
    argTypes:
    - std::string
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 177
      start: 130
    functionDepth: 0
    functionLinenumber: 130
    functionLinenumberEnd: 177
    functionName: LMDBKVStore::getRangeValue
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-kvs.cc
    functionUses: 0
    functionsReached:
    - LMDBKVStore::getLogger
    - MDBOutVal::get
    - getROTransaction
    - auto::lower_bound
    - auto::getROCursor
    - Logging::Loggable
    - what
    - VERBOSESLOG
    - infolog
    - size
    - substr
    - auto::size
    - MDBInVal
    linkageType: ''
    returnType: bool
    signature: bool LMDBKVStore::getRangeValue(const std::string& key, std::string&
      value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-kvs.cc:184,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-kvs.cc:184,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 185
      start: 182
    functionDepth: 1
    functionLinenumber: 182
    functionLinenumberEnd: 185
    functionName: CDBKVStore::getLogger
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-kvs.cc
    functionUses: 0
    functionsReached:
    - dnsdist::logging::getTopLogger
    - Logging::Loggable
    linkageType: ''
    returnType: std::shared_ptr<const Logr::Logger>
    signature: std::shared_ptr<const Logr::Logger> CDBKVStore::getLogger() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: clear
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-kvs.cc:190,1
    - Dst: time
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-kvs.cc:192,1
    - Dst: CDBKVStore::refreshDBIfNeeded
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-kvs.cc:197,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - ' fname'
    - refreshDelay
    argTypes:
    - std::string
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 198
      start: 187
    functionDepth: 1
    functionLinenumber: 187
    functionLinenumberEnd: 198
    functionName: CDBKVStore::CDBKVStore
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-kvs.cc
    functionUses: 0
    functionsReached:
    - clear
    - time
    - CDBKVStore::refreshDBIfNeeded
    linkageType: ''
    returnType: void
    signature: void CDBKVStore::CDBKVStore(const std::string& fname, time_t refreshDelay)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 202
      start: 200
    functionDepth: 0
    functionLinenumber: 200
    functionLinenumberEnd: 202
    functionName: CDBKVStore::~CDBKVStore()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-kvs.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void CDBKVStore::~CDBKVStore()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::make_unique<CDB>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-kvs.cc:206,1
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-kvs.cc:208,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-kvs.cc:208,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - ' st'
    argTypes:
    - struct stat
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 212
      start: 204
    functionDepth: 0
    functionLinenumber: 204
    functionLinenumberEnd: 212
    functionName: CDBKVStore::reload
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-kvs.cc
    functionUses: 0
    functionsReached:
    - std::move
    - std::make_unique<CDB>
    - lock
    linkageType: ''
    returnType: bool
    signature: bool CDBKVStore::reload(const struct stat& st)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: stat
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-kvs.cc:217,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-kvs.cc:217,1
    - Dst: CDBKVStore::reload
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-kvs.cc:218,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-kvs.cc:222,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-kvs.cc:222,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-kvs.cc:222,1
    - Dst: CDBKVStore::getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-kvs.cc:223,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 226
      start: 214
    functionDepth: 1
    functionLinenumber: 214
    functionLinenumberEnd: 226
    functionName: CDBKVStore::reload
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-kvs.cc
    functionUses: 1
    functionsReached:
    - CDBKVStore::getLogger
    - SLOG
    - stringerror
    - warnlog
    - CDBKVStore::reload
    - c_str
    - stat
    linkageType: ''
    returnType: bool
    signature: bool CDBKVStore::reload()
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: test_and_set
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-kvs.cc:230,1
    - Dst: stat
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-kvs.cc:237,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-kvs.cc:237,1
    - Dst: CDBKVStore::reload
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-kvs.cc:239,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-kvs.cc:244,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-kvs.cc:244,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-kvs.cc:244,1
    - Dst: CDBKVStore::getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-kvs.cc:245,1
    - Dst: clear
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-kvs.cc:248,1
    - Dst: clear
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-kvs.cc:251,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 1
    argNames:
    - now
    argTypes:
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 254
      start: 228
    functionDepth: 1
    functionLinenumber: 228
    functionLinenumberEnd: 254
    functionName: CDBKVStore::refreshDBIfNeeded
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-kvs.cc
    functionUses: 1
    functionsReached:
    - CDBKVStore::getLogger
    - SLOG
    - stat
    - stringerror
    - warnlog
    - clear
    - c_str
    - CDBKVStore::reload
    - test_and_set
    linkageType: ''
    returnType: void
    signature: void CDBKVStore::refreshDBIfNeeded(time_t now)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: time
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-kvs.cc:258,1
    - Dst: CDBKVStore::refreshDBIfNeeded
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-kvs.cc:262,1
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-kvs.cc:266,1
    - Dst: findOne
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-kvs.cc:267,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-kvs.cc:273,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-kvs.cc:273,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-kvs.cc:273,1
    - Dst: CDBKVStore::getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-kvs.cc:274,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-kvs.cc:274,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-kvs.cc:274,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 2
    argNames:
    - ' key'
    - ' value'
    argTypes:
    - std::string
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 277
      start: 256
    functionDepth: 2
    functionLinenumber: 256
    functionLinenumberEnd: 277
    functionName: CDBKVStore::getValue
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-kvs.cc
    functionUses: 0
    functionsReached:
    - CDBKVStore::getLogger
    - findOne
    - Logging::Loggable
    - time
    - what
    - VERBOSESLOG
    - infolog
    - lock
    - CDBKVStore::refreshDBIfNeeded
    linkageType: ''
    returnType: bool
    signature: bool CDBKVStore::getValue(const std::string& key, std::string& value)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: time
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-kvs.cc:281,1
    - Dst: CDBKVStore::refreshDBIfNeeded
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-kvs.cc:285,1
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-kvs.cc:289,1
    - Dst: CDBKVStore::keyExists
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-kvs.cc:294,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-kvs.cc:298,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-kvs.cc:298,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-kvs.cc:298,1
    - Dst: CDBKVStore::getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-kvs.cc:299,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-kvs.cc:299,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-kvs.cc:299,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 1
    argNames:
    - ' key'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 302
      start: 279
    functionDepth: 2
    functionLinenumber: 279
    functionLinenumberEnd: 302
    functionName: CDBKVStore::keyExists
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-kvs.cc
    functionUses: 1
    functionsReached:
    - CDBKVStore::getLogger
    - Logging::Loggable
    - CDBKVStore::keyExists
    - time
    - what
    - VERBOSESLOG
    - infolog
    - lock
    - CDBKVStore::refreshDBIfNeeded
    linkageType: ''
    returnType: bool
    signature: bool CDBKVStore::keyExists(const std::string& key)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 53
    functionDepth: 0
    functionLinenumber: 53
    functionLinenumberEnd: 53
    functionName: pdns::channel::Sender::Sender
    functionSourceFile: /src/pdns/pdns/dnsdistdist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Sender()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:55,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 1
    argNames:
    - ' descriptor'
    argTypes:
    - FDWrapper
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 54
    functionDepth: 0
    functionLinenumber: 54
    functionLinenumberEnd: 57
    functionName: pdns::channel::Sender::Sender
    functionSourceFile: /src/pdns/pdns/dnsdistdist/channel.hh
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void Sender(FDWrapper&& descriptor)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 58
    functionDepth: 0
    functionLinenumber: 58
    functionLinenumberEnd: 58
    functionName: pdns::channel::Sender::Sender
    functionSourceFile: /src/pdns/pdns/dnsdistdist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Sender(const Sender&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 59
    functionDepth: 0
    functionLinenumber: 59
    functionLinenumberEnd: 59
    functionName: '& operator=(const Sender&)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Sender
    signature: Sender & operator=(const Sender&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 60
    functionDepth: 0
    functionLinenumber: 60
    functionLinenumberEnd: 60
    functionName: pdns::channel::Sender::Sender
    functionSourceFile: /src/pdns/pdns/dnsdistdist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Sender(Sender&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 61
    functionDepth: 0
    functionLinenumber: 61
    functionLinenumberEnd: 61
    functionName: '& operator=(Sender&&)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Sender
    signature: Sender & operator=(Sender&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 62
    functionDepth: 0
    functionLinenumber: 62
    functionLinenumberEnd: 62
    functionName: ~Sender()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~Sender()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 86
    functionDepth: 0
    functionLinenumber: 86
    functionLinenumberEnd: 86
    functionName: pdns::channel::Receiver::Receiver
    functionSourceFile: /src/pdns/pdns/dnsdistdist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Receiver()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:88,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 1
    argNames:
    - ' descriptor'
    argTypes:
    - FDWrapper
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 87
    functionDepth: 0
    functionLinenumber: 87
    functionLinenumberEnd: 90
    functionName: pdns::channel::Receiver::Receiver
    functionSourceFile: /src/pdns/pdns/dnsdistdist/channel.hh
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void Receiver(FDWrapper&& descriptor, bool throwOnEOF = true)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 91
    functionDepth: 0
    functionLinenumber: 91
    functionLinenumberEnd: 91
    functionName: pdns::channel::Receiver::Receiver
    functionSourceFile: /src/pdns/pdns/dnsdistdist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Receiver(const Receiver&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 92
    functionDepth: 0
    functionLinenumber: 92
    functionLinenumberEnd: 92
    functionName: '& operator=(const Receiver&)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Receiver
    signature: Receiver & operator=(const Receiver&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 93
    functionDepth: 0
    functionLinenumber: 93
    functionLinenumberEnd: 93
    functionName: pdns::channel::Receiver::Receiver
    functionSourceFile: /src/pdns/pdns/dnsdistdist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Receiver(Receiver&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 94
    functionDepth: 0
    functionLinenumber: 94
    functionLinenumberEnd: 94
    functionName: '& operator=(Receiver&&)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Receiver
    signature: Receiver & operator=(Receiver&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 95
    functionDepth: 0
    functionLinenumber: 95
    functionLinenumberEnd: 95
    functionName: ~Receiver()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~Receiver()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getHandle
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:113,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 111
    functionDepth: 0
    functionLinenumber: 111
    functionLinenumberEnd: 114
    functionName: pdns::channel::Receiver::getDescriptor
    functionSourceFile: /src/pdns/pdns/dnsdistdist/channel.hh
    functionUses: 0
    functionsReached:
    - getHandle
    linkageType: ''
    returnType: int
    signature: int getDescriptor() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 118
    functionDepth: 0
    functionLinenumber: 118
    functionLinenumberEnd: 121
    functionName: pdns::channel::Receiver::isClosed
    functionSourceFile: /src/pdns/pdns/dnsdistdist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool isClosed() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 147
    functionDepth: 0
    functionLinenumber: 147
    functionLinenumberEnd: 147
    functionName: pdns::channel::Notifier::Notifier
    functionSourceFile: /src/pdns/pdns/dnsdistdist/channel.hh
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Notifier()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 149
      start: 149
    functionDepth: 0
    functionLinenumber: 149
    functionLinenumberEnd: 149
    functionName: pdns::channel::Notifier::Notifier
    functionSourceFile: /src/pdns/pdns/dnsdistdist/channel.hh
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Notifier(const Notifier&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 150
      start: 150
    functionDepth: 0
    functionLinenumber: 150
    functionLinenumberEnd: 150
    functionName: '& operator=(const Notifier&)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Notifier
    signature: Notifier & operator=(const Notifier&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 151
      start: 151
    functionDepth: 0
    functionLinenumber: 151
    functionLinenumberEnd: 151
    functionName: pdns::channel::Notifier::Notifier
    functionSourceFile: /src/pdns/pdns/dnsdistdist/channel.hh
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Notifier(Notifier&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 152
      start: 152
    functionDepth: 0
    functionLinenumber: 152
    functionLinenumberEnd: 152
    functionName: '& operator=(Notifier&&)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Notifier
    signature: Notifier & operator=(Notifier&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 153
      start: 153
    functionDepth: 0
    functionLinenumber: 153
    functionLinenumberEnd: 153
    functionName: ~Notifier()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~Notifier()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 176
      start: 176
    functionDepth: 0
    functionLinenumber: 176
    functionLinenumberEnd: 176
    functionName: pdns::channel::Waiter::Waiter
    functionSourceFile: /src/pdns/pdns/dnsdistdist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Waiter()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 178
      start: 178
    functionDepth: 0
    functionLinenumber: 178
    functionLinenumberEnd: 178
    functionName: pdns::channel::Waiter::Waiter
    functionSourceFile: /src/pdns/pdns/dnsdistdist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Waiter(const Waiter&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 179
      start: 179
    functionDepth: 0
    functionLinenumber: 179
    functionLinenumberEnd: 179
    functionName: '& operator=(const Waiter&)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Waiter
    signature: Waiter & operator=(const Waiter&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 180
      start: 180
    functionDepth: 0
    functionLinenumber: 180
    functionLinenumberEnd: 180
    functionName: pdns::channel::Waiter::Waiter
    functionSourceFile: /src/pdns/pdns/dnsdistdist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Waiter(Waiter&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 181
      start: 181
    functionDepth: 0
    functionLinenumber: 181
    functionLinenumberEnd: 181
    functionName: '& operator=(Waiter&&)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Waiter
    signature: Waiter & operator=(Waiter&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 182
      start: 182
    functionDepth: 0
    functionLinenumber: 182
    functionLinenumberEnd: 182
    functionName: ~Waiter()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~Waiter()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 200
      start: 197
    functionDepth: 0
    functionLinenumber: 197
    functionLinenumberEnd: 200
    functionName: pdns::channel::Waiter::isClosed
    functionSourceFile: /src/pdns/pdns/dnsdistdist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool isClosed() const
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:222,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:223,1
    - Dst: __tsan_release
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:227,1
    - Dst: write
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:229,1
    - Dst: getHandle
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:229,1
    - Dst: auto::release
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:233,1
    - Dst: __tsan_acquire
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:238,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:240,1
    - Dst: __tsan_acquire
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:244,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:250,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:254,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:254,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 23
    argCount: 1
    argNames:
    - ' object'
    argTypes:
    - std::unique_ptr<T, D>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 258
      start: 218
    functionDepth: 0
    functionLinenumber: 218
    functionLinenumberEnd: 258
    functionName: pdns::channel::Sender<T, D>::send
    functionSourceFile: /src/pdns/pdns/dnsdistdist/channel.hh
    functionUses: 0
    functionsReached:
    - std::move
    - __tsan_acquire
    - auto::get
    - __tsan_release
    - std::runtime_error
    - stringerror
    - getHandle
    - write
    - auto::release
    linkageType: ''
    returnType: bool
    signature: bool Sender<T, D>::send(std::unique_ptr<T, D>&& object) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: reset
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:263,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 264
      start: 261
    functionDepth: 0
    functionLinenumber: 261
    functionLinenumberEnd: 264
    functionName: pdns::channel::Sender<T, D>::close
    functionSourceFile: /src/pdns/pdns/dnsdistdist/channel.hh
    functionUses: 0
    functionsReached:
    - reset
    linkageType: ''
    returnType: void
    signature: void Sender<T, D>::close()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::channel::Receiver<T, D>::receive
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:269,1
    - Dst: D
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:269,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 270
      start: 267
    functionDepth: 0
    functionLinenumber: 267
    functionLinenumberEnd: 270
    functionName: pdns::channel::Receiver<T, D>::receive
    functionSourceFile: /src/pdns/pdns/dnsdistdist/channel.hh
    functionUses: 5
    functionsReached:
    - pdns::channel::Receiver<T, D>::receive
    - D
    linkageType: ''
    returnType: std::optional<std::unique_ptr<T, D>>
    signature: std::optional<std::unique_ptr<T, D>> Receiver<T, D>::receive()
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: read
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:278,1
    - Dst: getHandle
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:278,1
    - Dst: __tsan_acquire
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:281,1
    - Dst: std::unique_ptr<T, D>
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:283,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:290,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:299,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:299,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:302,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 25
    argCount: 1
    argNames:
    - deleter
    argTypes:
    - D
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 305
      start: 273
    functionDepth: 0
    functionLinenumber: 273
    functionLinenumberEnd: 305
    functionName: pdns::channel::Receiver<T, D>::receive
    functionSourceFile: /src/pdns/pdns/dnsdistdist/channel.hh
    functionUses: 5
    functionsReached:
    - __tsan_acquire
    - read
    - std::runtime_error
    - std::unique_ptr<T, D>
    - stringerror
    - getHandle
    linkageType: ''
    returnType: std::optional<std::unique_ptr<T, D>>
    signature: std::optional<std::unique_ptr<T, D>> Receiver<T, D>::receive(D deleter)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pipe
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:311,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:312,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:312,1
    - Dst: setNonBlocking
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:317,1
    - Dst: FDWrapper::getHandle
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:317,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:319,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:319,1
    - Dst: setNonBlocking
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:322,1
    - Dst: FDWrapper::getHandle
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:322,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:324,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:324,1
    - Dst: getPipeBufferSize
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:327,1
    - Dst: FDWrapper::getHandle
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:327,1
    - Dst: setPipeBufferSize
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:328,1
    - Dst: FDWrapper::getHandle
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:328,1
    - Dst: Sender<T, D>
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:331,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:331,1
    - Dst: Receiver<T, D>
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:331,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:331,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 14
    argCount: 4
    argNames:
    - senderBlockingMode
    - receiverBlockingMode
    - pipeBufferSize
    - throwOnEOF
    argTypes:
    - SenderBlockingMode
    - ReceiverBlockingMode
    - size_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 332
      start: 308
    functionDepth: 0
    functionLinenumber: 308
    functionLinenumberEnd: 332
    functionName: pdns::channel::createObjectQueue
    functionSourceFile: /src/pdns/pdns/dnsdistdist/channel.hh
    functionUses: 0
    functionsReached:
    - std::move
    - FDWrapper::getHandle
    - std::runtime_error
    - setNonBlocking
    - stringerror
    - pipe
    - Receiver<T, D>
    - setPipeBufferSize
    - getPipeBufferSize
    - Sender<T, D>
    linkageType: ''
    returnType: std::pair<Sender<T, D>, Receiver<T, D>>
    signature: std::pair<Sender<T, D>, Receiver<T, D>> createObjectQueue(SenderBlockingMode
      senderBlockingMode, ReceiverBlockingMode receiverBlockingMode, size_t pipeBufferSize,
      bool throwOnEOF)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 53
    functionDepth: 0
    functionLinenumber: 53
    functionLinenumberEnd: 53
    functionName: pdns::channel::Sender::Sender
    functionSourceFile: /src/pdns/pdns/dnsdistdist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Sender()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:55,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 1
    argNames:
    - ' descriptor'
    argTypes:
    - FDWrapper
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 54
    functionDepth: 0
    functionLinenumber: 54
    functionLinenumberEnd: 57
    functionName: pdns::channel::Sender::Sender
    functionSourceFile: /src/pdns/pdns/dnsdistdist/channel.hh
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void Sender(FDWrapper&& descriptor)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 58
    functionDepth: 0
    functionLinenumber: 58
    functionLinenumberEnd: 58
    functionName: pdns::channel::Sender::Sender
    functionSourceFile: /src/pdns/pdns/dnsdistdist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Sender(const Sender&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 59
    functionDepth: 0
    functionLinenumber: 59
    functionLinenumberEnd: 59
    functionName: '& operator=(const Sender&)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Sender
    signature: Sender & operator=(const Sender&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 60
    functionDepth: 0
    functionLinenumber: 60
    functionLinenumberEnd: 60
    functionName: pdns::channel::Sender::Sender
    functionSourceFile: /src/pdns/pdns/dnsdistdist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Sender(Sender&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 61
    functionDepth: 0
    functionLinenumber: 61
    functionLinenumberEnd: 61
    functionName: '& operator=(Sender&&)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Sender
    signature: Sender & operator=(Sender&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 62
    functionDepth: 0
    functionLinenumber: 62
    functionLinenumberEnd: 62
    functionName: ~Sender()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~Sender()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 86
    functionDepth: 0
    functionLinenumber: 86
    functionLinenumberEnd: 86
    functionName: pdns::channel::Receiver::Receiver
    functionSourceFile: /src/pdns/pdns/dnsdistdist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Receiver()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:88,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 1
    argNames:
    - ' descriptor'
    argTypes:
    - FDWrapper
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 87
    functionDepth: 0
    functionLinenumber: 87
    functionLinenumberEnd: 90
    functionName: pdns::channel::Receiver::Receiver
    functionSourceFile: /src/pdns/pdns/dnsdistdist/channel.hh
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void Receiver(FDWrapper&& descriptor, bool throwOnEOF = true)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 91
    functionDepth: 0
    functionLinenumber: 91
    functionLinenumberEnd: 91
    functionName: pdns::channel::Receiver::Receiver
    functionSourceFile: /src/pdns/pdns/dnsdistdist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Receiver(const Receiver&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 92
    functionDepth: 0
    functionLinenumber: 92
    functionLinenumberEnd: 92
    functionName: '& operator=(const Receiver&)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Receiver
    signature: Receiver & operator=(const Receiver&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 93
    functionDepth: 0
    functionLinenumber: 93
    functionLinenumberEnd: 93
    functionName: pdns::channel::Receiver::Receiver
    functionSourceFile: /src/pdns/pdns/dnsdistdist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Receiver(Receiver&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 94
    functionDepth: 0
    functionLinenumber: 94
    functionLinenumberEnd: 94
    functionName: '& operator=(Receiver&&)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Receiver
    signature: Receiver & operator=(Receiver&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 95
    functionDepth: 0
    functionLinenumber: 95
    functionLinenumberEnd: 95
    functionName: ~Receiver()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~Receiver()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getHandle
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:113,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 111
    functionDepth: 0
    functionLinenumber: 111
    functionLinenumberEnd: 114
    functionName: pdns::channel::Receiver::getDescriptor
    functionSourceFile: /src/pdns/pdns/dnsdistdist/channel.hh
    functionUses: 0
    functionsReached:
    - getHandle
    linkageType: ''
    returnType: int
    signature: int getDescriptor() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 118
    functionDepth: 0
    functionLinenumber: 118
    functionLinenumberEnd: 121
    functionName: pdns::channel::Receiver::isClosed
    functionSourceFile: /src/pdns/pdns/dnsdistdist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool isClosed() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 147
    functionDepth: 0
    functionLinenumber: 147
    functionLinenumberEnd: 147
    functionName: pdns::channel::Notifier::Notifier
    functionSourceFile: /src/pdns/pdns/dnsdistdist/channel.hh
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Notifier()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 149
      start: 149
    functionDepth: 0
    functionLinenumber: 149
    functionLinenumberEnd: 149
    functionName: pdns::channel::Notifier::Notifier
    functionSourceFile: /src/pdns/pdns/dnsdistdist/channel.hh
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Notifier(const Notifier&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 150
      start: 150
    functionDepth: 0
    functionLinenumber: 150
    functionLinenumberEnd: 150
    functionName: '& operator=(const Notifier&)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Notifier
    signature: Notifier & operator=(const Notifier&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 151
      start: 151
    functionDepth: 0
    functionLinenumber: 151
    functionLinenumberEnd: 151
    functionName: pdns::channel::Notifier::Notifier
    functionSourceFile: /src/pdns/pdns/dnsdistdist/channel.hh
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Notifier(Notifier&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 152
      start: 152
    functionDepth: 0
    functionLinenumber: 152
    functionLinenumberEnd: 152
    functionName: '& operator=(Notifier&&)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Notifier
    signature: Notifier & operator=(Notifier&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 153
      start: 153
    functionDepth: 0
    functionLinenumber: 153
    functionLinenumberEnd: 153
    functionName: ~Notifier()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~Notifier()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 176
      start: 176
    functionDepth: 0
    functionLinenumber: 176
    functionLinenumberEnd: 176
    functionName: pdns::channel::Waiter::Waiter
    functionSourceFile: /src/pdns/pdns/dnsdistdist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Waiter()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 178
      start: 178
    functionDepth: 0
    functionLinenumber: 178
    functionLinenumberEnd: 178
    functionName: pdns::channel::Waiter::Waiter
    functionSourceFile: /src/pdns/pdns/dnsdistdist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Waiter(const Waiter&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 179
      start: 179
    functionDepth: 0
    functionLinenumber: 179
    functionLinenumberEnd: 179
    functionName: '& operator=(const Waiter&)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Waiter
    signature: Waiter & operator=(const Waiter&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 180
      start: 180
    functionDepth: 0
    functionLinenumber: 180
    functionLinenumberEnd: 180
    functionName: pdns::channel::Waiter::Waiter
    functionSourceFile: /src/pdns/pdns/dnsdistdist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Waiter(Waiter&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 181
      start: 181
    functionDepth: 0
    functionLinenumber: 181
    functionLinenumberEnd: 181
    functionName: '& operator=(Waiter&&)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Waiter
    signature: Waiter & operator=(Waiter&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 182
      start: 182
    functionDepth: 0
    functionLinenumber: 182
    functionLinenumberEnd: 182
    functionName: ~Waiter()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~Waiter()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 200
      start: 197
    functionDepth: 0
    functionLinenumber: 197
    functionLinenumberEnd: 200
    functionName: pdns::channel::Waiter::isClosed
    functionSourceFile: /src/pdns/pdns/dnsdistdist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool isClosed() const
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:222,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:223,1
    - Dst: __tsan_release
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:227,1
    - Dst: write
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:229,1
    - Dst: getHandle
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:229,1
    - Dst: auto::release
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:233,1
    - Dst: __tsan_acquire
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:238,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:240,1
    - Dst: __tsan_acquire
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:244,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:250,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:254,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:254,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 23
    argCount: 1
    argNames:
    - ' object'
    argTypes:
    - std::unique_ptr<T, D>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 258
      start: 218
    functionDepth: 0
    functionLinenumber: 218
    functionLinenumberEnd: 258
    functionName: pdns::channel::Sender<T, D>::send
    functionSourceFile: /src/pdns/pdns/dnsdistdist/channel.hh
    functionUses: 0
    functionsReached:
    - std::move
    - __tsan_acquire
    - auto::get
    - __tsan_release
    - std::runtime_error
    - stringerror
    - getHandle
    - write
    - auto::release
    linkageType: ''
    returnType: bool
    signature: bool Sender<T, D>::send(std::unique_ptr<T, D>&& object) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: reset
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:263,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 264
      start: 261
    functionDepth: 0
    functionLinenumber: 261
    functionLinenumberEnd: 264
    functionName: pdns::channel::Sender<T, D>::close
    functionSourceFile: /src/pdns/pdns/dnsdistdist/channel.hh
    functionUses: 0
    functionsReached:
    - reset
    linkageType: ''
    returnType: void
    signature: void Sender<T, D>::close()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::channel::Receiver<T, D>::receive
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:269,1
    - Dst: D
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:269,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 270
      start: 267
    functionDepth: 0
    functionLinenumber: 267
    functionLinenumberEnd: 270
    functionName: pdns::channel::Receiver<T, D>::receive
    functionSourceFile: /src/pdns/pdns/dnsdistdist/channel.hh
    functionUses: 6
    functionsReached:
    - pdns::channel::Receiver<T, D>::receive
    - D
    linkageType: ''
    returnType: std::optional<std::unique_ptr<T, D>>
    signature: std::optional<std::unique_ptr<T, D>> Receiver<T, D>::receive()
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: read
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:278,1
    - Dst: getHandle
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:278,1
    - Dst: __tsan_acquire
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:281,1
    - Dst: std::unique_ptr<T, D>
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:283,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:290,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:299,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:299,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:302,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 25
    argCount: 1
    argNames:
    - deleter
    argTypes:
    - D
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 305
      start: 273
    functionDepth: 0
    functionLinenumber: 273
    functionLinenumberEnd: 305
    functionName: pdns::channel::Receiver<T, D>::receive
    functionSourceFile: /src/pdns/pdns/dnsdistdist/channel.hh
    functionUses: 6
    functionsReached:
    - __tsan_acquire
    - read
    - std::runtime_error
    - std::unique_ptr<T, D>
    - stringerror
    - getHandle
    linkageType: ''
    returnType: std::optional<std::unique_ptr<T, D>>
    signature: std::optional<std::unique_ptr<T, D>> Receiver<T, D>::receive(D deleter)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pipe
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:311,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:312,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:312,1
    - Dst: setNonBlocking
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:317,1
    - Dst: FDWrapper::getHandle
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:317,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:319,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:319,1
    - Dst: setNonBlocking
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:322,1
    - Dst: FDWrapper::getHandle
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:322,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:324,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:324,1
    - Dst: getPipeBufferSize
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:327,1
    - Dst: FDWrapper::getHandle
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:327,1
    - Dst: setPipeBufferSize
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:328,1
    - Dst: FDWrapper::getHandle
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:328,1
    - Dst: Sender<T, D>
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:331,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:331,1
    - Dst: Receiver<T, D>
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:331,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:331,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 14
    argCount: 4
    argNames:
    - senderBlockingMode
    - receiverBlockingMode
    - pipeBufferSize
    - throwOnEOF
    argTypes:
    - SenderBlockingMode
    - ReceiverBlockingMode
    - size_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 332
      start: 308
    functionDepth: 0
    functionLinenumber: 308
    functionLinenumberEnd: 332
    functionName: pdns::channel::createObjectQueue
    functionSourceFile: /src/pdns/pdns/dnsdistdist/channel.hh
    functionUses: 0
    functionsReached:
    - std::move
    - FDWrapper::getHandle
    - std::runtime_error
    - setNonBlocking
    - stringerror
    - pipe
    - Receiver<T, D>
    - setPipeBufferSize
    - getPipeBufferSize
    - Sender<T, D>
    linkageType: ''
    returnType: std::pair<Sender<T, D>, Receiver<T, D>>
    signature: std::pair<Sender<T, D>, Receiver<T, D>> createObjectQueue(SenderBlockingMode
      senderBlockingMode, ReceiverBlockingMode receiverBlockingMode, size_t pipeBufferSize,
      bool throwOnEOF)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 53
    functionDepth: 0
    functionLinenumber: 53
    functionLinenumberEnd: 53
    functionName: pdns::channel::Sender::Sender
    functionSourceFile: /src/pdns/pdns/dnsdistdist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Sender()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:55,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 1
    argNames:
    - ' descriptor'
    argTypes:
    - FDWrapper
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 54
    functionDepth: 0
    functionLinenumber: 54
    functionLinenumberEnd: 57
    functionName: pdns::channel::Sender::Sender
    functionSourceFile: /src/pdns/pdns/dnsdistdist/channel.hh
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void Sender(FDWrapper&& descriptor)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 58
    functionDepth: 0
    functionLinenumber: 58
    functionLinenumberEnd: 58
    functionName: pdns::channel::Sender::Sender
    functionSourceFile: /src/pdns/pdns/dnsdistdist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Sender(const Sender&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 59
    functionDepth: 0
    functionLinenumber: 59
    functionLinenumberEnd: 59
    functionName: '& operator=(const Sender&)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Sender
    signature: Sender & operator=(const Sender&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 60
    functionDepth: 0
    functionLinenumber: 60
    functionLinenumberEnd: 60
    functionName: pdns::channel::Sender::Sender
    functionSourceFile: /src/pdns/pdns/dnsdistdist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Sender(Sender&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 61
    functionDepth: 0
    functionLinenumber: 61
    functionLinenumberEnd: 61
    functionName: '& operator=(Sender&&)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Sender
    signature: Sender & operator=(Sender&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 62
    functionDepth: 0
    functionLinenumber: 62
    functionLinenumberEnd: 62
    functionName: ~Sender()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~Sender()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 86
    functionDepth: 0
    functionLinenumber: 86
    functionLinenumberEnd: 86
    functionName: pdns::channel::Receiver::Receiver
    functionSourceFile: /src/pdns/pdns/dnsdistdist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Receiver()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:88,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 1
    argNames:
    - ' descriptor'
    argTypes:
    - FDWrapper
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 87
    functionDepth: 0
    functionLinenumber: 87
    functionLinenumberEnd: 90
    functionName: pdns::channel::Receiver::Receiver
    functionSourceFile: /src/pdns/pdns/dnsdistdist/channel.hh
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void Receiver(FDWrapper&& descriptor, bool throwOnEOF = true)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 91
    functionDepth: 0
    functionLinenumber: 91
    functionLinenumberEnd: 91
    functionName: pdns::channel::Receiver::Receiver
    functionSourceFile: /src/pdns/pdns/dnsdistdist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Receiver(const Receiver&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 92
    functionDepth: 0
    functionLinenumber: 92
    functionLinenumberEnd: 92
    functionName: '& operator=(const Receiver&)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Receiver
    signature: Receiver & operator=(const Receiver&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 93
    functionDepth: 0
    functionLinenumber: 93
    functionLinenumberEnd: 93
    functionName: pdns::channel::Receiver::Receiver
    functionSourceFile: /src/pdns/pdns/dnsdistdist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Receiver(Receiver&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 94
    functionDepth: 0
    functionLinenumber: 94
    functionLinenumberEnd: 94
    functionName: '& operator=(Receiver&&)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Receiver
    signature: Receiver & operator=(Receiver&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 95
    functionDepth: 0
    functionLinenumber: 95
    functionLinenumberEnd: 95
    functionName: ~Receiver()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~Receiver()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getHandle
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:113,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 111
    functionDepth: 0
    functionLinenumber: 111
    functionLinenumberEnd: 114
    functionName: pdns::channel::Receiver::getDescriptor
    functionSourceFile: /src/pdns/pdns/dnsdistdist/channel.hh
    functionUses: 0
    functionsReached:
    - getHandle
    linkageType: ''
    returnType: int
    signature: int getDescriptor() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 118
    functionDepth: 0
    functionLinenumber: 118
    functionLinenumberEnd: 121
    functionName: pdns::channel::Receiver::isClosed
    functionSourceFile: /src/pdns/pdns/dnsdistdist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool isClosed() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 147
    functionDepth: 0
    functionLinenumber: 147
    functionLinenumberEnd: 147
    functionName: pdns::channel::Notifier::Notifier
    functionSourceFile: /src/pdns/pdns/dnsdistdist/channel.hh
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Notifier()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 149
      start: 149
    functionDepth: 0
    functionLinenumber: 149
    functionLinenumberEnd: 149
    functionName: pdns::channel::Notifier::Notifier
    functionSourceFile: /src/pdns/pdns/dnsdistdist/channel.hh
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Notifier(const Notifier&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 150
      start: 150
    functionDepth: 0
    functionLinenumber: 150
    functionLinenumberEnd: 150
    functionName: '& operator=(const Notifier&)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Notifier
    signature: Notifier & operator=(const Notifier&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 151
      start: 151
    functionDepth: 0
    functionLinenumber: 151
    functionLinenumberEnd: 151
    functionName: pdns::channel::Notifier::Notifier
    functionSourceFile: /src/pdns/pdns/dnsdistdist/channel.hh
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Notifier(Notifier&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 152
      start: 152
    functionDepth: 0
    functionLinenumber: 152
    functionLinenumberEnd: 152
    functionName: '& operator=(Notifier&&)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Notifier
    signature: Notifier & operator=(Notifier&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 153
      start: 153
    functionDepth: 0
    functionLinenumber: 153
    functionLinenumberEnd: 153
    functionName: ~Notifier()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~Notifier()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 176
      start: 176
    functionDepth: 0
    functionLinenumber: 176
    functionLinenumberEnd: 176
    functionName: pdns::channel::Waiter::Waiter
    functionSourceFile: /src/pdns/pdns/dnsdistdist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Waiter()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 178
      start: 178
    functionDepth: 0
    functionLinenumber: 178
    functionLinenumberEnd: 178
    functionName: pdns::channel::Waiter::Waiter
    functionSourceFile: /src/pdns/pdns/dnsdistdist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Waiter(const Waiter&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 179
      start: 179
    functionDepth: 0
    functionLinenumber: 179
    functionLinenumberEnd: 179
    functionName: '& operator=(const Waiter&)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Waiter
    signature: Waiter & operator=(const Waiter&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 180
      start: 180
    functionDepth: 0
    functionLinenumber: 180
    functionLinenumberEnd: 180
    functionName: pdns::channel::Waiter::Waiter
    functionSourceFile: /src/pdns/pdns/dnsdistdist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Waiter(Waiter&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 181
      start: 181
    functionDepth: 0
    functionLinenumber: 181
    functionLinenumberEnd: 181
    functionName: '& operator=(Waiter&&)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Waiter
    signature: Waiter & operator=(Waiter&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 182
      start: 182
    functionDepth: 0
    functionLinenumber: 182
    functionLinenumberEnd: 182
    functionName: ~Waiter()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~Waiter()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 200
      start: 197
    functionDepth: 0
    functionLinenumber: 197
    functionLinenumberEnd: 200
    functionName: pdns::channel::Waiter::isClosed
    functionSourceFile: /src/pdns/pdns/dnsdistdist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool isClosed() const
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:222,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:223,1
    - Dst: __tsan_release
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:227,1
    - Dst: write
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:229,1
    - Dst: getHandle
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:229,1
    - Dst: auto::release
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:233,1
    - Dst: __tsan_acquire
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:238,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:240,1
    - Dst: __tsan_acquire
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:244,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:250,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:254,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:254,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 23
    argCount: 1
    argNames:
    - ' object'
    argTypes:
    - std::unique_ptr<T, D>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 258
      start: 218
    functionDepth: 0
    functionLinenumber: 218
    functionLinenumberEnd: 258
    functionName: pdns::channel::Sender<T, D>::send
    functionSourceFile: /src/pdns/pdns/dnsdistdist/channel.hh
    functionUses: 0
    functionsReached:
    - std::move
    - __tsan_acquire
    - auto::get
    - __tsan_release
    - std::runtime_error
    - stringerror
    - getHandle
    - write
    - auto::release
    linkageType: ''
    returnType: bool
    signature: bool Sender<T, D>::send(std::unique_ptr<T, D>&& object) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: reset
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:263,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 264
      start: 261
    functionDepth: 0
    functionLinenumber: 261
    functionLinenumberEnd: 264
    functionName: pdns::channel::Sender<T, D>::close
    functionSourceFile: /src/pdns/pdns/dnsdistdist/channel.hh
    functionUses: 0
    functionsReached:
    - reset
    linkageType: ''
    returnType: void
    signature: void Sender<T, D>::close()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::channel::Receiver<T, D>::receive
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:269,1
    - Dst: D
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:269,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 270
      start: 267
    functionDepth: 0
    functionLinenumber: 267
    functionLinenumberEnd: 270
    functionName: pdns::channel::Receiver<T, D>::receive
    functionSourceFile: /src/pdns/pdns/dnsdistdist/channel.hh
    functionUses: 7
    functionsReached:
    - pdns::channel::Receiver<T, D>::receive
    - D
    linkageType: ''
    returnType: std::optional<std::unique_ptr<T, D>>
    signature: std::optional<std::unique_ptr<T, D>> Receiver<T, D>::receive()
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: read
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:278,1
    - Dst: getHandle
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:278,1
    - Dst: __tsan_acquire
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:281,1
    - Dst: std::unique_ptr<T, D>
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:283,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:290,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:299,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:299,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:302,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 25
    argCount: 1
    argNames:
    - deleter
    argTypes:
    - D
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 305
      start: 273
    functionDepth: 0
    functionLinenumber: 273
    functionLinenumberEnd: 305
    functionName: pdns::channel::Receiver<T, D>::receive
    functionSourceFile: /src/pdns/pdns/dnsdistdist/channel.hh
    functionUses: 7
    functionsReached:
    - __tsan_acquire
    - read
    - std::runtime_error
    - std::unique_ptr<T, D>
    - stringerror
    - getHandle
    linkageType: ''
    returnType: std::optional<std::unique_ptr<T, D>>
    signature: std::optional<std::unique_ptr<T, D>> Receiver<T, D>::receive(D deleter)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pipe
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:311,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:312,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:312,1
    - Dst: setNonBlocking
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:317,1
    - Dst: FDWrapper::getHandle
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:317,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:319,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:319,1
    - Dst: setNonBlocking
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:322,1
    - Dst: FDWrapper::getHandle
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:322,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:324,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:324,1
    - Dst: getPipeBufferSize
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:327,1
    - Dst: FDWrapper::getHandle
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:327,1
    - Dst: setPipeBufferSize
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:328,1
    - Dst: FDWrapper::getHandle
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:328,1
    - Dst: Sender<T, D>
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:331,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:331,1
    - Dst: Receiver<T, D>
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:331,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:331,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 14
    argCount: 4
    argNames:
    - senderBlockingMode
    - receiverBlockingMode
    - pipeBufferSize
    - throwOnEOF
    argTypes:
    - SenderBlockingMode
    - ReceiverBlockingMode
    - size_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 332
      start: 308
    functionDepth: 0
    functionLinenumber: 308
    functionLinenumberEnd: 332
    functionName: pdns::channel::createObjectQueue
    functionSourceFile: /src/pdns/pdns/dnsdistdist/channel.hh
    functionUses: 0
    functionsReached:
    - std::move
    - FDWrapper::getHandle
    - std::runtime_error
    - setNonBlocking
    - stringerror
    - pipe
    - Receiver<T, D>
    - setPipeBufferSize
    - getPipeBufferSize
    - Sender<T, D>
    linkageType: ''
    returnType: std::pair<Sender<T, D>, Receiver<T, D>>
    signature: std::pair<Sender<T, D>, Receiver<T, D>> createObjectQueue(SenderBlockingMode
      senderBlockingMode, ReceiverBlockingMode receiverBlockingMode, size_t pipeBufferSize,
      bool throwOnEOF)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 53
    functionDepth: 0
    functionLinenumber: 53
    functionLinenumberEnd: 53
    functionName: pdns::channel::Sender::Sender
    functionSourceFile: /src/pdns/pdns/dnsdistdist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Sender()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:55,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 1
    argNames:
    - ' descriptor'
    argTypes:
    - FDWrapper
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 54
    functionDepth: 0
    functionLinenumber: 54
    functionLinenumberEnd: 57
    functionName: pdns::channel::Sender::Sender
    functionSourceFile: /src/pdns/pdns/dnsdistdist/channel.hh
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void Sender(FDWrapper&& descriptor)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 58
    functionDepth: 0
    functionLinenumber: 58
    functionLinenumberEnd: 58
    functionName: pdns::channel::Sender::Sender
    functionSourceFile: /src/pdns/pdns/dnsdistdist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Sender(const Sender&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 59
    functionDepth: 0
    functionLinenumber: 59
    functionLinenumberEnd: 59
    functionName: '& operator=(const Sender&)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Sender
    signature: Sender & operator=(const Sender&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 60
    functionDepth: 0
    functionLinenumber: 60
    functionLinenumberEnd: 60
    functionName: pdns::channel::Sender::Sender
    functionSourceFile: /src/pdns/pdns/dnsdistdist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Sender(Sender&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 61
    functionDepth: 0
    functionLinenumber: 61
    functionLinenumberEnd: 61
    functionName: '& operator=(Sender&&)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Sender
    signature: Sender & operator=(Sender&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 62
    functionDepth: 0
    functionLinenumber: 62
    functionLinenumberEnd: 62
    functionName: ~Sender()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~Sender()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 86
    functionDepth: 0
    functionLinenumber: 86
    functionLinenumberEnd: 86
    functionName: pdns::channel::Receiver::Receiver
    functionSourceFile: /src/pdns/pdns/dnsdistdist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Receiver()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:88,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 1
    argNames:
    - ' descriptor'
    argTypes:
    - FDWrapper
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 87
    functionDepth: 0
    functionLinenumber: 87
    functionLinenumberEnd: 90
    functionName: pdns::channel::Receiver::Receiver
    functionSourceFile: /src/pdns/pdns/dnsdistdist/channel.hh
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void Receiver(FDWrapper&& descriptor, bool throwOnEOF = true)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 91
    functionDepth: 0
    functionLinenumber: 91
    functionLinenumberEnd: 91
    functionName: pdns::channel::Receiver::Receiver
    functionSourceFile: /src/pdns/pdns/dnsdistdist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Receiver(const Receiver&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 92
    functionDepth: 0
    functionLinenumber: 92
    functionLinenumberEnd: 92
    functionName: '& operator=(const Receiver&)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Receiver
    signature: Receiver & operator=(const Receiver&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 93
    functionDepth: 0
    functionLinenumber: 93
    functionLinenumberEnd: 93
    functionName: pdns::channel::Receiver::Receiver
    functionSourceFile: /src/pdns/pdns/dnsdistdist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Receiver(Receiver&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 94
    functionDepth: 0
    functionLinenumber: 94
    functionLinenumberEnd: 94
    functionName: '& operator=(Receiver&&)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Receiver
    signature: Receiver & operator=(Receiver&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 95
    functionDepth: 0
    functionLinenumber: 95
    functionLinenumberEnd: 95
    functionName: ~Receiver()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~Receiver()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getHandle
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:113,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 111
    functionDepth: 0
    functionLinenumber: 111
    functionLinenumberEnd: 114
    functionName: pdns::channel::Receiver::getDescriptor
    functionSourceFile: /src/pdns/pdns/dnsdistdist/channel.hh
    functionUses: 0
    functionsReached:
    - getHandle
    linkageType: ''
    returnType: int
    signature: int getDescriptor() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 118
    functionDepth: 0
    functionLinenumber: 118
    functionLinenumberEnd: 121
    functionName: pdns::channel::Receiver::isClosed
    functionSourceFile: /src/pdns/pdns/dnsdistdist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool isClosed() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 147
    functionDepth: 0
    functionLinenumber: 147
    functionLinenumberEnd: 147
    functionName: pdns::channel::Notifier::Notifier
    functionSourceFile: /src/pdns/pdns/dnsdistdist/channel.hh
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Notifier()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 149
      start: 149
    functionDepth: 0
    functionLinenumber: 149
    functionLinenumberEnd: 149
    functionName: pdns::channel::Notifier::Notifier
    functionSourceFile: /src/pdns/pdns/dnsdistdist/channel.hh
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Notifier(const Notifier&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 150
      start: 150
    functionDepth: 0
    functionLinenumber: 150
    functionLinenumberEnd: 150
    functionName: '& operator=(const Notifier&)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Notifier
    signature: Notifier & operator=(const Notifier&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 151
      start: 151
    functionDepth: 0
    functionLinenumber: 151
    functionLinenumberEnd: 151
    functionName: pdns::channel::Notifier::Notifier
    functionSourceFile: /src/pdns/pdns/dnsdistdist/channel.hh
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Notifier(Notifier&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 152
      start: 152
    functionDepth: 0
    functionLinenumber: 152
    functionLinenumberEnd: 152
    functionName: '& operator=(Notifier&&)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Notifier
    signature: Notifier & operator=(Notifier&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 153
      start: 153
    functionDepth: 0
    functionLinenumber: 153
    functionLinenumberEnd: 153
    functionName: ~Notifier()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~Notifier()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 176
      start: 176
    functionDepth: 0
    functionLinenumber: 176
    functionLinenumberEnd: 176
    functionName: pdns::channel::Waiter::Waiter
    functionSourceFile: /src/pdns/pdns/dnsdistdist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Waiter()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 178
      start: 178
    functionDepth: 0
    functionLinenumber: 178
    functionLinenumberEnd: 178
    functionName: pdns::channel::Waiter::Waiter
    functionSourceFile: /src/pdns/pdns/dnsdistdist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Waiter(const Waiter&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 179
      start: 179
    functionDepth: 0
    functionLinenumber: 179
    functionLinenumberEnd: 179
    functionName: '& operator=(const Waiter&)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Waiter
    signature: Waiter & operator=(const Waiter&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 180
      start: 180
    functionDepth: 0
    functionLinenumber: 180
    functionLinenumberEnd: 180
    functionName: pdns::channel::Waiter::Waiter
    functionSourceFile: /src/pdns/pdns/dnsdistdist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Waiter(Waiter&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 181
      start: 181
    functionDepth: 0
    functionLinenumber: 181
    functionLinenumberEnd: 181
    functionName: '& operator=(Waiter&&)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Waiter
    signature: Waiter & operator=(Waiter&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 182
      start: 182
    functionDepth: 0
    functionLinenumber: 182
    functionLinenumberEnd: 182
    functionName: ~Waiter()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~Waiter()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 200
      start: 197
    functionDepth: 0
    functionLinenumber: 197
    functionLinenumberEnd: 200
    functionName: pdns::channel::Waiter::isClosed
    functionSourceFile: /src/pdns/pdns/dnsdistdist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool isClosed() const
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:222,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:223,1
    - Dst: __tsan_release
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:227,1
    - Dst: write
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:229,1
    - Dst: getHandle
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:229,1
    - Dst: auto::release
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:233,1
    - Dst: __tsan_acquire
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:238,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:240,1
    - Dst: __tsan_acquire
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:244,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:250,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:254,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:254,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 23
    argCount: 1
    argNames:
    - ' object'
    argTypes:
    - std::unique_ptr<T, D>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 258
      start: 218
    functionDepth: 0
    functionLinenumber: 218
    functionLinenumberEnd: 258
    functionName: pdns::channel::Sender<T, D>::send
    functionSourceFile: /src/pdns/pdns/dnsdistdist/channel.hh
    functionUses: 0
    functionsReached:
    - std::move
    - __tsan_acquire
    - auto::get
    - __tsan_release
    - std::runtime_error
    - stringerror
    - getHandle
    - write
    - auto::release
    linkageType: ''
    returnType: bool
    signature: bool Sender<T, D>::send(std::unique_ptr<T, D>&& object) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: reset
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:263,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 264
      start: 261
    functionDepth: 0
    functionLinenumber: 261
    functionLinenumberEnd: 264
    functionName: pdns::channel::Sender<T, D>::close
    functionSourceFile: /src/pdns/pdns/dnsdistdist/channel.hh
    functionUses: 0
    functionsReached:
    - reset
    linkageType: ''
    returnType: void
    signature: void Sender<T, D>::close()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::channel::Receiver<T, D>::receive
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:269,1
    - Dst: D
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:269,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 270
      start: 267
    functionDepth: 0
    functionLinenumber: 267
    functionLinenumberEnd: 270
    functionName: pdns::channel::Receiver<T, D>::receive
    functionSourceFile: /src/pdns/pdns/dnsdistdist/channel.hh
    functionUses: 8
    functionsReached:
    - pdns::channel::Receiver<T, D>::receive
    - D
    linkageType: ''
    returnType: std::optional<std::unique_ptr<T, D>>
    signature: std::optional<std::unique_ptr<T, D>> Receiver<T, D>::receive()
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: read
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:278,1
    - Dst: getHandle
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:278,1
    - Dst: __tsan_acquire
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:281,1
    - Dst: std::unique_ptr<T, D>
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:283,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:290,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:299,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:299,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:302,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 25
    argCount: 1
    argNames:
    - deleter
    argTypes:
    - D
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 305
      start: 273
    functionDepth: 0
    functionLinenumber: 273
    functionLinenumberEnd: 305
    functionName: pdns::channel::Receiver<T, D>::receive
    functionSourceFile: /src/pdns/pdns/dnsdistdist/channel.hh
    functionUses: 8
    functionsReached:
    - __tsan_acquire
    - read
    - std::runtime_error
    - std::unique_ptr<T, D>
    - stringerror
    - getHandle
    linkageType: ''
    returnType: std::optional<std::unique_ptr<T, D>>
    signature: std::optional<std::unique_ptr<T, D>> Receiver<T, D>::receive(D deleter)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pipe
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:311,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:312,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:312,1
    - Dst: setNonBlocking
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:317,1
    - Dst: FDWrapper::getHandle
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:317,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:319,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:319,1
    - Dst: setNonBlocking
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:322,1
    - Dst: FDWrapper::getHandle
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:322,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:324,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:324,1
    - Dst: getPipeBufferSize
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:327,1
    - Dst: FDWrapper::getHandle
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:327,1
    - Dst: setPipeBufferSize
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:328,1
    - Dst: FDWrapper::getHandle
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:328,1
    - Dst: Sender<T, D>
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:331,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:331,1
    - Dst: Receiver<T, D>
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:331,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/channel.hh:331,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 14
    argCount: 4
    argNames:
    - senderBlockingMode
    - receiverBlockingMode
    - pipeBufferSize
    - throwOnEOF
    argTypes:
    - SenderBlockingMode
    - ReceiverBlockingMode
    - size_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 332
      start: 308
    functionDepth: 0
    functionLinenumber: 308
    functionLinenumberEnd: 332
    functionName: pdns::channel::createObjectQueue
    functionSourceFile: /src/pdns/pdns/dnsdistdist/channel.hh
    functionUses: 0
    functionsReached:
    - std::move
    - FDWrapper::getHandle
    - std::runtime_error
    - setNonBlocking
    - stringerror
    - pipe
    - Receiver<T, D>
    - setPipeBufferSize
    - getPipeBufferSize
    - Sender<T, D>
    linkageType: ''
    returnType: std::pair<Sender<T, D>, Receiver<T, D>>
    signature: std::pair<Sender<T, D>, Receiver<T, D>> createObjectQueue(SenderBlockingMode
      senderBlockingMode, ReceiverBlockingMode receiverBlockingMode, size_t pipeBufferSize,
      bool throwOnEOF)
  - BBCount: 22
    BranchProfiles: []
    Callsites:
    - Dst: DynBlockRulesGroup::hasQueryRules
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:16,1
    - Dst: getNumberOfQueryEntries
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:17,1
    - Dst: DynBlockRulesGroup::hasResponseRules
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:19,1
    - Dst: getNumberOfResponseEntries
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:20,1
    - Dst: counts_t::reserve
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:22,1
    - Dst: DynBlockRulesGroup::processQueryRules
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:24,1
    - Dst: DynBlockRulesGroup::processResponseRules
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:25,1
    - Dst: counts_t::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:27,1
    - Dst: StatNode::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:27,1
    - Dst: warningRateExceeded
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:38,1
    - Dst: adjustForSamplingRate
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:38,1
    - Dst: DynBlockRulesGroup::handleWarning
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:39,1
    - Dst: rateExceeded
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:42,1
    - Dst: adjustForSamplingRate
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:42,1
    - Dst: DynBlockRulesGroup::addBlock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:43,1
    - Dst: warningRateExceeded
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:47,1
    - Dst: adjustForSamplingRate
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:47,1
    - Dst: DynBlockRulesGroup::handleWarning
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:48,1
    - Dst: rateExceeded
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:51,1
    - Dst: adjustForSamplingRate
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:51,1
    - Dst: DynBlockRulesGroup::addBlock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:52,1
    - Dst: warningRatioExceeded
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:56,1
    - Dst: DynBlockRulesGroup::handleWarning
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:57,1
    - Dst: ratioExceeded
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:61,1
    - Dst: DynBlockRulesGroup::addBlock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:62,1
    - Dst: d_qtypeCounts::find
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:69,1
    - Dst: d_qtypeCounts::cend
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:70,1
    - Dst: second::warningRateExceeded
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:72,1
    - Dst: adjustForSamplingRate
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:72,1
    - Dst: DynBlockRulesGroup::handleWarning
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:73,1
    - Dst: second::rateExceeded
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:76,1
    - Dst: adjustForSamplingRate
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:76,1
    - Dst: DynBlockRulesGroup::addBlock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:77,1
    - Dst: d_rcodeCounts::find
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:86,1
    - Dst: d_rcodeCounts::cend
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:87,1
    - Dst: second::warningRateExceeded
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:88,1
    - Dst: adjustForSamplingRate
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:88,1
    - Dst: DynBlockRulesGroup::handleWarning
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:89,1
    - Dst: second::rateExceeded
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:92,1
    - Dst: adjustForSamplingRate
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:92,1
    - Dst: DynBlockRulesGroup::addBlock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:93,1
    - Dst: d_rcodeCounts::find
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:102,1
    - Dst: d_rcodeCounts::cend
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:103,1
    - Dst: second::warningRatioExceeded
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:104,1
    - Dst: DynBlockRulesGroup::handleWarning
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:105,1
    - Dst: second::ratioExceeded
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:108,1
    - Dst: DynBlockRulesGroup::addBlock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:109,1
    - Dst: warningRatioExceeded
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:115,1
    - Dst: DynBlockRulesGroup::handleWarning
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:116,1
    - Dst: ratioExceeded
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:120,1
    - Dst: DynBlockRulesGroup::addBlock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:121,1
    - Dst: setState
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:127,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:127,1
    - Dst: DynBlockRulesGroup::applySMT
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:130,1
    CyclomaticComplexity: 36
    EdgeCount: 36
    ICount: 78
    argCount: 1
    argNames:
    - ' now'
    argTypes:
    - timespec
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 131
      start: 10
    functionDepth: 2
    functionLinenumber: 10
    functionLinenumberEnd: 131
    functionName: DynBlockRulesGroup::apply
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc
    functionUses: 0
    functionsReached:
    - d_rcodeCounts::find
    - second::warningRateExceeded
    - d_qtypeCounts::find
    - DynBlockRulesGroup::hasQueryRules
    - DynBlockRulesGroup::applySMT
    - rateExceeded
    - setState
    - DynBlockRulesGroup::processResponseRules
    - DynBlockRulesGroup::addBlock
    - counts_t::empty
    - second::rateExceeded
    - ratioExceeded
    - getNumberOfQueryEntries
    - warningRatioExceeded
    - counts_t::reserve
    - getNumberOfResponseEntries
    - second::ratioExceeded
    - warningRateExceeded
    - adjustForSamplingRate
    - second::warningRatioExceeded
    - std::move
    - DynBlockRulesGroup::processQueryRules
    - d_qtypeCounts::cend
    - DynBlockRulesGroup::handleWarning
    - DynBlockRulesGroup::hasResponseRules
    - StatNode::empty
    - d_rcodeCounts::cend
    linkageType: ''
    returnType: void
    signature: void DynBlockRulesGroup::apply(const timespec& now)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:135,1
    - Dst: visit
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:142,1
    - Dst: d_smtVisitorFFI
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:147,1
    - Dst: d_smtVisitor
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:150,1
    - Dst: std::get<0>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:151,1
    - Dst: std::get<1>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:153,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:154,1
    - Dst: std::get<2>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:156,1
    - Dst: static_cast<DNSAction::Action>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:157,1
    - Dst: std::unordered_map::insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:162,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:162,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:162,1
    - Dst: std::unordered_map::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:167,1
    - Dst: dnsdist::DynamicBlocks::getSuffixDynamicRulesCopy
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:169,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:174,1
    - Dst: DynBlockRulesGroup::addOrRefreshBlockSMT
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:179,1
    - Dst: DynBlockRulesGroup::addOrRefreshBlockSMT
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:182,1
    - Dst: setState
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:186,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:186,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 40
    argCount: 2
    argNames:
    - ' now'
    - ' statNodeRoot'
    argTypes:
    - struct timespec
    - StatNode
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 189
      start: 133
    functionDepth: 1
    functionLinenumber: 133
    functionLinenumberEnd: 189
    functionName: DynBlockRulesGroup::applySMT
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc
    functionUses: 1
    functionsReached:
    - d_smtVisitorFFI
    - std::move
    - setState
    - std::get<2>
    - std::get<0>
    - visit
    - std::get<1>
    - static_cast<DNSAction::Action>
    - DNSName
    - dnsdist::DynamicBlocks::getSuffixDynamicRulesCopy
    - DynBlockRulesGroup::addOrRefreshBlockSMT
    - std::unordered_map::insert
    - empty
    - std::unordered_map::empty
    - d_smtVisitor
    linkageType: ''
    returnType: void
    signature: void DynBlockRulesGroup::applySMT(const struct timespec& now, StatNode&
      statNodeRoot)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: find
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:193,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:194,1
    - Dst: auto::second::matches
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:198,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ' query'
    argTypes:
    - Rings::Query
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 199
      start: 191
    functionDepth: 0
    functionLinenumber: 191
    functionLinenumberEnd: 199
    functionName: DynBlockRulesGroup::checkIfQueryTypeMatches
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc
    functionUses: 0
    functionsReached:
    - auto::second::matches
    - end
    - find
    linkageType: ''
    returnType: bool
    signature: bool DynBlockRulesGroup::checkIfQueryTypeMatches(const Rings::Query&
      query)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: find
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:203,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:204,1
    - Dst: auto::second::matches
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:204,1
    - Dst: find
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:208,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:209,1
    - Dst: auto::second::matches
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:209,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 5
    argCount: 1
    argNames:
    - ' response'
    argTypes:
    - Rings::Response
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 210
      start: 201
    functionDepth: 0
    functionLinenumber: 201
    functionLinenumberEnd: 210
    functionName: DynBlockRulesGroup::checkIfResponseCodeMatches
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc
    functionUses: 0
    functionsReached:
    - auto::second::matches
    - end
    - find
    linkageType: ''
    returnType: bool
    signature: bool DynBlockRulesGroup::checkIfResponseCodeMatches(const Rings::Response&
      response)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:221,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ' block'
    argTypes:
    - DynBlock
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 222
      start: 216
    functionDepth: 2
    functionLinenumber: 216
    functionLinenumberEnd: 222
    functionName: getActualAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc
    functionUses: 0
    functionsReached:
    - dnsdist::configuration::getCurrentRuntimeConfiguration
    linkageType: ''
    returnType: DNSAction::Action
    signature: DNSAction::Action getActualAction(const DynBlock& block)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: lookup
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:233,1
    - Dst: getActualAction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:264,1
    - Dst: isIPv4
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:265,1
    - Dst: getBits
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:265,1
    - Dst: isIPv6
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:265,1
    - Dst: getBits
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:265,1
    - Dst: supportsMatchAction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:268,1
    - Dst: block
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:270,1
    - Dst: getNetwork
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:270,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:275,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:275,1
    - Dst: toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:275,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:275,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:276,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:276,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:276,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:281,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:281,1
    - Dst: toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:281,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:282,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:282,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:282,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:282,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:282,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:282,1
    - Dst: insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:288,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:288,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 38
    argCount: 5
    argNames:
    - ' blocks'
    - ' now'
    - ' requestor'
    - ' dblock'
    - beQuiet
    argTypes:
    - ClientAddressDynamicRules
    - timespec
    - AddressAndPortRange
    - DynBlock
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 291
      start: 226
    functionDepth: 3
    functionLinenumber: 226
    functionLinenumberEnd: 291
    functionName: dnsdist::DynamicBlocks::addOrRefreshBlock
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc
    functionUses: 1
    functionsReached:
    - std::move
    - isIPv6
    - toString
    - lookup
    - SLOG
    - block
    - getBits
    - what
    - Logging::Loggable
    - VERBOSESLOG
    - infolog
    - warnlog
    - supportsMatchAction
    - isIPv4
    - getNetwork
    - getActualAction
    - dnsdist::logging::getTopLogger
    - insert
    linkageType: ''
    returnType: bool
    signature: bool addOrRefreshBlock(ClientAddressDynamicRules& blocks, const timespec&
      now, const AddressAndPortRange& requestor, DynBlock&& dblock, bool beQuiet)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: lookup
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:299,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:323,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:323,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:324,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:324,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:324,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:324,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:324,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:324,1
    - Dst: add
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:328,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:328,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 20
    argCount: 4
    argNames:
    - ' blocks'
    - ' now'
    - ' dblock'
    - beQuiet
    argTypes:
    - SuffixDynamicRules
    - timespec
    - DynBlock
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 330
      start: 293
    functionDepth: 1
    functionLinenumber: 293
    functionLinenumberEnd: 330
    functionName: dnsdist::DynamicBlocks::addOrRefreshBlockSMT
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc
    functionUses: 1
    functionsReached:
    - add
    - std::move
    - SLOG
    - lookup
    - Logging::Loggable
    - warnlog
    - dnsdist::logging::getTopLogger
    linkageType: ''
    returnType: bool
    signature: bool addOrRefreshBlockSMT(SuffixDynamicRules& blocks, const timespec&
      now, DynBlock&& dblock, bool beQuiet)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: lookup
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:233,1
    - Dst: getActualAction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:264,1
    - Dst: isIPv4
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:265,1
    - Dst: getBits
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:265,1
    - Dst: isIPv6
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:265,1
    - Dst: getBits
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:265,1
    - Dst: supportsMatchAction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:268,1
    - Dst: block
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:270,1
    - Dst: getNetwork
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:270,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:275,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:275,1
    - Dst: toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:275,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:275,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:276,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:276,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:276,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:281,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:281,1
    - Dst: toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:281,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:282,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:282,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:282,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:282,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:282,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:282,1
    - Dst: insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:288,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:288,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 38
    argCount: 5
    argNames:
    - ' blocks'
    - ' now'
    - ' requestor'
    - ' dblock'
    - beQuiet
    argTypes:
    - ClientAddressDynamicRules
    - timespec
    - AddressAndPortRange
    - DynBlock
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 291
      start: 226
    functionDepth: 3
    functionLinenumber: 226
    functionLinenumberEnd: 291
    functionName: dnsdist::DynamicBlocks::addOrRefreshBlock
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc
    functionUses: 1
    functionsReached:
    - std::move
    - isIPv6
    - toString
    - lookup
    - SLOG
    - block
    - getBits
    - what
    - Logging::Loggable
    - VERBOSESLOG
    - infolog
    - warnlog
    - supportsMatchAction
    - isIPv4
    - getNetwork
    - getActualAction
    - dnsdist::logging::getTopLogger
    - insert
    linkageType: ''
    returnType: bool
    signature: bool addOrRefreshBlock(ClientAddressDynamicRules& blocks, const timespec&
      now, const AddressAndPortRange& requestor, DynBlock&& dblock, bool beQuiet)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: lookup
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:299,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:323,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:323,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:324,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:324,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:324,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:324,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:324,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:324,1
    - Dst: add
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:328,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:328,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 20
    argCount: 4
    argNames:
    - ' blocks'
    - ' now'
    - ' dblock'
    - beQuiet
    argTypes:
    - SuffixDynamicRules
    - timespec
    - DynBlock
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 330
      start: 293
    functionDepth: 1
    functionLinenumber: 293
    functionLinenumberEnd: 330
    functionName: dnsdist::DynamicBlocks::addOrRefreshBlockSMT
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc
    functionUses: 1
    functionsReached:
    - add
    - std::move
    - SLOG
    - lookup
    - Logging::Loggable
    - warnlog
    - dnsdist::logging::getTopLogger
    linkageType: ''
    returnType: bool
    signature: bool addOrRefreshBlockSMT(SuffixDynamicRules& blocks, const timespec&
      now, DynBlock&& dblock, bool beQuiet)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: match
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:336,1
    - Dst: getNetwork
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:336,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:343,1
    - Dst: dnsdist::DynamicBlocks::getClientAddressDynamicRulesCopy
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:349,1
    - Dst: dnsdist::DynamicBlocks::addOrRefreshBlock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:352,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:352,1
    - Dst: d_newBlockHook
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:355,1
    - Dst: DynBlockRulesGroup::toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:355,1
    - Dst: d_blockReason::c_str
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:355,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:355,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:358,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:358,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:358,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:359,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:359,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 20
    argCount: 6
    argNames:
    - ' blocks'
    - ' now'
    - ' requestor'
    - ' rule'
    - ' updated'
    - warning
    argTypes:
    - std::optional<ClientAddressDynamicRules>
    - struct timespec
    - AddressAndPortRange
    - DynBlockRule
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 362
      start: 333
    functionDepth: 4
    functionLinenumber: 333
    functionLinenumberEnd: 362
    functionName: DynBlockRulesGroup::addOrRefreshBlock
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc
    functionUses: 0
    functionsReached:
    - std::move
    - SLOG
    - dnsdist::DynamicBlocks::getClientAddressDynamicRulesCopy
    - dnsdist::DynamicBlocks::addOrRefreshBlock
    - d_newBlockHook
    - what
    - warnlog
    - DNSName
    - static_cast<uint8_t>
    - match
    - DynBlockRulesGroup::toString
    - getNetwork
    - dnsdist::logging::getTopLogger
    - d_blockReason::c_str
    linkageType: ''
    returnType: void
    signature: void DynBlockRulesGroup::addOrRefreshBlock(std::optional<ClientAddressDynamicRules>&
      blocks, const struct timespec& now, const AddressAndPortRange& requestor, const
      DynBlockRule& rule, bool& updated, bool warning)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: check
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:366,1
    - Dst: makeLowerCase
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:373,1
    - Dst: dnsdist::DynamicBlocks::addOrRefreshBlockSMT
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:377,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:377,1
    - Dst: d_newBlockHook
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:380,1
    - Dst: DynBlockRulesGroup::toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:380,1
    - Dst: d_blockReason::c_str
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:380,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:380,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:383,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:383,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:383,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:384,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:384,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 5
    argNames:
    - ' blocks'
    - ' now'
    - ' name'
    - ' rule'
    - ' updated'
    argTypes:
    - SuffixDynamicRules
    - struct timespec
    - DNSName
    - DynBlockRule
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 387
      start: 364
    functionDepth: 2
    functionLinenumber: 364
    functionLinenumberEnd: 387
    functionName: DynBlockRulesGroup::addOrRefreshBlockSMT
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc
    functionUses: 1
    functionsReached:
    - makeLowerCase
    - std::move
    - SLOG
    - dnsdist::DynamicBlocks::addOrRefreshBlockSMT
    - d_newBlockHook
    - what
    - warnlog
    - static_cast<uint8_t>
    - DynBlockRulesGroup::toString
    - dnsdist::logging::getTopLogger
    - check
    - d_blockReason::c_str
    linkageType: ''
    returnType: void
    signature: void DynBlockRulesGroup::addOrRefreshBlockSMT(SuffixDynamicRules& blocks,
      const struct timespec& now, const DNSName& name, const DynBlockRule& rule, bool&
      updated)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: DynBlockRulesGroup::hasQueryRules
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:391,1
    - Dst: queryRing::lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:404,1
    - Dst: matches
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:410,1
    - Dst: DynBlockRulesGroup::checkIfQueryTypeMatches
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:411,1
    - Dst: match
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:414,1
    - Dst: AddressAndPortRange
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:418,1
    - Dst: requestor::isIPv4
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:418,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 25
    argCount: 2
    argNames:
    - ' counts'
    - ' now'
    argTypes:
    - counts_t
    - struct timespec
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 428
      start: 389
    functionDepth: 1
    functionLinenumber: 389
    functionLinenumberEnd: 428
    functionName: DynBlockRulesGroup::processQueryRules
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc
    functionUses: 1
    functionsReached:
    - matches
    - queryRing::lock
    - DynBlockRulesGroup::checkIfQueryTypeMatches
    - AddressAndPortRange
    - match
    - requestor::isIPv4
    - DynBlockRulesGroup::hasQueryRules
    linkageType: ''
    returnType: void
    signature: void DynBlockRulesGroup::processQueryRules(counts_t& counts, const
      struct timespec& now)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: DynBlockRulesGroup::hasResponseRules
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:432,1
    - Dst: DynBlockRulesGroup::hasSuffixMatchRules
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:432,1
    - Dst: respRing::lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:479,1
    - Dst: matches
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:489,1
    - Dst: isACacheHit
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:491,1
    - Dst: submit
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:492,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:492,1
    - Dst: getSamplingRate
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:492,1
    - Dst: match
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:495,1
    - Dst: AddressAndPortRange
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:499,1
    - Dst: requestor::isIPv4
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:499,1
    - Dst: matches
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:502,1
    - Dst: DynBlockRulesGroup::checkIfResponseCodeMatches
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:503,1
    - Dst: matches
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:504,1
    - Dst: matches
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:505,1
    - Dst: isRCodeAllowed
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:505,1
    - Dst: isACacheHit
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:513,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 63
    argCount: 3
    argNames:
    - ' counts'
    - ' root'
    - ' now'
    argTypes:
    - counts_t
    - StatNode
    - struct timespec
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 521
      start: 430
    functionDepth: 1
    functionLinenumber: 430
    functionLinenumberEnd: 521
    functionName: DynBlockRulesGroup::processResponseRules
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc
    functionUses: 1
    functionsReached:
    - isACacheHit
    - matches
    - pdns::max
    - DynBlockRulesGroup::checkIfResponseCodeMatches
    - DynBlockRulesGroup::hasResponseRules
    - submit
    - isRCodeAllowed
    - AddressAndPortRange
    - match
    - requestor::isIPv4
    - DynBlockRulesGroup::hasSuffixMatchRules
    - respRing::lock
    - getSamplingRate
    linkageType: ''
    returnType: void
    signature: void DynBlockRulesGroup::processResponseRules(counts_t& counts, StatNode&
      root, const struct timespec& now)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: getLocal
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:530,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:534,1
    - Dst: first::getNetwork
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:536,1
    - Dst: getHits
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:538,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:541,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:541,1
    - Dst: first::toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:541,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:541,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:542,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:542,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:542,1
    - Dst: unblock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:546,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:549,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:549,1
    - Dst: first::toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:549,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:549,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:550,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:550,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:550,1
    - Dst: std::vector::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:555,1
    - Dst: dnsdist::DynamicBlocks::getClientAddressDynamicRulesCopy
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:556,1
    - Dst: auto::erase
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:558,1
    - Dst: setState
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:560,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:560,1
    - Dst: getLocal
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:567,1
    - Dst: auto::visit
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:568,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:570,1
    - Dst: std::vector::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:573,1
    - Dst: dnsdist::DynamicBlocks::getSuffixDynamicRulesCopy
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:574,1
    - Dst: auto::remove
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:576,1
    - Dst: setState
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:578,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:578,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 35
    argCount: 1
    argNames:
    - ' now'
    argTypes:
    - struct timespec
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 581
      start: 523
    functionDepth: 1
    functionLinenumber: 523
    functionLinenumberEnd: 581
    functionName: DynBlockMaintenance::purgeExpired
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc
    functionUses: 0
    functionsReached:
    - auto::erase
    - std::vector::push_back
    - getHits
    - setState
    - dnsdist::DynamicBlocks::getClientAddressDynamicRulesCopy
    - Logging::Loggable
    - unblock
    - getLocal
    - first::toString
    - dnsdist::logging::getTopLogger
    - VERBOSESLOG
    - dnsdist::DynamicBlocks::getSuffixDynamicRulesCopy
    - std::vector::empty
    - first::getNetwork
    - auto::remove
    - std::move
    - what
    - auto::visit
    - infolog
    linkageType: ''
    returnType: void
    signature: void DynBlockMaintenance::purgeExpired(const struct timespec& now)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: getLocal
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:590,1
    - Dst: second::blocks::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:593,1
    - Dst: getHits
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:596,1
    - Dst: first::getNetwork
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:596,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:599,1
    - Dst: front
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:599,1
    - Dst: std::pair
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:600,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:602,1
    - Dst: pop_front
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:603,1
    - Dst: insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:606,1
    - Dst: std::lower_bound
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:606,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:606,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:606,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 17
    argCount: 1
    argNames:
    - topN
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 614
      start: 583
    functionDepth: 1
    functionLinenumber: 583
    functionLinenumberEnd: 614
    functionName: DynBlockMaintenance::getTopNetmasks
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc
    functionUses: 0
    functionsReached:
    - second::blocks::load
    - getHits
    - end
    - size
    - getLocal
    - pop_front
    - std::lower_bound
    - std::pair
    - insert
    - begin
    - front
    - first::getNetwork
    linkageType: ''
    returnType: std::map<std::string, std::list<std::pair<AddressAndPortRange, uint32_t>>>
    signature: std::map<std::string, std::list<std::pair<AddressAndPortRange, uint32_t>>>
      DynBlockMaintenance::getTopNetmasks(size_t topN)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: getLocal
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:623,1
    - Dst: auto::visit
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:624,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:626,1
    - Dst: front
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:626,1
    - Dst: std::pair
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:627,1
    - Dst: d_value::blocks::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:627,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:629,1
    - Dst: pop_front
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:630,1
    - Dst: insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:633,1
    - Dst: std::lower_bound
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:633,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:633,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:633,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 1
    argNames:
    - topN
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 641
      start: 616
    functionDepth: 1
    functionLinenumber: 616
    functionLinenumberEnd: 641
    functionName: DynBlockMaintenance::getTopSuffixes
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc
    functionUses: 0
    functionsReached:
    - auto::visit
    - end
    - size
    - getLocal
    - d_value::blocks::load
    - pop_front
    - std::lower_bound
    - std::pair
    - insert
    - begin
    - front
    linkageType: ''
    returnType: std::map<std::string, std::list<std::pair<DNSName, uint32_t>>>
    signature: std::map<std::string, std::list<std::pair<DNSName, uint32_t>>> DynBlockMaintenance::getTopSuffixes(size_t
      topN)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DynBlockMaintenance::getTopSuffixes
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:658,1
    - Dst: DynBlockMaintenance::getTopNetmasks
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:659,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:661,1
    - Dst: pop_front
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:662,1
    - Dst: push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:664,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:664,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 665
      start: 653
    functionDepth: 2
    functionLinenumber: 653
    functionLinenumberEnd: 665
    functionName: DynBlockMaintenance::collectMetrics
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc
    functionUses: 0
    functionsReached:
    - std::move
    - push_back
    - DynBlockMaintenance::getTopNetmasks
    - DynBlockMaintenance::getTopSuffixes
    - size
    - pop_front
    linkageType: ''
    returnType: void
    signature: void DynBlockMaintenance::collectMetrics()
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:669,1
    - Dst: front
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:675,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:717,1
    - Dst: front
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:717,1
    - Dst: std::pair<AddressAndPortRange, uint32_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:719,1
    - Dst: std::round
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:719,1
    - Dst: static_cast<double>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:719,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:720,1
    - Dst: pop_front
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:721,1
    - Dst: insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:724,1
    - Dst: std::lower_bound
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:724,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:724,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:724,1
    - Dst: front
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:735,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:777,1
    - Dst: front
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:777,1
    - Dst: std::pair<DNSName, uint32_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:779,1
    - Dst: std::round
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:779,1
    - Dst: static_cast<double>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:779,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:780,1
    - Dst: pop_front
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:781,1
    - Dst: insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:784,1
    - Dst: std::lower_bound
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:784,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:784,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:784,1
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:794,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:795,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:796,1
    CyclomaticComplexity: 27
    EdgeCount: 27
    ICount: 64
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 798
      start: 667
    functionDepth: 1
    functionLinenumber: 667
    functionLinenumberEnd: 798
    functionName: DynBlockMaintenance::generateMetrics
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc
    functionUses: 0
    functionsReached:
    - std::pair<AddressAndPortRange, uint32_t>
    - std::move
    - static_cast<double>
    - end
    - size
    - lock
    - pop_front
    - std::round
    - std::lower_bound
    - std::pair<DNSName, uint32_t>
    - insert
    - begin
    - empty
    - front
    linkageType: ''
    returnType: void
    signature: void DynBlockMaintenance::generateMetrics()
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: time
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:810,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:811,1
    - Dst: static_cast<time_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:812,1
    - Dst: static_cast<time_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:813,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:817,1
    - Dst: std::min
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:819,1
    - Dst: std::min
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:821,1
    - Dst: std::min
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:822,1
    - Dst: std::this_thread::sleep_for
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:825,1
    - Dst: std::chrono::seconds
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:825,1
    - Dst: time
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:828,1
    - Dst: DynBlockMaintenance::collectMetrics
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:831,1
    - Dst: time
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:833,1
    - Dst: DynBlockMaintenance::generateMetrics
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:838,1
    - Dst: time
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:840,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:846,1
    - Dst: gettime
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:849,1
    - Dst: DynBlockMaintenance::purgeExpired
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:850,1
    - Dst: time
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:852,1
    - Dst: static_cast<time_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:853,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:857,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:857,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:857,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:858,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:858,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:861,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:861,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:862,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 33
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 865
      start: 800
    functionDepth: 3
    functionLinenumber: 800
    functionLinenumberEnd: 865
    functionName: DynBlockMaintenance::run
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc
    functionUses: 0
    functionsReached:
    - std::this_thread::sleep_for
    - pdns::max
    - DynBlockMaintenance::generateMetrics
    - SLOG
    - dnsdist::configuration::getCurrentRuntimeConfiguration
    - std::chrono::seconds
    - time
    - std::min
    - DynBlockMaintenance::collectMetrics
    - what
    - warnlog
    - VERBOSESLOG
    - infolog
    - gettime
    - dnsdist::logging::getTopLogger
    - static_cast<time_t>
    - DynBlockMaintenance::purgeExpired
    linkageType: ''
    returnType: void
    signature: void DynBlockMaintenance::run()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:869,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 870
      start: 867
    functionDepth: 0
    functionLinenumber: 867
    functionLinenumberEnd: 870
    functionName: DynBlockMaintenance::getHitsForTopNetmasks
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc
    functionUses: 2
    functionsReached:
    - lock
    linkageType: ''
    returnType: std::map<std::string, std::list<std::pair<AddressAndPortRange, uint32_t>>>
    signature: std::map<std::string, std::list<std::pair<AddressAndPortRange, uint32_t>>>
      DynBlockMaintenance::getHitsForTopNetmasks()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:874,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 875
      start: 872
    functionDepth: 0
    functionLinenumber: 872
    functionLinenumberEnd: 875
    functionName: DynBlockMaintenance::getHitsForTopSuffixes
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc
    functionUses: 2
    functionsReached:
    - lock
    linkageType: ''
    returnType: std::map<std::string, std::list<std::pair<DNSName, uint32_t>>>
    signature: std::map<std::string, std::list<std::pair<DNSName, uint32_t>>> DynBlockMaintenance::getHitsForTopSuffixes()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: isEnabled
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:879,1
    - Dst: DNSAction::typeToString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:885,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:890,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:890,1
    - Dst: std::stringstream::str
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:892,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 893
      start: 877
    functionDepth: 1
    functionLinenumber: 877
    functionLinenumberEnd: 893
    functionName: DynBlockRulesGroup::DynBlockRule::toString() const
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc
    functionUses: 0
    functionsReached:
    - DNSAction::typeToString
    - std::stringstream::str
    - std::to_string
    - isEnabled
    linkageType: ''
    returnType: std::string
    signature: std::string DynBlockRulesGroup::DynBlockRule::toString() const
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 1
    argNames:
    - ' when'
    argTypes:
    - struct timespec
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 910
      start: 895
    functionDepth: 0
    functionLinenumber: 895
    functionLinenumberEnd: 910
    functionName: DynBlockRulesGroup::DynBlockRule::matches(const struct timespec&
      when)
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool DynBlockRulesGroup::DynBlockRule::matches(const struct timespec&
      when)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DiffTime
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:918,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - count
    - ' now'
    argTypes:
    - uint32_t
    - struct timespec
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 921
      start: 912
    functionDepth: 0
    functionLinenumber: 912
    functionLinenumberEnd: 921
    functionName: DynBlockRulesGroup::DynBlockRule::rateExceeded(uint32_t count, const
      struct timespec& now) const
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc
    functionUses: 0
    functionsReached:
    - DiffTime
    linkageType: ''
    returnType: bool
    signature: bool DynBlockRulesGroup::DynBlockRule::rateExceeded(uint32_t count,
      const struct timespec& now) const
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: DiffTime
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:933,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - count
    - ' now'
    argTypes:
    - uint32_t
    - struct timespec
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 936
      start: 923
    functionDepth: 0
    functionLinenumber: 923
    functionLinenumberEnd: 936
    functionName: DynBlockRulesGroup::DynBlockRule::warningRateExceeded(uint32_t count,
      const struct timespec& now) const
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc
    functionUses: 0
    functionsReached:
    - DiffTime
    linkageType: ''
    returnType: bool
    signature: bool DynBlockRulesGroup::DynBlockRule::warningRateExceeded(uint32_t
      count, const struct timespec& now) const
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<double>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:948,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - total
    - count
    argTypes:
    - uint32_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 950
      start: 938
    functionDepth: 0
    functionLinenumber: 938
    functionLinenumberEnd: 950
    functionName: DynBlockRulesGroup::DynBlockRatioRule::ratioExceeded(uint32_t total,
      uint32_t count) const
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc
    functionUses: 0
    functionsReached:
    - static_cast<double>
    linkageType: ''
    returnType: bool
    signature: bool DynBlockRulesGroup::DynBlockRatioRule::ratioExceeded(uint32_t
      total, uint32_t count) const
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<double>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:966,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - total
    - count
    argTypes:
    - uint32_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 968
      start: 952
    functionDepth: 0
    functionLinenumber: 952
    functionLinenumberEnd: 968
    functionName: DynBlockRulesGroup::DynBlockRatioRule::warningRatioExceeded(uint32_t
      total, uint32_t count) const
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc
    functionUses: 0
    functionsReached:
    - static_cast<double>
    linkageType: ''
    returnType: bool
    signature: bool DynBlockRulesGroup::DynBlockRatioRule::warningRatioExceeded(uint32_t
      total, uint32_t count) const
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: isEnabled
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:972,1
    - Dst: DNSAction::typeToString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:978,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:983,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:983,1
    - Dst: std::stringstream::str
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:985,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 986
      start: 970
    functionDepth: 1
    functionLinenumber: 970
    functionLinenumberEnd: 986
    functionName: DynBlockRulesGroup::DynBlockRatioRule::toString() const
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc
    functionUses: 0
    functionsReached:
    - DNSAction::typeToString
    - std::stringstream::str
    - std::to_string
    - isEnabled
    linkageType: ''
    returnType: std::string
    signature: std::string DynBlockRulesGroup::DynBlockRatioRule::toString() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: cacheMisses::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:990,1
    - Dst: cacheHits::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:991,1
    - Dst: static_cast<double>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:995,1
    - Dst: static_cast<double>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:995,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 997
      start: 988
    functionDepth: 0
    functionLinenumber: 988
    functionLinenumberEnd: 997
    functionName: DynBlockRulesGroup::DynBlockCacheMissRatioRule::checkGlobalCacheHitRatio()
      const
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc
    functionUses: 0
    functionsReached:
    - cacheMisses::load
    - cacheHits::load
    - static_cast<double>
    linkageType: ''
    returnType: bool
    signature: bool DynBlockRulesGroup::DynBlockCacheMissRatioRule::checkGlobalCacheHitRatio()
      const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DynBlockRulesGroup::DynBlockRatioRule::ratioExceeded
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:1001,1
    - Dst: checkGlobalCacheHitRatio
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:1005,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - total
    - count
    argTypes:
    - uint32_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1006
      start: 999
    functionDepth: 0
    functionLinenumber: 999
    functionLinenumberEnd: 1006
    functionName: DynBlockRulesGroup::DynBlockCacheMissRatioRule::ratioExceeded(uint32_t
      total, uint32_t count) const
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc
    functionUses: 0
    functionsReached:
    - DynBlockRulesGroup::DynBlockRatioRule::ratioExceeded
    - checkGlobalCacheHitRatio
    linkageType: ''
    returnType: bool
    signature: bool DynBlockRulesGroup::DynBlockCacheMissRatioRule::ratioExceeded(uint32_t
      total, uint32_t count) const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DynBlockRulesGroup::DynBlockRatioRule::warningRatioExceeded
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:1010,1
    - Dst: checkGlobalCacheHitRatio
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:1014,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - total
    - count
    argTypes:
    - uint32_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1015
      start: 1008
    functionDepth: 0
    functionLinenumber: 1008
    functionLinenumberEnd: 1015
    functionName: DynBlockRulesGroup::DynBlockCacheMissRatioRule::warningRatioExceeded(uint32_t
      total, uint32_t count) const
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc
    functionUses: 0
    functionsReached:
    - DynBlockRulesGroup::DynBlockRatioRule::warningRatioExceeded
    - checkGlobalCacheHitRatio
    linkageType: ''
    returnType: bool
    signature: bool DynBlockRulesGroup::DynBlockCacheMissRatioRule::warningRatioExceeded(uint32_t
      total, uint32_t count) const
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: isEnabled
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:1019,1
    - Dst: DNSAction::typeToString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:1025,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:1030,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:1030,1
    - Dst: std::stringstream::str
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:1032,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1033
      start: 1017
    functionDepth: 1
    functionLinenumber: 1017
    functionLinenumberEnd: 1033
    functionName: DynBlockRulesGroup::DynBlockCacheMissRatioRule::toString() const
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc
    functionUses: 0
    functionsReached:
    - DNSAction::typeToString
    - std::stringstream::str
    - std::to_string
    - isEnabled
    linkageType: ''
    returnType: std::string
    signature: std::string DynBlockRulesGroup::DynBlockCacheMissRatioRule::toString()
      const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: count
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:1037,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rcode
    argTypes:
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1038
      start: 1035
    functionDepth: 0
    functionLinenumber: 1035
    functionLinenumberEnd: 1038
    functionName: DynBlockRulesGroup::DynBlockAllowedRCodesRatioRule::isRCodeAllowed(uint8_t
      rcode) const
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc
    functionUses: 0
    functionsReached:
    - count
    linkageType: ''
    returnType: bool
    signature: bool DynBlockRulesGroup::DynBlockAllowedRCodesRatioRule::isRCodeAllowed(uint8_t
      rcode) const
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: isEnabled
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:1042,1
    - Dst: DNSAction::typeToString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:1048,1
    - Dst: std::string::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:1055,1
    - Dst: RCode::to_s
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:1058,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:1061,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:1061,1
    - Dst: std::stringstream::str
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:1063,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1064
      start: 1040
    functionDepth: 1
    functionLinenumber: 1040
    functionLinenumberEnd: 1064
    functionName: DynBlockRulesGroup::DynBlockAllowedRCodesRatioRule::toString() const
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc
    functionUses: 0
    functionsReached:
    - std::to_string
    - std::stringstream::str
    - isEnabled
    - RCode::to_s
    - std::string::empty
    - DNSAction::typeToString
    linkageType: ''
    returnType: std::string
    signature: std::string DynBlockRulesGroup::DynBlockAllowedRCodesRatioRule::toString()
      const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getLocal
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:1070,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1072
      start: 1068
    functionDepth: 0
    functionLinenumber: 1068
    functionLinenumberEnd: 1072
    functionName: dnsdist::DynamicBlocks::getClientAddressDynamicRules
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc
    functionUses: 5
    functionsReached:
    - getLocal
    linkageType: ''
    returnType: ClientAddressDynamicRules
    signature: ClientAddressDynamicRules & getClientAddressDynamicRules()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getCopy
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:1076,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1077
      start: 1074
    functionDepth: 0
    functionLinenumber: 1074
    functionLinenumberEnd: 1077
    functionName: dnsdist::DynamicBlocks::getClientAddressDynamicRulesCopy
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc
    functionUses: 3
    functionsReached:
    - getCopy
    linkageType: ''
    returnType: ClientAddressDynamicRules
    signature: ClientAddressDynamicRules getClientAddressDynamicRulesCopy()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getLocal
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:1081,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1083
      start: 1079
    functionDepth: 0
    functionLinenumber: 1079
    functionLinenumberEnd: 1083
    functionName: dnsdist::DynamicBlocks::getSuffixDynamicRules
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc
    functionUses: 3
    functionsReached:
    - getLocal
    linkageType: ''
    returnType: SuffixDynamicRules
    signature: SuffixDynamicRules & getSuffixDynamicRules()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getCopy
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:1087,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1088
      start: 1085
    functionDepth: 0
    functionLinenumber: 1085
    functionLinenumberEnd: 1088
    functionName: dnsdist::DynamicBlocks::getSuffixDynamicRulesCopy
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc
    functionUses: 3
    functionsReached:
    - getCopy
    linkageType: ''
    returnType: SuffixDynamicRules
    signature: SuffixDynamicRules getSuffixDynamicRulesCopy()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: setState
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:1092,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:1092,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - ' rules'
    argTypes:
    - ClientAddressDynamicRules
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1093
      start: 1090
    functionDepth: 0
    functionLinenumber: 1090
    functionLinenumberEnd: 1093
    functionName: dnsdist::DynamicBlocks::setClientAddressDynamicRules
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc
    functionUses: 1
    functionsReached:
    - setState
    - std::move
    linkageType: ''
    returnType: void
    signature: void setClientAddressDynamicRules(ClientAddressDynamicRules&& rules)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: setState
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:1097,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:1097,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - ' rules'
    argTypes:
    - SuffixDynamicRules
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1098
      start: 1095
    functionDepth: 0
    functionLinenumber: 1095
    functionLinenumberEnd: 1098
    functionName: dnsdist::DynamicBlocks::setSuffixDynamicRules
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc
    functionUses: 1
    functionsReached:
    - setState
    - std::move
    linkageType: ''
    returnType: void
    signature: void setSuffixDynamicRules(SuffixDynamicRules&& rules)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::DynamicBlocks::setClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:1103,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:1103,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1104
      start: 1100
    functionDepth: 1
    functionLinenumber: 1100
    functionLinenumberEnd: 1104
    functionName: dnsdist::DynamicBlocks::clearClientAddressDynamicRules
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc
    functionUses: 0
    functionsReached:
    - dnsdist::DynamicBlocks::setClientAddressDynamicRules
    - std::move
    linkageType: ''
    returnType: void
    signature: void clearClientAddressDynamicRules()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::DynamicBlocks::setSuffixDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:1109,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:1109,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1110
      start: 1106
    functionDepth: 1
    functionLinenumber: 1106
    functionLinenumberEnd: 1110
    functionName: dnsdist::DynamicBlocks::clearSuffixDynamicRules
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc
    functionUses: 0
    functionsReached:
    - dnsdist::DynamicBlocks::setSuffixDynamicRules
    - std::move
    linkageType: ''
    returnType: void
    signature: void clearSuffixDynamicRules()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:1116,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' group'
    argTypes:
    - std::shared_ptr<DynBlockRulesGroup>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1117
      start: 1114
    functionDepth: 0
    functionLinenumber: 1114
    functionLinenumberEnd: 1117
    functionName: dnsdist::DynamicBlocks::registerGroup
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc
    functionUses: 0
    functionsReached:
    - lock
    linkageType: ''
    returnType: void
    signature: void registerGroup(std::shared_ptr<DynBlockRulesGroup>& group)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: gettime
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:1124,1
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:1125,1
    - Dst: apply
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:1126,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ' luaCtx'
    argTypes:
    - LuaContext
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1128
      start: 1119
    functionDepth: 0
    functionLinenumber: 1119
    functionLinenumberEnd: 1128
    functionName: dnsdist::DynamicBlocks::runRegisteredGroups
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc
    functionUses: 0
    functionsReached:
    - apply
    - gettime
    - lock
    linkageType: ''
    returnType: void
    signature: void runRegisteredGroups(LuaContext& luaCtx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getLocal
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:1070,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1072
      start: 1068
    functionDepth: 0
    functionLinenumber: 1068
    functionLinenumberEnd: 1072
    functionName: dnsdist::DynamicBlocks::getClientAddressDynamicRules
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc
    functionUses: 5
    functionsReached:
    - getLocal
    linkageType: ''
    returnType: ClientAddressDynamicRules
    signature: ClientAddressDynamicRules & getClientAddressDynamicRules()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getCopy
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:1076,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1077
      start: 1074
    functionDepth: 0
    functionLinenumber: 1074
    functionLinenumberEnd: 1077
    functionName: dnsdist::DynamicBlocks::getClientAddressDynamicRulesCopy
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc
    functionUses: 3
    functionsReached:
    - getCopy
    linkageType: ''
    returnType: ClientAddressDynamicRules
    signature: ClientAddressDynamicRules getClientAddressDynamicRulesCopy()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getLocal
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:1081,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1083
      start: 1079
    functionDepth: 0
    functionLinenumber: 1079
    functionLinenumberEnd: 1083
    functionName: dnsdist::DynamicBlocks::getSuffixDynamicRules
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc
    functionUses: 3
    functionsReached:
    - getLocal
    linkageType: ''
    returnType: SuffixDynamicRules
    signature: SuffixDynamicRules & getSuffixDynamicRules()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getCopy
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:1087,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1088
      start: 1085
    functionDepth: 0
    functionLinenumber: 1085
    functionLinenumberEnd: 1088
    functionName: dnsdist::DynamicBlocks::getSuffixDynamicRulesCopy
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc
    functionUses: 3
    functionsReached:
    - getCopy
    linkageType: ''
    returnType: SuffixDynamicRules
    signature: SuffixDynamicRules getSuffixDynamicRulesCopy()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: setState
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:1092,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:1092,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - ' rules'
    argTypes:
    - ClientAddressDynamicRules
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1093
      start: 1090
    functionDepth: 0
    functionLinenumber: 1090
    functionLinenumberEnd: 1093
    functionName: dnsdist::DynamicBlocks::setClientAddressDynamicRules
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc
    functionUses: 2
    functionsReached:
    - setState
    - std::move
    linkageType: ''
    returnType: void
    signature: void setClientAddressDynamicRules(ClientAddressDynamicRules&& rules)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: setState
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:1097,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:1097,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - ' rules'
    argTypes:
    - SuffixDynamicRules
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1098
      start: 1095
    functionDepth: 0
    functionLinenumber: 1095
    functionLinenumberEnd: 1098
    functionName: dnsdist::DynamicBlocks::setSuffixDynamicRules
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc
    functionUses: 2
    functionsReached:
    - setState
    - std::move
    linkageType: ''
    returnType: void
    signature: void setSuffixDynamicRules(SuffixDynamicRules&& rules)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::DynamicBlocks::setClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:1103,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:1103,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1104
      start: 1100
    functionDepth: 1
    functionLinenumber: 1100
    functionLinenumberEnd: 1104
    functionName: dnsdist::DynamicBlocks::clearClientAddressDynamicRules
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc
    functionUses: 0
    functionsReached:
    - dnsdist::DynamicBlocks::setClientAddressDynamicRules
    - std::move
    linkageType: ''
    returnType: void
    signature: void clearClientAddressDynamicRules()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::DynamicBlocks::setSuffixDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:1109,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:1109,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1110
      start: 1106
    functionDepth: 1
    functionLinenumber: 1106
    functionLinenumberEnd: 1110
    functionName: dnsdist::DynamicBlocks::clearSuffixDynamicRules
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc
    functionUses: 0
    functionsReached:
    - dnsdist::DynamicBlocks::setSuffixDynamicRules
    - std::move
    linkageType: ''
    returnType: void
    signature: void clearSuffixDynamicRules()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:1116,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' group'
    argTypes:
    - std::shared_ptr<DynBlockRulesGroup>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1117
      start: 1114
    functionDepth: 0
    functionLinenumber: 1114
    functionLinenumberEnd: 1117
    functionName: dnsdist::DynamicBlocks::registerGroup
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc
    functionUses: 0
    functionsReached:
    - lock
    linkageType: ''
    returnType: void
    signature: void registerGroup(std::shared_ptr<DynBlockRulesGroup>& group)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: gettime
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:1124,1
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:1125,1
    - Dst: apply
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc:1126,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ' luaCtx'
    argTypes:
    - LuaContext
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1128
      start: 1119
    functionDepth: 0
    functionLinenumber: 1119
    functionLinenumberEnd: 1128
    functionName: dnsdist::DynamicBlocks::runRegisteredGroups
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc
    functionUses: 0
    functionsReached:
    - apply
    - gettime
    - lock
    linkageType: ''
    returnType: void
    signature: void runRegisteredGroups(LuaContext& luaCtx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ObjectPipe::write
      Src: /src/pdns/pdns/dnsdistdist/test-delaypipe_hh.cc:18,1
    - Dst: ObjectPipe::readTimeout
      Src: /src/pdns/pdns/dnsdistdist/test-delaypipe_hh.cc:22,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-delaypipe_hh.cc:23,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-delaypipe_hh.cc:24,1
    - Dst: ObjectPipe::close
      Src: /src/pdns/pdns/dnsdistdist/test-delaypipe_hh.cc:27,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-delaypipe_hh.cc:28,1
    - Dst: ObjectPipe::readTimeout
      Src: /src/pdns/pdns/dnsdistdist/test-delaypipe_hh.cc:28,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 29
      start: 14
    functionDepth: 0
    functionLinenumber: 14
    functionLinenumberEnd: 29
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-delaypipe_hh.cc
    functionUses: 0
    functionsReached:
    - ObjectPipe::close
    - ObjectPipe::readTimeout
    - BOOST_CHECK_EQUAL
    - ObjectPipe::write
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_object_pipe)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DelayPipe::submit
      Src: /src/pdns/pdns/dnsdistdist/test-delaypipe_hh.cc:47,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-delaypipe_hh.cc:49,1
    - Dst: DelayPipe::submit
      Src: /src/pdns/pdns/dnsdistdist/test-delaypipe_hh.cc:53,1
    - Dst: sleep
      Src: /src/pdns/pdns/dnsdistdist/test-delaypipe_hh.cc:55,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-delaypipe_hh.cc:56,1
    - Dst: sleep
      Src: /src/pdns/pdns/dnsdistdist/test-delaypipe_hh.cc:57,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-delaypipe_hh.cc:58,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 32
    functionDepth: 0
    functionLinenumber: 32
    functionLinenumberEnd: 59
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-delaypipe_hh.cc
    functionUses: 0
    functionsReached:
    - sleep
    - DelayPipe::submit
    - BOOST_CHECK_EQUAL
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_delay_pipe_small)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 38
    functionDepth: 0
    functionLinenumber: 38
    functionLinenumberEnd: 41
    functionName: operator()()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-delaypipe_hh.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void operator()()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DelayPipe::submit
      Src: /src/pdns/pdns/dnsdistdist/test-delaypipe_hh.cc:76,1
    - Dst: sleep
      Src: /src/pdns/pdns/dnsdistdist/test-delaypipe_hh.cc:79,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-delaypipe_hh.cc:80,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 61
    functionDepth: 0
    functionLinenumber: 61
    functionLinenumberEnd: 81
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-delaypipe_hh.cc
    functionUses: 0
    functionsReached:
    - sleep
    - DelayPipe::submit
    - BOOST_CHECK_EQUAL
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_delay_pipe_big)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 67
    functionDepth: 0
    functionLinenumber: 67
    functionLinenumberEnd: 70
    functionName: operator()()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-delaypipe_hh.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void operator()()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 41
    functionDepth: 0
    functionLinenumber: 41
    functionLinenumberEnd: 42
    functionName: htobe16
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: htobe16(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 42
    functionDepth: 0
    functionLinenumber: 42
    functionLinenumberEnd: 43
    functionName: htole16
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: htole16(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 44
    functionName: be16toh
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: be16toh(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 44
    functionDepth: 0
    functionLinenumber: 44
    functionLinenumberEnd: 45
    functionName: le16toh
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: le16toh(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 46
    functionDepth: 0
    functionLinenumber: 46
    functionLinenumberEnd: 47
    functionName: htobe32
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: htobe32(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 47
    functionDepth: 0
    functionLinenumber: 47
    functionLinenumberEnd: 48
    functionName: htole32
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: htole32(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 48
    functionDepth: 0
    functionLinenumber: 48
    functionLinenumberEnd: 49
    functionName: be32toh
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: be32toh(x)
  - 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: le32toh
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: le32toh(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: htobe64
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    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: 53
      start: 52
    functionDepth: 0
    functionLinenumber: 52
    functionLinenumberEnd: 53
    functionName: htole64
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: htole64(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 53
    functionDepth: 0
    functionLinenumber: 53
    functionLinenumberEnd: 54
    functionName: be64toh
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: be64toh(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 54
    functionDepth: 0
    functionLinenumber: 54
    functionLinenumberEnd: 55
    functionName: le64toh
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: le64toh(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 64
    functionDepth: 0
    functionLinenumber: 64
    functionLinenumberEnd: 65
    functionName: htobe16
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: htobe16(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 65
    functionDepth: 0
    functionLinenumber: 65
    functionLinenumberEnd: 66
    functionName: htole16
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: htole16(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 66
    functionDepth: 0
    functionLinenumber: 66
    functionLinenumberEnd: 67
    functionName: be16toh
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: be16toh(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 67
    functionDepth: 0
    functionLinenumber: 67
    functionLinenumberEnd: 68
    functionName: le16toh
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: le16toh(x)
  - 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: htobe32
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: htobe32(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: htole32
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: htole32(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 71
    functionDepth: 0
    functionLinenumber: 71
    functionLinenumberEnd: 72
    functionName: be32toh
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: be32toh(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 72
    functionDepth: 0
    functionLinenumber: 72
    functionLinenumberEnd: 73
    functionName: le32toh
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: le32toh(x)
  - 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: 74
    functionDepth: 0
    functionLinenumber: 74
    functionLinenumberEnd: 75
    functionName: htobe64
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    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: 76
      start: 75
    functionDepth: 0
    functionLinenumber: 75
    functionLinenumberEnd: 76
    functionName: htole64
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: htole64(x)
  - 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: be64toh
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: be64toh(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: le64toh
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: le64toh(x)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: std::tie
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:98,1
    - Dst: std::tie
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:98,1
    - Dst: memcmp
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:104,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 96
    functionDepth: 0
    functionLinenumber: 96
    functionLinenumberEnd: 105
    functionName: operator==(const ComboAddress& rhs) const
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 0
    functionsReached:
    - memcmp
    - std::tie
    linkageType: ''
    returnType: bool
    signature: bool operator==(const ComboAddress& rhs) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 107
    functionDepth: 0
    functionLinenumber: 107
    functionLinenumberEnd: 110
    functionName: operator!=(const ComboAddress& rhs) const
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool operator!=(const ComboAddress& rhs) const
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: std::tie
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:117,1
    - Dst: std::tie
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:117,1
    - Dst: std::tie
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:120,1
    - Dst: std::tie
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:120,1
    - Dst: memcmp
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:126,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 127
      start: 112
    functionDepth: 0
    functionLinenumber: 112
    functionLinenumberEnd: 127
    functionName: operator<(const ComboAddress& rhs) const
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 0
    functionsReached:
    - memcmp
    - std::tie
    linkageType: ''
    returnType: bool
    signature: bool operator<(const ComboAddress& rhs) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: rhs
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:131,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 132
      start: 129
    functionDepth: 0
    functionLinenumber: 129
    functionLinenumberEnd: 132
    functionName: operator>(const ComboAddress& rhs) const
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 0
    functionsReached:
    - rhs
    linkageType: ''
    returnType: bool
    signature: bool operator>(const ComboAddress& rhs) const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:140,1
    - Dst: burtle
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:141,1
    - Dst: burtle
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:142,1
    - Dst: reinterpret_cast<const uint8_t*>
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:142,1
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:144,1
    - Dst: burtle
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:145,1
    - Dst: burtle
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:146,1
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:146,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ' address'
    argTypes:
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 148
      start: 136
    functionDepth: 0
    functionLinenumber: 136
    functionLinenumberEnd: 148
    functionName: operator()(const ComboAddress& address) const
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 0
    functionsReached:
    - burtle
    - reinterpret_cast<const unsigned char*>
    - reinterpret_cast<const uint8_t*>
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t operator()(const ComboAddress& address) const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:159,1
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:163,1
    - Dst: burtle
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:167,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - ' address'
    argTypes:
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 168
      start: 153
    functionDepth: 0
    functionLinenumber: 153
    functionLinenumberEnd: 168
    functionName: operator()(const ComboAddress& address) const
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 0
    functionsReached:
    - burtle
    - reinterpret_cast<const unsigned char*>
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t operator()(const ComboAddress& address) const
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:184,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - ' lhs'
    - ' rhs'
    argTypes:
    - ComboAddress
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 185
      start: 173
    functionDepth: 0
    functionLinenumber: 173
    functionLinenumberEnd: 185
    functionName: operator()(const ComboAddress& lhs, const ComboAddress& rhs) const
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 0
    functionsReached:
    - memcmp
    linkageType: ''
    returnType: bool
    signature: bool operator()(const ComboAddress& lhs, const ComboAddress& rhs) const
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:198,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - ' lhs'
    - ' rhs'
    argTypes:
    - ComboAddress
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 199
      start: 190
    functionDepth: 0
    functionLinenumber: 190
    functionLinenumberEnd: 199
    functionName: operator()(const ComboAddress& lhs, const ComboAddress& rhs) const
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 0
    functionsReached:
    - memcmp
    linkageType: ''
    returnType: bool
    signature: bool operator()(const ComboAddress& lhs, const ComboAddress& rhs) const
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 208
      start: 202
    functionDepth: 0
    functionLinenumber: 202
    functionLinenumberEnd: 208
    functionName: getSocklen
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 49
    functionsReached: []
    linkageType: ''
    returnType: socklen_t
    signature: socklen_t getSocklen() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 217
      start: 210
    functionDepth: 0
    functionLinenumber: 210
    functionLinenumberEnd: 217
    functionName: ComboAddress
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 117
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ComboAddress()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: setSockaddr
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:221,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - socketAddress
    - salen
    argTypes:
    - struct sockaddr*
    - socklen_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 222
      start: 219
    functionDepth: 0
    functionLinenumber: 219
    functionLinenumberEnd: 222
    functionName: ComboAddress
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 117
    functionsReached:
    - setSockaddr
    linkageType: ''
    returnType: void
    signature: void ComboAddress(const struct sockaddr* socketAddress, socklen_t salen)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: setSockaddr
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:227,1
    - Dst: reinterpret_cast<const struct sockaddr*>
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:227,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - socketAddress
    argTypes:
    - struct sockaddr_in6*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 228
      start: 224
    functionDepth: 0
    functionLinenumber: 224
    functionLinenumberEnd: 228
    functionName: ComboAddress
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 117
    functionsReached:
    - reinterpret_cast<const struct sockaddr*>
    - setSockaddr
    linkageType: ''
    returnType: void
    signature: void ComboAddress(const struct sockaddr_in6* socketAddress)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: setSockaddr
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:233,1
    - Dst: reinterpret_cast<const struct sockaddr*>
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:233,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - socketAddress
    argTypes:
    - struct sockaddr_in*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 234
      start: 230
    functionDepth: 0
    functionLinenumber: 230
    functionLinenumberEnd: 234
    functionName: ComboAddress
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 117
    functionsReached:
    - reinterpret_cast<const struct sockaddr*>
    - setSockaddr
    linkageType: ''
    returnType: void
    signature: void ComboAddress(const struct sockaddr_in* socketAddress)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PDNSException
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:239,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:241,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - socketAddress
    - salen
    argTypes:
    - struct sockaddr*
    - socklen_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 242
      start: 236
    functionDepth: 0
    functionLinenumber: 236
    functionLinenumberEnd: 242
    functionName: setSockaddr
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 13
    functionsReached:
    - PDNSException
    - memcpy
    linkageType: ''
    returnType: void
    signature: void setSockaddr(const struct sockaddr* socketAddress, socklen_t salen)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:247,1
    - Dst: makeIPv4sockaddr
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:250,1
    - Dst: makeIPv6sockaddr
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:252,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:253,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:257,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 1
    argNames:
    - ' str'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 259
      start: 245
    functionDepth: 0
    functionLinenumber: 245
    functionLinenumberEnd: 259
    functionName: ComboAddress
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 117
    functionsReached:
    - makeIPv4sockaddr
    - PDNSException
    - memset
    - makeIPv6sockaddr
    - htons
    linkageType: ''
    returnType: void
    signature: void ComboAddress(const string& str, uint16_t port = 0)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 264
      start: 261
    functionDepth: 0
    functionLinenumber: 261
    functionLinenumberEnd: 264
    functionName: isIPv6
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 33
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool isIPv6() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 268
      start: 265
    functionDepth: 0
    functionLinenumber: 265
    functionLinenumberEnd: 268
    functionName: isIPv4
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 47
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool isIPv4() const
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:278,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 290
      start: 270
    functionDepth: 0
    functionLinenumber: 270
    functionLinenumberEnd: 290
    functionName: isMappedIPv4
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 4
    functionsReached:
    - reinterpret_cast<const unsigned char*>
    linkageType: ''
    returnType: bool
    signature: bool isMappedIPv4() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ComboAddress::addressOnlyEqual
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:296,1
    - Dst: compare
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:297,1
    - Dst: compare
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:297,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 298
      start: 292
    functionDepth: 0
    functionLinenumber: 292
    functionLinenumberEnd: 298
    functionName: isUnspecified
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 6
    functionsReached:
    - compare
    - ComboAddress::addressOnlyEqual
    linkageType: ''
    returnType: bool
    signature: bool isUnspecified() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: isMappedIPv4
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:302,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:303,1
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:310,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:312,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 314
      start: 300
    functionDepth: 0
    functionLinenumber: 300
    functionLinenumberEnd: 314
    functionName: mapToIPv4
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 3
    functionsReached:
    - PDNSException
    - memcpy
    - reinterpret_cast<const unsigned char*>
    - isMappedIPv4
    linkageType: ''
    returnType: ComboAddress
    signature: ComboAddress mapToIPv4() const
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: getnameinfo
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:321,1
    - Dst: reinterpret_cast<const struct sockaddr*>
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:321,1
    - Dst: getSocklen
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:321,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:321,1
    - Dst: std::array::size
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:321,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:323,1
    - Dst: string
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:325,1
    - Dst: gai_strerror
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:325,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 328
      start: 316
    functionDepth: 0
    functionLinenumber: 316
    functionLinenumberEnd: 328
    functionName: toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 296
    functionsReached:
    - gai_strerror
    - getnameinfo
    - string
    - reinterpret_cast<const struct sockaddr*>
    - getSocklen
    - std::array::data
    - std::array::size
    linkageType: ''
    returnType: string
    signature: string toString() const
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: inet_ntop
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:335,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:335,1
    - Dst: std::array::size
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:335,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:337,1
    - Dst: inet_ntop
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:341,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:341,1
    - Dst: std::array::size
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:341,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:343,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:349,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 350
      start: 331
    functionDepth: 0
    functionLinenumber: 331
    functionLinenumberEnd: 350
    functionName: toStringNoInterface
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 3
    functionsReached:
    - stringerror
    - std::array::data
    - inet_ntop
    - std::array::size
    linkageType: ''
    returnType: string
    signature: string toStringNoInterface() const
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: isIPv4
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:354,1
    - Dst: ntohl
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:355,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:360,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:360,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:360,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:360,1
    - Dst: std::stringstream::str
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:373,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 374
      start: 352
    functionDepth: 0
    functionLinenumber: 352
    functionLinenumberEnd: 374
    functionName: toStringReversed
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 2
    functionsReached:
    - std::stringstream::str
    - ntohl
    - isIPv4
    - std::to_string
    linkageType: ''
    returnType: string
    signature: string toStringReversed() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: toString
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:379,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:379,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:379,1
    - Dst: toString
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:381,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:381,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:381,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 382
      start: 376
    functionDepth: 0
    functionLinenumber: 376
    functionLinenumberEnd: 382
    functionName: toStringWithPort
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 125
    functionsReached:
    - toString
    - std::to_string
    - ntohs
    linkageType: ''
    returnType: string
    signature: string toStringWithPort() const
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:386,1
    - Dst: toString
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:387,1
    - Dst: toString
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:390,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:390,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:390,1
    - Dst: toString
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:392,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:392,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:392,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - port
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 393
      start: 384
    functionDepth: 0
    functionLinenumber: 384
    functionLinenumberEnd: 393
    functionName: toStringWithPortExcept
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 7
    functionsReached:
    - toString
    - std::to_string
    - ntohs
    linkageType: ''
    returnType: string
    signature: string toStringWithPortExcept(int port) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: toStringWithPortExcept
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:397,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 398
      start: 395
    functionDepth: 0
    functionLinenumber: 395
    functionLinenumberEnd: 398
    functionName: toLogString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 75
    functionsReached:
    - toStringWithPortExcept
    linkageType: ''
    returnType: string
    signature: string toLogString() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:402,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 403
      start: 400
    functionDepth: 0
    functionLinenumber: 400
    functionLinenumberEnd: 403
    functionName: toStructuredLogString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 4
    functionsReached:
    - toStringWithPort
    linkageType: ''
    returnType: string
    signature: string toStructuredLogString() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: isIPv4
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:408,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:409,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:411,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 413
      start: 405
    functionDepth: 0
    functionLinenumber: 405
    functionLinenumberEnd: 413
    functionName: toByteString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 6
    functionsReached:
    - reinterpret_cast<const char*>
    - isIPv4
    linkageType: ''
    returnType: string
    signature: string toByteString() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 420
      start: 417
    functionDepth: 0
    functionLinenumber: 417
    functionLinenumberEnd: 420
    functionName: getNetworkOrderPort
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t getNetworkOrderPort() const noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:423,1
    - Dst: getNetworkOrderPort
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:423,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 424
      start: 421
    functionDepth: 0
    functionLinenumber: 421
    functionLinenumberEnd: 424
    functionName: getPort
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 30
    functionsReached:
    - getNetworkOrderPort
    - ntohs
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t getPort() const noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: htons
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:427,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - port
    argTypes:
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 428
      start: 425
    functionDepth: 0
    functionLinenumber: 425
    functionLinenumberEnd: 428
    functionName: setPort
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 9
    functionsReached:
    - htons
    linkageType: ''
    returnType: void
    signature: void setPort(uint16_t port)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:432,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 433
      start: 430
    functionDepth: 0
    functionLinenumber: 430
    functionLinenumberEnd: 433
    functionName: reset
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 96
    functionsReached:
    - memset
    linkageType: ''
    returnType: void
    signature: void reset()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: isIPv4
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:438,1
    - Dst: isIPv6
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:441,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 445
      start: 436
    functionDepth: 0
    functionLinenumber: 436
    functionLinenumberEnd: 445
    functionName: getBits
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 31
    functionsReached:
    - isIPv4
    - isIPv6
    linkageType: ''
    returnType: uint8_t
    signature: uint8_t getBits() const
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: isIPv4
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:452,1
    - Dst: ntohl
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:463,1
    - Dst: isIPv6
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:467,1
    - Dst: reinterpret_cast<const uint8_t*>
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:478,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 26
    argCount: 1
    argNames:
    - index
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 485
      start: 450
    functionDepth: 0
    functionLinenumber: 450
    functionLinenumberEnd: 485
    functionName: getBit
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 7
    functionsReached:
    - ntohl
    - isIPv4
    - reinterpret_cast<const uint8_t*>
    - isIPv6
    linkageType: ''
    returnType: bool
    signature: bool getBit(int index) const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: vector::push_back
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:499,1
    - Dst: toStringWithPortExcept
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:499,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:502,1
    - Dst: toString
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:502,1
    - Dst: boost::join
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:504,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - ' container'
    argTypes:
    - Container<ComboAddress, Args...>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 505
      start: 494
    functionDepth: 0
    functionLinenumber: 494
    functionLinenumberEnd: 505
    functionName: caContainerToString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 3
    functionsReached:
    - toStringWithPortExcept
    - vector::push_back
    - toString
    - boost::join
    linkageType: ''
    returnType: string
    signature: string caContainerToString(const Container<ComboAddress, Args...>&
      container, const bool withPort = true, const uint16_t portExcept = 53)
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 526
      start: 514
    functionDepth: 0
    functionLinenumber: 514
    functionLinenumberEnd: 526
    functionName: getSocklen
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 50
    functionsReached: []
    linkageType: ''
    returnType: socklen_t
    signature: socklen_t getSocklen() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 533
      start: 528
    functionDepth: 0
    functionLinenumber: 528
    functionLinenumberEnd: 533
    functionName: SockaddrWrapper
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void SockaddrWrapper()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: setSockaddr
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:537,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - socketAddress
    - salen
    argTypes:
    - struct sockaddr*
    - socklen_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 538
      start: 535
    functionDepth: 0
    functionLinenumber: 535
    functionLinenumberEnd: 538
    functionName: SockaddrWrapper
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 2
    functionsReached:
    - setSockaddr
    linkageType: ''
    returnType: void
    signature: void SockaddrWrapper(const struct sockaddr* socketAddress, socklen_t
      salen)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: setSockaddr
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:543,1
    - Dst: reinterpret_cast<const struct sockaddr*>
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:543,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - socketAddress
    argTypes:
    - struct sockaddr_in6*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 544
      start: 540
    functionDepth: 0
    functionLinenumber: 540
    functionLinenumberEnd: 544
    functionName: SockaddrWrapper
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 2
    functionsReached:
    - reinterpret_cast<const struct sockaddr*>
    - setSockaddr
    linkageType: ''
    returnType: void
    signature: void SockaddrWrapper(const struct sockaddr_in6* socketAddress)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: setSockaddr
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:549,1
    - Dst: reinterpret_cast<const struct sockaddr*>
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:549,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - socketAddress
    argTypes:
    - struct sockaddr_in*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 550
      start: 546
    functionDepth: 0
    functionLinenumber: 546
    functionLinenumberEnd: 550
    functionName: SockaddrWrapper
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 2
    functionsReached:
    - reinterpret_cast<const struct sockaddr*>
    - setSockaddr
    linkageType: ''
    returnType: void
    signature: void SockaddrWrapper(const struct sockaddr_in* socketAddress)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: setSockaddr
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:555,1
    - Dst: reinterpret_cast<const struct sockaddr*>
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:555,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - socketAddress
    argTypes:
    - struct sockaddr_un*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 556
      start: 552
    functionDepth: 0
    functionLinenumber: 552
    functionLinenumberEnd: 556
    functionName: SockaddrWrapper
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 2
    functionsReached:
    - reinterpret_cast<const struct sockaddr*>
    - setSockaddr
    linkageType: ''
    returnType: void
    signature: void SockaddrWrapper(const struct sockaddr_un* socketAddress)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PDNSException
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:561,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:563,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - socketAddress
    - salen
    argTypes:
    - struct sockaddr*
    - socklen_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 564
      start: 558
    functionDepth: 0
    functionLinenumber: 558
    functionLinenumberEnd: 564
    functionName: setSockaddr
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 17
    functionsReached:
    - PDNSException
    - memcpy
    linkageType: ''
    returnType: void
    signature: void setSockaddr(const struct sockaddr* socketAddress, socklen_t salen)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:568,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:572,1
    - Dst: makeIPv4sockaddr
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:574,1
    - Dst: makeIPv6sockaddr
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:576,1
    - Dst: find
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:579,1
    - Dst: makeUNsockaddr
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:579,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:580,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:585,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 19
    argCount: 1
    argNames:
    - ' str'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 587
      start: 566
    functionDepth: 0
    functionLinenumber: 566
    functionLinenumberEnd: 587
    functionName: SockaddrWrapper
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 2
    functionsReached:
    - makeIPv4sockaddr
    - PDNSException
    - memset
    - makeIPv6sockaddr
    - makeUNsockaddr
    - find
    - htons
    linkageType: ''
    returnType: void
    signature: void SockaddrWrapper(const string& str, uint16_t port = 0)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 592
      start: 589
    functionDepth: 0
    functionLinenumber: 589
    functionLinenumberEnd: 592
    functionName: isIPv6
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 35
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool isIPv6() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 596
      start: 593
    functionDepth: 0
    functionLinenumber: 593
    functionLinenumberEnd: 596
    functionName: isIPv4
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 51
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool isIPv4() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 600
      start: 597
    functionDepth: 0
    functionLinenumber: 597
    functionLinenumberEnd: 600
    functionName: isUnixSocket
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool isUnixSocket() const
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: getnameinfo
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:610,1
    - Dst: reinterpret_cast<const struct sockaddr*>
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:610,1
    - Dst: getSocklen
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:610,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:610,1
    - Dst: std::array::size
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:610,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:612,1
    - Dst: string
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:614,1
    - Dst: gai_strerror
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:614,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 617
      start: 602
    functionDepth: 0
    functionLinenumber: 602
    functionLinenumberEnd: 617
    functionName: toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 299
    functionsReached:
    - gai_strerror
    - getnameinfo
    - string
    - reinterpret_cast<const struct sockaddr*>
    - getSocklen
    - std::array::data
    - std::array::size
    linkageType: ''
    returnType: string
    signature: string toString() const
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: toString
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:622,1
    - Dst: toString
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:625,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:625,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:625,1
    - Dst: toString
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:627,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:627,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:627,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 628
      start: 619
    functionDepth: 0
    functionLinenumber: 619
    functionLinenumberEnd: 628
    functionName: toStringWithPort
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 126
    functionsReached:
    - toString
    - std::to_string
    - ntohs
    linkageType: ''
    returnType: string
    signature: string toStringWithPort() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:632,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 633
      start: 630
    functionDepth: 0
    functionLinenumber: 630
    functionLinenumberEnd: 633
    functionName: reset
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 96
    functionsReached:
    - memset
    linkageType: ''
    returnType: void
    signature: void reset()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' arg'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 641
      start: 640
    functionDepth: 0
    functionLinenumber: 640
    functionLinenumberEnd: 641
    functionName: NetmaskException::NetmaskException
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void NetmaskException(const string& arg)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: inet_pton
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:648,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:648,1
    - Dst: makeIPv6sockaddr
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:650,1
    - Dst: NetmaskException
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:651,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - ' str'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 655
      start: 644
    functionDepth: 0
    functionLinenumber: 644
    functionLinenumberEnd: 655
    functionName: makeComboAddress
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 3
    functionsReached:
    - inet_pton
    - makeIPv6sockaddr
    - NetmaskException
    - c_str
    linkageType: ''
    returnType: ComboAddress
    signature: ComboAddress makeComboAddress(const string& str)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: NetmaskException
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:664,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:666,1
    - Dst: NetmaskException
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:671,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:673,1
    - Dst: NetmaskException
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:676,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 18
    argCount: 3
    argNames:
    - version
    - raw
    - len
    argTypes:
    - uint8_t
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 680
      start: 657
    functionDepth: 0
    functionLinenumber: 657
    functionLinenumberEnd: 680
    functionName: makeComboAddressFromRaw
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 19
    functionsReached:
    - memcpy
    - NetmaskException
    linkageType: ''
    returnType: ComboAddress
    signature: ComboAddress makeComboAddressFromRaw(uint8_t version, const char* raw,
      size_t len)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeComboAddressFromRaw
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:684,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:684,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:684,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - version
    - ' str'
    argTypes:
    - uint8_t
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 685
      start: 682
    functionDepth: 0
    functionLinenumber: 682
    functionLinenumberEnd: 685
    functionName: makeComboAddressFromRaw
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 20
    functionsReached:
    - c_str
    - size
    - makeComboAddressFromRaw
    linkageType: ''
    returnType: ComboAddress
    signature: ComboAddress makeComboAddressFromRaw(uint8_t version, const string&
      str)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 696
      start: 692
    functionDepth: 0
    functionLinenumber: 692
    functionLinenumberEnd: 696
    functionName: Netmask::Netmask
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 8
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Netmask()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Netmask::setBits
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:702,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ' network'
    argTypes:
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 703
      start: 698
    functionDepth: 0
    functionLinenumber: 698
    functionLinenumberEnd: 703
    functionName: Netmask::Netmask
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 8
    functionsReached:
    - Netmask::setBits
    linkageType: ''
    returnType: void
    signature: void Netmask(const ComboAddress& network, uint8_t bits = 0xff)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Netmask::setBits
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:709,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - network
    argTypes:
    - sockaddr_in*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 710
      start: 705
    functionDepth: 0
    functionLinenumber: 705
    functionLinenumberEnd: 710
    functionName: Netmask::Netmask
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 8
    functionsReached:
    - Netmask::setBits
    linkageType: ''
    returnType: void
    signature: void Netmask(const sockaddr_in* network, uint8_t bits = 0xff)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Netmask::setBits
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:715,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - network
    argTypes:
    - sockaddr_in6*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 716
      start: 711
    functionDepth: 0
    functionLinenumber: 711
    functionLinenumberEnd: 716
    functionName: Netmask::Netmask
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 8
    functionsReached:
    - Netmask::setBits
    linkageType: ''
    returnType: void
    signature: void Netmask(const sockaddr_in6* network, uint8_t bits = 0xff)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Netmask::isIPv4
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:719,1
    - Dst: std::min
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:719,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:719,1
    - Dst: std::min
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:719,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:719,1
    - Dst: Netmask::isIPv4
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:729,1
    - Dst: htonl
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:730,1
    - Dst: ntohl
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:730,1
    - Dst: Netmask::isIPv6
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:732,1
    - Dst: reinterpret_cast<uint8_t*>
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:734,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:736,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 1
    argNames:
    - value
    argTypes:
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 746
      start: 717
    functionDepth: 0
    functionLinenumber: 717
    functionLinenumberEnd: 746
    functionName: Netmask::setBits
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 8
    functionsReached:
    - ntohl
    - htonl
    - std::min
    - reinterpret_cast<uint8_t*>
    - static_cast<uint8_t>
    - Netmask::isIPv4
    - Netmask::isIPv6
    linkageType: ''
    returnType: void
    signature: void setBits(uint8_t value)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:757,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:759,1
    - Dst: makeComboAddressFromRaw
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:761,1
    - Dst: substr
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:761,1
    - Dst: Netmask::setBits
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:763,1
    - Dst: splitField
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:766,1
    - Dst: makeComboAddress
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:767,1
    - Dst: pair::second::empty
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:769,1
    - Dst: Netmask::setBits
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:770,1
    - Dst: pdns::checked_stoi<uint8_t>
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:770,1
    - Dst: Netmask::setBits
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:773,1
    - Dst: Netmask::setBits
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:776,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 1
    argNames:
    - ' mask'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 779
      start: 754
    functionDepth: 0
    functionLinenumber: 754
    functionLinenumberEnd: 779
    functionName: Netmask::Netmask
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 8
    functionsReached:
    - splitField
    - pdns::checked_stoi<uint8_t>
    - at
    - makeComboAddressFromRaw
    - substr
    - pair::second::empty
    - Netmask::setBits
    - makeComboAddress
    linkageType: ''
    returnType: void
    signature: void Netmask(const string& mask, stringType type = humanString)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Netmask::match
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:783,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' address'
    argTypes:
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 784
      start: 781
    functionDepth: 0
    functionLinenumber: 781
    functionLinenumberEnd: 784
    functionName: Netmask::match
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 8
    functionsReached:
    - Netmask::match
    linkageType: ''
    returnType: bool
    signature: bool match(const ComboAddress& address) const
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Netmask::match4
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:793,1
    - Dst: htonl
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:793,1
    - Dst: reinterpret_cast<const uint8_t*>
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:799,1
    - Dst: reinterpret_cast<const uint8_t*>
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:800,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:811,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 1
    argNames:
    - address
    argTypes:
    - ComboAddress*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 817
      start: 787
    functionDepth: 0
    functionLinenumber: 787
    functionLinenumberEnd: 817
    functionName: Netmask::match
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 8
    functionsReached:
    - static_cast<uint8_t>
    - Netmask::match4
    - reinterpret_cast<const uint8_t*>
    - htonl
    linkageType: ''
    returnType: bool
    signature: bool match(const ComboAddress* address) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeComboAddress
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:822,1
    - Dst: Netmask::match
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:823,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' arg'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 824
      start: 820
    functionDepth: 0
    functionLinenumber: 820
    functionLinenumberEnd: 824
    functionName: Netmask::match
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 9
    functionsReached:
    - Netmask::match
    - makeComboAddress
    linkageType: ''
    returnType: bool
    signature: bool match(const string& arg) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ntohl
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:829,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - arg
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 830
      start: 827
    functionDepth: 0
    functionLinenumber: 827
    functionLinenumberEnd: 830
    functionName: Netmask::match4
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 2
    functionsReached:
    - ntohl
    linkageType: ''
    returnType: bool
    signature: bool match4(uint32_t arg) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: toStringNoInterface
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:834,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:834,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 835
      start: 832
    functionDepth: 0
    functionLinenumber: 832
    functionLinenumberEnd: 835
    functionName: Netmask::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 6
    functionsReached:
    - toStringNoInterface
    - std::to_string
    linkageType: ''
    returnType: string
    signature: string toString() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: toStringNoInterface
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:839,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 840
      start: 837
    functionDepth: 0
    functionLinenumber: 837
    functionLinenumberEnd: 840
    functionName: Netmask::toStringNoMask
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 0
    functionsReached:
    - toStringNoInterface
    linkageType: ''
    returnType: string
    signature: string toStringNoMask() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Netmask::isIPv4
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:846,1
    - Dst: Netmask::toByteString
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:847,1
    - Dst: Netmask::getBits
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:848,1
    - Dst: ostringstream::str
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:850,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 851
      start: 842
    functionDepth: 0
    functionLinenumber: 842
    functionLinenumberEnd: 851
    functionName: Netmask::toByteString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 2
    functionsReached:
    - ostringstream::str
    - Netmask::isIPv4
    - Netmask::getBits
    - Netmask::toByteString
    linkageType: ''
    returnType: string
    signature: string toByteString() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 856
      start: 853
    functionDepth: 0
    functionLinenumber: 853
    functionLinenumberEnd: 856
    functionName: '& getNetwork() const'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: ComboAddress
    signature: ComboAddress & getNetwork() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getNetwork
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:860,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 861
      start: 858
    functionDepth: 0
    functionLinenumber: 858
    functionLinenumberEnd: 861
    functionName: '& getMaskedNetwork() const'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 0
    functionsReached:
    - getNetwork
    linkageType: ''
    returnType: ComboAddress
    signature: ComboAddress & getMaskedNetwork() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 866
      start: 863
    functionDepth: 0
    functionLinenumber: 863
    functionLinenumberEnd: 866
    functionName: Netmask::getBits
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: uint8_t
    signature: uint8_t getBits() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 871
      start: 868
    functionDepth: 0
    functionLinenumber: 868
    functionLinenumberEnd: 871
    functionName: Netmask::isIPv6
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool isIPv6() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 876
      start: 873
    functionDepth: 0
    functionLinenumber: 873
    functionLinenumberEnd: 876
    functionName: Netmask::isIPv4
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 8
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool isIPv4() const
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:880,1
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:880,1
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:883,1
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:883,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - Netmask
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 894
      start: 878
    functionDepth: 0
    functionLinenumber: 878
    functionLinenumberEnd: 894
    functionName: operator<(const Netmask& rhs) const
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 0
    functionsReached:
    - empty
    linkageType: ''
    returnType: bool
    signature: bool operator<(const Netmask& rhs) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: rhs
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:898,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - Netmask
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 899
      start: 896
    functionDepth: 0
    functionLinenumber: 896
    functionLinenumberEnd: 899
    functionName: operator>(const Netmask& rhs) const
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 0
    functionsReached:
    - rhs
    linkageType: ''
    returnType: bool
    signature: bool operator>(const Netmask& rhs) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::tie
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:903,1
    - Dst: std::tie
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:903,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - Netmask
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 904
      start: 901
    functionDepth: 0
    functionLinenumber: 901
    functionLinenumberEnd: 904
    functionName: operator==(const Netmask& rhs) const
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 0
    functionsReached:
    - std::tie
    linkageType: ''
    returnType: bool
    signature: bool operator==(const Netmask& rhs) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - Netmask
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 909
      start: 906
    functionDepth: 0
    functionLinenumber: 906
    functionLinenumberEnd: 909
    functionName: operator!=(const Netmask& rhs) const
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool operator!=(const Netmask& rhs) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 914
      start: 911
    functionDepth: 0
    functionLinenumber: 911
    functionLinenumberEnd: 914
    functionName: Netmask::empty
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool empty() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getMaskedNetwork
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:919,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 920
      start: 917
    functionDepth: 0
    functionLinenumber: 917
    functionLinenumberEnd: 920
    functionName: Netmask::getNormalized
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 2
    functionsReached:
    - getMaskedNetwork
    linkageType: ''
    returnType: Netmask
    signature: Netmask getNormalized() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::min
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:924,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - bits
    argTypes:
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 925
      start: 922
    functionDepth: 0
    functionLinenumber: 922
    functionLinenumberEnd: 925
    functionName: Netmask::getSuper
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 0
    functionsReached:
    - std::min
    linkageType: ''
    returnType: Netmask
    signature: Netmask getSuper(uint8_t bits) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Netmask::getBits
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:930,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 931
      start: 928
    functionDepth: 0
    functionLinenumber: 928
    functionLinenumberEnd: 931
    functionName: Netmask::getFullBits
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 0
    functionsReached:
    - Netmask::getBits
    linkageType: ''
    returnType: uint8_t
    signature: uint8_t getFullBits() const
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: Netmask::isIPv4
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:944,1
    - Dst: Netmask::isIPv6
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:949,1
    - Dst: Netmask::getBit
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:955,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 17
    argCount: 1
    argNames:
    - bit
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 956
      start: 938
    functionDepth: 0
    functionLinenumber: 938
    functionLinenumberEnd: 956
    functionName: Netmask::getBit
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 2
    functionsReached:
    - Netmask::getBit
    - Netmask::isIPv4
    - Netmask::isIPv6
    linkageType: ''
    returnType: bool
    signature: bool getBit(int bit) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: burtle
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:962,1
    - Dst: ComboAddress::addressOnlyHash
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:962,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' netmask'
    argTypes:
    - Netmask
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 963
      start: 960
    functionDepth: 0
    functionLinenumber: 960
    functionLinenumberEnd: 963
    functionName: operator()(const Netmask& netmask) const
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 0
    functionsReached:
    - burtle
    - ComboAddress::addressOnlyHash
    linkageType: ''
    returnType: size_t
    signature: size_t operator()(const Netmask& netmask) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' netmask'
    argTypes:
    - Netmask
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 980
      start: 977
    functionDepth: 0
    functionLinenumber: 977
    functionLinenumberEnd: 980
    functionName: operator()(const Netmask& netmask) const
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: auto operator()(const Netmask& netmask) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' netmask'
    argTypes:
    - Netmask
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 980
      start: 977
    functionDepth: 0
    functionLinenumber: 977
    functionLinenumberEnd: 980
    functionName: operator()(const Netmask& netmask) const
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: auto operator()(const Netmask& netmask) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1026
      start: 1023
    functionDepth: 0
    functionLinenumber: 1023
    functionLinenumberEnd: 1026
    functionName: NetmaskTree::TreeNode::TreeNode
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void TreeNode() noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getNormalized
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1028,1
    - Dst: value_type
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1028,1
    - Dst: getFullBits
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1028,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' key'
    argTypes:
    - key_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1030
      start: 1027
    functionDepth: 0
    functionLinenumber: 1027
    functionLinenumberEnd: 1030
    functionName: NetmaskTree::TreeNode::TreeNode
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 0
    functionsReached:
    - getFullBits
    - getNormalized
    - value_type
    linkageType: ''
    returnType: void
    signature: void TreeNode(const key_type& key)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: first::getBits
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1035,1
    - Dst: make_unique<TreeNode>
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1036,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1038,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - ' key'
    argTypes:
    - key_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1039
      start: 1033
    functionDepth: 0
    functionLinenumber: 1033
    functionLinenumberEnd: 1039
    functionName: NetmaskTree::TreeNode::make_left
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 0
    functionsReached:
    - first::getBits
    - make_unique<TreeNode>
    - get
    linkageType: ''
    returnType: TreeNode
    signature: TreeNode * make_left(const key_type& key)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: first::getBits
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1044,1
    - Dst: make_unique<TreeNode>
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1045,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1047,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - ' key'
    argTypes:
    - key_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1048
      start: 1042
    functionDepth: 0
    functionLinenumber: 1042
    functionLinenumberEnd: 1048
    functionName: NetmaskTree::TreeNode::make_right
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 0
    functionsReached:
    - first::getBits
    - make_unique<TreeNode>
    - get
    linkageType: ''
    returnType: TreeNode
    signature: TreeNode * make_right(const key_type& key)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: std::logic_error
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1055,1
    - Dst: left::get
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1060,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1061,1
    - Dst: std::logic_error
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1062,1
    - Dst: make_unique<TreeNode>
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1068,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1071,1
    - Dst: std::swap
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1075,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1079,1
    - Dst: std::unique_ptr::node::first::getBit
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1088,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1089,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1092,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 2
    argNames:
    - ' key'
    - bits
    argTypes:
    - key_type
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1096
      start: 1051
    functionDepth: 0
    functionLinenumber: 1051
    functionLinenumberEnd: 1096
    functionName: NetmaskTree::TreeNode::split
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 4
    functionsReached:
    - std::swap
    - std::move
    - auto::get
    - std::unique_ptr::node::first::getBit
    - make_unique<TreeNode>
    - get
    - left::get
    - std::logic_error
    linkageType: ''
    returnType: TreeNode
    signature: TreeNode * split(const key_type& key, int bits)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: std::logic_error
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1103,1
    - Dst: left::get
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1108,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1109,1
    - Dst: std::logic_error
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1110,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1118,1
    - Dst: make_unique<TreeNode>
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1120,1
    - Dst: first::getSuper
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1120,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1121,1
    - Dst: make_unique<TreeNode>
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1126,1
    - Dst: unique_ptr::get
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1127,1
    - Dst: unique_ptr::node::first::getBit
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1133,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1134,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1135,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1138,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1139,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 2
    argNames:
    - ' key'
    - bits
    argTypes:
    - key_type
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1147
      start: 1099
    functionDepth: 0
    functionLinenumber: 1099
    functionLinenumberEnd: 1147
    functionName: NetmaskTree::TreeNode::fork
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 0
    functionsReached:
    - std::move
    - unique_ptr::get
    - make_unique<TreeNode>
    - get
    - left::get
    - unique_ptr::node::first::getBit
    - first::getSuper
    - std::logic_error
    linkageType: ''
    returnType: TreeNode
    signature: TreeNode * fork(const key_type& key, int bits)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TreeNode*::left::get
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1155,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1158
      start: 1150
    functionDepth: 0
    functionLinenumber: 1150
    functionLinenumberEnd: 1158
    functionName: NetmaskTree::TreeNode::traverse_l
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 0
    functionsReached:
    - TreeNode*::left::get
    linkageType: ''
    returnType: TreeNode
    signature: TreeNode * traverse_l()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: TreeNode*::right::get
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1168,1
    - Dst: TreeNode*::traverse_l
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1170,1
    - Dst: TreeNode*::left::get
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1179,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1184
      start: 1161
    functionDepth: 0
    functionLinenumber: 1161
    functionLinenumberEnd: 1184
    functionName: NetmaskTree::TreeNode::traverse_lnr
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 1
    functionsReached:
    - TreeNode*::left::get
    - TreeNode*::right::get
    - TreeNode*::traverse_l
    linkageType: ''
    returnType: TreeNode
    signature: TreeNode * traverse_lnr()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: NetmaskTree::TreeNode::traverse_lnr
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1189,1
    - Dst: TreeNode*::traverse_lnr
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1192,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1195
      start: 1187
    functionDepth: 0
    functionLinenumber: 1187
    functionLinenumberEnd: 1195
    functionName: NetmaskTree::TreeNode::traverse_lnr_assigned
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 0
    functionsReached:
    - TreeNode*::traverse_lnr
    - NetmaskTree::TreeNode::traverse_lnr
    linkageType: ''
    returnType: TreeNode
    signature: TreeNode * traverse_lnr_assigned()
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: TreeNode*::left::get
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1215,1
    - Dst: TreeNode*::left::reset
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1216,1
    - Dst: TreeNode*::right::reset
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1219,1
    - Dst: NetmaskTree::cleanup_tree
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1222,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 1
    argNames:
    - node
    argTypes:
    - TreeNode*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1225
      start: 1207
    functionDepth: 0
    functionLinenumber: 1207
    functionLinenumberEnd: 1225
    functionName: NetmaskTree::cleanup_tree
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 3
    functionsReached:
    - TreeNode*::left::get
    - TreeNode*::left::reset
    - NetmaskTree::cleanup_tree
    - TreeNode*::right::reset
    linkageType: ''
    returnType: void
    signature: void cleanup_tree(TreeNode* node)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: d_root::get
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1230,1
    - Dst: TreeNode*::traverse_l
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1232,1
    - Dst: insert
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1236,1
    - Dst: TreeNode*::traverse_lnr
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1238,1
    - Dst: abort
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1242,1
    - Dst: abort
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1245,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - NetmaskTree
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1247
      start: 1227
    functionDepth: 1
    functionLinenumber: 1227
    functionLinenumberEnd: 1247
    functionName: NetmaskTree::copyTree
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 1
    functionsReached:
    - abort
    - TreeNode*::traverse_l
    - d_root::get
    - insert
    - TreeNode*::traverse_lnr
    linkageType: ''
    returnType: void
    signature: void copyTree(const NetmaskTree& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - tree
    - node
    argTypes:
    - NetmaskTree*
    - TreeNode*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1268
      start: 1265
    functionDepth: 0
    functionLinenumber: 1265
    functionLinenumberEnd: 1268
    functionName: NetmaskTree::Iterator::Iterator
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Iterator(const NetmaskTree* tree, TreeNode* node)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1272
      start: 1271
    functionDepth: 0
    functionLinenumber: 1271
    functionLinenumberEnd: 1272
    functionName: NetmaskTree::Iterator::Iterator
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Iterator()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::logic_error
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1277,1
    - Dst: traverse_lnr_assigned
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1280,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1282
      start: 1274
    functionDepth: 0
    functionLinenumber: 1274
    functionLinenumberEnd: 1282
    functionName: '& operator++()'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 0
    functionsReached:
    - traverse_lnr_assigned
    - std::logic_error
    linkageType: ''
    returnType: Iterator
    signature: Iterator & operator++()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1288
      start: 1283
    functionDepth: 0
    functionLinenumber: 1283
    functionLinenumberEnd: 1288
    functionName: operator++(int)
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Iterator
    signature: Iterator operator++(int)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::logic_error
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1293,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1297
      start: 1290
    functionDepth: 0
    functionLinenumber: 1290
    functionLinenumberEnd: 1297
    functionName: operator*()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 0
    functionsReached:
    - std::logic_error
    linkageType: ''
    returnType: reference
    signature: reference operator*()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::logic_error
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1302,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1306
      start: 1299
    functionDepth: 0
    functionLinenumber: 1299
    functionLinenumberEnd: 1306
    functionName: operator->()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 0
    functionsReached:
    - std::logic_error
    linkageType: ''
    returnType: pointer
    signature: pointer operator->()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - Iterator
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1311
      start: 1308
    functionDepth: 0
    functionLinenumber: 1308
    functionLinenumberEnd: 1311
    functionName: operator==(const Iterator& rhs) const
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool operator==(const Iterator& rhs) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - Iterator
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1315
      start: 1312
    functionDepth: 0
    functionLinenumber: 1312
    functionLinenumberEnd: 1315
    functionName: operator!=(const Iterator& rhs) const
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool operator!=(const Iterator& rhs) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TreeNode::TreeNode
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1319,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1321
      start: 1318
    functionDepth: 0
    functionLinenumber: 1318
    functionLinenumberEnd: 1321
    functionName: NetmaskTree::NetmaskTree
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 12
    functionsReached:
    - TreeNode::TreeNode
    linkageType: ''
    returnType: void
    signature: void NetmaskTree() noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TreeNode::TreeNode
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1324,1
    - Dst: NetmaskTree::copyTree
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1326,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - NetmaskTree
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1327
      start: 1323
    functionDepth: 0
    functionLinenumber: 1323
    functionLinenumberEnd: 1327
    functionName: NetmaskTree::NetmaskTree
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 12
    functionsReached:
    - TreeNode::TreeNode
    - NetmaskTree::copyTree
    linkageType: ''
    returnType: void
    signature: void NetmaskTree(const NetmaskTree& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1329
      start: 1329
    functionDepth: 0
    functionLinenumber: 1329
    functionLinenumberEnd: 1329
    functionName: ~NetmaskTree()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~NetmaskTree()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: clear
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1334,1
    - Dst: copyTree
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1335,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - NetmaskTree
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1338
      start: 1331
    functionDepth: 1
    functionLinenumber: 1331
    functionLinenumberEnd: 1338
    functionName: '& operator=(const NetmaskTree& rhs)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 0
    functionsReached:
    - clear
    - copyTree
    linkageType: ''
    returnType: NetmaskTree
    signature: NetmaskTree & operator=(const NetmaskTree& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1340
      start: 1340
    functionDepth: 0
    functionLinenumber: 1340
    functionLinenumberEnd: 1340
    functionName: NetmaskTree::NetmaskTree
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 12
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void NetmaskTree(NetmaskTree&&) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1341
      start: 1341
    functionDepth: 0
    functionLinenumber: 1341
    functionLinenumberEnd: 1341
    functionName: '& operator=(NetmaskTree&&) noexcept'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: NetmaskTree
    signature: NetmaskTree & operator=(NetmaskTree&&) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Iterator
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1345,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1346
      start: 1343
    functionDepth: 0
    functionLinenumber: 1343
    functionLinenumberEnd: 1346
    functionName: NetmaskTree::begin
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 2
    functionsReached:
    - Iterator
    linkageType: ''
    returnType: iterator
    signature: iterator begin() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Iterator
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1349,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1350
      start: 1347
    functionDepth: 0
    functionLinenumber: 1347
    functionLinenumberEnd: 1350
    functionName: NetmaskTree::end
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 2
    functionsReached:
    - Iterator
    linkageType: ''
    returnType: iterator
    signature: iterator end() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Iterator
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1353,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1354
      start: 1351
    functionDepth: 0
    functionLinenumber: 1351
    functionLinenumberEnd: 1354
    functionName: NetmaskTree::begin
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 2
    functionsReached:
    - Iterator
    linkageType: ''
    returnType: iterator
    signature: iterator begin()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Iterator
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1357,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1358
      start: 1355
    functionDepth: 0
    functionLinenumber: 1355
    functionLinenumberEnd: 1358
    functionName: NetmaskTree::end
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 2
    functionsReached:
    - Iterator
    linkageType: ''
    returnType: iterator
    signature: iterator end()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: insert
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1362,1
    - Dst: key_type
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1362,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' mask'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1363
      start: 1360
    functionDepth: 1
    functionLinenumber: 1360
    functionLinenumberEnd: 1363
    functionName: '& insert(const string& mask)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 0
    functionsReached:
    - key_type
    - insert
    linkageType: ''
    returnType: node_type
    signature: node_type & insert(const string& mask)
  - BBCount: 22
    BranchProfiles: []
    Callsites:
    - Dst: isIPv4
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1372,1
    - Dst: left::get
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1373,1
    - Dst: make_unique<TreeNode>
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1376,1
    - Dst: left::get
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1377,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1379,1
    - Dst: isIPv6
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1385,1
    - Dst: right::get
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1386,1
    - Dst: make_unique<TreeNode>
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1389,1
    - Dst: right::get
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1390,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1392,1
    - Dst: NetmaskException
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1404,1
    - Dst: getBits
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1409,1
    - Dst: getBit
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1410,1
    - Dst: TreeNode*::make_right
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1420,1
    - Dst: TreeNode*::right::get
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1423,1
    - Dst: TreeNode*::make_left
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1428,1
    - Dst: TreeNode*::left::get
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1431,1
    - Dst: TreeNode*::node::first::getBits
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1435,1
    - Dst: TreeNode*::make_right
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1442,1
    - Dst: TreeNode*::make_left
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1445,1
    - Dst: TreeNode*::node::first::getBit
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1449,1
    - Dst: TreeNode*::fork
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1456,1
    - Dst: TreeNode*::node::first::getBits
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1461,1
    - Dst: getBits
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1461,1
    - Dst: TreeNode*::split
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1464,1
    - Dst: getBits
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1464,1
    - Dst: std::logic_error
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1485,1
    CyclomaticComplexity: 31
    EdgeCount: 31
    ICount: 89
    argCount: 1
    argNames:
    - ' key'
    argTypes:
    - key_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1491
      start: 1366
    functionDepth: 0
    functionLinenumber: 1366
    functionLinenumberEnd: 1491
    functionName: '& insert(const key_type& key)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 0
    functionsReached:
    - getBit
    - TreeNode*::make_right
    - TreeNode*::left::get
    - isIPv6
    - NetmaskException
    - TreeNode*::fork
    - getBits
    - make_unique<TreeNode>
    - right::get
    - get
    - left::get
    - TreeNode*::make_left
    - TreeNode*::split
    - isIPv4
    - TreeNode*::node::first::getBit
    - std::logic_error
    - TreeNode*::right::get
    - TreeNode*::node::first::getBits
    linkageType: ''
    returnType: node_type
    signature: node_type & insert(const key_type& key)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: insert
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1496,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' mask'
    - ' value'
    argTypes:
    - key_type
    - value_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1497
      start: 1494
    functionDepth: 1
    functionLinenumber: 1494
    functionLinenumberEnd: 1497
    functionName: NetmaskTree::insert_or_assign
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 2
    functionsReached:
    - insert
    linkageType: ''
    returnType: void
    signature: void insert_or_assign(const key_type& mask, const value_type& value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: insert
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1501,1
    - Dst: key_type
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1501,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' mask'
    - ' value'
    argTypes:
    - string
    - value_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1502
      start: 1499
    functionDepth: 1
    functionLinenumber: 1499
    functionLinenumberEnd: 1502
    functionName: NetmaskTree::insert_or_assign
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 2
    functionsReached:
    - key_type
    - insert
    linkageType: ''
    returnType: void
    signature: void insert_or_assign(const string& mask, const value_type& value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: NetmaskTree::lookup
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1507,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - ' key'
    argTypes:
    - key_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1509
      start: 1505
    functionDepth: 0
    functionLinenumber: 1505
    functionLinenumberEnd: 1509
    functionName: NetmaskTree::has_key
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 0
    functionsReached:
    - NetmaskTree::lookup
    linkageType: ''
    returnType: bool
    signature: bool has_key(const key_type& key) const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: NetmaskTree::empty
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1514,1
    - Dst: getBits
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1517,1
    - Dst: NetmaskTree::lookupImpl
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1518,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ' value'
    argTypes:
    - key_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1519
      start: 1512
    functionDepth: 0
    functionLinenumber: 1512
    functionLinenumberEnd: 1519
    functionName: NetmaskTree::lookup
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 13
    functionsReached:
    - getBits
    - NetmaskTree::lookupImpl
    - NetmaskTree::empty
    linkageType: ''
    returnType: node_type
    signature: node_type * lookup(const key_type& value) const
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: NetmaskTree::empty
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1524,1
    - Dst: getBits
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1527,1
    - Dst: NetmaskTree::lookupImpl
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1532,1
    - Dst: key_type
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1532,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - ' value'
    argTypes:
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1533
      start: 1522
    functionDepth: 0
    functionLinenumber: 1522
    functionLinenumberEnd: 1533
    functionName: NetmaskTree::lookup
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 13
    functionsReached:
    - getBits
    - NetmaskTree::lookupImpl
    - NetmaskTree::empty
    - key_type
    linkageType: ''
    returnType: node_type
    signature: node_type * lookup(const ComboAddress& value, int max_bits = 128) const
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: isIPv4
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1540,1
    - Dst: left::get
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1541,1
    - Dst: isIPv6
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1543,1
    - Dst: right::get
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1544,1
    - Dst: NetmaskException
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1547,1
    - Dst: getBits
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1554,1
    - Dst: getBit
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1555,1
    - Dst: TreeNode*::right::get
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1559,1
    - Dst: TreeNode*::left::get
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1562,1
    - Dst: TreeNode*::node::first::getBits
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1566,1
    - Dst: getBits
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1568,1
    - Dst: TreeNode*::node::first::getBits
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1568,1
    - Dst: TreeNode*::node::first::getBit
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1573,1
    - Dst: std::logic_error
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1583,1
    - Dst: value_type
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1588,1
    - Dst: traverse_lnr_assigned
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1591,1
    - Dst: NetmaskTree::cleanup_tree
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1593,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 44
    argCount: 1
    argNames:
    - ' key'
    argTypes:
    - key_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1595
      start: 1536
    functionDepth: 0
    functionLinenumber: 1536
    functionLinenumberEnd: 1595
    functionName: NetmaskTree::erase
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 5
    functionsReached:
    - getBit
    - TreeNode*::left::get
    - isIPv6
    - NetmaskException
    - value_type
    - getBits
    - NetmaskTree::cleanup_tree
    - right::get
    - left::get
    - traverse_lnr_assigned
    - isIPv4
    - TreeNode*::node::first::getBit
    - std::logic_error
    - TreeNode*::right::get
    - TreeNode*::node::first::getBits
    linkageType: ''
    returnType: void
    signature: void erase(const key_type& key)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: NetmaskTree::erase
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1599,1
    - Dst: key_type
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1599,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' key'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1600
      start: 1597
    functionDepth: 0
    functionLinenumber: 1597
    functionLinenumberEnd: 1600
    functionName: NetmaskTree::erase
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 6
    functionsReached:
    - NetmaskTree::erase
    - key_type
    linkageType: ''
    returnType: void
    signature: void erase(const string& key)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1606
      start: 1603
    functionDepth: 0
    functionLinenumber: 1603
    functionLinenumberEnd: 1606
    functionName: NetmaskTree::empty
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 10
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool empty() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1612
      start: 1609
    functionDepth: 0
    functionLinenumber: 1609
    functionLinenumberEnd: 1612
    functionName: NetmaskTree::size
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 10
    functionsReached: []
    linkageType: ''
    returnType: size_type
    signature: size_type size() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: NetmaskTree::lookup
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1617,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' value'
    argTypes:
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1618
      start: 1615
    functionDepth: 0
    functionLinenumber: 1615
    functionLinenumberEnd: 1618
    functionName: NetmaskTree::match
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 1
    functionsReached:
    - NetmaskTree::lookup
    linkageType: ''
    returnType: bool
    signature: bool match(const ComboAddress& value) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: NetmaskTree::match
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1622,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1622,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' value'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1623
      start: 1620
    functionDepth: 0
    functionLinenumber: 1620
    functionLinenumberEnd: 1623
    functionName: NetmaskTree::match
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 2
    functionsReached:
    - NetmaskTree::match
    - ComboAddress
    linkageType: ''
    returnType: bool
    signature: bool match(const std::string& value) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: make_unique<TreeNode>
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1628,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1631
      start: 1626
    functionDepth: 0
    functionLinenumber: 1626
    functionLinenumberEnd: 1631
    functionName: NetmaskTree::clear
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 2
    functionsReached:
    - make_unique<TreeNode>
    linkageType: ''
    returnType: void
    signature: void clear()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: NetmaskTree::swap
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1636,1
    - Dst: NetmaskTree::swap
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1637,1
    - Dst: NetmaskTree::swap
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1638,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - NetmaskTree
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1639
      start: 1634
    functionDepth: 0
    functionLinenumber: 1634
    functionLinenumberEnd: 1639
    functionName: NetmaskTree::swap
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 4
    functionsReached:
    - NetmaskTree::swap
    linkageType: ''
    returnType: void
    signature: void swap(NetmaskTree& rhs) noexcept
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: isIPv4
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1646,1
    - Dst: left::get
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1647,1
    - Dst: isIPv6
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1649,1
    - Dst: right::get
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1650,1
    - Dst: NetmaskException
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1653,1
    - Dst: getBit
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1663,1
    - Dst: TreeNode*::node::first::getBits
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1667,1
    - Dst: TreeNode*::right::get
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1674,1
    - Dst: TreeNode*::left::get
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1680,1
    - Dst: TreeNode*::node::first::getBits
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1684,1
    - Dst: TreeNode*::node::first::getBit
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1688,1
    - Dst: TreeNode*::node::first::getBits
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1696,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 41
    argCount: 2
    argNames:
    - ' value'
    - max_bits
    argTypes:
    - key_type
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1701
      start: 1642
    functionDepth: 0
    functionLinenumber: 1642
    functionLinenumberEnd: 1701
    functionName: NetmaskTree::lookupImpl
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 4
    functionsReached:
    - getBit
    - TreeNode*::left::get
    - isIPv6
    - NetmaskException
    - right::get
    - left::get
    - isIPv4
    - TreeNode*::node::first::getBit
    - TreeNode*::right::get
    - TreeNode*::node::first::getBits
    linkageType: ''
    returnType: node_type
    signature: node_type * lookupImpl(const key_type& value, uint8_t max_bits) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1714
      start: 1714
    functionDepth: 0
    functionLinenumber: 1714
    functionLinenumberEnd: 1714
    functionName: NetmaskGroup::NetmaskGroup
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 8
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void NetmaskGroup() noexcept
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: NetmaskGroup::lookup
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1720,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - address
    argTypes:
    - ComboAddress*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1725
      start: 1718
    functionDepth: 0
    functionLinenumber: 1718
    functionLinenumberEnd: 1725
    functionName: NetmaskGroup::match
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 4
    functionsReached:
    - NetmaskGroup::lookup
    linkageType: ''
    returnType: bool
    signature: bool match(const ComboAddress* address) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: NetmaskGroup::match
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1729,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' address'
    argTypes:
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1730
      start: 1727
    functionDepth: 0
    functionLinenumber: 1727
    functionLinenumberEnd: 1730
    functionName: NetmaskGroup::match
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 5
    functionsReached:
    - NetmaskGroup::match
    linkageType: ''
    returnType: bool
    signature: bool match(const ComboAddress& address) const
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: NetmaskGroup::lookup
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1734,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - address
    - nmp
    argTypes:
    - ComboAddress*
    - Netmask*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1742
      start: 1732
    functionDepth: 0
    functionLinenumber: 1732
    functionLinenumberEnd: 1742
    functionName: NetmaskGroup::lookup
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 5
    functionsReached:
    - NetmaskGroup::lookup
    linkageType: ''
    returnType: bool
    signature: bool lookup(const ComboAddress* address, Netmask* nmp) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: NetmaskGroup::lookup
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1746,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' address'
    - nmp
    argTypes:
    - ComboAddress
    - Netmask*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1747
      start: 1744
    functionDepth: 0
    functionLinenumber: 1744
    functionLinenumberEnd: 1747
    functionName: NetmaskGroup::lookup
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 6
    functionsReached:
    - NetmaskGroup::lookup
    linkageType: ''
    returnType: bool
    signature: bool lookup(const ComboAddress& address, Netmask* nmp) const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: NetmaskGroup::empty
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1752,1
    - Dst: NetmaskGroup::addMask
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1753,1
    - Dst: Netmask
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1753,1
    - Dst: substr
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1753,1
    - Dst: NetmaskGroup::addMask
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1756,1
    - Dst: Netmask
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1756,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - ' address'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1758
      start: 1750
    functionDepth: 0
    functionLinenumber: 1750
    functionLinenumberEnd: 1758
    functionName: NetmaskGroup::addMask
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 11
    functionsReached:
    - Netmask
    - substr
    - NetmaskGroup::addMask
    - NetmaskGroup::empty
    linkageType: ''
    returnType: void
    signature: void addMask(const string& address, bool positive = true)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: insert
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1763,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' netmask'
    argTypes:
    - Netmask
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1764
      start: 1761
    functionDepth: 1
    functionLinenumber: 1761
    functionLinenumberEnd: 1764
    functionName: NetmaskGroup::addMask
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 11
    functionsReached:
    - insert
    linkageType: ''
    returnType: void
    signature: void addMask(const Netmask& netmask, bool positive = true)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: NetmaskGroup::addMask
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1769,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - ' group'
    - positive
    argTypes:
    - NetmaskGroup
    - std::optional<bool>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1771
      start: 1766
    functionDepth: 0
    functionLinenumber: 1766
    functionLinenumberEnd: 1771
    functionName: NetmaskGroup::addMasks
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 0
    functionsReached:
    - NetmaskGroup::addMask
    linkageType: ''
    returnType: void
    signature: void addMasks(const NetmaskGroup& group, std::optional<bool> positive)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: erase
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1776,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' netmask'
    argTypes:
    - Netmask
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1777
      start: 1774
    functionDepth: 0
    functionLinenumber: 1774
    functionLinenumberEnd: 1777
    functionName: NetmaskGroup::deleteMask
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 2
    functionsReached:
    - erase
    linkageType: ''
    returnType: void
    signature: void deleteMask(const Netmask& netmask)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: NetmaskGroup::deleteMask
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1782,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - ' group'
    argTypes:
    - NetmaskGroup
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1784
      start: 1779
    functionDepth: 0
    functionLinenumber: 1779
    functionLinenumberEnd: 1784
    functionName: NetmaskGroup::deleteMasks
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 0
    functionsReached:
    - NetmaskGroup::deleteMask
    linkageType: ''
    returnType: void
    signature: void deleteMasks(const NetmaskGroup& group)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: NetmaskGroup::empty
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1788,1
    - Dst: NetmaskGroup::deleteMask
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1789,1
    - Dst: Netmask
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1789,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ' address'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1791
      start: 1786
    functionDepth: 0
    functionLinenumber: 1786
    functionLinenumberEnd: 1791
    functionName: NetmaskGroup::deleteMask
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 4
    functionsReached:
    - NetmaskGroup::deleteMask
    - Netmask
    - NetmaskGroup::empty
    linkageType: ''
    returnType: void
    signature: void deleteMask(const std::string& address)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: NetmaskGroup::clear
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1795,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1796
      start: 1793
    functionDepth: 0
    functionLinenumber: 1793
    functionLinenumberEnd: 1796
    functionName: NetmaskGroup::clear
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 2
    functionsReached:
    - NetmaskGroup::clear
    linkageType: ''
    returnType: void
    signature: void clear()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: NetmaskGroup::empty
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1800,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1801
      start: 1798
    functionDepth: 0
    functionLinenumber: 1798
    functionLinenumberEnd: 1801
    functionName: NetmaskGroup::empty
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 9
    functionsReached:
    - NetmaskGroup::empty
    linkageType: ''
    returnType: bool
    signature: bool empty() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: NetmaskGroup::size
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1805,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1806
      start: 1803
    functionDepth: 0
    functionLinenumber: 1803
    functionLinenumberEnd: 1806
    functionName: NetmaskGroup::size
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 5
    functionsReached:
    - NetmaskGroup::size
    linkageType: ''
    returnType: size_t
    signature: size_t size() const
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1811,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1811,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1812,1
    - Dst: auto::first::toString
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1818,1
    - Dst: ostringstream::str
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1820,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1821
      start: 1808
    functionDepth: 0
    functionLinenumber: 1808
    functionLinenumberEnd: 1821
    functionName: NetmaskGroup::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 4
    functionsReached:
    - ostringstream::str
    - end
    - auto::first::toString
    - begin
    linkageType: ''
    returnType: string
    signature: string toString() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::vector::reserve
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1826,1
    - Dst: NetmaskGroup::size
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1826,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1828,1
    - Dst: first::toString
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1828,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1831
      start: 1823
    functionDepth: 0
    functionLinenumber: 1823
    functionLinenumberEnd: 1831
    functionName: NetmaskGroup::toStringVector
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 0
    functionsReached:
    - std::vector::reserve
    - std::vector::push_back
    - first::toString
    - NetmaskGroup::size
    linkageType: ''
    returnType: std::vector<std::string>
    signature: std::vector<std::string> toStringVector() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: stringtok
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1836,1
    - Dst: NetmaskGroup::addMask
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1839,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ' ips'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1841
      start: 1833
    functionDepth: 0
    functionLinenumber: 1833
    functionLinenumberEnd: 1841
    functionName: NetmaskGroup::toMasks
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 3
    functionsReached:
    - NetmaskGroup::addMask
    - stringtok
    linkageType: ''
    returnType: void
    signature: void toMasks(const string& ips)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' orig'
    argTypes:
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1850
      start: 1849
    functionDepth: 0
    functionLinenumber: 1849
    functionLinenumberEnd: 1850
    functionName: SComboAddress
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void SComboAddress(const ComboAddress& orig)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ComboAddress::addressOnlyLessThan
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1854,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - SComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1855
      start: 1852
    functionDepth: 0
    functionLinenumber: 1852
    functionLinenumberEnd: 1855
    functionName: operator<(const SComboAddress& rhs) const
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 0
    functionsReached:
    - ComboAddress::addressOnlyLessThan
    linkageType: ''
    returnType: bool
    signature: bool operator<(const SComboAddress& rhs) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1859
      start: 1856
    functionDepth: 0
    functionLinenumber: 1856
    functionLinenumberEnd: 1859
    functionName: operator const ComboAddress&() const
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void operator const ComboAddress&() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1866,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1867
      start: 1865
    functionDepth: 0
    functionLinenumber: 1865
    functionLinenumberEnd: 1867
    functionName: NetworkError::NetworkError
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 0
    functionsReached:
    - c_str
    linkageType: ''
    returnType: void
    signature: void NetworkError(const string& why = "Network Error")
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1870
      start: 1868
    functionDepth: 0
    functionLinenumber: 1868
    functionLinenumberEnd: 1870
    functionName: NetworkError::NetworkError
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void NetworkError(const char* why = "Network Error")
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1881
      start: 1876
    functionDepth: 0
    functionLinenumber: 1876
    functionLinenumberEnd: 1881
    functionName: AddressAndPortRange::AddressAndPortRange
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void AddressAndPortRange()
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: AddressAndPortRange::isIPv4
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1886,1
    - Dst: getPort
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1890,1
    - Dst: static_cast<uint16_t>
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1892,1
    - Dst: AddressAndPortRange::getBits
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1896,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1898,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1898,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1898,1
    - Dst: Netmask
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1900,1
    - Dst: setPort
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1902,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 2
    argNames:
    - address
    - addrMask
    argTypes:
    - ComboAddress
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1903
      start: 1883
    functionDepth: 0
    functionLinenumber: 1883
    functionLinenumberEnd: 1903
    functionName: AddressAndPortRange::AddressAndPortRange
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 0
    functionsReached:
    - Netmask
    - setPort
    - AddressAndPortRange::getBits
    - std::to_string
    - std::runtime_error
    - static_cast<uint16_t>
    - AddressAndPortRange::isIPv4
    - getPort
    linkageType: ''
    returnType: void
    signature: void AddressAndPortRange(ComboAddress address, uint8_t addrMask, uint8_t
      portMask = 0)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: AddressAndPortRange::getBits
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1907,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1908
      start: 1905
    functionDepth: 0
    functionLinenumber: 1905
    functionLinenumberEnd: 1908
    functionName: AddressAndPortRange::getFullBits
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 1
    functionsReached:
    - AddressAndPortRange::getBits
    linkageType: ''
    returnType: uint8_t
    signature: uint8_t getFullBits() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: AddressAndPortRange::getBits
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1912,1
    - Dst: AddressAndPortRange::getBits
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1916,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1917
      start: 1910
    functionDepth: 0
    functionLinenumber: 1910
    functionLinenumberEnd: 1917
    functionName: AddressAndPortRange::getBits
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 7
    functionsReached:
    - AddressAndPortRange::getBits
    linkageType: ''
    returnType: uint8_t
    signature: uint8_t getBits() const
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: AddressAndPortRange::getFullBits
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1925,1
    - Dst: AddressAndPortRange::getFullBits
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1929,1
    - Dst: getPort
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1934,1
    - Dst: AddressAndPortRange::getBit
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1940,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - index
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1941
      start: 1923
    functionDepth: 0
    functionLinenumber: 1923
    functionLinenumberEnd: 1941
    functionName: AddressAndPortRange::getBit
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 2
    functionsReached:
    - AddressAndPortRange::getBit
    - AddressAndPortRange::getFullBits
    - getPort
    linkageType: ''
    returnType: bool
    signature: bool getBit(int index) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: AddressAndPortRange::isIPv4
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1945,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1946
      start: 1943
    functionDepth: 0
    functionLinenumber: 1943
    functionLinenumberEnd: 1946
    functionName: AddressAndPortRange::isIPv4
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 4
    functionsReached:
    - AddressAndPortRange::isIPv4
    linkageType: ''
    returnType: bool
    signature: bool isIPv4() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: AddressAndPortRange::isIPv6
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1950,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1951
      start: 1948
    functionDepth: 0
    functionLinenumber: 1948
    functionLinenumberEnd: 1951
    functionName: AddressAndPortRange::isIPv6
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 2
    functionsReached:
    - AddressAndPortRange::isIPv6
    linkageType: ''
    returnType: bool
    signature: bool isIPv6() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1956
      start: 1953
    functionDepth: 0
    functionLinenumber: 1953
    functionLinenumberEnd: 1956
    functionName: AddressAndPortRange::getNormalized
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: AddressAndPortRange
    signature: AddressAndPortRange getNormalized() const
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1964,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - bits
    argTypes:
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1968
      start: 1958
    functionDepth: 0
    functionLinenumber: 1958
    functionLinenumberEnd: 1968
    functionName: AddressAndPortRange::getSuper
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 0
    functionsReached:
    - static_cast<uint8_t>
    linkageType: ''
    returnType: AddressAndPortRange
    signature: AddressAndPortRange getSuper(uint8_t bits) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1973
      start: 1970
    functionDepth: 0
    functionLinenumber: 1970
    functionLinenumberEnd: 1973
    functionName: '& getNetwork() const'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: ComboAddress
    signature: ComboAddress & getNetwork() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: AddressAndPortRange::getBits
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1977,1
    - Dst: toStringNoInterface
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1978,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1978,1
    - Dst: toStringNoInterface
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1980,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1980,1
    - Dst: getPort
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1980,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1980,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1981
      start: 1975
    functionDepth: 0
    functionLinenumber: 1975
    functionLinenumberEnd: 1981
    functionName: AddressAndPortRange::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 0
    functionsReached:
    - toStringNoInterface
    - AddressAndPortRange::getBits
    - std::to_string
    - getPort
    linkageType: ''
    returnType: string
    signature: string toString() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1986
      start: 1983
    functionDepth: 0
    functionLinenumber: 1983
    functionLinenumberEnd: 1986
    functionName: AddressAndPortRange::empty
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool empty() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::tie
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1990,1
    - Dst: std::tie
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1990,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - AddressAndPortRange
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1991
      start: 1988
    functionDepth: 0
    functionLinenumber: 1988
    functionLinenumberEnd: 1991
    functionName: operator==(const AddressAndPortRange& rhs) const
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 0
    functionsReached:
    - std::tie
    linkageType: ''
    returnType: bool
    signature: bool operator==(const AddressAndPortRange& rhs) const
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1995,1
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1995,1
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1999,1
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:1999,1
    - Dst: getPort
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:2027,1
    - Dst: d_addr::getPort
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:2027,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 26
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - AddressAndPortRange
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2028
      start: 1993
    functionDepth: 0
    functionLinenumber: 1993
    functionLinenumberEnd: 2028
    functionName: operator<(const AddressAndPortRange& rhs) const
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 0
    functionsReached:
    - empty
    - d_addr::getPort
    - getPort
    linkageType: ''
    returnType: bool
    signature: bool operator<(const AddressAndPortRange& rhs) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: rhs
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:2032,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - AddressAndPortRange
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2033
      start: 2030
    functionDepth: 0
    functionLinenumber: 2030
    functionLinenumberEnd: 2033
    functionName: operator>(const AddressAndPortRange& rhs) const
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 0
    functionsReached:
    - rhs
    linkageType: ''
    returnType: bool
    signature: bool operator>(const AddressAndPortRange& rhs) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: d_addr::getPort
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:2040,1
    - Dst: burtle
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:2043,1
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:2043,1
    - Dst: hashOp
      Src: /src/pdns/pdns/dnsdistdist/iputils.hh:2043,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' apr'
    argTypes:
    - AddressAndPortRange
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2044
      start: 2037
    functionDepth: 0
    functionLinenumber: 2037
    functionLinenumberEnd: 2044
    functionName: operator()(const AddressAndPortRange& apr) const
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.hh
    functionUses: 0
    functionsReached:
    - d_addr::getPort
    - reinterpret_cast<const unsigned char*>
    - burtle
    - hashOp
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t operator()(const AddressAndPortRange& apr) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' dnsquestion'
    argTypes:
    - DNSQuestion
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 36
      start: 33
    functionDepth: 0
    functionLinenumber: 33
    functionLinenumberEnd: 36
    functionName: DNSDistProtoBufMessage::DNSDistProtoBufMessage
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-protobuf.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void DNSDistProtoBufMessage::DNSDistProtoBufMessage(const DNSQuestion&
      dnsquestion)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - ' dnsresponse'
    - includeCNAME
    argTypes:
    - DNSResponse
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 38
    functionDepth: 0
    functionLinenumber: 38
    functionLinenumberEnd: 41
    functionName: DNSDistProtoBufMessage::DNSDistProtoBufMessage
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-protobuf.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void DNSDistProtoBufMessage::DNSDistProtoBufMessage(const DNSResponse&
      dnsresponse, bool includeCNAME)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' serverId'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 46
    functionName: DNSDistProtoBufMessage::setServerIdentity
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-protobuf.cc
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void DNSDistProtoBufMessage::setServerIdentity(const std::string& serverId)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' requestor'
    argTypes:
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 48
    functionDepth: 0
    functionLinenumber: 48
    functionLinenumberEnd: 51
    functionName: DNSDistProtoBufMessage::setRequestor
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-protobuf.cc
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void DNSDistProtoBufMessage::setRequestor(const ComboAddress& requestor)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' responder'
    argTypes:
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 53
    functionDepth: 0
    functionLinenumber: 53
    functionLinenumberEnd: 56
    functionName: DNSDistProtoBufMessage::setResponder
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-protobuf.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void DNSDistProtoBufMessage::setResponder(const ComboAddress& responder)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: setPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-protobuf.cc:61,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - port
    argTypes:
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 58
    functionDepth: 0
    functionLinenumber: 58
    functionLinenumberEnd: 63
    functionName: DNSDistProtoBufMessage::setRequestorPort
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-protobuf.cc
    functionUses: 0
    functionsReached:
    - setPort
    linkageType: ''
    returnType: void
    signature: void DNSDistProtoBufMessage::setRequestorPort(uint16_t port)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: setPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-protobuf.cc:68,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - port
    argTypes:
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 65
    functionDepth: 0
    functionLinenumber: 65
    functionLinenumberEnd: 70
    functionName: DNSDistProtoBufMessage::setResponderPort
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-protobuf.cc
    functionUses: 0
    functionsReached:
    - setPort
    linkageType: ''
    returnType: void
    signature: void DNSDistProtoBufMessage::setResponderPort(uint16_t port)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rcode
    argTypes:
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 72
    functionDepth: 0
    functionLinenumber: 72
    functionLinenumberEnd: 75
    functionName: DNSDistProtoBufMessage::setResponseCode
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-protobuf.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void DNSDistProtoBufMessage::setResponseCode(uint8_t rcode)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - type
    argTypes:
    - pdns::ProtoZero::Message::MessageType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 77
    functionDepth: 0
    functionLinenumber: 77
    functionLinenumberEnd: 80
    functionName: DNSDistProtoBufMessage::setType
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-protobuf.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void DNSDistProtoBufMessage::setType(pdns::ProtoZero::Message::MessageType
      type)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - bytes
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 82
    functionDepth: 0
    functionLinenumber: 82
    functionLinenumberEnd: 85
    functionName: DNSDistProtoBufMessage::setBytes
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-protobuf.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void DNSDistProtoBufMessage::setBytes(size_t bytes)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::pair
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-protobuf.cc:89,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - sec
    - usec
    argTypes:
    - time_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 87
    functionDepth: 0
    functionLinenumber: 87
    functionLinenumberEnd: 90
    functionName: DNSDistProtoBufMessage::setTime
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-protobuf.cc
    functionUses: 0
    functionsReached:
    - std::pair
    linkageType: ''
    returnType: void
    signature: void DNSDistProtoBufMessage::setTime(time_t sec, uint32_t usec)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::pair
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-protobuf.cc:94,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - sec
    - usec
    argTypes:
    - time_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 92
    functionDepth: 0
    functionLinenumber: 92
    functionLinenumberEnd: 95
    functionName: DNSDistProtoBufMessage::setQueryTime
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-protobuf.cc
    functionUses: 0
    functionsReached:
    - std::pair
    linkageType: ''
    returnType: void
    signature: void DNSDistProtoBufMessage::setQueryTime(time_t sec, uint32_t usec)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSDistProtoBufMessage::PBQuestion
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-protobuf.cc:99,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' name'
    - qtype
    - qclass
    argTypes:
    - DNSName
    - uint16_t
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 97
    functionDepth: 1
    functionLinenumber: 97
    functionLinenumberEnd: 100
    functionName: DNSDistProtoBufMessage::setQuestion
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-protobuf.cc
    functionUses: 0
    functionsReached:
    - DNSDistProtoBufMessage::PBQuestion
    linkageType: ''
    returnType: void
    signature: void DNSDistProtoBufMessage::setQuestion(const DNSName& name, uint16_t
      qtype, uint16_t qclass)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' nm'
    argTypes:
    - Netmask
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 102
    functionDepth: 0
    functionLinenumber: 102
    functionLinenumberEnd: 105
    functionName: DNSDistProtoBufMessage::setEDNSSubnet
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-protobuf.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void DNSDistProtoBufMessage::setEDNSSubnet(const Netmask& nm)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-protobuf.cc:109,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' strValue'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 107
    functionDepth: 0
    functionLinenumber: 107
    functionLinenumberEnd: 110
    functionName: DNSDistProtoBufMessage::addTag
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-protobuf.cc
    functionUses: 0
    functionsReached:
    - push_back
    linkageType: ''
    returnType: void
    signature: void DNSDistProtoBufMessage::addTag(const std::string& strValue)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: d_strings::insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-protobuf.cc:116,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-protobuf.cc:116,1
    - Dst: d_integers::insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-protobuf.cc:119,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 5
    argCount: 3
    argNames:
    - ' key'
    - ' strValues'
    - ' intValues'
    argTypes:
    - std::string
    - std::vector<std::string>
    - std::vector<int64_t>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 112
    functionDepth: 1
    functionLinenumber: 112
    functionLinenumberEnd: 121
    functionName: DNSDistProtoBufMessage::addMeta
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-protobuf.cc
    functionUses: 0
    functionsReached:
    - d_strings::insert
    - std::move
    - d_integers::insert
    linkageType: ''
    returnType: void
    signature: void DNSDistProtoBufMessage::addMeta(const std::string& key, std::vector<std::string>&&
      strValues, const std::vector<int64_t>& intValues)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-protobuf.cc:125,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-protobuf.cc:125,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 5
    argNames:
    - ' qname'
    - uType
    - uClass
    - uTTL
    - ' strBlob'
    argTypes:
    - DNSName
    - uint16_t
    - uint16_t
    - uint32_t
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 123
    functionDepth: 0
    functionLinenumber: 123
    functionLinenumberEnd: 126
    functionName: DNSDistProtoBufMessage::addRR
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-protobuf.cc
    functionUses: 0
    functionsReached:
    - push_back
    - std::move
    linkageType: ''
    returnType: void
    signature: void DNSDistProtoBufMessage::addRR(DNSName&& qname, uint16_t uType,
      uint16_t uClass, uint32_t uTTL, const std::string& strBlob)
  - BBCount: 24
    BranchProfiles: []
    Callsites:
    - Dst: capacity
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-protobuf.cc:130,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-protobuf.cc:130,1
    - Dst: reserve
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-protobuf.cc:131,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-protobuf.cc:131,1
    - Dst: pdns::ProtoZero::Message::setType
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-protobuf.cc:135,1
    - Dst: pdns::ProtoZero::Message::setTime
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-protobuf.cc:138,1
    - Dst: gettime
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-protobuf.cc:142,1
    - Dst: pdns::ProtoZero::Message::setTime
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-protobuf.cc:143,1
    - Dst: getProtocol
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-protobuf.cc:146,1
    - Dst: pdns::ProtoZero::Message::setHTTPVersion
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-protobuf.cc:157,1
    - Dst: pdns::ProtoZero::Message::setHTTPVersion
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-protobuf.cc:161,1
    - Dst: pdns::ProtoZero::Message::setRequest
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-protobuf.cc:173,1
    - Dst: getUniqueID
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-protobuf.cc:173,1
    - Dst: getHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-protobuf.cc:173,1
    - Dst: getData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-protobuf.cc:173,1
    - Dst: pdns::ProtoZero::Message::setHeaderFlags
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-protobuf.cc:176,1
    - Dst: getFlagsFromDNSHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-protobuf.cc:176,1
    - Dst: getHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-protobuf.cc:176,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-protobuf.cc:179,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-protobuf.cc:179,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-protobuf.cc:179,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-protobuf.cc:180,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-protobuf.cc:180,1
    - Dst: pdns::ProtoZero::Message::setServerIdentity
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-protobuf.cc:184,1
    - Dst: pdns::ProtoZero::Message::setServerIdentity
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-protobuf.cc:187,1
    - Dst: pdns::ProtoZero::Message::setEDNSSubnet
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-protobuf.cc:191,1
    - Dst: pdns::ProtoZero::Message::setPacketCacheHit
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-protobuf.cc:195,1
    - Dst: pdns::ProtoZero::Message::setOutgoingQueries
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-protobuf.cc:196,1
    - Dst: pdns::ProtoZero::Message::startResponse
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-protobuf.cc:198,1
    - Dst: pdns::ProtoZero::Message::setQueryTime
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-protobuf.cc:201,1
    - Dst: pdns::ProtoZero::Message::setQueryTime
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-protobuf.cc:204,1
    - Dst: getQueryRealTime
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-protobuf.cc:204,1
    - Dst: getQueryRealTime
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-protobuf.cc:204,1
    - Dst: pdns::ProtoZero::Message::setResponseCode
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-protobuf.cc:208,1
    - Dst: getHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-protobuf.cc:208,1
    - Dst: pdns::ProtoZero::Message::addRRsFromPacket
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-protobuf.cc:211,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-protobuf.cc:211,1
    - Dst: getData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-protobuf.cc:211,1
    - Dst: getData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-protobuf.cc:211,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-protobuf.cc:214,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-protobuf.cc:214,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-protobuf.cc:214,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-protobuf.cc:215,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-protobuf.cc:215,1
    - Dst: pdns::ProtoZero::Message::setResponseCode
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-protobuf.cc:220,1
    - Dst: pdns::ProtoZero::Message::addRR
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-protobuf.cc:225,1
    - Dst: pdns::ProtoZero::Message::addPolicyTag
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-protobuf.cc:229,1
    - Dst: pdns::ProtoZero::Message::commitResponse
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-protobuf.cc:232,1
    - Dst: d_deviceName::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-protobuf.cc:236,1
    - Dst: pdns::ProtoZero::Message::setDeviceName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-protobuf.cc:237,1
    - Dst: d_deviceID::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-protobuf.cc:239,1
    - Dst: pdns::ProtoZero::Message::setDeviceId
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-protobuf.cc:240,1
    - Dst: d_requestorID::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-protobuf.cc:242,1
    - Dst: pdns::ProtoZero::Message::setRequestorId
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-protobuf.cc:243,1
    - Dst: d_strings::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-protobuf.cc:248,1
    - Dst: d_integers::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-protobuf.cc:248,1
    - Dst: pdns::ProtoZero::Message::setMeta
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-protobuf.cc:249,1
    - Dst: pdns::ProtoZero::Message::setMeta
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-protobuf.cc:253,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-protobuf.cc:253,1
    - Dst: ids::getTracer
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-protobuf.cc:257,1
    - Dst: pdns::ProtoZero::Message::setOpenTelemetryTraceID
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-protobuf.cc:258,1
    - Dst: getTraceID
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-protobuf.cc:258,1
    - Dst: pdns::ProtoZero::Message::setOpenTelemetryData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-protobuf.cc:260,1
    - Dst: getOTProtobuf
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-protobuf.cc:260,1
    CyclomaticComplexity: 32
    EdgeCount: 32
    ICount: 100
    argCount: 2
    argNames:
    - ' data'
    - withOpenTelemetryTraceData
    argTypes:
    - std::string
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 263
      start: 128
    functionDepth: 1
    functionLinenumber: 128
    functionLinenumberEnd: 263
    functionName: DNSDistProtoBufMessage::serialize
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-protobuf.cc
    functionUses: 4
    functionsReached:
    - pdns::ProtoZero::Message::setPacketCacheHit
    - getTraceID
    - getUniqueID
    - pdns::ProtoZero::Message::setMeta
    - pdns::ProtoZero::Message::startResponse
    - d_requestorID::empty
    - getFlagsFromDNSHeader
    - ids::getTracer
    - std::string
    - pdns::ProtoZero::Message::setRequest
    - pdns::ProtoZero::Message::setQueryTime
    - pdns::ProtoZero::Message::setDeviceId
    - pdns::ProtoZero::Message::setRequestorId
    - getProtocol
    - pdns::ProtoZero::Message::addRR
    - size
    - pdns::ProtoZero::Message::setOutgoingQueries
    - pdns::ProtoZero::Message::setHTTPVersion
    - pdns::ProtoZero::Message::setOpenTelemetryData
    - dnsdist::logging::getTopLogger
    - pdns::ProtoZero::Message::commitResponse
    - pdns::ProtoZero::Message::setHeaderFlags
    - pdns::ProtoZero::Message::setDeviceName
    - pdns::ProtoZero::Message::addPolicyTag
    - pdns::ProtoZero::Message::setType
    - pdns::ProtoZero::Message::setEDNSSubnet
    - d_deviceName::empty
    - pdns::ProtoZero::Message::setTime
    - pdns::ProtoZero::Message::setOpenTelemetryTraceID
    - VERBOSESLOG
    - getQueryRealTime
    - reserve
    - capacity
    - reinterpret_cast<const char*>
    - d_deviceID::empty
    - gettime
    - getOTProtobuf
    - getHeader
    - getData
    - pdns::ProtoZero::Message::setResponseCode
    - d_integers::empty
    - pdns::ProtoZero::Message::setServerIdentity
    - what
    - d_strings::empty
    - infolog
    - pdns::ProtoZero::Message::addRRsFromPacket
    linkageType: ''
    returnType: void
    signature: void DNSDistProtoBufMessage::serialize(std::string& data, bool withOpenTelemetryTraceData)
      const
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-protobuf.cc:267,1
    - Dst: find
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-protobuf.cc:268,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-protobuf.cc:269,1
    - Dst: splitField
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-protobuf.cc:274,1
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-protobuf.cc:275,1
    - Dst: find
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-protobuf.cc:276,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-protobuf.cc:277,1
    - Dst: std::stoi
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-protobuf.cc:281,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-protobuf.cc:284,1
    - Dst: boost::algorithm::to_lower
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-protobuf.cc:289,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-protobuf.cc:291,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-protobuf.cc:297,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 26
    argCount: 1
    argNames:
    - ' key'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 298
      start: 265
    functionDepth: 0
    functionLinenumber: 265
    functionLinenumberEnd: 298
    functionName: ProtoBufMetaKey::ProtoBufMetaKey
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-protobuf.cc
    functionUses: 0
    functionsReached:
    - std::move
    - splitField
    - std::runtime_error
    - boost::algorithm::to_lower
    - end
    - get
    - std::stoi
    - empty
    - find
    linkageType: ''
    returnType: void
    signature: void ProtoBufMetaKey::ProtoBufMetaKey(const std::string& key)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-protobuf.cc:302,1
    - Dst: find
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-protobuf.cc:303,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-protobuf.cc:304,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-protobuf.cc:305,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-protobuf.cc:305,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-protobuf.cc:305,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - ' dnsquestion'
    argTypes:
    - DNSQuestion
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 308
      start: 300
    functionDepth: 0
    functionLinenumber: 300
    functionLinenumberEnd: 308
    functionName: ProtoBufMetaKey::getValues
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-protobuf.cc
    functionUses: 0
    functionsReached:
    - std::to_string
    - std::runtime_error
    - end
    - get
    - static_cast<uint8_t>
    - find
    linkageType: ''
    returnType: std::vector<std::string>
    signature: std::vector<std::string> ProtoBufMetaKey::getValues(const DNSQuestion&
      dnsquestion) const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-protobuf.cc:312,1
    - Dst: find
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-protobuf.cc:313,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-protobuf.cc:314,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-protobuf.cc:315,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-protobuf.cc:315,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-protobuf.cc:315,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 318
      start: 310
    functionDepth: 0
    functionLinenumber: 310
    functionLinenumberEnd: 318
    functionName: '& ProtoBufMetaKey::getName() const'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-protobuf.cc
    functionUses: 0
    functionsReached:
    - std::to_string
    - std::runtime_error
    - end
    - get
    - static_cast<uint8_t>
    - find
    linkageType: ''
    returnType: std::string
    signature: std::string & ProtoBufMetaKey::getName() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' str'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 39
    functionDepth: 0
    functionLinenumber: 39
    functionLinenumberEnd: 41
    functionName: FDMultiplexerException::FDMultiplexerException
    functionSourceFile: /src/pdns/pdns/dnsdistdist/mplexer.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void FDMultiplexerException(const std::string& str)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 73
    functionDepth: 0
    functionLinenumber: 73
    functionLinenumberEnd: 73
    functionName: ~FDMultiplexer()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/mplexer.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~FDMultiplexer()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 83
    functionDepth: 0
    functionLinenumber: 83
    functionLinenumberEnd: 83
    functionName: FDMultiplexer::InRun
    functionSourceFile: /src/pdns/pdns/dnsdistdist/mplexer.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void InRun(const InRun&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 84
    functionDepth: 0
    functionLinenumber: 84
    functionLinenumberEnd: 84
    functionName: FDMultiplexer::InRun
    functionSourceFile: /src/pdns/pdns/dnsdistdist/mplexer.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void InRun(InRun&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 85
    functionDepth: 0
    functionLinenumber: 85
    functionLinenumberEnd: 85
    functionName: '& operator=(const InRun&)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/mplexer.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: InRun
    signature: InRun & operator=(const InRun&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 86
    functionDepth: 0
    functionLinenumber: 86
    functionLinenumberEnd: 86
    functionName: '& operator=(InRun&&)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/mplexer.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: InRun
    signature: InRun & operator=(InRun&&)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: FDMultiplexerException
      Src: /src/pdns/pdns/dnsdistdist/mplexer.hh:91,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - ' ref'
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 87
    functionDepth: 0
    functionLinenumber: 87
    functionLinenumberEnd: 94
    functionName: FDMultiplexer::InRun
    functionSourceFile: /src/pdns/pdns/dnsdistdist/mplexer.hh
    functionUses: 0
    functionsReached:
    - FDMultiplexerException
    linkageType: ''
    returnType: void
    signature: void InRun(bool& ref)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 95
    functionDepth: 0
    functionLinenumber: 95
    functionLinenumberEnd: 98
    functionName: ~InRun()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/mplexer.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~InRun()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: funcparam_t
      Src: /src/pdns/pdns/dnsdistdist/mplexer.hh:114,1
    - Dst: count
      Src: /src/pdns/pdns/dnsdistdist/mplexer.hh:116,1
    - Dst: FDMultiplexer::alterFD
      Src: /src/pdns/pdns/dnsdistdist/mplexer.hh:119,1
    - Dst: FDMultiplexer::addFD
      Src: /src/pdns/pdns/dnsdistdist/mplexer.hh:122,1
    - Dst: FDMultiplexer::accountingAddFD
      Src: /src/pdns/pdns/dnsdistdist/mplexer.hh:126,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/mplexer.hh:126,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - fd
    - toDo
    argTypes:
    - int
    - callbackfunc_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 127
      start: 114
    functionDepth: 0
    functionLinenumber: 114
    functionLinenumberEnd: 127
    functionName: FDMultiplexer::addReadFD
    functionSourceFile: /src/pdns/pdns/dnsdistdist/mplexer.hh
    functionUses: 8
    functionsReached:
    - std::move
    - FDMultiplexer::addFD
    - funcparam_t
    - count
    - FDMultiplexer::alterFD
    - FDMultiplexer::accountingAddFD
    linkageType: ''
    returnType: void
    signature: void addReadFD(int fd, callbackfunc_t toDo, const funcparam_t& parameter
      = funcparam_t(), const struct timeval* ttd = nullptr)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: funcparam_t
      Src: /src/pdns/pdns/dnsdistdist/mplexer.hh:130,1
    - Dst: count
      Src: /src/pdns/pdns/dnsdistdist/mplexer.hh:132,1
    - Dst: FDMultiplexer::alterFD
      Src: /src/pdns/pdns/dnsdistdist/mplexer.hh:135,1
    - Dst: FDMultiplexer::addFD
      Src: /src/pdns/pdns/dnsdistdist/mplexer.hh:138,1
    - Dst: FDMultiplexer::accountingAddFD
      Src: /src/pdns/pdns/dnsdistdist/mplexer.hh:142,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/mplexer.hh:142,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - fd
    - toDo
    argTypes:
    - int
    - callbackfunc_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 143
      start: 130
    functionDepth: 0
    functionLinenumber: 130
    functionLinenumberEnd: 143
    functionName: FDMultiplexer::addWriteFD
    functionSourceFile: /src/pdns/pdns/dnsdistdist/mplexer.hh
    functionUses: 0
    functionsReached:
    - std::move
    - FDMultiplexer::addFD
    - funcparam_t
    - count
    - FDMultiplexer::alterFD
    - FDMultiplexer::accountingAddFD
    linkageType: ''
    returnType: void
    signature: void addWriteFD(int fd, callbackfunc_t toDo, const funcparam_t& parameter
      = funcparam_t(), const struct timeval* ttd = nullptr)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: find
      Src: /src/pdns/pdns/dnsdistdist/mplexer.hh:149,1
    - Dst: FDMultiplexer::accountingRemoveFD
      Src: /src/pdns/pdns/dnsdistdist/mplexer.hh:150,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/mplexer.hh:152,1
    - Dst: FDMultiplexer::alterFD
      Src: /src/pdns/pdns/dnsdistdist/mplexer.hh:153,1
    - Dst: FDMultiplexer::removeFD
      Src: /src/pdns/pdns/dnsdistdist/mplexer.hh:156,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - fd
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 158
      start: 147
    functionDepth: 0
    functionLinenumber: 147
    functionLinenumberEnd: 158
    functionName: FDMultiplexer::removeReadFD
    functionSourceFile: /src/pdns/pdns/dnsdistdist/mplexer.hh
    functionUses: 8
    functionsReached:
    - end
    - FDMultiplexer::removeFD
    - FDMultiplexer::accountingRemoveFD
    - FDMultiplexer::alterFD
    - find
    linkageType: ''
    returnType: void
    signature: void removeReadFD(int fd)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: find
      Src: /src/pdns/pdns/dnsdistdist/mplexer.hh:164,1
    - Dst: FDMultiplexer::accountingRemoveFD
      Src: /src/pdns/pdns/dnsdistdist/mplexer.hh:165,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/mplexer.hh:167,1
    - Dst: FDMultiplexer::alterFD
      Src: /src/pdns/pdns/dnsdistdist/mplexer.hh:168,1
    - Dst: FDMultiplexer::removeFD
      Src: /src/pdns/pdns/dnsdistdist/mplexer.hh:171,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - fd
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 173
      start: 162
    functionDepth: 0
    functionLinenumber: 162
    functionLinenumberEnd: 173
    functionName: FDMultiplexer::removeWriteFD
    functionSourceFile: /src/pdns/pdns/dnsdistdist/mplexer.hh
    functionUses: 0
    functionsReached:
    - end
    - FDMultiplexer::removeFD
    - FDMultiplexer::accountingRemoveFD
    - FDMultiplexer::alterFD
    - find
    linkageType: ''
    returnType: void
    signature: void removeWriteFD(int fd)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: find
      Src: /src/pdns/pdns/dnsdistdist/mplexer.hh:177,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/mplexer.hh:178,1
    - Dst: FDMultiplexerException
      Src: /src/pdns/pdns/dnsdistdist/mplexer.hh:179,1
    - Dst: replace
      Src: /src/pdns/pdns/dnsdistdist/mplexer.hh:185,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - fd
    - tv
    - timeout
    argTypes:
    - int
    - struct timeval
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 186
      start: 175
    functionDepth: 0
    functionLinenumber: 175
    functionLinenumberEnd: 186
    functionName: FDMultiplexer::setReadTTD
    functionSourceFile: /src/pdns/pdns/dnsdistdist/mplexer.hh
    functionUses: 0
    functionsReached:
    - FDMultiplexerException
    - replace
    - end
    - find
    linkageType: ''
    returnType: void
    signature: void setReadTTD(int fd, struct timeval tv, int timeout)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: find
      Src: /src/pdns/pdns/dnsdistdist/mplexer.hh:190,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/mplexer.hh:191,1
    - Dst: FDMultiplexerException
      Src: /src/pdns/pdns/dnsdistdist/mplexer.hh:192,1
    - Dst: replace
      Src: /src/pdns/pdns/dnsdistdist/mplexer.hh:198,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - fd
    - tv
    - timeout
    argTypes:
    - int
    - struct timeval
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 199
      start: 188
    functionDepth: 0
    functionLinenumber: 188
    functionLinenumberEnd: 199
    functionName: FDMultiplexer::setWriteTTD
    functionSourceFile: /src/pdns/pdns/dnsdistdist/mplexer.hh
    functionUses: 0
    functionsReached:
    - FDMultiplexerException
    - replace
    - end
    - find
    linkageType: ''
    returnType: void
    signature: void setWriteTTD(int fd, struct timeval tv, int timeout)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: funcparam_t
      Src: /src/pdns/pdns/dnsdistdist/mplexer.hh:201,1
    - Dst: FDMultiplexer::accountingRemoveFD
      Src: /src/pdns/pdns/dnsdistdist/mplexer.hh:203,1
    - Dst: FDMultiplexer::alterFD
      Src: /src/pdns/pdns/dnsdistdist/mplexer.hh:204,1
    - Dst: FDMultiplexer::accountingAddFD
      Src: /src/pdns/pdns/dnsdistdist/mplexer.hh:205,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/mplexer.hh:205,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - fd
    - toDo
    argTypes:
    - int
    - callbackfunc_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 206
      start: 201
    functionDepth: 0
    functionLinenumber: 201
    functionLinenumberEnd: 206
    functionName: FDMultiplexer::alterFDToRead
    functionSourceFile: /src/pdns/pdns/dnsdistdist/mplexer.hh
    functionUses: 0
    functionsReached:
    - std::move
    - funcparam_t
    - FDMultiplexer::accountingRemoveFD
    - FDMultiplexer::alterFD
    - FDMultiplexer::accountingAddFD
    linkageType: ''
    returnType: void
    signature: void alterFDToRead(int fd, callbackfunc_t toDo, const funcparam_t&
      parameter = funcparam_t(), const struct timeval* ttd = nullptr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: funcparam_t
      Src: /src/pdns/pdns/dnsdistdist/mplexer.hh:208,1
    - Dst: FDMultiplexer::accountingRemoveFD
      Src: /src/pdns/pdns/dnsdistdist/mplexer.hh:210,1
    - Dst: FDMultiplexer::alterFD
      Src: /src/pdns/pdns/dnsdistdist/mplexer.hh:211,1
    - Dst: FDMultiplexer::accountingAddFD
      Src: /src/pdns/pdns/dnsdistdist/mplexer.hh:212,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/mplexer.hh:212,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - fd
    - toDo
    argTypes:
    - int
    - callbackfunc_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 213
      start: 208
    functionDepth: 0
    functionLinenumber: 208
    functionLinenumberEnd: 213
    functionName: FDMultiplexer::alterFDToWrite
    functionSourceFile: /src/pdns/pdns/dnsdistdist/mplexer.hh
    functionUses: 0
    functionsReached:
    - std::move
    - funcparam_t
    - FDMultiplexer::accountingRemoveFD
    - FDMultiplexer::alterFD
    - FDMultiplexer::accountingAddFD
    linkageType: ''
    returnType: void
    signature: void alterFDToWrite(int fd, callbackfunc_t toDo, const funcparam_t&
      parameter = funcparam_t(), const struct timeval* ttd = nullptr)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::tie
      Src: /src/pdns/pdns/dnsdistdist/mplexer.hh:218,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/mplexer.hh:219,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/mplexer.hh:219,1
    - Dst: std::tie
      Src: /src/pdns/pdns/dnsdistdist/mplexer.hh:222,1
    - Dst: std::vector::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/mplexer.hh:225,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 7
    argCount: 1
    argNames:
    - ' tv'
    argTypes:
    - struct timeval
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 229
      start: 215
    functionDepth: 0
    functionLinenumber: 215
    functionLinenumberEnd: 229
    functionName: FDMultiplexer::getTimeouts
    functionSourceFile: /src/pdns/pdns/dnsdistdist/mplexer.hh
    functionUses: 0
    functionsReached:
    - std::vector::emplace_back
    - std::tie
    - get
    linkageType: ''
    returnType: std::vector<std::pair<int, funcparam_t>>
    signature: std::vector<std::pair<int, funcparam_t>> getTimeouts(const struct timeval&
      tv, bool writes = false)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 238
      start: 234
    functionDepth: 0
    functionLinenumber: 234
    functionLinenumberEnd: 238
    functionName: '& getMultiplexerMap()'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/mplexer.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: FDMultiplexermap_t
    signature: FDMultiplexermap_t & getMultiplexerMap()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/mplexer.hh:244,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/mplexer.hh:244,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - writeFDs
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 245
      start: 242
    functionDepth: 0
    functionLinenumber: 242
    functionLinenumberEnd: 245
    functionName: FDMultiplexer::getWatchedFDCount
    functionSourceFile: /src/pdns/pdns/dnsdistdist/mplexer.hh
    functionUses: 0
    functionsReached:
    - size
    linkageType: ''
    returnType: size_t
    signature: size_t getWatchedFDCount(bool writeFDs) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: watcher
      Src: /src/pdns/pdns/dnsdistdist/mplexer.hh:250,1
    - Dst: watcher
      Src: /src/pdns/pdns/dnsdistdist/mplexer.hh:253,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 255
      start: 247
    functionDepth: 0
    functionLinenumber: 247
    functionLinenumberEnd: 255
    functionName: FDMultiplexer::runForAllWatchedFDs
    functionSourceFile: /src/pdns/pdns/dnsdistdist/mplexer.hh
    functionUses: 0
    functionsReached:
    - watcher
    linkageType: ''
    returnType: void
    signature: void runForAllWatchedFDs(void (*watcher)(bool isRead, int fd, const
      funcparam_t&, struct timeval))
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: std::tie
      Src: /src/pdns/pdns/dnsdistdist/mplexer.hh:281,1
    - Dst: std::tie
      Src: /src/pdns/pdns/dnsdistdist/mplexer.hh:281,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 11
    argCount: 2
    argNames:
    - ' lhs'
    - ' rhs'
    argTypes:
    - struct timeval
    - struct timeval
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 282
      start: 267
    functionDepth: 0
    functionLinenumber: 267
    functionLinenumberEnd: 282
    functionName: operator()(const struct timeval& lhs, const struct timeval& rhs)
      const
    functionSourceFile: /src/pdns/pdns/dnsdistdist/mplexer.hh
    functionUses: 0
    functionsReached:
    - std::tie
    linkageType: ''
    returnType: bool
    signature: bool operator()(const struct timeval& lhs, const struct timeval& rhs)
      const
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/mplexer.hh:302,1
    - Dst: memset
      Src: /src/pdns/pdns/dnsdistdist/mplexer.hh:304,1
    - Dst: insert
      Src: /src/pdns/pdns/dnsdistdist/mplexer.hh:309,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/mplexer.hh:309,1
    - Dst: FDMultiplexerException
      Src: /src/pdns/pdns/dnsdistdist/mplexer.hh:311,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/mplexer.hh:311,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 5
    argNames:
    - ' cbmap'
    - fd
    - toDo
    - ' parameter'
    - ttd
    argTypes:
    - callbackmap_t
    - int
    - callbackfunc_t
    - funcparam_t
    - struct timeval*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 313
      start: 298
    functionDepth: 1
    functionLinenumber: 298
    functionLinenumberEnd: 313
    functionName: FDMultiplexer::accountingAddFD
    functionSourceFile: /src/pdns/pdns/dnsdistdist/mplexer.hh
    functionUses: 8
    functionsReached:
    - std::move
    - std::to_string
    - memset
    - insert
    - FDMultiplexerException
    linkageType: ''
    returnType: void
    signature: void accountingAddFD(callbackmap_t& cbmap, int fd, callbackfunc_t toDo,
      const funcparam_t& parameter, const struct timeval* ttd)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: erase
      Src: /src/pdns/pdns/dnsdistdist/mplexer.hh:317,1
    - Dst: FDMultiplexerException
      Src: /src/pdns/pdns/dnsdistdist/mplexer.hh:318,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/mplexer.hh:318,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 2
    argNames:
    - ' cbmap'
    - fd
    argTypes:
    - callbackmap_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 320
      start: 315
    functionDepth: 0
    functionLinenumber: 315
    functionLinenumberEnd: 320
    functionName: FDMultiplexer::accountingRemoveFD
    functionSourceFile: /src/pdns/pdns/dnsdistdist/mplexer.hh
    functionUses: 8
    functionsReached:
    - FDMultiplexerException
    - erase
    - std::to_string
    linkageType: ''
    returnType: void
    signature: void accountingRemoveFD(callbackmap_t& cbmap, int fd)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: removeFD
      Src: /src/pdns/pdns/dnsdistdist/mplexer.hh:329,1
    - Dst: addFD
      Src: /src/pdns/pdns/dnsdistdist/mplexer.hh:330,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - fd
    - from
    - to
    argTypes:
    - int
    - EventKind
    - EventKind
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 331
      start: 326
    functionDepth: 0
    functionLinenumber: 326
    functionLinenumberEnd: 331
    functionName: FDMultiplexer::alterFD
    functionSourceFile: /src/pdns/pdns/dnsdistdist/mplexer.hh
    functionUses: 12
    functionsReached:
    - addFD
    - removeFD
    linkageType: ''
    returnType: void
    signature: void alterFD(int fd, EventKind from, EventKind to)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ' def'
    argTypes:
    - dnsdist::prometheus::PrometheusMetricDefinition
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 39
    functionDepth: 0
    functionLinenumber: 39
    functionLinenumberEnd: 43
    functionName: dnsdist::webserver::addMetricDefinition(const dnsdist::prometheus::PrometheusMetricDefinition&
      def)
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool dnsdist::webserver::addMetricDefinition(const dnsdist::prometheus::PrometheusMetricDefinition&
      def)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:50,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:51,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:55,1
    - Dst: InternalQueryState::queryRealTime::start
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:56,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:59,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:60,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:60,1
    - Dst: DNSQuestion::getData
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:64,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:68,1
    - Dst: dnsdist_ffi_dnsquestion_get_qtype
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:68,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:73,1
    - Dst: dnsdist_ffi_dnsquestion_get_qclass
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:73,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:78,1
    - Dst: dnsdist_ffi_dnsquestion_get_id
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:78,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:78,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:78,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:79,1
    - Dst: dnsdist_ffi_dnsquestion_get_id
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:79,1
    - Dst: dnsdist_ffi_dnsquestion_get_localaddr
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:87,1
    - Dst: reinterpret_cast<const void**>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:87,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:88,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:89,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:90,1
    - Dst: memcmp
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:90,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:91,1
    - Dst: dnsdist_ffi_dnsquestion_get_local_port
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:91,1
    - Dst: dnsdist_ffi_dnsquestion_get_remoteaddr
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:99,1
    - Dst: reinterpret_cast<const void**>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:99,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:100,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:101,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:102,1
    - Dst: memcmp
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:102,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:103,1
    - Dst: dnsdist_ffi_dnsquestion_get_remote_port
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:103,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:104,1
    - Dst: dnsdist_ffi_dnsquestion_is_remote_v6
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:104,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:105,1
    - Dst: dnsdist_ffi_dnsquestion_is_remote_v6
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:105,1
    - Dst: dnsdist_ffi_dnsquestion_get_masked_remoteaddr
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:113,1
    - Dst: reinterpret_cast<const void**>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:113,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:114,1
    - Dst: Netmask
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:115,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:116,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:117,1
    - Dst: memcmp
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:117,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:124,1
    - Dst: dnsdist_ffi_dnsquestion_get_mac_addr
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:124,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:124,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:126,1
    - Dst: dnsdist_ffi_dnsquestion_get_mac_addr
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:126,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:126,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:129,1
    - Dst: dnsdist_ffi_dnsquestion_get_mac_addr
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:129,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:129,1
    - Dst: std::array::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:129,1
    - Dst: dnsdist_ffi_dnsquestion_get_qname_raw
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:136,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:137,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:138,1
    - Dst: InternalQueryState::qname::getStorage
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:138,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:139,1
    - Dst: memcmp
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:139,1
    - Dst: InternalQueryState::qname::getStorage
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:139,1
    - Dst: InternalQueryState::qname::getStorage
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:139,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:144,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:145,1
    - Dst: dnsdist_ffi_dnsquestion_get_remoteaddr
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:150,1
    - Dst: reinterpret_cast<const void**>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:150,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:151,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:152,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:153,1
    - Dst: memcmp
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:153,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:154,1
    - Dst: dnsdist_ffi_dnsquestion_get_remote_port
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:154,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:159,1
    - Dst: dnsdist_ffi_dnsquestion_get_qname_hash
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:159,1
    - Dst: InternalQueryState::qname::hash
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:159,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:164,1
    - Dst: dnsdist_ffi_dnsquestion_get_rcode
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:164,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:169,1
    - Dst: memcmp
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:169,1
    - Dst: dnsdist_ffi_dnsquestion_get_header
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:169,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:169,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:176,1
    - Dst: dnsdist_ffi_dnsquestion_get_header_copy
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:176,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:176,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:177,1
    - Dst: memcmp
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:177,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:177,1
    - Dst: dnsdist_ffi_dnsquestion_get_data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:182,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:183,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:184,1
    - Dst: memcmp
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:184,1
    - Dst: PacketBuffer::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:184,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:184,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:189,1
    - Dst: dnsdist_ffi_dnsquestion_get_len
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:189,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:189,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:190,1
    - Dst: dnsdist_ffi_dnsquestion_get_size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:190,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:190,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:192,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:193,1
    - Dst: dnsdist_ffi_dnsquestion_set_size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:193,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:194,1
    - Dst: dnsdist_ffi_dnsquestion_get_size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:194,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:195,1
    - Dst: dnsdist_ffi_dnsquestion_get_len
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:195,1
    - Dst: dnsdist_ffi_dnsquestion_set_len
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:196,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:198,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:199,1
    - Dst: dnsdist_ffi_dnsquestion_set_size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:199,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:204,1
    - Dst: dnsdist_ffi_dnsquestion_get_opcode
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:204,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:209,1
    - Dst: dnsdist_ffi_dnsquestion_get_tcp
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:209,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:214,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:214,1
    - Dst: dnsdist_ffi_dnsquestion_get_protocol
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:214,1
    - Dst: getNextProtocol
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:214,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:216,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:216,1
    - Dst: dnsdist_ffi_dnsquestion_get_protocol
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:216,1
    - Dst: getNextProtocol
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:216,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:219,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:219,1
    - Dst: dnsdist_ffi_dnsquestion_get_protocol
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:219,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:224,1
    - Dst: dnsdist_ffi_dnsquestion_get_elapsed_us
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:224,1
    - Dst: BOOST_CHECK_GT
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:225,1
    - Dst: dnsdist_ffi_dnsquestion_get_elapsed_us
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:225,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:229,1
    - Dst: dnsdist_ffi_dnsquestion_get_skip_cache
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:229,1
    - Dst: dnsdist_ffi_dnsquestion_set_skip_cache
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:230,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:231,1
    - Dst: dnsdist_ffi_dnsquestion_get_skip_cache
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:231,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:235,1
    - Dst: dnsdist_ffi_dnsquestion_get_use_ecs
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:235,1
    - Dst: dnsdist_ffi_dnsquestion_set_use_ecs
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:236,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:237,1
    - Dst: dnsdist_ffi_dnsquestion_get_use_ecs
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:237,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:241,1
    - Dst: dnsdist_ffi_dnsquestion_get_ecs_override
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:241,1
    - Dst: dnsdist_ffi_dnsquestion_set_ecs_override
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:242,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:243,1
    - Dst: dnsdist_ffi_dnsquestion_get_ecs_override
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:243,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:247,1
    - Dst: dnsdist_ffi_dnsquestion_is_temp_failure_ttl_set
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:247,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:248,1
    - Dst: dnsdist_ffi_dnsquestion_get_temp_failure_ttl
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:248,1
    - Dst: dnsdist_ffi_dnsquestion_set_temp_failure_ttl
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:250,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:251,1
    - Dst: dnsdist_ffi_dnsquestion_is_temp_failure_ttl_set
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:251,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:252,1
    - Dst: dnsdist_ffi_dnsquestion_get_temp_failure_ttl
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:252,1
    - Dst: dnsdist_ffi_dnsquestion_unset_temp_failure_ttl
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:253,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:254,1
    - Dst: dnsdist_ffi_dnsquestion_is_temp_failure_ttl_set
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:254,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:258,1
    - Dst: dnsdist_ffi_dnsquestion_get_do
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:258,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:262,1
    - Dst: dnsdist_ffi_dnsquestion_get_ecs_prefix_length
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:262,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:262,1
    - Dst: dnsdist_ffi_dnsquestion_set_ecs_prefix_length
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:263,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:264,1
    - Dst: dnsdist_ffi_dnsquestion_get_ecs_prefix_length
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:264,1
    - Dst: dnsdist_ffi_dnsquestion_get_sni
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:270,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:271,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:275,1
    - Dst: dnsdist_ffi_dnsquestion_get_trailing_data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:275,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:277,1
    - Dst: dnsdist_ffi_dnsquestion_set_trailing_data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:277,1
    - Dst: std::string::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:277,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:277,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:279,1
    - Dst: dnsdist_ffi_dnsquestion_get_trailing_data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:279,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:279,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:280,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:280,1
    - Dst: DNSQuestion::getMutableData
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:284,1
    - Dst: DNSQuestion::getData
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:285,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:290,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:290,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:292,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:292,1
    - Dst: dnsdist_ffi_dnsquestion_spoof_addrs
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:294,1
    - Dst: std::vector::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:294,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:294,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:295,1
    - Dst: DNSQuestion::getData
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:295,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:295,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:298,1
    - Dst: DNSQuestion::getData
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:298,1
    - Dst: DNSQuestion::getData
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:298,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:299,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:300,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:302,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:303,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:304,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:306,1
    - Dst: MOADNSParser::d_answers::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:306,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:307,1
    - Dst: MOADNSParser::d_answers::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:307,1
    - Dst: static_cast<uint16_t>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:307,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:308,1
    - Dst: MOADNSParser::d_answers::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:308,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:309,1
    - Dst: MOADNSParser::d_answers::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:309,1
    - Dst: DNSQuestion::getMutableData
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:311,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:315,1
    - Dst: dnsdist_ffi_dnsquestion_set_restartable
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:315,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:316,1
    - Dst: dnsdist_ffi_dnsquestion_set_restartable
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:316,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:320,1
    - Dst: dnsdist_ffi_dnsquestion_set_max_returned_ttl
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:321,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:322,1
    - Dst: std::string::resize
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:330,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:331,1
    - Dst: dnsdist_ffi_dnsquestion_get_tag
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:331,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:332,1
    - Dst: dnsdist_ffi_dnsquestion_get_tag
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:332,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:333,1
    - Dst: dnsdist_ffi_dnsquestion_get_tag
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:333,1
    - Dst: std::string::c_str
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:333,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:335,1
    - Dst: dnsdist_ffi_dnsquestion_get_tag_raw
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:335,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:336,1
    - Dst: dnsdist_ffi_dnsquestion_get_tag_raw
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:336,1
    - Dst: std::string::c_str
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:336,1
    - Dst: std::string::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:336,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:336,1
    - Dst: dnsdist_ffi_dnsquestion_set_tag
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:338,1
    - Dst: std::string::c_str
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:338,1
    - Dst: std::string::c_str
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:338,1
    - Dst: dnsdist_ffi_dnsquestion_get_tag
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:340,1
    - Dst: std::string::c_str
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:340,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:341,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:342,1
    - Dst: std::string::c_str
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:342,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:345,1
    - Dst: dnsdist_ffi_dnsquestion_get_tag_array
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:345,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:346,1
    - Dst: dnsdist_ffi_dnsquestion_get_tag_array
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:346,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:348,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:348,1
    - Dst: std::string::c_str
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:348,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:350,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:350,1
    - Dst: std::string::c_str
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:350,1
    - Dst: dnsdist_ffi_dnsquestion_unset_tag
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:352,1
    - Dst: std::string::c_str
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:352,1
    - Dst: dnsdist_ffi_dnsquestion_get_tag
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:354,1
    - Dst: std::string::c_str
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:354,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:355,1
    - Dst: dnsdist_ffi_dnsquestion_set_tag_raw
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:357,1
    - Dst: std::string::c_str
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:357,1
    - Dst: std::string::c_str
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:357,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:357,1
    - Dst: std::string::resize
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:360,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:361,1
    - Dst: dnsdist_ffi_dnsquestion_get_tag_raw
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:361,1
    - Dst: std::string::c_str
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:361,1
    - Dst: std::string::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:361,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:361,1
    - Dst: std::string::resize
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:363,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:363,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:364,1
    - Dst: dnsdist_ffi_dnsquestion_get_tag_raw
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:364,1
    - Dst: std::string::c_str
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:364,1
    - Dst: std::string::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:364,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:364,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:364,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:365,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:367,1
    - Dst: dnsdist_ffi_dnsquestion_get_tag_raw
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:367,1
    - Dst: std::string::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:367,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:367,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:373,1
    - Dst: dnsdist_ffi_dnsquestion_get_http_path
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:373,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:374,1
    - Dst: dnsdist_ffi_dnsquestion_get_http_query_string
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:374,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:375,1
    - Dst: dnsdist_ffi_dnsquestion_get_http_host
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:375,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:376,1
    - Dst: dnsdist_ffi_dnsquestion_get_http_scheme
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:376,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:377,1
    - Dst: dnsdist_ffi_dnsquestion_get_http_headers
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:377,1
    - Dst: dnsdist_ffi_dnsquestion_set_http_response
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:378,1
    - Dst: dnsdist_ffi_dnsquestion_set_device_id
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:385,1
    - Dst: dnsdist_ffi_dnsquestion_set_device_id
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:386,1
    - Dst: dnsdist_ffi_dnsquestion_set_device_id
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:387,1
    - Dst: std::string::c_str
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:387,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:387,1
    - Dst: dnsdist_ffi_dnsquestion_set_device_name
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:388,1
    - Dst: dnsdist_ffi_dnsquestion_set_device_name
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:389,1
    - Dst: dnsdist_ffi_dnsquestion_set_device_name
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:390,1
    - Dst: std::string::c_str
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:390,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:390,1
    - Dst: dnsdist_ffi_dnsquestion_set_requestor_id
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:391,1
    - Dst: dnsdist_ffi_dnsquestion_set_requestor_id
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:392,1
    - Dst: dnsdist_ffi_dnsquestion_set_requestor_id
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:393,1
    - Dst: std::string::c_str
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:393,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:393,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:394,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:395,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:396,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:397,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:400,1
    - Dst: dnsdist_ffi_dnsquestion_get_incoming_interface
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:400,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:401,1
    - Dst: dnsdist_ffi_dnsquestion_get_incoming_interface
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:401,1
    - Dst: dnsdist_ffi_dnsquestion_get_incoming_interface
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:407,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:408,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:409,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:409,1
    - Dst: dnsdist_ffi_dnsquestion_get_incoming_interface
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:417,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:418,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:419,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:419,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 199
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 422
      start: 47
    functionDepth: 3
    functionLinenumber: 47
    functionLinenumberEnd: 422
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - dnsdist_ffi_dnsquestion_set_restartable
    - dnsdist_ffi_dnsquestion_is_remote_v6
    - DNSQuestion::getData
    - ntohs
    - dnsdist_ffi_dnsquestion_get_masked_remoteaddr
    - std::string
    - dnsdist_ffi_dnsquestion_set_skip_cache
    - std::vector::data
    - memcmp
    - dnsdist_ffi_dnsquestion_get_sni
    - dnsdist_ffi_dnsquestion_get_len
    - std::vector::size
    - dnsdist_ffi_dnsquestion_get_header_copy
    - dnsdist_ffi_dnsquestion_unset_tag
    - dnsdist_ffi_dnsquestion_set_ecs_override
    - dnsdist_ffi_dnsquestion_get_http_headers
    - dnsdist_ffi_dnsquestion_get_qname_raw
    - dnsdist_ffi_dnsquestion_unset_temp_failure_ttl
    - ComboAddress
    - dnsdist_ffi_dnsquestion_get_tcp
    - PacketBuffer::data
    - dnsdist_ffi_dnsquestion_get_incoming_interface
    - dnsdist_ffi_dnsquestion_get_data
    - dnsdist_ffi_dnsquestion_get_qclass
    - InternalQueryState::queryRealTime::start
    - BOOST_CHECK
    - dnsdist_ffi_dnsquestion_set_ecs_prefix_length
    - std::array::size
    - reinterpret_cast<char*>
    - dnsdist_ffi_dnsquestion_set_http_response
    - dnsdist_ffi_dnsquestion_get_size
    - GenericDNSPacketWriter::getHeader
    - InternalQueryState::qname::getStorage
    - PacketBuffer::size
    - std::string::size
    - auto::size
    - dnsdist_ffi_dnsquestion_set_device_id
    - static_cast<uint16_t>
    - dnsdist_ffi_dnsquestion_spoof_addrs
    - dnsdist_ffi_dnsquestion_set_requestor_id
    - std::string::data
    - DNSName
    - dnsdist_ffi_dnsquestion_get_ecs_override
    - std::array::data
    - dnsdist_ffi_dnsquestion_set_device_name
    - InternalQueryState::qname::hash
    - dnsdist_ffi_dnsquestion_set_tag
    - std::string::c_str
    - dnsdist_ffi_dnsquestion_get_local_port
    - dnsdist_ffi_dnsquestion_get_id
    - dnsdist_ffi_dnsquestion_get_localaddr
    - dnsdist_ffi_dnsquestion_get_do
    - dnsdist_ffi_dnsquestion_set_trailing_data
    - dnsdist_ffi_dnsquestion_get_http_path
    - dnsdist_ffi_dnsquestion_set_len
    - dnsdist_ffi_dnsquestion_get_qtype
    - dnsdist_ffi_dnsquestion_set_tag_raw
    - dnsdist_ffi_dnsquestion_get_http_query_string
    - dnsdist_ffi_dnsquestion_get_ecs_prefix_length
    - dnsdist_ffi_dnsquestion_get_temp_failure_ttl
    - BOOST_REQUIRE
    - MOADNSParser::d_answers::at
    - dnsdist_ffi_dnsquestion_get_rcode
    - htons
    - Netmask
    - BOOST_CHECK_GT
    - dnsdist_ffi_dnsquestion_get_remoteaddr
    - dnsdist::configuration::getCurrentRuntimeConfiguration
    - dnsdist_ffi_dnsquestion_get_skip_cache
    - dnsdist_ffi_dnsquestion_is_temp_failure_ttl_set
    - dnsdist_ffi_dnsquestion_get_remote_port
    - dnsdist_ffi_dnsquestion_set_use_ecs
    - reinterpret_cast<const char*>
    - dnsdist_ffi_dnsquestion_get_http_scheme
    - dnsdist_ffi_dnsquestion_set_temp_failure_ttl
    - dnsdist_ffi_dnsquestion_get_tag_array
    - dnsdist_ffi_dnsquestion_get_mac_addr
    - getNextProtocol
    - dnsdist_ffi_dnsquestion_get_http_host
    - dnsdist_ffi_dnsquestion_set_max_returned_ttl
    - dnsdist_ffi_dnsquestion_set_size
    - dnsdist_ffi_dnsquestion_get_qname_hash
    - dnsdist_ffi_dnsquestion_get_opcode
    - std::vector::push_back
    - dnsdist_ffi_dnsquestion_get_tag
    - dnsdist_ffi_dnsquestion_get_use_ecs
    - BOOST_REQUIRE_EQUAL
    - pdns::max
    - dnsdist_ffi_dnsquestion_get_tag_raw
    - reinterpret_cast<const void**>
    - static_cast<uint8_t>
    - std::string::resize
    - DNSQuestion::getMutableData
    - MOADNSParser::d_answers::size
    - BOOST_CHECK_EQUAL
    - dnsdist_ffi_dnsquestion_get_protocol
    - dnsdist_ffi_dnsquestion_get_header
    - dnsdist_ffi_dnsquestion_get_trailing_data
    - dnsdist_ffi_dnsquestion_get_elapsed_us
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_Query)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:427,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:428,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:432,1
    - Dst: InternalQueryState::queryRealTime::start
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:433,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:437,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:438,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:439,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:439,1
    - Dst: std::make_shared<DownstreamState>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:442,1
    - Dst: dnsdist_ffi_dnsresponse_set_min_ttl
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:448,1
    - Dst: dnsdist_ffi_dnsresponse_set_max_ttl
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:449,1
    - Dst: dnsdist_ffi_dnsresponse_limit_ttl
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:450,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:454,1
    - Dst: dnsdist_ffi_dnsresponse_set_max_returned_ttl
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:455,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:456,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:461,1
    - Dst: dnsdist_ffi_dnsresponse_rebase
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:461,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:464,1
    - Dst: dnsdist_ffi_dnsresponse_rebase
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:464,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:467,1
    - Dst: dnsdist_ffi_dnsresponse_rebase
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:467,1
    - Dst: DNSName::getStorage
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:467,1
    - Dst: DNSName::getStorage
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:467,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:468,1
    - Dst: InternalQueryState::qname::toString
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:468,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:468,1
    - Dst: dnsdist_ffi_dnsresponse_clear_records_type
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:472,1
    - Dst: dnsdist_ffi_dnsresponse_clear_records_type
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:473,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:477,1
    - Dst: dnsdist_ffi_dnsresponse_get_stale_cache_hit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:477,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:481,1
    - Dst: dnsdist_ffi_dnsresponse_get_restart_count
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:481,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 31
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 483
      start: 424
    functionDepth: 2
    functionLinenumber: 424
    functionLinenumberEnd: 483
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - DNSName::getStorage
    - GenericDNSPacketWriter::getHeader
    - DNSName::toString
    - dnsdist_ffi_dnsresponse_clear_records_type
    - dnsdist_ffi_dnsresponse_set_max_returned_ttl
    - InternalQueryState::qname::toString
    - dnsdist_ffi_dnsresponse_set_max_ttl
    - std::make_shared<DownstreamState>
    - htons
    - dnsdist_ffi_dnsresponse_rebase
    - DNSName
    - dnsdist_ffi_dnsresponse_get_restart_count
    - ComboAddress
    - dnsdist_ffi_dnsresponse_get_stale_cache_hit
    - dnsdist_ffi_dnsresponse_set_min_ttl
    - BOOST_CHECK_EQUAL
    - dnsdist_ffi_dnsresponse_limit_ttl
    - InternalQueryState::queryRealTime::start
    - BOOST_CHECK
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_Response)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<DownstreamState>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:488,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:491,1
    - Dst: dnsdist_ffi_server_get_outstanding
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:491,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:492,1
    - Dst: dnsdist_ffi_server_is_up
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:492,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:493,1
    - Dst: dnsdist_ffi_server_get_name
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:493,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:494,1
    - Dst: dnsdist_ffi_server_get_name_with_addr
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:494,1
    - Dst: ComboAddress::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:494,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:495,1
    - Dst: dnsdist_ffi_server_get_weight
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:495,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:496,1
    - Dst: dnsdist_ffi_server_get_order
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:496,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:497,1
    - Dst: dnsdist_ffi_server_get_latency
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:497,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 498
      start: 485
    functionDepth: 2
    functionLinenumber: 485
    functionLinenumberEnd: 498
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - dnsdist_ffi_server_get_order
    - dnsdist_ffi_server_get_outstanding
    - dnsdist_ffi_server_is_up
    - BOOST_CHECK_EQUAL
    - dnsdist_ffi_server_get_name
    - dnsdist_ffi_server_get_weight
    - dnsdist_ffi_server_get_latency
    - std::make_shared<DownstreamState>
    - dnsdist_ffi_server_get_name_with_addr
    - ComboAddress::toStringWithPort
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_Server)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<DNSDistPacketCache>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:505,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:512,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:515,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:519,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:519,1
    - Dst: GenericDNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:520,1
    - Dst: GenericDNSPacketWriter::xfrCAWithoutPort
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:521,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:522,1
    - Dst: InternalQueryState::queryRealTime::start
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:528,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:530,1
    - Dst: auto::insert
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:531,1
    - Dst: getFlagsFromDNSHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:531,1
    - Dst: DNSQuestion::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:531,1
    - Dst: ServerPool
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:534,1
    - Dst: ServerPool
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:537,1
    - Dst: dnsdist::configuration::updateRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:538,1
    - Dst: d_pools::emplace
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:539,1
    - Dst: d_pools::emplace
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:540,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:547,1
    - Dst: dnsdist_ffi_packetcache_get_domain_list_by_addr
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:547,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:548,1
    - Dst: dnsdist_ffi_packetcache_get_domain_list_by_addr
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:548,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:548,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:549,1
    - Dst: dnsdist_ffi_packetcache_get_domain_list_by_addr
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:549,1
    - Dst: std::string::c_str
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:549,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:550,1
    - Dst: dnsdist_ffi_packetcache_get_domain_list_by_addr
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:550,1
    - Dst: std::string::c_str
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:550,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:550,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:555,1
    - Dst: dnsdist_ffi_packetcache_get_domain_list_by_addr
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:555,1
    - Dst: std::string::c_str
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:555,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:555,1
    - Dst: dnsdist_ffi_packetcache_get_domain_list_by_addr
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:558,1
    - Dst: std::string::c_str
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:558,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:558,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:559,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:560,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:564,1
    - Dst: dnsdist_ffi_domain_list_get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:564,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:565,1
    - Dst: dnsdist_ffi_domain_list_get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:565,1
    - Dst: dnsdist_ffi_domain_list_get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:569,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:570,1
    - Dst: InternalQueryState::qname::toString
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:570,1
    - Dst: dnsdist_ffi_domain_list_free
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:573,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:580,1
    - Dst: dnsdist_ffi_packetcache_get_address_list_by_domain
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:580,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:581,1
    - Dst: dnsdist_ffi_packetcache_get_address_list_by_domain
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:581,1
    - Dst: InternalQueryState::qname::toString
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:581,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:582,1
    - Dst: dnsdist_ffi_packetcache_get_address_list_by_domain
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:582,1
    - Dst: std::string::c_str
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:582,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:583,1
    - Dst: dnsdist_ffi_packetcache_get_address_list_by_domain
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:583,1
    - Dst: std::string::c_str
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:583,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:583,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:588,1
    - Dst: dnsdist_ffi_packetcache_get_address_list_by_domain
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:588,1
    - Dst: std::string::c_str
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:588,1
    - Dst: dnsdist_ffi_packetcache_get_address_list_by_domain
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:591,1
    - Dst: std::string::c_str
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:591,1
    - Dst: InternalQueryState::qname::toString
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:591,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:592,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:593,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:597,1
    - Dst: dnsdist_ffi_address_list_get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:597,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:598,1
    - Dst: dnsdist_ffi_address_list_get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:598,1
    - Dst: dnsdist_ffi_address_list_get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:602,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:603,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:603,1
    - Dst: dnsdist_ffi_address_list_free
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:606,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 50
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 608
      start: 500
    functionDepth: 3
    functionLinenumber: 500
    functionLinenumberEnd: 608
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - ServerPool
    - GenericDNSPacketWriter::getHeader
    - dnsdist::configuration::updateRuntimeConfiguration
    - d_pools::emplace
    - getFlagsFromDNSHeader
    - dnsdist_ffi_packetcache_get_address_list_by_domain
    - DNSQuestion::getHeader
    - InternalQueryState::qname::toString
    - dnsdist_ffi_address_list_free
    - GenericDNSPacketWriter::xfrCAWithoutPort
    - GenericDNSPacketWriter::startRecord
    - dnsdist_ffi_packetcache_get_domain_list_by_addr
    - BOOST_REQUIRE
    - dnsdist_ffi_address_list_get
    - BOOST_REQUIRE_EQUAL
    - auto::get
    - DNSName
    - auto::insert
    - ComboAddress
    - dnsdist_ffi_domain_list_get
    - std::string::c_str
    - BOOST_CHECK_EQUAL
    - GenericDNSPacketWriter::commit
    - std::make_shared<DNSDistPacketCache>
    - InternalQueryState::queryRealTime::start
    - ComboAddress::toString
    - BOOST_CHECK
    - dnsdist_ffi_domain_list_free
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_PacketCache)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:616,1
    - Dst: std::vector::resize
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:619,1
    - Dst: dnsdist_ffi_generate_proxy_protocol_payload
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:623,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:623,1
    - Dst: std::vector::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:623,1
    - Dst: std::vector::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:623,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:624,1
    - Dst: dnsdist_ffi_generate_proxy_protocol_payload
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:629,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:629,1
    - Dst: std::vector::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:629,1
    - Dst: std::vector::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:629,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:630,1
    - Dst: dnsdist_ffi_generate_proxy_protocol_payload
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:634,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:634,1
    - Dst: std::vector::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:634,1
    - Dst: std::vector::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:634,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:634,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:635,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 637
      start: 610
    functionDepth: 1
    functionLinenumber: 610
    functionLinenumberEnd: 637
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - dnsdist_ffi_generate_proxy_protocol_payload
    - std::vector::push_back
    - std::vector::resize
    - std::vector::size
    - BOOST_CHECK_EQUAL
    - std::vector::data
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_ProxyProtocol)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:642,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:643,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:647,1
    - Dst: InternalQueryState::queryRealTime::start
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:648,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:651,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:652,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:652,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:658,1
    - Dst: dnsdist_ffi_dnsquestion_add_proxy_protocol_values
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:661,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:661,1
    - Dst: std::vector::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:661,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:662,1
    - Dst: dnsdist_ffi_dnsquestion_add_proxy_protocol_values
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:666,1
    - Dst: std::vector::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:666,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:667,1
    - Dst: dnsdist_ffi_dnsquestion_add_proxy_protocol_values
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:671,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:671,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:672,1
    - Dst: dnsdist_ffi_dnsquestion_add_proxy_protocol_values
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:676,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:676,1
    - Dst: std::vector::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:676,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:677,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:678,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:679,1
    - Dst: DNSQuestion::proxyProtocolValues::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:679,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:679,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:680,1
    - Dst: DNSQuestion::proxyProtocolValues::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:680,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:680,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:681,1
    - Dst: DNSQuestion::proxyProtocolValues::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:681,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:681,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:681,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:682,1
    - Dst: memcmp
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:682,1
    - Dst: DNSQuestion::proxyProtocolValues::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:682,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:682,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:682,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:682,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 24
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 684
      start: 639
    functionDepth: 1
    functionLinenumber: 639
    functionLinenumberEnd: 684
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - DNSQuestion::proxyProtocolValues::size
    - std::vector::push_back
    - memcmp
    - std::vector::size
    - GenericDNSPacketWriter::getHeader
    - DNSName
    - ComboAddress
    - BOOST_CHECK_EQUAL
    - DNSQuestion::proxyProtocolValues::at
    - dnsdist_ffi_dnsquestion_add_proxy_protocol_values
    - std::vector::at
    - size
    - InternalQueryState::queryRealTime::start
    - BOOST_REQUIRE
    - data
    - std::vector::data
    - BOOST_REQUIRE_EQUAL
    - htons
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_ProxyProtocolQuery)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:689,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:690,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:694,1
    - Dst: InternalQueryState::queryRealTime::start
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:695,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:698,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:699,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:699,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:707,1
    - Dst: dnsdist_ffi_dnsquestion_get_proxy_protocol_values
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:707,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:711,1
    - Dst: dnsdist_ffi_dnsquestion_get_proxy_protocol_values
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:711,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:716,1
    - Dst: dnsdist_ffi_dnsquestion_get_proxy_protocol_values
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:716,1
    - Dst: std::make_unique<std::vector<ProxyProtocolValue>>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:721,1
    - Dst: DNSQuestion::proxyProtocolValues::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:722,1
    - Dst: DNSQuestion::proxyProtocolValues::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:723,1
    - Dst: DNSQuestion::proxyProtocolValues::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:724,1
    - Dst: dnsdist_ffi_dnsquestion_get_proxy_protocol_values
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:726,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:727,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:729,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:730,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:731,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:732,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:733,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:734,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 28
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 737
      start: 686
    functionDepth: 2
    functionLinenumber: 686
    functionLinenumberEnd: 737
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - DNSQuestion::proxyProtocolValues::emplace_back
    - GenericDNSPacketWriter::getHeader
    - DNSName
    - ComboAddress
    - BOOST_CHECK_EQUAL
    - dnsdist_ffi_dnsquestion_get_proxy_protocol_values
    - std::make_unique<std::vector<ProxyProtocolValue>>
    - InternalQueryState::queryRealTime::start
    - BOOST_REQUIRE_EQUAL
    - htons
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_ProxyProtocolIncoming)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:744,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:745,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:746,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:747,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:747,1
    - Dst: GenericDNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:748,1
    - Dst: GenericDNSPacketWriter::xfrCAWithoutPort
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:750,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:751,1
    - Dst: GenericDNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:752,1
    - Dst: GenericDNSPacketWriter::xfrCAWithoutPort
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:754,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:755,1
    - Dst: GenericDNSPacketWriter::addOpt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:756,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:757,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:760,1
    - Dst: dnsdist_ffi_dnspacket_parse
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:760,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:765,1
    - Dst: dnsdist_ffi_dnspacket_parse
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:765,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:765,1
    - Dst: PacketBuffer::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:765,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:765,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:767,1
    - Dst: dnsdist_ffi_dnspacket_parse
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:767,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:767,1
    - Dst: PacketBuffer::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:767,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:767,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:768,1
    - Dst: dnsdist_ffi_dnspacket_get_qname_raw
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:774,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:775,1
    - Dst: dnsdist_ffi_dnspacket_get_qtype
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:775,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:776,1
    - Dst: dnsdist_ffi_dnspacket_get_qclass
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:776,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:777,1
    - Dst: dnsdist_ffi_dnspacket_get_qtype
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:777,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:778,1
    - Dst: dnsdist_ffi_dnspacket_get_qclass
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:778,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:780,1
    - Dst: dnsdist_ffi_dnspacket_get_records_count_in_section
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:780,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:781,1
    - Dst: dnsdist_ffi_dnspacket_get_records_count_in_section
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:781,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:782,1
    - Dst: dnsdist_ffi_dnspacket_get_records_count_in_section
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:782,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:783,1
    - Dst: dnsdist_ffi_dnspacket_get_records_count_in_section
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:783,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:784,1
    - Dst: dnsdist_ffi_dnspacket_get_records_count_in_section
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:784,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:785,1
    - Dst: dnsdist_ffi_dnspacket_get_records_count_in_section
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:785,1
    - Dst: dnsdist_ffi_dnspacket_get_qname_raw
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:787,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:788,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:789,1
    - Dst: DNSName::wirelength
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:789,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:790,1
    - Dst: memcmp
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:790,1
    - Dst: DNSName::getStorage
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:790,1
    - Dst: DNSName::getStorage
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:790,1
    - Dst: std::string::resize
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:794,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:798,1
    - Dst: dnsdist_ffi_dnspacket_get_name_at_offset_raw
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:798,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:798,1
    - Dst: PacketBuffer::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:798,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:798,1
    - Dst: std::string::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:798,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:800,1
    - Dst: dnsdist_ffi_dnspacket_get_name_at_offset_raw
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:800,1
    - Dst: std::string::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:800,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:800,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:803,1
    - Dst: dnsdist_ffi_dnspacket_get_name_at_offset_raw
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:803,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:803,1
    - Dst: PacketBuffer::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:803,1
    - Dst: std::string::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:803,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:803,1
    - Dst: dnsdist_ffi_dnspacket_get_name_at_offset_raw
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:806,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:806,1
    - Dst: PacketBuffer::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:806,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:806,1
    - Dst: std::string::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:806,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:806,1
    - Dst: BOOST_REQUIRE_GT
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:807,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:808,1
    - Dst: DNSName::wirelength
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:808,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:809,1
    - Dst: memcmp
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:809,1
    - Dst: std::string::c_str
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:809,1
    - Dst: DNSName::getStorage
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:809,1
    - Dst: DNSName::getStorage
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:809,1
    - Dst: dnsdist_ffi_dnspacket_get_record_name_raw
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:814,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:815,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:818,1
    - Dst: dnsdist_ffi_dnspacket_get_record_type
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:818,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:819,1
    - Dst: dnsdist_ffi_dnspacket_get_record_class
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:819,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:820,1
    - Dst: dnsdist_ffi_dnspacket_get_record_ttl
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:820,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:821,1
    - Dst: dnsdist_ffi_dnspacket_get_record_content_length
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:821,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:822,1
    - Dst: dnsdist_ffi_dnspacket_get_record_content_offset
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:822,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:823,1
    - Dst: dnsdist_ffi_dnspacket_get_name_at_offset_raw
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:823,1
    - Dst: dnsdist_ffi_dnspacket_get_record_name_raw
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:826,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:827,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:828,1
    - Dst: DNSName::wirelength
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:828,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:829,1
    - Dst: memcmp
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:829,1
    - Dst: DNSName::getStorage
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:829,1
    - Dst: DNSName::getStorage
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:829,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:830,1
    - Dst: dnsdist_ffi_dnspacket_get_record_type
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:830,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:831,1
    - Dst: dnsdist_ffi_dnspacket_get_record_class
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:831,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:832,1
    - Dst: dnsdist_ffi_dnspacket_get_record_ttl
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:832,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:833,1
    - Dst: dnsdist_ffi_dnspacket_get_record_content_length
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:833,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:834,1
    - Dst: dnsdist_ffi_dnspacket_get_record_content_offset
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:834,1
    - Dst: dnsdist_ffi_dnspacket_get_record_name_raw
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:837,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:838,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:839,1
    - Dst: DNSName::wirelength
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:839,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:840,1
    - Dst: memcmp
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:840,1
    - Dst: DNSName::getStorage
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:840,1
    - Dst: DNSName::getStorage
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:840,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:841,1
    - Dst: dnsdist_ffi_dnspacket_get_record_type
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:841,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:842,1
    - Dst: dnsdist_ffi_dnspacket_get_record_class
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:842,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:843,1
    - Dst: dnsdist_ffi_dnspacket_get_record_ttl
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:843,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:844,1
    - Dst: dnsdist_ffi_dnspacket_get_record_content_length
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:844,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:845,1
    - Dst: dnsdist_ffi_dnspacket_get_record_content_offset
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:845,1
    - Dst: dnsdist_ffi_dnspacket_free
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:847,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 67
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 848
      start: 739
    functionDepth: 1
    functionLinenumber: 739
    functionLinenumberEnd: 848
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - dnsdist_ffi_dnspacket_get_name_at_offset_raw
    - DNSName::getStorage
    - dnsdist_ffi_dnspacket_get_qtype
    - GenericDNSPacketWriter::getHeader
    - dnsdist_ffi_dnspacket_get_records_count_in_section
    - PacketBuffer::size
    - dnsdist_ffi_dnspacket_get_record_content_length
    - std::string::size
    - dnsdist_ffi_dnspacket_get_qclass
    - DNSName::wirelength
    - memcmp
    - GenericDNSPacketWriter::xfrCAWithoutPort
    - GenericDNSPacketWriter::startRecord
    - dnsdist_ffi_dnspacket_get_record_content_offset
    - dnsdist_ffi_dnspacket_get_record_class
    - BOOST_REQUIRE
    - BOOST_REQUIRE_EQUAL
    - htons
    - dnsdist_ffi_dnspacket_parse
    - std::string::data
    - std::string::resize
    - reinterpret_cast<const char*>
    - BOOST_REQUIRE_GT
    - dnsdist_ffi_dnspacket_get_record_name_raw
    - dnsdist_ffi_dnspacket_get_qname_raw
    - GenericDNSPacketWriter::addOpt
    - dnsdist_ffi_dnspacket_get_record_type
    - PacketBuffer::data
    - std::string::c_str
    - BOOST_CHECK_EQUAL
    - GenericDNSPacketWriter::commit
    - dnsdist_ffi_dnspacket_get_record_ttl
    - BOOST_CHECK
    - dnsdist_ffi_dnspacket_free
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_PacketOverlay)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:853,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:854,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:856,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:857,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:858,1
    - Dst: gettime
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:869,1
    - Dst: reset
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:871,1
    - Dst: init
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:876,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:877,1
    - Dst: getNumberOfQueryEntries
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:877,1
    - Dst: insertQuery
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:879,1
    - Dst: insertResponse
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:880,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:880,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:886,1
    - Dst: dnsdist_ffi_ring_get_entries
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:886,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:887,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:888,1
    - Dst: dnsdist_ffi_ring_get_entries_by_addr
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:888,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:888,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:889,1
    - Dst: dnsdist_ffi_ring_get_entries_by_addr
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:889,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:890,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:891,1
    - Dst: dnsdist_ffi_ring_get_entries_by_addr
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:891,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:892,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:893,1
    - Dst: dnsdist_ffi_ring_get_entries_by_mac
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:893,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:894,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:895,1
    - Dst: dnsdist_ffi_ring_entry_is_response
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:895,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:896,1
    - Dst: dnsdist_ffi_ring_entry_get_age
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:896,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:897,1
    - Dst: dnsdist_ffi_ring_entry_get_name
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:897,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:898,1
    - Dst: dnsdist_ffi_ring_entry_get_type
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:898,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:899,1
    - Dst: dnsdist_ffi_ring_entry_get_requestor
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:899,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:900,1
    - Dst: dnsdist_ffi_ring_entry_get_backend
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:900,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:901,1
    - Dst: dnsdist_ffi_ring_entry_get_protocol
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:901,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:902,1
    - Dst: dnsdist_ffi_ring_entry_get_size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:902,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:903,1
    - Dst: dnsdist_ffi_ring_entry_get_latency
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:903,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:904,1
    - Dst: dnsdist_ffi_ring_entry_get_id
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:904,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:905,1
    - Dst: dnsdist_ffi_ring_entry_get_rcode
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:905,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:906,1
    - Dst: dnsdist_ffi_ring_entry_get_aa
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:906,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:907,1
    - Dst: dnsdist_ffi_ring_entry_get_rd
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:907,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:908,1
    - Dst: dnsdist_ffi_ring_entry_get_tc
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:908,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:909,1
    - Dst: dnsdist_ffi_ring_entry_get_ancount
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:909,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:910,1
    - Dst: dnsdist_ffi_ring_entry_get_nscount
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:910,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:911,1
    - Dst: dnsdist_ffi_ring_entry_get_arcount
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:911,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:912,1
    - Dst: dnsdist_ffi_ring_entry_has_mac_address
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:912,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:913,1
    - Dst: dnsdist_ffi_ring_entry_get_mac_address
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:913,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:916,1
    - Dst: dnsdist_ffi_ring_get_entries
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:916,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:917,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:919,1
    - Dst: dnsdist_ffi_ring_entry_is_response
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:919,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:920,1
    - Dst: dnsdist_ffi_ring_entry_is_response
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:920,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:923,1
    - Dst: dnsdist_ffi_ring_entry_get_age
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:923,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:924,1
    - Dst: dnsdist_ffi_ring_entry_get_age
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:924,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:925,1
    - Dst: dnsdist_ffi_ring_entry_get_name
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:925,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:925,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:926,1
    - Dst: dnsdist_ffi_ring_entry_get_type
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:926,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:927,1
    - Dst: dnsdist_ffi_ring_entry_get_requestor
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:927,1
    - Dst: ComboAddress::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:927,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:928,1
    - Dst: dnsdist_ffi_ring_entry_get_protocol
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:928,1
    - Dst: dnsdist::Protocol::toNumber
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:928,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:929,1
    - Dst: dnsdist_ffi_ring_entry_get_size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:929,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:930,1
    - Dst: dnsdist_ffi_ring_entry_get_id
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:930,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:931,1
    - Dst: dnsdist_ffi_ring_entry_get_aa
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:931,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:932,1
    - Dst: dnsdist_ffi_ring_entry_get_rd
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:932,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:933,1
    - Dst: dnsdist_ffi_ring_entry_get_tc
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:933,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:934,1
    - Dst: dnsdist_ffi_ring_entry_get_ancount
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:934,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:935,1
    - Dst: dnsdist_ffi_ring_entry_get_nscount
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:935,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:936,1
    - Dst: dnsdist_ffi_ring_entry_get_arcount
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:936,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:937,1
    - Dst: dnsdist_ffi_ring_entry_get_rcode
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:937,1
    - Dst: dnsdist_ffi_ring_entry_is_response
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:938,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:939,1
    - Dst: dnsdist_ffi_ring_entry_get_backend
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:939,1
    - Dst: ComboAddress::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:939,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:940,1
    - Dst: dnsdist_ffi_ring_entry_get_latency
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:940,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:942,1
    - Dst: dnsdist_ffi_ring_entry_has_mac_address
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:942,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:943,1
    - Dst: dnsdist_ffi_ring_entry_get_mac_address
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:943,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:943,1
    - Dst: dnsdist_ffi_ring_entry_list_free
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:946,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:950,1
    - Dst: dnsdist_ffi_ring_get_entries_by_addr
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:950,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:951,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:953,1
    - Dst: dnsdist_ffi_ring_get_entries_by_addr
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:953,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:953,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:954,1
    - Dst: dnsdist_ffi_ring_entry_list_free
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:955,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 78
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 957
      start: 850
    functionDepth: 2
    functionLinenumber: 850
    functionLinenumberEnd: 957
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - dnsdist_ffi_ring_entry_get_age
    - dnsdist_ffi_ring_entry_get_protocol
    - dnsdist_ffi_ring_entry_get_tc
    - dnsdist_ffi_ring_entry_has_mac_address
    - dnsdist_ffi_ring_entry_get_rd
    - dnsdist_ffi_ring_get_entries_by_addr
    - dnsdist_ffi_ring_entry_get_ancount
    - DNSName::toString
    - std::string
    - dnsdist_ffi_ring_entry_get_arcount
    - reset
    - dnsdist_ffi_ring_entry_get_backend
    - dnsdist_ffi_ring_entry_get_mac_address
    - memset
    - insertQuery
    - dnsdist_ffi_ring_get_entries_by_mac
    - dnsdist_ffi_ring_entry_is_response
    - getNumberOfQueryEntries
    - insertResponse
    - BOOST_REQUIRE_EQUAL
    - htons
    - dnsdist::Protocol::toNumber
    - DNSName
    - dnsdist_ffi_ring_entry_list_free
    - gettime
    - dnsdist_ffi_ring_entry_get_latency
    - dnsdist_ffi_ring_entry_get_nscount
    - dnsdist_ffi_ring_entry_get_size
    - dnsdist_ffi_ring_entry_get_requestor
    - ComboAddress::toStringWithPort
    - dnsdist_ffi_ring_entry_get_id
    - dnsdist_ffi_ring_entry_get_rcode
    - init
    - dnsdist_ffi_ring_entry_get_aa
    - BOOST_CHECK_EQUAL
    - dnsdist_ffi_ring_entry_get_name
    - dnsdist_ffi_ring_get_entries
    - ComboAddress::toString
    - BOOST_CHECK
    - dnsdist_ffi_ring_entry_get_type
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_RingBuffers)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:963,1
    - Dst: dnsdist_ffi_network_endpoint_new
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:963,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:964,1
    - Dst: dnsdist_ffi_network_endpoint_new
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:964,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:965,1
    - Dst: dnsdist_ffi_network_endpoint_new
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:965,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:967,1
    - Dst: dnsdist_ffi_network_endpoint_new
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:967,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:971,1
    - Dst: dnsdist_ffi_network_endpoint_is_valid
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:971,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:976,1
    - Dst: dnsdist_ffi_network_endpoint_send
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:976,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:977,1
    - Dst: dnsdist_ffi_network_endpoint_send
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:977,1
    - Dst: dnsdist_ffi_network_endpoint_free
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:981,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 983
      start: 959
    functionDepth: 1
    functionLinenumber: 959
    functionLinenumberEnd: 983
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - dnsdist_ffi_network_endpoint_new
    - dnsdist_ffi_network_endpoint_send
    - dnsdist_ffi_network_endpoint_is_valid
    - BOOST_CHECK
    - dnsdist_ffi_network_endpoint_free
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_NetworkEndpoint)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:993,1
    - Dst: dnsdist_ffi_hash
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:993,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:994,1
    - Dst: dnsdist_ffi_hash
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:994,1
    - Dst: dnsdist_ffi_hash
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:998,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:998,1
    - Dst: std::array::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:998,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:999,1
    - Dst: burtle
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:999,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:999,1
    - Dst: std::array::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:999,1
    - Dst: BOOST_CHECK_NE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1000,1
    - Dst: burtle
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1000,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1000,1
    - Dst: std::array::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1000,1
    - Dst: BOOST_CHECK_NE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1001,1
    - Dst: burtleCI
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1001,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1001,1
    - Dst: std::array::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1001,1
    - Dst: dnsdist_ffi_hash
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1005,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1005,1
    - Dst: std::array::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1005,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1006,1
    - Dst: burtleCI
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1006,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1006,1
    - Dst: std::array::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1006,1
    - Dst: BOOST_CHECK_NE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1007,1
    - Dst: burtle
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1007,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1007,1
    - Dst: std::array::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1007,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1008,1
    - Dst: burtleCI
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1008,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1008,1
    - Dst: std::array::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1008,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1010
      start: 985
    functionDepth: 1
    functionLinenumber: 985
    functionLinenumberEnd: 1010
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - burtleCI
    - BOOST_CHECK_NE
    - BOOST_CHECK_EQUAL
    - dnsdist_ffi_hash
    - burtle
    - std::array::data
    - std::array::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_hash)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1018,1
    - Dst: dnsdist_ffi_svc_record_parameters_new
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1018,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1019,1
    - Dst: dnsdist_ffi_svc_record_parameters_new
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1019,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1022,1
    - Dst: dnsdist_ffi_svc_record_parameters_new
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1022,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1023,1
    - Dst: dnsdist_ffi_svc_record_parameters_set_port
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1027,1
    - Dst: dnsdist_ffi_svc_record_parameters_set_ech
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1028,1
    - Dst: dnsdist_ffi_svc_record_parameters_set_additional_param
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1029,1
    - Dst: dnsdist_ffi_svc_record_parameters_set_additional_param
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1030,1
    - Dst: dnsdist_ffi_svc_record_parameters_add_mandatory_param
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1031,1
    - Dst: dnsdist_ffi_svc_record_parameters_add_alpn
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1032,1
    - Dst: dnsdist_ffi_svc_record_parameters_add_alpn
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1033,1
    - Dst: dnsdist_ffi_svc_record_parameters_add_ipv4_hint
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1034,1
    - Dst: dnsdist_ffi_svc_record_parameters_add_ipv4_hint
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1035,1
    - Dst: dnsdist_ffi_svc_record_parameters_add_ipv6_hint
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1036,1
    - Dst: dnsdist_ffi_svc_record_parameters_add_ipv6_hint
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1037,1
    - Dst: dnsdist_ffi_dnsquestion_generate_svc_response
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1038,1
    - Dst: dnsdist_ffi_svc_record_parameters_set_port
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1041,1
    - Dst: dnsdist_ffi_svc_record_parameters_set_ech
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1042,1
    - Dst: dnsdist_ffi_svc_record_parameters_set_additional_param
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1043,1
    - Dst: dnsdist_ffi_svc_record_parameters_add_mandatory_param
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1044,1
    - Dst: dnsdist_ffi_svc_record_parameters_add_alpn
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1045,1
    - Dst: dnsdist_ffi_svc_record_parameters_add_ipv4_hint
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1046,1
    - Dst: dnsdist_ffi_svc_record_parameters_add_ipv6_hint
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1047,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1051,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1052,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1056,1
    - Dst: InternalQueryState::queryRealTime::start
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1057,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1060,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1061,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1061,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1066,1
    - Dst: dnsdist_ffi_dnsquestion_generate_svc_response
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1066,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1066,1
    - Dst: std::array::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1066,1
    - Dst: dnsdist_ffi_svc_record_parameters_free
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1069,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 38
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1070
      start: 1012
    functionDepth: 2
    functionLinenumber: 1012
    functionLinenumberEnd: 1070
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - dnsdist_ffi_svc_record_parameters_free
    - GenericDNSPacketWriter::getHeader
    - dnsdist_ffi_svc_record_parameters_add_alpn
    - dnsdist_ffi_svc_record_parameters_add_mandatory_param
    - dnsdist_ffi_svc_record_parameters_set_port
    - BOOST_REQUIRE
    - BOOST_REQUIRE_EQUAL
    - htons
    - dnsdist_ffi_svc_record_parameters_set_ech
    - dnsdist_ffi_svc_record_parameters_new
    - DNSName
    - std::array::data
    - dnsdist_ffi_dnsquestion_generate_svc_response
    - ComboAddress
    - dnsdist_ffi_svc_record_parameters_add_ipv6_hint
    - BOOST_CHECK_EQUAL
    - InternalQueryState::queryRealTime::start
    - dnsdist_ffi_svc_record_parameters_set_additional_param
    - dnsdist_ffi_svc_record_parameters_add_ipv4_hint
    - std::array::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_SVC_Generation)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1076,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1077,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1081,1
    - Dst: InternalQueryState::queryRealTime::start
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1082,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1085,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1086,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1086,1
    - Dst: dnsdist_ffi_dnsquestion_meta_begin_key
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1095,1
    - Dst: dnsdist_ffi_dnsquestion_meta_begin_key
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1096,1
    - Dst: dnsdist_ffi_dnsquestion_meta_begin_key
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1097,1
    - Dst: dnsdist_ffi_dnsquestion_meta_add_str_value_to_key
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1098,1
    - Dst: dnsdist_ffi_dnsquestion_meta_add_str_value_to_key
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1099,1
    - Dst: dnsdist_ffi_dnsquestion_meta_add_str_value_to_key
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1100,1
    - Dst: dnsdist_ffi_dnsquestion_meta_add_int64_value_to_key
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1101,1
    - Dst: dnsdist_ffi_dnsquestion_meta_end_key
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1102,1
    - Dst: dnsdist_ffi_dnsresponse_meta_begin_key
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1104,1
    - Dst: dnsdist_ffi_dnsresponse_meta_begin_key
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1105,1
    - Dst: dnsdist_ffi_dnsresponse_meta_begin_key
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1106,1
    - Dst: dnsdist_ffi_dnsresponse_meta_add_str_value_to_key
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1107,1
    - Dst: dnsdist_ffi_dnsresponse_meta_add_str_value_to_key
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1108,1
    - Dst: dnsdist_ffi_dnsresponse_meta_add_str_value_to_key
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1109,1
    - Dst: dnsdist_ffi_dnsresponse_meta_add_int64_value_to_key
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1110,1
    - Dst: dnsdist_ffi_dnsresponse_meta_end_key
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1111,1
    - Dst: dnsdist_ffi_dnsquestion_meta_end_key
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1116,1
    - Dst: dnsdist_ffi_dnsresponse_meta_end_key
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1117,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1124,1
    - Dst: DNSQuestion::ids::d_rawProtobufContent::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1124,1
    - Dst: dnsdist_ffi_dnsquestion_meta_begin_key
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1125,1
    - Dst: std::string::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1125,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1125,1
    - Dst: dnsdist_ffi_dnsquestion_meta_begin_key
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1127,1
    - Dst: std::string::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1127,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1127,1
    - Dst: dnsdist_ffi_dnsquestion_meta_add_str_value_to_key
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1128,1
    - Dst: std::string::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1128,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1128,1
    - Dst: dnsdist_ffi_dnsquestion_meta_add_int64_value_to_key
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1129,1
    - Dst: dnsdist_ffi_dnsquestion_meta_add_str_value_to_key
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1130,1
    - Dst: std::string::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1130,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1130,1
    - Dst: dnsdist_ffi_dnsquestion_meta_add_int64_value_to_key
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1131,1
    - Dst: dnsdist_ffi_dnsquestion_meta_end_key
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1132,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1133,1
    - Dst: DNSQuestion::ids::d_rawProtobufContent::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1133,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1134,1
    - Dst: Base64Encode
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1134,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1135,1
    - Dst: DNSResponse::ids::d_rawProtobufContent::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1135,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1136,1
    - Dst: Base64Encode
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1136,1
    - Dst: DNSResponse::ids::d_rawProtobufContent::clear
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1144,1
    - Dst: dnsdist_ffi_dnsresponse_meta_begin_key
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1145,1
    - Dst: std::string::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1145,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1145,1
    - Dst: dnsdist_ffi_dnsresponse_meta_begin_key
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1147,1
    - Dst: std::string::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1147,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1147,1
    - Dst: dnsdist_ffi_dnsresponse_meta_add_str_value_to_key
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1148,1
    - Dst: std::string::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1148,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1148,1
    - Dst: dnsdist_ffi_dnsresponse_meta_add_int64_value_to_key
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1149,1
    - Dst: dnsdist_ffi_dnsresponse_meta_add_str_value_to_key
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1150,1
    - Dst: std::string::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1150,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1150,1
    - Dst: dnsdist_ffi_dnsresponse_meta_add_int64_value_to_key
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1151,1
    - Dst: dnsdist_ffi_dnsresponse_meta_end_key
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1152,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1153,1
    - Dst: DNSResponse::ids::d_rawProtobufContent::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1153,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1154,1
    - Dst: Base64Encode
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1154,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 54
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1156
      start: 1073
    functionDepth: 2
    functionLinenumber: 1073
    functionLinenumberEnd: 1156
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - GenericDNSPacketWriter::getHeader
    - dnsdist_ffi_dnsresponse_meta_end_key
    - std::string::size
    - DNSResponse::ids::d_rawProtobufContent::clear
    - dnsdist_ffi_dnsquestion_meta_add_str_value_to_key
    - dnsdist_ffi_dnsresponse_meta_begin_key
    - DNSQuestion::ids::d_rawProtobufContent::size
    - htons
    - DNSResponse::ids::d_rawProtobufContent::size
    - dnsdist_ffi_dnsquestion_meta_begin_key
    - std::string::data
    - DNSName
    - ComboAddress
    - BOOST_CHECK_EQUAL
    - dnsdist_ffi_dnsquestion_meta_add_int64_value_to_key
    - InternalQueryState::queryRealTime::start
    - dnsdist_ffi_dnsresponse_meta_add_str_value_to_key
    - dnsdist_ffi_dnsresponse_meta_add_int64_value_to_key
    - dnsdist_ffi_dnsquestion_meta_end_key
    - Base64Encode
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_meta_values)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1163,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1164,1
    - Dst: InternalQueryState::queryRealTime::start
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1169,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1172,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1173,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1173,1
    - Dst: dnsdist_ffi_dnsquestion_set_alternate_name
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1180,1
    - Dst: dnsdist_ffi_dnsquestion_set_alternate_name
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1181,1
    - Dst: dnsdist_ffi_dnsquestion_set_alternate_name
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1182,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1189,1
    - Dst: dnsdist_ffi_dnsquestion_set_alternate_name
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1189,1
    - Dst: DNSName::getStorage
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1189,1
    - Dst: DNSName::getStorage
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1189,1
    - Dst: std::string::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1189,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1189,1
    - Dst: std::string::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1189,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1189,1
    - Dst: std::string::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1189,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1189,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1191,1
    - Dst: InternalQueryState::qname::toString
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1191,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1191,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1192,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1193,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1194,1
    - Dst: InternalQueryState::qTag::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1194,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1195,1
    - Dst: InternalQueryState::qTag::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1195,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1195,1
    - Dst: DNSName::getStorage
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1195,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1198,1
    - Dst: DNSQuestion::getData
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1198,1
    - Dst: DNSQuestion::getData
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1198,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1199,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1200,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1203,1
    - Dst: dnsdist_ffi_dnsquestion_set_alternate_name
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1203,1
    - Dst: DNSName::getStorage
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1203,1
    - Dst: DNSName::getStorage
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1203,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1206,1
    - Dst: dnsdist_ffi_dnsquestion_set_alternate_name
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1206,1
    - Dst: DNSName::getStorage
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1206,1
    - Dst: DNSName::getStorage
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1206,1
    - Dst: std::string::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1206,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1206,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 24
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1207
      start: 1159
    functionDepth: 3
    functionLinenumber: 1159
    functionLinenumberEnd: 1207
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - DNSName::getStorage
    - DNSQuestion::getData
    - BOOST_CHECK
    - GenericDNSPacketWriter::getHeader
    - std::string::data
    - ComboAddress
    - BOOST_CHECK_EQUAL
    - InternalQueryState::qTag::at
    - DNSName::toString
    - reinterpret_cast<const char*>
    - InternalQueryState::queryRealTime::start
    - BOOST_REQUIRE
    - std::string
    - std::string::size
    - dnsdist_ffi_dnsquestion_set_alternate_name
    - InternalQueryState::qname::toString
    - htons
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_set_altername_name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1212,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1213,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1217,1
    - Dst: InternalQueryState::queryRealTime::start
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1218,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1221,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1222,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1222,1
    - Dst: dnsdist_ffi_dnsquestion_get_masked_remoteaddr
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1230,1
    - Dst: reinterpret_cast<dnsdist_ffi_dnsquestion_t*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1230,1
    - Dst: reinterpret_cast<const void**>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1230,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1231,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc:1232,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1233
      start: 1209
    functionDepth: 2
    functionLinenumber: 1209
    functionLinenumberEnd: 1233
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc
    functionUses: 0
    functionsReached:
    - GenericDNSPacketWriter::getHeader
    - reinterpret_cast<const void**>
    - DNSName
    - ComboAddress
    - BOOST_CHECK_EQUAL
    - dnsdist_ffi_dnsquestion_get_masked_remoteaddr
    - InternalQueryState::queryRealTime::start
    - BOOST_CHECK
    - reinterpret_cast<dnsdist_ffi_dnsquestion_t*>
    - htons
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(query_response_pointer_mismatch)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: emplace_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-rings.cc:48,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-rings.cc:48,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-rings.cc:48,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-rings.cc:48,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-rings.cc:48,1
    - Dst: macaddress::data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-rings.cc:48,1
    - Dst: macaddress::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-rings.cc:48,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-rings.cc:48,1
    - Dst: emplace_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-rings.cc:50,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-rings.cc:50,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-rings.cc:50,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-rings.cc:50,1
    - Dst: emplace_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-rings.cc:54,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-rings.cc:54,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-rings.cc:54,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - ' list'
    - ' entry'
    argTypes:
    - LuaArray<LuaRingEntry>
    - T
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 56
    functionName: addRingEntryToList
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-rings.cc
    functionUses: 5
    functionsReached:
    - macaddress::size
    - size
    - reinterpret_cast<const char*>
    - macaddress::data
    - emplace_back
    - std::string
    - ComboAddress
    linkageType: ''
    returnType: void
    signature: void addRingEntryToList(LuaArray<LuaRingEntry>& list, const T& entry)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-rings.cc:63,1
    - Dst: queryRing::lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-rings.cc:72,1
    - Dst: addRingEntryToList
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-rings.cc:74,1
    - Dst: respRing::lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-rings.cc:78,1
    - Dst: addRingEntryToList
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-rings.cc:80,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-rings.cc:88,1
    - Dst: registerMember
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-rings.cc:88,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-rings.cc:88,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-rings.cc:92,1
    - Dst: registerMember
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-rings.cc:92,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-rings.cc:92,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-rings.cc:96,1
    - Dst: registerMember
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-rings.cc:96,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-rings.cc:96,1
    - Dst: timespec
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-rings.cc:100,1
    - Dst: registerMember
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-rings.cc:100,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-rings.cc:100,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-rings.cc:104,1
    - Dst: registerMember
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-rings.cc:104,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-rings.cc:104,1
    - Dst: dnsheader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-rings.cc:108,1
    - Dst: registerMember
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-rings.cc:108,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-rings.cc:108,1
    - Dst: registerMember
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-rings.cc:112,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-rings.cc:112,1
    - Dst: registerMember
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-rings.cc:116,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-rings.cc:116,1
    - Dst: registerMember
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-rings.cc:120,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-rings.cc:120,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-rings.cc:124,1
    - Dst: registerMember
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-rings.cc:124,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-rings.cc:124,1
    - Dst: protocol::toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-rings.cc:125,1
    - Dst: registerMember
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-rings.cc:128,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-rings.cc:128,1
    - Dst: registerMember
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-rings.cc:132,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-rings.cc:132,1
    - Dst: registerMember
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-rings.cc:136,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-rings.cc:136,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 53
    argCount: 2
    argNames:
    - ' luaCtx'
    - client
    argTypes:
    - LuaContext
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 141
      start: 60
    functionDepth: 0
    functionLinenumber: 60
    functionLinenumberEnd: 141
    functionName: setupLuaBindingsRings
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-rings.cc
    functionUses: 0
    functionsReached:
    - queryRing::lock
    - dnsheader
    - protocol::toString
    - DNSName
    - registerMember
    - addRingEntryToList
    - std::string
    - writeFunction
    - timespec
    - respRing::lock
    - ComboAddress
    linkageType: ''
    returnType: void
    signature: void setupLuaBindingsRings(LuaContext& luaCtx, bool client)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 45
    functionDepth: 0
    functionLinenumber: 45
    functionLinenumberEnd: 45
    functionName: DOQFrontend
    functionSourceFile: /src/pdns/pdns/dnsdistdist/doq.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void DOQFrontend(const DOQFrontend&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 46
    functionDepth: 0
    functionLinenumber: 46
    functionLinenumberEnd: 46
    functionName: DOQFrontend
    functionSourceFile: /src/pdns/pdns/dnsdistdist/doq.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void DOQFrontend(DOQFrontend&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 47
    functionDepth: 0
    functionLinenumber: 47
    functionLinenumberEnd: 47
    functionName: '& operator=(const DOQFrontend&)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/doq.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: DOQFrontend
    signature: DOQFrontend & operator=(const DOQFrontend&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 48
    functionDepth: 0
    functionLinenumber: 48
    functionLinenumberEnd: 48
    functionName: '& operator=(DOQFrontend&&)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/doq.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: DOQFrontend
    signature: DOQFrontend & operator=(DOQFrontend&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 53
    functionDepth: 0
    functionLinenumber: 53
    functionLinenumberEnd: 56
    functionName: '& getLogger()'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/doq.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Logr::Logger
    signature: Logr::Logger & getLogger()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/doq.hh:80,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 1
    argNames:
    - ' query_'
    argTypes:
    - PacketBuffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 79
    functionDepth: 0
    functionLinenumber: 79
    functionLinenumberEnd: 82
    functionName: DOQUnit
    functionSourceFile: /src/pdns/pdns/dnsdistdist/doq.hh
    functionUses: 3
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void DOQUnit(PacketBuffer&& query_)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 84
    functionDepth: 0
    functionLinenumber: 84
    functionLinenumberEnd: 84
    functionName: DOQUnit
    functionSourceFile: /src/pdns/pdns/dnsdistdist/doq.hh
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void DOQUnit(const DOQUnit&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 85
    functionDepth: 0
    functionLinenumber: 85
    functionLinenumberEnd: 85
    functionName: '& operator=(const DOQUnit&)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/doq.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: DOQUnit
    signature: DOQUnit & operator=(const DOQUnit&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 119
      start: 117
    functionDepth: 0
    functionLinenumber: 117
    functionLinenumberEnd: 119
    functionName: DOQFrontend
    functionSourceFile: /src/pdns/pdns/dnsdistdist/doq.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void DOQFrontend()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 122
      start: 120
    functionDepth: 0
    functionLinenumber: 120
    functionLinenumberEnd: 122
    functionName: setup
    functionSourceFile: /src/pdns/pdns/dnsdistdist/doq.hh
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setup()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: std::make_unique<QTag>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-idstate.cc:51,1
    - Dst: std::make_unique<InternalQueryState::ProtoBufData>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-idstate.cc:54,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 22
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 32
    functionDepth: 0
    functionLinenumber: 32
    functionLinenumberEnd: 63
    functionName: InternalQueryState::partialCloneForXFR
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-idstate.cc
    functionUses: 0
    functionsReached:
    - std::make_unique<QTag>
    - std::make_unique<InternalQueryState::ProtoBufData>
    linkageType: ''
    returnType: InternalQueryState
    signature: InternalQueryState InternalQueryState::partialCloneForXFR() const
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-idstate.cc:69,1
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-idstate.cc:69,1
    - Dst: string::clear
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-idstate.cc:75,1
    - Dst: getOTProtobuf
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-idstate.cc:79,1
    - Dst: pdns::ProtoZero::Message::setOpenTelemetryData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-idstate.cc:80,1
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-idstate.cc:83,1
    - Dst: second::queueData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-idstate.cc:87,1
    - Dst: second::queueData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-idstate.cc:92,1
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-idstate.cc:96,1
    - Dst: string::clear
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-idstate.cc:97,1
    - Dst: pdns::ProtoZero::Message::setType
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-idstate.cc:99,1
    - Dst: pdns::ProtoZero::Message::setOpenTelemetryData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-idstate.cc:100,1
    - Dst: queueData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-idstate.cc:102,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 27
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 111
      start: 65
    functionDepth: 1
    functionLinenumber: 65
    functionLinenumberEnd: 111
    functionName: InternalQueryState::~InternalQueryState()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-idstate.cc
    functionUses: 0
    functionsReached:
    - getOTProtobuf
    - queueData
    - second::queueData
    - pdns::ProtoZero::Message::setOpenTelemetryData
    - empty
    - string::clear
    - pdns::ProtoZero::Message::setType
    linkageType: ''
    returnType: void
    signature: void InternalQueryState::~InternalQueryState()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: getTracer
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-idstate.cc:120,1
    - Dst: openSpan
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-idstate.cc:121,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-idstate.cc:121,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 2
    argNames:
    - ' name'
    - ' parentSpanID'
    argTypes:
    - std::string_view
    - SpanID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 125
      start: 113
    functionDepth: 0
    functionLinenumber: 113
    functionLinenumberEnd: 125
    functionName: InternalQueryState::getCloser
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-idstate.cc
    functionUses: 0
    functionsReached:
    - getTracer
    - std::string
    - openSpan
    linkageType: ''
    returnType: std::optional<pdns::trace::dnsdist::Tracer::Closer>
    signature: std::optional<pdns::trace::dnsdist::Tracer::Closer> InternalQueryState::getCloser([[maybe_unused]]
      const std::string_view& name, [[maybe_unused]] const SpanID& parentSpanID)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: getTracer
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-idstate.cc:131,1
    - Dst: getLastSpanIDForName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-idstate.cc:132,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-idstate.cc:132,1
    - Dst: InternalQueryState::getCloser
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-idstate.cc:133,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - ' name'
    - ' parentSpanName'
    argTypes:
    - std::string_view
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 137
      start: 127
    functionDepth: 1
    functionLinenumber: 127
    functionLinenumberEnd: 137
    functionName: InternalQueryState::getCloser
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-idstate.cc
    functionUses: 1
    functionsReached:
    - getTracer
    - std::string
    - InternalQueryState::getCloser
    - getLastSpanIDForName
    linkageType: ''
    returnType: std::optional<pdns::trace::dnsdist::Tracer::Closer>
    signature: std::optional<pdns::trace::dnsdist::Tracer::Closer> InternalQueryState::getCloser([[maybe_unused]]
      const std::string_view& name, [[maybe_unused]] const std::string_view& parentSpanName)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: getTracer
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-idstate.cc:143,1
    - Dst: InternalQueryState::getCloser
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-idstate.cc:144,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-idstate.cc:144,1
    - Dst: getLastSpanID
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-idstate.cc:144,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - ' name'
    argTypes:
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 148
      start: 139
    functionDepth: 1
    functionLinenumber: 139
    functionLinenumberEnd: 148
    functionName: InternalQueryState::getCloser
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-idstate.cc
    functionUses: 2
    functionsReached:
    - getTracer
    - std::string
    - InternalQueryState::getCloser
    - getLastSpanID
    linkageType: ''
    returnType: std::optional<pdns::trace::dnsdist::Tracer::Closer>
    signature: std::optional<pdns::trace::dnsdist::Tracer::Closer> InternalQueryState::getCloser([[maybe_unused]]
      const std::string_view& name)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: getTracer
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-idstate.cc:158,1
    - Dst: getLastSpanID
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-idstate.cc:159,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-idstate.cc:160,1
    - Dst: openSpan
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-idstate.cc:161,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 2
    argNames:
    - ' ruleName'
    - ' ruleType'
    argTypes:
    - std::string_view
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 165
      start: 150
    functionDepth: 0
    functionLinenumber: 150
    functionLinenumberEnd: 165
    functionName: InternalQueryState::getRulesCloser
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-idstate.cc
    functionUses: 0
    functionsReached:
    - getTracer
    - std::string
    - openSpan
    - getLastSpanID
    linkageType: ''
    returnType: std::optional<pdns::trace::dnsdist::Tracer::Closer>
    signature: std::optional<pdns::trace::dnsdist::Tracer::Closer> InternalQueryState::getRulesCloser([[maybe_unused]]
      const std::string_view& ruleName, [[maybe_unused]] const std::string& ruleType)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-idstate.cc:170,1
    - Dst: std::shared_ptr<const Logr::Logger>::withValues
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-idstate.cc:172,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-idstate.cc:172,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-idstate.cc:172,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-idstate.cc:172,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-idstate.cc:172,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-idstate.cc:172,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-idstate.cc:172,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-idstate.cc:172,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-idstate.cc:172,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-idstate.cc:172,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - parent
    argTypes:
    - std::shared_ptr<const Logr::Logger>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 174
      start: 167
    functionDepth: 1
    functionLinenumber: 167
    functionLinenumberEnd: 174
    functionName: InternalQueryState::getLogger
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-idstate.cc
    functionUses: 0
    functionsReached:
    - ntohs
    - std::shared_ptr<const Logr::Logger>::withValues
    - dnsdist::logging::getTopLogger
    - Logging::Loggable
    linkageType: ''
    returnType: std::shared_ptr<const Logr::Logger>
    signature: std::shared_ptr<const Logr::Logger> InternalQueryState::getLogger(std::shared_ptr<const
      Logr::Logger> parent) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 33
      start: 30
    functionDepth: 0
    functionLinenumber: 30
    functionLinenumberEnd: 33
    functionName: TLSFrontend::setupTLS
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool TLSFrontend::setupTLS()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - ' dnsQuestion'
    - ' reason'
    argTypes:
    - DNSQuestion
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 36
    functionDepth: 0
    functionLinenumber: 36
    functionLinenumberEnd: 41
    functionName: DNSDistSNMPAgent::sendDNSTrap
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool DNSDistSNMPAgent::sendDNSTrap(const DNSQuestion& dnsQuestion,
      const std::string& reason)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 45
    functionName: setLuaNoSideEffect
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setLuaNoSideEffect()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ' tlsCtx'
    argTypes:
    - std::shared_ptr<TLSCtx>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 47
    functionDepth: 0
    functionLinenumber: 47
    functionLinenumberEnd: 51
    functionName: setupDoTProtocolNegotiation
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool setupDoTProtocolNegotiation(std::shared_ptr<TLSCtx>& tlsCtx)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - dss
    argTypes:
    - std::shared_ptr<DownstreamState>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 54
    functionDepth: 0
    functionLinenumber: 54
    functionLinenumberEnd: 57
    functionName: responderThread
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void responderThread(std::shared_ptr<DownstreamState> dss)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:66,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:67,1
    - Dst: InternalQueryState::queryRealTime::start
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:72,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 61
    functionDepth: 1
    functionLinenumber: 61
    functionLinenumberEnd: 76
    functionName: getDQ
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc
    functionUses: 4
    functionsReached:
    - InternalQueryState::queryRealTime::start
    - ComboAddress
    linkageType: ''
    returnType: DNSQuestion
    signature: DNSQuestion getDQ(const DNSName* providedName = nullptr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::vector::reserve
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:82,1
    - Dst: std::vector::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:84,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:84,1
    - Dst: ServerPolicy::NumberedServerVector::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:88,1
    - Dst: std::make_shared<DownstreamState>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:88,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:88,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:88,1
    - Dst: ServerPolicy::NumberedServerVector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:89,1
    - Dst: setUp
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:89,1
    - Dst: ServerPolicy::NumberedServerVector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:91,1
    - Dst: setWeight
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:91,1
    - Dst: ServerPolicy::NumberedServerVector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:93,1
    - Dst: hash
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:93,1
    - Dst: StopWatch::start
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:97,1
    - Dst: getDQ
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:100,1
    - Dst: getSelectedBackend
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:101,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:104,1
    - Dst: StopWatch::udiff
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:104,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:104,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 1
    argNames:
    - ' pol'
    argTypes:
    - ServerPolicy
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 78
    functionDepth: 2
    functionLinenumber: 78
    functionLinenumberEnd: 108
    functionName: benchPolicy
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc
    functionUses: 0
    functionsReached:
    - setUp
    - hash
    - std::vector::size
    - std::to_string
    - ServerPolicy::NumberedServerVector::at
    - getSelectedBackend
    - setWeight
    - std::vector::emplace_back
    - getDQ
    - StopWatch::udiff
    - std::vector::reserve
    - std::make_shared<DownstreamState>
    - StopWatch::start
    - ServerPolicy::NumberedServerVector::emplace_back
    - ComboAddress
    linkageType: ''
    returnType: void
    signature: void benchPolicy(const ServerPolicy& pol)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::configuration::updateRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:114,1
    - Dst: std::make_shared<ServerPolicy>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:115,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:118,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:118,1
    - Dst: getName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:118,1
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:119,1
    - Dst: LuaContext
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:119,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 110
    functionDepth: 3
    functionLinenumber: 110
    functionLinenumberEnd: 120
    functionName: resetLuaContext
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc
    functionUses: 0
    functionsReached:
    - dnsdist::configuration::getCurrentRuntimeConfiguration
    - getName
    - dnsdist::configuration::updateRuntimeConfiguration
    - LuaContext
    - lock
    - std::make_shared<ServerPolicy>
    - BOOST_REQUIRE_EQUAL
    linkageType: ''
    returnType: void
    signature: void resetLuaContext()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getDQ
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:127,1
    - Dst: ServerPolicy::NumberedServerVector::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:131,1
    - Dst: std::make_shared<DownstreamState>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:131,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:131,1
    - Dst: ServerPolicy::getSelectedBackend
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:134,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:135,1
    - Dst: ServerPolicy::NumberedServerVector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:138,1
    - Dst: setUp
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:138,1
    - Dst: ServerPolicy::getSelectedBackend
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:139,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:140,1
    - Dst: ServerPolicy::NumberedServerVector::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:143,1
    - Dst: std::make_shared<DownstreamState>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:143,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:143,1
    - Dst: ServerPolicy::getSelectedBackend
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:144,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:145,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:146,1
    - Dst: ServerPolicy::NumberedServerVector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:146,1
    - Dst: ServerPolicy::NumberedServerVector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:149,1
    - Dst: setDown
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:149,1
    - Dst: ServerPolicy::NumberedServerVector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:150,1
    - Dst: setUp
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:150,1
    - Dst: ServerPolicy::getSelectedBackend
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:151,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:152,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:153,1
    - Dst: ServerPolicy::NumberedServerVector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:153,1
    - Dst: benchPolicy
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:155,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 156
      start: 125
    functionDepth: 3
    functionLinenumber: 125
    functionLinenumberEnd: 156
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc
    functionUses: 0
    functionsReached:
    - setUp
    - ServerPolicy::NumberedServerVector::at
    - setDown
    - getDQ
    - benchPolicy
    - ServerPolicy::getSelectedBackend
    - BOOST_REQUIRE
    - std::make_shared<DownstreamState>
    - BOOST_CHECK
    - ServerPolicy::NumberedServerVector::emplace_back
    - ComboAddress
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_firstAvailable)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getDQ
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:160,1
    - Dst: ServerPolicy::NumberedServerVector::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:165,1
    - Dst: std::make_shared<DownstreamState>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:165,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:165,1
    - Dst: ServerPolicy::NumberedServerVector::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:166,1
    - Dst: std::make_shared<DownstreamState>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:166,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:166,1
    - Dst: ServerPolicy::NumberedServerVector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:171,1
    - Dst: ServerPolicy::NumberedServerVector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:172,1
    - Dst: ServerPolicy::NumberedServerVector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:173,1
    - Dst: QPSLimiter
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:173,1
    - Dst: ServerPolicy::NumberedServerVector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:175,1
    - Dst: setUp
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:175,1
    - Dst: ServerPolicy::NumberedServerVector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:176,1
    - Dst: setUp
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:176,1
    - Dst: ServerPolicy::getSelectedBackend
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:181,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:182,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:183,1
    - Dst: ServerPolicy::NumberedServerVector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:183,1
    - Dst: auto::incQueriesCount
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:184,1
    - Dst: ServerPolicy::getSelectedBackend
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:189,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:190,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:191,1
    - Dst: ServerPolicy::NumberedServerVector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:191,1
    - Dst: auto::incQueriesCount
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:192,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 194
      start: 158
    functionDepth: 2
    functionLinenumber: 158
    functionLinenumberEnd: 194
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc
    functionUses: 0
    functionsReached:
    - setUp
    - auto::incQueriesCount
    - ServerPolicy::NumberedServerVector::at
    - QPSLimiter
    - getDQ
    - ServerPolicy::getSelectedBackend
    - BOOST_REQUIRE
    - std::make_shared<DownstreamState>
    - BOOST_CHECK
    - ServerPolicy::NumberedServerVector::emplace_back
    - ComboAddress
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_firstAvailableWithOrderAndQPS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getDQ
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:198,1
    - Dst: dnsdist::configuration::updateRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:204,1
    - Dst: ServerPolicy::getSelectedBackend
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:207,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:208,1
    - Dst: ServerPolicy::NumberedServerVector::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:210,1
    - Dst: std::make_shared<DownstreamState>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:210,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:210,1
    - Dst: dnsdist::configuration::updateRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:213,1
    - Dst: ServerPolicy::getSelectedBackend
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:216,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:217,1
    - Dst: dnsdist::configuration::updateRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:218,1
    - Dst: ServerPolicy::getSelectedBackend
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:221,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:222,1
    - Dst: ServerPolicy::NumberedServerVector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:225,1
    - Dst: setUp
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:225,1
    - Dst: ServerPolicy::getSelectedBackend
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:226,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:227,1
    - Dst: ServerPolicy::NumberedServerVector::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:230,1
    - Dst: std::make_shared<DownstreamState>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:230,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:230,1
    - Dst: ServerPolicy::NumberedServerVector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:231,1
    - Dst: setUp
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:231,1
    - Dst: ServerPolicy::getSelectedBackend
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:232,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:233,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:234,1
    - Dst: ServerPolicy::NumberedServerVector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:234,1
    - Dst: ServerPolicy::getSelectedBackend
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:235,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:236,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:237,1
    - Dst: ServerPolicy::NumberedServerVector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:237,1
    - Dst: ServerPolicy::NumberedServerVector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:240,1
    - Dst: setDown
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:240,1
    - Dst: ServerPolicy::NumberedServerVector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:241,1
    - Dst: setUp
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:241,1
    - Dst: ServerPolicy::getSelectedBackend
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:242,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:243,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:244,1
    - Dst: ServerPolicy::NumberedServerVector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:244,1
    - Dst: second::setUp
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:249,1
    - Dst: ServerPolicy::getSelectedBackend
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:254,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:255,1
    - Dst: std::map::count
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:255,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:260,1
    - Dst: ServerPolicy::NumberedServerVector::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:260,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:263,1
    - Dst: benchPolicy
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:265,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 45
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 266
      start: 196
    functionDepth: 3
    functionLinenumber: 196
    functionLinenumberEnd: 266
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc
    functionUses: 0
    functionsReached:
    - setUp
    - ServerPolicy::NumberedServerVector::at
    - ServerPolicy::NumberedServerVector::size
    - setDown
    - dnsdist::configuration::updateRuntimeConfiguration
    - second::setUp
    - getDQ
    - BOOST_CHECK_EQUAL
    - benchPolicy
    - ServerPolicy::getSelectedBackend
    - BOOST_REQUIRE
    - std::make_shared<DownstreamState>
    - std::map::count
    - BOOST_CHECK
    - ServerPolicy::NumberedServerVector::emplace_back
    - ComboAddress
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_roundRobin)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getDQ
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:270,1
    - Dst: ServerPolicy::NumberedServerVector::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:274,1
    - Dst: std::make_shared<DownstreamState>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:274,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:274,1
    - Dst: ServerPolicy::getSelectedBackend
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:277,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:278,1
    - Dst: ServerPolicy::NumberedServerVector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:281,1
    - Dst: setUp
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:281,1
    - Dst: ServerPolicy::getSelectedBackend
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:282,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:283,1
    - Dst: ServerPolicy::NumberedServerVector::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:286,1
    - Dst: std::make_shared<DownstreamState>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:286,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:286,1
    - Dst: ServerPolicy::getSelectedBackend
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:287,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:288,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:289,1
    - Dst: ServerPolicy::NumberedServerVector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:289,1
    - Dst: ServerPolicy::NumberedServerVector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:292,1
    - Dst: setDown
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:292,1
    - Dst: ServerPolicy::NumberedServerVector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:293,1
    - Dst: setUp
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:293,1
    - Dst: ServerPolicy::getSelectedBackend
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:294,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:295,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:296,1
    - Dst: ServerPolicy::NumberedServerVector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:296,1
    - Dst: ServerPolicy::NumberedServerVector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:299,1
    - Dst: setUp
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:299,1
    - Dst: ServerPolicy::NumberedServerVector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:300,1
    - Dst: ServerPolicy::NumberedServerVector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:301,1
    - Dst: setUp
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:301,1
    - Dst: ServerPolicy::getSelectedBackend
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:302,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:303,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:304,1
    - Dst: ServerPolicy::NumberedServerVector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:304,1
    - Dst: benchPolicy
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:306,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 22
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 307
      start: 268
    functionDepth: 3
    functionLinenumber: 268
    functionLinenumberEnd: 307
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc
    functionUses: 0
    functionsReached:
    - setUp
    - ServerPolicy::NumberedServerVector::at
    - setDown
    - getDQ
    - benchPolicy
    - ServerPolicy::getSelectedBackend
    - BOOST_REQUIRE
    - std::make_shared<DownstreamState>
    - BOOST_CHECK
    - ServerPolicy::NumberedServerVector::emplace_back
    - ComboAddress
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_leastOutstanding)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getDQ
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:311,1
    - Dst: ServerPolicy::NumberedServerVector::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:317,1
    - Dst: std::make_shared<DownstreamState>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:317,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:317,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:317,1
    - Dst: ServerPolicy::NumberedServerVector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:318,1
    - Dst: ServerPolicy::NumberedServerVector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:319,1
    - Dst: setUp
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:319,1
    - Dst: benchPolicy
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:322,1
    - Dst: ServerPolicy::getSelectedBackend
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:325,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:326,1
    - Dst: std::map::count
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:326,1
    - Dst: BOOST_CHECK_GT
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:331,1
    - Dst: BOOST_CHECK_GT
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:332,1
    - Dst: ServerPolicy::NumberedServerVector::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:332,1
    - Dst: BOOST_CHECK_LT
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:333,1
    - Dst: ServerPolicy::NumberedServerVector::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:333,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:336,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:341,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:347,1
    - Dst: ServerPolicy::NumberedServerVector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:350,1
    - Dst: ServerPolicy::NumberedServerVector::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:350,1
    - Dst: ServerPolicy::getSelectedBackend
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:353,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:354,1
    - Dst: std::map::count
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:354,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:364,1
    - Dst: ServerPolicy::NumberedServerVector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:365,1
    - Dst: ServerPolicy::NumberedServerVector::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:365,1
    - Dst: static_cast<float>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:367,1
    - Dst: static_cast<float>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:367,1
    - Dst: BOOST_CHECK_GT
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:368,1
    - Dst: BOOST_CHECK_LT
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:369,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 35
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 370
      start: 309
    functionDepth: 3
    functionLinenumber: 309
    functionLinenumberEnd: 370
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc
    functionUses: 0
    functionsReached:
    - setUp
    - BOOST_CHECK_GT
    - std::to_string
    - BOOST_CHECK_LT
    - ServerPolicy::NumberedServerVector::at
    - getDQ
    - benchPolicy
    - BOOST_CHECK_EQUAL
    - static_cast<float>
    - ServerPolicy::getSelectedBackend
    - BOOST_REQUIRE
    - std::make_shared<DownstreamState>
    - std::map::count
    - ServerPolicy::NumberedServerVector::size
    - ServerPolicy::NumberedServerVector::emplace_back
    - ComboAddress
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_wrandom)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::vector::reserve
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:375,1
    - Dst: std::vector::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:377,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:377,1
    - Dst: ServerPolicy::NumberedServerVector::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:384,1
    - Dst: std::make_shared<DownstreamState>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:384,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:384,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:384,1
    - Dst: ServerPolicy::NumberedServerVector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:385,1
    - Dst: ServerPolicy::NumberedServerVector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:386,1
    - Dst: setUp
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:386,1
    - Dst: benchPolicy
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:389,1
    - Dst: getDQ
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:392,1
    - Dst: ServerPolicy::getSelectedBackend
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:393,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:394,1
    - Dst: std::map::count
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:394,1
    - Dst: BOOST_CHECK_GT
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:400,1
    - Dst: BOOST_CHECK_GT
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:401,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:401,1
    - Dst: ServerPolicy::NumberedServerVector::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:401,1
    - Dst: BOOST_CHECK_LT
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:402,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:402,1
    - Dst: ServerPolicy::NumberedServerVector::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:402,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:405,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:405,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:410,1
    - Dst: getDQ
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:415,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:415,1
    - Dst: ServerPolicy::getSelectedBackend
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:416,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:418,1
    - Dst: ServerPolicy::getSelectedBackend
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:418,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:425,1
    - Dst: ServerPolicy::NumberedServerVector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:428,1
    - Dst: ServerPolicy::NumberedServerVector::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:428,1
    - Dst: setWeight
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:428,1
    - Dst: getDQ
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:431,1
    - Dst: ServerPolicy::getSelectedBackend
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:432,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:433,1
    - Dst: std::map::count
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:433,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:443,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:443,1
    - Dst: ServerPolicy::NumberedServerVector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:444,1
    - Dst: ServerPolicy::NumberedServerVector::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:444,1
    - Dst: static_cast<float>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:446,1
    - Dst: static_cast<double>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:446,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:446,1
    - Dst: static_cast<float>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:446,1
    - Dst: BOOST_CHECK_GT
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:447,1
    - Dst: BOOST_CHECK_LT
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:448,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 41
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 449
      start: 372
    functionDepth: 3
    functionLinenumber: 372
    functionLinenumberEnd: 449
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc
    functionUses: 0
    functionsReached:
    - std::to_string
    - getDQ
    - std::vector::at
    - ServerPolicy::NumberedServerVector::size
    - std::vector::size
    - static_cast<double>
    - static_cast<float>
    - BOOST_REQUIRE
    - std::make_shared<DownstreamState>
    - BOOST_CHECK_GT
    - BOOST_CHECK_LT
    - ServerPolicy::NumberedServerVector::at
    - benchPolicy
    - std::vector::reserve
    - std::map::count
    - ComboAddress
    - setUp
    - setWeight
    - std::vector::emplace_back
    - BOOST_CHECK_EQUAL
    - ServerPolicy::getSelectedBackend
    - BOOST_CHECK
    - ServerPolicy::NumberedServerVector::emplace_back
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_whashed)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:453,1
    - Dst: dnsdist::configuration::updateRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:454,1
    - Dst: std::vector::reserve
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:459,1
    - Dst: std::vector::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:461,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:461,1
    - Dst: ServerPolicy::NumberedServerVector::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:468,1
    - Dst: std::make_shared<DownstreamState>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:468,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:468,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:468,1
    - Dst: ServerPolicy::NumberedServerVector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:469,1
    - Dst: ServerPolicy::NumberedServerVector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:470,1
    - Dst: setUp
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:470,1
    - Dst: ServerPolicy::NumberedServerVector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:472,1
    - Dst: setWeight
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:472,1
    - Dst: ServerPolicy::NumberedServerVector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:474,1
    - Dst: hash
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:474,1
    - Dst: benchPolicy
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:477,1
    - Dst: getDQ
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:480,1
    - Dst: ServerPolicy::getSelectedBackend
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:481,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:482,1
    - Dst: std::map::count
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:482,1
    - Dst: BOOST_CHECK_GT
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:488,1
    - Dst: BOOST_CHECK_GT
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:489,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:489,1
    - Dst: ServerPolicy::NumberedServerVector::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:489,1
    - Dst: BOOST_CHECK_LT
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:490,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:490,1
    - Dst: ServerPolicy::NumberedServerVector::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:490,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:493,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:493,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:498,1
    - Dst: getDQ
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:503,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:503,1
    - Dst: ServerPolicy::getSelectedBackend
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:504,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:506,1
    - Dst: ServerPolicy::getSelectedBackend
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:506,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:513,1
    - Dst: ServerPolicy::NumberedServerVector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:516,1
    - Dst: ServerPolicy::NumberedServerVector::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:516,1
    - Dst: setWeight
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:516,1
    - Dst: getDQ
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:519,1
    - Dst: ServerPolicy::getSelectedBackend
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:520,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:521,1
    - Dst: std::map::count
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:521,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:531,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:531,1
    - Dst: ServerPolicy::NumberedServerVector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:532,1
    - Dst: ServerPolicy::NumberedServerVector::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:532,1
    - Dst: static_cast<float>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:534,1
    - Dst: static_cast<double>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:534,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:534,1
    - Dst: static_cast<float>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:534,1
    - Dst: BOOST_CHECK_GT
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:535,1
    - Dst: BOOST_CHECK_LT
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:536,1
    - Dst: dnsdist::configuration::updateRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:538,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 49
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 541
      start: 451
    functionDepth: 3
    functionLinenumber: 451
    functionLinenumberEnd: 541
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc
    functionUses: 0
    functionsReached:
    - std::to_string
    - dnsdist::configuration::updateRuntimeConfiguration
    - getDQ
    - std::vector::at
    - ServerPolicy::NumberedServerVector::size
    - std::vector::size
    - static_cast<double>
    - static_cast<float>
    - BOOST_REQUIRE
    - std::make_shared<DownstreamState>
    - hash
    - BOOST_CHECK_GT
    - dnsdist::configuration::getCurrentRuntimeConfiguration
    - BOOST_CHECK_LT
    - ServerPolicy::NumberedServerVector::at
    - benchPolicy
    - std::vector::reserve
    - std::map::count
    - ComboAddress
    - setUp
    - setWeight
    - std::vector::emplace_back
    - BOOST_CHECK_EQUAL
    - ServerPolicy::getSelectedBackend
    - BOOST_CHECK
    - ServerPolicy::NumberedServerVector::emplace_back
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_chashed)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::vector::reserve
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:547,1
    - Dst: std::vector::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:549,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:549,1
    - Dst: resetLuaContext
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:561,1
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:562,1
    - Dst: std::make_shared<ServerPolicy>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:563,1
    - Dst: dnsdist::configuration::updateRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:564,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:565,1
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:568,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:571,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:572,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:573,1
    - Dst: ServerPolicy::NumberedServerVector::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:577,1
    - Dst: std::make_shared<DownstreamState>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:577,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:577,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:577,1
    - Dst: ServerPolicy::NumberedServerVector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:578,1
    - Dst: ServerPolicy::NumberedServerVector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:579,1
    - Dst: setUp
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:579,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:581,1
    - Dst: ServerPolicy::NumberedServerVector::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:581,1
    - Dst: getDQ
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:584,1
    - Dst: auto::getSelectedBackend
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:585,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:586,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:587,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:588,1
    - Dst: std::map::count
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:588,1
    - Dst: BOOST_CHECK_GT
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:594,1
    - Dst: BOOST_CHECK_GT
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:595,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:595,1
    - Dst: ServerPolicy::NumberedServerVector::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:595,1
    - Dst: BOOST_CHECK_LT
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:596,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:596,1
    - Dst: ServerPolicy::NumberedServerVector::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:596,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:599,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:599,1
    - Dst: benchPolicy
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:601,1
    - Dst: resetLuaContext
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:603,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 33
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 604
      start: 544
    functionDepth: 4
    functionLinenumber: 544
    functionLinenumberEnd: 604
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc
    functionUses: 0
    functionsReached:
    - std::to_string
    - dnsdist::configuration::updateRuntimeConfiguration
    - getDQ
    - ServerPolicy::NumberedServerVector::size
    - std::vector::size
    - lock
    - BOOST_REQUIRE
    - std::make_shared<DownstreamState>
    - BOOST_REQUIRE_EQUAL
    - resetLuaContext
    - auto::get
    - dnsdist::configuration::getCurrentRuntimeConfiguration
    - BOOST_CHECK_GT
    - ServerPolicy::NumberedServerVector::at
    - BOOST_CHECK_LT
    - benchPolicy
    - std::vector::reserve
    - std::make_shared<ServerPolicy>
    - std::map::count
    - ComboAddress
    - setUp
    - std::move
    - std::vector::emplace_back
    - BOOST_CHECK_EQUAL
    - auto::getSelectedBackend
    - ServerPolicy::NumberedServerVector::emplace_back
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_lua)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::vector::reserve
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:611,1
    - Dst: std::vector::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:613,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:613,1
    - Dst: resetLuaContext
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:628,1
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:629,1
    - Dst: getLuaFFIWrappers
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:629,1
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:630,1
    - Dst: std::make_shared<ServerPolicy>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:631,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:631,1
    - Dst: dnsdist::configuration::updateRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:632,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:633,1
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:636,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:639,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:640,1
    - Dst: ServerPolicy::NumberedServerVector::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:644,1
    - Dst: std::make_shared<DownstreamState>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:644,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:644,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:644,1
    - Dst: ServerPolicy::NumberedServerVector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:645,1
    - Dst: ServerPolicy::NumberedServerVector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:646,1
    - Dst: setUp
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:646,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:648,1
    - Dst: ServerPolicy::NumberedServerVector::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:648,1
    - Dst: getDQ
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:651,1
    - Dst: auto::getSelectedBackend
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:652,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:653,1
    - Dst: std::map::count
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:653,1
    - Dst: BOOST_CHECK_GT
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:659,1
    - Dst: BOOST_CHECK_GT
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:660,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:660,1
    - Dst: ServerPolicy::NumberedServerVector::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:660,1
    - Dst: BOOST_CHECK_LT
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:661,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:661,1
    - Dst: ServerPolicy::NumberedServerVector::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:661,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:664,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:664,1
    - Dst: benchPolicy
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:666,1
    - Dst: resetLuaContext
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:668,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 32
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 669
      start: 608
    functionDepth: 4
    functionLinenumber: 608
    functionLinenumberEnd: 669
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc
    functionUses: 0
    functionsReached:
    - std::to_string
    - dnsdist::configuration::updateRuntimeConfiguration
    - getDQ
    - getLuaFFIWrappers
    - ServerPolicy::NumberedServerVector::size
    - std::vector::size
    - lock
    - BOOST_REQUIRE
    - std::make_shared<DownstreamState>
    - BOOST_REQUIRE_EQUAL
    - resetLuaContext
    - BOOST_CHECK_GT
    - dnsdist::configuration::getCurrentRuntimeConfiguration
    - BOOST_CHECK_LT
    - ServerPolicy::NumberedServerVector::at
    - benchPolicy
    - std::vector::reserve
    - std::make_shared<ServerPolicy>
    - std::map::count
    - ComboAddress
    - setUp
    - std::move
    - std::vector::emplace_back
    - BOOST_CHECK_EQUAL
    - auto::getSelectedBackend
    - ServerPolicy::NumberedServerVector::emplace_back
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_lua_ffi_rr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: resetLuaContext
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:686,1
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:687,1
    - Dst: getLuaFFIWrappers
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:687,1
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:688,1
    - Dst: std::make_shared<ServerPolicy>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:689,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:689,1
    - Dst: dnsdist::configuration::updateRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:690,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:691,1
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:694,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:697,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:698,1
    - Dst: ServerPolicy::NumberedServerVector::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:701,1
    - Dst: std::make_shared<DownstreamState>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:701,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:701,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:701,1
    - Dst: ServerPolicy::NumberedServerVector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:702,1
    - Dst: setUp
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:702,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:704,1
    - Dst: ServerPolicy::NumberedServerVector::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:704,1
    - Dst: getDQ
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:706,1
    - Dst: auto::getSelectedBackend
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:707,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:708,1
    - Dst: resetLuaContext
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:710,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 711
      start: 671
    functionDepth: 4
    functionLinenumber: 671
    functionLinenumberEnd: 711
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc
    functionUses: 0
    functionsReached:
    - resetLuaContext
    - setUp
    - std::move
    - dnsdist::configuration::getCurrentRuntimeConfiguration
    - std::to_string
    - ServerPolicy::NumberedServerVector::at
    - dnsdist::configuration::updateRuntimeConfiguration
    - getDQ
    - getLuaFFIWrappers
    - lock
    - auto::getSelectedBackend
    - BOOST_REQUIRE
    - std::make_shared<DownstreamState>
    - std::make_shared<ServerPolicy>
    - ServerPolicy::NumberedServerVector::size
    - ServerPolicy::NumberedServerVector::emplace_back
    - BOOST_REQUIRE_EQUAL
    - ComboAddress
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_lua_ffi_no_server_available)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::vector::reserve
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:716,1
    - Dst: std::vector::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:718,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:718,1
    - Dst: resetLuaContext
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:732,1
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:733,1
    - Dst: getLuaFFIWrappers
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:733,1
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:734,1
    - Dst: std::make_shared<ServerPolicy>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:735,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:735,1
    - Dst: dnsdist::configuration::updateRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:736,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:737,1
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:740,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:743,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:744,1
    - Dst: ServerPolicy::NumberedServerVector::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:748,1
    - Dst: std::make_shared<DownstreamState>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:748,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:748,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:748,1
    - Dst: ServerPolicy::NumberedServerVector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:749,1
    - Dst: ServerPolicy::NumberedServerVector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:750,1
    - Dst: setUp
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:750,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:752,1
    - Dst: ServerPolicy::NumberedServerVector::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:752,1
    - Dst: getDQ
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:755,1
    - Dst: auto::getSelectedBackend
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:756,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:757,1
    - Dst: std::map::count
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:757,1
    - Dst: BOOST_CHECK_GT
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:763,1
    - Dst: BOOST_CHECK_GT
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:764,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:764,1
    - Dst: ServerPolicy::NumberedServerVector::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:764,1
    - Dst: BOOST_CHECK_LT
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:765,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:765,1
    - Dst: ServerPolicy::NumberedServerVector::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:765,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:768,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:768,1
    - Dst: benchPolicy
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:770,1
    - Dst: resetLuaContext
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:772,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 32
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 773
      start: 713
    functionDepth: 4
    functionLinenumber: 713
    functionLinenumberEnd: 773
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc
    functionUses: 0
    functionsReached:
    - std::to_string
    - dnsdist::configuration::updateRuntimeConfiguration
    - getDQ
    - getLuaFFIWrappers
    - ServerPolicy::NumberedServerVector::size
    - std::vector::size
    - lock
    - BOOST_REQUIRE
    - std::make_shared<DownstreamState>
    - BOOST_REQUIRE_EQUAL
    - resetLuaContext
    - BOOST_CHECK_GT
    - dnsdist::configuration::getCurrentRuntimeConfiguration
    - BOOST_CHECK_LT
    - ServerPolicy::NumberedServerVector::at
    - benchPolicy
    - std::vector::reserve
    - std::make_shared<ServerPolicy>
    - std::map::count
    - ComboAddress
    - setUp
    - std::move
    - std::vector::emplace_back
    - BOOST_CHECK_EQUAL
    - auto::getSelectedBackend
    - ServerPolicy::NumberedServerVector::emplace_back
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_lua_ffi_hashed)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::vector::reserve
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:778,1
    - Dst: std::vector::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:780,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:780,1
    - Dst: resetLuaContext
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:792,1
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:793,1
    - Dst: getLuaFFIWrappers
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:793,1
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:794,1
    - Dst: std::make_shared<ServerPolicy>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:795,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:795,1
    - Dst: dnsdist::configuration::updateRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:796,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:797,1
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:800,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:803,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:804,1
    - Dst: ServerPolicy::NumberedServerVector::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:808,1
    - Dst: std::make_shared<DownstreamState>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:808,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:808,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:808,1
    - Dst: ServerPolicy::NumberedServerVector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:809,1
    - Dst: ServerPolicy::NumberedServerVector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:810,1
    - Dst: setUp
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:810,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:812,1
    - Dst: ServerPolicy::NumberedServerVector::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:812,1
    - Dst: getDQ
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:815,1
    - Dst: auto::getSelectedBackend
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:816,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:817,1
    - Dst: std::map::count
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:817,1
    - Dst: BOOST_CHECK_GT
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:823,1
    - Dst: BOOST_CHECK_GT
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:824,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:824,1
    - Dst: ServerPolicy::NumberedServerVector::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:824,1
    - Dst: BOOST_CHECK_LT
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:825,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:825,1
    - Dst: ServerPolicy::NumberedServerVector::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:825,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:828,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:828,1
    - Dst: benchPolicy
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:830,1
    - Dst: resetLuaContext
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:832,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 32
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 833
      start: 775
    functionDepth: 4
    functionLinenumber: 775
    functionLinenumberEnd: 833
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc
    functionUses: 0
    functionsReached:
    - std::to_string
    - dnsdist::configuration::updateRuntimeConfiguration
    - getDQ
    - getLuaFFIWrappers
    - ServerPolicy::NumberedServerVector::size
    - std::vector::size
    - lock
    - BOOST_REQUIRE
    - std::make_shared<DownstreamState>
    - BOOST_REQUIRE_EQUAL
    - resetLuaContext
    - BOOST_CHECK_GT
    - dnsdist::configuration::getCurrentRuntimeConfiguration
    - BOOST_CHECK_LT
    - ServerPolicy::NumberedServerVector::at
    - benchPolicy
    - std::vector::reserve
    - std::make_shared<ServerPolicy>
    - std::map::count
    - ComboAddress
    - setUp
    - std::move
    - std::vector::emplace_back
    - BOOST_CHECK_EQUAL
    - auto::getSelectedBackend
    - ServerPolicy::NumberedServerVector::emplace_back
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_lua_ffi_whashed)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::vector::reserve
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:838,1
    - Dst: std::vector::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:840,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:840,1
    - Dst: resetLuaContext
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:852,1
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:853,1
    - Dst: getLuaFFIWrappers
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:853,1
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:854,1
    - Dst: std::make_shared<ServerPolicy>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:855,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:855,1
    - Dst: dnsdist::configuration::updateRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:856,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:857,1
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:860,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:863,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:864,1
    - Dst: ServerPolicy::NumberedServerVector::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:868,1
    - Dst: std::make_shared<DownstreamState>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:868,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:868,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:868,1
    - Dst: ServerPolicy::NumberedServerVector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:869,1
    - Dst: ServerPolicy::NumberedServerVector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:870,1
    - Dst: setUp
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:870,1
    - Dst: ServerPolicy::NumberedServerVector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:872,1
    - Dst: setWeight
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:872,1
    - Dst: ServerPolicy::NumberedServerVector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:874,1
    - Dst: hash
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:874,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:876,1
    - Dst: ServerPolicy::NumberedServerVector::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:876,1
    - Dst: getDQ
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:879,1
    - Dst: auto::getSelectedBackend
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:880,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:881,1
    - Dst: std::map::count
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:881,1
    - Dst: BOOST_CHECK_GT
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:887,1
    - Dst: BOOST_CHECK_GT
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:888,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:888,1
    - Dst: ServerPolicy::NumberedServerVector::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:888,1
    - Dst: BOOST_CHECK_LT
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:889,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:889,1
    - Dst: ServerPolicy::NumberedServerVector::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:889,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:892,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:892,1
    - Dst: benchPolicy
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:894,1
    - Dst: resetLuaContext
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc:896,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 34
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 897
      start: 835
    functionDepth: 4
    functionLinenumber: 835
    functionLinenumberEnd: 897
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc
    functionUses: 0
    functionsReached:
    - std::to_string
    - dnsdist::configuration::updateRuntimeConfiguration
    - getDQ
    - getLuaFFIWrappers
    - ServerPolicy::NumberedServerVector::size
    - std::vector::size
    - lock
    - BOOST_REQUIRE
    - std::make_shared<DownstreamState>
    - BOOST_REQUIRE_EQUAL
    - resetLuaContext
    - hash
    - BOOST_CHECK_GT
    - dnsdist::configuration::getCurrentRuntimeConfiguration
    - BOOST_CHECK_LT
    - ServerPolicy::NumberedServerVector::at
    - benchPolicy
    - std::vector::reserve
    - std::make_shared<ServerPolicy>
    - std::map::count
    - ComboAddress
    - setUp
    - std::move
    - setWeight
    - std::vector::emplace_back
    - BOOST_CHECK_EQUAL
    - auto::getSelectedBackend
    - ServerPolicy::NumberedServerVector::emplace_back
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_lua_ffi_chashed)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:18,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:19,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:20,1
    - Dst: DownstreamState::isUp
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:20,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:21,1
    - Dst: DownstreamState::getStatus
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:21,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:22,1
    - Dst: DownstreamState::healthCheckRequired
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:22,1
    - Dst: DownstreamState::setUp
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:24,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:25,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:26,1
    - Dst: DownstreamState::isUp
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:26,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:27,1
    - Dst: DownstreamState::getStatus
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:27,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:28,1
    - Dst: DownstreamState::healthCheckRequired
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:28,1
    - Dst: DownstreamState::setDown
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:30,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:31,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:32,1
    - Dst: DownstreamState::isUp
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:32,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:33,1
    - Dst: DownstreamState::getStatus
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:33,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:34,1
    - Dst: DownstreamState::healthCheckRequired
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:34,1
    - Dst: DownstreamState::setAuto
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:36,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:37,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:38,1
    - Dst: DownstreamState::isUp
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:38,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:39,1
    - Dst: DownstreamState::getStatus
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:39,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:40,1
    - Dst: DownstreamState::healthCheckRequired
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:40,1
    - Dst: DownstreamState::submitHealthCheckResult
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:42,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:43,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:44,1
    - Dst: DownstreamState::isUp
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:44,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:45,1
    - Dst: DownstreamState::getStatus
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:45,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:46,1
    - Dst: DownstreamState::healthCheckRequired
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:46,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 26
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 14
    functionDepth: 4
    functionLinenumber: 14
    functionLinenumberEnd: 47
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc
    functionUses: 0
    functionsReached:
    - DownstreamState::healthCheckRequired
    - DownstreamState::setAuto
    - DownstreamState::isUp
    - DownstreamState::submitHealthCheckResult
    - DownstreamState::getStatus
    - BOOST_CHECK_EQUAL
    - DownstreamState::setDown
    - DownstreamState::setUp
    - BOOST_CHECK
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_Basic)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:55,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:58,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:59,1
    - Dst: DownstreamState::setUpStatus
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:60,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:61,1
    - Dst: DownstreamState::isUp
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:61,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:62,1
    - Dst: DownstreamState::getStatus
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:62,1
    - Dst: DownstreamState::submitHealthCheckResult
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:65,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:69,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:70,1
    - Dst: DownstreamState::isUp
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:70,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:71,1
    - Dst: DownstreamState::getStatus
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:71,1
    - Dst: DownstreamState::submitHealthCheckResult
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:74,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:75,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:76,1
    - Dst: DownstreamState::isUp
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:76,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:77,1
    - Dst: DownstreamState::getStatus
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:77,1
    - Dst: DownstreamState::submitHealthCheckResult
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:80,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:81,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:82,1
    - Dst: DownstreamState::isUp
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:82,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:83,1
    - Dst: DownstreamState::getStatus
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:83,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 22
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 49
    functionDepth: 4
    functionLinenumber: 49
    functionLinenumberEnd: 84
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc
    functionUses: 0
    functionsReached:
    - DownstreamState::isUp
    - DownstreamState::submitHealthCheckResult
    - DownstreamState::getStatus
    - DownstreamState::setUpStatus
    - BOOST_CHECK_EQUAL
    - BOOST_CHECK
    - ComboAddress
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_MaxCheckFailures)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:92,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:95,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:96,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:97,1
    - Dst: DownstreamState::isUp
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:97,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:98,1
    - Dst: DownstreamState::getStatus
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:98,1
    - Dst: DownstreamState::submitHealthCheckResult
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:101,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:105,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:106,1
    - Dst: DownstreamState::isUp
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:106,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:107,1
    - Dst: DownstreamState::getStatus
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:107,1
    - Dst: DownstreamState::submitHealthCheckResult
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:110,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:111,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:112,1
    - Dst: DownstreamState::isUp
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:112,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:113,1
    - Dst: DownstreamState::getStatus
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:113,1
    - Dst: DownstreamState::submitHealthCheckResult
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:116,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:117,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:118,1
    - Dst: DownstreamState::isUp
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:118,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:119,1
    - Dst: DownstreamState::getStatus
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:119,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 21
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 86
    functionDepth: 4
    functionLinenumber: 86
    functionLinenumberEnd: 120
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc
    functionUses: 0
    functionsReached:
    - DownstreamState::isUp
    - DownstreamState::submitHealthCheckResult
    - DownstreamState::getStatus
    - BOOST_CHECK_EQUAL
    - BOOST_CHECK
    - ComboAddress
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_Rise)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:133,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:136,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:137,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:138,1
    - Dst: DownstreamState::isUp
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:138,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:139,1
    - Dst: DownstreamState::getStatus
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:139,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:140,1
    - Dst: DownstreamState::healthCheckRequired
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:140,1
    - Dst: DownstreamState::reportResponse
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:144,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:146,1
    - Dst: DownstreamState::healthCheckRequired
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:146,1
    - Dst: DownstreamState::reportTimeoutOrError
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:149,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:154,1
    - Dst: DownstreamState::isUp
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:154,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:155,1
    - Dst: DownstreamState::getStatus
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:155,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:156,1
    - Dst: DownstreamState::healthCheckRequired
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:156,1
    - Dst: DownstreamState::reportResponse
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:160,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:161,1
    - Dst: DownstreamState::isUp
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:161,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:162,1
    - Dst: DownstreamState::getStatus
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:162,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:163,1
    - Dst: DownstreamState::healthCheckRequired
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:163,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:166,1
    - Dst: DownstreamState::healthCheckRequired
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:166,1
    - Dst: DownstreamState::reportResponse
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:170,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:172,1
    - Dst: DownstreamState::isUp
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:172,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:173,1
    - Dst: DownstreamState::getStatus
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:173,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:174,1
    - Dst: DownstreamState::healthCheckRequired
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:174,1
    - Dst: DownstreamState::submitHealthCheckResult
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:177,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:178,1
    - Dst: DownstreamState::isUp
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:178,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:179,1
    - Dst: DownstreamState::getStatus
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:179,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:180,1
    - Dst: DownstreamState::healthCheckRequired
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:180,1
    - Dst: DownstreamState::reportTimeoutOrError
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:184,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:186,1
    - Dst: DownstreamState::isUp
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:186,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:187,1
    - Dst: DownstreamState::getStatus
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:187,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:188,1
    - Dst: DownstreamState::healthCheckRequired
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:188,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:191,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:192,1
    - Dst: DownstreamState::submitHealthCheckResult
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:193,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:195,1
    - Dst: DownstreamState::isUp
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:195,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:196,1
    - Dst: DownstreamState::getStatus
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:196,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:197,1
    - Dst: DownstreamState::healthCheckRequired
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:197,1
    - Dst: time
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:198,1
    - Dst: DownstreamState::submitHealthCheckResult
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:199,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:202,1
    - Dst: DownstreamState::isUp
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:202,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:203,1
    - Dst: DownstreamState::getStatus
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:203,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:204,1
    - Dst: DownstreamState::getNextLazyHealthCheck
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:204,1
    - Dst: DownstreamState::reportResponse
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:208,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:212,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:213,1
    - Dst: DownstreamState::submitHealthCheckResult
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:214,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:216,1
    - Dst: DownstreamState::isUp
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:216,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:217,1
    - Dst: DownstreamState::getStatus
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:217,1
    - Dst: DownstreamState::submitHealthCheckResult
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:219,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:220,1
    - Dst: DownstreamState::isUp
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:220,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:221,1
    - Dst: DownstreamState::getStatus
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:221,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:222,1
    - Dst: DownstreamState::healthCheckRequired
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:222,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 69
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 223
      start: 122
    functionDepth: 4
    functionLinenumber: 122
    functionLinenumberEnd: 223
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc
    functionUses: 0
    functionsReached:
    - DownstreamState::healthCheckRequired
    - DownstreamState::reportResponse
    - DownstreamState::isUp
    - static_cast<size_t>
    - DownstreamState::submitHealthCheckResult
    - DownstreamState::getStatus
    - time
    - BOOST_CHECK_EQUAL
    - DownstreamState::getNextLazyHealthCheck
    - DownstreamState::reportTimeoutOrError
    - BOOST_REQUIRE
    - BOOST_CHECK
    - ComboAddress
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_Lazy)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DownstreamState::parseAvailabilityConfigFromStr
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:235,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:238,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:241,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:242,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:243,1
    - Dst: DownstreamState::isUp
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:243,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:244,1
    - Dst: DownstreamState::getStatus
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:244,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:245,1
    - Dst: DownstreamState::healthCheckRequired
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:245,1
    - Dst: DownstreamState::reportTimeoutOrError
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:249,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:251,1
    - Dst: DownstreamState::isUp
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:251,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:252,1
    - Dst: DownstreamState::getStatus
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:252,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:253,1
    - Dst: DownstreamState::healthCheckRequired
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:253,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:256,1
    - Dst: DownstreamState::healthCheckRequired
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:256,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:259,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:260,1
    - Dst: DownstreamState::submitHealthCheckResult
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:261,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:263,1
    - Dst: DownstreamState::isUp
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:263,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:264,1
    - Dst: DownstreamState::getStatus
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:264,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:265,1
    - Dst: DownstreamState::healthCheckRequired
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:265,1
    - Dst: time
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:266,1
    - Dst: DownstreamState::submitHealthCheckResult
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:267,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:270,1
    - Dst: DownstreamState::isUp
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:270,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:271,1
    - Dst: DownstreamState::getStatus
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:271,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:272,1
    - Dst: DownstreamState::healthCheckRequired
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:272,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:274,1
    - Dst: DownstreamState::getNextLazyHealthCheck
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:274,1
    - Dst: std::pow
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:274,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:275,1
    - Dst: DownstreamState::getNextLazyHealthCheck
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:280,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:281,1
    - Dst: DownstreamState::healthCheckRequired
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:281,1
    - Dst: DownstreamState::submitHealthCheckResult
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:282,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:284,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:285,1
    - Dst: DownstreamState::getNextLazyHealthCheck
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:285,1
    - Dst: std::pow
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:285,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:288,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:289,1
    - Dst: DownstreamState::submitHealthCheckResult
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:290,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:292,1
    - Dst: DownstreamState::isUp
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:292,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:293,1
    - Dst: DownstreamState::getStatus
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:293,1
    - Dst: DownstreamState::submitHealthCheckResult
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:295,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:296,1
    - Dst: DownstreamState::isUp
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:296,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:297,1
    - Dst: DownstreamState::getStatus
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:297,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:298,1
    - Dst: DownstreamState::healthCheckRequired
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:298,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 52
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 299
      start: 225
    functionDepth: 4
    functionLinenumber: 225
    functionLinenumberEnd: 299
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc
    functionUses: 0
    functionsReached:
    - DownstreamState::healthCheckRequired
    - DownstreamState::isUp
    - DownstreamState::parseAvailabilityConfigFromStr
    - static_cast<size_t>
    - DownstreamState::submitHealthCheckResult
    - DownstreamState::getStatus
    - std::pow
    - time
    - BOOST_CHECK_EQUAL
    - DownstreamState::getNextLazyHealthCheck
    - DownstreamState::reportTimeoutOrError
    - BOOST_REQUIRE
    - BOOST_CHECK
    - ComboAddress
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_LazyExponentialBackOff)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DownstreamState::parseAvailabilityConfigFromStr
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:304,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:306,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:309,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:310,1
    - Dst: DownstreamState::setUp
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:311,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:312,1
    - Dst: DownstreamState::setAuto
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:313,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:314,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:315,1
    - Dst: DownstreamState::setActiveAuto
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:316,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:317,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:318,1
    - Dst: DownstreamState::setUp
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:319,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:320,1
    - Dst: DownstreamState::setAuto
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:321,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:322,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc:323,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 324
      start: 301
    functionDepth: 1
    functionLinenumber: 301
    functionLinenumberEnd: 324
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc
    functionUses: 0
    functionsReached:
    - DownstreamState::setAuto
    - DownstreamState::setActiveAuto
    - DownstreamState::parseAvailabilityConfigFromStr
    - DownstreamState::setUp
    - BOOST_CHECK
    - ComboAddress
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_CheckAutoRestorePreviousHealthCheckMode)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: close
      Src: /src/pdns/pdns/dnsdistdist/epollmplexer.cc:43,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 40
    functionDepth: 0
    functionLinenumber: 40
    functionLinenumberEnd: 45
    functionName: ~EpollFDMultiplexer() override
    functionSourceFile: /src/pdns/pdns/dnsdistdist/epollmplexer.cc
    functionUses: 0
    functionsReached:
    - close
    linkageType: ''
    returnType: void
    signature: void ~EpollFDMultiplexer() override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 54
    functionDepth: 0
    functionLinenumber: 54
    functionLinenumberEnd: 57
    functionName: EpollFDMultiplexer::getName
    functionSourceFile: /src/pdns/pdns/dnsdistdist/epollmplexer.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: string
    signature: string getName() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EpollFDMultiplexer::EpollFDMultiplexer
      Src: /src/pdns/pdns/dnsdistdist/epollmplexer.cc:66,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - maxEventsHint
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 64
    functionDepth: 0
    functionLinenumber: 64
    functionLinenumberEnd: 67
    functionName: makeEpoll
    functionSourceFile: /src/pdns/pdns/dnsdistdist/epollmplexer.cc
    functionUses: 0
    functionsReached:
    - EpollFDMultiplexer::EpollFDMultiplexer
    linkageType: ''
    returnType: FDMultiplexer
    signature: FDMultiplexer * makeEpoll(unsigned int maxEventsHint)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: FDMultiplexer::getMultiplexerMap
      Src: /src/pdns/pdns/dnsdistdist/epollmplexer.cc:73,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 71
    functionDepth: 0
    functionLinenumber: 71
    functionLinenumberEnd: 74
    functionName: EpollRegisterOurselves
    functionSourceFile: /src/pdns/pdns/dnsdistdist/epollmplexer.cc
    functionUses: 0
    functionsReached:
    - FDMultiplexer::getMultiplexerMap
    linkageType: ''
    returnType: void
    signature: void EpollRegisterOurselves()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: epoll_create
      Src: /src/pdns/pdns/dnsdistdist/epollmplexer.cc:80,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/dnsdistdist/epollmplexer.cc:80,1
    - Dst: FDMultiplexerException
      Src: /src/pdns/pdns/dnsdistdist/epollmplexer.cc:82,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/epollmplexer.cc:82,1
    - Dst: socket
      Src: /src/pdns/pdns/dnsdistdist/epollmplexer.cc:84,1
    - Dst: addReadFD
      Src: /src/pdns/pdns/dnsdistdist/epollmplexer.cc:91,1
    - Dst: removeReadFD
      Src: /src/pdns/pdns/dnsdistdist/epollmplexer.cc:92,1
    - Dst: close
      Src: /src/pdns/pdns/dnsdistdist/epollmplexer.cc:93,1
    - Dst: close
      Src: /src/pdns/pdns/dnsdistdist/epollmplexer.cc:97,1
    - Dst: close
      Src: /src/pdns/pdns/dnsdistdist/epollmplexer.cc:98,1
    - Dst: FDMultiplexerException
      Src: /src/pdns/pdns/dnsdistdist/epollmplexer.cc:99,1
    - Dst: string
      Src: /src/pdns/pdns/dnsdistdist/epollmplexer.cc:99,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/epollmplexer.cc:99,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 1
    argNames:
    - maxEventsHint
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 77
    functionDepth: 0
    functionLinenumber: 77
    functionLinenumberEnd: 101
    functionName: EpollFDMultiplexer::EpollFDMultiplexer
    functionSourceFile: /src/pdns/pdns/dnsdistdist/epollmplexer.cc
    functionUses: 3
    functionsReached:
    - socket
    - addReadFD
    - stringerror
    - what
    - string
    - epoll_create
    - removeReadFD
    - FDMultiplexerException
    - close
    - static_cast<int>
    linkageType: ''
    returnType: void
    signature: void EpollFDMultiplexer::EpollFDMultiplexer(unsigned int maxEventsHint)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/epollmplexer.cc:114,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - kind
    argTypes:
    - FDMultiplexer::EventKind
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 115
      start: 103
    functionDepth: 0
    functionLinenumber: 103
    functionLinenumberEnd: 115
    functionName: convertEventKind
    functionSourceFile: /src/pdns/pdns/dnsdistdist/epollmplexer.cc
    functionUses: 11
    functionsReached:
    - std::runtime_error
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t convertEventKind(FDMultiplexer::EventKind kind)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: convertEventKind
      Src: /src/pdns/pdns/dnsdistdist/epollmplexer.cc:121,1
    - Dst: epoll_ctl
      Src: /src/pdns/pdns/dnsdistdist/epollmplexer.cc:126,1
    - Dst: FDMultiplexerException
      Src: /src/pdns/pdns/dnsdistdist/epollmplexer.cc:127,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/epollmplexer.cc:127,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - fd
    - kind
    argTypes:
    - int
    - FDMultiplexer::EventKind
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 129
      start: 117
    functionDepth: 0
    functionLinenumber: 117
    functionLinenumberEnd: 129
    functionName: EpollFDMultiplexer::addFD
    functionSourceFile: /src/pdns/pdns/dnsdistdist/epollmplexer.cc
    functionUses: 0
    functionsReached:
    - FDMultiplexerException
    - epoll_ctl
    - stringerror
    - convertEventKind
    linkageType: ''
    returnType: void
    signature: void EpollFDMultiplexer::addFD(int fd, FDMultiplexer::EventKind kind)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: epoll_ctl
      Src: /src/pdns/pdns/dnsdistdist/epollmplexer.cc:137,1
    - Dst: FDMultiplexerException
      Src: /src/pdns/pdns/dnsdistdist/epollmplexer.cc:138,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/epollmplexer.cc:138,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - fd
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 131
    functionDepth: 0
    functionLinenumber: 131
    functionLinenumberEnd: 140
    functionName: EpollFDMultiplexer::removeFD
    functionSourceFile: /src/pdns/pdns/dnsdistdist/epollmplexer.cc
    functionUses: 0
    functionsReached:
    - FDMultiplexerException
    - epoll_ctl
    - stringerror
    linkageType: ''
    returnType: void
    signature: void EpollFDMultiplexer::removeFD(int fd, FDMultiplexer::EventKind)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: convertEventKind
      Src: /src/pdns/pdns/dnsdistdist/epollmplexer.cc:145,1
    - Dst: epoll_ctl
      Src: /src/pdns/pdns/dnsdistdist/epollmplexer.cc:149,1
    - Dst: FDMultiplexerException
      Src: /src/pdns/pdns/dnsdistdist/epollmplexer.cc:150,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/epollmplexer.cc:150,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - fd
    - to
    argTypes:
    - int
    - FDMultiplexer::EventKind
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 152
      start: 142
    functionDepth: 0
    functionLinenumber: 142
    functionLinenumberEnd: 152
    functionName: EpollFDMultiplexer::alterFD
    functionSourceFile: /src/pdns/pdns/dnsdistdist/epollmplexer.cc
    functionUses: 0
    functionsReached:
    - FDMultiplexerException
    - epoll_ctl
    - stringerror
    - convertEventKind
    linkageType: ''
    returnType: void
    signature: void EpollFDMultiplexer::alterFD(int fd, FDMultiplexer::EventKind,
      FDMultiplexer::EventKind to)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: epoll_wait
      Src: /src/pdns/pdns/dnsdistdist/epollmplexer.cc:156,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/epollmplexer.cc:156,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/epollmplexer.cc:156,1
    - Dst: FDMultiplexerException
      Src: /src/pdns/pdns/dnsdistdist/epollmplexer.cc:159,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/epollmplexer.cc:159,1
    - Dst: push_back
      Src: /src/pdns/pdns/dnsdistdist/epollmplexer.cc:163,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 7
    argCount: 2
    argNames:
    - ' fds'
    - timeout
    argTypes:
    - std::vector<int>
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 165
      start: 154
    functionDepth: 0
    functionLinenumber: 154
    functionLinenumberEnd: 165
    functionName: EpollFDMultiplexer::getAvailableFDs
    functionSourceFile: /src/pdns/pdns/dnsdistdist/epollmplexer.cc
    functionUses: 0
    functionsReached:
    - epoll_wait
    - push_back
    - stringerror
    - size
    - data
    - FDMultiplexerException
    linkageType: ''
    returnType: void
    signature: void EpollFDMultiplexer::getAvailableFDs(std::vector<int>& fds, int
      timeout)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: epoll_wait
      Src: /src/pdns/pdns/dnsdistdist/epollmplexer.cc:171,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/epollmplexer.cc:171,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/epollmplexer.cc:171,1
    - Dst: gettimeofday
      Src: /src/pdns/pdns/dnsdistdist/epollmplexer.cc:172,1
    - Dst: FDMultiplexerException
      Src: /src/pdns/pdns/dnsdistdist/epollmplexer.cc:175,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/epollmplexer.cc:175,1
    - Dst: find
      Src: /src/pdns/pdns/dnsdistdist/epollmplexer.cc:186,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/epollmplexer.cc:187,1
    - Dst: d_callback
      Src: /src/pdns/pdns/dnsdistdist/epollmplexer.cc:188,1
    - Dst: find
      Src: /src/pdns/pdns/dnsdistdist/epollmplexer.cc:194,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/epollmplexer.cc:195,1
    - Dst: d_callback
      Src: /src/pdns/pdns/dnsdistdist/epollmplexer.cc:196,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 23
    argCount: 2
    argNames:
    - now
    - timeout
    argTypes:
    - struct timeval*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 203
      start: 167
    functionDepth: 0
    functionLinenumber: 167
    functionLinenumberEnd: 203
    functionName: EpollFDMultiplexer::run
    functionSourceFile: /src/pdns/pdns/dnsdistdist/epollmplexer.cc
    functionUses: 1
    functionsReached:
    - epoll_wait
    - stringerror
    - end
    - size
    - d_callback
    - gettimeofday
    - data
    - FDMultiplexerException
    - find
    linkageType: ''
    returnType: int
    signature: int EpollFDMultiplexer::run(struct timeval* now, int timeout)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: funcparam_t_cast<Socket*>
      Src: /src/pdns/pdns/dnsdistdist/epollmplexer.cc:209,1
    - Dst: Socket*::recvFrom
      Src: /src/pdns/pdns/dnsdistdist/epollmplexer.cc:212,1
    - Dst: string::size
      Src: /src/pdns/pdns/dnsdistdist/epollmplexer.cc:213,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - fd
    - ' parameter'
    argTypes:
    - int
    - funcparam_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 214
      start: 206
    functionDepth: 0
    functionLinenumber: 206
    functionLinenumberEnd: 214
    functionName: acceptData
    functionSourceFile: /src/pdns/pdns/dnsdistdist/epollmplexer.cc
    functionUses: 0
    functionsReached:
    - string::size
    - funcparam_t_cast<Socket*>
    - Socket*::recvFrom
    linkageType: ''
    returnType: void
    signature: void acceptData(int fd, funcparam_t& parameter)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Socket::bind
      Src: /src/pdns/pdns/dnsdistdist/epollmplexer.cc:222,1
    - Dst: EpollFDMultiplexer::EpollFDMultiplexer
      Src: /src/pdns/pdns/dnsdistdist/epollmplexer.cc:224,1
    - Dst: EpollFDMultiplexer::addReadFD
      Src: /src/pdns/pdns/dnsdistdist/epollmplexer.cc:226,1
    - Dst: Socket::getHandle
      Src: /src/pdns/pdns/dnsdistdist/epollmplexer.cc:226,1
    - Dst: EpollFDMultiplexer::run
      Src: /src/pdns/pdns/dnsdistdist/epollmplexer.cc:229,1
    - Dst: EpollFDMultiplexer::removeReadFD
      Src: /src/pdns/pdns/dnsdistdist/epollmplexer.cc:231,1
    - Dst: Socket::getHandle
      Src: /src/pdns/pdns/dnsdistdist/epollmplexer.cc:231,1
    - Dst: EpollFDMultiplexer::removeReadFD
      Src: /src/pdns/pdns/dnsdistdist/epollmplexer.cc:232,1
    - Dst: Socket::getHandle
      Src: /src/pdns/pdns/dnsdistdist/epollmplexer.cc:232,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 233
      start: 217
    functionDepth: 0
    functionLinenumber: 217
    functionLinenumberEnd: 233
    functionName: main
    functionSourceFile: /src/pdns/pdns/dnsdistdist/epollmplexer.cc
    functionUses: 34
    functionsReached:
    - EpollFDMultiplexer::EpollFDMultiplexer
    - Socket::getHandle
    - EpollFDMultiplexer::removeReadFD
    - EpollFDMultiplexer::addReadFD
    - EpollFDMultiplexer::run
    - Socket::bind
    linkageType: ''
    returnType: int
    signature: int main()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/ednsextendederror.cc:28,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnsdistdist/ednsextendederror.cc:31,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/ednsextendederror.cc:31,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnsdistdist/ednsextendederror.cc:31,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/ednsextendederror.cc:31,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/ednsextendederror.cc:33,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/ednsextendederror.cc:34,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/ednsextendederror.cc:34,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/ednsextendederror.cc:34,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - ' option'
    - ' eee'
    argTypes:
    - std::string_view
    - EDNSExtendedError
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 26
    functionDepth: 0
    functionLinenumber: 26
    functionLinenumberEnd: 38
    functionName: getEDNSExtendedErrorOptFromStringView
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ednsextendederror.cc
    functionUses: 2
    functionsReached:
    - std::string
    - at
    - size
    - static_cast<uint8_t>
    linkageType: ''
    returnType: bool
    signature: bool getEDNSExtendedErrorOptFromStringView(const std::string_view&
      option, EDNSExtendedError& eee)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getEDNSExtendedErrorOptFromStringView
      Src: /src/pdns/pdns/dnsdistdist/ednsextendederror.cc:42,1
    - Dst: std::string_view
      Src: /src/pdns/pdns/dnsdistdist/ednsextendederror.cc:42,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' option'
    - ' eee'
    argTypes:
    - string
    - EDNSExtendedError
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 40
    functionDepth: 0
    functionLinenumber: 40
    functionLinenumberEnd: 43
    functionName: getEDNSExtendedErrorOptFromString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ednsextendederror.cc
    functionUses: 1
    functionsReached:
    - std::string_view
    - getEDNSExtendedErrorOptFromStringView
    linkageType: ''
    returnType: bool
    signature: bool getEDNSExtendedErrorOptFromString(const string& option, EDNSExtendedError&
      eee)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getEDNSExtendedErrorOptFromStringView
      Src: /src/pdns/pdns/dnsdistdist/ednsextendederror.cc:47,1
    - Dst: std::string_view
      Src: /src/pdns/pdns/dnsdistdist/ednsextendederror.cc:47,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - option
    - len
    - ' eee'
    argTypes:
    - char*
    - unsigned int
    - EDNSExtendedError
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 45
    functionDepth: 0
    functionLinenumber: 45
    functionLinenumberEnd: 48
    functionName: getEDNSExtendedErrorOptFromString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ednsextendederror.cc
    functionUses: 1
    functionsReached:
    - std::string_view
    - getEDNSExtendedErrorOptFromStringView
    linkageType: ''
    returnType: bool
    signature: bool getEDNSExtendedErrorOptFromString(const char* option, unsigned
      int len, EDNSExtendedError& eee)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: extraText::size
      Src: /src/pdns/pdns/dnsdistdist/ednsextendederror.cc:52,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/dnsdistdist/ednsextendederror.cc:52,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/ednsextendederror.cc:52,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/ednsextendederror.cc:53,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/ednsextendederror.cc:53,1
    - Dst: extraText::size
      Src: /src/pdns/pdns/dnsdistdist/ednsextendederror.cc:53,1
    - Dst: string::reserve
      Src: /src/pdns/pdns/dnsdistdist/ednsextendederror.cc:57,1
    - Dst: extraText::size
      Src: /src/pdns/pdns/dnsdistdist/ednsextendederror.cc:57,1
    - Dst: string::resize
      Src: /src/pdns/pdns/dnsdistdist/ednsextendederror.cc:58,1
    - Dst: static_cast<char>
      Src: /src/pdns/pdns/dnsdistdist/ednsextendederror.cc:60,1
    - Dst: static_cast<uint16_t>
      Src: /src/pdns/pdns/dnsdistdist/ednsextendederror.cc:60,1
    - Dst: static_cast<char>
      Src: /src/pdns/pdns/dnsdistdist/ednsextendederror.cc:61,1
    - Dst: static_cast<uint16_t>
      Src: /src/pdns/pdns/dnsdistdist/ednsextendederror.cc:61,1
    - Dst: string::append
      Src: /src/pdns/pdns/dnsdistdist/ednsextendederror.cc:62,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - ' eee'
    argTypes:
    - EDNSExtendedError
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 50
    functionDepth: 1
    functionLinenumber: 50
    functionLinenumberEnd: 65
    functionName: makeEDNSExtendedErrorOptString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ednsextendederror.cc
    functionUses: 3
    functionsReached:
    - pdns::max
    - string::resize
    - static_cast<size_t>
    - string::reserve
    - std::to_string
    - std::runtime_error
    - extraText::size
    - string::append
    - static_cast<uint16_t>
    - static_cast<char>
    linkageType: ''
    returnType: string
    signature: string makeEDNSExtendedErrorOptString(const EDNSExtendedError& eee)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 67
    functionDepth: 0
    functionLinenumber: 67
    functionLinenumberEnd: 67
    functionName: DNSQuestion
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.hh
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void DNSQuestion(const DNSQuestion&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 68
    functionDepth: 0
    functionLinenumber: 68
    functionLinenumberEnd: 68
    functionName: '& operator=(const DNSQuestion&)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: DNSQuestion
    signature: DNSQuestion & operator=(const DNSQuestion&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 69
    functionDepth: 0
    functionLinenumber: 69
    functionLinenumberEnd: 69
    functionName: DNSQuestion
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.hh
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void DNSQuestion(DNSQuestion&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 70
    functionDepth: 0
    functionLinenumber: 70
    functionLinenumberEnd: 70
    functionName: ~DNSQuestion()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~DNSQuestion()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 74
    functionDepth: 0
    functionLinenumber: 74
    functionLinenumberEnd: 77
    functionName: '& getData() const'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: PacketBuffer
    signature: PacketBuffer & getData() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 78
    functionDepth: 0
    functionLinenumber: 78
    functionLinenumberEnd: 81
    functionName: '& getMutableData()'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: PacketBuffer
    signature: PacketBuffer & getMutableData()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: getData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.hh:87,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.hh:88,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.hh:88,1
    - Dst: getData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.hh:88,1
    - Dst: dnsheader_aligned
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.hh:90,1
    - Dst: getData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.hh:90,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 85
    functionDepth: 0
    functionLinenumber: 85
    functionLinenumberEnd: 91
    functionName: getHeader
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.hh
    functionUses: 149
    functionsReached:
    - getData
    - std::to_string
    - dnsheader_aligned
    - std::runtime_error
    linkageType: ''
    returnType: dnsheader_aligned
    signature: dnsheader_aligned getHeader() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: getData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.hh:97,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.hh:98,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.hh:98,1
    - Dst: getData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.hh:98,1
    - Dst: reinterpret_cast<dnsheader*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.hh:101,1
    - Dst: getMutableData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.hh:101,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 95
    functionDepth: 0
    functionLinenumber: 95
    functionLinenumberEnd: 102
    functionName: getMutableHeader
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.hh
    functionUses: 1
    functionsReached:
    - getMutableData
    - std::to_string
    - std::runtime_error
    - reinterpret_cast<dnsheader*>
    - getData
    linkageType: ''
    returnType: dnsheader
    signature: dnsheader * getMutableHeader()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.hh:106,1
    - Dst: getMaximumSize
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.hh:106,1
    - Dst: getMaximumSize
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.hh:106,1
    - Dst: getData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.hh:106,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - more
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 107
      start: 104
    functionDepth: 1
    functionLinenumber: 104
    functionLinenumberEnd: 107
    functionName: hasRoomFor
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.hh
    functionUses: 6
    functionsReached:
    - getMaximumSize
    - getData
    linkageType: ''
    returnType: bool
    signature: bool hasRoomFor(size_t more) const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: overTCP
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.hh:111,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.hh:112,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 115
      start: 109
    functionDepth: 1
    functionLinenumber: 109
    functionLinenumberEnd: 115
    functionName: getMaximumSize
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.hh
    functionUses: 7
    functionsReached:
    - pdns::max
    - overTCP
    linkageType: ''
    returnType: size_t
    signature: size_t getMaximumSize() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 117
    functionDepth: 0
    functionLinenumber: 117
    functionLinenumberEnd: 120
    functionName: getProtocol
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.hh
    functionUses: 30
    functionsReached: []
    linkageType: ''
    returnType: dnsdist::Protocol
    signature: dnsdist::Protocol getProtocol() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 125
      start: 122
    functionDepth: 0
    functionLinenumber: 122
    functionLinenumberEnd: 125
    functionName: overTCP
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.hh
    functionUses: 8
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool overTCP() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::make_unique<QTag>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.hh:130,1
    - Dst: qTag::insert_or_assign
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.hh:132,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.hh:132,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.hh:132,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 5
    argCount: 2
    argNames:
    - ' key'
    - ' value'
    argTypes:
    - std::string
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 133
      start: 127
    functionDepth: 0
    functionLinenumber: 127
    functionLinenumberEnd: 133
    functionName: setTag
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.hh
    functionUses: 16
    functionsReached:
    - std::make_unique<QTag>
    - std::move
    - qTag::insert_or_assign
    linkageType: ''
    returnType: void
    signature: void setTag(std::string&& key, std::string&& value)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::make_unique<QTag>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.hh:138,1
    - Dst: qTag::insert_or_assign
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.hh:140,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - ' key'
    - ' value'
    argTypes:
    - std::string
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 141
      start: 135
    functionDepth: 0
    functionLinenumber: 135
    functionLinenumberEnd: 141
    functionName: setTag
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.hh
    functionUses: 16
    functionsReached:
    - std::make_unique<QTag>
    - qTag::insert_or_assign
    linkageType: ''
    returnType: void
    signature: void setTag(const std::string& key, const std::string& value)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::make_unique<QTag>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.hh:146,1
    - Dst: qTag::insert_or_assign
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.hh:148,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.hh:148,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - ' key'
    - ' value'
    argTypes:
    - std::string
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 149
      start: 143
    functionDepth: 0
    functionLinenumber: 143
    functionLinenumberEnd: 149
    functionName: setTag
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.hh
    functionUses: 16
    functionsReached:
    - std::make_unique<QTag>
    - std::move
    - qTag::insert_or_assign
    linkageType: ''
    returnType: void
    signature: void setTag(const std::string& key, std::string&& value)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: qTag::erase
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.hh:154,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ' key'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 156
      start: 151
    functionDepth: 0
    functionLinenumber: 151
    functionLinenumberEnd: 156
    functionName: unsetTag
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.hh
    functionUses: 6
    functionsReached:
    - qTag::erase
    linkageType: ''
    returnType: void
    signature: void unsetTag(const std::string& key)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: qTag::find
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.hh:161,1
    - Dst: qTag::cend
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.hh:162,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - ' key'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 167
      start: 158
    functionDepth: 0
    functionLinenumber: 158
    functionLinenumberEnd: 167
    functionName: getTag
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.hh
    functionUses: 5
    functionsReached:
    - qTag::find
    - qTag::cend
    linkageType: ''
    returnType: std::optional<std::string>
    signature: std::optional<std::string> getTag(const std::string& key) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 172
      start: 169
    functionDepth: 0
    functionLinenumber: 169
    functionLinenumberEnd: 172
    functionName: '& getQueryRealTime() const'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct timespec
    signature: struct timespec & getQueryRealTime() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 177
      start: 174
    functionDepth: 0
    functionLinenumber: 174
    functionLinenumberEnd: 177
    functionName: isAsynchronous
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.hh
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool isAsynchronous() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 182
      start: 179
    functionDepth: 0
    functionLinenumber: 179
    functionLinenumberEnd: 182
    functionName: getIncomingTCPState
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::shared_ptr<IncomingTCPConnectionState>
    signature: std::shared_ptr<IncomingTCPConnectionState> getIncomingTCPState() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 187
      start: 184
    functionDepth: 0
    functionLinenumber: 184
    functionLinenumberEnd: 187
    functionName: getFrontend
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: ClientState
    signature: ClientState * getFrontend() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 3
    argNames:
    - ' ids_'
    - ' data_'
    - ' downstream'
    argTypes:
    - InternalQueryState
    - PacketBuffer
    - std::shared_ptr<DownstreamState>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 218
      start: 217
    functionDepth: 0
    functionLinenumber: 217
    functionLinenumberEnd: 218
    functionName: DNSResponse
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void DNSResponse(InternalQueryState& ids_, PacketBuffer& data_, const
      std::shared_ptr<DownstreamState>& downstream)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 219
      start: 219
    functionDepth: 0
    functionLinenumber: 219
    functionLinenumberEnd: 219
    functionName: DNSResponse
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void DNSResponse(const DNSResponse&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 220
      start: 220
    functionDepth: 0
    functionLinenumber: 220
    functionLinenumberEnd: 220
    functionName: '& operator=(const DNSResponse&)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: DNSResponse
    signature: DNSResponse & operator=(const DNSResponse&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 221
      start: 221
    functionDepth: 0
    functionLinenumber: 221
    functionLinenumberEnd: 221
    functionName: DNSResponse
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void DNSResponse(DNSResponse&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: start
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.hh:237,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - burst
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 238
      start: 234
    functionDepth: 1
    functionLinenumber: 234
    functionLinenumberEnd: 238
    functionName: BasicQPSLimiter::BasicQPSLimiter
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.hh
    functionUses: 0
    functionsReached:
    - start
    linkageType: ''
    returnType: void
    signature: void BasicQPSLimiter(unsigned int burst)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 242
      start: 240
    functionDepth: 0
    functionLinenumber: 240
    functionLinenumberEnd: 242
    functionName: ~BasicQPSLimiter()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~BasicQPSLimiter()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: BasicQPSLimiter::checkOnly
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.hh:246,1
    - Dst: BasicQPSLimiter::addHit
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.hh:247,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - rate
    - burst
    argTypes:
    - unsigned int
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 252
      start: 244
    functionDepth: 1
    functionLinenumber: 244
    functionLinenumberEnd: 252
    functionName: BasicQPSLimiter::check
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.hh
    functionUses: 0
    functionsReached:
    - BasicQPSLimiter::checkOnly
    - BasicQPSLimiter::addHit
    linkageType: ''
    returnType: bool
    signature: bool check(unsigned int rate, unsigned int burst) const
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: udiffAndSet
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.hh:256,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - rate
    - burst
    argTypes:
    - unsigned int
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 272
      start: 254
    functionDepth: 1
    functionLinenumber: 254
    functionLinenumberEnd: 272
    functionName: BasicQPSLimiter::checkOnly
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.hh
    functionUses: 1
    functionsReached:
    - udiffAndSet
    linkageType: ''
    returnType: bool
    signature: bool checkOnly(unsigned int rate, unsigned int burst) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 277
      start: 274
    functionDepth: 0
    functionLinenumber: 274
    functionLinenumberEnd: 277
    functionName: BasicQPSLimiter::addHit
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.hh
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void addHit() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' cutOff'
    argTypes:
    - struct timespec
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 282
      start: 279
    functionDepth: 0
    functionLinenumber: 279
    functionLinenumberEnd: 282
    functionName: BasicQPSLimiter::seenSince
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool seenSince(const struct timespec& cutOff) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: start
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.hh:295,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - rate
    - burst
    argTypes:
    - unsigned int
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 296
      start: 292
    functionDepth: 1
    functionLinenumber: 292
    functionLinenumberEnd: 296
    functionName: QPSLimiter::QPSLimiter
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.hh
    functionUses: 0
    functionsReached:
    - start
    linkageType: ''
    returnType: void
    signature: void QPSLimiter(unsigned int rate, unsigned int burst)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 301
      start: 298
    functionDepth: 0
    functionLinenumber: 298
    functionLinenumberEnd: 301
    functionName: QPSLimiter::getRate
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int getRate() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: BasicQPSLimiter::check
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.hh:309,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 310
      start: 303
    functionDepth: 0
    functionLinenumber: 303
    functionLinenumberEnd: 310
    functionName: QPSLimiter::check
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.hh
    functionUses: 1
    functionsReached:
    - BasicQPSLimiter::check
    linkageType: ''
    returnType: bool
    signature: bool check() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: BasicQPSLimiter::checkOnly
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.hh:318,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 319
      start: 312
    functionDepth: 2
    functionLinenumber: 312
    functionLinenumberEnd: 319
    functionName: QPSLimiter::checkOnly
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.hh
    functionUses: 2
    functionsReached:
    - BasicQPSLimiter::checkOnly
    linkageType: ''
    returnType: bool
    signature: bool checkOnly() const
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 326
      start: 321
    functionDepth: 0
    functionLinenumber: 321
    functionLinenumberEnd: 326
    functionName: QPSLimiter::addHit
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.hh
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void addHit() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 8
    argNames:
    - ' local_'
    - isTCP_
    - doReusePort
    - fastOpenQueue
    - ' itfName'
    - ' cpus_'
    - enableProxyProtocol
    - padResponses
    argTypes:
    - ComboAddress
    - bool
    - bool
    - int
    - std::string
    - std::set<int>
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 345
      start: 342
    functionDepth: 0
    functionLinenumber: 342
    functionLinenumberEnd: 345
    functionName: ClientState
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ClientState(const ComboAddress& local_, bool isTCP_, bool doReusePort,
      int fastOpenQueue, const std::string& itfName, const std::set<int>& cpus_, bool
      enableProxyProtocol, bool padResponses)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 400
      start: 397
    functionDepth: 0
    functionLinenumber: 397
    functionLinenumberEnd: 400
    functionName: getSocket
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.hh
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int getSocket() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 405
      start: 402
    functionDepth: 0
    functionLinenumber: 402
    functionLinenumberEnd: 405
    functionName: isUDP
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.hh
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool isUDP() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 410
      start: 407
    functionDepth: 0
    functionLinenumber: 407
    functionLinenumberEnd: 410
    functionName: isTCP
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.hh
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool isTCP() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 415
      start: 412
    functionDepth: 0
    functionLinenumber: 412
    functionLinenumberEnd: 415
    functionName: isDoH
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.hh
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool isDoH() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: isHTTPS
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.hh:419,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 420
      start: 417
    functionDepth: 1
    functionLinenumber: 417
    functionLinenumberEnd: 420
    functionName: hasTLS
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.hh
    functionUses: 4
    functionsReached:
    - isHTTPS
    linkageType: ''
    returnType: bool
    signature: bool hasTLS() const
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.hh:430,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 431
      start: 422
    functionDepth: 0
    functionLinenumber: 422
    functionLinenumberEnd: 431
    functionName: getTLSFrontend
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.hh
    functionUses: 1
    functionsReached:
    - std::runtime_error
    linkageType: ''
    returnType: std::shared_ptr<const TLSFrontend>
    signature: std::shared_ptr<const TLSFrontend> getTLSFrontend() const
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: isDoH
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.hh:441,1
    - Dst: hasTLS
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.hh:444,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 24
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 459
      start: 433
    functionDepth: 2
    functionLinenumber: 433
    functionLinenumberEnd: 459
    functionName: getProtocol
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.hh
    functionUses: 30
    functionsReached:
    - hasTLS
    - isDoH
    linkageType: ''
    returnType: dnsdist::Protocol
    signature: dnsdist::Protocol getProtocol() const
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: isHTTPS
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.hh:472,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 487
      start: 461
    functionDepth: 1
    functionLinenumber: 461
    functionLinenumberEnd: 487
    functionName: getType
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.hh
    functionUses: 7
    functionsReached:
    - isHTTPS
    linkageType: ''
    returnType: std::string
    signature: std::string getType() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: removeSocket
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.hh:492,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - socket
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 495
      start: 489
    functionDepth: 0
    functionLinenumber: 489
    functionLinenumberEnd: 495
    functionName: detachFilter
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.hh
    functionUses: 0
    functionsReached:
    - removeSocket
    linkageType: ''
    returnType: void
    signature: void detachFilter(int socket)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: detachFilter
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.hh:499,1
    - Dst: addSocket
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.hh:501,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - ' bpf'
    - socket
    argTypes:
    - shared_ptr<BPFFilter>
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 503
      start: 497
    functionDepth: 1
    functionLinenumber: 497
    functionLinenumberEnd: 503
    functionName: attachFilter
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.hh
    functionUses: 0
    functionsReached:
    - addSocket
    - detachFilter
    linkageType: ''
    returnType: void
    signature: void attachFilter(shared_ptr<BPFFilter>& bpf, int socket)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: detachFilter
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.hh:508,1
    - Dst: getSocket
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.hh:508,1
    - Dst: detachFilter
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.hh:512,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 518
      start: 505
    functionDepth: 1
    functionLinenumber: 505
    functionLinenumberEnd: 518
    functionName: detachFilter
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.hh
    functionUses: 2
    functionsReached:
    - getSocket
    - detachFilter
    linkageType: ''
    returnType: void
    signature: void detachFilter()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: detachFilter
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.hh:522,1
    - Dst: addSocket
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.hh:524,1
    - Dst: getSocket
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.hh:524,1
    - Dst: addSocket
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.hh:528,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - ' bpf'
    argTypes:
    - shared_ptr<BPFFilter>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 532
      start: 520
    functionDepth: 1
    functionLinenumber: 520
    functionLinenumberEnd: 532
    functionName: attachFilter
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.hh
    functionUses: 0
    functionsReached:
    - addSocket
    - getSocket
    - detachFilter
    linkageType: ''
    returnType: void
    signature: void attachFilter(shared_ptr<BPFFilter>& bpf)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - nbQueries
    - durationMs
    - nbIOs
    argTypes:
    - size_t
    - uint64_t
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 539
      start: 534
    functionDepth: 0
    functionLinenumber: 534
    functionLinenumberEnd: 539
    functionName: updateTCPMetrics
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.hh
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void updateTCPMetrics(size_t nbQueries, uint64_t durationMs, size_t
      nbIOs)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 547
      start: 547
    functionDepth: 0
    functionLinenumber: 547
    functionLinenumberEnd: 547
    functionName: DownstreamState
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void DownstreamState(const DownstreamState&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 548
      start: 548
    functionDepth: 0
    functionLinenumber: 548
    functionLinenumberEnd: 548
    functionName: DownstreamState
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void DownstreamState(DownstreamState&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 549
      start: 549
    functionDepth: 0
    functionLinenumber: 549
    functionLinenumberEnd: 549
    functionName: '& operator=(const DownstreamState&)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: DownstreamState
    signature: DownstreamState & operator=(const DownstreamState&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 550
      start: 550
    functionDepth: 0
    functionLinenumber: 550
    functionLinenumberEnd: 550
    functionName: '& operator=(DownstreamState&&)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: DownstreamState
    signature: DownstreamState & operator=(DownstreamState&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 576
      start: 574
    functionDepth: 0
    functionLinenumber: 574
    functionLinenumberEnd: 576
    functionName: BaseConfig
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void BaseConfig()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' remote_'
    argTypes:
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 580
      start: 577
    functionDepth: 0
    functionLinenumber: 577
    functionLinenumberEnd: 580
    functionName: BaseConfig
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void BaseConfig(const ComboAddress& remote_)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 646
      start: 643
    functionDepth: 0
    functionLinenumber: 643
    functionLinenumberEnd: 646
    functionName: Config
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.hh
    functionUses: 18
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Config()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' remote_'
    argTypes:
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 650
      start: 647
    functionDepth: 0
    functionLinenumber: 647
    functionLinenumberEnd: 650
    functionName: Config
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.hh
    functionUses: 18
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Config(const ComboAddress& remote_)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: store
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.hh:654,1
    - Dst: checkInterval::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.hh:654,1
    - Dst: store
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.hh:655,1
    - Dst: checkTimeout::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.hh:655,1
    - Dst: store
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.hh:656,1
    - Dst: maxCheckFailures::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.hh:656,1
    - Dst: store
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.hh:657,1
    - Dst: minRiseSuccesses::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.hh:657,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - ' c'
    argTypes:
    - Config
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 658
      start: 651
    functionDepth: 0
    functionLinenumber: 651
    functionLinenumberEnd: 658
    functionName: Config
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.hh
    functionUses: 18
    functionsReached:
    - maxCheckFailures::load
    - checkTimeout::load
    - checkInterval::load
    - store
    - minRiseSuccesses::load
    linkageType: ''
    returnType: void
    signature: void Config(const Config& c)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: apiServerConfig
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.hh:690,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' remote'
    argTypes:
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 692
      start: 689
    functionDepth: 0
    functionLinenumber: 689
    functionLinenumberEnd: 692
    functionName: DownstreamState
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.hh
    functionUses: 0
    functionsReached:
    - apiServerConfig
    linkageType: ''
    returnType: void
    signature: void DownstreamState(const ComboAddress& remote)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: udiffAndSet
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.hh:797,1
    - Dst: store
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.hh:798,1
    - Dst: load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.hh:798,1
    - Dst: queries::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.hh:798,1
    - Dst: store
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.hh:799,1
    - Dst: load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.hh:799,1
    - Dst: reuseds::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.hh:799,1
    - Dst: queries::store
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.hh:800,1
    - Dst: load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.hh:800,1
    - Dst: reuseds::store
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.hh:801,1
    - Dst: load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.hh:801,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 802
      start: 795
    functionDepth: 1
    functionLinenumber: 795
    functionLinenumberEnd: 802
    functionName: updateStatisticsInfo
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.hh
    functionUses: 0
    functionsReached:
    - load
    - reuseds::load
    - queries::load
    - udiffAndSet
    - store
    - queries::store
    - reuseds::store
    linkageType: ''
    returnType: void
    signature: void updateStatisticsInfo()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.hh:813,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 814
      start: 805
    functionDepth: 0
    functionLinenumber: 805
    functionLinenumberEnd: 814
    functionName: isUp
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.hh
    functionUses: 22
    functionsReached:
    - load
    linkageType: ''
    returnType: bool
    signature: bool isUp() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 819
      start: 816
    functionDepth: 0
    functionLinenumber: 816
    functionLinenumberEnd: 819
    functionName: setUp
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.hh
    functionUses: 19
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setUp()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: store
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.hh:823,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - newStatus
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 828
      start: 821
    functionDepth: 0
    functionLinenumber: 821
    functionLinenumberEnd: 828
    functionName: setUpStatus
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.hh
    functionUses: 3
    functionsReached:
    - store
    linkageType: ''
    returnType: void
    signature: void setUpStatus(bool newStatus)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 834
      start: 829
    functionDepth: 0
    functionLinenumber: 829
    functionLinenumberEnd: 834
    functionName: setDown
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.hh
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setDown()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 838
      start: 835
    functionDepth: 0
    functionLinenumber: 835
    functionLinenumberEnd: 838
    functionName: setAuto
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.hh
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setAuto()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 843
      start: 839
    functionDepth: 0
    functionLinenumber: 839
    functionLinenumberEnd: 843
    functionName: setActiveAuto
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.hh
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setActiveAuto()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.hh:848,1
    - Dst: set_capacity
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.hh:848,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 849
      start: 844
    functionDepth: 0
    functionLinenumber: 844
    functionLinenumberEnd: 849
    functionName: setLazyAuto
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.hh
    functionUses: 0
    functionsReached:
    - set_capacity
    - lock
    linkageType: ''
    returnType: void
    signature: void setLazyAuto()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 855
      start: 852
    functionDepth: 0
    functionLinenumber: 852
    functionLinenumberEnd: 855
    functionName: '& getName() const'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: string
    signature: string & getName() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 859
      start: 856
    functionDepth: 0
    functionLinenumber: 856
    functionLinenumberEnd: 859
    functionName: '& getNameWithAddr() const'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: string
    signature: string & getNameWithAddr() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.hh:863,1
    - Dst: remote::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.hh:863,1
    - Dst: remote::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.hh:863,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ' newName'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 864
      start: 860
    functionDepth: 0
    functionLinenumber: 860
    functionLinenumberEnd: 864
    functionName: setName
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.hh
    functionUses: 4
    functionsReached:
    - empty
    - remote::toStringWithPort
    linkageType: ''
    returnType: void
    signature: void setName(const std::string& newName)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.hh:876,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 879
      start: 866
    functionDepth: 0
    functionLinenumber: 866
    functionLinenumberEnd: 879
    functionName: getStatus
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.hh
    functionUses: 5
    functionsReached:
    - load
    linkageType: ''
    returnType: string
    signature: string getStatus() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 890
      start: 887
    functionDepth: 0
    functionLinenumber: 887
    functionLinenumberEnd: 890
    functionName: isStopped
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.hh
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool isStopped() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 894
      start: 891
    functionDepth: 0
    functionLinenumber: 891
    functionLinenumberEnd: 894
    functionName: '& getID() const'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: boost::uuids::uuid
    signature: boost::uuids::uuid & getID() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - nbQueries
    - durationMs
    argTypes:
    - size_t
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 900
      start: 896
    functionDepth: 0
    functionLinenumber: 896
    functionLinenumberEnd: 900
    functionName: updateTCPMetrics
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.hh
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void updateTCPMetrics(size_t nbQueries, uint64_t durationMs)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - latencyUs
    argTypes:
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 905
      start: 902
    functionDepth: 0
    functionLinenumber: 902
    functionLinenumberEnd: 905
    functionName: updateTCPLatency
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.hh
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void updateTCPLatency(double latencyUs)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: addHit
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.hh:911,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 913
      start: 907
    functionDepth: 0
    functionLinenumber: 907
    functionLinenumberEnd: 913
    functionName: incQueriesCount
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.hh
    functionUses: 1
    functionsReached:
    - addHit
    linkageType: ''
    returnType: void
    signature: void incQueriesCount()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 920
      start: 917
    functionDepth: 0
    functionLinenumber: 917
    functionLinenumberEnd: 920
    functionName: doHealthcheckOverTCP
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.hh
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool doHealthcheckOverTCP() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 925
      start: 922
    functionDepth: 0
    functionLinenumber: 922
    functionLinenumberEnd: 925
    functionName: isTCPOnly
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.hh
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool isTCPOnly() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: d_dohPath::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.hh:929,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 930
      start: 927
    functionDepth: 0
    functionLinenumber: 927
    functionLinenumberEnd: 930
    functionName: isDoH
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.hh
    functionUses: 4
    functionsReached:
    - d_dohPath::empty
    linkageType: ''
    returnType: bool
    signature: bool isDoH() const
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: isDoH
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.hh:951,1
    - Dst: isTCPOnly
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.hh:957,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 961
      start: 949
    functionDepth: 1
    functionLinenumber: 949
    functionLinenumberEnd: 961
    functionName: getProtocol
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.hh
    functionUses: 30
    functionsReached:
    - isDoH
    - isTCPOnly
    linkageType: ''
    returnType: dnsdist::Protocol
    signature: dnsdist::Protocol getProtocol() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: isTCPOnly
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.hh:965,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 969
      start: 963
    functionDepth: 0
    functionLinenumber: 963
    functionLinenumberEnd: 969
    functionName: getRelevantLatencyUsec
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.hh
    functionUses: 2
    functionsReached:
    - isTCPOnly
    linkageType: ''
    returnType: double
    signature: double getRelevantLatencyUsec() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-session-cache.cc:30,1
    - Dst: d_sessions::begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-session-cache.cc:33,1
    - Dst: d_sessions::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-session-cache.cc:33,1
    - Dst: auto::second::d_sessions::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-session-cache.cc:34,1
    - Dst: d_sessions::erase
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-session-cache.cc:35,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - now
    - ' data'
    argTypes:
    - time_t
    - LockGuardedHolder<TLSSessionCache::CacheData>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 28
    functionDepth: 2
    functionLinenumber: 28
    functionLinenumberEnd: 43
    functionName: TLSSessionCache::cleanup
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-session-cache.cc
    functionUses: 0
    functionsReached:
    - dnsdist::configuration::getCurrentRuntimeConfiguration
    - d_sessions::erase
    - d_sessions::begin
    - auto::second::d_sessions::empty
    - d_sessions::end
    linkageType: ''
    returnType: void
    signature: void TLSSessionCache::cleanup(time_t now, LockGuardedHolder<TLSSessionCache::CacheData>&
      data)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-session-cache.cc:47,1
    - Dst: TLSSessionCache::cleanup
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-session-cache.cc:49,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-session-cache.cc:52,1
    - Dst: d_sessions::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-session-cache.cc:59,1
    - Dst: d_sessions::pop_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-session-cache.cc:60,1
    - Dst: d_sessions::push_front
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-session-cache.cc:62,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-session-cache.cc:62,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 12
    argCount: 3
    argNames:
    - ' backendID'
    - now
    - ' sessions'
    argTypes:
    - boost::uuids::uuid
    - time_t
    - std::vector<std::unique_ptr<TLSSession>>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 45
    functionDepth: 3
    functionLinenumber: 45
    functionLinenumberEnd: 64
    functionName: TLSSessionCache::putSessions
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-session-cache.cc
    functionUses: 1
    functionsReached:
    - std::move
    - TLSSessionCache::cleanup
    - dnsdist::configuration::getCurrentRuntimeConfiguration
    - d_sessions::pop_back
    - d_sessions::push_front
    - lock
    - d_sessions::size
    linkageType: ''
    returnType: void
    signature: void TLSSessionCache::putSessions(const boost::uuids::uuid& backendID,
      time_t now, std::vector<std::unique_ptr<TLSSession>>&& sessions)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-session-cache.cc:68,1
    - Dst: auto::d_sessions::find
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-session-cache.cc:69,1
    - Dst: auto::d_sessions::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-session-cache.cc:70,1
    - Dst: d_sessions::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-session-cache.cc:75,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-session-cache.cc:80,1
    - Dst: d_sessions::front
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-session-cache.cc:80,1
    - Dst: d_sessions::pop_front
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-session-cache.cc:81,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - ' backendID'
    - now
    argTypes:
    - boost::uuids::uuid
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 66
    functionDepth: 0
    functionLinenumber: 66
    functionLinenumberEnd: 84
    functionName: TLSSessionCache::getSession
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-session-cache.cc
    functionUses: 1
    functionsReached:
    - std::move
    - d_sessions::front
    - d_sessions::size
    - lock
    - d_sessions::pop_front
    - auto::d_sessions::end
    - auto::d_sessions::find
    linkageType: ''
    returnType: std::unique_ptr<TLSSession>
    signature: std::unique_ptr<TLSSession> TLSSessionCache::getSession(const boost::uuids::uuid&
      backendID, time_t now)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-session-cache.cc:89,1
    - Dst: second::d_sessions::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-session-cache.cc:91,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 86
    functionDepth: 0
    functionLinenumber: 86
    functionLinenumberEnd: 94
    functionName: TLSSessionCache::getSize
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-session-cache.cc
    functionUses: 1
    functionsReached:
    - second::d_sessions::size
    - lock
    linkageType: ''
    returnType: size_t
    signature: size_t TLSSessionCache::getSize()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: reinterpret_cast<const uint8_t*>
      Src: /src/pdns/pdns/dnsdistdist/ednsoptions.cc:34,1
    - Dst: static_cast<uint16_t>
      Src: /src/pdns/pdns/dnsdistdist/ednsoptions.cc:36,1
    - Dst: static_cast<uint16_t>
      Src: /src/pdns/pdns/dnsdistdist/ednsoptions.cc:39,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 4
    argNames:
    - data
    - dataLen
    - ' optionCode'
    - ' optionLen'
    argTypes:
    - char*
    - size_t
    - uint16_t
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 27
    functionDepth: 0
    functionLinenumber: 27
    functionLinenumberEnd: 44
    functionName: getNextEDNSOption
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ednsoptions.cc
    functionUses: 5
    functionsReached:
    - static_cast<uint16_t>
    - reinterpret_cast<const uint8_t*>
    linkageType: ''
    returnType: bool
    signature: bool getNextEDNSOption(const char* data, size_t dataLen, uint16_t&
      optionCode, uint16_t& optionLen)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: getNextEDNSOption
      Src: /src/pdns/pdns/dnsdistdist/ednsoptions.cc:69,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 32
    argCount: 5
    argNames:
    - optRR
    - len
    - wantedOption
    - optionValuePosition
    - optionValueSize
    argTypes:
    - char*
    - size_t
    - uint16_t
    - size_t*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 47
    functionDepth: 0
    functionLinenumber: 47
    functionLinenumberEnd: 95
    functionName: getEDNSOption
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ednsoptions.cc
    functionUses: 1
    functionsReached:
    - getNextEDNSOption
    linkageType: ''
    returnType: int
    signature: int getEDNSOption(const char* optRR, const size_t len, uint16_t wantedOption,
      size_t* optionValuePosition, size_t * optionValueSize)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/ednsoptions.cc:99,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/ednsoptions.cc:103,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/ednsoptions.cc:105,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/ednsoptions.cc:109,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/ednsoptions.cc:114,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/ednsoptions.cc:114,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/ednsoptions.cc:114,1
    - Dst: const_cast<char*>
      Src: /src/pdns/pdns/dnsdistdist/ednsoptions.cc:116,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/ednsoptions.cc:116,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/ednsoptions.cc:116,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/ednsoptions.cc:116,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/ednsoptions.cc:118,1
    - Dst: DNSPacketMangler::skipDomainName
      Src: /src/pdns/pdns/dnsdistdist/ednsoptions.cc:119,1
    - Dst: DNSPacketMangler::skipBytes
      Src: /src/pdns/pdns/dnsdistdist/ednsoptions.cc:121,1
    - Dst: DNSPacketMangler::skipDomainName
      Src: /src/pdns/pdns/dnsdistdist/ednsoptions.cc:125,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/ednsoptions.cc:127,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/ednsoptions.cc:127,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/ednsoptions.cc:127,1
    - Dst: DNSPacketMangler::get16BitInt
      Src: /src/pdns/pdns/dnsdistdist/ednsoptions.cc:128,1
    - Dst: DNSPacketMangler::get16BitInt
      Src: /src/pdns/pdns/dnsdistdist/ednsoptions.cc:129,1
    - Dst: DNSPacketMangler::skipBytes
      Src: /src/pdns/pdns/dnsdistdist/ednsoptions.cc:130,1
    - Dst: DNSPacketMangler::getOffset
      Src: /src/pdns/pdns/dnsdistdist/ednsoptions.cc:133,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/ednsoptions.cc:134,1
    - Dst: DNSPacketMangler::skipRData
      Src: /src/pdns/pdns/dnsdistdist/ednsoptions.cc:138,1
    - Dst: getEDNSOptions
      Src: /src/pdns/pdns/dnsdistdist/ednsoptions.cc:140,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/ednsoptions.cc:140,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/ednsoptions.cc:140,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/ednsoptions.cc:140,1
    - Dst: DNSPacketMangler::skipRData
      Src: /src/pdns/pdns/dnsdistdist/ednsoptions.cc:142,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 32
    argCount: 2
    argNames:
    - ' packet'
    - ' options'
    argTypes:
    - PacketBuffer
    - EDNSOptionViewMap
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 150
      start: 97
    functionDepth: 0
    functionLinenumber: 97
    functionLinenumberEnd: 150
    functionName: slowParseEDNSOptions
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ednsoptions.cc
    functionUses: 0
    functionsReached:
    - DNSPacketMangler::skipDomainName
    - const_cast<char*>
    - DNSPacketMangler::skipBytes
    - ntohs
    - at
    - size
    - DNSPacketMangler::skipRData
    - reinterpret_cast<const char*>
    - getEDNSOptions
    - data
    - DNSPacketMangler::getOffset
    - DNSPacketMangler::get16BitInt
    linkageType: ''
    returnType: bool
    signature: bool slowParseEDNSOptions(const PacketBuffer& packet, EDNSOptionViewMap&
      options)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: values::push_back
      Src: /src/pdns/pdns/dnsdistdist/ednsoptions.cc:181,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 22
    argCount: 3
    argNames:
    - optRR
    - len
    - ' options'
    argTypes:
    - char*
    - size_t
    - EDNSOptionViewMap
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 189
      start: 153
    functionDepth: 0
    functionLinenumber: 153
    functionLinenumberEnd: 189
    functionName: getEDNSOptions
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ednsoptions.cc
    functionUses: 2
    functionsReached:
    - values::push_back
    linkageType: ''
    returnType: int
    signature: int getEDNSOptions(const char* optRR, const size_t len, EDNSOptionViewMap&
      options)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/ednsoptions.cc:195,1
    - Dst: static_cast<unsigned char>
      Src: /src/pdns/pdns/dnsdistdist/ednsoptions.cc:198,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/ednsoptions.cc:198,1
    - Dst: static_cast<unsigned char>
      Src: /src/pdns/pdns/dnsdistdist/ednsoptions.cc:198,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/ednsoptions.cc:198,1
    - Dst: static_cast<unsigned char>
      Src: /src/pdns/pdns/dnsdistdist/ednsoptions.cc:200,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/ednsoptions.cc:200,1
    - Dst: static_cast<unsigned char>
      Src: /src/pdns/pdns/dnsdistdist/ednsoptions.cc:200,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/ednsoptions.cc:200,1
    - Dst: emplace_back
      Src: /src/pdns/pdns/dnsdistdist/ednsoptions.cc:207,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/ednsoptions.cc:207,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/ednsoptions.cc:207,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 2
    argNames:
    - ' content'
    - ' options'
    argTypes:
    - std::string
    - std::vector<std::pair<uint16_t, std::string>>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 212
      start: 191
    functionDepth: 0
    functionLinenumber: 191
    functionLinenumberEnd: 212
    functionName: getEDNSOptionsFromContent
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ednsoptions.cc
    functionUses: 0
    functionsReached:
    - size
    - emplace_back
    - std::string
    - at
    - static_cast<unsigned char>
    linkageType: ''
    returnType: bool
    signature: bool getEDNSOptionsFromContent(const std::string& content, std::vector<std::pair<uint16_t,
      std::string>>& options)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: htons
      Src: /src/pdns/pdns/dnsdistdist/ednsoptions.cc:216,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsdistdist/ednsoptions.cc:217,1
    - Dst: length
      Src: /src/pdns/pdns/dnsdistdist/ednsoptions.cc:217,1
    - Dst: append
      Src: /src/pdns/pdns/dnsdistdist/ednsoptions.cc:218,1
    - Dst: append
      Src: /src/pdns/pdns/dnsdistdist/ednsoptions.cc:219,1
    - Dst: append
      Src: /src/pdns/pdns/dnsdistdist/ednsoptions.cc:220,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - optionCode
    - ' payload'
    - ' res'
    argTypes:
    - uint16_t
    - std::string
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 221
      start: 214
    functionDepth: 0
    functionLinenumber: 214
    functionLinenumberEnd: 221
    functionName: generateEDNSOption
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ednsoptions.cc
    functionUses: 7
    functionsReached:
    - length
    - append
    - htons
    linkageType: ''
    returnType: void
    signature: void generateEDNSOption(uint16_t optionCode, const std::string& payload,
      std::string& res)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - ' dnsQuestion'
    - ' selectedBackend'
    argTypes:
    - DNSQuestion
    - std::shared_ptr<DownstreamState>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 46
    functionDepth: 0
    functionLinenumber: 46
    functionLinenumberEnd: 51
    functionName: processQueryAfterRules
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: ProcessQueryResult
    signature: ProcessQueryResult processQueryAfterRules(DNSQuestion& dnsQuestion,
      std::shared_ptr<DownstreamState>& selectedBackend)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - ' response'
    - ' dnsResponse'
    - muted
    argTypes:
    - PacketBuffer
    - DNSResponse
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 53
    functionDepth: 0
    functionLinenumber: 53
    functionLinenumberEnd: 59
    functionName: processResponseAfterRules
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool processResponseAfterRules(PacketBuffer& response, DNSResponse&
      dnsResponse, bool muted)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - ' respRuleActions'
    - ' dnsResponse'
    argTypes:
    - std::vector<dnsdist::rules::ResponseRuleAction>
    - DNSResponse
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 61
    functionDepth: 0
    functionLinenumber: 61
    functionLinenumberEnd: 66
    functionName: applyRulesToResponse
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool applyRulesToResponse(const std::vector<dnsdist::rules::ResponseRuleAction>&
      respRuleActions, DNSResponse& dnsResponse)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 4
    argNames:
    - ' rules'
    - ' ids'
    - ' d_ds'
    - ' sender'
    argTypes:
    - std::vector<dnsdist::rules::ResponseRuleAction>
    - InternalQueryState
    - std::shared_ptr<DownstreamState>
    - std::shared_ptr<TCPQuerySender>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 68
    functionDepth: 0
    functionLinenumber: 68
    functionLinenumberEnd: 75
    functionName: handleTimeoutResponseRules
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool handleTimeoutResponseRules(const std::vector<dnsdist::rules::ResponseRuleAction>&
      rules, InternalQueryState& ids, const std::shared_ptr<DownstreamState>& d_ds,
      const std::shared_ptr<TCPQuerySender>& sender)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ' nameWithAddr'
    - newResult
    argTypes:
    - string
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 77
    functionDepth: 0
    functionLinenumber: 77
    functionLinenumberEnd: 81
    functionName: handleServerStateChange
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void handleServerStateChange(const string& nameWithAddr, bool newResult)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 5
    argNames:
    - origFD
    - ' response'
    - delayMsec
    - ' origDest'
    - ' origRemote'
    argTypes:
    - int
    - PacketBuffer
    - int
    - ComboAddress
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 83
    functionDepth: 0
    functionLinenumber: 83
    functionLinenumberEnd: 91
    functionName: sendUDPResponse
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool sendUDPResponse(int origFD, const PacketBuffer& response, const
      int delayMsec, const ComboAddress& origDest, const ComboAddress& origRemote)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 5
    argNames:
    - ' downstream'
    - queryID
    - ' dnsQuestion'
    - ' query'
    - actuallySend
    argTypes:
    - std::shared_ptr<DownstreamState>
    - uint16_t
    - DNSQuestion
    - PacketBuffer
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 93
    functionDepth: 0
    functionLinenumber: 93
    functionLinenumberEnd: 101
    functionName: assignOutgoingUDPQueryToBackend
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool assignOutgoingUDPQueryToBackend(std::shared_ptr<DownstreamState>&
      downstream, uint16_t queryID, DNSQuestion& dnsQuestion, PacketBuffer& query,
      bool actuallySend)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - ' dnsQuestion'
    - isResponse
    argTypes:
    - DNSQuestion
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 105
    functionDepth: 0
    functionLinenumber: 105
    functionLinenumberEnd: 110
    functionName: dnsdist::getInternalQueryFromDQ
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: std::unique_ptr<CrossProtocolQuery>
    signature: std::unique_ptr<CrossProtocolQuery> getInternalQueryFromDQ(DNSQuestion&
      dnsQuestion, bool isResponse)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - ' dnsQuestion'
    - isResponse
    argTypes:
    - DNSQuestion
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 105
    functionDepth: 0
    functionLinenumber: 105
    functionLinenumberEnd: 110
    functionName: dnsdist::getInternalQueryFromDQ
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: std::unique_ptr<CrossProtocolQuery>
    signature: std::unique_ptr<CrossProtocolQuery> getInternalQueryFromDQ(DNSQuestion&
      dnsQuestion, bool isResponse)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' backend'
    argTypes:
    - DownstreamState
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 114
    functionDepth: 0
    functionLinenumber: 114
    functionLinenumberEnd: 117
    functionName: DNSDistSNMPAgent::sendBackendStatusChangeTrap
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool DNSDistSNMPAgent::sendBackendStatusChangeTrap([[maybe_unused]]
      DownstreamState const& backend)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - ' clientState'
    - ' packet'
    argTypes:
    - ClientState
    - XskPacket
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 127
      start: 122
    functionDepth: 0
    functionLinenumber: 122
    functionLinenumberEnd: 127
    functionName: dnsdist::xsk::XskProcessQuery
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool XskProcessQuery(ClientState& clientState, XskPacket& packet)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - ' clientState'
    - ' packet'
    argTypes:
    - ClientState
    - XskPacket
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 127
      start: 122
    functionDepth: 0
    functionLinenumber: 122
    functionLinenumberEnd: 127
    functionName: dnsdist::xsk::XskProcessQuery
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool XskProcessQuery(ClientState& clientState, XskPacket& packet)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - ' dss'
    - ' response'
    - ' ids'
    argTypes:
    - std::shared_ptr<DownstreamState>
    - PacketBuffer
    - InternalQueryState
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 137
      start: 131
    functionDepth: 0
    functionLinenumber: 131
    functionLinenumberEnd: 137
    functionName: processResponderPacket
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool processResponderPacket(std::shared_ptr<DownstreamState>& dss,
      PacketBuffer& response, InternalQueryState&& ids)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:147,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:147,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:147,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:149,1
    - Dst: MOADNSParser::d_qname::toString
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:149,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:151,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:152,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:153,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:155,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - ' packet'
    argTypes:
    - PacketBuffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 156
      start: 144
    functionDepth: 0
    functionLinenumber: 144
    functionLinenumberEnd: 156
    functionName: validateQuery
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc
    functionUses: 0
    functionsReached:
    - BOOST_CHECK_EQUAL
    - size
    - reinterpret_cast<const char*>
    - data
    - MOADNSParser::d_qname::toString
    linkageType: ''
    returnType: void
    signature: void validateQuery(const PacketBuffer& packet, bool hasEdns = true,
      uint16_t additionals = 0, uint16_t answers = 0, uint16_t authorities = 0)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:162,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:164,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:164,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:164,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:164,1
    - Dst: parseEDNSOptions
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:167,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:168,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:169,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:169,1
    - Dst: auto::find
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:170,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:171,1
    - Dst: auto::cend
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:171,1
    - Dst: generateECSOption
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:174,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:176,1
    - Dst: second::values::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:176,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:177,1
    - Dst: string::substr
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:177,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:177,1
    - Dst: second::values::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:177,1
    - Dst: second::values::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:177,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 2
    argNames:
    - ' packet'
    - ' expected'
    argTypes:
    - PacketBuffer
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 178
      start: 158
    functionDepth: 1
    functionLinenumber: 158
    functionLinenumberEnd: 178
    functionName: validateECS
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc
    functionUses: 0
    functionsReached:
    - generateECSOption
    - BOOST_REQUIRE_EQUAL
    - second::values::size
    - second::values::at
    - size
    - DNSName
    - parseEDNSOptions
    - BOOST_CHECK_EQUAL
    - reinterpret_cast<const char*>
    - string::substr
    - BOOST_REQUIRE
    - data
    - std::string
    - auto::cend
    - auto::find
    - auto::size
    - ComboAddress
    linkageType: ''
    returnType: void
    signature: void validateECS(const PacketBuffer& packet, const ComboAddress& expected)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:183,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:183,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:183,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:185,1
    - Dst: MOADNSParser::d_qname::toString
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:185,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:187,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:188,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:189,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:190,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:191,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - ' packet'
    - hasEdns
    argTypes:
    - PacketBuffer
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 192
      start: 180
    functionDepth: 0
    functionLinenumber: 180
    functionLinenumberEnd: 192
    functionName: validateResponse
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc
    functionUses: 0
    functionsReached:
    - BOOST_CHECK_EQUAL
    - size
    - reinterpret_cast<const char*>
    - data
    - MOADNSParser::d_qname::toString
    linkageType: ''
    returnType: void
    signature: void validateResponse(const PacketBuffer& packet, bool hasEdns, uint8_t
      additionalCount = 0)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: generateECSOption
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:201,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:205,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:206,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:214,1
    - Dst: PacketBuffer::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:214,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:214,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:215,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:216,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:218,1
    - Dst: handleEDNSClientSubnet
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:218,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:219,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:219,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:219,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:220,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:221,1
    - Dst: validateQuery
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:222,1
    - Dst: validateECS
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:223,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:233,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:233,1
    - Dst: PacketBuffer::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:233,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:233,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:234,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:235,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:237,1
    - Dst: handleEDNSClientSubnet
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:237,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:237,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:238,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:239,1
    - Dst: PacketBuffer::resize
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:240,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:240,1
    - Dst: validateQuery
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:241,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:249,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:249,1
    - Dst: PacketBuffer::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:249,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:249,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:250,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:251,1
    - Dst: PacketBuffer::resize
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:255,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:255,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:260,1
    - Dst: handleEDNSClientSubnet
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:260,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:261,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:261,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:261,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:262,1
    - Dst: memcmp
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:262,1
    - Dst: PacketBuffer::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:262,1
    - Dst: PacketBuffer::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:262,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:262,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:263,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:264,1
    - Dst: validateQuery
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:265,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 40
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 266
      start: 194
    functionDepth: 2
    functionLinenumber: 194
    functionLinenumberEnd: 266
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc
    functionUses: 0
    functionsReached:
    - reinterpret_cast<char*>
    - validateECS
    - generateECSOption
    - memcmp
    - PacketBuffer::data
    - GenericDNSPacketWriter::getHeader
    - BOOST_CHECK_EQUAL
    - DNSName
    - handleEDNSClientSubnet
    - PacketBuffer::size
    - PacketBuffer::resize
    - validateQuery
    - BOOST_CHECK
    - BOOST_REQUIRE_EQUAL
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(addECSWithoutEDNS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: generateECSOption
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:279,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:283,1
    - Dst: GenericDNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:284,1
    - Dst: GenericDNSPacketWriter::xfrIP
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:285,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:286,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:287,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:295,1
    - Dst: PacketBuffer::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:295,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:295,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:296,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:297,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:299,1
    - Dst: handleEDNSClientSubnet
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:299,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:300,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:300,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:300,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:301,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:302,1
    - Dst: validateQuery
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:303,1
    - Dst: validateECS
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:304,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:314,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:314,1
    - Dst: PacketBuffer::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:314,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:314,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:315,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:316,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:318,1
    - Dst: handleEDNSClientSubnet
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:318,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:318,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:319,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:320,1
    - Dst: PacketBuffer::resize
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:321,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:321,1
    - Dst: validateQuery
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:322,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:330,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:330,1
    - Dst: PacketBuffer::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:330,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:330,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:331,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:332,1
    - Dst: PacketBuffer::resize
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:336,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:336,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:341,1
    - Dst: handleEDNSClientSubnet
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:341,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:342,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:342,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:342,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:343,1
    - Dst: memcmp
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:343,1
    - Dst: PacketBuffer::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:343,1
    - Dst: PacketBuffer::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:343,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:343,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:344,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:345,1
    - Dst: validateQuery
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:346,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 43
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 347
      start: 268
    functionDepth: 2
    functionLinenumber: 268
    functionLinenumberEnd: 347
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc
    functionUses: 0
    functionsReached:
    - reinterpret_cast<char*>
    - validateECS
    - generateECSOption
    - memcmp
    - PacketBuffer::data
    - GenericDNSPacketWriter::xfrIP
    - GenericDNSPacketWriter::startRecord
    - GenericDNSPacketWriter::getHeader
    - BOOST_CHECK_EQUAL
    - DNSName
    - handleEDNSClientSubnet
    - GenericDNSPacketWriter::commit
    - PacketBuffer::size
    - PacketBuffer::resize
    - validateQuery
    - BOOST_CHECK
    - BOOST_REQUIRE_EQUAL
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(addECSWithoutEDNSButWithAnswer)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:352,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:360,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:364,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:364,1
    - Dst: auto::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:364,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:364,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:365,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:366,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:367,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:371,1
    - Dst: parseEDNSOptions
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:371,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:374,1
    - Dst: handleEDNSClientSubnet
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:374,1
    - Dst: BOOST_CHECK_GT
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:375,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:375,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:375,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:376,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:377,1
    - Dst: validateQuery
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:378,1
    - Dst: validateECS
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:379,1
    - Dst: auto::resize
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:383,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:388,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:388,1
    - Dst: auto::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:388,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:388,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:389,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:390,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:391,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:394,1
    - Dst: handleEDNSClientSubnet
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:394,1
    - Dst: BOOST_CHECK_GT
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:395,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:395,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:395,1
    - Dst: BOOST_CHECK_LT
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:396,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:396,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:397,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:398,1
    - Dst: validateQuery
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:399,1
    - Dst: validateECS
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:400,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 30
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 401
      start: 349
    functionDepth: 2
    functionLinenumber: 349
    functionLinenumberEnd: 401
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc
    functionUses: 0
    functionsReached:
    - reinterpret_cast<char*>
    - validateECS
    - BOOST_CHECK_GT
    - BOOST_CHECK_LT
    - GenericDNSPacketWriter::getHeader
    - auto::data
    - DNSName
    - BOOST_CHECK_EQUAL
    - parseEDNSOptions
    - handleEDNSClientSubnet
    - reinterpret_cast<const char*>
    - PacketBuffer::size
    - auto::resize
    - validateQuery
    - BOOST_CHECK
    - auto::size
    - ComboAddress
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(addECSWithoutEDNSAlreadyParsed)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: generateECSOption
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:410,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:414,1
    - Dst: GenericDNSPacketWriter::addOpt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:415,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:416,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:423,1
    - Dst: auto::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:423,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:423,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:424,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:425,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:427,1
    - Dst: handleEDNSClientSubnet
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:427,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:428,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:428,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:428,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:429,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:430,1
    - Dst: validateQuery
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:431,1
    - Dst: validateECS
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:432,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:440,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:440,1
    - Dst: auto::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:440,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:440,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:441,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:442,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:444,1
    - Dst: handleEDNSClientSubnet
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:444,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:444,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:445,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:445,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:445,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:446,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:447,1
    - Dst: validateQuery
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:448,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 25
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 449
      start: 403
    functionDepth: 2
    functionLinenumber: 403
    functionLinenumberEnd: 449
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc
    functionUses: 0
    functionsReached:
    - GenericDNSPacketWriter::addOpt
    - generateECSOption
    - validateECS
    - GenericDNSPacketWriter::getHeader
    - auto::data
    - BOOST_CHECK_EQUAL
    - handleEDNSClientSubnet
    - GenericDNSPacketWriter::commit
    - PacketBuffer::size
    - reinterpret_cast<const char*>
    - DNSName
    - validateQuery
    - BOOST_CHECK
    - auto::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(addECSWithEDNSNoECS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:454,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:462,1
    - Dst: GenericDNSPacketWriter::addOpt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:463,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:464,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:468,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:468,1
    - Dst: auto::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:468,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:468,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:469,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:470,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:471,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:475,1
    - Dst: parseEDNSOptions
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:475,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:478,1
    - Dst: handleEDNSClientSubnet
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:478,1
    - Dst: BOOST_CHECK_GT
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:479,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:479,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:479,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:480,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:481,1
    - Dst: validateQuery
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:482,1
    - Dst: validateECS
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:483,1
    - Dst: auto::resize
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:487,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:491,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:491,1
    - Dst: auto::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:491,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:491,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:492,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:493,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:494,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:497,1
    - Dst: handleEDNSClientSubnet
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:497,1
    - Dst: BOOST_CHECK_GT
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:498,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:498,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:498,1
    - Dst: BOOST_CHECK_LT
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:499,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:499,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:500,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:501,1
    - Dst: validateQuery
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:502,1
    - Dst: validateECS
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:503,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 32
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 504
      start: 451
    functionDepth: 2
    functionLinenumber: 451
    functionLinenumberEnd: 504
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc
    functionUses: 0
    functionsReached:
    - GenericDNSPacketWriter::addOpt
    - validateECS
    - BOOST_CHECK_GT
    - BOOST_CHECK_LT
    - GenericDNSPacketWriter::getHeader
    - DNSName
    - auto::data
    - BOOST_CHECK_EQUAL
    - GenericDNSPacketWriter::commit
    - parseEDNSOptions
    - reinterpret_cast<const char*>
    - handleEDNSClientSubnet
    - PacketBuffer::size
    - auto::resize
    - validateQuery
    - BOOST_CHECK
    - auto::size
    - ComboAddress
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(addECSWithEDNSNoECSAlreadyParsed)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: generateECSOption
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:514,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:518,1
    - Dst: EDNSSubnetOpts::setSource
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:520,1
    - Dst: Netmask
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:520,1
    - Dst: EDNSSubnetOpts::makeOptString
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:521,1
    - Dst: GenericDNSPacketWriter<PacketBuffer>::optvect_t::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:523,1
    - Dst: GenericDNSPacketWriter::addOpt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:524,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:525,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:533,1
    - Dst: auto::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:533,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:533,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:534,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:535,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:537,1
    - Dst: handleEDNSClientSubnet
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:537,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:538,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:538,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:538,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:539,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:540,1
    - Dst: validateQuery
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:541,1
    - Dst: validateECS
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:542,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 543
      start: 506
    functionDepth: 2
    functionLinenumber: 506
    functionLinenumberEnd: 543
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc
    functionUses: 0
    functionsReached:
    - Netmask
    - generateECSOption
    - GenericDNSPacketWriter::addOpt
    - validateECS
    - BOOST_CHECK
    - GenericDNSPacketWriter::getHeader
    - GenericDNSPacketWriter<PacketBuffer>::optvect_t::emplace_back
    - EDNSSubnetOpts::setSource
    - auto::data
    - BOOST_CHECK_EQUAL
    - handleEDNSClientSubnet
    - GenericDNSPacketWriter::commit
    - PacketBuffer::size
    - reinterpret_cast<const char*>
    - validateQuery
    - EDNSSubnetOpts::makeOptString
    - auto::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(replaceECSWithSameSize)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:554,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:558,1
    - Dst: EDNSSubnetOpts::setSource
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:560,1
    - Dst: Netmask
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:560,1
    - Dst: EDNSSubnetOpts::makeOptString
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:561,1
    - Dst: GenericDNSPacketWriter<PacketBuffer>::optvect_t::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:563,1
    - Dst: GenericDNSPacketWriter::addOpt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:564,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:565,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:573,1
    - Dst: auto::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:573,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:573,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:574,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:575,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:576,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:582,1
    - Dst: parseEDNSOptions
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:582,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:585,1
    - Dst: handleEDNSClientSubnet
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:585,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:586,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:586,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:586,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:587,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:588,1
    - Dst: validateQuery
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:589,1
    - Dst: validateECS
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:590,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 20
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 591
      start: 545
    functionDepth: 2
    functionLinenumber: 545
    functionLinenumberEnd: 591
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc
    functionUses: 0
    functionsReached:
    - Netmask
    - GenericDNSPacketWriter::addOpt
    - validateECS
    - BOOST_CHECK
    - GenericDNSPacketWriter::getHeader
    - GenericDNSPacketWriter<PacketBuffer>::optvect_t::emplace_back
    - EDNSSubnetOpts::setSource
    - DNSName
    - auto::data
    - BOOST_CHECK_EQUAL
    - GenericDNSPacketWriter::commit
    - parseEDNSOptions
    - reinterpret_cast<const char*>
    - handleEDNSClientSubnet
    - PacketBuffer::size
    - validateQuery
    - EDNSSubnetOpts::makeOptString
    - auto::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(replaceECSWithSameSizeAlreadyParsed)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: generateECSOption
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:601,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:605,1
    - Dst: EDNSSubnetOpts::setSource
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:607,1
    - Dst: Netmask
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:607,1
    - Dst: EDNSSubnetOpts::makeOptString
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:608,1
    - Dst: GenericDNSPacketWriter<PacketBuffer>::optvect_t::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:610,1
    - Dst: GenericDNSPacketWriter::addOpt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:611,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:612,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:619,1
    - Dst: auto::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:619,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:619,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:620,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:621,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:623,1
    - Dst: handleEDNSClientSubnet
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:623,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:624,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:624,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:624,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:625,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:626,1
    - Dst: validateQuery
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:627,1
    - Dst: validateECS
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:628,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 629
      start: 593
    functionDepth: 2
    functionLinenumber: 593
    functionLinenumberEnd: 629
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc
    functionUses: 0
    functionsReached:
    - Netmask
    - generateECSOption
    - GenericDNSPacketWriter::addOpt
    - validateECS
    - BOOST_CHECK
    - GenericDNSPacketWriter::getHeader
    - GenericDNSPacketWriter<PacketBuffer>::optvect_t::emplace_back
    - EDNSSubnetOpts::setSource
    - auto::data
    - BOOST_CHECK_EQUAL
    - handleEDNSClientSubnet
    - GenericDNSPacketWriter::commit
    - PacketBuffer::size
    - reinterpret_cast<const char*>
    - validateQuery
    - EDNSSubnetOpts::makeOptString
    - auto::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(replaceECSWithSmaller)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: generateECSOption
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:639,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:643,1
    - Dst: EDNSSubnetOpts::setSource
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:647,1
    - Dst: Netmask
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:647,1
    - Dst: EDNSSubnetOpts::makeOptString
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:648,1
    - Dst: GenericDNSPacketWriter<PacketBuffer>::optvect_t::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:650,1
    - Dst: GenericDNSPacketWriter::addOpt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:651,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:652,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:660,1
    - Dst: auto::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:660,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:660,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:661,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:662,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:664,1
    - Dst: handleEDNSClientSubnet
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:664,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:665,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:665,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:665,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:666,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:667,1
    - Dst: validateQuery
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:668,1
    - Dst: validateECS
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:669,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:678,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:678,1
    - Dst: auto::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:678,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:678,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:679,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:680,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:682,1
    - Dst: handleEDNSClientSubnet
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:682,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:682,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:683,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:683,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:683,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:684,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:685,1
    - Dst: validateQuery
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:686,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 27
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 687
      start: 631
    functionDepth: 2
    functionLinenumber: 631
    functionLinenumberEnd: 687
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc
    functionUses: 0
    functionsReached:
    - reinterpret_cast<char*>
    - generateECSOption
    - GenericDNSPacketWriter::getHeader
    - GenericDNSPacketWriter<PacketBuffer>::optvect_t::emplace_back
    - PacketBuffer::size
    - validateQuery
    - auto::size
    - validateECS
    - Netmask
    - EDNSSubnetOpts::makeOptString
    - EDNSSubnetOpts::setSource
    - auto::data
    - DNSName
    - reinterpret_cast<const char*>
    - GenericDNSPacketWriter::addOpt
    - BOOST_CHECK_EQUAL
    - handleEDNSClientSubnet
    - GenericDNSPacketWriter::commit
    - BOOST_CHECK
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(replaceECSWithLarger)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: generateECSOption
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:697,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:701,1
    - Dst: EDNSSubnetOpts::setSource
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:703,1
    - Dst: Netmask
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:703,1
    - Dst: EDNSSubnetOpts::makeOptString
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:704,1
    - Dst: GenericDNSPacketWriter<PacketBuffer>::optvect_t::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:706,1
    - Dst: GenericDNSPacketWriter::addOpt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:707,1
    - Dst: GenericDNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:708,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:708,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:709,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:717,1
    - Dst: auto::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:717,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:717,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:718,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:719,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:721,1
    - Dst: handleEDNSClientSubnet
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:721,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:722,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:722,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:722,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:723,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:724,1
    - Dst: validateQuery
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:725,1
    - Dst: validateECS
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:726,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:735,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:735,1
    - Dst: auto::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:735,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:735,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:736,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:737,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:739,1
    - Dst: handleEDNSClientSubnet
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:739,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:739,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:740,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:740,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:740,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:741,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:742,1
    - Dst: validateQuery
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:743,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 28
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 744
      start: 689
    functionDepth: 2
    functionLinenumber: 689
    functionLinenumberEnd: 744
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc
    functionUses: 0
    functionsReached:
    - reinterpret_cast<char*>
    - generateECSOption
    - GenericDNSPacketWriter::getHeader
    - GenericDNSPacketWriter<PacketBuffer>::optvect_t::emplace_back
    - PacketBuffer::size
    - validateQuery
    - auto::size
    - validateECS
    - GenericDNSPacketWriter::startRecord
    - Netmask
    - EDNSSubnetOpts::makeOptString
    - EDNSSubnetOpts::setSource
    - DNSName
    - auto::data
    - reinterpret_cast<const char*>
    - GenericDNSPacketWriter::addOpt
    - BOOST_CHECK_EQUAL
    - handleEDNSClientSubnet
    - GenericDNSPacketWriter::commit
    - BOOST_CHECK
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(replaceECSFollowedByTSIG)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: generateECSOption
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:754,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:758,1
    - Dst: GenericDNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:759,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:759,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:760,1
    - Dst: EDNSSubnetOpts::setSource
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:762,1
    - Dst: Netmask
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:762,1
    - Dst: EDNSSubnetOpts::makeOptString
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:763,1
    - Dst: GenericDNSPacketWriter<PacketBuffer>::optvect_t::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:765,1
    - Dst: GenericDNSPacketWriter::addOpt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:766,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:767,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:775,1
    - Dst: auto::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:775,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:775,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:776,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:777,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:779,1
    - Dst: handleEDNSClientSubnet
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:779,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:780,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:780,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:780,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:781,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:782,1
    - Dst: validateQuery
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:783,1
    - Dst: validateECS
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:784,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:793,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:793,1
    - Dst: auto::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:793,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:793,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:794,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:795,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:797,1
    - Dst: handleEDNSClientSubnet
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:797,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:797,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:798,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:798,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:798,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:799,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:800,1
    - Dst: validateQuery
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:801,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 29
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 802
      start: 746
    functionDepth: 2
    functionLinenumber: 746
    functionLinenumberEnd: 802
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc
    functionUses: 0
    functionsReached:
    - reinterpret_cast<char*>
    - generateECSOption
    - GenericDNSPacketWriter::getHeader
    - GenericDNSPacketWriter<PacketBuffer>::optvect_t::emplace_back
    - PacketBuffer::size
    - validateQuery
    - auto::size
    - validateECS
    - GenericDNSPacketWriter::startRecord
    - Netmask
    - EDNSSubnetOpts::makeOptString
    - EDNSSubnetOpts::setSource
    - DNSName
    - auto::data
    - reinterpret_cast<const char*>
    - GenericDNSPacketWriter::addOpt
    - BOOST_CHECK_EQUAL
    - handleEDNSClientSubnet
    - GenericDNSPacketWriter::commit
    - BOOST_CHECK
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(replaceECSAfterAN)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: generateECSOption
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:812,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:816,1
    - Dst: GenericDNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:817,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:817,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:818,1
    - Dst: EDNSSubnetOpts::setSource
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:820,1
    - Dst: Netmask
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:820,1
    - Dst: EDNSSubnetOpts::makeOptString
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:821,1
    - Dst: GenericDNSPacketWriter<PacketBuffer>::optvect_t::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:823,1
    - Dst: GenericDNSPacketWriter::addOpt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:824,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:825,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:833,1
    - Dst: auto::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:833,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:833,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:834,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:835,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:837,1
    - Dst: handleEDNSClientSubnet
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:837,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:838,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:838,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:838,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:839,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:840,1
    - Dst: validateQuery
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:841,1
    - Dst: validateECS
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:842,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:851,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:851,1
    - Dst: auto::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:851,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:851,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:852,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:853,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:855,1
    - Dst: handleEDNSClientSubnet
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:855,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:855,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:856,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:856,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:856,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:857,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:858,1
    - Dst: validateQuery
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:859,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 29
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 860
      start: 804
    functionDepth: 2
    functionLinenumber: 804
    functionLinenumberEnd: 860
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc
    functionUses: 0
    functionsReached:
    - reinterpret_cast<char*>
    - generateECSOption
    - GenericDNSPacketWriter::getHeader
    - GenericDNSPacketWriter<PacketBuffer>::optvect_t::emplace_back
    - PacketBuffer::size
    - validateQuery
    - auto::size
    - validateECS
    - GenericDNSPacketWriter::startRecord
    - Netmask
    - EDNSSubnetOpts::makeOptString
    - EDNSSubnetOpts::setSource
    - DNSName
    - auto::data
    - reinterpret_cast<const char*>
    - GenericDNSPacketWriter::addOpt
    - BOOST_CHECK_EQUAL
    - handleEDNSClientSubnet
    - GenericDNSPacketWriter::commit
    - BOOST_CHECK
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(replaceECSAfterAuth)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: generateECSOption
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:870,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:874,1
    - Dst: EDNSSubnetOpts::setSource
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:876,1
    - Dst: Netmask
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:876,1
    - Dst: EDNSSubnetOpts::makeOptString
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:877,1
    - Dst: GenericDNSPacketWriter<PacketBuffer>::optvect_t::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:879,1
    - Dst: GenericDNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:880,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:880,1
    - Dst: GenericDNSPacketWriter::xfr32BitInt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:881,1
    - Dst: GenericDNSPacketWriter::addOpt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:882,1
    - Dst: GenericDNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:883,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:883,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:884,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:892,1
    - Dst: auto::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:892,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:892,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:893,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:894,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:896,1
    - Dst: handleEDNSClientSubnet
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:896,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:897,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:897,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:897,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:898,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:899,1
    - Dst: validateQuery
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:900,1
    - Dst: validateECS
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:901,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:910,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:910,1
    - Dst: auto::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:910,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:910,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:911,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:912,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:914,1
    - Dst: handleEDNSClientSubnet
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:914,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:914,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:915,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:915,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:915,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:916,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:917,1
    - Dst: validateQuery
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:918,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 30
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 919
      start: 862
    functionDepth: 2
    functionLinenumber: 862
    functionLinenumberEnd: 919
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc
    functionUses: 0
    functionsReached:
    - reinterpret_cast<char*>
    - generateECSOption
    - GenericDNSPacketWriter::getHeader
    - GenericDNSPacketWriter<PacketBuffer>::optvect_t::emplace_back
    - PacketBuffer::size
    - GenericDNSPacketWriter::xfr32BitInt
    - validateQuery
    - auto::size
    - validateECS
    - GenericDNSPacketWriter::startRecord
    - Netmask
    - EDNSSubnetOpts::makeOptString
    - EDNSSubnetOpts::setSource
    - DNSName
    - auto::data
    - reinterpret_cast<const char*>
    - GenericDNSPacketWriter::addOpt
    - BOOST_CHECK_EQUAL
    - handleEDNSClientSubnet
    - GenericDNSPacketWriter::commit
    - BOOST_CHECK
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(replaceECSBetweenTwoRecords)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: generateECSOption
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:929,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:933,1
    - Dst: GenericDNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:934,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:934,1
    - Dst: GenericDNSPacketWriter::xfr32BitInt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:935,1
    - Dst: GenericDNSPacketWriter::addOpt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:936,1
    - Dst: GenericDNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:937,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:937,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:938,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:946,1
    - Dst: auto::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:946,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:946,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:947,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:948,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:950,1
    - Dst: handleEDNSClientSubnet
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:950,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:951,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:951,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:951,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:952,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:953,1
    - Dst: validateQuery
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:954,1
    - Dst: validateECS
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:955,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:964,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:964,1
    - Dst: auto::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:964,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:964,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:965,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:966,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:968,1
    - Dst: handleEDNSClientSubnet
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:968,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:968,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:969,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:969,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:969,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:970,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:971,1
    - Dst: validateQuery
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:972,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 28
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 973
      start: 921
    functionDepth: 2
    functionLinenumber: 921
    functionLinenumberEnd: 973
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc
    functionUses: 0
    functionsReached:
    - GenericDNSPacketWriter::addOpt
    - generateECSOption
    - validateECS
    - GenericDNSPacketWriter::startRecord
    - GenericDNSPacketWriter::getHeader
    - DNSName
    - auto::data
    - BOOST_CHECK_EQUAL
    - GenericDNSPacketWriter::commit
    - handleEDNSClientSubnet
    - reinterpret_cast<const char*>
    - PacketBuffer::size
    - GenericDNSPacketWriter::xfr32BitInt
    - validateQuery
    - BOOST_CHECK
    - auto::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(insertECSInEDNSBetweenTwoRecords)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: generateECSOption
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:983,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:987,1
    - Dst: GenericDNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:988,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:988,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:989,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:997,1
    - Dst: auto::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:997,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:997,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:998,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:999,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1001,1
    - Dst: handleEDNSClientSubnet
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1001,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1002,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1002,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1002,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1003,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1004,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1006,1
    - Dst: validateQuery
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1006,1
    - Dst: validateECS
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1007,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1016,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1016,1
    - Dst: auto::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1016,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1016,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1017,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1018,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1020,1
    - Dst: handleEDNSClientSubnet
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1020,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1020,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1021,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1021,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1021,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1022,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1023,1
    - Dst: validateQuery
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1024,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 25
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1025
      start: 975
    functionDepth: 2
    functionLinenumber: 975
    functionLinenumberEnd: 1025
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc
    functionUses: 0
    functionsReached:
    - validateECS
    - generateECSOption
    - GenericDNSPacketWriter::startRecord
    - GenericDNSPacketWriter::getHeader
    - DNSName
    - auto::data
    - BOOST_CHECK_EQUAL
    - GenericDNSPacketWriter::commit
    - handleEDNSClientSubnet
    - reinterpret_cast<const char*>
    - PacketBuffer::size
    - BOOST_CHECK_THROW
    - validateQuery
    - BOOST_CHECK
    - auto::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(insertECSAfterTSIG)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1033,1
    - Dst: GenericDNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1034,1
    - Dst: GenericDNSPacketWriter::xfr32BitInt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1035,1
    - Dst: GenericDNSPacketWriter::addOpt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1036,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1037,1
    - Dst: GenericDNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1038,1
    - Dst: GenericDNSPacketWriter::xfr32BitInt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1039,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1040,1
    - Dst: rewriteResponseWithoutEDNS
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1043,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1044,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1049,1
    - Dst: PacketBuffer::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1049,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1049,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1050,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1051,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1053,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1053,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1053,1
    - Dst: validateResponse
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1055,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1056
      start: 1027
    functionDepth: 1
    functionLinenumber: 1027
    functionLinenumberEnd: 1056
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc
    functionUses: 0
    functionsReached:
    - GenericDNSPacketWriter::addOpt
    - rewriteResponseWithoutEDNS
    - PacketBuffer::data
    - validateResponse
    - GenericDNSPacketWriter::startRecord
    - GenericDNSPacketWriter::getHeader
    - BOOST_CHECK_EQUAL
    - GenericDNSPacketWriter::commit
    - PacketBuffer::size
    - reinterpret_cast<const char*>
    - GenericDNSPacketWriter::xfr32BitInt
    - BOOST_CHECK
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(removeEDNSWhenFirst)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1064,1
    - Dst: GenericDNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1065,1
    - Dst: GenericDNSPacketWriter::xfr32BitInt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1066,1
    - Dst: GenericDNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1067,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1067,1
    - Dst: GenericDNSPacketWriter::xfr32BitInt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1068,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1069,1
    - Dst: GenericDNSPacketWriter::addOpt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1070,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1071,1
    - Dst: GenericDNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1072,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1072,1
    - Dst: GenericDNSPacketWriter::xfr32BitInt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1073,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1074,1
    - Dst: rewriteResponseWithoutEDNS
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1077,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1078,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1083,1
    - Dst: PacketBuffer::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1083,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1083,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1084,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1085,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1087,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1087,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1087,1
    - Dst: validateResponse
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1089,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1090
      start: 1058
    functionDepth: 1
    functionLinenumber: 1058
    functionLinenumberEnd: 1090
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc
    functionUses: 0
    functionsReached:
    - GenericDNSPacketWriter::addOpt
    - rewriteResponseWithoutEDNS
    - PacketBuffer::data
    - validateResponse
    - GenericDNSPacketWriter::startRecord
    - GenericDNSPacketWriter::getHeader
    - DNSName
    - BOOST_CHECK_EQUAL
    - GenericDNSPacketWriter::commit
    - PacketBuffer::size
    - reinterpret_cast<const char*>
    - GenericDNSPacketWriter::xfr32BitInt
    - BOOST_CHECK
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(removeEDNSWhenIntermediary)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1098,1
    - Dst: GenericDNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1099,1
    - Dst: GenericDNSPacketWriter::xfr32BitInt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1100,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1101,1
    - Dst: GenericDNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1102,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1102,1
    - Dst: GenericDNSPacketWriter::xfr32BitInt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1103,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1104,1
    - Dst: GenericDNSPacketWriter::addOpt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1105,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1106,1
    - Dst: rewriteResponseWithoutEDNS
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1109,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1111,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1116,1
    - Dst: PacketBuffer::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1116,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1116,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1117,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1118,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1120,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1120,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1120,1
    - Dst: validateResponse
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1122,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1123
      start: 1092
    functionDepth: 1
    functionLinenumber: 1092
    functionLinenumberEnd: 1123
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc
    functionUses: 0
    functionsReached:
    - GenericDNSPacketWriter::addOpt
    - rewriteResponseWithoutEDNS
    - PacketBuffer::data
    - validateResponse
    - GenericDNSPacketWriter::startRecord
    - GenericDNSPacketWriter::getHeader
    - DNSName
    - BOOST_CHECK_EQUAL
    - GenericDNSPacketWriter::commit
    - PacketBuffer::size
    - reinterpret_cast<const char*>
    - GenericDNSPacketWriter::xfr32BitInt
    - BOOST_CHECK
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(removeEDNSWhenLast)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1132,1
    - Dst: GenericDNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1133,1
    - Dst: GenericDNSPacketWriter::xfr32BitInt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1134,1
    - Dst: GenericDNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1136,1
    - Dst: GenericDNSPacketWriter::xfr32BitInt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1137,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1138,1
    - Dst: EDNSSubnetOpts::setSource
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1141,1
    - Dst: Netmask
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1141,1
    - Dst: EDNSSubnetOpts::makeOptString
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1142,1
    - Dst: GenericDNSPacketWriter<PacketBuffer>::optvect_t::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1144,1
    - Dst: GenericDNSPacketWriter::addOpt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1145,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1146,1
    - Dst: locateEDNSOptRR
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1152,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1153,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1154,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1156,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1158,1
    - Dst: removeEDNSOptionFromOPT
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1160,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1160,1
    - Dst: PacketBuffer::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1160,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1161,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1162,1
    - Dst: string::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1162,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1168,1
    - Dst: PacketBuffer::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1168,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1169,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1170,1
    - Dst: validateResponse
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1172,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 21
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1173
      start: 1125
    functionDepth: 1
    functionLinenumber: 1125
    functionLinenumberEnd: 1173
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc
    functionUses: 0
    functionsReached:
    - reinterpret_cast<char*>
    - validateResponse
    - GenericDNSPacketWriter::getHeader
    - GenericDNSPacketWriter<PacketBuffer>::optvect_t::emplace_back
    - PacketBuffer::at
    - PacketBuffer::size
    - GenericDNSPacketWriter::xfr32BitInt
    - locateEDNSOptRR
    - string::size
    - GenericDNSPacketWriter::startRecord
    - Netmask
    - removeEDNSOptionFromOPT
    - EDNSSubnetOpts::makeOptString
    - EDNSSubnetOpts::setSource
    - reinterpret_cast<const char*>
    - GenericDNSPacketWriter::addOpt
    - PacketBuffer::data
    - BOOST_CHECK_EQUAL
    - GenericDNSPacketWriter::commit
    - BOOST_CHECK
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(removeECSWhenOnlyOption)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1182,1
    - Dst: GenericDNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1183,1
    - Dst: GenericDNSPacketWriter::xfr32BitInt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1184,1
    - Dst: GenericDNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1186,1
    - Dst: GenericDNSPacketWriter::xfr32BitInt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1187,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1188,1
    - Dst: EDNSSubnetOpts::setSource
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1191,1
    - Dst: Netmask
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1191,1
    - Dst: EDNSSubnetOpts::makeOptString
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1192,1
    - Dst: EDNSCookiesOpt::makeOptString
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1194,1
    - Dst: GenericDNSPacketWriter<PacketBuffer>::optvect_t::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1196,1
    - Dst: GenericDNSPacketWriter<PacketBuffer>::optvect_t::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1197,1
    - Dst: GenericDNSPacketWriter::addOpt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1198,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1199,1
    - Dst: locateEDNSOptRR
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1205,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1206,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1207,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1209,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1211,1
    - Dst: removeEDNSOptionFromOPT
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1213,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1213,1
    - Dst: PacketBuffer::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1213,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1214,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1215,1
    - Dst: string::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1215,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1221,1
    - Dst: PacketBuffer::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1221,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1222,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1223,1
    - Dst: validateResponse
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1225,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 22
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1226
      start: 1175
    functionDepth: 1
    functionLinenumber: 1175
    functionLinenumberEnd: 1226
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc
    functionUses: 0
    functionsReached:
    - reinterpret_cast<char*>
    - validateResponse
    - GenericDNSPacketWriter::getHeader
    - GenericDNSPacketWriter<PacketBuffer>::optvect_t::emplace_back
    - PacketBuffer::at
    - PacketBuffer::size
    - GenericDNSPacketWriter::xfr32BitInt
    - locateEDNSOptRR
    - string::size
    - GenericDNSPacketWriter::startRecord
    - Netmask
    - removeEDNSOptionFromOPT
    - EDNSSubnetOpts::makeOptString
    - EDNSSubnetOpts::setSource
    - EDNSCookiesOpt::makeOptString
    - reinterpret_cast<const char*>
    - GenericDNSPacketWriter::addOpt
    - PacketBuffer::data
    - BOOST_CHECK_EQUAL
    - GenericDNSPacketWriter::commit
    - BOOST_CHECK
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(removeECSWhenFirstOption)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1235,1
    - Dst: GenericDNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1236,1
    - Dst: GenericDNSPacketWriter::xfr32BitInt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1237,1
    - Dst: GenericDNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1239,1
    - Dst: GenericDNSPacketWriter::xfr32BitInt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1240,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1241,1
    - Dst: EDNSSubnetOpts::setSource
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1244,1
    - Dst: Netmask
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1244,1
    - Dst: EDNSSubnetOpts::makeOptString
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1245,1
    - Dst: EDNSCookiesOpt::makeOptString
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1247,1
    - Dst: EDNSCookiesOpt::makeOptString
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1248,1
    - Dst: GenericDNSPacketWriter<PacketBuffer>::optvect_t::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1251,1
    - Dst: GenericDNSPacketWriter<PacketBuffer>::optvect_t::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1252,1
    - Dst: GenericDNSPacketWriter<PacketBuffer>::optvect_t::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1253,1
    - Dst: GenericDNSPacketWriter::addOpt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1254,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1255,1
    - Dst: locateEDNSOptRR
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1261,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1262,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1263,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1265,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1267,1
    - Dst: removeEDNSOptionFromOPT
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1269,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1269,1
    - Dst: PacketBuffer::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1269,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1270,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1271,1
    - Dst: string::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1271,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1277,1
    - Dst: PacketBuffer::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1277,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1278,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1279,1
    - Dst: validateResponse
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1281,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 23
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1282
      start: 1228
    functionDepth: 1
    functionLinenumber: 1228
    functionLinenumberEnd: 1282
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc
    functionUses: 0
    functionsReached:
    - reinterpret_cast<char*>
    - validateResponse
    - GenericDNSPacketWriter::getHeader
    - GenericDNSPacketWriter<PacketBuffer>::optvect_t::emplace_back
    - PacketBuffer::at
    - PacketBuffer::size
    - GenericDNSPacketWriter::xfr32BitInt
    - locateEDNSOptRR
    - string::size
    - GenericDNSPacketWriter::startRecord
    - Netmask
    - removeEDNSOptionFromOPT
    - EDNSSubnetOpts::makeOptString
    - EDNSSubnetOpts::setSource
    - EDNSCookiesOpt::makeOptString
    - reinterpret_cast<const char*>
    - GenericDNSPacketWriter::addOpt
    - PacketBuffer::data
    - BOOST_CHECK_EQUAL
    - GenericDNSPacketWriter::commit
    - BOOST_CHECK
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(removeECSWhenIntermediaryOption)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1291,1
    - Dst: GenericDNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1292,1
    - Dst: GenericDNSPacketWriter::xfr32BitInt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1293,1
    - Dst: GenericDNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1295,1
    - Dst: GenericDNSPacketWriter::xfr32BitInt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1296,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1297,1
    - Dst: EDNSCookiesOpt::makeOptString
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1300,1
    - Dst: EDNSSubnetOpts::setSource
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1302,1
    - Dst: Netmask
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1302,1
    - Dst: EDNSSubnetOpts::makeOptString
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1303,1
    - Dst: GenericDNSPacketWriter<PacketBuffer>::optvect_t::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1305,1
    - Dst: GenericDNSPacketWriter<PacketBuffer>::optvect_t::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1306,1
    - Dst: GenericDNSPacketWriter::addOpt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1307,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1308,1
    - Dst: locateEDNSOptRR
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1314,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1315,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1316,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1318,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1320,1
    - Dst: removeEDNSOptionFromOPT
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1322,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1322,1
    - Dst: PacketBuffer::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1322,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1323,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1324,1
    - Dst: string::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1324,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1330,1
    - Dst: PacketBuffer::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1330,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1331,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1332,1
    - Dst: validateResponse
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1334,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 22
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1335
      start: 1284
    functionDepth: 1
    functionLinenumber: 1284
    functionLinenumberEnd: 1335
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc
    functionUses: 0
    functionsReached:
    - reinterpret_cast<char*>
    - validateResponse
    - GenericDNSPacketWriter::getHeader
    - GenericDNSPacketWriter<PacketBuffer>::optvect_t::emplace_back
    - PacketBuffer::at
    - PacketBuffer::size
    - GenericDNSPacketWriter::xfr32BitInt
    - locateEDNSOptRR
    - string::size
    - GenericDNSPacketWriter::startRecord
    - Netmask
    - removeEDNSOptionFromOPT
    - EDNSSubnetOpts::setSource
    - EDNSCookiesOpt::makeOptString
    - reinterpret_cast<const char*>
    - GenericDNSPacketWriter::addOpt
    - PacketBuffer::data
    - BOOST_CHECK
    - BOOST_CHECK_EQUAL
    - GenericDNSPacketWriter::commit
    - EDNSSubnetOpts::makeOptString
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(removeECSWhenLastOption)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1344,1
    - Dst: GenericDNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1345,1
    - Dst: GenericDNSPacketWriter::xfr32BitInt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1346,1
    - Dst: EDNSSubnetOpts::setSource
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1349,1
    - Dst: Netmask
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1349,1
    - Dst: EDNSSubnetOpts::makeOptString
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1350,1
    - Dst: GenericDNSPacketWriter<PacketBuffer>::optvect_t::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1352,1
    - Dst: GenericDNSPacketWriter::addOpt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1353,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1354,1
    - Dst: GenericDNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1356,1
    - Dst: GenericDNSPacketWriter::xfr32BitInt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1357,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1358,1
    - Dst: rewriteResponseWithoutEDNSOption
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1361,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1362,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1364,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1364,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1364,1
    - Dst: string::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1364,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1369,1
    - Dst: PacketBuffer::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1369,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1369,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1370,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1371,1
    - Dst: validateResponse
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1373,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1374
      start: 1337
    functionDepth: 1
    functionLinenumber: 1337
    functionLinenumberEnd: 1374
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc
    functionUses: 0
    functionsReached:
    - Netmask
    - GenericDNSPacketWriter::addOpt
    - rewriteResponseWithoutEDNSOption
    - string::size
    - PacketBuffer::data
    - BOOST_CHECK
    - GenericDNSPacketWriter::startRecord
    - validateResponse
    - GenericDNSPacketWriter::getHeader
    - GenericDNSPacketWriter<PacketBuffer>::optvect_t::emplace_back
    - EDNSSubnetOpts::setSource
    - BOOST_CHECK_EQUAL
    - GenericDNSPacketWriter::commit
    - PacketBuffer::size
    - reinterpret_cast<const char*>
    - GenericDNSPacketWriter::xfr32BitInt
    - EDNSSubnetOpts::makeOptString
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(rewritingWithoutECSWhenOnlyOption)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1383,1
    - Dst: GenericDNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1384,1
    - Dst: GenericDNSPacketWriter::xfr32BitInt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1385,1
    - Dst: EDNSSubnetOpts::setSource
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1388,1
    - Dst: Netmask
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1388,1
    - Dst: EDNSSubnetOpts::makeOptString
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1389,1
    - Dst: EDNSCookiesOpt::makeOptString
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1391,1
    - Dst: GenericDNSPacketWriter<PacketBuffer>::optvect_t::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1393,1
    - Dst: GenericDNSPacketWriter<PacketBuffer>::optvect_t::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1394,1
    - Dst: GenericDNSPacketWriter::addOpt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1395,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1396,1
    - Dst: GenericDNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1398,1
    - Dst: GenericDNSPacketWriter::xfr32BitInt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1399,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1400,1
    - Dst: rewriteResponseWithoutEDNSOption
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1403,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1404,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1406,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1406,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1406,1
    - Dst: string::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1406,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1411,1
    - Dst: PacketBuffer::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1411,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1411,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1412,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1413,1
    - Dst: validateResponse
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1415,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1416
      start: 1376
    functionDepth: 1
    functionLinenumber: 1376
    functionLinenumberEnd: 1416
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc
    functionUses: 0
    functionsReached:
    - Netmask
    - GenericDNSPacketWriter::addOpt
    - rewriteResponseWithoutEDNSOption
    - string::size
    - PacketBuffer::data
    - BOOST_CHECK
    - GenericDNSPacketWriter::startRecord
    - validateResponse
    - GenericDNSPacketWriter::getHeader
    - GenericDNSPacketWriter<PacketBuffer>::optvect_t::emplace_back
    - EDNSSubnetOpts::setSource
    - EDNSCookiesOpt::makeOptString
    - BOOST_CHECK_EQUAL
    - GenericDNSPacketWriter::commit
    - PacketBuffer::size
    - reinterpret_cast<const char*>
    - GenericDNSPacketWriter::xfr32BitInt
    - EDNSSubnetOpts::makeOptString
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(rewritingWithoutECSWhenFirstOption)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1425,1
    - Dst: GenericDNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1426,1
    - Dst: GenericDNSPacketWriter::xfr32BitInt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1427,1
    - Dst: EDNSSubnetOpts::setSource
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1430,1
    - Dst: Netmask
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1430,1
    - Dst: EDNSSubnetOpts::makeOptString
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1431,1
    - Dst: EDNSCookiesOpt::makeOptString
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1433,1
    - Dst: EDNSCookiesOpt::makeOptString
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1434,1
    - Dst: GenericDNSPacketWriter<PacketBuffer>::optvect_t::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1436,1
    - Dst: GenericDNSPacketWriter<PacketBuffer>::optvect_t::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1437,1
    - Dst: GenericDNSPacketWriter<PacketBuffer>::optvect_t::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1438,1
    - Dst: GenericDNSPacketWriter::addOpt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1439,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1440,1
    - Dst: GenericDNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1442,1
    - Dst: GenericDNSPacketWriter::xfr32BitInt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1443,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1444,1
    - Dst: rewriteResponseWithoutEDNSOption
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1447,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1448,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1450,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1450,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1450,1
    - Dst: string::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1450,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1455,1
    - Dst: PacketBuffer::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1455,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1455,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1456,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1457,1
    - Dst: validateResponse
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1459,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1460
      start: 1418
    functionDepth: 1
    functionLinenumber: 1418
    functionLinenumberEnd: 1460
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc
    functionUses: 0
    functionsReached:
    - Netmask
    - GenericDNSPacketWriter::addOpt
    - rewriteResponseWithoutEDNSOption
    - string::size
    - PacketBuffer::data
    - BOOST_CHECK
    - GenericDNSPacketWriter::startRecord
    - validateResponse
    - GenericDNSPacketWriter::getHeader
    - GenericDNSPacketWriter<PacketBuffer>::optvect_t::emplace_back
    - EDNSSubnetOpts::setSource
    - EDNSCookiesOpt::makeOptString
    - BOOST_CHECK_EQUAL
    - GenericDNSPacketWriter::commit
    - PacketBuffer::size
    - reinterpret_cast<const char*>
    - GenericDNSPacketWriter::xfr32BitInt
    - EDNSSubnetOpts::makeOptString
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(rewritingWithoutECSWhenIntermediaryOption)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1469,1
    - Dst: GenericDNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1470,1
    - Dst: GenericDNSPacketWriter::xfr32BitInt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1471,1
    - Dst: EDNSSubnetOpts::setSource
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1474,1
    - Dst: Netmask
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1474,1
    - Dst: EDNSSubnetOpts::makeOptString
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1475,1
    - Dst: EDNSCookiesOpt::makeOptString
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1477,1
    - Dst: GenericDNSPacketWriter<PacketBuffer>::optvect_t::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1479,1
    - Dst: GenericDNSPacketWriter<PacketBuffer>::optvect_t::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1480,1
    - Dst: GenericDNSPacketWriter::addOpt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1481,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1482,1
    - Dst: GenericDNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1484,1
    - Dst: GenericDNSPacketWriter::xfr32BitInt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1485,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1486,1
    - Dst: rewriteResponseWithoutEDNSOption
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1489,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1490,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1492,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1492,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1492,1
    - Dst: string::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1492,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1497,1
    - Dst: PacketBuffer::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1497,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1497,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1498,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1499,1
    - Dst: validateResponse
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1501,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1502
      start: 1462
    functionDepth: 1
    functionLinenumber: 1462
    functionLinenumberEnd: 1502
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc
    functionUses: 0
    functionsReached:
    - Netmask
    - GenericDNSPacketWriter::addOpt
    - rewriteResponseWithoutEDNSOption
    - string::size
    - PacketBuffer::data
    - BOOST_CHECK
    - GenericDNSPacketWriter::startRecord
    - validateResponse
    - GenericDNSPacketWriter::getHeader
    - GenericDNSPacketWriter<PacketBuffer>::optvect_t::emplace_back
    - EDNSSubnetOpts::setSource
    - EDNSCookiesOpt::makeOptString
    - BOOST_CHECK_EQUAL
    - GenericDNSPacketWriter::commit
    - PacketBuffer::size
    - reinterpret_cast<const char*>
    - GenericDNSPacketWriter::xfr32BitInt
    - EDNSSubnetOpts::makeOptString
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(rewritingWithoutECSWhenLastOption)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: resize
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1507,1
    - Dst: DNSQuestion
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1510,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1512,1
    - Dst: addEDNSToQueryTurnedResponse
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1512,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - ' ids'
    - ' query'
    argTypes:
    - InternalQueryState
    - PacketBuffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1515
      start: 1504
    functionDepth: 1
    functionLinenumber: 1504
    functionLinenumberEnd: 1515
    functionName: turnIntoResponse
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc
    functionUses: 0
    functionsReached:
    - addEDNSToQueryTurnedResponse
    - BOOST_CHECK
    - resize
    - DNSQuestion
    linkageType: ''
    returnType: DNSQuestion
    signature: DNSQuestion turnIntoResponse(InternalQueryState& ids, PacketBuffer&
      query, bool resizeBuffer = true)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1524,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1525,1
    - Dst: InternalQueryState::queryRealTime::start
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1526,1
    - Dst: DNSQuestion
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1528,1
    - Dst: dnsdist::getEDNSZ
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1530,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 4
    argNames:
    - ' qname'
    - qtype
    - qclass
    - ' query'
    argTypes:
    - DNSName
    - uint16_t
    - uint16_t
    - PacketBuffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1531
      start: 1517
    functionDepth: 1
    functionLinenumber: 1517
    functionLinenumberEnd: 1531
    functionName: getZ
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc
    functionUses: 0
    functionsReached:
    - dnsdist::getEDNSZ
    - InternalQueryState::queryRealTime::start
    - DNSQuestion
    - ComboAddress
    linkageType: ''
    returnType: int
    signature: int getZ(const DNSName& qname, const uint16_t qtype, const uint16_t
      qclass, PacketBuffer& query)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EDNSSubnetOpts::setSource
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1541,1
    - Dst: Netmask
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1541,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1541,1
    - Dst: EDNSSubnetOpts::makeOptString
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1542,1
    - Dst: EDNSCookiesOpt::makeOptString
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1544,1
    - Dst: GenericDNSPacketWriter<PacketBuffer>::optvect_t::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1546,1
    - Dst: GenericDNSPacketWriter<PacketBuffer>::optvect_t::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1547,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1553,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1555,1
    - Dst: getZ
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1555,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1557,1
    - Dst: getEDNSUDPPayloadSizeAndZ
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1557,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1557,1
    - Dst: PacketBuffer::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1557,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1557,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1558,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1559,1
    - Dst: GenericDNSPacketWriter::addOpt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1566,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1567,1
    - Dst: PacketBuffer::resize
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1569,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1569,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1570,1
    - Dst: getZ
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1570,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1572,1
    - Dst: getEDNSUDPPayloadSizeAndZ
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1572,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1572,1
    - Dst: PacketBuffer::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1572,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1572,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1573,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1574,1
    - Dst: GenericDNSPacketWriter::addOpt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1581,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1582,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1584,1
    - Dst: getZ
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1584,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1586,1
    - Dst: getEDNSUDPPayloadSizeAndZ
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1586,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1586,1
    - Dst: PacketBuffer::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1586,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1586,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1587,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1588,1
    - Dst: GenericDNSPacketWriter::addOpt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1595,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1596,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1598,1
    - Dst: getZ
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1598,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1600,1
    - Dst: getEDNSUDPPayloadSizeAndZ
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1600,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1600,1
    - Dst: PacketBuffer::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1600,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1600,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1601,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1602,1
    - Dst: GenericDNSPacketWriter::addOpt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1609,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1610,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1612,1
    - Dst: getZ
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1612,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1614,1
    - Dst: getEDNSUDPPayloadSizeAndZ
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1614,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1614,1
    - Dst: PacketBuffer::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1614,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1614,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1615,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1616,1
    - Dst: GenericDNSPacketWriter::addOpt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1623,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1624,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1626,1
    - Dst: getZ
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1626,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1628,1
    - Dst: getEDNSUDPPayloadSizeAndZ
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1628,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1628,1
    - Dst: PacketBuffer::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1628,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1628,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1629,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1630,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 46
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1632
      start: 1533
    functionDepth: 2
    functionLinenumber: 1533
    functionLinenumberEnd: 1632
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc
    functionUses: 0
    functionsReached:
    - getEDNSUDPPayloadSizeAndZ
    - Netmask
    - GenericDNSPacketWriter::addOpt
    - PacketBuffer::data
    - GenericDNSPacketWriter<PacketBuffer>::optvect_t::emplace_back
    - EDNSSubnetOpts::setSource
    - getZ
    - EDNSCookiesOpt::makeOptString
    - BOOST_CHECK_EQUAL
    - GenericDNSPacketWriter::commit
    - PacketBuffer::size
    - reinterpret_cast<const char*>
    - PacketBuffer::resize
    - EDNSSubnetOpts::makeOptString
    - ComboAddress
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_getEDNSZ)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1647,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1648,1
    - Dst: InternalQueryState::queryRealTime::start
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1649,1
    - Dst: DNSQuestion
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1651,1
    - Dst: dnsdist::getEDNSVersion
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1653,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1660,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1662,1
    - Dst: getVersion
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1662,1
    - Dst: GenericDNSPacketWriter::addOpt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1669,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1670,1
    - Dst: PacketBuffer::resize
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1672,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1672,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1673,1
    - Dst: getVersion
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1673,1
    - Dst: GenericDNSPacketWriter::addOpt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1680,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1681,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1683,1
    - Dst: getVersion
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1683,1
    - Dst: GenericDNSPacketWriter::addOpt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1690,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1691,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1693,1
    - Dst: getVersion
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1693,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 26
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1695
      start: 1634
    functionDepth: 1
    functionLinenumber: 1634
    functionLinenumberEnd: 1695
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc
    functionUses: 0
    functionsReached:
    - GenericDNSPacketWriter::addOpt
    - getVersion
    - DNSQuestion
    - ComboAddress
    - BOOST_CHECK_EQUAL
    - GenericDNSPacketWriter::commit
    - PacketBuffer::size
    - InternalQueryState::queryRealTime::start
    - PacketBuffer::resize
    - BOOST_CHECK
    - dnsdist::getEDNSVersion
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_getEDNSVersion)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1709,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1710,1
    - Dst: InternalQueryState::queryRealTime::start
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1711,1
    - Dst: DNSQuestion
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1713,1
    - Dst: dnsdist::getEDNSExtendedRCode
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1715,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1722,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1724,1
    - Dst: getExtendedRCode
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1724,1
    - Dst: GenericDNSPacketWriter::addOpt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1731,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1732,1
    - Dst: PacketBuffer::resize
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1734,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1734,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1735,1
    - Dst: getExtendedRCode
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1735,1
    - Dst: GenericDNSPacketWriter::addOpt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1742,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1743,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1745,1
    - Dst: getExtendedRCode
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1745,1
    - Dst: GenericDNSPacketWriter::addOpt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1752,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1753,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1755,1
    - Dst: getExtendedRCode
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1755,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 26
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1757
      start: 1697
    functionDepth: 1
    functionLinenumber: 1697
    functionLinenumberEnd: 1757
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc
    functionUses: 0
    functionsReached:
    - GenericDNSPacketWriter::addOpt
    - DNSQuestion
    - BOOST_CHECK_EQUAL
    - GenericDNSPacketWriter::commit
    - PacketBuffer::size
    - InternalQueryState::queryRealTime::start
    - PacketBuffer::resize
    - getExtendedRCode
    - BOOST_CHECK
    - dnsdist::getEDNSExtendedRCode
    - ComboAddress
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_getEDNSExtendedRCode)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1762,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1765,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1766,1
    - Dst: InternalQueryState::queryRealTime::start
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1767,1
    - Dst: EDNSSubnetOpts::setSource
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1771,1
    - Dst: Netmask
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1771,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1771,1
    - Dst: EDNSSubnetOpts::makeOptString
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1772,1
    - Dst: EDNSCookiesOpt::makeOptString
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1774,1
    - Dst: GenericDNSPacketWriter<PacketBuffer>::optvect_t::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1776,1
    - Dst: GenericDNSPacketWriter<PacketBuffer>::optvect_t::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1777,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1783,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1784,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1785,1
    - Dst: turnIntoResponse
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1787,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1788,1
    - Dst: dnsdist::getEDNSZ
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1788,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1789,1
    - Dst: dnsdist::getEDNSVersion
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1789,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1790,1
    - Dst: dnsdist::getEDNSExtendedRCode
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1790,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1792,1
    - Dst: getEDNSUDPPayloadSizeAndZ
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1792,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1792,1
    - Dst: auto::getData
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1792,1
    - Dst: auto::getData
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1792,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1793,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1794,1
    - Dst: GenericDNSPacketWriter::addOpt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1801,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1802,1
    - Dst: PacketBuffer::resize
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1804,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1804,1
    - Dst: turnIntoResponse
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1805,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1806,1
    - Dst: dnsdist::getEDNSZ
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1806,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1807,1
    - Dst: dnsdist::getEDNSVersion
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1807,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1808,1
    - Dst: dnsdist::getEDNSExtendedRCode
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1808,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1810,1
    - Dst: getEDNSUDPPayloadSizeAndZ
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1810,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1810,1
    - Dst: auto::getData
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1810,1
    - Dst: auto::getData
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1810,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1811,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1812,1
    - Dst: GenericDNSPacketWriter::addOpt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1819,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1820,1
    - Dst: turnIntoResponse
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1822,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1823,1
    - Dst: dnsdist::getEDNSZ
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1823,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1824,1
    - Dst: dnsdist::getEDNSVersion
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1824,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1825,1
    - Dst: dnsdist::getEDNSExtendedRCode
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1825,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1827,1
    - Dst: getEDNSUDPPayloadSizeAndZ
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1827,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1827,1
    - Dst: auto::getData
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1827,1
    - Dst: auto::getData
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1827,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1828,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1829,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1829,1
    - Dst: GenericDNSPacketWriter::addOpt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1836,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1837,1
    - Dst: turnIntoResponse
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1839,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1840,1
    - Dst: dnsdist::getEDNSZ
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1840,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1841,1
    - Dst: dnsdist::getEDNSVersion
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1841,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1842,1
    - Dst: dnsdist::getEDNSExtendedRCode
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1842,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1844,1
    - Dst: getEDNSUDPPayloadSizeAndZ
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1844,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1844,1
    - Dst: auto::getData
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1844,1
    - Dst: auto::getData
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1844,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1845,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1846,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1846,1
    - Dst: GenericDNSPacketWriter::addOpt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1853,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1854,1
    - Dst: turnIntoResponse
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1856,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1857,1
    - Dst: dnsdist::getEDNSZ
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1857,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1858,1
    - Dst: dnsdist::getEDNSVersion
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1858,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1859,1
    - Dst: dnsdist::getEDNSExtendedRCode
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1859,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1861,1
    - Dst: getEDNSUDPPayloadSizeAndZ
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1861,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1861,1
    - Dst: auto::getData
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1861,1
    - Dst: auto::getData
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1861,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1862,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1863,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1863,1
    - Dst: GenericDNSPacketWriter::addOpt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1870,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1871,1
    - Dst: turnIntoResponse
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1873,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1874,1
    - Dst: dnsdist::getEDNSZ
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1874,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1875,1
    - Dst: dnsdist::getEDNSVersion
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1875,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1876,1
    - Dst: dnsdist::getEDNSExtendedRCode
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1876,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1878,1
    - Dst: getEDNSUDPPayloadSizeAndZ
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1878,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1878,1
    - Dst: auto::getData
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1878,1
    - Dst: auto::getData
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1878,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1879,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1880,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1880,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 66
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1882
      start: 1759
    functionDepth: 2
    functionLinenumber: 1759
    functionLinenumberEnd: 1882
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc
    functionUses: 0
    functionsReached:
    - GenericDNSPacketWriter::getHeader
    - GenericDNSPacketWriter<PacketBuffer>::optvect_t::emplace_back
    - PacketBuffer::size
    - getEDNSUDPPayloadSizeAndZ
    - dnsdist::getEDNSZ
    - Netmask
    - dnsdist::configuration::getCurrentRuntimeConfiguration
    - EDNSSubnetOpts::makeOptString
    - EDNSSubnetOpts::setSource
    - DNSName
    - EDNSCookiesOpt::makeOptString
    - reinterpret_cast<const char*>
    - dnsdist::getEDNSExtendedRCode
    - ComboAddress
    - GenericDNSPacketWriter::addOpt
    - turnIntoResponse
    - BOOST_CHECK_EQUAL
    - GenericDNSPacketWriter::commit
    - InternalQueryState::queryRealTime::start
    - PacketBuffer::resize
    - auto::getData
    - BOOST_CHECK
    - dnsdist::getEDNSVersion
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_addEDNSToQueryTurnedResponse)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EDNSSubnetOpts::setSource
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1890,1
    - Dst: Netmask
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1890,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1890,1
    - Dst: EDNSSubnetOpts::makeOptString
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1891,1
    - Dst: GenericDNSPacketWriter<PacketBuffer>::optvect_t::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1893,1
    - Dst: DNSName::wirelength
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1898,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1904,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1905,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1906,1
    - Dst: dnsdist::getEDNSOptionsStart
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1908,1
    - Dst: DNSName::wirelength
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1908,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1910,1
    - Dst: PacketBuffer::resize
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1913,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1913,1
    - Dst: dnsdist::getEDNSOptionsStart
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1914,1
    - Dst: DNSName::wirelength
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1914,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1916,1
    - Dst: GenericDNSPacketWriter::addOpt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1923,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1924,1
    - Dst: dnsdist::getEDNSOptionsStart
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1926,1
    - Dst: DNSName::wirelength
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1926,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1928,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1929,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1930,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1930,1
    - Dst: PacketBuffer::resize
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1933,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1933,1
    - Dst: dnsdist::getEDNSOptionsStart
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1935,1
    - Dst: DNSName::wirelength
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1935,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1936,1
    - Dst: GenericDNSPacketWriter::addOpt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1943,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1944,1
    - Dst: dnsdist::getEDNSOptionsStart
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1946,1
    - Dst: DNSName::wirelength
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1946,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1948,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1949,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1950,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1950,1
    - Dst: PacketBuffer::resize
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1953,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1953,1
    - Dst: dnsdist::getEDNSOptionsStart
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1954,1
    - Dst: DNSName::wirelength
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1954,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1955,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1956,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1957,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1957,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 31
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1959
      start: 1884
    functionDepth: 1
    functionLinenumber: 1884
    functionLinenumberEnd: 1959
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc
    functionUses: 0
    functionsReached:
    - Netmask
    - GenericDNSPacketWriter::addOpt
    - DNSName::wirelength
    - GenericDNSPacketWriter::getHeader
    - GenericDNSPacketWriter<PacketBuffer>::optvect_t::emplace_back
    - EDNSSubnetOpts::setSource
    - BOOST_CHECK_EQUAL
    - GenericDNSPacketWriter::commit
    - PacketBuffer::size
    - PacketBuffer::resize
    - EDNSSubnetOpts::makeOptString
    - dnsdist::getEDNSOptionsStart
    - ComboAddress
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_getEDNSOptionsStart)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: locateEDNSOptRR
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1968,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1978,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1978,1
    - Dst: isEDNSOptionInOpt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1983,1
    - Dst: EDNSSubnetOpts::setSource
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1990,1
    - Dst: Netmask
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1990,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1990,1
    - Dst: EDNSSubnetOpts::makeOptString
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1991,1
    - Dst: string::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1992,1
    - Dst: EDNSCookiesOpt::makeOptString
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1995,1
    - Dst: EDNSCookiesOpt::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:1996,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2004,1
    - Dst: DNSName::wirelength
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2007,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2013,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2014,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2015,1
    - Dst: locateEDNSOption
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2017,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2018,1
    - Dst: PacketBuffer::resize
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2021,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2021,1
    - Dst: locateEDNSOption
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2022,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2023,1
    - Dst: GenericDNSPacketWriter::addOpt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2030,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2031,1
    - Dst: locateEDNSOption
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2033,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2034,1
    - Dst: PacketBuffer::resize
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2037,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2037,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2038,1
    - Dst: locateEDNSOption
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2038,1
    - Dst: GenericDNSPacketWriter<PacketBuffer>::optvect_t::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2046,1
    - Dst: GenericDNSPacketWriter<PacketBuffer>::optvect_t::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2047,1
    - Dst: GenericDNSPacketWriter::addOpt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2048,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2049,1
    - Dst: locateEDNSOption
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2051,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2052,1
    - Dst: PacketBuffer::resize
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2055,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2055,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2056,1
    - Dst: locateEDNSOption
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2056,1
    - Dst: GenericDNSPacketWriter<PacketBuffer>::optvect_t::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2064,1
    - Dst: GenericDNSPacketWriter<PacketBuffer>::optvect_t::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2065,1
    - Dst: GenericDNSPacketWriter::addOpt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2066,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2067,1
    - Dst: locateEDNSOption
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2069,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2070,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2072,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2073,1
    - Dst: PacketBuffer::resize
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2077,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2077,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2078,1
    - Dst: locateEDNSOption
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2078,1
    - Dst: GenericDNSPacketWriter<PacketBuffer>::optvect_t::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2086,1
    - Dst: GenericDNSPacketWriter<PacketBuffer>::optvect_t::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2087,1
    - Dst: GenericDNSPacketWriter<PacketBuffer>::optvect_t::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2088,1
    - Dst: GenericDNSPacketWriter::addOpt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2089,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2090,1
    - Dst: locateEDNSOption
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2092,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2093,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2095,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2096,1
    - Dst: PacketBuffer::resize
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2100,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2100,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2101,1
    - Dst: locateEDNSOption
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2101,1
    - Dst: GenericDNSPacketWriter<PacketBuffer>::optvect_t::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2109,1
    - Dst: GenericDNSPacketWriter<PacketBuffer>::optvect_t::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2110,1
    - Dst: GenericDNSPacketWriter::addOpt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2111,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2112,1
    - Dst: locateEDNSOption
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2114,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2115,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2117,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2118,1
    - Dst: string::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2118,1
    - Dst: PacketBuffer::resize
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2122,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2122,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2123,1
    - Dst: locateEDNSOption
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2123,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 72
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2125
      start: 1961
    functionDepth: 1
    functionLinenumber: 1961
    functionLinenumberEnd: 2125
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc
    functionUses: 0
    functionsReached:
    - GenericDNSPacketWriter::getHeader
    - GenericDNSPacketWriter<PacketBuffer>::optvect_t::emplace_back
    - PacketBuffer::size
    - BOOST_CHECK_THROW
    - isEDNSOptionInOpt
    - DNSName::wirelength
    - locateEDNSOptRR
    - string::size
    - size
    - at
    - Netmask
    - pdns::max
    - EDNSSubnetOpts::makeOptString
    - locateEDNSOption
    - EDNSSubnetOpts::setSource
    - EDNSCookiesOpt::size
    - ComboAddress
    - GenericDNSPacketWriter::addOpt
    - BOOST_CHECK_EQUAL
    - GenericDNSPacketWriter::commit
    - PacketBuffer::resize
    - EDNSCookiesOpt::makeOptString
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_isEDNSOptionInOpt)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2130,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2139,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2141,1
    - Dst: GenericDNSPacketWriter::addOpt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2142,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2143,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2150,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2150,1
    - Dst: auto::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2150,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2150,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2153,1
    - Dst: setNegativeAndAdditionalSOA
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2153,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2153,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2153,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2153,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2154,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2154,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2154,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2156,1
    - Dst: auto::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2156,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2156,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2158,1
    - Dst: MOADNSParser::d_qname::toString
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2158,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2159,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2160,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2161,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2162,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2163,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2164,1
    - Dst: MOADNSParser::d_answers::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2164,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2165,1
    - Dst: MOADNSParser::d_answers::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2165,1
    - Dst: static_cast<uint16_t>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2165,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2166,1
    - Dst: MOADNSParser::d_answers::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2166,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2167,1
    - Dst: MOADNSParser::d_answers::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2167,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2167,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2173,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2173,1
    - Dst: auto::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2173,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2173,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2176,1
    - Dst: setNegativeAndAdditionalSOA
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2176,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2176,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2176,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2176,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2177,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2177,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2177,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2179,1
    - Dst: auto::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2179,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2179,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2181,1
    - Dst: MOADNSParser::d_qname::toString
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2181,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2182,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2183,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2184,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2185,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2186,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2187,1
    - Dst: MOADNSParser::d_answers::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2187,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2188,1
    - Dst: MOADNSParser::d_answers::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2188,1
    - Dst: static_cast<uint16_t>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2188,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2189,1
    - Dst: MOADNSParser::d_answers::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2189,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2190,1
    - Dst: MOADNSParser::d_answers::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2190,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2190,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2191,1
    - Dst: MOADNSParser::d_answers::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2191,1
    - Dst: static_cast<uint16_t>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2191,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2192,1
    - Dst: MOADNSParser::d_answers::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2192,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2200,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2200,1
    - Dst: auto::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2200,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2200,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2203,1
    - Dst: setNegativeAndAdditionalSOA
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2203,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2203,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2203,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2203,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2204,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2204,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2204,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2206,1
    - Dst: auto::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2206,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2206,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2208,1
    - Dst: MOADNSParser::d_qname::toString
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2208,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2209,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2210,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2211,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2212,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2213,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2214,1
    - Dst: MOADNSParser::d_answers::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2214,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2215,1
    - Dst: MOADNSParser::d_answers::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2215,1
    - Dst: static_cast<uint16_t>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2215,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2216,1
    - Dst: MOADNSParser::d_answers::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2216,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2217,1
    - Dst: MOADNSParser::d_answers::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2217,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2217,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2223,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2223,1
    - Dst: auto::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2223,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2223,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2226,1
    - Dst: setNegativeAndAdditionalSOA
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2226,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2226,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2226,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2226,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2227,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2227,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2227,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2229,1
    - Dst: auto::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2229,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2229,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2231,1
    - Dst: MOADNSParser::d_qname::toString
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2231,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2232,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2233,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2234,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2235,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2236,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2237,1
    - Dst: MOADNSParser::d_answers::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2237,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2238,1
    - Dst: MOADNSParser::d_answers::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2238,1
    - Dst: static_cast<uint16_t>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2238,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2239,1
    - Dst: MOADNSParser::d_answers::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2239,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2240,1
    - Dst: MOADNSParser::d_answers::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2240,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2240,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2241,1
    - Dst: MOADNSParser::d_answers::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2241,1
    - Dst: static_cast<uint16_t>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2241,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2242,1
    - Dst: MOADNSParser::d_answers::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2242,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2252,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2252,1
    - Dst: auto::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2252,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2252,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2255,1
    - Dst: setNegativeAndAdditionalSOA
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2255,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2255,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2255,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2255,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2257,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2257,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2257,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2259,1
    - Dst: auto::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2259,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2259,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2261,1
    - Dst: MOADNSParser::d_qname::toString
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2261,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2262,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2263,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2264,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2265,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2266,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2267,1
    - Dst: MOADNSParser::d_answers::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2267,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2268,1
    - Dst: MOADNSParser::d_answers::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2268,1
    - Dst: static_cast<uint16_t>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2268,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2269,1
    - Dst: MOADNSParser::d_answers::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2269,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2270,1
    - Dst: MOADNSParser::d_answers::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2270,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2270,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2276,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2276,1
    - Dst: auto::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2276,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2276,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2279,1
    - Dst: setNegativeAndAdditionalSOA
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2279,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2279,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2279,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2279,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2280,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2280,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2280,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2282,1
    - Dst: auto::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2282,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2282,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2284,1
    - Dst: MOADNSParser::d_qname::toString
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2284,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2285,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2286,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2287,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2288,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2289,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2290,1
    - Dst: MOADNSParser::d_answers::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2290,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2291,1
    - Dst: MOADNSParser::d_answers::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2291,1
    - Dst: static_cast<uint16_t>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2291,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2292,1
    - Dst: MOADNSParser::d_answers::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2292,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2293,1
    - Dst: MOADNSParser::d_answers::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2293,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2293,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2294,1
    - Dst: MOADNSParser::d_answers::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2294,1
    - Dst: static_cast<uint16_t>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2294,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2295,1
    - Dst: MOADNSParser::d_answers::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2295,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2303,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2303,1
    - Dst: auto::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2303,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2303,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2306,1
    - Dst: setNegativeAndAdditionalSOA
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2306,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2306,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2306,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2306,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2307,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2307,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2307,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2309,1
    - Dst: auto::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2309,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2309,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2311,1
    - Dst: MOADNSParser::d_qname::toString
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2311,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2312,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2313,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2314,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2315,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2316,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2317,1
    - Dst: MOADNSParser::d_answers::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2317,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2318,1
    - Dst: MOADNSParser::d_answers::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2318,1
    - Dst: static_cast<uint16_t>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2318,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2319,1
    - Dst: MOADNSParser::d_answers::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2319,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2320,1
    - Dst: MOADNSParser::d_answers::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2320,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2320,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2326,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2326,1
    - Dst: auto::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2326,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2326,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2329,1
    - Dst: setNegativeAndAdditionalSOA
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2329,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2329,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2329,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2329,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2330,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2330,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2330,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2332,1
    - Dst: auto::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2332,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2332,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2334,1
    - Dst: MOADNSParser::d_qname::toString
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2334,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2335,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2336,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2337,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2338,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2339,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2340,1
    - Dst: MOADNSParser::d_answers::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2340,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2341,1
    - Dst: MOADNSParser::d_answers::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2341,1
    - Dst: static_cast<uint16_t>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2341,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2342,1
    - Dst: MOADNSParser::d_answers::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2342,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2343,1
    - Dst: MOADNSParser::d_answers::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2343,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2343,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2344,1
    - Dst: MOADNSParser::d_answers::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2344,1
    - Dst: static_cast<uint16_t>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2344,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2345,1
    - Dst: MOADNSParser::d_answers::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2345,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 127
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2347
      start: 2127
    functionDepth: 1
    functionLinenumber: 2127
    functionLinenumberEnd: 2347
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc
    functionUses: 0
    functionsReached:
    - GenericDNSPacketWriter::addOpt
    - BOOST_REQUIRE_EQUAL
    - GenericDNSPacketWriter::getHeader
    - DNSName
    - auto::data
    - setNegativeAndAdditionalSOA
    - GenericDNSPacketWriter::commit
    - PacketBuffer::size
    - reinterpret_cast<const char*>
    - BOOST_CHECK_EQUAL
    - MOADNSParser::d_answers::size
    - MOADNSParser::d_answers::at
    - static_cast<uint16_t>
    - BOOST_CHECK
    - MOADNSParser::d_qname::toString
    - auto::size
    - ComboAddress
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_setNegativeAndAdditionalSOA)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2352,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2362,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2363,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2372,1
    - Dst: auto::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2372,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2372,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2375,1
    - Dst: parseEDNSOptions
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2375,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2382,1
    - Dst: GenericDNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2383,1
    - Dst: GenericDNSPacketWriter::xfrIP
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2384,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2385,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2394,1
    - Dst: auto::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2394,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2394,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2397,1
    - Dst: parseEDNSOptions
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2397,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2404,1
    - Dst: GenericDNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2405,1
    - Dst: GenericDNSPacketWriter::xfrIP
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2406,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2407,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2416,1
    - Dst: auto::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2416,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2416,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2419,1
    - Dst: parseEDNSOptions
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2419,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 19
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2421
      start: 2349
    functionDepth: 1
    functionLinenumber: 2349
    functionLinenumberEnd: 2421
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc
    functionUses: 0
    functionsReached:
    - GenericDNSPacketWriter::xfrIP
    - GenericDNSPacketWriter::startRecord
    - GenericDNSPacketWriter::getHeader
    - auto::data
    - parseEDNSOptions
    - GenericDNSPacketWriter::commit
    - reinterpret_cast<const char*>
    - BOOST_CHECK
    - auto::size
    - ComboAddress
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(getEDNSOptionsWithoutEDNS)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2426,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2427,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2429,1
    - Dst: InternalQueryState::queryRealTime::start
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2432,1
    - Dst: gettime
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2436,1
    - Dst: GenericDNSPacketWriter::addOpt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2440,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2441,1
    - Dst: EDNSCookiesOpt::makeOptString
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2447,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2449,1
    - Dst: setEDNSOption
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2449,1
    - Dst: DNSQuestion::getData
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2451,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2453,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2453,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2453,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2455,1
    - Dst: MOADNSParser::d_qname::toString
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2455,1
    - Dst: InternalQueryState::qname::toString
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2455,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2456,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2457,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2458,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2459,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2460,1
    - Dst: MOADNSParser::d_answers::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2460,1
    - Dst: static_cast<uint16_t>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2460,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2461,1
    - Dst: MOADNSParser::d_answers::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2461,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2464,1
    - Dst: getEDNS0Record
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2464,1
    - Dst: DNSQuestion::getData
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2464,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2465,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2466,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2467,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2467,1
    - Dst: parseEDNSOptions
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2469,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2470,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2471,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2471,1
    - Dst: auto::find
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2472,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2473,1
    - Dst: auto::cend
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2473,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2475,1
    - Dst: second::values::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2475,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2476,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2476,1
    - Dst: second::values::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2476,1
    - Dst: second::values::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2476,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 28
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2477
      start: 2423
    functionDepth: 1
    functionLinenumber: 2423
    functionLinenumberEnd: 2477
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc
    functionUses: 0
    functionsReached:
    - DNSQuestion::getData
    - ntohs
    - std::string
    - auto::size
    - InternalQueryState::qname::toString
    - size
    - parseEDNSOptions
    - static_cast<uint16_t>
    - MOADNSParser::d_answers::at
    - BOOST_REQUIRE
    - getEDNS0Record
    - auto::cend
    - BOOST_REQUIRE_EQUAL
    - second::values::size
    - second::values::at
    - DNSName
    - reinterpret_cast<const char*>
    - gettime
    - auto::find
    - ComboAddress
    - GenericDNSPacketWriter::addOpt
    - setEDNSOption
    - BOOST_CHECK_EQUAL
    - GenericDNSPacketWriter::commit
    - InternalQueryState::queryRealTime::start
    - data
    - EDNSCookiesOpt::makeOptString
    - MOADNSParser::d_qname::toString
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_setEDNSOption)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2482,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2483,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2485,1
    - Dst: InternalQueryState::queryRealTime::start
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2488,1
    - Dst: GenericDNSPacketWriter::addOpt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2492,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2493,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2497,1
    - Dst: DNSQuestion::getTag
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2497,1
    - Dst: DNSQuestion::setTag
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2502,1
    - Dst: DNSQuestion::getTag
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2503,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2504,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2505,1
    - Dst: DNSQuestion::setTag
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2507,1
    - Dst: DNSQuestion::getTag
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2508,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2509,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2510,1
    - Dst: DNSQuestion::unsetTag
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2512,1
    - Dst: DNSQuestion::getTag
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2513,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc:2514,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 21
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2515
      start: 2479
    functionDepth: 1
    functionLinenumber: 2479
    functionLinenumberEnd: 2515
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc
    functionUses: 0
    functionsReached:
    - GenericDNSPacketWriter::addOpt
    - DNSQuestion::getTag
    - DNSQuestion::setTag
    - DNSQuestion::unsetTag
    - DNSName
    - BOOST_CHECK_EQUAL
    - GenericDNSPacketWriter::commit
    - InternalQueryState::queryRealTime::start
    - BOOST_REQUIRE
    - BOOST_CHECK
    - ComboAddress
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_DNSQuestion_Tags)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::unique_ptr<FDMultiplexer>
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:17,1
    - Dst: FDMultiplexer::getMultiplexerSilent
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:17,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:18,1
    - Dst: auto::run
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:21,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:22,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:23,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 24
      start: 15
    functionDepth: 0
    functionLinenumber: 15
    functionLinenumberEnd: 24
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-mplexer.cc
    functionUses: 0
    functionsReached:
    - BOOST_CHECK
    - BOOST_CHECK_EQUAL
    - std::unique_ptr<FDMultiplexer>
    - auto::run
    - BOOST_REQUIRE
    - FDMultiplexer::getMultiplexerSilent
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_getMultiplexerSilent)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: FDMultiplexer::getMultiplexerMap
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:28,1
    - Dst: std::unique_ptr<FDMultiplexer>
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:29,1
    - Dst: second
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:29,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:30,1
    - Dst: auto::run
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:34,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:35,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:36,1
    - Dst: auto::getAvailableFDs
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:39,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:40,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:40,1
    - Dst: auto::getTimeouts
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:42,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:43,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:43,1
    - Dst: pipe
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:46,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:47,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:48,1
    - Dst: setNonBlocking
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:48,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:49,1
    - Dst: setNonBlocking
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:49,1
    - Dst: boost::any_cast<bool*>
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:57,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:58,1
    - Dst: auto::addWriteFD
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:61,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:66,1
    - Dst: auto::addWriteFD
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:66,1
    - Dst: std::vector::clear
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:72,1
    - Dst: auto::getAvailableFDs
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:73,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:74,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:74,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:75,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:75,1
    - Dst: auto::run
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:78,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:79,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:80,1
    - Dst: auto::getTimeouts
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:83,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:84,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:84,1
    - Dst: auto::getTimeouts
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:86,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:87,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:87,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:88,1
    - Dst: auto::at
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:88,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:91,1
    - Dst: auto::removeReadFD
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:91,1
    - Dst: auto::removeWriteFD
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:92,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:94,1
    - Dst: auto::removeWriteFD
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:94,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:95,1
    - Dst: auto::removeWriteFD
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:95,1
    - Dst: std::vector::clear
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:97,1
    - Dst: auto::getAvailableFDs
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:98,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:99,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:99,1
    - Dst: auto::run
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:101,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:102,1
    - Dst: boost::any_cast<bool*>
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:106,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:107,1
    - Dst: auto::addReadFD
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:110,1
    - Dst: std::vector::clear
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:116,1
    - Dst: auto::getAvailableFDs
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:117,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:118,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:118,1
    - Dst: auto::run
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:120,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:121,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:122,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:125,1
    - Dst: write
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:125,1
    - Dst: std::vector::clear
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:127,1
    - Dst: auto::getAvailableFDs
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:128,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:129,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:129,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:130,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:130,1
    - Dst: auto::run
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:132,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:133,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:134,1
    - Dst: auto::addWriteFD
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:137,1
    - Dst: std::vector::clear
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:145,1
    - Dst: auto::getAvailableFDs
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:147,1
    - Dst: BOOST_REQUIRE_GT
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:148,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:148,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:149,1
    - Dst: auto::run
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:150,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:151,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:153,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:159,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:159,1
    - Dst: auto::run
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:160,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:161,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:162,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:163,1
    - Dst: read
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:165,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:166,1
    - Dst: std::vector::clear
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:169,1
    - Dst: auto::getAvailableFDs
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:170,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:171,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:171,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:172,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:172,1
    - Dst: auto::run
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:174,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:175,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:178,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:179,1
    - Dst: auto::getTimeouts
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:182,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:183,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:183,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:184,1
    - Dst: auto::at
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:184,1
    - Dst: auto::getTimeouts
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:185,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:186,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:186,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:187,1
    - Dst: auto::at
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:187,1
    - Dst: auto::getTimeouts
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:194,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:195,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:195,1
    - Dst: auto::getTimeouts
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:197,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:198,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:198,1
    - Dst: auto::setReadTTD
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:201,1
    - Dst: auto::setWriteTTD
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:202,1
    - Dst: auto::getTimeouts
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:203,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:204,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:204,1
    - Dst: auto::getTimeouts
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:205,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:206,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:206,1
    - Dst: auto::setReadTTD
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:209,1
    - Dst: auto::setWriteTTD
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:210,1
    - Dst: auto::getTimeouts
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:211,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:212,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:212,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:213,1
    - Dst: auto::at
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:213,1
    - Dst: auto::getTimeouts
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:214,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:215,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:215,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:216,1
    - Dst: auto::at
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:216,1
    - Dst: auto::removeReadFD
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:218,1
    - Dst: auto::removeWriteFD
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:219,1
    - Dst: close
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:222,1
    - Dst: close
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:223,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 111
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 225
      start: 26
    functionDepth: 1
    functionLinenumber: 26
    functionLinenumberEnd: 225
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-mplexer.cc
    functionUses: 0
    functionsReached:
    - FDMultiplexer::getMultiplexerMap
    - auto::getTimeouts
    - auto::run
    - auto::addReadFD
    - std::vector::at
    - auto::setReadTTD
    - BOOST_CHECK_THROW
    - auto::size
    - std::vector::size
    - auto::getAvailableFDs
    - setNonBlocking
    - auto::removeReadFD
    - BOOST_REQUIRE
    - boost::any_cast<bool*>
    - BOOST_REQUIRE_EQUAL
    - second
    - BOOST_REQUIRE_GT
    - write
    - auto::setWriteTTD
    - std::vector::clear
    - read
    - pipe
    - BOOST_CHECK_EQUAL
    - std::unique_ptr<FDMultiplexer>
    - auto::addWriteFD
    - auto::removeWriteFD
    - auto::at
    - BOOST_CHECK
    - close
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_MPlexer)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: FDMultiplexer::getMultiplexerMap
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:229,1
    - Dst: std::unique_ptr<FDMultiplexer>
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:230,1
    - Dst: second
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:230,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:231,1
    - Dst: socketpair
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:235,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:236,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:237,1
    - Dst: setNonBlocking
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:237,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:238,1
    - Dst: setNonBlocking
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:238,1
    - Dst: gettimeofday
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:241,1
    - Dst: boost::any_cast<bool*>
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:249,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:250,1
    - Dst: boost::any_cast<bool*>
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:254,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:255,1
    - Dst: auto::addReadFD
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:258,1
    - Dst: auto::addWriteFD
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:262,1
    - Dst: std::vector::clear
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:268,1
    - Dst: auto::getAvailableFDs
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:269,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:270,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:270,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:271,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:271,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:274,1
    - Dst: write
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:274,1
    - Dst: std::vector::clear
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:276,1
    - Dst: auto::getAvailableFDs
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:277,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:278,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:278,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:279,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:279,1
    - Dst: auto::run
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:281,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:282,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:283,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:284,1
    - Dst: auto::removeReadFD
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:287,1
    - Dst: std::vector::clear
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:291,1
    - Dst: auto::getAvailableFDs
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:292,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:293,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:293,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:294,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:294,1
    - Dst: auto::run
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:295,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:296,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:297,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:298,1
    - Dst: auto::removeWriteFD
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:300,1
    - Dst: close
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:303,1
    - Dst: close
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:304,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 42
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 306
      start: 227
    functionDepth: 1
    functionLinenumber: 227
    functionLinenumberEnd: 306
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-mplexer.cc
    functionUses: 0
    functionsReached:
    - FDMultiplexer::getMultiplexerMap
    - auto::addReadFD
    - auto::run
    - std::vector::at
    - gettimeofday
    - std::vector::size
    - setNonBlocking
    - auto::getAvailableFDs
    - auto::removeReadFD
    - BOOST_REQUIRE
    - boost::any_cast<bool*>
    - BOOST_REQUIRE_EQUAL
    - second
    - write
    - std::vector::clear
    - auto::addWriteFD
    - std::unique_ptr<FDMultiplexer>
    - BOOST_CHECK_EQUAL
    - auto::removeWriteFD
    - socketpair
    - close
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_MPlexer_ReadAndWrite)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: boost::any_cast<bool*>
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:319,1
    - Dst: boost::any_cast<bool*>
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:323,1
    - Dst: gettimeofday
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:329,1
    - Dst: DTime::DTime
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:332,1
    - Dst: std::vector::reserve
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:334,1
    - Dst: FDMultiplexer::getMultiplexerMap
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:336,1
    - Dst: std::unique_ptr<FDMultiplexer>
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:337,1
    - Dst: second
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:337,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:338,1
    - Dst: auto::getName
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:339,1
    - Dst: socketpair
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:342,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:343,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:344,1
    - Dst: setNonBlocking
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:344,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:345,1
    - Dst: setNonBlocking
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:345,1
    - Dst: DTime::set
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:348,1
    - Dst: auto::addReadFD
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:350,1
    - Dst: auto::addWriteFD
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:354,1
    - Dst: DTime::udiff
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:359,1
    - Dst: std::vector::clear
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:361,1
    - Dst: DTime::set
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:362,1
    - Dst: auto::getAvailableFDs
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:363,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:364,1
    - Dst: DTime::udiff
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:364,1
    - Dst: DTime::set
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:366,1
    - Dst: auto::run
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:367,1
    - Dst: DTime::udiff
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:368,1
    - Dst: DTime::set
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:370,1
    - Dst: auto::removeWriteFD
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:373,1
    - Dst: DTime::udiff
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:375,1
    - Dst: write
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:378,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:378,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:378,1
    - Dst: std::vector::clear
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:380,1
    - Dst: DTime::set
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:381,1
    - Dst: auto::getAvailableFDs
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:382,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:383,1
    - Dst: DTime::udiff
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:383,1
    - Dst: DTime::set
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:385,1
    - Dst: auto::run
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:386,1
    - Dst: DTime::udiff
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:387,1
    - Dst: DTime::set
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:389,1
    - Dst: auto::removeReadFD
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:391,1
    - Dst: DTime::udiff
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:393,1
    - Dst: close
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:397,1
    - Dst: close
      Src: /src/pdns/pdns/dnsdistdist/test-mplexer.cc:398,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 45
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 401
      start: 309
    functionDepth: 1
    functionLinenumber: 309
    functionLinenumberEnd: 401
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-mplexer.cc
    functionUses: 0
    functionsReached:
    - FDMultiplexer::getMultiplexerMap
    - auto::addReadFD
    - auto::run
    - std::vector::at
    - gettimeofday
    - DTime::set
    - std::vector::size
    - setNonBlocking
    - auto::getAvailableFDs
    - auto::removeReadFD
    - DTime::DTime
    - BOOST_REQUIRE
    - boost::any_cast<bool*>
    - BOOST_REQUIRE_EQUAL
    - second
    - DTime::udiff
    - auto::getName
    - std::vector::reserve
    - write
    - std::vector::clear
    - auto::addWriteFD
    - std::unique_ptr<FDMultiplexer>
    - auto::removeWriteFD
    - socketpair
    - close
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_MPlexer_Bench)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: reset
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:26,1
    - Dst: init
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:31,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 32
      start: 24
    functionDepth: 0
    functionLinenumber: 24
    functionLinenumberEnd: 32
    functionName: TestFixture
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc
    functionUses: 0
    functionsReached:
    - init
    - reset
    linkageType: ''
    returnType: void
    signature: void TestFixture()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: reset
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:35,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 36
      start: 33
    functionDepth: 0
    functionLinenumber: 33
    functionLinenumberEnd: 36
    functionName: ~TestFixture()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc
    functionUses: 0
    functionsReached:
    - reset
    linkageType: ''
    returnType: void
    signature: void ~TestFixture()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: reset
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:45,1
    - Dst: init
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:51,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 52
    functionName: TestFixtureWithSampling
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc
    functionUses: 0
    functionsReached:
    - init
    - reset
    linkageType: ''
    returnType: void
    signature: void TestFixtureWithSampling()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: reset
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:55,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 53
    functionDepth: 0
    functionLinenumber: 53
    functionLinenumberEnd: 56
    functionName: ~TestFixtureWithSampling()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc
    functionUses: 0
    functionsReached:
    - reset
    linkageType: ''
    returnType: void
    signature: void ~TestFixtureWithSampling()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:62,1
    - Dst: gettime
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:73,1
    - Dst: NetmaskTree::NetmaskTree
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:74,1
    - Dst: DynBlockRulesGroup::DynBlockRulesGroup
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:81,1
    - Dst: DynBlockRulesGroup::setQuiet
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:82,1
    - Dst: DynBlockRulesGroup::setQueryRate
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:87,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:87,1
    - Dst: clear
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:94,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:95,1
    - Dst: getNumberOfQueryEntries
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:95,1
    - Dst: dnsdist::DynamicBlocks::clearClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:96,1
    - Dst: insertQuery
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:99,1
    - Dst: insertResponse
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:102,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:102,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:104,1
    - Dst: getNumberOfResponseEntries
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:104,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:105,1
    - Dst: getNumberOfQueryEntries
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:105,1
    - Dst: DynBlockRulesGroup::apply
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:107,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:108,1
    - Dst: dnsdist::DynamicBlocks::getClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:108,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:109,1
    - Dst: dnsdist::DynamicBlocks::getClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:109,1
    - Dst: clear
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:116,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:117,1
    - Dst: getNumberOfQueryEntries
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:117,1
    - Dst: dnsdist::DynamicBlocks::clearClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:118,1
    - Dst: insertQuery
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:121,1
    - Dst: insertResponse
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:122,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:122,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:124,1
    - Dst: getNumberOfQueryEntries
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:124,1
    - Dst: DynBlockRulesGroup::apply
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:126,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:127,1
    - Dst: dnsdist::DynamicBlocks::getClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:127,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:128,1
    - Dst: dnsdist::DynamicBlocks::getClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:128,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:129,1
    - Dst: dnsdist::DynamicBlocks::getClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:129,1
    - Dst: dnsdist::DynamicBlocks::getClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:130,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:131,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:132,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:132,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:133,1
    - Dst: domain::empty
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:133,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:134,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:135,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:136,1
    - Dst: clear
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:141,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:142,1
    - Dst: getNumberOfQueryEntries
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:142,1
    - Dst: dnsdist::DynamicBlocks::clearClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:143,1
    - Dst: insertQuery
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:153,1
    - Dst: insertResponse
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:154,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:154,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:157,1
    - Dst: getNumberOfQueryEntries
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:157,1
    - Dst: DynBlockRulesGroup::apply
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:159,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:160,1
    - Dst: dnsdist::DynamicBlocks::getClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:160,1
    - Dst: dnsdist::DynamicBlocks::clearClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:163,1
    - Dst: DynBlockRulesGroup::apply
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:170,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:171,1
    - Dst: dnsdist::DynamicBlocks::getClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:171,1
    - Dst: dnsdist::DynamicBlocks::clearClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:174,1
    - Dst: DynBlockRulesGroup::apply
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:182,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:183,1
    - Dst: dnsdist::DynamicBlocks::getClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:183,1
    - Dst: dnsdist::DynamicBlocks::clearClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:186,1
    - Dst: DynBlockRulesGroup::apply
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:194,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:195,1
    - Dst: dnsdist::DynamicBlocks::getClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:195,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 66
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 197
      start: 59
    functionDepth: 2
    functionLinenumber: 59
    functionLinenumberEnd: 197
    functionName: BOOST_FIXTURE_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc
    functionUses: 0
    functionsReached:
    - DynBlockRulesGroup::DynBlockRulesGroup
    - domain::empty
    - static_cast<size_t>
    - dnsdist::DynamicBlocks::getClientAddressDynamicRules
    - memset
    - insertQuery
    - clear
    - DynBlockRulesGroup::apply
    - getNumberOfQueryEntries
    - insertResponse
    - dnsdist::DynamicBlocks::clearClientAddressDynamicRules
    - DynBlockRulesGroup::setQuiet
    - DNSName
    - getNumberOfResponseEntries
    - gettime
    - std::move
    - BOOST_CHECK_EQUAL
    - DynBlockRulesGroup::setQueryRate
    - BOOST_CHECK
    - NetmaskTree::NetmaskTree
    linkageType: ''
    returnType: void
    signature: void BOOST_FIXTURE_TEST_CASE(test_DynBlockRulesGroup_QueryRate, TestFixture)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:204,1
    - Dst: gettime
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:215,1
    - Dst: NetmaskTree::NetmaskTree
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:216,1
    - Dst: DynBlockRulesGroup::DynBlockRulesGroup
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:223,1
    - Dst: DynBlockRulesGroup::setQuiet
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:224,1
    - Dst: DynBlockRulesGroup::setMasks
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:225,1
    - Dst: DynBlockRulesGroup::excludeRange
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:226,1
    - Dst: Netmask
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:226,1
    - Dst: DynBlockRulesGroup::setQueryRate
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:231,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:231,1
    - Dst: clear
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:238,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:239,1
    - Dst: getNumberOfQueryEntries
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:239,1
    - Dst: dnsdist::DynamicBlocks::clearClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:240,1
    - Dst: insertQuery
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:243,1
    - Dst: insertResponse
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:244,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:244,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:246,1
    - Dst: getNumberOfQueryEntries
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:246,1
    - Dst: DynBlockRulesGroup::apply
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:248,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:249,1
    - Dst: dnsdist::DynamicBlocks::getClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:249,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:250,1
    - Dst: dnsdist::DynamicBlocks::getClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:250,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:251,1
    - Dst: dnsdist::DynamicBlocks::getClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:251,1
    - Dst: dnsdist::DynamicBlocks::getClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:252,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:253,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:254,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:254,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:255,1
    - Dst: domain::empty
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:255,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:256,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:257,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:258,1
    - Dst: clear
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:264,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:265,1
    - Dst: getNumberOfQueryEntries
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:265,1
    - Dst: dnsdist::DynamicBlocks::clearClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:266,1
    - Dst: insertQuery
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:269,1
    - Dst: insertResponse
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:270,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:270,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:272,1
    - Dst: getNumberOfQueryEntries
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:272,1
    - Dst: DynBlockRulesGroup::apply
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:274,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:275,1
    - Dst: dnsdist::DynamicBlocks::getClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:275,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 38
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 277
      start: 201
    functionDepth: 2
    functionLinenumber: 201
    functionLinenumberEnd: 277
    functionName: BOOST_FIXTURE_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc
    functionUses: 0
    functionsReached:
    - DynBlockRulesGroup::DynBlockRulesGroup
    - DynBlockRulesGroup::setMasks
    - domain::empty
    - static_cast<size_t>
    - dnsdist::DynamicBlocks::getClientAddressDynamicRules
    - memset
    - insertQuery
    - clear
    - DynBlockRulesGroup::excludeRange
    - DynBlockRulesGroup::apply
    - getNumberOfQueryEntries
    - insertResponse
    - Netmask
    - dnsdist::DynamicBlocks::clearClientAddressDynamicRules
    - DynBlockRulesGroup::setQuiet
    - DNSName
    - gettime
    - std::move
    - BOOST_CHECK_EQUAL
    - DynBlockRulesGroup::setQueryRate
    - BOOST_CHECK
    - NetmaskTree::NetmaskTree
    linkageType: ''
    returnType: void
    signature: void BOOST_FIXTURE_TEST_CASE(test_DynBlockRulesGroup_QueryRate_ExcludedSubnets,
      TestFixture)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:284,1
    - Dst: gettime
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:294,1
    - Dst: NetmaskTree::NetmaskTree
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:295,1
    - Dst: DynBlockRulesGroup::DynBlockRulesGroup
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:302,1
    - Dst: DynBlockRulesGroup::setQuiet
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:303,1
    - Dst: DynBlockRulesGroup::setMasks
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:304,1
    - Dst: DynBlockRulesGroup::setQueryRate
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:309,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:309,1
    - Dst: clear
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:316,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:317,1
    - Dst: getNumberOfQueryEntries
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:317,1
    - Dst: dnsdist::DynamicBlocks::clearClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:318,1
    - Dst: insertQuery
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:321,1
    - Dst: insertResponse
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:324,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:324,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:326,1
    - Dst: getNumberOfResponseEntries
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:326,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:327,1
    - Dst: getNumberOfQueryEntries
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:327,1
    - Dst: DynBlockRulesGroup::apply
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:329,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:330,1
    - Dst: dnsdist::DynamicBlocks::getClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:330,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:331,1
    - Dst: dnsdist::DynamicBlocks::getClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:331,1
    - Dst: AddressAndPortRange
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:331,1
    - Dst: clear
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:338,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:339,1
    - Dst: getNumberOfQueryEntries
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:339,1
    - Dst: dnsdist::DynamicBlocks::clearClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:340,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:343,1
    - Dst: insertQuery
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:344,1
    - Dst: insertResponse
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:345,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:345,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:347,1
    - Dst: getNumberOfQueryEntries
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:347,1
    - Dst: DynBlockRulesGroup::apply
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:349,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:350,1
    - Dst: dnsdist::DynamicBlocks::getClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:350,1
    - Dst: dnsdist::DynamicBlocks::getClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:354,1
    - Dst: AddressAndPortRange
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:354,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:355,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:356,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:356,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:357,1
    - Dst: domain::empty
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:357,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:358,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:359,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:360,1
    - Dst: dnsdist::DynamicBlocks::getClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:366,1
    - Dst: AddressAndPortRange
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:366,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:367,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:368,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:368,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:369,1
    - Dst: domain::empty
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:369,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:370,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:371,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:372,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:378,1
    - Dst: dnsdist::DynamicBlocks::getClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:378,1
    - Dst: AddressAndPortRange
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:378,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 47
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 381
      start: 279
    functionDepth: 2
    functionLinenumber: 279
    functionLinenumberEnd: 381
    functionName: BOOST_FIXTURE_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc
    functionUses: 0
    functionsReached:
    - std::to_string
    - DynBlockRulesGroup::DynBlockRulesGroup
    - DynBlockRulesGroup::setMasks
    - domain::empty
    - static_cast<size_t>
    - dnsdist::DynamicBlocks::getClientAddressDynamicRules
    - memset
    - insertQuery
    - clear
    - DynBlockRulesGroup::apply
    - getNumberOfQueryEntries
    - insertResponse
    - dnsdist::DynamicBlocks::clearClientAddressDynamicRules
    - DynBlockRulesGroup::setQuiet
    - DNSName
    - getNumberOfResponseEntries
    - AddressAndPortRange
    - gettime
    - std::move
    - BOOST_CHECK_EQUAL
    - DynBlockRulesGroup::setQueryRate
    - BOOST_CHECK
    - NetmaskTree::NetmaskTree
    linkageType: ''
    returnType: void
    signature: void BOOST_FIXTURE_TEST_CASE(test_DynBlockRulesGroup_QueryRate_RangeV6,
      TestFixture)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:387,1
    - Dst: gettime
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:397,1
    - Dst: NetmaskTree::NetmaskTree
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:398,1
    - Dst: DynBlockRulesGroup::DynBlockRulesGroup
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:405,1
    - Dst: DynBlockRulesGroup::setQuiet
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:406,1
    - Dst: DynBlockRulesGroup::setMasks
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:408,1
    - Dst: DynBlockRulesGroup::setQueryRate
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:413,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:413,1
    - Dst: clear
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:420,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:421,1
    - Dst: getNumberOfQueryEntries
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:421,1
    - Dst: dnsdist::DynamicBlocks::clearClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:422,1
    - Dst: insertQuery
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:425,1
    - Dst: insertResponse
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:428,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:428,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:430,1
    - Dst: getNumberOfResponseEntries
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:430,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:431,1
    - Dst: getNumberOfQueryEntries
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:431,1
    - Dst: DynBlockRulesGroup::apply
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:433,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:434,1
    - Dst: dnsdist::DynamicBlocks::getClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:434,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:435,1
    - Dst: dnsdist::DynamicBlocks::getClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:435,1
    - Dst: AddressAndPortRange
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:435,1
    - Dst: clear
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:442,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:443,1
    - Dst: getNumberOfQueryEntries
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:443,1
    - Dst: dnsdist::DynamicBlocks::clearClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:444,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:447,1
    - Dst: insertQuery
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:448,1
    - Dst: insertResponse
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:449,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:449,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:451,1
    - Dst: getNumberOfQueryEntries
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:451,1
    - Dst: DynBlockRulesGroup::apply
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:453,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:454,1
    - Dst: dnsdist::DynamicBlocks::getClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:454,1
    - Dst: dnsdist::DynamicBlocks::getClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:458,1
    - Dst: AddressAndPortRange
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:458,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:458,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:459,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:460,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:460,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:461,1
    - Dst: domain::empty
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:461,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:462,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:463,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:464,1
    - Dst: dnsdist::DynamicBlocks::getClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:469,1
    - Dst: AddressAndPortRange
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:469,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:469,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:470,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:471,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:471,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:472,1
    - Dst: domain::empty
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:472,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:473,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:474,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:475,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:480,1
    - Dst: dnsdist::DynamicBlocks::getClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:480,1
    - Dst: AddressAndPortRange
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:480,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:480,1
    - Dst: dnsdist::DynamicBlocks::getClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:486,1
    - Dst: AddressAndPortRange
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:486,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:486,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:487,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:488,1
    - Dst: clear
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:492,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:493,1
    - Dst: getNumberOfQueryEntries
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:493,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:496,1
    - Dst: insertQuery
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:497,1
    - Dst: insertResponse
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:498,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:498,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:500,1
    - Dst: getNumberOfQueryEntries
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:500,1
    - Dst: DynBlockRulesGroup::apply
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:502,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:504,1
    - Dst: dnsdist::DynamicBlocks::getClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:504,1
    - Dst: dnsdist::DynamicBlocks::getClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:507,1
    - Dst: AddressAndPortRange
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:507,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:507,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:508,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:509,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:513,1
    - Dst: dnsdist::DynamicBlocks::getClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:513,1
    - Dst: AddressAndPortRange
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:513,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:513,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 64
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 515
      start: 383
    functionDepth: 2
    functionLinenumber: 383
    functionLinenumberEnd: 515
    functionName: BOOST_FIXTURE_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc
    functionUses: 0
    functionsReached:
    - std::to_string
    - DynBlockRulesGroup::DynBlockRulesGroup
    - DynBlockRulesGroup::setMasks
    - domain::empty
    - static_cast<size_t>
    - dnsdist::DynamicBlocks::getClientAddressDynamicRules
    - memset
    - insertQuery
    - BOOST_REQUIRE
    - clear
    - DynBlockRulesGroup::apply
    - getNumberOfQueryEntries
    - insertResponse
    - dnsdist::DynamicBlocks::clearClientAddressDynamicRules
    - DynBlockRulesGroup::setQuiet
    - DNSName
    - getNumberOfResponseEntries
    - AddressAndPortRange
    - gettime
    - ComboAddress
    - std::move
    - BOOST_CHECK_EQUAL
    - DynBlockRulesGroup::setQueryRate
    - BOOST_CHECK
    - NetmaskTree::NetmaskTree
    linkageType: ''
    returnType: void
    signature: void BOOST_FIXTURE_TEST_CASE(test_DynBlockRulesGroup_QueryRate_V4Ports,
      TestFixture)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:522,1
    - Dst: gettime
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:533,1
    - Dst: NetmaskTree::NetmaskTree
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:534,1
    - Dst: reset
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:537,1
    - Dst: init
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:541,1
    - Dst: DynBlockRulesGroup::DynBlockRulesGroup
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:548,1
    - Dst: DynBlockRulesGroup::setQuiet
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:549,1
    - Dst: DynBlockRulesGroup::setQueryRate
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:554,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:554,1
    - Dst: DynBlockRulesGroup::setRCodeRate
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:558,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:558,1
    - Dst: clear
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:565,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:566,1
    - Dst: getNumberOfQueryEntries
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:566,1
    - Dst: dnsdist::DynamicBlocks::clearClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:567,1
    - Dst: insertQuery
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:573,1
    - Dst: insertResponse
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:576,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:576,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:579,1
    - Dst: getNumberOfResponseEntries
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:579,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:580,1
    - Dst: getNumberOfQueryEntries
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:580,1
    - Dst: DynBlockRulesGroup::apply
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:582,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:583,1
    - Dst: dnsdist::DynamicBlocks::getClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:583,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:584,1
    - Dst: dnsdist::DynamicBlocks::getClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:584,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 26
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 586
      start: 517
    functionDepth: 2
    functionLinenumber: 517
    functionLinenumberEnd: 586
    functionName: BOOST_FIXTURE_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc
    functionUses: 0
    functionsReached:
    - DynBlockRulesGroup::DynBlockRulesGroup
    - reset
    - dnsdist::DynamicBlocks::getClientAddressDynamicRules
    - memset
    - insertQuery
    - clear
    - DynBlockRulesGroup::apply
    - getNumberOfQueryEntries
    - insertResponse
    - dnsdist::DynamicBlocks::clearClientAddressDynamicRules
    - DynBlockRulesGroup::setQuiet
    - DynBlockRulesGroup::setRCodeRate
    - DNSName
    - getNumberOfResponseEntries
    - gettime
    - std::move
    - init
    - BOOST_CHECK_EQUAL
    - DynBlockRulesGroup::setQueryRate
    - BOOST_CHECK
    - NetmaskTree::NetmaskTree
    linkageType: ''
    returnType: void
    signature: void BOOST_FIXTURE_TEST_CASE(test_DynBlockRulesGroup_QueryRate_responses,
      TestFixture)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:591,1
    - Dst: gettime
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:599,1
    - Dst: NetmaskTree::NetmaskTree
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:600,1
    - Dst: DynBlockRulesGroup::DynBlockRulesGroup
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:607,1
    - Dst: DynBlockRulesGroup::setQuiet
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:608,1
    - Dst: DynBlockRulesGroup::setQTypeRate
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:613,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:613,1
    - Dst: clear
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:620,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:621,1
    - Dst: getNumberOfQueryEntries
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:621,1
    - Dst: dnsdist::DynamicBlocks::clearClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:622,1
    - Dst: insertQuery
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:625,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:627,1
    - Dst: getNumberOfQueryEntries
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:627,1
    - Dst: DynBlockRulesGroup::apply
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:629,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:630,1
    - Dst: dnsdist::DynamicBlocks::getClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:630,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:631,1
    - Dst: dnsdist::DynamicBlocks::getClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:631,1
    - Dst: clear
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:638,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:639,1
    - Dst: getNumberOfQueryEntries
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:639,1
    - Dst: dnsdist::DynamicBlocks::clearClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:640,1
    - Dst: insertQuery
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:643,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:645,1
    - Dst: getNumberOfQueryEntries
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:645,1
    - Dst: DynBlockRulesGroup::apply
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:647,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:648,1
    - Dst: dnsdist::DynamicBlocks::getClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:648,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:649,1
    - Dst: dnsdist::DynamicBlocks::getClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:649,1
    - Dst: clear
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:656,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:657,1
    - Dst: getNumberOfQueryEntries
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:657,1
    - Dst: dnsdist::DynamicBlocks::clearClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:658,1
    - Dst: insertQuery
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:661,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:663,1
    - Dst: getNumberOfQueryEntries
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:663,1
    - Dst: DynBlockRulesGroup::apply
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:665,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:666,1
    - Dst: dnsdist::DynamicBlocks::getClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:666,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:667,1
    - Dst: dnsdist::DynamicBlocks::getClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:667,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:668,1
    - Dst: dnsdist::DynamicBlocks::getClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:668,1
    - Dst: dnsdist::DynamicBlocks::getClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:669,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:670,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:671,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:671,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:672,1
    - Dst: domain::empty
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:672,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:673,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:674,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:675,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 46
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 677
      start: 588
    functionDepth: 2
    functionLinenumber: 588
    functionLinenumberEnd: 677
    functionName: BOOST_FIXTURE_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc
    functionUses: 0
    functionsReached:
    - std::move
    - static_cast<size_t>
    - dnsdist::DynamicBlocks::clearClientAddressDynamicRules
    - domain::empty
    - DynBlockRulesGroup::setQuiet
    - DynBlockRulesGroup::DynBlockRulesGroup
    - dnsdist::DynamicBlocks::getClientAddressDynamicRules
    - BOOST_CHECK_EQUAL
    - getNumberOfQueryEntries
    - memset
    - insertQuery
    - DynBlockRulesGroup::setQTypeRate
    - gettime
    - clear
    - BOOST_CHECK
    - DynBlockRulesGroup::apply
    - NetmaskTree::NetmaskTree
    linkageType: ''
    returnType: void
    signature: void BOOST_FIXTURE_TEST_CASE(test_DynBlockRulesGroup_QTypeRate, TestFixture)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:682,1
    - Dst: gettime
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:692,1
    - Dst: NetmaskTree::NetmaskTree
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:693,1
    - Dst: DynBlockRulesGroup::DynBlockRulesGroup
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:701,1
    - Dst: DynBlockRulesGroup::setQuiet
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:702,1
    - Dst: DynBlockRulesGroup::setRCodeRate
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:707,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:707,1
    - Dst: clear
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:714,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:715,1
    - Dst: getNumberOfResponseEntries
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:715,1
    - Dst: dnsdist::DynamicBlocks::clearClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:716,1
    - Dst: insertResponse
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:720,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:720,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:722,1
    - Dst: getNumberOfResponseEntries
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:722,1
    - Dst: DynBlockRulesGroup::apply
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:724,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:725,1
    - Dst: dnsdist::DynamicBlocks::getClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:725,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:726,1
    - Dst: dnsdist::DynamicBlocks::getClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:726,1
    - Dst: clear
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:732,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:733,1
    - Dst: getNumberOfResponseEntries
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:733,1
    - Dst: dnsdist::DynamicBlocks::clearClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:734,1
    - Dst: insertResponse
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:738,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:738,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:740,1
    - Dst: getNumberOfResponseEntries
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:740,1
    - Dst: DynBlockRulesGroup::apply
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:742,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:743,1
    - Dst: dnsdist::DynamicBlocks::getClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:743,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:744,1
    - Dst: dnsdist::DynamicBlocks::getClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:744,1
    - Dst: clear
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:751,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:752,1
    - Dst: getNumberOfResponseEntries
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:752,1
    - Dst: dnsdist::DynamicBlocks::clearClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:753,1
    - Dst: insertResponse
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:757,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:757,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:759,1
    - Dst: getNumberOfResponseEntries
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:759,1
    - Dst: DynBlockRulesGroup::apply
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:761,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:762,1
    - Dst: dnsdist::DynamicBlocks::getClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:762,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:763,1
    - Dst: dnsdist::DynamicBlocks::getClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:763,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:764,1
    - Dst: dnsdist::DynamicBlocks::getClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:764,1
    - Dst: dnsdist::DynamicBlocks::getClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:765,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:766,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:767,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:767,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:768,1
    - Dst: domain::empty
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:768,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:769,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:770,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:771,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 49
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 773
      start: 679
    functionDepth: 2
    functionLinenumber: 679
    functionLinenumberEnd: 773
    functionName: BOOST_FIXTURE_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc
    functionUses: 0
    functionsReached:
    - std::move
    - static_cast<size_t>
    - dnsdist::DynamicBlocks::clearClientAddressDynamicRules
    - domain::empty
    - DynBlockRulesGroup::setQuiet
    - DynBlockRulesGroup::DynBlockRulesGroup
    - DynBlockRulesGroup::setRCodeRate
    - BOOST_CHECK_EQUAL
    - getNumberOfResponseEntries
    - DNSName
    - memset
    - dnsdist::DynamicBlocks::getClientAddressDynamicRules
    - gettime
    - clear
    - BOOST_CHECK
    - DynBlockRulesGroup::apply
    - NetmaskTree::NetmaskTree
    - insertResponse
    linkageType: ''
    returnType: void
    signature: void BOOST_FIXTURE_TEST_CASE(test_DynBlockRulesGroup_RCodeRate, TestFixture)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:778,1
    - Dst: gettime
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:788,1
    - Dst: NetmaskTree::NetmaskTree
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:789,1
    - Dst: DynBlockRulesGroup::DynBlockRulesGroup
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:797,1
    - Dst: DynBlockRulesGroup::setQuiet
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:798,1
    - Dst: DynBlockRulesGroup::setRCodeRate
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:803,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:803,1
    - Dst: clear
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:810,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:811,1
    - Dst: getNumberOfResponseEntries
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:811,1
    - Dst: dnsdist::DynamicBlocks::clearClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:812,1
    - Dst: insertResponse
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:816,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:816,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:818,1
    - Dst: getNumberOfResponseEntries
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:818,1
    - Dst: DynBlockRulesGroup::apply
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:820,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:821,1
    - Dst: dnsdist::DynamicBlocks::getClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:821,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:822,1
    - Dst: dnsdist::DynamicBlocks::getClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:822,1
    - Dst: clear
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:828,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:829,1
    - Dst: getNumberOfResponseEntries
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:829,1
    - Dst: dnsdist::DynamicBlocks::clearClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:830,1
    - Dst: insertResponse
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:834,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:834,1
    - Dst: BOOST_CHECK_GE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:836,1
    - Dst: getNumberOfResponseEntries
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:836,1
    - Dst: DynBlockRulesGroup::apply
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:838,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:839,1
    - Dst: dnsdist::DynamicBlocks::getClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:839,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:840,1
    - Dst: dnsdist::DynamicBlocks::getClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:840,1
    - Dst: clear
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:847,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:848,1
    - Dst: getNumberOfResponseEntries
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:848,1
    - Dst: dnsdist::DynamicBlocks::clearClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:849,1
    - Dst: insertResponse
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:853,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:853,1
    - Dst: BOOST_CHECK_GE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:855,1
    - Dst: getNumberOfResponseEntries
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:855,1
    - Dst: DynBlockRulesGroup::apply
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:857,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:858,1
    - Dst: dnsdist::DynamicBlocks::getClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:858,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:859,1
    - Dst: dnsdist::DynamicBlocks::getClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:859,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:860,1
    - Dst: dnsdist::DynamicBlocks::getClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:860,1
    - Dst: dnsdist::DynamicBlocks::getClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:861,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:862,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:863,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:863,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:864,1
    - Dst: domain::empty
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:864,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:865,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:866,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:867,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 49
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 869
      start: 775
    functionDepth: 2
    functionLinenumber: 775
    functionLinenumberEnd: 869
    functionName: BOOST_FIXTURE_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc
    functionUses: 0
    functionsReached:
    - DynBlockRulesGroup::DynBlockRulesGroup
    - domain::empty
    - static_cast<size_t>
    - dnsdist::DynamicBlocks::getClientAddressDynamicRules
    - memset
    - BOOST_REQUIRE
    - clear
    - DynBlockRulesGroup::apply
    - insertResponse
    - dnsdist::DynamicBlocks::clearClientAddressDynamicRules
    - DynBlockRulesGroup::setQuiet
    - DynBlockRulesGroup::setRCodeRate
    - BOOST_CHECK_GE
    - getNumberOfResponseEntries
    - DNSName
    - gettime
    - std::move
    - BOOST_CHECK_EQUAL
    - BOOST_CHECK
    - NetmaskTree::NetmaskTree
    linkageType: ''
    returnType: void
    signature: void BOOST_FIXTURE_TEST_CASE(test_DynBlockRulesGroup_RCodeRate_With_Sampling,
      TestFixtureWithSampling)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:874,1
    - Dst: gettime
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:884,1
    - Dst: NetmaskTree::NetmaskTree
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:885,1
    - Dst: DynBlockRulesGroup::DynBlockRulesGroup
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:893,1
    - Dst: DynBlockRulesGroup::setQuiet
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:894,1
    - Dst: DynBlockRulesGroup::setRCodeRatio
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:899,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:899,1
    - Dst: clear
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:905,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:906,1
    - Dst: getNumberOfResponseEntries
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:906,1
    - Dst: dnsdist::DynamicBlocks::clearClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:907,1
    - Dst: insertResponse
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:911,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:911,1
    - Dst: insertResponse
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:915,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:915,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:917,1
    - Dst: getNumberOfResponseEntries
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:917,1
    - Dst: DynBlockRulesGroup::apply
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:919,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:920,1
    - Dst: dnsdist::DynamicBlocks::getClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:920,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:921,1
    - Dst: dnsdist::DynamicBlocks::getClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:921,1
    - Dst: clear
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:926,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:927,1
    - Dst: getNumberOfResponseEntries
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:927,1
    - Dst: dnsdist::DynamicBlocks::clearClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:928,1
    - Dst: insertResponse
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:932,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:932,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:934,1
    - Dst: getNumberOfResponseEntries
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:934,1
    - Dst: DynBlockRulesGroup::apply
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:936,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:937,1
    - Dst: dnsdist::DynamicBlocks::getClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:937,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:938,1
    - Dst: dnsdist::DynamicBlocks::getClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:938,1
    - Dst: clear
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:944,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:945,1
    - Dst: getNumberOfResponseEntries
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:945,1
    - Dst: dnsdist::DynamicBlocks::clearClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:946,1
    - Dst: insertResponse
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:950,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:950,1
    - Dst: insertResponse
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:954,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:954,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:956,1
    - Dst: getNumberOfResponseEntries
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:956,1
    - Dst: DynBlockRulesGroup::apply
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:958,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:959,1
    - Dst: dnsdist::DynamicBlocks::getClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:959,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:960,1
    - Dst: dnsdist::DynamicBlocks::getClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:960,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:961,1
    - Dst: dnsdist::DynamicBlocks::getClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:961,1
    - Dst: dnsdist::DynamicBlocks::getClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:962,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:963,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:964,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:965,1
    - Dst: domain::empty
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:965,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:966,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:967,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:968,1
    - Dst: clear
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:974,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:975,1
    - Dst: getNumberOfResponseEntries
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:975,1
    - Dst: dnsdist::DynamicBlocks::clearClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:976,1
    - Dst: insertResponse
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:980,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:980,1
    - Dst: insertResponse
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:984,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:984,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:986,1
    - Dst: getNumberOfResponseEntries
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:986,1
    - Dst: DynBlockRulesGroup::apply
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:988,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:989,1
    - Dst: dnsdist::DynamicBlocks::getClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:989,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:990,1
    - Dst: dnsdist::DynamicBlocks::getClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:990,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 73
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 992
      start: 871
    functionDepth: 2
    functionLinenumber: 871
    functionLinenumberEnd: 992
    functionName: BOOST_FIXTURE_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc
    functionUses: 0
    functionsReached:
    - std::move
    - DynBlockRulesGroup::setRCodeRatio
    - dnsdist::DynamicBlocks::clearClientAddressDynamicRules
    - domain::empty
    - DynBlockRulesGroup::setQuiet
    - DynBlockRulesGroup::DynBlockRulesGroup
    - dnsdist::DynamicBlocks::getClientAddressDynamicRules
    - BOOST_CHECK_EQUAL
    - getNumberOfResponseEntries
    - DNSName
    - memset
    - gettime
    - BOOST_REQUIRE
    - clear
    - BOOST_CHECK
    - DynBlockRulesGroup::apply
    - NetmaskTree::NetmaskTree
    - insertResponse
    linkageType: ''
    returnType: void
    signature: void BOOST_FIXTURE_TEST_CASE(test_DynBlockRulesGroup_RCodeRatio, TestFixture)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:997,1
    - Dst: gettime
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1007,1
    - Dst: NetmaskTree::NetmaskTree
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1008,1
    - Dst: DynBlockRulesGroup::DynBlockRulesGroup
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1017,1
    - Dst: DynBlockRulesGroup::setQuiet
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1018,1
    - Dst: DynBlockRulesGroup::setAllowedRCodesRatio
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1023,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1023,1
    - Dst: clear
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1029,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1030,1
    - Dst: getNumberOfResponseEntries
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1030,1
    - Dst: dnsdist::DynamicBlocks::clearClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1031,1
    - Dst: insertResponse
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1035,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1035,1
    - Dst: insertResponse
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1039,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1039,1
    - Dst: insertResponse
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1043,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1043,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1045,1
    - Dst: getNumberOfResponseEntries
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1045,1
    - Dst: DynBlockRulesGroup::apply
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1047,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1048,1
    - Dst: dnsdist::DynamicBlocks::getClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1048,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1049,1
    - Dst: dnsdist::DynamicBlocks::getClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1049,1
    - Dst: clear
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1054,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1055,1
    - Dst: getNumberOfResponseEntries
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1055,1
    - Dst: dnsdist::DynamicBlocks::clearClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1056,1
    - Dst: insertResponse
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1060,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1060,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1062,1
    - Dst: getNumberOfResponseEntries
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1062,1
    - Dst: DynBlockRulesGroup::apply
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1064,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1065,1
    - Dst: dnsdist::DynamicBlocks::getClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1065,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1066,1
    - Dst: dnsdist::DynamicBlocks::getClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1066,1
    - Dst: clear
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1072,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1073,1
    - Dst: getNumberOfResponseEntries
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1073,1
    - Dst: dnsdist::DynamicBlocks::clearClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1074,1
    - Dst: insertResponse
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1078,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1078,1
    - Dst: insertResponse
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1082,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1082,1
    - Dst: insertResponse
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1086,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1086,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1088,1
    - Dst: getNumberOfResponseEntries
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1088,1
    - Dst: DynBlockRulesGroup::apply
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1090,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1091,1
    - Dst: dnsdist::DynamicBlocks::getClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1091,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1092,1
    - Dst: dnsdist::DynamicBlocks::getClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1092,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1093,1
    - Dst: dnsdist::DynamicBlocks::getClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1093,1
    - Dst: dnsdist::DynamicBlocks::getClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1094,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1095,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1096,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1097,1
    - Dst: domain::empty
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1097,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1098,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1099,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1100,1
    - Dst: clear
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1106,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1107,1
    - Dst: getNumberOfResponseEntries
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1107,1
    - Dst: dnsdist::DynamicBlocks::clearClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1108,1
    - Dst: insertResponse
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1112,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1112,1
    - Dst: insertResponse
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1116,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1116,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1118,1
    - Dst: getNumberOfResponseEntries
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1118,1
    - Dst: DynBlockRulesGroup::apply
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1120,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1121,1
    - Dst: dnsdist::DynamicBlocks::getClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1121,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1122,1
    - Dst: dnsdist::DynamicBlocks::getClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1122,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 81
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1124
      start: 994
    functionDepth: 2
    functionLinenumber: 994
    functionLinenumberEnd: 1124
    functionName: BOOST_FIXTURE_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc
    functionUses: 0
    functionsReached:
    - DynBlockRulesGroup::setAllowedRCodesRatio
    - std::move
    - dnsdist::DynamicBlocks::clearClientAddressDynamicRules
    - domain::empty
    - DynBlockRulesGroup::setQuiet
    - DynBlockRulesGroup::DynBlockRulesGroup
    - dnsdist::DynamicBlocks::getClientAddressDynamicRules
    - BOOST_CHECK_EQUAL
    - getNumberOfResponseEntries
    - DNSName
    - memset
    - gettime
    - BOOST_REQUIRE
    - clear
    - BOOST_CHECK
    - DynBlockRulesGroup::apply
    - NetmaskTree::NetmaskTree
    - insertResponse
    linkageType: ''
    returnType: void
    signature: void BOOST_FIXTURE_TEST_CASE(test_DynBlockRulesGroup_AllowedRCodesRatio,
      TestFixture)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1129,1
    - Dst: gettime
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1139,1
    - Dst: NetmaskTree::NetmaskTree
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1140,1
    - Dst: DynBlockRulesGroup::DynBlockRulesGroup
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1148,1
    - Dst: DynBlockRulesGroup::setQuiet
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1149,1
    - Dst: DynBlockRulesGroup::setResponseByteRate
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1154,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1154,1
    - Dst: clear
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1161,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1162,1
    - Dst: getNumberOfResponseEntries
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1162,1
    - Dst: dnsdist::DynamicBlocks::clearClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1163,1
    - Dst: insertResponse
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1167,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1167,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1169,1
    - Dst: getNumberOfResponseEntries
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1169,1
    - Dst: DynBlockRulesGroup::apply
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1171,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1172,1
    - Dst: dnsdist::DynamicBlocks::getClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1172,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1173,1
    - Dst: dnsdist::DynamicBlocks::getClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1173,1
    - Dst: clear
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1179,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1180,1
    - Dst: getNumberOfResponseEntries
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1180,1
    - Dst: dnsdist::DynamicBlocks::clearClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1181,1
    - Dst: insertResponse
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1185,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1185,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1187,1
    - Dst: getNumberOfResponseEntries
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1187,1
    - Dst: DynBlockRulesGroup::apply
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1189,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1190,1
    - Dst: dnsdist::DynamicBlocks::getClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1190,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1191,1
    - Dst: dnsdist::DynamicBlocks::getClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1191,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1192,1
    - Dst: dnsdist::DynamicBlocks::getClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1192,1
    - Dst: dnsdist::DynamicBlocks::getClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1193,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1194,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1195,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1195,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1196,1
    - Dst: domain::empty
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1196,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1197,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1198,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1199,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 37
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1201
      start: 1126
    functionDepth: 2
    functionLinenumber: 1126
    functionLinenumberEnd: 1201
    functionName: BOOST_FIXTURE_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc
    functionUses: 0
    functionsReached:
    - DynBlockRulesGroup::setResponseByteRate
    - std::move
    - static_cast<size_t>
    - dnsdist::DynamicBlocks::clearClientAddressDynamicRules
    - domain::empty
    - DynBlockRulesGroup::setQuiet
    - DynBlockRulesGroup::DynBlockRulesGroup
    - dnsdist::DynamicBlocks::getClientAddressDynamicRules
    - BOOST_CHECK_EQUAL
    - getNumberOfResponseEntries
    - DNSName
    - memset
    - gettime
    - clear
    - BOOST_CHECK
    - DynBlockRulesGroup::apply
    - NetmaskTree::NetmaskTree
    - insertResponse
    linkageType: ''
    returnType: void
    signature: void BOOST_FIXTURE_TEST_CASE(test_DynBlockRulesGroup_ResponseByteRate,
      TestFixture)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1206,1
    - Dst: gettime
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1217,1
    - Dst: NetmaskTree::NetmaskTree
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1218,1
    - Dst: DynBlockRulesGroup::DynBlockRulesGroup
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1225,1
    - Dst: DynBlockRulesGroup::setQuiet
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1226,1
    - Dst: cacheHits::store
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1229,1
    - Dst: cacheMisses::store
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1230,1
    - Dst: DynBlockRulesGroup::setCacheMissRatio
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1233,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1233,1
    - Dst: clear
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1239,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1240,1
    - Dst: getNumberOfResponseEntries
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1240,1
    - Dst: dnsdist::DynamicBlocks::clearClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1241,1
    - Dst: insertResponse
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1244,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1244,1
    - Dst: insertResponse
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1247,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1247,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1249,1
    - Dst: getNumberOfResponseEntries
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1249,1
    - Dst: DynBlockRulesGroup::apply
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1251,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1252,1
    - Dst: dnsdist::DynamicBlocks::getClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1252,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1253,1
    - Dst: dnsdist::DynamicBlocks::getClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1253,1
    - Dst: clear
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1259,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1260,1
    - Dst: getNumberOfResponseEntries
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1260,1
    - Dst: dnsdist::DynamicBlocks::clearClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1261,1
    - Dst: insertResponse
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1264,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1264,1
    - Dst: insertResponse
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1267,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1267,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1269,1
    - Dst: getNumberOfResponseEntries
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1269,1
    - Dst: DynBlockRulesGroup::apply
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1271,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1272,1
    - Dst: dnsdist::DynamicBlocks::getClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1272,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1273,1
    - Dst: dnsdist::DynamicBlocks::getClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1273,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1274,1
    - Dst: dnsdist::DynamicBlocks::getClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1274,1
    - Dst: dnsdist::DynamicBlocks::getClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1275,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1276,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1277,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1278,1
    - Dst: domain::empty
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1278,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1279,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1280,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1281,1
    - Dst: clear
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1287,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1288,1
    - Dst: getNumberOfResponseEntries
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1288,1
    - Dst: dnsdist::DynamicBlocks::clearClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1289,1
    - Dst: insertResponse
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1292,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1292,1
    - Dst: insertResponse
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1295,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1295,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1297,1
    - Dst: getNumberOfResponseEntries
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1297,1
    - Dst: DynBlockRulesGroup::apply
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1299,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1300,1
    - Dst: dnsdist::DynamicBlocks::getClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1300,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1301,1
    - Dst: dnsdist::DynamicBlocks::getClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1301,1
    - Dst: cacheHits::store
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1305,1
    - Dst: cacheMisses::store
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1306,1
    - Dst: clear
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1309,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1310,1
    - Dst: getNumberOfResponseEntries
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1310,1
    - Dst: dnsdist::DynamicBlocks::clearClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1311,1
    - Dst: insertResponse
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1314,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1314,1
    - Dst: insertResponse
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1317,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1317,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1319,1
    - Dst: getNumberOfResponseEntries
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1319,1
    - Dst: DynBlockRulesGroup::apply
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1321,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1322,1
    - Dst: dnsdist::DynamicBlocks::getClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1322,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1323,1
    - Dst: dnsdist::DynamicBlocks::getClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1323,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 73
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1325
      start: 1203
    functionDepth: 2
    functionLinenumber: 1203
    functionLinenumberEnd: 1325
    functionName: BOOST_FIXTURE_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc
    functionUses: 0
    functionsReached:
    - DynBlockRulesGroup::setCacheMissRatio
    - DynBlockRulesGroup::DynBlockRulesGroup
    - domain::empty
    - cacheMisses::store
    - dnsdist::DynamicBlocks::getClientAddressDynamicRules
    - memset
    - BOOST_REQUIRE
    - clear
    - DynBlockRulesGroup::apply
    - insertResponse
    - dnsdist::DynamicBlocks::clearClientAddressDynamicRules
    - DynBlockRulesGroup::setQuiet
    - getNumberOfResponseEntries
    - DNSName
    - gettime
    - std::move
    - cacheHits::store
    - BOOST_CHECK_EQUAL
    - BOOST_CHECK
    - NetmaskTree::NetmaskTree
    linkageType: ''
    returnType: void
    signature: void BOOST_FIXTURE_TEST_CASE(test_DynBlockRulesGroup_CacheMissRatio,
      TestFixture)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1330,1
    - Dst: gettime
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1338,1
    - Dst: NetmaskTree::NetmaskTree
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1339,1
    - Dst: DynBlockRulesGroup::DynBlockRulesGroup
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1346,1
    - Dst: DynBlockRulesGroup::setQuiet
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1347,1
    - Dst: DynBlockRulesGroup::setQueryRate
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1352,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1352,1
    - Dst: clear
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1359,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1360,1
    - Dst: getNumberOfQueryEntries
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1360,1
    - Dst: dnsdist::DynamicBlocks::clearClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1361,1
    - Dst: insertQuery
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1364,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1366,1
    - Dst: getNumberOfQueryEntries
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1366,1
    - Dst: DynBlockRulesGroup::apply
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1368,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1369,1
    - Dst: dnsdist::DynamicBlocks::getClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1369,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1370,1
    - Dst: dnsdist::DynamicBlocks::getClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1370,1
    - Dst: clear
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1377,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1378,1
    - Dst: getNumberOfQueryEntries
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1378,1
    - Dst: dnsdist::DynamicBlocks::clearClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1379,1
    - Dst: insertQuery
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1382,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1384,1
    - Dst: getNumberOfQueryEntries
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1384,1
    - Dst: DynBlockRulesGroup::apply
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1386,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1387,1
    - Dst: dnsdist::DynamicBlocks::getClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1387,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1388,1
    - Dst: dnsdist::DynamicBlocks::getClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1388,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1389,1
    - Dst: dnsdist::DynamicBlocks::getClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1389,1
    - Dst: dnsdist::DynamicBlocks::getClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1392,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1393,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1394,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1394,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1395,1
    - Dst: domain::empty
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1395,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1396,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1397,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1398,1
    - Dst: clear
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1406,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1407,1
    - Dst: getNumberOfQueryEntries
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1407,1
    - Dst: insertQuery
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1410,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1412,1
    - Dst: getNumberOfQueryEntries
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1412,1
    - Dst: DynBlockRulesGroup::apply
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1414,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1415,1
    - Dst: dnsdist::DynamicBlocks::getClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1415,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1416,1
    - Dst: dnsdist::DynamicBlocks::getClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1416,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1417,1
    - Dst: dnsdist::DynamicBlocks::getClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1417,1
    - Dst: dnsdist::DynamicBlocks::getClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1420,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1421,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1422,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1422,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1423,1
    - Dst: domain::empty
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1423,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1424,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1426,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1427,1
    - Dst: clear
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1435,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1436,1
    - Dst: getNumberOfQueryEntries
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1436,1
    - Dst: insertQuery
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1439,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1441,1
    - Dst: getNumberOfQueryEntries
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1441,1
    - Dst: DynBlockRulesGroup::apply
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1443,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1444,1
    - Dst: dnsdist::DynamicBlocks::getClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1444,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1445,1
    - Dst: dnsdist::DynamicBlocks::getClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1445,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1446,1
    - Dst: dnsdist::DynamicBlocks::getClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1446,1
    - Dst: dnsdist::DynamicBlocks::getClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1449,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1450,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1452,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1452,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1453,1
    - Dst: domain::empty
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1453,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1454,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1456,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1457,1
    - Dst: clear
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1465,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1466,1
    - Dst: getNumberOfQueryEntries
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1466,1
    - Dst: dnsdist::DynamicBlocks::clearClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1467,1
    - Dst: insertQuery
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1470,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1472,1
    - Dst: getNumberOfQueryEntries
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1472,1
    - Dst: DynBlockRulesGroup::apply
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1474,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1475,1
    - Dst: dnsdist::DynamicBlocks::getClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1475,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1476,1
    - Dst: dnsdist::DynamicBlocks::getClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1476,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1477,1
    - Dst: dnsdist::DynamicBlocks::getClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1477,1
    - Dst: dnsdist::DynamicBlocks::getClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1480,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1481,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1482,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1482,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1483,1
    - Dst: domain::empty
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1483,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1484,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1485,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1486,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 94
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1489
      start: 1327
    functionDepth: 2
    functionLinenumber: 1327
    functionLinenumberEnd: 1489
    functionName: BOOST_FIXTURE_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc
    functionUses: 0
    functionsReached:
    - std::move
    - static_cast<size_t>
    - dnsdist::DynamicBlocks::clearClientAddressDynamicRules
    - domain::empty
    - DynBlockRulesGroup::setQuiet
    - DynBlockRulesGroup::DynBlockRulesGroup
    - dnsdist::DynamicBlocks::getClientAddressDynamicRules
    - BOOST_CHECK_EQUAL
    - getNumberOfQueryEntries
    - memset
    - DynBlockRulesGroup::setQueryRate
    - insertQuery
    - gettime
    - clear
    - BOOST_CHECK
    - DynBlockRulesGroup::apply
    - NetmaskTree::NetmaskTree
    linkageType: ''
    returnType: void
    signature: void BOOST_FIXTURE_TEST_CASE(test_DynBlockRulesGroup_Warning, TestFixture)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1494,1
    - Dst: gettime
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1502,1
    - Dst: NetmaskTree::NetmaskTree
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1503,1
    - Dst: DynBlockRulesGroup::DynBlockRulesGroup
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1510,1
    - Dst: DynBlockRulesGroup::setQuiet
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1511,1
    - Dst: DynBlockRulesGroup::includeRange
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1513,1
    - Dst: Netmask
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1513,1
    - Dst: DynBlockRulesGroup::excludeRange
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1515,1
    - Dst: Netmask
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1515,1
    - Dst: DynBlockRulesGroup::setQueryRate
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1520,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1520,1
    - Dst: clear
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1527,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1528,1
    - Dst: getNumberOfQueryEntries
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1528,1
    - Dst: dnsdist::DynamicBlocks::clearClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1529,1
    - Dst: insertQuery
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1532,1
    - Dst: insertQuery
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1533,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1535,1
    - Dst: getNumberOfQueryEntries
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1535,1
    - Dst: DynBlockRulesGroup::apply
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1537,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1538,1
    - Dst: dnsdist::DynamicBlocks::getClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1538,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1539,1
    - Dst: dnsdist::DynamicBlocks::getClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1539,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1540,1
    - Dst: dnsdist::DynamicBlocks::getClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1540,1
    - Dst: dnsdist::DynamicBlocks::getClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1541,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1542,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1543,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1543,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1544,1
    - Dst: domain::empty
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1544,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1545,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1546,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1547,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 27
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1549
      start: 1491
    functionDepth: 2
    functionLinenumber: 1491
    functionLinenumberEnd: 1549
    functionName: BOOST_FIXTURE_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc
    functionUses: 0
    functionsReached:
    - DynBlockRulesGroup::DynBlockRulesGroup
    - domain::empty
    - static_cast<size_t>
    - dnsdist::DynamicBlocks::getClientAddressDynamicRules
    - memset
    - insertQuery
    - DynBlockRulesGroup::includeRange
    - clear
    - DynBlockRulesGroup::excludeRange
    - DynBlockRulesGroup::apply
    - getNumberOfQueryEntries
    - Netmask
    - dnsdist::DynamicBlocks::clearClientAddressDynamicRules
    - DynBlockRulesGroup::setQuiet
    - gettime
    - std::move
    - BOOST_CHECK_EQUAL
    - DynBlockRulesGroup::setQueryRate
    - BOOST_CHECK
    - NetmaskTree::NetmaskTree
    linkageType: ''
    returnType: void
    signature: void BOOST_FIXTURE_TEST_CASE(test_DynBlockRulesGroup_Ranges, TestFixture)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1554,1
    - Dst: gettime
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1561,1
    - Dst: NetmaskTree::NetmaskTree
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1562,1
    - Dst: reset
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1570,1
    - Dst: init
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1575,1
    - Dst: DynBlockRulesGroup::DynBlockRulesGroup
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1578,1
    - Dst: DynBlockRulesGroup::setQuiet
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1579,1
    - Dst: clear
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1580,1
    - Dst: dnsdist::DynamicBlocks::clearClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1581,1
    - Dst: DynBlockRulesGroup::setQueryRate
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1586,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1586,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1592,1
    - Dst: insertQuery
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1593,1
    - Dst: DynBlockRulesGroup::apply
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1597,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1598,1
    - Dst: dnsdist::DynamicBlocks::getClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1598,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1601,1
    - Dst: dnsdist::DynamicBlocks::getClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1602,1
    - Dst: StopWatch::start
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1613,1
    - Dst: DynBlockMaintenance::getTopNetmasks
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1614,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1615,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1615,1
    - Dst: auto::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1616,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1617,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1617,1
    - Dst: auto::begin
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1618,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1620,1
    - Dst: auto::first::toString
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1620,1
    - Dst: Netmask
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1620,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1620,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1620,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1621,1
    - Dst: DynBlockMaintenance::purgeExpired
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1627,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1628,1
    - Dst: dnsdist::DynamicBlocks::getClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1628,1
    - Dst: DynBlockRulesGroup::DynBlockRulesGroup
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1633,1
    - Dst: DynBlockRulesGroup::setQuiet
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1634,1
    - Dst: clear
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1635,1
    - Dst: dnsdist::DynamicBlocks::clearClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1636,1
    - Dst: dnsdist::DynamicBlocks::clearSuffixDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1637,1
    - Dst: DynBlockRulesGroup::setSuffixMatchRule
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1641,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1641,1
    - Dst: std::tuple<bool, std::optional<std::string>, std::optional<int>>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1645,1
    - Dst: std::tuple<bool, std::optional<std::string>, std::optional<int>>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1647,1
    - Dst: insertResponse
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1654,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1654,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1654,1
    - Dst: DynBlockRulesGroup::apply
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1658,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1661,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1661,1
    - Dst: dnsdist::DynamicBlocks::getSuffixDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1662,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1663,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1664,1
    - Dst: StopWatch::start
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1675,1
    - Dst: DynBlockMaintenance::getTopSuffixes
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1676,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1677,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1677,1
    - Dst: auto::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1678,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1679,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1679,1
    - Dst: auto::begin
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1680,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1682,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1682,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1682,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1683,1
    - Dst: DynBlockMaintenance::purgeExpired
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1689,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1690,1
    - Dst: dnsdist::DynamicBlocks::getSuffixDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1690,1
    - Dst: DynBlockRulesGroup::DynBlockRulesGroup
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1695,1
    - Dst: DynBlockRulesGroup::setQuiet
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1696,1
    - Dst: clear
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1697,1
    - Dst: dnsdist::DynamicBlocks::clearClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1698,1
    - Dst: dnsdist::DynamicBlocks::clearSuffixDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1699,1
    - Dst: DynBlockRulesGroup::setSuffixMatchRule
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1703,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1703,1
    - Dst: std::tuple<bool, std::optional<std::string>, std::optional<int>>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1707,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1707,1
    - Dst: std::tuple<bool, std::optional<std::string>, std::optional<int>>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1709,1
    - Dst: insertResponse
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1716,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1716,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1716,1
    - Dst: DynBlockRulesGroup::apply
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1720,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1723,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1723,1
    - Dst: dnsdist::DynamicBlocks::getSuffixDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1724,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1725,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1726,1
    - Dst: StopWatch::start
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1737,1
    - Dst: DynBlockMaintenance::getTopSuffixes
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1738,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1739,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1739,1
    - Dst: auto::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1740,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1741,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1741,1
    - Dst: auto::begin
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1742,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1744,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1744,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1744,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1745,1
    - Dst: DynBlockMaintenance::purgeExpired
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1751,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1752,1
    - Dst: dnsdist::DynamicBlocks::getSuffixDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1752,1
    - Dst: DynBlockRulesGroup::DynBlockRulesGroup
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1758,1
    - Dst: DynBlockRulesGroup::setQuiet
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1759,1
    - Dst: clear
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1760,1
    - Dst: dnsdist::DynamicBlocks::clearClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1761,1
    - Dst: dnsdist::DynamicBlocks::clearSuffixDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1762,1
    - Dst: DynBlockRulesGroup::setSuffixMatchRule
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1766,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1766,1
    - Dst: std::tuple<bool, std::optional<std::string>, std::optional<int>>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1768,1
    - Dst: std::tuple<bool, std::optional<std::string>, std::optional<int>>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1770,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1779,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1779,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1779,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1779,1
    - Dst: insertResponse
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1780,1
    - Dst: getNumberOfQueryEntries
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1781,1
    - Dst: StopWatch::start
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1791,1
    - Dst: DynBlockRulesGroup::apply
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1792,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1793,1
    - Dst: StopWatch::udiff
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1793,1
    - Dst: StopWatch::start
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1795,1
    - Dst: DynBlockMaintenance::getTopSuffixes
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1796,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1797,1
    - Dst: StopWatch::udiff
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1797,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1798,1
    - Dst: auto::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1798,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1799,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1799,1
    - Dst: StopWatch::start
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1803,1
    - Dst: DynBlockMaintenance::purgeExpired
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1804,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1805,1
    - Dst: StopWatch::udiff
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1805,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1806,1
    - Dst: dnsdist::DynamicBlocks::getSuffixDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1806,1
    - Dst: DynBlockRulesGroup::DynBlockRulesGroup
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1813,1
    - Dst: DynBlockRulesGroup::setQuiet
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1814,1
    - Dst: clear
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1815,1
    - Dst: dnsdist::DynamicBlocks::clearClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1816,1
    - Dst: dnsdist::DynamicBlocks::clearSuffixDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1817,1
    - Dst: DynBlockRulesGroup::setQueryRate
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1820,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1820,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1827,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1827,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1827,1
    - Dst: insertQuery
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1828,1
    - Dst: getNumberOfQueryEntries
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1829,1
    - Dst: StopWatch::start
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1839,1
    - Dst: DynBlockRulesGroup::apply
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1840,1
    - Dst: dnsdist::DynamicBlocks::getClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1841,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1841,1
    - Dst: StopWatch::udiff
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1841,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1842,1
    - Dst: dnsdist::DynamicBlocks::getClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1842,1
    - Dst: StopWatch::start
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1844,1
    - Dst: DynBlockMaintenance::getTopNetmasks
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1845,1
    - Dst: dnsdist::DynamicBlocks::getClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1846,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1846,1
    - Dst: StopWatch::udiff
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1846,1
    - Dst: StopWatch::start
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1850,1
    - Dst: DynBlockMaintenance::purgeExpired
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1851,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1852,1
    - Dst: StopWatch::udiff
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1852,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1853,1
    - Dst: dnsdist::DynamicBlocks::getClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1853,1
    CyclomaticComplexity: 28
    EdgeCount: 28
    ICount: 162
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1856
      start: 1551
    functionDepth: 2
    functionLinenumber: 1551
    functionLinenumberEnd: 1856
    functionName: BOOST_FIXTURE_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc
    functionUses: 0
    functionsReached:
    - std::to_string
    - DynBlockRulesGroup::DynBlockRulesGroup
    - auto::first::toString
    - std::tuple<bool, std::optional<std::string>, std::optional<int>>
    - DNSName::toString
    - auto::begin
    - auto::size
    - static_cast<int>
    - reset
    - dnsdist::DynamicBlocks::getSuffixDynamicRules
    - dnsdist::DynamicBlocks::getClientAddressDynamicRules
    - memset
    - insertQuery
    - BOOST_REQUIRE
    - clear
    - DynBlockRulesGroup::setSuffixMatchRule
    - DynBlockRulesGroup::apply
    - insertResponse
    - BOOST_REQUIRE_EQUAL
    - getNumberOfQueryEntries
    - Netmask
    - dnsdist::DynamicBlocks::clearClientAddressDynamicRules
    - DynBlockMaintenance::getTopNetmasks
    - DynBlockRulesGroup::setQuiet
    - DNSName
    - dnsdist::DynamicBlocks::clearSuffixDynamicRules
    - auto::at
    - gettime
    - DynBlockMaintenance::purgeExpired
    - ComboAddress
    - std::move
    - init
    - DynBlockMaintenance::getTopSuffixes
    - BOOST_CHECK_EQUAL
    - StopWatch::udiff
    - DynBlockRulesGroup::setQueryRate
    - StopWatch::start
    - BOOST_CHECK
    - NetmaskTree::NetmaskTree
    linkageType: ''
    returnType: void
    signature: void BOOST_FIXTURE_TEST_CASE(test_DynBlockRulesMetricsCache_GetTopN,
      TestFixture)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: NetmaskTree::NetmaskTree
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1860,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1861,1
    - Dst: NetmaskTree::empty
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1861,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1862,1
    - Dst: NetmaskTree::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1862,1
    - Dst: NetmaskTree::insert
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1863,1
    - Dst: AddressAndPortRange
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1863,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1863,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1864,1
    - Dst: NetmaskTree::empty
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1864,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1865,1
    - Dst: NetmaskTree::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1865,1
    - Dst: NetmaskTree::insert
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1866,1
    - Dst: AddressAndPortRange
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1866,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1866,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1867,1
    - Dst: NetmaskTree::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1867,1
    - Dst: NetmaskTree::insert
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1868,1
    - Dst: AddressAndPortRange
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1868,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1868,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1869,1
    - Dst: NetmaskTree::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1869,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1871,1
    - Dst: NetmaskTree::lookup
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1871,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1871,1
    - Dst: NetmaskTree::lookup
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1872,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1872,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1873,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1874,1
    - Dst: NetmaskTree::lookup
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1875,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1875,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1876,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1877,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1879,1
    - Dst: NetmaskTree::lookup
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1879,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1879,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1880,1
    - Dst: NetmaskTree::lookup
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1880,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1880,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1881,1
    - Dst: NetmaskTree::lookup
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1881,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1881,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1882,1
    - Dst: NetmaskTree::lookup
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1882,1
    - Dst: AddressAndPortRange
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1882,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1882,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1883,1
    - Dst: NetmaskTree::lookup
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1883,1
    - Dst: AddressAndPortRange
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1883,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1883,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1884,1
    - Dst: NetmaskTree::lookup
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1884,1
    - Dst: AddressAndPortRange
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1884,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1884,1
    - Dst: NetmaskTree::lookup
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1886,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1886,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1887,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1888,1
    - Dst: NetmaskTree::insert
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1890,1
    - Dst: AddressAndPortRange
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1890,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1890,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1891,1
    - Dst: NetmaskTree::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1891,1
    - Dst: NetmaskTree::insert
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1892,1
    - Dst: AddressAndPortRange
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1892,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1892,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1893,1
    - Dst: NetmaskTree::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1893,1
    - Dst: NetmaskTree::insert
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1894,1
    - Dst: AddressAndPortRange
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1894,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1894,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1895,1
    - Dst: NetmaskTree::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1895,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1896,1
    - Dst: NetmaskTree::lookup
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1896,1
    - Dst: AddressAndPortRange
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1896,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1896,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1897,1
    - Dst: NetmaskTree::lookup
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1897,1
    - Dst: AddressAndPortRange
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1897,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1897,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1898,1
    - Dst: NetmaskTree::lookup
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1898,1
    - Dst: AddressAndPortRange
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1898,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1898,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1899,1
    - Dst: NetmaskTree::lookup
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1899,1
    - Dst: AddressAndPortRange
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1899,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1899,1
    - Dst: NetmaskTree::clear
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1901,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1902,1
    - Dst: NetmaskTree::empty
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1902,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1903,1
    - Dst: NetmaskTree::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1903,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1904,1
    - Dst: NetmaskTree::lookup
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1904,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1904,1
    - Dst: NetmaskTree::insert
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1906,1
    - Dst: AddressAndPortRange
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1906,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1906,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1907,1
    - Dst: NetmaskTree::empty
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1907,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1908,1
    - Dst: NetmaskTree::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1908,1
    - Dst: NetmaskTree::insert
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1909,1
    - Dst: AddressAndPortRange
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1909,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1909,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1910,1
    - Dst: NetmaskTree::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1910,1
    - Dst: NetmaskTree::insert
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1911,1
    - Dst: AddressAndPortRange
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1911,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1911,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1912,1
    - Dst: NetmaskTree::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1912,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1913,1
    - Dst: NetmaskTree::lookup
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1913,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1913,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1914,1
    - Dst: NetmaskTree::lookup
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1914,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1914,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1915,1
    - Dst: NetmaskTree::lookup
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1915,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1915,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1916,1
    - Dst: NetmaskTree::lookup
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1916,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1916,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1917,1
    - Dst: NetmaskTree::lookup
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1917,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1917,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 51
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1918
      start: 1858
    functionDepth: 1
    functionLinenumber: 1858
    functionLinenumberEnd: 1918
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc
    functionUses: 0
    functionsReached:
    - NetmaskTree::empty
    - NetmaskTree::size
    - BOOST_CHECK_EQUAL
    - AddressAndPortRange
    - NetmaskTree::lookup
    - NetmaskTree::insert
    - NetmaskTree::clear
    - BOOST_REQUIRE
    - BOOST_CHECK
    - NetmaskTree::NetmaskTree
    - ComboAddress
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_NetmaskTree)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: NetmaskTree::NetmaskTree
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1924,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1925,1
    - Dst: NetmaskTree::empty
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1925,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1926,1
    - Dst: NetmaskTree::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1926,1
    - Dst: NetmaskTree::insert
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1927,1
    - Dst: AddressAndPortRange
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1927,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1927,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1928,1
    - Dst: NetmaskTree::empty
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1928,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1929,1
    - Dst: NetmaskTree::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1929,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1931,1
    - Dst: NetmaskTree::lookup
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1931,1
    - Dst: AddressAndPortRange
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1931,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1931,1
    - Dst: NetmaskTree::lookup
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1933,1
    - Dst: AddressAndPortRange
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1933,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1933,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1934,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1935,1
    - Dst: NetmaskTree::lookup
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1935,1
    - Dst: AddressAndPortRange
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1935,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1935,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1936,1
    - Dst: NetmaskTree::lookup
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1936,1
    - Dst: AddressAndPortRange
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1936,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1936,1
    - Dst: NetmaskTree::NetmaskTree
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1941,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1942,1
    - Dst: NetmaskTree::empty
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1942,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1943,1
    - Dst: NetmaskTree::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1943,1
    - Dst: NetmaskTree::insert
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1944,1
    - Dst: AddressAndPortRange
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1944,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1944,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1945,1
    - Dst: NetmaskTree::empty
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1945,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1946,1
    - Dst: NetmaskTree::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1946,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1948,1
    - Dst: NetmaskTree::lookup
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1948,1
    - Dst: AddressAndPortRange
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1948,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1948,1
    - Dst: NetmaskTree::lookup
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1950,1
    - Dst: AddressAndPortRange
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1950,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1950,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1951,1
    - Dst: NetmaskTree::lookup
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1953,1
    - Dst: AddressAndPortRange
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1953,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1953,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1954,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1958,1
    - Dst: NetmaskTree::lookup
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1958,1
    - Dst: AddressAndPortRange
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1958,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1958,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1958,1
    - Dst: NetmaskTree::clear
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1961,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1962,1
    - Dst: NetmaskTree::empty
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1962,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1963,1
    - Dst: NetmaskTree::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1963,1
    - Dst: NetmaskTree::insert
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1964,1
    - Dst: AddressAndPortRange
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1964,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1964,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1965,1
    - Dst: NetmaskTree::empty
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1965,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1966,1
    - Dst: NetmaskTree::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1966,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1968,1
    - Dst: NetmaskTree::lookup
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1968,1
    - Dst: AddressAndPortRange
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1968,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1968,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1972,1
    - Dst: NetmaskTree::lookup
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1972,1
    - Dst: AddressAndPortRange
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1972,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1972,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1972,1
    - Dst: NetmaskTree::lookup
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1974,1
    - Dst: AddressAndPortRange
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1974,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1974,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1975,1
    - Dst: NetmaskTree::lookup
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1976,1
    - Dst: AddressAndPortRange
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1976,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1976,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1977,1
    - Dst: NetmaskTree::NetmaskTree
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1982,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1983,1
    - Dst: NetmaskTree::empty
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1983,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1984,1
    - Dst: NetmaskTree::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1984,1
    - Dst: NetmaskTree::insert
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1985,1
    - Dst: AddressAndPortRange
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1985,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1985,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1986,1
    - Dst: NetmaskTree::empty
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1986,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1987,1
    - Dst: NetmaskTree::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1987,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1989,1
    - Dst: NetmaskTree::lookup
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1989,1
    - Dst: AddressAndPortRange
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1989,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1989,1
    - Dst: NetmaskTree::lookup
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1992,1
    - Dst: AddressAndPortRange
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1992,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1992,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1992,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1993,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1998,1
    - Dst: NetmaskTree::lookup
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1998,1
    - Dst: AddressAndPortRange
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1998,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1998,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:1998,1
    - Dst: NetmaskTree::NetmaskTree
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:2006,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:2007,1
    - Dst: NetmaskTree::empty
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:2007,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:2008,1
    - Dst: NetmaskTree::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:2008,1
    - Dst: NetmaskTree::insert
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:2009,1
    - Dst: AddressAndPortRange
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:2009,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:2009,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:2010,1
    - Dst: NetmaskTree::empty
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:2010,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:2011,1
    - Dst: NetmaskTree::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:2011,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:2014,1
    - Dst: NetmaskTree::lookup
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:2014,1
    - Dst: AddressAndPortRange
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:2014,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:2014,1
    - Dst: NetmaskTree::lookup
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:2018,1
    - Dst: AddressAndPortRange
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:2018,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:2018,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:2018,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc:2019,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 61
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2022
      start: 1920
    functionDepth: 1
    functionLinenumber: 1920
    functionLinenumberEnd: 2022
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc
    functionUses: 0
    functionsReached:
    - NetmaskTree::empty
    - std::to_string
    - NetmaskTree::size
    - BOOST_CHECK_EQUAL
    - AddressAndPortRange
    - NetmaskTree::lookup
    - NetmaskTree::insert
    - NetmaskTree::clear
    - BOOST_CHECK
    - NetmaskTree::NetmaskTree
    - ComboAddress
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_NetmaskTreePort)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynbpf.cc:29,1
    - Dst: auto::d_excludedSubnets::match
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynbpf.cc:31,1
    - Dst: auto::d_entries::find
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynbpf.cc:36,1
    - Dst: auto::d_entries::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynbpf.cc:37,1
    - Dst: auto::d_entries::replace
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynbpf.cc:39,1
    - Dst: DynBPFFilter::BlockEntry
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynbpf.cc:39,1
    - Dst: auto::d_bpf::block
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynbpf.cc:43,1
    - Dst: auto::d_entries::insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynbpf.cc:44,1
    - Dst: DynBPFFilter::BlockEntry
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynbpf.cc:44,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 2
    argNames:
    - ' addr'
    - ' until'
    argTypes:
    - ComboAddress
    - struct timespec
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 26
    functionDepth: 1
    functionLinenumber: 26
    functionLinenumberEnd: 48
    functionName: DynBPFFilter::block
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-dynbpf.cc
    functionUses: 0
    functionsReached:
    - DynBPFFilter::BlockEntry
    - auto::d_entries::end
    - auto::d_bpf::block
    - auto::d_entries::find
    - lock
    - auto::d_entries::replace
    - auto::d_entries::insert
    - auto::d_excludedSubnets::match
    linkageType: ''
    returnType: bool
    signature: bool DynBPFFilter::block(const ComboAddress& addr, const struct timespec&
      until)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynbpf.cc:52,1
    - Dst: boost::multi_index::get<1>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynbpf.cc:55,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynbpf.cc:57,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynbpf.cc:57,1
    - Dst: erase
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynbpf.cc:60,1
    - Dst: auto::d_bpf::unblock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynbpf.cc:61,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - ' now'
    argTypes:
    - struct timespec
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 50
    functionDepth: 0
    functionLinenumber: 50
    functionLinenumberEnd: 67
    functionName: DynBPFFilter::purgeExpired
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-dynbpf.cc
    functionUses: 0
    functionsReached:
    - end
    - lock
    - begin
    - boost::multi_index::get<1>
    - erase
    - auto::d_bpf::unblock
    linkageType: ''
    returnType: void
    signature: void DynBPFFilter::purgeExpired(const struct timespec& now)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynbpf.cc:72,1
    - Dst: auto::d_bpf::getAddrStats
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynbpf.cc:78,1
    - Dst: std::vector::reserve
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynbpf.cc:79,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynbpf.cc:79,1
    - Dst: auto::d_entries::find
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynbpf.cc:81,1
    - Dst: auto::d_entries::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynbpf.cc:82,1
    - Dst: std::vector::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynbpf.cc:83,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 69
    functionDepth: 0
    functionLinenumber: 69
    functionLinenumberEnd: 87
    functionName: DynBPFFilter::getAddrStats
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-dynbpf.cc
    functionUses: 0
    functionsReached:
    - auto::d_bpf::getAddrStats
    - auto::d_entries::end
    - auto::d_entries::find
    - std::vector::emplace_back
    - size
    - lock
    - std::vector::reserve
    linkageType: ''
    returnType: std::vector<std::tuple<ComboAddress, uint64_t, struct timespec>>
    signature: std::vector<std::tuple<ComboAddress, uint64_t, struct timespec>> DynBPFFilter::getAddrStats()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' buffer'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 154
      start: 151
    functionDepth: 0
    functionLinenumber: 151
    functionLinenumberEnd: 154
    functionName: pdns::ProtoZero::Message::Message
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Message(std::string& buffer)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 155
    functionDepth: 0
    functionLinenumber: 155
    functionLinenumberEnd: 155
    functionName: ~Message()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~Message()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 156
      start: 156
    functionDepth: 0
    functionLinenumber: 156
    functionLinenumberEnd: 156
    functionName: pdns::ProtoZero::Message::Message
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Message(const Message&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 157
      start: 157
    functionDepth: 0
    functionLinenumber: 157
    functionLinenumberEnd: 157
    functionName: pdns::ProtoZero::Message::Message
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Message(Message&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 158
      start: 158
    functionDepth: 0
    functionLinenumber: 158
    functionLinenumberEnd: 158
    functionName: '& operator=(const Message&)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Message
    signature: Message & operator=(const Message&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 159
      start: 159
    functionDepth: 0
    functionLinenumber: 159
    functionLinenumberEnd: 159
    functionName: '& operator=(Message&&)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Message
    signature: Message & operator=(Message&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_enum
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:166,1
    - Dst: static_cast<int32_t>
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:166,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - mtype
    argTypes:
    - MessageType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 167
      start: 164
    functionDepth: 0
    functionLinenumber: 164
    functionLinenumberEnd: 167
    functionName: pdns::ProtoZero::Message::setType
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 5
    functionsReached:
    - static_cast<int32_t>
    - pdns::ProtoZero::Message::add_enum
    linkageType: ''
    returnType: void
    signature: void setType(MessageType mtype)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_enum
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:171,1
    - Dst: static_cast<int32_t>
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:171,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - version
    argTypes:
    - HTTPVersion
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 172
      start: 169
    functionDepth: 0
    functionLinenumber: 169
    functionLinenumberEnd: 172
    functionName: pdns::ProtoZero::Message::setHTTPVersion
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 1
    functionsReached:
    - static_cast<int32_t>
    - pdns::ProtoZero::Message::add_enum
    linkageType: ''
    returnType: void
    signature: void setHTTPVersion(HTTPVersion version)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_bytes
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:176,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:176,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:176,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:176,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' uniqueId'
    argTypes:
    - boost::uuids::uuid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 177
      start: 174
    functionDepth: 0
    functionLinenumber: 174
    functionLinenumberEnd: 177
    functionName: pdns::ProtoZero::Message::setMessageIdentity
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 0
    functionsReached:
    - reinterpret_cast<const char*>
    - pdns::ProtoZero::Message::add_bytes
    - size
    - begin
    linkageType: ''
    returnType: void
    signature: void setMessageIdentity(const boost::uuids::uuid& uniqueId)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_bytes
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:181,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:181,1
    - Dst: length
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:181,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' serverIdentity'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 182
      start: 179
    functionDepth: 0
    functionLinenumber: 179
    functionLinenumberEnd: 182
    functionName: pdns::ProtoZero::Message::setServerIdentity
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 1
    functionsReached:
    - length
    - pdns::ProtoZero::Message::add_bytes
    - data
    linkageType: ''
    returnType: void
    signature: void setServerIdentity(const std::string& serverIdentity)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_enum
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:186,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - family
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 187
      start: 184
    functionDepth: 0
    functionLinenumber: 184
    functionLinenumberEnd: 187
    functionName: pdns::ProtoZero::Message::setSocketFamily
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 0
    functionsReached:
    - pdns::ProtoZero::Message::add_enum
    linkageType: ''
    returnType: void
    signature: void setSocketFamily(int family)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_enum
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:191,1
    - Dst: static_cast<int32_t>
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:191,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - proto
    argTypes:
    - TransportProtocol
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 192
      start: 189
    functionDepth: 0
    functionLinenumber: 189
    functionLinenumberEnd: 192
    functionName: pdns::ProtoZero::Message::setSocketProtocol
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 0
    functionsReached:
    - static_cast<int32_t>
    - pdns::ProtoZero::Message::add_enum
    linkageType: ''
    returnType: void
    signature: void setSocketProtocol(TransportProtocol proto)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: encodeComboAddress
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:196,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:196,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' address'
    argTypes:
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 197
      start: 194
    functionDepth: 1
    functionLinenumber: 194
    functionLinenumberEnd: 197
    functionName: pdns::ProtoZero::Message::setFrom
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 0
    functionsReached:
    - static_cast<protozero::pbf_tag_type>
    - encodeComboAddress
    linkageType: ''
    returnType: void
    signature: void setFrom(const ComboAddress& address)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: encodeComboAddress
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:201,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:201,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' address'
    argTypes:
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 202
      start: 199
    functionDepth: 1
    functionLinenumber: 199
    functionLinenumberEnd: 202
    functionName: pdns::ProtoZero::Message::setTo
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 0
    functionsReached:
    - static_cast<protozero::pbf_tag_type>
    - encodeComboAddress
    linkageType: ''
    returnType: void
    signature: void setTo(const ComboAddress& address)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint64
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:206,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - len
    argTypes:
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 207
      start: 204
    functionDepth: 0
    functionLinenumber: 204
    functionLinenumberEnd: 207
    functionName: pdns::ProtoZero::Message::setInBytes
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 0
    functionsReached:
    - pdns::ProtoZero::Message::add_uint64
    linkageType: ''
    returnType: void
    signature: void setInBytes(uint64_t len)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: gettime
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:212,1
    - Dst: pdns::ProtoZero::Message::setTime
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:214,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 215
      start: 209
    functionDepth: 0
    functionLinenumber: 209
    functionLinenumberEnd: 215
    functionName: pdns::ProtoZero::Message::setTime
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 7
    functionsReached:
    - pdns::ProtoZero::Message::setTime
    - gettime
    linkageType: ''
    returnType: void
    signature: void setTime()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint32
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:220,1
    - Dst: pdns::ProtoZero::Message::add_uint32
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:221,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - sec
    - usec
    argTypes:
    - time_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 222
      start: 217
    functionDepth: 0
    functionLinenumber: 217
    functionLinenumberEnd: 222
    functionName: pdns::ProtoZero::Message::setTime
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 7
    functionsReached:
    - pdns::ProtoZero::Message::add_uint32
    linkageType: ''
    returnType: void
    signature: void setTime(time_t sec, uint32_t usec)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint32
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:226,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:226,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - qid
    argTypes:
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 227
      start: 224
    functionDepth: 0
    functionLinenumber: 224
    functionLinenumberEnd: 227
    functionName: pdns::ProtoZero::Message::setId
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 0
    functionsReached:
    - ntohs
    - pdns::ProtoZero::Message::add_uint32
    linkageType: ''
    returnType: void
    signature: void setId(uint16_t qid)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:231,1
    - Dst: encodeDNSName
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:232,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:232,1
    - Dst: protozero::pbf_writer::add_uint32
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:233,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:233,1
    - Dst: protozero::pbf_writer::add_uint32
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:234,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:234,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - ' qname'
    - qtype
    - qclass
    argTypes:
    - DNSName
    - uint16_t
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 235
      start: 229
    functionDepth: 0
    functionLinenumber: 229
    functionLinenumberEnd: 235
    functionName: pdns::ProtoZero::Message::setQuestion
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 2
    functionsReached:
    - static_cast<protozero::pbf_tag_type>
    - protozero::pbf_writer::add_uint32
    - encodeDNSName
    linkageType: ''
    returnType: void
    signature: void setQuestion(const DNSName& qname, uint16_t qtype, uint16_t qclass)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:239,1
    - Dst: protozero::pbf_writer::add_string
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:240,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:240,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:241,1
    - Dst: protozero::pbf_writer::add_string
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:243,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:243,1
    - Dst: protozero::pbf_writer::add_uint64
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:246,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:246,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - ' key'
    - ' stringVal'
    - ' intVal'
    argTypes:
    - std::string
    - std::unordered_set<std::string>
    - std::unordered_set<int64_t>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 248
      start: 237
    functionDepth: 0
    functionLinenumber: 237
    functionLinenumberEnd: 248
    functionName: pdns::ProtoZero::Message::setMeta
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 1
    functionsReached:
    - protozero::pbf_writer::add_uint64
    - static_cast<protozero::pbf_tag_type>
    - protozero::pbf_writer::add_string
    linkageType: ''
    returnType: void
    signature: void setMeta(const std::string& key, const std::unordered_set<std::string>&
      stringVal, const std::unordered_set<int64_t>& intVal)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: encodeNetmask
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:252,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:252,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' netmask'
    - mask
    argTypes:
    - Netmask
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 253
      start: 250
    functionDepth: 1
    functionLinenumber: 250
    functionLinenumberEnd: 253
    functionName: pdns::ProtoZero::Message::setEDNSSubnet
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 1
    functionsReached:
    - static_cast<protozero::pbf_tag_type>
    - encodeNetmask
    linkageType: ''
    returnType: void
    signature: void setEDNSSubnet(const Netmask& netmask, uint8_t mask)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:257,1
    - Dst: pdns::ProtoZero::Message::add_string
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:258,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ' req'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 260
      start: 255
    functionDepth: 0
    functionLinenumber: 255
    functionLinenumberEnd: 260
    functionName: pdns::ProtoZero::Message::setRequestorId
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 1
    functionsReached:
    - empty
    - pdns::ProtoZero::Message::add_string
    linkageType: ''
    returnType: void
    signature: void setRequestorId(const std::string& req)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_bytes
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:264,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:264,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:264,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:264,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' uniqueId'
    argTypes:
    - boost::uuids::uuid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 265
      start: 262
    functionDepth: 0
    functionLinenumber: 262
    functionLinenumberEnd: 265
    functionName: pdns::ProtoZero::Message::setInitialRequestID
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 0
    functionsReached:
    - reinterpret_cast<const char*>
    - pdns::ProtoZero::Message::add_bytes
    - size
    - begin
    linkageType: ''
    returnType: void
    signature: void setInitialRequestID(const boost::uuids::uuid& uniqueId)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:269,1
    - Dst: pdns::ProtoZero::Message::add_string
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:270,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ' deviceId'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 272
      start: 267
    functionDepth: 0
    functionLinenumber: 267
    functionLinenumberEnd: 272
    functionName: pdns::ProtoZero::Message::setDeviceId
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 1
    functionsReached:
    - empty
    - pdns::ProtoZero::Message::add_string
    linkageType: ''
    returnType: void
    signature: void setDeviceId(const std::string& deviceId)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_bool
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:276,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - nod
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 277
      start: 274
    functionDepth: 0
    functionLinenumber: 274
    functionLinenumberEnd: 277
    functionName: pdns::ProtoZero::Message::setNewlyObservedDomain
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 0
    functionsReached:
    - pdns::ProtoZero::Message::add_bool
    linkageType: ''
    returnType: void
    signature: void setNewlyObservedDomain(bool nod)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:281,1
    - Dst: pdns::ProtoZero::Message::add_string
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:282,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ' name'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 284
      start: 279
    functionDepth: 0
    functionLinenumber: 279
    functionLinenumberEnd: 284
    functionName: pdns::ProtoZero::Message::setDeviceName
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 1
    functionsReached:
    - empty
    - pdns::ProtoZero::Message::add_string
    linkageType: ''
    returnType: void
    signature: void setDeviceName(const std::string& name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint32
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:288,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - port
    argTypes:
    - in_port_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 289
      start: 286
    functionDepth: 0
    functionLinenumber: 286
    functionLinenumberEnd: 289
    functionName: pdns::ProtoZero::Message::setFromPort
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 0
    functionsReached:
    - pdns::ProtoZero::Message::add_uint32
    linkageType: ''
    returnType: void
    signature: void setFromPort(in_port_t port)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint32
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:293,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - port
    argTypes:
    - in_port_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 294
      start: 291
    functionDepth: 0
    functionLinenumber: 291
    functionLinenumberEnd: 294
    functionName: pdns::ProtoZero::Message::setToPort
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 0
    functionsReached:
    - pdns::ProtoZero::Message::add_uint32
    linkageType: ''
    returnType: void
    signature: void setToPort(in_port_t port)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint64
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:298,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - wid
    argTypes:
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 299
      start: 296
    functionDepth: 0
    functionLinenumber: 296
    functionLinenumberEnd: 299
    functionName: pdns::ProtoZero::Message::setWorkerId
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 0
    functionsReached:
    - pdns::ProtoZero::Message::add_uint64
    linkageType: ''
    returnType: void
    signature: void setWorkerId(uint64_t wid)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_bool
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:303,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - hit
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 304
      start: 301
    functionDepth: 0
    functionLinenumber: 301
    functionLinenumberEnd: 304
    functionName: pdns::ProtoZero::Message::setPacketCacheHit
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 1
    functionsReached:
    - pdns::ProtoZero::Message::add_bool
    linkageType: ''
    returnType: void
    signature: void setPacketCacheHit(bool hit)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint32
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:308,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - num
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 309
      start: 306
    functionDepth: 0
    functionLinenumber: 306
    functionLinenumberEnd: 309
    functionName: pdns::ProtoZero::Message::setOutgoingQueries
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 1
    functionsReached:
    - pdns::ProtoZero::Message::add_uint32
    linkageType: ''
    returnType: void
    signature: void setOutgoingQueries(uint32_t num)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint32
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:313,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - flags
    argTypes:
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 314
      start: 311
    functionDepth: 0
    functionLinenumber: 311
    functionLinenumberEnd: 314
    functionName: pdns::ProtoZero::Message::setHeaderFlags
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 1
    functionsReached:
    - pdns::ProtoZero::Message::add_uint32
    linkageType: ''
    returnType: void
    signature: void setHeaderFlags(uint16_t flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint32
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:318,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - version
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 319
      start: 316
    functionDepth: 0
    functionLinenumber: 316
    functionLinenumberEnd: 319
    functionName: pdns::ProtoZero::Message::setEDNSVersion
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 0
    functionsReached:
    - pdns::ProtoZero::Message::add_uint32
    linkageType: ''
    returnType: void
    signature: void setEDNSVersion(uint32_t version)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:323,1
    - Dst: pdns::ProtoZero::Message::add_string
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:324,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ' data'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 326
      start: 321
    functionDepth: 0
    functionLinenumber: 321
    functionLinenumberEnd: 326
    functionName: pdns::ProtoZero::Message::setOpenTelemetryData
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 2
    functionsReached:
    - empty
    - pdns::ProtoZero::Message::add_string
    linkageType: ''
    returnType: void
    signature: void setOpenTelemetryData(const std::string& data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint32
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:330,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ede
    argTypes:
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 331
      start: 328
    functionDepth: 0
    functionLinenumber: 328
    functionLinenumberEnd: 331
    functionName: pdns::ProtoZero::Message::setEDE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 0
    functionsReached:
    - pdns::ProtoZero::Message::add_uint32
    linkageType: ''
    returnType: void
    signature: void setEDE(const uint16_t ede)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::string::empty
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:335,1
    - Dst: pdns::ProtoZero::Message::add_string
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:336,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - edeText
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 338
      start: 333
    functionDepth: 0
    functionLinenumber: 333
    functionLinenumberEnd: 338
    functionName: pdns::ProtoZero::Message::setEDEText
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 0
    functionsReached:
    - pdns::ProtoZero::Message::add_string
    - std::string::empty
    linkageType: ''
    returnType: void
    signature: void setEDEText(const std::string edeText)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_bytes
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:342,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:342,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:342,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:342,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' traceID'
    argTypes:
    - std::array<uint8_t, 16>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 343
      start: 340
    functionDepth: 0
    functionLinenumber: 340
    functionLinenumberEnd: 343
    functionName: pdns::ProtoZero::Message::setOpenTelemetryTraceID
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 1
    functionsReached:
    - reinterpret_cast<const char*>
    - pdns::ProtoZero::Message::add_bytes
    - size
    - data
    linkageType: ''
    returnType: void
    signature: void setOpenTelemetryTraceID(const std::array<uint8_t, 16>& traceID)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:347,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 348
      start: 345
    functionDepth: 0
    functionLinenumber: 345
    functionLinenumberEnd: 348
    functionName: pdns::ProtoZero::Message::startResponse
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 2
    functionsReached:
    - static_cast<protozero::pbf_tag_type>
    linkageType: ''
    returnType: void
    signature: void startResponse()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: commit
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:352,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 353
      start: 350
    functionDepth: 0
    functionLinenumber: 350
    functionLinenumberEnd: 353
    functionName: pdns::ProtoZero::Message::commitResponse
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 1
    functionsReached:
    - commit
    linkageType: ''
    returnType: void
    signature: void commitResponse()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint32
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:357,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:357,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rcode
    argTypes:
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 358
      start: 355
    functionDepth: 0
    functionLinenumber: 355
    functionLinenumberEnd: 358
    functionName: pdns::ProtoZero::Message::setResponseCode
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 2
    functionsReached:
    - static_cast<protozero::pbf_tag_type>
    - pdns::ProtoZero::Message::add_uint32
    linkageType: ''
    returnType: void
    signature: void setResponseCode(uint8_t rcode)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint32
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:363,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:363,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 364
      start: 360
    functionDepth: 0
    functionLinenumber: 360
    functionLinenumberEnd: 364
    functionName: pdns::ProtoZero::Message::setNetworkErrorResponseCode
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 0
    functionsReached:
    - static_cast<protozero::pbf_tag_type>
    - pdns::ProtoZero::Message::add_uint32
    linkageType: ''
    returnType: void
    signature: void setNetworkErrorResponseCode()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_string
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:368,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:368,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' policy'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 369
      start: 366
    functionDepth: 0
    functionLinenumber: 366
    functionLinenumberEnd: 369
    functionName: pdns::ProtoZero::Message::setAppliedPolicy
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 0
    functionsReached:
    - pdns::ProtoZero::Message::add_string
    - static_cast<protozero::pbf_tag_type>
    linkageType: ''
    returnType: void
    signature: void setAppliedPolicy(const std::string& policy)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::addPolicyTag
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:374,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - ' tags'
    argTypes:
    - std::unordered_set<std::string>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 376
      start: 371
    functionDepth: 0
    functionLinenumber: 371
    functionLinenumberEnd: 376
    functionName: pdns::ProtoZero::Message::addPolicyTags
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 0
    functionsReached:
    - pdns::ProtoZero::Message::addPolicyTag
    linkageType: ''
    returnType: void
    signature: void addPolicyTags(const std::unordered_set<std::string>& tags)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_string
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:380,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:380,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' tag'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 381
      start: 378
    functionDepth: 0
    functionLinenumber: 378
    functionLinenumberEnd: 381
    functionName: pdns::ProtoZero::Message::addPolicyTag
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 6
    functionsReached:
    - pdns::ProtoZero::Message::add_string
    - static_cast<protozero::pbf_tag_type>
    linkageType: ''
    returnType: void
    signature: void addPolicyTag(const string& tag)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint32
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:385,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:385,1
    - Dst: pdns::ProtoZero::Message::add_uint32
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:386,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:386,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - sec
    - usec
    argTypes:
    - uint32_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 387
      start: 383
    functionDepth: 0
    functionLinenumber: 383
    functionLinenumberEnd: 387
    functionName: pdns::ProtoZero::Message::setQueryTime
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 2
    functionsReached:
    - static_cast<protozero::pbf_tag_type>
    - pdns::ProtoZero::Message::add_uint32
    linkageType: ''
    returnType: void
    signature: void setQueryTime(uint32_t sec, uint32_t usec)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_enum
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:399,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:399,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' writer'
    - type
    - value
    argTypes:
    - protozero::pbf_writer
    - Field
    - int32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 400
      start: 397
    functionDepth: 0
    functionLinenumber: 397
    functionLinenumberEnd: 400
    functionName: pdns::ProtoZero::Message::add_enum
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 25
    functionsReached:
    - static_cast<protozero::pbf_tag_type>
    - pdns::ProtoZero::Message::add_enum
    linkageType: ''
    returnType: void
    signature: void add_enum(protozero::pbf_writer& writer, Field type, int32_t value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_bool
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:404,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:404,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' writer'
    - type
    - value
    argTypes:
    - protozero::pbf_writer
    - Field
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 405
      start: 402
    functionDepth: 0
    functionLinenumber: 402
    functionLinenumberEnd: 405
    functionName: pdns::ProtoZero::Message::add_bool
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 15
    functionsReached:
    - static_cast<protozero::pbf_tag_type>
    - pdns::ProtoZero::Message::add_bool
    linkageType: ''
    returnType: void
    signature: void add_bool(protozero::pbf_writer& writer, Field type, bool value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint32
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:409,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:409,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' writer'
    - type
    - value
    argTypes:
    - protozero::pbf_writer
    - Field
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 410
      start: 407
    functionDepth: 0
    functionLinenumber: 407
    functionLinenumberEnd: 410
    functionName: pdns::ProtoZero::Message::add_uint32
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 60
    functionsReached:
    - static_cast<protozero::pbf_tag_type>
    - pdns::ProtoZero::Message::add_uint32
    linkageType: ''
    returnType: void
    signature: void add_uint32(protozero::pbf_writer& writer, Field type, uint32_t
      value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint64
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:414,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:414,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' writer'
    - type
    - value
    argTypes:
    - protozero::pbf_writer
    - Field
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 415
      start: 412
    functionDepth: 0
    functionLinenumber: 412
    functionLinenumberEnd: 415
    functionName: pdns::ProtoZero::Message::add_uint64
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 15
    functionsReached:
    - pdns::ProtoZero::Message::add_uint64
    - static_cast<protozero::pbf_tag_type>
    linkageType: ''
    returnType: void
    signature: void add_uint64(protozero::pbf_writer& writer, Field type, uint64_t
      value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_bytes
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:419,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:419,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - ' writer'
    - type
    - data
    - len
    argTypes:
    - protozero::pbf_writer
    - Field
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 420
      start: 417
    functionDepth: 0
    functionLinenumber: 417
    functionLinenumberEnd: 420
    functionName: pdns::ProtoZero::Message::add_bytes
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 25
    functionsReached:
    - static_cast<protozero::pbf_tag_type>
    - pdns::ProtoZero::Message::add_bytes
    linkageType: ''
    returnType: void
    signature: void add_bytes(protozero::pbf_writer& writer, Field type, const char*
      data, size_t len)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_string
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:424,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:424,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' writer'
    - type
    - ' str'
    argTypes:
    - protozero::pbf_writer
    - Field
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 425
      start: 422
    functionDepth: 0
    functionLinenumber: 422
    functionLinenumberEnd: 425
    functionName: pdns::ProtoZero::Message::add_string
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 40
    functionsReached:
    - pdns::ProtoZero::Message::add_string
    - static_cast<protozero::pbf_tag_type>
    linkageType: ''
    returnType: void
    signature: void add_string(protozero::pbf_writer& writer, Field type, const std::string&
      str)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' buffer'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 154
      start: 151
    functionDepth: 0
    functionLinenumber: 151
    functionLinenumberEnd: 154
    functionName: pdns::ProtoZero::Message::Message
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Message(std::string& buffer)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 155
    functionDepth: 0
    functionLinenumber: 155
    functionLinenumberEnd: 155
    functionName: ~Message()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~Message()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 156
      start: 156
    functionDepth: 0
    functionLinenumber: 156
    functionLinenumberEnd: 156
    functionName: pdns::ProtoZero::Message::Message
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Message(const Message&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 157
      start: 157
    functionDepth: 0
    functionLinenumber: 157
    functionLinenumberEnd: 157
    functionName: pdns::ProtoZero::Message::Message
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Message(Message&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 158
      start: 158
    functionDepth: 0
    functionLinenumber: 158
    functionLinenumberEnd: 158
    functionName: '& operator=(const Message&)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Message
    signature: Message & operator=(const Message&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 159
      start: 159
    functionDepth: 0
    functionLinenumber: 159
    functionLinenumberEnd: 159
    functionName: '& operator=(Message&&)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Message
    signature: Message & operator=(Message&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_enum
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:166,1
    - Dst: static_cast<int32_t>
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:166,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - mtype
    argTypes:
    - MessageType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 167
      start: 164
    functionDepth: 0
    functionLinenumber: 164
    functionLinenumberEnd: 167
    functionName: pdns::ProtoZero::Message::setType
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 5
    functionsReached:
    - static_cast<int32_t>
    - pdns::ProtoZero::Message::add_enum
    linkageType: ''
    returnType: void
    signature: void setType(MessageType mtype)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_enum
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:171,1
    - Dst: static_cast<int32_t>
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:171,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - version
    argTypes:
    - HTTPVersion
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 172
      start: 169
    functionDepth: 0
    functionLinenumber: 169
    functionLinenumberEnd: 172
    functionName: pdns::ProtoZero::Message::setHTTPVersion
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 1
    functionsReached:
    - static_cast<int32_t>
    - pdns::ProtoZero::Message::add_enum
    linkageType: ''
    returnType: void
    signature: void setHTTPVersion(HTTPVersion version)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_bytes
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:176,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:176,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:176,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:176,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' uniqueId'
    argTypes:
    - boost::uuids::uuid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 177
      start: 174
    functionDepth: 0
    functionLinenumber: 174
    functionLinenumberEnd: 177
    functionName: pdns::ProtoZero::Message::setMessageIdentity
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 0
    functionsReached:
    - reinterpret_cast<const char*>
    - pdns::ProtoZero::Message::add_bytes
    - size
    - begin
    linkageType: ''
    returnType: void
    signature: void setMessageIdentity(const boost::uuids::uuid& uniqueId)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_bytes
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:181,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:181,1
    - Dst: length
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:181,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' serverIdentity'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 182
      start: 179
    functionDepth: 0
    functionLinenumber: 179
    functionLinenumberEnd: 182
    functionName: pdns::ProtoZero::Message::setServerIdentity
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 1
    functionsReached:
    - length
    - pdns::ProtoZero::Message::add_bytes
    - data
    linkageType: ''
    returnType: void
    signature: void setServerIdentity(const std::string& serverIdentity)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_enum
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:186,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - family
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 187
      start: 184
    functionDepth: 0
    functionLinenumber: 184
    functionLinenumberEnd: 187
    functionName: pdns::ProtoZero::Message::setSocketFamily
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 0
    functionsReached:
    - pdns::ProtoZero::Message::add_enum
    linkageType: ''
    returnType: void
    signature: void setSocketFamily(int family)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_enum
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:191,1
    - Dst: static_cast<int32_t>
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:191,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - proto
    argTypes:
    - TransportProtocol
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 192
      start: 189
    functionDepth: 0
    functionLinenumber: 189
    functionLinenumberEnd: 192
    functionName: pdns::ProtoZero::Message::setSocketProtocol
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 0
    functionsReached:
    - static_cast<int32_t>
    - pdns::ProtoZero::Message::add_enum
    linkageType: ''
    returnType: void
    signature: void setSocketProtocol(TransportProtocol proto)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: encodeComboAddress
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:196,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:196,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' address'
    argTypes:
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 197
      start: 194
    functionDepth: 1
    functionLinenumber: 194
    functionLinenumberEnd: 197
    functionName: pdns::ProtoZero::Message::setFrom
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 0
    functionsReached:
    - static_cast<protozero::pbf_tag_type>
    - encodeComboAddress
    linkageType: ''
    returnType: void
    signature: void setFrom(const ComboAddress& address)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: encodeComboAddress
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:201,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:201,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' address'
    argTypes:
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 202
      start: 199
    functionDepth: 1
    functionLinenumber: 199
    functionLinenumberEnd: 202
    functionName: pdns::ProtoZero::Message::setTo
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 0
    functionsReached:
    - static_cast<protozero::pbf_tag_type>
    - encodeComboAddress
    linkageType: ''
    returnType: void
    signature: void setTo(const ComboAddress& address)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint64
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:206,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - len
    argTypes:
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 207
      start: 204
    functionDepth: 0
    functionLinenumber: 204
    functionLinenumberEnd: 207
    functionName: pdns::ProtoZero::Message::setInBytes
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 0
    functionsReached:
    - pdns::ProtoZero::Message::add_uint64
    linkageType: ''
    returnType: void
    signature: void setInBytes(uint64_t len)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: gettime
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:212,1
    - Dst: pdns::ProtoZero::Message::setTime
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:214,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 215
      start: 209
    functionDepth: 0
    functionLinenumber: 209
    functionLinenumberEnd: 215
    functionName: pdns::ProtoZero::Message::setTime
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 8
    functionsReached:
    - pdns::ProtoZero::Message::setTime
    - gettime
    linkageType: ''
    returnType: void
    signature: void setTime()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint32
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:220,1
    - Dst: pdns::ProtoZero::Message::add_uint32
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:221,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - sec
    - usec
    argTypes:
    - time_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 222
      start: 217
    functionDepth: 0
    functionLinenumber: 217
    functionLinenumberEnd: 222
    functionName: pdns::ProtoZero::Message::setTime
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 8
    functionsReached:
    - pdns::ProtoZero::Message::add_uint32
    linkageType: ''
    returnType: void
    signature: void setTime(time_t sec, uint32_t usec)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint32
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:226,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:226,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - qid
    argTypes:
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 227
      start: 224
    functionDepth: 0
    functionLinenumber: 224
    functionLinenumberEnd: 227
    functionName: pdns::ProtoZero::Message::setId
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 0
    functionsReached:
    - ntohs
    - pdns::ProtoZero::Message::add_uint32
    linkageType: ''
    returnType: void
    signature: void setId(uint16_t qid)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:231,1
    - Dst: encodeDNSName
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:232,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:232,1
    - Dst: protozero::pbf_writer::add_uint32
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:233,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:233,1
    - Dst: protozero::pbf_writer::add_uint32
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:234,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:234,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - ' qname'
    - qtype
    - qclass
    argTypes:
    - DNSName
    - uint16_t
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 235
      start: 229
    functionDepth: 0
    functionLinenumber: 229
    functionLinenumberEnd: 235
    functionName: pdns::ProtoZero::Message::setQuestion
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 2
    functionsReached:
    - static_cast<protozero::pbf_tag_type>
    - protozero::pbf_writer::add_uint32
    - encodeDNSName
    linkageType: ''
    returnType: void
    signature: void setQuestion(const DNSName& qname, uint16_t qtype, uint16_t qclass)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:239,1
    - Dst: protozero::pbf_writer::add_string
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:240,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:240,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:241,1
    - Dst: protozero::pbf_writer::add_string
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:243,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:243,1
    - Dst: protozero::pbf_writer::add_uint64
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:246,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:246,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - ' key'
    - ' stringVal'
    - ' intVal'
    argTypes:
    - std::string
    - std::unordered_set<std::string>
    - std::unordered_set<int64_t>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 248
      start: 237
    functionDepth: 0
    functionLinenumber: 237
    functionLinenumberEnd: 248
    functionName: pdns::ProtoZero::Message::setMeta
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 1
    functionsReached:
    - protozero::pbf_writer::add_uint64
    - static_cast<protozero::pbf_tag_type>
    - protozero::pbf_writer::add_string
    linkageType: ''
    returnType: void
    signature: void setMeta(const std::string& key, const std::unordered_set<std::string>&
      stringVal, const std::unordered_set<int64_t>& intVal)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: encodeNetmask
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:252,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:252,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' netmask'
    - mask
    argTypes:
    - Netmask
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 253
      start: 250
    functionDepth: 1
    functionLinenumber: 250
    functionLinenumberEnd: 253
    functionName: pdns::ProtoZero::Message::setEDNSSubnet
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 1
    functionsReached:
    - static_cast<protozero::pbf_tag_type>
    - encodeNetmask
    linkageType: ''
    returnType: void
    signature: void setEDNSSubnet(const Netmask& netmask, uint8_t mask)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:257,1
    - Dst: pdns::ProtoZero::Message::add_string
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:258,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ' req'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 260
      start: 255
    functionDepth: 0
    functionLinenumber: 255
    functionLinenumberEnd: 260
    functionName: pdns::ProtoZero::Message::setRequestorId
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 1
    functionsReached:
    - empty
    - pdns::ProtoZero::Message::add_string
    linkageType: ''
    returnType: void
    signature: void setRequestorId(const std::string& req)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_bytes
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:264,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:264,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:264,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:264,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' uniqueId'
    argTypes:
    - boost::uuids::uuid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 265
      start: 262
    functionDepth: 0
    functionLinenumber: 262
    functionLinenumberEnd: 265
    functionName: pdns::ProtoZero::Message::setInitialRequestID
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 0
    functionsReached:
    - reinterpret_cast<const char*>
    - pdns::ProtoZero::Message::add_bytes
    - size
    - begin
    linkageType: ''
    returnType: void
    signature: void setInitialRequestID(const boost::uuids::uuid& uniqueId)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:269,1
    - Dst: pdns::ProtoZero::Message::add_string
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:270,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ' deviceId'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 272
      start: 267
    functionDepth: 0
    functionLinenumber: 267
    functionLinenumberEnd: 272
    functionName: pdns::ProtoZero::Message::setDeviceId
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 1
    functionsReached:
    - empty
    - pdns::ProtoZero::Message::add_string
    linkageType: ''
    returnType: void
    signature: void setDeviceId(const std::string& deviceId)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_bool
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:276,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - nod
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 277
      start: 274
    functionDepth: 0
    functionLinenumber: 274
    functionLinenumberEnd: 277
    functionName: pdns::ProtoZero::Message::setNewlyObservedDomain
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 0
    functionsReached:
    - pdns::ProtoZero::Message::add_bool
    linkageType: ''
    returnType: void
    signature: void setNewlyObservedDomain(bool nod)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:281,1
    - Dst: pdns::ProtoZero::Message::add_string
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:282,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ' name'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 284
      start: 279
    functionDepth: 0
    functionLinenumber: 279
    functionLinenumberEnd: 284
    functionName: pdns::ProtoZero::Message::setDeviceName
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 1
    functionsReached:
    - empty
    - pdns::ProtoZero::Message::add_string
    linkageType: ''
    returnType: void
    signature: void setDeviceName(const std::string& name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint32
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:288,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - port
    argTypes:
    - in_port_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 289
      start: 286
    functionDepth: 0
    functionLinenumber: 286
    functionLinenumberEnd: 289
    functionName: pdns::ProtoZero::Message::setFromPort
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 0
    functionsReached:
    - pdns::ProtoZero::Message::add_uint32
    linkageType: ''
    returnType: void
    signature: void setFromPort(in_port_t port)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint32
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:293,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - port
    argTypes:
    - in_port_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 294
      start: 291
    functionDepth: 0
    functionLinenumber: 291
    functionLinenumberEnd: 294
    functionName: pdns::ProtoZero::Message::setToPort
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 0
    functionsReached:
    - pdns::ProtoZero::Message::add_uint32
    linkageType: ''
    returnType: void
    signature: void setToPort(in_port_t port)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint64
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:298,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - wid
    argTypes:
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 299
      start: 296
    functionDepth: 0
    functionLinenumber: 296
    functionLinenumberEnd: 299
    functionName: pdns::ProtoZero::Message::setWorkerId
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 0
    functionsReached:
    - pdns::ProtoZero::Message::add_uint64
    linkageType: ''
    returnType: void
    signature: void setWorkerId(uint64_t wid)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_bool
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:303,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - hit
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 304
      start: 301
    functionDepth: 0
    functionLinenumber: 301
    functionLinenumberEnd: 304
    functionName: pdns::ProtoZero::Message::setPacketCacheHit
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 1
    functionsReached:
    - pdns::ProtoZero::Message::add_bool
    linkageType: ''
    returnType: void
    signature: void setPacketCacheHit(bool hit)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint32
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:308,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - num
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 309
      start: 306
    functionDepth: 0
    functionLinenumber: 306
    functionLinenumberEnd: 309
    functionName: pdns::ProtoZero::Message::setOutgoingQueries
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 1
    functionsReached:
    - pdns::ProtoZero::Message::add_uint32
    linkageType: ''
    returnType: void
    signature: void setOutgoingQueries(uint32_t num)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint32
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:313,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - flags
    argTypes:
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 314
      start: 311
    functionDepth: 0
    functionLinenumber: 311
    functionLinenumberEnd: 314
    functionName: pdns::ProtoZero::Message::setHeaderFlags
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 1
    functionsReached:
    - pdns::ProtoZero::Message::add_uint32
    linkageType: ''
    returnType: void
    signature: void setHeaderFlags(uint16_t flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint32
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:318,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - version
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 319
      start: 316
    functionDepth: 0
    functionLinenumber: 316
    functionLinenumberEnd: 319
    functionName: pdns::ProtoZero::Message::setEDNSVersion
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 0
    functionsReached:
    - pdns::ProtoZero::Message::add_uint32
    linkageType: ''
    returnType: void
    signature: void setEDNSVersion(uint32_t version)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:323,1
    - Dst: pdns::ProtoZero::Message::add_string
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:324,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ' data'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 326
      start: 321
    functionDepth: 0
    functionLinenumber: 321
    functionLinenumberEnd: 326
    functionName: pdns::ProtoZero::Message::setOpenTelemetryData
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 2
    functionsReached:
    - empty
    - pdns::ProtoZero::Message::add_string
    linkageType: ''
    returnType: void
    signature: void setOpenTelemetryData(const std::string& data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint32
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:330,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ede
    argTypes:
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 331
      start: 328
    functionDepth: 0
    functionLinenumber: 328
    functionLinenumberEnd: 331
    functionName: pdns::ProtoZero::Message::setEDE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 0
    functionsReached:
    - pdns::ProtoZero::Message::add_uint32
    linkageType: ''
    returnType: void
    signature: void setEDE(const uint16_t ede)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::string::empty
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:335,1
    - Dst: pdns::ProtoZero::Message::add_string
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:336,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - edeText
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 338
      start: 333
    functionDepth: 0
    functionLinenumber: 333
    functionLinenumberEnd: 338
    functionName: pdns::ProtoZero::Message::setEDEText
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 0
    functionsReached:
    - pdns::ProtoZero::Message::add_string
    - std::string::empty
    linkageType: ''
    returnType: void
    signature: void setEDEText(const std::string edeText)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_bytes
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:342,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:342,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:342,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:342,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' traceID'
    argTypes:
    - std::array<uint8_t, 16>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 343
      start: 340
    functionDepth: 0
    functionLinenumber: 340
    functionLinenumberEnd: 343
    functionName: pdns::ProtoZero::Message::setOpenTelemetryTraceID
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 1
    functionsReached:
    - reinterpret_cast<const char*>
    - pdns::ProtoZero::Message::add_bytes
    - size
    - data
    linkageType: ''
    returnType: void
    signature: void setOpenTelemetryTraceID(const std::array<uint8_t, 16>& traceID)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:347,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 348
      start: 345
    functionDepth: 0
    functionLinenumber: 345
    functionLinenumberEnd: 348
    functionName: pdns::ProtoZero::Message::startResponse
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 2
    functionsReached:
    - static_cast<protozero::pbf_tag_type>
    linkageType: ''
    returnType: void
    signature: void startResponse()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: commit
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:352,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 353
      start: 350
    functionDepth: 0
    functionLinenumber: 350
    functionLinenumberEnd: 353
    functionName: pdns::ProtoZero::Message::commitResponse
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 1
    functionsReached:
    - commit
    linkageType: ''
    returnType: void
    signature: void commitResponse()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint32
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:357,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:357,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rcode
    argTypes:
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 358
      start: 355
    functionDepth: 0
    functionLinenumber: 355
    functionLinenumberEnd: 358
    functionName: pdns::ProtoZero::Message::setResponseCode
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 2
    functionsReached:
    - static_cast<protozero::pbf_tag_type>
    - pdns::ProtoZero::Message::add_uint32
    linkageType: ''
    returnType: void
    signature: void setResponseCode(uint8_t rcode)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint32
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:363,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:363,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 364
      start: 360
    functionDepth: 0
    functionLinenumber: 360
    functionLinenumberEnd: 364
    functionName: pdns::ProtoZero::Message::setNetworkErrorResponseCode
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 0
    functionsReached:
    - static_cast<protozero::pbf_tag_type>
    - pdns::ProtoZero::Message::add_uint32
    linkageType: ''
    returnType: void
    signature: void setNetworkErrorResponseCode()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_string
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:368,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:368,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' policy'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 369
      start: 366
    functionDepth: 0
    functionLinenumber: 366
    functionLinenumberEnd: 369
    functionName: pdns::ProtoZero::Message::setAppliedPolicy
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 0
    functionsReached:
    - pdns::ProtoZero::Message::add_string
    - static_cast<protozero::pbf_tag_type>
    linkageType: ''
    returnType: void
    signature: void setAppliedPolicy(const std::string& policy)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::addPolicyTag
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:374,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - ' tags'
    argTypes:
    - std::unordered_set<std::string>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 376
      start: 371
    functionDepth: 0
    functionLinenumber: 371
    functionLinenumberEnd: 376
    functionName: pdns::ProtoZero::Message::addPolicyTags
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 0
    functionsReached:
    - pdns::ProtoZero::Message::addPolicyTag
    linkageType: ''
    returnType: void
    signature: void addPolicyTags(const std::unordered_set<std::string>& tags)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_string
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:380,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:380,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' tag'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 381
      start: 378
    functionDepth: 0
    functionLinenumber: 378
    functionLinenumberEnd: 381
    functionName: pdns::ProtoZero::Message::addPolicyTag
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 7
    functionsReached:
    - pdns::ProtoZero::Message::add_string
    - static_cast<protozero::pbf_tag_type>
    linkageType: ''
    returnType: void
    signature: void addPolicyTag(const string& tag)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint32
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:385,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:385,1
    - Dst: pdns::ProtoZero::Message::add_uint32
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:386,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:386,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - sec
    - usec
    argTypes:
    - uint32_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 387
      start: 383
    functionDepth: 0
    functionLinenumber: 383
    functionLinenumberEnd: 387
    functionName: pdns::ProtoZero::Message::setQueryTime
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 2
    functionsReached:
    - static_cast<protozero::pbf_tag_type>
    - pdns::ProtoZero::Message::add_uint32
    linkageType: ''
    returnType: void
    signature: void setQueryTime(uint32_t sec, uint32_t usec)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_enum
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:399,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:399,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' writer'
    - type
    - value
    argTypes:
    - protozero::pbf_writer
    - Field
    - int32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 400
      start: 397
    functionDepth: 0
    functionLinenumber: 397
    functionLinenumberEnd: 400
    functionName: pdns::ProtoZero::Message::add_enum
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 30
    functionsReached:
    - static_cast<protozero::pbf_tag_type>
    - pdns::ProtoZero::Message::add_enum
    linkageType: ''
    returnType: void
    signature: void add_enum(protozero::pbf_writer& writer, Field type, int32_t value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_bool
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:404,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:404,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' writer'
    - type
    - value
    argTypes:
    - protozero::pbf_writer
    - Field
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 405
      start: 402
    functionDepth: 0
    functionLinenumber: 402
    functionLinenumberEnd: 405
    functionName: pdns::ProtoZero::Message::add_bool
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 18
    functionsReached:
    - static_cast<protozero::pbf_tag_type>
    - pdns::ProtoZero::Message::add_bool
    linkageType: ''
    returnType: void
    signature: void add_bool(protozero::pbf_writer& writer, Field type, bool value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint32
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:409,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:409,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' writer'
    - type
    - value
    argTypes:
    - protozero::pbf_writer
    - Field
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 410
      start: 407
    functionDepth: 0
    functionLinenumber: 407
    functionLinenumberEnd: 410
    functionName: pdns::ProtoZero::Message::add_uint32
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 72
    functionsReached:
    - static_cast<protozero::pbf_tag_type>
    - pdns::ProtoZero::Message::add_uint32
    linkageType: ''
    returnType: void
    signature: void add_uint32(protozero::pbf_writer& writer, Field type, uint32_t
      value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint64
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:414,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:414,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' writer'
    - type
    - value
    argTypes:
    - protozero::pbf_writer
    - Field
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 415
      start: 412
    functionDepth: 0
    functionLinenumber: 412
    functionLinenumberEnd: 415
    functionName: pdns::ProtoZero::Message::add_uint64
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 18
    functionsReached:
    - pdns::ProtoZero::Message::add_uint64
    - static_cast<protozero::pbf_tag_type>
    linkageType: ''
    returnType: void
    signature: void add_uint64(protozero::pbf_writer& writer, Field type, uint64_t
      value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_bytes
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:419,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:419,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - ' writer'
    - type
    - data
    - len
    argTypes:
    - protozero::pbf_writer
    - Field
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 420
      start: 417
    functionDepth: 0
    functionLinenumber: 417
    functionLinenumberEnd: 420
    functionName: pdns::ProtoZero::Message::add_bytes
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 30
    functionsReached:
    - static_cast<protozero::pbf_tag_type>
    - pdns::ProtoZero::Message::add_bytes
    linkageType: ''
    returnType: void
    signature: void add_bytes(protozero::pbf_writer& writer, Field type, const char*
      data, size_t len)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_string
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:424,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:424,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' writer'
    - type
    - ' str'
    argTypes:
    - protozero::pbf_writer
    - Field
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 425
      start: 422
    functionDepth: 0
    functionLinenumber: 422
    functionLinenumberEnd: 425
    functionName: pdns::ProtoZero::Message::add_string
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 48
    functionsReached:
    - pdns::ProtoZero::Message::add_string
    - static_cast<protozero::pbf_tag_type>
    linkageType: ''
    returnType: void
    signature: void add_string(protozero::pbf_writer& writer, Field type, const std::string&
      str)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' buffer'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 154
      start: 151
    functionDepth: 0
    functionLinenumber: 151
    functionLinenumberEnd: 154
    functionName: pdns::ProtoZero::Message::Message
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Message(std::string& buffer)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 155
    functionDepth: 0
    functionLinenumber: 155
    functionLinenumberEnd: 155
    functionName: ~Message()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~Message()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 156
      start: 156
    functionDepth: 0
    functionLinenumber: 156
    functionLinenumberEnd: 156
    functionName: pdns::ProtoZero::Message::Message
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Message(const Message&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 157
      start: 157
    functionDepth: 0
    functionLinenumber: 157
    functionLinenumberEnd: 157
    functionName: pdns::ProtoZero::Message::Message
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Message(Message&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 158
      start: 158
    functionDepth: 0
    functionLinenumber: 158
    functionLinenumberEnd: 158
    functionName: '& operator=(const Message&)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Message
    signature: Message & operator=(const Message&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 159
      start: 159
    functionDepth: 0
    functionLinenumber: 159
    functionLinenumberEnd: 159
    functionName: '& operator=(Message&&)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Message
    signature: Message & operator=(Message&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_enum
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:166,1
    - Dst: static_cast<int32_t>
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:166,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - mtype
    argTypes:
    - MessageType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 167
      start: 164
    functionDepth: 0
    functionLinenumber: 164
    functionLinenumberEnd: 167
    functionName: pdns::ProtoZero::Message::setType
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 5
    functionsReached:
    - static_cast<int32_t>
    - pdns::ProtoZero::Message::add_enum
    linkageType: ''
    returnType: void
    signature: void setType(MessageType mtype)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_enum
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:171,1
    - Dst: static_cast<int32_t>
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:171,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - version
    argTypes:
    - HTTPVersion
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 172
      start: 169
    functionDepth: 0
    functionLinenumber: 169
    functionLinenumberEnd: 172
    functionName: pdns::ProtoZero::Message::setHTTPVersion
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 1
    functionsReached:
    - static_cast<int32_t>
    - pdns::ProtoZero::Message::add_enum
    linkageType: ''
    returnType: void
    signature: void setHTTPVersion(HTTPVersion version)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_bytes
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:176,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:176,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:176,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:176,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' uniqueId'
    argTypes:
    - boost::uuids::uuid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 177
      start: 174
    functionDepth: 0
    functionLinenumber: 174
    functionLinenumberEnd: 177
    functionName: pdns::ProtoZero::Message::setMessageIdentity
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 0
    functionsReached:
    - reinterpret_cast<const char*>
    - pdns::ProtoZero::Message::add_bytes
    - size
    - begin
    linkageType: ''
    returnType: void
    signature: void setMessageIdentity(const boost::uuids::uuid& uniqueId)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_bytes
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:181,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:181,1
    - Dst: length
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:181,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' serverIdentity'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 182
      start: 179
    functionDepth: 0
    functionLinenumber: 179
    functionLinenumberEnd: 182
    functionName: pdns::ProtoZero::Message::setServerIdentity
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 1
    functionsReached:
    - length
    - pdns::ProtoZero::Message::add_bytes
    - data
    linkageType: ''
    returnType: void
    signature: void setServerIdentity(const std::string& serverIdentity)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_enum
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:186,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - family
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 187
      start: 184
    functionDepth: 0
    functionLinenumber: 184
    functionLinenumberEnd: 187
    functionName: pdns::ProtoZero::Message::setSocketFamily
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 0
    functionsReached:
    - pdns::ProtoZero::Message::add_enum
    linkageType: ''
    returnType: void
    signature: void setSocketFamily(int family)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_enum
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:191,1
    - Dst: static_cast<int32_t>
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:191,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - proto
    argTypes:
    - TransportProtocol
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 192
      start: 189
    functionDepth: 0
    functionLinenumber: 189
    functionLinenumberEnd: 192
    functionName: pdns::ProtoZero::Message::setSocketProtocol
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 0
    functionsReached:
    - static_cast<int32_t>
    - pdns::ProtoZero::Message::add_enum
    linkageType: ''
    returnType: void
    signature: void setSocketProtocol(TransportProtocol proto)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: encodeComboAddress
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:196,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:196,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' address'
    argTypes:
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 197
      start: 194
    functionDepth: 1
    functionLinenumber: 194
    functionLinenumberEnd: 197
    functionName: pdns::ProtoZero::Message::setFrom
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 0
    functionsReached:
    - static_cast<protozero::pbf_tag_type>
    - encodeComboAddress
    linkageType: ''
    returnType: void
    signature: void setFrom(const ComboAddress& address)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: encodeComboAddress
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:201,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:201,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' address'
    argTypes:
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 202
      start: 199
    functionDepth: 1
    functionLinenumber: 199
    functionLinenumberEnd: 202
    functionName: pdns::ProtoZero::Message::setTo
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 0
    functionsReached:
    - static_cast<protozero::pbf_tag_type>
    - encodeComboAddress
    linkageType: ''
    returnType: void
    signature: void setTo(const ComboAddress& address)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint64
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:206,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - len
    argTypes:
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 207
      start: 204
    functionDepth: 0
    functionLinenumber: 204
    functionLinenumberEnd: 207
    functionName: pdns::ProtoZero::Message::setInBytes
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 0
    functionsReached:
    - pdns::ProtoZero::Message::add_uint64
    linkageType: ''
    returnType: void
    signature: void setInBytes(uint64_t len)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: gettime
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:212,1
    - Dst: pdns::ProtoZero::Message::setTime
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:214,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 215
      start: 209
    functionDepth: 0
    functionLinenumber: 209
    functionLinenumberEnd: 215
    functionName: pdns::ProtoZero::Message::setTime
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 9
    functionsReached:
    - pdns::ProtoZero::Message::setTime
    - gettime
    linkageType: ''
    returnType: void
    signature: void setTime()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint32
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:220,1
    - Dst: pdns::ProtoZero::Message::add_uint32
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:221,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - sec
    - usec
    argTypes:
    - time_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 222
      start: 217
    functionDepth: 0
    functionLinenumber: 217
    functionLinenumberEnd: 222
    functionName: pdns::ProtoZero::Message::setTime
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 9
    functionsReached:
    - pdns::ProtoZero::Message::add_uint32
    linkageType: ''
    returnType: void
    signature: void setTime(time_t sec, uint32_t usec)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint32
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:226,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:226,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - qid
    argTypes:
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 227
      start: 224
    functionDepth: 0
    functionLinenumber: 224
    functionLinenumberEnd: 227
    functionName: pdns::ProtoZero::Message::setId
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 0
    functionsReached:
    - ntohs
    - pdns::ProtoZero::Message::add_uint32
    linkageType: ''
    returnType: void
    signature: void setId(uint16_t qid)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:231,1
    - Dst: encodeDNSName
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:232,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:232,1
    - Dst: protozero::pbf_writer::add_uint32
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:233,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:233,1
    - Dst: protozero::pbf_writer::add_uint32
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:234,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:234,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - ' qname'
    - qtype
    - qclass
    argTypes:
    - DNSName
    - uint16_t
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 235
      start: 229
    functionDepth: 0
    functionLinenumber: 229
    functionLinenumberEnd: 235
    functionName: pdns::ProtoZero::Message::setQuestion
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 2
    functionsReached:
    - static_cast<protozero::pbf_tag_type>
    - protozero::pbf_writer::add_uint32
    - encodeDNSName
    linkageType: ''
    returnType: void
    signature: void setQuestion(const DNSName& qname, uint16_t qtype, uint16_t qclass)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:239,1
    - Dst: protozero::pbf_writer::add_string
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:240,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:240,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:241,1
    - Dst: protozero::pbf_writer::add_string
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:243,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:243,1
    - Dst: protozero::pbf_writer::add_uint64
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:246,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:246,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - ' key'
    - ' stringVal'
    - ' intVal'
    argTypes:
    - std::string
    - std::unordered_set<std::string>
    - std::unordered_set<int64_t>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 248
      start: 237
    functionDepth: 0
    functionLinenumber: 237
    functionLinenumberEnd: 248
    functionName: pdns::ProtoZero::Message::setMeta
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 1
    functionsReached:
    - protozero::pbf_writer::add_uint64
    - static_cast<protozero::pbf_tag_type>
    - protozero::pbf_writer::add_string
    linkageType: ''
    returnType: void
    signature: void setMeta(const std::string& key, const std::unordered_set<std::string>&
      stringVal, const std::unordered_set<int64_t>& intVal)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: encodeNetmask
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:252,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:252,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' netmask'
    - mask
    argTypes:
    - Netmask
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 253
      start: 250
    functionDepth: 1
    functionLinenumber: 250
    functionLinenumberEnd: 253
    functionName: pdns::ProtoZero::Message::setEDNSSubnet
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 1
    functionsReached:
    - static_cast<protozero::pbf_tag_type>
    - encodeNetmask
    linkageType: ''
    returnType: void
    signature: void setEDNSSubnet(const Netmask& netmask, uint8_t mask)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:257,1
    - Dst: pdns::ProtoZero::Message::add_string
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:258,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ' req'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 260
      start: 255
    functionDepth: 0
    functionLinenumber: 255
    functionLinenumberEnd: 260
    functionName: pdns::ProtoZero::Message::setRequestorId
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 1
    functionsReached:
    - empty
    - pdns::ProtoZero::Message::add_string
    linkageType: ''
    returnType: void
    signature: void setRequestorId(const std::string& req)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_bytes
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:264,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:264,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:264,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:264,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' uniqueId'
    argTypes:
    - boost::uuids::uuid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 265
      start: 262
    functionDepth: 0
    functionLinenumber: 262
    functionLinenumberEnd: 265
    functionName: pdns::ProtoZero::Message::setInitialRequestID
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 0
    functionsReached:
    - reinterpret_cast<const char*>
    - pdns::ProtoZero::Message::add_bytes
    - size
    - begin
    linkageType: ''
    returnType: void
    signature: void setInitialRequestID(const boost::uuids::uuid& uniqueId)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:269,1
    - Dst: pdns::ProtoZero::Message::add_string
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:270,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ' deviceId'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 272
      start: 267
    functionDepth: 0
    functionLinenumber: 267
    functionLinenumberEnd: 272
    functionName: pdns::ProtoZero::Message::setDeviceId
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 1
    functionsReached:
    - empty
    - pdns::ProtoZero::Message::add_string
    linkageType: ''
    returnType: void
    signature: void setDeviceId(const std::string& deviceId)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_bool
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:276,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - nod
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 277
      start: 274
    functionDepth: 0
    functionLinenumber: 274
    functionLinenumberEnd: 277
    functionName: pdns::ProtoZero::Message::setNewlyObservedDomain
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 0
    functionsReached:
    - pdns::ProtoZero::Message::add_bool
    linkageType: ''
    returnType: void
    signature: void setNewlyObservedDomain(bool nod)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:281,1
    - Dst: pdns::ProtoZero::Message::add_string
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:282,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ' name'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 284
      start: 279
    functionDepth: 0
    functionLinenumber: 279
    functionLinenumberEnd: 284
    functionName: pdns::ProtoZero::Message::setDeviceName
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 1
    functionsReached:
    - empty
    - pdns::ProtoZero::Message::add_string
    linkageType: ''
    returnType: void
    signature: void setDeviceName(const std::string& name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint32
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:288,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - port
    argTypes:
    - in_port_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 289
      start: 286
    functionDepth: 0
    functionLinenumber: 286
    functionLinenumberEnd: 289
    functionName: pdns::ProtoZero::Message::setFromPort
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 0
    functionsReached:
    - pdns::ProtoZero::Message::add_uint32
    linkageType: ''
    returnType: void
    signature: void setFromPort(in_port_t port)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint32
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:293,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - port
    argTypes:
    - in_port_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 294
      start: 291
    functionDepth: 0
    functionLinenumber: 291
    functionLinenumberEnd: 294
    functionName: pdns::ProtoZero::Message::setToPort
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 0
    functionsReached:
    - pdns::ProtoZero::Message::add_uint32
    linkageType: ''
    returnType: void
    signature: void setToPort(in_port_t port)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint64
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:298,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - wid
    argTypes:
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 299
      start: 296
    functionDepth: 0
    functionLinenumber: 296
    functionLinenumberEnd: 299
    functionName: pdns::ProtoZero::Message::setWorkerId
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 0
    functionsReached:
    - pdns::ProtoZero::Message::add_uint64
    linkageType: ''
    returnType: void
    signature: void setWorkerId(uint64_t wid)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_bool
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:303,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - hit
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 304
      start: 301
    functionDepth: 0
    functionLinenumber: 301
    functionLinenumberEnd: 304
    functionName: pdns::ProtoZero::Message::setPacketCacheHit
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 1
    functionsReached:
    - pdns::ProtoZero::Message::add_bool
    linkageType: ''
    returnType: void
    signature: void setPacketCacheHit(bool hit)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint32
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:308,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - num
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 309
      start: 306
    functionDepth: 0
    functionLinenumber: 306
    functionLinenumberEnd: 309
    functionName: pdns::ProtoZero::Message::setOutgoingQueries
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 1
    functionsReached:
    - pdns::ProtoZero::Message::add_uint32
    linkageType: ''
    returnType: void
    signature: void setOutgoingQueries(uint32_t num)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint32
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:313,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - flags
    argTypes:
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 314
      start: 311
    functionDepth: 0
    functionLinenumber: 311
    functionLinenumberEnd: 314
    functionName: pdns::ProtoZero::Message::setHeaderFlags
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 1
    functionsReached:
    - pdns::ProtoZero::Message::add_uint32
    linkageType: ''
    returnType: void
    signature: void setHeaderFlags(uint16_t flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint32
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:318,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - version
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 319
      start: 316
    functionDepth: 0
    functionLinenumber: 316
    functionLinenumberEnd: 319
    functionName: pdns::ProtoZero::Message::setEDNSVersion
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 0
    functionsReached:
    - pdns::ProtoZero::Message::add_uint32
    linkageType: ''
    returnType: void
    signature: void setEDNSVersion(uint32_t version)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:323,1
    - Dst: pdns::ProtoZero::Message::add_string
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:324,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ' data'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 326
      start: 321
    functionDepth: 0
    functionLinenumber: 321
    functionLinenumberEnd: 326
    functionName: pdns::ProtoZero::Message::setOpenTelemetryData
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 2
    functionsReached:
    - empty
    - pdns::ProtoZero::Message::add_string
    linkageType: ''
    returnType: void
    signature: void setOpenTelemetryData(const std::string& data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint32
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:330,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ede
    argTypes:
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 331
      start: 328
    functionDepth: 0
    functionLinenumber: 328
    functionLinenumberEnd: 331
    functionName: pdns::ProtoZero::Message::setEDE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 0
    functionsReached:
    - pdns::ProtoZero::Message::add_uint32
    linkageType: ''
    returnType: void
    signature: void setEDE(const uint16_t ede)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::string::empty
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:335,1
    - Dst: pdns::ProtoZero::Message::add_string
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:336,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - edeText
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 338
      start: 333
    functionDepth: 0
    functionLinenumber: 333
    functionLinenumberEnd: 338
    functionName: pdns::ProtoZero::Message::setEDEText
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 0
    functionsReached:
    - pdns::ProtoZero::Message::add_string
    - std::string::empty
    linkageType: ''
    returnType: void
    signature: void setEDEText(const std::string edeText)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_bytes
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:342,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:342,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:342,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:342,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' traceID'
    argTypes:
    - std::array<uint8_t, 16>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 343
      start: 340
    functionDepth: 0
    functionLinenumber: 340
    functionLinenumberEnd: 343
    functionName: pdns::ProtoZero::Message::setOpenTelemetryTraceID
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 1
    functionsReached:
    - reinterpret_cast<const char*>
    - pdns::ProtoZero::Message::add_bytes
    - size
    - data
    linkageType: ''
    returnType: void
    signature: void setOpenTelemetryTraceID(const std::array<uint8_t, 16>& traceID)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:347,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 348
      start: 345
    functionDepth: 0
    functionLinenumber: 345
    functionLinenumberEnd: 348
    functionName: pdns::ProtoZero::Message::startResponse
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 2
    functionsReached:
    - static_cast<protozero::pbf_tag_type>
    linkageType: ''
    returnType: void
    signature: void startResponse()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: commit
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:352,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 353
      start: 350
    functionDepth: 0
    functionLinenumber: 350
    functionLinenumberEnd: 353
    functionName: pdns::ProtoZero::Message::commitResponse
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 1
    functionsReached:
    - commit
    linkageType: ''
    returnType: void
    signature: void commitResponse()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint32
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:357,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:357,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rcode
    argTypes:
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 358
      start: 355
    functionDepth: 0
    functionLinenumber: 355
    functionLinenumberEnd: 358
    functionName: pdns::ProtoZero::Message::setResponseCode
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 2
    functionsReached:
    - static_cast<protozero::pbf_tag_type>
    - pdns::ProtoZero::Message::add_uint32
    linkageType: ''
    returnType: void
    signature: void setResponseCode(uint8_t rcode)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint32
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:363,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:363,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 364
      start: 360
    functionDepth: 0
    functionLinenumber: 360
    functionLinenumberEnd: 364
    functionName: pdns::ProtoZero::Message::setNetworkErrorResponseCode
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 0
    functionsReached:
    - static_cast<protozero::pbf_tag_type>
    - pdns::ProtoZero::Message::add_uint32
    linkageType: ''
    returnType: void
    signature: void setNetworkErrorResponseCode()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_string
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:368,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:368,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' policy'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 369
      start: 366
    functionDepth: 0
    functionLinenumber: 366
    functionLinenumberEnd: 369
    functionName: pdns::ProtoZero::Message::setAppliedPolicy
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 0
    functionsReached:
    - pdns::ProtoZero::Message::add_string
    - static_cast<protozero::pbf_tag_type>
    linkageType: ''
    returnType: void
    signature: void setAppliedPolicy(const std::string& policy)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::addPolicyTag
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:374,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - ' tags'
    argTypes:
    - std::unordered_set<std::string>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 376
      start: 371
    functionDepth: 0
    functionLinenumber: 371
    functionLinenumberEnd: 376
    functionName: pdns::ProtoZero::Message::addPolicyTags
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 0
    functionsReached:
    - pdns::ProtoZero::Message::addPolicyTag
    linkageType: ''
    returnType: void
    signature: void addPolicyTags(const std::unordered_set<std::string>& tags)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_string
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:380,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:380,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' tag'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 381
      start: 378
    functionDepth: 0
    functionLinenumber: 378
    functionLinenumberEnd: 381
    functionName: pdns::ProtoZero::Message::addPolicyTag
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 8
    functionsReached:
    - pdns::ProtoZero::Message::add_string
    - static_cast<protozero::pbf_tag_type>
    linkageType: ''
    returnType: void
    signature: void addPolicyTag(const string& tag)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint32
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:385,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:385,1
    - Dst: pdns::ProtoZero::Message::add_uint32
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:386,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:386,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - sec
    - usec
    argTypes:
    - uint32_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 387
      start: 383
    functionDepth: 0
    functionLinenumber: 383
    functionLinenumberEnd: 387
    functionName: pdns::ProtoZero::Message::setQueryTime
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 2
    functionsReached:
    - static_cast<protozero::pbf_tag_type>
    - pdns::ProtoZero::Message::add_uint32
    linkageType: ''
    returnType: void
    signature: void setQueryTime(uint32_t sec, uint32_t usec)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_enum
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:399,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:399,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' writer'
    - type
    - value
    argTypes:
    - protozero::pbf_writer
    - Field
    - int32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 400
      start: 397
    functionDepth: 0
    functionLinenumber: 397
    functionLinenumberEnd: 400
    functionName: pdns::ProtoZero::Message::add_enum
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 35
    functionsReached:
    - static_cast<protozero::pbf_tag_type>
    - pdns::ProtoZero::Message::add_enum
    linkageType: ''
    returnType: void
    signature: void add_enum(protozero::pbf_writer& writer, Field type, int32_t value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_bool
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:404,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:404,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' writer'
    - type
    - value
    argTypes:
    - protozero::pbf_writer
    - Field
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 405
      start: 402
    functionDepth: 0
    functionLinenumber: 402
    functionLinenumberEnd: 405
    functionName: pdns::ProtoZero::Message::add_bool
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 21
    functionsReached:
    - static_cast<protozero::pbf_tag_type>
    - pdns::ProtoZero::Message::add_bool
    linkageType: ''
    returnType: void
    signature: void add_bool(protozero::pbf_writer& writer, Field type, bool value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint32
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:409,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:409,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' writer'
    - type
    - value
    argTypes:
    - protozero::pbf_writer
    - Field
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 410
      start: 407
    functionDepth: 0
    functionLinenumber: 407
    functionLinenumberEnd: 410
    functionName: pdns::ProtoZero::Message::add_uint32
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 84
    functionsReached:
    - static_cast<protozero::pbf_tag_type>
    - pdns::ProtoZero::Message::add_uint32
    linkageType: ''
    returnType: void
    signature: void add_uint32(protozero::pbf_writer& writer, Field type, uint32_t
      value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint64
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:414,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:414,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' writer'
    - type
    - value
    argTypes:
    - protozero::pbf_writer
    - Field
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 415
      start: 412
    functionDepth: 0
    functionLinenumber: 412
    functionLinenumberEnd: 415
    functionName: pdns::ProtoZero::Message::add_uint64
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 21
    functionsReached:
    - pdns::ProtoZero::Message::add_uint64
    - static_cast<protozero::pbf_tag_type>
    linkageType: ''
    returnType: void
    signature: void add_uint64(protozero::pbf_writer& writer, Field type, uint64_t
      value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_bytes
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:419,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:419,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - ' writer'
    - type
    - data
    - len
    argTypes:
    - protozero::pbf_writer
    - Field
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 420
      start: 417
    functionDepth: 0
    functionLinenumber: 417
    functionLinenumberEnd: 420
    functionName: pdns::ProtoZero::Message::add_bytes
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 35
    functionsReached:
    - static_cast<protozero::pbf_tag_type>
    - pdns::ProtoZero::Message::add_bytes
    linkageType: ''
    returnType: void
    signature: void add_bytes(protozero::pbf_writer& writer, Field type, const char*
      data, size_t len)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_string
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:424,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:424,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' writer'
    - type
    - ' str'
    argTypes:
    - protozero::pbf_writer
    - Field
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 425
      start: 422
    functionDepth: 0
    functionLinenumber: 422
    functionLinenumberEnd: 425
    functionName: pdns::ProtoZero::Message::add_string
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 56
    functionsReached:
    - pdns::ProtoZero::Message::add_string
    - static_cast<protozero::pbf_tag_type>
    linkageType: ''
    returnType: void
    signature: void add_string(protozero::pbf_writer& writer, Field type, const std::string&
      str)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' buffer'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 154
      start: 151
    functionDepth: 0
    functionLinenumber: 151
    functionLinenumberEnd: 154
    functionName: pdns::ProtoZero::Message::Message
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Message(std::string& buffer)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 155
    functionDepth: 0
    functionLinenumber: 155
    functionLinenumberEnd: 155
    functionName: ~Message()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~Message()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 156
      start: 156
    functionDepth: 0
    functionLinenumber: 156
    functionLinenumberEnd: 156
    functionName: pdns::ProtoZero::Message::Message
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Message(const Message&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 157
      start: 157
    functionDepth: 0
    functionLinenumber: 157
    functionLinenumberEnd: 157
    functionName: pdns::ProtoZero::Message::Message
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Message(Message&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 158
      start: 158
    functionDepth: 0
    functionLinenumber: 158
    functionLinenumberEnd: 158
    functionName: '& operator=(const Message&)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Message
    signature: Message & operator=(const Message&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 159
      start: 159
    functionDepth: 0
    functionLinenumber: 159
    functionLinenumberEnd: 159
    functionName: '& operator=(Message&&)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Message
    signature: Message & operator=(Message&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_enum
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:166,1
    - Dst: static_cast<int32_t>
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:166,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - mtype
    argTypes:
    - MessageType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 167
      start: 164
    functionDepth: 0
    functionLinenumber: 164
    functionLinenumberEnd: 167
    functionName: pdns::ProtoZero::Message::setType
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 5
    functionsReached:
    - static_cast<int32_t>
    - pdns::ProtoZero::Message::add_enum
    linkageType: ''
    returnType: void
    signature: void setType(MessageType mtype)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_enum
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:171,1
    - Dst: static_cast<int32_t>
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:171,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - version
    argTypes:
    - HTTPVersion
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 172
      start: 169
    functionDepth: 0
    functionLinenumber: 169
    functionLinenumberEnd: 172
    functionName: pdns::ProtoZero::Message::setHTTPVersion
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 1
    functionsReached:
    - static_cast<int32_t>
    - pdns::ProtoZero::Message::add_enum
    linkageType: ''
    returnType: void
    signature: void setHTTPVersion(HTTPVersion version)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_bytes
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:176,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:176,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:176,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:176,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' uniqueId'
    argTypes:
    - boost::uuids::uuid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 177
      start: 174
    functionDepth: 0
    functionLinenumber: 174
    functionLinenumberEnd: 177
    functionName: pdns::ProtoZero::Message::setMessageIdentity
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 0
    functionsReached:
    - reinterpret_cast<const char*>
    - pdns::ProtoZero::Message::add_bytes
    - size
    - begin
    linkageType: ''
    returnType: void
    signature: void setMessageIdentity(const boost::uuids::uuid& uniqueId)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_bytes
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:181,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:181,1
    - Dst: length
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:181,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' serverIdentity'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 182
      start: 179
    functionDepth: 0
    functionLinenumber: 179
    functionLinenumberEnd: 182
    functionName: pdns::ProtoZero::Message::setServerIdentity
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 1
    functionsReached:
    - length
    - pdns::ProtoZero::Message::add_bytes
    - data
    linkageType: ''
    returnType: void
    signature: void setServerIdentity(const std::string& serverIdentity)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_enum
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:186,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - family
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 187
      start: 184
    functionDepth: 0
    functionLinenumber: 184
    functionLinenumberEnd: 187
    functionName: pdns::ProtoZero::Message::setSocketFamily
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 0
    functionsReached:
    - pdns::ProtoZero::Message::add_enum
    linkageType: ''
    returnType: void
    signature: void setSocketFamily(int family)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_enum
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:191,1
    - Dst: static_cast<int32_t>
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:191,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - proto
    argTypes:
    - TransportProtocol
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 192
      start: 189
    functionDepth: 0
    functionLinenumber: 189
    functionLinenumberEnd: 192
    functionName: pdns::ProtoZero::Message::setSocketProtocol
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 0
    functionsReached:
    - static_cast<int32_t>
    - pdns::ProtoZero::Message::add_enum
    linkageType: ''
    returnType: void
    signature: void setSocketProtocol(TransportProtocol proto)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: encodeComboAddress
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:196,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:196,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' address'
    argTypes:
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 197
      start: 194
    functionDepth: 1
    functionLinenumber: 194
    functionLinenumberEnd: 197
    functionName: pdns::ProtoZero::Message::setFrom
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 0
    functionsReached:
    - static_cast<protozero::pbf_tag_type>
    - encodeComboAddress
    linkageType: ''
    returnType: void
    signature: void setFrom(const ComboAddress& address)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: encodeComboAddress
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:201,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:201,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' address'
    argTypes:
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 202
      start: 199
    functionDepth: 1
    functionLinenumber: 199
    functionLinenumberEnd: 202
    functionName: pdns::ProtoZero::Message::setTo
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 0
    functionsReached:
    - static_cast<protozero::pbf_tag_type>
    - encodeComboAddress
    linkageType: ''
    returnType: void
    signature: void setTo(const ComboAddress& address)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint64
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:206,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - len
    argTypes:
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 207
      start: 204
    functionDepth: 0
    functionLinenumber: 204
    functionLinenumberEnd: 207
    functionName: pdns::ProtoZero::Message::setInBytes
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 0
    functionsReached:
    - pdns::ProtoZero::Message::add_uint64
    linkageType: ''
    returnType: void
    signature: void setInBytes(uint64_t len)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: gettime
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:212,1
    - Dst: pdns::ProtoZero::Message::setTime
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:214,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 215
      start: 209
    functionDepth: 0
    functionLinenumber: 209
    functionLinenumberEnd: 215
    functionName: pdns::ProtoZero::Message::setTime
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 10
    functionsReached:
    - pdns::ProtoZero::Message::setTime
    - gettime
    linkageType: ''
    returnType: void
    signature: void setTime()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint32
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:220,1
    - Dst: pdns::ProtoZero::Message::add_uint32
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:221,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - sec
    - usec
    argTypes:
    - time_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 222
      start: 217
    functionDepth: 0
    functionLinenumber: 217
    functionLinenumberEnd: 222
    functionName: pdns::ProtoZero::Message::setTime
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 10
    functionsReached:
    - pdns::ProtoZero::Message::add_uint32
    linkageType: ''
    returnType: void
    signature: void setTime(time_t sec, uint32_t usec)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint32
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:226,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:226,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - qid
    argTypes:
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 227
      start: 224
    functionDepth: 0
    functionLinenumber: 224
    functionLinenumberEnd: 227
    functionName: pdns::ProtoZero::Message::setId
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 0
    functionsReached:
    - ntohs
    - pdns::ProtoZero::Message::add_uint32
    linkageType: ''
    returnType: void
    signature: void setId(uint16_t qid)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:231,1
    - Dst: encodeDNSName
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:232,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:232,1
    - Dst: protozero::pbf_writer::add_uint32
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:233,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:233,1
    - Dst: protozero::pbf_writer::add_uint32
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:234,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:234,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - ' qname'
    - qtype
    - qclass
    argTypes:
    - DNSName
    - uint16_t
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 235
      start: 229
    functionDepth: 0
    functionLinenumber: 229
    functionLinenumberEnd: 235
    functionName: pdns::ProtoZero::Message::setQuestion
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 2
    functionsReached:
    - static_cast<protozero::pbf_tag_type>
    - protozero::pbf_writer::add_uint32
    - encodeDNSName
    linkageType: ''
    returnType: void
    signature: void setQuestion(const DNSName& qname, uint16_t qtype, uint16_t qclass)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:239,1
    - Dst: protozero::pbf_writer::add_string
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:240,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:240,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:241,1
    - Dst: protozero::pbf_writer::add_string
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:243,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:243,1
    - Dst: protozero::pbf_writer::add_uint64
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:246,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:246,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - ' key'
    - ' stringVal'
    - ' intVal'
    argTypes:
    - std::string
    - std::unordered_set<std::string>
    - std::unordered_set<int64_t>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 248
      start: 237
    functionDepth: 0
    functionLinenumber: 237
    functionLinenumberEnd: 248
    functionName: pdns::ProtoZero::Message::setMeta
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 1
    functionsReached:
    - protozero::pbf_writer::add_uint64
    - static_cast<protozero::pbf_tag_type>
    - protozero::pbf_writer::add_string
    linkageType: ''
    returnType: void
    signature: void setMeta(const std::string& key, const std::unordered_set<std::string>&
      stringVal, const std::unordered_set<int64_t>& intVal)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: encodeNetmask
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:252,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:252,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' netmask'
    - mask
    argTypes:
    - Netmask
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 253
      start: 250
    functionDepth: 1
    functionLinenumber: 250
    functionLinenumberEnd: 253
    functionName: pdns::ProtoZero::Message::setEDNSSubnet
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 1
    functionsReached:
    - static_cast<protozero::pbf_tag_type>
    - encodeNetmask
    linkageType: ''
    returnType: void
    signature: void setEDNSSubnet(const Netmask& netmask, uint8_t mask)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:257,1
    - Dst: pdns::ProtoZero::Message::add_string
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:258,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ' req'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 260
      start: 255
    functionDepth: 0
    functionLinenumber: 255
    functionLinenumberEnd: 260
    functionName: pdns::ProtoZero::Message::setRequestorId
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 1
    functionsReached:
    - empty
    - pdns::ProtoZero::Message::add_string
    linkageType: ''
    returnType: void
    signature: void setRequestorId(const std::string& req)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_bytes
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:264,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:264,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:264,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:264,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' uniqueId'
    argTypes:
    - boost::uuids::uuid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 265
      start: 262
    functionDepth: 0
    functionLinenumber: 262
    functionLinenumberEnd: 265
    functionName: pdns::ProtoZero::Message::setInitialRequestID
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 0
    functionsReached:
    - reinterpret_cast<const char*>
    - pdns::ProtoZero::Message::add_bytes
    - size
    - begin
    linkageType: ''
    returnType: void
    signature: void setInitialRequestID(const boost::uuids::uuid& uniqueId)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:269,1
    - Dst: pdns::ProtoZero::Message::add_string
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:270,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ' deviceId'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 272
      start: 267
    functionDepth: 0
    functionLinenumber: 267
    functionLinenumberEnd: 272
    functionName: pdns::ProtoZero::Message::setDeviceId
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 1
    functionsReached:
    - empty
    - pdns::ProtoZero::Message::add_string
    linkageType: ''
    returnType: void
    signature: void setDeviceId(const std::string& deviceId)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_bool
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:276,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - nod
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 277
      start: 274
    functionDepth: 0
    functionLinenumber: 274
    functionLinenumberEnd: 277
    functionName: pdns::ProtoZero::Message::setNewlyObservedDomain
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 0
    functionsReached:
    - pdns::ProtoZero::Message::add_bool
    linkageType: ''
    returnType: void
    signature: void setNewlyObservedDomain(bool nod)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:281,1
    - Dst: pdns::ProtoZero::Message::add_string
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:282,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ' name'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 284
      start: 279
    functionDepth: 0
    functionLinenumber: 279
    functionLinenumberEnd: 284
    functionName: pdns::ProtoZero::Message::setDeviceName
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 1
    functionsReached:
    - empty
    - pdns::ProtoZero::Message::add_string
    linkageType: ''
    returnType: void
    signature: void setDeviceName(const std::string& name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint32
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:288,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - port
    argTypes:
    - in_port_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 289
      start: 286
    functionDepth: 0
    functionLinenumber: 286
    functionLinenumberEnd: 289
    functionName: pdns::ProtoZero::Message::setFromPort
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 0
    functionsReached:
    - pdns::ProtoZero::Message::add_uint32
    linkageType: ''
    returnType: void
    signature: void setFromPort(in_port_t port)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint32
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:293,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - port
    argTypes:
    - in_port_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 294
      start: 291
    functionDepth: 0
    functionLinenumber: 291
    functionLinenumberEnd: 294
    functionName: pdns::ProtoZero::Message::setToPort
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 0
    functionsReached:
    - pdns::ProtoZero::Message::add_uint32
    linkageType: ''
    returnType: void
    signature: void setToPort(in_port_t port)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint64
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:298,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - wid
    argTypes:
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 299
      start: 296
    functionDepth: 0
    functionLinenumber: 296
    functionLinenumberEnd: 299
    functionName: pdns::ProtoZero::Message::setWorkerId
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 0
    functionsReached:
    - pdns::ProtoZero::Message::add_uint64
    linkageType: ''
    returnType: void
    signature: void setWorkerId(uint64_t wid)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_bool
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:303,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - hit
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 304
      start: 301
    functionDepth: 0
    functionLinenumber: 301
    functionLinenumberEnd: 304
    functionName: pdns::ProtoZero::Message::setPacketCacheHit
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 1
    functionsReached:
    - pdns::ProtoZero::Message::add_bool
    linkageType: ''
    returnType: void
    signature: void setPacketCacheHit(bool hit)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint32
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:308,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - num
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 309
      start: 306
    functionDepth: 0
    functionLinenumber: 306
    functionLinenumberEnd: 309
    functionName: pdns::ProtoZero::Message::setOutgoingQueries
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 1
    functionsReached:
    - pdns::ProtoZero::Message::add_uint32
    linkageType: ''
    returnType: void
    signature: void setOutgoingQueries(uint32_t num)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint32
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:313,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - flags
    argTypes:
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 314
      start: 311
    functionDepth: 0
    functionLinenumber: 311
    functionLinenumberEnd: 314
    functionName: pdns::ProtoZero::Message::setHeaderFlags
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 1
    functionsReached:
    - pdns::ProtoZero::Message::add_uint32
    linkageType: ''
    returnType: void
    signature: void setHeaderFlags(uint16_t flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint32
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:318,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - version
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 319
      start: 316
    functionDepth: 0
    functionLinenumber: 316
    functionLinenumberEnd: 319
    functionName: pdns::ProtoZero::Message::setEDNSVersion
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 0
    functionsReached:
    - pdns::ProtoZero::Message::add_uint32
    linkageType: ''
    returnType: void
    signature: void setEDNSVersion(uint32_t version)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:323,1
    - Dst: pdns::ProtoZero::Message::add_string
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:324,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ' data'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 326
      start: 321
    functionDepth: 0
    functionLinenumber: 321
    functionLinenumberEnd: 326
    functionName: pdns::ProtoZero::Message::setOpenTelemetryData
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 2
    functionsReached:
    - empty
    - pdns::ProtoZero::Message::add_string
    linkageType: ''
    returnType: void
    signature: void setOpenTelemetryData(const std::string& data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint32
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:330,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ede
    argTypes:
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 331
      start: 328
    functionDepth: 0
    functionLinenumber: 328
    functionLinenumberEnd: 331
    functionName: pdns::ProtoZero::Message::setEDE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 0
    functionsReached:
    - pdns::ProtoZero::Message::add_uint32
    linkageType: ''
    returnType: void
    signature: void setEDE(const uint16_t ede)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::string::empty
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:335,1
    - Dst: pdns::ProtoZero::Message::add_string
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:336,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - edeText
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 338
      start: 333
    functionDepth: 0
    functionLinenumber: 333
    functionLinenumberEnd: 338
    functionName: pdns::ProtoZero::Message::setEDEText
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 0
    functionsReached:
    - pdns::ProtoZero::Message::add_string
    - std::string::empty
    linkageType: ''
    returnType: void
    signature: void setEDEText(const std::string edeText)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_bytes
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:342,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:342,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:342,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:342,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' traceID'
    argTypes:
    - std::array<uint8_t, 16>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 343
      start: 340
    functionDepth: 0
    functionLinenumber: 340
    functionLinenumberEnd: 343
    functionName: pdns::ProtoZero::Message::setOpenTelemetryTraceID
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 1
    functionsReached:
    - reinterpret_cast<const char*>
    - pdns::ProtoZero::Message::add_bytes
    - size
    - data
    linkageType: ''
    returnType: void
    signature: void setOpenTelemetryTraceID(const std::array<uint8_t, 16>& traceID)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:347,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 348
      start: 345
    functionDepth: 0
    functionLinenumber: 345
    functionLinenumberEnd: 348
    functionName: pdns::ProtoZero::Message::startResponse
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 2
    functionsReached:
    - static_cast<protozero::pbf_tag_type>
    linkageType: ''
    returnType: void
    signature: void startResponse()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: commit
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:352,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 353
      start: 350
    functionDepth: 0
    functionLinenumber: 350
    functionLinenumberEnd: 353
    functionName: pdns::ProtoZero::Message::commitResponse
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 1
    functionsReached:
    - commit
    linkageType: ''
    returnType: void
    signature: void commitResponse()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint32
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:357,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:357,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rcode
    argTypes:
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 358
      start: 355
    functionDepth: 0
    functionLinenumber: 355
    functionLinenumberEnd: 358
    functionName: pdns::ProtoZero::Message::setResponseCode
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 2
    functionsReached:
    - static_cast<protozero::pbf_tag_type>
    - pdns::ProtoZero::Message::add_uint32
    linkageType: ''
    returnType: void
    signature: void setResponseCode(uint8_t rcode)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint32
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:363,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:363,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 364
      start: 360
    functionDepth: 0
    functionLinenumber: 360
    functionLinenumberEnd: 364
    functionName: pdns::ProtoZero::Message::setNetworkErrorResponseCode
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 0
    functionsReached:
    - static_cast<protozero::pbf_tag_type>
    - pdns::ProtoZero::Message::add_uint32
    linkageType: ''
    returnType: void
    signature: void setNetworkErrorResponseCode()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_string
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:368,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:368,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' policy'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 369
      start: 366
    functionDepth: 0
    functionLinenumber: 366
    functionLinenumberEnd: 369
    functionName: pdns::ProtoZero::Message::setAppliedPolicy
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 0
    functionsReached:
    - pdns::ProtoZero::Message::add_string
    - static_cast<protozero::pbf_tag_type>
    linkageType: ''
    returnType: void
    signature: void setAppliedPolicy(const std::string& policy)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::addPolicyTag
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:374,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - ' tags'
    argTypes:
    - std::unordered_set<std::string>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 376
      start: 371
    functionDepth: 0
    functionLinenumber: 371
    functionLinenumberEnd: 376
    functionName: pdns::ProtoZero::Message::addPolicyTags
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 0
    functionsReached:
    - pdns::ProtoZero::Message::addPolicyTag
    linkageType: ''
    returnType: void
    signature: void addPolicyTags(const std::unordered_set<std::string>& tags)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_string
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:380,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:380,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' tag'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 381
      start: 378
    functionDepth: 0
    functionLinenumber: 378
    functionLinenumberEnd: 381
    functionName: pdns::ProtoZero::Message::addPolicyTag
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 9
    functionsReached:
    - pdns::ProtoZero::Message::add_string
    - static_cast<protozero::pbf_tag_type>
    linkageType: ''
    returnType: void
    signature: void addPolicyTag(const string& tag)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint32
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:385,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:385,1
    - Dst: pdns::ProtoZero::Message::add_uint32
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:386,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:386,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - sec
    - usec
    argTypes:
    - uint32_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 387
      start: 383
    functionDepth: 0
    functionLinenumber: 383
    functionLinenumberEnd: 387
    functionName: pdns::ProtoZero::Message::setQueryTime
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 2
    functionsReached:
    - static_cast<protozero::pbf_tag_type>
    - pdns::ProtoZero::Message::add_uint32
    linkageType: ''
    returnType: void
    signature: void setQueryTime(uint32_t sec, uint32_t usec)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_enum
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:399,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:399,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' writer'
    - type
    - value
    argTypes:
    - protozero::pbf_writer
    - Field
    - int32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 400
      start: 397
    functionDepth: 0
    functionLinenumber: 397
    functionLinenumberEnd: 400
    functionName: pdns::ProtoZero::Message::add_enum
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 40
    functionsReached:
    - static_cast<protozero::pbf_tag_type>
    - pdns::ProtoZero::Message::add_enum
    linkageType: ''
    returnType: void
    signature: void add_enum(protozero::pbf_writer& writer, Field type, int32_t value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_bool
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:404,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:404,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' writer'
    - type
    - value
    argTypes:
    - protozero::pbf_writer
    - Field
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 405
      start: 402
    functionDepth: 0
    functionLinenumber: 402
    functionLinenumberEnd: 405
    functionName: pdns::ProtoZero::Message::add_bool
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 24
    functionsReached:
    - static_cast<protozero::pbf_tag_type>
    - pdns::ProtoZero::Message::add_bool
    linkageType: ''
    returnType: void
    signature: void add_bool(protozero::pbf_writer& writer, Field type, bool value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint32
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:409,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:409,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' writer'
    - type
    - value
    argTypes:
    - protozero::pbf_writer
    - Field
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 410
      start: 407
    functionDepth: 0
    functionLinenumber: 407
    functionLinenumberEnd: 410
    functionName: pdns::ProtoZero::Message::add_uint32
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 96
    functionsReached:
    - static_cast<protozero::pbf_tag_type>
    - pdns::ProtoZero::Message::add_uint32
    linkageType: ''
    returnType: void
    signature: void add_uint32(protozero::pbf_writer& writer, Field type, uint32_t
      value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint64
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:414,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:414,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' writer'
    - type
    - value
    argTypes:
    - protozero::pbf_writer
    - Field
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 415
      start: 412
    functionDepth: 0
    functionLinenumber: 412
    functionLinenumberEnd: 415
    functionName: pdns::ProtoZero::Message::add_uint64
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 24
    functionsReached:
    - pdns::ProtoZero::Message::add_uint64
    - static_cast<protozero::pbf_tag_type>
    linkageType: ''
    returnType: void
    signature: void add_uint64(protozero::pbf_writer& writer, Field type, uint64_t
      value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_bytes
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:419,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:419,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - ' writer'
    - type
    - data
    - len
    argTypes:
    - protozero::pbf_writer
    - Field
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 420
      start: 417
    functionDepth: 0
    functionLinenumber: 417
    functionLinenumberEnd: 420
    functionName: pdns::ProtoZero::Message::add_bytes
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 40
    functionsReached:
    - static_cast<protozero::pbf_tag_type>
    - pdns::ProtoZero::Message::add_bytes
    linkageType: ''
    returnType: void
    signature: void add_bytes(protozero::pbf_writer& writer, Field type, const char*
      data, size_t len)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_string
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:424,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/dnsdistdist/protozero.hh:424,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' writer'
    - type
    - ' str'
    argTypes:
    - protozero::pbf_writer
    - Field
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 425
      start: 422
    functionDepth: 0
    functionLinenumber: 422
    functionLinenumberEnd: 425
    functionName: pdns::ProtoZero::Message::add_string
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero.hh
    functionUses: 64
    functionsReached:
    - pdns::ProtoZero::Message::add_string
    - static_cast<protozero::pbf_tag_type>
    linkageType: ''
    returnType: void
    signature: void add_string(protozero::pbf_writer& writer, Field type, const std::string&
      str)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: OID_LENGTH
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:88,1
    - Dst: find
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:93,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:94,1
    - Dst: std::get_if<pdns::stat_t*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:98,1
    - Dst: SNMPAgent::setCounter64Value
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:99,1
    - Dst: load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:99,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 4
    argNames:
    - handler
    - reginfo
    - reqinfo
    - requests
    argTypes:
    - netsnmp_mib_handler*
    - netsnmp_handler_registration*
    - netsnmp_agent_request_info*
    - netsnmp_request_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 78
    functionDepth: 0
    functionLinenumber: 78
    functionLinenumberEnd: 103
    functionName: handleCounter64Stats
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc
    functionUses: 0
    functionsReached:
    - load
    - end
    - OID_LENGTH
    - std::get_if<pdns::stat_t*>
    - SNMPAgent::setCounter64Value
    - find
    linkageType: ''
    returnType: int
    signature: "int handleCounter64Stats(netsnmp_mib_handler* handler,\n                                netsnmp_handler_registration*
      reginfo,\n                                netsnmp_agent_request_info* reqinfo,\n
      \                               netsnmp_request_info* requests)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:107,1
    - Dst: OID_LENGTH
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:107,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:108,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:108,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:109,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:109,1
    - Dst: find
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:113,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:113,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:113,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:113,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:114,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:114,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:115,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:115,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:119,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:119,1
    - Dst: netsnmp_register_scalar
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:120,1
    - Dst: netsnmp_create_handler_registration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:120,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:122,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:123,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 3
    argNames:
    - name
    - ' statOID'
    - ptr
    argTypes:
    - char*
    - OIDStat
    - pdns::stat_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 125
      start: 105
    functionDepth: 1
    functionLinenumber: 105
    functionLinenumberEnd: 125
    functionName: registerCounter64Stat
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc
    functionUses: 0
    functionsReached:
    - errlog
    - SLOG
    - Logging::Loggable
    - netsnmp_register_scalar
    - end
    - size
    - OID_LENGTH
    - netsnmp_create_handler_registration
    - dnsdist::logging::getTopLogger
    - data
    - at
    - find
    linkageType: ''
    returnType: void
    signature: void registerCounter64Stat(const char* name, const OIDStat& statOID,
      pdns::stat_t* ptr)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: OID_LENGTH
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:137,1
    - Dst: find
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:142,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:143,1
    - Dst: std::get_if<pdns::stat_double_t*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:147,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:148,1
    - Dst: load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:148,1
    - Dst: snmp_set_var_typed_value
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:149,1
    - Dst: std::string::c_str
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:151,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:152,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 4
    argNames:
    - handler
    - reginfo
    - reqinfo
    - requests
    argTypes:
    - netsnmp_mib_handler*
    - netsnmp_handler_registration*
    - netsnmp_agent_request_info*
    - netsnmp_request_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 157
      start: 127
    functionDepth: 0
    functionLinenumber: 127
    functionLinenumberEnd: 157
    functionName: handleFloatStats
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc
    functionUses: 0
    functionsReached:
    - load
    - std::to_string
    - std::string::c_str
    - end
    - std::get_if<pdns::stat_double_t*>
    - snmp_set_var_typed_value
    - OID_LENGTH
    - std::string::size
    - find
    linkageType: ''
    returnType: int
    signature: "int handleFloatStats(netsnmp_mib_handler* handler,\n                            netsnmp_handler_registration*
      reginfo,\n                            netsnmp_agent_request_info* reqinfo,\n
      \                           netsnmp_request_info* requests)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:161,1
    - Dst: OID_LENGTH
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:161,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:162,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:162,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:163,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:163,1
    - Dst: find
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:167,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:167,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:167,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:167,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:168,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:168,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:169,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:169,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:173,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:173,1
    - Dst: netsnmp_register_scalar
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:174,1
    - Dst: netsnmp_create_handler_registration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:174,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:176,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:177,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 3
    argNames:
    - name
    - ' statOID'
    - ptr
    argTypes:
    - char*
    - OIDStat
    - pdns::stat_double_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 179
      start: 159
    functionDepth: 1
    functionLinenumber: 159
    functionLinenumberEnd: 179
    functionName: registerFloatStat
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc
    functionUses: 0
    functionsReached:
    - errlog
    - SLOG
    - Logging::Loggable
    - netsnmp_register_scalar
    - end
    - size
    - OID_LENGTH
    - netsnmp_create_handler_registration
    - dnsdist::logging::getTopLogger
    - data
    - at
    - find
    linkageType: ''
    returnType: void
    signature: void registerFloatStat(const char* name, const OIDStat& statOID, pdns::stat_double_t*
      ptr)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: OID_LENGTH
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:191,1
    - Dst: find
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:196,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:197,1
    - Dst: std::get_if<dnsdist::metrics::Stats::statfunction_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:202,1
    - Dst: SNMPAgent::setCounter64Value
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:203,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 4
    argNames:
    - handler
    - reginfo
    - reqinfo
    - requests
    argTypes:
    - netsnmp_mib_handler*
    - netsnmp_handler_registration*
    - netsnmp_agent_request_info*
    - netsnmp_request_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 204
      start: 181
    functionDepth: 0
    functionLinenumber: 181
    functionLinenumberEnd: 204
    functionName: handleGauge64Stats
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc
    functionUses: 0
    functionsReached:
    - end
    - std::get_if<dnsdist::metrics::Stats::statfunction_t>
    - OID_LENGTH
    - SNMPAgent::setCounter64Value
    - find
    linkageType: ''
    returnType: int
    signature: "int handleGauge64Stats(netsnmp_mib_handler* handler,\n                              netsnmp_handler_registration*
      reginfo,\n                              netsnmp_agent_request_info* reqinfo,\n
      \                             netsnmp_request_info* requests)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:208,1
    - Dst: OID_LENGTH
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:208,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:209,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:209,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:210,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:210,1
    - Dst: find
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:214,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:214,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:214,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:214,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:215,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:215,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:216,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:216,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:220,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:220,1
    - Dst: netsnmp_register_scalar
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:221,1
    - Dst: netsnmp_create_handler_registration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:221,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:223,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:224,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 3
    argNames:
    - name
    - ' statOID'
    - ' ptr'
    argTypes:
    - char*
    - OIDStat
    - dnsdist::metrics::Stats::statfunction_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 226
      start: 206
    functionDepth: 1
    functionLinenumber: 206
    functionLinenumberEnd: 226
    functionName: registerGauge64Stat
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc
    functionUses: 0
    functionsReached:
    - errlog
    - SLOG
    - Logging::Loggable
    - netsnmp_register_scalar
    - end
    - size
    - OID_LENGTH
    - netsnmp_create_handler_registration
    - dnsdist::logging::getTopLogger
    - data
    - at
    - find
    linkageType: ''
    returnType: void
    signature: void registerGauge64Stat(const char* name, const OIDStat& statOID,
      const dnsdist::metrics::Stats::statfunction_t& ptr)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:273,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:277,1
    - Dst: snmp_set_var_typed_integer
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:278,1
    - Dst: static_cast<long>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:278,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 4
    argNames:
    - loop_context
    - my_data_context
    - put_index_data
    - mydata
    argTypes:
    - void**
    - void**
    - netsnmp_variable_list*
    - netsnmp_iterator_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 282
      start: 266
    functionDepth: 0
    functionLinenumber: 266
    functionLinenumberEnd: 282
    functionName: backendStatTable_get_next_data_point
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc
    functionUses: 0
    functionsReached:
    - snmp_set_var_typed_integer
    - static_cast<long>
    - size
    - get
    linkageType: ''
    returnType: netsnmp_variable_list
    signature: "netsnmp_variable_list * backendStatTable_get_next_data_point(void**
      loop_context,\n                                                                   void**
      my_data_context,\n                                                                   netsnmp_variable_list*
      put_index_data,\n                                                                   netsnmp_iterator_info*
      mydata)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::configuration::refreshLocalRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:293,1
    - Dst: clear
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:294,1
    - Dst: reserve
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:295,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:295,1
    - Dst: push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:297,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:297,1
    - Dst: backendStatTable_get_next_data_point
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:300,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 4
    argNames:
    - loop_context
    - data_context
    - put_index_data
    - data
    argTypes:
    - void**
    - void**
    - netsnmp_variable_list*
    - netsnmp_iterator_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 304
      start: 284
    functionDepth: 2
    functionLinenumber: 284
    functionLinenumberEnd: 304
    functionName: backendStatTable_get_first_data_point
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc
    functionUses: 0
    functionsReached:
    - std::move
    - push_back
    - size
    - reserve
    - backendStatTable_get_next_data_point
    - clear
    - dnsdist::configuration::refreshLocalRuntimeConfiguration
    linkageType: ''
    returnType: netsnmp_variable_list
    signature: "netsnmp_variable_list * backendStatTable_get_first_data_point(void**
      loop_context,\n                                                                    void**
      data_context,\n                                                                    netsnmp_variable_list*
      put_index_data,\n                                                                    netsnmp_iterator_info*
      data)"
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: netsnmp_extract_table_info
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:318,1
    - Dst: reinterpret_cast<const DownstreamState*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:320,1
    - Dst: netsnmp_extract_iterator_context
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:320,1
    - Dst: snmp_set_var_typed_value
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:327,1
    - Dst: auto*::getName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:329,1
    - Dst: auto*::getName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:330,1
    - Dst: SNMPAgent::setCounter64Value
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:333,1
    - Dst: static_cast<uint64_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:334,1
    - Dst: auto*::getRelevantLatencyUsec
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:334,1
    - Dst: SNMPAgent::setCounter64Value
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:337,1
    - Dst: SNMPAgent::setCounter64Value
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:341,1
    - Dst: auto*::outstanding::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:342,1
    - Dst: SNMPAgent::setCounter64Value
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:345,1
    - Dst: auto*::getQPSLimit
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:346,1
    - Dst: SNMPAgent::setCounter64Value
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:349,1
    - Dst: auto*::reuseds::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:349,1
    - Dst: auto*::getStatus
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:352,1
    - Dst: snmp_set_var_typed_value
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:353,1
    - Dst: std::string::c_str
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:355,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:356,1
    - Dst: auto*::d_config::remote::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:360,1
    - Dst: snmp_set_var_typed_value
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:361,1
    - Dst: std::string::c_str
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:363,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:364,1
    - Dst: std::string::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:370,1
    - Dst: snmp_set_var_typed_value
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:375,1
    - Dst: std::string::c_str
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:377,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:378,1
    - Dst: SNMPAgent::setCounter64Value
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:382,1
    - Dst: static_cast<uint64_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:382,1
    - Dst: auto*::queryLoad::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:382,1
    - Dst: SNMPAgent::setCounter64Value
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:385,1
    - Dst: auto*::queries::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:385,1
    - Dst: SNMPAgent::setCounter64Value
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:388,1
    - Dst: netsnmp_set_request_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:391,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 62
    argCount: 4
    argNames:
    - handler
    - reginfo
    - reqinfo
    - requests
    argTypes:
    - netsnmp_mib_handler*
    - netsnmp_handler_registration*
    - netsnmp_agent_request_info*
    - netsnmp_request_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 400
      start: 306
    functionDepth: 1
    functionLinenumber: 306
    functionLinenumberEnd: 400
    functionName: backendStatTable_handler
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc
    functionUses: 0
    functionsReached:
    - auto*::getStatus
    - auto*::reuseds::load
    - netsnmp_extract_table_info
    - auto*::d_config::remote::toStringWithPort
    - netsnmp_extract_iterator_context
    - std::string::size
    - SNMPAgent::setCounter64Value
    - reinterpret_cast<const DownstreamState*>
    - auto*::queryLoad::load
    - netsnmp_set_request_error
    - auto*::getQPSLimit
    - std::string::empty
    - auto*::outstanding::load
    - static_cast<uint64_t>
    - auto*::queries::load
    - auto*::getName
    - auto*::getRelevantLatencyUsec
    - std::string::c_str
    - snmp_set_var_typed_value
    linkageType: ''
    returnType: int
    signature: "int backendStatTable_handler(netsnmp_mib_handler* handler,\n                                    netsnmp_handler_registration*
      reginfo,\n                                    netsnmp_agent_request_info* reqinfo,\n
      \                                   netsnmp_request_info* requests)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: d_config::remote::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:406,1
    - Dst: getStatus
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:407,1
    - Dst: addSNMPTrapOID
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:410,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:411,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:412,1
    - Dst: snmp_varlist_add_variable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:414,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:415,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:416,1
    - Dst: getName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:418,1
    - Dst: getName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:419,1
    - Dst: snmp_varlist_add_variable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:421,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:422,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:423,1
    - Dst: string::c_str
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:425,1
    - Dst: string::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:426,1
    - Dst: snmp_varlist_add_variable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:428,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:429,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:430,1
    - Dst: string::c_str
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:432,1
    - Dst: string::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:433,1
    - Dst: sendTrap
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:435,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - ' dss'
    argTypes:
    - DownstreamState
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 439
      start: 403
    functionDepth: 1
    functionLinenumber: 403
    functionLinenumberEnd: 439
    functionName: DNSDistSNMPAgent::sendBackendStatusChangeTrap
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc
    functionUses: 0
    functionsReached:
    - string::c_str
    - string::size
    - addSNMPTrapOID
    - getName
    - getStatus
    - d_config::remote::toStringWithPort
    - size
    - sendTrap
    - data
    - snmp_varlist_add_variable
    linkageType: ''
    returnType: bool
    signature: bool DNSDistSNMPAgent::sendBackendStatusChangeTrap([[maybe_unused]]
      const DownstreamState& dss)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: addSNMPTrapOID
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:446,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:447,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:448,1
    - Dst: snmp_varlist_add_variable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:450,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:451,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:452,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:454,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:455,1
    - Dst: sendTrap
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:457,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - ' reason'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 461
      start: 441
    functionDepth: 0
    functionLinenumber: 441
    functionLinenumberEnd: 461
    functionName: DNSDistSNMPAgent::sendCustomTrap
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc
    functionUses: 0
    functionsReached:
    - addSNMPTrapOID
    - size
    - sendTrap
    - data
    - c_str
    - snmp_varlist_add_variable
    linkageType: ''
    returnType: bool
    signature: bool DNSDistSNMPAgent::sendCustomTrap([[maybe_unused]] const std::string&
      reason)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ids::origDest::toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:466,1
    - Dst: ids::origRemote::toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:467,1
    - Dst: ids::qname::toStringNoDot
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:468,1
    - Dst: ids::origRemote::isIPv4
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:469,1
    - Dst: overTCP
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:470,1
    - Dst: getHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:471,1
    - Dst: static_cast<uint32_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:472,1
    - Dst: getData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:472,1
    - Dst: static_cast<uint32_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:473,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:473,1
    - Dst: getHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:473,1
    - Dst: static_cast<uint32_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:474,1
    - Dst: static_cast<uint32_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:475,1
    - Dst: addSNMPTrapOID
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:479,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:480,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:481,1
    - Dst: snmp_varlist_add_variable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:483,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:484,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:485,1
    - Dst: reinterpret_cast<const u_char*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:488,1
    - Dst: snmp_varlist_add_variable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:491,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:492,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:493,1
    - Dst: reinterpret_cast<const u_char*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:496,1
    - Dst: snmp_varlist_add_variable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:499,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:500,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:501,1
    - Dst: std::string::c_str
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:503,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:504,1
    - Dst: snmp_varlist_add_variable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:506,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:507,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:508,1
    - Dst: std::string::c_str
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:510,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:511,1
    - Dst: snmp_varlist_add_variable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:513,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:514,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:515,1
    - Dst: reinterpret_cast<const u_char*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:518,1
    - Dst: snmp_varlist_add_variable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:521,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:522,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:523,1
    - Dst: reinterpret_cast<const u_char*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:526,1
    - Dst: snmp_varlist_add_variable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:529,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:530,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:531,1
    - Dst: reinterpret_cast<const u_char*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:534,1
    - Dst: snmp_varlist_add_variable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:537,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:538,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:539,1
    - Dst: std::string::c_str
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:541,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:542,1
    - Dst: snmp_varlist_add_variable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:544,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:545,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:546,1
    - Dst: reinterpret_cast<const u_char*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:549,1
    - Dst: snmp_varlist_add_variable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:552,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:553,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:554,1
    - Dst: reinterpret_cast<const u_char*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:557,1
    - Dst: snmp_varlist_add_variable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:560,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:561,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:562,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:564,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:565,1
    - Dst: sendTrap
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:567,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 15
    argCount: 2
    argNames:
    - ' dnsQuestion'
    - ' reason'
    argTypes:
    - DNSQuestion
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 571
      start: 463
    functionDepth: 1
    functionLinenumber: 463
    functionLinenumberEnd: 571
    functionName: DNSDistSNMPAgent::sendDNSTrap
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc
    functionUses: 0
    functionsReached:
    - ids::origRemote::isIPv4
    - ids::origDest::toString
    - ids::origRemote::toString
    - addSNMPTrapOID
    - ntohs
    - std::string::size
    - std::string::c_str
    - c_str
    - size
    - static_cast<uint32_t>
    - snmp_varlist_add_variable
    - ids::qname::toStringNoDot
    - reinterpret_cast<const u_char*>
    - sendTrap
    - overTCP
    - data
    - getHeader
    - getData
    linkageType: ''
    returnType: bool
    signature: bool DNSDistSNMPAgent::sendDNSTrap([[maybe_unused]] const DNSQuestion&
      dnsQuestion, [[maybe_unused]] const std::string& reason)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: registerCounter64Stat
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:577,1
    - Dst: registerCounter64Stat
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:578,1
    - Dst: registerCounter64Stat
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:579,1
    - Dst: registerCounter64Stat
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:580,1
    - Dst: registerCounter64Stat
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:581,1
    - Dst: registerCounter64Stat
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:582,1
    - Dst: registerCounter64Stat
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:583,1
    - Dst: registerCounter64Stat
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:584,1
    - Dst: registerCounter64Stat
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:585,1
    - Dst: registerCounter64Stat
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:586,1
    - Dst: registerCounter64Stat
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:587,1
    - Dst: registerCounter64Stat
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:588,1
    - Dst: registerCounter64Stat
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:589,1
    - Dst: registerCounter64Stat
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:590,1
    - Dst: registerCounter64Stat
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:591,1
    - Dst: registerCounter64Stat
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:592,1
    - Dst: registerCounter64Stat
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:593,1
    - Dst: registerCounter64Stat
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:594,1
    - Dst: registerCounter64Stat
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:595,1
    - Dst: registerCounter64Stat
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:596,1
    - Dst: registerCounter64Stat
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:597,1
    - Dst: registerCounter64Stat
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:598,1
    - Dst: registerCounter64Stat
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:599,1
    - Dst: registerCounter64Stat
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:600,1
    - Dst: registerCounter64Stat
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:601,1
    - Dst: registerCounter64Stat
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:602,1
    - Dst: registerCounter64Stat
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:603,1
    - Dst: registerFloatStat
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:604,1
    - Dst: registerFloatStat
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:605,1
    - Dst: registerFloatStat
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:606,1
    - Dst: registerFloatStat
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:607,1
    - Dst: registerGauge64Stat
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:608,1
    - Dst: registerGauge64Stat
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:609,1
    - Dst: registerGauge64Stat
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:610,1
    - Dst: registerGauge64Stat
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:611,1
    - Dst: registerGauge64Stat
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:612,1
    - Dst: registerGauge64Stat
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:613,1
    - Dst: dnsdist::DynamicBlocks::getClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:613,1
    - Dst: registerGauge64Stat
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:614,1
    - Dst: securityStatus::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:614,1
    - Dst: registerGauge64Stat
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:615,1
    - Dst: SNMP_MALLOC_TYPEDEF
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:618,1
    - Dst: netsnmp_table_helper_add_indexes
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:619,1
    - Dst: SNMP_MALLOC_TYPEDEF
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:625,1
    - Dst: netsnmp_register_table_iterator
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:630,1
    - Dst: netsnmp_create_handler_registration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:630,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:632,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc:633,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 51
    argCount: 2
    argNames:
    - ' name'
    - ' daemonSocket'
    argTypes:
    - std::string
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 638
      start: 573
    functionDepth: 2
    functionLinenumber: 573
    functionLinenumberEnd: 638
    functionName: DNSDistSNMPAgent::DNSDistSNMPAgent
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc
    functionUses: 0
    functionsReached:
    - netsnmp_register_table_iterator
    - securityStatus::load
    - SNMP_MALLOC_TYPEDEF
    - registerCounter64Stat
    - dnsdist::DynamicBlocks::getClientAddressDynamicRules
    - registerGauge64Stat
    - size
    - registerFloatStat
    - netsnmp_create_handler_registration
    - netsnmp_table_helper_add_indexes
    - data
    linkageType: ''
    returnType: void
    signature: void DNSDistSNMPAgent::DNSDistSNMPAgent(const std::string& name, const
      std::string& daemonSocket)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' outputStream'
    - str
    argTypes:
    - O
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 59
    functionDepth: 0
    functionLinenumber: 59
    functionLinenumberEnd: 62
    functionName: dolog
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dolog.hh
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void dolog(O& outputStream, const char* str)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dolog
      Src: /src/pdns/pdns/dnsdistdist/dolog.hh:78,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 3
    argNames:
    - ' outputStream'
    - formatStr
    - value
    argTypes:
    - O
    - char*
    - T
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 65
    functionDepth: 0
    functionLinenumber: 65
    functionLinenumberEnd: 85
    functionName: dolog
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dolog.hh
    functionUses: 6
    functionsReached:
    - dolog
    linkageType: ''
    returnType: void
    signature: void dolog(O& outputStream, const char* formatStr, T value, const Args&...
      args)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 94
    functionDepth: 0
    functionLinenumber: 94
    functionLinenumberEnd: 97
    functionName: dnsdist::logging::LoggingConfiguration::setSyslog
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dolog.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setSyslog(bool value = true)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 98
    functionDepth: 0
    functionLinenumber: 98
    functionLinenumberEnd: 101
    functionName: dnsdist::logging::LoggingConfiguration::setLogTimestamps
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dolog.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setLogTimestamps(bool value = true)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dolog.hh:104,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - ' stream'
    argTypes:
    - std::ofstream
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 102
    functionDepth: 0
    functionLinenumber: 102
    functionLinenumberEnd: 105
    functionName: dnsdist::logging::LoggingConfiguration::setVerboseStream
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dolog.hh
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void setVerboseStream(std::ofstream&& stream)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 106
    functionDepth: 0
    functionLinenumber: 106
    functionLinenumberEnd: 109
    functionName: dnsdist::logging::LoggingConfiguration::getSyslog
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dolog.hh
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool getSyslog()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 113
      start: 110
    functionDepth: 0
    functionLinenumber: 110
    functionLinenumberEnd: 113
    functionName: dnsdist::logging::LoggingConfiguration::getLogTimestamps
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dolog.hh
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool getLogTimestamps()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 114
    functionDepth: 0
    functionLinenumber: 114
    functionLinenumberEnd: 117
    functionName: '& getVerboseStream()'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dolog.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::optional<std::ofstream>
    signature: std::optional<std::ofstream> & getVerboseStream()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 94
    functionDepth: 0
    functionLinenumber: 94
    functionLinenumberEnd: 97
    functionName: dnsdist::logging::LoggingConfiguration::setSyslog
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dolog.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setSyslog(bool value = true)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 98
    functionDepth: 0
    functionLinenumber: 98
    functionLinenumberEnd: 101
    functionName: dnsdist::logging::LoggingConfiguration::setLogTimestamps
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dolog.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setLogTimestamps(bool value = true)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dolog.hh:104,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - ' stream'
    argTypes:
    - std::ofstream
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 102
    functionDepth: 0
    functionLinenumber: 102
    functionLinenumberEnd: 105
    functionName: dnsdist::logging::LoggingConfiguration::setVerboseStream
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dolog.hh
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void setVerboseStream(std::ofstream&& stream)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 106
    functionDepth: 0
    functionLinenumber: 106
    functionLinenumberEnd: 109
    functionName: dnsdist::logging::LoggingConfiguration::getSyslog
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dolog.hh
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool getSyslog()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 113
      start: 110
    functionDepth: 0
    functionLinenumber: 110
    functionLinenumberEnd: 113
    functionName: dnsdist::logging::LoggingConfiguration::getLogTimestamps
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dolog.hh
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool getLogTimestamps()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 114
    functionDepth: 0
    functionLinenumber: 114
    functionLinenumberEnd: 117
    functionName: '& getVerboseStream()'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dolog.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::optional<std::ofstream>
    signature: std::optional<std::ofstream> & getVerboseStream()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: closelog
      Src: /src/pdns/pdns/dnsdistdist/dolog.hh:132,1
    - Dst: openlog
      Src: /src/pdns/pdns/dnsdistdist/dolog.hh:133,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - facility
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 134
      start: 129
    functionDepth: 0
    functionLinenumber: 129
    functionLinenumberEnd: 134
    functionName: setSyslogFacility
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dolog.hh
    functionUses: 0
    functionsReached:
    - openlog
    - closelog
    linkageType: ''
    returnType: void
    signature: void setSyslogFacility(int facility)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::array::at
      Src: /src/pdns/pdns/dnsdistdist/dolog.hh:149,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - level
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 150
      start: 138
    functionDepth: 0
    functionLinenumber: 138
    functionLinenumberEnd: 150
    functionName: syslogLevelToStr
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dolog.hh
    functionUses: 0
    functionsReached:
    - std::array::at
    linkageType: ''
    returnType: char
    signature: char * syslogLevelToStr(int level)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::array::at
      Src: /src/pdns/pdns/dnsdistdist/dolog.hh:149,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - level
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 150
      start: 138
    functionDepth: 0
    functionLinenumber: 138
    functionLinenumberEnd: 150
    functionName: syslogLevelToStr
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dolog.hh
    functionUses: 0
    functionsReached:
    - std::array::at
    linkageType: ''
    returnType: char
    signature: char * syslogLevelToStr(int level)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dolog
      Src: /src/pdns/pdns/dnsdistdist/dolog.hh:157,1
    - Dst: std::ostringstream::str
      Src: /src/pdns/pdns/dnsdistdist/dolog.hh:159,1
    - Dst: dnsdist::logging::LoggingConfiguration::getSyslog
      Src: /src/pdns/pdns/dnsdistdist/dolog.hh:162,1
    - Dst: syslog
      Src: /src/pdns/pdns/dnsdistdist/dolog.hh:164,1
    - Dst: auto::c_str
      Src: /src/pdns/pdns/dnsdistdist/dolog.hh:164,1
    - Dst: dnsdist::logging::LoggingConfiguration::getLogTimestamps
      Src: /src/pdns/pdns/dnsdistdist/dolog.hh:167,1
    - Dst: dnsdist::logging::logTime
      Src: /src/pdns/pdns/dnsdistdist/dolog.hh:168,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 4
    argNames:
    - ' stream'
    - level
    - skipSyslog
    - formatStr
    argTypes:
    - std::ostream
    - int
    - bool
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 173
      start: 154
    functionDepth: 1
    functionLinenumber: 154
    functionLinenumberEnd: 173
    functionName: genlog
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dolog.hh
    functionUses: 3
    functionsReached:
    - dolog
    - dnsdist::logging::LoggingConfiguration::getSyslog
    - dnsdist::logging::logTime
    - dnsdist::logging::LoggingConfiguration::getLogTimestamps
    - auto::c_str
    - std::ostringstream::str
    - syslog
    linkageType: ''
    returnType: void
    signature: void genlog(std::ostream& stream, [[maybe_unused]] int level, [[maybe_unused]]
      bool skipSyslog, const char* formatStr, const Args&... args)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: genlog
      Src: /src/pdns/pdns/dnsdistdist/dolog.hh:204,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - formatStr
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 205
      start: 202
    functionDepth: 0
    functionLinenumber: 202
    functionLinenumberEnd: 205
    functionName: infolog
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dolog.hh
    functionUses: 161
    functionsReached:
    - genlog
    linkageType: ''
    returnType: void
    signature: void infolog(const char* formatStr, const Args&... args)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: genlog
      Src: /src/pdns/pdns/dnsdistdist/dolog.hh:210,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - formatStr
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 211
      start: 208
    functionDepth: 0
    functionLinenumber: 208
    functionLinenumberEnd: 211
    functionName: warnlog
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dolog.hh
    functionUses: 66
    functionsReached:
    - genlog
    linkageType: ''
    returnType: void
    signature: void warnlog(const char* formatStr, const Args&... args)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: genlog
      Src: /src/pdns/pdns/dnsdistdist/dolog.hh:216,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - formatStr
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 217
      start: 214
    functionDepth: 0
    functionLinenumber: 214
    functionLinenumberEnd: 217
    functionName: errlog
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dolog.hh
    functionUses: 30
    functionsReached:
    - genlog
    linkageType: ''
    returnType: void
    signature: void errlog(const char* formatStr, const Args&... args)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dolog
      Src: /src/pdns/pdns/dnsdistdist/dolog.hh:228,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - formatStr
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 229
      start: 225
    functionDepth: 0
    functionLinenumber: 225
    functionLinenumberEnd: 229
    functionName: infolog
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dolog.hh
    functionUses: 161
    functionsReached:
    - dolog
    linkageType: ''
    returnType: void
    signature: void infolog(const char* formatStr, const Args&... args)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dolog
      Src: /src/pdns/pdns/dnsdistdist/dolog.hh:235,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - formatStr
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 236
      start: 232
    functionDepth: 0
    functionLinenumber: 232
    functionLinenumberEnd: 236
    functionName: warnlog
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dolog.hh
    functionUses: 66
    functionsReached:
    - dolog
    linkageType: ''
    returnType: void
    signature: void warnlog(const char* formatStr, const Args&... args)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dolog
      Src: /src/pdns/pdns/dnsdistdist/dolog.hh:242,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - formatStr
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 243
      start: 239
    functionDepth: 0
    functionLinenumber: 239
    functionLinenumberEnd: 243
    functionName: errlog
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dolog.hh
    functionUses: 30
    functionsReached:
    - dolog
    linkageType: ''
    returnType: void
    signature: void errlog(const char* formatStr, const Args&... args)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:46,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:47,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:47,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:48,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:50,1
    - Dst: dnsdist::changeNameInDNSPacket
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:50,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:52,1
    - Dst: PacketBuffer::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:52,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:52,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:53,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:54,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:61,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:62,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:62,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:63,1
    - Dst: PacketBuffer::resize
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:65,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:66,1
    - Dst: dnsdist::changeNameInDNSPacket
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:66,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:73,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:74,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:74,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:75,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:77,1
    - Dst: dnsdist::changeNameInDNSPacket
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:77,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:79,1
    - Dst: PacketBuffer::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:79,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:79,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:80,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:81,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 21
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 36
    functionDepth: 2
    functionLinenumber: 36
    functionLinenumberEnd: 83
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc
    functionUses: 0
    functionsReached:
    - PacketBuffer::data
    - GenericDNSPacketWriter::getHeader
    - dnsdist::changeNameInDNSPacket
    - BOOST_CHECK_EQUAL
    - GenericDNSPacketWriter::commit
    - PacketBuffer::size
    - reinterpret_cast<const char*>
    - PacketBuffer::resize
    - BOOST_CHECK
    - htons
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_Query)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:95,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:96,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:97,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:98,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:98,1
    - Dst: GenericDNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:99,1
    - Dst: GenericDNSPacketWriter::xfrCAWithoutPort
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:101,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:102,1
    - Dst: GenericDNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:103,1
    - Dst: GenericDNSPacketWriter::xfrCAWithoutPort
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:105,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:106,1
    - Dst: GenericDNSPacketWriter::addOpt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:107,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:108,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:110,1
    - Dst: dnsdist::changeNameInDNSPacket
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:110,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:112,1
    - Dst: PacketBuffer::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:112,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:112,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:113,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:114,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:115,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:116,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:117,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:119,1
    - Dst: MOADNSParser::d_answers::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:119,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:120,1
    - Dst: MOADNSParser::d_answers::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:120,1
    - Dst: static_cast<uint16_t>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:120,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:121,1
    - Dst: MOADNSParser::d_answers::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:121,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:122,1
    - Dst: MOADNSParser::d_answers::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:122,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:123,1
    - Dst: MOADNSParser::d_answers::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:123,1
    - Dst: static_cast<uint16_t>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:123,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:124,1
    - Dst: MOADNSParser::d_answers::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:124,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:125,1
    - Dst: MOADNSParser::d_answers::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:125,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:126,1
    - Dst: MOADNSParser::d_answers::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:126,1
    - Dst: static_cast<uint16_t>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:126,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:127,1
    - Dst: MOADNSParser::d_answers::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:127,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:134,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:135,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:136,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:137,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:137,1
    - Dst: GenericDNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:138,1
    - Dst: GenericDNSPacketWriter::xfrCAWithoutPort
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:140,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:141,1
    - Dst: GenericDNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:142,1
    - Dst: GenericDNSPacketWriter::xfrCAWithoutPort
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:144,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:145,1
    - Dst: GenericDNSPacketWriter::addOpt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:146,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:147,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:149,1
    - Dst: dnsdist::changeNameInDNSPacket
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:149,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:151,1
    - Dst: PacketBuffer::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:151,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:151,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:152,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:153,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:154,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:155,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:156,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:158,1
    - Dst: MOADNSParser::d_answers::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:158,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:159,1
    - Dst: MOADNSParser::d_answers::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:159,1
    - Dst: static_cast<uint16_t>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:159,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:160,1
    - Dst: MOADNSParser::d_answers::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:160,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:161,1
    - Dst: MOADNSParser::d_answers::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:161,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:162,1
    - Dst: MOADNSParser::d_answers::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:162,1
    - Dst: static_cast<uint16_t>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:162,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:163,1
    - Dst: MOADNSParser::d_answers::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:163,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:164,1
    - Dst: MOADNSParser::d_answers::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:164,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:165,1
    - Dst: MOADNSParser::d_answers::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:165,1
    - Dst: static_cast<uint16_t>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:165,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:166,1
    - Dst: MOADNSParser::d_answers::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:166,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:173,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:174,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:175,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:176,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:176,1
    - Dst: GenericDNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:177,1
    - Dst: GenericDNSPacketWriter::xfrName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:178,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:179,1
    - Dst: GenericDNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:180,1
    - Dst: GenericDNSPacketWriter::xfrCAWithoutPort
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:182,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:183,1
    - Dst: GenericDNSPacketWriter::addOpt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:184,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:185,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:187,1
    - Dst: dnsdist::changeNameInDNSPacket
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:187,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:189,1
    - Dst: PacketBuffer::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:189,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:189,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:190,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:191,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:192,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:193,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:194,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:196,1
    - Dst: MOADNSParser::d_answers::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:196,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:197,1
    - Dst: MOADNSParser::d_answers::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:197,1
    - Dst: static_cast<uint16_t>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:197,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:198,1
    - Dst: MOADNSParser::d_answers::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:198,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:199,1
    - Dst: MOADNSParser::d_answers::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:199,1
    - Dst: getRR
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:200,1
    - Dst: MOADNSParser::d_answers::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:200,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:201,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:202,1
    - Dst: auto::getRawContent
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:202,1
    - Dst: DNSName::getStorage
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:202,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:204,1
    - Dst: MOADNSParser::d_answers::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:204,1
    - Dst: static_cast<uint16_t>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:204,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:205,1
    - Dst: MOADNSParser::d_answers::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:205,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:206,1
    - Dst: MOADNSParser::d_answers::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:206,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:207,1
    - Dst: MOADNSParser::d_answers::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:207,1
    - Dst: static_cast<uint16_t>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:207,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:208,1
    - Dst: MOADNSParser::d_answers::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:208,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:215,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:216,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:217,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:218,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:218,1
    - Dst: GenericDNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:219,1
    - Dst: GenericDNSPacketWriter::xfrCAWithoutPort
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:221,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:222,1
    - Dst: GenericDNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:223,1
    - Dst: GenericDNSPacketWriter::xfrCAWithoutPort
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:225,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:226,1
    - Dst: GenericDNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:227,1
    - Dst: GenericDNSPacketWriter::xfrName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:228,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:228,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:229,1
    - Dst: GenericDNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:230,1
    - Dst: GenericDNSPacketWriter::xfr16BitInt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:231,1
    - Dst: GenericDNSPacketWriter::xfrName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:232,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:232,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:233,1
    - Dst: GenericDNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:234,1
    - Dst: GenericDNSPacketWriter::xfrText
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:235,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:236,1
    - Dst: GenericDNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:237,1
    - Dst: GenericDNSPacketWriter::xfrType
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:238,1
    - Dst: GenericDNSPacketWriter::xfr8BitInt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:239,1
    - Dst: GenericDNSPacketWriter::xfr8BitInt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:240,1
    - Dst: GenericDNSPacketWriter::xfr32BitInt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:241,1
    - Dst: GenericDNSPacketWriter::xfrTime
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:242,1
    - Dst: GenericDNSPacketWriter::xfrTime
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:243,1
    - Dst: GenericDNSPacketWriter::xfr16BitInt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:244,1
    - Dst: GenericDNSPacketWriter::xfrName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:245,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:245,1
    - Dst: GenericDNSPacketWriter::xfrBlob
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:246,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:246,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:247,1
    - Dst: GenericDNSPacketWriter::addOpt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:248,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:249,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:251,1
    - Dst: dnsdist::changeNameInDNSPacket
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:251,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:253,1
    - Dst: PacketBuffer::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:253,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:253,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:254,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:255,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:256,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:257,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:258,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:260,1
    - Dst: MOADNSParser::d_answers::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:260,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:265,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:266,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:274,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:275,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:276,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:277,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:277,1
    - Dst: GenericDNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:278,1
    - Dst: GenericDNSPacketWriter::xfrCAWithoutPort
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:280,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:281,1
    - Dst: GenericDNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:282,1
    - Dst: GenericDNSPacketWriter::xfrCAWithoutPort
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:284,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:285,1
    - Dst: GenericDNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:286,1
    - Dst: GenericDNSPacketWriter::xfrName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:287,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:287,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:288,1
    - Dst: GenericDNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:289,1
    - Dst: GenericDNSPacketWriter::xfrName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:290,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:290,1
    - Dst: GenericDNSPacketWriter::xfrName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:291,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:291,1
    - Dst: GenericDNSPacketWriter::xfr32BitInt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:292,1
    - Dst: GenericDNSPacketWriter::xfr32BitInt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:293,1
    - Dst: GenericDNSPacketWriter::xfr32BitInt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:294,1
    - Dst: GenericDNSPacketWriter::xfr32BitInt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:295,1
    - Dst: GenericDNSPacketWriter::xfr32BitInt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:296,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:297,1
    - Dst: GenericDNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:298,1
    - Dst: GenericDNSPacketWriter::xfr16BitInt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:299,1
    - Dst: GenericDNSPacketWriter::xfrName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:300,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:300,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:301,1
    - Dst: GenericDNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:302,1
    - Dst: GenericDNSPacketWriter::xfrText
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:303,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:304,1
    - Dst: GenericDNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:305,1
    - Dst: GenericDNSPacketWriter::xfr16BitInt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:306,1
    - Dst: GenericDNSPacketWriter::xfr16BitInt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:307,1
    - Dst: GenericDNSPacketWriter::xfr16BitInt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:308,1
    - Dst: GenericDNSPacketWriter::xfrName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:309,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:309,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:310,1
    - Dst: GenericDNSPacketWriter::addOpt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:311,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:312,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:316,1
    - Dst: PacketBuffer::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:316,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:316,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:317,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:318,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:319,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:320,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:321,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:323,1
    - Dst: MOADNSParser::d_answers::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:323,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:328,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:329,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:334,1
    - Dst: dnsdist::changeNameInDNSPacket
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:334,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:338,1
    - Dst: PacketBuffer::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:338,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:338,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:339,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:340,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:341,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:342,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:343,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:345,1
    - Dst: MOADNSParser::d_answers::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:345,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:350,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:351,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:360,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:361,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:362,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:363,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:363,1
    - Dst: GenericDNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:364,1
    - Dst: GenericDNSPacketWriter::xfrName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:365,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:366,1
    - Dst: GenericDNSPacketWriter::addOpt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:367,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:368,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:370,1
    - Dst: dnsdist::changeNameInDNSPacket
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:370,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:372,1
    - Dst: PacketBuffer::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:372,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:372,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:373,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:374,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:375,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:376,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:377,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:379,1
    - Dst: MOADNSParser::d_answers::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:379,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:380,1
    - Dst: MOADNSParser::d_answers::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:380,1
    - Dst: static_cast<uint16_t>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:380,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:381,1
    - Dst: MOADNSParser::d_answers::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:381,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:382,1
    - Dst: MOADNSParser::d_answers::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:382,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 219
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 384
      start: 85
    functionDepth: 2
    functionLinenumber: 85
    functionLinenumberEnd: 384
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc
    functionUses: 0
    functionsReached:
    - DNSName::getStorage
    - GenericDNSPacketWriter::getHeader
    - dnsdist::changeNameInDNSPacket
    - PacketBuffer::size
    - GenericDNSPacketWriter::xfr32BitInt
    - std::string
    - GenericDNSPacketWriter::xfrCAWithoutPort
    - GenericDNSPacketWriter::startRecord
    - static_cast<uint16_t>
    - MOADNSParser::d_answers::at
    - BOOST_REQUIRE
    - GenericDNSPacketWriter::xfrText
    - BOOST_REQUIRE_EQUAL
    - htons
    - GenericDNSPacketWriter::xfrTime
    - DNSName
    - reinterpret_cast<const char*>
    - GenericDNSPacketWriter::xfrBlob
    - GenericDNSPacketWriter::xfrName
    - GenericDNSPacketWriter::addOpt
    - getRR
    - GenericDNSPacketWriter::xfrType
    - PacketBuffer::data
    - GenericDNSPacketWriter::xfr8BitInt
    - BOOST_CHECK_EQUAL
    - MOADNSParser::d_answers::size
    - auto::getRawContent
    - GenericDNSPacketWriter::commit
    - BOOST_CHECK
    - GenericDNSPacketWriter::xfr16BitInt
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_Response)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:394,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:395,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:396,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:397,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:397,1
    - Dst: GenericDNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:398,1
    - Dst: GenericDNSPacketWriter::xfrCAWithoutPort
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:400,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:401,1
    - Dst: GenericDNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:402,1
    - Dst: GenericDNSPacketWriter::xfrCAWithoutPort
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:404,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:405,1
    - Dst: GenericDNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:406,1
    - Dst: GenericDNSPacketWriter::xfrName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:407,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:407,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:408,1
    - Dst: GenericDNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:409,1
    - Dst: GenericDNSPacketWriter::xfrName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:410,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:410,1
    - Dst: GenericDNSPacketWriter::xfrName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:411,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:411,1
    - Dst: GenericDNSPacketWriter::xfr32BitInt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:412,1
    - Dst: GenericDNSPacketWriter::xfr32BitInt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:413,1
    - Dst: GenericDNSPacketWriter::xfr32BitInt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:414,1
    - Dst: GenericDNSPacketWriter::xfr32BitInt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:415,1
    - Dst: GenericDNSPacketWriter::xfr32BitInt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:416,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:417,1
    - Dst: GenericDNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:418,1
    - Dst: GenericDNSPacketWriter::xfr16BitInt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:419,1
    - Dst: GenericDNSPacketWriter::xfrName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:420,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:420,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:421,1
    - Dst: GenericDNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:422,1
    - Dst: GenericDNSPacketWriter::xfrText
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:423,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:424,1
    - Dst: GenericDNSPacketWriter::addOpt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:425,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:426,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:430,1
    - Dst: dnsdist::DNSPacketOverlay::DNSPacketOverlay
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:430,1
    - Dst: std::string_view
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:430,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:430,1
    - Dst: PacketBuffer::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:430,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:432,1
    - Dst: dnsdist::DNSPacketOverlay::DNSPacketOverlay
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:432,1
    - Dst: std::string_view
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:432,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:432,1
    - Dst: PacketBuffer::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:432,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:432,1
    - Dst: std::string_view
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:435,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:435,1
    - Dst: PacketBuffer::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:435,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:435,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:436,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:437,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:438,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:439,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:440,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:441,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:442,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:442,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:443,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:443,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:444,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:444,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:445,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:445,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:446,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:446,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:447,1
    - Dst: dnsdist::DNSPacketOverlay::d_records::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:447,1
    - Dst: DNSName::wirelength
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:450,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:456,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:457,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:458,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:459,1
    - Dst: BOOST_CHECK_GE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:460,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:469,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:470,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:471,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:472,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:472,1
    - Dst: GenericDNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:473,1
    - Dst: GenericDNSPacketWriter::xfrCAWithoutPort
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:475,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:476,1
    - Dst: GenericDNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:477,1
    - Dst: GenericDNSPacketWriter::xfrCAWithoutPort
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:479,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:480,1
    - Dst: GenericDNSPacketWriter::addOpt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:481,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:482,1
    - Dst: std::string_view
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:485,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:485,1
    - Dst: PacketBuffer::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:485,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:485,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:487,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:488,1
    - Dst: dnsdist::RecordParsers::parseARecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:488,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:489,1
    - Dst: dnsdist::RecordParsers::parseAddressRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:489,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:491,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:492,1
    - Dst: dnsdist::RecordParsers::parseAAAARecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:492,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:493,1
    - Dst: dnsdist::RecordParsers::parseAddressRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:493,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:500,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:501,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:502,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:503,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:503,1
    - Dst: GenericDNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:504,1
    - Dst: GenericDNSPacketWriter::xfrName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:505,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:506,1
    - Dst: GenericDNSPacketWriter::addOpt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:507,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:508,1
    - Dst: std::string_view
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:511,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:511,1
    - Dst: PacketBuffer::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:511,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:511,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:513,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:514,1
    - Dst: dnsdist::RecordParsers::parseCNAMERecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:514,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:521,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:522,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:523,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:524,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:524,1
    - Dst: GenericDNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:525,1
    - Dst: GenericDNSPacketWriter::xfrName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:526,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:527,1
    - Dst: std::string_view
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:530,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:530,1
    - Dst: PacketBuffer::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:530,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc:530,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 98
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 533
      start: 386
    functionDepth: 1
    functionLinenumber: 386
    functionLinenumberEnd: 533
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc
    functionUses: 0
    functionsReached:
    - ntohs
    - GenericDNSPacketWriter::getHeader
    - PacketBuffer::size
    - BOOST_CHECK_THROW
    - GenericDNSPacketWriter::xfr32BitInt
    - DNSName::wirelength
    - GenericDNSPacketWriter::xfrCAWithoutPort
    - GenericDNSPacketWriter::startRecord
    - dnsdist::RecordParsers::parseCNAMERecord
    - GenericDNSPacketWriter::xfrText
    - dnsdist::DNSPacketOverlay::DNSPacketOverlay
    - htons
    - dnsdist::RecordParsers::parseAddressRecord
    - std::string_view
    - BOOST_CHECK_GE
    - DNSName
    - reinterpret_cast<const char*>
    - GenericDNSPacketWriter::xfrName
    - dnsdist::DNSPacketOverlay::d_records::size
    - dnsdist::RecordParsers::parseARecord
    - GenericDNSPacketWriter::addOpt
    - PacketBuffer::data
    - dnsdist::RecordParsers::parseAAAARecord
    - BOOST_CHECK_EQUAL
    - GenericDNSPacketWriter::commit
    - BOOST_CHECK
    - GenericDNSPacketWriter::xfr16BitInt
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_Overlay)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/remote_logger_pool.cc:10,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 1
    argNames:
    - ' pool'
    argTypes:
    - std::vector<std::shared_ptr<RemoteLoggerInterface>>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12
      start: 9
    functionDepth: 0
    functionLinenumber: 9
    functionLinenumberEnd: 12
    functionName: RemoteLoggerPool::RemoteLoggerPool
    functionSourceFile: /src/pdns/pdns/dnsdistdist/remote_logger_pool.cc
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void RemoteLoggerPool::RemoteLoggerPool(std::vector<std::shared_ptr<RemoteLoggerInterface>>&&
      pool)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RemoteLoggerPool::getStats
      Src: /src/pdns/pdns/dnsdistdist/remote_logger_pool.cc:16,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/remote_logger_pool.cc:17,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/remote_logger_pool.cc:17,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/remote_logger_pool.cc:17,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/remote_logger_pool.cc:17,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 18
      start: 14
    functionDepth: 0
    functionLinenumber: 14
    functionLinenumberEnd: 18
    functionName: RemoteLoggerPool::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/remote_logger_pool.cc
    functionUses: 0
    functionsReached:
    - std::to_string
    - size
    - RemoteLoggerPool::getStats
    linkageType: ''
    returnType: std::string
    signature: std::string RemoteLoggerPool::toString()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/remote_logger_pool.cc:22,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/remote_logger_pool.cc:22,1
    - Dst: std::shared_ptr::queueData
      Src: /src/pdns/pdns/dnsdistdist/remote_logger_pool.cc:23,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' data'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 24
      start: 20
    functionDepth: 0
    functionLinenumber: 20
    functionLinenumberEnd: 24
    functionName: RemoteLoggerPool::queueData
    functionSourceFile: /src/pdns/pdns/dnsdistdist/remote_logger_pool.cc
    functionUses: 0
    functionsReached:
    - std::shared_ptr::queueData
    - at
    - size
    linkageType: ''
    returnType: RemoteLoggerInterface::Result
    signature: RemoteLoggerInterface::Result RemoteLoggerPool::queueData(const std::string&
      data)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: sendto
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:143,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:143,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:143,1
    - Dst: reinterpret_cast<const struct sockaddr*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:143,1
    - Dst: getSocklen
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:143,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:146,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:146,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:146,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:146,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:147,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:147,1
    - Dst: sendMsgWithOptions
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:153,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:153,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:153,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:156,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:156,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:156,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:156,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:156,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:157,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:157,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:157,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:157,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 4
    argNames:
    - sock
    - ' buffer'
    - ' from'
    - ' dest'
    argTypes:
    - int
    - PacketBuffer
    - ComboAddress
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 159
      start: 138
    functionDepth: 1
    functionLinenumber: 138
    functionLinenumberEnd: 159
    functionName: sendfromto
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.cc
    functionUses: 0
    functionsReached:
    - Logging::Loggable
    - stringerror
    - toStringWithPort
    - what
    - VERBOSESLOG
    - infolog
    - size
    - reinterpret_cast<const struct sockaddr*>
    - dnsdist::logging::getTopLogger
    - data
    - sendto
    - getSocklen
    - sendMsgWithOptions
    linkageType: ''
    returnType: void
    signature: void sendfromto(int sock, const PacketBuffer& buffer, const ComboAddress&
      from, const ComboAddress& dest)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: getEDNSUDPPayloadSizeAndZ
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:170,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:170,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:170,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:170,1
    - Dst: resize
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:173,1
    - Dst: static_cast<uint16_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:173,1
    - Dst: dnsdist::PacketMangling::editDNSHeaderFromPacket
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:174,1
    - Dst: addEDNS
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:182,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 4
    argNames:
    - ' packet'
    - maximumSize
    - qnameWireLength
    - addEDNSToSelfGeneratedResponses
    argTypes:
    - PacketBuffer
    - size_t
    - unsigned int
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 188
      start: 161
    functionDepth: 2
    functionLinenumber: 161
    functionLinenumberEnd: 188
    functionName: truncateTC
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.cc
    functionUses: 0
    functionsReached:
    - getEDNSUDPPayloadSizeAndZ
    - resize
    - size
    - addEDNS
    - reinterpret_cast<const char*>
    - static_cast<uint16_t>
    - dnsdist::PacketMangling::editDNSHeaderFromPacket
    - data
    linkageType: ''
    returnType: void
    signature: void truncateTC(PacketBuffer& packet, size_t maximumSize, unsigned
      int qnameWireLength, bool addEDNSToSelfGeneratedResponses)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sendfromto
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:199,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 200
      start: 197
    functionDepth: 2
    functionLinenumber: 197
    functionLinenumberEnd: 200
    functionName: operator()() const
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.cc
    functionUses: 0
    functionsReached:
    - sendfromto
    linkageType: ''
    returnType: void
    signature: void operator()() const
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: store
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:209,1
    - Dst: load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:209,1
    - Dst: dnsdist::metrics::updateLatencyHistogram
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:214,1
    - Dst: static_cast<uint64_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:214,1
    - Dst: doAvg
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:217,1
    - Dst: doAvg
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:218,1
    - Dst: doAvg
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:219,1
    - Dst: doAvg
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:220,1
    - Dst: doAvg
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:223,1
    - Dst: doAvg
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:224,1
    - Dst: doAvg
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:225,1
    - Dst: doAvg
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:226,1
    - Dst: doAvg
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:229,1
    - Dst: doAvg
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:230,1
    - Dst: doAvg
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:231,1
    - Dst: doAvg
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:232,1
    - Dst: doAvg
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:235,1
    - Dst: doAvg
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:236,1
    - Dst: doAvg
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:237,1
    - Dst: doAvg
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:238,1
    - Dst: doAvg
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:241,1
    - Dst: doAvg
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:242,1
    - Dst: doAvg
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:243,1
    - Dst: doAvg
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:244,1
    - Dst: doAvg
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:247,1
    - Dst: doAvg
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:248,1
    - Dst: doAvg
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:249,1
    - Dst: doAvg
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:250,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 42
    argCount: 2
    argNames:
    - protocol
    - latencyUs
    argTypes:
    - dnsdist::Protocol
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 252
      start: 206
    functionDepth: 1
    functionLinenumber: 206
    functionLinenumberEnd: 252
    functionName: doLatencyStats
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.cc
    functionUses: 0
    functionsReached:
    - load
    - dnsdist::metrics::updateLatencyHistogram
    - static_cast<uint64_t>
    - doAvg
    - store
    linkageType: ''
    returnType: void
    signature: void doLatencyStats(dnsdist::Protocol protocol, double latencyUs)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:256,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:260,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:284,1
    - Dst: wirelength
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:284,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:289,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:289,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:289,1
    - Dst: matchesUncompressedName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:290,1
    - Dst: wirelength
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:291,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:292,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:292,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:293,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:293,1
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:299,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:299,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:299,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:300,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:300,1
    - Dst: d_config::remote::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:300,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:300,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:300,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:301,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:301,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:301,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:301,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:301,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 41
    argCount: 6
    argNames:
    - ' response'
    - ' qname'
    - qtype
    - qclass
    - ' remote'
    - allowEmptyResponse
    argTypes:
    - PacketBuffer
    - DNSName
    - uint16_t
    - uint16_t
    - std::shared_ptr<DownstreamState>
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 309
      start: 254
    functionDepth: 1
    functionLinenumber: 254
    functionLinenumberEnd: 309
    functionName: responseContentMatches
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.cc
    functionUses: 0
    functionsReached:
    - static_cast<size_t>
    - matchesUncompressedName
    - wirelength
    - ntohs
    - Logging::Loggable
    - what
    - VERBOSESLOG
    - infolog
    - size
    - d_config::remote::toStringWithPort
    - reinterpret_cast<const char*>
    - dnsdist::logging::getTopLogger
    - data
    - empty
    - at
    linkageType: ''
    returnType: bool
    signature: bool responseContentMatches(const PacketBuffer& response, const DNSName&
      qname, const uint16_t qtype, const uint16_t qclass, const std::shared_ptr<DownstreamState>&
      remote, bool allowEmptyResponse)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getFlagsFromDNSHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:316,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - dnsHeader
    - origFlags
    argTypes:
    - struct dnsheader*
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 323
      start: 311
    functionDepth: 0
    functionLinenumber: 311
    functionLinenumberEnd: 323
    functionName: restoreFlags
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.cc
    functionUses: 0
    functionsReached:
    - getFlagsFromDNSHeader
    linkageType: ''
    returnType: void
    signature: void restoreFlags(struct dnsheader* dnsHeader, uint16_t origFlags)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::PacketMangling::editDNSHeaderFromPacket
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:327,1
    - Dst: getMutableData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:327,1
    - Dst: restoreFlags
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:328,1
    - Dst: addEDNSToQueryTurnedResponse
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:335,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - ' dnsQuestion'
    - origFlags
    argTypes:
    - DNSQuestion
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 336
      start: 325
    functionDepth: 2
    functionLinenumber: 325
    functionLinenumberEnd: 336
    functionName: fixUpQueryTurnedResponse
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.cc
    functionUses: 0
    functionsReached:
    - getMutableData
    - restoreFlags
    - addEDNSToQueryTurnedResponse
    - dnsdist::PacketMangling::editDNSHeaderFromPacket
    linkageType: ''
    returnType: bool
    signature: bool fixUpQueryTurnedResponse(DNSQuestion& dnsQuestion, const uint16_t
      origFlags)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:340,1
    - Dst: dnsdist::PacketMangling::editDNSHeaderFromPacket
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:344,1
    - Dst: restoreFlags
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:345,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:349,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:353,1
    - Dst: getStorage
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:354,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:355,1
    - Dst: length
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:355,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:356,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:356,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:356,1
    - Dst: length
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:356,1
    - Dst: locateEDNSOptRR
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:365,1
    - Dst: isEDNSOptionInOpt
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:372,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:375,1
    - Dst: resize
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:384,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:384,1
    - Dst: dnsdist::PacketMangling::editDNSHeaderFromPacket
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:385,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:386,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:388,1
    - Dst: rewriteResponseWithoutEDNS
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:395,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:396,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:399,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:399,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:400,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:400,1
    - Dst: removeEDNSOptionFromOPT
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:412,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:412,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:412,1
    - Dst: resize
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:413,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:413,1
    - Dst: rewriteResponseWithoutEDNSOption
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:418,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:419,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:422,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:422,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:423,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:423,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 53
    argCount: 6
    argNames:
    - ' response'
    - ' qname'
    - origFlags
    - ednsAdded
    - ecsAdded
    - zeroScope
    argTypes:
    - PacketBuffer
    - DNSName
    - uint16_t
    - bool
    - bool
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 431
      start: 338
    functionDepth: 2
    functionLinenumber: 338
    functionLinenumberEnd: 431
    functionName: fixUpResponse
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.cc
    functionUses: 0
    functionsReached:
    - reinterpret_cast<char*>
    - ntohs
    - isEDNSOptionInOpt
    - rewriteResponseWithoutEDNS
    - SLOG
    - locateEDNSOptRR
    - resize
    - getStorage
    - Logging::Loggable
    - warnlog
    - size
    - dnsdist::logging::getTopLogger
    - c_str
    - at
    - htons
    - removeEDNSOptionFromOPT
    - dnsdist::configuration::getCurrentRuntimeConfiguration
    - length
    - memcpy
    - std::move
    - rewriteResponseWithoutEDNSOption
    - restoreFlags
    - dnsdist::PacketMangling::editDNSHeaderFromPacket
    linkageType: ''
    returnType: bool
    signature: bool fixUpResponse(PacketBuffer& response, const DNSName& qname, uint16_t
      origFlags, bool ednsAdded, bool ecsAdded, bool* zeroScope)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: encryptResponse
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:437,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:440,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:440,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:441,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 4
    argNames:
    - ' response'
    - maximumSize
    - tcp
    - ' dnsCryptQuery'
    argTypes:
    - PacketBuffer
    - size_t
    - bool
    - std::unique_ptr<DNSCryptQuery>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 446
      start: 434
    functionDepth: 1
    functionLinenumber: 434
    functionLinenumberEnd: 446
    functionName: encryptResponse
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.cc
    functionUses: 2
    functionsReached:
    - encryptResponse
    - infolog
    - dnsdist::logging::getTopLogger
    - VERBOSESLOG
    linkageType: ''
    returnType: bool
    signature: bool encryptResponse(PacketBuffer& response, size_t maximumSize, bool
      tcp, std::unique_ptr<DNSCryptQuery>& dnsCryptQuery)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: ids::getCloser
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:451,1
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:452,1
    - Dst: ids::getRulesCloser
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:461,1
    - Dst: d_rule::matches
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:462,1
    - Dst: getData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:476,1
    - Dst: dnsdist::PacketMangling::editDNSHeaderFromPacket
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:479,1
    - Dst: getMutableData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:479,1
    - Dst: getData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:486,1
    - Dst: overTCP
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:489,1
    - Dst: dnsdist::PacketMangling::editDNSHeaderFromPacket
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:490,1
    - Dst: getMutableData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:490,1
    - Dst: truncateTC
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:495,1
    - Dst: getMutableData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:495,1
    - Dst: getMaximumSize
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:495,1
    - Dst: ids::qname::wirelength
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:495,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:495,1
    - Dst: pdns::checked_stoi_into
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:502,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 51
    argCount: 2
    argNames:
    - ' respRuleActions'
    - ' dnsResponse'
    argTypes:
    - std::vector<dnsdist::rules::ResponseRuleAction>
    - DNSResponse
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 511
      start: 449
    functionDepth: 3
    functionLinenumber: 449
    functionLinenumberEnd: 511
    functionName: applyRulesToResponse
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.cc
    functionUses: 0
    functionsReached:
    - truncateTC
    - getMutableData
    - ids::qname::wirelength
    - dnsdist::configuration::getCurrentRuntimeConfiguration
    - pdns::checked_stoi_into
    - d_rule::matches
    - ids::getRulesCloser
    - empty
    - getMaximumSize
    - overTCP
    - dnsdist::PacketMangling::editDNSHeaderFromPacket
    - ids::getCloser
    - getData
    linkageType: ''
    returnType: bool
    signature: bool applyRulesToResponse(const std::vector<dnsdist::rules::ResponseRuleAction>&
      respRuleActions, DNSResponse& dnsResponse)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: ids::getCloser
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:515,1
    - Dst: fixUpResponse
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:517,1
    - Dst: auto::setAttribute
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:519,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:524,1
    - Dst: ids::getCloser
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:547,1
    - Dst: ids::packetCache::insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:548,1
    - Dst: getHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:548,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:550,1
    - Dst: dnsdist::rules::getResponseRuleChain
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:551,1
    - Dst: applyRulesToResponse
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:552,1
    - Dst: dnsdist::PacketMangling::restrictDNSPacketTTLs
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:558,1
    - Dst: getMutableData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:558,1
    - Dst: dnsdist::edns::addExtendedDNSError
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:563,1
    - Dst: getMutableData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:563,1
    - Dst: getMaximumSize
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:563,1
    - Dst: dnsdist::edns::addEDNSPadding
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:568,1
    - Dst: getMutableData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:568,1
    - Dst: getMaximumSize
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:568,1
    - Dst: encryptResponse
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:573,1
    - Dst: getMaximumSize
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:573,1
    - Dst: overTCP
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:573,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 40
    argCount: 3
    argNames:
    - ' response'
    - ' dnsResponse'
    - muted
    argTypes:
    - PacketBuffer
    - DNSResponse
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 580
      start: 513
    functionDepth: 3
    functionLinenumber: 513
    functionLinenumberEnd: 580
    functionName: processResponseAfterRules
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.cc
    functionUses: 0
    functionsReached:
    - dnsdist::PacketMangling::restrictDNSPacketTTLs
    - getMutableData
    - dnsdist::configuration::getCurrentRuntimeConfiguration
    - auto::setAttribute
    - dnsdist::edns::addExtendedDNSError
    - fixUpResponse
    - getHeader
    - size
    - dnsdist::edns::addEDNSPadding
    - getMaximumSize
    - dnsdist::rules::getResponseRuleChain
    - overTCP
    - ids::packetCache::insert
    - ids::getCloser
    - encryptResponse
    - applyRulesToResponse
    linkageType: ''
    returnType: bool
    signature: bool processResponseAfterRules(PacketBuffer& response, DNSResponse&
      dnsResponse, [[maybe_unused]] bool muted)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ids::getCloser
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:585,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:587,1
    - Dst: dnsdist::rules::getResponseRuleChain
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:588,1
    - Dst: applyRulesToResponse
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:590,1
    - Dst: isAsynchronous
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:594,1
    - Dst: processResponseAfterRules
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:598,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - ' response'
    - ' dnsResponse'
    - muted
    argTypes:
    - PacketBuffer
    - DNSResponse
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 599
      start: 582
    functionDepth: 2
    functionLinenumber: 582
    functionLinenumberEnd: 599
    functionName: processResponse
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.cc
    functionUses: 3
    functionsReached:
    - processResponseAfterRules
    - dnsdist::configuration::getCurrentRuntimeConfiguration
    - isAsynchronous
    - dnsdist::rules::getResponseRuleChain
    - ids::getCloser
    - applyRulesToResponse
    linkageType: ''
    returnType: bool
    signature: bool processResponse(PacketBuffer& response, DNSResponse& dnsResponse,
      bool muted)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:605,1
    - Dst: d_proxyProtocolACL::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:606,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - expectProxyProtocol
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 611
      start: 601
    functionDepth: 2
    functionLinenumber: 601
    functionLinenumberEnd: 611
    functionName: getInitialUDPPacketBufferSize
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.cc
    functionUses: 0
    functionsReached:
    - dnsdist::configuration::getCurrentRuntimeConfiguration
    - d_proxyProtocolACL::empty
    linkageType: ''
    returnType: size_t
    signature: size_t getInitialUDPPacketBufferSize(bool expectProxyProtocol)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: getInitialUDPPacketBufferSize
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:616,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:619,1
    - Dst: d_proxyProtocolACL::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:620,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - ' clientState'
    argTypes:
    - ClientState
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 625
      start: 613
    functionDepth: 3
    functionLinenumber: 613
    functionLinenumberEnd: 625
    functionName: getMaximumIncomingPacketSize
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.cc
    functionUses: 0
    functionsReached:
    - getInitialUDPPacketBufferSize
    - dnsdist::configuration::getCurrentRuntimeConfiguration
    - d_proxyProtocolACL::empty
    linkageType: ''
    returnType: size_t
    signature: size_t getMaximumIncomingPacketSize(const ClientState& clientState)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: submit
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:632,1
    - Dst: sendfromto
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:637,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 5
    argNames:
    - origFD
    - ' response'
    - delayMsec
    - ' origDest'
    - ' origRemote'
    argTypes:
    - int
    - PacketBuffer
    - int
    - ComboAddress
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 639
      start: 627
    functionDepth: 2
    functionLinenumber: 627
    functionLinenumberEnd: 639
    functionName: sendUDPResponse
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.cc
    functionUses: 0
    functionsReached:
    - submit
    - sendfromto
    linkageType: ''
    returnType: bool
    signature: bool sendUDPResponse(int origFD, const PacketBuffer& response, [[maybe_unused]]
      const int delayMsec, const ComboAddress& origDest, const ComboAddress& origRemote)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: handleResponseSent
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:643,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:643,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 8
    argNames:
    - ' ids'
    - latencyUs
    - ' client'
    - ' backend'
    - size
    - ' cleartextDH'
    - outgoingProtocol
    - fromBackend
    argTypes:
    - InternalQueryState
    - double
    - ComboAddress
    - ComboAddress
    - unsigned int
    - dnsheader
    - dnsdist::Protocol
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 644
      start: 641
    functionDepth: 0
    functionLinenumber: 641
    functionLinenumberEnd: 644
    functionName: handleResponseSent
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.cc
    functionUses: 6
    functionsReached:
    - std::move
    - handleResponseSent
    linkageType: ''
    returnType: void
    signature: void handleResponseSent(InternalQueryState& ids, double latencyUs,
      const ComboAddress& client, const ComboAddress& backend, unsigned int size,
      const dnsheader& cleartextDH, dnsdist::Protocol outgoingProtocol, bool fromBackend)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: shouldRecordResponses
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:648,1
    - Dst: gettime
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:650,1
    - Dst: insertResponse
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:651,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:651,1
    - Dst: static_cast<unsigned int>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:651,1
    - Dst: doLatencyStats
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:669,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 20
    argCount: 10
    argNames:
    - ' qname'
    - ' qtype'
    - latencyUs
    - ' client'
    - ' backend'
    - size
    - ' cleartextDH'
    - outgoingProtocol
    - incomingProtocol
    - fromBackend
    argTypes:
    - DNSName
    - QType
    - double
    - ComboAddress
    - ComboAddress
    - unsigned int
    - dnsheader
    - dnsdist::Protocol
    - dnsdist::Protocol
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 670
      start: 646
    functionDepth: 2
    functionLinenumber: 646
    functionLinenumberEnd: 670
    functionName: handleResponseSent
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.cc
    functionUses: 6
    functionsReached:
    - std::move
    - doLatencyStats
    - static_cast<unsigned int>
    - shouldRecordResponses
    - gettime
    - insertResponse
    linkageType: ''
    returnType: void
    signature: void handleResponseSent(DNSName&& qname, const QType& qtype, double
      latencyUs, const ComboAddress& client, const ComboAddress& backend, unsigned
      int size, const dnsheader& cleartextDH, dnsdist::Protocol outgoingProtocol,
      dnsdist::Protocol incomingProtocol, bool fromBackend)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:674,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:675,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:675,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:675,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:676,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:676,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:676,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:676,1
    - Dst: truncateTC
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:678,1
    - Dst: getMutableData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:678,1
    - Dst: getMaximumSize
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:678,1
    - Dst: ids::qname::wirelength
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:678,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:678,1
    - Dst: dnsdist::PacketMangling::editDNSHeaderFromPacket
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:679,1
    - Dst: getMutableData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:679,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:684,1
    - Dst: getHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:684,1
    - Dst: truncateTC
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:685,1
    - Dst: getMaximumSize
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:685,1
    - Dst: ids::qname::wirelength
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:685,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:685,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 3
    argNames:
    - ' dnsQuestion'
    - udpPayloadSize
    - ' response'
    argTypes:
    - DNSQuestion
    - uint16_t
    - PacketBuffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 687
      start: 672
    functionDepth: 3
    functionLinenumber: 672
    functionLinenumberEnd: 687
    functionName: handleResponseTC4UDPClient
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.cc
    functionUses: 0
    functionsReached:
    - truncateTC
    - getMutableData
    - dnsdist::configuration::getCurrentRuntimeConfiguration
    - Logging::Loggable
    - VERBOSESLOG
    - infolog
    - size
    - getMaximumSize
    - dnsdist::PacketMangling::editDNSHeaderFromPacket
    - getHeader
    - ids::qname::wirelength
    - getLogger
    linkageType: ''
    returnType: void
    signature: void handleResponseTC4UDPClient(DNSQuestion& dnsQuestion, uint16_t
      udpPayloadSize, PacketBuffer& response)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: handleResponseTC4UDPClient
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:693,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:698,1
    - Dst: DNSResponse::getHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:698,1
    - Dst: processResponse
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:701,1
    - Dst: DNSResponse::isAsynchronous
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:705,1
    - Dst: isXSK
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:716,1
    - Dst: sendUDPResponse
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:717,1
    - Dst: queryRealTime::udiff
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:722,1
    - Dst: isXSK
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:724,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:725,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:725,1
    - Dst: d_config::remote::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:725,1
    - Dst: origRemote::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:725,1
    - Dst: DNSResponse::getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:726,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:729,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:729,1
    - Dst: d_config::remote::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:729,1
    - Dst: origRemote::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:729,1
    - Dst: DNSResponse::getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:730,1
    - Dst: isXSK
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:734,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:735,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:735,1
    - Dst: d_config::remote::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:735,1
    - Dst: origRemote::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:735,1
    - Dst: DNSResponse::getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:736,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:739,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:739,1
    - Dst: d_config::remote::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:739,1
    - Dst: origRemote::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:739,1
    - Dst: DNSResponse::getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:740,1
    - Dst: handleResponseSent
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:744,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:744,1
    - Dst: getProtocol
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:744,1
    - Dst: handleResponseSent
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:747,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:747,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:747,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 37
    argCount: 5
    argNames:
    - ' ids'
    - ' response'
    - ' backend'
    - isAsync
    - selfGenerated
    argTypes:
    - InternalQueryState
    - PacketBuffer
    - std::shared_ptr<DownstreamState>
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 749
      start: 689
    functionDepth: 4
    functionLinenumber: 689
    functionLinenumberEnd: 749
    functionName: handleResponseForUDPClient
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.cc
    functionUses: 0
    functionsReached:
    - DNSResponse::getHeader
    - memcpy
    - isXSK
    - queryRealTime::udiff
    - processResponse
    - DNSResponse::isAsynchronous
    - VERBOSESLOG
    - infolog
    - sendUDPResponse
    - d_config::remote::toStringWithPort
    - size
    - origRemote::toStringWithPort
    - getProtocol
    - handleResponseTC4UDPClient
    - handleResponseSent
    - DNSResponse::getLogger
    - ComboAddress
    linkageType: ''
    returnType: void
    signature: void handleResponseForUDPClient(InternalQueryState& ids, PacketBuffer&
      response, const std::shared_ptr<DownstreamState>& backend, bool isAsync, bool
      selfGenerated)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:754,1
    - Dst: responseContentMatches
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:757,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:757,1
    - Dst: restoreState
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:758,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:758,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:762,1
    - Dst: dnsdist::PacketMangling::editDNSHeaderFromPacket
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:763,1
    - Dst: queryRealTime::udiff
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:769,1
    - Dst: reportResponse
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:772,1
    - Dst: handleUDPResponse
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:778,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:778,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:778,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:778,1
    - Dst: handleResponseForUDPClient
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:783,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 3
    argNames:
    - ' dss'
    - ' response'
    - ' ids'
    argTypes:
    - std::shared_ptr<DownstreamState>
    - PacketBuffer
    - InternalQueryState
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 785
      start: 751
    functionDepth: 5
    functionLinenumber: 751
    functionLinenumberEnd: 785
    functionName: processResponderPacket
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.cc
    functionUses: 2
    functionsReached:
    - std::move
    - reportResponse
    - dnsdist::configuration::getCurrentRuntimeConfiguration
    - responseContentMatches
    - queryRealTime::udiff
    - handleUDPResponse
    - restoreState
    - dnsdist::PacketMangling::editDNSHeaderFromPacket
    - data
    - handleResponseForUDPClient
    linkageType: ''
    returnType: bool
    signature: bool processResponderPacket(std::shared_ptr<DownstreamState>& dss,
      PacketBuffer& response, InternalQueryState&& ids)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:790,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:790,1
    - Dst: setThreadName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:793,1
    - Dst: getInitialUDPPacketBufferSize
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:794,1
    - Dst: std::vector::reserve
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:799,1
    - Dst: std::shared_ptr<DownstreamState>::sockets::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:799,1
    - Dst: std::shared_ptr<DownstreamState>::isStopped
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:803,1
    - Dst: std::shared_ptr<DownstreamState>::waitUntilConnected
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:812,1
    - Dst: std::shared_ptr<DownstreamState>::pickSocketsReadyForReceiving
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:816,1
    - Dst: std::shared_ptr<DownstreamState>::isStopped
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:820,1
    - Dst: PacketBuffer::resize
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:827,1
    - Dst: recv
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:828,1
    - Dst: PacketBuffer::data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:828,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:828,1
    - Dst: std::shared_ptr<DownstreamState>::isStopped
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:830,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:834,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:834,1
    - Dst: PacketBuffer::resize
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:838,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:838,1
    - Dst: PacketBuffer::data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:839,1
    - Dst: std::shared_ptr<DownstreamState>::getState
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:842,1
    - Dst: auto::isXSK
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:847,1
    - Dst: std::shared_ptr<DownstreamState>::restoreState
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:848,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:848,1
    - Dst: dnsdist::configuration::refreshLocalRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:852,1
    - Dst: processResponderPacket
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:853,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:853,1
    - Dst: auto::isXSK
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:853,1
    - Dst: getEmptyFrame
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:856,1
    - Dst: auto::setHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:860,1
    - Dst: auto::setPayload
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:861,1
    - Dst: auto::addDelay
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:864,1
    - Dst: auto::updatePacket
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:866,1
    - Dst: pushToSendQueue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:867,1
    - Dst: notifyXskSocket
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:868,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:874,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:874,1
    - Dst: std::shared_ptr<DownstreamState>::d_config::remote::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:874,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:874,1
    - Dst: auto::error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:875,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:875,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:875,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:880,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:880,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:880,1
    - Dst: auto::error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:881,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:881,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:884,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:884,1
    - Dst: auto::error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:885,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:888,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:888,1
    - Dst: auto::info
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:889,1
    CyclomaticComplexity: 29
    EdgeCount: 29
    ICount: 60
    argCount: 1
    argNames:
    - dss
    argTypes:
    - std::shared_ptr<DownstreamState>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 891
      start: 788
    functionDepth: 3
    functionLinenumber: 788
    functionLinenumberEnd: 891
    functionName: responderThread
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.cc
    functionUses: 0
    functionsReached:
    - errlog
    - std::shared_ptr<DownstreamState>::pickSocketsReadyForReceiving
    - pushToSendQueue
    - PacketBuffer::size
    - auto::isXSK
    - std::shared_ptr<DownstreamState>::isStopped
    - recv
    - static_cast<size_t>
    - SLOG
    - Logging::Loggable
    - processResponderPacket
    - auto::error
    - dnsdist::logging::getTopLogger
    - setThreadName
    - auto::info
    - std::shared_ptr<DownstreamState>::waitUntilConnected
    - auto::setHeader
    - notifyXskSocket
    - getInitialUDPPacketBufferSize
    - auto::updatePacket
    - VERBOSESLOG
    - std::vector::reserve
    - std::shared_ptr<DownstreamState>::getState
    - std::move
    - PacketBuffer::data
    - std::shared_ptr<DownstreamState>::d_config::remote::toStringWithPort
    - auto::setPayload
    - what
    - infolog
    - std::shared_ptr<DownstreamState>::restoreState
    - std::shared_ptr<DownstreamState>::sockets::size
    - auto::addDelay
    - PacketBuffer::resize
    - dnsdist::configuration::refreshLocalRuntimeConfiguration
    - getEmptyFrame
    linkageType: ''
    returnType: void
    signature: void responderThread(std::shared_ptr<DownstreamState> dss)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: stringtok
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:902,1
    - Dst: dnsdist::self_answers::generateAnswerFromRDataEntries
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:903,1
    - Dst: stringtok
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:907,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:909,1
    - Dst: dnsdist::self_answers::generateAnswerFromIPAddresses
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:913,1
    - Dst: dnsdist::self_answers::generateAnswerFromCNAME
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:917,1
    - Dst: std::vector::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:925,1
    - Dst: dnsdist::self_answers::generateAnswerFromIPAddresses
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:930,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 21
    argCount: 3
    argNames:
    - ' dnsQuestion'
    - ' spoofContent'
    - raw
    argTypes:
    - DNSQuestion
    - string
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 933
      start: 895
    functionDepth: 1
    functionLinenumber: 895
    functionLinenumberEnd: 933
    functionName: spoofResponseFromString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.cc
    functionUses: 0
    functionsReached:
    - stringtok
    - std::vector::size
    - dnsdist::self_answers::generateAnswerFromIPAddresses
    - std::vector::emplace_back
    - dnsdist::self_answers::generateAnswerFromCNAME
    - dnsdist::self_answers::generateAnswerFromRDataEntries
    linkageType: ''
    returnType: void
    signature: void spoofResponseFromString(DNSQuestion& dnsQuestion, const string&
      spoofContent, bool raw)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::self_answers::generateAnswerFromRawPacket
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:938,1
    - Dst: PacketBuffer
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:938,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:938,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:938,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:938,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' dnsQuestion'
    - ' spoofContent'
    argTypes:
    - DNSQuestion
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 939
      start: 935
    functionDepth: 1
    functionLinenumber: 935
    functionLinenumberEnd: 939
    functionName: spoofPacketFromString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.cc
    functionUses: 0
    functionsReached:
    - PacketBuffer
    - dnsdist::self_answers::generateAnswerFromRawPacket
    - size
    - data
    linkageType: ''
    returnType: void
    signature: void spoofPacketFromString(DNSQuestion& dnsQuestion, const string&
      spoofContent)
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: isAsynchronous
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:943,1
    - Dst: dnsdist::self_answers::removeRecordsAndSetRCode
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:948,1
    - Dst: setRCode
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:961,1
    - Dst: setRCode
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:965,1
    - Dst: setRCode
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:969,1
    - Dst: spoofResponseFromString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:973,1
    - Dst: spoofPacketFromString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:977,1
    - Dst: spoofResponseFromString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:981,1
    - Dst: overTCP
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:985,1
    - Dst: dnsdist::PacketMangling::editDNSHeaderFromPacket
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:986,1
    - Dst: getMutableData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:986,1
    - Dst: dnsdist::PacketMangling::editDNSHeaderFromPacket
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1008,1
    - Dst: getMutableData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1008,1
    - Dst: pdns::checked_stoi_into
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1016,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 76
    argCount: 4
    argNames:
    - ' action'
    - ' dnsQuestion'
    - ' ruleresult'
    - ' drop'
    argTypes:
    - DNSAction::Action
    - DNSQuestion
    - std::string
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1028
      start: 941
    functionDepth: 2
    functionLinenumber: 941
    functionLinenumberEnd: 1028
    functionName: processRulesResult
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.cc
    functionUses: 2
    functionsReached:
    - getMutableData
    - setRCode
    - isAsynchronous
    - pdns::checked_stoi_into
    - spoofPacketFromString
    - overTCP
    - dnsdist::PacketMangling::editDNSHeaderFromPacket
    - dnsdist::self_answers::removeRecordsAndSetRCode
    - spoofResponseFromString
    linkageType: ''
    returnType: bool
    signature: bool processRulesResult(const DNSAction::Action& action, DNSQuestion&
      dnsQuestion, std::string& ruleresult, bool& drop)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1032,1
    - Dst: ids::getCloser
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1040,1
    - Dst: ids::getRulesCloser
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1044,1
    - Dst: d_rule::matches
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1046,1
    - Dst: processRulesResult
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1052,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 2
    argNames:
    - ' rules'
    - ' dnsQuestion'
    argTypes:
    - std::vector<dnsdist::rules::RuleAction>
    - DNSQuestion
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1058
      start: 1030
    functionDepth: 0
    functionLinenumber: 1030
    functionLinenumberEnd: 1058
    functionName: applyRulesChainToQuery
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.cc
    functionUses: 0
    functionsReached:
    - ids::getCloser
    - processRulesResult
    - d_rule::matches
    - ids::getRulesCloser
    - empty
    linkageType: ''
    returnType: bool
    signature: bool applyRulesChainToQuery(const std::vector<dnsdist::rules::RuleAction>&
      rules, DNSQuestion& dnsQuestion)
  - BBCount: 30
    BranchProfiles: []
    Callsites:
    - Dst: ids::getCloser
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1063,1
    - Dst: shouldRecordQueries
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1064,1
    - Dst: insertQuery
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1065,1
    - Dst: getData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1065,1
    - Dst: getHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1065,1
    - Dst: getProtocol
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1065,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1069,1
    - Dst: ids::qname::toLogString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1071,1
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1074,1
    - Dst: std::tie
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1075,1
    - Dst: d_queryCountConfig::d_filter
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1075,1
    - Dst: write_lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1079,1
    - Dst: auto::count
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1080,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1089,1
    - Dst: dnsdist::self_answers::removeRecordsAndSetRCode
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1091,1
    - Dst: dnsdist::DynamicBlocks::getClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1095,1
    - Dst: AddressAndPortRange
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1095,1
    - Dst: ids::origRemote::isIPv4
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1095,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1113,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1113,1
    - Dst: ids::origRemote::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1113,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1114,1
    - Dst: updateBlockStats
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1115,1
    - Dst: setRCode
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1117,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1121,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1121,1
    - Dst: ids::origRemote::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1121,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1122,1
    - Dst: updateBlockStats
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1123,1
    - Dst: setRCode
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1125,1
    - Dst: overTCP
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1129,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1130,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1130,1
    - Dst: ids::origRemote::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1130,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1131,1
    - Dst: updateBlockStats
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1132,1
    - Dst: dnsdist::PacketMangling::editDNSHeaderFromPacket
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1133,1
    - Dst: getMutableData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1133,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1144,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1144,1
    - Dst: ids::origRemote::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1144,1
    - Dst: ids::qname::toLogString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1144,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1145,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1149,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1149,1
    - Dst: ids::origRemote::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1149,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1150,1
    - Dst: updateBlockStats
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1151,1
    - Dst: dnsdist::PacketMangling::editDNSHeaderFromPacket
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1152,1
    - Dst: getMutableData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1152,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1159,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1159,1
    - Dst: ids::origRemote::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1159,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1160,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1165,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1165,1
    - Dst: ids::origRemote::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1165,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1166,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1166,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1166,1
    - Dst: updateBlockStats
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1167,1
    - Dst: setTag
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1168,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1173,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1173,1
    - Dst: ids::origRemote::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1173,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1174,1
    - Dst: updateBlockStats
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1175,1
    - Dst: dnsdist::DynamicBlocks::getSuffixDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1181,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1197,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1197,1
    - Dst: ids::origRemote::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1197,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1198,1
    - Dst: updateBlockStats
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1199,1
    - Dst: setRCode
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1201,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1204,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1204,1
    - Dst: ids::origRemote::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1204,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1205,1
    - Dst: updateBlockStats
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1206,1
    - Dst: setRCode
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1207,1
    - Dst: overTCP
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1210,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1211,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1211,1
    - Dst: ids::origRemote::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1211,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1212,1
    - Dst: updateBlockStats
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1213,1
    - Dst: dnsdist::PacketMangling::editDNSHeaderFromPacket
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1214,1
    - Dst: getMutableData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1214,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1225,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1225,1
    - Dst: ids::origRemote::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1225,1
    - Dst: ids::qname::toLogString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1225,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1226,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1230,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1230,1
    - Dst: ids::origRemote::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1230,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1231,1
    - Dst: updateBlockStats
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1232,1
    - Dst: dnsdist::PacketMangling::editDNSHeaderFromPacket
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1233,1
    - Dst: getMutableData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1233,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1240,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1240,1
    - Dst: ids::origRemote::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1240,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1241,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1246,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1246,1
    - Dst: ids::origRemote::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1246,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1247,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1247,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1247,1
    - Dst: updateBlockStats
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1248,1
    - Dst: setTag
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1249,1
    - Dst: updateBlockStats
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1254,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1255,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1255,1
    - Dst: ids::origRemote::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1255,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1256,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1263,1
    - Dst: dnsdist::rules::getRuleChain
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1264,1
    - Dst: applyRulesChainToQuery
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1265,1
    CyclomaticComplexity: 25
    EdgeCount: 25
    ICount: 145
    argCount: 2
    argNames:
    - ' dnsQuestion'
    - ' now'
    argTypes:
    - DNSQuestion
    - timespec
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1266
      start: 1060
    functionDepth: 2
    functionLinenumber: 1060
    functionLinenumberEnd: 1266
    functionName: applyRulesToQuery
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.cc
    functionUses: 0
    functionsReached:
    - getMutableData
    - ids::getCloser
    - auto::count
    - applyRulesChainToQuery
    - Logging::Loggable
    - dnsdist::DynamicBlocks::getSuffixDynamicRules
    - getProtocol
    - shouldRecordQueries
    - dnsdist::DynamicBlocks::getClientAddressDynamicRules
    - lock
    - insertQuery
    - updateBlockStats
    - setTag
    - std::tie
    - overTCP
    - getLogger
    - ids::origRemote::isIPv4
    - dnsdist::configuration::getCurrentRuntimeConfiguration
    - dnsdist::rules::getRuleChain
    - VERBOSESLOG
    - AddressAndPortRange
    - d_queryCountConfig::d_filter
    - getHeader
    - getData
    - ids::origRemote::toStringWithPort
    - setRCode
    - ids::qname::toLogString
    - infolog
    - write_lock
    - dnsdist::PacketMangling::editDNSHeaderFromPacket
    - dnsdist::self_answers::removeRecordsAndSetRCode
    linkageType: ''
    returnType: bool
    signature: bool applyRulesToQuery(DNSQuestion& dnsQuestion, const timespec& now)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: send
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1273,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1273,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1273,1
    - Dst: fillMSGHdr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1281,1
    - Dst: const_cast<char*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1281,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1281,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1281,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1281,1
    - Dst: addCMsgSrcAddr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1282,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1282,1
    - Dst: sendmsg
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1283,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1288,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1288,1
    - Dst: d_config::remote::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1288,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1288,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1289,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1289,1
    - Dst: reconnect
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1298,1
    - Dst: reportTimeoutOrError
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1300,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 18
    argCount: 4
    argNames:
    - ' backend'
    - socketDesc
    - ' request'
    - healthCheck
    argTypes:
    - std::shared_ptr<DownstreamState>
    - int
    - PacketBuffer
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1305
      start: 1268
    functionDepth: 1
    functionLinenumber: 1268
    functionLinenumberEnd: 1305
    functionName: udpClientSendRequestToBackend
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.cc
    functionUses: 1
    functionsReached:
    - sendmsg
    - const_cast<char*>
    - Logging::Loggable
    - stringerror
    - VERBOSESLOG
    - infolog
    - size
    - d_config::remote::toStringWithPort
    - reportTimeoutOrError
    - addCMsgSrcAddr
    - reinterpret_cast<const char*>
    - reconnect
    - send
    - dnsdist::logging::getTopLogger
    - data
    - fillMSGHdr
    - static_cast<int>
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t udpClientSendRequestToBackend(const std::shared_ptr<DownstreamState>&
      backend, const int socketDesc, const PacketBuffer& request, bool healthCheck)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1311,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1311,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1312,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1312,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1312,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1312,1
    - Dst: expectProxyProtocolFrom
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1318,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1319,1
    - Dst: match
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1319,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1320,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1320,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1320,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1321,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1321,1
    - Dst: HarvestDestinationAddress
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1326,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 25
    argCount: 5
    argNames:
    - ' clientState'
    - msgh
    - ' remote'
    - ' dest'
    - ' expectProxyProtocol'
    argTypes:
    - ClientState
    - struct msghdr*
    - ComboAddress
    - ComboAddress
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1352
      start: 1307
    functionDepth: 2
    functionLinenumber: 1307
    functionLinenumberEnd: 1352
    functionName: isUDPQueryAcceptable
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.cc
    functionUses: 0
    functionsReached:
    - expectProxyProtocolFrom
    - dnsdist::configuration::getCurrentRuntimeConfiguration
    - Logging::Loggable
    - VERBOSESLOG
    - infolog
    - match
    - dnsdist::logging::getTopLogger
    - toStringWithPort
    - HarvestDestinationAddress
    linkageType: ''
    returnType: bool
    signature: bool isUDPQueryAcceptable(ClientState& clientState, const struct msghdr*
      msgh, const ComboAddress& remote, ComboAddress& dest, bool& expectProxyProtocol)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: std::make_unique<DNSCryptQuery>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1359,1
    - Dst: handleDNSCryptQuery
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1361,1
    - Dst: PacketBuffer::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1364,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1365,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1368,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 5
    argNames:
    - ' clientState'
    - ' query'
    - ' dnsCryptQuery'
    - now
    - tcp
    argTypes:
    - ClientState
    - PacketBuffer
    - std::unique_ptr<DNSCryptQuery>
    - time_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1373
      start: 1354
    functionDepth: 2
    functionLinenumber: 1354
    functionLinenumberEnd: 1373
    functionName: checkDNSCryptQuery
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.cc
    functionUses: 0
    functionsReached:
    - std::move
    - std::runtime_error
    - std::make_unique<DNSCryptQuery>
    - handleDNSCryptQuery
    - PacketBuffer::empty
    linkageType: ''
    returnType: bool
    signature: bool checkDNSCryptQuery(const ClientState& clientState, [[maybe_unused]]
      PacketBuffer& query, [[maybe_unused]] std::unique_ptr<DNSCryptQuery>& dnsCryptQuery,
      [[maybe_unused]] time_t now, [[maybe_unused]] bool tcp)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1385,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 2
    argNames:
    - ' dnsHeader'
    - ' clientState'
    argTypes:
    - struct dnsheader
    - ClientState
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1395
      start: 1375
    functionDepth: 2
    functionLinenumber: 1375
    functionLinenumberEnd: 1395
    functionName: checkQueryHeaders
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.cc
    functionUses: 2
    functionsReached:
    - dnsdist::configuration::getCurrentRuntimeConfiguration
    linkageType: ''
    returnType: bool
    signature: bool checkQueryHeaders(const struct dnsheader& dnsHeader, ClientState&
      clientState)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: fillMSGHdr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1402,1
    - Dst: const_cast<char*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1402,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1402,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1402,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1402,1
    - Dst: const_cast<ComboAddress*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1402,1
    - Dst: addCMsgSrcAddr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1408,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 6
    argNames:
    - ' response'
    - ' dest'
    - ' remote'
    - ' outMsg'
    - iov
    - cbuf
    argTypes:
    - PacketBuffer
    - ComboAddress
    - ComboAddress
    - struct mmsghdr
    - struct iovec*
    - cmsgbuf_aligned*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1410
      start: 1398
    functionDepth: 0
    functionLinenumber: 1398
    functionLinenumberEnd: 1410
    functionName: queueResponse
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.cc
    functionUses: 0
    functionsReached:
    - const_cast<ComboAddress*>
    - const_cast<char*>
    - size
    - addCMsgSrcAddr
    - reinterpret_cast<const char*>
    - at
    - fillMSGHdr
    linkageType: ''
    returnType: void
    signature: void queueResponse(const PacketBuffer& response, const ComboAddress&
      dest, const ComboAddress& remote, struct mmsghdr& outMsg, struct iovec* iov,
      cmsgbuf_aligned* cbuf)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: getMutableData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1423,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1428,1
    - Dst: dnsdist::rules::getResponseRuleChain
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1429,1
    - Dst: dnsdist::rules::getResponseRuleChain
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1430,1
    - Dst: applyRulesToResponse
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1431,1
    - Dst: dnsdist::PacketMangling::restrictDNSPacketTTLs
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1436,1
    - Dst: DNSResponse::getMutableData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1436,1
    - Dst: dnsdist::edns::addExtendedDNSError
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1441,1
    - Dst: DNSResponse::getMutableData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1441,1
    - Dst: DNSResponse::getMaximumSize
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1441,1
    - Dst: dnsdist::edns::addEDNSPadding
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1446,1
    - Dst: DNSResponse::getMutableData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1446,1
    - Dst: DNSResponse::getMaximumSize
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1446,1
    - Dst: DNSResponse::isAsynchronous
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1453,1
    - Dst: encryptResponse
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1459,1
    - Dst: getMutableData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1459,1
    - Dst: getMaximumSize
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1459,1
    - Dst: overTCP
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1459,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 29
    argCount: 3
    argNames:
    - ' clientState'
    - ' dnsQuestion'
    - cacheHit
    argTypes:
    - ClientState
    - DNSQuestion
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1466
      start: 1420
    functionDepth: 2
    functionLinenumber: 1420
    functionLinenumberEnd: 1466
    functionName: prepareOutgoingResponse
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.cc
    functionUses: 0
    functionsReached:
    - dnsdist::PacketMangling::restrictDNSPacketTTLs
    - getMutableData
    - dnsdist::configuration::getCurrentRuntimeConfiguration
    - DNSResponse::getMaximumSize
    - dnsdist::edns::addExtendedDNSError
    - DNSResponse::isAsynchronous
    - dnsdist::edns::addEDNSPadding
    - getMaximumSize
    - dnsdist::rules::getResponseRuleChain
    - overTCP
    - DNSResponse::getMutableData
    - encryptResponse
    - applyRulesToResponse
    linkageType: ''
    returnType: bool
    signature: bool prepareOutgoingResponse([[maybe_unused]] const ClientState& clientState,
      DNSQuestion& dnsQuestion, bool cacheHit)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: fixUpQueryTurnedResponse
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1470,1
    - Dst: prepareOutgoingResponse
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1472,1
    - Dst: getHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1476,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 1
    argNames:
    - ' dnsQuestion'
    argTypes:
    - DNSQuestion
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1490
      start: 1468
    functionDepth: 3
    functionLinenumber: 1468
    functionLinenumberEnd: 1490
    functionName: handleQueryTurnedIntoSelfAnsweredResponse
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.cc
    functionUses: 0
    functionsReached:
    - getHeader
    - prepareOutgoingResponse
    - fixUpQueryTurnedResponse
    linkageType: ''
    returnType: ProcessQueryResult
    signature: ProcessQueryResult handleQueryTurnedIntoSelfAnsweredResponse(DNSQuestion&
      dnsQuestion)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ids::getCloser
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1495,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1497,1
    - Dst: getServers
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1498,1
    - Dst: getSelectedBackend
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1499,1
    - Dst: auto::setAttribute
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1502,1
    - Dst: auto::getNameWithAddr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1502,1
    - Dst: auto::setAttribute
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1503,1
    - Dst: libssl_tls_version_to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1503,1
    - Dst: auto::getID
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1503,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - ' dnsQuestion'
    - ' serverPool'
    argTypes:
    - DNSQuestion
    - ServerPool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1507
      start: 1492
    functionDepth: 2
    functionLinenumber: 1492
    functionLinenumberEnd: 1507
    functionName: selectBackendForOutgoingQuery
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.cc
    functionUses: 0
    functionsReached:
    - dnsdist::configuration::getCurrentRuntimeConfiguration
    - auto::setAttribute
    - getSelectedBackend
    - auto::getID
    - libssl_tls_version_to_string
    - auto::getNameWithAddr
    - ids::getCloser
    - getServers
    linkageType: ''
    returnType: ServerPolicy::SelectedBackend
    signature: ServerPolicy::SelectedBackend selectBackendForOutgoingQuery(DNSQuestion&
      dnsQuestion, const ServerPool& serverPool)
  - BBCount: 29
    BranchProfiles: []
    Callsites:
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1517,1
    - Dst: getHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1517,1
    - Dst: getHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1520,1
    - Dst: handleQueryTurnedIntoSelfAnsweredResponse
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1521,1
    - Dst: getPool
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1524,1
    - Dst: getServers
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1525,1
    - Dst: isConsistent
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1526,1
    - Dst: selectBackendForOutgoingQuery
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1527,1
    - Dst: overTCP
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1531,1
    - Dst: ServerPolicy::SelectedBackend::isTCPOnly
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1533,1
    - Dst: isTCPOnly
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1537,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1542,1
    - Dst: hasAtLeastOneServerAvailable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1542,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1543,1
    - Dst: dnsdist::getEDNSZ
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1547,1
    - Dst: getECS
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1550,1
    - Dst: getZeroScope
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1552,1
    - Dst: packetCache::isECSParsingEnabled
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1556,1
    - Dst: packetCache::get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1557,1
    - Dst: getHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1557,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1559,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1559,1
    - Dst: ids::qname::toLogString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1559,1
    - Dst: QType
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1559,1
    - Dst: ids::origRemote::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1559,1
    - Dst: ids::protocol::toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1559,1
    - Dst: getData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1559,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1560,1
    - Dst: prepareOutgoingResponse
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1562,1
    - Dst: sendAnswer
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1566,1
    - Dst: handleEDNSClientSubnet
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1575,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1576,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1576,1
    - Dst: ids::origRemote::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1576,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1577,1
    - Dst: packetCache::get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1587,1
    - Dst: getHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1587,1
    - Dst: dnsdist::PacketMangling::editDNSHeaderFromPacket
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1589,1
    - Dst: getMutableData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1589,1
    - Dst: restoreFlags
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1590,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1594,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1594,1
    - Dst: ids::qname::toLogString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1594,1
    - Dst: QType
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1594,1
    - Dst: ids::origRemote::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1594,1
    - Dst: ids::protocol::toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1594,1
    - Dst: getData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1594,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1595,1
    - Dst: prepareOutgoingResponse
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1597,1
    - Dst: sendAnswer
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1601,1
    - Dst: packetCache::get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1606,1
    - Dst: getHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1606,1
    - Dst: prepareOutgoingResponse
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1607,1
    - Dst: sendAnswer
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1611,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1615,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1615,1
    - Dst: ids::qname::toLogString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1615,1
    - Dst: QType
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1615,1
    - Dst: ids::origRemote::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1615,1
    - Dst: ids::protocol::toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1615,1
    - Dst: getData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1615,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1616,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1622,1
    - Dst: dnsdist::rules::getRuleChain
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1623,1
    - Dst: applyRulesChainToQuery
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1625,1
    - Dst: getHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1628,1
    - Dst: handleQueryTurnedIntoSelfAnsweredResponse
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1629,1
    - Dst: getPool
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1634,1
    - Dst: selectBackendForOutgoingQuery
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1636,1
    - Dst: selectBackendForOutgoingQuery
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1645,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1649,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1652,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1652,1
    - Dst: ids::qname::toLogString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1652,1
    - Dst: QType
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1652,1
    - Dst: ids::origRemote::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1652,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1653,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1653,1
    - Dst: dnsdist::self_answers::removeRecordsAndSetRCode
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1656,1
    - Dst: fixUpQueryTurnedResponse
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1658,1
    - Dst: prepareOutgoingResponse
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1660,1
    - Dst: sendAnswer
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1663,1
    - Dst: getFlagsFromDNSHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1670,1
    - Dst: getHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1670,1
    - Dst: getProtocol
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1672,1
    - Dst: std::make_unique<std::vector<ProxyProtocolValue>>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1674,1
    - Dst: proxyProtocolValues::push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1676,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1676,1
    - Dst: ServerPolicy::SelectedBackend::incQueriesCount
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1679,1
    - Dst: ServerPolicy::SelectedBackend::get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1680,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1684,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1684,1
    - Dst: overTCP
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1684,1
    - Dst: ids::origRemote::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1684,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1684,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1685,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1685,1
    CyclomaticComplexity: 52
    EdgeCount: 52
    ICount: 111
    argCount: 2
    argNames:
    - ' dnsQuestion'
    - ' outgoingBackend'
    argTypes:
    - DNSQuestion
    - std::shared_ptr<DownstreamState>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1688
      start: 1510
    functionDepth: 4
    functionLinenumber: 1510
    functionLinenumberEnd: 1688
    functionName: processQueryAfterRules
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.cc
    functionUses: 0
    functionsReached:
    - getMutableData
    - ServerPolicy::SelectedBackend::get
    - ntohs
    - prepareOutgoingResponse
    - std::make_unique<std::vector<ProxyProtocolValue>>
    - getFlagsFromDNSHeader
    - fixUpQueryTurnedResponse
    - applyRulesChainToQuery
    - Logging::Loggable
    - QType
    - getPool
    - getProtocol
    - dnsdist::getEDNSZ
    - overTCP
    - packetCache::isECSParsingEnabled
    - hasAtLeastOneServerAvailable
    - getServers
    - getLogger
    - sendAnswer
    - dnsdist::configuration::getCurrentRuntimeConfiguration
    - dnsdist::rules::getRuleChain
    - selectBackendForOutgoingQuery
    - VERBOSESLOG
    - getECS
    - static_cast<uint8_t>
    - handleQueryTurnedIntoSelfAnsweredResponse
    - getHeader
    - isConsistent
    - getData
    - proxyProtocolValues::push_back
    - ids::origRemote::toStringWithPort
    - packetCache::get
    - ServerPolicy::SelectedBackend::isTCPOnly
    - ids::qname::toLogString
    - what
    - ids::protocol::toString
    - infolog
    - restoreFlags
    - handleEDNSClientSubnet
    - ServerPolicy::SelectedBackend::incQueriesCount
    - getZeroScope
    - isTCPOnly
    - dnsdist::PacketMangling::editDNSHeaderFromPacket
    - dnsdist::self_answers::removeRecordsAndSetRCode
    linkageType: ''
    returnType: ProcessQueryResult
    signature: ProcessQueryResult processQueryAfterRules(DNSQuestion& dnsQuestion,
      std::shared_ptr<DownstreamState>& outgoingBackend)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::PacketMangling::editDNSHeaderFromPacket
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1694,1
    - Dst: memset
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1695,1
    - Dst: restoreFlags
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1697,1
    - Dst: DNSResponse::getProtocol
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1705,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1707,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1707,1
    - Dst: auto::toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1707,1
    - Dst: DNSResponse::getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1708,1
    - Dst: std::dynamic_pointer_cast<IncomingHTTP2Connection>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1712,1
    - Dst: active
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1714,1
    - Dst: std::dynamic_pointer_cast<IncomingTCPConnectionState>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1719,1
    - Dst: active
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1720,1
    - Dst: applyRulesToResponse
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1726,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1729,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1729,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1729,1
    - Dst: DNSResponse::getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1730,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1730,1
    - Dst: DNSResponse::isAsynchronous
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1733,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 27
    argCount: 4
    argNames:
    - ' rules'
    - ' ids'
    - ' d_ds'
    - ' sender'
    argTypes:
    - std::vector<dnsdist::rules::ResponseRuleAction>
    - InternalQueryState
    - std::shared_ptr<DownstreamState>
    - std::shared_ptr<TCPQuerySender>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1734
      start: 1690
    functionDepth: 2
    functionLinenumber: 1690
    functionLinenumberEnd: 1734
    functionName: handleTimeoutResponseRules
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.cc
    functionUses: 3
    functionsReached:
    - what
    - std::dynamic_pointer_cast<IncomingHTTP2Connection>
    - DNSResponse::isAsynchronous
    - restoreFlags
    - VERBOSESLOG
    - infolog
    - memset
    - auto::toString
    - active
    - dnsdist::PacketMangling::editDNSHeaderFromPacket
    - DNSResponse::getProtocol
    - std::dynamic_pointer_cast<IncomingTCPConnectionState>
    - applyRulesToResponse
    - DNSResponse::getLogger
    linkageType: ''
    returnType: bool
    signature: bool handleTimeoutResponseRules(const std::vector<dnsdist::rules::ResponseRuleAction>&
      rules, InternalQueryState& ids, const std::shared_ptr<DownstreamState>& d_ds,
      const std::shared_ptr<TCPQuerySender>& sender)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1739,1
    - Dst: dnsdist::lua::hooks::runServerStateChangeHooks
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1740,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1743,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1743,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1743,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1744,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1744,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1744,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - ' nameWithAddr'
    - newResult
    argTypes:
    - string
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1746
      start: 1736
    functionDepth: 1
    functionLinenumber: 1736
    functionLinenumberEnd: 1746
    functionName: handleServerStateChange
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.cc
    functionUses: 1
    functionsReached:
    - SLOG
    - dnsdist::lua::hooks::runServerStateChangeHooks
    - Logging::Loggable
    - what
    - warnlog
    - lock
    - dnsdist::logging::getTopLogger
    linkageType: ''
    returnType: void
    signature: void handleServerStateChange(const string& nameWithAddr, bool newResult)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1751
      start: 1751
    functionDepth: 0
    functionLinenumber: 1751
    functionLinenumberEnd: 1751
    functionName: UDPTCPCrossQuerySender::UDPTCPCrossQuerySender
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void UDPTCPCrossQuerySender()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1752
      start: 1752
    functionDepth: 0
    functionLinenumber: 1752
    functionLinenumberEnd: 1752
    functionName: UDPTCPCrossQuerySender::UDPTCPCrossQuerySender
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void UDPTCPCrossQuerySender(const UDPTCPCrossQuerySender&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1753
      start: 1753
    functionDepth: 0
    functionLinenumber: 1753
    functionLinenumberEnd: 1753
    functionName: '& operator=(const UDPTCPCrossQuerySender&)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: UDPTCPCrossQuerySender
    signature: UDPTCPCrossQuerySender & operator=(const UDPTCPCrossQuerySender&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1754
      start: 1754
    functionDepth: 0
    functionLinenumber: 1754
    functionLinenumberEnd: 1754
    functionName: UDPTCPCrossQuerySender::UDPTCPCrossQuerySender
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void UDPTCPCrossQuerySender(UDPTCPCrossQuerySender&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1755
      start: 1755
    functionDepth: 0
    functionLinenumber: 1755
    functionLinenumberEnd: 1755
    functionName: '& operator=(UDPTCPCrossQuerySender&&)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: UDPTCPCrossQuerySender
    signature: UDPTCPCrossQuerySender & operator=(UDPTCPCrossQuerySender&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1756
      start: 1756
    functionDepth: 0
    functionLinenumber: 1756
    functionLinenumberEnd: 1756
    functionName: ~UDPTCPCrossQuerySender() override
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~UDPTCPCrossQuerySender() override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1761
      start: 1758
    functionDepth: 0
    functionLinenumber: 1758
    functionLinenumberEnd: 1761
    functionName: UDPTCPCrossQuerySender::active
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool active() const override
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1767,1
    - Dst: handleResponseForUDPClient
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1772,1
    - Dst: isAsync
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1772,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 6
    argCount: 2
    argNames:
    - ' now'
    - ' response'
    argTypes:
    - struct timeval
    - TCPResponse
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1773
      start: 1763
    functionDepth: 5
    functionLinenumber: 1763
    functionLinenumberEnd: 1773
    functionName: UDPTCPCrossQuerySender::handleResponse
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.cc
    functionUses: 0
    functionsReached:
    - isAsync
    - handleResponseForUDPClient
    - std::runtime_error
    linkageType: ''
    returnType: void
    signature: void handleResponse(const struct timeval& now, TCPResponse&& response)
      override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: UDPTCPCrossQuerySender::handleResponse
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1777,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1777,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 2
    argNames:
    - ' now'
    - ' response'
    argTypes:
    - struct timeval
    - TCPResponse
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1778
      start: 1775
    functionDepth: 0
    functionLinenumber: 1775
    functionLinenumberEnd: 1778
    functionName: UDPTCPCrossQuerySender::handleXFRResponse
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.cc
    functionUses: 0
    functionsReached:
    - std::move
    - UDPTCPCrossQuerySender::handleResponse
    linkageType: ''
    returnType: void
    signature: void handleXFRResponse(const struct timeval& now, TCPResponse&& response)
      override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - ' now'
    - ' response'
    argTypes:
    - struct timeval
    - TCPResponse
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1783
      start: 1780
    functionDepth: 0
    functionLinenumber: 1780
    functionLinenumberEnd: 1783
    functionName: UDPTCPCrossQuerySender::notifyIOError
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void notifyIOError([[maybe_unused]] const struct timeval& now, [[maybe_unused]]
      TCPResponse&& response) override
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: InternalQuery
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1790,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1790,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1790,1
    - Dst: getEDNSUDPPayloadSizeAndZ
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1798,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1798,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1798,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1798,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 10
    argCount: 3
    argNames:
    - ' buffer_'
    - ' ids_'
    - backend
    argTypes:
    - PacketBuffer
    - InternalQueryState
    - std::shared_ptr<DownstreamState>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1806
      start: 1789
    functionDepth: 0
    functionLinenumber: 1789
    functionLinenumberEnd: 1806
    functionName: UDPCrossProtocolQuery::UDPCrossProtocolQuery
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.cc
    functionUses: 0
    functionsReached:
    - getEDNSUDPPayloadSizeAndZ
    - std::move
    - InternalQuery
    - size
    - reinterpret_cast<const char*>
    - data
    linkageType: ''
    returnType: void
    signature: void UDPCrossProtocolQuery(PacketBuffer&& buffer_, InternalQueryState&&
      ids_, std::shared_ptr<DownstreamState> backend)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1807
      start: 1807
    functionDepth: 0
    functionLinenumber: 1807
    functionLinenumberEnd: 1807
    functionName: UDPCrossProtocolQuery::UDPCrossProtocolQuery
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void UDPCrossProtocolQuery(const UDPCrossProtocolQuery&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1808
      start: 1808
    functionDepth: 0
    functionLinenumber: 1808
    functionLinenumberEnd: 1808
    functionName: '& operator=(const UDPCrossProtocolQuery&)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: UDPCrossProtocolQuery
    signature: UDPCrossProtocolQuery & operator=(const UDPCrossProtocolQuery&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1809
      start: 1809
    functionDepth: 0
    functionLinenumber: 1809
    functionLinenumberEnd: 1809
    functionName: UDPCrossProtocolQuery::UDPCrossProtocolQuery
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void UDPCrossProtocolQuery(UDPCrossProtocolQuery&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1810
      start: 1810
    functionDepth: 0
    functionLinenumber: 1810
    functionLinenumberEnd: 1810
    functionName: '& operator=(UDPCrossProtocolQuery&&)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: UDPCrossProtocolQuery
    signature: UDPCrossProtocolQuery & operator=(UDPCrossProtocolQuery&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1811
      start: 1811
    functionDepth: 0
    functionLinenumber: 1811
    functionLinenumberEnd: 1811
    functionName: ~UDPCrossProtocolQuery() override
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~UDPCrossProtocolQuery() override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1816
      start: 1813
    functionDepth: 0
    functionLinenumber: 1813
    functionLinenumberEnd: 1816
    functionName: UDPCrossProtocolQuery::getTCPQuerySender
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::shared_ptr<TCPQuerySender>
    signature: std::shared_ptr<TCPQuerySender> getTCPQuerySender() override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1827,1
    - Dst: std::make_unique<UDPCrossProtocolQuery>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1828,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1828,1
    - Dst: getMutableData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1828,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1828,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ' dnsQuestion'
    argTypes:
    - DNSQuestion
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1829
      start: 1825
    functionDepth: 1
    functionLinenumber: 1825
    functionLinenumberEnd: 1829
    functionName: getUDPCrossProtocolQueryFromDQ
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.cc
    functionUses: 2
    functionsReached:
    - getHeader
    - std::make_unique<UDPCrossProtocolQuery>
    - std::move
    - getMutableData
    linkageType: ''
    returnType: std::unique_ptr<CrossProtocolQuery>
    signature: std::unique_ptr<CrossProtocolQuery> getUDPCrossProtocolQueryFromDQ(DNSQuestion&
      dnsQuestion)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ids::getCloser
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1833,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1834,1
    - Dst: getHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1834,1
    - Dst: gettime
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1840,1
    - Dst: getProtocol
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1842,1
    - Dst: getProtocol
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1842,1
    - Dst: getProtocol
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1842,1
    - Dst: dnsdist::self_answers::removeRecordsAndSetRCode
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1843,1
    - Dst: processQueryAfterRules
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1844,1
    - Dst: applyRulesToQuery
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1847,1
    - Dst: isAsynchronous
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1851,1
    - Dst: processQueryAfterRules
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1855,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1858,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1858,1
    - Dst: overTCP
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1858,1
    - Dst: ids::origRemote::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1858,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1858,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1859,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1859,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1859,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 18
    argCount: 2
    argNames:
    - ' dnsQuestion'
    - ' selectedBackend'
    argTypes:
    - DNSQuestion
    - std::shared_ptr<DownstreamState>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1862
      start: 1831
    functionDepth: 3
    functionLinenumber: 1831
    functionLinenumberEnd: 1862
    functionName: processQuery
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.cc
    functionUses: 3
    functionsReached:
    - ntohs
    - isAsynchronous
    - what
    - Logging::Loggable
    - getProtocol
    - getHeader
    - processQueryAfterRules
    - VERBOSESLOG
    - infolog
    - overTCP
    - gettime
    - ids::getCloser
    - applyRulesToQuery
    - dnsdist::self_answers::removeRecordsAndSetRCode
    - ids::origRemote::toStringWithPort
    - getLogger
    linkageType: ''
    returnType: ProcessQueryResult
    signature: ProcessQueryResult processQuery(DNSQuestion& dnsQuestion, std::shared_ptr<DownstreamState>&
      selectedBackend)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: ids::getCloser
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1866,1
    - Dst: addProxyProtocol
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1875,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1880,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1880,1
    - Dst: ids::origDest::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1880,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1880,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1881,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1881,1
    - Dst: std::make_unique<PacketBuffer>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1887,1
    - Dst: pickSocketForSending
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1891,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1898,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1898,1
    - Dst: ids::qname::toLogString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1898,1
    - Dst: QType
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1898,1
    - Dst: ids::origRemote::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1898,1
    - Dst: getNameWithAddr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1898,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1899,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1899,1
    - Dst: getName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1899,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1899,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1899,1
    - Dst: ids::getTracer
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1902,1
    - Dst: pdns::trace::dnsdist::addTraceparentEdnsOptionToPacketBuffer
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1903,1
    - Dst: getMutableData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1904,1
    - Dst: ids::qname::wirelength
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1906,1
    - Dst: saveState
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1916,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1916,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1918,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1918,1
    - Dst: udpClientSendRequestToBackend
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1926,1
    - Dst: getState
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1935,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1937,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 45
    argCount: 5
    argNames:
    - ' downstream'
    - queryID
    - ' dnsQuestion'
    - ' query'
    - actuallySend
    argTypes:
    - std::shared_ptr<DownstreamState>
    - uint16_t
    - DNSQuestion
    - PacketBuffer
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1949
      start: 1864
    functionDepth: 2
    functionLinenumber: 1864
    functionLinenumberEnd: 1949
    functionName: assignOutgoingUDPQueryToBackend
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.cc
    functionUses: 0
    functionsReached:
    - getMutableData
    - ids::getTracer
    - ids::getCloser
    - pdns::trace::dnsdist::addTraceparentEdnsOptionToPacketBuffer
    - std::make_unique<PacketBuffer>
    - addProxyProtocol
    - udpClientSendRequestToBackend
    - getName
    - Logging::Loggable
    - QType
    - getNameWithAddr
    - at
    - getLogger
    - ids::origDest::toStringWithPort
    - getState
    - VERBOSESLOG
    - ids::qname::wirelength
    - saveState
    - ids::origRemote::toStringWithPort
    - memcpy
    - std::move
    - what
    - ids::qname::toLogString
    - pickSocketForSending
    - infolog
    linkageType: ''
    returnType: bool
    signature: bool assignOutgoingUDPQueryToBackend(std::shared_ptr<DownstreamState>&
      downstream, uint16_t queryID, DNSQuestion& dnsQuestion, PacketBuffer& query,
      bool actuallySend)
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1953,1
    - Dst: InternalQueryState::getCloser
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1957,1
    - Dst: isUDPQueryAcceptable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1966,1
    - Dst: handleProxyProtocol
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1985,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1985,1
    - Dst: InternalQueryState::queryRealTime::start
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1989,1
    - Dst: checkDNSCryptQuery
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1991,1
    - Dst: sendUDPResponse
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:1994,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2001,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2002,1
    - Dst: checkQueryHeaders
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2004,1
    - Dst: dnsdist::PacketMangling::editDNSHeaderFromPacket
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2009,1
    - Dst: sendUDPResponse
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2016,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2023,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2023,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2023,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2023,1
    - Dst: getFlagsFromDNSHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2028,1
    - Dst: DNSQuestion::getHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2028,1
    - Dst: std::vector::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2031,1
    - Dst: make_unique<std::vector<ProxyProtocolValue>>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2032,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2032,1
    - Dst: getEDNSUDPPayloadSizeAndZ
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2039,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2039,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2039,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2039,1
    - Dst: processQuery
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2048,1
    - Dst: DNSQuestion::getHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2055,1
    - Dst: handleResponseTC4UDPClient
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2058,1
    - Dst: queueResponse
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2062,1
    - Dst: handleResponseSent
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2064,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2064,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2064,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2064,1
    - Dst: sendUDPResponse
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2071,1
    - Dst: handleResponseSent
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2074,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2074,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2074,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2074,1
    - Dst: std::shared_ptr::isTCPOnly
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2082,1
    - Dst: getProxyProtocolPayload
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2087,1
    - Dst: std::make_unique<UDPCrossProtocolQuery>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2091,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2091,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2091,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2092,1
    - Dst: std::shared_ptr::passCrossProtocolQuery
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2094,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2094,1
    - Dst: assignOutgoingUDPQueryToBackend
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2098,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2101,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2101,1
    - Dst: InternalQueryState::origRemote::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2101,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2101,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2102,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2102,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2102,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2102,1
    CyclomaticComplexity: 29
    EdgeCount: 29
    ICount: 91
    argCount: 9
    argNames:
    - ' clientState'
    - msgh
    - ' remote'
    - ' dest'
    - ' query'
    - responsesVect
    - queuedResponses
    - respIOV
    - respCBuf
    argTypes:
    - ClientState
    - struct msghdr*
    - ComboAddress
    - ComboAddress
    - PacketBuffer
    - std::vector<mmsghdr>*
    - unsigned int*
    - struct iovec*
    - cmsgbuf_aligned*
    assertStmts:
    - condition: (responsesVect == nullptr || (queuedResponses != nullptr && respIOV
        != nullptr && respCBuf != nullptr))
      pos:
        line_end: 1952
        line_start: 1952
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist.cc
    constantsTouched: []
    func_position:
      end: 2104
      start: 1951
    functionDepth: 4
    functionLinenumber: 1951
    functionLinenumberEnd: 2104
    functionName: processUDPQuery
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.cc
    functionUses: 0
    functionsReached:
    - processQuery
    - ntohs
    - queueResponse
    - getFlagsFromDNSHeader
    - handleResponseSent
    - DNSQuestion::getHeader
    - getEDNSUDPPayloadSizeAndZ
    - std::shared_ptr::isTCPOnly
    - InternalQueryState::getCloser
    - Logging::Loggable
    - assert
    - size
    - std::shared_ptr::passCrossProtocolQuery
    - handleProxyProtocol
    - dnsdist::logging::getTopLogger
    - isUDPQueryAcceptable
    - getProxyProtocolPayload
    - std::make_unique<UDPCrossProtocolQuery>
    - dnsdist::configuration::getCurrentRuntimeConfiguration
    - InternalQueryState::origRemote::toStringWithPort
    - VERBOSESLOG
    - sendUDPResponse
    - DNSName
    - checkDNSCryptQuery
    - reinterpret_cast<const char*>
    - assignOutgoingUDPQueryToBackend
    - std::vector::empty
    - ComboAddress
    - std::move
    - what
    - infolog
    - make_unique<std::vector<ProxyProtocolValue>>
    - checkQueryHeaders
    - handleResponseTC4UDPClient
    - InternalQueryState::queryRealTime::start
    - dnsdist::PacketMangling::editDNSHeaderFromPacket
    - data
    linkageType: ''
    returnType: void
    signature: void processUDPQuery(ClientState& clientState, const struct msghdr*
      msgh, const ComboAddress& remote, ComboAddress& dest, PacketBuffer& query, std::vector<mmsghdr>*
      responsesVect, unsigned int* queuedResponses, struct iovec* respIOV, cmsgbuf_aligned*
      respCBuf)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: getFromAddr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2112,1
    - Dst: getToAddr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2113,1
    - Dst: cloneHeaderToPacketBuffer
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2121,1
    - Dst: dnsdist::xsk::XskIsQueryAcceptable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2125,1
    - Dst: clonePacketBuffer
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2129,1
    - Dst: handleProxyProtocol
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2131,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2131,1
    - Dst: InternalQueryState::queryRealTime::start
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2135,1
    - Dst: checkDNSCryptQuery
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2137,1
    - Dst: setPayload
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2139,1
    - Dst: auto::data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2145,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2146,1
    - Dst: checkQueryHeaders
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2148,1
    - Dst: dnsdist::PacketMangling::editDNSHeaderFromPacket
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2153,1
    - Dst: setPayload
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2158,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2164,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2164,1
    - Dst: auto::data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2164,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2164,1
    - Dst: std::vector::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2172,1
    - Dst: make_unique<std::vector<ProxyProtocolValue>>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2173,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2173,1
    - Dst: processQuery
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2176,1
    - Dst: setPayload
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2183,1
    - Dst: addDelay
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2185,1
    - Dst: DNSQuestion::getHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2187,1
    - Dst: handleResponseSent
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2188,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2188,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2188,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2188,1
    - Dst: DNSQuestion::getHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2197,1
    - Dst: std::shared_ptr::isTCPOnly
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2198,1
    - Dst: getProxyProtocolPayload
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2203,1
    - Dst: std::make_unique<UDPCrossProtocolQuery>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2207,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2207,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2207,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2208,1
    - Dst: std::shared_ptr::passCrossProtocolQuery
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2210,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2210,1
    - Dst: std::shared_ptr::d_xskInfos::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2214,1
    - Dst: assignOutgoingUDPQueryToBackend
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2215,1
    - Dst: assignOutgoingUDPQueryToBackend
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2219,1
    - Dst: std::shared_ptr::pickSourceAddressForSending
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2220,1
    - Dst: setAddr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2221,1
    - Dst: setPayload
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2222,1
    - Dst: rewrite
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2223,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2227,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2227,1
    - Dst: InternalQueryState::origRemote::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2227,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2227,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2228,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2228,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2228,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2228,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 80
    argCount: 2
    argNames:
    - ' clientState'
    - ' packet'
    argTypes:
    - ClientState
    - XskPacket
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2231
      start: 2109
    functionDepth: 3
    functionLinenumber: 2109
    functionLinenumberEnd: 2231
    functionName: dnsdist::xsk::XskProcessQuery
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.cc
    functionUses: 2
    functionsReached:
    - processQuery
    - ntohs
    - std::shared_ptr::pickSourceAddressForSending
    - handleResponseSent
    - DNSQuestion::getHeader
    - auto::size
    - setPayload
    - std::shared_ptr::isTCPOnly
    - std::shared_ptr::d_xskInfos::empty
    - Logging::Loggable
    - std::shared_ptr::passCrossProtocolQuery
    - handleProxyProtocol
    - dnsdist::xsk::XskIsQueryAcceptable
    - dnsdist::logging::getTopLogger
    - getProxyProtocolPayload
    - getToAddr
    - std::make_unique<UDPCrossProtocolQuery>
    - dnsdist::configuration::getCurrentRuntimeConfiguration
    - InternalQueryState::origRemote::toStringWithPort
    - VERBOSESLOG
    - auto::data
    - DNSName
    - checkDNSCryptQuery
    - reinterpret_cast<const char*>
    - assignOutgoingUDPQueryToBackend
    - std::vector::empty
    - ComboAddress
    - setAddr
    - std::move
    - rewrite
    - what
    - getFromAddr
    - infolog
    - make_unique<std::vector<ProxyProtocolValue>>
    - clonePacketBuffer
    - checkQueryHeaders
    - addDelay
    - cloneHeaderToPacketBuffer
    - InternalQueryState::queryRealTime::start
    - dnsdist::PacketMangling::editDNSHeaderFromPacket
    linkageType: ''
    returnType: bool
    signature: bool XskProcessQuery(ClientState& clientState, XskPacket& packet)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: getFromAddr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2112,1
    - Dst: getToAddr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2113,1
    - Dst: cloneHeaderToPacketBuffer
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2121,1
    - Dst: dnsdist::xsk::XskIsQueryAcceptable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2125,1
    - Dst: clonePacketBuffer
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2129,1
    - Dst: handleProxyProtocol
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2131,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2131,1
    - Dst: InternalQueryState::queryRealTime::start
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2135,1
    - Dst: checkDNSCryptQuery
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2137,1
    - Dst: setPayload
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2139,1
    - Dst: auto::data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2145,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2146,1
    - Dst: checkQueryHeaders
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2148,1
    - Dst: dnsdist::PacketMangling::editDNSHeaderFromPacket
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2153,1
    - Dst: setPayload
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2158,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2164,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2164,1
    - Dst: auto::data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2164,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2164,1
    - Dst: std::vector::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2172,1
    - Dst: make_unique<std::vector<ProxyProtocolValue>>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2173,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2173,1
    - Dst: processQuery
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2176,1
    - Dst: setPayload
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2183,1
    - Dst: addDelay
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2185,1
    - Dst: DNSQuestion::getHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2187,1
    - Dst: handleResponseSent
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2188,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2188,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2188,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2188,1
    - Dst: DNSQuestion::getHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2197,1
    - Dst: std::shared_ptr::isTCPOnly
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2198,1
    - Dst: getProxyProtocolPayload
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2203,1
    - Dst: std::make_unique<UDPCrossProtocolQuery>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2207,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2207,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2207,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2208,1
    - Dst: std::shared_ptr::passCrossProtocolQuery
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2210,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2210,1
    - Dst: std::shared_ptr::d_xskInfos::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2214,1
    - Dst: assignOutgoingUDPQueryToBackend
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2215,1
    - Dst: assignOutgoingUDPQueryToBackend
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2219,1
    - Dst: std::shared_ptr::pickSourceAddressForSending
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2220,1
    - Dst: setAddr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2221,1
    - Dst: setPayload
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2222,1
    - Dst: rewrite
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2223,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2227,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2227,1
    - Dst: InternalQueryState::origRemote::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2227,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2227,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2228,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2228,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2228,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2228,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 80
    argCount: 2
    argNames:
    - ' clientState'
    - ' packet'
    argTypes:
    - ClientState
    - XskPacket
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2231
      start: 2109
    functionDepth: 3
    functionLinenumber: 2109
    functionLinenumberEnd: 2231
    functionName: dnsdist::xsk::XskProcessQuery
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.cc
    functionUses: 2
    functionsReached:
    - processQuery
    - ntohs
    - std::shared_ptr::pickSourceAddressForSending
    - handleResponseSent
    - DNSQuestion::getHeader
    - auto::size
    - setPayload
    - std::shared_ptr::isTCPOnly
    - std::shared_ptr::d_xskInfos::empty
    - Logging::Loggable
    - std::shared_ptr::passCrossProtocolQuery
    - handleProxyProtocol
    - dnsdist::xsk::XskIsQueryAcceptable
    - dnsdist::logging::getTopLogger
    - getProxyProtocolPayload
    - getToAddr
    - std::make_unique<UDPCrossProtocolQuery>
    - dnsdist::configuration::getCurrentRuntimeConfiguration
    - InternalQueryState::origRemote::toStringWithPort
    - VERBOSESLOG
    - auto::data
    - DNSName
    - checkDNSCryptQuery
    - reinterpret_cast<const char*>
    - assignOutgoingUDPQueryToBackend
    - std::vector::empty
    - ComboAddress
    - setAddr
    - std::move
    - rewrite
    - what
    - getFromAddr
    - infolog
    - make_unique<std::vector<ProxyProtocolValue>>
    - clonePacketBuffer
    - checkQueryHeaders
    - addDelay
    - cloneHeaderToPacketBuffer
    - InternalQueryState::queryRealTime::start
    - dnsdist::PacketMangling::editDNSHeaderFromPacket
    linkageType: ''
    returnType: bool
    signature: bool XskProcessQuery(ClientState& clientState, XskPacket& packet)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::configuration::getImmutableConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2249,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2251,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2252,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2252,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2252,1
    - Dst: std::vector<MMReceiver>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2255,1
    - Dst: std::vector<mmsghdr>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2256,1
    - Dst: std::vector<mmsghdr>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2257,1
    - Dst: getInitialUDPPacketBufferSize
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2264,1
    - Dst: getMaximumIncomingPacketSize
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2265,1
    - Dst: packet::resize
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2270,1
    - Dst: fillMSGHdr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2272,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2272,1
    - Dst: packet::data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2272,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2275,1
    - Dst: packet::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2285,1
    - Dst: packet::resize
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2286,1
    - Dst: packet::at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2291,1
    - Dst: packet::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2292,1
    - Dst: recvmmsg
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2297,1
    - Dst: auto::data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2297,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2300,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2300,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2300,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2301,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2301,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2315,1
    - Dst: packet::resize
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2329,1
    - Dst: dnsdist::configuration::refreshLocalRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2330,1
    - Dst: processUDPQuery
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2331,1
    - Dst: static_cast<unsigned int>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2337,1
    - Dst: sendmmsg
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2338,1
    - Dst: auto::data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2338,1
    - Dst: static_cast<unsigned int>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2340,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2342,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2342,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2342,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2343,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2343,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2343,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2343,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 44
    argCount: 1
    argNames:
    - clientState
    argTypes:
    - ClientState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2347
      start: 2238
    functionDepth: 5
    functionLinenumber: 2238
    functionLinenumberEnd: 2347
    functionName: MultipleMessagesUDPClientThread
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.cc
    functionUses: 0
    functionsReached:
    - reinterpret_cast<char*>
    - std::to_string
    - stringerror
    - std::vector<mmsghdr>
    - packet::resize
    - dnsdist::configuration::getImmutableConfiguration
    - std::vector<MMReceiver>
    - fillMSGHdr
    - packet::data
    - static_cast<int>
    - packet::size
    - static_cast<size_t>
    - Logging::Loggable
    - packet::at
    - sendmmsg
    - dnsdist::logging::getTopLogger
    - processUDPQuery
    - pdns::max
    - std::runtime_error
    - getInitialUDPPacketBufferSize
    - VERBOSESLOG
    - auto::data
    - static_cast<unsigned int>
    - recvmmsg
    - getMaximumIncomingPacketSize
    - infolog
    - dnsdist::configuration::refreshLocalRuntimeConfiguration
    linkageType: ''
    returnType: void
    signature: void MultipleMessagesUDPClientThread(ClientState* clientState)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: setThreadName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2355,1
    - Dst: dnsdist::configuration::getImmutableConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2358,1
    - Dst: MultipleMessagesUDPClientThread
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2359,1
    - Dst: std::vector<ClientState*>::at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2359,1
    - Dst: getInitialUDPPacketBufferSize
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2376,1
    - Dst: PacketBuffer::resize
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2385,1
    - Dst: PacketBuffer::at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2386,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2387,1
    - Dst: recvmsg
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2389,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2391,1
    - Dst: PacketBuffer::resize
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2397,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2397,1
    - Dst: dnsdist::configuration::refreshLocalRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2399,1
    - Dst: processUDPQuery
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2400,1
    - Dst: getMaximumIncomingPacketSize
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2405,1
    - Dst: std::vector::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2406,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2409,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2410,1
    - Dst: fillMSGHdr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2415,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2415,1
    - Dst: PacketBuffer::at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2415,1
    - Dst: handleOnePacket
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2418,1
    - Dst: usleep
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2424,1
    - Dst: boost::any_cast<const UDPStateParam*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2431,1
    - Dst: PacketBuffer::resize
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2434,1
    - Dst: fillMSGHdr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2438,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2438,1
    - Dst: PacketBuffer::at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2438,1
    - Dst: handleOnePacket
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2439,1
    - Dst: usleep
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2445,1
    - Dst: std::unique_ptr<FDMultiplexer>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2448,1
    - Dst: FDMultiplexer::getMultiplexerSilent
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2448,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2448,1
    - Dst: auto::addReadFD
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2450,1
    - Dst: auto::run
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2455,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2461,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2461,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2461,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2462,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2462,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2465,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2465,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2466,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2469,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2469,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2470,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 55
    argCount: 1
    argNames:
    - states
    argTypes:
    - std::vector<ClientState*>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2472
      start: 2352
    functionDepth: 6
    functionLinenumber: 2352
    functionLinenumberEnd: 2472
    functionName: udpClientThread
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.cc
    functionUses: 0
    functionsReached:
    - reinterpret_cast<char*>
    - errlog
    - usleep
    - PacketBuffer::at
    - std::vector<ClientState*>::at
    - auto::addReadFD
    - PacketBuffer::size
    - std::vector::at
    - auto::run
    - dnsdist::configuration::getImmutableConfiguration
    - fillMSGHdr
    - static_cast<size_t>
    - std::vector::size
    - SLOG
    - MultipleMessagesUDPClientThread
    - dnsdist::logging::getTopLogger
    - boost::any_cast<const UDPStateParam*>
    - processUDPQuery
    - setThreadName
    - handleOnePacket
    - getInitialUDPPacketBufferSize
    - FDMultiplexer::getMultiplexerSilent
    - getMaximumIncomingPacketSize
    - recvmsg
    - what
    - std::vector::emplace_back
    - std::unique_ptr<FDMultiplexer>
    - PacketBuffer::resize
    - dnsdist::configuration::refreshLocalRuntimeConfiguration
    linkageType: ''
    returnType: void
    signature: void udpClientThread(std::vector<ClientState*> states)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: setThreadName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2476,1
    - Dst: std::this_thread::sleep_for
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2482,1
    - Dst: std::chrono::seconds
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2482,1
    - Dst: dnsdist::configuration::refreshLocalRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2484,1
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2486,1
    - Dst: dnsdist::lua::hooks::runMaintenanceHooks
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2492,1
    - Dst: dnsdist::DynamicBlocks::runRegisteredGroups
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2494,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2500,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2500,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2500,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2501,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2501,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2509,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2516,1
    - Dst: std::map::insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2525,1
    - Dst: keepStaleData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2530,1
    - Dst: shouldKeepStaleData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2532,1
    - Dst: time
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2538,1
    - Dst: getMaxEntries
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2545,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2545,1
    - Dst: purgeExpired
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2546,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 39
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2551
      start: 2474
    functionDepth: 2
    functionLinenumber: 2474
    functionLinenumberEnd: 2551
    functionName: maintThread
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.cc
    functionUses: 0
    functionsReached:
    - std::this_thread::sleep_for
    - SLOG
    - keepStaleData
    - dnsdist::configuration::getCurrentRuntimeConfiguration
    - getMaxEntries
    - std::chrono::seconds
    - what
    - time
    - dnsdist::lua::hooks::runMaintenanceHooks
    - warnlog
    - std::map::insert
    - lock
    - dnsdist::DynamicBlocks::runRegisteredGroups
    - shouldKeepStaleData
    - purgeExpired
    - dnsdist::logging::getTopLogger
    - dnsdist::configuration::refreshLocalRuntimeConfiguration
    - setThreadName
    linkageType: ''
    returnType: void
    signature: void maintThread()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: setThreadName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2556,1
    - Dst: dnsdist::configuration::refreshLocalRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2558,1
    - Dst: DynBlockMaintenance::run
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2559,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2560
      start: 2554
    functionDepth: 4
    functionLinenumber: 2554
    functionLinenumberEnd: 2560
    functionName: dynBlockMaintenanceThread
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.cc
    functionUses: 0
    functionsReached:
    - dnsdist::configuration::refreshLocalRuntimeConfiguration
    - setThreadName
    - DynBlockMaintenance::run
    linkageType: ''
    returnType: void
    signature: void dynBlockMaintenanceThread()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: setThreadName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2566,1
    - Dst: dnsdist::configuration::refreshLocalRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2569,1
    - Dst: dnsdist::secpoll::doSecPoll
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2572,1
    - Dst: std::this_thread::sleep_for
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2577,1
    - Dst: std::chrono::seconds
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2577,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2579
      start: 2564
    functionDepth: 2
    functionLinenumber: 2564
    functionLinenumberEnd: 2579
    functionName: secPollThread
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.cc
    functionUses: 0
    functionsReached:
    - std::this_thread::sleep_for
    - dnsdist::secpoll::doSecPoll
    - std::chrono::seconds
    - dnsdist::configuration::refreshLocalRuntimeConfiguration
    - setThreadName
    linkageType: ''
    returnType: void
    signature: void secPollThread()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: doExitNicely
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2588,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2590
      start: 2585
    functionDepth: 0
    functionLinenumber: 2585
    functionLinenumberEnd: 2590
    functionName: checkExiting
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.cc
    functionUses: 0
    functionsReached:
    - doExitNicely
    linkageType: ''
    returnType: void
    signature: void checkExiting()
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: setThreadName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2594,1
    - Dst: checkExiting
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2603,1
    - Dst: gettimeofday
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2606,1
    - Dst: uSec
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2607,1
    - Dst: usleep
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2609,1
    - Dst: gettimeofday
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2610,1
    - Dst: dnsdist::configuration::refreshLocalRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2617,1
    - Dst: updateStatisticsInfo
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2623,1
    - Dst: handleUDPTimeouts
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2625,1
    - Dst: healthCheckRequired
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2627,1
    - Dst: std::unique_ptr<FDMultiplexer>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2632,1
    - Dst: FDMultiplexer::getMultiplexerSilent
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2632,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2632,1
    - Dst: queueHealthCheck
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2635,1
    - Dst: submitHealthCheckResult
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2636,1
    - Dst: handleQueuedHealthChecks
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2641,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2645,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2645,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2645,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2646,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2646,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 31
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2649
      start: 2592
    functionDepth: 4
    functionLinenumber: 2592
    functionLinenumberEnd: 2649
    functionName: healthChecksThread
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.cc
    functionUses: 0
    functionsReached:
    - usleep
    - handleUDPTimeouts
    - handleQueuedHealthChecks
    - healthCheckRequired
    - gettimeofday
    - auto::size
    - queueHealthCheck
    - checkExiting
    - dnsdist::logging::getTopLogger
    - setThreadName
    - VERBOSESLOG
    - FDMultiplexer::getMultiplexerSilent
    - what
    - infolog
    - std::unique_ptr<FDMultiplexer>
    - submitHealthCheckResult
    - uSec
    - dnsdist::configuration::refreshLocalRuntimeConfiguration
    - updateStatisticsInfo
    linkageType: ''
    returnType: void
    signature: void healthChecksThread()
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: setsockopt
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2656,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2657,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2657,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2657,1
    - Dst: error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2658,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2658,1
    - Dst: setsockopt
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2664,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2665,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2665,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2665,1
    - Dst: error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2666,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2666,1
    - Dst: setsockopt
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2672,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2673,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2673,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2673,1
    - Dst: error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2674,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2674,1
    - Dst: setsockopt
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2679,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2680,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2680,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2680,1
    - Dst: error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2681,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2681,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 3
    argNames:
    - addressFamily
    - sock
    - ' logger'
    argTypes:
    - int
    - int
    - std::shared_ptr<const Logr::Logger>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2684
      start: 2651
    functionDepth: 0
    functionLinenumber: 2651
    functionLinenumberEnd: 2684
    functionName: bindAny
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.cc
    functionUses: 0
    functionsReached:
    - SLOG
    - stringerror
    - warnlog
    - setsockopt
    - error
    linkageType: ''
    returnType: void
    signature: void bindAny([[maybe_unused]] int addressFamily, [[maybe_unused]] int
      sock, [[maybe_unused]] const std::shared_ptr<const Logr::Logger>& logger)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: setgid
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2689,1
    - Dst: setgroups
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2690,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2691,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2691,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2691,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2692,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2692,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2696,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2696,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2696,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2697,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2697,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2697,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - gid
    argTypes:
    - gid_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2700
      start: 2686
    functionDepth: 1
    functionLinenumber: 2686
    functionLinenumberEnd: 2700
    functionName: dropGroupPrivs
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.cc
    functionUses: 1
    functionsReached:
    - SLOG
    - Logging::Loggable
    - stringerror
    - warnlog
    - dnsdist::logging::getTopLogger
    - setgroups
    - setgid
    linkageType: ''
    returnType: void
    signature: void dropGroupPrivs(gid_t gid)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: setuid
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2705,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2706,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2706,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2706,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2707,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2707,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2707,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - uid
    argTypes:
    - uid_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2710
      start: 2702
    functionDepth: 1
    functionLinenumber: 2702
    functionLinenumberEnd: 2710
    functionName: dropUserPrivs
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.cc
    functionUses: 1
    functionsReached:
    - SLOG
    - Logging::Loggable
    - stringerror
    - setuid
    - warnlog
    - dnsdist::logging::getTopLogger
    linkageType: ''
    returnType: void
    signature: void dropUserPrivs(uid_t uid)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::configuration::getImmutableConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2714,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2717,1
    - Dst: sockets::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2721,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2726,1
    - Dst: getrlimit
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2752,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2754,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2754,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2754,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2754,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2755,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2755,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2755,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2757,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2757,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2758,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2760,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2760,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2761,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 26
    argCount: 2
    argNames:
    - udpBindsCount
    - tcpBindsCount
    argTypes:
    - size_t
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2764
      start: 2712
    functionDepth: 2
    functionLinenumber: 2712
    functionLinenumberEnd: 2764
    functionName: checkFileDescriptorsLimits
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.cc
    functionUses: 0
    functionsReached:
    - SLOG
    - dnsdist::configuration::getCurrentRuntimeConfiguration
    - std::to_string
    - getrlimit
    - Logging::Loggable
    - warnlog
    - size
    - dnsdist::configuration::getImmutableConfiguration
    - dnsdist::logging::getTopLogger
    - sockets::size
    linkageType: ''
    returnType: void
    signature: void checkFileDescriptorsLimits(size_t udpBindsCount, size_t tcpBindsCount)
  - BBCount: 25
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::configuration::getImmutableConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2768,1
    - Dst: SSocket
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2771,1
    - Dst: SSetsockopt
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2774,1
    - Dst: SSetsockopt
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2776,1
    - Dst: SSetsockopt
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2780,1
    - Dst: d_tcpFastOpenKey::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2782,1
    - Dst: setsockopt
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2783,1
    - Dst: d_tcpFastOpenKey::data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2783,1
    - Dst: d_tcpFastOpenKey::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2783,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2785,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2785,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2791,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2791,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2791,1
    - Dst: info
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2792,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2792,1
    - Dst: SSetsockopt
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2799,1
    - Dst: bindAny
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2802,1
    - Dst: IsAnyAddress
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2804,1
    - Dst: setsockopt
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2806,1
    - Dst: isIPv6
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2808,1
    - Dst: setsockopt
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2808,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2809,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2809,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2809,1
    - Dst: error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2810,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2810,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2810,1
    - Dst: setReusePort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2817,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2820,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2820,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2820,1
    - Dst: info
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2821,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2821,1
    - Dst: setSocketForcePMTU
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2830,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2833,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2833,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2833,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2833,1
    - Dst: error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2834,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2834,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2834,1
    - Dst: setSocketIgnorePMTU
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2842,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2845,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2845,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2845,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2845,1
    - Dst: error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2846,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2846,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2846,1
    - Dst: dnsdist::udp::setUDPSocketBufferSizes
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2851,1
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2855,1
    - Dst: setsockopt
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2857,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2857,1
    - Dst: length
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2857,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2859,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2859,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2859,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2859,1
    - Dst: error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2860,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2860,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2860,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2864,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2864,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2864,1
    - Dst: error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2865,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2865,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2865,1
    - Dst: isExternal
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2874,1
    - Dst: attachFilter
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2875,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2876,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2876,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2876,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2876,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2876,1
    - Dst: info
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2877,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2877,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2877,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2877,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2877,1
    - Dst: SBind
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2881,1
    - Dst: SListen
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2884,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2887,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2887,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2887,1
    - Dst: info
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2888,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2888,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2891,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2891,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2891,1
    - Dst: info
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2892,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2892,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2895,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2895,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2895,1
    - Dst: info
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2896,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2896,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2899,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2899,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2899,1
    - Dst: info
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2900,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2900,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2905,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2905,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2905,1
    - Dst: info
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2906,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2906,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2909,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2909,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2909,1
    - Dst: info
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2910,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2910,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2914,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2914,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2914,1
    - Dst: info
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2915,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2915,1
    CyclomaticComplexity: 34
    EdgeCount: 34
    ICount: 89
    argCount: 6
    argNames:
    - ' clientState'
    - ' addr'
    - ' socket'
    - tcp
    - warn
    - ' logger'
    argTypes:
    - ClientState
    - ComboAddress
    - int
    - bool
    - bool
    - std::shared_ptr<const Logr::Logger>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2919
      start: 2766
    functionDepth: 2
    functionLinenumber: 2766
    functionLinenumberEnd: 2919
    functionName: setupLocalSocket
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.cc
    functionUses: 0
    functionsReached:
    - stringerror
    - runtime_error
    - attachFilter
    - dnsdist::configuration::getImmutableConfiguration
    - error
    - setReusePort
    - std::string
    - IsAnyAddress
    - SBind
    - d_tcpFastOpenKey::empty
    - SLOG
    - Logging::Loggable
    - setSocketIgnorePMTU
    - warnlog
    - setsockopt
    - dnsdist::udp::setUDPSocketBufferSizes
    - empty
    - c_str
    - SListen
    - bindAny
    - isIPv6
    - SSocket
    - VERBOSESLOG
    - toStringWithPort
    - length
    - what
    - d_tcpFastOpenKey::data
    - info
    - infolog
    - setSocketForcePMTU
    - SSetsockopt
    - d_tcpFastOpenKey::size
    - isExternal
    linkageType: ''
    returnType: void
    signature: void setupLocalSocket(ClientState& clientState, const ComboAddress&
      addr, int& socket, bool tcp, bool warn, const std::shared_ptr<const Logr::Logger>&
      logger)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: setupLocalSocket
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2928,1
    - Dst: setupLocalSocket
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2931,1
    - Dst: tlsFrontend::setupTLS
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2935,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2936,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2936,1
    - Dst: local::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2936,1
    - Dst: info
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2937,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2937,1
    - Dst: _exit
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2938,1
    - Dst: dohFrontend::setup
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2943,1
    - Dst: doqFrontend::setup
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2946,1
    - Dst: doh3Frontend::setup
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:2949,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 21
    argCount: 2
    argNames:
    - ' cstate'
    - ' logger'
    argTypes:
    - ClientState
    - std::shared_ptr<const Logr::Logger>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2953
      start: 2921
    functionDepth: 3
    functionLinenumber: 2921
    functionLinenumberEnd: 2953
    functionName: setUpLocalBind
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.cc
    functionUses: 0
    functionsReached:
    - errlog
    - SLOG
    - _exit
    - doqFrontend::setup
    - Logging::Loggable
    - info
    - setupLocalSocket
    - local::toStringWithPort
    - doh3Frontend::setup
    - tlsFrontend::setupTLS
    - dohFrontend::setup
    linkageType: ''
    returnType: void
    signature: void setUpLocalBind(ClientState& cstate, const std::shared_ptr<const
      Logr::Logger>& logger)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 33
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3006
      start: 2970
    functionDepth: 0
    functionLinenumber: 2970
    functionLinenumberEnd: 3006
    functionName: usage
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.cc
    functionUses: 107
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void usage()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::lua::hooks::clearExitCallbacks
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3017,1
    - Dst: dnsdist::configuration::updateRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3020,1
    - Dst: dnsdist::rules::RuleChains
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3021,1
    - Dst: std::make_shared<ServerPolicy>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3022,1
    - Dst: d_pools::clear
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3023,1
    - Dst: d_backends::clear
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3024,1
    - Dst: dnsdist::webserver::clearWebHandlers
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3026,1
    - Dst: dnsdist::lua::hooks::clearMaintenanceHooks
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3027,1
    - Dst: dnsdist::lua::hooks::clearServerStateChangeCallbacks
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3028,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3029
      start: 3015
    functionDepth: 3
    functionLinenumber: 3015
    functionLinenumberEnd: 3029
    functionName: cleanupLuaObjects
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.cc
    functionUses: 0
    functionsReached:
    - dnsdist::rules::RuleChains
    - dnsdist::lua::hooks::clearServerStateChangeCallbacks
    - dnsdist::webserver::clearWebHandlers
    - dnsdist::lua::hooks::clearExitCallbacks
    - dnsdist::configuration::updateRuntimeConfiguration
    - d_backends::clear
    - d_pools::clear
    - dnsdist::lua::hooks::clearMaintenanceHooks
    - std::make_shared<ServerPolicy>
    linkageType: ''
    returnType: void
    signature: void cleanupLuaObjects(LuaContext& /* luaCtx */)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::logging::LoggingConfiguration::getSyslog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3035,1
    - Dst: syslog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3036,1
    - Dst: sd_notify
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3042,1
    - Dst: stop
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3047,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3050,1
    - Dst: stop
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3051,1
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3056,1
    - Dst: dnsdist::lua::hooks::runExitCallbacks
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3057,1
    - Dst: cleanupLuaObjects
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3059,1
    - Dst: LuaContext
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3060,1
    - Dst: __lsan_do_leak_check
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3065,1
    - Dst: pdns::coverage::dumpCoverageData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3069,1
    - Dst: _exit
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3076,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 20
    argCount: 1
    argNames:
    - exitCode
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3077
      start: 3032
    functionDepth: 4
    functionLinenumber: 3032
    functionLinenumberEnd: 3077
    functionName: doExitNicely
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.cc
    functionUses: 1
    functionsReached:
    - dnsdist::logging::LoggingConfiguration::getSyslog
    - dnsdist::configuration::getCurrentRuntimeConfiguration
    - cleanupLuaObjects
    - _exit
    - dnsdist::lua::hooks::runExitCallbacks
    - sd_notify
    - LuaContext
    - stop
    - lock
    - __lsan_do_leak_check
    - syslog
    - pdns::coverage::dumpCoverageData
    linkageType: ''
    returnType: void
    signature: void doExitNicely(int exitCode)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: store
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3081,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3082
      start: 3079
    functionDepth: 0
    functionLinenumber: 3079
    functionLinenumberEnd: 3082
    functionName: sigTermHandler
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.cc
    functionUses: 0
    functionsReached:
    - store
    linkageType: ''
    returnType: void
    signature: void sigTermHandler(int /* sig */)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: escape_quotes
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3174,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 32
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3178
      start: 3084
    functionDepth: 0
    functionLinenumber: 3084
    functionLinenumberEnd: 3178
    functionName: reportFeatures
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.cc
    functionUses: 0
    functionsReached:
    - escape_quotes
    linkageType: ''
    returnType: void
    signature: void reportFeatures()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - s
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3172
      start: 3171
    functionDepth: 0
    functionLinenumber: 3171
    functionLinenumberEnd: 3172
    functionName: double_escape
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: double_escape(s)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - s
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3173
      start: 3172
    functionDepth: 0
    functionLinenumber: 3172
    functionLinenumberEnd: 3173
    functionName: escape_quotes
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.cc
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: escape_quotes(s)
  - BBCount: 22
    BranchProfiles: []
    Callsites:
    - Dst: getopt_long
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3206,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3206,1
    - Dst: dnsdist::logging::LoggingConfiguration::setSyslog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3215,1
    - Dst: dnsdist::logging::LoggingConfiguration::setLogTimestamps
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3221,1
    - Dst: usage
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3240,1
    - Dst: exit
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3243,1
    - Dst: dnsdist::configuration::RuntimeConfiguration::d_ACL::addMask
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3247,1
    - Dst: B64Decode
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3253,1
    - Dst: string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3253,1
    - Dst: exit
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3256,1
    - Dst: dnsdist::configuration::updateRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3258,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3259,1
    - Dst: exit
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3265,1
    - Dst: locals::push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3269,1
    - Dst: boost::trim_copy
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3269,1
    - Dst: string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3269,1
    - Dst: boost::to_lower_copy
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3272,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3272,1
    - Dst: reportFeatures
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3281,1
    - Dst: exit
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3283,1
    - Dst: usage
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3287,1
    - Dst: exit
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3289,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3300,1
    - Dst: remotes::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3303,1
    - Dst: dnsdist::configuration::updateRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3307,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3308,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 88
    argCount: 4
    argNames:
    - argc
    - argv
    - ' cmdLine'
    - ' clientAddress'
    argTypes:
    - int
    - char**
    - CommandLineParameters
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3310
      start: 3180
    functionDepth: 3
    functionLinenumber: 3180
    functionLinenumberEnd: 3310
    functionName: parseParameters
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.cc
    functionUses: 0
    functionsReached:
    - remotes::emplace_back
    - std::move
    - dnsdist::logging::LoggingConfiguration::setSyslog
    - getopt_long
    - dnsdist::configuration::updateRuntimeConfiguration
    - B64Decode
    - string
    - locals::push_back
    - reportFeatures
    - boost::to_lower_copy
    - usage
    - boost::trim_copy
    - std::string
    - exit
    - std::array::data
    - dnsdist::logging::LoggingConfiguration::setLogTimestamps
    - dnsdist::configuration::RuntimeConfiguration::d_ACL::addMask
    - ComboAddress
    linkageType: ''
    returnType: void
    signature: void parseParameters(int argc, char** argv, CommandLineParameters&
      cmdLine, ComboAddress& clientAddress)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3314,1
    - Dst: d_lbPolicy::getName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3315,1
    - Dst: second::policy::getName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3320,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3327,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3327,1
    - Dst: info
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3328,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3333,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3333,1
    - Dst: getName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3333,1
    - Dst: info
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3334,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3334,1
    - Dst: getName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3334,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3334,1
    - Dst: hash
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3337,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 18
    argCount: 1
    argNames:
    - ' logger'
    argTypes:
    - std::shared_ptr<const Logr::Logger>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3340
      start: 3311
    functionDepth: 2
    functionLinenumber: 3311
    functionLinenumberEnd: 3340
    functionName: setupPools
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.cc
    functionUses: 0
    functionsReached:
    - hash
    - dnsdist::configuration::getCurrentRuntimeConfiguration
    - getName
    - Logging::Loggable
    - VERBOSESLOG
    - infolog
    - info
    - second::policy::getName
    - d_lbPolicy::getName
    linkageType: ''
    returnType: void
    signature: void setupPools(const std::shared_ptr<const Logr::Logger>& logger)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: getegid
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3344,1
    - Dst: geteuid
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3345,1
    - Dst: gid::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3347,1
    - Dst: strToGID
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3348,1
    - Dst: uid::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3351,1
    - Dst: strToUID
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3352,1
    - Dst: dnsdist::configuration::getImmutableConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3356,1
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3356,1
    - Dst: getegid
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3356,1
    - Dst: geteuid
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3356,1
    - Dst: keepCapabilitiesAfterSwitchingIDs
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3357,1
    - Dst: getegid
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3360,1
    - Dst: running_in_service_mgr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3361,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3362,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3362,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3363,1
    - Dst: _exit
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3364,1
    - Dst: dropGroupPrivs
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3366,1
    - Dst: geteuid
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3369,1
    - Dst: running_in_service_mgr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3370,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3371,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3371,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3372,1
    - Dst: _exit
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3373,1
    - Dst: dropUserPrivs
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3375,1
    - Dst: dropCapabilitiesAfterSwitchingIDs
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3379,1
    - Dst: dropCapabilities
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3389,1
    - Dst: dnsdist::configuration::getImmutableConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3389,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3392,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3392,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3392,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3393,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3393,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 32
    argCount: 1
    argNames:
    - ' cmdLine'
    argTypes:
    - CommandLineParameters
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3395
      start: 3342
    functionDepth: 2
    functionLinenumber: 3342
    functionLinenumberEnd: 3395
    functionName: dropPrivileges
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.cc
    functionUses: 0
    functionsReached:
    - errlog
    - strToUID
    - dnsdist::configuration::getImmutableConfiguration
    - dropCapabilitiesAfterSwitchingIDs
    - getegid
    - SLOG
    - geteuid
    - dropGroupPrivs
    - warnlog
    - dnsdist::logging::getTopLogger
    - keepCapabilitiesAfterSwitchingIDs
    - empty
    - dropCapabilities
    - _exit
    - gid::empty
    - uid::empty
    - what
    - dropUserPrivs
    - running_in_service_mgr
    - strToGID
    linkageType: ''
    returnType: void
    signature: void dropPrivileges(const CommandLineParameters& cmdLine)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::configuration::getImmutableConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3399,1
    - Dst: locals::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3401,1
    - Dst: auto::begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3402,1
    - Dst: auto::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3402,1
    - Dst: auto::erase
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3405,1
    - Dst: auto::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3414,1
    - Dst: std::make_unique<ClientState>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3414,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3414,1
    - Dst: auto::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3416,1
    - Dst: std::make_unique<ClientState>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3416,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3416,1
    - Dst: auto::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3420,1
    - Dst: auto::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3422,1
    - Dst: std::make_unique<ClientState>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3422,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3422,1
    - Dst: auto::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3424,1
    - Dst: std::make_unique<ClientState>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3424,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3424,1
    - Dst: dnsdist::configuration::updateImmutableConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3427,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3428,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 20
    argCount: 1
    argNames:
    - ' cmdLine'
    argTypes:
    - CommandLineParameters
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3430
      start: 3397
    functionDepth: 2
    functionLinenumber: 3397
    functionLinenumberEnd: 3430
    functionName: initFrontends
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.cc
    functionUses: 0
    functionsReached:
    - std::move
    - std::make_unique<ClientState>
    - dnsdist::configuration::updateImmutableConfiguration
    - ComboAddress
    - auto::begin
    - auto::empty
    - dnsdist::configuration::getImmutableConfiguration
    - auto::end
    - locals::empty
    - auto::erase
    - auto::emplace_back
    linkageType: ''
    returnType: void
    signature: void initFrontends(const CommandLineParameters& cmdLine)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: std::thread::detach
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3439,1
    - Dst: dnsdist::getFrontends
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3445,1
    - Dst: dnsdist::xsk::addDestinationAddress
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3448,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3450,1
    - Dst: cpus::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3451,1
    - Dst: mapThreadToCPUList
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3452,1
    - Dst: std::thread::native_handle
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3452,1
    - Dst: std::thread::detach
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3454,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3460,1
    - Dst: cpus::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3461,1
    - Dst: mapThreadToCPUList
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3462,1
    - Dst: std::thread::native_handle
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3462,1
    - Dst: std::thread::detach
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3464,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3470,1
    - Dst: cpus::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3471,1
    - Dst: mapThreadToCPUList
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3472,1
    - Dst: std::thread::native_handle
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3472,1
    - Dst: std::thread::detach
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3474,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3480,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3480,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3482,1
    - Dst: cpus::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3483,1
    - Dst: mapThreadToCPUList
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3484,1
    - Dst: std::thread::native_handle
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3484,1
    - Dst: std::thread::detach
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3486,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3491,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3491,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3493,1
    - Dst: cpus::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3494,1
    - Dst: mapThreadToCPUList
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3495,1
    - Dst: std::thread::native_handle
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3495,1
    - Dst: std::thread::detach
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3497,1
    - Dst: std::vector::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3502,1
    - Dst: std::thread::detach
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3504,1
    - Dst: std::make_unique<TCPClientCollection>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3508,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 43
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3510
      start: 3434
    functionDepth: 2
    functionLinenumber: 3434
    functionLinenumberEnd: 3510
    functionName: dnsdist::startFrontends
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.cc
    functionUses: 0
    functionsReached:
    - std::vector::push_back
    - mapThreadToCPUList
    - cpus::empty
    - dnsdist::getFrontends
    - get
    - std::thread::native_handle
    - std::thread::detach
    - std::vector::empty
    - dnsdist::xsk::addDestinationAddress
    - std::make_unique<TCPClientCollection>
    linkageType: ''
    returnType: void
    signature: void startFrontends()
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: std::thread::detach
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3439,1
    - Dst: dnsdist::getFrontends
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3445,1
    - Dst: dnsdist::xsk::addDestinationAddress
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3448,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3450,1
    - Dst: cpus::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3451,1
    - Dst: mapThreadToCPUList
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3452,1
    - Dst: std::thread::native_handle
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3452,1
    - Dst: std::thread::detach
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3454,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3460,1
    - Dst: cpus::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3461,1
    - Dst: mapThreadToCPUList
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3462,1
    - Dst: std::thread::native_handle
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3462,1
    - Dst: std::thread::detach
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3464,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3470,1
    - Dst: cpus::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3471,1
    - Dst: mapThreadToCPUList
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3472,1
    - Dst: std::thread::native_handle
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3472,1
    - Dst: std::thread::detach
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3474,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3480,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3480,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3482,1
    - Dst: cpus::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3483,1
    - Dst: mapThreadToCPUList
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3484,1
    - Dst: std::thread::native_handle
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3484,1
    - Dst: std::thread::detach
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3486,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3491,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3491,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3493,1
    - Dst: cpus::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3494,1
    - Dst: mapThreadToCPUList
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3495,1
    - Dst: std::thread::native_handle
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3495,1
    - Dst: std::thread::detach
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3497,1
    - Dst: std::vector::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3502,1
    - Dst: std::thread::detach
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3504,1
    - Dst: std::make_unique<TCPClientCollection>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3508,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 43
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3510
      start: 3434
    functionDepth: 2
    functionLinenumber: 3434
    functionLinenumberEnd: 3510
    functionName: dnsdist::startFrontends
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.cc
    functionUses: 0
    functionsReached:
    - std::vector::push_back
    - mapThreadToCPUList
    - cpus::empty
    - dnsdist::getFrontends
    - get
    - std::thread::native_handle
    - std::thread::detach
    - std::vector::empty
    - dnsdist::xsk::addDestinationAddress
    - std::make_unique<TCPClientCollection>
    linkageType: ''
    returnType: void
    signature: void startFrontends()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3522,1
    - Dst: Socket
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3527,1
    - Dst: ListeningSockets::d_consoleSocket::bind
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3528,1
    - Dst: ListeningSockets::d_consoleSocket::listen
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3529,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3532,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3532,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3532,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3532,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3533,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3533,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3533,1
    - Dst: Socket
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3539,1
    - Dst: auto::bind
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3540,1
    - Dst: auto::listen
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3541,1
    - Dst: ListeningSockets::d_webServerSockets::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3542,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3542,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3545,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3545,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3545,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3545,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3546,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3546,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3546,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3551
      start: 3519
    functionDepth: 2
    functionLinenumber: 3519
    functionLinenumberEnd: 3551
    functionName: initListeningSockets
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.cc
    functionUses: 0
    functionsReached:
    - errlog
    - std::move
    - SLOG
    - dnsdist::configuration::getCurrentRuntimeConfiguration
    - Logging::Loggable
    - auto::listen
    - what
    - ListeningSockets::d_consoleSocket::listen
    - auto::bind
    - ListeningSockets::d_webServerSockets::emplace_back
    - ListeningSockets::d_consoleSocket::bind
    - Socket
    - dnsdist::logging::getTopLogger
    - toStringWithPort
    linkageType: ''
    returnType: ListeningSockets
    signature: ListeningSockets initListeningSockets()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: rfind
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3555,1
    - Dst: substr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3559,1
    - Dst: StatBag::exists
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3560,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - ' configurationFile'
    - ' extension'
    argTypes:
    - std::string
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3564
      start: 3553
    functionDepth: 1
    functionLinenumber: 3553
    functionLinenumberEnd: 3564
    functionName: lookForTentativeConfigurationFileWithExtension
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.cc
    functionUses: 0
    functionsReached:
    - substr
    - rfind
    - StatBag::exists
    linkageType: ''
    returnType: std::optional<std::string>
    signature: std::optional<std::string> lookForTentativeConfigurationFileWithExtension(const
      std::string& configurationFile, const std::string& extension)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: boost::ends_with
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3568,1
    - Dst: dnsdist::lua::setupLuaBindingsOnly
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3570,1
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3570,1
    - Dst: lookForTentativeConfigurationFileWithExtension
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3572,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3573,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3573,1
    - Dst: info
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3574,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3574,1
    - Dst: dnsdist::configuration::lua::loadLuaConfigurationFile
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3576,1
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3576,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3579,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3579,1
    - Dst: info
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3580,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3580,1
    - Dst: dnsdist::configuration::yaml::loadConfigurationFromFile
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3582,1
    - Dst: dnsdist::lua::setupLuaConfigurationOptions
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3586,1
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3586,1
    - Dst: dnsdist::lua::setupLua
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3591,1
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3591,1
    - Dst: boost::ends_with
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3592,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3593,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3593,1
    - Dst: info
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3594,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3594,1
    - Dst: dnsdist::configuration::lua::loadLuaConfigurationFile
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3596,1
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3596,1
    - Dst: lookForTentativeConfigurationFileWithExtension
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3597,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3598,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3598,1
    - Dst: info
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3599,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3599,1
    - Dst: dnsdist::configuration::yaml::loadConfigurationFromFile
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3600,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3604,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3604,1
    - Dst: info
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3605,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3605,1
    - Dst: dnsdist::configuration::lua::loadLuaConfigurationFile
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3607,1
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3607,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 29
    argCount: 4
    argNames:
    - ' configurationFile'
    - isClient
    - configCheck
    - ' logger'
    argTypes:
    - std::string
    - bool
    - bool
    - std::shared_ptr<const Logr::Logger>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3610
      start: 3566
    functionDepth: 2
    functionLinenumber: 3566
    functionLinenumberEnd: 3610
    functionName: loadConfigurationFromFile
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.cc
    functionUses: 1
    functionsReached:
    - lookForTentativeConfigurationFileWithExtension
    - Logging::Loggable
    - dnsdist::configuration::lua::loadLuaConfigurationFile
    - dnsdist::configuration::yaml::loadConfigurationFromFile
    - dnsdist::lua::setupLuaConfigurationOptions
    - VERBOSESLOG
    - infolog
    - info
    - lock
    - dnsdist::lua::setupLuaBindingsOnly
    - dnsdist::lua::setupLua
    - boost::ends_with
    linkageType: ''
    returnType: bool
    signature: bool loadConfigurationFromFile(const std::string& configurationFile,
      bool isClient, bool configCheck, const std::shared_ptr<const Logr::Logger>&
      logger)
  - BBCount: 28
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::console::completion::setupCompletion
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3619,1
    - Dst: signal
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3622,1
    - Dst: signal
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3624,1
    - Dst: signal
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3625,1
    - Dst: dnsdist::logging::setup
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3628,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3629,1
    - Dst: openlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3631,1
    - Dst: sodium_init
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3634,1
    - Dst: exit
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3637,1
    - Dst: dnsdist::initRandom
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3640,1
    - Dst: dnsdist::xsk::clearDestinationAddresses
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3644,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3652,1
    - Dst: parseParameters
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3654,1
    - Dst: CommandLineParameters::config::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3655,1
    - Dst: StatBag::exists
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3657,1
    - Dst: StatBag::exists
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3657,1
    - Dst: dnsdist::configuration::updateImmutableConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3661,1
    - Dst: CommandLineParameters::structuredLoggingBackend::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3666,1
    - Dst: dnsdist::logging::setup
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3667,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3668,1
    - Dst: dnsdist::configuration::updateRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3671,1
    - Dst: std::make_shared<ServerPolicy>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3672,1
    - Dst: CommandLineParameters::command::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3675,1
    - Dst: loadConfigurationFromFile
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3676,1
    - Dst: exit
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3678,1
    - Dst: _exit
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3680,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3683,1
    - Dst: dnsdist::configuration::updateRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3684,1
    - Dst: dnsdist::console::doClient
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3688,1
    - Dst: exit
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3690,1
    - Dst: _exit
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3692,1
    - Dst: dnsdist::configuration::updateRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3696,1
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3698,1
    - Dst: addMask
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3700,1
    - Dst: d_consoleACL::addMask
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3704,1
    - Dst: d_webServerACL::toMasks
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3706,1
    - Dst: dnsdist::webserver::registerBuiltInWebHandlers
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3709,1
    - Dst: loadConfigurationFromFile
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3712,1
    - Dst: exit
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3714,1
    - Dst: _exit
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3716,1
    - Dst: dnsdist::logging::setup
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3720,1
    - Dst: dnsdist::configuration::getImmutableConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3720,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3721,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3723,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3723,1
    - Dst: auto::info
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3724,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3724,1
    - Dst: doExitNicely
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3725,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3728,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3728,1
    - Dst: auto::info
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3729,1
    - Dst: std::make_unique<dnsdist::AsynchronousHolder>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3731,1
    - Dst: createPoolIfNotExists
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3734,1
    - Dst: loadConfigurationFromFile
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3736,1
    - Dst: exit
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3738,1
    - Dst: _exit
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3740,1
    - Dst: dnsdist::logging::setup
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3744,1
    - Dst: dnsdist::configuration::getImmutableConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3744,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3745,1
    - Dst: dnsdist::configuration::updateImmutableConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3749,1
    - Dst: dnsdist::getRandomValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3751,1
    - Dst: setupPools
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3755,1
    - Dst: initFrontends
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3757,1
    - Dst: dnsdist::getFrontends
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3759,1
    - Dst: dnsdist::configuration::setImmutableConfigurationDone
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3768,1
    - Dst: dnsdist::configuration::getImmutableConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3771,1
    - Dst: setTCPDownstreamMaxIdleConnectionsPerBackend
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3772,1
    - Dst: setTCPDownstreamMaxIdleTime
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3773,1
    - Dst: setTCPDownstreamCleanupInterval
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3774,1
    - Dst: setDoHDownstreamMaxIdleConnectionsPerBackend
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3776,1
    - Dst: setDoHDownstreamMaxIdleTime
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3777,1
    - Dst: setDoHDownstreamCleanupInterval
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3778,1
    - Dst: dnsdist::configuration::getImmutableConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3783,1
    - Dst: init
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3792,1
    - Dst: dnsdist::getFrontends
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3795,1
    - Dst: setUpLocalBind
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3796,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3801,1
    - Dst: toStringVector
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3801,1
    - Dst: std::string::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3803,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3808,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3808,1
    - Dst: auto::info
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3809,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3809,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3813,1
    - Dst: toStringVector
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3813,1
    - Dst: std::string::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3815,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3820,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3820,1
    - Dst: auto::info
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3821,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3821,1
    - Dst: initListeningSockets
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3824,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3827,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3827,1
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3827,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3828,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3828,1
    - Dst: auto::info
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3829,1
    - Dst: dropPrivileges
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3833,1
    - Dst: std::make_unique<DelayPipe<DelayedPacket>>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3837,1
    - Dst: dnsdist::configuration::getImmutableConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3841,1
    - Dst: std::make_unique<DNSDistSNMPAgent>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3842,1
    - Dst: dnsdist::configuration::getImmutableConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3842,1
    - Dst: run
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3843,1
    - Dst: dnsdist::configuration::getImmutableConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3851,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3855,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3855,1
    - Dst: auto::info
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3856,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3856,1
    - Dst: std::make_unique<TCPClientCollection>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3858,1
    - Dst: std::vector<ClientState*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3858,1
    - Dst: initDoHWorkers
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3862,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3865,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3866,1
    - Dst: std::thread::detach
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3867,1
    - Dst: std::thread::detach
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3871,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3874,1
    - Dst: start
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3876,1
    - Dst: CommandLineParameters::remotes::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3880,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3883,1
    - Dst: std::make_shared<DownstreamState>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3884,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3884,1
    - Dst: addServerToPool
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3885,1
    - Dst: auto::start
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3886,1
    - Dst: dnsdist::configuration::updateRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3887,1
    - Dst: d_backends::push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3888,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3888,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3893,1
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3893,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3894,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3894,1
    - Dst: auto::info
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3895,1
    - Dst: checkFileDescriptorsLimits
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3899,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3903,1
    - Dst: std::unique_ptr<FDMultiplexer>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3904,1
    - Dst: FDMultiplexer::getMultiplexerSilent
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3904,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3904,1
    - Dst: queueHealthCheck
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3912,1
    - Dst: submitHealthCheckResult
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3913,1
    - Dst: setUpStatus
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3914,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3915,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3915,1
    - Dst: getNameWithAddr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3915,1
    - Dst: auto::info
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3916,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3916,1
    - Dst: getName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3916,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3916,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3916,1
    - Dst: handleQueuedHealthChecks
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3920,1
    - Dst: dnsdist::startFrontends
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3923,1
    - Dst: dnsdist::ServiceDiscovery::run
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3925,1
    - Dst: dnsdist::Carbon::run
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3928,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3928,1
    - Dst: thread::detach
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3932,1
    - Dst: thread::detach
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3938,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3942,1
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3942,1
    - Dst: thread::detach
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3944,1
    - Dst: sd_notify
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3950,1
    - Dst: thread::join
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3952,1
    - Dst: thread::detach
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3955,1
    - Dst: dnsdist::console::doConsole
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3956,1
    - Dst: doExitNicely
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3958,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3962,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3962,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3962,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3963,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3963,1
    - Dst: std::rethrow_if_nested
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3964,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3967,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3967,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3967,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3968,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3968,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3971,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3971,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3972,1
    - Dst: doExitNicely
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3974,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3977,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3977,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3977,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3978,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3978,1
    - Dst: doExitNicely
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3979,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3982,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3982,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3983,1
    - Dst: doExitNicely
      Src: /src/pdns/pdns/dnsdistdist/dnsdist.cc:3984,1
    CyclomaticComplexity: 47
    EdgeCount: 47
    ICount: 199
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3986
      start: 3612
    functionDepth: 4
    functionLinenumber: 3612
    functionLinenumberEnd: 3986
    functionName: main
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist.cc
    functionUses: 34
    functionsReached:
    - errlog
    - dnsdist::console::doConsole
    - setTCPDownstreamCleanupInterval
    - d_webServerACL::toMasks
    - setupPools
    - std::make_shared<DownstreamState>
    - sodium_init
    - run
    - getNameWithAddr
    - std::make_unique<DNSDistSNMPAgent>
    - addServerToPool
    - std::make_shared<ServerPolicy>
    - ComboAddress
    - dropPrivileges
    - infolog
    - start
    - setDoHDownstreamCleanupInterval
    - CommandLineParameters::structuredLoggingBackend::empty
    - handleQueuedHealthChecks
    - initDoHWorkers
    - addMask
    - std::make_unique<TCPClientCollection>
    - auto::size
    - initListeningSockets
    - warnlog
    - dnsdist::initRandom
    - d_consoleACL::addMask
    - dnsdist::startFrontends
    - auto::info
    - setUpLocalBind
    - std::make_unique<DelayPipe<DelayedPacket>>
    - CommandLineParameters::command::empty
    - exit
    - loadConfigurationFromFile
    - toStringVector
    - dnsdist::Carbon::run
    - signal
    - initFrontends
    - dnsdist::configuration::updateRuntimeConfiguration
    - setTCPDownstreamMaxIdleConnectionsPerBackend
    - thread::detach
    - dnsdist::configuration::getImmutableConfiguration
    - d_backends::push_back
    - dnsdist::logging::getTopLogger
    - dnsdist::configuration::setImmutableConfigurationDone
    - empty
    - std::string::empty
    - std::rethrow_if_nested
    - dnsdist::webserver::registerBuiltInWebHandlers
    - _exit
    - dnsdist::configuration::getCurrentRuntimeConfiguration
    - auto::start
    - dnsdist::console::completion::setupCompletion
    - FDMultiplexer::getMultiplexerSilent
    - createPoolIfNotExists
    - std::move
    - CommandLineParameters::remotes::empty
    - init
    - dnsdist::getFrontends
    - setTCPDownstreamMaxIdleTime
    - std::unique_ptr<FDMultiplexer>
    - std::thread::detach
    - parseParameters
    - dnsdist::ServiceDiscovery::run
    - std::make_unique<dnsdist::AsynchronousHolder>
    - sd_notify
    - dnsdist::xsk::clearDestinationAddresses
    - SLOG
    - queueHealthCheck
    - getName
    - Logging::Loggable
    - dnsdist::getRandomValue
    - std::vector<ClientState*>
    - setDoHDownstreamMaxIdleConnectionsPerBackend
    - setDoHDownstreamMaxIdleTime
    - StatBag::exists
    - dnsdist::configuration::updateImmutableConfiguration
    - thread::join
    - dnsdist::logging::setup
    - setUpStatus
    - dnsdist::console::doClient
    - CommandLineParameters::config::empty
    - what
    - openlog
    - doExitNicely
    - submitHealthCheckResult
    - checkFileDescriptorsLimits
    linkageType: ''
    returnType: int
    signature: int main(int argc, char** argv)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: setLuaNoSideEffect
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:40,1
    - Dst: respRing::lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:45,1
    - Dst: pred
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:48,1
    - Dst: pred
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:58,1
    - Dst: DNSName::trimToLabels
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:63,1
    - Dst: vector::reserve
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:72,1
    - Dst: map::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:72,1
    - Dst: vector::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:74,1
    - Dst: first::makeLowerCase
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:74,1
    - Dst: sort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:77,1
    - Dst: vector::begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:77,1
    - Dst: vector::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:77,1
    - Dst: LuaArray::reserve
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:82,1
    - Dst: std::min
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:82,1
    - Dst: vector::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:82,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:82,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:86,1
    - Dst: LuaArray::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:90,1
    - Dst: second::toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:90,1
    - Dst: LuaArray::push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:95,1
    - Dst: LuaArray::push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:98,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 39
    argCount: 3
    argNames:
    - top
    - labels
    - ' pred'
    argTypes:
    - uint64_t
    - std::optional<int>
    - std::function<bool(const Rings::Response&)>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 38
    functionDepth: 0
    functionLinenumber: 38
    functionLinenumberEnd: 102
    functionName: getGenResponses
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc
    functionUses: 0
    functionsReached:
    - second::toString
    - DNSName::trimToLabels
    - sort
    - vector::reserve
    - static_cast<int>
    - vector::begin
    - static_cast<size_t>
    - first::makeLowerCase
    - map::size
    - LuaArray::push_back
    - pred
    - setLuaNoSideEffect
    - vector::end
    - LuaArray::reserve
    - std::min
    - LuaArray::emplace_back
    - vector::emplace_back
    - vector::size
    - respRing::lock
    linkageType: ''
    returnType: LuaArray<std::vector<boost::variant<string, double>>>
    signature: LuaArray<std::vector<boost::variant<string, double>>> getGenResponses(uint64_t
      top, std::optional<int> labels, const std::function<bool(const Rings::Response&)>&
      pred)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - ' counts'
    - delta
    - rate
    argTypes:
    - counts_t
    - double
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 110
    functionDepth: 0
    functionLinenumber: 110
    functionLinenumberEnd: 123
    functionName: filterScore
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: counts_t
    signature: "counts_t filterScore(const counts_t& counts,\n                            double
      delta, unsigned int rate)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: gettime
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:130,1
    - Dst: static_cast<time_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:132,1
    - Dst: respRing::lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:136,1
    - Dst: isACacheHit
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:147,1
    - Dst: StatNode::submit
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:148,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:148,1
    - Dst: getSamplingRate
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:148,1
    - Dst: StatNode::visit
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:153,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:153,1
    - Dst: visitor
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:153,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 15
    argCount: 2
    argNames:
    - visitor
    - seconds
    argTypes:
    - statvisitor_t
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 154
      start: 127
    functionDepth: 1
    functionLinenumber: 127
    functionLinenumberEnd: 154
    functionName: statNodeRespRing
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc
    functionUses: 0
    functionsReached:
    - isACacheHit
    - pdns::max
    - std::move
    - StatNode::submit
    - visitor
    - StatNode::visit
    - gettime
    - static_cast<time_t>
    - respRing::lock
    - getSamplingRate
    linkageType: ''
    returnType: void
    signature: void statNodeRespRing(statvisitor_t visitor, uint64_t seconds)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: respRing::lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:162,1
    - Dst: std::optional<int>::value
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:166,1
    - Dst: name::toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:170,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:171,1
    - Dst: LuaArray::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:172,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:172,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 1
    argNames:
    - rcode
    argTypes:
    - std::optional<int>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 178
      start: 156
    functionDepth: 0
    functionLinenumber: 156
    functionLinenumberEnd: 178
    functionName: getRespRing
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc
    functionUses: 0
    functionsReached:
    - std::move
    - std::to_string
    - name::toString
    - std::optional<int>::value
    - LuaArray::emplace_back
    - respRing::lock
    linkageType: ''
    returnType: LuaArray<LuaAssociativeTable<std::string>>
    signature: LuaArray<LuaAssociativeTable<std::string>> getRespRing(std::optional<int>
      rcode)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: gettime
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:184,1
    - Dst: counts_t::reserve
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:189,1
    - Dst: getNumberOfResponseEntries
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:189,1
    - Dst: respRing::lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:192,1
    - Dst: visitor
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:202,1
    - Dst: DiffTime
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:209,1
    - Dst: filterScore
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:210,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 17
    argCount: 3
    argNames:
    - rate
    - seconds
    - ' visitor'
    argTypes:
    - unsigned int
    - int
    - std::function<void(counts_t&, const Rings::Response&)>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 211
      start: 180
    functionDepth: 1
    functionLinenumber: 180
    functionLinenumberEnd: 211
    functionName: exceedRespGen
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc
    functionUses: 0
    functionsReached:
    - visitor
    - counts_t::reserve
    - DiffTime
    - getNumberOfResponseEntries
    - filterScore
    - gettime
    - respRing::lock
    linkageType: ''
    returnType: counts_t
    signature: counts_t exceedRespGen(unsigned int rate, int seconds, const std::function<void(counts_t&,
      const Rings::Response&)>& visitor)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: gettime
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:217,1
    - Dst: counts_t::reserve
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:222,1
    - Dst: getNumberOfQueryEntries
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:222,1
    - Dst: queryRing::lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:225,1
    - Dst: visitor
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:233,1
    - Dst: DiffTime
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:240,1
    - Dst: filterScore
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:241,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 17
    argCount: 3
    argNames:
    - rate
    - seconds
    - ' visitor'
    argTypes:
    - unsigned int
    - int
    - std::function<void(counts_t&, const Rings::Query&)>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 242
      start: 213
    functionDepth: 1
    functionLinenumber: 213
    functionLinenumberEnd: 242
    functionName: exceedQueryGen
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc
    functionUses: 0
    functionsReached:
    - queryRing::lock
    - visitor
    - counts_t::reserve
    - DiffTime
    - filterScore
    - gettime
    - getNumberOfQueryEntries
    linkageType: ''
    returnType: counts_t
    signature: counts_t exceedQueryGen(unsigned int rate, int seconds, const std::function<void(counts_t&,
      const Rings::Query&)>& visitor)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: exceedRespGen
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:246,1
    - Dst: adjustForSamplingRate
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:248,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - rate
    - seconds
    - rcode
    argTypes:
    - unsigned int
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 251
      start: 244
    functionDepth: 2
    functionLinenumber: 244
    functionLinenumberEnd: 251
    functionName: exceedRCode
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc
    functionUses: 0
    functionsReached:
    - adjustForSamplingRate
    - exceedRespGen
    linkageType: ''
    returnType: counts_t
    signature: counts_t exceedRCode(unsigned int rate, int seconds, int rcode)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: exceedRespGen
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:255,1
    - Dst: adjustForSamplingRate
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:256,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - rate
    - seconds
    argTypes:
    - unsigned int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 258
      start: 253
    functionDepth: 2
    functionLinenumber: 253
    functionLinenumberEnd: 258
    functionName: exceedRespByterate
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc
    functionUses: 0
    functionsReached:
    - adjustForSamplingRate
    - exceedRespGen
    linkageType: ''
    returnType: counts_t
    signature: counts_t exceedRespByterate(unsigned int rate, int seconds)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:278,1
    - Dst: open
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:279,1
    - Dst: std::string::c_str
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:279,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:281,1
    - Dst: pdns::UniqueFilePtr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:284,1
    - Dst: fdopen
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:284,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:286,1
    - Dst: close
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:287,1
    - Dst: checkAllParametersConsumed
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:291,1
    - Dst: boost::get<string>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:295,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:297,1
    - Dst: boost::get<LuaArray<std::string>>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:300,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:302,1
    - Dst: Netmask
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:308,1
    - Dst: boost::ends_with
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:315,1
    - Dst: substr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:317,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:317,1
    - Dst: pdns::checked_stoi<unsigned int>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:319,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:328,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 42
    argCount: 2
    argNames:
    - ' inp'
    - ' options'
    argTypes:
    - LuaTypeOrArrayOf<std::string>
    - std::optional<LuaAssociativeTable<std::string>>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 336
      start: 272
    functionDepth: 2
    functionLinenumber: 272
    functionLinenumberEnd: 336
    functionName: parseGrepQParams
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc
    functionUses: 0
    functionsReached:
    - Netmask
    - vector::push_back
    - boost::get<string>
    - std::string::c_str
    - stringerror
    - checkAllParametersConsumed
    - boost::get<LuaArray<std::string>>
    - getOptionalValue
    - open
    - size
    - DNSName
    - substr
    - pdns::checked_stoi<unsigned int>
    - pdns::UniqueFilePtr
    - fdopen
    - boost::ends_with
    - close
    linkageType: ''
    returnType: std::optional<GrepQParams>
    signature: std::optional<GrepQParams> parseGrepQParams(const LuaTypeOrArrayOf<std::string>&
      inp, std::optional<LuaAssociativeTable<std::string>>& options)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: netmask::match
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:345,1
    - Dst: name::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:348,1
    - Dst: name::isPartOf
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:352,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 17
    argCount: 2
    argNames:
    - ' params'
    - ' entry'
    argTypes:
    - GrepQParams
    - C
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 364
      start: 339
    functionDepth: 0
    functionLinenumber: 339
    functionLinenumberEnd: 364
    functionName: ringEntryMatches
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc
    functionUses: 0
    functionsReached:
    - name::isPartOf
    - netmask::match
    - name::empty
    linkageType: ''
    returnType: bool
    signature: bool ringEntryMatches(const GrepQParams& params, const C& entry)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:373,1
    - Dst: find
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:375,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:376,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:377,1
    - Dst: std::make_shared<DynBlock::TagSettings>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:379,1
    - Dst: find
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:381,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:382,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 14
    argCount: 4
    argNames:
    - ' directive'
    - ' rule'
    - ' action'
    - ' optionalParameters'
    argTypes:
    - std::string
    - DynBlockRulesGroup::DynBlockRule
    - std::optional<DNSAction::Action>
    - DynamicActionOptionalParameters
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 386
      start: 369
    functionDepth: 0
    functionLinenumber: 369
    functionLinenumberEnd: 386
    functionName: parseDynamicActionOptionalParameters
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc
    functionUses: 0
    functionsReached:
    - std::make_shared<DynBlock::TagSettings>
    - end
    - find
    - std::runtime_error
    linkageType: ''
    returnType: void
    signature: void parseDynamicActionOptionalParameters(const std::string& directive,
      DynBlockRulesGroup::DynBlockRule& rule, const std::optional<DNSAction::Action>&
      action, const DynamicActionOptionalParameters& optionalParameters)
  - BBCount: 63
    BranchProfiles: []
    Callsites:
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:393,1
    - Dst: setLuaNoSideEffect
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:394,1
    - Dst: queryRing::lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:400,1
    - Dst: vector::reserve
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:408,1
    - Dst: map::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:408,1
    - Dst: vector::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:410,1
    - Dst: sort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:413,1
    - Dst: vector::begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:413,1
    - Dst: vector::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:413,1
    - Dst: second::toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:424,1
    - Dst: str
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:424,1
    - Dst: str
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:427,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:430,1
    - Dst: setLuaNoSideEffect
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:431,1
    - Dst: queryRing::lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:436,1
    - Dst: queryRing::lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:446,1
    - Dst: auto::trimToLabels
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:449,1
    - Dst: vector::reserve
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:457,1
    - Dst: map::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:457,1
    - Dst: vector::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:459,1
    - Dst: first::makeLowerCase
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:459,1
    - Dst: sort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:462,1
    - Dst: vector::begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:462,1
    - Dst: vector::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:462,1
    - Dst: std::unordered_map::insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:474,1
    - Dst: second::toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:474,1
    - Dst: std::unordered_map::insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:479,1
    - Dst: std::unordered_map::insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:482,1
    - Dst: executeCode
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:488,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:490,1
    - Dst: setLuaNoSideEffect
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:491,1
    - Dst: std::vector::reserve
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:494,1
    - Dst: getNumberOfShards
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:494,1
    - Dst: respRing::lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:497,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:498,1
    - Dst: std::vector::back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:500,1
    - Dst: vector::reserve
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:503,1
    - Dst: name::toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:507,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:511,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:511,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:517,1
    - Dst: getGenResponses
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:518,1
    - Dst: executeCode
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:521,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:523,1
    - Dst: getGenResponses
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:524,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:526,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:528,1
    - Dst: executeCode
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:532,1
    - Dst: executeCode
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:534,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:536,1
    - Dst: setLuaNoSideEffect
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:537,1
    - Dst: getTopBandwidth
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:538,1
    - Dst: executeCode
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:541,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:544,1
    - Dst: setLuaNoSideEffect
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:545,1
    - Dst: dnsdist::console::getConfigurationDelta
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:547,1
    - Dst: localtime_r
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:549,1
    - Dst: strftime
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:551,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:551,1
    - Dst: std::array::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:551,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:552,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:557,1
    - Dst: setLuaNoSideEffect
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:558,1
    - Dst: parseGrepQParams
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:560,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:564,1
    - Dst: std::vector::reserve
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:568,1
    - Dst: getNumberOfQueryEntries
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:568,1
    - Dst: std::vector::reserve
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:569,1
    - Dst: getNumberOfResponseEntries
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:569,1
    - Dst: queryRing::lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:572,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:574,1
    - Dst: respRing::lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:578,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:580,1
    - Dst: sort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:585,1
    - Dst: std::vector::begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:585,1
    - Dst: std::vector::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:585,1
    - Dst: sort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:589,1
    - Dst: std::vector::begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:589,1
    - Dst: std::vector::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:589,1
    - Dst: gettime
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:595,1
    - Dst: str
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:600,1
    - Dst: fprintf
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:605,1
    - Dst: auto::outputFile::get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:605,1
    - Dst: auto::c_str
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:605,1
    - Dst: ringEntryMatches
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:610,1
    - Dst: Opcode::to_s
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:616,1
    - Dst: std::multimap::emplace
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:618,1
    - Dst: DiffTime
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:618,1
    - Dst: requestor::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:618,1
    - Dst: getNextProtocol
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:618,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:618,1
    - Dst: name::toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:618,1
    - Dst: QType::toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:618,1
    - Dst: str
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:618,1
    - Dst: ringEntryMatches
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:629,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:634,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:634,1
    - Dst: string::clear
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:637,1
    - Dst: ds::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:640,1
    - Dst: getNextProtocol
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:641,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:646,1
    - Dst: std::multimap::emplace
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:647,1
    - Dst: DiffTime
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:647,1
    - Dst: requestor::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:647,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:647,1
    - Dst: name::toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:647,1
    - Dst: QType::toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:647,1
    - Dst: RCode::to_s
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:647,1
    - Dst: str
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:647,1
    - Dst: std::multimap::emplace
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:650,1
    - Dst: DiffTime
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:650,1
    - Dst: requestor::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:650,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:650,1
    - Dst: name::toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:650,1
    - Dst: QType::toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:650,1
    - Dst: RCode::to_s
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:650,1
    - Dst: str
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:650,1
    - Dst: fprintf
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:663,1
    - Dst: auto::outputFile::get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:663,1
    - Dst: second::c_str
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:663,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:668,1
    - Dst: setLuaNoSideEffect
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:669,1
    - Dst: respRing::lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:681,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:684,1
    - Dst: map::lower_bound
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:689,1
    - Dst: map::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:690,1
    - Dst: map::rbegin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:694,1
    - Dst: boost::format
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:706,1
    - Dst: str
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:706,1
    - Dst: std::max
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:710,1
    - Dst: str
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:713,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:716,1
    - Dst: string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:727,1
    - Dst: str
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:727,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:731,1
    - Dst: setLuaNoSideEffect
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:732,1
    - Dst: dnsdist::configuration::getImmutableConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:733,1
    - Dst: getThreadsCount
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:737,1
    - Dst: getQueuedCount
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:737,1
    - Dst: boost::format
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:741,1
    - Dst: dnsdist::getFrontends
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:745,1
    - Dst: local::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:746,1
    - Dst: boost::format
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:752,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:756,1
    - Dst: getName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:757,1
    - Dst: d_config::remote::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:757,1
    - Dst: ostringstream::str
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:761,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:764,1
    - Dst: setLuaNoSideEffect
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:765,1
    - Dst: dnsdist::getFrontends
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:772,1
    - Dst: hasTLS
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:773,1
    - Dst: local::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:787,1
    - Dst: ostringstream::str
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:792,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:795,1
    - Dst: setLuaNoSideEffect
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:796,1
    - Dst: getThreadsCount
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:798,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:801,1
    - Dst: setLuaNoSideEffect
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:802,1
    - Dst: getThreadsCount
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:804,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:808,1
    - Dst: setLuaNoSideEffect
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:809,1
    - Dst: clear
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:814,1
    - Dst: entries::read_lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:815,1
    - Dst: std::copy_if
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:819,1
    - Dst: auto::begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:819,1
    - Dst: auto::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:819,1
    - Dst: std::back_inserter
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:819,1
    - Dst: d_labels::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:819,1
    - Dst: sort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:821,1
    - Dst: std::vector::begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:821,1
    - Dst: std::vector::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:821,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:827,1
    - Dst: std::get_if<pdns::stat_t*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:829,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:830,1
    - Dst: load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:830,1
    - Dst: std::get_if<pdns::stat_double_t*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:832,1
    - Dst: load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:833,1
    - Dst: str
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:833,1
    - Dst: std::get_if<dnsdist::metrics::Stats::statfunction_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:835,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:836,1
    - Dst: vector::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:839,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:839,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:840,1
    - Dst: str
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:840,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:843,1
    - Dst: str
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:843,1
    - Dst: vector::begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:847,1
    - Dst: vector::begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:848,1
    - Dst: vector::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:851,1
    - Dst: vector::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:851,1
    - Dst: vector::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:854,1
    - Dst: vector::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:858,1
    - Dst: str
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:862,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:868,1
    - Dst: setLuaNoSideEffect
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:869,1
    - Dst: exceedRCode
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:870,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:872,1
    - Dst: setLuaNoSideEffect
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:873,1
    - Dst: exceedRCode
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:874,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:877,1
    - Dst: setLuaNoSideEffect
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:878,1
    - Dst: exceedRespByterate
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:879,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:882,1
    - Dst: setLuaNoSideEffect
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:883,1
    - Dst: exceedQueryGen
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:884,1
    - Dst: adjustForSamplingRate
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:886,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:891,1
    - Dst: setLuaNoSideEffect
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:892,1
    - Dst: exceedQueryGen
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:893,1
    - Dst: adjustForSamplingRate
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:894,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:898,1
    - Dst: registerFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:901,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:903,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:905,1
    - Dst: registerMember
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:905,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:905,1
    - Dst: fullname::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:910,1
    - Dst: fullname::toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:910,1
    - Dst: registerMember
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:912,1
    - Dst: registerMember
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:913,1
    - Dst: registerMember
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:914,1
    - Dst: registerMember
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:915,1
    - Dst: registerMember
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:916,1
    - Dst: registerMember
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:917,1
    - Dst: registerMember
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:918,1
    - Dst: registerMember
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:919,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:921,1
    - Dst: statNodeRespRing
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:922,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:922,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:927,1
    - Dst: std::make_shared<DynBlockRulesGroup>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:927,1
    - Dst: parseDynamicActionOptionalParameters
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:932,1
    - Dst: setQueryRate
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:933,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:933,1
    - Dst: parseDynamicActionOptionalParameters
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:940,1
    - Dst: setResponseByteRate
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:941,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:941,1
    - Dst: parseDynamicActionOptionalParameters
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:948,1
    - Dst: setSuffixMatchRule
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:949,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:949,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:949,1
    - Dst: parseDynamicActionOptionalParameters
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:956,1
    - Dst: setSuffixMatchRuleFFI
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:957,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:957,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:957,1
    - Dst: setNewBlockHook
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:962,1
    - Dst: registerFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:966,1
    - Dst: parseDynamicActionOptionalParameters
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:969,1
    - Dst: setRCodeRate
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:970,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:970,1
    - Dst: parseDynamicActionOptionalParameters
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:977,1
    - Dst: setRCodeRatio
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:978,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:978,1
    - Dst: std::unordered_set::insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:986,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:988,1
    - Dst: parseDynamicActionOptionalParameters
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:989,1
    - Dst: setAllowedRCodesRatio
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:990,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:990,1
    - Dst: registerFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:994,1
    - Dst: parseDynamicActionOptionalParameters
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:997,1
    - Dst: setQTypeRate
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:998,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:998,1
    - Dst: registerFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:1002,1
    - Dst: parseDynamicActionOptionalParameters
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:1005,1
    - Dst: setCacheMissRatio
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:1006,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:1006,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:1012,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:1012,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:1015,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:1015,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:1018,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:1018,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:1021,1
    - Dst: setMasks
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:1023,1
    - Dst: type
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:1027,1
    - Dst: typeid
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:1027,1
    - Dst: boost::get<LuaArray<std::string>>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:1028,1
    - Dst: excludeRange
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:1029,1
    - Dst: Netmask
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:1029,1
    - Dst: type
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:1032,1
    - Dst: typeid
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:1032,1
    - Dst: excludeRange
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:1033,1
    - Dst: boost::get<NetmaskGroup>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:1033,1
    - Dst: excludeRange
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:1036,1
    - Dst: Netmask
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:1036,1
    - Dst: boost::get<std::string>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:1036,1
    - Dst: type
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:1040,1
    - Dst: typeid
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:1040,1
    - Dst: boost::get<LuaArray<std::string>>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:1041,1
    - Dst: includeRange
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:1042,1
    - Dst: Netmask
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:1042,1
    - Dst: type
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:1045,1
    - Dst: typeid
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:1045,1
    - Dst: includeRange
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:1046,1
    - Dst: boost::get<NetmaskGroup>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:1046,1
    - Dst: includeRange
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:1049,1
    - Dst: Netmask
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:1049,1
    - Dst: boost::get<std::string>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:1049,1
    - Dst: type
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:1053,1
    - Dst: typeid
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:1053,1
    - Dst: boost::get<LuaArray<std::string>>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:1054,1
    - Dst: removeRange
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:1055,1
    - Dst: Netmask
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:1055,1
    - Dst: type
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:1058,1
    - Dst: typeid
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:1058,1
    - Dst: removeRange
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:1059,1
    - Dst: boost::get<NetmaskGroup>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:1059,1
    - Dst: removeRange
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:1062,1
    - Dst: Netmask
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:1062,1
    - Dst: boost::get<std::string>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:1062,1
    - Dst: type
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:1066,1
    - Dst: typeid
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:1066,1
    - Dst: boost::get<LuaArray<std::string>>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:1067,1
    - Dst: excludeDomain
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:1068,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:1068,1
    - Dst: excludeDomain
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:1072,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:1072,1
    - Dst: boost::get<std::string>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:1072,1
    - Dst: apply
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:1076,1
    - Dst: registerFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:1078,1
    - Dst: registerFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:1079,1
    - Dst: registerMember
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:1082,1
    - Dst: registerMember
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:1083,1
    - Dst: registerMember
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:1084,1
    - Dst: gettime
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:1087,1
    - Dst: gettime
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:1089,1
    - Dst: registerMember
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:1106,1
    - Dst: blocks::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:1107,1
    - Dst: registerMember
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:1108,1
    - Dst: registerMember
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:1109,1
    - Dst: registerMember
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:1110,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:1112,1
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:1115,1
    - Dst: setLuaSideEffect
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:1118,1
    - Dst: gettime
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:1120,1
    - Dst: parseDynamicActionOptionalParameters
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:1123,1
    - Dst: dnsdist::DynamicBlocks::getSuffixDynamicRulesCopy
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:1126,1
    - Dst: DNSName::makeUsLowerCase
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:1129,1
    - Dst: dnsdist::DynamicBlocks::addOrRefreshBlockSMT
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:1134,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:1134,1
    - Dst: dnsdist::DynamicBlocks::setSuffixDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:1140,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:1140,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:1144,1
    - Dst: setLuaSideEffect
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:1147,1
    - Dst: type
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:1150,1
    - Dst: typeid
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:1150,1
    - Dst: boost::get<ComboAddress>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:1151,1
    - Dst: boost::get<std::string>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:1154,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:1156,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:1159,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:1159,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:1159,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:1160,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:1160,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:1160,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:1160,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:1164,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:1164,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:1165,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:1165,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:1165,1
    - Dst: ComboAddress::isIPv4
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:1169,1
    - Dst: parseDynamicActionOptionalParameters
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:1172,1
    - Dst: gettime
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:1175,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:1178,1
    - Dst: dnsdist::DynamicBlocks::getClientAddressDynamicRulesCopy
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:1181,1
    - Dst: dnsdist::DynamicBlocks::addOrRefreshBlock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:1182,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:1182,1
    - Dst: dnsdist::DynamicBlocks::setClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:1183,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc:1183,1
    CyclomaticComplexity: 119
    EdgeCount: 119
    ICount: 531
    argCount: 1
    argNames:
    - ' luaCtx'
    argTypes:
    - LuaContext
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1187
      start: 390
    functionDepth: 4
    functionLinenumber: 390
    functionLinenumberEnd: 1187
    functionName: setupLuaInspection
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc
    functionUses: 0
    functionsReached:
    - errlog
    - std::unordered_set::insert
    - vector::reserve
    - std::string
    - vector::begin
    - std::vector::size
    - localtime_r
    - map::end
    - parseDynamicActionOptionalParameters
    - DiffTime
    - Opcode::to_s
    - setQueryRate
    - map::size
    - getNumberOfQueryEntries
    - std::multimap::emplace
    - type
    - std::vector::end
    - vector::push_back
    - setMasks
    - vector::end
    - std::vector::reserve
    - boost::get<NetmaskGroup>
    - str
    - blocks::load
    - gettime
    - fullname::toString
    - ComboAddress
    - getThreadsCount
    - dnsdist::DynamicBlocks::addOrRefreshBlock
    - setQTypeRate
    - getGenResponses
    - respRing::lock
    - std::array::size
    - getTopBandwidth
    - DNSName::makeUsLowerCase
    - boost::get<std::string>
    - std::back_inserter
    - apply
    - dnsdist::DynamicBlocks::setSuffixDynamicRules
    - parseGrepQParams
    - dnsdist::console::getConfigurationDelta
    - string
    - size
    - exceedRespByterate
    - excludeRange
    - map::rbegin
    - excludeDomain
    - std::runtime_error
    - setSuffixMatchRuleFFI
    - DNSName
    - dnsdist::DynamicBlocks::getSuffixDynamicRulesCopy
    - std::array::data
    - ds::toStringWithPort
    - typeid
    - second::c_str
    - boost::get<LuaArray<std::string>>
    - setLuaSideEffect
    - std::unordered_map::insert
    - hasTLS
    - vector::size
    - string::clear
    - fprintf
    - second::toString
    - d_config::remote::toStringWithPort
    - auto::begin
    - dnsdist::configuration::getImmutableConfiguration
    - setResponseByteRate
    - strftime
    - static_cast<int>
    - setSuffixMatchRule
    - getQueuedCount
    - dnsdist::DynamicBlocks::getClientAddressDynamicRulesCopy
    - std::vector::begin
    - ringEntryMatches
    - std::get_if<dnsdist::metrics::Stats::statfunction_t>
    - local::toStringWithPort
    - requestor::toStringWithPort
    - registerMember
    - boost::get<ComboAddress>
    - first::makeLowerCase
    - dnsdist::logging::getTopLogger
    - empty
    - std::vector::back
    - htons
    - Netmask
    - dnsdist::configuration::getCurrentRuntimeConfiguration
    - auto::c_str
    - auto::outputFile::get
    - registerFunction
    - std::make_shared<DynBlockRulesGroup>
    - std::get_if<pdns::stat_double_t*>
    - setCacheMissRatio
    - get
    - ostringstream::str
    - setRCodeRate
    - exceedRCode
    - std::move
    - map::lower_bound
    - executeCode
    - getNumberOfShards
    - dnsdist::getFrontends
    - std::copy_if
    - getNextProtocol
    - std::get_if<pdns::stat_t*>
    - queryRing::lock
    - name::toString
    - std::to_string
    - dnsdist::DynamicBlocks::addOrRefreshBlockSMT
    - sort
    - RCode::to_s
    - fullname::empty
    - std::vector::push_back
    - SLOG
    - ComboAddress::isIPv4
    - getName
    - statNodeRespRing
    - Logging::Loggable
    - dnsdist::DynamicBlocks::setClientAddressDynamicRules
    - std::max
    - auto::trimToLabels
    - writeFunction
    - clear
    - includeRange
    - entries::read_lock
    - pdns::max
    - load
    - setLuaNoSideEffect
    - QType::toString
    - getNumberOfResponseEntries
    - removeRange
    - adjustForSamplingRate
    - setRCodeRatio
    - d_labels::empty
    - setAllowedRCodesRatio
    - what
    - vector::emplace_back
    - boost::format
    - auto::end
    - exceedQueryGen
    - setNewBlockHook
    linkageType: ''
    returnType: void
    signature: void setupLuaInspection(LuaContext& luaCtx)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: boost::starts_with
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console-completion.cc:403,1
    - Dst: parameters::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console-completion.cc:408,1
    - Dst: strdup
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console-completion.cc:412,1
    - Dst: std::string::c_str
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console-completion.cc:412,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 16
    argCount: 2
    argNames:
    - text
    - state
    argTypes:
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 416
      start: 391
    functionDepth: 0
    functionLinenumber: 391
    functionLinenumberEnd: 416
    functionName: dnsdist::console::completion::dnsdist_completion_generator
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-console-completion.cc
    functionUses: 0
    functionsReached:
    - boost::starts_with
    - parameters::empty
    - strdup
    - std::string::c_str
    linkageType: ''
    returnType: char
    signature: char * dnsdist_completion_generator(const char* text, int state)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: rl_completion_matches
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console-completion.cc:424,1
    - Dst: const_cast<char*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console-completion.cc:424,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 431
      start: 418
    functionDepth: 0
    functionLinenumber: 418
    functionLinenumberEnd: 431
    functionName: dnsdist::console::completion::dnsdist_completion_callback
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-console-completion.cc
    functionUses: 0
    functionsReached:
    - rl_completion_matches
    - const_cast<char*>
    linkageType: ''
    returnType: char
    signature: char ** dnsdist_completion_callback(const char* text, int start, int
      end)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::atomic::exchange
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console-completion.cc:438,1
    - Dst: dnsdist::rules::getRuleChainDescriptions
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console-completion.cc:442,1
    - Dst: description::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console-completion.cc:443,1
    - Dst: push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console-completion.cc:444,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console-completion.cc:444,1
    - Dst: push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console-completion.cc:445,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console-completion.cc:445,1
    - Dst: push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console-completion.cc:446,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console-completion.cc:446,1
    - Dst: push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console-completion.cc:447,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console-completion.cc:447,1
    - Dst: push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console-completion.cc:448,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console-completion.cc:448,1
    - Dst: push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console-completion.cc:449,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console-completion.cc:449,1
    - Dst: push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console-completion.cc:450,1
    - Dst: push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console-completion.cc:451,1
    - Dst: push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console-completion.cc:452,1
    - Dst: push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console-completion.cc:453,1
    - Dst: dnsdist::rules::getResponseRuleChainDescriptions
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console-completion.cc:456,1
    - Dst: description::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console-completion.cc:457,1
    - Dst: push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console-completion.cc:458,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console-completion.cc:458,1
    - Dst: push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console-completion.cc:459,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console-completion.cc:459,1
    - Dst: push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console-completion.cc:460,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console-completion.cc:460,1
    - Dst: push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console-completion.cc:461,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console-completion.cc:461,1
    - Dst: push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console-completion.cc:462,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console-completion.cc:462,1
    - Dst: push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console-completion.cc:463,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console-completion.cc:463,1
    - Dst: push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console-completion.cc:464,1
    - Dst: push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console-completion.cc:465,1
    - Dst: push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console-completion.cc:466,1
    - Dst: push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console-completion.cc:467,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 26
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 469
      start: 435
    functionDepth: 1
    functionLinenumber: 435
    functionLinenumberEnd: 469
    functionName: dnsdist::console::completion::initializeConsoleKeywords
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-console-completion.cc
    functionUses: 0
    functionsReached:
    - dnsdist::rules::getResponseRuleChainDescriptions
    - push_back
    - dnsdist::rules::getRuleChainDescriptions
    - std::atomic::exchange
    - std::string
    - description::empty
    linkageType: ''
    returnType: void
    signature: void initializeConsoleKeywords()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 474
      start: 471
    functionDepth: 0
    functionLinenumber: 471
    functionLinenumberEnd: 474
    functionName: dnsdist::console::completion::getConsoleKeywords
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-console-completion.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::vector<ConsoleKeyword>
    signature: std::vector<ConsoleKeyword> & getConsoleKeywords()
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 485
      start: 476
    functionDepth: 0
    functionLinenumber: 476
    functionLinenumberEnd: 485
    functionName: dnsdist::console::completion::ConsoleKeyword::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-console-completion.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string ConsoleKeyword::toString() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::console::completion::initializeConsoleKeywords
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console-completion.cc:491,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 497
      start: 488
    functionDepth: 2
    functionLinenumber: 488
    functionLinenumberEnd: 497
    functionName: dnsdist::console::completion::setupCompletion
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-console-completion.cc
    functionUses: 1
    functionsReached:
    - dnsdist::console::completion::initializeConsoleKeywords
    linkageType: ''
    returnType: void
    signature: void setupCompletion()
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: boost::starts_with
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console-completion.cc:403,1
    - Dst: parameters::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console-completion.cc:408,1
    - Dst: strdup
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console-completion.cc:412,1
    - Dst: std::string::c_str
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console-completion.cc:412,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 16
    argCount: 2
    argNames:
    - text
    - state
    argTypes:
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 416
      start: 391
    functionDepth: 0
    functionLinenumber: 391
    functionLinenumberEnd: 416
    functionName: dnsdist::console::completion::dnsdist_completion_generator
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-console-completion.cc
    functionUses: 0
    functionsReached:
    - boost::starts_with
    - parameters::empty
    - strdup
    - std::string::c_str
    linkageType: ''
    returnType: char
    signature: char * dnsdist_completion_generator(const char* text, int state)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: rl_completion_matches
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console-completion.cc:424,1
    - Dst: const_cast<char*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console-completion.cc:424,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 431
      start: 418
    functionDepth: 0
    functionLinenumber: 418
    functionLinenumberEnd: 431
    functionName: dnsdist::console::completion::dnsdist_completion_callback
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-console-completion.cc
    functionUses: 0
    functionsReached:
    - rl_completion_matches
    - const_cast<char*>
    linkageType: ''
    returnType: char
    signature: char ** dnsdist_completion_callback(const char* text, int start, int
      end)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::atomic::exchange
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console-completion.cc:438,1
    - Dst: dnsdist::rules::getRuleChainDescriptions
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console-completion.cc:442,1
    - Dst: description::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console-completion.cc:443,1
    - Dst: push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console-completion.cc:444,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console-completion.cc:444,1
    - Dst: push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console-completion.cc:445,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console-completion.cc:445,1
    - Dst: push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console-completion.cc:446,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console-completion.cc:446,1
    - Dst: push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console-completion.cc:447,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console-completion.cc:447,1
    - Dst: push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console-completion.cc:448,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console-completion.cc:448,1
    - Dst: push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console-completion.cc:449,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console-completion.cc:449,1
    - Dst: push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console-completion.cc:450,1
    - Dst: push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console-completion.cc:451,1
    - Dst: push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console-completion.cc:452,1
    - Dst: push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console-completion.cc:453,1
    - Dst: dnsdist::rules::getResponseRuleChainDescriptions
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console-completion.cc:456,1
    - Dst: description::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console-completion.cc:457,1
    - Dst: push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console-completion.cc:458,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console-completion.cc:458,1
    - Dst: push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console-completion.cc:459,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console-completion.cc:459,1
    - Dst: push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console-completion.cc:460,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console-completion.cc:460,1
    - Dst: push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console-completion.cc:461,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console-completion.cc:461,1
    - Dst: push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console-completion.cc:462,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console-completion.cc:462,1
    - Dst: push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console-completion.cc:463,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console-completion.cc:463,1
    - Dst: push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console-completion.cc:464,1
    - Dst: push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console-completion.cc:465,1
    - Dst: push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console-completion.cc:466,1
    - Dst: push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console-completion.cc:467,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 26
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 469
      start: 435
    functionDepth: 1
    functionLinenumber: 435
    functionLinenumberEnd: 469
    functionName: dnsdist::console::completion::initializeConsoleKeywords
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-console-completion.cc
    functionUses: 1
    functionsReached:
    - dnsdist::rules::getResponseRuleChainDescriptions
    - push_back
    - dnsdist::rules::getRuleChainDescriptions
    - std::atomic::exchange
    - std::string
    - description::empty
    linkageType: ''
    returnType: void
    signature: void initializeConsoleKeywords()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 474
      start: 471
    functionDepth: 0
    functionLinenumber: 471
    functionLinenumberEnd: 474
    functionName: dnsdist::console::completion::getConsoleKeywords
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-console-completion.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::vector<ConsoleKeyword>
    signature: std::vector<ConsoleKeyword> & getConsoleKeywords()
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 485
      start: 476
    functionDepth: 0
    functionLinenumber: 476
    functionLinenumberEnd: 485
    functionName: dnsdist::console::completion::ConsoleKeyword::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-console-completion.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string ConsoleKeyword::toString() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::console::completion::initializeConsoleKeywords
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-console-completion.cc:491,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 497
      start: 488
    functionDepth: 2
    functionLinenumber: 488
    functionLinenumberEnd: 497
    functionName: dnsdist::console::completion::setupCompletion
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-console-completion.cc
    functionUses: 1
    functionsReached:
    - dnsdist::console::completion::initializeConsoleKeywords
    linkageType: ''
    returnType: void
    signature: void setupCompletion()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: close
      Src: /src/pdns/pdns/dnsdistdist/portsmplexer.cc:23,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 24
      start: 21
    functionDepth: 0
    functionLinenumber: 21
    functionLinenumberEnd: 24
    functionName: ~PortsFDMultiplexer()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/portsmplexer.cc
    functionUses: 0
    functionsReached:
    - close
    linkageType: ''
    returnType: void
    signature: void ~PortsFDMultiplexer()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 35
      start: 32
    functionDepth: 0
    functionLinenumber: 32
    functionLinenumberEnd: 35
    functionName: PortsFDMultiplexer::getName
    functionSourceFile: /src/pdns/pdns/dnsdistdist/portsmplexer.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: string
    signature: string getName() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PortsFDMultiplexer::PortsFDMultiplexer
      Src: /src/pdns/pdns/dnsdistdist/portsmplexer.cc:44,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - maxEventsHint
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 42
    functionDepth: 0
    functionLinenumber: 42
    functionLinenumberEnd: 45
    functionName: makePorts
    functionSourceFile: /src/pdns/pdns/dnsdistdist/portsmplexer.cc
    functionUses: 0
    functionsReached:
    - PortsFDMultiplexer::PortsFDMultiplexer
    linkageType: ''
    returnType: FDMultiplexer
    signature: FDMultiplexer * makePorts(unsigned int maxEventsHint)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: FDMultiplexer::getMultiplexerMap
      Src: /src/pdns/pdns/dnsdistdist/portsmplexer.cc:51,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 49
    functionDepth: 0
    functionLinenumber: 49
    functionLinenumberEnd: 52
    functionName: PortsRegisterOurselves
    functionSourceFile: /src/pdns/pdns/dnsdistdist/portsmplexer.cc
    functionUses: 0
    functionsReached:
    - FDMultiplexer::getMultiplexerMap
    linkageType: ''
    returnType: void
    signature: void PortsRegisterOurselves()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: port_create
      Src: /src/pdns/pdns/dnsdistdist/portsmplexer.cc:58,1
    - Dst: FDMultiplexerException
      Src: /src/pdns/pdns/dnsdistdist/portsmplexer.cc:60,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/portsmplexer.cc:60,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - maxEventsHint
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 55
    functionDepth: 0
    functionLinenumber: 55
    functionLinenumberEnd: 62
    functionName: PortsFDMultiplexer::PortsFDMultiplexer
    functionSourceFile: /src/pdns/pdns/dnsdistdist/portsmplexer.cc
    functionUses: 3
    functionsReached:
    - FDMultiplexerException
    - stringerror
    - port_create
    linkageType: ''
    returnType: void
    signature: void PortsFDMultiplexer::PortsFDMultiplexer(unsigned int maxEventsHint)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/portsmplexer.cc:74,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - kind
    argTypes:
    - FDMultiplexer::EventKind
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 64
    functionDepth: 0
    functionLinenumber: 64
    functionLinenumberEnd: 75
    functionName: convertEventKind
    functionSourceFile: /src/pdns/pdns/dnsdistdist/portsmplexer.cc
    functionUses: 13
    functionsReached:
    - std::runtime_error
    linkageType: ''
    returnType: int
    signature: int convertEventKind(FDMultiplexer::EventKind kind)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: port_associate
      Src: /src/pdns/pdns/dnsdistdist/portsmplexer.cc:79,1
    - Dst: convertEventKind
      Src: /src/pdns/pdns/dnsdistdist/portsmplexer.cc:79,1
    - Dst: FDMultiplexerException
      Src: /src/pdns/pdns/dnsdistdist/portsmplexer.cc:80,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/portsmplexer.cc:80,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 2
    argNames:
    - fd
    - kind
    argTypes:
    - int
    - FDMultiplexer::EventKind
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 77
    functionDepth: 0
    functionLinenumber: 77
    functionLinenumberEnd: 82
    functionName: PortsFDMultiplexer::addFD
    functionSourceFile: /src/pdns/pdns/dnsdistdist/portsmplexer.cc
    functionUses: 0
    functionsReached:
    - FDMultiplexerException
    - stringerror
    - port_associate
    - convertEventKind
    linkageType: ''
    returnType: void
    signature: void PortsFDMultiplexer::addFD(int fd, FDMultiplexer::EventKind kind)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: port_dissociate
      Src: /src/pdns/pdns/dnsdistdist/portsmplexer.cc:86,1
    - Dst: FDMultiplexerException
      Src: /src/pdns/pdns/dnsdistdist/portsmplexer.cc:87,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/portsmplexer.cc:87,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 4
    argCount: 1
    argNames:
    - fd
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 84
    functionDepth: 0
    functionLinenumber: 84
    functionLinenumberEnd: 89
    functionName: PortsFDMultiplexer::removeFD
    functionSourceFile: /src/pdns/pdns/dnsdistdist/portsmplexer.cc
    functionUses: 0
    functionsReached:
    - FDMultiplexerException
    - stringerror
    - port_dissociate
    linkageType: ''
    returnType: void
    signature: void PortsFDMultiplexer::removeFD(int fd, FDMultiplexer::EventKind)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: port_getn
      Src: /src/pdns/pdns/dnsdistdist/portsmplexer.cc:97,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/portsmplexer.cc:97,1
    - Dst: min
      Src: /src/pdns/pdns/dnsdistdist/portsmplexer.cc:97,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/dnsdistdist/portsmplexer.cc:97,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/portsmplexer.cc:97,1
    - Dst: FDMultiplexerException
      Src: /src/pdns/pdns/dnsdistdist/portsmplexer.cc:107,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/portsmplexer.cc:107,1
    - Dst: reserve
      Src: /src/pdns/pdns/dnsdistdist/portsmplexer.cc:119,1
    - Dst: count
      Src: /src/pdns/pdns/dnsdistdist/portsmplexer.cc:126,1
    - Dst: port_associate
      Src: /src/pdns/pdns/dnsdistdist/portsmplexer.cc:127,1
    - Dst: count
      Src: /src/pdns/pdns/dnsdistdist/portsmplexer.cc:127,1
    - Dst: FDMultiplexerException
      Src: /src/pdns/pdns/dnsdistdist/portsmplexer.cc:128,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/portsmplexer.cc:128,1
    - Dst: count
      Src: /src/pdns/pdns/dnsdistdist/portsmplexer.cc:133,1
    - Dst: port_associate
      Src: /src/pdns/pdns/dnsdistdist/portsmplexer.cc:134,1
    - Dst: count
      Src: /src/pdns/pdns/dnsdistdist/portsmplexer.cc:134,1
    - Dst: FDMultiplexerException
      Src: /src/pdns/pdns/dnsdistdist/portsmplexer.cc:135,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/portsmplexer.cc:135,1
    - Dst: push_back
      Src: /src/pdns/pdns/dnsdistdist/portsmplexer.cc:144,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 32
    argCount: 2
    argNames:
    - ' fds'
    - timeout
    argTypes:
    - std::vector<int>
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 146
      start: 91
    functionDepth: 0
    functionLinenumber: 91
    functionLinenumberEnd: 146
    functionName: PortsFDMultiplexer::getAvailableFDs
    functionSourceFile: /src/pdns/pdns/dnsdistdist/portsmplexer.cc
    functionUses: 0
    functionsReached:
    - count
    - port_associate
    - stringerror
    - push_back
    - size
    - port_getn
    - reserve
    - data
    - FDMultiplexerException
    - min
    - static_cast<int>
    linkageType: ''
    returnType: void
    signature: void PortsFDMultiplexer::getAvailableFDs(std::vector<int>& fds, int
      timeout)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: port_getn
      Src: /src/pdns/pdns/dnsdistdist/portsmplexer.cc:156,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/portsmplexer.cc:156,1
    - Dst: min
      Src: /src/pdns/pdns/dnsdistdist/portsmplexer.cc:156,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/dnsdistdist/portsmplexer.cc:156,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/portsmplexer.cc:156,1
    - Dst: FDMultiplexerException
      Src: /src/pdns/pdns/dnsdistdist/portsmplexer.cc:166,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/portsmplexer.cc:166,1
    - Dst: gettimeofday
      Src: /src/pdns/pdns/dnsdistdist/portsmplexer.cc:169,1
    - Dst: gettimeofday
      Src: /src/pdns/pdns/dnsdistdist/portsmplexer.cc:172,1
    - Dst: find
      Src: /src/pdns/pdns/dnsdistdist/portsmplexer.cc:181,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/portsmplexer.cc:182,1
    - Dst: d_callback
      Src: /src/pdns/pdns/dnsdistdist/portsmplexer.cc:183,1
    - Dst: count
      Src: /src/pdns/pdns/dnsdistdist/portsmplexer.cc:185,1
    - Dst: port_associate
      Src: /src/pdns/pdns/dnsdistdist/portsmplexer.cc:185,1
    - Dst: count
      Src: /src/pdns/pdns/dnsdistdist/portsmplexer.cc:185,1
    - Dst: FDMultiplexerException
      Src: /src/pdns/pdns/dnsdistdist/portsmplexer.cc:186,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/portsmplexer.cc:186,1
    - Dst: find
      Src: /src/pdns/pdns/dnsdistdist/portsmplexer.cc:191,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/portsmplexer.cc:192,1
    - Dst: d_callback
      Src: /src/pdns/pdns/dnsdistdist/portsmplexer.cc:193,1
    - Dst: count
      Src: /src/pdns/pdns/dnsdistdist/portsmplexer.cc:195,1
    - Dst: port_associate
      Src: /src/pdns/pdns/dnsdistdist/portsmplexer.cc:195,1
    - Dst: count
      Src: /src/pdns/pdns/dnsdistdist/portsmplexer.cc:195,1
    - Dst: FDMultiplexerException
      Src: /src/pdns/pdns/dnsdistdist/portsmplexer.cc:196,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/portsmplexer.cc:196,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 35
    argCount: 2
    argNames:
    - now
    - timeout
    argTypes:
    - struct timeval*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 203
      start: 148
    functionDepth: 0
    functionLinenumber: 148
    functionLinenumberEnd: 203
    functionName: PortsFDMultiplexer::run
    functionSourceFile: /src/pdns/pdns/dnsdistdist/portsmplexer.cc
    functionUses: 1
    functionsReached:
    - count
    - port_associate
    - stringerror
    - end
    - size
    - d_callback
    - port_getn
    - gettimeofday
    - data
    - FDMultiplexerException
    - min
    - find
    - static_cast<int>
    linkageType: ''
    returnType: int
    signature: int PortsFDMultiplexer::run(struct timeval* now, int timeout)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: boost::any_cast<Socket*>
      Src: /src/pdns/pdns/dnsdistdist/portsmplexer.cc:209,1
    - Dst: Socket*::recvFrom
      Src: /src/pdns/pdns/dnsdistdist/portsmplexer.cc:212,1
    - Dst: string::size
      Src: /src/pdns/pdns/dnsdistdist/portsmplexer.cc:213,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - fd
    - ' parameter'
    argTypes:
    - int
    - boost::any
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 214
      start: 206
    functionDepth: 0
    functionLinenumber: 206
    functionLinenumberEnd: 214
    functionName: acceptData
    functionSourceFile: /src/pdns/pdns/dnsdistdist/portsmplexer.cc
    functionUses: 0
    functionsReached:
    - string::size
    - boost::any_cast<Socket*>
    - Socket*::recvFrom
    linkageType: ''
    returnType: void
    signature: void acceptData(int fd, boost::any& parameter)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Socket::bind
      Src: /src/pdns/pdns/dnsdistdist/portsmplexer.cc:222,1
    - Dst: PortsFDMultiplexer::PortsFDMultiplexer
      Src: /src/pdns/pdns/dnsdistdist/portsmplexer.cc:224,1
    - Dst: PortsFDMultiplexer::addReadFD
      Src: /src/pdns/pdns/dnsdistdist/portsmplexer.cc:226,1
    - Dst: Socket::getHandle
      Src: /src/pdns/pdns/dnsdistdist/portsmplexer.cc:226,1
    - Dst: PortsFDMultiplexer::run
      Src: /src/pdns/pdns/dnsdistdist/portsmplexer.cc:229,1
    - Dst: PortsFDMultiplexer::removeReadFD
      Src: /src/pdns/pdns/dnsdistdist/portsmplexer.cc:231,1
    - Dst: Socket::getHandle
      Src: /src/pdns/pdns/dnsdistdist/portsmplexer.cc:231,1
    - Dst: PortsFDMultiplexer::removeReadFD
      Src: /src/pdns/pdns/dnsdistdist/portsmplexer.cc:232,1
    - Dst: Socket::getHandle
      Src: /src/pdns/pdns/dnsdistdist/portsmplexer.cc:232,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 233
      start: 217
    functionDepth: 0
    functionLinenumber: 217
    functionLinenumberEnd: 233
    functionName: main
    functionSourceFile: /src/pdns/pdns/dnsdistdist/portsmplexer.cc
    functionUses: 35
    functionsReached:
    - Socket::getHandle
    - PortsFDMultiplexer::removeReadFD
    - PortsFDMultiplexer::addReadFD
    - PortsFDMultiplexer::run
    - Socket::bind
    - PortsFDMultiplexer::PortsFDMultiplexer
    linkageType: ''
    returnType: int
    signature: int main()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: clear
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:45,1
    - Dst: memset
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:48,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:50,1
    - Dst: reserve
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:54,1
    - Dst: wirelength
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:54,1
    - Dst: resize
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:55,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:56,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:58,1
    - Dst: reserve
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:59,1
    - Dst: GenericDNSPacketWriter<Container>::xfrName
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:60,1
    - Dst: GenericDNSPacketWriter<Container>::xfr16BitInt
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:61,1
    - Dst: GenericDNSPacketWriter<Container>::xfr16BitInt
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:62,1
    - Dst: GenericDNSPacketWriter<Container>::size
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:64,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:64,1
    - Dst: std::range_error
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:65,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:65,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:65,1
    - Dst: GenericDNSPacketWriter<Container>::size
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:67,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 5
    argNames:
    - ' content'
    - ' qname'
    - qtype
    - qclass
    - opcode
    argTypes:
    - Container
    - DNSName
    - uint16_t
    - uint16_t
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 42
    functionDepth: 1
    functionLinenumber: 42
    functionLinenumberEnd: 68
    functionName: GenericDNSPacketWriter<Container>::GenericDNSPacketWriter
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnswriter.cc
    functionUses: 0
    functionsReached:
    - memcpy
    - pdns::max
    - resize
    - wirelength
    - std::to_string
    - GenericDNSPacketWriter<Container>::xfrName
    - GenericDNSPacketWriter<Container>::xfr16BitInt
    - memset
    - reserve
    - std::range_error
    - GenericDNSPacketWriter<Container>::size
    - begin
    - clear
    - htons
    linkageType: ''
    returnType: void
    signature: void GenericDNSPacketWriter<Container>::GenericDNSPacketWriter(Container&
      content, const DNSName& qname, uint16_t qtype, uint16_t qclass, uint8_t opcode)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: reinterpret_cast<dnsheader*>
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:72,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc: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: GenericDNSPacketWriter<Container>::getHeader
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnswriter.cc
    functionUses: 1
    functionsReached:
    - reinterpret_cast<dnsheader*>
    - begin
    linkageType: ''
    returnType: dnsheader
    signature: dnsheader * GenericDNSPacketWriter<Container>::getHeader()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: GenericDNSPacketWriter<Container>::commit
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:79,1
    - Dst: GenericDNSPacketWriter<Container>::size
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:80,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:80,1
    - Dst: std::range_error
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:81,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:81,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:81,1
    - Dst: GenericDNSPacketWriter<Container>::size
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:83,1
    - Dst: isRoot
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:85,1
    - Dst: insert
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:87,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:87,1
    - Dst: reinterpret_cast<const char *>
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:87,1
    - Dst: std::array::begin
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:87,1
    - Dst: reinterpret_cast<const char *>
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:87,1
    - Dst: std::array::end
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:87,1
    - Dst: GenericDNSPacketWriter<Container>::xfrName
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:90,1
    - Dst: GenericDNSPacketWriter<Container>::xfr16BitInt
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:92,1
    - Dst: GenericDNSPacketWriter<Container>::xfr16BitInt
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:93,1
    - Dst: GenericDNSPacketWriter<Container>::xfr32BitInt
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:94,1
    - Dst: GenericDNSPacketWriter<Container>::xfr16BitInt
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:95,1
    - Dst: GenericDNSPacketWriter<Container>::size
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:98,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 6
    argNames:
    - ' name'
    - qtype
    - ttl
    - qclass
    - place
    - compress
    argTypes:
    - DNSName
    - uint16_t
    - uint32_t
    - uint16_t
    - DNSResourceRecord::Place
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 76
    functionDepth: 1
    functionLinenumber: 76
    functionLinenumberEnd: 99
    functionName: GenericDNSPacketWriter<Container>::startRecord
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnswriter.cc
    functionUses: 1
    functionsReached:
    - GenericDNSPacketWriter<Container>::commit
    - pdns::max
    - std::to_string
    - end
    - std::array::end
    - GenericDNSPacketWriter<Container>::xfrName
    - GenericDNSPacketWriter<Container>::xfr16BitInt
    - reinterpret_cast<const char *>
    - isRoot
    - GenericDNSPacketWriter<Container>::xfr32BitInt
    - std::range_error
    - GenericDNSPacketWriter<Container>::size
    - insert
    - std::array::begin
    linkageType: ''
    returnType: void
    signature: void GenericDNSPacketWriter<Container>::startRecord(const DNSName&
      name, uint16_t qtype, uint32_t ttl, uint16_t qclass, DNSResourceRecord::Place
      place, bool compress)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: htons
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:108,1
    - Dst: GenericDNSPacketWriter<Container>::getHeader
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:119,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:123,1
    - Dst: ntohl
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:125,1
    - Dst: GenericDNSPacketWriter<Container>::startRecord
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:127,1
    - Dst: GenericDNSPacketWriter<Container>::xfr16BitInt
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:129,1
    - Dst: GenericDNSPacketWriter<Container>::xfr16BitInt
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:130,1
    - Dst: second::length
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:130,1
    - Dst: GenericDNSPacketWriter<Container>::xfrBlob
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:131,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 5
    argNames:
    - udpsize
    - extRCode
    - ednsFlags
    - ' options'
    - version
    argTypes:
    - uint16_t
    - uint16_t
    - uint16_t
    - optvect_t
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 133
      start: 101
    functionDepth: 0
    functionLinenumber: 101
    functionLinenumberEnd: 133
    functionName: GenericDNSPacketWriter<Container>::addOpt
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnswriter.cc
    functionUses: 0
    functionsReached:
    - memcpy
    - ntohl
    - GenericDNSPacketWriter<Container>::xfrBlob
    - second::length
    - GenericDNSPacketWriter<Container>::xfr16BitInt
    - GenericDNSPacketWriter<Container>::getHeader
    - GenericDNSPacketWriter<Container>::startRecord
    - htons
    linkageType: ''
    returnType: void
    signature: void GenericDNSPacketWriter<Container>::addOpt(const uint16_t udpsize,
      const uint16_t extRCode, const uint16_t ednsFlags, const optvect_t& options,
      const uint8_t version)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:138,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:141,1
    - Dst: htonl
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:142,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:143,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:144,1
    - Dst: insert
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:146,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:146,1
    - Dst: std::array::begin
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:146,1
    - Dst: std::array::end
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:146,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - val
    argTypes:
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 135
    functionDepth: 1
    functionLinenumber: 135
    functionLinenumberEnd: 147
    functionName: GenericDNSPacketWriter<Container>::xfr48BitInt
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnswriter.cc
    functionUses: 0
    functionsReached:
    - memcpy
    - htonl
    - runtime_error
    - end
    - std::array::end
    - insert
    - std::array::begin
    - htons
    linkageType: ''
    returnType: void
    signature: void GenericDNSPacketWriter<Container>::xfr48BitInt(uint64_t val)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: insert
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:151,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:151,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' val'
    argTypes:
    - NodeOrLocatorID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 152
      start: 149
    functionDepth: 1
    functionLinenumber: 149
    functionLinenumberEnd: 152
    functionName: GenericDNSPacketWriter<Container>::xfrNodeOrLocatorID
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnswriter.cc
    functionUses: 0
    functionsReached:
    - end
    - insert
    linkageType: ''
    returnType: void
    signature: void GenericDNSPacketWriter<Container>::xfrNodeOrLocatorID(const NodeOrLocatorID&
      val)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:156,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:157,1
    - Dst: htonl
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:159,1
    - Dst: static_cast<uint32_t>
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:159,1
    - Dst: reinterpret_cast<uint8_t*>
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:160,1
    - Dst: insert
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:161,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:161,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - val
    argTypes:
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 162
      start: 154
    functionDepth: 1
    functionLinenumber: 154
    functionLinenumberEnd: 162
    functionName: GenericDNSPacketWriter<Container>::xfr32BitInt
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnswriter.cc
    functionUses: 2
    functionsReached:
    - pdns::max
    - htonl
    - runtime_error
    - end
    - reinterpret_cast<uint8_t*>
    - static_cast<uint32_t>
    - insert
    linkageType: ''
    returnType: void
    signature: void GenericDNSPacketWriter<Container>::xfr32BitInt(uint64_t val)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:166,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:167,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:169,1
    - Dst: static_cast<uint16_t>
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:169,1
    - Dst: reinterpret_cast<uint8_t*>
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:170,1
    - Dst: insert
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:171,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:171,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - val
    argTypes:
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 172
      start: 164
    functionDepth: 1
    functionLinenumber: 164
    functionLinenumberEnd: 172
    functionName: GenericDNSPacketWriter<Container>::xfr16BitInt
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnswriter.cc
    functionUses: 7
    functionsReached:
    - pdns::max
    - runtime_error
    - end
    - reinterpret_cast<uint8_t*>
    - static_cast<uint16_t>
    - insert
    - htons
    linkageType: ''
    returnType: void
    signature: void GenericDNSPacketWriter<Container>::xfr16BitInt(uint64_t val)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:176,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:177,1
    - Dst: push_back
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:179,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:179,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - val
    argTypes:
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 180
      start: 174
    functionDepth: 0
    functionLinenumber: 174
    functionLinenumberEnd: 180
    functionName: GenericDNSPacketWriter<Container>::xfr8BitInt
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnswriter.cc
    functionUses: 0
    functionsReached:
    - push_back
    - pdns::max
    - runtime_error
    - static_cast<uint8_t>
    linkageType: ''
    returnType: void
    signature: void GenericDNSPacketWriter<Container>::xfr8BitInt(uint64_t val)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:198,1
    - Dst: push_back
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:199,1
    - Dst: segmentDNSText
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:202,1
    - Dst: push_back
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:205,1
    - Dst: length
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:205,1
    - Dst: insert
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:206,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:206,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:206,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:206,1
    - Dst: length
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:206,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - ' text'
    - lenField
    argTypes:
    - string
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 208
      start: 196
    functionDepth: 1
    functionLinenumber: 196
    functionLinenumberEnd: 208
    functionName: GenericDNSPacketWriter<Container>::xfrText
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnswriter.cc
    functionUses: 0
    functionsReached:
    - length
    - c_str
    - push_back
    - end
    - segmentDNSText
    - insert
    - empty
    linkageType: ''
    returnType: void
    signature: void GenericDNSPacketWriter<Container>::xfrText(const string& text,
      bool, bool lenField)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:212,1
    - Dst: push_back
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:213,1
    - Dst: length
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:217,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:218,1
    - Dst: push_back
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:220,1
    - Dst: length
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:220,1
    - Dst: insert
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:222,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:222,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:222,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:222,1
    - Dst: length
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:222,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 2
    argNames:
    - ' text'
    - lenField
    argTypes:
    - string
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 223
      start: 210
    functionDepth: 1
    functionLinenumber: 210
    functionLinenumberEnd: 223
    functionName: GenericDNSPacketWriter<Container>::xfrUnquotedText
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnswriter.cc
    functionUses: 1
    functionsReached:
    - length
    - c_str
    - push_back
    - runtime_error
    - end
    - insert
    - empty
    linkageType: ''
    returnType: void
    signature: void GenericDNSPacketWriter<Container>::xfrUnquotedText(const string&
      text, bool lenField)
  - BBCount: 22
    BranchProfiles: []
    Callsites:
    - Dst: getStorage
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:231,1
    - Dst: cbegin
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:246,1
    - Dst: cend
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:246,1
    - Dst: boost::container::static_vector<uint16_t, 34>::push_back
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:250,1
    - Dst: cbegin
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:250,1
    - Dst: makeHexDump
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:267,1
    - Dst: string
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:267,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:267,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:267,1
    - Dst: GenericDNSPacketWriter<Container>::size
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:267,1
    - Dst: GenericDNSPacketWriter<Container>::size
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:271,1
    - Dst: GenericDNSPacketWriter<Container>::size
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:285,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:286,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:286,1
    - Dst: GenericDNSPacketWriter<Container>::size
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:286,1
    - Dst: GenericDNSPacketWriter<Container>::size
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:287,1
    - Dst: GenericDNSPacketWriter<Container>::size
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:287,1
    - Dst: boost::container::static_vector<uint16_t, 34>::clear
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:292,1
    - Dst: cbegin
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:294,1
    - Dst: cend
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:294,1
    - Dst: cbegin
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:296,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:298,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:309,1
    - Dst: boost::container::static_vector<uint16_t, 34>::push_back
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:331,1
    - Dst: boost::container::static_vector<uint16_t, 34>::crbegin
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:351,1
    - Dst: boost::container::static_vector<uint16_t, 34>::crbegin
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:352,1
    - Dst: boost::container::static_vector<uint16_t, 34>::crend
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:354,1
    - Dst: boost::container::static_vector<uint16_t, 34>::crend
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:354,1
    - Dst: strncasecmp
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:367,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:367,1
    - Dst: string
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:369,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:369,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:369,1
    - Dst: string
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:369,1
    - Dst: length
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:375,1
    - Dst: boost::container::static_vector<uint16_t, 34>::crbegin
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:384,1
    CyclomaticComplexity: 42
    EdgeCount: 42
    ICount: 100
    argCount: 2
    argNames:
    - ' name'
    - matchLen
    argTypes:
    - DNSName
    - uint16_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 390
      start: 228
    functionDepth: 1
    functionLinenumber: 228
    functionLinenumberEnd: 390
    functionName: GenericDNSPacketWriter<Container>::lookupName
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnswriter.cc
    functionUses: 1
    functionsReached:
    - boost::container::static_vector<uint16_t, 34>::clear
    - length
    - boost::container::static_vector<uint16_t, 34>::crbegin
    - std::to_string
    - getStorage
    - boost::container::static_vector<uint16_t, 34>::crend
    - string
    - strncasecmp
    - boost::container::static_vector<uint16_t, 34>::push_back
    - begin
    - cbegin
    - reinterpret_cast<const char*>
    - GenericDNSPacketWriter<Container>::size
    - cend
    - data
    - c_str
    - makeHexDump
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t GenericDNSPacketWriter<Container>::lookupName(const DNSName&
      name, uint16_t* matchLen)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:399,1
    - Dst: isRoot
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:399,1
    - Dst: push_back
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:400,1
    - Dst: GenericDNSPacketWriter<Container>::lookupName
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:406,1
    - Dst: getStorage
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:407,1
    - Dst: GenericDNSPacketWriter<Container>::size
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:409,1
    - Dst: GenericDNSPacketWriter<Container>::size
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:412,1
    - Dst: GenericDNSPacketWriter<Container>::size
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:413,1
    - Dst: push_back
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:416,1
    - Dst: makeHexDump
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:420,1
    - Dst: string
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:420,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:420,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:420,1
    - Dst: GenericDNSPacketWriter<Container>::size
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:420,1
    - Dst: insert
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:421,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:421,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:421,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:421,1
    - Dst: GenericDNSPacketWriter<Container>::size
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:421,1
    - Dst: push_back
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:425,1
    - Dst: push_back
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:426,1
    - Dst: GenericDNSPacketWriter<Container>::size
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:429,1
    - Dst: push_back
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:435,1
    - Dst: make_unique<DNSName>
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:440,1
    - Dst: makeLowerCase
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:440,1
    - Dst: getStorage
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:442,1
    - Dst: makeHexDump
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:444,1
    - Dst: string
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:444,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:444,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:444,1
    - Dst: length
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:444,1
    - Dst: insert
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:445,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:445,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:445,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:445,1
    - Dst: GenericDNSPacketWriter<Container>::size
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:445,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 37
    argCount: 2
    argNames:
    - ' name'
    - compress
    argTypes:
    - DNSName
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 447
      start: 392
    functionDepth: 1
    functionLinenumber: 392
    functionLinenumberEnd: 447
    functionName: GenericDNSPacketWriter<Container>::xfrName
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnswriter.cc
    functionUses: 4
    functionsReached:
    - makeLowerCase
    - make_unique<DNSName>
    - length
    - c_str
    - getStorage
    - push_back
    - string
    - end
    - isRoot
    - GenericDNSPacketWriter<Container>::size
    - insert
    - empty
    - GenericDNSPacketWriter<Container>::lookupName
    - makeHexDump
    linkageType: ''
    returnType: void
    signature: void GenericDNSPacketWriter<Container>::xfrName(const DNSName& name,
      bool compress)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: reinterpret_cast<const uint8_t*>
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:451,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:451,1
    - Dst: insert
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:452,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:452,1
    - Dst: GenericDNSPacketWriter<Container>::size
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:452,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' blob'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 453
      start: 449
    functionDepth: 1
    functionLinenumber: 449
    functionLinenumberEnd: 453
    functionName: GenericDNSPacketWriter<Container>::xfrBlob
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnswriter.cc
    functionUses: 5
    functionsReached:
    - reinterpret_cast<const uint8_t*>
    - end
    - GenericDNSPacketWriter<Container>::size
    - insert
    - c_str
    linkageType: ''
    returnType: void
    signature: void GenericDNSPacketWriter<Container>::xfrBlob(const string& blob,
      int  )
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: insert
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:457,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:457,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:457,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:457,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' blob'
    argTypes:
    - std::vector<uint8_t>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 458
      start: 455
    functionDepth: 1
    functionLinenumber: 455
    functionLinenumberEnd: 458
    functionName: GenericDNSPacketWriter<Container>::xfrBlob
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnswriter.cc
    functionUses: 5
    functionsReached:
    - end
    - insert
    - begin
    linkageType: ''
    returnType: void
    signature: void GenericDNSPacketWriter<Container>::xfrBlob(const std::vector<uint8_t>&
      blob)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: GenericDNSPacketWriter<Container>::xfrBlob
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:462,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' blob'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 463
      start: 460
    functionDepth: 0
    functionLinenumber: 460
    functionLinenumberEnd: 463
    functionName: GenericDNSPacketWriter<Container>::xfrBlobNoSpaces
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnswriter.cc
    functionUses: 1
    functionsReached:
    - GenericDNSPacketWriter<Container>::xfrBlob
    linkageType: ''
    returnType: void
    signature: void GenericDNSPacketWriter<Container>::xfrBlobNoSpaces(const string&
      blob, int  )
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: GenericDNSPacketWriter<Container>::xfrBlob
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:467,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' blob'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 468
      start: 465
    functionDepth: 0
    functionLinenumber: 465
    functionLinenumberEnd: 468
    functionName: GenericDNSPacketWriter<Container>::xfrHexBlob
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnswriter.cc
    functionUses: 0
    functionsReached:
    - GenericDNSPacketWriter<Container>::xfrBlob
    linkageType: ''
    returnType: void
    signature: void GenericDNSPacketWriter<Container>::xfrHexBlob(const string& blob,
      bool /* keepReading */)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: GenericDNSPacketWriter<Container>::xfr16BitInt
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:474,1
    - Dst: getKey
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:474,1
    - Dst: getKey
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:476,1
    - Dst: GenericDNSPacketWriter<Container>::xfr16BitInt
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:479,1
    - Dst: getMandatory
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:479,1
    - Dst: getMandatory
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:480,1
    - Dst: GenericDNSPacketWriter<Container>::xfr16BitInt
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:481,1
    - Dst: getALPN
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:486,1
    - Dst: getALPN
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:487,1
    - Dst: length
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:488,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:490,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:491,1
    - Dst: GenericDNSPacketWriter<Container>::xfr16BitInt
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:493,1
    - Dst: static_cast<uint16_t>
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:493,1
    - Dst: getALPN
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:494,1
    - Dst: GenericDNSPacketWriter<Container>::xfrUnquotedText
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:495,1
    - Dst: GenericDNSPacketWriter<Container>::xfr16BitInt
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:500,1
    - Dst: GenericDNSPacketWriter<Container>::xfr16BitInt
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:503,1
    - Dst: GenericDNSPacketWriter<Container>::xfr16BitInt
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:504,1
    - Dst: getPort
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:504,1
    - Dst: GenericDNSPacketWriter<Container>::xfr16BitInt
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:507,1
    - Dst: getIPHints
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:507,1
    - Dst: getIPHints
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:508,1
    - Dst: xfrCAWithoutPort
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:509,1
    - Dst: getKey
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:509,1
    - Dst: GenericDNSPacketWriter<Container>::xfr16BitInt
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:513,1
    - Dst: getIPHints
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:513,1
    - Dst: getIPHints
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:514,1
    - Dst: xfrCAWithoutPort
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:515,1
    - Dst: getKey
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:515,1
    - Dst: GenericDNSPacketWriter<Container>::xfr16BitInt
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:519,1
    - Dst: getECH
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:519,1
    - Dst: GenericDNSPacketWriter<Container>::xfrBlobNoSpaces
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:520,1
    - Dst: getECH
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:520,1
    - Dst: GenericDNSPacketWriter<Container>::xfr16BitInt
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:523,1
    - Dst: GenericDNSPacketWriter<Container>::xfr16BitInt
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:526,1
    - Dst: getTLSSupportedGroups
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:526,1
    - Dst: getTLSSupportedGroups
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:527,1
    - Dst: GenericDNSPacketWriter<Container>::xfr16BitInt
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:528,1
    - Dst: GenericDNSPacketWriter<Container>::xfr16BitInt
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:532,1
    - Dst: getValue
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:532,1
    - Dst: GenericDNSPacketWriter<Container>::xfrBlob
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:533,1
    - Dst: getValue
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:533,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 54
    argCount: 1
    argNames:
    - kvs
    argTypes:
    - std::set<SvcParam>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 537
      start: 470
    functionDepth: 0
    functionLinenumber: 470
    functionLinenumberEnd: 537
    functionName: GenericDNSPacketWriter<Container>::xfrSvcParamKeyVals
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnswriter.cc
    functionUses: 0
    functionsReached:
    - getTLSSupportedGroups
    - length
    - pdns::max
    - xfrCAWithoutPort
    - GenericDNSPacketWriter<Container>::xfrBlob
    - getALPN
    - runtime_error
    - getIPHints
    - GenericDNSPacketWriter<Container>::xfr16BitInt
    - getECH
    - getKey
    - static_cast<uint16_t>
    - getValue
    - getMandatory
    - GenericDNSPacketWriter<Container>::xfrBlobNoSpaces
    - getPort
    - GenericDNSPacketWriter<Container>::xfrUnquotedText
    linkageType: ''
    returnType: void
    signature: void GenericDNSPacketWriter<Container>::xfrSvcParamKeyVals(const std::set<SvcParam>
      &kvs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assign
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:542,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:542,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:542,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' records'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 543
      start: 540
    functionDepth: 1
    functionLinenumber: 540
    functionLinenumberEnd: 543
    functionName: GenericDNSPacketWriter<Container>::getRecordPayload
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnswriter.cc
    functionUses: 0
    functionsReached:
    - assign
    - end
    - begin
    linkageType: ''
    returnType: void
    signature: void GenericDNSPacketWriter<Container>::getRecordPayload(string& records)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assign
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:548,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:548,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:548,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' record'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 549
      start: 546
    functionDepth: 1
    functionLinenumber: 546
    functionLinenumberEnd: 549
    functionName: GenericDNSPacketWriter<Container>::getWireFormatContent
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnswriter.cc
    functionUses: 0
    functionsReached:
    - assign
    - end
    - begin
    linkageType: ''
    returnType: void
    signature: void GenericDNSPacketWriter<Container>::getWireFormatContent(string&
      record)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: GenericDNSPacketWriter<Container>::size
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:553,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 554
      start: 551
    functionDepth: 0
    functionLinenumber: 551
    functionLinenumberEnd: 554
    functionName: GenericDNSPacketWriter<Container>::size
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnswriter.cc
    functionUses: 14
    functionsReached:
    - GenericDNSPacketWriter<Container>::size
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t GenericDNSPacketWriter<Container>::size() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: resize
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:558,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 560
      start: 556
    functionDepth: 1
    functionLinenumber: 556
    functionLinenumberEnd: 560
    functionName: GenericDNSPacketWriter<Container>::rollback
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnswriter.cc
    functionUses: 0
    functionsReached:
    - resize
    linkageType: ''
    returnType: void
    signature: void GenericDNSPacketWriter<Container>::rollback()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: resize
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:564,1
    - Dst: reinterpret_cast<dnsheader*>
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:565,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:565,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 567
      start: 562
    functionDepth: 1
    functionLinenumber: 562
    functionLinenumberEnd: 567
    functionName: GenericDNSPacketWriter<Container>::truncate
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnswriter.cc
    functionUses: 0
    functionsReached:
    - reinterpret_cast<dnsheader*>
    - resize
    - begin
    linkageType: ''
    returnType: void
    signature: void GenericDNSPacketWriter<Container>::truncate()
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: GenericDNSPacketWriter<Container>::size
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:575,1
    - Dst: std::range_error
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:576,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:576,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:576,1
    - Dst: GenericDNSPacketWriter<Container>::size
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:576,1
    - Dst: GenericDNSPacketWriter<Container>::size
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:579,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:579,1
    - Dst: std::range_error
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:580,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:580,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:580,1
    - Dst: GenericDNSPacketWriter<Container>::size
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:583,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:584,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:585,1
    - Dst: reinterpret_cast<dnsheader*>
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:587,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:587,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:590,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:590,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:593,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:593,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:596,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:596,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:599,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:599,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 27
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 603
      start: 569
    functionDepth: 0
    functionLinenumber: 569
    functionLinenumberEnd: 603
    functionName: GenericDNSPacketWriter<Container>::commit
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnswriter.cc
    functionUses: 2
    functionsReached:
    - pdns::max
    - std::to_string
    - ntohs
    - std::range_error
    - reinterpret_cast<dnsheader*>
    - GenericDNSPacketWriter<Container>::size
    - begin
    - at
    - htons
    linkageType: ''
    returnType: void
    signature: void GenericDNSPacketWriter<Container>::commit()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: GenericDNSPacketWriter<Container>::size
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:607,1
    - Dst: second::size
      Src: /src/pdns/pdns/dnsdistdist/dnswriter.cc:611,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ' options'
    argTypes:
    - optvect_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 615
      start: 605
    functionDepth: 0
    functionLinenumber: 605
    functionLinenumberEnd: 615
    functionName: GenericDNSPacketWriter<Container>::getSizeWithOpts
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnswriter.cc
    functionUses: 0
    functionsReached:
    - GenericDNSPacketWriter<Container>::size
    - second::size
    linkageType: ''
    returnType: size_t
    signature: size_t GenericDNSPacketWriter<Container>::getSizeWithOpts(const optvect_t&
      options) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.hh:69,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 69
    functionDepth: 0
    functionLinenumber: 69
    functionLinenumberEnd: 69
    functionName: DNSDistPacketCache::getHits
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-cache.hh
    functionUses: 0
    functionsReached:
    - load
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t getHits() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.hh:70,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 70
    functionDepth: 0
    functionLinenumber: 70
    functionLinenumberEnd: 70
    functionName: DNSDistPacketCache::getMisses
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-cache.hh
    functionUses: 0
    functionsReached:
    - load
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t getMisses() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.hh:71,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 71
    functionDepth: 0
    functionLinenumber: 71
    functionLinenumberEnd: 71
    functionName: DNSDistPacketCache::getDeferredLookups
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-cache.hh
    functionUses: 0
    functionsReached:
    - load
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t getDeferredLookups() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.hh:72,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 72
    functionDepth: 0
    functionLinenumber: 72
    functionLinenumberEnd: 72
    functionName: DNSDistPacketCache::getDeferredInserts
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-cache.hh
    functionUses: 0
    functionsReached:
    - load
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t getDeferredInserts() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.hh:73,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 73
    functionDepth: 0
    functionLinenumber: 73
    functionLinenumberEnd: 73
    functionName: DNSDistPacketCache::getLookupCollisions
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-cache.hh
    functionUses: 1
    functionsReached:
    - load
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t getLookupCollisions() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.hh:74,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 74
    functionDepth: 0
    functionLinenumber: 74
    functionLinenumberEnd: 74
    functionName: DNSDistPacketCache::getInsertCollisions
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-cache.hh
    functionUses: 2
    functionsReached:
    - load
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t getInsertCollisions() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 75
    functionDepth: 0
    functionLinenumber: 75
    functionLinenumberEnd: 75
    functionName: DNSDistPacketCache::getMaxEntries
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-cache.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t getMaxEntries() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.hh:76,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 76
    functionDepth: 0
    functionLinenumber: 76
    functionLinenumberEnd: 76
    functionName: DNSDistPacketCache::getTTLTooShorts
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-cache.hh
    functionUses: 0
    functionsReached:
    - load
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t getTTLTooShorts() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.hh:77,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 77
    functionDepth: 0
    functionLinenumber: 77
    functionLinenumberEnd: 77
    functionName: DNSDistPacketCache::getCleanupCount
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-cache.hh
    functionUses: 0
    functionsReached:
    - load
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t getCleanupCount() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 86
    functionDepth: 0
    functionLinenumber: 86
    functionLinenumberEnd: 86
    functionName: DNSDistPacketCache::isECSParsingEnabled
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-cache.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool isECSParsingEnabled() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 88
    functionDepth: 0
    functionLinenumber: 88
    functionLinenumberEnd: 91
    functionName: DNSDistPacketCache::keepStaleData
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-cache.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool keepStaleData() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 93
    functionDepth: 0
    functionLinenumber: 93
    functionLinenumberEnd: 93
    functionName: DNSDistPacketCache::getMaximumEntrySize
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-cache.hh
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: size_t getMaximumEntrySize() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 103
    functionDepth: 0
    functionLinenumber: 103
    functionLinenumberEnd: 103
    functionName: DNSDistPacketCache::getTTD
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-cache.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: time_t
    signature: time_t getTTD() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 120
    functionDepth: 0
    functionLinenumber: 120
    functionLinenumberEnd: 120
    functionName: DNSDistPacketCache::CacheShard::CacheShard
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-cache.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void CacheShard()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 121
    functionDepth: 0
    functionLinenumber: 121
    functionLinenumberEnd: 123
    functionName: DNSDistPacketCache::CacheShard::CacheShard
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-cache.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void CacheShard(CacheShard&& /* old */) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 124
    functionDepth: 0
    functionLinenumber: 124
    functionLinenumberEnd: 126
    functionName: DNSDistPacketCache::CacheShard::CacheShard
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-cache.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void CacheShard(const CacheShard& /* old */)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 130
      start: 127
    functionDepth: 0
    functionLinenumber: 127
    functionLinenumberEnd: 130
    functionName: '& operator=(CacheShard&& /* old */) noexcept'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-cache.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: CacheShard
    signature: CacheShard & operator=(CacheShard&& /* old */) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 134
      start: 131
    functionDepth: 0
    functionLinenumber: 131
    functionLinenumberEnd: 134
    functionName: '& operator=(const CacheShard& /* old */)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-cache.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: CacheShard
    signature: CacheShard & operator=(const CacheShard& /* old */)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 135
      start: 135
    functionDepth: 0
    functionLinenumber: 135
    functionLinenumberEnd: 135
    functionName: ~CacheShard()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-cache.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~CacheShard()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: write_lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-cache.hh:139,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - maxSize
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 137
    functionDepth: 0
    functionLinenumber: 137
    functionLinenumberEnd: 140
    functionName: DNSDistPacketCache::CacheShard::setSize
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-cache.hh
    functionUses: 0
    functionsReached:
    - write_lock
    linkageType: ''
    returnType: void
    signature: void setSize(size_t maxSize)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EDNSSubnetOpts::getFromString
      Src: /src/pdns/pdns/dnsdistdist/ednssubnet.cc:40,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/ednssubnet.cc:40,1
    - Dst: length
      Src: /src/pdns/pdns/dnsdistdist/ednssubnet.cc:40,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' options'
    - eso
    argTypes:
    - std::string
    - EDNSSubnetOpts*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 38
    functionDepth: 0
    functionLinenumber: 38
    functionLinenumberEnd: 41
    functionName: EDNSSubnetOpts::getFromString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ednssubnet.cc
    functionUses: 5
    functionsReached:
    - EDNSSubnetOpts::getFromString
    - length
    - c_str
    linkageType: ''
    returnType: bool
    signature: bool EDNSSubnetOpts::getFromString(const std::string& options, EDNSSubnetOpts*
      eso)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/ednssubnet.cc:50,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/ednssubnet.cc:51,1
    - Dst: ComboAddress::reset
      Src: /src/pdns/pdns/dnsdistdist/ednssubnet.cc:63,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/ednssubnet.cc:66,1
    - Dst: ComboAddress::reset
      Src: /src/pdns/pdns/dnsdistdist/ednssubnet.cc:77,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/ednssubnet.cc:80,1
    - Dst: Netmask
      Src: /src/pdns/pdns/dnsdistdist/ednssubnet.cc:86,1
    - Dst: ComboAddress::truncate
      Src: /src/pdns/pdns/dnsdistdist/ednssubnet.cc:90,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 38
    argCount: 3
    argNames:
    - options
    - len
    - eso
    argTypes:
    - char*
    - unsigned int
    - EDNSSubnetOpts*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 94
    functionName: EDNSSubnetOpts::getFromString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ednssubnet.cc
    functionUses: 5
    functionsReached:
    - Netmask
    - memcpy
    - ntohs
    - ComboAddress::truncate
    - ComboAddress::reset
    linkageType: ''
    returnType: bool
    signature: bool EDNSSubnetOpts::getFromString(const char* options, unsigned int
      len, EDNSSubnetOpts* eso)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: htons
      Src: /src/pdns/pdns/dnsdistdist/ednssubnet.cc:100,1
    - Dst: isIPv4
      Src: /src/pdns/pdns/dnsdistdist/ednssubnet.cc:100,1
    - Dst: getBits
      Src: /src/pdns/pdns/dnsdistdist/ednssubnet.cc:102,1
    - Dst: std::string::assign
      Src: /src/pdns/pdns/dnsdistdist/ednssubnet.cc:105,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/ednssubnet.cc:105,1
    - Dst: getNetwork
      Src: /src/pdns/pdns/dnsdistdist/ednssubnet.cc:108,1
    - Dst: ComboAddress::truncate
      Src: /src/pdns/pdns/dnsdistdist/ednssubnet.cc:109,1
    - Dst: isIPv4
      Src: /src/pdns/pdns/dnsdistdist/ednssubnet.cc:111,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/ednssubnet.cc:113,1
    - Dst: std::string::append
      Src: /src/pdns/pdns/dnsdistdist/ednssubnet.cc:115,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/ednssubnet.cc:115,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/ednssubnet.cc:119,1
    - Dst: std::string::append
      Src: /src/pdns/pdns/dnsdistdist/ednssubnet.cc:121,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/ednssubnet.cc:121,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 125
      start: 96
    functionDepth: 1
    functionLinenumber: 96
    functionLinenumberEnd: 125
    functionName: EDNSSubnetOpts::makeOptString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ednssubnet.cc
    functionUses: 31
    functionsReached:
    - std::string::append
    - std::runtime_error
    - getBits
    - reinterpret_cast<const char*>
    - isIPv4
    - std::string::assign
    - getNetwork
    - ComboAddress::truncate
    - htons
    linkageType: ''
    returnType: std::string
    signature: std::string EDNSSubnetOpts::makeOptString() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:44,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:45,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:46,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:47,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - ' vars'
    argTypes:
    - std::optional<responseParams_t>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 41
    functionDepth: 2
    functionLinenumber: 41
    functionLinenumberEnd: 49
    functionName: parseResponseConfig
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc
    functionUses: 0
    functionsReached:
    - getOptionalValue
    linkageType: ''
    returnType: dnsdist::ResponseConfig
    signature: dnsdist::ResponseConfig parseResponseConfig(std::optional<responseParams_t>&
      vars)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::vector::reserve
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:55,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:55,1
    - Dst: std::vector::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:57,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ' luaArray'
    argTypes:
    - LuaArray<T>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 52
    functionDepth: 0
    functionLinenumber: 52
    functionLinenumberEnd: 60
    functionName: convertLuaArrayToRegular
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc
    functionUses: 0
    functionsReached:
    - std::vector::reserve
    - std::vector::emplace_back
    - size
    linkageType: ''
    returnType: std::vector<T>
    signature: std::vector<T> convertLuaArrayToRegular(const LuaArray<T>& luaArray)
  - BBCount: 58
    BranchProfiles: []
    Callsites:
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:65,1
    - Dst: parseRuleParams
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:69,1
    - Dst: checkAllParametersConsumed
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:70,1
    - Dst: makeRule
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:72,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:73,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:73,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:73,1
    - Dst: std::make_shared<dnsdist::rules::RuleAction>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:74,1
    - Dst: setLuaNoSideEffect
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:78,1
    - Dst: getStats
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:79,1
    - Dst: std::modf
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:83,1
    - Dst: static_cast<double>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:83,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:83,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:84,1
    - Dst: static_cast<uint64_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:84,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:87,1
    - Dst: registerFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:92,1
    - Dst: registerFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:93,1
    - Dst: registerFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:94,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:96,1
    - Dst: dnsdist::actions::getLuaAction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:97,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:97,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:100,1
    - Dst: dnsdist::actions::getLuaFFIAction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:101,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:101,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:104,1
    - Dst: dnsdist::actions::getLuaResponseAction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:105,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:105,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:108,1
    - Dst: dnsdist::actions::getLuaFFIResponseAction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:109,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:109,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:112,1
    - Dst: boost::get<std::string>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:114,1
    - Dst: vector::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:115,1
    - Dst: boost::get<LuaArray<std::string>>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:118,1
    - Dst: vector::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:120,1
    - Dst: parseResponseConfig
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:124,1
    - Dst: checkAllParametersConsumed
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:125,1
    - Dst: dnsdist::actions::getSpoofAction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:126,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:130,1
    - Dst: parseResponseConfig
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:131,1
    - Dst: checkAllParametersConsumed
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:132,1
    - Dst: convertLuaArrayToRegular
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:133,1
    - Dst: dnsdist::actions::getSpoofSVCAction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:134,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:138,1
    - Dst: parseResponseConfig
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:139,1
    - Dst: checkAllParametersConsumed
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:140,1
    - Dst: dnsdist::actions::getSpoofAction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:141,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:141,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:145,1
    - Dst: boost::get<std::string>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:147,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:148,1
    - Dst: boost::get<LuaArray<std::string>>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:151,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:153,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:157,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:158,1
    - Dst: static_cast<uint16_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:163,1
    - Dst: parseResponseConfig
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:165,1
    - Dst: checkAllParametersConsumed
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:166,1
    - Dst: dnsdist::actions::getSpoofAction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:167,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:171,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:173,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:173,1
    - Dst: dnsdist::actions::getSpoofAction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:176,1
    - Dst: PacketBuffer
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:176,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:176,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:176,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:180,1
    - Dst: std::unordered_set::reserve
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:183,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:183,1
    - Dst: std::unordered_set::insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:185,1
    - Dst: QType
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:185,1
    - Dst: dnsdist::actions::getLimitTTLResponseAction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:188,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:188,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:191,1
    - Dst: dnsdist::actions::getLimitTTLResponseAction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:192,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:195,1
    - Dst: dnsdist::actions::getLimitTTLResponseAction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:196,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:199,1
    - Dst: dnsdist::actions::getSetMaxReturnedTTLAction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:200,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:203,1
    - Dst: dnsdist::actions::getSetMaxReturnedTTLResponseAction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:204,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:207,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:209,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:209,1
    - Dst: dnsdist::actions::getSetReducedTTLResponseAction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:211,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:214,1
    - Dst: type
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:216,1
    - Dst: typeid
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:216,1
    - Dst: std::unordered_set::insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:217,1
    - Dst: boost::get<int>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:217,1
    - Dst: type
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:219,1
    - Dst: typeid
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:219,1
    - Dst: boost::get<LuaArray<int>>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:220,1
    - Dst: std::unordered_set::insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:222,1
    - Dst: dnsdist::actions::getClearRecordTypesResponseAction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:225,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:225,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:228,1
    - Dst: parseResponseConfig
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:229,1
    - Dst: checkAllParametersConsumed
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:230,1
    - Dst: dnsdist::actions::getRCodeAction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:231,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:235,1
    - Dst: parseResponseConfig
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:236,1
    - Dst: checkAllParametersConsumed
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:237,1
    - Dst: dnsdist::actions::getERCodeAction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:238,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:243,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:248,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:249,1
    - Dst: typeid
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:256,1
    - Dst: typeid
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:256,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:258,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:258,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:260,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:263,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:264,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:265,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:270,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:271,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:273,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:274,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:276,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:277,1
    - Dst: checkAllParametersConsumed
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:279,1
    - Dst: dnsdist::actions::getSetTraceAction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:281,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:287,1
    - Dst: typeid
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:291,1
    - Dst: typeid
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:291,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:293,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:293,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:300,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:302,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:304,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:305,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:307,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:308,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:310,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:311,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:313,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:314,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:316,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:317,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:319,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:320,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:322,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:323,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:325,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:326,1
    - Dst: dnsdist::actions::RemoteLogActionConfiguration::serverID::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:329,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:330,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:330,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:331,1
    - Dst: dnsdist::actions::RemoteLogActionConfiguration::metas::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:336,1
    - Dst: ProtoBufMetaKey
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:336,1
    - Dst: std::find
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:340,1
    - Dst: std::array::begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:340,1
    - Dst: std::array::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:340,1
    - Dst: std::array::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:340,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:341,1
    - Dst: std::string::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:344,1
    - Dst: std::unordered_set<std::string>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:345,1
    - Dst: stringtok
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:348,1
    - Dst: dnsdist::actions::RemoteLogActionConfiguration::tagsToExport::emplace
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:350,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:350,1
    - Dst: std::string::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:355,1
    - Dst: stringtok
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:357,1
    - Dst: dnsdist::actions::RemoteLogActionConfiguration::tagsPrefixesToExport::emplace
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:359,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:359,1
    - Dst: checkAllParametersConsumed
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:363,1
    - Dst: dnsdist::actions::getRemoteLogAction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:365,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:365,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:368,1
    - Dst: typeid
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:372,1
    - Dst: typeid
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:372,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:374,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:381,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:383,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:386,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:387,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:389,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:390,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:392,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:393,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:395,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:396,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:398,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:399,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:401,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:402,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:404,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:405,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:407,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:408,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:410,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:411,1
    - Dst: dnsdist::actions::RemoteLogActionConfiguration::serverID::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:414,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:415,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:415,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:416,1
    - Dst: dnsdist::actions::RemoteLogActionConfiguration::metas::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:421,1
    - Dst: ProtoBufMetaKey
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:421,1
    - Dst: std::string::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:429,1
    - Dst: std::unordered_set<std::string>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:430,1
    - Dst: stringtok
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:433,1
    - Dst: dnsdist::actions::RemoteLogActionConfiguration::tagsToExport::emplace
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:435,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:435,1
    - Dst: std::string::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:440,1
    - Dst: stringtok
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:442,1
    - Dst: dnsdist::actions::RemoteLogActionConfiguration::tagsPrefixesToExport::emplace
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:444,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:444,1
    - Dst: std::find
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:448,1
    - Dst: std::array::begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:448,1
    - Dst: std::array::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:448,1
    - Dst: std::array::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:448,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:449,1
    - Dst: checkAllParametersConsumed
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:452,1
    - Dst: dnsdist::actions::getRemoteLogResponseAction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:454,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:454,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:457,1
    - Dst: dnsdist::actions::getDnstapLogAction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:458,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:458,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:458,1
    - Dst: std::optional<dnsdist::actions::DnstapAlterFunction>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:458,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:461,1
    - Dst: dnsdist::actions::getDnstapLogResponseAction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:462,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:462,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:462,1
    - Dst: std::optional<dnsdist::actions::DnstapAlterResponseFunction>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:462,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:466,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:469,1
    - Dst: dnsdist::actions::getTeeAction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:472,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:472,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:475,1
    - Dst: dnsdist::actions::getSetECSAction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:477,1
    - Dst: dnsdist::actions::getSetECSAction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:479,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:482,1
    - Dst: dnsdist::actions::getContinueAction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:483,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:483,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:487,1
    - Dst: parseResponseConfig
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:488,1
    - Dst: checkAllParametersConsumed
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:489,1
    - Dst: dnsdist::actions::getHTTPStatusAction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:490,1
    - Dst: PacketBuffer
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:490,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:490,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:490,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:496,1
    - Dst: dnsdist::actions::getKeyValueStoreLookupAction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:497,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:500,1
    - Dst: dnsdist::actions::getKeyValueStoreRangeLookupAction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:501,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:505,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:507,1
    - Dst: parseResponseConfig
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:508,1
    - Dst: checkAllParametersConsumed
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:509,1
    - Dst: dnsdist::actions::getNegativeAndSOAAction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:516,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:516,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:516,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:516,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:520,1
    - Dst: dnsdist::actions::getSetProxyProtocolValuesAction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc:521,1
    CyclomaticComplexity: 102
    EdgeCount: 102
    ICount: 315
    argCount: 1
    argNames:
    - ' luaCtx'
    argTypes:
    - LuaContext
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 526
      start: 63
    functionDepth: 3
    functionLinenumber: 63
    functionLinenumberEnd: 526
    functionName: setupLuaActions
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc
    functionUses: 0
    functionsReached:
    - dnsdist::actions::getLuaResponseAction
    - std::unordered_set::insert
    - std::string
    - static_cast<double>
    - dnsdist::actions::getSetTraceAction
    - parseRuleParams
    - dnsdist::actions::getERCodeAction
    - getOptionalValue
    - std::optional<dnsdist::actions::DnstapAlterResponseFunction>
    - dnsdist::actions::getHTTPStatusAction
    - std::optional<dnsdist::actions::DnstapAlterFunction>
    - std::array::begin
    - type
    - vector::push_back
    - parseResponseConfig
    - boost::get<int>
    - dnsdist::actions::getContinueAction
    - std::make_shared<dnsdist::rules::RuleAction>
    - ComboAddress
    - dnsdist::actions::RemoteLogActionConfiguration::metas::emplace_back
    - std::array::end
    - dnsdist::actions::getSpoofAction
    - dnsdist::actions::getKeyValueStoreLookupAction
    - data
    - dnsdist::actions::getRemoteLogAction
    - dnsdist::actions::getTeeAction
    - dnsdist::actions::getRCodeAction
    - boost::get<std::string>
    - dnsdist::actions::getLuaFFIResponseAction
    - dnsdist::actions::getDnstapLogResponseAction
    - warnlog
    - size
    - static_cast<uint16_t>
    - dnsdist::actions::RemoteLogActionConfiguration::serverID::empty
    - dnsdist::actions::getLimitTTLResponseAction
    - dnsdist::actions::RemoteLogActionConfiguration::tagsToExport::emplace
    - dnsdist::actions::getSetMaxReturnedTTLAction
    - std::runtime_error
    - dnsdist::actions::getSetReducedTTLResponseAction
    - dnsdist::actions::getDnstapLogAction
    - DNSName
    - typeid
    - end
    - boost::get<LuaArray<std::string>>
    - std::find
    - dnsdist::actions::getClearRecordTypesResponseAction
    - std::modf
    - makeRule
    - ProtoBufMetaKey
    - QType
    - dnsdist::logging::getTopLogger
    - std::string::empty
    - dnsdist::actions::getNegativeAndSOAAction
    - registerFunction
    - dnsdist::actions::getKeyValueStoreRangeLookupAction
    - dnsdist::actions::getLuaFFIAction
    - std::move
    - checkAllParametersConsumed
    - dnsdist::actions::getSetMaxReturnedTTLResponseAction
    - PacketBuffer
    - std::to_string
    - dnsdist::actions::getLuaAction
    - std::unordered_set::reserve
    - getStats
    - std::vector::push_back
    - dnsdist::actions::getRemoteLogResponseAction
    - SLOG
    - stringtok
    - std::unordered_set<std::string>
    - begin
    - dnsdist::actions::getSetECSAction
    - writeFunction
    - pdns::max
    - dnsdist::actions::getSetProxyProtocolValuesAction
    - convertLuaArrayToRegular
    - setLuaNoSideEffect
    - static_cast<uint64_t>
    - dnsdist::actions::getSpoofSVCAction
    - vector::emplace_back
    - dnsdist::actions::RemoteLogActionConfiguration::tagsPrefixesToExport::emplace
    - boost::get<LuaArray<int>>
    linkageType: ''
    returnType: void
    signature: void setupLuaActions(LuaContext& luaCtx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:89,1
    - Dst: auto::at
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:90,1
    - Dst: std::shared_ptr<LockGuarded<vector<uint64_t>>>::get
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:90,1
    - Dst: count
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:91,1
    - Dst: std::shared_ptr<LockGuarded<vector<uint64_t>>>::get
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:92,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:92,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:94,1
    - Dst: abort
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:97,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 6
    argNames:
    - function
    - line
    - vect
    - offset
    - ' validStatuses'
    - newStatus
    argTypes:
    - char*
    - int
    - std::shared_ptr<LockGuarded<vector<uint64_t>>>
    - uint64_t
    - std::set<UmemEntryStatus::Status>
    - UmemEntryStatus::Status
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 87
    functionDepth: 0
    functionLinenumber: 87
    functionLinenumberEnd: 100
    functionName: checkUmemIntegrity
    functionSourceFile: /src/pdns/pdns/dnsdistdist/xsk.cc
    functionUses: 0
    functionsReached:
    - abort
    - count
    - std::shared_ptr<LockGuarded<vector<uint64_t>>>::get
    - lock
    - auto::at
    - static_cast<int>
    linkageType: ''
    returnType: void
    signature: void checkUmemIntegrity(const char* function, int line, std::shared_ptr<LockGuarded<vector<uint64_t>>>
      vect, uint64_t offset, const std::set<UmemEntryStatus::Status>& validStatuses,
      UmemEntryStatus::Status newStatus)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:89,1
    - Dst: auto::at
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:90,1
    - Dst: std::shared_ptr<LockGuarded<vector<uint64_t>>>::get
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:90,1
    - Dst: count
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:91,1
    - Dst: std::shared_ptr<LockGuarded<vector<uint64_t>>>::get
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:92,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:92,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:94,1
    - Dst: abort
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:97,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 6
    argNames:
    - function
    - line
    - vect
    - offset
    - ' validStatuses'
    - newStatus
    argTypes:
    - char*
    - int
    - std::shared_ptr<LockGuarded<vector<uint64_t>>>
    - uint64_t
    - std::set<UmemEntryStatus::Status>
    - UmemEntryStatus::Status
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 87
    functionDepth: 0
    functionLinenumber: 87
    functionLinenumberEnd: 100
    functionName: checkUmemIntegrity
    functionSourceFile: /src/pdns/pdns/dnsdistdist/xsk.cc
    functionUses: 0
    functionsReached:
    - abort
    - count
    - std::shared_ptr<LockGuarded<vector<uint64_t>>>::get
    - lock
    - auto::at
    - static_cast<int>
    linkageType: ''
    returnType: void
    signature: void checkUmemIntegrity(const char* function, int line, std::shared_ptr<LockGuarded<vector<uint64_t>>>
      vect, uint64_t offset, const std::set<UmemEntryStatus::Status>& validStatuses,
      UmemEntryStatus::Status newStatus)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - value
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 107
      start: 104
    functionDepth: 0
    functionLinenumber: 104
    functionLinenumberEnd: 107
    functionName: XskSocket::isPowOfTwo
    functionSourceFile: /src/pdns/pdns/dnsdistdist/xsk.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool XskSocket::isPowOfTwo(uint32_t value) noexcept
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:111,1
    - Dst: gettime
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:115,1
    - Dst: top
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:116,1
    - Dst: XskSocket::timeDifference
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:117,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 122
      start: 109
    functionDepth: 1
    functionLinenumber: 109
    functionLinenumberEnd: 122
    functionName: XskSocket::firstTimeout
    functionSourceFile: /src/pdns/pdns/dnsdistdist/xsk.cc
    functionUses: 0
    functionsReached:
    - empty
    - top
    - XskSocket::timeDifference
    - gettime
    linkageType: ''
    returnType: int
    signature: int XskSocket::firstTimeout()
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:125,1
    - Dst: std::make_shared<LockGuarded<vector<uint64_t>>>
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:125,1
    - Dst: XskSocket::isPowOfTwo
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:127,1
    - Dst: XskSocket::isPowOfTwo
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:127,1
    - Dst: XskSocket::isPowOfTwo
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:128,1
    - Dst: XskSocket::isPowOfTwo
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:128,1
    - Dst: XskSocket::isPowOfTwo
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:128,1
    - Dst: XskSocket::isPowOfTwo
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:128,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:129,1
    - Dst: XskSocket::getMACFromIfName
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:131,1
    - Dst: memset
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:133,1
    - Dst: memset
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:134,1
    - Dst: memset
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:135,1
    - Dst: memset
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:136,1
    - Dst: umemInit
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:144,1
    - Dst: xsk_socket__create
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:154,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:154,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:156,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:156,1
    - Dst: std::unique_ptr<xsk_socket, decltype(&xsk_socket__delete)>
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:158,1
    - Dst: reserve
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:161,1
    - Dst: push_back
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:164,1
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:167,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:168,1
    - Dst: UmemEntryStatus
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:168,1
    - Dst: XskSocket::fillFq
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:174,1
    - Dst: XskSocket::xskFd
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:176,1
    - Dst: push_back
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:177,1
    - Dst: FDWrapper
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:182,1
    - Dst: bpf_obj_get
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:182,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:182,1
    - Dst: auto::getHandle
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:184,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:185,1
    - Dst: bpf_map_update_elem
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:188,1
    - Dst: auto::getHandle
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:188,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:190,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:190,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 40
    argCount: 4
    argNames:
    - frameNum_
    - ifName_
    - queue_id
    - ' xskMapPath'
    argTypes:
    - size_t
    - std::string
    - uint32_t
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 192
      start: 124
    functionDepth: 1
    functionLinenumber: 124
    functionLinenumberEnd: 192
    functionName: XskSocket::XskSocket
    functionSourceFile: /src/pdns/pdns/dnsdistdist/xsk.cc
    functionUses: 0
    functionsReached:
    - std::to_string
    - stringerror
    - std::make_shared<LockGuarded<vector<uint64_t>>>
    - XskSocket::fillFq
    - auto::getHandle
    - lock
    - memset
    - c_str
    - std::unique_ptr<xsk_socket, decltype(&xsk_socket__delete)>
    - umemInit
    - xsk_socket__create
    - XskSocket::xskFd
    - XskSocket::getMACFromIfName
    - std::runtime_error
    - push_back
    - get
    - reserve
    - UmemEntryStatus
    - XskSocket::isPowOfTwo
    - FDWrapper
    - bpf_obj_get
    - std::move
    - bpf_map_update_elem
    linkageType: ''
    returnType: void
    signature: void XskSocket::XskSocket(size_t frameNum_, std::string ifName_, uint32_t
      queue_id, const std::string& xskMapPath)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: FDWrapper
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:208,1
    - Dst: bpf_obj_get
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:208,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:208,1
    - Dst: auto::getHandle
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:209,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:210,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - ' mapPath'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 213
      start: 206
    functionDepth: 0
    functionLinenumber: 206
    functionLinenumberEnd: 213
    functionName: getDestinationMap
    functionSourceFile: /src/pdns/pdns/dnsdistdist/xsk.cc
    functionUses: 6
    functionsReached:
    - std::runtime_error
    - auto::getHandle
    - FDWrapper
    - c_str
    - bpf_obj_get
    linkageType: ''
    returnType: FDWrapper
    signature: FDWrapper getDestinationMap(const std::string& mapPath)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: getDestinationMap
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:217,1
    - Dst: bpf_map_get_next_key
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:221,1
    - Dst: auto::getHandle
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:221,1
    - Dst: bpf_map_delete_elem
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:222,1
    - Dst: auto::getHandle
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:222,1
    - Dst: bpf_map_get_next_key
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:229,1
    - Dst: auto::getHandle
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:229,1
    - Dst: bpf_map_delete_elem
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:230,1
    - Dst: auto::getHandle
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:230,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 2
    argNames:
    - ' mapPath'
    - isV6
    argTypes:
    - std::string
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 234
      start: 215
    functionDepth: 1
    functionLinenumber: 215
    functionLinenumberEnd: 234
    functionName: XskSocket::clearDestinationMap
    functionSourceFile: /src/pdns/pdns/dnsdistdist/xsk.cc
    functionUses: 2
    functionsReached:
    - bpf_map_get_next_key
    - getDestinationMap
    - bpf_map_delete_elem
    - auto::getHandle
    linkageType: ''
    returnType: void
    signature: void XskSocket::clearDestinationMap(const std::string& mapPath, bool
      isV6)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: getDestinationMap
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:238,1
    - Dst: isIPv4
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:240,1
    - Dst: bpf_map_update_elem
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:244,1
    - Dst: auto::getHandle
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:244,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:246,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:246,1
    - Dst: bpf_map_update_elem
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:253,1
    - Dst: auto::getHandle
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:253,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:255,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:255,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 2
    argNames:
    - ' mapPath'
    - ' destination'
    argTypes:
    - std::string
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 258
      start: 236
    functionDepth: 1
    functionLinenumber: 236
    functionLinenumberEnd: 258
    functionName: XskSocket::addDestinationAddress
    functionSourceFile: /src/pdns/pdns/dnsdistdist/xsk.cc
    functionUses: 2
    functionsReached:
    - std::to_string
    - auto::getHandle
    - std::runtime_error
    - bpf_map_update_elem
    - isIPv4
    - getDestinationMap
    linkageType: ''
    returnType: void
    signature: void XskSocket::addDestinationAddress(const std::string& mapPath, const
      ComboAddress& destination)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: getDestinationMap
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:262,1
    - Dst: isIPv4
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:263,1
    - Dst: bpf_map_delete_elem
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:267,1
    - Dst: auto::getHandle
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:267,1
    - Dst: bpf_map_delete_elem
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:273,1
    - Dst: auto::getHandle
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:273,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - ' mapPath'
    - ' destination'
    argTypes:
    - std::string
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 275
      start: 260
    functionDepth: 1
    functionLinenumber: 260
    functionLinenumberEnd: 275
    functionName: XskSocket::removeDestinationAddress
    functionSourceFile: /src/pdns/pdns/dnsdistdist/xsk.cc
    functionUses: 2
    functionsReached:
    - isIPv4
    - getDestinationMap
    - bpf_map_delete_elem
    - auto::getHandle
    linkageType: ''
    returnType: void
    signature: void XskSocket::removeDestinationAddress(const std::string& mapPath,
      const ComboAddress& destination)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:279,1
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:280,1
    - Dst: std::min
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:281,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:281,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:281,1
    - Dst: insert
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:284,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:284,1
    - Dst: std::make_move_iterator
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:284,1
    - Dst: auto::end
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:284,1
    - Dst: std::make_move_iterator
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:284,1
    - Dst: auto::end
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:284,1
    - Dst: auto::resize
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:285,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:285,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:288,1
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:292,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:293,1
    - Dst: std::min
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:294,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:294,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:294,1
    - Dst: auto::insert
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:297,1
    - Dst: auto::end
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:297,1
    - Dst: std::make_move_iterator
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:297,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:297,1
    - Dst: std::make_move_iterator
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:297,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:297,1
    - Dst: resize
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:298,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:298,1
    - Dst: std::min
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:303,1
    - Dst: static_cast<uint32_t>
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:303,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:303,1
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:305,1
    - Dst: xsk_ring_prod__reserve
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:310,1
    - Dst: xsk_ring_prod__fill_addr
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:316,1
    - Dst: back
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:316,1
    - Dst: checkUmemIntegrity
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:318,1
    - Dst: back
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:318,1
    - Dst: pop_back
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:320,1
    - Dst: xsk_ring_prod__submit
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:323,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 28
    argCount: 1
    argNames:
    - fillSize
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 324
      start: 277
    functionDepth: 1
    functionLinenumber: 277
    functionLinenumberEnd: 324
    functionName: XskSocket::fillFq
    functionSourceFile: /src/pdns/pdns/dnsdistdist/xsk.cc
    functionUses: 1
    functionsReached:
    - static_cast<uint32_t>
    - std::make_move_iterator
    - insert
    - pop_back
    - xsk_ring_prod__submit
    - xsk_ring_prod__reserve
    - auto::size
    - static_cast<size_t>
    - resize
    - size
    - lock
    - back
    - xsk_ring_prod__fill_addr
    - auto::insert
    - std::min
    - checkUmemIntegrity
    - end
    - auto::resize
    - auto::end
    linkageType: ''
    returnType: void
    signature: void XskSocket::fillFq(uint32_t fillSize) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::min
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:328,1
    - Dst: XskSocket::firstTimeout
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:328,1
    - Dst: poll
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:329,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:329,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:329,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - timeout
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 330
      start: 326
    functionDepth: 2
    functionLinenumber: 326
    functionLinenumberEnd: 330
    functionName: XskSocket::wait
    functionSourceFile: /src/pdns/pdns/dnsdistdist/xsk.cc
    functionUses: 0
    functionsReached:
    - std::min
    - size
    - poll
    - data
    - XskSocket::firstTimeout
    linkageType: ''
    returnType: int
    signature: int XskSocket::wait(int timeout)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getFrameOffsetFrom
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:334,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' packet'
    argTypes:
    - XskPacket
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 335
      start: 332
    functionDepth: 0
    functionLinenumber: 332
    functionLinenumberEnd: 335
    functionName: XskSocket::frameOffset
    functionSourceFile: /src/pdns/pdns/dnsdistdist/xsk.cc
    functionUses: 0
    functionsReached:
    - getFrameOffsetFrom
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t XskSocket::frameOffset(const XskPacket& packet) const noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: xsk_socket__fd
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:339,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:339,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 340
      start: 337
    functionDepth: 0
    functionLinenumber: 337
    functionLinenumberEnd: 340
    functionName: XskSocket::xskFd
    functionSourceFile: /src/pdns/pdns/dnsdistdist/xsk.cc
    functionUses: 1
    functionsReached:
    - xsk_socket__fd
    - get
    linkageType: ''
    returnType: int
    signature: int XskSocket::xskFd() const noexcept
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:344,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:345,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:346,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:347,1
    - Dst: std::min
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:349,1
    - Dst: static_cast<uint32_t>
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:349,1
    - Dst: xsk_ring_prod__reserve
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:351,1
    - Dst: xsk_ring_prod__tx_desc
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:361,1
    - Dst: XskSocket::frameOffset
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:362,1
    - Dst: getFrameLen
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:363,1
    - Dst: checkUmemIntegrity
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:366,1
    - Dst: XskSocket::frameOffset
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:366,1
    - Dst: xsk_ring_prod__submit
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:370,1
    - Dst: erase
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:371,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:371,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:371,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 1
    argNames:
    - ' packets'
    argTypes:
    - std::vector<XskPacket>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 373
      start: 342
    functionDepth: 1
    functionLinenumber: 342
    functionLinenumberEnd: 373
    functionName: XskSocket::send
    functionSourceFile: /src/pdns/pdns/dnsdistdist/xsk.cc
    functionUses: 0
    functionsReached:
    - pdns::max
    - getFrameLen
    - XskSocket::frameOffset
    - std::min
    - xsk_ring_prod__tx_desc
    - checkUmemIntegrity
    - size
    - static_cast<uint32_t>
    - begin
    - empty
    - xsk_ring_prod__submit
    - xsk_ring_prod__reserve
    - erase
    linkageType: ''
    returnType: void
    signature: void XskSocket::send(std::vector<XskPacket>& packets)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: clear
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:377,1
    - Dst: xsk_ring_cons__peek
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:380,1
    - Dst: reinterpret_cast<uint64_t>
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:386,1
    - Dst: reserve
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:389,1
    - Dst: xsk_ring_cons__rx_desc
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:392,1
    - Dst: XskPacket
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:394,1
    - Dst: reinterpret_cast<uint8_t*>
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:394,1
    - Dst: checkUmemIntegrity
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:396,1
    - Dst: XskSocket::frameOffset
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:396,1
    - Dst: auto::parse
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:399,1
    - Dst: XskSocket::markAsFree
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:401,1
    - Dst: push_back
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:404,1
    - Dst: xsk_ring_cons__release
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:422,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 29
    argCount: 3
    argNames:
    - ' packets'
    - recvSizeMax
    - failedCount
    argTypes:
    - std::vector<XskPacket>
    - uint32_t
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 426
      start: 375
    functionDepth: 1
    functionLinenumber: 375
    functionLinenumberEnd: 426
    functionName: XskSocket::recv
    functionSourceFile: /src/pdns/pdns/dnsdistdist/xsk.cc
    functionUses: 4
    functionsReached:
    - xsk_ring_cons__rx_desc
    - xsk_ring_cons__peek
    - reinterpret_cast<uint64_t>
    - XskSocket::markAsFree
    - XskSocket::frameOffset
    - checkUmemIntegrity
    - push_back
    - reinterpret_cast<uint8_t*>
    - reserve
    - XskPacket
    - xsk_ring_cons__release
    - auto::parse
    - clear
    linkageType: ''
    returnType: void
    signature: void XskSocket::recv(std::vector<XskPacket>& packets, uint32_t recvSizeMax,
      uint32_t* failedCount)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: gettime
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:431,1
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:432,1
    - Dst: XskSocket::timeDifference
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:432,1
    - Dst: top
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:432,1
    - Dst: const_cast<XskPacket&>
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:434,1
    - Dst: top
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:434,1
    - Dst: push_back
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:435,1
    - Dst: pop
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:436,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - ' packets'
    argTypes:
    - std::vector<XskPacket>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 438
      start: 428
    functionDepth: 1
    functionLinenumber: 428
    functionLinenumberEnd: 438
    functionName: XskSocket::pickUpReadyPacket
    functionSourceFile: /src/pdns/pdns/dnsdistdist/xsk.cc
    functionUses: 0
    functionsReached:
    - push_back
    - const_cast<XskPacket&>
    - top
    - XskSocket::timeDifference
    - gettime
    - empty
    - pop
    linkageType: ''
    returnType: void
    signature: void XskSocket::pickUpReadyPacket(std::vector<XskPacket>& packets)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: xsk_ring_cons__peek
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:443,1
    - Dst: reserve
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:447,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:447,1
    - Dst: push_back
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:450,1
    - Dst: xsk_ring_cons__comp_addr
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:450,1
    - Dst: checkUmemIntegrity
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:452,1
    - Dst: back
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:452,1
    - Dst: xsk_ring_cons__release
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:455,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - size
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 456
      start: 440
    functionDepth: 1
    functionLinenumber: 440
    functionLinenumberEnd: 456
    functionName: XskSocket::recycle
    functionSourceFile: /src/pdns/pdns/dnsdistdist/xsk.cc
    functionUses: 0
    functionsReached:
    - xsk_ring_cons__peek
    - xsk_ring_cons__comp_addr
    - push_back
    - checkUmemIntegrity
    - size
    - back
    - reserve
    - xsk_ring_cons__release
    linkageType: ''
    returnType: void
    signature: void XskSocket::recycle(size_t size) noexcept
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<uint8_t*>
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:461,1
    - Dst: mmap
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:461,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:463,1
    - Dst: xsk_umem__create
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:465,1
    - Dst: munmap
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:467,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:468,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:468,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:468,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 4
    argNames:
    - memSize
    - completionQueue
    - fillQueue
    - config
    argTypes:
    - size_t
    - xsk_ring_cons*
    - xsk_ring_prod*
    - xsk_umem_config*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 470
      start: 458
    functionDepth: 0
    functionLinenumber: 458
    functionLinenumberEnd: 470
    functionName: XskSocket::XskUmem::umemInit(size_t memSize, xsk_ring_cons* completionQueue,
      xsk_ring_prod* fillQueue, xsk_umem_config* config)
    functionSourceFile: /src/pdns/pdns/dnsdistdist/xsk.cc
    functionUses: 0
    functionsReached:
    - std::to_string
    - std::runtime_error
    - stringerror
    - mmap
    - munmap
    - xsk_umem__create
    - static_cast<uint8_t*>
    linkageType: ''
    returnType: void
    signature: void XskSocket::XskUmem::umemInit(size_t memSize, xsk_ring_cons* completionQueue,
      xsk_ring_prod* fillQueue, xsk_umem_config* config)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: getsockopt
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:476,1
    - Dst: XskSocket::xskFd
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:476,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:485,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:486,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:487,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:488,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:489,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:490,1
    - Dst: ostringstream::str
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:491,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 492
      start: 472
    functionDepth: 1
    functionLinenumber: 472
    functionLinenumberEnd: 492
    functionName: XskSocket::getMetrics
    functionSourceFile: /src/pdns/pdns/dnsdistdist/xsk.cc
    functionUses: 0
    functionsReached:
    - XskSocket::xskFd
    - getsockopt
    - ostringstream::str
    - std::to_string
    linkageType: ''
    returnType: std::string
    signature: std::string XskSocket::getMetrics() const
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: if_nametoindex
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:497,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:497,1
    - Dst: bpf_xdp_query
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:503,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:503,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 519
      start: 494
    functionDepth: 0
    functionLinenumber: 494
    functionLinenumberEnd: 519
    functionName: XskSocket::getXDPMode
    functionSourceFile: /src/pdns/pdns/dnsdistdist/xsk.cc
    functionUses: 0
    functionsReached:
    - if_nametoindex
    - static_cast<int>
    - c_str
    - bpf_xdp_query
    linkageType: ''
    returnType: std::string
    signature: std::string XskSocket::getXDPMode() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XskSocket::frameOffset
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:523,1
    - Dst: checkUmemIntegrity
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:525,1
    - Dst: push_back
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:527,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ' packet'
    argTypes:
    - XskPacket
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 528
      start: 521
    functionDepth: 1
    functionLinenumber: 521
    functionLinenumberEnd: 528
    functionName: XskSocket::markAsFree
    functionSourceFile: /src/pdns/pdns/dnsdistdist/xsk.cc
    functionUses: 1
    functionsReached:
    - XskSocket::frameOffset
    - checkUmemIntegrity
    - push_back
    linkageType: ''
    returnType: void
    signature: void XskSocket::markAsFree(const XskPacket& packet)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: xsk_umem__delete
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:533,1
    - Dst: munmap
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:536,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 538
      start: 530
    functionDepth: 0
    functionLinenumber: 530
    functionLinenumberEnd: 538
    functionName: XskSocket::XskUmem::~XskUmem()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/xsk.cc
    functionUses: 0
    functionsReached:
    - xsk_umem__delete
    - munmap
    linkageType: ''
    returnType: void
    signature: void XskSocket::XskUmem::~XskUmem()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 543
      start: 540
    functionDepth: 0
    functionLinenumber: 540
    functionLinenumberEnd: 543
    functionName: XskPacket::getL4HeaderOffset
    functionSourceFile: /src/pdns/pdns/dnsdistdist/xsk.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: size_t XskPacket::getL4HeaderOffset() const noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XskPacket::getL4HeaderOffset
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:547,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 548
      start: 545
    functionDepth: 1
    functionLinenumber: 545
    functionLinenumberEnd: 548
    functionName: XskPacket::getDataOffset
    functionSourceFile: /src/pdns/pdns/dnsdistdist/xsk.cc
    functionUses: 0
    functionsReached:
    - XskPacket::getL4HeaderOffset
    linkageType: ''
    returnType: size_t
    signature: size_t XskPacket::getDataOffset() const noexcept
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XskPacket::getDataOffset
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:552,1
    - Dst: XskPacket::getDataOffset
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:556,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 557
      start: 550
    functionDepth: 2
    functionLinenumber: 550
    functionLinenumberEnd: 557
    functionName: XskPacket::getDataSize
    functionSourceFile: /src/pdns/pdns/dnsdistdist/xsk.cc
    functionUses: 0
    functionsReached:
    - XskPacket::getDataOffset
    linkageType: ''
    returnType: size_t
    signature: size_t XskPacket::getDataSize() const noexcept
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:563,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 566
      start: 559
    functionDepth: 0
    functionLinenumber: 559
    functionLinenumberEnd: 566
    functionName: XskPacket::getEthernetHeader
    functionSourceFile: /src/pdns/pdns/dnsdistdist/xsk.cc
    functionUses: 0
    functionsReached:
    - memcpy
    linkageType: ''
    returnType: ethhdr
    signature: ethhdr XskPacket::getEthernetHeader() const noexcept
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:573,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ' ethHeader'
    argTypes:
    - ethhdr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 574
      start: 568
    functionDepth: 0
    functionLinenumber: 568
    functionLinenumberEnd: 574
    functionName: XskPacket::setEthernetHeader
    functionSourceFile: /src/pdns/pdns/dnsdistdist/xsk.cc
    functionUses: 0
    functionsReached:
    - memcpy
    linkageType: ''
    returnType: void
    signature: void XskPacket::setEthernetHeader(const ethhdr& ethHeader) noexcept
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:578,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:583,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (!v6)
      pos:
        line_end: 577
        line_start: 577
        source_file: /src/pdns/pdns/dnsdistdist/xsk.cc
    constantsTouched: []
    func_position:
      end: 586
      start: 576
    functionDepth: 0
    functionLinenumber: 576
    functionLinenumberEnd: 586
    functionName: XskPacket::getIPv4Header
    functionSourceFile: /src/pdns/pdns/dnsdistdist/xsk.cc
    functionUses: 0
    functionsReached:
    - memcpy
    - assert
    linkageType: ''
    returnType: iphdr
    signature: iphdr XskPacket::getIPv4Header() const noexcept
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:590,1
    - Dst: assert
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:592,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:597,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - ' ipv4Header'
    argTypes:
    - iphdr
    assertStmts:
    - condition: (!v6)
      pos:
        line_end: 589
        line_start: 589
        source_file: /src/pdns/pdns/dnsdistdist/xsk.cc
    - condition: (frameSize >= neededRoom)
      pos:
        line_end: 591
        line_start: 591
        source_file: /src/pdns/pdns/dnsdistdist/xsk.cc
    constantsTouched: []
    func_position:
      end: 598
      start: 588
    functionDepth: 0
    functionLinenumber: 588
    functionLinenumberEnd: 598
    functionName: XskPacket::setIPv4Header
    functionSourceFile: /src/pdns/pdns/dnsdistdist/xsk.cc
    functionUses: 0
    functionsReached:
    - memcpy
    - assert
    linkageType: ''
    returnType: void
    signature: void XskPacket::setIPv4Header(const iphdr& ipv4Header) noexcept
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:602,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:607,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (v6)
      pos:
        line_end: 601
        line_start: 601
        source_file: /src/pdns/pdns/dnsdistdist/xsk.cc
    constantsTouched: []
    func_position:
      end: 610
      start: 600
    functionDepth: 0
    functionLinenumber: 600
    functionLinenumberEnd: 610
    functionName: XskPacket::getIPv6Header
    functionSourceFile: /src/pdns/pdns/dnsdistdist/xsk.cc
    functionUses: 0
    functionsReached:
    - memcpy
    - assert
    linkageType: ''
    returnType: ipv6hdr
    signature: ipv6hdr XskPacket::getIPv6Header() const noexcept
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:614,1
    - Dst: assert
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:616,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:621,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - ' ipv6Header'
    argTypes:
    - ipv6hdr
    assertStmts:
    - condition: (v6)
      pos:
        line_end: 613
        line_start: 613
        source_file: /src/pdns/pdns/dnsdistdist/xsk.cc
    - condition: (frameSize >= neededRoom)
      pos:
        line_end: 615
        line_start: 615
        source_file: /src/pdns/pdns/dnsdistdist/xsk.cc
    constantsTouched: []
    func_position:
      end: 622
      start: 612
    functionDepth: 0
    functionLinenumber: 612
    functionLinenumberEnd: 622
    functionName: XskPacket::setIPv6Header
    functionSourceFile: /src/pdns/pdns/dnsdistdist/xsk.cc
    functionUses: 0
    functionsReached:
    - memcpy
    - assert
    linkageType: ''
    returnType: void
    signature: void XskPacket::setIPv6Header(const ipv6hdr& ipv6Header) noexcept
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XskPacket::getL4HeaderOffset
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:627,1
    - Dst: assert
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:628,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:631,1
    - Dst: XskPacket::getL4HeaderOffset
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:631,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (frameSize >= neededRoom)
      pos:
        line_end: 627
        line_start: 627
        source_file: /src/pdns/pdns/dnsdistdist/xsk.cc
    constantsTouched: []
    func_position:
      end: 634
      start: 624
    functionDepth: 1
    functionLinenumber: 624
    functionLinenumberEnd: 634
    functionName: XskPacket::getUDPHeader
    functionSourceFile: /src/pdns/pdns/dnsdistdist/xsk.cc
    functionUses: 0
    functionsReached:
    - memcpy
    - XskPacket::getL4HeaderOffset
    - assert
    linkageType: ''
    returnType: udphdr
    signature: udphdr XskPacket::getUDPHeader() const noexcept
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XskPacket::getL4HeaderOffset
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:638,1
    - Dst: assert
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:639,1
    - Dst: XskPacket::getL4HeaderOffset
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:641,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:644,1
    - Dst: XskPacket::getL4HeaderOffset
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:644,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - ' udpHeader'
    argTypes:
    - udphdr
    assertStmts:
    - condition: (frameSize >= neededRoom)
      pos:
        line_end: 638
        line_start: 638
        source_file: /src/pdns/pdns/dnsdistdist/xsk.cc
    constantsTouched: []
    func_position:
      end: 645
      start: 636
    functionDepth: 1
    functionLinenumber: 636
    functionLinenumberEnd: 645
    functionName: XskPacket::setUDPHeader
    functionSourceFile: /src/pdns/pdns/dnsdistdist/xsk.cc
    functionUses: 0
    functionsReached:
    - memcpy
    - XskPacket::getL4HeaderOffset
    - assert
    linkageType: ''
    returnType: void
    signature: void XskPacket::setUDPHeader(const udphdr& udpHeader) noexcept
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: XskPacket::getEthernetHeader
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:653,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:655,1
    - Dst: XskPacket::getIPv4Header
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:660,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:661,1
    - Dst: makeComboAddressFromRaw
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:669,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:669,1
    - Dst: makeComboAddressFromRaw
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:671,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:671,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:673,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:678,1
    - Dst: XskPacket::getIPv6Header
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:683,1
    - Dst: makeComboAddressFromRaw
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:685,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:685,1
    - Dst: makeComboAddressFromRaw
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:687,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:687,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:689,1
    - Dst: XskPacket::getUDPHeader
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:704,1
    - Dst: XskPacket::getDataOffset
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:707,1
    - Dst: XskPacket::getDataSize
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:711,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:711,1
    - Dst: setPort
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:716,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:716,1
    - Dst: setPort
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:717,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:717,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 47
    argCount: 1
    argNames:
    - fromSetHeader
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 719
      start: 647
    functionDepth: 3
    functionLinenumber: 647
    functionLinenumberEnd: 719
    functionName: XskPacket::parse
    functionSourceFile: /src/pdns/pdns/dnsdistdist/xsk.cc
    functionUses: 0
    functionsReached:
    - XskPacket::getIPv6Header
    - setPort
    - XskPacket::getDataSize
    - ntohs
    - XskPacket::getIPv4Header
    - static_cast<uint8_t>
    - makeComboAddressFromRaw
    - reinterpret_cast<const char*>
    - XskPacket::getDataOffset
    - XskPacket::getEthernetHeader
    - XskPacket::getUDPHeader
    - htons
    linkageType: ''
    returnType: bool
    signature: bool XskPacket::parse(bool fromSetHeader)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XskPacket::getDataSize
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:723,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 724
      start: 721
    functionDepth: 3
    functionLinenumber: 721
    functionLinenumberEnd: 724
    functionName: XskPacket::getDataLen
    functionSourceFile: /src/pdns/pdns/dnsdistdist/xsk.cc
    functionUses: 0
    functionsReached:
    - XskPacket::getDataSize
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t XskPacket::getDataLen() const noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 729
      start: 726
    functionDepth: 0
    functionLinenumber: 726
    functionLinenumberEnd: 729
    functionName: XskPacket::getFrameLen
    functionSourceFile: /src/pdns/pdns/dnsdistdist/xsk.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t XskPacket::getFrameLen() const noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XskPacket::getDataOffset
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:733,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 734
      start: 731
    functionDepth: 2
    functionLinenumber: 731
    functionLinenumberEnd: 734
    functionName: XskPacket::getCapacity
    functionSourceFile: /src/pdns/pdns/dnsdistdist/xsk.cc
    functionUses: 0
    functionsReached:
    - XskPacket::getDataOffset
    linkageType: ''
    returnType: size_t
    signature: size_t XskPacket::getCapacity() const noexcept
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: XskPacket::getEthernetHeader
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:738,1
    - Dst: std::array::size
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:741,1
    - Dst: std::array::size
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:742,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:744,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:744,1
    - Dst: std::array::size
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:744,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:746,1
    - Dst: std::array::size
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:746,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:748,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:748,1
    - Dst: std::array::size
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:748,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:750,1
    - Dst: XskPacket::getIPv6Header
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:752,1
    - Dst: std::swap
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:753,1
    - Dst: XskPacket::getUDPHeader
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:756,1
    - Dst: std::swap
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:757,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:758,1
    - Dst: XskPacket::getDataSize
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:758,1
    - Dst: XskPacket::setIPv6Header
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:761,1
    - Dst: XskPacket::setUDPHeader
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:762,1
    - Dst: XskPacket::rewriteIpv6Header
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:766,1
    - Dst: XskPacket::getFrameLen
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:766,1
    - Dst: XskPacket::setIPv6Header
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:767,1
    - Dst: XskPacket::setUDPHeader
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:768,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:770,1
    - Dst: XskPacket::getIPv4Header
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:772,1
    - Dst: std::swap
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:773,1
    - Dst: XskPacket::getUDPHeader
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:776,1
    - Dst: std::swap
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:777,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:778,1
    - Dst: XskPacket::getDataSize
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:778,1
    - Dst: XskPacket::setIPv4Header
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:781,1
    - Dst: XskPacket::setUDPHeader
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:782,1
    - Dst: XskPacket::rewriteIpv4Header
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:786,1
    - Dst: XskPacket::getFrameLen
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:786,1
    - Dst: XskPacket::setIPv4Header
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:787,1
    - Dst: XskPacket::setUDPHeader
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:788,1
    - Dst: XskPacket::setEthernetHeader
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:791,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 31
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 793
      start: 736
    functionDepth: 3
    functionLinenumber: 736
    functionLinenumberEnd: 793
    functionName: XskPacket::changeDirectAndUpdateChecksum
    functionSourceFile: /src/pdns/pdns/dnsdistdist/xsk.cc
    functionUses: 0
    functionsReached:
    - XskPacket::setIPv6Header
    - memcpy
    - XskPacket::getIPv6Header
    - std::swap
    - XskPacket::getDataSize
    - XskPacket::setUDPHeader
    - XskPacket::setEthernetHeader
    - XskPacket::getIPv4Header
    - XskPacket::rewriteIpv6Header
    - XskPacket::rewriteIpv4Header
    - XskPacket::getEthernetHeader
    - XskPacket::getFrameLen
    - XskPacket::setIPv4Header
    - std::array::data
    - XskPacket::getUDPHeader
    - std::array::size
    - htons
    linkageType: ''
    returnType: void
    signature: void XskPacket::changeDirectAndUpdateChecksum() noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: htons
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:800,1
    - Dst: XskPacket::ipv4Checksum
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:805,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 2
    argNames:
    - ipv4header
    - frameLen
    argTypes:
    - struct iphdr*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 806
      start: 795
    functionDepth: 1
    functionLinenumber: 795
    functionLinenumberEnd: 806
    functionName: XskPacket::rewriteIpv4Header
    functionSourceFile: /src/pdns/pdns/dnsdistdist/xsk.cc
    functionUses: 1
    functionsReached:
    - XskPacket::ipv4Checksum
    - htons
    linkageType: ''
    returnType: void
    signature: void XskPacket::rewriteIpv4Header(struct iphdr* ipv4header, size_t
      frameLen) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: htons
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:812,1
    - Dst: memset
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:814,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - ipv6header
    - frameLen
    argTypes:
    - struct ipv6hdr*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 815
      start: 808
    functionDepth: 0
    functionLinenumber: 808
    functionLinenumberEnd: 815
    functionName: XskPacket::rewriteIpv6Header
    functionSourceFile: /src/pdns/pdns/dnsdistdist/xsk.cc
    functionUses: 1
    functionsReached:
    - memset
    - htons
    linkageType: ''
    returnType: void
    signature: void XskPacket::rewriteIpv6Header(struct ipv6hdr* ipv6header, size_t
      frameLen) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 820
      start: 817
    functionDepth: 0
    functionLinenumber: 817
    functionLinenumberEnd: 820
    functionName: XskPacket::isIPV6
    functionSourceFile: /src/pdns/pdns/dnsdistdist/xsk.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool XskPacket::isIPV6() const noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 3
    argNames:
    - frame_
    - dataSize
    - frameSize_
    argTypes:
    - uint8_t*
    - size_t
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 825
      start: 822
    functionDepth: 0
    functionLinenumber: 822
    functionLinenumberEnd: 825
    functionName: XskPacket::XskPacket
    functionSourceFile: /src/pdns/pdns/dnsdistdist/xsk.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void XskPacket::XskPacket(uint8_t* frame_, size_t dataSize, size_t
      frameSize_) noexcept
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XskPacket::getDataSize
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:829,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:833,1
    - Dst: PacketBuffer::data
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:833,1
    - Dst: XskPacket::getDataOffset
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:833,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 836
      start: 827
    functionDepth: 3
    functionLinenumber: 827
    functionLinenumberEnd: 836
    functionName: XskPacket::clonePacketBuffer
    functionSourceFile: /src/pdns/pdns/dnsdistdist/xsk.cc
    functionUses: 0
    functionsReached:
    - PacketBuffer::data
    - memcpy
    - XskPacket::getDataSize
    - XskPacket::getDataOffset
    linkageType: ''
    returnType: PacketBuffer
    signature: PacketBuffer XskPacket::clonePacketBuffer() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:840,1
    - Dst: XskPacket::getCapacity
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:841,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:847,1
    - Dst: XskPacket::getDataOffset
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:847,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:847,1
    - Dst: XskPacket::getDataOffset
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:849,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - ' buf'
    argTypes:
    - PacketBuffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 851
      start: 838
    functionDepth: 3
    functionLinenumber: 838
    functionLinenumberEnd: 851
    functionName: XskPacket::setPayload
    functionSourceFile: /src/pdns/pdns/dnsdistdist/xsk.cc
    functionUses: 0
    functionsReached:
    - memcpy
    - size
    - XskPacket::getDataOffset
    - data
    - XskPacket::getCapacity
    linkageType: ''
    returnType: bool
    signature: bool XskPacket::setPayload(const PacketBuffer& buf)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: gettime
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:855,1
    - Dst: static_cast<int64_t>
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:856,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - relativeMilliseconds
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 860
      start: 853
    functionDepth: 0
    functionLinenumber: 853
    functionLinenumberEnd: 860
    functionName: XskPacket::addDelay
    functionSourceFile: /src/pdns/pdns/dnsdistdist/xsk.cc
    functionUses: 0
    functionsReached:
    - static_cast<int64_t>
    - gettime
    linkageType: ''
    returnType: void
    signature: void XskPacket::addDelay(const int relativeMilliseconds) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getSendTime
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:864,1
    - Dst: getSendTime
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:864,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' lhs'
    - ' rhs'
    argTypes:
    - XskPacket
    - XskPacket
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 865
      start: 862
    functionDepth: 0
    functionLinenumber: 862
    functionLinenumberEnd: 865
    functionName: operator<(const XskPacket& lhs, const XskPacket& rhs) noexcept
    functionSourceFile: /src/pdns/pdns/dnsdistdist/xsk.cc
    functionUses: 0
    functionsReached:
    - getSendTime
    linkageType: ''
    returnType: bool
    signature: bool operator<(const XskPacket& lhs, const XskPacket& rhs) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 870
      start: 867
    functionDepth: 0
    functionLinenumber: 867
    functionLinenumberEnd: 870
    functionName: '& XskPacket::getFromAddr() const noexcept'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/xsk.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: ComboAddress
    signature: ComboAddress & XskPacket::getFromAddr() const noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 875
      start: 872
    functionDepth: 0
    functionLinenumber: 872
    functionLinenumberEnd: 875
    functionName: '& XskPacket::getToAddr() const noexcept'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/xsk.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: ComboAddress
    signature: ComboAddress & XskPacket::getToAddr() const noexcept
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: write
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:882,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:886,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 7
    argCount: 1
    argNames:
    - desc
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 888
      start: 877
    functionDepth: 0
    functionLinenumber: 877
    functionLinenumberEnd: 888
    functionName: XskWorker::notify
    functionSourceFile: /src/pdns/pdns/dnsdistdist/xsk.cc
    functionUses: 0
    functionsReached:
    - write
    - runtime_error
    linkageType: ''
    returnType: void
    signature: void XskWorker::notify(int desc)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XskWorker::createEventfd
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:891,1
    - Dst: XskWorker::createEventfd
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:891,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - type
    - ' frames'
    argTypes:
    - XskWorker::Type
    - std::shared_ptr<LockGuarded<std::vector<uint64_t>>>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 893
      start: 890
    functionDepth: 1
    functionLinenumber: 890
    functionLinenumberEnd: 893
    functionName: XskWorker::XskWorker
    functionSourceFile: /src/pdns/pdns/dnsdistdist/xsk.cc
    functionUses: 0
    functionsReached:
    - XskWorker::createEventfd
    linkageType: ''
    returnType: void
    signature: void XskWorker::XskWorker(XskWorker::Type type, const std::shared_ptr<LockGuarded<std::vector<uint64_t>>>&
      frames)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:898,1
    - Dst: push
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:900,1
    - Dst: XskWorker::markAsFree
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:901,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 1
    argNames:
    - ' packet'
    argTypes:
    - XskPacket
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 903
      start: 895
    functionDepth: 1
    functionLinenumber: 895
    functionLinenumberEnd: 903
    functionName: XskWorker::pushToProcessingQueue
    functionSourceFile: /src/pdns/pdns/dnsdistdist/xsk.cc
    functionUses: 0
    functionsReached:
    - XskWorker::markAsFree
    - push
    - std::runtime_error
    linkageType: ''
    returnType: void
    signature: void XskWorker::pushToProcessingQueue(XskPacket& packet)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: push
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:907,1
    - Dst: XskWorker::markAsFree
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:908,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ' packet'
    argTypes:
    - XskPacket
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 910
      start: 905
    functionDepth: 1
    functionLinenumber: 905
    functionLinenumberEnd: 910
    functionName: XskWorker::pushToSendQueue
    functionSourceFile: /src/pdns/pdns/dnsdistdist/xsk.cc
    functionUses: 0
    functionsReached:
    - XskWorker::markAsFree
    - push
    linkageType: ''
    returnType: void
    signature: void XskWorker::pushToSendQueue(XskPacket& packet)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XskPacket::getDataOffset
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:915,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 916
      start: 912
    functionDepth: 2
    functionLinenumber: 912
    functionLinenumberEnd: 916
    functionName: XskPacket::getPayloadData
    functionSourceFile: /src/pdns/pdns/dnsdistdist/xsk.cc
    functionUses: 0
    functionsReached:
    - XskPacket::getDataOffset
    linkageType: ''
    returnType: void
    signature: void * XskPacket::getPayloadData() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XskPacket::getEthernetHeader
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:920,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:922,1
    - Dst: MACAddr::data
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:922,1
    - Dst: MACAddr::size
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:922,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:924,1
    - Dst: MACAddr::data
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:924,1
    - Dst: MACAddr::size
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:924,1
    - Dst: XskPacket::setEthernetHeader
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:925,1
    - Dst: isIPv4
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:928,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 4
    argNames:
    - ' from_'
    - fromMAC
    - ' to_'
    - toMAC
    argTypes:
    - ComboAddress
    - MACAddr
    - ComboAddress
    - MACAddr
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 930
      start: 918
    functionDepth: 1
    functionLinenumber: 918
    functionLinenumberEnd: 930
    functionName: XskPacket::setAddr
    functionSourceFile: /src/pdns/pdns/dnsdistdist/xsk.cc
    functionUses: 0
    functionsReached:
    - memcpy
    - XskPacket::setEthernetHeader
    - MACAddr::data
    - isIPv4
    - XskPacket::getEthernetHeader
    - MACAddr::size
    linkageType: ''
    returnType: void
    signature: void XskPacket::setAddr(const ComboAddress& from_, MACAddr fromMAC,
      const ComboAddress& to_, MACAddr toMAC) noexcept
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XskPacket::getEthernetHeader
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:934,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:936,1
    - Dst: XskPacket::getIPv4Header
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:938,1
    - Dst: XskPacket::getUDPHeader
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:943,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:946,1
    - Dst: XskPacket::getDataSize
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:946,1
    - Dst: XskPacket::setIPv4Header
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:949,1
    - Dst: XskPacket::setUDPHeader
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:950,1
    - Dst: XskPacket::rewriteIpv4Header
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:954,1
    - Dst: XskPacket::getFrameLen
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:954,1
    - Dst: XskPacket::setIPv4Header
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:955,1
    - Dst: XskPacket::setUDPHeader
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:956,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:959,1
    - Dst: XskPacket::getIPv6Header
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:961,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:962,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:963,1
    - Dst: XskPacket::getUDPHeader
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:966,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:969,1
    - Dst: XskPacket::getDataSize
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:969,1
    - Dst: XskPacket::setIPv6Header
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:972,1
    - Dst: XskPacket::setUDPHeader
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:973,1
    - Dst: XskPacket::rewriteIpv6Header
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:977,1
    - Dst: XskPacket::getFrameLen
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:977,1
    - Dst: XskPacket::setIPv6Header
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:978,1
    - Dst: XskPacket::setUDPHeader
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:979,1
    - Dst: XskPacket::setEthernetHeader
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:982,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 32
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 984
      start: 932
    functionDepth: 3
    functionLinenumber: 932
    functionLinenumberEnd: 984
    functionName: XskPacket::rewrite
    functionSourceFile: /src/pdns/pdns/dnsdistdist/xsk.cc
    functionUses: 0
    functionsReached:
    - XskPacket::setIPv6Header
    - memcpy
    - XskPacket::getIPv6Header
    - XskPacket::setUDPHeader
    - XskPacket::getDataSize
    - XskPacket::setEthernetHeader
    - XskPacket::getIPv4Header
    - XskPacket::rewriteIpv6Header
    - XskPacket::rewriteIpv4Header
    - XskPacket::getFrameLen
    - XskPacket::setIPv4Header
    - XskPacket::getEthernetHeader
    - XskPacket::getUDPHeader
    - htons
    linkageType: ''
    returnType: void
    signature: void XskPacket::rewrite() noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XskPacket::ip_checksum_partial
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:988,1
    - Dst: XskPacket::ip_checksum_fold
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:989,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ipHeader
    argTypes:
    - struct iphdr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 990
      start: 986
    functionDepth: 1
    functionLinenumber: 986
    functionLinenumberEnd: 990
    functionName: XskPacket::ipv4Checksum
    functionSourceFile: /src/pdns/pdns/dnsdistdist/xsk.cc
    functionUses: 1
    functionsReached:
    - XskPacket::ip_checksum_fold
    - XskPacket::ip_checksum_partial
    linkageType: ''
    returnType: __be16
    signature: __be16 XskPacket::ipv4Checksum(const struct iphdr* ipHeader) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<uint16_t>
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:995,1
    - Dst: XskPacket::getDataSize
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:995,1
    - Dst: XskPacket::tcp_udp_v4_header_checksum_partial
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:996,1
    - Dst: XskPacket::ip_checksum_partial
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:998,1
    - Dst: XskPacket::getL4HeaderOffset
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:998,1
    - Dst: XskPacket::ip_checksum_fold
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:999,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ipHeader
    argTypes:
    - struct iphdr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1000
      start: 992
    functionDepth: 3
    functionLinenumber: 992
    functionLinenumberEnd: 1000
    functionName: XskPacket::tcp_udp_v4_checksum
    functionSourceFile: /src/pdns/pdns/dnsdistdist/xsk.cc
    functionUses: 0
    functionsReached:
    - XskPacket::getDataSize
    - XskPacket::getL4HeaderOffset
    - XskPacket::tcp_udp_v4_header_checksum_partial
    - XskPacket::ip_checksum_fold
    - static_cast<uint16_t>
    - XskPacket::ip_checksum_partial
    linkageType: ''
    returnType: __be16
    signature: __be16 XskPacket::tcp_udp_v4_checksum(const struct iphdr* ipHeader)
      const noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<uint16_t>
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:1004,1
    - Dst: XskPacket::getDataSize
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:1004,1
    - Dst: XskPacket::tcp_udp_v6_header_checksum_partial
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:1005,1
    - Dst: XskPacket::ip_checksum_partial
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:1007,1
    - Dst: XskPacket::getL4HeaderOffset
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:1007,1
    - Dst: XskPacket::ip_checksum_fold
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:1008,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ipv6
    argTypes:
    - struct ipv6hdr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1009
      start: 1002
    functionDepth: 3
    functionLinenumber: 1002
    functionLinenumberEnd: 1009
    functionName: XskPacket::tcp_udp_v6_checksum
    functionSourceFile: /src/pdns/pdns/dnsdistdist/xsk.cc
    functionUses: 0
    functionsReached:
    - XskPacket::tcp_udp_v6_header_checksum_partial
    - XskPacket::getDataSize
    - XskPacket::getL4HeaderOffset
    - XskPacket::ip_checksum_fold
    - static_cast<uint16_t>
    - XskPacket::ip_checksum_partial
    linkageType: ''
    returnType: __be16
    signature: __be16 XskPacket::tcp_udp_v6_checksum(const struct ipv6hdr* ipv6) const
      noexcept
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:1018,1
    - Dst: static_cast<const uint8_t*>
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:1018,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:1026,1
    - Dst: static_cast<const uint8_t*>
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:1026,1
    - Dst: static_cast<const uint8_t*>
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:1033,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:1034,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 3
    argNames:
    - ptr
    - len
    - sum
    argTypes:
    - void*
    - size_t
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1038
      start: 1011
    functionDepth: 0
    functionLinenumber: 1011
    functionLinenumberEnd: 1038
    functionName: XskPacket::ip_checksum_partial
    functionSourceFile: /src/pdns/pdns/dnsdistdist/xsk.cc
    functionUses: 3
    functionsReached:
    - memcpy
    - static_cast<const uint8_t*>
    - ntohs
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t XskPacket::ip_checksum_partial(const void* ptr, const size_t
      len, uint64_t sum) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<__be16>
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:1049,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - sum
    argTypes:
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1050
      start: 1040
    functionDepth: 0
    functionLinenumber: 1040
    functionLinenumberEnd: 1050
    functionName: XskPacket::ip_checksum_fold
    functionSourceFile: /src/pdns/pdns/dnsdistdist/xsk.cc
    functionUses: 3
    functionsReached:
    - static_cast<__be16>
    linkageType: ''
    returnType: __be16
    signature: __be16 XskPacket::ip_checksum_fold(uint64_t sum) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: htons
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:1088,1
    - Dst: XskPacket::ip_checksum_partial
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:1089,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 4
    argNames:
    - src_ip
    - dst_ip
    - protocol
    - len
    argTypes:
    - __be32
    - __be32
    - uint8_t
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1090
      start: 1059
    functionDepth: 1
    functionLinenumber: 1059
    functionLinenumberEnd: 1090
    functionName: XskPacket::tcp_udp_v4_header_checksum_partial
    functionSourceFile: /src/pdns/pdns/dnsdistdist/xsk.cc
    functionUses: 1
    functionsReached:
    - XskPacket::ip_checksum_partial
    - htons
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t XskPacket::tcp_udp_v4_header_checksum_partial(__be32 src_ip,
      __be32 dst_ip, uint8_t protocol, uint16_t len) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: htonl
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:1120,1
    - Dst: memset
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:1122,1
    - Dst: XskPacket::ip_checksum_partial
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:1124,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 4
    argNames:
    - src_ip
    - dst_ip
    - protocol
    - len
    argTypes:
    - struct in6_addr*
    - struct in6_addr*
    - uint8_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1125
      start: 1092
    functionDepth: 1
    functionLinenumber: 1092
    functionLinenumberEnd: 1125
    functionName: XskPacket::tcp_udp_v6_header_checksum_partial
    functionSourceFile: /src/pdns/pdns/dnsdistdist/xsk.cc
    functionUses: 1
    functionsReached:
    - memset
    - XskPacket::ip_checksum_partial
    - htonl
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t XskPacket::tcp_udp_v6_header_checksum_partial(const struct
      in6_addr* src_ip, const struct in6_addr* dst_ip, uint8_t protocol, uint32_t
      len) noexcept
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:1129,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:1130,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:1132,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:1132,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:1132,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:1133,1
    - Dst: clear
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:1134,1
    - Dst: XskPacket::parse
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:1136,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:1137,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 1
    argNames:
    - ' buf'
    argTypes:
    - PacketBuffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1139
      start: 1127
    functionDepth: 4
    functionLinenumber: 1127
    functionLinenumberEnd: 1139
    functionName: XskPacket::setHeader
    functionSourceFile: /src/pdns/pdns/dnsdistdist/xsk.cc
    functionUses: 0
    functionsReached:
    - memcpy
    - std::runtime_error
    - XskPacket::parse
    - size
    - data
    - clear
    linkageType: ''
    returnType: void
    signature: void XskPacket::setHeader(PacketBuffer& buf)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XskPacket::getFrameLen
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:1143,1
    - Dst: XskPacket::getDataSize
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:1143,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:1145,1
    - Dst: PacketBuffer::data
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:1145,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1147
      start: 1141
    functionDepth: 3
    functionLinenumber: 1141
    functionLinenumberEnd: 1147
    functionName: XskPacket::cloneHeaderToPacketBuffer
    functionSourceFile: /src/pdns/pdns/dnsdistdist/xsk.cc
    functionUses: 0
    functionsReached:
    - PacketBuffer::data
    - memcpy
    - XskPacket::getDataSize
    - XskPacket::getFrameLen
    linkageType: ''
    returnType: PacketBuffer
    signature: PacketBuffer XskPacket::cloneHeaderToPacketBuffer() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ::eventfd
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:1151,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:1153,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1156
      start: 1149
    functionDepth: 0
    functionLinenumber: 1149
    functionLinenumberEnd: 1156
    functionName: XskWorker::createEventfd
    functionSourceFile: /src/pdns/pdns/dnsdistdist/xsk.cc
    functionUses: 1
    functionsReached:
    - runtime_error
    - ::eventfd
    linkageType: ''
    returnType: int
    signature: int XskWorker::createEventfd()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: read
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:1160,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1161
      start: 1158
    functionDepth: 0
    functionLinenumber: 1158
    functionLinenumberEnd: 1161
    functionName: XskWorker::waitForXskSocket
    functionSourceFile: /src/pdns/pdns/dnsdistdist/xsk.cc
    functionUses: 0
    functionsReached:
    - read
    linkageType: ''
    returnType: void
    signature: void XskWorker::waitForXskSocket() const noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XskWorker::notify
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:1165,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1166
      start: 1163
    functionDepth: 1
    functionLinenumber: 1163
    functionLinenumberEnd: 1166
    functionName: XskWorker::notifyXskSocket
    functionSourceFile: /src/pdns/pdns/dnsdistdist/xsk.cc
    functionUses: 0
    functionsReached:
    - XskWorker::notify
    linkageType: ''
    returnType: void
    signature: void XskWorker::notifyXskSocket() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<XskWorker>
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:1170,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - type
    - ' frames'
    argTypes:
    - Type
    - std::shared_ptr<LockGuarded<std::vector<uint64_t>>>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1171
      start: 1168
    functionDepth: 0
    functionLinenumber: 1168
    functionLinenumberEnd: 1171
    functionName: XskWorker::create
    functionSourceFile: /src/pdns/pdns/dnsdistdist/xsk.cc
    functionUses: 1
    functionsReached:
    - std::make_shared<XskWorker>
    linkageType: ''
    returnType: std::shared_ptr<XskWorker>
    signature: std::shared_ptr<XskWorker> XskWorker::create(Type type, const std::shared_ptr<LockGuarded<std::vector<uint64_t>>>&
      frames)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::shared_ptr<XskWorker>::xskSocketWaker::getHandle
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:1175,1
    - Dst: std::shared_ptr<XskWorker>::setUmemBufBase
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:1176,1
    - Dst: insert
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:1177,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:1177,1
    - Dst: push_back
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:1178,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - worker
    argTypes:
    - std::shared_ptr<XskWorker>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1182
      start: 1173
    functionDepth: 1
    functionLinenumber: 1173
    functionLinenumberEnd: 1182
    functionName: XskSocket::addWorker
    functionSourceFile: /src/pdns/pdns/dnsdistdist/xsk.cc
    functionUses: 0
    functionsReached:
    - std::move
    - push_back
    - std::shared_ptr<XskWorker>::xskSocketWaker::getHandle
    - std::shared_ptr<XskWorker>::setUmemBufBase
    - insert
    linkageType: ''
    returnType: void
    signature: void XskSocket::addWorker(std::shared_ptr<XskWorker> worker)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:1186,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' worker'
    - ' dest'
    argTypes:
    - std::shared_ptr<XskWorker>
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1187
      start: 1184
    functionDepth: 0
    functionLinenumber: 1184
    functionLinenumberEnd: 1187
    functionName: XskSocket::addWorkerRoute
    functionSourceFile: /src/pdns/pdns/dnsdistdist/xsk.cc
    functionUses: 0
    functionsReached:
    - lock
    linkageType: ''
    returnType: void
    signature: void XskSocket::addWorkerRoute(const std::shared_ptr<XskWorker>& worker,
      const ComboAddress& dest)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:1191,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' dest'
    argTypes:
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1192
      start: 1189
    functionDepth: 0
    functionLinenumber: 1189
    functionLinenumberEnd: 1192
    functionName: XskSocket::removeWorkerRoute
    functionSourceFile: /src/pdns/pdns/dnsdistdist/xsk.cc
    functionUses: 0
    functionsReached:
    - lock
    linkageType: ''
    returnType: void
    signature: void XskSocket::removeWorkerRoute(const ComboAddress& dest)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - base
    argTypes:
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1197
      start: 1194
    functionDepth: 0
    functionLinenumber: 1194
    functionLinenumberEnd: 1197
    functionName: XskWorker::setUmemBufBase
    functionSourceFile: /src/pdns/pdns/dnsdistdist/xsk.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void XskWorker::setUmemBufBase(uint8_t* base)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getFrameOffsetFrom
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:1201,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' packet'
    argTypes:
    - XskPacket
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1202
      start: 1199
    functionDepth: 0
    functionLinenumber: 1199
    functionLinenumberEnd: 1202
    functionName: XskWorker::frameOffset
    functionSourceFile: /src/pdns/pdns/dnsdistdist/xsk.cc
    functionUses: 0
    functionsReached:
    - getFrameOffsetFrom
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t XskWorker::frameOffset(const XskPacket& packet) const noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XskWorker::notify
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:1206,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1207
      start: 1204
    functionDepth: 1
    functionLinenumber: 1204
    functionLinenumberEnd: 1207
    functionName: XskWorker::notifyWorker
    functionSourceFile: /src/pdns/pdns/dnsdistdist/xsk.cc
    functionUses: 0
    functionsReached:
    - XskWorker::notify
    linkageType: ''
    returnType: void
    signature: void XskWorker::notifyWorker() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:1212,1
    - Dst: read_available
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:1215,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1216
      start: 1209
    functionDepth: 0
    functionLinenumber: 1209
    functionLinenumberEnd: 1216
    functionName: XskWorker::hasIncomingFrames
    functionSourceFile: /src/pdns/pdns/dnsdistdist/xsk.cc
    functionUses: 0
    functionsReached:
    - read_available
    - std::runtime_error
    linkageType: ''
    returnType: bool
    signature: bool XskWorker::hasIncomingFrames()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:1221,1
    - Dst: consume_all
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:1224,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - ' callback'
    argTypes:
    - std::function<void(XskPacket packet)>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1225
      start: 1218
    functionDepth: 0
    functionLinenumber: 1218
    functionLinenumberEnd: 1225
    functionName: XskWorker::processIncomingFrames
    functionSourceFile: /src/pdns/pdns/dnsdistdist/xsk.cc
    functionUses: 0
    functionsReached:
    - consume_all
    - std::runtime_error
    linkageType: ''
    returnType: void
    signature: void XskWorker::processIncomingFrames(const std::function<void(XskPacket
      packet)>& callback)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: consume_all
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:1229,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' callback'
    argTypes:
    - std::function<void(XskPacket packet)>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1230
      start: 1227
    functionDepth: 0
    functionLinenumber: 1227
    functionLinenumberEnd: 1230
    functionName: XskWorker::processOutgoingFrames
    functionSourceFile: /src/pdns/pdns/dnsdistdist/xsk.cc
    functionUses: 0
    functionsReached:
    - consume_all
    linkageType: ''
    returnType: void
    signature: void XskWorker::processOutgoingFrames(const std::function<void(XskPacket
      packet)>& callback)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: FDWrapper
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:1235,1
    - Dst: closesocket
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:1235,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:1237,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:1240,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:1241,1
    - Dst: strncpy
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:1245,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:1245,1
    - Dst: length
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:1245,1
    - Dst: ioctl
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:1246,1
    - Dst: auto::getHandle
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:1246,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:1247,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:1251,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:1251,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:1251,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1252
      start: 1232
    functionDepth: 0
    functionLinenumber: 1232
    functionLinenumberEnd: 1252
    functionName: XskSocket::getMACFromIfName
    functionSourceFile: /src/pdns/pdns/dnsdistdist/xsk.cc
    functionUses: 1
    functionsReached:
    - length
    - memcpy
    - strncpy
    - std::runtime_error
    - closesocket
    - auto::getHandle
    - size
    - FDWrapper
    - data
    - c_str
    - ioctl
    linkageType: ''
    returnType: void
    signature: void XskSocket::getMACFromIfName()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:1257,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' lhs'
    - ' rhs'
    argTypes:
    - timespec
    - timespec
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1258
      start: 1254
    functionDepth: 0
    functionLinenumber: 1254
    functionLinenumberEnd: 1258
    functionName: XskSocket::timeDifference
    functionSourceFile: /src/pdns/pdns/dnsdistdist/xsk.cc
    functionUses: 2
    functionsReached:
    - static_cast<int>
    linkageType: ''
    returnType: int
    signature: int XskSocket::timeDifference(const timespec& lhs, const timespec&
      rhs) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: read
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:1262,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1263
      start: 1260
    functionDepth: 0
    functionLinenumber: 1260
    functionLinenumberEnd: 1263
    functionName: XskWorker::cleanWorkerNotification
    functionSourceFile: /src/pdns/pdns/dnsdistdist/xsk.cc
    functionUses: 0
    functionsReached:
    - read
    linkageType: ''
    returnType: void
    signature: void XskWorker::cleanWorkerNotification() const noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: read
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:1267,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1268
      start: 1265
    functionDepth: 0
    functionLinenumber: 1265
    functionLinenumberEnd: 1268
    functionName: XskWorker::cleanSocketNotification
    functionSourceFile: /src/pdns/pdns/dnsdistdist/xsk.cc
    functionUses: 0
    functionsReached:
    - read
    linkageType: ''
    returnType: void
    signature: void XskWorker::cleanSocketNotification() const noexcept
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: timerfd_create
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:1273,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:1275,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:1277,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:1282,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - ' info'
    argTypes:
    - XskWorker
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1288
      start: 1270
    functionDepth: 0
    functionLinenumber: 1270
    functionLinenumberEnd: 1288
    functionName: getPollFdsForWorker
    functionSourceFile: /src/pdns/pdns/dnsdistdist/xsk.cc
    functionUses: 2
    functionsReached:
    - timerfd_create
    - std::vector::push_back
    - std::runtime_error
    linkageType: ''
    returnType: std::vector<pollfd>
    signature: std::vector<pollfd> getPollFdsForWorker(XskWorker& info)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:1292,1
    - Dst: auto::empty
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:1293,1
    - Dst: auto::back
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:1296,1
    - Dst: auto::pop_back
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:1297,1
    - Dst: XskPacket
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:1299,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1300
      start: 1290
    functionDepth: 0
    functionLinenumber: 1290
    functionLinenumberEnd: 1300
    functionName: XskWorker::getEmptyFrame
    functionSourceFile: /src/pdns/pdns/dnsdistdist/xsk.cc
    functionUses: 0
    functionsReached:
    - auto::pop_back
    - auto::back
    - lock
    - XskPacket
    - auto::empty
    linkageType: ''
    returnType: std::optional<XskPacket>
    signature: std::optional<XskPacket> XskWorker::getEmptyFrame()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XskWorker::frameOffset
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:1304,1
    - Dst: checkUmemIntegrity
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:1306,1
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:1309,1
    - Dst: auto::push_back
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:1310,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - ' packet'
    argTypes:
    - XskPacket
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1312
      start: 1302
    functionDepth: 1
    functionLinenumber: 1302
    functionLinenumberEnd: 1312
    functionName: XskWorker::markAsFree
    functionSourceFile: /src/pdns/pdns/dnsdistdist/xsk.cc
    functionUses: 2
    functionsReached:
    - auto::push_back
    - checkUmemIntegrity
    - XskWorker::frameOffset
    - lock
    linkageType: ''
    returnType: void
    signature: void XskWorker::markAsFree(const XskPacket& packet)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1317
      start: 1314
    functionDepth: 0
    functionLinenumber: 1314
    functionLinenumberEnd: 1317
    functionName: XskPacket::getFlags
    functionSourceFile: /src/pdns/pdns/dnsdistdist/xsk.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t XskPacket::getFlags() const noexcept
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: XskPacket::changeDirectAndUpdateChecksum
      Src: /src/pdns/pdns/dnsdistdist/xsk.cc:1325,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1327
      start: 1319
    functionDepth: 4
    functionLinenumber: 1319
    functionLinenumberEnd: 1327
    functionName: XskPacket::updatePacket
    functionSourceFile: /src/pdns/pdns/dnsdistdist/xsk.cc
    functionUses: 0
    functionsReached:
    - XskPacket::changeDirectAndUpdateChecksum
    linkageType: ''
    returnType: void
    signature: void XskPacket::updatePacket() noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lua_pushlightuserdata
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.hh:43,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - state
    - ptr
    argTypes:
    - lua_State*
    - dnsdist_ffi_dnsquestion_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 41
    functionDepth: 0
    functionLinenumber: 41
    functionLinenumberEnd: 45
    functionName: push
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.hh
    functionUses: 7
    functionsReached:
    - lua_pushlightuserdata
    linkageType: ''
    returnType: PushedObject
    signature: PushedObject push(lua_State* state, dnsdist_ffi_dnsquestion_t* ptr)
      noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - dq_
    argTypes:
    - DNSQuestion*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 59
    functionDepth: 0
    functionLinenumber: 59
    functionLinenumberEnd: 62
    functionName: dnsdist_ffi_dnsquestion_t
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void dnsdist_ffi_dnsquestion_t(DNSQuestion* dq_)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lua_pushlightuserdata
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.hh:96,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - state
    - ptr
    argTypes:
    - lua_State*
    - dnsdist_ffi_dnsresponse_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 94
    functionDepth: 0
    functionLinenumber: 94
    functionLinenumberEnd: 98
    functionName: push
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.hh
    functionUses: 7
    functionsReached:
    - lua_pushlightuserdata
    linkageType: ''
    returnType: PushedObject
    signature: PushedObject push(lua_State* state, dnsdist_ffi_dnsresponse_t* ptr)
      noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - dr_
    argTypes:
    - DNSResponse*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 103
    functionDepth: 0
    functionLinenumber: 103
    functionLinenumberEnd: 106
    functionName: dnsdist_ffi_dnsresponse_t
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void dnsdist_ffi_dnsresponse_t(DNSResponse* dr_)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lua_pushlightuserdata
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.hh:129,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - state
    - ptr
    argTypes:
    - lua_State*
    - dnsdist_ffi_server_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 131
      start: 127
    functionDepth: 0
    functionLinenumber: 127
    functionLinenumberEnd: 131
    functionName: push
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.hh
    functionUses: 7
    functionsReached:
    - lua_pushlightuserdata
    linkageType: ''
    returnType: PushedObject
    signature: PushedObject push(lua_State* state, dnsdist_ffi_server_t* ptr) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' server_'
    argTypes:
    - std::shared_ptr<DownstreamState>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 139
      start: 136
    functionDepth: 0
    functionLinenumber: 136
    functionLinenumberEnd: 139
    functionName: dnsdist_ffi_server_t
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void dnsdist_ffi_server_t(const std::shared_ptr<DownstreamState>& server_)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lua_pushlightuserdata
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.hh:153,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - state
    - ptr
    argTypes:
    - lua_State*
    - dnsdist_ffi_servers_list_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 151
    functionDepth: 0
    functionLinenumber: 151
    functionLinenumberEnd: 155
    functionName: push
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.hh
    functionUses: 7
    functionsReached:
    - lua_pushlightuserdata
    linkageType: ''
    returnType: PushedObject
    signature: PushedObject push(lua_State* state, dnsdist_ffi_servers_list_t* ptr)
      noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: reserve
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.hh:163,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.hh:163,1
    - Dst: push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.hh:165,1
    - Dst: dnsdist_ffi_server_t
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.hh:165,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ' servers_'
    argTypes:
    - ServerPolicy::NumberedServerVector
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 167
      start: 160
    functionDepth: 1
    functionLinenumber: 160
    functionLinenumberEnd: 167
    functionName: dnsdist_ffi_servers_list_t
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.hh
    functionUses: 0
    functionsReached:
    - push_back
    - reserve
    - size
    - dnsdist_ffi_server_t
    linkageType: ''
    returnType: void
    signature: void dnsdist_ffi_servers_list_t(const ServerPolicy::NumberedServerVector&
      servers_)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lua_pushlightuserdata
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.hh:182,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - state
    - ptr
    argTypes:
    - lua_State*
    - dnsdist_ffi_network_message_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 184
      start: 180
    functionDepth: 0
    functionLinenumber: 180
    functionLinenumberEnd: 184
    functionName: push
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.hh
    functionUses: 7
    functionsReached:
    - lua_pushlightuserdata
    linkageType: ''
    returnType: PushedObject
    signature: PushedObject push(lua_State* state, dnsdist_ffi_network_message_t*
      ptr) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 3
    argNames:
    - ' payload_'
    - ' from_'
    - endpointID_
    argTypes:
    - std::string
    - std::string
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 192
      start: 189
    functionDepth: 0
    functionLinenumber: 189
    functionLinenumberEnd: 192
    functionName: dnsdist_ffi_network_message_t
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void dnsdist_ffi_network_message_t(const std::string& payload_, const
      std::string& from_, uint16_t endpointID_)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pthread_setname_np
      Src: /src/pdns/pdns/dnsdistdist/threadname.cc:47,1
    - Dst: pthread_self
      Src: /src/pdns/pdns/dnsdistdist/threadname.cc:47,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/threadname.cc:47,1
    - Dst: pthread_set_name_np
      Src: /src/pdns/pdns/dnsdistdist/threadname.cc:50,1
    - Dst: pthread_self
      Src: /src/pdns/pdns/dnsdistdist/threadname.cc:50,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/threadname.cc:50,1
    - Dst: pthread_set_name_np
      Src: /src/pdns/pdns/dnsdistdist/threadname.cc:53,1
    - Dst: pthread_self
      Src: /src/pdns/pdns/dnsdistdist/threadname.cc:53,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/threadname.cc:53,1
    - Dst: pthread_setname_np
      Src: /src/pdns/pdns/dnsdistdist/threadname.cc:56,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/threadname.cc:56,1
    - Dst: pthread_setname_np
      Src: /src/pdns/pdns/dnsdistdist/threadname.cc:59,1
    - Dst: pthread_self
      Src: /src/pdns/pdns/dnsdistdist/threadname.cc:59,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/threadname.cc:59,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - ' threadName'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 63
    functionName: trySetThreadName
    functionSourceFile: /src/pdns/pdns/dnsdistdist/threadname.cc
    functionUses: 1
    functionsReached:
    - c_str
    - pthread_setname_np
    - pthread_set_name_np
    - pthread_self
    linkageType: ''
    returnType: int
    signature: int trySetThreadName(const std::string& threadName)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: trySetThreadName
      Src: /src/pdns/pdns/dnsdistdist/threadname.cc:66,1
    - Dst: substr
      Src: /src/pdns/pdns/dnsdistdist/threadname.cc:68,1
    - Dst: trySetThreadName
      Src: /src/pdns/pdns/dnsdistdist/threadname.cc:69,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/threadname.cc:74,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/threadname.cc:74,1
    - Dst: strerror
      Src: /src/pdns/pdns/dnsdistdist/threadname.cc:74,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/threadname.cc:75,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/threadname.cc:75,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/threadname.cc:77,1
    - Dst: strerror
      Src: /src/pdns/pdns/dnsdistdist/threadname.cc:77,1
    - Dst: withName
      Src: /src/pdns/pdns/dnsdistdist/threadname.cc:78,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/threadname.cc:78,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - ' threadName'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 65
    functionDepth: 1
    functionLinenumber: 65
    functionLinenumberEnd: 81
    functionName: setThreadName
    functionSourceFile: /src/pdns/pdns/dnsdistdist/threadname.cc
    functionUses: 57
    functionsReached:
    - SLOG
    - Logging::Loggable
    - withName
    - warnlog
    - substr
    - dnsdist::logging::getTopLogger
    - strerror
    - trySetThreadName
    linkageType: ''
    returnType: void
    signature: void setThreadName(const std::string& threadName)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' netmask'
    argTypes:
    - Netmask
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 32
      start: 29
    functionDepth: 0
    functionLinenumber: 29
    functionLinenumberEnd: 32
    functionName: EDNSSubnetOpts::setSource
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ednssubnet.hh
    functionUses: 30
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setSource(const Netmask& netmask)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 36
      start: 33
    functionDepth: 0
    functionLinenumber: 33
    functionLinenumberEnd: 36
    functionName: '& getSource() const'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ednssubnet.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Netmask
    signature: Netmask & getSource() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getNetwork
      Src: /src/pdns/pdns/dnsdistdist/ednssubnet.hh:39,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 37
    functionDepth: 0
    functionLinenumber: 37
    functionLinenumberEnd: 40
    functionName: EDNSSubnetOpts::getFamily
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ednssubnet.hh
    functionUses: 1
    functionsReached:
    - getNetwork
    linkageType: ''
    returnType: uint8_t
    signature: uint8_t getFamily() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getBits
      Src: /src/pdns/pdns/dnsdistdist/ednssubnet.hh:43,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 41
    functionDepth: 0
    functionLinenumber: 41
    functionLinenumberEnd: 44
    functionName: EDNSSubnetOpts::getSourcePrefixLength
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ednssubnet.hh
    functionUses: 0
    functionsReached:
    - getBits
    linkageType: ''
    returnType: uint8_t
    signature: uint8_t getSourcePrefixLength() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - scope
    argTypes:
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 45
    functionDepth: 0
    functionLinenumber: 45
    functionLinenumberEnd: 48
    functionName: EDNSSubnetOpts::setScopePrefixLength
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ednssubnet.hh
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setScopePrefixLength(uint8_t scope)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 49
    functionDepth: 0
    functionLinenumber: 49
    functionLinenumberEnd: 52
    functionName: EDNSSubnetOpts::getScopePrefixLength
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ednssubnet.hh
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: uint8_t
    signature: uint8_t getScopePrefixLength() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getNetwork
      Src: /src/pdns/pdns/dnsdistdist/ednssubnet.hh:55,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 53
    functionDepth: 0
    functionLinenumber: 53
    functionLinenumberEnd: 56
    functionName: EDNSSubnetOpts::getScope
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ednssubnet.hh
    functionUses: 1
    functionsReached:
    - getNetwork
    linkageType: ''
    returnType: Netmask
    signature: Netmask getScope() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - cs_
    argTypes:
    - ClientState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 36
      start: 33
    functionDepth: 0
    functionLinenumber: 33
    functionLinenumberEnd: 36
    functionName: ConnectionInfo
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.hh
    functionUses: 9
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ConnectionInfo(ClientState* cs_)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - cs_
    - remote_
    argTypes:
    - ClientState*
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 37
    functionDepth: 0
    functionLinenumber: 37
    functionLinenumberEnd: 40
    functionName: ConnectionInfo
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.hh
    functionUses: 9
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ConnectionInfo(ClientState* cs_, const ComboAddress remote_)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - ConnectionInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 41
    functionDepth: 0
    functionLinenumber: 41
    functionLinenumberEnd: 46
    functionName: ConnectionInfo
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.hh
    functionUses: 9
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ConnectionInfo(ConnectionInfo&& rhs) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - ConnectionInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 48
    functionDepth: 0
    functionLinenumber: 48
    functionLinenumberEnd: 48
    functionName: ConnectionInfo
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.hh
    functionUses: 9
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ConnectionInfo(const ConnectionInfo& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - ConnectionInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 49
    functionDepth: 0
    functionLinenumber: 49
    functionLinenumberEnd: 49
    functionName: '& operator=(const ConnectionInfo& rhs)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: ConnectionInfo
    signature: ConnectionInfo & operator=(const ConnectionInfo& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - ConnectionInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 51
    functionDepth: 0
    functionLinenumber: 51
    functionLinenumberEnd: 60
    functionName: '& operator=(ConnectionInfo&& rhs) noexcept'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: ConnectionInfo
    signature: ConnectionInfo & operator=(ConnectionInfo&& rhs) noexcept
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: close
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.hh:65,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 62
    functionDepth: 0
    functionLinenumber: 62
    functionLinenumberEnd: 72
    functionName: ~ConnectionInfo()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.hh
    functionUses: 0
    functionsReached:
    - close
    linkageType: ''
    returnType: void
    signature: void ~ConnectionInfo()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 83
    functionDepth: 0
    functionLinenumber: 83
    functionLinenumberEnd: 85
    functionName: InternalQuery::InternalQuery
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void InternalQuery()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.hh:88,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.hh:88,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 1
    argCount: 2
    argNames:
    - ' buffer'
    - ' state'
    argTypes:
    - PacketBuffer
    - InternalQueryState
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 87
    functionDepth: 0
    functionLinenumber: 87
    functionLinenumberEnd: 90
    functionName: InternalQuery::InternalQuery
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.hh
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void InternalQuery(PacketBuffer&& buffer, InternalQueryState&& state)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - InternalQuery
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 92
    functionDepth: 0
    functionLinenumber: 92
    functionLinenumberEnd: 92
    functionName: InternalQuery::InternalQuery
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void InternalQuery(InternalQuery&& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - InternalQuery
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 93
    functionDepth: 0
    functionLinenumber: 93
    functionLinenumberEnd: 93
    functionName: '& operator=(InternalQuery&& rhs)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: InternalQuery
    signature: InternalQuery & operator=(InternalQuery&& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - InternalQuery
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 95
    functionDepth: 0
    functionLinenumber: 95
    functionLinenumberEnd: 95
    functionName: InternalQuery::InternalQuery
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void InternalQuery(const InternalQuery& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - InternalQuery
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 96
    functionDepth: 0
    functionLinenumber: 96
    functionLinenumberEnd: 96
    functionName: '& operator=(const InternalQuery& rhs)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: InternalQuery
    signature: InternalQuery & operator=(const InternalQuery& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 98
    functionDepth: 0
    functionLinenumber: 98
    functionLinenumberEnd: 101
    functionName: InternalQuery::isXFR
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool isXFR() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.hh:124,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 125
      start: 121
    functionDepth: 0
    functionLinenumber: 121
    functionLinenumberEnd: 125
    functionName: TCPResponse
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.hh
    functionUses: 2
    functionsReached:
    - memset
    linkageType: ''
    returnType: void
    signature: void TCPResponse()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.hh:128,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.hh:128,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.hh:128,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.hh:128,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.hh:130,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.hh:131,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.hh:132,1
    - Dst: dnsheader_aligned::get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.hh:132,1
    - Dst: memset
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.hh:135,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 4
    argNames:
    - ' buffer'
    - ' state'
    - conn
    - ds
    argTypes:
    - PacketBuffer
    - InternalQueryState
    - std::shared_ptr<ConnectionToBackend>
    - std::shared_ptr<DownstreamState>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 137
      start: 127
    functionDepth: 0
    functionLinenumber: 127
    functionLinenumberEnd: 137
    functionName: TCPResponse
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.hh
    functionUses: 2
    functionsReached:
    - memcpy
    - std::move
    - dnsheader_aligned::get
    - size
    - memset
    - data
    linkageType: ''
    returnType: void
    signature: void TCPResponse(PacketBuffer&& buffer, InternalQueryState&& state,
      std::shared_ptr<ConnectionToBackend> conn, std::shared_ptr<DownstreamState>
      ds)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.hh:140,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.hh:142,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.hh:143,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.hh:144,1
    - Dst: dnsheader_aligned::get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.hh:144,1
    - Dst: memset
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.hh:147,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - ' query'
    argTypes:
    - TCPQuery
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 149
      start: 139
    functionDepth: 0
    functionLinenumber: 139
    functionLinenumberEnd: 149
    functionName: TCPResponse
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.hh
    functionUses: 2
    functionsReached:
    - memcpy
    - std::move
    - dnsheader_aligned::get
    - size
    - memset
    - data
    linkageType: ''
    returnType: void
    signature: void TCPResponse(TCPQuery&& query)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 154
      start: 151
    functionDepth: 0
    functionLinenumber: 151
    functionLinenumberEnd: 154
    functionName: isAsync
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.hh
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool isAsync() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 167
      start: 165
    functionDepth: 0
    functionLinenumber: 165
    functionLinenumberEnd: 167
    functionName: ~TCPQuerySender()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~TCPQuerySender()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 179
      start: 176
    functionDepth: 0
    functionLinenumber: 176
    functionLinenumberEnd: 179
    functionName: TCPQuerySender::releaseConnection
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool releaseConnection() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 189
      start: 187
    functionDepth: 0
    functionLinenumber: 187
    functionLinenumberEnd: 189
    functionName: CrossProtocolQuery
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.hh
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void CrossProtocolQuery()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.hh:191,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - ' query_'
    - ' downstream_'
    argTypes:
    - InternalQuery
    - std::shared_ptr<DownstreamState>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 193
      start: 190
    functionDepth: 0
    functionLinenumber: 190
    functionLinenumberEnd: 193
    functionName: CrossProtocolQuery
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.hh
    functionUses: 6
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void CrossProtocolQuery(InternalQuery&& query_, std::shared_ptr<DownstreamState>&
      downstream_)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - CrossProtocolQuery
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 195
      start: 195
    functionDepth: 0
    functionLinenumber: 195
    functionLinenumberEnd: 195
    functionName: CrossProtocolQuery
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.hh
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void CrossProtocolQuery(CrossProtocolQuery&& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 198
      start: 196
    functionDepth: 0
    functionLinenumber: 196
    functionLinenumberEnd: 198
    functionName: ~CrossProtocolQuery()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~CrossProtocolQuery()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 206
      start: 201
    functionDepth: 0
    functionLinenumber: 201
    functionLinenumberEnd: 206
    functionName: getDQ
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.hh
    functionUses: 18
    functionsReached: []
    linkageType: ''
    returnType: DNSQuestion
    signature: DNSQuestion getDQ()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 213
      start: 208
    functionDepth: 0
    functionLinenumber: 208
    functionLinenumberEnd: 213
    functionName: getDR
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.hh
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: DNSResponse
    signature: DNSResponse getDR()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.hh:228,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.hh:236,1
    - Dst: send
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.hh:236,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.hh:236,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 1
    argNames:
    - ' conn'
    argTypes:
    - std::unique_ptr<ConnectionInfo>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 243
      start: 225
    functionDepth: 0
    functionLinenumber: 225
    functionLinenumberEnd: 243
    functionName: TCPClientCollection::passConnectionToThread
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.hh
    functionUses: 0
    functionsReached:
    - std::move
    - at
    - send
    - std::runtime_error
    linkageType: ''
    returnType: bool
    signature: bool passConnectionToThread(std::unique_ptr<ConnectionInfo>&& conn)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.hh:248,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.hh:252,1
    - Dst: send
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.hh:252,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.hh:252,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 1
    argNames:
    - ' cpq'
    argTypes:
    - std::unique_ptr<CrossProtocolQuery>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 258
      start: 245
    functionDepth: 0
    functionLinenumber: 245
    functionLinenumberEnd: 258
    functionName: TCPClientCollection::passCrossProtocolQueryToThread
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.hh
    functionUses: 0
    functionsReached:
    - std::move
    - at
    - send
    - std::runtime_error
    linkageType: ''
    returnType: bool
    signature: bool passCrossProtocolQueryToThread(std::unique_ptr<CrossProtocolQuery>&&
      cpq)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 263
      start: 260
    functionDepth: 0
    functionLinenumber: 260
    functionLinenumberEnd: 263
    functionName: TCPClientCollection::hasReachedMaxThreads
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool hasReachedMaxThreads() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 268
      start: 265
    functionDepth: 0
    functionLinenumber: 265
    functionLinenumberEnd: 268
    functionName: TCPClientCollection::getThreadsCount
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t getThreadsCount() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 273
      start: 270
    functionDepth: 0
    functionLinenumber: 270
    functionLinenumberEnd: 273
    functionName: TCPClientCollection::getQueuedCount
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t getQueuedCount() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 278
      start: 275
    functionDepth: 0
    functionLinenumber: 275
    functionLinenumberEnd: 278
    functionName: TCPClientCollection::decrementQueuedCount
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void decrementQueuedCount()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 287
      start: 285
    functionDepth: 0
    functionLinenumber: 285
    functionLinenumberEnd: 287
    functionName: TCPClientCollection::TCPWorkerThread
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void TCPWorkerThread()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.hh:290,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.hh:290,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 1
    argCount: 2
    argNames:
    - ' querySender'
    - ' crossProtocolQuerySender'
    argTypes:
    - pdns::channel::Sender<ConnectionInfo>
    - pdns::channel::Sender<CrossProtocolQuery>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 292
      start: 289
    functionDepth: 0
    functionLinenumber: 289
    functionLinenumberEnd: 292
    functionName: TCPClientCollection::TCPWorkerThread
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.hh
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void TCPWorkerThread(pdns::channel::Sender<ConnectionInfo>&& querySender,
      pdns::channel::Sender<CrossProtocolQuery>&& crossProtocolQuerySender)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - TCPWorkerThread
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 294
      start: 294
    functionDepth: 0
    functionLinenumber: 294
    functionLinenumberEnd: 294
    functionName: TCPClientCollection::TCPWorkerThread
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void TCPWorkerThread(TCPWorkerThread&& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - TCPWorkerThread
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 295
      start: 295
    functionDepth: 0
    functionLinenumber: 295
    functionLinenumberEnd: 295
    functionName: '& operator=(TCPWorkerThread&& rhs)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: TCPWorkerThread
    signature: TCPWorkerThread & operator=(TCPWorkerThread&& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - TCPWorkerThread
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 296
      start: 296
    functionDepth: 0
    functionLinenumber: 296
    functionLinenumberEnd: 296
    functionName: TCPClientCollection::TCPWorkerThread
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void TCPWorkerThread(const TCPWorkerThread& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 297
      start: 297
    functionDepth: 0
    functionLinenumber: 297
    functionLinenumberEnd: 297
    functionName: '& operator=(const TCPWorkerThread&)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: TCPWorkerThread
    signature: TCPWorkerThread & operator=(const TCPWorkerThread&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' handlingIO'
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 319
      start: 315
    functionDepth: 0
    functionLinenumber: 315
    functionLinenumberEnd: 319
    functionName: dnsdist::tcp::HandlingIOGuard::HandlingIOGuard
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void HandlingIOGuard(bool& handlingIO)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 320
      start: 320
    functionDepth: 0
    functionLinenumber: 320
    functionLinenumberEnd: 320
    functionName: dnsdist::tcp::HandlingIOGuard::HandlingIOGuard
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void HandlingIOGuard(const HandlingIOGuard&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 321
      start: 321
    functionDepth: 0
    functionLinenumber: 321
    functionLinenumberEnd: 321
    functionName: dnsdist::tcp::HandlingIOGuard::HandlingIOGuard
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void HandlingIOGuard(HandlingIOGuard&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - HandlingIOGuard
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 322
      start: 322
    functionDepth: 0
    functionLinenumber: 322
    functionLinenumberEnd: 322
    functionName: '& operator=(const HandlingIOGuard& rhs)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: HandlingIOGuard
    signature: HandlingIOGuard & operator=(const HandlingIOGuard& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 323
      start: 323
    functionDepth: 0
    functionLinenumber: 323
    functionLinenumberEnd: 323
    functionName: '& operator=(HandlingIOGuard&&)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: HandlingIOGuard
    signature: HandlingIOGuard & operator=(HandlingIOGuard&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 327
      start: 324
    functionDepth: 0
    functionLinenumber: 324
    functionLinenumberEnd: 327
    functionName: ~HandlingIOGuard()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~HandlingIOGuard()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' handlingIO'
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 319
      start: 315
    functionDepth: 0
    functionLinenumber: 315
    functionLinenumberEnd: 319
    functionName: dnsdist::tcp::HandlingIOGuard::HandlingIOGuard
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void HandlingIOGuard(bool& handlingIO)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 320
      start: 320
    functionDepth: 0
    functionLinenumber: 320
    functionLinenumberEnd: 320
    functionName: dnsdist::tcp::HandlingIOGuard::HandlingIOGuard
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void HandlingIOGuard(const HandlingIOGuard&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 321
      start: 321
    functionDepth: 0
    functionLinenumber: 321
    functionLinenumberEnd: 321
    functionName: dnsdist::tcp::HandlingIOGuard::HandlingIOGuard
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void HandlingIOGuard(HandlingIOGuard&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - HandlingIOGuard
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 322
      start: 322
    functionDepth: 0
    functionLinenumber: 322
    functionLinenumberEnd: 322
    functionName: '& operator=(const HandlingIOGuard& rhs)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: HandlingIOGuard
    signature: HandlingIOGuard & operator=(const HandlingIOGuard& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 323
      start: 323
    functionDepth: 0
    functionLinenumber: 323
    functionLinenumberEnd: 323
    functionName: '& operator=(HandlingIOGuard&&)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: HandlingIOGuard
    signature: HandlingIOGuard & operator=(HandlingIOGuard&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 327
      start: 324
    functionDepth: 0
    functionLinenumber: 324
    functionLinenumberEnd: 327
    functionName: ~HandlingIOGuard()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~HandlingIOGuard()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.hh:52,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 3
    argNames:
    - ' name_'
    - policy_
    - isLua_
    argTypes:
    - std::string
    - policyfunc_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 51
    functionDepth: 0
    functionLinenumber: 51
    functionLinenumberEnd: 54
    functionName: ServerPolicy::ServerPolicy
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.hh
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void ServerPolicy(const std::string& name_, policyfunc_t policy_, bool
      isLua_)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.hh:57,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - ' name_'
    - policy_
    argTypes:
    - std::string
    - ffipolicyfunc_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 56
    functionDepth: 0
    functionLinenumber: 56
    functionLinenumberEnd: 59
    functionName: ServerPolicy::ServerPolicy
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.hh
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void ServerPolicy(const std::string& name_, ffipolicyfunc_t policy_)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 64
    functionDepth: 0
    functionLinenumber: 64
    functionLinenumberEnd: 66
    functionName: ServerPolicy::ServerPolicy
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ServerPolicy()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' backends'
    argTypes:
    - NumberedServerVector
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 71
    functionDepth: 0
    functionLinenumber: 71
    functionLinenumberEnd: 74
    functionName: ServerPolicy::SelectedBackend::SelectedBackend
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void SelectedBackend(const NumberedServerVector& backends)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.hh:78,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.hh:79,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.hh:79,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.hh:79,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.hh:79,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - selected
    argTypes:
    - SelectedServerPosition
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 76
    functionDepth: 0
    functionLinenumber: 76
    functionLinenumberEnd: 82
    functionName: ServerPolicy::SelectedBackend::setSelected
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.hh
    functionUses: 1
    functionsReached:
    - std::to_string
    - size
    - std::runtime_error
    linkageType: ''
    returnType: void
    signature: void setSelected(SelectedServerPosition selected)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: has_value
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.hh:86,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 84
    functionDepth: 0
    functionLinenumber: 84
    functionLinenumberEnd: 87
    functionName: operator bool() const noexcept
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.hh
    functionUses: 0
    functionsReached:
    - has_value
    linkageType: ''
    returnType: void
    signature: void operator bool() const noexcept
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: has_value
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.hh:91,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.hh:92,1
    - Dst: second::get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.hh:94,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 89
    functionDepth: 0
    functionLinenumber: 89
    functionLinenumberEnd: 95
    functionName: '* operator->() const'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.hh
    functionUses: 0
    functionsReached:
    - has_value
    - second::get
    - std::runtime_error
    linkageType: ''
    returnType: DownstreamState
    signature: DownstreamState * operator->() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 97
    functionDepth: 0
    functionLinenumber: 97
    functionLinenumberEnd: 100
    functionName: '& get() const'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::shared_ptr<DownstreamState>
    signature: std::shared_ptr<DownstreamState> & get() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 112
      start: 109
    functionDepth: 0
    functionLinenumber: 109
    functionLinenumberEnd: 112
    functionName: '& getName() const'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string & getName() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.hh:116,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 114
    functionDepth: 0
    functionLinenumber: 114
    functionLinenumberEnd: 117
    functionName: ServerPolicy::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.hh
    functionUses: 0
    functionsReached:
    - std::string
    linkageType: ''
    returnType: std::string
    signature: std::string toString() const
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-kvs.cc:29,1
    - Dst: std::shared_ptr<KeyValueStore>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-kvs.cc:31,1
    - Dst: std::shared_ptr<KeyValueStore>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-kvs.cc:33,1
    - Dst: LMDBKVStore::LMDBKVStore
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-kvs.cc:33,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-kvs.cc:38,1
    - Dst: std::shared_ptr<KeyValueStore>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-kvs.cc:40,1
    - Dst: std::shared_ptr<KeyValueStore>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-kvs.cc:42,1
    - Dst: CDBKVStore::CDBKVStore
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-kvs.cc:42,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-kvs.cc:48,1
    - Dst: std::shared_ptr<KeyValueLookupKey>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-kvs.cc:49,1
    - Dst: KeyValueLookupKeySourceIP::KeyValueLookupKeySourceIP
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-kvs.cc:49,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-kvs.cc:51,1
    - Dst: std::shared_ptr<KeyValueLookupKey>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-kvs.cc:52,1
    - Dst: KeyValueLookupKeyQName::KeyValueLookupKeyQName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-kvs.cc:52,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-kvs.cc:54,1
    - Dst: std::shared_ptr<KeyValueLookupKey>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-kvs.cc:55,1
    - Dst: KeyValueLookupKeySuffix::KeyValueLookupKeySuffix
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-kvs.cc:55,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-kvs.cc:57,1
    - Dst: std::shared_ptr<KeyValueLookupKey>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-kvs.cc:58,1
    - Dst: KeyValueLookupKeyTag::KeyValueLookupKeyTag
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-kvs.cc:58,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-kvs.cc:61,1
    - Dst: type
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-kvs.cc:67,1
    - Dst: typeid
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-kvs.cc:67,1
    - Dst: boost::get<ComboAddress>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-kvs.cc:68,1
    - Dst: KeyValueLookupKeySourceIP::getKeys
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-kvs.cc:70,1
    - Dst: getValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-kvs.cc:71,1
    - Dst: type
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-kvs.cc:76,1
    - Dst: typeid
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-kvs.cc:76,1
    - Dst: boost::get<DNSName>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-kvs.cc:77,1
    - Dst: KeyValueLookupKeyQName::getKeys
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-kvs.cc:79,1
    - Dst: getValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-kvs.cc:80,1
    - Dst: type
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-kvs.cc:85,1
    - Dst: typeid
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-kvs.cc:85,1
    - Dst: boost::get<std::string>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-kvs.cc:86,1
    - Dst: getValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-kvs.cc:87,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-kvs.cc:93,1
    - Dst: KeyValueLookupKeySuffix::getKeys
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-kvs.cc:100,1
    - Dst: getValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-kvs.cc:101,1
    - Dst: reload
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-kvs.cc:114,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 62
    argCount: 2
    argNames:
    - ' luaCtx'
    - client
    argTypes:
    - LuaContext
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 26
    functionDepth: 2
    functionLinenumber: 26
    functionLinenumberEnd: 117
    functionName: setupLuaBindingsKVS
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-kvs.cc
    functionUses: 1
    functionsReached:
    - KeyValueLookupKeySourceIP::KeyValueLookupKeySourceIP
    - boost::get<std::string>
    - getValue
    - std::string
    - LMDBKVStore::LMDBKVStore
    - KeyValueLookupKeyQName::KeyValueLookupKeyQName
    - std::shared_ptr<KeyValueLookupKey>
    - KeyValueLookupKeySuffix::KeyValueLookupKeySuffix
    - KeyValueLookupKeyQName::getKeys
    - boost::get<ComboAddress>
    - writeFunction
    - type
    - boost::get<DNSName>
    - KeyValueLookupKeySuffix::getKeys
    - KeyValueLookupKeySourceIP::getKeys
    - CDBKVStore::CDBKVStore
    - typeid
    - KeyValueLookupKeyTag::KeyValueLookupKeyTag
    - std::shared_ptr<KeyValueStore>
    - reload
    linkageType: ''
    returnType: void
    signature: void setupLuaBindingsKVS([[maybe_unused]] LuaContext& luaCtx, [[maybe_unused]]
      bool client)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:41,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:42,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:42,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:43,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:45,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:46,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:46,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:47,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:49,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:50,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:50,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:51,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:53,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:54,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:54,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:55,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:57,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 17
    argCount: 1
    argNames:
    - ' luaCtx'
    argTypes:
    - LuaContext
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 39
    functionDepth: 1
    functionLinenumber: 39
    functionLinenumberEnd: 61
    functionName: setupLuaBindingsLogging
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc
    functionUses: 2
    functionsReached:
    - errlog
    - SLOG
    - VERBOSESLOG
    - infolog
    - warnlog
    - dnsdist::logging::getTopLogger
    - writeFunction
    linkageType: ''
    returnType: void
    signature: void setupLuaBindingsLogging(LuaContext& luaCtx)
  - BBCount: 137
    BranchProfiles: []
    Callsites:
    - Dst: string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:67,1
    - Dst: std::rethrow_exception
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:70,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:74,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:86,1
    - Dst: std::make_shared<ServerPolicy>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:86,1
    - Dst: registerMember
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:87,1
    - Dst: registerMember
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:88,1
    - Dst: registerMember
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:89,1
    - Dst: registerMember
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:90,1
    - Dst: registerMember
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:91,1
    - Dst: registerMember
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:92,1
    - Dst: registerFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:93,1
    - Dst: registerFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:94,1
    - Dst: dnsdist::lbpolicies::getBuiltInPolicies
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:96,1
    - Dst: writeVariable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:97,1
    - Dst: dnsdist::configuration::updateRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:105,1
    - Dst: d_pools::find
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:106,1
    - Dst: d_pools::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:107,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:111,1
    - Dst: std::shared_ptr<DNSDistPacketCache>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:115,1
    - Dst: dnsdist::configuration::updateRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:118,1
    - Dst: d_pools::find
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:119,1
    - Dst: d_pools::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:121,1
    - Dst: dnsdist::configuration::updateRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:130,1
    - Dst: d_pools::find
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:131,1
    - Dst: d_pools::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:132,1
    - Dst: auto::second::packetCache::reset
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:136,1
    - Dst: dnsdist::configuration::updateRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:143,1
    - Dst: d_pools::find
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:144,1
    - Dst: d_pools::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:146,1
    - Dst: auto::second::getECS
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:147,1
    - Dst: dnsdist::configuration::updateRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:155,1
    - Dst: d_pools::find
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:156,1
    - Dst: d_pools::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:157,1
    - Dst: auto::second::setECS
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:161,1
    - Dst: dnsdist::configuration::updateRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:168,1
    - Dst: d_pools::find
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:169,1
    - Dst: d_pools::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:171,1
    - Dst: auto::second::getZeroScope
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:172,1
    - Dst: dnsdist::configuration::updateRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:180,1
    - Dst: d_pools::find
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:181,1
    - Dst: d_pools::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:182,1
    - Dst: auto::second::setZeroScope
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:186,1
    - Dst: QPSLimiter
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:196,1
    - Dst: d_qpsLimiter::reset
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:199,1
    - Dst: addServerToPool
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:205,1
    - Dst: d_config::pools::insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:206,1
    - Dst: removeServerFromPool
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:211,1
    - Dst: d_config::pools::erase
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:212,1
    - Dst: outstanding::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:217,1
    - Dst: reuseds::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:223,1
    - Dst: queries::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:229,1
    - Dst: getRelevantLatencyUsec
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:235,1
    - Dst: isUp
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:243,1
    - Dst: setDown
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:247,1
    - Dst: setUp
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:252,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:255,1
    - Dst: setUpStatus
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:269,1
    - Dst: setAuto
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:271,1
    - Dst: setUpStatus
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:278,1
    - Dst: setActiveAuto
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:280,1
    - Dst: setUpStatus
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:287,1
    - Dst: setLazyAuto
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:289,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:296,1
    - Dst: d_config::maxCheckFailures::store
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:297,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:299,1
    - Dst: d_config::minRiseSuccesses::store
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:300,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:302,1
    - Dst: d_config::checkTimeout::store
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:303,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:305,1
    - Dst: d_config::checkInterval::store
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:306,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:309,1
    - Dst: getName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:314,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:316,1
    - Dst: getNameWithAddr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:321,1
    - Dst: upStatus::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:329,1
    - Dst: upStatus::store
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:333,1
    - Dst: setWeight
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:346,1
    - Dst: registerMember
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:362,1
    - Dst: getName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:368,1
    - Dst: setName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:372,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:375,1
    - Dst: libssl_tls_version_to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:379,1
    - Dst: dnsdist::configuration::isImmutableConfigurationDone
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:385,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:386,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:389,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:436,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:457,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:457,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:458,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:459,1
    - Dst: memset
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:461,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:463,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:463,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:463,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:465,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:467,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:469,1
    - Dst: memset
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:471,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:473,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:473,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:473,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:475,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:477,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:479,1
    - Dst: string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:481,1
    - Dst: toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:481,1
    - Dst: string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:482,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:482,1
    - Dst: string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:483,1
    - Dst: toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:483,1
    - Dst: string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:484,1
    - Dst: toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:484,1
    - Dst: string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:485,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:485,1
    - Dst: string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:486,1
    - Dst: toByteString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:486,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:487,1
    - Dst: truncate
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:488,1
    - Dst: isMappedIPv4
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:491,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:492,1
    - Dst: mapToIPv4
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:492,1
    - Dst: match
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:494,1
    - Dst: registerFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:500,1
    - Dst: chopOff
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:501,1
    - Dst: std::holds_alternative<DNSName>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:503,1
    - Dst: std::get<DNSName>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:504,1
    - Dst: std::holds_alternative<string>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:506,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:507,1
    - Dst: std::get<std::string>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:507,1
    - Dst: std::holds_alternative<DNSName>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:511,1
    - Dst: std::get<DNSName>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:512,1
    - Dst: std::holds_alternative<string>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:514,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:515,1
    - Dst: std::get<std::string>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:515,1
    - Dst: registerFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:518,1
    - Dst: countLabels
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:518,1
    - Dst: hash
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:519,1
    - Dst: wirelength
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:520,1
    - Dst: string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:521,1
    - Dst: toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:521,1
    - Dst: string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:522,1
    - Dst: toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:522,1
    - Dst: string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:523,1
    - Dst: toStringNoDot
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:523,1
    - Dst: string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:524,1
    - Dst: toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:524,1
    - Dst: string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:525,1
    - Dst: toDNSString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:525,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:526,1
    - Dst: makeRelative
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:526,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:527,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:527,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:528,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:528,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:528,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:528,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:529,1
    - Dst: SuffixMatchNode
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:529,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:530,1
    - Dst: DNSNameSet
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:530,1
    - Dst: string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:533,1
    - Dst: toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:533,1
    - Dst: string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:534,1
    - Dst: toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:534,1
    - Dst: insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:535,1
    - Dst: find
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:536,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:536,1
    - Dst: registerFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:538,1
    - Dst: registerFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:539,1
    - Dst: registerFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:540,1
    - Dst: registerFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:541,1
    - Dst: type
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:548,1
    - Dst: typeid
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:548,1
    - Dst: boost::get<DNSName>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:549,1
    - Dst: add
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:550,1
    - Dst: type
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:553,1
    - Dst: typeid
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:553,1
    - Dst: boost::get<std::string>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:554,1
    - Dst: add
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:555,1
    - Dst: type
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:558,1
    - Dst: typeid
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:558,1
    - Dst: boost::get<LuaArray<DNSName>>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:559,1
    - Dst: add
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:561,1
    - Dst: type
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:565,1
    - Dst: typeid
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:565,1
    - Dst: boost::get<LuaArray<string>>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:566,1
    - Dst: add
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:568,1
    - Dst: type
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:574,1
    - Dst: typeid
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:574,1
    - Dst: boost::get<DNSName>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:575,1
    - Dst: remove
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:576,1
    - Dst: type
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:579,1
    - Dst: typeid
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:579,1
    - Dst: boost::get<string>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:580,1
    - Dst: remove
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:582,1
    - Dst: type
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:585,1
    - Dst: typeid
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:585,1
    - Dst: boost::get<LuaArray<DNSName>>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:586,1
    - Dst: remove
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:588,1
    - Dst: type
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:592,1
    - Dst: typeid
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:592,1
    - Dst: boost::get<LuaArray<std::string>>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:593,1
    - Dst: remove
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:596,1
    - Dst: registerFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:603,1
    - Dst: std::optional<DNSName>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:605,1
    - Dst: getBestMatch
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:607,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:617,1
    - Dst: type
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:618,1
    - Dst: typeid
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:618,1
    - Dst: boost::get<ComboAddress>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:619,1
    - Dst: Netmask
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:621,1
    - Dst: Netmask
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:623,1
    - Dst: type
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:625,1
    - Dst: typeid
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:625,1
    - Dst: boost::get<std::string>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:626,1
    - Dst: Netmask
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:627,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:629,1
    - Dst: registerFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:631,1
    - Dst: registerFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:632,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:633,1
    - Dst: getNetwork
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:633,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:634,1
    - Dst: getMaskedNetwork
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:634,1
    - Dst: registerFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:635,1
    - Dst: registerFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:636,1
    - Dst: registerFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:637,1
    - Dst: registerFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:638,1
    - Dst: registerFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:640,1
    - Dst: registerFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:642,1
    - Dst: registerFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:643,1
    - Dst: registerEqFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:644,1
    - Dst: registerToStringFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:645,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:648,1
    - Dst: NetmaskGroup
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:648,1
    - Dst: addMask
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:650,1
    - Dst: toStringVector
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:654,1
    - Dst: addMask
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:656,1
    - Dst: addMask
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:661,1
    - Dst: Netmask
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:661,1
    - Dst: registerFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:666,1
    - Dst: registerFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:668,1
    - Dst: registerFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:669,1
    - Dst: string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:670,1
    - Dst: toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:670,1
    - Dst: string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:671,1
    - Dst: toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:671,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:676,1
    - Dst: QPSLimiter
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:676,1
    - Dst: registerFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:677,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:682,1
    - Dst: setLuaNoSideEffect
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:683,1
    - Dst: local::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:684,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:686,1
    - Dst: setLuaNoSideEffect
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:687,1
    - Dst: local::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:688,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:690,1
    - Dst: setLuaNoSideEffect
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:691,1
    - Dst: getType
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:692,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:694,1
    - Dst: setLuaNoSideEffect
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:695,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:697,1
    - Dst: tlsFrontend::getRequestedProvider
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:700,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:703,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:705,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:707,1
    - Dst: setLuaNoSideEffect
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:708,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:710,1
    - Dst: tlsFrontend::getEffectiveProvider
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:713,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:716,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:718,1
    - Dst: registerMember
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:720,1
    - Dst: attachFilter
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:724,1
    - Dst: getSocket
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:724,1
    - Dst: detachFilter
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:728,1
    - Dst: getSocket
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:728,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:736,1
    - Dst: std::shared_ptr<BPFFilter>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:738,1
    - Dst: count
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:745,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:746,1
    - Dst: type
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:747,1
    - Dst: typeid
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:747,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:748,1
    - Dst: boost::get<uint32_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:750,1
    - Dst: count
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:754,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:755,1
    - Dst: type
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:756,1
    - Dst: typeid
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:756,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:757,1
    - Dst: boost::get<string>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:759,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:760,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:762,1
    - Dst: convertParamsToConfig
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:765,1
    - Dst: convertParamsToConfig
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:766,1
    - Dst: convertParamsToConfig
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:767,1
    - Dst: convertParamsToConfig
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:768,1
    - Dst: convertParamsToConfig
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:769,1
    - Dst: count
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:773,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:774,1
    - Dst: type
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:775,1
    - Dst: typeid
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:775,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:776,1
    - Dst: boost::get<bool>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:778,1
    - Dst: std::make_shared<BPFFilter>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:784,1
    - Dst: block
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:790,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:805,1
    - Dst: block
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:807,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:826,1
    - Dst: addRangeRule
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:828,1
    - Dst: Netmask
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:828,1
    - Dst: block
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:833,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:848,1
    - Dst: block
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:850,1
    - Dst: unblock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:856,1
    - Dst: rmRangeRule
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:863,1
    - Dst: Netmask
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:863,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:865,1
    - Dst: setLuaNoSideEffect
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:866,1
    - Dst: getRangeRule
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:871,1
    - Dst: first::isIPv4
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:873,1
    - Dst: BPFFilter::toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:874,1
    - Dst: first::toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:874,1
    - Dst: first::isIPv6
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:876,1
    - Dst: BPFFilter::toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:877,1
    - Dst: first::toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:877,1
    - Dst: unblock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:884,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:888,1
    - Dst: setLuaNoSideEffect
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:889,1
    - Dst: getAddrStats
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:892,1
    - Dst: first::toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:895,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:895,1
    - Dst: first::toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:898,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:898,1
    - Dst: getRangeRule
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:901,1
    - Dst: first::isIPv4
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:903,1
    - Dst: BPFFilter::toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:904,1
    - Dst: first::toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:904,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:904,1
    - Dst: first::isIPv6
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:906,1
    - Dst: BPFFilter::toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:907,1
    - Dst: first::toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:907,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:907,1
    - Dst: getQNameStats
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:910,1
    - Dst: std::get<0>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:912,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:912,1
    - Dst: std::get<1>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:912,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:912,1
    - Dst: std::get<2>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:912,1
    - Dst: dnsdist::configuration::isImmutableConfigurationDone
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:920,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:921,1
    - Dst: dnsdist::getFrontends
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:925,1
    - Dst: attachFilter
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:926,1
    - Dst: getSocket
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:926,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:931,1
    - Dst: std::shared_ptr<DynBPFFilter>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:933,1
    - Dst: std::make_shared<DynBPFFilter>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:935,1
    - Dst: clock_gettime
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:941,1
    - Dst: block
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:943,1
    - Dst: clock_gettime
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:950,1
    - Dst: purgeExpired
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:951,1
    - Dst: type
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:960,1
    - Dst: typeid
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:960,1
    - Dst: boost::get<LuaArray<std::string>>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:961,1
    - Dst: excludeRange
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:962,1
    - Dst: Netmask
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:962,1
    - Dst: excludeRange
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:966,1
    - Dst: Netmask
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:966,1
    - Dst: boost::get<std::string>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:966,1
    - Dst: type
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:975,1
    - Dst: typeid
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:975,1
    - Dst: boost::get<LuaArray<std::string>>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:976,1
    - Dst: includeRange
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:977,1
    - Dst: Netmask
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:977,1
    - Dst: includeRange
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:981,1
    - Dst: Netmask
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:981,1
    - Dst: boost::get<std::string>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:981,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:987,1
    - Dst: dnsdist::configuration::isImmutableConfigurationDone
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:988,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:989,1
    - Dst: std::shared_ptr<XskSocket>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:992,1
    - Dst: count
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:998,1
    - Dst: boost::get<std::string>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:999,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:999,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:1002,1
    - Dst: count
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:1004,1
    - Dst: boost::get<uint32_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:1005,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:1005,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:1008,1
    - Dst: count
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:1010,1
    - Dst: boost::get<uint32_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:1011,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:1011,1
    - Dst: count
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:1013,1
    - Dst: boost::get<std::string>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:1014,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:1014,1
    - Dst: std::make_shared<XskSocket>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:1016,1
    - Dst: push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:1017,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:1020,1
    - Dst: getMetrics
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:1024,1
    - Dst: values::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:1029,1
    - Dst: std::vector<string>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:1031,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:1035,1
    - Dst: checkParameterBound
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:1036,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:1036,1
    - Dst: LuaAssociativeTable<std::string>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:1039,1
    - Dst: boost::to_lower_copy
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:1041,1
    - Dst: std::make_shared<DOHResponseMapEntry>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:1044,1
    - Dst: PacketBuffer
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:1044,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:1044,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:1044,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:1047,1
    - Dst: checkParameterBound
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:1048,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:1048,1
    - Dst: parseSVCParameters
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:1051,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:1054,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:1059,1
    - Dst: getListOfNetworkInterfaces
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:1061,1
    - Dst: LuaArray::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:1064,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:1069,1
    - Dst: getListOfAddressesOfNetworkInterface
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:1071,1
    - Dst: LuaArray::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:1074,1
    - Dst: toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:1074,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:1079,1
    - Dst: getListOfRangesOfNetworkInterface
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:1081,1
    - Dst: LuaArray::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:1084,1
    - Dst: toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:1084,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:1089,1
    - Dst: getMACAddress
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:1090,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:1090,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:1093,1
    - Dst: gettime
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:1095,1
    - Dst: unixDie
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:1096,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:1101,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:1105,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:1105,1
    - Dst: LuaArray::reserve
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:1107,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:1107,1
    - Dst: LuaArray::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:1109,1
    - Dst: LuaArray::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:1109,1
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:1112,1
    - Dst: callback
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:1114,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:1117,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:1117,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:1117,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:1118,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:1118,1
    - Dst: dnsdist::handleQueuedAsynchronousEvents
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:1123,1
    - Dst: std::thread::detach
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:1126,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:1129,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:1130,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:1133,1
    - Dst: dnsdist::configuration::refreshLocalRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc:1134,1
    CyclomaticComplexity: 176
    EdgeCount: 176
    ICount: 918
    argCount: 3
    argNames:
    - ' luaCtx'
    - client
    - configCheck
    argTypes:
    - LuaContext
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1136
      start: 64
    functionDepth: 3
    functionLinenumber: 64
    functionLinenumberEnd: 1136
    functionName: setupLuaBindings
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc
    functionUses: 1
    functionsReached:
    - add
    - d_pools::end
    - ntohs
    - dnsdist::lbpolicies::getBuiltInPolicies
    - outstanding::load
    - getMaskedNetwork
    - queries::load
    - upStatus::load
    - toStringNoDot
    - std::make_shared<XskSocket>
    - detachFilter
    - libssl_tls_version_to_string
    - std::string
    - boost::get<string>
    - std::make_shared<DynBPFFilter>
    - rmRangeRule
    - getOptionalValue
    - lock
    - std::make_shared<DOHResponseMapEntry>
    - setName
    - getNameWithAddr
    - type
    - std::shared_ptr<BPFFilter>
    - std::get<2>
    - tlsFrontend::getRequestedProvider
    - addServerToPool
    - VERBOSESLOG
    - chopOff
    - gettime
    - std::make_shared<ServerPolicy>
    - toStringWithPort
    - ComboAddress
    - LuaArray::reserve
    - LuaArray::size
    - infolog
    - auto::second::setZeroScope
    - d_config::checkInterval::store
    - getBestMatch
    - LuaArray::emplace_back
    - dnsdist::handleQueuedAsynchronousEvents
    - getRangeRule
    - d_qpsLimiter::reset
    - setActiveAuto
    - toString
    - wirelength
    - getMetrics
    - LuaAssociativeTable<std::string>
    - boost::get<std::string>
    - addMask
    - attachFilter
    - getListOfNetworkInterfaces
    - std::shared_ptr<XskSocket>
    - unixDie
    - unblock
    - string
    - size
    - mapToIPv4
    - boost::get<LuaArray<string>>
    - memset
    - getSocket
    - getNetwork
    - convertParamsToConfig
    - excludeRange
    - std::vector<string>
    - boost::get<DNSName>
    - std::rethrow_exception
    - std::holds_alternative<DNSName>
    - std::runtime_error
    - parseSVCParameters
    - QPSLimiter
    - DNSName
    - boost::get<LuaArray<DNSName>>
    - toByteString
    - checkParameterBound
    - d_pools::find
    - truncate
    - getMACAddress
    - toStringVector
    - typeid
    - auto::second::getECS
    - isMappedIPv4
    - setWeight
    - end
    - boost::get<LuaArray<std::string>>
    - std::get<0>
    - std::get<1>
    - std::get<DNSName>
    - callback
    - makeRelative
    - d_config::checkTimeout::store
    - removeServerFromPool
    - dnsdist::configuration::updateRuntimeConfiguration
    - setDown
    - writeVariable
    - std::shared_ptr<DNSDistPacketCache>
    - auto::second::packetCache::reset
    - find
    - remove
    - countLabels
    - tlsFrontend::getEffectiveProvider
    - getAddrStats
    - match
    - registerMember
    - local::toStringWithPort
    - boost::get<ComboAddress>
    - std::make_shared<BPFFilter>
    - first::toString
    - values::size
    - boost::to_lower_copy
    - dnsdist::logging::getTopLogger
    - SuffixMatchNode
    - getType
    - at
    - htons
    - Netmask
    - dnsdist::configuration::getCurrentRuntimeConfiguration
    - push_back
    - registerFunction
    - getQNameStats
    - d_config::minRiseSuccesses::store
    - memcpy
    - std::move
    - std::get<std::string>
    - count
    - d_config::maxCheckFailures::store
    - dnsdist::getFrontends
    - PacketBuffer
    - std::thread::detach
    - d_config::pools::insert
    - clock_gettime
    - getListOfAddressesOfNetworkInterface
    - dnsdist::configuration::refreshLocalRuntimeConfiguration
    - getListOfRangesOfNetworkInterface
    - d_config::pools::erase
    - std::to_string
    - dnsdist::configuration::isImmutableConfigurationDone
    - first::isIPv6
    - upStatus::store
    - std::holds_alternative<string>
    - setAuto
    - insert
    - addRangeRule
    - NetmaskGroup
    - getName
    - first::isIPv4
    - BPFFilter::toString
    - setLazyAuto
    - toDNSString
    - auto::second::setECS
    - begin
    - c_str
    - includeRange
    - writeFunction
    - auto::second::getZeroScope
    - pdns::max
    - hash
    - getRelevantLatencyUsec
    - registerEqFunction
    - setLuaNoSideEffect
    - setUpStatus
    - purgeExpired
    - isUp
    - std::shared_ptr<DynBPFFilter>
    - setUp
    - DNSNameSet
    - boost::get<uint32_t>
    - reuseds::load
    - block
    - what
    - registerToStringFunction
    - std::optional<DNSName>
    - boost::get<bool>
    linkageType: ''
    returnType: void
    signature: void setupLuaBindings(LuaContext& luaCtx, bool client, bool configCheck)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/channel.cc:29,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 1
    argNames:
    - ' descriptor'
    argTypes:
    - FDWrapper
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 31
      start: 28
    functionDepth: 0
    functionLinenumber: 28
    functionLinenumberEnd: 31
    functionName: pdns::channel::Notifier::Notifier
    functionSourceFile: /src/pdns/pdns/dnsdistdist/channel.cc
    functionUses: 2
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void Notifier::Notifier(FDWrapper&& descriptor)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: write
      Src: /src/pdns/pdns/dnsdistdist/channel.cc:37,1
    - Dst: getHandle
      Src: /src/pdns/pdns/dnsdistdist/channel.cc:37,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/channel.cc:39,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/channel.cc:48,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/channel.cc:48,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 33
    functionDepth: 0
    functionLinenumber: 33
    functionLinenumberEnd: 52
    functionName: pdns::channel::Notifier::notify
    functionSourceFile: /src/pdns/pdns/dnsdistdist/channel.cc
    functionUses: 10
    functionsReached:
    - stringerror
    - write
    - getHandle
    - std::runtime_error
    linkageType: ''
    returnType: bool
    signature: bool Notifier::notify() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/channel.cc:55,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - ' descriptor'
    - throwOnEOF
    argTypes:
    - FDWrapper
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 54
    functionDepth: 0
    functionLinenumber: 54
    functionLinenumberEnd: 57
    functionName: pdns::channel::Waiter::Waiter
    functionSourceFile: /src/pdns/pdns/dnsdistdist/channel.cc
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void Waiter::Waiter(FDWrapper&& descriptor, bool throwOnEOF)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: read
      Src: /src/pdns/pdns/dnsdistdist/channel.cc:64,1
    - Dst: getHandle
      Src: /src/pdns/pdns/dnsdistdist/channel.cc:64,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/channel.cc:70,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/channel.cc:79,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/channel.cc:79,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 20
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 59
    functionDepth: 0
    functionLinenumber: 59
    functionLinenumberEnd: 82
    functionName: pdns::channel::Waiter::clear
    functionSourceFile: /src/pdns/pdns/dnsdistdist/channel.cc
    functionUses: 0
    functionsReached:
    - stringerror
    - getHandle
    - read
    - std::runtime_error
    linkageType: ''
    returnType: void
    signature: void Waiter::clear()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getHandle
      Src: /src/pdns/pdns/dnsdistdist/channel.cc:86,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 84
    functionDepth: 0
    functionLinenumber: 84
    functionLinenumberEnd: 87
    functionName: pdns::channel::Waiter::getDescriptor
    functionSourceFile: /src/pdns/pdns/dnsdistdist/channel.cc
    functionUses: 0
    functionsReached:
    - getHandle
    linkageType: ''
    returnType: int
    signature: int Waiter::getDescriptor() const
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pipe
      Src: /src/pdns/pdns/dnsdistdist/channel.cc:92,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/dnsdistdist/channel.cc:92,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/channel.cc:93,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/channel.cc:93,1
    - Dst: setNonBlocking
      Src: /src/pdns/pdns/dnsdistdist/channel.cc:99,1
    - Dst: FDWrapper::getHandle
      Src: /src/pdns/pdns/dnsdistdist/channel.cc:99,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/channel.cc:101,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/channel.cc:101,1
    - Dst: setNonBlocking
      Src: /src/pdns/pdns/dnsdistdist/channel.cc:104,1
    - Dst: FDWrapper::getHandle
      Src: /src/pdns/pdns/dnsdistdist/channel.cc:104,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/channel.cc:106,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/channel.cc:106,1
    - Dst: getPipeBufferSize
      Src: /src/pdns/pdns/dnsdistdist/channel.cc:109,1
    - Dst: FDWrapper::getHandle
      Src: /src/pdns/pdns/dnsdistdist/channel.cc:109,1
    - Dst: setPipeBufferSize
      Src: /src/pdns/pdns/dnsdistdist/channel.cc:110,1
    - Dst: FDWrapper::getHandle
      Src: /src/pdns/pdns/dnsdistdist/channel.cc:110,1
    - Dst: Notifier
      Src: /src/pdns/pdns/dnsdistdist/channel.cc:113,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/channel.cc:113,1
    - Dst: Waiter
      Src: /src/pdns/pdns/dnsdistdist/channel.cc:113,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/channel.cc:113,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 14
    argCount: 3
    argNames:
    - nonBlocking
    - pipeBufferSize
    - throwOnEOF
    argTypes:
    - bool
    - size_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 89
    functionDepth: 0
    functionLinenumber: 89
    functionLinenumberEnd: 114
    functionName: pdns::channel::createNotificationQueue
    functionSourceFile: /src/pdns/pdns/dnsdistdist/channel.cc
    functionUses: 3
    functionsReached:
    - std::move
    - Notifier
    - FDWrapper::getHandle
    - std::runtime_error
    - setNonBlocking
    - stringerror
    - Waiter
    - pipe
    - setPipeBufferSize
    - getPipeBufferSize
    - std::array::data
    linkageType: ''
    returnType: std::pair<Notifier, Waiter>
    signature: std::pair<Notifier, Waiter> createNotificationQueue(bool nonBlocking,
      size_t pipeBufferSize, bool throwOnEOF)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/channel.cc:29,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 1
    argNames:
    - ' descriptor'
    argTypes:
    - FDWrapper
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 31
      start: 28
    functionDepth: 0
    functionLinenumber: 28
    functionLinenumberEnd: 31
    functionName: pdns::channel::Notifier::Notifier
    functionSourceFile: /src/pdns/pdns/dnsdistdist/channel.cc
    functionUses: 2
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void Notifier::Notifier(FDWrapper&& descriptor)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: write
      Src: /src/pdns/pdns/dnsdistdist/channel.cc:37,1
    - Dst: getHandle
      Src: /src/pdns/pdns/dnsdistdist/channel.cc:37,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/channel.cc:39,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/channel.cc:48,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/channel.cc:48,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 33
    functionDepth: 0
    functionLinenumber: 33
    functionLinenumberEnd: 52
    functionName: pdns::channel::Notifier::notify
    functionSourceFile: /src/pdns/pdns/dnsdistdist/channel.cc
    functionUses: 10
    functionsReached:
    - stringerror
    - write
    - getHandle
    - std::runtime_error
    linkageType: ''
    returnType: bool
    signature: bool Notifier::notify() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/channel.cc:55,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - ' descriptor'
    - throwOnEOF
    argTypes:
    - FDWrapper
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 54
    functionDepth: 0
    functionLinenumber: 54
    functionLinenumberEnd: 57
    functionName: pdns::channel::Waiter::Waiter
    functionSourceFile: /src/pdns/pdns/dnsdistdist/channel.cc
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void Waiter::Waiter(FDWrapper&& descriptor, bool throwOnEOF)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: read
      Src: /src/pdns/pdns/dnsdistdist/channel.cc:64,1
    - Dst: getHandle
      Src: /src/pdns/pdns/dnsdistdist/channel.cc:64,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/channel.cc:70,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/channel.cc:79,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/channel.cc:79,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 20
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 59
    functionDepth: 0
    functionLinenumber: 59
    functionLinenumberEnd: 82
    functionName: pdns::channel::Waiter::clear
    functionSourceFile: /src/pdns/pdns/dnsdistdist/channel.cc
    functionUses: 0
    functionsReached:
    - stringerror
    - getHandle
    - read
    - std::runtime_error
    linkageType: ''
    returnType: void
    signature: void Waiter::clear()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getHandle
      Src: /src/pdns/pdns/dnsdistdist/channel.cc:86,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 84
    functionDepth: 0
    functionLinenumber: 84
    functionLinenumberEnd: 87
    functionName: pdns::channel::Waiter::getDescriptor
    functionSourceFile: /src/pdns/pdns/dnsdistdist/channel.cc
    functionUses: 0
    functionsReached:
    - getHandle
    linkageType: ''
    returnType: int
    signature: int Waiter::getDescriptor() const
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pipe
      Src: /src/pdns/pdns/dnsdistdist/channel.cc:92,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/dnsdistdist/channel.cc:92,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/channel.cc:93,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/channel.cc:93,1
    - Dst: setNonBlocking
      Src: /src/pdns/pdns/dnsdistdist/channel.cc:99,1
    - Dst: FDWrapper::getHandle
      Src: /src/pdns/pdns/dnsdistdist/channel.cc:99,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/channel.cc:101,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/channel.cc:101,1
    - Dst: setNonBlocking
      Src: /src/pdns/pdns/dnsdistdist/channel.cc:104,1
    - Dst: FDWrapper::getHandle
      Src: /src/pdns/pdns/dnsdistdist/channel.cc:104,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/channel.cc:106,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/channel.cc:106,1
    - Dst: getPipeBufferSize
      Src: /src/pdns/pdns/dnsdistdist/channel.cc:109,1
    - Dst: FDWrapper::getHandle
      Src: /src/pdns/pdns/dnsdistdist/channel.cc:109,1
    - Dst: setPipeBufferSize
      Src: /src/pdns/pdns/dnsdistdist/channel.cc:110,1
    - Dst: FDWrapper::getHandle
      Src: /src/pdns/pdns/dnsdistdist/channel.cc:110,1
    - Dst: Notifier
      Src: /src/pdns/pdns/dnsdistdist/channel.cc:113,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/channel.cc:113,1
    - Dst: Waiter
      Src: /src/pdns/pdns/dnsdistdist/channel.cc:113,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/channel.cc:113,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 14
    argCount: 3
    argNames:
    - nonBlocking
    - pipeBufferSize
    - throwOnEOF
    argTypes:
    - bool
    - size_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 89
    functionDepth: 0
    functionLinenumber: 89
    functionLinenumberEnd: 114
    functionName: pdns::channel::createNotificationQueue
    functionSourceFile: /src/pdns/pdns/dnsdistdist/channel.cc
    functionUses: 3
    functionsReached:
    - std::move
    - Notifier
    - FDWrapper::getHandle
    - std::runtime_error
    - setNonBlocking
    - stringerror
    - Waiter
    - pipe
    - setPipeBufferSize
    - getPipeBufferSize
    - std::array::data
    linkageType: ''
    returnType: std::pair<Notifier, Waiter>
    signature: std::pair<Notifier, Waiter> createNotificationQueue(bool nonBlocking,
      size_t pipeBufferSize, bool throwOnEOF)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 95
    functionDepth: 0
    functionLinenumber: 95
    functionLinenumberEnd: 102
    functionName: setLuaNoSideEffect
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc
    functionUses: 7
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setLuaNoSideEffect()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 107
      start: 104
    functionDepth: 0
    functionLinenumber: 104
    functionLinenumberEnd: 107
    functionName: setLuaSideEffect
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc
    functionUses: 13
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setLuaSideEffect()
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 109
    functionDepth: 0
    functionLinenumber: 109
    functionLinenumberEnd: 116
    functionName: getLuaNoSideEffect
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool getLuaNoSideEffect()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 118
    functionDepth: 0
    functionLinenumber: 118
    functionLinenumberEnd: 121
    functionName: resetLuaSideEffect
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void resetLuaSideEffect()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:125,1
    - Dst: auto::withValues
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:126,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:126,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - context
    argTypes:
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 127
      start: 123
    functionDepth: 1
    functionLinenumber: 123
    functionLinenumberEnd: 127
    functionName: getLogger
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc
    functionUses: 115
    functionsReached:
    - auto::withValues
    - dnsdist::logging::getTopLogger
    - Logging::Loggable
    linkageType: ''
    returnType: std::shared_ptr<const Logr::Logger>
    signature: std::shared_ptr<const Logr::Logger> getLogger(const std::string_view
      context)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:136,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:137,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:138,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:139,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:140,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:141,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:142,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:143,1
    - Dst: insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:145,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 9
    argNames:
    - ' vars'
    - ' reusePort'
    - ' tcpFastOpenQueueSize'
    - ' interface'
    - ' cpus'
    - ' tcpListenQueueSize'
    - ' maxInFlightQueriesPerConnection'
    - ' tcpMaxConcurrentConnections'
    - ' enableProxyProtocol'
    argTypes:
    - std::optional<localbind_t>
    - bool
    - int
    - std::string
    - std::set<int>
    - int
    - uint64_t
    - uint64_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 149
      start: 131
    functionDepth: 2
    functionLinenumber: 131
    functionLinenumberEnd: 149
    functionName: parseLocalBindVars
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc
    functionUses: 0
    functionsReached:
    - insert
    - getOptionalValue
    linkageType: ''
    returnType: void
    signature: void parseLocalBindVars(std::optional<localbind_t>& vars, bool& reusePort,
      int& tcpFastOpenQueueSize, std::string& interface, std::set<int>& cpus, int&
      tcpListenQueueSize, uint64_t& maxInFlightQueriesPerConnection, uint64_t& tcpMaxConcurrentConnections,
      bool& enableProxyProtocol)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:157,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - ' vars'
    - ' socket'
    argTypes:
    - std::optional<localbind_t>
    - std::shared_ptr<XskSocket>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 158
      start: 151
    functionDepth: 2
    functionLinenumber: 151
    functionLinenumberEnd: 158
    functionName: parseXskVars
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc
    functionUses: 0
    functionsReached:
    - getOptionalValue
    linkageType: ''
    returnType: void
    signature: void parseXskVars(std::optional<localbind_t>& vars, std::shared_ptr<XskSocket>&
      socket)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: type
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:164,1
    - Dst: typeid
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:164,1
    - Dst: type
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:164,1
    - Dst: typeid
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:164,1
    - Dst: boost::get<std::string>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:165,1
    - Dst: boost::get<std::string>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:166,1
    - Dst: clear
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:167,1
    - Dst: emplace_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:168,1
    - Dst: type
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:170,1
    - Dst: typeid
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:170,1
    - Dst: boost::get<std::shared_ptr<TLSCertKeyPair>>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:171,1
    - Dst: clear
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:172,1
    - Dst: emplace_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:173,1
    - Dst: type
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:175,1
    - Dst: typeid
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:175,1
    - Dst: boost::get<LuaArray<std::shared_ptr<TLSCertKeyPair>>>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:176,1
    - Dst: clear
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:177,1
    - Dst: emplace_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:179,1
    - Dst: type
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:182,1
    - Dst: typeid
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:182,1
    - Dst: type
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:182,1
    - Dst: typeid
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:182,1
    - Dst: boost::get<LuaArray<std::string>>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:183,1
    - Dst: boost::get<LuaArray<std::string>>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:184,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:185,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:185,1
    - Dst: clear
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:186,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:187,1
    - Dst: emplace_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:188,1
    - Dst: auto::at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:188,1
    - Dst: auto::at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:188,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:192,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:192,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:193,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:199,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:199,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:200,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 31
    argCount: 4
    argNames:
    - ' context'
    - ' pairs'
    - ' certFiles'
    - ' keyFiles'
    argTypes:
    - std::string
    - std::vector<TLSCertKeyPair>
    - boost::variant<std::string, std::shared_ptr<TLSCertKeyPair>, LuaArray<std::string>,
      LuaArray<std::shared_ptr<TLSCertKeyPair>>>
    - LuaTypeOrArrayOf<std::string>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 206
      start: 162
    functionDepth: 1
    functionLinenumber: 162
    functionLinenumberEnd: 206
    functionName: loadTLSCertificateAndKeys
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc
    functionUses: 0
    functionsReached:
    - errlog
    - SLOG
    - typeid
    - boost::get<std::shared_ptr<TLSCertKeyPair>>
    - boost::get<LuaArray<std::string>>
    - boost::get<std::string>
    - boost::get<LuaArray<std::shared_ptr<TLSCertKeyPair>>>
    - auto::at
    - emplace_back
    - clear
    - auto::size
    - type
    - getLogger
    linkageType: ''
    returnType: bool
    signature: bool loadTLSCertificateAndKeys(const std::string& context, std::vector<TLSCertKeyPair>&
      pairs, const boost::variant<std::string, std::shared_ptr<TLSCertKeyPair>, LuaArray<std::string>,
      LuaArray<std::shared_ptr<TLSCertKeyPair>>>& certFiles, const LuaTypeOrArrayOf<std::string>&
      keyFiles)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:210,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:211,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:215,1
    - Dst: libssl_tls_version_from_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:216,1
    - Dst: erase
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:219,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:220,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:220,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:221,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:224,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:225,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:226,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:227,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:228,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:229,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:231,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:233,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:233,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:234,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:234,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:235,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:243,1
    - Dst: d_ocspFiles::push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:245,1
    - Dst: count
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:249,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:251,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:253,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:253,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:254,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:259,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:260,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:261,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:262,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:263,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 36
    argCount: 3
    argNames:
    - ' config'
    - ' context'
    - ' vars'
    argTypes:
    - TLSConfig
    - std::string
    - std::optional<localbind_t>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 264
      start: 208
    functionDepth: 2
    functionLinenumber: 208
    functionLinenumberEnd: 264
    functionName: parseTLSConfig
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc
    functionUses: 0
    functionsReached:
    - errlog
    - getLogger
    - SLOG
    - std::to_string
    - Logging::Loggable
    - count
    - warnlog
    - getOptionalValue
    - d_ocspFiles::push_back
    - erase
    - libssl_tls_version_from_string
    linkageType: ''
    returnType: void
    signature: void parseTLSConfig(TLSConfig& config, const std::string& context,
      std::optional<localbind_t>& vars)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:271,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:271,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:271,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 3
    argNames:
    - ' parameter'
    - value
    - max
    argTypes:
    - std::string
    - uint64_t
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 273
      start: 268
    functionDepth: 0
    functionLinenumber: 268
    functionLinenumberEnd: 273
    functionName: checkParameterBound
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc
    functionUses: 4
    functionsReached:
    - std::to_string
    - std::runtime_error
    linkageType: ''
    returnType: void
    signature: void checkParameterBound(const std::string& parameter, uint64_t value,
      uint64_t max)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: setThreadName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:277,1
    - Dst: sigemptyset
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:283,1
    - Dst: sigaddset
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:284,1
    - Dst: pthread_sigmask
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:286,1
    - Dst: LuaContext::writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:290,1
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:291,1
    - Dst: auto::readVariable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:293,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:295,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:295,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:298,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:298,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:299,1
    - Dst: dnsdist::configuration::refreshLocalRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:307,1
    - Dst: LuaContext::executeCode
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:308,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:309,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:309,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:310,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:313,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:313,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:313,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:314,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:314,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:317,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:317,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:318,1
    - Dst: std::this_thread::sleep_for
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:320,1
    - Dst: std::chrono::seconds
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:320,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 24
    argCount: 1
    argNames:
    - ' code'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 322
      start: 275
    functionDepth: 2
    functionLinenumber: 275
    functionLinenumberEnd: 322
    functionName: LuaThread
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc
    functionUses: 0
    functionsReached:
    - errlog
    - std::this_thread::sleep_for
    - std::move
    - auto::readVariable
    - SLOG
    - sigaddset
    - std::chrono::seconds
    - LuaContext::writeFunction
    - LuaContext::executeCode
    - what
    - lock
    - sigemptyset
    - dnsdist::configuration::refreshLocalRuntimeConfiguration
    - setThreadName
    - pthread_sigmask
    - getLogger
    linkageType: ''
    returnType: void
    signature: void LuaThread(const std::string& code)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::configuration::isImmutableConfigurationDone
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:326,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:330,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:330,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:331,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - ' name'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 333
      start: 324
    functionDepth: 1
    functionLinenumber: 324
    functionLinenumberEnd: 333
    functionName: checkConfigurationTime
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc
    functionUses: 0
    functionsReached:
    - dnsdist::configuration::isImmutableConfigurationDone
    - errlog
    - SLOG
    - getLogger
    linkageType: ''
    returnType: bool
    signature: bool checkConfigurationTime(const std::string& name)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:341,1
    - Dst: static_cast<unsigned int>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:342,1
    - Dst: std::stoul
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:342,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:345,1
    - Dst: DownstreamState::parseAvailabilityConfigFromStr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:347,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:348,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:348,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:349,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:349,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:353,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:354,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:357,1
    - Dst: getOptionalIntegerValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:358,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:359,1
    - Dst: getOptionalIntegerValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:360,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:361,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:362,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:363,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:365,1
    - Dst: std::stoi
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:366,1
    - Dst: checkParameterBound
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:367,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:371,1
    - Dst: std::stoi
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:372,1
    - Dst: checkParameterBound
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:373,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:377,1
    - Dst: std::stoi
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:378,1
    - Dst: checkParameterBound
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:379,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:379,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:383,1
    - Dst: std::stoi
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:384,1
    - Dst: checkParameterBound
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:385,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:389,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:391,1
    - Dst: std::stoi
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:392,1
    - Dst: checkParameterBound
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:393,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:397,1
    - Dst: pdns_iequals
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:399,1
    - Dst: pdns_iequals
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:402,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:406,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:406,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:407,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:407,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:411,1
    - Dst: getOptionalIntegerValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:413,1
    - Dst: getOptionalIntegerValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:414,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 53
    argCount: 2
    argNames:
    - ' vars'
    - ' config'
    argTypes:
    - std::optional<newserver_t>
    - DownstreamState::Config
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 415
      start: 337
    functionDepth: 3
    functionLinenumber: 337
    functionLinenumberEnd: 415
    functionName: handleNewServerHealthCheckParameters
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc
    functionUses: 0
    functionsReached:
    - pdns::max
    - SLOG
    - DownstreamState::parseAvailabilityConfigFromStr
    - getOptionalIntegerValue
    - Logging::Loggable
    - pdns_iequals
    - std::stoi
    - warnlog
    - getOptionalValue
    - DNSName
    - static_cast<unsigned int>
    - checkParameterBound
    - std::stoul
    - getLogger
    linkageType: ''
    returnType: void
    signature: void handleNewServerHealthCheckParameters(std::optional<newserver_t>&
      vars, DownstreamState::Config& config)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:420,1
    - Dst: DownstreamState::parseSourceParameter
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:424,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - ' vars'
    - ' config'
    argTypes:
    - std::optional<newserver_t>
    - DownstreamState::Config
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 425
      start: 417
    functionDepth: 2
    functionLinenumber: 417
    functionLinenumberEnd: 425
    functionName: handleNewServerSourceParameter
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc
    functionUses: 0
    functionsReached:
    - DownstreamState::parseSourceParameter
    - getOptionalValue
    linkageType: ''
    returnType: void
    signature: void handleNewServerSourceParameter(std::optional<newserver_t>& vars,
      DownstreamState::Config& config)
  - BBCount: 265
    BranchProfiles: []
    Callsites:
    - Dst: setupConfigurationItems
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:430,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:432,1
    - Dst: setLuaSideEffect
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:434,1
    - Dst: newserver_t
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:436,1
    - Dst: boost::get<string>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:440,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:443,1
    - Dst: boost::get<newserver_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:447,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:448,1
    - Dst: handleNewServerSourceParameter
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:451,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:454,1
    - Dst: std::stoul
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:455,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:457,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:457,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:458,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:458,1
    - Dst: getOptionalIntegerValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:463,1
    - Dst: getOptionalIntegerValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:464,1
    - Dst: getOptionalIntegerValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:465,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:467,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:467,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:468,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:468,1
    - Dst: std::shared_ptr<DownstreamState>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:469,1
    - Dst: getOptionalIntegerValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:472,1
    - Dst: getOptionalIntegerValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:473,1
    - Dst: getOptionalIntegerValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:474,1
    - Dst: getOptionalIntegerValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:475,1
    - Dst: getOptionalIntegerValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:476,1
    - Dst: handleNewServerHealthCheckParameters
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:478,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:481,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:486,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:486,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:487,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:487,1
    - Dst: getOptionalIntegerValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:492,1
    - Dst: getOptionalIntegerValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:493,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:495,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:497,1
    - Dst: boost::uuids::string_generator
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:498,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:501,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:502,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:503,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:504,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:505,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:507,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:510,1
    - Dst: DownstreamState::Config::d_cpus::insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:512,1
    - Dst: std::stoi
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:512,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:516,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:519,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:520,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:521,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:522,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:523,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:524,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:525,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:526,1
    - Dst: getOptionalIntegerValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:527,1
    - Dst: std::optional::count
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:529,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:531,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:533,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:533,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:534,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:534,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:539,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:542,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:546,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:546,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:546,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:547,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:547,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:547,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:547,1
    - Dst: std::shared_ptr<DownstreamState>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:548,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:554,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:558,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:560,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:567,1
    - Dst: getTLSContext
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:573,1
    - Dst: DownstreamState::Config::d_tlsSubjectName::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:575,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:576,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:581,1
    - Dst: string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:584,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:585,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:585,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:586,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:586,1
    - Dst: std::shared_ptr<DownstreamState>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:587,1
    - Dst: string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:590,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:590,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:591,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:591,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:591,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:592,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:592,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:592,1
    - Dst: std::shared_ptr<DownstreamState>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:593,1
    - Dst: IsAnyAddress
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:596,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:598,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:598,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:599,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:599,1
    - Dst: std::shared_ptr<DownstreamState>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:600,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:604,1
    - Dst: DownstreamState::Config::pools::insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:605,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:607,1
    - Dst: DownstreamState::Config::pools::insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:609,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:619,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:621,1
    - Dst: static_cast<uint32_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:623,1
    - Dst: std::stoul
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:623,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:626,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:626,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:626,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:627,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:627,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:627,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:627,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:630,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:631,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:632,1
    - Dst: static_cast<uint16_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:634,1
    - Dst: std::stoul
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:634,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:637,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:637,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:637,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:638,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:638,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:638,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:638,1
    - Dst: std::make_shared<DownstreamState>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:644,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:644,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:644,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:647,1
    - Dst: LuaArray::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:647,1
    - Dst: dnsdist::configuration::isImmutableConfigurationDone
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:648,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:649,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:653,1
    - Dst: auto::registerXsk
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:655,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:657,1
    - Dst: auto::d_config::destMACAddr::data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:658,1
    - Dst: sscanf
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:660,1
    - Dst: std::string::c_str
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:660,1
    - Dst: getMACAddress
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:663,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:664,1
    - Dst: auto::d_config::destMACAddr::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:664,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:665,1
    - Dst: auto::d_config::remote::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:665,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:667,1
    - Dst: auto::d_config::destMACAddr::data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:667,1
    - Dst: std::string::data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:667,1
    - Dst: auto::d_config::destMACAddr::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:667,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:669,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:669,1
    - Dst: auto::d_config::remote::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:669,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:669,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:670,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:670,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:670,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:670,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:673,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:673,1
    - Dst: auto::d_config::remote::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:673,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:674,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:674,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:680,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:681,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:685,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:685,1
    - Dst: auto::d_config::remote::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:685,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:686,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:686,1
    - Dst: auto::getProtocol
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:689,1
    - Dst: auto::getProtocol
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:689,1
    - Dst: dnsdist::ServiceDiscovery::addUpgradeableServer
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:690,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:690,1
    - Dst: auto::d_config::pools::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:695,1
    - Dst: addServerToPool
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:697,1
    - Dst: addServerToPool
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:701,1
    - Dst: dnsdist::configuration::isImmutableConfigurationDone
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:705,1
    - Dst: auto::start
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:706,1
    - Dst: dnsdist::backend::registerNewBackend
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:710,1
    - Dst: checkAllParametersConsumed
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:712,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:716,1
    - Dst: setLuaSideEffect
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:718,1
    - Dst: boost::get<shared_ptr<DownstreamState>>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:720,1
    - Dst: boost::get<std::string>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:723,1
    - Dst: getUniqueID
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:724,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:725,1
    - Dst: boost::get<int>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:732,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:733,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:733,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:736,1
    - Dst: removeServerFromPool
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:739,1
    - Dst: removeServerFromPool
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:744,1
    - Dst: dnsdist::configuration::updateRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:750,1
    - Dst: DownstreamState::Config::d_backends::erase
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:751,1
    - Dst: remove
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:751,1
    - Dst: DownstreamState::Config::d_backends::begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:751,1
    - Dst: DownstreamState::Config::d_backends::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:751,1
    - Dst: DownstreamState::Config::d_backends::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:751,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:755,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:755,1
    - Dst: shared_ptr::d_config::remote::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:755,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:756,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:756,1
    - Dst: shared_ptr::stop
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:759,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:762,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:762,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:764,1
    - Dst: setLuaSideEffect
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:765,1
    - Dst: dnsdist::configuration::updateRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:766,1
    - Dst: DownstreamState::Config::d_ACL::addMask
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:767,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:771,1
    - Dst: setLuaSideEffect
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:772,1
    - Dst: dnsdist::configuration::updateRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:773,1
    - Dst: DownstreamState::Config::d_ACL::deleteMask
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:774,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:778,1
    - Dst: setLuaSideEffect
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:779,1
    - Dst: checkConfigurationTime
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:784,1
    - Dst: parseLocalBindVars
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:797,1
    - Dst: dnsdist::configuration::getImmutableConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:799,1
    - Dst: auto::begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:802,1
    - Dst: auto::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:802,1
    - Dst: auto::erase
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:805,1
    - Dst: std::make_shared<ClientState>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:813,1
    - Dst: std::make_shared<ClientState>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:814,1
    - Dst: parseXskVars
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:827,1
    - Dst: XskWorker::create
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:829,1
    - Dst: std::shared_ptr::addWorker
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:830,1
    - Dst: std::shared_ptr::addWorkerRoute
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:831,1
    - Dst: XskWorker::create
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:832,1
    - Dst: std::shared_ptr::addWorker
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:833,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:834,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:834,1
    - Dst: std::shared_ptr::getXDPMode
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:834,1
    - Dst: ComboAddress::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:834,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:835,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:835,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:835,1
    - Dst: std::shared_ptr::getXDPMode
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:835,1
    - Dst: auto::push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:838,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:838,1
    - Dst: auto::push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:839,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:839,1
    - Dst: checkAllParametersConsumed
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:841,1
    - Dst: dnsdist::configuration::updateImmutableConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:842,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:843,1
    - Dst: string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:847,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:847,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:851,1
    - Dst: setLuaSideEffect
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:852,1
    - Dst: checkConfigurationTime
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:857,1
    - Dst: parseLocalBindVars
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:869,1
    - Dst: std::make_shared<ClientState>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:874,1
    - Dst: std::make_shared<ClientState>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:875,1
    - Dst: parseXskVars
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:887,1
    - Dst: XskWorker::create
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:889,1
    - Dst: std::shared_ptr::addWorker
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:890,1
    - Dst: std::shared_ptr::addWorkerRoute
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:891,1
    - Dst: XskWorker::create
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:892,1
    - Dst: std::shared_ptr::addWorker
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:893,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:894,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:894,1
    - Dst: std::shared_ptr::getXDPMode
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:894,1
    - Dst: ComboAddress::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:894,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:895,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:895,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:895,1
    - Dst: std::shared_ptr::getXDPMode
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:895,1
    - Dst: dnsdist::configuration::updateImmutableConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:898,1
    - Dst: DownstreamState::Config::d_frontends::push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:899,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:899,1
    - Dst: DownstreamState::Config::d_frontends::push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:900,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:900,1
    - Dst: checkAllParametersConsumed
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:903,1
    - Dst: string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:906,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:906,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:907,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:907,1
    - Dst: string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:907,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:907,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:908,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:908,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:908,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:912,1
    - Dst: setLuaSideEffect
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:913,1
    - Dst: NetmaskGroup::NetmaskGroup
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:914,1
    - Dst: boost::get<string>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:915,1
    - Dst: NetmaskGroup::addMask
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:916,1
    - Dst: boost::get<LuaArray<std::string>>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:919,1
    - Dst: NetmaskGroup::addMask
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:920,1
    - Dst: dnsdist::configuration::updateRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:923,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:924,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:928,1
    - Dst: setLuaSideEffect
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:929,1
    - Dst: NetmaskGroup::NetmaskGroup
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:930,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:934,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:934,1
    - Dst: getline
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:939,1
    - Dst: string::find
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:940,1
    - Dst: string::resize
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:942,1
    - Dst: Utility::trim
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:944,1
    - Dst: string::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:945,1
    - Dst: NetmaskGroup::addMask
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:949,1
    - Dst: dnsdist::configuration::updateRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:952,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:953,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:957,1
    - Dst: setLuaNoSideEffect
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:958,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:959,1
    - Dst: toStringVector
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:959,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:968,1
    - Dst: doExitNicely
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:969,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:974,1
    - Dst: setLuaNoSideEffect
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:975,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:977,1
    - Dst: checkAllParametersConsumed
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:978,1
    - Dst: boost::format
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:984,1
    - Dst: boost::format
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:986,1
    - Dst: boost::format
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:991,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:999,1
    - Dst: getStatus
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1000,1
    - Dst: string::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1003,1
    - Dst: sqlstr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1008,1
    - Dst: sqlstr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1009,1
    - Dst: getName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1011,1
    - Dst: d_config::remote::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1011,1
    - Dst: getQPSLimit
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1011,1
    - Dst: queries::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1011,1
    - Dst: reuseds::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1011,1
    - Dst: outstanding::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1011,1
    - Dst: getName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1014,1
    - Dst: d_config::remote::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1014,1
    - Dst: getQPSLimit
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1014,1
    - Dst: queries::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1014,1
    - Dst: reuseds::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1014,1
    - Dst: outstanding::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1014,1
    - Dst: static_cast<uint64_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1016,1
    - Dst: queries::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1017,1
    - Dst: reuseds::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1018,1
    - Dst: ostringstream::str
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1032,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1035,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1040,1
    - Dst: setLuaNoSideEffect
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1041,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1044,1
    - Dst: LuaArray::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1045,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1050,1
    - Dst: getDownstreamCandidates
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1051,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1054,1
    - Dst: std::make_shared<DownstreamState>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1056,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1056,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1058,1
    - Dst: boost::get<std::string>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1059,1
    - Dst: getUniqueID
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1060,1
    - Dst: boost::get<unsigned int>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1067,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1068,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1069,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1071,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1071,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1071,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1080,1
    - Dst: setLuaSideEffect
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1081,1
    - Dst: dnsdist::Carbon::newEndpoint
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1082,1
    - Dst: dnsdist::configuration::isImmutableConfigurationDone
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1087,1
    - Dst: dnsdist::Carbon::run
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1088,1
    - Dst: dnsdist::configuration::updateRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1090,1
    - Dst: DownstreamState::Config::d_carbonEndpoints::push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1091,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1091,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1096,1
    - Dst: setLuaSideEffect
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1097,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1100,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1103,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1103,1
    - Dst: dnsdist::configuration::updateRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1110,1
    - Dst: DownstreamState::Config::d_webServerAddresses::emplace
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1111,1
    - Dst: dnsdist::configuration::isImmutableConfigurationDone
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1114,1
    - Dst: Socket
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1116,1
    - Dst: auto::bind
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1117,1
    - Dst: auto::listen
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1118,1
    - Dst: thread::detach
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1120,1
    - Dst: ComboAddress::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1123,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1123,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1124,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1124,1
    - Dst: ComboAddress::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1124,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1124,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1125,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1125,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1125,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1132,1
    - Dst: setLuaSideEffect
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1133,1
    - Dst: dnsdist::configuration::updateRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1139,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1150,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1152,1
    - Dst: std::make_shared<CredentialsHolder>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1153,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1153,1
    - Dst: auto::wasHashed
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1154,1
    - Dst: auto::isHashingAvailable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1154,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1155,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1155,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1156,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1158,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1161,1
    - Dst: std::make_shared<CredentialsHolder>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1162,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1162,1
    - Dst: auto::wasHashed
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1163,1
    - Dst: auto::isHashingAvailable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1163,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1164,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1164,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1165,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1167,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1170,1
    - Dst: NetmaskGroup::NetmaskGroup
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1171,1
    - Dst: NetmaskGroup::toMasks
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1172,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1173,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1176,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1177,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1180,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1184,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1188,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1192,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1196,1
    - Dst: getOptionalIntegerValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1202,1
    - Dst: dnsdist::webserver::setMaxConcurrentConnections
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1203,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1207,1
    - Dst: setLuaNoSideEffect
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1208,1
    - Dst: dnsdist::webserver::getConfig
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1209,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1212,1
    - Dst: hashPassword
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1214,1
    - Dst: hashPassword
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1216,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1219,1
    - Dst: setLuaSideEffect
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1220,1
    - Dst: dnsdist::configuration::updateRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1223,1
    - Dst: dnsdist::configuration::isImmutableConfigurationDone
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1233,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1233,1
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1233,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1234,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1234,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1235,1
    - Dst: dnsdist::configuration::isImmutableConfigurationDone
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1239,1
    - Dst: Socket
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1241,1
    - Dst: auto::bind
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1242,1
    - Dst: auto::listen
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1243,1
    - Dst: std::thread::detach
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1245,1
    - Dst: ComboAddress::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1248,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1248,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1249,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1249,1
    - Dst: ComboAddress::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1249,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1249,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1250,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1250,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1250,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1255,1
    - Dst: setLuaSideEffect
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1256,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1258,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1258,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1259,1
    - Dst: dnsdist::configuration::updateRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1262,1
    - Dst: DownstreamState::Config::d_consoleACL::addMask
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1263,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1267,1
    - Dst: setLuaSideEffect
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1268,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1271,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1271,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1272,1
    - Dst: NetmaskGroup::NetmaskGroup
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1275,1
    - Dst: boost::get<string>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1276,1
    - Dst: NetmaskGroup::addMask
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1277,1
    - Dst: boost::get<LuaArray<std::string>>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1280,1
    - Dst: NetmaskGroup::addMask
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1281,1
    - Dst: dnsdist::configuration::updateRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1284,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1285,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1289,1
    - Dst: setLuaNoSideEffect
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1290,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1293,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1293,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1294,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1297,1
    - Dst: toStringVector
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1297,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1304,1
    - Dst: write_lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1307,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1308,1
    - Dst: auto::clear
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1309,1
    - Dst: str
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1313,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1316,1
    - Dst: setLuaNoSideEffect
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1317,1
    - Dst: read_lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1318,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1320,1
    - Dst: boost::format
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1321,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1321,1
    - Dst: str
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1321,1
    - Dst: auto::begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1326,1
    - Dst: auto::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1326,1
    - Dst: str
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1327,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1331,1
    - Dst: dnsdist::configuration::updateRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1332,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1333,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1337,1
    - Dst: setLuaNoSideEffect
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1338,1
    - Dst: dnsdist::crypto::authenticated::newKey
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1339,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1342,1
    - Dst: dnsdist::configuration::isImmutableConfigurationDone
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1343,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1343,1
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1343,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1347,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1347,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1348,1
    - Dst: setLuaSideEffect
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1351,1
    - Dst: B64Decode
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1353,1
    - Dst: string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1354,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1355,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1355,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1356,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1356,1
    - Dst: dnsdist::configuration::updateRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1360,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1361,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1365,1
    - Dst: dnsdist::console::clearHistory
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1366,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1369,1
    - Dst: setLuaNoSideEffect
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1370,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1373,1
    - Dst: dnsdist::crypto::authenticated::Nonce::init
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1385,1
    - Dst: dnsdist::crypto::authenticated::encryptSym
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1387,1
    - Dst: dnsdist::crypto::authenticated::decryptSym
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1388,1
    - Dst: dnsdist::crypto::authenticated::Nonce::increment
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1390,1
    - Dst: dnsdist::crypto::authenticated::Nonce::increment
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1391,1
    - Dst: dnsdist::crypto::authenticated::encryptSym
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1393,1
    - Dst: dnsdist::crypto::authenticated::decryptSym
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1394,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1404,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1404,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1414,1
    - Dst: setLuaNoSideEffect
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1415,1
    - Dst: getSize
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1416,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1420,1
    - Dst: setLuaNoSideEffect
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1421,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1422,1
    - Dst: dnsdist::DynamicBlocks::getClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1423,1
    - Dst: gettime
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1425,1
    - Dst: str
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1427,1
    - Dst: getHits
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1432,1
    - Dst: first::getNetwork
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1432,1
    - Dst: first::toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1434,1
    - Dst: DNSAction::typeToString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1434,1
    - Dst: str
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1434,1
    - Dst: dnsdist::DynamicBlocks::getSuffixDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1437,1
    - Dst: visit
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1438,1
    - Dst: d_value::domain::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1441,1
    - Dst: d_value::domain::toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1442,1
    - Dst: DNSAction::typeToString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1444,1
    - Dst: str
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1444,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1449,1
    - Dst: setLuaNoSideEffect
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1450,1
    - Dst: gettime
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1452,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1455,1
    - Dst: dnsdist::DynamicBlocks::getClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1456,1
    - Dst: getHits
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1463,1
    - Dst: getNetwork
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1463,1
    - Dst: LuaAssociativeTable::emplace
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1468,1
    - Dst: toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1468,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1468,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1473,1
    - Dst: setLuaNoSideEffect
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1474,1
    - Dst: gettime
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1476,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1479,1
    - Dst: dnsdist::DynamicBlocks::getSuffixDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1480,1
    - Dst: visit
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1481,1
    - Dst: auto::domain::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1487,1
    - Dst: auto::domain::toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1488,1
    - Dst: LuaAssociativeTable::emplace
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1493,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1493,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1493,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1498,1
    - Dst: setLuaSideEffect
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1499,1
    - Dst: dnsdist::DynamicBlocks::clearClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1500,1
    - Dst: dnsdist::DynamicBlocks::clearSuffixDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1501,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1505,1
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1507,1
    - Dst: setLuaSideEffect
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1510,1
    - Dst: dnsdist::DynamicBlocks::getClientAddressDynamicRulesCopy
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1511,1
    - Dst: gettime
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1514,1
    - Dst: first::isIPv4
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1521,1
    - Dst: auto::lookup
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1522,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1537,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1540,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1540,1
    - Dst: first::toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1540,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1541,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1541,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1541,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1541,1
    - Dst: auto::insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1543,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1543,1
    - Dst: dnsdist::DynamicBlocks::setClientAddressDynamicRules
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1545,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1545,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1548,1
    - Dst: dnsdist::configuration::updateRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1550,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1555,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1555,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1556,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1556,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1556,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1564,1
    - Dst: checkConfigurationTime
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1565,1
    - Dst: parseLocalBindVars
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1578,1
    - Dst: checkAllParametersConsumed
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1579,1
    - Dst: type
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1581,1
    - Dst: typeid
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1581,1
    - Dst: type
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1581,1
    - Dst: typeid
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1581,1
    - Dst: boost::get<std::string>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1582,1
    - Dst: boost::get<std::string>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1583,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1584,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1584,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1584,1
    - Dst: type
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1586,1
    - Dst: typeid
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1586,1
    - Dst: type
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1586,1
    - Dst: typeid
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1586,1
    - Dst: boost::get<LuaArray<std::string>>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1587,1
    - Dst: boost::get<LuaArray<std::string>>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1588,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1589,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1589,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1590,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1591,1
    - Dst: auto::at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1591,1
    - Dst: auto::at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1591,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1595,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1595,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1596,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1602,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1602,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1603,1
    - Dst: std::make_shared<DNSCryptContext>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1609,1
    - Dst: std::make_shared<ClientState>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1612,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1612,1
    - Dst: dnsdist::configuration::updateImmutableConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1615,1
    - Dst: DownstreamState::Config::d_frontends::push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1616,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1616,1
    - Dst: std::make_shared<ClientState>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1620,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1620,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1621,1
    - Dst: dnsdist::configuration::updateImmutableConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1632,1
    - Dst: DownstreamState::Config::d_frontends::push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1633,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1633,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1637,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1637,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1637,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1638,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1638,1
    - Dst: string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1639,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1639,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1643,1
    - Dst: setLuaNoSideEffect
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1644,1
    - Dst: dnsdist::getFrontends
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1651,1
    - Dst: std::unordered_set::count
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1653,1
    - Dst: std::unordered_set::insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1656,1
    - Dst: local::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1657,1
    - Dst: std::shared_ptr::getProviderName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1657,1
    - Dst: ostringstream::str
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1661,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1664,1
    - Dst: setLuaNoSideEffect
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1665,1
    - Dst: dnsdist::getDNSCryptFrontends
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1671,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1672,1
    - Dst: auto::at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1673,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1678,1
    - Dst: setLuaNoSideEffect
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1679,1
    - Dst: dnsdist::getDNSCryptFrontends
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1684,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1688,1
    - Dst: setLuaNoSideEffect
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1689,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1697,1
    - Dst: getName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1697,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1699,1
    - Dst: packetCache::toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1703,1
    - Dst: policy::getName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1706,1
    - Dst: getServers
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1710,1
    - Dst: string::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1711,1
    - Dst: shared_ptr::second::getName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1714,1
    - Dst: shared_ptr::second::getName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1715,1
    - Dst: shared_ptr::second::d_config::remote::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1718,1
    - Dst: ostringstream::str
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1723,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1726,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1731,1
    - Dst: setLuaNoSideEffect
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1732,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1735,1
    - Dst: LuaArray::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1738,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1743,1
    - Dst: std::make_shared<dnsdist::lua::LuaServerPoolObject>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1745,1
    - Dst: dnsdist::configuration::updateRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1748,1
    - Dst: DownstreamState::Config::d_pools::emplace
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1749,1
    - Dst: ServerPool
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1749,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1754,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1754,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1755,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1755,1
    - Dst: std::make_shared<dnsdist::lua::LuaServerPoolObject>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1758,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1761,1
    - Dst: checkConfigurationTime
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1762,1
    - Dst: std::ofstream
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1766,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1766,1
    - Dst: dnsdist::logging::LoggingConfiguration::setVerboseStream
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1767,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1767,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1770,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1770,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1770,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1771,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1771,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1771,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1774,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1780,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1788,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1788,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1789,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1789,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1792,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1793,1
    - Dst: checkAllParametersConsumed
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1794,1
    - Dst: dnsdist::configuration::updateImmutableConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1797,1
    - Dst: std::string::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1798,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1809,1
    - Dst: setLuaNoSideEffect
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1810,1
    - Dst: dnsdist::getFrontends
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1818,1
    - Dst: local::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1819,1
    - Dst: getType
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1819,1
    - Dst: ostringstream::str
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1822,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1825,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1830,1
    - Dst: setLuaNoSideEffect
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1831,1
    - Dst: dnsdist::getFrontends
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1833,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1834,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1835,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1840,1
    - Dst: setLuaNoSideEffect
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1841,1
    - Dst: dnsdist::getFrontends
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1842,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1845,1
    - Dst: setLuaNoSideEffect
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1846,1
    - Dst: dnsdist::console::completion::getConsoleKeywords
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1849,1
    - Dst: toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1851,1
    - Dst: toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1854,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1864,1
    - Dst: setLuaNoSideEffect
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1865,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1866,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1870,1
    - Dst: checkConfigurationTime
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1871,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1874,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1877,1
    - Dst: push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1879,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1879,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1883,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1885,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1885,1
    - Dst: erase
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1887,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1896,1
    - Dst: setLuaSideEffect
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1900,1
    - Dst: clock_gettime
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1902,1
    - Dst: block
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1907,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1908,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1908,1
    - Dst: first::toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1908,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1909,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1909,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1909,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1909,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1918,1
    - Dst: setLuaNoSideEffect
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1919,1
    - Dst: entries::read_lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1922,1
    - Dst: std::unordered_map::reserve
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1923,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1923,1
    - Dst: std::get_if<pdns::stat_t*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1925,1
    - Dst: load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1926,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1933,1
    - Dst: checkConfigurationTime
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1934,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1940,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1940,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1941,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1941,1
    - Dst: stat
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1947,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1947,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1948,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1948,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1949,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1949,1
    - Dst: S_ISDIR
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1954,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1955,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1955,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1956,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1956,1
    - Dst: pdns::visit_directory
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1962,1
    - Dst: boost::starts_with
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1963,1
    - Dst: boost::ends_with
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1966,1
    - Dst: stat
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1970,1
    - Dst: std::ostringstream::str
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1970,1
    - Dst: S_ISREG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1970,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1971,1
    - Dst: std::ostringstream::str
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1971,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1978,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1978,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1979,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1979,1
    - Dst: std::sort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1984,1
    - Dst: std::vector::begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1984,1
    - Dst: std::vector::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1984,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1991,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1991,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1992,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1992,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1992,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1995,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1995,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1996,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1996,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:1996,1
    - Dst: executeCode
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2000,1
    - Dst: executeCode
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2007,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2013,1
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2014,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2015,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2015,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2016,1
    - Dst: dnsdist::configuration::updateRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2020,1
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2022,1
    - Dst: setLuaSideEffect
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2026,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2029,1
    - Dst: setLuaSideEffect
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2033,1
    - Dst: dnsdist::configuration::updateImmutableConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2035,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2044,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2044,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2045,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2049,1
    - Dst: setLuaSideEffect
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2053,1
    - Dst: dnsdist::configuration::updateImmutableConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2055,1
    - Dst: count
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2056,1
    - Dst: boost::get<uint64_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2057,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2057,1
    - Dst: count
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2059,1
    - Dst: boost::get<bool>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2060,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2060,1
    - Dst: count
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2062,1
    - Dst: boost::get<bool>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2063,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2063,1
    - Dst: count
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2065,1
    - Dst: boost::get<uint64_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2066,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2066,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2072,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2072,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2073,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2077,1
    - Dst: sscanf
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2079,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2079,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2079,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2079,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2079,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2079,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2080,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2080,1
    - Dst: dnsdist::configuration::updateImmutableConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2084,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2085,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2090,1
    - Dst: dnsdist::configuration::updateImmutableConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2095,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2104,1
    - Dst: dnsdist::configuration::getImmutableConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2105,1
    - Dst: sendCustomTrap
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2106,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2112,1
    - Dst: setLuaSideEffect
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2113,1
    - Dst: dnsdist::configuration::updateRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2114,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2119,1
    - Dst: setLuaSideEffect
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2120,1
    - Dst: std::make_shared<ServerPolicy>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2121,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2121,1
    - Dst: dnsdist::configuration::updateRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2122,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2123,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2127,1
    - Dst: setLuaSideEffect
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2128,1
    - Dst: std::make_shared<ServerPolicy>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2129,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2129,1
    - Dst: dnsdist::configuration::updateRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2130,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2131,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2135,1
    - Dst: setLuaSideEffect
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2136,1
    - Dst: std::make_shared<ServerPolicy>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2137,1
    - Dst: dnsdist::configuration::updateRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2138,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2139,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2143,1
    - Dst: setLuaSideEffect
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2144,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2145,1
    - Dst: getName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2145,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2148,1
    - Dst: setLuaSideEffect
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2149,1
    - Dst: setPoolPolicy
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2150,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2153,1
    - Dst: setLuaSideEffect
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2154,1
    - Dst: setPoolPolicy
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2155,1
    - Dst: std::make_shared<ServerPolicy>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2155,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2155,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2158,1
    - Dst: setLuaSideEffect
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2159,1
    - Dst: setPoolPolicy
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2160,1
    - Dst: std::make_shared<ServerPolicy>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2160,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2160,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2163,1
    - Dst: setLuaSideEffect
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2164,1
    - Dst: setPoolPolicy
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2165,1
    - Dst: std::make_shared<ServerPolicy>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2165,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2168,1
    - Dst: setLuaSideEffect
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2169,1
    - Dst: getPool
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2170,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2172,1
    - Dst: getName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2172,1
    - Dst: policy::getName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2175,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2180,1
    - Dst: setLuaSideEffect
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2181,1
    - Dst: NetmaskGroup::NetmaskGroup
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2182,1
    - Dst: boost::get<string>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2183,1
    - Dst: NetmaskGroup::addMask
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2184,1
    - Dst: boost::get<LuaArray<std::string>>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2187,1
    - Dst: NetmaskGroup::addMask
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2188,1
    - Dst: dnsdist::configuration::updateRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2191,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2192,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2197,1
    - Dst: setLuaNoSideEffect
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2198,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2199,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2203,1
    - Dst: checkConfigurationTime
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2204,1
    - Dst: setLuaSideEffect
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2207,1
    - Dst: type
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2208,1
    - Dst: typeid
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2208,1
    - Dst: boost::get<std::string>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2209,1
    - Dst: logFacilityFromString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2210,1
    - Dst: setSyslogFacility
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2215,1
    - Dst: setSyslogFacility
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2218,1
    - Dst: boost::get<int>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2218,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2223,1
    - Dst: count
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2232,1
    - Dst: boost::get<const string>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2233,1
    - Dst: count
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2235,1
    - Dst: boost::get<const string>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2236,1
    - Dst: std::make_shared<TLSCertKeyPair>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2239,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2239,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2239,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2244,1
    - Dst: checkConfigurationTime
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2249,1
    - Dst: setLuaSideEffect
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2252,1
    - Dst: std::make_shared<DOHFrontend>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2254,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2255,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2262,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2262,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2263,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2263,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2268,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2268,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2269,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2269,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2269,1
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2274,1
    - Dst: loadTLSCertificateAndKeys
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2275,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2279,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2282,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2283,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2283,1
    - Dst: auto::d_tlsContext::d_addr::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2283,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2284,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2284,1
    - Dst: type
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2289,1
    - Dst: typeid
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2289,1
    - Dst: auto::d_urls::insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2290,1
    - Dst: boost::get<std::string>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2290,1
    - Dst: type
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2292,1
    - Dst: typeid
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2292,1
    - Dst: boost::get<LuaArray<std::string>>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2293,1
    - Dst: auto::d_urls::insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2295,1
    - Dst: auto::d_urls::insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2300,1
    - Dst: parseLocalBindVars
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2315,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2316,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2317,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2318,1
    - Dst: boost::algorithm::to_lower
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2319,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2320,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2321,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2324,1
    - Dst: std::pair
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2326,1
    - Dst: boost::to_lower_copy
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2326,1
    - Dst: auto::d_customResponseHeaders::insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2327,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2327,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2331,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2332,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2333,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2334,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2335,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2336,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2339,1
    - Dst: std::vector::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2343,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2346,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2346,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2347,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2347,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2347,1
    - Dst: parseTLSConfig
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2353,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2356,1
    - Dst: libssl_init_server_context
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2361,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2364,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2364,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2364,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2365,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2365,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2365,1
    - Dst: checkAllParametersConsumed
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2371,1
    - Dst: auto::d_tlsContext::d_provider::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2375,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2376,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2376,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2377,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2377,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2377,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2385,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2385,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2386,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2386,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2386,1
    - Dst: std::make_shared<ClientState>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2390,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2391,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2392,1
    - Dst: dnsdist::configuration::updateImmutableConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2401,1
    - Dst: DownstreamState::Config::d_frontends::push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2402,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2402,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2405,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2410,1
    - Dst: checkConfigurationTime
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2415,1
    - Dst: setLuaSideEffect
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2418,1
    - Dst: std::make_shared<DOH3Frontend>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2420,1
    - Dst: loadTLSCertificateAndKeys
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2421,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2424,1
    - Dst: parseLocalBindVars
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2438,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2442,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2443,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2444,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2445,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2448,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2449,1
    - Dst: parseTLSConfig
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2452,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2455,1
    - Dst: libssl_init_server_context
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2460,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2463,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2463,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2463,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2464,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2464,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2464,1
    - Dst: checkAllParametersConsumed
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2470,1
    - Dst: std::make_shared<ClientState>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2473,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2474,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2475,1
    - Dst: dnsdist::configuration::updateImmutableConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2477,1
    - Dst: DownstreamState::Config::d_frontends::push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2478,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2478,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2481,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2486,1
    - Dst: checkConfigurationTime
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2491,1
    - Dst: setLuaSideEffect
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2494,1
    - Dst: std::make_shared<DOQFrontend>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2496,1
    - Dst: loadTLSCertificateAndKeys
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2497,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2500,1
    - Dst: parseLocalBindVars
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2514,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2518,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2519,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2520,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2521,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2524,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2525,1
    - Dst: parseTLSConfig
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2528,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2531,1
    - Dst: libssl_init_server_context
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2536,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2539,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2539,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2539,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2540,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2540,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2540,1
    - Dst: checkAllParametersConsumed
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2546,1
    - Dst: std::make_shared<ClientState>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2549,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2550,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2551,1
    - Dst: dnsdist::configuration::updateImmutableConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2553,1
    - Dst: DownstreamState::Config::d_frontends::push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2554,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2554,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2557,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2561,1
    - Dst: setLuaNoSideEffect
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2563,1
    - Dst: dnsdist::getDoQFrontends
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2569,1
    - Dst: auto::d_local::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2570,1
    - Dst: ostringstream::str
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2573,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2576,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2585,1
    - Dst: std::shared_ptr<DOQFrontend>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2588,1
    - Dst: setLuaNoSideEffect
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2590,1
    - Dst: dnsdist::getDoQFrontends
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2592,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2593,1
    - Dst: auto::at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2594,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2597,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2597,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2597,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2598,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2598,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2598,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2598,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2599,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2599,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2599,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2603,1
    - Dst: string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2603,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2603,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2604,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2604,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2604,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2605,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2605,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2605,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2610,1
    - Dst: setLuaNoSideEffect
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2611,1
    - Dst: dnsdist::getDoQFrontends
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2612,1
    - Dst: auto::reloadCertificates
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2617,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2622,1
    - Dst: setLuaNoSideEffect
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2624,1
    - Dst: dnsdist::getDoHFrontends
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2630,1
    - Dst: auto::d_tlsContext::d_addr::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2631,1
    - Dst: auto::getTicketsKeysCount
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2631,1
    - Dst: auto::getTicketsKeyRotationDelay
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2631,1
    - Dst: auto::getNextTicketsKeyRotation
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2631,1
    - Dst: ostringstream::str
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2634,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2637,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2645,1
    - Dst: setLuaNoSideEffect
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2647,1
    - Dst: dnsdist::getDoH3Frontends
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2653,1
    - Dst: auto::d_local::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2654,1
    - Dst: ostringstream::str
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2657,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2660,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2669,1
    - Dst: std::shared_ptr<DOH3Frontend>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2672,1
    - Dst: setLuaNoSideEffect
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2674,1
    - Dst: dnsdist::getDoH3Frontends
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2676,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2677,1
    - Dst: auto::at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2678,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2681,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2681,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2681,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2682,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2682,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2682,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2682,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2683,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2683,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2683,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2687,1
    - Dst: string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2687,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2687,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2688,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2688,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2688,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2689,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2689,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2689,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2694,1
    - Dst: setLuaNoSideEffect
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2695,1
    - Dst: dnsdist::getDoH3Frontends
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2696,1
    - Dst: auto::reloadCertificates
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2701,1
    - Dst: std::make_shared<std::vector<std::shared_ptr<DOHResponseMapEntry>>>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2707,1
    - Dst: auto::reserve
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2708,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2708,1
    - Dst: auto::push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2711,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2714,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2719,1
    - Dst: setLuaNoSideEffect
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2721,1
    - Dst: dnsdist::getDoHFrontends
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2728,1
    - Dst: auto::d_tlsContext::d_addr::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2729,1
    - Dst: ostringstream::str
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2732,1
    - Dst: ostringstream::str
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2733,1
    - Dst: dnsdist::getDoHFrontends
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2738,1
    - Dst: auto::d_tlsContext::d_addr::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2739,1
    - Dst: ostringstream::str
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2742,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2745,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2753,1
    - Dst: std::shared_ptr<DOHFrontend>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2756,1
    - Dst: setLuaNoSideEffect
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2759,1
    - Dst: dnsdist::getDoHFrontends
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2761,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2762,1
    - Dst: auto::at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2763,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2766,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2766,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2766,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2767,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2767,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2767,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2767,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2768,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2768,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2768,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2772,1
    - Dst: string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2772,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2772,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2773,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2773,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2773,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2774,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2774,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2774,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2782,1
    - Dst: setLuaNoSideEffect
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2783,1
    - Dst: dnsdist::getDoHFrontends
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2784,1
    - Dst: auto::reloadCertificates
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2789,1
    - Dst: loadTLSCertificateAndKeys
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2796,1
    - Dst: auto::reloadCertificates
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2797,1
    - Dst: auto::rotateTicketsKey
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2805,1
    - Dst: time
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2805,1
    - Dst: auto::loadTicketsKeys
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2811,1
    - Dst: auto::loadTicketsKey
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2817,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2820,1
    - Dst: dnsdist::getFrontends
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2821,1
    - Dst: auto::tlsFrontend::loadTicketsKey
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2828,1
    - Dst: auto::dohFrontend::loadTicketsKey
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2833,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2838,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2838,1
    - Dst: auto::local::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2838,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2838,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2839,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2839,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2839,1
    - Dst: std::make_shared<std::vector<std::shared_ptr<DOHResponseMapEntry>>>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2846,1
    - Dst: auto::reserve
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2847,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2847,1
    - Dst: auto::push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2850,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2853,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2857,1
    - Dst: checkConfigurationTime
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2862,1
    - Dst: setLuaSideEffect
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2865,1
    - Dst: std::make_shared<TLSFrontend>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2867,1
    - Dst: loadTLSCertificateAndKeys
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2868,1
    - Dst: parseLocalBindVars
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2884,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2886,1
    - Dst: boost::algorithm::to_lower
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2887,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2888,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2889,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2892,1
    - Dst: std::vector::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2896,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2899,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2899,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2900,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2900,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2900,1
    - Dst: parseTLSConfig
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2906,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2909,1
    - Dst: libssl_init_server_context
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2914,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2917,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2917,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2917,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2918,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2918,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2918,1
    - Dst: checkAllParametersConsumed
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2924,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2928,1
    - Dst: auto::d_provider::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2929,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2930,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2930,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2931,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2931,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2931,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2939,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2939,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2940,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2940,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2940,1
    - Dst: std::make_shared<ClientState>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2943,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2944,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2945,1
    - Dst: dnsdist::configuration::updateImmutableConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2956,1
    - Dst: DownstreamState::Config::d_frontends::push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2957,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2957,1
    - Dst: string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2961,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2961,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2964,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2968,1
    - Dst: setLuaNoSideEffect
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2970,1
    - Dst: dnsdist::getDoTFrontends
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2977,1
    - Dst: auto::d_addr::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2978,1
    - Dst: auto::getTicketsKeysCount
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2978,1
    - Dst: auto::getTicketsKeyRotationDelay
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2978,1
    - Dst: auto::getNextTicketsKeyRotation
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2978,1
    - Dst: ostringstream::str
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2981,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2984,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2992,1
    - Dst: std::shared_ptr<TLSFrontend>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2995,1
    - Dst: setLuaNoSideEffect
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:2998,1
    - Dst: dnsdist::getDoTFrontends
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3000,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3001,1
    - Dst: auto::at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3002,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3005,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3005,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3005,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3006,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3006,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3006,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3006,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3007,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3007,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3007,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3011,1
    - Dst: string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3011,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3011,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3012,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3012,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3012,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3013,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3013,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3013,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3021,1
    - Dst: setLuaNoSideEffect
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3022,1
    - Dst: dnsdist::getDoTFrontends
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3023,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3026,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3028,1
    - Dst: auto::d_addr::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3030,1
    - Dst: auto::getContext
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3037,1
    - Dst: auto::rotateTicketsKey
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3039,1
    - Dst: time
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3039,1
    - Dst: auto::getContext
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3047,1
    - Dst: auto::loadTicketsKeys
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3049,1
    - Dst: auto::getContext
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3057,1
    - Dst: auto::loadTicketsKey
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3059,1
    - Dst: auto::setupTLS
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3067,1
    - Dst: loadTLSCertificateAndKeys
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3072,1
    - Dst: auto::setupTLS
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3073,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3078,1
    - Dst: dnsdist::getFrontends
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3079,1
    - Dst: auto::dnscryptCtx::reloadCertificates
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3086,1
    - Dst: auto::tlsFrontend::setupTLS
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3091,1
    - Dst: auto::dohFrontend::reloadCertificates
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3096,1
    - Dst: auto::doqFrontend::reloadCertificates
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3101,1
    - Dst: auto::doh3Frontend::reloadCertificates
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3106,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3111,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3111,1
    - Dst: auto::local::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3111,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3111,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3112,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3112,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3112,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3118,1
    - Dst: libssl_generate_ocsp_response
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3123,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3127,1
    - Dst: dnsdist::configuration::updateImmutableConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3129,1
    - Dst: type
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3130,1
    - Dst: typeid
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3130,1
    - Dst: DownstreamState::Config::d_capabilitiesToRetain::insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3131,1
    - Dst: boost::get<std::string>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3131,1
    - Dst: type
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3133,1
    - Dst: typeid
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3133,1
    - Dst: boost::get<LuaArray<std::string>>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3134,1
    - Dst: DownstreamState::Config::d_capabilitiesToRetain::insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3135,1
    - Dst: setLuaSideEffect
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3139,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3143,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3143,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3144,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3148,1
    - Dst: checkParameterBound
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3152,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3152,1
    - Dst: checkParameterBound
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3153,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3153,1
    - Dst: dnsdist::configuration::updateImmutableConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3156,1
    - Dst: setLuaSideEffect
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3160,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3164,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3164,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3165,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3170,1
    - Dst: libssl_load_engine
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3175,1
    - Dst: std::optional<std::string>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3175,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3178,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3178,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3179,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3179,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3179,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3185,1
    - Dst: libssl_load_provider
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3190,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3193,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3193,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3194,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3194,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3199,1
    - Dst: std::thread::detach
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3205,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3208,1
    - Dst: boost::get<std::string>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3212,1
    - Dst: value
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3212,1
    - Dst: std::optional
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3214,1
    - Dst: boost::get<declare_metric_opts_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3217,1
    - Dst: value
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3217,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3218,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3219,1
    - Dst: checkAllParametersConsumed
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3220,1
    - Dst: dnsdist::metrics::declareCustomMetric
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3223,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3223,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3226,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3226,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3227,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3227,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3233,1
    - Dst: value_or
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3234,1
    - Dst: boost::get<uint64_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3237,1
    - Dst: boost::get<update_metric_opts_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3241,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3242,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3243,1
    - Dst: checkAllParametersConsumed
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3244,1
    - Dst: dnsdist::metrics::incrementCustomCounter
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3246,1
    - Dst: std::get_if<dnsdist::metrics::Error>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3247,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3249,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3249,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3250,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3250,1
    - Dst: static_cast<uint64_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3251,1
    - Dst: std::get<uint64_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3253,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3256,1
    - Dst: value_or
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3257,1
    - Dst: boost::get<uint64_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3260,1
    - Dst: boost::get<update_metric_opts_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3264,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3265,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3266,1
    - Dst: checkAllParametersConsumed
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3267,1
    - Dst: dnsdist::metrics::decrementCustomCounter
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3269,1
    - Dst: std::get_if<dnsdist::metrics::Error>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3270,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3272,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3272,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3273,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3273,1
    - Dst: static_cast<uint64_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3274,1
    - Dst: std::get<uint64_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3276,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3278,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3281,1
    - Dst: checkAllParametersConsumed
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3283,1
    - Dst: dnsdist::metrics::setCustomGauge
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3284,1
    - Dst: std::get_if<dnsdist::metrics::Error>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3285,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3287,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3287,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3288,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3288,1
    - Dst: std::get<double>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3291,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3293,1
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3296,1
    - Dst: checkAllParametersConsumed
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3298,1
    - Dst: dnsdist::metrics::getCustomMetric
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3299,1
    - Dst: std::get_if<dnsdist::metrics::Error>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3300,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3302,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3302,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3303,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3303,1
    - Dst: std::get<double>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3306,1
    CyclomaticComplexity: 437
    EdgeCount: 437
    ICount: 1873
    argCount: 3
    argNames:
    - ' luaCtx'
    - client
    - configCheck
    argTypes:
    - LuaContext
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3308
      start: 428
    functionDepth: 4
    functionLinenumber: 428
    functionLinenumberEnd: 3308
    functionName: setupLuaConfig
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc
    functionUses: 0
    functionsReached:
    - errlog
    - outstanding::load
    - LuaAssociativeTable::emplace
    - std::unordered_set::insert
    - queries::load
    - auto::getNextTicketsKeyRotation
    - dnsdist::ServiceDiscovery::addUpgradeableServer
    - auto::dohFrontend::reloadCertificates
    - std::string
    - IsAnyAddress
    - auto::erase
    - boost::get<uint64_t>
    - getHits
    - std::vector::size
    - boost::get<string>
    - getOptionalIntegerValue
    - auto::doqFrontend::reloadCertificates
    - DownstreamState::Config::d_capabilitiesToRetain::insert
    - getStatus
    - time
    - getPool
    - read_lock
    - auto::d_provider::empty
    - getOptionalValue
    - getSize
    - std::shared_ptr<TLSFrontend>
    - auto::tlsFrontend::setupTLS
    - dnsdist::metrics::incrementCustomCounter
    - std::unordered_set::count
    - DownstreamState::Config::d_tlsSubjectName::empty
    - std::make_shared<DownstreamState>
    - auto::d_tlsContext::d_addr::toStringWithPort
    - dnsdist::metrics::getCustomMetric
    - std::shared_ptr::getProviderName
    - type
    - std::shared_ptr<DOH3Frontend>
    - std::vector::end
    - std::optional<std::string>
    - d_value::domain::empty
    - auto::end
    - addServerToPool
    - std::make_shared<DOHFrontend>
    - VERBOSESLOG
    - boost::get<int>
    - DownstreamState::Config::d_ACL::deleteMask
    - DownstreamState::Config::d_ACL::addMask
    - dnsdist::crypto::authenticated::newKey
    - auto::getProtocol
    - str
    - dnsdist::DynamicBlocks::clearSuffixDynamicRules
    - gettime
    - auto::insert
    - dnsdist::getDoQFrontends
    - std::make_shared<ServerPolicy>
    - auto::registerXsk
    - ComboAddress
    - dnsdist::Carbon::newEndpoint
    - dnsdist::crypto::authenticated::Nonce::increment
    - shared_ptr::second::d_config::remote::toStringWithPort
    - boost::get<shared_ptr<DownstreamState>>
    - std::make_shared<DOH3Frontend>
    - std::sort
    - setSyslogFacility
    - infolog
    - libssl_init_server_context
    - boost::get<declare_metric_opts_t>
    - auto::d_tlsContext::d_provider::empty
    - NetmaskGroup::addMask
    - LuaArray::emplace_back
    - auto::dohFrontend::loadTicketsKey
    - toString
    - DownstreamState::Config::d_consoleACL::addMask
    - libssl_generate_ocsp_response
    - stringerror
    - auto::d_addr::toStringWithPort
    - boost::get<std::string>
    - dnsdist::getDNSCryptFrontends
    - std::ofstream
    - auto::push_back
    - DNSAction::typeToString
    - std::string::size
    - dnsdist::logging::LoggingConfiguration::setVerboseStream
    - S_ISDIR
    - auto::size
    - auto::lookup
    - string::empty
    - dnsdist::DynamicBlocks::getSuffixDynamicRules
    - std::ostringstream::str
    - auto::d_customResponseHeaders::insert
    - auto::getTicketsKeysCount
    - string
    - warnlog
    - size
    - auto::rotateTicketsKey
    - setupConfigurationItems
    - auto::tlsFrontend::loadTicketsKey
    - static_cast<uint16_t>
    - DownstreamState::Config::d_backends::end
    - getNetwork
    - logFacilityFromString
    - auto::loadTicketsKeys
    - dnsdist::backend::registerNewBackend
    - getServers
    - boost::ends_with
    - getLogger
    - sendCustomTrap
    - libssl_load_provider
    - DownstreamState::Config::d_backends::begin
    - hashPassword
    - std::runtime_error
    - std::string::data
    - dnsdist::webserver::getConfig
    - visit
    - DNSName
    - DownstreamState::Config::d_frontends::push_back
    - dnsdist::console::clearHistory
    - std::shared_ptr<DOHFrontend>
    - checkParameterBound
    - newserver_t
    - getMACAddress
    - DownstreamState::Config::d_pools::emplace
    - toStringVector
    - handleNewServerHealthCheckParameters
    - getQPSLimit
    - typeid
    - packetCache::toString
    - std::make_shared<TLSCertKeyPair>
    - dnsdist::Carbon::run
    - std::string::c_str
    - auto::d_local::toStringWithPort
    - value
    - end
    - boost::get<LuaArray<std::string>>
    - setLuaSideEffect
    - Socket
    - dnsdist::crypto::authenticated::Nonce::init
    - auto::d_config::remote::toStringWithPort
    - std::stoi
    - ComboAddress::toString
    - sqlstr
    - dnsdist::crypto::authenticated::decryptSym
    - std::make_shared<DNSCryptContext>
    - DownstreamState::Config::d_carbonEndpoints::push_back
    - boost::get<const string>
    - boost::format
    - std::make_shared<CredentialsHolder>
    - getUniqueID
    - removeServerFromPool
    - dnsdist::configuration::updateRuntimeConfiguration
    - ServerPool
    - runtime_error
    - d_config::remote::toStringWithPort
    - std::shared_ptr<DOQFrontend>
    - static_cast<uint32_t>
    - std::get<double>
    - dnsdist::metrics::decrementCustomCounter
    - auto::begin
    - thread::detach
    - dnsdist::configuration::getImmutableConfiguration
    - dnsdist::getDoTFrontends
    - remove
    - static_cast<int>
    - std::shared_ptr::addWorker
    - static_cast<size_t>
    - dnsdist::DynamicBlocks::getClientAddressDynamicRulesCopy
    - std::shared_ptr<DownstreamState>
    - std::vector::begin
    - dnsdist::DynamicBlocks::getClientAddressDynamicRules
    - dnsdist::crypto::authenticated::encryptSym
    - getTLSContext
    - dnsdist::metrics::declareCustomMetric
    - local::toStringWithPort
    - auto::setupTLS
    - parseXskVars
    - handleNewServerSourceParameter
    - first::toString
    - boost::to_lower_copy
    - std::string::empty
    - boost::uuids::string_generator
    - empty
    - std::optional
    - getType
    - at
    - loadTLSCertificateAndKeys
    - auto::d_config::destMACAddr::data
    - std::unordered_map::reserve
    - dnsdist::configuration::getCurrentRuntimeConfiguration
    - push_back
    - std::make_shared<ClientState>
    - boost::get<newserver_t>
    - auto::start
    - XskWorker::create
    - auto::doh3Frontend::reloadCertificates
    - pdns::visit_directory
    - get
    - ostringstream::str
    - dnsdist::metrics::setCustomGauge
    - boost::get<unsigned int>
    - DownstreamState::Config::d_cpus::insert
    - std::shared_ptr::addWorkerRoute
    - auto::isHashingAvailable
    - first::getNetwork
    - memcpy
    - std::move
    - auto::d_config::pools::empty
    - count
    - executeCode
    - checkAllParametersConsumed
    - auto::wasHashed
    - dnsdist::getFrontends
    - getDownstreamCandidates
    - std::thread::detach
    - clock_gettime
    - auto::at
    - std::get_if<pdns::stat_t*>
    - auto::local::toStringWithPort
    - auto::loadTicketsKey
    - DownstreamState::Config::pools::insert
    - std::to_string
    - auto::getTicketsKeyRotationDelay
    - dnsdist::configuration::isImmutableConfigurationDone
    - dnsdist::getDoHFrontends
    - setPoolPolicy
    - libssl_load_engine
    - NetmaskGroup::toMasks
    - std::vector::at
    - getline
    - std::pair
    - checkConfigurationTime
    - erase
    - parseLocalBindVars
    - std::vector::push_back
    - string::resize
    - SLOG
    - d_value::domain::toString
    - auto::getContext
    - shared_ptr::stop
    - Logging::Loggable
    - getName
    - first::isIPv4
    - boost::starts_with
    - shared_ptr::d_config::remote::toStringWithPort
    - string::find
    - B64Decode
    - DownstreamState::Config::d_backends::erase
    - auto::reloadCertificates
    - dnsdist::getDoH3Frontends
    - dnsdist::DynamicBlocks::setClientAddressDynamicRules
    - std::make_shared<TLSFrontend>
    - auto::d_urls::insert
    - auto::dnscryptCtx::reloadCertificates
    - auto::d_config::destMACAddr::size
    - value_or
    - begin
    - c_str
    - auto::reserve
    - writeFunction
    - auto::clear
    - stat
    - entries::read_lock
    - std::make_shared<DOQFrontend>
    - pdns::max
    - load
    - NetmaskGroup::NetmaskGroup
    - dnsdist::webserver::setMaxConcurrentConnections
    - sscanf
    - dnsdist::DynamicBlocks::clearClientAddressDynamicRules
    - dnsdist::configuration::updateImmutableConfiguration
    - setLuaNoSideEffect
    - static_cast<uint64_t>
    - S_ISREG
    - dnsdist::console::completion::getConsoleKeywords
    - std::optional::count
    - parseTLSConfig
    - Utility::trim
    - DownstreamState::Config::d_webServerAddresses::emplace
    - auto::domain::toString
    - ComboAddress::toStringWithPort
    - std::shared_ptr::getXDPMode
    - std::make_shared<std::vector<std::shared_ptr<DOHResponseMapEntry>>>
    - reuseds::load
    - auto::listen
    - what
    - auto::domain::empty
    - auto::bind
    - block
    - boost::algorithm::to_lower
    - std::vector::emplace_back
    - boost::get<bool>
    - doExitNicely
    - policy::getName
    - std::make_shared<dnsdist::lua::LuaServerPoolObject>
    - std::get_if<dnsdist::metrics::Error>
    - write_lock
    - std::stoul
    - LuaArray::empty
    - shared_ptr::second::getName
    - boost::get<update_metric_opts_t>
    - std::get<uint64_t>
    linkageType: ''
    returnType: void
    signature: void setupLuaConfig(LuaContext& luaCtx, bool client, bool configCheck)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3314,1
    - Dst: dnsdist::configuration::isImmutableConfigurationDone
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3315,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3318,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3322,1
    - Dst: dnsdist::lua::setupLuaConfigurationOptions
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3323,1
    - Dst: setupLuaBindings
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3326,1
    - Dst: setupLuaBindingsDNSCrypt
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3327,1
    - Dst: setupLuaBindingsDNSParser
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3328,1
    - Dst: setupLuaBindingsDNSQuestion
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3329,1
    - Dst: setupLuaBindingsKVS
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3330,1
    - Dst: setupLuaBindingsLogging
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3331,1
    - Dst: setupLuaBindingsNetwork
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3332,1
    - Dst: setupLuaBindingsPacketCache
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3333,1
    - Dst: setupLuaBindingsProtoBuf
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3334,1
    - Dst: setupLuaBindingsRings
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3335,1
    - Dst: setupLuaInspection
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3336,1
    - Dst: setupLuaVars
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3337,1
    - Dst: setupLuaWeb
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3338,1
    - Dst: dnsdist::configuration::yaml::addLuaBindingsForYAMLObjects
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3339,1
    - Dst: executeCode
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3342,1
    - Dst: getLuaFFIWrappers
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3342,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 25
    argCount: 3
    argNames:
    - ' luaCtx'
    - client
    - configCheck
    argTypes:
    - LuaContext
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3344
      start: 3312
    functionDepth: 5
    functionLinenumber: 3312
    functionLinenumberEnd: 3344
    functionName: dnsdist::lua::setupLuaBindingsOnly
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc
    functionUses: 1
    functionsReached:
    - dnsdist::configuration::isImmutableConfigurationDone
    - setupLuaBindingsPacketCache
    - setupLuaBindingsLogging
    - getLuaFFIWrappers
    - setupLuaBindings
    - setupLuaWeb
    - setupLuaBindingsDNSParser
    - dnsdist::configuration::yaml::addLuaBindingsForYAMLObjects
    - setupLuaInspection
    - setupLuaBindingsProtoBuf
    - writeFunction
    - setupLuaBindingsDNSCrypt
    - setupLuaBindingsDNSQuestion
    - setupLuaBindingsKVS
    - setupLuaBindingsRings
    - setupLuaVars
    - dnsdist::lua::setupLuaConfigurationOptions
    - executeCode
    - setupLuaBindingsNetwork
    linkageType: ''
    returnType: void
    signature: void setupLuaBindingsOnly(LuaContext& luaCtx, bool client, bool configCheck)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::atomic::exchange
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3349,1
    - Dst: setupLuaConfig
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3353,1
    - Dst: setupLuaActions
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3354,1
    - Dst: setupLuaSelectors
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3355,1
    - Dst: setupLuaRuleChainsManagement
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3356,1
    - Dst: dnsdist::lua::hooks::setupLuaHooks
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3357,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 3
    argNames:
    - ' luaCtx'
    - client
    - configCheck
    argTypes:
    - LuaContext
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3358
      start: 3346
    functionDepth: 5
    functionLinenumber: 3346
    functionLinenumberEnd: 3358
    functionName: dnsdist::lua::setupLuaConfigurationOptions
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc
    functionUses: 2
    functionsReached:
    - dnsdist::lua::hooks::setupLuaHooks
    - setupLuaActions
    - setupLuaConfig
    - std::atomic::exchange
    - setupLuaRuleChainsManagement
    - setupLuaSelectors
    linkageType: ''
    returnType: void
    signature: void setupLuaConfigurationOptions(LuaContext& luaCtx, bool client,
      bool configCheck)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::lua::setupLuaBindingsOnly
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3362,1
    - Dst: dnsdist::lua::setupLuaConfigurationOptions
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3363,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - ' luaCtx'
    - client
    - configCheck
    argTypes:
    - LuaContext
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3364
      start: 3360
    functionDepth: 6
    functionLinenumber: 3360
    functionLinenumberEnd: 3364
    functionName: dnsdist::lua::setupLua
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc
    functionUses: 1
    functionsReached:
    - dnsdist::lua::setupLuaBindingsOnly
    - dnsdist::lua::setupLuaConfigurationOptions
    linkageType: ''
    returnType: void
    signature: void setupLua(LuaContext& luaCtx, bool client, bool configCheck)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3314,1
    - Dst: dnsdist::configuration::isImmutableConfigurationDone
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3315,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3318,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3322,1
    - Dst: dnsdist::lua::setupLuaConfigurationOptions
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3323,1
    - Dst: setupLuaBindings
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3326,1
    - Dst: setupLuaBindingsDNSCrypt
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3327,1
    - Dst: setupLuaBindingsDNSParser
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3328,1
    - Dst: setupLuaBindingsDNSQuestion
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3329,1
    - Dst: setupLuaBindingsKVS
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3330,1
    - Dst: setupLuaBindingsLogging
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3331,1
    - Dst: setupLuaBindingsNetwork
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3332,1
    - Dst: setupLuaBindingsPacketCache
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3333,1
    - Dst: setupLuaBindingsProtoBuf
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3334,1
    - Dst: setupLuaBindingsRings
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3335,1
    - Dst: setupLuaInspection
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3336,1
    - Dst: setupLuaVars
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3337,1
    - Dst: setupLuaWeb
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3338,1
    - Dst: dnsdist::configuration::yaml::addLuaBindingsForYAMLObjects
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3339,1
    - Dst: executeCode
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3342,1
    - Dst: getLuaFFIWrappers
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3342,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 25
    argCount: 3
    argNames:
    - ' luaCtx'
    - client
    - configCheck
    argTypes:
    - LuaContext
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3344
      start: 3312
    functionDepth: 6
    functionLinenumber: 3312
    functionLinenumberEnd: 3344
    functionName: dnsdist::lua::setupLuaBindingsOnly
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc
    functionUses: 2
    functionsReached:
    - dnsdist::configuration::isImmutableConfigurationDone
    - setupLuaBindingsPacketCache
    - setupLuaBindingsLogging
    - getLuaFFIWrappers
    - setupLuaBindings
    - setupLuaWeb
    - setupLuaBindingsDNSParser
    - dnsdist::configuration::yaml::addLuaBindingsForYAMLObjects
    - setupLuaInspection
    - setupLuaBindingsProtoBuf
    - writeFunction
    - setupLuaBindingsDNSCrypt
    - setupLuaBindingsDNSQuestion
    - setupLuaBindingsKVS
    - setupLuaBindingsRings
    - setupLuaVars
    - dnsdist::lua::setupLuaConfigurationOptions
    - executeCode
    - setupLuaBindingsNetwork
    linkageType: ''
    returnType: void
    signature: void setupLuaBindingsOnly(LuaContext& luaCtx, bool client, bool configCheck)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::atomic::exchange
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3349,1
    - Dst: setupLuaConfig
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3353,1
    - Dst: setupLuaActions
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3354,1
    - Dst: setupLuaSelectors
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3355,1
    - Dst: setupLuaRuleChainsManagement
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3356,1
    - Dst: dnsdist::lua::hooks::setupLuaHooks
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3357,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 3
    argNames:
    - ' luaCtx'
    - client
    - configCheck
    argTypes:
    - LuaContext
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3358
      start: 3346
    functionDepth: 5
    functionLinenumber: 3346
    functionLinenumberEnd: 3358
    functionName: dnsdist::lua::setupLuaConfigurationOptions
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc
    functionUses: 4
    functionsReached:
    - dnsdist::lua::hooks::setupLuaHooks
    - setupLuaActions
    - setupLuaConfig
    - std::atomic::exchange
    - setupLuaRuleChainsManagement
    - setupLuaSelectors
    linkageType: ''
    returnType: void
    signature: void setupLuaConfigurationOptions(LuaContext& luaCtx, bool client,
      bool configCheck)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::lua::setupLuaBindingsOnly
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3362,1
    - Dst: dnsdist::lua::setupLuaConfigurationOptions
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3363,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - ' luaCtx'
    - client
    - configCheck
    argTypes:
    - LuaContext
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3364
      start: 3360
    functionDepth: 6
    functionLinenumber: 3360
    functionLinenumberEnd: 3364
    functionName: dnsdist::lua::setupLua
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc
    functionUses: 1
    functionsReached:
    - dnsdist::lua::setupLuaBindingsOnly
    - dnsdist::lua::setupLuaConfigurationOptions
    linkageType: ''
    returnType: void
    signature: void setupLua(LuaContext& luaCtx, bool client, bool configCheck)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3374,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3376,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3376,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3377,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3377,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3380,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3380,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3381,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3381,1
    - Dst: executeCode
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3384,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 3
    argNames:
    - ' luaCtx'
    - ' config'
    - configCheck
    argTypes:
    - LuaContext
    - std::string
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3385
      start: 3369
    functionDepth: 1
    functionLinenumber: 3369
    functionLinenumberEnd: 3385
    functionName: dnsdist::configuration::lua::loadLuaConfigurationFile
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc
    functionUses: 1
    functionsReached:
    - SLOG
    - Logging::Loggable
    - std::runtime_error
    - executeCode
    - VERBOSESLOG
    - warnlog
    - infolog
    - dnsdist::logging::getTopLogger
    linkageType: ''
    returnType: void
    signature: void loadLuaConfigurationFile(LuaContext& luaCtx, const std::string&
      config, bool configCheck)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3374,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3376,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3376,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3377,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3377,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3380,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3380,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3381,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3381,1
    - Dst: executeCode
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc:3384,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 3
    argNames:
    - ' luaCtx'
    - ' config'
    - configCheck
    argTypes:
    - LuaContext
    - std::string
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3385
      start: 3369
    functionDepth: 1
    functionLinenumber: 3369
    functionLinenumberEnd: 3385
    functionName: dnsdist::configuration::lua::loadLuaConfigurationFile
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc
    functionUses: 1
    functionsReached:
    - SLOG
    - Logging::Loggable
    - std::runtime_error
    - executeCode
    - VERBOSESLOG
    - warnlog
    - infolog
    - dnsdist::logging::getTopLogger
    linkageType: ''
    returnType: void
    signature: void loadLuaConfigurationFile(LuaContext& luaCtx, const std::string&
      config, bool configCheck)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 37
    functionDepth: 0
    functionLinenumber: 37
    functionLinenumberEnd: 40
    functionName: DummyQuerySender::active
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistasync.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool active() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - ' now'
    - ' response'
    argTypes:
    - struct timeval
    - TCPResponse
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 42
    functionDepth: 0
    functionLinenumber: 42
    functionLinenumberEnd: 44
    functionName: DummyQuerySender::handleResponse
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistasync.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void handleResponse([[maybe_unused]] const struct timeval& now, [[maybe_unused]]
      TCPResponse&& response) override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - ' now'
    - ' response'
    argTypes:
    - struct timeval
    - TCPResponse
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 46
    functionDepth: 0
    functionLinenumber: 46
    functionLinenumberEnd: 48
    functionName: DummyQuerySender::handleXFRResponse
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistasync.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void handleXFRResponse([[maybe_unused]] const struct timeval& now,
      [[maybe_unused]] TCPResponse&& response) override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 2
    argNames:
    - ' now'
    - ' response'
    argTypes:
    - struct timeval
    - TCPResponse
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 50
    functionDepth: 0
    functionLinenumber: 50
    functionLinenumberEnd: 53
    functionName: DummyQuerySender::notifyIOError
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistasync.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void notifyIOError([[maybe_unused]] const struct timeval& now, [[maybe_unused]]
      TCPResponse&& response) override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<DummyQuerySender>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistasync.cc:63,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 60
    functionDepth: 0
    functionLinenumber: 60
    functionLinenumberEnd: 64
    functionName: DummyCrossProtocolQuery
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistasync.cc
    functionUses: 0
    functionsReached:
    - std::make_shared<DummyQuerySender>
    linkageType: ''
    returnType: void
    signature: void DummyCrossProtocolQuery()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 66
    functionDepth: 0
    functionLinenumber: 66
    functionLinenumberEnd: 69
    functionName: getTCPQuerySender
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistasync.cc
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: std::shared_ptr<TCPQuerySender>
    signature: std::shared_ptr<TCPQuerySender> getTCPQuerySender() override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::make_unique<dnsdist::AsynchronousHolder>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistasync.cc:76,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistasync.cc:77,1
    - Dst: auto::empty
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistasync.cc:77,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistasync.cc:80,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistasync.cc:81,1
    - Dst: gettimeofday
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistasync.cc:88,1
    - Dst: auto::push
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistasync.cc:93,1
    - Dst: std::make_unique<DummyCrossProtocolQuery>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistasync.cc:93,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistasync.cc:94,1
    - Dst: auto::empty
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistasync.cc:94,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistasync.cc:96,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistasync.cc:97,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistasync.cc:99,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistasync.cc:100,1
    - Dst: auto::empty
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistasync.cc:100,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistasync.cc:102,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistasync.cc:103,1
    - Dst: usleep
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistasync.cc:107,1
    - Dst: auto::stop
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistasync.cc:110,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 111
      start: 74
    functionDepth: 0
    functionLinenumber: 74
    functionLinenumberEnd: 111
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistasync.cc
    functionUses: 0
    functionsReached:
    - auto::stop
    - std::make_unique<DummyCrossProtocolQuery>
    - auto::get
    - std::make_unique<dnsdist::AsynchronousHolder>
    - auto::push
    - usleep
    - gettimeofday
    - BOOST_CHECK
    - auto::empty
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_Basic)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::make_unique<dnsdist::AsynchronousHolder>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistasync.cc:115,1
    - Dst: gettimeofday
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistasync.cc:121,1
    - Dst: auto::push
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistasync.cc:126,1
    - Dst: std::make_unique<DummyCrossProtocolQuery>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistasync.cc:126,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistasync.cc:127,1
    - Dst: auto::empty
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistasync.cc:127,1
    - Dst: auto::push
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistasync.cc:129,1
    - Dst: std::make_unique<DummyCrossProtocolQuery>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistasync.cc:129,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistasync.cc:131,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistasync.cc:132,1
    - Dst: auto::empty
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistasync.cc:132,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistasync.cc:134,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistasync.cc:135,1
    - Dst: usleep
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistasync.cc:139,1
    - Dst: auto::stop
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistasync.cc:142,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 143
      start: 113
    functionDepth: 0
    functionLinenumber: 113
    functionLinenumberEnd: 143
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistasync.cc
    functionUses: 0
    functionsReached:
    - auto::stop
    - std::make_unique<DummyCrossProtocolQuery>
    - auto::get
    - std::make_unique<dnsdist::AsynchronousHolder>
    - auto::push
    - usleep
    - gettimeofday
    - BOOST_CHECK
    - auto::empty
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_Collison)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::make_unique<dnsdist::AsynchronousHolder>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistasync.cc:147,1
    - Dst: std::make_unique<DummyCrossProtocolQuery>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistasync.cc:156,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistasync.cc:158,1
    - Dst: gettimeofday
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistasync.cc:159,1
    - Dst: auto::push
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistasync.cc:161,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistasync.cc:161,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistasync.cc:162,1
    - Dst: auto::empty
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistasync.cc:162,1
    - Dst: auto::empty
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistasync.cc:169,1
    - Dst: std::shared_ptr::errorRaised::load
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistasync.cc:169,1
    - Dst: usleep
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistasync.cc:172,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistasync.cc:175,1
    - Dst: auto::empty
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistasync.cc:175,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistasync.cc:176,1
    - Dst: std::shared_ptr::errorRaised::load
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistasync.cc:176,1
    - Dst: auto::stop
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistasync.cc:178,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 179
      start: 145
    functionDepth: 0
    functionLinenumber: 145
    functionLinenumberEnd: 179
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistasync.cc
    functionUses: 0
    functionsReached:
    - std::shared_ptr::errorRaised::load
    - std::make_unique<DummyCrossProtocolQuery>
    - std::move
    - auto::stop
    - std::make_unique<dnsdist::AsynchronousHolder>
    - auto::push
    - usleep
    - BOOST_REQUIRE
    - gettimeofday
    - BOOST_CHECK
    - auto::empty
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_TimeoutFailClose)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::make_unique<dnsdist::AsynchronousHolder>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistasync.cc:183,1
    - Dst: gettimeofday
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistasync.cc:187,1
    - Dst: std::make_unique<DummyCrossProtocolQuery>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistasync.cc:194,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistasync.cc:196,1
    - Dst: auto::push
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistasync.cc:197,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistasync.cc:197,1
    - Dst: auto::empty
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistasync.cc:205,1
    - Dst: std::shared_ptr::errorRaised::load
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistasync.cc:205,1
    - Dst: usleep
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistasync.cc:208,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistasync.cc:211,1
    - Dst: auto::empty
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistasync.cc:211,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistasync.cc:212,1
    - Dst: std::shared_ptr::errorRaised::load
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistasync.cc:212,1
    - Dst: auto::stop
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistasync.cc:214,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 215
      start: 181
    functionDepth: 0
    functionLinenumber: 181
    functionLinenumberEnd: 215
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistasync.cc
    functionUses: 0
    functionsReached:
    - std::shared_ptr::errorRaised::load
    - std::make_unique<DummyCrossProtocolQuery>
    - std::move
    - auto::stop
    - std::make_unique<dnsdist::AsynchronousHolder>
    - auto::push
    - usleep
    - BOOST_REQUIRE
    - gettimeofday
    - BOOST_CHECK
    - auto::empty
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_AddingExpiredEvent)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Base64Encode
      Src: /src/pdns/pdns/dnsdistdist/test-base64_cc.cc:19,1
    - Dst: B64Decode
      Src: /src/pdns/pdns/dnsdistdist/test-base64_cc.cc:22,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-base64_cc.cc:23,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 24
      start: 17
    functionDepth: 0
    functionLinenumber: 17
    functionLinenumberEnd: 24
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-base64_cc.cc
    functionUses: 0
    functionsReached:
    - B64Decode
    - BOOST_CHECK_EQUAL
    - Base64Encode
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_Base64_Roundtrip)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: AuthPacketCache::insert
      Src: /src/pdns/pdns/dnsdistdist/test-base64_cc.cc:36,1
    - Dst: Base64Encode
      Src: /src/pdns/pdns/dnsdistdist/test-base64_cc.cc:72,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-base64_cc.cc:73,1
    - Dst: B64Decode
      Src: /src/pdns/pdns/dnsdistdist/test-base64_cc.cc:75,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-base64_cc.cc:76,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 33
    functionDepth: 0
    functionLinenumber: 33
    functionLinenumberEnd: 78
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-base64_cc.cc
    functionUses: 0
    functionsReached:
    - B64Decode
    - AuthPacketCache::insert
    - BOOST_CHECK_EQUAL
    - Base64Encode
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_Base64_Encode)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: B64Decode
      Src: /src/pdns/pdns/dnsdistdist/test-base64_cc.cc:84,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-base64_cc.cc:88,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-base64_cc.cc:91,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 80
    functionDepth: 0
    functionLinenumber: 80
    functionLinenumberEnd: 93
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-base64_cc.cc
    functionUses: 0
    functionsReached:
    - BOOST_CHECK
    - B64Decode
    - BOOST_CHECK_EQUAL
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_Base64_Decode_Garbage)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 34
      start: 32
    functionDepth: 0
    functionLinenumber: 32
    functionLinenumberEnd: 34
    functionName: ~DNSRule()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~DNSRule()
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - s
    argTypes:
    - MatchAction
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 57
    functionDepth: 0
    functionLinenumber: 57
    functionLinenumberEnd: 68
    functionName: BPFFilter::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/bpf-filter.hh
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string toString(MatchAction s) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 84
    functionDepth: 0
    functionLinenumber: 84
    functionLinenumberEnd: 84
    functionName: BPFFilter::BPFFilter
    functionSourceFile: /src/pdns/pdns/dnsdistdist/bpf-filter.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void BPFFilter(const BPFFilter&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 85
    functionDepth: 0
    functionLinenumber: 85
    functionLinenumberEnd: 85
    functionName: BPFFilter::BPFFilter
    functionSourceFile: /src/pdns/pdns/dnsdistdist/bpf-filter.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void BPFFilter(BPFFilter&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 86
    functionDepth: 0
    functionLinenumber: 86
    functionLinenumberEnd: 86
    functionName: '& operator=(const BPFFilter&)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/bpf-filter.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: BPFFilter
    signature: BPFFilter & operator=(const BPFFilter&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 87
    functionDepth: 0
    functionLinenumber: 87
    functionLinenumberEnd: 87
    functionName: '& operator=(BPFFilter&&)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/bpf-filter.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: BPFFilter
    signature: BPFFilter & operator=(BPFFilter&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 113
      start: 111
    functionDepth: 0
    functionLinenumber: 111
    functionLinenumberEnd: 113
    functionName: BPFFilter::Map
    functionSourceFile: /src/pdns/pdns/dnsdistdist/bpf-filter.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Map()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Netmask::isIPv4
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.hh:145,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.hh:146,1
    - Dst: Netmask::getNetwork
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.hh:148,1
    - Dst: Netmask::getBits
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.hh:149,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - address
    argTypes:
    - Netmask
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 150
      start: 143
    functionDepth: 0
    functionLinenumber: 143
    functionLinenumberEnd: 150
    functionName: BPFFilter::CIDR4
    functionSourceFile: /src/pdns/pdns/dnsdistdist/bpf-filter.hh
    functionUses: 0
    functionsReached:
    - Netmask::isIPv4
    - Netmask::getNetwork
    - Netmask::getBits
    - std::runtime_error
    linkageType: ''
    returnType: void
    signature: void CIDR4(Netmask address)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 151
      start: 151
    functionDepth: 0
    functionLinenumber: 151
    functionLinenumberEnd: 151
    functionName: BPFFilter::CIDR4
    functionSourceFile: /src/pdns/pdns/dnsdistdist/bpf-filter.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void CIDR4()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Netmask::isIPv6
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.hh:159,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.hh:160,1
    - Dst: Netmask::getNetwork
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.hh:162,1
    - Dst: Netmask::getBits
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.hh:163,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - address
    argTypes:
    - Netmask
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 164
      start: 157
    functionDepth: 0
    functionLinenumber: 157
    functionLinenumberEnd: 164
    functionName: BPFFilter::CIDR6
    functionSourceFile: /src/pdns/pdns/dnsdistdist/bpf-filter.hh
    functionUses: 0
    functionsReached:
    - std::runtime_error
    - Netmask::getNetwork
    - Netmask::getBits
    - Netmask::isIPv6
    linkageType: ''
    returnType: void
    signature: void CIDR6(Netmask address)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 165
      start: 165
    functionDepth: 0
    functionLinenumber: 165
    functionLinenumberEnd: 165
    functionName: BPFFilter::CIDR6
    functionSourceFile: /src/pdns/pdns/dnsdistdist/bpf-filter.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void CIDR6()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::unique_ptr<FDMultiplexer>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc:32,1
    - Dst: FDMultiplexer::getMultiplexerSilent
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc:32,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 34
      start: 31
    functionDepth: 0
    functionLinenumber: 31
    functionLinenumberEnd: 34
    functionName: NetworkListener::ListenerData::ListenerData()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc
    functionUses: 0
    functionsReached:
    - FDMultiplexer::getMultiplexerSilent
    - std::unique_ptr<FDMultiplexer>
    linkageType: ''
    returnType: void
    signature: void NetworkListener::ListenerData::ListenerData()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<ListenerData>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc:37,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 39
      start: 36
    functionDepth: 0
    functionLinenumber: 36
    functionLinenumberEnd: 39
    functionName: dnsdist::NetworkListener::NetworkListener
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc
    functionUses: 0
    functionsReached:
    - std::make_shared<ListenerData>
    linkageType: ''
    returnType: void
    signature: void NetworkListener::NetworkListener()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: shutdown
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc:47,1
    - Dst: second::getHandle
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc:47,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 41
    functionDepth: 0
    functionLinenumber: 41
    functionLinenumberEnd: 49
    functionName: NetworkListener::~NetworkListener()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc
    functionUses: 0
    functionsReached:
    - second::getHandle
    - shutdown
    linkageType: ''
    returnType: void
    signature: void NetworkListener::~NetworkListener()
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: boost::any_cast<std::shared_ptr<NetworkListener::CBData>>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc:53,1
    - Dst: recvfrom
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc:58,1
    - Dst: std::string::resize
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc:60,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc:60,1
    - Dst: std::string::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc:63,1
    - Dst: std::string::resize
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc:64,1
    - Dst: memset
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc:68,1
    - Dst: recvfrom
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc:72,1
    - Dst: std::string::at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc:72,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc:72,1
    - Dst: reinterpret_cast<sockaddr*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc:72,1
    - Dst: std::string::resize
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc:74,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc:74,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc:78,1
    - Dst: strlen
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc:78,1
    - Dst: auto::d_cb
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc:81,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc:81,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc:84,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc:84,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc:84,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc:85,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc:85,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc:88,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc:88,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc:89,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 21
    argCount: 2
    argNames:
    - desc
    - ' param'
    argTypes:
    - int
    - FDMultiplexer::funcparam_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 51
    functionDepth: 1
    functionLinenumber: 51
    functionLinenumberEnd: 92
    functionName: dnsdist::NetworkListener::readCB
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc
    functionUses: 0
    functionsReached:
    - auto::d_cb
    - std::string::at
    - static_cast<size_t>
    - std::move
    - reinterpret_cast<sockaddr*>
    - what
    - boost::any_cast<std::shared_ptr<NetworkListener::CBData>>
    - recvfrom
    - VERBOSESLOG
    - infolog
    - memset
    - std::string::resize
    - strlen
    - dnsdist::logging::getTopLogger
    - std::string::empty
    - std::string
    - std::string::size
    linkageType: ''
    returnType: void
    signature: void NetworkListener::readCB(int desc, FDMultiplexer::funcparam_t&
      param)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc:97,1
    - Dst: makeUNsockaddr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc:101,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc:102,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc:105,1
    - Dst: unlink
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc:107,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc:107,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc:111,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc:111,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc:111,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc:112,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc:112,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc:121,1
    - Dst: bind
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc:125,1
    - Dst: Socket::getHandle
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc:125,1
    - Dst: reinterpret_cast<const struct sockaddr*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc:125,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc:130,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc:130,1
    - Dst: Socket::setNonBlocking
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc:133,1
    - Dst: std::make_shared<CBData>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc:135,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc:137,1
    - Dst: d_mplexer::addReadFD
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc:138,1
    - Dst: Socket::getHandle
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc:138,1
    - Dst: d_sockets::insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc:140,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc:140,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 30
    argCount: 3
    argNames:
    - ' path'
    - endpointID
    - callback
    argTypes:
    - std::string
    - NetworkListener::EndpointID
    - NetworkListener::NetworkDatagramCB
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 142
      start: 94
    functionDepth: 1
    functionLinenumber: 94
    functionLinenumberEnd: 142
    functionName: dnsdist::NetworkListener::addUnixListeningEndpoint
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc
    functionUses: 0
    functionsReached:
    - stringerror
    - d_sockets::insert
    - reinterpret_cast<const struct sockaddr*>
    - Logging::Loggable
    - Socket::setNonBlocking
    - bind
    - size
    - dnsdist::logging::getTopLogger
    - c_str
    - at
    - std::runtime_error
    - VERBOSESLOG
    - std::make_shared<CBData>
    - makeUNsockaddr
    - std::move
    - Socket::getHandle
    - d_mplexer::addReadFD
    - infolog
    - unlink
    linkageType: ''
    returnType: bool
    signature: bool NetworkListener::addUnixListeningEndpoint(const std::string& path,
      NetworkListener::EndpointID endpointID, NetworkListener::NetworkDatagramCB callback)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::configuration::refreshLocalRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc:150,1
    - Dst: d_sockets::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc:152,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc:153,1
    - Dst: d_mplexer::run
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc:156,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc:156,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 3
    argNames:
    - ' data'
    - ' now'
    - timeout
    argTypes:
    - ListenerData
    - timeval
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 157
      start: 144
    functionDepth: 2
    functionLinenumber: 144
    functionLinenumberEnd: 157
    functionName: dnsdist::NetworkListener::runOnce
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc
    functionUses: 0
    functionsReached:
    - d_sockets::empty
    - runtime_error
    - d_mplexer::run
    - dnsdist::configuration::refreshLocalRuntimeConfiguration
    - static_cast<int>
    linkageType: ''
    returnType: void
    signature: void NetworkListener::runOnce(ListenerData& data, timeval& now, uint32_t
      timeout)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::NetworkListener::runOnce
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc:161,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' now'
    - timeout
    argTypes:
    - timeval
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 162
      start: 159
    functionDepth: 1
    functionLinenumber: 159
    functionLinenumberEnd: 162
    functionName: dnsdist::NetworkListener::runOnce
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc
    functionUses: 1
    functionsReached:
    - dnsdist::NetworkListener::runOnce
    linkageType: ''
    returnType: void
    signature: void NetworkListener::runOnce(timeval& now, uint32_t timeout)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: setThreadName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc:167,1
    - Dst: dnsdist::NetworkListener::runOnce
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc:171,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - data
    argTypes:
    - std::shared_ptr<ListenerData>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 173
      start: 165
    functionDepth: 3
    functionLinenumber: 165
    functionLinenumberEnd: 173
    functionName: dnsdist::NetworkListener::mainThread
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc
    functionUses: 0
    functionsReached:
    - dnsdist::NetworkListener::runOnce
    - setThreadName
    linkageType: ''
    returnType: void
    signature: void NetworkListener::mainThread(std::shared_ptr<ListenerData> data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::thread
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc:177,1
    - Dst: dnsdist::NetworkListener::mainThread
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc:178,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc:178,1
    - Dst: std::thread::detach
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc:180,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 181
      start: 175
    functionDepth: 4
    functionLinenumber: 175
    functionLinenumberEnd: 181
    functionName: dnsdist::NetworkListener::start
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc
    functionUses: 0
    functionsReached:
    - std::thread
    - std::thread::detach
    - std::move
    - dnsdist::NetworkListener::mainThread
    linkageType: ''
    returnType: void
    signature: void NetworkListener::start()
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: makeUNsockaddr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc:187,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc:188,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc:192,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc:196,1
    - Dst: connect
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc:199,1
    - Dst: getHandle
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc:199,1
    - Dst: reinterpret_cast<const struct sockaddr*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc:199,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc:204,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc:204,1
    - Dst: setNonBlocking
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc:207,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 1
    argNames:
    - ' path'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 208
      start: 183
    functionDepth: 0
    functionLinenumber: 183
    functionLinenumberEnd: 208
    functionName: dnsdist::NetworkEndpoint::NetworkEndpoint
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc
    functionUses: 0
    functionsReached:
    - at
    - std::runtime_error
    - setNonBlocking
    - stringerror
    - getHandle
    - size
    - reinterpret_cast<const struct sockaddr*>
    - makeUNsockaddr
    - connect
    linkageType: ''
    returnType: void
    signature: void NetworkEndpoint::NetworkEndpoint(const std::string& path)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Socket::send
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc:212,1
    - Dst: getHandle
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc:212,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc:212,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc:212,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc:217,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc:217,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ' payload'
    argTypes:
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 218
      start: 210
    functionDepth: 0
    functionLinenumber: 210
    functionLinenumberEnd: 218
    functionName: dnsdist::NetworkEndpoint::send
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc
    functionUses: 0
    functionsReached:
    - Socket::send
    - static_cast<size_t>
    - getHandle
    - size
    - data
    linkageType: ''
    returnType: bool
    signature: bool NetworkEndpoint::send(const std::string_view& payload) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::unique_ptr<FDMultiplexer>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc:32,1
    - Dst: FDMultiplexer::getMultiplexerSilent
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc:32,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 34
      start: 31
    functionDepth: 0
    functionLinenumber: 31
    functionLinenumberEnd: 34
    functionName: NetworkListener::ListenerData::ListenerData()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc
    functionUses: 0
    functionsReached:
    - FDMultiplexer::getMultiplexerSilent
    - std::unique_ptr<FDMultiplexer>
    linkageType: ''
    returnType: void
    signature: void NetworkListener::ListenerData::ListenerData()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<ListenerData>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc:37,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 39
      start: 36
    functionDepth: 0
    functionLinenumber: 36
    functionLinenumberEnd: 39
    functionName: dnsdist::NetworkListener::NetworkListener
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc
    functionUses: 0
    functionsReached:
    - std::make_shared<ListenerData>
    linkageType: ''
    returnType: void
    signature: void NetworkListener::NetworkListener()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: shutdown
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc:47,1
    - Dst: second::getHandle
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc:47,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 41
    functionDepth: 0
    functionLinenumber: 41
    functionLinenumberEnd: 49
    functionName: NetworkListener::~NetworkListener()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc
    functionUses: 0
    functionsReached:
    - second::getHandle
    - shutdown
    linkageType: ''
    returnType: void
    signature: void NetworkListener::~NetworkListener()
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: boost::any_cast<std::shared_ptr<NetworkListener::CBData>>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc:53,1
    - Dst: recvfrom
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc:58,1
    - Dst: std::string::resize
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc:60,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc:60,1
    - Dst: std::string::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc:63,1
    - Dst: std::string::resize
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc:64,1
    - Dst: memset
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc:68,1
    - Dst: recvfrom
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc:72,1
    - Dst: std::string::at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc:72,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc:72,1
    - Dst: reinterpret_cast<sockaddr*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc:72,1
    - Dst: std::string::resize
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc:74,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc:74,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc:78,1
    - Dst: strlen
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc:78,1
    - Dst: auto::d_cb
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc:81,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc:81,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc:84,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc:84,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc:84,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc:85,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc:85,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc:88,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc:88,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc:89,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 21
    argCount: 2
    argNames:
    - desc
    - ' param'
    argTypes:
    - int
    - FDMultiplexer::funcparam_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 51
    functionDepth: 1
    functionLinenumber: 51
    functionLinenumberEnd: 92
    functionName: dnsdist::NetworkListener::readCB
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc
    functionUses: 0
    functionsReached:
    - auto::d_cb
    - std::string::at
    - static_cast<size_t>
    - std::move
    - reinterpret_cast<sockaddr*>
    - what
    - boost::any_cast<std::shared_ptr<NetworkListener::CBData>>
    - recvfrom
    - VERBOSESLOG
    - infolog
    - memset
    - std::string::resize
    - strlen
    - dnsdist::logging::getTopLogger
    - std::string::empty
    - std::string
    - std::string::size
    linkageType: ''
    returnType: void
    signature: void NetworkListener::readCB(int desc, FDMultiplexer::funcparam_t&
      param)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc:97,1
    - Dst: makeUNsockaddr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc:101,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc:102,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc:105,1
    - Dst: unlink
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc:107,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc:107,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc:111,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc:111,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc:111,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc:112,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc:112,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc:121,1
    - Dst: bind
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc:125,1
    - Dst: Socket::getHandle
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc:125,1
    - Dst: reinterpret_cast<const struct sockaddr*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc:125,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc:130,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc:130,1
    - Dst: Socket::setNonBlocking
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc:133,1
    - Dst: std::make_shared<CBData>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc:135,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc:137,1
    - Dst: d_mplexer::addReadFD
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc:138,1
    - Dst: Socket::getHandle
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc:138,1
    - Dst: d_sockets::insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc:140,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc:140,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 30
    argCount: 3
    argNames:
    - ' path'
    - endpointID
    - callback
    argTypes:
    - std::string
    - NetworkListener::EndpointID
    - NetworkListener::NetworkDatagramCB
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 142
      start: 94
    functionDepth: 1
    functionLinenumber: 94
    functionLinenumberEnd: 142
    functionName: dnsdist::NetworkListener::addUnixListeningEndpoint
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc
    functionUses: 0
    functionsReached:
    - stringerror
    - d_sockets::insert
    - reinterpret_cast<const struct sockaddr*>
    - Logging::Loggable
    - Socket::setNonBlocking
    - bind
    - size
    - dnsdist::logging::getTopLogger
    - c_str
    - at
    - std::runtime_error
    - VERBOSESLOG
    - std::make_shared<CBData>
    - makeUNsockaddr
    - std::move
    - Socket::getHandle
    - d_mplexer::addReadFD
    - infolog
    - unlink
    linkageType: ''
    returnType: bool
    signature: bool NetworkListener::addUnixListeningEndpoint(const std::string& path,
      NetworkListener::EndpointID endpointID, NetworkListener::NetworkDatagramCB callback)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::configuration::refreshLocalRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc:150,1
    - Dst: d_sockets::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc:152,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc:153,1
    - Dst: d_mplexer::run
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc:156,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc:156,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 3
    argNames:
    - ' data'
    - ' now'
    - timeout
    argTypes:
    - ListenerData
    - timeval
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 157
      start: 144
    functionDepth: 2
    functionLinenumber: 144
    functionLinenumberEnd: 157
    functionName: dnsdist::NetworkListener::runOnce
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc
    functionUses: 2
    functionsReached:
    - d_sockets::empty
    - runtime_error
    - d_mplexer::run
    - dnsdist::configuration::refreshLocalRuntimeConfiguration
    - static_cast<int>
    linkageType: ''
    returnType: void
    signature: void NetworkListener::runOnce(ListenerData& data, timeval& now, uint32_t
      timeout)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::NetworkListener::runOnce
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc:161,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' now'
    - timeout
    argTypes:
    - timeval
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 162
      start: 159
    functionDepth: 1
    functionLinenumber: 159
    functionLinenumberEnd: 162
    functionName: dnsdist::NetworkListener::runOnce
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc
    functionUses: 3
    functionsReached:
    - dnsdist::NetworkListener::runOnce
    linkageType: ''
    returnType: void
    signature: void NetworkListener::runOnce(timeval& now, uint32_t timeout)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: setThreadName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc:167,1
    - Dst: dnsdist::NetworkListener::runOnce
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc:171,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - data
    argTypes:
    - std::shared_ptr<ListenerData>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 173
      start: 165
    functionDepth: 3
    functionLinenumber: 165
    functionLinenumberEnd: 173
    functionName: dnsdist::NetworkListener::mainThread
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc
    functionUses: 1
    functionsReached:
    - dnsdist::NetworkListener::runOnce
    - setThreadName
    linkageType: ''
    returnType: void
    signature: void NetworkListener::mainThread(std::shared_ptr<ListenerData> data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::thread
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc:177,1
    - Dst: dnsdist::NetworkListener::mainThread
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc:178,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc:178,1
    - Dst: std::thread::detach
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc:180,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 181
      start: 175
    functionDepth: 4
    functionLinenumber: 175
    functionLinenumberEnd: 181
    functionName: dnsdist::NetworkListener::start
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc
    functionUses: 0
    functionsReached:
    - std::thread
    - std::thread::detach
    - std::move
    - dnsdist::NetworkListener::mainThread
    linkageType: ''
    returnType: void
    signature: void NetworkListener::start()
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: makeUNsockaddr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc:187,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc:188,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc:192,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc:196,1
    - Dst: connect
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc:199,1
    - Dst: getHandle
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc:199,1
    - Dst: reinterpret_cast<const struct sockaddr*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc:199,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc:204,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc:204,1
    - Dst: setNonBlocking
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc:207,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 1
    argNames:
    - ' path'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 208
      start: 183
    functionDepth: 0
    functionLinenumber: 183
    functionLinenumberEnd: 208
    functionName: dnsdist::NetworkEndpoint::NetworkEndpoint
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc
    functionUses: 0
    functionsReached:
    - at
    - std::runtime_error
    - setNonBlocking
    - stringerror
    - getHandle
    - size
    - reinterpret_cast<const struct sockaddr*>
    - makeUNsockaddr
    - connect
    linkageType: ''
    returnType: void
    signature: void NetworkEndpoint::NetworkEndpoint(const std::string& path)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Socket::send
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc:212,1
    - Dst: getHandle
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc:212,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc:212,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc:212,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc:217,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc:217,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ' payload'
    argTypes:
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 218
      start: 210
    functionDepth: 0
    functionLinenumber: 210
    functionLinenumberEnd: 218
    functionName: dnsdist::NetworkEndpoint::send
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc
    functionUses: 0
    functionsReached:
    - Socket::send
    - static_cast<size_t>
    - getHandle
    - size
    - data
    linkageType: ''
    returnType: bool
    signature: bool NetworkEndpoint::send(const std::string_view& payload) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 32
      start: 31
    functionDepth: 0
    functionLinenumber: 31
    functionLinenumberEnd: 32
    functionName: DEBUGLOG
    functionSourceFile: /src/pdns/pdns/dnsdistdist/doq-common.cc
    functionUses: 16
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEBUGLOG(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::crypto::authenticated::Nonce::init
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:45,1
    - Dst: toByteString
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:47,1
    - Dst: time
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:49,1
    - Dst: PacketBuffer::reserve
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:51,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:51,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:51,1
    - Dst: PacketBuffer::insert
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:53,1
    - Dst: PacketBuffer::end
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:53,1
    - Dst: reinterpret_cast<const uint8_t*>
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:53,1
    - Dst: reinterpret_cast<const uint8_t*>
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:53,1
    - Dst: PacketBuffer::insert
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:54,1
    - Dst: PacketBuffer::end
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:54,1
    - Dst: auto::begin
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:54,1
    - Dst: auto::end
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:54,1
    - Dst: PacketBuffer::insert
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:55,1
    - Dst: PacketBuffer::end
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:55,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:55,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:55,1
    - Dst: dnsdist::crypto::authenticated::encryptSym
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:57,1
    - Dst: std::string_view
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:57,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:57,1
    - Dst: PacketBuffer::data
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:57,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:57,1
    - Dst: PacketBuffer::reserve
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:60,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:60,1
    - Dst: dnsdist::crypto::authenticated::Nonce::value::size
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:60,1
    - Dst: PacketBuffer::insert
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:61,1
    - Dst: PacketBuffer::begin
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:61,1
    - Dst: auto::begin
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:61,1
    - Dst: auto::end
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:61,1
    - Dst: PacketBuffer::insert
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:62,1
    - Dst: PacketBuffer::begin
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:62,1
    - Dst: dnsdist::crypto::authenticated::Nonce::value::begin
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:62,1
    - Dst: dnsdist::crypto::authenticated::Nonce::value::end
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:62,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:66,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:66,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:66,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:67,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:67,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 2
    argNames:
    - ' dcid'
    - ' peer'
    argTypes:
    - PacketBuffer
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 41
    functionDepth: 2
    functionLinenumber: 41
    functionLinenumberEnd: 70
    functionName: dnsdist::doq::mintToken
    functionSourceFile: /src/pdns/pdns/dnsdistdist/doq-common.cc
    functionUses: 0
    functionsReached:
    - dnsdist::crypto::authenticated::Nonce::value::size
    - PacketBuffer::end
    - reinterpret_cast<const uint8_t*>
    - PacketBuffer::size
    - auto::begin
    - dnsdist::crypto::authenticated::Nonce::value::begin
    - auto::size
    - PacketBuffer::begin
    - dnsdist::crypto::authenticated::Nonce::value::end
    - time
    - dnsdist::crypto::authenticated::encryptSym
    - size
    - dnsdist::logging::getTopLogger
    - begin
    - std::string_view
    - VERBOSESLOG
    - toByteString
    - reinterpret_cast<const char*>
    - PacketBuffer::data
    - what
    - PacketBuffer::insert
    - PacketBuffer::reserve
    - end
    - infolog
    - dnsdist::crypto::authenticated::Nonce::init
    - auto::end
    linkageType: ''
    returnType: PacketBuffer
    signature: PacketBuffer mintToken(const PacketBuffer& dcid, const ComboAddress&
      peer)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: reserve
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:74,1
    - Dst: insert
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:76,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:76,1
    - Dst: dnsdist::getRandomValue
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:76,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:76,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - ' buffer'
    - size
    argTypes:
    - PacketBuffer
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 72
    functionDepth: 1
    functionLinenumber: 72
    functionLinenumberEnd: 79
    functionName: dnsdist::doq::fillRandom
    functionSourceFile: /src/pdns/pdns/dnsdistdist/doq-common.cc
    functionUses: 0
    functionsReached:
    - pdns::max
    - dnsdist::getRandomValue
    - end
    - reserve
    - insert
    linkageType: ''
    returnType: void
    signature: void fillRandom(PacketBuffer& buffer, size_t size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::doq::fillRandom
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:85,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 81
    functionDepth: 2
    functionLinenumber: 81
    functionLinenumberEnd: 88
    functionName: dnsdist::doq::getCID
    functionSourceFile: /src/pdns/pdns/dnsdistdist/doq-common.cc
    functionUses: 0
    functionsReached:
    - dnsdist::doq::fillRandom
    linkageType: ''
    returnType: std::optional<PacketBuffer>
    signature: std::optional<PacketBuffer> getCID()
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: toByteString
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:95,1
    - Dst: time
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:96,1
    - Dst: dnsdist::crypto::authenticated::Nonce::value::size
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:97,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:97,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:98,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:102,1
    - Dst: dnsdist::crypto::authenticated::Nonce::value::data
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:102,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:102,1
    - Dst: dnsdist::crypto::authenticated::Nonce::value::size
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:102,1
    - Dst: std::string_view
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:105,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:105,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:105,1
    - Dst: dnsdist::crypto::authenticated::Nonce::value::size
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:105,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:105,1
    - Dst: dnsdist::crypto::authenticated::Nonce::value::size
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:105,1
    - Dst: dnsdist::crypto::authenticated::decryptSym
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:106,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:108,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:108,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:113,1
    - Dst: auto::data
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:113,1
    - Dst: std::memcmp
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:118,1
    - Dst: auto::at
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:118,1
    - Dst: auto::begin
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:118,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:118,1
    - Dst: PacketBuffer
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:122,1
    - Dst: auto::begin
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:122,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:122,1
    - Dst: auto::end
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:122,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:125,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:125,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:125,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:126,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:126,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 21
    argCount: 2
    argNames:
    - ' token'
    - ' peer'
    argTypes:
    - PacketBuffer
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 129
      start: 91
    functionDepth: 2
    functionLinenumber: 91
    functionLinenumberEnd: 129
    functionName: dnsdist::doq::validateToken
    functionSourceFile: /src/pdns/pdns/dnsdistdist/doq-common.cc
    functionUses: 0
    functionsReached:
    - dnsdist::crypto::authenticated::Nonce::value::size
    - auto::begin
    - auto::size
    - time
    - size
    - dnsdist::crypto::authenticated::Nonce::value::data
    - dnsdist::logging::getTopLogger
    - at
    - std::string_view
    - VERBOSESLOG
    - auto::data
    - toByteString
    - reinterpret_cast<const char*>
    - auto::at
    - std::memcmp
    - memcpy
    - what
    - infolog
    - PacketBuffer
    - data
    - auto::end
    - dnsdist::crypto::authenticated::decryptSym
    linkageType: ''
    returnType: std::optional<PacketBuffer>
    signature: std::optional<PacketBuffer> validateToken(const PacketBuffer& token,
      const ComboAddress& peer)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: sendto
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:148,1
    - Dst: getHandle
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:148,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:148,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:148,1
    - Dst: reinterpret_cast<const struct sockaddr*>
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:148,1
    - Dst: getSocklen
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:148,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:151,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:151,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:151,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:151,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:151,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:152,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:152,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:152,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:152,1
    - Dst: sendMsgWithOptions
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:158,1
    - Dst: getHandle
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:158,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:158,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:158,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:161,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:161,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:161,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:161,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:161,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:161,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:162,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:162,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:162,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:162,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:162,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:162,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 5
    argNames:
    - ' sock'
    - ' peer'
    - ' local'
    - ' buffer'
    - socketBoundToAny
    argTypes:
    - Socket
    - ComboAddress
    - ComboAddress
    - PacketBuffer
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 164
      start: 131
    functionDepth: 1
    functionLinenumber: 131
    functionLinenumberEnd: 164
    functionName: dnsdist::doq::sendFromTo
    functionSourceFile: /src/pdns/pdns/dnsdistdist/doq-common.cc
    functionUses: 0
    functionsReached:
    - Logging::Loggable
    - stringerror
    - toStringWithPort
    - what
    - getHandle
    - VERBOSESLOG
    - size
    - infolog
    - reinterpret_cast<const struct sockaddr*>
    - dnsdist::logging::getTopLogger
    - data
    - sendto
    - getSocklen
    - sendMsgWithOptions
    linkageType: ''
    returnType: void
    signature: void sendFromTo(Socket& sock, const ComboAddress& peer, const ComboAddress&
      local, PacketBuffer& buffer, [[maybe_unused]] bool socketBoundToAny)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::doq::getCID
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:168,1
    - Dst: dnsdist::doq::mintToken
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:173,1
    - Dst: resize
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:175,1
    - Dst: quiche_retry
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:176,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:176,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:176,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:177,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:177,1
    - Dst: auto::data
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:178,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:178,1
    - Dst: auto::data
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:179,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:179,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:181,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:181,1
    - Dst: DEBUGLOG
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:184,1
    - Dst: resize
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:188,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:188,1
    - Dst: dnsdist::doq::sendFromTo
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:189,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 8
    argNames:
    - ' sock'
    - ' clientConnID'
    - ' serverConnID'
    - ' peer'
    - ' localAddr'
    - version
    - ' buffer'
    - socketBoundToAny
    argTypes:
    - Socket
    - PacketBuffer
    - PacketBuffer
    - ComboAddress
    - ComboAddress
    - uint32_t
    - PacketBuffer
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 190
      start: 166
    functionDepth: 3
    functionLinenumber: 166
    functionLinenumberEnd: 190
    functionName: dnsdist::doq::handleStatelessRetry
    functionSourceFile: /src/pdns/pdns/dnsdistdist/doq-common.cc
    functionUses: 0
    functionsReached:
    - static_cast<size_t>
    - quiche_retry
    - resize
    - DEBUGLOG
    - dnsdist::doq::sendFromTo
    - size
    - auto::data
    - dnsdist::doq::mintToken
    - data
    - dnsdist::doq::getCID
    - auto::size
    linkageType: ''
    returnType: void
    signature: void handleStatelessRetry(Socket& sock, const PacketBuffer& clientConnID,
      const PacketBuffer& serverConnID, const ComboAddress& peer, const ComboAddress&
      localAddr, uint32_t version, PacketBuffer& buffer, bool socketBoundToAny)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: resize
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:194,1
    - Dst: quiche_negotiate_version
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:196,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:196,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:196,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:197,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:197,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:198,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:198,1
    - Dst: DEBUGLOG
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:201,1
    - Dst: resize
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:205,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:205,1
    - Dst: dnsdist::doq::sendFromTo
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:206,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 7
    argNames:
    - ' sock'
    - ' clientConnID'
    - ' serverConnID'
    - ' peer'
    - ' localAddr'
    - ' buffer'
    - socketBoundToAny
    argTypes:
    - Socket
    - PacketBuffer
    - PacketBuffer
    - ComboAddress
    - ComboAddress
    - PacketBuffer
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 207
      start: 192
    functionDepth: 2
    functionLinenumber: 192
    functionLinenumberEnd: 207
    functionName: dnsdist::doq::handleVersionNegotiation
    functionSourceFile: /src/pdns/pdns/dnsdistdist/doq-common.cc
    functionUses: 0
    functionsReached:
    - static_cast<size_t>
    - resize
    - DEBUGLOG
    - quiche_negotiate_version
    - dnsdist::doq::sendFromTo
    - size
    - data
    linkageType: ''
    returnType: void
    signature: void handleVersionNegotiation(Socket& sock, const PacketBuffer& clientConnID,
      const PacketBuffer& serverConnID, const ComboAddress& peer, const ComboAddress&
      localAddr, PacketBuffer& buffer, bool socketBoundToAny)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: resize
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:211,1
    - Dst: quiche_conn_send
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:215,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:215,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:215,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:215,1
    - Dst: resize
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:224,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:224,1
    - Dst: dnsdist::doq::sendFromTo
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:225,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 6
    argNames:
    - ' sock'
    - ' conn'
    - ' peer'
    - ' localAddr'
    - ' buffer'
    - socketBoundToAny
    argTypes:
    - Socket
    - QuicheConnection
    - ComboAddress
    - ComboAddress
    - PacketBuffer
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 227
      start: 209
    functionDepth: 2
    functionLinenumber: 209
    functionLinenumberEnd: 227
    functionName: dnsdist::doq::flushEgress
    functionSourceFile: /src/pdns/pdns/dnsdistdist/doq-common.cc
    functionUses: 0
    functionsReached:
    - quiche_conn_send
    - static_cast<size_t>
    - resize
    - dnsdist::doq::sendFromTo
    - size
    - get
    - data
    linkageType: ''
    returnType: void
    signature: void flushEgress(Socket& sock, QuicheConnection& conn, const ComboAddress&
      peer, const ComboAddress& localAddr, PacketBuffer& buffer, bool socketBoundToAny)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: quiche_config_load_cert_chain_from_pem_file
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:232,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:232,1
    - Dst: d_cert::c_str
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:232,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:234,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:234,1
    - Dst: quiche_config_load_priv_key_from_pem_file
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:237,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:237,1
    - Dst: d_key::c_str
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:237,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:239,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:239,1
    - Dst: quiche_config_set_application_protos
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:245,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:245,1
    - Dst: reinterpret_cast<const uint8_t*>
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:247,1
    - Dst: d_alpn::data
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:247,1
    - Dst: d_alpn::size
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:248,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:250,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:250,1
    - Dst: quiche_config_set_max_idle_timeout
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:254,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:254,1
    - Dst: quiche_config_set_max_send_udp_payload_size
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:256,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:256,1
    - Dst: quiche_config_set_max_recv_udp_payload_size
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:257,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:257,1
    - Dst: quiche_config_set_initial_max_streams_bidi
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:262,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:262,1
    - Dst: quiche_config_set_initial_max_stream_data_bidi_local
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:265,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:265,1
    - Dst: quiche_config_set_initial_max_stream_data_bidi_remote
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:266,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:266,1
    - Dst: quiche_config_set_initial_max_streams_uni
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:276,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:276,1
    - Dst: quiche_config_set_initial_max_stream_data_uni
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:277,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:277,1
    - Dst: quiche_config_set_initial_max_data
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:282,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:282,1
    - Dst: d_keyLogFile::empty
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:283,1
    - Dst: quiche_config_log_keys
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:284,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:284,1
    - Dst: quiche_config_set_cc_algorithm_name
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:287,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:287,1
    - Dst: d_ccAlgo::c_str
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:287,1
    - Dst: dnsdist::doq::fillRandom
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:291,1
    - Dst: quiche_config_set_stateless_reset_token
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:292,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:292,1
    - Dst: PacketBuffer::data
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:292,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 33
    argCount: 3
    argNames:
    - ' config'
    - ' params'
    - isHTTP
    argTypes:
    - QuicheConfig
    - QuicheParams
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 294
      start: 229
    functionDepth: 2
    functionLinenumber: 229
    functionLinenumberEnd: 294
    functionName: dnsdist::doq::configureQuiche
    functionSourceFile: /src/pdns/pdns/dnsdistdist/doq-common.cc
    functionUses: 0
    functionsReached:
    - quiche_config_set_application_protos
    - std::to_string
    - reinterpret_cast<const uint8_t*>
    - quiche_config_set_initial_max_stream_data_bidi_remote
    - d_alpn::size
    - quiche_config_set_stateless_reset_token
    - quiche_config_log_keys
    - quiche_config_set_initial_max_streams_bidi
    - quiche_config_set_max_recv_udp_payload_size
    - quiche_config_load_cert_chain_from_pem_file
    - d_keyLogFile::empty
    - dnsdist::doq::fillRandom
    - std::runtime_error
    - quiche_config_set_max_idle_timeout
    - get
    - d_cert::c_str
    - d_alpn::data
    - quiche_config_set_initial_max_stream_data_bidi_local
    - PacketBuffer::data
    - d_key::c_str
    - quiche_config_set_initial_max_streams_uni
    - quiche_config_set_cc_algorithm_name
    - d_ccAlgo::c_str
    - quiche_config_load_priv_key_from_pem_file
    - quiche_config_set_initial_max_data
    - quiche_config_set_max_send_udp_payload_size
    - quiche_config_set_initial_max_stream_data_uni
    linkageType: ''
    returnType: void
    signature: void configureQuiche(QuicheConfig& config, const QuicheParams& params,
      bool isHTTP)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: fillMSGHdr
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:303,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:303,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:303,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:303,1
    - Dst: recvmsg
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:305,1
    - Dst: getHandle
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:305,1
    - Dst: NetworkError
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:309,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:309,1
    - Dst: resize
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:318,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:318,1
    - Dst: HarvestDestinationAddress
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:320,1
    - Dst: isUnspecified
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:328,1
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:336,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    argCount: 4
    argNames:
    - ' socket'
    - ' buffer'
    - ' clientAddr'
    - ' localAddr'
    argTypes:
    - Socket
    - PacketBuffer
    - ComboAddress
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 337
      start: 296
    functionDepth: 1
    functionLinenumber: 296
    functionLinenumberEnd: 337
    functionName: dnsdist::doq::recvAsync
    functionSourceFile: /src/pdns/pdns/dnsdistdist/doq-common.cc
    functionUses: 2
    functionsReached:
    - reinterpret_cast<char*>
    - HarvestDestinationAddress
    - static_cast<size_t>
    - resize
    - recvmsg
    - stringerror
    - getHandle
    - size
    - isUnspecified
    - NetworkError
    - empty
    - at
    - fillMSGHdr
    linkageType: ''
    returnType: bool
    signature: bool recvAsync(Socket& socket, PacketBuffer& buffer, ComboAddress&
      clientAddr, ComboAddress& localAddr)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: quiche_conn_server_name
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:344,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:344,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:346,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:346,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - ' conn'
    argTypes:
    - QuicheConnection
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 350
      start: 339
    functionDepth: 0
    functionLinenumber: 339
    functionLinenumberEnd: 350
    functionName: dnsdist::doq::getSNIFromQuicheConnection
    functionSourceFile: /src/pdns/pdns/dnsdistdist/doq-common.cc
    functionUses: 0
    functionsReached:
    - std::string
    - reinterpret_cast<const char*>
    - quiche_conn_server_name
    - get
    linkageType: ''
    returnType: std::string
    signature: std::string getSNIFromQuicheConnection([[maybe_unused]] const QuicheConnection&
      conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::crypto::authenticated::Nonce::init
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:45,1
    - Dst: toByteString
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:47,1
    - Dst: time
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:49,1
    - Dst: PacketBuffer::reserve
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:51,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:51,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:51,1
    - Dst: PacketBuffer::insert
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:53,1
    - Dst: PacketBuffer::end
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:53,1
    - Dst: reinterpret_cast<const uint8_t*>
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:53,1
    - Dst: reinterpret_cast<const uint8_t*>
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:53,1
    - Dst: PacketBuffer::insert
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:54,1
    - Dst: PacketBuffer::end
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:54,1
    - Dst: auto::begin
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:54,1
    - Dst: auto::end
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:54,1
    - Dst: PacketBuffer::insert
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:55,1
    - Dst: PacketBuffer::end
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:55,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:55,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:55,1
    - Dst: dnsdist::crypto::authenticated::encryptSym
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:57,1
    - Dst: std::string_view
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:57,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:57,1
    - Dst: PacketBuffer::data
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:57,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:57,1
    - Dst: PacketBuffer::reserve
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:60,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:60,1
    - Dst: dnsdist::crypto::authenticated::Nonce::value::size
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:60,1
    - Dst: PacketBuffer::insert
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:61,1
    - Dst: PacketBuffer::begin
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:61,1
    - Dst: auto::begin
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:61,1
    - Dst: auto::end
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:61,1
    - Dst: PacketBuffer::insert
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:62,1
    - Dst: PacketBuffer::begin
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:62,1
    - Dst: dnsdist::crypto::authenticated::Nonce::value::begin
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:62,1
    - Dst: dnsdist::crypto::authenticated::Nonce::value::end
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:62,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:66,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:66,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:66,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:67,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:67,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 2
    argNames:
    - ' dcid'
    - ' peer'
    argTypes:
    - PacketBuffer
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 41
    functionDepth: 2
    functionLinenumber: 41
    functionLinenumberEnd: 70
    functionName: dnsdist::doq::mintToken
    functionSourceFile: /src/pdns/pdns/dnsdistdist/doq-common.cc
    functionUses: 1
    functionsReached:
    - dnsdist::crypto::authenticated::Nonce::value::size
    - PacketBuffer::end
    - reinterpret_cast<const uint8_t*>
    - PacketBuffer::size
    - auto::begin
    - dnsdist::crypto::authenticated::Nonce::value::begin
    - auto::size
    - PacketBuffer::begin
    - dnsdist::crypto::authenticated::Nonce::value::end
    - time
    - dnsdist::crypto::authenticated::encryptSym
    - size
    - dnsdist::logging::getTopLogger
    - begin
    - std::string_view
    - VERBOSESLOG
    - toByteString
    - reinterpret_cast<const char*>
    - PacketBuffer::data
    - what
    - PacketBuffer::insert
    - PacketBuffer::reserve
    - end
    - infolog
    - dnsdist::crypto::authenticated::Nonce::init
    - auto::end
    linkageType: ''
    returnType: PacketBuffer
    signature: PacketBuffer mintToken(const PacketBuffer& dcid, const ComboAddress&
      peer)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: reserve
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:74,1
    - Dst: insert
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:76,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:76,1
    - Dst: dnsdist::getRandomValue
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:76,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:76,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - ' buffer'
    - size
    argTypes:
    - PacketBuffer
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 72
    functionDepth: 1
    functionLinenumber: 72
    functionLinenumberEnd: 79
    functionName: dnsdist::doq::fillRandom
    functionSourceFile: /src/pdns/pdns/dnsdistdist/doq-common.cc
    functionUses: 2
    functionsReached:
    - pdns::max
    - dnsdist::getRandomValue
    - end
    - reserve
    - insert
    linkageType: ''
    returnType: void
    signature: void fillRandom(PacketBuffer& buffer, size_t size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::doq::fillRandom
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:85,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 81
    functionDepth: 2
    functionLinenumber: 81
    functionLinenumberEnd: 88
    functionName: dnsdist::doq::getCID
    functionSourceFile: /src/pdns/pdns/dnsdistdist/doq-common.cc
    functionUses: 1
    functionsReached:
    - dnsdist::doq::fillRandom
    linkageType: ''
    returnType: std::optional<PacketBuffer>
    signature: std::optional<PacketBuffer> getCID()
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: toByteString
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:95,1
    - Dst: time
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:96,1
    - Dst: dnsdist::crypto::authenticated::Nonce::value::size
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:97,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:97,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:98,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:102,1
    - Dst: dnsdist::crypto::authenticated::Nonce::value::data
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:102,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:102,1
    - Dst: dnsdist::crypto::authenticated::Nonce::value::size
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:102,1
    - Dst: std::string_view
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:105,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:105,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:105,1
    - Dst: dnsdist::crypto::authenticated::Nonce::value::size
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:105,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:105,1
    - Dst: dnsdist::crypto::authenticated::Nonce::value::size
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:105,1
    - Dst: dnsdist::crypto::authenticated::decryptSym
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:106,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:108,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:108,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:113,1
    - Dst: auto::data
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:113,1
    - Dst: std::memcmp
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:118,1
    - Dst: auto::at
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:118,1
    - Dst: auto::begin
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:118,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:118,1
    - Dst: PacketBuffer
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:122,1
    - Dst: auto::begin
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:122,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:122,1
    - Dst: auto::end
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:122,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:125,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:125,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:125,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:126,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:126,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 21
    argCount: 2
    argNames:
    - ' token'
    - ' peer'
    argTypes:
    - PacketBuffer
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 129
      start: 91
    functionDepth: 2
    functionLinenumber: 91
    functionLinenumberEnd: 129
    functionName: dnsdist::doq::validateToken
    functionSourceFile: /src/pdns/pdns/dnsdistdist/doq-common.cc
    functionUses: 0
    functionsReached:
    - dnsdist::crypto::authenticated::Nonce::value::size
    - auto::begin
    - auto::size
    - time
    - size
    - dnsdist::crypto::authenticated::Nonce::value::data
    - dnsdist::logging::getTopLogger
    - at
    - std::string_view
    - VERBOSESLOG
    - auto::data
    - toByteString
    - reinterpret_cast<const char*>
    - auto::at
    - std::memcmp
    - memcpy
    - what
    - infolog
    - PacketBuffer
    - data
    - auto::end
    - dnsdist::crypto::authenticated::decryptSym
    linkageType: ''
    returnType: std::optional<PacketBuffer>
    signature: std::optional<PacketBuffer> validateToken(const PacketBuffer& token,
      const ComboAddress& peer)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: sendto
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:148,1
    - Dst: getHandle
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:148,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:148,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:148,1
    - Dst: reinterpret_cast<const struct sockaddr*>
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:148,1
    - Dst: getSocklen
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:148,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:151,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:151,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:151,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:151,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:151,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:152,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:152,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:152,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:152,1
    - Dst: sendMsgWithOptions
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:158,1
    - Dst: getHandle
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:158,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:158,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:158,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:161,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:161,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:161,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:161,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:161,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:161,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:162,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:162,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:162,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:162,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:162,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:162,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 5
    argNames:
    - ' sock'
    - ' peer'
    - ' local'
    - ' buffer'
    - socketBoundToAny
    argTypes:
    - Socket
    - ComboAddress
    - ComboAddress
    - PacketBuffer
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 164
      start: 131
    functionDepth: 1
    functionLinenumber: 131
    functionLinenumberEnd: 164
    functionName: dnsdist::doq::sendFromTo
    functionSourceFile: /src/pdns/pdns/dnsdistdist/doq-common.cc
    functionUses: 3
    functionsReached:
    - Logging::Loggable
    - stringerror
    - toStringWithPort
    - what
    - getHandle
    - VERBOSESLOG
    - size
    - infolog
    - reinterpret_cast<const struct sockaddr*>
    - dnsdist::logging::getTopLogger
    - data
    - sendto
    - getSocklen
    - sendMsgWithOptions
    linkageType: ''
    returnType: void
    signature: void sendFromTo(Socket& sock, const ComboAddress& peer, const ComboAddress&
      local, PacketBuffer& buffer, [[maybe_unused]] bool socketBoundToAny)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::doq::getCID
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:168,1
    - Dst: dnsdist::doq::mintToken
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:173,1
    - Dst: resize
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:175,1
    - Dst: quiche_retry
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:176,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:176,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:176,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:177,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:177,1
    - Dst: auto::data
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:178,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:178,1
    - Dst: auto::data
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:179,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:179,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:181,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:181,1
    - Dst: DEBUGLOG
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:184,1
    - Dst: resize
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:188,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:188,1
    - Dst: dnsdist::doq::sendFromTo
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:189,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 8
    argNames:
    - ' sock'
    - ' clientConnID'
    - ' serverConnID'
    - ' peer'
    - ' localAddr'
    - version
    - ' buffer'
    - socketBoundToAny
    argTypes:
    - Socket
    - PacketBuffer
    - PacketBuffer
    - ComboAddress
    - ComboAddress
    - uint32_t
    - PacketBuffer
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 190
      start: 166
    functionDepth: 3
    functionLinenumber: 166
    functionLinenumberEnd: 190
    functionName: dnsdist::doq::handleStatelessRetry
    functionSourceFile: /src/pdns/pdns/dnsdistdist/doq-common.cc
    functionUses: 0
    functionsReached:
    - static_cast<size_t>
    - quiche_retry
    - resize
    - DEBUGLOG
    - dnsdist::doq::sendFromTo
    - size
    - auto::data
    - dnsdist::doq::mintToken
    - data
    - dnsdist::doq::getCID
    - auto::size
    linkageType: ''
    returnType: void
    signature: void handleStatelessRetry(Socket& sock, const PacketBuffer& clientConnID,
      const PacketBuffer& serverConnID, const ComboAddress& peer, const ComboAddress&
      localAddr, uint32_t version, PacketBuffer& buffer, bool socketBoundToAny)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: resize
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:194,1
    - Dst: quiche_negotiate_version
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:196,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:196,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:196,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:197,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:197,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:198,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:198,1
    - Dst: DEBUGLOG
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:201,1
    - Dst: resize
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:205,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:205,1
    - Dst: dnsdist::doq::sendFromTo
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:206,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 7
    argNames:
    - ' sock'
    - ' clientConnID'
    - ' serverConnID'
    - ' peer'
    - ' localAddr'
    - ' buffer'
    - socketBoundToAny
    argTypes:
    - Socket
    - PacketBuffer
    - PacketBuffer
    - ComboAddress
    - ComboAddress
    - PacketBuffer
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 207
      start: 192
    functionDepth: 2
    functionLinenumber: 192
    functionLinenumberEnd: 207
    functionName: dnsdist::doq::handleVersionNegotiation
    functionSourceFile: /src/pdns/pdns/dnsdistdist/doq-common.cc
    functionUses: 0
    functionsReached:
    - static_cast<size_t>
    - resize
    - DEBUGLOG
    - quiche_negotiate_version
    - dnsdist::doq::sendFromTo
    - size
    - data
    linkageType: ''
    returnType: void
    signature: void handleVersionNegotiation(Socket& sock, const PacketBuffer& clientConnID,
      const PacketBuffer& serverConnID, const ComboAddress& peer, const ComboAddress&
      localAddr, PacketBuffer& buffer, bool socketBoundToAny)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: resize
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:211,1
    - Dst: quiche_conn_send
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:215,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:215,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:215,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:215,1
    - Dst: resize
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:224,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:224,1
    - Dst: dnsdist::doq::sendFromTo
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:225,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 6
    argNames:
    - ' sock'
    - ' conn'
    - ' peer'
    - ' localAddr'
    - ' buffer'
    - socketBoundToAny
    argTypes:
    - Socket
    - QuicheConnection
    - ComboAddress
    - ComboAddress
    - PacketBuffer
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 227
      start: 209
    functionDepth: 2
    functionLinenumber: 209
    functionLinenumberEnd: 227
    functionName: dnsdist::doq::flushEgress
    functionSourceFile: /src/pdns/pdns/dnsdistdist/doq-common.cc
    functionUses: 0
    functionsReached:
    - quiche_conn_send
    - static_cast<size_t>
    - resize
    - dnsdist::doq::sendFromTo
    - size
    - get
    - data
    linkageType: ''
    returnType: void
    signature: void flushEgress(Socket& sock, QuicheConnection& conn, const ComboAddress&
      peer, const ComboAddress& localAddr, PacketBuffer& buffer, bool socketBoundToAny)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: quiche_config_load_cert_chain_from_pem_file
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:232,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:232,1
    - Dst: d_cert::c_str
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:232,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:234,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:234,1
    - Dst: quiche_config_load_priv_key_from_pem_file
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:237,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:237,1
    - Dst: d_key::c_str
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:237,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:239,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:239,1
    - Dst: quiche_config_set_application_protos
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:245,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:245,1
    - Dst: reinterpret_cast<const uint8_t*>
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:247,1
    - Dst: d_alpn::data
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:247,1
    - Dst: d_alpn::size
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:248,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:250,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:250,1
    - Dst: quiche_config_set_max_idle_timeout
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:254,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:254,1
    - Dst: quiche_config_set_max_send_udp_payload_size
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:256,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:256,1
    - Dst: quiche_config_set_max_recv_udp_payload_size
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:257,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:257,1
    - Dst: quiche_config_set_initial_max_streams_bidi
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:262,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:262,1
    - Dst: quiche_config_set_initial_max_stream_data_bidi_local
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:265,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:265,1
    - Dst: quiche_config_set_initial_max_stream_data_bidi_remote
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:266,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:266,1
    - Dst: quiche_config_set_initial_max_streams_uni
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:276,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:276,1
    - Dst: quiche_config_set_initial_max_stream_data_uni
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:277,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:277,1
    - Dst: quiche_config_set_initial_max_data
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:282,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:282,1
    - Dst: d_keyLogFile::empty
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:283,1
    - Dst: quiche_config_log_keys
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:284,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:284,1
    - Dst: quiche_config_set_cc_algorithm_name
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:287,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:287,1
    - Dst: d_ccAlgo::c_str
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:287,1
    - Dst: dnsdist::doq::fillRandom
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:291,1
    - Dst: quiche_config_set_stateless_reset_token
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:292,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:292,1
    - Dst: PacketBuffer::data
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:292,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 33
    argCount: 3
    argNames:
    - ' config'
    - ' params'
    - isHTTP
    argTypes:
    - QuicheConfig
    - QuicheParams
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 294
      start: 229
    functionDepth: 2
    functionLinenumber: 229
    functionLinenumberEnd: 294
    functionName: dnsdist::doq::configureQuiche
    functionSourceFile: /src/pdns/pdns/dnsdistdist/doq-common.cc
    functionUses: 0
    functionsReached:
    - quiche_config_set_application_protos
    - std::to_string
    - reinterpret_cast<const uint8_t*>
    - quiche_config_set_initial_max_stream_data_bidi_remote
    - d_alpn::size
    - quiche_config_set_stateless_reset_token
    - quiche_config_log_keys
    - quiche_config_set_initial_max_streams_bidi
    - quiche_config_set_max_recv_udp_payload_size
    - quiche_config_load_cert_chain_from_pem_file
    - d_keyLogFile::empty
    - dnsdist::doq::fillRandom
    - std::runtime_error
    - quiche_config_set_max_idle_timeout
    - get
    - d_cert::c_str
    - d_alpn::data
    - quiche_config_set_initial_max_stream_data_bidi_local
    - PacketBuffer::data
    - d_key::c_str
    - quiche_config_set_initial_max_streams_uni
    - quiche_config_set_cc_algorithm_name
    - d_ccAlgo::c_str
    - quiche_config_load_priv_key_from_pem_file
    - quiche_config_set_initial_max_data
    - quiche_config_set_max_send_udp_payload_size
    - quiche_config_set_initial_max_stream_data_uni
    linkageType: ''
    returnType: void
    signature: void configureQuiche(QuicheConfig& config, const QuicheParams& params,
      bool isHTTP)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: fillMSGHdr
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:303,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:303,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:303,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:303,1
    - Dst: recvmsg
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:305,1
    - Dst: getHandle
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:305,1
    - Dst: NetworkError
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:309,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:309,1
    - Dst: resize
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:318,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:318,1
    - Dst: HarvestDestinationAddress
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:320,1
    - Dst: isUnspecified
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:328,1
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:336,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    argCount: 4
    argNames:
    - ' socket'
    - ' buffer'
    - ' clientAddr'
    - ' localAddr'
    argTypes:
    - Socket
    - PacketBuffer
    - ComboAddress
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 337
      start: 296
    functionDepth: 1
    functionLinenumber: 296
    functionLinenumberEnd: 337
    functionName: dnsdist::doq::recvAsync
    functionSourceFile: /src/pdns/pdns/dnsdistdist/doq-common.cc
    functionUses: 2
    functionsReached:
    - reinterpret_cast<char*>
    - HarvestDestinationAddress
    - static_cast<size_t>
    - resize
    - recvmsg
    - stringerror
    - getHandle
    - size
    - isUnspecified
    - NetworkError
    - empty
    - at
    - fillMSGHdr
    linkageType: ''
    returnType: bool
    signature: bool recvAsync(Socket& socket, PacketBuffer& buffer, ComboAddress&
      clientAddr, ComboAddress& localAddr)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: quiche_conn_server_name
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:344,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:344,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:346,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/doq-common.cc:346,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - ' conn'
    argTypes:
    - QuicheConnection
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 350
      start: 339
    functionDepth: 0
    functionLinenumber: 339
    functionLinenumberEnd: 350
    functionName: dnsdist::doq::getSNIFromQuicheConnection
    functionSourceFile: /src/pdns/pdns/dnsdistdist/doq-common.cc
    functionUses: 0
    functionsReached:
    - std::string
    - reinterpret_cast<const char*>
    - quiche_conn_server_name
    - get
    linkageType: ''
    returnType: std::string
    signature: std::string getSNIFromQuicheConnection([[maybe_unused]] const QuicheConnection&
      conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' str'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 61
    functionDepth: 0
    functionLinenumber: 61
    functionLinenumberEnd: 62
    functionName: MOADNSException::MOADNSException
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsparser.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void MOADNSException(const string& str)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.hh:74,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.hh:74,1
    - Dst: std::out_of_range
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.hh:75,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.hh:77,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - ' content'
    argTypes:
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 71
    functionDepth: 0
    functionLinenumber: 71
    functionLinenumberEnd: 79
    functionName: PacketReader::PacketReader
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsparser.hh
    functionUses: 0
    functionsReached:
    - pdns::max
    - std::out_of_range
    - size
    linkageType: ''
    returnType: void
    signature: void PacketReader(const std::string_view& content, uint16_t initialPos=sizeof(dnsheader),
      bool internalRepresentation = false)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PacketReader::get32BitInt
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.hh:90,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' val'
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 88
    functionDepth: 0
    functionLinenumber: 88
    functionLinenumberEnd: 91
    functionName: PacketReader::xfr32BitInt
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsparser.hh
    functionUses: 4
    functionsReached:
    - PacketReader::get32BitInt
    linkageType: ''
    returnType: void
    signature: void xfr32BitInt(uint32_t& val)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PacketReader::xfr32BitInt
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.hh:95,1
    - Dst: htonl
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.hh:96,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ' val'
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 93
    functionDepth: 0
    functionLinenumber: 93
    functionLinenumberEnd: 97
    functionName: PacketReader::xfrIP
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsparser.hh
    functionUses: 0
    functionsReached:
    - PacketReader::xfr32BitInt
    - htonl
    linkageType: ''
    returnType: void
    signature: void xfrIP(uint32_t& val)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PacketReader::xfrBlob
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.hh:100,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - val
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 99
    functionDepth: 0
    functionLinenumber: 99
    functionLinenumberEnd: 101
    functionName: PacketReader::xfrIP6
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsparser.hh
    functionUses: 0
    functionsReached:
    - PacketReader::xfrBlob
    linkageType: ''
    returnType: void
    signature: void xfrIP6(std::string &val)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PacketReader::xfrBlob
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.hh:105,1
    - Dst: PacketReader::xfrBlob
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.hh:106,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.hh:107,1
    - Dst: makeComboAddressFromRaw
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.hh:108,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 2
    argNames:
    - version
    - val
    argTypes:
    - uint8_t
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 103
    functionDepth: 0
    functionLinenumber: 103
    functionLinenumberEnd: 109
    functionName: PacketReader::xfrCAWithoutPort
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsparser.hh
    functionUses: 4
    functionsReached:
    - PacketReader::xfrBlob
    - runtime_error
    - makeComboAddressFromRaw
    linkageType: ''
    returnType: void
    signature: void xfrCAWithoutPort(uint8_t version, ComboAddress &val)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PacketReader::xfr16BitInt
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.hh:113,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - val
    argTypes:
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 115
      start: 111
    functionDepth: 0
    functionLinenumber: 111
    functionLinenumberEnd: 115
    functionName: PacketReader::xfrCAPort
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsparser.hh
    functionUses: 0
    functionsReached:
    - PacketReader::xfr16BitInt
    linkageType: ''
    returnType: void
    signature: void xfrCAPort(ComboAddress &val)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PacketReader::xfr32BitInt
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.hh:119,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' val'
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 117
    functionDepth: 0
    functionLinenumber: 117
    functionLinenumberEnd: 120
    functionName: PacketReader::xfrTime
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsparser.hh
    functionUses: 0
    functionsReached:
    - PacketReader::xfr32BitInt
    linkageType: ''
    returnType: void
    signature: void xfrTime(uint32_t& val)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PacketReader::get16BitInt
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.hh:125,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' val'
    argTypes:
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 123
    functionDepth: 0
    functionLinenumber: 123
    functionLinenumberEnd: 126
    functionName: PacketReader::xfr16BitInt
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsparser.hh
    functionUses: 7
    functionsReached:
    - PacketReader::get16BitInt
    linkageType: ''
    returnType: void
    signature: void xfr16BitInt(uint16_t& val)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PacketReader::xfr16BitInt
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.hh:130,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' val'
    argTypes:
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 131
      start: 128
    functionDepth: 0
    functionLinenumber: 128
    functionLinenumberEnd: 131
    functionName: PacketReader::xfrType
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsparser.hh
    functionUses: 2
    functionsReached:
    - PacketReader::xfr16BitInt
    linkageType: ''
    returnType: void
    signature: void xfrType(uint16_t& val)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PacketReader::get8BitInt
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.hh:136,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' val'
    argTypes:
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 137
      start: 134
    functionDepth: 0
    functionLinenumber: 134
    functionLinenumberEnd: 137
    functionName: PacketReader::xfr8BitInt
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsparser.hh
    functionUses: 2
    functionsReached:
    - PacketReader::get8BitInt
    linkageType: ''
    returnType: void
    signature: void xfr8BitInt(uint8_t& val)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PacketReader::getName
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.hh:141,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' name'
    argTypes:
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 142
      start: 139
    functionDepth: 0
    functionLinenumber: 139
    functionLinenumberEnd: 142
    functionName: PacketReader::xfrName
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsparser.hh
    functionUses: 4
    functionsReached:
    - PacketReader::getName
    linkageType: ''
    returnType: void
    signature: void xfrName(DNSName& name, bool /* compress */ = false)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PacketReader::getText
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.hh:146,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - text
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 144
    functionDepth: 0
    functionLinenumber: 144
    functionLinenumberEnd: 147
    functionName: PacketReader::xfrText
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsparser.hh
    functionUses: 1
    functionsReached:
    - PacketReader::getText
    linkageType: ''
    returnType: void
    signature: void xfrText(string &text, bool multi=false, bool lenField=true)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PacketReader::getUnquotedText
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.hh:150,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - text
    - lenField
    argTypes:
    - string
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 151
      start: 149
    functionDepth: 0
    functionLinenumber: 149
    functionLinenumberEnd: 151
    functionName: PacketReader::xfrUnquotedText
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsparser.hh
    functionUses: 0
    functionsReached:
    - PacketReader::getUnquotedText
    linkageType: ''
    returnType: void
    signature: void xfrUnquotedText(string &text, bool lenField)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 173
      start: 170
    functionDepth: 0
    functionLinenumber: 170
    functionLinenumberEnd: 173
    functionName: PacketReader::eof
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsparser.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool eof() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.hh:178,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.hh:178,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.hh:178,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.hh:178,1
    - Dst: makeHexDump
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.hh:178,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.hh:178,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.hh:178,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.hh:178,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 179
      start: 177
    functionDepth: 0
    functionLinenumber: 177
    functionLinenumberEnd: 179
    functionName: PacketReader::getRemaining
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsparser.hh
    functionUses: 0
    functionsReached:
    - std::to_string
    - size
    - begin
    - std::string
    - makeHexDump
    linkageType: ''
    returnType: std::string
    signature: std::string getRemaining() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 190
      start: 187
    functionDepth: 0
    functionLinenumber: 187
    functionLinenumberEnd: 190
    functionName: PacketReader::consumeRemaining
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsparser.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void consumeRemaining()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 196
      start: 193
    functionDepth: 0
    functionLinenumber: 193
    functionLinenumberEnd: 196
    functionName: PacketReader::getPosition
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsparser.hh
    functionUses: 7
    functionsReached: []
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t getPosition() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.hh:202,1
    - Dst: std::out_of_range
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.hh:203,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.hh:203,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.hh:203,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.hh:203,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.hh:203,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - n
    argTypes:
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 206
      start: 198
    functionDepth: 0
    functionLinenumber: 198
    functionLinenumberEnd: 206
    functionName: PacketReader::skip
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsparser.hh
    functionUses: 5
    functionsReached:
    - std::out_of_range
    - std::to_string
    - size
    linkageType: ''
    returnType: void
    signature: void skip(uint16_t n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 228
      start: 228
    functionDepth: 0
    functionLinenumber: 228
    functionLinenumberEnd: 228
    functionName: ~DNSRecordContent()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsparser.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~DNSRecordContent()
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: DNSPacketWriter::setCanonic
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.hh:237,1
    - Dst: DNSPacketWriter::setLowercase
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.hh:240,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.hh:243,1
    - Dst: getType
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.hh:243,1
    - Dst: toPacket
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.hh:244,1
    - Dst: DNSPacketWriter::getWireFormatContent
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.hh:248,1
    - Dst: DNSPacketWriter::getRecordPayload
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.hh:250,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 1
    argNames:
    - ' qname'
    argTypes:
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 253
      start: 231
    functionDepth: 2
    functionLinenumber: 231
    functionLinenumberEnd: 253
    functionName: DNSRecordContent::serialize
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsparser.hh
    functionUses: 0
    functionsReached:
    - toPacket
    - DNSPacketWriter::getRecordPayload
    - DNSPacketWriter::getWireFormatContent
    - DNSPacketWriter::setCanonic
    - DNSPacketWriter::setLowercase
    - getType
    - DNSPacketWriter::startRecord
    linkageType: ''
    returnType: string
    signature: string serialize(const DNSName& qname, bool canonic = false, bool lowerCase
      = false, bool full = false) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: typeid
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.hh:257,1
    - Dst: typeid
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.hh:257,1
    - Dst: getZoneRepresentation
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.hh:257,1
    - Dst: getZoneRepresentation
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.hh:257,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - DNSRecordContent
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 258
      start: 255
    functionDepth: 0
    functionLinenumber: 255
    functionLinenumberEnd: 258
    functionName: operator==(const DNSRecordContent& rhs) const
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsparser.hh
    functionUses: 0
    functionsReached:
    - getZoneRepresentation
    - typeid
    linkageType: ''
    returnType: bool
    signature: bool operator==(const DNSRecordContent& rhs) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 265
      start: 265
    functionDepth: 0
    functionLinenumber: 265
    functionLinenumberEnd: 265
    functionName: DNSRecordContent::doRecordCheck
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsparser.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void doRecordCheck(const struct DNSRecord&)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.hh:272,1
    - Dst: load
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.hh:272,1
    - Dst: getTypemap
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.hh:274,1
    - Dst: pair
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.hh:274,1
    - Dst: getZmakermap
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.hh:276,1
    - Dst: pair
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.hh:276,1
    - Dst: getT2Namemap
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.hh:278,1
    - Dst: pair
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.hh:278,1
    - Dst: getN2Typemap
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.hh:279,1
    - Dst: pair
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.hh:279,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 5
    argNames:
    - cl
    - ty
    - f
    - z
    - name
    argTypes:
    - uint16_t
    - uint16_t
    - makerfunc_t*
    - zmakerfunc_t*
    - char*
    assertStmts:
    - condition: (!d_locked.load())
      pos:
        line_end: 271
        line_start: 271
        source_file: /src/pdns/pdns/dnsdistdist/dnsparser.hh
    constantsTouched: []
    func_position:
      end: 280
      start: 270
    functionDepth: 0
    functionLinenumber: 270
    functionLinenumberEnd: 280
    functionName: DNSRecordContent::regist
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsparser.hh
    functionUses: 2
    functionsReached:
    - load
    - getN2Typemap
    - assert
    - getTypemap
    - getT2Namemap
    - getZmakermap
    - pair
    linkageType: ''
    returnType: void
    signature: void regist(uint16_t cl, uint16_t ty, makerfunc_t* f, zmakerfunc_t*
      z, const char* name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: boost::starts_with
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.hh:284,1
    - Dst: boost::starts_with
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.hh:284,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - ' name'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 285
      start: 282
    functionDepth: 0
    functionLinenumber: 282
    functionLinenumberEnd: 285
    functionName: DNSRecordContent::isUnknownType
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsparser.hh
    functionUses: 2
    functionsReached:
    - boost::starts_with
    linkageType: ''
    returnType: bool
    signature: bool isUnknownType(const string& name)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: getN2Typemap
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.hh:289,1
    - Dst: toUpper
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.hh:289,1
    - Dst: getN2Typemap
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.hh:290,1
    - Dst: DNSRecordContent::isUnknownType
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.hh:293,1
    - Dst: pdns::checked_stoi<uint16_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.hh:294,1
    - Dst: substr
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.hh:294,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.hh:297,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 1
    argNames:
    - ' name'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 298
      start: 287
    functionDepth: 0
    functionLinenumber: 287
    functionLinenumberEnd: 298
    functionName: DNSRecordContent::TypeToNumber
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsparser.hh
    functionUses: 10
    functionsReached:
    - getN2Typemap
    - toUpper
    - runtime_error
    - pdns::checked_stoi<uint16_t>
    - substr
    - DNSRecordContent::isUnknownType
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t TypeToNumber(const string& name)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: getT2Namemap
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.hh:302,1
    - Dst: pair
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.hh:302,1
    - Dst: getT2Namemap
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.hh:303,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.hh:304,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - num
    argTypes:
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 307
      start: 300
    functionDepth: 0
    functionLinenumber: 300
    functionLinenumberEnd: 307
    functionName: DNSRecordContent::NumberToType
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsparser.hh
    functionUses: 26
    functionsReached:
    - getT2Namemap
    - std::to_string
    - pair
    linkageType: ''
    returnType: string
    signature: string NumberToType(uint16_t num, uint16_t classnum = QClass::IN)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: store
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.hh:318,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 319
      start: 316
    functionDepth: 0
    functionLinenumber: 316
    functionLinenumberEnd: 319
    functionName: DNSRecordContent::lock
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsparser.hh
    functionUses: 1
    functionsReached:
    - store
    linkageType: ''
    returnType: void
    signature: void lock()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 339
      start: 337
    functionDepth: 0
    functionLinenumber: 337
    functionLinenumberEnd: 339
    functionName: DNSRecord
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsparser.hh
    functionUses: 25
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void DNSRecord()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.hh:348,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.hh:349,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 3
    argNames:
    - ' name'
    - content
    - type
    argTypes:
    - std::string
    - std::shared_ptr<DNSRecordContent>
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 354
      start: 341
    functionDepth: 0
    functionLinenumber: 341
    functionLinenumberEnd: 354
    functionName: DNSRecord
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsparser.hh
    functionUses: 25
    functionsReached:
    - std::move
    - DNSName
    linkageType: ''
    returnType: void
    signature: "void DNSRecord(const std::string& name,\n            std::shared_ptr<DNSRecordContent>
      content,\n            const uint16_t type,\n            const uint16_t qclass
      = QClass::IN,\n            const uint32_t ttl = 86400,\n            const uint16_t
      clen = 0,\n            const DNSResourceRecord::Place place = DNSResourceRecord::ANSWER)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getZoneRepresentation
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.hh:369,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.hh:374,1
    - Dst: std::stringstream::str
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.hh:375,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 376
      start: 366
    functionDepth: 0
    functionLinenumber: 366
    functionLinenumberEnd: 376
    functionName: print
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsparser.hh
    functionUses: 8
    functionsReached:
    - getZoneRepresentation
    - std::stringstream::str
    - std::to_string
    linkageType: ''
    returnType: std::string
    signature: std::string print(const std::string& indent = "") const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: toLogString
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.hh:380,1
    - Dst: QType
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.hh:382,1
    - Dst: getContent
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.hh:384,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 386
      start: 378
    functionDepth: 0
    functionLinenumber: 378
    functionLinenumberEnd: 386
    functionName: toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsparser.hh
    functionUses: 320
    functionsReached:
    - toLogString
    - QType
    - getContent
    linkageType: ''
    returnType: std::string
    signature: std::string toString() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' content'
    argTypes:
    - std::shared_ptr<const DNSRecordContent>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 391
      start: 388
    functionDepth: 0
    functionLinenumber: 388
    functionLinenumberEnd: 391
    functionName: setContent
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsparser.hh
    functionUses: 28
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setContent(const std::shared_ptr<const DNSRecordContent>& content)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.hh:395,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - ' content'
    argTypes:
    - std::shared_ptr<const DNSRecordContent>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 396
      start: 393
    functionDepth: 0
    functionLinenumber: 393
    functionLinenumberEnd: 396
    functionName: setContent
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsparser.hh
    functionUses: 28
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void setContent(std::shared_ptr<const DNSRecordContent>&& content)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 401
      start: 398
    functionDepth: 0
    functionLinenumber: 398
    functionLinenumberEnd: 401
    functionName: '& getContent() const'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsparser.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::shared_ptr<const DNSRecordContent>
    signature: std::shared_ptr<const DNSRecordContent> & getContent() const
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: std::tie
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.hh:405,1
    - Dst: std::tie
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.hh:405,1
    - Dst: std::tie
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.hh:408,1
    - Dst: std::tie
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.hh:408,1
    - Dst: toLower
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.hh:413,1
    - Dst: getZoneRepresentation
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.hh:413,1
    - Dst: toLower
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.hh:415,1
    - Dst: d_content::getZoneRepresentation
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.hh:415,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - DNSRecord
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 418
      start: 403
    functionDepth: 0
    functionLinenumber: 403
    functionLinenumberEnd: 418
    functionName: operator<(const DNSRecord& rhs) const
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsparser.hh
    functionUses: 0
    functionsReached:
    - getZoneRepresentation
    - toLower
    - std::tie
    - d_content::getZoneRepresentation
    linkageType: ''
    returnType: bool
    signature: bool operator<(const DNSRecord& rhs) const
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: d_name::canonCompare_three_way
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.hh:426,1
    - Dst: std::tie
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.hh:434,1
    - Dst: std::tie
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.hh:434,1
    - Dst: std::tie
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.hh:437,1
    - Dst: std::tie
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.hh:437,1
    - Dst: d_content::getZoneRepresentation
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.hh:442,1
    - Dst: d_content::getZoneRepresentation
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.hh:444,1
    - Dst: toLower
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.hh:454,1
    - Dst: toLower
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.hh:454,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 23
    argCount: 2
    argNames:
    - ' a'
    - ' b'
    argTypes:
    - DNSRecord
    - DNSRecord
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 456
      start: 421
    functionDepth: 0
    functionLinenumber: 421
    functionLinenumberEnd: 456
    functionName: prettyCompare
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsparser.hh
    functionUses: 0
    functionsReached:
    - d_name::canonCompare_three_way
    - toLower
    - std::tie
    - d_content::getZoneRepresentation
    linkageType: ''
    returnType: bool
    signature: bool prettyCompare(const DNSRecord& a, const DNSRecord& b)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 5
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - DNSRecord
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 465
      start: 458
    functionDepth: 0
    functionLinenumber: 458
    functionLinenumberEnd: 465
    functionName: operator==(const DNSRecord& rhs) const
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsparser.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool operator==(const DNSRecord& rhs) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sizeEstimate
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.hh:469,1
    - Dst: sizeEstimate
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.hh:469,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 470
      start: 467
    functionDepth: 0
    functionLinenumber: 467
    functionLinenumberEnd: 470
    functionName: sizeEstimate
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsparser.hh
    functionUses: 29
    functionsReached:
    - sizeEstimate
    linkageType: ''
    returnType: size_t
    signature: size_t sizeEstimate() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' other'
    argTypes:
    - DNSZoneRecord
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 485
      start: 483
    functionDepth: 0
    functionLinenumber: 483
    functionLinenumberEnd: 485
    functionName: operator<(const DNSZoneRecord& other) const
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsparser.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool operator<(const DNSZoneRecord& other) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: copyRecord
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.hh:494,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' dr'
    - ' pr'
    argTypes:
    - DNSRecord
    - PacketReader
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 495
      start: 491
    functionDepth: 0
    functionLinenumber: 491
    functionLinenumberEnd: 495
    functionName: UnknownRecordContent::UnknownRecordContent
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsparser.hh
    functionUses: 0
    functionsReached:
    - copyRecord
    linkageType: ''
    returnType: void
    signature: void UnknownRecordContent(const DNSRecord& dr, PacketReader& pr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 504
      start: 501
    functionDepth: 0
    functionLinenumber: 501
    functionLinenumberEnd: 504
    functionName: UnknownRecordContent::getType
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsparser.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t getType() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 509
      start: 506
    functionDepth: 0
    functionLinenumber: 506
    functionLinenumberEnd: 509
    functionName: '& getRawContent() const'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsparser.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: vector<uint8_t>
    signature: vector<uint8_t> & getRawContent() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: UnknownRecordContent::sizeEstimate
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.hh:513,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.hh:513,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 514
      start: 511
    functionDepth: 0
    functionLinenumber: 511
    functionLinenumberEnd: 514
    functionName: UnknownRecordContent::sizeEstimate
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsparser.hh
    functionUses: 2
    functionsReached:
    - UnknownRecordContent::sizeEstimate
    - size
    linkageType: ''
    returnType: size_t
    signature: size_t sizeEstimate() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MOADNSParser::init
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.hh:528,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - query
    - ' buffer'
    argTypes:
    - bool
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 529
      start: 526
    functionDepth: 0
    functionLinenumber: 526
    functionLinenumberEnd: 529
    functionName: MOADNSParser::MOADNSParser
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsparser.hh
    functionUses: 0
    functionsReached:
    - MOADNSParser::init
    linkageType: ''
    returnType: void
    signature: void MOADNSParser(bool query, const string& buffer)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MOADNSParser::init
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.hh:534,1
    - Dst: std::string_view
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.hh:534,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - query
    - packet
    - len
    argTypes:
    - bool
    - char*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 535
      start: 532
    functionDepth: 0
    functionLinenumber: 532
    functionLinenumberEnd: 535
    functionName: MOADNSParser::MOADNSParser
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsparser.hh
    functionUses: 0
    functionsReached:
    - std::string_view
    - MOADNSParser::init
    linkageType: ''
    returnType: void
    signature: void MOADNSParser(bool query, const char *packet, unsigned int len)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 549
      start: 546
    functionDepth: 0
    functionLinenumber: 546
    functionLinenumberEnd: 549
    functionName: MOADNSParser::getTSIGPos
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsparser.hh
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t getTSIGPos() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::dynamic_pointer_cast<const T>
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.hh:577,1
    - Dst: getContent
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.hh:577,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' dr'
    argTypes:
    - DNSRecord
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 578
      start: 575
    functionDepth: 0
    functionLinenumber: 575
    functionLinenumberEnd: 578
    functionName: getRR
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsparser.hh
    functionUses: 47
    functionsReached:
    - getContent
    - std::dynamic_pointer_cast<const T>
    linkageType: ''
    returnType: std::shared_ptr<const T>
    signature: std::shared_ptr<const T> getRR(const DNSRecord& dr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.hh:586,1
    - Dst: length
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.hh:586,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' packet'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 587
      start: 585
    functionDepth: 0
    functionLinenumber: 585
    functionLinenumberEnd: 587
    functionName: DNSPacketMangler::DNSPacketMangler
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsparser.hh
    functionUses: 0
    functionsReached:
    - length
    - data
    linkageType: ''
    returnType: void
    signature: void DNSPacketMangler(std::string& packet)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - packet
    - length
    argTypes:
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 590
      start: 588
    functionDepth: 0
    functionLinenumber: 588
    functionLinenumberEnd: 590
    functionName: DNSPacketMangler::DNSPacketMangler
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsparser.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void DNSPacketMangler(char* packet, size_t length)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DNSPacketMangler::get8BitInt
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.hh:599,1
    - Dst: DNSPacketMangler::get8BitInt
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.hh:601,1
    - Dst: DNSPacketMangler::skipBytes
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.hh:604,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 606
      start: 596
    functionDepth: 0
    functionLinenumber: 596
    functionLinenumberEnd: 606
    functionName: DNSPacketMangler::skipDomainName
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsparser.hh
    functionUses: 18
    functionsReached:
    - DNSPacketMangler::get8BitInt
    - DNSPacketMangler::skipBytes
    linkageType: ''
    returnType: void
    signature: void skipDomainName()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSPacketMangler::moveOffset
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.hh:610,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - bytes
    argTypes:
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 611
      start: 608
    functionDepth: 0
    functionLinenumber: 608
    functionLinenumberEnd: 611
    functionName: DNSPacketMangler::skipBytes
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsparser.hh
    functionUses: 20
    functionsReached:
    - DNSPacketMangler::moveOffset
    linkageType: ''
    returnType: void
    signature: void skipBytes(uint16_t bytes)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSPacketMangler::rewindOffset
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.hh:614,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - by
    argTypes:
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 615
      start: 612
    functionDepth: 0
    functionLinenumber: 612
    functionLinenumberEnd: 615
    functionName: DNSPacketMangler::rewindBytes
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsparser.hh
    functionUses: 2
    functionsReached:
    - DNSPacketMangler::rewindOffset
    linkageType: ''
    returnType: void
    signature: void rewindBytes(uint16_t by)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSPacketMangler::moveOffset
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.hh:619,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.hh:621,1
    - Dst: ntohl
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.hh:622,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 623
      start: 616
    functionDepth: 0
    functionLinenumber: 616
    functionLinenumberEnd: 623
    functionName: DNSPacketMangler::get32BitInt
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsparser.hh
    functionUses: 4
    functionsReached:
    - DNSPacketMangler::moveOffset
    - ntohl
    - memcpy
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t get32BitInt()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSPacketMangler::moveOffset
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.hh:627,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.hh:629,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.hh:630,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 631
      start: 624
    functionDepth: 0
    functionLinenumber: 624
    functionLinenumberEnd: 631
    functionName: DNSPacketMangler::get16BitInt
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsparser.hh
    functionUses: 18
    functionsReached:
    - DNSPacketMangler::moveOffset
    - ntohs
    - memcpy
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t get16BitInt()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSPacketMangler::moveOffset
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.hh:636,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 638
      start: 633
    functionDepth: 0
    functionLinenumber: 633
    functionLinenumberEnd: 638
    functionName: DNSPacketMangler::get8BitInt
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsparser.hh
    functionUses: 2
    functionsReached:
    - DNSPacketMangler::moveOffset
    linkageType: ''
    returnType: uint8_t
    signature: uint8_t get8BitInt()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSPacketMangler::get16BitInt
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.hh:642,1
    - Dst: DNSPacketMangler::moveOffset
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.hh:643,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 644
      start: 640
    functionDepth: 0
    functionLinenumber: 640
    functionLinenumberEnd: 644
    functionName: DNSPacketMangler::skipRData
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsparser.hh
    functionUses: 18
    functionsReached:
    - DNSPacketMangler::moveOffset
    - DNSPacketMangler::get16BitInt
    linkageType: ''
    returnType: void
    signature: void skipRData()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSPacketMangler::get16BitInt
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.hh:648,1
    - Dst: DNSPacketMangler::moveOffset
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.hh:650,1
    - Dst: std::pair<uint32_t,uint32_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.hh:652,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 653
      start: 646
    functionDepth: 0
    functionLinenumber: 646
    functionLinenumberEnd: 653
    functionName: DNSPacketMangler::skipRDataAndReturnOffsets
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsparser.hh
    functionUses: 2
    functionsReached:
    - DNSPacketMangler::moveOffset
    - std::pair<uint32_t,uint32_t>
    - DNSPacketMangler::get16BitInt
    linkageType: ''
    returnType: std::pair<uint32_t, uint32_t>
    signature: std::pair<uint32_t, uint32_t> skipRDataAndReturnOffsets()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DNSPacketMangler::moveOffset
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.hh:658,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.hh:661,1
    - Dst: ntohl
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.hh:662,1
    - Dst: htonl
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.hh:668,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.hh:669,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - decrease
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 670
      start: 655
    functionDepth: 0
    functionLinenumber: 655
    functionLinenumberEnd: 670
    functionName: DNSPacketMangler::decreaseAndSkip32BitInt
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsparser.hh
    functionUses: 2
    functionsReached:
    - htonl
    - DNSPacketMangler::moveOffset
    - ntohl
    - memcpy
    linkageType: ''
    returnType: void
    signature: void decreaseAndSkip32BitInt(uint32_t decrease)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSPacketMangler::moveOffset
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.hh:674,1
    - Dst: htonl
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.hh:676,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.hh:677,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - value
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 678
      start: 672
    functionDepth: 0
    functionLinenumber: 672
    functionLinenumberEnd: 678
    functionName: DNSPacketMangler::setAndSkip32BitInt
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsparser.hh
    functionUses: 2
    functionsReached:
    - DNSPacketMangler::moveOffset
    - memcpy
    - htonl
    linkageType: ''
    returnType: void
    signature: void setAndSkip32BitInt(uint32_t value)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 683
      start: 680
    functionDepth: 0
    functionLinenumber: 680
    functionLinenumberEnd: 683
    functionName: DNSPacketMangler::getOffset
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsparser.hh
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t getOffset() const
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: std::swap
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.hh:688,1
    - Dst: std::out_of_range
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.hh:691,1
    - Dst: std::out_of_range
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.hh:694,1
    - Dst: std::out_of_range
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.hh:697,1
    - Dst: std::out_of_range
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.hh:700,1
    - Dst: std::out_of_range
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.hh:704,1
    - Dst: std::swap_ranges
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.hh:706,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 20
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - std::pair<uint32_t, uint32_t>
    - std::pair<uint32_t, uint32_t>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 707
      start: 685
    functionDepth: 0
    functionLinenumber: 685
    functionLinenumberEnd: 707
    functionName: DNSPacketMangler::swapInPlace
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsparser.hh
    functionUses: 2
    functionsReached:
    - std::swap_ranges
    - std::swap
    - std::out_of_range
    linkageType: ''
    returnType: void
    signature: void swapInPlace(std::pair<uint32_t, uint32_t> a, std::pair<uint32_t,
      uint32_t> b)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::out_of_range
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.hh:714,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.hh:714,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.hh:715,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - by
    argTypes:
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 716
      start: 710
    functionDepth: 0
    functionLinenumber: 710
    functionLinenumberEnd: 716
    functionName: DNSPacketMangler::moveOffset
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsparser.hh
    functionUses: 16
    functionsReached:
    - std::out_of_range
    - std::to_string
    linkageType: ''
    returnType: void
    signature: void moveOffset(uint16_t by)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: std::out_of_range
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.hh:721,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.hh:721,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.hh:722,1
    - Dst: std::out_of_range
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.hh:725,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.hh:725,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsparser.hh:726,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 6
    argCount: 1
    argNames:
    - by
    argTypes:
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 727
      start: 718
    functionDepth: 0
    functionLinenumber: 718
    functionLinenumberEnd: 727
    functionName: DNSPacketMangler::rewindOffset
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsparser.hh
    functionUses: 2
    functionsReached:
    - std::out_of_range
    - std::to_string
    linkageType: ''
    returnType: void
    signature: void rewindOffset(uint16_t by)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 10
      start: 9
    functionDepth: 0
    functionLinenumber: 9
    functionLinenumberEnd: 10
    functionName: DEBUGLOG
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler-mplexer.hh
    functionUses: 20
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEBUGLOG(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - ' mplexer'
    - fd
    argTypes:
    - FDMultiplexer
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 20
      start: 17
    functionDepth: 0
    functionLinenumber: 17
    functionLinenumberEnd: 20
    functionName: IOStateHandler::IOStateHandler
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler-mplexer.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void IOStateHandler(FDMultiplexer& mplexer, const int fd)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' mplexer'
    argTypes:
    - FDMultiplexer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 25
      start: 22
    functionDepth: 0
    functionLinenumber: 22
    functionLinenumberEnd: 25
    functionName: IOStateHandler::IOStateHandler
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler-mplexer.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void IOStateHandler(FDMultiplexer& mplexer)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: reset
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler-mplexer.hh:33,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 39
      start: 27
    functionDepth: 0
    functionLinenumber: 27
    functionLinenumberEnd: 39
    functionName: ~IOStateHandler()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler-mplexer.hh
    functionUses: 0
    functionsReached:
    - reset
    linkageType: ''
    returnType: void
    signature: void ~IOStateHandler()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 41
    functionDepth: 0
    functionLinenumber: 41
    functionLinenumberEnd: 44
    functionName: IOStateHandler::isWaitingForRead
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler-mplexer.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool isWaitingForRead() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 46
    functionDepth: 0
    functionLinenumber: 46
    functionLinenumberEnd: 49
    functionName: IOStateHandler::isWaitingForWrite
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler-mplexer.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool isWaitingForWrite() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler-mplexer.hh:54,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - fd
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 51
    functionDepth: 0
    functionLinenumber: 51
    functionLinenumberEnd: 57
    functionName: IOStateHandler::setSocket
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler-mplexer.hh
    functionUses: 0
    functionsReached:
    - std::runtime_error
    linkageType: ''
    returnType: void
    signature: void setSocket(int fd)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: IOStateHandler::update
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler-mplexer.hh:61,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 59
    functionDepth: 1
    functionLinenumber: 59
    functionLinenumberEnd: 62
    functionName: IOStateHandler::reset
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler-mplexer.hh
    functionUses: 0
    functionsReached:
    - IOStateHandler::update
    linkageType: ''
    returnType: void
    signature: void reset()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: std::string::reserve
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler-mplexer.hh:67,1
    - Dst: IOStateHandler::isWaitingForRead
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler-mplexer.hh:68,1
    - Dst: std::string::at
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler-mplexer.hh:69,1
    - Dst: IOStateHandler::isWaitingForWrite
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler-mplexer.hh:71,1
    - Dst: std::string::at
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler-mplexer.hh:72,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 64
    functionDepth: 1
    functionLinenumber: 64
    functionLinenumberEnd: 75
    functionName: IOStateHandler::getState
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler-mplexer.hh
    functionUses: 0
    functionsReached:
    - IOStateHandler::isWaitingForWrite
    - std::string::at
    - IOStateHandler::isWaitingForRead
    - std::string::reserve
    linkageType: ''
    returnType: std::string
    signature: std::string getState() const
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: DEBUGLOG
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler-mplexer.hh:79,1
    - Dst: IOStateHandler::getState
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler-mplexer.hh:79,1
    - Dst: IOStateHandler::isWaitingForRead
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler-mplexer.hh:81,1
    - Dst: setReadTTD
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler-mplexer.hh:84,1
    - Dst: addReadFD
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler-mplexer.hh:89,1
    - Dst: DEBUGLOG
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler-mplexer.hh:90,1
    - Dst: IOStateHandler::isWaitingForWrite
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler-mplexer.hh:94,1
    - Dst: setWriteTTD
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler-mplexer.hh:97,1
    - Dst: addWriteFD
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler-mplexer.hh:102,1
    - Dst: DEBUGLOG
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler-mplexer.hh:103,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 24
    argCount: 4
    argNames:
    - iostate
    - callback
    - callbackData
    - ttd
    argTypes:
    - IOState
    - FDMultiplexer::callbackfunc_t
    - FDMultiplexer::funcparam_t
    - std::optional<struct timeval>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 77
    functionDepth: 1
    functionLinenumber: 77
    functionLinenumberEnd: 106
    functionName: IOStateHandler::add
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler-mplexer.hh
    functionUses: 0
    functionsReached:
    - DEBUGLOG
    - addReadFD
    - setReadTTD
    - IOStateHandler::isWaitingForWrite
    - setWriteTTD
    - IOStateHandler::getState
    - addWriteFD
    - IOStateHandler::isWaitingForRead
    linkageType: ''
    returnType: void
    signature: void add(IOState iostate, FDMultiplexer::callbackfunc_t callback, FDMultiplexer::funcparam_t
      callbackData, std::optional<struct timeval> ttd)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: FDMultiplexer::callbackfunc_t
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler-mplexer.hh:108,1
    - Dst: boost::any
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler-mplexer.hh:108,1
    - Dst: DEBUGLOG
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler-mplexer.hh:110,1
    - Dst: IOStateHandler::getState
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler-mplexer.hh:110,1
    - Dst: IOStateHandler::isWaitingForRead
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler-mplexer.hh:111,1
    - Dst: DEBUGLOG
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler-mplexer.hh:112,1
    - Dst: removeReadFD
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler-mplexer.hh:113,1
    - Dst: IOStateHandler::isWaitingForWrite
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler-mplexer.hh:116,1
    - Dst: DEBUGLOG
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler-mplexer.hh:117,1
    - Dst: removeWriteFD
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler-mplexer.hh:118,1
    - Dst: IOStateHandler::isWaitingForRead
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler-mplexer.hh:123,1
    - Dst: setReadTTD
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler-mplexer.hh:126,1
    - Dst: IOStateHandler::isWaitingForWrite
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler-mplexer.hh:131,1
    - Dst: alterFDToRead
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler-mplexer.hh:133,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler-mplexer.hh:133,1
    - Dst: DEBUGLOG
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler-mplexer.hh:134,1
    - Dst: addReadFD
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler-mplexer.hh:137,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler-mplexer.hh:137,1
    - Dst: DEBUGLOG
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler-mplexer.hh:138,1
    - Dst: IOStateHandler::isWaitingForWrite
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler-mplexer.hh:144,1
    - Dst: setWriteTTD
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler-mplexer.hh:147,1
    - Dst: IOStateHandler::isWaitingForRead
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler-mplexer.hh:152,1
    - Dst: alterFDToWrite
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler-mplexer.hh:154,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler-mplexer.hh:154,1
    - Dst: DEBUGLOG
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler-mplexer.hh:155,1
    - Dst: addWriteFD
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler-mplexer.hh:158,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler-mplexer.hh:158,1
    - Dst: DEBUGLOG
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler-mplexer.hh:159,1
    - Dst: DEBUGLOG
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler-mplexer.hh:165,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 49
    argCount: 1
    argNames:
    - iostate
    argTypes:
    - IOState
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 167
      start: 108
    functionDepth: 1
    functionLinenumber: 108
    functionLinenumberEnd: 167
    functionName: IOStateHandler::update
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler-mplexer.hh
    functionUses: 1
    functionsReached:
    - alterFDToRead
    - std::move
    - FDMultiplexer::callbackfunc_t
    - DEBUGLOG
    - setReadTTD
    - addReadFD
    - IOStateHandler::isWaitingForWrite
    - removeReadFD
    - removeWriteFD
    - setWriteTTD
    - IOStateHandler::getState
    - boost::any
    - addWriteFD
    - IOStateHandler::isWaitingForRead
    - alterFDToWrite
    linkageType: ''
    returnType: void
    signature: void update(IOState iostate, FDMultiplexer::callbackfunc_t callback
      = FDMultiplexer::callbackfunc_t(), FDMultiplexer::funcparam_t callbackData =
      boost::any(), std::optional<struct timeval> ttd = std::nullopt)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' handler'
    argTypes:
    - std::unique_ptr<IOStateHandler>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 184
      start: 181
    functionDepth: 0
    functionLinenumber: 181
    functionLinenumberEnd: 184
    functionName: IOStateGuard::IOStateGuard
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler-mplexer.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void IOStateGuard(std::unique_ptr<IOStateHandler>& handler)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DEBUGLOG
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler-mplexer.hh:192,1
    - Dst: reset
      Src: /src/pdns/pdns/dnsdistdist/tcpiohandler-mplexer.hh:194,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 202
      start: 186
    functionDepth: 0
    functionLinenumber: 186
    functionLinenumberEnd: 202
    functionName: ~IOStateGuard()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler-mplexer.hh
    functionUses: 0
    functionsReached:
    - reset
    - DEBUGLOG
    linkageType: ''
    returnType: void
    signature: void ~IOStateGuard()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 207
      start: 204
    functionDepth: 0
    functionLinenumber: 204
    functionLinenumberEnd: 207
    functionName: IOStateGuard::release
    functionSourceFile: /src/pdns/pdns/dnsdistdist/tcpiohandler-mplexer.hh
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void release()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnstap.cc:65,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 63
    functionDepth: 0
    functionLinenumber: 63
    functionLinenumberEnd: 66
    functionName: '&& DnstapMessage::getBuffer()'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnstap.cc
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: std::string
    signature: std::string && DnstapMessage::getBuffer()
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnstap.cc:69,1
    - Dst: protozero::pbf_writer::add_bytes
      Src: /src/pdns/pdns/dnsdistdist/dnstap.cc:73,1
    - Dst: protozero::pbf_writer::add_bytes
      Src: /src/pdns/pdns/dnsdistdist/dnstap.cc:74,1
    - Dst: protozero::pbf_writer::add_enum
      Src: /src/pdns/pdns/dnsdistdist/dnstap.cc:75,1
    - Dst: protozero::pbf_writer::add_enum
      Src: /src/pdns/pdns/dnsdistdist/dnstap.cc:80,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/dnsdistdist/dnstap.cc:80,1
    - Dst: protozero::pbf_writer::add_enum
      Src: /src/pdns/pdns/dnsdistdist/dnstap.cc:82,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/dnsdistdist/dnstap.cc:82,1
    - Dst: protozero::pbf_writer::add_enum
      Src: /src/pdns/pdns/dnsdistdist/dnstap.cc:85,1
    - Dst: protozero::pbf_writer::add_enum
      Src: /src/pdns/pdns/dnsdistdist/dnstap.cc:88,1
    - Dst: protozero::pbf_writer::add_bytes
      Src: /src/pdns/pdns/dnsdistdist/dnstap.cc:94,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/dnstap.cc:94,1
    - Dst: protozero::pbf_writer::add_bytes
      Src: /src/pdns/pdns/dnsdistdist/dnstap.cc:98,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/dnstap.cc:98,1
    - Dst: protozero::pbf_writer::add_uint32
      Src: /src/pdns/pdns/dnsdistdist/dnstap.cc:100,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnstap.cc:100,1
    - Dst: protozero::pbf_writer::add_bytes
      Src: /src/pdns/pdns/dnsdistdist/dnstap.cc:106,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/dnstap.cc:106,1
    - Dst: protozero::pbf_writer::add_bytes
      Src: /src/pdns/pdns/dnsdistdist/dnstap.cc:110,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/dnstap.cc:110,1
    - Dst: protozero::pbf_writer::add_uint32
      Src: /src/pdns/pdns/dnsdistdist/dnstap.cc:112,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnstap.cc:112,1
    - Dst: protozero::pbf_writer::add_uint64
      Src: /src/pdns/pdns/dnsdistdist/dnstap.cc:116,1
    - Dst: protozero::pbf_writer::add_fixed32
      Src: /src/pdns/pdns/dnsdistdist/dnstap.cc:117,1
    - Dst: protozero::pbf_writer::add_uint64
      Src: /src/pdns/pdns/dnsdistdist/dnstap.cc:121,1
    - Dst: protozero::pbf_writer::add_fixed32
      Src: /src/pdns/pdns/dnsdistdist/dnstap.cc:122,1
    - Dst: protozero::pbf_writer::add_bytes
      Src: /src/pdns/pdns/dnsdistdist/dnstap.cc:128,1
    - Dst: protozero::pbf_writer::add_bytes
      Src: /src/pdns/pdns/dnsdistdist/dnstap.cc:131,1
    - Dst: protozero::pbf_writer::add_enum
      Src: /src/pdns/pdns/dnsdistdist/dnstap.cc:136,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/dnsdistdist/dnstap.cc:136,1
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnstap.cc:139,1
    - Dst: protozero::pbf_writer::add_bytes
      Src: /src/pdns/pdns/dnsdistdist/dnstap.cc:140,1
    - Dst: toDNSString
      Src: /src/pdns/pdns/dnsdistdist/dnstap.cc:140,1
    - Dst: protozero::pbf_writer::commit
      Src: /src/pdns/pdns/dnsdistdist/dnstap.cc:143,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 52
    argCount: 12
    argNames:
    - ' buffer'
    - type
    - ' identity'
    - requestor
    - responder
    - protocol
    - packet
    - len
    - queryTime
    - responseTime
    - ' auth'
    - httpProtocol
    argTypes:
    - std::string
    - DnstapMessage::MessageType
    - std::string
    - ComboAddress*
    - ComboAddress*
    - DnstapMessage::ProtocolType
    - char*
    - size_t
    - struct timespec*
    - struct timespec*
    - DNSName
    - std::optional<HttpProtocolType>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 144
      start: 68
    functionDepth: 0
    functionLinenumber: 68
    functionLinenumberEnd: 144
    functionName: DnstapMessage::DnstapMessage
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnstap.cc
    functionUses: 0
    functionsReached:
    - static_cast<protozero::pbf_tag_type>
    - std::move
    - protozero::pbf_writer::commit
    - ntohs
    - protozero::pbf_writer::add_bytes
    - protozero::pbf_writer::add_uint64
    - protozero::pbf_writer::add_fixed32
    - empty
    - reinterpret_cast<const char*>
    - toDNSString
    - protozero::pbf_writer::add_uint32
    - protozero::pbf_writer::add_enum
    linkageType: ''
    returnType: void
    signature: void DnstapMessage::DnstapMessage(std::string&& buffer, DnstapMessage::MessageType
      type, const std::string& identity, const ComboAddress* requestor, const ComboAddress*
      responder, DnstapMessage::ProtocolType protocol, const char* packet, const size_t
      len, const struct timespec* queryTime, const struct timespec* responseTime,
      const DNSName& auth, const std::optional<HttpProtocolType> httpProtocol)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::pbf_writer::add_bytes
      Src: /src/pdns/pdns/dnsdistdist/dnstap.cc:149,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' extra'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 150
      start: 146
    functionDepth: 0
    functionLinenumber: 146
    functionLinenumberEnd: 150
    functionName: DnstapMessage::setExtra
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnstap.cc
    functionUses: 0
    functionsReached:
    - protozero::pbf_writer::add_bytes
    linkageType: ''
    returnType: void
    signature: void DnstapMessage::setExtra(const std::string& extra)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: std::string::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:80,1
    - Dst: getUniqueID
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:81,1
    - Dst: libssl_tls_version_to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:82,1
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:85,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:87,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 2
    argNames:
    - ' entry'
    - ' rustName'
    argTypes:
    - std::shared_ptr<T>
    - ::rust::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 77
    functionDepth: 0
    functionLinenumber: 77
    functionLinenumberEnd: 89
    functionName: dnsdist::configuration::yaml::registerType
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc
    functionUses: 0
    functionsReached:
    - std::runtime_error
    - getUniqueID
    - lock
    - libssl_tls_version_to_string
    - std::string::empty
    linkageType: ''
    returnType: void
    signature: void registerType(const std::shared_ptr<T>& entry, const ::rust::string&
      rustName)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:94,1
    - Dst: auto::find
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:95,1
    - Dst: auto::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:96,1
    - Dst: std::get_if<std::shared_ptr<T>>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:99,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - ' name'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 92
    functionDepth: 0
    functionLinenumber: 92
    functionLinenumberEnd: 103
    functionName: dnsdist::configuration::yaml::getRegisteredTypeByName
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc
    functionUses: 0
    functionsReached:
    - auto::end
    - std::get_if<std::shared_ptr<T>>
    - auto::find
    - lock
    linkageType: ''
    returnType: std::shared_ptr<T>
    signature: std::shared_ptr<T> getRegisteredTypeByName(const std::string& name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:108,1
    - Dst: dnsdist::configuration::yaml::getRegisteredTypeByName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:109,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' name'
    argTypes:
    - ::rust::String
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 106
    functionDepth: 1
    functionLinenumber: 106
    functionLinenumberEnd: 110
    functionName: dnsdist::configuration::yaml::getRegisteredTypeByName
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc
    functionUses: 1
    functionsReached:
    - dnsdist::configuration::yaml::getRegisteredTypeByName
    - std::string
    linkageType: ''
    returnType: std::shared_ptr<T>
    signature: std::shared_ptr<T> getRegisteredTypeByName(const ::rust::String& name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::checked_stoi<T>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:116,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:119,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:119,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - ' context'
    - ' parameterName'
    - ' str'
    argTypes:
    - std::string
    - std::string
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 113
    functionDepth: 0
    functionLinenumber: 113
    functionLinenumberEnd: 121
    functionName: dnsdist::configuration::yaml::checkedConversionFromStr
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc
    functionUses: 0
    functionsReached:
    - what
    - pdns::checked_stoi<T>
    - std::runtime_error
    linkageType: ''
    returnType: T
    signature: T checkedConversionFromStr(const std::string& context, const std::string&
      parameterName, const std::string& str)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::configuration::yaml::checkedConversionFromStr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:126,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:126,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' context'
    - ' parameterName'
    - ' str'
    argTypes:
    - std::string
    - std::string
    - ::rust::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 127
      start: 124
    functionDepth: 1
    functionLinenumber: 124
    functionLinenumberEnd: 127
    functionName: dnsdist::configuration::yaml::checkedConversionFromStr
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc
    functionUses: 1
    functionsReached:
    - std::string
    - dnsdist::configuration::yaml::checkedConversionFromStr
    linkageType: ''
    returnType: T
    signature: T checkedConversionFromStr(const std::string& context, const std::string&
      parameterName, const ::rust::string& str)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:132,1
    - Dst: auto::readVariable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:133,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:133,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - ' destination'
    - ' functionName'
    argTypes:
    - T
    - ::rust::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 139
      start: 130
    functionDepth: 0
    functionLinenumber: 130
    functionLinenumberEnd: 139
    functionName: dnsdist::configuration::yaml::getOptionalLuaFunction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc
    functionUses: 0
    functionsReached:
    - std::string
    - auto::readVariable
    - lock
    linkageType: ''
    returnType: bool
    signature: bool getOptionalLuaFunction(T& destination, const ::rust::string& functionName)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::string::reserve
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:145,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:145,1
    - Dst: std::string::begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:147,1
    - Dst: std::find
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:148,1
    - Dst: std::string::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:148,1
    - Dst: std::string::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:149,1
    - Dst: std::distance
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:149,1
    - Dst: std::string::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:149,1
    - Dst: std::string::insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:150,1
    - Dst: std::string::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:150,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:152,1
    - Dst: dnsdist::configuration::yaml::checkedConversionFromStr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:153,1
    - Dst: std::string::insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:154,1
    - Dst: std::string::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:154,1
    - Dst: static_cast<char>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:154,1
    - Dst: std::find
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:155,1
    - Dst: std::string::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:155,1
    - Dst: std::string::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:158,1
    - Dst: std::string::insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:159,1
    - Dst: std::string::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:159,1
    - Dst: std::string::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:159,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - ' sourceRust'
    argTypes:
    - ::rust::String
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 163
      start: 141
    functionDepth: 1
    functionLinenumber: 141
    functionLinenumberEnd: 163
    functionName: dnsdist::configuration::yaml::rustStringWithEscapedRawContentToString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc
    functionUses: 0
    functionsReached:
    - std::string::begin
    - std::distance
    - std::string::reserve
    - std::string::end
    - dnsdist::configuration::yaml::checkedConversionFromStr
    - std::find
    - std::string
    - std::string::size
    - static_cast<char>
    - std::string::insert
    linkageType: ''
    returnType: std::string
    signature: std::string rustStringWithEscapedRawContentToString(const ::rust::String&
      sourceRust)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:167,1
    - Dst: boost::to_lower
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:168,1
    - Dst: RCode::from_short
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:169,1
    - Dst: dnsdist::configuration::yaml::checkedConversionFromStr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:171,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - ' context'
    - ' parameterName'
    - ' rcode_rust_string'
    argTypes:
    - std::string
    - std::string
    - ::rust::String
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 174
      start: 165
    functionDepth: 1
    functionLinenumber: 165
    functionLinenumberEnd: 174
    functionName: dnsdist::configuration::yaml::strToRCode
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc
    functionUses: 0
    functionsReached:
    - std::string
    - boost::to_lower
    - RCode::from_short
    - dnsdist::configuration::yaml::checkedConversionFromStr
    linkageType: ''
    returnType: uint8_t
    signature: uint8_t strToRCode(const std::string& context, const std::string& parameterName,
      const ::rust::String& rcode_rust_string)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:178,1
    - Dst: QType::QType
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:179,1
    - Dst: QType::getCode
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:181,1
    - Dst: dnsdist::configuration::yaml::checkedConversionFromStr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:182,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - ' context'
    - ' parameterName'
    - ' qtype_rust_string'
    argTypes:
    - std::string
    - std::string
    - ::rust::String
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 185
      start: 176
    functionDepth: 1
    functionLinenumber: 176
    functionLinenumberEnd: 185
    functionName: dnsdist::configuration::yaml::strToQType
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc
    functionUses: 0
    functionsReached:
    - std::string
    - dnsdist::configuration::yaml::checkedConversionFromStr
    - QType::QType
    - QType::getCode
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t strToQType(const std::string& context, const std::string&
      parameterName, const ::rust::String& qtype_rust_string)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:189,1
    - Dst: boost::to_lower
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:190,1
    - Dst: Opcode::from_lowercase_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:191,1
    - Dst: dnsdist::configuration::yaml::checkedConversionFromStr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:193,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - ' context'
    - ' parameterName'
    - ' opcode_rust_string'
    argTypes:
    - std::string
    - std::string
    - ::rust::String
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 196
      start: 187
    functionDepth: 1
    functionLinenumber: 187
    functionLinenumberEnd: 196
    functionName: dnsdist::configuration::yaml::strToOpcode
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc
    functionUses: 0
    functionsReached:
    - Opcode::from_lowercase_string
    - std::string
    - boost::to_lower
    - dnsdist::configuration::yaml::checkedConversionFromStr
    linkageType: ''
    returnType: uint8_t
    signature: uint8_t strToOpcode(const std::string& context, const std::string&
      parameterName, const ::rust::String& opcode_rust_string)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::ifstream
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:201,1
    - Dst: auto::is_open
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:202,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:205,1
    - Dst: std::istreambuf_iterator<char>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:205,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ' fileName'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 206
      start: 198
    functionDepth: 0
    functionLinenumber: 198
    functionLinenumberEnd: 206
    functionName: dnsdist::configuration::yaml::loadContentFromConfigurationFile
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc
    functionUses: 0
    functionsReached:
    - auto::is_open
    - std::ifstream
    - std::string
    - std::istreambuf_iterator<char>
    linkageType: ''
    returnType: std::optional<std::string>
    signature: std::optional<std::string> loadContentFromConfigurationFile(const std::string&
      fileName)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:211,1
    - Dst: dnsdist::configuration::yaml::getOptionalLuaFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:212,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:216,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:216,1
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:218,1
    - Dst: dnsdist::lua::getFunctionFromLuaCode<FuncType>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:219,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:219,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:224,1
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:226,1
    - Dst: dnsdist::configuration::yaml::loadContentFromConfigurationFile
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:227,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:227,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:229,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:229,1
    - Dst: dnsdist::lua::getFunctionFromLuaCode<FuncType>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:231,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:236,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:236,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 25
    argCount: 5
    argNames:
    - ' destination'
    - ' functionName'
    - ' functionCode'
    - ' functionFile'
    - ' context'
    argTypes:
    - FuncType
    - ::rust::string
    - ::rust::string
    - ::rust::string
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 239
      start: 209
    functionDepth: 1
    functionLinenumber: 209
    functionLinenumberEnd: 239
    functionName: dnsdist::configuration::yaml::getLuaFunctionFromConfiguration
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc
    functionUses: 0
    functionsReached:
    - dnsdist::configuration::yaml::loadContentFromConfigurationFile
    - std::runtime_error
    - dnsdist::configuration::yaml::getOptionalLuaFunction
    - dnsdist::lua::getFunctionFromLuaCode<FuncType>
    - empty
    - std::string
    linkageType: ''
    returnType: bool
    signature: bool getLuaFunctionFromConfiguration(FuncType& destination, const ::rust::string&
      functionName, const ::rust::string& functionCode, const ::rust::string& functionFile,
      const std::string& context)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: stringtok
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:245,1
    - Dst: std::set::insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:247,1
    - Dst: dnsdist::configuration::yaml::checkedConversionFromStr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:247,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - ' context'
    - ' cpuStr'
    argTypes:
    - std::string
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 250
      start: 241
    functionDepth: 1
    functionLinenumber: 241
    functionLinenumberEnd: 250
    functionName: dnsdist::configuration::yaml::getCPUPiningFromStr
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc
    functionUses: 0
    functionsReached:
    - dnsdist::configuration::yaml::checkedConversionFromStr
    - stringtok
    - std::set::insert
    linkageType: ''
    returnType: std::set<int>
    signature: std::set<int> getCPUPiningFromStr(const std::string& context, const
      std::string& cpuStr)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:256,1
    - Dst: key::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:257,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:258,1
    - Dst: password::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:260,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:261,1
    - Dst: TLSConfig::d_certKeyPairs::push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:263,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:263,1
    - Dst: TLSConfig::d_ocspFiles::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:266,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:268,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:269,1
    - Dst: libssl_tls_version_from_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:271,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:271,1
    - Dst: minimum_version::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:273,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:274,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:274,1
    - Dst: logger::info
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:275,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:278,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:279,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 31
    argCount: 2
    argNames:
    - ' context'
    - ' incomingTLSConfig'
    argTypes:
    - Context
    - dnsdist::rust::settings::IncomingTlsConfiguration
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 292
      start: 252
    functionDepth: 0
    functionLinenumber: 252
    functionLinenumberEnd: 292
    functionName: dnsdist::configuration::yaml::getTLSConfigFromRustIncomingTLS
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc
    functionUses: 0
    functionsReached:
    - TLSConfig::d_certKeyPairs::push_back
    - std::move
    - SLOG
    - TLSConfig::d_ocspFiles::emplace_back
    - warnlog
    - minimum_version::empty
    - logger::info
    - std::string
    - password::empty
    - key::empty
    - libssl_tls_version_from_string
    linkageType: ''
    returnType: TLSConfig
    signature: TLSConfig getTLSConfigFromRustIncomingTLS([[maybe_unused]] const Context&
      context, const dnsdist::rust::settings::IncomingTlsConfiguration& incomingTLSConfig)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: libssl_init_server_context
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:304,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:307,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:307,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:307,1
    - Dst: logger::error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:308,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:308,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:308,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:308,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 3
    argNames:
    - ' context'
    - ' bind'
    - ' tlsConfig'
    argTypes:
    - Context
    - dnsdist::rust::settings::BindConfiguration
    - TLSConfig
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 314
      start: 294
    functionDepth: 0
    functionLinenumber: 294
    functionLinenumberEnd: 314
    functionName: dnsdist::configuration::yaml::validateTLSConfiguration
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc
    functionUses: 0
    functionsReached:
    - errlog
    - SLOG
    - Logging::Loggable
    - what
    - libssl_init_server_context
    - logger::error
    - std::string
    linkageType: ''
    returnType: bool
    signature: bool validateTLSConfiguration(const Context& context, const dnsdist::rust::settings::BindConfiguration&
      bind, [[maybe_unused]] const TLSConfig& tlsConfig)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::configuration::yaml::getTLSConfigFromRustIncomingTLS
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:318,1
    - Dst: dnsdist::configuration::yaml::validateTLSConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:319,1
    - Dst: boost::to_lower_copy
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:323,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:323,1
    - Dst: std::make_shared<TLSFrontend>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:325,1
    - Dst: auto::setParent
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:326,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:327,1
    - Dst: boost::algorithm::to_lower
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:328,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:330,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:331,1
    - Dst: std::make_shared<DOQFrontend>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:335,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:336,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:336,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:337,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:340,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:341,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:343,1
    - Dst: std::make_shared<DOH3Frontend>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:348,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:349,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:349,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:350,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:352,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:353,1
    - Dst: doh::responses_map::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:356,1
    - Dst: std::make_shared<std::vector<std::shared_ptr<DOHResponseMapEntry>>>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:357,1
    - Dst: headers::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:360,1
    - Dst: std::unordered_map<std::string, std::string>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:361,1
    - Dst: std::optional::emplace
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:363,1
    - Dst: boost::to_lower_copy
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:363,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:363,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:363,1
    - Dst: std::make_shared<DOHResponseMapEntry>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:366,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:366,1
    - Dst: PacketBuffer
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:366,1
    - Dst: content::begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:366,1
    - Dst: content::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:366,1
    - Dst: auto::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:367,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:367,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:369,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:372,1
    - Dst: std::make_shared<DOHFrontend>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:377,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:379,1
    - Dst: boost::algorithm::to_lower
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:380,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:381,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:384,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:384,1
    - Dst: logger::error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:385,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:385,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:390,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:390,1
    - Dst: logger::info
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:391,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:391,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:391,1
    - Dst: auto::d_urls::emplace
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:396,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:399,1
    - Dst: std::pair
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:407,1
    - Dst: boost::to_lower_copy
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:407,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:407,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:407,1
    - Dst: auto::d_customResponseHeaders::insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:408,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:408,1
    - Dst: doh::responses_map::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:411,1
    - Dst: std::make_shared<std::vector<std::shared_ptr<DOHResponseMapEntry>>>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:412,1
    - Dst: headers::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:415,1
    - Dst: std::unordered_map<std::string, std::string>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:416,1
    - Dst: std::optional::emplace
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:418,1
    - Dst: boost::to_lower_copy
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:418,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:418,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:418,1
    - Dst: std::make_shared<DOHResponseMapEntry>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:421,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:421,1
    - Dst: PacketBuffer
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:421,1
    - Dst: content::begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:421,1
    - Dst: content::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:421,1
    - Dst: auto::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:422,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:422,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:424,1
    - Dst: auto::d_certKeyPairs::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:427,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:428,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:428,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:429,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:429,1
    - Dst: logger::info
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:430,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:430,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:433,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:433,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:434,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:434,1
    - Dst: d_addr::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:434,1
    - Dst: logger::info
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:435,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:435,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:439,1
    - Dst: setParent
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:440,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:441,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:445,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:445,1
    - Dst: logger::info
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:446,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:446,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:446,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 87
    argCount: 4
    argNames:
    - ' context'
    - ' bind'
    - ' state'
    - ' parent'
    argTypes:
    - Context
    - dnsdist::rust::settings::BindConfiguration
    - ClientState
    - std::shared_ptr<const TLSFrontend>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 451
      start: 316
    functionDepth: 1
    functionLinenumber: 316
    functionLinenumberEnd: 451
    functionName: dnsdist::configuration::yaml::handleTLSConfiguration
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc
    functionUses: 0
    functionsReached:
    - errlog
    - std::unordered_map<std::string, std::string>
    - setParent
    - auto::d_certKeyPairs::empty
    - std::optional::emplace
    - std::pair
    - std::string
    - auto::d_urls::emplace
    - SLOG
    - Logging::Loggable
    - doh::responses_map::empty
    - auto::d_customResponseHeaders::insert
    - std::make_shared<TLSFrontend>
    - std::make_shared<DOHResponseMapEntry>
    - boost::to_lower_copy
    - content::begin
    - d_addr::toStringWithPort
    - dnsdist::configuration::yaml::getTLSConfigFromRustIncomingTLS
    - content::end
    - auto::emplace_back
    - std::make_shared<DOQFrontend>
    - std::make_shared<DOHFrontend>
    - dnsdist::configuration::yaml::validateTLSConfiguration
    - logger::info
    - ComboAddress
    - headers::empty
    - std::move
    - std::make_shared<std::vector<std::shared_ptr<DOHResponseMapEntry>>>
    - std::make_shared<DOH3Frontend>
    - boost::algorithm::to_lower
    - infolog
    - auto::setParent
    - PacketBuffer
    - logger::error
    linkageType: ''
    returnType: bool
    signature: bool handleTLSConfiguration(const Context& context, const dnsdist::rust::settings::BindConfiguration&
      bind, ClientState& state, const std::shared_ptr<const TLSFrontend>& parent)
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:461,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:462,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:462,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:462,1
    - Dst: logger::info
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:463,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:463,1
    - Dst: static_cast<decltype(backendConfig.d_weight)>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:466,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:472,1
    - Dst: id::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:473,1
    - Dst: boost::uuids::string_generator
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:474,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:474,1
    - Dst: dnsdist::configuration::yaml::getCPUPiningFromStr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:482,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:482,1
    - Dst: qname::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:493,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:494,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:494,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:496,1
    - Dst: qclass::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:497,1
    - Dst: QClass
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:498,1
    - Dst: boost::to_upper_copy
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:498,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:498,1
    - Dst: dnsdist::configuration::yaml::getLuaFunctionFromConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:508,1
    - Dst: dnsdist::configuration::yaml::getLuaFunctionFromConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:509,1
    - Dst: DownstreamState::parseAvailabilityConfigFromStr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:511,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:511,1
    - Dst: lazy::mode::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:525,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:526,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:526,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:526,1
    - Dst: logger::info
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:527,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:527,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:527,1
    - Dst: boost::to_lower_copy
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:534,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:534,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:538,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:538,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:543,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:543,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:547,1
    - Dst: boost::algorithm::to_lower
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:548,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:549,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:550,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:551,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:552,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:557,1
    - Dst: subject_address::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:558,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:560,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:561,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:565,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:565,1
    - Dst: logger::info
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:566,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:566,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:566,1
    - Dst: DownstreamState::Config::d_tlsSubjectName::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:569,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:570,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:570,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:581,1
    - Dst: DownstreamState::Config::pools::emplace
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:586,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:589,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:589,1
    - Dst: source::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:590,1
    - Dst: DownstreamState::parseSourceParameter
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:591,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:591,1
    - Dst: getTLSContext
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:595,1
    - Dst: std::make_shared<DownstreamState>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:600,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:600,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:600,1
    - Dst: xsk::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:603,1
    - Dst: dnsdist::configuration::yaml::getRegisteredTypeByName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:604,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:606,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:606,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:606,1
    - Dst: auto::registerXsk
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:609,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:610,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:610,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:610,1
    - Dst: auto::at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:610,1
    - Dst: logger::info
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:611,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:611,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:611,1
    - Dst: auto::at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:611,1
    - Dst: auto::getProtocol
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:617,1
    - Dst: auto::getProtocol
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:617,1
    - Dst: dnsdist::ServiceDiscovery::addUpgradeableServer
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:618,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:618,1
    CyclomaticComplexity: 32
    EdgeCount: 32
    ICount: 126
    argCount: 3
    argNames:
    - ' context'
    - ' config'
    - configCheck
    argTypes:
    - Context
    - dnsdist::rust::settings::BackendConfiguration
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 622
      start: 453
    functionDepth: 2
    functionLinenumber: 453
    functionLinenumberEnd: 622
    functionName: dnsdist::configuration::yaml::createBackendFromConfiguration
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc
    functionUses: 0
    functionsReached:
    - errlog
    - QClass
    - DownstreamState::parseSourceParameter
    - dnsdist::ServiceDiscovery::addUpgradeableServer
    - DownstreamState::Config::pools::emplace
    - std::string
    - id::empty
    - SLOG
    - DownstreamState::parseAvailabilityConfigFromStr
    - static_cast<decltype(backendConfig.d_weight)>
    - Logging::Loggable
    - subject_address::empty
    - warnlog
    - getTLSContext
    - qname::empty
    - boost::to_lower_copy
    - dnsdist::configuration::yaml::getCPUPiningFromStr
    - DownstreamState::Config::d_tlsSubjectName::empty
    - boost::uuids::string_generator
    - std::make_shared<DownstreamState>
    - dnsdist::configuration::yaml::getRegisteredTypeByName
    - pdns::max
    - std::runtime_error
    - DNSName
    - logger::info
    - auto::getProtocol
    - qclass::empty
    - auto::registerXsk
    - ComboAddress
    - std::move
    - source::empty
    - boost::algorithm::to_lower
    - xsk::empty
    - infolog
    - boost::to_upper_copy
    - dnsdist::configuration::yaml::getLuaFunctionFromConfiguration
    - lazy::mode::empty
    - auto::at
    - ComboAddress::toString
    linkageType: ''
    returnType: std::shared_ptr<DownstreamState>
    signature: std::shared_ptr<DownstreamState> createBackendFromConfiguration(const
      Context& context, const dnsdist::rust::settings::BackendConfiguration& config,
      bool configCheck)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::configuration::updateRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:626,1
    - Dst: uuid::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:628,1
    - Dst: getUniqueID
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:628,1
    - Dst: getUniqueID
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:628,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:628,1
    - Dst: dnsdist::rules::add
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:629,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:629,1
    - Dst: uuid::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:633,1
    - Dst: getUniqueID
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:633,1
    - Dst: getUniqueID
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:633,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:633,1
    - Dst: dnsdist::rules::add
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:634,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:634,1
    - Dst: uuid::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:638,1
    - Dst: getUniqueID
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:638,1
    - Dst: getUniqueID
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:638,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:638,1
    - Dst: dnsdist::rules::add
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:639,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:639,1
    - Dst: uuid::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:643,1
    - Dst: getUniqueID
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:643,1
    - Dst: getUniqueID
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:643,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:643,1
    - Dst: dnsdist::rules::add
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:644,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:644,1
    - Dst: uuid::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:648,1
    - Dst: getUniqueID
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:648,1
    - Dst: getUniqueID
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:648,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:648,1
    - Dst: dnsdist::rules::add
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:649,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:649,1
    - Dst: uuid::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:653,1
    - Dst: getUniqueID
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:653,1
    - Dst: getUniqueID
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:653,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:653,1
    - Dst: dnsdist::rules::add
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:654,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:654,1
    - Dst: uuid::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:658,1
    - Dst: getUniqueID
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:658,1
    - Dst: getUniqueID
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:658,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:658,1
    - Dst: dnsdist::rules::add
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:659,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:659,1
    - Dst: uuid::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:663,1
    - Dst: getUniqueID
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:663,1
    - Dst: getUniqueID
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:663,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:663,1
    - Dst: dnsdist::rules::add
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:664,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:664,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 19
    argCount: 1
    argNames:
    - ' globalConfig'
    argTypes:
    - dnsdist::rust::settings::GlobalConfiguration
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 667
      start: 624
    functionDepth: 3
    functionLinenumber: 624
    functionLinenumberEnd: 667
    functionName: dnsdist::configuration::yaml::loadRulesConfiguration
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc
    functionUses: 0
    functionsReached:
    - getUniqueID
    - dnsdist::configuration::updateRuntimeConfiguration
    - uuid::empty
    - std::string
    - dnsdist::rules::add
    linkageType: ''
    returnType: void
    signature: void loadRulesConfiguration(const dnsdist::rust::settings::GlobalConfiguration&
      globalConfig)
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: default_action::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:671,1
    - Dst: dnsdist::configuration::updateRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:672,1
    - Dst: DNSAction::typeFromString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:673,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:673,1
    - Dst: std::make_shared<DynBlockRulesGroup>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:678,1
    - Dst: auto::setMasks
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:679,1
    - Dst: auto::excludeRange
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:681,1
    - Dst: Netmask
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:681,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:681,1
    - Dst: auto::includeRange
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:684,1
    - Dst: Netmask
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:684,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:684,1
    - Dst: auto::excludeDomain
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:687,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:687,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:687,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:691,1
    - Dst: action::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:691,1
    - Dst: DNSAction::typeFromString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:691,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:691,1
    - Dst: tag_name::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:692,1
    - Dst: std::make_shared<DynBlock::TagSettings>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:693,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:694,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:695,1
    - Dst: auto::setQueryRate
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:697,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:697,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:700,1
    - Dst: action::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:700,1
    - Dst: DNSAction::typeFromString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:700,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:700,1
    - Dst: tag_name::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:701,1
    - Dst: std::make_shared<DynBlock::TagSettings>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:702,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:703,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:704,1
    - Dst: auto::setRCodeRate
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:706,1
    - Dst: dnsdist::configuration::yaml::strToRCode
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:706,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:706,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:709,1
    - Dst: action::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:709,1
    - Dst: DNSAction::typeFromString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:709,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:709,1
    - Dst: tag_name::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:710,1
    - Dst: std::make_shared<DynBlock::TagSettings>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:711,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:712,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:713,1
    - Dst: auto::setRCodeRatio
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:715,1
    - Dst: dnsdist::configuration::yaml::strToRCode
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:715,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:715,1
    - Dst: std::unordered_set::insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:720,1
    - Dst: dnsdist::configuration::yaml::strToRCode
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:720,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:722,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:722,1
    - Dst: action::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:722,1
    - Dst: DNSAction::typeFromString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:722,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:722,1
    - Dst: tag_name::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:723,1
    - Dst: std::make_shared<DynBlock::TagSettings>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:724,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:725,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:726,1
    - Dst: auto::setAllowedRCodesRatio
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:728,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:728,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:731,1
    - Dst: action::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:731,1
    - Dst: DNSAction::typeFromString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:731,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:731,1
    - Dst: tag_name::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:732,1
    - Dst: std::make_shared<DynBlock::TagSettings>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:733,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:734,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:735,1
    - Dst: auto::setQTypeRate
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:737,1
    - Dst: dnsdist::configuration::yaml::strToQType
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:737,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:737,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:740,1
    - Dst: action::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:740,1
    - Dst: DNSAction::typeFromString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:740,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:740,1
    - Dst: tag_name::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:741,1
    - Dst: std::make_shared<DynBlock::TagSettings>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:742,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:743,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:744,1
    - Dst: auto::setCacheMissRatio
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:746,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:746,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:749,1
    - Dst: action::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:749,1
    - Dst: DNSAction::typeFromString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:749,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:749,1
    - Dst: tag_name::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:750,1
    - Dst: std::make_shared<DynBlock::TagSettings>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:751,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:752,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:753,1
    - Dst: auto::setResponseByteRate
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:755,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:755,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:758,1
    - Dst: action::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:758,1
    - Dst: DNSAction::typeFromString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:758,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:758,1
    - Dst: tag_name::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:759,1
    - Dst: std::make_shared<DynBlock::TagSettings>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:760,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:761,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:762,1
    - Dst: dnsdist::configuration::yaml::getLuaFunctionFromConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:765,1
    - Dst: auto::setSuffixMatchRule
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:766,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:766,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:766,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:769,1
    - Dst: action::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:769,1
    - Dst: DNSAction::typeFromString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:769,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:769,1
    - Dst: tag_name::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:770,1
    - Dst: std::make_shared<DynBlock::TagSettings>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:771,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:772,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:773,1
    - Dst: dnsdist::configuration::yaml::getLuaFunctionFromConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:776,1
    - Dst: auto::setSuffixMatchRuleFFI
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:777,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:777,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:777,1
    - Dst: dnsdist::DynamicBlocks::registerGroup
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:780,1
    CyclomaticComplexity: 34
    EdgeCount: 34
    ICount: 92
    argCount: 2
    argNames:
    - ' settings'
    - ' dynamicRules'
    argTypes:
    - dnsdist::rust::settings::DynamicRulesSettingsConfiguration
    - ::rust::Vec<dnsdist::rust::settings::DynamicRulesConfiguration>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 782
      start: 669
    functionDepth: 3
    functionLinenumber: 669
    functionLinenumberEnd: 782
    functionName: dnsdist::configuration::yaml::loadDynamicBlockConfiguration
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc
    functionUses: 0
    functionsReached:
    - auto::setMasks
    - std::make_shared<DynBlock::TagSettings>
    - dnsdist::configuration::yaml::strToRCode
    - dnsdist::configuration::updateRuntimeConfiguration
    - std::unordered_set::insert
    - auto::excludeRange
    - std::string
    - auto::includeRange
    - auto::setAllowedRCodesRatio
    - auto::setQTypeRate
    - DNSAction::typeFromString
    - auto::setSuffixMatchRuleFFI
    - action::empty
    - Netmask
    - auto::excludeDomain
    - tag_name::empty
    - std::make_shared<DynBlockRulesGroup>
    - auto::setQueryRate
    - DNSName
    - auto::setRCodeRate
    - dnsdist::configuration::yaml::strToQType
    - auto::setSuffixMatchRule
    - std::move
    - dnsdist::DynamicBlocks::registerGroup
    - default_action::empty
    - dnsdist::configuration::yaml::getLuaFunctionFromConfiguration
    - auto::setResponseByteRate
    - auto::setRCodeRatio
    - auto::setCacheMissRatio
    linkageType: ''
    returnType: void
    signature: void loadDynamicBlockConfiguration(const dnsdist::rust::settings::DynamicRulesSettingsConfiguration&
      settings, const ::rust::Vec<dnsdist::rust::settings::DynamicRulesConfiguration>&
      dynamicRules)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:789,1
    - Dst: d_additionalAddresses::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:790,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:793,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:793,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:793,1
    - Dst: logger::error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:794,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:794,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:794,1
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:798,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:799,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 12
    argCount: 4
    argNames:
    - ' context'
    - ' state'
    - ' protocol'
    - ' additionalAddresses'
    argTypes:
    - Context
    - std::shared_ptr<ClientState>
    - std::string
    - ::rust::Vec<::rust::String>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 801
      start: 784
    functionDepth: 0
    functionLinenumber: 784
    functionLinenumberEnd: 801
    functionName: dnsdist::configuration::yaml::handleAdditionalAddressesForFrontend
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc
    functionUses: 0
    functionsReached:
    - errlog
    - SLOG
    - Logging::Loggable
    - std::runtime_error
    - logger::error
    - empty
    - std::string
    - d_additionalAddresses::emplace_back
    linkageType: ''
    returnType: void
    signature: void handleAdditionalAddressesForFrontend(const Context& context, const
      std::shared_ptr<ClientState>& state, const std::string& protocol, const ::rust::Vec<::rust::String>&
      additionalAddresses)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: updateImmutableConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:806,1
    - Dst: boost::to_lower_copy
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:807,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:807,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:815,1
    - Dst: dnsdist::configuration::yaml::getCPUPiningFromStr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:816,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:816,1
    - Dst: xsk::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:818,1
    - Dst: dnsdist::configuration::yaml::getRegisteredTypeByName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:819,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:821,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:821,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:821,1
    - Dst: std::shared_ptr::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:823,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:824,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:824,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:824,1
    - Dst: std::make_shared<ClientState>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:834,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:834,1
    - Dst: dnsdist::configuration::yaml::handleAdditionalAddressesForFrontend
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:846,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:852,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:852,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:852,1
    - Dst: std::make_shared<DNSCryptContext>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:854,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:854,1
    - Dst: dnsdist::configuration::yaml::handleTLSConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:859,1
    - Dst: auto::getTLSFrontend
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:863,1
    - Dst: d_frontends::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:867,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:867,1
    - Dst: std::make_shared<ClientState>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:870,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:870,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:870,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:870,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:872,1
    - Dst: std::shared_ptr::at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:876,1
    - Dst: XskWorker::create
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:877,1
    - Dst: auto::addWorker
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:878,1
    - Dst: auto::addWorkerRoute
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:879,1
    - Dst: XskWorker::create
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:880,1
    - Dst: auto::addWorker
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:881,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:882,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:882,1
    - Dst: auto::getXDPMode
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:882,1
    - Dst: ComboAddress::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:882,1
    - Dst: logger::info
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:883,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:883,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:883,1
    - Dst: auto::getXDPMode
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:883,1
    - Dst: d_frontends::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:886,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:886,1
    CyclomaticComplexity: 27
    EdgeCount: 27
    ICount: 59
    argCount: 2
    argNames:
    - ' context'
    - ' binds'
    argTypes:
    - Context
    - ::rust::Vec<dnsdist::rust::settings::BindConfiguration>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 891
      start: 803
    functionDepth: 2
    functionLinenumber: 803
    functionLinenumberEnd: 891
    functionName: dnsdist::configuration::yaml::loadBinds
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc
    functionUses: 0
    functionsReached:
    - auto::getXDPMode
    - std::shared_ptr::at
    - dnsdist::configuration::yaml::handleTLSConfiguration
    - updateImmutableConfiguration
    - std::string
    - std::vector::push_back
    - Logging::Loggable
    - dnsdist::configuration::yaml::handleAdditionalAddressesForFrontend
    - boost::to_lower_copy
    - dnsdist::configuration::yaml::getCPUPiningFromStr
    - dnsdist::configuration::yaml::getRegisteredTypeByName
    - auto::addWorkerRoute
    - std::runtime_error
    - std::make_shared<ClientState>
    - XskWorker::create
    - VERBOSESLOG
    - logger::info
    - std::shared_ptr::size
    - auto::addWorker
    - ComboAddress
    - ComboAddress::toStringWithPort
    - std::move
    - auto::getTLSFrontend
    - xsk::empty
    - d_frontends::emplace_back
    - infolog
    - std::make_shared<DNSCryptContext>
    linkageType: ''
    returnType: void
    signature: void loadBinds(const Context& context, const ::rust::Vec<dnsdist::rust::settings::BindConfiguration>&
      binds)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::configuration::updateRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:895,1
    - Dst: d_webServerAddresses::emplace
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:898,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:898,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:898,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:901,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:901,1
    - Dst: password::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:904,1
    - Dst: std::make_shared<CredentialsHolder>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:905,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:905,1
    - Dst: auto::wasHashed
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:906,1
    - Dst: auto::isHashingAvailable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:906,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:907,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:907,1
    - Dst: logger::info
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:908,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:910,1
    - Dst: api_key::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:912,1
    - Dst: std::make_shared<CredentialsHolder>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:913,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:913,1
    - Dst: auto::wasHashed
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:914,1
    - Dst: auto::isHashingAvailable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:914,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:915,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:915,1
    - Dst: logger::info
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:916,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:918,1
    - Dst: acl::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:920,1
    - Dst: d_webServerACL::clear
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:921,1
    - Dst: d_webServerACL::toMasks
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:923,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:923,1
    - Dst: custom_headers::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:926,1
    - Dst: std::unordered_map<std::string, std::string>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:928,1
    - Dst: std::pair
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:930,1
    - Dst: boost::to_lower_copy
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:930,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:930,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:930,1
    - Dst: d_webCustomHeaders::insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:931,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:931,1
    - Dst: dnsdist::webserver::setMaxConcurrentConnections
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:940,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:941,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 40
    argCount: 2
    argNames:
    - ' context'
    - ' webConfig'
    argTypes:
    - Context
    - dnsdist::rust::settings::WebserverConfiguration
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 944
      start: 893
    functionDepth: 3
    functionLinenumber: 893
    functionLinenumberEnd: 944
    functionName: dnsdist::configuration::yaml::loadWebServer
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc
    functionUses: 0
    functionsReached:
    - std::unordered_map<std::string, std::string>
    - std::make_shared<CredentialsHolder>
    - dnsdist::configuration::updateRuntimeConfiguration
    - d_webServerACL::clear
    - std::pair
    - std::string
    - acl::empty
    - SLOG
    - d_webServerACL::toMasks
    - d_webServerAddresses::emplace
    - boost::to_lower_copy
    - dnsdist::webserver::setMaxConcurrentConnections
    - std::runtime_error
    - api_key::empty
    - logger::info
    - auto::isHashingAvailable
    - ComboAddress
    - std::move
    - custom_headers::empty
    - auto::wasHashed
    - infolog
    - d_webCustomHeaders::insert
    - password::empty
    linkageType: ''
    returnType: void
    signature: void loadWebServer(const Context& context, const dnsdist::rust::settings::WebserverConfiguration&
      webConfig)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<ServerPolicy>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:951,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:951,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:951,1
    - Dst: dnsdist::configuration::yaml::registerType
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:952,1
    - Dst: dnsdist::configuration::yaml::getLuaFunctionFromConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:957,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:958,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:958,1
    - Dst: std::make_shared<ServerPolicy>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:960,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:960,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:960,1
    - Dst: dnsdist::configuration::yaml::registerType
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:961,1
    - Dst: dnsdist::configuration::yaml::getLuaFunctionFromConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:966,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:967,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:967,1
    - Dst: std::make_shared<ServerPolicy>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:969,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:969,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:969,1
    - Dst: dnsdist::configuration::yaml::registerType
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:970,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 17
    argCount: 1
    argNames:
    - ' customPolicies'
    argTypes:
    - ::rust::Vec<dnsdist::rust::settings::CustomLoadBalancingPolicyConfiguration>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 973
      start: 946
    functionDepth: 2
    functionLinenumber: 946
    functionLinenumberEnd: 973
    functionName: dnsdist::configuration::yaml::loadCustomPolicies
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc
    functionUses: 0
    functionsReached:
    - std::move
    - std::runtime_error
    - dnsdist::configuration::yaml::getLuaFunctionFromConfiguration
    - std::make_shared<ServerPolicy>
    - std::string
    - dnsdist::configuration::yaml::registerType
    linkageType: ''
    returnType: void
    signature: void loadCustomPolicies(const ::rust::Vec<dnsdist::rust::settings::CustomLoadBalancingPolicyConfiguration>&
      customPolicies)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: libssl_load_engine
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:979,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:979,1
    - Dst: default_string::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:979,1
    - Dst: std::optional<std::string>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:979,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:981,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:981,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:981,1
    - Dst: logger::error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:982,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:982,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:985,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:985,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:985,1
    - Dst: logger::info
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:986,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:986,1
    - Dst: libssl_load_provider
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:992,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:992,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:994,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:994,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:994,1
    - Dst: logger::error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:995,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:995,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:998,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:998,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:998,1
    - Dst: logger::info
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:999,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:999,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 11
    argCount: 2
    argNames:
    - ' context'
    - ' tlsSettings'
    argTypes:
    - Context
    - dnsdist::rust::settings::TlsTuningConfiguration
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1002
      start: 975
    functionDepth: 0
    functionLinenumber: 975
    functionLinenumberEnd: 1002
    functionName: dnsdist::configuration::yaml::handleOpenSSLSettings
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc
    functionUses: 0
    functionsReached:
    - std::optional<std::string>
    - SLOG
    - Logging::Loggable
    - warnlog
    - libssl_load_engine
    - logger::info
    - logger::error
    - std::string
    - libssl_load_provider
    - default_string::empty
    linkageType: ''
    returnType: void
    signature: void handleOpenSSLSettings(const Context& context, const dnsdist::rust::settings::TlsTuningConfiguration&
      tlsSettings)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: verbose_log_destination::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1006,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1007,1
    - Dst: std::ofstream
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1009,1
    - Dst: auto::c_str
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1009,1
    - Dst: dnsdist::logging::LoggingConfiguration::setVerboseStream
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1010,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1010,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1013,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1013,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1013,1
    - Dst: logger::error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1014,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1014,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1014,1
    - Dst: syslog_facility::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1018,1
    - Dst: logFacilityFromString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1019,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1019,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1021,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1021,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1021,1
    - Dst: logger::info
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1022,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1022,1
    - Dst: setSyslogFacility
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1025,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1030,1
    - Dst: auto::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1031,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1039,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1039,1
    - Dst: logger::info
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1040,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1040,1
    - Dst: dnsdist::configuration::updateImmutableConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1044,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1045,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 33
    argCount: 2
    argNames:
    - ' context'
    - ' settings'
    argTypes:
    - Context
    - dnsdist::rust::settings::LoggingConfiguration
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1052
      start: 1004
    functionDepth: 2
    functionLinenumber: 1004
    functionLinenumberEnd: 1052
    functionName: dnsdist::configuration::yaml::handleLoggingConfiguration
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc
    functionUses: 0
    functionsReached:
    - errlog
    - std::move
    - SLOG
    - syslog_facility::empty
    - auto::c_str
    - Logging::Loggable
    - what
    - verbose_log_destination::empty
    - setSyslogFacility
    - warnlog
    - dnsdist::configuration::updateImmutableConfiguration
    - logger::info
    - std::ofstream
    - logger::error
    - logFacilityFromString
    - std::string
    - dnsdist::logging::LoggingConfiguration::setVerboseStream
    - auto::empty
    linkageType: ''
    returnType: void
    signature: void handleLoggingConfiguration(const Context& context, const dnsdist::rust::settings::LoggingConfiguration&
      settings)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: listen_address::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1056,1
    - Dst: dnsdist::configuration::updateRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1057,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1058,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1058,1
    - Dst: d_consoleACL::clear
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1060,1
    - Dst: d_consoleACL::addMask
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1062,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1062,1
    - Dst: B64Decode
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1064,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1064,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - ' consoleConf'
    argTypes:
    - dnsdist::rust::settings::ConsoleConfiguration
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1067
      start: 1054
    functionDepth: 3
    functionLinenumber: 1054
    functionLinenumberEnd: 1067
    functionName: dnsdist::configuration::yaml::handleConsoleConfiguration
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc
    functionUses: 0
    functionsReached:
    - dnsdist::configuration::updateRuntimeConfiguration
    - listen_address::empty
    - B64Decode
    - d_consoleACL::clear
    - std::string
    - d_consoleACL::addMask
    - ComboAddress
    linkageType: ''
    returnType: void
    signature: void handleConsoleConfiguration(const dnsdist::rust::settings::ConsoleConfiguration&
      consoleConf)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: options_to_skip::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1087,1
    - Dst: DNSDistPacketCache::CacheSettings::d_optionsToSkip::clear
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1088,1
    - Dst: DNSDistPacketCache::CacheSettings::d_optionsToSkip::insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1089,1
    - Dst: DNSDistPacketCache::CacheSettings::d_optionsToSkip::insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1091,1
    - Dst: pdns::checked_stoi<uint16_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1091,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1091,1
    - Dst: DNSDistPacketCache::CacheSettings::d_optionsToSkip::erase
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1095,1
    - Dst: std::unordered_set::insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1104,1
    - Dst: std::unordered_set::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1106,1
    - Dst: DNSDistPacketCache::CacheSettings::d_payloadRanks::assign
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1107,1
    - Dst: std::unordered_set::begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1107,1
    - Dst: std::unordered_set::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1107,1
    - Dst: std::sort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1108,1
    - Dst: DNSDistPacketCache::CacheSettings::d_payloadRanks::begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1108,1
    - Dst: DNSDistPacketCache::CacheSettings::d_payloadRanks::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1108,1
    - Dst: std::make_shared<DNSDistPacketCache>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1110,1
    - Dst: dnsdist::configuration::yaml::registerType
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1112,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 24
    argCount: 1
    argNames:
    - ' caches'
    argTypes:
    - ::rust::Vec<dnsdist::rust::settings::PacketCacheConfiguration>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1114
      start: 1069
    functionDepth: 1
    functionLinenumber: 1069
    functionLinenumberEnd: 1114
    functionName: dnsdist::configuration::yaml::handlePacketCacheConfiguration
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc
    functionUses: 0
    functionsReached:
    - DNSDistPacketCache::CacheSettings::d_optionsToSkip::clear
    - std::unordered_set::insert
    - std::sort
    - options_to_skip::empty
    - pdns::checked_stoi<uint16_t>
    - DNSDistPacketCache::CacheSettings::d_payloadRanks::end
    - std::make_shared<DNSDistPacketCache>
    - DNSDistPacketCache::CacheSettings::d_optionsToSkip::insert
    - dnsdist::configuration::yaml::registerType
    - DNSDistPacketCache::CacheSettings::d_payloadRanks::assign
    - std::unordered_set::begin
    - std::string
    - std::unordered_set::empty
    - DNSDistPacketCache::CacheSettings::d_optionsToSkip::erase
    - std::unordered_set::end
    - DNSDistPacketCache::CacheSettings::d_payloadRanks::begin
    linkageType: ''
    returnType: void
    signature: void handlePacketCacheConfiguration(const ::rust::Vec<dnsdist::rust::settings::PacketCacheConfiguration>&
      caches)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1130,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1131,1
    - Dst: convertParamsToConfig
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1134,1
    - Dst: convertParamsToConfig
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1135,1
    - Dst: convertParamsToConfig
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1136,1
    - Dst: convertParamsToConfig
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1137,1
    - Dst: convertParamsToConfig
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1138,1
    - Dst: std::make_shared<BPFFilter>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1139,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1140,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 2
    argNames:
    - ' ebpf'
    - configCheck
    argTypes:
    - dnsdist::rust::settings::EbpfConfiguration
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1143
      start: 1116
    functionDepth: 0
    functionLinenumber: 1116
    functionLinenumberEnd: 1143
    functionName: dnsdist::configuration::yaml::handleEBPFConfiguration
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc
    functionUses: 0
    functionsReached:
    - std::string
    - std::move
    - std::make_shared<BPFFilter>
    - convertParamsToConfig
    linkageType: ''
    returnType: void
    signature: void handleEBPFConfiguration([[maybe_unused]] const dnsdist::rust::settings::EbpfConfiguration&
      ebpf, [[maybe_unused]] bool configCheck)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1148,1
    - Dst: dnsdist::configuration::updateRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1149,1
    - Dst: dnsdist::Carbon::newEndpoint
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1151,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1151,1
    - Dst: name::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1152,1
    - Dst: std::optional<std::string>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1152,1
    - Dst: name_space::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1154,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1154,1
    - Dst: instance::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1155,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1155,1
    - Dst: d_carbonEndpoints::push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1156,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1156,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - ' carbonConfigs'
    argTypes:
    - ::rust::Vec<dnsdist::rust::settings::CarbonConfiguration>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1161
      start: 1145
    functionDepth: 3
    functionLinenumber: 1145
    functionLinenumberEnd: 1161
    functionName: dnsdist::configuration::yaml::handleCarbonConfiguration
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc
    functionUses: 0
    functionsReached:
    - name_space::empty
    - std::optional<std::string>
    - std::move
    - dnsdist::Carbon::newEndpoint
    - dnsdist::configuration::updateRuntimeConfiguration
    - instance::empty
    - name::empty
    - empty
    - std::string
    - d_carbonEndpoints::push_back
    linkageType: ''
    returnType: void
    signature: void handleCarbonConfiguration([[maybe_unused]] const ::rust::Vec<dnsdist::rust::settings::CarbonConfiguration>&
      carbonConfigs)
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: store
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1170,1
    - Dst: store
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1171,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1172,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1172,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1172,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1172,1
    - Dst: dnsdist::configuration::yaml::loadContentFromConfigurationFile
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1177,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1180,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1180,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1180,1
    - Dst: auto::error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1181,1
    - Dst: dnsdist::lbpolicies::getBuiltInPolicies
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1186,1
    - Dst: dnsdist::configuration::yaml::registerType
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1187,1
    - Dst: Opcode::from_lowercase_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1187,1
    - Dst: dnsdist::rust::settings::from_yaml_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1191,1
    - Dst: dnsdist::configuration::updateImmutableConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1193,1
    - Dst: convertImmutableFlatSettingsFromRust
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1194,1
    - Dst: dnsdist::configuration::updateRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1197,1
    - Dst: convertRuntimeFlatSettingsFromRust
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1198,1
    - Dst: dnsdist::configuration::yaml::handleLoggingConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1201,1
    - Dst: dnsdist::configuration::yaml::handleConsoleConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1203,1
    - Dst: auto::acl::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1209,1
    - Dst: dnsdist::configuration::updateRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1210,1
    - Dst: d_ACL::clear
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1211,1
    - Dst: d_ACL::addMask
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1213,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1213,1
    - Dst: dnsdist::configuration::yaml::handleOpenSSLSettings
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1218,1
    - Dst: dnsdist::configuration::yaml::handleEBPFConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1220,1
    - Dst: std::make_shared<XSKMap>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1224,1
    - Dst: std::make_shared<XskSocket>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1226,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1226,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1226,1
    - Dst: push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1227,1
    - Dst: auto::push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1228,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1228,1
    - Dst: dnsdist::configuration::yaml::registerType
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1230,1
    - Dst: dnsdist::configuration::yaml::loadBinds
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1234,1
    - Dst: dnsdist::configuration::yaml::createBackendFromConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1237,1
    - Dst: auto::d_config::pools::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1239,1
    - Dst: addServerToPool
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1241,1
    - Dst: addServerToPool
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1245,1
    - Dst: dnsdist::backend::registerNewBackend
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1248,1
    - Dst: auto::proxy_protocol::acl::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1251,1
    - Dst: dnsdist::configuration::updateRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1252,1
    - Dst: d_proxyProtocolACL::clear
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1253,1
    - Dst: d_proxyProtocolACL::addMask
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1255,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1255,1
    - Dst: dnsdist::configuration::yaml::handleCarbonConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1260,1
    - Dst: auto::webserver::listen_addresses::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1262,1
    - Dst: dnsdist::configuration::yaml::loadWebServer
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1264,1
    - Dst: dnsdist::configuration::updateRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1268,1
    - Dst: dnsdist::configuration::yaml::getLuaFunctionFromConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1270,1
    - Dst: dnsdist::configuration::yaml::loadDynamicBlockConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1274,1
    - Dst: auto::tuning::tcp::fast_open_key::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1276,1
    - Dst: sscanf
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1278,1
    - Dst: auto::tuning::tcp::fast_open_key::c_str
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1278,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1278,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1278,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1278,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1278,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1279,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1279,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1280,1
    - Dst: dnsdist::configuration::updateImmutableConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1282,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1283,1
    - Dst: auto::general::capabilities_to_retain::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1287,1
    - Dst: dnsdist::configuration::updateImmutableConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1288,1
    - Dst: d_capabilitiesToRetain::emplace
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1290,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1290,1
    - Dst: auto::general::server_id::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1295,1
    - Dst: dnsdist::configuration::updateRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1296,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1297,1
    - Dst: dnsdist::configuration::yaml::handlePacketCacheConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1301,1
    - Dst: dnsdist::configuration::yaml::loadCustomPolicies
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1303,1
    - Dst: auto::load_balancing_policies::default_policy::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1305,1
    - Dst: dnsdist::configuration::yaml::getRegisteredTypeByName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1306,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1308,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1308,1
    - Dst: dnsdist::configuration::updateRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1310,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1311,1
    - Dst: dnsdist::configuration::updateRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1316,1
    - Dst: d_pools::emplace
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1317,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1317,1
    - Dst: ServerPool
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1317,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1319,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1319,1
    - Dst: Context::logger::info
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1320,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1320,1
    - Dst: packet_cache::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1323,1
    - Dst: dnsdist::configuration::yaml::getRegisteredTypeByName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1324,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1326,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1326,1
    - Dst: policy::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1329,1
    - Dst: dnsdist::configuration::yaml::getRegisteredTypeByName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1330,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1332,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1332,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1334,1
    - Dst: second::setECS
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1336,1
    - Dst: second::setZeroScope
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1337,1
    - Dst: dnsdist::configuration::yaml::loadRulesConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1341,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1346,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1346,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1346,1
    - Dst: auto::error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1347,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1347,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1347,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1350,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1350,1
    - Dst: auto::error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1351,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1351,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1354,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1354,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1354,1
    - Dst: auto::error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1355,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1355,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1355,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1360,1
    CyclomaticComplexity: 34
    EdgeCount: 34
    ICount: 124
    argCount: 3
    argNames:
    - ' fileName'
    - isClient
    - configCheck
    argTypes:
    - std::string
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1362
      start: 1165
    functionDepth: 4
    functionLinenumber: 1165
    functionLinenumberEnd: 1362
    functionName: dnsdist::configuration::yaml::loadConfigurationFromFile
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc
    functionUses: 1
    functionsReached:
    - errlog
    - auto::general::capabilities_to_retain::empty
    - d_ACL::clear
    - second::setECS
    - ServerPool
    - stringerror
    - dnsdist::lbpolicies::getBuiltInPolicies
    - dnsdist::configuration::updateRuntimeConfiguration
    - std::make_shared<XskSocket>
    - dnsdist::configuration::yaml::loadBinds
    - auto::tuning::tcp::fast_open_key::c_str
    - second::setZeroScope
    - dnsdist::configuration::yaml::createBackendFromConfiguration
    - auto::load_balancing_policies::default_policy::empty
    - d_pools::emplace
    - std::vector::at
    - auto::proxy_protocol::acl::empty
    - packet_cache::empty
    - dnsdist::configuration::yaml::loadRulesConfiguration
    - auto::push_back
    - std::string
    - d_ACL::addMask
    - dnsdist::rust::settings::from_yaml_string
    - auto::general::server_id::empty
    - dnsdist::configuration::yaml::loadCustomPolicies
    - dnsdist::configuration::yaml::handleConsoleConfiguration
    - SLOG
    - static_cast<size_t>
    - dnsdist::configuration::yaml::loadContentFromConfigurationFile
    - std::vector::size
    - Logging::Loggable
    - auto::error
    - store
    - dnsdist::logging::getTopLogger
    - dnsdist::configuration::yaml::handleOpenSSLSettings
    - dnsdist::configuration::yaml::getRegisteredTypeByName
    - dnsdist::backend::registerNewBackend
    - auto::webserver::listen_addresses::empty
    - convertImmutableFlatSettingsFromRust
    - sscanf
    - std::runtime_error
    - push_back
    - addServerToPool
    - convertRuntimeFlatSettingsFromRust
    - dnsdist::configuration::updateImmutableConfiguration
    - dnsdist::configuration::yaml::handlePacketCacheConfiguration
    - VERBOSESLOG
    - d_proxyProtocolACL::clear
    - d_proxyProtocolACL::addMask
    - Context::logger::info
    - d_capabilitiesToRetain::emplace
    - dnsdist::configuration::yaml::loadWebServer
    - dnsdist::configuration::yaml::handleLoggingConfiguration
    - auto::tuning::tcp::fast_open_key::empty
    - dnsdist::configuration::yaml::handleCarbonConfiguration
    - dnsdist::configuration::yaml::registerType
    - dnsdist::configuration::yaml::handleEBPFConfiguration
    - Opcode::from_lowercase_string
    - std::move
    - auto::d_config::pools::empty
    - what
    - policy::empty
    - std::make_shared<XSKMap>
    - infolog
    - dnsdist::configuration::yaml::getLuaFunctionFromConfiguration
    - auto::acl::empty
    - dnsdist::configuration::yaml::loadDynamicBlockConfiguration
    linkageType: ''
    returnType: bool
    signature: bool loadConfigurationFromFile(const std::string& fileName, [[maybe_unused]]
      bool isClient, [[maybe_unused]] bool configCheck)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1369,1
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1370,1
    - Dst: auto::find
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1371,1
    - Dst: auto::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1372,1
    - Dst: std::get_if<std::shared_ptr<DNSDistPacketCache>>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1375,1
    - Dst: ReturnValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1376,1
    - Dst: std::get_if<std::shared_ptr<dnsdist::rust::settings::DNSSelector>>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1378,1
    - Dst: ReturnValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1379,1
    - Dst: std::get_if<std::shared_ptr<dnsdist::rust::settings::DNSActionWrapper>>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1381,1
    - Dst: ReturnValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1382,1
    - Dst: std::get_if<std::shared_ptr<dnsdist::rust::settings::DNSResponseActionWrapper>>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1384,1
    - Dst: ReturnValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1385,1
    - Dst: std::get_if<std::shared_ptr<NetmaskGroup>>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1387,1
    - Dst: ReturnValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1388,1
    - Dst: std::get_if<std::shared_ptr<KeyValueStore>>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1390,1
    - Dst: ReturnValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1391,1
    - Dst: std::get_if<std::shared_ptr<KeyValueLookupKey>>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1393,1
    - Dst: ReturnValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1394,1
    - Dst: std::get_if<std::shared_ptr<RemoteLoggerInterface>>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1396,1
    - Dst: ReturnValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1397,1
    - Dst: std::get_if<std::shared_ptr<ServerPolicy>>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1399,1
    - Dst: ReturnValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1400,1
    - Dst: std::get_if<std::shared_ptr<TimedIPSetRule>>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1402,1
    - Dst: ReturnValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1403,1
    - Dst: std::get_if<std::shared_ptr<XSKMap>>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1405,1
    - Dst: ReturnValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1406,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 40
    argCount: 1
    argNames:
    - ' luaCtx'
    argTypes:
    - LuaContext
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1412
      start: 1364
    functionDepth: 0
    functionLinenumber: 1364
    functionLinenumberEnd: 1412
    functionName: dnsdist::configuration::yaml::addLuaBindingsForYAMLObjects
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc
    functionUses: 2
    functionsReached:
    - std::get_if<std::shared_ptr<KeyValueStore>>
    - std::get_if<std::shared_ptr<TimedIPSetRule>>
    - std::get_if<std::shared_ptr<RemoteLoggerInterface>>
    - std::get_if<std::shared_ptr<ServerPolicy>>
    - ReturnValue
    - std::get_if<std::shared_ptr<DNSDistPacketCache>>
    - lock
    - std::get_if<std::shared_ptr<dnsdist::rust::settings::DNSActionWrapper>>
    - std::get_if<std::shared_ptr<dnsdist::rust::settings::DNSResponseActionWrapper>>
    - std::get_if<std::shared_ptr<KeyValueLookupKey>>
    - std::get_if<std::shared_ptr<XSKMap>>
    - std::get_if<std::shared_ptr<dnsdist::rust::settings::DNSSelector>>
    - auto::end
    - writeFunction
    - auto::find
    - std::get_if<std::shared_ptr<NetmaskGroup>>
    linkageType: ''
    returnType: void
    signature: void addLuaBindingsForYAMLObjects([[maybe_unused]] LuaContext& luaCtx)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: std::string::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:80,1
    - Dst: getUniqueID
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:81,1
    - Dst: libssl_tls_version_to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:82,1
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:85,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:87,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 2
    argNames:
    - ' entry'
    - ' rustName'
    argTypes:
    - std::shared_ptr<T>
    - ::rust::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 77
    functionDepth: 0
    functionLinenumber: 77
    functionLinenumberEnd: 89
    functionName: dnsdist::configuration::yaml::registerType
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc
    functionUses: 3
    functionsReached:
    - std::runtime_error
    - getUniqueID
    - lock
    - libssl_tls_version_to_string
    - std::string::empty
    linkageType: ''
    returnType: void
    signature: void registerType(const std::shared_ptr<T>& entry, const ::rust::string&
      rustName)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:94,1
    - Dst: auto::find
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:95,1
    - Dst: auto::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:96,1
    - Dst: std::get_if<std::shared_ptr<T>>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:99,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - ' name'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 92
    functionDepth: 0
    functionLinenumber: 92
    functionLinenumberEnd: 103
    functionName: dnsdist::configuration::yaml::getRegisteredTypeByName
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc
    functionUses: 4
    functionsReached:
    - auto::end
    - std::get_if<std::shared_ptr<T>>
    - auto::find
    - lock
    linkageType: ''
    returnType: std::shared_ptr<T>
    signature: std::shared_ptr<T> getRegisteredTypeByName(const std::string& name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:108,1
    - Dst: dnsdist::configuration::yaml::getRegisteredTypeByName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:109,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' name'
    argTypes:
    - ::rust::String
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 106
    functionDepth: 1
    functionLinenumber: 106
    functionLinenumberEnd: 110
    functionName: dnsdist::configuration::yaml::getRegisteredTypeByName
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc
    functionUses: 5
    functionsReached:
    - dnsdist::configuration::yaml::getRegisteredTypeByName
    - std::string
    linkageType: ''
    returnType: std::shared_ptr<T>
    signature: std::shared_ptr<T> getRegisteredTypeByName(const ::rust::String& name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::checked_stoi<T>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:116,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:119,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:119,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - ' context'
    - ' parameterName'
    - ' str'
    argTypes:
    - std::string
    - std::string
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 113
    functionDepth: 0
    functionLinenumber: 113
    functionLinenumberEnd: 121
    functionName: dnsdist::configuration::yaml::checkedConversionFromStr
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc
    functionUses: 6
    functionsReached:
    - what
    - pdns::checked_stoi<T>
    - std::runtime_error
    linkageType: ''
    returnType: T
    signature: T checkedConversionFromStr(const std::string& context, const std::string&
      parameterName, const std::string& str)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::configuration::yaml::checkedConversionFromStr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:126,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:126,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' context'
    - ' parameterName'
    - ' str'
    argTypes:
    - std::string
    - std::string
    - ::rust::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 127
      start: 124
    functionDepth: 1
    functionLinenumber: 124
    functionLinenumberEnd: 127
    functionName: dnsdist::configuration::yaml::checkedConversionFromStr
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc
    functionUses: 7
    functionsReached:
    - std::string
    - dnsdist::configuration::yaml::checkedConversionFromStr
    linkageType: ''
    returnType: T
    signature: T checkedConversionFromStr(const std::string& context, const std::string&
      parameterName, const ::rust::string& str)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:132,1
    - Dst: auto::readVariable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:133,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:133,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - ' destination'
    - ' functionName'
    argTypes:
    - T
    - ::rust::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 139
      start: 130
    functionDepth: 0
    functionLinenumber: 130
    functionLinenumberEnd: 139
    functionName: dnsdist::configuration::yaml::getOptionalLuaFunction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc
    functionUses: 1
    functionsReached:
    - std::string
    - auto::readVariable
    - lock
    linkageType: ''
    returnType: bool
    signature: bool getOptionalLuaFunction(T& destination, const ::rust::string& functionName)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::string::reserve
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:145,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:145,1
    - Dst: std::string::begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:147,1
    - Dst: std::find
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:148,1
    - Dst: std::string::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:148,1
    - Dst: std::string::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:149,1
    - Dst: std::distance
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:149,1
    - Dst: std::string::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:149,1
    - Dst: std::string::insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:150,1
    - Dst: std::string::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:150,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:152,1
    - Dst: dnsdist::configuration::yaml::checkedConversionFromStr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:153,1
    - Dst: std::string::insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:154,1
    - Dst: std::string::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:154,1
    - Dst: static_cast<char>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:154,1
    - Dst: std::find
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:155,1
    - Dst: std::string::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:155,1
    - Dst: std::string::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:158,1
    - Dst: std::string::insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:159,1
    - Dst: std::string::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:159,1
    - Dst: std::string::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:159,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - ' sourceRust'
    argTypes:
    - ::rust::String
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 163
      start: 141
    functionDepth: 1
    functionLinenumber: 141
    functionLinenumberEnd: 163
    functionName: dnsdist::configuration::yaml::rustStringWithEscapedRawContentToString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc
    functionUses: 0
    functionsReached:
    - std::string::begin
    - std::distance
    - std::string::reserve
    - std::string::end
    - dnsdist::configuration::yaml::checkedConversionFromStr
    - std::find
    - std::string
    - std::string::size
    - static_cast<char>
    - std::string::insert
    linkageType: ''
    returnType: std::string
    signature: std::string rustStringWithEscapedRawContentToString(const ::rust::String&
      sourceRust)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:167,1
    - Dst: boost::to_lower
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:168,1
    - Dst: RCode::from_short
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:169,1
    - Dst: dnsdist::configuration::yaml::checkedConversionFromStr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:171,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - ' context'
    - ' parameterName'
    - ' rcode_rust_string'
    argTypes:
    - std::string
    - std::string
    - ::rust::String
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 174
      start: 165
    functionDepth: 1
    functionLinenumber: 165
    functionLinenumberEnd: 174
    functionName: dnsdist::configuration::yaml::strToRCode
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc
    functionUses: 1
    functionsReached:
    - std::string
    - boost::to_lower
    - RCode::from_short
    - dnsdist::configuration::yaml::checkedConversionFromStr
    linkageType: ''
    returnType: uint8_t
    signature: uint8_t strToRCode(const std::string& context, const std::string& parameterName,
      const ::rust::String& rcode_rust_string)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:178,1
    - Dst: QType::QType
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:179,1
    - Dst: QType::getCode
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:181,1
    - Dst: dnsdist::configuration::yaml::checkedConversionFromStr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:182,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - ' context'
    - ' parameterName'
    - ' qtype_rust_string'
    argTypes:
    - std::string
    - std::string
    - ::rust::String
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 185
      start: 176
    functionDepth: 1
    functionLinenumber: 176
    functionLinenumberEnd: 185
    functionName: dnsdist::configuration::yaml::strToQType
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc
    functionUses: 1
    functionsReached:
    - std::string
    - dnsdist::configuration::yaml::checkedConversionFromStr
    - QType::QType
    - QType::getCode
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t strToQType(const std::string& context, const std::string&
      parameterName, const ::rust::String& qtype_rust_string)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:189,1
    - Dst: boost::to_lower
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:190,1
    - Dst: Opcode::from_lowercase_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:191,1
    - Dst: dnsdist::configuration::yaml::checkedConversionFromStr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:193,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - ' context'
    - ' parameterName'
    - ' opcode_rust_string'
    argTypes:
    - std::string
    - std::string
    - ::rust::String
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 196
      start: 187
    functionDepth: 1
    functionLinenumber: 187
    functionLinenumberEnd: 196
    functionName: dnsdist::configuration::yaml::strToOpcode
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc
    functionUses: 0
    functionsReached:
    - Opcode::from_lowercase_string
    - std::string
    - boost::to_lower
    - dnsdist::configuration::yaml::checkedConversionFromStr
    linkageType: ''
    returnType: uint8_t
    signature: uint8_t strToOpcode(const std::string& context, const std::string&
      parameterName, const ::rust::String& opcode_rust_string)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::ifstream
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:201,1
    - Dst: auto::is_open
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:202,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:205,1
    - Dst: std::istreambuf_iterator<char>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:205,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ' fileName'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 206
      start: 198
    functionDepth: 0
    functionLinenumber: 198
    functionLinenumberEnd: 206
    functionName: dnsdist::configuration::yaml::loadContentFromConfigurationFile
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc
    functionUses: 2
    functionsReached:
    - auto::is_open
    - std::ifstream
    - std::string
    - std::istreambuf_iterator<char>
    linkageType: ''
    returnType: std::optional<std::string>
    signature: std::optional<std::string> loadContentFromConfigurationFile(const std::string&
      fileName)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:211,1
    - Dst: dnsdist::configuration::yaml::getOptionalLuaFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:212,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:216,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:216,1
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:218,1
    - Dst: dnsdist::lua::getFunctionFromLuaCode<FuncType>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:219,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:219,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:224,1
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:226,1
    - Dst: dnsdist::configuration::yaml::loadContentFromConfigurationFile
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:227,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:227,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:229,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:229,1
    - Dst: dnsdist::lua::getFunctionFromLuaCode<FuncType>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:231,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:236,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:236,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 25
    argCount: 5
    argNames:
    - ' destination'
    - ' functionName'
    - ' functionCode'
    - ' functionFile'
    - ' context'
    argTypes:
    - FuncType
    - ::rust::string
    - ::rust::string
    - ::rust::string
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 239
      start: 209
    functionDepth: 1
    functionLinenumber: 209
    functionLinenumberEnd: 239
    functionName: dnsdist::configuration::yaml::getLuaFunctionFromConfiguration
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc
    functionUses: 4
    functionsReached:
    - dnsdist::configuration::yaml::loadContentFromConfigurationFile
    - std::runtime_error
    - dnsdist::configuration::yaml::getOptionalLuaFunction
    - dnsdist::lua::getFunctionFromLuaCode<FuncType>
    - empty
    - std::string
    linkageType: ''
    returnType: bool
    signature: bool getLuaFunctionFromConfiguration(FuncType& destination, const ::rust::string&
      functionName, const ::rust::string& functionCode, const ::rust::string& functionFile,
      const std::string& context)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: stringtok
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:245,1
    - Dst: std::set::insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:247,1
    - Dst: dnsdist::configuration::yaml::checkedConversionFromStr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:247,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - ' context'
    - ' cpuStr'
    argTypes:
    - std::string
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 250
      start: 241
    functionDepth: 1
    functionLinenumber: 241
    functionLinenumberEnd: 250
    functionName: dnsdist::configuration::yaml::getCPUPiningFromStr
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc
    functionUses: 2
    functionsReached:
    - dnsdist::configuration::yaml::checkedConversionFromStr
    - stringtok
    - std::set::insert
    linkageType: ''
    returnType: std::set<int>
    signature: std::set<int> getCPUPiningFromStr(const std::string& context, const
      std::string& cpuStr)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:256,1
    - Dst: key::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:257,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:258,1
    - Dst: password::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:260,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:261,1
    - Dst: TLSConfig::d_certKeyPairs::push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:263,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:263,1
    - Dst: TLSConfig::d_ocspFiles::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:266,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:268,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:269,1
    - Dst: libssl_tls_version_from_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:271,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:271,1
    - Dst: minimum_version::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:273,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:274,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:274,1
    - Dst: logger::info
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:275,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:278,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:279,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 31
    argCount: 2
    argNames:
    - ' context'
    - ' incomingTLSConfig'
    argTypes:
    - Context
    - dnsdist::rust::settings::IncomingTlsConfiguration
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 292
      start: 252
    functionDepth: 0
    functionLinenumber: 252
    functionLinenumberEnd: 292
    functionName: dnsdist::configuration::yaml::getTLSConfigFromRustIncomingTLS
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc
    functionUses: 1
    functionsReached:
    - TLSConfig::d_certKeyPairs::push_back
    - std::move
    - SLOG
    - TLSConfig::d_ocspFiles::emplace_back
    - warnlog
    - minimum_version::empty
    - logger::info
    - std::string
    - password::empty
    - key::empty
    - libssl_tls_version_from_string
    linkageType: ''
    returnType: TLSConfig
    signature: TLSConfig getTLSConfigFromRustIncomingTLS([[maybe_unused]] const Context&
      context, const dnsdist::rust::settings::IncomingTlsConfiguration& incomingTLSConfig)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: libssl_init_server_context
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:304,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:307,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:307,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:307,1
    - Dst: logger::error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:308,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:308,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:308,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:308,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 3
    argNames:
    - ' context'
    - ' bind'
    - ' tlsConfig'
    argTypes:
    - Context
    - dnsdist::rust::settings::BindConfiguration
    - TLSConfig
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 314
      start: 294
    functionDepth: 0
    functionLinenumber: 294
    functionLinenumberEnd: 314
    functionName: dnsdist::configuration::yaml::validateTLSConfiguration
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc
    functionUses: 1
    functionsReached:
    - errlog
    - SLOG
    - Logging::Loggable
    - what
    - libssl_init_server_context
    - logger::error
    - std::string
    linkageType: ''
    returnType: bool
    signature: bool validateTLSConfiguration(const Context& context, const dnsdist::rust::settings::BindConfiguration&
      bind, [[maybe_unused]] const TLSConfig& tlsConfig)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::configuration::yaml::getTLSConfigFromRustIncomingTLS
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:318,1
    - Dst: dnsdist::configuration::yaml::validateTLSConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:319,1
    - Dst: boost::to_lower_copy
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:323,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:323,1
    - Dst: std::make_shared<TLSFrontend>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:325,1
    - Dst: auto::setParent
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:326,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:327,1
    - Dst: boost::algorithm::to_lower
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:328,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:330,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:331,1
    - Dst: std::make_shared<DOQFrontend>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:335,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:336,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:336,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:337,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:340,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:341,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:343,1
    - Dst: std::make_shared<DOH3Frontend>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:348,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:349,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:349,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:350,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:352,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:353,1
    - Dst: doh::responses_map::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:356,1
    - Dst: std::make_shared<std::vector<std::shared_ptr<DOHResponseMapEntry>>>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:357,1
    - Dst: headers::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:360,1
    - Dst: std::unordered_map<std::string, std::string>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:361,1
    - Dst: std::optional::emplace
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:363,1
    - Dst: boost::to_lower_copy
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:363,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:363,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:363,1
    - Dst: std::make_shared<DOHResponseMapEntry>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:366,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:366,1
    - Dst: PacketBuffer
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:366,1
    - Dst: content::begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:366,1
    - Dst: content::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:366,1
    - Dst: auto::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:367,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:367,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:369,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:372,1
    - Dst: std::make_shared<DOHFrontend>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:377,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:379,1
    - Dst: boost::algorithm::to_lower
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:380,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:381,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:384,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:384,1
    - Dst: logger::error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:385,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:385,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:390,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:390,1
    - Dst: logger::info
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:391,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:391,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:391,1
    - Dst: auto::d_urls::emplace
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:396,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:399,1
    - Dst: std::pair
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:407,1
    - Dst: boost::to_lower_copy
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:407,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:407,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:407,1
    - Dst: auto::d_customResponseHeaders::insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:408,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:408,1
    - Dst: doh::responses_map::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:411,1
    - Dst: std::make_shared<std::vector<std::shared_ptr<DOHResponseMapEntry>>>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:412,1
    - Dst: headers::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:415,1
    - Dst: std::unordered_map<std::string, std::string>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:416,1
    - Dst: std::optional::emplace
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:418,1
    - Dst: boost::to_lower_copy
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:418,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:418,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:418,1
    - Dst: std::make_shared<DOHResponseMapEntry>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:421,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:421,1
    - Dst: PacketBuffer
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:421,1
    - Dst: content::begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:421,1
    - Dst: content::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:421,1
    - Dst: auto::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:422,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:422,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:424,1
    - Dst: auto::d_certKeyPairs::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:427,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:428,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:428,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:429,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:429,1
    - Dst: logger::info
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:430,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:430,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:433,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:433,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:434,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:434,1
    - Dst: d_addr::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:434,1
    - Dst: logger::info
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:435,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:435,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:439,1
    - Dst: setParent
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:440,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:441,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:445,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:445,1
    - Dst: logger::info
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:446,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:446,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:446,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 87
    argCount: 4
    argNames:
    - ' context'
    - ' bind'
    - ' state'
    - ' parent'
    argTypes:
    - Context
    - dnsdist::rust::settings::BindConfiguration
    - ClientState
    - std::shared_ptr<const TLSFrontend>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 451
      start: 316
    functionDepth: 1
    functionLinenumber: 316
    functionLinenumberEnd: 451
    functionName: dnsdist::configuration::yaml::handleTLSConfiguration
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc
    functionUses: 1
    functionsReached:
    - errlog
    - std::unordered_map<std::string, std::string>
    - setParent
    - auto::d_certKeyPairs::empty
    - std::optional::emplace
    - std::pair
    - std::string
    - auto::d_urls::emplace
    - SLOG
    - Logging::Loggable
    - doh::responses_map::empty
    - auto::d_customResponseHeaders::insert
    - std::make_shared<TLSFrontend>
    - std::make_shared<DOHResponseMapEntry>
    - boost::to_lower_copy
    - content::begin
    - d_addr::toStringWithPort
    - dnsdist::configuration::yaml::getTLSConfigFromRustIncomingTLS
    - content::end
    - auto::emplace_back
    - std::make_shared<DOQFrontend>
    - std::make_shared<DOHFrontend>
    - dnsdist::configuration::yaml::validateTLSConfiguration
    - logger::info
    - ComboAddress
    - headers::empty
    - std::move
    - std::make_shared<std::vector<std::shared_ptr<DOHResponseMapEntry>>>
    - std::make_shared<DOH3Frontend>
    - boost::algorithm::to_lower
    - infolog
    - auto::setParent
    - PacketBuffer
    - logger::error
    linkageType: ''
    returnType: bool
    signature: bool handleTLSConfiguration(const Context& context, const dnsdist::rust::settings::BindConfiguration&
      bind, ClientState& state, const std::shared_ptr<const TLSFrontend>& parent)
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:461,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:462,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:462,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:462,1
    - Dst: logger::info
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:463,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:463,1
    - Dst: static_cast<decltype(backendConfig.d_weight)>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:466,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:472,1
    - Dst: id::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:473,1
    - Dst: boost::uuids::string_generator
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:474,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:474,1
    - Dst: dnsdist::configuration::yaml::getCPUPiningFromStr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:482,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:482,1
    - Dst: qname::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:493,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:494,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:494,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:496,1
    - Dst: qclass::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:497,1
    - Dst: QClass
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:498,1
    - Dst: boost::to_upper_copy
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:498,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:498,1
    - Dst: dnsdist::configuration::yaml::getLuaFunctionFromConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:508,1
    - Dst: dnsdist::configuration::yaml::getLuaFunctionFromConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:509,1
    - Dst: DownstreamState::parseAvailabilityConfigFromStr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:511,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:511,1
    - Dst: lazy::mode::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:525,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:526,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:526,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:526,1
    - Dst: logger::info
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:527,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:527,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:527,1
    - Dst: boost::to_lower_copy
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:534,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:534,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:538,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:538,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:543,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:543,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:547,1
    - Dst: boost::algorithm::to_lower
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:548,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:549,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:550,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:551,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:552,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:557,1
    - Dst: subject_address::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:558,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:560,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:561,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:565,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:565,1
    - Dst: logger::info
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:566,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:566,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:566,1
    - Dst: DownstreamState::Config::d_tlsSubjectName::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:569,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:570,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:570,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:581,1
    - Dst: DownstreamState::Config::pools::emplace
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:586,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:589,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:589,1
    - Dst: source::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:590,1
    - Dst: DownstreamState::parseSourceParameter
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:591,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:591,1
    - Dst: getTLSContext
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:595,1
    - Dst: std::make_shared<DownstreamState>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:600,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:600,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:600,1
    - Dst: xsk::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:603,1
    - Dst: dnsdist::configuration::yaml::getRegisteredTypeByName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:604,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:606,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:606,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:606,1
    - Dst: auto::registerXsk
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:609,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:610,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:610,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:610,1
    - Dst: auto::at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:610,1
    - Dst: logger::info
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:611,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:611,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:611,1
    - Dst: auto::at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:611,1
    - Dst: auto::getProtocol
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:617,1
    - Dst: auto::getProtocol
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:617,1
    - Dst: dnsdist::ServiceDiscovery::addUpgradeableServer
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:618,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:618,1
    CyclomaticComplexity: 32
    EdgeCount: 32
    ICount: 126
    argCount: 3
    argNames:
    - ' context'
    - ' config'
    - configCheck
    argTypes:
    - Context
    - dnsdist::rust::settings::BackendConfiguration
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 622
      start: 453
    functionDepth: 2
    functionLinenumber: 453
    functionLinenumberEnd: 622
    functionName: dnsdist::configuration::yaml::createBackendFromConfiguration
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc
    functionUses: 1
    functionsReached:
    - errlog
    - QClass
    - DownstreamState::parseSourceParameter
    - dnsdist::ServiceDiscovery::addUpgradeableServer
    - DownstreamState::Config::pools::emplace
    - std::string
    - id::empty
    - SLOG
    - DownstreamState::parseAvailabilityConfigFromStr
    - static_cast<decltype(backendConfig.d_weight)>
    - Logging::Loggable
    - subject_address::empty
    - warnlog
    - getTLSContext
    - qname::empty
    - boost::to_lower_copy
    - dnsdist::configuration::yaml::getCPUPiningFromStr
    - DownstreamState::Config::d_tlsSubjectName::empty
    - boost::uuids::string_generator
    - std::make_shared<DownstreamState>
    - dnsdist::configuration::yaml::getRegisteredTypeByName
    - pdns::max
    - std::runtime_error
    - DNSName
    - logger::info
    - auto::getProtocol
    - qclass::empty
    - auto::registerXsk
    - ComboAddress
    - std::move
    - source::empty
    - boost::algorithm::to_lower
    - xsk::empty
    - infolog
    - boost::to_upper_copy
    - dnsdist::configuration::yaml::getLuaFunctionFromConfiguration
    - lazy::mode::empty
    - auto::at
    - ComboAddress::toString
    linkageType: ''
    returnType: std::shared_ptr<DownstreamState>
    signature: std::shared_ptr<DownstreamState> createBackendFromConfiguration(const
      Context& context, const dnsdist::rust::settings::BackendConfiguration& config,
      bool configCheck)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::configuration::updateRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:626,1
    - Dst: uuid::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:628,1
    - Dst: getUniqueID
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:628,1
    - Dst: getUniqueID
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:628,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:628,1
    - Dst: dnsdist::rules::add
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:629,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:629,1
    - Dst: uuid::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:633,1
    - Dst: getUniqueID
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:633,1
    - Dst: getUniqueID
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:633,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:633,1
    - Dst: dnsdist::rules::add
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:634,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:634,1
    - Dst: uuid::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:638,1
    - Dst: getUniqueID
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:638,1
    - Dst: getUniqueID
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:638,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:638,1
    - Dst: dnsdist::rules::add
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:639,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:639,1
    - Dst: uuid::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:643,1
    - Dst: getUniqueID
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:643,1
    - Dst: getUniqueID
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:643,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:643,1
    - Dst: dnsdist::rules::add
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:644,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:644,1
    - Dst: uuid::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:648,1
    - Dst: getUniqueID
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:648,1
    - Dst: getUniqueID
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:648,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:648,1
    - Dst: dnsdist::rules::add
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:649,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:649,1
    - Dst: uuid::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:653,1
    - Dst: getUniqueID
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:653,1
    - Dst: getUniqueID
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:653,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:653,1
    - Dst: dnsdist::rules::add
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:654,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:654,1
    - Dst: uuid::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:658,1
    - Dst: getUniqueID
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:658,1
    - Dst: getUniqueID
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:658,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:658,1
    - Dst: dnsdist::rules::add
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:659,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:659,1
    - Dst: uuid::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:663,1
    - Dst: getUniqueID
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:663,1
    - Dst: getUniqueID
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:663,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:663,1
    - Dst: dnsdist::rules::add
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:664,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:664,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 19
    argCount: 1
    argNames:
    - ' globalConfig'
    argTypes:
    - dnsdist::rust::settings::GlobalConfiguration
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 667
      start: 624
    functionDepth: 3
    functionLinenumber: 624
    functionLinenumberEnd: 667
    functionName: dnsdist::configuration::yaml::loadRulesConfiguration
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc
    functionUses: 1
    functionsReached:
    - getUniqueID
    - dnsdist::configuration::updateRuntimeConfiguration
    - uuid::empty
    - std::string
    - dnsdist::rules::add
    linkageType: ''
    returnType: void
    signature: void loadRulesConfiguration(const dnsdist::rust::settings::GlobalConfiguration&
      globalConfig)
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: default_action::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:671,1
    - Dst: dnsdist::configuration::updateRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:672,1
    - Dst: DNSAction::typeFromString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:673,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:673,1
    - Dst: std::make_shared<DynBlockRulesGroup>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:678,1
    - Dst: auto::setMasks
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:679,1
    - Dst: auto::excludeRange
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:681,1
    - Dst: Netmask
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:681,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:681,1
    - Dst: auto::includeRange
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:684,1
    - Dst: Netmask
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:684,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:684,1
    - Dst: auto::excludeDomain
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:687,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:687,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:687,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:691,1
    - Dst: action::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:691,1
    - Dst: DNSAction::typeFromString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:691,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:691,1
    - Dst: tag_name::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:692,1
    - Dst: std::make_shared<DynBlock::TagSettings>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:693,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:694,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:695,1
    - Dst: auto::setQueryRate
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:697,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:697,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:700,1
    - Dst: action::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:700,1
    - Dst: DNSAction::typeFromString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:700,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:700,1
    - Dst: tag_name::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:701,1
    - Dst: std::make_shared<DynBlock::TagSettings>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:702,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:703,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:704,1
    - Dst: auto::setRCodeRate
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:706,1
    - Dst: dnsdist::configuration::yaml::strToRCode
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:706,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:706,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:709,1
    - Dst: action::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:709,1
    - Dst: DNSAction::typeFromString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:709,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:709,1
    - Dst: tag_name::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:710,1
    - Dst: std::make_shared<DynBlock::TagSettings>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:711,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:712,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:713,1
    - Dst: auto::setRCodeRatio
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:715,1
    - Dst: dnsdist::configuration::yaml::strToRCode
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:715,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:715,1
    - Dst: std::unordered_set::insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:720,1
    - Dst: dnsdist::configuration::yaml::strToRCode
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:720,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:722,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:722,1
    - Dst: action::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:722,1
    - Dst: DNSAction::typeFromString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:722,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:722,1
    - Dst: tag_name::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:723,1
    - Dst: std::make_shared<DynBlock::TagSettings>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:724,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:725,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:726,1
    - Dst: auto::setAllowedRCodesRatio
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:728,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:728,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:731,1
    - Dst: action::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:731,1
    - Dst: DNSAction::typeFromString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:731,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:731,1
    - Dst: tag_name::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:732,1
    - Dst: std::make_shared<DynBlock::TagSettings>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:733,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:734,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:735,1
    - Dst: auto::setQTypeRate
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:737,1
    - Dst: dnsdist::configuration::yaml::strToQType
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:737,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:737,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:740,1
    - Dst: action::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:740,1
    - Dst: DNSAction::typeFromString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:740,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:740,1
    - Dst: tag_name::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:741,1
    - Dst: std::make_shared<DynBlock::TagSettings>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:742,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:743,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:744,1
    - Dst: auto::setCacheMissRatio
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:746,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:746,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:749,1
    - Dst: action::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:749,1
    - Dst: DNSAction::typeFromString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:749,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:749,1
    - Dst: tag_name::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:750,1
    - Dst: std::make_shared<DynBlock::TagSettings>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:751,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:752,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:753,1
    - Dst: auto::setResponseByteRate
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:755,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:755,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:758,1
    - Dst: action::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:758,1
    - Dst: DNSAction::typeFromString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:758,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:758,1
    - Dst: tag_name::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:759,1
    - Dst: std::make_shared<DynBlock::TagSettings>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:760,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:761,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:762,1
    - Dst: dnsdist::configuration::yaml::getLuaFunctionFromConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:765,1
    - Dst: auto::setSuffixMatchRule
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:766,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:766,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:766,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:769,1
    - Dst: action::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:769,1
    - Dst: DNSAction::typeFromString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:769,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:769,1
    - Dst: tag_name::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:770,1
    - Dst: std::make_shared<DynBlock::TagSettings>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:771,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:772,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:773,1
    - Dst: dnsdist::configuration::yaml::getLuaFunctionFromConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:776,1
    - Dst: auto::setSuffixMatchRuleFFI
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:777,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:777,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:777,1
    - Dst: dnsdist::DynamicBlocks::registerGroup
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:780,1
    CyclomaticComplexity: 34
    EdgeCount: 34
    ICount: 92
    argCount: 2
    argNames:
    - ' settings'
    - ' dynamicRules'
    argTypes:
    - dnsdist::rust::settings::DynamicRulesSettingsConfiguration
    - ::rust::Vec<dnsdist::rust::settings::DynamicRulesConfiguration>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 782
      start: 669
    functionDepth: 3
    functionLinenumber: 669
    functionLinenumberEnd: 782
    functionName: dnsdist::configuration::yaml::loadDynamicBlockConfiguration
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc
    functionUses: 1
    functionsReached:
    - auto::setMasks
    - std::make_shared<DynBlock::TagSettings>
    - dnsdist::configuration::yaml::strToRCode
    - dnsdist::configuration::updateRuntimeConfiguration
    - std::unordered_set::insert
    - auto::excludeRange
    - std::string
    - auto::includeRange
    - auto::setAllowedRCodesRatio
    - auto::setQTypeRate
    - DNSAction::typeFromString
    - auto::setSuffixMatchRuleFFI
    - action::empty
    - Netmask
    - auto::excludeDomain
    - tag_name::empty
    - std::make_shared<DynBlockRulesGroup>
    - auto::setQueryRate
    - DNSName
    - auto::setRCodeRate
    - dnsdist::configuration::yaml::strToQType
    - auto::setSuffixMatchRule
    - std::move
    - dnsdist::DynamicBlocks::registerGroup
    - default_action::empty
    - dnsdist::configuration::yaml::getLuaFunctionFromConfiguration
    - auto::setResponseByteRate
    - auto::setRCodeRatio
    - auto::setCacheMissRatio
    linkageType: ''
    returnType: void
    signature: void loadDynamicBlockConfiguration(const dnsdist::rust::settings::DynamicRulesSettingsConfiguration&
      settings, const ::rust::Vec<dnsdist::rust::settings::DynamicRulesConfiguration>&
      dynamicRules)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:789,1
    - Dst: d_additionalAddresses::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:790,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:793,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:793,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:793,1
    - Dst: logger::error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:794,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:794,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:794,1
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:798,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:799,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 12
    argCount: 4
    argNames:
    - ' context'
    - ' state'
    - ' protocol'
    - ' additionalAddresses'
    argTypes:
    - Context
    - std::shared_ptr<ClientState>
    - std::string
    - ::rust::Vec<::rust::String>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 801
      start: 784
    functionDepth: 0
    functionLinenumber: 784
    functionLinenumberEnd: 801
    functionName: dnsdist::configuration::yaml::handleAdditionalAddressesForFrontend
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc
    functionUses: 1
    functionsReached:
    - errlog
    - SLOG
    - Logging::Loggable
    - std::runtime_error
    - logger::error
    - empty
    - std::string
    - d_additionalAddresses::emplace_back
    linkageType: ''
    returnType: void
    signature: void handleAdditionalAddressesForFrontend(const Context& context, const
      std::shared_ptr<ClientState>& state, const std::string& protocol, const ::rust::Vec<::rust::String>&
      additionalAddresses)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: updateImmutableConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:806,1
    - Dst: boost::to_lower_copy
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:807,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:807,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:815,1
    - Dst: dnsdist::configuration::yaml::getCPUPiningFromStr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:816,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:816,1
    - Dst: xsk::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:818,1
    - Dst: dnsdist::configuration::yaml::getRegisteredTypeByName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:819,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:821,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:821,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:821,1
    - Dst: std::shared_ptr::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:823,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:824,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:824,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:824,1
    - Dst: std::make_shared<ClientState>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:834,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:834,1
    - Dst: dnsdist::configuration::yaml::handleAdditionalAddressesForFrontend
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:846,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:852,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:852,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:852,1
    - Dst: std::make_shared<DNSCryptContext>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:854,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:854,1
    - Dst: dnsdist::configuration::yaml::handleTLSConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:859,1
    - Dst: auto::getTLSFrontend
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:863,1
    - Dst: d_frontends::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:867,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:867,1
    - Dst: std::make_shared<ClientState>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:870,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:870,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:870,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:870,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:872,1
    - Dst: std::shared_ptr::at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:876,1
    - Dst: XskWorker::create
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:877,1
    - Dst: auto::addWorker
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:878,1
    - Dst: auto::addWorkerRoute
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:879,1
    - Dst: XskWorker::create
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:880,1
    - Dst: auto::addWorker
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:881,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:882,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:882,1
    - Dst: auto::getXDPMode
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:882,1
    - Dst: ComboAddress::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:882,1
    - Dst: logger::info
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:883,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:883,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:883,1
    - Dst: auto::getXDPMode
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:883,1
    - Dst: d_frontends::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:886,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:886,1
    CyclomaticComplexity: 27
    EdgeCount: 27
    ICount: 59
    argCount: 2
    argNames:
    - ' context'
    - ' binds'
    argTypes:
    - Context
    - ::rust::Vec<dnsdist::rust::settings::BindConfiguration>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 891
      start: 803
    functionDepth: 2
    functionLinenumber: 803
    functionLinenumberEnd: 891
    functionName: dnsdist::configuration::yaml::loadBinds
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc
    functionUses: 1
    functionsReached:
    - auto::getXDPMode
    - std::shared_ptr::at
    - dnsdist::configuration::yaml::handleTLSConfiguration
    - updateImmutableConfiguration
    - std::string
    - std::vector::push_back
    - Logging::Loggable
    - dnsdist::configuration::yaml::handleAdditionalAddressesForFrontend
    - boost::to_lower_copy
    - dnsdist::configuration::yaml::getCPUPiningFromStr
    - dnsdist::configuration::yaml::getRegisteredTypeByName
    - auto::addWorkerRoute
    - std::runtime_error
    - std::make_shared<ClientState>
    - XskWorker::create
    - VERBOSESLOG
    - logger::info
    - std::shared_ptr::size
    - auto::addWorker
    - ComboAddress
    - ComboAddress::toStringWithPort
    - std::move
    - auto::getTLSFrontend
    - xsk::empty
    - d_frontends::emplace_back
    - infolog
    - std::make_shared<DNSCryptContext>
    linkageType: ''
    returnType: void
    signature: void loadBinds(const Context& context, const ::rust::Vec<dnsdist::rust::settings::BindConfiguration>&
      binds)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::configuration::updateRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:895,1
    - Dst: d_webServerAddresses::emplace
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:898,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:898,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:898,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:901,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:901,1
    - Dst: password::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:904,1
    - Dst: std::make_shared<CredentialsHolder>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:905,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:905,1
    - Dst: auto::wasHashed
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:906,1
    - Dst: auto::isHashingAvailable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:906,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:907,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:907,1
    - Dst: logger::info
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:908,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:910,1
    - Dst: api_key::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:912,1
    - Dst: std::make_shared<CredentialsHolder>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:913,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:913,1
    - Dst: auto::wasHashed
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:914,1
    - Dst: auto::isHashingAvailable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:914,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:915,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:915,1
    - Dst: logger::info
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:916,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:918,1
    - Dst: acl::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:920,1
    - Dst: d_webServerACL::clear
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:921,1
    - Dst: d_webServerACL::toMasks
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:923,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:923,1
    - Dst: custom_headers::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:926,1
    - Dst: std::unordered_map<std::string, std::string>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:928,1
    - Dst: std::pair
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:930,1
    - Dst: boost::to_lower_copy
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:930,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:930,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:930,1
    - Dst: d_webCustomHeaders::insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:931,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:931,1
    - Dst: dnsdist::webserver::setMaxConcurrentConnections
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:940,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:941,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 40
    argCount: 2
    argNames:
    - ' context'
    - ' webConfig'
    argTypes:
    - Context
    - dnsdist::rust::settings::WebserverConfiguration
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 944
      start: 893
    functionDepth: 3
    functionLinenumber: 893
    functionLinenumberEnd: 944
    functionName: dnsdist::configuration::yaml::loadWebServer
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc
    functionUses: 1
    functionsReached:
    - std::unordered_map<std::string, std::string>
    - std::make_shared<CredentialsHolder>
    - dnsdist::configuration::updateRuntimeConfiguration
    - d_webServerACL::clear
    - std::pair
    - std::string
    - acl::empty
    - SLOG
    - d_webServerACL::toMasks
    - d_webServerAddresses::emplace
    - boost::to_lower_copy
    - dnsdist::webserver::setMaxConcurrentConnections
    - std::runtime_error
    - api_key::empty
    - logger::info
    - auto::isHashingAvailable
    - ComboAddress
    - std::move
    - custom_headers::empty
    - auto::wasHashed
    - infolog
    - d_webCustomHeaders::insert
    - password::empty
    linkageType: ''
    returnType: void
    signature: void loadWebServer(const Context& context, const dnsdist::rust::settings::WebserverConfiguration&
      webConfig)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<ServerPolicy>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:951,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:951,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:951,1
    - Dst: dnsdist::configuration::yaml::registerType
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:952,1
    - Dst: dnsdist::configuration::yaml::getLuaFunctionFromConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:957,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:958,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:958,1
    - Dst: std::make_shared<ServerPolicy>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:960,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:960,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:960,1
    - Dst: dnsdist::configuration::yaml::registerType
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:961,1
    - Dst: dnsdist::configuration::yaml::getLuaFunctionFromConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:966,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:967,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:967,1
    - Dst: std::make_shared<ServerPolicy>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:969,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:969,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:969,1
    - Dst: dnsdist::configuration::yaml::registerType
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:970,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 17
    argCount: 1
    argNames:
    - ' customPolicies'
    argTypes:
    - ::rust::Vec<dnsdist::rust::settings::CustomLoadBalancingPolicyConfiguration>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 973
      start: 946
    functionDepth: 2
    functionLinenumber: 946
    functionLinenumberEnd: 973
    functionName: dnsdist::configuration::yaml::loadCustomPolicies
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc
    functionUses: 1
    functionsReached:
    - std::move
    - std::runtime_error
    - dnsdist::configuration::yaml::getLuaFunctionFromConfiguration
    - std::make_shared<ServerPolicy>
    - std::string
    - dnsdist::configuration::yaml::registerType
    linkageType: ''
    returnType: void
    signature: void loadCustomPolicies(const ::rust::Vec<dnsdist::rust::settings::CustomLoadBalancingPolicyConfiguration>&
      customPolicies)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: libssl_load_engine
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:979,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:979,1
    - Dst: default_string::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:979,1
    - Dst: std::optional<std::string>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:979,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:981,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:981,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:981,1
    - Dst: logger::error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:982,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:982,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:985,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:985,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:985,1
    - Dst: logger::info
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:986,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:986,1
    - Dst: libssl_load_provider
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:992,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:992,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:994,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:994,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:994,1
    - Dst: logger::error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:995,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:995,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:998,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:998,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:998,1
    - Dst: logger::info
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:999,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:999,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 11
    argCount: 2
    argNames:
    - ' context'
    - ' tlsSettings'
    argTypes:
    - Context
    - dnsdist::rust::settings::TlsTuningConfiguration
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1002
      start: 975
    functionDepth: 0
    functionLinenumber: 975
    functionLinenumberEnd: 1002
    functionName: dnsdist::configuration::yaml::handleOpenSSLSettings
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc
    functionUses: 1
    functionsReached:
    - std::optional<std::string>
    - SLOG
    - Logging::Loggable
    - warnlog
    - libssl_load_engine
    - logger::info
    - logger::error
    - std::string
    - libssl_load_provider
    - default_string::empty
    linkageType: ''
    returnType: void
    signature: void handleOpenSSLSettings(const Context& context, const dnsdist::rust::settings::TlsTuningConfiguration&
      tlsSettings)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: verbose_log_destination::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1006,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1007,1
    - Dst: std::ofstream
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1009,1
    - Dst: auto::c_str
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1009,1
    - Dst: dnsdist::logging::LoggingConfiguration::setVerboseStream
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1010,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1010,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1013,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1013,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1013,1
    - Dst: logger::error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1014,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1014,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1014,1
    - Dst: syslog_facility::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1018,1
    - Dst: logFacilityFromString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1019,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1019,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1021,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1021,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1021,1
    - Dst: logger::info
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1022,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1022,1
    - Dst: setSyslogFacility
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1025,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1030,1
    - Dst: auto::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1031,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1039,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1039,1
    - Dst: logger::info
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1040,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1040,1
    - Dst: dnsdist::configuration::updateImmutableConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1044,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1045,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 33
    argCount: 2
    argNames:
    - ' context'
    - ' settings'
    argTypes:
    - Context
    - dnsdist::rust::settings::LoggingConfiguration
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1052
      start: 1004
    functionDepth: 2
    functionLinenumber: 1004
    functionLinenumberEnd: 1052
    functionName: dnsdist::configuration::yaml::handleLoggingConfiguration
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc
    functionUses: 1
    functionsReached:
    - errlog
    - std::move
    - SLOG
    - syslog_facility::empty
    - auto::c_str
    - Logging::Loggable
    - what
    - verbose_log_destination::empty
    - setSyslogFacility
    - warnlog
    - dnsdist::configuration::updateImmutableConfiguration
    - logger::info
    - std::ofstream
    - logger::error
    - logFacilityFromString
    - std::string
    - dnsdist::logging::LoggingConfiguration::setVerboseStream
    - auto::empty
    linkageType: ''
    returnType: void
    signature: void handleLoggingConfiguration(const Context& context, const dnsdist::rust::settings::LoggingConfiguration&
      settings)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: listen_address::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1056,1
    - Dst: dnsdist::configuration::updateRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1057,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1058,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1058,1
    - Dst: d_consoleACL::clear
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1060,1
    - Dst: d_consoleACL::addMask
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1062,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1062,1
    - Dst: B64Decode
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1064,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1064,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - ' consoleConf'
    argTypes:
    - dnsdist::rust::settings::ConsoleConfiguration
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1067
      start: 1054
    functionDepth: 3
    functionLinenumber: 1054
    functionLinenumberEnd: 1067
    functionName: dnsdist::configuration::yaml::handleConsoleConfiguration
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc
    functionUses: 1
    functionsReached:
    - dnsdist::configuration::updateRuntimeConfiguration
    - listen_address::empty
    - B64Decode
    - d_consoleACL::clear
    - std::string
    - d_consoleACL::addMask
    - ComboAddress
    linkageType: ''
    returnType: void
    signature: void handleConsoleConfiguration(const dnsdist::rust::settings::ConsoleConfiguration&
      consoleConf)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: options_to_skip::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1087,1
    - Dst: DNSDistPacketCache::CacheSettings::d_optionsToSkip::clear
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1088,1
    - Dst: DNSDistPacketCache::CacheSettings::d_optionsToSkip::insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1089,1
    - Dst: DNSDistPacketCache::CacheSettings::d_optionsToSkip::insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1091,1
    - Dst: pdns::checked_stoi<uint16_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1091,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1091,1
    - Dst: DNSDistPacketCache::CacheSettings::d_optionsToSkip::erase
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1095,1
    - Dst: std::unordered_set::insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1104,1
    - Dst: std::unordered_set::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1106,1
    - Dst: DNSDistPacketCache::CacheSettings::d_payloadRanks::assign
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1107,1
    - Dst: std::unordered_set::begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1107,1
    - Dst: std::unordered_set::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1107,1
    - Dst: std::sort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1108,1
    - Dst: DNSDistPacketCache::CacheSettings::d_payloadRanks::begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1108,1
    - Dst: DNSDistPacketCache::CacheSettings::d_payloadRanks::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1108,1
    - Dst: std::make_shared<DNSDistPacketCache>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1110,1
    - Dst: dnsdist::configuration::yaml::registerType
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1112,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 24
    argCount: 1
    argNames:
    - ' caches'
    argTypes:
    - ::rust::Vec<dnsdist::rust::settings::PacketCacheConfiguration>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1114
      start: 1069
    functionDepth: 1
    functionLinenumber: 1069
    functionLinenumberEnd: 1114
    functionName: dnsdist::configuration::yaml::handlePacketCacheConfiguration
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc
    functionUses: 1
    functionsReached:
    - DNSDistPacketCache::CacheSettings::d_optionsToSkip::clear
    - std::unordered_set::insert
    - std::sort
    - options_to_skip::empty
    - pdns::checked_stoi<uint16_t>
    - DNSDistPacketCache::CacheSettings::d_payloadRanks::end
    - std::make_shared<DNSDistPacketCache>
    - DNSDistPacketCache::CacheSettings::d_optionsToSkip::insert
    - dnsdist::configuration::yaml::registerType
    - DNSDistPacketCache::CacheSettings::d_payloadRanks::assign
    - std::unordered_set::begin
    - std::string
    - std::unordered_set::empty
    - DNSDistPacketCache::CacheSettings::d_optionsToSkip::erase
    - std::unordered_set::end
    - DNSDistPacketCache::CacheSettings::d_payloadRanks::begin
    linkageType: ''
    returnType: void
    signature: void handlePacketCacheConfiguration(const ::rust::Vec<dnsdist::rust::settings::PacketCacheConfiguration>&
      caches)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1130,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1131,1
    - Dst: convertParamsToConfig
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1134,1
    - Dst: convertParamsToConfig
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1135,1
    - Dst: convertParamsToConfig
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1136,1
    - Dst: convertParamsToConfig
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1137,1
    - Dst: convertParamsToConfig
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1138,1
    - Dst: std::make_shared<BPFFilter>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1139,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1140,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 2
    argNames:
    - ' ebpf'
    - configCheck
    argTypes:
    - dnsdist::rust::settings::EbpfConfiguration
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1143
      start: 1116
    functionDepth: 0
    functionLinenumber: 1116
    functionLinenumberEnd: 1143
    functionName: dnsdist::configuration::yaml::handleEBPFConfiguration
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc
    functionUses: 1
    functionsReached:
    - std::string
    - std::move
    - std::make_shared<BPFFilter>
    - convertParamsToConfig
    linkageType: ''
    returnType: void
    signature: void handleEBPFConfiguration([[maybe_unused]] const dnsdist::rust::settings::EbpfConfiguration&
      ebpf, [[maybe_unused]] bool configCheck)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1148,1
    - Dst: dnsdist::configuration::updateRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1149,1
    - Dst: dnsdist::Carbon::newEndpoint
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1151,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1151,1
    - Dst: name::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1152,1
    - Dst: std::optional<std::string>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1152,1
    - Dst: name_space::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1154,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1154,1
    - Dst: instance::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1155,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1155,1
    - Dst: d_carbonEndpoints::push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1156,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1156,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - ' carbonConfigs'
    argTypes:
    - ::rust::Vec<dnsdist::rust::settings::CarbonConfiguration>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1161
      start: 1145
    functionDepth: 3
    functionLinenumber: 1145
    functionLinenumberEnd: 1161
    functionName: dnsdist::configuration::yaml::handleCarbonConfiguration
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc
    functionUses: 1
    functionsReached:
    - name_space::empty
    - std::optional<std::string>
    - std::move
    - dnsdist::Carbon::newEndpoint
    - dnsdist::configuration::updateRuntimeConfiguration
    - instance::empty
    - name::empty
    - empty
    - std::string
    - d_carbonEndpoints::push_back
    linkageType: ''
    returnType: void
    signature: void handleCarbonConfiguration([[maybe_unused]] const ::rust::Vec<dnsdist::rust::settings::CarbonConfiguration>&
      carbonConfigs)
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: store
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1170,1
    - Dst: store
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1171,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1172,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1172,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1172,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1172,1
    - Dst: dnsdist::configuration::yaml::loadContentFromConfigurationFile
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1177,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1180,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1180,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1180,1
    - Dst: auto::error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1181,1
    - Dst: dnsdist::lbpolicies::getBuiltInPolicies
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1186,1
    - Dst: dnsdist::configuration::yaml::registerType
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1187,1
    - Dst: Opcode::from_lowercase_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1187,1
    - Dst: dnsdist::rust::settings::from_yaml_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1191,1
    - Dst: dnsdist::configuration::updateImmutableConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1193,1
    - Dst: convertImmutableFlatSettingsFromRust
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1194,1
    - Dst: dnsdist::configuration::updateRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1197,1
    - Dst: convertRuntimeFlatSettingsFromRust
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1198,1
    - Dst: dnsdist::configuration::yaml::handleLoggingConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1201,1
    - Dst: dnsdist::configuration::yaml::handleConsoleConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1203,1
    - Dst: auto::acl::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1209,1
    - Dst: dnsdist::configuration::updateRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1210,1
    - Dst: d_ACL::clear
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1211,1
    - Dst: d_ACL::addMask
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1213,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1213,1
    - Dst: dnsdist::configuration::yaml::handleOpenSSLSettings
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1218,1
    - Dst: dnsdist::configuration::yaml::handleEBPFConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1220,1
    - Dst: std::make_shared<XSKMap>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1224,1
    - Dst: std::make_shared<XskSocket>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1226,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1226,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1226,1
    - Dst: push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1227,1
    - Dst: auto::push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1228,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1228,1
    - Dst: dnsdist::configuration::yaml::registerType
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1230,1
    - Dst: dnsdist::configuration::yaml::loadBinds
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1234,1
    - Dst: dnsdist::configuration::yaml::createBackendFromConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1237,1
    - Dst: auto::d_config::pools::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1239,1
    - Dst: addServerToPool
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1241,1
    - Dst: addServerToPool
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1245,1
    - Dst: dnsdist::backend::registerNewBackend
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1248,1
    - Dst: auto::proxy_protocol::acl::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1251,1
    - Dst: dnsdist::configuration::updateRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1252,1
    - Dst: d_proxyProtocolACL::clear
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1253,1
    - Dst: d_proxyProtocolACL::addMask
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1255,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1255,1
    - Dst: dnsdist::configuration::yaml::handleCarbonConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1260,1
    - Dst: auto::webserver::listen_addresses::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1262,1
    - Dst: dnsdist::configuration::yaml::loadWebServer
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1264,1
    - Dst: dnsdist::configuration::updateRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1268,1
    - Dst: dnsdist::configuration::yaml::getLuaFunctionFromConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1270,1
    - Dst: dnsdist::configuration::yaml::loadDynamicBlockConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1274,1
    - Dst: auto::tuning::tcp::fast_open_key::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1276,1
    - Dst: sscanf
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1278,1
    - Dst: auto::tuning::tcp::fast_open_key::c_str
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1278,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1278,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1278,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1278,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1278,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1279,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1279,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1280,1
    - Dst: dnsdist::configuration::updateImmutableConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1282,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1283,1
    - Dst: auto::general::capabilities_to_retain::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1287,1
    - Dst: dnsdist::configuration::updateImmutableConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1288,1
    - Dst: d_capabilitiesToRetain::emplace
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1290,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1290,1
    - Dst: auto::general::server_id::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1295,1
    - Dst: dnsdist::configuration::updateRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1296,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1297,1
    - Dst: dnsdist::configuration::yaml::handlePacketCacheConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1301,1
    - Dst: dnsdist::configuration::yaml::loadCustomPolicies
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1303,1
    - Dst: auto::load_balancing_policies::default_policy::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1305,1
    - Dst: dnsdist::configuration::yaml::getRegisteredTypeByName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1306,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1308,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1308,1
    - Dst: dnsdist::configuration::updateRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1310,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1311,1
    - Dst: dnsdist::configuration::updateRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1316,1
    - Dst: d_pools::emplace
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1317,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1317,1
    - Dst: ServerPool
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1317,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1319,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1319,1
    - Dst: Context::logger::info
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1320,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1320,1
    - Dst: packet_cache::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1323,1
    - Dst: dnsdist::configuration::yaml::getRegisteredTypeByName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1324,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1326,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1326,1
    - Dst: policy::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1329,1
    - Dst: dnsdist::configuration::yaml::getRegisteredTypeByName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1330,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1332,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1332,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1334,1
    - Dst: second::setECS
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1336,1
    - Dst: second::setZeroScope
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1337,1
    - Dst: dnsdist::configuration::yaml::loadRulesConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1341,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1346,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1346,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1346,1
    - Dst: auto::error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1347,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1347,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1347,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1350,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1350,1
    - Dst: auto::error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1351,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1351,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1354,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1354,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1354,1
    - Dst: auto::error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1355,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1355,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1355,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1360,1
    CyclomaticComplexity: 34
    EdgeCount: 34
    ICount: 124
    argCount: 3
    argNames:
    - ' fileName'
    - isClient
    - configCheck
    argTypes:
    - std::string
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1362
      start: 1165
    functionDepth: 4
    functionLinenumber: 1165
    functionLinenumberEnd: 1362
    functionName: dnsdist::configuration::yaml::loadConfigurationFromFile
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc
    functionUses: 1
    functionsReached:
    - errlog
    - auto::general::capabilities_to_retain::empty
    - d_ACL::clear
    - second::setECS
    - ServerPool
    - stringerror
    - dnsdist::lbpolicies::getBuiltInPolicies
    - dnsdist::configuration::updateRuntimeConfiguration
    - std::make_shared<XskSocket>
    - dnsdist::configuration::yaml::loadBinds
    - auto::tuning::tcp::fast_open_key::c_str
    - second::setZeroScope
    - dnsdist::configuration::yaml::createBackendFromConfiguration
    - auto::load_balancing_policies::default_policy::empty
    - d_pools::emplace
    - std::vector::at
    - auto::proxy_protocol::acl::empty
    - packet_cache::empty
    - dnsdist::configuration::yaml::loadRulesConfiguration
    - auto::push_back
    - std::string
    - d_ACL::addMask
    - dnsdist::rust::settings::from_yaml_string
    - auto::general::server_id::empty
    - dnsdist::configuration::yaml::loadCustomPolicies
    - dnsdist::configuration::yaml::handleConsoleConfiguration
    - SLOG
    - static_cast<size_t>
    - dnsdist::configuration::yaml::loadContentFromConfigurationFile
    - std::vector::size
    - Logging::Loggable
    - auto::error
    - store
    - dnsdist::logging::getTopLogger
    - dnsdist::configuration::yaml::handleOpenSSLSettings
    - dnsdist::configuration::yaml::getRegisteredTypeByName
    - dnsdist::backend::registerNewBackend
    - auto::webserver::listen_addresses::empty
    - convertImmutableFlatSettingsFromRust
    - sscanf
    - std::runtime_error
    - push_back
    - addServerToPool
    - convertRuntimeFlatSettingsFromRust
    - dnsdist::configuration::updateImmutableConfiguration
    - dnsdist::configuration::yaml::handlePacketCacheConfiguration
    - VERBOSESLOG
    - d_proxyProtocolACL::clear
    - d_proxyProtocolACL::addMask
    - Context::logger::info
    - d_capabilitiesToRetain::emplace
    - dnsdist::configuration::yaml::loadWebServer
    - dnsdist::configuration::yaml::handleLoggingConfiguration
    - auto::tuning::tcp::fast_open_key::empty
    - dnsdist::configuration::yaml::handleCarbonConfiguration
    - dnsdist::configuration::yaml::registerType
    - dnsdist::configuration::yaml::handleEBPFConfiguration
    - Opcode::from_lowercase_string
    - std::move
    - auto::d_config::pools::empty
    - what
    - policy::empty
    - std::make_shared<XSKMap>
    - infolog
    - dnsdist::configuration::yaml::getLuaFunctionFromConfiguration
    - auto::acl::empty
    - dnsdist::configuration::yaml::loadDynamicBlockConfiguration
    linkageType: ''
    returnType: bool
    signature: bool loadConfigurationFromFile(const std::string& fileName, [[maybe_unused]]
      bool isClient, [[maybe_unused]] bool configCheck)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1369,1
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1370,1
    - Dst: auto::find
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1371,1
    - Dst: auto::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1372,1
    - Dst: std::get_if<std::shared_ptr<DNSDistPacketCache>>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1375,1
    - Dst: ReturnValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1376,1
    - Dst: std::get_if<std::shared_ptr<dnsdist::rust::settings::DNSSelector>>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1378,1
    - Dst: ReturnValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1379,1
    - Dst: std::get_if<std::shared_ptr<dnsdist::rust::settings::DNSActionWrapper>>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1381,1
    - Dst: ReturnValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1382,1
    - Dst: std::get_if<std::shared_ptr<dnsdist::rust::settings::DNSResponseActionWrapper>>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1384,1
    - Dst: ReturnValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1385,1
    - Dst: std::get_if<std::shared_ptr<NetmaskGroup>>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1387,1
    - Dst: ReturnValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1388,1
    - Dst: std::get_if<std::shared_ptr<KeyValueStore>>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1390,1
    - Dst: ReturnValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1391,1
    - Dst: std::get_if<std::shared_ptr<KeyValueLookupKey>>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1393,1
    - Dst: ReturnValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1394,1
    - Dst: std::get_if<std::shared_ptr<RemoteLoggerInterface>>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1396,1
    - Dst: ReturnValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1397,1
    - Dst: std::get_if<std::shared_ptr<ServerPolicy>>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1399,1
    - Dst: ReturnValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1400,1
    - Dst: std::get_if<std::shared_ptr<TimedIPSetRule>>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1402,1
    - Dst: ReturnValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1403,1
    - Dst: std::get_if<std::shared_ptr<XSKMap>>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1405,1
    - Dst: ReturnValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1406,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 40
    argCount: 1
    argNames:
    - ' luaCtx'
    argTypes:
    - LuaContext
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1412
      start: 1364
    functionDepth: 0
    functionLinenumber: 1364
    functionLinenumberEnd: 1412
    functionName: dnsdist::configuration::yaml::addLuaBindingsForYAMLObjects
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc
    functionUses: 2
    functionsReached:
    - std::get_if<std::shared_ptr<KeyValueStore>>
    - std::get_if<std::shared_ptr<TimedIPSetRule>>
    - std::get_if<std::shared_ptr<RemoteLoggerInterface>>
    - std::get_if<std::shared_ptr<ServerPolicy>>
    - ReturnValue
    - std::get_if<std::shared_ptr<DNSDistPacketCache>>
    - lock
    - std::get_if<std::shared_ptr<dnsdist::rust::settings::DNSActionWrapper>>
    - std::get_if<std::shared_ptr<dnsdist::rust::settings::DNSResponseActionWrapper>>
    - std::get_if<std::shared_ptr<KeyValueLookupKey>>
    - std::get_if<std::shared_ptr<XSKMap>>
    - std::get_if<std::shared_ptr<dnsdist::rust::settings::DNSSelector>>
    - auto::end
    - writeFunction
    - auto::find
    - std::get_if<std::shared_ptr<NetmaskGroup>>
    linkageType: ''
    returnType: void
    signature: void addLuaBindingsForYAMLObjects([[maybe_unused]] LuaContext& luaCtx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<DNSSelector>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1421,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1422,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1423,1
    - Dst: dnsdist::configuration::yaml::registerType
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1424,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - ' rule'
    - ' name'
    argTypes:
    - std::shared_ptr<DNSRule>
    - ::rust::String
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1426
      start: 1419
    functionDepth: 1
    functionLinenumber: 1419
    functionLinenumberEnd: 1426
    functionName: dnsdist::rust::settings::newDNSSelector
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc
    functionUses: 0
    functionsReached:
    - std::string
    - std::move
    - std::make_shared<DNSSelector>
    - dnsdist::configuration::yaml::registerType
    linkageType: ''
    returnType: std::shared_ptr<DNSSelector>
    signature: std::shared_ptr<DNSSelector> newDNSSelector(std::shared_ptr<DNSRule>&&
      rule, const ::rust::String& name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<DNSActionWrapper>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1430,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1431,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1432,1
    - Dst: dnsdist::configuration::yaml::registerType
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1433,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - ' action'
    - ' name'
    argTypes:
    - std::shared_ptr<DNSAction>
    - ::rust::String
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1435
      start: 1428
    functionDepth: 1
    functionLinenumber: 1428
    functionLinenumberEnd: 1435
    functionName: dnsdist::rust::settings::newDNSActionWrapper
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc
    functionUses: 0
    functionsReached:
    - std::make_shared<DNSActionWrapper>
    - std::move
    - dnsdist::configuration::yaml::registerType
    - std::string
    linkageType: ''
    returnType: std::shared_ptr<DNSActionWrapper>
    signature: std::shared_ptr<DNSActionWrapper> newDNSActionWrapper(std::shared_ptr<DNSAction>&&
      action, const ::rust::String& name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<DNSResponseActionWrapper>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1439,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1440,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1441,1
    - Dst: dnsdist::configuration::yaml::registerType
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1442,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - ' action'
    - ' name'
    argTypes:
    - std::shared_ptr<DNSResponseAction>
    - ::rust::String
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1444
      start: 1437
    functionDepth: 1
    functionLinenumber: 1437
    functionLinenumberEnd: 1444
    functionName: dnsdist::rust::settings::newDNSResponseActionWrapper
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc
    functionUses: 0
    functionsReached:
    - std::string
    - std::move
    - dnsdist::configuration::yaml::registerType
    - std::make_shared<DNSResponseActionWrapper>
    linkageType: ''
    returnType: std::shared_ptr<DNSResponseActionWrapper>
    signature: std::shared_ptr<DNSResponseActionWrapper> newDNSResponseActionWrapper(std::shared_ptr<DNSResponseAction>&&
      action, const ::rust::String& name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - ' rustConfig'
    argTypes:
    - dnsdist::rust::settings::ResponseConfig
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1454
      start: 1446
    functionDepth: 0
    functionLinenumber: 1446
    functionLinenumberEnd: 1454
    functionName: dnsdist::rust::settings::convertResponseConfig
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: dnsdist::ResponseConfig
    signature: dnsdist::ResponseConfig convertResponseConfig(const dnsdist::rust::settings::ResponseConfig&
      rustConfig)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - ' soa'
    argTypes:
    - dnsdist::rust::settings::SOAParams
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1465
      start: 1456
    functionDepth: 0
    functionLinenumber: 1456
    functionLinenumberEnd: 1465
    functionName: dnsdist::rust::settings::convertSOAParams
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: dnsdist::actions::SOAParams
    signature: dnsdist::actions::SOAParams convertSOAParams(const dnsdist::rust::settings::SOAParams&
      soa)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ::SVCRecordParameters::mandatoryParams::insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1473,1
    - Dst: ::SVCRecordParameters::alpns::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1476,1
    - Dst: ::SVCRecordParameters::ipv4hints::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1479,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1479,1
    - Dst: ::SVCRecordParameters::ipv6hints::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1482,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1482,1
    - Dst: ::SVCRecordParameters::additionalParams::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1485,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1485,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1487,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1487,1
    - Dst: std::vector::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1494,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1494,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 20
    argCount: 1
    argNames:
    - ' rustParameters'
    argTypes:
    - ::rust::Vec<dnsdist::rust::settings::SVCRecordParameters>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1497
      start: 1467
    functionDepth: 1
    functionLinenumber: 1467
    functionLinenumberEnd: 1497
    functionName: dnsdist::rust::settings::convertSVCRecordParameters
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc
    functionUses: 0
    functionsReached:
    - std::move
    - ::SVCRecordParameters::additionalParams::emplace_back
    - std::vector::emplace_back
    - DNSName
    - ::SVCRecordParameters::ipv4hints::emplace_back
    - ::SVCRecordParameters::ipv6hints::emplace_back
    - ::SVCRecordParameters::alpns::emplace_back
    - ::SVCRecordParameters::mandatoryParams::insert
    - std::string
    linkageType: ''
    returnType: std::vector<::SVCRecordParameters>
    signature: std::vector<::SVCRecordParameters> convertSVCRecordParameters(const
      ::rust::Vec<dnsdist::rust::settings::SVCRecordParameters>& rustParameters)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::configuration::yaml::getLuaFunctionFromConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1502,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1503,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1503,1
    - Dst: dnsdist::actions::getLuaAction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1505,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1505,1
    - Dst: dnsdist::rust::settings::newDNSActionWrapper
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1506,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1506,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - ' config'
    argTypes:
    - LuaActionConfiguration
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1507
      start: 1499
    functionDepth: 2
    functionLinenumber: 1499
    functionLinenumberEnd: 1507
    functionName: dnsdist::rust::settings::getLuaAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc
    functionUses: 0
    functionsReached:
    - std::move
    - dnsdist::rust::settings::newDNSActionWrapper
    - std::runtime_error
    - dnsdist::actions::getLuaAction
    - dnsdist::configuration::yaml::getLuaFunctionFromConfiguration
    - std::string
    linkageType: ''
    returnType: std::shared_ptr<DNSActionWrapper>
    signature: std::shared_ptr<DNSActionWrapper> getLuaAction(const LuaActionConfiguration&
      config)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::configuration::yaml::getLuaFunctionFromConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1512,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1513,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1513,1
    - Dst: dnsdist::actions::getLuaFFIAction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1515,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1515,1
    - Dst: dnsdist::rust::settings::newDNSActionWrapper
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1516,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1516,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - ' config'
    argTypes:
    - LuaFFIActionConfiguration
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1517
      start: 1509
    functionDepth: 2
    functionLinenumber: 1509
    functionLinenumberEnd: 1517
    functionName: dnsdist::rust::settings::getLuaFFIAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc
    functionUses: 0
    functionsReached:
    - std::move
    - dnsdist::rust::settings::newDNSActionWrapper
    - std::runtime_error
    - dnsdist::configuration::yaml::getLuaFunctionFromConfiguration
    - std::string
    - dnsdist::actions::getLuaFFIAction
    linkageType: ''
    returnType: std::shared_ptr<DNSActionWrapper>
    signature: std::shared_ptr<DNSActionWrapper> getLuaFFIAction(const LuaFFIActionConfiguration&
      config)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::actions::getContinueAction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1521,1
    - Dst: dnsdist::rust::settings::newDNSActionWrapper
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1522,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1522,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' config'
    argTypes:
    - ContinueActionConfiguration
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1523
      start: 1519
    functionDepth: 2
    functionLinenumber: 1519
    functionLinenumberEnd: 1523
    functionName: dnsdist::rust::settings::getContinueAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc
    functionUses: 0
    functionsReached:
    - std::move
    - dnsdist::rust::settings::newDNSActionWrapper
    - dnsdist::actions::getContinueAction
    linkageType: ''
    returnType: std::shared_ptr<DNSActionWrapper>
    signature: std::shared_ptr<DNSActionWrapper> getContinueAction(const ContinueActionConfiguration&
      config)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::vector::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1529,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1529,1
    - Dst: dnsdist::actions::getSetProxyProtocolValuesAction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1531,1
    - Dst: dnsdist::rust::settings::newDNSActionWrapper
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1532,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1532,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ' config'
    argTypes:
    - SetProxyProtocolValuesActionConfiguration
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1533
      start: 1525
    functionDepth: 2
    functionLinenumber: 1525
    functionLinenumberEnd: 1533
    functionName: dnsdist::rust::settings::getSetProxyProtocolValuesAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc
    functionUses: 0
    functionsReached:
    - std::move
    - dnsdist::actions::getSetProxyProtocolValuesAction
    - dnsdist::rust::settings::newDNSActionWrapper
    - std::vector::emplace_back
    - std::string
    linkageType: ''
    returnType: std::shared_ptr<DNSActionWrapper>
    signature: std::shared_ptr<DNSActionWrapper> getSetProxyProtocolValuesAction(const
      SetProxyProtocolValuesActionConfiguration& config)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: response::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1537,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1538,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1538,1
    - Dst: dnsdist::actions::getSpoofAction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1540,1
    - Dst: PacketBuffer
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1540,1
    - Dst: response::data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1540,1
    - Dst: response::data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1540,1
    - Dst: response::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1540,1
    - Dst: dnsdist::rust::settings::newDNSActionWrapper
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1541,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1541,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - ' config'
    argTypes:
    - SpoofPacketActionConfiguration
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1542
      start: 1535
    functionDepth: 2
    functionLinenumber: 1535
    functionLinenumberEnd: 1542
    functionName: dnsdist::rust::settings::getSpoofPacketAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc
    functionUses: 0
    functionsReached:
    - std::move
    - response::data
    - dnsdist::rust::settings::newDNSActionWrapper
    - std::runtime_error
    - dnsdist::actions::getSpoofAction
    - PacketBuffer
    - response::size
    - std::string
    linkageType: ''
    returnType: std::shared_ptr<DNSActionWrapper>
    signature: std::shared_ptr<DNSActionWrapper> getSpoofPacketAction(const SpoofPacketActionConfiguration&
      config)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::vector::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1548,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1548,1
    - Dst: dnsdist::actions::getSpoofAction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1550,1
    - Dst: dnsdist::rust::settings::convertResponseConfig
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1550,1
    - Dst: dnsdist::rust::settings::newDNSActionWrapper
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1551,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1551,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ' config'
    argTypes:
    - SpoofActionConfiguration
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1552
      start: 1544
    functionDepth: 2
    functionLinenumber: 1544
    functionLinenumberEnd: 1552
    functionName: dnsdist::rust::settings::getSpoofAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc
    functionUses: 0
    functionsReached:
    - std::move
    - dnsdist::rust::settings::newDNSActionWrapper
    - dnsdist::rust::settings::convertResponseConfig
    - std::vector::emplace_back
    - dnsdist::actions::getSpoofAction
    - std::string
    linkageType: ''
    returnType: std::shared_ptr<DNSActionWrapper>
    signature: std::shared_ptr<DNSActionWrapper> getSpoofAction(const SpoofActionConfiguration&
      config)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1556,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1556,1
    - Dst: dnsdist::actions::getSpoofAction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1557,1
    - Dst: dnsdist::rust::settings::convertResponseConfig
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1557,1
    - Dst: dnsdist::rust::settings::newDNSActionWrapper
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1558,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1558,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' config'
    argTypes:
    - SpoofCNAMEActionConfiguration
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1559
      start: 1554
    functionDepth: 2
    functionLinenumber: 1554
    functionLinenumberEnd: 1559
    functionName: dnsdist::rust::settings::getSpoofCNAMEAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc
    functionUses: 0
    functionsReached:
    - std::move
    - dnsdist::rust::settings::newDNSActionWrapper
    - dnsdist::rust::settings::convertResponseConfig
    - dnsdist::actions::getSpoofAction
    - DNSName
    - std::string
    linkageType: ''
    returnType: std::shared_ptr<DNSActionWrapper>
    signature: std::shared_ptr<DNSActionWrapper> getSpoofCNAMEAction(const SpoofCNAMEActionConfiguration&
      config)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::vector::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1565,1
    - Dst: dnsdist::configuration::yaml::rustStringWithEscapedRawContentToString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1565,1
    - Dst: qtype_for_any::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1568,1
    - Dst: QType::QType
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1569,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1570,1
    - Dst: QType::getCode
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1571,1
    - Dst: dnsdist::actions::getSpoofAction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1573,1
    - Dst: dnsdist::rust::settings::convertResponseConfig
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1573,1
    - Dst: dnsdist::rust::settings::newDNSActionWrapper
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1574,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1574,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - ' config'
    argTypes:
    - SpoofRawActionConfiguration
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1575
      start: 1561
    functionDepth: 2
    functionLinenumber: 1561
    functionLinenumberEnd: 1575
    functionName: dnsdist::rust::settings::getSpoofRawAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc
    functionUses: 0
    functionsReached:
    - std::move
    - QType::QType
    - qtype_for_any::empty
    - dnsdist::rust::settings::newDNSActionWrapper
    - dnsdist::rust::settings::convertResponseConfig
    - std::vector::emplace_back
    - dnsdist::actions::getSpoofAction
    - dnsdist::configuration::yaml::rustStringWithEscapedRawContentToString
    - QType::getCode
    - std::string
    linkageType: ''
    returnType: std::shared_ptr<DNSActionWrapper>
    signature: std::shared_ptr<DNSActionWrapper> getSpoofRawAction(const SpoofRawActionConfiguration&
      config)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::configuration::yaml::getLuaFunctionFromConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1580,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1581,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1581,1
    - Dst: dnsdist::actions::getLuaResponseAction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1583,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1583,1
    - Dst: dnsdist::rust::settings::newDNSResponseActionWrapper
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1584,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1584,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - ' config'
    argTypes:
    - LuaResponseActionConfiguration
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1585
      start: 1577
    functionDepth: 2
    functionLinenumber: 1577
    functionLinenumberEnd: 1585
    functionName: dnsdist::rust::settings::getLuaResponseAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc
    functionUses: 0
    functionsReached:
    - std::move
    - dnsdist::actions::getLuaResponseAction
    - std::runtime_error
    - dnsdist::rust::settings::newDNSResponseActionWrapper
    - dnsdist::configuration::yaml::getLuaFunctionFromConfiguration
    - std::string
    linkageType: ''
    returnType: std::shared_ptr<DNSResponseActionWrapper>
    signature: std::shared_ptr<DNSResponseActionWrapper> getLuaResponseAction(const
      LuaResponseActionConfiguration& config)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::configuration::yaml::getLuaFunctionFromConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1590,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1591,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1591,1
    - Dst: dnsdist::actions::getLuaFFIResponseAction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1593,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1593,1
    - Dst: dnsdist::rust::settings::newDNSResponseActionWrapper
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1594,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1594,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - ' config'
    argTypes:
    - LuaFFIResponseActionConfiguration
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1595
      start: 1587
    functionDepth: 2
    functionLinenumber: 1587
    functionLinenumberEnd: 1595
    functionName: dnsdist::rust::settings::getLuaFFIResponseAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc
    functionUses: 0
    functionsReached:
    - std::move
    - std::runtime_error
    - dnsdist::rust::settings::newDNSResponseActionWrapper
    - dnsdist::actions::getLuaFFIResponseAction
    - dnsdist::configuration::yaml::getLuaFunctionFromConfiguration
    - std::string
    linkageType: ''
    returnType: std::shared_ptr<DNSResponseActionWrapper>
    signature: std::shared_ptr<DNSResponseActionWrapper> getLuaFFIResponseAction(const
      LuaFFIResponseActionConfiguration& config)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::unordered_set::insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1601,1
    - Dst: dnsdist::actions::getClearRecordTypesResponseAction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1603,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1603,1
    - Dst: dnsdist::rust::settings::newDNSResponseActionWrapper
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1604,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1604,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ' config'
    argTypes:
    - ClearRecordTypesResponseActionConfiguration
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1605
      start: 1597
    functionDepth: 2
    functionLinenumber: 1597
    functionLinenumberEnd: 1605
    functionName: dnsdist::rust::settings::getClearRecordTypesResponseAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc
    functionUses: 0
    functionsReached:
    - dnsdist::actions::getClearRecordTypesResponseAction
    - std::unordered_set::insert
    - std::move
    - dnsdist::rust::settings::newDNSResponseActionWrapper
    linkageType: ''
    returnType: std::shared_ptr<DNSResponseActionWrapper>
    signature: std::shared_ptr<DNSResponseActionWrapper> getClearRecordTypesResponseAction(const
      ClearRecordTypesResponseActionConfiguration& config)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::unordered_set::insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1611,1
    - Dst: QType
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1611,1
    - Dst: dnsdist::actions::getLimitTTLResponseAction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1614,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1614,1
    - Dst: dnsdist::rust::settings::newDNSResponseActionWrapper
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1615,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1615,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ' config'
    argTypes:
    - LimitTTLResponseActionConfiguration
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1616
      start: 1607
    functionDepth: 2
    functionLinenumber: 1607
    functionLinenumberEnd: 1616
    functionName: dnsdist::rust::settings::getLimitTTLResponseAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc
    functionUses: 0
    functionsReached:
    - std::move
    - dnsdist::rust::settings::newDNSResponseActionWrapper
    - std::unordered_set::insert
    - QType
    - dnsdist::actions::getLimitTTLResponseAction
    linkageType: ''
    returnType: std::shared_ptr<DNSResponseActionWrapper>
    signature: std::shared_ptr<DNSResponseActionWrapper> getLimitTTLResponseAction(const
      LimitTTLResponseActionConfiguration& config)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::actions::getLimitTTLResponseAction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1620,1
    - Dst: dnsdist::rust::settings::newDNSResponseActionWrapper
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1621,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1621,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' config'
    argTypes:
    - SetMinTTLResponseActionConfiguration
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1622
      start: 1618
    functionDepth: 2
    functionLinenumber: 1618
    functionLinenumberEnd: 1622
    functionName: dnsdist::rust::settings::getSetMinTTLResponseAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc
    functionUses: 0
    functionsReached:
    - std::move
    - dnsdist::rust::settings::newDNSResponseActionWrapper
    - dnsdist::actions::getLimitTTLResponseAction
    linkageType: ''
    returnType: std::shared_ptr<DNSResponseActionWrapper>
    signature: std::shared_ptr<DNSResponseActionWrapper> getSetMinTTLResponseAction(const
      SetMinTTLResponseActionConfiguration& config)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::actions::getLimitTTLResponseAction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1626,1
    - Dst: dnsdist::rust::settings::newDNSResponseActionWrapper
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1627,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1627,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' config'
    argTypes:
    - SetMaxTTLResponseActionConfiguration
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1628
      start: 1624
    functionDepth: 2
    functionLinenumber: 1624
    functionLinenumberEnd: 1628
    functionName: dnsdist::rust::settings::getSetMaxTTLResponseAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc
    functionUses: 0
    functionsReached:
    - std::move
    - dnsdist::rust::settings::newDNSResponseActionWrapper
    - dnsdist::actions::getLimitTTLResponseAction
    linkageType: ''
    returnType: std::shared_ptr<DNSResponseActionWrapper>
    signature: std::shared_ptr<DNSResponseActionWrapper> getSetMaxTTLResponseAction(const
      SetMaxTTLResponseActionConfiguration& config)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SuffixMatchNode::add
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1634,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1634,1
    - Dst: dnsdist::rust::settings::newDNSSelector
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1636,1
    - Dst: dnsdist::selectors::getQNameSuffixSelector
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1636,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ' config'
    argTypes:
    - QNameSuffixSelectorConfiguration
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1637
      start: 1630
    functionDepth: 2
    functionLinenumber: 1630
    functionLinenumberEnd: 1637
    functionName: dnsdist::rust::settings::getQNameSuffixSelector
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc
    functionUses: 0
    functionsReached:
    - std::string
    - dnsdist::rust::settings::newDNSSelector
    - dnsdist::selectors::getQNameSuffixSelector
    - SuffixMatchNode::add
    linkageType: ''
    returnType: std::shared_ptr<DNSSelector>
    signature: std::shared_ptr<DNSSelector> getQNameSuffixSelector(const QNameSuffixSelectorConfiguration&
      config)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSNameSet::emplace
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1643,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1643,1
    - Dst: dnsdist::rust::settings::newDNSSelector
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1645,1
    - Dst: dnsdist::selectors::getQNameSetSelector
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1645,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ' config'
    argTypes:
    - QNameSetSelectorConfiguration
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1646
      start: 1639
    functionDepth: 2
    functionLinenumber: 1639
    functionLinenumberEnd: 1646
    functionName: dnsdist::rust::settings::getQNameSetSelector
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc
    functionUses: 0
    functionsReached:
    - dnsdist::selectors::getQNameSetSelector
    - std::string
    - dnsdist::rust::settings::newDNSSelector
    - DNSNameSet::emplace
    linkageType: ''
    returnType: std::shared_ptr<DNSSelector>
    signature: std::shared_ptr<DNSSelector> getQNameSetSelector(const QNameSetSelectorConfiguration&
      config)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::rust::settings::newDNSSelector
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1650,1
    - Dst: dnsdist::selectors::getQNameSelector
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1650,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1650,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1650,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' config'
    argTypes:
    - QNameSelectorConfiguration
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1651
      start: 1648
    functionDepth: 2
    functionLinenumber: 1648
    functionLinenumberEnd: 1651
    functionName: dnsdist::rust::settings::getQNameSelector
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc
    functionUses: 0
    functionsReached:
    - dnsdist::selectors::getQNameSelector
    - dnsdist::rust::settings::newDNSSelector
    - std::string
    - DNSName
    linkageType: ''
    returnType: std::shared_ptr<DNSSelector>
    signature: std::shared_ptr<DNSSelector> getQNameSelector(const QNameSelectorConfiguration&
      config)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: netmask_group_name::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1656,1
    - Dst: dnsdist::configuration::yaml::getRegisteredTypeByName<NetmaskGroup>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1657,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1657,1
    - Dst: std::make_shared<NetmaskGroup>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1660,1
    - Dst: std::shared_ptr::addMask
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1663,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1663,1
    - Dst: dnsdist::selectors::getNetmaskGroupSelector
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1665,1
    - Dst: dnsdist::rust::settings::newDNSSelector
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1666,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1666,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - ' config'
    argTypes:
    - NetmaskGroupSelectorConfiguration
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1667
      start: 1653
    functionDepth: 2
    functionLinenumber: 1653
    functionLinenumberEnd: 1667
    functionName: dnsdist::rust::settings::getNetmaskGroupSelector
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc
    functionUses: 0
    functionsReached:
    - std::move
    - dnsdist::rust::settings::newDNSSelector
    - dnsdist::selectors::getNetmaskGroupSelector
    - std::shared_ptr::addMask
    - dnsdist::configuration::yaml::getRegisteredTypeByName<NetmaskGroup>
    - std::string
    - std::make_shared<NetmaskGroup>
    - netmask_group_name::empty
    linkageType: ''
    returnType: std::shared_ptr<DNSSelector>
    signature: std::shared_ptr<DNSSelector> getNetmaskGroupSelector(const NetmaskGroupSelectorConfiguration&
      config)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::configuration::yaml::getRegisteredTypeByName<KeyValueStore>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1672,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1672,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1674,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1674,1
    - Dst: dnsdist::configuration::yaml::getRegisteredTypeByName<KeyValueLookupKey>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1676,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1676,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1678,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1678,1
    - Dst: dnsdist::actions::getKeyValueStoreLookupAction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1680,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1680,1
    - Dst: dnsdist::rust::settings::newDNSActionWrapper
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1681,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1681,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1683,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 9
    argCount: 1
    argNames:
    - ' config'
    argTypes:
    - KeyValueStoreLookupActionConfiguration
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1685
      start: 1669
    functionDepth: 2
    functionLinenumber: 1669
    functionLinenumberEnd: 1685
    functionName: dnsdist::rust::settings::getKeyValueStoreLookupAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc
    functionUses: 0
    functionsReached:
    - std::move
    - dnsdist::configuration::yaml::getRegisteredTypeByName<KeyValueLookupKey>
    - std::runtime_error
    - dnsdist::rust::settings::newDNSActionWrapper
    - dnsdist::actions::getKeyValueStoreLookupAction
    - dnsdist::configuration::yaml::getRegisteredTypeByName<KeyValueStore>
    - std::string
    linkageType: ''
    returnType: std::shared_ptr<DNSActionWrapper>
    signature: std::shared_ptr<DNSActionWrapper> getKeyValueStoreLookupAction([[maybe_unused]]
      const KeyValueStoreLookupActionConfiguration& config)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::configuration::yaml::getRegisteredTypeByName<KeyValueStore>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1690,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1690,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1692,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1692,1
    - Dst: dnsdist::configuration::yaml::getRegisteredTypeByName<KeyValueLookupKey>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1694,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1694,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1696,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1696,1
    - Dst: dnsdist::actions::getKeyValueStoreRangeLookupAction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1698,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1698,1
    - Dst: dnsdist::rust::settings::newDNSActionWrapper
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1699,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1699,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1701,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 9
    argCount: 1
    argNames:
    - ' config'
    argTypes:
    - KeyValueStoreRangeLookupActionConfiguration
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1703
      start: 1687
    functionDepth: 2
    functionLinenumber: 1687
    functionLinenumberEnd: 1703
    functionName: dnsdist::rust::settings::getKeyValueStoreRangeLookupAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc
    functionUses: 0
    functionsReached:
    - std::move
    - dnsdist::configuration::yaml::getRegisteredTypeByName<KeyValueLookupKey>
    - std::runtime_error
    - dnsdist::rust::settings::newDNSActionWrapper
    - dnsdist::actions::getKeyValueStoreRangeLookupAction
    - dnsdist::configuration::yaml::getRegisteredTypeByName<KeyValueStore>
    - std::string
    linkageType: ''
    returnType: std::shared_ptr<DNSActionWrapper>
    signature: std::shared_ptr<DNSActionWrapper> getKeyValueStoreRangeLookupAction([[maybe_unused]]
      const KeyValueStoreRangeLookupActionConfiguration& config)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::configuration::yaml::getRegisteredTypeByName<KeyValueStore>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1708,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1708,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1710,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1710,1
    - Dst: dnsdist::configuration::yaml::getRegisteredTypeByName<KeyValueLookupKey>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1712,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1712,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1714,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1714,1
    - Dst: dnsdist::selectors::getKeyValueStoreLookupSelector
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1716,1
    - Dst: dnsdist::rust::settings::newDNSSelector
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1717,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1717,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1719,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 9
    argCount: 1
    argNames:
    - ' config'
    argTypes:
    - KeyValueStoreLookupSelectorConfiguration
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1721
      start: 1705
    functionDepth: 2
    functionLinenumber: 1705
    functionLinenumberEnd: 1721
    functionName: dnsdist::rust::settings::getKeyValueStoreLookupSelector
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc
    functionUses: 0
    functionsReached:
    - std::move
    - dnsdist::rust::settings::newDNSSelector
    - dnsdist::configuration::yaml::getRegisteredTypeByName<KeyValueLookupKey>
    - std::runtime_error
    - dnsdist::configuration::yaml::getRegisteredTypeByName<KeyValueStore>
    - dnsdist::selectors::getKeyValueStoreLookupSelector
    - std::string
    linkageType: ''
    returnType: std::shared_ptr<DNSSelector>
    signature: std::shared_ptr<DNSSelector> getKeyValueStoreLookupSelector([[maybe_unused]]
      const KeyValueStoreLookupSelectorConfiguration& config)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::configuration::yaml::getRegisteredTypeByName<KeyValueStore>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1726,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1726,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1728,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1728,1
    - Dst: dnsdist::configuration::yaml::getRegisteredTypeByName<KeyValueLookupKey>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1730,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1730,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1732,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1732,1
    - Dst: dnsdist::selectors::getKeyValueStoreRangeLookupSelector
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1734,1
    - Dst: dnsdist::rust::settings::newDNSSelector
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1735,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1735,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1737,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 9
    argCount: 1
    argNames:
    - ' config'
    argTypes:
    - KeyValueStoreRangeLookupSelectorConfiguration
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1739
      start: 1723
    functionDepth: 2
    functionLinenumber: 1723
    functionLinenumberEnd: 1739
    functionName: dnsdist::rust::settings::getKeyValueStoreRangeLookupSelector
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc
    functionUses: 0
    functionsReached:
    - std::move
    - dnsdist::rust::settings::newDNSSelector
    - dnsdist::configuration::yaml::getRegisteredTypeByName<KeyValueLookupKey>
    - dnsdist::selectors::getKeyValueStoreRangeLookupSelector
    - std::runtime_error
    - dnsdist::configuration::yaml::getRegisteredTypeByName<KeyValueStore>
    - std::string
    linkageType: ''
    returnType: std::shared_ptr<DNSSelector>
    signature: std::shared_ptr<DNSSelector> getKeyValueStoreRangeLookupSelector([[maybe_unused]]
      const KeyValueStoreRangeLookupSelectorConfiguration& config)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::configuration::yaml::getRegisteredTypeByName<TimedIPSetRule>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1743,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1743,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1745,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1745,1
    - Dst: std::dynamic_pointer_cast<DNSRule>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1747,1
    - Dst: dnsdist::rust::settings::newDNSSelector
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1748,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1748,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - ' config'
    argTypes:
    - TimedIPSetSelectorConfiguration
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1749
      start: 1741
    functionDepth: 2
    functionLinenumber: 1741
    functionLinenumberEnd: 1749
    functionName: dnsdist::rust::settings::getTimedIPSetSelector
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc
    functionUses: 0
    functionsReached:
    - std::move
    - dnsdist::rust::settings::newDNSSelector
    - std::runtime_error
    - std::dynamic_pointer_cast<DNSRule>
    - std::string
    - dnsdist::configuration::yaml::getRegisteredTypeByName<TimedIPSetRule>
    linkageType: ''
    returnType: std::shared_ptr<DNSSelector>
    signature: std::shared_ptr<DNSSelector> getTimedIPSetSelector(const TimedIPSetSelectorConfiguration&
      config)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1754,1
    - Dst: dnsdist::configuration::yaml::getRegisteredTypeByName<RemoteLoggerInterface>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1756,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1756,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1758,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1758,1
    - Dst: dnsdist::configuration::yaml::getLuaFunctionFromConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1762,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1763,1
    - Dst: dnsdist::actions::getDnstapLogAction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1765,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1765,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1765,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1765,1
    - Dst: std::optional<dnsdist::actions::DnstapAlterFunction>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1765,1
    - Dst: dnsdist::rust::settings::newDNSActionWrapper
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1766,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1766,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 9
    argCount: 1
    argNames:
    - ' config'
    argTypes:
    - DnstapLogActionConfiguration
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1768
      start: 1751
    functionDepth: 2
    functionLinenumber: 1751
    functionLinenumberEnd: 1768
    functionName: dnsdist::rust::settings::getDnstapLogAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc
    functionUses: 0
    functionsReached:
    - std::move
    - dnsdist::rust::settings::newDNSActionWrapper
    - std::runtime_error
    - dnsdist::configuration::yaml::getRegisteredTypeByName<RemoteLoggerInterface>
    - dnsdist::actions::getDnstapLogAction
    - dnsdist::configuration::yaml::getLuaFunctionFromConfiguration
    - std::optional<dnsdist::actions::DnstapAlterFunction>
    - std::string
    linkageType: ''
    returnType: std::shared_ptr<DNSActionWrapper>
    signature: std::shared_ptr<DNSActionWrapper> getDnstapLogAction([[maybe_unused]]
      const DnstapLogActionConfiguration& config)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1773,1
    - Dst: dnsdist::configuration::yaml::getRegisteredTypeByName<RemoteLoggerInterface>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1775,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1775,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1777,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1777,1
    - Dst: dnsdist::configuration::yaml::getLuaFunctionFromConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1781,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1782,1
    - Dst: dnsdist::actions::getDnstapLogResponseAction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1784,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1784,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1784,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1784,1
    - Dst: std::optional<dnsdist::actions::DnstapAlterResponseFunction>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1784,1
    - Dst: dnsdist::rust::settings::newDNSResponseActionWrapper
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1785,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1785,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 9
    argCount: 1
    argNames:
    - ' config'
    argTypes:
    - DnstapLogResponseActionConfiguration
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1787
      start: 1770
    functionDepth: 2
    functionLinenumber: 1770
    functionLinenumberEnd: 1787
    functionName: dnsdist::rust::settings::getDnstapLogResponseAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc
    functionUses: 0
    functionsReached:
    - std::move
    - std::runtime_error
    - dnsdist::configuration::yaml::getRegisteredTypeByName<RemoteLoggerInterface>
    - dnsdist::rust::settings::newDNSResponseActionWrapper
    - std::optional<dnsdist::actions::DnstapAlterResponseFunction>
    - dnsdist::configuration::yaml::getLuaFunctionFromConfiguration
    - dnsdist::actions::getDnstapLogResponseAction
    - std::string
    linkageType: ''
    returnType: std::shared_ptr<DNSResponseActionWrapper>
    signature: std::shared_ptr<DNSResponseActionWrapper> getDnstapLogResponseAction([[maybe_unused]]
      const DnstapLogResponseActionConfiguration& config)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1792,1
    - Dst: dnsdist::configuration::yaml::getRegisteredTypeByName<RemoteLoggerInterface>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1796,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1796,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1798,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1798,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1800,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1800,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1804,1
    - Dst: dnsdist::actions::getSetTraceAction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1812,1
    - Dst: dnsdist::rust::settings::newDNSActionWrapper
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1814,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1814,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 8
    argCount: 1
    argNames:
    - ' config'
    argTypes:
    - SetTraceActionConfiguration
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1816
      start: 1789
    functionDepth: 2
    functionLinenumber: 1789
    functionLinenumberEnd: 1816
    functionName: dnsdist::rust::settings::getSetTraceAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc
    functionUses: 0
    functionsReached:
    - std::vector::push_back
    - std::move
    - dnsdist::actions::getSetTraceAction
    - dnsdist::rust::settings::newDNSActionWrapper
    - std::runtime_error
    - dnsdist::configuration::yaml::getRegisteredTypeByName<RemoteLoggerInterface>
    - std::string
    linkageType: ''
    returnType: std::shared_ptr<DNSActionWrapper>
    signature: std::shared_ptr<DNSActionWrapper> getSetTraceAction(const SetTraceActionConfiguration&
      config)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1821,1
    - Dst: dnsdist::configuration::yaml::getRegisteredTypeByName<RemoteLoggerInterface>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1823,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1823,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1825,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1825,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1828,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1829,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1830,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1831,1
    - Dst: dnsdist::actions::RemoteLogActionConfiguration::metas::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1833,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1833,1
    - Dst: ProtoBufMetaKey
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1833,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1833,1
    - Dst: export_tags::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1835,1
    - Dst: std::unordered_set<std::string>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1836,1
    - Dst: dnsdist::actions::RemoteLogActionConfiguration::tagsToExport::emplace
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1838,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1838,1
    - Dst: export_tags_prefixes::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1841,1
    - Dst: dnsdist::actions::RemoteLogActionConfiguration::tagsPrefixesToExport::emplace
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1843,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1843,1
    - Dst: dnsdist::configuration::yaml::getLuaFunctionFromConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1847,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1848,1
    - Dst: dnsdist::actions::getRemoteLogAction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1853,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1853,1
    - Dst: dnsdist::rust::settings::newDNSActionWrapper
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1854,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1854,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 27
    argCount: 1
    argNames:
    - ' config'
    argTypes:
    - RemoteLogActionConfiguration
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1856
      start: 1818
    functionDepth: 2
    functionLinenumber: 1818
    functionLinenumberEnd: 1856
    functionName: dnsdist::rust::settings::getRemoteLogAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc
    functionUses: 0
    functionsReached:
    - dnsdist::actions::RemoteLogActionConfiguration::tagsPrefixesToExport::emplace
    - std::move
    - dnsdist::rust::settings::newDNSActionWrapper
    - std::runtime_error
    - dnsdist::configuration::yaml::getRegisteredTypeByName<RemoteLoggerInterface>
    - dnsdist::actions::RemoteLogActionConfiguration::metas::emplace_back
    - ProtoBufMetaKey
    - export_tags::empty
    - export_tags_prefixes::empty
    - dnsdist::configuration::yaml::getLuaFunctionFromConfiguration
    - std::unordered_set<std::string>
    - std::string
    - dnsdist::actions::getRemoteLogAction
    - dnsdist::actions::RemoteLogActionConfiguration::tagsToExport::emplace
    linkageType: ''
    returnType: std::shared_ptr<DNSActionWrapper>
    signature: std::shared_ptr<DNSActionWrapper> getRemoteLogAction(const RemoteLogActionConfiguration&
      config)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1861,1
    - Dst: dnsdist::configuration::yaml::getRegisteredTypeByName<RemoteLoggerInterface>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1863,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1863,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1865,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1865,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1868,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1869,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1870,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1871,1
    - Dst: dnsdist::actions::RemoteLogActionConfiguration::metas::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1874,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1874,1
    - Dst: ProtoBufMetaKey
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1874,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1874,1
    - Dst: export_tags::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1876,1
    - Dst: std::unordered_set<std::string>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1877,1
    - Dst: dnsdist::actions::RemoteLogActionConfiguration::tagsToExport::emplace
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1879,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1879,1
    - Dst: export_tags_prefixes::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1882,1
    - Dst: dnsdist::actions::RemoteLogActionConfiguration::tagsPrefixesToExport::emplace
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1884,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1884,1
    - Dst: export_extended_errors_to_meta::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1887,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1888,1
    - Dst: dnsdist::configuration::yaml::getLuaFunctionFromConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1891,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1892,1
    - Dst: dnsdist::actions::getRemoteLogResponseAction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1898,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1898,1
    - Dst: dnsdist::rust::settings::newDNSResponseActionWrapper
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1899,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1899,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 32
    argCount: 1
    argNames:
    - ' config'
    argTypes:
    - RemoteLogResponseActionConfiguration
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1901
      start: 1858
    functionDepth: 2
    functionLinenumber: 1858
    functionLinenumberEnd: 1901
    functionName: dnsdist::rust::settings::getRemoteLogResponseAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc
    functionUses: 0
    functionsReached:
    - dnsdist::actions::RemoteLogActionConfiguration::tagsPrefixesToExport::emplace
    - std::move
    - dnsdist::actions::getRemoteLogResponseAction
    - std::runtime_error
    - dnsdist::configuration::yaml::getRegisteredTypeByName<RemoteLoggerInterface>
    - dnsdist::actions::RemoteLogActionConfiguration::metas::emplace_back
    - ProtoBufMetaKey
    - export_tags::empty
    - export_extended_errors_to_meta::empty
    - dnsdist::rust::settings::newDNSResponseActionWrapper
    - export_tags_prefixes::empty
    - dnsdist::configuration::yaml::getLuaFunctionFromConfiguration
    - std::unordered_set<std::string>
    - std::string
    - dnsdist::actions::RemoteLogActionConfiguration::tagsToExport::emplace
    linkageType: ''
    returnType: std::shared_ptr<DNSResponseActionWrapper>
    signature: std::shared_ptr<DNSResponseActionWrapper> getRemoteLogResponseAction(const
      RemoteLogResponseActionConfiguration& config)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1906,1
    - Dst: std::shared_ptr<RemoteLoggerInterface>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1909,1
    - Dst: dnsdist::configuration::yaml::registerType<RemoteLoggerInterface>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1910,1
    - Dst: std::vector::reserve
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1916,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1918,1
    - Dst: std::make_shared<RemoteLogger>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1918,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1918,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1918,1
    - Dst: std::shared_ptr<RemoteLoggerInterface>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1920,1
    - Dst: std::make_shared<RemoteLoggerPool>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1920,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1920,1
    - Dst: std::shared_ptr<RemoteLoggerInterface>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1923,1
    - Dst: std::make_shared<RemoteLogger>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1923,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1923,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1923,1
    - Dst: dnsdist::configuration::yaml::registerType<RemoteLoggerInterface>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1925,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 1
    argNames:
    - ' config'
    argTypes:
    - ProtobufLoggerConfiguration
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1927
      start: 1903
    functionDepth: 0
    functionLinenumber: 1903
    functionLinenumberEnd: 1927
    functionName: dnsdist::rust::settings::registerProtobufLogger
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc
    functionUses: 0
    functionsReached:
    - std::vector::push_back
    - std::move
    - std::runtime_error
    - std::make_shared<RemoteLogger>
    - std::vector::reserve
    - std::shared_ptr<RemoteLoggerInterface>
    - std::make_shared<RemoteLoggerPool>
    - std::string
    - dnsdist::configuration::yaml::registerType<RemoteLoggerInterface>
    - ComboAddress
    linkageType: ''
    returnType: void
    signature: void registerProtobufLogger(const ProtobufLoggerConfiguration& config)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1932,1
    - Dst: boost::to_lower_copy
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1934,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1934,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1943,1
    - Dst: std::shared_ptr<RemoteLoggerInterface>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1947,1
    - Dst: dnsdist::configuration::yaml::registerType<RemoteLoggerInterface>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1948,1
    - Dst: std::vector::reserve
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1963,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1965,1
    - Dst: std::make_shared<FrameStreamLogger>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1965,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1965,1
    - Dst: std::shared_ptr<RemoteLoggerInterface>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1967,1
    - Dst: std::make_shared<RemoteLoggerPool>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1967,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1967,1
    - Dst: std::shared_ptr<RemoteLoggerInterface>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1970,1
    - Dst: std::make_shared<FrameStreamLogger>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1970,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1970,1
    - Dst: dnsdist::configuration::yaml::registerType<RemoteLoggerInterface>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1972,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 30
    argCount: 1
    argNames:
    - ' config'
    argTypes:
    - DnstapLoggerConfiguration
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1974
      start: 1929
    functionDepth: 0
    functionLinenumber: 1929
    functionLinenumberEnd: 1974
    functionName: dnsdist::rust::settings::registerDnstapLogger
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc
    functionUses: 0
    functionsReached:
    - std::vector::push_back
    - std::move
    - std::runtime_error
    - std::make_shared<FrameStreamLogger>
    - std::vector::reserve
    - std::shared_ptr<RemoteLoggerInterface>
    - boost::to_lower_copy
    - std::make_shared<RemoteLoggerPool>
    - std::string
    - dnsdist::configuration::yaml::registerType<RemoteLoggerInterface>
    linkageType: ''
    returnType: void
    signature: void registerDnstapLogger([[maybe_unused]] const DnstapLoggerConfiguration&
      config)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::shared_ptr<KeyValueStore>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1982,1
    - Dst: std::make_shared<LMDBKVStore>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1982,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1982,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1982,1
    - Dst: std::shared_ptr<KeyValueStore>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1982,1
    - Dst: dnsdist::configuration::yaml::registerType<KeyValueStore>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1983,1
    - Dst: std::shared_ptr<KeyValueStore>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1988,1
    - Dst: std::make_shared<CDBKVStore>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1988,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1988,1
    - Dst: std::shared_ptr<KeyValueStore>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1988,1
    - Dst: dnsdist::configuration::yaml::registerType<KeyValueStore>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1989,1
    - Dst: std::shared_ptr<KeyValueLookupKey>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1993,1
    - Dst: std::make_shared<KeyValueLookupKeySourceIP>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1993,1
    - Dst: std::shared_ptr<KeyValueLookupKey>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1993,1
    - Dst: dnsdist::configuration::yaml::registerType<KeyValueLookupKey>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1994,1
    - Dst: std::shared_ptr<KeyValueLookupKey>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1997,1
    - Dst: std::make_shared<KeyValueLookupKeyQName>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1997,1
    - Dst: std::shared_ptr<KeyValueLookupKey>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1997,1
    - Dst: dnsdist::configuration::yaml::registerType<KeyValueLookupKey>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1998,1
    - Dst: std::shared_ptr<KeyValueLookupKey>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:2001,1
    - Dst: std::make_shared<KeyValueLookupKeySuffix>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:2001,1
    - Dst: std::shared_ptr<KeyValueLookupKey>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:2001,1
    - Dst: dnsdist::configuration::yaml::registerType<KeyValueLookupKey>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:2002,1
    - Dst: std::shared_ptr<KeyValueLookupKey>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:2005,1
    - Dst: std::make_shared<KeyValueLookupKeyTag>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:2005,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:2005,1
    - Dst: std::shared_ptr<KeyValueLookupKey>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:2005,1
    - Dst: dnsdist::configuration::yaml::registerType<KeyValueLookupKey>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:2006,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 13
    argCount: 1
    argNames:
    - ' config'
    argTypes:
    - KeyValueStoresConfiguration
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2009
      start: 1976
    functionDepth: 0
    functionLinenumber: 1976
    functionLinenumberEnd: 2009
    functionName: dnsdist::rust::settings::registerKVSObjects
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc
    functionUses: 0
    functionsReached:
    - std::make_shared<LMDBKVStore>
    - std::shared_ptr<KeyValueLookupKey>
    - std::make_shared<KeyValueLookupKeySourceIP>
    - dnsdist::configuration::yaml::registerType<KeyValueLookupKey>
    - std::make_shared<KeyValueLookupKeySuffix>
    - std::make_shared<CDBKVStore>
    - std::shared_ptr<KeyValueStore>
    - std::make_shared<KeyValueLookupKeyQName>
    - std::string
    - dnsdist::configuration::yaml::registerType<KeyValueStore>
    - std::make_shared<KeyValueLookupKeyTag>
    linkageType: ''
    returnType: void
    signature: void registerKVSObjects([[maybe_unused]] const KeyValueStoresConfiguration&
      config)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::configuration::yaml::getRegisteredTypeByName<NetmaskGroup>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:2015,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:2015,1
    - Dst: std::make_shared<NetmaskGroup>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:2017,1
    - Dst: auto::addMask
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:2022,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:2022,1
    - Dst: dnsdist::configuration::yaml::registerType<NetmaskGroup>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:2025,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 1
    argNames:
    - ' nmgs'
    argTypes:
    - ::rust::Vec<NetmaskGroupConfiguration>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2028
      start: 2011
    functionDepth: 0
    functionLinenumber: 2011
    functionLinenumberEnd: 2028
    functionName: dnsdist::rust::settings::registerNMGObjects
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc
    functionUses: 0
    functionsReached:
    - auto::addMask
    - dnsdist::configuration::yaml::getRegisteredTypeByName<NetmaskGroup>
    - std::string
    - std::make_shared<NetmaskGroup>
    - dnsdist::configuration::yaml::registerType<NetmaskGroup>
    linkageType: ''
    returnType: void
    signature: void registerNMGObjects(const ::rust::Vec<NetmaskGroupConfiguration>&
      nmgs)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::configuration::yaml::getRegisteredTypeByName<TimedIPSetRule>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:2033,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:2033,1
    - Dst: std::make_shared<TimedIPSetRule>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:2035,1
    - Dst: dnsdist::configuration::yaml::registerType<TimedIPSetRule>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:2036,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - ' sets'
    argTypes:
    - ::rust::Vec<TimedIpSetConfiguration>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2039
      start: 2030
    functionDepth: 0
    functionLinenumber: 2030
    functionLinenumberEnd: 2039
    functionName: dnsdist::rust::settings::registerTimedIPSetObjects
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc
    functionUses: 0
    functionsReached:
    - std::string
    - std::make_shared<TimedIPSetRule>
    - dnsdist::configuration::yaml::getRegisteredTypeByName<TimedIPSetRule>
    - dnsdist::configuration::yaml::registerType<TimedIPSetRule>
    linkageType: ''
    returnType: void
    signature: void registerTimedIPSetObjects(const ::rust::Vec<TimedIpSetConfiguration>&
      sets)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::configuration::yaml::getLuaFunctionFromConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:2044,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:2045,1
    - Dst: dnsdist::selectors::getLuaSelector
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:2047,1
    - Dst: dnsdist::rust::settings::newDNSSelector
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:2048,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:2048,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - ' config'
    argTypes:
    - LuaSelectorConfiguration
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2049
      start: 2041
    functionDepth: 2
    functionLinenumber: 2041
    functionLinenumberEnd: 2049
    functionName: dnsdist::rust::settings::getLuaSelector
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc
    functionUses: 0
    functionsReached:
    - std::move
    - dnsdist::rust::settings::newDNSSelector
    - dnsdist::selectors::getLuaSelector
    - std::runtime_error
    - dnsdist::configuration::yaml::getLuaFunctionFromConfiguration
    linkageType: ''
    returnType: std::shared_ptr<DNSSelector>
    signature: std::shared_ptr<DNSSelector> getLuaSelector(const LuaSelectorConfiguration&
      config)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::configuration::yaml::getLuaFunctionFromConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:2054,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:2055,1
    - Dst: dnsdist::selectors::getLuaFFISelector
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:2057,1
    - Dst: dnsdist::rust::settings::newDNSSelector
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:2058,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:2058,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - ' config'
    argTypes:
    - LuaFFISelectorConfiguration
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2059
      start: 2051
    functionDepth: 2
    functionLinenumber: 2051
    functionLinenumberEnd: 2059
    functionName: dnsdist::rust::settings::getLuaFFISelector
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc
    functionUses: 0
    functionsReached:
    - std::move
    - dnsdist::rust::settings::newDNSSelector
    - dnsdist::selectors::getLuaFFISelector
    - std::runtime_error
    - dnsdist::configuration::yaml::getLuaFunctionFromConfiguration
    linkageType: ''
    returnType: std::shared_ptr<DNSSelector>
    signature: std::shared_ptr<DNSSelector> getLuaFFISelector(const LuaFFISelectorConfiguration&
      config)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::vector::reserve
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:2064,1
    - Dst: selectors::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:2064,1
    - Dst: std::vector::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:2066,1
    - Dst: dnsdist::selectors::getAndSelector
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:2068,1
    - Dst: dnsdist::rust::settings::newDNSSelector
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:2069,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:2069,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ' config'
    argTypes:
    - AndSelectorConfiguration
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2070
      start: 2061
    functionDepth: 2
    functionLinenumber: 2061
    functionLinenumberEnd: 2070
    functionName: dnsdist::rust::settings::getAndSelector
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc
    functionUses: 0
    functionsReached:
    - std::move
    - dnsdist::rust::settings::newDNSSelector
    - std::vector::emplace_back
    - std::vector::reserve
    - selectors::size
    - dnsdist::selectors::getAndSelector
    linkageType: ''
    returnType: std::shared_ptr<DNSSelector>
    signature: std::shared_ptr<DNSSelector> getAndSelector(const AndSelectorConfiguration&
      config)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::vector::reserve
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:2075,1
    - Dst: selectors::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:2075,1
    - Dst: std::vector::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:2077,1
    - Dst: dnsdist::selectors::getOrSelector
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:2079,1
    - Dst: dnsdist::rust::settings::newDNSSelector
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:2080,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:2080,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ' config'
    argTypes:
    - OrSelectorConfiguration
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2081
      start: 2072
    functionDepth: 2
    functionLinenumber: 2072
    functionLinenumberEnd: 2081
    functionName: dnsdist::rust::settings::getOrSelector
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc
    functionUses: 0
    functionsReached:
    - std::move
    - dnsdist::rust::settings::newDNSSelector
    - std::vector::emplace_back
    - dnsdist::selectors::getOrSelector
    - std::vector::reserve
    - selectors::size
    linkageType: ''
    returnType: std::shared_ptr<DNSSelector>
    signature: std::shared_ptr<DNSSelector> getOrSelector(const OrSelectorConfiguration&
      config)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::selectors::getNotSelector
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:2085,1
    - Dst: dnsdist::rust::settings::newDNSSelector
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:2086,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:2086,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' config'
    argTypes:
    - NotSelectorConfiguration
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2087
      start: 2083
    functionDepth: 2
    functionLinenumber: 2083
    functionLinenumberEnd: 2087
    functionName: dnsdist::rust::settings::getNotSelector
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc
    functionUses: 0
    functionsReached:
    - dnsdist::selectors::getNotSelector
    - dnsdist::rust::settings::newDNSSelector
    - std::move
    linkageType: ''
    returnType: std::shared_ptr<DNSSelector>
    signature: std::shared_ptr<DNSSelector> getNotSelector(const NotSelectorConfiguration&
      config)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::configuration::yaml::getRegisteredTypeByName<DNSSelector>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:2091,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:2093,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:2093,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - ' config'
    argTypes:
    - ByNameSelectorConfiguration
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2096
      start: 2089
    functionDepth: 0
    functionLinenumber: 2089
    functionLinenumberEnd: 2096
    functionName: dnsdist::rust::settings::getByNameSelector
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc
    functionUses: 0
    functionsReached:
    - std::string
    - dnsdist::configuration::yaml::getRegisteredTypeByName<DNSSelector>
    - std::runtime_error
    linkageType: ''
    returnType: std::shared_ptr<DNSSelector>
    signature: std::shared_ptr<DNSSelector> getByNameSelector(const ByNameSelectorConfiguration&
      config)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<DNSSelector>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1421,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1422,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1423,1
    - Dst: dnsdist::configuration::yaml::registerType
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1424,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - ' rule'
    - ' name'
    argTypes:
    - std::shared_ptr<DNSRule>
    - ::rust::String
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1426
      start: 1419
    functionDepth: 1
    functionLinenumber: 1419
    functionLinenumberEnd: 1426
    functionName: dnsdist::rust::settings::newDNSSelector
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc
    functionUses: 12
    functionsReached:
    - std::string
    - std::move
    - std::make_shared<DNSSelector>
    - dnsdist::configuration::yaml::registerType
    linkageType: ''
    returnType: std::shared_ptr<DNSSelector>
    signature: std::shared_ptr<DNSSelector> newDNSSelector(std::shared_ptr<DNSRule>&&
      rule, const ::rust::String& name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<DNSActionWrapper>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1430,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1431,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1432,1
    - Dst: dnsdist::configuration::yaml::registerType
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1433,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - ' action'
    - ' name'
    argTypes:
    - std::shared_ptr<DNSAction>
    - ::rust::String
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1435
      start: 1428
    functionDepth: 1
    functionLinenumber: 1428
    functionLinenumberEnd: 1435
    functionName: dnsdist::rust::settings::newDNSActionWrapper
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc
    functionUses: 13
    functionsReached:
    - std::make_shared<DNSActionWrapper>
    - std::move
    - dnsdist::configuration::yaml::registerType
    - std::string
    linkageType: ''
    returnType: std::shared_ptr<DNSActionWrapper>
    signature: std::shared_ptr<DNSActionWrapper> newDNSActionWrapper(std::shared_ptr<DNSAction>&&
      action, const ::rust::String& name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<DNSResponseActionWrapper>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1439,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1440,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1441,1
    - Dst: dnsdist::configuration::yaml::registerType
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1442,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - ' action'
    - ' name'
    argTypes:
    - std::shared_ptr<DNSResponseAction>
    - ::rust::String
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1444
      start: 1437
    functionDepth: 1
    functionLinenumber: 1437
    functionLinenumberEnd: 1444
    functionName: dnsdist::rust::settings::newDNSResponseActionWrapper
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc
    functionUses: 8
    functionsReached:
    - std::string
    - std::move
    - dnsdist::configuration::yaml::registerType
    - std::make_shared<DNSResponseActionWrapper>
    linkageType: ''
    returnType: std::shared_ptr<DNSResponseActionWrapper>
    signature: std::shared_ptr<DNSResponseActionWrapper> newDNSResponseActionWrapper(std::shared_ptr<DNSResponseAction>&&
      action, const ::rust::String& name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - ' rustConfig'
    argTypes:
    - dnsdist::rust::settings::ResponseConfig
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1454
      start: 1446
    functionDepth: 0
    functionLinenumber: 1446
    functionLinenumberEnd: 1454
    functionName: dnsdist::rust::settings::convertResponseConfig
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: dnsdist::ResponseConfig
    signature: dnsdist::ResponseConfig convertResponseConfig(const dnsdist::rust::settings::ResponseConfig&
      rustConfig)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - ' soa'
    argTypes:
    - dnsdist::rust::settings::SOAParams
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1465
      start: 1456
    functionDepth: 0
    functionLinenumber: 1456
    functionLinenumberEnd: 1465
    functionName: dnsdist::rust::settings::convertSOAParams
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: dnsdist::actions::SOAParams
    signature: dnsdist::actions::SOAParams convertSOAParams(const dnsdist::rust::settings::SOAParams&
      soa)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ::SVCRecordParameters::mandatoryParams::insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1473,1
    - Dst: ::SVCRecordParameters::alpns::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1476,1
    - Dst: ::SVCRecordParameters::ipv4hints::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1479,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1479,1
    - Dst: ::SVCRecordParameters::ipv6hints::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1482,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1482,1
    - Dst: ::SVCRecordParameters::additionalParams::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1485,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1485,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1487,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1487,1
    - Dst: std::vector::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1494,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1494,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 20
    argCount: 1
    argNames:
    - ' rustParameters'
    argTypes:
    - ::rust::Vec<dnsdist::rust::settings::SVCRecordParameters>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1497
      start: 1467
    functionDepth: 1
    functionLinenumber: 1467
    functionLinenumberEnd: 1497
    functionName: dnsdist::rust::settings::convertSVCRecordParameters
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc
    functionUses: 0
    functionsReached:
    - std::move
    - ::SVCRecordParameters::additionalParams::emplace_back
    - std::vector::emplace_back
    - DNSName
    - ::SVCRecordParameters::ipv4hints::emplace_back
    - ::SVCRecordParameters::ipv6hints::emplace_back
    - ::SVCRecordParameters::alpns::emplace_back
    - ::SVCRecordParameters::mandatoryParams::insert
    - std::string
    linkageType: ''
    returnType: std::vector<::SVCRecordParameters>
    signature: std::vector<::SVCRecordParameters> convertSVCRecordParameters(const
      ::rust::Vec<dnsdist::rust::settings::SVCRecordParameters>& rustParameters)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::configuration::yaml::getLuaFunctionFromConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1502,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1503,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1503,1
    - Dst: dnsdist::actions::getLuaAction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1505,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1505,1
    - Dst: dnsdist::rust::settings::newDNSActionWrapper
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1506,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1506,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - ' config'
    argTypes:
    - LuaActionConfiguration
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1507
      start: 1499
    functionDepth: 2
    functionLinenumber: 1499
    functionLinenumberEnd: 1507
    functionName: dnsdist::rust::settings::getLuaAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc
    functionUses: 0
    functionsReached:
    - std::move
    - dnsdist::rust::settings::newDNSActionWrapper
    - std::runtime_error
    - dnsdist::actions::getLuaAction
    - dnsdist::configuration::yaml::getLuaFunctionFromConfiguration
    - std::string
    linkageType: ''
    returnType: std::shared_ptr<DNSActionWrapper>
    signature: std::shared_ptr<DNSActionWrapper> getLuaAction(const LuaActionConfiguration&
      config)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::configuration::yaml::getLuaFunctionFromConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1512,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1513,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1513,1
    - Dst: dnsdist::actions::getLuaFFIAction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1515,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1515,1
    - Dst: dnsdist::rust::settings::newDNSActionWrapper
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1516,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1516,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - ' config'
    argTypes:
    - LuaFFIActionConfiguration
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1517
      start: 1509
    functionDepth: 2
    functionLinenumber: 1509
    functionLinenumberEnd: 1517
    functionName: dnsdist::rust::settings::getLuaFFIAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc
    functionUses: 0
    functionsReached:
    - std::move
    - dnsdist::rust::settings::newDNSActionWrapper
    - std::runtime_error
    - dnsdist::configuration::yaml::getLuaFunctionFromConfiguration
    - std::string
    - dnsdist::actions::getLuaFFIAction
    linkageType: ''
    returnType: std::shared_ptr<DNSActionWrapper>
    signature: std::shared_ptr<DNSActionWrapper> getLuaFFIAction(const LuaFFIActionConfiguration&
      config)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::actions::getContinueAction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1521,1
    - Dst: dnsdist::rust::settings::newDNSActionWrapper
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1522,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1522,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' config'
    argTypes:
    - ContinueActionConfiguration
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1523
      start: 1519
    functionDepth: 2
    functionLinenumber: 1519
    functionLinenumberEnd: 1523
    functionName: dnsdist::rust::settings::getContinueAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc
    functionUses: 0
    functionsReached:
    - std::move
    - dnsdist::rust::settings::newDNSActionWrapper
    - dnsdist::actions::getContinueAction
    linkageType: ''
    returnType: std::shared_ptr<DNSActionWrapper>
    signature: std::shared_ptr<DNSActionWrapper> getContinueAction(const ContinueActionConfiguration&
      config)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::vector::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1529,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1529,1
    - Dst: dnsdist::actions::getSetProxyProtocolValuesAction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1531,1
    - Dst: dnsdist::rust::settings::newDNSActionWrapper
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1532,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1532,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ' config'
    argTypes:
    - SetProxyProtocolValuesActionConfiguration
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1533
      start: 1525
    functionDepth: 2
    functionLinenumber: 1525
    functionLinenumberEnd: 1533
    functionName: dnsdist::rust::settings::getSetProxyProtocolValuesAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc
    functionUses: 0
    functionsReached:
    - std::move
    - dnsdist::actions::getSetProxyProtocolValuesAction
    - dnsdist::rust::settings::newDNSActionWrapper
    - std::vector::emplace_back
    - std::string
    linkageType: ''
    returnType: std::shared_ptr<DNSActionWrapper>
    signature: std::shared_ptr<DNSActionWrapper> getSetProxyProtocolValuesAction(const
      SetProxyProtocolValuesActionConfiguration& config)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: response::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1537,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1538,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1538,1
    - Dst: dnsdist::actions::getSpoofAction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1540,1
    - Dst: PacketBuffer
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1540,1
    - Dst: response::data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1540,1
    - Dst: response::data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1540,1
    - Dst: response::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1540,1
    - Dst: dnsdist::rust::settings::newDNSActionWrapper
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1541,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1541,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - ' config'
    argTypes:
    - SpoofPacketActionConfiguration
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1542
      start: 1535
    functionDepth: 2
    functionLinenumber: 1535
    functionLinenumberEnd: 1542
    functionName: dnsdist::rust::settings::getSpoofPacketAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc
    functionUses: 0
    functionsReached:
    - std::move
    - response::data
    - dnsdist::rust::settings::newDNSActionWrapper
    - std::runtime_error
    - dnsdist::actions::getSpoofAction
    - PacketBuffer
    - response::size
    - std::string
    linkageType: ''
    returnType: std::shared_ptr<DNSActionWrapper>
    signature: std::shared_ptr<DNSActionWrapper> getSpoofPacketAction(const SpoofPacketActionConfiguration&
      config)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::vector::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1548,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1548,1
    - Dst: dnsdist::actions::getSpoofAction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1550,1
    - Dst: dnsdist::rust::settings::convertResponseConfig
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1550,1
    - Dst: dnsdist::rust::settings::newDNSActionWrapper
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1551,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1551,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ' config'
    argTypes:
    - SpoofActionConfiguration
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1552
      start: 1544
    functionDepth: 2
    functionLinenumber: 1544
    functionLinenumberEnd: 1552
    functionName: dnsdist::rust::settings::getSpoofAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc
    functionUses: 0
    functionsReached:
    - std::move
    - dnsdist::rust::settings::newDNSActionWrapper
    - dnsdist::rust::settings::convertResponseConfig
    - std::vector::emplace_back
    - dnsdist::actions::getSpoofAction
    - std::string
    linkageType: ''
    returnType: std::shared_ptr<DNSActionWrapper>
    signature: std::shared_ptr<DNSActionWrapper> getSpoofAction(const SpoofActionConfiguration&
      config)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1556,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1556,1
    - Dst: dnsdist::actions::getSpoofAction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1557,1
    - Dst: dnsdist::rust::settings::convertResponseConfig
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1557,1
    - Dst: dnsdist::rust::settings::newDNSActionWrapper
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1558,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1558,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' config'
    argTypes:
    - SpoofCNAMEActionConfiguration
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1559
      start: 1554
    functionDepth: 2
    functionLinenumber: 1554
    functionLinenumberEnd: 1559
    functionName: dnsdist::rust::settings::getSpoofCNAMEAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc
    functionUses: 0
    functionsReached:
    - std::move
    - dnsdist::rust::settings::newDNSActionWrapper
    - dnsdist::rust::settings::convertResponseConfig
    - dnsdist::actions::getSpoofAction
    - DNSName
    - std::string
    linkageType: ''
    returnType: std::shared_ptr<DNSActionWrapper>
    signature: std::shared_ptr<DNSActionWrapper> getSpoofCNAMEAction(const SpoofCNAMEActionConfiguration&
      config)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::vector::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1565,1
    - Dst: dnsdist::configuration::yaml::rustStringWithEscapedRawContentToString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1565,1
    - Dst: qtype_for_any::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1568,1
    - Dst: QType::QType
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1569,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1570,1
    - Dst: QType::getCode
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1571,1
    - Dst: dnsdist::actions::getSpoofAction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1573,1
    - Dst: dnsdist::rust::settings::convertResponseConfig
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1573,1
    - Dst: dnsdist::rust::settings::newDNSActionWrapper
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1574,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1574,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - ' config'
    argTypes:
    - SpoofRawActionConfiguration
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1575
      start: 1561
    functionDepth: 2
    functionLinenumber: 1561
    functionLinenumberEnd: 1575
    functionName: dnsdist::rust::settings::getSpoofRawAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc
    functionUses: 0
    functionsReached:
    - std::move
    - QType::QType
    - qtype_for_any::empty
    - dnsdist::rust::settings::newDNSActionWrapper
    - dnsdist::rust::settings::convertResponseConfig
    - std::vector::emplace_back
    - dnsdist::actions::getSpoofAction
    - dnsdist::configuration::yaml::rustStringWithEscapedRawContentToString
    - QType::getCode
    - std::string
    linkageType: ''
    returnType: std::shared_ptr<DNSActionWrapper>
    signature: std::shared_ptr<DNSActionWrapper> getSpoofRawAction(const SpoofRawActionConfiguration&
      config)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::configuration::yaml::getLuaFunctionFromConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1580,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1581,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1581,1
    - Dst: dnsdist::actions::getLuaResponseAction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1583,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1583,1
    - Dst: dnsdist::rust::settings::newDNSResponseActionWrapper
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1584,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1584,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - ' config'
    argTypes:
    - LuaResponseActionConfiguration
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1585
      start: 1577
    functionDepth: 2
    functionLinenumber: 1577
    functionLinenumberEnd: 1585
    functionName: dnsdist::rust::settings::getLuaResponseAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc
    functionUses: 0
    functionsReached:
    - std::move
    - dnsdist::actions::getLuaResponseAction
    - std::runtime_error
    - dnsdist::rust::settings::newDNSResponseActionWrapper
    - dnsdist::configuration::yaml::getLuaFunctionFromConfiguration
    - std::string
    linkageType: ''
    returnType: std::shared_ptr<DNSResponseActionWrapper>
    signature: std::shared_ptr<DNSResponseActionWrapper> getLuaResponseAction(const
      LuaResponseActionConfiguration& config)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::configuration::yaml::getLuaFunctionFromConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1590,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1591,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1591,1
    - Dst: dnsdist::actions::getLuaFFIResponseAction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1593,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1593,1
    - Dst: dnsdist::rust::settings::newDNSResponseActionWrapper
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1594,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1594,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - ' config'
    argTypes:
    - LuaFFIResponseActionConfiguration
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1595
      start: 1587
    functionDepth: 2
    functionLinenumber: 1587
    functionLinenumberEnd: 1595
    functionName: dnsdist::rust::settings::getLuaFFIResponseAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc
    functionUses: 0
    functionsReached:
    - std::move
    - std::runtime_error
    - dnsdist::rust::settings::newDNSResponseActionWrapper
    - dnsdist::actions::getLuaFFIResponseAction
    - dnsdist::configuration::yaml::getLuaFunctionFromConfiguration
    - std::string
    linkageType: ''
    returnType: std::shared_ptr<DNSResponseActionWrapper>
    signature: std::shared_ptr<DNSResponseActionWrapper> getLuaFFIResponseAction(const
      LuaFFIResponseActionConfiguration& config)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::unordered_set::insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1601,1
    - Dst: dnsdist::actions::getClearRecordTypesResponseAction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1603,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1603,1
    - Dst: dnsdist::rust::settings::newDNSResponseActionWrapper
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1604,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1604,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ' config'
    argTypes:
    - ClearRecordTypesResponseActionConfiguration
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1605
      start: 1597
    functionDepth: 2
    functionLinenumber: 1597
    functionLinenumberEnd: 1605
    functionName: dnsdist::rust::settings::getClearRecordTypesResponseAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc
    functionUses: 0
    functionsReached:
    - dnsdist::actions::getClearRecordTypesResponseAction
    - std::unordered_set::insert
    - std::move
    - dnsdist::rust::settings::newDNSResponseActionWrapper
    linkageType: ''
    returnType: std::shared_ptr<DNSResponseActionWrapper>
    signature: std::shared_ptr<DNSResponseActionWrapper> getClearRecordTypesResponseAction(const
      ClearRecordTypesResponseActionConfiguration& config)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::unordered_set::insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1611,1
    - Dst: QType
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1611,1
    - Dst: dnsdist::actions::getLimitTTLResponseAction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1614,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1614,1
    - Dst: dnsdist::rust::settings::newDNSResponseActionWrapper
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1615,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1615,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ' config'
    argTypes:
    - LimitTTLResponseActionConfiguration
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1616
      start: 1607
    functionDepth: 2
    functionLinenumber: 1607
    functionLinenumberEnd: 1616
    functionName: dnsdist::rust::settings::getLimitTTLResponseAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc
    functionUses: 0
    functionsReached:
    - std::move
    - dnsdist::rust::settings::newDNSResponseActionWrapper
    - std::unordered_set::insert
    - QType
    - dnsdist::actions::getLimitTTLResponseAction
    linkageType: ''
    returnType: std::shared_ptr<DNSResponseActionWrapper>
    signature: std::shared_ptr<DNSResponseActionWrapper> getLimitTTLResponseAction(const
      LimitTTLResponseActionConfiguration& config)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::actions::getLimitTTLResponseAction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1620,1
    - Dst: dnsdist::rust::settings::newDNSResponseActionWrapper
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1621,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1621,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' config'
    argTypes:
    - SetMinTTLResponseActionConfiguration
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1622
      start: 1618
    functionDepth: 2
    functionLinenumber: 1618
    functionLinenumberEnd: 1622
    functionName: dnsdist::rust::settings::getSetMinTTLResponseAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc
    functionUses: 0
    functionsReached:
    - std::move
    - dnsdist::rust::settings::newDNSResponseActionWrapper
    - dnsdist::actions::getLimitTTLResponseAction
    linkageType: ''
    returnType: std::shared_ptr<DNSResponseActionWrapper>
    signature: std::shared_ptr<DNSResponseActionWrapper> getSetMinTTLResponseAction(const
      SetMinTTLResponseActionConfiguration& config)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::actions::getLimitTTLResponseAction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1626,1
    - Dst: dnsdist::rust::settings::newDNSResponseActionWrapper
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1627,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1627,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' config'
    argTypes:
    - SetMaxTTLResponseActionConfiguration
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1628
      start: 1624
    functionDepth: 2
    functionLinenumber: 1624
    functionLinenumberEnd: 1628
    functionName: dnsdist::rust::settings::getSetMaxTTLResponseAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc
    functionUses: 0
    functionsReached:
    - std::move
    - dnsdist::rust::settings::newDNSResponseActionWrapper
    - dnsdist::actions::getLimitTTLResponseAction
    linkageType: ''
    returnType: std::shared_ptr<DNSResponseActionWrapper>
    signature: std::shared_ptr<DNSResponseActionWrapper> getSetMaxTTLResponseAction(const
      SetMaxTTLResponseActionConfiguration& config)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SuffixMatchNode::add
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1634,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1634,1
    - Dst: dnsdist::rust::settings::newDNSSelector
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1636,1
    - Dst: dnsdist::selectors::getQNameSuffixSelector
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1636,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ' config'
    argTypes:
    - QNameSuffixSelectorConfiguration
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1637
      start: 1630
    functionDepth: 2
    functionLinenumber: 1630
    functionLinenumberEnd: 1637
    functionName: dnsdist::rust::settings::getQNameSuffixSelector
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc
    functionUses: 0
    functionsReached:
    - std::string
    - dnsdist::rust::settings::newDNSSelector
    - dnsdist::selectors::getQNameSuffixSelector
    - SuffixMatchNode::add
    linkageType: ''
    returnType: std::shared_ptr<DNSSelector>
    signature: std::shared_ptr<DNSSelector> getQNameSuffixSelector(const QNameSuffixSelectorConfiguration&
      config)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSNameSet::emplace
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1643,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1643,1
    - Dst: dnsdist::rust::settings::newDNSSelector
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1645,1
    - Dst: dnsdist::selectors::getQNameSetSelector
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1645,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ' config'
    argTypes:
    - QNameSetSelectorConfiguration
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1646
      start: 1639
    functionDepth: 2
    functionLinenumber: 1639
    functionLinenumberEnd: 1646
    functionName: dnsdist::rust::settings::getQNameSetSelector
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc
    functionUses: 0
    functionsReached:
    - dnsdist::selectors::getQNameSetSelector
    - std::string
    - dnsdist::rust::settings::newDNSSelector
    - DNSNameSet::emplace
    linkageType: ''
    returnType: std::shared_ptr<DNSSelector>
    signature: std::shared_ptr<DNSSelector> getQNameSetSelector(const QNameSetSelectorConfiguration&
      config)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::rust::settings::newDNSSelector
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1650,1
    - Dst: dnsdist::selectors::getQNameSelector
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1650,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1650,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1650,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' config'
    argTypes:
    - QNameSelectorConfiguration
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1651
      start: 1648
    functionDepth: 2
    functionLinenumber: 1648
    functionLinenumberEnd: 1651
    functionName: dnsdist::rust::settings::getQNameSelector
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc
    functionUses: 0
    functionsReached:
    - dnsdist::selectors::getQNameSelector
    - dnsdist::rust::settings::newDNSSelector
    - std::string
    - DNSName
    linkageType: ''
    returnType: std::shared_ptr<DNSSelector>
    signature: std::shared_ptr<DNSSelector> getQNameSelector(const QNameSelectorConfiguration&
      config)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: netmask_group_name::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1656,1
    - Dst: dnsdist::configuration::yaml::getRegisteredTypeByName<NetmaskGroup>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1657,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1657,1
    - Dst: std::make_shared<NetmaskGroup>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1660,1
    - Dst: std::shared_ptr::addMask
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1663,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1663,1
    - Dst: dnsdist::selectors::getNetmaskGroupSelector
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1665,1
    - Dst: dnsdist::rust::settings::newDNSSelector
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1666,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1666,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - ' config'
    argTypes:
    - NetmaskGroupSelectorConfiguration
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1667
      start: 1653
    functionDepth: 2
    functionLinenumber: 1653
    functionLinenumberEnd: 1667
    functionName: dnsdist::rust::settings::getNetmaskGroupSelector
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc
    functionUses: 0
    functionsReached:
    - std::move
    - dnsdist::rust::settings::newDNSSelector
    - dnsdist::selectors::getNetmaskGroupSelector
    - std::shared_ptr::addMask
    - dnsdist::configuration::yaml::getRegisteredTypeByName<NetmaskGroup>
    - std::string
    - std::make_shared<NetmaskGroup>
    - netmask_group_name::empty
    linkageType: ''
    returnType: std::shared_ptr<DNSSelector>
    signature: std::shared_ptr<DNSSelector> getNetmaskGroupSelector(const NetmaskGroupSelectorConfiguration&
      config)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::configuration::yaml::getRegisteredTypeByName<KeyValueStore>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1672,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1672,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1674,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1674,1
    - Dst: dnsdist::configuration::yaml::getRegisteredTypeByName<KeyValueLookupKey>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1676,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1676,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1678,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1678,1
    - Dst: dnsdist::actions::getKeyValueStoreLookupAction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1680,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1680,1
    - Dst: dnsdist::rust::settings::newDNSActionWrapper
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1681,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1681,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1683,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 9
    argCount: 1
    argNames:
    - ' config'
    argTypes:
    - KeyValueStoreLookupActionConfiguration
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1685
      start: 1669
    functionDepth: 2
    functionLinenumber: 1669
    functionLinenumberEnd: 1685
    functionName: dnsdist::rust::settings::getKeyValueStoreLookupAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc
    functionUses: 0
    functionsReached:
    - std::move
    - dnsdist::configuration::yaml::getRegisteredTypeByName<KeyValueLookupKey>
    - std::runtime_error
    - dnsdist::rust::settings::newDNSActionWrapper
    - dnsdist::actions::getKeyValueStoreLookupAction
    - dnsdist::configuration::yaml::getRegisteredTypeByName<KeyValueStore>
    - std::string
    linkageType: ''
    returnType: std::shared_ptr<DNSActionWrapper>
    signature: std::shared_ptr<DNSActionWrapper> getKeyValueStoreLookupAction([[maybe_unused]]
      const KeyValueStoreLookupActionConfiguration& config)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::configuration::yaml::getRegisteredTypeByName<KeyValueStore>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1690,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1690,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1692,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1692,1
    - Dst: dnsdist::configuration::yaml::getRegisteredTypeByName<KeyValueLookupKey>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1694,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1694,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1696,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1696,1
    - Dst: dnsdist::actions::getKeyValueStoreRangeLookupAction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1698,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1698,1
    - Dst: dnsdist::rust::settings::newDNSActionWrapper
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1699,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1699,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1701,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 9
    argCount: 1
    argNames:
    - ' config'
    argTypes:
    - KeyValueStoreRangeLookupActionConfiguration
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1703
      start: 1687
    functionDepth: 2
    functionLinenumber: 1687
    functionLinenumberEnd: 1703
    functionName: dnsdist::rust::settings::getKeyValueStoreRangeLookupAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc
    functionUses: 0
    functionsReached:
    - std::move
    - dnsdist::configuration::yaml::getRegisteredTypeByName<KeyValueLookupKey>
    - std::runtime_error
    - dnsdist::rust::settings::newDNSActionWrapper
    - dnsdist::actions::getKeyValueStoreRangeLookupAction
    - dnsdist::configuration::yaml::getRegisteredTypeByName<KeyValueStore>
    - std::string
    linkageType: ''
    returnType: std::shared_ptr<DNSActionWrapper>
    signature: std::shared_ptr<DNSActionWrapper> getKeyValueStoreRangeLookupAction([[maybe_unused]]
      const KeyValueStoreRangeLookupActionConfiguration& config)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::configuration::yaml::getRegisteredTypeByName<KeyValueStore>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1708,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1708,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1710,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1710,1
    - Dst: dnsdist::configuration::yaml::getRegisteredTypeByName<KeyValueLookupKey>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1712,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1712,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1714,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1714,1
    - Dst: dnsdist::selectors::getKeyValueStoreLookupSelector
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1716,1
    - Dst: dnsdist::rust::settings::newDNSSelector
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1717,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1717,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1719,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 9
    argCount: 1
    argNames:
    - ' config'
    argTypes:
    - KeyValueStoreLookupSelectorConfiguration
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1721
      start: 1705
    functionDepth: 2
    functionLinenumber: 1705
    functionLinenumberEnd: 1721
    functionName: dnsdist::rust::settings::getKeyValueStoreLookupSelector
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc
    functionUses: 0
    functionsReached:
    - std::move
    - dnsdist::rust::settings::newDNSSelector
    - dnsdist::configuration::yaml::getRegisteredTypeByName<KeyValueLookupKey>
    - std::runtime_error
    - dnsdist::configuration::yaml::getRegisteredTypeByName<KeyValueStore>
    - dnsdist::selectors::getKeyValueStoreLookupSelector
    - std::string
    linkageType: ''
    returnType: std::shared_ptr<DNSSelector>
    signature: std::shared_ptr<DNSSelector> getKeyValueStoreLookupSelector([[maybe_unused]]
      const KeyValueStoreLookupSelectorConfiguration& config)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::configuration::yaml::getRegisteredTypeByName<KeyValueStore>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1726,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1726,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1728,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1728,1
    - Dst: dnsdist::configuration::yaml::getRegisteredTypeByName<KeyValueLookupKey>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1730,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1730,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1732,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1732,1
    - Dst: dnsdist::selectors::getKeyValueStoreRangeLookupSelector
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1734,1
    - Dst: dnsdist::rust::settings::newDNSSelector
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1735,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1735,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1737,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 9
    argCount: 1
    argNames:
    - ' config'
    argTypes:
    - KeyValueStoreRangeLookupSelectorConfiguration
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1739
      start: 1723
    functionDepth: 2
    functionLinenumber: 1723
    functionLinenumberEnd: 1739
    functionName: dnsdist::rust::settings::getKeyValueStoreRangeLookupSelector
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc
    functionUses: 0
    functionsReached:
    - std::move
    - dnsdist::rust::settings::newDNSSelector
    - dnsdist::configuration::yaml::getRegisteredTypeByName<KeyValueLookupKey>
    - dnsdist::selectors::getKeyValueStoreRangeLookupSelector
    - std::runtime_error
    - dnsdist::configuration::yaml::getRegisteredTypeByName<KeyValueStore>
    - std::string
    linkageType: ''
    returnType: std::shared_ptr<DNSSelector>
    signature: std::shared_ptr<DNSSelector> getKeyValueStoreRangeLookupSelector([[maybe_unused]]
      const KeyValueStoreRangeLookupSelectorConfiguration& config)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::configuration::yaml::getRegisteredTypeByName<TimedIPSetRule>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1743,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1743,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1745,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1745,1
    - Dst: std::dynamic_pointer_cast<DNSRule>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1747,1
    - Dst: dnsdist::rust::settings::newDNSSelector
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1748,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1748,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - ' config'
    argTypes:
    - TimedIPSetSelectorConfiguration
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1749
      start: 1741
    functionDepth: 2
    functionLinenumber: 1741
    functionLinenumberEnd: 1749
    functionName: dnsdist::rust::settings::getTimedIPSetSelector
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc
    functionUses: 0
    functionsReached:
    - std::move
    - dnsdist::rust::settings::newDNSSelector
    - std::runtime_error
    - std::dynamic_pointer_cast<DNSRule>
    - std::string
    - dnsdist::configuration::yaml::getRegisteredTypeByName<TimedIPSetRule>
    linkageType: ''
    returnType: std::shared_ptr<DNSSelector>
    signature: std::shared_ptr<DNSSelector> getTimedIPSetSelector(const TimedIPSetSelectorConfiguration&
      config)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1754,1
    - Dst: dnsdist::configuration::yaml::getRegisteredTypeByName<RemoteLoggerInterface>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1756,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1756,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1758,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1758,1
    - Dst: dnsdist::configuration::yaml::getLuaFunctionFromConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1762,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1763,1
    - Dst: dnsdist::actions::getDnstapLogAction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1765,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1765,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1765,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1765,1
    - Dst: std::optional<dnsdist::actions::DnstapAlterFunction>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1765,1
    - Dst: dnsdist::rust::settings::newDNSActionWrapper
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1766,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1766,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 9
    argCount: 1
    argNames:
    - ' config'
    argTypes:
    - DnstapLogActionConfiguration
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1768
      start: 1751
    functionDepth: 2
    functionLinenumber: 1751
    functionLinenumberEnd: 1768
    functionName: dnsdist::rust::settings::getDnstapLogAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc
    functionUses: 0
    functionsReached:
    - std::move
    - dnsdist::rust::settings::newDNSActionWrapper
    - std::runtime_error
    - dnsdist::configuration::yaml::getRegisteredTypeByName<RemoteLoggerInterface>
    - dnsdist::actions::getDnstapLogAction
    - dnsdist::configuration::yaml::getLuaFunctionFromConfiguration
    - std::optional<dnsdist::actions::DnstapAlterFunction>
    - std::string
    linkageType: ''
    returnType: std::shared_ptr<DNSActionWrapper>
    signature: std::shared_ptr<DNSActionWrapper> getDnstapLogAction([[maybe_unused]]
      const DnstapLogActionConfiguration& config)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1773,1
    - Dst: dnsdist::configuration::yaml::getRegisteredTypeByName<RemoteLoggerInterface>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1775,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1775,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1777,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1777,1
    - Dst: dnsdist::configuration::yaml::getLuaFunctionFromConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1781,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1782,1
    - Dst: dnsdist::actions::getDnstapLogResponseAction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1784,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1784,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1784,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1784,1
    - Dst: std::optional<dnsdist::actions::DnstapAlterResponseFunction>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1784,1
    - Dst: dnsdist::rust::settings::newDNSResponseActionWrapper
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1785,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1785,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 9
    argCount: 1
    argNames:
    - ' config'
    argTypes:
    - DnstapLogResponseActionConfiguration
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1787
      start: 1770
    functionDepth: 2
    functionLinenumber: 1770
    functionLinenumberEnd: 1787
    functionName: dnsdist::rust::settings::getDnstapLogResponseAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc
    functionUses: 0
    functionsReached:
    - std::move
    - std::runtime_error
    - dnsdist::configuration::yaml::getRegisteredTypeByName<RemoteLoggerInterface>
    - dnsdist::rust::settings::newDNSResponseActionWrapper
    - std::optional<dnsdist::actions::DnstapAlterResponseFunction>
    - dnsdist::configuration::yaml::getLuaFunctionFromConfiguration
    - dnsdist::actions::getDnstapLogResponseAction
    - std::string
    linkageType: ''
    returnType: std::shared_ptr<DNSResponseActionWrapper>
    signature: std::shared_ptr<DNSResponseActionWrapper> getDnstapLogResponseAction([[maybe_unused]]
      const DnstapLogResponseActionConfiguration& config)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1792,1
    - Dst: dnsdist::configuration::yaml::getRegisteredTypeByName<RemoteLoggerInterface>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1796,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1796,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1798,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1798,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1800,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1800,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1804,1
    - Dst: dnsdist::actions::getSetTraceAction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1812,1
    - Dst: dnsdist::rust::settings::newDNSActionWrapper
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1814,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1814,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 8
    argCount: 1
    argNames:
    - ' config'
    argTypes:
    - SetTraceActionConfiguration
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1816
      start: 1789
    functionDepth: 2
    functionLinenumber: 1789
    functionLinenumberEnd: 1816
    functionName: dnsdist::rust::settings::getSetTraceAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc
    functionUses: 0
    functionsReached:
    - std::vector::push_back
    - std::move
    - dnsdist::actions::getSetTraceAction
    - dnsdist::rust::settings::newDNSActionWrapper
    - std::runtime_error
    - dnsdist::configuration::yaml::getRegisteredTypeByName<RemoteLoggerInterface>
    - std::string
    linkageType: ''
    returnType: std::shared_ptr<DNSActionWrapper>
    signature: std::shared_ptr<DNSActionWrapper> getSetTraceAction(const SetTraceActionConfiguration&
      config)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1821,1
    - Dst: dnsdist::configuration::yaml::getRegisteredTypeByName<RemoteLoggerInterface>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1823,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1823,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1825,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1825,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1828,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1829,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1830,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1831,1
    - Dst: dnsdist::actions::RemoteLogActionConfiguration::metas::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1833,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1833,1
    - Dst: ProtoBufMetaKey
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1833,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1833,1
    - Dst: export_tags::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1835,1
    - Dst: std::unordered_set<std::string>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1836,1
    - Dst: dnsdist::actions::RemoteLogActionConfiguration::tagsToExport::emplace
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1838,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1838,1
    - Dst: export_tags_prefixes::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1841,1
    - Dst: dnsdist::actions::RemoteLogActionConfiguration::tagsPrefixesToExport::emplace
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1843,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1843,1
    - Dst: dnsdist::configuration::yaml::getLuaFunctionFromConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1847,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1848,1
    - Dst: dnsdist::actions::getRemoteLogAction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1853,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1853,1
    - Dst: dnsdist::rust::settings::newDNSActionWrapper
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1854,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1854,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 27
    argCount: 1
    argNames:
    - ' config'
    argTypes:
    - RemoteLogActionConfiguration
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1856
      start: 1818
    functionDepth: 2
    functionLinenumber: 1818
    functionLinenumberEnd: 1856
    functionName: dnsdist::rust::settings::getRemoteLogAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc
    functionUses: 0
    functionsReached:
    - dnsdist::actions::RemoteLogActionConfiguration::tagsPrefixesToExport::emplace
    - std::move
    - dnsdist::rust::settings::newDNSActionWrapper
    - std::runtime_error
    - dnsdist::configuration::yaml::getRegisteredTypeByName<RemoteLoggerInterface>
    - dnsdist::actions::RemoteLogActionConfiguration::metas::emplace_back
    - ProtoBufMetaKey
    - export_tags::empty
    - export_tags_prefixes::empty
    - dnsdist::configuration::yaml::getLuaFunctionFromConfiguration
    - std::unordered_set<std::string>
    - std::string
    - dnsdist::actions::getRemoteLogAction
    - dnsdist::actions::RemoteLogActionConfiguration::tagsToExport::emplace
    linkageType: ''
    returnType: std::shared_ptr<DNSActionWrapper>
    signature: std::shared_ptr<DNSActionWrapper> getRemoteLogAction(const RemoteLogActionConfiguration&
      config)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1861,1
    - Dst: dnsdist::configuration::yaml::getRegisteredTypeByName<RemoteLoggerInterface>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1863,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1863,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1865,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1865,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1868,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1869,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1870,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1871,1
    - Dst: dnsdist::actions::RemoteLogActionConfiguration::metas::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1874,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1874,1
    - Dst: ProtoBufMetaKey
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1874,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1874,1
    - Dst: export_tags::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1876,1
    - Dst: std::unordered_set<std::string>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1877,1
    - Dst: dnsdist::actions::RemoteLogActionConfiguration::tagsToExport::emplace
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1879,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1879,1
    - Dst: export_tags_prefixes::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1882,1
    - Dst: dnsdist::actions::RemoteLogActionConfiguration::tagsPrefixesToExport::emplace
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1884,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1884,1
    - Dst: export_extended_errors_to_meta::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1887,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1888,1
    - Dst: dnsdist::configuration::yaml::getLuaFunctionFromConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1891,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1892,1
    - Dst: dnsdist::actions::getRemoteLogResponseAction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1898,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1898,1
    - Dst: dnsdist::rust::settings::newDNSResponseActionWrapper
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1899,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1899,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 32
    argCount: 1
    argNames:
    - ' config'
    argTypes:
    - RemoteLogResponseActionConfiguration
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1901
      start: 1858
    functionDepth: 2
    functionLinenumber: 1858
    functionLinenumberEnd: 1901
    functionName: dnsdist::rust::settings::getRemoteLogResponseAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc
    functionUses: 0
    functionsReached:
    - dnsdist::actions::RemoteLogActionConfiguration::tagsPrefixesToExport::emplace
    - std::move
    - dnsdist::actions::getRemoteLogResponseAction
    - std::runtime_error
    - dnsdist::configuration::yaml::getRegisteredTypeByName<RemoteLoggerInterface>
    - dnsdist::actions::RemoteLogActionConfiguration::metas::emplace_back
    - ProtoBufMetaKey
    - export_tags::empty
    - export_extended_errors_to_meta::empty
    - dnsdist::rust::settings::newDNSResponseActionWrapper
    - export_tags_prefixes::empty
    - dnsdist::configuration::yaml::getLuaFunctionFromConfiguration
    - std::unordered_set<std::string>
    - std::string
    - dnsdist::actions::RemoteLogActionConfiguration::tagsToExport::emplace
    linkageType: ''
    returnType: std::shared_ptr<DNSResponseActionWrapper>
    signature: std::shared_ptr<DNSResponseActionWrapper> getRemoteLogResponseAction(const
      RemoteLogResponseActionConfiguration& config)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1906,1
    - Dst: std::shared_ptr<RemoteLoggerInterface>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1909,1
    - Dst: dnsdist::configuration::yaml::registerType<RemoteLoggerInterface>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1910,1
    - Dst: std::vector::reserve
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1916,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1918,1
    - Dst: std::make_shared<RemoteLogger>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1918,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1918,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1918,1
    - Dst: std::shared_ptr<RemoteLoggerInterface>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1920,1
    - Dst: std::make_shared<RemoteLoggerPool>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1920,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1920,1
    - Dst: std::shared_ptr<RemoteLoggerInterface>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1923,1
    - Dst: std::make_shared<RemoteLogger>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1923,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1923,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1923,1
    - Dst: dnsdist::configuration::yaml::registerType<RemoteLoggerInterface>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1925,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 1
    argNames:
    - ' config'
    argTypes:
    - ProtobufLoggerConfiguration
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1927
      start: 1903
    functionDepth: 0
    functionLinenumber: 1903
    functionLinenumberEnd: 1927
    functionName: dnsdist::rust::settings::registerProtobufLogger
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc
    functionUses: 0
    functionsReached:
    - std::vector::push_back
    - std::move
    - std::runtime_error
    - std::make_shared<RemoteLogger>
    - std::vector::reserve
    - std::shared_ptr<RemoteLoggerInterface>
    - std::make_shared<RemoteLoggerPool>
    - std::string
    - dnsdist::configuration::yaml::registerType<RemoteLoggerInterface>
    - ComboAddress
    linkageType: ''
    returnType: void
    signature: void registerProtobufLogger(const ProtobufLoggerConfiguration& config)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1932,1
    - Dst: boost::to_lower_copy
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1934,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1934,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1943,1
    - Dst: std::shared_ptr<RemoteLoggerInterface>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1947,1
    - Dst: dnsdist::configuration::yaml::registerType<RemoteLoggerInterface>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1948,1
    - Dst: std::vector::reserve
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1963,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1965,1
    - Dst: std::make_shared<FrameStreamLogger>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1965,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1965,1
    - Dst: std::shared_ptr<RemoteLoggerInterface>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1967,1
    - Dst: std::make_shared<RemoteLoggerPool>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1967,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1967,1
    - Dst: std::shared_ptr<RemoteLoggerInterface>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1970,1
    - Dst: std::make_shared<FrameStreamLogger>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1970,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1970,1
    - Dst: dnsdist::configuration::yaml::registerType<RemoteLoggerInterface>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1972,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 30
    argCount: 1
    argNames:
    - ' config'
    argTypes:
    - DnstapLoggerConfiguration
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1974
      start: 1929
    functionDepth: 0
    functionLinenumber: 1929
    functionLinenumberEnd: 1974
    functionName: dnsdist::rust::settings::registerDnstapLogger
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc
    functionUses: 0
    functionsReached:
    - std::vector::push_back
    - std::move
    - std::runtime_error
    - std::make_shared<FrameStreamLogger>
    - std::vector::reserve
    - std::shared_ptr<RemoteLoggerInterface>
    - boost::to_lower_copy
    - std::make_shared<RemoteLoggerPool>
    - std::string
    - dnsdist::configuration::yaml::registerType<RemoteLoggerInterface>
    linkageType: ''
    returnType: void
    signature: void registerDnstapLogger([[maybe_unused]] const DnstapLoggerConfiguration&
      config)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::shared_ptr<KeyValueStore>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1982,1
    - Dst: std::make_shared<LMDBKVStore>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1982,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1982,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1982,1
    - Dst: std::shared_ptr<KeyValueStore>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1982,1
    - Dst: dnsdist::configuration::yaml::registerType<KeyValueStore>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1983,1
    - Dst: std::shared_ptr<KeyValueStore>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1988,1
    - Dst: std::make_shared<CDBKVStore>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1988,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1988,1
    - Dst: std::shared_ptr<KeyValueStore>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1988,1
    - Dst: dnsdist::configuration::yaml::registerType<KeyValueStore>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1989,1
    - Dst: std::shared_ptr<KeyValueLookupKey>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1993,1
    - Dst: std::make_shared<KeyValueLookupKeySourceIP>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1993,1
    - Dst: std::shared_ptr<KeyValueLookupKey>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1993,1
    - Dst: dnsdist::configuration::yaml::registerType<KeyValueLookupKey>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1994,1
    - Dst: std::shared_ptr<KeyValueLookupKey>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1997,1
    - Dst: std::make_shared<KeyValueLookupKeyQName>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1997,1
    - Dst: std::shared_ptr<KeyValueLookupKey>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1997,1
    - Dst: dnsdist::configuration::yaml::registerType<KeyValueLookupKey>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:1998,1
    - Dst: std::shared_ptr<KeyValueLookupKey>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:2001,1
    - Dst: std::make_shared<KeyValueLookupKeySuffix>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:2001,1
    - Dst: std::shared_ptr<KeyValueLookupKey>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:2001,1
    - Dst: dnsdist::configuration::yaml::registerType<KeyValueLookupKey>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:2002,1
    - Dst: std::shared_ptr<KeyValueLookupKey>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:2005,1
    - Dst: std::make_shared<KeyValueLookupKeyTag>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:2005,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:2005,1
    - Dst: std::shared_ptr<KeyValueLookupKey>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:2005,1
    - Dst: dnsdist::configuration::yaml::registerType<KeyValueLookupKey>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:2006,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 13
    argCount: 1
    argNames:
    - ' config'
    argTypes:
    - KeyValueStoresConfiguration
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2009
      start: 1976
    functionDepth: 0
    functionLinenumber: 1976
    functionLinenumberEnd: 2009
    functionName: dnsdist::rust::settings::registerKVSObjects
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc
    functionUses: 0
    functionsReached:
    - std::make_shared<LMDBKVStore>
    - std::shared_ptr<KeyValueLookupKey>
    - std::make_shared<KeyValueLookupKeySourceIP>
    - dnsdist::configuration::yaml::registerType<KeyValueLookupKey>
    - std::make_shared<KeyValueLookupKeySuffix>
    - std::make_shared<CDBKVStore>
    - std::shared_ptr<KeyValueStore>
    - std::make_shared<KeyValueLookupKeyQName>
    - std::string
    - dnsdist::configuration::yaml::registerType<KeyValueStore>
    - std::make_shared<KeyValueLookupKeyTag>
    linkageType: ''
    returnType: void
    signature: void registerKVSObjects([[maybe_unused]] const KeyValueStoresConfiguration&
      config)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::configuration::yaml::getRegisteredTypeByName<NetmaskGroup>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:2015,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:2015,1
    - Dst: std::make_shared<NetmaskGroup>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:2017,1
    - Dst: auto::addMask
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:2022,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:2022,1
    - Dst: dnsdist::configuration::yaml::registerType<NetmaskGroup>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:2025,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 1
    argNames:
    - ' nmgs'
    argTypes:
    - ::rust::Vec<NetmaskGroupConfiguration>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2028
      start: 2011
    functionDepth: 0
    functionLinenumber: 2011
    functionLinenumberEnd: 2028
    functionName: dnsdist::rust::settings::registerNMGObjects
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc
    functionUses: 0
    functionsReached:
    - auto::addMask
    - dnsdist::configuration::yaml::getRegisteredTypeByName<NetmaskGroup>
    - std::string
    - std::make_shared<NetmaskGroup>
    - dnsdist::configuration::yaml::registerType<NetmaskGroup>
    linkageType: ''
    returnType: void
    signature: void registerNMGObjects(const ::rust::Vec<NetmaskGroupConfiguration>&
      nmgs)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::configuration::yaml::getRegisteredTypeByName<TimedIPSetRule>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:2033,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:2033,1
    - Dst: std::make_shared<TimedIPSetRule>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:2035,1
    - Dst: dnsdist::configuration::yaml::registerType<TimedIPSetRule>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:2036,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - ' sets'
    argTypes:
    - ::rust::Vec<TimedIpSetConfiguration>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2039
      start: 2030
    functionDepth: 0
    functionLinenumber: 2030
    functionLinenumberEnd: 2039
    functionName: dnsdist::rust::settings::registerTimedIPSetObjects
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc
    functionUses: 0
    functionsReached:
    - std::string
    - std::make_shared<TimedIPSetRule>
    - dnsdist::configuration::yaml::getRegisteredTypeByName<TimedIPSetRule>
    - dnsdist::configuration::yaml::registerType<TimedIPSetRule>
    linkageType: ''
    returnType: void
    signature: void registerTimedIPSetObjects(const ::rust::Vec<TimedIpSetConfiguration>&
      sets)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::configuration::yaml::getLuaFunctionFromConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:2044,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:2045,1
    - Dst: dnsdist::selectors::getLuaSelector
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:2047,1
    - Dst: dnsdist::rust::settings::newDNSSelector
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:2048,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:2048,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - ' config'
    argTypes:
    - LuaSelectorConfiguration
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2049
      start: 2041
    functionDepth: 2
    functionLinenumber: 2041
    functionLinenumberEnd: 2049
    functionName: dnsdist::rust::settings::getLuaSelector
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc
    functionUses: 0
    functionsReached:
    - std::move
    - dnsdist::rust::settings::newDNSSelector
    - dnsdist::selectors::getLuaSelector
    - std::runtime_error
    - dnsdist::configuration::yaml::getLuaFunctionFromConfiguration
    linkageType: ''
    returnType: std::shared_ptr<DNSSelector>
    signature: std::shared_ptr<DNSSelector> getLuaSelector(const LuaSelectorConfiguration&
      config)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::configuration::yaml::getLuaFunctionFromConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:2054,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:2055,1
    - Dst: dnsdist::selectors::getLuaFFISelector
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:2057,1
    - Dst: dnsdist::rust::settings::newDNSSelector
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:2058,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:2058,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - ' config'
    argTypes:
    - LuaFFISelectorConfiguration
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2059
      start: 2051
    functionDepth: 2
    functionLinenumber: 2051
    functionLinenumberEnd: 2059
    functionName: dnsdist::rust::settings::getLuaFFISelector
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc
    functionUses: 0
    functionsReached:
    - std::move
    - dnsdist::rust::settings::newDNSSelector
    - dnsdist::selectors::getLuaFFISelector
    - std::runtime_error
    - dnsdist::configuration::yaml::getLuaFunctionFromConfiguration
    linkageType: ''
    returnType: std::shared_ptr<DNSSelector>
    signature: std::shared_ptr<DNSSelector> getLuaFFISelector(const LuaFFISelectorConfiguration&
      config)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::vector::reserve
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:2064,1
    - Dst: selectors::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:2064,1
    - Dst: std::vector::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:2066,1
    - Dst: dnsdist::selectors::getAndSelector
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:2068,1
    - Dst: dnsdist::rust::settings::newDNSSelector
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:2069,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:2069,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ' config'
    argTypes:
    - AndSelectorConfiguration
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2070
      start: 2061
    functionDepth: 2
    functionLinenumber: 2061
    functionLinenumberEnd: 2070
    functionName: dnsdist::rust::settings::getAndSelector
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc
    functionUses: 0
    functionsReached:
    - std::move
    - dnsdist::rust::settings::newDNSSelector
    - std::vector::emplace_back
    - std::vector::reserve
    - selectors::size
    - dnsdist::selectors::getAndSelector
    linkageType: ''
    returnType: std::shared_ptr<DNSSelector>
    signature: std::shared_ptr<DNSSelector> getAndSelector(const AndSelectorConfiguration&
      config)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::vector::reserve
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:2075,1
    - Dst: selectors::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:2075,1
    - Dst: std::vector::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:2077,1
    - Dst: dnsdist::selectors::getOrSelector
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:2079,1
    - Dst: dnsdist::rust::settings::newDNSSelector
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:2080,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:2080,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ' config'
    argTypes:
    - OrSelectorConfiguration
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2081
      start: 2072
    functionDepth: 2
    functionLinenumber: 2072
    functionLinenumberEnd: 2081
    functionName: dnsdist::rust::settings::getOrSelector
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc
    functionUses: 0
    functionsReached:
    - std::move
    - dnsdist::rust::settings::newDNSSelector
    - std::vector::emplace_back
    - dnsdist::selectors::getOrSelector
    - std::vector::reserve
    - selectors::size
    linkageType: ''
    returnType: std::shared_ptr<DNSSelector>
    signature: std::shared_ptr<DNSSelector> getOrSelector(const OrSelectorConfiguration&
      config)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::selectors::getNotSelector
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:2085,1
    - Dst: dnsdist::rust::settings::newDNSSelector
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:2086,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:2086,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' config'
    argTypes:
    - NotSelectorConfiguration
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2087
      start: 2083
    functionDepth: 2
    functionLinenumber: 2083
    functionLinenumberEnd: 2087
    functionName: dnsdist::rust::settings::getNotSelector
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc
    functionUses: 0
    functionsReached:
    - dnsdist::selectors::getNotSelector
    - dnsdist::rust::settings::newDNSSelector
    - std::move
    linkageType: ''
    returnType: std::shared_ptr<DNSSelector>
    signature: std::shared_ptr<DNSSelector> getNotSelector(const NotSelectorConfiguration&
      config)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::configuration::yaml::getRegisteredTypeByName<DNSSelector>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:2091,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:2093,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc:2093,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - ' config'
    argTypes:
    - ByNameSelectorConfiguration
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2096
      start: 2089
    functionDepth: 0
    functionLinenumber: 2089
    functionLinenumberEnd: 2096
    functionName: dnsdist::rust::settings::getByNameSelector
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc
    functionUses: 0
    functionsReached:
    - std::string
    - dnsdist::configuration::yaml::getRegisteredTypeByName<DNSSelector>
    - std::runtime_error
    linkageType: ''
    returnType: std::shared_ptr<DNSSelector>
    signature: std::shared_ptr<DNSSelector> getByNameSelector(const ByNameSelectorConfiguration&
      config)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/proxy-protocol.cc:35,1
    - Dst: capacity
      Src: /src/pdns/pdns/dnsdistdist/proxy-protocol.cc:36,1
    - Dst: reserve
      Src: /src/pdns/pdns/dnsdistdist/proxy-protocol.cc:37,1
    - Dst: append
      Src: /src/pdns/pdns/dnsdistdist/proxy-protocol.cc:40,1
    - Dst: append
      Src: /src/pdns/pdns/dnsdistdist/proxy-protocol.cc:42,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/proxy-protocol.cc:42,1
    - Dst: append
      Src: /src/pdns/pdns/dnsdistdist/proxy-protocol.cc:43,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/proxy-protocol.cc:43,1
    - Dst: append
      Src: /src/pdns/pdns/dnsdistdist/proxy-protocol.cc:45,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/proxy-protocol.cc:45,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 5
    argNames:
    - command
    - protocol
    - contentLen
    - additionalSize
    - ' out'
    argTypes:
    - uint8_t
    - uint8_t
    - uint16_t
    - size_t
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 32
    functionDepth: 0
    functionLinenumber: 32
    functionLinenumberEnd: 46
    functionName: makeSimpleHeader
    functionSourceFile: /src/pdns/pdns/dnsdistdist/proxy-protocol.cc
    functionUses: 2
    functionsReached:
    - append
    - size
    - reserve
    - capacity
    - reinterpret_cast<const char*>
    linkageType: ''
    returnType: void
    signature: void makeSimpleHeader(uint8_t command, uint8_t protocol, uint16_t contentLen,
      size_t additionalSize, std::string& out)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeSimpleHeader
      Src: /src/pdns/pdns/dnsdistdist/proxy-protocol.cc:51,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 48
    functionDepth: 0
    functionLinenumber: 48
    functionLinenumberEnd: 53
    functionName: makeLocalProxyHeader
    functionSourceFile: /src/pdns/pdns/dnsdistdist/proxy-protocol.cc
    functionUses: 3
    functionsReached:
    - makeSimpleHeader
    linkageType: ''
    returnType: std::string
    signature: std::string makeLocalProxyHeader()
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/proxy-protocol.cc:58,1
    - Dst: isIPv4
      Src: /src/pdns/pdns/dnsdistdist/proxy-protocol.cc:62,1
    - Dst: isIPv4
      Src: /src/pdns/pdns/dnsdistdist/proxy-protocol.cc:63,1
    - Dst: content::size
      Src: /src/pdns/pdns/dnsdistdist/proxy-protocol.cc:69,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/proxy-protocol.cc:69,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/proxy-protocol.cc:70,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/proxy-protocol.cc:70,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/proxy-protocol.cc:70,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/proxy-protocol.cc:70,1
    - Dst: content::size
      Src: /src/pdns/pdns/dnsdistdist/proxy-protocol.cc:70,1
    - Dst: content::size
      Src: /src/pdns/pdns/dnsdistdist/proxy-protocol.cc:72,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/proxy-protocol.cc:73,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/proxy-protocol.cc:74,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/proxy-protocol.cc:74,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/proxy-protocol.cc:74,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/proxy-protocol.cc:80,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/proxy-protocol.cc:81,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/proxy-protocol.cc:81,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/proxy-protocol.cc:81,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/proxy-protocol.cc:81,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsdistdist/proxy-protocol.cc:84,1
    - Dst: static_cast<uint16_t>
      Src: /src/pdns/pdns/dnsdistdist/proxy-protocol.cc:84,1
    - Dst: makeSimpleHeader
      Src: /src/pdns/pdns/dnsdistdist/proxy-protocol.cc:86,1
    - Dst: isIPv4
      Src: /src/pdns/pdns/dnsdistdist/proxy-protocol.cc:89,1
    - Dst: assert
      Src: /src/pdns/pdns/dnsdistdist/proxy-protocol.cc:90,1
    - Dst: std::string::append
      Src: /src/pdns/pdns/dnsdistdist/proxy-protocol.cc:91,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/proxy-protocol.cc:91,1
    - Dst: assert
      Src: /src/pdns/pdns/dnsdistdist/proxy-protocol.cc:92,1
    - Dst: std::string::append
      Src: /src/pdns/pdns/dnsdistdist/proxy-protocol.cc:93,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/proxy-protocol.cc:93,1
    - Dst: assert
      Src: /src/pdns/pdns/dnsdistdist/proxy-protocol.cc:96,1
    - Dst: std::string::append
      Src: /src/pdns/pdns/dnsdistdist/proxy-protocol.cc:97,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/proxy-protocol.cc:97,1
    - Dst: assert
      Src: /src/pdns/pdns/dnsdistdist/proxy-protocol.cc:98,1
    - Dst: std::string::append
      Src: /src/pdns/pdns/dnsdistdist/proxy-protocol.cc:99,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/proxy-protocol.cc:99,1
    - Dst: std::string::append
      Src: /src/pdns/pdns/dnsdistdist/proxy-protocol.cc:102,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/proxy-protocol.cc:102,1
    - Dst: std::string::append
      Src: /src/pdns/pdns/dnsdistdist/proxy-protocol.cc:103,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/proxy-protocol.cc:103,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsdistdist/proxy-protocol.cc:106,1
    - Dst: static_cast<uint16_t>
      Src: /src/pdns/pdns/dnsdistdist/proxy-protocol.cc:106,1
    - Dst: content::size
      Src: /src/pdns/pdns/dnsdistdist/proxy-protocol.cc:106,1
    - Dst: std::string::append
      Src: /src/pdns/pdns/dnsdistdist/proxy-protocol.cc:107,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/proxy-protocol.cc:107,1
    - Dst: std::string::append
      Src: /src/pdns/pdns/dnsdistdist/proxy-protocol.cc:108,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/proxy-protocol.cc:108,1
    - Dst: std::string::append
      Src: /src/pdns/pdns/dnsdistdist/proxy-protocol.cc:109,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/proxy-protocol.cc:109,1
    - Dst: content::data
      Src: /src/pdns/pdns/dnsdistdist/proxy-protocol.cc:109,1
    - Dst: content::size
      Src: /src/pdns/pdns/dnsdistdist/proxy-protocol.cc:109,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 34
    argCount: 4
    argNames:
    - tcp
    - ' source'
    - ' destination'
    - ' values'
    argTypes:
    - bool
    - ComboAddress
    - ComboAddress
    - std::vector<ProxyProtocolValue>
    assertStmts:
    - condition: (addrSize == sizeof(source.sin4.sin_addr.s_addr))
      pos:
        line_end: 89
        line_start: 89
        source_file: /src/pdns/pdns/dnsdistdist/proxy-protocol.cc
    - condition: (addrSize == sizeof(destination.sin6.sin6_addr.s6_addr))
      pos:
        line_end: 97
        line_start: 97
        source_file: /src/pdns/pdns/dnsdistdist/proxy-protocol.cc
    - condition: (addrSize == sizeof(source.sin6.sin6_addr.s6_addr))
      pos:
        line_end: 95
        line_start: 95
        source_file: /src/pdns/pdns/dnsdistdist/proxy-protocol.cc
    - condition: (addrSize == sizeof(destination.sin4.sin_addr.s_addr))
      pos:
        line_end: 91
        line_start: 91
        source_file: /src/pdns/pdns/dnsdistdist/proxy-protocol.cc
    constantsTouched: []
    func_position:
      end: 113
      start: 55
    functionDepth: 0
    functionLinenumber: 55
    functionLinenumberEnd: 113
    functionName: makeProxyHeader
    functionSourceFile: /src/pdns/pdns/dnsdistdist/proxy-protocol.cc
    functionUses: 19
    functionsReached:
    - pdns::max
    - std::to_string
    - std::string::append
    - std::runtime_error
    - assert
    - makeSimpleHeader
    - isIPv4
    - static_cast<uint16_t>
    - reinterpret_cast<const char*>
    - content::data
    - content::size
    - htons
    linkageType: ''
    returnType: std::string
    signature: std::string makeProxyHeader(bool tcp, const ComboAddress& source, const
      ComboAddress& destination, const std::vector<ProxyProtocolValue>& values)
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/proxy-protocol.cc:126,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/proxy-protocol.cc:128,1
    - Dst: std::memcmp
      Src: /src/pdns/pdns/dnsdistdist/proxy-protocol.cc:131,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/proxy-protocol.cc:131,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/proxy-protocol.cc:131,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/proxy-protocol.cc:131,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/proxy-protocol.cc:136,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/proxy-protocol.cc:146,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnsdistdist/proxy-protocol.cc:194,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/proxy-protocol.cc:194,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnsdistdist/proxy-protocol.cc:194,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/proxy-protocol.cc:194,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/proxy-protocol.cc:204,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/proxy-protocol.cc:205,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 64
    argCount: 5
    argNames:
    - ' header'
    - proxy
    - tcp
    - addrSizeOut
    - protocolOut
    argTypes:
    - Container
    - bool*
    - bool*
    - size_t*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 209
      start: 118
    functionDepth: 0
    functionLinenumber: 118
    functionLinenumberEnd: 209
    functionName: isProxyHeaderComplete
    functionSourceFile: /src/pdns/pdns/dnsdistdist/proxy-protocol.cc
    functionUses: 2
    functionsReached:
    - static_cast<uint8_t>
    - at
    - size
    - std::memcmp
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t isProxyHeaderComplete(const Container& header, bool* proxy,
      bool* tcp, size_t* addrSizeOut, uint8_t* protocolOut)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: isProxyHeaderComplete
      Src: /src/pdns/pdns/dnsdistdist/proxy-protocol.cc:218,1
    - Dst: makeComboAddressFromRaw
      Src: /src/pdns/pdns/dnsdistdist/proxy-protocol.cc:226,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/proxy-protocol.cc:226,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/proxy-protocol.cc:226,1
    - Dst: makeComboAddressFromRaw
      Src: /src/pdns/pdns/dnsdistdist/proxy-protocol.cc:228,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/proxy-protocol.cc:228,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/proxy-protocol.cc:228,1
    - Dst: setPort
      Src: /src/pdns/pdns/dnsdistdist/proxy-protocol.cc:230,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnsdistdist/proxy-protocol.cc:230,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/proxy-protocol.cc:230,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnsdistdist/proxy-protocol.cc:230,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/proxy-protocol.cc:230,1
    - Dst: setPort
      Src: /src/pdns/pdns/dnsdistdist/proxy-protocol.cc:232,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnsdistdist/proxy-protocol.cc:232,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/proxy-protocol.cc:232,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnsdistdist/proxy-protocol.cc:232,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/proxy-protocol.cc:232,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnsdistdist/proxy-protocol.cc:239,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/proxy-protocol.cc:239,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnsdistdist/proxy-protocol.cc:241,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/proxy-protocol.cc:241,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnsdistdist/proxy-protocol.cc:241,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/proxy-protocol.cc:241,1
    - Dst: push_back
      Src: /src/pdns/pdns/dnsdistdist/proxy-protocol.cc:249,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/proxy-protocol.cc:249,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/proxy-protocol.cc:249,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/proxy-protocol.cc:249,1
    - Dst: push_back
      Src: /src/pdns/pdns/dnsdistdist/proxy-protocol.cc:253,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 29
    argCount: 6
    argNames:
    - ' header'
    - ' proxy'
    - ' source'
    - ' destination'
    - ' tcp'
    - ' values'
    argTypes:
    - Container
    - bool
    - ComboAddress
    - ComboAddress
    - bool
    - std::vector<ProxyProtocolValue>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 260
      start: 214
    functionDepth: 0
    functionLinenumber: 214
    functionLinenumberEnd: 260
    functionName: parseProxyHeader
    functionSourceFile: /src/pdns/pdns/dnsdistdist/proxy-protocol.cc
    functionUses: 15
    functionsReached:
    - isProxyHeaderComplete
    - setPort
    - push_back
    - makeComboAddressFromRaw
    - static_cast<uint8_t>
    - reinterpret_cast<const char*>
    - std::string
    - at
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t parseProxyHeader(const Container& header, bool& proxy, ComboAddress&
      source, ComboAddress& destination, bool& tcp, std::vector<ProxyProtocolValue>&
      values)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 22
      start: 22
    functionDepth: 0
    functionLinenumber: 22
    functionLinenumberEnd: 22
    functionName: noinit_adaptor
    functionSourceFile: /src/pdns/pdns/dnsdistdist/noinitvector.hh
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void noinit_adaptor()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::forward<U>
      Src: /src/pdns/pdns/dnsdistdist/noinitvector.hh:25,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 1
    argNames:
    - ' u'
    argTypes:
    - U
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 25
      start: 25
    functionDepth: 0
    functionLinenumber: 25
    functionLinenumberEnd: 25
    functionName: noinit_adaptor
    functionSourceFile: /src/pdns/pdns/dnsdistdist/noinitvector.hh
    functionUses: 1
    functionsReached:
    - std::forward<U>
    linkageType: ''
    returnType: void
    signature: void noinit_adaptor(U&& u) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<const U&>
      Src: /src/pdns/pdns/dnsdistdist/noinitvector.hh:28,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' u'
    argTypes:
    - noinit_adaptor<U>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 28
      start: 28
    functionDepth: 0
    functionLinenumber: 28
    functionLinenumberEnd: 28
    functionName: noinit_adaptor
    functionSourceFile: /src/pdns/pdns/dnsdistdist/noinitvector.hh
    functionUses: 1
    functionsReached:
    - static_cast<const U&>
    linkageType: ''
    returnType: void
    signature: void noinit_adaptor(const noinit_adaptor<U>& u) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: U::U
      Src: /src/pdns/pdns/dnsdistdist/noinitvector.hh:32,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - p
    argTypes:
    - U*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 33
      start: 31
    functionDepth: 0
    functionLinenumber: 31
    functionLinenumberEnd: 33
    functionName: construct
    functionSourceFile: /src/pdns/pdns/dnsdistdist/noinitvector.hh
    functionUses: 0
    functionsReached:
    - U::U
    linkageType: ''
    returnType: void
    signature: void construct(U* p)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::forward<V>
      Src: /src/pdns/pdns/dnsdistdist/noinitvector.hh:37,1
    - Dst: std::forward<Args>
      Src: /src/pdns/pdns/dnsdistdist/noinitvector.hh:37,1
    - Dst: U::U
      Src: /src/pdns/pdns/dnsdistdist/noinitvector.hh:37,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 2
    argCount: 2
    argNames:
    - p
    - ' v'
    argTypes:
    - U*
    - V
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 36
    functionDepth: 0
    functionLinenumber: 36
    functionLinenumberEnd: 38
    functionName: construct
    functionSourceFile: /src/pdns/pdns/dnsdistdist/noinitvector.hh
    functionUses: 0
    functionsReached:
    - std::forward<V>
    - U::U
    - std::forward<Args>
    linkageType: ''
    returnType: void
    signature: void construct(U* p, V&& v, Args&&... args)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: U*::~U
      Src: /src/pdns/pdns/dnsdistdist/noinitvector.hh:42,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - p
    argTypes:
    - U*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 41
    functionDepth: 0
    functionLinenumber: 41
    functionLinenumberEnd: 43
    functionName: destroy
    functionSourceFile: /src/pdns/pdns/dnsdistdist/noinitvector.hh
    functionUses: 6
    functionsReached:
    - U*::~U
    linkageType: ''
    returnType: void
    signature: void destroy(U* p)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<const T&>
      Src: /src/pdns/pdns/dnsdistdist/noinitvector.hh:50,1
    - Dst: static_cast<const U&>
      Src: /src/pdns/pdns/dnsdistdist/noinitvector.hh:50,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' lhs'
    - ' rhs'
    argTypes:
    - noinit_adaptor<T>
    - noinit_adaptor<U>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 47
    functionDepth: 0
    functionLinenumber: 47
    functionLinenumberEnd: 51
    functionName: "operator==(const noinit_adaptor<T>& lhs,\n                       const
      noinit_adaptor<U>& rhs) noexcept"
    functionSourceFile: /src/pdns/pdns/dnsdistdist/noinitvector.hh
    functionUses: 0
    functionsReached:
    - static_cast<const U&>
    - static_cast<const T&>
    linkageType: ''
    returnType: bool
    signature: "bool operator==(const noinit_adaptor<T>& lhs,\n                       const
      noinit_adaptor<U>& rhs) noexcept"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' lhs'
    - ' rhs'
    argTypes:
    - noinit_adaptor<T>
    - noinit_adaptor<U>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 54
    functionDepth: 0
    functionLinenumber: 54
    functionLinenumberEnd: 58
    functionName: "operator!=(const noinit_adaptor<T>& lhs,\n                       const
      noinit_adaptor<U>& rhs) noexcept"
    functionSourceFile: /src/pdns/pdns/dnsdistdist/noinitvector.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: "bool operator!=(const noinit_adaptor<T>& lhs,\n                       const
      noinit_adaptor<U>& rhs) noexcept"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: noinit_adaptor
      Src: /src/pdns/pdns/dnsdistdist/noinitvector.hh:63,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' a'
    argTypes:
    - Allocator
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 61
    functionDepth: 0
    functionLinenumber: 61
    functionLinenumberEnd: 64
    functionName: noinit_adapt
    functionSourceFile: /src/pdns/pdns/dnsdistdist/noinitvector.hh
    functionUses: 0
    functionsReached:
    - noinit_adaptor
    linkageType: ''
    returnType: noinit_adaptor<Allocator>
    signature: noinit_adaptor<Allocator> noinit_adapt(const Allocator& a) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_uuidGenerator
      Src: /src/pdns/pdns/dnsdistdist/uuid-utils.cc:45,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 41
    functionDepth: 0
    functionLinenumber: 41
    functionLinenumberEnd: 46
    functionName: getUniqueID
    functionSourceFile: /src/pdns/pdns/dnsdistdist/uuid-utils.cc
    functionUses: 19
    functionsReached:
    - t_uuidGenerator
    linkageType: ''
    returnType: boost::uuids::uuid
    signature: boost::uuids::uuid getUniqueID()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: gen
      Src: /src/pdns/pdns/dnsdistdist/uuid-utils.cc:51,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' str'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 48
    functionDepth: 0
    functionLinenumber: 48
    functionLinenumberEnd: 52
    functionName: getUniqueID
    functionSourceFile: /src/pdns/pdns/dnsdistdist/uuid-utils.cc
    functionUses: 19
    functionsReached:
    - gen
    linkageType: ''
    returnType: boost::uuids::uuid
    signature: boost::uuids::uuid getUniqueID(const std::string& str)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - size
    - frame
    argTypes:
    - size_t
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 47
    functionDepth: 0
    functionLinenumber: 47
    functionLinenumberEnd: 50
    functionName: CircularWriteBuffer::CircularWriteBuffer
    functionSourceFile: /src/pdns/pdns/dnsdistdist/remote_logger.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void CircularWriteBuffer(size_t size, uint8_t frame)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 74
    functionDepth: 0
    functionLinenumber: 74
    functionLinenumberEnd: 74
    functionName: RemoteLoggerInterface::RemoteLoggerInterface
    functionSourceFile: /src/pdns/pdns/dnsdistdist/remote_logger.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void RemoteLoggerInterface()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 75
    functionDepth: 0
    functionLinenumber: 75
    functionLinenumberEnd: 75
    functionName: RemoteLoggerInterface::RemoteLoggerInterface
    functionSourceFile: /src/pdns/pdns/dnsdistdist/remote_logger.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void RemoteLoggerInterface(const RemoteLoggerInterface&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 76
    functionDepth: 0
    functionLinenumber: 76
    functionLinenumberEnd: 76
    functionName: RemoteLoggerInterface::RemoteLoggerInterface
    functionSourceFile: /src/pdns/pdns/dnsdistdist/remote_logger.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void RemoteLoggerInterface(RemoteLoggerInterface&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 77
    functionDepth: 0
    functionLinenumber: 77
    functionLinenumberEnd: 77
    functionName: '& operator=(const RemoteLoggerInterface&)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/remote_logger.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: RemoteLoggerInterface
    signature: RemoteLoggerInterface & operator=(const RemoteLoggerInterface&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 78
    functionDepth: 0
    functionLinenumber: 78
    functionLinenumberEnd: 78
    functionName: '& operator=(RemoteLoggerInterface&&)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/remote_logger.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: RemoteLoggerInterface
    signature: RemoteLoggerInterface & operator=(RemoteLoggerInterface&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 79
    functionDepth: 0
    functionLinenumber: 79
    functionLinenumberEnd: 79
    functionName: ~RemoteLoggerInterface()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/remote_logger.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~RemoteLoggerInterface()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 85
    functionDepth: 0
    functionLinenumber: 85
    functionLinenumberEnd: 85
    functionName: RemoteLoggerInterface::logQueries
    functionSourceFile: /src/pdns/pdns/dnsdistdist/remote_logger.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool logQueries() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 86
    functionDepth: 0
    functionLinenumber: 86
    functionLinenumberEnd: 86
    functionName: RemoteLoggerInterface::logResponses
    functionSourceFile: /src/pdns/pdns/dnsdistdist/remote_logger.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool logResponses() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 87
    functionDepth: 0
    functionLinenumber: 87
    functionLinenumberEnd: 87
    functionName: RemoteLoggerInterface::logNODs
    functionSourceFile: /src/pdns/pdns/dnsdistdist/remote_logger.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool logNODs() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 88
    functionDepth: 0
    functionLinenumber: 88
    functionLinenumberEnd: 88
    functionName: RemoteLoggerInterface::logUDRs
    functionSourceFile: /src/pdns/pdns/dnsdistdist/remote_logger.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool logUDRs() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - flag
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 89
    functionDepth: 0
    functionLinenumber: 89
    functionLinenumberEnd: 89
    functionName: RemoteLoggerInterface::setLogQueries
    functionSourceFile: /src/pdns/pdns/dnsdistdist/remote_logger.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setLogQueries(bool flag)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - flag
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 90
    functionDepth: 0
    functionLinenumber: 90
    functionLinenumberEnd: 90
    functionName: RemoteLoggerInterface::setLogResponses
    functionSourceFile: /src/pdns/pdns/dnsdistdist/remote_logger.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setLogResponses(bool flag)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - flag
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 91
    functionDepth: 0
    functionLinenumber: 91
    functionLinenumberEnd: 91
    functionName: RemoteLoggerInterface::setLogNODs
    functionSourceFile: /src/pdns/pdns/dnsdistdist/remote_logger.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setLogNODs(bool flag)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - flag
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 92
    functionDepth: 0
    functionLinenumber: 92
    functionLinenumberEnd: 92
    functionName: RemoteLoggerInterface::setLogUDRs
    functionSourceFile: /src/pdns/pdns/dnsdistdist/remote_logger.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setLogUDRs(bool flag)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - Stats
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 101
    functionDepth: 0
    functionLinenumber: 101
    functionLinenumberEnd: 108
    functionName: '& operator+=(const Stats& rhs)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/remote_logger.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Stats
    signature: Stats & operator+=(const Stats& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 133
      start: 133
    functionDepth: 0
    functionLinenumber: 133
    functionLinenumberEnd: 133
    functionName: RemoteLogger::RemoteLogger
    functionSourceFile: /src/pdns/pdns/dnsdistdist/remote_logger.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void RemoteLogger(const RemoteLogger&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 134
      start: 134
    functionDepth: 0
    functionLinenumber: 134
    functionLinenumberEnd: 134
    functionName: RemoteLogger::RemoteLogger
    functionSourceFile: /src/pdns/pdns/dnsdistdist/remote_logger.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void RemoteLogger(RemoteLogger&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 135
      start: 135
    functionDepth: 0
    functionLinenumber: 135
    functionLinenumberEnd: 135
    functionName: '& operator=(const RemoteLogger&)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/remote_logger.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: RemoteLogger
    signature: RemoteLogger & operator=(const RemoteLogger&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 136
      start: 136
    functionDepth: 0
    functionLinenumber: 136
    functionLinenumberEnd: 136
    functionName: '& operator=(RemoteLogger&&)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/remote_logger.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: RemoteLogger
    signature: RemoteLogger & operator=(RemoteLogger&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/remote_logger.hh:146,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 144
    functionDepth: 0
    functionLinenumber: 144
    functionLinenumberEnd: 147
    functionName: RemoteLogger::address
    functionSourceFile: /src/pdns/pdns/dnsdistdist/remote_logger.hh
    functionUses: 0
    functionsReached:
    - toStringWithPort
    linkageType: ''
    returnType: std::string
    signature: std::string address() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/remote_logger.hh:152,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/remote_logger.hh:152,1
    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: RemoteLogger::maxSize
    functionSourceFile: /src/pdns/pdns/dnsdistdist/remote_logger.hh
    functionUses: 0
    functionsReached:
    - pdns::max
    linkageType: ''
    returnType: size_t
    signature: size_t maxSize() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 157
      start: 154
    functionDepth: 0
    functionLinenumber: 154
    functionLinenumberEnd: 157
    functionName: RemoteLogger::name
    functionSourceFile: /src/pdns/pdns/dnsdistdist/remote_logger.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string name() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/remote_logger.hh:160,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/remote_logger.hh:161,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/remote_logger.hh:161,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/remote_logger.hh:161,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 162
      start: 158
    functionDepth: 0
    functionLinenumber: 158
    functionLinenumberEnd: 162
    functionName: RemoteLogger::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/remote_logger.hh
    functionUses: 0
    functionsReached:
    - toStringWithPort
    - std::to_string
    - lock
    linkageType: ''
    returnType: std::string
    signature: std::string toString() override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/remote_logger.hh:166,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 167
      start: 164
    functionDepth: 0
    functionLinenumber: 164
    functionLinenumberEnd: 167
    functionName: RemoteLogger::getStats
    functionSourceFile: /src/pdns/pdns/dnsdistdist/remote_logger.hh
    functionUses: 0
    functionsReached:
    - lock
    linkageType: ''
    returnType: RemoteLoggerInterface::Stats
    signature: RemoteLoggerInterface::Stats getStats() override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 172
      start: 169
    functionDepth: 0
    functionLinenumber: 169
    functionLinenumberEnd: 172
    functionName: RemoteLogger::stop
    functionSourceFile: /src/pdns/pdns/dnsdistdist/remote_logger.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void stop()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sodium_memzero
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:62,1
    - Dst: explicit_bzero
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:64,1
    - Dst: explicit_memset
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:66,1
    - Dst: gnutls_memset
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:68,1
    - Dst: reinterpret_cast<volatile unsigned char*>
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:77,1
    - Dst: memset
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:79,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - data
    - size
    argTypes:
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 59
    functionDepth: 0
    functionLinenumber: 59
    functionLinenumberEnd: 82
    functionName: SensitiveData::reallyClearContent
    functionSourceFile: /src/pdns/pdns/dnsdistdist/credentials.cc
    functionUses: 4
    functionsReached:
    - explicit_memset
    - gnutls_memset
    - memset
    - reinterpret_cast<volatile unsigned char*>
    - sodium_memzero
    - explicit_bzero
    linkageType: ''
    returnType: void
    signature: void SensitiveData::reallyClearContent(void* data, size_t size) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:85,1
    - Dst: SensitiveData::clear
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:89,1
    - Dst: SensitiveData::reallyClearContent
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:92,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:92,1
    - Dst: capacity
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:92,1
    - Dst: sodium_mlock
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:95,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:95,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:95,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ' data'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 84
    functionDepth: 0
    functionLinenumber: 84
    functionLinenumberEnd: 97
    functionName: SensitiveData::SensitiveData
    functionSourceFile: /src/pdns/pdns/dnsdistdist/credentials.cc
    functionUses: 0
    functionsReached:
    - std::move
    - SensitiveData::clear
    - sodium_mlock
    - size
    - capacity
    - data
    - SensitiveData::reallyClearContent
    linkageType: ''
    returnType: void
    signature: void SensitiveData::SensitiveData(std::string&& data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:101,1
    - Dst: clear
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:102,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - SensitiveData
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 104
      start: 99
    functionDepth: 1
    functionLinenumber: 99
    functionLinenumberEnd: 104
    functionName: '& SensitiveData::operator=(SensitiveData&& rhs) noexcept'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/credentials.cc
    functionUses: 0
    functionsReached:
    - clear
    - std::move
    linkageType: ''
    returnType: SensitiveData
    signature: SensitiveData & SensitiveData::operator=(SensitiveData&& rhs) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: resize
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:108,1
    - Dst: sodium_mlock
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:110,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:110,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:110,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - bytes
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 112
      start: 106
    functionDepth: 1
    functionLinenumber: 106
    functionLinenumberEnd: 112
    functionName: SensitiveData::SensitiveData
    functionSourceFile: /src/pdns/pdns/dnsdistdist/credentials.cc
    functionUses: 0
    functionsReached:
    - size
    - resize
    - sodium_mlock
    - data
    linkageType: ''
    returnType: void
    signature: void SensitiveData::SensitiveData(size_t bytes)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SensitiveData::clear
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:116,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 114
    functionDepth: 0
    functionLinenumber: 114
    functionLinenumberEnd: 117
    functionName: SensitiveData::~SensitiveData()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/credentials.cc
    functionUses: 0
    functionsReached:
    - SensitiveData::clear
    linkageType: ''
    returnType: void
    signature: void SensitiveData::~SensitiveData()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SensitiveData::reallyClearContent
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:124,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:124,1
    - Dst: capacity
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:124,1
    - Dst: sodium_munlock
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:125,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:125,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:125,1
    - Dst: SensitiveData::clear
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:127,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 119
    functionDepth: 0
    functionLinenumber: 119
    functionLinenumberEnd: 128
    functionName: SensitiveData::clear
    functionSourceFile: /src/pdns/pdns/dnsdistdist/credentials.cc
    functionUses: 8
    functionsReached:
    - SensitiveData::clear
    - size
    - capacity
    - data
    - SensitiveData::reallyClearContent
    - sodium_munlock
    linkageType: ''
    returnType: void
    signature: void SensitiveData::clear()
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: std::unique_ptr<EVP_PKEY_CTX, void (*)(EVP_PKEY_CTX*)>
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:133,1
    - Dst: EVP_PKEY_CTX_new_id
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:133,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:135,1
    - Dst: EVP_PKEY_derive_init
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:138,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:138,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:139,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:145,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:145,1
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:147,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:147,1
    - Dst: EVP_PKEY_CTX_set1_pbe_pass
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:149,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:149,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:149,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:150,1
    - Dst: EVP_PKEY_CTX_set1_scrypt_salt
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:153,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:153,1
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:153,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:153,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:153,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:154,1
    - Dst: EVP_PKEY_CTX_set_scrypt_N
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:158,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:158,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:159,1
    - Dst: EVP_PKEY_CTX_set_scrypt_r
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:162,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:162,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:163,1
    - Dst: EVP_PKEY_CTX_set_scrypt_p
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:166,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:166,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:167,1
    - Dst: std::string::resize
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:171,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:172,1
    - Dst: EVP_PKEY_derive
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:175,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:175,1
    - Dst: reinterpret_cast<unsigned char*>
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:175,1
    - Dst: std::string::data
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:175,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:176,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:181,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 28
    argCount: 5
    argNames:
    - ' password'
    - ' salt'
    - workFactor
    - parallelFactor
    - blockSize
    argTypes:
    - std::string
    - std::string
    - uint64_t
    - uint64_t
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 183
      start: 130
    functionDepth: 1
    functionLinenumber: 130
    functionLinenumberEnd: 183
    functionName: hashPasswordInternal
    functionSourceFile: /src/pdns/pdns/dnsdistdist/credentials.cc
    functionUses: 4
    functionsReached:
    - EVP_PKEY_CTX_set_scrypt_N
    - EVP_PKEY_CTX_set1_scrypt_salt
    - std::string::size
    - EVP_PKEY_CTX_set_scrypt_p
    - size
    - reinterpret_cast<unsigned char*>
    - std::unique_ptr<EVP_PKEY_CTX, void (*)(EVP_PKEY_CTX*)>
    - reinterpret_cast<const unsigned char*>
    - EVP_PKEY_CTX_new_id
    - EVP_PKEY_CTX_set1_pbe_pass
    - EVP_PKEY_derive
    - auto::get
    - std::runtime_error
    - std::string::data
    - std::string::resize
    - reinterpret_cast<const char*>
    - EVP_PKEY_CTX_set_scrypt_r
    - EVP_PKEY_derive_init
    - data
    linkageType: ''
    returnType: std::string
    signature: std::string hashPasswordInternal([[maybe_unused]] const std::string&
      password, [[maybe_unused]] const std::string& salt, [[maybe_unused]] uint64_t
      workFactor, [[maybe_unused]] uint64_t parallelFactor, [[maybe_unused]] uint64_t
      blockSize)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::string::resize
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:190,1
    - Dst: RAND_bytes
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:193,1
    - Dst: reinterpret_cast<unsigned char*>
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:193,1
    - Dst: std::string::data
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:193,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:193,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:193,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:194,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:199,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 201
      start: 185
    functionDepth: 1
    functionLinenumber: 185
    functionLinenumberEnd: 201
    functionName: generateRandomSalt
    functionSourceFile: /src/pdns/pdns/dnsdistdist/credentials.cc
    functionUses: 2
    functionsReached:
    - RAND_bytes
    - std::runtime_error
    - std::string::data
    - reinterpret_cast<unsigned char*>
    - std::string::resize
    - std::string::size
    - static_cast<int>
    linkageType: ''
    returnType: std::string
    signature: std::string generateRandomSalt()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:207,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:207,1
    - Dst: std::string::reserve
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:211,1
    - Dst: std::string::append
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:213,1
    - Dst: std::string::append
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:214,1
    - Dst: std::string::append
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:215,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:215,1
    - Dst: static_cast<uint64_t>
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:215,1
    - Dst: std::log2
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:215,1
    - Dst: std::string::append
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:216,1
    - Dst: std::string::append
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:217,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:217,1
    - Dst: std::string::append
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:218,1
    - Dst: std::string::append
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:219,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:219,1
    - Dst: std::string::append
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:220,1
    - Dst: generateRandomSalt
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:221,1
    - Dst: std::string::append
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:222,1
    - Dst: Base64Encode
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:222,1
    - Dst: std::string::append
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:223,1
    - Dst: hashPasswordInternal
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:225,1
    - Dst: std::string::append
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:227,1
    - Dst: Base64Encode
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:227,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:231,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 4
    argNames:
    - ' password'
    - workFactor
    - parallelFactor
    - blockSize
    argTypes:
    - std::string
    - uint64_t
    - uint64_t
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 233
      start: 203
    functionDepth: 0
    functionLinenumber: 203
    functionLinenumberEnd: 233
    functionName: hashPassword
    functionSourceFile: /src/pdns/pdns/dnsdistdist/credentials.cc
    functionUses: 7
    functionsReached:
    - std::string::append
    - std::to_string
    - std::string::reserve
    - std::runtime_error
    - std::log2
    - static_cast<uint64_t>
    - generateRandomSalt
    - hashPasswordInternal
    - Base64Encode
    linkageType: ''
    returnType: std::string
    signature: std::string hashPassword([[maybe_unused]] const std::string& password,
      [[maybe_unused]] uint64_t workFactor, [[maybe_unused]] uint64_t parallelFactor,
      [[maybe_unused]] uint64_t blockSize)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hashPassword
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:238,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:240,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 3
    argCount: 1
    argNames:
    - ' password'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 242
      start: 235
    functionDepth: 0
    functionLinenumber: 235
    functionLinenumberEnd: 242
    functionName: hashPassword
    functionSourceFile: /src/pdns/pdns/dnsdistdist/credentials.cc
    functionUses: 8
    functionsReached:
    - hashPassword
    - std::runtime_error
    linkageType: ''
    returnType: std::string
    signature: std::string hashPassword([[maybe_unused]] const std::string& password)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hashPasswordInternal
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:247,1
    - Dst: constantTimeStringEquals
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:248,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:250,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 3
    argCount: 6
    argNames:
    - ' binaryHash'
    - ' salt'
    - workFactor
    - parallelFactor
    - blockSize
    - ' binaryPassword'
    argTypes:
    - std::string
    - std::string
    - uint64_t
    - uint64_t
    - uint64_t
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 252
      start: 244
    functionDepth: 0
    functionLinenumber: 244
    functionLinenumberEnd: 252
    functionName: verifyPassword
    functionSourceFile: /src/pdns/pdns/dnsdistdist/credentials.cc
    functionUses: 4
    functionsReached:
    - constantTimeStringEquals
    - hashPasswordInternal
    - std::runtime_error
    linkageType: ''
    returnType: bool
    signature: bool verifyPassword([[maybe_unused]] const std::string& binaryHash,
      [[maybe_unused]] const std::string& salt, [[maybe_unused]] uint64_t workFactor,
      [[maybe_unused]] uint64_t parallelFactor, [[maybe_unused]] uint64_t blockSize,
      [[maybe_unused]] const std::string& binaryPassword)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: find
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:258,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:258,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:259,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:260,1
    - Dst: substr
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:263,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:263,1
    - Dst: std::vector::reserve
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:265,1
    - Dst: stringtok
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:266,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:267,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:268,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:268,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:268,1
    - Dst: boost::starts_with
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:271,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:271,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:272,1
    - Dst: boost::starts_with
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:275,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:275,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:276,1
    - Dst: boost::starts_with
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:279,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:279,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:280,1
    - Dst: find
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:284,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:285,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:286,1
    - Dst: pdns::checked_stoi<uint64_t>
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:290,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:290,1
    - Dst: static_cast<uint64_t>
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:291,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:293,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:293,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:293,1
    - Dst: pdns::checked_stoi<uint64_t>
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:296,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:296,1
    - Dst: pdns::checked_stoi<uint64_t>
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:297,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:297,1
    - Dst: substr
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:299,1
    - Dst: reserve
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:300,1
    - Dst: B64Decode
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:301,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:303,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:304,1
    - Dst: reserve
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:307,1
    - Dst: B64Decode
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:308,1
    - Dst: substr
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:308,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:310,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:311,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:315,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 42
    argCount: 6
    argNames:
    - ' hash'
    - ' salt'
    - ' hashedPassword'
    - ' workFactor'
    - ' parallelFactor'
    - ' blockSize'
    argTypes:
    - std::string
    - std::string
    - std::string
    - uint64_t
    - uint64_t
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 318
      start: 255
    functionDepth: 0
    functionLinenumber: 255
    functionLinenumberEnd: 318
    functionName: parseHashed
    functionSourceFile: /src/pdns/pdns/dnsdistdist/credentials.cc
    functionUses: 2
    functionsReached:
    - stringtok
    - std::vector::size
    - std::to_string
    - std::runtime_error
    - boost::starts_with
    - static_cast<uint64_t>
    - B64Decode
    - size
    - std::vector::reserve
    - reserve
    - substr
    - std::vector::at
    - pdns::checked_stoi<uint64_t>
    - find
    linkageType: ''
    returnType: void
    signature: void parseHashed([[maybe_unused]] const std::string& hash, [[maybe_unused]]
      std::string& salt, [[maybe_unused]] std::string& hashedPassword, [[maybe_unused]]
      uint64_t& workFactor, [[maybe_unused]] uint64_t& parallelFactor, [[maybe_unused]]
      uint64_t& blockSize)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: isPasswordHashed
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:322,1
    - Dst: parseHashed
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:332,1
    - Dst: hashPasswordInternal
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:334,1
    - Dst: constantTimeStringEquals
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:336,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:338,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 2
    argNames:
    - ' hash'
    - ' password'
    argTypes:
    - std::string
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 340
      start: 320
    functionDepth: 0
    functionLinenumber: 320
    functionLinenumberEnd: 340
    functionName: verifyPassword
    functionSourceFile: /src/pdns/pdns/dnsdistdist/credentials.cc
    functionUses: 4
    functionsReached:
    - std::runtime_error
    - parseHashed
    - constantTimeStringEquals
    - isPasswordHashed
    - hashPasswordInternal
    linkageType: ''
    returnType: bool
    signature: bool verifyPassword(const std::string& hash, [[maybe_unused]] const
      std::string& password)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:345,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:345,1
    - Dst: boost::starts_with
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:349,1
    - Dst: find
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:353,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:353,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:354,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:358,1
    - Dst: find
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:364,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:365,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:375,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 24
    argCount: 1
    argNames:
    - ' password'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 383
      start: 342
    functionDepth: 0
    functionLinenumber: 342
    functionLinenumberEnd: 383
    functionName: isPasswordHashed
    functionSourceFile: /src/pdns/pdns/dnsdistdist/credentials.cc
    functionUses: 5
    functionsReached:
    - boost::starts_with
    - size
    - find
    linkageType: ''
    returnType: bool
    signature: bool isPasswordHashed([[maybe_unused]] const std::string& password)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:388,1
    - Dst: CredentialsHolder::isHashingAvailable
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:390,1
    - Dst: isPasswordHashed
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:391,1
    - Dst: getString
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:391,1
    - Dst: generateRandomSalt
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:393,1
    - Dst: SensitiveData
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:397,1
    - Dst: hashPasswordInternal
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:397,1
    - Dst: getString
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:397,1
    - Dst: parseHashed
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:405,1
    - Dst: getString
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:405,1
    - Dst: SensitiveData
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:406,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:406,1
    - Dst: dns_random_uint32
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:411,1
    - Dst: burtle
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:413,1
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:413,1
    - Dst: getString
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:413,1
    - Dst: getString
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:413,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 22
    argCount: 2
    argNames:
    - ' password'
    - hashPlaintext
    argTypes:
    - std::string
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 415
      start: 387
    functionDepth: 0
    functionLinenumber: 387
    functionLinenumberEnd: 415
    functionName: CredentialsHolder::CredentialsHolder
    functionSourceFile: /src/pdns/pdns/dnsdistdist/credentials.cc
    functionUses: 0
    functionsReached:
    - dns_random_uint32
    - std::move
    - SensitiveData
    - CredentialsHolder::isHashingAvailable
    - generateRandomSalt
    - parseHashed
    - burtle
    - reinterpret_cast<const unsigned char*>
    - getString
    - isPasswordHashed
    - hashPasswordInternal
    linkageType: ''
    returnType: void
    signature: void CredentialsHolder::CredentialsHolder(std::string&& password, bool
      hashPlaintext)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 421
      start: 417
    functionDepth: 0
    functionLinenumber: 417
    functionLinenumberEnd: 421
    functionName: CredentialsHolder::~CredentialsHolder()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/credentials.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void CredentialsHolder::~CredentialsHolder()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: verifyPassword
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:426,1
    - Dst: getString
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:426,1
    - Dst: burtle
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:429,1
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:429,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:429,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:429,1
    - Dst: constantTimeStringEquals
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:434,1
    - Dst: getString
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:434,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - ' password'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 435
      start: 423
    functionDepth: 0
    functionLinenumber: 423
    functionLinenumberEnd: 435
    functionName: CredentialsHolder::matches
    functionSourceFile: /src/pdns/pdns/dnsdistdist/credentials.cc
    functionUses: 0
    functionsReached:
    - constantTimeStringEquals
    - size
    - reinterpret_cast<const unsigned char*>
    - burtle
    - data
    - getString
    - verifyPassword
    linkageType: ''
    returnType: bool
    signature: bool CredentialsHolder::matches(const std::string& password) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 444
      start: 437
    functionDepth: 0
    functionLinenumber: 437
    functionLinenumberEnd: 444
    functionName: CredentialsHolder::isHashingAvailable
    functionSourceFile: /src/pdns/pdns/dnsdistdist/credentials.cc
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool CredentialsHolder::isHashingAvailable()
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: open
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:459,1
    - Dst: tcgetattr
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:461,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:462,1
    - Dst: tcsetattr
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:464,1
    - Dst: FDWrapper
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:469,1
    - Dst: dup
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:469,1
    - Dst: open
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:473,1
    - Dst: FDWrapper
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:475,1
    - Dst: dup
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:475,1
    - Dst: sigemptyset
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:481,1
    - Dst: sigaction
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:484,1
    - Dst: sigaction
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:485,1
    - Dst: sigaction
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:486,1
    - Dst: sigaction
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:487,1
    - Dst: sigaction
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:488,1
    - Dst: sigaction
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:489,1
    - Dst: sigaction
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:490,1
    - Dst: sigaction
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:491,1
    - Dst: sigaction
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:492,1
    - Dst: std::string::reserve
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:497,1
    - Dst: read
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:501,1
    - Dst: std::string::push_back
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:503,1
    - Dst: tcsetattr
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:511,1
    - Dst: sigaction
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:515,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/credentials.cc:518,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 43
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 519
      start: 449
    functionDepth: 0
    functionLinenumber: 449
    functionLinenumberEnd: 519
    functionName: CredentialsHolder::readFromTerminal
    functionSourceFile: /src/pdns/pdns/dnsdistdist/credentials.cc
    functionUses: 1
    functionsReached:
    - memcpy
    - std::move
    - read
    - std::string::reserve
    - tcgetattr
    - open
    - dup
    - tcsetattr
    - FDWrapper
    - sigemptyset
    - std::string::push_back
    - sigaction
    linkageType: ''
    returnType: SensitiveData
    signature: SensitiveData CredentialsHolder::readFromTerminal()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 20
      start: 18
    functionDepth: 0
    functionLinenumber: 18
    functionLinenumberEnd: 20
    functionName: ~SNMPAgent()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/snmp-agent.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~SNMPAgent()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::thread
      Src: /src/pdns/pdns/dnsdistdist/snmp-agent.hh:25,1
    - Dst: detach
      Src: /src/pdns/pdns/dnsdistdist/snmp-agent.hh:26,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 28
      start: 22
    functionDepth: 0
    functionLinenumber: 22
    functionLinenumberEnd: 28
    functionName: SNMPAgent::run
    functionSourceFile: /src/pdns/pdns/dnsdistdist/snmp-agent.hh
    functionUses: 0
    functionsReached:
    - std::thread
    - detach
    linkageType: ''
    returnType: void
    signature: void run()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: add_bool
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:51,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 3
    argNames:
    - ' writer'
    - field
    - value
    argTypes:
    - protozero::pbf_writer
    - uint8_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 48
    functionDepth: 0
    functionLinenumber: 48
    functionLinenumberEnd: 53
    functionName: pdns::trace::encode
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    functionUses: 58
    functionsReached:
    - add_bool
    linkageType: ''
    returnType: void
    signature: void encode(protozero::pbf_writer& writer, uint8_t field, bool value,
      bool always = false)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: add_uint32
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:58,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 3
    argNames:
    - ' writer'
    - field
    - value
    argTypes:
    - protozero::pbf_writer
    - uint8_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 55
    functionDepth: 0
    functionLinenumber: 55
    functionLinenumberEnd: 60
    functionName: pdns::trace::encode
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    functionUses: 58
    functionsReached:
    - add_uint32
    linkageType: ''
    returnType: void
    signature: void encode(protozero::pbf_writer& writer, uint8_t field, uint32_t
      value, bool always = false)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: add_fixed32
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:65,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - ' writer'
    - field
    - value
    argTypes:
    - protozero::pbf_writer
    - uint8_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 62
    functionDepth: 0
    functionLinenumber: 62
    functionLinenumberEnd: 67
    functionName: pdns::trace::encodeFixed
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    functionUses: 12
    functionsReached:
    - add_fixed32
    linkageType: ''
    returnType: void
    signature: void encodeFixed(protozero::pbf_writer& writer, uint8_t field, uint32_t
      value)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: add_int64
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:72,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 3
    argNames:
    - ' writer'
    - field
    - value
    argTypes:
    - protozero::pbf_writer
    - uint8_t
    - int64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 69
    functionDepth: 0
    functionLinenumber: 69
    functionLinenumberEnd: 74
    functionName: pdns::trace::encode
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    functionUses: 58
    functionsReached:
    - add_int64
    linkageType: ''
    returnType: void
    signature: void encode(protozero::pbf_writer& writer, uint8_t field, int64_t value,
      bool always = false)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: add_uint64
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:79,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 3
    argNames:
    - ' writer'
    - field
    - value
    argTypes:
    - protozero::pbf_writer
    - uint8_t
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 76
    functionDepth: 0
    functionLinenumber: 76
    functionLinenumberEnd: 81
    functionName: pdns::trace::encode
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    functionUses: 58
    functionsReached:
    - add_uint64
    linkageType: ''
    returnType: void
    signature: void encode(protozero::pbf_writer& writer, uint8_t field, uint64_t
      value, bool always = false)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: add_fixed64
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:86,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - ' writer'
    - field
    - value
    argTypes:
    - protozero::pbf_writer
    - uint8_t
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 83
    functionDepth: 0
    functionLinenumber: 83
    functionLinenumberEnd: 88
    functionName: pdns::trace::encodeFixed
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    functionUses: 12
    functionsReached:
    - add_fixed64
    linkageType: ''
    returnType: void
    signature: void encodeFixed(protozero::pbf_writer& writer, uint8_t field, uint64_t
      value)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: add_double
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:93,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 3
    argNames:
    - ' writer'
    - field
    - value
    argTypes:
    - protozero::pbf_writer
    - uint8_t
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 90
    functionDepth: 0
    functionLinenumber: 90
    functionLinenumberEnd: 95
    functionName: pdns::trace::encode
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    functionUses: 58
    functionsReached:
    - add_double
    linkageType: ''
    returnType: void
    signature: void encode(protozero::pbf_writer& writer, uint8_t field, double value,
      bool always = false)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:99,1
    - Dst: add_string
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:100,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 3
    argNames:
    - ' writer'
    - field
    - ' value'
    argTypes:
    - protozero::pbf_writer
    - uint8_t
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 97
    functionDepth: 0
    functionLinenumber: 97
    functionLinenumberEnd: 102
    functionName: pdns::trace::encode
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    functionUses: 58
    functionsReached:
    - empty
    - add_string
    linkageType: ''
    returnType: void
    signature: void encode(protozero::pbf_writer& writer, uint8_t field, const std::string&
      value, bool always = false)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:106,1
    - Dst: add_bytes
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:107,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:107,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:107,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:107,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 3
    argNames:
    - ' writer'
    - field
    - ' value'
    argTypes:
    - protozero::pbf_writer
    - uint8_t
    - std::vector<uint8_t>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 104
    functionDepth: 0
    functionLinenumber: 104
    functionLinenumberEnd: 109
    functionName: pdns::trace::encode
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    functionUses: 58
    functionsReached:
    - size
    - add_bytes
    - reinterpret_cast<const char*>
    - data
    - empty
    linkageType: ''
    returnType: void
    signature: void encode(protozero::pbf_writer& writer, uint8_t field, const std::vector<uint8_t>&
      value, bool always = false)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:115,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - ' writer'
    - ' vec'
    argTypes:
    - protozero::pbf_writer
    - std::vector<T>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 112
    functionDepth: 0
    functionLinenumber: 112
    functionLinenumberEnd: 117
    functionName: pdns::trace::encode
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    functionUses: 59
    functionsReached:
    - pdns::trace::encode
    linkageType: ''
    returnType: void
    signature: void encode(protozero::pbf_writer& writer, const std::vector<T>& vec)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:124,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 3
    argNames:
    - ' writer'
    - field
    - ' vec'
    argTypes:
    - protozero::pbf_writer
    - uint8_t
    - std::vector<T>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 120
    functionDepth: 0
    functionLinenumber: 120
    functionLinenumberEnd: 126
    functionName: pdns::trace::encode
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    functionUses: 60
    functionsReached:
    - pdns::trace::encode
    linkageType: ''
    returnType: void
    signature: void encode(protozero::pbf_writer& writer, uint8_t field, const std::vector<T>&
      vec)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: next
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:132,1
    - Dst: tag
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:133,1
    - Dst: get_message
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:134,1
    - Dst: std::vector::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:135,1
    - Dst: YAML::decode
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:135,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:138,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - ' reader'
    argTypes:
    - protozero::pbf_reader
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 139
      start: 129
    functionDepth: 1
    functionLinenumber: 129
    functionLinenumberEnd: 139
    functionName: pdns::trace::decode
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    functionUses: 0
    functionsReached:
    - next
    - std::move
    - tag
    - YAML::decode
    - std::vector::emplace_back
    - get_message
    linkageType: ''
    returnType: T
    signature: T decode(protozero::pbf_reader& reader)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:147,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' writer'
    argTypes:
    - protozero::pbf_writer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 148
      start: 145
    functionDepth: 0
    functionLinenumber: 145
    functionLinenumberEnd: 148
    functionName: pdns::trace::encode
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    functionUses: 61
    functionsReached:
    - pdns::trace::encode
    linkageType: ''
    returnType: void
    signature: void encode(protozero::pbf_writer& writer) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:161,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' writer'
    argTypes:
    - protozero::pbf_writer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 162
      start: 159
    functionDepth: 0
    functionLinenumber: 159
    functionLinenumberEnd: 162
    functionName: pdns::trace::encode
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    functionUses: 62
    functionsReached:
    - pdns::trace::encode
    linkageType: ''
    returnType: void
    signature: void encode(protozero::pbf_writer& writer) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: toLogString
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:177,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' ostrm'
    - ' val'
    argTypes:
    - std::ostream
    - AnyValue
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 178
      start: 175
    functionDepth: 0
    functionLinenumber: 175
    functionLinenumberEnd: 178
    functionName: '& operator<<(std::ostream& ostrm, const AnyValue& val)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    functionUses: 0
    functionsReached:
    - toLogString
    linkageType: ''
    returnType: std::ostream
    signature: std::ostream & operator<<(std::ostream& ostrm, const AnyValue& val)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 226
      start: 225
    functionDepth: 0
    functionLinenumber: 225
    functionLinenumberEnd: 226
    functionName: pdns::trace::TraceID
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void TraceID()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::copy
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:230,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:230,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:230,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:230,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' arg'
    argTypes:
    - std::initializer_list<uint8_t>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 231
      start: 227
    functionDepth: 0
    functionLinenumber: 227
    functionLinenumberEnd: 231
    functionName: pdns::trace::TraceID
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    functionUses: 0
    functionsReached:
    - end
    - std::copy
    - begin
    linkageType: ''
    returnType: void
    signature: void TraceID(const std::initializer_list<uint8_t>& arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: toLogString
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:236,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' ostrm'
    - ' val'
    argTypes:
    - std::ostream
    - TraceID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 237
      start: 234
    functionDepth: 0
    functionLinenumber: 234
    functionLinenumberEnd: 237
    functionName: '& operator<<(std::ostream& ostrm, const TraceID& val)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    functionUses: 0
    functionsReached:
    - toLogString
    linkageType: ''
    returnType: std::ostream
    signature: std::ostream & operator<<(std::ostream& ostrm, const TraceID& val)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TraceID::makeRandom
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:242,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 244
      start: 239
    functionDepth: 0
    functionLinenumber: 239
    functionLinenumberEnd: 244
    functionName: pdns::trace::getRandomTraceID
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    functionUses: 1
    functionsReached:
    - TraceID::makeRandom
    linkageType: ''
    returnType: TraceID
    signature: TraceID getRandomTraceID()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dns_random
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:248,1
    - Dst: pdns::trace::data
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:248,1
    - Dst: pdns::trace::size
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:248,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 249
      start: 246
    functionDepth: 0
    functionLinenumber: 246
    functionLinenumberEnd: 249
    functionName: pdns::trace::makeRandom
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    functionUses: 2
    functionsReached:
    - pdns::trace::data
    - dns_random
    - pdns::trace::size
    linkageType: ''
    returnType: void
    signature: void makeRandom()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::fill
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:253,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 254
      start: 251
    functionDepth: 0
    functionLinenumber: 251
    functionLinenumberEnd: 254
    functionName: pdns::trace::clear
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    functionUses: 6
    functionsReached:
    - pdns::trace::fill
    linkageType: ''
    returnType: void
    signature: void clear()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 261
      start: 260
    functionDepth: 0
    functionLinenumber: 260
    functionLinenumberEnd: 261
    functionName: pdns::trace::SpanID
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void SpanID()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::copy
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:265,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:265,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:265,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:265,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' arg'
    argTypes:
    - std::initializer_list<uint8_t>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 266
      start: 262
    functionDepth: 0
    functionLinenumber: 262
    functionLinenumberEnd: 266
    functionName: pdns::trace::SpanID
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    functionUses: 0
    functionsReached:
    - end
    - std::copy
    - begin
    linkageType: ''
    returnType: void
    signature: void SpanID(const std::initializer_list<uint8_t>& arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: toLogString
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:271,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' ostrm'
    - ' val'
    argTypes:
    - std::ostream
    - SpanID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 272
      start: 269
    functionDepth: 0
    functionLinenumber: 269
    functionLinenumberEnd: 272
    functionName: '& operator<<(std::ostream& ostrm, const SpanID& val)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    functionUses: 0
    functionsReached:
    - toLogString
    linkageType: ''
    returnType: std::ostream
    signature: std::ostream & operator<<(std::ostream& ostrm, const SpanID& val)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SpanID::makeRandom
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:277,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 279
      start: 274
    functionDepth: 0
    functionLinenumber: 274
    functionLinenumberEnd: 279
    functionName: pdns::trace::getRandomSpanID
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    functionUses: 1
    functionsReached:
    - SpanID::makeRandom
    linkageType: ''
    returnType: SpanID
    signature: SpanID getRandomSpanID()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dns_random
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:283,1
    - Dst: pdns::trace::data
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:283,1
    - Dst: pdns::trace::size
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:283,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 284
      start: 281
    functionDepth: 0
    functionLinenumber: 281
    functionLinenumberEnd: 284
    functionName: pdns::trace::makeRandom
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    functionUses: 2
    functionsReached:
    - pdns::trace::data
    - dns_random
    - pdns::trace::size
    linkageType: ''
    returnType: void
    signature: void makeRandom()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::fill
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:288,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 289
      start: 286
    functionDepth: 0
    functionLinenumber: 286
    functionLinenumberEnd: 289
    functionName: pdns::trace::clear
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    functionUses: 6
    functionsReached:
    - pdns::trace::fill
    linkageType: ''
    returnType: void
    signature: void clear()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:295,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:295,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:296,1
    - Dst: std::copy
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:298,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:298,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:298,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:298,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - ' trace'
    - ' data'
    argTypes:
    - TraceID
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 299
      start: 293
    functionDepth: 0
    functionLinenumber: 293
    functionLinenumberEnd: 299
    functionName: pdns::trace::fill
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    functionUses: 11
    functionsReached:
    - std::runtime_error
    - end
    - size
    - begin
    - std::copy
    linkageType: ''
    returnType: void
    signature: void fill(TraceID& trace, const std::string& data)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:303,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:303,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:304,1
    - Dst: std::copy
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:306,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:306,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:306,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:306,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - ' span'
    - ' data'
    argTypes:
    - SpanID
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 307
      start: 301
    functionDepth: 0
    functionLinenumber: 301
    functionLinenumberEnd: 307
    functionName: pdns::trace::fill
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    functionUses: 11
    functionsReached:
    - std::runtime_error
    - end
    - size
    - begin
    - std::copy
    linkageType: ''
    returnType: void
    signature: void fill(SpanID& span, const std::string& data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::fill
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:311,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:311,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' trace'
    - data
    - size
    argTypes:
    - TraceID
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 312
      start: 309
    functionDepth: 0
    functionLinenumber: 309
    functionLinenumberEnd: 312
    functionName: pdns::trace::fill
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    functionUses: 12
    functionsReached:
    - std::string
    - pdns::trace::fill
    linkageType: ''
    returnType: void
    signature: void fill(TraceID& trace, const char* data, size_t size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::fill
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:316,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:316,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' span'
    - data
    - size
    argTypes:
    - SpanID
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 317
      start: 314
    functionDepth: 0
    functionLinenumber: 314
    functionLinenumberEnd: 317
    functionName: pdns::trace::fill
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    functionUses: 13
    functionsReached:
    - std::string
    - pdns::trace::fill
    linkageType: ''
    returnType: void
    signature: void fill(SpanID& span, const char* data, size_t size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: add_bytes
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:321,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:321,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:321,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:321,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' writer'
    - field
    - ' value'
    argTypes:
    - protozero::pbf_writer
    - uint8_t
    - TraceID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 322
      start: 319
    functionDepth: 0
    functionLinenumber: 319
    functionLinenumberEnd: 322
    functionName: pdns::trace::encode
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    functionUses: 62
    functionsReached:
    - add_bytes
    - reinterpret_cast<const char*>
    - size
    - data
    linkageType: ''
    returnType: void
    signature: void encode(protozero::pbf_writer& writer, uint8_t field, const TraceID&
      value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: get_view
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:327,1
    - Dst: std::min
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:328,1
    - Dst: TraceID::size
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:328,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:328,1
    - Dst: std::copy
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:329,1
    - Dst: auto::data
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:329,1
    - Dst: auto::data
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:329,1
    - Dst: TraceID::begin
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:329,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ' reader'
    argTypes:
    - protozero::pbf_reader
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 331
      start: 324
    functionDepth: 0
    functionLinenumber: 324
    functionLinenumberEnd: 331
    functionName: pdns::trace::decodeTraceID
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    functionUses: 0
    functionsReached:
    - std::copy
    - std::min
    - auto::data
    - get_view
    - TraceID::begin
    - auto::size
    - TraceID::size
    linkageType: ''
    returnType: TraceID
    signature: TraceID decodeTraceID(protozero::pbf_reader& reader)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: add_bytes
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:335,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:335,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:335,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:335,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' writer'
    - field
    - ' value'
    argTypes:
    - protozero::pbf_writer
    - uint8_t
    - SpanID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 336
      start: 333
    functionDepth: 0
    functionLinenumber: 333
    functionLinenumberEnd: 336
    functionName: pdns::trace::encode
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    functionUses: 62
    functionsReached:
    - add_bytes
    - reinterpret_cast<const char*>
    - size
    - data
    linkageType: ''
    returnType: void
    signature: void encode(protozero::pbf_writer& writer, uint8_t field, const SpanID&
      value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: get_view
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:341,1
    - Dst: std::min
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:342,1
    - Dst: SpanID::size
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:342,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:342,1
    - Dst: std::copy
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:343,1
    - Dst: auto::data
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:343,1
    - Dst: auto::data
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:343,1
    - Dst: SpanID::begin
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:343,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ' reader'
    argTypes:
    - protozero::pbf_reader
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 345
      start: 338
    functionDepth: 0
    functionLinenumber: 338
    functionLinenumberEnd: 345
    functionName: pdns::trace::decodeSpanID
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    functionUses: 0
    functionsReached:
    - SpanID::size
    - SpanID::begin
    - std::copy
    - std::min
    - auto::data
    - get_view
    - auto::size
    linkageType: ''
    returnType: SpanID
    signature: SpanID decodeSpanID(protozero::pbf_reader& reader)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::clear
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:372,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 374
      start: 370
    functionDepth: 0
    functionLinenumber: 370
    functionLinenumberEnd: 374
    functionName: pdns::trace::clear
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    functionUses: 7
    functionsReached:
    - pdns::trace::clear
    linkageType: ''
    returnType: void
    signature: void clear()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: clock_gettime
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:382,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 384
      start: 379
    functionDepth: 0
    functionLinenumber: 379
    functionLinenumberEnd: 384
    functionName: pdns::trace::timestamp
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    functionUses: 2
    functionsReached:
    - clock_gettime
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t timestamp()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::clear
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:397,1
    - Dst: pdns::trace::clear
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:398,1
    - Dst: pdns::trace::clear
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:399,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 401
      start: 395
    functionDepth: 0
    functionLinenumber: 395
    functionLinenumberEnd: 401
    functionName: pdns::trace::clear
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    functionUses: 8
    functionsReached:
    - pdns::trace::clear
    linkageType: ''
    returnType: void
    signature: void clear()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::makeRandom
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:406,1
    - Dst: pdns::trace::makeRandom
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:409,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 411
      start: 403
    functionDepth: 0
    functionLinenumber: 403
    functionLinenumberEnd: 411
    functionName: pdns::trace::setIDsIfNotSet
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    functionUses: 0
    functionsReached:
    - pdns::trace::makeRandom
    linkageType: ''
    returnType: void
    signature: void setIDsIfNotSet()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::timestamp
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:608,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 609
      start: 606
    functionDepth: 0
    functionLinenumber: 606
    functionLinenumberEnd: 609
    functionName: pdns::trace::close
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    functionUses: 6
    functionsReached:
    - pdns::trace::timestamp
    linkageType: ''
    returnType: void
    signature: void close()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::clear
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:613,1
    - Dst: pdns::trace::clear
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:614,1
    - Dst: pdns::trace::clear
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:615,1
    - Dst: pdns::trace::clear
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:616,1
    - Dst: pdns::trace::clear
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:617,1
    - Dst: pdns::trace::clear
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:621,1
    - Dst: pdns::trace::clear
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:623,1
    - Dst: pdns::trace::clear
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:625,1
    - Dst: pdns::trace::clear
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:627,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 629
      start: 611
    functionDepth: 0
    functionLinenumber: 611
    functionLinenumberEnd: 629
    functionName: pdns::trace::clear
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    functionUses: 9
    functionsReached:
    - pdns::trace::clear
    linkageType: ''
    returnType: void
    signature: void clear()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::close
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:682,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 684
      start: 679
    functionDepth: 0
    functionLinenumber: 679
    functionLinenumberEnd: 684
    functionName: pdns::trace::close
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    functionUses: 7
    functionsReached:
    - pdns::trace::close
    linkageType: ''
    returnType: void
    signature: void close()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::close
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:708,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 710
      start: 705
    functionDepth: 0
    functionLinenumber: 705
    functionLinenumberEnd: 710
    functionName: pdns::trace::close
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    functionUses: 8
    functionsReached:
    - pdns::trace::close
    linkageType: ''
    returnType: void
    signature: void close()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::close
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:737,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 739
      start: 734
    functionDepth: 0
    functionLinenumber: 734
    functionLinenumberEnd: 739
    functionName: pdns::trace::close
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    functionUses: 9
    functionsReached:
    - pdns::trace::close
    linkageType: ''
    returnType: void
    signature: void close()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:747,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 749
      start: 743
    functionDepth: 0
    functionLinenumber: 743
    functionLinenumberEnd: 749
    functionName: pdns::trace::encode
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    functionUses: 63
    functionsReached:
    - pdns::trace::encode
    linkageType: ''
    returnType: std::string
    signature: std::string encode() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:753,1
    - Dst: insert
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:754,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:754,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:754,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:754,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:761,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:763,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:763,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 3
    argCount: 4
    argNames:
    - ' service'
    - ' spans'
    - ' attributes'
    - ' serverID'
    argTypes:
    - std::string
    - std::vector<Span>
    - std::vector<KeyValue>
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 764
      start: 751
    functionDepth: 1
    functionLinenumber: 751
    functionLinenumberEnd: 764
    functionName: pdns::trace::boilerPlate
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    functionUses: 0
    functionsReached:
    - std::move
    - end
    - insert
    - begin
    - at
    linkageType: ''
    returnType: TracesData
    signature: TracesData boilerPlate(std::string&& service, std::vector<Span>&& spans,
      const std::vector<KeyValue>& attributes, const std::string& serverID)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::decode<ArrayValue, AnyValue>
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:769,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' reader'
    argTypes:
    - protozero::pbf_reader
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 770
      start: 767
    functionDepth: 0
    functionLinenumber: 767
    functionLinenumberEnd: 770
    functionName: pdns::trace::ArrayValue::decode
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    functionUses: 4
    functionsReached:
    - pdns::trace::decode<ArrayValue, AnyValue>
    linkageType: ''
    returnType: ArrayValue
    signature: ArrayValue ArrayValue::decode(protozero::pbf_reader& reader)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::decode<KeyValueList, KeyValue>
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:774,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' reader'
    argTypes:
    - protozero::pbf_reader
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 775
      start: 772
    functionDepth: 0
    functionLinenumber: 772
    functionLinenumberEnd: 775
    functionName: pdns::trace::KeyValueList::decode
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    functionUses: 4
    functionsReached:
    - pdns::trace::decode<KeyValueList, KeyValue>
    linkageType: ''
    returnType: KeyValueList
    signature: KeyValueList KeyValueList::decode(protozero::pbf_reader& reader)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - arg
    argTypes:
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 786
      start: 785
    functionDepth: 0
    functionLinenumber: 785
    functionLinenumberEnd: 786
    functionName: pdns::trace::EDNSOTTraceRecord
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void EDNSOTTraceRecord(uint8_t* arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - version
    argTypes:
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 791
      start: 788
    functionDepth: 0
    functionLinenumber: 788
    functionLinenumberEnd: 791
    functionName: pdns::trace::setVersion
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setVersion(uint8_t version)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - reserved
    argTypes:
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 795
      start: 792
    functionDepth: 0
    functionLinenumber: 792
    functionLinenumberEnd: 795
    functionName: pdns::trace::setReserved
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setReserved(uint8_t reserved)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::copy
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:798,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:798,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:798,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' traceid'
    argTypes:
    - TraceID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 799
      start: 796
    functionDepth: 0
    functionLinenumber: 796
    functionLinenumberEnd: 799
    functionName: pdns::trace::setTraceID
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    functionUses: 0
    functionsReached:
    - end
    - std::copy
    - begin
    linkageType: ''
    returnType: void
    signature: void setTraceID(const TraceID& traceid)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::copy
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:802,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:802,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:802,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' spanid'
    argTypes:
    - SpanID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 803
      start: 800
    functionDepth: 0
    functionLinenumber: 800
    functionLinenumberEnd: 803
    functionName: pdns::trace::setSpanID
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    functionUses: 0
    functionsReached:
    - end
    - std::copy
    - begin
    linkageType: ''
    returnType: void
    signature: void setSpanID(const SpanID& spanid)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - flags
    argTypes:
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 807
      start: 804
    functionDepth: 0
    functionLinenumber: 804
    functionLinenumberEnd: 807
    functionName: pdns::trace::setFlags
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setFlags(const uint8_t flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - arg
    - argsize
    argTypes:
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 816
      start: 815
    functionDepth: 0
    functionLinenumber: 815
    functionLinenumberEnd: 816
    functionName: pdns::trace::EDNSOTTraceRecordView
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void EDNSOTTraceRecordView(const uint8_t* arg, size_t argsize)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - ' version'
    argTypes:
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 826
      start: 819
    functionDepth: 0
    functionLinenumber: 819
    functionLinenumberEnd: 826
    functionName: pdns::trace::getVersion
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool getVersion(uint8_t& version) const
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - ' reserved'
    argTypes:
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 834
      start: 827
    functionDepth: 0
    functionLinenumber: 827
    functionLinenumberEnd: 834
    functionName: pdns::trace::getReserved
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool getReserved(uint8_t& reserved) const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::copy
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:838,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:838,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:838,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - ' traceid'
    argTypes:
    - TraceID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 842
      start: 835
    functionDepth: 0
    functionLinenumber: 835
    functionLinenumberEnd: 842
    functionName: pdns::trace::getTraceID
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    functionUses: 0
    functionsReached:
    - size
    - std::copy
    - begin
    linkageType: ''
    returnType: bool
    signature: bool getTraceID(TraceID& traceid) const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:846,1
    - Dst: std::copy
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:847,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:847,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:847,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - ' spanid'
    argTypes:
    - SpanID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 851
      start: 843
    functionDepth: 0
    functionLinenumber: 843
    functionLinenumberEnd: 851
    functionName: pdns::trace::getSpanID
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    functionUses: 0
    functionsReached:
    - std::copy
    - size
    - begin
    linkageType: ''
    returnType: bool
    signature: bool getSpanID(SpanID& spanid) const
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - ' flags'
    argTypes:
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 859
      start: 852
    functionDepth: 0
    functionLinenumber: 852
    functionLinenumberEnd: 859
    functionName: pdns::trace::getFlags
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool getFlags(uint8_t& flags) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - ArrayValue
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 872
      start: 869
    functionDepth: 0
    functionLinenumber: 869
    functionLinenumberEnd: 872
    functionName: ArrayValue::operator==(const ArrayValue& rhs) const
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool ArrayValue::operator==(const ArrayValue& rhs) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - KeyValueList
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 877
      start: 874
    functionDepth: 0
    functionLinenumber: 874
    functionLinenumberEnd: 877
    functionName: KeyValueList::operator==(const KeyValueList& rhs) const
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool KeyValueList::operator==(const KeyValueList& rhs) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - KeyValue
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 882
      start: 879
    functionDepth: 0
    functionLinenumber: 879
    functionLinenumberEnd: 882
    functionName: KeyValue::operator==(const KeyValue& rhs) const
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool KeyValue::operator==(const KeyValue& rhs) const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: add_bool
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:51,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 3
    argNames:
    - ' writer'
    - field
    - value
    argTypes:
    - protozero::pbf_writer
    - uint8_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 48
    functionDepth: 0
    functionLinenumber: 48
    functionLinenumberEnd: 53
    functionName: pdns::trace::encode
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    functionUses: 63
    functionsReached:
    - add_bool
    linkageType: ''
    returnType: void
    signature: void encode(protozero::pbf_writer& writer, uint8_t field, bool value,
      bool always = false)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: add_uint32
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:58,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 3
    argNames:
    - ' writer'
    - field
    - value
    argTypes:
    - protozero::pbf_writer
    - uint8_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 55
    functionDepth: 0
    functionLinenumber: 55
    functionLinenumberEnd: 60
    functionName: pdns::trace::encode
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    functionUses: 63
    functionsReached:
    - add_uint32
    linkageType: ''
    returnType: void
    signature: void encode(protozero::pbf_writer& writer, uint8_t field, uint32_t
      value, bool always = false)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: add_fixed32
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:65,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - ' writer'
    - field
    - value
    argTypes:
    - protozero::pbf_writer
    - uint8_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 62
    functionDepth: 0
    functionLinenumber: 62
    functionLinenumberEnd: 67
    functionName: pdns::trace::encodeFixed
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    functionUses: 12
    functionsReached:
    - add_fixed32
    linkageType: ''
    returnType: void
    signature: void encodeFixed(protozero::pbf_writer& writer, uint8_t field, uint32_t
      value)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: add_int64
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:72,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 3
    argNames:
    - ' writer'
    - field
    - value
    argTypes:
    - protozero::pbf_writer
    - uint8_t
    - int64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 69
    functionDepth: 0
    functionLinenumber: 69
    functionLinenumberEnd: 74
    functionName: pdns::trace::encode
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    functionUses: 63
    functionsReached:
    - add_int64
    linkageType: ''
    returnType: void
    signature: void encode(protozero::pbf_writer& writer, uint8_t field, int64_t value,
      bool always = false)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: add_uint64
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:79,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 3
    argNames:
    - ' writer'
    - field
    - value
    argTypes:
    - protozero::pbf_writer
    - uint8_t
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 76
    functionDepth: 0
    functionLinenumber: 76
    functionLinenumberEnd: 81
    functionName: pdns::trace::encode
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    functionUses: 63
    functionsReached:
    - add_uint64
    linkageType: ''
    returnType: void
    signature: void encode(protozero::pbf_writer& writer, uint8_t field, uint64_t
      value, bool always = false)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: add_fixed64
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:86,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - ' writer'
    - field
    - value
    argTypes:
    - protozero::pbf_writer
    - uint8_t
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 83
    functionDepth: 0
    functionLinenumber: 83
    functionLinenumberEnd: 88
    functionName: pdns::trace::encodeFixed
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    functionUses: 12
    functionsReached:
    - add_fixed64
    linkageType: ''
    returnType: void
    signature: void encodeFixed(protozero::pbf_writer& writer, uint8_t field, uint64_t
      value)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: add_double
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:93,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 3
    argNames:
    - ' writer'
    - field
    - value
    argTypes:
    - protozero::pbf_writer
    - uint8_t
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 90
    functionDepth: 0
    functionLinenumber: 90
    functionLinenumberEnd: 95
    functionName: pdns::trace::encode
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    functionUses: 63
    functionsReached:
    - add_double
    linkageType: ''
    returnType: void
    signature: void encode(protozero::pbf_writer& writer, uint8_t field, double value,
      bool always = false)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:99,1
    - Dst: add_string
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:100,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 3
    argNames:
    - ' writer'
    - field
    - ' value'
    argTypes:
    - protozero::pbf_writer
    - uint8_t
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 97
    functionDepth: 0
    functionLinenumber: 97
    functionLinenumberEnd: 102
    functionName: pdns::trace::encode
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    functionUses: 63
    functionsReached:
    - empty
    - add_string
    linkageType: ''
    returnType: void
    signature: void encode(protozero::pbf_writer& writer, uint8_t field, const std::string&
      value, bool always = false)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:106,1
    - Dst: add_bytes
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:107,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:107,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:107,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:107,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 3
    argNames:
    - ' writer'
    - field
    - ' value'
    argTypes:
    - protozero::pbf_writer
    - uint8_t
    - std::vector<uint8_t>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 104
    functionDepth: 0
    functionLinenumber: 104
    functionLinenumberEnd: 109
    functionName: pdns::trace::encode
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    functionUses: 63
    functionsReached:
    - size
    - add_bytes
    - reinterpret_cast<const char*>
    - data
    - empty
    linkageType: ''
    returnType: void
    signature: void encode(protozero::pbf_writer& writer, uint8_t field, const std::vector<uint8_t>&
      value, bool always = false)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:115,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - ' writer'
    - ' vec'
    argTypes:
    - protozero::pbf_writer
    - std::vector<T>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 112
    functionDepth: 0
    functionLinenumber: 112
    functionLinenumberEnd: 117
    functionName: pdns::trace::encode
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    functionUses: 64
    functionsReached:
    - pdns::trace::encode
    linkageType: ''
    returnType: void
    signature: void encode(protozero::pbf_writer& writer, const std::vector<T>& vec)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:124,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 3
    argNames:
    - ' writer'
    - field
    - ' vec'
    argTypes:
    - protozero::pbf_writer
    - uint8_t
    - std::vector<T>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 120
    functionDepth: 0
    functionLinenumber: 120
    functionLinenumberEnd: 126
    functionName: pdns::trace::encode
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    functionUses: 65
    functionsReached:
    - pdns::trace::encode
    linkageType: ''
    returnType: void
    signature: void encode(protozero::pbf_writer& writer, uint8_t field, const std::vector<T>&
      vec)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: next
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:132,1
    - Dst: tag
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:133,1
    - Dst: get_message
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:134,1
    - Dst: std::vector::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:135,1
    - Dst: YAML::decode
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:135,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:138,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - ' reader'
    argTypes:
    - protozero::pbf_reader
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 139
      start: 129
    functionDepth: 1
    functionLinenumber: 129
    functionLinenumberEnd: 139
    functionName: pdns::trace::decode
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    functionUses: 0
    functionsReached:
    - next
    - std::move
    - tag
    - YAML::decode
    - std::vector::emplace_back
    - get_message
    linkageType: ''
    returnType: T
    signature: T decode(protozero::pbf_reader& reader)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:147,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' writer'
    argTypes:
    - protozero::pbf_writer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 148
      start: 145
    functionDepth: 0
    functionLinenumber: 145
    functionLinenumberEnd: 148
    functionName: pdns::trace::encode
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    functionUses: 66
    functionsReached:
    - pdns::trace::encode
    linkageType: ''
    returnType: void
    signature: void encode(protozero::pbf_writer& writer) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:161,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' writer'
    argTypes:
    - protozero::pbf_writer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 162
      start: 159
    functionDepth: 0
    functionLinenumber: 159
    functionLinenumberEnd: 162
    functionName: pdns::trace::encode
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    functionUses: 67
    functionsReached:
    - pdns::trace::encode
    linkageType: ''
    returnType: void
    signature: void encode(protozero::pbf_writer& writer) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: toLogString
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:177,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' ostrm'
    - ' val'
    argTypes:
    - std::ostream
    - AnyValue
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 178
      start: 175
    functionDepth: 0
    functionLinenumber: 175
    functionLinenumberEnd: 178
    functionName: '& operator<<(std::ostream& ostrm, const AnyValue& val)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    functionUses: 0
    functionsReached:
    - toLogString
    linkageType: ''
    returnType: std::ostream
    signature: std::ostream & operator<<(std::ostream& ostrm, const AnyValue& val)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 226
      start: 225
    functionDepth: 0
    functionLinenumber: 225
    functionLinenumberEnd: 226
    functionName: pdns::trace::TraceID
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void TraceID()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::copy
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:230,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:230,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:230,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:230,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' arg'
    argTypes:
    - std::initializer_list<uint8_t>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 231
      start: 227
    functionDepth: 0
    functionLinenumber: 227
    functionLinenumberEnd: 231
    functionName: pdns::trace::TraceID
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    functionUses: 0
    functionsReached:
    - end
    - std::copy
    - begin
    linkageType: ''
    returnType: void
    signature: void TraceID(const std::initializer_list<uint8_t>& arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: toLogString
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:236,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' ostrm'
    - ' val'
    argTypes:
    - std::ostream
    - TraceID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 237
      start: 234
    functionDepth: 0
    functionLinenumber: 234
    functionLinenumberEnd: 237
    functionName: '& operator<<(std::ostream& ostrm, const TraceID& val)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    functionUses: 0
    functionsReached:
    - toLogString
    linkageType: ''
    returnType: std::ostream
    signature: std::ostream & operator<<(std::ostream& ostrm, const TraceID& val)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TraceID::makeRandom
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:242,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 244
      start: 239
    functionDepth: 0
    functionLinenumber: 239
    functionLinenumberEnd: 244
    functionName: pdns::trace::getRandomTraceID
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    functionUses: 1
    functionsReached:
    - TraceID::makeRandom
    linkageType: ''
    returnType: TraceID
    signature: TraceID getRandomTraceID()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dns_random
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:248,1
    - Dst: pdns::trace::data
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:248,1
    - Dst: pdns::trace::size
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:248,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 249
      start: 246
    functionDepth: 0
    functionLinenumber: 246
    functionLinenumberEnd: 249
    functionName: pdns::trace::makeRandom
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    functionUses: 3
    functionsReached:
    - pdns::trace::data
    - dns_random
    - pdns::trace::size
    linkageType: ''
    returnType: void
    signature: void makeRandom()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::fill
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:253,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 254
      start: 251
    functionDepth: 0
    functionLinenumber: 251
    functionLinenumberEnd: 254
    functionName: pdns::trace::clear
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    functionUses: 9
    functionsReached:
    - pdns::trace::fill
    linkageType: ''
    returnType: void
    signature: void clear()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 261
      start: 260
    functionDepth: 0
    functionLinenumber: 260
    functionLinenumberEnd: 261
    functionName: pdns::trace::SpanID
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void SpanID()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::copy
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:265,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:265,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:265,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:265,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' arg'
    argTypes:
    - std::initializer_list<uint8_t>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 266
      start: 262
    functionDepth: 0
    functionLinenumber: 262
    functionLinenumberEnd: 266
    functionName: pdns::trace::SpanID
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    functionUses: 0
    functionsReached:
    - end
    - std::copy
    - begin
    linkageType: ''
    returnType: void
    signature: void SpanID(const std::initializer_list<uint8_t>& arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: toLogString
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:271,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' ostrm'
    - ' val'
    argTypes:
    - std::ostream
    - SpanID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 272
      start: 269
    functionDepth: 0
    functionLinenumber: 269
    functionLinenumberEnd: 272
    functionName: '& operator<<(std::ostream& ostrm, const SpanID& val)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    functionUses: 0
    functionsReached:
    - toLogString
    linkageType: ''
    returnType: std::ostream
    signature: std::ostream & operator<<(std::ostream& ostrm, const SpanID& val)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SpanID::makeRandom
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:277,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 279
      start: 274
    functionDepth: 0
    functionLinenumber: 274
    functionLinenumberEnd: 279
    functionName: pdns::trace::getRandomSpanID
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    functionUses: 1
    functionsReached:
    - SpanID::makeRandom
    linkageType: ''
    returnType: SpanID
    signature: SpanID getRandomSpanID()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dns_random
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:283,1
    - Dst: pdns::trace::data
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:283,1
    - Dst: pdns::trace::size
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:283,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 284
      start: 281
    functionDepth: 0
    functionLinenumber: 281
    functionLinenumberEnd: 284
    functionName: pdns::trace::makeRandom
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    functionUses: 3
    functionsReached:
    - pdns::trace::data
    - dns_random
    - pdns::trace::size
    linkageType: ''
    returnType: void
    signature: void makeRandom()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::fill
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:288,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 289
      start: 286
    functionDepth: 0
    functionLinenumber: 286
    functionLinenumberEnd: 289
    functionName: pdns::trace::clear
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    functionUses: 9
    functionsReached:
    - pdns::trace::fill
    linkageType: ''
    returnType: void
    signature: void clear()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:295,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:295,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:296,1
    - Dst: std::copy
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:298,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:298,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:298,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:298,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - ' trace'
    - ' data'
    argTypes:
    - TraceID
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 299
      start: 293
    functionDepth: 0
    functionLinenumber: 293
    functionLinenumberEnd: 299
    functionName: pdns::trace::fill
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    functionUses: 15
    functionsReached:
    - std::runtime_error
    - end
    - size
    - begin
    - std::copy
    linkageType: ''
    returnType: void
    signature: void fill(TraceID& trace, const std::string& data)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:303,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:303,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:304,1
    - Dst: std::copy
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:306,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:306,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:306,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:306,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - ' span'
    - ' data'
    argTypes:
    - SpanID
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 307
      start: 301
    functionDepth: 0
    functionLinenumber: 301
    functionLinenumberEnd: 307
    functionName: pdns::trace::fill
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    functionUses: 15
    functionsReached:
    - std::runtime_error
    - end
    - size
    - begin
    - std::copy
    linkageType: ''
    returnType: void
    signature: void fill(SpanID& span, const std::string& data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::fill
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:311,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:311,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' trace'
    - data
    - size
    argTypes:
    - TraceID
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 312
      start: 309
    functionDepth: 0
    functionLinenumber: 309
    functionLinenumberEnd: 312
    functionName: pdns::trace::fill
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    functionUses: 16
    functionsReached:
    - std::string
    - pdns::trace::fill
    linkageType: ''
    returnType: void
    signature: void fill(TraceID& trace, const char* data, size_t size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::fill
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:316,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:316,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' span'
    - data
    - size
    argTypes:
    - SpanID
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 317
      start: 314
    functionDepth: 0
    functionLinenumber: 314
    functionLinenumberEnd: 317
    functionName: pdns::trace::fill
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    functionUses: 17
    functionsReached:
    - std::string
    - pdns::trace::fill
    linkageType: ''
    returnType: void
    signature: void fill(SpanID& span, const char* data, size_t size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: add_bytes
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:321,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:321,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:321,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:321,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' writer'
    - field
    - ' value'
    argTypes:
    - protozero::pbf_writer
    - uint8_t
    - TraceID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 322
      start: 319
    functionDepth: 0
    functionLinenumber: 319
    functionLinenumberEnd: 322
    functionName: pdns::trace::encode
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    functionUses: 67
    functionsReached:
    - add_bytes
    - reinterpret_cast<const char*>
    - size
    - data
    linkageType: ''
    returnType: void
    signature: void encode(protozero::pbf_writer& writer, uint8_t field, const TraceID&
      value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: get_view
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:327,1
    - Dst: std::min
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:328,1
    - Dst: TraceID::size
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:328,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:328,1
    - Dst: std::copy
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:329,1
    - Dst: auto::data
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:329,1
    - Dst: auto::data
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:329,1
    - Dst: TraceID::begin
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:329,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ' reader'
    argTypes:
    - protozero::pbf_reader
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 331
      start: 324
    functionDepth: 0
    functionLinenumber: 324
    functionLinenumberEnd: 331
    functionName: pdns::trace::decodeTraceID
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    functionUses: 0
    functionsReached:
    - std::copy
    - std::min
    - auto::data
    - get_view
    - TraceID::begin
    - auto::size
    - TraceID::size
    linkageType: ''
    returnType: TraceID
    signature: TraceID decodeTraceID(protozero::pbf_reader& reader)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: add_bytes
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:335,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:335,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:335,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:335,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' writer'
    - field
    - ' value'
    argTypes:
    - protozero::pbf_writer
    - uint8_t
    - SpanID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 336
      start: 333
    functionDepth: 0
    functionLinenumber: 333
    functionLinenumberEnd: 336
    functionName: pdns::trace::encode
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    functionUses: 67
    functionsReached:
    - add_bytes
    - reinterpret_cast<const char*>
    - size
    - data
    linkageType: ''
    returnType: void
    signature: void encode(protozero::pbf_writer& writer, uint8_t field, const SpanID&
      value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: get_view
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:341,1
    - Dst: std::min
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:342,1
    - Dst: SpanID::size
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:342,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:342,1
    - Dst: std::copy
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:343,1
    - Dst: auto::data
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:343,1
    - Dst: auto::data
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:343,1
    - Dst: SpanID::begin
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:343,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ' reader'
    argTypes:
    - protozero::pbf_reader
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 345
      start: 338
    functionDepth: 0
    functionLinenumber: 338
    functionLinenumberEnd: 345
    functionName: pdns::trace::decodeSpanID
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    functionUses: 0
    functionsReached:
    - SpanID::size
    - SpanID::begin
    - std::copy
    - std::min
    - auto::data
    - get_view
    - auto::size
    linkageType: ''
    returnType: SpanID
    signature: SpanID decodeSpanID(protozero::pbf_reader& reader)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::clear
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:372,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 374
      start: 370
    functionDepth: 0
    functionLinenumber: 370
    functionLinenumberEnd: 374
    functionName: pdns::trace::clear
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    functionUses: 10
    functionsReached:
    - pdns::trace::clear
    linkageType: ''
    returnType: void
    signature: void clear()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: clock_gettime
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:382,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 384
      start: 379
    functionDepth: 0
    functionLinenumber: 379
    functionLinenumberEnd: 384
    functionName: pdns::trace::timestamp
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    functionUses: 3
    functionsReached:
    - clock_gettime
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t timestamp()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::clear
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:397,1
    - Dst: pdns::trace::clear
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:398,1
    - Dst: pdns::trace::clear
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:399,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 401
      start: 395
    functionDepth: 0
    functionLinenumber: 395
    functionLinenumberEnd: 401
    functionName: pdns::trace::clear
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    functionUses: 11
    functionsReached:
    - pdns::trace::clear
    linkageType: ''
    returnType: void
    signature: void clear()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::makeRandom
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:406,1
    - Dst: pdns::trace::makeRandom
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:409,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 411
      start: 403
    functionDepth: 0
    functionLinenumber: 403
    functionLinenumberEnd: 411
    functionName: pdns::trace::setIDsIfNotSet
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    functionUses: 0
    functionsReached:
    - pdns::trace::makeRandom
    linkageType: ''
    returnType: void
    signature: void setIDsIfNotSet()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::timestamp
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:608,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 609
      start: 606
    functionDepth: 0
    functionLinenumber: 606
    functionLinenumberEnd: 609
    functionName: pdns::trace::close
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    functionUses: 9
    functionsReached:
    - pdns::trace::timestamp
    linkageType: ''
    returnType: void
    signature: void close()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::clear
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:613,1
    - Dst: pdns::trace::clear
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:614,1
    - Dst: pdns::trace::clear
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:615,1
    - Dst: pdns::trace::clear
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:616,1
    - Dst: pdns::trace::clear
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:617,1
    - Dst: pdns::trace::clear
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:621,1
    - Dst: pdns::trace::clear
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:623,1
    - Dst: pdns::trace::clear
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:625,1
    - Dst: pdns::trace::clear
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:627,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 629
      start: 611
    functionDepth: 0
    functionLinenumber: 611
    functionLinenumberEnd: 629
    functionName: pdns::trace::clear
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    functionUses: 12
    functionsReached:
    - pdns::trace::clear
    linkageType: ''
    returnType: void
    signature: void clear()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::close
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:682,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 684
      start: 679
    functionDepth: 0
    functionLinenumber: 679
    functionLinenumberEnd: 684
    functionName: pdns::trace::close
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    functionUses: 10
    functionsReached:
    - pdns::trace::close
    linkageType: ''
    returnType: void
    signature: void close()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::close
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:708,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 710
      start: 705
    functionDepth: 0
    functionLinenumber: 705
    functionLinenumberEnd: 710
    functionName: pdns::trace::close
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    functionUses: 11
    functionsReached:
    - pdns::trace::close
    linkageType: ''
    returnType: void
    signature: void close()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::close
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:737,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 739
      start: 734
    functionDepth: 0
    functionLinenumber: 734
    functionLinenumberEnd: 739
    functionName: pdns::trace::close
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    functionUses: 12
    functionsReached:
    - pdns::trace::close
    linkageType: ''
    returnType: void
    signature: void close()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:747,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 749
      start: 743
    functionDepth: 0
    functionLinenumber: 743
    functionLinenumberEnd: 749
    functionName: pdns::trace::encode
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    functionUses: 68
    functionsReached:
    - pdns::trace::encode
    linkageType: ''
    returnType: std::string
    signature: std::string encode() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:753,1
    - Dst: insert
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:754,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:754,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:754,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:754,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:761,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:763,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:763,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 3
    argCount: 4
    argNames:
    - ' service'
    - ' spans'
    - ' attributes'
    - ' serverID'
    argTypes:
    - std::string
    - std::vector<Span>
    - std::vector<KeyValue>
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 764
      start: 751
    functionDepth: 1
    functionLinenumber: 751
    functionLinenumberEnd: 764
    functionName: pdns::trace::boilerPlate
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    functionUses: 0
    functionsReached:
    - std::move
    - end
    - insert
    - begin
    - at
    linkageType: ''
    returnType: TracesData
    signature: TracesData boilerPlate(std::string&& service, std::vector<Span>&& spans,
      const std::vector<KeyValue>& attributes, const std::string& serverID)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::decode<ArrayValue, AnyValue>
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:769,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' reader'
    argTypes:
    - protozero::pbf_reader
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 770
      start: 767
    functionDepth: 0
    functionLinenumber: 767
    functionLinenumberEnd: 770
    functionName: pdns::trace::ArrayValue::decode
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    functionUses: 4
    functionsReached:
    - pdns::trace::decode<ArrayValue, AnyValue>
    linkageType: ''
    returnType: ArrayValue
    signature: ArrayValue ArrayValue::decode(protozero::pbf_reader& reader)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::decode<KeyValueList, KeyValue>
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:774,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' reader'
    argTypes:
    - protozero::pbf_reader
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 775
      start: 772
    functionDepth: 0
    functionLinenumber: 772
    functionLinenumberEnd: 775
    functionName: pdns::trace::KeyValueList::decode
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    functionUses: 4
    functionsReached:
    - pdns::trace::decode<KeyValueList, KeyValue>
    linkageType: ''
    returnType: KeyValueList
    signature: KeyValueList KeyValueList::decode(protozero::pbf_reader& reader)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - arg
    argTypes:
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 786
      start: 785
    functionDepth: 0
    functionLinenumber: 785
    functionLinenumberEnd: 786
    functionName: pdns::trace::EDNSOTTraceRecord
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void EDNSOTTraceRecord(uint8_t* arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - version
    argTypes:
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 791
      start: 788
    functionDepth: 0
    functionLinenumber: 788
    functionLinenumberEnd: 791
    functionName: pdns::trace::setVersion
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setVersion(uint8_t version)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - reserved
    argTypes:
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 795
      start: 792
    functionDepth: 0
    functionLinenumber: 792
    functionLinenumberEnd: 795
    functionName: pdns::trace::setReserved
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setReserved(uint8_t reserved)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::copy
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:798,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:798,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:798,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' traceid'
    argTypes:
    - TraceID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 799
      start: 796
    functionDepth: 0
    functionLinenumber: 796
    functionLinenumberEnd: 799
    functionName: pdns::trace::setTraceID
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    functionUses: 0
    functionsReached:
    - end
    - std::copy
    - begin
    linkageType: ''
    returnType: void
    signature: void setTraceID(const TraceID& traceid)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::copy
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:802,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:802,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:802,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' spanid'
    argTypes:
    - SpanID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 803
      start: 800
    functionDepth: 0
    functionLinenumber: 800
    functionLinenumberEnd: 803
    functionName: pdns::trace::setSpanID
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    functionUses: 0
    functionsReached:
    - end
    - std::copy
    - begin
    linkageType: ''
    returnType: void
    signature: void setSpanID(const SpanID& spanid)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - flags
    argTypes:
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 807
      start: 804
    functionDepth: 0
    functionLinenumber: 804
    functionLinenumberEnd: 807
    functionName: pdns::trace::setFlags
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setFlags(const uint8_t flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - arg
    - argsize
    argTypes:
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 816
      start: 815
    functionDepth: 0
    functionLinenumber: 815
    functionLinenumberEnd: 816
    functionName: pdns::trace::EDNSOTTraceRecordView
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void EDNSOTTraceRecordView(const uint8_t* arg, size_t argsize)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - ' version'
    argTypes:
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 826
      start: 819
    functionDepth: 0
    functionLinenumber: 819
    functionLinenumberEnd: 826
    functionName: pdns::trace::getVersion
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool getVersion(uint8_t& version) const
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - ' reserved'
    argTypes:
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 834
      start: 827
    functionDepth: 0
    functionLinenumber: 827
    functionLinenumberEnd: 834
    functionName: pdns::trace::getReserved
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool getReserved(uint8_t& reserved) const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::copy
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:838,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:838,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:838,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - ' traceid'
    argTypes:
    - TraceID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 842
      start: 835
    functionDepth: 0
    functionLinenumber: 835
    functionLinenumberEnd: 842
    functionName: pdns::trace::getTraceID
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    functionUses: 0
    functionsReached:
    - size
    - std::copy
    - begin
    linkageType: ''
    returnType: bool
    signature: bool getTraceID(TraceID& traceid) const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:846,1
    - Dst: std::copy
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:847,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:847,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/protozero-trace.hh:847,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - ' spanid'
    argTypes:
    - SpanID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 851
      start: 843
    functionDepth: 0
    functionLinenumber: 843
    functionLinenumberEnd: 851
    functionName: pdns::trace::getSpanID
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    functionUses: 0
    functionsReached:
    - std::copy
    - size
    - begin
    linkageType: ''
    returnType: bool
    signature: bool getSpanID(SpanID& spanid) const
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - ' flags'
    argTypes:
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 859
      start: 852
    functionDepth: 0
    functionLinenumber: 852
    functionLinenumberEnd: 859
    functionName: pdns::trace::getFlags
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool getFlags(uint8_t& flags) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - ArrayValue
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 872
      start: 869
    functionDepth: 0
    functionLinenumber: 869
    functionLinenumberEnd: 872
    functionName: ArrayValue::operator==(const ArrayValue& rhs) const
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool ArrayValue::operator==(const ArrayValue& rhs) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - KeyValueList
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 877
      start: 874
    functionDepth: 0
    functionLinenumber: 874
    functionLinenumberEnd: 877
    functionName: KeyValueList::operator==(const KeyValueList& rhs) const
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool KeyValueList::operator==(const KeyValueList& rhs) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - KeyValue
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 882
      start: 879
    functionDepth: 0
    functionLinenumber: 879
    functionLinenumberEnd: 882
    functionName: KeyValue::operator==(const KeyValue& rhs) const
    functionSourceFile: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool KeyValue::operator==(const KeyValue& rhs) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackoff.cc:51,1
    - Dst: ExponentialBackOffTimer::get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackoff.cc:51,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackoff.cc:55,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackoff.cc:56,1
    - Dst: ExponentialBackOffTimer::get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistbackoff.cc:56,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 34
    functionDepth: 0
    functionLinenumber: 34
    functionLinenumberEnd: 58
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistbackoff.cc
    functionUses: 0
    functionsReached:
    - ExponentialBackOffTimer::get
    - std::vector::size
    - BOOST_CHECK_EQUAL
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_ExponentialBackOffTimer)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::dnsdist::Tracer::getTraceID
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:42,1
    - Dst: read_only_lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:44,1
    - Dst: auto::d_attributes::cbegin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:54,1
    - Dst: auto::d_attributes::cend
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:54,1
    - Dst: auto::resource_spans::at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:59,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:59,1
    - Dst: push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:59,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 37
    functionDepth: 1
    functionLinenumber: 37
    functionLinenumberEnd: 74
    functionName: pdns::trace::dnsdist::Tracer::getTracesData
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc
    functionUses: 0
    functionsReached:
    - auto::d_attributes::cend
    - auto::d_attributes::cbegin
    - push_back
    - read_only_lock
    - auto::resource_spans::at
    - pdns::trace::dnsdist::Tracer::getTraceID
    - at
    linkageType: ''
    returnType: TracesData
    signature: TracesData Tracer::getTracesData()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::dnsdist::Tracer::getTracesData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:82,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 76
    functionDepth: 2
    functionLinenumber: 76
    functionLinenumberEnd: 84
    functionName: pdns::trace::dnsdist::Tracer::getOTProtobuf
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc
    functionUses: 0
    functionsReached:
    - pdns::trace::dnsdist::Tracer::getTracesData
    linkageType: ''
    returnType: std::string
    signature: std::string Tracer::getOTProtobuf()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::dnsdist::Tracer::addSpan
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:91,1
    - Dst: pdns::trace::dnsdist::Tracer::getLastSpanID
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:91,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ' name'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 86
    functionDepth: 1
    functionLinenumber: 86
    functionLinenumberEnd: 93
    functionName: pdns::trace::dnsdist::Tracer::addSpan
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc
    functionUses: 1
    functionsReached:
    - pdns::trace::dnsdist::Tracer::addSpan
    - pdns::trace::dnsdist::Tracer::getLastSpanID
    linkageType: ''
    returnType: SpanID
    signature: SpanID Tracer::addSpan([[maybe_unused]] const std::string& name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::getRandomSpanID
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:100,1
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:102,1
    - Dst: auto::d_spans::push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:103,1
    - Dst: pdns::trace::timestamp
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:107,1
    - Dst: auto::d_spanIDStack::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:112,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - ' name'
    - ' parentSpanID'
    argTypes:
    - std::string
    - SpanID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 95
    functionDepth: 0
    functionLinenumber: 95
    functionLinenumberEnd: 116
    functionName: pdns::trace::dnsdist::Tracer::addSpan
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc
    functionUses: 1
    functionsReached:
    - auto::d_spans::push_back
    - pdns::trace::getRandomSpanID
    - auto::d_spanIDStack::emplace_back
    - lock
    - pdns::trace::timestamp
    linkageType: ''
    returnType: SpanID
    signature: SpanID Tracer::addSpan([[maybe_unused]] const std::string& name, [[maybe_unused]]
      const SpanID& parentSpanID)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:121,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' traceID'
    argTypes:
    - TraceID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 118
    functionDepth: 0
    functionLinenumber: 118
    functionLinenumberEnd: 123
    functionName: pdns::trace::dnsdist::Tracer::setTraceID
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc
    functionUses: 0
    functionsReached:
    - lock
    linkageType: ''
    returnType: void
    signature: void Tracer::setTraceID([[maybe_unused]] const TraceID& traceID)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: read_only_lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:130,1
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:131,1
    - Dst: std::find_if
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:132,1
    - Dst: cbegin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:132,1
    - Dst: cend
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:132,1
    - Dst: cend
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:133,1
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:144,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 1
    argNames:
    - ' spanID'
    argTypes:
    - SpanID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 149
      start: 125
    functionDepth: 0
    functionLinenumber: 125
    functionLinenumberEnd: 149
    functionName: pdns::trace::dnsdist::Tracer::setRootSpanID
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc
    functionUses: 0
    functionsReached:
    - std::find_if
    - read_only_lock
    - lock
    - cbegin
    - cend
    - empty
    linkageType: ''
    returnType: void
    signature: void Tracer::setRootSpanID([[maybe_unused]] const SpanID& spanID)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:158,1
    - Dst: push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:158,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - ' key'
    - ' value'
    argTypes:
    - std::string
    - AnyValue
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 161
      start: 152
    functionDepth: 0
    functionLinenumber: 152
    functionLinenumberEnd: 161
    functionName: pdns::trace::dnsdist::Tracer::setTraceAttribute
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc
    functionUses: 0
    functionsReached:
    - push_back
    - lock
    linkageType: ''
    returnType: bool
    signature: bool Tracer::setTraceAttribute([[maybe_unused]] const std::string&
      key, [[maybe_unused]] const AnyValue& value)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:166,1
    - Dst: std::find_if
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:168,1
    - Dst: rbegin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:169,1
    - Dst: rend
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:170,1
    - Dst: rend
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:172,1
    - Dst: pdns::trace::timestamp
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:173,1
    - Dst: assert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:176,1
    - Dst: auto::d_spanIDStack::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:176,1
    - Dst: std::find
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:182,1
    - Dst: auto::d_spanIDStack::begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:182,1
    - Dst: auto::d_spanIDStack::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:182,1
    - Dst: auto::d_spanIDStack::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:183,1
    - Dst: auto::d_spanIDStack::erase
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:184,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - ' spanID'
    argTypes:
    - SpanID
    assertStmts:
    - condition: (!data->d_spanIDStack.empty())
      pos:
        line_end: 175
        line_start: 175
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc
    constantsTouched: []
    func_position:
      end: 188
      start: 163
    functionDepth: 0
    functionLinenumber: 163
    functionLinenumberEnd: 188
    functionName: pdns::trace::dnsdist::Tracer::closeSpan
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc
    functionUses: 0
    functionsReached:
    - auto::d_spanIDStack::empty
    - std::find_if
    - auto::d_spanIDStack::erase
    - rbegin
    - auto::d_spanIDStack::begin
    - assert
    - lock
    - std::find
    - rend
    - auto::d_spanIDStack::end
    - pdns::trace::timestamp
    linkageType: ''
    returnType: void
    signature: void Tracer::closeSpan([[maybe_unused]] const SpanID& spanID)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::dnsdist::Tracer::setSpanAttribute
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:193,1
    - Dst: pdns::trace::dnsdist::Tracer::getRootSpanID
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:193,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' key'
    - ' value'
    argTypes:
    - std::string
    - AnyValue
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 195
      start: 190
    functionDepth: 1
    functionLinenumber: 190
    functionLinenumberEnd: 195
    functionName: pdns::trace::dnsdist::Tracer::setRootSpanAttribute
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc
    functionUses: 0
    functionsReached:
    - pdns::trace::dnsdist::Tracer::getRootSpanID
    - pdns::trace::dnsdist::Tracer::setSpanAttribute
    linkageType: ''
    returnType: void
    signature: void Tracer::setRootSpanAttribute([[maybe_unused]] const std::string&
      key, [[maybe_unused]] const AnyValue& value)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:201,1
    - Dst: std::find_if
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:203,1
    - Dst: rbegin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:203,1
    - Dst: rend
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:204,1
    - Dst: rend
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:206,1
    - Dst: auto::attributes::push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:207,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - ' spanid'
    - ' key'
    - ' value'
    argTypes:
    - SpanID
    - std::string
    - AnyValue
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 210
      start: 198
    functionDepth: 0
    functionLinenumber: 198
    functionLinenumberEnd: 210
    functionName: pdns::trace::dnsdist::Tracer::setSpanAttribute
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc
    functionUses: 1
    functionsReached:
    - std::find_if
    - rbegin
    - lock
    - rend
    - auto::attributes::push_back
    linkageType: ''
    returnType: void
    signature: void Tracer::setSpanAttribute([[maybe_unused]] const SpanID& spanid,
      [[maybe_unused]] const std::string& key, [[maybe_unused]] const AnyValue& value)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: read_only_lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:217,1
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:222,1
    - Dst: std::find_if
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:223,1
    - Dst: cbegin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:223,1
    - Dst: cend
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:223,1
    - Dst: cend
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:224,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 230
      start: 212
    functionDepth: 0
    functionLinenumber: 212
    functionLinenumberEnd: 230
    functionName: pdns::trace::dnsdist::Tracer::getRootSpanID
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc
    functionUses: 1
    functionsReached:
    - std::find_if
    - read_only_lock
    - cbegin
    - cend
    - empty
    linkageType: ''
    returnType: SpanID
    signature: SpanID Tracer::getRootSpanID()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: read_only_lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:237,1
    - Dst: auto::d_spanIDStack::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:238,1
    - Dst: auto::d_spanIDStack::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:241,1
    - Dst: auto::d_spanIDStack::front
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:241,1
    - Dst: auto::d_spanIDStack::back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:244,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 246
      start: 232
    functionDepth: 0
    functionLinenumber: 232
    functionLinenumberEnd: 246
    functionName: pdns::trace::dnsdist::Tracer::getLastSpanID
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc
    functionUses: 1
    functionsReached:
    - auto::d_spanIDStack::empty
    - read_only_lock
    - auto::d_spanIDStack::front
    - auto::d_spanIDStack::back
    - auto::d_spanIDStack::size
    linkageType: ''
    returnType: SpanID
    signature: SpanID Tracer::getLastSpanID()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: read_only_lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:253,1
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:254,1
    - Dst: std::find_if
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:255,1
    - Dst: rbegin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:255,1
    - Dst: rend
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:256,1
    - Dst: rend
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:258,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 1
    argNames:
    - ' name'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 264
      start: 248
    functionDepth: 0
    functionLinenumber: 248
    functionLinenumberEnd: 264
    functionName: pdns::trace::dnsdist::Tracer::getLastSpanIDForName
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc
    functionUses: 0
    functionsReached:
    - std::find_if
    - rbegin
    - read_only_lock
    - rend
    - empty
    linkageType: ''
    returnType: SpanID
    signature: SpanID Tracer::getLastSpanIDForName([[maybe_unused]] const std::string&
      name)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:271,1
    - Dst: makeRandom
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:274,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 278
      start: 266
    functionDepth: 0
    functionLinenumber: 266
    functionLinenumberEnd: 278
    functionName: pdns::trace::dnsdist::Tracer::getTraceID
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc
    functionUses: 1
    functionsReached:
    - makeRandom
    - lock
    linkageType: ''
    returnType: TraceID
    signature: TraceID Tracer::getTraceID()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::dnsdist::Tracer::Closer::Closer
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:283,1
    - Dst: shared_from_this
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:285,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ' spanid'
    argTypes:
    - SpanID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 287
      start: 280
    functionDepth: 1
    functionLinenumber: 280
    functionLinenumberEnd: 287
    functionName: pdns::trace::dnsdist::Tracer::getCloser
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc
    functionUses: 0
    functionsReached:
    - pdns::trace::dnsdist::Tracer::Closer::Closer
    - shared_from_this
    linkageType: ''
    returnType: Tracer::Closer
    signature: Tracer::Closer Tracer::getCloser([[maybe_unused]] const SpanID& spanid)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::dnsdist::Tracer::Closer::Closer
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:292,1
    - Dst: pdns::trace::dnsdist::Tracer::addSpan
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:294,1
    - Dst: pdns::trace::dnsdist::Tracer::getCloser
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:295,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ' name'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 297
      start: 289
    functionDepth: 2
    functionLinenumber: 289
    functionLinenumberEnd: 297
    functionName: pdns::trace::dnsdist::Tracer::openSpan
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc
    functionUses: 0
    functionsReached:
    - pdns::trace::dnsdist::Tracer::addSpan
    - pdns::trace::dnsdist::Tracer::Closer::Closer
    - pdns::trace::dnsdist::Tracer::getCloser
    linkageType: ''
    returnType: Tracer::Closer
    signature: Tracer::Closer Tracer::openSpan([[maybe_unused]] const std::string&
      name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::dnsdist::Tracer::Closer::Closer
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:302,1
    - Dst: pdns::trace::dnsdist::Tracer::addSpan
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:304,1
    - Dst: pdns::trace::dnsdist::Tracer::getCloser
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:305,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ' name'
    - ' parentSpanID'
    argTypes:
    - std::string
    - SpanID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 307
      start: 299
    functionDepth: 2
    functionLinenumber: 299
    functionLinenumberEnd: 307
    functionName: pdns::trace::dnsdist::Tracer::openSpan
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc
    functionUses: 0
    functionsReached:
    - pdns::trace::dnsdist::Tracer::addSpan
    - pdns::trace::dnsdist::Tracer::Closer::Closer
    - pdns::trace::dnsdist::Tracer::getCloser
    linkageType: ''
    returnType: Tracer::Closer
    signature: Tracer::Closer Tracer::openSpan([[maybe_unused]] const std::string&
      name, [[maybe_unused]] const SpanID& parentSpanID)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 316
      start: 309
    functionDepth: 0
    functionLinenumber: 309
    functionLinenumberEnd: 316
    functionName: Tracer::Closer::getSpanID() const
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: SpanID
    signature: SpanID Tracer::Closer::getSpanID() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: setSpanAttribute
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:323,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ' key'
    - ' value'
    argTypes:
    - std::string
    - AnyValue
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 325
      start: 318
    functionDepth: 0
    functionLinenumber: 318
    functionLinenumberEnd: 325
    functionName: Tracer::Closer::setAttribute([[maybe_unused]] const std::string&
      key, [[maybe_unused]] const AnyValue& value)
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc
    functionUses: 0
    functionsReached:
    - setSpanAttribute
    linkageType: ''
    returnType: void
    signature: void Tracer::Closer::setAttribute([[maybe_unused]] const std::string&
      key, [[maybe_unused]] const AnyValue& value)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::vector::reserve
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:334,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:335,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:336,1
    - Dst: getTraceID
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:337,1
    - Dst: std::vector::insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:338,1
    - Dst: std::vector::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:338,1
    - Dst: auto::begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:338,1
    - Dst: auto::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:338,1
    - Dst: getLastSpanID
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:339,1
    - Dst: std::vector::insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:340,1
    - Dst: std::vector::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:340,1
    - Dst: auto::begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:340,1
    - Dst: auto::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:340,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:341,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - ' tracer'
    argTypes:
    - std::shared_ptr<Tracer>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 344
      start: 327
    functionDepth: 1
    functionLinenumber: 327
    functionLinenumberEnd: 344
    functionName: pdns::trace::dnsdist::makeEDNSTraceParentOption
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc
    functionUses: 0
    functionsReached:
    - std::vector::end
    - std::vector::push_back
    - getTraceID
    - std::vector::insert
    - getLastSpanID
    - std::vector::reserve
    - auto::begin
    - auto::end
    linkageType: ''
    returnType: std::vector<uint8_t>
    signature: std::vector<uint8_t> makeEDNSTraceParentOption([[maybe_unused]] const
      std::shared_ptr<Tracer>& tracer)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:353,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:353,1
    - Dst: dnsdist::getEDNSOptionsStart
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:357,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:359,1
    - Dst: removeEDNSOptionFromOPT
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:361,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:361,1
    - Dst: PacketBuffer::data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:361,1
    - Dst: pdns::trace::dnsdist::makeEDNSTraceParentOption
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:364,1
    - Dst: static_cast<uint16_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:367,1
    - Dst: PacketBuffer::at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:367,1
    - Dst: PacketBuffer::at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:367,1
    - Dst: setEDNSOption
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:368,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:368,1
    - Dst: auto::begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:368,1
    - Dst: auto::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:368,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:368,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:371,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:371,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:371,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:371,1
    - Dst: PacketBuffer::insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:372,1
    - Dst: PacketBuffer::begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:372,1
    - Dst: std::array::begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:372,1
    - Dst: std::array::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:372,1
    - Dst: resize
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:376,1
    - Dst: insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:378,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:378,1
    - Dst: PacketBuffer::begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:378,1
    - Dst: PacketBuffer::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:378,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 6
    argNames:
    - ' origBuf'
    - ' tracer'
    - qnameWireLength
    - proxyProtocolPayloadSize
    - traceparentOptionCode
    - isTCP
    argTypes:
    - PacketBuffer
    - std::shared_ptr<Tracer>
    - size_t
    - size_t
    - uint16_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 384
      start: 346
    functionDepth: 2
    functionLinenumber: 346
    functionLinenumberEnd: 384
    functionName: pdns::trace::dnsdist::addTraceparentEdnsOptionToPacketBuffer
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc
    functionUses: 12
    functionsReached:
    - reinterpret_cast<char*>
    - PacketBuffer::end
    - PacketBuffer::at
    - PacketBuffer::size
    - auto::begin
    - insert
    - std::string
    - PacketBuffer::begin
    - pdns::trace::dnsdist::makeEDNSTraceParentOption
    - resize
    - static_cast<uint16_t>
    - begin
    - std::array::begin
    - removeEDNSOptionFromOPT
    - pdns::max
    - static_cast<uint8_t>
    - PacketBuffer::data
    - PacketBuffer::insert
    - end
    - std::array::end
    - setEDNSOption
    - auto::end
    - dnsdist::getEDNSOptionsStart
    linkageType: ''
    returnType: bool
    signature: bool addTraceparentEdnsOptionToPacketBuffer([[maybe_unused]] PacketBuffer&
      origBuf, [[maybe_unused]] const std::shared_ptr<Tracer>& tracer, [[maybe_unused]]
      const size_t qnameWireLength, [[maybe_unused]] const size_t proxyProtocolPayloadSize,
      [[maybe_unused]] const uint16_t traceparentOptionCode, [[maybe_unused]] const
      bool isTCP)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::dnsdist::Tracer::getTraceID
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:42,1
    - Dst: read_only_lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:44,1
    - Dst: auto::d_attributes::cbegin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:54,1
    - Dst: auto::d_attributes::cend
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:54,1
    - Dst: auto::resource_spans::at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:59,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:59,1
    - Dst: push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:59,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 37
    functionDepth: 1
    functionLinenumber: 37
    functionLinenumberEnd: 74
    functionName: pdns::trace::dnsdist::Tracer::getTracesData
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc
    functionUses: 1
    functionsReached:
    - auto::d_attributes::cend
    - auto::d_attributes::cbegin
    - push_back
    - read_only_lock
    - auto::resource_spans::at
    - pdns::trace::dnsdist::Tracer::getTraceID
    - at
    linkageType: ''
    returnType: TracesData
    signature: TracesData Tracer::getTracesData()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::dnsdist::Tracer::getTracesData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:82,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 76
    functionDepth: 2
    functionLinenumber: 76
    functionLinenumberEnd: 84
    functionName: pdns::trace::dnsdist::Tracer::getOTProtobuf
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc
    functionUses: 0
    functionsReached:
    - pdns::trace::dnsdist::Tracer::getTracesData
    linkageType: ''
    returnType: std::string
    signature: std::string Tracer::getOTProtobuf()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::dnsdist::Tracer::addSpan
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:91,1
    - Dst: pdns::trace::dnsdist::Tracer::getLastSpanID
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:91,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ' name'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 86
    functionDepth: 1
    functionLinenumber: 86
    functionLinenumberEnd: 93
    functionName: pdns::trace::dnsdist::Tracer::addSpan
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc
    functionUses: 4
    functionsReached:
    - pdns::trace::dnsdist::Tracer::addSpan
    - pdns::trace::dnsdist::Tracer::getLastSpanID
    linkageType: ''
    returnType: SpanID
    signature: SpanID Tracer::addSpan([[maybe_unused]] const std::string& name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::getRandomSpanID
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:100,1
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:102,1
    - Dst: auto::d_spans::push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:103,1
    - Dst: pdns::trace::timestamp
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:107,1
    - Dst: auto::d_spanIDStack::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:112,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - ' name'
    - ' parentSpanID'
    argTypes:
    - std::string
    - SpanID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 95
    functionDepth: 0
    functionLinenumber: 95
    functionLinenumberEnd: 116
    functionName: pdns::trace::dnsdist::Tracer::addSpan
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc
    functionUses: 4
    functionsReached:
    - auto::d_spans::push_back
    - pdns::trace::getRandomSpanID
    - auto::d_spanIDStack::emplace_back
    - lock
    - pdns::trace::timestamp
    linkageType: ''
    returnType: SpanID
    signature: SpanID Tracer::addSpan([[maybe_unused]] const std::string& name, [[maybe_unused]]
      const SpanID& parentSpanID)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:121,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' traceID'
    argTypes:
    - TraceID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 118
    functionDepth: 0
    functionLinenumber: 118
    functionLinenumberEnd: 123
    functionName: pdns::trace::dnsdist::Tracer::setTraceID
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc
    functionUses: 0
    functionsReached:
    - lock
    linkageType: ''
    returnType: void
    signature: void Tracer::setTraceID([[maybe_unused]] const TraceID& traceID)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: read_only_lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:130,1
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:131,1
    - Dst: std::find_if
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:132,1
    - Dst: cbegin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:132,1
    - Dst: cend
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:132,1
    - Dst: cend
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:133,1
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:144,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 1
    argNames:
    - ' spanID'
    argTypes:
    - SpanID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 149
      start: 125
    functionDepth: 0
    functionLinenumber: 125
    functionLinenumberEnd: 149
    functionName: pdns::trace::dnsdist::Tracer::setRootSpanID
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc
    functionUses: 0
    functionsReached:
    - std::find_if
    - read_only_lock
    - lock
    - cbegin
    - cend
    - empty
    linkageType: ''
    returnType: void
    signature: void Tracer::setRootSpanID([[maybe_unused]] const SpanID& spanID)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:158,1
    - Dst: push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:158,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - ' key'
    - ' value'
    argTypes:
    - std::string
    - AnyValue
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 161
      start: 152
    functionDepth: 0
    functionLinenumber: 152
    functionLinenumberEnd: 161
    functionName: pdns::trace::dnsdist::Tracer::setTraceAttribute
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc
    functionUses: 0
    functionsReached:
    - push_back
    - lock
    linkageType: ''
    returnType: bool
    signature: bool Tracer::setTraceAttribute([[maybe_unused]] const std::string&
      key, [[maybe_unused]] const AnyValue& value)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:166,1
    - Dst: std::find_if
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:168,1
    - Dst: rbegin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:169,1
    - Dst: rend
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:170,1
    - Dst: rend
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:172,1
    - Dst: pdns::trace::timestamp
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:173,1
    - Dst: assert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:176,1
    - Dst: auto::d_spanIDStack::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:176,1
    - Dst: std::find
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:182,1
    - Dst: auto::d_spanIDStack::begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:182,1
    - Dst: auto::d_spanIDStack::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:182,1
    - Dst: auto::d_spanIDStack::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:183,1
    - Dst: auto::d_spanIDStack::erase
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:184,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - ' spanID'
    argTypes:
    - SpanID
    assertStmts:
    - condition: (!data->d_spanIDStack.empty())
      pos:
        line_end: 175
        line_start: 175
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc
    constantsTouched: []
    func_position:
      end: 188
      start: 163
    functionDepth: 0
    functionLinenumber: 163
    functionLinenumberEnd: 188
    functionName: pdns::trace::dnsdist::Tracer::closeSpan
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc
    functionUses: 0
    functionsReached:
    - auto::d_spanIDStack::empty
    - std::find_if
    - auto::d_spanIDStack::erase
    - rbegin
    - auto::d_spanIDStack::begin
    - assert
    - lock
    - std::find
    - rend
    - auto::d_spanIDStack::end
    - pdns::trace::timestamp
    linkageType: ''
    returnType: void
    signature: void Tracer::closeSpan([[maybe_unused]] const SpanID& spanID)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::dnsdist::Tracer::setSpanAttribute
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:193,1
    - Dst: pdns::trace::dnsdist::Tracer::getRootSpanID
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:193,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' key'
    - ' value'
    argTypes:
    - std::string
    - AnyValue
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 195
      start: 190
    functionDepth: 1
    functionLinenumber: 190
    functionLinenumberEnd: 195
    functionName: pdns::trace::dnsdist::Tracer::setRootSpanAttribute
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc
    functionUses: 0
    functionsReached:
    - pdns::trace::dnsdist::Tracer::getRootSpanID
    - pdns::trace::dnsdist::Tracer::setSpanAttribute
    linkageType: ''
    returnType: void
    signature: void Tracer::setRootSpanAttribute([[maybe_unused]] const std::string&
      key, [[maybe_unused]] const AnyValue& value)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:201,1
    - Dst: std::find_if
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:203,1
    - Dst: rbegin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:203,1
    - Dst: rend
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:204,1
    - Dst: rend
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:206,1
    - Dst: auto::attributes::push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:207,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - ' spanid'
    - ' key'
    - ' value'
    argTypes:
    - SpanID
    - std::string
    - AnyValue
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 210
      start: 198
    functionDepth: 0
    functionLinenumber: 198
    functionLinenumberEnd: 210
    functionName: pdns::trace::dnsdist::Tracer::setSpanAttribute
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc
    functionUses: 2
    functionsReached:
    - std::find_if
    - rbegin
    - lock
    - rend
    - auto::attributes::push_back
    linkageType: ''
    returnType: void
    signature: void Tracer::setSpanAttribute([[maybe_unused]] const SpanID& spanid,
      [[maybe_unused]] const std::string& key, [[maybe_unused]] const AnyValue& value)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: read_only_lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:217,1
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:222,1
    - Dst: std::find_if
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:223,1
    - Dst: cbegin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:223,1
    - Dst: cend
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:223,1
    - Dst: cend
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:224,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 230
      start: 212
    functionDepth: 0
    functionLinenumber: 212
    functionLinenumberEnd: 230
    functionName: pdns::trace::dnsdist::Tracer::getRootSpanID
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc
    functionUses: 2
    functionsReached:
    - std::find_if
    - read_only_lock
    - cbegin
    - cend
    - empty
    linkageType: ''
    returnType: SpanID
    signature: SpanID Tracer::getRootSpanID()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: read_only_lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:237,1
    - Dst: auto::d_spanIDStack::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:238,1
    - Dst: auto::d_spanIDStack::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:241,1
    - Dst: auto::d_spanIDStack::front
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:241,1
    - Dst: auto::d_spanIDStack::back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:244,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 246
      start: 232
    functionDepth: 0
    functionLinenumber: 232
    functionLinenumberEnd: 246
    functionName: pdns::trace::dnsdist::Tracer::getLastSpanID
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc
    functionUses: 2
    functionsReached:
    - auto::d_spanIDStack::empty
    - read_only_lock
    - auto::d_spanIDStack::front
    - auto::d_spanIDStack::back
    - auto::d_spanIDStack::size
    linkageType: ''
    returnType: SpanID
    signature: SpanID Tracer::getLastSpanID()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: read_only_lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:253,1
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:254,1
    - Dst: std::find_if
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:255,1
    - Dst: rbegin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:255,1
    - Dst: rend
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:256,1
    - Dst: rend
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:258,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 1
    argNames:
    - ' name'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 264
      start: 248
    functionDepth: 0
    functionLinenumber: 248
    functionLinenumberEnd: 264
    functionName: pdns::trace::dnsdist::Tracer::getLastSpanIDForName
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc
    functionUses: 0
    functionsReached:
    - std::find_if
    - rbegin
    - read_only_lock
    - rend
    - empty
    linkageType: ''
    returnType: SpanID
    signature: SpanID Tracer::getLastSpanIDForName([[maybe_unused]] const std::string&
      name)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:271,1
    - Dst: makeRandom
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:274,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 278
      start: 266
    functionDepth: 0
    functionLinenumber: 266
    functionLinenumberEnd: 278
    functionName: pdns::trace::dnsdist::Tracer::getTraceID
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc
    functionUses: 2
    functionsReached:
    - makeRandom
    - lock
    linkageType: ''
    returnType: TraceID
    signature: TraceID Tracer::getTraceID()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::dnsdist::Tracer::Closer::Closer
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:283,1
    - Dst: shared_from_this
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:285,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ' spanid'
    argTypes:
    - SpanID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 287
      start: 280
    functionDepth: 1
    functionLinenumber: 280
    functionLinenumberEnd: 287
    functionName: pdns::trace::dnsdist::Tracer::getCloser
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc
    functionUses: 2
    functionsReached:
    - pdns::trace::dnsdist::Tracer::Closer::Closer
    - shared_from_this
    linkageType: ''
    returnType: Tracer::Closer
    signature: Tracer::Closer Tracer::getCloser([[maybe_unused]] const SpanID& spanid)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::dnsdist::Tracer::Closer::Closer
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:292,1
    - Dst: pdns::trace::dnsdist::Tracer::addSpan
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:294,1
    - Dst: pdns::trace::dnsdist::Tracer::getCloser
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:295,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ' name'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 297
      start: 289
    functionDepth: 2
    functionLinenumber: 289
    functionLinenumberEnd: 297
    functionName: pdns::trace::dnsdist::Tracer::openSpan
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc
    functionUses: 0
    functionsReached:
    - pdns::trace::dnsdist::Tracer::addSpan
    - pdns::trace::dnsdist::Tracer::Closer::Closer
    - pdns::trace::dnsdist::Tracer::getCloser
    linkageType: ''
    returnType: Tracer::Closer
    signature: Tracer::Closer Tracer::openSpan([[maybe_unused]] const std::string&
      name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::dnsdist::Tracer::Closer::Closer
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:302,1
    - Dst: pdns::trace::dnsdist::Tracer::addSpan
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:304,1
    - Dst: pdns::trace::dnsdist::Tracer::getCloser
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:305,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ' name'
    - ' parentSpanID'
    argTypes:
    - std::string
    - SpanID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 307
      start: 299
    functionDepth: 2
    functionLinenumber: 299
    functionLinenumberEnd: 307
    functionName: pdns::trace::dnsdist::Tracer::openSpan
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc
    functionUses: 0
    functionsReached:
    - pdns::trace::dnsdist::Tracer::addSpan
    - pdns::trace::dnsdist::Tracer::Closer::Closer
    - pdns::trace::dnsdist::Tracer::getCloser
    linkageType: ''
    returnType: Tracer::Closer
    signature: Tracer::Closer Tracer::openSpan([[maybe_unused]] const std::string&
      name, [[maybe_unused]] const SpanID& parentSpanID)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 316
      start: 309
    functionDepth: 0
    functionLinenumber: 309
    functionLinenumberEnd: 316
    functionName: Tracer::Closer::getSpanID() const
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: SpanID
    signature: SpanID Tracer::Closer::getSpanID() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: setSpanAttribute
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:323,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ' key'
    - ' value'
    argTypes:
    - std::string
    - AnyValue
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 325
      start: 318
    functionDepth: 0
    functionLinenumber: 318
    functionLinenumberEnd: 325
    functionName: Tracer::Closer::setAttribute([[maybe_unused]] const std::string&
      key, [[maybe_unused]] const AnyValue& value)
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc
    functionUses: 0
    functionsReached:
    - setSpanAttribute
    linkageType: ''
    returnType: void
    signature: void Tracer::Closer::setAttribute([[maybe_unused]] const std::string&
      key, [[maybe_unused]] const AnyValue& value)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::vector::reserve
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:334,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:335,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:336,1
    - Dst: getTraceID
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:337,1
    - Dst: std::vector::insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:338,1
    - Dst: std::vector::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:338,1
    - Dst: auto::begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:338,1
    - Dst: auto::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:338,1
    - Dst: getLastSpanID
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:339,1
    - Dst: std::vector::insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:340,1
    - Dst: std::vector::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:340,1
    - Dst: auto::begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:340,1
    - Dst: auto::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:340,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:341,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - ' tracer'
    argTypes:
    - std::shared_ptr<Tracer>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 344
      start: 327
    functionDepth: 1
    functionLinenumber: 327
    functionLinenumberEnd: 344
    functionName: pdns::trace::dnsdist::makeEDNSTraceParentOption
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc
    functionUses: 1
    functionsReached:
    - std::vector::end
    - std::vector::push_back
    - getTraceID
    - std::vector::insert
    - getLastSpanID
    - std::vector::reserve
    - auto::begin
    - auto::end
    linkageType: ''
    returnType: std::vector<uint8_t>
    signature: std::vector<uint8_t> makeEDNSTraceParentOption([[maybe_unused]] const
      std::shared_ptr<Tracer>& tracer)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:353,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:353,1
    - Dst: dnsdist::getEDNSOptionsStart
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:357,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:359,1
    - Dst: removeEDNSOptionFromOPT
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:361,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:361,1
    - Dst: PacketBuffer::data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:361,1
    - Dst: pdns::trace::dnsdist::makeEDNSTraceParentOption
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:364,1
    - Dst: static_cast<uint16_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:367,1
    - Dst: PacketBuffer::at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:367,1
    - Dst: PacketBuffer::at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:367,1
    - Dst: setEDNSOption
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:368,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:368,1
    - Dst: auto::begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:368,1
    - Dst: auto::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:368,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:368,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:371,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:371,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:371,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:371,1
    - Dst: PacketBuffer::insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:372,1
    - Dst: PacketBuffer::begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:372,1
    - Dst: std::array::begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:372,1
    - Dst: std::array::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:372,1
    - Dst: resize
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:376,1
    - Dst: insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:378,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:378,1
    - Dst: PacketBuffer::begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:378,1
    - Dst: PacketBuffer::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc:378,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 6
    argNames:
    - ' origBuf'
    - ' tracer'
    - qnameWireLength
    - proxyProtocolPayloadSize
    - traceparentOptionCode
    - isTCP
    argTypes:
    - PacketBuffer
    - std::shared_ptr<Tracer>
    - size_t
    - size_t
    - uint16_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 384
      start: 346
    functionDepth: 2
    functionLinenumber: 346
    functionLinenumberEnd: 384
    functionName: pdns::trace::dnsdist::addTraceparentEdnsOptionToPacketBuffer
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc
    functionUses: 12
    functionsReached:
    - reinterpret_cast<char*>
    - PacketBuffer::end
    - PacketBuffer::at
    - PacketBuffer::size
    - auto::begin
    - insert
    - std::string
    - PacketBuffer::begin
    - pdns::trace::dnsdist::makeEDNSTraceParentOption
    - resize
    - static_cast<uint16_t>
    - begin
    - std::array::begin
    - removeEDNSOptionFromOPT
    - pdns::max
    - static_cast<uint8_t>
    - PacketBuffer::data
    - PacketBuffer::insert
    - end
    - std::array::end
    - setEDNSOption
    - auto::end
    - dnsdist::getEDNSOptionsStart
    linkageType: ''
    returnType: bool
    signature: bool addTraceparentEdnsOptionToPacketBuffer([[maybe_unused]] PacketBuffer&
      origBuf, [[maybe_unused]] const std::shared_ptr<Tracer>& tracer, [[maybe_unused]]
      const size_t qnameWireLength, [[maybe_unused]] const size_t proxyProtocolPayloadSize,
      [[maybe_unused]] const uint16_t traceparentOptionCode, [[maybe_unused]] const
      bool isTCP)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - context
    argTypes:
    - Context
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 39
      start: 29
    functionDepth: 0
    functionLinenumber: 29
    functionLinenumberEnd: 39
    functionName: dnsdist::udp::contextToStr
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-udp.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string contextToStr(Context context)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::configuration::getImmutableConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-udp.cc:43,1
    - Dst: setSocketSendBuffer
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-udp.cc:46,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-udp.cc:50,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-udp.cc:50,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-udp.cc:50,1
    - Dst: error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-udp.cc:51,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-udp.cc:51,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-udp.cc:51,1
    - Dst: raiseSocketSendBufferToMax
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-udp.cc:57,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-udp.cc:59,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-udp.cc:59,1
    - Dst: dnsdist::udp::contextToStr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-udp.cc:59,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-udp.cc:59,1
    - Dst: info
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-udp.cc:60,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-udp.cc:60,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-udp.cc:60,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-udp.cc:65,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-udp.cc:65,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-udp.cc:65,1
    - Dst: error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-udp.cc:66,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-udp.cc:66,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-udp.cc:66,1
    - Dst: setSocketReceiveBuffer
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-udp.cc:73,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-udp.cc:77,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-udp.cc:77,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-udp.cc:77,1
    - Dst: error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-udp.cc:78,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-udp.cc:78,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-udp.cc:78,1
    - Dst: raiseSocketReceiveBufferToMax
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-udp.cc:84,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-udp.cc:86,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-udp.cc:86,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-udp.cc:86,1
    - Dst: info
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-udp.cc:87,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-udp.cc:87,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-udp.cc:87,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-udp.cc:92,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-udp.cc:92,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-udp.cc:92,1
    - Dst: error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-udp.cc:93,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-udp.cc:93,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-udp.cc:93,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 39
    argCount: 4
    argNames:
    - socketDesc
    - ' logger'
    - context
    - ' addr'
    argTypes:
    - int
    - Logr::Logger
    - Context
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 41
    functionDepth: 1
    functionLinenumber: 41
    functionLinenumberEnd: 97
    functionName: dnsdist::udp::setUDPSocketBufferSizes
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-udp.cc
    functionUses: 2
    functionsReached:
    - SLOG
    - setSocketSendBuffer
    - Logging::Loggable
    - what
    - setSocketReceiveBuffer
    - warnlog
    - infolog
    - info
    - raiseSocketSendBufferToMax
    - dnsdist::configuration::getImmutableConfiguration
    - error
    - dnsdist::udp::contextToStr
    - toStringWithPort
    - raiseSocketReceiveBufferToMax
    linkageType: ''
    returnType: void
    signature: void setUDPSocketBufferSizes(int socketDesc, const Logr::Logger& logger,
      Context context, const ComboAddress& addr)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - context
    argTypes:
    - Context
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 39
      start: 29
    functionDepth: 0
    functionLinenumber: 29
    functionLinenumberEnd: 39
    functionName: dnsdist::udp::contextToStr
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-udp.cc
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string contextToStr(Context context)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::configuration::getImmutableConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-udp.cc:43,1
    - Dst: setSocketSendBuffer
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-udp.cc:46,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-udp.cc:50,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-udp.cc:50,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-udp.cc:50,1
    - Dst: error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-udp.cc:51,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-udp.cc:51,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-udp.cc:51,1
    - Dst: raiseSocketSendBufferToMax
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-udp.cc:57,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-udp.cc:59,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-udp.cc:59,1
    - Dst: dnsdist::udp::contextToStr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-udp.cc:59,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-udp.cc:59,1
    - Dst: info
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-udp.cc:60,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-udp.cc:60,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-udp.cc:60,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-udp.cc:65,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-udp.cc:65,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-udp.cc:65,1
    - Dst: error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-udp.cc:66,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-udp.cc:66,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-udp.cc:66,1
    - Dst: setSocketReceiveBuffer
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-udp.cc:73,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-udp.cc:77,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-udp.cc:77,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-udp.cc:77,1
    - Dst: error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-udp.cc:78,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-udp.cc:78,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-udp.cc:78,1
    - Dst: raiseSocketReceiveBufferToMax
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-udp.cc:84,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-udp.cc:86,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-udp.cc:86,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-udp.cc:86,1
    - Dst: info
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-udp.cc:87,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-udp.cc:87,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-udp.cc:87,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-udp.cc:92,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-udp.cc:92,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-udp.cc:92,1
    - Dst: error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-udp.cc:93,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-udp.cc:93,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-udp.cc:93,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 39
    argCount: 4
    argNames:
    - socketDesc
    - ' logger'
    - context
    - ' addr'
    argTypes:
    - int
    - Logr::Logger
    - Context
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 41
    functionDepth: 1
    functionLinenumber: 41
    functionLinenumberEnd: 97
    functionName: dnsdist::udp::setUDPSocketBufferSizes
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-udp.cc
    functionUses: 2
    functionsReached:
    - SLOG
    - setSocketSendBuffer
    - Logging::Loggable
    - what
    - setSocketReceiveBuffer
    - warnlog
    - infolog
    - info
    - raiseSocketSendBufferToMax
    - dnsdist::configuration::getImmutableConfiguration
    - error
    - dnsdist::udp::contextToStr
    - toStringWithPort
    - raiseSocketReceiveBufferToMax
    linkageType: ''
    returnType: void
    signature: void setUDPSocketBufferSizes(int socketDesc, const Logr::Logger& logger,
      Context context, const ComboAddress& addr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: toLogString
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:57,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - os
    - ' d'
    argTypes:
    - std::ostream
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 55
    functionDepth: 0
    functionLinenumber: 55
    functionLinenumberEnd: 58
    functionName: '& operator<<(std::ostream &os, const DNSName& d)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsname.cc
    functionUses: 0
    functionsReached:
    - toLogString
    linkageType: ''
    returnType: std::ostream
    signature: std::ostream & operator<<(std::ostream &os, const DNSName& d)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DNSName::appendEscapedLabel
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:68,1
    - Dst: std::range_error
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:69,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - ' msg'
    - buf
    - length
    argTypes:
    - std::string
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 60
    functionDepth: 0
    functionLinenumber: 60
    functionLinenumberEnd: 70
    functionName: DNSName::throwSafeRangeError
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsname.cc
    functionUses: 1
    functionsReached:
    - std::range_error
    - DNSName::appendEscapedLabel
    linkageType: ''
    returnType: void
    signature: void DNSName::throwSafeRangeError(const std::string& msg, const char*
      buf, size_t length)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: std::string_view::data
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:74,1
    - Dst: std::string_view::length
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:75,1
    - Dst: assign
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:78,1
    - Dst: std::memchr
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:80,1
    - Dst: reserve
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:85,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:87,1
    - Dst: DNSName::throwSafeRangeError
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:89,1
    - Dst: append
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:90,1
    - Dst: append
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:96,1
    - Dst: DNSName::throwSafeRangeError
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:100,1
    - Dst: static_cast<ptrdiff_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:102,1
    - Dst: DNSName::throwSafeRangeError
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:103,1
    - Dst: append
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:107,1
    - Dst: segmentDNSNameRaw
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:110,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:111,1
    - Dst: DNSName::throwSafeRangeError
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:112,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 32
    argCount: 1
    argNames:
    - sw
    argTypes:
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 72
    functionDepth: 1
    functionLinenumber: 72
    functionLinenumberEnd: 116
    functionName: DNSName::DNSName
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsname.cc
    functionUses: 66
    functionsReached:
    - assign
    - std::string_view::length
    - std::string_view::data
    - append
    - segmentDNSNameRaw
    - static_cast<ptrdiff_t>
    - size
    - reserve
    - std::memchr
    - DNSName::throwSafeRangeError
    linkageType: ''
    returnType: void
    signature: void DNSName::DNSName(const std::string_view sw)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: std::range_error
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:121,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:121,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:121,1
    - Dst: memchr
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:124,1
    - Dst: reserve
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:125,1
    - Dst: DNSName::packetParser
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:129,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 8
    argNames:
    - pos
    - len
    - offset
    - uncompress
    - qtype
    - qclass
    - consumed
    - minOffset
    argTypes:
    - char*
    - size_t
    - size_t
    - bool
    - uint16_t*
    - uint16_t*
    - unsigned int*
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 130
      start: 118
    functionDepth: 0
    functionLinenumber: 118
    functionLinenumberEnd: 130
    functionName: DNSName::DNSName
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsname.cc
    functionUses: 66
    functionsReached:
    - memchr
    - std::to_string
    - reserve
    - std::range_error
    - DNSName::packetParser
    linkageType: ''
    returnType: void
    signature: void DNSName::DNSName(const char* pos, size_t len, size_t offset, bool
      uncompress, uint16_t* qtype, uint16_t* qclass, unsigned int* consumed, uint16_t
      minOffset)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: std::range_error
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:135,1
    - Dst: std::range_error
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:138,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 7
    argCount: 1
    argNames:
    - length
    argTypes:
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 132
    functionDepth: 0
    functionLinenumber: 132
    functionLinenumberEnd: 140
    functionName: checkLabelLength
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsname.cc
    functionUses: 3
    functionsReached:
    - std::range_error
    linkageType: ''
    returnType: void
    signature: void checkLabelLength(uint8_t length)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:150,1
    - Dst: std::range_error
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:160,1
    - Dst: std::range_error
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:167,1
    - Dst: checkLabelLength
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:169,1
    - Dst: std::range_error
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:172,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:174,1
    - Dst: std::range_error
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:175,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:180,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:183,1
    - Dst: reserve
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:188,1
    - Dst: resize
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:189,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:190,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:190,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:190,1
    - Dst: append
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:191,1
    - Dst: static_cast<char>
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:191,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 38
    argCount: 3
    argNames:
    - ' view'
    - pos
    - uncompress
    argTypes:
    - pdns::views::UnsignedCharView
    - size_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 194
      start: 143
    functionDepth: 1
    functionLinenumber: 143
    functionLinenumberEnd: 194
    functionName: DNSName::parsePacketUncompressed
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsname.cc
    functionUses: 1
    functionsReached:
    - memcpy
    - resize
    - append
    - checkLabelLength
    - size
    - reserve
    - std::range_error
    - at
    - static_cast<char>
    linkageType: ''
    returnType: size_t
    signature: size_t DNSName::parsePacketUncompressed(const pdns::views::UnsignedCharView&
      view, size_t pos, bool uncompress)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: std::range_error
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:200,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:200,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:200,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:203,1
    - Dst: std::range_error
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:204,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:204,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:204,1
    - Dst: DNSName::parsePacketUncompressed
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:209,1
    - Dst: pdns::views::UnsignedCharView::at
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:211,1
    - Dst: pdns::views::UnsignedCharView::size
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:213,1
    - Dst: abort
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:215,1
    - Dst: std::range_error
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:219,1
    - Dst: pdns::views::UnsignedCharView::at
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:223,1
    - Dst: std::range_error
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:226,1
    - Dst: std::range_error
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:230,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:230,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:230,1
    - Dst: std::range_error
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:234,1
    - Dst: DNSName::packetParser
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:237,1
    - Dst: DNSName::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:242,1
    - Dst: append
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:243,1
    - Dst: static_cast<char>
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:243,1
    - Dst: pdns::views::UnsignedCharView::size
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:251,1
    - Dst: std::range_error
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:252,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:252,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:252,1
    - Dst: pdns::views::UnsignedCharView::at
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:254,1
    - Dst: pdns::views::UnsignedCharView::at
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:254,1
    - Dst: pdns::views::UnsignedCharView::size
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:259,1
    - Dst: std::range_error
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:260,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:260,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:260,1
    - Dst: pdns::views::UnsignedCharView::at
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:262,1
    - Dst: pdns::views::UnsignedCharView::at
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:262,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 48
    argCount: 9
    argNames:
    - qpos
    - len
    - offset
    - uncompress
    - qtype
    - qclass
    - consumed
    - depth
    - minOffset
    argTypes:
    - char*
    - size_t
    - size_t
    - bool
    - uint16_t*
    - uint16_t*
    - unsigned int*
    - int
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 264
      start: 197
    functionDepth: 0
    functionLinenumber: 197
    functionLinenumberEnd: 264
    functionName: DNSName::packetParser
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsname.cc
    functionUses: 4
    functionsReached:
    - abort
    - static_cast<size_t>
    - std::to_string
    - append
    - pdns::views::UnsignedCharView::at
    - pdns::views::UnsignedCharView::size
    - std::range_error
    - DNSName::empty
    - DNSName::parsePacketUncompressed
    - DNSName::packetParser
    - static_cast<char>
    linkageType: ''
    returnType: void
    signature: void DNSName::packetParser(const char* qpos, size_t len, size_t offset,
      bool uncompress, uint16_t* qtype, uint16_t* qclass, unsigned int* consumed,
      int depth, uint16_t minOffset)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:269,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ' separator'
    - trailing
    argTypes:
    - std::string
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 271
      start: 266
    functionDepth: 0
    functionLinenumber: 266
    functionLinenumberEnd: 271
    functionName: DNSName::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsname.cc
    functionUses: 39
    functionsReached:
    - DNSName::toString
    linkageType: ''
    returnType: std::string
    signature: std::string DNSName::toString(const std::string& separator, const bool
      trailing) const
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: DNSName::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:275,1
    - Dst: std::out_of_range
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:276,1
    - Dst: DNSName::isRoot
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:279,1
    - Dst: capacity
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:284,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:284,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:284,1
    - Dst: reserve
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:285,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:285,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:285,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:290,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:291,1
    - Dst: DNSName::appendEscapedLabel
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:294,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:294,1
    - Dst: resize
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:301,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:301,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:301,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 20
    argCount: 3
    argNames:
    - ' output'
    - ' separator'
    - trailing
    argTypes:
    - std::string
    - std::string
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 303
      start: 273
    functionDepth: 1
    functionLinenumber: 273
    functionLinenumberEnd: 303
    functionName: DNSName::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsname.cc
    functionUses: 39
    functionsReached:
    - static_cast<size_t>
    - std::out_of_range
    - resize
    - DNSName::isRoot
    - size
    - reserve
    - capacity
    - DNSName::empty
    - c_str
    - DNSName::appendEscapedLabel
    linkageType: ''
    returnType: void
    signature: void DNSName::toString(std::string& output, const std::string& separator,
      const bool trailing) const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DNSName::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:307,1
    - Dst: DNSName::toStringRootDot
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:311,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 312
      start: 305
    functionDepth: 0
    functionLinenumber: 305
    functionLinenumberEnd: 312
    functionName: DNSName::toLogString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsname.cc
    functionUses: 3
    functionsReached:
    - DNSName::toStringRootDot
    - DNSName::empty
    linkageType: ''
    returnType: std::string
    signature: std::string DNSName::toLogString() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DNSName::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:316,1
    - Dst: std::out_of_range
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:317,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:320,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:320,1
    - Dst: length
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:320,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 321
      start: 314
    functionDepth: 0
    functionLinenumber: 314
    functionLinenumberEnd: 321
    functionName: DNSName::toDNSString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsname.cc
    functionUses: 3
    functionsReached:
    - length
    - std::out_of_range
    - DNSName::empty
    - c_str
    - std::string
    linkageType: ''
    returnType: std::string
    signature: std::string DNSName::toDNSString() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSName::toDNSString
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:325,1
    - Dst: toLowerInPlace
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:326,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 328
      start: 323
    functionDepth: 0
    functionLinenumber: 323
    functionLinenumberEnd: 328
    functionName: DNSName::toDNSStringLC
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsname.cc
    functionUses: 1
    functionsReached:
    - DNSName::toDNSString
    - toLowerInPlace
    linkageType: ''
    returnType: std::string
    signature: std::string DNSName::toDNSStringLC() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: length
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:336,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 337
      start: 335
    functionDepth: 0
    functionLinenumber: 335
    functionLinenumberEnd: 337
    functionName: DNSName::wirelength
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsname.cc
    functionUses: 10
    functionsReached:
    - length
    linkageType: ''
    returnType: size_t
    signature: size_t DNSName::wirelength() const
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: DNSName::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:342,1
    - Dst: DNSName::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:342,1
    - Dst: std::out_of_range
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:343,1
    - Dst: d_storage::size
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:346,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:346,1
    - Dst: cbegin
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:351,1
    - Dst: cend
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:351,1
    - Dst: std::distance
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:352,1
    - Dst: cend
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:352,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:353,1
    - Dst: d_storage::size
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:353,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:356,1
    - Dst: d_storage::size
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:356,1
    - Dst: d_storage::cbegin
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:357,1
    - Dst: cend
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:358,1
    - Dst: dns_tolower
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:359,1
    - Dst: dns_tolower
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:359,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:364,1
    - Dst: std::out_of_range
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:365,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 23
    argCount: 1
    argNames:
    - ' parent'
    argTypes:
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 369
      start: 340
    functionDepth: 1
    functionLinenumber: 340
    functionLinenumberEnd: 369
    functionName: DNSName::isPartOf
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsname.cc
    functionUses: 13
    functionsReached:
    - d_storage::size
    - std::out_of_range
    - std::distance
    - static_cast<size_t>
    - dns_tolower
    - size
    - static_cast<uint8_t>
    - cbegin
    - DNSName::empty
    - cend
    - d_storage::cbegin
    linkageType: ''
    returnType: bool
    signature: bool DNSName::isPartOf(const DNSName& parent) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSName::makeUsRelative
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:374,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ' zone'
    argTypes:
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 376
      start: 371
    functionDepth: 0
    functionLinenumber: 371
    functionLinenumberEnd: 376
    functionName: DNSName::makeRelative
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsname.cc
    functionUses: 5
    functionsReached:
    - DNSName::makeUsRelative
    linkageType: ''
    returnType: DNSName
    signature: DNSName DNSName::makeRelative(const DNSName& zone) const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DNSName::isPartOf
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:380,1
    - Dst: erase
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:381,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:381,1
    - Dst: d_storage::size
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:381,1
    - Dst: append
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:382,1
    - Dst: static_cast<char>
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:382,1
    - Dst: DNSName::clear
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:385,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - ' zone'
    argTypes:
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 387
      start: 378
    functionDepth: 0
    functionLinenumber: 378
    functionLinenumberEnd: 387
    functionName: DNSName::makeUsRelative
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsname.cc
    functionUses: 3
    functionsReached:
    - d_storage::size
    - append
    - DNSName::clear
    - size
    - DNSName::isPartOf
    - erase
    - static_cast<char>
    linkageType: ''
    returnType: void
    signature: void DNSName::makeUsRelative(const DNSName& zone)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: DNSName::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:391,1
    - Dst: DNSName::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:391,1
    - Dst: DNSName::DNSName
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:392,1
    - Dst: DNSName::getRawLabels
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:397,1
    - Dst: DNSName::getRawLabels
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:398,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:400,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:400,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:401,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:401,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:402,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:402,1
    - Dst: pdns_iequals
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:404,1
    - Dst: DNSName::prependRawLabel
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:408,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 11
    argCount: 1
    argNames:
    - ' other'
    argTypes:
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 412
      start: 389
    functionDepth: 0
    functionLinenumber: 389
    functionLinenumberEnd: 412
    functionName: DNSName::getCommonLabels
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsname.cc
    functionUses: 1
    functionsReached:
    - std::vector::size
    - pdns_iequals
    - DNSName::prependRawLabel
    - DNSName::getRawLabels
    - std::vector::at
    - DNSName::empty
    - DNSName::DNSName
    linkageType: ''
    returnType: DNSName
    signature: DNSName DNSName::getCommonLabels(const DNSName& other) const
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: DNSName::DNSName
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:416,1
    - Dst: DNSName::isRoot
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:418,1
    - Dst: DNSName::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:422,1
    - Dst: DNSName::getRawLabels
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:423,1
    - Dst: vector::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:424,1
    - Dst: DNSName::appendRawLabel
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:425,1
    - Dst: vector::back
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:425,1
    - Dst: vector::pop_back
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:426,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 430
      start: 414
    functionDepth: 0
    functionLinenumber: 414
    functionLinenumberEnd: 430
    functionName: DNSName::labelReverse
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsname.cc
    functionUses: 1
    functionsReached:
    - vector::pop_back
    - vector::back
    - DNSName::isRoot
    - vector::empty
    - DNSName::getRawLabels
    - DNSName::appendRawLabel
    - DNSName::empty
    - DNSName::DNSName
    linkageType: ''
    returnType: DNSName
    signature: DNSName DNSName::labelReverse() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSName::appendRawLabel
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:434,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:434,1
    - Dst: length
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:434,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' label'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 435
      start: 432
    functionDepth: 0
    functionLinenumber: 432
    functionLinenumberEnd: 435
    functionName: DNSName::appendRawLabel
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsname.cc
    functionUses: 14
    functionsReached:
    - c_str
    - length
    - DNSName::appendRawLabel
    linkageType: ''
    returnType: void
    signature: void DNSName::appendRawLabel(const std::string& label)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: checkLabelLength
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:439,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:442,1
    - Dst: std::range_error
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:443,1
    - Dst: DNSName::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:446,1
    - Dst: reserve
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:447,1
    - Dst: append
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:448,1
    - Dst: static_cast<char>
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:448,1
    - Dst: reserve
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:451,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:451,1
    - Dst: rbegin
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:452,1
    - Dst: static_cast<char>
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:452,1
    - Dst: append
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:454,1
    - Dst: append
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:455,1
    - Dst: static_cast<char>
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:455,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 2
    argNames:
    - start
    - length
    argTypes:
    - char*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 456
      start: 437
    functionDepth: 0
    functionLinenumber: 437
    functionLinenumberEnd: 456
    functionName: DNSName::appendRawLabel
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsname.cc
    functionUses: 14
    functionsReached:
    - rbegin
    - append
    - checkLabelLength
    - size
    - reserve
    - std::range_error
    - DNSName::empty
    - static_cast<char>
    linkageType: ''
    returnType: void
    signature: void DNSName::appendRawLabel(const char* start, unsigned int length)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: checkLabelLength
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:460,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:460,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:463,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:463,1
    - Dst: std::range_error
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:464,1
    - Dst: DNSName::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:467,1
    - Dst: reserve
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:468,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:468,1
    - Dst: append
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:469,1
    - Dst: static_cast<char>
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:469,1
    - Dst: reserve
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:472,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:472,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:472,1
    - Dst: static_cast<char>
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:475,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:475,1
    - Dst: string_t::append
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:476,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:476,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:476,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 1
    argNames:
    - ' label'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 478
      start: 458
    functionDepth: 0
    functionLinenumber: 458
    functionLinenumberEnd: 478
    functionName: DNSName::prependRawLabel
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsname.cc
    functionUses: 14
    functionsReached:
    - append
    - checkLabelLength
    - size
    - reserve
    - std::range_error
    - DNSName::empty
    - string_t::append
    - c_str
    - static_cast<char>
    linkageType: ''
    returnType: void
    signature: void DNSName::prependRawLabel(const std::string& label)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: DNSName::getRawLabels
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:484,1
    - Dst: DNSName::getRawLabels
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:485,1
    - Dst: auto::rbegin
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:486,1
    - Dst: auto::rend
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:487,1
    - Dst: auto::rbegin
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:488,1
    - Dst: auto::rend
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:489,1
    - Dst: pdns_ilexicographical_compare_three_way
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:491,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 506
      start: 480
    functionDepth: 0
    functionLinenumber: 480
    functionLinenumberEnd: 506
    functionName: DNSName::slowCanonCompare_three_way
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsname.cc
    functionUses: 1
    functionsReached:
    - pdns_ilexicographical_compare_three_way
    - auto::rend
    - DNSName::getRawLabels
    - auto::rbegin
    linkageType: ''
    returnType: int
    signature: int DNSName::slowCanonCompare_three_way(const DNSName& rhs) const
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:524,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:524,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:524,1
    - Dst: std::array::max_size
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:524,1
    - Dst: std::array::at
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:525,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:525,1
    - Dst: d_storage::c_str
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:527,1
    - Dst: d_storage::c_str
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:527,1
    - Dst: d_storage::size
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:527,1
    - Dst: std::array::max_size
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:527,1
    - Dst: std::array::at
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:528,1
    - Dst: d_storage::c_str
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:528,1
    - Dst: std::array::max_size
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:532,1
    - Dst: std::array::max_size
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:532,1
    - Dst: DNSName::slowCanonCompare_three_way
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:533,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:547,1
    - Dst: std::array::at
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:547,1
    - Dst: d_storage::c_str
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:548,1
    - Dst: std::array::at
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:548,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:549,1
    - Dst: std::array::at
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:549,1
    - Dst: d_storage::c_str
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:550,1
    - Dst: std::array::at
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:550,1
    - Dst: std::isdigit
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:563,1
    - Dst: static_cast<unsigned char>
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:563,1
    - Dst: std::isdigit
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:570,1
    - Dst: static_cast<unsigned char>
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:570,1
    - Dst: pdns_ilexicographical_compare_three_way
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:582,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 42
    argCount: 2
    argNames:
    - ' rhs'
    - pretty
    argTypes:
    - DNSName
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 587
      start: 508
    functionDepth: 0
    functionLinenumber: 508
    functionLinenumberEnd: 587
    functionName: DNSName::canonCompare_three_way
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsname.cc
    functionUses: 4
    functionsReached:
    - DNSName::slowCanonCompare_three_way
    - d_storage::size
    - pdns_ilexicographical_compare_three_way
    - d_storage::c_str
    - size
    - std::array::max_size
    - std::isdigit
    - c_str
    - std::array::at
    - static_cast<unsigned char>
    linkageType: ''
    returnType: int
    signature: int DNSName::canonCompare_three_way(const DNSName& rhs, bool pretty)
      const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vector::reserve
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:593,1
    - Dst: DNSName::countLabels
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:593,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:595,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:595,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:595,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:596,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 599
      start: 590
    functionDepth: 0
    functionLinenumber: 590
    functionLinenumberEnd: 599
    functionName: DNSName::getRawLabels
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsname.cc
    functionUses: 12
    functionsReached:
    - vector::push_back
    - c_str
    - DNSName::countLabels
    - size
    - vector::reserve
    linkageType: ''
    returnType: vector<std::string>
    signature: vector<std::string> DNSName::getRawLabels() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:604,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:604,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:604,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:606,1
    - Dst: std::out_of_range
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:610,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:610,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:610,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 7
    argCount: 1
    argNames:
    - pos
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 611
      start: 601
    functionDepth: 0
    functionLinenumber: 601
    functionLinenumberEnd: 611
    functionName: DNSName::getRawLabel
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsname.cc
    functionUses: 3
    functionsReached:
    - std::out_of_range
    - std::to_string
    - size
    - c_str
    - std::string
    linkageType: ''
    returnType: std::string
    signature: std::string DNSName::getRawLabel(unsigned int pos) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSName::trimToLabels
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:616,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 618
      start: 613
    functionDepth: 0
    functionLinenumber: 613
    functionLinenumberEnd: 618
    functionName: DNSName::getLastLabel
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsname.cc
    functionUses: 1
    functionsReached:
    - DNSName::trimToLabels
    linkageType: ''
    returnType: DNSName
    signature: DNSName DNSName::getLastLabel() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DNSName::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:622,1
    - Dst: erase
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:625,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 627
      start: 620
    functionDepth: 0
    functionLinenumber: 620
    functionLinenumberEnd: 627
    functionName: DNSName::chopOff
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsname.cc
    functionUses: 20
    functionsReached:
    - erase
    - DNSName::empty
    linkageType: ''
    returnType: bool
    signature: bool DNSName::chopOff()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:631,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:634,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 636
      start: 629
    functionDepth: 0
    functionLinenumber: 629
    functionLinenumberEnd: 636
    functionName: DNSName::isWildcard
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsname.cc
    functionUses: 4
    functionsReached:
    - size
    - begin
    linkageType: ''
    returnType: bool
    signature: bool DNSName::isWildcard() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Regex
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:649,1
    - Dst: Regex::match
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:650,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:650,1
    - Dst: Regex
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:652,1
    - Dst: Regex::match
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:653,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:653,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - allowUnderscore
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 654
      start: 646
    functionDepth: 0
    functionLinenumber: 646
    functionLinenumberEnd: 654
    functionName: DNSName::isHostname
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsname.cc
    functionUses: 1
    functionsReached:
    - Regex
    - Regex::match
    - DNSName::toString
    linkageType: ''
    returnType: bool
    signature: bool DNSName::isHostname(bool allowUnderscore) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:659,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:659,1
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:660,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:660,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 667
      start: 656
    functionDepth: 0
    functionLinenumber: 656
    functionLinenumberEnd: 667
    functionName: DNSName::countLabels
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsname.cc
    functionUses: 10
    functionsReached:
    - c_str
    - reinterpret_cast<const unsigned char*>
    - size
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int DNSName::countLabels() const
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: DNSName::countLabels
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:672,1
    - Dst: DNSName::chopOff
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:673,1
    - Dst: DNSName::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:679,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - to
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 683
      start: 669
    functionDepth: 0
    functionLinenumber: 669
    functionLinenumberEnd: 683
    functionName: DNSName::trimToLabels
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsname.cc
    functionUses: 6
    functionsReached:
    - DNSName::countLabels
    - DNSName::empty
    - DNSName::chopOff
    linkageType: ''
    returnType: void
    signature: void DNSName::trimToLabels(unsigned int to)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:687,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' d'
    argTypes:
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 688
      start: 685
    functionDepth: 2
    functionLinenumber: 685
    functionLinenumberEnd: 688
    functionName: hash_value
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsname.cc
    functionUses: 0
    functionsReached:
    - hash
    linkageType: ''
    returnType: size_t
    signature: size_t hash_value(DNSName const& d)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:695,1
    - Dst: append
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:703,1
    - Dst: static_cast<char>
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:703,1
    - Dst: snprintf
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:707,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:708,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:709,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:709,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:709,1
    - Dst: append
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:711,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 19
    argCount: 3
    argNames:
    - ' appendTo'
    - orig
    - len
    argTypes:
    - std::string
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 716
      start: 690
    functionDepth: 0
    functionLinenumber: 690
    functionLinenumberEnd: 716
    functionName: DNSName::appendEscapedLabel
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsname.cc
    functionUses: 4
    functionsReached:
    - static_cast<size_t>
    - snprintf
    - std::to_string
    - std::runtime_error
    - append
    - static_cast<uint8_t>
    - std::string
    - static_cast<char>
    linkageType: ''
    returnType: void
    signature: void DNSName::appendEscapedLabel(std::string& appendTo, const char*
      orig, size_t len)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:722,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:726,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:735,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 739
      start: 718
    functionDepth: 0
    functionLinenumber: 718
    functionLinenumberEnd: 739
    functionName: DNSName::has8bitBytes
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsname.cc
    functionUses: 0
    functionsReached:
    - at
    linkageType: ''
    returnType: bool
    signature: bool DNSName::has8bitBytes() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:815,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:816,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:816,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:820,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - ' storage'
    argTypes:
    - DNSName::string_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 824
      start: 812
    functionDepth: 0
    functionLinenumber: 812
    functionLinenumberEnd: 824
    functionName: DNSName::RawLabelsVisitor::RawLabelsVisitor(const DNSName::string_t&
      storage)
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsname.cc
    functionUses: 0
    functionsReached:
    - at
    - size
    - static_cast<uint8_t>
    linkageType: ''
    returnType: void
    signature: void DNSName::RawLabelsVisitor::RawLabelsVisitor(const DNSName::string_t&
      storage)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSName::getRawLabelsVisitor
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:828,1
    - Dst: getStorage
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:828,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 829
      start: 826
    functionDepth: 0
    functionLinenumber: 826
    functionLinenumberEnd: 829
    functionName: DNSName::getRawLabelsVisitor
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsname.cc
    functionUses: 3
    functionsReached:
    - DNSName::getRawLabelsVisitor
    - getStorage
    linkageType: ''
    returnType: DNSName::RawLabelsVisitor
    signature: DNSName::RawLabelsVisitor DNSName::getRawLabelsVisitor() const
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: std::out_of_range
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:834,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:836,1
    - Dst: std::string_view
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:838,1
    - Dst: std::string_view
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:840,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:840,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 841
      start: 831
    functionDepth: 0
    functionLinenumber: 831
    functionLinenumberEnd: 841
    functionName: DNSName::RawLabelsVisitor::front() const
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsname.cc
    functionUses: 0
    functionsReached:
    - std::string_view
    - std::out_of_range
    - at
    linkageType: ''
    returnType: std::string_view
    signature: std::string_view DNSName::RawLabelsVisitor::front() const
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: std::out_of_range
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:846,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:848,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:849,1
    - Dst: std::string_view
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:851,1
    - Dst: std::string_view
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:853,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:853,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 854
      start: 843
    functionDepth: 0
    functionLinenumber: 843
    functionLinenumberEnd: 854
    functionName: DNSName::RawLabelsVisitor::back() const
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsname.cc
    functionUses: 0
    functionsReached:
    - std::string_view
    - std::out_of_range
    - at
    linkageType: ''
    returnType: std::string_view
    signature: std::string_view DNSName::RawLabelsVisitor::back() const
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 863
      start: 856
    functionDepth: 0
    functionLinenumber: 856
    functionLinenumberEnd: 863
    functionName: DNSName::RawLabelsVisitor::pop_back()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsname.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool DNSName::RawLabelsVisitor::pop_back()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 868
      start: 865
    functionDepth: 0
    functionLinenumber: 865
    functionLinenumberEnd: 868
    functionName: DNSName::RawLabelsVisitor::empty() const
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsname.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool DNSName::RawLabelsVisitor::empty() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DNSName::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:872,1
    - Dst: DNSName::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:872,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:872,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:872,1
    - Dst: pdns_ilexicographical_compare_three_way
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:876,1
    - Dst: std::string_view
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:876,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:876,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:876,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - ' wire_uncompressed'
    argTypes:
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 877
      start: 870
    functionDepth: 0
    functionLinenumber: 870
    functionLinenumberEnd: 877
    functionName: DNSName::matchesUncompressedName
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsname.cc
    functionUses: 1
    functionsReached:
    - std::string_view
    - pdns_ilexicographical_compare_three_way
    - size
    - DNSName::empty
    - data
    linkageType: ''
    returnType: bool
    signature: bool DNSName::matchesUncompressedName(const std::string_view& wire_uncompressed)
      const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: toLogString
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:882,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ostr
    - ' zone'
    argTypes:
    - std::ostream
    - ZoneName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 883
      start: 880
    functionDepth: 0
    functionLinenumber: 880
    functionLinenumberEnd: 883
    functionName: '& operator<<(std::ostream &ostr, const ZoneName& zone)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsname.cc
    functionUses: 0
    functionsReached:
    - toLogString
    linkageType: ''
    returnType: std::ostream
    signature: std::ostream & operator<<(std::ostream &ostr, const ZoneName& zone)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:887,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' zone'
    argTypes:
    - ZoneName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 888
      start: 885
    functionDepth: 2
    functionLinenumber: 885
    functionLinenumberEnd: 888
    functionName: hash_value
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsname.cc
    functionUses: 0
    functionsReached:
    - hash
    linkageType: ''
    returnType: size_t
    signature: size_t hash_value(ZoneName const& zone)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSName::isPartOf
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:895,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - ZoneName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 896
      start: 893
    functionDepth: 0
    functionLinenumber: 893
    functionLinenumberEnd: 896
    functionName: DNSName::isPartOf
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsname.cc
    functionUses: 15
    functionsReached:
    - DNSName::isPartOf
    linkageType: ''
    returnType: bool
    signature: bool DNSName::isPartOf(const ZoneName& rhs) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSName::makeRelative
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:899,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' zone'
    argTypes:
    - ZoneName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 900
      start: 897
    functionDepth: 0
    functionLinenumber: 897
    functionLinenumberEnd: 900
    functionName: DNSName::makeRelative
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsname.cc
    functionUses: 6
    functionsReached:
    - DNSName::makeRelative
    linkageType: ''
    returnType: DNSName
    signature: DNSName DNSName::makeRelative(const ZoneName& zone) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSName::makeUsRelative
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:903,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' zone'
    argTypes:
    - ZoneName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 904
      start: 901
    functionDepth: 0
    functionLinenumber: 901
    functionLinenumberEnd: 904
    functionName: DNSName::makeUsRelative
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsname.cc
    functionUses: 4
    functionsReached:
    - DNSName::makeUsRelative
    linkageType: ''
    returnType: void
    signature: void DNSName::makeUsRelative(const ZoneName& zone)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: std::string_view::find
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:912,1
    - Dst: std::string_view::length
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:914,1
    - Dst: std::string_view::at
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:917,1
    - Dst: std::string_view::at
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:923,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 16
    argCount: 1
    argNames:
    - name
    argTypes:
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 932
      start: 906
    functionDepth: 0
    functionLinenumber: 906
    functionLinenumberEnd: 932
    functionName: ZoneName::findVariantSeparator
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsname.cc
    functionUses: 2
    functionsReached:
    - std::string_view::at
    - std::string_view::length
    - std::string_view::find
    linkageType: ''
    returnType: std::string_view::size_type
    signature: std::string_view::size_type ZoneName::findVariantSeparator(std::string_view
      name)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ZoneName::findVariantSeparator
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:936,1
    - Dst: ZoneName::setVariant
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:937,1
    - Dst: std::string_view::substr
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:937,1
    - Dst: std::string_view::substr
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:938,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:940,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - name
    argTypes:
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 941
      start: 934
    functionDepth: 0
    functionLinenumber: 934
    functionLinenumberEnd: 941
    functionName: ZoneName::ZoneName
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsname.cc
    functionUses: 9
    functionsReached:
    - ZoneName::setVariant
    - ZoneName::findVariantSeparator
    - DNSName
    - std::string_view::substr
    linkageType: ''
    returnType: void
    signature: void ZoneName::ZoneName(std::string_view name)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ZoneName::setVariant
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:946,1
    - Dst: std::string_view::substr
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:946,1
    - Dst: std::string_view::substr
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:947,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:949,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - name
    - sep
    argTypes:
    - std::string_view
    - std::string_view::size_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 950
      start: 943
    functionDepth: 0
    functionLinenumber: 943
    functionLinenumberEnd: 950
    functionName: ZoneName::ZoneName
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsname.cc
    functionUses: 9
    functionsReached:
    - ZoneName::setVariant
    - std::string_view::substr
    - DNSName
    linkageType: ''
    returnType: void
    signature: void ZoneName::ZoneName(std::string_view name, std::string_view::size_type
      sep)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::string_view::find_first_not_of
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:954,1
    - Dst: std::out_of_range
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:955,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - variant
    argTypes:
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 958
      start: 952
    functionDepth: 0
    functionLinenumber: 952
    functionLinenumberEnd: 958
    functionName: ZoneName::setVariant
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsname.cc
    functionUses: 4
    functionsReached:
    - std::out_of_range
    - std::string_view::find_first_not_of
    linkageType: ''
    returnType: void
    signature: void ZoneName::setVariant(std::string_view variant)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ZoneName::toLogString
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:962,1
    - Dst: ZoneName::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:963,1
    - Dst: std::string::push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:966,1
    - Dst: isRoot
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:967,1
    - Dst: std::string::push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:968,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 973
      start: 960
    functionDepth: 0
    functionLinenumber: 960
    functionLinenumberEnd: 973
    functionName: ZoneName::toLogString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsname.cc
    functionUses: 6
    functionsReached:
    - std::string::push_back
    - isRoot
    - ZoneName::empty
    - ZoneName::toLogString
    linkageType: ''
    returnType: std::string
    signature: std::string ZoneName::toLogString() const
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ZoneName::toString
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:977,1
    - Dst: ZoneName::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:978,1
    - Dst: std::string::push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:980,1
    - Dst: std::string::push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:982,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - ' separator'
    - trailing
    argTypes:
    - std::string
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 986
      start: 975
    functionDepth: 0
    functionLinenumber: 975
    functionLinenumberEnd: 986
    functionName: ZoneName::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsname.cc
    functionUses: 11
    functionsReached:
    - std::string::push_back
    - ZoneName::toString
    - ZoneName::empty
    linkageType: ''
    returnType: std::string
    signature: std::string ZoneName::toString(const std::string& separator, const
      bool trailing) const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ZoneName::toStringNoDot
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:990,1
    - Dst: ZoneName::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:991,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 996
      start: 988
    functionDepth: 0
    functionLinenumber: 988
    functionLinenumberEnd: 996
    functionName: ZoneName::toStringNoDot
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsname.cc
    functionUses: 2
    functionsReached:
    - ZoneName::empty
    - ZoneName::toStringNoDot
    linkageType: ''
    returnType: std::string
    signature: std::string ZoneName::toStringNoDot() const
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ZoneName::toStringRootDot
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:1000,1
    - Dst: ZoneName::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:1001,1
    - Dst: isRoot
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:1002,1
    - Dst: std::string::push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:1003,1
    - Dst: std::string::push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:1005,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1009
      start: 998
    functionDepth: 0
    functionLinenumber: 998
    functionLinenumberEnd: 1009
    functionName: ZoneName::toStringRootDot
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsname.cc
    functionUses: 2
    functionsReached:
    - isRoot
    - std::string::push_back
    - ZoneName::empty
    - ZoneName::toStringRootDot
    linkageType: ''
    returnType: std::string
    signature: std::string ZoneName::toStringRootDot() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ZoneName::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:1013,1
    - Dst: burtleCI
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:1014,1
    - Dst: ZoneName::hash
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:1017,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - init
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1018
      start: 1011
    functionDepth: 0
    functionLinenumber: 1011
    functionLinenumberEnd: 1018
    functionName: ZoneName::hash
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsname.cc
    functionUses: 2
    functionsReached:
    - burtleCI
    - ZoneName::hash
    - ZoneName::empty
    linkageType: ''
    returnType: size_t
    signature: size_t ZoneName::hash(size_t init) const
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: getStorage
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:1025,1
    - Dst: getStorage
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:1026,1
    - Dst: d_name::getStorage
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:1027,1
    - Dst: d_name::getStorage
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:1028,1
    - Dst: dns_tolower
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:1030,1
    - Dst: dns_tolower
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:1031,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - ZoneName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1052
      start: 1020
    functionDepth: 0
    functionLinenumber: 1020
    functionLinenumberEnd: 1052
    functionName: ZoneName::operator<(const ZoneName& rhs)  const
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsname.cc
    functionUses: 0
    functionsReached:
    - d_name::getStorage
    - dns_tolower
    - getStorage
    linkageType: ''
    returnType: bool
    signature: bool ZoneName::operator<(const ZoneName& rhs)  const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ZoneName::canonCompare_three_way
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:1058,1
    - Dst: compare
      Src: /src/pdns/pdns/dnsdistdist/dnsname.cc:1062,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - ZoneName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1063
      start: 1054
    functionDepth: 0
    functionLinenumber: 1054
    functionLinenumberEnd: 1063
    functionName: ZoneName::canonCompare_three_way
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsname.cc
    functionUses: 3
    functionsReached:
    - compare
    - ZoneName::canonCompare_three_way
    linkageType: ''
    returnType: int
    signature: int ZoneName::canonCompare_three_way(const ZoneName& rhs) const
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsparser.cc:29,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsparser.cc:34,1
    - Dst: registerMember
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsparser.cc:34,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsparser.cc:34,1
    - Dst: registerMember
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsparser.cc:35,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsparser.cc:35,1
    - Dst: registerMember
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsparser.cc:36,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsparser.cc:36,1
    - Dst: dnsheader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsparser.cc:37,1
    - Dst: registerMember
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsparser.cc:37,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsparser.cc:37,1
    - Dst: registerFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsparser.cc:39,1
    - Dst: formatRecord
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsparser.cc:53,1
    - Dst: registerFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsparser.cc:53,1
    - Dst: d_records::at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsparser.cc:54,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsparser.cc:57,1
    - Dst: registerMember
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsparser.cc:57,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsparser.cc:57,1
    - Dst: registerMember
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsparser.cc:58,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsparser.cc:58,1
    - Dst: registerMember
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsparser.cc:59,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsparser.cc:59,1
    - Dst: registerMember
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsparser.cc:60,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsparser.cc:60,1
    - Dst: registerMember
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsparser.cc:61,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsparser.cc:61,1
    - Dst: registerMember
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsparser.cc:62,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsparser.cc:62,1
    - Dst: registerMember
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsparser.cc:63,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsparser.cc:63,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsparser.cc:65,1
    - Dst: dnsdist::RecordParsers::parseARecord
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsparser.cc:66,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsparser.cc:68,1
    - Dst: dnsdist::RecordParsers::parseAAAARecord
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsparser.cc:69,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsparser.cc:71,1
    - Dst: dnsdist::RecordParsers::parseAddressRecord
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsparser.cc:72,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsparser.cc:74,1
    - Dst: dnsdist::RecordParsers::parseCNAMERecord
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsparser.cc:75,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 62
    argCount: 1
    argNames:
    - ' luaCtx'
    argTypes:
    - LuaContext
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 26
    functionDepth: 1
    functionLinenumber: 26
    functionLinenumberEnd: 78
    functionName: setupLuaBindingsDNSParser
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsparser.cc
    functionUses: 2
    functionsReached:
    - dnsdist::RecordParsers::parseAddressRecord
    - dnsdist::RecordParsers::parseAAAARecord
    - registerFunction
    - dnsheader
    - DNSName
    - registerMember
    - formatRecord
    - d_records::at
    - dnsdist::RecordParsers::parseCNAMERecord
    - std::string
    - writeFunction
    - dnsdist::RecordParsers::parseARecord
    linkageType: ''
    returnType: void
    signature: void setupLuaBindingsDNSParser(LuaContext& luaCtx)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 38
    functionDepth: 0
    functionLinenumber: 38
    functionLinenumberEnd: 41
    functionName: DoHClientCollection::getThreadsCount
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t getThreadsCount() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 33
      start: 31
    functionDepth: 0
    functionLinenumber: 31
    functionLinenumberEnd: 33
    functionName: ~KeyValueLookupKey()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-kvs.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~KeyValueLookupKey()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 3
    argNames:
    - v4Mask
    - v6Mask
    - includePort
    argTypes:
    - uint8_t
    - uint8_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 41
    functionDepth: 0
    functionLinenumber: 41
    functionLinenumberEnd: 44
    functionName: KeyValueLookupKeySourceIP::KeyValueLookupKeySourceIP
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-kvs.hh
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void KeyValueLookupKeySourceIP(uint8_t v4Mask, uint8_t v6Mask, bool
      includePort)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: KeyValueLookupKeySourceIP::getKeys
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-kvs.hh:50,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' dq'
    argTypes:
    - DNSQuestion
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 48
    functionDepth: 0
    functionLinenumber: 48
    functionLinenumberEnd: 51
    functionName: KeyValueLookupKeySourceIP::getKeys
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-kvs.hh
    functionUses: 2
    functionsReached:
    - KeyValueLookupKeySourceIP::getKeys
    linkageType: ''
    returnType: std::vector<std::string>
    signature: std::vector<std::string> getKeys(const DNSQuestion& dq) override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-kvs.hh:55,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-kvs.hh:55,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 53
    functionDepth: 0
    functionLinenumber: 53
    functionLinenumberEnd: 56
    functionName: KeyValueLookupKeySourceIP::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-kvs.hh
    functionUses: 0
    functionsReached:
    - std::to_string
    linkageType: ''
    returnType: std::string
    signature: std::string toString() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - wireFormat
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 67
    functionDepth: 0
    functionLinenumber: 67
    functionLinenumberEnd: 70
    functionName: KeyValueLookupKeyQName::KeyValueLookupKeyQName
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-kvs.hh
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void KeyValueLookupKeyQName(bool wireFormat)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: toDNSStringLC
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-kvs.hh:75,1
    - Dst: makeLowerCase
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-kvs.hh:77,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ' qname'
    argTypes:
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 72
    functionDepth: 0
    functionLinenumber: 72
    functionLinenumberEnd: 78
    functionName: KeyValueLookupKeyQName::getKeys
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-kvs.hh
    functionUses: 1
    functionsReached:
    - makeLowerCase
    - toDNSStringLC
    linkageType: ''
    returnType: std::vector<std::string>
    signature: std::vector<std::string> getKeys(const DNSName& qname)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: KeyValueLookupKeyQName::getKeys
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-kvs.hh:82,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' dq'
    argTypes:
    - DNSQuestion
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 80
    functionDepth: 1
    functionLinenumber: 80
    functionLinenumberEnd: 83
    functionName: KeyValueLookupKeyQName::getKeys
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-kvs.hh
    functionUses: 2
    functionsReached:
    - KeyValueLookupKeyQName::getKeys
    linkageType: ''
    returnType: std::vector<std::string>
    signature: std::vector<std::string> getKeys(const DNSQuestion& dq) override
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 85
    functionDepth: 0
    functionLinenumber: 85
    functionLinenumberEnd: 91
    functionName: KeyValueLookupKeyQName::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-kvs.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string toString() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - minLabels
    - wireFormat
    argTypes:
    - size_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 100
    functionDepth: 0
    functionLinenumber: 100
    functionLinenumberEnd: 103
    functionName: KeyValueLookupKeySuffix::KeyValueLookupKeySuffix
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-kvs.hh
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void KeyValueLookupKeySuffix(size_t minLabels, bool wireFormat)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: KeyValueLookupKeySuffix::getKeys
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-kvs.hh:109,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' dq'
    argTypes:
    - DNSQuestion
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 107
    functionDepth: 0
    functionLinenumber: 107
    functionLinenumberEnd: 110
    functionName: KeyValueLookupKeySuffix::getKeys
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-kvs.hh
    functionUses: 2
    functionsReached:
    - KeyValueLookupKeySuffix::getKeys
    linkageType: ''
    returnType: std::vector<std::string>
    signature: std::vector<std::string> getKeys(const DNSQuestion& dq) override
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-kvs.hh:115,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-kvs.hh:115,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-kvs.hh:117,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 118
      start: 112
    functionDepth: 0
    functionLinenumber: 112
    functionLinenumberEnd: 118
    functionName: KeyValueLookupKeySuffix::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-kvs.hh
    functionUses: 0
    functionsReached:
    - std::string
    - std::to_string
    linkageType: ''
    returnType: std::string
    signature: std::string toString() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' tag'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 131
      start: 128
    functionDepth: 0
    functionLinenumber: 128
    functionLinenumberEnd: 131
    functionName: KeyValueLookupKeyTag::KeyValueLookupKeyTag
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-kvs.hh
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void KeyValueLookupKeyTag(const std::string& tag)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ids::qTag::find
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-kvs.hh:136,1
    - Dst: ids::qTag::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-kvs.hh:137,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - ' dq'
    argTypes:
    - DNSQuestion
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 142
      start: 133
    functionDepth: 0
    functionLinenumber: 133
    functionLinenumberEnd: 142
    functionName: KeyValueLookupKeyTag::getKeys
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-kvs.hh
    functionUses: 0
    functionsReached:
    - ids::qTag::end
    - ids::qTag::find
    linkageType: ''
    returnType: std::vector<std::string>
    signature: std::vector<std::string> getKeys(const DNSQuestion& dq) override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 144
    functionDepth: 0
    functionLinenumber: 144
    functionLinenumberEnd: 147
    functionName: KeyValueLookupKeyTag::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-kvs.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string toString() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 158
      start: 156
    functionDepth: 0
    functionLinenumber: 156
    functionLinenumberEnd: 158
    functionName: ~KeyValueStore()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-kvs.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~KeyValueStore()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-kvs.hh:171,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - ' key'
    - ' value'
    argTypes:
    - std::string
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 172
      start: 167
    functionDepth: 0
    functionLinenumber: 167
    functionLinenumberEnd: 172
    functionName: KeyValueStore::getRangeValue
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-kvs.hh
    functionUses: 0
    functionsReached:
    - std::runtime_error
    linkageType: ''
    returnType: bool
    signature: bool getRangeValue(const std::string& key, std::string& value)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 176
      start: 173
    functionDepth: 0
    functionLinenumber: 173
    functionLinenumberEnd: 176
    functionName: KeyValueStore::reload
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-kvs.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool reload()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getMDBEnv
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-kvs.hh:187,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-kvs.hh:187,1
    - Dst: openDB
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-kvs.hh:187,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - ' fname'
    - ' dbName'
    argTypes:
    - std::string
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 189
      start: 186
    functionDepth: 1
    functionLinenumber: 186
    functionLinenumberEnd: 189
    functionName: LMDBKVStore::LMDBKVStore
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-kvs.hh
    functionUses: 1
    functionsReached:
    - c_str
    - getMDBEnv
    - openDB
    linkageType: ''
    returnType: void
    signature: void LMDBKVStore(const std::string& fname, const std::string& dbName,
      bool noLock = false)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 49
    functionDepth: 0
    functionLinenumber: 49
    functionLinenumberEnd: 49
    functionName: QType::QType
    functionSourceFile: /src/pdns/pdns/dnsdistdist/qtype.hh
    functionUses: 11
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void QType(uint16_t qtype = 0)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 53
    functionDepth: 0
    functionLinenumber: 53
    functionLinenumberEnd: 55
    functionName: operator uint16_t() const
    functionSourceFile: /src/pdns/pdns/dnsdistdist/qtype.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void operator uint16_t() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 58
    functionDepth: 0
    functionLinenumber: 58
    functionLinenumberEnd: 61
    functionName: QType::getCode
    functionSourceFile: /src/pdns/pdns/dnsdistdist/qtype.hh
    functionUses: 17
    functionsReached: []
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t getCode() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: QType::getCode
      Src: /src/pdns/pdns/dnsdistdist/qtype.hh:173,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - qtype
    argTypes:
    - QType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 174
      start: 172
    functionDepth: 0
    functionLinenumber: 172
    functionLinenumberEnd: 174
    functionName: operator()(QType qtype) const noexcept
    functionSourceFile: /src/pdns/pdns/dnsdistdist/qtype.hh
    functionUses: 0
    functionsReached:
    - QType::getCode
    linkageType: ''
    returnType: std::size_t
    signature: std::size_t operator()(QType qtype) const noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: QType::getCode
      Src: /src/pdns/pdns/dnsdistdist/qtype.hh:173,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - qtype
    argTypes:
    - QType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 174
      start: 172
    functionDepth: 0
    functionLinenumber: 172
    functionLinenumberEnd: 174
    functionName: operator()(QType qtype) const noexcept
    functionSourceFile: /src/pdns/pdns/dnsdistdist/qtype.hh
    functionUses: 0
    functionsReached:
    - QType::getCode
    linkageType: ''
    returnType: std::size_t
    signature: std::size_t operator()(QType qtype) const noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: toString
      Src: /src/pdns/pdns/dnsdistdist/qtype.hh:180,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' stream'
    - ' qtype'
    argTypes:
    - std::ostream
    - QType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 181
      start: 178
    functionDepth: 0
    functionLinenumber: 178
    functionLinenumberEnd: 181
    functionName: '& operator<<(std::ostream& stream, const QType& qtype)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/qtype.hh
    functionUses: 0
    functionsReached:
    - toString
    linkageType: ''
    returnType: std::ostream
    signature: std::ostream & operator<<(std::ostream& stream, const QType& qtype)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: QType::getCode
      Src: /src/pdns/pdns/dnsdistdist/qtype.hh:185,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - qtype
    argTypes:
    - QType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 186
      start: 184
    functionDepth: 0
    functionLinenumber: 184
    functionLinenumberEnd: 186
    functionName: hash_value
    functionSourceFile: /src/pdns/pdns/dnsdistdist/qtype.hh
    functionUses: 0
    functionsReached:
    - QType::getCode
    linkageType: ''
    returnType: size_t
    signature: size_t hash_value(const QType qtype)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 190
      start: 190
    functionDepth: 0
    functionLinenumber: 190
    functionLinenumberEnd: 190
    functionName: QClass
    functionSourceFile: /src/pdns/pdns/dnsdistdist/qtype.hh
    functionUses: 7
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void QClass(uint16_t code = 0)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 195
      start: 193
    functionDepth: 0
    functionLinenumber: 193
    functionLinenumberEnd: 195
    functionName: operator uint16_t() const
    functionSourceFile: /src/pdns/pdns/dnsdistdist/qtype.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void operator uint16_t() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 199
      start: 196
    functionDepth: 0
    functionLinenumber: 196
    functionLinenumberEnd: 199
    functionName: getCode
    functionSourceFile: /src/pdns/pdns/dnsdistdist/qtype.hh
    functionUses: 83
    functionsReached: []
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t getCode() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: QClass::toString
      Src: /src/pdns/pdns/dnsdistdist/qtype.hh:218,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' s'
    - qclass
    argTypes:
    - std::ostream
    - QClass
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 219
      start: 216
    functionDepth: 0
    functionLinenumber: 216
    functionLinenumberEnd: 219
    functionName: '& operator<<(std::ostream& s, QClass qclass)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/qtype.hh
    functionUses: 0
    functionsReached:
    - QClass::toString
    linkageType: ''
    returnType: std::ostream
    signature: std::ostream & operator<<(std::ostream& s, QClass qclass)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/fuzz_dnsdistcache.cc:30,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/fuzz_dnsdistcache.cc:56,1
    - Dst: DNSDistPacketCache::getKey
      Src: /src/pdns/pdns/dnsdistdist/fuzz_dnsdistcache.cc:57,1
    - Dst: DNSName::getStorage
      Src: /src/pdns/pdns/dnsdistdist/fuzz_dnsdistcache.cc:57,1
    - Dst: DNSDistPacketCache::getKey
      Src: /src/pdns/pdns/dnsdistdist/fuzz_dnsdistcache.cc:58,1
    - Dst: DNSName::getStorage
      Src: /src/pdns/pdns/dnsdistdist/fuzz_dnsdistcache.cc:58,1
    - Dst: DNSDistPacketCache::getClientSubnet
      Src: /src/pdns/pdns/dnsdistdist/fuzz_dnsdistcache.cc:60,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 2
    argNames:
    - data
    - size
    argTypes:
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 27
    functionDepth: 2
    functionLinenumber: 27
    functionLinenumberEnd: 68
    functionName: LLVMFuzzerTestOneInput
    functionSourceFile: /src/pdns/pdns/dnsdistdist/fuzz_dnsdistcache.cc
    functionUses: 2
    functionsReached:
    - pdns::max
    - DNSName::getStorage
    - DNSDistPacketCache::getKey
    - DNSDistPacketCache::getClientSubnet
    - reinterpret_cast<const char*>
    linkageType: ''
    returnType: int
    signature: int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 36
    functionDepth: 0
    functionLinenumber: 36
    functionLinenumberEnd: 38
    functionName: SVCRecordParameters
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-svc.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void SVCRecordParameters()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::channel::createObjectQueue<MyObject>
      Src: /src/pdns/pdns/dnsdistdist/test-channel.cc:20,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-channel.cc:22,1
    - Dst: getDescriptor
      Src: /src/pdns/pdns/dnsdistdist/test-channel.cc:22,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-channel.cc:23,1
    - Dst: isClosed
      Src: /src/pdns/pdns/dnsdistdist/test-channel.cc:23,1
    - Dst: receive
      Src: /src/pdns/pdns/dnsdistdist/test-channel.cc:25,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-channel.cc:26,1
    - Dst: std::make_unique<MyObject>
      Src: /src/pdns/pdns/dnsdistdist/test-channel.cc:28,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-channel.cc:30,1
    - Dst: send
      Src: /src/pdns/pdns/dnsdistdist/test-channel.cc:30,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/test-channel.cc:30,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-channel.cc:31,1
    - Dst: receive
      Src: /src/pdns/pdns/dnsdistdist/test-channel.cc:32,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-channel.cc:33,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-channel.cc:34,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 35
      start: 18
    functionDepth: 0
    functionLinenumber: 18
    functionLinenumberEnd: 35
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-channel.cc
    functionUses: 0
    functionsReached:
    - std::move
    - isClosed
    - pdns::channel::createObjectQueue<MyObject>
    - BOOST_CHECK_EQUAL
    - std::make_unique<MyObject>
    - receive
    - send
    - getDescriptor
    - BOOST_CHECK
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_object_queue)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pdns::channel::createObjectQueue<MyObject>
      Src: /src/pdns/pdns/dnsdistdist/test-channel.cc:39,1
    - Dst: receive
      Src: /src/pdns/pdns/dnsdistdist/test-channel.cc:42,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-channel.cc:43,1
    - Dst: std::make_unique<MyObject>
      Src: /src/pdns/pdns/dnsdistdist/test-channel.cc:50,1
    - Dst: send
      Src: /src/pdns/pdns/dnsdistdist/test-channel.cc:52,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/test-channel.cc:52,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-channel.cc:54,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-channel.cc:57,1
    - Dst: BOOST_CHECK_GT
      Src: /src/pdns/pdns/dnsdistdist/test-channel.cc:62,1
    - Dst: receive
      Src: /src/pdns/pdns/dnsdistdist/test-channel.cc:68,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-channel.cc:77,1
    - Dst: std::make_unique<MyObject>
      Src: /src/pdns/pdns/dnsdistdist/test-channel.cc:80,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-channel.cc:82,1
    - Dst: send
      Src: /src/pdns/pdns/dnsdistdist/test-channel.cc:82,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/test-channel.cc:82,1
    - Dst: receive
      Src: /src/pdns/pdns/dnsdistdist/test-channel.cc:85,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-channel.cc:86,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 27
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 37
    functionDepth: 0
    functionLinenumber: 37
    functionLinenumberEnd: 88
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-channel.cc
    functionUses: 0
    functionsReached:
    - std::move
    - BOOST_CHECK_GT
    - pdns::channel::createObjectQueue<MyObject>
    - BOOST_CHECK_EQUAL
    - std::make_unique<MyObject>
    - receive
    - send
    - BOOST_CHECK
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_object_queue_full)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::channel::createObjectQueue<MyObject>
      Src: /src/pdns/pdns/dnsdistdist/test-channel.cc:92,1
    - Dst: close
      Src: /src/pdns/pdns/dnsdistdist/test-channel.cc:93,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/dnsdistdist/test-channel.cc:94,1
    - Dst: receive
      Src: /src/pdns/pdns/dnsdistdist/test-channel.cc:94,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-channel.cc:95,1
    - Dst: isClosed
      Src: /src/pdns/pdns/dnsdistdist/test-channel.cc:95,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 90
    functionDepth: 0
    functionLinenumber: 90
    functionLinenumberEnd: 96
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-channel.cc
    functionUses: 0
    functionsReached:
    - isClosed
    - pdns::channel::createObjectQueue<MyObject>
    - BOOST_CHECK_EQUAL
    - receive
    - BOOST_CHECK_THROW
    - close
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_object_queue_throw_on_eof)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::channel::createObjectQueue<MyObject>
      Src: /src/pdns/pdns/dnsdistdist/test-channel.cc:100,1
    - Dst: close
      Src: /src/pdns/pdns/dnsdistdist/test-channel.cc:101,1
    - Dst: receive
      Src: /src/pdns/pdns/dnsdistdist/test-channel.cc:102,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-channel.cc:103,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-channel.cc:104,1
    - Dst: isClosed
      Src: /src/pdns/pdns/dnsdistdist/test-channel.cc:104,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 98
    functionDepth: 0
    functionLinenumber: 98
    functionLinenumberEnd: 105
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-channel.cc
    functionUses: 0
    functionsReached:
    - isClosed
    - pdns::channel::createObjectQueue<MyObject>
    - BOOST_CHECK_EQUAL
    - receive
    - BOOST_CHECK
    - close
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_object_queue_do_not_throw_on_eof)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::channel::createNotificationQueue
      Src: /src/pdns/pdns/dnsdistdist/test-channel.cc:109,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-channel.cc:111,1
    - Dst: getDescriptor
      Src: /src/pdns/pdns/dnsdistdist/test-channel.cc:111,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-channel.cc:112,1
    - Dst: isClosed
      Src: /src/pdns/pdns/dnsdistdist/test-channel.cc:112,1
    - Dst: clear
      Src: /src/pdns/pdns/dnsdistdist/test-channel.cc:113,1
    - Dst: notify
      Src: /src/pdns/pdns/dnsdistdist/test-channel.cc:118,1
    - Dst: clear
      Src: /src/pdns/pdns/dnsdistdist/test-channel.cc:122,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-channel.cc:125,1
    - Dst: notify
      Src: /src/pdns/pdns/dnsdistdist/test-channel.cc:125,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 107
    functionDepth: 1
    functionLinenumber: 107
    functionLinenumberEnd: 126
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-channel.cc
    functionUses: 0
    functionsReached:
    - isClosed
    - BOOST_CHECK_EQUAL
    - notify
    - getDescriptor
    - clear
    - BOOST_CHECK
    - pdns::channel::createNotificationQueue
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_notification_queue_full)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::channel::createNotificationQueue
      Src: /src/pdns/pdns/dnsdistdist/test-channel.cc:130,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-channel.cc:132,1
    - Dst: getDescriptor
      Src: /src/pdns/pdns/dnsdistdist/test-channel.cc:132,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-channel.cc:133,1
    - Dst: isClosed
      Src: /src/pdns/pdns/dnsdistdist/test-channel.cc:133,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-channel.cc:135,1
    - Dst: notify
      Src: /src/pdns/pdns/dnsdistdist/test-channel.cc:135,1
    - Dst: clear
      Src: /src/pdns/pdns/dnsdistdist/test-channel.cc:136,1
    - Dst: pdns::channel::Notifier::Notifier
      Src: /src/pdns/pdns/dnsdistdist/test-channel.cc:138,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/dnsdistdist/test-channel.cc:139,1
    - Dst: clear
      Src: /src/pdns/pdns/dnsdistdist/test-channel.cc:139,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 128
    functionDepth: 1
    functionLinenumber: 128
    functionLinenumberEnd: 140
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-channel.cc
    functionUses: 0
    functionsReached:
    - isClosed
    - BOOST_CHECK_EQUAL
    - notify
    - pdns::channel::Notifier::Notifier
    - BOOST_CHECK_THROW
    - getDescriptor
    - clear
    - BOOST_CHECK
    - pdns::channel::createNotificationQueue
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_notification_queue_throw_on_eof)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::channel::createNotificationQueue
      Src: /src/pdns/pdns/dnsdistdist/test-channel.cc:144,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-channel.cc:146,1
    - Dst: getDescriptor
      Src: /src/pdns/pdns/dnsdistdist/test-channel.cc:146,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-channel.cc:147,1
    - Dst: isClosed
      Src: /src/pdns/pdns/dnsdistdist/test-channel.cc:147,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-channel.cc:149,1
    - Dst: notify
      Src: /src/pdns/pdns/dnsdistdist/test-channel.cc:149,1
    - Dst: clear
      Src: /src/pdns/pdns/dnsdistdist/test-channel.cc:150,1
    - Dst: pdns::channel::Notifier::Notifier
      Src: /src/pdns/pdns/dnsdistdist/test-channel.cc:152,1
    - Dst: clear
      Src: /src/pdns/pdns/dnsdistdist/test-channel.cc:153,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-channel.cc:154,1
    - Dst: isClosed
      Src: /src/pdns/pdns/dnsdistdist/test-channel.cc:154,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 142
    functionDepth: 1
    functionLinenumber: 142
    functionLinenumberEnd: 155
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-channel.cc
    functionUses: 0
    functionsReached:
    - isClosed
    - BOOST_CHECK_EQUAL
    - notify
    - pdns::channel::Notifier::Notifier
    - getDescriptor
    - clear
    - BOOST_CHECK
    - pdns::channel::createNotificationQueue
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_notification_queue_do_not_throw_on_eof)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::find
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-protocols.cc:52,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-protocols.cc:52,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-protocols.cc:52,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-protocols.cc:53,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-protocols.cc:54,1
    - Dst: std::distance
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-protocols.cc:57,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-protocols.cc:57,1
    - Dst: static_cast<Protocol::typeenum>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-protocols.cc:58,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - ' protocol'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 50
    functionDepth: 1
    functionLinenumber: 50
    functionLinenumberEnd: 59
    functionName: dnsdist::Protocol::Protocol
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-protocols.cc
    functionUses: 0
    functionsReached:
    - std::distance
    - std::runtime_error
    - end
    - static_cast<Protocol::typeenum>
    - std::find
    - begin
    linkageType: ''
    returnType: void
    signature: void Protocol::Protocol(const std::string& protocol)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - type
    argTypes:
    - Protocol::typeenum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 61
    functionDepth: 0
    functionLinenumber: 61
    functionLinenumberEnd: 64
    functionName: Protocol::operator==(Protocol::typeenum type) const
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-protocols.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool Protocol::operator==(Protocol::typeenum type) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - type
    argTypes:
    - Protocol::typeenum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 66
    functionDepth: 0
    functionLinenumber: 66
    functionLinenumberEnd: 69
    functionName: Protocol::operator!=(Protocol::typeenum type) const
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-protocols.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool Protocol::operator!=(Protocol::typeenum type) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - Protocol
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 71
    functionDepth: 0
    functionLinenumber: 71
    functionLinenumberEnd: 74
    functionName: Protocol::operator==(const Protocol& rhs) const
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-protocols.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool Protocol::operator==(const Protocol& rhs) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - Protocol
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 76
    functionDepth: 0
    functionLinenumber: 76
    functionLinenumberEnd: 79
    functionName: Protocol::operator!=(const Protocol& rhs) const
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-protocols.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool Protocol::operator!=(const Protocol& rhs) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-protocols.cc:83,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-protocols.cc:83,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 81
    functionDepth: 0
    functionLinenumber: 81
    functionLinenumberEnd: 84
    functionName: '& Protocol::toString() const'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-protocols.cc
    functionUses: 0
    functionsReached:
    - at
    - static_cast<uint8_t>
    linkageType: ''
    returnType: std::string
    signature: std::string & Protocol::toString() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-protocols.cc:88,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-protocols.cc:88,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 86
    functionDepth: 0
    functionLinenumber: 86
    functionLinenumberEnd: 89
    functionName: '& Protocol::toPrettyString() const'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-protocols.cc
    functionUses: 0
    functionsReached:
    - at
    - static_cast<uint8_t>
    linkageType: ''
    returnType: std::string
    signature: std::string & Protocol::toPrettyString() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 91
    functionDepth: 0
    functionLinenumber: 91
    functionLinenumberEnd: 94
    functionName: dnsdist::Protocol::isUDP
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-protocols.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool Protocol::isUDP() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 96
    functionDepth: 0
    functionLinenumber: 96
    functionLinenumberEnd: 99
    functionName: dnsdist::Protocol::isEncrypted
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-protocols.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool Protocol::isEncrypted() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-protocols.cc:103,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 104
      start: 101
    functionDepth: 0
    functionLinenumber: 101
    functionLinenumberEnd: 104
    functionName: dnsdist::Protocol::toNumber
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-protocols.cc
    functionUses: 1
    functionsReached:
    - static_cast<uint8_t>
    linkageType: ''
    returnType: uint8_t
    signature: uint8_t Protocol::toNumber() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::find
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-protocols.cc:52,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-protocols.cc:52,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-protocols.cc:52,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-protocols.cc:53,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-protocols.cc:54,1
    - Dst: std::distance
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-protocols.cc:57,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-protocols.cc:57,1
    - Dst: static_cast<Protocol::typeenum>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-protocols.cc:58,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - ' protocol'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 50
    functionDepth: 1
    functionLinenumber: 50
    functionLinenumberEnd: 59
    functionName: dnsdist::Protocol::Protocol
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-protocols.cc
    functionUses: 0
    functionsReached:
    - std::distance
    - std::runtime_error
    - end
    - static_cast<Protocol::typeenum>
    - std::find
    - begin
    linkageType: ''
    returnType: void
    signature: void Protocol::Protocol(const std::string& protocol)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - type
    argTypes:
    - Protocol::typeenum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 61
    functionDepth: 0
    functionLinenumber: 61
    functionLinenumberEnd: 64
    functionName: Protocol::operator==(Protocol::typeenum type) const
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-protocols.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool Protocol::operator==(Protocol::typeenum type) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - type
    argTypes:
    - Protocol::typeenum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 66
    functionDepth: 0
    functionLinenumber: 66
    functionLinenumberEnd: 69
    functionName: Protocol::operator!=(Protocol::typeenum type) const
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-protocols.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool Protocol::operator!=(Protocol::typeenum type) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - Protocol
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 71
    functionDepth: 0
    functionLinenumber: 71
    functionLinenumberEnd: 74
    functionName: Protocol::operator==(const Protocol& rhs) const
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-protocols.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool Protocol::operator==(const Protocol& rhs) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - Protocol
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 76
    functionDepth: 0
    functionLinenumber: 76
    functionLinenumberEnd: 79
    functionName: Protocol::operator!=(const Protocol& rhs) const
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-protocols.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool Protocol::operator!=(const Protocol& rhs) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-protocols.cc:83,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-protocols.cc:83,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 81
    functionDepth: 0
    functionLinenumber: 81
    functionLinenumberEnd: 84
    functionName: '& Protocol::toString() const'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-protocols.cc
    functionUses: 0
    functionsReached:
    - at
    - static_cast<uint8_t>
    linkageType: ''
    returnType: std::string
    signature: std::string & Protocol::toString() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-protocols.cc:88,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-protocols.cc:88,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 86
    functionDepth: 0
    functionLinenumber: 86
    functionLinenumberEnd: 89
    functionName: '& Protocol::toPrettyString() const'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-protocols.cc
    functionUses: 0
    functionsReached:
    - at
    - static_cast<uint8_t>
    linkageType: ''
    returnType: std::string
    signature: std::string & Protocol::toPrettyString() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 91
    functionDepth: 0
    functionLinenumber: 91
    functionLinenumberEnd: 94
    functionName: dnsdist::Protocol::isUDP
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-protocols.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool Protocol::isUDP() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 96
    functionDepth: 0
    functionLinenumber: 96
    functionLinenumberEnd: 99
    functionName: dnsdist::Protocol::isEncrypted
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-protocols.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool Protocol::isEncrypted() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-protocols.cc:103,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 104
      start: 101
    functionDepth: 0
    functionLinenumber: 101
    functionLinenumberEnd: 104
    functionName: dnsdist::Protocol::toNumber
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-protocols.cc
    functionUses: 1
    functionsReached:
    - static_cast<uint8_t>
    linkageType: ''
    returnType: uint8_t
    signature: uint8_t Protocol::toNumber() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: __llvm_profile_write_file
      Src: /src/pdns/pdns/dnsdistdist/coverage.cc:44,1
    - Dst: __gcov_dump
      Src: /src/pdns/pdns/dnsdistdist/coverage.cc:46,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 40
    functionDepth: 0
    functionLinenumber: 40
    functionLinenumberEnd: 49
    functionName: pdns::coverage::dumpCoverageData
    functionSourceFile: /src/pdns/pdns/dnsdistdist/coverage.cc
    functionUses: 2
    functionsReached:
    - __llvm_profile_write_file
    - __gcov_dump
    linkageType: ''
    returnType: void
    signature: void dumpCoverageData()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: __llvm_profile_write_file
      Src: /src/pdns/pdns/dnsdistdist/coverage.cc:44,1
    - Dst: __gcov_dump
      Src: /src/pdns/pdns/dnsdistdist/coverage.cc:46,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 40
    functionDepth: 0
    functionLinenumber: 40
    functionLinenumberEnd: 49
    functionName: pdns::coverage::dumpCoverageData
    functionSourceFile: /src/pdns/pdns/dnsdistdist/coverage.cc
    functionUses: 2
    functionsReached:
    - __llvm_profile_write_file
    - __gcov_dump
    linkageType: ''
    returnType: void
    signature: void dumpCoverageData()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: toLower
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules.cc:28,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules.cc:31,1
    - Dst: Regex
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules.cc:34,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules.cc:37,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 7
    argCount: 2
    argNames:
    - ' header'
    - ' regex'
    argTypes:
    - std::string
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 27
    functionDepth: 0
    functionLinenumber: 27
    functionLinenumberEnd: 40
    functionName: HTTPHeaderRule::HTTPHeaderRule
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules.cc
    functionUses: 0
    functionsReached:
    - Regex
    - toLower
    - std::runtime_error
    linkageType: ''
    returnType: void
    signature: void HTTPHeaderRule::HTTPHeaderRule(const std::string& header, const
      std::string& regex)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: DNSQuestion*::ids::du::getHTTPHeaders
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules.cc:46,1
    - Dst: match
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules.cc:49,1
    - Dst: DNSQuestion*::ids::doh3u::getHTTPHeaders
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules.cc:57,1
    - Dst: match
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules.cc:60,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 16
    argCount: 1
    argNames:
    - dnsQuestion
    argTypes:
    - DNSQuestion*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 42
    functionDepth: 0
    functionLinenumber: 42
    functionLinenumberEnd: 67
    functionName: HTTPHeaderRule::matches
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules.cc
    functionUses: 0
    functionsReached:
    - match
    - DNSQuestion*::ids::du::getHTTPHeaders
    - DNSQuestion*::ids::doh3u::getHTTPHeaders
    linkageType: ''
    returnType: bool
    signature: bool HTTPHeaderRule::matches([[maybe_unused]] const DNSQuestion* dnsQuestion)
      const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 69
    functionDepth: 0
    functionLinenumber: 69
    functionLinenumberEnd: 72
    functionName: HTTPHeaderRule::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: string
    signature: string HTTPHeaderRule::toString() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules.cc:75,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules.cc:78,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 2
    argCount: 1
    argNames:
    - path
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 74
    functionDepth: 0
    functionLinenumber: 74
    functionLinenumberEnd: 80
    functionName: HTTPPathRule::HTTPPathRule
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules.cc
    functionUses: 0
    functionsReached:
    - std::move
    - std::runtime_error
    linkageType: ''
    returnType: void
    signature: void HTTPPathRule::HTTPPathRule(std::string path)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: DNSQuestion*::ids::du::getHTTPPath
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules.cc:86,1
    - Dst: DNSQuestion*::ids::doh3u::getHTTPPath
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules.cc:92,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - dnsQuestion
    argTypes:
    - DNSQuestion*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 82
    functionDepth: 0
    functionLinenumber: 82
    functionLinenumberEnd: 96
    functionName: HTTPPathRule::matches
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules.cc
    functionUses: 0
    functionsReached:
    - DNSQuestion*::ids::doh3u::getHTTPPath
    - DNSQuestion*::ids::du::getHTTPPath
    linkageType: ''
    returnType: bool
    signature: bool HTTPPathRule::matches([[maybe_unused]] const DNSQuestion* dnsQuestion)
      const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 98
    functionDepth: 0
    functionLinenumber: 98
    functionLinenumberEnd: 101
    functionName: HTTPPathRule::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: string
    signature: string HTTPPathRule::toString() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules.cc:107,1
    - Dst: Regex
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules.cc:110,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules.cc:113,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 7
    argCount: 1
    argNames:
    - ' regex'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 103
    functionDepth: 0
    functionLinenumber: 103
    functionLinenumberEnd: 116
    functionName: HTTPPathRegexRule::HTTPPathRegexRule
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules.cc
    functionUses: 0
    functionsReached:
    - Regex
    - std::runtime_error
    linkageType: ''
    returnType: void
    signature: void HTTPPathRegexRule::HTTPPathRegexRule(const std::string& regex)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: DNSQuestion*::ids::du::getHTTPPath
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules.cc:122,1
    - Dst: match
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules.cc:123,1
    - Dst: match
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules.cc:128,1
    - Dst: DNSQuestion*::ids::doh3u::getHTTPPath
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules.cc:128,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - dnsQuestion
    argTypes:
    - DNSQuestion*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 133
      start: 118
    functionDepth: 0
    functionLinenumber: 118
    functionLinenumberEnd: 133
    functionName: HTTPPathRegexRule::matches
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules.cc
    functionUses: 0
    functionsReached:
    - match
    - DNSQuestion*::ids::doh3u::getHTTPPath
    - DNSQuestion*::ids::du::getHTTPPath
    linkageType: ''
    returnType: bool
    signature: bool HTTPPathRegexRule::matches([[maybe_unused]] const DNSQuestion*
      dnsQuestion) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 138
      start: 135
    functionDepth: 0
    functionLinenumber: 135
    functionLinenumberEnd: 138
    functionName: HTTPPathRegexRule::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: string
    signature: string HTTPPathRegexRule::toString() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules.cc:145,1
    - Dst: QClass
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules.cc:146,1
    - Dst: boost::to_upper_copy
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules.cc:146,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules.cc:146,1
    - Dst: std::make_shared<QClassRule>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules.cc:149,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - ' qclassStr'
    - qclassCode
    argTypes:
    - std::string
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 150
      start: 142
    functionDepth: 0
    functionLinenumber: 142
    functionLinenumberEnd: 150
    functionName: dnsdist::selectors::getQClassSelector
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules.cc
    functionUses: 0
    functionsReached:
    - std::make_shared<QClassRule>
    - QClass
    - boost::to_upper_copy
    - empty
    - std::string
    linkageType: ''
    returnType: std::shared_ptr<QClassRule>
    signature: std::shared_ptr<QClassRule> getQClassSelector(const std::string& qclassStr,
      uint16_t qclassCode)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules.cc:155,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules.cc:156,1
    - Dst: std::make_shared<QTypeRule>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules.cc:159,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - ' qtypeStr'
    - qtypeCode
    argTypes:
    - std::string
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 160
      start: 152
    functionDepth: 0
    functionLinenumber: 152
    functionLinenumberEnd: 160
    functionName: dnsdist::selectors::getQTypeSelector
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules.cc
    functionUses: 0
    functionsReached:
    - empty
    - std::string
    - std::make_shared<QTypeRule>
    linkageType: ''
    returnType: std::shared_ptr<QTypeRule>
    signature: std::shared_ptr<QTypeRule> getQTypeSelector(const std::string& qtypeStr,
      uint16_t qtypeCode)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<SuffixMatchNodeRule>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules.cc:164,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' suffixes'
    - quiet
    argTypes:
    - SuffixMatchNode
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 165
      start: 162
    functionDepth: 0
    functionLinenumber: 162
    functionLinenumberEnd: 165
    functionName: dnsdist::selectors::getQNameSuffixSelector
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules.cc
    functionUses: 2
    functionsReached:
    - std::make_shared<SuffixMatchNodeRule>
    linkageType: ''
    returnType: std::shared_ptr<SuffixMatchNodeRule>
    signature: std::shared_ptr<SuffixMatchNodeRule> getQNameSuffixSelector(const SuffixMatchNode&
      suffixes, bool quiet)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<QNameSetRule>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules.cc:169,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' qnames'
    argTypes:
    - DNSNameSet
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 170
      start: 167
    functionDepth: 0
    functionLinenumber: 167
    functionLinenumberEnd: 170
    functionName: dnsdist::selectors::getQNameSetSelector
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules.cc
    functionUses: 2
    functionsReached:
    - std::make_shared<QNameSetRule>
    linkageType: ''
    returnType: std::shared_ptr<QNameSetRule>
    signature: std::shared_ptr<QNameSetRule> getQNameSetSelector(const DNSNameSet&
      qnames)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<QNameRule>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules.cc:174,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' qname'
    argTypes:
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 175
      start: 172
    functionDepth: 0
    functionLinenumber: 172
    functionLinenumberEnd: 175
    functionName: dnsdist::selectors::getQNameSelector
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules.cc
    functionUses: 3
    functionsReached:
    - std::make_shared<QNameRule>
    linkageType: ''
    returnType: std::shared_ptr<QNameRule>
    signature: std::shared_ptr<QNameRule> getQNameSelector(const DNSName& qname)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<NetmaskGroupRule>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules.cc:179,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' nmg'
    - source
    - quiet
    argTypes:
    - NetmaskGroup
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 180
      start: 177
    functionDepth: 0
    functionLinenumber: 177
    functionLinenumberEnd: 180
    functionName: dnsdist::selectors::getNetmaskGroupSelector
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules.cc
    functionUses: 2
    functionsReached:
    - std::make_shared<NetmaskGroupRule>
    linkageType: ''
    returnType: std::shared_ptr<NetmaskGroupRule>
    signature: std::shared_ptr<NetmaskGroupRule> getNetmaskGroupSelector(const NetmaskGroup&
      nmg, bool source, bool quiet)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<KeyValueStoreLookupRule>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules.cc:184,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' kvs'
    - ' lookupKey'
    argTypes:
    - std::shared_ptr<KeyValueStore>
    - std::shared_ptr<KeyValueLookupKey>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 185
      start: 182
    functionDepth: 0
    functionLinenumber: 182
    functionLinenumberEnd: 185
    functionName: dnsdist::selectors::getKeyValueStoreLookupSelector
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules.cc
    functionUses: 2
    functionsReached:
    - std::make_shared<KeyValueStoreLookupRule>
    linkageType: ''
    returnType: std::shared_ptr<KeyValueStoreLookupRule>
    signature: std::shared_ptr<KeyValueStoreLookupRule> getKeyValueStoreLookupSelector(const
      std::shared_ptr<KeyValueStore>& kvs, const std::shared_ptr<KeyValueLookupKey>&
      lookupKey)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<KeyValueStoreRangeLookupRule>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules.cc:189,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' kvs'
    - ' lookupKey'
    argTypes:
    - std::shared_ptr<KeyValueStore>
    - std::shared_ptr<KeyValueLookupKey>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 190
      start: 187
    functionDepth: 0
    functionLinenumber: 187
    functionLinenumberEnd: 190
    functionName: dnsdist::selectors::getKeyValueStoreRangeLookupSelector
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules.cc
    functionUses: 2
    functionsReached:
    - std::make_shared<KeyValueStoreRangeLookupRule>
    linkageType: ''
    returnType: std::shared_ptr<KeyValueStoreRangeLookupRule>
    signature: std::shared_ptr<KeyValueStoreRangeLookupRule> getKeyValueStoreRangeLookupSelector(const
      std::shared_ptr<KeyValueStore>& kvs, const std::shared_ptr<KeyValueLookupKey>&
      lookupKey)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<AndRule>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules.cc:194,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' rules'
    argTypes:
    - std::vector<std::shared_ptr<DNSRule>>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 195
      start: 192
    functionDepth: 0
    functionLinenumber: 192
    functionLinenumberEnd: 195
    functionName: dnsdist::selectors::getAndSelector
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules.cc
    functionUses: 2
    functionsReached:
    - std::make_shared<AndRule>
    linkageType: ''
    returnType: std::shared_ptr<AndRule>
    signature: std::shared_ptr<AndRule> getAndSelector(const std::vector<std::shared_ptr<DNSRule>>&
      rules)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<OrRule>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules.cc:199,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' rules'
    argTypes:
    - std::vector<std::shared_ptr<DNSRule>>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 200
      start: 197
    functionDepth: 0
    functionLinenumber: 197
    functionLinenumberEnd: 200
    functionName: dnsdist::selectors::getOrSelector
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules.cc
    functionUses: 2
    functionsReached:
    - std::make_shared<OrRule>
    linkageType: ''
    returnType: std::shared_ptr<OrRule>
    signature: std::shared_ptr<OrRule> getOrSelector(const std::vector<std::shared_ptr<DNSRule>>&
      rules)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<NotRule>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules.cc:204,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' rule'
    argTypes:
    - std::shared_ptr<DNSRule>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 205
      start: 202
    functionDepth: 0
    functionLinenumber: 202
    functionLinenumberEnd: 205
    functionName: dnsdist::selectors::getNotSelector
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules.cc
    functionUses: 2
    functionsReached:
    - std::make_shared<NotRule>
    linkageType: ''
    returnType: std::shared_ptr<NotRule>
    signature: std::shared_ptr<NotRule> getNotSelector(const std::shared_ptr<DNSRule>&
      rule)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<LuaRule>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules.cc:209,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' func'
    argTypes:
    - dnsdist::selectors::LuaSelectorFunction
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 210
      start: 207
    functionDepth: 0
    functionLinenumber: 207
    functionLinenumberEnd: 210
    functionName: dnsdist::selectors::getLuaSelector
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules.cc
    functionUses: 3
    functionsReached:
    - std::make_shared<LuaRule>
    linkageType: ''
    returnType: std::shared_ptr<LuaRule>
    signature: std::shared_ptr<LuaRule> getLuaSelector(const dnsdist::selectors::LuaSelectorFunction&
      func)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<LuaFFIRule>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules.cc:214,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' func'
    argTypes:
    - dnsdist::selectors::LuaSelectorFFIFunction
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 215
      start: 212
    functionDepth: 0
    functionLinenumber: 212
    functionLinenumberEnd: 215
    functionName: dnsdist::selectors::getLuaFFISelector
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules.cc
    functionUses: 3
    functionsReached:
    - std::make_shared<LuaFFIRule>
    linkageType: ''
    returnType: std::shared_ptr<LuaFFIRule>
    signature: std::shared_ptr<LuaFFIRule> getLuaFFISelector(const dnsdist::selectors::LuaSelectorFFIFunction&
      func)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules.cc:145,1
    - Dst: QClass
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules.cc:146,1
    - Dst: boost::to_upper_copy
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules.cc:146,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules.cc:146,1
    - Dst: std::make_shared<QClassRule>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules.cc:149,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - ' qclassStr'
    - qclassCode
    argTypes:
    - std::string
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 150
      start: 142
    functionDepth: 0
    functionLinenumber: 142
    functionLinenumberEnd: 150
    functionName: dnsdist::selectors::getQClassSelector
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules.cc
    functionUses: 0
    functionsReached:
    - std::make_shared<QClassRule>
    - QClass
    - boost::to_upper_copy
    - empty
    - std::string
    linkageType: ''
    returnType: std::shared_ptr<QClassRule>
    signature: std::shared_ptr<QClassRule> getQClassSelector(const std::string& qclassStr,
      uint16_t qclassCode)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules.cc:155,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules.cc:156,1
    - Dst: std::make_shared<QTypeRule>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules.cc:159,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - ' qtypeStr'
    - qtypeCode
    argTypes:
    - std::string
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 160
      start: 152
    functionDepth: 0
    functionLinenumber: 152
    functionLinenumberEnd: 160
    functionName: dnsdist::selectors::getQTypeSelector
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules.cc
    functionUses: 0
    functionsReached:
    - empty
    - std::string
    - std::make_shared<QTypeRule>
    linkageType: ''
    returnType: std::shared_ptr<QTypeRule>
    signature: std::shared_ptr<QTypeRule> getQTypeSelector(const std::string& qtypeStr,
      uint16_t qtypeCode)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<SuffixMatchNodeRule>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules.cc:164,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' suffixes'
    - quiet
    argTypes:
    - SuffixMatchNode
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 165
      start: 162
    functionDepth: 0
    functionLinenumber: 162
    functionLinenumberEnd: 165
    functionName: dnsdist::selectors::getQNameSuffixSelector
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules.cc
    functionUses: 2
    functionsReached:
    - std::make_shared<SuffixMatchNodeRule>
    linkageType: ''
    returnType: std::shared_ptr<SuffixMatchNodeRule>
    signature: std::shared_ptr<SuffixMatchNodeRule> getQNameSuffixSelector(const SuffixMatchNode&
      suffixes, bool quiet)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<QNameSetRule>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules.cc:169,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' qnames'
    argTypes:
    - DNSNameSet
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 170
      start: 167
    functionDepth: 0
    functionLinenumber: 167
    functionLinenumberEnd: 170
    functionName: dnsdist::selectors::getQNameSetSelector
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules.cc
    functionUses: 2
    functionsReached:
    - std::make_shared<QNameSetRule>
    linkageType: ''
    returnType: std::shared_ptr<QNameSetRule>
    signature: std::shared_ptr<QNameSetRule> getQNameSetSelector(const DNSNameSet&
      qnames)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<QNameRule>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules.cc:174,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' qname'
    argTypes:
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 175
      start: 172
    functionDepth: 0
    functionLinenumber: 172
    functionLinenumberEnd: 175
    functionName: dnsdist::selectors::getQNameSelector
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules.cc
    functionUses: 3
    functionsReached:
    - std::make_shared<QNameRule>
    linkageType: ''
    returnType: std::shared_ptr<QNameRule>
    signature: std::shared_ptr<QNameRule> getQNameSelector(const DNSName& qname)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<NetmaskGroupRule>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules.cc:179,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' nmg'
    - source
    - quiet
    argTypes:
    - NetmaskGroup
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 180
      start: 177
    functionDepth: 0
    functionLinenumber: 177
    functionLinenumberEnd: 180
    functionName: dnsdist::selectors::getNetmaskGroupSelector
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules.cc
    functionUses: 2
    functionsReached:
    - std::make_shared<NetmaskGroupRule>
    linkageType: ''
    returnType: std::shared_ptr<NetmaskGroupRule>
    signature: std::shared_ptr<NetmaskGroupRule> getNetmaskGroupSelector(const NetmaskGroup&
      nmg, bool source, bool quiet)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<KeyValueStoreLookupRule>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules.cc:184,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' kvs'
    - ' lookupKey'
    argTypes:
    - std::shared_ptr<KeyValueStore>
    - std::shared_ptr<KeyValueLookupKey>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 185
      start: 182
    functionDepth: 0
    functionLinenumber: 182
    functionLinenumberEnd: 185
    functionName: dnsdist::selectors::getKeyValueStoreLookupSelector
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules.cc
    functionUses: 2
    functionsReached:
    - std::make_shared<KeyValueStoreLookupRule>
    linkageType: ''
    returnType: std::shared_ptr<KeyValueStoreLookupRule>
    signature: std::shared_ptr<KeyValueStoreLookupRule> getKeyValueStoreLookupSelector(const
      std::shared_ptr<KeyValueStore>& kvs, const std::shared_ptr<KeyValueLookupKey>&
      lookupKey)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<KeyValueStoreRangeLookupRule>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules.cc:189,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' kvs'
    - ' lookupKey'
    argTypes:
    - std::shared_ptr<KeyValueStore>
    - std::shared_ptr<KeyValueLookupKey>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 190
      start: 187
    functionDepth: 0
    functionLinenumber: 187
    functionLinenumberEnd: 190
    functionName: dnsdist::selectors::getKeyValueStoreRangeLookupSelector
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules.cc
    functionUses: 2
    functionsReached:
    - std::make_shared<KeyValueStoreRangeLookupRule>
    linkageType: ''
    returnType: std::shared_ptr<KeyValueStoreRangeLookupRule>
    signature: std::shared_ptr<KeyValueStoreRangeLookupRule> getKeyValueStoreRangeLookupSelector(const
      std::shared_ptr<KeyValueStore>& kvs, const std::shared_ptr<KeyValueLookupKey>&
      lookupKey)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<AndRule>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules.cc:194,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' rules'
    argTypes:
    - std::vector<std::shared_ptr<DNSRule>>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 195
      start: 192
    functionDepth: 0
    functionLinenumber: 192
    functionLinenumberEnd: 195
    functionName: dnsdist::selectors::getAndSelector
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules.cc
    functionUses: 2
    functionsReached:
    - std::make_shared<AndRule>
    linkageType: ''
    returnType: std::shared_ptr<AndRule>
    signature: std::shared_ptr<AndRule> getAndSelector(const std::vector<std::shared_ptr<DNSRule>>&
      rules)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<OrRule>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules.cc:199,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' rules'
    argTypes:
    - std::vector<std::shared_ptr<DNSRule>>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 200
      start: 197
    functionDepth: 0
    functionLinenumber: 197
    functionLinenumberEnd: 200
    functionName: dnsdist::selectors::getOrSelector
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules.cc
    functionUses: 2
    functionsReached:
    - std::make_shared<OrRule>
    linkageType: ''
    returnType: std::shared_ptr<OrRule>
    signature: std::shared_ptr<OrRule> getOrSelector(const std::vector<std::shared_ptr<DNSRule>>&
      rules)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<NotRule>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules.cc:204,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' rule'
    argTypes:
    - std::shared_ptr<DNSRule>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 205
      start: 202
    functionDepth: 0
    functionLinenumber: 202
    functionLinenumberEnd: 205
    functionName: dnsdist::selectors::getNotSelector
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules.cc
    functionUses: 2
    functionsReached:
    - std::make_shared<NotRule>
    linkageType: ''
    returnType: std::shared_ptr<NotRule>
    signature: std::shared_ptr<NotRule> getNotSelector(const std::shared_ptr<DNSRule>&
      rule)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<LuaRule>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules.cc:209,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' func'
    argTypes:
    - dnsdist::selectors::LuaSelectorFunction
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 210
      start: 207
    functionDepth: 0
    functionLinenumber: 207
    functionLinenumberEnd: 210
    functionName: dnsdist::selectors::getLuaSelector
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules.cc
    functionUses: 3
    functionsReached:
    - std::make_shared<LuaRule>
    linkageType: ''
    returnType: std::shared_ptr<LuaRule>
    signature: std::shared_ptr<LuaRule> getLuaSelector(const dnsdist::selectors::LuaSelectorFunction&
      func)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<LuaFFIRule>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-rules.cc:214,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' func'
    argTypes:
    - dnsdist::selectors::LuaSelectorFFIFunction
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 215
      start: 212
    functionDepth: 0
    functionLinenumber: 212
    functionLinenumberEnd: 215
    functionName: dnsdist::selectors::getLuaFFISelector
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-rules.cc
    functionUses: 3
    functionsReached:
    - std::make_shared<LuaFFIRule>
    linkageType: ''
    returnType: std::shared_ptr<LuaFFIRule>
    signature: std::shared_ptr<LuaFFIRule> getLuaFFISelector(const dnsdist::selectors::LuaSelectorFFIFunction&
      func)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: make_unique<KeyValueLookupKeySourceIP>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:20,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:23,1
    - Dst: getValue
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:23,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:23,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:23,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:24,1
    - Dst: keyExists
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:24,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:24,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:24,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:25,1
    - Dst: keyExists
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:25,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:25,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:25,1
    - Dst: auto::getKeys
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:27,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:28,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:28,1
    - Dst: std::string::clear
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:30,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:31,1
    - Dst: getValue
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:31,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:32,1
    - Dst: make_unique<KeyValueLookupKeySourceIP>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:38,1
    - Dst: auto::getKeys
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:40,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:41,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:41,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:44,1
    - Dst: getValue
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:44,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:45,1
    - Dst: auto::getKeys
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:48,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:49,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:49,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:52,1
    - Dst: getValue
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:52,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:53,1
    - Dst: make_unique<KeyValueLookupKeySourceIP>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:59,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:61,1
    - Dst: keyExists
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:61,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:61,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:61,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:61,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:61,1
    - Dst: auto::getKeys
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:63,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:64,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:64,1
    - Dst: std::string::clear
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:66,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:67,1
    - Dst: getValue
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:67,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:68,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:72,1
    - Dst: make_unique<KeyValueLookupKeyQName>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:78,1
    - Dst: auto::getKeys
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:79,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:80,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:80,1
    - Dst: std::string::clear
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:82,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:83,1
    - Dst: getValue
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:83,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:84,1
    - Dst: auto::getKeys
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:88,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:89,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:89,1
    - Dst: std::string::clear
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:91,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:92,1
    - Dst: getValue
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:92,1
    - Dst: auto::getKeys
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:96,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:97,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:97,1
    - Dst: std::string::clear
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:99,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:100,1
    - Dst: getValue
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:100,1
    - Dst: auto::getKeys
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:104,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:105,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:105,1
    - Dst: std::string::clear
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:107,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:108,1
    - Dst: getValue
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:108,1
    - Dst: make_unique<KeyValueLookupKeyQName>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:115,1
    - Dst: auto::getKeys
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:116,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:117,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:117,1
    - Dst: std::string::clear
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:119,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:120,1
    - Dst: getValue
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:120,1
    - Dst: auto::getKeys
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:124,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:125,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:125,1
    - Dst: std::string::clear
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:127,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:128,1
    - Dst: getValue
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:128,1
    - Dst: auto::getKeys
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:132,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:133,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:133,1
    - Dst: std::string::clear
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:135,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:136,1
    - Dst: getValue
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:136,1
    - Dst: auto::getKeys
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:140,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:141,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:141,1
    - Dst: std::string::clear
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:143,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:144,1
    - Dst: getValue
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:144,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:145,1
    - Dst: make_unique<KeyValueLookupKeySuffix>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:151,1
    - Dst: auto::getKeys
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:152,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:153,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:153,1
    - Dst: ids::qname::countLabels
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:153,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:154,1
    - Dst: auto::empty
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:154,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:155,1
    - Dst: auto::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:155,1
    - Dst: ids::qname::toDNSStringLC
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:155,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:157,1
    - Dst: getValue
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:157,1
    - Dst: auto::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:157,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:158,1
    - Dst: std::string::clear
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:159,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:160,1
    - Dst: getValue
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:160,1
    - Dst: auto::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:160,1
    - Dst: auto::getKeys
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:163,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:164,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:164,1
    - Dst: DNSName::countLabels
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:164,1
    - Dst: std::string::clear
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:166,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:167,1
    - Dst: getValue
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:167,1
    - Dst: auto::getKeys
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:171,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:172,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:172,1
    - Dst: DNSName::countLabels
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:172,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:173,1
    - Dst: getValue
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:173,1
    - Dst: auto::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:173,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:174,1
    - Dst: getValue
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:174,1
    - Dst: auto::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:174,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:175,1
    - Dst: auto::getKeys
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:178,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:179,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:179,1
    - Dst: countLabels
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:179,1
    - Dst: std::string::clear
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:181,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:182,1
    - Dst: getValue
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:182,1
    - Dst: make_unique<KeyValueLookupKeySuffix>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:188,1
    - Dst: auto::getKeys
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:189,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:190,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:190,1
    - Dst: ids::qname::countLabels
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:190,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:191,1
    - Dst: auto::empty
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:191,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:192,1
    - Dst: auto::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:192,1
    - Dst: ids::qname::toStringRootDot
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:192,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:194,1
    - Dst: getValue
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:194,1
    - Dst: auto::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:194,1
    - Dst: std::string::clear
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:195,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:196,1
    - Dst: getValue
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:196,1
    - Dst: auto::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:196,1
    - Dst: auto::getKeys
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:199,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:200,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:200,1
    - Dst: DNSName::countLabels
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:200,1
    - Dst: std::string::clear
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:202,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:203,1
    - Dst: getValue
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:203,1
    - Dst: auto::getKeys
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:207,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:208,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:208,1
    - Dst: DNSName::countLabels
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:208,1
    - Dst: std::string::clear
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:210,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:211,1
    - Dst: getValue
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:211,1
    - Dst: auto::getKeys
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:215,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:216,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:216,1
    - Dst: countLabels
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:216,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:217,1
    - Dst: getValue
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:217,1
    - Dst: auto::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:217,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:218,1
    - Dst: make_unique<KeyValueLookupKeySuffix>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:223,1
    - Dst: auto::getKeys
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:224,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:225,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:225,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:226,1
    - Dst: auto::empty
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:226,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:227,1
    - Dst: auto::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:227,1
    - Dst: ids::qname::toDNSStringLC
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:227,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:229,1
    - Dst: getValue
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:229,1
    - Dst: auto::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:229,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:230,1
    - Dst: std::string::clear
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:231,1
    - Dst: auto::getKeys
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:234,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:235,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:235,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:236,1
    - Dst: getValue
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:236,1
    - Dst: auto::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:236,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:237,1
    - Dst: getValue
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:237,1
    - Dst: auto::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:237,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:238,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 125
    argCount: 5
    argNames:
    - ' kvs'
    - ' lc'
    - ' rem'
    - ' dq'
    - ' plaintextDomain'
    argTypes:
    - std::unique_ptr<KeyValueStore>
    - ComboAddress
    - ComboAddress
    - DNSQuestion
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 240
      start: 16
    functionDepth: 1
    functionLinenumber: 16
    functionLinenumberEnd: 240
    functionName: doKVSChecks
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc
    functionUses: 0
    functionsReached:
    - getValue
    - std::string
    - keyExists
    - auto::getKeys
    - auto::size
    - countLabels
    - make_unique<KeyValueLookupKeyQName>
    - make_unique<KeyValueLookupKeySourceIP>
    - BOOST_REQUIRE
    - BOOST_REQUIRE_EQUAL
    - ids::qname::toDNSStringLC
    - make_unique<KeyValueLookupKeySuffix>
    - std::string::clear
    - DNSName
    - reinterpret_cast<const char*>
    - ids::qname::toStringRootDot
    - DNSName::countLabels
    - BOOST_CHECK_EQUAL
    - auto::at
    - ids::qname::countLabels
    - BOOST_CHECK
    - auto::empty
    linkageType: ''
    returnType: void
    signature: void doKVSChecks(std::unique_ptr<KeyValueStore>& kvs, const ComboAddress&
      lc, const ComboAddress& rem, const DNSQuestion& dq, const DNSName& plaintextDomain)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:252,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:252,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:252,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:256,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:256,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:258,1
    - Dst: getRangeValue
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:258,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:260,1
    - Dst: check
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:264,1
    - Dst: check
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:265,1
    - Dst: check
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:266,1
    - Dst: check
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:267,1
    - Dst: check
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:268,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:277,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:277,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:277,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:277,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:277,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:281,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:281,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:281,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:281,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:283,1
    - Dst: getRangeValue
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:283,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:285,1
    - Dst: check
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:289,1
    - Dst: check
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:290,1
    - Dst: check
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:291,1
    - Dst: check
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:292,1
    - Dst: check
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:293,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 23
    argCount: 1
    argNames:
    - ' kvs'
    argTypes:
    - std::unique_ptr<KeyValueStore>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 295
      start: 243
    functionDepth: 0
    functionLinenumber: 243
    functionLinenumberEnd: 295
    functionName: doKVSRangeChecks
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc
    functionUses: 0
    functionsReached:
    - BOOST_CHECK_EQUAL
    - getRangeValue
    - reinterpret_cast<const char*>
    - check
    - std::string
    linkageType: ''
    returnType: void
    signature: void doKVSRangeChecks(std::unique_ptr<KeyValueStore>& kvs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:307,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:311,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:312,1
    - Dst: InternalQueryState::queryRealTime::start
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:315,1
    - Dst: gettime
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:318,1
    - Dst: ComboAddress::truncate
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:323,1
    - Dst: ComboAddress::truncate
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:324,1
    - Dst: string::c_str
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:333,1
    - Dst: MDBEnv::getRWTransaction
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:334,1
    - Dst: auto::openDB
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:335,1
    - Dst: auto::put
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:336,1
    - Dst: MDBInVal
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:336,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:336,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:336,1
    - Dst: MDBInVal
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:336,1
    - Dst: auto::put
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:337,1
    - Dst: MDBInVal
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:337,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:337,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:337,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:337,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:337,1
    - Dst: MDBInVal
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:337,1
    - Dst: auto::put
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:338,1
    - Dst: MDBInVal
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:338,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:338,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:338,1
    - Dst: MDBInVal
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:338,1
    - Dst: auto::put
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:339,1
    - Dst: MDBInVal
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:339,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:339,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:339,1
    - Dst: MDBInVal
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:339,1
    - Dst: auto::put
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:340,1
    - Dst: MDBInVal
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:340,1
    - Dst: DNSQuestion::ids::qname::toDNSStringLC
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:340,1
    - Dst: MDBInVal
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:340,1
    - Dst: auto::put
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:341,1
    - Dst: MDBInVal
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:341,1
    - Dst: DNSName::toStringRootDot
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:341,1
    - Dst: MDBInVal
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:341,1
    - Dst: auto::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:343,1
    - Dst: string::c_str
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:347,1
    - Dst: MDBEnv::getRWTransaction
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:348,1
    - Dst: auto::openDB
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:349,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:351,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:351,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:351,1
    - Dst: auto::put
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:352,1
    - Dst: MDBInVal
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:352,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:352,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:352,1
    - Dst: MDBInVal
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:352,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:354,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:354,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:354,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:354,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:354,1
    - Dst: auto::put
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:355,1
    - Dst: MDBInVal
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:355,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:355,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:355,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:355,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:355,1
    - Dst: MDBInVal
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:355,1
    - Dst: auto::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:357,1
    - Dst: std::make_unique<LMDBKVStore>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:360,1
    - Dst: doKVSChecks
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:361,1
    - Dst: std::unique_ptr::reset
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:362,1
    - Dst: std::make_unique<LMDBKVStore>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:364,1
    - Dst: doKVSRangeChecks
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:365,1
    - Dst: unlink
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:367,1
    - Dst: string::c_str
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:367,1
    - Dst: unlink
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:369,1
    - Dst: string::c_str
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:369,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 31
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 385
      start: 303
    functionDepth: 2
    functionLinenumber: 303
    functionLinenumberEnd: 385
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc
    functionUses: 0
    functionsReached:
    - std::make_unique<LMDBKVStore>
    - MDBInVal
    - auto::openDB
    - std::string
    - DNSName::toStringRootDot
    - auto::commit
    - string::c_str
    - doKVSChecks
    - DNSName
    - MDBEnv::getRWTransaction
    - reinterpret_cast<const char*>
    - gettime
    - auto::put
    - ComboAddress
    - DNSQuestion::ids::qname::toDNSStringLC
    - unlink
    - ComboAddress::truncate
    - InternalQueryState::queryRealTime::start
    - doKVSRangeChecks
    - std::unique_ptr::reset
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_LMDB)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:393,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:397,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:398,1
    - Dst: InternalQueryState::queryRealTime::start
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:401,1
    - Dst: gettime
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:404,1
    - Dst: ComboAddress::truncate
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:409,1
    - Dst: ComboAddress::truncate
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:410,1
    - Dst: mkstemp
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:414,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:415,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:417,1
    - Dst: CDBWriter::addEntry
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:417,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:417,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:417,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:418,1
    - Dst: CDBWriter::addEntry
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:418,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:418,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:418,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:418,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:418,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:419,1
    - Dst: CDBWriter::addEntry
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:419,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:419,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:419,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:420,1
    - Dst: CDBWriter::addEntry
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:420,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:420,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:420,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:421,1
    - Dst: CDBWriter::addEntry
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:421,1
    - Dst: DNSQuestion::ids::qname::toDNSStringLC
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:421,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:422,1
    - Dst: CDBWriter::addEntry
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:422,1
    - Dst: DNSName::toStringRootDot
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:422,1
    - Dst: CDBWriter::close
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:423,1
    - Dst: std::make_unique<CDBKVStore>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:426,1
    - Dst: doKVSChecks
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:427,1
    - Dst: unlink
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc:429,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 22
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 451
      start: 389
    functionDepth: 2
    functionLinenumber: 389
    functionLinenumberEnd: 451
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc
    functionUses: 0
    functionsReached:
    - mkstemp
    - doKVSChecks
    - CDBWriter::addEntry
    - DNSName::toStringRootDot
    - DNSName
    - DNSQuestion::ids::qname::toDNSStringLC
    - std::make_unique<CDBKVStore>
    - reinterpret_cast<const char*>
    - ComboAddress::truncate
    - InternalQueryState::queryRealTime::start
    - gettime
    - BOOST_REQUIRE
    - unlink
    - std::string
    - CDBWriter::close
    - ComboAddress
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_CDB)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-protocols.hh:48,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-protocols.hh:49,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-protocols.hh:49,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 45
    functionDepth: 0
    functionLinenumber: 45
    functionLinenumberEnd: 51
    functionName: dnsdist::Protocol::Protocol
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-protocols.hh
    functionUses: 0
    functionsReached:
    - std::to_string
    - size
    - std::runtime_error
    linkageType: ''
    returnType: void
    signature: void Protocol(typeenum protocol = DoUDP)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-protocols.hh:48,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-protocols.hh:49,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-protocols.hh:49,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 45
    functionDepth: 0
    functionLinenumber: 45
    functionLinenumberEnd: 51
    functionName: dnsdist::Protocol::Protocol
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-protocols.hh
    functionUses: 0
    functionsReached:
    - std::to_string
    - size
    - std::runtime_error
    linkageType: ''
    returnType: void
    signature: void Protocol(typeenum protocol = DoUDP)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - IPCrypt2
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 49
    functionDepth: 0
    functionLinenumber: 49
    functionLinenumberEnd: 49
    functionName: pdns::ipcrypt2::IPCrypt2::IPCrypt2
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-ipcrypt2.hh
    functionUses: 9
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void IPCrypt2(IPCrypt2&& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - IPCrypt2
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 50
    functionDepth: 0
    functionLinenumber: 50
    functionLinenumberEnd: 50
    functionName: '& operator=(IPCrypt2&& rhs)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-ipcrypt2.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: IPCrypt2
    signature: IPCrypt2 & operator=(IPCrypt2&& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 1
    argNames:
    - ' orig'
    argTypes:
    - IPCrypt2
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 52
    functionDepth: 0
    functionLinenumber: 52
    functionLinenumberEnd: 52
    functionName: pdns::ipcrypt2::IPCrypt2::IPCrypt2
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-ipcrypt2.hh
    functionUses: 9
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void IPCrypt2(const IPCrypt2& orig)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 1
    argNames:
    - ' orig'
    argTypes:
    - IPCrypt2
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 53
    functionDepth: 0
    functionLinenumber: 53
    functionLinenumberEnd: 53
    functionName: '& operator=(const IPCrypt2& orig)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-ipcrypt2.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: IPCrypt2
    signature: IPCrypt2 & operator=(const IPCrypt2& orig)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - IPCrypt2
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 49
    functionDepth: 0
    functionLinenumber: 49
    functionLinenumberEnd: 49
    functionName: pdns::ipcrypt2::IPCrypt2::IPCrypt2
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-ipcrypt2.hh
    functionUses: 9
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void IPCrypt2(IPCrypt2&& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - IPCrypt2
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 50
    functionDepth: 0
    functionLinenumber: 50
    functionLinenumberEnd: 50
    functionName: '& operator=(IPCrypt2&& rhs)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-ipcrypt2.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: IPCrypt2
    signature: IPCrypt2 & operator=(IPCrypt2&& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 1
    argNames:
    - ' orig'
    argTypes:
    - IPCrypt2
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 52
    functionDepth: 0
    functionLinenumber: 52
    functionLinenumberEnd: 52
    functionName: pdns::ipcrypt2::IPCrypt2::IPCrypt2
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-ipcrypt2.hh
    functionUses: 9
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void IPCrypt2(const IPCrypt2& orig)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 1
    argNames:
    - ' orig'
    argTypes:
    - IPCrypt2
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 53
    functionDepth: 0
    functionLinenumber: 53
    functionLinenumberEnd: 53
    functionName: '& operator=(const IPCrypt2& orig)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-ipcrypt2.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: IPCrypt2
    signature: IPCrypt2 & operator=(const IPCrypt2& orig)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: htonl
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:42,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:43,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:44,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:45,1
    - Dst: std::array::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:46,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:47,1
    - Dst: std::array::at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:47,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:48,1
    - Dst: std::array::at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:48,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:49,1
    - Dst: std::array::at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:49,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:50,1
    - Dst: std::array::at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:50,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:51,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:51,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:51,1
    - Dst: std::array::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:51,1
    - Dst: std::array::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:52,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 6
    argNames:
    - ' packet'
    - ' position'
    - qclass
    - ttl
    - qtype
    - rdataLen
    argTypes:
    - PacketBuffer
    - size_t
    - uint16_t
    - uint32_t
    - QType
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 33
    functionDepth: 0
    functionLinenumber: 33
    functionLinenumberEnd: 53
    functionName: dnsdist::self_answers::addRecordHeader
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc
    functionUses: 0
    functionsReached:
    - memcpy
    - at
    - htonl
    - std::array::data
    - std::array::at
    - std::array::size
    - htons
    linkageType: ''
    returnType: void
    signature: void addRecordHeader(PacketBuffer& packet, size_t& position, uint16_t
      qclass, uint32_t ttl, QType qtype, uint16_t rdataLen)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:57,1
    - Dst: queryHasEDNS
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:68,1
    - Dst: dnsdist::getEDNSZ
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:69,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 1
    argNames:
    - ' dnsQuestion'
    argTypes:
    - DNSQuestion
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 55
    functionDepth: 2
    functionLinenumber: 55
    functionLinenumberEnd: 76
    functionName: dnsdist::self_answers::getEDNSStatusInQuery
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc
    functionUses: 0
    functionsReached:
    - queryHasEDNS
    - dnsdist::getEDNSZ
    - dnsdist::configuration::getCurrentRuntimeConfiguration
    linkageType: ''
    returnType: std::pair<bool, bool>
    signature: std::pair<bool, bool> getEDNSStatusInQuery(DNSQuestion& dnsQuestion)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: getStorage
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:81,1
    - Dst: ids::qname::wirelength
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:83,1
    - Dst: getMaximumSize
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:84,1
    - Dst: dnsdist::self_answers::getEDNSStatusInQuery
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:88,1
    - Dst: getMutableData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:89,1
    - Dst: resize
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:90,1
    - Dst: dnsdist::PacketMangling::editDNSHeaderFromPacket
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:93,1
    - Dst: getMutableData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:93,1
    - Dst: setResponseHeadersFromConfig
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:95,1
    - Dst: getStorage
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:101,1
    - Dst: dnsdist::self_answers::addRecordHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:102,1
    - Dst: length
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:102,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:103,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:103,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:103,1
    - Dst: length
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:103,1
    - Dst: dnsdist::PacketMangling::editDNSHeaderFromPacket
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:105,1
    - Dst: getMutableData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:105,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:106,1
    - Dst: addEDNS
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:111,1
    - Dst: getMutableData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:111,1
    - Dst: getMaximumSize
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:111,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:111,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 23
    argCount: 3
    argNames:
    - ' dnsQuestion'
    - ' cname'
    - ' responseConfig'
    argTypes:
    - DNSQuestion
    - DNSName
    - dnsdist::ResponseConfig
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 78
    functionDepth: 3
    functionLinenumber: 78
    functionLinenumberEnd: 116
    functionName: dnsdist::self_answers::generateAnswerFromCNAME
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc
    functionUses: 3
    functionsReached:
    - length
    - getMutableData
    - memcpy
    - resize
    - setResponseHeadersFromConfig
    - getStorage
    - at
    - dnsdist::configuration::getCurrentRuntimeConfiguration
    - dnsdist::self_answers::addRecordHeader
    - getMaximumSize
    - addEDNS
    - dnsdist::PacketMangling::editDNSHeaderFromPacket
    - c_str
    - ids::qname::wirelength
    - dnsdist::self_answers::getEDNSStatusInQuery
    - htons
    linkageType: ''
    returnType: bool
    signature: bool generateAnswerFromCNAME(DNSQuestion& dnsQuestion, const DNSName&
      cname, const dnsdist::ResponseConfig& responseConfig)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:129,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:133,1
    - Dst: shuffle
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:134,1
    - Dst: std::vector::begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:134,1
    - Dst: std::vector::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:134,1
    - Dst: ids::qname::wirelength
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:137,1
    - Dst: getMaximumSize
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:138,1
    - Dst: dnsdist::self_answers::getEDNSStatusInQuery
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:142,1
    - Dst: getMutableData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:143,1
    - Dst: resize
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:144,1
    - Dst: dnsdist::PacketMangling::editDNSHeaderFromPacket
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:147,1
    - Dst: getMutableData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:147,1
    - Dst: setResponseHeadersFromConfig
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:149,1
    - Dst: dnsdist::self_answers::addRecordHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:159,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:161,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:161,1
    - Dst: reinterpret_cast<const void*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:163,1
    - Dst: reinterpret_cast<const void*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:163,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:169,1
    - Dst: dnsdist::PacketMangling::editDNSHeaderFromPacket
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:170,1
    - Dst: getMutableData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:170,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:171,1
    - Dst: addEDNS
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:176,1
    - Dst: getMutableData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:176,1
    - Dst: getMaximumSize
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:176,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:176,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 36
    argCount: 3
    argNames:
    - ' dnsQuestion'
    - ' addresses'
    - ' responseConfig'
    argTypes:
    - DNSQuestion
    - std::vector<ComboAddress>
    - dnsdist::ResponseConfig
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 181
      start: 118
    functionDepth: 3
    functionLinenumber: 118
    functionLinenumberEnd: 181
    functionName: dnsdist::self_answers::generateAnswerFromIPAddresses
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc
    functionUses: 5
    functionsReached:
    - getMutableData
    - setResponseHeadersFromConfig
    - reinterpret_cast<const void*>
    - addEDNS
    - dnsdist::self_answers::getEDNSStatusInQuery
    - std::vector::push_back
    - std::vector::size
    - resize
    - std::vector::begin
    - shuffle
    - dnsdist::self_answers::addRecordHeader
    - getMaximumSize
    - at
    - htons
    - std::vector::end
    - dnsdist::configuration::getCurrentRuntimeConfiguration
    - ids::qname::wirelength
    - memcpy
    - dnsdist::PacketMangling::editDNSHeaderFromPacket
    linkageType: ''
    returnType: bool
    signature: bool generateAnswerFromIPAddresses(DNSQuestion& dnsQuestion, const
      std::vector<ComboAddress>& addresses, const dnsdist::ResponseConfig& responseConfig)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:189,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:192,1
    - Dst: shuffle
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:193,1
    - Dst: auto::begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:193,1
    - Dst: auto::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:193,1
    - Dst: ids::qname::wirelength
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:196,1
    - Dst: getMaximumSize
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:197,1
    - Dst: dnsdist::self_answers::getEDNSStatusInQuery
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:201,1
    - Dst: getMutableData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:202,1
    - Dst: resize
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:203,1
    - Dst: dnsdist::PacketMangling::editDNSHeaderFromPacket
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:206,1
    - Dst: getMutableData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:206,1
    - Dst: setResponseHeadersFromConfig
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:208,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:220,1
    - Dst: dnsdist::self_answers::addRecordHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:221,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:222,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:222,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:222,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:222,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:223,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:226,1
    - Dst: dnsdist::PacketMangling::editDNSHeaderFromPacket
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:227,1
    - Dst: getMutableData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:227,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:228,1
    - Dst: addEDNS
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:233,1
    - Dst: getMutableData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:233,1
    - Dst: getMaximumSize
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:233,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:233,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 34
    argCount: 4
    argNames:
    - ' dnsQuestion'
    - ' entries'
    - typeForAny
    - ' responseConfig'
    argTypes:
    - DNSQuestion
    - std::vector<std::string>
    - std::optional<uint16_t>
    - dnsdist::ResponseConfig
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 238
      start: 183
    functionDepth: 3
    functionLinenumber: 183
    functionLinenumberEnd: 238
    functionName: dnsdist::self_answers::generateAnswerFromRDataEntries
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc
    functionUses: 5
    functionsReached:
    - getMutableData
    - setResponseHeadersFromConfig
    - addEDNS
    - auto::begin
    - dnsdist::self_answers::getEDNSStatusInQuery
    - auto::size
    - resize
    - size
    - shuffle
    - dnsdist::self_answers::addRecordHeader
    - getMaximumSize
    - c_str
    - at
    - htons
    - dnsdist::configuration::getCurrentRuntimeConfiguration
    - ids::qname::wirelength
    - memcpy
    - dnsdist::PacketMangling::editDNSHeaderFromPacket
    - auto::end
    linkageType: ''
    returnType: bool
    signature: bool generateAnswerFromRDataEntries(DNSQuestion& dnsQuestion, const
      std::vector<std::string>& entries, std::optional<uint16_t> typeForAny, const
      dnsdist::ResponseConfig& responseConfig)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:242,1
    - Dst: getMutableData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:243,1
    - Dst: dnsdist::PacketMangling::editDNSHeaderFromPacket
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:245,1
    - Dst: getMutableData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:245,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 2
    argNames:
    - ' dnsQuestion'
    - ' packet'
    argTypes:
    - DNSQuestion
    - PacketBuffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 250
      start: 240
    functionDepth: 2
    functionLinenumber: 240
    functionLinenumberEnd: 250
    functionName: dnsdist::self_answers::generateAnswerFromRawPacket
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc
    functionUses: 4
    functionsReached:
    - getHeader
    - getMutableData
    - dnsdist::PacketMangling::editDNSHeaderFromPacket
    linkageType: ''
    returnType: bool
    signature: bool generateAnswerFromRawPacket(DNSQuestion& dnsQuestion, const PacketBuffer&
      packet)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::self_answers::getEDNSStatusInQuery
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:254,1
    - Dst: dnsdist::PacketMangling::editDNSHeaderFromPacket
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:255,1
    - Dst: getMutableData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:255,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:258,1
    - Dst: ids::qname::wirelength
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:264,1
    - Dst: getMutableData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:265,1
    - Dst: addEDNS
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:268,1
    - Dst: getMutableData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:268,1
    - Dst: getMaximumSize
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:268,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:268,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 2
    argNames:
    - ' dnsQuestion'
    - rcode
    argTypes:
    - DNSQuestion
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 272
      start: 252
    functionDepth: 3
    functionLinenumber: 252
    functionLinenumberEnd: 272
    functionName: dnsdist::self_answers::removeRecordsAndSetRCode
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc
    functionUses: 8
    functionsReached:
    - getMutableData
    - dnsdist::configuration::getCurrentRuntimeConfiguration
    - addEDNS
    - getMaximumSize
    - dnsdist::PacketMangling::editDNSHeaderFromPacket
    - ids::qname::wirelength
    - dnsdist::self_answers::getEDNSStatusInQuery
    - htons
    linkageType: ''
    returnType: bool
    signature: bool removeRecordsAndSetRCode(DNSQuestion& dnsQuestion, uint8_t rcode)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: htonl
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:42,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:43,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:44,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:45,1
    - Dst: std::array::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:46,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:47,1
    - Dst: std::array::at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:47,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:48,1
    - Dst: std::array::at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:48,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:49,1
    - Dst: std::array::at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:49,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:50,1
    - Dst: std::array::at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:50,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:51,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:51,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:51,1
    - Dst: std::array::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:51,1
    - Dst: std::array::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:52,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 6
    argNames:
    - ' packet'
    - ' position'
    - qclass
    - ttl
    - qtype
    - rdataLen
    argTypes:
    - PacketBuffer
    - size_t
    - uint16_t
    - uint32_t
    - QType
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 33
    functionDepth: 0
    functionLinenumber: 33
    functionLinenumberEnd: 53
    functionName: dnsdist::self_answers::addRecordHeader
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc
    functionUses: 3
    functionsReached:
    - memcpy
    - at
    - htonl
    - std::array::data
    - std::array::at
    - std::array::size
    - htons
    linkageType: ''
    returnType: void
    signature: void addRecordHeader(PacketBuffer& packet, size_t& position, uint16_t
      qclass, uint32_t ttl, QType qtype, uint16_t rdataLen)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:57,1
    - Dst: queryHasEDNS
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:68,1
    - Dst: dnsdist::getEDNSZ
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:69,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 1
    argNames:
    - ' dnsQuestion'
    argTypes:
    - DNSQuestion
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 55
    functionDepth: 2
    functionLinenumber: 55
    functionLinenumberEnd: 76
    functionName: dnsdist::self_answers::getEDNSStatusInQuery
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc
    functionUses: 4
    functionsReached:
    - queryHasEDNS
    - dnsdist::getEDNSZ
    - dnsdist::configuration::getCurrentRuntimeConfiguration
    linkageType: ''
    returnType: std::pair<bool, bool>
    signature: std::pair<bool, bool> getEDNSStatusInQuery(DNSQuestion& dnsQuestion)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: getStorage
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:81,1
    - Dst: ids::qname::wirelength
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:83,1
    - Dst: getMaximumSize
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:84,1
    - Dst: dnsdist::self_answers::getEDNSStatusInQuery
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:88,1
    - Dst: getMutableData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:89,1
    - Dst: resize
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:90,1
    - Dst: dnsdist::PacketMangling::editDNSHeaderFromPacket
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:93,1
    - Dst: getMutableData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:93,1
    - Dst: setResponseHeadersFromConfig
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:95,1
    - Dst: getStorage
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:101,1
    - Dst: dnsdist::self_answers::addRecordHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:102,1
    - Dst: length
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:102,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:103,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:103,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:103,1
    - Dst: length
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:103,1
    - Dst: dnsdist::PacketMangling::editDNSHeaderFromPacket
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:105,1
    - Dst: getMutableData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:105,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:106,1
    - Dst: addEDNS
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:111,1
    - Dst: getMutableData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:111,1
    - Dst: getMaximumSize
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:111,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:111,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 23
    argCount: 3
    argNames:
    - ' dnsQuestion'
    - ' cname'
    - ' responseConfig'
    argTypes:
    - DNSQuestion
    - DNSName
    - dnsdist::ResponseConfig
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 78
    functionDepth: 3
    functionLinenumber: 78
    functionLinenumberEnd: 116
    functionName: dnsdist::self_answers::generateAnswerFromCNAME
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc
    functionUses: 3
    functionsReached:
    - length
    - getMutableData
    - memcpy
    - resize
    - setResponseHeadersFromConfig
    - getStorage
    - at
    - dnsdist::configuration::getCurrentRuntimeConfiguration
    - dnsdist::self_answers::addRecordHeader
    - getMaximumSize
    - addEDNS
    - dnsdist::PacketMangling::editDNSHeaderFromPacket
    - c_str
    - ids::qname::wirelength
    - dnsdist::self_answers::getEDNSStatusInQuery
    - htons
    linkageType: ''
    returnType: bool
    signature: bool generateAnswerFromCNAME(DNSQuestion& dnsQuestion, const DNSName&
      cname, const dnsdist::ResponseConfig& responseConfig)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:129,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:133,1
    - Dst: shuffle
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:134,1
    - Dst: std::vector::begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:134,1
    - Dst: std::vector::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:134,1
    - Dst: ids::qname::wirelength
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:137,1
    - Dst: getMaximumSize
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:138,1
    - Dst: dnsdist::self_answers::getEDNSStatusInQuery
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:142,1
    - Dst: getMutableData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:143,1
    - Dst: resize
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:144,1
    - Dst: dnsdist::PacketMangling::editDNSHeaderFromPacket
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:147,1
    - Dst: getMutableData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:147,1
    - Dst: setResponseHeadersFromConfig
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:149,1
    - Dst: dnsdist::self_answers::addRecordHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:159,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:161,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:161,1
    - Dst: reinterpret_cast<const void*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:163,1
    - Dst: reinterpret_cast<const void*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:163,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:169,1
    - Dst: dnsdist::PacketMangling::editDNSHeaderFromPacket
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:170,1
    - Dst: getMutableData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:170,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:171,1
    - Dst: addEDNS
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:176,1
    - Dst: getMutableData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:176,1
    - Dst: getMaximumSize
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:176,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:176,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 36
    argCount: 3
    argNames:
    - ' dnsQuestion'
    - ' addresses'
    - ' responseConfig'
    argTypes:
    - DNSQuestion
    - std::vector<ComboAddress>
    - dnsdist::ResponseConfig
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 181
      start: 118
    functionDepth: 3
    functionLinenumber: 118
    functionLinenumberEnd: 181
    functionName: dnsdist::self_answers::generateAnswerFromIPAddresses
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc
    functionUses: 5
    functionsReached:
    - getMutableData
    - setResponseHeadersFromConfig
    - reinterpret_cast<const void*>
    - addEDNS
    - dnsdist::self_answers::getEDNSStatusInQuery
    - std::vector::push_back
    - std::vector::size
    - resize
    - std::vector::begin
    - shuffle
    - dnsdist::self_answers::addRecordHeader
    - getMaximumSize
    - at
    - htons
    - std::vector::end
    - dnsdist::configuration::getCurrentRuntimeConfiguration
    - ids::qname::wirelength
    - memcpy
    - dnsdist::PacketMangling::editDNSHeaderFromPacket
    linkageType: ''
    returnType: bool
    signature: bool generateAnswerFromIPAddresses(DNSQuestion& dnsQuestion, const
      std::vector<ComboAddress>& addresses, const dnsdist::ResponseConfig& responseConfig)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:189,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:192,1
    - Dst: shuffle
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:193,1
    - Dst: auto::begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:193,1
    - Dst: auto::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:193,1
    - Dst: ids::qname::wirelength
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:196,1
    - Dst: getMaximumSize
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:197,1
    - Dst: dnsdist::self_answers::getEDNSStatusInQuery
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:201,1
    - Dst: getMutableData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:202,1
    - Dst: resize
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:203,1
    - Dst: dnsdist::PacketMangling::editDNSHeaderFromPacket
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:206,1
    - Dst: getMutableData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:206,1
    - Dst: setResponseHeadersFromConfig
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:208,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:220,1
    - Dst: dnsdist::self_answers::addRecordHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:221,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:222,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:222,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:222,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:222,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:223,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:226,1
    - Dst: dnsdist::PacketMangling::editDNSHeaderFromPacket
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:227,1
    - Dst: getMutableData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:227,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:228,1
    - Dst: addEDNS
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:233,1
    - Dst: getMutableData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:233,1
    - Dst: getMaximumSize
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:233,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:233,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 34
    argCount: 4
    argNames:
    - ' dnsQuestion'
    - ' entries'
    - typeForAny
    - ' responseConfig'
    argTypes:
    - DNSQuestion
    - std::vector<std::string>
    - std::optional<uint16_t>
    - dnsdist::ResponseConfig
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 238
      start: 183
    functionDepth: 3
    functionLinenumber: 183
    functionLinenumberEnd: 238
    functionName: dnsdist::self_answers::generateAnswerFromRDataEntries
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc
    functionUses: 5
    functionsReached:
    - getMutableData
    - setResponseHeadersFromConfig
    - addEDNS
    - auto::begin
    - dnsdist::self_answers::getEDNSStatusInQuery
    - auto::size
    - resize
    - size
    - shuffle
    - dnsdist::self_answers::addRecordHeader
    - getMaximumSize
    - c_str
    - at
    - htons
    - dnsdist::configuration::getCurrentRuntimeConfiguration
    - ids::qname::wirelength
    - memcpy
    - dnsdist::PacketMangling::editDNSHeaderFromPacket
    - auto::end
    linkageType: ''
    returnType: bool
    signature: bool generateAnswerFromRDataEntries(DNSQuestion& dnsQuestion, const
      std::vector<std::string>& entries, std::optional<uint16_t> typeForAny, const
      dnsdist::ResponseConfig& responseConfig)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:242,1
    - Dst: getMutableData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:243,1
    - Dst: dnsdist::PacketMangling::editDNSHeaderFromPacket
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:245,1
    - Dst: getMutableData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:245,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 2
    argNames:
    - ' dnsQuestion'
    - ' packet'
    argTypes:
    - DNSQuestion
    - PacketBuffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 250
      start: 240
    functionDepth: 2
    functionLinenumber: 240
    functionLinenumberEnd: 250
    functionName: dnsdist::self_answers::generateAnswerFromRawPacket
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc
    functionUses: 4
    functionsReached:
    - getHeader
    - getMutableData
    - dnsdist::PacketMangling::editDNSHeaderFromPacket
    linkageType: ''
    returnType: bool
    signature: bool generateAnswerFromRawPacket(DNSQuestion& dnsQuestion, const PacketBuffer&
      packet)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::self_answers::getEDNSStatusInQuery
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:254,1
    - Dst: dnsdist::PacketMangling::editDNSHeaderFromPacket
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:255,1
    - Dst: getMutableData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:255,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:258,1
    - Dst: ids::qname::wirelength
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:264,1
    - Dst: getMutableData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:265,1
    - Dst: addEDNS
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:268,1
    - Dst: getMutableData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:268,1
    - Dst: getMaximumSize
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:268,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc:268,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 2
    argNames:
    - ' dnsQuestion'
    - rcode
    argTypes:
    - DNSQuestion
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 272
      start: 252
    functionDepth: 3
    functionLinenumber: 252
    functionLinenumberEnd: 272
    functionName: dnsdist::self_answers::removeRecordsAndSetRCode
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc
    functionUses: 8
    functionsReached:
    - getMutableData
    - dnsdist::configuration::getCurrentRuntimeConfiguration
    - addEDNS
    - getMaximumSize
    - dnsdist::PacketMangling::editDNSHeaderFromPacket
    - ids::qname::wirelength
    - dnsdist::self_answers::getEDNSStatusInQuery
    - htons
    linkageType: ''
    returnType: bool
    signature: bool removeRecordsAndSetRCode(DNSQuestion& dnsQuestion, uint8_t rcode)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-network.cc:31,1
    - Dst: std::shared_ptr<dnsdist::NetworkEndpoint>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-network.cc:33,1
    - Dst: std::make_shared<dnsdist::NetworkEndpoint>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-network.cc:37,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-network.cc:40,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-network.cc:40,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-network.cc:40,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-network.cc:41,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-network.cc:41,1
    - Dst: std::shared_ptr<dnsdist::NetworkEndpoint>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-network.cc:43,1
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-network.cc:51,1
    - Dst: send
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-network.cc:55,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-network.cc:58,1
    - Dst: std::shared_ptr<dnsdist::NetworkListener>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-network.cc:60,1
    - Dst: std::make_shared<dnsdist::NetworkListener>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-network.cc:63,1
    - Dst: addUnixListeningEndpoint
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-network.cc:71,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-network.cc:71,1
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-network.cc:73,1
    - Dst: cb
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-network.cc:74,1
    - Dst: dnsdist::handleQueuedAsynchronousEvents
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-network.cc:76,1
    - Dst: addUnixListeningEndpoint
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-network.cc:86,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-network.cc:86,1
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-network.cc:88,1
    - Dst: cb
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-network.cc:90,1
    - Dst: dnsdist::handleQueuedAsynchronousEvents
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-network.cc:92,1
    - Dst: start
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-network.cc:101,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-network.cc:104,1
    - Dst: getResolvers
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-network.cc:105,1
    - Dst: LuaArray::reserve
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-network.cc:107,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-network.cc:107,1
    - Dst: LuaArray::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-network.cc:110,1
    - Dst: toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-network.cc:110,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 60
    argCount: 3
    argNames:
    - ' luaCtx'
    - client
    - configCheck
    argTypes:
    - LuaContext
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 115
      start: 29
    functionDepth: 1
    functionLinenumber: 29
    functionLinenumberEnd: 115
    functionName: setupLuaBindingsNetwork
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-network.cc
    functionUses: 2
    functionsReached:
    - toString
    - getResolvers
    - auto::size
    - SLOG
    - warnlog
    - lock
    - send
    - dnsdist::logging::getTopLogger
    - addUnixListeningEndpoint
    - empty
    - std::shared_ptr<dnsdist::NetworkListener>
    - writeFunction
    - std::make_shared<dnsdist::NetworkEndpoint>
    - std::move
    - LuaArray::reserve
    - what
    - std::shared_ptr<dnsdist::NetworkEndpoint>
    - LuaArray::emplace_back
    - dnsdist::handleQueuedAsynchronousEvents
    - std::make_shared<dnsdist::NetworkListener>
    - cb
    - start
    linkageType: ''
    returnType: void
    signature: void setupLuaBindingsNetwork(LuaContext& luaCtx, bool client, bool
      configCheck)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: base_t
      Src: /src/pdns/pdns/dnsdistdist/stat_t.hh:36,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 36
    functionDepth: 0
    functionLinenumber: 36
    functionLinenumberEnd: 37
    functionName: pdns::stat_t_trait::stat_t_trait
    functionSourceFile: /src/pdns/pdns/dnsdistdist/stat_t.hh
    functionUses: 0
    functionsReached:
    - base_t
    linkageType: ''
    returnType: void
    signature: void stat_t_trait()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: atomic_t::atomic_t
      Src: /src/pdns/pdns/dnsdistdist/stat_t.hh:40,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - value
    argTypes:
    - base_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 38
    functionDepth: 0
    functionLinenumber: 38
    functionLinenumberEnd: 41
    functionName: pdns::stat_t_trait::stat_t_trait
    functionSourceFile: /src/pdns/pdns/dnsdistdist/stat_t.hh
    functionUses: 0
    functionsReached:
    - atomic_t::atomic_t
    linkageType: ''
    returnType: void
    signature: void stat_t_trait(const base_t value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ref
      Src: /src/pdns/pdns/dnsdistdist/stat_t.hh:43,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ' value'
    argTypes:
    - base_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 42
    functionDepth: 0
    functionLinenumber: 42
    functionLinenumberEnd: 45
    functionName: '& operator=(const base_t& value)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/stat_t.hh
    functionUses: 0
    functionsReached:
    - ref
    linkageType: ''
    returnType: stat_t_trait
    signature: stat_t_trait & operator=(const base_t& value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ref
      Src: /src/pdns/pdns/dnsdistdist/stat_t.hh:47,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 46
    functionDepth: 0
    functionLinenumber: 46
    functionLinenumberEnd: 48
    functionName: ~stat_t_trait()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/stat_t.hh
    functionUses: 0
    functionsReached:
    - ref
    linkageType: ''
    returnType: void
    signature: void ~stat_t_trait()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 49
    functionDepth: 0
    functionLinenumber: 49
    functionLinenumberEnd: 49
    functionName: pdns::stat_t_trait::stat_t_trait
    functionSourceFile: /src/pdns/pdns/dnsdistdist/stat_t.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void stat_t_trait(stat_t_trait&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 50
    functionDepth: 0
    functionLinenumber: 50
    functionLinenumberEnd: 50
    functionName: '& operator=(const stat_t_trait&)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/stat_t.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: stat_t_trait
    signature: stat_t_trait & operator=(const stat_t_trait&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 51
    functionDepth: 0
    functionLinenumber: 51
    functionLinenumberEnd: 51
    functionName: '& operator=(stat_t_trait&&)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/stat_t.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: stat_t_trait
    signature: stat_t_trait & operator=(stat_t_trait&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 52
    functionDepth: 0
    functionLinenumber: 52
    functionLinenumberEnd: 52
    functionName: pdns::stat_t_trait::stat_t_trait
    functionSourceFile: /src/pdns/pdns/dnsdistdist/stat_t.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void stat_t_trait(const stat_t_trait&)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ref
      Src: /src/pdns/pdns/dnsdistdist/stat_t.hh:54,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 53
    functionDepth: 0
    functionLinenumber: 53
    functionLinenumberEnd: 55
    functionName: operator++(int)
    functionSourceFile: /src/pdns/pdns/dnsdistdist/stat_t.hh
    functionUses: 0
    functionsReached:
    - ref
    linkageType: ''
    returnType: base_t
    signature: base_t operator++(int)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ref
      Src: /src/pdns/pdns/dnsdistdist/stat_t.hh:57,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 56
    functionDepth: 0
    functionLinenumber: 56
    functionLinenumberEnd: 58
    functionName: operator++()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/stat_t.hh
    functionUses: 0
    functionsReached:
    - ref
    linkageType: ''
    returnType: base_t
    signature: base_t operator++()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ref
      Src: /src/pdns/pdns/dnsdistdist/stat_t.hh:60,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 59
    functionDepth: 0
    functionLinenumber: 59
    functionLinenumberEnd: 61
    functionName: operator--(int)
    functionSourceFile: /src/pdns/pdns/dnsdistdist/stat_t.hh
    functionUses: 0
    functionsReached:
    - ref
    linkageType: ''
    returnType: base_t
    signature: base_t operator--(int)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ref
      Src: /src/pdns/pdns/dnsdistdist/stat_t.hh:63,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 62
    functionDepth: 0
    functionLinenumber: 62
    functionLinenumberEnd: 64
    functionName: operator--()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/stat_t.hh
    functionUses: 0
    functionsReached:
    - ref
    linkageType: ''
    returnType: base_t
    signature: base_t operator--()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ref
      Src: /src/pdns/pdns/dnsdistdist/stat_t.hh:66,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - arg
    argTypes:
    - base_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 65
    functionDepth: 0
    functionLinenumber: 65
    functionLinenumberEnd: 67
    functionName: operator+=(base_t arg)
    functionSourceFile: /src/pdns/pdns/dnsdistdist/stat_t.hh
    functionUses: 0
    functionsReached:
    - ref
    linkageType: ''
    returnType: base_t
    signature: base_t operator+=(base_t arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ref
      Src: /src/pdns/pdns/dnsdistdist/stat_t.hh:69,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - arg
    argTypes:
    - base_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 68
    functionDepth: 0
    functionLinenumber: 68
    functionLinenumberEnd: 70
    functionName: operator-=(base_t arg)
    functionSourceFile: /src/pdns/pdns/dnsdistdist/stat_t.hh
    functionUses: 0
    functionsReached:
    - ref
    linkageType: ''
    returnType: base_t
    signature: base_t operator-=(base_t arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ref
      Src: /src/pdns/pdns/dnsdistdist/stat_t.hh:72,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 71
    functionDepth: 0
    functionLinenumber: 71
    functionLinenumberEnd: 73
    functionName: pdns::stat_t_trait::load
    functionSourceFile: /src/pdns/pdns/dnsdistdist/stat_t.hh
    functionUses: 0
    functionsReached:
    - ref
    linkageType: ''
    returnType: base_t
    signature: base_t load() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ref
      Src: /src/pdns/pdns/dnsdistdist/stat_t.hh:75,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - value
    argTypes:
    - base_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 74
    functionDepth: 0
    functionLinenumber: 74
    functionLinenumberEnd: 76
    functionName: pdns::stat_t_trait::store
    functionSourceFile: /src/pdns/pdns/dnsdistdist/stat_t.hh
    functionUses: 10
    functionsReached:
    - ref
    linkageType: ''
    returnType: void
    signature: void store(base_t value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ref
      Src: /src/pdns/pdns/dnsdistdist/stat_t.hh:78,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 77
    functionDepth: 0
    functionLinenumber: 77
    functionLinenumberEnd: 79
    functionName: operator base_t() const
    functionSourceFile: /src/pdns/pdns/dnsdistdist/stat_t.hh
    functionUses: 0
    functionsReached:
    - ref
    linkageType: ''
    returnType: void
    signature: void operator base_t() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: reinterpret_cast<atomic_t *>
      Src: /src/pdns/pdns/dnsdistdist/stat_t.hh:83,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 82
    functionDepth: 0
    functionLinenumber: 82
    functionLinenumberEnd: 84
    functionName: '& ref()'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/stat_t.hh
    functionUses: 0
    functionsReached:
    - reinterpret_cast<atomic_t *>
    linkageType: ''
    returnType: atomic_t
    signature: atomic_t & ref()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: reinterpret_cast<const atomic_t *>
      Src: /src/pdns/pdns/dnsdistdist/stat_t.hh:86,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 85
    functionDepth: 0
    functionLinenumber: 85
    functionLinenumberEnd: 87
    functionName: '& ref() const'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/stat_t.hh
    functionUses: 0
    functionsReached:
    - reinterpret_cast<const atomic_t *>
    linkageType: ''
    returnType: atomic_t
    signature: atomic_t & ref() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: base_t
      Src: /src/pdns/pdns/dnsdistdist/stat_t.hh:36,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 36
    functionDepth: 0
    functionLinenumber: 36
    functionLinenumberEnd: 37
    functionName: pdns::stat_t_trait::stat_t_trait
    functionSourceFile: /src/pdns/pdns/dnsdistdist/stat_t.hh
    functionUses: 0
    functionsReached:
    - base_t
    linkageType: ''
    returnType: void
    signature: void stat_t_trait()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: atomic_t::atomic_t
      Src: /src/pdns/pdns/dnsdistdist/stat_t.hh:40,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - value
    argTypes:
    - base_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 38
    functionDepth: 0
    functionLinenumber: 38
    functionLinenumberEnd: 41
    functionName: pdns::stat_t_trait::stat_t_trait
    functionSourceFile: /src/pdns/pdns/dnsdistdist/stat_t.hh
    functionUses: 0
    functionsReached:
    - atomic_t::atomic_t
    linkageType: ''
    returnType: void
    signature: void stat_t_trait(const base_t value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ref
      Src: /src/pdns/pdns/dnsdistdist/stat_t.hh:43,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ' value'
    argTypes:
    - base_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 42
    functionDepth: 0
    functionLinenumber: 42
    functionLinenumberEnd: 45
    functionName: '& operator=(const base_t& value)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/stat_t.hh
    functionUses: 0
    functionsReached:
    - ref
    linkageType: ''
    returnType: stat_t_trait
    signature: stat_t_trait & operator=(const base_t& value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ref
      Src: /src/pdns/pdns/dnsdistdist/stat_t.hh:47,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 46
    functionDepth: 0
    functionLinenumber: 46
    functionLinenumberEnd: 48
    functionName: ~stat_t_trait()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/stat_t.hh
    functionUses: 0
    functionsReached:
    - ref
    linkageType: ''
    returnType: void
    signature: void ~stat_t_trait()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 49
    functionDepth: 0
    functionLinenumber: 49
    functionLinenumberEnd: 49
    functionName: pdns::stat_t_trait::stat_t_trait
    functionSourceFile: /src/pdns/pdns/dnsdistdist/stat_t.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void stat_t_trait(stat_t_trait&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 50
    functionDepth: 0
    functionLinenumber: 50
    functionLinenumberEnd: 50
    functionName: '& operator=(const stat_t_trait&)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/stat_t.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: stat_t_trait
    signature: stat_t_trait & operator=(const stat_t_trait&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 51
    functionDepth: 0
    functionLinenumber: 51
    functionLinenumberEnd: 51
    functionName: '& operator=(stat_t_trait&&)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/stat_t.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: stat_t_trait
    signature: stat_t_trait & operator=(stat_t_trait&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 52
    functionDepth: 0
    functionLinenumber: 52
    functionLinenumberEnd: 52
    functionName: pdns::stat_t_trait::stat_t_trait
    functionSourceFile: /src/pdns/pdns/dnsdistdist/stat_t.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void stat_t_trait(const stat_t_trait&)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ref
      Src: /src/pdns/pdns/dnsdistdist/stat_t.hh:54,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 53
    functionDepth: 0
    functionLinenumber: 53
    functionLinenumberEnd: 55
    functionName: operator++(int)
    functionSourceFile: /src/pdns/pdns/dnsdistdist/stat_t.hh
    functionUses: 0
    functionsReached:
    - ref
    linkageType: ''
    returnType: base_t
    signature: base_t operator++(int)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ref
      Src: /src/pdns/pdns/dnsdistdist/stat_t.hh:57,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 56
    functionDepth: 0
    functionLinenumber: 56
    functionLinenumberEnd: 58
    functionName: operator++()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/stat_t.hh
    functionUses: 0
    functionsReached:
    - ref
    linkageType: ''
    returnType: base_t
    signature: base_t operator++()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ref
      Src: /src/pdns/pdns/dnsdistdist/stat_t.hh:60,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 59
    functionDepth: 0
    functionLinenumber: 59
    functionLinenumberEnd: 61
    functionName: operator--(int)
    functionSourceFile: /src/pdns/pdns/dnsdistdist/stat_t.hh
    functionUses: 0
    functionsReached:
    - ref
    linkageType: ''
    returnType: base_t
    signature: base_t operator--(int)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ref
      Src: /src/pdns/pdns/dnsdistdist/stat_t.hh:63,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 62
    functionDepth: 0
    functionLinenumber: 62
    functionLinenumberEnd: 64
    functionName: operator--()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/stat_t.hh
    functionUses: 0
    functionsReached:
    - ref
    linkageType: ''
    returnType: base_t
    signature: base_t operator--()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ref
      Src: /src/pdns/pdns/dnsdistdist/stat_t.hh:66,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - arg
    argTypes:
    - base_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 65
    functionDepth: 0
    functionLinenumber: 65
    functionLinenumberEnd: 67
    functionName: operator+=(base_t arg)
    functionSourceFile: /src/pdns/pdns/dnsdistdist/stat_t.hh
    functionUses: 0
    functionsReached:
    - ref
    linkageType: ''
    returnType: base_t
    signature: base_t operator+=(base_t arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ref
      Src: /src/pdns/pdns/dnsdistdist/stat_t.hh:69,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - arg
    argTypes:
    - base_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 68
    functionDepth: 0
    functionLinenumber: 68
    functionLinenumberEnd: 70
    functionName: operator-=(base_t arg)
    functionSourceFile: /src/pdns/pdns/dnsdistdist/stat_t.hh
    functionUses: 0
    functionsReached:
    - ref
    linkageType: ''
    returnType: base_t
    signature: base_t operator-=(base_t arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ref
      Src: /src/pdns/pdns/dnsdistdist/stat_t.hh:72,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 71
    functionDepth: 0
    functionLinenumber: 71
    functionLinenumberEnd: 73
    functionName: pdns::stat_t_trait::load
    functionSourceFile: /src/pdns/pdns/dnsdistdist/stat_t.hh
    functionUses: 0
    functionsReached:
    - ref
    linkageType: ''
    returnType: base_t
    signature: base_t load() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ref
      Src: /src/pdns/pdns/dnsdistdist/stat_t.hh:75,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - value
    argTypes:
    - base_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 74
    functionDepth: 0
    functionLinenumber: 74
    functionLinenumberEnd: 76
    functionName: pdns::stat_t_trait::store
    functionSourceFile: /src/pdns/pdns/dnsdistdist/stat_t.hh
    functionUses: 10
    functionsReached:
    - ref
    linkageType: ''
    returnType: void
    signature: void store(base_t value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ref
      Src: /src/pdns/pdns/dnsdistdist/stat_t.hh:78,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 77
    functionDepth: 0
    functionLinenumber: 77
    functionLinenumberEnd: 79
    functionName: operator base_t() const
    functionSourceFile: /src/pdns/pdns/dnsdistdist/stat_t.hh
    functionUses: 0
    functionsReached:
    - ref
    linkageType: ''
    returnType: void
    signature: void operator base_t() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: reinterpret_cast<atomic_t *>
      Src: /src/pdns/pdns/dnsdistdist/stat_t.hh:83,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 82
    functionDepth: 0
    functionLinenumber: 82
    functionLinenumberEnd: 84
    functionName: '& ref()'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/stat_t.hh
    functionUses: 0
    functionsReached:
    - reinterpret_cast<atomic_t *>
    linkageType: ''
    returnType: atomic_t
    signature: atomic_t & ref()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: reinterpret_cast<const atomic_t *>
      Src: /src/pdns/pdns/dnsdistdist/stat_t.hh:86,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 85
    functionDepth: 0
    functionLinenumber: 85
    functionLinenumberEnd: 87
    functionName: '& ref() const'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/stat_t.hh
    functionUses: 0
    functionsReached:
    - reinterpret_cast<const atomic_t *>
    linkageType: ''
    returnType: atomic_t
    signature: atomic_t & ref() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - maxBackOff
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 30
      start: 27
    functionDepth: 0
    functionLinenumber: 27
    functionLinenumberEnd: 30
    functionName: ExponentialBackOffTimer::ExponentialBackOffTimer
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-backoff.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ExponentialBackOffTimer(unsigned int maxBackOff)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::min
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-backoff.hh:37,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - consecutiveFailures
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 32
    functionDepth: 0
    functionLinenumber: 32
    functionLinenumberEnd: 40
    functionName: ExponentialBackOffTimer::get
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-backoff.hh
    functionUses: 4
    functionsReached:
    - std::min
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int get(size_t consecutiveFailures) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 28
    argCount: 3
    argNames:
    - ' a'
    - ' b'
    - ' c'
    argTypes:
    - uint32_t
    - uint32_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 27
    functionDepth: 0
    functionLinenumber: 27
    functionLinenumberEnd: 56
    functionName: burtlemix
    functionSourceFile: /src/pdns/pdns/dnsdistdist/burtle.hh
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void burtlemix(uint32_t& a, uint32_t& b, uint32_t& c)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: burtlemix
      Src: /src/pdns/pdns/dnsdistdist/burtle.hh:72,1
    - Dst: burtlemix
      Src: /src/pdns/pdns/dnsdistdist/burtle.hh:115,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 39
    argCount: 3
    argNames:
    - k
    - length
    - initval
    argTypes:
    - unsigned char*
    - uint32_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 118
      start: 58
    functionDepth: 0
    functionLinenumber: 58
    functionLinenumberEnd: 118
    functionName: burtle
    functionSourceFile: /src/pdns/pdns/dnsdistdist/burtle.hh
    functionUses: 21
    functionsReached:
    - burtlemix
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t burtle(const unsigned char* k, uint32_t length, uint32_t initval)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: dns_tolower
      Src: /src/pdns/pdns/dnsdistdist/burtle.hh:131,1
    - Dst: dns_tolower
      Src: /src/pdns/pdns/dnsdistdist/burtle.hh:131,1
    - Dst: dns_tolower
      Src: /src/pdns/pdns/dnsdistdist/burtle.hh:131,1
    - Dst: dns_tolower
      Src: /src/pdns/pdns/dnsdistdist/burtle.hh:131,1
    - Dst: dns_tolower
      Src: /src/pdns/pdns/dnsdistdist/burtle.hh:132,1
    - Dst: dns_tolower
      Src: /src/pdns/pdns/dnsdistdist/burtle.hh:132,1
    - Dst: dns_tolower
      Src: /src/pdns/pdns/dnsdistdist/burtle.hh:132,1
    - Dst: dns_tolower
      Src: /src/pdns/pdns/dnsdistdist/burtle.hh:132,1
    - Dst: dns_tolower
      Src: /src/pdns/pdns/dnsdistdist/burtle.hh:133,1
    - Dst: dns_tolower
      Src: /src/pdns/pdns/dnsdistdist/burtle.hh:133,1
    - Dst: dns_tolower
      Src: /src/pdns/pdns/dnsdistdist/burtle.hh:133,1
    - Dst: dns_tolower
      Src: /src/pdns/pdns/dnsdistdist/burtle.hh:133,1
    - Dst: burtlemix
      Src: /src/pdns/pdns/dnsdistdist/burtle.hh:134,1
    - Dst: dns_tolower
      Src: /src/pdns/pdns/dnsdistdist/burtle.hh:143,1
    - Dst: dns_tolower
      Src: /src/pdns/pdns/dnsdistdist/burtle.hh:146,1
    - Dst: dns_tolower
      Src: /src/pdns/pdns/dnsdistdist/burtle.hh:149,1
    - Dst: dns_tolower
      Src: /src/pdns/pdns/dnsdistdist/burtle.hh:153,1
    - Dst: dns_tolower
      Src: /src/pdns/pdns/dnsdistdist/burtle.hh:156,1
    - Dst: dns_tolower
      Src: /src/pdns/pdns/dnsdistdist/burtle.hh:159,1
    - Dst: dns_tolower
      Src: /src/pdns/pdns/dnsdistdist/burtle.hh:162,1
    - Dst: dns_tolower
      Src: /src/pdns/pdns/dnsdistdist/burtle.hh:165,1
    - Dst: dns_tolower
      Src: /src/pdns/pdns/dnsdistdist/burtle.hh:168,1
    - Dst: dns_tolower
      Src: /src/pdns/pdns/dnsdistdist/burtle.hh:171,1
    - Dst: dns_tolower
      Src: /src/pdns/pdns/dnsdistdist/burtle.hh:174,1
    - Dst: burtlemix
      Src: /src/pdns/pdns/dnsdistdist/burtle.hh:177,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 39
    argCount: 3
    argNames:
    - k
    - length
    - initval
    argTypes:
    - unsigned char*
    - uint32_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 180
      start: 120
    functionDepth: 0
    functionLinenumber: 120
    functionLinenumberEnd: 180
    functionName: burtleCI
    functionSourceFile: /src/pdns/pdns/dnsdistdist/burtle.hh
    functionUses: 13
    functionsReached:
    - burtlemix
    - dns_tolower
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t burtleCI(const unsigned char* k, uint32_t length, uint32_t
      initval)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: burtleCI
      Src: /src/pdns/pdns/dnsdistdist/burtle.hh:185,1
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/dnsdistdist/burtle.hh:185,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/burtle.hh:185,1
    - Dst: length
      Src: /src/pdns/pdns/dnsdistdist/burtle.hh:185,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' k'
    - initval
    argTypes:
    - T
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 186
      start: 183
    functionDepth: 0
    functionLinenumber: 183
    functionLinenumberEnd: 186
    functionName: burtleCI
    functionSourceFile: /src/pdns/pdns/dnsdistdist/burtle.hh
    functionUses: 14
    functionsReached:
    - burtleCI
    - length
    - reinterpret_cast<const unsigned char*>
    - data
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t burtleCI(const T& k, uint32_t initval)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: getOptionalValue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-protobuf.cc:45,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - ' params'
    - ' options'
    argTypes:
    - std::optional<LuaAssociativeTable<unsigned int>>
    - LuaAssociativeTable<unsigned int>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 36
    functionDepth: 2
    functionLinenumber: 36
    functionLinenumberEnd: 47
    functionName: parseFSTRMOptions
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-protobuf.cc
    functionUses: 0
    functionsReached:
    - getOptionalValue
    linkageType: ''
    returnType: void
    signature: void parseFSTRMOptions(std::optional<LuaAssociativeTable<unsigned int>>&
      params, LuaAssociativeTable<unsigned int>& options)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-protobuf.cc:53,1
    - Dst: encryptCA
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-protobuf.cc:54,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-protobuf.cc:56,1
    - Dst: decryptCA
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-protobuf.cc:57,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-protobuf.cc:60,1
    - Dst: makeIPCipherKey
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-protobuf.cc:61,1
    - Dst: addTag
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-protobuf.cc:67,1
    - Dst: addTag
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-protobuf.cc:71,1
    - Dst: setType
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-protobuf.cc:77,1
    - Dst: setQueryTime
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-protobuf.cc:78,1
    - Dst: addRR
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-protobuf.cc:82,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-protobuf.cc:82,1
    - Dst: setEDNSSubnet
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-protobuf.cc:84,1
    - Dst: setQuestion
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-protobuf.cc:85,1
    - Dst: setBytes
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-protobuf.cc:86,1
    - Dst: setTime
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-protobuf.cc:87,1
    - Dst: setQueryTime
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-protobuf.cc:88,1
    - Dst: setResponseCode
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-protobuf.cc:89,1
    - Dst: setRequestor
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-protobuf.cc:92,1
    - Dst: setRequestorPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-protobuf.cc:94,1
    - Dst: setRequestor
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-protobuf.cc:98,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-protobuf.cc:98,1
    - Dst: setRequestorPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-protobuf.cc:100,1
    - Dst: setResponder
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-protobuf.cc:104,1
    - Dst: setResponderPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-protobuf.cc:106,1
    - Dst: setResponder
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-protobuf.cc:110,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-protobuf.cc:110,1
    - Dst: setResponderPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-protobuf.cc:112,1
    - Dst: setServerIdentity
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-protobuf.cc:116,1
    - Dst: setExtra
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-protobuf.cc:120,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-protobuf.cc:124,1
    - Dst: std::shared_ptr<RemoteLoggerInterface>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-protobuf.cc:126,1
    - Dst: std::vector::reserve
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-protobuf.cc:131,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-protobuf.cc:133,1
    - Dst: std::make_shared<RemoteLogger>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-protobuf.cc:133,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-protobuf.cc:133,1
    - Dst: std::shared_ptr<RemoteLoggerInterface>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-protobuf.cc:135,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-protobuf.cc:135,1
    - Dst: RemoteLoggerPool::RemoteLoggerPool
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-protobuf.cc:135,1
    - Dst: std::shared_ptr<RemoteLoggerInterface>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-protobuf.cc:138,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-protobuf.cc:138,1
    - Dst: RemoteLogger::RemoteLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-protobuf.cc:138,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-protobuf.cc:141,1
    - Dst: std::shared_ptr<RemoteLoggerInterface>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-protobuf.cc:144,1
    - Dst: parseFSTRMOptions
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-protobuf.cc:148,1
    - Dst: checkAllParametersConsumed
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-protobuf.cc:149,1
    - Dst: LuaAssociativeTable::find
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-protobuf.cc:150,1
    - Dst: LuaAssociativeTable::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-protobuf.cc:151,1
    - Dst: LuaAssociativeTable::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-protobuf.cc:152,1
    - Dst: LuaAssociativeTable::erase
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-protobuf.cc:153,1
    - Dst: std::vector::reserve
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-protobuf.cc:157,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-protobuf.cc:159,1
    - Dst: std::make_shared<FrameStreamLogger>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-protobuf.cc:159,1
    - Dst: std::shared_ptr<RemoteLoggerInterface>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-protobuf.cc:161,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-protobuf.cc:161,1
    - Dst: RemoteLoggerPool::RemoteLoggerPool
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-protobuf.cc:161,1
    - Dst: std::shared_ptr<RemoteLoggerInterface>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-protobuf.cc:164,1
    - Dst: FrameStreamLogger::FrameStreamLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-protobuf.cc:164,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-protobuf.cc:166,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-protobuf.cc:170,1
    - Dst: std::shared_ptr<RemoteLoggerInterface>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-protobuf.cc:173,1
    - Dst: parseFSTRMOptions
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-protobuf.cc:177,1
    - Dst: checkAllParametersConsumed
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-protobuf.cc:178,1
    - Dst: LuaAssociativeTable::find
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-protobuf.cc:179,1
    - Dst: LuaAssociativeTable::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-protobuf.cc:180,1
    - Dst: LuaAssociativeTable::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-protobuf.cc:181,1
    - Dst: LuaAssociativeTable::erase
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-protobuf.cc:182,1
    - Dst: std::vector::reserve
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-protobuf.cc:186,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-protobuf.cc:188,1
    - Dst: std::make_shared<FrameStreamLogger>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-protobuf.cc:188,1
    - Dst: std::shared_ptr<RemoteLoggerInterface>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-protobuf.cc:190,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-protobuf.cc:190,1
    - Dst: RemoteLoggerPool::RemoteLoggerPool
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-protobuf.cc:190,1
    - Dst: std::shared_ptr<RemoteLoggerInterface>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-protobuf.cc:193,1
    - Dst: FrameStreamLogger::FrameStreamLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-protobuf.cc:193,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-protobuf.cc:195,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-protobuf.cc:199,1
    - Dst: toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-protobuf.cc:201,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-protobuf.cc:203,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 129
    argCount: 3
    argNames:
    - ' luaCtx'
    - client
    - configCheck
    argTypes:
    - LuaContext
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 205
      start: 50
    functionDepth: 3
    functionLinenumber: 50
    functionLinenumberEnd: 205
    functionName: setupLuaBindingsProtoBuf
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-protobuf.cc
    functionUses: 2
    functionsReached:
    - RemoteLogger::RemoteLogger
    - toString
    - setQueryTime
    - addRR
    - std::shared_ptr<RemoteLoggerInterface>
    - std::string
    - setBytes
    - encryptCA
    - std::vector::push_back
    - setResponder
    - LuaAssociativeTable::end
    - setTime
    - writeFunction
    - parseFSTRMOptions
    - LuaAssociativeTable::erase
    - FrameStreamLogger::FrameStreamLogger
    - setQuestion
    - setResponderPort
    - setType
    - setServerIdentity
    - std::runtime_error
    - setRequestorPort
    - DNSName
    - std::vector::reserve
    - setResponseCode
    - setRequestor
    - LuaAssociativeTable::find
    - setExtra
    - setEDNSSubnet
    - ComboAddress
    - std::move
    - makeIPCipherKey
    - RemoteLoggerPool::RemoteLoggerPool
    - checkAllParametersConsumed
    - std::make_shared<RemoteLogger>
    - std::make_shared<FrameStreamLogger>
    - decryptCA
    - addTag
    linkageType: ''
    returnType: void
    signature: void setupLuaBindingsProtoBuf(LuaContext& luaCtx, bool client, bool
      configCheck)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 209
      start: 207
    functionDepth: 0
    functionLinenumber: 207
    functionLinenumberEnd: 209
    functionName: setupLuaBindingsProtoBuf
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-protobuf.cc
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setupLuaBindingsProtoBuf(LuaContext&, bool, bool)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' ctx'
    argTypes:
    - std::shared_ptr<DNSCryptContext>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 38
    functionDepth: 0
    functionLinenumber: 38
    functionLinenumberEnd: 41
    functionName: DNSCryptQuery::DNSCryptQuery
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnscrypt.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void DNSCryptQuery(const std::shared_ptr<DNSCryptContext>& ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ntohl
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.hh:123,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 124
      start: 121
    functionDepth: 0
    functionLinenumber: 121
    functionLinenumberEnd: 124
    functionName: DNSCryptCert::getSerial
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnscrypt.hh
    functionUses: 3
    functionsReached:
    - ntohl
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t getSerial() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 125
    functionDepth: 0
    functionLinenumber: 125
    functionLinenumberEnd: 128
    functionName: DNSCryptCert::getTSStart
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnscrypt.hh
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t getTSStart() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 132
      start: 129
    functionDepth: 0
    functionLinenumber: 129
    functionLinenumberEnd: 132
    functionName: DNSCryptCert::getTSEnd
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnscrypt.hh
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t getTSEnd() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ntohl
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.hh:136,1
    - Dst: DNSCryptCert::getTSStart
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.hh:136,1
    - Dst: static_cast<uint32_t>
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.hh:136,1
    - Dst: static_cast<uint32_t>
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.hh:136,1
    - Dst: ntohl
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.hh:136,1
    - Dst: DNSCryptCert::getTSEnd
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.hh:136,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - now
    argTypes:
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 137
      start: 133
    functionDepth: 1
    functionLinenumber: 133
    functionLinenumberEnd: 137
    functionName: DNSCryptCert::isValid
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnscrypt.hh
    functionUses: 0
    functionsReached:
    - ntohl
    - DNSCryptCert::getTSEnd
    - DNSCryptCert::getTSStart
    - static_cast<uint32_t>
    linkageType: ''
    returnType: bool
    signature: bool isValid(time_t now) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.hh:209,1
    - Dst: memset
      Src: /src/pdns/pdns/dnsdistdist/dnscrypt.hh:211,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ' ctx'
    argTypes:
    - std::shared_ptr<DNSCryptContext>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 213
      start: 206
    functionDepth: 0
    functionLinenumber: 206
    functionLinenumberEnd: 213
    functionName: DNSCryptQuery::DNSCryptQuery
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnscrypt.hh
    functionUses: 0
    functionsReached:
    - memset
    linkageType: ''
    returnType: void
    signature: void DNSCryptQuery(const std::shared_ptr<DNSCryptContext>& ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 220
      start: 217
    functionDepth: 0
    functionLinenumber: 217
    functionLinenumberEnd: 220
    functionName: DNSCryptQuery::isValid
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnscrypt.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool isValid() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 225
      start: 222
    functionDepth: 0
    functionLinenumber: 222
    functionLinenumberEnd: 225
    functionName: '& getQName() const'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnscrypt.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: DNSName
    signature: DNSName & getQName() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 230
      start: 227
    functionDepth: 0
    functionLinenumber: 227
    functionLinenumberEnd: 230
    functionName: DNSCryptQuery::getID
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnscrypt.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t getID() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 235
      start: 232
    functionDepth: 0
    functionLinenumber: 232
    functionLinenumberEnd: 235
    functionName: '& getClientMagic() const'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnscrypt.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: DNSCryptClientMagicType
    signature: DNSCryptClientMagicType & getClientMagic() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 240
      start: 237
    functionDepth: 0
    functionLinenumber: 237
    functionLinenumberEnd: 240
    functionName: DNSCryptQuery::isEncrypted
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnscrypt.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool isEncrypted() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' pair'
    argTypes:
    - std::shared_ptr<DNSCryptCertificatePair>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 245
      start: 242
    functionDepth: 0
    functionLinenumber: 242
    functionLinenumberEnd: 245
    functionName: DNSCryptQuery::setCertificatePair
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnscrypt.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setCertificatePair(const std::shared_ptr<DNSCryptCertificatePair>&
      pair)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 315
      start: 315
    functionDepth: 0
    functionLinenumber: 315
    functionLinenumberEnd: 315
    functionName: '& getProviderName() const'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnscrypt.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: DNSName
    signature: DNSName & getProviderName() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 37
    functionDepth: 0
    functionLinenumber: 37
    functionLinenumberEnd: 37
    functionName: Logr::Loggable
    functionSourceFile: /src/pdns/pdns/dnsdistdist/logr.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Loggable()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 38
    functionDepth: 0
    functionLinenumber: 38
    functionLinenumberEnd: 38
    functionName: Logr::Loggable
    functionSourceFile: /src/pdns/pdns/dnsdistdist/logr.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Loggable(const Loggable&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 39
      start: 39
    functionDepth: 0
    functionLinenumber: 39
    functionLinenumberEnd: 39
    functionName: Logr::Loggable
    functionSourceFile: /src/pdns/pdns/dnsdistdist/logr.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Loggable(Loggable&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 40
    functionDepth: 0
    functionLinenumber: 40
    functionLinenumberEnd: 40
    functionName: '& operator=(const Loggable&)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/logr.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Loggable
    signature: Loggable & operator=(const Loggable&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 41
    functionDepth: 0
    functionLinenumber: 41
    functionLinenumberEnd: 41
    functionName: '& operator=(Loggable&&)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/logr.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Loggable
    signature: Loggable & operator=(Loggable&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 42
    functionDepth: 0
    functionLinenumber: 42
    functionLinenumberEnd: 42
    functionName: ~Loggable()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/logr.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~Loggable()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 69
    functionDepth: 0
    functionLinenumber: 69
    functionLinenumberEnd: 69
    functionName: Logr::Logger::Logger
    functionSourceFile: /src/pdns/pdns/dnsdistdist/logr.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Logger()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 70
    functionDepth: 0
    functionLinenumber: 70
    functionLinenumberEnd: 70
    functionName: Logr::Logger::Logger
    functionSourceFile: /src/pdns/pdns/dnsdistdist/logr.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Logger(const Logger&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 71
    functionDepth: 0
    functionLinenumber: 71
    functionLinenumberEnd: 71
    functionName: Logr::Logger::Logger
    functionSourceFile: /src/pdns/pdns/dnsdistdist/logr.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Logger(Logger&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 72
    functionDepth: 0
    functionLinenumber: 72
    functionLinenumberEnd: 72
    functionName: '& operator=(const Logger&)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/logr.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Logger
    signature: Logger & operator=(const Logger&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 73
    functionDepth: 0
    functionLinenumber: 73
    functionLinenumberEnd: 73
    functionName: '& operator=(Logger&&)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/logr.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Logger
    signature: Logger & operator=(Logger&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 74
    functionDepth: 0
    functionLinenumber: 74
    functionLinenumberEnd: 74
    functionName: ~Logger()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/logr.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~Logger()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<unsigned int>
      Src: /src/pdns/pdns/dnsdistdist/logr.hh:79,1
    - Dst: std::array::size
      Src: /src/pdns/pdns/dnsdistdist/logr.hh:80,1
    - Dst: std::array::at
      Src: /src/pdns/pdns/dnsdistdist/logr.hh:83,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - arg
    argTypes:
    - Priority
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 76
    functionDepth: 0
    functionLinenumber: 76
    functionLinenumberEnd: 84
    functionName: Logr::Logger::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/logr.hh
    functionUses: 5
    functionsReached:
    - static_cast<unsigned int>
    - std::array::at
    - std::array::size
    linkageType: ''
    returnType: std::string
    signature: std::string toString(Priority arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Logr::Logger::withValues
      Src: /src/pdns/pdns/dnsdistdist/logr.hh:96,1
    - Dst: auto::info
      Src: /src/pdns/pdns/dnsdistdist/logr.hh:97,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - prio
    - ' msg'
    - ' key'
    - ' value'
    argTypes:
    - Priority
    - std::string
    - std::string
    - Loggable
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 94
    functionDepth: 0
    functionLinenumber: 94
    functionLinenumberEnd: 98
    functionName: Logr::Logger::info
    functionSourceFile: /src/pdns/pdns/dnsdistdist/logr.hh
    functionUses: 0
    functionsReached:
    - auto::info
    - Logr::Logger::withValues
    linkageType: ''
    returnType: void
    signature: void info(Priority prio, const std::string& msg, const std::string&
      key, const Loggable& value, const Args&... args) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Logr::Logger::withValues
      Src: /src/pdns/pdns/dnsdistdist/logr.hh:114,1
    - Dst: auto::error
      Src: /src/pdns/pdns/dnsdistdist/logr.hh:115,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - prio
    - ' err'
    - ' msg'
    - ' key'
    - ' value'
    argTypes:
    - Priority
    - std::string
    - std::string
    - std::string
    - Loggable
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 112
    functionDepth: 0
    functionLinenumber: 112
    functionLinenumberEnd: 116
    functionName: Logr::Logger::error
    functionSourceFile: /src/pdns/pdns/dnsdistdist/logr.hh
    functionUses: 0
    functionsReached:
    - auto::error
    - Logr::Logger::withValues
    linkageType: ''
    returnType: void
    signature: void error(Priority prio, const std::string& err, const std::string&
      msg, const std::string& key, const Loggable& value, const Args&... args) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Logr::Logger::withValues
      Src: /src/pdns/pdns/dnsdistdist/logr.hh:121,1
    - Dst: auto::error
      Src: /src/pdns/pdns/dnsdistdist/logr.hh:122,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - prio
    - err
    - ' msg'
    - ' key'
    - ' value'
    argTypes:
    - Priority
    - int
    - std::string
    - std::string
    - Loggable
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 119
    functionDepth: 0
    functionLinenumber: 119
    functionLinenumberEnd: 123
    functionName: Logr::Logger::error
    functionSourceFile: /src/pdns/pdns/dnsdistdist/logr.hh
    functionUses: 0
    functionsReached:
    - auto::error
    - Logr::Logger::withValues
    linkageType: ''
    returnType: void
    signature: void error(Priority prio, int err, const std::string& msg, const std::string&
      key, const Loggable& value, const Args&... args) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Logr::Logger::mapArguments
      Src: /src/pdns/pdns/dnsdistdist/logr.hh:135,1
    - Dst: Logr::Logger::withValues
      Src: /src/pdns/pdns/dnsdistdist/logr.hh:136,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ' key'
    - ' value'
    argTypes:
    - std::string
    - Loggable
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 137
      start: 132
    functionDepth: 0
    functionLinenumber: 132
    functionLinenumberEnd: 137
    functionName: Logr::Logger::withValues
    functionSourceFile: /src/pdns/pdns/dnsdistdist/logr.hh
    functionUses: 12
    functionsReached:
    - Logr::Logger::mapArguments
    - Logr::Logger::withValues
    linkageType: ''
    returnType: std::shared_ptr<Logger>
    signature: std::shared_ptr<Logger> withValues(const std::string& key, const Loggable&
      value, const Args&... args) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: emplace
      Src: /src/pdns/pdns/dnsdistdist/logr.hh:154,1
    - Dst: to_string
      Src: /src/pdns/pdns/dnsdistdist/logr.hh:154,1
    - Dst: Logr::Logger::mapArguments
      Src: /src/pdns/pdns/dnsdistdist/logr.hh:155,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - ' map'
    - ' key'
    - ' value'
    argTypes:
    - std::map<std::string, std::string>
    - std::string
    - Loggable
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 156
      start: 152
    functionDepth: 0
    functionLinenumber: 152
    functionLinenumberEnd: 156
    functionName: Logr::Logger::mapArguments
    functionSourceFile: /src/pdns/pdns/dnsdistdist/logr.hh
    functionUses: 6
    functionsReached:
    - Logr::Logger::mapArguments
    - emplace
    - to_string
    linkageType: ''
    returnType: void
    signature: void mapArguments(std::map<std::string, std::string>& map, const std::string&
      key, const Loggable& value, const Args&... args) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 158
      start: 158
    functionDepth: 0
    functionLinenumber: 158
    functionLinenumberEnd: 158
    functionName: Logr::Logger::mapArguments
    functionSourceFile: /src/pdns/pdns/dnsdistdist/logr.hh
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void mapArguments(std::map<std::string, std::string>& /* map */) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 37
    functionDepth: 0
    functionLinenumber: 37
    functionLinenumberEnd: 37
    functionName: Logr::Loggable
    functionSourceFile: /src/pdns/pdns/dnsdistdist/logr.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Loggable()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 38
    functionDepth: 0
    functionLinenumber: 38
    functionLinenumberEnd: 38
    functionName: Logr::Loggable
    functionSourceFile: /src/pdns/pdns/dnsdistdist/logr.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Loggable(const Loggable&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 39
      start: 39
    functionDepth: 0
    functionLinenumber: 39
    functionLinenumberEnd: 39
    functionName: Logr::Loggable
    functionSourceFile: /src/pdns/pdns/dnsdistdist/logr.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Loggable(Loggable&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 40
    functionDepth: 0
    functionLinenumber: 40
    functionLinenumberEnd: 40
    functionName: '& operator=(const Loggable&)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/logr.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Loggable
    signature: Loggable & operator=(const Loggable&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 41
    functionDepth: 0
    functionLinenumber: 41
    functionLinenumberEnd: 41
    functionName: '& operator=(Loggable&&)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/logr.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Loggable
    signature: Loggable & operator=(Loggable&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 42
    functionDepth: 0
    functionLinenumber: 42
    functionLinenumberEnd: 42
    functionName: ~Loggable()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/logr.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~Loggable()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 69
    functionDepth: 0
    functionLinenumber: 69
    functionLinenumberEnd: 69
    functionName: Logr::Logger::Logger
    functionSourceFile: /src/pdns/pdns/dnsdistdist/logr.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Logger()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 70
    functionDepth: 0
    functionLinenumber: 70
    functionLinenumberEnd: 70
    functionName: Logr::Logger::Logger
    functionSourceFile: /src/pdns/pdns/dnsdistdist/logr.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Logger(const Logger&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 71
    functionDepth: 0
    functionLinenumber: 71
    functionLinenumberEnd: 71
    functionName: Logr::Logger::Logger
    functionSourceFile: /src/pdns/pdns/dnsdistdist/logr.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Logger(Logger&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 72
    functionDepth: 0
    functionLinenumber: 72
    functionLinenumberEnd: 72
    functionName: '& operator=(const Logger&)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/logr.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Logger
    signature: Logger & operator=(const Logger&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 73
    functionDepth: 0
    functionLinenumber: 73
    functionLinenumberEnd: 73
    functionName: '& operator=(Logger&&)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/logr.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Logger
    signature: Logger & operator=(Logger&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 74
    functionDepth: 0
    functionLinenumber: 74
    functionLinenumberEnd: 74
    functionName: ~Logger()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/logr.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~Logger()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<unsigned int>
      Src: /src/pdns/pdns/dnsdistdist/logr.hh:79,1
    - Dst: std::array::size
      Src: /src/pdns/pdns/dnsdistdist/logr.hh:80,1
    - Dst: std::array::at
      Src: /src/pdns/pdns/dnsdistdist/logr.hh:83,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - arg
    argTypes:
    - Priority
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 76
    functionDepth: 0
    functionLinenumber: 76
    functionLinenumberEnd: 84
    functionName: Logr::Logger::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/logr.hh
    functionUses: 5
    functionsReached:
    - static_cast<unsigned int>
    - std::array::at
    - std::array::size
    linkageType: ''
    returnType: std::string
    signature: std::string toString(Priority arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Logr::Logger::withValues
      Src: /src/pdns/pdns/dnsdistdist/logr.hh:96,1
    - Dst: auto::info
      Src: /src/pdns/pdns/dnsdistdist/logr.hh:97,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - prio
    - ' msg'
    - ' key'
    - ' value'
    argTypes:
    - Priority
    - std::string
    - std::string
    - Loggable
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 94
    functionDepth: 0
    functionLinenumber: 94
    functionLinenumberEnd: 98
    functionName: Logr::Logger::info
    functionSourceFile: /src/pdns/pdns/dnsdistdist/logr.hh
    functionUses: 0
    functionsReached:
    - auto::info
    - Logr::Logger::withValues
    linkageType: ''
    returnType: void
    signature: void info(Priority prio, const std::string& msg, const std::string&
      key, const Loggable& value, const Args&... args) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Logr::Logger::withValues
      Src: /src/pdns/pdns/dnsdistdist/logr.hh:114,1
    - Dst: auto::error
      Src: /src/pdns/pdns/dnsdistdist/logr.hh:115,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - prio
    - ' err'
    - ' msg'
    - ' key'
    - ' value'
    argTypes:
    - Priority
    - std::string
    - std::string
    - std::string
    - Loggable
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 112
    functionDepth: 0
    functionLinenumber: 112
    functionLinenumberEnd: 116
    functionName: Logr::Logger::error
    functionSourceFile: /src/pdns/pdns/dnsdistdist/logr.hh
    functionUses: 0
    functionsReached:
    - auto::error
    - Logr::Logger::withValues
    linkageType: ''
    returnType: void
    signature: void error(Priority prio, const std::string& err, const std::string&
      msg, const std::string& key, const Loggable& value, const Args&... args) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Logr::Logger::withValues
      Src: /src/pdns/pdns/dnsdistdist/logr.hh:121,1
    - Dst: auto::error
      Src: /src/pdns/pdns/dnsdistdist/logr.hh:122,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - prio
    - err
    - ' msg'
    - ' key'
    - ' value'
    argTypes:
    - Priority
    - int
    - std::string
    - std::string
    - Loggable
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 119
    functionDepth: 0
    functionLinenumber: 119
    functionLinenumberEnd: 123
    functionName: Logr::Logger::error
    functionSourceFile: /src/pdns/pdns/dnsdistdist/logr.hh
    functionUses: 0
    functionsReached:
    - auto::error
    - Logr::Logger::withValues
    linkageType: ''
    returnType: void
    signature: void error(Priority prio, int err, const std::string& msg, const std::string&
      key, const Loggable& value, const Args&... args) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Logr::Logger::mapArguments
      Src: /src/pdns/pdns/dnsdistdist/logr.hh:135,1
    - Dst: Logr::Logger::withValues
      Src: /src/pdns/pdns/dnsdistdist/logr.hh:136,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ' key'
    - ' value'
    argTypes:
    - std::string
    - Loggable
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 137
      start: 132
    functionDepth: 0
    functionLinenumber: 132
    functionLinenumberEnd: 137
    functionName: Logr::Logger::withValues
    functionSourceFile: /src/pdns/pdns/dnsdistdist/logr.hh
    functionUses: 16
    functionsReached:
    - Logr::Logger::mapArguments
    - Logr::Logger::withValues
    linkageType: ''
    returnType: std::shared_ptr<Logger>
    signature: std::shared_ptr<Logger> withValues(const std::string& key, const Loggable&
      value, const Args&... args) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: emplace
      Src: /src/pdns/pdns/dnsdistdist/logr.hh:154,1
    - Dst: to_string
      Src: /src/pdns/pdns/dnsdistdist/logr.hh:154,1
    - Dst: Logr::Logger::mapArguments
      Src: /src/pdns/pdns/dnsdistdist/logr.hh:155,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - ' map'
    - ' key'
    - ' value'
    argTypes:
    - std::map<std::string, std::string>
    - std::string
    - Loggable
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 156
      start: 152
    functionDepth: 0
    functionLinenumber: 152
    functionLinenumberEnd: 156
    functionName: Logr::Logger::mapArguments
    functionSourceFile: /src/pdns/pdns/dnsdistdist/logr.hh
    functionUses: 8
    functionsReached:
    - Logr::Logger::mapArguments
    - emplace
    - to_string
    linkageType: ''
    returnType: void
    signature: void mapArguments(std::map<std::string, std::string>& map, const std::string&
      key, const Loggable& value, const Args&... args) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 158
      start: 158
    functionDepth: 0
    functionLinenumber: 158
    functionLinenumberEnd: 158
    functionName: Logr::Logger::mapArguments
    functionSourceFile: /src/pdns/pdns/dnsdistdist/logr.hh
    functionUses: 8
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void mapArguments(std::map<std::string, std::string>& /* map */) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 64
    functionDepth: 0
    functionLinenumber: 64
    functionLinenumberEnd: 67
    functionName: StopWatch
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-idstate.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void StopWatch(bool realTime = false)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getCurrentTime
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-idstate.hh:71,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 69
    functionDepth: 1
    functionLinenumber: 69
    functionLinenumberEnd: 72
    functionName: start
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-idstate.hh
    functionUses: 43
    functionsReached:
    - getCurrentTime
    linkageType: ''
    returnType: void
    signature: void start()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' from'
    argTypes:
    - struct timespec
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 74
    functionDepth: 0
    functionLinenumber: 74
    functionLinenumberEnd: 77
    functionName: set
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-idstate.hh
    functionUses: 302
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void set(const struct timespec& from)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getCurrentTime
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-idstate.hh:81,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 79
    functionDepth: 1
    functionLinenumber: 79
    functionLinenumberEnd: 83
    functionName: udiff
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-idstate.hh
    functionUses: 29
    functionsReached:
    - getCurrentTime
    linkageType: ''
    returnType: double
    signature: double udiff() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getCurrentTime
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-idstate.hh:87,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 85
    functionDepth: 1
    functionLinenumber: 85
    functionLinenumberEnd: 91
    functionName: udiffAndSet
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-idstate.hh
    functionUses: 2
    functionsReached:
    - getCurrentTime
    linkageType: ''
    returnType: double
    signature: double udiffAndSet()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 93
    functionDepth: 0
    functionLinenumber: 93
    functionLinenumberEnd: 96
    functionName: getStartTime
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-idstate.hh
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: struct timespec
    signature: struct timespec getStartTime() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: gettime
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-idstate.hh:105,1
    - Dst: unixDie
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-idstate.hh:106,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 102
    functionDepth: 0
    functionLinenumber: 102
    functionLinenumberEnd: 109
    functionName: getCurrentTime
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-idstate.hh
    functionUses: 3
    functionsReached:
    - unixDie
    - gettime
    linkageType: ''
    returnType: struct timespec
    signature: struct timespec getCurrentTime() const
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-idstate.hh:139,1
    - Dst: pdns::trace::dnsdist::Tracer::getTracer
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-idstate.hh:142,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 149
      start: 131
    functionDepth: 2
    functionLinenumber: 131
    functionLinenumberEnd: 149
    functionName: '& getTracer()'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-idstate.hh
    functionUses: 0
    functionsReached:
    - pdns::trace::dnsdist::Tracer::getTracer
    - dnsdist::configuration::getCurrentRuntimeConfiguration
    linkageType: ''
    returnType: std::shared_ptr<pdns::trace::dnsdist::Tracer>
    signature: std::shared_ptr<pdns::trace::dnsdist::Tracer> & getTracer()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 164
      start: 161
    functionDepth: 0
    functionLinenumber: 161
    functionLinenumberEnd: 164
    functionName: InternalQueryState
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-idstate.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void InternalQueryState()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - InternalQueryState
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 166
      start: 166
    functionDepth: 0
    functionLinenumber: 166
    functionLinenumberEnd: 166
    functionName: InternalQueryState
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-idstate.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void InternalQueryState(InternalQueryState&& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - InternalQueryState
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 167
      start: 167
    functionDepth: 0
    functionLinenumber: 167
    functionLinenumberEnd: 167
    functionName: '& operator=(InternalQueryState&& rhs)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-idstate.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: InternalQueryState
    signature: InternalQueryState & operator=(InternalQueryState&& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 1
    argNames:
    - ' orig'
    argTypes:
    - InternalQueryState
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 169
      start: 169
    functionDepth: 0
    functionLinenumber: 169
    functionLinenumberEnd: 169
    functionName: InternalQueryState
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-idstate.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void InternalQueryState(const InternalQueryState& orig)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 1
    argNames:
    - ' orig'
    argTypes:
    - InternalQueryState
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 170
      start: 170
    functionDepth: 0
    functionLinenumber: 170
    functionLinenumberEnd: 170
    functionName: '& operator=(const InternalQueryState& orig)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-idstate.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: InternalQueryState
    signature: InternalQueryState & operator=(const InternalQueryState& orig)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-idstate.hh:176,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 180
      start: 173
    functionDepth: 0
    functionLinenumber: 173
    functionLinenumberEnd: 180
    functionName: isXSK
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-idstate.hh
    functionUses: 4
    functionsReached:
    - empty
    linkageType: ''
    returnType: bool
    signature: bool isXSK() const noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' pastProcessRules'
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 258
      start: 254
    functionDepth: 0
    functionLinenumber: 254
    functionLinenumberEnd: 258
    functionName: rulesAppliedToQuerySetter
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-idstate.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void rulesAppliedToQuerySetter(bool& pastProcessRules)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 262
      start: 259
    functionDepth: 0
    functionLinenumber: 259
    functionLinenumberEnd: 262
    functionName: ~rulesAppliedToQuerySetter()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-idstate.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~rulesAppliedToQuerySetter()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 273
      start: 271
    functionDepth: 0
    functionLinenumber: 271
    functionLinenumberEnd: 273
    functionName: IDState
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-idstate.hh
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void IDState()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 1
    argNames:
    - ' orig'
    argTypes:
    - IDState
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 275
      start: 275
    functionDepth: 0
    functionLinenumber: 275
    functionLinenumberEnd: 275
    functionName: IDState
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-idstate.hh
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void IDState(const IDState& orig)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-idstate.hh:277,1
    - Dst: store
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-idstate.hh:279,1
    - Dst: inUse::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-idstate.hh:279,1
    - Dst: store
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-idstate.hh:280,1
    - Dst: age::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-idstate.hh:280,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - IDState
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 281
      start: 276
    functionDepth: 0
    functionLinenumber: 276
    functionLinenumberEnd: 281
    functionName: IDState
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-idstate.hh
    functionUses: 2
    functionsReached:
    - std::move
    - age::load
    - store
    - inUse::load
    linkageType: ''
    returnType: void
    signature: void IDState(IDState&& rhs) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: store
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-idstate.hh:285,1
    - Dst: inUse::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-idstate.hh:285,1
    - Dst: store
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-idstate.hh:286,1
    - Dst: age::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-idstate.hh:286,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-idstate.hh:287,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - IDState
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 289
      start: 283
    functionDepth: 0
    functionLinenumber: 283
    functionLinenumberEnd: 289
    functionName: '& operator=(IDState&& rhs) noexcept'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-idstate.hh
    functionUses: 0
    functionsReached:
    - std::move
    - age::load
    - store
    - inUse::load
    linkageType: ''
    returnType: IDState
    signature: IDState & operator=(IDState&& rhs) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 294
      start: 291
    functionDepth: 0
    functionLinenumber: 291
    functionLinenumberEnd: 294
    functionName: isInUse
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-idstate.hh
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool isInUse() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' ids'
    argTypes:
    - IDState
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 330
      start: 327
    functionDepth: 0
    functionLinenumber: 327
    functionLinenumberEnd: 330
    functionName: StateGuard::StateGuard
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-idstate.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void StateGuard(IDState& ids)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: release
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-idstate.hh:333,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 334
      start: 331
    functionDepth: 0
    functionLinenumber: 331
    functionLinenumberEnd: 334
    functionName: ~StateGuard()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-idstate.hh
    functionUses: 0
    functionsReached:
    - release
    linkageType: ''
    returnType: void
    signature: void ~StateGuard()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 335
      start: 335
    functionDepth: 0
    functionLinenumber: 335
    functionLinenumberEnd: 335
    functionName: StateGuard::StateGuard
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-idstate.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void StateGuard(const StateGuard&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 336
      start: 336
    functionDepth: 0
    functionLinenumber: 336
    functionLinenumberEnd: 336
    functionName: StateGuard::StateGuard
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-idstate.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void StateGuard(StateGuard&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 337
      start: 337
    functionDepth: 0
    functionLinenumber: 337
    functionLinenumberEnd: 337
    functionName: '& operator=(const StateGuard&)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-idstate.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: StateGuard
    signature: StateGuard & operator=(const StateGuard&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 338
      start: 338
    functionDepth: 0
    functionLinenumber: 338
    functionLinenumberEnd: 338
    functionName: '& operator=(StateGuard&&)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-idstate.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: StateGuard
    signature: StateGuard & operator=(StateGuard&&)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: compare_exchange_strong
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-idstate.hh:347,1
    - Dst: std::optional<StateGuard>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-idstate.hh:348,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 351
      start: 344
    functionDepth: 0
    functionLinenumber: 344
    functionLinenumberEnd: 351
    functionName: acquire
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-idstate.hh
    functionUses: 20
    functionsReached:
    - compare_exchange_strong
    - std::optional<StateGuard>
    linkageType: ''
    returnType: std::optional<StateGuard>
    signature: std::optional<StateGuard> acquire()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: store
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-idstate.hh:355,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 356
      start: 353
    functionDepth: 0
    functionLinenumber: 353
    functionLinenumberEnd: 356
    functionName: release
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-idstate.hh
    functionUses: 49
    functionsReached:
    - store
    linkageType: ''
    returnType: void
    signature: void release()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: getenv
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-systemd.cc:30,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 36
      start: 26
    functionDepth: 0
    functionLinenumber: 26
    functionLinenumberEnd: 36
    functionName: running_in_service_mgr
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-systemd.cc
    functionUses: 1
    functionsReached:
    - getenv
    linkageType: ''
    returnType: bool
    signature: bool running_in_service_mgr()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - node
    argTypes:
    - dnsdist_ffi_stat_node_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 30
      start: 27
    functionDepth: 0
    functionLinenumber: 27
    functionLinenumberEnd: 30
    functionName: dnsdist_ffi_stat_node_get_queries_count
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection-ffi.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t dnsdist_ffi_stat_node_get_queries_count(const dnsdist_ffi_stat_node_t*
      node)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - node
    argTypes:
    - dnsdist_ffi_stat_node_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 35
      start: 32
    functionDepth: 0
    functionLinenumber: 32
    functionLinenumberEnd: 35
    functionName: dnsdist_ffi_stat_node_get_noerrors_count
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection-ffi.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t dnsdist_ffi_stat_node_get_noerrors_count(const dnsdist_ffi_stat_node_t*
      node)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - node
    argTypes:
    - dnsdist_ffi_stat_node_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 37
    functionDepth: 0
    functionLinenumber: 37
    functionLinenumberEnd: 40
    functionName: dnsdist_ffi_stat_node_get_nxdomains_count
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection-ffi.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t dnsdist_ffi_stat_node_get_nxdomains_count(const dnsdist_ffi_stat_node_t*
      node)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - node
    argTypes:
    - dnsdist_ffi_stat_node_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 42
    functionDepth: 0
    functionLinenumber: 42
    functionLinenumberEnd: 45
    functionName: dnsdist_ffi_stat_node_get_servfails_count
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection-ffi.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t dnsdist_ffi_stat_node_get_servfails_count(const dnsdist_ffi_stat_node_t*
      node)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - node
    argTypes:
    - dnsdist_ffi_stat_node_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 47
    functionDepth: 0
    functionLinenumber: 47
    functionLinenumberEnd: 50
    functionName: dnsdist_ffi_stat_node_get_drops_count
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection-ffi.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t dnsdist_ffi_stat_node_get_drops_count(const dnsdist_ffi_stat_node_t*
      node)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - node
    argTypes:
    - dnsdist_ffi_stat_node_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 52
    functionDepth: 0
    functionLinenumber: 52
    functionLinenumberEnd: 55
    functionName: dnsdist_ffi_stat_node_get_bytes
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection-ffi.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t dnsdist_ffi_stat_node_get_bytes(const dnsdist_ffi_stat_node_t*
      node)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - node
    argTypes:
    - dnsdist_ffi_stat_node_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 57
    functionDepth: 0
    functionLinenumber: 57
    functionLinenumberEnd: 60
    functionName: dnsdist_ffi_stat_node_get_hits
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection-ffi.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t dnsdist_ffi_stat_node_get_hits(const dnsdist_ffi_stat_node_t*
      node)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - node
    argTypes:
    - dnsdist_ffi_stat_node_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 62
    functionDepth: 0
    functionLinenumber: 62
    functionLinenumberEnd: 65
    functionName: dnsdist_ffi_stat_node_get_labels_count
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection-ffi.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int dnsdist_ffi_stat_node_get_labels_count(const dnsdist_ffi_stat_node_t*
      node)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist_ffi_stat_node_t*::fullname::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection-ffi.cc:69,1
    - Dst: dnsdist_ffi_stat_node_t*::node::fullname::toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection-ffi.cc:70,1
    - Dst: dnsdist_ffi_stat_node_t*::fullname::c_str
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection-ffi.cc:72,1
    - Dst: dnsdist_ffi_stat_node_t*::fullname::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection-ffi.cc:73,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - node
    - name
    - nameSize
    argTypes:
    - dnsdist_ffi_stat_node_t*
    - char**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 67
    functionDepth: 0
    functionLinenumber: 67
    functionLinenumberEnd: 74
    functionName: dnsdist_ffi_stat_node_get_full_name_raw
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection-ffi.cc
    functionUses: 0
    functionsReached:
    - dnsdist_ffi_stat_node_t*::fullname::size
    - dnsdist_ffi_stat_node_t*::fullname::empty
    - dnsdist_ffi_stat_node_t*::node::fullname::toString
    - dnsdist_ffi_stat_node_t*::fullname::c_str
    linkageType: ''
    returnType: void
    signature: void dnsdist_ffi_stat_node_get_full_name_raw(const dnsdist_ffi_stat_node_t*
      node, const char** name, size_t* nameSize)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist_ffi_stat_node_t*::node::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection-ffi.cc:78,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - node
    argTypes:
    - dnsdist_ffi_stat_node_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 76
    functionDepth: 0
    functionLinenumber: 76
    functionLinenumberEnd: 79
    functionName: dnsdist_ffi_stat_node_get_children_count
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection-ffi.cc
    functionUses: 0
    functionsReached:
    - dnsdist_ffi_stat_node_t*::node::size
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int dnsdist_ffi_stat_node_get_children_count(const dnsdist_ffi_stat_node_t*
      node)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - node
    argTypes:
    - dnsdist_ffi_stat_node_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 81
    functionDepth: 0
    functionLinenumber: 81
    functionLinenumberEnd: 84
    functionName: dnsdist_ffi_stat_node_get_children_queries_count
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection-ffi.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t dnsdist_ffi_stat_node_get_children_queries_count(const dnsdist_ffi_stat_node_t*
      node)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - node
    argTypes:
    - dnsdist_ffi_stat_node_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 86
    functionDepth: 0
    functionLinenumber: 86
    functionLinenumberEnd: 89
    functionName: dnsdist_ffi_stat_node_get_children_noerrors_count
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection-ffi.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t dnsdist_ffi_stat_node_get_children_noerrors_count(const dnsdist_ffi_stat_node_t*
      node)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - node
    argTypes:
    - dnsdist_ffi_stat_node_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 91
    functionDepth: 0
    functionLinenumber: 91
    functionLinenumberEnd: 94
    functionName: dnsdist_ffi_stat_node_get_children_nxdomains_count
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection-ffi.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t dnsdist_ffi_stat_node_get_children_nxdomains_count(const dnsdist_ffi_stat_node_t*
      node)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - node
    argTypes:
    - dnsdist_ffi_stat_node_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 96
    functionDepth: 0
    functionLinenumber: 96
    functionLinenumberEnd: 99
    functionName: dnsdist_ffi_stat_node_get_children_servfails_count
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection-ffi.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t dnsdist_ffi_stat_node_get_children_servfails_count(const dnsdist_ffi_stat_node_t*
      node)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - node
    argTypes:
    - dnsdist_ffi_stat_node_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 104
      start: 101
    functionDepth: 0
    functionLinenumber: 101
    functionLinenumberEnd: 104
    functionName: dnsdist_ffi_stat_node_get_children_drops_count
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection-ffi.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t dnsdist_ffi_stat_node_get_children_drops_count(const dnsdist_ffi_stat_node_t*
      node)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - node
    argTypes:
    - dnsdist_ffi_stat_node_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 106
    functionDepth: 0
    functionLinenumber: 106
    functionLinenumberEnd: 109
    functionName: dnsdist_ffi_stat_node_get_children_bytes_count
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection-ffi.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t dnsdist_ffi_stat_node_get_children_bytes_count(const dnsdist_ffi_stat_node_t*
      node)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - node
    argTypes:
    - dnsdist_ffi_stat_node_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 111
    functionDepth: 0
    functionLinenumber: 111
    functionLinenumberEnd: 114
    functionName: dnsdist_ffi_stat_node_get_children_hits
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection-ffi.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t dnsdist_ffi_stat_node_get_children_hits(const dnsdist_ffi_stat_node_t*
      node)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection-ffi.cc:118,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - node
    - reason
    - reasonSize
    argTypes:
    - dnsdist_ffi_stat_node_t*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 119
      start: 116
    functionDepth: 0
    functionLinenumber: 116
    functionLinenumberEnd: 119
    functionName: dnsdist_ffi_state_node_set_reason
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection-ffi.cc
    functionUses: 0
    functionsReached:
    - std::string
    linkageType: ''
    returnType: void
    signature: void dnsdist_ffi_state_node_set_reason(dnsdist_ffi_stat_node_t* node,
      const char* reason, size_t reasonSize)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<DNSAction::Action>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection-ffi.cc:123,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - node
    - blockAction
    argTypes:
    - dnsdist_ffi_stat_node_t*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 124
      start: 121
    functionDepth: 0
    functionLinenumber: 121
    functionLinenumberEnd: 124
    functionName: dnsdist_ffi_state_node_set_action
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection-ffi.cc
    functionUses: 0
    functionsReached:
    - static_cast<DNSAction::Action>
    linkageType: ''
    returnType: void
    signature: void dnsdist_ffi_state_node_set_action(dnsdist_ffi_stat_node_t* node,
      int blockAction)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 29
      start: 27
    functionDepth: 0
    functionLinenumber: 27
    functionLinenumberEnd: 29
    functionName: ~MockupTLSCtx()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_common.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~MockupTLSCtx()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::make_unique<MockupTLSConnection>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_common.hh:35,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - socket
    - ' timeout'
    - now
    argTypes:
    - int
    - struct timeval
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 36
      start: 31
    functionDepth: 0
    functionLinenumber: 31
    functionLinenumberEnd: 36
    functionName: MockupTLSCtx::getConnection
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_common.hh
    functionUses: 0
    functionsReached:
    - std::make_unique<MockupTLSConnection>
    linkageType: ''
    returnType: std::unique_ptr<TLSConnection>
    signature: std::unique_ptr<TLSConnection> getConnection(int socket, const struct
      timeval& timeout, time_t now) override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::make_unique<MockupTLSConnection>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_common.hh:43,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 4
    argNames:
    - ' host'
    - hostIsAddr
    - socket
    - ' timeout'
    argTypes:
    - std::string
    - bool
    - int
    - struct timeval
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 38
    functionDepth: 0
    functionLinenumber: 38
    functionLinenumberEnd: 44
    functionName: MockupTLSCtx::getClientConnection
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_common.hh
    functionUses: 0
    functionsReached:
    - std::make_unique<MockupTLSConnection>
    linkageType: ''
    returnType: std::unique_ptr<TLSConnection>
    signature: std::unique_ptr<TLSConnection> getClientConnection(const std::string&
      host, bool hostIsAddr, int socket, const struct timeval& timeout) override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - now
    argTypes:
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 46
    functionDepth: 0
    functionLinenumber: 46
    functionLinenumberEnd: 49
    functionName: MockupTLSCtx::rotateTicketsKey
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_common.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void rotateTicketsKey(time_t now) override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 51
    functionDepth: 0
    functionLinenumber: 51
    functionLinenumberEnd: 54
    functionName: MockupTLSCtx::getTicketsKeysCount
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_common.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: size_t getTicketsKeysCount() override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 56
    functionDepth: 0
    functionLinenumber: 56
    functionLinenumberEnd: 59
    functionName: MockupTLSCtx::getName
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_common.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string getName() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 67
    functionDepth: 0
    functionLinenumber: 67
    functionLinenumberEnd: 69
    functionName: MockupFDMultiplexer::MockupFDMultiplexer
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_common.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void MockupFDMultiplexer()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 71
    functionDepth: 0
    functionLinenumber: 71
    functionLinenumberEnd: 73
    functionName: ~MockupFDMultiplexer()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_common.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~MockupFDMultiplexer()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: gettimeofday
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_common.hh:80,1
    - Dst: find
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_common.hh:86,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_common.hh:88,1
    - Dst: d_callback
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_common.hh:89,1
    - Dst: find
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_common.hh:94,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_common.hh:96,1
    - Dst: d_callback
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_common.hh:97,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 1
    argNames:
    - tv
    argTypes:
    - struct timeval*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 75
    functionDepth: 0
    functionLinenumber: 75
    functionLinenumberEnd: 103
    functionName: MockupFDMultiplexer::run
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_common.hh
    functionUses: 0
    functionsReached:
    - d_callback
    - end
    - gettimeofday
    - find
    linkageType: ''
    returnType: int
    signature: int run(struct timeval* tv, int timeout = 500) override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ' fds'
    - timeout
    argTypes:
    - std::vector<int>
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 105
    functionDepth: 0
    functionLinenumber: 105
    functionLinenumberEnd: 109
    functionName: MockupFDMultiplexer::getAvailableFDs
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_common.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void getAvailableFDs(std::vector<int>& fds, int timeout) override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - fd
    - kind
    argTypes:
    - int
    - FDMultiplexer::EventKind
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 115
      start: 111
    functionDepth: 0
    functionLinenumber: 111
    functionLinenumberEnd: 115
    functionName: MockupFDMultiplexer::addFD
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_common.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void addFD(int fd, FDMultiplexer::EventKind kind) override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - fd
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 117
    functionDepth: 0
    functionLinenumber: 117
    functionLinenumberEnd: 120
    functionName: MockupFDMultiplexer::removeFD
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_common.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void removeFD(int fd, FDMultiplexer::EventKind) override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 125
      start: 122
    functionDepth: 0
    functionLinenumber: 122
    functionLinenumberEnd: 125
    functionName: MockupFDMultiplexer::getName
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_common.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: string
    signature: string getName() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: insert
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_common.hh:129,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - fd
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 130
      start: 127
    functionDepth: 1
    functionLinenumber: 127
    functionLinenumberEnd: 130
    functionName: MockupFDMultiplexer::setReady
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_common.hh
    functionUses: 0
    functionsReached:
    - insert
    linkageType: ''
    returnType: void
    signature: void setReady(int fd)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: erase
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_common.hh:134,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - fd
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 135
      start: 132
    functionDepth: 0
    functionLinenumber: 132
    functionLinenumberEnd: 135
    functionName: MockupFDMultiplexer::setNotReady
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_common.hh
    functionUses: 0
    functionsReached:
    - erase
    linkageType: ''
    returnType: void
    signature: void setNotReady(int fd)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::make_unique<Socket>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_common.hh:145,1
    - Dst: auto::setNonBlocking
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_common.hh:146,1
    - Dst: SConnectWithTimeout
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_common.hh:147,1
    - Dst: auto::getHandle
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_common.hh:147,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 156
      start: 141
    functionDepth: 0
    functionLinenumber: 141
    functionLinenumberEnd: 156
    functionName: isIPv6Supported
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_common.hh
    functionUses: 1
    functionsReached:
    - std::make_unique<Socket>
    - auto::setNonBlocking
    - SConnectWithTimeout
    - auto::getHandle
    linkageType: ''
    returnType: bool
    signature: bool isIPv6Supported()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: isIPv6Supported
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_common.hh:160,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_common.hh:163,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_common.hh:166,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - ' lastDigit'
    - port
    argTypes:
    - std::string
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 167
      start: 158
    functionDepth: 0
    functionLinenumber: 158
    functionLinenumberEnd: 167
    functionName: getBackendAddress
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_common.hh
    functionUses: 9
    functionsReached:
    - isIPv6Supported
    - ComboAddress
    linkageType: ''
    returnType: ComboAddress
    signature: ComboAddress getBackendAddress(const std::string& lastDigit, uint16_t
      port)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::channel::createNotificationQueue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:34,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:36,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:38,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - failOpen
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 39
      start: 31
    functionDepth: 0
    functionLinenumber: 31
    functionLinenumberEnd: 39
    functionName: AsynchronousHolder::Data::Data(bool failOpen)
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc
    functionUses: 0
    functionsReached:
    - std::move
    - pdns::channel::createNotificationQueue
    linkageType: ''
    returnType: void
    signature: void AsynchronousHolder::Data::Data(bool failOpen)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<Data>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:42,1
    - Dst: dnsdist::AsynchronousHolder::mainThread
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:44,1
    - Dst: std::thread::detach
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:45,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - failOpen
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 41
    functionDepth: 1
    functionLinenumber: 41
    functionLinenumberEnd: 46
    functionName: dnsdist::AsynchronousHolder::AsynchronousHolder
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc
    functionUses: 0
    functionsReached:
    - dnsdist::AsynchronousHolder::mainThread
    - std::make_shared<Data>
    - std::thread::detach
    linkageType: ''
    returnType: void
    signature: void AsynchronousHolder::AsynchronousHolder(bool failOpen)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: stop
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:51,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 48
    functionDepth: 0
    functionLinenumber: 48
    functionLinenumberEnd: 55
    functionName: AsynchronousHolder::~AsynchronousHolder()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc
    functionUses: 0
    functionsReached:
    - stop
    linkageType: ''
    returnType: void
    signature: void AsynchronousHolder::~AsynchronousHolder()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: d_notifier::notify
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:59,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 57
    functionDepth: 0
    functionLinenumber: 57
    functionLinenumberEnd: 60
    functionName: dnsdist::AsynchronousHolder::notify
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc
    functionUses: 0
    functionsReached:
    - d_notifier::notify
    linkageType: ''
    returnType: bool
    signature: bool AsynchronousHolder::notify() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: clear
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:64,1
    - Dst: getAvailableFDs
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:65,1
    - Dst: dnsdist::AsynchronousHolder::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:66,1
    - Dst: d_waiter::clear
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:71,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 4
    argNames:
    - ' data'
    - ' mplexer'
    - ' readyFDs'
    - atMostMs
    argTypes:
    - AsynchronousHolder::Data
    - FDMultiplexer
    - std::vector<int>
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 62
    functionDepth: 1
    functionLinenumber: 62
    functionLinenumberEnd: 73
    functionName: dnsdist::AsynchronousHolder::wait
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc
    functionUses: 0
    functionsReached:
    - clear
    - getAvailableFDs
    - dnsdist::AsynchronousHolder::empty
    - d_waiter::clear
    linkageType: ''
    returnType: bool
    signature: bool AsynchronousHolder::wait(AsynchronousHolder::Data& data, FDMultiplexer&
      mplexer, std::vector<int>& readyFDs, int atMostMs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: d_content::lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:78,1
    - Dst: dnsdist::AsynchronousHolder::notify
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:82,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 75
    functionDepth: 1
    functionLinenumber: 75
    functionLinenumberEnd: 83
    functionName: dnsdist::AsynchronousHolder::stop
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc
    functionUses: 0
    functionsReached:
    - dnsdist::AsynchronousHolder::notify
    - d_content::lock
    linkageType: ''
    returnType: void
    signature: void AsynchronousHolder::stop()
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: setThreadName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:88,1
    - Dst: std::unique_ptr<FDMultiplexer>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:92,1
    - Dst: FDMultiplexer::getMultiplexerSilent
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:92,1
    - Dst: auto::addReadFD
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:93,1
    - Dst: std::shared_ptr<Data>::d_waiter::getDescriptor
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:93,1
    - Dst: dnsdist::configuration::refreshLocalRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:100,1
    - Dst: std::shared_ptr<Data>::d_content::lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:103,1
    - Dst: auto::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:108,1
    - Dst: gettimeofday
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:109,1
    - Dst: dnsdist::AsynchronousHolder::getNextTTD
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:110,1
    - Dst: dnsdist::AsynchronousHolder::pickupExpired
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:112,1
    - Dst: uSec
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:116,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:117,1
    - Dst: std::round
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:117,1
    - Dst: static_cast<double>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:117,1
    - Dst: dnsdist::AsynchronousHolder::wait
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:127,1
    - Dst: std::shared_ptr<Data>::d_content::lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:129,1
    - Dst: gettimeofday
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:130,1
    - Dst: dnsdist::AsynchronousHolder::pickupExpired
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:131,1
    - Dst: std::list::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:135,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:136,1
    - Dst: std::list::front
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:136,1
    - Dst: std::list::pop_front
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:137,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:139,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:139,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:140,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:140,1
    - Dst: getTCPQuerySender
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:141,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:143,1
    - Dst: auto::notifyIOError
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:144,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:144,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:148,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:148,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:149,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:149,1
    - Dst: resumeQuery
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:150,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:150,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:155,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:155,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:155,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:156,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:156,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:159,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:159,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:160,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 47
    argCount: 1
    argNames:
    - data
    argTypes:
    - std::shared_ptr<Data>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 163
      start: 86
    functionDepth: 2
    functionLinenumber: 86
    functionLinenumberEnd: 163
    functionName: dnsdist::AsynchronousHolder::mainThread
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc
    functionUses: 1
    functionsReached:
    - std::shared_ptr<Data>::d_waiter::getDescriptor
    - auto::addReadFD
    - std::round
    - gettimeofday
    - resumeQuery
    - static_cast<int>
    - static_cast<double>
    - dnsdist::AsynchronousHolder::getNextTTD
    - Logging::Loggable
    - uSec
    - dnsdist::logging::getTopLogger
    - std::list::pop_front
    - setThreadName
    - dnsdist::AsynchronousHolder::pickupExpired
    - dnsdist::configuration::refreshLocalRuntimeConfiguration
    - std::shared_ptr<Data>::d_content::lock
    - VERBOSESLOG
    - auto::notifyIOError
    - getTCPQuerySender
    - FDMultiplexer::getMultiplexerSilent
    - std::move
    - what
    - infolog
    - std::unique_ptr<FDMultiplexer>
    - std::list::front
    - std::list::empty
    - dnsdist::AsynchronousHolder::wait
    - auto::empty
    linkageType: ''
    returnType: void
    signature: void AsynchronousHolder::mainThread(std::shared_ptr<Data> data)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: d_content::lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:169,1
    - Dst: auto::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:170,1
    - Dst: dnsdist::AsynchronousHolder::getNextTTD
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:173,1
    - Dst: auto::insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:182,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:182,1
    - Dst: dnsdist::AsynchronousHolder::notify
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:186,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 4
    argNames:
    - asyncID
    - queryID
    - ' ttd'
    - ' query'
    argTypes:
    - uint16_t
    - uint16_t
    - struct timeval
    - std::unique_ptr<CrossProtocolQuery>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 188
      start: 165
    functionDepth: 1
    functionLinenumber: 165
    functionLinenumberEnd: 188
    functionName: dnsdist::AsynchronousHolder::push
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc
    functionUses: 0
    functionsReached:
    - std::move
    - dnsdist::AsynchronousHolder::notify
    - dnsdist::AsynchronousHolder::getNextTTD
    - auto::insert
    - d_content::lock
    - auto::empty
    linkageType: ''
    returnType: void
    signature: void AsynchronousHolder::push(uint16_t asyncID, uint16_t queryID, const
      struct timeval& ttd, std::unique_ptr<CrossProtocolQuery>&& query)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: d_content::lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:193,1
    - Dst: auto::find
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:194,1
    - Dst: std::tie
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:194,1
    - Dst: auto::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:195,1
    - Dst: gettimeofday
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:197,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:198,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:198,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:199,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:199,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:199,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:203,1
    - Dst: auto::erase
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:204,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - asyncID
    - queryID
    argTypes:
    - uint16_t
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 206
      start: 190
    functionDepth: 1
    functionLinenumber: 190
    functionLinenumberEnd: 206
    functionName: dnsdist::AsynchronousHolder::get
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc
    functionUses: 0
    functionsReached:
    - std::move
    - d_content::lock
    - Logging::Loggable
    - VERBOSESLOG
    - infolog
    - std::tie
    - gettimeofday
    - dnsdist::logging::getTopLogger
    - auto::end
    - auto::erase
    - auto::find
    linkageType: ''
    returnType: std::unique_ptr<CrossProtocolQuery>
    signature: std::unique_ptr<CrossProtocolQuery> AsynchronousHolder::get(uint16_t
      asyncID, uint16_t queryID)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::AsynchronousHolder::get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:210,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:211,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:211,1
    - Dst: emplace_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:212,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:212,1
    - Dst: erase
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:213,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 3
    argNames:
    - ' content'
    - ' now'
    - ' events'
    argTypes:
    - content_t
    - struct timeval
    - std::list<std::pair<uint16_t, std::unique_ptr<CrossProtocolQuery>>>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 215
      start: 208
    functionDepth: 0
    functionLinenumber: 208
    functionLinenumberEnd: 215
    functionName: dnsdist::AsynchronousHolder::pickupExpired
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc
    functionUses: 1
    functionsReached:
    - dnsdist::AsynchronousHolder::get
    - std::move
    - end
    - emplace_back
    - begin
    - erase
    linkageType: ''
    returnType: void
    signature: void AsynchronousHolder::pickupExpired(content_t& content, const struct
      timeval& now, std::list<std::pair<uint16_t, std::unique_ptr<CrossProtocolQuery>>>&
      events)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::AsynchronousHolder::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:219,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:220,1
    - Dst: dnsdist::AsynchronousHolder::get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:223,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - ' content'
    argTypes:
    - content_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 224
      start: 217
    functionDepth: 1
    functionLinenumber: 217
    functionLinenumberEnd: 224
    functionName: dnsdist::AsynchronousHolder::getNextTTD
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc
    functionUses: 2
    functionsReached:
    - dnsdist::AsynchronousHolder::get
    - dnsdist::AsynchronousHolder::empty
    - std::runtime_error
    linkageType: ''
    returnType: struct timeval
    signature: struct timeval AsynchronousHolder::getNextTTD(const content_t& content)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: d_content::read_only_lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:228,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 229
      start: 226
    functionDepth: 0
    functionLinenumber: 226
    functionLinenumberEnd: 229
    functionName: dnsdist::AsynchronousHolder::empty
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc
    functionUses: 2
    functionsReached:
    - d_content::read_only_lock
    linkageType: ''
    returnType: bool
    signature: bool AsynchronousHolder::empty()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: getDR
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:235,1
    - Dst: processResponseAfterRules
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:237,1
    - Dst: getTCPQuerySender
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:243,1
    - Dst: gettimeofday
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:246,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:248,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:248,1
    - Dst: auto::handleResponse
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:250,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:250,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:254,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:254,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:254,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:255,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:255,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 1
    argNames:
    - ' response'
    argTypes:
    - std::unique_ptr<CrossProtocolQuery>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 260
      start: 231
    functionDepth: 1
    functionLinenumber: 231
    functionLinenumberEnd: 260
    functionName: dnsdist::resumeResponse
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc
    functionUses: 0
    functionsReached:
    - auto::handleResponse
    - processResponseAfterRules
    - std::move
    - what
    - getDR
    - VERBOSESLOG
    - infolog
    - getTCPQuerySender
    - gettimeofday
    - dnsdist::logging::getTopLogger
    linkageType: ''
    returnType: bool
    signature: bool resumeResponse(std::unique_ptr<CrossProtocolQuery>&& response)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:266,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:266,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - ' query'
    argTypes:
    - std::unique_ptr<CrossProtocolQuery>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 268
      start: 264
    functionDepth: 0
    functionLinenumber: 264
    functionLinenumberEnd: 268
    functionName: dnsdist::queueQueryResumptionEvent
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc
    functionUses: 6
    functionsReached:
    - std::move
    - lock
    linkageType: ''
    returnType: bool
    signature: bool queueQueryResumptionEvent(std::unique_ptr<CrossProtocolQuery>&&
      query)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:276,1
    - Dst: auto::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:277,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:281,1
    - Dst: auto::front
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:281,1
    - Dst: auto::pop_front
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:282,1
    - Dst: dnsdist::resumeQuery
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:284,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:284,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:285,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:285,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:286,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 289
      start: 270
    functionDepth: 1
    functionLinenumber: 270
    functionLinenumberEnd: 289
    functionName: dnsdist::handleQueuedAsynchronousEvents
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc
    functionUses: 14
    functionsReached:
    - std::move
    - VERBOSESLOG
    - infolog
    - lock
    - auto::front
    - dnsdist::logging::getTopLogger
    - dnsdist::resumeQuery
    - auto::pop_front
    - auto::empty
    linkageType: ''
    returnType: void
    signature: void handleQueuedAsynchronousEvents()
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::resumeResponse
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:294,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:294,1
    - Dst: getDQ
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:297,1
    - Dst: processQueryAfterRules
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:299,1
    - Dst: downstream::isTCPOnly
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:315,1
    - Dst: DNSQuestion::getProtocol
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:315,1
    - Dst: DNSQuestion::getProtocol
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:315,1
    - Dst: downstream::passCrossProtocolQuery
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:316,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:316,1
    - Dst: DNSQuestion::getHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:320,1
    - Dst: assignOutgoingUDPQueryToBackend
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:324,1
    - Dst: getTCPQuerySender
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:327,1
    - Dst: gettimeofday
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:333,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:335,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:335,1
    - Dst: auto::handleResponse
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:340,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:340,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:344,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:344,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:344,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:345,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:345,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:351,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:351,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:352,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 40
    argCount: 1
    argNames:
    - ' query'
    argTypes:
    - std::unique_ptr<CrossProtocolQuery>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 357
      start: 291
    functionDepth: 2
    functionLinenumber: 291
    functionLinenumberEnd: 357
    functionName: dnsdist::resumeQuery
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc
    functionUses: 1
    functionsReached:
    - auto::handleResponse
    - errlog
    - std::move
    - SLOG
    - downstream::isTCPOnly
    - dnsdist::resumeResponse
    - what
    - processQueryAfterRules
    - VERBOSESLOG
    - downstream::passCrossProtocolQuery
    - getDQ
    - infolog
    - getTCPQuerySender
    - assignOutgoingUDPQueryToBackend
    - DNSQuestion::getProtocol
    - gettimeofday
    - dnsdist::logging::getTopLogger
    - DNSQuestion::getHeader
    linkageType: ''
    returnType: bool
    signature: bool resumeQuery(std::unique_ptr<CrossProtocolQuery>&& query)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: gettimeofday
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:366,1
    - Dst: static_cast<decltype(ttd.tv_usec)>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:369,1
    - Dst: normalizeTV
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:370,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:372,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:372,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:373,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:373,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:373,1
    - Dst: dnsdist::getInternalQueryFromDQ
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:374,1
    - Dst: push
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:376,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:376,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 4
    argNames:
    - ' dnsQuestion'
    - asyncID
    - queryID
    - timeoutMs
    argTypes:
    - DNSQuestion
    - uint16_t
    - uint16_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 378
      start: 359
    functionDepth: 0
    functionLinenumber: 359
    functionLinenumberEnd: 378
    functionName: dnsdist::suspendQuery
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc
    functionUses: 2
    functionsReached:
    - getLogger
    - std::move
    - push
    - Logging::Loggable
    - VERBOSESLOG
    - infolog
    - gettimeofday
    - dnsdist::getInternalQueryFromDQ
    - static_cast<decltype(ttd.tv_usec)>
    - normalizeTV
    linkageType: ''
    returnType: bool
    signature: bool suspendQuery(DNSQuestion& dnsQuestion, uint16_t asyncID, uint16_t
      queryID, uint32_t timeoutMs)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: gettimeofday
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:387,1
    - Dst: static_cast<decltype(ttd.tv_usec)>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:390,1
    - Dst: normalizeTV
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:391,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:393,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:393,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:394,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:394,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:394,1
    - Dst: dnsdist::getInternalQueryFromDQ
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:395,1
    - Dst: push
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:399,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:399,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 4
    argNames:
    - ' dnsResponse'
    - asyncID
    - queryID
    - timeoutMs
    argTypes:
    - DNSResponse
    - uint16_t
    - uint16_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 401
      start: 380
    functionDepth: 0
    functionLinenumber: 380
    functionLinenumberEnd: 401
    functionName: dnsdist::suspendResponse
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc
    functionUses: 2
    functionsReached:
    - getLogger
    - std::move
    - push
    - Logging::Loggable
    - VERBOSESLOG
    - infolog
    - gettimeofday
    - dnsdist::getInternalQueryFromDQ
    - static_cast<decltype(ttd.tv_usec)>
    - normalizeTV
    linkageType: ''
    returnType: bool
    signature: bool suspendResponse(DNSResponse& dnsResponse, uint16_t asyncID, uint16_t
      queryID, uint32_t timeoutMs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::channel::createNotificationQueue
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:34,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:36,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:38,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - failOpen
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 39
      start: 31
    functionDepth: 0
    functionLinenumber: 31
    functionLinenumberEnd: 39
    functionName: AsynchronousHolder::Data::Data(bool failOpen)
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc
    functionUses: 0
    functionsReached:
    - std::move
    - pdns::channel::createNotificationQueue
    linkageType: ''
    returnType: void
    signature: void AsynchronousHolder::Data::Data(bool failOpen)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<Data>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:42,1
    - Dst: dnsdist::AsynchronousHolder::mainThread
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:44,1
    - Dst: std::thread::detach
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:45,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - failOpen
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 41
    functionDepth: 3
    functionLinenumber: 41
    functionLinenumberEnd: 46
    functionName: dnsdist::AsynchronousHolder::AsynchronousHolder
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc
    functionUses: 0
    functionsReached:
    - dnsdist::AsynchronousHolder::mainThread
    - std::make_shared<Data>
    - std::thread::detach
    linkageType: ''
    returnType: void
    signature: void AsynchronousHolder::AsynchronousHolder(bool failOpen)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: stop
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:51,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 48
    functionDepth: 0
    functionLinenumber: 48
    functionLinenumberEnd: 55
    functionName: AsynchronousHolder::~AsynchronousHolder()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc
    functionUses: 0
    functionsReached:
    - stop
    linkageType: ''
    returnType: void
    signature: void AsynchronousHolder::~AsynchronousHolder()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: d_notifier::notify
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:59,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 57
    functionDepth: 0
    functionLinenumber: 57
    functionLinenumberEnd: 60
    functionName: dnsdist::AsynchronousHolder::notify
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc
    functionUses: 2
    functionsReached:
    - d_notifier::notify
    linkageType: ''
    returnType: bool
    signature: bool AsynchronousHolder::notify() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: clear
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:64,1
    - Dst: getAvailableFDs
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:65,1
    - Dst: dnsdist::AsynchronousHolder::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:66,1
    - Dst: d_waiter::clear
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:71,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 4
    argNames:
    - ' data'
    - ' mplexer'
    - ' readyFDs'
    - atMostMs
    argTypes:
    - AsynchronousHolder::Data
    - FDMultiplexer
    - std::vector<int>
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 62
    functionDepth: 1
    functionLinenumber: 62
    functionLinenumberEnd: 73
    functionName: dnsdist::AsynchronousHolder::wait
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc
    functionUses: 1
    functionsReached:
    - clear
    - getAvailableFDs
    - dnsdist::AsynchronousHolder::empty
    - d_waiter::clear
    linkageType: ''
    returnType: bool
    signature: bool AsynchronousHolder::wait(AsynchronousHolder::Data& data, FDMultiplexer&
      mplexer, std::vector<int>& readyFDs, int atMostMs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: d_content::lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:78,1
    - Dst: dnsdist::AsynchronousHolder::notify
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:82,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 75
    functionDepth: 1
    functionLinenumber: 75
    functionLinenumberEnd: 83
    functionName: dnsdist::AsynchronousHolder::stop
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc
    functionUses: 0
    functionsReached:
    - dnsdist::AsynchronousHolder::notify
    - d_content::lock
    linkageType: ''
    returnType: void
    signature: void AsynchronousHolder::stop()
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: setThreadName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:88,1
    - Dst: std::unique_ptr<FDMultiplexer>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:92,1
    - Dst: FDMultiplexer::getMultiplexerSilent
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:92,1
    - Dst: auto::addReadFD
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:93,1
    - Dst: std::shared_ptr<Data>::d_waiter::getDescriptor
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:93,1
    - Dst: dnsdist::configuration::refreshLocalRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:100,1
    - Dst: std::shared_ptr<Data>::d_content::lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:103,1
    - Dst: auto::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:108,1
    - Dst: gettimeofday
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:109,1
    - Dst: dnsdist::AsynchronousHolder::getNextTTD
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:110,1
    - Dst: dnsdist::AsynchronousHolder::pickupExpired
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:112,1
    - Dst: uSec
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:116,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:117,1
    - Dst: std::round
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:117,1
    - Dst: static_cast<double>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:117,1
    - Dst: dnsdist::AsynchronousHolder::wait
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:127,1
    - Dst: std::shared_ptr<Data>::d_content::lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:129,1
    - Dst: gettimeofday
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:130,1
    - Dst: dnsdist::AsynchronousHolder::pickupExpired
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:131,1
    - Dst: std::list::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:135,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:136,1
    - Dst: std::list::front
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:136,1
    - Dst: std::list::pop_front
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:137,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:139,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:139,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:140,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:140,1
    - Dst: getTCPQuerySender
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:141,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:143,1
    - Dst: auto::notifyIOError
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:144,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:144,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:148,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:148,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:149,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:149,1
    - Dst: resumeQuery
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:150,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:150,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:155,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:155,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:155,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:156,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:156,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:159,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:159,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:160,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 47
    argCount: 1
    argNames:
    - data
    argTypes:
    - std::shared_ptr<Data>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 163
      start: 86
    functionDepth: 2
    functionLinenumber: 86
    functionLinenumberEnd: 163
    functionName: dnsdist::AsynchronousHolder::mainThread
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc
    functionUses: 2
    functionsReached:
    - std::shared_ptr<Data>::d_waiter::getDescriptor
    - auto::addReadFD
    - std::round
    - gettimeofday
    - resumeQuery
    - static_cast<int>
    - static_cast<double>
    - dnsdist::AsynchronousHolder::getNextTTD
    - Logging::Loggable
    - uSec
    - dnsdist::logging::getTopLogger
    - std::list::pop_front
    - setThreadName
    - dnsdist::AsynchronousHolder::pickupExpired
    - dnsdist::configuration::refreshLocalRuntimeConfiguration
    - std::shared_ptr<Data>::d_content::lock
    - VERBOSESLOG
    - auto::notifyIOError
    - getTCPQuerySender
    - FDMultiplexer::getMultiplexerSilent
    - std::move
    - what
    - infolog
    - std::unique_ptr<FDMultiplexer>
    - std::list::front
    - std::list::empty
    - dnsdist::AsynchronousHolder::wait
    - auto::empty
    linkageType: ''
    returnType: void
    signature: void AsynchronousHolder::mainThread(std::shared_ptr<Data> data)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: d_content::lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:169,1
    - Dst: auto::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:170,1
    - Dst: dnsdist::AsynchronousHolder::getNextTTD
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:173,1
    - Dst: auto::insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:182,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:182,1
    - Dst: dnsdist::AsynchronousHolder::notify
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:186,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 4
    argNames:
    - asyncID
    - queryID
    - ' ttd'
    - ' query'
    argTypes:
    - uint16_t
    - uint16_t
    - struct timeval
    - std::unique_ptr<CrossProtocolQuery>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 188
      start: 165
    functionDepth: 2
    functionLinenumber: 165
    functionLinenumberEnd: 188
    functionName: dnsdist::AsynchronousHolder::push
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc
    functionUses: 0
    functionsReached:
    - std::move
    - dnsdist::AsynchronousHolder::notify
    - dnsdist::AsynchronousHolder::getNextTTD
    - auto::insert
    - d_content::lock
    - auto::empty
    linkageType: ''
    returnType: void
    signature: void AsynchronousHolder::push(uint16_t asyncID, uint16_t queryID, const
      struct timeval& ttd, std::unique_ptr<CrossProtocolQuery>&& query)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: d_content::lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:193,1
    - Dst: auto::find
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:194,1
    - Dst: std::tie
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:194,1
    - Dst: auto::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:195,1
    - Dst: gettimeofday
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:197,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:198,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:198,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:199,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:199,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:199,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:203,1
    - Dst: auto::erase
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:204,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - asyncID
    - queryID
    argTypes:
    - uint16_t
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 206
      start: 190
    functionDepth: 1
    functionLinenumber: 190
    functionLinenumberEnd: 206
    functionName: dnsdist::AsynchronousHolder::get
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc
    functionUses: 2
    functionsReached:
    - std::move
    - d_content::lock
    - Logging::Loggable
    - VERBOSESLOG
    - infolog
    - std::tie
    - gettimeofday
    - dnsdist::logging::getTopLogger
    - auto::end
    - auto::erase
    - auto::find
    linkageType: ''
    returnType: std::unique_ptr<CrossProtocolQuery>
    signature: std::unique_ptr<CrossProtocolQuery> AsynchronousHolder::get(uint16_t
      asyncID, uint16_t queryID)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::AsynchronousHolder::get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:210,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:211,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:211,1
    - Dst: emplace_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:212,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:212,1
    - Dst: erase
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:213,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 3
    argNames:
    - ' content'
    - ' now'
    - ' events'
    argTypes:
    - content_t
    - struct timeval
    - std::list<std::pair<uint16_t, std::unique_ptr<CrossProtocolQuery>>>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 215
      start: 208
    functionDepth: 0
    functionLinenumber: 208
    functionLinenumberEnd: 215
    functionName: dnsdist::AsynchronousHolder::pickupExpired
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc
    functionUses: 2
    functionsReached:
    - dnsdist::AsynchronousHolder::get
    - std::move
    - end
    - emplace_back
    - begin
    - erase
    linkageType: ''
    returnType: void
    signature: void AsynchronousHolder::pickupExpired(content_t& content, const struct
      timeval& now, std::list<std::pair<uint16_t, std::unique_ptr<CrossProtocolQuery>>>&
      events)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::AsynchronousHolder::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:219,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:220,1
    - Dst: dnsdist::AsynchronousHolder::get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:223,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - ' content'
    argTypes:
    - content_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 224
      start: 217
    functionDepth: 1
    functionLinenumber: 217
    functionLinenumberEnd: 224
    functionName: dnsdist::AsynchronousHolder::getNextTTD
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc
    functionUses: 4
    functionsReached:
    - dnsdist::AsynchronousHolder::get
    - dnsdist::AsynchronousHolder::empty
    - std::runtime_error
    linkageType: ''
    returnType: struct timeval
    signature: struct timeval AsynchronousHolder::getNextTTD(const content_t& content)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: d_content::read_only_lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:228,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 229
      start: 226
    functionDepth: 0
    functionLinenumber: 226
    functionLinenumberEnd: 229
    functionName: dnsdist::AsynchronousHolder::empty
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc
    functionUses: 4
    functionsReached:
    - d_content::read_only_lock
    linkageType: ''
    returnType: bool
    signature: bool AsynchronousHolder::empty()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: getDR
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:235,1
    - Dst: processResponseAfterRules
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:237,1
    - Dst: getTCPQuerySender
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:243,1
    - Dst: gettimeofday
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:246,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:248,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:248,1
    - Dst: auto::handleResponse
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:250,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:250,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:254,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:254,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:254,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:255,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:255,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 1
    argNames:
    - ' response'
    argTypes:
    - std::unique_ptr<CrossProtocolQuery>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 260
      start: 231
    functionDepth: 1
    functionLinenumber: 231
    functionLinenumberEnd: 260
    functionName: dnsdist::resumeResponse
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc
    functionUses: 1
    functionsReached:
    - auto::handleResponse
    - processResponseAfterRules
    - std::move
    - what
    - getDR
    - VERBOSESLOG
    - infolog
    - getTCPQuerySender
    - gettimeofday
    - dnsdist::logging::getTopLogger
    linkageType: ''
    returnType: bool
    signature: bool resumeResponse(std::unique_ptr<CrossProtocolQuery>&& response)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:266,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:266,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - ' query'
    argTypes:
    - std::unique_ptr<CrossProtocolQuery>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 268
      start: 264
    functionDepth: 0
    functionLinenumber: 264
    functionLinenumberEnd: 268
    functionName: dnsdist::queueQueryResumptionEvent
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc
    functionUses: 6
    functionsReached:
    - std::move
    - lock
    linkageType: ''
    returnType: bool
    signature: bool queueQueryResumptionEvent(std::unique_ptr<CrossProtocolQuery>&&
      query)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:276,1
    - Dst: auto::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:277,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:281,1
    - Dst: auto::front
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:281,1
    - Dst: auto::pop_front
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:282,1
    - Dst: dnsdist::resumeQuery
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:284,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:284,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:285,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:285,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:286,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 289
      start: 270
    functionDepth: 3
    functionLinenumber: 270
    functionLinenumberEnd: 289
    functionName: dnsdist::handleQueuedAsynchronousEvents
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc
    functionUses: 14
    functionsReached:
    - std::move
    - VERBOSESLOG
    - infolog
    - lock
    - auto::front
    - dnsdist::logging::getTopLogger
    - dnsdist::resumeQuery
    - auto::pop_front
    - auto::empty
    linkageType: ''
    returnType: void
    signature: void handleQueuedAsynchronousEvents()
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::resumeResponse
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:294,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:294,1
    - Dst: getDQ
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:297,1
    - Dst: processQueryAfterRules
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:299,1
    - Dst: downstream::isTCPOnly
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:315,1
    - Dst: DNSQuestion::getProtocol
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:315,1
    - Dst: DNSQuestion::getProtocol
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:315,1
    - Dst: downstream::passCrossProtocolQuery
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:316,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:316,1
    - Dst: DNSQuestion::getHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:320,1
    - Dst: assignOutgoingUDPQueryToBackend
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:324,1
    - Dst: getTCPQuerySender
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:327,1
    - Dst: gettimeofday
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:333,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:335,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:335,1
    - Dst: auto::handleResponse
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:340,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:340,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:344,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:344,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:344,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:345,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:345,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:351,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:351,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:352,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 40
    argCount: 1
    argNames:
    - ' query'
    argTypes:
    - std::unique_ptr<CrossProtocolQuery>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 357
      start: 291
    functionDepth: 2
    functionLinenumber: 291
    functionLinenumberEnd: 357
    functionName: dnsdist::resumeQuery
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc
    functionUses: 2
    functionsReached:
    - auto::handleResponse
    - errlog
    - std::move
    - SLOG
    - downstream::isTCPOnly
    - dnsdist::resumeResponse
    - what
    - processQueryAfterRules
    - VERBOSESLOG
    - downstream::passCrossProtocolQuery
    - getDQ
    - infolog
    - getTCPQuerySender
    - assignOutgoingUDPQueryToBackend
    - DNSQuestion::getProtocol
    - gettimeofday
    - dnsdist::logging::getTopLogger
    - DNSQuestion::getHeader
    linkageType: ''
    returnType: bool
    signature: bool resumeQuery(std::unique_ptr<CrossProtocolQuery>&& query)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: gettimeofday
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:366,1
    - Dst: static_cast<decltype(ttd.tv_usec)>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:369,1
    - Dst: normalizeTV
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:370,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:372,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:372,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:373,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:373,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:373,1
    - Dst: dnsdist::getInternalQueryFromDQ
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:374,1
    - Dst: push
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:376,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:376,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 4
    argNames:
    - ' dnsQuestion'
    - asyncID
    - queryID
    - timeoutMs
    argTypes:
    - DNSQuestion
    - uint16_t
    - uint16_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 378
      start: 359
    functionDepth: 0
    functionLinenumber: 359
    functionLinenumberEnd: 378
    functionName: dnsdist::suspendQuery
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc
    functionUses: 2
    functionsReached:
    - getLogger
    - std::move
    - push
    - Logging::Loggable
    - VERBOSESLOG
    - infolog
    - gettimeofday
    - dnsdist::getInternalQueryFromDQ
    - static_cast<decltype(ttd.tv_usec)>
    - normalizeTV
    linkageType: ''
    returnType: bool
    signature: bool suspendQuery(DNSQuestion& dnsQuestion, uint16_t asyncID, uint16_t
      queryID, uint32_t timeoutMs)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: gettimeofday
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:387,1
    - Dst: static_cast<decltype(ttd.tv_usec)>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:390,1
    - Dst: normalizeTV
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:391,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:393,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:393,1
    - Dst: getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:394,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:394,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:394,1
    - Dst: dnsdist::getInternalQueryFromDQ
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:395,1
    - Dst: push
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:399,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc:399,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 4
    argNames:
    - ' dnsResponse'
    - asyncID
    - queryID
    - timeoutMs
    argTypes:
    - DNSResponse
    - uint16_t
    - uint16_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 401
      start: 380
    functionDepth: 0
    functionLinenumber: 380
    functionLinenumberEnd: 401
    functionName: dnsdist::suspendResponse
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc
    functionUses: 2
    functionsReached:
    - getLogger
    - std::move
    - push
    - Logging::Loggable
    - VERBOSESLOG
    - infolog
    - gettimeofday
    - dnsdist::getInternalQueryFromDQ
    - static_cast<decltype(ttd.tv_usec)>
    - normalizeTV
    linkageType: ''
    returnType: bool
    signature: bool suspendResponse(DNSResponse& dnsResponse, uint16_t asyncID, uint16_t
      queryID, uint32_t timeoutMs)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 79
    functionDepth: 0
    functionLinenumber: 79
    functionLinenumberEnd: 79
    functionName: dnsdist::AsynchronousHolder::Data
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-async.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Data(const Data&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 80
    functionDepth: 0
    functionLinenumber: 80
    functionLinenumberEnd: 80
    functionName: dnsdist::AsynchronousHolder::Data
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-async.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Data(Data&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 81
    functionDepth: 0
    functionLinenumber: 81
    functionLinenumberEnd: 81
    functionName: '& operator=(const Data&)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-async.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Data
    signature: Data & operator=(const Data&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 82
    functionDepth: 0
    functionLinenumber: 82
    functionLinenumberEnd: 82
    functionName: '& operator=(Data&&)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-async.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Data
    signature: Data & operator=(Data&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 83
    functionDepth: 0
    functionLinenumber: 83
    functionLinenumberEnd: 83
    functionName: ~Data()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-async.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~Data()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 79
    functionDepth: 0
    functionLinenumber: 79
    functionLinenumberEnd: 79
    functionName: dnsdist::AsynchronousHolder::Data
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-async.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Data(const Data&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 80
    functionDepth: 0
    functionLinenumber: 80
    functionLinenumberEnd: 80
    functionName: dnsdist::AsynchronousHolder::Data
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-async.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Data(Data&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 81
    functionDepth: 0
    functionLinenumber: 81
    functionLinenumberEnd: 81
    functionName: '& operator=(const Data&)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-async.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Data
    signature: Data & operator=(const Data&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 82
    functionDepth: 0
    functionLinenumber: 82
    functionLinenumberEnd: 82
    functionName: '& operator=(Data&&)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-async.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Data
    signature: Data & operator=(Data&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 83
    functionDepth: 0
    functionLinenumber: 83
    functionLinenumberEnd: 83
    functionName: ~Data()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-async.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~Data()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: open
      Src: /src/pdns/pdns/dnsdistdist/cdb.cc:35,1
    - Dst: string::c_str
      Src: /src/pdns/pdns/dnsdistdist/cdb.cc:35,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/cdb.cc:38,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/cdb.cc:38,1
    - Dst: memset
      Src: /src/pdns/pdns/dnsdistdist/cdb.cc:41,1
    - Dst: cdb_init
      Src: /src/pdns/pdns/dnsdistdist/cdb.cc:42,1
    - Dst: close
      Src: /src/pdns/pdns/dnsdistdist/cdb.cc:45,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/cdb.cc:47,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/cdb.cc:47,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 1
    argNames:
    - cdbfile
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 33
    functionDepth: 0
    functionLinenumber: 33
    functionLinenumberEnd: 49
    functionName: CDB::CDB
    functionSourceFile: /src/pdns/pdns/dnsdistdist/cdb.cc
    functionUses: 0
    functionsReached:
    - string::c_str
    - std::to_string
    - std::runtime_error
    - stringerror
    - cdb_init
    - open
    - memset
    - close
    linkageType: ''
    returnType: void
    signature: void CDB::CDB(const string &cdbfile)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: cdb_free
      Src: /src/pdns/pdns/dnsdistdist/cdb.cc:52,1
    - Dst: close
      Src: /src/pdns/pdns/dnsdistdist/cdb.cc:53,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 51
    functionDepth: 0
    functionLinenumber: 51
    functionLinenumberEnd: 54
    functionName: CDB::~CDB()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/cdb.cc
    functionUses: 0
    functionsReached:
    - cdb_free
    - close
    linkageType: ''
    returnType: void
    signature: void CDB::~CDB()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: cdb_findinit
      Src: /src/pdns/pdns/dnsdistdist/cdb.cc:62,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/cdb.cc:62,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/cdb.cc:62,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - key
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 56
    functionDepth: 0
    functionLinenumber: 56
    functionLinenumberEnd: 63
    functionName: CDB::searchKey
    functionSourceFile: /src/pdns/pdns/dnsdistdist/cdb.cc
    functionUses: 0
    functionsReached:
    - c_str
    - cdb_findinit
    - size
    linkageType: ''
    returnType: int
    signature: int CDB::searchKey(const string &key)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: cdb_find
      Src: /src/pdns/pdns/dnsdistdist/cdb.cc:72,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/cdb.cc:72,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/cdb.cc:72,1
    - Dst: cdb_seqinit
      Src: /src/pdns/pdns/dnsdistdist/cdb.cc:74,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - key
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 65
    functionDepth: 0
    functionLinenumber: 65
    functionLinenumberEnd: 78
    functionName: CDB::searchSuffix
    functionSourceFile: /src/pdns/pdns/dnsdistdist/cdb.cc
    functionUses: 0
    functionsReached:
    - c_str
    - cdb_find
    - size
    - cdb_seqinit
    linkageType: ''
    returnType: bool
    signature: bool CDB::searchSuffix(const string &key)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: cdb_seqinit
      Src: /src/pdns/pdns/dnsdistdist/cdb.cc:82,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 80
    functionDepth: 0
    functionLinenumber: 80
    functionLinenumberEnd: 83
    functionName: CDB::searchAll
    functionSourceFile: /src/pdns/pdns/dnsdistdist/cdb.cc
    functionUses: 0
    functionsReached:
    - cdb_seqinit
    linkageType: ''
    returnType: void
    signature: void CDB::searchAll()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: cdb_findnext
      Src: /src/pdns/pdns/dnsdistdist/cdb.cc:88,1
    - Dst: cdb_seqnext
      Src: /src/pdns/pdns/dnsdistdist/cdb.cc:90,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 85
    functionDepth: 0
    functionLinenumber: 85
    functionLinenumberEnd: 93
    functionName: CDB::moveToNext
    functionSourceFile: /src/pdns/pdns/dnsdistdist/cdb.cc
    functionUses: 1
    functionsReached:
    - cdb_findnext
    - cdb_seqnext
    linkageType: ''
    returnType: bool
    signature: bool CDB::moveToNext()
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: CDB::moveToNext
      Src: /src/pdns/pdns/dnsdistdist/cdb.cc:96,1
    - Dst: cdb_keypos
      Src: /src/pdns/pdns/dnsdistdist/cdb.cc:100,1
    - Dst: cdb_keylen
      Src: /src/pdns/pdns/dnsdistdist/cdb.cc:101,1
    - Dst: std::string::resize
      Src: /src/pdns/pdns/dnsdistdist/cdb.cc:104,1
    - Dst: cdb_read
      Src: /src/pdns/pdns/dnsdistdist/cdb.cc:105,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/cdb.cc:107,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/cdb.cc:107,1
    - Dst: strstr
      Src: /src/pdns/pdns/dnsdistdist/cdb.cc:111,1
    - Dst: const_cast<char*>
      Src: /src/pdns/pdns/dnsdistdist/cdb.cc:111,1
    - Dst: std::string::c_str
      Src: /src/pdns/pdns/dnsdistdist/cdb.cc:111,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/cdb.cc:111,1
    - Dst: cdb_datapos
      Src: /src/pdns/pdns/dnsdistdist/cdb.cc:117,1
    - Dst: cdb_datalen
      Src: /src/pdns/pdns/dnsdistdist/cdb.cc:118,1
    - Dst: std::string::resize
      Src: /src/pdns/pdns/dnsdistdist/cdb.cc:120,1
    - Dst: cdb_read
      Src: /src/pdns/pdns/dnsdistdist/cdb.cc:121,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/cdb.cc:123,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/cdb.cc:123,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/cdb.cc:126,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/cdb.cc:126,1
    - Dst: clear
      Src: /src/pdns/pdns/dnsdistdist/cdb.cc:132,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 27
    argCount: 1
    argNames:
    - value
    argTypes:
    - pair<string, string>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 136
      start: 95
    functionDepth: 1
    functionLinenumber: 95
    functionLinenumberEnd: 136
    functionName: CDB::readNext
    functionSourceFile: /src/pdns/pdns/dnsdistdist/cdb.cc
    functionUses: 0
    functionsReached:
    - std::move
    - strstr
    - const_cast<char*>
    - std::to_string
    - std::runtime_error
    - cdb_datalen
    - std::string::c_str
    - std::string::resize
    - cdb_datapos
    - CDB::moveToNext
    - clear
    - cdb_keypos
    - c_str
    - cdb_keylen
    - cdb_read
    linkageType: ''
    returnType: bool
    signature: bool CDB::readNext(pair<string, string> &value)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: cdb_findinit
      Src: /src/pdns/pdns/dnsdistdist/cdb.cc:143,1
    - Dst: string::c_str
      Src: /src/pdns/pdns/dnsdistdist/cdb.cc:143,1
    - Dst: string::size
      Src: /src/pdns/pdns/dnsdistdist/cdb.cc:143,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/cdb.cc:145,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/cdb.cc:145,1
    - Dst: cdb_findnext
      Src: /src/pdns/pdns/dnsdistdist/cdb.cc:148,1
    - Dst: cdb_datapos
      Src: /src/pdns/pdns/dnsdistdist/cdb.cc:149,1
    - Dst: cdb_datalen
      Src: /src/pdns/pdns/dnsdistdist/cdb.cc:150,1
    - Dst: std::string::resize
      Src: /src/pdns/pdns/dnsdistdist/cdb.cc:152,1
    - Dst: cdb_read
      Src: /src/pdns/pdns/dnsdistdist/cdb.cc:153,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/cdb.cc:155,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/cdb.cc:155,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/dnsdistdist/cdb.cc:157,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/cdb.cc:157,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 1
    argNames:
    - key
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 161
      start: 138
    functionDepth: 1
    functionLinenumber: 138
    functionLinenumberEnd: 161
    functionName: CDB::findall
    functionSourceFile: /src/pdns/pdns/dnsdistdist/cdb.cc
    functionUses: 0
    functionsReached:
    - string::c_str
    - std::move
    - vector::push_back
    - string::size
    - cdb_findinit
    - std::to_string
    - std::runtime_error
    - cdb_datalen
    - cdb_findnext
    - std::string::resize
    - cdb_datapos
    - cdb_read
    linkageType: ''
    returnType: vector<string>
    signature: vector<string> CDB::findall(string &key)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: cdb_find
      Src: /src/pdns/pdns/dnsdistdist/cdb.cc:165,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/cdb.cc:165,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/cdb.cc:165,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/cdb.cc:167,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/cdb.cc:167,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - ' key'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 175
      start: 163
    functionDepth: 0
    functionLinenumber: 163
    functionLinenumberEnd: 175
    functionName: CDB::keyExists
    functionSourceFile: /src/pdns/pdns/dnsdistdist/cdb.cc
    functionUses: 1
    functionsReached:
    - std::to_string
    - std::runtime_error
    - cdb_find
    - size
    - c_str
    linkageType: ''
    returnType: bool
    signature: bool CDB::keyExists(const string& key)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: CDB::keyExists
      Src: /src/pdns/pdns/dnsdistdist/cdb.cc:179,1
    - Dst: cdb_datapos
      Src: /src/pdns/pdns/dnsdistdist/cdb.cc:183,1
    - Dst: cdb_datalen
      Src: /src/pdns/pdns/dnsdistdist/cdb.cc:184,1
    - Dst: resize
      Src: /src/pdns/pdns/dnsdistdist/cdb.cc:185,1
    - Dst: cdb_read
      Src: /src/pdns/pdns/dnsdistdist/cdb.cc:186,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/cdb.cc:188,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/cdb.cc:188,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - ' key'
    - ' value'
    argTypes:
    - string
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 192
      start: 177
    functionDepth: 1
    functionLinenumber: 177
    functionLinenumberEnd: 192
    functionName: CDB::findOne
    functionSourceFile: /src/pdns/pdns/dnsdistdist/cdb.cc
    functionUses: 0
    functionsReached:
    - resize
    - CDB::keyExists
    - std::runtime_error
    - cdb_datalen
    - std::to_string
    - cdb_datapos
    - cdb_read
    linkageType: ''
    returnType: bool
    signature: bool CDB::findOne(const string& key, string& value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: cdb_make_start
      Src: /src/pdns/pdns/dnsdistdist/cdb.cc:196,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - fd
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 197
      start: 194
    functionDepth: 0
    functionLinenumber: 194
    functionLinenumberEnd: 197
    functionName: CDBWriter::CDBWriter
    functionSourceFile: /src/pdns/pdns/dnsdistdist/cdb.cc
    functionUses: 0
    functionsReached:
    - cdb_make_start
    linkageType: ''
    returnType: void
    signature: void CDBWriter::CDBWriter(int fd)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CDBWriter::close
      Src: /src/pdns/pdns/dnsdistdist/cdb.cc:201,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 202
      start: 199
    functionDepth: 0
    functionLinenumber: 199
    functionLinenumberEnd: 202
    functionName: CDBWriter::~CDBWriter()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/cdb.cc
    functionUses: 0
    functionsReached:
    - CDBWriter::close
    linkageType: ''
    returnType: void
    signature: void CDBWriter::~CDBWriter()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: cdb_make_finish
      Src: /src/pdns/pdns/dnsdistdist/cdb.cc:207,1
    - Dst: TCPIOHandler::close
      Src: /src/pdns/pdns/dnsdistdist/cdb.cc:208,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 211
      start: 204
    functionDepth: 0
    functionLinenumber: 204
    functionLinenumberEnd: 211
    functionName: CDBWriter::close
    functionSourceFile: /src/pdns/pdns/dnsdistdist/cdb.cc
    functionUses: 3
    functionsReached:
    - TCPIOHandler::close
    - cdb_make_finish
    linkageType: ''
    returnType: void
    signature: void CDBWriter::close()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/cdb.cc:216,1
    - Dst: cdb_make_add
      Src: /src/pdns/pdns/dnsdistdist/cdb.cc:219,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/cdb.cc:219,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/cdb.cc:219,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/cdb.cc:219,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/cdb.cc:219,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/cdb.cc:221,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/cdb.cc:221,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 2
    argNames:
    - ' key'
    - ' value'
    argTypes:
    - std::string
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 225
      start: 213
    functionDepth: 0
    functionLinenumber: 213
    functionLinenumberEnd: 225
    functionName: CDBWriter::addEntry
    functionSourceFile: /src/pdns/pdns/dnsdistdist/cdb.cc
    functionUses: 1
    functionsReached:
    - std::to_string
    - std::runtime_error
    - size
    - cdb_make_add
    - c_str
    linkageType: ''
    returnType: bool
    signature: bool CDBWriter::addEntry(const std::string& key, const std::string&
      value)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: time
      Src: /src/pdns/pdns/dnsdistdist/cachecleaner.hh:36,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/cachecleaner.hh:38,1
    - Dst: template get<S>
      Src: /src/pdns/pdns/dnsdistdist/cachecleaner.hh:44,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/cachecleaner.hh:53,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/cachecleaner.hh:53,1
    - Dst: auto::isStale
      Src: /src/pdns/pdns/dnsdistdist/cachecleaner.hh:54,1
    - Dst: erase
      Src: /src/pdns/pdns/dnsdistdist/cachecleaner.hh:55,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/cachecleaner.hh:74,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/cachecleaner.hh:75,1
    - Dst: erase
      Src: /src/pdns/pdns/dnsdistdist/cachecleaner.hh:76,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 22
    argCount: 2
    argNames:
    - ' collection'
    - maxCached
    argTypes:
    - T
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 34
    functionDepth: 0
    functionLinenumber: 34
    functionLinenumberEnd: 78
    functionName: pruneCollection
    functionSourceFile: /src/pdns/pdns/dnsdistdist/cachecleaner.hh
    functionUses: 1
    functionsReached:
    - time
    - end
    - size
    - template get<S>
    - begin
    - erase
    - auto::isStale
    linkageType: ''
    returnType: void
    signature: void pruneCollection(T& collection, size_t maxCached, size_t scanFraction
      = 1000)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: template get<S>
      Src: /src/pdns/pdns/dnsdistdist/cachecleaner.hh:84,1
    - Dst: template project<S>
      Src: /src/pdns/pdns/dnsdistdist/cachecleaner.hh:85,1
    - Dst: relocate
      Src: /src/pdns/pdns/dnsdistdist/cachecleaner.hh:87,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/cachecleaner.hh:87,1
    - Dst: relocate
      Src: /src/pdns/pdns/dnsdistdist/cachecleaner.hh:90,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/cachecleaner.hh:90,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - ' collection'
    - ' iter'
    - front
    argTypes:
    - T
    - typename T::iterator
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 82
    functionDepth: 0
    functionLinenumber: 82
    functionLinenumberEnd: 92
    functionName: moveCacheItemToFrontOrBack
    functionSourceFile: /src/pdns/pdns/dnsdistdist/cachecleaner.hh
    functionUses: 2
    functionsReached:
    - end
    - template get<S>
    - template project<S>
    - relocate
    - begin
    linkageType: ''
    returnType: void
    signature: void moveCacheItemToFrontOrBack(T& collection, typename T::iterator&
      iter, bool front)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: moveCacheItemToFrontOrBack
      Src: /src/pdns/pdns/dnsdistdist/cachecleaner.hh:97,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' collection'
    - ' iter'
    argTypes:
    - T
    - typename T::iterator
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 95
    functionDepth: 0
    functionLinenumber: 95
    functionLinenumberEnd: 98
    functionName: moveCacheItemToFront
    functionSourceFile: /src/pdns/pdns/dnsdistdist/cachecleaner.hh
    functionUses: 0
    functionsReached:
    - moveCacheItemToFrontOrBack
    linkageType: ''
    returnType: void
    signature: void moveCacheItemToFront(T& collection, typename T::iterator& iter)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: moveCacheItemToFrontOrBack
      Src: /src/pdns/pdns/dnsdistdist/cachecleaner.hh:103,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' collection'
    - ' iter'
    argTypes:
    - T
    - typename T::iterator
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 104
      start: 101
    functionDepth: 0
    functionLinenumber: 101
    functionLinenumberEnd: 104
    functionName: moveCacheItemToBack
    functionSourceFile: /src/pdns/pdns/dnsdistdist/cachecleaner.hh
    functionUses: 4
    functionsReached:
    - moveCacheItemToFrontOrBack
    linkageType: ''
    returnType: void
    signature: void moveCacheItemToBack(T& collection, typename T::iterator& iter)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: time
      Src: /src/pdns/pdns/dnsdistdist/cachecleaner.hh:110,1
    - Dst: d_map::write_lock
      Src: /src/pdns/pdns/dnsdistdist/cachecleaner.hh:113,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/cachecleaner.hh:115,1
    - Dst: boost::multi_index::get<S>
      Src: /src/pdns/pdns/dnsdistdist/cachecleaner.hh:118,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/cachecleaner.hh:119,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/cachecleaner.hh:119,1
    - Dst: erase
      Src: /src/pdns/pdns/dnsdistdist/cachecleaner.hh:121,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 1
    argNames:
    - ' maps'
    argTypes:
    - std::vector<T>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 132
      start: 107
    functionDepth: 0
    functionLinenumber: 107
    functionLinenumberEnd: 132
    functionName: pruneLockedCollectionsVector
    functionSourceFile: /src/pdns/pdns/dnsdistdist/cachecleaner.hh
    functionUses: 2
    functionsReached:
    - d_map::write_lock
    - time
    - end
    - boost::multi_index::get<S>
    - begin
    - erase
    - auto::size
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t pruneLockedCollectionsVector(std::vector<T>& maps)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: std::max
      Src: /src/pdns/pdns/dnsdistdist/cachecleaner.hh:145,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/cachecleaner.hh:151,1
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/cachecleaner.hh:158,1
    - Dst: auto::d_map::size
      Src: /src/pdns/pdns/dnsdistdist/cachecleaner.hh:159,1
    - Dst: std::ceil
      Src: /src/pdns/pdns/dnsdistdist/cachecleaner.hh:160,1
    - Dst: auto::invalidate
      Src: /src/pdns/pdns/dnsdistdist/cachecleaner.hh:161,1
    - Dst: boost::multi_index::get<S>
      Src: /src/pdns/pdns/dnsdistdist/cachecleaner.hh:162,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/cachecleaner.hh:165,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/cachecleaner.hh:165,1
    - Dst: auto::isStale
      Src: /src/pdns/pdns/dnsdistdist/cachecleaner.hh:166,1
    - Dst: auto::preRemoval
      Src: /src/pdns/pdns/dnsdistdist/cachecleaner.hh:167,1
    - Dst: erase
      Src: /src/pdns/pdns/dnsdistdist/cachecleaner.hh:168,1
    - Dst: decEntriesCount
      Src: /src/pdns/pdns/dnsdistdist/cachecleaner.hh:170,1
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/cachecleaner.hh:214,1
    - Dst: auto::d_map::size
      Src: /src/pdns/pdns/dnsdistdist/cachecleaner.hh:215,1
    - Dst: std::round
      Src: /src/pdns/pdns/dnsdistdist/cachecleaner.hh:217,1
    - Dst: static_cast<double>
      Src: /src/pdns/pdns/dnsdistdist/cachecleaner.hh:217,1
    - Dst: auto::invalidate
      Src: /src/pdns/pdns/dnsdistdist/cachecleaner.hh:223,1
    - Dst: boost::multi_index::get<S>
      Src: /src/pdns/pdns/dnsdistdist/cachecleaner.hh:224,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/cachecleaner.hh:226,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/cachecleaner.hh:226,1
    - Dst: auto::preRemoval
      Src: /src/pdns/pdns/dnsdistdist/cachecleaner.hh:227,1
    - Dst: erase
      Src: /src/pdns/pdns/dnsdistdist/cachecleaner.hh:228,1
    - Dst: decEntriesCount
      Src: /src/pdns/pdns/dnsdistdist/cachecleaner.hh:229,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 47
    argCount: 4
    argNames:
    - now
    - ' maps'
    - maxCached
    - cacheSize
    argTypes:
    - time_t
    - std::vector<T>
    - uint64_t
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 237
      start: 135
    functionDepth: 0
    functionLinenumber: 135
    functionLinenumberEnd: 237
    functionName: pruneMutexCollectionsVector
    functionSourceFile: /src/pdns/pdns/dnsdistdist/cachecleaner.hh
    functionUses: 0
    functionsReached:
    - static_cast<double>
    - std::ceil
    - decEntriesCount
    - auto::d_map::size
    - end
    - size
    - lock
    - auto::preRemoval
    - std::round
    - auto::invalidate
    - boost::multi_index::get<S>
    - begin
    - std::max
    - erase
    - auto::isStale
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t pruneMutexCollectionsVector(time_t now, std::vector<T>& maps,
      uint64_t maxCached, uint64_t cacheSize)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: d_map::write_lock
      Src: /src/pdns/pdns/dnsdistdist/cachecleaner.hh:245,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/cachecleaner.hh:246,1
    - Dst: auto::clear
      Src: /src/pdns/pdns/dnsdistdist/cachecleaner.hh:247,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ' maps'
    argTypes:
    - std::vector<T>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 251
      start: 240
    functionDepth: 1
    functionLinenumber: 240
    functionLinenumberEnd: 251
    functionName: purgeLockedCollectionsVector
    functionSourceFile: /src/pdns/pdns/dnsdistdist/cachecleaner.hh
    functionUses: 7
    functionsReached:
    - d_map::write_lock
    - auto::clear
    - auto::size
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t purgeLockedCollectionsVector(std::vector<T>& maps)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::string::resize
      Src: /src/pdns/pdns/dnsdistdist/cachecleaner.hh:258,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/dnsdistdist/cachecleaner.hh:258,1
    - Dst: d_map::write_lock
      Src: /src/pdns/pdns/dnsdistdist/cachecleaner.hh:261,1
    - Dst: boost::multi_index::get<N>
      Src: /src/pdns/pdns/dnsdistdist/cachecleaner.hh:262,1
    - Dst: lower_bound
      Src: /src/pdns/pdns/dnsdistdist/cachecleaner.hh:263,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/cachecleaner.hh:266,1
    - Dst: auto::qname::isPartOf
      Src: /src/pdns/pdns/dnsdistdist/cachecleaner.hh:267,1
    - Dst: erase
      Src: /src/pdns/pdns/dnsdistdist/cachecleaner.hh:272,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 2
    argNames:
    - ' maps'
    - ' match'
    argTypes:
    - std::vector<T>
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 276
      start: 254
    functionDepth: 1
    functionLinenumber: 254
    functionLinenumberEnd: 276
    functionName: purgeLockedCollectionsVector
    functionSourceFile: /src/pdns/pdns/dnsdistdist/cachecleaner.hh
    functionUses: 7
    functionsReached:
    - d_map::write_lock
    - lower_bound
    - end
    - auto::qname::isPartOf
    - std::string::resize
    - boost::multi_index::get<N>
    - std::string::size
    - erase
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t purgeLockedCollectionsVector(std::vector<T>& maps, const std::string&
      match)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: d_map::write_lock
      Src: /src/pdns/pdns/dnsdistdist/cachecleaner.hh:282,1
    - Dst: boost::multi_index::get<N>
      Src: /src/pdns/pdns/dnsdistdist/cachecleaner.hh:283,1
    - Dst: equal_range
      Src: /src/pdns/pdns/dnsdistdist/cachecleaner.hh:284,1
    - Dst: distance
      Src: /src/pdns/pdns/dnsdistdist/cachecleaner.hh:286,1
    - Dst: erase
      Src: /src/pdns/pdns/dnsdistdist/cachecleaner.hh:287,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - ' shard'
    - ' qname'
    argTypes:
    - T
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 291
      start: 279
    functionDepth: 0
    functionLinenumber: 279
    functionLinenumberEnd: 291
    functionName: purgeExactLockedCollection
    functionSourceFile: /src/pdns/pdns/dnsdistdist/cachecleaner.hh
    functionUses: 3
    functionsReached:
    - d_map::write_lock
    - distance
    - equal_range
    - boost::multi_index::get<N>
    - erase
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t purgeExactLockedCollection(T& shard, const DNSName& qname)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: insert
      Src: /src/pdns/pdns/dnsdistdist/cachecleaner.hh:296,1
    - Dst: moveCacheItemToBack
      Src: /src/pdns/pdns/dnsdistdist/cachecleaner.hh:298,1
    - Dst: replace
      Src: /src/pdns/pdns/dnsdistdist/cachecleaner.hh:299,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - ' index'
    - ' value'
    argTypes:
    - Index
    - typename Index::value_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 303
      start: 294
    functionDepth: 1
    functionLinenumber: 294
    functionLinenumberEnd: 303
    functionName: lruReplacingInsert
    functionSourceFile: /src/pdns/pdns/dnsdistdist/cachecleaner.hh
    functionUses: 2
    functionsReached:
    - moveCacheItemToBack
    - replace
    - insert
    linkageType: ''
    returnType: bool
    signature: bool lruReplacingInsert(Index& index, const typename Index::value_type&
      value)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::IncomingConcurrentTCPConnectionsManager::accountClosedTCPConnection
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:69,1
    - Dst: gettimeofday
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:77,1
    - Dst: cs::updateTCPMetrics
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:80,1
    - Dst: close
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:86,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 66
    functionDepth: 2
    functionLinenumber: 66
    functionLinenumberEnd: 87
    functionName: IncomingTCPConnectionState::~IncomingTCPConnectionState()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc
    functionUses: 0
    functionsReached:
    - dnsdist::IncomingConcurrentTCPConnectionsManager::accountClosedTCPConnection
    - close
    - cs::updateTCPMetrics
    - gettimeofday
    linkageType: ''
    returnType: void
    signature: void IncomingTCPConnectionState::~IncomingTCPConnectionState()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: isTLS
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:94,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 89
    functionDepth: 0
    functionLinenumber: 89
    functionLinenumberEnd: 98
    functionName: IncomingTCPConnectionState::getProtocol
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc
    functionUses: 0
    functionsReached:
    - isTLS
    linkageType: ''
    returnType: dnsdist::Protocol
    signature: dnsdist::Protocol IncomingTCPConnectionState::getProtocol() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: clear
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:102,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 100
    functionDepth: 1
    functionLinenumber: 100
    functionLinenumberEnd: 103
    functionName: IncomingTCPConnectionState::clearAllDownstreamConnections
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc
    functionUses: 5
    functionsReached:
    - clear
    linkageType: ''
    returnType: size_t
    signature: size_t IncomingTCPConnectionState::clearAllDownstreamConnections()
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: find
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:108,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:109,1
    - Dst: DEBUGLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:110,1
    - Dst: getName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:110,1
    - Dst: canBeReused
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:115,1
    - Dst: matchesTLVs
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:116,1
    - Dst: DEBUGLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:117,1
    - Dst: getName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:117,1
    - Dst: setReused
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:118,1
    - Dst: DEBUGLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:122,1
    - Dst: getName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:122,1
    - Dst: DEBUGLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:125,1
    - Dst: getName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:125,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 3
    argNames:
    - ' ownedConnectionsToBackend'
    - ' backend'
    - ' tlvs'
    argTypes:
    - std::map<std::shared_ptr<DownstreamState>, std::deque<std::shared_ptr<TCPConnectionToBackend>>>
    - std::shared_ptr<DownstreamState>
    - std::unique_ptr<std::vector<ProxyProtocolValue>>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 129
      start: 105
    functionDepth: 0
    functionLinenumber: 105
    functionLinenumberEnd: 129
    functionName: getOwnedDownstreamConnection
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc
    functionUses: 0
    functionsReached:
    - canBeReused
    - getName
    - DEBUGLOG
    - setReused
    - end
    - matchesTLVs
    - find
    linkageType: ''
    returnType: std::pair<std::shared_ptr<TCPConnectionToBackend>, bool>
    signature: std::pair<std::shared_ptr<TCPConnectionToBackend>, bool> getOwnedDownstreamConnection(std::map<std::shared_ptr<DownstreamState>,
      std::deque<std::shared_ptr<TCPConnectionToBackend>>>& ownedConnectionsToBackend,
      const std::shared_ptr<DownstreamState>& backend, const std::unique_ptr<std::vector<ProxyProtocolValue>>&
      tlvs)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::configuration::getImmutableConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:137,1
    - Dst: tcpCurrentConnections::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:144,1
    - Dst: dnsdist::IncomingConcurrentTCPConnectionsManager::isClientOverThreshold
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:151,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 152
      start: 131
    functionDepth: 2
    functionLinenumber: 131
    functionLinenumberEnd: 152
    functionName: IncomingTCPConnectionState::isNearTCPLimits
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc
    functionUses: 0
    functionsReached:
    - dnsdist::IncomingConcurrentTCPConnectionsManager::isClientOverThreshold
    - tcpCurrentConnections::load
    - dnsdist::configuration::getImmutableConfiguration
    linkageType: ''
    returnType: bool
    signature: bool IncomingTCPConnectionState::isNearTCPLimits() const
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: getOwnedDownstreamConnection
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:156,1
    - Dst: IncomingTCPConnectionState::clearOwnedDownstreamConnections
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:160,1
    - Dst: getConnectionToDownstream
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:164,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:164,1
    - Dst: IncomingTCPConnectionState::registerOwnedDownstreamConnection
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:168,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 3
    argNames:
    - ' backend'
    - ' tlvs'
    - ' now'
    argTypes:
    - std::shared_ptr<DownstreamState>
    - std::unique_ptr<std::vector<ProxyProtocolValue>>
    - struct timeval
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 173
      start: 154
    functionDepth: 1
    functionLinenumber: 154
    functionLinenumberEnd: 173
    functionName: IncomingTCPConnectionState::getDownstreamConnection
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc
    functionUses: 0
    functionsReached:
    - IncomingTCPConnectionState::registerOwnedDownstreamConnection
    - IncomingTCPConnectionState::clearOwnedDownstreamConnections
    - getOwnedDownstreamConnection
    - std::string
    - getConnectionToDownstream
    linkageType: ''
    returnType: std::shared_ptr<TCPConnectionToBackend>
    signature: std::shared_ptr<TCPConnectionToBackend> IncomingTCPConnectionState::getDownstreamConnection(std::shared_ptr<DownstreamState>&
      backend, const std::unique_ptr<std::vector<ProxyProtocolValue>>& tlvs, const
      struct timeval& now)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TCPClientCollection::addTCPClientThread
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:181,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - maxThreads
    - tcpAcceptStates
    argTypes:
    - size_t
    - std::vector<ClientState*>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 183
      start: 177
    functionDepth: 1
    functionLinenumber: 177
    functionLinenumberEnd: 183
    functionName: TCPClientCollection::TCPClientCollection
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc
    functionUses: 0
    functionsReached:
    - TCPClientCollection::addTCPClientThread
    linkageType: ''
    returnType: void
    signature: void TCPClientCollection::TCPClientCollection(size_t maxThreads, std::vector<ClientState*>
      tcpAcceptStates)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::configuration::getImmutableConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:188,1
    - Dst: pdns::channel::createObjectQueue<ConnectionInfo>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:190,1
    - Dst: pdns::channel::createObjectQueue<CrossProtocolQuery>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:192,1
    - Dst: pdns::channel::createObjectQueue<TCPCrossProtocolResponse>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:194,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:196,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:196,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:197,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:199,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:200,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:200,1
    - Dst: load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:200,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:200,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:201,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:201,1
    - Dst: load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:201,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:201,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:201,1
    - Dst: std::thread::detach
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:209,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:212,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:212,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:212,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:213,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:213,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:217,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:217,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:221,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:221,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:221,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:222,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:222,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 1
    argNames:
    - ' tcpAcceptStates'
    argTypes:
    - std::vector<ClientState*>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 224
      start: 185
    functionDepth: 1
    functionLinenumber: 185
    functionLinenumberEnd: 224
    functionName: TCPClientCollection::addTCPClientThread
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc
    functionUses: 1
    functionsReached:
    - errlog
    - load
    - SLOG
    - pdns::channel::createObjectQueue<CrossProtocolQuery>
    - std::move
    - Logging::Loggable
    - pdns::channel::createObjectQueue<ConnectionInfo>
    - pdns::channel::createObjectQueue<TCPCrossProtocolResponse>
    - what
    - VERBOSESLOG
    - infolog
    - size
    - std::thread::detach
    - dnsdist::configuration::getImmutableConfiguration
    - dnsdist::logging::getTopLogger
    - at
    linkageType: ''
    returnType: void
    signature: void TCPClientCollection::addTCPClientThread(std::vector<ClientState*>&
      tcpAcceptStates)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: active
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:232,1
    - Dst: d_queuedResponses::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:232,1
    - Dst: DEBUGLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:233,1
    - Dst: d_queuedResponses::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:233,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:234,1
    - Dst: d_queuedResponses::front
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:234,1
    - Dst: d_queuedResponses::pop_front
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:235,1
    - Dst: sendResponse
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:237,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:237,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 2
    argNames:
    - ' state'
    - ' now'
    argTypes:
    - std::shared_ptr<IncomingTCPConnectionState>
    - struct timeval
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 245
      start: 228
    functionDepth: 0
    functionLinenumber: 228
    functionLinenumberEnd: 245
    functionName: sendQueuedResponses
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc
    functionUses: 0
    functionsReached:
    - std::move
    - DEBUGLOG
    - d_queuedResponses::pop_front
    - active
    - d_queuedResponses::front
    - d_queuedResponses::empty
    - d_queuedResponses::size
    - sendResponse
    linkageType: ''
    returnType: IOState
    signature: IOState sendQueuedResponses(std::shared_ptr<IncomingTCPConnectionState>&
      state, const struct timeval& now)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: d_connection::getDS
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:255,1
    - Dst: queryRealTime::udiff
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:258,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:259,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:259,1
    - Dst: d_config::remote::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:259,1
    - Dst: origRemote::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:259,1
    - Dst: IncomingTCPConnectionState::getProtocol
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:259,1
    - Dst: IncomingTCPConnectionState::getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:260,1
    - Dst: IncomingTCPConnectionState::getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:260,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:260,1
    - Dst: getName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:260,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:260,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:260,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:260,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:260,1
    - Dst: IncomingTCPConnectionState::getProtocol
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:262,1
    - Dst: IncomingTCPConnectionState::handleResponseSent
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:266,1
    - Dst: static_cast<unsigned int>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:266,1
    - Dst: IncomingTCPConnectionState::handleResponseSent
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:270,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:270,1
    - Dst: static_cast<unsigned int>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:270,1
    - Dst: d_buffer::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:270,1
    - Dst: d_buffer::clear
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:273,1
    - Dst: d_connection::reset
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:274,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 16
    argCount: 2
    argNames:
    - ' currentResponse'
    - sentBytes
    argTypes:
    - TCPResponse
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 275
      start: 247
    functionDepth: 2
    functionLinenumber: 247
    functionLinenumberEnd: 275
    functionName: IncomingTCPConnectionState::handleResponseSent
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc
    functionUses: 1
    functionsReached:
    - IncomingTCPConnectionState::getLogger
    - d_buffer::clear
    - d_buffer::size
    - queryRealTime::udiff
    - getName
    - d_connection::getDS
    - Logging::Loggable
    - IncomingTCPConnectionState::handleResponseSent
    - d_connection::reset
    - VERBOSESLOG
    - infolog
    - d_config::remote::toStringWithPort
    - static_cast<unsigned int>
    - origRemote::toStringWithPort
    - IncomingTCPConnectionState::getProtocol
    - ComboAddress
    linkageType: ''
    returnType: void
    signature: void IncomingTCPConnectionState::handleResponseSent(TCPResponse& currentResponse,
      size_t sentBytes)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:279,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:280,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:283,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:283,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:284,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:284,1
    - Dst: insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:288,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:288,1
    - Dst: static_cast<PacketBuffer::iterator::difference_type>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:288,1
    - Dst: std::array::begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:288,1
    - Dst: std::array::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:288,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - ' buffer'
    - proxyProtocolPayloadSize
    argTypes:
    - PacketBuffer
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 289
      start: 277
    functionDepth: 1
    functionLinenumber: 277
    functionLinenumberEnd: 289
    functionName: prependSizeToTCPQuery
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc
    functionUses: 0
    functionsReached:
    - static_cast<PacketBuffer::iterator::difference_type>
    - std::runtime_error
    - std::array::end
    - size
    - static_cast<uint8_t>
    - insert
    - begin
    - std::array::begin
    linkageType: ''
    returnType: void
    signature: void prependSizeToTCPQuery(PacketBuffer& buffer, size_t proxyProtocolPayloadSize)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: DEBUGLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:294,1
    - Dst: IncomingTCPConnectionState::isNearTCPLimits
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:298,1
    - Dst: DEBUGLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:300,1
    - Dst: DEBUGLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:306,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:310,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:312,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:312,1
    - Dst: remote::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:312,1
    - Dst: IncomingTCPConnectionState::getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:313,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:313,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:313,1
    - Dst: IncomingTCPConnectionState::maxConnectionDurationReached
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:317,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:318,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:318,1
    - Dst: remote::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:318,1
    - Dst: IncomingTCPConnectionState::getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:319,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 23
    argCount: 1
    argNames:
    - ' now'
    argTypes:
    - struct timeval
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 324
      start: 291
    functionDepth: 3
    functionLinenumber: 291
    functionLinenumberEnd: 324
    functionName: IncomingTCPConnectionState::canAcceptNewQueries
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc
    functionUses: 0
    functionsReached:
    - IncomingTCPConnectionState::getLogger
    - IncomingTCPConnectionState::isNearTCPLimits
    - remote::toStringWithPort
    - dnsdist::configuration::getCurrentRuntimeConfiguration
    - DEBUGLOG
    - Logging::Loggable
    - VERBOSESLOG
    - infolog
    - IncomingTCPConnectionState::maxConnectionDurationReached
    linkageType: ''
    returnType: bool
    signature: bool IncomingTCPConnectionState::canAcceptNewQueries(const struct timeval&
      now)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: clear
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:328,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 334
      start: 326
    functionDepth: 1
    functionLinenumber: 326
    functionLinenumberEnd: 334
    functionName: IncomingTCPConnectionState::resetForNewQuery
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc
    functionUses: 0
    functionsReached:
    - clear
    linkageType: ''
    returnType: void
    signature: void IncomingTCPConnectionState::resetForNewQuery()
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:338,1
    - Dst: IncomingTCPConnectionState::isNearTCPLimits
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:339,1
    - Dst: IncomingTCPConnectionState::isNearTCPLimits
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:346,1
    - Dst: std::min
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:349,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:356,1
    - Dst: IncomingTCPConnectionState::isNearTCPLimits
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:360,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:360,1
    - Dst: static_cast<time_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:361,1
    - Dst: static_cast<time_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:366,1
    - Dst: normalizeTV
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:368,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 22
    argCount: 1
    argNames:
    - now
    argTypes:
    - timeval
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 370
      start: 336
    functionDepth: 3
    functionLinenumber: 336
    functionLinenumberEnd: 370
    functionName: IncomingTCPConnectionState::getClientReadTTD
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc
    functionUses: 0
    functionsReached:
    - IncomingTCPConnectionState::isNearTCPLimits
    - static_cast<size_t>
    - dnsdist::configuration::getCurrentRuntimeConfiguration
    - std::min
    - static_cast<time_t>
    - normalizeTV
    linkageType: ''
    returnType: std::optional<timeval>
    signature: std::optional<timeval> IncomingTCPConnectionState::getClientReadTTD(timeval
      now) const
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:374,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:383,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:387,1
    - Dst: static_cast<time_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:388,1
    - Dst: static_cast<time_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:393,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 15
    argCount: 1
    argNames:
    - ' now'
    argTypes:
    - timeval
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 395
      start: 372
    functionDepth: 2
    functionLinenumber: 372
    functionLinenumberEnd: 395
    functionName: IncomingTCPConnectionState::getClientWriteTTD
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc
    functionUses: 0
    functionsReached:
    - static_cast<time_t>
    - static_cast<size_t>
    - dnsdist::configuration::getCurrentRuntimeConfiguration
    linkageType: ''
    returnType: std::optional<timeval>
    signature: std::optional<timeval> IncomingTCPConnectionState::getClientWriteTTD(const
      timeval& now) const
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - maxConnectionDuration
    - ' now'
    argTypes:
    - unsigned int
    - timeval
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 411
      start: 397
    functionDepth: 0
    functionLinenumber: 397
    functionLinenumberEnd: 411
    functionName: IncomingTCPConnectionState::maxConnectionDurationReached
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool IncomingTCPConnectionState::maxConnectionDurationReached(unsigned
      int maxConnectionDuration, const timeval& now) const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: getDS
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:415,1
    - Dst: std::max
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:424,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:424,1
    - Dst: std::max
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:426,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:426,1
    - Dst: std::min
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:427,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:427,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:427,1
    - Dst: push_front
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:429,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:430,1
    - Dst: pop_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:431,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - ' conn'
    argTypes:
    - std::shared_ptr<TCPConnectionToBackend>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 433
      start: 413
    functionDepth: 0
    functionLinenumber: 413
    functionLinenumberEnd: 433
    functionName: IncomingTCPConnectionState::registerOwnedDownstreamConnection
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc
    functionUses: 1
    functionsReached:
    - static_cast<size_t>
    - pop_back
    - std::min
    - size
    - getDS
    - push_front
    - std::max
    linkageType: ''
    returnType: void
    signature: void IncomingTCPConnectionState::registerOwnedDownstreamConnection(std::shared_ptr<TCPConnectionToBackend>&
      conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: erase
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:437,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' downstream'
    argTypes:
    - std::shared_ptr<DownstreamState>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 438
      start: 435
    functionDepth: 0
    functionLinenumber: 435
    functionLinenumberEnd: 438
    functionName: IncomingTCPConnectionState::clearOwnedDownstreamConnections
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc
    functionUses: 1
    functionsReached:
    - erase
    linkageType: ''
    returnType: void
    signature: void IncomingTCPConnectionState::clearOwnedDownstreamConnections(const
      std::shared_ptr<DownstreamState>& downstream)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<uint16_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:446,1
    - Dst: d_buffer::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:446,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:447,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:447,1
    - Dst: d_buffer::insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:451,1
    - Dst: d_buffer::begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:451,1
    - Dst: std::array::begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:451,1
    - Dst: std::array::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:451,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:453,1
    - Dst: tryWrite
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:456,1
    - Dst: d_buffer::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:456,1
    - Dst: DEBUGLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:458,1
    - Dst: IncomingTCPConnectionState::handleResponseSent
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:459,1
    - Dst: d_buffer::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:459,1
    - Dst: DEBUGLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:463,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:467,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:467,1
    - Dst: remote::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:467,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:467,1
    - Dst: IncomingTCPConnectionState::getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:468,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:468,1
    - Dst: IncomingTCPConnectionState::terminateClientConnection
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:471,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 21
    argCount: 2
    argNames:
    - ' now'
    - ' response'
    argTypes:
    - struct timeval
    - TCPResponse
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 475
      start: 441
    functionDepth: 1
    functionLinenumber: 441
    functionLinenumberEnd: 475
    functionName: IncomingTCPConnectionState::sendResponse
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc
    functionUses: 0
    functionsReached:
    - IncomingTCPConnectionState::getLogger
    - std::move
    - d_buffer::size
    - d_buffer::begin
    - remote::toStringWithPort
    - d_buffer::insert
    - DEBUGLOG
    - IncomingTCPConnectionState::terminateClientConnection
    - what
    - std::array::end
    - VERBOSESLOG
    - infolog
    - static_cast<uint8_t>
    - static_cast<uint16_t>
    - IncomingTCPConnectionState::handleResponseSent
    - std::array::begin
    - tryWrite
    linkageType: ''
    returnType: IOState
    signature: IOState IncomingTCPConnectionState::sendResponse(const struct timeval&
      now, TCPResponse&& response)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DEBUGLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:479,1
    - Dst: clear
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:480,1
    - Dst: release
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:485,1
    - Dst: clear
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:488,1
    - Dst: reset
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:492,1
    - Dst: getAsyncFDs
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:497,1
    - Dst: auto::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:498,1
    - Dst: close
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:499,1
    - Dst: shared_from_this
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:504,1
    - Dst: auto::d_threadData::mplexer::addReadFD
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:507,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 513
      start: 477
    functionDepth: 1
    functionLinenumber: 477
    functionLinenumberEnd: 513
    functionName: IncomingTCPConnectionState::terminateClientConnection
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc
    functionUses: 1
    functionsReached:
    - reset
    - DEBUGLOG
    - release
    - getAsyncFDs
    - auto::d_threadData::mplexer::addReadFD
    - clear
    - shared_from_this
    - close
    - auto::empty
    linkageType: ''
    returnType: void
    signature: void IncomingTCPConnectionState::terminateClientConnection()
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: d_idstate::getCloser
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:517,1
    - Dst: d_queuedResponses::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:519,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:519,1
    - Dst: DEBUGLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:520,1
    - Dst: d_queuedResponses::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:520,1
    - Dst: sendQueuedResponses
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:527,1
    - Dst: IncomingTCPConnectionState::active
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:529,1
    - Dst: IncomingTCPConnectionState::canAcceptNewQueries
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:530,1
    - Dst: IncomingTCPConnectionState::resetForNewQuery
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:531,1
    - Dst: IncomingTCPConnectionState::active
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:541,1
    - Dst: IncomingTCPConnectionState::updateIO
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:542,1
    - Dst: IncomingTCPConnectionState::handleIO
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:552,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 20
    argCount: 4
    argNames:
    - ' state'
    - ' now'
    - ' response'
    - fromBackend
    argTypes:
    - std::shared_ptr<IncomingTCPConnectionState>
    - struct timeval
    - TCPResponse
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 556
      start: 515
    functionDepth: 4
    functionLinenumber: 515
    functionLinenumberEnd: 556
    functionName: IncomingTCPConnectionState::queueResponse
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc
    functionUses: 0
    functionsReached:
    - std::move
    - IncomingTCPConnectionState::updateIO
    - DEBUGLOG
    - IncomingTCPConnectionState::canAcceptNewQueries
    - d_queuedResponses::emplace_back
    - IncomingTCPConnectionState::resetForNewQuery
    - d_idstate::getCloser
    - IncomingTCPConnectionState::active
    - d_queuedResponses::size
    - sendQueuedResponses
    - IncomingTCPConnectionState::handleIO
    linkageType: ''
    returnType: void
    signature: void IncomingTCPConnectionState::queueResponse(std::shared_ptr<IncomingTCPConnectionState>&
      state, const struct timeval& now, TCPResponse&& response, bool fromBackend)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: boost::any_cast<std::shared_ptr<IncomingTCPConnectionState>>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:560,1
    - Dst: auto::d_handler::getAsyncFDs
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:564,1
    - Dst: auto::d_threadData::mplexer::removeReadFD
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:567,1
    - Dst: auto::active
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:573,1
    - Dst: auto::handleIO
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:575,1
    - Dst: auto::d_handler::close
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:580,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - desc
    - ' param'
    argTypes:
    - int
    - FDMultiplexer::funcparam_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 582
      start: 558
    functionDepth: 0
    functionLinenumber: 558
    functionLinenumberEnd: 582
    functionName: IncomingTCPConnectionState::handleAsyncReady
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc
    functionUses: 0
    functionsReached:
    - auto::d_threadData::mplexer::removeReadFD
    - boost::any_cast<std::shared_ptr<IncomingTCPConnectionState>>
    - auto::d_handler::close
    - auto::d_handler::getAsyncFDs
    - auto::active
    - auto::handleIO
    linkageType: ''
    returnType: void
    signature: void IncomingTCPConnectionState::handleAsyncReady([[maybe_unused]]
      int desc, FDMultiplexer::funcparam_t& param)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: d_handler::getAsyncFDs
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:586,1
    - Dst: d_threadData::mplexer::addReadFD
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:588,1
    - Dst: d_ioState::update
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:590,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ' conn'
    argTypes:
    - std::shared_ptr<IncomingTCPConnectionState>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 591
      start: 584
    functionDepth: 0
    functionLinenumber: 584
    functionLinenumberEnd: 591
    functionName: IncomingTCPConnectionState::updateIOForAsync
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc
    functionUses: 0
    functionsReached:
    - d_threadData::mplexer::addReadFD
    - d_ioState::update
    - d_handler::getAsyncFDs
    linkageType: ''
    returnType: void
    signature: void IncomingTCPConnectionState::updateIOForAsync(std::shared_ptr<IncomingTCPConnectionState>&
      conn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: shared_from_this
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:595,1
    - Dst: IncomingTCPConnectionState::updateIOForAsync
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:597,1
    - Dst: update
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:601,1
    - Dst: IncomingTCPConnectionState::getClientWriteTTD
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:601,1
    - Dst: IncomingTCPConnectionState::getClientReadTTD
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:601,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - newState
    - ' now'
    argTypes:
    - IOState
    - struct timeval
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 602
      start: 593
    functionDepth: 4
    functionLinenumber: 593
    functionLinenumberEnd: 602
    functionName: IncomingTCPConnectionState::updateIO
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc
    functionUses: 1
    functionsReached:
    - IncomingTCPConnectionState::getClientReadTTD
    - IncomingTCPConnectionState::getClientWriteTTD
    - IncomingTCPConnectionState::updateIOForAsync
    - shared_from_this
    - update
    linkageType: ''
    returnType: void
    signature: void IncomingTCPConnectionState::updateIO(IOState newState, const struct
      timeval& now)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: d_idstate::getCloser
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:607,1
    - Dst: dnsdist_ffi_dnsquestion_get_id
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:608,1
    - Dst: IncomingTCPConnectionState::handleCrossProtocolResponse
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:609,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:609,1
    - Dst: shared_from_this
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:613,1
    - Dst: isAsync
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:615,1
    - Dst: d_connection::getDS
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:615,1
    - Dst: d_connection::getDS
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:615,1
    - Dst: d_connection::willBeReusable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:617,1
    - Dst: std::shared_ptr::d_ownedConnectionsToBackend::find
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:619,1
    - Dst: d_connection::getDS
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:619,1
    - Dst: std::shared_ptr::d_ownedConnectionsToBackend::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:620,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:623,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:623,1
    - Dst: d_connection::release
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:626,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:629,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:629,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:629,1
    - Dst: IncomingTCPConnectionState::getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:630,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:630,1
    - Dst: erase
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:632,1
    - Dst: d_buffer::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:640,1
    - Dst: std::shared_ptr::terminateClientConnection
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:641,1
    - Dst: isAsync
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:645,1
    - Dst: d_connection::getDS
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:648,1
    - Dst: responseContentMatches
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:649,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:649,1
    - Dst: std::shared_ptr::terminateClientConnection
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:650,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:661,1
    - Dst: DNSResponse::getHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:661,1
    - Dst: processResponse
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:663,1
    - Dst: std::shared_ptr::terminateClientConnection
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:664,1
    - Dst: DNSResponse::isAsynchronous
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:668,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:674,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:674,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:674,1
    - Dst: IncomingTCPConnectionState::getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:675,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:675,1
    - Dst: std::shared_ptr::terminateClientConnection
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:676,1
    - Dst: IncomingTCPConnectionState::queueResponse
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:684,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:684,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 53
    argCount: 2
    argNames:
    - ' now'
    - ' response'
    argTypes:
    - struct timeval
    - TCPResponse
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 685
      start: 605
    functionDepth: 2
    functionLinenumber: 605
    functionLinenumberEnd: 685
    functionName: IncomingTCPConnectionState::handleResponse
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc
    functionUses: 1
    functionsReached:
    - d_connection::getDS
    - processResponse
    - IncomingTCPConnectionState::queueResponse
    - std::shared_ptr::d_ownedConnectionsToBackend::end
    - d_connection::release
    - std::shared_ptr::d_ownedConnectionsToBackend::find
    - erase
    - std::shared_ptr::terminateClientConnection
    - begin
    - IncomingTCPConnectionState::getLogger
    - DNSResponse::getHeader
    - d_buffer::size
    - dnsdist::configuration::getCurrentRuntimeConfiguration
    - DNSResponse::isAsynchronous
    - VERBOSESLOG
    - isAsync
    - d_connection::willBeReusable
    - memcpy
    - std::move
    - responseContentMatches
    - what
    - end
    - infolog
    - IncomingTCPConnectionState::handleCrossProtocolResponse
    - dnsdist_ffi_dnsquestion_get_id
    - d_idstate::getCloser
    - shared_from_this
    linkageType: ''
    returnType: void
    signature: void IncomingTCPConnectionState::handleResponse(const struct timeval&
      now, TCPResponse&& response)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:690,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - ' response'
    - ' state'
    - ' now'
    argTypes:
    - TCPResponse
    - std::shared_ptr<IncomingTCPConnectionState>
    - struct timeval
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 692
      start: 689
    functionDepth: 0
    functionLinenumber: 689
    functionLinenumberEnd: 692
    functionName: TCPCrossProtocolResponse
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void TCPCrossProtocolResponse(TCPResponse&& response, std::shared_ptr<IncomingTCPConnectionState>&
      state, const struct timeval& now)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 693
      start: 693
    functionDepth: 0
    functionLinenumber: 693
    functionLinenumberEnd: 693
    functionName: TCPCrossProtocolResponse
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void TCPCrossProtocolResponse(const TCPCrossProtocolResponse&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 694
      start: 694
    functionDepth: 0
    functionLinenumber: 694
    functionLinenumberEnd: 694
    functionName: '& operator=(const TCPCrossProtocolResponse&)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: TCPCrossProtocolResponse
    signature: TCPCrossProtocolResponse & operator=(const TCPCrossProtocolResponse&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 695
      start: 695
    functionDepth: 0
    functionLinenumber: 695
    functionLinenumberEnd: 695
    functionName: TCPCrossProtocolResponse
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void TCPCrossProtocolResponse(TCPCrossProtocolResponse&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 696
      start: 696
    functionDepth: 0
    functionLinenumber: 696
    functionLinenumberEnd: 696
    functionName: '& operator=(TCPCrossProtocolResponse&&)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: TCPCrossProtocolResponse
    signature: TCPCrossProtocolResponse & operator=(TCPCrossProtocolResponse&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 697
      start: 697
    functionDepth: 0
    functionLinenumber: 697
    functionLinenumberEnd: 697
    functionName: ~TCPCrossProtocolResponse()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~TCPCrossProtocolResponse()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: InternalQuery
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:708,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:708,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:708,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:708,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 1
    argCount: 4
    argNames:
    - ' buffer'
    - ' ids'
    - backend
    - sender
    argTypes:
    - PacketBuffer
    - InternalQueryState
    - std::shared_ptr<DownstreamState>
    - std::shared_ptr<IncomingTCPConnectionState>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 710
      start: 707
    functionDepth: 0
    functionLinenumber: 707
    functionLinenumberEnd: 710
    functionName: TCPCrossProtocolQuery::TCPCrossProtocolQuery
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc
    functionUses: 0
    functionsReached:
    - std::move
    - InternalQuery
    linkageType: ''
    returnType: void
    signature: void TCPCrossProtocolQuery(PacketBuffer&& buffer, InternalQueryState&&
      ids, std::shared_ptr<DownstreamState> backend, std::shared_ptr<IncomingTCPConnectionState>
      sender)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 711
      start: 711
    functionDepth: 0
    functionLinenumber: 711
    functionLinenumberEnd: 711
    functionName: TCPCrossProtocolQuery::TCPCrossProtocolQuery
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void TCPCrossProtocolQuery(const TCPCrossProtocolQuery&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 712
      start: 712
    functionDepth: 0
    functionLinenumber: 712
    functionLinenumberEnd: 712
    functionName: '& operator=(const TCPCrossProtocolQuery&)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: TCPCrossProtocolQuery
    signature: TCPCrossProtocolQuery & operator=(const TCPCrossProtocolQuery&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 713
      start: 713
    functionDepth: 0
    functionLinenumber: 713
    functionLinenumberEnd: 713
    functionName: TCPCrossProtocolQuery::TCPCrossProtocolQuery
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void TCPCrossProtocolQuery(TCPCrossProtocolQuery&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 714
      start: 714
    functionDepth: 0
    functionLinenumber: 714
    functionLinenumberEnd: 714
    functionName: '& operator=(TCPCrossProtocolQuery&&)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: TCPCrossProtocolQuery
    signature: TCPCrossProtocolQuery & operator=(TCPCrossProtocolQuery&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 715
      start: 715
    functionDepth: 0
    functionLinenumber: 715
    functionLinenumberEnd: 715
    functionName: ~TCPCrossProtocolQuery() override
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~TCPCrossProtocolQuery() override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 720
      start: 717
    functionDepth: 0
    functionLinenumber: 717
    functionLinenumberEnd: 720
    functionName: TCPCrossProtocolQuery::getTCPQuerySender
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::shared_ptr<TCPQuerySender>
    signature: std::shared_ptr<TCPQuerySender> getTCPQuerySender() override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 728
      start: 722
    functionDepth: 0
    functionLinenumber: 722
    functionLinenumberEnd: 728
    functionName: TCPCrossProtocolQuery::getDQ
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: DNSQuestion
    signature: DNSQuestion getDQ() override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 736
      start: 730
    functionDepth: 0
    functionLinenumber: 730
    functionLinenumberEnd: 736
    functionName: TCPCrossProtocolQuery::getDR
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: DNSResponse
    signature: DNSResponse getDR() override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::make_unique<TCPCrossProtocolQuery>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:744,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:744,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:744,1
    - Dst: shared_from_this
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:744,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 2
    argCount: 3
    argNames:
    - ' query'
    - ' state'
    - ' backend'
    argTypes:
    - PacketBuffer
    - InternalQueryState
    - std::shared_ptr<DownstreamState>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 745
      start: 742
    functionDepth: 0
    functionLinenumber: 742
    functionLinenumberEnd: 745
    functionName: IncomingTCPConnectionState::getCrossProtocolQuery
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc
    functionUses: 0
    functionsReached:
    - std::make_unique<TCPCrossProtocolQuery>
    - std::move
    - shared_from_this
    linkageType: ''
    returnType: std::unique_ptr<CrossProtocolQuery>
    signature: std::unique_ptr<CrossProtocolQuery> IncomingTCPConnectionState::getCrossProtocolQuery(PacketBuffer&&
      query, InternalQueryState&& state, const std::shared_ptr<DownstreamState>& backend)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: getIncomingTCPState
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:749,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:751,1
    - Dst: getHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:754,1
    - Dst: std::make_unique<TCPCrossProtocolQuery>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:755,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:755,1
    - Dst: getMutableData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:755,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:755,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:755,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - ' dnsQuestion'
    argTypes:
    - DNSQuestion
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 756
      start: 747
    functionDepth: 1
    functionLinenumber: 747
    functionLinenumberEnd: 756
    functionName: getTCPCrossProtocolQueryFromDQ
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc
    functionUses: 2
    functionsReached:
    - std::move
    - getMutableData
    - std::runtime_error
    - std::make_unique<TCPCrossProtocolQuery>
    - getIncomingTCPState
    - getHeader
    linkageType: ''
    returnType: std::unique_ptr<CrossProtocolQuery>
    signature: std::unique_ptr<CrossProtocolQuery> getTCPCrossProtocolQueryFromDQ(DNSQuestion&
      dnsQuestion)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: d_idstate::getCloser
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:760,1
    - Dst: shared_from_this
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:761,1
    - Dst: std::make_unique<TCPCrossProtocolResponse>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:763,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:763,1
    - Dst: std::shared_ptr::d_threadData::crossProtocolResponseSender::send
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:764,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:764,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:766,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:766,1
    - Dst: IncomingTCPConnectionState::getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:767,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:771,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:771,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:771,1
    - Dst: IncomingTCPConnectionState::getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:772,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:772,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - ' now'
    - ' response'
    argTypes:
    - struct timeval
    - TCPResponse
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 774
      start: 758
    functionDepth: 0
    functionLinenumber: 758
    functionLinenumberEnd: 774
    functionName: IncomingTCPConnectionState::handleCrossProtocolResponse
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc
    functionUses: 1
    functionsReached:
    - IncomingTCPConnectionState::getLogger
    - std::move
    - std::shared_ptr::d_threadData::crossProtocolResponseSender::send
    - what
    - VERBOSESLOG
    - infolog
    - std::make_unique<TCPCrossProtocolResponse>
    - d_idstate::getCloser
    - shared_from_this
    linkageType: ''
    returnType: void
    signature: void IncomingTCPConnectionState::handleCrossProtocolResponse(const
      struct timeval& now, TCPResponse&& response)
  - BBCount: 34
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:778,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:779,1
    - Dst: isTLS
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:789,1
    - Dst: getTLSVersion
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:790,1
    - Dst: shared_from_this
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:809,1
    - Dst: InternalQueryState::queryRealTime::start
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:814,1
    - Dst: checkDNSCryptQuery
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:819,1
    - Dst: IncomingTCPConnectionState::queueResponse
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:824,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:824,1
    - Dst: auto::data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:830,1
    - Dst: checkQueryHeaders
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:831,1
    - Dst: dnsdist::PacketMangling::editDNSHeaderFromPacket
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:838,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:843,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:846,1
    - Dst: IncomingTCPConnectionState::queueResponse
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:849,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:849,1
    - Dst: InternalQueryState::getCloser
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:855,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:858,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:858,1
    - Dst: auto::data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:858,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:858,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:858,1
    - Dst: IncomingTCPConnectionState::getProtocol
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:859,1
    - Dst: dnsdist::PacketMangling::editDNSHeaderFromPacket
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:865,1
    - Dst: DNSQuestion::getMutableData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:865,1
    - Dst: getFlagsFromDNSHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:866,1
    - Dst: getServerNameIndication
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:871,1
    - Dst: make_unique<std::vector<ProxyProtocolValue>>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:876,1
    - Dst: IncomingTCPConnectionState::forwardViaUDPFirst
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:883,1
    - Dst: auto::data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:886,1
    - Dst: addEDNS
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:888,1
    - Dst: IncomingTCPConnectionState::getDOHUnit
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:895,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:897,1
    - Dst: processQuery
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:902,1
    - Dst: IncomingTCPConnectionState::restoreDOHUnit
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:911,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:911,1
    - Dst: DNSQuestion::getHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:921,1
    - Dst: DNSQuestion::getHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:928,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:929,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:929,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:931,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:935,1
    - Dst: IncomingTCPConnectionState::queueResponse
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:939,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:939,1
    - Dst: std::shared_ptr::isDoH
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:952,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:953,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:953,1
    - Dst: InternalQueryState::qname::toLogString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:953,1
    - Dst: QType
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:953,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:953,1
    - Dst: IncomingTCPConnectionState::getProtocol
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:953,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:953,1
    - Dst: std::shared_ptr::getNameWithAddr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:953,1
    - Dst: InternalQueryState::getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:954,1
    - Dst: IncomingTCPConnectionState::getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:954,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:954,1
    - Dst: std::shared_ptr::getName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:954,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:954,1
    - Dst: getProxyProtocolPayload
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:959,1
    - Dst: std::make_unique<TCPCrossProtocolQuery>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:962,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:962,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:962,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:963,1
    - Dst: std::shared_ptr::passCrossProtocolQuery
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:965,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:965,1
    - Dst: std::shared_ptr::isTCPOnly
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:968,1
    - Dst: IncomingTCPConnectionState::forwardViaUDPFirst
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:968,1
    - Dst: IncomingTCPConnectionState::getDOHUnit
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:970,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:972,1
    - Dst: assignOutgoingUDPQueryToBackend
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:975,1
    - Dst: IncomingTCPConnectionState::restoreDOHUnit
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:978,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:978,1
    - Dst: prependSizeToTCPQuery
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:982,1
    - Dst: DNSQuestion::ids::getCloser
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:986,1
    - Dst: IncomingTCPConnectionState::getDownstreamConnection
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:987,1
    - Dst: DNSQuestion::proxyProtocolValues::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:993,1
    - Dst: getProxyProtocolPayload
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:996,1
    - Dst: std::shared_ptr::setProxyProtocolValuesSent
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1000,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1000,1
    - Dst: DNSQuestion::ids::getCloser
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1005,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1006,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1006,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1007,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1010,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1010,1
    - Dst: TCPQuery::d_idstate::qname::toLogString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1010,1
    - Dst: QType
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1010,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1010,1
    - Dst: IncomingTCPConnectionState::getProtocol
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1010,1
    - Dst: TCPQuery::d_buffer::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1010,1
    - Dst: std::shared_ptr::getNameWithAddr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1010,1
    - Dst: TCPQuery::d_idstate::getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1011,1
    - Dst: IncomingTCPConnectionState::getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1011,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1011,1
    - Dst: std::shared_ptr::getName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1011,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1011,1
    - Dst: std::shared_ptr::queueQuery
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1014,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1014,1
    CyclomaticComplexity: 38
    EdgeCount: 38
    ICount: 156
    argCount: 3
    argNames:
    - ' queryIn'
    - ' now'
    - streamID
    argTypes:
    - PacketBuffer
    - struct timeval
    - std::optional<int32_t>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1016
      start: 776
    functionDepth: 2
    functionLinenumber: 776
    functionLinenumberEnd: 1016
    functionName: IncomingTCPConnectionState::handleQuery
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc
    functionUses: 0
    functionsReached:
    - InternalQueryState::qname::toLogString
    - processQuery
    - IncomingTCPConnectionState::queueResponse
    - getFlagsFromDNSHeader
    - addEDNS
    - std::shared_ptr::getNameWithAddr
    - IncomingTCPConnectionState::getDOHUnit
    - DNSQuestion::getHeader
    - auto::size
    - static_cast<int>
    - IncomingTCPConnectionState::restoreDOHUnit
    - std::shared_ptr::isTCPOnly
    - InternalQueryState::getCloser
    - std::shared_ptr::getName
    - Logging::Loggable
    - std::make_unique<TCPCrossProtocolQuery>
    - DNSQuestion::ids::getCloser
    - QType
    - prependSizeToTCPQuery
    - IncomingTCPConnectionState::getDownstreamConnection
    - std::shared_ptr::passCrossProtocolQuery
    - getProxyProtocolPayload
    - InternalQueryState::getLogger
    - IncomingTCPConnectionState::getLogger
    - auto::get
    - getServerNameIndication
    - TCPQuery::d_idstate::qname::toLogString
    - VERBOSESLOG
    - auto::data
    - DNSName
    - TCPQuery::d_buffer::size
    - checkDNSCryptQuery
    - reinterpret_cast<const char*>
    - assignOutgoingUDPQueryToBackend
    - std::shared_ptr::queueQuery
    - std::shared_ptr::isDoH
    - toStringWithPort
    - DNSQuestion::proxyProtocolValues::empty
    - TCPQuery::d_idstate::getLogger
    - DNSQuestion::getMutableData
    - memcpy
    - std::move
    - IncomingTCPConnectionState::forwardViaUDPFirst
    - getTLSVersion
    - infolog
    - make_unique<std::vector<ProxyProtocolValue>>
    - std::shared_ptr::setProxyProtocolValuesSent
    - checkQueryHeaders
    - isTLS
    - InternalQueryState::queryRealTime::start
    - dnsdist::PacketMangling::editDNSHeaderFromPacket
    - IncomingTCPConnectionState::getProtocol
    - shared_from_this
    linkageType: ''
    returnType: IncomingTCPConnectionState::QueryProcessingResult
    signature: IncomingTCPConnectionState::QueryProcessingResult IncomingTCPConnectionState::handleQuery(PacketBuffer&&
      queryIn, const struct timeval& now, std::optional<int32_t> streamID)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: boost::any_cast<std::shared_ptr<IncomingTCPConnectionState>>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1020,1
    - Dst: auto::d_handler::getDescriptor
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1021,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1023,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1023,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1023,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1023,1
    - Dst: auto::d_handler::getDescriptor
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1023,1
    - Dst: auto::handleIO
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1026,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - desc
    - ' param'
    argTypes:
    - int
    - FDMultiplexer::funcparam_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1027
      start: 1018
    functionDepth: 0
    functionLinenumber: 1018
    functionLinenumberEnd: 1027
    functionName: IncomingTCPConnectionState::handleIOCallback
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc
    functionUses: 0
    functionsReached:
    - boost::any_cast<std::shared_ptr<IncomingTCPConnectionState>>
    - std::to_string
    - std::runtime_error
    - auto::handleIO
    - std::string
    - auto::d_handler::getDescriptor
    linkageType: ''
    returnType: void
    signature: void IncomingTCPConnectionState::handleIOCallback(int desc, FDMultiplexer::funcparam_t&
      param)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: isTLS
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1031,1
    - Dst: hasTLSSessionBeenResumed
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1032,1
    - Dst: dnsdist::IncomingConcurrentTCPConnectionsManager::accountTLSNewSession
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1034,1
    - Dst: dnsdist::IncomingConcurrentTCPConnectionsManager::accountTLSResumedSession
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1038,1
    - Dst: getResumedFromInactiveTicketKey
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1040,1
    - Dst: getUnknownTicketKey
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1043,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 1
    argNames:
    - ' now'
    argTypes:
    - struct timeval
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1049
      start: 1029
    functionDepth: 2
    functionLinenumber: 1029
    functionLinenumberEnd: 1049
    functionName: IncomingTCPConnectionState::handleHandshakeDone
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc
    functionUses: 0
    functionsReached:
    - hasTLSSessionBeenResumed
    - dnsdist::IncomingConcurrentTCPConnectionsManager::accountTLSResumedSession
    - getResumedFromInactiveTicketKey
    - getUnknownTicketKey
    - isTLS
    - dnsdist::IncomingConcurrentTCPConnectionsManager::accountTLSNewSession
    linkageType: ''
    returnType: void
    signature: void IncomingTCPConnectionState::handleHandshakeDone(const struct timeval&
      now)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: DEBUGLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1054,1
    - Dst: tryRead
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1055,1
    - Dst: IncomingTCPConnectionState::isProxyPayloadOutsideTLS
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1055,1
    - Dst: resize
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1057,1
    - Dst: isProxyHeaderComplete
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1058,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1060,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1060,1
    - Dst: remote::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1060,1
    - Dst: IncomingTCPConnectionState::getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1061,1
    - Dst: resize
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1067,1
    - Dst: handleProxyProtocol
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1073,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1073,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1074,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1074,1
    - Dst: remote::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1074,1
    - Dst: IncomingTCPConnectionState::getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1075,1
    - Dst: std::vector::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1079,1
    - Dst: make_unique<std::vector<ProxyProtocolValue>>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1080,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1080,1
    - Dst: clear
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1085,1
    - Dst: IncomingTCPConnectionState::active
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1092,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 31
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1095
      start: 1051
    functionDepth: 2
    functionLinenumber: 1051
    functionLinenumberEnd: 1095
    functionName: IncomingTCPConnectionState::handleProxyProtocolPayload
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc
    functionUses: 0
    functionsReached:
    - IncomingTCPConnectionState::getLogger
    - isProxyHeaderComplete
    - remote::toStringWithPort
    - std::move
    - resize
    - DEBUGLOG
    - dnsdist::configuration::getCurrentRuntimeConfiguration
    - VERBOSESLOG
    - infolog
    - make_unique<std::vector<ProxyProtocolValue>>
    - IncomingTCPConnectionState::active
    - handleProxyProtocol
    - tryRead
    - clear
    - std::vector::empty
    - IncomingTCPConnectionState::isProxyPayloadOutsideTLS
    linkageType: ''
    returnType: IncomingTCPConnectionState::ProxyProtocolResult
    signature: IncomingTCPConnectionState::ProxyProtocolResult IncomingTCPConnectionState::handleProxyProtocolPayload()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: DEBUGLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1099,1
    - Dst: tryHandshake
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1100,1
    - Dst: DEBUGLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1102,1
    - Dst: IncomingTCPConnectionState::handleHandshakeDone
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1103,1
    - Dst: IncomingTCPConnectionState::isProxyPayloadOutsideTLS
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1105,1
    - Dst: expectProxyProtocolFrom
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1105,1
    - Dst: resize
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1107,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 1
    argNames:
    - ' now'
    argTypes:
    - struct timeval
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1119
      start: 1097
    functionDepth: 3
    functionLinenumber: 1097
    functionLinenumberEnd: 1119
    functionName: IncomingTCPConnectionState::handleHandshake
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc
    functionUses: 0
    functionsReached:
    - IncomingTCPConnectionState::handleHandshakeDone
    - expectProxyProtocolFrom
    - resize
    - DEBUGLOG
    - tryHandshake
    - IncomingTCPConnectionState::isProxyPayloadOutsideTLS
    linkageType: ''
    returnType: IOState
    signature: IOState IncomingTCPConnectionState::handleHandshake(const struct timeval&
      now)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: DEBUGLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1123,1
    - Dst: resize
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1124,1
    - Dst: IncomingTCPConnectionState::handleQuery
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1127,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1127,1
    - Dst: IncomingTCPConnectionState::terminateClientConnection
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1136,1
    - Dst: IncomingTCPConnectionState::active
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1144,1
    - Dst: isWaitingForRead
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1145,1
    - Dst: isWaitingForWrite
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1148,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 24
    argCount: 1
    argNames:
    - ' now'
    argTypes:
    - struct timeval
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1154
      start: 1121
    functionDepth: 3
    functionLinenumber: 1121
    functionLinenumberEnd: 1154
    functionName: IncomingTCPConnectionState::handleIncomingQueryReceived
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc
    functionUses: 0
    functionsReached:
    - std::move
    - IncomingTCPConnectionState::handleQuery
    - IncomingTCPConnectionState::terminateClientConnection
    - resize
    - DEBUGLOG
    - isWaitingForWrite
    - isWaitingForRead
    - IncomingTCPConnectionState::active
    linkageType: ''
    returnType: IOState
    signature: IOState IncomingTCPConnectionState::handleIncomingQueryReceived(const
      struct timeval& now)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: isWaitingForWrite
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1169,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1170,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1170,1
    - Dst: isWaitingForRead
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1170,1
    - Dst: remote::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1170,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1170,1
    - Dst: IncomingTCPConnectionState::getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1171,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1171,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1171,1
    - Dst: isWaitingForRead
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1171,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1174,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1174,1
    - Dst: remote::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1174,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1174,1
    - Dst: IncomingTCPConnectionState::getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1175,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1175,1
    - Dst: IncomingTCPConnectionState::terminateClientConnection
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1178,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 15
    argCount: 1
    argNames:
    - ' exp'
    argTypes:
    - std::exception
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1179
      start: 1156
    functionDepth: 2
    functionLinenumber: 1156
    functionLinenumberEnd: 1179
    functionName: IncomingTCPConnectionState::handleExceptionDuringIO
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc
    functionUses: 0
    functionsReached:
    - IncomingTCPConnectionState::getLogger
    - remote::toStringWithPort
    - IncomingTCPConnectionState::terminateClientConnection
    - isWaitingForWrite
    - Logging::Loggable
    - what
    - VERBOSESLOG
    - infolog
    - isWaitingForRead
    linkageType: ''
    returnType: void
    signature: void IncomingTCPConnectionState::handleExceptionDuringIO(const std::exception&
      exp)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: DEBUGLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1184,1
    - Dst: resize
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1185,1
    - Dst: tryRead
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1187,1
    - Dst: DEBUGLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1194,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1200,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1200,1
    - Dst: IncomingTCPConnectionState::terminateClientConnection
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1203,1
    - Dst: resize
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1207,1
    - Dst: DEBUGLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1216,1
    - Dst: tryRead
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1218,1
    - Dst: IncomingTCPConnectionState::handleIncomingQueryReceived
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1220,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 38
    argCount: 2
    argNames:
    - ' now'
    - ' iostate'
    argTypes:
    - timeval
    - IOState
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1228
      start: 1181
    functionDepth: 4
    functionLinenumber: 1181
    functionLinenumberEnd: 1228
    functionName: IncomingTCPConnectionState::readIncomingQuery
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc
    functionUses: 0
    functionsReached:
    - IncomingTCPConnectionState::terminateClientConnection
    - IncomingTCPConnectionState::handleIncomingQueryReceived
    - resize
    - DEBUGLOG
    - tryRead
    - at
    linkageType: ''
    returnType: bool
    signature: bool IncomingTCPConnectionState::readIncomingQuery(const timeval& now,
      IOState& iostate)
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: gettimeofday
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1246,1
    - Dst: IncomingTCPConnectionState::maxConnectionDurationReached
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1252,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1252,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1253,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1253,1
    - Dst: remote::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1253,1
    - Dst: IncomingTCPConnectionState::getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1254,1
    - Dst: dnsdist::configuration::getImmutableConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1260,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1262,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1262,1
    - Dst: remote::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1262,1
    - Dst: IncomingTCPConnectionState::getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1263,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1263,1
    - Dst: dnsdist::IncomingConcurrentTCPConnectionsManager::banClientFor
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1264,1
    - Dst: time
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1264,1
    - Dst: IncomingTCPConnectionState::isProxyPayloadOutsideTLS
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1272,1
    - Dst: expectProxyProtocolFrom
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1272,1
    - Dst: resize
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1274,1
    - Dst: IncomingTCPConnectionState::handleHandshake
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1283,1
    - Dst: IncomingTCPConnectionState::handleProxyProtocolPayload
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1287,1
    - Dst: resize
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1289,1
    - Dst: IncomingTCPConnectionState::isProxyPayloadOutsideTLS
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1291,1
    - Dst: IncomingTCPConnectionState::handleHandshake
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1293,1
    - Dst: IncomingTCPConnectionState::readIncomingQuery
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1308,1
    - Dst: DEBUGLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1314,1
    - Dst: tryWrite
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1315,1
    - Dst: d_buffer::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1315,1
    - Dst: DEBUGLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1317,1
    - Dst: IncomingTCPConnectionState::handleResponseSent
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1318,1
    - Dst: d_buffer::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1318,1
    - Dst: IncomingTCPConnectionState::active
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1326,1
    - Dst: DEBUGLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1328,1
    - Dst: shared_from_this
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1329,1
    - Dst: sendQueuedResponses
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1330,1
    - Dst: IncomingTCPConnectionState::active
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1332,1
    - Dst: IncomingTCPConnectionState::canAcceptNewQueries
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1335,1
    - Dst: IncomingTCPConnectionState::resetForNewQuery
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1336,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1347,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1347,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1347,1
    - Dst: IncomingTCPConnectionState::getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1348,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1348,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1348,1
    - Dst: IncomingTCPConnectionState::handleExceptionDuringIO
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1356,1
    - Dst: IncomingTCPConnectionState::active
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1359,1
    - Dst: DEBUGLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1360,1
    - Dst: shared_from_this
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1364,1
    - Dst: update
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1366,1
    - Dst: IncomingTCPConnectionState::updateIO
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1369,1
    - Dst: IOStateGuard::release
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1371,1
    CyclomaticComplexity: 45
    EdgeCount: 45
    ICount: 92
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1373
      start: 1230
    functionDepth: 5
    functionLinenumber: 1230
    functionLinenumberEnd: 1373
    functionName: IncomingTCPConnectionState::handleIO
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc
    functionUses: 1
    functionsReached:
    - DEBUGLOG
    - IncomingTCPConnectionState::resetForNewQuery
    - gettimeofday
    - dnsdist::configuration::getImmutableConfiguration
    - static_cast<int>
    - expectProxyProtocolFrom
    - resize
    - Logging::Loggable
    - time
    - IncomingTCPConnectionState::canAcceptNewQueries
    - IncomingTCPConnectionState::handleHandshake
    - IncomingTCPConnectionState::readIncomingQuery
    - IncomingTCPConnectionState::handleResponseSent
    - IncomingTCPConnectionState::maxConnectionDurationReached
    - sendQueuedResponses
    - IncomingTCPConnectionState::isProxyPayloadOutsideTLS
    - IncomingTCPConnectionState::getLogger
    - remote::toStringWithPort
    - d_buffer::size
    - dnsdist::configuration::getCurrentRuntimeConfiguration
    - VERBOSESLOG
    - IncomingTCPConnectionState::handleExceptionDuringIO
    - IOStateGuard::release
    - IncomingTCPConnectionState::active
    - IncomingTCPConnectionState::updateIO
    - IncomingTCPConnectionState::handleProxyProtocolPayload
    - infolog
    - tryWrite
    - shared_from_this
    - update
    - dnsdist::IncomingConcurrentTCPConnectionsManager::banClientFor
    linkageType: ''
    returnType: void
    signature: void IncomingTCPConnectionState::handleIO()
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist_ffi_dnsquestion_get_id
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1377,1
    - Dst: d_buffer::clear
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1379,1
    - Dst: IncomingTCPConnectionState::handleCrossProtocolResponse
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1380,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1380,1
    - Dst: shared_from_this
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1384,1
    - Dst: auto::d_queuedResponses::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1391,1
    - Dst: sendQueuedResponses
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1394,1
    - Dst: auto::active
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1396,1
    - Dst: IncomingTCPConnectionState::updateIO
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1398,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1402,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1402,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1402,1
    - Dst: IncomingTCPConnectionState::getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1403,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1403,1
    - Dst: auto::terminateClientConnection
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1408,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 21
    argCount: 2
    argNames:
    - ' now'
    - ' response'
    argTypes:
    - struct timeval
    - TCPResponse
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1410
      start: 1375
    functionDepth: 5
    functionLinenumber: 1375
    functionLinenumberEnd: 1410
    functionName: IncomingTCPConnectionState::notifyIOError
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc
    functionUses: 0
    functionsReached:
    - IncomingTCPConnectionState::getLogger
    - d_buffer::clear
    - std::move
    - IncomingTCPConnectionState::updateIO
    - sendQueuedResponses
    - what
    - VERBOSESLOG
    - auto::d_queuedResponses::empty
    - IncomingTCPConnectionState::handleCrossProtocolResponse
    - dnsdist_ffi_dnsquestion_get_id
    - auto::active
    - infolog
    - auto::terminateClientConnection
    - shared_from_this
    linkageType: ''
    returnType: void
    signature: void IncomingTCPConnectionState::notifyIOError(const struct timeval&
      now, TCPResponse&& response)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1414,1
    - Dst: dnsdist::rules::getResponseRuleChain
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1415,1
    - Dst: applyRulesToResponse
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1417,1
    - Dst: isAsynchronous
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1421,1
    - Dst: dnsdist::edns::addExtendedDNSError
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1427,1
    - Dst: getMutableData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1427,1
    - Dst: getMaximumSize
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1427,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 1
    argNames:
    - ' dnsResponse'
    argTypes:
    - DNSResponse
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1432
      start: 1412
    functionDepth: 2
    functionLinenumber: 1412
    functionLinenumberEnd: 1432
    functionName: processXFRResponse
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc
    functionUses: 0
    functionsReached:
    - getMutableData
    - dnsdist::configuration::getCurrentRuntimeConfiguration
    - isAsynchronous
    - dnsdist::edns::addExtendedDNSError
    - getMaximumSize
    - dnsdist::rules::getResponseRuleChain
    - applyRulesToResponse
    linkageType: ''
    returnType: bool
    signature: bool processXFRResponse(DNSResponse& dnsResponse)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist_ffi_dnsquestion_get_id
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1436,1
    - Dst: IncomingTCPConnectionState::handleCrossProtocolResponse
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1437,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1437,1
    - Dst: shared_from_this
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1441,1
    - Dst: d_connection::getDS
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1443,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1446,1
    - Dst: DNSResponse::getHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1446,1
    - Dst: processXFRResponse
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1448,1
    - Dst: std::shared_ptr::terminateClientConnection
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1449,1
    - Dst: IncomingTCPConnectionState::queueResponse
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1453,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1453,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 2
    argNames:
    - ' now'
    - ' response'
    argTypes:
    - struct timeval
    - TCPResponse
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1454
      start: 1434
    functionDepth: 3
    functionLinenumber: 1434
    functionLinenumberEnd: 1454
    functionName: IncomingTCPConnectionState::handleXFRResponse
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc
    functionUses: 0
    functionsReached:
    - memcpy
    - std::move
    - DNSResponse::getHeader
    - processXFRResponse
    - d_connection::getDS
    - IncomingTCPConnectionState::queueResponse
    - IncomingTCPConnectionState::handleCrossProtocolResponse
    - dnsdist_ffi_dnsquestion_get_id
    - std::shared_ptr::terminateClientConnection
    - shared_from_this
    linkageType: ''
    returnType: void
    signature: void IncomingTCPConnectionState::handleXFRResponse(const struct timeval&
      now, TCPResponse&& response)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1458,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1458,1
    - Dst: d_ci::remote::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1458,1
    - Dst: IncomingTCPConnectionState::getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1459,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1459,1
    - Dst: DEBUGLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1460,1
    - Dst: DEBUGLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1461,1
    - Dst: d_ownedConnectionsToBackend::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1461,1
    - Dst: d_queuedResponses::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1461,1
    - Dst: d_ioState::reset
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1465,1
    - Dst: DEBUGLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1468,1
    - Dst: d_ioState::update
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1471,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 2
    argNames:
    - ' state'
    - write
    argTypes:
    - std::shared_ptr<IncomingTCPConnectionState>
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1473
      start: 1456
    functionDepth: 0
    functionLinenumber: 1456
    functionLinenumberEnd: 1473
    functionName: IncomingTCPConnectionState::handleTimeout
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc
    functionUses: 0
    functionsReached:
    - IncomingTCPConnectionState::getLogger
    - d_ioState::update
    - DEBUGLOG
    - Logging::Loggable
    - d_ci::remote::toStringWithPort
    - VERBOSESLOG
    - infolog
    - d_ownedConnectionsToBackend::size
    - d_ioState::reset
    - d_queuedResponses::size
    linkageType: ''
    returnType: void
    signature: void IncomingTCPConnectionState::handleTimeout(std::shared_ptr<IncomingTCPConnectionState>&
      state, bool write)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1477,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1477,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1477,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1477,1
    - Dst: cs::getProtocol
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1477,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1477,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1477,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1478
      start: 1475
    functionDepth: 1
    functionLinenumber: 1475
    functionLinenumberEnd: 1478
    functionName: IncomingTCPConnectionState::getLogger
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc
    functionUses: 11
    functionsReached:
    - cs::getProtocol
    - dnsdist::logging::getTopLogger
    - Logging::Loggable
    linkageType: ''
    returnType: std::shared_ptr<const Logr::Logger>
    signature: std::shared_ptr<const Logr::Logger> IncomingTCPConnectionState::getLogger()
      const
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: boost::any_cast<TCPClientThreadData*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1483,1
    - Dst: auto*::queryReceiver::receive
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1487,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1491,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1494,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1494,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1494,1
    - Dst: decrementQueuedCount
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1497,1
    - Dst: gettimeofday
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1500,1
    - Dst: std::make_shared<IncomingHTTP2Connection>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1504,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1504,1
    - Dst: auto::handleIO
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1505,1
    - Dst: std::make_shared<IncomingTCPConnectionState>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1509,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1509,1
    - Dst: auto::handleIO
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1510,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 2
    argNames:
    - pipefd
    - ' param'
    argTypes:
    - int
    - FDMultiplexer::funcparam_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1512
      start: 1480
    functionDepth: 0
    functionLinenumber: 1480
    functionLinenumberEnd: 1512
    functionName: handleIncomingTCPQuery
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc
    functionUses: 0
    functionsReached:
    - std::move
    - std::runtime_error
    - what
    - boost::any_cast<TCPClientThreadData*>
    - std::make_shared<IncomingHTTP2Connection>
    - std::make_shared<IncomingTCPConnectionState>
    - auto*::queryReceiver::receive
    - decrementQueuedCount
    - gettimeofday
    - auto::handleIO
    - std::string
    linkageType: ''
    returnType: void
    signature: void handleIncomingTCPQuery(int pipefd, FDMultiplexer::funcparam_t&
      param)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: boost::any_cast<TCPClientThreadData*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1517,1
    - Dst: auto*::crossProtocolQueryReceiver::receive
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1521,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1525,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1528,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1528,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1528,1
    - Dst: gettimeofday
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1532,1
    - Dst: std::unique_ptr::getTCPQuerySender
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1534,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1535,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1536,1
    - Dst: getConnectionToDownstream
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1539,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1539,1
    - Dst: prependSizeToTCPQuery
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1541,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1543,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1543,1
    - Dst: auto::d_idstate::qname::toLogString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1543,1
    - Dst: QType
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1543,1
    - Dst: auto::d_idstate::origRemote::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1543,1
    - Dst: auto::d_idstate::protocol::toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1543,1
    - Dst: auto::d_buffer::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1543,1
    - Dst: auto::getNameWithAddr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1543,1
    - Dst: auto::d_idstate::getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1544,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1544,1
    - Dst: auto::d_buffer::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1544,1
    - Dst: auto::queueQuery
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1546,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1546,1
    - Dst: std::shared_ptr::notifyIOError
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1549,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1549,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 2
    argNames:
    - pipefd
    - ' param'
    argTypes:
    - int
    - FDMultiplexer::funcparam_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1551
      start: 1514
    functionDepth: 2
    functionLinenumber: 1514
    functionLinenumberEnd: 1551
    functionName: handleCrossProtocolQuery
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc
    functionUses: 0
    functionsReached:
    - std::shared_ptr::notifyIOError
    - auto::d_idstate::getLogger
    - auto::d_idstate::qname::toLogString
    - auto::d_idstate::origRemote::toStringWithPort
    - gettimeofday
    - std::string
    - getConnectionToDownstream
    - Logging::Loggable
    - QType
    - prependSizeToTCPQuery
    - auto::queueQuery
    - boost::any_cast<TCPClientThreadData*>
    - auto::d_buffer::size
    - auto::getNameWithAddr
    - std::runtime_error
    - VERBOSESLOG
    - std::unique_ptr::getTCPQuerySender
    - auto*::crossProtocolQueryReceiver::receive
    - std::move
    - what
    - infolog
    - auto::d_idstate::protocol::toString
    linkageType: ''
    returnType: void
    signature: void handleCrossProtocolQuery(int pipefd, FDMultiplexer::funcparam_t&
      param)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: boost::any_cast<TCPClientThreadData*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1556,1
    - Dst: auto*::crossProtocolResponseReceiver::receive
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1560,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1564,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1567,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1567,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1567,1
    - Dst: d_response::d_buffer::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1573,1
    - Dst: d_state::notifyIOError
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1574,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1574,1
    - Dst: d_state::handleXFRResponse
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1577,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1577,1
    - Dst: d_state::handleResponse
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1580,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1580,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 21
    argCount: 2
    argNames:
    - pipefd
    - ' param'
    argTypes:
    - int
    - FDMultiplexer::funcparam_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1586
      start: 1553
    functionDepth: 0
    functionLinenumber: 1553
    functionLinenumberEnd: 1586
    functionName: handleCrossProtocolResponse
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc
    functionUses: 5
    functionsReached:
    - d_state::notifyIOError
    - d_state::handleResponse
    - std::move
    - auto*::crossProtocolResponseReceiver::receive
    - std::runtime_error
    - what
    - boost::any_cast<TCPClientThreadData*>
    - d_state::handleXFRResponse
    - std::string
    - d_response::d_buffer::empty
    linkageType: ''
    returnType: void
    signature: void handleCrossProtocolResponse(int pipefd, FDMultiplexer::funcparam_t&
      param)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: mplexer::getTimeouts
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1600,1
    - Dst: second::type
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1602,1
    - Dst: typeid
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1602,1
    - Dst: boost::any_cast<std::shared_ptr<IncomingTCPConnectionState>>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1603,1
    - Dst: auto::d_handler::getDescriptor
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1604,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1605,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1605,1
    - Dst: auto::d_ci::remote::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1605,1
    - Dst: auto::getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1606,1
    - Dst: auto::handleTimeout
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1607,1
    - Dst: second::type
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1611,1
    - Dst: typeid
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1611,1
    - Dst: boost::any_cast<std::shared_ptr<IncomingHTTP2Connection>>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1612,1
    - Dst: auto::d_handler::getDescriptor
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1613,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1614,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1614,1
    - Dst: auto::d_ci::remote::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1614,1
    - Dst: auto::getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1615,1
    - Dst: auto::handleTimeout
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1617,1
    - Dst: second::type
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1621,1
    - Dst: typeid
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1621,1
    - Dst: boost::any_cast<std::shared_ptr<TCPConnectionToBackend>>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1622,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1623,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1623,1
    - Dst: auto::getBackendName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1623,1
    - Dst: auto::getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1624,1
    - Dst: auto::handleTimeout
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1625,1
    - Dst: mplexer::getTimeouts
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1629,1
    - Dst: second::type
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1631,1
    - Dst: typeid
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1631,1
    - Dst: boost::any_cast<std::shared_ptr<IncomingTCPConnectionState>>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1632,1
    - Dst: auto::d_handler::getDescriptor
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1633,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1634,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1634,1
    - Dst: auto::d_ci::remote::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1634,1
    - Dst: auto::getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1635,1
    - Dst: auto::handleTimeout
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1636,1
    - Dst: second::type
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1640,1
    - Dst: typeid
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1640,1
    - Dst: boost::any_cast<std::shared_ptr<IncomingHTTP2Connection>>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1641,1
    - Dst: auto::d_handler::getDescriptor
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1642,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1643,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1643,1
    - Dst: auto::d_ci::remote::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1643,1
    - Dst: auto::getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1644,1
    - Dst: auto::handleTimeout
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1646,1
    - Dst: second::type
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1650,1
    - Dst: typeid
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1650,1
    - Dst: boost::any_cast<std::shared_ptr<TCPConnectionToBackend>>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1651,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1652,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1652,1
    - Dst: auto::getBackendName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1652,1
    - Dst: auto::getLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1653,1
    - Dst: auto::handleTimeout
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1654,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 31
    argCount: 2
    argNames:
    - ' data'
    - ' now'
    argTypes:
    - TCPClientThreadData
    - timeval
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1657
      start: 1598
    functionDepth: 1
    functionLinenumber: 1598
    functionLinenumberEnd: 1657
    functionName: scanForTimeouts
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc
    functionUses: 0
    functionsReached:
    - auto::getBackendName
    - typeid
    - boost::any_cast<std::shared_ptr<IncomingTCPConnectionState>>
    - second::type
    - auto::getLogger
    - auto::d_ci::remote::toStringWithPort
    - VERBOSESLOG
    - infolog
    - boost::any_cast<std::shared_ptr<TCPConnectionToBackend>>
    - mplexer::getTimeouts
    - auto::d_handler::getDescriptor
    - auto::handleTimeout
    - boost::any_cast<std::shared_ptr<IncomingHTTP2Connection>>
    linkageType: ''
    returnType: void
    signature: void scanForTimeouts(const TCPClientThreadData& data, const timeval&
      now)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: std::scoped_lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1663,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1668,1
    - Dst: mplexer::runForAllWatchedFDs
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1669,1
    - Dst: gettimeofday
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1671,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1673,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1676,1
    - Dst: type
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1679,1
    - Dst: typeid
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1679,1
    - Dst: boost::any_cast<std::shared_ptr<IncomingTCPConnectionState>>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1680,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1681,1
    - Dst: auto::toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1681,1
    - Dst: type
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1684,1
    - Dst: typeid
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1684,1
    - Dst: boost::any_cast<std::shared_ptr<IncomingHTTP2Connection>>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1685,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1686,1
    - Dst: auto::toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1686,1
    - Dst: type
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1689,1
    - Dst: typeid
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1689,1
    - Dst: boost::any_cast<std::shared_ptr<TCPConnectionToBackend>>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1690,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1691,1
    - Dst: auto::toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1691,1
    - Dst: type
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1693,1
    - Dst: typeid
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1693,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1694,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1697,1
    - Dst: getActiveCount
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1697,1
    - Dst: getIdleCount
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1697,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 23
    argCount: 1
    argNames:
    - ' data'
    argTypes:
    - TCPClientThreadData
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1699
      start: 1659
    functionDepth: 0
    functionLinenumber: 1659
    functionLinenumberEnd: 1699
    functionName: dumpTCPStates
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc
    functionUses: 0
    functionsReached:
    - typeid
    - mplexer::runForAllWatchedFDs
    - boost::any_cast<std::shared_ptr<IncomingTCPConnectionState>>
    - boost::any_cast<std::shared_ptr<TCPConnectionToBackend>>
    - infolog
    - auto::toString
    - gettimeofday
    - getIdleCount
    - std::scoped_lock
    - getActiveCount
    - type
    - boost::any_cast<std::shared_ptr<IncomingHTTP2Connection>>
    linkageType: ''
    returnType: void
    signature: void dumpTCPStates(const TCPClientThreadData& data)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: setThreadName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1707,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1708,1
    - Dst: TCPClientThreadData::TCPClientThreadData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1711,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1712,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1713,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1714,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1715,1
    - Dst: TCPClientThreadData::mplexer::addReadFD
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1717,1
    - Dst: TCPClientThreadData::queryReceiver::getDescriptor
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1717,1
    - Dst: TCPClientThreadData::mplexer::addReadFD
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1718,1
    - Dst: TCPClientThreadData::crossProtocolQueryReceiver::getDescriptor
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1718,1
    - Dst: TCPClientThreadData::mplexer::addReadFD
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1719,1
    - Dst: TCPClientThreadData::crossProtocolResponseReceiver::getDescriptor
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1719,1
    - Dst: std::vector::reserve
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1723,1
    - Dst: std::vector<ClientState*>::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1723,1
    - Dst: std::vector::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1726,1
    - Dst: std::vector::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1728,1
    - Dst: boost::any_cast<const TCPAcceptorParam*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1734,1
    - Dst: acceptNewConnection
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1735,1
    - Dst: setNonBlocking
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1739,1
    - Dst: TCPClientThreadData::mplexer::addReadFD
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1740,1
    - Dst: gettimeofday
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1744,1
    - Dst: TCPClientThreadData::mplexer::run
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1749,1
    - Dst: dnsdist::configuration::refreshLocalRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1753,1
    - Dst: cleanupClosedConnections
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1757,1
    - Dst: dnsdist::IncomingConcurrentTCPConnectionsManager::cleanup
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1758,1
    - Dst: time
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1758,1
    - Dst: scanForTimeouts
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1762,1
    - Dst: dumpTCPStates
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1765,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1770,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1770,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1770,1
    - Dst: auto::error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1771,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1771,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1776,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1776,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1776,1
    - Dst: auto::error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1777,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1777,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 45
    argCount: 5
    argNames:
    - ' queryReceiver'
    - ' crossProtocolQueryReceiver'
    - ' crossProtocolResponseReceiver'
    - ' crossProtocolResponseSender'
    - tcpAcceptStates
    argTypes:
    - pdns::channel::Receiver<ConnectionInfo>
    - pdns::channel::Receiver<CrossProtocolQuery>
    - pdns::channel::Receiver<TCPCrossProtocolResponse>
    - pdns::channel::Sender<TCPCrossProtocolResponse>
    - std::vector<ClientState*>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1779
      start: 1702
    functionDepth: 2
    functionLinenumber: 1702
    functionLinenumberEnd: 1779
    functionName: tcpClientThread
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc
    functionUses: 0
    functionsReached:
    - errlog
    - cleanupClosedConnections
    - gettimeofday
    - boost::any_cast<const TCPAcceptorParam*>
    - TCPClientThreadData::mplexer::addReadFD
    - TCPClientThreadData::mplexer::run
    - SLOG
    - setNonBlocking
    - time
    - warnlog
    - auto::error
    - std::vector<ClientState*>::size
    - dnsdist::logging::getTopLogger
    - acceptNewConnection
    - setThreadName
    - TCPClientThreadData::crossProtocolResponseReceiver::getDescriptor
    - dumpTCPStates
    - std::vector::reserve
    - dnsdist::IncomingConcurrentTCPConnectionsManager::cleanup
    - TCPClientThreadData::queryReceiver::getDescriptor
    - std::move
    - scanForTimeouts
    - what
    - std::vector::emplace_back
    - TCPClientThreadData::TCPClientThreadData
    - TCPClientThreadData::crossProtocolQueryReceiver::getDescriptor
    - dnsdist::configuration::refreshLocalRuntimeConfiguration
    linkageType: ''
    returnType: void
    signature: void tcpClientThread(pdns::channel::Receiver<ConnectionInfo>&& queryReceiver,
      pdns::channel::Receiver<CrossProtocolQuery>&& crossProtocolQueryReceiver, pdns::channel::Receiver<TCPCrossProtocolResponse>&&
      crossProtocolResponseReceiver, pdns::channel::Sender<TCPCrossProtocolResponse>&&
      crossProtocolResponseSender, std::vector<ClientState*> tcpAcceptStates)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: ComboAddress::getSocklen
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1792,1
    - Dst: accept4
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1796,1
    - Dst: reinterpret_cast<struct sockaddr*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1796,1
    - Dst: accept
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1799,1
    - Dst: reinterpret_cast<struct sockaddr*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1799,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1805,1
    - Dst: boost::format
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1805,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1805,1
    - Dst: str
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1805,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1808,1
    - Dst: match
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1808,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1810,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1810,1
    - Dst: ComboAddress::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1810,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1811,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1811,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1811,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1816,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1816,1
    - Dst: ComboAddress::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1816,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1817,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1817,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1817,1
    - Dst: tcpMaxConcurrentConnections::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1821,1
    - Dst: tcpMaxConcurrentConnections::store
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1822,1
    - Dst: setNonBlocking
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1826,1
    - Dst: setTCPNoDelay
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1831,1
    - Dst: dnsdist::configuration::getImmutableConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1833,1
    - Dst: getQueuedCount
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1834,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1835,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1835,1
    - Dst: ComboAddress::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1835,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1836,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1836,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1836,1
    - Dst: dnsdist::IncomingConcurrentTCPConnectionsManager::accountNewTCPConnection
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1840,1
    - Dst: ConnectionInfo::cs::hasTLS
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1840,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1849,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1849,1
    - Dst: ComboAddress::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1849,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1850,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1850,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1850,1
    - Dst: passConnectionToThread
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1855,1
    - Dst: std::make_unique<ConnectionInfo>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1855,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1855,1
    - Dst: dnsdist::IncomingConcurrentTCPConnectionsManager::accountClosedTCPConnection
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1857,1
    - Dst: gettimeofday
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1863,1
    - Dst: std::make_shared<IncomingHTTP2Connection>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1867,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1867,1
    - Dst: auto::handleIO
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1868,1
    - Dst: std::make_shared<IncomingTCPConnectionState>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1872,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1872,1
    - Dst: auto::handleIO
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1873,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1878,1
    - Dst: errlog
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1878,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1878,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1879,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1879,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1879,1
    - Dst: dnsdist::IncomingConcurrentTCPConnectionsManager::accountClosedTCPConnection
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1881,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 59
    argCount: 2
    argNames:
    - ' param'
    - threadData
    argTypes:
    - TCPAcceptorParam
    - TCPClientThreadData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1886
      start: 1781
    functionDepth: 2
    functionLinenumber: 1781
    functionLinenumberEnd: 1886
    functionName: acceptNewConnection
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc
    functionUses: 1
    functionsReached:
    - errlog
    - std::make_unique<ConnectionInfo>
    - tcpMaxConcurrentConnections::store
    - stringerror
    - auto::handleIO
    - dnsdist::configuration::getImmutableConfiguration
    - gettimeofday
    - ComboAddress::getSocklen
    - accept4
    - reinterpret_cast<struct sockaddr*>
    - SLOG
    - getQueuedCount
    - Logging::Loggable
    - accept
    - setNonBlocking
    - ConnectionInfo::cs::hasTLS
    - match
    - dnsdist::logging::getTopLogger
    - dnsdist::configuration::getCurrentRuntimeConfiguration
    - std::runtime_error
    - dnsdist::IncomingConcurrentTCPConnectionsManager::accountClosedTCPConnection
    - VERBOSESLOG
    - dnsdist::IncomingConcurrentTCPConnectionsManager::accountNewTCPConnection
    - passConnectionToThread
    - str
    - ComboAddress::toStringWithPort
    - tcpMaxConcurrentConnections::load
    - std::move
    - setTCPNoDelay
    - what
    - infolog
    - std::make_shared<IncomingHTTP2Connection>
    - std::make_shared<IncomingTCPConnectionState>
    - boost::format
    linkageType: ''
    returnType: void
    signature: void acceptNewConnection(const TCPAcceptorParam& param, TCPClientThreadData*
      threadData)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: setThreadName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1894,1
    - Dst: std::vector::reserve
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1897,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1897,1
    - Dst: std::vector::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1900,1
    - Dst: std::vector::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1902,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1906,1
    - Dst: dnsdist::configuration::refreshLocalRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1908,1
    - Dst: acceptNewConnection
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1909,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1909,1
    - Dst: boost::any_cast<const TCPAcceptorParam*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1915,1
    - Dst: acceptNewConnection
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1916,1
    - Dst: std::unique_ptr<FDMultiplexer>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1919,1
    - Dst: FDMultiplexer::getMultiplexerSilent
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1919,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1919,1
    - Dst: auto::addReadFD
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1921,1
    - Dst: auto::run
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1927,1
    - Dst: dnsdist::configuration::refreshLocalRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc:1931,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 26
    argCount: 1
    argNames:
    - ' states'
    argTypes:
    - std::vector<ClientState*>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1935
      start: 1892
    functionDepth: 3
    functionLinenumber: 1892
    functionLinenumberEnd: 1935
    functionName: tcpAcceptorThread
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc
    functionUses: 0
    functionsReached:
    - boost::any_cast<const TCPAcceptorParam*>
    - std::vector::size
    - std::vector::emplace_back
    - size
    - std::unique_ptr<FDMultiplexer>
    - std::vector::reserve
    - FDMultiplexer::getMultiplexerSilent
    - auto::addReadFD
    - std::vector::at
    - auto::run
    - acceptNewConnection
    - dnsdist::configuration::refreshLocalRuntimeConfiguration
    - setThreadName
    linkageType: ''
    returnType: void
    signature: void tcpAcceptorThread(const std::vector<ClientState*>& states)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: getListOfNetworkInterfaces
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-xsk.cc:40,1
    - Dst: auto::empty
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-xsk.cc:41,1
    - Dst: auto::begin
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-xsk.cc:45,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-xsk.cc:51,1
    - Dst: XskSocket
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-xsk.cc:51,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-xsk.cc:56,1
    - Dst: XskSocket
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-xsk.cc:56,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-xsk.cc:62,1
    - Dst: XskSocket
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-xsk.cc:62,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 38
    functionDepth: 0
    functionLinenumber: 38
    functionLinenumberEnd: 64
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdist-xsk.cc
    functionUses: 0
    functionsReached:
    - XskSocket
    - auto::begin
    - BOOST_CHECK_THROW
    - getListOfNetworkInterfaces
    - auto::empty
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_XskSocket)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XskPacket
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-xsk.cc:73,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-xsk.cc:74,1
    - Dst: auto::parse
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-xsk.cc:74,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-xsk.cc:75,1
    - Dst: auto::getFrameOffsetFrom
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-xsk.cc:75,1
    - Dst: XskPacket
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-xsk.cc:85,1
    - Dst: PacketBuffer::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-xsk.cc:85,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-xsk.cc:85,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-xsk.cc:86,1
    - Dst: auto::getFlags
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-xsk.cc:86,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-xsk.cc:87,1
    - Dst: auto::getFrameOffsetFrom
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-xsk.cc:87,1
    - Dst: PacketBuffer::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-xsk.cc:87,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-xsk.cc:88,1
    - Dst: auto::parse
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-xsk.cc:88,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-xsk.cc:89,1
    - Dst: auto::getFrameLen
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-xsk.cc:89,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-xsk.cc:90,1
    - Dst: auto::getFlags
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-xsk.cc:90,1
    - Dst: auto::setAddr
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-xsk.cc:91,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-xsk.cc:92,1
    - Dst: auto::getFlags
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-xsk.cc:92,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-xsk.cc:93,1
    - Dst: auto::getFromAddr
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-xsk.cc:93,1
    - Dst: ComboAddress::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-xsk.cc:93,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-xsk.cc:94,1
    - Dst: auto::getToAddr
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-xsk.cc:94,1
    - Dst: ComboAddress::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-xsk.cc:94,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-xsk.cc:95,1
    - Dst: auto::isIPV6
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-xsk.cc:95,1
    - Dst: ComboAddress::isIPv6
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-xsk.cc:95,1
    - Dst: auto::setPayload
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-xsk.cc:96,1
    - Dst: PacketBuffer
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-xsk.cc:96,1
    - Dst: auto::rewrite
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-xsk.cc:97,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-xsk.cc:98,1
    - Dst: auto::getFlags
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-xsk.cc:98,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-xsk.cc:100,1
    - Dst: auto::parse
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-xsk.cc:100,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-xsk.cc:101,1
    - Dst: auto::isIPV6
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-xsk.cc:101,1
    - Dst: ComboAddress::isIPv6
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-xsk.cc:101,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-xsk.cc:102,1
    - Dst: auto::getFrameLen
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-xsk.cc:102,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-xsk.cc:103,1
    - Dst: auto::getCapacity
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-xsk.cc:103,1
    - Dst: XskSocket::getFrameSize
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-xsk.cc:103,1
    - Dst: auto::getFrameLen
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-xsk.cc:103,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-xsk.cc:104,1
    - Dst: auto::getDataLen
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-xsk.cc:104,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-xsk.cc:105,1
    - Dst: auto::getPayloadData
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-xsk.cc:105,1
    - Dst: PacketBuffer::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-xsk.cc:105,1
    - Dst: auto::getFrameLen
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-xsk.cc:105,1
    - Dst: auto::clonePacketBuffer
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-xsk.cc:107,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-xsk.cc:108,1
    - Dst: auto::empty
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-xsk.cc:108,1
    - Dst: auto::cloneHeaderToPacketBuffer
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-xsk.cc:109,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-xsk.cc:110,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-xsk.cc:110,1
    - Dst: XskPacket
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-xsk.cc:111,1
    - Dst: PacketBuffer::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-xsk.cc:111,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-xsk.cc:111,1
    - Dst: auto::setHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-xsk.cc:112,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-xsk.cc:113,1
    - Dst: auto::getFrameLen
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-xsk.cc:113,1
    - Dst: PacketBuffer
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-xsk.cc:117,1
    - Dst: auto::getCapacity
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-xsk.cc:117,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-xsk.cc:118,1
    - Dst: auto::setPayload
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-xsk.cc:118,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-xsk.cc:119,1
    - Dst: auto::getFlags
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-xsk.cc:119,1
    - Dst: XskPacket
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-xsk.cc:123,1
    - Dst: PacketBuffer::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-xsk.cc:123,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-xsk.cc:123,1
    - Dst: PacketBuffer
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-xsk.cc:124,1
    - Dst: auto::getCapacity
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-xsk.cc:124,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-xsk.cc:125,1
    - Dst: auto::getFlags
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-xsk.cc:125,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-xsk.cc:127,1
    - Dst: auto::setPayload
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-xsk.cc:127,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-xsk.cc:128,1
    - Dst: auto::getFlags
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-xsk.cc:128,1
    - Dst: auto::getSendTime
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-xsk.cc:132,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-xsk.cc:133,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-xsk.cc:134,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-xsk.cc:135,1
    - Dst: auto::getFlags
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-xsk.cc:135,1
    - Dst: auto::addDelay
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-xsk.cc:137,1
    - Dst: auto::getSendTime
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-xsk.cc:138,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-xsk.cc:139,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-xsk.cc:140,1
    - Dst: auto::getFlags
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-xsk.cc:140,1
    - Dst: XskPacket
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-xsk.cc:151,1
    - Dst: PacketBuffer::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-xsk.cc:151,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-xsk.cc:151,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-xsk.cc:152,1
    - Dst: auto::getFlags
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-xsk.cc:152,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-xsk.cc:153,1
    - Dst: auto::getFrameOffsetFrom
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-xsk.cc:153,1
    - Dst: PacketBuffer::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-xsk.cc:153,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-xsk.cc:154,1
    - Dst: auto::parse
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-xsk.cc:154,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-xsk.cc:155,1
    - Dst: auto::getFrameLen
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-xsk.cc:155,1
    - Dst: auto::setAddr
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-xsk.cc:156,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-xsk.cc:157,1
    - Dst: auto::getFromAddr
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-xsk.cc:157,1
    - Dst: ComboAddress::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-xsk.cc:157,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-xsk.cc:158,1
    - Dst: auto::getToAddr
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-xsk.cc:158,1
    - Dst: ComboAddress::toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-xsk.cc:158,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-xsk.cc:159,1
    - Dst: auto::isIPV6
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-xsk.cc:159,1
    - Dst: ComboAddress::isIPv6
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-xsk.cc:159,1
    - Dst: auto::setPayload
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-xsk.cc:160,1
    - Dst: PacketBuffer
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-xsk.cc:160,1
    - Dst: auto::rewrite
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-xsk.cc:161,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-xsk.cc:163,1
    - Dst: auto::parse
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-xsk.cc:163,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-xsk.cc:164,1
    - Dst: auto::isIPV6
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-xsk.cc:164,1
    - Dst: ComboAddress::isIPv6
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-xsk.cc:164,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-xsk.cc:165,1
    - Dst: auto::getFrameLen
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-xsk.cc:165,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-xsk.cc:166,1
    - Dst: auto::getCapacity
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-xsk.cc:166,1
    - Dst: XskSocket::getFrameSize
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-xsk.cc:166,1
    - Dst: auto::getFrameLen
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-xsk.cc:166,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-xsk.cc:167,1
    - Dst: auto::getDataLen
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-xsk.cc:167,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-xsk.cc:168,1
    - Dst: auto::getPayloadData
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-xsk.cc:168,1
    - Dst: PacketBuffer::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-xsk.cc:168,1
    - Dst: auto::getFrameLen
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-xsk.cc:168,1
    - Dst: auto::clonePacketBuffer
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-xsk.cc:170,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-xsk.cc:171,1
    - Dst: auto::empty
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-xsk.cc:171,1
    - Dst: auto::cloneHeaderToPacketBuffer
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-xsk.cc:172,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-xsk.cc:173,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-xsk.cc:173,1
    - Dst: XskPacket
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-xsk.cc:174,1
    - Dst: PacketBuffer::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-xsk.cc:174,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-xsk.cc:174,1
    - Dst: auto::setHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-xsk.cc:175,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-xsk.cc:176,1
    - Dst: auto::getFrameLen
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdist-xsk.cc:176,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 65
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 179
      start: 66
    functionDepth: 1
    functionLinenumber: 66
    functionLinenumberEnd: 179
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdist-xsk.cc
    functionUses: 0
    functionsReached:
    - auto::isIPV6
    - PacketBuffer::size
    - auto::setAddr
    - auto::getToAddr
    - auto::size
    - auto::rewrite
    - auto::getFlags
    - auto::getCapacity
    - auto::getPayloadData
    - auto::getFromAddr
    - auto::getDataLen
    - auto::setHeader
    - auto::clonePacketBuffer
    - XskSocket::getFrameSize
    - ComboAddress::isIPv6
    - auto::parse
    - auto::cloneHeaderToPacketBuffer
    - ComboAddress::toStringWithPort
    - auto::getFrameOffsetFrom
    - PacketBuffer::data
    - auto::setPayload
    - auto::getFrameLen
    - auto::getSendTime
    - BOOST_CHECK_EQUAL
    - auto::addDelay
    - PacketBuffer
    - XskPacket
    - BOOST_CHECK
    - auto::empty
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_XskPacket)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/bench-dnsdist-cache.cc:37,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/bench-dnsdist-cache.cc:38,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - ' ids'
    argTypes:
    - InternalQueryState
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 33
    functionDepth: 1
    functionLinenumber: 33
    functionLinenumberEnd: 40
    functionName: getQuery
    functionSourceFile: /src/pdns/pdns/dnsdistdist/bench-dnsdist-cache.cc
    functionUses: 0
    functionsReached:
    - GenericDNSPacketWriter::getHeader
    linkageType: ''
    returnType: PacketBuffer
    signature: PacketBuffer getQuery(const InternalQueryState& ids)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/bench-dnsdist-cache.cc:46,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/bench-dnsdist-cache.cc:47,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/bench-dnsdist-cache.cc:48,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/bench-dnsdist-cache.cc:49,1
    - Dst: GenericDNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/bench-dnsdist-cache.cc:50,1
    - Dst: GenericDNSPacketWriter::xfr32BitInt
      Src: /src/pdns/pdns/dnsdistdist/bench-dnsdist-cache.cc:51,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/bench-dnsdist-cache.cc:52,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 1
    argNames:
    - ' ids'
    argTypes:
    - InternalQueryState
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 42
    functionDepth: 1
    functionLinenumber: 42
    functionLinenumberEnd: 54
    functionName: getResponse
    functionSourceFile: /src/pdns/pdns/dnsdistdist/bench-dnsdist-cache.cc
    functionUses: 0
    functionsReached:
    - GenericDNSPacketWriter::getHeader
    - GenericDNSPacketWriter::commit
    - GenericDNSPacketWriter::xfr32BitInt
    - GenericDNSPacketWriter::startRecord
    linkageType: ''
    returnType: PacketBuffer
    signature: PacketBuffer getResponse(const InternalQueryState& ids)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: clear
      Src: /src/pdns/pdns/dnsdistdist/bench-dnsdist-cache.cc:91,1
    - Dst: emplace_back
      Src: /src/pdns/pdns/dnsdistdist/bench-dnsdist-cache.cc:93,1
    - Dst: join
      Src: /src/pdns/pdns/dnsdistdist/bench-dnsdist-cache.cc:96,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/bench-dnsdist-cache.cc:98,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 89
    functionDepth: 1
    functionLinenumber: 89
    functionLinenumberEnd: 99
    functionName: BENCHMARK
    functionSourceFile: /src/pdns/pdns/dnsdistdist/bench-dnsdist-cache.cc
    functionUses: 0
    functionsReached:
    - clear
    - size
    - join
    - emplace_back
    linkageType: ''
    returnType: void
    signature: void BENCHMARK(std::to_string(threadsCount))
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: clear
      Src: /src/pdns/pdns/dnsdistdist/bench-dnsdist-cache.cc:137,1
    - Dst: emplace_back
      Src: /src/pdns/pdns/dnsdistdist/bench-dnsdist-cache.cc:139,1
    - Dst: join
      Src: /src/pdns/pdns/dnsdistdist/bench-dnsdist-cache.cc:142,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/bench-dnsdist-cache.cc:144,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 145
      start: 135
    functionDepth: 1
    functionLinenumber: 135
    functionLinenumberEnd: 145
    functionName: BENCHMARK
    functionSourceFile: /src/pdns/pdns/dnsdistdist/bench-dnsdist-cache.cc
    functionUses: 0
    functionsReached:
    - clear
    - size
    - join
    - emplace_back
    linkageType: ''
    returnType: void
    signature: void BENCHMARK(std::to_string(threadsCount))
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:36,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:40,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:42,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:46,1
    - Dst: std::string_view
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:51,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:51,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:51,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:51,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:54,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:55,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:56,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:57,1
    - Dst: PacketReader::getName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:61,1
    - Dst: PacketReader::get16BitInt
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:62,1
    - Dst: PacketReader::get16BitInt
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:63,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:66,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:67,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:68,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:69,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:70,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:71,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:72,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:73,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:74,1
    - Dst: PacketReader::getName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:79,1
    - Dst: PacketReader::get16BitInt
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:80,1
    - Dst: PacketReader::get16BitInt
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:81,1
    - Dst: PacketReader::getName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:89,1
    - Dst: PacketReader::getDnsrecordheader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:90,1
    - Dst: GenericDNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:92,1
    - Dst: PacketReader::xfrBlob
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:93,1
    - Dst: GenericDNSPacketWriter::xfrBlob
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:94,1
    - Dst: PacketReader::getName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:98,1
    - Dst: PacketReader::getDnsrecordheader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:99,1
    - Dst: GenericDNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:101,1
    - Dst: PacketReader::xfrBlob
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:102,1
    - Dst: GenericDNSPacketWriter::xfrBlob
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:103,1
    - Dst: PacketReader::getName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:107,1
    - Dst: PacketReader::getDnsrecordheader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:108,1
    - Dst: GenericDNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:111,1
    - Dst: PacketReader::xfrBlob
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:112,1
    - Dst: GenericDNSPacketWriter::xfrBlob
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:113,1
    - Dst: PacketReader::skip
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:117,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:120,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 55
    argCount: 2
    argNames:
    - ' initialPacket'
    - ' newContent'
    argTypes:
    - PacketBuffer
    - PacketBuffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 34
    functionDepth: 1
    functionLinenumber: 34
    functionLinenumberEnd: 123
    functionName: rewriteResponseWithoutEDNS
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc
    functionUses: 4
    functionsReached:
    - PacketReader::getName
    - PacketReader::xfrBlob
    - ntohs
    - GenericDNSPacketWriter::startRecord
    - std::string_view
    - GenericDNSPacketWriter::getHeader
    - PacketReader::skip
    - size
    - PacketReader::get16BitInt
    - GenericDNSPacketWriter::commit
    - reinterpret_cast<const char*>
    - PacketReader::getDnsrecordheader
    - GenericDNSPacketWriter::xfrBlob
    - data
    linkageType: ''
    returnType: int
    signature: int rewriteResponseWithoutEDNS(const PacketBuffer& initialPacket, PacketBuffer&
      newContent)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:128,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:128,1
    - Dst: erase
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:136,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:144,1
    - Dst: emplace_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:145,1
    - Dst: emplace_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:149,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:149,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:149,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:149,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 6
    argNames:
    - ' options'
    - optionCode
    - ' optionAdded'
    - overrideExisting
    - allowMultiple
    - ' newOptionContent'
    argTypes:
    - std::vector<std::pair<uint16_t, std::string>>
    - uint16_t
    - bool
    - bool
    - bool
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 151
      start: 125
    functionDepth: 0
    functionLinenumber: 125
    functionLinenumberEnd: 151
    functionName: addOrReplaceEDNSOption
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc
    functionUses: 0
    functionsReached:
    - at
    - end
    - size
    - emplace_back
    - begin
    - std::string
    - erase
    linkageType: ''
    returnType: bool
    signature: bool addOrReplaceEDNSOption(std::vector<std::pair<uint16_t, std::string>>&
      options, uint16_t optionCode, bool& optionAdded, bool overrideExisting, bool
      allowMultiple, const string& newOptionContent)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:155,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:159,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:161,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:165,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:165,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:165,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:166,1
    - Dst: std::string_view
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:173,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:173,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:173,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:173,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:176,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:177,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:178,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:179,1
    - Dst: PacketReader::getName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:183,1
    - Dst: PacketReader::get16BitInt
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:184,1
    - Dst: PacketReader::get16BitInt
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:185,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:188,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:189,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:190,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:191,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:192,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:193,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:194,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:195,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:196,1
    - Dst: PacketReader::getName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:201,1
    - Dst: PacketReader::get16BitInt
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:202,1
    - Dst: PacketReader::get16BitInt
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:203,1
    - Dst: PacketReader::getName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:211,1
    - Dst: PacketReader::getDnsrecordheader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:212,1
    - Dst: GenericDNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:214,1
    - Dst: PacketReader::xfrBlob
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:215,1
    - Dst: GenericDNSPacketWriter::xfrBlob
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:216,1
    - Dst: PacketReader::getName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:220,1
    - Dst: PacketReader::getDnsrecordheader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:221,1
    - Dst: GenericDNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:223,1
    - Dst: PacketReader::xfrBlob
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:224,1
    - Dst: GenericDNSPacketWriter::xfrBlob
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:225,1
    - Dst: PacketReader::getName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:230,1
    - Dst: PacketReader::getDnsrecordheader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:231,1
    - Dst: GenericDNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:234,1
    - Dst: PacketReader::xfrBlob
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:235,1
    - Dst: GenericDNSPacketWriter::xfrBlob
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:236,1
    - Dst: PacketReader::xfrBlob
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:241,1
    - Dst: getEDNSOptionsFromContent
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:244,1
    - Dst: htonl
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:247,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:250,1
    - Dst: addOrReplaceEDNSOption
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:254,1
    - Dst: GenericDNSPacketWriter::addOpt
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:255,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:255,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:260,1
    - Dst: GenericDNSPacketWriter::addOpt
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:261,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:261,1
    - Dst: GenericDNSPacketWriter::addOpt
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:264,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:264,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:264,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:264,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:269,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 71
    argCount: 8
    argNames:
    - ' initialPacket'
    - ' newContent'
    - ' ednsAdded'
    - optionToReplace
    - ' optionAdded'
    - overrideExisting
    - allowMultiple
    - ' newOptionContent'
    argTypes:
    - PacketBuffer
    - PacketBuffer
    - bool
    - uint16_t
    - bool
    - bool
    - bool
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 272
      start: 153
    functionDepth: 1
    functionLinenumber: 153
    functionLinenumberEnd: 272
    functionName: slowRewriteEDNSOptionInQueryWithRecords
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc
    functionUses: 6
    functionsReached:
    - PacketReader::getName
    - ntohs
    - GenericDNSPacketWriter::getHeader
    - std::string
    - PacketReader::xfrBlob
    - GenericDNSPacketWriter::startRecord
    - size
    - PacketReader::get16BitInt
    - at
    - std::runtime_error
    - std::string_view
    - reinterpret_cast<const char*>
    - GenericDNSPacketWriter::xfrBlob
    - getEDNSOptionsFromContent
    - memcpy
    - GenericDNSPacketWriter::addOpt
    - htonl
    - addOrReplaceEDNSOption
    - GenericDNSPacketWriter::commit
    - PacketReader::getDnsrecordheader
    - data
    linkageType: ''
    returnType: bool
    signature: bool slowRewriteEDNSOptionInQueryWithRecords(const PacketBuffer& initialPacket,
      PacketBuffer& newContent, bool& ednsAdded, uint16_t optionToReplace, bool& optionAdded,
      bool overrideExisting, bool allowMultiple, const string& newOptionContent)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:277,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:280,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:281,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:284,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:286,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:290,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:291,1
    - Dst: std::string_view
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:295,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:295,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:295,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:295,1
    - Dst: DNSName::DNSName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:298,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:299,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:300,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:301,1
    - Dst: PacketReader::getName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:305,1
    - Dst: PacketReader::skip
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:306,1
    - Dst: PacketReader::getName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:310,1
    - Dst: PacketReader::getDnsrecordheader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:311,1
    - Dst: PacketReader::skip
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:312,1
    - Dst: PacketReader::getPosition
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:317,1
    - Dst: PacketReader::getName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:318,1
    - Dst: PacketReader::getDnsrecordheader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:319,1
    - Dst: PacketReader::getPosition
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:323,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:325,1
    - Dst: std::range_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:326,1
    - Dst: PacketReader::skip
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:337,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 39
    argCount: 4
    argNames:
    - ' packet'
    - optStart
    - optLen
    - last
    argTypes:
    - PacketBuffer
    - uint16_t*
    - size_t*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 341
      start: 274
    functionDepth: 0
    functionLinenumber: 274
    functionLinenumberEnd: 341
    functionName: locateEDNSOptRR
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc
    functionUses: 16
    functionsReached:
    - PacketReader::getName
    - ntohs
    - std::runtime_error
    - std::string_view
    - PacketReader::skip
    - size
    - reinterpret_cast<const char*>
    - PacketReader::getDnsrecordheader
    - std::range_error
    - data
    - DNSName::DNSName
    - PacketReader::getPosition
    linkageType: ''
    returnType: int
    signature: int locateEDNSOptRR(const PacketBuffer& packet, uint16_t* optStart,
      size_t* optLen, bool* last)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:352,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:355,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:357,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:361,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:361,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:361,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:361,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:368,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:372,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:382,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:382,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:386,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:392,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 30
    argCount: 4
    argNames:
    - ' packet'
    - qnameWireLength
    - optRDPosition
    - remaining
    argTypes:
    - PacketBuffer
    - size_t
    - uint16_t*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 395
      start: 349
    functionDepth: 0
    functionLinenumber: 349
    functionLinenumberEnd: 395
    functionName: dnsdist::getEDNSOptionsStart
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc
    functionUses: 13
    functionsReached:
    - ntohs
    - std::runtime_error
    - size
    - data
    - at
    linkageType: ''
    returnType: int
    signature: int getEDNSOptionsStart(const PacketBuffer& packet, const size_t qnameWireLength,
      uint16_t* optRDPosition, size_t* remaining)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:352,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:355,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:357,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:361,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:361,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:361,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:361,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:368,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:372,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:382,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:382,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:386,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:392,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 30
    argCount: 4
    argNames:
    - ' packet'
    - qnameWireLength
    - optRDPosition
    - remaining
    argTypes:
    - PacketBuffer
    - size_t
    - uint16_t*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 395
      start: 349
    functionDepth: 0
    functionLinenumber: 349
    functionLinenumberEnd: 395
    functionName: dnsdist::getEDNSOptionsStart
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc
    functionUses: 13
    functionsReached:
    - ntohs
    - std::runtime_error
    - size
    - data
    - at
    linkageType: ''
    returnType: int
    signature: int getEDNSOptionsStart(const PacketBuffer& packet, const size_t qnameWireLength,
      uint16_t* optRDPosition, size_t* remaining)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EDNSSubnetOpts::setSource
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:402,1
    - Dst: EDNSSubnetOpts::makeOptString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:403,1
    - Dst: generateEDNSOption
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:404,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - ' source'
    - ' res'
    - ECSPrefixLength
    argTypes:
    - ComboAddress
    - string
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 405
      start: 398
    functionDepth: 0
    functionLinenumber: 398
    functionLinenumberEnd: 405
    functionName: generateECSOption
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc
    functionUses: 15
    functionsReached:
    - EDNSSubnetOpts::makeOptString
    - EDNSSubnetOpts::setSource
    - generateEDNSOption
    linkageType: ''
    returnType: void
    signature: void generateECSOption(const ComboAddress& source, string& res, uint16_t
      ECSPrefixLength)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: htons
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:414,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:416,1
    - Dst: length
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:416,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:420,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:421,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:423,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:424,1
    - Dst: static_cast<uint16_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:424,1
    - Dst: length
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:424,1
    - Dst: reserve
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:426,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:426,1
    - Dst: length
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:426,1
    - Dst: insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:428,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:428,1
    - Dst: reinterpret_cast<const uint8_t*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:428,1
    - Dst: reinterpret_cast<const uint8_t*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:428,1
    - Dst: insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:430,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:430,1
    - Dst: reinterpret_cast<const uint8_t*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:430,1
    - Dst: reinterpret_cast<const uint8_t*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:430,1
    - Dst: insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:431,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:431,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:431,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:431,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 16
    argCount: 6
    argNames:
    - ' optRData'
    - ' res'
    - maximumSize
    - udpPayloadSize
    - ednsrcode
    - dnssecOK
    argTypes:
    - std::string
    - PacketBuffer
    - size_t
    - uint16_t
    - uint8_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 434
      start: 407
    functionDepth: 1
    functionLinenumber: 407
    functionLinenumberEnd: 434
    functionName: generateOptRR
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc
    functionUses: 3
    functionsReached:
    - length
    - memcpy
    - reinterpret_cast<const uint8_t*>
    - end
    - size
    - reserve
    - static_cast<uint16_t>
    - insert
    - begin
    - htons
    linkageType: ''
    returnType: bool
    signature: bool generateOptRR(const std::string& optRData, PacketBuffer& res,
      size_t maximumSize, uint16_t udpPayloadSize, uint8_t ednsrcode, bool dnssecOK)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:438,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:438,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:439,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:442,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:444,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:444,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:444,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:448,1
    - Dst: length
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:448,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:450,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:453,1
    - Dst: resize
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:458,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:462,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:462,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:463,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:464,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:465,1
    - Dst: memmove
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:468,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:468,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:468,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:470,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:470,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:470,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:470,1
    - Dst: resize
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:471,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 23
    argCount: 6
    argNames:
    - ' packet'
    - maximumSize
    - oldEcsOptionStartPosition
    - oldEcsOptionSize
    - optRDLenPosition
    - ' newECSOption'
    argTypes:
    - PacketBuffer
    - size_t
    - size_t
    - size_t
    - size_t
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 475
      start: 436
    functionDepth: 1
    functionLinenumber: 436
    functionLinenumberEnd: 475
    functionName: replaceEDNSClientSubnetOption
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc
    functionUses: 0
    functionsReached:
    - memcpy
    - length
    - resize
    - std::runtime_error
    - size
    - memmove
    - c_str
    - at
    linkageType: ''
    returnType: bool
    signature: bool replaceEDNSClientSubnetOption(PacketBuffer& packet, size_t maximumSize,
      size_t const oldEcsOptionStartPosition, size_t const oldEcsOptionSize, size_t
      const optRDLenPosition, const string& newECSOption)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: getHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:482,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:483,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:488,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:488,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:488,1
    - Dst: slowParseEDNSOptions
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:489,1
    - Dst: getData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:489,1
    - Dst: dnsdist::getEDNSOptionsStart
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:497,1
    - Dst: getData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:497,1
    - Dst: ids::qname::wirelength
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:497,1
    - Dst: getEDNSOptions
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:501,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:501,1
    - Dst: getData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:501,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 18
    argCount: 1
    argNames:
    - ' dnsQuestion'
    argTypes:
    - DNSQuestion
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 509
      start: 479
    functionDepth: 1
    functionLinenumber: 479
    functionLinenumberEnd: 509
    functionName: parseEDNSOptions
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc
    functionUses: 10
    functionsReached:
    - ids::qname::wirelength
    - ntohs
    - reinterpret_cast<const char*>
    - getEDNSOptions
    - getHeader
    - getData
    - dnsdist::getEDNSOptionsStart
    - slowParseEDNSOptions
    linkageType: ''
    returnType: std::optional<EDNSOptionViewMap>
    signature: std::optional<EDNSOptionViewMap> parseEDNSOptions(const DNSQuestion&
      dnsQuestion)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:516,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:516,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:517,1
    - Dst: getDNSPacketLength
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:520,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:520,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:520,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:520,1
    - Dst: resize
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:521,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:524,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:524,1
    - Dst: static_cast<uint32_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:528,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:528,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:529,1
    - Dst: static_cast<uint16_t>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:532,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:533,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:534,1
    - Dst: insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:536,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:536,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:536,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:536,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 5
    argNames:
    - ' packet'
    - maximumSize
    - ' newECSOption'
    - optRDLenPosition
    - ' ecsAdded'
    argTypes:
    - PacketBuffer
    - size_t
    - string
    - size_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 540
      start: 511
    functionDepth: 1
    functionLinenumber: 511
    functionLinenumberEnd: 540
    functionName: addECSToExistingOPT
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc
    functionUses: 0
    functionsReached:
    - pdns::max
    - resize
    - end
    - size
    - static_cast<uint32_t>
    - begin
    - reinterpret_cast<const char*>
    - static_cast<uint16_t>
    - insert
    - data
    - getDNSPacketLength
    - at
    linkageType: ''
    returnType: bool
    signature: bool addECSToExistingOPT(PacketBuffer& packet, size_t maximumSize,
      const string& newECSOption, size_t optRDLenPosition, bool& ecsAdded)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: generateOptRR
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:544,1
    - Dst: dnsdist::PacketMangling::editDNSHeaderFromPacket
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:548,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:549,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:551,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 5
    argNames:
    - ' packet'
    - maximumSize
    - ' newECSOption'
    - ' ednsAdded'
    - ' ecsAdded'
    argTypes:
    - PacketBuffer
    - size_t
    - string
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 558
      start: 542
    functionDepth: 2
    functionLinenumber: 542
    functionLinenumberEnd: 558
    functionName: addEDNSWithECS
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc
    functionUses: 0
    functionsReached:
    - generateOptRR
    - htons
    - dnsdist::PacketMangling::editDNSHeaderFromPacket
    - ntohs
    linkageType: ''
    returnType: bool
    signature: bool addEDNSWithECS(PacketBuffer& packet, size_t maximumSize, const
      string& newECSOption, bool& ednsAdded, bool& ecsAdded)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:562,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:563,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:566,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:568,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:568,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:568,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:568,1
    - Dst: PacketBuffer::reserve
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:570,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:570,1
    - Dst: slowRewriteEDNSOptionInQueryWithRecords
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:572,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:576,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:582,1
    - Dst: dnsdist::getEDNSOptionsStart
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:589,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:595,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:596,1
    - Dst: resize
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:598,1
    - Dst: getDNSPacketLength
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:602,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:602,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:602,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:602,1
    - Dst: resize
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:603,1
    - Dst: addEDNSWithECS
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:607,1
    - Dst: getEDNSOption
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:613,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:613,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:613,1
    - Dst: replaceEDNSClientSubnetOption
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:621,1
    - Dst: addECSToExistingOPT
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:630,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 38
    argCount: 7
    argNames:
    - ' packet'
    - maximumSize
    - qnameWireLength
    - ' ednsAdded'
    - ' ecsAdded'
    - overrideExisting
    - ' newECSOption'
    argTypes:
    - PacketBuffer
    - size_t
    - size_t
    - bool
    - bool
    - bool
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 631
      start: 560
    functionDepth: 3
    functionLinenumber: 560
    functionLinenumberEnd: 631
    functionName: handleEDNSClientSubnet
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc
    functionUses: 18
    functionsReached:
    - std::move
    - resize
    - ntohs
    - std::runtime_error
    - PacketBuffer::reserve
    - addEDNSWithECS
    - size
    - PacketBuffer::size
    - reinterpret_cast<const char*>
    - data
    - getDNSPacketLength
    - addECSToExistingOPT
    - replaceEDNSClientSubnetOption
    - dnsdist::getEDNSOptionsStart
    - at
    - slowRewriteEDNSOptionInQueryWithRecords
    - getEDNSOption
    linkageType: ''
    returnType: bool
    signature: bool handleEDNSClientSubnet(PacketBuffer& packet, const size_t maximumSize,
      const size_t qnameWireLength, bool& ednsAdded, bool& ecsAdded, bool overrideExisting,
      const string& newECSOption)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: generateECSOption
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:636,1
    - Dst: ecs::getNetwork
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:636,1
    - Dst: ecs::getBits
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:636,1
    - Dst: handleEDNSClientSubnet
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:638,1
    - Dst: getMutableData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:638,1
    - Dst: getMaximumSize
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:638,1
    - Dst: ids::qname::wirelength
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:638,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - ' dnsQuestion'
    - ' ednsAdded'
    - ' ecsAdded'
    argTypes:
    - DNSQuestion
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 639
      start: 633
    functionDepth: 2
    functionLinenumber: 633
    functionLinenumberEnd: 639
    functionName: handleEDNSClientSubnet
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc
    functionUses: 19
    functionsReached:
    - ecs::getBits
    - generateECSOption
    - ecs::getNetwork
    - getMutableData
    - handleEDNSClientSubnet
    - getMaximumSize
    - ids::qname::wirelength
    linkageType: ''
    returnType: bool
    signature: bool handleEDNSClientSubnet(DNSQuestion& dnsQuestion, bool& ednsAdded,
      bool& ecsAdded)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: pdns::views::UnsignedCharView::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:645,1
    - Dst: pdns::views::UnsignedCharView::at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:647,1
    - Dst: pdns::views::UnsignedCharView::at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:647,1
    - Dst: pdns::views::UnsignedCharView::at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:649,1
    - Dst: pdns::views::UnsignedCharView::at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:649,1
    - Dst: pdns::views::UnsignedCharView::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:651,1
    - Dst: pdns::views::UnsignedCharView::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:655,1
    - Dst: memmove
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:659,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 4
    argNames:
    - optionsStart
    - optionsLen
    - optionCodeToRemove
    - newOptionsLen
    argTypes:
    - unsigned char*
    - uint16_t
    - uint16_t
    - uint16_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 667
      start: 641
    functionDepth: 0
    functionLinenumber: 641
    functionLinenumberEnd: 667
    functionName: removeEDNSOptionFromOptions
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc
    functionUses: 0
    functionsReached:
    - pdns::views::UnsignedCharView::size
    - pdns::views::UnsignedCharView::at
    - memmove
    linkageType: ''
    returnType: int
    signature: int removeEDNSOptionFromOptions(unsigned char* optionsStart, const
      uint16_t optionsLen, const uint16_t optionCodeToRemove, uint16_t* newOptionsLen)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: pdns::views::UnsignedCharView::at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:677,1
    - Dst: pdns::views::UnsignedCharView::at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:677,1
    - Dst: pdns::views::UnsignedCharView::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:679,1
    - Dst: removeEDNSOptionFromOptions
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:684,1
    - Dst: reinterpret_cast<unsigned char*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:684,1
    - Dst: reinterpret_cast<unsigned char*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:690,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 3
    argNames:
    - optStart
    - optLen
    - optionCodeToRemove
    argTypes:
    - char*
    - size_t*
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 696
      start: 669
    functionDepth: 1
    functionLinenumber: 669
    functionLinenumberEnd: 696
    functionName: removeEDNSOptionFromOPT
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc
    functionUses: 9
    functionsReached:
    - reinterpret_cast<unsigned char*>
    - pdns::views::UnsignedCharView::size
    - pdns::views::UnsignedCharView::at
    - removeEDNSOptionFromOptions
    linkageType: ''
    returnType: int
    signature: int removeEDNSOptionFromOPT(char* optStart, size_t* optLen, const uint16_t
      optionCodeToRemove)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<unsigned char>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:704,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:704,1
    - Dst: static_cast<unsigned char>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:704,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:704,1
    - Dst: static_cast<unsigned char>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:712,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:712,1
    - Dst: static_cast<unsigned char>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:712,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:712,1
    - Dst: static_cast<unsigned char>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:714,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:714,1
    - Dst: static_cast<unsigned char>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:714,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:714,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 26
    argCount: 6
    argNames:
    - ' packet'
    - optStart
    - optLen
    - optionCodeToFind
    - optContentStart
    - optContentLen
    argTypes:
    - PacketBuffer
    - size_t
    - size_t
    - uint16_t
    - size_t*
    - uint16_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 735
      start: 698
    functionDepth: 0
    functionLinenumber: 698
    functionLinenumberEnd: 735
    functionName: isEDNSOptionInOpt
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc
    functionUses: 7
    functionsReached:
    - at
    - static_cast<unsigned char>
    linkageType: ''
    returnType: bool
    signature: bool isEDNSOptionInOpt(const PacketBuffer& packet, const size_t optStart,
      const size_t optLen, const uint16_t optionCodeToFind, size_t* optContentStart,
      uint16_t* optContentLen)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:739,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:743,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:745,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:749,1
    - Dst: std::string_view
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:754,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:754,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:754,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:754,1
    - Dst: DNSName::DNSName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:757,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:758,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:759,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:760,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:761,1
    - Dst: PacketReader::getName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:767,1
    - Dst: PacketReader::get16BitInt
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:768,1
    - Dst: PacketReader::get16BitInt
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:769,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:772,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:773,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:774,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:775,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:776,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:777,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:778,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:779,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:780,1
    - Dst: PacketReader::getName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:785,1
    - Dst: PacketReader::get16BitInt
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:786,1
    - Dst: PacketReader::get16BitInt
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:787,1
    - Dst: PacketReader::getName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:795,1
    - Dst: PacketReader::getDnsrecordheader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:796,1
    - Dst: GenericDNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:798,1
    - Dst: PacketReader::xfrBlob
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:799,1
    - Dst: GenericDNSPacketWriter::xfrBlob
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:800,1
    - Dst: PacketReader::getName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:804,1
    - Dst: PacketReader::getDnsrecordheader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:805,1
    - Dst: GenericDNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:807,1
    - Dst: PacketReader::xfrBlob
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:808,1
    - Dst: GenericDNSPacketWriter::xfrBlob
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:809,1
    - Dst: PacketReader::getName
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:814,1
    - Dst: PacketReader::getDnsrecordheader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:815,1
    - Dst: GenericDNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:818,1
    - Dst: PacketReader::xfrBlob
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:819,1
    - Dst: GenericDNSPacketWriter::xfrBlob
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:820,1
    - Dst: GenericDNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:823,1
    - Dst: PacketReader::xfrBlob
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:824,1
    - Dst: string::length
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:825,1
    - Dst: removeEDNSOptionFromOptions
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:827,1
    - Dst: reinterpret_cast<unsigned char*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:827,1
    - Dst: string::data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:827,1
    - Dst: string::resize
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:830,1
    - Dst: GenericDNSPacketWriter::xfrBlob
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:831,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:834,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:838,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 66
    argCount: 3
    argNames:
    - ' initialPacket'
    - optionCodeToSkip
    - ' newContent'
    argTypes:
    - PacketBuffer
    - uint16_t
    - PacketBuffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 841
      start: 737
    functionDepth: 1
    functionLinenumber: 737
    functionLinenumberEnd: 841
    functionName: rewriteResponseWithoutEDNSOption
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc
    functionUses: 5
    functionsReached:
    - PacketReader::getName
    - ntohs
    - GenericDNSPacketWriter::getHeader
    - string::data
    - string::resize
    - PacketReader::xfrBlob
    - GenericDNSPacketWriter::startRecord
    - size
    - PacketReader::get16BitInt
    - reinterpret_cast<unsigned char*>
    - removeEDNSOptionFromOptions
    - std::string_view
    - reinterpret_cast<const char*>
    - GenericDNSPacketWriter::xfrBlob
    - string::length
    - GenericDNSPacketWriter::commit
    - PacketReader::getDnsrecordheader
    - data
    - DNSName::DNSName
    linkageType: ''
    returnType: int
    signature: int rewriteResponseWithoutEDNSOption(const PacketBuffer& initialPacket,
      const uint16_t optionCodeToSkip, PacketBuffer& newContent)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: generateOptRR
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:845,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:845,1
    - Dst: dnsdist::PacketMangling::editDNSHeaderFromPacket
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:849,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:850,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:850,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 5
    argNames:
    - ' packet'
    - maximumSize
    - dnssecOK
    - payloadSize
    - ednsrcode
    argTypes:
    - PacketBuffer
    - size_t
    - bool
    - uint16_t
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 855
      start: 843
    functionDepth: 2
    functionLinenumber: 843
    functionLinenumberEnd: 855
    functionName: addEDNS
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc
    functionUses: 10
    functionsReached:
    - ntohs
    - dnsdist::PacketMangling::editDNSHeaderFromPacket
    - generateOptRR
    - std::string
    - htons
    linkageType: ''
    returnType: bool
    signature: bool addEDNS(PacketBuffer& packet, size_t maximumSize, bool dnssecOK,
      uint16_t payloadSize, uint8_t ednsrcode)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: getMutableData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:863,1
    - Dst: getHeader
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:864,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:865,1
    - Dst: ids::qname::wirelength
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:869,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:870,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:875,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:876,1
    - Dst: wirelength
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:877,1
    - Dst: wirelength
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:877,1
    - Dst: wirelength
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:878,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:882,1
    - Dst: getEDNSUDPPayloadSizeAndZ
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:886,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:886,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:886,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:886,1
    - Dst: resize
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:893,1
    - Dst: dnsdist::PacketMangling::editDNSHeaderFromPacket
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:894,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:908,1
    - Dst: htonl
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:909,1
    - Dst: htonl
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:910,1
    - Dst: htonl
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:911,1
    - Dst: htonl
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:912,1
    - Dst: htonl
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:913,1
    - Dst: htonl
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:914,1
    - Dst: std::string::reserve
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:917,1
    - Dst: std::string::append
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:918,1
    - Dst: toDNSString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:918,1
    - Dst: std::string::append
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:920,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:920,1
    - Dst: std::string::append
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:922,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:922,1
    - Dst: std::string::append
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:924,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:924,1
    - Dst: std::string::append
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:926,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:926,1
    - Dst: std::string::append
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:927,1
    - Dst: toDNSString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:927,1
    - Dst: std::string::append
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:928,1
    - Dst: toDNSString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:928,1
    - Dst: std::string::append
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:930,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:930,1
    - Dst: std::string::append
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:932,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:932,1
    - Dst: std::string::append
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:934,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:934,1
    - Dst: std::string::append
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:936,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:936,1
    - Dst: std::string::append
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:938,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:938,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:940,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:941,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:941,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:941,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:941,1
    - Dst: insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:944,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:944,1
    - Dst: std::string::begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:944,1
    - Dst: std::string::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:944,1
    - Dst: dnsdist::PacketMangling::editDNSHeaderFromPacket
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:949,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:951,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:954,1
    - Dst: addEDNS
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:961,1
    - Dst: getMaximumSize
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:961,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:961,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 62
    argCount: 12
    argNames:
    - ' dnsQuestion'
    - nxd
    - ' zone'
    - ttl
    - ' mname'
    - ' rname'
    - serial
    - refresh
    - retry
    - expire
    - minimum
    - soaInAuthoritySection
    argTypes:
    - DNSQuestion
    - bool
    - DNSName
    - uint32_t
    - DNSName
    - DNSName
    - uint32_t
    - uint32_t
    - uint32_t
    - uint32_t
    - uint32_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 965
      start: 861
    functionDepth: 3
    functionLinenumber: 861
    functionLinenumberEnd: 965
    functionName: setNegativeAndAdditionalSOA
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc
    functionUses: 4
    functionsReached:
    - getMutableData
    - std::to_string
    - wirelength
    - ntohs
    - std::string::reserve
    - std::string::end
    - addEDNS
    - insert
    - std::string::size
    - getEDNSUDPPayloadSizeAndZ
    - resize
    - std::string::append
    - size
    - getMaximumSize
    - toDNSString
    - htons
    - std::string::begin
    - dnsdist::configuration::getCurrentRuntimeConfiguration
    - std::runtime_error
    - reinterpret_cast<const char*>
    - getHeader
    - ids::qname::wirelength
    - htonl
    - end
    - dnsdist::PacketMangling::editDNSHeaderFromPacket
    - data
    linkageType: ''
    returnType: bool
    signature: bool setNegativeAndAdditionalSOA(DNSQuestion& dnsQuestion, bool nxd,
      const DNSName& zone, uint32_t ttl, const DNSName& mname, const DNSName& rname,
      uint32_t serial, uint32_t refresh, uint32_t retry, uint32_t expire, uint32_t
      minimum, bool soaInAuthoritySection)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: getMutableData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:973,1
    - Dst: dnsdist::getEDNSOptionsStart
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:974,1
    - Dst: ids::qname::wirelength
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:974,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:982,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:990,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:990,1
    - Dst: resize
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:994,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:994,1
    - Dst: dnsdist::PacketMangling::editDNSHeaderFromPacket
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:995,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:1000,1
    - Dst: addEDNS
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:1002,1
    - Dst: getMaximumSize
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:1002,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:1002,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 1
    argNames:
    - ' dnsQuestion'
    argTypes:
    - DNSQuestion
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1007
      start: 967
    functionDepth: 3
    functionLinenumber: 967
    functionLinenumberEnd: 1007
    functionName: addEDNSToQueryTurnedResponse
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc
    functionUses: 2
    functionsReached:
    - getMutableData
    - resize
    - dnsdist::configuration::getCurrentRuntimeConfiguration
    - size
    - addEDNS
    - getMaximumSize
    - dnsdist::PacketMangling::editDNSHeaderFromPacket
    - ids::qname::wirelength
    - dnsdist::getEDNSOptionsStart
    - at
    linkageType: ''
    returnType: bool
    signature: bool addEDNSToQueryTurnedResponse(DNSQuestion& dnsQuestion)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: getData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:1014,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:1015,1
    - Dst: dnsdist::getEDNSOptionsStart
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:1021,1
    - Dst: ids::qname::wirelength
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:1021,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 1
    argNames:
    - ' dnsQuestion'
    argTypes:
    - DNSQuestion
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1035
      start: 1011
    functionDepth: 1
    functionLinenumber: 1011
    functionLinenumberEnd: 1035
    functionName: dnsdist::getEDNSRecordPosition
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc
    functionUses: 0
    functionsReached:
    - ids::qname::wirelength
    - getData
    - dnsdist::getEDNSOptionsStart
    - size
    linkageType: ''
    returnType: std::optional<size_t>
    signature: std::optional<size_t> getEDNSRecordPosition(const DNSQuestion& dnsQuestion)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::getEDNSRecordPosition
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:1041,1
    - Dst: getData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:1047,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:1048,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:1052,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:1052,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - ' dnsQuestion'
    argTypes:
    - DNSQuestion
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1057
      start: 1038
    functionDepth: 2
    functionLinenumber: 1038
    functionLinenumberEnd: 1057
    functionName: dnsdist::getEDNSZ
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc
    functionUses: 10
    functionsReached:
    - getData
    - at
    - size
    - dnsdist::getEDNSRecordPosition
    linkageType: ''
    returnType: int
    signature: int getEDNSZ(const DNSQuestion& dnsQuestion)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::getEDNSRecordPosition
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:1062,1
    - Dst: getData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:1068,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:1069,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:1073,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - ' dnsQuestion'
    argTypes:
    - DNSQuestion
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1078
      start: 1059
    functionDepth: 2
    functionLinenumber: 1059
    functionLinenumberEnd: 1078
    functionName: dnsdist::getEDNSVersion
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc
    functionUses: 3
    functionsReached:
    - getData
    - at
    - size
    - dnsdist::getEDNSRecordPosition
    linkageType: ''
    returnType: std::optional<uint8_t>
    signature: std::optional<uint8_t> getEDNSVersion(const DNSQuestion& dnsQuestion)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::getEDNSRecordPosition
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:1083,1
    - Dst: getData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:1089,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:1090,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:1094,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - ' dnsQuestion'
    argTypes:
    - DNSQuestion
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1099
      start: 1080
    functionDepth: 2
    functionLinenumber: 1080
    functionLinenumberEnd: 1099
    functionName: dnsdist::getEDNSExtendedRCode
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc
    functionUses: 3
    functionsReached:
    - getData
    - at
    - size
    - dnsdist::getEDNSRecordPosition
    linkageType: ''
    returnType: std::optional<uint8_t>
    signature: std::optional<uint8_t> getEDNSExtendedRCode(const DNSQuestion& dnsQuestion)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: getData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:1014,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:1015,1
    - Dst: dnsdist::getEDNSOptionsStart
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:1021,1
    - Dst: ids::qname::wirelength
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:1021,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 1
    argNames:
    - ' dnsQuestion'
    argTypes:
    - DNSQuestion
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1035
      start: 1011
    functionDepth: 1
    functionLinenumber: 1011
    functionLinenumberEnd: 1035
    functionName: dnsdist::getEDNSRecordPosition
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc
    functionUses: 3
    functionsReached:
    - ids::qname::wirelength
    - getData
    - dnsdist::getEDNSOptionsStart
    - size
    linkageType: ''
    returnType: std::optional<size_t>
    signature: std::optional<size_t> getEDNSRecordPosition(const DNSQuestion& dnsQuestion)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::getEDNSRecordPosition
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:1041,1
    - Dst: getData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:1047,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:1048,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:1052,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:1052,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - ' dnsQuestion'
    argTypes:
    - DNSQuestion
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1057
      start: 1038
    functionDepth: 2
    functionLinenumber: 1038
    functionLinenumberEnd: 1057
    functionName: dnsdist::getEDNSZ
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc
    functionUses: 10
    functionsReached:
    - getData
    - at
    - size
    - dnsdist::getEDNSRecordPosition
    linkageType: ''
    returnType: int
    signature: int getEDNSZ(const DNSQuestion& dnsQuestion)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::getEDNSRecordPosition
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:1062,1
    - Dst: getData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:1068,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:1069,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:1073,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - ' dnsQuestion'
    argTypes:
    - DNSQuestion
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1078
      start: 1059
    functionDepth: 2
    functionLinenumber: 1059
    functionLinenumberEnd: 1078
    functionName: dnsdist::getEDNSVersion
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc
    functionUses: 3
    functionsReached:
    - getData
    - at
    - size
    - dnsdist::getEDNSRecordPosition
    linkageType: ''
    returnType: std::optional<uint8_t>
    signature: std::optional<uint8_t> getEDNSVersion(const DNSQuestion& dnsQuestion)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::getEDNSRecordPosition
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:1083,1
    - Dst: getData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:1089,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:1090,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:1094,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - ' dnsQuestion'
    argTypes:
    - DNSQuestion
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1099
      start: 1080
    functionDepth: 2
    functionLinenumber: 1080
    functionLinenumberEnd: 1099
    functionName: dnsdist::getEDNSExtendedRCode
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc
    functionUses: 3
    functionsReached:
    - getData
    - at
    - size
    - dnsdist::getEDNSRecordPosition
    linkageType: ''
    returnType: std::optional<uint8_t>
    signature: std::optional<uint8_t> getEDNSExtendedRCode(const DNSQuestion& dnsQuestion)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::getEDNSOptionsStart
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:1108,1
    - Dst: getData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:1108,1
    - Dst: ids::qname::wirelength
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:1108,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' dnsQuestion'
    argTypes:
    - DNSQuestion
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1110
      start: 1103
    functionDepth: 1
    functionLinenumber: 1103
    functionLinenumberEnd: 1110
    functionName: queryHasEDNS
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc
    functionUses: 4
    functionsReached:
    - ids::qname::wirelength
    - getData
    - dnsdist::getEDNSOptionsStart
    linkageType: ''
    returnType: bool
    signature: bool queryHasEDNS(const DNSQuestion& dnsQuestion)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: locateEDNSOptRR
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:1117,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:1127,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:1127,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:1134,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:1134,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 2
    argNames:
    - ' packet'
    - ' edns0'
    argTypes:
    - PacketBuffer
    - EDNS0Record
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1136
      start: 1112
    functionDepth: 1
    functionLinenumber: 1112
    functionLinenumberEnd: 1136
    functionName: getEDNS0Record
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc
    functionUses: 3
    functionsReached:
    - at
    - locateEDNSOptRR
    - size
    - memcpy
    linkageType: ''
    returnType: bool
    signature: bool getEDNS0Record(const PacketBuffer& packet, EDNS0Record& edns0)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:1140,1
    - Dst: generateEDNSOption
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:1144,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:1146,1
    - Dst: PacketBuffer::reserve
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:1151,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:1151,1
    - Dst: slowRewriteEDNSOptionInQueryWithRecords
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:1153,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:1157,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:1161,1
    - Dst: generateOptRR
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:1165,1
    - Dst: dnsdist::PacketMangling::editDNSHeaderFromPacket
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:1169,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:1170,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 27
    argCount: 6
    argNames:
    - ' buf'
    - ednsCode
    - ' ednsData'
    - maximumSize
    - ' ednsAdded'
    - ' optionAdded'
    argTypes:
    - PacketBuffer
    - uint16_t
    - std::string
    - size_t
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1176
      start: 1138
    functionDepth: 2
    functionLinenumber: 1138
    functionLinenumberEnd: 1176
    functionName: setEDNSOption
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc
    functionUses: 8
    functionsReached:
    - std::move
    - PacketBuffer::reserve
    - size
    - PacketBuffer::size
    - generateEDNSOption
    - dnsdist::PacketMangling::editDNSHeaderFromPacket
    - data
    - generateOptRR
    - slowRewriteEDNSOptionInQueryWithRecords
    - htons
    linkageType: ''
    returnType: bool
    signature: bool setEDNSOption(PacketBuffer& buf, uint16_t ednsCode, const std::string&
      ednsData, size_t maximumSize, bool& ednsAdded, bool& optionAdded)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: setEDNSOption
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:1182,1
    - Dst: getMutableData
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:1182,1
    - Dst: getMaximumSize
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:1182,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 4
    argNames:
    - ' dnsQuestion'
    - ednsCode
    - ' ednsData'
    - isQuery
    argTypes:
    - DNSQuestion
    - uint16_t
    - std::string
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1192
      start: 1178
    functionDepth: 2
    functionLinenumber: 1178
    functionLinenumberEnd: 1192
    functionName: setEDNSOption
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc
    functionUses: 9
    functionsReached:
    - getMaximumSize
    - getMutableData
    - setEDNSOption
    linkageType: ''
    returnType: bool
    signature: bool setEDNSOption(DNSQuestion& dnsQuestion, uint16_t ednsCode, const
      std::string& ednsData, bool isQuery)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: qname::wirelength
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:1198,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:1199,1
    - Dst: getEDNS0Record
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:1206,1
    - Dst: dnsdist::PacketMangling::editDNSHeaderFromPacket
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:1209,1
    - Dst: resize
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:1225,1
    - Dst: addEDNS
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:1228,1
    - Dst: DNSQuestion::getMaximumSize
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:1228,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:1228,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:1228,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 29
    argCount: 4
    argNames:
    - ' state'
    - ' buffer'
    - rcode
    - clearAnswers
    argTypes:
    - InternalQueryState
    - PacketBuffer
    - uint8_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1235
      start: 1196
    functionDepth: 3
    functionLinenumber: 1196
    functionLinenumberEnd: 1235
    functionName: dnsdist::setInternalQueryRCode
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc
    functionUses: 3
    functionsReached:
    - resize
    - dnsdist::configuration::getCurrentRuntimeConfiguration
    - size
    - qname::wirelength
    - addEDNS
    - dnsdist::PacketMangling::editDNSHeaderFromPacket
    - getEDNS0Record
    - DNSQuestion::getMaximumSize
    - htons
    linkageType: ''
    returnType: bool
    signature: bool setInternalQueryRCode(InternalQueryState& state, PacketBuffer&
      buffer, uint8_t rcode, bool clearAnswers)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: qname::wirelength
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:1198,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:1199,1
    - Dst: getEDNS0Record
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:1206,1
    - Dst: dnsdist::PacketMangling::editDNSHeaderFromPacket
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:1209,1
    - Dst: resize
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:1225,1
    - Dst: addEDNS
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:1228,1
    - Dst: DNSQuestion::getMaximumSize
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:1228,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:1228,1
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc:1228,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 29
    argCount: 4
    argNames:
    - ' state'
    - ' buffer'
    - rcode
    - clearAnswers
    argTypes:
    - InternalQueryState
    - PacketBuffer
    - uint8_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1235
      start: 1196
    functionDepth: 3
    functionLinenumber: 1196
    functionLinenumberEnd: 1235
    functionName: dnsdist::setInternalQueryRCode
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc
    functionUses: 3
    functionsReached:
    - resize
    - dnsdist::configuration::getCurrentRuntimeConfiguration
    - size
    - qname::wirelength
    - addEDNS
    - dnsdist::PacketMangling::editDNSHeaderFromPacket
    - getEDNS0Record
    - DNSQuestion::getMaximumSize
    - htons
    linkageType: ''
    returnType: bool
    signature: bool setInternalQueryRCode(InternalQueryState& state, PacketBuffer&
      buffer, uint8_t rcode, bool clearAnswers)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ComboAddress::addressOnlyEqual
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-mac-address.cc:36,1
    - Dst: time
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-mac-address.cc:37,1
    - Dst: read_lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-mac-address.cc:40,1
    - Dst: compare
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-mac-address.cc:42,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-mac-address.cc:47,1
    - Dst: mac::data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-mac-address.cc:47,1
    - Dst: mac::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-mac-address.cc:47,1
    - Dst: memset
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-mac-address.cc:55,1
    - Dst: getMACAddress
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-mac-address.cc:57,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-mac-address.cc:57,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-mac-address.cc:61,1
    - Dst: Entry::mac::data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-mac-address.cc:61,1
    - Dst: Entry::mac::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-mac-address.cc:61,1
    - Dst: memset
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-mac-address.cc:65,1
    - Dst: Entry::mac::data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-mac-address.cc:65,1
    - Dst: Entry::mac::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-mac-address.cc:65,1
    - Dst: write_lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-mac-address.cc:70,1
    - Dst: auto::capacity
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-mac-address.cc:71,1
    - Dst: auto::set_capacity
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-mac-address.cc:72,1
    - Dst: auto::push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-mac-address.cc:74,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-mac-address.cc:74,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 29
    argCount: 3
    argNames:
    - ' ca'
    - dest
    - destLen
    argTypes:
    - ComboAddress
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 30
    functionDepth: 0
    functionLinenumber: 30
    functionLinenumberEnd: 78
    functionName: dnsdist::MacAddressesCache::get
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-mac-address.cc
    functionUses: 4
    functionsReached:
    - reinterpret_cast<char*>
    - memcpy
    - Entry::mac::data
    - Entry::mac::size
    - mac::data
    - std::move
    - time
    - auto::capacity
    - ComboAddress::addressOnlyEqual
    - read_lock
    - memset
    - compare
    - auto::set_capacity
    - mac::size
    - write_lock
    - getMACAddress
    - auto::push_back
    linkageType: ''
    returnType: int
    signature: int MacAddressesCache::get(const ComboAddress& ca, unsigned char* dest,
      size_t destLen)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ComboAddress::addressOnlyEqual
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-mac-address.cc:36,1
    - Dst: time
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-mac-address.cc:37,1
    - Dst: read_lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-mac-address.cc:40,1
    - Dst: compare
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-mac-address.cc:42,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-mac-address.cc:47,1
    - Dst: mac::data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-mac-address.cc:47,1
    - Dst: mac::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-mac-address.cc:47,1
    - Dst: memset
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-mac-address.cc:55,1
    - Dst: getMACAddress
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-mac-address.cc:57,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-mac-address.cc:57,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-mac-address.cc:61,1
    - Dst: Entry::mac::data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-mac-address.cc:61,1
    - Dst: Entry::mac::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-mac-address.cc:61,1
    - Dst: memset
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-mac-address.cc:65,1
    - Dst: Entry::mac::data
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-mac-address.cc:65,1
    - Dst: Entry::mac::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-mac-address.cc:65,1
    - Dst: write_lock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-mac-address.cc:70,1
    - Dst: auto::capacity
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-mac-address.cc:71,1
    - Dst: auto::set_capacity
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-mac-address.cc:72,1
    - Dst: auto::push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-mac-address.cc:74,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-mac-address.cc:74,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 29
    argCount: 3
    argNames:
    - ' ca'
    - dest
    - destLen
    argTypes:
    - ComboAddress
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 30
    functionDepth: 0
    functionLinenumber: 30
    functionLinenumberEnd: 78
    functionName: dnsdist::MacAddressesCache::get
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-mac-address.cc
    functionUses: 4
    functionsReached:
    - reinterpret_cast<char*>
    - memcpy
    - Entry::mac::data
    - Entry::mac::size
    - mac::data
    - std::move
    - time
    - auto::capacity
    - ComboAddress::addressOnlyEqual
    - read_lock
    - memset
    - compare
    - auto::set_capacity
    - mac::size
    - write_lock
    - getMACAddress
    - auto::push_back
    linkageType: ''
    returnType: int
    signature: int MacAddressesCache::get(const ComboAddress& ca, unsigned char* dest,
      size_t destLen)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lua_pushlightuserdata
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.hh:48,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - state
    - ptr
    argTypes:
    - lua_State*
    - dnsdist_ffi_stat_node_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 46
    functionDepth: 0
    functionLinenumber: 46
    functionLinenumberEnd: 50
    functionName: push
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.hh
    functionUses: 15
    functionsReached:
    - lua_pushlightuserdata
    linkageType: ''
    returnType: PushedObject
    signature: PushedObject push(lua_State* state, dnsdist_ffi_stat_node_t* ptr) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 4
    argNames:
    - ' node_'
    - ' self_'
    - ' children_'
    - ' blockParameters'
    argTypes:
    - StatNode
    - StatNode::Stat
    - StatNode::Stat
    - SMTBlockParameters
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 63
    functionDepth: 0
    functionLinenumber: 63
    functionLinenumberEnd: 66
    functionName: dnsdist_ffi_stat_node_t
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void dnsdist_ffi_stat_node_t(const StatNode& node_, const StatNode::Stat&
      self_, const StatNode::Stat& children_, SMTBlockParameters& blockParameters)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 77
    functionDepth: 0
    functionLinenumber: 77
    functionLinenumberEnd: 81
    functionName: DynBlock
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void DynBlock()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 4
    argNames:
    - ' reason_'
    - ' until_'
    - ' domain_'
    - action_
    argTypes:
    - std::string
    - struct timespec
    - DNSName
    - DNSAction::Action
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 83
    functionDepth: 0
    functionLinenumber: 83
    functionLinenumberEnd: 86
    functionName: DynBlock
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void DynBlock(const std::string& reason_, const struct timespec& until_,
      const DNSName& domain_, DNSAction::Action action_)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: store
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.hh:91,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - DynBlock
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 88
    functionDepth: 0
    functionLinenumber: 88
    functionLinenumberEnd: 92
    functionName: DynBlock
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.hh
    functionUses: 0
    functionsReached:
    - store
    linkageType: ''
    returnType: void
    signature: void DynBlock(const DynBlock& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.hh:95,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.hh:95,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.hh:95,1
    - Dst: store
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.hh:97,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - DynBlock
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 94
    functionDepth: 0
    functionLinenumber: 94
    functionLinenumberEnd: 98
    functionName: DynBlock
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.hh
    functionUses: 0
    functionsReached:
    - std::move
    - store
    linkageType: ''
    returnType: void
    signature: void DynBlock(DynBlock&& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: store
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.hh:106,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - DynBlock
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 111
      start: 100
    functionDepth: 0
    functionLinenumber: 100
    functionLinenumberEnd: 111
    functionName: '& operator=(const DynBlock& rhs)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.hh
    functionUses: 0
    functionsReached:
    - store
    linkageType: ''
    returnType: DynBlock
    signature: DynBlock & operator=(const DynBlock& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.hh:115,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.hh:117,1
    - Dst: store
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.hh:119,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.hh:122,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - DynBlock
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 124
      start: 113
    functionDepth: 0
    functionLinenumber: 113
    functionLinenumberEnd: 124
    functionName: '& operator=(DynBlock&& rhs)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.hh
    functionUses: 0
    functionsReached:
    - std::move
    - store
    linkageType: ''
    returnType: DynBlock
    signature: DynBlock & operator=(DynBlock&& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 151
      start: 151
    functionDepth: 0
    functionLinenumber: 151
    functionLinenumberEnd: 151
    functionName: DynBlockRulesGroup::DynBlockRule
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void DynBlockRule()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 6
    argNames:
    - ' blockReason'
    - blockDuration
    - rate
    - warningRate
    - seconds
    - action
    argTypes:
    - std::string
    - uint32_t
    - uint32_t
    - uint32_t
    - uint32_t
    - DNSAction::Action
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 152
    functionDepth: 0
    functionLinenumber: 152
    functionLinenumberEnd: 155
    functionName: DynBlockRulesGroup::DynBlockRule
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void DynBlockRule(const std::string& blockReason, uint32_t blockDuration,
      uint32_t rate, uint32_t warningRate, uint32_t seconds, DNSAction::Action action)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 164
      start: 161
    functionDepth: 0
    functionLinenumber: 161
    functionLinenumberEnd: 164
    functionName: DynBlockRulesGroup::isEnabled
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool isEnabled() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 182
      start: 182
    functionDepth: 0
    functionLinenumber: 182
    functionLinenumberEnd: 182
    functionName: DynBlockRulesGroup::DynBlockRatioRule
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void DynBlockRatioRule()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 7
    argNames:
    - ' blockReason'
    - blockDuration
    - ratio
    - warningRatio
    - seconds
    - action
    - minimumNumberOfResponses
    argTypes:
    - std::string
    - uint32_t
    - double
    - double
    - uint32_t
    - DNSAction::Action
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 186
      start: 183
    functionDepth: 0
    functionLinenumber: 183
    functionLinenumberEnd: 186
    functionName: DynBlockRulesGroup::DynBlockRatioRule
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void DynBlockRatioRule(const std::string& blockReason, uint32_t blockDuration,
      double ratio, double warningRatio, uint32_t seconds, DNSAction::Action action,
      size_t minimumNumberOfResponses)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 199
      start: 199
    functionDepth: 0
    functionLinenumber: 199
    functionLinenumberEnd: 199
    functionName: DynBlockRulesGroup::DynBlockAllowedRCodesRatioRule
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void DynBlockAllowedRCodesRatioRule()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 8
    argNames:
    - ' rcodes'
    - ' blockReason'
    - blockDuration
    - ratio
    - warningRatio
    - seconds
    - action
    - minimumNumberOfResponses
    argTypes:
    - std::unordered_set<uint8_t>
    - std::string
    - uint32_t
    - double
    - double
    - uint32_t
    - DNSAction::Action
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 203
      start: 200
    functionDepth: 0
    functionLinenumber: 200
    functionLinenumberEnd: 203
    functionName: DynBlockRulesGroup::DynBlockAllowedRCodesRatioRule
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void DynBlockAllowedRCodesRatioRule(const std::unordered_set<uint8_t>&
      rcodes, const std::string& blockReason, uint32_t blockDuration, double ratio,
      double warningRatio, uint32_t seconds, DNSAction::Action action, size_t minimumNumberOfResponses)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 212
      start: 212
    functionDepth: 0
    functionLinenumber: 212
    functionLinenumberEnd: 212
    functionName: DynBlockRulesGroup::DynBlockCacheMissRatioRule
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void DynBlockCacheMissRatioRule()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 8
    argNames:
    - ' blockReason'
    - blockDuration
    - ratio
    - warningRatio
    - seconds
    - action
    - minimumNumberOfResponses
    - minimumGlobalCacheHitRatio
    argTypes:
    - std::string
    - uint32_t
    - double
    - double
    - uint32_t
    - DNSAction::Action
    - size_t
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 216
      start: 213
    functionDepth: 0
    functionLinenumber: 213
    functionLinenumberEnd: 216
    functionName: DynBlockRulesGroup::DynBlockCacheMissRatioRule
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void DynBlockCacheMissRatioRule(const std::string& blockReason, uint32_t
      blockDuration, double ratio, double warningRatio, uint32_t seconds, DNSAction::Action
      action, size_t minimumNumberOfResponses, double minimumGlobalCacheHitRatio)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 242
      start: 240
    functionDepth: 0
    functionLinenumber: 240
    functionLinenumberEnd: 242
    functionName: DynBlockRulesGroup::DynBlockRulesGroup
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.hh
    functionUses: 15
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void DynBlockRulesGroup()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.hh:246,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - ' rule'
    argTypes:
    - DynBlockRule
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 247
      start: 244
    functionDepth: 0
    functionLinenumber: 244
    functionLinenumberEnd: 247
    functionName: DynBlockRulesGroup::setQueryRate
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.hh
    functionUses: 8
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void setQueryRate(DynBlockRule&& rule)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.hh:252,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - ' rule'
    argTypes:
    - DynBlockRule
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 253
      start: 250
    functionDepth: 0
    functionLinenumber: 250
    functionLinenumberEnd: 253
    functionName: DynBlockRulesGroup::setResponseByteRate
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.hh
    functionUses: 1
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void setResponseByteRate(DynBlockRule&& rule)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.hh:257,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 2
    argNames:
    - rcode
    - ' rule'
    argTypes:
    - uint8_t
    - DynBlockRule
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 258
      start: 255
    functionDepth: 0
    functionLinenumber: 255
    functionLinenumberEnd: 258
    functionName: DynBlockRulesGroup::setRCodeRate
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.hh
    functionUses: 3
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void setRCodeRate(uint8_t rcode, DynBlockRule&& rule)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.hh:262,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 2
    argNames:
    - rcode
    - ' rule'
    argTypes:
    - uint8_t
    - DynBlockRatioRule
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 263
      start: 260
    functionDepth: 0
    functionLinenumber: 260
    functionLinenumberEnd: 263
    functionName: DynBlockRulesGroup::setRCodeRatio
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.hh
    functionUses: 1
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void setRCodeRatio(uint8_t rcode, DynBlockRatioRule&& rule)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.hh:267,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - ' rule'
    argTypes:
    - DynBlockAllowedRCodesRatioRule
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 268
      start: 265
    functionDepth: 0
    functionLinenumber: 265
    functionLinenumberEnd: 268
    functionName: DynBlockRulesGroup::setAllowedRCodesRatio
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.hh
    functionUses: 1
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void setAllowedRCodesRatio(DynBlockAllowedRCodesRatioRule&& rule)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.hh:272,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 2
    argNames:
    - qtype
    - ' rule'
    argTypes:
    - uint16_t
    - DynBlockRule
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 273
      start: 270
    functionDepth: 0
    functionLinenumber: 270
    functionLinenumberEnd: 273
    functionName: DynBlockRulesGroup::setQTypeRate
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.hh
    functionUses: 1
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void setQTypeRate(uint16_t qtype, DynBlockRule&& rule)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.hh:277,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - ' rule'
    argTypes:
    - DynBlockCacheMissRatioRule
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 278
      start: 275
    functionDepth: 0
    functionLinenumber: 275
    functionLinenumberEnd: 278
    functionName: DynBlockRulesGroup::setCacheMissRatio
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.hh
    functionUses: 1
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void setCacheMissRatio(DynBlockCacheMissRatioRule&& rule)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.hh:284,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.hh:285,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - ' rule'
    - visitor
    argTypes:
    - DynBlockRule
    - smtVisitor_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 286
      start: 282
    functionDepth: 0
    functionLinenumber: 282
    functionLinenumberEnd: 286
    functionName: DynBlockRulesGroup::setSuffixMatchRule
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.hh
    functionUses: 1
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void setSuffixMatchRule(DynBlockRule&& rule, smtVisitor_t visitor)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.hh:290,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.hh:291,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - ' rule'
    - visitor
    argTypes:
    - DynBlockRule
    - dnsdist_ffi_stat_node_visitor_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 292
      start: 288
    functionDepth: 0
    functionLinenumber: 288
    functionLinenumberEnd: 292
    functionName: DynBlockRulesGroup::setSuffixMatchRuleFFI
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.hh
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void setSuffixMatchRuleFFI(DynBlockRule&& rule, dnsdist_ffi_stat_node_visitor_t
      visitor)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' callback'
    argTypes:
    - dnsdist_ffi_dynamic_block_inserted_hook
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 297
      start: 294
    functionDepth: 0
    functionLinenumber: 294
    functionLinenumberEnd: 297
    functionName: DynBlockRulesGroup::setNewBlockHook
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setNewBlockHook(const dnsdist_ffi_dynamic_block_inserted_hook&
      callback)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - v4
    - v6
    - port
    argTypes:
    - uint8_t
    - uint8_t
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 304
      start: 299
    functionDepth: 0
    functionLinenumber: 299
    functionLinenumberEnd: 304
    functionName: DynBlockRulesGroup::setMasks
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.hh
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setMasks(uint8_t v4, uint8_t v6, uint8_t port)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: gettime
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.hh:309,1
    - Dst: DynBlockRulesGroup::apply
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.hh:311,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 312
      start: 306
    functionDepth: 0
    functionLinenumber: 306
    functionLinenumberEnd: 312
    functionName: DynBlockRulesGroup::apply
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.hh
    functionUses: 16
    functionsReached:
    - DynBlockRulesGroup::apply
    - gettime
    linkageType: ''
    returnType: void
    signature: void apply()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: addMask
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.hh:318,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' range'
    argTypes:
    - Netmask
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 319
      start: 316
    functionDepth: 0
    functionLinenumber: 316
    functionLinenumberEnd: 319
    functionName: DynBlockRulesGroup::excludeRange
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.hh
    functionUses: 2
    functionsReached:
    - addMask
    linkageType: ''
    returnType: void
    signature: void excludeRange(const Netmask& range)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: addMasks
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.hh:323,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' group'
    argTypes:
    - NetmaskGroup
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 324
      start: 321
    functionDepth: 0
    functionLinenumber: 321
    functionLinenumberEnd: 324
    functionName: DynBlockRulesGroup::excludeRange
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.hh
    functionUses: 2
    functionsReached:
    - addMasks
    linkageType: ''
    returnType: void
    signature: void excludeRange(const NetmaskGroup& group)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: addMask
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.hh:328,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' range'
    argTypes:
    - Netmask
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 329
      start: 326
    functionDepth: 0
    functionLinenumber: 326
    functionLinenumberEnd: 329
    functionName: DynBlockRulesGroup::includeRange
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.hh
    functionUses: 1
    functionsReached:
    - addMask
    linkageType: ''
    returnType: void
    signature: void includeRange(const Netmask& range)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: addMasks
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.hh:333,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' group'
    argTypes:
    - NetmaskGroup
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 334
      start: 331
    functionDepth: 0
    functionLinenumber: 331
    functionLinenumberEnd: 334
    functionName: DynBlockRulesGroup::includeRange
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.hh
    functionUses: 1
    functionsReached:
    - addMasks
    linkageType: ''
    returnType: void
    signature: void includeRange(const NetmaskGroup& group)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: deleteMask
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.hh:338,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' range'
    argTypes:
    - Netmask
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 339
      start: 336
    functionDepth: 0
    functionLinenumber: 336
    functionLinenumberEnd: 339
    functionName: DynBlockRulesGroup::removeRange
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.hh
    functionUses: 0
    functionsReached:
    - deleteMask
    linkageType: ''
    returnType: void
    signature: void removeRange(const Netmask& range)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: deleteMasks
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.hh:343,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' group'
    argTypes:
    - NetmaskGroup
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 344
      start: 341
    functionDepth: 0
    functionLinenumber: 341
    functionLinenumberEnd: 344
    functionName: DynBlockRulesGroup::removeRange
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.hh
    functionUses: 0
    functionsReached:
    - deleteMasks
    linkageType: ''
    returnType: void
    signature: void removeRange(const NetmaskGroup& group)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: add
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.hh:348,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' domain'
    argTypes:
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 349
      start: 346
    functionDepth: 0
    functionLinenumber: 346
    functionLinenumberEnd: 349
    functionName: DynBlockRulesGroup::excludeDomain
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.hh
    functionUses: 0
    functionsReached:
    - add
    linkageType: ''
    returnType: void
    signature: void excludeDomain(const DNSName& domain)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DynBlockRulesGroup::toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.hh:355,1
    - Dst: DynBlockRulesGroup::toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.hh:356,1
    - Dst: DynBlockRulesGroup::toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.hh:357,1
    - Dst: DynBlockRulesGroup::toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.hh:358,1
    - Dst: RCode::to_s
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.hh:361,1
    - Dst: second::toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.hh:361,1
    - Dst: RCode::to_s
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.hh:364,1
    - Dst: second::toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.hh:364,1
    - Dst: DynBlockRulesGroup::toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.hh:366,1
    - Dst: QType
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.hh:369,1
    - Dst: second::toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.hh:369,1
    - Dst: DynBlockRulesGroup::toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.hh:371,1
    - Dst: DynBlockRulesGroup::toString
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.hh:372,1
    - Dst: std::stringstream::str
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.hh:374,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 375
      start: 351
    functionDepth: 0
    functionLinenumber: 351
    functionLinenumberEnd: 375
    functionName: DynBlockRulesGroup::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.hh
    functionUses: 3
    functionsReached:
    - second::toString
    - QType
    - std::stringstream::str
    - DynBlockRulesGroup::toString
    - RCode::to_s
    linkageType: ''
    returnType: std::string
    signature: std::string toString() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - quiet
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 380
      start: 377
    functionDepth: 0
    functionLinenumber: 377
    functionLinenumberEnd: 380
    functionName: DynBlockRulesGroup::setQuiet
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.hh
    functionUses: 15
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setQuiet(bool quiet)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DynBlockRulesGroup::addOrRefreshBlock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.hh:391,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - ' blocks'
    - ' now'
    - ' requestor'
    - ' rule'
    - ' updated'
    argTypes:
    - std::optional<ClientAddressDynamicRules>
    - struct timespec
    - AddressAndPortRange
    - DynBlockRule
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 392
      start: 389
    functionDepth: 5
    functionLinenumber: 389
    functionLinenumberEnd: 392
    functionName: DynBlockRulesGroup::addBlock
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.hh
    functionUses: 1
    functionsReached:
    - DynBlockRulesGroup::addOrRefreshBlock
    linkageType: ''
    returnType: void
    signature: void addBlock(std::optional<ClientAddressDynamicRules>& blocks, const
      struct timespec& now, const AddressAndPortRange& requestor, const DynBlockRule&
      rule, bool& updated)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DynBlockRulesGroup::addOrRefreshBlock
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.hh:396,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - ' blocks'
    - ' now'
    - ' requestor'
    - ' rule'
    - ' updated'
    argTypes:
    - std::optional<ClientAddressDynamicRules>
    - struct timespec
    - AddressAndPortRange
    - DynBlockRule
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 397
      start: 394
    functionDepth: 5
    functionLinenumber: 394
    functionLinenumberEnd: 397
    functionName: DynBlockRulesGroup::handleWarning
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.hh
    functionUses: 1
    functionsReached:
    - DynBlockRulesGroup::addOrRefreshBlock
    linkageType: ''
    returnType: void
    signature: void handleWarning(std::optional<ClientAddressDynamicRules>& blocks,
      const struct timespec& now, const AddressAndPortRange& requestor, const DynBlockRule&
      rule, bool& updated)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DynBlockRulesGroup::isEnabled
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.hh:401,1
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.hh:401,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 402
      start: 399
    functionDepth: 1
    functionLinenumber: 399
    functionLinenumberEnd: 402
    functionName: DynBlockRulesGroup::hasQueryRules
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.hh
    functionUses: 2
    functionsReached:
    - DynBlockRulesGroup::isEnabled
    - empty
    linkageType: ''
    returnType: bool
    signature: bool hasQueryRules() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DynBlockRulesGroup::isEnabled
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.hh:406,1
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.hh:406,1
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.hh:406,1
    - Dst: DynBlockRulesGroup::isEnabled
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.hh:406,1
    - Dst: DynBlockRulesGroup::isEnabled
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.hh:406,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 407
      start: 404
    functionDepth: 1
    functionLinenumber: 404
    functionLinenumberEnd: 407
    functionName: DynBlockRulesGroup::hasResponseRules
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.hh
    functionUses: 2
    functionsReached:
    - DynBlockRulesGroup::isEnabled
    - empty
    linkageType: ''
    returnType: bool
    signature: bool hasResponseRules() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DynBlockRulesGroup::isEnabled
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.hh:411,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 412
      start: 409
    functionDepth: 1
    functionLinenumber: 409
    functionLinenumberEnd: 412
    functionName: DynBlockRulesGroup::hasSuffixMatchRules
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.hh
    functionUses: 1
    functionsReached:
    - DynBlockRulesGroup::isEnabled
    linkageType: ''
    returnType: bool
    signature: bool hasSuffixMatchRules() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DynBlockRulesGroup::hasQueryRules
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.hh:416,1
    - Dst: DynBlockRulesGroup::hasResponseRules
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.hh:416,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 417
      start: 414
    functionDepth: 2
    functionLinenumber: 414
    functionLinenumberEnd: 417
    functionName: DynBlockRulesGroup::hasRules
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.hh
    functionUses: 0
    functionsReached:
    - DynBlockRulesGroup::hasResponseRules
    - DynBlockRulesGroup::hasQueryRules
    linkageType: ''
    returnType: bool
    signature: bool hasRules() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 2
    argCount: 1
    argNames:
    - chr
    argTypes:
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 46
    functionName: dns_isspace
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsname.hh
    functionUses: 9
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool dns_isspace(char chr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - chr
    argTypes:
    - unsigned char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 51
    functionDepth: 0
    functionLinenumber: 51
    functionLinenumberEnd: 54
    functionName: dns_toupper
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsname.hh
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: unsigned char
    signature: unsigned char dns_toupper(unsigned char chr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - chr
    argTypes:
    - unsigned char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 57
    functionDepth: 0
    functionLinenumber: 57
    functionLinenumberEnd: 60
    functionName: dns_tolower
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsname.hh
    functionUses: 20
    functionsReached: []
    linkageType: ''
    returnType: unsigned char
    signature: unsigned char dns_tolower(unsigned char chr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 93
    functionDepth: 0
    functionLinenumber: 93
    functionLinenumberEnd: 93
    functionName: DNSName::DNSName
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsname.hh
    functionUses: 70
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void DNSName()
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 95
    functionDepth: 0
    functionLinenumber: 95
    functionLinenumberEnd: 101
    functionName: '& operator=(const DNSName& rhs)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsname.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: DNSName
    signature: DNSName & operator=(const DNSName& rhs)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:105,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 102
    functionDepth: 0
    functionLinenumber: 102
    functionLinenumberEnd: 108
    functionName: '& operator=(DNSName&& rhs) noexcept'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsname.hh
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: DNSName
    signature: DNSName & operator=(DNSName&& rhs) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 1
    argNames:
    - ' a'
    argTypes:
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 109
    functionDepth: 0
    functionLinenumber: 109
    functionLinenumberEnd: 109
    functionName: DNSName::DNSName
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsname.hh
    functionUses: 70
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void DNSName(const DNSName& a)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 1
    argNames:
    - ' a'
    argTypes:
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 110
    functionDepth: 0
    functionLinenumber: 110
    functionLinenumberEnd: 110
    functionName: DNSName::DNSName
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsname.hh
    functionUses: 70
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void DNSName(DNSName&& a)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' other'
    argTypes:
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 117
    functionDepth: 0
    functionLinenumber: 117
    functionLinenumberEnd: 117
    functionName: operator!=(const DNSName& other) const
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsname.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool operator!=(const DNSName& other) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:124,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 124
      start: 124
    functionDepth: 0
    functionLinenumber: 124
    functionLinenumberEnd: 124
    functionName: DNSName::toStringNoDot
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsname.hh
    functionUses: 4
    functionsReached:
    - DNSName::toString
    linkageType: ''
    returnType: std::string
    signature: std::string toStringNoDot() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DNSName::isRoot
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:125,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:125,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 125
      start: 125
    functionDepth: 0
    functionLinenumber: 125
    functionLinenumberEnd: 125
    functionName: DNSName::toStringRootDot
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsname.hh
    functionUses: 5
    functionsReached:
    - DNSName::toString
    - DNSName::isRoot
    linkageType: ''
    returnType: std::string
    signature: std::string toStringRootDot() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSName::makeUsLowerCase
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:139,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 141
      start: 136
    functionDepth: 0
    functionLinenumber: 136
    functionLinenumberEnd: 141
    functionName: DNSName::makeLowerCase
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsname.hh
    functionUses: 3
    functionsReached:
    - DNSName::makeUsLowerCase
    linkageType: ''
    returnType: DNSName
    signature: DNSName makeLowerCase() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dns_tolower
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:145,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 142
    functionDepth: 0
    functionLinenumber: 142
    functionLinenumberEnd: 147
    functionName: DNSName::makeUsLowerCase
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsname.hh
    functionUses: 4
    functionsReached:
    - dns_tolower
    linkageType: ''
    returnType: void
    signature: void makeUsLowerCase()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSName::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:155,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 155
    functionDepth: 0
    functionLinenumber: 155
    functionLinenumberEnd: 155
    functionName: DNSName::empty
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsname.hh
    functionUses: 42
    functionsReached:
    - DNSName::empty
    linkageType: ''
    returnType: bool
    signature: bool empty() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:156,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 156
      start: 156
    functionDepth: 0
    functionLinenumber: 156
    functionLinenumberEnd: 156
    functionName: DNSName::isRoot
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsname.hh
    functionUses: 11
    functionsReached:
    - size
    linkageType: ''
    returnType: bool
    signature: bool isRoot() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSName::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:157,1
    - Dst: DNSName::isRoot
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:157,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 157
      start: 157
    functionDepth: 0
    functionLinenumber: 157
    functionLinenumberEnd: 157
    functionName: DNSName::hasLabels
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsname.hh
    functionUses: 4
    functionsReached:
    - DNSName::isRoot
    - DNSName::empty
    linkageType: ''
    returnType: bool
    signature: bool hasLabels() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSName::clear
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:158,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 158
      start: 158
    functionDepth: 0
    functionLinenumber: 158
    functionLinenumberEnd: 158
    functionName: DNSName::clear
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsname.hh
    functionUses: 8
    functionsReached:
    - DNSName::clear
    linkageType: ''
    returnType: void
    signature: void clear()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: burtleCI
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:162,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 163
      start: 160
    functionDepth: 0
    functionLinenumber: 160
    functionLinenumberEnd: 163
    functionName: DNSName::hash
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsname.hh
    functionUses: 1
    functionsReached:
    - burtleCI
    linkageType: ''
    returnType: size_t
    signature: size_t hash(size_t init=0) const
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:166,1
    - Dst: d_storage::size
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:166,1
    - Dst: throwSafeRangeError
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:167,1
    - Dst: d_storage::data
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:167,1
    - Dst: d_storage::size
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:167,1
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:168,1
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:171,1
    - Dst: replace
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:174,1
    - Dst: length
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:174,1
    - Dst: d_storage::length
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:174,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 177
      start: 164
    functionDepth: 0
    functionLinenumber: 164
    functionLinenumberEnd: 177
    functionName: '& operator+=(const DNSName& rhs)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsname.hh
    functionUses: 0
    functionsReached:
    - length
    - d_storage::size
    - d_storage::length
    - d_storage::data
    - size
    - throwSafeRangeError
    - empty
    - replace
    linkageType: ''
    returnType: DNSName
    signature: DNSName & operator+=(const DNSName& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dns_tolower
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:185,1
    - Dst: dns_tolower
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:185,1
    - Dst: std::lexicographical_compare
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:190,1
    - Dst: rbegin
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:190,1
    - Dst: rend
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:190,1
    - Dst: d_storage::rbegin
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:191,1
    - Dst: d_storage::rend
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:191,1
    - Dst: DNSNameCompare
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:191,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 192
      start: 179
    functionDepth: 0
    functionLinenumber: 179
    functionLinenumberEnd: 192
    functionName: operator<(const DNSName& rhs)  const
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsname.hh
    functionUses: 0
    functionsReached:
    - std::lexicographical_compare
    - dns_tolower
    - rbegin
    - rend
    - DNSNameCompare
    - d_storage::rbegin
    - d_storage::rend
    linkageType: ''
    returnType: bool
    signature: bool operator<(const DNSName& rhs)  const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dns_tolower
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:185,1
    - Dst: dns_tolower
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:185,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' lhs'
    - ' rhs'
    argTypes:
    - unsigned char
    - unsigned char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 186
      start: 183
    functionDepth: 0
    functionLinenumber: 183
    functionLinenumberEnd: 186
    functionName: operator()(const unsigned char& lhs, const unsigned char& rhs) const
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsname.hh
    functionUses: 0
    functionsReached:
    - dns_tolower
    linkageType: ''
    returnType: bool
    signature: bool operator()(const unsigned char& lhs, const unsigned char& rhs)
      const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSName::canonCompare_three_way
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:196,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 196
      start: 196
    functionDepth: 0
    functionLinenumber: 196
    functionLinenumberEnd: 196
    functionName: DNSName::canonCompare
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsname.hh
    functionUses: 1
    functionsReached:
    - DNSName::canonCompare_three_way
    linkageType: ''
    returnType: bool
    signature: bool canonCompare(const DNSName& rhs, bool pretty = false) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 202
      start: 200
    functionDepth: 0
    functionLinenumber: 200
    functionLinenumberEnd: 202
    functionName: '& getStorage() const'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsname.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: string_t
    signature: string_t & getStorage() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:206,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 209
      start: 204
    functionDepth: 0
    functionLinenumber: 204
    functionLinenumberEnd: 209
    functionName: DNSName::sizeEstimate
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsname.hh
    functionUses: 0
    functionsReached:
    - size
    linkageType: ''
    returnType: size_t
    signature: size_t sizeEstimate() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSName::canonCompare
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:263,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - a
    - ' b'
    argTypes:
    - DNSName
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 264
      start: 261
    functionDepth: 0
    functionLinenumber: 261
    functionLinenumberEnd: 264
    functionName: operator()(const DNSName&a, const DNSName& b) const
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsname.hh
    functionUses: 0
    functionsReached:
    - DNSName::canonCompare
    linkageType: ''
    returnType: bool
    signature: bool operator()(const DNSName&a, const DNSName& b) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ' lhs'
    - ' rhs'
    argTypes:
    - DNSName
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 272
      start: 267
    functionDepth: 0
    functionLinenumber: 267
    functionLinenumberEnd: 272
    functionName: operator+(const DNSName& lhs, const DNSName& rhs)
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsname.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: DNSName
    signature: DNSName operator+(const DNSName& lhs, const DNSName& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 302
      start: 302
    functionDepth: 0
    functionLinenumber: 302
    functionLinenumberEnd: 302
    functionName: ZoneName::ZoneName
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsname.hh
    functionUses: 9
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ZoneName()
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - ZoneName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 311
      start: 304
    functionDepth: 0
    functionLinenumber: 304
    functionLinenumberEnd: 311
    functionName: '& operator=(const ZoneName& rhs)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsname.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: ZoneName
    signature: ZoneName & operator=(const ZoneName& rhs)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:315,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:316,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - ZoneName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 319
      start: 312
    functionDepth: 0
    functionLinenumber: 312
    functionLinenumberEnd: 319
    functionName: '& operator=(ZoneName&& rhs) noexcept'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsname.hh
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: ZoneName
    signature: ZoneName & operator=(ZoneName&& rhs) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 1
    argNames:
    - ' a'
    argTypes:
    - ZoneName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 320
      start: 320
    functionDepth: 0
    functionLinenumber: 320
    functionLinenumberEnd: 320
    functionName: ZoneName::ZoneName
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsname.hh
    functionUses: 9
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ZoneName(const ZoneName& a)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 1
    argNames:
    - ' a'
    argTypes:
    - ZoneName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 321
      start: 321
    functionDepth: 0
    functionLinenumber: 321
    functionLinenumberEnd: 321
    functionName: ZoneName::ZoneName
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsname.hh
    functionUses: 9
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ZoneName(ZoneName&& a)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - name
    - variant
    argTypes:
    - std::string_view
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 324
      start: 324
    functionDepth: 0
    functionLinenumber: 324
    functionLinenumberEnd: 324
    functionName: ZoneName::ZoneName
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsname.hh
    functionUses: 9
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ZoneName(std::string_view name, std::string_view variant)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' name'
    argTypes:
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 325
      start: 325
    functionDepth: 0
    functionLinenumber: 325
    functionLinenumberEnd: 325
    functionName: ZoneName::ZoneName
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsname.hh
    functionUses: 9
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ZoneName(const DNSName& name, std::string_view variant = ""sv)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ZoneName::isPartOf
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:328,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - ZoneName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 328
      start: 328
    functionDepth: 0
    functionLinenumber: 328
    functionLinenumberEnd: 328
    functionName: ZoneName::isPartOf
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsname.hh
    functionUses: 3
    functionsReached:
    - ZoneName::isPartOf
    linkageType: ''
    returnType: bool
    signature: bool isPartOf(const ZoneName& rhs) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ZoneName::isPartOf
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:329,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 329
      start: 329
    functionDepth: 0
    functionLinenumber: 329
    functionLinenumberEnd: 329
    functionName: ZoneName::isPartOf
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsname.hh
    functionUses: 4
    functionsReached:
    - ZoneName::isPartOf
    linkageType: ''
    returnType: bool
    signature: bool isPartOf(const DNSName& rhs) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - ZoneName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 330
      start: 330
    functionDepth: 0
    functionLinenumber: 330
    functionLinenumberEnd: 330
    functionName: operator==(const ZoneName& rhs) const
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsname.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool operator==(const ZoneName& rhs) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - ZoneName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 331
      start: 331
    functionDepth: 0
    functionLinenumber: 331
    functionLinenumberEnd: 331
    functionName: operator!=(const ZoneName& rhs) const
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsname.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool operator!=(const ZoneName& rhs) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ZoneName::toString
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:334,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' output'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 334
      start: 334
    functionDepth: 0
    functionLinenumber: 334
    functionLinenumberEnd: 334
    functionName: ZoneName::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsname.hh
    functionUses: 12
    functionsReached:
    - ZoneName::toString
    linkageType: ''
    returnType: void
    signature: void toString(std::string& output, const std::string& separator=".",
      const bool trailing=true) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ZoneName::chopOff
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:339,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 339
      start: 339
    functionDepth: 0
    functionLinenumber: 339
    functionLinenumberEnd: 339
    functionName: ZoneName::chopOff
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsname.hh
    functionUses: 8
    functionsReached:
    - ZoneName::chopOff
    linkageType: ''
    returnType: bool
    signature: bool chopOff()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ZoneName::d_name::makeUsLowerCase
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:343,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 345
      start: 340
    functionDepth: 0
    functionLinenumber: 340
    functionLinenumberEnd: 345
    functionName: ZoneName::makeLowerCase
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsname.hh
    functionUses: 1
    functionsReached:
    - ZoneName::d_name::makeUsLowerCase
    linkageType: ''
    returnType: ZoneName
    signature: ZoneName makeLowerCase() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ZoneName::makeUsLowerCase
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:346,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 346
      start: 346
    functionDepth: 0
    functionLinenumber: 346
    functionLinenumberEnd: 346
    functionName: ZoneName::makeUsLowerCase
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsname.hh
    functionUses: 4
    functionsReached:
    - ZoneName::makeUsLowerCase
    linkageType: ''
    returnType: void
    signature: void makeUsLowerCase()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ZoneName::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:347,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 347
      start: 347
    functionDepth: 0
    functionLinenumber: 347
    functionLinenumberEnd: 347
    functionName: ZoneName::empty
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsname.hh
    functionUses: 13
    functionsReached:
    - ZoneName::empty
    linkageType: ''
    returnType: bool
    signature: bool empty() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ZoneName::clear
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:348,1
    - Dst: ZoneName::clear
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:348,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 348
      start: 348
    functionDepth: 0
    functionLinenumber: 348
    functionLinenumberEnd: 348
    functionName: ZoneName::clear
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsname.hh
    functionUses: 2
    functionsReached:
    - ZoneName::clear
    linkageType: ''
    returnType: void
    signature: void clear()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ZoneName::trimToLabels
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:349,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - trim
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 349
      start: 349
    functionDepth: 0
    functionLinenumber: 349
    functionLinenumberEnd: 349
    functionName: ZoneName::trimToLabels
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsname.hh
    functionUses: 2
    functionsReached:
    - ZoneName::trimToLabels
    linkageType: ''
    returnType: void
    signature: void trimToLabels(unsigned int trim)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ZoneName::canonCompare_three_way
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:355,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - ZoneName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 355
      start: 355
    functionDepth: 0
    functionLinenumber: 355
    functionLinenumberEnd: 355
    functionName: ZoneName::canonCompare
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsname.hh
    functionUses: 0
    functionsReached:
    - ZoneName::canonCompare_three_way
    linkageType: ''
    returnType: bool
    signature: bool canonCompare(const ZoneName& rhs) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 358
      start: 358
    functionDepth: 0
    functionLinenumber: 358
    functionLinenumberEnd: 358
    functionName: operator const DNSName&() const
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsname.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void operator const DNSName&() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 359
      start: 359
    functionDepth: 0
    functionLinenumber: 359
    functionLinenumberEnd: 359
    functionName: operator DNSName&()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsname.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void operator DNSName&()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ZoneName::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:361,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 361
      start: 361
    functionDepth: 0
    functionLinenumber: 361
    functionLinenumberEnd: 361
    functionName: ZoneName::hasVariant
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsname.hh
    functionUses: 5
    functionsReached:
    - ZoneName::empty
    linkageType: ''
    returnType: bool
    signature: bool hasVariant() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 362
      start: 362
    functionDepth: 0
    functionLinenumber: 362
    functionLinenumberEnd: 362
    functionName: ZoneName::getVariant
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsname.hh
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string getVariant() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:382,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' dn'
    argTypes:
    - ZoneName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 382
      start: 382
    functionDepth: 2
    functionLinenumber: 382
    functionLinenumberEnd: 382
    functionName: operator () (const ZoneName& dn) const
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsname.hh
    functionUses: 0
    functionsReached:
    - hash
    linkageType: ''
    returnType: size_t
    signature: size_t operator () (const ZoneName& dn) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:382,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' dn'
    argTypes:
    - ZoneName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 382
      start: 382
    functionDepth: 2
    functionLinenumber: 382
    functionLinenumberEnd: 382
    functionName: operator () (const ZoneName& dn) const
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsname.hh
    functionUses: 0
    functionsReached:
    - hash
    linkageType: ''
    returnType: size_t
    signature: size_t operator () (const ZoneName& dn) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: canonCompare
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:390,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' a'
    - ' b'
    argTypes:
    - ZoneName
    - ZoneName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 391
      start: 388
    functionDepth: 0
    functionLinenumber: 388
    functionLinenumberEnd: 391
    functionName: operator()(const ZoneName& a, const ZoneName& b) const
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsname.hh
    functionUses: 0
    functionsReached:
    - canonCompare
    linkageType: ''
    returnType: bool
    signature: bool operator()(const ZoneName& a, const ZoneName& b) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:404,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 405
      start: 403
    functionDepth: 0
    functionLinenumber: 403
    functionLinenumberEnd: 405
    functionName: SuffixMatchTree
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsname.hh
    functionUses: 1
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void SuffixMatchTree(std::string name = "", bool endNode_ = false)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - SuffixMatchTree
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 412
      start: 407
    functionDepth: 0
    functionLinenumber: 407
    functionLinenumberEnd: 412
    functionName: SuffixMatchTree
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsname.hh
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void SuffixMatchTree(const SuffixMatchTree& rhs)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - rhs
    argTypes:
    - SuffixMatchTree
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 422
      start: 413
    functionDepth: 0
    functionLinenumber: 413
    functionLinenumberEnd: 422
    functionName: '& operator=(const SuffixMatchTree &rhs)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsname.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: SuffixMatchTree
    signature: SuffixMatchTree & operator=(const SuffixMatchTree &rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strcasecmp
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:425,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:425,1
    - Dst: d_name::c_str
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:425,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - SuffixMatchTree
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 426
      start: 423
    functionDepth: 0
    functionLinenumber: 423
    functionLinenumberEnd: 426
    functionName: operator<(const SuffixMatchTree& rhs) const
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsname.hh
    functionUses: 0
    functionsReached:
    - c_str
    - d_name::c_str
    - strcasecmp
    linkageType: ''
    returnType: bool
    signature: bool operator<(const SuffixMatchTree& rhs) const
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: std::min
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:441,1
    - Dst: d_name::size
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:441,1
    - Dst: d_name::size
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:441,1
    - Dst: strncasecmp
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:442,1
    - Dst: d_name::data
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:442,1
    - Dst: d_name::data
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:442,1
    - Dst: d_name::size
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:446,1
    - Dst: d_name::size
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:446,1
    - Dst: d_name::size
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:449,1
    - Dst: d_name::size
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:449,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - ' smt'
    argTypes:
    - SuffixMatchTree
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 450
      start: 439
    functionDepth: 0
    functionLinenumber: 439
    functionLinenumberEnd: 450
    functionName: operator<(const SuffixMatchTree& smt) const
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsname.hh
    functionUses: 0
    functionsReached:
    - std::min
    - d_name::data
    - d_name::size
    - strncasecmp
    linkageType: ''
    returnType: bool
    signature: bool operator<(const SuffixMatchTree& smt) const
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: std::min
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:455,1
    - Dst: d_name::size
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:455,1
    - Dst: d_name::size
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:455,1
    - Dst: strncasecmp
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:456,1
    - Dst: d_name::data
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:456,1
    - Dst: d_name::data
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:456,1
    - Dst: d_name::size
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:460,1
    - Dst: d_name::size
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:460,1
    - Dst: d_name::size
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:463,1
    - Dst: d_name::size
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:463,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - ' lk'
    argTypes:
    - LightKey
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 464
      start: 453
    functionDepth: 0
    functionLinenumber: 453
    functionLinenumberEnd: 464
    functionName: operator<(const LightKey& lk) const
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsname.hh
    functionUses: 0
    functionsReached:
    - std::min
    - d_name::data
    - d_name::size
    - strncasecmp
    linkageType: ''
    returnType: bool
    signature: bool operator<(const LightKey& lk) const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: visit
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:469,1
    - Dst: v
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:473,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - ' v'
    argTypes:
    - V
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 475
      start: 467
    functionDepth: 0
    functionLinenumber: 467
    functionLinenumberEnd: 475
    functionName: visit
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsname.hh
    functionUses: 14
    functionsReached:
    - visit
    - v
    linkageType: ''
    returnType: void
    signature: void visit(const V& v) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getRawLabels
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:479,1
    - Dst: add
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:480,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:480,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 2
    argNames:
    - ' name'
    - ' t'
    argTypes:
    - DNSName
    - T
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 481
      start: 477
    functionDepth: 0
    functionLinenumber: 477
    functionLinenumberEnd: 481
    functionName: add
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsname.hh
    functionUses: 46
    functionsReached:
    - add
    - getRawLabels
    - std::move
    linkageType: ''
    returnType: void
    signature: void add(const DNSName& name, T&& t)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:485,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:487,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:489,1
    - Dst: emplace
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:490,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:490,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:498,1
    - Dst: emplace
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:501,1
    - Dst: rbegin
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:501,1
    - Dst: pop_back
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:502,1
    - Dst: auto::first::add
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:503,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:503,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 2
    argNames:
    - ' labels'
    - ' value'
    argTypes:
    - std::vector<std::string>
    - T
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 505
      start: 483
    functionDepth: 0
    functionLinenumber: 483
    functionLinenumberEnd: 505
    functionName: add
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsname.hh
    functionUses: 47
    functionsReached:
    - std::move
    - pop_back
    - rbegin
    - size
    - begin
    - empty
    - emplace
    - auto::first::add
    linkageType: ''
    returnType: void
    signature: void add(std::vector<std::string>& labels, T&& value) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSName::getRawLabels
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:509,1
    - Dst: remove
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:510,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - name
    argTypes:
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 511
      start: 507
    functionDepth: 0
    functionLinenumber: 507
    functionLinenumberEnd: 511
    functionName: remove
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsname.hh
    functionUses: 15
    functionsReached:
    - DNSName::getRawLabels
    - remove
    linkageType: ''
    returnType: void
    signature: void remove(const DNSName &name, bool subtree=false) const
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:518,1
    - Dst: clear
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:521,1
    - Dst: rbegin
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:526,1
    - Dst: find
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:527,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:528,1
    - Dst: pop_back
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:534,1
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:535,1
    - Dst: auto::children::clear
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:540,1
    - Dst: auto::children::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:544,1
    - Dst: erase
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:545,1
    - Dst: auto::remove
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:551,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 23
    argCount: 1
    argNames:
    - ' labels'
    argTypes:
    - std::vector<std::string>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 552
      start: 516
    functionDepth: 1
    functionLinenumber: 516
    functionLinenumberEnd: 552
    functionName: remove
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsname.hh
    functionUses: 16
    functionsReached:
    - auto::children::empty
    - auto::children::clear
    - pop_back
    - auto::remove
    - rbegin
    - end
    - clear
    - empty
    - erase
    - find
    linkageType: ''
    returnType: void
    signature: void remove(std::vector<std::string>& labels, bool subtree = false)
      const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: getBestNode
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:556,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ' name'
    argTypes:
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 561
      start: 554
    functionDepth: 0
    functionLinenumber: 554
    functionLinenumberEnd: 561
    functionName: lookup
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsname.hh
    functionUses: 75
    functionsReached:
    - getBestNode
    linkageType: ''
    returnType: T
    signature: T * lookup(const DNSName& name) const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:565,1
    - Dst: std::optional<DNSName>
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:566,1
    - Dst: getRawLabelsVisitor
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:569,1
    - Dst: getBestMatch
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:570,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ' name'
    argTypes:
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 571
      start: 563
    functionDepth: 0
    functionLinenumber: 563
    functionLinenumberEnd: 571
    functionName: getBestMatch
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsname.hh
    functionUses: 6
    functionsReached:
    - empty
    - getBestMatch
    - std::optional<DNSName>
    - getRawLabelsVisitor
    linkageType: ''
    returnType: std::optional<DNSName>
    signature: std::optional<DNSName> getBestMatch(const DNSName& name) const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:577,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:577,1
    - Dst: getNodes
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:580,1
    - Dst: std::vector::reserve
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:581,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:581,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:581,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:583,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:583,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 587
      start: 574
    functionDepth: 0
    functionLinenumber: 574
    functionLinenumberEnd: 587
    functionName: getNodes
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsname.hh
    functionUses: 2
    functionsReached:
    - std::vector::push_back
    - std::vector::size
    - getNodes
    - DNSName
    - std::vector::reserve
    - auto::size
    linkageType: ''
    returnType: std::vector<DNSName>
    signature: std::vector<DNSName> getNodes() const
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:592,1
    - Dst: getRawLabelsVisitor
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:599,1
    - Dst: getBestNode
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:600,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - ' name'
    argTypes:
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 601
      start: 590
    functionDepth: 0
    functionLinenumber: 590
    functionLinenumberEnd: 601
    functionName: getBestNode
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsname.hh
    functionUses: 5
    functionsReached:
    - empty
    - getBestNode
    - getRawLabelsVisitor
    linkageType: ''
    returnType: SuffixMatchTree
    signature: SuffixMatchTree * getBestNode(const DNSName& name)  const
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:605,1
    - Dst: back
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:612,1
    - Dst: find
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:613,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:614,1
    - Dst: pop_back
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:620,1
    - Dst: auto::getBestNode
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:621,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 1
    argNames:
    - ' visitor'
    argTypes:
    - DNSName::RawLabelsVisitor
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 626
      start: 603
    functionDepth: 0
    functionLinenumber: 603
    functionLinenumberEnd: 626
    functionName: getBestNode
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsname.hh
    functionUses: 6
    functionsReached:
    - pop_back
    - end
    - back
    - empty
    - find
    - auto::getBestNode
    linkageType: ''
    returnType: SuffixMatchTree
    signature: SuffixMatchTree * getBestNode(DNSName::RawLabelsVisitor& visitor) const
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:630,1
    - Dst: std::optional<DNSName>
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:632,1
    - Dst: back
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:637,1
    - Dst: find
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:638,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:639,1
    - Dst: std::optional<DNSName>
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:641,1
    - Dst: pop_back
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:645,1
    - Dst: auto::getBestMatch
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:646,1
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:648,1
    - Dst: auto::appendRawLabel
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:649,1
    - Dst: std::optional<DNSName>
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:653,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 1
    argNames:
    - ' visitor'
    argTypes:
    - DNSName::RawLabelsVisitor
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 654
      start: 628
    functionDepth: 0
    functionLinenumber: 628
    functionLinenumberEnd: 654
    functionName: getBestMatch
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsname.hh
    functionUses: 7
    functionsReached:
    - pop_back
    - end
    - std::optional<DNSName>
    - back
    - auto::getBestMatch
    - auto::appendRawLabel
    - empty
    - find
    linkageType: ''
    returnType: std::optional<DNSName>
    signature: std::optional<DNSName> getBestMatch(DNSName::RawLabelsVisitor& visitor)
      const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 662
      start: 662
    functionDepth: 0
    functionLinenumber: 662
    functionLinenumberEnd: 662
    functionName: SuffixMatchNode
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsname.hh
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void SuffixMatchNode()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: add
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:667,1
    - Dst: insert
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:668,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ' dnsname'
    argTypes:
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 669
      start: 665
    functionDepth: 1
    functionLinenumber: 665
    functionLinenumberEnd: 669
    functionName: add
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsname.hh
    functionUses: 48
    functionsReached:
    - add
    - insert
    linkageType: ''
    returnType: void
    signature: void add(const DNSName& dnsname)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: add
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:673,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:673,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' name'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 674
      start: 671
    functionDepth: 0
    functionLinenumber: 671
    functionLinenumberEnd: 674
    functionName: add
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsname.hh
    functionUses: 49
    functionsReached:
    - add
    - DNSName
    linkageType: ''
    returnType: void
    signature: void add(const std::string& name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: add
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:678,1
    - Dst: DNSName::DNSName
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:679,1
    - Dst: std::vector<std::string>::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:680,1
    - Dst: DNSName::appendRawLabel
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:681,1
    - Dst: std::vector<std::string>::back
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:681,1
    - Dst: std::vector<std::string>::pop_back
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:682,1
    - Dst: insert
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:684,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - labels
    argTypes:
    - std::vector<std::string>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 685
      start: 676
    functionDepth: 1
    functionLinenumber: 676
    functionLinenumberEnd: 685
    functionName: add
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsname.hh
    functionUses: 50
    functionsReached:
    - add
    - std::vector<std::string>::empty
    - std::vector<std::string>::pop_back
    - DNSName::appendRawLabel
    - insert
    - DNSName::DNSName
    - std::vector<std::string>::back
    linkageType: ''
    returnType: void
    signature: void add(std::vector<std::string> labels)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: remove
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:689,1
    - Dst: erase
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:690,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ' name'
    argTypes:
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 691
      start: 687
    functionDepth: 0
    functionLinenumber: 687
    functionLinenumberEnd: 691
    functionName: remove
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsname.hh
    functionUses: 17
    functionsReached:
    - erase
    - remove
    linkageType: ''
    returnType: void
    signature: void remove(const DNSName& name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: remove
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:695,1
    - Dst: DNSName::DNSName
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:696,1
    - Dst: std::vector<std::string>::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:697,1
    - Dst: DNSName::appendRawLabel
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:698,1
    - Dst: std::vector<std::string>::back
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:698,1
    - Dst: std::vector<std::string>::pop_back
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:699,1
    - Dst: erase
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:701,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - labels
    argTypes:
    - std::vector<std::string>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 702
      start: 693
    functionDepth: 0
    functionLinenumber: 693
    functionLinenumberEnd: 702
    functionName: remove
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsname.hh
    functionUses: 18
    functionsReached:
    - std::vector<std::string>::empty
    - std::vector<std::string>::pop_back
    - DNSName::appendRawLabel
    - DNSName::DNSName
    - erase
    - std::vector<std::string>::back
    - remove
    linkageType: ''
    returnType: void
    signature: void remove(std::vector<std::string> labels)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lookup
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:706,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' dnsname'
    argTypes:
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 707
      start: 704
    functionDepth: 0
    functionLinenumber: 704
    functionLinenumberEnd: 707
    functionName: check
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsname.hh
    functionUses: 14
    functionsReached:
    - lookup
    linkageType: ''
    returnType: bool
    signature: bool check(const DNSName& dnsname) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getBestMatch
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:711,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' name'
    argTypes:
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 712
      start: 709
    functionDepth: 0
    functionLinenumber: 709
    functionLinenumberEnd: 712
    functionName: getBestMatch
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsname.hh
    functionUses: 8
    functionsReached:
    - getBestMatch
    linkageType: ''
    returnType: std::optional<DNSName>
    signature: std::optional<DNSName> getBestMatch(const DNSName& name) const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: toString
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:723,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 726
      start: 714
    functionDepth: 0
    functionLinenumber: 714
    functionLinenumberEnd: 726
    functionName: toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsname.hh
    functionUses: 337
    functionsReached:
    - toString
    linkageType: ''
    returnType: std::string
    signature: std::string toString() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::vector::reserve
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:731,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:731,1
    - Dst: std::vector::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:733,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 736
      start: 728
    functionDepth: 0
    functionLinenumber: 728
    functionLinenumberEnd: 736
    functionName: toVector
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsname.hh
    functionUses: 0
    functionsReached:
    - std::vector::reserve
    - std::vector::emplace_back
    - size
    linkageType: ''
    returnType: std::vector<DNSName>
    signature: std::vector<DNSName> toVector() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:746,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' dn'
    argTypes:
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 746
      start: 746
    functionDepth: 2
    functionLinenumber: 746
    functionLinenumberEnd: 746
    functionName: operator () (const DNSName& dn) const
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsname.hh
    functionUses: 0
    functionsReached:
    - hash
    linkageType: ''
    returnType: size_t
    signature: size_t operator () (const DNSName& dn) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:746,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' dn'
    argTypes:
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 746
      start: 746
    functionDepth: 2
    functionLinenumber: 746
    functionLinenumberEnd: 746
    functionName: operator () (const DNSName& dn) const
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsname.hh
    functionUses: 0
    functionsReached:
    - hash
    linkageType: ''
    returnType: size_t
    signature: size_t operator () (const DNSName& dn) const
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: DNSName::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:754,1
    - Dst: DNSName::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:754,1
    - Dst: d_storage::size
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:754,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:754,1
    - Dst: cbegin
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:758,1
    - Dst: d_storage::cbegin
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:759,1
    - Dst: cend
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:760,1
    - Dst: d_storage::cend
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:760,1
    - Dst: dns_tolower
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:761,1
    - Dst: dns_tolower
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:761,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 10
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 766
      start: 752
    functionDepth: 0
    functionLinenumber: 752
    functionLinenumberEnd: 766
    functionName: DNSName::operator==(const DNSName& rhs) const
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsname.hh
    functionUses: 0
    functionsReached:
    - d_storage::size
    - dns_tolower
    - size
    - cbegin
    - DNSName::empty
    - cend
    - d_storage::cbegin
    - d_storage::cend
    linkageType: ''
    returnType: bool
    signature: bool DNSName::operator==(const DNSName& rhs) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::copy
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:771,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:771,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:771,1
    - Dst: std::ostream_iterator<DNSName>
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:771,1
    - Dst: std::ostringstream::str
      Src: /src/pdns/pdns/dnsdistdist/dnsname.hh:772,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 773
      start: 769
    functionDepth: 0
    functionLinenumber: 769
    functionLinenumberEnd: 773
    functionName: toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsname.hh
    functionUses: 337
    functionsReached:
    - std::ostringstream::str
    - end
    - begin
    - std::ostream_iterator<DNSName>
    - std::copy
    linkageType: ''
    returnType: std::string
    signature: std::string toString() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LuaContext::registerFunction
      Src: /src/pdns/pdns/dnsdistdist/test-luawrapper.cc:29,1
    - Dst: LuaContext::writeVariable
      Src: /src/pdns/pdns/dnsdistdist/test-luawrapper.cc:31,1
    - Dst: LuaContext::executeCode
      Src: /src/pdns/pdns/dnsdistdist/test-luawrapper.cc:32,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-luawrapper.cc:34,1
    - Dst: LuaContext::readVariable
      Src: /src/pdns/pdns/dnsdistdist/test-luawrapper.cc:34,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 35
      start: 15
    functionDepth: 0
    functionLinenumber: 15
    functionLinenumberEnd: 35
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-luawrapper.cc
    functionUses: 0
    functionsReached:
    - LuaContext::registerFunction
    - LuaContext::writeVariable
    - LuaContext::executeCode
    - LuaContext::readVariable
    - BOOST_CHECK_EQUAL
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_registerFunction)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 24
      start: 24
    functionDepth: 0
    functionLinenumber: 24
    functionLinenumberEnd: 24
    functionName: increment
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-luawrapper.cc
    functionUses: 9
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void increment()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LuaContext::writeFunction
      Src: /src/pdns/pdns/dnsdistdist/test-luawrapper.cc:44,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/dnsdistdist/test-luawrapper.cc:48,1
    - Dst: LuaContext::executeCode
      Src: /src/pdns/pdns/dnsdistdist/test-luawrapper.cc:48,1
    - Dst: LuaContext::executeCode
      Src: /src/pdns/pdns/dnsdistdist/test-luawrapper.cc:51,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/dnsdistdist/test-luawrapper.cc:52,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-luawrapper.cc:53,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 41
    functionDepth: 0
    functionLinenumber: 41
    functionLinenumberEnd: 55
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-luawrapper.cc
    functionUses: 0
    functionsReached:
    - LuaContext::writeFunction
    - LuaContext::executeCode
    - BOOST_CHECK_EQUAL
    - BOOST_REQUIRE
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_boost_optional)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LuaContext::writeFunction
      Src: /src/pdns/pdns/dnsdistdist/test-luawrapper.cc:60,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/dnsdistdist/test-luawrapper.cc:64,1
    - Dst: LuaContext::executeCode
      Src: /src/pdns/pdns/dnsdistdist/test-luawrapper.cc:64,1
    - Dst: LuaContext::executeCode
      Src: /src/pdns/pdns/dnsdistdist/test-luawrapper.cc:67,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/dnsdistdist/test-luawrapper.cc:68,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-luawrapper.cc:69,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 57
    functionDepth: 0
    functionLinenumber: 57
    functionLinenumberEnd: 71
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-luawrapper.cc
    functionUses: 0
    functionsReached:
    - LuaContext::writeFunction
    - LuaContext::executeCode
    - BOOST_CHECK_EQUAL
    - BOOST_REQUIRE
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_std_optional)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LuaContext::writeFunction
      Src: /src/pdns/pdns/dnsdistdist/test-luawrapper.cc:78,1
    - Dst: LuaContext::executeCode
      Src: /src/pdns/pdns/dnsdistdist/test-luawrapper.cc:83,1
    - Dst: boost::get<int>
      Src: /src/pdns/pdns/dnsdistdist/test-luawrapper.cc:84,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/dnsdistdist/test-luawrapper.cc:85,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-luawrapper.cc:86,1
    - Dst: LuaContext::executeCode
      Src: /src/pdns/pdns/dnsdistdist/test-luawrapper.cc:90,1
    - Dst: boost::get<const std::string>
      Src: /src/pdns/pdns/dnsdistdist/test-luawrapper.cc:91,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/dnsdistdist/test-luawrapper.cc:92,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-luawrapper.cc:93,1
    - Dst: LuaContext::executeCode
      Src: /src/pdns/pdns/dnsdistdist/test-luawrapper.cc:98,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/dnsdistdist/test-luawrapper.cc:100,1
    - Dst: func
      Src: /src/pdns/pdns/dnsdistdist/test-luawrapper.cc:100,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 73
    functionDepth: 0
    functionLinenumber: 73
    functionLinenumberEnd: 102
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-luawrapper.cc
    functionUses: 0
    functionsReached:
    - LuaContext::writeFunction
    - LuaContext::executeCode
    - func
    - boost::get<int>
    - BOOST_CHECK_EQUAL
    - boost::get<const std::string>
    - BOOST_CHECK_THROW
    - BOOST_REQUIRE
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_boost_variant)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LuaContext::writeFunction
      Src: /src/pdns/pdns/dnsdistdist/test-luawrapper.cc:109,1
    - Dst: LuaContext::executeCode
      Src: /src/pdns/pdns/dnsdistdist/test-luawrapper.cc:114,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/dnsdistdist/test-luawrapper.cc:115,1
    - Dst: std::holds_alternative<int>
      Src: /src/pdns/pdns/dnsdistdist/test-luawrapper.cc:115,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-luawrapper.cc:116,1
    - Dst: std::get<int>
      Src: /src/pdns/pdns/dnsdistdist/test-luawrapper.cc:116,1
    - Dst: LuaContext::executeCode
      Src: /src/pdns/pdns/dnsdistdist/test-luawrapper.cc:120,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/dnsdistdist/test-luawrapper.cc:121,1
    - Dst: std::holds_alternative<const std::string>
      Src: /src/pdns/pdns/dnsdistdist/test-luawrapper.cc:121,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-luawrapper.cc:122,1
    - Dst: std::get<const std::string>
      Src: /src/pdns/pdns/dnsdistdist/test-luawrapper.cc:122,1
    - Dst: LuaContext::executeCode
      Src: /src/pdns/pdns/dnsdistdist/test-luawrapper.cc:127,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/dnsdistdist/test-luawrapper.cc:129,1
    - Dst: func
      Src: /src/pdns/pdns/dnsdistdist/test-luawrapper.cc:129,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 131
      start: 104
    functionDepth: 0
    functionLinenumber: 104
    functionLinenumberEnd: 131
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-luawrapper.cc
    functionUses: 0
    functionsReached:
    - std::holds_alternative<int>
    - std::holds_alternative<const std::string>
    - LuaContext::writeFunction
    - LuaContext::executeCode
    - func
    - BOOST_CHECK_EQUAL
    - BOOST_CHECK_THROW
    - BOOST_REQUIRE
    - std::get<const std::string>
    - std::get<int>
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_std_variant)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::NetworkListener::NetworkListener
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistluanetwork.cc:36,1
    - Dst: mkstemp
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistluanetwork.cc:41,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistluanetwork.cc:42,1
    - Dst: dnsdist::NetworkListener::addUnixListeningEndpoint
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistluanetwork.cc:44,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistluanetwork.cc:46,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistluanetwork.cc:47,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistluanetwork.cc:52,1
    - Dst: dnsdist::NetworkEndpoint::send
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistluanetwork.cc:52,1
    - Dst: dnsdist::NetworkListener::runOnce
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistluanetwork.cc:55,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistluanetwork.cc:56,1
    - Dst: unlink
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistluanetwork.cc:58,1
    - Dst: close
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistluanetwork.cc:59,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 34
    functionDepth: 3
    functionLinenumber: 34
    functionLinenumberEnd: 60
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistluanetwork.cc
    functionUses: 0
    functionsReached:
    - mkstemp
    - dnsdist::NetworkListener::NetworkListener
    - dnsdist::NetworkListener::runOnce
    - dnsdist::NetworkListener::addUnixListeningEndpoint
    - BOOST_CHECK_EQUAL
    - dnsdist::NetworkEndpoint::send
    - unlink
    - BOOST_REQUIRE
    - BOOST_CHECK
    - close
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_Basic)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mkstemp
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistluanetwork.cc:66,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistluanetwork.cc:67,1
    - Dst: dnsdist::NetworkListener::NetworkListener
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistluanetwork.cc:70,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistluanetwork.cc:73,1
    - Dst: dnsdist::NetworkListener::runOnce
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistluanetwork.cc:73,1
    - Dst: dnsdist::NetworkListener::NetworkListener
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistluanetwork.cc:78,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistluanetwork.cc:79,1
    - Dst: dnsdist::NetworkListener::addUnixListeningEndpoint
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistluanetwork.cc:79,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistluanetwork.cc:79,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistluanetwork.cc:95,1
    - Dst: dnsdist::NetworkListener::NetworkListener
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistluanetwork.cc:99,1
    - Dst: dnsdist::NetworkListener::addUnixListeningEndpoint
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistluanetwork.cc:101,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistluanetwork.cc:109,1
    - Dst: dnsdist::NetworkEndpoint::send
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistluanetwork.cc:109,1
    - Dst: dnsdist::NetworkListener::runOnce
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistluanetwork.cc:112,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistluanetwork.cc:113,1
    - Dst: dnsdist::NetworkListener::addUnixListeningEndpoint
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistluanetwork.cc:119,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistluanetwork.cc:128,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistluanetwork.cc:128,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistluanetwork.cc:130,1
    - Dst: dnsdist::NetworkListener::NetworkListener
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistluanetwork.cc:134,1
    - Dst: dnsdist::NetworkListener::addUnixListeningEndpoint
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistluanetwork.cc:136,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistluanetwork.cc:141,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistluanetwork.cc:145,1
    - Dst: dnsdist::NetworkEndpoint::send
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistluanetwork.cc:145,1
    - Dst: dnsdist::NetworkListener::runOnce
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistluanetwork.cc:148,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistluanetwork.cc:149,1
    - Dst: dnsdist::NetworkListener::NetworkListener
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistluanetwork.cc:157,1
    - Dst: dnsdist::NetworkListener::addUnixListeningEndpoint
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistluanetwork.cc:159,1
    - Dst: UnexpectedException
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistluanetwork.cc:164,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistluanetwork.cc:168,1
    - Dst: dnsdist::NetworkEndpoint::send
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistluanetwork.cc:168,1
    - Dst: dnsdist::NetworkListener::runOnce
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistluanetwork.cc:171,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistluanetwork.cc:172,1
    - Dst: unlink
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistluanetwork.cc:175,1
    - Dst: close
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistluanetwork.cc:176,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 60
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 177
      start: 62
    functionDepth: 3
    functionLinenumber: 62
    functionLinenumberEnd: 177
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistluanetwork.cc
    functionUses: 0
    functionsReached:
    - mkstemp
    - dnsdist::NetworkListener::NetworkListener
    - std::runtime_error
    - dnsdist::NetworkListener::runOnce
    - what
    - dnsdist::NetworkListener::addUnixListeningEndpoint
    - BOOST_CHECK_EQUAL
    - UnexpectedException
    - dnsdist::NetworkEndpoint::send
    - unlink
    - BOOST_CHECK_THROW
    - BOOST_REQUIRE
    - std::string
    - BOOST_CHECK
    - close
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_Exceptions)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::NetworkListener::NetworkListener
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistluanetwork.cc:182,1
    - Dst: std::string::insert
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistluanetwork.cc:187,1
    - Dst: dnsdist::NetworkListener::addUnixListeningEndpoint
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistluanetwork.cc:189,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistluanetwork.cc:191,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistluanetwork.cc:192,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistluanetwork.cc:197,1
    - Dst: dnsdist::NetworkEndpoint::send
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistluanetwork.cc:197,1
    - Dst: dnsdist::NetworkListener::runOnce
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistluanetwork.cc:200,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistluanetwork.cc:201,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 202
      start: 180
    functionDepth: 3
    functionLinenumber: 180
    functionLinenumberEnd: 202
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistluanetwork.cc
    functionUses: 0
    functionsReached:
    - dnsdist::NetworkListener::NetworkListener
    - dnsdist::NetworkListener::runOnce
    - dnsdist::NetworkListener::addUnixListeningEndpoint
    - BOOST_CHECK_EQUAL
    - dnsdist::NetworkEndpoint::send
    - BOOST_CHECK
    - std::string::insert
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_Abstract)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::NetworkListener::NetworkListener
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistluanetwork.cc:206,1
    - Dst: std::string::insert
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistluanetwork.cc:208,1
    - Dst: dnsdist::NetworkListener::addUnixListeningEndpoint
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistluanetwork.cc:210,1
    - Dst: dnsdist::NetworkListener::addUnixListeningEndpoint
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistluanetwork.cc:220,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistluanetwork.cc:228,1
    - Dst: boost::starts_with
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistluanetwork.cc:228,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistluanetwork.cc:228,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistluanetwork.cc:230,1
    - Dst: std::string::insert
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistluanetwork.cc:236,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistluanetwork.cc:243,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 27
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 245
      start: 204
    functionDepth: 2
    functionLinenumber: 204
    functionLinenumberEnd: 245
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistluanetwork.cc
    functionUses: 0
    functionsReached:
    - dnsdist::NetworkListener::NetworkListener
    - boost::starts_with
    - dnsdist::NetworkListener::addUnixListeningEndpoint
    - what
    - BOOST_CHECK
    - std::string::insert
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_Abstract_Exceptions)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' v'
    argTypes:
    - T
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 106
    functionDepth: 0
    functionLinenumber: 106
    functionLinenumberEnd: 109
    functionName: Logging::Loggable
    functionSourceFile: /src/pdns/pdns/dnsdistdist/logging.hh
    functionUses: 352
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Loggable(const T& v)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: toStructuredLogString
      Src: /src/pdns/pdns/dnsdistdist/logging.hh:116,1
    - Dst: toLogString
      Src: /src/pdns/pdns/dnsdistdist/logging.hh:119,1
    - Dst: toString
      Src: /src/pdns/pdns/dnsdistdist/logging.hh:122,1
    - Dst: Logging::to_string
      Src: /src/pdns/pdns/dnsdistdist/logging.hh:125,1
    - Dst: std::ostringstream::str
      Src: /src/pdns/pdns/dnsdistdist/logging.hh:130,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 132
      start: 110
    functionDepth: 0
    functionLinenumber: 110
    functionLinenumberEnd: 132
    functionName: Logging::to_string
    functionSourceFile: /src/pdns/pdns/dnsdistdist/logging.hh
    functionUses: 5
    functionsReached:
    - toLogString
    - toString
    - toStructuredLogString
    - Logging::to_string
    - std::ostringstream::str
    linkageType: ''
    returnType: std::string
    signature: std::string to_string() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - ' v1'
    - ' v2'
    argTypes:
    - T
    - T
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 143
      start: 140
    functionDepth: 0
    functionLinenumber: 140
    functionLinenumberEnd: 143
    functionName: Logging::IterLoggable
    functionSourceFile: /src/pdns/pdns/dnsdistdist/logging.hh
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void IterLoggable(const T& v1, const T& v2)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: auto::toStructuredLogString
      Src: /src/pdns/pdns/dnsdistdist/logging.hh:159,1
    - Dst: auto::toLogString
      Src: /src/pdns/pdns/dnsdistdist/logging.hh:162,1
    - Dst: auto::toString
      Src: /src/pdns/pdns/dnsdistdist/logging.hh:165,1
    - Dst: Logging::to_string
      Src: /src/pdns/pdns/dnsdistdist/logging.hh:168,1
    - Dst: std::ostringstream::str
      Src: /src/pdns/pdns/dnsdistdist/logging.hh:174,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 26
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 175
      start: 144
    functionDepth: 0
    functionLinenumber: 144
    functionLinenumberEnd: 175
    functionName: Logging::to_string
    functionSourceFile: /src/pdns/pdns/dnsdistdist/logging.hh
    functionUses: 6
    functionsReached:
    - auto::toStructuredLogString
    - Logging::to_string
    - std::ostringstream::str
    - auto::toString
    - auto::toLogString
    linkageType: ''
    returnType: std::string
    signature: std::string to_string() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' v'
    argTypes:
    - T
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 106
    functionDepth: 0
    functionLinenumber: 106
    functionLinenumberEnd: 109
    functionName: Logging::Loggable
    functionSourceFile: /src/pdns/pdns/dnsdistdist/logging.hh
    functionUses: 352
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Loggable(const T& v)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: toStructuredLogString
      Src: /src/pdns/pdns/dnsdistdist/logging.hh:116,1
    - Dst: toLogString
      Src: /src/pdns/pdns/dnsdistdist/logging.hh:119,1
    - Dst: toString
      Src: /src/pdns/pdns/dnsdistdist/logging.hh:122,1
    - Dst: Logging::to_string
      Src: /src/pdns/pdns/dnsdistdist/logging.hh:125,1
    - Dst: std::ostringstream::str
      Src: /src/pdns/pdns/dnsdistdist/logging.hh:130,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 132
      start: 110
    functionDepth: 0
    functionLinenumber: 110
    functionLinenumberEnd: 132
    functionName: Logging::to_string
    functionSourceFile: /src/pdns/pdns/dnsdistdist/logging.hh
    functionUses: 7
    functionsReached:
    - toLogString
    - toString
    - toStructuredLogString
    - Logging::to_string
    - std::ostringstream::str
    linkageType: ''
    returnType: std::string
    signature: std::string to_string() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - ' v1'
    - ' v2'
    argTypes:
    - T
    - T
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 143
      start: 140
    functionDepth: 0
    functionLinenumber: 140
    functionLinenumberEnd: 143
    functionName: Logging::IterLoggable
    functionSourceFile: /src/pdns/pdns/dnsdistdist/logging.hh
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void IterLoggable(const T& v1, const T& v2)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: auto::toStructuredLogString
      Src: /src/pdns/pdns/dnsdistdist/logging.hh:159,1
    - Dst: auto::toLogString
      Src: /src/pdns/pdns/dnsdistdist/logging.hh:162,1
    - Dst: auto::toString
      Src: /src/pdns/pdns/dnsdistdist/logging.hh:165,1
    - Dst: Logging::to_string
      Src: /src/pdns/pdns/dnsdistdist/logging.hh:168,1
    - Dst: std::ostringstream::str
      Src: /src/pdns/pdns/dnsdistdist/logging.hh:174,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 26
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 175
      start: 144
    functionDepth: 0
    functionLinenumber: 144
    functionLinenumberEnd: 175
    functionName: Logging::to_string
    functionSourceFile: /src/pdns/pdns/dnsdistdist/logging.hh
    functionUses: 8
    functionsReached:
    - auto::toStructuredLogString
    - Logging::to_string
    - std::ostringstream::str
    - auto::toString
    - auto::toLogString
    linkageType: ''
    returnType: std::string
    signature: std::string to_string() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - oldStyle
    - ','
    - slogCall
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 232
      start: 228
    functionDepth: 0
    functionLinenumber: 228
    functionLinenumberEnd: 232
    functionName: SLOG
    functionSourceFile: /src/pdns/pdns/dnsdistdist/logging.hh
    functionUses: 500
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SLOG(oldStyle, slogCall)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - nonStructured
    - ','
    - structured
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 250
      start: 241
    functionDepth: 0
    functionLinenumber: 241
    functionLinenumberEnd: 250
    functionName: SLOG
    functionSourceFile: /src/pdns/pdns/dnsdistdist/logging.hh
    functionUses: 500
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SLOG(nonStructured, structured)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - nonStructured
    - ','
    - structured
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 258
      start: 252
    functionDepth: 0
    functionLinenumber: 252
    functionLinenumberEnd: 258
    functionName: VERBOSESLOG
    functionSourceFile: /src/pdns/pdns/dnsdistdist/logging.hh
    functionUses: 215
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: VERBOSESLOG(nonStructured, structured)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - oldStyle
    - ','
    - slogCall
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 274
      start: 265
    functionDepth: 0
    functionLinenumber: 265
    functionLinenumberEnd: 274
    functionName: SLOG
    functionSourceFile: /src/pdns/pdns/dnsdistdist/logging.hh
    functionUses: 500
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SLOG(oldStyle, slogCall)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - max
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 39
      start: 36
    functionDepth: 0
    functionLinenumber: 36
    functionLinenumberEnd: 39
    functionName: DownstreamConnectionsManager::setMaxIdleConnectionsPerDownstream
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-downstream-connection.hh
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setMaxIdleConnectionsPerDownstream(size_t max)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - interval
    argTypes:
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 41
    functionDepth: 0
    functionLinenumber: 41
    functionLinenumberEnd: 44
    functionName: DownstreamConnectionsManager::setCleanupInterval
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-downstream-connection.hh
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setCleanupInterval(uint16_t interval)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - max
    argTypes:
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 46
    functionDepth: 0
    functionLinenumber: 46
    functionLinenumberEnd: 49
    functionName: DownstreamConnectionsManager::setMaxIdleTime
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-downstream-connection.hh
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setMaxIdleTime(uint16_t max)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: getID
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-downstream-connection.hh:56,1
    - Dst: DownstreamConnectionsManager::cleanupClosedConnections
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-downstream-connection.hh:58,1
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-downstream-connection.hh:60,1
    - Dst: find
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-downstream-connection.hh:62,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-downstream-connection.hh:63,1
    - Dst: DownstreamConnectionsManager::findUsableConnectionInList
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-downstream-connection.hh:65,1
    - Dst: second::d_actives::insert
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-downstream-connection.hh:68,1
    - Dst: DownstreamConnectionsManager::findUsableConnectionInList
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-downstream-connection.hh:73,1
    - Dst: tcpCurrentConnections::load
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-downstream-connection.hh:81,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-downstream-connection.hh:83,1
    - Dst: getNameWithAddr
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-downstream-connection.hh:83,1
    - Dst: std::make_shared<T>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-downstream-connection.hh:86,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-downstream-connection.hh:86,1
    - Dst: template get<SequencedTag>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-downstream-connection.hh:90,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 25
    argCount: 4
    argNames:
    - ' mplexer'
    - ' ds'
    - ' now'
    - ' proxyProtocolPayload'
    argTypes:
    - std::unique_ptr<FDMultiplexer>
    - std::shared_ptr<DownstreamState>
    - struct timeval
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 51
    functionDepth: 1
    functionLinenumber: 51
    functionLinenumberEnd: 94
    functionName: DownstreamConnectionsManager::getConnectionToDownstream
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-downstream-connection.hh
    functionUses: 1
    functionsReached:
    - second::d_actives::insert
    - std::move
    - std::runtime_error
    - std::make_shared<T>
    - end
    - template get<SequencedTag>
    - DownstreamConnectionsManager::findUsableConnectionInList
    - empty
    - getID
    - DownstreamConnectionsManager::cleanupClosedConnections
    - getNameWithAddr
    - tcpCurrentConnections::load
    - find
    linkageType: ''
    returnType: std::shared_ptr<T>
    signature: std::shared_ptr<T> getConnectionToDownstream(std::unique_ptr<FDMultiplexer>&
      mplexer, const std::shared_ptr<DownstreamState>& ds, const struct timeval& now,
      std::string&& proxyProtocolPayload)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-downstream-connection.hh:109,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-downstream-connection.hh:109,1
    - Dst: DownstreamConnectionsManager::cleanUpList
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-downstream-connection.hh:110,1
    - Dst: DownstreamConnectionsManager::cleanUpList
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-downstream-connection.hh:111,1
    - Dst: auto::second::d_idles::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-downstream-connection.hh:113,1
    - Dst: auto::second::d_actives::empty
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-downstream-connection.hh:113,1
    - Dst: erase
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-downstream-connection.hh:114,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 16
    argCount: 1
    argNames:
    - ' now'
    argTypes:
    - struct timeval
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 96
    functionDepth: 1
    functionLinenumber: 96
    functionLinenumberEnd: 120
    functionName: DownstreamConnectionsManager::cleanupClosedConnections
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-downstream-connection.hh
    functionUses: 2
    functionsReached:
    - end
    - auto::second::d_actives::empty
    - auto::second::d_idles::empty
    - begin
    - erase
    - DownstreamConnectionsManager::cleanUpList
    linkageType: ''
    returnType: void
    signature: void cleanupClosedConnections(const struct timeval& now)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: second::d_actives::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-downstream-connection.hh:126,1
    - Dst: stopIO
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-downstream-connection.hh:128,1
    - Dst: second::d_idles::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-downstream-connection.hh:130,1
    - Dst: stopIO
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-downstream-connection.hh:132,1
    - Dst: DownstreamConnectionsManager::clear
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-downstream-connection.hh:136,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 138
      start: 122
    functionDepth: 0
    functionLinenumber: 122
    functionLinenumberEnd: 138
    functionName: DownstreamConnectionsManager::clear
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-downstream-connection.hh
    functionUses: 2
    functionsReached:
    - DownstreamConnectionsManager::clear
    - stopIO
    - second::d_actives::size
    - second::d_idles::size
    linkageType: ''
    returnType: size_t
    signature: size_t clear()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DownstreamConnectionsManager::getActiveCount
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-downstream-connection.hh:142,1
    - Dst: DownstreamConnectionsManager::getIdleCount
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-downstream-connection.hh:142,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 143
      start: 140
    functionDepth: 1
    functionLinenumber: 140
    functionLinenumberEnd: 143
    functionName: DownstreamConnectionsManager::count
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-downstream-connection.hh
    functionUses: 1
    functionsReached:
    - DownstreamConnectionsManager::getIdleCount
    - DownstreamConnectionsManager::getActiveCount
    linkageType: ''
    returnType: size_t
    signature: size_t count() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: second::d_actives::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-downstream-connection.hh:149,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 152
      start: 145
    functionDepth: 0
    functionLinenumber: 145
    functionLinenumberEnd: 152
    functionName: DownstreamConnectionsManager::getActiveCount
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-downstream-connection.hh
    functionUses: 2
    functionsReached:
    - second::d_actives::size
    linkageType: ''
    returnType: size_t
    signature: size_t getActiveCount() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: second::d_idles::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-downstream-connection.hh:158,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 161
      start: 154
    functionDepth: 0
    functionLinenumber: 154
    functionLinenumberEnd: 161
    functionName: DownstreamConnectionsManager::getIdleCount
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-downstream-connection.hh
    functionUses: 2
    functionsReached:
    - second::d_idles::size
    linkageType: ''
    returnType: size_t
    signature: size_t getIdleCount() const
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: find
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-downstream-connection.hh:165,1
    - Dst: getDS
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-downstream-connection.hh:165,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-downstream-connection.hh:166,1
    - Dst: auto::second::d_idles::find
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-downstream-connection.hh:172,1
    - Dst: auto::second::d_idles::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-downstream-connection.hh:173,1
    - Dst: auto::second::d_idles::erase
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-downstream-connection.hh:174,1
    - Dst: auto::second::d_actives::find
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-downstream-connection.hh:180,1
    - Dst: auto::second::d_actives::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-downstream-connection.hh:181,1
    - Dst: auto::second::d_actives::erase
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-downstream-connection.hh:182,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 1
    argNames:
    - ' conn'
    argTypes:
    - std::shared_ptr<T>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 188
      start: 163
    functionDepth: 0
    functionLinenumber: 163
    functionLinenumberEnd: 188
    functionName: DownstreamConnectionsManager::removeDownstreamConnection
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-downstream-connection.hh
    functionUses: 0
    functionsReached:
    - auto::second::d_idles::end
    - auto::second::d_actives::find
    - auto::second::d_actives::erase
    - auto::second::d_idles::find
    - end
    - auto::second::d_actives::end
    - getDS
    - auto::second::d_idles::erase
    - find
    linkageType: ''
    returnType: bool
    signature: bool removeDownstreamConnection(std::shared_ptr<T>& conn)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: find
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-downstream-connection.hh:192,1
    - Dst: getDS
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-downstream-connection.hh:192,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-downstream-connection.hh:193,1
    - Dst: auto::second::d_actives::find
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-downstream-connection.hh:197,1
    - Dst: auto::second::d_actives::end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-downstream-connection.hh:198,1
    - Dst: auto::second::d_actives::erase
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-downstream-connection.hh:202,1
    - Dst: auto::second::d_idles::size
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-downstream-connection.hh:204,1
    - Dst: auto::second::d_idles::template get<SequencedTag>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-downstream-connection.hh:205,1
    - Dst: auto::release
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-downstream-connection.hh:206,1
    - Dst: auto::second::d_idles::template get<SequencedTag>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-downstream-connection.hh:207,1
    - Dst: auto::second::d_idles::template get<SequencedTag>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-downstream-connection.hh:210,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 1
    argNames:
    - ' conn'
    argTypes:
    - std::shared_ptr<T>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 212
      start: 190
    functionDepth: 0
    functionLinenumber: 190
    functionLinenumberEnd: 212
    functionName: DownstreamConnectionsManager::moveToIdle
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-downstream-connection.hh
    functionUses: 1
    functionsReached:
    - auto::second::d_actives::find
    - auto::second::d_actives::erase
    - auto::second::d_idles::size
    - end
    - auto::second::d_actives::end
    - getDS
    - auto::second::d_idles::template get<SequencedTag>
    - auto::release
    - find
    linkageType: ''
    returnType: bool
    signature: bool moveToIdle(std::shared_ptr<T>& conn)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: template get<SequencedTag>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-downstream-connection.hh:217,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-downstream-connection.hh:218,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-downstream-connection.hh:218,1
    - Dst: erase
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-downstream-connection.hh:220,1
    - Dst: getLastDataReceivedTime
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-downstream-connection.hh:227,1
    - Dst: isIdle
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-downstream-connection.hh:232,1
    - Dst: getLastDataReceivedTime
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-downstream-connection.hh:232,1
    - Dst: release
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-downstream-connection.hh:234,1
    - Dst: erase
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-downstream-connection.hh:235,1
    - Dst: isUsable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-downstream-connection.hh:239,1
    - Dst: isIdle
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-downstream-connection.hh:244,1
    - Dst: release
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-downstream-connection.hh:245,1
    - Dst: erase
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-downstream-connection.hh:247,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 24
    argCount: 3
    argNames:
    - ' list'
    - ' freshCutOff'
    - ' idleCutOff'
    argTypes:
    - list_t
    - struct timeval
    - struct timeval
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 249
      start: 215
    functionDepth: 0
    functionLinenumber: 215
    functionLinenumberEnd: 249
    functionName: DownstreamConnectionsManager::cleanUpList
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-downstream-connection.hh
    functionUses: 1
    functionsReached:
    - end
    - template get<SequencedTag>
    - isUsable
    - getLastDataReceivedTime
    - release
    - begin
    - isIdle
    - erase
    linkageType: ''
    returnType: void
    signature: void cleanUpList(list_t& list, const struct timeval& freshCutOff, const
      struct timeval& idleCutOff)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: template get<SequencedTag>
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-downstream-connection.hh:253,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-downstream-connection.hh:254,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-downstream-connection.hh:254,1
    - Dst: erase
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-downstream-connection.hh:256,1
    - Dst: DownstreamConnectionsManager::isConnectionUsable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-downstream-connection.hh:261,1
    - Dst: setReused
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-downstream-connection.hh:262,1
    - Dst: erase
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-downstream-connection.hh:266,1
    - Dst: willBeReusable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-downstream-connection.hh:271,1
    - Dst: erase
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-downstream-connection.hh:277,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 20
    argCount: 3
    argNames:
    - ' freshCutOff'
    - ' list'
    - removeIfFound
    argTypes:
    - struct timeval
    - list_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 281
      start: 251
    functionDepth: 1
    functionLinenumber: 251
    functionLinenumberEnd: 281
    functionName: DownstreamConnectionsManager::findUsableConnectionInList
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-downstream-connection.hh
    functionUses: 1
    functionsReached:
    - setReused
    - end
    - template get<SequencedTag>
    - DownstreamConnectionsManager::isConnectionUsable
    - willBeReusable
    - begin
    - erase
    linkageType: ''
    returnType: std::shared_ptr<T>
    signature: std::shared_ptr<T> findUsableConnectionInList(const struct timeval&
      freshCutOff, list_t& list, bool removeIfFound)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: canBeReused
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-downstream-connection.hh:285,1
    - Dst: getLastDataReceivedTime
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-downstream-connection.hh:291,1
    - Dst: isUsable
      Src: /src/pdns/pdns/dnsdistdist/dnsdist-downstream-connection.hh:296,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - ' conn'
    - ' freshCutOff'
    argTypes:
    - std::shared_ptr<T>
    - struct timeval
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 297
      start: 283
    functionDepth: 0
    functionLinenumber: 283
    functionLinenumberEnd: 297
    functionName: DownstreamConnectionsManager::isConnectionUsable
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dnsdist-downstream-connection.hh
    functionUses: 1
    functionsReached:
    - getLastDataReceivedTime
    - canBeReused
    - isUsable
    linkageType: ''
    returnType: bool
    signature: bool isConnectionUsable(const std::shared_ptr<T>& conn, const struct
      timeval& freshCutOff)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - r
    - n
    argTypes:
    - ExpectedRequest
    - IOState
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 57
    functionDepth: 0
    functionLinenumber: 57
    functionLinenumberEnd: 60
    functionName: ExpectedStep
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ExpectedStep(ExpectedRequest r, IOState n, size_t b = 0, std::function<void(int
      descriptor)> fn = nullptr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:83,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:83,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ' os'
    - d
    argTypes:
    - std::ostream
    - ExpectedStep::ExpectedRequest
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 80
    functionDepth: 0
    functionLinenumber: 80
    functionLinenumberEnd: 85
    functionName: '& operator<<(std::ostream& os, const ExpectedStep::ExpectedRequest
      d)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc
    functionUses: 0
    functionsReached:
    - static_cast<size_t>
    - std::vector::at
    linkageType: ''
    returnType: std::ostream
    signature: std::ostream & operator<<(std::ostream& os, const ExpectedStep::ExpectedRequest
      d)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::unique_ptr<nghttp2_session, void (*)(nghttp2_session*)>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:91,1
    - Dst: nghttp2_session_callbacks_new
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:94,1
    - Dst: nghttp2_session_callbacks_set_send_callback
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:97,1
    - Dst: std::unique_ptr::get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:97,1
    - Dst: nghttp2_session_callbacks_set_on_frame_recv_callback
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:98,1
    - Dst: std::unique_ptr::get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:98,1
    - Dst: nghttp2_session_callbacks_set_on_data_chunk_recv_callback
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:99,1
    - Dst: std::unique_ptr::get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:99,1
    - Dst: nghttp2_session_callbacks_set_on_stream_close_callback
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:100,1
    - Dst: std::unique_ptr::get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:100,1
    - Dst: nghttp2_session_server_new
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:102,1
    - Dst: std::unique_ptr::get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:102,1
    - Dst: std::unique_ptr<nghttp2_session, void (*)(nghttp2_session*)>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:103,1
    - Dst: nghttp2_submit_settings
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:107,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:107,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 1
    argNames:
    - needProxyProtocol
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 90
    functionDepth: 0
    functionLinenumber: 90
    functionLinenumberEnd: 108
    functionName: DOHConnection::DOHConnection
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc
    functionUses: 0
    functionsReached:
    - nghttp2_session_callbacks_new
    - nghttp2_session_callbacks_set_send_callback
    - nghttp2_session_callbacks_set_on_frame_recv_callback
    - nghttp2_session_callbacks_set_on_stream_close_callback
    - std::unique_ptr<nghttp2_session, void (*)(nghttp2_session*)>
    - get
    - nghttp2_session_server_new
    - nghttp2_submit_settings
    - nghttp2_session_callbacks_set_on_data_chunk_recv_callback
    - std::unique_ptr::get
    linkageType: ''
    returnType: void
    signature: void DOHConnection(bool needProxyProtocol)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: isProxyHeaderComplete
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:125,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:127,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:127,1
    - Dst: insert
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:128,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:128,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:128,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:128,1
    - Dst: isProxyHeaderComplete
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:133,1
    - Dst: nghttp2_session_mem_recv
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:151,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:151,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:151,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:153,1
    - Dst: nghttp2_strerror
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:153,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:153,1
    - Dst: nghttp2_session_send
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:157,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:157,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:159,1
    - Dst: nghttp2_strerror
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:159,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 31
    argCount: 3
    argNames:
    - ' data'
    - pos
    - toWrite
    argTypes:
    - PacketBuffer
    - size_t
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 163
      start: 120
    functionDepth: 1
    functionLinenumber: 120
    functionLinenumberEnd: 163
    functionName: DOHConnection::submitIncoming
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc
    functionUses: 0
    functionsReached:
    - isProxyHeaderComplete
    - static_cast<size_t>
    - at
    - nghttp2_strerror
    - end
    - get
    - insert
    - begin
    - nghttp2_session_send
    - std::string
    - nghttp2_session_mem_recv
    - static_cast<int>
    linkageType: ''
    returnType: size_t
    signature: size_t submitIncoming(const PacketBuffer& data, size_t pos, size_t
      toWrite)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: reinterpret_cast<PacketBuffer*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:174,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:176,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:177,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:177,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:178,1
    - Dst: auto::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:178,1
    - Dst: auto::erase
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:179,1
    - Dst: auto::begin
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:179,1
    - Dst: auto::begin
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:179,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:182,1
    - Dst: nghttp2_submit_response
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:189,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:189,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:191,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 2
    argNames:
    - streamId
    - ' data'
    argTypes:
    - uint32_t
    - PacketBuffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 192
      start: 165
    functionDepth: 0
    functionLinenumber: 165
    functionLinenumberEnd: 192
    functionName: DOHConnection::submitResponse
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc
    functionUses: 0
    functionsReached:
    - memcpy
    - reinterpret_cast<PacketBuffer*>
    - BOOST_CHECK_EQUAL
    - get
    - auto::begin
    - auto::at
    - auto::erase
    - nghttp2_submit_response
    - auto::size
    linkageType: ''
    returnType: void
    signature: void submitResponse(uint32_t streamId, PacketBuffer& data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:197,1
    - Dst: std::string::c_str
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:198,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:198,1
    - Dst: nghttp2_submit_response
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:200,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:200,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:201,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - streamId
    - status
    - ' msg'
    argTypes:
    - uint32_t
    - uint16_t
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 202
      start: 194
    functionDepth: 0
    functionLinenumber: 194
    functionLinenumberEnd: 202
    functionName: DOHConnection::submitError
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc
    functionUses: 0
    functionsReached:
    - std::to_string
    - std::string::c_str
    - BOOST_CHECK_EQUAL
    - get
    - std::string::size
    - nghttp2_submit_response
    linkageType: ''
    returnType: void
    signature: void submitError(uint32_t streamId, uint16_t status, const std::string&
      msg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nghttp2_submit_goaway
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:206,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:206,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:207,1
    - Dst: nghttp2_session_send
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:210,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:210,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:211,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - flush
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 213
      start: 204
    functionDepth: 0
    functionLinenumber: 204
    functionLinenumberEnd: 213
    functionName: DOHConnection::submitGoAway
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc
    functionUses: 0
    functionsReached:
    - nghttp2_session_send
    - nghttp2_submit_goaway
    - BOOST_CHECK_EQUAL
    - get
    linkageType: ''
    returnType: void
    signature: void submitGoAway(bool flush) const
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: reinterpret_cast<DOHConnection*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:220,1
    - Dst: DOHConnection*::d_idMapping::empty
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:222,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:226,1
    - Dst: DOHConnection*::d_idMapping::find
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:227,1
    - Dst: ntohl
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:227,1
    - Dst: DOHConnection*::d_idMapping::end
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:228,1
    - Dst: htonl
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:229,1
    - Dst: std::copy
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:231,1
    - Dst: std::vector::begin
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:231,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:232,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:232,1
    - Dst: DOHConnection*::d_serverOutBuffer::insert
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:233,1
    - Dst: DOHConnection*::d_serverOutBuffer::end
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:233,1
    - Dst: std::vector::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:233,1
    - Dst: std::vector::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:233,1
    - Dst: static_cast<ssize_t>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:234,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:234,1
    - Dst: DOHConnection*::d_serverOutBuffer::insert
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:239,1
    - Dst: DOHConnection*::d_serverOutBuffer::end
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:239,1
    - Dst: static_cast<ssize_t>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:240,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 5
    argNames:
    - session
    - data
    - length
    - flags
    - user_data
    argTypes:
    - nghttp2_session*
    - uint8_t*
    - size_t
    - int
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 241
      start: 216
    functionDepth: 1
    functionLinenumber: 216
    functionLinenumberEnd: 241
    functionName: DOHConnection::send_callback
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc
    functionUses: 0
    functionsReached:
    - memcpy
    - DOHConnection*::d_idMapping::empty
    - ntohl
    - std::vector::size
    - DOHConnection*::d_idMapping::end
    - htonl
    - std::vector::begin
    - static_cast<ssize_t>
    - reinterpret_cast<DOHConnection*>
    - DOHConnection*::d_serverOutBuffer::insert
    - std::vector::at
    - DOHConnection*::d_idMapping::find
    - std::vector::data
    - DOHConnection*::d_serverOutBuffer::end
    - std::copy
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t send_callback(nghttp2_session* session, const uint8_t* data,
      size_t length, int flags, void* user_data)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: reinterpret_cast<DOHConnection*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:246,1
    - Dst: nghttp2_session_get_stream_user_data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:250,1
    - Dst: DOHConnection*::d_queries::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:258,1
    - Dst: BOOST_REQUIRE_GT
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:259,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:259,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:260,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:261,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:264,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:265,1
    - Dst: d_query::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:265,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:265,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:266,1
    - Dst: d_query::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:267,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:267,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:268,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:268,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:268,1
    - Dst: d_query::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:268,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:269,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:273,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:273,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:273,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:274,1
    - Dst: DOHConnection*::submitGoAway
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:275,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:277,1
    - Dst: DOHConnection*::submitError
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:279,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:281,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:283,1
    - Dst: DOHConnection*::submitResponse
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:287,1
    - Dst: DOHConnection*::d_responses::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:287,1
    - Dst: DOHConnection*::submitResponse
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:291,1
    - Dst: DOHConnection*::d_responses::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:291,1
    - Dst: DOHConnection*::d_queries::erase
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:293,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 33
    argCount: 3
    argNames:
    - session
    - frame
    - user_data
    argTypes:
    - nghttp2_session*
    - nghttp2_frame*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 297
      start: 243
    functionDepth: 0
    functionLinenumber: 243
    functionLinenumberEnd: 297
    functionName: DOHConnection::on_frame_recv_callback
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc
    functionUses: 0
    functionsReached:
    - DOHConnection*::submitError
    - std::to_string
    - ntohs
    - reinterpret_cast<DOHConnection*>
    - d_query::size
    - DOHConnection*::d_responses::at
    - nghttp2_session_get_stream_user_data
    - DOHConnection*::submitResponse
    - size
    - at
    - BOOST_REQUIRE_EQUAL
    - DOHConnection*::submitGoAway
    - DOHConnection*::d_queries::at
    - DNSName
    - BOOST_REQUIRE_GT
    - reinterpret_cast<const char*>
    - DOHConnection*::d_queries::erase
    - BOOST_CHECK_EQUAL
    - d_query::at
    - data
    - BOOST_CHECK
    linkageType: ''
    returnType: int
    signature: int on_frame_recv_callback(nghttp2_session* session, const nghttp2_frame*
      frame, void* user_data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: reinterpret_cast<DOHConnection*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:303,1
    - Dst: insert
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:305,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:305,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 6
    argNames:
    - session
    - flags
    - stream_id
    - data
    - len
    - user_data
    argTypes:
    - nghttp2_session*
    - uint8_t
    - int32_t
    - uint8_t*
    - size_t
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 307
      start: 299
    functionDepth: 1
    functionLinenumber: 299
    functionLinenumberEnd: 307
    functionName: DOHConnection::on_data_chunk_recv_callback
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc
    functionUses: 0
    functionsReached:
    - reinterpret_cast<DOHConnection*>
    - end
    - insert
    linkageType: ''
    returnType: int
    signature: int on_data_chunk_recv_callback(nghttp2_session* session, uint8_t flags,
      int32_t stream_id, const uint8_t* data, size_t len, void* user_data)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 4
    argNames:
    - session
    - stream_id
    - error_code
    - user_data
    argTypes:
    - nghttp2_session*
    - int32_t
    - uint32_t
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 319
      start: 309
    functionDepth: 0
    functionLinenumber: 309
    functionLinenumberEnd: 319
    functionName: DOHConnection::on_stream_close_callback
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int on_stream_close_callback(nghttp2_session* session, int32_t stream_id,
      uint32_t error_code, void* user_data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::make_unique<DOHConnection>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:330,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - descriptor
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 331
      start: 327
    functionDepth: 0
    functionLinenumber: 327
    functionLinenumberEnd: 331
    functionName: MockupTLSConnection::MockupTLSConnection
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc
    functionUses: 0
    functionsReached:
    - std::make_unique<DOHConnection>
    linkageType: ''
    returnType: void
    signature: void MockupTLSConnection(int descriptor, bool client = false, bool
      needProxyProtocol = false)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 333
      start: 333
    functionDepth: 0
    functionLinenumber: 333
    functionLinenumberEnd: 333
    functionName: ~MockupTLSConnection()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~MockupTLSConnection()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MockupTLSConnection::getStep
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:337,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:338,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 341
      start: 335
    functionDepth: 0
    functionLinenumber: 335
    functionLinenumberEnd: 341
    functionName: MockupTLSConnection::tryHandshake
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc
    functionUses: 0
    functionsReached:
    - MockupTLSConnection::getStep
    - BOOST_REQUIRE_EQUAL
    linkageType: ''
    returnType: IOState
    signature: IOState tryHandshake() override
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:345,1
    - Dst: MockupTLSConnection::getStep
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:346,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:347,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:353,1
    - Dst: BOOST_REQUIRE_GE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:357,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:357,1
    - Dst: submitIncoming
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:363,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 3
    argNames:
    - ' buffer'
    - ' pos'
    - toWrite
    argTypes:
    - PacketBuffer
    - size_t
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 367
      start: 343
    functionDepth: 0
    functionLinenumber: 343
    functionLinenumberEnd: 367
    functionName: MockupTLSConnection::tryWrite
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc
    functionUses: 0
    functionsReached:
    - BOOST_REQUIRE_GE
    - MockupTLSConnection::getStep
    - std::runtime_error
    - submitIncoming
    - size
    - at
    - BOOST_REQUIRE_EQUAL
    linkageType: ''
    returnType: IOState
    signature: IOState tryWrite(const PacketBuffer& buffer, size_t& pos, size_t toWrite)
      override
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:371,1
    - Dst: MockupTLSConnection::getStep
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:372,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:373,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:379,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:389,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:390,1
    - Dst: BOOST_REQUIRE_GE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:394,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:394,1
    - Dst: BOOST_REQUIRE_GE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:397,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:397,1
    - Dst: std::copy
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:399,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:399,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:399,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:399,1
    - Dst: erase
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:401,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:401,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:401,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 24
    argCount: 3
    argNames:
    - ' buffer'
    - ' pos'
    - toRead
    argTypes:
    - PacketBuffer
    - size_t
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 404
      start: 369
    functionDepth: 0
    functionLinenumber: 369
    functionLinenumberEnd: 404
    functionName: MockupTLSConnection::tryRead
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc
    functionUses: 0
    functionsReached:
    - BOOST_REQUIRE_GE
    - MockupTLSConnection::getStep
    - std::runtime_error
    - size
    - begin
    - erase
    - at
    - BOOST_REQUIRE_EQUAL
    - std::copy
    linkageType: ''
    returnType: IOState
    signature: IOState tryRead(PacketBuffer& buffer, size_t& pos, size_t toRead, bool
      allowIncomplete = false) override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MockupTLSConnection::getStep
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:410,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:411,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - fastOpen
    - ' remote'
    argTypes:
    - bool
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 414
      start: 406
    functionDepth: 0
    functionLinenumber: 406
    functionLinenumberEnd: 414
    functionName: MockupTLSConnection::tryConnect
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc
    functionUses: 0
    functionsReached:
    - MockupTLSConnection::getStep
    - BOOST_REQUIRE_EQUAL
    linkageType: ''
    returnType: IOState
    signature: IOState tryConnect(bool fastOpen, const ComboAddress& remote) override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MockupTLSConnection::getStep
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:418,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:419,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 420
      start: 416
    functionDepth: 0
    functionLinenumber: 416
    functionLinenumberEnd: 420
    functionName: MockupTLSConnection::close
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc
    functionUses: 0
    functionsReached:
    - MockupTLSConnection::getStep
    - BOOST_REQUIRE_EQUAL
    linkageType: ''
    returnType: void
    signature: void close() override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 425
      start: 422
    functionDepth: 0
    functionLinenumber: 422
    functionLinenumberEnd: 425
    functionName: MockupTLSConnection::isUsable
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool isUsable() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 430
      start: 427
    functionDepth: 0
    functionLinenumber: 427
    functionLinenumberEnd: 430
    functionName: MockupTLSConnection::getServerNameIndication
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string getServerNameIndication() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::vector<uint8_t>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:434,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 435
      start: 432
    functionDepth: 0
    functionLinenumber: 432
    functionLinenumberEnd: 435
    functionName: MockupTLSConnection::getNextProtocol
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc
    functionUses: 0
    functionsReached:
    - std::vector<uint8_t>
    linkageType: ''
    returnType: std::vector<uint8_t>
    signature: std::vector<uint8_t> getNextProtocol() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 440
      start: 437
    functionDepth: 0
    functionLinenumber: 437
    functionLinenumberEnd: 440
    functionName: MockupTLSConnection::getTLSVersion
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: LibsslTLSVersion
    signature: LibsslTLSVersion getTLSVersion() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 445
      start: 442
    functionDepth: 0
    functionLinenumber: 442
    functionLinenumberEnd: 445
    functionName: MockupTLSConnection::getVerifyResult
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::pair<long, std::string>
    signature: std::pair<long, std::string> getVerifyResult() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 450
      start: 447
    functionDepth: 0
    functionLinenumber: 447
    functionLinenumberEnd: 450
    functionName: MockupTLSConnection::hasSessionBeenResumed
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool hasSessionBeenResumed() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 455
      start: 452
    functionDepth: 0
    functionLinenumber: 452
    functionLinenumberEnd: 455
    functionName: MockupTLSConnection::getSessions
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::vector<std::unique_ptr<TLSSession>>
    signature: std::vector<std::unique_ptr<TLSSession>> getSessions() override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' session'
    argTypes:
    - std::unique_ptr<TLSSession>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 460
      start: 457
    functionDepth: 0
    functionLinenumber: 457
    functionLinenumberEnd: 460
    functionName: MockupTLSConnection::setSession
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setSession(std::unique_ptr<TLSSession>& session) override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 465
      start: 462
    functionDepth: 0
    functionLinenumber: 462
    functionLinenumberEnd: 465
    functionName: MockupTLSConnection::getAsyncFDs
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::vector<int>
    signature: std::vector<int> getAsyncFDs() override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 470
      start: 468
    functionDepth: 0
    functionLinenumber: 468
    functionLinenumberEnd: 470
    functionName: MockupTLSConnection::doHandshake
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void doHandshake() override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - fastOpen
    - ' remote'
    - ' timeout'
    argTypes:
    - bool
    - ComboAddress
    - struct timeval
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 477
      start: 472
    functionDepth: 0
    functionLinenumber: 472
    functionLinenumberEnd: 477
    functionName: MockupTLSConnection::connect
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void connect(bool fastOpen, const ComboAddress& remote, const struct
      timeval& timeout) override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 3
    argNames:
    - buffer
    - bufferSize
    - ' readTimeout'
    argTypes:
    - void*
    - size_t
    - struct timeval
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 487
      start: 479
    functionDepth: 0
    functionLinenumber: 479
    functionLinenumberEnd: 487
    functionName: MockupTLSConnection::read
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: size_t read(void* buffer, size_t bufferSize, const struct timeval&
      readTimeout, const struct timeval& totalTimeout = {0, 0}, bool allowIncomplete
      = false) override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - buffer
    - bufferSize
    - ' writeTimeout'
    argTypes:
    - void*
    - size_t
    - struct timeval
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 495
      start: 489
    functionDepth: 0
    functionLinenumber: 489
    functionLinenumberEnd: 495
    functionName: MockupTLSConnection::write
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: size_t write(const void* buffer, size_t bufferSize, const struct timeval&
      writeTimeout) override
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:500,1
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:500,1
    - Dst: front
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:501,1
    - Dst: pop_front
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:502,1
    - Dst: auto::cb
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:505,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 509
      start: 498
    functionDepth: 0
    functionLinenumber: 498
    functionLinenumberEnd: 509
    functionName: MockupTLSConnection::getStep
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc
    functionUses: 14
    functionsReached:
    - auto::cb
    - pop_front
    - BOOST_REQUIRE
    - empty
    - front
    linkageType: ''
    returnType: ExpectedStep
    signature: ExpectedStep getStep() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 523
      start: 520
    functionDepth: 0
    functionLinenumber: 520
    functionLinenumberEnd: 523
    functionName: MockupQuerySender::active
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool active() const override
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: d_customHandler
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:528,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:528,1
    - Dst: BOOST_REQUIRE_GT
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:532,1
    - Dst: d_buffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:532,1
    - Dst: d_buffer::data
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:533,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:534,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:536,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:537,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:538,1
    - Dst: d_response::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:538,1
    - Dst: d_buffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:538,1
    - Dst: d_buffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:539,1
    - Dst: d_response::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:540,1
    - Dst: d_buffer::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:540,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:541,1
    - Dst: d_buffer::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:541,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:541,1
    - Dst: d_response::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:541,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:542,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:547,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 2
    argNames:
    - ' now'
    - ' response'
    argTypes:
    - struct timeval
    - TCPResponse
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 550
      start: 525
    functionDepth: 0
    functionLinenumber: 525
    functionLinenumberEnd: 550
    functionName: MockupQuerySender::handleResponse
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc
    functionUses: 0
    functionsReached:
    - std::move
    - d_buffer::size
    - std::to_string
    - ntohs
    - d_response::size
    - d_buffer::at
    - BOOST_REQUIRE_GT
    - d_customHandler
    - d_buffer::data
    - d_response::at
    - BOOST_REQUIRE
    - BOOST_CHECK
    - at
    - BOOST_REQUIRE_EQUAL
    linkageType: ''
    returnType: void
    signature: void handleResponse(const struct timeval& now, TCPResponse&& response)
      override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - ' now'
    - ' response'
    argTypes:
    - struct timeval
    - TCPResponse
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 554
      start: 552
    functionDepth: 0
    functionLinenumber: 552
    functionLinenumberEnd: 554
    functionName: MockupQuerySender::handleXFRResponse
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void handleXFRResponse([[maybe_unused]] const struct timeval& now,
      [[maybe_unused]] TCPResponse&& response) override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 2
    argNames:
    - ' now'
    - ' response'
    argTypes:
    - struct timeval
    - TCPResponse
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 559
      start: 556
    functionDepth: 0
    functionLinenumber: 556
    functionLinenumberEnd: 559
    functionName: MockupQuerySender::notifyIOError
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void notifyIOError([[maybe_unused]] const struct timeval& now, [[maybe_unused]]
      TCPResponse&& response) override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: clear
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:571,1
    - Dst: clear
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:572,1
    - Dst: std::make_unique<MockupFDMultiplexer>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:573,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 574
      start: 569
    functionDepth: 1
    functionLinenumber: 569
    functionLinenumberEnd: 574
    functionName: TestFixture
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc
    functionUses: 0
    functionsReached:
    - clear
    - std::make_unique<MockupFDMultiplexer>
    linkageType: ''
    returnType: void
    signature: void TestFixture()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: clearH2Connections
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:577,1
    - Dst: clear
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:578,1
    - Dst: clear
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:579,1
    - Dst: reset
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:580,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 581
      start: 575
    functionDepth: 2
    functionLinenumber: 575
    functionLinenumberEnd: 581
    functionName: ~TestFixture()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc
    functionUses: 0
    functionsReached:
    - clear
    - clearH2Connections
    - reset
    linkageType: ''
    returnType: void
    signature: void ~TestFixture()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getBackendAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:586,1
    - Dst: std::make_shared<MockupTLSCtx>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:588,1
    - Dst: std::make_shared<TLSFrontend>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:589,1
    - Dst: gettimeofday
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:592,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:598,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:599,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:599,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:603,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:604,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:605,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:606,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:606,1
    - Dst: GenericDNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:607,1
    - Dst: GenericDNSPacketWriter::xfr32BitInt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:608,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:609,1
    - Dst: std::make_shared<DownstreamState>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:613,1
    - Dst: getBackendAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:613,1
    - Dst: std::make_shared<MockupQuerySender>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:619,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:626,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:628,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:630,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:632,1
    - Dst: dynamic_cast<MockupFDMultiplexer*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:634,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:634,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:637,1
    - Dst: dynamic_cast<MockupFDMultiplexer*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:639,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:639,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:642,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:643,1
    - Dst: dynamic_cast<MockupFDMultiplexer*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:644,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:644,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:646,1
    - Dst: std::shared_ptr<TCPQuerySender>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:650,1
    - Dst: sendH2Query
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:651,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:651,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:652,1
    - Dst: getWatchedFDCount
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:654,1
    - Dst: getWatchedFDCount
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:654,1
    - Dst: run
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:655,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:657,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 31
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 658
      start: 584
    functionDepth: 1
    functionLinenumber: 584
    functionLinenumberEnd: 658
    functionName: BOOST_FIXTURE_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc
    functionUses: 0
    functionsReached:
    - GenericDNSPacketWriter::getHeader
    - std::shared_ptr<TCPQuerySender>
    - gettimeofday
    - GenericDNSPacketWriter::xfr32BitInt
    - GenericDNSPacketWriter::startRecord
    - sendH2Query
    - std::make_shared<TLSFrontend>
    - getWatchedFDCount
    - std::make_shared<DownstreamState>
    - run
    - at
    - htons
    - pdns::max
    - get
    - std::make_shared<MockupQuerySender>
    - std::move
    - dynamic_cast<MockupFDMultiplexer*>
    - BOOST_CHECK_EQUAL
    - std::make_shared<MockupTLSCtx>
    - GenericDNSPacketWriter::commit
    - getBackendAddress
    linkageType: ''
    returnType: void
    signature: void BOOST_FIXTURE_TEST_CASE(test_SingleQuery, TestFixture)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getBackendAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:662,1
    - Dst: std::make_shared<MockupTLSCtx>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:664,1
    - Dst: std::make_shared<TLSFrontend>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:665,1
    - Dst: gettimeofday
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:668,1
    - Dst: std::make_shared<DownstreamState>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:670,1
    - Dst: getBackendAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:670,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:682,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:683,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:683,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:687,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:688,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:689,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:690,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:690,1
    - Dst: GenericDNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:691,1
    - Dst: GenericDNSPacketWriter::xfr32BitInt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:692,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:693,1
    - Dst: std::make_shared<MockupQuerySender>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:697,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:700,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:700,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:700,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:706,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:708,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:710,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:712,1
    - Dst: dynamic_cast<MockupFDMultiplexer*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:714,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:714,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:717,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:719,1
    - Dst: dynamic_cast<MockupFDMultiplexer*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:721,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:721,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:724,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:726,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:727,1
    - Dst: dynamic_cast<MockupFDMultiplexer*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:728,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:728,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:730,1
    - Dst: std::static_pointer_cast<TCPQuerySender>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:735,1
    - Dst: sendH2Query
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:736,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:736,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:737,1
    - Dst: getWatchedFDCount
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:740,1
    - Dst: getWatchedFDCount
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:740,1
    - Dst: run
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:741,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:745,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 36
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 747
      start: 660
    functionDepth: 1
    functionLinenumber: 660
    functionLinenumberEnd: 747
    functionName: BOOST_FIXTURE_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc
    functionUses: 0
    functionsReached:
    - GenericDNSPacketWriter::getHeader
    - gettimeofday
    - GenericDNSPacketWriter::xfr32BitInt
    - std::vector::push_back
    - GenericDNSPacketWriter::startRecord
    - sendH2Query
    - std::make_shared<TLSFrontend>
    - getWatchedFDCount
    - std::make_shared<DownstreamState>
    - run
    - at
    - htons
    - pdns::max
    - get
    - std::make_shared<MockupQuerySender>
    - std::move
    - std::static_pointer_cast<TCPQuerySender>
    - dynamic_cast<MockupFDMultiplexer*>
    - BOOST_CHECK_EQUAL
    - std::make_shared<MockupTLSCtx>
    - GenericDNSPacketWriter::commit
    - getBackendAddress
    linkageType: ''
    returnType: void
    signature: void BOOST_FIXTURE_TEST_CASE(test_ConcurrentQueries, TestFixture)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getBackendAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:751,1
    - Dst: std::make_shared<MockupTLSCtx>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:753,1
    - Dst: std::make_shared<TLSFrontend>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:754,1
    - Dst: gettimeofday
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:757,1
    - Dst: std::make_shared<DownstreamState>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:759,1
    - Dst: getBackendAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:759,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:771,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:772,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:772,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:776,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:777,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:778,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:779,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:779,1
    - Dst: GenericDNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:780,1
    - Dst: GenericDNSPacketWriter::xfr32BitInt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:781,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:782,1
    - Dst: std::make_shared<MockupQuerySender>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:786,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:789,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:789,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:789,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:796,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:798,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:800,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:802,1
    - Dst: dynamic_cast<MockupFDMultiplexer*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:804,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:804,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:807,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:809,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:814,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:818,1
    - Dst: dynamic_cast<MockupFDMultiplexer*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:820,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:820,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:823,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:825,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:827,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:833,1
    - Dst: std::static_pointer_cast<TCPQuerySender>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:834,1
    - Dst: sendH2Query
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:835,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:835,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:836,1
    - Dst: getWatchedFDCount
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:838,1
    - Dst: getWatchedFDCount
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:838,1
    - Dst: run
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:839,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:842,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:843,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:847,1
    - Dst: std::static_pointer_cast<TCPQuerySender>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:848,1
    - Dst: sendH2Query
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:849,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:849,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:850,1
    - Dst: getWatchedFDCount
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:852,1
    - Dst: getWatchedFDCount
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:852,1
    - Dst: run
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:853,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:856,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 47
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 858
      start: 749
    functionDepth: 1
    functionLinenumber: 749
    functionLinenumberEnd: 858
    functionName: BOOST_FIXTURE_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc
    functionUses: 0
    functionsReached:
    - GenericDNSPacketWriter::getHeader
    - std::vector::at
    - gettimeofday
    - GenericDNSPacketWriter::xfr32BitInt
    - std::vector::push_back
    - GenericDNSPacketWriter::startRecord
    - sendH2Query
    - std::make_shared<TLSFrontend>
    - getWatchedFDCount
    - std::make_shared<DownstreamState>
    - run
    - at
    - htons
    - pdns::max
    - get
    - std::make_shared<MockupQuerySender>
    - std::move
    - std::static_pointer_cast<TCPQuerySender>
    - dynamic_cast<MockupFDMultiplexer*>
    - BOOST_CHECK_EQUAL
    - std::make_shared<MockupTLSCtx>
    - GenericDNSPacketWriter::commit
    - getBackendAddress
    linkageType: ''
    returnType: void
    signature: void BOOST_FIXTURE_TEST_CASE(test_ConnectionReuse, TestFixture)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getBackendAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:862,1
    - Dst: std::make_shared<MockupTLSCtx>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:864,1
    - Dst: std::make_shared<TLSFrontend>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:865,1
    - Dst: gettimeofday
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:868,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:874,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:875,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:875,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:879,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:880,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:881,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:882,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:882,1
    - Dst: GenericDNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:883,1
    - Dst: GenericDNSPacketWriter::xfr32BitInt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:884,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:885,1
    - Dst: PacketBuffer::resize
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:888,1
    - Dst: std::make_shared<DownstreamState>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:891,1
    - Dst: getBackendAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:891,1
    - Dst: std::make_shared<MockupQuerySender>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:897,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:901,1
    - Dst: d_buffer::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:901,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:904,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:911,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:913,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:915,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:917,1
    - Dst: dynamic_cast<MockupFDMultiplexer*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:919,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:919,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:922,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:924,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:926,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:927,1
    - Dst: std::shared_ptr<TCPQuerySender>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:932,1
    - Dst: sendH2Query
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:933,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:933,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:934,1
    - Dst: getWatchedFDCount
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:936,1
    - Dst: getWatchedFDCount
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:936,1
    - Dst: run
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:937,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:939,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 34
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 940
      start: 860
    functionDepth: 1
    functionLinenumber: 860
    functionLinenumberEnd: 940
    functionName: BOOST_FIXTURE_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc
    functionUses: 0
    functionsReached:
    - GenericDNSPacketWriter::getHeader
    - std::shared_ptr<TCPQuerySender>
    - gettimeofday
    - GenericDNSPacketWriter::xfr32BitInt
    - GenericDNSPacketWriter::startRecord
    - sendH2Query
    - std::make_shared<TLSFrontend>
    - getWatchedFDCount
    - std::make_shared<DownstreamState>
    - run
    - at
    - htons
    - pdns::max
    - d_buffer::size
    - std::runtime_error
    - get
    - std::make_shared<MockupQuerySender>
    - std::move
    - dynamic_cast<MockupFDMultiplexer*>
    - BOOST_CHECK_EQUAL
    - std::make_shared<MockupTLSCtx>
    - GenericDNSPacketWriter::commit
    - PacketBuffer::resize
    - getBackendAddress
    linkageType: ''
    returnType: void
    signature: void BOOST_FIXTURE_TEST_CASE(test_InvalidDNSAnswer, TestFixture)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getBackendAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:944,1
    - Dst: std::make_shared<MockupTLSCtx>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:946,1
    - Dst: std::make_shared<TLSFrontend>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:947,1
    - Dst: gettimeofday
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:950,1
    - Dst: std::make_shared<DownstreamState>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:952,1
    - Dst: getBackendAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:952,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:964,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:965,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:965,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:969,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:970,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:971,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:972,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:972,1
    - Dst: GenericDNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:973,1
    - Dst: GenericDNSPacketWriter::xfr32BitInt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:974,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:975,1
    - Dst: std::make_shared<MockupQuerySender>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:979,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:982,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:982,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:982,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:989,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:991,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:993,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:995,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:997,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:999,1
    - Dst: std::static_pointer_cast<TCPQuerySender>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1007,1
    - Dst: sendH2Query
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1008,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1008,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1009,1
    - Dst: getWatchedFDCount
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1012,1
    - Dst: getWatchedFDCount
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1012,1
    - Dst: run
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1013,1
    - Dst: handleH2Timeouts
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1019,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1020,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1023,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1024,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1027,1
    - Dst: clearH2Connections
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1027,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 36
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1028
      start: 942
    functionDepth: 2
    functionLinenumber: 942
    functionLinenumberEnd: 1028
    functionName: BOOST_FIXTURE_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc
    functionUses: 0
    functionsReached:
    - GenericDNSPacketWriter::getHeader
    - gettimeofday
    - GenericDNSPacketWriter::xfr32BitInt
    - std::vector::push_back
    - GenericDNSPacketWriter::startRecord
    - sendH2Query
    - std::make_shared<TLSFrontend>
    - handleH2Timeouts
    - getWatchedFDCount
    - std::make_shared<DownstreamState>
    - run
    - htons
    - pdns::max
    - std::make_shared<MockupQuerySender>
    - std::move
    - clearH2Connections
    - std::static_pointer_cast<TCPQuerySender>
    - BOOST_CHECK_EQUAL
    - std::make_shared<MockupTLSCtx>
    - GenericDNSPacketWriter::commit
    - getBackendAddress
    linkageType: ''
    returnType: void
    signature: void BOOST_FIXTURE_TEST_CASE(test_TimeoutWhileWriting, TestFixture)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getBackendAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1032,1
    - Dst: std::make_shared<MockupTLSCtx>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1034,1
    - Dst: std::make_shared<TLSFrontend>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1035,1
    - Dst: gettimeofday
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1038,1
    - Dst: std::make_shared<DownstreamState>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1040,1
    - Dst: getBackendAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1040,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1052,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1053,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1053,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1057,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1058,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1059,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1060,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1060,1
    - Dst: GenericDNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1061,1
    - Dst: GenericDNSPacketWriter::xfr32BitInt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1062,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1063,1
    - Dst: std::make_shared<MockupQuerySender>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1067,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1070,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1070,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1070,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1077,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1079,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1081,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1083,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1085,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1087,1
    - Dst: std::static_pointer_cast<TCPQuerySender>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1096,1
    - Dst: sendH2Query
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1097,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1097,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1098,1
    - Dst: getWatchedFDCount
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1101,1
    - Dst: getWatchedFDCount
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1101,1
    - Dst: run
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1102,1
    - Dst: handleH2Timeouts
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1108,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1109,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1112,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1113,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1115,1
    - Dst: clearH2Connections
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1115,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 36
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1116
      start: 1030
    functionDepth: 2
    functionLinenumber: 1030
    functionLinenumberEnd: 1116
    functionName: BOOST_FIXTURE_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc
    functionUses: 0
    functionsReached:
    - GenericDNSPacketWriter::getHeader
    - gettimeofday
    - GenericDNSPacketWriter::xfr32BitInt
    - std::vector::push_back
    - GenericDNSPacketWriter::startRecord
    - sendH2Query
    - std::make_shared<TLSFrontend>
    - handleH2Timeouts
    - getWatchedFDCount
    - std::make_shared<DownstreamState>
    - run
    - htons
    - pdns::max
    - std::make_shared<MockupQuerySender>
    - std::move
    - clearH2Connections
    - std::static_pointer_cast<TCPQuerySender>
    - BOOST_CHECK_EQUAL
    - std::make_shared<MockupTLSCtx>
    - GenericDNSPacketWriter::commit
    - getBackendAddress
    linkageType: ''
    returnType: void
    signature: void BOOST_FIXTURE_TEST_CASE(test_TimeoutWhileReading, TestFixture)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getBackendAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1120,1
    - Dst: std::make_shared<MockupTLSCtx>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1122,1
    - Dst: std::make_shared<TLSFrontend>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1123,1
    - Dst: gettimeofday
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1126,1
    - Dst: std::make_shared<DownstreamState>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1128,1
    - Dst: getBackendAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1128,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1140,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1141,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1141,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1145,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1146,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1147,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1148,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1148,1
    - Dst: GenericDNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1149,1
    - Dst: GenericDNSPacketWriter::xfr32BitInt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1150,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1151,1
    - Dst: std::make_shared<MockupQuerySender>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1155,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1158,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1158,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1158,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1165,1
    - Dst: dynamic_cast<MockupFDMultiplexer*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1169,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1169,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1175,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1178,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1180,1
    - Dst: dynamic_cast<MockupFDMultiplexer*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1182,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1182,1
    - Dst: std::static_pointer_cast<TCPQuerySender>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1189,1
    - Dst: sendH2Query
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1190,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1190,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1191,1
    - Dst: getWatchedFDCount
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1194,1
    - Dst: getWatchedFDCount
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1194,1
    - Dst: run
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1195,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1199,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1202,1
    - Dst: clearH2Connections
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1202,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 35
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1203
      start: 1118
    functionDepth: 2
    functionLinenumber: 1118
    functionLinenumberEnd: 1203
    functionName: BOOST_FIXTURE_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc
    functionUses: 0
    functionsReached:
    - GenericDNSPacketWriter::getHeader
    - gettimeofday
    - GenericDNSPacketWriter::xfr32BitInt
    - std::vector::push_back
    - GenericDNSPacketWriter::startRecord
    - sendH2Query
    - std::make_shared<TLSFrontend>
    - getWatchedFDCount
    - std::make_shared<DownstreamState>
    - run
    - htons
    - pdns::max
    - get
    - std::make_shared<MockupQuerySender>
    - std::move
    - clearH2Connections
    - std::static_pointer_cast<TCPQuerySender>
    - dynamic_cast<MockupFDMultiplexer*>
    - BOOST_CHECK_EQUAL
    - std::make_shared<MockupTLSCtx>
    - GenericDNSPacketWriter::commit
    - getBackendAddress
    linkageType: ''
    returnType: void
    signature: void BOOST_FIXTURE_TEST_CASE(test_ShortWrite, TestFixture)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getBackendAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1207,1
    - Dst: std::make_shared<MockupTLSCtx>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1209,1
    - Dst: std::make_shared<TLSFrontend>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1210,1
    - Dst: gettimeofday
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1213,1
    - Dst: std::make_shared<DownstreamState>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1215,1
    - Dst: getBackendAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1215,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1227,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1228,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1228,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1232,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1233,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1234,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1235,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1235,1
    - Dst: GenericDNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1236,1
    - Dst: GenericDNSPacketWriter::xfr32BitInt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1237,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1238,1
    - Dst: std::make_shared<MockupQuerySender>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1242,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1245,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1245,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1245,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1252,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1254,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1256,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1258,1
    - Dst: dynamic_cast<MockupFDMultiplexer*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1260,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1260,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1263,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1265,1
    - Dst: dynamic_cast<MockupFDMultiplexer*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1267,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1267,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1272,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1274,1
    - Dst: dynamic_cast<MockupFDMultiplexer*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1276,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1276,1
    - Dst: std::static_pointer_cast<TCPQuerySender>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1283,1
    - Dst: sendH2Query
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1284,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1284,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1285,1
    - Dst: getWatchedFDCount
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1288,1
    - Dst: getWatchedFDCount
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1288,1
    - Dst: run
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1289,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1293,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1296,1
    - Dst: clearH2Connections
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1296,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 37
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1297
      start: 1205
    functionDepth: 2
    functionLinenumber: 1205
    functionLinenumberEnd: 1297
    functionName: BOOST_FIXTURE_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc
    functionUses: 0
    functionsReached:
    - GenericDNSPacketWriter::getHeader
    - gettimeofday
    - GenericDNSPacketWriter::xfr32BitInt
    - std::vector::push_back
    - GenericDNSPacketWriter::startRecord
    - sendH2Query
    - std::make_shared<TLSFrontend>
    - getWatchedFDCount
    - std::make_shared<DownstreamState>
    - run
    - htons
    - pdns::max
    - get
    - std::make_shared<MockupQuerySender>
    - std::move
    - clearH2Connections
    - std::static_pointer_cast<TCPQuerySender>
    - dynamic_cast<MockupFDMultiplexer*>
    - BOOST_CHECK_EQUAL
    - std::make_shared<MockupTLSCtx>
    - GenericDNSPacketWriter::commit
    - getBackendAddress
    linkageType: ''
    returnType: void
    signature: void BOOST_FIXTURE_TEST_CASE(test_ShortRead, TestFixture)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getBackendAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1301,1
    - Dst: std::make_shared<MockupTLSCtx>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1303,1
    - Dst: std::make_shared<TLSFrontend>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1304,1
    - Dst: gettimeofday
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1307,1
    - Dst: std::make_shared<DownstreamState>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1309,1
    - Dst: getBackendAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1309,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1321,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1322,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1322,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1326,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1327,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1328,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1329,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1329,1
    - Dst: GenericDNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1330,1
    - Dst: GenericDNSPacketWriter::xfr32BitInt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1331,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1332,1
    - Dst: std::make_shared<MockupQuerySender>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1336,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1339,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1339,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1339,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1345,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1347,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1349,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1351,1
    - Dst: dynamic_cast<MockupFDMultiplexer*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1353,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1353,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1356,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1358,1
    - Dst: dynamic_cast<MockupFDMultiplexer*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1360,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1360,1
    - Dst: std::static_pointer_cast<TCPQuerySender>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1368,1
    - Dst: sendH2Query
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1369,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1369,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1370,1
    - Dst: getWatchedFDCount
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1373,1
    - Dst: getWatchedFDCount
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1373,1
    - Dst: run
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1374,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1378,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1379,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1382,1
    - Dst: clearH2Connections
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1382,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 35
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1383
      start: 1299
    functionDepth: 2
    functionLinenumber: 1299
    functionLinenumberEnd: 1383
    functionName: BOOST_FIXTURE_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc
    functionUses: 0
    functionsReached:
    - GenericDNSPacketWriter::getHeader
    - gettimeofday
    - GenericDNSPacketWriter::xfr32BitInt
    - std::vector::push_back
    - GenericDNSPacketWriter::startRecord
    - sendH2Query
    - std::make_shared<TLSFrontend>
    - getWatchedFDCount
    - std::make_shared<DownstreamState>
    - run
    - htons
    - pdns::max
    - get
    - std::make_shared<MockupQuerySender>
    - std::move
    - clearH2Connections
    - std::static_pointer_cast<TCPQuerySender>
    - dynamic_cast<MockupFDMultiplexer*>
    - BOOST_CHECK_EQUAL
    - std::make_shared<MockupTLSCtx>
    - GenericDNSPacketWriter::commit
    - getBackendAddress
    linkageType: ''
    returnType: void
    signature: void BOOST_FIXTURE_TEST_CASE(test_ConnectionClosedWhileReading, TestFixture)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getBackendAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1387,1
    - Dst: std::make_shared<MockupTLSCtx>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1389,1
    - Dst: std::make_shared<TLSFrontend>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1390,1
    - Dst: gettimeofday
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1393,1
    - Dst: std::make_shared<DownstreamState>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1395,1
    - Dst: getBackendAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1395,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1407,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1408,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1408,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1412,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1413,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1414,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1415,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1415,1
    - Dst: GenericDNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1416,1
    - Dst: GenericDNSPacketWriter::xfr32BitInt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1417,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1418,1
    - Dst: std::make_shared<MockupQuerySender>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1422,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1425,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1425,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1425,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1432,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1434,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1440,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1442,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1444,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1446,1
    - Dst: dynamic_cast<MockupFDMultiplexer*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1448,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1448,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1451,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1453,1
    - Dst: dynamic_cast<MockupFDMultiplexer*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1455,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1455,1
    - Dst: std::static_pointer_cast<TCPQuerySender>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1462,1
    - Dst: sendH2Query
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1463,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1463,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1464,1
    - Dst: getWatchedFDCount
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1467,1
    - Dst: getWatchedFDCount
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1467,1
    - Dst: run
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1468,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1471,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1471,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1472,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1472,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1473,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1473,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1474,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1474,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1476,1
    - Dst: clearH2Connections
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1476,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 37
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1477
      start: 1385
    functionDepth: 2
    functionLinenumber: 1385
    functionLinenumberEnd: 1477
    functionName: BOOST_FIXTURE_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc
    functionUses: 0
    functionsReached:
    - GenericDNSPacketWriter::getHeader
    - std::vector::at
    - gettimeofday
    - GenericDNSPacketWriter::xfr32BitInt
    - std::vector::push_back
    - GenericDNSPacketWriter::startRecord
    - sendH2Query
    - std::make_shared<TLSFrontend>
    - getWatchedFDCount
    - std::make_shared<DownstreamState>
    - run
    - htons
    - pdns::max
    - get
    - std::make_shared<MockupQuerySender>
    - std::move
    - clearH2Connections
    - std::static_pointer_cast<TCPQuerySender>
    - dynamic_cast<MockupFDMultiplexer*>
    - BOOST_CHECK_EQUAL
    - std::make_shared<MockupTLSCtx>
    - GenericDNSPacketWriter::commit
    - getBackendAddress
    linkageType: ''
    returnType: void
    signature: void BOOST_FIXTURE_TEST_CASE(test_ConnectionClosedWhileWriting, TestFixture)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getBackendAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1481,1
    - Dst: std::make_shared<MockupTLSCtx>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1483,1
    - Dst: std::make_shared<TLSFrontend>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1484,1
    - Dst: gettimeofday
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1487,1
    - Dst: std::make_shared<DownstreamState>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1489,1
    - Dst: getBackendAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1489,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1503,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1504,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1504,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1508,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1509,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1510,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1511,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1511,1
    - Dst: GenericDNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1512,1
    - Dst: GenericDNSPacketWriter::xfr32BitInt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1513,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1514,1
    - Dst: std::make_shared<MockupQuerySender>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1518,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1521,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1521,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1521,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1527,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1529,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1531,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1533,1
    - Dst: dynamic_cast<MockupFDMultiplexer*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1535,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1535,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1538,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1540,1
    - Dst: dynamic_cast<MockupFDMultiplexer*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1542,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1542,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1545,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1548,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1550,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1552,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1554,1
    - Dst: dynamic_cast<MockupFDMultiplexer*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1556,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1556,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1559,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1561,1
    - Dst: dynamic_cast<MockupFDMultiplexer*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1563,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1563,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1568,1
    - Dst: std::static_pointer_cast<TCPQuerySender>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1573,1
    - Dst: sendH2Query
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1574,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1574,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1575,1
    - Dst: getWatchedFDCount
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1578,1
    - Dst: getWatchedFDCount
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1578,1
    - Dst: run
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1579,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1583,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1584,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1587,1
    - Dst: clearH2Connections
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1587,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 40
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1588
      start: 1479
    functionDepth: 2
    functionLinenumber: 1479
    functionLinenumberEnd: 1588
    functionName: BOOST_FIXTURE_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc
    functionUses: 0
    functionsReached:
    - GenericDNSPacketWriter::getHeader
    - gettimeofday
    - GenericDNSPacketWriter::xfr32BitInt
    - std::vector::push_back
    - GenericDNSPacketWriter::startRecord
    - sendH2Query
    - std::make_shared<TLSFrontend>
    - getWatchedFDCount
    - std::make_shared<DownstreamState>
    - run
    - htons
    - pdns::max
    - get
    - std::make_shared<MockupQuerySender>
    - std::move
    - clearH2Connections
    - std::static_pointer_cast<TCPQuerySender>
    - dynamic_cast<MockupFDMultiplexer*>
    - BOOST_CHECK_EQUAL
    - std::make_shared<MockupTLSCtx>
    - GenericDNSPacketWriter::commit
    - getBackendAddress
    linkageType: ''
    returnType: void
    signature: void BOOST_FIXTURE_TEST_CASE(test_GoAwayFromServer, TestFixture)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getBackendAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1592,1
    - Dst: std::make_shared<MockupTLSCtx>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1594,1
    - Dst: std::make_shared<TLSFrontend>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1595,1
    - Dst: gettimeofday
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1598,1
    - Dst: std::make_shared<DownstreamState>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1600,1
    - Dst: getBackendAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1600,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1612,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1613,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1613,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1617,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1618,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1619,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1620,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1620,1
    - Dst: GenericDNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1621,1
    - Dst: GenericDNSPacketWriter::xfr32BitInt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1622,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1623,1
    - Dst: std::make_shared<MockupQuerySender>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1627,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1630,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1630,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1630,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1637,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1639,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1641,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1643,1
    - Dst: dynamic_cast<MockupFDMultiplexer*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1645,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1645,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1648,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1650,1
    - Dst: dynamic_cast<MockupFDMultiplexer*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1652,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1652,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1655,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1657,1
    - Dst: dynamic_cast<MockupFDMultiplexer*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1659,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1659,1
    - Dst: std::static_pointer_cast<TCPQuerySender>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1666,1
    - Dst: sendH2Query
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1667,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1667,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1668,1
    - Dst: getWatchedFDCount
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1671,1
    - Dst: getWatchedFDCount
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1671,1
    - Dst: run
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1672,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1675,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1675,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1676,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1676,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1677,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1677,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1678,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1678,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1680,1
    - Dst: clearH2Connections
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1680,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 39
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1681
      start: 1590
    functionDepth: 2
    functionLinenumber: 1590
    functionLinenumberEnd: 1681
    functionName: BOOST_FIXTURE_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc
    functionUses: 0
    functionsReached:
    - GenericDNSPacketWriter::getHeader
    - std::vector::at
    - gettimeofday
    - GenericDNSPacketWriter::xfr32BitInt
    - std::vector::push_back
    - GenericDNSPacketWriter::startRecord
    - sendH2Query
    - std::make_shared<TLSFrontend>
    - getWatchedFDCount
    - std::make_shared<DownstreamState>
    - run
    - htons
    - pdns::max
    - get
    - std::make_shared<MockupQuerySender>
    - std::move
    - clearH2Connections
    - std::static_pointer_cast<TCPQuerySender>
    - dynamic_cast<MockupFDMultiplexer*>
    - BOOST_CHECK_EQUAL
    - std::make_shared<MockupTLSCtx>
    - GenericDNSPacketWriter::commit
    - getBackendAddress
    linkageType: ''
    returnType: void
    signature: void BOOST_FIXTURE_TEST_CASE(test_HTTP500FromServer, TestFixture)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getBackendAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1685,1
    - Dst: std::make_shared<MockupTLSCtx>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1687,1
    - Dst: std::make_shared<TLSFrontend>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1688,1
    - Dst: gettimeofday
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1691,1
    - Dst: std::make_shared<DownstreamState>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1693,1
    - Dst: getBackendAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1693,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1705,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1706,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1706,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1710,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1711,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1712,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1713,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1713,1
    - Dst: GenericDNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1714,1
    - Dst: GenericDNSPacketWriter::xfr32BitInt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1715,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1716,1
    - Dst: std::make_shared<MockupQuerySender>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1720,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1723,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1723,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1723,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1730,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1732,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1734,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1736,1
    - Dst: dynamic_cast<MockupFDMultiplexer*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1738,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1738,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1741,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1743,1
    - Dst: dynamic_cast<MockupFDMultiplexer*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1745,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1745,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1748,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1750,1
    - Dst: std::static_pointer_cast<TCPQuerySender>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1761,1
    - Dst: sendH2Query
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1762,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1762,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1763,1
    - Dst: getWatchedFDCount
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1766,1
    - Dst: getWatchedFDCount
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1766,1
    - Dst: run
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1767,1
    - Dst: handleH2Timeouts
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1773,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1774,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1776,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1776,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1777,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1777,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1778,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1778,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1779,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1779,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1781,1
    - Dst: clearH2Connections
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1781,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 41
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1782
      start: 1683
    functionDepth: 2
    functionLinenumber: 1683
    functionLinenumberEnd: 1782
    functionName: BOOST_FIXTURE_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc
    functionUses: 0
    functionsReached:
    - GenericDNSPacketWriter::getHeader
    - std::vector::at
    - gettimeofday
    - GenericDNSPacketWriter::xfr32BitInt
    - std::vector::push_back
    - GenericDNSPacketWriter::startRecord
    - sendH2Query
    - std::make_shared<TLSFrontend>
    - handleH2Timeouts
    - getWatchedFDCount
    - std::make_shared<DownstreamState>
    - run
    - htons
    - pdns::max
    - get
    - std::make_shared<MockupQuerySender>
    - std::move
    - clearH2Connections
    - std::static_pointer_cast<TCPQuerySender>
    - dynamic_cast<MockupFDMultiplexer*>
    - BOOST_CHECK_EQUAL
    - std::make_shared<MockupTLSCtx>
    - GenericDNSPacketWriter::commit
    - getBackendAddress
    linkageType: ''
    returnType: void
    signature: void BOOST_FIXTURE_TEST_CASE(test_WrongStreamID, TestFixture)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getBackendAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1786,1
    - Dst: std::make_shared<MockupTLSCtx>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1788,1
    - Dst: std::make_shared<TLSFrontend>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1790,1
    - Dst: gettimeofday
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1793,1
    - Dst: std::make_shared<DownstreamState>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1795,1
    - Dst: getBackendAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1795,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1808,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1809,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1809,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1813,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1814,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1815,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1816,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1816,1
    - Dst: GenericDNSPacketWriter::startRecord
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1817,1
    - Dst: GenericDNSPacketWriter::xfr32BitInt
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1818,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1819,1
    - Dst: std::make_shared<MockupQuerySender>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1823,1
    - Dst: makeProxyHeader
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1825,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1827,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1828,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1828,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1828,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1834,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1836,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1838,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1840,1
    - Dst: dynamic_cast<MockupFDMultiplexer*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1842,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1842,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1846,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1848,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1850,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1852,1
    - Dst: dynamic_cast<MockupFDMultiplexer*>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1854,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1854,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1857,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1859,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1862,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1864,1
    - Dst: std::static_pointer_cast<TCPQuerySender>
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1869,1
    - Dst: sendH2Query
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1870,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1870,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1871,1
    - Dst: getWatchedFDCount
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1874,1
    - Dst: getWatchedFDCount
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1874,1
    - Dst: run
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1875,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1879,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1882,1
    - Dst: clearH2Connections
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc:1882,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 37
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1883
      start: 1784
    functionDepth: 2
    functionLinenumber: 1784
    functionLinenumberEnd: 1883
    functionName: BOOST_FIXTURE_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc
    functionUses: 0
    functionsReached:
    - GenericDNSPacketWriter::getHeader
    - gettimeofday
    - GenericDNSPacketWriter::xfr32BitInt
    - std::vector::push_back
    - GenericDNSPacketWriter::startRecord
    - sendH2Query
    - std::make_shared<TLSFrontend>
    - getWatchedFDCount
    - std::make_shared<DownstreamState>
    - run
    - makeProxyHeader
    - htons
    - pdns::max
    - get
    - std::make_shared<MockupQuerySender>
    - std::move
    - clearH2Connections
    - std::static_pointer_cast<TCPQuerySender>
    - dynamic_cast<MockupFDMultiplexer*>
    - BOOST_CHECK_EQUAL
    - std::make_shared<MockupTLSCtx>
    - GenericDNSPacketWriter::commit
    - getBackendAddress
    linkageType: ''
    returnType: void
    signature: void BOOST_FIXTURE_TEST_CASE(test_ProxyProtocol, TestFixture)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ptr
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 36
    functionDepth: 0
    functionLinenumber: 36
    functionLinenumberEnd: 40
    functionName: ptr_to_u64
    functionSourceFile: /src/pdns/pdns/dnsdistdist/bpf-filter.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: __u64
    signature: __u64 ptr_to_u64(const void* ptr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:46,1
    - Dst: ptr_to_u64
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:48,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:48,1
    - Dst: syscall
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:49,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - descriptor
    - ' path'
    argTypes:
    - int
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 43
    functionDepth: 1
    functionLinenumber: 43
    functionLinenumberEnd: 50
    functionName: bpf_pin_map
    functionSourceFile: /src/pdns/pdns/dnsdistdist/bpf-filter.cc
    functionUses: 0
    functionsReached:
    - c_str
    - memset
    - ptr_to_u64
    - syscall
    linkageType: ''
    returnType: int
    signature: int bpf_pin_map(int descriptor, const std::string& path)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:55,1
    - Dst: ptr_to_u64
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:56,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:56,1
    - Dst: syscall
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:57,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - ' path'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 52
    functionDepth: 1
    functionLinenumber: 52
    functionLinenumberEnd: 58
    functionName: bpf_load_pinned_map
    functionSourceFile: /src/pdns/pdns/dnsdistdist/bpf-filter.cc
    functionUses: 0
    functionsReached:
    - c_str
    - memset
    - ptr_to_u64
    - syscall
    linkageType: ''
    returnType: int
    signature: int bpf_load_pinned_map(const std::string& path)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:63,1
    - Dst: memset
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:66,1
    - Dst: ptr_to_u64
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:69,1
    - Dst: syscall
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:71,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:73,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:73,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:76,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:79,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:79,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:79,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:82,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:82,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:82,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 18
    argCount: 3
    argNames:
    - descriptor
    - expectedKeySize
    - expectedValueSize
    argTypes:
    - int
    - uint32_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 60
    functionDepth: 1
    functionLinenumber: 60
    functionLinenumberEnd: 84
    functionName: bpf_check_map_sizes
    functionSourceFile: /src/pdns/pdns/dnsdistdist/bpf-filter.cc
    functionUses: 0
    functionsReached:
    - std::to_string
    - std::runtime_error
    - stringerror
    - ptr_to_u64
    - memset
    - syscall
    linkageType: ''
    returnType: void
    signature: void bpf_check_map_sizes(int descriptor, uint32_t expectedKeySize,
      uint32_t expectedValueSize)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:91,1
    - Dst: syscall
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:97,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 5
    argNames:
    - map_type
    - key_size
    - value_size
    - max_entries
    - map_flags
    argTypes:
    - enum bpf_map_type
    - int
    - int
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 87
    functionDepth: 0
    functionLinenumber: 87
    functionLinenumberEnd: 98
    functionName: bpf_create_map
    functionSourceFile: /src/pdns/pdns/dnsdistdist/bpf-filter.cc
    functionUses: 0
    functionsReached:
    - memset
    - syscall
    linkageType: ''
    returnType: int
    signature: "int bpf_create_map(enum bpf_map_type map_type, int key_size, int value_size,\n
      \                         int max_entries, int map_flags)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:103,1
    - Dst: ptr_to_u64
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:105,1
    - Dst: ptr_to_u64
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:106,1
    - Dst: syscall
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:108,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 4
    argNames:
    - descriptor
    - key
    - value
    - flags
    argTypes:
    - int
    - void*
    - void*
    - unsigned long long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 100
    functionDepth: 1
    functionLinenumber: 100
    functionLinenumberEnd: 109
    functionName: bpf_update_elem
    functionSourceFile: /src/pdns/pdns/dnsdistdist/bpf-filter.cc
    functionUses: 0
    functionsReached:
    - syscall
    - memset
    - ptr_to_u64
    linkageType: ''
    returnType: int
    signature: int bpf_update_elem(int descriptor, void* key, void* value, unsigned
      long long flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:114,1
    - Dst: ptr_to_u64
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:116,1
    - Dst: ptr_to_u64
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:117,1
    - Dst: syscall
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:118,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 3
    argNames:
    - descriptor
    - key
    - value
    argTypes:
    - int
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 119
      start: 111
    functionDepth: 1
    functionLinenumber: 111
    functionLinenumberEnd: 119
    functionName: bpf_lookup_elem
    functionSourceFile: /src/pdns/pdns/dnsdistdist/bpf-filter.cc
    functionUses: 0
    functionsReached:
    - syscall
    - memset
    - ptr_to_u64
    linkageType: ''
    returnType: int
    signature: int bpf_lookup_elem(int descriptor, void* key, void* value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:124,1
    - Dst: ptr_to_u64
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:126,1
    - Dst: syscall
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:127,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - descriptor
    - key
    argTypes:
    - int
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 121
    functionDepth: 1
    functionLinenumber: 121
    functionLinenumberEnd: 128
    functionName: bpf_delete_elem
    functionSourceFile: /src/pdns/pdns/dnsdistdist/bpf-filter.cc
    functionUses: 0
    functionsReached:
    - syscall
    - memset
    - ptr_to_u64
    linkageType: ''
    returnType: int
    signature: int bpf_delete_elem(int descriptor, void* key)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:133,1
    - Dst: ptr_to_u64
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:135,1
    - Dst: ptr_to_u64
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:136,1
    - Dst: syscall
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:137,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 3
    argNames:
    - descriptor
    - key
    - next_key
    argTypes:
    - int
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 138
      start: 130
    functionDepth: 1
    functionLinenumber: 130
    functionLinenumberEnd: 138
    functionName: bpf_get_next_key
    functionSourceFile: /src/pdns/pdns/dnsdistdist/bpf-filter.cc
    functionUses: 0
    functionsReached:
    - syscall
    - memset
    - ptr_to_u64
    linkageType: ''
    returnType: int
    signature: int bpf_get_next_key(int descriptor, void* key, void* next_key)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:146,1
    - Dst: ptr_to_u64
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:148,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:149,1
    - Dst: ptr_to_u64
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:150,1
    - Dst: ptr_to_u64
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:151,1
    - Dst: syscall
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:159,1
    - Dst: ptr_to_u64
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:165,1
    - Dst: syscall
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:166,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:171,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:171,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:171,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 23
    argCount: 5
    argNames:
    - prog_type
    - insns
    - prog_len
    - license
    - kern_version
    argTypes:
    - enum bpf_prog_type
    - struct bpf_insn*
    - size_t
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 174
      start: 140
    functionDepth: 1
    functionLinenumber: 140
    functionLinenumberEnd: 174
    functionName: bpf_prog_load
    functionSourceFile: /src/pdns/pdns/dnsdistdist/bpf-filter.cc
    functionUses: 0
    functionsReached:
    - std::runtime_error
    - stringerror
    - ptr_to_u64
    - memset
    - syscall
    - std::string
    - static_cast<int>
    linkageType: ''
    returnType: int
    signature: "int bpf_prog_load(enum bpf_prog_type prog_type,\n                         const
      struct bpf_insn* insns, size_t prog_len,\n                         const char*
      license, int kern_version)"
  - BBCount: 27
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:199,1
    - Dst: FDWrapper
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:203,1
    - Dst: bpf_create_map
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:203,1
    - Dst: getHandle
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:204,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:205,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:205,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:205,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:228,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:228,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:228,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:258,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:258,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:258,1
    - Dst: d_pinnedPath::empty
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:262,1
    - Dst: FDWrapper
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:264,1
    - Dst: bpf_load_pinned_map
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:264,1
    - Dst: getHandle
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:265,1
    - Dst: bpf_check_map_sizes
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:267,1
    - Dst: getHandle
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:267,1
    - Dst: bpf_get_next_key
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:271,1
    - Dst: getHandle
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:271,1
    - Dst: memset
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:278,1
    - Dst: bpf_get_next_key
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:279,1
    - Dst: getHandle
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:279,1
    - Dst: memset
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:286,1
    - Dst: bpf_get_next_key
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:287,1
    - Dst: getHandle
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:287,1
    - Dst: memset
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:294,1
    - Dst: bpf_get_next_key
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:295,1
    - Dst: getHandle
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:295,1
    - Dst: memset
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:303,1
    - Dst: bpf_get_next_key
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:304,1
    - Dst: getHandle
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:304,1
    - Dst: memset
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:310,1
    - Dst: bpf_get_next_key
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:311,1
    - Dst: getHandle
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:311,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:319,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:319,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:319,1
    - Dst: getHandle
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:324,1
    - Dst: FDWrapper
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:325,1
    - Dst: bpf_create_map
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:325,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:325,1
    - Dst: getHandle
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:326,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:327,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:327,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:327,1
    - Dst: d_pinnedPath::empty
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:330,1
    - Dst: bpf_pin_map
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:331,1
    - Dst: getHandle
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:331,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:332,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:332,1
    CyclomaticComplexity: 38
    EdgeCount: 38
    ICount: 117
    argCount: 2
    argNames:
    - config
    - format
    argTypes:
    - BPFFilter::MapConfiguration
    - BPFFilter::MapFormat
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 337
      start: 198
    functionDepth: 2
    functionLinenumber: 198
    functionLinenumberEnd: 337
    functionName: BPFFilter::Map::Map(BPFFilter::MapConfiguration config, BPFFilter::MapFormat
      format)
    functionSourceFile: /src/pdns/pdns/dnsdistdist/bpf-filter.cc
    functionUses: 0
    functionsReached:
    - std::move
    - bpf_check_map_sizes
    - bpf_pin_map
    - std::to_string
    - std::runtime_error
    - stringerror
    - bpf_load_pinned_map
    - getHandle
    - static_cast<uint8_t>
    - bpf_create_map
    - bpf_get_next_key
    - memset
    - FDWrapper
    - d_pinnedPath::empty
    - static_cast<int>
    linkageType: ''
    returnType: void
    signature: void BPFFilter::Map::Map(BPFFilter::MapConfiguration config, BPFFilter::MapFormat
      format)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: FDWrapper
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:341,1
    - Dst: bpf_prog_load
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:341,1
    - Dst: auto::getHandle
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:346,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:347,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:347,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - filter
    - filterSize
    argTypes:
    - struct bpf_insn*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 350
      start: 339
    functionDepth: 2
    functionLinenumber: 339
    functionLinenumberEnd: 350
    functionName: loadProgram
    functionSourceFile: /src/pdns/pdns/dnsdistdist/bpf-filter.cc
    functionUses: 0
    functionsReached:
    - bpf_prog_load
    - std::runtime_error
    - auto::getHandle
    - stringerror
    - FDWrapper
    linkageType: ''
    returnType: FDWrapper
    signature: FDWrapper loadProgram(const struct bpf_insn* filter, size_t filterSize)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:356,1
    - Dst: getrlimit
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:360,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:361,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:361,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:368,1
    - Dst: infolog
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:368,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:369,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:369,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:369,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:369,1
    - Dst: setrlimit
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:375,1
    - Dst: SLOG
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:376,1
    - Dst: warnlog
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:376,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:376,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:377,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:377,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:377,1
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:381,1
    - Dst: BPFFilter::Map
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:383,1
    - Dst: BPFFilter::Map
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:384,1
    - Dst: BPFFilter::Map
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:385,1
    - Dst: BPFFilter::Map
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:388,1
    - Dst: BPFFilter::Map
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:389,1
    - Dst: BPFFilter::Map
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:396,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:396,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:434,1
    - Dst: static_cast<__u64>
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:436,1
    - Dst: auto::d_qnames::d_fd::getHandle
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:436,1
    - Dst: static_cast<__s32>
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:437,1
    - Dst: static_cast<__s32>
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:438,1
    - Dst: loadProgram
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:444,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:448,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:448,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:448,1
    - Dst: loadProgram
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:452,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:456,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:456,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:456,1
    - Dst: getHandle
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:460,1
    - Dst: bpf_update_elem
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:461,1
    - Dst: auto::d_filters::d_fd::getHandle
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:461,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:463,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:463,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 51
    argCount: 3
    argNames:
    - ' configs'
    - format
    - external
    argTypes:
    - std::unordered_map<std::string, MapConfiguration>
    - BPFFilter::MapFormat
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 466
      start: 352
    functionDepth: 3
    functionLinenumber: 352
    functionLinenumberEnd: 466
    functionName: BPFFilter::BPFFilter
    functionSourceFile: /src/pdns/pdns/dnsdistdist/bpf-filter.cc
    functionUses: 0
    functionsReached:
    - loadProgram
    - stringerror
    - std::string
    - SLOG
    - Logging::Loggable
    - warnlog
    - lock
    - dnsdist::logging::getTopLogger
    - static_cast<__u64>
    - setrlimit
    - auto::d_qnames::d_fd::getHandle
    - std::runtime_error
    - getHandle
    - bpf_update_elem
    - std::move
    - getrlimit
    - what
    - BPFFilter::Map
    - infolog
    - auto::d_filters::d_fd::getHandle
    - static_cast<__s32>
    linkageType: ''
    returnType: void
    signature: void BPFFilter::BPFFilter(std::unordered_map<std::string, MapConfiguration>&
      configs, BPFFilter::MapFormat format, bool external)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: getHandle
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:470,1
    - Dst: setsockopt
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:471,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:474,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:474,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - sock
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 476
      start: 468
    functionDepth: 0
    functionLinenumber: 468
    functionLinenumberEnd: 476
    functionName: BPFFilter::addSocket
    functionSourceFile: /src/pdns/pdns/dnsdistdist/bpf-filter.cc
    functionUses: 0
    functionsReached:
    - stringerror
    - std::runtime_error
    - getHandle
    - setsockopt
    linkageType: ''
    returnType: void
    signature: void BPFFilter::addSocket(int sock)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: getHandle
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:480,1
    - Dst: setsockopt
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:481,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:484,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:484,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - sock
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 486
      start: 478
    functionDepth: 0
    functionLinenumber: 478
    functionLinenumberEnd: 486
    functionName: BPFFilter::removeSocket
    functionSourceFile: /src/pdns/pdns/dnsdistdist/bpf-filter.cc
    functionUses: 0
    functionsReached:
    - stringerror
    - std::runtime_error
    - getHandle
    - setsockopt
    linkageType: ''
    returnType: void
    signature: void BPFFilter::removeSocket(int sock)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: isIPv4
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:495,1
    - Dst: htonl
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:496,1
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:497,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:500,1
    - Dst: BPFFilter::toString
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:500,1
    - Dst: bpf_lookup_elem
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:503,1
    - Dst: d_fd::getHandle
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:503,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:505,1
    - Dst: BPFFilter::toString
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:505,1
    - Dst: bpf_update_elem
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:508,1
    - Dst: d_fd::getHandle
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:508,1
    - Dst: isIPv6
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:513,1
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:520,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:523,1
    - Dst: BPFFilter::toString
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:523,1
    - Dst: bpf_lookup_elem
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:526,1
    - Dst: d_fd::getHandle
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:526,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:528,1
    - Dst: BPFFilter::toString
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:528,1
    - Dst: bpf_update_elem
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:531,1
    - Dst: d_fd::getHandle
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:531,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:538,1
    - Dst: BPFFilter::toString
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:538,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:538,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 35
    argCount: 2
    argNames:
    - ' addr'
    - action
    argTypes:
    - ComboAddress
    - BPFFilter::MatchAction
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 540
      start: 488
    functionDepth: 2
    functionLinenumber: 488
    functionLinenumberEnd: 540
    functionName: BPFFilter::block
    functionSourceFile: /src/pdns/pdns/dnsdistdist/bpf-filter.cc
    functionUses: 0
    functionsReached:
    - isIPv6
    - d_fd::getHandle
    - std::runtime_error
    - htonl
    - stringerror
    - BPFFilter::toString
    - bpf_lookup_elem
    - lock
    - isIPv4
    - bpf_update_elem
    linkageType: ''
    returnType: void
    signature: void BPFFilter::block(const ComboAddress& addr, BPFFilter::MatchAction
      action)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: isIPv4
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:545,1
    - Dst: htonl
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:546,1
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:547,1
    - Dst: bpf_delete_elem
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:549,1
    - Dst: d_fd::getHandle
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:549,1
    - Dst: isIPv6
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:554,1
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:561,1
    - Dst: bpf_delete_elem
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:563,1
    - Dst: d_fd::getHandle
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:563,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:570,1
    - Dst: BPFFilter::toString
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:570,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:570,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 19
    argCount: 1
    argNames:
    - ' addr'
    argTypes:
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 572
      start: 542
    functionDepth: 2
    functionLinenumber: 542
    functionLinenumberEnd: 572
    functionName: BPFFilter::unblock
    functionSourceFile: /src/pdns/pdns/dnsdistdist/bpf-filter.cc
    functionUses: 0
    functionsReached:
    - isIPv6
    - d_fd::getHandle
    - htonl
    - std::runtime_error
    - stringerror
    - BPFFilter::toString
    - lock
    - isIPv4
    - bpf_delete_elem
    linkageType: ''
    returnType: void
    signature: void BPFFilter::unblock(const ComboAddress& addr)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: isIPv4
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:579,1
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:581,1
    - Dst: d_fd::getHandle
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:583,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:584,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:587,1
    - Dst: BPFFilter::toString
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:587,1
    - Dst: bpf_lookup_elem
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:591,1
    - Dst: d_fd::getHandle
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:591,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:593,1
    - Dst: BPFFilter::toString
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:593,1
    - Dst: bpf_update_elem
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:602,1
    - Dst: d_fd::getHandle
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:602,1
    - Dst: isIPv6
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:607,1
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:610,1
    - Dst: d_fd::getHandle
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:612,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:613,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:616,1
    - Dst: BPFFilter::toString
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:616,1
    - Dst: bpf_lookup_elem
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:620,1
    - Dst: d_fd::getHandle
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:620,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:622,1
    - Dst: BPFFilter::toString
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:622,1
    - Dst: bpf_update_elem
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:631,1
    - Dst: d_fd::getHandle
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:631,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:638,1
    - Dst: BPFFilter::toString
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:638,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:638,1
    CyclomaticComplexity: 30
    EdgeCount: 30
    ICount: 46
    argCount: 3
    argNames:
    - ' addr'
    - force
    - action
    argTypes:
    - Netmask
    - bool
    - BPFFilter::MatchAction
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 640
      start: 574
    functionDepth: 2
    functionLinenumber: 574
    functionLinenumberEnd: 640
    functionName: BPFFilter::addRangeRule
    functionSourceFile: /src/pdns/pdns/dnsdistdist/bpf-filter.cc
    functionUses: 0
    functionsReached:
    - isIPv6
    - d_fd::getHandle
    - std::runtime_error
    - stringerror
    - BPFFilter::toString
    - bpf_lookup_elem
    - lock
    - isIPv4
    - bpf_update_elem
    linkageType: ''
    returnType: void
    signature: void BPFFilter::addRangeRule(const Netmask& addr, bool force, BPFFilter::MatchAction
      action)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: isIPv4
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:648,1
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:650,1
    - Dst: d_fd::getHandle
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:652,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:653,1
    - Dst: bpf_delete_elem
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:655,1
    - Dst: d_fd::getHandle
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:655,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:660,1
    - Dst: BPFFilter::toString
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:660,1
    - Dst: isIPv6
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:663,1
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:666,1
    - Dst: d_fd::getHandle
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:668,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:669,1
    - Dst: bpf_delete_elem
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:671,1
    - Dst: d_fd::getHandle
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:671,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:676,1
    - Dst: BPFFilter::toString
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:676,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:681,1
    - Dst: BPFFilter::toString
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:681,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:681,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 28
    argCount: 1
    argNames:
    - ' addr'
    argTypes:
    - Netmask
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 683
      start: 642
    functionDepth: 2
    functionLinenumber: 642
    functionLinenumberEnd: 683
    functionName: BPFFilter::rmRangeRule
    functionSourceFile: /src/pdns/pdns/dnsdistdist/bpf-filter.cc
    functionUses: 0
    functionsReached:
    - isIPv6
    - d_fd::getHandle
    - std::runtime_error
    - stringerror
    - BPFFilter::toString
    - lock
    - isIPv4
    - bpf_delete_elem
    linkageType: ''
    returnType: void
    signature: void BPFFilter::rmRangeRule(const Netmask& addr)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:703,1
    - Dst: toDNSStringLC
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:705,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:706,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:707,1
    - Dst: toLogString
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:707,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:709,1
    - Dst: std::string::c_str
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:709,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:709,1
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:713,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:716,1
    - Dst: toLogString
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:716,1
    - Dst: bpf_lookup_elem
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:719,1
    - Dst: d_fd::getHandle
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:719,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:721,1
    - Dst: toLogString
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:721,1
    - Dst: bpf_update_elem
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:723,1
    - Dst: d_fd::getHandle
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:723,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:729,1
    - Dst: toLogString
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:729,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:729,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 30
    argCount: 3
    argNames:
    - ' qname'
    - action
    - qtype
    argTypes:
    - DNSName
    - BPFFilter::MatchAction
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 732
      start: 685
    functionDepth: 2
    functionLinenumber: 685
    functionLinenumberEnd: 732
    functionName: BPFFilter::block
    functionSourceFile: /src/pdns/pdns/dnsdistdist/bpf-filter.cc
    functionUses: 0
    functionsReached:
    - memcpy
    - toDNSStringLC
    - toLogString
    - d_fd::getHandle
    - std::runtime_error
    - std::string::c_str
    - stringerror
    - bpf_lookup_elem
    - lock
    - memset
    - bpf_update_elem
    - std::string::size
    linkageType: ''
    returnType: void
    signature: void BPFFilter::block(const DNSName& qname, BPFFilter::MatchAction
      action, uint16_t qtype)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:737,1
    - Dst: toDNSStringLC
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:738,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:740,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:741,1
    - Dst: toLogString
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:741,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:743,1
    - Dst: std::string::c_str
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:743,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:743,1
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:747,1
    - Dst: bpf_delete_elem
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:749,1
    - Dst: d_fd::getHandle
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:749,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:754,1
    - Dst: toLogString
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:754,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:754,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 2
    argNames:
    - ' qname'
    - qtype
    argTypes:
    - DNSName
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 757
      start: 734
    functionDepth: 2
    functionLinenumber: 734
    functionLinenumberEnd: 757
    functionName: BPFFilter::unblock
    functionSourceFile: /src/pdns/pdns/dnsdistdist/bpf-filter.cc
    functionUses: 0
    functionsReached:
    - memcpy
    - toDNSStringLC
    - toLogString
    - d_fd::getHandle
    - std::runtime_error
    - std::string::c_str
    - stringerror
    - lock
    - memset
    - std::string::size
    - bpf_delete_elem
    linkageType: ''
    returnType: void
    signature: void BPFFilter::unblock(const DNSName& qname, uint16_t qtype)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:763,1
    - Dst: std::vector::reserve
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:764,1
    - Dst: memset
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:768,1
    - Dst: memset
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:778,1
    - Dst: std::array::size
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:781,1
    - Dst: memset
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:782,1
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:784,1
    - Dst: bpf_get_next_key
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:788,1
    - Dst: d_fd::getHandle
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:788,1
    - Dst: bpf_lookup_elem
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:792,1
    - Dst: d_fd::getHandle
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:792,1
    - Dst: ntohl
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:793,1
    - Dst: std::vector::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:794,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:794,1
    - Dst: bpf_get_next_key
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:797,1
    - Dst: d_fd::getHandle
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:797,1
    - Dst: bpf_get_next_key
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:803,1
    - Dst: d_fd::getHandle
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:803,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:803,1
    - Dst: bpf_lookup_elem
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:806,1
    - Dst: d_fd::getHandle
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:806,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:806,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:807,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:807,1
    - Dst: std::array::size
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:807,1
    - Dst: std::vector::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:809,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:809,1
    - Dst: bpf_get_next_key
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:812,1
    - Dst: d_fd::getHandle
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:812,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:812,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:812,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 26
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 817
      start: 759
    functionDepth: 2
    functionLinenumber: 759
    functionLinenumberEnd: 817
    functionName: BPFFilter::getAddrStats
    functionSourceFile: /src/pdns/pdns/dnsdistdist/bpf-filter.cc
    functionUses: 0
    functionsReached:
    - ntohl
    - memcpy
    - d_fd::getHandle
    - std::vector::emplace_back
    - bpf_lookup_elem
    - lock
    - std::vector::reserve
    - memset
    - bpf_get_next_key
    - std::array::data
    - std::array::size
    - ComboAddress
    linkageType: ''
    returnType: std::vector<std::pair<ComboAddress, uint64_t>>
    signature: std::vector<std::pair<ComboAddress, uint64_t>> BPFFilter::getAddrStats()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:829,1
    - Dst: memset
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:830,1
    - Dst: memset
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:831,1
    - Dst: memset
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:832,1
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:835,1
    - Dst: std::vector::reserve
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:836,1
    - Dst: bpf_get_next_key
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:839,1
    - Dst: d_fd::getHandle
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:839,1
    - Dst: bpf_lookup_elem
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:841,1
    - Dst: d_fd::getHandle
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:841,1
    - Dst: std::vector::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:843,1
    - Dst: Netmask
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:843,1
    - Dst: bpf_get_next_key
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:846,1
    - Dst: d_fd::getHandle
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:846,1
    - Dst: bpf_get_next_key
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:852,1
    - Dst: d_fd::getHandle
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:852,1
    - Dst: bpf_lookup_elem
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:854,1
    - Dst: d_fd::getHandle
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:854,1
    - Dst: std::vector::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:856,1
    - Dst: Netmask
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:856,1
    - Dst: bpf_get_next_key
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:859,1
    - Dst: d_fd::getHandle
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:859,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 25
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 863
      start: 819
    functionDepth: 2
    functionLinenumber: 819
    functionLinenumberEnd: 863
    functionName: BPFFilter::getRangeRule
    functionSourceFile: /src/pdns/pdns/dnsdistdist/bpf-filter.cc
    functionUses: 0
    functionsReached:
    - Netmask
    - d_fd::getHandle
    - std::vector::emplace_back
    - bpf_lookup_elem
    - lock
    - std::vector::reserve
    - memset
    - bpf_get_next_key
    linkageType: ''
    returnType: std::vector<std::pair<Netmask, CounterAndActionValue>>
    signature: std::vector<std::pair<Netmask, CounterAndActionValue>> BPFFilter::getRangeRule()
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:873,1
    - Dst: std::vector::reserve
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:875,1
    - Dst: bpf_get_next_key
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:876,1
    - Dst: d_fd::getHandle
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:876,1
    - Dst: bpf_lookup_elem
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:879,1
    - Dst: d_fd::getHandle
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:879,1
    - Dst: std::vector::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:882,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:882,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:882,1
    - Dst: bpf_get_next_key
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:885,1
    - Dst: d_fd::getHandle
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:885,1
    - Dst: memset
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:890,1
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:893,1
    - Dst: std::vector::reserve
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:895,1
    - Dst: bpf_get_next_key
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:896,1
    - Dst: d_fd::getHandle
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:896,1
    - Dst: bpf_lookup_elem
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:899,1
    - Dst: d_fd::getHandle
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:899,1
    - Dst: std::vector::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:902,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:902,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:902,1
    - Dst: bpf_get_next_key
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:905,1
    - Dst: d_fd::getHandle
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:905,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 22
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 910
      start: 865
    functionDepth: 2
    functionLinenumber: 865
    functionLinenumberEnd: 910
    functionName: BPFFilter::getQNameStats
    functionSourceFile: /src/pdns/pdns/dnsdistdist/bpf-filter.cc
    functionUses: 0
    functionsReached:
    - d_fd::getHandle
    - std::vector::emplace_back
    - bpf_lookup_elem
    - lock
    - std::vector::reserve
    - bpf_get_next_key
    - DNSName
    - reinterpret_cast<const char*>
    - memset
    linkageType: ''
    returnType: std::vector<std::tuple<DNSName, uint16_t, uint64_t>>
    signature: std::vector<std::tuple<DNSName, uint16_t, uint64_t>> BPFFilter::getQNameStats()
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: isIPv4
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:916,1
    - Dst: htonl
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:917,1
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:919,1
    - Dst: bpf_lookup_elem
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:921,1
    - Dst: d_fd::getHandle
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:921,1
    - Dst: isIPv6
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:926,1
    - Dst: lock
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:933,1
    - Dst: bpf_lookup_elem
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:935,1
    - Dst: d_fd::getHandle
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:935,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 1
    argNames:
    - ' requestor'
    argTypes:
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 942
      start: 912
    functionDepth: 2
    functionLinenumber: 912
    functionLinenumberEnd: 942
    functionName: BPFFilter::getHits
    functionSourceFile: /src/pdns/pdns/dnsdistdist/bpf-filter.cc
    functionUses: 0
    functionsReached:
    - isIPv6
    - d_fd::getHandle
    - htonl
    - bpf_lookup_elem
    - lock
    - isIPv4
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t BPFFilter::getHits(const ComboAddress& requestor)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - ' configs'
    - format
    - external
    argTypes:
    - std::unordered_map<std::string, MapConfiguration>
    - BPFFilter::MapFormat
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 951
      start: 946
    functionDepth: 0
    functionLinenumber: 946
    functionLinenumberEnd: 951
    functionName: BPFFilter::BPFFilter
    functionSourceFile: /src/pdns/pdns/dnsdistdist/bpf-filter.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void BPFFilter::BPFFilter(std::unordered_map<std::string, MapConfiguration>&
      configs, BPFFilter::MapFormat format, bool external)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:955,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 956
      start: 953
    functionDepth: 0
    functionLinenumber: 953
    functionLinenumberEnd: 956
    functionName: BPFFilter::addSocket
    functionSourceFile: /src/pdns/pdns/dnsdistdist/bpf-filter.cc
    functionUses: 0
    functionsReached:
    - std::runtime_error
    linkageType: ''
    returnType: void
    signature: void BPFFilter::addSocket(int)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:960,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 961
      start: 958
    functionDepth: 0
    functionLinenumber: 958
    functionLinenumberEnd: 961
    functionName: BPFFilter::removeSocket
    functionSourceFile: /src/pdns/pdns/dnsdistdist/bpf-filter.cc
    functionUses: 0
    functionsReached:
    - std::runtime_error
    linkageType: ''
    returnType: void
    signature: void BPFFilter::removeSocket(int)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:965,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 966
      start: 963
    functionDepth: 0
    functionLinenumber: 963
    functionLinenumberEnd: 966
    functionName: BPFFilter::block
    functionSourceFile: /src/pdns/pdns/dnsdistdist/bpf-filter.cc
    functionUses: 0
    functionsReached:
    - std::runtime_error
    linkageType: ''
    returnType: void
    signature: void BPFFilter::block(const ComboAddress&, BPFFilter::MatchAction)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:970,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 971
      start: 968
    functionDepth: 0
    functionLinenumber: 968
    functionLinenumberEnd: 971
    functionName: BPFFilter::unblock
    functionSourceFile: /src/pdns/pdns/dnsdistdist/bpf-filter.cc
    functionUses: 0
    functionsReached:
    - std::runtime_error
    linkageType: ''
    returnType: void
    signature: void BPFFilter::unblock(const ComboAddress&)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:975,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 976
      start: 973
    functionDepth: 0
    functionLinenumber: 973
    functionLinenumberEnd: 976
    functionName: BPFFilter::block
    functionSourceFile: /src/pdns/pdns/dnsdistdist/bpf-filter.cc
    functionUses: 0
    functionsReached:
    - std::runtime_error
    linkageType: ''
    returnType: void
    signature: void BPFFilter::block(const DNSName&, BPFFilter::MatchAction, uint16_t)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:980,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 981
      start: 978
    functionDepth: 0
    functionLinenumber: 978
    functionLinenumberEnd: 981
    functionName: BPFFilter::unblock
    functionSourceFile: /src/pdns/pdns/dnsdistdist/bpf-filter.cc
    functionUses: 0
    functionsReached:
    - std::runtime_error
    linkageType: ''
    returnType: void
    signature: void BPFFilter::unblock(const DNSName&, uint16_t)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:985,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 986
      start: 983
    functionDepth: 0
    functionLinenumber: 983
    functionLinenumberEnd: 986
    functionName: BPFFilter::addRangeRule
    functionSourceFile: /src/pdns/pdns/dnsdistdist/bpf-filter.cc
    functionUses: 0
    functionsReached:
    - std::runtime_error
    linkageType: ''
    returnType: void
    signature: void BPFFilter::addRangeRule(const Netmask&, bool, BPFFilter::MatchAction)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/bpf-filter.cc:989,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 990
      start: 987
    functionDepth: 0
    functionLinenumber: 987
    functionLinenumberEnd: 990
    functionName: BPFFilter::rmRangeRule
    functionSourceFile: /src/pdns/pdns/dnsdistdist/bpf-filter.cc
    functionUses: 0
    functionsReached:
    - std::runtime_error
    linkageType: ''
    returnType: void
    signature: void BPFFilter::rmRangeRule(const Netmask&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 996
      start: 992
    functionDepth: 0
    functionLinenumber: 992
    functionLinenumberEnd: 996
    functionName: BPFFilter::getRangeRule
    functionSourceFile: /src/pdns/pdns/dnsdistdist/bpf-filter.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::vector<std::pair<Netmask, CounterAndActionValue>>
    signature: std::vector<std::pair<Netmask, CounterAndActionValue>> BPFFilter::getRangeRule()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1001
      start: 997
    functionDepth: 0
    functionLinenumber: 997
    functionLinenumberEnd: 1001
    functionName: BPFFilter::getAddrStats
    functionSourceFile: /src/pdns/pdns/dnsdistdist/bpf-filter.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::vector<std::pair<ComboAddress, uint64_t>>
    signature: std::vector<std::pair<ComboAddress, uint64_t>> BPFFilter::getAddrStats()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1007
      start: 1003
    functionDepth: 0
    functionLinenumber: 1003
    functionLinenumberEnd: 1007
    functionName: BPFFilter::getQNameStats
    functionSourceFile: /src/pdns/pdns/dnsdistdist/bpf-filter.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::vector<std::tuple<DNSName, uint16_t, uint64_t>>
    signature: std::vector<std::tuple<DNSName, uint16_t, uint64_t>> BPFFilter::getQNameStats()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1012
      start: 1009
    functionDepth: 0
    functionLinenumber: 1009
    functionLinenumberEnd: 1012
    functionName: BPFFilter::getHits
    functionSourceFile: /src/pdns/pdns/dnsdistdist/bpf-filter.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t BPFFilter::getHits(const ComboAddress&)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - action
    argTypes:
    - MatchAction
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1026
      start: 1015
    functionDepth: 0
    functionLinenumber: 1015
    functionLinenumberEnd: 1026
    functionName: BPFFilter::supportsMatchAction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/bpf-filter.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool BPFFilter::supportsMatchAction(MatchAction action) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1034
      start: 1028
    functionDepth: 0
    functionLinenumber: 1028
    functionLinenumberEnd: 1034
    functionName: BPFFilter::isExternal
    functionSourceFile: /src/pdns/pdns/dnsdistdist/bpf-filter.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool BPFFilter::isExternal() const
  - BBCount: 6
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 6
    argNames:
    - ' entry'
    - ' qname'
    - qtype
    - size
    - ' now'
    - ' requestor'
    argTypes:
    - T
    - DNSName
    - uint16_t
    - uint16_t
    - timespec
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 35
      start: 17
    functionDepth: 0
    functionLinenumber: 17
    functionLinenumberEnd: 35
    functionName: checkQuery
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistrings_cc.cc
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool checkQuery(const T& entry, const DNSName& qname, uint16_t qtype,
      uint16_t size, const timespec& now, const ComboAddress& requestor)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: checkQuery
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrings_cc.cc:39,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 8
    argNames:
    - ' entry'
    - ' qname'
    - qtype
    - size
    - ' now'
    - ' requestor'
    - latency
    - ' server'
    argTypes:
    - Rings::Response
    - DNSName
    - uint16_t
    - uint16_t
    - timespec
    - ComboAddress
    - unsigned int
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 37
    functionDepth: 0
    functionLinenumber: 37
    functionLinenumberEnd: 49
    functionName: checkResponse
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistrings_cc.cc
    functionUses: 0
    functionsReached:
    - checkQuery
    linkageType: ''
    returnType: bool
    signature: bool checkResponse(const Rings::Response& entry, const DNSName& qname,
      uint16_t qtype, uint16_t size, const timespec& now, const ComboAddress& requestor,
      unsigned int latency, const ComboAddress& server)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Rings::init
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrings_cc.cc:59,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrings_cc.cc:62,1
    - Dst: Rings::getNumberOfShards
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrings_cc.cc:62,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrings_cc.cc:63,1
    - Dst: Rings::getNumberOfQueryEntries
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrings_cc.cc:63,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrings_cc.cc:64,1
    - Dst: Rings::getNumberOfResponseEntries
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrings_cc.cc:64,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrings_cc.cc:65,1
    - Dst: Rings::d_shards::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrings_cc.cc:65,1
    - Dst: Rings::getNumberOfShards
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrings_cc.cc:65,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrings_cc.cc:67,1
    - Dst: memset
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrings_cc.cc:71,1
    - Dst: gettime
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrings_cc.cc:80,1
    - Dst: Rings::insertQuery
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrings_cc.cc:84,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrings_cc.cc:86,1
    - Dst: Rings::getNumberOfQueryEntries
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrings_cc.cc:86,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrings_cc.cc:87,1
    - Dst: Rings::getNumberOfResponseEntries
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrings_cc.cc:87,1
    - Dst: queryRing::lock
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrings_cc.cc:89,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrings_cc.cc:90,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrings_cc.cc:90,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrings_cc.cc:92,1
    - Dst: checkQuery
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrings_cc.cc:92,1
    - Dst: Rings::insertQuery
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrings_cc.cc:98,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrings_cc.cc:100,1
    - Dst: Rings::getNumberOfQueryEntries
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrings_cc.cc:100,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrings_cc.cc:101,1
    - Dst: Rings::getNumberOfResponseEntries
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrings_cc.cc:101,1
    - Dst: queryRing::lock
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrings_cc.cc:103,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrings_cc.cc:104,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrings_cc.cc:104,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrings_cc.cc:106,1
    - Dst: checkQuery
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrings_cc.cc:106,1
    - Dst: Rings::insertResponse
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrings_cc.cc:115,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrings_cc.cc:115,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrings_cc.cc:117,1
    - Dst: Rings::getNumberOfQueryEntries
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrings_cc.cc:117,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrings_cc.cc:118,1
    - Dst: Rings::getNumberOfResponseEntries
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrings_cc.cc:118,1
    - Dst: respRing::lock
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrings_cc.cc:120,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrings_cc.cc:121,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrings_cc.cc:121,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrings_cc.cc:123,1
    - Dst: checkResponse
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrings_cc.cc:123,1
    - Dst: Rings::insertResponse
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrings_cc.cc:129,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrings_cc.cc:129,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrings_cc.cc:131,1
    - Dst: Rings::getNumberOfQueryEntries
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrings_cc.cc:131,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrings_cc.cc:132,1
    - Dst: Rings::getNumberOfResponseEntries
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrings_cc.cc:132,1
    - Dst: respRing::lock
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrings_cc.cc:134,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrings_cc.cc:135,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrings_cc.cc:135,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrings_cc.cc:137,1
    - Dst: checkResponse
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrings_cc.cc:137,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 46
    argCount: 3
    argNames:
    - maxEntries
    - numberOfShards
    - nbLockTries
    argTypes:
    - size_t
    - size_t
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 51
    functionDepth: 2
    functionLinenumber: 51
    functionLinenumberEnd: 140
    functionName: test_ring
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistrings_cc.cc
    functionUses: 0
    functionsReached:
    - queryRing::lock
    - checkQuery
    - Rings::getNumberOfResponseEntries
    - Rings::getNumberOfQueryEntries
    - Rings::insertResponse
    - checkResponse
    - Rings::insertQuery
    - BOOST_CHECK_EQUAL
    - Rings::init
    - Rings::d_shards::size
    - memset
    - DNSName
    - gettime
    - Rings::getNumberOfShards
    - BOOST_CHECK
    - respRing::lock
    - auto::size
    linkageType: ''
    returnType: void
    signature: void test_ring(size_t maxEntries, size_t numberOfShards, size_t nbLockTries)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_ring
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrings_cc.cc:146,1
    - Dst: test_ring
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrings_cc.cc:148,1
    - Dst: test_ring
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrings_cc.cc:150,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 151
      start: 142
    functionDepth: 3
    functionLinenumber: 142
    functionLinenumberEnd: 151
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistrings_cc.cc
    functionUses: 0
    functionsReached:
    - test_ring
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_Rings_Simple)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: queryRing::lock
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrings_cc.cc:163,1
    - Dst: respRing::lock
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrings_cc.cc:174,1
    - Dst: BOOST_CHECK_LE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrings_cc.cc:185,1
    - Dst: BOOST_CHECK_LE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrings_cc.cc:186,1
    - Dst: usleep
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrings_cc.cc:188,1
    - Dst: BOOST_CHECK_GT
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrings_cc.cc:191,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 24
    argCount: 4
    argNames:
    - ' rings'
    - ' done'
    - numberOfEntries
    - qtype
    argTypes:
    - Rings
    - std::atomic<bool>
    - size_t
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 195
      start: 153
    functionDepth: 0
    functionLinenumber: 153
    functionLinenumberEnd: 195
    functionName: ringReaderThread
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistrings_cc.cc
    functionUses: 0
    functionsReached:
    - queryRing::lock
    - BOOST_CHECK_GT
    - usleep
    - respRing::lock
    - BOOST_CHECK_LE
    linkageType: ''
    returnType: void
    signature: void ringReaderThread(Rings& rings, std::atomic<bool>& done, size_t
      numberOfEntries, uint16_t qtype)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: insertQuery
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrings_cc.cc:200,1
    - Dst: insertResponse
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrings_cc.cc:201,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrings_cc.cc:201,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 4
    argNames:
    - ' rings'
    - numberOfEntries
    - ' query'
    - ' response'
    argTypes:
    - Rings
    - size_t
    - Rings::Query
    - Rings::Response
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 203
      start: 197
    functionDepth: 2
    functionLinenumber: 197
    functionLinenumberEnd: 203
    functionName: ringWriterThread
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistrings_cc.cc
    functionUses: 0
    functionsReached:
    - insertQuery
    - insertResponse
    - DNSName
    linkageType: ''
    returnType: void
    signature: void ringWriterThread(Rings& rings, size_t numberOfEntries, const Rings::Query&
      query, const Rings::Response& response)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: gettime
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrings_cc.cc:214,1
    - Dst: memset
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrings_cc.cc:216,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrings_cc.cc:217,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrings_cc.cc:222,1
    - Dst: Rings::init
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrings_cc.cc:238,1
    - Dst: dnsdist::MacAddress
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrings_cc.cc:240,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrings_cc.cc:255,1
    - Dst: std::thread
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrings_cc.cc:255,1
    - Dst: std::ref
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrings_cc.cc:255,1
    - Dst: join
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrings_cc.cc:260,1
    - Dst: std::thread::join
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrings_cc.cc:265,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrings_cc.cc:267,1
    - Dst: Rings::getNumberOfShards
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrings_cc.cc:267,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrings_cc.cc:268,1
    - Dst: Rings::d_shards::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrings_cc.cc:268,1
    - Dst: Rings::getNumberOfShards
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrings_cc.cc:268,1
    - Dst: BOOST_CHECK_LE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrings_cc.cc:269,1
    - Dst: Rings::getNumberOfQueryEntries
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrings_cc.cc:269,1
    - Dst: BOOST_CHECK_GT
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrings_cc.cc:270,1
    - Dst: Rings::getNumberOfQueryEntries
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrings_cc.cc:270,1
    - Dst: BOOST_WARN_GT
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrings_cc.cc:271,1
    - Dst: Rings::getNumberOfQueryEntries
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrings_cc.cc:271,1
    - Dst: BOOST_CHECK_LE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrings_cc.cc:272,1
    - Dst: Rings::getNumberOfResponseEntries
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrings_cc.cc:272,1
    - Dst: BOOST_CHECK_GT
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrings_cc.cc:273,1
    - Dst: Rings::getNumberOfResponseEntries
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrings_cc.cc:273,1
    - Dst: BOOST_WARN_GT
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrings_cc.cc:274,1
    - Dst: Rings::getNumberOfResponseEntries
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrings_cc.cc:274,1
    - Dst: queryRing::lock
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrings_cc.cc:280,1
    - Dst: BOOST_CHECK_LE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrings_cc.cc:281,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrings_cc.cc:281,1
    - Dst: BOOST_CHECK_GT
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrings_cc.cc:283,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrings_cc.cc:283,1
    - Dst: BOOST_WARN_GT
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrings_cc.cc:285,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrings_cc.cc:285,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrings_cc.cc:286,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrings_cc.cc:288,1
    - Dst: checkQuery
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrings_cc.cc:288,1
    - Dst: respRing::lock
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrings_cc.cc:292,1
    - Dst: BOOST_CHECK_LE
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrings_cc.cc:293,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrings_cc.cc:293,1
    - Dst: BOOST_CHECK_GT
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrings_cc.cc:295,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrings_cc.cc:295,1
    - Dst: BOOST_WARN_GT
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrings_cc.cc:297,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrings_cc.cc:297,1
    - Dst: auto::size
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrings_cc.cc:298,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrings_cc.cc:300,1
    - Dst: checkResponse
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrings_cc.cc:300,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrings_cc.cc:304,1
    - Dst: Rings::getNumberOfQueryEntries
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrings_cc.cc:304,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrings_cc.cc:305,1
    - Dst: Rings::getNumberOfResponseEntries
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrings_cc.cc:305,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 47
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 313
      start: 205
    functionDepth: 1
    functionLinenumber: 205
    functionLinenumberEnd: 313
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistrings_cc.cc
    functionUses: 0
    functionsReached:
    - queryRing::lock
    - Rings::getNumberOfQueryEntries
    - std::ref
    - dnsdist::MacAddress
    - BOOST_CHECK_LE
    - auto::size
    - std::vector::push_back
    - checkResponse
    - BOOST_WARN_GT
    - Rings::init
    - memset
    - std::thread
    - Rings::getNumberOfShards
    - htons
    - BOOST_CHECK_GT
    - std::thread::join
    - join
    - gettime
    - checkQuery
    - Rings::getNumberOfResponseEntries
    - BOOST_CHECK_EQUAL
    - Rings::d_shards::size
    - BOOST_CHECK
    - respRing::lock
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_Rings_Threaded)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Rings::init
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrings_cc.cc:327,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrings_cc.cc:329,1
    - Dst: Rings::adjustForSamplingRate
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrings_cc.cc:329,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrings_cc.cc:330,1
    - Dst: Rings::adjustForSamplingRate
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrings_cc.cc:330,1
    - Dst: gettime
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrings_cc.cc:333,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrings_cc.cc:335,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrings_cc.cc:340,1
    - Dst: Rings::insertQuery
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrings_cc.cc:352,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrings_cc.cc:354,1
    - Dst: Rings::getNumberOfQueryEntries
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrings_cc.cc:354,1
    - Dst: Rings::insertResponse
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrings_cc.cc:358,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrings_cc.cc:358,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrings_cc.cc:360,1
    - Dst: Rings::getNumberOfResponseEntries
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrings_cc.cc:360,1
    - Dst: Rings::clear
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrings_cc.cc:362,1
    - Dst: Rings::insertQuery
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrings_cc.cc:367,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrings_cc.cc:369,1
    - Dst: Rings::getNumberOfQueryEntries
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrings_cc.cc:369,1
    - Dst: Rings::insertResponse
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrings_cc.cc:373,1
    - Dst: DNSName
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrings_cc.cc:373,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrings_cc.cc:375,1
    - Dst: Rings::getNumberOfResponseEntries
      Src: /src/pdns/pdns/dnsdistdist/test-dnsdistrings_cc.cc:375,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 30
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 376
      start: 315
    functionDepth: 2
    functionLinenumber: 315
    functionLinenumberEnd: 376
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/test-dnsdistrings_cc.cc
    functionUses: 0
    functionsReached:
    - Rings::getNumberOfResponseEntries
    - Rings::getNumberOfQueryEntries
    - Rings::insertQuery
    - BOOST_CHECK_EQUAL
    - Rings::init
    - DNSName
    - Rings::clear
    - gettime
    - Rings::insertResponse
    - Rings::adjustForSamplingRate
    - htons
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_Rings_Sampling)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: time
      Src: /src/pdns/pdns/dnsdistdist/dolog.cc:39,1
    - Dst: localtime_r
      Src: /src/pdns/pdns/dnsdistdist/dolog.cc:41,1
    - Dst: std::scoped_lock
      Src: /src/pdns/pdns/dnsdistdist/dolog.cc:46,1
    - Dst: strftime
      Src: /src/pdns/pdns/dnsdistdist/dolog.cc:48,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/dnsdistdist/dolog.cc:48,1
    - Dst: std::array::size
      Src: /src/pdns/pdns/dnsdistdist/dolog.cc:48,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/dnsdistdist/dolog.cc:53,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - ' stream'
    argTypes:
    - std::ostream
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 34
    functionDepth: 0
    functionLinenumber: 34
    functionLinenumberEnd: 54
    functionName: dnsdist::logging::logTime
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dolog.cc
    functionUses: 2
    functionsReached:
    - strftime
    - localtime_r
    - time
    - std::scoped_lock
    - std::array::data
    - std::array::size
    linkageType: ''
    returnType: void
    signature: void logTime(std::ostream& stream)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: time
      Src: /src/pdns/pdns/dnsdistdist/dolog.cc:39,1
    - Dst: localtime_r
      Src: /src/pdns/pdns/dnsdistdist/dolog.cc:41,1
    - Dst: std::scoped_lock
      Src: /src/pdns/pdns/dnsdistdist/dolog.cc:46,1
    - Dst: strftime
      Src: /src/pdns/pdns/dnsdistdist/dolog.cc:48,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/dnsdistdist/dolog.cc:48,1
    - Dst: std::array::size
      Src: /src/pdns/pdns/dnsdistdist/dolog.cc:48,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/dnsdistdist/dolog.cc:53,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - ' stream'
    argTypes:
    - std::ostream
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 34
    functionDepth: 0
    functionLinenumber: 34
    functionLinenumberEnd: 54
    functionName: dnsdist::logging::logTime
    functionSourceFile: /src/pdns/pdns/dnsdistdist/dolog.cc
    functionUses: 2
    functionsReached:
    - strftime
    - localtime_r
    - time
    - std::scoped_lock
    - std::array::data
    - std::array::size
    linkageType: ''
    returnType: void
    signature: void logTime(std::ostream& stream)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: runtime_error
      Src: /src/pdns/pdns/dnsdistdist/iputils.cc:40,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - ' error'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 38
    functionDepth: 0
    functionLinenumber: 38
    functionLinenumberEnd: 41
    functionName: RuntimeError
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.cc
    functionUses: 6
    functionsReached:
    - runtime_error
    linkageType: ''
    returnType: void
    signature: void RuntimeError(const std::string& error)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: NetworkError
      Src: /src/pdns/pdns/dnsdistdist/iputils.cc:45,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - ' error'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 46
    functionName: NetworkErr
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.cc
    functionUses: 1
    functionsReached:
    - NetworkError
    linkageType: ''
    returnType: void
    signature: void NetworkErr(const std::string& error)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: socket
      Src: /src/pdns/pdns/dnsdistdist/iputils.cc:50,1
    - Dst: RuntimeError
      Src: /src/pdns/pdns/dnsdistdist/iputils.cc:52,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/iputils.cc:52,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/iputils.cc:52,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - family
    - type
    - flags
    argTypes:
    - int
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 48
    functionDepth: 0
    functionLinenumber: 48
    functionLinenumberEnd: 55
    functionName: SSocket
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.cc
    functionUses: 5
    functionsReached:
    - socket
    - stringerror
    - RuntimeError
    - std::to_string
    linkageType: ''
    returnType: int
    signature: int SSocket(int family, int type, int flags)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: doConnect
      Src: /src/pdns/pdns/dnsdistdist/iputils.cc:79,1
    - Dst: RuntimeError
      Src: /src/pdns/pdns/dnsdistdist/iputils.cc:82,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/iputils.cc:82,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/iputils.cc:82,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - sockfd
    - fastopen
    - ' remote'
    argTypes:
    - int
    - bool
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 77
    functionDepth: 0
    functionLinenumber: 77
    functionLinenumberEnd: 85
    functionName: SConnect
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.cc
    functionUses: 3
    functionsReached:
    - RuntimeError
    - stringerror
    - toStringWithPort
    - doConnect
    linkageType: ''
    returnType: int
    signature: int SConnect(int sockfd, bool fastopen, const ComboAddress& remote)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: doConnect
      Src: /src/pdns/pdns/dnsdistdist/iputils.cc:89,1
    - Dst: waitForRWData
      Src: /src/pdns/pdns/dnsdistdist/iputils.cc:100,1
    - Dst: getsockopt
      Src: /src/pdns/pdns/dnsdistdist/iputils.cc:105,1
    - Dst: NetworkErr
      Src: /src/pdns/pdns/dnsdistdist/iputils.cc:106,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/iputils.cc:106,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/iputils.cc:106,1
    - Dst: NetworkErr
      Src: /src/pdns/pdns/dnsdistdist/iputils.cc:109,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/iputils.cc:109,1
    - Dst: NetworkErr
      Src: /src/pdns/pdns/dnsdistdist/iputils.cc:113,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/iputils.cc:113,1
    - Dst: NetworkErr
      Src: /src/pdns/pdns/dnsdistdist/iputils.cc:118,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/iputils.cc:118,1
    - Dst: NetworkErr
      Src: /src/pdns/pdns/dnsdistdist/iputils.cc:122,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/iputils.cc:122,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/iputils.cc:122,1
    - Dst: NetworkErr
      Src: /src/pdns/pdns/dnsdistdist/iputils.cc:126,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/iputils.cc:126,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/iputils.cc:126,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 32
    argCount: 4
    argNames:
    - sockfd
    - fastopen
    - ' remote'
    - ' timeout'
    argTypes:
    - int
    - bool
    - ComboAddress
    - struct timeval
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 131
      start: 87
    functionDepth: 0
    functionLinenumber: 87
    functionLinenumberEnd: 131
    functionName: SConnectWithTimeout
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.cc
    functionUses: 8
    functionsReached:
    - getsockopt
    - stringerror
    - toStringWithPort
    - waitForRWData
    - NetworkErr
    - doConnect
    linkageType: ''
    returnType: int
    signature: int SConnectWithTimeout(int sockfd, bool fastopen, const ComboAddress&
      remote, const struct timeval& timeout)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: bind
      Src: /src/pdns/pdns/dnsdistdist/iputils.cc:135,1
    - Dst: reinterpret_cast<const struct sockaddr*>
      Src: /src/pdns/pdns/dnsdistdist/iputils.cc:135,1
    - Dst: getSocklen
      Src: /src/pdns/pdns/dnsdistdist/iputils.cc:135,1
    - Dst: RuntimeError
      Src: /src/pdns/pdns/dnsdistdist/iputils.cc:138,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/dnsdistdist/iputils.cc:138,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/iputils.cc:138,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - sockfd
    - ' local'
    argTypes:
    - int
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 141
      start: 133
    functionDepth: 0
    functionLinenumber: 133
    functionLinenumberEnd: 141
    functionName: SBind
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.cc
    functionUses: 4
    functionsReached:
    - stringerror
    - bind
    - reinterpret_cast<const struct sockaddr*>
    - getSocklen
    - RuntimeError
    - toStringWithPort
    linkageType: ''
    returnType: int
    signature: int SBind(int sockfd, const ComboAddress& local)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: getSocklen
      Src: /src/pdns/pdns/dnsdistdist/iputils.cc:145,1
    - Dst: accept
      Src: /src/pdns/pdns/dnsdistdist/iputils.cc:147,1
    - Dst: reinterpret_cast<struct sockaddr*>
      Src: /src/pdns/pdns/dnsdistdist/iputils.cc:147,1
    - Dst: RuntimeError
      Src: /src/pdns/pdns/dnsdistdist/iputils.cc:149,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/iputils.cc:149,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - sockfd
    - ' remote'
    argTypes:
    - int
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 152
      start: 143
    functionDepth: 0
    functionLinenumber: 143
    functionLinenumberEnd: 152
    functionName: SAccept
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.cc
    functionUses: 5
    functionsReached:
    - accept
    - stringerror
    - RuntimeError
    - getSocklen
    - reinterpret_cast<struct sockaddr*>
    linkageType: ''
    returnType: int
    signature: int SAccept(int sockfd, ComboAddress& remote)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: listen
      Src: /src/pdns/pdns/dnsdistdist/iputils.cc:156,1
    - Dst: RuntimeError
      Src: /src/pdns/pdns/dnsdistdist/iputils.cc:158,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/iputils.cc:158,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - sockfd
    - limit
    argTypes:
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 161
      start: 154
    functionDepth: 0
    functionLinenumber: 154
    functionLinenumberEnd: 161
    functionName: SListen
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.cc
    functionUses: 2
    functionsReached:
    - RuntimeError
    - stringerror
    - listen
    linkageType: ''
    returnType: int
    signature: int SListen(int sockfd, int limit)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: setsockopt
      Src: /src/pdns/pdns/dnsdistdist/iputils.cc:165,1
    - Dst: RuntimeError
      Src: /src/pdns/pdns/dnsdistdist/iputils.cc:167,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/iputils.cc:167,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/iputils.cc:167,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/iputils.cc:167,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/iputils.cc:167,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 4
    argNames:
    - sockfd
    - level
    - opname
    - value
    argTypes:
    - int
    - int
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 170
      start: 163
    functionDepth: 0
    functionLinenumber: 163
    functionLinenumberEnd: 170
    functionName: SSetsockopt
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.cc
    functionUses: 13
    functionsReached:
    - RuntimeError
    - stringerror
    - std::to_string
    - setsockopt
    linkageType: ''
    returnType: int
    signature: int SSetsockopt(int sockfd, int level, int opname, int value)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SSetsockopt
      Src: /src/pdns/pdns/dnsdistdist/iputils.cc:182,1
    - Dst: SSetsockopt
      Src: /src/pdns/pdns/dnsdistdist/iputils.cc:191,1
    - Dst: SSetsockopt
      Src: /src/pdns/pdns/dnsdistdist/iputils.cc:202,1
    - Dst: SSetsockopt
      Src: /src/pdns/pdns/dnsdistdist/iputils.cc:211,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 2
    argNames:
    - sockfd
    - family
    argTypes:
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 214
      start: 172
    functionDepth: 0
    functionLinenumber: 172
    functionLinenumberEnd: 214
    functionName: setSocketIgnorePMTU
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.cc
    functionUses: 2
    functionsReached:
    - SSetsockopt
    linkageType: ''
    returnType: void
    signature: void setSocketIgnorePMTU([[maybe_unused]] int sockfd, [[maybe_unused]]
      int family)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SSetsockopt
      Src: /src/pdns/pdns/dnsdistdist/iputils.cc:221,1
    - Dst: SSetsockopt
      Src: /src/pdns/pdns/dnsdistdist/iputils.cc:224,1
    - Dst: SSetsockopt
      Src: /src/pdns/pdns/dnsdistdist/iputils.cc:230,1
    - Dst: SSetsockopt
      Src: /src/pdns/pdns/dnsdistdist/iputils.cc:233,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - sockfd
    - family
    argTypes:
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 236
      start: 216
    functionDepth: 0
    functionLinenumber: 216
    functionLinenumberEnd: 236
    functionName: setSocketForcePMTU
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.cc
    functionUses: 1
    functionsReached:
    - SSetsockopt
    linkageType: ''
    returnType: void
    signature: void setSocketForcePMTU([[maybe_unused]] int sockfd, [[maybe_unused]]
      int family)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SSetsockopt
      Src: /src/pdns/pdns/dnsdistdist/iputils.cc:242,1
    - Dst: SSetsockopt
      Src: /src/pdns/pdns/dnsdistdist/iputils.cc:250,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 1
    argNames:
    - sockfd
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 258
      start: 238
    functionDepth: 0
    functionLinenumber: 238
    functionLinenumberEnd: 258
    functionName: setReusePort
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.cc
    functionUses: 4
    functionsReached:
    - SSetsockopt
    linkageType: ''
    returnType: bool
    signature: bool setReusePort(int sockfd)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: CMSG_FIRSTHDR
      Src: /src/pdns/pdns/dnsdistdist/iputils.cc:265,1
    - Dst: CMSG_NXTHDR
      Src: /src/pdns/pdns/dnsdistdist/iputils.cc:265,1
    - Dst: CMSG_LEN
      Src: /src/pdns/pdns/dnsdistdist/iputils.cc:266,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/iputils.cc:267,1
    - Dst: CMSG_DATA
      Src: /src/pdns/pdns/dnsdistdist/iputils.cc:267,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 8
    argCount: 2
    argNames:
    - msgh
    - timeval
    argTypes:
    - struct msghdr*
    - struct timeval*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 273
      start: 260
    functionDepth: 0
    functionLinenumber: 260
    functionLinenumberEnd: 273
    functionName: HarvestTimestamp
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.cc
    functionUses: 1
    functionsReached:
    - memcpy
    - CMSG_FIRSTHDR
    - CMSG_DATA
    - CMSG_NXTHDR
    - CMSG_LEN
    linkageType: ''
    returnType: bool
    signature: bool HarvestTimestamp(struct msghdr* msgh, struct timeval* timeval)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ComboAddress*::reset
      Src: /src/pdns/pdns/dnsdistdist/iputils.cc:276,1
    - Dst: CMSG_FIRSTHDR
      Src: /src/pdns/pdns/dnsdistdist/iputils.cc:282,1
    - Dst: CMSG_NXTHDR
      Src: /src/pdns/pdns/dnsdistdist/iputils.cc:282,1
    - Dst: const_cast<struct msghdr*>
      Src: /src/pdns/pdns/dnsdistdist/iputils.cc:282,1
    - Dst: const_cast<struct cmsghdr*>
      Src: /src/pdns/pdns/dnsdistdist/iputils.cc:282,1
    - Dst: reinterpret_cast<const struct in_pktinfo*>
      Src: /src/pdns/pdns/dnsdistdist/iputils.cc:285,1
    - Dst: CMSG_DATA
      Src: /src/pdns/pdns/dnsdistdist/iputils.cc:285,1
    - Dst: reinterpret_cast<const struct in_addr*>
      Src: /src/pdns/pdns/dnsdistdist/iputils.cc:292,1
    - Dst: CMSG_DATA
      Src: /src/pdns/pdns/dnsdistdist/iputils.cc:292,1
    - Dst: reinterpret_cast<const struct in6_pktinfo*>
      Src: /src/pdns/pdns/dnsdistdist/iputils.cc:300,1
    - Dst: CMSG_DATA
      Src: /src/pdns/pdns/dnsdistdist/iputils.cc:300,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 20
    argCount: 2
    argNames:
    - msgh
    - destination
    argTypes:
    - struct msghdr*
    - ComboAddress*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 308
      start: 274
    functionDepth: 0
    functionLinenumber: 274
    functionLinenumberEnd: 308
    functionName: HarvestDestinationAddress
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.cc
    functionUses: 4
    functionsReached:
    - CMSG_FIRSTHDR
    - const_cast<struct msghdr*>
    - ComboAddress*::reset
    - reinterpret_cast<const struct in_pktinfo*>
    - CMSG_DATA
    - reinterpret_cast<const struct in6_pktinfo*>
    - reinterpret_cast<const struct in_addr*>
    - const_cast<struct cmsghdr*>
    - CMSG_NXTHDR
    linkageType: ''
    returnType: bool
    signature: bool HarvestDestinationAddress(const struct msghdr* msgh, ComboAddress*
      destination)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/pdns/pdns/dnsdistdist/iputils.cc:316,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - ' addr'
    argTypes:
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 319
      start: 310
    functionDepth: 0
    functionLinenumber: 310
    functionLinenumberEnd: 319
    functionName: IsAnyAddress
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.cc
    functionUses: 16
    functionsReached:
    - memcmp
    linkageType: ''
    returnType: bool
    signature: bool IsAnyAddress(const ComboAddress& addr)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: sendmsg
      Src: /src/pdns/pdns/dnsdistdist/iputils.cc:327,1
    - Dst: sendmsg
      Src: /src/pdns/pdns/dnsdistdist/iputils.cc:337,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 2
    argNames:
    - fileDesc
    - msgh
    argTypes:
    - int
    - struct msghdr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 342
      start: 321
    functionDepth: 0
    functionLinenumber: 321
    functionLinenumberEnd: 342
    functionName: sendOnNBSocket
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.cc
    functionUses: 1
    functionsReached:
    - sendmsg
    linkageType: ''
    returnType: int
    signature: int sendOnNBSocket(int fileDesc, const struct msghdr* msgh)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/pdns/pdns/dnsdistdist/iputils.cc:352,1
    - Dst: ComboAddress*::getSocklen
      Src: /src/pdns/pdns/dnsdistdist/iputils.cc:357,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 7
    argNames:
    - msgh
    - iov
    - cbuf
    - cbufsize
    - data
    - datalen
    - addr
    argTypes:
    - struct msghdr*
    - struct iovec*
    - cmsgbuf_aligned*
    - size_t
    - char*
    - size_t
    - ComboAddress*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 361
      start: 347
    functionDepth: 0
    functionLinenumber: 347
    functionLinenumberEnd: 361
    functionName: fillMSGHdr
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.cc
    functionUses: 10
    functionsReached:
    - memset
    - ComboAddress*::getSocklen
    linkageType: ''
    returnType: void
    signature: void fillMSGHdr(struct msghdr* msgh, struct iovec* iov, cmsgbuf_aligned*
      cbuf, size_t cbufsize, char* data, size_t datalen, ComboAddress* addr)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: reinterpret_cast<uint8_t*>
      Src: /src/pdns/pdns/dnsdistdist/iputils.cc:372,1
    - Dst: reinterpret_cast<uint8_t*>
      Src: /src/pdns/pdns/dnsdistdist/iputils.cc:379,1
    - Dst: memset
      Src: /src/pdns/pdns/dnsdistdist/iputils.cc:385,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 1
    argNames:
    - bits
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 393
      start: 364
    functionDepth: 0
    functionLinenumber: 364
    functionLinenumberEnd: 393
    functionName: ComboAddress::truncate
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.cc
    functionUses: 12
    functionsReached:
    - memset
    - reinterpret_cast<uint8_t*>
    linkageType: ''
    returnType: void
    signature: void ComboAddress::truncate(unsigned int bits) noexcept
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/pdns/pdns/dnsdistdist/iputils.cc:402,1
    - Dst: reinterpret_cast<void*>
      Src: /src/pdns/pdns/dnsdistdist/iputils.cc:407,1
    - Dst: const_cast<ComboAddress*>
      Src: /src/pdns/pdns/dnsdistdist/iputils.cc:407,1
    - Dst: ComboAddress*::getSocklen
      Src: /src/pdns/pdns/dnsdistdist/iputils.cc:408,1
    - Dst: addCMsgSrcAddr
      Src: /src/pdns/pdns/dnsdistdist/iputils.cc:418,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/dnsdistdist/iputils.cc:418,1
    - Dst: const_cast<void*>
      Src: /src/pdns/pdns/dnsdistdist/iputils.cc:422,1
    - Dst: sendmsg
      Src: /src/pdns/pdns/dnsdistdist/iputils.cc:441,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/dnsdistdist/iputils.cc:444,1
    - Dst: reinterpret_cast<void*>
      Src: /src/pdns/pdns/dnsdistdist/iputils.cc:457,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/dnsdistdist/iputils.cc:457,1
    - Dst: unixDie
      Src: /src/pdns/pdns/dnsdistdist/iputils.cc:472,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 47
    argCount: 7
    argNames:
    - socketDesc
    - buffer
    - len
    - dest
    - local
    - localItf
    - flags
    argTypes:
    - int
    - void*
    - size_t
    - ComboAddress*
    - ComboAddress*
    - unsigned int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 477
      start: 395
    functionDepth: 0
    functionLinenumber: 395
    functionLinenumberEnd: 477
    functionName: sendMsgWithOptions
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.cc
    functionUses: 7
    functionsReached:
    - reinterpret_cast<char*>
    - sendmsg
    - const_cast<ComboAddress*>
    - static_cast<size_t>
    - ComboAddress*::getSocklen
    - unixDie
    - memset
    - reinterpret_cast<void*>
    - const_cast<void*>
    - addCMsgSrcAddr
    - static_cast<int>
    linkageType: ''
    returnType: size_t
    signature: size_t sendMsgWithOptions(int socketDesc, const void* buffer, size_t
      len, const ComboAddress* dest, const ComboAddress* local, unsigned int localItf,
      int flags)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: recv
      Src: /src/pdns/pdns/dnsdistdist/iputils.cc:492,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 1
    argNames:
    - sock
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 516
      start: 485
    functionDepth: 0
    functionLinenumber: 485
    functionLinenumberEnd: 516
    functionName: isTCPSocketUsable
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.cc
    functionUses: 4
    functionsReached:
    - recv
    linkageType: ''
    returnType: bool
    signature: bool isTCPSocketUsable(int sock)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: splitField
      Src: /src/pdns/pdns/dnsdistdist/iputils.cc:527,1
    - Dst: substr
      Src: /src/pdns/pdns/dnsdistdist/iputils.cc:527,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/iputils.cc:528,1
    - Dst: auto::second::empty
      Src: /src/pdns/pdns/dnsdistdist/iputils.cc:528,1
    - Dst: pdns::checked_stoi<uint16_t>
      Src: /src/pdns/pdns/dnsdistdist/iputils.cc:528,1
    - Dst: auto::second::substr
      Src: /src/pdns/pdns/dnsdistdist/iputils.cc:528,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/iputils.cc:542,1
    - Dst: rfind
      Src: /src/pdns/pdns/dnsdistdist/iputils.cc:544,1
    - Dst: substr
      Src: /src/pdns/pdns/dnsdistdist/iputils.cc:546,1
    - Dst: substr
      Src: /src/pdns/pdns/dnsdistdist/iputils.cc:547,1
    - Dst: pdns::checked_stoi<uint16_t>
      Src: /src/pdns/pdns/dnsdistdist/iputils.cc:549,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/iputils.cc:550,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/dnsdistdist/iputils.cc:553,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 22
    argCount: 2
    argNames:
    - ' input'
    - port
    argTypes:
    - std::string
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 555
      start: 524
    functionDepth: 0
    functionLinenumber: 524
    functionLinenumberEnd: 555
    functionName: parseIPAndPort
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.cc
    functionUses: 2
    functionsReached:
    - splitField
    - auto::second::substr
    - auto::second::empty
    - pdns::checked_stoi<uint16_t>
    - substr
    - rfind
    - ComboAddress
    linkageType: ''
    returnType: ComboAddress
    signature: ComboAddress parseIPAndPort(const std::string& input, uint16_t port)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: getsockopt
      Src: /src/pdns/pdns/dnsdistdist/iputils.cc:562,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/iputils.cc:563,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/iputils.cc:563,1
    - Dst: setsockopt
      Src: /src/pdns/pdns/dnsdistdist/iputils.cc:568,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/iputils.cc:569,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/iputils.cc:569,1
    - Dst: stringerror
      Src: /src/pdns/pdns/dnsdistdist/iputils.cc:569,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 10
    argCount: 3
    argNames:
    - fileDesc
    - optname
    - size
    argTypes:
    - int
    - int
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 571
      start: 557
    functionDepth: 0
    functionLinenumber: 557
    functionLinenumberEnd: 571
    functionName: setSocketBuffer
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.cc
    functionUses: 3
    functionsReached:
    - getsockopt
    - std::to_string
    - std::runtime_error
    - stringerror
    - setsockopt
    linkageType: ''
    returnType: void
    signature: void setSocketBuffer(int fileDesc, int optname, uint32_t size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: setSocketBuffer
      Src: /src/pdns/pdns/dnsdistdist/iputils.cc:575,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - fileDesc
    - size
    argTypes:
    - int
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 576
      start: 573
    functionDepth: 0
    functionLinenumber: 573
    functionLinenumberEnd: 576
    functionName: setSocketReceiveBuffer
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.cc
    functionUses: 5
    functionsReached:
    - setSocketBuffer
    linkageType: ''
    returnType: void
    signature: void setSocketReceiveBuffer(int fileDesc, uint32_t size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: setSocketBuffer
      Src: /src/pdns/pdns/dnsdistdist/iputils.cc:580,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - fileDesc
    - size
    argTypes:
    - int
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 581
      start: 578
    functionDepth: 0
    functionLinenumber: 578
    functionLinenumberEnd: 581
    functionName: setSocketSendBuffer
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.cc
    functionUses: 5
    functionsReached:
    - setSocketBuffer
    linkageType: ''
    returnType: void
    signature: void setSocketSendBuffer(int fileDesc, uint32_t size)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: getline
      Src: /src/pdns/pdns/dnsdistdist/iputils.cc:589,1
    - Dst: pdns::checked_stoi<uint32_t>
      Src: /src/pdns/pdns/dnsdistdist/iputils.cc:590,1
    - Dst: setSocketBuffer
      Src: /src/pdns/pdns/dnsdistdist/iputils.cc:591,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - socket
    - optname
    - ' readMaxFromFile'
    argTypes:
    - int
    - int
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 596
      start: 584
    functionDepth: 0
    functionLinenumber: 584
    functionLinenumberEnd: 596
    functionName: raiseSocketBufferToMax
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.cc
    functionUses: 2
    functionsReached:
    - pdns::checked_stoi<uint32_t>
    - getline
    - setSocketBuffer
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t raiseSocketBufferToMax(int socket, int optname, const std::string&
      readMaxFromFile)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: raiseSocketBufferToMax
      Src: /src/pdns/pdns/dnsdistdist/iputils.cc:602,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - socket
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 606
      start: 599
    functionDepth: 0
    functionLinenumber: 599
    functionLinenumberEnd: 606
    functionName: raiseSocketReceiveBufferToMax
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.cc
    functionUses: 2
    functionsReached:
    - raiseSocketBufferToMax
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t raiseSocketReceiveBufferToMax([[maybe_unused]] int socket)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: raiseSocketBufferToMax
      Src: /src/pdns/pdns/dnsdistdist/iputils.cc:611,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - socket
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 615
      start: 608
    functionDepth: 0
    functionLinenumber: 608
    functionLinenumberEnd: 615
    functionName: raiseSocketSendBufferToMax
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.cc
    functionUses: 2
    functionsReached:
    - raiseSocketBufferToMax
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t raiseSocketSendBufferToMax([[maybe_unused]] int socket)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: getifaddrs
      Src: /src/pdns/pdns/dnsdistdist/iputils.cc:622,1
    - Dst: std::set::insert
      Src: /src/pdns/pdns/dnsdistdist/iputils.cc:630,1
    - Dst: freeifaddrs
      Src: /src/pdns/pdns/dnsdistdist/iputils.cc:633,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 636
      start: 617
    functionDepth: 1
    functionLinenumber: 617
    functionLinenumberEnd: 636
    functionName: getListOfNetworkInterfaces
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.cc
    functionUses: 2
    functionsReached:
    - freeifaddrs
    - getifaddrs
    - std::set::insert
    linkageType: ''
    returnType: std::set<std::string>
    signature: std::set<std::string> getListOfNetworkInterfaces()
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: getifaddrs
      Src: /src/pdns/pdns/dnsdistdist/iputils.cc:643,1
    - Dst: strcmp
      Src: /src/pdns/pdns/dnsdistdist/iputils.cc:648,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/iputils.cc:648,1
    - Dst: ComboAddress::setSockaddr
      Src: /src/pdns/pdns/dnsdistdist/iputils.cc:656,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/dnsdistdist/iputils.cc:662,1
    - Dst: freeifaddrs
      Src: /src/pdns/pdns/dnsdistdist/iputils.cc:665,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 20
    argCount: 1
    argNames:
    - ' itf'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 667
      start: 639
    functionDepth: 0
    functionLinenumber: 639
    functionLinenumberEnd: 667
    functionName: getListOfAddressesOfNetworkInterface
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.cc
    functionUses: 2
    functionsReached:
    - std::vector::push_back
    - getifaddrs
    - freeifaddrs
    - strcmp
    - ComboAddress::setSockaddr
    - c_str
    linkageType: ''
    returnType: std::vector<ComboAddress>
    signature: std::vector<ComboAddress> getListOfAddressesOfNetworkInterface(const
      std::string& itf)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 673
      start: 669
    functionDepth: 0
    functionLinenumber: 669
    functionLinenumberEnd: 673
    functionName: getListOfAddressesOfNetworkInterface
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.cc
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: std::vector<ComboAddress>
    signature: std::vector<ComboAddress> getListOfAddressesOfNetworkInterface(const
      std::string& /* itf */)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/iputils.cc:680,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 2
    argNames:
    - mask
    - len
    argTypes:
    - uint8_t*
    - socklen_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 694
      start: 677
    functionDepth: 0
    functionLinenumber: 677
    functionLinenumberEnd: 694
    functionName: convertNetmaskToBits
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.cc
    functionUses: 1
    functionsReached:
    - std::runtime_error
    linkageType: ''
    returnType: uint8_t
    signature: uint8_t convertNetmaskToBits(const uint8_t* mask, socklen_t len)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: getifaddrs
      Src: /src/pdns/pdns/dnsdistdist/iputils.cc:702,1
    - Dst: strcmp
      Src: /src/pdns/pdns/dnsdistdist/iputils.cc:707,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/iputils.cc:707,1
    - Dst: ComboAddress::setSockaddr
      Src: /src/pdns/pdns/dnsdistdist/iputils.cc:719,1
    - Dst: reinterpret_cast<const struct sockaddr_in*>
      Src: /src/pdns/pdns/dnsdistdist/iputils.cc:727,1
    - Dst: convertNetmaskToBits
      Src: /src/pdns/pdns/dnsdistdist/iputils.cc:728,1
    - Dst: reinterpret_cast<const uint8_t*>
      Src: /src/pdns/pdns/dnsdistdist/iputils.cc:728,1
    - Dst: std::vector::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/iputils.cc:729,1
    - Dst: reinterpret_cast<const struct sockaddr_in6*>
      Src: /src/pdns/pdns/dnsdistdist/iputils.cc:732,1
    - Dst: convertNetmaskToBits
      Src: /src/pdns/pdns/dnsdistdist/iputils.cc:733,1
    - Dst: reinterpret_cast<const uint8_t*>
      Src: /src/pdns/pdns/dnsdistdist/iputils.cc:733,1
    - Dst: std::vector::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/iputils.cc:734,1
    - Dst: freeifaddrs
      Src: /src/pdns/pdns/dnsdistdist/iputils.cc:739,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 28
    argCount: 1
    argNames:
    - ' itf'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 741
      start: 698
    functionDepth: 0
    functionLinenumber: 698
    functionLinenumberEnd: 741
    functionName: getListOfRangesOfNetworkInterface
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.cc
    functionUses: 1
    functionsReached:
    - convertNetmaskToBits
    - getifaddrs
    - reinterpret_cast<const uint8_t*>
    - freeifaddrs
    - reinterpret_cast<const struct sockaddr_in*>
    - strcmp
    - std::vector::emplace_back
    - ComboAddress::setSockaddr
    - c_str
    - reinterpret_cast<const struct sockaddr_in6*>
    linkageType: ''
    returnType: std::vector<Netmask>
    signature: std::vector<Netmask> getListOfRangesOfNetworkInterface(const std::string&
      itf)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 747
      start: 743
    functionDepth: 0
    functionLinenumber: 743
    functionLinenumberEnd: 747
    functionName: getListOfRangesOfNetworkInterface
    functionSourceFile: /src/pdns/pdns/dnsdistdist/iputils.cc
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: std::vector<Netmask>
    signature: std::vector<Netmask> getListOfRangesOfNetworkInterface(const std::string&
      /* itf */)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: XskSocket::getFrameSize
      Src: /src/pdns/pdns/dnsdistdist/fuzz_xsk.cc:30,1
    - Dst: XskPacket::parse
      Src: /src/pdns/pdns/dnsdistdist/fuzz_xsk.cc:37,1
    - Dst: XskPacket::getToAddr
      Src: /src/pdns/pdns/dnsdistdist/fuzz_xsk.cc:38,1
    - Dst: XskPacket::getFromAddr
      Src: /src/pdns/pdns/dnsdistdist/fuzz_xsk.cc:39,1
    - Dst: XskPacket::getPayloadData
      Src: /src/pdns/pdns/dnsdistdist/fuzz_xsk.cc:40,1
    - Dst: XskPacket::getCapacity
      Src: /src/pdns/pdns/dnsdistdist/fuzz_xsk.cc:41,1
    - Dst: XskPacket::getDataLen
      Src: /src/pdns/pdns/dnsdistdist/fuzz_xsk.cc:42,1
    - Dst: XskPacket::getFrameLen
      Src: /src/pdns/pdns/dnsdistdist/fuzz_xsk.cc:43,1
    - Dst: XskPacket::cloneHeaderToPacketBuffer
      Src: /src/pdns/pdns/dnsdistdist/fuzz_xsk.cc:44,1
    - Dst: XskPacket::clonePacketBuffer
      Src: /src/pdns/pdns/dnsdistdist/fuzz_xsk.cc:45,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 2
    argNames:
    - data
    - size
    argTypes:
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 27
    functionDepth: 4
    functionLinenumber: 27
    functionLinenumberEnd: 58
    functionName: LLVMFuzzerTestOneInput
    functionSourceFile: /src/pdns/pdns/dnsdistdist/fuzz_xsk.cc
    functionUses: 2
    functionsReached:
    - XskPacket::getPayloadData
    - XskPacket::clonePacketBuffer
    - XskPacket::getDataLen
    - XskPacket::parse
    - XskSocket::getFrameSize
    - XskPacket::getToAddr
    - XskPacket::getFromAddr
    - XskPacket::getFrameLen
    - XskPacket::cloneHeaderToPacketBuffer
    - XskPacket::getCapacity
    linkageType: ''
    returnType: int
    signature: int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BN_new
      Src: /src/pdns/pdns/dnsdistdist/meson/libcrypto/bn_new.cc:5,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7
      start: 3
    functionDepth: 0
    functionLinenumber: 3
    functionLinenumberEnd: 7
    functionName: main
    functionSourceFile: /src/pdns/pdns/dnsdistdist/meson/libcrypto/bn_new.cc
    functionUses: 37
    functionsReached:
    - BN_new
    linkageType: ''
    returnType: int
    signature: int main()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - OP
    - ','
    - DST
    - ','
    - SRC
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 24
      start: 17
    functionDepth: 0
    functionLinenumber: 17
    functionLinenumberEnd: 24
    functionName: BPF_ALU64_REG
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/libbpf/libbpf.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BPF_ALU64_REG(OP, DST, SRC)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - OP
    - ','
    - DST
    - ','
    - SRC
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 32
      start: 25
    functionDepth: 0
    functionLinenumber: 25
    functionLinenumberEnd: 32
    functionName: BPF_ALU32_REG
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/libbpf/libbpf.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BPF_ALU32_REG(OP, DST, SRC)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - OP
    - ','
    - DST
    - ','
    - IMM
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 35
    functionDepth: 0
    functionLinenumber: 35
    functionLinenumberEnd: 42
    functionName: BPF_ALU64_IMM
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/libbpf/libbpf.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BPF_ALU64_IMM(OP, DST, IMM)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - OP
    - ','
    - DST
    - ','
    - IMM
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 50
    functionName: BPF_ALU32_IMM
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/libbpf/libbpf.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BPF_ALU32_IMM(OP, DST, IMM)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - DST
    - ','
    - SRC
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 53
    functionDepth: 0
    functionLinenumber: 53
    functionLinenumberEnd: 60
    functionName: BPF_MOV64_REG
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/libbpf/libbpf.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BPF_MOV64_REG(DST, SRC)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - DST
    - ','
    - SRC
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 61
    functionDepth: 0
    functionLinenumber: 61
    functionLinenumberEnd: 68
    functionName: BPF_MOV32_REG
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/libbpf/libbpf.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BPF_MOV32_REG(DST, SRC)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - DST
    - ','
    - IMM
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 71
    functionDepth: 0
    functionLinenumber: 71
    functionLinenumberEnd: 78
    functionName: BPF_MOV64_IMM
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/libbpf/libbpf.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BPF_MOV64_IMM(DST, IMM)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - DST
    - ','
    - IMM
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 80
    functionDepth: 0
    functionLinenumber: 80
    functionLinenumberEnd: 82
    functionName: BPF_LD_IMM64
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/libbpf/libbpf.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BPF_LD_IMM64(DST, IMM)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - DST
    - ','
    - MAP_FD
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 104
      start: 102
    functionDepth: 0
    functionLinenumber: 102
    functionLinenumberEnd: 104
    functionName: BPF_LD_MAP_FD
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/libbpf/libbpf.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BPF_LD_MAP_FD(DST, MAP_FD)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - SIZE
    - ','
    - IMM
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 115
      start: 108
    functionDepth: 0
    functionLinenumber: 108
    functionLinenumberEnd: 115
    functionName: BPF_LD_ABS
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/libbpf/libbpf.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BPF_LD_ABS(SIZE, IMM)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - SIZE
    - ','
    - DST
    - ','
    - SRC
    - ','
    - 'OFF'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 125
      start: 118
    functionDepth: 0
    functionLinenumber: 118
    functionLinenumberEnd: 125
    functionName: BPF_LDX_MEM
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/libbpf/libbpf.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BPF_LDX_MEM(SIZE, DST, SRC, OFF)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - SIZE
    - ','
    - DST
    - ','
    - SRC
    - ','
    - 'OFF'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 135
      start: 128
    functionDepth: 0
    functionLinenumber: 128
    functionLinenumberEnd: 135
    functionName: BPF_STX_MEM
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/libbpf/libbpf.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BPF_STX_MEM(SIZE, DST, SRC, OFF)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - SIZE
    - ','
    - DST
    - ','
    - 'OFF'
    - ','
    - IMM
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 145
      start: 138
    functionDepth: 0
    functionLinenumber: 138
    functionLinenumberEnd: 145
    functionName: BPF_ST_MEM
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/libbpf/libbpf.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BPF_ST_MEM(SIZE, DST, OFF, IMM)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - OP
    - ','
    - DST
    - ','
    - SRC
    - ','
    - 'OFF'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 148
    functionDepth: 0
    functionLinenumber: 148
    functionLinenumberEnd: 155
    functionName: BPF_JMP_REG
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/libbpf/libbpf.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BPF_JMP_REG(OP, DST, SRC, OFF)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - OP
    - ','
    - DST
    - ','
    - IMM
    - ','
    - 'OFF'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 165
      start: 158
    functionDepth: 0
    functionLinenumber: 158
    functionLinenumberEnd: 165
    functionName: BPF_JMP_IMM
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/libbpf/libbpf.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BPF_JMP_IMM(OP, DST, IMM, OFF)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 11
    argNames:
    - (
    - CODE
    - ','
    - DST
    - ','
    - SRC
    - ','
    - 'OFF'
    - ','
    - IMM
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 175
      start: 168
    functionDepth: 0
    functionLinenumber: 168
    functionLinenumberEnd: 175
    functionName: BPF_RAW_INSN
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/libbpf/libbpf.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BPF_RAW_INSN(CODE, DST, SRC, OFF, IMM)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 185
      start: 178
    functionDepth: 0
    functionLinenumber: 178
    functionLinenumberEnd: 185
    functionName: BPF_EXIT_INSN
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/libbpf/libbpf.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BPF_EXIT_INSN()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2
      start: 1
    functionDepth: 0
    functionLinenumber: 1
    functionLinenumberEnd: 2
    functionName: fatal
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/arc4random/log.h
    functionUses: 14
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: fatal(...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - v
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 20
      start: 19
    functionDepth: 0
    functionLinenumber: 19
    functionLinenumberEnd: 20
    functionName: U8C
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/arc4random/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: 21
      start: 20
    functionDepth: 0
    functionLinenumber: 20
    functionLinenumberEnd: 21
    functionName: U32C
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/arc4random/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: 23
      start: 22
    functionDepth: 0
    functionLinenumber: 22
    functionLinenumberEnd: 23
    functionName: U8V
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/arc4random/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: 24
      start: 23
    functionDepth: 0
    functionLinenumber: 23
    functionLinenumberEnd: 24
    functionName: U32V
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/arc4random/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: 27
      start: 25
    functionDepth: 0
    functionLinenumber: 25
    functionLinenumberEnd: 27
    functionName: ROTL32
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/arc4random/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: 33
      start: 28
    functionDepth: 0
    functionLinenumber: 28
    functionLinenumberEnd: 33
    functionName: U8TO32_LITTLE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/arc4random/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: 41
      start: 34
    functionDepth: 0
    functionLinenumber: 34
    functionLinenumberEnd: 41
    functionName: U32TO8_LITTLE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/arc4random/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: 43
      start: 42
    functionDepth: 0
    functionLinenumber: 42
    functionLinenumberEnd: 43
    functionName: ROTATE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/arc4random/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: 44
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 44
    functionName: XOR
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/arc4random/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: 45
      start: 44
    functionDepth: 0
    functionLinenumber: 44
    functionLinenumberEnd: 45
    functionName: PLUS
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/arc4random/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: 46
      start: 45
    functionDepth: 0
    functionLinenumber: 45
    functionLinenumberEnd: 46
    functionName: PLUSONE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/arc4random/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: 52
      start: 47
    functionDepth: 0
    functionLinenumber: 47
    functionLinenumberEnd: 52
    functionName: QUARTERROUND
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/arc4random/chacha_private.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: QUARTERROUND(a,b,c,d)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: U8TO32_LITTLE
      Src: /src/pdns/pdns/dnsdistdist/ext/arc4random/chacha_private.h:61,1
    - Dst: U8TO32_LITTLE
      Src: /src/pdns/pdns/dnsdistdist/ext/arc4random/chacha_private.h:62,1
    - Dst: U8TO32_LITTLE
      Src: /src/pdns/pdns/dnsdistdist/ext/arc4random/chacha_private.h:63,1
    - Dst: U8TO32_LITTLE
      Src: /src/pdns/pdns/dnsdistdist/ext/arc4random/chacha_private.h:64,1
    - Dst: U8TO32_LITTLE
      Src: /src/pdns/pdns/dnsdistdist/ext/arc4random/chacha_private.h:71,1
    - Dst: U8TO32_LITTLE
      Src: /src/pdns/pdns/dnsdistdist/ext/arc4random/chacha_private.h:72,1
    - Dst: U8TO32_LITTLE
      Src: /src/pdns/pdns/dnsdistdist/ext/arc4random/chacha_private.h:73,1
    - Dst: U8TO32_LITTLE
      Src: /src/pdns/pdns/dnsdistdist/ext/arc4random/chacha_private.h:74,1
    - Dst: U8TO32_LITTLE
      Src: /src/pdns/pdns/dnsdistdist/ext/arc4random/chacha_private.h:75,1
    - Dst: U8TO32_LITTLE
      Src: /src/pdns/pdns/dnsdistdist/ext/arc4random/chacha_private.h:76,1
    - Dst: U8TO32_LITTLE
      Src: /src/pdns/pdns/dnsdistdist/ext/arc4random/chacha_private.h:77,1
    - Dst: U8TO32_LITTLE
      Src: /src/pdns/pdns/dnsdistdist/ext/arc4random/chacha_private.h:78,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 19
    argCount: 3
    argNames:
    - x
    - k
    - kbits
    argTypes:
    - chacha_ctx*
    - u8*
    - u32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 56
    functionDepth: 0
    functionLinenumber: 56
    functionLinenumberEnd: 79
    functionName: chacha_keysetup
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/arc4random/chacha_private.h
    functionUses: 0
    functionsReached:
    - U8TO32_LITTLE
    linkageType: ''
    returnType: void
    signature: void chacha_keysetup(chacha_ctx *x,const u8 *k,u32 kbits)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: U8TO32_LITTLE
      Src: /src/pdns/pdns/dnsdistdist/ext/arc4random/chacha_private.h:86,1
    - Dst: U8TO32_LITTLE
      Src: /src/pdns/pdns/dnsdistdist/ext/arc4random/chacha_private.h:87,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - x
    - iv
    argTypes:
    - chacha_ctx*
    - u8*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 81
    functionDepth: 0
    functionLinenumber: 81
    functionLinenumberEnd: 88
    functionName: chacha_ivsetup
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/arc4random/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/pdns/pdns/dnsdistdist/ext/arc4random/chacha_private.h:142,1
    - Dst: QUARTERROUND
      Src: /src/pdns/pdns/dnsdistdist/ext/arc4random/chacha_private.h:143,1
    - Dst: QUARTERROUND
      Src: /src/pdns/pdns/dnsdistdist/ext/arc4random/chacha_private.h:144,1
    - Dst: QUARTERROUND
      Src: /src/pdns/pdns/dnsdistdist/ext/arc4random/chacha_private.h:145,1
    - Dst: QUARTERROUND
      Src: /src/pdns/pdns/dnsdistdist/ext/arc4random/chacha_private.h:146,1
    - Dst: QUARTERROUND
      Src: /src/pdns/pdns/dnsdistdist/ext/arc4random/chacha_private.h:147,1
    - Dst: QUARTERROUND
      Src: /src/pdns/pdns/dnsdistdist/ext/arc4random/chacha_private.h:148,1
    - Dst: QUARTERROUND
      Src: /src/pdns/pdns/dnsdistdist/ext/arc4random/chacha_private.h:149,1
    - Dst: PLUS
      Src: /src/pdns/pdns/dnsdistdist/ext/arc4random/chacha_private.h:151,1
    - Dst: PLUS
      Src: /src/pdns/pdns/dnsdistdist/ext/arc4random/chacha_private.h:152,1
    - Dst: PLUS
      Src: /src/pdns/pdns/dnsdistdist/ext/arc4random/chacha_private.h:153,1
    - Dst: PLUS
      Src: /src/pdns/pdns/dnsdistdist/ext/arc4random/chacha_private.h:154,1
    - Dst: PLUS
      Src: /src/pdns/pdns/dnsdistdist/ext/arc4random/chacha_private.h:155,1
    - Dst: PLUS
      Src: /src/pdns/pdns/dnsdistdist/ext/arc4random/chacha_private.h:156,1
    - Dst: PLUS
      Src: /src/pdns/pdns/dnsdistdist/ext/arc4random/chacha_private.h:157,1
    - Dst: PLUS
      Src: /src/pdns/pdns/dnsdistdist/ext/arc4random/chacha_private.h:158,1
    - Dst: PLUS
      Src: /src/pdns/pdns/dnsdistdist/ext/arc4random/chacha_private.h:159,1
    - Dst: PLUS
      Src: /src/pdns/pdns/dnsdistdist/ext/arc4random/chacha_private.h:160,1
    - Dst: PLUS
      Src: /src/pdns/pdns/dnsdistdist/ext/arc4random/chacha_private.h:161,1
    - Dst: PLUS
      Src: /src/pdns/pdns/dnsdistdist/ext/arc4random/chacha_private.h:162,1
    - Dst: PLUS
      Src: /src/pdns/pdns/dnsdistdist/ext/arc4random/chacha_private.h:163,1
    - Dst: PLUS
      Src: /src/pdns/pdns/dnsdistdist/ext/arc4random/chacha_private.h:164,1
    - Dst: PLUS
      Src: /src/pdns/pdns/dnsdistdist/ext/arc4random/chacha_private.h:165,1
    - Dst: PLUS
      Src: /src/pdns/pdns/dnsdistdist/ext/arc4random/chacha_private.h:166,1
    - Dst: XOR
      Src: /src/pdns/pdns/dnsdistdist/ext/arc4random/chacha_private.h:169,1
    - Dst: U8TO32_LITTLE
      Src: /src/pdns/pdns/dnsdistdist/ext/arc4random/chacha_private.h:169,1
    - Dst: XOR
      Src: /src/pdns/pdns/dnsdistdist/ext/arc4random/chacha_private.h:170,1
    - Dst: U8TO32_LITTLE
      Src: /src/pdns/pdns/dnsdistdist/ext/arc4random/chacha_private.h:170,1
    - Dst: XOR
      Src: /src/pdns/pdns/dnsdistdist/ext/arc4random/chacha_private.h:171,1
    - Dst: U8TO32_LITTLE
      Src: /src/pdns/pdns/dnsdistdist/ext/arc4random/chacha_private.h:171,1
    - Dst: XOR
      Src: /src/pdns/pdns/dnsdistdist/ext/arc4random/chacha_private.h:172,1
    - Dst: U8TO32_LITTLE
      Src: /src/pdns/pdns/dnsdistdist/ext/arc4random/chacha_private.h:172,1
    - Dst: XOR
      Src: /src/pdns/pdns/dnsdistdist/ext/arc4random/chacha_private.h:173,1
    - Dst: U8TO32_LITTLE
      Src: /src/pdns/pdns/dnsdistdist/ext/arc4random/chacha_private.h:173,1
    - Dst: XOR
      Src: /src/pdns/pdns/dnsdistdist/ext/arc4random/chacha_private.h:174,1
    - Dst: U8TO32_LITTLE
      Src: /src/pdns/pdns/dnsdistdist/ext/arc4random/chacha_private.h:174,1
    - Dst: XOR
      Src: /src/pdns/pdns/dnsdistdist/ext/arc4random/chacha_private.h:175,1
    - Dst: U8TO32_LITTLE
      Src: /src/pdns/pdns/dnsdistdist/ext/arc4random/chacha_private.h:175,1
    - Dst: XOR
      Src: /src/pdns/pdns/dnsdistdist/ext/arc4random/chacha_private.h:176,1
    - Dst: U8TO32_LITTLE
      Src: /src/pdns/pdns/dnsdistdist/ext/arc4random/chacha_private.h:176,1
    - Dst: XOR
      Src: /src/pdns/pdns/dnsdistdist/ext/arc4random/chacha_private.h:177,1
    - Dst: U8TO32_LITTLE
      Src: /src/pdns/pdns/dnsdistdist/ext/arc4random/chacha_private.h:177,1
    - Dst: XOR
      Src: /src/pdns/pdns/dnsdistdist/ext/arc4random/chacha_private.h:178,1
    - Dst: U8TO32_LITTLE
      Src: /src/pdns/pdns/dnsdistdist/ext/arc4random/chacha_private.h:178,1
    - Dst: XOR
      Src: /src/pdns/pdns/dnsdistdist/ext/arc4random/chacha_private.h:179,1
    - Dst: U8TO32_LITTLE
      Src: /src/pdns/pdns/dnsdistdist/ext/arc4random/chacha_private.h:179,1
    - Dst: XOR
      Src: /src/pdns/pdns/dnsdistdist/ext/arc4random/chacha_private.h:180,1
    - Dst: U8TO32_LITTLE
      Src: /src/pdns/pdns/dnsdistdist/ext/arc4random/chacha_private.h:180,1
    - Dst: XOR
      Src: /src/pdns/pdns/dnsdistdist/ext/arc4random/chacha_private.h:181,1
    - Dst: U8TO32_LITTLE
      Src: /src/pdns/pdns/dnsdistdist/ext/arc4random/chacha_private.h:181,1
    - Dst: XOR
      Src: /src/pdns/pdns/dnsdistdist/ext/arc4random/chacha_private.h:182,1
    - Dst: U8TO32_LITTLE
      Src: /src/pdns/pdns/dnsdistdist/ext/arc4random/chacha_private.h:182,1
    - Dst: XOR
      Src: /src/pdns/pdns/dnsdistdist/ext/arc4random/chacha_private.h:183,1
    - Dst: U8TO32_LITTLE
      Src: /src/pdns/pdns/dnsdistdist/ext/arc4random/chacha_private.h:183,1
    - Dst: XOR
      Src: /src/pdns/pdns/dnsdistdist/ext/arc4random/chacha_private.h:184,1
    - Dst: U8TO32_LITTLE
      Src: /src/pdns/pdns/dnsdistdist/ext/arc4random/chacha_private.h:184,1
    - Dst: PLUSONE
      Src: /src/pdns/pdns/dnsdistdist/ext/arc4random/chacha_private.h:187,1
    - Dst: PLUSONE
      Src: /src/pdns/pdns/dnsdistdist/ext/arc4random/chacha_private.h:189,1
    - Dst: U32TO8_LITTLE
      Src: /src/pdns/pdns/dnsdistdist/ext/arc4random/chacha_private.h:193,1
    - Dst: U32TO8_LITTLE
      Src: /src/pdns/pdns/dnsdistdist/ext/arc4random/chacha_private.h:194,1
    - Dst: U32TO8_LITTLE
      Src: /src/pdns/pdns/dnsdistdist/ext/arc4random/chacha_private.h:195,1
    - Dst: U32TO8_LITTLE
      Src: /src/pdns/pdns/dnsdistdist/ext/arc4random/chacha_private.h:196,1
    - Dst: U32TO8_LITTLE
      Src: /src/pdns/pdns/dnsdistdist/ext/arc4random/chacha_private.h:197,1
    - Dst: U32TO8_LITTLE
      Src: /src/pdns/pdns/dnsdistdist/ext/arc4random/chacha_private.h:198,1
    - Dst: U32TO8_LITTLE
      Src: /src/pdns/pdns/dnsdistdist/ext/arc4random/chacha_private.h:199,1
    - Dst: U32TO8_LITTLE
      Src: /src/pdns/pdns/dnsdistdist/ext/arc4random/chacha_private.h:200,1
    - Dst: U32TO8_LITTLE
      Src: /src/pdns/pdns/dnsdistdist/ext/arc4random/chacha_private.h:201,1
    - Dst: U32TO8_LITTLE
      Src: /src/pdns/pdns/dnsdistdist/ext/arc4random/chacha_private.h:202,1
    - Dst: U32TO8_LITTLE
      Src: /src/pdns/pdns/dnsdistdist/ext/arc4random/chacha_private.h:203,1
    - Dst: U32TO8_LITTLE
      Src: /src/pdns/pdns/dnsdistdist/ext/arc4random/chacha_private.h:204,1
    - Dst: U32TO8_LITTLE
      Src: /src/pdns/pdns/dnsdistdist/ext/arc4random/chacha_private.h:205,1
    - Dst: U32TO8_LITTLE
      Src: /src/pdns/pdns/dnsdistdist/ext/arc4random/chacha_private.h:206,1
    - Dst: U32TO8_LITTLE
      Src: /src/pdns/pdns/dnsdistdist/ext/arc4random/chacha_private.h:207,1
    - Dst: U32TO8_LITTLE
      Src: /src/pdns/pdns/dnsdistdist/ext/arc4random/chacha_private.h:208,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: 224
      start: 90
    functionDepth: 0
    functionLinenumber: 90
    functionLinenumberEnd: 224
    functionName: chacha_encrypt_bytes
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/arc4random/chacha_private.h
    functionUses: 0
    functionsReached:
    - PLUS
    - U8TO32_LITTLE
    - XOR
    - PLUSONE
    - U32TO8_LITTLE
    - QUARTERROUND
    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:
    - (
    - a
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13
      start: 12
    functionDepth: 0
    functionLinenumber: 12
    functionLinenumberEnd: 13
    functionName: seed_from_prngd
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/arc4random/includes.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: seed_from_prngd(a, b)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: arc4random
      Src: /src/pdns/pdns/dnsdistdist/ext/arc4random/arc4random_uniform.c:57,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 1
    argNames:
    - upper_bound
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 39
    functionDepth: 0
    functionLinenumber: 39
    functionLinenumberEnd: 63
    functionName: arc4random_uniform
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/arc4random/arc4random_uniform.c
    functionUses: 2
    functionsReached:
    - arc4random
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t arc4random_uniform(uint32_t upper_bound)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: RAND_bytes
      Src: /src/pdns/pdns/dnsdistdist/ext/arc4random/bsd-getentropy.c:45,1
    - Dst: fatal
      Src: /src/pdns/pdns/dnsdistdist/ext/arc4random/bsd-getentropy.c:46,1
    - Dst: ERR_get_error
      Src: /src/pdns/pdns/dnsdistdist/ext/arc4random/bsd-getentropy.c:47,1
    - Dst: getentropy
      Src: /src/pdns/pdns/dnsdistdist/ext/arc4random/bsd-getentropy.c:54,1
    - Dst: getrandom
      Src: /src/pdns/pdns/dnsdistdist/ext/arc4random/bsd-getentropy.c:58,1
    - Dst: open
      Src: /src/pdns/pdns/dnsdistdist/ext/arc4random/bsd-getentropy.c:62,1
    - Dst: seed_from_prngd
      Src: /src/pdns/pdns/dnsdistdist/ext/arc4random/bsd-getentropy.c:65,1
    - Dst: fatal
      Src: /src/pdns/pdns/dnsdistdist/ext/arc4random/bsd-getentropy.c:67,1
    - Dst: strerror
      Src: /src/pdns/pdns/dnsdistdist/ext/arc4random/bsd-getentropy.c:68,1
    - Dst: read
      Src: /src/pdns/pdns/dnsdistdist/ext/arc4random/bsd-getentropy.c:71,1
    - Dst: fatal
      Src: /src/pdns/pdns/dnsdistdist/ext/arc4random/bsd-getentropy.c:76,1
    - Dst: strerror
      Src: /src/pdns/pdns/dnsdistdist/ext/arc4random/bsd-getentropy.c:76,1
    - Dst: close
      Src: /src/pdns/pdns/dnsdistdist/ext/arc4random/bsd-getentropy.c:80,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 24
    argCount: 2
    argNames:
    - s
    - len
    argTypes:
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 41
    functionDepth: 0
    functionLinenumber: 41
    functionLinenumberEnd: 83
    functionName: _ssh_compat_getentropy
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/arc4random/bsd-getentropy.c
    functionUses: 0
    functionsReached:
    - fatal
    - ERR_get_error
    - RAND_bytes
    - getrandom
    - read
    - open
    - getentropy
    - seed_from_prngd
    - strerror
    - close
    linkageType: ''
    returnType: int
    signature: int _ssh_compat_getentropy(void *s, size_t len)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: explicit_memset
      Src: /src/pdns/pdns/dnsdistdist/ext/arc4random/explicit_bzero.c:23,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - p
    - n
    argTypes:
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 24
      start: 20
    functionDepth: 0
    functionLinenumber: 20
    functionLinenumberEnd: 24
    functionName: explicit_bzero
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/arc4random/explicit_bzero.c
    functionUses: 2
    functionsReached:
    - explicit_memset
    linkageType: ''
    returnType: void
    signature: void explicit_bzero(void *p, size_t n)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memset_s
      Src: /src/pdns/pdns/dnsdistdist/ext/arc4random/explicit_bzero.c:33,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - p
    - n
    argTypes:
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 34
      start: 28
    functionDepth: 0
    functionLinenumber: 28
    functionLinenumberEnd: 34
    functionName: explicit_bzero
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/arc4random/explicit_bzero.c
    functionUses: 2
    functionsReached:
    - memset_s
    linkageType: ''
    returnType: void
    signature: void explicit_bzero(void *p, size_t n)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: __has_feature
      Src: /src/pdns/pdns/dnsdistdist/ext/arc4random/explicit_bzero.c:55,1
    - Dst: memset
      Src: /src/pdns/pdns/dnsdistdist/ext/arc4random/explicit_bzero.c:56,1
    - Dst: ssh_bzero
      Src: /src/pdns/pdns/dnsdistdist/ext/arc4random/explicit_bzero.c:60,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - p
    - n
    argTypes:
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 44
    functionDepth: 0
    functionLinenumber: 44
    functionLinenumberEnd: 61
    functionName: explicit_bzero
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/arc4random/explicit_bzero.c
    functionUses: 2
    functionsReached:
    - memset
    - __has_feature
    - ssh_bzero
    linkageType: ''
    returnType: void
    signature: void explicit_bzero(void *p, size_t n)
  - 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: 55
      start: 54
    functionDepth: 0
    functionLinenumber: 54
    functionLinenumberEnd: 55
    functionName: getentropy
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/arc4random/arc4random.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: getentropy(x, y)
  - 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: 62
      start: 61
    functionDepth: 0
    functionLinenumber: 61
    functionLinenumberEnd: 62
    functionName: minimum
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/arc4random/arc4random.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: minimum(a, b)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: _rs_allocate
      Src: /src/pdns/pdns/dnsdistdist/ext/arc4random/arc4random.c:101,1
    - Dst: _exit
      Src: /src/pdns/pdns/dnsdistdist/ext/arc4random/arc4random.c:102,1
    - Dst: chacha_keysetup
      Src: /src/pdns/pdns/dnsdistdist/ext/arc4random/arc4random.c:105,1
    - Dst: chacha_ivsetup
      Src: /src/pdns/pdns/dnsdistdist/ext/arc4random/arc4random.c:106,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - buf
    - n
    argTypes:
    - u_char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 107
      start: 94
    functionDepth: 0
    functionLinenumber: 94
    functionLinenumberEnd: 107
    functionName: _rs_init
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/arc4random/arc4random.c
    functionUses: 0
    functionsReached:
    - chacha_keysetup
    - chacha_ivsetup
    - _exit
    - _rs_allocate
    linkageType: ''
    returnType: void
    signature: void _rs_init(u_char *buf, size_t n)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: getentropy
      Src: /src/pdns/pdns/dnsdistdist/ext/arc4random/arc4random.c:115,1
    - Dst: _getentropy_fail
      Src: /src/pdns/pdns/dnsdistdist/ext/arc4random/arc4random.c:116,1
    - Dst: _rs_init
      Src: /src/pdns/pdns/dnsdistdist/ext/arc4random/arc4random.c:119,1
    - Dst: _rs_rekey
      Src: /src/pdns/pdns/dnsdistdist/ext/arc4random/arc4random.c:121,1
    - Dst: explicit_bzero
      Src: /src/pdns/pdns/dnsdistdist/ext/arc4random/arc4random.c:122,1
    - Dst: memset
      Src: /src/pdns/pdns/dnsdistdist/ext/arc4random/arc4random.c:126,1
    - Dst: chacha_encrypt_bytes
      Src: /src/pdns/pdns/dnsdistdist/ext/arc4random/arc4random.c:129,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 132
      start: 109
    functionDepth: 0
    functionLinenumber: 109
    functionLinenumberEnd: 132
    functionName: _rs_stir
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/arc4random/arc4random.c
    functionUses: 0
    functionsReached:
    - chacha_encrypt_bytes
    - _rs_rekey
    - _rs_init
    - _getentropy_fail
    - memset
    - getentropy
    - explicit_bzero
    linkageType: ''
    returnType: void
    signature: void _rs_stir(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: _rs_forkdetect
      Src: /src/pdns/pdns/dnsdistdist/ext/arc4random/arc4random.c:137,1
    - Dst: _rs_stir
      Src: /src/pdns/pdns/dnsdistdist/ext/arc4random/arc4random.c:139,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 1
    argNames:
    - len
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 144
      start: 134
    functionDepth: 0
    functionLinenumber: 134
    functionLinenumberEnd: 144
    functionName: _rs_stir_if_needed
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/arc4random/arc4random.c
    functionUses: 0
    functionsReached:
    - _rs_stir
    - _rs_forkdetect
    linkageType: ''
    returnType: void
    signature: void _rs_stir_if_needed(size_t len)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/pdns/pdns/dnsdistdist/ext/arc4random/arc4random.c:150,1
    - Dst: chacha_encrypt_bytes
      Src: /src/pdns/pdns/dnsdistdist/ext/arc4random/arc4random.c:153,1
    - Dst: minimum
      Src: /src/pdns/pdns/dnsdistdist/ext/arc4random/arc4random.c:159,1
    - Dst: _rs_init
      Src: /src/pdns/pdns/dnsdistdist/ext/arc4random/arc4random.c:164,1
    - Dst: memset
      Src: /src/pdns/pdns/dnsdistdist/ext/arc4random/arc4random.c:165,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - dat
    - datlen
    argTypes:
    - u_char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 167
      start: 146
    functionDepth: 0
    functionLinenumber: 146
    functionLinenumberEnd: 167
    functionName: _rs_rekey
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/arc4random/arc4random.c
    functionUses: 1
    functionsReached:
    - _rs_init
    - memset
    - minimum
    - chacha_encrypt_bytes
    linkageType: ''
    returnType: void
    signature: void _rs_rekey(u_char *dat, size_t datlen)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: _rs_stir_if_needed
      Src: /src/pdns/pdns/dnsdistdist/ext/arc4random/arc4random.c:176,1
    - Dst: minimum
      Src: /src/pdns/pdns/dnsdistdist/ext/arc4random/arc4random.c:179,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/ext/arc4random/arc4random.c:182,1
    - Dst: memset
      Src: /src/pdns/pdns/dnsdistdist/ext/arc4random/arc4random.c:183,1
    - Dst: _rs_rekey
      Src: /src/pdns/pdns/dnsdistdist/ext/arc4random/arc4random.c:189,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 2
    argNames:
    - _buf
    - n
    argTypes:
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 191
      start: 169
    functionDepth: 0
    functionLinenumber: 169
    functionLinenumberEnd: 191
    functionName: _rs_random_buf
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/arc4random/arc4random.c
    functionUses: 0
    functionsReached:
    - memcpy
    - _rs_rekey
    - _rs_stir_if_needed
    - memset
    - minimum
    linkageType: ''
    returnType: void
    signature: void _rs_random_buf(void *_buf, size_t n)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: _rs_stir_if_needed
      Src: /src/pdns/pdns/dnsdistdist/ext/arc4random/arc4random.c:198,1
    - Dst: _rs_rekey
      Src: /src/pdns/pdns/dnsdistdist/ext/arc4random/arc4random.c:200,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/ext/arc4random/arc4random.c:202,1
    - Dst: memset
      Src: /src/pdns/pdns/dnsdistdist/ext/arc4random/arc4random.c:203,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - val
    argTypes:
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 205
      start: 193
    functionDepth: 0
    functionLinenumber: 193
    functionLinenumberEnd: 205
    functionName: _rs_random_u32
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/arc4random/arc4random.c
    functionUses: 0
    functionsReached:
    - _rs_rekey
    - memcpy
    - memset
    - _rs_stir_if_needed
    linkageType: ''
    returnType: void
    signature: void _rs_random_u32(uint32_t *val)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _ARC4_LOCK
      Src: /src/pdns/pdns/dnsdistdist/ext/arc4random/arc4random.c:215,1
    - Dst: _rs_random_u32
      Src: /src/pdns/pdns/dnsdistdist/ext/arc4random/arc4random.c:216,1
    - Dst: _ARC4_UNLOCK
      Src: /src/pdns/pdns/dnsdistdist/ext/arc4random/arc4random.c:217,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 219
      start: 210
    functionDepth: 0
    functionLinenumber: 210
    functionLinenumberEnd: 219
    functionName: arc4random
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/arc4random/arc4random.c
    functionUses: 5
    functionsReached:
    - _rs_random_u32
    - _ARC4_UNLOCK
    - _ARC4_LOCK
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t arc4random(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _ARC4_LOCK
      Src: /src/pdns/pdns/dnsdistdist/ext/arc4random/arc4random.c:230,1
    - Dst: _rs_random_buf
      Src: /src/pdns/pdns/dnsdistdist/ext/arc4random/arc4random.c:231,1
    - Dst: _ARC4_UNLOCK
      Src: /src/pdns/pdns/dnsdistdist/ext/arc4random/arc4random.c:232,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - buf
    - n
    argTypes:
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 233
      start: 227
    functionDepth: 0
    functionLinenumber: 227
    functionLinenumberEnd: 233
    functionName: arc4random_buf
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/arc4random/arc4random.c
    functionUses: 2
    functionsReached:
    - _rs_random_buf
    - _ARC4_UNLOCK
    - _ARC4_LOCK
    linkageType: ''
    returnType: void
    signature: void arc4random_buf(void *buf, size_t n)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: arc4random
      Src: /src/pdns/pdns/dnsdistdist/ext/arc4random/arc4random.c:249,1
    - Dst: explicit_bzero
      Src: /src/pdns/pdns/dnsdistdist/ext/arc4random/arc4random.c:253,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - _buf
    - n
    argTypes:
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 254
      start: 240
    functionDepth: 0
    functionLinenumber: 240
    functionLinenumberEnd: 254
    functionName: arc4random_buf
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/arc4random/arc4random.c
    functionUses: 2
    functionsReached:
    - explicit_bzero
    - arc4random
    linkageType: ''
    returnType: void
    signature: void arc4random_buf(void *_buf, size_t n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 32
      start: 31
    functionDepth: 0
    functionLinenumber: 31
    functionLinenumberEnd: 32
    functionName: _ARC4_LOCK
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/arc4random/arc4random.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: _ARC4_LOCK()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 33
      start: 32
    functionDepth: 0
    functionLinenumber: 32
    functionLinenumberEnd: 33
    functionName: _ARC4_UNLOCK
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/arc4random/arc4random.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: _ARC4_UNLOCK()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fatal
      Src: /src/pdns/pdns/dnsdistdist/ext/arc4random/arc4random.h:38,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 39
      start: 35
    functionDepth: 0
    functionLinenumber: 35
    functionLinenumberEnd: 39
    functionName: _getentropy_fail
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/arc4random/arc4random.h
    functionUses: 1
    functionsReached:
    - fatal
    linkageType: ''
    returnType: void
    signature: void _getentropy_fail(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 47
    functionName: _rs_forkhandler
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/arc4random/arc4random.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void _rs_forkhandler(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: getpid
      Src: /src/pdns/pdns/dnsdistdist/ext/arc4random/arc4random.h:53,1
    - Dst: memset
      Src: /src/pdns/pdns/dnsdistdist/ext/arc4random/arc4random.h:59,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 49
    functionDepth: 0
    functionLinenumber: 49
    functionLinenumberEnd: 61
    functionName: _rs_forkdetect
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/arc4random/arc4random.h
    functionUses: 1
    functionsReached:
    - memset
    - getpid
    linkageType: ''
    returnType: void
    signature: void _rs_forkdetect(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: mmap
      Src: /src/pdns/pdns/dnsdistdist/ext/arc4random/arc4random.h:67,1
    - Dst: mmap
      Src: /src/pdns/pdns/dnsdistdist/ext/arc4random/arc4random.h:71,1
    - Dst: munmap
      Src: /src/pdns/pdns/dnsdistdist/ext/arc4random/arc4random.h:73,1
    - Dst: calloc
      Src: /src/pdns/pdns/dnsdistdist/ext/arc4random/arc4random.h:78,1
    - Dst: calloc
      Src: /src/pdns/pdns/dnsdistdist/ext/arc4random/arc4random.h:80,1
    - Dst: free
      Src: /src/pdns/pdns/dnsdistdist/ext/arc4random/arc4random.h:81,1
    - Dst: _ARC4_ATFORK
      Src: /src/pdns/pdns/dnsdistdist/ext/arc4random/arc4random.h:87,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 2
    argNames:
    - rsp
    - rsxp
    argTypes:
    - struct _rs**
    - struct _rsx**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 63
    functionDepth: 0
    functionLinenumber: 63
    functionLinenumberEnd: 89
    functionName: _rs_allocate
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/arc4random/arc4random.h
    functionUses: 1
    functionsReached:
    - free
    - mmap
    - munmap
    - _ARC4_ATFORK
    - calloc
    linkageType: ''
    returnType: int
    signature: int _rs_allocate(struct _rs **rsp, struct _rsx **rsxp)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/url.hpp:17,1
    - Dst: find_first_of
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/url.hpp:18,1
    - Dst: substr
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/url.hpp:19,1
    - Dst: compare
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/url.hpp:23,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 2
    argNames:
    - ' url'
    - pos
    argTypes:
    - std::string
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 28
      start: 15
    functionDepth: 0
    functionLinenumber: 15
    functionLinenumberEnd: 28
    functionName: YaHTTP::URL::parseSchema
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/url.hpp
    functionUses: 0
    functionsReached:
    - find_first_of
    - compare
    - substr
    - size
    linkageType: ''
    returnType: bool
    signature: bool parseSchema(const std::string& url, size_t &pos)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/url.hpp:32,1
    - Dst: find_first_of
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/url.hpp:33,1
    - Dst: substr
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/url.hpp:34,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/url.hpp:36,1
    - Dst: substr
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/url.hpp:38,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/url.hpp:41,1
    - Dst: find_first_of
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/url.hpp:42,1
    - Dst: find_first_of
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/url.hpp:47,1
    - Dst: substr
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/url.hpp:48,1
    - Dst: substr
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/url.hpp:51,1
    - Dst: find_first_of
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/url.hpp:52,1
    - Dst: substr
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/url.hpp:53,1
    - Dst: substr
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/url.hpp:55,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 25
    argCount: 2
    argNames:
    - ' url'
    - pos
    argTypes:
    - std::string
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 30
    functionDepth: 0
    functionLinenumber: 30
    functionLinenumberEnd: 58
    functionName: YaHTTP::URL::parseHost
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/url.hpp
    functionUses: 0
    functionsReached:
    - find_first_of
    - substr
    - at
    - size
    linkageType: ''
    returnType: bool
    signature: bool parseHost(const std::string& url, size_t &pos)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/url.hpp:62,1
    - Dst: find_first_of
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/url.hpp:64,1
    - Dst: find_first_of
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/url.hpp:65,1
    - Dst: substr
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/url.hpp:68,1
    - Dst: substr
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/url.hpp:69,1
    - Dst: Utility::decodeURL
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/url.hpp:70,1
    - Dst: substr
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/url.hpp:72,1
    - Dst: Utility::decodeURL
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/url.hpp:75,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 2
    argNames:
    - ' url'
    - pos
    argTypes:
    - std::string
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 60
    functionDepth: 0
    functionLinenumber: 60
    functionLinenumberEnd: 77
    functionName: YaHTTP::URL::parseUserPass
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/url.hpp
    functionUses: 0
    functionsReached:
    - find_first_of
    - substr
    - Utility::decodeURL
    - size
    linkageType: ''
    returnType: bool
    signature: bool parseUserPass(const std::string& url, size_t &pos)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/url.hpp:81,1
    - Dst: find_first_of
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/url.hpp:83,1
    - Dst: substr
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/url.hpp:84,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/url.hpp:85,1
    - Dst: substr
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/url.hpp:87,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 2
    argNames:
    - ' url'
    - pos
    argTypes:
    - std::string
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 79
    functionDepth: 0
    functionLinenumber: 79
    functionLinenumberEnd: 91
    functionName: YaHTTP::URL::parsePath
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/url.hpp
    functionUses: 0
    functionsReached:
    - find_first_of
    - substr
    - size
    linkageType: ''
    returnType: bool
    signature: bool parsePath(const std::string& url, size_t &pos)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/url.hpp:95,1
    - Dst: find_first_of
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/url.hpp:98,1
    - Dst: substr
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/url.hpp:99,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/url.hpp:100,1
    - Dst: substr
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/url.hpp:102,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/url.hpp:105,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/url.hpp:105,1
    - Dst: resize
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/url.hpp:105,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/url.hpp:105,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 2
    argNames:
    - ' url'
    - pos
    argTypes:
    - std::string
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 107
      start: 93
    functionDepth: 1
    functionLinenumber: 93
    functionLinenumberEnd: 107
    functionName: YaHTTP::URL::parseParameters
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/url.hpp
    functionUses: 0
    functionsReached:
    - resize
    - end
    - size
    - find_first_of
    - substr
    linkageType: ''
    returnType: bool
    signature: bool parseParameters(const std::string& url, size_t &pos)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/url.hpp:110,1
    - Dst: substr
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/url.hpp:112,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - ' url'
    - pos
    argTypes:
    - std::string
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 109
    functionDepth: 0
    functionLinenumber: 109
    functionLinenumberEnd: 114
    functionName: YaHTTP::URL::parseAnchor
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/url.hpp
    functionUses: 0
    functionsReached:
    - substr
    - size
    linkageType: ''
    returnType: bool
    signature: bool parseAnchor(const std::string& url, size_t &pos)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 118
      start: 116
    functionDepth: 0
    functionLinenumber: 116
    functionLinenumberEnd: 118
    functionName: YaHTTP::URL::initialize
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/url.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void initialize()
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/url.hpp:125,1
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/url.hpp:127,1
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/url.hpp:132,1
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/url.hpp:133,1
    - Dst: Utility::encodeURL
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/url.hpp:134,1
    - Dst: Utility::encodeURL
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/url.hpp:134,1
    - Dst: Utility::encodeURL
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/url.hpp:136,1
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/url.hpp:138,1
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/url.hpp:146,1
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/url.hpp:151,1
    - Dst: std::ostringstream::str
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/url.hpp:153,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 25
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 154
      start: 121
    functionDepth: 0
    functionLinenumber: 121
    functionLinenumberEnd: 154
    functionName: YaHTTP::URL::to_string
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/url.hpp
    functionUses: 0
    functionsReached:
    - empty
    - std::ostringstream::str
    - Utility::encodeURL
    linkageType: ''
    returnType: std::string
    signature: std::string to_string() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::URL::initialize
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/url.hpp:166,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 166
      start: 166
    functionDepth: 0
    functionLinenumber: 166
    functionLinenumberEnd: 166
    functionName: YaHTTP::URL::URL
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/url.hpp
    functionUses: 0
    functionsReached:
    - YaHTTP::URL::initialize
    linkageType: ''
    returnType: void
    signature: void URL()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::URL::parse
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/url.hpp:168,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' url'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 169
      start: 167
    functionDepth: 0
    functionLinenumber: 167
    functionLinenumberEnd: 169
    functionName: YaHTTP::URL::URL
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/url.hpp
    functionUses: 0
    functionsReached:
    - YaHTTP::URL::parse
    linkageType: ''
    returnType: void
    signature: void URL(const std::string& url)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::URL::parse
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/url.hpp:172,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/url.hpp:172,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - url
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 173
      start: 171
    functionDepth: 0
    functionLinenumber: 171
    functionLinenumberEnd: 173
    functionName: YaHTTP::URL::URL
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/url.hpp
    functionUses: 0
    functionsReached:
    - std::string
    - YaHTTP::URL::parse
    linkageType: ''
    returnType: void
    signature: void URL(const char *url)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::URL::initialize
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/url.hpp:177,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/url.hpp:179,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/url.hpp:181,1
    - Dst: YaHTTP::URL::parseSchema
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/url.hpp:182,1
    - Dst: substr
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/url.hpp:184,1
    - Dst: YaHTTP::URL::parseUserPass
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/url.hpp:187,1
    - Dst: YaHTTP::URL::parseHost
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/url.hpp:188,1
    - Dst: YaHTTP::URL::parsePath
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/url.hpp:190,1
    - Dst: YaHTTP::URL::parseParameters
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/url.hpp:191,1
    - Dst: YaHTTP::URL::parseAnchor
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/url.hpp:192,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 21
    argCount: 1
    argNames:
    - ' url'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 193
      start: 175
    functionDepth: 0
    functionLinenumber: 175
    functionLinenumberEnd: 193
    functionName: YaHTTP::URL::parse
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/url.hpp
    functionUses: 2
    functionsReached:
    - YaHTTP::URL::parseParameters
    - size
    - YaHTTP::URL::initialize
    - YaHTTP::URL::parseAnchor
    - YaHTTP::URL::parseSchema
    - substr
    - YaHTTP::URL::parsePath
    - begin
    - YaHTTP::URL::parseHost
    - YaHTTP::URL::parseUserPass
    linkageType: ''
    returnType: bool
    signature: bool parse(const std::string& url)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: to_string
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/url.hpp:196,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ' os'
    - ' url'
    argTypes:
    - std::ostream
    - URL
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 198
      start: 195
    functionDepth: 0
    functionLinenumber: 195
    functionLinenumberEnd: 198
    functionName: '& operator<<(std::ostream& os, const URL& url)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/url.hpp
    functionUses: 0
    functionsReached:
    - to_string
    linkageType: ''
    returnType: std::ostream
    signature: std::ostream & operator<<(std::ostream& os, const URL& url)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/url.hpp:17,1
    - Dst: find_first_of
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/url.hpp:18,1
    - Dst: substr
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/url.hpp:19,1
    - Dst: compare
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/url.hpp:23,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 2
    argNames:
    - ' url'
    - pos
    argTypes:
    - std::string
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 28
      start: 15
    functionDepth: 0
    functionLinenumber: 15
    functionLinenumberEnd: 28
    functionName: YaHTTP::URL::parseSchema
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/url.hpp
    functionUses: 1
    functionsReached:
    - find_first_of
    - compare
    - substr
    - size
    linkageType: ''
    returnType: bool
    signature: bool parseSchema(const std::string& url, size_t &pos)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/url.hpp:32,1
    - Dst: find_first_of
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/url.hpp:33,1
    - Dst: substr
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/url.hpp:34,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/url.hpp:36,1
    - Dst: substr
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/url.hpp:38,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/url.hpp:41,1
    - Dst: find_first_of
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/url.hpp:42,1
    - Dst: find_first_of
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/url.hpp:47,1
    - Dst: substr
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/url.hpp:48,1
    - Dst: substr
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/url.hpp:51,1
    - Dst: find_first_of
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/url.hpp:52,1
    - Dst: substr
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/url.hpp:53,1
    - Dst: substr
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/url.hpp:55,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 25
    argCount: 2
    argNames:
    - ' url'
    - pos
    argTypes:
    - std::string
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 30
    functionDepth: 0
    functionLinenumber: 30
    functionLinenumberEnd: 58
    functionName: YaHTTP::URL::parseHost
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/url.hpp
    functionUses: 1
    functionsReached:
    - find_first_of
    - substr
    - at
    - size
    linkageType: ''
    returnType: bool
    signature: bool parseHost(const std::string& url, size_t &pos)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/url.hpp:62,1
    - Dst: find_first_of
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/url.hpp:64,1
    - Dst: find_first_of
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/url.hpp:65,1
    - Dst: substr
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/url.hpp:68,1
    - Dst: substr
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/url.hpp:69,1
    - Dst: Utility::decodeURL
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/url.hpp:70,1
    - Dst: substr
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/url.hpp:72,1
    - Dst: Utility::decodeURL
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/url.hpp:75,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 2
    argNames:
    - ' url'
    - pos
    argTypes:
    - std::string
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 60
    functionDepth: 0
    functionLinenumber: 60
    functionLinenumberEnd: 77
    functionName: YaHTTP::URL::parseUserPass
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/url.hpp
    functionUses: 1
    functionsReached:
    - find_first_of
    - substr
    - Utility::decodeURL
    - size
    linkageType: ''
    returnType: bool
    signature: bool parseUserPass(const std::string& url, size_t &pos)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/url.hpp:81,1
    - Dst: find_first_of
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/url.hpp:83,1
    - Dst: substr
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/url.hpp:84,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/url.hpp:85,1
    - Dst: substr
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/url.hpp:87,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 2
    argNames:
    - ' url'
    - pos
    argTypes:
    - std::string
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 79
    functionDepth: 0
    functionLinenumber: 79
    functionLinenumberEnd: 91
    functionName: YaHTTP::URL::parsePath
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/url.hpp
    functionUses: 1
    functionsReached:
    - find_first_of
    - substr
    - size
    linkageType: ''
    returnType: bool
    signature: bool parsePath(const std::string& url, size_t &pos)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/url.hpp:95,1
    - Dst: find_first_of
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/url.hpp:98,1
    - Dst: substr
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/url.hpp:99,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/url.hpp:100,1
    - Dst: substr
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/url.hpp:102,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/url.hpp:105,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/url.hpp:105,1
    - Dst: resize
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/url.hpp:105,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/url.hpp:105,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 2
    argNames:
    - ' url'
    - pos
    argTypes:
    - std::string
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 107
      start: 93
    functionDepth: 1
    functionLinenumber: 93
    functionLinenumberEnd: 107
    functionName: YaHTTP::URL::parseParameters
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/url.hpp
    functionUses: 1
    functionsReached:
    - resize
    - end
    - size
    - find_first_of
    - substr
    linkageType: ''
    returnType: bool
    signature: bool parseParameters(const std::string& url, size_t &pos)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/url.hpp:110,1
    - Dst: substr
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/url.hpp:112,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - ' url'
    - pos
    argTypes:
    - std::string
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 109
    functionDepth: 0
    functionLinenumber: 109
    functionLinenumberEnd: 114
    functionName: YaHTTP::URL::parseAnchor
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/url.hpp
    functionUses: 1
    functionsReached:
    - substr
    - size
    linkageType: ''
    returnType: bool
    signature: bool parseAnchor(const std::string& url, size_t &pos)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 118
      start: 116
    functionDepth: 0
    functionLinenumber: 116
    functionLinenumberEnd: 118
    functionName: YaHTTP::URL::initialize
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/url.hpp
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void initialize()
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/url.hpp:125,1
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/url.hpp:127,1
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/url.hpp:132,1
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/url.hpp:133,1
    - Dst: Utility::encodeURL
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/url.hpp:134,1
    - Dst: Utility::encodeURL
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/url.hpp:134,1
    - Dst: Utility::encodeURL
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/url.hpp:136,1
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/url.hpp:138,1
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/url.hpp:146,1
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/url.hpp:151,1
    - Dst: std::ostringstream::str
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/url.hpp:153,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 25
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 154
      start: 121
    functionDepth: 0
    functionLinenumber: 121
    functionLinenumberEnd: 154
    functionName: YaHTTP::URL::to_string
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/url.hpp
    functionUses: 0
    functionsReached:
    - empty
    - std::ostringstream::str
    - Utility::encodeURL
    linkageType: ''
    returnType: std::string
    signature: std::string to_string() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::URL::initialize
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/url.hpp:166,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 166
      start: 166
    functionDepth: 0
    functionLinenumber: 166
    functionLinenumberEnd: 166
    functionName: YaHTTP::URL::URL
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/url.hpp
    functionUses: 0
    functionsReached:
    - YaHTTP::URL::initialize
    linkageType: ''
    returnType: void
    signature: void URL()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::URL::parse
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/url.hpp:168,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' url'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 169
      start: 167
    functionDepth: 0
    functionLinenumber: 167
    functionLinenumberEnd: 169
    functionName: YaHTTP::URL::URL
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/url.hpp
    functionUses: 0
    functionsReached:
    - YaHTTP::URL::parse
    linkageType: ''
    returnType: void
    signature: void URL(const std::string& url)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::URL::parse
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/url.hpp:172,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/url.hpp:172,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - url
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 173
      start: 171
    functionDepth: 0
    functionLinenumber: 171
    functionLinenumberEnd: 173
    functionName: YaHTTP::URL::URL
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/url.hpp
    functionUses: 0
    functionsReached:
    - std::string
    - YaHTTP::URL::parse
    linkageType: ''
    returnType: void
    signature: void URL(const char *url)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::URL::initialize
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/url.hpp:177,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/url.hpp:179,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/url.hpp:181,1
    - Dst: YaHTTP::URL::parseSchema
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/url.hpp:182,1
    - Dst: substr
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/url.hpp:184,1
    - Dst: YaHTTP::URL::parseUserPass
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/url.hpp:187,1
    - Dst: YaHTTP::URL::parseHost
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/url.hpp:188,1
    - Dst: YaHTTP::URL::parsePath
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/url.hpp:190,1
    - Dst: YaHTTP::URL::parseParameters
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/url.hpp:191,1
    - Dst: YaHTTP::URL::parseAnchor
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/url.hpp:192,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 21
    argCount: 1
    argNames:
    - ' url'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 193
      start: 175
    functionDepth: 0
    functionLinenumber: 175
    functionLinenumberEnd: 193
    functionName: YaHTTP::URL::parse
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/url.hpp
    functionUses: 4
    functionsReached:
    - YaHTTP::URL::parseParameters
    - size
    - YaHTTP::URL::initialize
    - YaHTTP::URL::parseAnchor
    - YaHTTP::URL::parseSchema
    - substr
    - YaHTTP::URL::parsePath
    - begin
    - YaHTTP::URL::parseHost
    - YaHTTP::URL::parseUserPass
    linkageType: ''
    returnType: bool
    signature: bool parse(const std::string& url)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: to_string
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/url.hpp:196,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ' os'
    - ' url'
    argTypes:
    - std::ostream
    - URL
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 198
      start: 195
    functionDepth: 0
    functionLinenumber: 195
    functionLinenumberEnd: 198
    functionName: '& operator<<(std::ostream& os, const URL& url)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/url.hpp
    functionUses: 0
    functionsReached:
    - to_string
    linkageType: ''
    returnType: std::ostream
    signature: std::ostream & operator<<(std::ostream& os, const URL& url)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DateTime
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/cookie.hpp:9,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 10
      start: 5
    functionDepth: 0
    functionLinenumber: 5
    functionLinenumberEnd: 10
    functionName: YaHTTP::Cookie::Cookie
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/cookie.hpp
    functionUses: 0
    functionsReached:
    - DateTime
    linkageType: ''
    returnType: void
    signature: void Cookie()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - rhs
    argTypes:
    - Cookie
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 20
      start: 12
    functionDepth: 0
    functionLinenumber: 12
    functionLinenumberEnd: 20
    functionName: YaHTTP::Cookie::Cookie
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/cookie.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Cookie(const Cookie &rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 1
    argNames:
    - rhs
    argTypes:
    - Cookie
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 31
      start: 22
    functionDepth: 0
    functionLinenumber: 22
    functionLinenumberEnd: 31
    functionName: '& operator=(const Cookie &rhs)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/cookie.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Cookie
    signature: Cookie & operator=(const Cookie &rhs)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: Utility::encodeURL
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/cookie.hpp:44,1
    - Dst: Utility::encodeURL
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/cookie.hpp:44,1
    - Dst: cookie_str
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/cookie.hpp:47,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/cookie.hpp:48,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/cookie.hpp:50,1
    - Dst: std::ostringstream::str
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/cookie.hpp:56,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 42
    functionDepth: 0
    functionLinenumber: 42
    functionLinenumberEnd: 57
    functionName: YaHTTP::Cookie::str
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/cookie.hpp
    functionUses: 0
    functionsReached:
    - std::ostringstream::str
    - size
    - Utility::encodeURL
    - cookie_str
    linkageType: ''
    returnType: std::string
    signature: std::string str() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 65
    functionDepth: 0
    functionLinenumber: 65
    functionLinenumberEnd: 65
    functionName: YaHTTP::CookieJar::CookieJar
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/cookie.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void CookieJar()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - CookieJar
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 66
    functionDepth: 0
    functionLinenumber: 66
    functionLinenumberEnd: 68
    functionName: YaHTTP::CookieJar::CookieJar
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/cookie.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void CookieJar(const CookieJar & rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - CookieJar
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 69
    functionDepth: 0
    functionLinenumber: 69
    functionLinenumberEnd: 69
    functionName: '& operator=(const CookieJar & rhs)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/cookie.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: CookieJar
    signature: CookieJar & operator=(const CookieJar & rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::CookieJar::cookies::clear
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/cookie.hpp:72,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 71
    functionDepth: 1
    functionLinenumber: 71
    functionLinenumberEnd: 73
    functionName: YaHTTP::CookieJar::clear
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/cookie.hpp
    functionUses: 0
    functionsReached:
    - YaHTTP::CookieJar::cookies::clear
    linkageType: ''
    returnType: void
    signature: void clear()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::string::find
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/cookie.hpp:77,1
    - Dst: ParseError
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/cookie.hpp:78,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/cookie.hpp:79,1
    - Dst: std::string::begin
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/cookie.hpp:79,1
    - Dst: std::string::begin
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/cookie.hpp:79,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/cookie.hpp:80,1
    - Dst: std::string::begin
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/cookie.hpp:80,1
    - Dst: std::string::end
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/cookie.hpp:80,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - keyvalue
    - key
    - value
    argTypes:
    - std::string
    - std::string
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 75
    functionDepth: 0
    functionLinenumber: 75
    functionLinenumberEnd: 81
    functionName: YaHTTP::CookieJar::keyValuePair
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/cookie.hpp
    functionUses: 0
    functionsReached:
    - std::string::begin
    - std::string::end
    - std::string::find
    - ParseError
    - std::string
    linkageType: ''
    returnType: void
    signature: void keyValuePair(const std::string &keyvalue, std::string &key, std::string
      &value)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::string::size
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/cookie.hpp:88,1
    - Dst: std::string::find
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/cookie.hpp:89,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/cookie.hpp:90,1
    - Dst: YaHTTP::CookieJar::keyValuePair
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/cookie.hpp:91,1
    - Dst: std::string::substr
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/cookie.hpp:91,1
    - Dst: Utility::decodeURL
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/cookie.hpp:92,1
    - Dst: Utility::decodeURL
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/cookie.hpp:93,1
    - Dst: std::list::push_back
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/cookie.hpp:94,1
    - Dst: std::list::begin
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/cookie.hpp:97,1
    - Dst: std::list::end
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/cookie.hpp:97,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 1
    argNames:
    - cookiestr
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 83
    functionDepth: 0
    functionLinenumber: 83
    functionLinenumberEnd: 100
    functionName: YaHTTP::CookieJar::parseCookieHeader
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/cookie.hpp
    functionUses: 0
    functionsReached:
    - YaHTTP::CookieJar::keyValuePair
    - std::string::substr
    - std::list::begin
    - std::string::find
    - std::list::push_back
    - std::list::end
    - std::string::size
    - Utility::decodeURL
    linkageType: ''
    returnType: void
    signature: void parseCookieHeader(const std::string &cookiestr)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: std::string::find
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/cookie.hpp:107,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/cookie.hpp:108,1
    - Dst: YaHTTP::CookieJar::keyValuePair
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/cookie.hpp:109,1
    - Dst: std::string::substr
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/cookie.hpp:109,1
    - Dst: Utility::decodeURL
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/cookie.hpp:110,1
    - Dst: Utility::decodeURL
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/cookie.hpp:111,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/cookie.hpp:112,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/cookie.hpp:114,1
    - Dst: std::string::find
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/cookie.hpp:115,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/cookie.hpp:116,1
    - Dst: std::string::substr
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/cookie.hpp:117,1
    - Dst: std::string::find
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/cookie.hpp:118,1
    - Dst: YaHTTP::CookieJar::keyValuePair
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/cookie.hpp:119,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/cookie.hpp:121,1
    - Dst: DateTime::parseCookie
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/cookie.hpp:124,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 35
    argCount: 1
    argNames:
    - cookiestr
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 142
      start: 102
    functionDepth: 0
    functionLinenumber: 102
    functionLinenumberEnd: 142
    functionName: YaHTTP::CookieJar::parseSetCookieHeader
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/cookie.hpp
    functionUses: 0
    functionsReached:
    - std::move
    - YaHTTP::CookieJar::keyValuePair
    - DateTime::parseCookie
    - std::string::substr
    - std::string::find
    - std::string::size
    - Utility::decodeURL
    linkageType: ''
    returnType: void
    signature: void parseSetCookieHeader(const std::string &cookiestr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DateTime
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/cookie.hpp:9,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 10
      start: 5
    functionDepth: 0
    functionLinenumber: 5
    functionLinenumberEnd: 10
    functionName: YaHTTP::Cookie::Cookie
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/cookie.hpp
    functionUses: 0
    functionsReached:
    - DateTime
    linkageType: ''
    returnType: void
    signature: void Cookie()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - rhs
    argTypes:
    - Cookie
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 20
      start: 12
    functionDepth: 0
    functionLinenumber: 12
    functionLinenumberEnd: 20
    functionName: YaHTTP::Cookie::Cookie
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/cookie.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Cookie(const Cookie &rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 1
    argNames:
    - rhs
    argTypes:
    - Cookie
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 31
      start: 22
    functionDepth: 0
    functionLinenumber: 22
    functionLinenumberEnd: 31
    functionName: '& operator=(const Cookie &rhs)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/cookie.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Cookie
    signature: Cookie & operator=(const Cookie &rhs)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: Utility::encodeURL
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/cookie.hpp:44,1
    - Dst: Utility::encodeURL
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/cookie.hpp:44,1
    - Dst: cookie_str
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/cookie.hpp:47,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/cookie.hpp:48,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/cookie.hpp:50,1
    - Dst: std::ostringstream::str
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/cookie.hpp:56,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 42
    functionDepth: 0
    functionLinenumber: 42
    functionLinenumberEnd: 57
    functionName: YaHTTP::Cookie::str
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/cookie.hpp
    functionUses: 0
    functionsReached:
    - std::ostringstream::str
    - size
    - Utility::encodeURL
    - cookie_str
    linkageType: ''
    returnType: std::string
    signature: std::string str() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 65
    functionDepth: 0
    functionLinenumber: 65
    functionLinenumberEnd: 65
    functionName: YaHTTP::CookieJar::CookieJar
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/cookie.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void CookieJar()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - CookieJar
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 66
    functionDepth: 0
    functionLinenumber: 66
    functionLinenumberEnd: 68
    functionName: YaHTTP::CookieJar::CookieJar
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/cookie.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void CookieJar(const CookieJar & rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - CookieJar
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 69
    functionDepth: 0
    functionLinenumber: 69
    functionLinenumberEnd: 69
    functionName: '& operator=(const CookieJar & rhs)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/cookie.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: CookieJar
    signature: CookieJar & operator=(const CookieJar & rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::CookieJar::cookies::clear
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/cookie.hpp:72,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 71
    functionDepth: 1
    functionLinenumber: 71
    functionLinenumberEnd: 73
    functionName: YaHTTP::CookieJar::clear
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/cookie.hpp
    functionUses: 0
    functionsReached:
    - YaHTTP::CookieJar::cookies::clear
    linkageType: ''
    returnType: void
    signature: void clear()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::string::find
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/cookie.hpp:77,1
    - Dst: ParseError
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/cookie.hpp:78,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/cookie.hpp:79,1
    - Dst: std::string::begin
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/cookie.hpp:79,1
    - Dst: std::string::begin
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/cookie.hpp:79,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/cookie.hpp:80,1
    - Dst: std::string::begin
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/cookie.hpp:80,1
    - Dst: std::string::end
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/cookie.hpp:80,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - keyvalue
    - key
    - value
    argTypes:
    - std::string
    - std::string
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 75
    functionDepth: 0
    functionLinenumber: 75
    functionLinenumberEnd: 81
    functionName: YaHTTP::CookieJar::keyValuePair
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/cookie.hpp
    functionUses: 2
    functionsReached:
    - std::string::begin
    - std::string::end
    - std::string::find
    - ParseError
    - std::string
    linkageType: ''
    returnType: void
    signature: void keyValuePair(const std::string &keyvalue, std::string &key, std::string
      &value)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::string::size
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/cookie.hpp:88,1
    - Dst: std::string::find
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/cookie.hpp:89,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/cookie.hpp:90,1
    - Dst: YaHTTP::CookieJar::keyValuePair
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/cookie.hpp:91,1
    - Dst: std::string::substr
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/cookie.hpp:91,1
    - Dst: Utility::decodeURL
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/cookie.hpp:92,1
    - Dst: Utility::decodeURL
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/cookie.hpp:93,1
    - Dst: std::list::push_back
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/cookie.hpp:94,1
    - Dst: std::list::begin
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/cookie.hpp:97,1
    - Dst: std::list::end
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/cookie.hpp:97,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 1
    argNames:
    - cookiestr
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 83
    functionDepth: 0
    functionLinenumber: 83
    functionLinenumberEnd: 100
    functionName: YaHTTP::CookieJar::parseCookieHeader
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/cookie.hpp
    functionUses: 0
    functionsReached:
    - YaHTTP::CookieJar::keyValuePair
    - std::string::substr
    - std::list::begin
    - std::string::find
    - std::list::push_back
    - std::list::end
    - std::string::size
    - Utility::decodeURL
    linkageType: ''
    returnType: void
    signature: void parseCookieHeader(const std::string &cookiestr)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: std::string::find
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/cookie.hpp:107,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/cookie.hpp:108,1
    - Dst: YaHTTP::CookieJar::keyValuePair
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/cookie.hpp:109,1
    - Dst: std::string::substr
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/cookie.hpp:109,1
    - Dst: Utility::decodeURL
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/cookie.hpp:110,1
    - Dst: Utility::decodeURL
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/cookie.hpp:111,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/cookie.hpp:112,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/cookie.hpp:114,1
    - Dst: std::string::find
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/cookie.hpp:115,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/cookie.hpp:116,1
    - Dst: std::string::substr
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/cookie.hpp:117,1
    - Dst: std::string::find
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/cookie.hpp:118,1
    - Dst: YaHTTP::CookieJar::keyValuePair
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/cookie.hpp:119,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/cookie.hpp:121,1
    - Dst: DateTime::parseCookie
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/cookie.hpp:124,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 35
    argCount: 1
    argNames:
    - cookiestr
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 142
      start: 102
    functionDepth: 0
    functionLinenumber: 102
    functionLinenumberEnd: 142
    functionName: YaHTTP::CookieJar::parseSetCookieHeader
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/cookie.hpp
    functionUses: 0
    functionsReached:
    - std::move
    - YaHTTP::CookieJar::keyValuePair
    - DateTime::parseCookie
    - std::string::substr
    - std::string::find
    - std::string::size
    - Utility::decodeURL
    linkageType: ''
    returnType: void
    signature: void parseSetCookieHeader(const std::string &cookiestr)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp:28,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp:29,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp:30,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp:30,1
    - Dst: dns_tolower
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp:31,1
    - Dst: dns_tolower
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp:31,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp:32,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp:32,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp:33,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp:33,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 9
    argCount: 2
    argNames:
    - ' lhs'
    - ' rhs'
    argTypes:
    - std::string
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 35
      start: 26
    functionDepth: 0
    functionLinenumber: 26
    functionLinenumberEnd: 35
    functionName: operator() (const std::string& lhs, const std::string& rhs) const
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp
    functionUses: 0
    functionsReached:
    - end
    - dns_tolower
    - begin
    linkageType: ''
    returnType: bool
    signature: bool operator() (const std::string& lhs, const std::string& rhs) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: initialize
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp:58,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 57
    functionDepth: 0
    functionLinenumber: 57
    functionLinenumberEnd: 59
    functionName: DateTime
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp
    functionUses: 2
    functionsReached:
    - initialize
    linkageType: ''
    returnType: void
    signature: void DateTime()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 61
    functionDepth: 0
    functionLinenumber: 61
    functionLinenumberEnd: 65
    functionName: initialize
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp
    functionUses: 13
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void initialize()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fromLocaltime
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp:68,1
    - Dst: time
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp:68,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 67
    functionDepth: 0
    functionLinenumber: 67
    functionLinenumberEnd: 69
    functionName: setLocal
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp
    functionUses: 0
    functionsReached:
    - time
    - fromLocaltime
    linkageType: ''
    returnType: void
    signature: void setLocal()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fromGmtime
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp:72,1
    - Dst: time
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp:72,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 71
    functionDepth: 0
    functionLinenumber: 71
    functionLinenumberEnd: 73
    functionName: setGm
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp
    functionUses: 0
    functionsReached:
    - time
    - fromGmtime
    linkageType: ''
    returnType: void
    signature: void setGm()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: localtime_r
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp:78,1
    - Dst: fromTm
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp:79,1
    - Dst: localtime
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp:83,1
    - Dst: fromTm
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp:84,1
    - Dst: gmtime_r
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp:89,1
    - Dst: mktime
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp:90,1
    - Dst: gmtime
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp:93,1
    - Dst: mktime
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp:94,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 1
    argNames:
    - t
    argTypes:
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 75
    functionDepth: 0
    functionLinenumber: 75
    functionLinenumberEnd: 98
    functionName: fromLocaltime
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp
    functionUses: 1
    functionsReached:
    - fromTm
    - gmtime_r
    - localtime_r
    - mktime
    - gmtime
    - localtime
    linkageType: ''
    returnType: void
    signature: void fromLocaltime(time_t t)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: gmtime_r
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp:103,1
    - Dst: fromTm
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp:104,1
    - Dst: gmtime
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp:108,1
    - Dst: fromTm
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp:109,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - t
    argTypes:
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 100
    functionDepth: 0
    functionLinenumber: 100
    functionLinenumberEnd: 114
    functionName: fromGmtime
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp
    functionUses: 1
    functionsReached:
    - fromTm
    - gmtime_r
    - gmtime
    linkageType: ''
    returnType: void
    signature: void fromGmtime(time_t t)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 1
    argNames:
    - tm
    argTypes:
    - struct tm*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 116
    functionDepth: 0
    functionLinenumber: 116
    functionLinenumberEnd: 128
    functionName: fromTm
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void fromTm(const struct tm *tm)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: std::range_error
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp:131,1
    - Dst: std::range_error
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp:132,1
    - Dst: std::range_error
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp:133,1
    - Dst: std::range_error
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp:136,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 137
      start: 130
    functionDepth: 0
    functionLinenumber: 130
    functionLinenumberEnd: 137
    functionName: validate
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp
    functionUses: 2
    functionsReached:
    - std::range_error
    linkageType: ''
    returnType: void
    signature: void validate() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: validate
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp:141,1
    - Dst: std::setfill
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp:142,1
    - Dst: std::setw
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp:142,1
    - Dst: std::setfill
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp:143,1
    - Dst: std::setw
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp:143,1
    - Dst: std::setfill
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp:144,1
    - Dst: std::setw
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp:144,1
    - Dst: std::setfill
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp:145,1
    - Dst: std::setw
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp:145,1
    - Dst: std::setfill
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp:146,1
    - Dst: std::setw
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp:146,1
    - Dst: std::setfill
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp:150,1
    - Dst: std::setw
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp:150,1
    - Dst: std::setfill
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp:151,1
    - Dst: std::setw
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp:151,1
    - Dst: std::ostringstream::str
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp:153,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 154
      start: 139
    functionDepth: 0
    functionLinenumber: 139
    functionLinenumberEnd: 154
    functionName: rfc_str
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp
    functionUses: 0
    functionsReached:
    - std::ostringstream::str
    - std::setfill
    - validate
    - std::setw
    linkageType: ''
    returnType: std::string
    signature: std::string rfc_str() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: validate
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp:158,1
    - Dst: std::setfill
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp:159,1
    - Dst: std::setw
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp:159,1
    - Dst: std::setfill
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp:160,1
    - Dst: std::setw
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp:160,1
    - Dst: std::setfill
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp:161,1
    - Dst: std::setw
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp:161,1
    - Dst: std::setfill
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp:162,1
    - Dst: std::setw
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp:162,1
    - Dst: std::ostringstream::str
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp:163,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 164
      start: 156
    functionDepth: 0
    functionLinenumber: 156
    functionLinenumberEnd: 164
    functionName: cookie_str
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp
    functionUses: 2
    functionsReached:
    - std::ostringstream::str
    - std::setfill
    - validate
    - std::setw
    linkageType: ''
    returnType: std::string
    signature: std::string cookie_str() const
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strptime
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp:194,1
    - Dst: std::string::c_str
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp:194,1
    - Dst: strptime
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp:196,1
    - Dst: std::string::c_str
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp:196,1
    - Dst: strptime
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp:197,1
    - Dst: std::string::c_str
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp:197,1
    - Dst: YaHTTP::isspace
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp:200,1
    - Dst: YaHTTP::isalnum
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp:200,1
    - Dst: YaHTTP::ParseError::ParseError
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp:201,1
    - Dst: fromTm
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp:202,1
    - Dst: YaHTTP::ParseError::ParseError
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp:206,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 12
    argCount: 1
    argNames:
    - cookie_date
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 208
      start: 191
    functionDepth: 0
    functionLinenumber: 191
    functionLinenumberEnd: 208
    functionName: parseCookie
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp
    functionUses: 2
    functionsReached:
    - fromTm
    - std::string::c_str
    - strptime
    - YaHTTP::isspace
    - YaHTTP::ParseError::ParseError
    - YaHTTP::isalnum
    linkageType: ''
    returnType: void
    signature: void parseCookie(const std::string &cookie_date)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mktime
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp:222,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 223
      start: 210
    functionDepth: 0
    functionLinenumber: 210
    functionLinenumberEnd: 223
    functionName: unixtime
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp
    functionUses: 0
    functionsReached:
    - mktime
    linkageType: ''
    returnType: time_t
    signature: time_t unixtime() const
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: std::string::find_first_of
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp:233,1
    - Dst: std::string::length
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp:236,1
    - Dst: std::string::substr
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp:237,1
    - Dst: std::tolower
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp:238,1
    - Dst: std::tolower
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp:238,1
    - Dst: std::string::replace
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp:252,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 25
    argCount: 1
    argNames:
    - ' component'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 256
      start: 229
    functionDepth: 0
    functionLinenumber: 229
    functionLinenumberEnd: 256
    functionName: Utility::decodeURL
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp
    functionUses: 6
    functionsReached:
    - std::string::length
    - std::string::substr
    - std::string::replace
    - std::tolower
    - std::string::find_first_of
    linkageType: ''
    returnType: std::string
    signature: std::string decodeURL(const std::string& component)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::string::begin
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp:263,1
    - Dst: std::string::end
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp:263,1
    - Dst: YaHTTP::isalnum
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp:264,1
    - Dst: std::string::find
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp:264,1
    - Dst: std::distance
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp:266,1
    - Dst: std::string::begin
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp:266,1
    - Dst: ::snprintf
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp:267,1
    - Dst: static_cast<unsigned char>
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp:267,1
    - Dst: std::string::replace
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp:268,1
    - Dst: std::string::begin
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp:269,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 1
    argNames:
    - ' component'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 273
      start: 258
    functionDepth: 1
    functionLinenumber: 258
    functionLinenumberEnd: 273
    functionName: Utility::encodeURL
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp
    functionUses: 4
    functionsReached:
    - std::string::begin
    - std::distance
    - std::string::end
    - ::snprintf
    - std::string::find
    - std::string::replace
    - static_cast<unsigned char>
    - YaHTTP::isalnum
    linkageType: ''
    returnType: std::string
    signature: std::string encodeURL(const std::string& component, bool asUrl = true)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: reinterpret_cast<unsigned char const*>
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp:276,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp:277,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp:277,1
    - Dst: std::vector::begin
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp:282,1
    - Dst: std::vector::end
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp:282,1
    - Dst: YaHTTP::isalnum
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp:283,1
    - Dst: std::string::find
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp:283,1
    - Dst: std::setw
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp:285,1
    - Dst: std::setfill
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp:285,1
    - Dst: static_cast<unsigned int>
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp:285,1
    - Dst: std::ostringstream::str
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp:288,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 1
    argNames:
    - ' component'
    argTypes:
    - std::wstring
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 289
      start: 275
    functionDepth: 0
    functionLinenumber: 275
    functionLinenumberEnd: 289
    functionName: Utility::encodeURL
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp
    functionUses: 4
    functionsReached:
    - std::vector::end
    - std::vector::begin
    - std::ostringstream::str
    - std::setfill
    - std::setw
    - reinterpret_cast<unsigned char const*>
    - size
    - static_cast<unsigned int>
    - std::string::find
    - begin
    - YaHTTP::isalnum
    linkageType: ''
    returnType: std::string
    signature: std::string encodeURL(const std::wstring& component, bool asUrl = true)
  - BBCount: 41
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 83
    argCount: 1
    argNames:
    - status
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 374
      start: 291
    functionDepth: 0
    functionLinenumber: 291
    functionLinenumberEnd: 374
    functionName: Utility::status2text
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string status2text(int status)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp:377,1
    - Dst: find
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp:384,1
    - Dst: find
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp:385,1
    - Dst: substr
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp:392,1
    - Dst: substr
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp:394,1
    - Dst: substr
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp:396,1
    - Dst: substr
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp:398,1
    - Dst: std::string::empty
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp:401,1
    - Dst: Utility::decodeURL
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp:405,1
    - Dst: Utility::decodeURL
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp:405,1
    - Dst: strstr_map_t::size
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp:410,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 31
    argCount: 1
    argNames:
    - ' parameters'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 417
      start: 376
    functionDepth: 0
    functionLinenumber: 376
    functionLinenumberEnd: 417
    functionName: Utility::parseUrlParameters
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp
    functionUses: 0
    functionsReached:
    - size
    - substr
    - strstr_map_t::size
    - std::string::empty
    - Utility::decodeURL
    - find
    linkageType: ''
    returnType: strstr_map_t
    signature: strstr_map_t parseUrlParameters(const std::string& parameters)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp:422,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp:422,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp:422,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp:422,1
    - Dst: dns_toupper
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp:423,1
    - Dst: dns_toupper
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp:423,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp:426,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp:426,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp:427,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp:427,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp:428,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp:428,1
    - Dst: dns_toupper
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp:430,1
    - Dst: dns_toupper
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp:430,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 10
    argCount: 3
    argNames:
    - ' a'
    - ' b'
    - length
    argTypes:
    - std::string
    - std::string
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 431
      start: 419
    functionDepth: 0
    functionLinenumber: 419
    functionLinenumberEnd: 431
    functionName: Utility::iequals
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp
    functionUses: 0
    functionsReached:
    - dns_toupper
    - end
    - begin
    linkageType: ''
    returnType: bool
    signature: bool iequals(const std::string& a, const std::string& b, size_t length)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp:434,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp:434,1
    - Dst: Utility::iequals
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp:435,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp:435,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - ' a'
    - ' b'
    argTypes:
    - std::string
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 436
      start: 433
    functionDepth: 0
    functionLinenumber: 433
    functionLinenumberEnd: 436
    functionName: Utility::iequals
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp
    functionUses: 1
    functionsReached:
    - Utility::iequals
    - size
    linkageType: ''
    returnType: bool
    signature: bool iequals(const std::string& a, const std::string& b)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::locale::classic
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp:439,1
    - Dst: std::string::begin
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp:440,1
    - Dst: std::string::end
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp:441,1
    - Dst: YaHTTP::isspace
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp:441,1
    - Dst: std::string::erase
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp:442,1
    - Dst: std::string::begin
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp:442,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - str
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 443
      start: 438
    functionDepth: 0
    functionLinenumber: 438
    functionLinenumberEnd: 443
    functionName: Utility::trimLeft
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp
    functionUses: 0
    functionsReached:
    - std::string::begin
    - std::string::erase
    - std::string::end
    - YaHTTP::isspace
    - std::locale::classic
    linkageType: ''
    returnType: void
    signature: void trimLeft(std::string &str)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::locale::classic
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp:446,1
    - Dst: std::string::rbegin
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp:447,1
    - Dst: std::string::rend
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp:448,1
    - Dst: YaHTTP::isspace
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp:448,1
    - Dst: std::string::erase
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp:449,1
    - Dst: std::string::reverse_iterator::base
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp:449,1
    - Dst: std::string::end
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp:449,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - str
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 450
      start: 445
    functionDepth: 0
    functionLinenumber: 445
    functionLinenumberEnd: 450
    functionName: Utility::trimRight
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp
    functionUses: 0
    functionsReached:
    - std::string::erase
    - std::string::rend
    - std::string::rbegin
    - std::string::end
    - YaHTTP::isspace
    - std::locale::classic
    - std::string::reverse_iterator::base
    linkageType: ''
    returnType: void
    signature: void trimRight(std::string &str)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Utility::trimLeft
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp:453,1
    - Dst: Utility::trimRight
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp:454,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - str
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 455
      start: 452
    functionDepth: 0
    functionLinenumber: 452
    functionLinenumberEnd: 455
    functionName: Utility::trim
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp
    functionUses: 11
    functionsReached:
    - Utility::trimRight
    - Utility::trimLeft
    linkageType: ''
    returnType: void
    signature: void trim(std::string &str)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::string::begin
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp:458,1
    - Dst: std::locale::classic
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp:460,1
    - Dst: std::string::end
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp:464,1
    - Dst: std::string::insert
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp:466,1
    - Dst: std::string::end
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp:466,1
    - Dst: std::toupper
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp:466,1
    - Dst: std::string::insert
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp:468,1
    - Dst: std::string::end
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp:468,1
    - Dst: std::tolower
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp:468,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - str
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 473
      start: 457
    functionDepth: 1
    functionLinenumber: 457
    functionLinenumberEnd: 473
    functionName: Utility::camelizeHeader
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp
    functionUses: 0
    functionsReached:
    - std::string::begin
    - std::toupper
    - std::string::end
    - std::tolower
    - std::locale::classic
    - std::string::insert
    linkageType: ''
    returnType: std::string
    signature: std::string camelizeHeader(const std::string &str)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 50
    functionDepth: 0
    functionLinenumber: 50
    functionLinenumberEnd: 50
    functionName: YaHTTP::Router::Router
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Router()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::Router::map
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.hpp:62,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.hpp:62,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' method'
    - ' url'
    - handler
    argTypes:
    - std::string
    - std::string
    - THandlerFunction
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 62
    functionDepth: 0
    functionLinenumber: 62
    functionLinenumberEnd: 62
    functionName: YaHTTP::Router::Map
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.hpp
    functionUses: 2
    functionsReached:
    - YaHTTP::Router::map
    - std::move
    linkageType: ''
    returnType: void
    signature: void Map(const std::string& method, const std::string& url, THandlerFunction
      handler, const std::string& name = "")
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::Router::map
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.hpp:63,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.hpp:63,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' url'
    - handler
    argTypes:
    - std::string
    - THandlerFunction
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 63
    functionDepth: 0
    functionLinenumber: 63
    functionLinenumberEnd: 63
    functionName: YaHTTP::Router::Get
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.hpp
    functionUses: 0
    functionsReached:
    - YaHTTP::Router::map
    - std::move
    linkageType: ''
    returnType: void
    signature: void Get(const std::string& url, THandlerFunction handler, const std::string&
      name = "")
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::Router::map
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.hpp:64,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.hpp:64,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' url'
    - handler
    argTypes:
    - std::string
    - THandlerFunction
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 64
    functionDepth: 0
    functionLinenumber: 64
    functionLinenumberEnd: 64
    functionName: YaHTTP::Router::Post
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.hpp
    functionUses: 0
    functionsReached:
    - YaHTTP::Router::map
    - std::move
    linkageType: ''
    returnType: void
    signature: void Post(const std::string& url, THandlerFunction handler, const std::string&
      name = "")
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::Router::map
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.hpp:65,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.hpp:65,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' url'
    - handler
    argTypes:
    - std::string
    - THandlerFunction
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 65
    functionDepth: 0
    functionLinenumber: 65
    functionLinenumberEnd: 65
    functionName: YaHTTP::Router::Put
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.hpp
    functionUses: 0
    functionsReached:
    - YaHTTP::Router::map
    - std::move
    linkageType: ''
    returnType: void
    signature: void Put(const std::string& url, THandlerFunction handler, const std::string&
      name = "")
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::Router::map
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.hpp:66,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.hpp:66,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' url'
    - handler
    argTypes:
    - std::string
    - THandlerFunction
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 66
    functionDepth: 0
    functionLinenumber: 66
    functionLinenumberEnd: 66
    functionName: YaHTTP::Router::Patch
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.hpp
    functionUses: 0
    functionsReached:
    - YaHTTP::Router::map
    - std::move
    linkageType: ''
    returnType: void
    signature: void Patch(const std::string& url, THandlerFunction handler, const
      std::string& name = "")
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::Router::map
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.hpp:67,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.hpp:67,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' url'
    - handler
    argTypes:
    - std::string
    - THandlerFunction
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 67
    functionDepth: 0
    functionLinenumber: 67
    functionLinenumberEnd: 67
    functionName: YaHTTP::Router::Delete
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.hpp
    functionUses: 0
    functionsReached:
    - YaHTTP::Router::map
    - std::move
    linkageType: ''
    returnType: void
    signature: void Delete(const std::string& url, THandlerFunction handler, const
      std::string& name = "")
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::Router::map
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.hpp:68,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.hpp:68,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' url'
    - handler
    argTypes:
    - std::string
    - THandlerFunction
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 68
    functionDepth: 0
    functionLinenumber: 68
    functionLinenumberEnd: 68
    functionName: YaHTTP::Router::Any
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.hpp
    functionUses: 0
    functionsReached:
    - YaHTTP::Router::map
    - std::move
    linkageType: ''
    returnType: void
    signature: void Any(const std::string& url, THandlerFunction handler, const std::string&
      name = "")
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::Router::match
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.hpp:70,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' route'
    - ' requrl'
    - ' params'
    argTypes:
    - std::string
    - URL
    - std::map<std::string, TDelim>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 70
    functionDepth: 0
    functionLinenumber: 70
    functionLinenumberEnd: 70
    functionName: YaHTTP::Router::Match
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.hpp
    functionUses: 1
    functionsReached:
    - YaHTTP::Router::match
    linkageType: ''
    returnType: bool
    signature: bool Match(const std::string& route, const URL& requrl, std::map<std::string,
      TDelim>& params)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::Router::route
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.hpp:71,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - req
    - ' handler'
    argTypes:
    - Request*
    - THandlerFunction
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 71
    functionDepth: 0
    functionLinenumber: 71
    functionLinenumberEnd: 71
    functionName: YaHTTP::Router::Route
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.hpp
    functionUses: 1
    functionsReached:
    - YaHTTP::Router::route
    linkageType: ''
    returnType: RoutingResult
    signature: RoutingResult Route(Request *req, THandlerFunction& handler)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::Router::printRoutes
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.hpp:72,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - os
    argTypes:
    - std::ostream
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 72
    functionDepth: 0
    functionLinenumber: 72
    functionLinenumberEnd: 72
    functionName: YaHTTP::Router::PrintRoutes
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.hpp
    functionUses: 0
    functionsReached:
    - YaHTTP::Router::printRoutes
    linkageType: ''
    returnType: void
    signature: void PrintRoutes(std::ostream &os)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::Router::urlFor
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.hpp:74,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - name
    - ' arguments'
    argTypes:
    - std::string
    - strstr_map_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 74
    functionDepth: 0
    functionLinenumber: 74
    functionLinenumberEnd: 74
    functionName: YaHTTP::Router::URLFor
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.hpp
    functionUses: 0
    functionsReached:
    - YaHTTP::Router::urlFor
    linkageType: ''
    returnType: std::pair<std::string, std::string>
    signature: std::pair<std::string, std::string> URLFor(const std::string &name,
      const strstr_map_t& arguments)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 75
    functionDepth: 0
    functionLinenumber: 75
    functionLinenumberEnd: 75
    functionName: '& GetRoutes()'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: TRouteList
    signature: TRouteList & GetRoutes()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: routes::clear
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.hpp:76,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 76
    functionDepth: 1
    functionLinenumber: 76
    functionLinenumberEnd: 76
    functionName: YaHTTP::Router::Clear
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.hpp
    functionUses: 0
    functionsReached:
    - routes::clear
    linkageType: ''
    returnType: void
    signature: void Clear()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 50
    functionDepth: 0
    functionLinenumber: 50
    functionLinenumberEnd: 50
    functionName: YaHTTP::Router::Router
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Router()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::Router::map
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.hpp:62,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.hpp:62,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' method'
    - ' url'
    - handler
    argTypes:
    - std::string
    - std::string
    - THandlerFunction
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 62
    functionDepth: 0
    functionLinenumber: 62
    functionLinenumberEnd: 62
    functionName: YaHTTP::Router::Map
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.hpp
    functionUses: 2
    functionsReached:
    - YaHTTP::Router::map
    - std::move
    linkageType: ''
    returnType: void
    signature: void Map(const std::string& method, const std::string& url, THandlerFunction
      handler, const std::string& name = "")
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::Router::map
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.hpp:63,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.hpp:63,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' url'
    - handler
    argTypes:
    - std::string
    - THandlerFunction
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 63
    functionDepth: 0
    functionLinenumber: 63
    functionLinenumberEnd: 63
    functionName: YaHTTP::Router::Get
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.hpp
    functionUses: 0
    functionsReached:
    - YaHTTP::Router::map
    - std::move
    linkageType: ''
    returnType: void
    signature: void Get(const std::string& url, THandlerFunction handler, const std::string&
      name = "")
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::Router::map
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.hpp:64,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.hpp:64,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' url'
    - handler
    argTypes:
    - std::string
    - THandlerFunction
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 64
    functionDepth: 0
    functionLinenumber: 64
    functionLinenumberEnd: 64
    functionName: YaHTTP::Router::Post
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.hpp
    functionUses: 0
    functionsReached:
    - YaHTTP::Router::map
    - std::move
    linkageType: ''
    returnType: void
    signature: void Post(const std::string& url, THandlerFunction handler, const std::string&
      name = "")
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::Router::map
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.hpp:65,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.hpp:65,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' url'
    - handler
    argTypes:
    - std::string
    - THandlerFunction
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 65
    functionDepth: 0
    functionLinenumber: 65
    functionLinenumberEnd: 65
    functionName: YaHTTP::Router::Put
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.hpp
    functionUses: 0
    functionsReached:
    - YaHTTP::Router::map
    - std::move
    linkageType: ''
    returnType: void
    signature: void Put(const std::string& url, THandlerFunction handler, const std::string&
      name = "")
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::Router::map
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.hpp:66,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.hpp:66,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' url'
    - handler
    argTypes:
    - std::string
    - THandlerFunction
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 66
    functionDepth: 0
    functionLinenumber: 66
    functionLinenumberEnd: 66
    functionName: YaHTTP::Router::Patch
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.hpp
    functionUses: 0
    functionsReached:
    - YaHTTP::Router::map
    - std::move
    linkageType: ''
    returnType: void
    signature: void Patch(const std::string& url, THandlerFunction handler, const
      std::string& name = "")
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::Router::map
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.hpp:67,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.hpp:67,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' url'
    - handler
    argTypes:
    - std::string
    - THandlerFunction
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 67
    functionDepth: 0
    functionLinenumber: 67
    functionLinenumberEnd: 67
    functionName: YaHTTP::Router::Delete
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.hpp
    functionUses: 0
    functionsReached:
    - YaHTTP::Router::map
    - std::move
    linkageType: ''
    returnType: void
    signature: void Delete(const std::string& url, THandlerFunction handler, const
      std::string& name = "")
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::Router::map
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.hpp:68,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.hpp:68,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' url'
    - handler
    argTypes:
    - std::string
    - THandlerFunction
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 68
    functionDepth: 0
    functionLinenumber: 68
    functionLinenumberEnd: 68
    functionName: YaHTTP::Router::Any
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.hpp
    functionUses: 0
    functionsReached:
    - YaHTTP::Router::map
    - std::move
    linkageType: ''
    returnType: void
    signature: void Any(const std::string& url, THandlerFunction handler, const std::string&
      name = "")
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::Router::match
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.hpp:70,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' route'
    - ' requrl'
    - ' params'
    argTypes:
    - std::string
    - URL
    - std::map<std::string, TDelim>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 70
    functionDepth: 0
    functionLinenumber: 70
    functionLinenumberEnd: 70
    functionName: YaHTTP::Router::Match
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.hpp
    functionUses: 1
    functionsReached:
    - YaHTTP::Router::match
    linkageType: ''
    returnType: bool
    signature: bool Match(const std::string& route, const URL& requrl, std::map<std::string,
      TDelim>& params)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::Router::route
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.hpp:71,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - req
    - ' handler'
    argTypes:
    - Request*
    - THandlerFunction
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 71
    functionDepth: 0
    functionLinenumber: 71
    functionLinenumberEnd: 71
    functionName: YaHTTP::Router::Route
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.hpp
    functionUses: 1
    functionsReached:
    - YaHTTP::Router::route
    linkageType: ''
    returnType: RoutingResult
    signature: RoutingResult Route(Request *req, THandlerFunction& handler)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::Router::printRoutes
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.hpp:72,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - os
    argTypes:
    - std::ostream
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 72
    functionDepth: 0
    functionLinenumber: 72
    functionLinenumberEnd: 72
    functionName: YaHTTP::Router::PrintRoutes
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.hpp
    functionUses: 0
    functionsReached:
    - YaHTTP::Router::printRoutes
    linkageType: ''
    returnType: void
    signature: void PrintRoutes(std::ostream &os)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::Router::urlFor
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.hpp:74,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - name
    - ' arguments'
    argTypes:
    - std::string
    - strstr_map_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 74
    functionDepth: 0
    functionLinenumber: 74
    functionLinenumberEnd: 74
    functionName: YaHTTP::Router::URLFor
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.hpp
    functionUses: 0
    functionsReached:
    - YaHTTP::Router::urlFor
    linkageType: ''
    returnType: std::pair<std::string, std::string>
    signature: std::pair<std::string, std::string> URLFor(const std::string &name,
      const strstr_map_t& arguments)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 75
    functionDepth: 0
    functionLinenumber: 75
    functionLinenumberEnd: 75
    functionName: '& GetRoutes()'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: TRouteList
    signature: TRouteList & GetRoutes()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: routes::clear
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.hpp:76,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 76
    functionDepth: 1
    functionLinenumber: 76
    functionLinenumberEnd: 76
    functionName: YaHTTP::Router::Clear
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.hpp
    functionUses: 0
    functionsReached:
    - routes::clear
    linkageType: ''
    returnType: void
    signature: void Clear()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::isspace
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:11,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - c
    argTypes:
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12
      start: 10
    functionDepth: 0
    functionLinenumber: 10
    functionLinenumberEnd: 12
    functionName: YaHTTP::isspace
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp
    functionUses: 4
    functionsReached:
    - YaHTTP::isspace
    linkageType: ''
    returnType: bool
    signature: bool isspace(char c)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::isspace
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:15,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - c
    - ' loc'
    argTypes:
    - char
    - std::locale
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 16
      start: 14
    functionDepth: 0
    functionLinenumber: 14
    functionLinenumberEnd: 16
    functionName: YaHTTP::isspace
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp
    functionUses: 5
    functionsReached:
    - YaHTTP::isspace
    linkageType: ''
    returnType: bool
    signature: bool isspace(char c, const std::locale& loc)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::isxdigit
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:19,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - c
    argTypes:
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 20
      start: 18
    functionDepth: 0
    functionLinenumber: 18
    functionLinenumberEnd: 20
    functionName: YaHTTP::isxdigit
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp
    functionUses: 1
    functionsReached:
    - YaHTTP::isxdigit
    linkageType: ''
    returnType: bool
    signature: bool isxdigit(char c)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::isxdigit
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:23,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - c
    - ' loc'
    argTypes:
    - char
    - std::locale
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 24
      start: 22
    functionDepth: 0
    functionLinenumber: 22
    functionLinenumberEnd: 24
    functionName: YaHTTP::isxdigit
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp
    functionUses: 2
    functionsReached:
    - YaHTTP::isxdigit
    linkageType: ''
    returnType: bool
    signature: bool isxdigit(char c, const std::locale& loc)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::isdigit
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:27,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - c
    argTypes:
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 28
      start: 26
    functionDepth: 0
    functionLinenumber: 26
    functionLinenumberEnd: 28
    functionName: YaHTTP::isdigit
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp
    functionUses: 1
    functionsReached:
    - YaHTTP::isdigit
    linkageType: ''
    returnType: bool
    signature: bool isdigit(char c)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::isdigit
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:31,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - c
    - ' loc'
    argTypes:
    - char
    - std::locale
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 32
      start: 30
    functionDepth: 0
    functionLinenumber: 30
    functionLinenumberEnd: 32
    functionName: YaHTTP::isdigit
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp
    functionUses: 2
    functionsReached:
    - YaHTTP::isdigit
    linkageType: ''
    returnType: bool
    signature: bool isdigit(char c, const std::locale& loc)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::isalnum
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:35,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - c
    argTypes:
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 36
      start: 34
    functionDepth: 0
    functionLinenumber: 34
    functionLinenumberEnd: 36
    functionName: YaHTTP::isalnum
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp
    functionUses: 4
    functionsReached:
    - YaHTTP::isalnum
    linkageType: ''
    returnType: bool
    signature: bool isalnum(char c)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::isalnum
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:39,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - c
    - ' loc'
    argTypes:
    - char
    - std::locale
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 38
    functionDepth: 0
    functionLinenumber: 38
    functionLinenumberEnd: 40
    functionName: YaHTTP::isalnum
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp
    functionUses: 5
    functionsReached:
    - YaHTTP::isalnum
    linkageType: ''
    returnType: bool
    signature: bool isalnum(char c, const std::locale& loc)
  - BBCount: 51
    BranchProfiles: []
    Callsites:
    - Dst: length
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:46,1
    - Dst: ParseError
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:49,1
    - Dst: ParseError
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:52,1
    - Dst: append
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:56,1
    - Dst: find_first_of
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:59,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:64,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:64,1
    - Dst: erase
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:65,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:65,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:65,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:73,1
    - Dst: std::string::find
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:75,1
    - Dst: std::string::find
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:77,1
    - Dst: std::string::find
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:79,1
    - Dst: ParseError
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:82,1
    - Dst: std::transform
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:84,1
    - Dst: method::begin
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:84,1
    - Dst: method::end
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:84,1
    - Dst: method::begin
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:84,1
    - Dst: url::parse
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:85,1
    - Dst: Utility::parseUrlParameters
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:86,1
    - Dst: std::getline
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:93,1
    - Dst: statusText::size
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:95,1
    - Dst: YaHTTP::isspace
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:95,1
    - Dst: statusText::at
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:95,1
    - Dst: statusText::substr
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:96,1
    - Dst: statusText::find
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:97,1
    - Dst: statusText::substr
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:98,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:100,1
    - Dst: std::string::find
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:102,1
    - Dst: std::string::find
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:104,1
    - Dst: std::string::find
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:106,1
    - Dst: ParseError
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:109,1
    - Dst: std::string::empty
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:115,1
    - Dst: headers::find
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:116,1
    - Dst: headers::end
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:116,1
    - Dst: std::string::find
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:121,1
    - Dst: ParseError
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:122,1
    - Dst: std::string::substr
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:124,1
    - Dst: std::string::substr
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:125,1
    - Dst: std::string::begin
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:126,1
    - Dst: std::string::end
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:126,1
    - Dst: YaHTTP::isspace
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:127,1
    - Dst: ParseError
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:128,1
    - Dst: Utility::trim
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:130,1
    - Dst: std::transform
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:131,1
    - Dst: std::string::begin
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:131,1
    - Dst: std::string::end
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:131,1
    - Dst: std::string::begin
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:131,1
    - Dst: jar::parseSetCookieHeader
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:135,1
    - Dst: jar::parseCookieHeader
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:137,1
    - Dst: find
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:141,1
    - Dst: substr
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:144,1
    - Dst: ::atoi
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:145,1
    - Dst: substr
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:145,1
    - Dst: headers::find
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:148,1
    - Dst: headers::end
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:148,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:151,1
    - Dst: headers::find
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:164,1
    - Dst: headers::end
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:164,1
    - Dst: ParseError
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:170,1
    - Dst: ParseError
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:171,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:177,1
    - Dst: ready
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:177,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:179,1
    - Dst: find
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:184,1
    - Dst: ParseError
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:186,1
    - Dst: copy
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:187,1
    - Dst: erase
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:189,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:189,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:189,1
    - Dst: sscanf
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:190,1
    - Dst: ParseError
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:191,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:194,1
    - Dst: ParseError
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:195,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:199,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:200,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:201,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:201,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:203,1
    - Dst: ParseError
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:205,1
    - Dst: substr
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:207,1
    - Dst: erase
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:208,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:208,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:208,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:212,1
    - Dst: length
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:215,1
    - Dst: substr
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:216,1
    - Dst: str
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:216,1
    - Dst: length
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:221,1
    - Dst: ready
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:229,1
    CyclomaticComplexity: 79
    EdgeCount: 79
    ICount: 174
    argCount: 1
    argNames:
    - ' somedata'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 230
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 230
    functionName: YaHTTP::AsyncLoader<T>::feed
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp
    functionUses: 0
    functionsReached:
    - Utility::parseUrlParameters
    - std::string::end
    - find_first_of
    - YaHTTP::isspace
    - headers::find
    - std::string::size
    - erase
    - std::getline
    - find
    - std::transform
    - ready
    - std::string::substr
    - append
    - size
    - std::string::find
    - substr
    - headers::end
    - begin
    - std::string::empty
    - at
    - std::string::begin
    - pdns::max
    - url::parse
    - statusText::at
    - sscanf
    - copy
    - str
    - jar::parseCookieHeader
    - Utility::trim
    - ::atoi
    - ParseError
    - statusText::find
    - length
    - std::move
    - statusText::substr
    - method::begin
    - statusText::size
    - method::end
    - jar::parseSetCookieHeader
    linkageType: ''
    returnType: bool
    signature: bool AsyncLoader<T>::feed(const std::string& somedata)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:237,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:237,1
    - Dst: Utility::encodeURL
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:238,1
    - Dst: Utility::encodeURL
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:238,1
    - Dst: std::ostringstream::str
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:240,1
    - Dst: std::ostringstream::str
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:241,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:242,1
    - Dst: std::string::begin
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:242,1
    - Dst: std::string::end
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:242,1
    - Dst: YaHTTP::HTTPBase::versionStr
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:246,1
    - Dst: YaHTTP::HTTPBase::versionStr
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:248,1
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:249,1
    - Dst: Utility::status2text
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:250,1
    - Dst: find
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:260,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:260,1
    - Dst: find
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:263,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:263,1
    - Dst: find
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:263,1
    - Dst: Pkcs11Slot::logError
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:264,1
    - Dst: find
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:266,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:266,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:276,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:277,1
    - Dst: Utility::camelizeHeader
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:280,1
    - Dst: Utility::camelizeHeader
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:282,1
    - Dst: cookies::size
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:285,1
    - Dst: cookies::begin
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:289,1
    - Dst: cookies::end
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:289,1
    - Dst: Utility::encodeURL
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:294,1
    - Dst: Utility::encodeURL
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:294,1
    - Dst: cookies::begin
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:297,1
    - Dst: cookies::end
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:297,1
    - Dst: strcookie_map_t::const_iterator::second::str
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:299,1
    - Dst: YaHTTP::HTTPBase::renderer
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:305,1
    - Dst: r
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:308,1
    CyclomaticComplexity: 31
    EdgeCount: 31
    ICount: 66
    argCount: 1
    argNames:
    - ' os'
    argTypes:
    - std::ostream
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 310
      start: 232
    functionDepth: 2
    functionLinenumber: 232
    functionLinenumberEnd: 310
    functionName: YaHTTP::HTTPBase::write
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp
    functionUses: 0
    functionsReached:
    - std::string::end
    - Utility::camelizeHeader
    - std::string
    - YaHTTP::HTTPBase::renderer
    - find
    - std::ostringstream::str
    - YaHTTP::HTTPBase::versionStr
    - cookies::size
    - begin
    - empty
    - Pkcs11Slot::logError
    - Utility::encodeURL
    - std::string::begin
    - cookies::end
    - Utility::status2text
    - r
    - end
    - cookies::begin
    - strcookie_map_t::const_iterator::second::str
    linkageType: ''
    returnType: void
    signature: void HTTPBase::write(std::ostream& os) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Response::write
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:313,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ' os'
    - resp
    argTypes:
    - std::ostream
    - Response
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 315
      start: 312
    functionDepth: 0
    functionLinenumber: 312
    functionLinenumberEnd: 315
    functionName: '& operator<<(std::ostream& os, const Response &resp)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp
    functionUses: 0
    functionsReached:
    - Response::write
    linkageType: ''
    returnType: std::ostream
    signature: std::ostream & operator<<(std::ostream& os, const Response &resp)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::AsyncResponseLoader::initialize
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:319,1
    - Dst: good
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:320,1
    - Dst: read
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:322,1
    - Dst: gcount
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:323,1
    - Dst: clear
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:324,1
    - Dst: YaHTTP::AsyncResponseLoader::feed
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:325,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:325,1
    - Dst: gcount
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:325,1
    - Dst: YaHTTP::AsyncResponseLoader::ready
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:329,1
    - Dst: ParseError
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:330,1
    - Dst: YaHTTP::AsyncResponseLoader::finalize
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:331,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 2
    argNames:
    - ' is'
    - resp
    argTypes:
    - std::istream
    - Response
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 333
      start: 317
    functionDepth: 1
    functionLinenumber: 317
    functionLinenumberEnd: 333
    functionName: '& operator>>(std::istream& is, Response &resp)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp
    functionUses: 0
    functionsReached:
    - read
    - gcount
    - YaHTTP::AsyncResponseLoader::feed
    - YaHTTP::AsyncResponseLoader::initialize
    - YaHTTP::AsyncResponseLoader::finalize
    - ParseError
    - YaHTTP::AsyncResponseLoader::ready
    - clear
    - std::string
    - good
    linkageType: ''
    returnType: std::istream
    signature: std::istream & operator>>(std::istream& is, Response &resp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Request::write
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:336,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ' os'
    - req
    argTypes:
    - std::ostream
    - Request
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 338
      start: 335
    functionDepth: 0
    functionLinenumber: 335
    functionLinenumberEnd: 338
    functionName: '& operator<<(std::ostream& os, const Request &req)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp
    functionUses: 0
    functionsReached:
    - Request::write
    linkageType: ''
    returnType: std::ostream
    signature: std::ostream & operator<<(std::ostream& os, const Request &req)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::AsyncRequestLoader::initialize
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:342,1
    - Dst: good
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:343,1
    - Dst: read
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:345,1
    - Dst: gcount
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:346,1
    - Dst: clear
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:347,1
    - Dst: YaHTTP::AsyncRequestLoader::feed
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:348,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:348,1
    - Dst: gcount
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:348,1
    - Dst: YaHTTP::AsyncRequestLoader::ready
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:351,1
    - Dst: ParseError
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:352,1
    - Dst: YaHTTP::AsyncRequestLoader::finalize
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:353,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 2
    argNames:
    - ' is'
    - req
    argTypes:
    - std::istream
    - Request
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 355
      start: 340
    functionDepth: 1
    functionLinenumber: 340
    functionLinenumberEnd: 355
    functionName: '& operator>>(std::istream& is, Request &req)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp
    functionUses: 0
    functionsReached:
    - read
    - gcount
    - YaHTTP::AsyncRequestLoader::ready
    - YaHTTP::AsyncRequestLoader::initialize
    - YaHTTP::AsyncRequestLoader::feed
    - ParseError
    - YaHTTP::AsyncRequestLoader::finalize
    - clear
    - std::string
    - good
    linkageType: ''
    returnType: std::istream
    signature: std::istream & operator>>(std::istream& is, Request &req)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::isspace
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:11,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - c
    argTypes:
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12
      start: 10
    functionDepth: 0
    functionLinenumber: 10
    functionLinenumberEnd: 12
    functionName: YaHTTP::isspace
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp
    functionUses: 7
    functionsReached:
    - YaHTTP::isspace
    linkageType: ''
    returnType: bool
    signature: bool isspace(char c)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::isspace
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:15,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - c
    - ' loc'
    argTypes:
    - char
    - std::locale
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 16
      start: 14
    functionDepth: 0
    functionLinenumber: 14
    functionLinenumberEnd: 16
    functionName: YaHTTP::isspace
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp
    functionUses: 8
    functionsReached:
    - YaHTTP::isspace
    linkageType: ''
    returnType: bool
    signature: bool isspace(char c, const std::locale& loc)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::isxdigit
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:19,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - c
    argTypes:
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 20
      start: 18
    functionDepth: 0
    functionLinenumber: 18
    functionLinenumberEnd: 20
    functionName: YaHTTP::isxdigit
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp
    functionUses: 3
    functionsReached:
    - YaHTTP::isxdigit
    linkageType: ''
    returnType: bool
    signature: bool isxdigit(char c)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::isxdigit
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:23,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - c
    - ' loc'
    argTypes:
    - char
    - std::locale
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 24
      start: 22
    functionDepth: 0
    functionLinenumber: 22
    functionLinenumberEnd: 24
    functionName: YaHTTP::isxdigit
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp
    functionUses: 4
    functionsReached:
    - YaHTTP::isxdigit
    linkageType: ''
    returnType: bool
    signature: bool isxdigit(char c, const std::locale& loc)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::isdigit
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:27,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - c
    argTypes:
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 28
      start: 26
    functionDepth: 0
    functionLinenumber: 26
    functionLinenumberEnd: 28
    functionName: YaHTTP::isdigit
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp
    functionUses: 3
    functionsReached:
    - YaHTTP::isdigit
    linkageType: ''
    returnType: bool
    signature: bool isdigit(char c)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::isdigit
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:31,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - c
    - ' loc'
    argTypes:
    - char
    - std::locale
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 32
      start: 30
    functionDepth: 0
    functionLinenumber: 30
    functionLinenumberEnd: 32
    functionName: YaHTTP::isdigit
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp
    functionUses: 4
    functionsReached:
    - YaHTTP::isdigit
    linkageType: ''
    returnType: bool
    signature: bool isdigit(char c, const std::locale& loc)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::isalnum
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:35,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - c
    argTypes:
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 36
      start: 34
    functionDepth: 0
    functionLinenumber: 34
    functionLinenumberEnd: 36
    functionName: YaHTTP::isalnum
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp
    functionUses: 6
    functionsReached:
    - YaHTTP::isalnum
    linkageType: ''
    returnType: bool
    signature: bool isalnum(char c)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::isalnum
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:39,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - c
    - ' loc'
    argTypes:
    - char
    - std::locale
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 38
    functionDepth: 0
    functionLinenumber: 38
    functionLinenumberEnd: 40
    functionName: YaHTTP::isalnum
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp
    functionUses: 7
    functionsReached:
    - YaHTTP::isalnum
    linkageType: ''
    returnType: bool
    signature: bool isalnum(char c, const std::locale& loc)
  - BBCount: 51
    BranchProfiles: []
    Callsites:
    - Dst: length
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:46,1
    - Dst: ParseError
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:49,1
    - Dst: ParseError
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:52,1
    - Dst: append
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:56,1
    - Dst: find_first_of
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:59,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:64,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:64,1
    - Dst: erase
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:65,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:65,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:65,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:73,1
    - Dst: std::string::find
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:75,1
    - Dst: std::string::find
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:77,1
    - Dst: std::string::find
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:79,1
    - Dst: ParseError
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:82,1
    - Dst: std::transform
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:84,1
    - Dst: method::begin
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:84,1
    - Dst: method::end
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:84,1
    - Dst: method::begin
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:84,1
    - Dst: url::parse
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:85,1
    - Dst: Utility::parseUrlParameters
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:86,1
    - Dst: std::getline
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:93,1
    - Dst: statusText::size
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:95,1
    - Dst: YaHTTP::isspace
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:95,1
    - Dst: statusText::at
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:95,1
    - Dst: statusText::substr
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:96,1
    - Dst: statusText::find
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:97,1
    - Dst: statusText::substr
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:98,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:100,1
    - Dst: std::string::find
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:102,1
    - Dst: std::string::find
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:104,1
    - Dst: std::string::find
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:106,1
    - Dst: ParseError
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:109,1
    - Dst: std::string::empty
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:115,1
    - Dst: headers::find
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:116,1
    - Dst: headers::end
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:116,1
    - Dst: std::string::find
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:121,1
    - Dst: ParseError
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:122,1
    - Dst: std::string::substr
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:124,1
    - Dst: std::string::substr
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:125,1
    - Dst: std::string::begin
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:126,1
    - Dst: std::string::end
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:126,1
    - Dst: YaHTTP::isspace
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:127,1
    - Dst: ParseError
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:128,1
    - Dst: Utility::trim
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:130,1
    - Dst: std::transform
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:131,1
    - Dst: std::string::begin
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:131,1
    - Dst: std::string::end
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:131,1
    - Dst: std::string::begin
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:131,1
    - Dst: jar::parseSetCookieHeader
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:135,1
    - Dst: jar::parseCookieHeader
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:137,1
    - Dst: find
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:141,1
    - Dst: substr
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:144,1
    - Dst: ::atoi
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:145,1
    - Dst: substr
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:145,1
    - Dst: headers::find
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:148,1
    - Dst: headers::end
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:148,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:151,1
    - Dst: headers::find
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:164,1
    - Dst: headers::end
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:164,1
    - Dst: ParseError
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:170,1
    - Dst: ParseError
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:171,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:177,1
    - Dst: ready
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:177,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:179,1
    - Dst: find
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:184,1
    - Dst: ParseError
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:186,1
    - Dst: copy
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:187,1
    - Dst: erase
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:189,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:189,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:189,1
    - Dst: sscanf
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:190,1
    - Dst: ParseError
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:191,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:194,1
    - Dst: ParseError
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:195,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:199,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:200,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:201,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:201,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:203,1
    - Dst: ParseError
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:205,1
    - Dst: substr
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:207,1
    - Dst: erase
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:208,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:208,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:208,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:212,1
    - Dst: length
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:215,1
    - Dst: substr
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:216,1
    - Dst: str
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:216,1
    - Dst: length
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:221,1
    - Dst: ready
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:229,1
    CyclomaticComplexity: 79
    EdgeCount: 79
    ICount: 174
    argCount: 1
    argNames:
    - ' somedata'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 230
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 230
    functionName: YaHTTP::AsyncLoader<T>::feed
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp
    functionUses: 0
    functionsReached:
    - Utility::parseUrlParameters
    - std::string::end
    - find_first_of
    - YaHTTP::isspace
    - headers::find
    - std::string::size
    - erase
    - std::getline
    - find
    - std::transform
    - ready
    - std::string::substr
    - append
    - size
    - std::string::find
    - substr
    - headers::end
    - begin
    - std::string::empty
    - at
    - std::string::begin
    - pdns::max
    - url::parse
    - statusText::at
    - sscanf
    - copy
    - str
    - jar::parseCookieHeader
    - Utility::trim
    - ::atoi
    - ParseError
    - statusText::find
    - length
    - std::move
    - statusText::substr
    - method::begin
    - statusText::size
    - method::end
    - jar::parseSetCookieHeader
    linkageType: ''
    returnType: bool
    signature: bool AsyncLoader<T>::feed(const std::string& somedata)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:237,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:237,1
    - Dst: Utility::encodeURL
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:238,1
    - Dst: Utility::encodeURL
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:238,1
    - Dst: std::ostringstream::str
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:240,1
    - Dst: std::ostringstream::str
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:241,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:242,1
    - Dst: std::string::begin
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:242,1
    - Dst: std::string::end
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:242,1
    - Dst: YaHTTP::HTTPBase::versionStr
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:246,1
    - Dst: YaHTTP::HTTPBase::versionStr
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:248,1
    - Dst: empty
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:249,1
    - Dst: Utility::status2text
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:250,1
    - Dst: find
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:260,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:260,1
    - Dst: find
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:263,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:263,1
    - Dst: find
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:263,1
    - Dst: Pkcs11Slot::logError
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:264,1
    - Dst: find
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:266,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:266,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:276,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:277,1
    - Dst: Utility::camelizeHeader
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:280,1
    - Dst: Utility::camelizeHeader
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:282,1
    - Dst: cookies::size
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:285,1
    - Dst: cookies::begin
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:289,1
    - Dst: cookies::end
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:289,1
    - Dst: Utility::encodeURL
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:294,1
    - Dst: Utility::encodeURL
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:294,1
    - Dst: cookies::begin
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:297,1
    - Dst: cookies::end
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:297,1
    - Dst: strcookie_map_t::const_iterator::second::str
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:299,1
    - Dst: YaHTTP::HTTPBase::renderer
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:305,1
    - Dst: r
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:308,1
    CyclomaticComplexity: 31
    EdgeCount: 31
    ICount: 66
    argCount: 1
    argNames:
    - ' os'
    argTypes:
    - std::ostream
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 310
      start: 232
    functionDepth: 2
    functionLinenumber: 232
    functionLinenumberEnd: 310
    functionName: YaHTTP::HTTPBase::write
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp
    functionUses: 0
    functionsReached:
    - std::string::end
    - Utility::camelizeHeader
    - std::string
    - YaHTTP::HTTPBase::renderer
    - find
    - std::ostringstream::str
    - YaHTTP::HTTPBase::versionStr
    - cookies::size
    - begin
    - empty
    - Pkcs11Slot::logError
    - Utility::encodeURL
    - std::string::begin
    - cookies::end
    - Utility::status2text
    - r
    - end
    - cookies::begin
    - strcookie_map_t::const_iterator::second::str
    linkageType: ''
    returnType: void
    signature: void HTTPBase::write(std::ostream& os) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Response::write
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:313,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ' os'
    - resp
    argTypes:
    - std::ostream
    - Response
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 315
      start: 312
    functionDepth: 0
    functionLinenumber: 312
    functionLinenumberEnd: 315
    functionName: '& operator<<(std::ostream& os, const Response &resp)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp
    functionUses: 0
    functionsReached:
    - Response::write
    linkageType: ''
    returnType: std::ostream
    signature: std::ostream & operator<<(std::ostream& os, const Response &resp)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::AsyncResponseLoader::initialize
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:319,1
    - Dst: good
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:320,1
    - Dst: read
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:322,1
    - Dst: gcount
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:323,1
    - Dst: clear
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:324,1
    - Dst: YaHTTP::AsyncResponseLoader::feed
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:325,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:325,1
    - Dst: gcount
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:325,1
    - Dst: YaHTTP::AsyncResponseLoader::ready
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:329,1
    - Dst: ParseError
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:330,1
    - Dst: YaHTTP::AsyncResponseLoader::finalize
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:331,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 2
    argNames:
    - ' is'
    - resp
    argTypes:
    - std::istream
    - Response
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 333
      start: 317
    functionDepth: 1
    functionLinenumber: 317
    functionLinenumberEnd: 333
    functionName: '& operator>>(std::istream& is, Response &resp)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp
    functionUses: 0
    functionsReached:
    - read
    - gcount
    - YaHTTP::AsyncResponseLoader::feed
    - YaHTTP::AsyncResponseLoader::initialize
    - YaHTTP::AsyncResponseLoader::finalize
    - ParseError
    - YaHTTP::AsyncResponseLoader::ready
    - clear
    - std::string
    - good
    linkageType: ''
    returnType: std::istream
    signature: std::istream & operator>>(std::istream& is, Response &resp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Request::write
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:336,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ' os'
    - req
    argTypes:
    - std::ostream
    - Request
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 338
      start: 335
    functionDepth: 0
    functionLinenumber: 335
    functionLinenumberEnd: 338
    functionName: '& operator<<(std::ostream& os, const Request &req)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp
    functionUses: 0
    functionsReached:
    - Request::write
    linkageType: ''
    returnType: std::ostream
    signature: std::ostream & operator<<(std::ostream& os, const Request &req)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::AsyncRequestLoader::initialize
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:342,1
    - Dst: good
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:343,1
    - Dst: read
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:345,1
    - Dst: gcount
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:346,1
    - Dst: clear
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:347,1
    - Dst: YaHTTP::AsyncRequestLoader::feed
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:348,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:348,1
    - Dst: gcount
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:348,1
    - Dst: YaHTTP::AsyncRequestLoader::ready
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:351,1
    - Dst: ParseError
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:352,1
    - Dst: YaHTTP::AsyncRequestLoader::finalize
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp:353,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 2
    argNames:
    - ' is'
    - req
    argTypes:
    - std::istream
    - Request
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 355
      start: 340
    functionDepth: 1
    functionLinenumber: 340
    functionLinenumberEnd: 355
    functionName: '& operator>>(std::istream& is, Request &req)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp
    functionUses: 0
    functionsReached:
    - read
    - gcount
    - YaHTTP::AsyncRequestLoader::ready
    - YaHTTP::AsyncRequestLoader::initialize
    - YaHTTP::AsyncRequestLoader::feed
    - ParseError
    - YaHTTP::AsyncRequestLoader::finalize
    - clear
    - std::string
    - good
    linkageType: ''
    returnType: std::istream
    signature: std::istream & operator>>(std::istream& is, Request &req)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8
      start: 8
    functionDepth: 0
    functionLinenumber: 8
    functionLinenumberEnd: 8
    functionName: YaHTTP::Error::Error
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/exception.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Error()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' reason_'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 9
      start: 9
    functionDepth: 0
    functionLinenumber: 9
    functionLinenumberEnd: 9
    functionName: YaHTTP::Error::Error
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/exception.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Error(const std::string& reason_)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 10
      start: 10
    functionDepth: 0
    functionLinenumber: 10
    functionLinenumberEnd: 10
    functionName: ~Error() throw()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/exception.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~Error() throw()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/exception.hpp:14,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15
      start: 12
    functionDepth: 0
    functionLinenumber: 12
    functionLinenumberEnd: 15
    functionName: YaHTTP::Error::what
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/exception.hpp
    functionUses: 0
    functionsReached:
    - c_str
    linkageType: ''
    returnType: char
    signature: char * what() const throw()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 21
      start: 21
    functionDepth: 0
    functionLinenumber: 21
    functionLinenumberEnd: 21
    functionName: YaHTTP::ParseError::ParseError
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/exception.hpp
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ParseError()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' reason_'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 22
      start: 22
    functionDepth: 0
    functionLinenumber: 22
    functionLinenumberEnd: 22
    functionName: YaHTTP::ParseError::ParseError
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/exception.hpp
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ParseError(const std::string& reason_)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8
      start: 8
    functionDepth: 0
    functionLinenumber: 8
    functionLinenumberEnd: 8
    functionName: YaHTTP::Error::Error
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/exception.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Error()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' reason_'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 9
      start: 9
    functionDepth: 0
    functionLinenumber: 9
    functionLinenumberEnd: 9
    functionName: YaHTTP::Error::Error
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/exception.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Error(const std::string& reason_)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 10
      start: 10
    functionDepth: 0
    functionLinenumber: 10
    functionLinenumberEnd: 10
    functionName: ~Error() throw()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/exception.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~Error() throw()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/exception.hpp:14,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15
      start: 12
    functionDepth: 0
    functionLinenumber: 12
    functionLinenumberEnd: 15
    functionName: YaHTTP::Error::what
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/exception.hpp
    functionUses: 0
    functionsReached:
    - c_str
    linkageType: ''
    returnType: char
    signature: char * what() const throw()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 21
      start: 21
    functionDepth: 0
    functionLinenumber: 21
    functionLinenumberEnd: 21
    functionName: YaHTTP::ParseError::ParseError
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/exception.hpp
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ParseError()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' reason_'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 22
      start: 22
    functionDepth: 0
    functionLinenumber: 22
    functionLinenumberEnd: 22
    functionName: YaHTTP::ParseError::ParseError
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/exception.hpp
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ParseError(const std::string& reason_)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.cpp:15,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.cpp:15,1
    - Dst: Error
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.cpp:16,1
    - Dst: Error
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.cpp:18,1
    - Dst: std::transform
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.cpp:21,1
    - Dst: std::string::begin
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.cpp:21,1
    - Dst: std::string::end
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.cpp:21,1
    - Dst: std::string::begin
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.cpp:21,1
    - Dst: push_back
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.cpp:22,1
    - Dst: funcptr::make_tuple
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.cpp:22,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 13
    argCount: 4
    argNames:
    - ' method'
    - ' url'
    - handler
    - ' name'
    argTypes:
    - std::string
    - std::string
    - THandlerFunction
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 23
      start: 11
    functionDepth: 0
    functionLinenumber: 11
    functionLinenumberEnd: 23
    functionName: YaHTTP::Router::map
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.cpp
    functionUses: 14
    functionsReached:
    - std::string::begin
    - std::transform
    - funcptr::make_tuple
    - push_back
    - std::string::end
    - end
    - begin
    - Error
    linkageType: ''
    returnType: void
    signature: void Router::map(const std::string& method, const std::string& url,
      THandlerFunction handler, const std::string& name)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.cpp:32,1
    - Dst: path::size
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.cpp:32,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.cpp:37,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.cpp:40,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.cpp:40,1
    - Dst: static_cast<long>
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.cpp:40,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.cpp:40,1
    - Dst: static_cast<long>
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.cpp:40,1
    - Dst: std::string::substr
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.cpp:43,1
    - Dst: path::size
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.cpp:45,1
    - Dst: std::string::empty
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.cpp:46,1
    - Dst: funcptr::tie
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.cpp:47,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.cpp:49,1
    - Dst: path::size
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.cpp:50,1
    - Dst: path::size
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.cpp:54,1
    - Dst: funcptr::tie
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.cpp:64,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 44
    argCount: 3
    argNames:
    - ' route'
    - ' requrl'
    - params
    argTypes:
    - std::string
    - URL
    - std::map<std::string, TDelim>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 25
    functionDepth: 0
    functionLinenumber: 25
    functionLinenumberEnd: 82
    functionName: YaHTTP::Router::match
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.cpp
    functionUses: 2
    functionsReached:
    - funcptr::tie
    - std::string::substr
    - path::size
    - std::string::empty
    - size
    - static_cast<long>
    - begin
    - std::string
    linkageType: ''
    returnType: bool
    signature: bool Router::match(const std::string& route, const URL& requrl, std::map<std::string,
      TDelim> &params)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: funcptr::tie
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.cpp:94,1
    - Dst: std::map::clear
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.cpp:97,1
    - Dst: YaHTTP::Router::match
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.cpp:99,1
    - Dst: std::string::empty
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.cpp:101,1
    - Dst: Request*::parameters::clear
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.cpp:126,1
    - Dst: funcptr::tie
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.cpp:131,1
    - Dst: Request*::url::path::begin
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.cpp:132,1
    - Dst: Request*::url::path::begin
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.cpp:132,1
    - Dst: Utility::decodeURL
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.cpp:133,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.cpp:134,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.cpp:137,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 28
    argCount: 2
    argNames:
    - req
    - ' handler'
    argTypes:
    - Request*
    - THandlerFunction
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 84
    functionDepth: 1
    functionLinenumber: 84
    functionLinenumberEnd: 140
    functionName: YaHTTP::Router::route
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.cpp
    functionUses: 2
    functionsReached:
    - std::move
    - funcptr::tie
    - YaHTTP::Router::match
    - Request*::parameters::clear
    - std::map::clear
    - std::string::empty
    - Request*::url::path::begin
    - Utility::decodeURL
    linkageType: ''
    returnType: RoutingResult
    signature: RoutingResult Router::route(Request *req, THandlerFunction& handler)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.cpp:143,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.cpp:143,1
    - Dst: std::ostream::width
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.cpp:145,1
    - Dst: std::ostream::setf
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.cpp:146,1
    - Dst: std::ostream::width
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.cpp:147,1
    - Dst: std::get<0>
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.cpp:148,1
    - Dst: std::ostream::width
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.cpp:149,1
    - Dst: std::get<1>
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.cpp:150,1
    - Dst: std::ostream::width
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.cpp:151,1
    - Dst: std::ostream::setf
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.cpp:152,1
    - Dst: std::get<3>
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.cpp:153,1
    - Dst: TRouteList::iterator::get
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.cpp:156,1
    - Dst: TRouteList::iterator::get
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.cpp:156,1
    - Dst: TRouteList::iterator::get
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.cpp:156,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - os
    argTypes:
    - std::ostream
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 159
      start: 142
    functionDepth: 0
    functionLinenumber: 142
    functionLinenumberEnd: 159
    functionName: YaHTTP::Router::printRoutes
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.cpp
    functionUses: 2
    functionsReached:
    - end
    - std::get<0>
    - std::get<1>
    - TRouteList::iterator::get
    - std::ostream::width
    - begin
    - std::ostream::setf
    - std::get<3>
    linkageType: ''
    returnType: void
    signature: void Router::printRoutes(std::ostream &os)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.cpp:167,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.cpp:167,1
    - Dst: std::get<3>
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.cpp:169,1
    - Dst: std::get<1>
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.cpp:169,1
    - Dst: std::get<0>
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.cpp:169,1
    - Dst: TRouteList::iterator::get
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.cpp:171,1
    - Dst: TRouteList::iterator::get
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.cpp:171,1
    - Dst: TRouteList::iterator::get
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.cpp:171,1
    - Dst: Error
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.cpp:176,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.cpp:178,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.cpp:178,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.cpp:183,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.cpp:183,1
    - Dst: std::string::substr
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.cpp:184,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.cpp:186,1
    - Dst: std::string::begin
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.cpp:186,1
    - Dst: std::string::begin
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.cpp:186,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.cpp:188,1
    - Dst: std::string::begin
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.cpp:188,1
    - Dst: std::string::begin
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.cpp:188,1
    - Dst: find
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.cpp:189,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.cpp:189,1
    - Dst: Utility::encodeURL
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.cpp:190,1
    - Dst: std::string::substr
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.cpp:199,1
    - Dst: std::ostringstream::str
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.cpp:200,1
    - Dst: std::make_pair
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.cpp:201,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 36
    argCount: 2
    argNames:
    - name
    - ' arguments'
    argTypes:
    - std::string
    - strstr_map_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 202
      start: 161
    functionDepth: 0
    functionLinenumber: 161
    functionLinenumberEnd: 202
    functionName: YaHTTP::Router::urlFor
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.cpp
    functionUses: 2
    functionsReached:
    - std::string::begin
    - std::string::substr
    - std::ostringstream::str
    - end
    - std::get<0>
    - std::get<1>
    - TRouteList::iterator::get
    - begin
    - Error
    - std::make_pair
    - std::get<3>
    - Utility::encodeURL
    - std::string
    - std::string::size
    - find
    - static_cast<int>
    linkageType: ''
    returnType: std::pair<std::string,std::string>
    signature: std::pair<std::string,std::string> Router::urlFor(const std::string
      &name, const strstr_map_t& arguments)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.cpp:15,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.cpp:15,1
    - Dst: Error
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.cpp:16,1
    - Dst: Error
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.cpp:18,1
    - Dst: std::transform
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.cpp:21,1
    - Dst: std::string::begin
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.cpp:21,1
    - Dst: std::string::end
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.cpp:21,1
    - Dst: std::string::begin
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.cpp:21,1
    - Dst: push_back
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.cpp:22,1
    - Dst: funcptr::make_tuple
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.cpp:22,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 13
    argCount: 4
    argNames:
    - ' method'
    - ' url'
    - handler
    - ' name'
    argTypes:
    - std::string
    - std::string
    - THandlerFunction
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 23
      start: 11
    functionDepth: 0
    functionLinenumber: 11
    functionLinenumberEnd: 23
    functionName: YaHTTP::Router::map
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.cpp
    functionUses: 14
    functionsReached:
    - std::string::begin
    - std::transform
    - funcptr::make_tuple
    - push_back
    - std::string::end
    - end
    - begin
    - Error
    linkageType: ''
    returnType: void
    signature: void Router::map(const std::string& method, const std::string& url,
      THandlerFunction handler, const std::string& name)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.cpp:32,1
    - Dst: path::size
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.cpp:32,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.cpp:37,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.cpp:40,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.cpp:40,1
    - Dst: static_cast<long>
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.cpp:40,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.cpp:40,1
    - Dst: static_cast<long>
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.cpp:40,1
    - Dst: std::string::substr
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.cpp:43,1
    - Dst: path::size
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.cpp:45,1
    - Dst: std::string::empty
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.cpp:46,1
    - Dst: funcptr::tie
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.cpp:47,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.cpp:49,1
    - Dst: path::size
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.cpp:50,1
    - Dst: path::size
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.cpp:54,1
    - Dst: funcptr::tie
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.cpp:64,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 44
    argCount: 3
    argNames:
    - ' route'
    - ' requrl'
    - params
    argTypes:
    - std::string
    - URL
    - std::map<std::string, TDelim>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 25
    functionDepth: 0
    functionLinenumber: 25
    functionLinenumberEnd: 82
    functionName: YaHTTP::Router::match
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.cpp
    functionUses: 3
    functionsReached:
    - funcptr::tie
    - std::string::substr
    - path::size
    - std::string::empty
    - size
    - static_cast<long>
    - begin
    - std::string
    linkageType: ''
    returnType: bool
    signature: bool Router::match(const std::string& route, const URL& requrl, std::map<std::string,
      TDelim> &params)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: funcptr::tie
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.cpp:94,1
    - Dst: std::map::clear
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.cpp:97,1
    - Dst: YaHTTP::Router::match
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.cpp:99,1
    - Dst: std::string::empty
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.cpp:101,1
    - Dst: Request*::parameters::clear
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.cpp:126,1
    - Dst: funcptr::tie
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.cpp:131,1
    - Dst: Request*::url::path::begin
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.cpp:132,1
    - Dst: Request*::url::path::begin
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.cpp:132,1
    - Dst: Utility::decodeURL
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.cpp:133,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.cpp:134,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.cpp:137,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 28
    argCount: 2
    argNames:
    - req
    - ' handler'
    argTypes:
    - Request*
    - THandlerFunction
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 84
    functionDepth: 1
    functionLinenumber: 84
    functionLinenumberEnd: 140
    functionName: YaHTTP::Router::route
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.cpp
    functionUses: 2
    functionsReached:
    - std::move
    - funcptr::tie
    - YaHTTP::Router::match
    - Request*::parameters::clear
    - std::map::clear
    - std::string::empty
    - Request*::url::path::begin
    - Utility::decodeURL
    linkageType: ''
    returnType: RoutingResult
    signature: RoutingResult Router::route(Request *req, THandlerFunction& handler)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.cpp:143,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.cpp:143,1
    - Dst: std::ostream::width
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.cpp:145,1
    - Dst: std::ostream::setf
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.cpp:146,1
    - Dst: std::ostream::width
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.cpp:147,1
    - Dst: std::get<0>
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.cpp:148,1
    - Dst: std::ostream::width
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.cpp:149,1
    - Dst: std::get<1>
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.cpp:150,1
    - Dst: std::ostream::width
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.cpp:151,1
    - Dst: std::ostream::setf
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.cpp:152,1
    - Dst: std::get<3>
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.cpp:153,1
    - Dst: TRouteList::iterator::get
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.cpp:156,1
    - Dst: TRouteList::iterator::get
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.cpp:156,1
    - Dst: TRouteList::iterator::get
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.cpp:156,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - os
    argTypes:
    - std::ostream
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 159
      start: 142
    functionDepth: 0
    functionLinenumber: 142
    functionLinenumberEnd: 159
    functionName: YaHTTP::Router::printRoutes
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.cpp
    functionUses: 2
    functionsReached:
    - end
    - std::get<0>
    - std::get<1>
    - TRouteList::iterator::get
    - std::ostream::width
    - begin
    - std::ostream::setf
    - std::get<3>
    linkageType: ''
    returnType: void
    signature: void Router::printRoutes(std::ostream &os)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.cpp:167,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.cpp:167,1
    - Dst: std::get<3>
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.cpp:169,1
    - Dst: std::get<1>
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.cpp:169,1
    - Dst: std::get<0>
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.cpp:169,1
    - Dst: TRouteList::iterator::get
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.cpp:171,1
    - Dst: TRouteList::iterator::get
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.cpp:171,1
    - Dst: TRouteList::iterator::get
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.cpp:171,1
    - Dst: Error
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.cpp:176,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.cpp:178,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.cpp:178,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.cpp:183,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.cpp:183,1
    - Dst: std::string::substr
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.cpp:184,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.cpp:186,1
    - Dst: std::string::begin
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.cpp:186,1
    - Dst: std::string::begin
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.cpp:186,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.cpp:188,1
    - Dst: std::string::begin
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.cpp:188,1
    - Dst: std::string::begin
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.cpp:188,1
    - Dst: find
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.cpp:189,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.cpp:189,1
    - Dst: Utility::encodeURL
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.cpp:190,1
    - Dst: std::string::substr
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.cpp:199,1
    - Dst: std::ostringstream::str
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.cpp:200,1
    - Dst: std::make_pair
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.cpp:201,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 36
    argCount: 2
    argNames:
    - name
    - ' arguments'
    argTypes:
    - std::string
    - strstr_map_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 202
      start: 161
    functionDepth: 0
    functionLinenumber: 161
    functionLinenumberEnd: 202
    functionName: YaHTTP::Router::urlFor
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.cpp
    functionUses: 2
    functionsReached:
    - std::string::begin
    - std::string::substr
    - std::ostringstream::str
    - end
    - std::get<0>
    - std::get<1>
    - TRouteList::iterator::get
    - begin
    - Error
    - std::make_pair
    - std::get<3>
    - Utility::encodeURL
    - std::string
    - std::string::size
    - find
    - static_cast<int>
    linkageType: ''
    returnType: std::pair<std::string,std::string>
    signature: std::pair<std::string,std::string> Router::urlFor(const std::string
      &name, const strstr_map_t& arguments)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 52
    functionDepth: 0
    functionLinenumber: 52
    functionLinenumberEnd: 52
    functionName: YaHTTP::HTTPBase::SendBodyRender::SendBodyRender
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void SendBodyRender()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: HTTPBase*::body::length
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp:57,1
    - Dst: std::min
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp:58,1
    - Dst: static_cast<std::string::size_type>
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp:58,1
    - Dst: HTTPBase*::body::length
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp:58,1
    - Dst: HTTPBase*::body::substr
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp:60,1
    - Dst: HTTPBase*::body::length
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp:66,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 3
    argNames:
    - doc
    - ' os'
    - chunked
    argTypes:
    - HTTPBase*
    - std::ostream
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 54
    functionDepth: 0
    functionLinenumber: 54
    functionLinenumberEnd: 67
    functionName: operator()(const HTTPBase *doc, std::ostream& os, bool chunked)
      const
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 0
    functionsReached:
    - HTTPBase*::body::length
    - std::min
    - static_cast<std::string::size_type>
    - HTTPBase*::body::substr
    linkageType: ''
    returnType: size_t
    signature: size_t operator()(const HTTPBase *doc, std::ostream& os, bool chunked)
      const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' path_'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 72
    functionDepth: 0
    functionLinenumber: 72
    functionLinenumberEnd: 74
    functionName: YaHTTP::HTTPBase::SendFileRender::SendFileRender
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void SendFileRender(const std::string& path_)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp:82,1
    - Dst: std::ifstream::good
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp:86,1
    - Dst: std::ifstream::read
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp:87,1
    - Dst: std::ifstream::gcount
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp:88,1
    - Dst: write
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp:91,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 3
    argNames:
    - doc
    - ' os'
    - chunked
    argTypes:
    - HTTPBase*
    - std::ostream
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 76
    functionDepth: 0
    functionLinenumber: 76
    functionLinenumberEnd: 97
    functionName: operator()(const HTTPBase *doc __attribute__((unused)), std::ostream&
      os, bool chunked) const
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 0
    functionsReached:
    - write
    - c_str
    - std::ifstream::read
    - std::ifstream::gcount
    - std::ifstream::good
    linkageType: ''
    returnType: size_t
    signature: size_t operator()(const HTTPBase *doc __attribute__((unused)), std::ostream&
      os, bool chunked) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::HTTPBase::initialize
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp:103,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 104
      start: 102
    functionDepth: 0
    functionLinenumber: 102
    functionLinenumberEnd: 104
    functionName: YaHTTP::HTTPBase::HTTPBase
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 0
    functionsReached:
    - YaHTTP::HTTPBase::initialize
    linkageType: ''
    returnType: void
    signature: void HTTPBase()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 105
    functionDepth: 0
    functionLinenumber: 105
    functionLinenumberEnd: 105
    functionName: ~HTTPBase()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~HTTPBase()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SendBodyRender
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp:111,1
    - Dst: clear
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp:119,1
    - Dst: clear
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp:120,1
    - Dst: clear
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp:121,1
    - Dst: clear
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp:122,1
    - Dst: clear
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp:123,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 19
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 107
    functionDepth: 1
    functionLinenumber: 107
    functionLinenumberEnd: 128
    functionName: YaHTTP::HTTPBase::initialize
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 1
    functionsReached:
    - clear
    - SendBodyRender
    linkageType: ''
    returnType: void
    signature: void initialize()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 18
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - HTTPBase
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 143
      start: 130
    functionDepth: 0
    functionLinenumber: 130
    functionLinenumberEnd: 143
    functionName: YaHTTP::HTTPBase::HTTPBase
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void HTTPBase(const HTTPBase& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 19
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - HTTPBase
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 158
      start: 144
    functionDepth: 0
    functionLinenumber: 144
    functionLinenumberEnd: 158
    functionName: '& operator=(const HTTPBase& rhs)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: HTTPBase
    signature: HTTPBase & operator=(const HTTPBase& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 185
      start: 185
    functionDepth: 0
    functionLinenumber: 185
    functionLinenumberEnd: 185
    functionName: '& GET()'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: strstr_map_t
    signature: strstr_map_t & GET()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 186
      start: 186
    functionDepth: 0
    functionLinenumber: 186
    functionLinenumberEnd: 186
    functionName: '& POST()'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: strstr_map_t
    signature: strstr_map_t & POST()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 187
      start: 187
    functionDepth: 0
    functionLinenumber: 187
    functionLinenumberEnd: 187
    functionName: '& COOKIES()'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: strcookie_map_t
    signature: strcookie_map_t & COOKIES()
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Pkcs11Slot::logError
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp:194,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - version_
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 196
      start: 189
    functionDepth: 2
    functionLinenumber: 189
    functionLinenumberEnd: 196
    functionName: YaHTTP::HTTPBase::versionStr
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 2
    functionsReached:
    - Pkcs11Slot::logError
    linkageType: ''
    returnType: std::string
    signature: std::string versionStr(int version_) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::HTTPBase::write
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp:200,1
    - Dst: std::ostringstream::str
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp:201,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 202
      start: 198
    functionDepth: 0
    functionLinenumber: 198
    functionLinenumberEnd: 202
    functionName: YaHTTP::HTTPBase::str
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 0
    functionsReached:
    - YaHTTP::HTTPBase::write
    - std::ostringstream::str
    linkageType: ''
    returnType: std::string
    signature: std::string str() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::Response::initialize
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp:208,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 208
      start: 208
    functionDepth: 0
    functionLinenumber: 208
    functionLinenumberEnd: 208
    functionName: YaHTTP::Response::Response
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 2
    functionsReached:
    - YaHTTP::Response::initialize
    linkageType: ''
    returnType: void
    signature: void Response()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - HTTPBase
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 211
      start: 209
    functionDepth: 0
    functionLinenumber: 209
    functionLinenumberEnd: 211
    functionName: YaHTTP::Response::Response
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Response(const HTTPBase& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: HTTPBase::operator=
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp:213,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - HTTPBase
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 216
      start: 212
    functionDepth: 0
    functionLinenumber: 212
    functionLinenumberEnd: 216
    functionName: '& operator=(const HTTPBase& rhs) override'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 0
    functionsReached:
    - HTTPBase::operator=
    linkageType: ''
    returnType: Response
    signature: Response & operator=(const HTTPBase& rhs) override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::HTTPBase::initialize
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp:218,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 220
      start: 217
    functionDepth: 0
    functionLinenumber: 217
    functionLinenumberEnd: 220
    functionName: YaHTTP::Response::initialize
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 1
    functionsReached:
    - YaHTTP::HTTPBase::initialize
    linkageType: ''
    returnType: void
    signature: void initialize() override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::HTTPBase::initialize
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp:222,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - HTTPBase
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 229
      start: 221
    functionDepth: 0
    functionLinenumber: 221
    functionLinenumberEnd: 229
    functionName: YaHTTP::Response::initialize
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 1
    functionsReached:
    - YaHTTP::HTTPBase::initialize
    linkageType: ''
    returnType: void
    signature: void initialize(const HTTPBase& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::Request::initialize
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp:237,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 237
      start: 237
    functionDepth: 0
    functionLinenumber: 237
    functionLinenumberEnd: 237
    functionName: YaHTTP::Request::Request
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 3
    functionsReached:
    - YaHTTP::Request::initialize
    linkageType: ''
    returnType: void
    signature: void Request()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - HTTPBase
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 240
      start: 238
    functionDepth: 0
    functionLinenumber: 238
    functionLinenumberEnd: 240
    functionName: YaHTTP::Request::Request
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Request(const HTTPBase& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: HTTPBase::operator=
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp:242,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - HTTPBase
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 245
      start: 241
    functionDepth: 0
    functionLinenumber: 241
    functionLinenumberEnd: 245
    functionName: '& operator=(const HTTPBase& rhs) override'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 0
    functionsReached:
    - HTTPBase::operator=
    linkageType: ''
    returnType: Request
    signature: Request & operator=(const HTTPBase& rhs) override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::HTTPBase::initialize
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp:247,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 249
      start: 246
    functionDepth: 0
    functionLinenumber: 246
    functionLinenumberEnd: 249
    functionName: YaHTTP::Request::initialize
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 1
    functionsReached:
    - YaHTTP::HTTPBase::initialize
    linkageType: ''
    returnType: void
    signature: void initialize() override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::HTTPBase::initialize
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp:251,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - HTTPBase
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 258
      start: 250
    functionDepth: 0
    functionLinenumber: 250
    functionLinenumberEnd: 258
    functionName: YaHTTP::Request::initialize
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 1
    functionsReached:
    - YaHTTP::HTTPBase::initialize
    linkageType: ''
    returnType: void
    signature: void initialize(const HTTPBase& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::Request::url::parse
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp:260,1
    - Dst: YaHTTP::Request::url::host::find
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp:261,1
    - Dst: std::transform
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp:263,1
    - Dst: YaHTTP::Request::method::begin
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp:263,1
    - Dst: YaHTTP::Request::method::end
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp:263,1
    - Dst: YaHTTP::Request::method::begin
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp:263,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - ' method_'
    - ' url_'
    argTypes:
    - std::string
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 265
      start: 259
    functionDepth: 0
    functionLinenumber: 259
    functionLinenumberEnd: 265
    functionName: YaHTTP::Request::setup
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 0
    functionsReached:
    - std::transform
    - YaHTTP::Request::method::end
    - YaHTTP::Request::url::parse
    - YaHTTP::Request::method::begin
    - YaHTTP::Request::url::host::find
    linkageType: ''
    returnType: void
    signature: void setup(const std::string& method_, const std::string& url_)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: POST
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp:270,1
    - Dst: POST
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp:270,1
    - Dst: Utility::encodeURL
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp:271,1
    - Dst: Utility::encodeURL
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp:271,1
    - Dst: std::ostringstream::str
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp:274,1
    - Dst: std::ostringstream::str
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp:275,1
    - Dst: std::ostringstream::str
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp:275,1
    - Dst: POST
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp:282,1
    - Dst: POST
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp:282,1
    - Dst: Utility::encodeURL
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp:283,1
    - Dst: strstr_map_t::const_iterator::second::size
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp:283,1
    - Dst: Utility::encodeURL
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp:284,1
    - Dst: std::ostringstream::str
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp:287,1
    - Dst: std::ostringstream::str
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp:290,1
    - Dst: length
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp:291,1
    - Dst: std::ostringstream::str
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp:295,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 24
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 296
      start: 267
    functionDepth: 0
    functionLinenumber: 267
    functionLinenumberEnd: 296
    functionName: YaHTTP::Request::preparePost
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 0
    functionsReached:
    - length
    - POST
    - std::ostringstream::str
    - strstr_map_t::const_iterator::second::size
    - Utility::encodeURL
    linkageType: ''
    returnType: void
    signature: void preparePost(postformat_t format = urlencoded)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: str
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp:324,1
    - Dst: YaHTTP::AsyncLoader::target::initialize
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp:330,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 1
    argNames:
    - target_
    argTypes:
    - T*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 331
      start: 322
    functionDepth: 0
    functionLinenumber: 322
    functionLinenumberEnd: 331
    functionName: YaHTTP::AsyncLoader::initialize
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 0
    functionsReached:
    - YaHTTP::AsyncLoader::target::initialize
    - str
    linkageType: ''
    returnType: void
    signature: void initialize(T* target_)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 337
      start: 333
    functionDepth: 0
    functionLinenumber: 333
    functionLinenumberEnd: 337
    functionName: YaHTTP::AsyncLoader::ready
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool ready()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: flush
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp:339,1
    - Dst: YaHTTP::AsyncLoader::ready
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp:340,1
    - Dst: str
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp:341,1
    - Dst: headers::find
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp:342,1
    - Dst: headers::end
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp:343,1
    - Dst: Utility::iequals
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp:343,1
    - Dst: Utility::parseUrlParameters
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp:344,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp:346,1
    - Dst: str
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp:348,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 351
      start: 338
    functionDepth: 0
    functionLinenumber: 338
    functionLinenumberEnd: 351
    functionName: YaHTTP::AsyncLoader::finalize
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 0
    functionsReached:
    - std::move
    - Utility::iequals
    - YaHTTP::AsyncLoader::ready
    - Utility::parseUrlParameters
    - headers::end
    - str
    - headers::find
    - flush
    linkageType: ''
    returnType: void
    signature: void finalize()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 52
    functionDepth: 0
    functionLinenumber: 52
    functionLinenumberEnd: 52
    functionName: YaHTTP::HTTPBase::SendBodyRender::SendBodyRender
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void SendBodyRender()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: HTTPBase*::body::length
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp:57,1
    - Dst: std::min
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp:58,1
    - Dst: static_cast<std::string::size_type>
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp:58,1
    - Dst: HTTPBase*::body::length
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp:58,1
    - Dst: HTTPBase*::body::substr
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp:60,1
    - Dst: HTTPBase*::body::length
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp:66,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 3
    argNames:
    - doc
    - ' os'
    - chunked
    argTypes:
    - HTTPBase*
    - std::ostream
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 54
    functionDepth: 0
    functionLinenumber: 54
    functionLinenumberEnd: 67
    functionName: operator()(const HTTPBase *doc, std::ostream& os, bool chunked)
      const
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 0
    functionsReached:
    - HTTPBase*::body::length
    - std::min
    - static_cast<std::string::size_type>
    - HTTPBase*::body::substr
    linkageType: ''
    returnType: size_t
    signature: size_t operator()(const HTTPBase *doc, std::ostream& os, bool chunked)
      const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' path_'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 72
    functionDepth: 0
    functionLinenumber: 72
    functionLinenumberEnd: 74
    functionName: YaHTTP::HTTPBase::SendFileRender::SendFileRender
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void SendFileRender(const std::string& path_)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp:82,1
    - Dst: std::ifstream::good
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp:86,1
    - Dst: std::ifstream::read
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp:87,1
    - Dst: std::ifstream::gcount
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp:88,1
    - Dst: write
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp:91,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 3
    argNames:
    - doc
    - ' os'
    - chunked
    argTypes:
    - HTTPBase*
    - std::ostream
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 76
    functionDepth: 0
    functionLinenumber: 76
    functionLinenumberEnd: 97
    functionName: operator()(const HTTPBase *doc __attribute__((unused)), std::ostream&
      os, bool chunked) const
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 0
    functionsReached:
    - write
    - c_str
    - std::ifstream::read
    - std::ifstream::gcount
    - std::ifstream::good
    linkageType: ''
    returnType: size_t
    signature: size_t operator()(const HTTPBase *doc __attribute__((unused)), std::ostream&
      os, bool chunked) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::HTTPBase::initialize
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp:103,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 104
      start: 102
    functionDepth: 0
    functionLinenumber: 102
    functionLinenumberEnd: 104
    functionName: YaHTTP::HTTPBase::HTTPBase
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 0
    functionsReached:
    - YaHTTP::HTTPBase::initialize
    linkageType: ''
    returnType: void
    signature: void HTTPBase()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 105
    functionDepth: 0
    functionLinenumber: 105
    functionLinenumberEnd: 105
    functionName: ~HTTPBase()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~HTTPBase()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SendBodyRender
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp:111,1
    - Dst: clear
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp:119,1
    - Dst: clear
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp:120,1
    - Dst: clear
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp:121,1
    - Dst: clear
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp:122,1
    - Dst: clear
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp:123,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 19
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 107
    functionDepth: 1
    functionLinenumber: 107
    functionLinenumberEnd: 128
    functionName: YaHTTP::HTTPBase::initialize
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 6
    functionsReached:
    - clear
    - SendBodyRender
    linkageType: ''
    returnType: void
    signature: void initialize()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 18
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - HTTPBase
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 143
      start: 130
    functionDepth: 0
    functionLinenumber: 130
    functionLinenumberEnd: 143
    functionName: YaHTTP::HTTPBase::HTTPBase
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void HTTPBase(const HTTPBase& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 19
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - HTTPBase
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 158
      start: 144
    functionDepth: 0
    functionLinenumber: 144
    functionLinenumberEnd: 158
    functionName: '& operator=(const HTTPBase& rhs)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: HTTPBase
    signature: HTTPBase & operator=(const HTTPBase& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 185
      start: 185
    functionDepth: 0
    functionLinenumber: 185
    functionLinenumberEnd: 185
    functionName: '& GET()'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: strstr_map_t
    signature: strstr_map_t & GET()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 186
      start: 186
    functionDepth: 0
    functionLinenumber: 186
    functionLinenumberEnd: 186
    functionName: '& POST()'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: strstr_map_t
    signature: strstr_map_t & POST()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 187
      start: 187
    functionDepth: 0
    functionLinenumber: 187
    functionLinenumberEnd: 187
    functionName: '& COOKIES()'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: strcookie_map_t
    signature: strcookie_map_t & COOKIES()
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Pkcs11Slot::logError
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp:194,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - version_
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 196
      start: 189
    functionDepth: 2
    functionLinenumber: 189
    functionLinenumberEnd: 196
    functionName: YaHTTP::HTTPBase::versionStr
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 2
    functionsReached:
    - Pkcs11Slot::logError
    linkageType: ''
    returnType: std::string
    signature: std::string versionStr(int version_) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::HTTPBase::write
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp:200,1
    - Dst: std::ostringstream::str
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp:201,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 202
      start: 198
    functionDepth: 0
    functionLinenumber: 198
    functionLinenumberEnd: 202
    functionName: YaHTTP::HTTPBase::str
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 0
    functionsReached:
    - YaHTTP::HTTPBase::write
    - std::ostringstream::str
    linkageType: ''
    returnType: std::string
    signature: std::string str() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::Response::initialize
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp:208,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 208
      start: 208
    functionDepth: 0
    functionLinenumber: 208
    functionLinenumberEnd: 208
    functionName: YaHTTP::Response::Response
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 2
    functionsReached:
    - YaHTTP::Response::initialize
    linkageType: ''
    returnType: void
    signature: void Response()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - HTTPBase
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 211
      start: 209
    functionDepth: 0
    functionLinenumber: 209
    functionLinenumberEnd: 211
    functionName: YaHTTP::Response::Response
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Response(const HTTPBase& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: HTTPBase::operator=
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp:213,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - HTTPBase
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 216
      start: 212
    functionDepth: 0
    functionLinenumber: 212
    functionLinenumberEnd: 216
    functionName: '& operator=(const HTTPBase& rhs) override'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 0
    functionsReached:
    - HTTPBase::operator=
    linkageType: ''
    returnType: Response
    signature: Response & operator=(const HTTPBase& rhs) override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::HTTPBase::initialize
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp:218,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 220
      start: 217
    functionDepth: 0
    functionLinenumber: 217
    functionLinenumberEnd: 220
    functionName: YaHTTP::Response::initialize
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 2
    functionsReached:
    - YaHTTP::HTTPBase::initialize
    linkageType: ''
    returnType: void
    signature: void initialize() override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::HTTPBase::initialize
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp:222,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - HTTPBase
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 229
      start: 221
    functionDepth: 0
    functionLinenumber: 221
    functionLinenumberEnd: 229
    functionName: YaHTTP::Response::initialize
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 2
    functionsReached:
    - YaHTTP::HTTPBase::initialize
    linkageType: ''
    returnType: void
    signature: void initialize(const HTTPBase& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::Request::initialize
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp:237,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 237
      start: 237
    functionDepth: 0
    functionLinenumber: 237
    functionLinenumberEnd: 237
    functionName: YaHTTP::Request::Request
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 3
    functionsReached:
    - YaHTTP::Request::initialize
    linkageType: ''
    returnType: void
    signature: void Request()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - HTTPBase
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 240
      start: 238
    functionDepth: 0
    functionLinenumber: 238
    functionLinenumberEnd: 240
    functionName: YaHTTP::Request::Request
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Request(const HTTPBase& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: HTTPBase::operator=
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp:242,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - HTTPBase
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 245
      start: 241
    functionDepth: 0
    functionLinenumber: 241
    functionLinenumberEnd: 245
    functionName: '& operator=(const HTTPBase& rhs) override'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 0
    functionsReached:
    - HTTPBase::operator=
    linkageType: ''
    returnType: Request
    signature: Request & operator=(const HTTPBase& rhs) override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::HTTPBase::initialize
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp:247,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 249
      start: 246
    functionDepth: 0
    functionLinenumber: 246
    functionLinenumberEnd: 249
    functionName: YaHTTP::Request::initialize
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 2
    functionsReached:
    - YaHTTP::HTTPBase::initialize
    linkageType: ''
    returnType: void
    signature: void initialize() override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::HTTPBase::initialize
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp:251,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - HTTPBase
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 258
      start: 250
    functionDepth: 0
    functionLinenumber: 250
    functionLinenumberEnd: 258
    functionName: YaHTTP::Request::initialize
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 2
    functionsReached:
    - YaHTTP::HTTPBase::initialize
    linkageType: ''
    returnType: void
    signature: void initialize(const HTTPBase& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::Request::url::parse
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp:260,1
    - Dst: YaHTTP::Request::url::host::find
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp:261,1
    - Dst: std::transform
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp:263,1
    - Dst: YaHTTP::Request::method::begin
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp:263,1
    - Dst: YaHTTP::Request::method::end
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp:263,1
    - Dst: YaHTTP::Request::method::begin
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp:263,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - ' method_'
    - ' url_'
    argTypes:
    - std::string
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 265
      start: 259
    functionDepth: 0
    functionLinenumber: 259
    functionLinenumberEnd: 265
    functionName: YaHTTP::Request::setup
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 0
    functionsReached:
    - std::transform
    - YaHTTP::Request::method::end
    - YaHTTP::Request::url::parse
    - YaHTTP::Request::method::begin
    - YaHTTP::Request::url::host::find
    linkageType: ''
    returnType: void
    signature: void setup(const std::string& method_, const std::string& url_)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: POST
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp:270,1
    - Dst: POST
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp:270,1
    - Dst: Utility::encodeURL
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp:271,1
    - Dst: Utility::encodeURL
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp:271,1
    - Dst: std::ostringstream::str
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp:274,1
    - Dst: std::ostringstream::str
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp:275,1
    - Dst: std::ostringstream::str
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp:275,1
    - Dst: POST
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp:282,1
    - Dst: POST
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp:282,1
    - Dst: Utility::encodeURL
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp:283,1
    - Dst: strstr_map_t::const_iterator::second::size
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp:283,1
    - Dst: Utility::encodeURL
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp:284,1
    - Dst: std::ostringstream::str
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp:287,1
    - Dst: std::ostringstream::str
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp:290,1
    - Dst: length
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp:291,1
    - Dst: std::ostringstream::str
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp:295,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 24
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 296
      start: 267
    functionDepth: 0
    functionLinenumber: 267
    functionLinenumberEnd: 296
    functionName: YaHTTP::Request::preparePost
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 0
    functionsReached:
    - length
    - POST
    - std::ostringstream::str
    - strstr_map_t::const_iterator::second::size
    - Utility::encodeURL
    linkageType: ''
    returnType: void
    signature: void preparePost(postformat_t format = urlencoded)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: str
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp:324,1
    - Dst: YaHTTP::AsyncLoader::target::initialize
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp:330,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 1
    argNames:
    - target_
    argTypes:
    - T*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 331
      start: 322
    functionDepth: 0
    functionLinenumber: 322
    functionLinenumberEnd: 331
    functionName: YaHTTP::AsyncLoader::initialize
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 0
    functionsReached:
    - YaHTTP::AsyncLoader::target::initialize
    - str
    linkageType: ''
    returnType: void
    signature: void initialize(T* target_)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 337
      start: 333
    functionDepth: 0
    functionLinenumber: 333
    functionLinenumberEnd: 337
    functionName: YaHTTP::AsyncLoader::ready
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool ready()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: flush
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp:339,1
    - Dst: YaHTTP::AsyncLoader::ready
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp:340,1
    - Dst: str
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp:341,1
    - Dst: headers::find
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp:342,1
    - Dst: headers::end
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp:343,1
    - Dst: Utility::iequals
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp:343,1
    - Dst: Utility::parseUrlParameters
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp:344,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp:346,1
    - Dst: str
      Src: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp:348,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 351
      start: 338
    functionDepth: 0
    functionLinenumber: 338
    functionLinenumberEnd: 351
    functionName: YaHTTP::AsyncLoader::finalize
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 0
    functionsReached:
    - std::move
    - Utility::iequals
    - YaHTTP::AsyncLoader::ready
    - Utility::parseUrlParameters
    - headers::end
    - str
    - headers::find
    - flush
    linkageType: ''
    returnType: void
    signature: void finalize()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - X
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 53
    functionDepth: 0
    functionLinenumber: 53
    functionLinenumberEnd: 54
    functionName: COMPILER_ASSERT
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: COMPILER_ASSERT(X)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - a
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 107
      start: 106
    functionDepth: 0
    functionLinenumber: 106
    functionLinenumberEnd: 107
    functionName: LOAD128
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LOAD128(a)
  - 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: 111
      start: 110
    functionDepth: 0
    functionLinenumber: 110
    functionLinenumberEnd: 111
    functionName: STORE128
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: STORE128(a, b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - block_vec
    - ','
    - rkey
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 114
    functionDepth: 0
    functionLinenumber: 114
    functionLinenumberEnd: 116
    functionName: AES_XENCRYPT
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: AES_XENCRYPT(block_vec, rkey)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - block_vec
    - ','
    - rkey
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 122
      start: 120
    functionDepth: 0
    functionLinenumber: 120
    functionLinenumberEnd: 122
    functionName: AES_XENCRYPTLAST
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: AES_XENCRYPTLAST(block_vec, rkey)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - block_vec
    - ','
    - rkey
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 127
      start: 125
    functionDepth: 0
    functionLinenumber: 125
    functionLinenumberEnd: 127
    functionName: AES_XDECRYPT
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: AES_XDECRYPT(block_vec, rkey)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - block_vec
    - ','
    - rkey
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 133
      start: 131
    functionDepth: 0
    functionLinenumber: 131
    functionLinenumberEnd: 133
    functionName: AES_XDECRYPTLAST
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: AES_XDECRYPTLAST(block_vec, rkey)
  - 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: 137
      start: 136
    functionDepth: 0
    functionLinenumber: 136
    functionLinenumberEnd: 137
    functionName: XOR128
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: XOR128(a, b)
  - 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: 141
      start: 140
    functionDepth: 0
    functionLinenumber: 140
    functionLinenumberEnd: 141
    functionName: XOR128_3
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: XOR128_3(a, b, 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: 145
      start: 144
    functionDepth: 0
    functionLinenumber: 144
    functionLinenumberEnd: 145
    functionName: SET64x2
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SET64x2(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: 149
      start: 148
    functionDepth: 0
    functionLinenumber: 148
    functionLinenumberEnd: 149
    functionName: BYTESHL128
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BYTESHL128(a, b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 153
      start: 152
    functionDepth: 0
    functionLinenumber: 152
    functionLinenumberEnd: 153
    functionName: SHUFFLE32x4_3333
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SHUFFLE32x4_3333(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - rkey
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 157
      start: 156
    functionDepth: 0
    functionLinenumber: 156
    functionLinenumberEnd: 157
    functionName: RKINVERT
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RKINVERT(rkey)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - tweak
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 162
      start: 160
    functionDepth: 0
    functionLinenumber: 160
    functionLinenumberEnd: 162
    functionName: TWEAK_EXPAND
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TWEAK_EXPAND(tweak)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vshlq_n_u8
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:169,1
    - Dst: vreinterpretq_u8_u64
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:169,1
    - Dst: vshrq_n_u8
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:170,1
    - Dst: vreinterpretq_u8_u64
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:170,1
    - Dst: vdupq_n_u8
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:171,1
    - Dst: vextq_u8
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:172,1
    - Dst: vreinterpretq_u64_u8
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:173,1
    - Dst: vorrq_u8
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:173,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - a
    argTypes:
    - BlockVec
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 174
      start: 166
    functionDepth: 0
    functionLinenumber: 166
    functionLinenumberEnd: 174
    functionName: SHL1_128
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c
    functionUses: 0
    functionsReached:
    - vdupq_n_u8
    - vshlq_n_u8
    - vreinterpretq_u8_u64
    - vextq_u8
    - vshrq_n_u8
    - vorrq_u8
    - vreinterpretq_u64_u8
    linkageType: ''
    returnType: BlockVec
    signature: BlockVec SHL1_128(const BlockVec a)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vaeseq_u8
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:186,1
    - Dst: vreinterpretq_u8_u64
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:186,1
    - Dst: vmovq_n_u8
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:186,1
    - Dst: vreinterpretq_u64_u8
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:191,1
    - Dst: vqtbl1q_u8
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:191,1
    - Dst: vld1q_u8
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:191,1
    - Dst: SET64x2
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:193,1
    - Dst: XOR128
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:194,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - block_vec
    - rc
    argTypes:
    - BlockVec
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 195
      start: 181
    functionDepth: 0
    functionLinenumber: 181
    functionLinenumberEnd: 195
    functionName: AES_KEYGEN
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c
    functionUses: 0
    functionsReached:
    - XOR128
    - SET64x2
    - vreinterpretq_u8_u64
    - vaeseq_u8
    - vreinterpretq_u64_u8
    - vmovq_n_u8
    - vld1q_u8
    - vqtbl1q_u8
    linkageType: ''
    returnType: BlockVec
    signature: BlockVec AES_KEYGEN(BlockVec block_vec, const int rc)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - a
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 243
      start: 242
    functionDepth: 0
    functionLinenumber: 242
    functionLinenumberEnd: 243
    functionName: LOAD128
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LOAD128(a)
  - 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: 247
      start: 246
    functionDepth: 0
    functionLinenumber: 246
    functionLinenumberEnd: 247
    functionName: STORE128
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: STORE128(a, b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - block_vec
    - ','
    - rkey
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 251
      start: 250
    functionDepth: 0
    functionLinenumber: 250
    functionLinenumberEnd: 251
    functionName: AES_ENCRYPT
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: AES_ENCRYPT(block_vec, rkey)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - block_vec
    - ','
    - rkey
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 255
      start: 254
    functionDepth: 0
    functionLinenumber: 254
    functionLinenumberEnd: 255
    functionName: AES_ENCRYPTLAST
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: AES_ENCRYPTLAST(block_vec, rkey)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - block_vec
    - ','
    - rkey
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 259
      start: 258
    functionDepth: 0
    functionLinenumber: 258
    functionLinenumberEnd: 259
    functionName: AES_DECRYPT
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: AES_DECRYPT(block_vec, rkey)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - block_vec
    - ','
    - rkey
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 263
      start: 262
    functionDepth: 0
    functionLinenumber: 262
    functionLinenumberEnd: 263
    functionName: AES_DECRYPTLAST
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: AES_DECRYPTLAST(block_vec, rkey)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - block_vec
    - ','
    - rc
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 267
      start: 266
    functionDepth: 0
    functionLinenumber: 266
    functionLinenumberEnd: 267
    functionName: AES_KEYGEN
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: AES_KEYGEN(block_vec, rc)
  - 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: 271
      start: 270
    functionDepth: 0
    functionLinenumber: 270
    functionLinenumberEnd: 271
    functionName: XOR128
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: XOR128(a, b)
  - 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: 275
      start: 274
    functionDepth: 0
    functionLinenumber: 274
    functionLinenumberEnd: 275
    functionName: XOR128_3
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: XOR128_3(a, b, 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: 279
      start: 278
    functionDepth: 0
    functionLinenumber: 278
    functionLinenumberEnd: 279
    functionName: SET64x2
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SET64x2(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: 283
      start: 282
    functionDepth: 0
    functionLinenumber: 282
    functionLinenumberEnd: 283
    functionName: BYTESHL128
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BYTESHL128(a, b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 287
      start: 286
    functionDepth: 0
    functionLinenumber: 286
    functionLinenumberEnd: 287
    functionName: SHUFFLE32x4_3333
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SHUFFLE32x4_3333(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - rkey
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 291
      start: 290
    functionDepth: 0
    functionLinenumber: 290
    functionLinenumberEnd: 291
    functionName: RKINVERT
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RKINVERT(rkey)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - tweak
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 298
      start: 294
    functionDepth: 0
    functionLinenumber: 294
    functionLinenumberEnd: 298
    functionName: TWEAK_EXPAND
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TWEAK_EXPAND(tweak)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _mm_add_epi8
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:305,1
    - Dst: _mm_and_si128
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:306,1
    - Dst: _mm_srli_epi16
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:306,1
    - Dst: _mm_set1_epi8
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:306,1
    - Dst: _mm_srli_si128
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:307,1
    - Dst: _mm_or_si128
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:308,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - a
    argTypes:
    - BlockVec
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 309
      start: 302
    functionDepth: 0
    functionLinenumber: 302
    functionLinenumberEnd: 309
    functionName: SHL1_128
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c
    functionUses: 0
    functionsReached:
    - _mm_srli_si128
    - _mm_set1_epi8
    - _mm_or_si128
    - _mm_add_epi8
    - _mm_srli_epi16
    - _mm_and_si128
    linkageType: ''
    returnType: BlockVec
    signature: BlockVec SHL1_128(const BlockVec a)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LOAD128
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:365,1
    - Dst: EXPAND_KEY
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:367,1
    - Dst: EXPAND_KEY
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:368,1
    - Dst: EXPAND_KEY
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:369,1
    - Dst: EXPAND_KEY
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:370,1
    - Dst: EXPAND_KEY
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:371,1
    - Dst: EXPAND_KEY
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:372,1
    - Dst: EXPAND_KEY
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:373,1
    - Dst: EXPAND_KEY
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:374,1
    - Dst: EXPAND_KEY
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:375,1
    - Dst: EXPAND_KEY
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:376,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 2
    argNames:
    - rkeys
    - key
    argTypes:
    - KeySchedule
    - unsigned char[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 379
      start: 351
    functionDepth: 0
    functionLinenumber: 351
    functionLinenumberEnd: 379
    functionName: expand_key
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c
    functionUses: 0
    functionsReached:
    - EXPAND_KEY
    - LOAD128
    linkageType: ''
    returnType: void
    signature: void expand_key(KeySchedule rkeys, const unsigned char key[IPCRYPT_KEYBYTES])
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - RC
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 363
      start: 357
    functionDepth: 0
    functionLinenumber: 357
    functionLinenumberEnd: 363
    functionName: EXPAND_KEY
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: EXPAND_KEY(RC)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: AES_XENCRYPT
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:393,1
    - Dst: LOAD128
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:393,1
    - Dst: AES_XENCRYPT
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:395,1
    - Dst: AES_XENCRYPTLAST
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:397,1
    - Dst: XOR128
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:398,1
    - Dst: XOR128
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:401,1
    - Dst: LOAD128
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:401,1
    - Dst: AES_ENCRYPT
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:403,1
    - Dst: AES_ENCRYPTLAST
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:405,1
    - Dst: STORE128
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:407,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 2
    argNames:
    - x
    - st
    argTypes:
    - uint8_t[]
    - AesState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 408
      start: 384
    functionDepth: 0
    functionLinenumber: 384
    functionLinenumberEnd: 408
    functionName: aes_encrypt
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c
    functionUses: 0
    functionsReached:
    - AES_XENCRYPTLAST
    - XOR128
    - LOAD128
    - AES_XENCRYPT
    - STORE128
    - AES_ENCRYPT
    - AES_ENCRYPTLAST
    linkageType: ''
    returnType: void
    signature: void aes_encrypt(uint8_t x[16], const AesState *st)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RKINVERT
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:423,1
    - Dst: AES_XDECRYPT
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:427,1
    - Dst: LOAD128
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:427,1
    - Dst: AES_XDECRYPT
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:429,1
    - Dst: AES_XDECRYPTLAST
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:431,1
    - Dst: XOR128
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:432,1
    - Dst: XOR128
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:435,1
    - Dst: LOAD128
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:435,1
    - Dst: AES_DECRYPT
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:437,1
    - Dst: AES_DECRYPTLAST
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:439,1
    - Dst: STORE128
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:441,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 2
    argNames:
    - x
    - st
    argTypes:
    - uint8_t[]
    - AesState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 442
      start: 413
    functionDepth: 0
    functionLinenumber: 413
    functionLinenumberEnd: 442
    functionName: aes_decrypt
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c
    functionUses: 0
    functionsReached:
    - AES_XDECRYPT
    - AES_XDECRYPTLAST
    - XOR128
    - AES_DECRYPTLAST
    - LOAD128
    - RKINVERT
    - AES_DECRYPT
    - STORE128
    linkageType: ''
    returnType: void
    signature: void aes_decrypt(uint8_t x[16], const AesState *st)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TWEAK_EXPAND
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:452,1
    - Dst: AES_XENCRYPT
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:458,1
    - Dst: LOAD128
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:458,1
    - Dst: XOR128
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:458,1
    - Dst: AES_XENCRYPT
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:460,1
    - Dst: XOR128
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:460,1
    - Dst: AES_XENCRYPTLAST
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:462,1
    - Dst: XOR128
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:462,1
    - Dst: XOR128
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:463,1
    - Dst: XOR128
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:463,1
    - Dst: XOR128_3
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:466,1
    - Dst: LOAD128
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:466,1
    - Dst: AES_ENCRYPT
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:468,1
    - Dst: XOR128
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:468,1
    - Dst: AES_ENCRYPTLAST
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:470,1
    - Dst: XOR128
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:470,1
    - Dst: STORE128
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:472,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 3
    argNames:
    - x
    - st
    - tweak
    argTypes:
    - uint8_t[]
    - AesState*
    - uint8_t[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 473
      start: 448
    functionDepth: 0
    functionLinenumber: 448
    functionLinenumberEnd: 473
    functionName: aes_encrypt_with_tweak
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c
    functionUses: 0
    functionsReached:
    - AES_XENCRYPTLAST
    - XOR128
    - XOR128_3
    - LOAD128
    - STORE128
    - AES_XENCRYPT
    - TWEAK_EXPAND
    - AES_ENCRYPT
    - AES_ENCRYPTLAST
    linkageType: ''
    returnType: void
    signature: void aes_encrypt_with_tweak(uint8_t x[16], const AesState *st, const
      uint8_t tweak[IPCRYPT_TWEAKBYTES])
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TWEAK_EXPAND
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:484,1
    - Dst: RKINVERT
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:485,1
    - Dst: RKINVERT
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:491,1
    - Dst: AES_XDECRYPT
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:494,1
    - Dst: LOAD128
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:494,1
    - Dst: XOR128
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:494,1
    - Dst: AES_XDECRYPT
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:496,1
    - Dst: XOR128
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:496,1
    - Dst: AES_XDECRYPTLAST
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:498,1
    - Dst: XOR128
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:498,1
    - Dst: XOR128
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:499,1
    - Dst: XOR128
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:499,1
    - Dst: XOR128_3
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:501,1
    - Dst: LOAD128
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:501,1
    - Dst: AES_DECRYPT
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:503,1
    - Dst: XOR128
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:503,1
    - Dst: AES_DECRYPTLAST
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:505,1
    - Dst: XOR128
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:505,1
    - Dst: STORE128
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:507,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 3
    argNames:
    - x
    - st
    - tweak
    argTypes:
    - uint8_t[]
    - AesState*
    - uint8_t[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 508
      start: 479
    functionDepth: 0
    functionLinenumber: 479
    functionLinenumberEnd: 508
    functionName: aes_decrypt_with_tweak
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c
    functionUses: 0
    functionsReached:
    - AES_XDECRYPT
    - AES_XDECRYPTLAST
    - XOR128
    - XOR128_3
    - LOAD128
    - RKINVERT
    - AES_DECRYPT
    - AES_DECRYPTLAST
    - STORE128
    - TWEAK_EXPAND
    linkageType: ''
    returnType: void
    signature: void aes_decrypt_with_tweak(uint8_t x[16], const AesState *st, const
      uint8_t tweak[IPCRYPT_TWEAKBYTES])
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: COMPILER_ASSERT
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:517,1
    - Dst: AES_XENCRYPT
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:521,1
    - Dst: LOAD128
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:521,1
    - Dst: AES_XENCRYPT
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:523,1
    - Dst: AES_XENCRYPTLAST
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:525,1
    - Dst: XOR128
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:526,1
    - Dst: XOR128
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:529,1
    - Dst: LOAD128
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:529,1
    - Dst: AES_ENCRYPT
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:531,1
    - Dst: AES_ENCRYPTLAST
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:533,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 2
    argNames:
    - st
    - tweak
    argTypes:
    - NDXState*
    - uint8_t[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 536
      start: 510
    functionDepth: 0
    functionLinenumber: 510
    functionLinenumberEnd: 536
    functionName: aes_xex_tweak
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c
    functionUses: 0
    functionsReached:
    - AES_XENCRYPTLAST
    - XOR128
    - LOAD128
    - COMPILER_ASSERT
    - AES_XENCRYPT
    - AES_ENCRYPT
    - AES_ENCRYPTLAST
    linkageType: ''
    returnType: BlockVec
    signature: BlockVec aes_xex_tweak(const NDXState *st, const uint8_t tweak[IPCRYPT_NDX_TWEAKBYTES])
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: aes_xex_tweak
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:541,1
    - Dst: COMPILER_ASSERT
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:546,1
    - Dst: AES_XENCRYPT
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:550,1
    - Dst: XOR128
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:550,1
    - Dst: LOAD128
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:550,1
    - Dst: AES_XENCRYPT
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:552,1
    - Dst: AES_XENCRYPTLAST
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:554,1
    - Dst: XOR128_3
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:555,1
    - Dst: XOR128
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:558,1
    - Dst: XOR128
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:558,1
    - Dst: LOAD128
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:558,1
    - Dst: AES_ENCRYPT
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:560,1
    - Dst: AES_ENCRYPTLAST
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:562,1
    - Dst: XOR128
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:562,1
    - Dst: STORE128
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:564,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 3
    argNames:
    - x
    - st
    - tweak
    argTypes:
    - uint8_t[]
    - NDXState*
    - uint8_t[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 565
      start: 538
    functionDepth: 0
    functionLinenumber: 538
    functionLinenumberEnd: 565
    functionName: aes_xex_encrypt
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c
    functionUses: 0
    functionsReached:
    - AES_XENCRYPTLAST
    - XOR128
    - XOR128_3
    - LOAD128
    - COMPILER_ASSERT
    - aes_xex_tweak
    - AES_XENCRYPT
    - STORE128
    - AES_ENCRYPT
    - AES_ENCRYPTLAST
    linkageType: ''
    returnType: void
    signature: void aes_xex_encrypt(uint8_t x[16], const NDXState *st, const uint8_t
      tweak[IPCRYPT_NDX_TWEAKBYTES])
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: aes_xex_tweak
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:571,1
    - Dst: AES_XDECRYPT
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:578,1
    - Dst: XOR128
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:578,1
    - Dst: LOAD128
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:578,1
    - Dst: AES_XDECRYPT
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:580,1
    - Dst: RKINVERT
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:580,1
    - Dst: AES_XDECRYPTLAST
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:582,1
    - Dst: RKINVERT
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:582,1
    - Dst: XOR128_3
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:583,1
    - Dst: XOR128
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:586,1
    - Dst: XOR128
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:586,1
    - Dst: LOAD128
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:586,1
    - Dst: AES_DECRYPT
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:588,1
    - Dst: RKINVERT
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:588,1
    - Dst: AES_DECRYPTLAST
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:590,1
    - Dst: XOR128
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:590,1
    - Dst: STORE128
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:592,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 3
    argNames:
    - x
    - st
    - tweak
    argTypes:
    - uint8_t[]
    - NDXState*
    - uint8_t[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 593
      start: 567
    functionDepth: 0
    functionLinenumber: 567
    functionLinenumberEnd: 593
    functionName: aes_ndx_decrypt
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c
    functionUses: 0
    functionsReached:
    - AES_XDECRYPT
    - AES_XDECRYPTLAST
    - XOR128
    - XOR128_3
    - LOAD128
    - RKINVERT
    - AES_DECRYPT
    - AES_DECRYPTLAST
    - aes_xex_tweak
    - STORE128
    linkageType: ''
    returnType: void
    signature: void aes_ndx_decrypt(uint8_t x[16], const NDXState *st, const uint8_t
      tweak[IPCRYPT_NDX_TWEAKBYTES])
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 4
    argNames:
    - hex
    - hex_maxlen
    - bin
    - bin_len
    argTypes:
    - char*
    - size_t
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 630
      start: 603
    functionDepth: 0
    functionLinenumber: 603
    functionLinenumberEnd: 630
    functionName: bin2hex
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: 'char *

      bin2hex(char *hex, size_t hex_maxlen, const uint8_t *bin, size_t bin_len)'
  - BBCount: 6
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 24
    argCount: 4
    argNames:
    - bin
    - bin_maxlen
    - hex
    - hex_len
    argTypes:
    - uint8_t*
    - size_t
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 671
      start: 640
    functionDepth: 0
    functionLinenumber: 640
    functionLinenumberEnd: 671
    functionName: hex2bin
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: size_t hex2bin(uint8_t *bin, size_t bin_maxlen, const char *hex, size_t
      hex_len)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: explicit_bzero
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:681,1
    - Dst: SecureZeroMemory
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:683,1
    - Dst: memset_s
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:685,1
    - Dst: memset
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:687,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - pnt
    - len
    argTypes:
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 697
      start: 677
    functionDepth: 0
    functionLinenumber: 677
    functionLinenumberEnd: 697
    functionName: ipcrypt_zeroize
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c
    functionUses: 0
    functionsReached:
    - memset
    - memset_s
    - SecureZeroMemory
    - explicit_bzero
    linkageType: ''
    returnType: void
    signature: void ipcrypt_zeroize(void *pnt, size_t len)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: hex2bin
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:712,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 4
    argNames:
    - key
    - key_len
    - hex
    - hex_len
    argTypes:
    - uint8_t*
    - size_t
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 716
      start: 706
    functionDepth: 0
    functionLinenumber: 706
    functionLinenumberEnd: 716
    functionName: ipcrypt_key_from_hex
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c
    functionUses: 0
    functionsReached:
    - hex2bin
    linkageType: ''
    returnType: int
    signature: int ipcrypt_key_from_hex(uint8_t *key, size_t key_len, const char *hex,
      size_t hex_len)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: hex2bin
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:730,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - ndip
    - hex
    - hex_len
    argTypes:
    - uint8_t[]
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 734
      start: 724
    functionDepth: 0
    functionLinenumber: 724
    functionLinenumberEnd: 734
    functionName: ipcrypt_ndip_from_hex
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c
    functionUses: 0
    functionsReached:
    - hex2bin
    linkageType: ''
    returnType: int
    signature: int ipcrypt_ndip_from_hex(uint8_t ndip[IPCRYPT_NDIP_BYTES], const char
      *hex, size_t hex_len)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: hex2bin
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:748,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - ndip
    - hex
    - hex_len
    argTypes:
    - uint8_t[]
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 752
      start: 742
    functionDepth: 0
    functionLinenumber: 742
    functionLinenumberEnd: 752
    functionName: ipcrypt_ndx_ndip_from_hex
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c
    functionUses: 0
    functionsReached:
    - hex2bin
    linkageType: ''
    returnType: int
    signature: int ipcrypt_ndx_ndip_from_hex(uint8_t ndip[IPCRYPT_NDX_NDIP_BYTES],
      const char *hex, size_t hex_len)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: inet_pton
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:766,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:767,1
    - Dst: inet_pton
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:771,1
    - Dst: memset
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:772,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:775,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 2
    argNames:
    - ip16
    - ip_str
    argTypes:
    - uint8_t[]
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 779
      start: 759
    functionDepth: 0
    functionLinenumber: 759
    functionLinenumberEnd: 779
    functionName: ipcrypt_str_to_ip16
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c
    functionUses: 0
    functionsReached:
    - inet_pton
    - memcpy
    - memset
    linkageType: ''
    returnType: int
    signature: int ipcrypt_str_to_ip16(uint8_t ip16[16], const char *ip_str)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: COMPILER_ASSERT
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:792,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:807,1
    - Dst: inet_ntop
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:808,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:814,1
    - Dst: inet_ntop
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:815,1
    - Dst: strlen
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:819,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 23
    argCount: 2
    argNames:
    - ip_str
    - ip16
    argTypes:
    - char[]
    - uint8_t[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 820
      start: 786
    functionDepth: 0
    functionLinenumber: 786
    functionLinenumberEnd: 820
    functionName: ipcrypt_ip16_to_str
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c
    functionUses: 0
    functionsReached:
    - memcpy
    - strlen
    - inet_ntop
    - COMPILER_ASSERT
    linkageType: ''
    returnType: size_t
    signature: size_t ipcrypt_ip16_to_str(char ip_str[IPCRYPT_MAX_IP_STR_BYTES], const
      uint8_t ip16[16])
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:835,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:838,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:842,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 2
    argNames:
    - ip16
    - sa
    argTypes:
    - uint8_t[]
    - struct sockaddr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 846
      start: 830
    functionDepth: 0
    functionLinenumber: 830
    functionLinenumberEnd: 846
    functionName: ipcrypt_sockaddr_to_ip16
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c
    functionUses: 2
    functionsReached:
    - memset
    - memcpy
    linkageType: ''
    returnType: int
    signature: int ipcrypt_sockaddr_to_ip16(uint8_t ip16[16], const struct sockaddr
      *sa)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:863,1
    - Dst: memcmp
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:864,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:867,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:875,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 11
    argCount: 2
    argNames:
    - sa
    - ip16
    argTypes:
    - struct sockaddr_storage*
    - uint8_t[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 881
      start: 858
    functionDepth: 0
    functionLinenumber: 858
    functionLinenumberEnd: 881
    functionName: ipcrypt_ip16_to_sockaddr
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c
    functionUses: 2
    functionsReached:
    - memset
    - memcpy
    - memcmp
    linkageType: ''
    returnType: void
    signature: void ipcrypt_ip16_to_sockaddr(struct sockaddr_storage *sa, const uint8_t
      ip16[16])
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: expand_key
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:892,1
    - Dst: COMPILER_ASSERT
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:893,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:894,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - ipcrypt
    - key
    argTypes:
    - IPCrypt*
    - uint8_t[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 895
      start: 887
    functionDepth: 0
    functionLinenumber: 887
    functionLinenumberEnd: 895
    functionName: ipcrypt_init
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c
    functionUses: 0
    functionsReached:
    - expand_key
    - memcpy
    - COMPILER_ASSERT
    linkageType: ''
    returnType: void
    signature: void ipcrypt_init(IPCrypt *ipcrypt, const uint8_t key[IPCRYPT_KEYBYTES])
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ipcrypt_zeroize
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:903,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ipcrypt
    argTypes:
    - IPCrypt*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 904
      start: 900
    functionDepth: 0
    functionLinenumber: 900
    functionLinenumberEnd: 904
    functionName: ipcrypt_deinit
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c
    functionUses: 0
    functionsReached:
    - ipcrypt_zeroize
    linkageType: ''
    returnType: void
    signature: void ipcrypt_deinit(IPCrypt *ipcrypt)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: expand_key
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:919,1
    - Dst: expand_key
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:920,1
    - Dst: STORE128
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:925,1
    - Dst: XOR128
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:925,1
    - Dst: expand_key
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:934,1
    - Dst: COMPILER_ASSERT
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:937,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:938,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 2
    argNames:
    - ipcrypt
    - key
    argTypes:
    - IPCryptPFX*
    - uint8_t[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 941
      start: 911
    functionDepth: 0
    functionLinenumber: 911
    functionLinenumberEnd: 941
    functionName: ipcrypt_pfx_init
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c
    functionUses: 2
    functionsReached:
    - memcpy
    - XOR128
    - COMPILER_ASSERT
    - expand_key
    - STORE128
    linkageType: ''
    returnType: int
    signature: int ipcrypt_pfx_init(IPCryptPFX *ipcrypt, const uint8_t key[IPCRYPT_PFX_KEYBYTES])
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ipcrypt_zeroize
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:950,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ipcrypt
    argTypes:
    - IPCryptPFX*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 951
      start: 947
    functionDepth: 0
    functionLinenumber: 947
    functionLinenumberEnd: 951
    functionName: ipcrypt_pfx_deinit
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c
    functionUses: 2
    functionsReached:
    - ipcrypt_zeroize
    linkageType: ''
    returnType: void
    signature: void ipcrypt_pfx_deinit(IPCryptPFX *ipcrypt)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:957,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ip16
    argTypes:
    - uint8_t[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 958
      start: 953
    functionDepth: 0
    functionLinenumber: 953
    functionLinenumberEnd: 958
    functionName: ipcrypt_is_mapped_ipv4
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c
    functionUses: 0
    functionsReached:
    - memcmp
    linkageType: ''
    returnType: int
    signature: int ipcrypt_is_mapped_ipv4(const uint8_t ip16[16])
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:963,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - padded_prefix
    - prefix_len_bits
    argTypes:
    - uint8_t[]
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 971
      start: 960
    functionDepth: 0
    functionLinenumber: 960
    functionLinenumberEnd: 971
    functionName: ipcrypt_pfx_pad_prefix
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c
    functionUses: 0
    functionsReached:
    - memset
    linkageType: ''
    returnType: void
    signature: void ipcrypt_pfx_pad_prefix(uint8_t padded_prefix[16], unsigned int
      prefix_len_bits)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ip16
    - bit_index
    argTypes:
    - uint8_t[]
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 977
      start: 973
    functionDepth: 0
    functionLinenumber: 973
    functionLinenumberEnd: 977
    functionName: ipcrypt_pfx_get_bit
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint8_t
    signature: uint8_t ipcrypt_pfx_get_bit(const uint8_t ip16[16], const unsigned
      int bit_index)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 3
    argNames:
    - ip16
    - bit_index
    - bit_value
    argTypes:
    - uint8_t[]
    - unsigned int
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 990
      start: 979
    functionDepth: 0
    functionLinenumber: 979
    functionLinenumberEnd: 990
    functionName: ipcrypt_pfx_set_bit
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ipcrypt_pfx_set_bit(uint8_t ip16[16], const unsigned int bit_index,
      const uint8_t bit_value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LOAD128
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:1003,1
    - Dst: SHL1_128
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:1004,1
    - Dst: STORE128
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:1005,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - ip16
    argTypes:
    - uint8_t[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1007
      start: 992
    functionDepth: 0
    functionLinenumber: 992
    functionLinenumberEnd: 1007
    functionName: ipcrypt_pfx_shift_left
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c
    functionUses: 0
    functionsReached:
    - SHL1_128
    - LOAD128
    - STORE128
    linkageType: ''
    returnType: void
    signature: void ipcrypt_pfx_shift_left(uint8_t ip16[16])
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:1030,1
    - Dst: ipcrypt_is_mapped_ipv4
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:1031,1
    - Dst: ipcrypt_pfx_pad_prefix
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:1035,1
    - Dst: memset
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:1037,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:1046,1
    - Dst: ipcrypt_pfx_get_bit
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:1048,1
    - Dst: ipcrypt_pfx_shift_left
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:1049,1
    - Dst: ipcrypt_pfx_set_bit
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:1050,1
    - Dst: AES_XENCRYPT
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:1054,1
    - Dst: LOAD128
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:1054,1
    - Dst: AES_XENCRYPT
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:1055,1
    - Dst: LOAD128
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:1055,1
    - Dst: AES_XENCRYPT
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:1056,1
    - Dst: LOAD128
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:1056,1
    - Dst: AES_XENCRYPT
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:1057,1
    - Dst: LOAD128
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:1057,1
    - Dst: AES_XENCRYPT
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:1060,1
    - Dst: AES_XENCRYPT
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:1061,1
    - Dst: AES_XENCRYPT
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:1062,1
    - Dst: AES_XENCRYPT
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:1063,1
    - Dst: AES_XENCRYPTLAST
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:1066,1
    - Dst: AES_XENCRYPTLAST
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:1067,1
    - Dst: AES_XENCRYPTLAST
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:1068,1
    - Dst: AES_XENCRYPTLAST
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:1069,1
    - Dst: XOR128
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:1071,1
    - Dst: XOR128
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:1072,1
    - Dst: XOR128
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:1073,1
    - Dst: XOR128
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:1074,1
    - Dst: XOR128
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:1077,1
    - Dst: LOAD128
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:1077,1
    - Dst: XOR128
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:1078,1
    - Dst: LOAD128
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:1078,1
    - Dst: XOR128
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:1079,1
    - Dst: LOAD128
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:1079,1
    - Dst: XOR128
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:1080,1
    - Dst: LOAD128
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:1080,1
    - Dst: AES_ENCRYPT
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:1083,1
    - Dst: AES_ENCRYPT
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:1084,1
    - Dst: AES_ENCRYPT
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:1085,1
    - Dst: AES_ENCRYPT
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:1086,1
    - Dst: AES_ENCRYPTLAST
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:1089,1
    - Dst: AES_ENCRYPTLAST
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:1090,1
    - Dst: AES_ENCRYPTLAST
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:1091,1
    - Dst: AES_ENCRYPTLAST
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:1092,1
    - Dst: XOR128
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:1096,1
    - Dst: STORE128
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:1097,1
    - Dst: XOR128
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:1101,1
    - Dst: STORE128
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:1102,1
    - Dst: ipcrypt_pfx_get_bit
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:1105,1
    - Dst: ipcrypt_pfx_set_bit
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:1107,1
    - Dst: ipcrypt_pfx_set_bit
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:1108,1
    - Dst: ipcrypt_pfx_shift_left
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:1111,1
    - Dst: ipcrypt_pfx_set_bit
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:1112,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:1113,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:1115,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 64
    argCount: 2
    argNames:
    - ipcrypt
    - ip16
    argTypes:
    - IPCryptPFX*
    - uint8_t[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1116
      start: 1015
    functionDepth: 0
    functionLinenumber: 1015
    functionLinenumberEnd: 1116
    functionName: ipcrypt_pfx_encrypt_ip16
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c
    functionUses: 2
    functionsReached:
    - memcpy
    - ipcrypt_is_mapped_ipv4
    - AES_XENCRYPTLAST
    - XOR128
    - ipcrypt_pfx_get_bit
    - LOAD128
    - memset
    - AES_ENCRYPTLAST
    - AES_XENCRYPT
    - ipcrypt_pfx_pad_prefix
    - STORE128
    - AES_ENCRYPT
    - ipcrypt_pfx_shift_left
    - ipcrypt_pfx_set_bit
    linkageType: ''
    returnType: void
    signature: void ipcrypt_pfx_encrypt_ip16(const IPCryptPFX *ipcrypt, uint8_t ip16[16])
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:1139,1
    - Dst: ipcrypt_is_mapped_ipv4
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:1140,1
    - Dst: ipcrypt_pfx_pad_prefix
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:1144,1
    - Dst: memset
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:1146,1
    - Dst: AES_XENCRYPT
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:1155,1
    - Dst: LOAD128
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:1155,1
    - Dst: AES_XENCRYPT
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:1156,1
    - Dst: LOAD128
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:1156,1
    - Dst: AES_XENCRYPT
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:1158,1
    - Dst: AES_XENCRYPT
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:1159,1
    - Dst: AES_XENCRYPTLAST
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:1161,1
    - Dst: AES_XENCRYPTLAST
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:1162,1
    - Dst: XOR128
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:1163,1
    - Dst: XOR128
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:1164,1
    - Dst: XOR128
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:1167,1
    - Dst: LOAD128
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:1167,1
    - Dst: XOR128
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:1168,1
    - Dst: LOAD128
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:1168,1
    - Dst: AES_ENCRYPT
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:1170,1
    - Dst: AES_ENCRYPT
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:1171,1
    - Dst: AES_ENCRYPTLAST
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:1173,1
    - Dst: AES_ENCRYPTLAST
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:1174,1
    - Dst: XOR128
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:1176,1
    - Dst: STORE128
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:1177,1
    - Dst: ipcrypt_pfx_get_bit
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:1180,1
    - Dst: ipcrypt_pfx_set_bit
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:1182,1
    - Dst: ipcrypt_pfx_shift_left
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:1183,1
    - Dst: ipcrypt_pfx_set_bit
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:1184,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:1186,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 41
    argCount: 2
    argNames:
    - ipcrypt
    - ip16
    argTypes:
    - IPCryptPFX*
    - uint8_t[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1187
      start: 1123
    functionDepth: 0
    functionLinenumber: 1123
    functionLinenumberEnd: 1187
    functionName: ipcrypt_pfx_decrypt_ip16
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c
    functionUses: 0
    functionsReached:
    - memcpy
    - ipcrypt_is_mapped_ipv4
    - AES_XENCRYPTLAST
    - XOR128
    - LOAD128
    - ipcrypt_pfx_get_bit
    - ipcrypt_pfx_set_bit
    - memset
    - AES_XENCRYPT
    - ipcrypt_pfx_pad_prefix
    - STORE128
    - AES_ENCRYPT
    - ipcrypt_pfx_shift_left
    - AES_ENCRYPTLAST
    linkageType: ''
    returnType: void
    signature: void ipcrypt_pfx_decrypt_ip16(const IPCryptPFX *ipcrypt, uint8_t ip16[16])
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ipcrypt_str_to_ip16
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:1201,1
    - Dst: ipcrypt_pfx_encrypt_ip16
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:1204,1
    - Dst: ipcrypt_ip16_to_str
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:1205,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - ipcrypt
    - encrypted_ip_str
    - ip_str
    argTypes:
    - IPCryptPFX*
    - char[]
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1206
      start: 1194
    functionDepth: 0
    functionLinenumber: 1194
    functionLinenumberEnd: 1206
    functionName: ipcrypt_pfx_encrypt_ip_str
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c
    functionUses: 0
    functionsReached:
    - ipcrypt_str_to_ip16
    - ipcrypt_ip16_to_str
    - ipcrypt_pfx_encrypt_ip16
    linkageType: ''
    returnType: size_t
    signature: "size_t ipcrypt_pfx_encrypt_ip_str(const IPCryptPFX *ipcrypt,\n                           char
      \             encrypted_ip_str[IPCRYPT_MAX_IP_STR_BYTES],\n                           const
      char       *ip_str)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:1219,1
    - Dst: ipcrypt_str_to_ip16
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:1220,1
    - Dst: ipcrypt_pfx_decrypt_ip16
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:1223,1
    - Dst: ipcrypt_ip16_to_str
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:1224,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - ipcrypt
    - ip_str
    - encrypted_ip_str
    argTypes:
    - IPCryptPFX*
    - char[]
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1225
      start: 1212
    functionDepth: 0
    functionLinenumber: 1212
    functionLinenumberEnd: 1225
    functionName: ipcrypt_pfx_decrypt_ip_str
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c
    functionUses: 0
    functionsReached:
    - memset
    - ipcrypt_ip16_to_str
    - ipcrypt_str_to_ip16
    - ipcrypt_pfx_decrypt_ip16
    linkageType: ''
    returnType: size_t
    signature: "size_t ipcrypt_pfx_decrypt_ip_str(const IPCryptPFX *ipcrypt,\n                           char
      \             ip_str[IPCRYPT_MAX_IP_STR_BYTES],\n                           const
      char       *encrypted_ip_str)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: expand_key
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:1240,1
    - Dst: expand_key
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:1241,1
    - Dst: STORE128
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:1246,1
    - Dst: XOR128
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:1246,1
    - Dst: expand_key
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:1255,1
    - Dst: COMPILER_ASSERT
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:1258,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:1259,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 2
    argNames:
    - ipcrypt
    - key
    argTypes:
    - IPCryptNDX*
    - uint8_t[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1262
      start: 1232
    functionDepth: 0
    functionLinenumber: 1232
    functionLinenumberEnd: 1262
    functionName: ipcrypt_ndx_init
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c
    functionUses: 0
    functionsReached:
    - memcpy
    - XOR128
    - COMPILER_ASSERT
    - expand_key
    - STORE128
    linkageType: ''
    returnType: int
    signature: int ipcrypt_ndx_init(IPCryptNDX *ipcrypt, const uint8_t key[IPCRYPT_NDX_KEYBYTES])
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ipcrypt_zeroize
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:1270,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ipcrypt
    argTypes:
    - IPCryptNDX*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1271
      start: 1267
    functionDepth: 0
    functionLinenumber: 1267
    functionLinenumberEnd: 1271
    functionName: ipcrypt_ndx_deinit
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c
    functionUses: 0
    functionsReached:
    - ipcrypt_zeroize
    linkageType: ''
    returnType: void
    signature: void ipcrypt_ndx_deinit(IPCryptNDX *ipcrypt)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:1281,1
    - Dst: aes_encrypt
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:1282,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ipcrypt
    - ip16
    argTypes:
    - IPCrypt*
    - uint8_t[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1283
      start: 1277
    functionDepth: 0
    functionLinenumber: 1277
    functionLinenumberEnd: 1283
    functionName: ipcrypt_encrypt_ip16
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c
    functionUses: 0
    functionsReached:
    - memcpy
    - aes_encrypt
    linkageType: ''
    returnType: void
    signature: void ipcrypt_encrypt_ip16(const IPCrypt *ipcrypt, uint8_t ip16[16])
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:1293,1
    - Dst: aes_decrypt
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:1294,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ipcrypt
    - ip16
    argTypes:
    - IPCrypt*
    - uint8_t[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1295
      start: 1289
    functionDepth: 0
    functionLinenumber: 1289
    functionLinenumberEnd: 1295
    functionName: ipcrypt_decrypt_ip16
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c
    functionUses: 0
    functionsReached:
    - memcpy
    - aes_decrypt
    linkageType: ''
    returnType: void
    signature: void ipcrypt_decrypt_ip16(const IPCrypt *ipcrypt, uint8_t ip16[16])
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ipcrypt_str_to_ip16
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:1308,1
    - Dst: ipcrypt_encrypt_ip16
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:1311,1
    - Dst: ipcrypt_ip16_to_str
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:1312,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - ipcrypt
    - encrypted_ip_str
    - ip_str
    argTypes:
    - IPCrypt*
    - char[]
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1313
      start: 1302
    functionDepth: 0
    functionLinenumber: 1302
    functionLinenumberEnd: 1313
    functionName: ipcrypt_encrypt_ip_str
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c
    functionUses: 0
    functionsReached:
    - ipcrypt_str_to_ip16
    - ipcrypt_ip16_to_str
    - ipcrypt_encrypt_ip16
    linkageType: ''
    returnType: size_t
    signature: "size_t ipcrypt_encrypt_ip_str(const IPCrypt *ipcrypt, char encrypted_ip_str[IPCRYPT_MAX_IP_STR_BYTES],\n
      \                      const char *ip_str)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:1325,1
    - Dst: ipcrypt_str_to_ip16
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:1326,1
    - Dst: ipcrypt_decrypt_ip16
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:1329,1
    - Dst: ipcrypt_ip16_to_str
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:1330,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - ipcrypt
    - ip_str
    - encrypted_ip_str
    argTypes:
    - IPCrypt*
    - char[]
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1331
      start: 1319
    functionDepth: 0
    functionLinenumber: 1319
    functionLinenumberEnd: 1331
    functionName: ipcrypt_decrypt_ip_str
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c
    functionUses: 0
    functionsReached:
    - memset
    - ipcrypt_ip16_to_str
    - ipcrypt_str_to_ip16
    - ipcrypt_decrypt_ip16
    linkageType: ''
    returnType: size_t
    signature: "size_t ipcrypt_decrypt_ip_str(const IPCrypt *ipcrypt, char ip_str[IPCRYPT_MAX_IP_STR_BYTES],\n
      \                      const char *encrypted_ip_str)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: COMPILER_ASSERT
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:1344,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:1345,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:1347,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:1349,1
    - Dst: aes_encrypt_with_tweak
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:1351,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 4
    argNames:
    - ipcrypt
    - ndip
    - ip16
    - random
    argTypes:
    - IPCrypt*
    - uint8_t[]
    - uint8_t[]
    - uint8_t[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1352
      start: 1338
    functionDepth: 0
    functionLinenumber: 1338
    functionLinenumberEnd: 1352
    functionName: ipcrypt_nd_encrypt_ip16
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c
    functionUses: 0
    functionsReached:
    - memcpy
    - aes_encrypt_with_tweak
    - COMPILER_ASSERT
    linkageType: ''
    returnType: void
    signature: "void ipcrypt_nd_encrypt_ip16(const IPCrypt *ipcrypt, uint8_t ndip[IPCRYPT_NDIP_BYTES],\n
      \                       const uint8_t ip16[16], const uint8_t random[IPCRYPT_TWEAKBYTES])"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: COMPILER_ASSERT
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:1364,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:1365,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:1367,1
    - Dst: aes_decrypt_with_tweak
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:1369,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - ipcrypt
    - ip16
    - ndip
    argTypes:
    - IPCrypt*
    - uint8_t[]
    - uint8_t[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1370
      start: 1358
    functionDepth: 0
    functionLinenumber: 1358
    functionLinenumberEnd: 1370
    functionName: ipcrypt_nd_decrypt_ip16
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c
    functionUses: 0
    functionsReached:
    - memcpy
    - aes_decrypt_with_tweak
    - COMPILER_ASSERT
    linkageType: ''
    returnType: void
    signature: "void ipcrypt_nd_decrypt_ip16(const IPCrypt *ipcrypt, uint8_t ip16[16],\n
      \                       const uint8_t ndip[IPCRYPT_NDIP_BYTES])"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: COMPILER_ASSERT
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:1384,1
    - Dst: ipcrypt_str_to_ip16
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:1386,1
    - Dst: ipcrypt_nd_encrypt_ip16
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:1388,1
    - Dst: bin2hex
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:1390,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 4
    argNames:
    - ipcrypt
    - encrypted_ip_str
    - ip_str
    - random
    argTypes:
    - IPCrypt*
    - char[]
    - char*
    - uint8_t[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1393
      start: 1377
    functionDepth: 0
    functionLinenumber: 1377
    functionLinenumberEnd: 1393
    functionName: ipcrypt_nd_encrypt_ip_str
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c
    functionUses: 0
    functionsReached:
    - ipcrypt_str_to_ip16
    - bin2hex
    - ipcrypt_nd_encrypt_ip16
    - COMPILER_ASSERT
    linkageType: ''
    returnType: size_t
    signature: "size_t ipcrypt_nd_encrypt_ip_str(const IPCrypt *ipcrypt, char encrypted_ip_str[IPCRYPT_NDIP_STR_BYTES],\n
      \                         const char *ip_str, const uint8_t random[IPCRYPT_TWEAKBYTES])"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:1406,1
    - Dst: hex2bin
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:1408,1
    - Dst: strlen
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:1408,1
    - Dst: ipcrypt_nd_decrypt_ip16
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:1412,1
    - Dst: ipcrypt_ip16_to_str
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:1414,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - ipcrypt
    - ip_str
    - encrypted_ip_str
    argTypes:
    - IPCrypt*
    - char[]
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1415
      start: 1400
    functionDepth: 0
    functionLinenumber: 1400
    functionLinenumberEnd: 1415
    functionName: ipcrypt_nd_decrypt_ip_str
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c
    functionUses: 0
    functionsReached:
    - ipcrypt_ip16_to_str
    - hex2bin
    - memset
    - ipcrypt_nd_decrypt_ip16
    - strlen
    linkageType: ''
    returnType: size_t
    signature: "size_t ipcrypt_nd_decrypt_ip_str(const IPCrypt *ipcrypt, char ip_str[IPCRYPT_MAX_IP_STR_BYTES],\n
      \                         const char *encrypted_ip_str)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: COMPILER_ASSERT
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:1428,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:1429,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:1431,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:1433,1
    - Dst: aes_xex_encrypt
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:1435,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 4
    argNames:
    - ipcrypt
    - ndip
    - ip16
    - random
    argTypes:
    - IPCryptNDX*
    - uint8_t[]
    - uint8_t[]
    - uint8_t[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1436
      start: 1422
    functionDepth: 0
    functionLinenumber: 1422
    functionLinenumberEnd: 1436
    functionName: ipcrypt_ndx_encrypt_ip16
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c
    functionUses: 0
    functionsReached:
    - memcpy
    - aes_xex_encrypt
    - COMPILER_ASSERT
    linkageType: ''
    returnType: void
    signature: "void ipcrypt_ndx_encrypt_ip16(const IPCryptNDX *ipcrypt, uint8_t ndip[IPCRYPT_NDX_NDIP_BYTES],\n
      \                        const uint8_t ip16[16], const uint8_t random[IPCRYPT_NDX_TWEAKBYTES])"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: COMPILER_ASSERT
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:1448,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:1449,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:1451,1
    - Dst: aes_ndx_decrypt
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:1453,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - ipcrypt
    - ip16
    - ndip
    argTypes:
    - IPCryptNDX*
    - uint8_t[]
    - uint8_t[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1454
      start: 1442
    functionDepth: 0
    functionLinenumber: 1442
    functionLinenumberEnd: 1454
    functionName: ipcrypt_ndx_decrypt_ip16
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c
    functionUses: 0
    functionsReached:
    - memcpy
    - COMPILER_ASSERT
    - aes_ndx_decrypt
    linkageType: ''
    returnType: void
    signature: "void ipcrypt_ndx_decrypt_ip16(const IPCryptNDX *ipcrypt, uint8_t ip16[16],\n
      \                        const uint8_t ndip[IPCRYPT_NDX_NDIP_BYTES])"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: COMPILER_ASSERT
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:1469,1
    - Dst: ipcrypt_str_to_ip16
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:1471,1
    - Dst: ipcrypt_ndx_encrypt_ip16
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:1473,1
    - Dst: bin2hex
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:1475,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 4
    argNames:
    - ipcrypt
    - encrypted_ip_str
    - ip_str
    - random
    argTypes:
    - IPCryptNDX*
    - char[]
    - char*
    - uint8_t[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1478
      start: 1461
    functionDepth: 0
    functionLinenumber: 1461
    functionLinenumberEnd: 1478
    functionName: ipcrypt_ndx_encrypt_ip_str
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c
    functionUses: 0
    functionsReached:
    - ipcrypt_str_to_ip16
    - bin2hex
    - ipcrypt_ndx_encrypt_ip16
    - COMPILER_ASSERT
    linkageType: ''
    returnType: size_t
    signature: "size_t ipcrypt_ndx_encrypt_ip_str(const IPCryptNDX *ipcrypt,\n                           char
      encrypted_ip_str[IPCRYPT_NDX_NDIP_STR_BYTES], const char *ip_str,\n                           const
      uint8_t random[IPCRYPT_NDX_TWEAKBYTES])"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:1491,1
    - Dst: hex2bin
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:1493,1
    - Dst: strlen
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:1493,1
    - Dst: ipcrypt_ndx_decrypt_ip16
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:1497,1
    - Dst: ipcrypt_ip16_to_str
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c:1499,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - ipcrypt
    - ip_str
    - encrypted_ip_str
    argTypes:
    - IPCryptNDX*
    - char[]
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1500
      start: 1485
    functionDepth: 0
    functionLinenumber: 1485
    functionLinenumberEnd: 1500
    functionName: ipcrypt_ndx_decrypt_ip_str
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c
    functionUses: 0
    functionsReached:
    - ipcrypt_ndx_decrypt_ip16
    - ipcrypt_ip16_to_str
    - hex2bin
    - memset
    - strlen
    linkageType: ''
    returnType: size_t
    signature: "size_t ipcrypt_ndx_decrypt_ip_str(const IPCryptNDX *ipcrypt, char
      ip_str[IPCRYPT_MAX_IP_STR_BYTES],\n                           const char *encrypted_ip_str)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 18
      start: 17
    functionDepth: 0
    functionLinenumber: 17
    functionLinenumberEnd: 18
    functionName: __has_attribute
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/softaes/untrinsics.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: __has_attribute(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - x
    argTypes:
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 76
    functionDepth: 0
    functionLinenumber: 76
    functionLinenumberEnd: 88
    functionName: untrinsics_sbox
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/softaes/untrinsics.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint8_t
    signature: uint8_t untrinsics_sbox(const uint8_t x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - x
    argTypes:
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 90
    functionDepth: 0
    functionLinenumber: 90
    functionLinenumberEnd: 102
    functionName: untrinsics_inv_sbox
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/softaes/untrinsics.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint8_t
    signature: uint8_t untrinsics_inv_sbox(const uint8_t x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 104
    functionDepth: 0
    functionLinenumber: 104
    functionLinenumberEnd: 105
    functionName: untrinsics_sbox
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/softaes/untrinsics.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: untrinsics_sbox(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 105
    functionDepth: 0
    functionLinenumber: 105
    functionLinenumberEnd: 106
    functionName: untrinsics_inv_sbox
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/softaes/untrinsics.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: untrinsics_inv_sbox(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - x
    argTypes:
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 113
      start: 109
    functionDepth: 0
    functionLinenumber: 109
    functionLinenumberEnd: 113
    functionName: untrinsics_xtime
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/softaes/untrinsics.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint8_t
    signature: uint8_t untrinsics_xtime(uint8_t x)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: untrinsics_xtime
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/softaes/untrinsics.h:119,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - x
    argTypes:
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 116
    functionDepth: 0
    functionLinenumber: 116
    functionLinenumberEnd: 120
    functionName: untrinsics_mul2
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/softaes/untrinsics.h
    functionUses: 0
    functionsReached:
    - untrinsics_xtime
    linkageType: ''
    returnType: uint8_t
    signature: uint8_t untrinsics_mul2(uint8_t x)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: untrinsics_xtime
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/softaes/untrinsics.h:126,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - x
    argTypes:
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 127
      start: 123
    functionDepth: 0
    functionLinenumber: 123
    functionLinenumberEnd: 127
    functionName: untrinsics_mul3
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/softaes/untrinsics.h
    functionUses: 0
    functionsReached:
    - untrinsics_xtime
    linkageType: ''
    returnType: uint8_t
    signature: uint8_t untrinsics_mul3(uint8_t x)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: untrinsics_xtime
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/softaes/untrinsics.h:133,1
    - Dst: untrinsics_xtime
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/softaes/untrinsics.h:134,1
    - Dst: untrinsics_xtime
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/softaes/untrinsics.h:135,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - x
    argTypes:
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 137
      start: 130
    functionDepth: 0
    functionLinenumber: 130
    functionLinenumberEnd: 137
    functionName: untrinsics_mul9
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/softaes/untrinsics.h
    functionUses: 0
    functionsReached:
    - untrinsics_xtime
    linkageType: ''
    returnType: uint8_t
    signature: uint8_t untrinsics_mul9(uint8_t x)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: untrinsics_xtime
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/softaes/untrinsics.h:143,1
    - Dst: untrinsics_xtime
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/softaes/untrinsics.h:144,1
    - Dst: untrinsics_xtime
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/softaes/untrinsics.h:145,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - x
    argTypes:
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 140
    functionDepth: 0
    functionLinenumber: 140
    functionLinenumberEnd: 147
    functionName: untrinsics_mul0b
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/softaes/untrinsics.h
    functionUses: 0
    functionsReached:
    - untrinsics_xtime
    linkageType: ''
    returnType: uint8_t
    signature: uint8_t untrinsics_mul0b(uint8_t x)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: untrinsics_xtime
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/softaes/untrinsics.h:153,1
    - Dst: untrinsics_xtime
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/softaes/untrinsics.h:154,1
    - Dst: untrinsics_xtime
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/softaes/untrinsics.h:155,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - x
    argTypes:
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 157
      start: 150
    functionDepth: 0
    functionLinenumber: 150
    functionLinenumberEnd: 157
    functionName: untrinsics_mul0d
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/softaes/untrinsics.h
    functionUses: 0
    functionsReached:
    - untrinsics_xtime
    linkageType: ''
    returnType: uint8_t
    signature: uint8_t untrinsics_mul0d(uint8_t x)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: untrinsics_xtime
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/softaes/untrinsics.h:163,1
    - Dst: untrinsics_xtime
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/softaes/untrinsics.h:164,1
    - Dst: untrinsics_xtime
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/softaes/untrinsics.h:165,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - x
    argTypes:
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 167
      start: 160
    functionDepth: 0
    functionLinenumber: 160
    functionLinenumberEnd: 167
    functionName: untrinsics_mul0e
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/softaes/untrinsics.h
    functionUses: 0
    functionsReached:
    - untrinsics_xtime
    linkageType: ''
    returnType: uint8_t
    signature: uint8_t untrinsics_mul0e(uint8_t x)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: untrinsics_sbox
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/softaes/untrinsics.h:174,1
    - Dst: untrinsics_sbox
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/softaes/untrinsics.h:175,1
    - Dst: untrinsics_sbox
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/softaes/untrinsics.h:176,1
    - Dst: untrinsics_sbox
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/softaes/untrinsics.h:177,1
    - Dst: untrinsics_sbox
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/softaes/untrinsics.h:178,1
    - Dst: untrinsics_sbox
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/softaes/untrinsics.h:179,1
    - Dst: untrinsics_sbox
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/softaes/untrinsics.h:180,1
    - Dst: untrinsics_sbox
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/softaes/untrinsics.h:181,1
    - Dst: untrinsics_sbox
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/softaes/untrinsics.h:182,1
    - Dst: untrinsics_sbox
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/softaes/untrinsics.h:183,1
    - Dst: untrinsics_sbox
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/softaes/untrinsics.h:184,1
    - Dst: untrinsics_sbox
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/softaes/untrinsics.h:185,1
    - Dst: untrinsics_sbox
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/softaes/untrinsics.h:186,1
    - Dst: untrinsics_sbox
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/softaes/untrinsics.h:187,1
    - Dst: untrinsics_sbox
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/softaes/untrinsics.h:188,1
    - Dst: untrinsics_sbox
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/softaes/untrinsics.h:189,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/softaes/untrinsics.h:190,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 18
    argCount: 1
    argNames:
    - s
    argTypes:
    - uint8_t[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 191
      start: 170
    functionDepth: 0
    functionLinenumber: 170
    functionLinenumberEnd: 191
    functionName: untrinsics_sub_shiftrows
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/softaes/untrinsics.h
    functionUses: 0
    functionsReached:
    - memcpy
    - untrinsics_sbox
    linkageType: ''
    returnType: void
    signature: void untrinsics_sub_shiftrows(uint8_t s[16])
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: untrinsics_inv_sbox
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/softaes/untrinsics.h:198,1
    - Dst: untrinsics_inv_sbox
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/softaes/untrinsics.h:199,1
    - Dst: untrinsics_inv_sbox
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/softaes/untrinsics.h:200,1
    - Dst: untrinsics_inv_sbox
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/softaes/untrinsics.h:201,1
    - Dst: untrinsics_inv_sbox
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/softaes/untrinsics.h:202,1
    - Dst: untrinsics_inv_sbox
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/softaes/untrinsics.h:203,1
    - Dst: untrinsics_inv_sbox
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/softaes/untrinsics.h:204,1
    - Dst: untrinsics_inv_sbox
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/softaes/untrinsics.h:205,1
    - Dst: untrinsics_inv_sbox
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/softaes/untrinsics.h:206,1
    - Dst: untrinsics_inv_sbox
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/softaes/untrinsics.h:207,1
    - Dst: untrinsics_inv_sbox
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/softaes/untrinsics.h:208,1
    - Dst: untrinsics_inv_sbox
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/softaes/untrinsics.h:209,1
    - Dst: untrinsics_inv_sbox
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/softaes/untrinsics.h:210,1
    - Dst: untrinsics_inv_sbox
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/softaes/untrinsics.h:211,1
    - Dst: untrinsics_inv_sbox
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/softaes/untrinsics.h:212,1
    - Dst: untrinsics_inv_sbox
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/softaes/untrinsics.h:213,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/softaes/untrinsics.h:214,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 18
    argCount: 1
    argNames:
    - s
    argTypes:
    - uint8_t[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 215
      start: 194
    functionDepth: 0
    functionLinenumber: 194
    functionLinenumberEnd: 215
    functionName: untrinsics_invsub_shiftrows
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/softaes/untrinsics.h
    functionUses: 0
    functionsReached:
    - memcpy
    - untrinsics_inv_sbox
    linkageType: ''
    returnType: void
    signature: void untrinsics_invsub_shiftrows(uint8_t s[16])
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: untrinsics_mul2
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/softaes/untrinsics.h:224,1
    - Dst: untrinsics_mul3
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/softaes/untrinsics.h:224,1
    - Dst: untrinsics_mul2
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/softaes/untrinsics.h:225,1
    - Dst: untrinsics_mul3
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/softaes/untrinsics.h:225,1
    - Dst: untrinsics_mul2
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/softaes/untrinsics.h:226,1
    - Dst: untrinsics_mul3
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/softaes/untrinsics.h:226,1
    - Dst: untrinsics_mul3
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/softaes/untrinsics.h:227,1
    - Dst: untrinsics_mul2
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/softaes/untrinsics.h:227,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - s
    argTypes:
    - uint8_t[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 229
      start: 218
    functionDepth: 0
    functionLinenumber: 218
    functionLinenumberEnd: 229
    functionName: untrinsics_mixcolumns
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/softaes/untrinsics.h
    functionUses: 0
    functionsReached:
    - untrinsics_mul2
    - untrinsics_mul3
    linkageType: ''
    returnType: void
    signature: void untrinsics_mixcolumns(uint8_t s[16])
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: untrinsics_mul0e
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/softaes/untrinsics.h:238,1
    - Dst: untrinsics_mul0b
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/softaes/untrinsics.h:238,1
    - Dst: untrinsics_mul0d
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/softaes/untrinsics.h:238,1
    - Dst: untrinsics_mul9
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/softaes/untrinsics.h:239,1
    - Dst: untrinsics_mul9
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/softaes/untrinsics.h:240,1
    - Dst: untrinsics_mul0e
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/softaes/untrinsics.h:240,1
    - Dst: untrinsics_mul0b
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/softaes/untrinsics.h:240,1
    - Dst: untrinsics_mul0d
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/softaes/untrinsics.h:241,1
    - Dst: untrinsics_mul0d
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/softaes/untrinsics.h:242,1
    - Dst: untrinsics_mul9
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/softaes/untrinsics.h:242,1
    - Dst: untrinsics_mul0e
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/softaes/untrinsics.h:242,1
    - Dst: untrinsics_mul0b
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/softaes/untrinsics.h:243,1
    - Dst: untrinsics_mul0b
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/softaes/untrinsics.h:244,1
    - Dst: untrinsics_mul0d
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/softaes/untrinsics.h:244,1
    - Dst: untrinsics_mul9
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/softaes/untrinsics.h:244,1
    - Dst: untrinsics_mul0e
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/softaes/untrinsics.h:245,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - s
    argTypes:
    - uint8_t[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 247
      start: 232
    functionDepth: 0
    functionLinenumber: 232
    functionLinenumberEnd: 247
    functionName: untrinsics_inv_mixcolumns
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/softaes/untrinsics.h
    functionUses: 0
    functionsReached:
    - untrinsics_mul0b
    - untrinsics_mul9
    - untrinsics_mul0e
    - untrinsics_mul0d
    linkageType: ''
    returnType: void
    signature: void untrinsics_inv_mixcolumns(uint8_t s[16])
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - x
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 254
      start: 250
    functionDepth: 0
    functionLinenumber: 250
    functionLinenumberEnd: 254
    functionName: untrinsics_rot_word
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/softaes/untrinsics.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t untrinsics_rot_word(const uint32_t x)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: untrinsics_sbox
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/softaes/untrinsics.h:260,1
    - Dst: untrinsics_sbox
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/softaes/untrinsics.h:261,1
    - Dst: untrinsics_sbox
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/softaes/untrinsics.h:262,1
    - Dst: untrinsics_sbox
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/softaes/untrinsics.h:263,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - x
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 264
      start: 257
    functionDepth: 0
    functionLinenumber: 257
    functionLinenumberEnd: 264
    functionName: untrinsics_sub_word
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/softaes/untrinsics.h
    functionUses: 0
    functionsReached:
    - untrinsics_sbox
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t untrinsics_sub_word(const uint32_t x)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/softaes/untrinsics.h:271,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - a
    argTypes:
    - __m128i
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 273
      start: 267
    functionDepth: 0
    functionLinenumber: 267
    functionLinenumberEnd: 273
    functionName: untrinsics_copy
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/softaes/untrinsics.h
    functionUses: 0
    functionsReached:
    - memcpy
    linkageType: ''
    returnType: __m128i
    signature: __m128i untrinsics_copy(const __m128i a)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: untrinsics_copy
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/softaes/untrinsics.h:279,1
    - Dst: untrinsics_sub_shiftrows
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/softaes/untrinsics.h:280,1
    - Dst: untrinsics_mixcolumns
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/softaes/untrinsics.h:281,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - a_
    - rk
    argTypes:
    - __m128i
    - __m128i
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 285
      start: 276
    functionDepth: 0
    functionLinenumber: 276
    functionLinenumberEnd: 285
    functionName: _mm_aesenc_si128
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/softaes/untrinsics.h
    functionUses: 0
    functionsReached:
    - untrinsics_sub_shiftrows
    - untrinsics_copy
    - untrinsics_mixcolumns
    linkageType: ''
    returnType: __m128i
    signature: __m128i _mm_aesenc_si128(const __m128i a_, const __m128i rk)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: untrinsics_copy
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/softaes/untrinsics.h:291,1
    - Dst: untrinsics_sub_shiftrows
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/softaes/untrinsics.h:292,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - a_
    - rk
    argTypes:
    - __m128i
    - __m128i
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 296
      start: 288
    functionDepth: 0
    functionLinenumber: 288
    functionLinenumberEnd: 296
    functionName: _mm_aesenclast_si128
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/softaes/untrinsics.h
    functionUses: 0
    functionsReached:
    - untrinsics_sub_shiftrows
    - untrinsics_copy
    linkageType: ''
    returnType: __m128i
    signature: __m128i _mm_aesenclast_si128(const __m128i a_, const __m128i rk)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: untrinsics_copy
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/softaes/untrinsics.h:302,1
    - Dst: untrinsics_invsub_shiftrows
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/softaes/untrinsics.h:303,1
    - Dst: untrinsics_inv_mixcolumns
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/softaes/untrinsics.h:304,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - a_
    - rk
    argTypes:
    - __m128i
    - __m128i
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 308
      start: 299
    functionDepth: 0
    functionLinenumber: 299
    functionLinenumberEnd: 308
    functionName: _mm_aesdec_si128
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/softaes/untrinsics.h
    functionUses: 0
    functionsReached:
    - untrinsics_inv_mixcolumns
    - untrinsics_copy
    - untrinsics_invsub_shiftrows
    linkageType: ''
    returnType: __m128i
    signature: __m128i _mm_aesdec_si128(const __m128i a_, const __m128i rk)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: untrinsics_copy
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/softaes/untrinsics.h:314,1
    - Dst: untrinsics_invsub_shiftrows
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/softaes/untrinsics.h:315,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - a_
    - rk
    argTypes:
    - __m128i
    - __m128i
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 319
      start: 311
    functionDepth: 0
    functionLinenumber: 311
    functionLinenumberEnd: 319
    functionName: _mm_aesdeclast_si128
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/softaes/untrinsics.h
    functionUses: 0
    functionsReached:
    - untrinsics_copy
    - untrinsics_invsub_shiftrows
    linkageType: ''
    returnType: __m128i
    signature: __m128i _mm_aesdeclast_si128(const __m128i a_, const __m128i rk)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: untrinsics_copy
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/softaes/untrinsics.h:325,1
    - Dst: untrinsics_inv_mixcolumns
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/softaes/untrinsics.h:326,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - a_
    argTypes:
    - __m128i
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 328
      start: 322
    functionDepth: 0
    functionLinenumber: 322
    functionLinenumberEnd: 328
    functionName: _mm_aesimc_si128
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/softaes/untrinsics.h
    functionUses: 0
    functionsReached:
    - untrinsics_inv_mixcolumns
    - untrinsics_copy
    linkageType: ''
    returnType: __m128i
    signature: __m128i _mm_aesimc_si128(const __m128i a_)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: untrinsics_sub_word
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/softaes/untrinsics.h:337,1
    - Dst: untrinsics_sub_word
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/softaes/untrinsics.h:338,1
    - Dst: untrinsics_rot_word
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/softaes/untrinsics.h:341,1
    - Dst: untrinsics_rot_word
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/softaes/untrinsics.h:343,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - a
    - rcon
    argTypes:
    - __m128i
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 345
      start: 331
    functionDepth: 0
    functionLinenumber: 331
    functionLinenumberEnd: 345
    functionName: _mm_aeskeygenassist_si128
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/softaes/untrinsics.h
    functionUses: 0
    functionsReached:
    - untrinsics_sub_word
    - untrinsics_rot_word
    linkageType: ''
    returnType: __m128i
    signature: __m128i _mm_aeskeygenassist_si128(const __m128i a, const uint8_t rcon)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 3
    argNames:
    - a
    - b
    - imm
    argTypes:
    - __m128i
    - __m128i
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 371
      start: 350
    functionDepth: 0
    functionLinenumber: 350
    functionLinenumberEnd: 371
    functionName: _mm_clmulepi64_si128
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/softaes/untrinsics.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: __m128i
    signature: __m128i _mm_clmulepi64_si128(const __m128i a, const __m128i b, const
      int imm)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/softaes/untrinsics.h:378,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - p
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 380
      start: 374
    functionDepth: 0
    functionLinenumber: 374
    functionLinenumberEnd: 380
    functionName: _mm_loadu_si128
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/softaes/untrinsics.h
    functionUses: 0
    functionsReached:
    - memcpy
    linkageType: ''
    returnType: __m128i
    signature: __m128i _mm_loadu_si128(const void* const p)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/softaes/untrinsics.h:386,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - p
    - a
    argTypes:
    - void*
    - __m128i
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 387
      start: 383
    functionDepth: 0
    functionLinenumber: 383
    functionLinenumberEnd: 387
    functionName: _mm_storeu_si128
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/softaes/untrinsics.h
    functionUses: 0
    functionsReached:
    - memcpy
    linkageType: ''
    returnType: void
    signature: void _mm_storeu_si128(void* const p, const __m128i a)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - __m128i
    - __m128i
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 397
      start: 390
    functionDepth: 0
    functionLinenumber: 390
    functionLinenumberEnd: 397
    functionName: _mm_xor_si128
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/softaes/untrinsics.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: __m128i
    signature: __m128i _mm_xor_si128(const __m128i a, const __m128i b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - __m128i
    - __m128i
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 407
      start: 400
    functionDepth: 0
    functionLinenumber: 400
    functionLinenumberEnd: 407
    functionName: _mm_or_si128
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/softaes/untrinsics.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: __m128i
    signature: __m128i _mm_or_si128(const __m128i a, const __m128i b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - __m128i
    - __m128i
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 417
      start: 410
    functionDepth: 0
    functionLinenumber: 410
    functionLinenumberEnd: 417
    functionName: _mm_and_si128
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/softaes/untrinsics.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: __m128i
    signature: __m128i _mm_and_si128(const __m128i a, const __m128i b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - high
    - low
    argTypes:
    - long long
    - long long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 427
      start: 420
    functionDepth: 0
    functionLinenumber: 420
    functionLinenumberEnd: 427
    functionName: _mm_set_epi64x
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/softaes/untrinsics.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: __m128i
    signature: __m128i _mm_set_epi64x(const long long high, const long long low)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/softaes/untrinsics.h:437,1
    - Dst: memset
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/softaes/untrinsics.h:440,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/softaes/untrinsics.h:441,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - a
    - imm
    argTypes:
    - __m128i
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 443
      start: 430
    functionDepth: 0
    functionLinenumber: 430
    functionLinenumberEnd: 443
    functionName: _mm_slli_si128
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/softaes/untrinsics.h
    functionUses: 0
    functionsReached:
    - memset
    - memcpy
    linkageType: ''
    returnType: __m128i
    signature: __m128i _mm_slli_si128(const __m128i a, const int imm)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/softaes/untrinsics.h:453,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/softaes/untrinsics.h:456,1
    - Dst: memset
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/softaes/untrinsics.h:457,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - a
    - imm
    argTypes:
    - __m128i
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 459
      start: 446
    functionDepth: 0
    functionLinenumber: 446
    functionLinenumberEnd: 459
    functionName: _mm_srli_si128
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/softaes/untrinsics.h
    functionUses: 1
    functionsReached:
    - memset
    - memcpy
    linkageType: ''
    returnType: __m128i
    signature: __m128i _mm_srli_si128(const __m128i a, const int imm)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - z
    - ','
    - y
    - ','
    - x
    - ','
    - w
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 463
      start: 462
    functionDepth: 0
    functionLinenumber: 462
    functionLinenumberEnd: 463
    functionName: _MM_SHUFFLE
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/softaes/untrinsics.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: _MM_SHUFFLE(z, y, x, w)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - a
    - imm
    argTypes:
    - __m128i
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 479
      start: 466
    functionDepth: 0
    functionLinenumber: 466
    functionLinenumberEnd: 479
    functionName: _mm_shuffle_epi32
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/softaes/untrinsics.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: __m128i
    signature: __m128i _mm_shuffle_epi32(const __m128i a, const int imm)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - __m128i
    - __m128i
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 492
      start: 482
    functionDepth: 0
    functionLinenumber: 482
    functionLinenumberEnd: 492
    functionName: _mm_shuffle_epi8
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/softaes/untrinsics.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: __m128i
    signature: __m128i _mm_shuffle_epi8(const __m128i a, const __m128i b)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/softaes/untrinsics.h:500,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - mem_addr
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 504
      start: 495
    functionDepth: 0
    functionLinenumber: 495
    functionLinenumberEnd: 504
    functionName: _mm_loadu_si64
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/softaes/untrinsics.h
    functionUses: 0
    functionsReached:
    - memcpy
    linkageType: ''
    returnType: __m128i
    signature: __m128i _mm_loadu_si64(const void* const mem_addr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 18
    argCount: 16
    argNames:
    - b0
    - b1
    - b2
    - b3
    - b4
    - b5
    - b6
    - b7
    - b8
    - b9
    - b10
    - b11
    - b12
    - b13
    - b14
    - b15
    argTypes:
    - int8_t
    - int8_t
    - int8_t
    - int8_t
    - int8_t
    - int8_t
    - int8_t
    - int8_t
    - int8_t
    - int8_t
    - int8_t
    - int8_t
    - int8_t
    - int8_t
    - int8_t
    - int8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 531
      start: 507
    functionDepth: 0
    functionLinenumber: 507
    functionLinenumberEnd: 531
    functionName: _mm_setr_epi8
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/softaes/untrinsics.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: __m128i
    signature: "__m128i _mm_setr_epi8(const int8_t b0, const int8_t b1, const int8_t
      b2, const int8_t b3, const int8_t b4,\n              const int8_t b5, const
      int8_t b6, const int8_t b7, const int8_t b8, const int8_t b9,\n              const
      int8_t b10, const int8_t b11, const int8_t b12, const int8_t b13,\n              const
      int8_t b14, const int8_t b15)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 4
    argNames:
    - e0
    - e1
    - e2
    - e3
    argTypes:
    - int
    - int
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 543
      start: 534
    functionDepth: 0
    functionLinenumber: 534
    functionLinenumberEnd: 543
    functionName: _mm_setr_epi32
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/softaes/untrinsics.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: __m128i
    signature: __m128i _mm_setr_epi32(const int e0, const int e1, const int e2, const
      int e3)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - v
    - imm8
    argTypes:
    - __m128i
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 555
      start: 546
    functionDepth: 0
    functionLinenumber: 546
    functionLinenumberEnd: 555
    functionName: _mm_srli_epi32
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/softaes/untrinsics.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: __m128i
    signature: __m128i _mm_srli_epi32(const __m128i v, const int imm8)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - v
    - imm8
    argTypes:
    - __m128i
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 567
      start: 558
    functionDepth: 0
    functionLinenumber: 558
    functionLinenumberEnd: 567
    functionName: _mm_slli_epi32
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/softaes/untrinsics.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: __m128i
    signature: __m128i _mm_slli_epi32(const __m128i v, const int imm8)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - v
    - imm8
    argTypes:
    - __m128i
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 581
      start: 570
    functionDepth: 0
    functionLinenumber: 570
    functionLinenumberEnd: 581
    functionName: _mm_srli_epi16
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/softaes/untrinsics.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: __m128i
    signature: __m128i _mm_srli_epi16(const __m128i v, const int imm8)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - v
    - imm8
    argTypes:
    - __m128i
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 595
      start: 584
    functionDepth: 0
    functionLinenumber: 584
    functionLinenumberEnd: 595
    functionName: _mm_slli_epi16
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/softaes/untrinsics.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: __m128i
    signature: __m128i _mm_slli_epi16(const __m128i v, const int imm8)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - v
    - imm8
    argTypes:
    - __m128i
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 605
      start: 598
    functionDepth: 0
    functionLinenumber: 598
    functionLinenumberEnd: 605
    functionName: _mm_srli_epi64
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/softaes/untrinsics.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: __m128i
    signature: __m128i _mm_srli_epi64(const __m128i v, const int imm8)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - v
    - imm8
    argTypes:
    - __m128i
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 615
      start: 608
    functionDepth: 0
    functionLinenumber: 608
    functionLinenumberEnd: 615
    functionName: _mm_slli_epi64
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/softaes/untrinsics.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: __m128i
    signature: __m128i _mm_slli_epi64(const __m128i v, const int imm8)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/softaes/untrinsics.h:622,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 624
      start: 618
    functionDepth: 0
    functionLinenumber: 618
    functionLinenumberEnd: 624
    functionName: _mm_setzero_si128
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/softaes/untrinsics.h
    functionUses: 0
    functionsReached:
    - memset
    linkageType: ''
    returnType: __m128i
    signature: __m128i _mm_setzero_si128(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - a
    argTypes:
    - int8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 634
      start: 627
    functionDepth: 0
    functionLinenumber: 627
    functionLinenumberEnd: 634
    functionName: _mm_set1_epi8
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/softaes/untrinsics.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: __m128i
    signature: __m128i _mm_set1_epi8(const int8_t a)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - __m128i
    - __m128i
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 644
      start: 637
    functionDepth: 0
    functionLinenumber: 637
    functionLinenumberEnd: 644
    functionName: _mm_add_epi8
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/softaes/untrinsics.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: __m128i
    signature: __m128i _mm_add_epi8(const __m128i a, const __m128i b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - __m128i
    - __m128i
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 654
      start: 647
    functionDepth: 0
    functionLinenumber: 647
    functionLinenumberEnd: 654
    functionName: _mm_sub_epi8
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/softaes/untrinsics.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: __m128i
    signature: __m128i _mm_sub_epi8(const __m128i a, const __m128i b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - __m128i
    - __m128i
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 664
      start: 657
    functionDepth: 0
    functionLinenumber: 657
    functionLinenumberEnd: 664
    functionName: _mm_add_epi64
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/softaes/untrinsics.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: __m128i
    signature: __m128i _mm_add_epi64(const __m128i a, const __m128i b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - __m128i
    - __m128i
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 674
      start: 667
    functionDepth: 0
    functionLinenumber: 667
    functionLinenumberEnd: 674
    functionName: _mm_sub_epi64
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/softaes/untrinsics.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: __m128i
    signature: __m128i _mm_sub_epi64(const __m128i a, const __m128i b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - __m128i
    - __m128i
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 688
      start: 677
    functionDepth: 0
    functionLinenumber: 677
    functionLinenumberEnd: 688
    functionName: _mm_cmpeq_epi8
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/softaes/untrinsics.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: __m128i
    signature: __m128i _mm_cmpeq_epi8(const __m128i a, const __m128i b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - M
    - ','
    - V
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 692
      start: 691
    functionDepth: 0
    functionLinenumber: 691
    functionLinenumberEnd: 692
    functionName: _mm_test_all_zeros
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/softaes/untrinsics.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: _mm_test_all_zeros(M, V)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - __m128i
    - __m128i
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 700
      start: 694
    functionDepth: 0
    functionLinenumber: 694
    functionLinenumberEnd: 700
    functionName: _mm_testz_si128
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/softaes/untrinsics.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int _mm_testz_si128(const __m128i a, const __m128i b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - a
    argTypes:
    - __m128i
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 709
      start: 703
    functionDepth: 0
    functionLinenumber: 703
    functionLinenumberEnd: 709
    functionName: _mm_test_all_ones
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/softaes/untrinsics.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int _mm_test_all_ones(const __m128i a)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 47
    functionDepth: 0
    functionLinenumber: 47
    functionLinenumberEnd: 47
    functionName: operator==(NullStruct /*unused*/) const
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool operator==(NullStruct /*unused*/) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 48
    functionDepth: 0
    functionLinenumber: 48
    functionLinenumberEnd: 48
    functionName: operator<(NullStruct /*unused*/) const
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool operator<(NullStruct /*unused*/) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - out
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 55
    functionDepth: 0
    functionLinenumber: 55
    functionLinenumberEnd: 57
    functionName: json11::dump
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void dump(NullStruct /*unused*/, string &out)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::isfinite
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:60,1
    - Dst: snprintf
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:62,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - value
    - out
    argTypes:
    - double
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 59
    functionDepth: 0
    functionLinenumber: 59
    functionLinenumberEnd: 67
    functionName: json11::dump
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - std::isfinite
    - snprintf
    linkageType: ''
    returnType: void
    signature: void dump(double value, string &out)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:71,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - value
    - out
    argTypes:
    - int
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 69
    functionDepth: 0
    functionLinenumber: 69
    functionLinenumberEnd: 73
    functionName: json11::dump
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - snprintf
    linkageType: ''
    returnType: void
    signature: void dump(int value, string &out)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - value
    - out
    argTypes:
    - bool
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 75
    functionDepth: 0
    functionLinenumber: 75
    functionLinenumberEnd: 77
    functionName: json11::dump
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void dump(bool value, string &out)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: string::length
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:81,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:97,1
    - Dst: snprintf
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:99,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:101,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:101,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:102,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:105,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:105,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:106,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 40
    argCount: 2
    argNames:
    - value
    - out
    argTypes:
    - string
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 79
    functionDepth: 0
    functionLinenumber: 79
    functionLinenumberEnd: 114
    functionName: json11::dump
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - string::length
    - snprintf
    - static_cast<uint8_t>
    linkageType: ''
    returnType: void
    signature: void dump(const string &value, string &out)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: json11::dump
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:122,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - values
    - out
    argTypes:
    - Json::array
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 116
    functionDepth: 0
    functionLinenumber: 116
    functionLinenumberEnd: 126
    functionName: json11::dump
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 1
    functionsReached:
    - json11::dump
    linkageType: ''
    returnType: void
    signature: void dump(const Json::array &values, string &out)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: json11::dump
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:134,1
    - Dst: second::dump
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:136,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - values
    - out
    argTypes:
    - Json::object
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 128
    functionDepth: 0
    functionLinenumber: 128
    functionLinenumberEnd: 140
    functionName: json11::dump
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 2
    functionsReached:
    - json11::dump
    - second::dump
    linkageType: ''
    returnType: void
    signature: void dump(const Json::object &values, string &out)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json11::Json::dump
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:143,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - out
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 144
      start: 142
    functionDepth: 0
    functionLinenumber: 142
    functionLinenumberEnd: 144
    functionName: json11::Json::dump
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 4
    functionsReached:
    - json11::Json::dump
    linkageType: ''
    returnType: void
    signature: void Json::dump(string &out) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - value
    argTypes:
    - T
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 155
    functionDepth: 0
    functionLinenumber: 155
    functionLinenumberEnd: 155
    functionName: json11::Value::Value
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Value(const T &value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:156,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 1
    argNames:
    - value
    argTypes:
    - T
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 156
      start: 156
    functionDepth: 0
    functionLinenumber: 156
    functionLinenumberEnd: 156
    functionName: json11::Value::Value
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void Value(T &&value)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 161
      start: 159
    functionDepth: 0
    functionLinenumber: 159
    functionLinenumberEnd: 161
    functionName: json11::Value::type
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Json::Type
    signature: Json::Type type() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<const Value<tag, T> *>
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:165,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - other
    argTypes:
    - JsonValue*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 166
      start: 164
    functionDepth: 0
    functionLinenumber: 164
    functionLinenumberEnd: 166
    functionName: json11::Value::equals
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - static_cast<const Value<tag, T> *>
    linkageType: ''
    returnType: bool
    signature: bool equals(const JsonValue * other) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<const Value<tag, T> *>
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:168,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - other
    argTypes:
    - JsonValue*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 169
      start: 167
    functionDepth: 0
    functionLinenumber: 167
    functionLinenumberEnd: 169
    functionName: json11::Value::less
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - static_cast<const Value<tag, T> *>
    linkageType: ''
    returnType: bool
    signature: bool less(const JsonValue * other) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json11::dump
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:172,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - out
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 172
      start: 172
    functionDepth: 0
    functionLinenumber: 172
    functionLinenumberEnd: 172
    functionName: json11::Value::dump
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - json11::dump
    linkageType: ''
    returnType: void
    signature: void dump(string &out) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 176
      start: 176
    functionDepth: 0
    functionLinenumber: 176
    functionLinenumberEnd: 176
    functionName: json11::JsonDouble::number_value
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: double
    signature: double number_value() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:177,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 177
      start: 177
    functionDepth: 0
    functionLinenumber: 177
    functionLinenumberEnd: 177
    functionName: json11::JsonDouble::int_value
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - static_cast<int>
    linkageType: ''
    returnType: int
    signature: int int_value() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: JsonValue*::number_value
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:178,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - other
    argTypes:
    - JsonValue*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 178
      start: 178
    functionDepth: 0
    functionLinenumber: 178
    functionLinenumberEnd: 178
    functionName: json11::JsonDouble::equals
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - JsonValue*::number_value
    linkageType: ''
    returnType: bool
    signature: bool equals(const JsonValue * other) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: JsonValue*::number_value
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:179,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - other
    argTypes:
    - JsonValue*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 179
      start: 179
    functionDepth: 0
    functionLinenumber: 179
    functionLinenumberEnd: 179
    functionName: json11::JsonDouble::less
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - JsonValue*::number_value
    linkageType: ''
    returnType: bool
    signature: bool less(const JsonValue * other)   const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - value
    argTypes:
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 181
      start: 181
    functionDepth: 0
    functionLinenumber: 181
    functionLinenumberEnd: 181
    functionName: json11::JsonDouble::JsonDouble
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void JsonDouble(double value)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 185
      start: 185
    functionDepth: 0
    functionLinenumber: 185
    functionLinenumberEnd: 185
    functionName: json11::JsonInt::number_value
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: double
    signature: double number_value() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 186
      start: 186
    functionDepth: 0
    functionLinenumber: 186
    functionLinenumberEnd: 186
    functionName: json11::JsonInt::int_value
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int int_value() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: JsonValue*::number_value
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:187,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - other
    argTypes:
    - JsonValue*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 187
      start: 187
    functionDepth: 0
    functionLinenumber: 187
    functionLinenumberEnd: 187
    functionName: json11::JsonInt::equals
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - JsonValue*::number_value
    linkageType: ''
    returnType: bool
    signature: bool equals(const JsonValue * other) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: JsonValue*::number_value
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:188,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - other
    argTypes:
    - JsonValue*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 188
      start: 188
    functionDepth: 0
    functionLinenumber: 188
    functionLinenumberEnd: 188
    functionName: json11::JsonInt::less
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - JsonValue*::number_value
    linkageType: ''
    returnType: bool
    signature: bool less(const JsonValue * other)   const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - value
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 190
      start: 190
    functionDepth: 0
    functionLinenumber: 190
    functionLinenumberEnd: 190
    functionName: json11::JsonInt::JsonInt
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void JsonInt(int value)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 194
      start: 194
    functionDepth: 0
    functionLinenumber: 194
    functionLinenumberEnd: 194
    functionName: json11::JsonBoolean::bool_value
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool bool_value() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - value
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 196
      start: 196
    functionDepth: 0
    functionLinenumber: 196
    functionLinenumberEnd: 196
    functionName: json11::JsonBoolean::JsonBoolean
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void JsonBoolean(bool value)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 200
      start: 200
    functionDepth: 0
    functionLinenumber: 200
    functionLinenumberEnd: 200
    functionName: '&string_value() const override'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: string
    signature: string &string_value() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - value
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 202
      start: 202
    functionDepth: 0
    functionLinenumber: 202
    functionLinenumberEnd: 202
    functionName: json11::JsonString::JsonString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void JsonString(const string &value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:203,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 1
    argNames:
    - value
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 203
      start: 203
    functionDepth: 0
    functionLinenumber: 203
    functionLinenumberEnd: 203
    functionName: json11::JsonString::JsonString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void JsonString(string &&value)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 207
      start: 207
    functionDepth: 0
    functionLinenumber: 207
    functionLinenumberEnd: 207
    functionName: '&array_items() const override'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Json::array
    signature: Json::array &array_items() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - value
    argTypes:
    - Json::array
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 210
      start: 210
    functionDepth: 0
    functionLinenumber: 210
    functionLinenumberEnd: 210
    functionName: json11::JsonArray::JsonArray
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void JsonArray(const Json::array &value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:211,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 1
    argNames:
    - value
    argTypes:
    - Json::array
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 211
      start: 211
    functionDepth: 0
    functionLinenumber: 211
    functionLinenumberEnd: 211
    functionName: json11::JsonArray::JsonArray
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void JsonArray(Json::array &&value)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 215
      start: 215
    functionDepth: 0
    functionLinenumber: 215
    functionLinenumberEnd: 215
    functionName: '&object_items() const override'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Json::object
    signature: Json::object &object_items() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - value
    argTypes:
    - Json::object
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 218
      start: 218
    functionDepth: 0
    functionLinenumber: 218
    functionLinenumberEnd: 218
    functionName: json11::JsonObject::JsonObject
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void JsonObject(const Json::object &value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:219,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 1
    argNames:
    - value
    argTypes:
    - Json::object
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 219
      start: 219
    functionDepth: 0
    functionLinenumber: 219
    functionLinenumberEnd: 219
    functionName: json11::JsonObject::JsonObject
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void JsonObject(Json::object &&value)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 224
      start: 224
    functionDepth: 0
    functionLinenumber: 224
    functionLinenumberEnd: 224
    functionName: json11::JsonNull::JsonNull
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void JsonNull()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 237
      start: 237
    functionDepth: 0
    functionLinenumber: 237
    functionLinenumberEnd: 237
    functionName: json11::Statics
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Statics()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 243
      start: 240
    functionDepth: 0
    functionLinenumber: 240
    functionLinenumberEnd: 243
    functionName: json11::statics
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Statics
    signature: Statics & statics()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 249
      start: 245
    functionDepth: 0
    functionLinenumber: 245
    functionLinenumberEnd: 249
    functionName: json11::static_null
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Json
    signature: Json & static_null()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: statics
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:255,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 255
      start: 255
    functionDepth: 0
    functionLinenumber: 255
    functionLinenumberEnd: 255
    functionName: json11::Json::Json
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - statics
    linkageType: ''
    returnType: void
    signature: void Json::Json() noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: statics
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:256,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 256
      start: 256
    functionDepth: 0
    functionLinenumber: 256
    functionLinenumberEnd: 256
    functionName: json11::Json::Json
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - statics
    linkageType: ''
    returnType: void
    signature: void Json::Json(std::nullptr_t) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: make_shared<JsonDouble>
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:257,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - value
    argTypes:
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 257
      start: 257
    functionDepth: 0
    functionLinenumber: 257
    functionLinenumberEnd: 257
    functionName: json11::Json::Json
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - make_shared<JsonDouble>
    linkageType: ''
    returnType: void
    signature: void Json::Json(double value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: make_shared<JsonInt>
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:258,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - value
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 258
      start: 258
    functionDepth: 0
    functionLinenumber: 258
    functionLinenumberEnd: 258
    functionName: json11::Json::Json
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - make_shared<JsonInt>
    linkageType: ''
    returnType: void
    signature: void Json::Json(int value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: statics
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:259,1
    - Dst: statics
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:259,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - value
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 259
      start: 259
    functionDepth: 0
    functionLinenumber: 259
    functionLinenumberEnd: 259
    functionName: json11::Json::Json
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - statics
    linkageType: ''
    returnType: void
    signature: void Json::Json(bool value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: make_shared<JsonString>
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:260,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - value
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 260
      start: 260
    functionDepth: 0
    functionLinenumber: 260
    functionLinenumberEnd: 260
    functionName: json11::Json::Json
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - make_shared<JsonString>
    linkageType: ''
    returnType: void
    signature: void Json::Json(const string &value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: make_shared<JsonString>
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:261,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:261,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 1
    argNames:
    - value
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 261
      start: 261
    functionDepth: 0
    functionLinenumber: 261
    functionLinenumberEnd: 261
    functionName: json11::Json::Json
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - std::move
    - make_shared<JsonString>
    linkageType: ''
    returnType: void
    signature: void Json::Json(string &&value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: make_shared<JsonString>
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:262,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - value
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 262
      start: 262
    functionDepth: 0
    functionLinenumber: 262
    functionLinenumberEnd: 262
    functionName: json11::Json::Json
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - make_shared<JsonString>
    linkageType: ''
    returnType: void
    signature: void Json::Json(const char * value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: make_shared<JsonArray>
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:263,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - values
    argTypes:
    - Json::array
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 263
      start: 263
    functionDepth: 0
    functionLinenumber: 263
    functionLinenumberEnd: 263
    functionName: json11::Json::Json
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - make_shared<JsonArray>
    linkageType: ''
    returnType: void
    signature: void Json::Json(const Json::array &values)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: make_shared<JsonArray>
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:264,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:264,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 1
    argNames:
    - values
    argTypes:
    - Json::array
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 264
      start: 264
    functionDepth: 0
    functionLinenumber: 264
    functionLinenumberEnd: 264
    functionName: json11::Json::Json
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - std::move
    - make_shared<JsonArray>
    linkageType: ''
    returnType: void
    signature: void Json::Json(Json::array &&values)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: make_shared<JsonObject>
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:265,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - values
    argTypes:
    - Json::object
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 265
      start: 265
    functionDepth: 0
    functionLinenumber: 265
    functionLinenumberEnd: 265
    functionName: json11::Json::Json
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - make_shared<JsonObject>
    linkageType: ''
    returnType: void
    signature: void Json::Json(const Json::object &values)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: make_shared<JsonObject>
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:266,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:266,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 1
    argNames:
    - values
    argTypes:
    - Json::object
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 266
      start: 266
    functionDepth: 0
    functionLinenumber: 266
    functionLinenumberEnd: 266
    functionName: json11::Json::Json
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - make_shared<JsonObject>
    - std::move
    linkageType: ''
    returnType: void
    signature: void Json::Json(Json::object &&values)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json11::Json::type
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:272,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 272
      start: 272
    functionDepth: 0
    functionLinenumber: 272
    functionLinenumberEnd: 272
    functionName: json11::Json::type
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 1
    functionsReached:
    - json11::Json::type
    linkageType: ''
    returnType: Json::Type
    signature: Json::Type Json::type()                           const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json11::Json::number_value
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:273,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 273
      start: 273
    functionDepth: 0
    functionLinenumber: 273
    functionLinenumberEnd: 273
    functionName: json11::Json::number_value
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 1
    functionsReached:
    - json11::Json::number_value
    linkageType: ''
    returnType: double
    signature: double Json::number_value()                       const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json11::Json::int_value
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:274,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 274
      start: 274
    functionDepth: 0
    functionLinenumber: 274
    functionLinenumberEnd: 274
    functionName: json11::Json::int_value
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 1
    functionsReached:
    - json11::Json::int_value
    linkageType: ''
    returnType: int
    signature: int Json::int_value()                             const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json11::Json::bool_value
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:275,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 275
      start: 275
    functionDepth: 0
    functionLinenumber: 275
    functionLinenumberEnd: 275
    functionName: json11::Json::bool_value
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 1
    functionsReached:
    - json11::Json::bool_value
    linkageType: ''
    returnType: bool
    signature: bool Json::bool_value()                           const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: string_value
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:276,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 276
      start: 276
    functionDepth: 0
    functionLinenumber: 276
    functionLinenumberEnd: 276
    functionName: '& Json::string_value()               const'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - string_value
    linkageType: ''
    returnType: string
    signature: string & Json::string_value()               const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_items
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:277,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 277
      start: 277
    functionDepth: 0
    functionLinenumber: 277
    functionLinenumberEnd: 277
    functionName: '& Json::array_items()          const'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - array_items
    linkageType: ''
    returnType: vector<Json>
    signature: vector<Json> & Json::array_items()          const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: object_items
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:278,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 278
      start: 278
    functionDepth: 0
    functionLinenumber: 278
    functionLinenumberEnd: 278
    functionName: '& Json::object_items()    const'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - object_items
    linkageType: ''
    returnType: map<string, Json>
    signature: map<string, Json> & Json::object_items()    const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - i
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 279
      start: 279
    functionDepth: 0
    functionLinenumber: 279
    functionLinenumberEnd: 279
    functionName: '& Json::operator[] (size_t i)          const'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Json
    signature: Json & Json::operator[] (size_t i)          const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - key
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 280
      start: 280
    functionDepth: 0
    functionLinenumber: 280
    functionLinenumberEnd: 280
    functionName: '& Json::operator[] (const string &key) const'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Json
    signature: Json & Json::operator[] (const string &key) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 282
      start: 282
    functionDepth: 0
    functionLinenumber: 282
    functionLinenumberEnd: 282
    functionName: json11::JsonValue::number_value
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: double
    signature: double JsonValue::number_value()              const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 283
      start: 283
    functionDepth: 0
    functionLinenumber: 283
    functionLinenumberEnd: 283
    functionName: json11::JsonValue::int_value
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int JsonValue::int_value()                 const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 284
      start: 284
    functionDepth: 0
    functionLinenumber: 284
    functionLinenumberEnd: 284
    functionName: json11::JsonValue::bool_value
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool JsonValue::bool_value()                const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: statics
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:285,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 285
      start: 285
    functionDepth: 0
    functionLinenumber: 285
    functionLinenumberEnd: 285
    functionName: '&            JsonValue::string_value()              const'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - statics
    linkageType: ''
    returnType: string
    signature: string &            JsonValue::string_value()              const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: statics
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:286,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 286
      start: 286
    functionDepth: 0
    functionLinenumber: 286
    functionLinenumberEnd: 286
    functionName: '&      JsonValue::array_items()               const'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - statics
    linkageType: ''
    returnType: vector<Json>
    signature: vector<Json> &      JsonValue::array_items()               const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: statics
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:287,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 287
      start: 287
    functionDepth: 0
    functionLinenumber: 287
    functionLinenumberEnd: 287
    functionName: '& JsonValue::object_items()              const'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - statics
    linkageType: ''
    returnType: map<string, Json>
    signature: map<string, Json> & JsonValue::object_items()              const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_null
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:288,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 288
      start: 288
    functionDepth: 0
    functionLinenumber: 288
    functionLinenumberEnd: 288
    functionName: '&              JsonValue::operator[] (size_t)         const'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - static_null
    linkageType: ''
    returnType: Json
    signature: Json &              JsonValue::operator[] (size_t)         const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_null
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:289,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 289
      start: 289
    functionDepth: 0
    functionLinenumber: 289
    functionLinenumberEnd: 289
    functionName: '&              JsonValue::operator[] (const string &) const'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - static_null
    linkageType: ''
    returnType: Json
    signature: Json &              JsonValue::operator[] (const string &) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: find
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:292,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:293,1
    - Dst: static_null
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:293,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - key
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 294
      start: 291
    functionDepth: 0
    functionLinenumber: 291
    functionLinenumberEnd: 294
    functionName: '& JsonObject::operator[] (const string &key) const'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - static_null
    - end
    - find
    linkageType: ''
    returnType: Json
    signature: Json & JsonObject::operator[] (const string &key) const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:296,1
    - Dst: static_null
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:296,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - i
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 298
      start: 295
    functionDepth: 0
    functionLinenumber: 295
    functionLinenumberEnd: 298
    functionName: '& JsonArray::operator[] (size_t i) const'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - static_null
    - size
    linkageType: ''
    returnType: Json
    signature: Json & JsonArray::operator[] (size_t i) const
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: type
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:308,1
    - Dst: Json::m_ptr::type
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:308,1
    - Dst: equals
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:312,1
    - Dst: Json::m_ptr::get
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:312,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - other
    argTypes:
    - Json
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 313
      start: 304
    functionDepth: 0
    functionLinenumber: 304
    functionLinenumberEnd: 313
    functionName: Json::operator== (const Json &other) const
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - Json::m_ptr::type
    - equals
    - Json::m_ptr::get
    - type
    linkageType: ''
    returnType: bool
    signature: bool Json::operator== (const Json &other) const
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: type
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:319,1
    - Dst: Json::m_ptr::type
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:319,1
    - Dst: type
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:320,1
    - Dst: Json::m_ptr::type
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:320,1
    - Dst: less
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:323,1
    - Dst: Json::m_ptr::get
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:323,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - other
    argTypes:
    - Json
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 324
      start: 315
    functionDepth: 0
    functionLinenumber: 315
    functionLinenumberEnd: 324
    functionName: Json::operator< (const Json &other) const
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - Json::m_ptr::type
    - less
    - Json::m_ptr::get
    - type
    linkageType: ''
    returnType: bool
    signature: bool Json::operator< (const Json &other) const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:336,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:336,1
    - Dst: snprintf
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:337,1
    - Dst: snprintf
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:339,1
    - Dst: string
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:341,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - c
    argTypes:
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 342
      start: 334
    functionDepth: 0
    functionLinenumber: 334
    functionLinenumberEnd: 342
    functionName: json11::esc
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - string
    - snprintf
    - static_cast<uint8_t>
    linkageType: ''
    returnType: string
    signature: string esc(char c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 3
    argNames:
    - x
    - lower
    - upper
    argTypes:
    - long
    - long
    - long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 346
      start: 344
    functionDepth: 0
    functionLinenumber: 344
    functionLinenumberEnd: 346
    functionName: json11::in_range
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool in_range(long x, long lower, long upper)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json11::fail
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:368,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:368,1
    - Dst: Json
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:368,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - msg
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 369
      start: 367
    functionDepth: 0
    functionLinenumber: 367
    functionLinenumberEnd: 369
    functionName: json11::fail
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 1
    functionsReached:
    - json11::fail
    - std::move
    - Json
    linkageType: ''
    returnType: Json
    signature: Json fail(string &&msg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:374,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - msg
    - err_ret
    argTypes:
    - string
    - T
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 377
      start: 372
    functionDepth: 0
    functionLinenumber: 372
    functionLinenumberEnd: 377
    functionName: json11::fail
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 1
    functionsReached:
    - std::move
    linkageType: ''
    returnType: T
    signature: T fail(string &&msg, const T err_ret)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 386
      start: 383
    functionDepth: 0
    functionLinenumber: 383
    functionLinenumberEnd: 386
    functionName: json11::consume_whitespace
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void consume_whitespace()
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:396,1
    - Dst: json11::fail
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:397,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:401,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:408,1
    - Dst: json11::fail
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:409,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:413,1
    - Dst: json11::fail
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:414,1
    - Dst: json11::fail
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:421,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 27
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 424
      start: 392
    functionDepth: 0
    functionLinenumber: 392
    functionLinenumberEnd: 424
    functionName: json11::consume_comment
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - json11::fail
    - size
    linkageType: ''
    returnType: bool
    signature: bool consume_comment()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: json11::consume_whitespace
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:431,1
    - Dst: json11::consume_comment
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:435,1
    - Dst: json11::consume_whitespace
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:439,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 443
      start: 430
    functionDepth: 0
    functionLinenumber: 430
    functionLinenumberEnd: 443
    functionName: json11::consume_garbage
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - json11::consume_comment
    - json11::consume_whitespace
    linkageType: ''
    returnType: void
    signature: void consume_garbage()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: json11::consume_garbage
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:451,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:455,1
    - Dst: json11::fail
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:456,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 460
      start: 450
    functionDepth: 0
    functionLinenumber: 450
    functionLinenumberEnd: 460
    functionName: json11::get_next_token
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - json11::fail
    - size
    - json11::consume_garbage
    linkageType: ''
    returnType: char
    signature: char get_next_token()
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<char>
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:471,1
    - Dst: static_cast<char>
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:473,1
    - Dst: static_cast<char>
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:474,1
    - Dst: static_cast<char>
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:476,1
    - Dst: static_cast<char>
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:477,1
    - Dst: static_cast<char>
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:478,1
    - Dst: static_cast<char>
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:480,1
    - Dst: static_cast<char>
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:481,1
    - Dst: static_cast<char>
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:482,1
    - Dst: static_cast<char>
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:483,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 2
    argNames:
    - pt
    - ' out'
    argTypes:
    - long
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 485
      start: 466
    functionDepth: 0
    functionLinenumber: 466
    functionLinenumberEnd: 485
    functionName: json11::encode_utf8
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - static_cast<char>
    linkageType: ''
    returnType: void
    signature: void encode_utf8(long pt, string & out)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:495,1
    - Dst: json11::fail
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:496,1
    - Dst: json11::encode_utf8
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:501,1
    - Dst: json11::in_range
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:505,1
    - Dst: json11::fail
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:506,1
    - Dst: json11::esc
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:506,1
    - Dst: json11::encode_utf8
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:510,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:517,1
    - Dst: json11::fail
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:518,1
    - Dst: substr
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:524,1
    - Dst: string::length
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:528,1
    - Dst: json11::fail
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:529,1
    - Dst: json11::in_range
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:532,1
    - Dst: json11::in_range
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:532,1
    - Dst: json11::in_range
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:533,1
    - Dst: json11::fail
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:534,1
    - Dst: strtol
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:537,1
    - Dst: string::data
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:537,1
    - Dst: json11::in_range
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:543,1
    - Dst: json11::in_range
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:544,1
    - Dst: json11::encode_utf8
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:547,1
    - Dst: json11::encode_utf8
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:551,1
    - Dst: json11::encode_utf8
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:559,1
    - Dst: json11::fail
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:575,1
    - Dst: json11::esc
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:575,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 60
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 578
      start: 491
    functionDepth: 0
    functionLinenumber: 491
    functionLinenumberEnd: 578
    functionName: json11::parse_string
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - string::data
    - strtol
    - size
    - substr
    - json11::encode_utf8
    - json11::in_range
    - json11::fail
    - json11::esc
    - string::length
    linkageType: ''
    returnType: string
    signature: string parse_string()
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: json11::in_range
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:593,1
    - Dst: json11::fail
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:594,1
    - Dst: json11::in_range
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:595,1
    - Dst: json11::in_range
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:597,1
    - Dst: json11::fail
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:600,1
    - Dst: json11::esc
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:600,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:604,1
    - Dst: std::atoi
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:605,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:605,1
    - Dst: json11::in_range
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:611,1
    - Dst: json11::fail
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:612,1
    - Dst: json11::in_range
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:614,1
    - Dst: json11::in_range
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:625,1
    - Dst: json11::fail
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:626,1
    - Dst: json11::in_range
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:628,1
    - Dst: std::strtod
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:632,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:632,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 35
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 633
      start: 584
    functionDepth: 0
    functionLinenumber: 584
    functionLinenumberEnd: 633
    functionName: json11::parse_number
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - static_cast<size_t>
    - c_str
    - json11::in_range
    - std::strtod
    - json11::fail
    - json11::esc
    - std::atoi
    linkageType: ''
    returnType: Json
    signature: Json parse_number()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:641,1
    - Dst: compare
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:643,1
    - Dst: string::length
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:643,1
    - Dst: string::length
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:644,1
    - Dst: json11::fail
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:647,1
    - Dst: substr
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:647,1
    - Dst: string::length
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:647,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - expected
    - res
    argTypes:
    - string
    - Json
    assertStmts:
    - condition: (i != 0)
      pos:
        line_end: 640
        line_start: 640
        source_file: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    constantsTouched: []
    func_position:
      end: 649
      start: 640
    functionDepth: 0
    functionLinenumber: 640
    functionLinenumberEnd: 649
    functionName: json11::expect
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - assert
    - compare
    - substr
    - json11::fail
    - string::length
    linkageType: ''
    returnType: Json
    signature: Json expect(const string &expected, Json res)
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: json11::fail
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:657,1
    - Dst: json11::get_next_token
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:660,1
    - Dst: Json
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:662,1
    - Dst: json11::parse_number
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:666,1
    - Dst: json11::expect
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:670,1
    - Dst: json11::expect
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:673,1
    - Dst: json11::expect
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:676,1
    - Dst: Json
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:676,1
    - Dst: json11::parse_string
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:679,1
    - Dst: json11::get_next_token
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:683,1
    - Dst: json11::fail
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:689,1
    - Dst: json11::esc
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:689,1
    - Dst: json11::parse_string
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:691,1
    - Dst: Json
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:693,1
    - Dst: json11::get_next_token
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:695,1
    - Dst: json11::fail
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:697,1
    - Dst: json11::esc
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:697,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:699,1
    - Dst: json11::parse_json
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:699,1
    - Dst: Json
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:701,1
    - Dst: json11::get_next_token
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:703,1
    - Dst: json11::fail
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:707,1
    - Dst: json11::esc
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:707,1
    - Dst: json11::get_next_token
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:709,1
    - Dst: json11::get_next_token
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:716,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:722,1
    - Dst: json11::parse_json
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:722,1
    - Dst: Json
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:724,1
    - Dst: json11::get_next_token
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:726,1
    - Dst: json11::fail
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:730,1
    - Dst: json11::esc
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:730,1
    - Dst: json11::get_next_token
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:732,1
    - Dst: json11::fail
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:738,1
    - Dst: json11::esc
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:738,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 62
    argCount: 1
    argNames:
    - depth
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 739
      start: 655
    functionDepth: 0
    functionLinenumber: 655
    functionLinenumberEnd: 739
    functionName: json11::parse_json
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 1
    functionsReached:
    - std::move
    - json11::parse_number
    - vector::push_back
    - json11::expect
    - json11::get_next_token
    - json11::parse_json
    - json11::parse_string
    - json11::fail
    - json11::esc
    - Json
    linkageType: ''
    returnType: Json
    signature: Json parse_json(int depth)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json11::fail
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:368,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:368,1
    - Dst: Json
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:368,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - msg
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 369
      start: 367
    functionDepth: 0
    functionLinenumber: 367
    functionLinenumberEnd: 369
    functionName: json11::fail
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 8
    functionsReached:
    - json11::fail
    - std::move
    - Json
    linkageType: ''
    returnType: Json
    signature: Json fail(string &&msg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:374,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - msg
    - err_ret
    argTypes:
    - string
    - T
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 377
      start: 372
    functionDepth: 0
    functionLinenumber: 372
    functionLinenumberEnd: 377
    functionName: json11::fail
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 8
    functionsReached:
    - std::move
    linkageType: ''
    returnType: T
    signature: T fail(string &&msg, const T err_ret)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 386
      start: 383
    functionDepth: 0
    functionLinenumber: 383
    functionLinenumberEnd: 386
    functionName: json11::consume_whitespace
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void consume_whitespace()
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:396,1
    - Dst: json11::fail
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:397,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:401,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:408,1
    - Dst: json11::fail
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:409,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:413,1
    - Dst: json11::fail
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:414,1
    - Dst: json11::fail
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:421,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 27
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 424
      start: 392
    functionDepth: 0
    functionLinenumber: 392
    functionLinenumberEnd: 424
    functionName: json11::consume_comment
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 1
    functionsReached:
    - json11::fail
    - size
    linkageType: ''
    returnType: bool
    signature: bool consume_comment()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: json11::consume_whitespace
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:431,1
    - Dst: json11::consume_comment
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:435,1
    - Dst: json11::consume_whitespace
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:439,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 443
      start: 430
    functionDepth: 0
    functionLinenumber: 430
    functionLinenumberEnd: 443
    functionName: json11::consume_garbage
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 1
    functionsReached:
    - json11::consume_comment
    - json11::consume_whitespace
    linkageType: ''
    returnType: void
    signature: void consume_garbage()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: json11::consume_garbage
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:451,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:455,1
    - Dst: json11::fail
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:456,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 460
      start: 450
    functionDepth: 0
    functionLinenumber: 450
    functionLinenumberEnd: 460
    functionName: json11::get_next_token
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 1
    functionsReached:
    - json11::fail
    - size
    - json11::consume_garbage
    linkageType: ''
    returnType: char
    signature: char get_next_token()
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<char>
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:471,1
    - Dst: static_cast<char>
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:473,1
    - Dst: static_cast<char>
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:474,1
    - Dst: static_cast<char>
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:476,1
    - Dst: static_cast<char>
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:477,1
    - Dst: static_cast<char>
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:478,1
    - Dst: static_cast<char>
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:480,1
    - Dst: static_cast<char>
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:481,1
    - Dst: static_cast<char>
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:482,1
    - Dst: static_cast<char>
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:483,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 2
    argNames:
    - pt
    - ' out'
    argTypes:
    - long
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 485
      start: 466
    functionDepth: 0
    functionLinenumber: 466
    functionLinenumberEnd: 485
    functionName: json11::encode_utf8
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 1
    functionsReached:
    - static_cast<char>
    linkageType: ''
    returnType: void
    signature: void encode_utf8(long pt, string & out)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:495,1
    - Dst: json11::fail
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:496,1
    - Dst: json11::encode_utf8
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:501,1
    - Dst: json11::in_range
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:505,1
    - Dst: json11::fail
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:506,1
    - Dst: json11::esc
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:506,1
    - Dst: json11::encode_utf8
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:510,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:517,1
    - Dst: json11::fail
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:518,1
    - Dst: substr
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:524,1
    - Dst: string::length
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:528,1
    - Dst: json11::fail
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:529,1
    - Dst: json11::in_range
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:532,1
    - Dst: json11::in_range
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:532,1
    - Dst: json11::in_range
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:533,1
    - Dst: json11::fail
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:534,1
    - Dst: strtol
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:537,1
    - Dst: string::data
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:537,1
    - Dst: json11::in_range
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:543,1
    - Dst: json11::in_range
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:544,1
    - Dst: json11::encode_utf8
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:547,1
    - Dst: json11::encode_utf8
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:551,1
    - Dst: json11::encode_utf8
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:559,1
    - Dst: json11::fail
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:575,1
    - Dst: json11::esc
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:575,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 60
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 578
      start: 491
    functionDepth: 0
    functionLinenumber: 491
    functionLinenumberEnd: 578
    functionName: json11::parse_string
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 1
    functionsReached:
    - string::data
    - strtol
    - size
    - substr
    - json11::encode_utf8
    - json11::in_range
    - json11::fail
    - json11::esc
    - string::length
    linkageType: ''
    returnType: string
    signature: string parse_string()
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: json11::in_range
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:593,1
    - Dst: json11::fail
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:594,1
    - Dst: json11::in_range
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:595,1
    - Dst: json11::in_range
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:597,1
    - Dst: json11::fail
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:600,1
    - Dst: json11::esc
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:600,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:604,1
    - Dst: std::atoi
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:605,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:605,1
    - Dst: json11::in_range
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:611,1
    - Dst: json11::fail
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:612,1
    - Dst: json11::in_range
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:614,1
    - Dst: json11::in_range
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:625,1
    - Dst: json11::fail
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:626,1
    - Dst: json11::in_range
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:628,1
    - Dst: std::strtod
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:632,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:632,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 35
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 633
      start: 584
    functionDepth: 0
    functionLinenumber: 584
    functionLinenumberEnd: 633
    functionName: json11::parse_number
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 1
    functionsReached:
    - static_cast<size_t>
    - c_str
    - json11::in_range
    - std::strtod
    - json11::fail
    - json11::esc
    - std::atoi
    linkageType: ''
    returnType: Json
    signature: Json parse_number()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:641,1
    - Dst: compare
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:643,1
    - Dst: string::length
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:643,1
    - Dst: string::length
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:644,1
    - Dst: json11::fail
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:647,1
    - Dst: substr
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:647,1
    - Dst: string::length
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:647,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - expected
    - res
    argTypes:
    - string
    - Json
    assertStmts:
    - condition: (i != 0)
      pos:
        line_end: 640
        line_start: 640
        source_file: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    constantsTouched: []
    func_position:
      end: 649
      start: 640
    functionDepth: 0
    functionLinenumber: 640
    functionLinenumberEnd: 649
    functionName: json11::expect
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 1
    functionsReached:
    - assert
    - compare
    - substr
    - json11::fail
    - string::length
    linkageType: ''
    returnType: Json
    signature: Json expect(const string &expected, Json res)
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: json11::fail
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:657,1
    - Dst: json11::get_next_token
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:660,1
    - Dst: Json
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:662,1
    - Dst: json11::parse_number
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:666,1
    - Dst: json11::expect
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:670,1
    - Dst: json11::expect
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:673,1
    - Dst: json11::expect
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:676,1
    - Dst: Json
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:676,1
    - Dst: json11::parse_string
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:679,1
    - Dst: json11::get_next_token
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:683,1
    - Dst: json11::fail
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:689,1
    - Dst: json11::esc
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:689,1
    - Dst: json11::parse_string
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:691,1
    - Dst: Json
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:693,1
    - Dst: json11::get_next_token
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:695,1
    - Dst: json11::fail
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:697,1
    - Dst: json11::esc
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:697,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:699,1
    - Dst: json11::parse_json
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:699,1
    - Dst: Json
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:701,1
    - Dst: json11::get_next_token
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:703,1
    - Dst: json11::fail
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:707,1
    - Dst: json11::esc
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:707,1
    - Dst: json11::get_next_token
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:709,1
    - Dst: json11::get_next_token
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:716,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:722,1
    - Dst: json11::parse_json
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:722,1
    - Dst: Json
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:724,1
    - Dst: json11::get_next_token
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:726,1
    - Dst: json11::fail
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:730,1
    - Dst: json11::esc
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:730,1
    - Dst: json11::get_next_token
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:732,1
    - Dst: json11::fail
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:738,1
    - Dst: json11::esc
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:738,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 62
    argCount: 1
    argNames:
    - depth
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 739
      start: 655
    functionDepth: 0
    functionLinenumber: 655
    functionLinenumberEnd: 739
    functionName: json11::parse_json
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 2
    functionsReached:
    - std::move
    - json11::parse_number
    - vector::push_back
    - json11::expect
    - json11::get_next_token
    - json11::parse_json
    - json11::parse_string
    - json11::fail
    - json11::esc
    - Json
    linkageType: ''
    returnType: Json
    signature: Json parse_json(int depth)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: JsonParser::parse_json
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:745,1
    - Dst: JsonParser::consume_garbage
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:748,1
    - Dst: string::size
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:752,1
    - Dst: JsonParser::fail
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:753,1
    - Dst: esc
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:753,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 3
    argNames:
    - in
    - err
    - strategy
    argTypes:
    - string
    - string
    - JsonParse
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 757
      start: 743
    functionDepth: 0
    functionLinenumber: 743
    functionLinenumberEnd: 757
    functionName: json11::Json::parse
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 6
    functionsReached:
    - string::size
    - esc
    - JsonParser::consume_garbage
    - JsonParser::parse_json
    - JsonParser::fail
    linkageType: ''
    returnType: Json
    signature: Json Json::parse(const string &in, string &err, JsonParse strategy)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: string::size
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:767,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:768,1
    - Dst: JsonParser::parse_json
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:768,1
    - Dst: JsonParser::consume_garbage
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:774,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 4
    argNames:
    - in
    - parser_stop_pos
    - err
    - strategy
    argTypes:
    - string
    - std::string::size_type
    - string
    - JsonParse
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 781
      start: 760
    functionDepth: 0
    functionLinenumber: 760
    functionLinenumberEnd: 781
    functionName: json11::Json::parse_multi
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - JsonParser::consume_garbage
    - JsonParser::parse_json
    - vector::push_back
    - string::size
    linkageType: ''
    returnType: vector<Json>
    signature: "vector<Json> Json::parse_multi(const string &in,\n                               std::string::size_type
      &parser_stop_pos,\n                               string &err,\n                               JsonParse
      strategy)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: json11::Json::is_object
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:788,1
    - Dst: json11::Json::dump
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:789,1
    - Dst: object_items
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:793,1
    - Dst: find
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:795,1
    - Dst: cend
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:796,1
    - Dst: auto::second::type
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:796,1
    - Dst: json11::Json::dump
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:797,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 2
    argNames:
    - ' types'
    - ' err'
    argTypes:
    - shape
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 803
      start: 787
    functionDepth: 0
    functionLinenumber: 787
    functionLinenumberEnd: 803
    functionName: json11::Json::has_shape
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - auto::second::type
    - json11::Json::dump
    - cend
    - object_items
    - find
    - json11::Json::is_object
    linkageType: ''
    returnType: bool
    signature: bool Json::has_shape(const shape & types, string & err) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 47
    functionDepth: 0
    functionLinenumber: 47
    functionLinenumberEnd: 47
    functionName: operator==(NullStruct /*unused*/) const
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool operator==(NullStruct /*unused*/) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 48
    functionDepth: 0
    functionLinenumber: 48
    functionLinenumberEnd: 48
    functionName: operator<(NullStruct /*unused*/) const
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool operator<(NullStruct /*unused*/) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - out
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 55
    functionDepth: 0
    functionLinenumber: 55
    functionLinenumberEnd: 57
    functionName: json11::dump
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void dump(NullStruct /*unused*/, string &out)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::isfinite
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:60,1
    - Dst: snprintf
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:62,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - value
    - out
    argTypes:
    - double
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 59
    functionDepth: 0
    functionLinenumber: 59
    functionLinenumberEnd: 67
    functionName: json11::dump
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 3
    functionsReached:
    - std::isfinite
    - snprintf
    linkageType: ''
    returnType: void
    signature: void dump(double value, string &out)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:71,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - value
    - out
    argTypes:
    - int
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 69
    functionDepth: 0
    functionLinenumber: 69
    functionLinenumberEnd: 73
    functionName: json11::dump
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 3
    functionsReached:
    - snprintf
    linkageType: ''
    returnType: void
    signature: void dump(int value, string &out)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - value
    - out
    argTypes:
    - bool
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 75
    functionDepth: 0
    functionLinenumber: 75
    functionLinenumberEnd: 77
    functionName: json11::dump
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void dump(bool value, string &out)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: string::length
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:81,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:97,1
    - Dst: snprintf
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:99,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:101,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:101,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:102,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:105,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:105,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:106,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 40
    argCount: 2
    argNames:
    - value
    - out
    argTypes:
    - string
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 79
    functionDepth: 0
    functionLinenumber: 79
    functionLinenumberEnd: 114
    functionName: json11::dump
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 3
    functionsReached:
    - string::length
    - snprintf
    - static_cast<uint8_t>
    linkageType: ''
    returnType: void
    signature: void dump(const string &value, string &out)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: json11::dump
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:122,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - values
    - out
    argTypes:
    - Json::array
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 116
    functionDepth: 0
    functionLinenumber: 116
    functionLinenumberEnd: 126
    functionName: json11::dump
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 4
    functionsReached:
    - json11::dump
    linkageType: ''
    returnType: void
    signature: void dump(const Json::array &values, string &out)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: json11::dump
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:134,1
    - Dst: second::dump
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:136,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - values
    - out
    argTypes:
    - Json::object
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 128
    functionDepth: 0
    functionLinenumber: 128
    functionLinenumberEnd: 140
    functionName: json11::dump
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 5
    functionsReached:
    - json11::dump
    - second::dump
    linkageType: ''
    returnType: void
    signature: void dump(const Json::object &values, string &out)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json11::Json::dump
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:143,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - out
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 144
      start: 142
    functionDepth: 0
    functionLinenumber: 142
    functionLinenumberEnd: 144
    functionName: json11::Json::dump
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 6
    functionsReached:
    - json11::Json::dump
    linkageType: ''
    returnType: void
    signature: void Json::dump(string &out) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - value
    argTypes:
    - T
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 155
    functionDepth: 0
    functionLinenumber: 155
    functionLinenumberEnd: 155
    functionName: json11::Value::Value
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Value(const T &value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:156,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 1
    argNames:
    - value
    argTypes:
    - T
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 156
      start: 156
    functionDepth: 0
    functionLinenumber: 156
    functionLinenumberEnd: 156
    functionName: json11::Value::Value
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void Value(T &&value)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 161
      start: 159
    functionDepth: 0
    functionLinenumber: 159
    functionLinenumberEnd: 161
    functionName: json11::Value::type
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Json::Type
    signature: Json::Type type() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<const Value<tag, T> *>
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:165,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - other
    argTypes:
    - JsonValue*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 166
      start: 164
    functionDepth: 0
    functionLinenumber: 164
    functionLinenumberEnd: 166
    functionName: json11::Value::equals
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - static_cast<const Value<tag, T> *>
    linkageType: ''
    returnType: bool
    signature: bool equals(const JsonValue * other) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<const Value<tag, T> *>
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:168,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - other
    argTypes:
    - JsonValue*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 169
      start: 167
    functionDepth: 0
    functionLinenumber: 167
    functionLinenumberEnd: 169
    functionName: json11::Value::less
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - static_cast<const Value<tag, T> *>
    linkageType: ''
    returnType: bool
    signature: bool less(const JsonValue * other) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json11::dump
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:172,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - out
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 172
      start: 172
    functionDepth: 0
    functionLinenumber: 172
    functionLinenumberEnd: 172
    functionName: json11::Value::dump
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - json11::dump
    linkageType: ''
    returnType: void
    signature: void dump(string &out) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 176
      start: 176
    functionDepth: 0
    functionLinenumber: 176
    functionLinenumberEnd: 176
    functionName: json11::JsonDouble::number_value
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: double
    signature: double number_value() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:177,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 177
      start: 177
    functionDepth: 0
    functionLinenumber: 177
    functionLinenumberEnd: 177
    functionName: json11::JsonDouble::int_value
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - static_cast<int>
    linkageType: ''
    returnType: int
    signature: int int_value() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: JsonValue*::number_value
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:178,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - other
    argTypes:
    - JsonValue*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 178
      start: 178
    functionDepth: 0
    functionLinenumber: 178
    functionLinenumberEnd: 178
    functionName: json11::JsonDouble::equals
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - JsonValue*::number_value
    linkageType: ''
    returnType: bool
    signature: bool equals(const JsonValue * other) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: JsonValue*::number_value
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:179,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - other
    argTypes:
    - JsonValue*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 179
      start: 179
    functionDepth: 0
    functionLinenumber: 179
    functionLinenumberEnd: 179
    functionName: json11::JsonDouble::less
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - JsonValue*::number_value
    linkageType: ''
    returnType: bool
    signature: bool less(const JsonValue * other)   const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - value
    argTypes:
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 181
      start: 181
    functionDepth: 0
    functionLinenumber: 181
    functionLinenumberEnd: 181
    functionName: json11::JsonDouble::JsonDouble
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void JsonDouble(double value)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 185
      start: 185
    functionDepth: 0
    functionLinenumber: 185
    functionLinenumberEnd: 185
    functionName: json11::JsonInt::number_value
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: double
    signature: double number_value() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 186
      start: 186
    functionDepth: 0
    functionLinenumber: 186
    functionLinenumberEnd: 186
    functionName: json11::JsonInt::int_value
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int int_value() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: JsonValue*::number_value
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:187,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - other
    argTypes:
    - JsonValue*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 187
      start: 187
    functionDepth: 0
    functionLinenumber: 187
    functionLinenumberEnd: 187
    functionName: json11::JsonInt::equals
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - JsonValue*::number_value
    linkageType: ''
    returnType: bool
    signature: bool equals(const JsonValue * other) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: JsonValue*::number_value
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:188,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - other
    argTypes:
    - JsonValue*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 188
      start: 188
    functionDepth: 0
    functionLinenumber: 188
    functionLinenumberEnd: 188
    functionName: json11::JsonInt::less
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - JsonValue*::number_value
    linkageType: ''
    returnType: bool
    signature: bool less(const JsonValue * other)   const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - value
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 190
      start: 190
    functionDepth: 0
    functionLinenumber: 190
    functionLinenumberEnd: 190
    functionName: json11::JsonInt::JsonInt
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void JsonInt(int value)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 194
      start: 194
    functionDepth: 0
    functionLinenumber: 194
    functionLinenumberEnd: 194
    functionName: json11::JsonBoolean::bool_value
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool bool_value() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - value
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 196
      start: 196
    functionDepth: 0
    functionLinenumber: 196
    functionLinenumberEnd: 196
    functionName: json11::JsonBoolean::JsonBoolean
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void JsonBoolean(bool value)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 200
      start: 200
    functionDepth: 0
    functionLinenumber: 200
    functionLinenumberEnd: 200
    functionName: '&string_value() const override'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: string
    signature: string &string_value() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - value
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 202
      start: 202
    functionDepth: 0
    functionLinenumber: 202
    functionLinenumberEnd: 202
    functionName: json11::JsonString::JsonString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void JsonString(const string &value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:203,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 1
    argNames:
    - value
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 203
      start: 203
    functionDepth: 0
    functionLinenumber: 203
    functionLinenumberEnd: 203
    functionName: json11::JsonString::JsonString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void JsonString(string &&value)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 207
      start: 207
    functionDepth: 0
    functionLinenumber: 207
    functionLinenumberEnd: 207
    functionName: '&array_items() const override'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Json::array
    signature: Json::array &array_items() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - value
    argTypes:
    - Json::array
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 210
      start: 210
    functionDepth: 0
    functionLinenumber: 210
    functionLinenumberEnd: 210
    functionName: json11::JsonArray::JsonArray
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void JsonArray(const Json::array &value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:211,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 1
    argNames:
    - value
    argTypes:
    - Json::array
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 211
      start: 211
    functionDepth: 0
    functionLinenumber: 211
    functionLinenumberEnd: 211
    functionName: json11::JsonArray::JsonArray
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void JsonArray(Json::array &&value)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 215
      start: 215
    functionDepth: 0
    functionLinenumber: 215
    functionLinenumberEnd: 215
    functionName: '&object_items() const override'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Json::object
    signature: Json::object &object_items() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - value
    argTypes:
    - Json::object
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 218
      start: 218
    functionDepth: 0
    functionLinenumber: 218
    functionLinenumberEnd: 218
    functionName: json11::JsonObject::JsonObject
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void JsonObject(const Json::object &value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:219,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 1
    argNames:
    - value
    argTypes:
    - Json::object
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 219
      start: 219
    functionDepth: 0
    functionLinenumber: 219
    functionLinenumberEnd: 219
    functionName: json11::JsonObject::JsonObject
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void JsonObject(Json::object &&value)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 224
      start: 224
    functionDepth: 0
    functionLinenumber: 224
    functionLinenumberEnd: 224
    functionName: json11::JsonNull::JsonNull
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void JsonNull()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 237
      start: 237
    functionDepth: 0
    functionLinenumber: 237
    functionLinenumberEnd: 237
    functionName: json11::Statics
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Statics()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 243
      start: 240
    functionDepth: 0
    functionLinenumber: 240
    functionLinenumberEnd: 243
    functionName: json11::statics
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Statics
    signature: Statics & statics()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 249
      start: 245
    functionDepth: 0
    functionLinenumber: 245
    functionLinenumberEnd: 249
    functionName: json11::static_null
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Json
    signature: Json & static_null()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: statics
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:255,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 255
      start: 255
    functionDepth: 0
    functionLinenumber: 255
    functionLinenumberEnd: 255
    functionName: json11::Json::Json
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - statics
    linkageType: ''
    returnType: void
    signature: void Json::Json() noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: statics
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:256,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 256
      start: 256
    functionDepth: 0
    functionLinenumber: 256
    functionLinenumberEnd: 256
    functionName: json11::Json::Json
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - statics
    linkageType: ''
    returnType: void
    signature: void Json::Json(std::nullptr_t) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: make_shared<JsonDouble>
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:257,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - value
    argTypes:
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 257
      start: 257
    functionDepth: 0
    functionLinenumber: 257
    functionLinenumberEnd: 257
    functionName: json11::Json::Json
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - make_shared<JsonDouble>
    linkageType: ''
    returnType: void
    signature: void Json::Json(double value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: make_shared<JsonInt>
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:258,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - value
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 258
      start: 258
    functionDepth: 0
    functionLinenumber: 258
    functionLinenumberEnd: 258
    functionName: json11::Json::Json
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - make_shared<JsonInt>
    linkageType: ''
    returnType: void
    signature: void Json::Json(int value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: statics
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:259,1
    - Dst: statics
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:259,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - value
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 259
      start: 259
    functionDepth: 0
    functionLinenumber: 259
    functionLinenumberEnd: 259
    functionName: json11::Json::Json
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - statics
    linkageType: ''
    returnType: void
    signature: void Json::Json(bool value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: make_shared<JsonString>
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:260,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - value
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 260
      start: 260
    functionDepth: 0
    functionLinenumber: 260
    functionLinenumberEnd: 260
    functionName: json11::Json::Json
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - make_shared<JsonString>
    linkageType: ''
    returnType: void
    signature: void Json::Json(const string &value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: make_shared<JsonString>
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:261,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:261,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 1
    argNames:
    - value
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 261
      start: 261
    functionDepth: 0
    functionLinenumber: 261
    functionLinenumberEnd: 261
    functionName: json11::Json::Json
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - std::move
    - make_shared<JsonString>
    linkageType: ''
    returnType: void
    signature: void Json::Json(string &&value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: make_shared<JsonString>
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:262,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - value
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 262
      start: 262
    functionDepth: 0
    functionLinenumber: 262
    functionLinenumberEnd: 262
    functionName: json11::Json::Json
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - make_shared<JsonString>
    linkageType: ''
    returnType: void
    signature: void Json::Json(const char * value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: make_shared<JsonArray>
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:263,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - values
    argTypes:
    - Json::array
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 263
      start: 263
    functionDepth: 0
    functionLinenumber: 263
    functionLinenumberEnd: 263
    functionName: json11::Json::Json
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - make_shared<JsonArray>
    linkageType: ''
    returnType: void
    signature: void Json::Json(const Json::array &values)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: make_shared<JsonArray>
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:264,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:264,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 1
    argNames:
    - values
    argTypes:
    - Json::array
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 264
      start: 264
    functionDepth: 0
    functionLinenumber: 264
    functionLinenumberEnd: 264
    functionName: json11::Json::Json
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - std::move
    - make_shared<JsonArray>
    linkageType: ''
    returnType: void
    signature: void Json::Json(Json::array &&values)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: make_shared<JsonObject>
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:265,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - values
    argTypes:
    - Json::object
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 265
      start: 265
    functionDepth: 0
    functionLinenumber: 265
    functionLinenumberEnd: 265
    functionName: json11::Json::Json
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - make_shared<JsonObject>
    linkageType: ''
    returnType: void
    signature: void Json::Json(const Json::object &values)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: make_shared<JsonObject>
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:266,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:266,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 1
    argNames:
    - values
    argTypes:
    - Json::object
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 266
      start: 266
    functionDepth: 0
    functionLinenumber: 266
    functionLinenumberEnd: 266
    functionName: json11::Json::Json
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - make_shared<JsonObject>
    - std::move
    linkageType: ''
    returnType: void
    signature: void Json::Json(Json::object &&values)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json11::Json::type
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:272,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 272
      start: 272
    functionDepth: 0
    functionLinenumber: 272
    functionLinenumberEnd: 272
    functionName: json11::Json::type
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 2
    functionsReached:
    - json11::Json::type
    linkageType: ''
    returnType: Json::Type
    signature: Json::Type Json::type()                           const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json11::Json::number_value
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:273,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 273
      start: 273
    functionDepth: 0
    functionLinenumber: 273
    functionLinenumberEnd: 273
    functionName: json11::Json::number_value
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 2
    functionsReached:
    - json11::Json::number_value
    linkageType: ''
    returnType: double
    signature: double Json::number_value()                       const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json11::Json::int_value
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:274,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 274
      start: 274
    functionDepth: 0
    functionLinenumber: 274
    functionLinenumberEnd: 274
    functionName: json11::Json::int_value
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 2
    functionsReached:
    - json11::Json::int_value
    linkageType: ''
    returnType: int
    signature: int Json::int_value()                             const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json11::Json::bool_value
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:275,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 275
      start: 275
    functionDepth: 0
    functionLinenumber: 275
    functionLinenumberEnd: 275
    functionName: json11::Json::bool_value
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 2
    functionsReached:
    - json11::Json::bool_value
    linkageType: ''
    returnType: bool
    signature: bool Json::bool_value()                           const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: string_value
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:276,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 276
      start: 276
    functionDepth: 0
    functionLinenumber: 276
    functionLinenumberEnd: 276
    functionName: '& Json::string_value()               const'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - string_value
    linkageType: ''
    returnType: string
    signature: string & Json::string_value()               const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_items
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:277,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 277
      start: 277
    functionDepth: 0
    functionLinenumber: 277
    functionLinenumberEnd: 277
    functionName: '& Json::array_items()          const'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - array_items
    linkageType: ''
    returnType: vector<Json>
    signature: vector<Json> & Json::array_items()          const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: object_items
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:278,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 278
      start: 278
    functionDepth: 0
    functionLinenumber: 278
    functionLinenumberEnd: 278
    functionName: '& Json::object_items()    const'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - object_items
    linkageType: ''
    returnType: map<string, Json>
    signature: map<string, Json> & Json::object_items()    const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - i
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 279
      start: 279
    functionDepth: 0
    functionLinenumber: 279
    functionLinenumberEnd: 279
    functionName: '& Json::operator[] (size_t i)          const'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Json
    signature: Json & Json::operator[] (size_t i)          const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - key
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 280
      start: 280
    functionDepth: 0
    functionLinenumber: 280
    functionLinenumberEnd: 280
    functionName: '& Json::operator[] (const string &key) const'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Json
    signature: Json & Json::operator[] (const string &key) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 282
      start: 282
    functionDepth: 0
    functionLinenumber: 282
    functionLinenumberEnd: 282
    functionName: json11::JsonValue::number_value
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: double
    signature: double JsonValue::number_value()              const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 283
      start: 283
    functionDepth: 0
    functionLinenumber: 283
    functionLinenumberEnd: 283
    functionName: json11::JsonValue::int_value
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int JsonValue::int_value()                 const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 284
      start: 284
    functionDepth: 0
    functionLinenumber: 284
    functionLinenumberEnd: 284
    functionName: json11::JsonValue::bool_value
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool JsonValue::bool_value()                const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: statics
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:285,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 285
      start: 285
    functionDepth: 0
    functionLinenumber: 285
    functionLinenumberEnd: 285
    functionName: '&            JsonValue::string_value()              const'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - statics
    linkageType: ''
    returnType: string
    signature: string &            JsonValue::string_value()              const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: statics
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:286,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 286
      start: 286
    functionDepth: 0
    functionLinenumber: 286
    functionLinenumberEnd: 286
    functionName: '&      JsonValue::array_items()               const'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - statics
    linkageType: ''
    returnType: vector<Json>
    signature: vector<Json> &      JsonValue::array_items()               const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: statics
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:287,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 287
      start: 287
    functionDepth: 0
    functionLinenumber: 287
    functionLinenumberEnd: 287
    functionName: '& JsonValue::object_items()              const'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - statics
    linkageType: ''
    returnType: map<string, Json>
    signature: map<string, Json> & JsonValue::object_items()              const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_null
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:288,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 288
      start: 288
    functionDepth: 0
    functionLinenumber: 288
    functionLinenumberEnd: 288
    functionName: '&              JsonValue::operator[] (size_t)         const'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - static_null
    linkageType: ''
    returnType: Json
    signature: Json &              JsonValue::operator[] (size_t)         const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_null
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:289,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 289
      start: 289
    functionDepth: 0
    functionLinenumber: 289
    functionLinenumberEnd: 289
    functionName: '&              JsonValue::operator[] (const string &) const'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - static_null
    linkageType: ''
    returnType: Json
    signature: Json &              JsonValue::operator[] (const string &) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: find
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:292,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:293,1
    - Dst: static_null
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:293,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - key
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 294
      start: 291
    functionDepth: 0
    functionLinenumber: 291
    functionLinenumberEnd: 294
    functionName: '& JsonObject::operator[] (const string &key) const'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - static_null
    - end
    - find
    linkageType: ''
    returnType: Json
    signature: Json & JsonObject::operator[] (const string &key) const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:296,1
    - Dst: static_null
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:296,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - i
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 298
      start: 295
    functionDepth: 0
    functionLinenumber: 295
    functionLinenumberEnd: 298
    functionName: '& JsonArray::operator[] (size_t i) const'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - static_null
    - size
    linkageType: ''
    returnType: Json
    signature: Json & JsonArray::operator[] (size_t i) const
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: type
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:308,1
    - Dst: Json::m_ptr::type
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:308,1
    - Dst: equals
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:312,1
    - Dst: Json::m_ptr::get
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:312,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - other
    argTypes:
    - Json
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 313
      start: 304
    functionDepth: 0
    functionLinenumber: 304
    functionLinenumberEnd: 313
    functionName: Json::operator== (const Json &other) const
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - Json::m_ptr::type
    - equals
    - Json::m_ptr::get
    - type
    linkageType: ''
    returnType: bool
    signature: bool Json::operator== (const Json &other) const
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: type
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:319,1
    - Dst: Json::m_ptr::type
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:319,1
    - Dst: type
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:320,1
    - Dst: Json::m_ptr::type
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:320,1
    - Dst: less
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:323,1
    - Dst: Json::m_ptr::get
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:323,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - other
    argTypes:
    - Json
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 324
      start: 315
    functionDepth: 0
    functionLinenumber: 315
    functionLinenumberEnd: 324
    functionName: Json::operator< (const Json &other) const
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - Json::m_ptr::type
    - less
    - Json::m_ptr::get
    - type
    linkageType: ''
    returnType: bool
    signature: bool Json::operator< (const Json &other) const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:336,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:336,1
    - Dst: snprintf
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:337,1
    - Dst: snprintf
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:339,1
    - Dst: string
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:341,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - c
    argTypes:
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 342
      start: 334
    functionDepth: 0
    functionLinenumber: 334
    functionLinenumberEnd: 342
    functionName: json11::esc
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 6
    functionsReached:
    - string
    - snprintf
    - static_cast<uint8_t>
    linkageType: ''
    returnType: string
    signature: string esc(char c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 3
    argNames:
    - x
    - lower
    - upper
    argTypes:
    - long
    - long
    - long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 346
      start: 344
    functionDepth: 0
    functionLinenumber: 344
    functionLinenumberEnd: 346
    functionName: json11::in_range
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool in_range(long x, long lower, long upper)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json11::fail
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:368,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:368,1
    - Dst: Json
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:368,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - msg
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 369
      start: 367
    functionDepth: 0
    functionLinenumber: 367
    functionLinenumberEnd: 369
    functionName: json11::fail
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 15
    functionsReached:
    - json11::fail
    - std::move
    - Json
    linkageType: ''
    returnType: Json
    signature: Json fail(string &&msg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:374,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - msg
    - err_ret
    argTypes:
    - string
    - T
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 377
      start: 372
    functionDepth: 0
    functionLinenumber: 372
    functionLinenumberEnd: 377
    functionName: json11::fail
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 15
    functionsReached:
    - std::move
    linkageType: ''
    returnType: T
    signature: T fail(string &&msg, const T err_ret)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 386
      start: 383
    functionDepth: 0
    functionLinenumber: 383
    functionLinenumberEnd: 386
    functionName: json11::consume_whitespace
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void consume_whitespace()
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:396,1
    - Dst: json11::fail
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:397,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:401,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:408,1
    - Dst: json11::fail
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:409,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:413,1
    - Dst: json11::fail
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:414,1
    - Dst: json11::fail
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:421,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 27
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 424
      start: 392
    functionDepth: 0
    functionLinenumber: 392
    functionLinenumberEnd: 424
    functionName: json11::consume_comment
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 2
    functionsReached:
    - json11::fail
    - size
    linkageType: ''
    returnType: bool
    signature: bool consume_comment()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: json11::consume_whitespace
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:431,1
    - Dst: json11::consume_comment
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:435,1
    - Dst: json11::consume_whitespace
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:439,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 443
      start: 430
    functionDepth: 0
    functionLinenumber: 430
    functionLinenumberEnd: 443
    functionName: json11::consume_garbage
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 2
    functionsReached:
    - json11::consume_comment
    - json11::consume_whitespace
    linkageType: ''
    returnType: void
    signature: void consume_garbage()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: json11::consume_garbage
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:451,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:455,1
    - Dst: json11::fail
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:456,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 460
      start: 450
    functionDepth: 0
    functionLinenumber: 450
    functionLinenumberEnd: 460
    functionName: json11::get_next_token
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 2
    functionsReached:
    - json11::fail
    - size
    - json11::consume_garbage
    linkageType: ''
    returnType: char
    signature: char get_next_token()
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<char>
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:471,1
    - Dst: static_cast<char>
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:473,1
    - Dst: static_cast<char>
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:474,1
    - Dst: static_cast<char>
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:476,1
    - Dst: static_cast<char>
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:477,1
    - Dst: static_cast<char>
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:478,1
    - Dst: static_cast<char>
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:480,1
    - Dst: static_cast<char>
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:481,1
    - Dst: static_cast<char>
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:482,1
    - Dst: static_cast<char>
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:483,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 2
    argNames:
    - pt
    - ' out'
    argTypes:
    - long
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 485
      start: 466
    functionDepth: 0
    functionLinenumber: 466
    functionLinenumberEnd: 485
    functionName: json11::encode_utf8
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 2
    functionsReached:
    - static_cast<char>
    linkageType: ''
    returnType: void
    signature: void encode_utf8(long pt, string & out)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:495,1
    - Dst: json11::fail
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:496,1
    - Dst: json11::encode_utf8
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:501,1
    - Dst: json11::in_range
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:505,1
    - Dst: json11::fail
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:506,1
    - Dst: json11::esc
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:506,1
    - Dst: json11::encode_utf8
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:510,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:517,1
    - Dst: json11::fail
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:518,1
    - Dst: substr
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:524,1
    - Dst: string::length
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:528,1
    - Dst: json11::fail
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:529,1
    - Dst: json11::in_range
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:532,1
    - Dst: json11::in_range
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:532,1
    - Dst: json11::in_range
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:533,1
    - Dst: json11::fail
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:534,1
    - Dst: strtol
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:537,1
    - Dst: string::data
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:537,1
    - Dst: json11::in_range
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:543,1
    - Dst: json11::in_range
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:544,1
    - Dst: json11::encode_utf8
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:547,1
    - Dst: json11::encode_utf8
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:551,1
    - Dst: json11::encode_utf8
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:559,1
    - Dst: json11::fail
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:575,1
    - Dst: json11::esc
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:575,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 60
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 578
      start: 491
    functionDepth: 0
    functionLinenumber: 491
    functionLinenumberEnd: 578
    functionName: json11::parse_string
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 2
    functionsReached:
    - string::data
    - strtol
    - size
    - substr
    - json11::encode_utf8
    - json11::in_range
    - json11::fail
    - json11::esc
    - string::length
    linkageType: ''
    returnType: string
    signature: string parse_string()
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: json11::in_range
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:593,1
    - Dst: json11::fail
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:594,1
    - Dst: json11::in_range
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:595,1
    - Dst: json11::in_range
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:597,1
    - Dst: json11::fail
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:600,1
    - Dst: json11::esc
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:600,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:604,1
    - Dst: std::atoi
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:605,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:605,1
    - Dst: json11::in_range
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:611,1
    - Dst: json11::fail
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:612,1
    - Dst: json11::in_range
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:614,1
    - Dst: json11::in_range
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:625,1
    - Dst: json11::fail
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:626,1
    - Dst: json11::in_range
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:628,1
    - Dst: std::strtod
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:632,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:632,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 35
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 633
      start: 584
    functionDepth: 0
    functionLinenumber: 584
    functionLinenumberEnd: 633
    functionName: json11::parse_number
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 2
    functionsReached:
    - static_cast<size_t>
    - c_str
    - json11::in_range
    - std::strtod
    - json11::fail
    - json11::esc
    - std::atoi
    linkageType: ''
    returnType: Json
    signature: Json parse_number()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:641,1
    - Dst: compare
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:643,1
    - Dst: string::length
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:643,1
    - Dst: string::length
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:644,1
    - Dst: json11::fail
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:647,1
    - Dst: substr
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:647,1
    - Dst: string::length
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:647,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - expected
    - res
    argTypes:
    - string
    - Json
    assertStmts:
    - condition: (i != 0)
      pos:
        line_end: 640
        line_start: 640
        source_file: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    constantsTouched: []
    func_position:
      end: 649
      start: 640
    functionDepth: 0
    functionLinenumber: 640
    functionLinenumberEnd: 649
    functionName: json11::expect
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 2
    functionsReached:
    - assert
    - compare
    - substr
    - json11::fail
    - string::length
    linkageType: ''
    returnType: Json
    signature: Json expect(const string &expected, Json res)
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: json11::fail
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:657,1
    - Dst: json11::get_next_token
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:660,1
    - Dst: Json
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:662,1
    - Dst: json11::parse_number
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:666,1
    - Dst: json11::expect
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:670,1
    - Dst: json11::expect
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:673,1
    - Dst: json11::expect
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:676,1
    - Dst: Json
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:676,1
    - Dst: json11::parse_string
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:679,1
    - Dst: json11::get_next_token
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:683,1
    - Dst: json11::fail
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:689,1
    - Dst: json11::esc
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:689,1
    - Dst: json11::parse_string
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:691,1
    - Dst: Json
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:693,1
    - Dst: json11::get_next_token
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:695,1
    - Dst: json11::fail
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:697,1
    - Dst: json11::esc
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:697,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:699,1
    - Dst: json11::parse_json
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:699,1
    - Dst: Json
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:701,1
    - Dst: json11::get_next_token
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:703,1
    - Dst: json11::fail
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:707,1
    - Dst: json11::esc
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:707,1
    - Dst: json11::get_next_token
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:709,1
    - Dst: json11::get_next_token
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:716,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:722,1
    - Dst: json11::parse_json
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:722,1
    - Dst: Json
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:724,1
    - Dst: json11::get_next_token
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:726,1
    - Dst: json11::fail
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:730,1
    - Dst: json11::esc
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:730,1
    - Dst: json11::get_next_token
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:732,1
    - Dst: json11::fail
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:738,1
    - Dst: json11::esc
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:738,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 62
    argCount: 1
    argNames:
    - depth
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 739
      start: 655
    functionDepth: 0
    functionLinenumber: 655
    functionLinenumberEnd: 739
    functionName: json11::parse_json
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 3
    functionsReached:
    - std::move
    - json11::parse_number
    - vector::push_back
    - json11::expect
    - json11::get_next_token
    - json11::parse_json
    - json11::parse_string
    - json11::fail
    - json11::esc
    - Json
    linkageType: ''
    returnType: Json
    signature: Json parse_json(int depth)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json11::fail
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:368,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:368,1
    - Dst: Json
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:368,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - msg
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 369
      start: 367
    functionDepth: 0
    functionLinenumber: 367
    functionLinenumberEnd: 369
    functionName: json11::fail
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 22
    functionsReached:
    - json11::fail
    - std::move
    - Json
    linkageType: ''
    returnType: Json
    signature: Json fail(string &&msg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:374,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - msg
    - err_ret
    argTypes:
    - string
    - T
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 377
      start: 372
    functionDepth: 0
    functionLinenumber: 372
    functionLinenumberEnd: 377
    functionName: json11::fail
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 22
    functionsReached:
    - std::move
    linkageType: ''
    returnType: T
    signature: T fail(string &&msg, const T err_ret)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 386
      start: 383
    functionDepth: 0
    functionLinenumber: 383
    functionLinenumberEnd: 386
    functionName: json11::consume_whitespace
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void consume_whitespace()
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:396,1
    - Dst: json11::fail
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:397,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:401,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:408,1
    - Dst: json11::fail
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:409,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:413,1
    - Dst: json11::fail
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:414,1
    - Dst: json11::fail
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:421,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 27
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 424
      start: 392
    functionDepth: 0
    functionLinenumber: 392
    functionLinenumberEnd: 424
    functionName: json11::consume_comment
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 3
    functionsReached:
    - json11::fail
    - size
    linkageType: ''
    returnType: bool
    signature: bool consume_comment()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: json11::consume_whitespace
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:431,1
    - Dst: json11::consume_comment
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:435,1
    - Dst: json11::consume_whitespace
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:439,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 443
      start: 430
    functionDepth: 0
    functionLinenumber: 430
    functionLinenumberEnd: 443
    functionName: json11::consume_garbage
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 3
    functionsReached:
    - json11::consume_comment
    - json11::consume_whitespace
    linkageType: ''
    returnType: void
    signature: void consume_garbage()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: json11::consume_garbage
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:451,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:455,1
    - Dst: json11::fail
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:456,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 460
      start: 450
    functionDepth: 0
    functionLinenumber: 450
    functionLinenumberEnd: 460
    functionName: json11::get_next_token
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 3
    functionsReached:
    - json11::fail
    - size
    - json11::consume_garbage
    linkageType: ''
    returnType: char
    signature: char get_next_token()
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<char>
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:471,1
    - Dst: static_cast<char>
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:473,1
    - Dst: static_cast<char>
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:474,1
    - Dst: static_cast<char>
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:476,1
    - Dst: static_cast<char>
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:477,1
    - Dst: static_cast<char>
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:478,1
    - Dst: static_cast<char>
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:480,1
    - Dst: static_cast<char>
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:481,1
    - Dst: static_cast<char>
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:482,1
    - Dst: static_cast<char>
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:483,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 2
    argNames:
    - pt
    - ' out'
    argTypes:
    - long
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 485
      start: 466
    functionDepth: 0
    functionLinenumber: 466
    functionLinenumberEnd: 485
    functionName: json11::encode_utf8
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 3
    functionsReached:
    - static_cast<char>
    linkageType: ''
    returnType: void
    signature: void encode_utf8(long pt, string & out)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:495,1
    - Dst: json11::fail
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:496,1
    - Dst: json11::encode_utf8
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:501,1
    - Dst: json11::in_range
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:505,1
    - Dst: json11::fail
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:506,1
    - Dst: json11::esc
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:506,1
    - Dst: json11::encode_utf8
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:510,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:517,1
    - Dst: json11::fail
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:518,1
    - Dst: substr
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:524,1
    - Dst: string::length
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:528,1
    - Dst: json11::fail
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:529,1
    - Dst: json11::in_range
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:532,1
    - Dst: json11::in_range
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:532,1
    - Dst: json11::in_range
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:533,1
    - Dst: json11::fail
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:534,1
    - Dst: strtol
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:537,1
    - Dst: string::data
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:537,1
    - Dst: json11::in_range
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:543,1
    - Dst: json11::in_range
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:544,1
    - Dst: json11::encode_utf8
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:547,1
    - Dst: json11::encode_utf8
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:551,1
    - Dst: json11::encode_utf8
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:559,1
    - Dst: json11::fail
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:575,1
    - Dst: json11::esc
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:575,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 60
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 578
      start: 491
    functionDepth: 0
    functionLinenumber: 491
    functionLinenumberEnd: 578
    functionName: json11::parse_string
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 3
    functionsReached:
    - string::data
    - strtol
    - size
    - substr
    - json11::encode_utf8
    - json11::in_range
    - json11::fail
    - json11::esc
    - string::length
    linkageType: ''
    returnType: string
    signature: string parse_string()
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: json11::in_range
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:593,1
    - Dst: json11::fail
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:594,1
    - Dst: json11::in_range
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:595,1
    - Dst: json11::in_range
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:597,1
    - Dst: json11::fail
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:600,1
    - Dst: json11::esc
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:600,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:604,1
    - Dst: std::atoi
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:605,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:605,1
    - Dst: json11::in_range
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:611,1
    - Dst: json11::fail
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:612,1
    - Dst: json11::in_range
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:614,1
    - Dst: json11::in_range
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:625,1
    - Dst: json11::fail
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:626,1
    - Dst: json11::in_range
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:628,1
    - Dst: std::strtod
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:632,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:632,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 35
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 633
      start: 584
    functionDepth: 0
    functionLinenumber: 584
    functionLinenumberEnd: 633
    functionName: json11::parse_number
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 3
    functionsReached:
    - static_cast<size_t>
    - c_str
    - json11::in_range
    - std::strtod
    - json11::fail
    - json11::esc
    - std::atoi
    linkageType: ''
    returnType: Json
    signature: Json parse_number()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:641,1
    - Dst: compare
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:643,1
    - Dst: string::length
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:643,1
    - Dst: string::length
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:644,1
    - Dst: json11::fail
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:647,1
    - Dst: substr
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:647,1
    - Dst: string::length
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:647,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - expected
    - res
    argTypes:
    - string
    - Json
    assertStmts:
    - condition: (i != 0)
      pos:
        line_end: 640
        line_start: 640
        source_file: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    constantsTouched: []
    func_position:
      end: 649
      start: 640
    functionDepth: 0
    functionLinenumber: 640
    functionLinenumberEnd: 649
    functionName: json11::expect
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 3
    functionsReached:
    - assert
    - compare
    - substr
    - json11::fail
    - string::length
    linkageType: ''
    returnType: Json
    signature: Json expect(const string &expected, Json res)
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: json11::fail
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:657,1
    - Dst: json11::get_next_token
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:660,1
    - Dst: Json
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:662,1
    - Dst: json11::parse_number
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:666,1
    - Dst: json11::expect
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:670,1
    - Dst: json11::expect
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:673,1
    - Dst: json11::expect
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:676,1
    - Dst: Json
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:676,1
    - Dst: json11::parse_string
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:679,1
    - Dst: json11::get_next_token
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:683,1
    - Dst: json11::fail
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:689,1
    - Dst: json11::esc
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:689,1
    - Dst: json11::parse_string
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:691,1
    - Dst: Json
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:693,1
    - Dst: json11::get_next_token
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:695,1
    - Dst: json11::fail
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:697,1
    - Dst: json11::esc
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:697,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:699,1
    - Dst: json11::parse_json
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:699,1
    - Dst: Json
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:701,1
    - Dst: json11::get_next_token
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:703,1
    - Dst: json11::fail
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:707,1
    - Dst: json11::esc
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:707,1
    - Dst: json11::get_next_token
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:709,1
    - Dst: json11::get_next_token
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:716,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:722,1
    - Dst: json11::parse_json
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:722,1
    - Dst: Json
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:724,1
    - Dst: json11::get_next_token
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:726,1
    - Dst: json11::fail
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:730,1
    - Dst: json11::esc
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:730,1
    - Dst: json11::get_next_token
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:732,1
    - Dst: json11::fail
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:738,1
    - Dst: json11::esc
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:738,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 62
    argCount: 1
    argNames:
    - depth
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 739
      start: 655
    functionDepth: 0
    functionLinenumber: 655
    functionLinenumberEnd: 739
    functionName: json11::parse_json
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 4
    functionsReached:
    - std::move
    - json11::parse_number
    - vector::push_back
    - json11::expect
    - json11::get_next_token
    - json11::parse_json
    - json11::parse_string
    - json11::fail
    - json11::esc
    - Json
    linkageType: ''
    returnType: Json
    signature: Json parse_json(int depth)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: JsonParser::parse_json
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:745,1
    - Dst: JsonParser::consume_garbage
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:748,1
    - Dst: string::size
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:752,1
    - Dst: JsonParser::fail
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:753,1
    - Dst: esc
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:753,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 3
    argNames:
    - in
    - err
    - strategy
    argTypes:
    - string
    - string
    - JsonParse
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 757
      start: 743
    functionDepth: 0
    functionLinenumber: 743
    functionLinenumberEnd: 757
    functionName: json11::Json::parse
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 6
    functionsReached:
    - string::size
    - esc
    - JsonParser::consume_garbage
    - JsonParser::parse_json
    - JsonParser::fail
    linkageType: ''
    returnType: Json
    signature: Json Json::parse(const string &in, string &err, JsonParse strategy)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: string::size
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:767,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:768,1
    - Dst: JsonParser::parse_json
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:768,1
    - Dst: JsonParser::consume_garbage
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:774,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 4
    argNames:
    - in
    - parser_stop_pos
    - err
    - strategy
    argTypes:
    - string
    - std::string::size_type
    - string
    - JsonParse
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 781
      start: 760
    functionDepth: 0
    functionLinenumber: 760
    functionLinenumberEnd: 781
    functionName: json11::Json::parse_multi
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - JsonParser::consume_garbage
    - JsonParser::parse_json
    - vector::push_back
    - string::size
    linkageType: ''
    returnType: vector<Json>
    signature: "vector<Json> Json::parse_multi(const string &in,\n                               std::string::size_type
      &parser_stop_pos,\n                               string &err,\n                               JsonParse
      strategy)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: json11::Json::is_object
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:788,1
    - Dst: json11::Json::dump
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:789,1
    - Dst: object_items
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:793,1
    - Dst: find
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:795,1
    - Dst: cend
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:796,1
    - Dst: auto::second::type
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:796,1
    - Dst: json11::Json::dump
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp:797,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 2
    argNames:
    - ' types'
    - ' err'
    argTypes:
    - shape
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 803
      start: 787
    functionDepth: 0
    functionLinenumber: 787
    functionLinenumberEnd: 803
    functionName: json11::Json::has_shape
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - auto::second::type
    - json11::Json::dump
    - cend
    - object_items
    - find
    - json11::Json::is_object
    linkageType: ''
    returnType: bool
    signature: bool Json::has_shape(const shape & types, string & err) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: to_json
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.hpp:106,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' t'
    argTypes:
    - T
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 106
    functionDepth: 0
    functionLinenumber: 106
    functionLinenumberEnd: 106
    functionName: json11::Json::Json
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.hpp
    functionUses: 0
    functionsReached:
    - to_json
    linkageType: ''
    returnType: void
    signature: void Json(const T & t)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: object
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.hpp:113,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.hpp:113,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.hpp:113,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' m'
    argTypes:
    - M
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 113
      start: 113
    functionDepth: 0
    functionLinenumber: 113
    functionLinenumberEnd: 113
    functionName: json11::Json::Json
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.hpp
    functionUses: 0
    functionsReached:
    - object
    - end
    - begin
    linkageType: ''
    returnType: void
    signature: void Json(const M & m)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.hpp:119,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.hpp:119,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.hpp:119,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' v'
    argTypes:
    - V
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 119
      start: 119
    functionDepth: 0
    functionLinenumber: 119
    functionLinenumberEnd: 119
    functionName: json11::Json::Json
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.hpp
    functionUses: 0
    functionsReached:
    - end
    - array
    - begin
    linkageType: ''
    returnType: void
    signature: void Json(const V & v)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 123
    functionDepth: 0
    functionLinenumber: 123
    functionLinenumberEnd: 123
    functionName: json11::Json::Json
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Json(void *)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json11::Json::type
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.hpp:128,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 128
    functionDepth: 0
    functionLinenumber: 128
    functionLinenumberEnd: 128
    functionName: json11::Json::is_null
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.hpp
    functionUses: 2
    functionsReached:
    - json11::Json::type
    linkageType: ''
    returnType: bool
    signature: bool is_null()   const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json11::Json::type
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.hpp:129,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 129
      start: 129
    functionDepth: 0
    functionLinenumber: 129
    functionLinenumberEnd: 129
    functionName: json11::Json::is_number
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.hpp
    functionUses: 0
    functionsReached:
    - json11::Json::type
    linkageType: ''
    returnType: bool
    signature: bool is_number() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json11::Json::type
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.hpp:130,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 130
      start: 130
    functionDepth: 0
    functionLinenumber: 130
    functionLinenumberEnd: 130
    functionName: json11::Json::is_bool
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.hpp
    functionUses: 0
    functionsReached:
    - json11::Json::type
    linkageType: ''
    returnType: bool
    signature: bool is_bool()   const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json11::Json::type
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.hpp:131,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 131
      start: 131
    functionDepth: 0
    functionLinenumber: 131
    functionLinenumberEnd: 131
    functionName: json11::Json::is_string
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.hpp
    functionUses: 0
    functionsReached:
    - json11::Json::type
    linkageType: ''
    returnType: bool
    signature: bool is_string() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json11::Json::type
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.hpp:132,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 132
      start: 132
    functionDepth: 0
    functionLinenumber: 132
    functionLinenumberEnd: 132
    functionName: json11::Json::is_array
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.hpp
    functionUses: 0
    functionsReached:
    - json11::Json::type
    linkageType: ''
    returnType: bool
    signature: bool is_array()  const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json11::Json::type
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.hpp:133,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 133
      start: 133
    functionDepth: 0
    functionLinenumber: 133
    functionLinenumberEnd: 133
    functionName: json11::Json::is_object
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.hpp
    functionUses: 2
    functionsReached:
    - json11::Json::type
    linkageType: ''
    returnType: bool
    signature: bool is_object() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json11::Json::dump
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.hpp:159,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 161
      start: 157
    functionDepth: 0
    functionLinenumber: 157
    functionLinenumberEnd: 161
    functionName: json11::Json::dump
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.hpp
    functionUses: 8
    functionsReached:
    - json11::Json::dump
    linkageType: ''
    returnType: std::string
    signature: std::string dump() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: json11::Json::parse
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.hpp:171,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.hpp:171,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - in
    - ' err'
    argTypes:
    - char*
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 176
      start: 167
    functionDepth: 0
    functionLinenumber: 167
    functionLinenumberEnd: 176
    functionName: json11::Json::parse
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.hpp
    functionUses: 7
    functionsReached:
    - std::string
    - json11::Json::parse
    linkageType: ''
    returnType: Json
    signature: "Json parse(const char * in,\n                      std::string & err,\n
      \                     JsonParse strategy = JsonParse::STANDARD)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json11::Json::parse_multi
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.hpp:189,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' in'
    - ' err'
    argTypes:
    - std::string
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 190
      start: 184
    functionDepth: 0
    functionLinenumber: 184
    functionLinenumberEnd: 190
    functionName: json11::Json::parse_multi
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.hpp
    functionUses: 1
    functionsReached:
    - json11::Json::parse_multi
    linkageType: ''
    returnType: std::vector<Json>
    signature: "std::vector<Json> parse_multi(\n        const std::string & in,\n
      \       std::string & err,\n        JsonParse strategy = JsonParse::STANDARD)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rhs
    argTypes:
    - Json
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 194
      start: 194
    functionDepth: 0
    functionLinenumber: 194
    functionLinenumberEnd: 194
    functionName: operator!= (const Json &rhs) const
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool operator!= (const Json &rhs) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rhs
    argTypes:
    - Json
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 195
      start: 195
    functionDepth: 0
    functionLinenumber: 195
    functionLinenumberEnd: 195
    functionName: operator<= (const Json &rhs) const
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool operator<= (const Json &rhs) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rhs
    argTypes:
    - Json
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 196
      start: 196
    functionDepth: 0
    functionLinenumber: 196
    functionLinenumberEnd: 196
    functionName: operator>  (const Json &rhs) const
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool operator>  (const Json &rhs) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rhs
    argTypes:
    - Json
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 197
      start: 197
    functionDepth: 0
    functionLinenumber: 197
    functionLinenumberEnd: 197
    functionName: operator>= (const Json &rhs) const
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool operator>= (const Json &rhs) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 229
      start: 229
    functionDepth: 0
    functionLinenumber: 229
    functionLinenumberEnd: 229
    functionName: ~JsonValue()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~JsonValue()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: to_json
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.hpp:106,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' t'
    argTypes:
    - T
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 106
    functionDepth: 0
    functionLinenumber: 106
    functionLinenumberEnd: 106
    functionName: json11::Json::Json
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.hpp
    functionUses: 0
    functionsReached:
    - to_json
    linkageType: ''
    returnType: void
    signature: void Json(const T & t)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: object
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.hpp:113,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.hpp:113,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.hpp:113,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' m'
    argTypes:
    - M
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 113
      start: 113
    functionDepth: 0
    functionLinenumber: 113
    functionLinenumberEnd: 113
    functionName: json11::Json::Json
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.hpp
    functionUses: 0
    functionsReached:
    - object
    - end
    - begin
    linkageType: ''
    returnType: void
    signature: void Json(const M & m)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.hpp:119,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.hpp:119,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.hpp:119,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' v'
    argTypes:
    - V
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 119
      start: 119
    functionDepth: 0
    functionLinenumber: 119
    functionLinenumberEnd: 119
    functionName: json11::Json::Json
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.hpp
    functionUses: 0
    functionsReached:
    - end
    - array
    - begin
    linkageType: ''
    returnType: void
    signature: void Json(const V & v)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 123
    functionDepth: 0
    functionLinenumber: 123
    functionLinenumberEnd: 123
    functionName: json11::Json::Json
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Json(void *)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json11::Json::type
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.hpp:128,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 128
    functionDepth: 0
    functionLinenumber: 128
    functionLinenumberEnd: 128
    functionName: json11::Json::is_null
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.hpp
    functionUses: 2
    functionsReached:
    - json11::Json::type
    linkageType: ''
    returnType: bool
    signature: bool is_null()   const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json11::Json::type
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.hpp:129,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 129
      start: 129
    functionDepth: 0
    functionLinenumber: 129
    functionLinenumberEnd: 129
    functionName: json11::Json::is_number
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.hpp
    functionUses: 0
    functionsReached:
    - json11::Json::type
    linkageType: ''
    returnType: bool
    signature: bool is_number() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json11::Json::type
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.hpp:130,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 130
      start: 130
    functionDepth: 0
    functionLinenumber: 130
    functionLinenumberEnd: 130
    functionName: json11::Json::is_bool
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.hpp
    functionUses: 0
    functionsReached:
    - json11::Json::type
    linkageType: ''
    returnType: bool
    signature: bool is_bool()   const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json11::Json::type
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.hpp:131,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 131
      start: 131
    functionDepth: 0
    functionLinenumber: 131
    functionLinenumberEnd: 131
    functionName: json11::Json::is_string
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.hpp
    functionUses: 0
    functionsReached:
    - json11::Json::type
    linkageType: ''
    returnType: bool
    signature: bool is_string() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json11::Json::type
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.hpp:132,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 132
      start: 132
    functionDepth: 0
    functionLinenumber: 132
    functionLinenumberEnd: 132
    functionName: json11::Json::is_array
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.hpp
    functionUses: 0
    functionsReached:
    - json11::Json::type
    linkageType: ''
    returnType: bool
    signature: bool is_array()  const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json11::Json::type
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.hpp:133,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 133
      start: 133
    functionDepth: 0
    functionLinenumber: 133
    functionLinenumberEnd: 133
    functionName: json11::Json::is_object
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.hpp
    functionUses: 2
    functionsReached:
    - json11::Json::type
    linkageType: ''
    returnType: bool
    signature: bool is_object() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json11::Json::dump
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.hpp:159,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 161
      start: 157
    functionDepth: 0
    functionLinenumber: 157
    functionLinenumberEnd: 161
    functionName: json11::Json::dump
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.hpp
    functionUses: 9
    functionsReached:
    - json11::Json::dump
    linkageType: ''
    returnType: std::string
    signature: std::string dump() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: json11::Json::parse
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.hpp:171,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.hpp:171,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - in
    - ' err'
    argTypes:
    - char*
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 176
      start: 167
    functionDepth: 0
    functionLinenumber: 167
    functionLinenumberEnd: 176
    functionName: json11::Json::parse
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.hpp
    functionUses: 8
    functionsReached:
    - std::string
    - json11::Json::parse
    linkageType: ''
    returnType: Json
    signature: "Json parse(const char * in,\n                      std::string & err,\n
      \                     JsonParse strategy = JsonParse::STANDARD)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json11::Json::parse_multi
      Src: /src/pdns/pdns/dnsdistdist/ext/json11/json11.hpp:189,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' in'
    - ' err'
    argTypes:
    - std::string
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 190
      start: 184
    functionDepth: 0
    functionLinenumber: 184
    functionLinenumberEnd: 190
    functionName: json11::Json::parse_multi
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.hpp
    functionUses: 2
    functionsReached:
    - json11::Json::parse_multi
    linkageType: ''
    returnType: std::vector<Json>
    signature: "std::vector<Json> parse_multi(\n        const std::string & in,\n
      \       std::string & err,\n        JsonParse strategy = JsonParse::STANDARD)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rhs
    argTypes:
    - Json
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 194
      start: 194
    functionDepth: 0
    functionLinenumber: 194
    functionLinenumberEnd: 194
    functionName: operator!= (const Json &rhs) const
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool operator!= (const Json &rhs) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rhs
    argTypes:
    - Json
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 195
      start: 195
    functionDepth: 0
    functionLinenumber: 195
    functionLinenumberEnd: 195
    functionName: operator<= (const Json &rhs) const
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool operator<= (const Json &rhs) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rhs
    argTypes:
    - Json
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 196
      start: 196
    functionDepth: 0
    functionLinenumber: 196
    functionLinenumberEnd: 196
    functionName: operator>  (const Json &rhs) const
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool operator>  (const Json &rhs) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rhs
    argTypes:
    - Json
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 197
      start: 197
    functionDepth: 0
    functionLinenumber: 197
    functionLinenumberEnd: 197
    functionName: operator>= (const Json &rhs) const
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool operator>= (const Json &rhs) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 229
      start: 229
    functionDepth: 0
    functionLinenumber: 229
    functionLinenumberEnd: 229
    functionName: ~JsonValue()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/json11/json11.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~JsonValue()
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: luaL_newstate
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:119,1
    - Dst: std::bad_alloc
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:124,1
    - Dst: lua_atpanic
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:127,1
    - Dst: lua_tostring
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:128,1
    - Dst: lua_pop
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:129,1
    - Dst: assert
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:130,1
    - Dst: exit
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:131,1
    - Dst: luaL_openlibs
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:136,1
    - Dst: writeGlobalEq
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:138,1
    - Dst: lua_pushliteral
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:139,1
    - Dst: lua_getglobal
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:140,1
    - Dst: lua_getfield
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:141,1
    - Dst: lua_remove
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:142,1
    - Dst: lua_settable
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:143,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 22
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (false && "lua_atpanic triggered")
      pos:
        line_end: 129
        line_start: 129
        source_file: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    constantsTouched: []
    func_position:
      end: 144
      start: 109
    functionDepth: 0
    functionLinenumber: 109
    functionLinenumberEnd: 144
    functionName: LuaContext
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 8
    functionsReached:
    - lua_settable
    - std::bad_alloc
    - lua_remove
    - luaL_newstate
    - writeGlobalEq
    - luaL_openlibs
    - lua_atpanic
    - assert
    - lua_tostring
    - lua_getglobal
    - lua_getfield
    - lua_pushliteral
    - exit
    - lua_pop
    linkageType: ''
    returnType: void
    signature: void LuaContext(bool openDefaultLibs = true)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lua_pushstring
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:149,1
    - Dst: lua_gettable
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:150,1
    - Dst: lua_isnil
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:152,1
    - Dst: lua_pop
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:153,1
    - Dst: lua_pushboolean
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:154,1
    - Dst: lua_insert
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:157,1
    - Dst: lua_gettop
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:157,1
    - Dst: callRaw
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:158,1
    - Dst: push
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:160,1
    - Dst: std::current_exception
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:160,1
    - Dst: luaError
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:161,1
    - Dst: lua_pushcfunction
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:164,1
    - Dst: lua_setglobal
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:165,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 166
      start: 146
    functionDepth: 0
    functionLinenumber: 146
    functionLinenumberEnd: 166
    functionName: writeGlobalEq
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 1
    functionsReached:
    - lua_insert
    - luaError
    - push
    - std::current_exception
    - lua_setglobal
    - lua_pushcfunction
    - lua_gettable
    - lua_isnil
    - lua_gettop
    - lua_pushboolean
    - lua_pushstring
    - callRaw
    - lua_pop
    linkageType: ''
    returnType: void
    signature: void writeGlobalEq()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: luaL_newstate
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:174,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - ' s'
    argTypes:
    - LuaContext
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 175
      start: 171
    functionDepth: 0
    functionLinenumber: 171
    functionLinenumberEnd: 175
    functionName: LuaContext
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 8
    functionsReached:
    - luaL_newstate
    linkageType: ''
    returnType: void
    signature: void LuaContext(LuaContext&& s)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::swap
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:182,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - ' s'
    argTypes:
    - LuaContext
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 184
      start: 180
    functionDepth: 0
    functionLinenumber: 180
    functionLinenumberEnd: 184
    functionName: '& operator=(LuaContext&& s) noexcept'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 0
    functionsReached:
    - std::swap
    linkageType: ''
    returnType: LuaContext
    signature: LuaContext & operator=(LuaContext&& s) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 189
      start: 189
    functionDepth: 0
    functionLinenumber: 189
    functionLinenumberEnd: 189
    functionName: LuaContext
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 8
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void LuaContext(const LuaContext&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 194
      start: 194
    functionDepth: 0
    functionLinenumber: 194
    functionLinenumberEnd: 194
    functionName: '& operator=(const LuaContext&)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: LuaContext
    signature: LuaContext & operator=(const LuaContext&)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:201,1
    - Dst: lua_close
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:202,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (mState)
      pos:
        line_end: 200
        line_start: 200
        source_file: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    constantsTouched: []
    func_position:
      end: 203
      start: 199
    functionDepth: 0
    functionLinenumber: 199
    functionLinenumberEnd: 203
    functionName: ~LuaContext() noexcept
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 0
    functionsReached:
    - lua_close
    - assert
    linkageType: ''
    returnType: void
    signature: void ~LuaContext() noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' msg'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 214
      start: 211
    functionDepth: 0
    functionLinenumber: 211
    functionLinenumberEnd: 214
    functionName: ExecutionErrorException::ExecutionErrorException
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ExecutionErrorException(const std::string& msg)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' msg'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 226
      start: 223
    functionDepth: 0
    functionLinenumber: 223
    functionLinenumberEnd: 226
    functionName: SyntaxErrorException::SyntaxErrorException
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void SyntaxErrorException(const std::string& msg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: name
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:236,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - ' luaType_'
    - ' destination_'
    argTypes:
    - std::string
    - std::type_info
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 240
      start: 235
    functionDepth: 0
    functionLinenumber: 235
    functionLinenumberEnd: 240
    functionName: WrongTypeException::WrongTypeException
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 0
    functionsReached:
    - name
    linkageType: ''
    returnType: void
    signature: void WrongTypeException(const std::string& luaType_, const std::type_info&
      destination_)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 258
      start: 258
    functionDepth: 0
    functionLinenumber: 258
    functionLinenumberEnd: 258
    functionName: LuaObject
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void LuaObject()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<LuaContext::ValueInRegistry>
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:260,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - state
    argTypes:
    - lua_State*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 261
      start: 259
    functionDepth: 0
    functionLinenumber: 259
    functionLinenumberEnd: 261
    functionName: LuaObject
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 0
    functionsReached:
    - std::make_shared<LuaContext::ValueInRegistry>
    linkageType: ''
    returnType: void
    signature: void LuaObject(lua_State* state, int index=-1)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 269
      start: 269
    functionDepth: 0
    functionLinenumber: 269
    functionLinenumberEnd: 269
    functionName: ThreadID
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ThreadID()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:270,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 1
    argNames:
    - ' o'
    argTypes:
    - ThreadID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 270
      start: 270
    functionDepth: 0
    functionLinenumber: 270
    functionLinenumberEnd: 270
    functionName: ThreadID
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void ThreadID(ThreadID&& o)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::swap
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:271,1
    - Dst: std::swap
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:271,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ' o'
    argTypes:
    - ThreadID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 271
      start: 271
    functionDepth: 0
    functionLinenumber: 271
    functionLinenumberEnd: 271
    functionName: '& operator=(ThreadID&& o)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 0
    functionsReached:
    - std::swap
    linkageType: ''
    returnType: ThreadID
    signature: ThreadID & operator=(ThreadID&& o)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: load
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:294,1
    - Dst: call
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:295,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:295,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' code'
    argTypes:
    - std::istream
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 296
      start: 292
    functionDepth: 0
    functionLinenumber: 292
    functionLinenumberEnd: 296
    functionName: executeCode
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 29
    functionsReached:
    - call
    - load
    - std::move
    linkageType: ''
    returnType: void
    signature: void executeCode(std::istream& code)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: load
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:307,1
    - Dst: call
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:308,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:308,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' code'
    argTypes:
    - std::istream
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 309
      start: 304
    functionDepth: 0
    functionLinenumber: 304
    functionLinenumberEnd: 309
    functionName: executeCode
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 29
    functionsReached:
    - call
    - load
    - std::move
    linkageType: ''
    returnType: auto
    signature: "auto executeCode(std::istream& code)\n        -> TType"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: executeCode
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:317,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:317,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' code'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 318
      start: 315
    functionDepth: 0
    functionLinenumber: 315
    functionLinenumberEnd: 318
    functionName: executeCode
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 30
    functionsReached:
    - c_str
    - executeCode
    linkageType: ''
    returnType: void
    signature: void executeCode(const std::string& code)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: executeCode
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:329,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:329,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' code'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 330
      start: 326
    functionDepth: 0
    functionLinenumber: 326
    functionLinenumberEnd: 330
    functionName: executeCode
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 31
    functionsReached:
    - c_str
    - executeCode
    linkageType: ''
    returnType: auto
    signature: "auto executeCode(const std::string& code)\n        -> TType"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: load
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:338,1
    - Dst: call
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:339,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:339,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - code
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 340
      start: 336
    functionDepth: 0
    functionLinenumber: 336
    functionLinenumberEnd: 340
    functionName: executeCode
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 31
    functionsReached:
    - call
    - load
    - std::move
    linkageType: ''
    returnType: void
    signature: void executeCode(const char* code)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: load
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:351,1
    - Dst: call
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:352,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:352,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - code
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 353
      start: 348
    functionDepth: 0
    functionLinenumber: 348
    functionLinenumberEnd: 353
    functionName: executeCode
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 31
    functionsReached:
    - call
    - load
    - std::move
    linkageType: ''
    returnType: auto
    signature: "auto executeCode(const char* code)\n        -> TType"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: load
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:361,1
    - Dst: call
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:362,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:362,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' thread'
    - ' code'
    argTypes:
    - ThreadID
    - std::istream
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 363
      start: 359
    functionDepth: 0
    functionLinenumber: 359
    functionLinenumberEnd: 363
    functionName: executeCode
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 31
    functionsReached:
    - call
    - load
    - std::move
    linkageType: ''
    returnType: void
    signature: void executeCode(const ThreadID& thread, std::istream& code)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: load
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:374,1
    - Dst: call
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:375,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:375,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' thread'
    - ' code'
    argTypes:
    - ThreadID
    - std::istream
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 376
      start: 371
    functionDepth: 0
    functionLinenumber: 371
    functionLinenumberEnd: 376
    functionName: executeCode
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 31
    functionsReached:
    - call
    - load
    - std::move
    linkageType: ''
    returnType: auto
    signature: "auto executeCode(const ThreadID& thread, std::istream& code)\n        ->
      TType"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: executeCode
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:384,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:384,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' thread'
    - ' code'
    argTypes:
    - ThreadID
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 385
      start: 382
    functionDepth: 0
    functionLinenumber: 382
    functionLinenumberEnd: 385
    functionName: executeCode
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 32
    functionsReached:
    - c_str
    - executeCode
    linkageType: ''
    returnType: void
    signature: void executeCode(const ThreadID& thread, const std::string& code)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: executeCode
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:396,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:396,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' thread'
    - ' code'
    argTypes:
    - ThreadID
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 397
      start: 393
    functionDepth: 0
    functionLinenumber: 393
    functionLinenumberEnd: 397
    functionName: executeCode
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 33
    functionsReached:
    - c_str
    - executeCode
    linkageType: ''
    returnType: auto
    signature: "auto executeCode(const ThreadID& thread, const std::string& code)\n
      \       -> TType"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: load
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:405,1
    - Dst: call
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:406,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:406,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' thread'
    - code
    argTypes:
    - ThreadID
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 407
      start: 403
    functionDepth: 0
    functionLinenumber: 403
    functionLinenumberEnd: 407
    functionName: executeCode
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 33
    functionsReached:
    - call
    - load
    - std::move
    linkageType: ''
    returnType: void
    signature: void executeCode(const ThreadID& thread, const char* code)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: load
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:418,1
    - Dst: call
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:419,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:419,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' thread'
    - code
    argTypes:
    - ThreadID
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 420
      start: 415
    functionDepth: 0
    functionLinenumber: 415
    functionLinenumberEnd: 420
    functionName: executeCode
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 33
    functionsReached:
    - call
    - load
    - std::move
    linkageType: ''
    returnType: auto
    signature: "auto executeCode(const ThreadID& thread, const char* code)\n        ->
      TType"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: registerFunctionImpl
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:430,1
    - Dst: std::mem_fn
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:430,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' name'
    - pointer
    argTypes:
    - std::string
    - TPointerToMemberFunction
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 431
      start: 427
    functionDepth: 0
    functionLinenumber: 427
    functionLinenumberEnd: 431
    functionName: registerFunction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 10
    functionsReached:
    - std::mem_fn
    - registerFunctionImpl
    linkageType: ''
    returnType: auto
    signature: "auto registerFunction(const std::string& name, TPointerToMemberFunction
      pointer)\n        -> typename std::enable_if<std::is_member_function_pointer<TPointerToMemberFunction>::value>::type"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: registerFunctionImpl
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:443,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:443,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' functionName'
    - fn
    argTypes:
    - std::string
    - TType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 444
      start: 440
    functionDepth: 0
    functionLinenumber: 440
    functionLinenumberEnd: 444
    functionName: registerFunction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 10
    functionsReached:
    - std::move
    - registerFunctionImpl
    linkageType: ''
    returnType: void
    signature: void registerFunction(const std::string& functionName, TType fn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: registerFunctionImpl
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:457,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:457,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' functionName'
    - fn
    argTypes:
    - std::string
    - TType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 458
      start: 454
    functionDepth: 0
    functionLinenumber: 454
    functionLinenumberEnd: 458
    functionName: registerFunction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 10
    functionsReached:
    - std::move
    - registerFunctionImpl
    linkageType: ''
    returnType: void
    signature: void registerFunction(const std::string& functionName, TType fn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: registerFunctionImpl
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:468,1
    - Dst: std::mem_fn
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:468,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - pointer
    argTypes:
    - TPointerToMemberFunction
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 469
      start: 465
    functionDepth: 0
    functionLinenumber: 465
    functionLinenumberEnd: 469
    functionName: registerEqFunction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 2
    functionsReached:
    - std::mem_fn
    - registerFunctionImpl
    linkageType: ''
    returnType: auto
    signature: "auto registerEqFunction(TPointerToMemberFunction pointer)\n        ->
      typename std::enable_if<std::is_member_function_pointer<TPointerToMemberFunction>::value>::type"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: registerFunctionImpl
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:475,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:475,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - fn
    argTypes:
    - TType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 476
      start: 472
    functionDepth: 0
    functionLinenumber: 472
    functionLinenumberEnd: 476
    functionName: registerEqFunction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 2
    functionsReached:
    - std::move
    - registerFunctionImpl
    linkageType: ''
    returnType: void
    signature: void registerEqFunction(TType fn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: registerFunctionImpl
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:482,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:482,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - fn
    argTypes:
    - TType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 483
      start: 479
    functionDepth: 0
    functionLinenumber: 479
    functionLinenumberEnd: 483
    functionName: registerEqFunction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 2
    functionsReached:
    - std::move
    - registerFunctionImpl
    linkageType: ''
    returnType: void
    signature: void registerEqFunction(TType fn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: registerFunctionImpl
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:493,1
    - Dst: std::mem_fn
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:493,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - pointer
    argTypes:
    - TPointerToMemberFunction
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 494
      start: 490
    functionDepth: 0
    functionLinenumber: 490
    functionLinenumberEnd: 494
    functionName: registerToStringFunction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 2
    functionsReached:
    - std::mem_fn
    - registerFunctionImpl
    linkageType: ''
    returnType: auto
    signature: "auto registerToStringFunction(TPointerToMemberFunction pointer)\n
      \       -> typename std::enable_if<std::is_member_function_pointer<TPointerToMemberFunction>::value>::type"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: registerFunctionImpl
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:500,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:500,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - fn
    argTypes:
    - TType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 501
      start: 497
    functionDepth: 0
    functionLinenumber: 497
    functionLinenumberEnd: 501
    functionName: registerToStringFunction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 2
    functionsReached:
    - std::move
    - registerFunctionImpl
    linkageType: ''
    returnType: void
    signature: void registerToStringFunction(TType fn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: registerFunctionImpl
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:507,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:507,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - fn
    argTypes:
    - TType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 508
      start: 504
    functionDepth: 0
    functionLinenumber: 504
    functionLinenumberEnd: 508
    functionName: registerToStringFunction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 2
    functionsReached:
    - std::move
    - registerFunctionImpl
    linkageType: ''
    returnType: void
    signature: void registerToStringFunction(TType fn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lua_pushlightuserdata
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:517,1
    - Dst: const_cast<std::type_info*>
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:517,1
    - Dst: typeid
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:517,1
    - Dst: lua_pushnil
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:518,1
    - Dst: lua_settable
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:519,1
    - Dst: checkTypeRegistration
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:520,1
    - Dst: typeid
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:520,1
    - Dst: lua_pushnil
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:523,1
    - Dst: lua_settable
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:524,1
    - Dst: checkTypeRegistration
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:525,1
    - Dst: typeid
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:525,1
    - Dst: lua_pushlightuserdata
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:527,1
    - Dst: const_cast<std::type_info*>
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:527,1
    - Dst: typeid
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:527,1
    - Dst: lua_pushnil
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:528,1
    - Dst: lua_settable
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:529,1
    - Dst: checkTypeRegistration
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:530,1
    - Dst: typeid
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:530,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 531
      start: 515
    functionDepth: 0
    functionLinenumber: 515
    functionLinenumberEnd: 531
    functionName: unregisterFunction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 0
    functionsReached:
    - const_cast<std::type_info*>
    - typeid
    - checkTypeRegistration
    - lua_pushlightuserdata
    - lua_pushnil
    - lua_settable
    linkageType: ''
    returnType: void
    signature: void unregisterFunction(const std::string& /*functionName*/)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TVarType
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:543,1
    - Dst: registerMember
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:543,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - ' name'
    - TObject::*member
    argTypes:
    - std::string
    - TVarType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 544
      start: 538
    functionDepth: 0
    functionLinenumber: 538
    functionLinenumberEnd: 544
    functionName: registerMember
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 8
    functionsReached:
    - registerMember
    - TVarType
    linkageType: ''
    returnType: void
    signature: void registerMember(const std::string& name, TVarType TObject::*member)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: registerMemberImpl
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:558,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:558,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:558,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' name'
    - readFunction
    - writeFunction_
    argTypes:
    - std::string
    - TReadFunction
    - TWriteFunction
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 559
      start: 556
    functionDepth: 0
    functionLinenumber: 556
    functionLinenumberEnd: 559
    functionName: registerMember
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 8
    functionsReached:
    - std::move
    - registerMemberImpl
    linkageType: ''
    returnType: void
    signature: void registerMember(const std::string& name, TReadFunction readFunction,
      TWriteFunction writeFunction_)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: registerMemberImpl
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:573,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:573,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:573,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' name'
    - readFunction
    - writeFunction_
    argTypes:
    - std::string
    - TReadFunction
    - TWriteFunction
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 574
      start: 570
    functionDepth: 0
    functionLinenumber: 570
    functionLinenumberEnd: 574
    functionName: registerMember
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 8
    functionsReached:
    - std::move
    - registerMemberImpl
    linkageType: ''
    returnType: void
    signature: void registerMember(const std::string& name, TReadFunction readFunction,
      TWriteFunction writeFunction_)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: registerMemberImpl
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:587,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:587,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' name'
    - readFunction
    argTypes:
    - std::string
    - TReadFunction
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 588
      start: 585
    functionDepth: 0
    functionLinenumber: 585
    functionLinenumberEnd: 588
    functionName: registerMember
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 8
    functionsReached:
    - std::move
    - registerMemberImpl
    linkageType: ''
    returnType: void
    signature: void registerMember(const std::string& name, TReadFunction readFunction)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: registerMemberImpl
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:601,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:601,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' name'
    - readFunction
    argTypes:
    - std::string
    - TReadFunction
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 602
      start: 598
    functionDepth: 0
    functionLinenumber: 598
    functionLinenumberEnd: 602
    functionName: registerMember
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 8
    functionsReached:
    - std::move
    - registerMemberImpl
    linkageType: ''
    returnType: void
    signature: void registerMember(const std::string& name, TReadFunction readFunction)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: registerMemberImpl
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:615,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:615,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:615,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - readFunction
    - writeFunction_
    argTypes:
    - TReadFunction
    - TWriteFunction
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 616
      start: 613
    functionDepth: 0
    functionLinenumber: 613
    functionLinenumberEnd: 616
    functionName: registerMember
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 8
    functionsReached:
    - std::move
    - registerMemberImpl
    linkageType: ''
    returnType: void
    signature: void registerMember(TReadFunction readFunction, TWriteFunction writeFunction_)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: registerMemberImpl
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:629,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:629,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:629,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - readFunction
    - writeFunction_
    argTypes:
    - TReadFunction
    - TWriteFunction
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 630
      start: 626
    functionDepth: 0
    functionLinenumber: 626
    functionLinenumberEnd: 630
    functionName: registerMember
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 8
    functionsReached:
    - std::move
    - registerMemberImpl
    linkageType: ''
    returnType: void
    signature: void registerMember(TReadFunction readFunction, TWriteFunction writeFunction_)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: registerMemberImpl
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:642,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:642,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - readFunction
    argTypes:
    - TReadFunction
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 643
      start: 640
    functionDepth: 0
    functionLinenumber: 640
    functionLinenumberEnd: 643
    functionName: registerMember
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 8
    functionsReached:
    - std::move
    - registerMemberImpl
    linkageType: ''
    returnType: void
    signature: void registerMember(TReadFunction readFunction)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: registerMemberImpl
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:655,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:655,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - readFunction
    argTypes:
    - TReadFunction
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 656
      start: 652
    functionDepth: 0
    functionLinenumber: 652
    functionLinenumberEnd: 656
    functionName: registerMember
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 8
    functionsReached:
    - std::move
    - registerMemberImpl
    linkageType: ''
    returnType: void
    signature: void registerMember(TReadFunction readFunction)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lua_newthread
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:669,1
    - Dst: std::unique_ptr<ValueInRegistry>
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:670,1
    - Dst: ValueInRegistry::ValueInRegistry
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:670,1
    - Dst: lua_pop
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:671,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 674
      start: 664
    functionDepth: 0
    functionLinenumber: 664
    functionLinenumberEnd: 674
    functionName: createThread
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 0
    functionsReached:
    - std::unique_ptr<ValueInRegistry>
    - lua_newthread
    - ValueInRegistry::ValueInRegistry
    - lua_pop
    linkageType: ''
    returnType: auto
    signature: "auto createThread()\n        -> ThreadID"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: threadInRegistry::reset
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:682,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' id'
    argTypes:
    - ThreadID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 683
      start: 680
    functionDepth: 0
    functionLinenumber: 680
    functionLinenumberEnd: 683
    functionName: destroyThread
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 0
    functionsReached:
    - threadInRegistry::reset
    linkageType: ''
    returnType: void
    signature: void destroyThread(ThreadID& id)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lua_getglobal
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:704,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:704,1
    - Dst: lookIntoStackTop
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:705,1
    - Dst: std::forward<TTypes>
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:705,1
    - Dst: readTopAndPop
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:706,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ' name'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 707
      start: 702
    functionDepth: 0
    functionLinenumber: 702
    functionLinenumberEnd: 707
    functionName: readVariable
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 6
    functionsReached:
    - lookIntoStackTop
    - lua_getglobal
    - c_str
    - readTopAndPop
    - std::forward<TTypes>
    linkageType: ''
    returnType: TType
    signature: TType readVariable(const std::string& name, TTypes&&... elements) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lua_getglobal
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:715,1
    - Dst: lookIntoStackTop
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:716,1
    - Dst: std::forward<TTypes>
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:716,1
    - Dst: readTopAndPop
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:717,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 718
      start: 713
    functionDepth: 0
    functionLinenumber: 713
    functionLinenumberEnd: 718
    functionName: readVariable
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 6
    functionsReached:
    - lua_getglobal
    - readTopAndPop
    - lookIntoStackTop
    - std::forward<TTypes>
    linkageType: ''
    returnType: TType
    signature: TType readVariable(const char* name, TTypes&&... elements) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lua_getglobal
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:726,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:726,1
    - Dst: lookIntoStackTop
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:727,1
    - Dst: std::forward<TTypes>
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:727,1
    - Dst: readTopAndPop
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:728,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - ' thread'
    - ' name'
    argTypes:
    - ThreadID
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 729
      start: 724
    functionDepth: 0
    functionLinenumber: 724
    functionLinenumberEnd: 729
    functionName: readVariable
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 6
    functionsReached:
    - lookIntoStackTop
    - lua_getglobal
    - c_str
    - readTopAndPop
    - std::forward<TTypes>
    linkageType: ''
    returnType: TType
    signature: TType readVariable(const ThreadID& thread, const std::string& name,
      TTypes&&... elements) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lua_getglobal
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:737,1
    - Dst: lookIntoStackTop
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:738,1
    - Dst: std::forward<TTypes>
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:738,1
    - Dst: readTopAndPop
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:739,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - ' thread'
    - name
    argTypes:
    - ThreadID
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 740
      start: 735
    functionDepth: 0
    functionLinenumber: 735
    functionLinenumberEnd: 740
    functionName: readVariable
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 6
    functionsReached:
    - lua_getglobal
    - readTopAndPop
    - lookIntoStackTop
    - std::forward<TTypes>
    linkageType: ''
    returnType: TType
    signature: TType readVariable(const ThreadID& thread, const char* name, TTypes&&...
      elements) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: setTable
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:765,1
    - Dst: std::forward<TData>
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:765,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 766
      start: 759
    functionDepth: 0
    functionLinenumber: 759
    functionLinenumberEnd: 766
    functionName: writeVariable
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 7
    functionsReached:
    - std::forward<TData>
    - setTable
    linkageType: ''
    returnType: void
    signature: void writeVariable(TData&&... data) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: setTable
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:776,1
    - Dst: std::forward<TData>
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:776,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 777
      start: 773
    functionDepth: 0
    functionLinenumber: 773
    functionLinenumberEnd: 777
    functionName: writeFunction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 35
    functionsReached:
    - std::forward<TData>
    - setTable
    linkageType: ''
    returnType: void
    signature: void writeFunction(TData&&... data) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: writeFunction
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:791,1
    - Dst: std::forward<TData>
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:791,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 792
      start: 784
    functionDepth: 0
    functionLinenumber: 784
    functionLinenumberEnd: 792
    functionName: writeFunction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 36
    functionsReached:
    - std::forward<TData>
    - writeFunction
    linkageType: ''
    returnType: void
    signature: void writeFunction(TData&&... data) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - state_
    argTypes:
    - lua_State*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 807
      start: 807
    functionDepth: 0
    functionLinenumber: 807
    functionLinenumberEnd: 807
    functionName: PushedObject
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void PushedObject(lua_State* state_, int num_ = 1)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:808,1
    - Dst: lua_gettop
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:808,1
    - Dst: lua_pop
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:808,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (lua_gettop(state) >= num)
      pos:
        line_end: 807
        line_start: 807
        source_file: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    constantsTouched: []
    func_position:
      end: 808
      start: 808
    functionDepth: 0
    functionLinenumber: 808
    functionLinenumberEnd: 808
    functionName: ~PushedObject()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 0
    functionsReached:
    - lua_pop
    - assert
    - lua_gettop
    linkageType: ''
    returnType: void
    signature: void ~PushedObject()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 810
      start: 810
    functionDepth: 0
    functionLinenumber: 810
    functionLinenumberEnd: 810
    functionName: '& operator=(const PushedObject&)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: PushedObject
    signature: PushedObject & operator=(const PushedObject&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 811
      start: 811
    functionDepth: 0
    functionLinenumber: 811
    functionLinenumberEnd: 811
    functionName: PushedObject
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void PushedObject(const PushedObject&)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::swap
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:812,1
    - Dst: std::swap
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:812,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ' other'
    argTypes:
    - PushedObject
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 812
      start: 812
    functionDepth: 0
    functionLinenumber: 812
    functionLinenumberEnd: 812
    functionName: '& operator=(PushedObject&& other)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 0
    functionsReached:
    - std::swap
    linkageType: ''
    returnType: PushedObject
    signature: PushedObject & operator=(PushedObject&& other)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - ' other'
    argTypes:
    - PushedObject
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 813
      start: 813
    functionDepth: 0
    functionLinenumber: 813
    functionLinenumberEnd: 813
    functionName: PushedObject
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void PushedObject(PushedObject&& other)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - ' other'
    argTypes:
    - PushedObject
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 815
      start: 815
    functionDepth: 0
    functionLinenumber: 815
    functionLinenumberEnd: 815
    functionName: operator+(PushedObject&& other) &&
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: PushedObject
    signature: PushedObject operator+(PushedObject&& other) &&
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:816,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ' other'
    argTypes:
    - PushedObject
    assertStmts:
    - condition: (state == other.state)
      pos:
        line_end: 815
        line_start: 815
        source_file: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    constantsTouched: []
    func_position:
      end: 816
      start: 816
    functionDepth: 0
    functionLinenumber: 816
    functionLinenumberEnd: 816
    functionName: operator+=(PushedObject&& other)
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 0
    functionsReached:
    - assert
    linkageType: ''
    returnType: void
    signature: void operator+=(PushedObject&& other)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 818
      start: 818
    functionDepth: 0
    functionLinenumber: 818
    functionLinenumberEnd: 818
    functionName: getState
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 11
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: auto getState() const -> lua_State*
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 819
      start: 819
    functionDepth: 0
    functionLinenumber: 819
    functionLinenumberEnd: 819
    functionName: getNum
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: auto getNum() const -> int
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 821
      start: 821
    functionDepth: 0
    functionLinenumber: 821
    functionLinenumberEnd: 821
    functionName: release
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 54
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int release()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lua_pop
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:822,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 822
      start: 822
    functionDepth: 0
    functionLinenumber: 822
    functionLinenumberEnd: 822
    functionName: pop
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 9
    functionsReached:
    - lua_pop
    linkageType: ''
    returnType: void
    signature: void pop()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:823,1
    - Dst: lua_pop
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:823,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - n
    argTypes:
    - int
    assertStmts:
    - condition: (num >= n)
      pos:
        line_end: 822
        line_start: 822
        source_file: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    constantsTouched: []
    func_position:
      end: 823
      start: 823
    functionDepth: 0
    functionLinenumber: 823
    functionLinenumberEnd: 823
    functionName: pop
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 10
    functionsReached:
    - assert
    - lua_pop
    linkageType: ''
    returnType: void
    signature: void pop(int n)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: push
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:846,1
    - Dst: lua_gettable
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:847,1
    - Dst: lua_remove
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:848,1
    - Dst: auto::release
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:849,1
    - Dst: lookIntoStackTop
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:851,1
    - Dst: std::forward<OffsetTypeOthers>
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:851,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 5
    argCount: 2
    argNames:
    - state
    - ' offset1'
    argTypes:
    - lua_State*
    - OffsetType1
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 852
      start: 844
    functionDepth: 0
    functionLinenumber: 844
    functionLinenumberEnd: 852
    functionName: lookIntoStackTop
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 5
    functionsReached:
    - lookIntoStackTop
    - lua_remove
    - push
    - lua_gettable
    - std::forward<OffsetTypeOthers>
    - auto::release
    linkageType: ''
    returnType: void
    signature: void lookIntoStackTop(lua_State* state, OffsetType1&& offset1, OffsetTypeOthers&&...
      offsetOthers)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lua_getmetatable
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:856,1
    - Dst: lua_remove
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:857,1
    - Dst: lookIntoStackTop
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:859,1
    - Dst: std::forward<OffsetTypeOthers>
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:859,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - state
    argTypes:
    - lua_State*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 860
      start: 855
    functionDepth: 0
    functionLinenumber: 855
    functionLinenumberEnd: 860
    functionName: lookIntoStackTop
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 6
    functionsReached:
    - lookIntoStackTop
    - lua_remove
    - std::forward<OffsetTypeOthers>
    - lua_getmetatable
    linkageType: ''
    returnType: void
    signature: void lookIntoStackTop(lua_State* state, Metatable_t, OffsetTypeOthers&&...
      offsetOthers)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 863
      start: 862
    functionDepth: 0
    functionLinenumber: 862
    functionLinenumberEnd: 863
    functionName: lookIntoStackTop
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void lookIntoStackTop(lua_State*)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: push
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:875,1
    - Dst: push
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:876,1
    - Dst: std::forward<TData>
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:876,1
    - Dst: lua_settable
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:878,1
    - Dst: auto::release
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:879,1
    - Dst: auto::release
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:880,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 4
    argCount: 3
    argNames:
    - state
    - ' index'
    - ' data'
    argTypes:
    - lua_State*
    - TIndex
    - TData
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 881
      start: 870
    functionDepth: 0
    functionLinenumber: 870
    functionLinenumberEnd: 881
    functionName: setTable
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 2
    functionsReached:
    - std::forward<TData>
    - auto::release
    - push
    - lua_settable
    linkageType: ''
    returnType: void
    signature: void setTable(lua_State* state, const PushedObject&, TIndex&& index,
      TData&& data) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: push
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:888,1
    - Dst: std::forward<TData>
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:888,1
    - Dst: lua_setfield
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:889,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:889,1
    - Dst: auto::release
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:890,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 3
    argCount: 3
    argNames:
    - state
    - ' index'
    - ' data'
    argTypes:
    - lua_State*
    - std::string
    - TData
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 891
      start: 884
    functionDepth: 0
    functionLinenumber: 884
    functionLinenumberEnd: 891
    functionName: setTable
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 2
    functionsReached:
    - push
    - std::forward<TData>
    - lua_setfield
    - c_str
    - auto::release
    linkageType: ''
    returnType: void
    signature: void setTable(lua_State* state, const PushedObject&, const std::string&
      index, TData&& data) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: push
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:898,1
    - Dst: std::forward<TData>
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:898,1
    - Dst: lua_setfield
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:899,1
    - Dst: auto::release
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:900,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 3
    argCount: 3
    argNames:
    - state
    - index
    - ' data'
    argTypes:
    - lua_State*
    - char*
    - TData
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 901
      start: 894
    functionDepth: 0
    functionLinenumber: 894
    functionLinenumberEnd: 901
    functionName: setTable
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 2
    functionsReached:
    - std::forward<TData>
    - auto::release
    - lua_setfield
    - push
    linkageType: ''
    returnType: void
    signature: void setTable(lua_State* state, const PushedObject&, const char* index,
      TData&& data) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: push
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:908,1
    - Dst: std::forward<TData>
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:908,1
    - Dst: lua_setmetatable
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:909,1
    - Dst: auto::release
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:910,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 3
    argCount: 2
    argNames:
    - state
    - ' data'
    argTypes:
    - lua_State*
    - TData
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 911
      start: 904
    functionDepth: 0
    functionLinenumber: 904
    functionLinenumberEnd: 911
    functionName: setTable
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 2
    functionsReached:
    - std::forward<TData>
    - auto::release
    - lua_setmetatable
    - push
    linkageType: ''
    returnType: void
    signature: void setTable(lua_State* state, const PushedObject&, Metatable_t, TData&&
      data) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: push
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:919,1
    - Dst: std::forward<TIndex1>
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:919,1
    - Dst: lua_gettable
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:920,1
    - Dst: setTable
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:922,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:922,1
    - Dst: std::forward<TIndex2>
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:922,1
    - Dst: std::forward<TIndex3>
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:922,1
    - Dst: std::forward<TIndices>
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:922,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 3
    argCount: 4
    argNames:
    - state
    - ' index1'
    - ' index2'
    - ' index3'
    argTypes:
    - lua_State*
    - TIndex1
    - TIndex2
    - TIndex3
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 923
      start: 914
    functionDepth: 0
    functionLinenumber: 914
    functionLinenumberEnd: 923
    functionName: setTable
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 3
    functionsReached:
    - std::move
    - push
    - std::forward<TIndex2>
    - std::forward<TIndex3>
    - lua_gettable
    - std::forward<TIndex1>
    - std::forward<TIndices>
    - setTable
    linkageType: ''
    returnType: auto
    signature: "auto setTable(lua_State* state, PushedObject&, TIndex1&& index1, TIndex2&&
      index2, TIndex3&& index3, TIndices&&... indices) noexcept\n        -> typename
      std::enable_if<!std::is_same<typename std::decay<TIndex1>::type, Metatable_t>::value>::type"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: push
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:931,1
    - Dst: std::forward<TIndex1>
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:931,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:931,1
    - Dst: lua_gettable
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:932,1
    - Dst: setTable
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:934,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:934,1
    - Dst: std::forward<TIndex2>
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:934,1
    - Dst: std::forward<TIndex3>
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:934,1
    - Dst: std::forward<TIndices>
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:934,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 3
    argCount: 5
    argNames:
    - state
    - ' pushedTable'
    - ' index1'
    - ' index2'
    - ' index3'
    argTypes:
    - lua_State*
    - PushedObject
    - TIndex1
    - TIndex2
    - TIndex3
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 935
      start: 926
    functionDepth: 0
    functionLinenumber: 926
    functionLinenumberEnd: 935
    functionName: setTable
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 4
    functionsReached:
    - std::move
    - push
    - std::forward<TIndex2>
    - std::forward<TIndex3>
    - lua_gettable
    - std::forward<TIndex1>
    - std::forward<TIndices>
    - setTable
    linkageType: ''
    returnType: auto
    signature: "auto setTable(lua_State* state, PushedObject&& pushedTable, TIndex1&&
      index1, TIndex2&& index2, TIndex3&& index3, TIndices&&... indices) noexcept\n
      \       -> typename std::enable_if<!std::is_same<typename std::decay<TIndex1>::type,
      Metatable_t>::value>::type"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lua_getmetatable
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:940,1
    - Dst: lua_newtable
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:942,1
    - Dst: setTable
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:945,1
    - Dst: std::forward<TIndex2>
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:945,1
    - Dst: std::forward<TIndex3>
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:945,1
    - Dst: std::forward<TIndices>
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:945,1
    - Dst: lua_setmetatable
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:947,1
    - Dst: PushedObject::release
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:948,1
    - Dst: setTable
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:952,1
    - Dst: std::forward<TIndex2>
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:952,1
    - Dst: std::forward<TIndex3>
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:952,1
    - Dst: std::forward<TIndices>
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:952,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 4
    argNames:
    - state
    - ' pushedObject'
    - ' index2'
    - ' index3'
    argTypes:
    - lua_State*
    - PushedObject
    - TIndex2
    - TIndex3
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 954
      start: 938
    functionDepth: 0
    functionLinenumber: 938
    functionLinenumberEnd: 954
    functionName: setTable
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 5
    functionsReached:
    - lua_setmetatable
    - std::forward<TIndex2>
    - std::forward<TIndex3>
    - lua_getmetatable
    - PushedObject::release
    - lua_newtable
    - std::forward<TIndices>
    - setTable
    linkageType: ''
    returnType: void
    signature: void setTable(lua_State* state, PushedObject& pushedObject, Metatable_t,
      TIndex2&& index2, TIndex3&& index3, TIndices&&... indices) noexcept
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lua_getmetatable
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:959,1
    - Dst: lua_newtable
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:961,1
    - Dst: setTable
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:964,1
    - Dst: std::forward<TIndex2>
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:964,1
    - Dst: std::forward<TIndex3>
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:964,1
    - Dst: std::forward<TIndices>
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:964,1
    - Dst: lua_setmetatable
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:966,1
    - Dst: PushedObject::release
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:967,1
    - Dst: setTable
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:971,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:971,1
    - Dst: std::forward<TIndex2>
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:971,1
    - Dst: std::forward<TIndex3>
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:971,1
    - Dst: std::forward<TIndices>
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:971,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 9
    argCount: 4
    argNames:
    - state
    - ' pushedObject'
    - ' index2'
    - ' index3'
    argTypes:
    - lua_State*
    - PushedObject
    - TIndex2
    - TIndex3
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 973
      start: 957
    functionDepth: 0
    functionLinenumber: 957
    functionLinenumberEnd: 973
    functionName: setTable
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 6
    functionsReached:
    - lua_setmetatable
    - std::move
    - std::forward<TIndex2>
    - std::forward<TIndex3>
    - lua_getmetatable
    - PushedObject::release
    - lua_newtable
    - std::forward<TIndices>
    - setTable
    linkageType: ''
    returnType: void
    signature: void setTable(lua_State* state, PushedObject&& pushedObject, Metatable_t,
      TIndex2&& index2, TIndex3&& index3, TIndices&&... indices) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: push
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:981,1
    - Dst: push
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:982,1
    - Dst: std::forward<TData>
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:982,1
    - Dst: lua_settable
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:984,1
    - Dst: auto::release
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:985,1
    - Dst: auto::release
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:986,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 4
    argCount: 3
    argNames:
    - state
    - ' index'
    - ' data'
    argTypes:
    - lua_State*
    - TIndex
    - TData
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 987
      start: 976
    functionDepth: 0
    functionLinenumber: 976
    functionLinenumberEnd: 987
    functionName: setTable
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 6
    functionsReached:
    - std::forward<TData>
    - auto::release
    - push
    - lua_settable
    linkageType: ''
    returnType: void
    signature: void setTable(lua_State* state, RegistryTag, TIndex&& index, TData&&
      data) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: push
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:994,1
    - Dst: std::forward<TData>
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:994,1
    - Dst: lua_setfield
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:995,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:995,1
    - Dst: auto::release
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:996,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 3
    argCount: 3
    argNames:
    - state
    - ' index'
    - ' data'
    argTypes:
    - lua_State*
    - std::string
    - TData
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 997
      start: 990
    functionDepth: 0
    functionLinenumber: 990
    functionLinenumberEnd: 997
    functionName: setTable
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 6
    functionsReached:
    - push
    - std::forward<TData>
    - lua_setfield
    - c_str
    - auto::release
    linkageType: ''
    returnType: void
    signature: void setTable(lua_State* state, RegistryTag, const std::string& index,
      TData&& data) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: push
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1004,1
    - Dst: std::forward<TData>
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1004,1
    - Dst: lua_setfield
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1005,1
    - Dst: auto::release
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1006,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 3
    argCount: 3
    argNames:
    - state
    - index
    - ' data'
    argTypes:
    - lua_State*
    - char*
    - TData
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1007
      start: 1000
    functionDepth: 0
    functionLinenumber: 1000
    functionLinenumberEnd: 1007
    functionName: setTable
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 6
    functionsReached:
    - std::forward<TData>
    - auto::release
    - lua_setfield
    - push
    linkageType: ''
    returnType: void
    signature: void setTable(lua_State* state, RegistryTag, const char* index, TData&&
      data) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: push
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1014,1
    - Dst: std::forward<TIndex1>
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1014,1
    - Dst: lua_gettable
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1015,1
    - Dst: setTable
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1017,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1017,1
    - Dst: std::forward<TIndex2>
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1017,1
    - Dst: std::forward<TIndex3>
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1017,1
    - Dst: std::forward<TIndices>
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1017,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 3
    argCount: 4
    argNames:
    - state
    - ' index1'
    - ' index2'
    - ' index3'
    argTypes:
    - lua_State*
    - TIndex1
    - TIndex2
    - TIndex3
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1018
      start: 1010
    functionDepth: 0
    functionLinenumber: 1010
    functionLinenumberEnd: 1018
    functionName: setTable
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 7
    functionsReached:
    - std::move
    - push
    - std::forward<TIndex2>
    - std::forward<TIndex3>
    - lua_gettable
    - std::forward<TIndex1>
    - std::forward<TIndices>
    - setTable
    linkageType: ''
    returnType: void
    signature: void setTable(lua_State* state, RegistryTag, TIndex1&& index1, TIndex2&&
      index2, TIndex3&& index3, TIndices&&... indices) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lua_pushglobaltable
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1029,1
    - Dst: push
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1031,1
    - Dst: push
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1032,1
    - Dst: std::forward<TData>
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1032,1
    - Dst: lua_settable
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1033,1
    - Dst: push
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1037,1
    - Dst: push
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1038,1
    - Dst: std::forward<TData>
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1038,1
    - Dst: lua_settable
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1039,1
    - Dst: auto::release
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1043,1
    - Dst: auto::release
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1044,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 6
    argCount: 3
    argNames:
    - state
    - ' index'
    - ' data'
    argTypes:
    - lua_State*
    - TIndex
    - TData
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1045
      start: 1021
    functionDepth: 0
    functionLinenumber: 1021
    functionLinenumberEnd: 1045
    functionName: setTable
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 7
    functionsReached:
    - push
    - lua_pushglobaltable
    - std::forward<TData>
    - lua_settable
    - auto::release
    linkageType: ''
    returnType: void
    signature: void setTable(lua_State* state, Globals_t, TIndex&& index, TData&&
      data) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: push
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1052,1
    - Dst: std::forward<TData>
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1052,1
    - Dst: lua_setglobal
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1053,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1053,1
    - Dst: auto::release
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1054,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 3
    argCount: 3
    argNames:
    - state
    - ' index'
    - ' data'
    argTypes:
    - lua_State*
    - std::string
    - TData
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1055
      start: 1048
    functionDepth: 0
    functionLinenumber: 1048
    functionLinenumberEnd: 1055
    functionName: setTable
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 7
    functionsReached:
    - push
    - lua_setglobal
    - std::forward<TData>
    - c_str
    - auto::release
    linkageType: ''
    returnType: void
    signature: void setTable(lua_State* state, Globals_t, const std::string& index,
      TData&& data) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: push
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1062,1
    - Dst: std::forward<TData>
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1062,1
    - Dst: lua_setglobal
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1063,1
    - Dst: auto::release
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1064,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 3
    argCount: 3
    argNames:
    - state
    - index
    - ' data'
    argTypes:
    - lua_State*
    - char*
    - TData
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1065
      start: 1058
    functionDepth: 0
    functionLinenumber: 1058
    functionLinenumberEnd: 1065
    functionName: setTable
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 7
    functionsReached:
    - std::forward<TData>
    - auto::release
    - lua_setglobal
    - push
    linkageType: ''
    returnType: void
    signature: void setTable(lua_State* state, Globals_t, const char* index, TData&&
      data) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lua_pushglobaltable
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1074,1
    - Dst: push
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1075,1
    - Dst: std::forward<TIndex1>
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1075,1
    - Dst: lua_gettable
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1076,1
    - Dst: push
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1080,1
    - Dst: std::forward<TIndex1>
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1080,1
    - Dst: lua_gettable
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1081,1
    - Dst: setTable
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1085,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1085,1
    - Dst: std::forward<TIndex2>
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1085,1
    - Dst: std::forward<TIndex3>
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1085,1
    - Dst: std::forward<TIndices>
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1085,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 5
    argCount: 4
    argNames:
    - state
    - ' index1'
    - ' index2'
    - ' index3'
    argTypes:
    - lua_State*
    - TIndex1
    - TIndex2
    - TIndex3
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1086
      start: 1068
    functionDepth: 0
    functionLinenumber: 1068
    functionLinenumberEnd: 1086
    functionName: setTable
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 8
    functionsReached:
    - std::move
    - push
    - std::forward<TIndex2>
    - std::forward<TIndex3>
    - lua_gettable
    - std::forward<TIndex1>
    - lua_pushglobaltable
    - std::forward<TIndices>
    - setTable
    linkageType: ''
    returnType: void
    signature: void setTable(lua_State* state, Globals_t, TIndex1&& index1, TIndex2&&
      index2, TIndex3&& index3, TIndices&&... indices) noexcept
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: qthread
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1114,1
    - Dst: PushedObject::getNum
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1114,1
    - Dst: auto::is_initialized
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1115,1
    - Dst: lua_typename
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1116,1
    - Dst: lua_type
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1116,1
    - Dst: PushedObject::getNum
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1116,1
    - Dst: typeid
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1116,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1117,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 2
    argNames:
    - state
    - object
    argTypes:
    - lua_State*
    - PushedObject
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1118
      start: 1111
    functionDepth: 2
    functionLinenumber: 1111
    functionLinenumberEnd: 1118
    functionName: readTopAndPop
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 4
    functionsReached:
    - qthread
    - lua_typename
    - auto::get
    - typeid
    - auto::is_initialized
    - lua_type
    - PushedObject::getNum
    linkageType: ''
    returnType: auto
    signature: "auto readTopAndPop(lua_State* state, PushedObject object)\n        ->
      TReturnType"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lua_pushlightuserdata
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1123,1
    - Dst: const_cast<std::type_info*>
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1123,1
    - Dst: lua_gettable
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1124,1
    - Dst: lua_isnil
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1125,1
    - Dst: lua_pop
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1126,1
    - Dst: lua_pop
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1129,1
    - Dst: lua_pushlightuserdata
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1131,1
    - Dst: const_cast<std::type_info*>
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1131,1
    - Dst: lua_newtable
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1132,1
    - Dst: lua_pushinteger
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1134,1
    - Dst: lua_newtable
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1135,1
    - Dst: lua_settable
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1136,1
    - Dst: lua_pushinteger
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1138,1
    - Dst: lua_newtable
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1139,1
    - Dst: lua_settable
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1140,1
    - Dst: lua_pushinteger
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1142,1
    - Dst: lua_newtable
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1143,1
    - Dst: lua_settable
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1144,1
    - Dst: lua_pushinteger
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1146,1
    - Dst: lua_newtable
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1147,1
    - Dst: lua_settable
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1148,1
    - Dst: lua_settable
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1150,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 23
    argCount: 2
    argNames:
    - state
    - type
    argTypes:
    - lua_State*
    - std::type_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1151
      start: 1121
    functionDepth: 0
    functionLinenumber: 1121
    functionLinenumberEnd: 1151
    functionName: checkTypeRegistration
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 1
    functionsReached:
    - const_cast<std::type_info*>
    - lua_pushinteger
    - lua_pushlightuserdata
    - lua_gettable
    - lua_isnil
    - lua_settable
    - lua_newtable
    - lua_pop
    linkageType: ''
    returnType: void
    signature: void checkTypeRegistration(lua_State* state, const std::type_info*
      type)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lua_error
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1161,1
    - Dst: assert
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1162,1
    - Dst: std::terminate
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1163,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - state
    argTypes:
    - lua_State*
    assertStmts:
    - condition: (false)
      pos:
        line_end: 1161
        line_start: 1161
        source_file: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    constantsTouched: []
    func_position:
      end: 1164
      start: 1155
    functionDepth: 0
    functionLinenumber: 1155
    functionLinenumberEnd: 1164
    functionName: luaError
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 1
    functionsReached:
    - lua_error
    - assert
    - std::terminate
    linkageType: ''
    returnType: void
    signature: void luaError(lua_State* state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: checkTypeRegistration
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1176,1
    - Dst: typeid
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1176,1
    - Dst: setTable
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1177,1
    - Dst: typeid
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1177,1
    - Dst: checkTypeRegistration
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1179,1
    - Dst: typeid
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1179,1
    - Dst: setTable
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1180,1
    - Dst: typeid
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1180,1
    - Dst: assert
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1180,1
    - Dst: function
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1180,1
    - Dst: std::forward<TOtherParams>
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1180,1
    - Dst: checkTypeRegistration
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1182,1
    - Dst: typeid
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1182,1
    - Dst: setTable
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1183,1
    - Dst: typeid
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1183,1
    - Dst: assert
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1183,1
    - Dst: function
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1183,1
    - Dst: std::forward<TOtherParams>
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1183,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 2
    argNames:
    - ' functionName'
    - function
    argTypes:
    - std::string
    - TFunctionType
    assertStmts:
    - condition: (obj)
      pos:
        line_end: 1179
        line_start: 1179
        source_file: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    - condition: (obj)
      pos:
        line_end: 1182
        line_start: 1182
        source_file: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    constantsTouched: []
    func_position:
      end: 1184
      start: 1172
    functionDepth: 0
    functionLinenumber: 1172
    functionLinenumberEnd: 1184
    functionName: registerFunctionImpl
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 9
    functionsReached:
    - std::forward<TOtherParams>
    - typeid
    - assert
    - checkTypeRegistration
    - function
    - setTable
    linkageType: ''
    returnType: void
    signature: void registerFunctionImpl(const std::string& functionName, TFunctionType
      function, tag<TObject>, tag<TRetValue (TOtherParams...)>)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: registerFunctionImpl
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1189,1
    - Dst: checkTypeRegistration
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1191,1
    - Dst: typeid
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1191,1
    - Dst: setTable
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1192,1
    - Dst: typeid
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1192,1
    - Dst: assert
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1192,1
    - Dst: function
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1192,1
    - Dst: std::forward<TOtherParams>
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1192,1
    - Dst: checkTypeRegistration
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1194,1
    - Dst: typeid
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1194,1
    - Dst: setTable
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1195,1
    - Dst: typeid
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1195,1
    - Dst: assert
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1195,1
    - Dst: function
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1195,1
    - Dst: std::forward<TOtherParams>
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1195,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 3
    argNames:
    - ' functionName'
    - function
    - fTypeTag
    argTypes:
    - std::string
    - TFunctionType
    - tag<TRetValue (TOtherParams...)>
    assertStmts:
    - condition: (obj)
      pos:
        line_end: 1191
        line_start: 1191
        source_file: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    - condition: (obj)
      pos:
        line_end: 1194
        line_start: 1194
        source_file: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    constantsTouched: []
    func_position:
      end: 1196
      start: 1187
    functionDepth: 0
    functionLinenumber: 1187
    functionLinenumberEnd: 1196
    functionName: registerFunctionImpl
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 10
    functionsReached:
    - std::forward<TOtherParams>
    - registerFunctionImpl
    - typeid
    - assert
    - checkTypeRegistration
    - function
    - setTable
    linkageType: ''
    returnType: void
    signature: void registerFunctionImpl(const std::string& functionName, TFunctionType
      function, tag<const TObject>, tag<TRetValue (TOtherParams...)> fTypeTag)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TRetValue
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1199,1
    - Dst: registerFunctionImpl
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1201,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1201,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' functionName'
    - function
    argTypes:
    - std::string
    - TFunctionType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1202
      start: 1199
    functionDepth: 0
    functionLinenumber: 1199
    functionLinenumberEnd: 1202
    functionName: registerFunctionImpl
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 11
    functionsReached:
    - std::move
    - TRetValue
    - registerFunctionImpl
    linkageType: ''
    returnType: void
    signature: void registerFunctionImpl(const std::string& functionName, TFunctionType
      function, tag<TRetValue (TObject::*)(TOtherParams...)>)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TRetValue
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1205,1
    - Dst: registerFunctionImpl
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1207,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1207,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' functionName'
    - function
    argTypes:
    - std::string
    - TFunctionType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1208
      start: 1205
    functionDepth: 0
    functionLinenumber: 1205
    functionLinenumberEnd: 1208
    functionName: registerFunctionImpl
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 12
    functionsReached:
    - std::move
    - TRetValue
    - registerFunctionImpl
    linkageType: ''
    returnType: void
    signature: void registerFunctionImpl(const std::string& functionName, TFunctionType
      function, tag<TRetValue (TObject::*)(TOtherParams...) const>)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TRetValue
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1211,1
    - Dst: registerFunctionImpl
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1213,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1213,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' functionName'
    - function
    argTypes:
    - std::string
    - TFunctionType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1214
      start: 1211
    functionDepth: 0
    functionLinenumber: 1211
    functionLinenumberEnd: 1214
    functionName: registerFunctionImpl
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 13
    functionsReached:
    - std::move
    - TRetValue
    - registerFunctionImpl
    linkageType: ''
    returnType: void
    signature: void registerFunctionImpl(const std::string& functionName, TFunctionType
      function, tag<TRetValue (TObject::*)(TOtherParams...) volatile>)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TRetValue
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1217,1
    - Dst: registerFunctionImpl
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1219,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1219,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' functionName'
    - function
    argTypes:
    - std::string
    - TFunctionType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1220
      start: 1217
    functionDepth: 0
    functionLinenumber: 1217
    functionLinenumberEnd: 1220
    functionName: registerFunctionImpl
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 14
    functionsReached:
    - std::move
    - TRetValue
    - registerFunctionImpl
    linkageType: ''
    returnType: void
    signature: void registerFunctionImpl(const std::string& functionName, TFunctionType
      function, tag<TRetValue (TObject::*)(TOtherParams...) const volatile>)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: checkTypeRegistration
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1228,1
    - Dst: typeid
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1228,1
    - Dst: setTable
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1229,1
    - Dst: typeid
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1229,1
    - Dst: readFunction
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1230,1
    - Dst: checkTypeRegistration
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1233,1
    - Dst: typeid
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1233,1
    - Dst: setTable
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1234,1
    - Dst: typeid
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1234,1
    - Dst: assert
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1235,1
    - Dst: readFunction
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1236,1
    - Dst: checkTypeRegistration
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1239,1
    - Dst: typeid
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1239,1
    - Dst: setTable
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1240,1
    - Dst: typeid
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1240,1
    - Dst: assert
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1241,1
    - Dst: readFunction
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1242,1
    - Dst: checkTypeRegistration
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1245,1
    - Dst: typeid
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1245,1
    - Dst: setTable
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1246,1
    - Dst: typeid
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1246,1
    - Dst: assert
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1247,1
    - Dst: readFunction
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1248,1
    - Dst: checkTypeRegistration
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1251,1
    - Dst: typeid
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1251,1
    - Dst: setTable
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1252,1
    - Dst: typeid
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1252,1
    - Dst: assert
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1253,1
    - Dst: readFunction
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1254,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 25
    argCount: 2
    argNames:
    - ' name'
    - readFunction
    argTypes:
    - std::string
    - TReadFunction
    assertStmts:
    - condition: (object)
      pos:
        line_end: 1234
        line_start: 1234
        source_file: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    - condition: (object)
      pos:
        line_end: 1240
        line_start: 1240
        source_file: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    - condition: (object)
      pos:
        line_end: 1252
        line_start: 1252
        source_file: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    - condition: (object)
      pos:
        line_end: 1246
        line_start: 1246
        source_file: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    constantsTouched: []
    func_position:
      end: 1256
      start: 1224
    functionDepth: 0
    functionLinenumber: 1224
    functionLinenumberEnd: 1256
    functionName: registerMemberImpl
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 8
    functionsReached:
    - typeid
    - readFunction
    - assert
    - checkTypeRegistration
    - setTable
    linkageType: ''
    returnType: void
    signature: void registerMemberImpl(const std::string& name, TReadFunction readFunction)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: registerMemberImpl
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1261,1
    - Dst: setTable
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1263,1
    - Dst: typeid
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1263,1
    - Dst: writeFunction_
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1264,1
    - Dst: setTable
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1267,1
    - Dst: typeid
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1267,1
    - Dst: assert
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1268,1
    - Dst: writeFunction_
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1269,1
    - Dst: setTable
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1272,1
    - Dst: typeid
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1272,1
    - Dst: assert
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1273,1
    - Dst: writeFunction_
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1274,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 3
    argNames:
    - ' name'
    - readFunction
    - writeFunction_
    argTypes:
    - std::string
    - TReadFunction
    - TWriteFunction
    assertStmts:
    - condition: (object)
      pos:
        line_end: 1267
        line_start: 1267
        source_file: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    - condition: (object)
      pos:
        line_end: 1272
        line_start: 1272
        source_file: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    constantsTouched: []
    func_position:
      end: 1276
      start: 1259
    functionDepth: 0
    functionLinenumber: 1259
    functionLinenumberEnd: 1276
    functionName: registerMemberImpl
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 9
    functionsReached:
    - typeid
    - writeFunction_
    - assert
    - setTable
    - registerMemberImpl
    linkageType: ''
    returnType: void
    signature: void registerMemberImpl(const std::string& name, TReadFunction readFunction,
      TWriteFunction writeFunction_)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TVarType
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1279,1
    - Dst: registerMemberImpl
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1281,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1281,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1281,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' name'
    - readFunction
    - writeFunction_
    argTypes:
    - std::string
    - TReadFunction
    - TWriteFunction
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1282
      start: 1279
    functionDepth: 0
    functionLinenumber: 1279
    functionLinenumberEnd: 1282
    functionName: registerMemberImpl
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 10
    functionsReached:
    - std::move
    - TVarType
    - registerMemberImpl
    linkageType: ''
    returnType: void
    signature: void registerMemberImpl(tag<TVarType (TObject::*)>, const std::string&
      name, TReadFunction readFunction, TWriteFunction writeFunction_)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TVarType
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1285,1
    - Dst: registerMemberImpl
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1287,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1287,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' name'
    - readFunction
    argTypes:
    - std::string
    - TReadFunction
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1288
      start: 1285
    functionDepth: 0
    functionLinenumber: 1285
    functionLinenumberEnd: 1288
    functionName: registerMemberImpl
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 11
    functionsReached:
    - std::move
    - TVarType
    - registerMemberImpl
    linkageType: ''
    returnType: void
    signature: void registerMemberImpl(tag<TVarType(TObject::*)>, const std::string&
      name, TReadFunction readFunction)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: checkTypeRegistration
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1294,1
    - Dst: typeid
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1294,1
    - Dst: setTable
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1295,1
    - Dst: typeid
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1295,1
    - Dst: readFunction
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1296,1
    - Dst: checkTypeRegistration
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1299,1
    - Dst: typeid
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1299,1
    - Dst: setTable
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1300,1
    - Dst: typeid
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1300,1
    - Dst: assert
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1301,1
    - Dst: readFunction
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1302,1
    - Dst: checkTypeRegistration
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1305,1
    - Dst: typeid
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1305,1
    - Dst: setTable
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1306,1
    - Dst: typeid
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1306,1
    - Dst: assert
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1307,1
    - Dst: readFunction
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1308,1
    - Dst: checkTypeRegistration
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1311,1
    - Dst: typeid
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1311,1
    - Dst: setTable
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1312,1
    - Dst: typeid
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1312,1
    - Dst: assert
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1313,1
    - Dst: readFunction
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1314,1
    - Dst: checkTypeRegistration
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1317,1
    - Dst: typeid
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1317,1
    - Dst: setTable
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1318,1
    - Dst: typeid
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1318,1
    - Dst: assert
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1319,1
    - Dst: readFunction
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1320,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 25
    argCount: 1
    argNames:
    - readFunction
    argTypes:
    - TReadFunction
    assertStmts:
    - condition: (object)
      pos:
        line_end: 1306
        line_start: 1306
        source_file: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    - condition: (object)
      pos:
        line_end: 1312
        line_start: 1312
        source_file: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    - condition: (object)
      pos:
        line_end: 1300
        line_start: 1300
        source_file: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    - condition: (object)
      pos:
        line_end: 1318
        line_start: 1318
        source_file: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    constantsTouched: []
    func_position:
      end: 1322
      start: 1292
    functionDepth: 0
    functionLinenumber: 1292
    functionLinenumberEnd: 1322
    functionName: registerMemberImpl
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 11
    functionsReached:
    - typeid
    - readFunction
    - assert
    - checkTypeRegistration
    - setTable
    linkageType: ''
    returnType: void
    signature: void registerMemberImpl(TReadFunction readFunction)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: registerMemberImpl
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1327,1
    - Dst: setTable
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1329,1
    - Dst: typeid
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1329,1
    - Dst: writeFunction_
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1330,1
    - Dst: setTable
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1333,1
    - Dst: typeid
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1333,1
    - Dst: assert
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1334,1
    - Dst: writeFunction_
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1335,1
    - Dst: setTable
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1338,1
    - Dst: typeid
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1338,1
    - Dst: assert
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1339,1
    - Dst: writeFunction_
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1340,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 2
    argNames:
    - readFunction
    - writeFunction_
    argTypes:
    - TReadFunction
    - TWriteFunction
    assertStmts:
    - condition: (object)
      pos:
        line_end: 1333
        line_start: 1333
        source_file: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    - condition: (object)
      pos:
        line_end: 1338
        line_start: 1338
        source_file: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    constantsTouched: []
    func_position:
      end: 1342
      start: 1325
    functionDepth: 0
    functionLinenumber: 1325
    functionLinenumberEnd: 1342
    functionName: registerMemberImpl
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 12
    functionsReached:
    - typeid
    - writeFunction_
    - assert
    - setTable
    - registerMemberImpl
    linkageType: ''
    returnType: void
    signature: void registerMemberImpl(TReadFunction readFunction, TWriteFunction
      writeFunction_)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TVarType
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1345,1
    - Dst: registerMemberImpl
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1347,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1347,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1347,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - readFunction
    - writeFunction_
    argTypes:
    - TReadFunction
    - TWriteFunction
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1348
      start: 1345
    functionDepth: 0
    functionLinenumber: 1345
    functionLinenumberEnd: 1348
    functionName: registerMemberImpl
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 13
    functionsReached:
    - std::move
    - TVarType
    - registerMemberImpl
    linkageType: ''
    returnType: void
    signature: void registerMemberImpl(tag<TVarType (TObject::*)>, TReadFunction readFunction,
      TWriteFunction writeFunction_)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TVarType
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1351,1
    - Dst: registerMemberImpl
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1353,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1353,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - readFunction
    argTypes:
    - TReadFunction
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1354
      start: 1351
    functionDepth: 0
    functionLinenumber: 1351
    functionLinenumberEnd: 1354
    functionName: registerMemberImpl
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 14
    functionsReached:
    - std::move
    - TVarType
    - registerMemberImpl
    linkageType: ''
    returnType: void
    signature: void registerMemberImpl(tag<TVarType(TObject::*)>, TReadFunction readFunction)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1373,1
    - Dst: assert
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1374,1
    - Dst: static_cast<Reader*>
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1375,1
    - Dst: stream::eof
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1376,1
    - Dst: stream::read
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1378,1
    - Dst: buffer::data
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1378,1
    - Dst: buffer::size
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1378,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1379,1
    - Dst: stream::gcount
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1379,1
    - Dst: buffer::data
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1380,1
    - Dst: lua_load
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1386,1
    - Dst: lua_tostring
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1395,1
    - Dst: lua_pop
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1396,1
    - Dst: std::bad_alloc
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1398,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1401,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 21
    argCount: 2
    argNames:
    - state
    - ' code'
    argTypes:
    - lua_State*
    - std::istream
    assertStmts:
    - condition: (size != nullptr)
      pos:
        line_end: 1372
        line_start: 1372
        source_file: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    - condition: (data != nullptr)
      pos:
        line_end: 1373
        line_start: 1373
        source_file: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    constantsTouched: []
    func_position:
      end: 1405
      start: 1362
    functionDepth: 0
    functionLinenumber: 1362
    functionLinenumberEnd: 1405
    functionName: load
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 135
    functionsReached:
    - std::bad_alloc
    - static_cast<size_t>
    - buffer::size
    - stream::read
    - lua_load
    - std::runtime_error
    - buffer::data
    - stream::gcount
    - assert
    - lua_tostring
    - static_cast<Reader*>
    - stream::eof
    - lua_pop
    linkageType: ''
    returnType: PushedObject
    signature: PushedObject load(lua_State* state, std::istream& code)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' str'
    argTypes:
    - std::istream
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1367
      start: 1367
    functionDepth: 0
    functionLinenumber: 1367
    functionLinenumberEnd: 1367
    functionName: Reader
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Reader(std::istream& str)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1373,1
    - Dst: assert
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1374,1
    - Dst: static_cast<Reader*>
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1375,1
    - Dst: stream::eof
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1376,1
    - Dst: stream::read
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1378,1
    - Dst: buffer::data
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1378,1
    - Dst: buffer::size
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1378,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1379,1
    - Dst: stream::gcount
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1379,1
    - Dst: buffer::data
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1380,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - data
    - size
    argTypes:
    - void*
    - size_t*
    assertStmts:
    - condition: (size != nullptr)
      pos:
        line_end: 1372
        line_start: 1372
        source_file: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    - condition: (data != nullptr)
      pos:
        line_end: 1373
        line_start: 1373
        source_file: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    constantsTouched: []
    func_position:
      end: 1381
      start: 1372
    functionDepth: 0
    functionLinenumber: 1372
    functionLinenumberEnd: 1381
    functionName: read
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 124
    functionsReached:
    - static_cast<size_t>
    - buffer::size
    - stream::read
    - buffer::data
    - stream::gcount
    - assert
    - static_cast<Reader*>
    - stream::eof
    linkageType: ''
    returnType: char
    signature: char * read(lua_State* /*l*/, void* data, size_t* size)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: luaL_loadstring
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1410,1
    - Dst: lua_tostring
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1415,1
    - Dst: lua_pop
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1416,1
    - Dst: std::bad_alloc
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1418,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1421,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 10
    argCount: 2
    argNames:
    - state
    - code
    argTypes:
    - lua_State*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1425
      start: 1409
    functionDepth: 0
    functionLinenumber: 1409
    functionLinenumberEnd: 1425
    functionName: load
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 135
    functionsReached:
    - std::bad_alloc
    - std::runtime_error
    - lua_tostring
    - luaL_loadstring
    - lua_pop
    linkageType: ''
    returnType: PushedObject
    signature: PushedObject load(lua_State* state, const char* code)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: push
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1437,1
    - Dst: std::forward_as_tuple
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1437,1
    - Dst: std::forward<TParameters>
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1437,1
    - Dst: callRaw
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1441,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1441,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1441,1
    - Dst: readTopAndPop
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1444,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1444,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 2
    argCount: 2
    argNames:
    - state
    - toCall
    argTypes:
    - lua_State*
    - PushedObject
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1445
      start: 1430
    functionDepth: 0
    functionLinenumber: 1430
    functionLinenumberEnd: 1445
    functionName: call
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 17
    functionsReached:
    - std::move
    - std::forward<TParameters>
    - push
    - std::forward_as_tuple
    - readTopAndPop
    - callRaw
    linkageType: ''
    returnType: auto
    signature: "auto call(lua_State* state, PushedObject toCall, TParameters&&...
      input)\n        -> TReturnType"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lua_pushliteral
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1448,1
    - Dst: lua_rawget
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1449,1
    - Dst: lua_pushstring
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1450,1
    - Dst: lua_pushinteger
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1451,1
    - Dst: lua_call
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1452,1
    - Dst: lua_createtable
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1453,1
    - Dst: lua_insert
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1454,1
    - Dst: lua_rawseti
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1455,1
    - Dst: lua_rawseti
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1456,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 1
    argNames:
    - L
    argTypes:
    - lua_State*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1458
      start: 1447
    functionDepth: 0
    functionLinenumber: 1447
    functionLinenumberEnd: 1458
    functionName: gettraceback
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 0
    functionsReached:
    - lua_insert
    - lua_pushinteger
    - lua_call
    - lua_createtable
    - lua_rawseti
    - lua_pushliteral
    - lua_pushstring
    - lua_rawget
    linkageType: ''
    returnType: int
    signature: int gettraceback(lua_State* L)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: lua_gettop
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1464,1
    - Dst: PushedObject::getNum
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1464,1
    - Dst: lua_pushcfunction
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1465,1
    - Dst: lua_insert
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1468,1
    - Dst: lua_pcall
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1471,1
    - Dst: PushedObject::getNum
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1471,1
    - Dst: PushedObject::release
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1472,1
    - Dst: lua_remove
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1474,1
    - Dst: ExecutionErrorException
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1483,1
    - Dst: lua_gettop
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1488,1
    - Dst: lua_type
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1488,1
    - Dst: lua_rawgeti
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1490,1
    - Dst: lua_rawgeti
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1491,1
    - Dst: lua_remove
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1492,1
    - Dst: readTopAndPop
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1495,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1495,1
    - Dst: lua_isstring
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1499,1
    - Dst: readTopAndPop
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1501,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1501,1
    - Dst: readTopAndPop
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1508,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1508,1
    - Dst: std::rethrow_exception
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1509,1
    - Dst: std::throw_with_nested
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1512,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1512,1
    - Dst: std::throw_with_nested
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1514,1
    - Dst: ExecutionErrorException
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1520,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1520,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 35
    argCount: 3
    argNames:
    - state
    - functionAndArguments
    - outArguments
    argTypes:
    - lua_State*
    - PushedObject
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1525
      start: 1461
    functionDepth: 0
    functionLinenumber: 1461
    functionLinenumberEnd: 1525
    functionName: callRaw
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 2
    functionsReached:
    - lua_insert
    - lua_isstring
    - std::move
    - lua_rawgeti
    - lua_remove
    - std::rethrow_exception
    - std::to_string
    - what
    - lua_pushcfunction
    - lua_pcall
    - lua_type
    - ExecutionErrorException
    - PushedObject::getNum
    - std::throw_with_nested
    - lua_gettop
    - readTopAndPop
    - PushedObject::release
    linkageType: ''
    returnType: PushedObject
    signature: PushedObject callRaw(lua_State* state, PushedObject functionAndArguments,
      const int outArguments)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: push
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1534,1
    - Dst: std::forward<T>
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1534,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 2
    argNames:
    - state
    - ' value'
    argTypes:
    - lua_State*
    - T
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1535
      start: 1532
    functionDepth: 0
    functionLinenumber: 1532
    functionLinenumberEnd: 1535
    functionName: push
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 33
    functionsReached:
    - std::forward<T>
    - push
    linkageType: ''
    returnType: PushedObject
    signature: PushedObject push(lua_State* state, T&& value)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1553,1
    - Dst: lua_gettop
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1553,1
    - Dst: static_cast<TType*>
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1554,1
    - Dst: lua_touserdata
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1554,1
    - Dst: assert
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1555,1
    - Dst: TType*::~TType
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1556,1
    - Dst: assert
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1563,1
    - Dst: lua_gettop
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1563,1
    - Dst: assert
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1564,1
    - Dst: lua_isuserdata
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1564,1
    - Dst: lua_pushlightuserdata
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1567,1
    - Dst: const_cast<std::type_info*>
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1567,1
    - Dst: typeid
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1567,1
    - Dst: lua_gettable
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1568,1
    - Dst: assert
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1569,1
    - Dst: lua_isnil
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1569,1
    - Dst: lua_pushinteger
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1572,1
    - Dst: lua_gettable
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1573,1
    - Dst: lua_pushvalue
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1574,1
    - Dst: lua_gettable
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1575,1
    - Dst: lua_isnil
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1576,1
    - Dst: lua_pop
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1578,1
    - Dst: lua_pushinteger
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1581,1
    - Dst: lua_gettable
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1582,1
    - Dst: lua_pushvalue
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1583,1
    - Dst: lua_gettable
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1584,1
    - Dst: lua_isnil
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1585,1
    - Dst: lua_pushvalue
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1586,1
    - Dst: callRaw
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1587,1
    - Dst: lua_pop
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1589,1
    - Dst: lua_pushinteger
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1592,1
    - Dst: lua_gettable
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1593,1
    - Dst: lua_isnil
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1594,1
    - Dst: lua_pushvalue
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1596,1
    - Dst: lua_pushvalue
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1597,1
    - Dst: callRaw
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1598,1
    - Dst: push
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1601,1
    - Dst: std::current_exception
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1601,1
    - Dst: luaError
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1602,1
    - Dst: assert
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1609,1
    - Dst: lua_gettop
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1609,1
    - Dst: assert
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1610,1
    - Dst: lua_isuserdata
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1610,1
    - Dst: lua_pushlightuserdata
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1613,1
    - Dst: const_cast<std::type_info*>
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1613,1
    - Dst: typeid
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1613,1
    - Dst: lua_rawget
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1614,1
    - Dst: assert
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1615,1
    - Dst: lua_isnil
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1615,1
    - Dst: lua_pushinteger
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1618,1
    - Dst: lua_rawget
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1619,1
    - Dst: lua_pushvalue
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1620,1
    - Dst: lua_rawget
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1621,1
    - Dst: lua_isnil
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1622,1
    - Dst: lua_pushvalue
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1623,1
    - Dst: lua_pushvalue
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1624,1
    - Dst: callRaw
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1625,1
    - Dst: lua_pop
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1626,1
    - Dst: lua_pop
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1629,1
    - Dst: lua_pushinteger
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1632,1
    - Dst: lua_rawget
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1633,1
    - Dst: lua_isnil
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1634,1
    - Dst: lua_pop
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1636,1
    - Dst: lua_pushstring
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1637,1
    - Dst: luaError
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1638,1
    - Dst: lua_pushvalue
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1640,1
    - Dst: lua_pushvalue
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1641,1
    - Dst: lua_pushvalue
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1642,1
    - Dst: callRaw
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1643,1
    - Dst: lua_pop
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1644,1
    - Dst: push
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1648,1
    - Dst: std::current_exception
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1648,1
    - Dst: luaError
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1649,1
    - Dst: assert
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1655,1
    - Dst: lua_gettop
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1655,1
    - Dst: assert
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1656,1
    - Dst: lua_isuserdata
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1656,1
    - Dst: lua_pushstring
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1657,1
    - Dst: lua_gettable
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1658,1
    - Dst: lua_isnil
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1659,1
    - Dst: lua_topointer
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1661,1
    - Dst: lua_pop
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1662,1
    - Dst: lua_pushstring
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1663,1
    - Dst: boost::format
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1663,1
    - Dst: reinterpret_cast<intptr_t>
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1663,1
    - Dst: str
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1663,1
    - Dst: lua_pushvalue
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1666,1
    - Dst: callRaw
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1667,1
    - Dst: push
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1669,1
    - Dst: std::current_exception
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1669,1
    - Dst: luaError
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1670,1
    - Dst: checkTypeRegistration
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1676,1
    - Dst: typeid
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1676,1
    - Dst: static_cast<TType*>
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1682,1
    - Dst: lua_newuserdata
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1682,1
    - Dst: std::forward<TType2>
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1683,1
    - Dst: TType::TType
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1683,1
    - Dst: push
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1686,1
    - Dst: std::current_exception
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1686,1
    - Dst: luaError
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1687,1
    - Dst: lua_newtable
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1695,1
    - Dst: lua_pushstring
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1701,1
    - Dst: lua_pushcfunction
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1702,1
    - Dst: lua_settable
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1703,1
    - Dst: lua_pushstring
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1707,1
    - Dst: lua_pushlightuserdata
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1708,1
    - Dst: const_cast<std::type_info*>
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1708,1
    - Dst: typeid
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1708,1
    - Dst: lua_settable
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1709,1
    - Dst: lua_pushstring
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1712,1
    - Dst: lua_pushcfunction
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1713,1
    - Dst: lua_settable
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1714,1
    - Dst: lua_pushstring
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1717,1
    - Dst: lua_pushcfunction
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1718,1
    - Dst: lua_settable
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1719,1
    - Dst: lua_pushstring
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1721,1
    - Dst: lua_pushcfunction
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1722,1
    - Dst: lua_settable
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1723,1
    - Dst: lua_pushstring
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1725,1
    - Dst: lua_getglobal
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1726,1
    - Dst: lua_settable
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1727,1
    - Dst: lua_setmetatable
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1733,1
    - Dst: PushedObject::release
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1734,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 124
    argCount: 2
    argNames:
    - state
    - ' value'
    argTypes:
    - lua_State*
    - TType2
    assertStmts:
    - condition: (lua_isuserdata(lua, 1))
      pos:
        line_end: 1609
        line_start: 1609
        source_file: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    - condition: (lua_isuserdata(lua, 1))
      pos:
        line_end: 1563
        line_start: 1563
        source_file: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    - condition: (ptr)
      pos:
        line_end: 1554
        line_start: 1554
        source_file: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    - condition: (lua_isuserdata(lua, 1))
      pos:
        line_end: 1655
        line_start: 1655
        source_file: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    - condition: (lua_gettop(lua) == 2)
      pos:
        line_end: 1562
        line_start: 1562
        source_file: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    - condition: (lua_gettop(lua) == 3)
      pos:
        line_end: 1608
        line_start: 1608
        source_file: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    - condition: (lua_gettop(lua) == 1)
      pos:
        line_end: 1552
        line_start: 1552
        source_file: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    - condition: (lua_gettop(lua) == 1)
      pos:
        line_end: 1654
        line_start: 1654
        source_file: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    - condition: (!lua_isnil(lua, -1))
      pos:
        line_end: 1614
        line_start: 1614
        source_file: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    - condition: (!lua_isnil(lua, -1))
      pos:
        line_end: 1568
        line_start: 1568
        source_file: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    constantsTouched: []
    func_position:
      end: 1737
      start: 1549
    functionDepth: 0
    functionLinenumber: 1549
    functionLinenumberEnd: 1737
    functionName: push
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 34
    functionsReached:
    - boost::format
    - push
    - lua_gettop
    - lua_pushstring
    - callRaw
    - lua_rawget
    - const_cast<std::type_info*>
    - lua_topointer
    - lua_pushinteger
    - reinterpret_cast<intptr_t>
    - std::current_exception
    - assert
    - lua_isnil
    - lua_settable
    - lua_setmetatable
    - lua_isuserdata
    - std::forward<TType2>
    - lua_newuserdata
    - lua_pushcfunction
    - str
    - lua_newtable
    - static_cast<TType*>
    - PushedObject::release
    - luaError
    - typeid
    - lua_touserdata
    - lua_pushvalue
    - checkTypeRegistration
    - lua_pushlightuserdata
    - lua_gettable
    - lua_getglobal
    - TType::TType
    - TType*::~TType
    - lua_pop
    linkageType: ''
    returnType: PushedObject
    signature: PushedObject push(lua_State* state, TType2&& value) noexcept
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: test
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1772,1
    - Dst: boost::optional<ReturnType>
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1774,1
    - Dst: static_cast<TType*>
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1774,1
    - Dst: lua_touserdata
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1774,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - state
    - index
    argTypes:
    - lua_State*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1775
      start: 1769
    functionDepth: 0
    functionLinenumber: 1769
    functionLinenumberEnd: 1775
    functionName: read
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 124
    functionsReached:
    - static_cast<TType*>
    - lua_touserdata
    - boost::optional<ReturnType>
    - test
    linkageType: ''
    returnType: auto
    signature: "auto read(lua_State* state, int index)\n            -> boost::optional<ReturnType>"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lua_isuserdata
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1780,1
    - Dst: lua_getmetatable
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1782,1
    - Dst: lua_pushstring
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1787,1
    - Dst: lua_gettable
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1788,1
    - Dst: static_cast<const std::type_info*>
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1789,1
    - Dst: lua_touserdata
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1789,1
    - Dst: typeid
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1790,1
    - Dst: lua_pop
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1793,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - state
    - index
    argTypes:
    - lua_State*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1798
      start: 1778
    functionDepth: 0
    functionLinenumber: 1778
    functionLinenumberEnd: 1798
    functionName: test
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 4
    functionsReached:
    - lua_isuserdata
    - typeid
    - lua_touserdata
    - lua_getmetatable
    - lua_gettable
    - lua_pushstring
    - static_cast<const std::type_info*>
    - lua_pop
    linkageType: ''
    returnType: bool
    signature: bool test(lua_State* state, int index)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: callback
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1808,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - ' callback'
    argTypes:
    - TCallback
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1809
      start: 1805
    functionDepth: 0
    functionLinenumber: 1805
    functionLinenumberEnd: 1809
    functionName: readIntoFunction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 0
    functionsReached:
    - callback
    linkageType: ''
    returnType: auto
    signature: "auto readIntoFunction(lua_State* /*state*/, tag<TRetValue>, TCallback&&
      callback, int /*index*/)\n        -> TRetValue"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: readIntoFunction
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1817,1
    - Dst: qthread
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1820,1
    - Dst: WrongTypeException
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1822,1
    - Dst: lua_typename
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1822,1
    - Dst: lua_type
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1822,1
    - Dst: typeid
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1822,1
    - Dst: readIntoFunction
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1825,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 7
    argCount: 4
    argNames:
    - state
    - retValueTag
    - ' callback'
    - index
    argTypes:
    - lua_State*
    - tag<TRetValue>
    - TCallback
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1826
      start: 1811
    functionDepth: 2
    functionLinenumber: 1811
    functionLinenumberEnd: 1826
    functionName: readIntoFunction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 1
    functionsReached:
    - qthread
    - lua_typename
    - typeid
    - WrongTypeException
    - readIntoFunction
    - lua_type
    linkageType: ''
    returnType: auto
    signature: "auto readIntoFunction(lua_State* state, tag<TRetValue> retValueTag,
      TCallback&& callback, int index, tag<TFirstType>, tag<TTypes>... othersTags)\n
      \       -> typename std::enable_if<IsOptional<TFirstType>::value, TRetValue>::type"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: std::logic_error
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1832,1
    - Dst: qthread
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1834,1
    - Dst: WrongTypeException
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1836,1
    - Dst: lua_typename
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1836,1
    - Dst: lua_type
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1836,1
    - Dst: typeid
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1836,1
    - Dst: readIntoFunction
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1839,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 6
    argCount: 4
    argNames:
    - state
    - retValueTag
    - ' callback'
    - index
    argTypes:
    - lua_State*
    - tag<TRetValue>
    - TCallback
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1840
      start: 1828
    functionDepth: 2
    functionLinenumber: 1828
    functionLinenumberEnd: 1840
    functionName: readIntoFunction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 2
    functionsReached:
    - qthread
    - lua_typename
    - typeid
    - WrongTypeException
    - readIntoFunction
    - lua_type
    - std::logic_error
    linkageType: ''
    returnType: auto
    signature: "auto readIntoFunction(lua_State* state, tag<TRetValue> retValueTag,
      TCallback&& callback, int index, tag<TFirstType>, tag<TTypes>... othersTags)\n
      \       -> typename std::enable_if<!IsOptional<TFirstType>::value, TRetValue>::type"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lua_pushlightuserdata
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1851,1
    - Dst: lua_pushvalue
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1852,1
    - Dst: lua_settable
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1853,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - lua_
    argTypes:
    - lua_State*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1854
      start: 1849
    functionDepth: 0
    functionLinenumber: 1849
    functionLinenumberEnd: 1854
    functionName: ValueInRegistry
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 1
    functionsReached:
    - lua_pushlightuserdata
    - lua_pushvalue
    - lua_settable
    linkageType: ''
    returnType: void
    signature: void ValueInRegistry(lua_State* lua_, int index=-1)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lua_pushlightuserdata
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1859,1
    - Dst: lua_pushnil
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1860,1
    - Dst: lua_settable
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1861,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1862
      start: 1857
    functionDepth: 0
    functionLinenumber: 1857
    functionLinenumberEnd: 1862
    functionName: ~ValueInRegistry()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 0
    functionsReached:
    - lua_pushlightuserdata
    - lua_pushnil
    - lua_settable
    linkageType: ''
    returnType: void
    signature: void ~ValueInRegistry()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lua_pushlightuserdata
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1867,1
    - Dst: lua_gettable
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1868,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1870
      start: 1865
    functionDepth: 0
    functionLinenumber: 1865
    functionLinenumberEnd: 1870
    functionName: pop
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 15
    functionsReached:
    - lua_pushlightuserdata
    - lua_gettable
    linkageType: ''
    returnType: PushedObject
    signature: PushedObject pop()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1872
      start: 1872
    functionDepth: 0
    functionLinenumber: 1872
    functionLinenumberEnd: 1872
    functionName: ValueInRegistry
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ValueInRegistry(const ValueInRegistry&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1873
      start: 1873
    functionDepth: 0
    functionLinenumber: 1873
    functionLinenumberEnd: 1873
    functionName: '& operator=(const ValueInRegistry&)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: ValueInRegistry
    signature: ValueInRegistry & operator=(const ValueInRegistry&)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: function
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1887,1
    - Dst: std::forward<TParams>
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1887,1
    - Dst: function
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1889,1
    - Dst: std::forward<TParams>
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:1889,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1890
      start: 1886
    functionDepth: 0
    functionLinenumber: 1886
    functionLinenumberEnd: 1890
    functionName: "operator()(TParams&&... params)\n            -> decltype(function(param,
      std::forward<TParams>(params)...))"
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 0
    functionsReached:
    - std::forward<TParams>
    - function
    linkageType: ''
    returnType: auto
    signature: "auto operator()(TParams&&... params)\n            -> decltype(function(param,
      std::forward<TParams>(params)...))"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1931
      start: 1928
    functionDepth: 0
    functionLinenumber: 1928
    functionLinenumberEnd: 1931
    functionName: "LuaContext::readTopAndPop<void>(lua_State* /*state*/, PushedObject
      /*obj*/)\n    -> void"
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: "auto LuaContext::readTopAndPop<void>(lua_State* /*state*/, PushedObject
      /*obj*/)\n    -> void"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pop
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2022,1
    - Dst: call
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2023,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2023,1
    - Dst: std::forward<TParams>
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2023,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2024
      start: 2020
    functionDepth: 0
    functionLinenumber: 2020
    functionLinenumberEnd: 2024
    functionName: operator()(TParams&&... params) const
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 0
    functionsReached:
    - call
    - std::move
    - std::forward<TParams>
    - pop
    linkageType: ''
    returnType: TRetValue
    signature: TRetValue operator()(TParams&&... params) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<ValueInRegistry>
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2033,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - state_
    - index
    argTypes:
    - lua_State*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2035
      start: 2032
    functionDepth: 0
    functionLinenumber: 2032
    functionLinenumberEnd: 2035
    functionName: LuaContext::LuaFunctionCaller<TRetValue (TParams...)>::LuaFunctionCaller
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 0
    functionsReached:
    - std::make_shared<ValueInRegistry>
    linkageType: ''
    returnType: void
    signature: void LuaFunctionCaller(lua_State* state_, int index)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: objectInRegistry::get
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2051,1
    - Dst: objectInRegistry::pop
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2052,1
    - Dst: lua_pushnil
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2055,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - state
    - ' value'
    argTypes:
    - lua_State*
    - LuaContext::LuaObject
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2058
      start: 2050
    functionDepth: 0
    functionLinenumber: 2050
    functionLinenumberEnd: 2058
    functionName: push
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 34
    functionsReached:
    - objectInRegistry::get
    - lua_pushnil
    - objectInRegistry::pop
    linkageType: ''
    returnType: PushedObject
    signature: PushedObject push(lua_State* state, const LuaContext::LuaObject& value)
      noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lua_pushboolean
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2068,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - state
    - value
    argTypes:
    - lua_State*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2070
      start: 2067
    functionDepth: 0
    functionLinenumber: 2067
    functionLinenumberEnd: 2070
    functionName: push
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 34
    functionsReached:
    - lua_pushboolean
    linkageType: ''
    returnType: PushedObject
    signature: PushedObject push(lua_State* state, bool value) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lua_pushlstring
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2080,1
    - Dst: c_str
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2080,1
    - Dst: length
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2080,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - state
    - ' value'
    argTypes:
    - lua_State*
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2082
      start: 2079
    functionDepth: 0
    functionLinenumber: 2079
    functionLinenumberEnd: 2082
    functionName: push
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 34
    functionsReached:
    - c_str
    - length
    - lua_pushlstring
    linkageType: ''
    returnType: PushedObject
    signature: PushedObject push(lua_State* state, const std::string& value) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lua_pushstring
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2092,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - state
    - value
    argTypes:
    - lua_State*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2094
      start: 2091
    functionDepth: 0
    functionLinenumber: 2091
    functionLinenumberEnd: 2094
    functionName: push
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 34
    functionsReached:
    - lua_pushstring
    linkageType: ''
    returnType: PushedObject
    signature: PushedObject push(lua_State* state, const char* value) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lua_pushstring
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2104,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - state
    - value
    argTypes:
    - lua_State*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2106
      start: 2103
    functionDepth: 0
    functionLinenumber: 2103
    functionLinenumberEnd: 2106
    functionName: push
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 34
    functionsReached:
    - lua_pushstring
    linkageType: ''
    returnType: PushedObject
    signature: PushedObject push(lua_State* state, const char* value) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lua_pushnumber
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2116,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - state
    - value
    argTypes:
    - lua_State*
    - T
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2118
      start: 2115
    functionDepth: 0
    functionLinenumber: 2115
    functionLinenumberEnd: 2118
    functionName: push
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 34
    functionsReached:
    - lua_pushnumber
    linkageType: ''
    returnType: PushedObject
    signature: PushedObject push(lua_State* state, T value) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lua_pushinteger
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2128,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - state
    - value
    argTypes:
    - lua_State*
    - T
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2130
      start: 2127
    functionDepth: 0
    functionLinenumber: 2127
    functionLinenumberEnd: 2130
    functionName: push
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 34
    functionsReached:
    - lua_pushinteger
    linkageType: ''
    returnType: PushedObject
    signature: PushedObject push(lua_State* state, T value) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lua_pushnil
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2140,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - state
    argTypes:
    - lua_State*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2142
      start: 2139
    functionDepth: 0
    functionLinenumber: 2139
    functionLinenumberEnd: 2142
    functionName: push
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 34
    functionsReached:
    - lua_pushnil
    linkageType: ''
    returnType: PushedObject
    signature: PushedObject push(lua_State* state, std::nullptr_t) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lua_newtable
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2152,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - state
    argTypes:
    - lua_State*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2154
      start: 2151
    functionDepth: 0
    functionLinenumber: 2151
    functionLinenumberEnd: 2154
    functionName: push
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 34
    functionsReached:
    - lua_newtable
    linkageType: ''
    returnType: PushedObject
    signature: PushedObject push(lua_State* state, EmptyArray_t) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lua_pushlightuserdata
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2164,1
    - Dst: const_cast<std::type_info*>
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2164,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - state
    - ptr
    argTypes:
    - lua_State*
    - std::type_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2166
      start: 2163
    functionDepth: 0
    functionLinenumber: 2163
    functionLinenumberEnd: 2166
    functionName: push
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 34
    functionsReached:
    - lua_pushlightuserdata
    - const_cast<std::type_info*>
    linkageType: ''
    returnType: PushedObject
    signature: PushedObject push(lua_State* state, const std::type_info* ptr) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lua_pushthread
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2176,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - state
    - ' value'
    argTypes:
    - lua_State*
    - LuaContext::ThreadID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2178
      start: 2175
    functionDepth: 0
    functionLinenumber: 2175
    functionLinenumberEnd: 2178
    functionName: push
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 34
    functionsReached:
    - lua_pushthread
    linkageType: ''
    returnType: PushedObject
    signature: PushedObject push(lua_State* state, const LuaContext::ThreadID& value)
      noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: push
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2191,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2193,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2193,1
    - Dst: setTable
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2194,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 4
    argCount: 2
    argNames:
    - state
    - ' value'
    argTypes:
    - lua_State*
    - std::map<TKey,TValue>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2197
      start: 2187
    functionDepth: 0
    functionLinenumber: 2187
    functionLinenumberEnd: 2197
    functionName: push
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 35
    functionsReached:
    - end
    - setTable
    - push
    - begin
    linkageType: ''
    returnType: PushedObject
    signature: PushedObject push(lua_State* state, const std::map<TKey,TValue>& value)
      noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: push
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2210,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2212,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2212,1
    - Dst: setTable
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2213,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 4
    argCount: 2
    argNames:
    - state
    - ' value'
    argTypes:
    - lua_State*
    - std::unordered_map<TKey,TValue,THash,TKeyEqual>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2216
      start: 2206
    functionDepth: 0
    functionLinenumber: 2206
    functionLinenumberEnd: 2216
    functionName: push
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 36
    functionsReached:
    - end
    - setTable
    - push
    - begin
    linkageType: ''
    returnType: PushedObject
    signature: PushedObject push(lua_State* state, const std::unordered_map<TKey,TValue,THash,TKeyEqual>&
      value) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: push
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2229,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2231,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2231,1
    - Dst: setTable
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2232,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 4
    argCount: 2
    argNames:
    - state
    - ' value'
    argTypes:
    - lua_State*
    - std::vector<std::pair<TType1,TType2>>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2235
      start: 2225
    functionDepth: 0
    functionLinenumber: 2225
    functionLinenumberEnd: 2235
    functionName: push
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 37
    functionsReached:
    - end
    - setTable
    - push
    - begin
    linkageType: ''
    returnType: PushedObject
    signature: PushedObject push(lua_State* state, const std::vector<std::pair<TType1,TType2>>&
      value) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: push
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2247,1
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2249,1
    - Dst: setTable
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2250,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 2
    argNames:
    - state
    - ' value'
    argTypes:
    - lua_State*
    - std::vector<TType>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2253
      start: 2244
    functionDepth: 0
    functionLinenumber: 2244
    functionLinenumberEnd: 2253
    functionName: push
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 38
    functionsReached:
    - size
    - setTable
    - push
    linkageType: ''
    returnType: PushedObject
    signature: PushedObject push(lua_State* state, const std::vector<TType>& value)
      noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: push
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2263,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2263,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - state
    - value
    argTypes:
    - lua_State*
    - std::unique_ptr<TType>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2264
      start: 2262
    functionDepth: 0
    functionLinenumber: 2262
    functionLinenumberEnd: 2264
    functionName: push
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 39
    functionsReached:
    - std::move
    - push
    linkageType: ''
    returnType: PushedObject
    signature: PushedObject push(lua_State* state, std::unique_ptr<TType> value) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: push
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2283,1
    - Dst: static_cast<RealType>
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2283,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - state
    - value
    argTypes:
    - lua_State*
    - TEnum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2284
      start: 2282
    functionDepth: 0
    functionLinenumber: 2282
    functionLinenumberEnd: 2284
    functionName: push
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 40
    functionsReached:
    - static_cast<RealType>
    - push
    linkageType: ''
    returnType: PushedObject
    signature: PushedObject push(lua_State* state, TEnum value) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2314,1
    - Dst: lua_gettop
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2314,1
    - Dst: assert
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2315,1
    - Dst: lua_isuserdata
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2315,1
    - Dst: static_cast<TFunctionObject*>
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2316,1
    - Dst: lua_touserdata
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2316,1
    - Dst: assert
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2317,1
    - Dst: callback
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2319,1
    - Dst: lua_gettop
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2319,1
    - Dst: assert
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2325,1
    - Dst: lua_gettop
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2325,1
    - Dst: static_cast<TFunctionObject*>
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2326,1
    - Dst: lua_touserdata
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2326,1
    - Dst: assert
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2327,1
    - Dst: auto::~TFunctionObject
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2328,1
    - Dst: static_cast<TFunctionObject*>
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2336,1
    - Dst: lua_newuserdata
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2336,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2337,1
    - Dst: TFunctionObject::TFunctionObject
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2337,1
    - Dst: lua_newtable
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2342,1
    - Dst: lua_pushstring
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2343,1
    - Dst: lua_pushcfunction
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2344,1
    - Dst: lua_settable
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2345,1
    - Dst: lua_pushstring
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2347,1
    - Dst: lua_pushcfunction
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2348,1
    - Dst: lua_settable
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2349,1
    - Dst: lua_setmetatable
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2354,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 21
    argCount: 2
    argNames:
    - state
    - fn
    argTypes:
    - lua_State*
    - TFunctionObject
    assertStmts:
    - condition: (function)
      pos:
        line_end: 2316
        line_start: 2316
        source_file: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    - condition: (lua_gettop(lua) == 1)
      pos:
        line_end: 2324
        line_start: 2324
        source_file: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    - condition: (lua_isuserdata(lua, 1))
      pos:
        line_end: 2314
        line_start: 2314
        source_file: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    - condition: (function)
      pos:
        line_end: 2326
        line_start: 2326
        source_file: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    - condition: (lua_gettop(lua) >= 1)
      pos:
        line_end: 2313
        line_start: 2313
        source_file: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    constantsTouched: []
    func_position:
      end: 2357
      start: 2301
    functionDepth: 0
    functionLinenumber: 2301
    functionLinenumberEnd: 2357
    functionName: push
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 40
    functionsReached:
    - callback
    - lua_settable
    - std::move
    - lua_isuserdata
    - auto::~TFunctionObject
    - lua_newtable
    - lua_setmetatable
    - lua_touserdata
    - lua_newuserdata
    - assert
    - lua_pushcfunction
    - lua_gettop
    - TFunctionObject::TFunctionObject
    - lua_pushstring
    - static_cast<TFunctionObject*>
    linkageType: ''
    returnType: auto
    signature: "auto push(lua_State* state, TFunctionObject fn) noexcept\n        ->
      typename std::enable_if<!boost::has_trivial_destructor<TFunctionObject>::value,
      PushedObject>::type"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<TFunctionObject*>
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2374,1
    - Dst: lua_touserdata
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2374,1
    - Dst: lua_upvalueindex
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2374,1
    - Dst: callback
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2375,1
    - Dst: lua_gettop
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2375,1
    - Dst: static_cast<TFunctionObject*>
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2380,1
    - Dst: lua_newuserdata
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2380,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2381,1
    - Dst: TFunctionObject::TFunctionObject
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2381,1
    - Dst: lua_pushcclosure
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2384,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - state
    - fn
    argTypes:
    - lua_State*
    - TFunctionObject
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2386
      start: 2361
    functionDepth: 0
    functionLinenumber: 2361
    functionLinenumberEnd: 2386
    functionName: push
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 40
    functionsReached:
    - callback
    - std::move
    - lua_pushcclosure
    - lua_touserdata
    - lua_newuserdata
    - lua_upvalueindex
    - lua_gettop
    - TFunctionObject::TFunctionObject
    - static_cast<TFunctionObject*>
    linkageType: ''
    returnType: auto
    signature: "auto push(lua_State* state, TFunctionObject fn) noexcept\n        ->
      typename std::enable_if<boost::has_trivial_destructor<TFunctionObject>::value,
      PushedObject>::type"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: reinterpret_cast<TReturnType (*)(TParameters...)>
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2399,1
    - Dst: lua_touserdata
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2399,1
    - Dst: lua_upvalueindex
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2399,1
    - Dst: callback
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2400,1
    - Dst: lua_gettop
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2400,1
    - Dst: lua_pushlightuserdata
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2404,1
    - Dst: reinterpret_cast<void*>
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2404,1
    - Dst: lua_pushcclosure
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2407,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - state
    argTypes:
    - lua_State*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2409
      start: 2389
    functionDepth: 0
    functionLinenumber: 2389
    functionLinenumberEnd: 2409
    functionName: push
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 40
    functionsReached:
    - callback
    - lua_pushcclosure
    - lua_touserdata
    - reinterpret_cast<TReturnType (*)(TParameters...)>
    - lua_upvalueindex
    - lua_pushlightuserdata
    - reinterpret_cast<void*>
    - lua_gettop
    linkageType: ''
    returnType: auto
    signature: "auto push(lua_State* state, TReturnType (*fn)(TParameters...)) noexcept\n
      \       -> PushedObject"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: push
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2415,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - state
    argTypes:
    - lua_State*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2416
      start: 2412
    functionDepth: 0
    functionLinenumber: 2412
    functionLinenumberEnd: 2416
    functionName: push
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 41
    functionsReached:
    - push
    linkageType: ''
    returnType: auto
    signature: "auto push(lua_State* state, TReturnType (&fn)(TParameters...)) noexcept\n
      \       -> PushedObject"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: luaL_where
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2428,1
    - Dst: lua_pushstring
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2429,1
    - Dst: lua_pushnumber
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2430,1
    - Dst: lua_pushstring
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2431,1
    - Dst: lua_concat
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2432,1
    - Dst: luaError
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2433,1
    - Dst: luaL_where
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2437,1
    - Dst: lua_pushstring
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2438,1
    - Dst: lua_pushnumber
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2439,1
    - Dst: lua_pushstring
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2440,1
    - Dst: lua_concat
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2441,1
    - Dst: luaError
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2442,1
    - Dst: callback2
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2447,1
    - Dst: luaL_where
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2451,1
    - Dst: lua_pushstring
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2452,1
    - Dst: lua_pushstring
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2453,1
    - Dst: luaType::c_str
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2453,1
    - Dst: lua_pushstring
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2454,1
    - Dst: lua_pushstring
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2455,1
    - Dst: destination::name
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2455,1
    - Dst: lua_concat
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2456,1
    - Dst: luaError
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2457,1
    - Dst: luaL_where
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2460,1
    - Dst: lua_pushstring
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2461,1
    - Dst: lua_pushstring
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2462,1
    - Dst: what
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2462,1
    - Dst: lua_concat
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2463,1
    - Dst: luaError
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2464,1
    - Dst: push
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2466,1
    - Dst: std::current_exception
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2466,1
    - Dst: luaError
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2467,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 37
    argCount: 3
    argNames:
    - state
    - toCall
    - argumentsCount
    argTypes:
    - lua_State*
    - TFunctionObject*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2469
      start: 2422
    functionDepth: 0
    functionLinenumber: 2422
    functionLinenumberEnd: 2469
    functionName: callback
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 60
    functionsReached:
    - luaError
    - lua_pushnumber
    - callback2
    - luaL_where
    - push
    - what
    - luaType::c_str
    - std::current_exception
    - destination::name
    - lua_concat
    - lua_pushstring
    linkageType: ''
    returnType: auto
    signature: "auto callback(lua_State* state, TFunctionObject* toCall, int argumentsCount)\n
      \       -> PushedObject"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: push
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2478,1
    - Dst: readIntoFunction
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2478,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 2
    argCount: 3
    argNames:
    - state
    - ' toCall'
    - argumentsCount
    argTypes:
    - lua_State*
    - TFunctionObject
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2479
      start: 2472
    functionDepth: 0
    functionLinenumber: 2472
    functionLinenumberEnd: 2479
    functionName: callback2
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 3
    functionsReached:
    - readIntoFunction
    - push
    linkageType: ''
    returnType: auto
    signature: "auto callback2(lua_State* state, TFunctionObject&& toCall, int argumentsCount)\n
      \       -> typename std::enable_if<!std::is_void<TReturnType>::value && !std::is_void<TFunctionObject>::value,
      PushedObject>::type"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: readIntoFunction
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2485,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 3
    argCount: 3
    argNames:
    - state
    - ' toCall'
    - argumentsCount
    argTypes:
    - lua_State*
    - TFunctionObject
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2487
      start: 2482
    functionDepth: 0
    functionLinenumber: 2482
    functionLinenumberEnd: 2487
    functionName: callback2
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 3
    functionsReached:
    - readIntoFunction
    linkageType: ''
    returnType: auto
    signature: "auto callback2(lua_State* state, TFunctionObject&& toCall, int argumentsCount)\n
      \       -> typename std::enable_if<std::is_void<TReturnType>::value && !std::is_void<TFunctionObject>::value,
      PushedObject>::type"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: push
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2502,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - state
    - value
    argTypes:
    - lua_State*
    - TType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2503
      start: 2501
    functionDepth: 0
    functionLinenumber: 2501
    functionLinenumberEnd: 2503
    functionName: push
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 44
    functionsReached:
    - push
    linkageType: ''
    returnType: PushedObject
    signature: PushedObject push(lua_State* state, TType value) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: push
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2518,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - state
    - value
    argTypes:
    - lua_State*
    - TType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2519
      start: 2517
    functionDepth: 0
    functionLinenumber: 2517
    functionLinenumberEnd: 2519
    functionName: push
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 45
    functionsReached:
    - push
    linkageType: ''
    returnType: PushedObject
    signature: PushedObject push(lua_State* state, TType value) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: push
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2533,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - state
    - ' value'
    argTypes:
    - lua_State*
    - std::function<TReturnType (TParameters...)>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2534
      start: 2532
    functionDepth: 0
    functionLinenumber: 2532
    functionLinenumberEnd: 2534
    functionName: push
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 46
    functionsReached:
    - push
    linkageType: ''
    returnType: PushedObject
    signature: PushedObject push(lua_State* state, const std::function<TReturnType
      (TParameters...)>& value) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: apply_visitor
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2547,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - state
    - ' value'
    argTypes:
    - lua_State*
    - boost::variant<TTypes...>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2549
      start: 2544
    functionDepth: 0
    functionLinenumber: 2544
    functionLinenumberEnd: 2549
    functionName: push
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 46
    functionsReached:
    - apply_visitor
    linkageType: ''
    returnType: PushedObject
    signature: PushedObject push(lua_State* state, const boost::variant<TTypes...>&
      value) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: push
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2556,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2556,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - value
    argTypes:
    - TType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2557
      start: 2554
    functionDepth: 0
    functionLinenumber: 2554
    functionLinenumberEnd: 2557
    functionName: operator()(TType value) noexcept
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 0
    functionsReached:
    - std::move
    - push
    linkageType: ''
    returnType: void
    signature: void operator()(TType value) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - state_
    - ' obj_'
    argTypes:
    - lua_State*
    - PushedObject
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2559
      start: 2559
    functionDepth: 0
    functionLinenumber: 2559
    functionLinenumberEnd: 2559
    functionName: VariantWriter
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void VariantWriter(lua_State* state_, PushedObject& obj_)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: visit
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2575,1
    - Dst: push
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2577,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - state
    - ' value'
    argTypes:
    - lua_State*
    - std::variant<TTypes...>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2580
      start: 2573
    functionDepth: 0
    functionLinenumber: 2573
    functionLinenumberEnd: 2580
    functionName: push
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 48
    functionsReached:
    - visit
    - push
    linkageType: ''
    returnType: PushedObject
    signature: PushedObject push(lua_State* state, const std::variant<TTypes...>&
      value) noexcept
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: push
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2595,1
    - Dst: get
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2595,1
    - Dst: lua_pushnil
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2597,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - state
    - ' value'
    argTypes:
    - lua_State*
    - boost::optional<TType>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2600
      start: 2593
    functionDepth: 0
    functionLinenumber: 2593
    functionLinenumberEnd: 2600
    functionName: push
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 49
    functionsReached:
    - lua_pushnil
    - push
    - get
    linkageType: ''
    returnType: PushedObject
    signature: PushedObject push(lua_State* state, const boost::optional<TType>& value)
      noexcept
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: has_value
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2614,1
    - Dst: push
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2615,1
    - Dst: value
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2615,1
    - Dst: lua_pushnil
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2617,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - state
    - ' value'
    argTypes:
    - lua_State*
    - std::optional<TType>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2620
      start: 2613
    functionDepth: 0
    functionLinenumber: 2613
    functionLinenumberEnd: 2620
    functionName: push
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 50
    functionsReached:
    - has_value
    - value
    - push
    - lua_pushnil
    linkageType: ''
    returnType: PushedObject
    signature: PushedObject push(lua_State* state, const std::optional<TType>& value)
      noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: push2
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2632,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - state
    - ' value'
    argTypes:
    - lua_State*
    - std::tuple<TTypes...>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2633
      start: 2631
    functionDepth: 0
    functionLinenumber: 2631
    functionLinenumberEnd: 2633
    functionName: push
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 50
    functionsReached:
    - push2
    linkageType: ''
    returnType: PushedObject
    signature: PushedObject push(lua_State* state, const std::tuple<TTypes...>& value)
      noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: push2
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2636,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2636,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 2
    argNames:
    - state
    - ' value'
    argTypes:
    - lua_State*
    - std::tuple<TTypes...>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2637
      start: 2635
    functionDepth: 0
    functionLinenumber: 2635
    functionLinenumberEnd: 2637
    functionName: push
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 50
    functionsReached:
    - push2
    - std::move
    linkageType: ''
    returnType: PushedObject
    signature: PushedObject push(lua_State* state, std::tuple<TTypes...>&& value)
      noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: push
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2644,1
    - Dst: std::get<N>
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2644,1
    - Dst: push2
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2645,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - state
    - ' value'
    argTypes:
    - lua_State*
    - std::tuple<TTypes...>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2646
      start: 2641
    functionDepth: 0
    functionLinenumber: 2641
    functionLinenumberEnd: 2646
    functionName: push2
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 3
    functionsReached:
    - push2
    - std::get<N>
    - push
    linkageType: ''
    returnType: int
    signature: int push2(lua_State* state, const std::tuple<TTypes...>& value, std::integral_constant<int,N>)
      noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: push
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2652,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2652,1
    - Dst: std::get<N>
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2652,1
    - Dst: push2
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2653,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2653,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 2
    argNames:
    - state
    - ' value'
    argTypes:
    - lua_State*
    - std::tuple<TTypes...>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2654
      start: 2649
    functionDepth: 0
    functionLinenumber: 2649
    functionLinenumberEnd: 2654
    functionName: push2
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 4
    functionsReached:
    - push2
    - std::move
    - std::get<N>
    - push
    linkageType: ''
    returnType: int
    signature: int push2(lua_State* state, std::tuple<TTypes...>&& value, std::integral_constant<int,N>)
      noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2658
      start: 2656
    functionDepth: 0
    functionLinenumber: 2656
    functionLinenumberEnd: 2658
    functionName: push2
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int push2(lua_State* /*state*/, const std::tuple<TTypes...>&, std::integral_constant<int,sizeof...(TTypes)>)
      noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2662
      start: 2660
    functionDepth: 0
    functionLinenumber: 2660
    functionLinenumberEnd: 2662
    functionName: push2
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int push2(lua_State* /*state*/, std::tuple<TTypes...>&&, std::integral_constant<int,sizeof...(TTypes)>)
      noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - state
    - index
    argTypes:
    - lua_State*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2679
      start: 2674
    functionDepth: 0
    functionLinenumber: 2674
    functionLinenumberEnd: 2679
    functionName: read
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 127
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: "auto read(lua_State* state, int index)\n        -> boost::optional<LuaContext::LuaObject>"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lua_isnil
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2689,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - state
    - index
    argTypes:
    - lua_State*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2692
      start: 2686
    functionDepth: 0
    functionLinenumber: 2686
    functionLinenumberEnd: 2692
    functionName: read
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 127
    functionsReached:
    - lua_isnil
    linkageType: ''
    returnType: auto
    signature: "auto read(lua_State* state, int index)\n        -> boost::optional<std::nullptr_t>"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lua_tointegerx
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2708,1
    - Dst: static_cast<TType>
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2711,1
    - Dst: lua_isnumber
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2715,1
    - Dst: static_cast<TType>
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2717,1
    - Dst: lua_tointeger
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2717,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - state
    - index
    argTypes:
    - lua_State*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2720
      start: 2702
    functionDepth: 0
    functionLinenumber: 2702
    functionLinenumberEnd: 2720
    functionName: read
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 127
    functionsReached:
    - lua_tointeger
    - lua_tointegerx
    - lua_isnumber
    - static_cast<TType>
    linkageType: ''
    returnType: auto
    signature: "auto read(lua_State* state, int index)\n        -> boost::optional<TType>"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lua_tonumberx
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2736,1
    - Dst: static_cast<TType>
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2739,1
    - Dst: lua_isnumber
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2743,1
    - Dst: static_cast<TType>
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2745,1
    - Dst: lua_tonumber
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2745,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - state
    - index
    argTypes:
    - lua_State*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2748
      start: 2730
    functionDepth: 0
    functionLinenumber: 2730
    functionLinenumberEnd: 2748
    functionName: read
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 127
    functionsReached:
    - lua_tonumberx
    - lua_tonumber
    - lua_isnumber
    - static_cast<TType>
    linkageType: ''
    returnType: auto
    signature: "auto read(lua_State* state, int index)\n        -> boost::optional<TType>"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lua_isboolean
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2758,1
    - Dst: lua_toboolean
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2760,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - state
    - index
    argTypes:
    - lua_State*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2761
      start: 2755
    functionDepth: 0
    functionLinenumber: 2755
    functionLinenumberEnd: 2761
    functionName: read
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 127
    functionsReached:
    - lua_toboolean
    - lua_isboolean
    linkageType: ''
    returnType: auto
    signature: "auto read(lua_State* state, int index)\n        -> boost::optional<bool>"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lua_pushvalue
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2777,1
    - Dst: lua_tolstring
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2780,1
    - Dst: std::string::assign
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2783,1
    - Dst: lua_pop
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2785,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2787,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - state
    - index
    argTypes:
    - lua_State*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2788
      start: 2770
    functionDepth: 1
    functionLinenumber: 2770
    functionLinenumberEnd: 2788
    functionName: read
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 127
    functionsReached:
    - std::move
    - lua_pushvalue
    - std::string::assign
    - lua_tolstring
    - lua_pop
    linkageType: ''
    returnType: auto
    signature: "auto read(lua_State* state, int index)\n        -> boost::optional<std::string>"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lua_isnumber
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2801,1
    - Dst: fmod
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2801,1
    - Dst: lua_tonumber
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2801,1
    - Dst: static_cast<TType>
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2803,1
    - Dst: lua_tointeger
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2803,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 2
    argNames:
    - state
    - index
    argTypes:
    - lua_State*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2804
      start: 2798
    functionDepth: 0
    functionLinenumber: 2798
    functionLinenumberEnd: 2804
    functionName: read
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 127
    functionsReached:
    - lua_tonumber
    - static_cast<TType>
    - fmod
    - lua_tointeger
    - lua_isnumber
    linkageType: ''
    returnType: auto
    signature: "auto read(lua_State* state, int index)\n        -> boost::optional<TType>"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lua_isfunction
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2817,1
    - Dst: lua_isuserdata
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2817,1
    - Dst: ReturnType
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2819,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 2
    argNames:
    - state
    - index
    argTypes:
    - lua_State*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2820
      start: 2814
    functionDepth: 0
    functionLinenumber: 2814
    functionLinenumberEnd: 2820
    functionName: read
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 127
    functionsReached:
    - ReturnType
    - lua_isfunction
    - lua_isuserdata
    linkageType: ''
    returnType: auto
    signature: "auto read(lua_State* state, int index)\n        -> boost::optional<ReturnType>"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: qthread
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2830,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2833,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - state
    - index
    argTypes:
    - lua_State*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2837
      start: 2827
    functionDepth: 2
    functionLinenumber: 2827
    functionLinenumberEnd: 2837
    functionName: read
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 128
    functionsReached:
    - qthread
    - std::move
    linkageType: ''
    returnType: auto
    signature: "auto read(lua_State* state, int index)\n        -> boost::optional<std::function<TRetValue
      (TParameters...)>>"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lua_istable
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2847,1
    - Dst: lua_pushnil
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2853,1
    - Dst: lua_next
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2854,1
    - Dst: qthread
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2857,1
    - Dst: qthread
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2858,1
    - Dst: auto::is_initialized
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2860,1
    - Dst: auto::is_initialized
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2860,1
    - Dst: lua_pop
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2861,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2865,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2865,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2865,1
    - Dst: lua_pop
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2866,1
    - Dst: lua_pop
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2869,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2874,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 2
    argNames:
    - state
    - index
    argTypes:
    - lua_State*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2875
      start: 2844
    functionDepth: 2
    functionLinenumber: 2844
    functionLinenumberEnd: 2875
    functionName: read
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 129
    functionsReached:
    - qthread
    - std::vector::push_back
    - std::move
    - auto::get
    - auto::is_initialized
    - lua_next
    - lua_pushnil
    - lua_istable
    - lua_pop
    linkageType: ''
    returnType: auto
    signature: "auto read(lua_State* state, int index)\n        -> boost::optional<std::vector<std::pair<TType1,
      TType2>>>"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lua_istable
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2885,1
    - Dst: lua_pushnil
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2891,1
    - Dst: lua_next
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2892,1
    - Dst: qthread
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2895,1
    - Dst: qthread
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2896,1
    - Dst: auto::is_initialized
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2898,1
    - Dst: auto::is_initialized
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2898,1
    - Dst: lua_pop
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2899,1
    - Dst: std::map::insert
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2903,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2903,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2903,1
    - Dst: lua_pop
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2904,1
    - Dst: lua_pop
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2907,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2912,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 2
    argNames:
    - state
    - index
    argTypes:
    - lua_State*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2913
      start: 2882
    functionDepth: 2
    functionLinenumber: 2882
    functionLinenumberEnd: 2913
    functionName: read
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 130
    functionsReached:
    - qthread
    - std::move
    - auto::get
    - std::map::insert
    - auto::is_initialized
    - lua_next
    - lua_pushnil
    - lua_istable
    - lua_pop
    linkageType: ''
    returnType: auto
    signature: "auto read(lua_State* state, int index)\n        -> boost::optional<std::map<TKey,TValue>>"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lua_istable
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2923,1
    - Dst: lua_pushnil
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2929,1
    - Dst: lua_next
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2930,1
    - Dst: qthread
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2933,1
    - Dst: qthread
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2934,1
    - Dst: auto::is_initialized
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2936,1
    - Dst: auto::is_initialized
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2936,1
    - Dst: lua_pop
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2937,1
    - Dst: std::unordered_map::insert
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2941,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2941,1
    - Dst: auto::get
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2941,1
    - Dst: lua_pop
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2942,1
    - Dst: lua_pop
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2945,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2950,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 2
    argNames:
    - state
    - index
    argTypes:
    - lua_State*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2951
      start: 2920
    functionDepth: 2
    functionLinenumber: 2920
    functionLinenumberEnd: 2951
    functionName: read
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 131
    functionsReached:
    - qthread
    - std::move
    - auto::get
    - auto::is_initialized
    - lua_next
    - std::unordered_map::insert
    - lua_pushnil
    - lua_istable
    - lua_pop
    linkageType: ''
    returnType: auto
    signature: "auto read(lua_State* state, int index)\n        -> boost::optional<std::unordered_map<TKey,TValue,THash,TKeyEqual>>"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lua_isnil
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2965,1
    - Dst: qthread
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2967,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2968,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 2
    argNames:
    - state
    - index
    argTypes:
    - lua_State*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2970
      start: 2962
    functionDepth: 2
    functionLinenumber: 2962
    functionLinenumberEnd: 2970
    functionName: read
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 132
    functionsReached:
    - qthread
    - std::move
    - lua_isnil
    linkageType: ''
    returnType: auto
    signature: "auto read(lua_State* state, int index)\n        -> boost::optional<boost::optional<TType>>"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lua_isnil
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2981,1
    - Dst: std::optional<TType>
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2982,1
    - Dst: qthread
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2984,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2985,1
    - Dst: std::optional<TType>
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:2985,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - state
    - index
    argTypes:
    - lua_State*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2988
      start: 2978
    functionDepth: 2
    functionLinenumber: 2978
    functionLinenumberEnd: 2988
    functionName: read
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 133
    functionsReached:
    - qthread
    - std::optional<TType>
    - std::move
    - lua_isnil
    linkageType: ''
    returnType: auto
    signature: "auto read(lua_State* state, int index)\n        -> boost::optional<std::optional<TType>>"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: qthread
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:3011,1
    - Dst: qthread
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:3013,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - state
    - index
    argTypes:
    - lua_State*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3014
      start: 3007
    functionDepth: 2
    functionLinenumber: 3007
    functionLinenumberEnd: 3014
    functionName: read
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 134
    functionsReached:
    - qthread
    linkageType: ''
    returnType: auto
    signature: "auto read(lua_State* state, int index)\n            -> boost::optional<ReturnType>"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3025
      start: 3021
    functionDepth: 0
    functionLinenumber: 3021
    functionLinenumberEnd: 3025
    functionName: read
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 134
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: "auto read(lua_State* /*state*/, int /*index*/)\n            -> boost::optional<ReturnType>"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: qthread
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:3036,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - state
    - index
    argTypes:
    - lua_State*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3037
      start: 3033
    functionDepth: 2
    functionLinenumber: 3033
    functionLinenumberEnd: 3037
    functionName: read
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 135
    functionsReached:
    - qthread
    linkageType: ''
    returnType: auto
    signature: "auto read(lua_State* state, int index)\n        -> boost::optional<ReturnType>"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: qthread
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:3056,1
    - Dst: variantRead
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:3062,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - state
    - index
    argTypes:
    - lua_State*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3065
      start: 3048
    functionDepth: 2
    functionLinenumber: 3048
    functionLinenumberEnd: 3065
    functionName: variantRead
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 1
    functionsReached:
    - qthread
    - variantRead
    linkageType: ''
    returnType: boost::optional<ReturnType>
    signature: boost::optional<ReturnType> variantRead(lua_State* state, int index)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: variantRead
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:3071,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - state
    - index
    argTypes:
    - lua_State*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3072
      start: 3068
    functionDepth: 0
    functionLinenumber: 3068
    functionLinenumberEnd: 3072
    functionName: read
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 136
    functionsReached:
    - variantRead
    linkageType: ''
    returnType: auto
    signature: "auto read(lua_State* state, int index)\n        -> boost::optional<ReturnType>"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3086
      start: 3082
    functionDepth: 0
    functionLinenumber: 3082
    functionLinenumberEnd: 3086
    functionName: read
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 136
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: "auto read(lua_State* /*state*/, int /*index*/, int /*maxSize*/ = 0)\n
      \       -> boost::optional<std::tuple<>>"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: qthread
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:3105,1
    - Dst: qthread
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:3106,1
    - Dst: std::tuple_cat
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:3111,1
    - Dst: std::tuple<TFirst>
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:3111,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:3111,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 2
    argNames:
    - state
    - index
    argTypes:
    - lua_State*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3112
      start: 3099
    functionDepth: 2
    functionLinenumber: 3099
    functionLinenumberEnd: 3112
    functionName: read
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 137
    functionsReached:
    - qthread
    - std::move
    - std::tuple<TFirst>
    - std::tuple_cat
    linkageType: ''
    returnType: auto
    signature: "auto read(lua_State* state, int index, int maxSize = std::tuple_size<ReturnType>::value)\n
      \       -> boost::optional<ReturnType>"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: qthread
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:3128,1
    - Dst: std::tuple_cat
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:3133,1
    - Dst: std::tuple<TFirst>
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:3133,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:3133,1
    - Dst: qthread
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:3135,1
    - Dst: std::tuple_cat
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:3139,1
    - Dst: std::tuple<TFirst>
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:3139,1
    - Dst: std::move
      Src: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp:3139,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - state
    - index
    argTypes:
    - lua_State*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3140
      start: 3125
    functionDepth: 2
    functionLinenumber: 3125
    functionLinenumberEnd: 3140
    functionName: read
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    functionUses: 138
    functionsReached:
    - qthread
    - std::move
    - std::tuple<TFirst>
    - std::tuple_cat
    linkageType: ''
    returnType: auto
    signature: "auto read(lua_State* state, int index, int maxSize = std::tuple_size<ReturnType>::value)\n
      \       -> boost::optional<ReturnType>"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::string_view::size
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc:26,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc:27,1
    - Dst: reinterpret_cast<const LSheader*>
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc:30,1
    - Dst: std::string_view::data
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc:30,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - val
    argTypes:
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 31
      start: 24
    functionDepth: 0
    functionLinenumber: 24
    functionLinenumberEnd: 31
    functionName: LMDBLS::LSassertFixedHeaderSize
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc
    functionUses: 0
    functionsReached:
    - std::string_view::size
    - std::string_view::data
    - reinterpret_cast<const LSheader*>
    - std::runtime_error
    linkageType: ''
    returnType: LSheader
    signature: LSheader * LSassertFixedHeaderSize(std::string_view val)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: LMDBLS::LSassertFixedHeaderSize
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc:34,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc:37,1
    - Dst: std::string_view::data
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc:42,1
    - Dst: std::string_view::size
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc:47,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc:48,1
    - Dst: std::string_view::size
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc:51,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc:52,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 12
    argCount: 2
    argNames:
    - val
    - datasize
    argTypes:
    - std::string_view
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 33
    functionDepth: 0
    functionLinenumber: 33
    functionLinenumberEnd: 56
    functionName: LMDBLS::LScheckHeaderAndGetSize
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc
    functionUses: 0
    functionsReached:
    - std::string_view::size
    - std::string_view::data
    - LMDBLS::LSassertFixedHeaderSize
    - std::runtime_error
    linkageType: ''
    returnType: size_t
    signature: size_t LScheckHeaderAndGetSize(std::string_view val, size_t datasize)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LMDBLS::LScheckHeaderAndGetSize
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc:59,1
    - Dst: MDBOutVal*::getNoStripHeader
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc:59,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - val
    - datasize
    argTypes:
    - MDBOutVal*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 58
    functionDepth: 0
    functionLinenumber: 58
    functionLinenumberEnd: 60
    functionName: LMDBLS::LScheckHeaderAndGetSize
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc
    functionUses: 1
    functionsReached:
    - LMDBLS::LScheckHeaderAndGetSize
    - MDBOutVal*::getNoStripHeader
    linkageType: ''
    returnType: size_t
    signature: size_t LScheckHeaderAndGetSize(const MDBOutVal *val, size_t datasize)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LMDBLS::LSassertFixedHeaderSize
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc:63,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - val
    argTypes:
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 62
    functionDepth: 0
    functionLinenumber: 62
    functionLinenumberEnd: 66
    functionName: LMDBLS::LSisDeleted
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc
    functionUses: 0
    functionsReached:
    - LMDBLS::LSassertFixedHeaderSize
    linkageType: ''
    returnType: bool
    signature: bool LSisDeleted(std::string_view val)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LMDBLS::LSassertFixedHeaderSize
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc:69,1
    - Dst: LSheader*::getTimestamp
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc:71,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - val
    argTypes:
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 68
    functionDepth: 0
    functionLinenumber: 68
    functionLinenumberEnd: 72
    functionName: LMDBLS::LSgetTimestamp
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc
    functionUses: 0
    functionsReached:
    - LMDBLS::LSassertFixedHeaderSize
    - LSheader*::getTimestamp
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t LSgetTimestamp(std::string_view val)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::string_view::size
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc:26,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc:27,1
    - Dst: reinterpret_cast<const LSheader*>
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc:30,1
    - Dst: std::string_view::data
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc:30,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - val
    argTypes:
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 31
      start: 24
    functionDepth: 0
    functionLinenumber: 24
    functionLinenumberEnd: 31
    functionName: LMDBLS::LSassertFixedHeaderSize
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc
    functionUses: 3
    functionsReached:
    - std::string_view::size
    - std::string_view::data
    - reinterpret_cast<const LSheader*>
    - std::runtime_error
    linkageType: ''
    returnType: LSheader
    signature: LSheader * LSassertFixedHeaderSize(std::string_view val)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: LMDBLS::LSassertFixedHeaderSize
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc:34,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc:37,1
    - Dst: std::string_view::data
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc:42,1
    - Dst: std::string_view::size
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc:47,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc:48,1
    - Dst: std::string_view::size
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc:51,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc:52,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 12
    argCount: 2
    argNames:
    - val
    - datasize
    argTypes:
    - std::string_view
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 33
    functionDepth: 0
    functionLinenumber: 33
    functionLinenumberEnd: 56
    functionName: LMDBLS::LScheckHeaderAndGetSize
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc
    functionUses: 1
    functionsReached:
    - std::string_view::size
    - std::string_view::data
    - LMDBLS::LSassertFixedHeaderSize
    - std::runtime_error
    linkageType: ''
    returnType: size_t
    signature: size_t LScheckHeaderAndGetSize(std::string_view val, size_t datasize)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LMDBLS::LScheckHeaderAndGetSize
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc:59,1
    - Dst: MDBOutVal*::getNoStripHeader
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc:59,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - val
    - datasize
    argTypes:
    - MDBOutVal*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 58
    functionDepth: 0
    functionLinenumber: 58
    functionLinenumberEnd: 60
    functionName: LMDBLS::LScheckHeaderAndGetSize
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc
    functionUses: 2
    functionsReached:
    - LMDBLS::LScheckHeaderAndGetSize
    - MDBOutVal*::getNoStripHeader
    linkageType: ''
    returnType: size_t
    signature: size_t LScheckHeaderAndGetSize(const MDBOutVal *val, size_t datasize)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LMDBLS::LSassertFixedHeaderSize
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc:63,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - val
    argTypes:
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 62
    functionDepth: 0
    functionLinenumber: 62
    functionLinenumberEnd: 66
    functionName: LMDBLS::LSisDeleted
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc
    functionUses: 0
    functionsReached:
    - LMDBLS::LSassertFixedHeaderSize
    linkageType: ''
    returnType: bool
    signature: bool LSisDeleted(std::string_view val)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LMDBLS::LSassertFixedHeaderSize
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc:69,1
    - Dst: LSheader*::getTimestamp
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc:71,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - val
    argTypes:
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 68
    functionDepth: 0
    functionLinenumber: 68
    functionLinenumberEnd: 72
    functionName: LMDBLS::LSgetTimestamp
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc
    functionUses: 0
    functionsReached:
    - LMDBLS::LSassertFixedHeaderSize
    - LSheader*::getTimestamp
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t LSgetTimestamp(std::string_view val)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: MDBDbi::mdb_dbi_open
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc:84,1
    - Dst: string_view::empty
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc:84,1
    - Dst: string_view::data
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc:84,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc:86,1
    - Dst: MDBError
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc:86,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 3
    argNames:
    - txn
    - dbname
    - flags
    argTypes:
    - MDB_txn*
    - string_view
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 80
    functionDepth: 0
    functionLinenumber: 80
    functionLinenumberEnd: 90
    functionName: MDBDbi::MDBDbi
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc
    functionUses: 0
    functionsReached:
    - MDBDbi::mdb_dbi_open
    - std::runtime_error
    - string_view::data
    - MDBError
    - string_view::empty
    linkageType: ''
    returnType: void
    signature: void MDBDbi::MDBDbi(MDB_env* /* env */, MDB_txn* txn, const string_view
      dbname, int flags)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: MDBDbi::mdb_dbi_open
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc:98,1
    - Dst: MDBDbi::mdb_dbi_open
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc:101,1
    - Dst: MDBDbi::mdb_dbi_open
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc:108,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 4
    argNames:
    - txn
    - name
    - flags
    - dbi
    argTypes:
    - MDB_txn*
    - char*
    - unsigned int
    - MDB_dbi*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 94
    functionDepth: 0
    functionLinenumber: 94
    functionLinenumberEnd: 109
    functionName: MDBDbi::mdb_dbi_open
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc
    functionUses: 2
    functionsReached:
    - MDBDbi::mdb_dbi_open
    linkageType: ''
    returnType: int
    signature: int MDBDbi::mdb_dbi_open(MDB_txn* txn, const char* name, unsigned int
      flags, MDB_dbi* dbi)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: mdb_env_create
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc:113,1
    - Dst: mdb_env_set_mapsize
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc:114,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc:115,1
    - Dst: mdb_env_set_maxdbs
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc:120,1
    - Dst: mdb_env_open
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc:123,1
    - Dst: mdb_env_close
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc:125,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc:126,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc:126,1
    - Dst: MDBError
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc:126,1
    - Dst: mdb_reader_check
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc:132,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 4
    argNames:
    - fname
    - flags
    - mode
    - mapsizeMB
    argTypes:
    - char*
    - int
    - int
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 134
      start: 111
    functionDepth: 0
    functionLinenumber: 111
    functionLinenumberEnd: 134
    functionName: MDBEnv::MDBEnv
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc
    functionUses: 0
    functionsReached:
    - mdb_reader_check
    - std::runtime_error
    - mdb_env_set_mapsize
    - MDBError
    - mdb_env_create
    - mdb_env_set_maxdbs
    - mdb_env_open
    - mdb_env_close
    - std::string
    linkageType: ''
    returnType: void
    signature: void MDBEnv::MDBEnv(const char* fname, int flags, int mode, uint64_t
      mapsizeMB)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist_ffi_dnsquestion_get_id
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc:138,1
    - Dst: find
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc:141,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc:141,1
    - Dst: emplace
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc:149,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 154
      start: 136
    functionDepth: 2
    functionLinenumber: 136
    functionLinenumberEnd: 154
    functionName: MDBEnv::incRWTX
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc
    functionUses: 0
    functionsReached:
    - end
    - emplace
    - dnsdist_ffi_dnsquestion_get_id
    - find
    linkageType: ''
    returnType: void
    signature: void MDBEnv::incRWTX()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist_ffi_dnsquestion_get_id
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc:158,1
    - Dst: at
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc:161,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 163
      start: 156
    functionDepth: 2
    functionLinenumber: 156
    functionLinenumberEnd: 163
    functionName: MDBEnv::decRWTX
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc
    functionUses: 0
    functionsReached:
    - at
    - dnsdist_ffi_dnsquestion_get_id
    linkageType: ''
    returnType: void
    signature: void MDBEnv::decRWTX()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist_ffi_dnsquestion_get_id
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc:167,1
    - Dst: find
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc:170,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc:170,1
    - Dst: auto::second::load
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc:171,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 175
      start: 165
    functionDepth: 2
    functionLinenumber: 165
    functionLinenumberEnd: 175
    functionName: MDBEnv::getRWTX
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc
    functionUses: 0
    functionsReached:
    - end
    - auto::second::load
    - dnsdist_ffi_dnsquestion_get_id
    - find
    linkageType: ''
    returnType: int
    signature: int MDBEnv::getRWTX()
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: stat
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc:190,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc:192,1
    - Dst: MDBError
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc:192,1
    - Dst: stat
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc:197,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc:199,1
    - Dst: MDBError
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc:199,1
    - Dst: std::make_shared<MDBEnv>
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc:201,1
    - Dst: stat
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc:202,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc:203,1
    - Dst: MDBError
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc:203,1
    - Dst: std::tie
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc:205,1
    - Dst: std::map::emplace
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc:206,1
    - Dst: std::tie
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc:212,1
    - Dst: std::map::find
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc:213,1
    - Dst: std::map::end
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc:214,1
    - Dst: auto::second::wp::lock
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc:215,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc:218,1
    - Dst: std::map::erase
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc:223,1
    - Dst: std::make_shared<MDBEnv>
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc:226,1
    - Dst: std::map::emplace
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc:227,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 27
    argCount: 4
    argNames:
    - fname
    - flags
    - mode
    - mapsizeMB
    argTypes:
    - char*
    - int
    - int
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 230
      start: 178
    functionDepth: 0
    functionLinenumber: 178
    functionLinenumberEnd: 230
    functionName: getMDBEnv
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc
    functionUses: 1
    functionsReached:
    - std::runtime_error
    - auto::second::wp::lock
    - MDBError
    - std::map::erase
    - std::map::emplace
    - std::tie
    - std::map::find
    - stat
    - std::map::end
    - std::make_shared<MDBEnv>
    linkageType: ''
    returnType: std::shared_ptr<MDBEnv>
    signature: std::shared_ptr<MDBEnv> getMDBEnv(const char* fname, int flags, int
      mode, uint64_t mapsizeMB)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mdb_env_get_flags
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc:236,1
    - Dst: MDBEnv::getRWTransaction
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc:243,1
    - Dst: auto::openDB
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc:244,1
    - Dst: auto::commit
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc:245,1
    - Dst: MDBDbi::MDBDbi
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc:249,1
    - Dst: MDBEnv::getROTransaction
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc:251,1
    - Dst: auto::openDB
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc:252,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - dbname
    - flags
    argTypes:
    - string_view
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 255
      start: 233
    functionDepth: 1
    functionLinenumber: 233
    functionLinenumberEnd: 255
    functionName: MDBEnv::openDB
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc
    functionUses: 0
    functionsReached:
    - MDBDbi::MDBDbi
    - MDBEnv::getROTransaction
    - mdb_env_get_flags
    - MDBEnv::getRWTransaction
    - auto::commit
    - auto::openDB
    linkageType: ''
    returnType: MDBDbi
    signature: MDBDbi MDBEnv::openDB(const string_view dbname, int flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - parent
    - txn
    argTypes:
    - MDBEnv*
    - MDB_txn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 262
      start: 257
    functionDepth: 0
    functionLinenumber: 257
    functionLinenumberEnd: 262
    functionName: MDBRWTransactionImpl::MDBRWTransactionImpl
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void MDBRWTransactionImpl::MDBRWTransactionImpl(MDBEnv *parent, MDB_txn
      *txn)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: MDBEnv*::getRWTX
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc:267,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc:268,1
    - Dst: mdb_txn_begin
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc:271,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc:272,1
    - Dst: MDBError
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc:272,1
    - Dst: MDBEnv*::incRWTX
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc:275,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 3
    argNames:
    - env
    - parent
    - flags
    argTypes:
    - MDBEnv*
    - MDB_txn*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 277
      start: 264
    functionDepth: 0
    functionLinenumber: 264
    functionLinenumberEnd: 277
    functionName: MDBRWTransactionImpl::openRWTransaction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc
    functionUses: 0
    functionsReached:
    - MDBEnv*::getRWTX
    - MDBEnv*::incRWTX
    - std::runtime_error
    - MDBError
    - mdb_txn_begin
    linkageType: ''
    returnType: MDB_txn
    signature: MDB_txn *MDBRWTransactionImpl::openRWTransaction(MDBEnv *env, MDB_txn
      *parent, int flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MDBRWTransactionImpl::openRWTransaction
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc:280,1
    - Dst: gettime
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc:285,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - parent
    - flags
    argTypes:
    - MDBEnv*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 289
      start: 279
    functionDepth: 0
    functionLinenumber: 279
    functionLinenumberEnd: 289
    functionName: MDBRWTransactionImpl::MDBRWTransactionImpl
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc
    functionUses: 0
    functionsReached:
    - MDBRWTransactionImpl::openRWTransaction
    - gettime
    linkageType: ''
    returnType: void
    signature: void MDBRWTransactionImpl::MDBRWTransactionImpl(MDBEnv* parent, int
      flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MDBRWTransactionImpl::abort
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc:293,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 294
      start: 291
    functionDepth: 0
    functionLinenumber: 291
    functionLinenumberEnd: 294
    functionName: MDBRWTransactionImpl::~MDBRWTransactionImpl()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc
    functionUses: 0
    functionsReached:
    - MDBRWTransactionImpl::abort
    linkageType: ''
    returnType: void
    signature: void MDBRWTransactionImpl::~MDBRWTransactionImpl()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: MDBRWTransactionImpl::closeRORWCursors
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc:298,1
    - Dst: mdb_txn_commit
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc:303,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc:304,1
    - Dst: MDBError
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc:304,1
    - Dst: environment
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc:306,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 308
      start: 296
    functionDepth: 0
    functionLinenumber: 296
    functionLinenumberEnd: 308
    functionName: MDBRWTransactionImpl::commit
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc
    functionUses: 0
    functionsReached:
    - std::runtime_error
    - MDBError
    - MDBRWTransactionImpl::closeRORWCursors
    - environment
    - mdb_txn_commit
    linkageType: ''
    returnType: void
    signature: void MDBRWTransactionImpl::commit()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: MDBRWTransactionImpl::closeRORWCursors
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc:312,1
    - Dst: mdb_txn_abort
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc:317,1
    - Dst: environment
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc:319,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 321
      start: 310
    functionDepth: 0
    functionLinenumber: 310
    functionLinenumberEnd: 321
    functionName: MDBRWTransactionImpl::abort
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc
    functionUses: 1
    functionsReached:
    - environment
    - mdb_txn_abort
    - MDBRWTransactionImpl::closeRORWCursors
    linkageType: ''
    returnType: void
    signature: void MDBRWTransactionImpl::abort()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - parent
    - txn
    argTypes:
    - MDBEnv*
    - MDB_txn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 329
      start: 323
    functionDepth: 0
    functionLinenumber: 323
    functionLinenumberEnd: 329
    functionName: MDBROTransactionImpl::MDBROTransactionImpl
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void MDBROTransactionImpl::MDBROTransactionImpl(MDBEnv *parent, MDB_txn
      *txn)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: MDBEnv*::getRWTX
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc:333,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc:334,1
    - Dst: mdb_txn_begin
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc:340,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc:341,1
    - Dst: MDBError
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc:341,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 3
    argNames:
    - env
    - parent
    - flags
    argTypes:
    - MDBEnv*
    - MDB_txn*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 345
      start: 331
    functionDepth: 0
    functionLinenumber: 331
    functionLinenumberEnd: 345
    functionName: MDBROTransactionImpl::openROTransaction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc
    functionUses: 0
    functionsReached:
    - MDBEnv*::getRWTX
    - MDBError
    - mdb_txn_begin
    - std::runtime_error
    linkageType: ''
    returnType: MDB_txn
    signature: MDB_txn *MDBROTransactionImpl::openROTransaction(MDBEnv *env, MDB_txn
      *parent, int flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::swap
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc:351,1
    - Dst: close
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc:353,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 355
      start: 347
    functionDepth: 0
    functionLinenumber: 347
    functionLinenumberEnd: 355
    functionName: MDBROTransactionImpl::closeROCursors
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc
    functionUses: 0
    functionsReached:
    - std::swap
    - close
    linkageType: ''
    returnType: void
    signature: void MDBROTransactionImpl::closeROCursors()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MDBROTransactionImpl::openROTransaction
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc:358,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - parent
    - flags
    argTypes:
    - MDBEnv*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 361
      start: 357
    functionDepth: 0
    functionLinenumber: 357
    functionLinenumberEnd: 361
    functionName: MDBROTransactionImpl::MDBROTransactionImpl
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc
    functionUses: 0
    functionsReached:
    - MDBROTransactionImpl::openROTransaction
    linkageType: ''
    returnType: void
    signature: void MDBROTransactionImpl::MDBROTransactionImpl(MDBEnv *parent, int
      flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MDBROTransactionImpl::commit
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc:366,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 367
      start: 363
    functionDepth: 0
    functionLinenumber: 363
    functionLinenumberEnd: 367
    functionName: MDBROTransactionImpl::~MDBROTransactionImpl()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc
    functionUses: 0
    functionsReached:
    - MDBROTransactionImpl::commit
    linkageType: ''
    returnType: void
    signature: void MDBROTransactionImpl::~MDBROTransactionImpl()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: MDBROTransactionImpl::closeROCursors
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc:371,1
    - Dst: mdb_txn_abort
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc:374,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 377
      start: 369
    functionDepth: 0
    functionLinenumber: 369
    functionLinenumberEnd: 377
    functionName: MDBROTransactionImpl::abort
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc
    functionUses: 0
    functionsReached:
    - mdb_txn_abort
    - MDBROTransactionImpl::closeROCursors
    linkageType: ''
    returnType: void
    signature: void MDBROTransactionImpl::abort()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: MDBROTransactionImpl::closeROCursors
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc:381,1
    - Dst: mdb_txn_commit
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc:384,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 387
      start: 379
    functionDepth: 0
    functionLinenumber: 379
    functionLinenumberEnd: 387
    functionName: MDBROTransactionImpl::commit
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc
    functionUses: 1
    functionsReached:
    - mdb_txn_commit
    - MDBROTransactionImpl::closeROCursors
    linkageType: ''
    returnType: void
    signature: void MDBROTransactionImpl::commit()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mdb_drop
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc:393,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc:394,1
    - Dst: MDBError
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc:394,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - dbi
    argTypes:
    - MDB_dbi
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 396
      start: 391
    functionDepth: 0
    functionLinenumber: 391
    functionLinenumberEnd: 396
    functionName: MDBRWTransactionImpl::clear
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc
    functionUses: 0
    functionsReached:
    - MDBError
    - mdb_drop
    - runtime_error
    linkageType: ''
    returnType: void
    signature: void MDBRWTransactionImpl::clear(MDB_dbi dbi)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mdb_cursor_open
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc:401,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc:403,1
    - Dst: MDBError
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc:403,1
    - Dst: MDBRWCursor
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc:406,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - ' dbi'
    argTypes:
    - MDBDbi
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 407
      start: 398
    functionDepth: 0
    functionLinenumber: 398
    functionLinenumberEnd: 407
    functionName: MDBRWTransactionImpl::getRWCursor
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc
    functionUses: 0
    functionsReached:
    - mdb_cursor_open
    - MDBError
    - MDBRWCursor
    - std::runtime_error
    linkageType: ''
    returnType: MDBRWCursor
    signature: MDBRWCursor MDBRWTransactionImpl::getRWCursor(const MDBDbi& dbi)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MDBRWTransactionImpl::getRWCursor
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc:411,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - dbi
    argTypes:
    - MDBDbi
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 412
      start: 409
    functionDepth: 0
    functionLinenumber: 409
    functionLinenumberEnd: 412
    functionName: MDBRWTransactionImpl::getCursor
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc
    functionUses: 0
    functionsReached:
    - MDBRWTransactionImpl::getRWCursor
    linkageType: ''
    returnType: MDBRWCursor
    signature: MDBRWCursor MDBRWTransactionImpl::getCursor(const MDBDbi &dbi)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mdb_txn_begin
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc:417,1
    - Dst: environment
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc:417,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc:418,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc:418,1
    - Dst: MDBError
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc:418,1
    - Dst: environment
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc:421,1
    - Dst: MDBRWTransaction
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc:422,1
    - Dst: environment
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc:422,1
    - Dst: MDBRWTransactionImpl::MDBRWTransactionImpl
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc:422,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 423
      start: 414
    functionDepth: 0
    functionLinenumber: 414
    functionLinenumberEnd: 423
    functionName: MDBRWTransactionImpl::getRWTransaction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc
    functionUses: 0
    functionsReached:
    - std::runtime_error
    - MDBRWTransactionImpl::MDBRWTransactionImpl
    - MDBError
    - mdb_txn_begin
    - environment
    - std::string
    - MDBRWTransaction
    linkageType: ''
    returnType: MDBRWTransaction
    signature: MDBRWTransaction MDBRWTransactionImpl::getRWTransaction()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MDBRWTransactionImpl::getRWTransaction
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc:427,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 428
      start: 425
    functionDepth: 0
    functionLinenumber: 425
    functionLinenumberEnd: 428
    functionName: MDBRWTransactionImpl::getROTransaction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc
    functionUses: 0
    functionsReached:
    - MDBRWTransactionImpl::getRWTransaction
    linkageType: ''
    returnType: MDBROTransaction
    signature: MDBROTransaction MDBRWTransactionImpl::getROTransaction()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MDBROTransaction
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc:432,1
    - Dst: MDBROTransactionImpl::MDBROTransactionImpl
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc:432,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 433
      start: 430
    functionDepth: 0
    functionLinenumber: 430
    functionLinenumberEnd: 433
    functionName: MDBEnv::getROTransaction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc
    functionUses: 1
    functionsReached:
    - MDBROTransactionImpl::MDBROTransactionImpl
    - MDBROTransaction
    linkageType: ''
    returnType: MDBROTransaction
    signature: MDBROTransaction MDBEnv::getROTransaction()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MDBRWTransaction
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc:436,1
    - Dst: MDBRWTransactionImpl::MDBRWTransactionImpl
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc:436,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 437
      start: 434
    functionDepth: 0
    functionLinenumber: 434
    functionLinenumberEnd: 437
    functionName: MDBEnv::getRWTransaction
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc
    functionUses: 2
    functionsReached:
    - MDBRWTransactionImpl::MDBRWTransactionImpl
    - MDBRWTransaction
    linkageType: ''
    returnType: MDBRWTransaction
    signature: MDBRWTransaction MDBEnv::getRWTransaction()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::swap
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc:443,1
    - Dst: close
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc:445,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 447
      start: 440
    functionDepth: 0
    functionLinenumber: 440
    functionLinenumberEnd: 447
    functionName: MDBRWTransactionImpl::closeRWCursors
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc
    functionUses: 0
    functionsReached:
    - std::swap
    - close
    linkageType: ''
    returnType: void
    signature: void MDBRWTransactionImpl::closeRWCursors()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MDBROTransactionImpl::getROCursor
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc:451,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' dbi'
    argTypes:
    - MDBDbi
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 452
      start: 449
    functionDepth: 0
    functionLinenumber: 449
    functionLinenumberEnd: 452
    functionName: MDBROTransactionImpl::getCursor
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc
    functionUses: 0
    functionsReached:
    - MDBROTransactionImpl::getROCursor
    linkageType: ''
    returnType: MDBROCursor
    signature: MDBROCursor MDBROTransactionImpl::getCursor(const MDBDbi& dbi)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mdb_cursor_open
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc:457,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc:459,1
    - Dst: MDBError
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc:459,1
    - Dst: MDBROCursor
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc:461,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - dbi
    argTypes:
    - MDBDbi
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 462
      start: 454
    functionDepth: 0
    functionLinenumber: 454
    functionLinenumberEnd: 462
    functionName: MDBROTransactionImpl::getROCursor
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc
    functionUses: 1
    functionsReached:
    - mdb_cursor_open
    - MDBError
    - MDBROCursor
    - std::runtime_error
    linkageType: ''
    returnType: MDBROCursor
    signature: MDBROCursor MDBROTransactionImpl::getROCursor(const MDBDbi &dbi)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mdb_strerror
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:39,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ret
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 37
    functionDepth: 0
    functionLinenumber: 37
    functionLinenumberEnd: 40
    functionName: MDBError
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 10
    functionsReached:
    - mdb_strerror
    linkageType: ''
    returnType: string
    signature: string MDBError(int ret)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 64
    functionDepth: 0
    functionLinenumber: 64
    functionLinenumberEnd: 66
    functionName: MDBDbi::MDBDbi
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void MDBDbi()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 69
    functionDepth: 0
    functionLinenumber: 69
    functionLinenumberEnd: 72
    functionName: operator const MDB_dbi&() const
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void operator const MDB_dbi&() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mdb_env_close
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:95,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 91
    functionDepth: 0
    functionLinenumber: 91
    functionLinenumberEnd: 97
    functionName: ~MDBEnv()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 0
    functionsReached:
    - mdb_env_close
    linkageType: ''
    returnType: void
    signature: void ~MDBEnv()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 107
      start: 104
    functionDepth: 0
    functionLinenumber: 104
    functionLinenumberEnd: 107
    functionName: operator MDB_env*& ()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void operator MDB_env*& ()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: __builtin_bswap64
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:138,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 3
    argCount: 1
    argNames:
    - value
    argTypes:
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 142
      start: 130
    functionDepth: 0
    functionLinenumber: 130
    functionLinenumberEnd: 142
    functionName: LMDBLS::LSheader::pdns_bswap64
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 0
    functionsReached:
    - __builtin_bswap64
    linkageType: ''
    returnType: auto
    signature: auto pdns_bswap64(uint64_t value) -> uint64_t
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LMDBLS::LSheader::pdns_bswap64
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:154,1
    - Dst: LMDBLS::LSheader::pdns_bswap64
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:155,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:158,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - timestamp
    - txnid
    argTypes:
    - uint64_t
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 160
      start: 153
    functionDepth: 0
    functionLinenumber: 153
    functionLinenumberEnd: 160
    functionName: LMDBLS::LSheader::LSheader
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 0
    functionsReached:
    - LMDBLS::LSheader::pdns_bswap64
    - htons
    linkageType: ''
    returnType: void
    signature: void LSheader(uint64_t timestamp, uint64_t txnid, uint8_t flags = 0,
      uint8_t version = 0, uint8_t numextra = 0)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:163,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:163,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:163,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 164
      start: 162
    functionDepth: 0
    functionLinenumber: 162
    functionLinenumberEnd: 164
    functionName: LMDBLS::LSheader::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 0
    functionsReached:
    - std::string
    - ntohs
    linkageType: ''
    returnType: std::string
    signature: std::string toString()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LMDBLS::LSheader::pdns_bswap64
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:167,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 168
      start: 166
    functionDepth: 0
    functionLinenumber: 166
    functionLinenumberEnd: 168
    functionName: LMDBLS::LSheader::getTimestamp
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 0
    functionsReached:
    - LMDBLS::LSheader::pdns_bswap64
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t getTimestamp() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: __builtin_bswap64
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:138,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 3
    argCount: 1
    argNames:
    - value
    argTypes:
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 142
      start: 130
    functionDepth: 0
    functionLinenumber: 130
    functionLinenumberEnd: 142
    functionName: LMDBLS::LSheader::pdns_bswap64
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 2
    functionsReached:
    - __builtin_bswap64
    linkageType: ''
    returnType: auto
    signature: auto pdns_bswap64(uint64_t value) -> uint64_t
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LMDBLS::LSheader::pdns_bswap64
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:154,1
    - Dst: LMDBLS::LSheader::pdns_bswap64
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:155,1
    - Dst: htons
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:158,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - timestamp
    - txnid
    argTypes:
    - uint64_t
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 160
      start: 153
    functionDepth: 0
    functionLinenumber: 153
    functionLinenumberEnd: 160
    functionName: LMDBLS::LSheader::LSheader
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 0
    functionsReached:
    - LMDBLS::LSheader::pdns_bswap64
    - htons
    linkageType: ''
    returnType: void
    signature: void LSheader(uint64_t timestamp, uint64_t txnid, uint8_t flags = 0,
      uint8_t version = 0, uint8_t numextra = 0)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:163,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:163,1
    - Dst: ntohs
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:163,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 164
      start: 162
    functionDepth: 0
    functionLinenumber: 162
    functionLinenumberEnd: 164
    functionName: LMDBLS::LSheader::toString
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 0
    functionsReached:
    - std::string
    - ntohs
    linkageType: ''
    returnType: std::string
    signature: std::string toString()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LMDBLS::LSheader::pdns_bswap64
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:167,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 168
      start: 166
    functionDepth: 0
    functionLinenumber: 166
    functionLinenumberEnd: 168
    functionName: LMDBLS::LSheader::getTimestamp
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 0
    functionsReached:
    - LMDBLS::LSheader::pdns_bswap64
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t getTimestamp() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: htonl
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:198,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - value
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 199
      start: 196
    functionDepth: 0
    functionLinenumber: 196
    functionLinenumberEnd: 199
    functionName: hostToNetworkByteOrder
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 0
    functionsReached:
    - htonl
    linkageType: ''
    returnType: auto
    signature: auto hostToNetworkByteOrder(uint32_t value) -> uint32_t
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ntohl
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:204,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - value
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 205
      start: 202
    functionDepth: 0
    functionLinenumber: 202
    functionLinenumberEnd: 205
    functionName: networkToHostByteOrder
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 0
    functionsReached:
    - ntohl
    linkageType: ''
    returnType: auto
    signature: auto networkToHostByteOrder(uint32_t value) -> uint32_t
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 212
      start: 209
    functionDepth: 0
    functionLinenumber: 209
    functionLinenumberEnd: 212
    functionName: operator MDB_val&()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void operator MDB_val&()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LMDBLS::LScheckHeaderAndGetSize
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:230,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:232,1
    - Dst: static_cast<const char*>
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:232,1
    - Dst: networkToHostByteOrder
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:233,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 235
      start: 227
    functionDepth: 0
    functionLinenumber: 227
    functionLinenumberEnd: 235
    functionName: MDBOutVal::get
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 2
    functionsReached:
    - networkToHostByteOrder
    - memcpy
    - LMDBLS::LScheckHeaderAndGetSize
    - static_cast<const char*>
    linkageType: ''
    returnType: T
    signature: T MDBOutVal::get() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:242,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:245,1
    - Dst: networkToHostByteOrder
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:246,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 248
      start: 238
    functionDepth: 0
    functionLinenumber: 238
    functionLinenumberEnd: 248
    functionName: MDBOutVal::getNoStripHeader
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 0
    functionsReached:
    - networkToHostByteOrder
    - memcpy
    - std::runtime_error
    linkageType: ''
    returnType: T
    signature: T MDBOutVal::getNoStripHeader() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<char*>
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:256,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 257
      start: 254
    functionDepth: 0
    functionLinenumber: 254
    functionLinenumberEnd: 257
    functionName: MDBOutVal::get<std::string>() const
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 0
    functionsReached:
    - static_cast<char*>
    linkageType: ''
    returnType: std::string
    signature: std::string MDBOutVal::get<std::string>() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<char*>
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:262,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 263
      start: 260
    functionDepth: 0
    functionLinenumber: 260
    functionLinenumberEnd: 263
    functionName: MDBOutVal::get<std::string_view>() const
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 0
    functionsReached:
    - static_cast<char*>
    linkageType: ''
    returnType: std::string_view
    signature: std::string_view MDBOutVal::get<std::string_view>() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LMDBLS::LScheckHeaderAndGetSize
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:270,1
    - Dst: static_cast<char*>
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:272,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 273
      start: 268
    functionDepth: 0
    functionLinenumber: 268
    functionLinenumberEnd: 273
    functionName: MDBOutVal::get<std::string>() const
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 0
    functionsReached:
    - static_cast<char*>
    - LMDBLS::LScheckHeaderAndGetSize
    linkageType: ''
    returnType: std::string
    signature: std::string MDBOutVal::get<std::string>() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LMDBLS::LScheckHeaderAndGetSize
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:278,1
    - Dst: static_cast<char*>
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:280,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 281
      start: 276
    functionDepth: 0
    functionLinenumber: 276
    functionLinenumberEnd: 281
    functionName: MDBOutVal::get<std::string_view>() const
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 0
    functionsReached:
    - static_cast<char*>
    - LMDBLS::LScheckHeaderAndGetSize
    linkageType: ''
    returnType: std::string_view
    signature: std::string_view MDBOutVal::get<std::string_view>() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<char*>
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:286,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 287
      start: 284
    functionDepth: 0
    functionLinenumber: 284
    functionLinenumberEnd: 287
    functionName: MDBOutVal::getNoStripHeader<std::string>() const
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 0
    functionsReached:
    - static_cast<char*>
    linkageType: ''
    returnType: std::string
    signature: std::string MDBOutVal::getNoStripHeader<std::string>() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<char*>
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:292,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 293
      start: 290
    functionDepth: 0
    functionLinenumber: 290
    functionLinenumberEnd: 293
    functionName: MDBOutVal::getNoStripHeader<std::string_view>() const
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 0
    functionsReached:
    - static_cast<char*>
    linkageType: ''
    returnType: std::string_view
    signature: std::string_view MDBOutVal::getNoStripHeader<std::string_view>() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - MDBOutVal
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 303
      start: 300
    functionDepth: 0
    functionLinenumber: 300
    functionLinenumberEnd: 303
    functionName: MDBInVal::MDBInVal
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void MDBInVal(const MDBOutVal& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hostToNetworkByteOrder
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:309,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:311,1
    - Dst: static_cast<void*>
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:313,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - rhs
    argTypes:
    - T
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 314
      start: 307
    functionDepth: 0
    functionLinenumber: 307
    functionLinenumberEnd: 314
    functionName: MDBInVal::MDBInVal
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 0
    functionsReached:
    - hostToNetworkByteOrder
    - static_cast<void*>
    - memcpy
    linkageType: ''
    returnType: void
    signature: void MDBInVal(T rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:319,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - rhs
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 321
      start: 317
    functionDepth: 0
    functionLinenumber: 317
    functionLinenumberEnd: 321
    functionName: MDBInVal::MDBInVal
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 0
    functionsReached:
    - strlen
    linkageType: ''
    returnType: void
    signature: void MDBInVal(const char* rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:325,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:326,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 327
      start: 323
    functionDepth: 0
    functionLinenumber: 323
    functionLinenumberEnd: 327
    functionName: MDBInVal::MDBInVal
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 0
    functionsReached:
    - size
    - data
    linkageType: ''
    returnType: void
    signature: void MDBInVal(const string_view& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:331,1
    - Dst: data
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:332,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 333
      start: 329
    functionDepth: 0
    functionLinenumber: 329
    functionLinenumberEnd: 333
    functionName: MDBInVal::MDBInVal
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 0
    functionsReached:
    - size
    - data
    linkageType: ''
    returnType: void
    signature: void MDBInVal(const std::string& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MDBInVal::MDBInVal
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:338,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - T
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 342
      start: 336
    functionDepth: 0
    functionLinenumber: 336
    functionLinenumberEnd: 342
    functionName: MDBInVal::fromStruct
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 0
    functionsReached:
    - MDBInVal::MDBInVal
    linkageType: ''
    returnType: MDBInVal
    signature: MDBInVal fromStruct(const T& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 350
      start: 347
    functionDepth: 0
    functionLinenumber: 347
    functionLinenumberEnd: 350
    functionName: operator MDB_val&()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void operator MDB_val&()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 356
      start: 356
    functionDepth: 0
    functionLinenumber: 356
    functionLinenumberEnd: 356
    functionName: MDBInVal::MDBInVal
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void MDBInVal()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<char*>
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:366,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 367
      start: 364
    functionDepth: 0
    functionLinenumber: 364
    functionLinenumberEnd: 367
    functionName: MDBInVal::get<std::string>() const
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 0
    functionsReached:
    - static_cast<char*>
    linkageType: ''
    returnType: std::string
    signature: std::string MDBInVal::get<std::string>() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 1
    argNames:
    - ' src'
    argTypes:
    - MDBROTransactionImpl
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 390
      start: 390
    functionDepth: 0
    functionLinenumber: 390
    functionLinenumberEnd: 390
    functionName: MDBROTransactionImpl::MDBROTransactionImpl
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void MDBROTransactionImpl(const MDBROTransactionImpl& src)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 1
    argNames:
    - ' src'
    argTypes:
    - MDBROTransactionImpl
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 391
      start: 391
    functionDepth: 0
    functionLinenumber: 391
    functionLinenumberEnd: 391
    functionName: '&operator=(const MDBROTransactionImpl& src)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: MDBROTransactionImpl
    signature: MDBROTransactionImpl &operator=(const MDBROTransactionImpl& src)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - MDBROTransactionImpl
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 394
      start: 394
    functionDepth: 0
    functionLinenumber: 394
    functionLinenumberEnd: 394
    functionName: MDBROTransactionImpl::MDBROTransactionImpl
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void MDBROTransactionImpl(MDBROTransactionImpl&& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 1
    argNames:
    - rhs
    argTypes:
    - MDBROTransactionImpl
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 395
      start: 395
    functionDepth: 0
    functionLinenumber: 395
    functionLinenumberEnd: 395
    functionName: '&operator=(MDBROTransactionImpl &&rhs)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: MDBROTransactionImpl
    signature: MDBROTransactionImpl &operator=(MDBROTransactionImpl &&rhs)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:405,1
    - Dst: mdb_get
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:407,1
    - Dst: const_cast<MDB_val*>
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:407,1
    - Dst: const_cast<MDB_val*>
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:408,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:411,1
    - Dst: MDBError
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:411,1
    - Dst: getNoStripHeader
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:416,1
    - Dst: LMDBLS::LSisDeleted
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:417,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 12
    argCount: 3
    argNames:
    - dbi
    - ' key'
    - ' val'
    argTypes:
    - MDB_dbi
    - MDBInVal
    - MDBOutVal
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 424
      start: 402
    functionDepth: 0
    functionLinenumber: 402
    functionLinenumberEnd: 424
    functionName: MDBROTransactionImpl::get
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 0
    functionsReached:
    - std::runtime_error
    - MDBError
    - getNoStripHeader
    - const_cast<MDB_val*>
    - LMDBLS::LSisDeleted
    - mdb_get
    linkageType: ''
    returnType: int
    signature: int get(MDB_dbi dbi, const MDBInVal& key, MDBOutVal& val)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: MDBROTransactionImpl::get
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:429,1
    - Dst: MDBOutVal::get
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:431,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - dbi
    - ' key'
    - ' val'
    argTypes:
    - MDB_dbi
    - MDBInVal
    - string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 433
      start: 426
    functionDepth: 0
    functionLinenumber: 426
    functionLinenumberEnd: 433
    functionName: MDBROTransactionImpl::get
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 1
    functionsReached:
    - MDBROTransactionImpl::get
    - MDBOutVal::get
    linkageType: ''
    returnType: int
    signature: int get(MDB_dbi dbi, const MDBInVal& key, string_view& val)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MDBDbi
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:439,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - dbname
    - flags
    argTypes:
    - string_view
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 440
      start: 437
    functionDepth: 0
    functionLinenumber: 437
    functionLinenumberEnd: 440
    functionName: MDBROTransactionImpl::openDB
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 0
    functionsReached:
    - MDBDbi
    linkageType: ''
    returnType: MDBDbi
    signature: MDBDbi openDB(string_view dbname, int flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 448
      start: 445
    functionDepth: 0
    functionLinenumber: 445
    functionLinenumberEnd: 448
    functionName: operator MDB_txn*()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void operator MDB_txn*()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 452
      start: 450
    functionDepth: 0
    functionLinenumber: 450
    functionLinenumberEnd: 452
    functionName: operator bool() const
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void operator bool() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 457
      start: 454
    functionDepth: 0
    functionLinenumber: 454
    functionLinenumberEnd: 457
    functionName: '&environment()'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: MDBEnv
    signature: MDBEnv &environment()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 483
      start: 477
    functionDepth: 0
    functionLinenumber: 477
    functionLinenumberEnd: 483
    functionName: MDBGenCursor::MDBGenCursor
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void MDBGenCursor()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::vector<T*>::emplace_back
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:491,1
    - Dst: static_cast<T*>
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:491,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - registry
    - cursor
    argTypes:
    - std::vector<T*>
    - MDB_cursor*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 492
      start: 485
    functionDepth: 0
    functionLinenumber: 485
    functionLinenumberEnd: 492
    functionName: MDBGenCursor::MDBGenCursor
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 0
    functionsReached:
    - static_cast<T*>
    - std::vector<T*>::emplace_back
    linkageType: ''
    returnType: void
    signature: void MDBGenCursor(std::vector<T*> &registry, MDB_cursor *cursor, MDB_txn
      *txn=nullptr, uint64_t txtime=0)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: MDBGenCursor::find
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:501,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:501,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:502,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:504,1
    - Dst: static_cast<T*>
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:505,1
    - Dst: emplace_back
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:507,1
    - Dst: static_cast<T*>
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:507,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - src
    argTypes:
    - MDBGenCursor*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 509
      start: 495
    functionDepth: 0
    functionLinenumber: 495
    functionLinenumberEnd: 509
    functionName: MDBGenCursor::move_from
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 0
    functionsReached:
    - end
    - static_cast<T*>
    - emplace_back
    - begin
    - MDBGenCursor::find
    linkageType: ''
    returnType: void
    signature: void move_from(MDBGenCursor *src)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 1
    argNames:
    - src
    argTypes:
    - MDBGenCursor
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 512
      start: 512
    functionDepth: 0
    functionLinenumber: 512
    functionLinenumberEnd: 512
    functionName: MDBGenCursor::MDBGenCursor
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void MDBGenCursor(const MDBGenCursor &src)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MDBGenCursor::move_from
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:518,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - src
    argTypes:
    - MDBGenCursor
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 521
      start: 514
    functionDepth: 0
    functionLinenumber: 514
    functionLinenumberEnd: 521
    functionName: MDBGenCursor::MDBGenCursor
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 0
    functionsReached:
    - MDBGenCursor::move_from
    linkageType: ''
    returnType: void
    signature: void MDBGenCursor(MDBGenCursor &&src) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 1
    argNames:
    - src
    argTypes:
    - MDBGenCursor
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 523
      start: 523
    functionDepth: 0
    functionLinenumber: 523
    functionLinenumberEnd: 523
    functionName: '&operator=(const MDBGenCursor &src)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: MDBGenCursor
    signature: MDBGenCursor &operator=(const MDBGenCursor &src)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: move_from
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:529,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - src
    argTypes:
    - MDBGenCursor
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 533
      start: 525
    functionDepth: 0
    functionLinenumber: 525
    functionLinenumberEnd: 533
    functionName: '&operator=(MDBGenCursor &&src) noexcept'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 0
    functionsReached:
    - move_from
    linkageType: ''
    returnType: MDBGenCursor
    signature: MDBGenCursor &operator=(MDBGenCursor &&src) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: close
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:537,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 538
      start: 535
    functionDepth: 0
    functionLinenumber: 535
    functionLinenumberEnd: 538
    functionName: ~MDBGenCursor()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 0
    functionsReached:
    - close
    linkageType: ''
    returnType: void
    signature: void ~MDBGenCursor()
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: getNoStripHeader
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:580,1
    - Dst: length
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:581,1
    - Dst: getNoStripHeader
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:581,1
    - Dst: LMDBLS::LSisDeleted
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:585,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:608,1
    - Dst: mdb_cursor_get
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:611,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:613,1
    - Dst: MDBError
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:613,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 34
    argCount: 4
    argNames:
    - ' key'
    - ' data'
    - op
    - rc
    argTypes:
    - MDBOutVal
    - MDBOutVal
    - MDB_cursor_op
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 632
      start: 561
    functionDepth: 0
    functionLinenumber: 561
    functionLinenumberEnd: 632
    functionName: MDBGenCursor::skipDeleted
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 0
    functionsReached:
    - length
    - std::runtime_error
    - MDBError
    - getNoStripHeader
    - mdb_cursor_get
    - LMDBLS::LSisDeleted
    linkageType: ''
    returnType: int
    signature: int skipDeleted(MDBOutVal& key, MDBOutVal& data, MDB_cursor_op op,
      int rc)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: clear
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:637,1
    - Dst: mdb_cursor_get
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:638,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:640,1
    - Dst: MDBError
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:640,1
    - Dst: MDBGenCursor::skipDeleted
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:642,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 3
    argNames:
    - ' key'
    - ' data'
    - op
    argTypes:
    - MDBOutVal
    - MDBOutVal
    - MDB_cursor_op
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 643
      start: 635
    functionDepth: 1
    functionLinenumber: 635
    functionLinenumberEnd: 643
    functionName: MDBGenCursor::get
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 0
    functionsReached:
    - std::runtime_error
    - MDBError
    - mdb_cursor_get
    - clear
    - MDBGenCursor::skipDeleted
    linkageType: ''
    returnType: int
    signature: int get(MDBOutVal& key, MDBOutVal& data, MDB_cursor_op op)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: clear
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:647,1
    - Dst: mdb_cursor_get
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:649,1
    - Dst: const_cast<MDB_val*>
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:649,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:651,1
    - Dst: MDBError
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:651,1
    - Dst: MDBGenCursor::skipDeleted
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:653,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 3
    argNames:
    - ' in'
    - ' key'
    - ' data'
    argTypes:
    - MDBInVal
    - MDBOutVal
    - MDBOutVal
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 654
      start: 645
    functionDepth: 1
    functionLinenumber: 645
    functionLinenumberEnd: 654
    functionName: MDBGenCursor::find
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 1
    functionsReached:
    - std::runtime_error
    - MDBError
    - mdb_cursor_get
    - const_cast<MDB_val*>
    - clear
    - MDBGenCursor::skipDeleted
    linkageType: ''
    returnType: int
    signature: int find(const MDBInVal& in, MDBOutVal& key, MDBOutVal& data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MDBGenCursor::get
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:658,1
    - Dst: MDBGenCursor::_lower_bound
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:659,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - ' in'
    - ' key'
    - ' data'
    argTypes:
    - MDBInVal
    - MDBOutVal
    - MDBOutVal
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 660
      start: 656
    functionDepth: 0
    functionLinenumber: 656
    functionLinenumberEnd: 660
    functionName: MDBGenCursor::prefix
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 0
    functionsReached:
    - MDBGenCursor::get
    - MDBGenCursor::_lower_bound
    linkageType: ''
    returnType: int
    signature: int prefix(const MDBInVal& in, MDBOutVal& key, MDBOutVal& data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: clear
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:664,1
    - Dst: MDBGenCursor::_lower_bound
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:665,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - ' in'
    - ' key'
    - ' data'
    argTypes:
    - MDBInVal
    - MDBOutVal
    - MDBOutVal
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 666
      start: 662
    functionDepth: 1
    functionLinenumber: 662
    functionLinenumberEnd: 666
    functionName: MDBGenCursor::lower_bound
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 0
    functionsReached:
    - clear
    - MDBGenCursor::_lower_bound
    linkageType: ''
    returnType: int
    signature: int lower_bound(const MDBInVal& in, MDBOutVal& key, MDBOutVal& data)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mdb_cursor_get
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:672,1
    - Dst: const_cast<MDB_val*>
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:672,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:674,1
    - Dst: MDBError
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:674,1
    - Dst: MDBGenCursor::skipDeleted
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:676,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 3
    argNames:
    - ' in'
    - ' key'
    - ' data'
    argTypes:
    - MDBInVal
    - MDBOutVal
    - MDBOutVal
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 677
      start: 668
    functionDepth: 0
    functionLinenumber: 668
    functionLinenumberEnd: 677
    functionName: MDBGenCursor::_lower_bound
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 2
    functionsReached:
    - std::runtime_error
    - MDBError
    - mdb_cursor_get
    - const_cast<MDB_val*>
    - MDBGenCursor::skipDeleted
    linkageType: ''
    returnType: int
    signature: int _lower_bound(const MDBInVal& in, MDBOutVal& key, MDBOutVal& data)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mdb_cursor_get
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:682,1
    - Dst: const_cast<MDB_val*>
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:682,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:684,1
    - Dst: MDBError
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:684,1
    - Dst: MDBGenCursor::skipDeleted
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:686,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 5
    argCount: 3
    argNames:
    - ' key'
    - ' data'
    - op
    argTypes:
    - MDBOutVal
    - MDBOutVal
    - MDB_cursor_op
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 687
      start: 680
    functionDepth: 0
    functionLinenumber: 680
    functionLinenumberEnd: 687
    functionName: MDBGenCursor::nextprev
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 0
    functionsReached:
    - std::runtime_error
    - MDBError
    - mdb_cursor_get
    - const_cast<MDB_val*>
    - MDBGenCursor::skipDeleted
    linkageType: ''
    returnType: int
    signature: int nextprev(MDBOutVal& key, MDBOutVal& data, MDB_cursor_op op)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MDBGenCursor::nextprev
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:691,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' key'
    - ' data'
    argTypes:
    - MDBOutVal
    - MDBOutVal
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 692
      start: 689
    functionDepth: 0
    functionLinenumber: 689
    functionLinenumberEnd: 692
    functionName: MDBGenCursor::next
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 1
    functionsReached:
    - MDBGenCursor::nextprev
    linkageType: ''
    returnType: int
    signature: int next(MDBOutVal& key, MDBOutVal& data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MDBGenCursor::nextprev
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:696,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' key'
    - ' data'
    argTypes:
    - MDBOutVal
    - MDBOutVal
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 697
      start: 694
    functionDepth: 0
    functionLinenumber: 694
    functionLinenumberEnd: 697
    functionName: MDBGenCursor::prev
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 0
    functionsReached:
    - MDBGenCursor::nextprev
    linkageType: ''
    returnType: int
    signature: int prev(MDBOutVal& key, MDBOutVal& data)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mdb_cursor_get
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:701,1
    - Dst: const_cast<MDB_val*>
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:701,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:703,1
    - Dst: MDBError
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:703,1
    - Dst: MDBGenCursor::skipDeleted
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:705,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 5
    argCount: 3
    argNames:
    - ' key'
    - ' data'
    - op
    argTypes:
    - MDBOutVal
    - MDBOutVal
    - MDB_cursor_op
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 706
      start: 699
    functionDepth: 0
    functionLinenumber: 699
    functionLinenumberEnd: 706
    functionName: MDBGenCursor::currentlast
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 0
    functionsReached:
    - std::runtime_error
    - MDBError
    - mdb_cursor_get
    - const_cast<MDB_val*>
    - MDBGenCursor::skipDeleted
    linkageType: ''
    returnType: int
    signature: int currentlast(MDBOutVal& key, MDBOutVal& data, MDB_cursor_op op)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MDBGenCursor::currentlast
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:710,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' key'
    - ' data'
    argTypes:
    - MDBOutVal
    - MDBOutVal
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 711
      start: 708
    functionDepth: 0
    functionLinenumber: 708
    functionLinenumberEnd: 711
    functionName: MDBGenCursor::current
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 0
    functionsReached:
    - MDBGenCursor::currentlast
    linkageType: ''
    returnType: int
    signature: int current(MDBOutVal& key, MDBOutVal& data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MDBGenCursor::currentlast
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:714,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' key'
    - ' data'
    argTypes:
    - MDBOutVal
    - MDBOutVal
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 715
      start: 712
    functionDepth: 0
    functionLinenumber: 712
    functionLinenumberEnd: 715
    functionName: MDBGenCursor::last
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 0
    functionsReached:
    - MDBGenCursor::currentlast
    linkageType: ''
    returnType: int
    signature: int last(MDBOutVal& key, MDBOutVal& data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MDBGenCursor::currentlast
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:718,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' key'
    - ' data'
    argTypes:
    - MDBOutVal
    - MDBOutVal
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 719
      start: 716
    functionDepth: 0
    functionLinenumber: 716
    functionLinenumberEnd: 719
    functionName: MDBGenCursor::first
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 0
    functionsReached:
    - MDBGenCursor::currentlast
    linkageType: ''
    returnType: int
    signature: int first(MDBOutVal& key, MDBOutVal& data)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 724
      start: 721
    functionDepth: 0
    functionLinenumber: 721
    functionLinenumberEnd: 724
    functionName: operator MDB_cursor*()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void operator MDB_cursor*()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 729
      start: 726
    functionDepth: 0
    functionLinenumber: 726
    functionLinenumberEnd: 729
    functionName: operator bool() const
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void operator bool() const
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: MDBGenCursor::find
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:734,1
    - Dst: begin
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:734,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:735,1
    - Dst: static_cast<T*>
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:736,1
    - Dst: end
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:737,1
    - Dst: erase
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:738,1
    - Dst: mdb_cursor_close
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:743,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 746
      start: 731
    functionDepth: 0
    functionLinenumber: 731
    functionLinenumberEnd: 746
    functionName: MDBGenCursor::close
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 0
    functionsReached:
    - mdb_cursor_close
    - end
    - static_cast<T*>
    - begin
    - MDBGenCursor::find
    - erase
    linkageType: ''
    returnType: void
    signature: void close()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 752
      start: 752
    functionDepth: 0
    functionLinenumber: 752
    functionLinenumberEnd: 752
    functionName: MDBROCursor::MDBROCursor
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void MDBROCursor()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 1
    argNames:
    - ' src'
    argTypes:
    - MDBROCursor
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 754
      start: 754
    functionDepth: 0
    functionLinenumber: 754
    functionLinenumberEnd: 754
    functionName: MDBROCursor::MDBROCursor
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void MDBROCursor(const MDBROCursor& src)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 1
    argNames:
    - ' src'
    argTypes:
    - MDBROCursor
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 755
      start: 755
    functionDepth: 0
    functionLinenumber: 755
    functionLinenumberEnd: 755
    functionName: MDBROCursor::MDBROCursor
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void MDBROCursor(MDBROCursor&& src)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 1
    argNames:
    - ' src'
    argTypes:
    - MDBROCursor
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 756
      start: 756
    functionDepth: 0
    functionLinenumber: 756
    functionLinenumberEnd: 756
    functionName: '& operator=(const MDBROCursor& src)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: MDBROCursor
    signature: MDBROCursor & operator=(const MDBROCursor& src)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 1
    argNames:
    - ' src'
    argTypes:
    - MDBROCursor
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 757
      start: 757
    functionDepth: 0
    functionLinenumber: 757
    functionLinenumberEnd: 757
    functionName: '& operator=(MDBROCursor&& src)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: MDBROCursor
    signature: MDBROCursor & operator=(MDBROCursor&& src)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 758
      start: 758
    functionDepth: 0
    functionLinenumber: 758
    functionLinenumberEnd: 758
    functionName: ~MDBROCursor()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~MDBROCursor()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: closeROCursors
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:778,1
    - Dst: MDBRWTransactionImpl::closeRWCursors
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:779,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 780
      start: 776
    functionDepth: 0
    functionLinenumber: 776
    functionLinenumberEnd: 780
    functionName: MDBRWTransactionImpl::closeRORWCursors
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 2
    functionsReached:
    - closeROCursors
    - MDBRWTransactionImpl::closeRWCursors
    linkageType: ''
    returnType: void
    signature: void closeRORWCursors()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - MDBRWTransactionImpl
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 785
      start: 785
    functionDepth: 0
    functionLinenumber: 785
    functionLinenumberEnd: 785
    functionName: MDBRWTransactionImpl::MDBRWTransactionImpl
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void MDBRWTransactionImpl(const MDBRWTransactionImpl& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - MDBRWTransactionImpl
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 786
      start: 786
    functionDepth: 0
    functionLinenumber: 786
    functionLinenumberEnd: 786
    functionName: MDBRWTransactionImpl::MDBRWTransactionImpl
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void MDBRWTransactionImpl(MDBRWTransactionImpl&& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - MDBRWTransactionImpl
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 787
      start: 787
    functionDepth: 0
    functionLinenumber: 787
    functionLinenumberEnd: 787
    functionName: '& operator=(const MDBRWTransactionImpl& rhs)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: MDBRWTransactionImpl
    signature: MDBRWTransactionImpl & operator=(const MDBRWTransactionImpl& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - MDBRWTransactionImpl
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 788
      start: 788
    functionDepth: 0
    functionLinenumber: 788
    functionLinenumberEnd: 788
    functionName: '& operator=(MDBRWTransactionImpl&& rhs)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: MDBRWTransactionImpl
    signature: MDBRWTransactionImpl & operator=(MDBRWTransactionImpl&& rhs)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:802,1
    - Dst: mdb_put
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:805,1
    - Dst: const_cast<MDB_val*>
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:807,1
    - Dst: const_cast<MDB_val*>
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:808,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:810,1
    - Dst: MDBError
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:810,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 7
    argCount: 3
    argNames:
    - dbi
    - ' key'
    - ' val'
    argTypes:
    - MDB_dbi
    - MDBInVal
    - MDBInVal
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 812
      start: 799
    functionDepth: 0
    functionLinenumber: 799
    functionLinenumberEnd: 812
    functionName: MDBRWTransactionImpl::put_raw
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 0
    functionsReached:
    - MDBError
    - const_cast<MDB_val*>
    - mdb_put
    - std::runtime_error
    linkageType: ''
    returnType: void
    signature: void put_raw(MDB_dbi dbi, const MDBInVal& key, const MDBInVal& val,
      int flags = 0)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:817,1
    - Dst: mdb_txn_id
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:820,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:822,1
    - Dst: LMDBLS::LSheader::LSheader
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:826,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:826,1
    - Dst: MDBRWTransactionImpl::put_raw
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:829,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 3
    argNames:
    - dbi
    - ' key'
    - ' val'
    argTypes:
    - MDB_dbi
    - MDBInVal
    - MDBInVal
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 830
      start: 814
    functionDepth: 0
    functionLinenumber: 814
    functionLinenumberEnd: 830
    functionName: MDBRWTransactionImpl::put
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 0
    functionsReached:
    - mdb_txn_id
    - std::runtime_error
    - MDBRWTransactionImpl::put_raw
    - LMDBLS::LSheader::LSheader
    - std::string
    linkageType: ''
    returnType: void
    signature: void put(MDB_dbi dbi, const MDBInVal& key, const MDBInVal& val, int
      flags = 0)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:836,1
    - Dst: mdb_txn_id
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:839,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:841,1
    - Dst: LMDBLS::LSheader::LSheader
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:844,1
    - Dst: std::string::length
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:846,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:847,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:849,1
    - Dst: std::string::c_str
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:849,1
    - Dst: std::string::length
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:849,1
    - Dst: MDBRWTransactionImpl::put_raw
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:851,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 12
    argCount: 3
    argNames:
    - dbi
    - ' key'
    - ' val'
    argTypes:
    - MDB_dbi
    - MDBInVal
    - MDBInVal
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 852
      start: 833
    functionDepth: 0
    functionLinenumber: 833
    functionLinenumberEnd: 852
    functionName: MDBRWTransactionImpl::put_header_in_place
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 0
    functionsReached:
    - std::string::length
    - memcpy
    - mdb_txn_id
    - std::runtime_error
    - std::string::c_str
    - MDBRWTransactionImpl::put_raw
    - LMDBLS::LSheader::LSheader
    linkageType: ''
    returnType: void
    signature: void put_header_in_place(MDB_dbi dbi, const MDBInVal& key, const MDBInVal&
      val, int flags = 0)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 860
      start: 856
    functionDepth: 0
    functionLinenumber: 856
    functionLinenumberEnd: 860
    functionName: MDBRWTransactionImpl::stringWithEmptyHeader
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string stringWithEmptyHeader()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:865,1
    - Dst: mdb_put
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:867,1
    - Dst: const_cast<MDB_val*>
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:868,1
    - Dst: const_cast<MDB_val*>
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:869,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:870,1
    - Dst: MDBError
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:870,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 6
    argCount: 3
    argNames:
    - dbi
    - ' key'
    - ' val'
    argTypes:
    - MDB_dbi
    - MDBInVal
    - MDBInVal
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 872
      start: 862
    functionDepth: 0
    functionLinenumber: 862
    functionLinenumberEnd: 872
    functionName: MDBRWTransactionImpl::put
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 0
    functionsReached:
    - MDBError
    - const_cast<MDB_val*>
    - mdb_put
    - std::runtime_error
    linkageType: ''
    returnType: void
    signature: void put(MDB_dbi dbi, const MDBInVal& key, const MDBInVal& val, int
      flags = 0)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: mdb_txn_id
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:881,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:883,1
    - Dst: LMDBLS::LSheader::LSheader
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:887,1
    - Dst: mdb_put
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:890,1
    - Dst: const_cast<MDB_val*>
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:892,1
    - Dst: const_cast<MDB_val*>
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:893,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:895,1
    - Dst: MDBError
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:895,1
    - Dst: mdb_del
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:901,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:903,1
    - Dst: MDBError
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:903,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 13
    argCount: 2
    argNames:
    - ' dbi'
    - ' key'
    argTypes:
    - MDBDbi
    - MDBInVal
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 905
      start: 875
    functionDepth: 0
    functionLinenumber: 875
    functionLinenumberEnd: 905
    functionName: MDBRWTransactionImpl::del
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 0
    functionsReached:
    - mdb_txn_id
    - std::runtime_error
    - MDBError
    - LMDBLS::LSheader::LSheader
    - const_cast<MDB_val*>
    - mdb_put
    - mdb_del
    linkageType: ''
    returnType: void
    signature: void del(MDBDbi& dbi, const MDBInVal& key)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:910,1
    - Dst: mdb_get
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:913,1
    - Dst: const_cast<MDB_val*>
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:915,1
    - Dst: const_cast<MDB_val*>
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:916,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:918,1
    - Dst: MDBError
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:918,1
    - Dst: getNoStripHeader
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:923,1
    - Dst: LMDBLS::LSisDeleted
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:924,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 13
    argCount: 3
    argNames:
    - ' dbi'
    - ' key'
    - ' val'
    argTypes:
    - MDBDbi
    - MDBInVal
    - MDBOutVal
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 931
      start: 907
    functionDepth: 0
    functionLinenumber: 907
    functionLinenumberEnd: 931
    functionName: MDBRWTransactionImpl::get
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 0
    functionsReached:
    - std::runtime_error
    - MDBError
    - getNoStripHeader
    - const_cast<MDB_val*>
    - LMDBLS::LSisDeleted
    - mdb_get
    linkageType: ''
    returnType: int
    signature: int get(MDBDbi& dbi, const MDBInVal& key, MDBOutVal& val)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MDBDbi
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:935,1
    - Dst: environment
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:935,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - dbname
    - flags
    argTypes:
    - string_view
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 936
      start: 933
    functionDepth: 0
    functionLinenumber: 933
    functionLinenumberEnd: 936
    functionName: MDBRWTransactionImpl::openDB
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 0
    functionsReached:
    - environment
    - MDBDbi
    linkageType: ''
    returnType: MDBDbi
    signature: MDBDbi openDB(string_view dbname, int flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 952
      start: 952
    functionDepth: 0
    functionLinenumber: 952
    functionLinenumberEnd: 952
    functionName: MDBRWCursor::MDBRWCursor
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void MDBRWCursor()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 1
    argNames:
    - src
    argTypes:
    - MDBRWCursor
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 954
      start: 954
    functionDepth: 0
    functionLinenumber: 954
    functionLinenumberEnd: 954
    functionName: MDBRWCursor::MDBRWCursor
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void MDBRWCursor(const MDBRWCursor &src)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 1
    argNames:
    - src
    argTypes:
    - MDBRWCursor
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 955
      start: 955
    functionDepth: 0
    functionLinenumber: 955
    functionLinenumberEnd: 955
    functionName: MDBRWCursor::MDBRWCursor
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void MDBRWCursor(MDBRWCursor &&src)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 1
    argNames:
    - src
    argTypes:
    - MDBRWCursor
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 956
      start: 956
    functionDepth: 0
    functionLinenumber: 956
    functionLinenumberEnd: 956
    functionName: '&operator=(const MDBRWCursor &src)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: MDBRWCursor
    signature: MDBRWCursor &operator=(const MDBRWCursor &src)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 1
    argNames:
    - src
    argTypes:
    - MDBRWCursor
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 957
      start: 957
    functionDepth: 0
    functionLinenumber: 957
    functionLinenumberEnd: 957
    functionName: '&operator=(MDBRWCursor &&src)'
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: MDBRWCursor
    signature: MDBRWCursor &operator=(MDBRWCursor &&src)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 958
      start: 958
    functionDepth: 0
    functionLinenumber: 958
    functionLinenumberEnd: 958
    functionName: ~MDBRWCursor()
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~MDBRWCursor()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mdb_cursor_put
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:964,1
    - Dst: const_cast<MDB_val*>
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:965,1
    - Dst: const_cast<MDB_val*>
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:966,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:968,1
    - Dst: MDBError
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:968,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 2
    argNames:
    - ' key'
    - ' data'
    argTypes:
    - MDBOutVal
    - MDBInVal
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 970
      start: 962
    functionDepth: 0
    functionLinenumber: 962
    functionLinenumberEnd: 970
    functionName: MDBRWCursor::put_raw
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 0
    functionsReached:
    - const_cast<MDB_val*>
    - MDBError
    - mdb_cursor_put
    - std::runtime_error
    linkageType: ''
    returnType: void
    signature: void put_raw(const MDBOutVal& key, const MDBInVal& data)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mdb_txn_id
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:974,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:976,1
    - Dst: LMDBLS::LSheader::LSheader
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:979,1
    - Dst: std::string
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:980,1
    - Dst: MDBRWCursor::put_raw
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:983,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - ' key'
    - ' data'
    argTypes:
    - MDBOutVal
    - MDBInVal
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 984
      start: 972
    functionDepth: 0
    functionLinenumber: 972
    functionLinenumberEnd: 984
    functionName: MDBRWCursor::put
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 0
    functionsReached:
    - mdb_txn_id
    - std::runtime_error
    - LMDBLS::LSheader::LSheader
    - MDBRWCursor::put_raw
    - std::string
    linkageType: ''
    returnType: void
    signature: void put(const MDBOutVal& key, const MDBInVal& data)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mdb_txn_id
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:989,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:991,1
    - Dst: LMDBLS::LSheader::LSheader
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:993,1
    - Dst: std::string::length
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:995,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:996,1
    - Dst: memcpy
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:998,1
    - Dst: std::string::c_str
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:998,1
    - Dst: std::string::length
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:998,1
    - Dst: MDBRWCursor::put_raw
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:999,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 2
    argNames:
    - ' key'
    - ' val'
    argTypes:
    - MDBOutVal
    - MDBInVal
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1000
      start: 987
    functionDepth: 0
    functionLinenumber: 987
    functionLinenumberEnd: 1000
    functionName: MDBRWCursor::put_header_in_place
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 0
    functionsReached:
    - std::string::length
    - memcpy
    - mdb_txn_id
    - std::runtime_error
    - std::string::c_str
    - LMDBLS::LSheader::LSheader
    - MDBRWCursor::put_raw
    linkageType: ''
    returnType: void
    signature: void put_header_in_place(const MDBOutVal& key, const MDBInVal& val)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mdb_cursor_put
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:1004,1
    - Dst: const_cast<MDB_val*>
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:1005,1
    - Dst: const_cast<MDB_val*>
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:1006,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:1008,1
    - Dst: MDBError
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:1008,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 2
    argNames:
    - ' key'
    - ' data'
    argTypes:
    - MDBOutVal
    - MDBInVal
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1010
      start: 1002
    functionDepth: 0
    functionLinenumber: 1002
    functionLinenumberEnd: 1010
    functionName: MDBRWCursor::put
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 0
    functionsReached:
    - const_cast<MDB_val*>
    - MDBError
    - mdb_cursor_put
    - std::runtime_error
    linkageType: ''
    returnType: void
    signature: void put(const MDBOutVal& key, const MDBInVal& data)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: mdb_txn_id
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:1017,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:1018,1
    - Dst: LMDBLS::LSheader::LSheader
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:1021,1
    - Dst: MDBInVal
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:1025,1
    - Dst: mdb_cursor_put
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:1028,1
    - Dst: const_cast<MDB_val*>
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:1029,1
    - Dst: const_cast<MDB_val*>
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:1030,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:1032,1
    - Dst: MDBError
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:1032,1
    - Dst: mdb_cursor_del
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:1037,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:1038,1
    - Dst: MDBError
      Src: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh:1038,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 14
    argCount: 1
    argNames:
    - ' key'
    argTypes:
    - MDBInVal
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1041
      start: 1014
    functionDepth: 0
    functionLinenumber: 1014
    functionLinenumberEnd: 1041
    functionName: MDBRWCursor::del
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 0
    functionsReached:
    - mdb_txn_id
    - std::runtime_error
    - MDBError
    - mdb_cursor_put
    - mdb_cursor_del
    - LMDBLS::LSheader::LSheader
    - const_cast<MDB_val*>
    - MDBInVal
    linkageType: ''
    returnType: void
    signature: void del(const MDBInVal& key)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - X
    - ','
    - R
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5
      start: 4
    functionDepth: 0
    functionLinenumber: 4
    functionLinenumberEnd: 5
    functionName: ROTL
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/ipcrypt/ipcrypt.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ROTL(X, R)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ROTL
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt/ipcrypt.c:11,1
    - Dst: ROTL
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt/ipcrypt.c:12,1
    - Dst: ROTL
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt/ipcrypt.c:15,1
    - Dst: ROTL
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt/ipcrypt.c:18,1
    - Dst: ROTL
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt/ipcrypt.c:19,1
    - Dst: ROTL
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt/ipcrypt.c:22,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 15
    argCount: 1
    argNames:
    - state
    argTypes:
    - unsigned char[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 23
      start: 6
    functionDepth: 0
    functionLinenumber: 6
    functionLinenumberEnd: 23
    functionName: arx_fwd
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/ipcrypt/ipcrypt.c
    functionUses: 0
    functionsReached:
    - ROTL
    linkageType: ''
    returnType: void
    signature: void arx_fwd(unsigned char state[4])
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ROTL
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt/ipcrypt.c:28,1
    - Dst: ROTL
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt/ipcrypt.c:31,1
    - Dst: ROTL
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt/ipcrypt.c:32,1
    - Dst: ROTL
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt/ipcrypt.c:35,1
    - Dst: ROTL
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt/ipcrypt.c:38,1
    - Dst: ROTL
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt/ipcrypt.c:39,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 15
    argCount: 1
    argNames:
    - state
    argTypes:
    - unsigned char[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 25
    functionDepth: 0
    functionLinenumber: 25
    functionLinenumberEnd: 42
    functionName: arx_bwd
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/ipcrypt/ipcrypt.c
    functionUses: 0
    functionsReached:
    - ROTL
    linkageType: ''
    returnType: void
    signature: void arx_bwd(unsigned char state[4])
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - out
    - x
    - y
    argTypes:
    - unsigned char*
    - unsigned char*
    - unsigned char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 44
    functionDepth: 0
    functionLinenumber: 44
    functionLinenumberEnd: 51
    functionName: xor4
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/ipcrypt/ipcrypt.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void xor4(unsigned char *out, const unsigned char *x, const unsigned
      char *y)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: xor4
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt/ipcrypt.c:60,1
    - Dst: arx_fwd
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt/ipcrypt.c:61,1
    - Dst: xor4
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt/ipcrypt.c:62,1
    - Dst: arx_fwd
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt/ipcrypt.c:63,1
    - Dst: xor4
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt/ipcrypt.c:64,1
    - Dst: arx_fwd
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt/ipcrypt.c:65,1
    - Dst: xor4
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt/ipcrypt.c:66,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 3
    argNames:
    - out
    - in
    - key
    argTypes:
    - unsigned char[]
    - unsigned char[]
    - unsigned char[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 53
    functionDepth: 0
    functionLinenumber: 53
    functionLinenumberEnd: 69
    functionName: ipcrypt_encrypt
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/ipcrypt/ipcrypt.c
    functionUses: 2
    functionsReached:
    - xor4
    - arx_fwd
    linkageType: ''
    returnType: int
    signature: "int ipcrypt_encrypt(unsigned char out[IPCRYPT_BYTES],\n                const
      unsigned char in[IPCRYPT_BYTES],\n                const unsigned char key[IPCRYPT_KEYBYTES])"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: xor4
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt/ipcrypt.c:78,1
    - Dst: arx_bwd
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt/ipcrypt.c:79,1
    - Dst: xor4
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt/ipcrypt.c:80,1
    - Dst: arx_bwd
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt/ipcrypt.c:81,1
    - Dst: xor4
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt/ipcrypt.c:82,1
    - Dst: arx_bwd
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt/ipcrypt.c:83,1
    - Dst: xor4
      Src: /src/pdns/pdns/dnsdistdist/ext/ipcrypt/ipcrypt.c:84,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 3
    argNames:
    - out
    - in
    - key
    argTypes:
    - unsigned char[]
    - unsigned char[]
    - unsigned char[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 71
    functionDepth: 0
    functionLinenumber: 71
    functionLinenumberEnd: 87
    functionName: ipcrypt_decrypt
    functionSourceFile: /src/pdns/pdns/dnsdistdist/ext/ipcrypt/ipcrypt.c
    functionUses: 2
    functionsReached:
    - xor4
    - arx_bwd
    linkageType: ''
    returnType: int
    signature: "int ipcrypt_decrypt(unsigned char out[IPCRYPT_BYTES],\n                const
      unsigned char in[IPCRYPT_BYTES],\n                const unsigned char key[IPCRYPT_KEYBYTES])"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/syncres.hh:132,1
    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: SyncRes::AuthDomain::isAuth
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.hh
    functionUses: 0
    functionsReached:
    - empty
    linkageType: ''
    returnType: bool
    signature: bool isAuth() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SyncRes::AuthDomain::isAuth
      Src: /src/pdns/pdns/recursordist/syncres.hh:136,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 137
      start: 134
    functionDepth: 1
    functionLinenumber: 134
    functionLinenumberEnd: 137
    functionName: SyncRes::AuthDomain::isForward
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.hh
    functionUses: 0
    functionsReached:
    - SyncRes::AuthDomain::isAuth
    linkageType: ''
    returnType: bool
    signature: bool isForward() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 141
      start: 138
    functionDepth: 0
    functionLinenumber: 138
    functionLinenumberEnd: 141
    functionName: SyncRes::AuthDomain::shouldRecurse
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool shouldRecurse() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 145
      start: 142
    functionDepth: 0
    functionLinenumber: 142
    functionLinenumberEnd: 145
    functionName: '& getName() const'
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: DNSName
    signature: DNSName & getName() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - logmode
    argTypes:
    - LogMode
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 161
      start: 158
    functionDepth: 0
    functionLinenumber: 158
    functionLinenumberEnd: 161
    functionName: SyncRes::setDefaultLogMode
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setDefaultLogMode(LogMode logmode)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::make_unique<NetmaskGroup>
      Src: /src/pdns/pdns/recursordist/syncres.hh:180,1
    - Dst: addMask
      Src: /src/pdns/pdns/recursordist/syncres.hh:182,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ' mask'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 183
      start: 177
    functionDepth: 0
    functionLinenumber: 177
    functionLinenumberEnd: 183
    functionName: SyncRes::addDontQuery
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.hh
    functionUses: 0
    functionsReached:
    - std::make_unique<NetmaskGroup>
    - addMask
    linkageType: ''
    returnType: void
    signature: void addDontQuery(const std::string& mask)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::make_unique<NetmaskGroup>
      Src: /src/pdns/pdns/recursordist/syncres.hh:187,1
    - Dst: addMask
      Src: /src/pdns/pdns/recursordist/syncres.hh:189,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ' mask'
    argTypes:
    - Netmask
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 190
      start: 184
    functionDepth: 0
    functionLinenumber: 184
    functionLinenumberEnd: 190
    functionName: SyncRes::addDontQuery
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.hh
    functionUses: 0
    functionsReached:
    - std::make_unique<NetmaskGroup>
    - addMask
    linkageType: ''
    returnType: void
    signature: void addDontQuery(const Netmask& mask)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 194
      start: 191
    functionDepth: 0
    functionLinenumber: 191
    functionLinenumberEnd: 194
    functionName: SyncRes::clearDontQuery
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void clearDontQuery()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: addMask
      Src: /src/pdns/pdns/recursordist/syncres.hh:199,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' subnet'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 200
      start: 197
    functionDepth: 0
    functionLinenumber: 197
    functionLinenumberEnd: 200
    functionName: SyncRes::addEDNSLocalSubnet
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.hh
    functionUses: 0
    functionsReached:
    - addMask
    linkageType: ''
    returnType: void
    signature: void addEDNSLocalSubnet(const std::string& subnet)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: addMask
      Src: /src/pdns/pdns/recursordist/syncres.hh:203,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' subnet'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 204
      start: 201
    functionDepth: 0
    functionLinenumber: 201
    functionLinenumberEnd: 204
    functionName: SyncRes::addEDNSRemoteSubnet
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.hh
    functionUses: 0
    functionsReached:
    - addMask
    linkageType: ''
    returnType: void
    signature: void addEDNSRemoteSubnet(const std::string& subnet)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: add
      Src: /src/pdns/pdns/recursordist/syncres.hh:207,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' domain'
    argTypes:
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 208
      start: 205
    functionDepth: 0
    functionLinenumber: 205
    functionLinenumberEnd: 208
    functionName: SyncRes::addEDNSDomain
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.hh
    functionUses: 0
    functionsReached:
    - add
    linkageType: ''
    returnType: void
    signature: void addEDNSDomain(const DNSName& domain)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: clear
      Src: /src/pdns/pdns/recursordist/syncres.hh:211,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 212
      start: 209
    functionDepth: 1
    functionLinenumber: 209
    functionLinenumberEnd: 212
    functionName: SyncRes::clearEDNSLocalSubnets
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.hh
    functionUses: 0
    functionsReached:
    - clear
    linkageType: ''
    returnType: void
    signature: void clearEDNSLocalSubnets()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: clear
      Src: /src/pdns/pdns/recursordist/syncres.hh:215,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 216
      start: 213
    functionDepth: 1
    functionLinenumber: 213
    functionLinenumberEnd: 216
    functionName: SyncRes::clearEDNSRemoteSubnets
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.hh
    functionUses: 0
    functionsReached:
    - clear
    linkageType: ''
    returnType: void
    signature: void clearEDNSRemoteSubnets()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SuffixMatchNode
      Src: /src/pdns/pdns/recursordist/syncres.hh:219,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 220
      start: 217
    functionDepth: 0
    functionLinenumber: 217
    functionLinenumberEnd: 220
    functionName: SyncRes::clearEDNSDomains
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.hh
    functionUses: 0
    functionsReached:
    - SuffixMatchNode
    linkageType: ''
    returnType: void
    signature: void clearEDNSDomains()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' arg'
    argTypes:
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 231
      start: 230
    functionDepth: 0
    functionLinenumber: 230
    functionLinenumberEnd: 231
    functionName: SyncRes::EDNSStatus
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void EDNSStatus(const ComboAddress& arg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<unsigned int>
      Src: /src/pdns/pdns/recursordist/syncres.hh:244,1
    - Dst: std::array::size
      Src: /src/pdns/pdns/recursordist/syncres.hh:245,1
    - Dst: std::array::at
      Src: /src/pdns/pdns/recursordist/syncres.hh:248,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 249
      start: 241
    functionDepth: 0
    functionLinenumber: 241
    functionLinenumberEnd: 249
    functionName: SyncRes::toString
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.hh
    functionUses: 0
    functionsReached:
    - static_cast<unsigned int>
    - std::array::at
    - std::array::size
    linkageType: ''
    returnType: std::string
    signature: std::string toString() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/syncres.hh:297,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - newMap
    argTypes:
    - std::shared_ptr<domainmap_t>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 298
      start: 295
    functionDepth: 0
    functionLinenumber: 295
    functionLinenumberEnd: 298
    functionName: SyncRes::setDomainMap
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.hh
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void setDomainMap(std::shared_ptr<domainmap_t> newMap)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 302
      start: 299
    functionDepth: 0
    functionLinenumber: 299
    functionLinenumberEnd: 302
    functionName: SyncRes::getDomainMap
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::shared_ptr<domainmap_t>
    signature: std::shared_ptr<domainmap_t> getDomainMap()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: setSource
      Src: /src/pdns/pdns/recursordist/syncres.hh:307,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' scopeZeroMask'
    argTypes:
    - Netmask
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 308
      start: 305
    functionDepth: 1
    functionLinenumber: 305
    functionLinenumberEnd: 308
    functionName: SyncRes::setECSScopeZeroAddress
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.hh
    functionUses: 0
    functionsReached:
    - setSource
    linkageType: ''
    returnType: void
    signature: void setECSScopeZeroAddress(const Netmask& scopeZeroMask)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: store
      Src: /src/pdns/pdns/recursordist/syncres.hh:312,1
    - Dst: store
      Src: /src/pdns/pdns/recursordist/syncres.hh:313,1
    - Dst: store
      Src: /src/pdns/pdns/recursordist/syncres.hh:316,1
    - Dst: store
      Src: /src/pdns/pdns/recursordist/syncres.hh:320,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 322
      start: 310
    functionDepth: 0
    functionLinenumber: 310
    functionLinenumberEnd: 322
    functionName: SyncRes::clearECSStats
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.hh
    functionUses: 0
    functionsReached:
    - store
    linkageType: ''
    returnType: void
    signature: void clearECSStats()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SyncRes::doLog
      Src: /src/pdns/pdns/recursordist/syncres.hh:331,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/syncres.hh:332,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - threadid
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 334
      start: 329
    functionDepth: 1
    functionLinenumber: 329
    functionLinenumberEnd: 334
    functionName: SyncRes::setId
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.hh
    functionUses: 0
    functionsReached:
    - std::to_string
    - SyncRes::doLog
    linkageType: ''
    returnType: void
    signature: void setId(int threadid)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SyncRes::doLog
      Src: /src/pdns/pdns/recursordist/syncres.hh:338,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ' prefix'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 341
      start: 336
    functionDepth: 1
    functionLinenumber: 336
    functionLinenumberEnd: 341
    functionName: SyncRes::setId
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.hh
    functionUses: 0
    functionsReached:
    - SyncRes::doLog
    linkageType: ''
    returnType: void
    signature: void setId(const string& prefix)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - logmode
    argTypes:
    - LogMode
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 346
      start: 343
    functionDepth: 0
    functionLinenumber: 343
    functionLinenumberEnd: 346
    functionName: SyncRes::setLogMode
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setLogMode(LogMode logmode)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 351
      start: 348
    functionDepth: 0
    functionLinenumber: 348
    functionLinenumberEnd: 351
    functionName: SyncRes::doLog
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.hh
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool doLog() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 358
      start: 353
    functionDepth: 0
    functionLinenumber: 353
    functionLinenumberEnd: 358
    functionName: SyncRes::setCacheOnly
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool setCacheOnly(bool state = true)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - doit
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 365
      start: 360
    functionDepth: 0
    functionLinenumber: 360
    functionLinenumberEnd: 365
    functionName: SyncRes::setRefreshAlmostExpired
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool setRefreshAlmostExpired(bool doit)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 372
      start: 367
    functionDepth: 0
    functionLinenumber: 367
    functionLinenumberEnd: 372
    functionName: SyncRes::setQNameMinimization
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool setQNameMinimization(bool state = true)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 379
      start: 374
    functionDepth: 0
    functionLinenumber: 374
    functionLinenumberEnd: 379
    functionName: SyncRes::setQMFallbackMode
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool setQMFallbackMode(bool state = true)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 384
      start: 381
    functionDepth: 0
    functionLinenumber: 381
    functionLinenumberEnd: 384
    functionName: SyncRes::getQMFallbackMode
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool getQMFallbackMode() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 389
      start: 386
    functionDepth: 0
    functionLinenumber: 386
    functionLinenumberEnd: 389
    functionName: SyncRes::setDoEDNS0
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setDoEDNS0(bool state = true)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 394
      start: 391
    functionDepth: 0
    functionLinenumber: 391
    functionLinenumberEnd: 394
    functionName: SyncRes::setDoDNSSEC
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setDoDNSSEC(bool state = true)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 399
      start: 396
    functionDepth: 0
    functionLinenumber: 396
    functionLinenumberEnd: 399
    functionName: SyncRes::setDNSSECValidationRequested
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setDNSSECValidationRequested(bool requested = true)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 404
      start: 401
    functionDepth: 0
    functionLinenumber: 401
    functionLinenumberEnd: 404
    functionName: SyncRes::isDNSSECValidationRequested
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool isDNSSECValidationRequested() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 409
      start: 406
    functionDepth: 0
    functionLinenumber: 406
    functionLinenumberEnd: 409
    functionName: SyncRes::shouldValidate
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool shouldValidate() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 414
      start: 411
    functionDepth: 0
    functionLinenumber: 411
    functionLinenumberEnd: 414
    functionName: SyncRes::setWantsRPZ
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setWantsRPZ(bool state = true)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 419
      start: 416
    functionDepth: 0
    functionLinenumber: 416
    functionLinenumberEnd: 419
    functionName: SyncRes::getWantsRPZ
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool getWantsRPZ() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: str
      Src: /src/pdns/pdns/recursordist/syncres.hh:423,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 424
      start: 421
    functionDepth: 0
    functionLinenumber: 421
    functionLinenumberEnd: 424
    functionName: SyncRes::getTrace
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.hh
    functionUses: 0
    functionsReached:
    - str
    linkageType: ''
    returnType: string
    signature: string getTrace() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 429
      start: 426
    functionDepth: 0
    functionLinenumber: 426
    functionLinenumberEnd: 429
    functionName: SyncRes::getQNameMinimization
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool getQNameMinimization() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/syncres.hh:433,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - pdl
    argTypes:
    - shared_ptr<RecursorLua4>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 434
      start: 431
    functionDepth: 0
    functionLinenumber: 431
    functionLinenumberEnd: 434
    functionName: SyncRes::setLuaEngine
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.hh
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void setLuaEngine(shared_ptr<RecursorLua4> pdl)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 439
      start: 436
    functionDepth: 0
    functionLinenumber: 436
    functionLinenumberEnd: 439
    functionName: SyncRes::wasVariable
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool wasVariable() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 444
      start: 441
    functionDepth: 0
    functionLinenumber: 441
    functionLinenumberEnd: 444
    functionName: SyncRes::wasOutOfBand
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool wasOutOfBand() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 449
      start: 446
    functionDepth: 0
    functionLinenumber: 446
    functionLinenumberEnd: 449
    functionName: SyncRes::getNow
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct timeval
    signature: struct timeval getNow() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' tval'
    argTypes:
    - struct timeval
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 455
      start: 452
    functionDepth: 0
    functionLinenumber: 452
    functionLinenumberEnd: 455
    functionName: SyncRes::setNow
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setNow(const struct timeval& tval)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' initialRequestId'
    argTypes:
    - boost::optional<const boost::uuids::uuid&>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 463
      start: 460
    functionDepth: 0
    functionLinenumber: 460
    functionLinenumberEnd: 463
    functionName: SyncRes::setInitialRequestId
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setInitialRequestId(const boost::optional<const boost::uuids::uuid&>&
      initialRequestId)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' servers'
    argTypes:
    - std::shared_ptr<std::vector<std::unique_ptr<RemoteLogger>>>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 468
      start: 465
    functionDepth: 0
    functionLinenumber: 465
    functionLinenumberEnd: 468
    functionName: SyncRes::setOutgoingProtobufServers
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setOutgoingProtobufServers(std::shared_ptr<std::vector<std::unique_ptr<RemoteLogger>>>&
      servers)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' servers'
    argTypes:
    - std::shared_ptr<std::vector<std::unique_ptr<FrameStreamLogger>>>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 474
      start: 471
    functionDepth: 0
    functionLinenumber: 471
    functionLinenumberEnd: 474
    functionName: SyncRes::setFrameStreamServers
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setFrameStreamServers(std::shared_ptr<std::vector<std::unique_ptr<FrameStreamLogger>>>&
      servers)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/syncres.hh:479,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - func
    argTypes:
    - asyncresolve_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 480
      start: 477
    functionDepth: 0
    functionLinenumber: 477
    functionLinenumberEnd: 480
    functionName: SyncRes::setAsyncCallback
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.hh
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void setAsyncCallback(asyncresolve_t func)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 485
      start: 482
    functionDepth: 0
    functionLinenumber: 482
    functionLinenumberEnd: 485
    functionName: SyncRes::getValidationState
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: vState
    signature: vState getValidationState() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 490
      start: 487
    functionDepth: 0
    functionLinenumber: 487
    functionLinenumberEnd: 490
    functionName: SyncRes::getDNSSECLimitHit
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool getDNSSECLimitHit() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - tcp
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 495
      start: 492
    functionDepth: 0
    functionLinenumber: 492
    functionLinenumberEnd: 495
    functionName: SyncRes::setQueryReceivedOverTCP
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setQueryReceivedOverTCP(bool tcp)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: QType::getCode
      Src: /src/pdns/pdns/recursordist/syncres.hh:499,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 1
    argNames:
    - qtype
    argTypes:
    - QType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 517
      start: 497
    functionDepth: 0
    functionLinenumber: 497
    functionLinenumberEnd: 517
    functionName: SyncRes::isUnsupported
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.hh
    functionUses: 0
    functionsReached:
    - QType::getCode
    linkageType: ''
    returnType: bool
    signature: bool isUnsupported(QType qtype)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - flag
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 586
      start: 583
    functionDepth: 0
    functionLinenumber: 583
    functionLinenumberEnd: 586
    functionName: SyncRes::eventTraceEnabled
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool eventTraceEnabled(int flag)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - flag
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 590
      start: 587
    functionDepth: 0
    functionLinenumber: 587
    functionLinenumberEnd: 590
    functionName: SyncRes::eventTraceEnabledOnly
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool eventTraceEnabledOnly(int flag)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::tie
      Src: /src/pdns/pdns/recursordist/syncres.hh:632,1
    - Dst: std::tie
      Src: /src/pdns/pdns/recursordist/syncres.hh:632,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' bestAnswer'
    argTypes:
    - GetBestNSAnswer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 633
      start: 630
    functionDepth: 0
    functionLinenumber: 630
    functionLinenumberEnd: 633
    functionName: operator<(const GetBestNSAnswer& bestAnswer) const
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.hh
    functionUses: 0
    functionsReached:
    - std::tie
    linkageType: ''
    returnType: bool
    signature: bool operator<(const GetBestNSAnswer& bestAnswer) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 725
      start: 722
    functionDepth: 0
    functionLinenumber: 722
    functionLinenumberEnd: 725
    functionName: SyncRes::setUpdatingRootNS
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setUpdatingRootNS()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SyncRes::doLog
      Src: /src/pdns/pdns/recursordist/syncres.hh:729,1
    - Dst: auto::append
      Src: /src/pdns/pdns/recursordist/syncres.hh:733,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - depth
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 735
      start: 727
    functionDepth: 1
    functionLinenumber: 727
    functionLinenumberEnd: 735
    functionName: SyncRes::getPrefix
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.hh
    functionUses: 0
    functionsReached:
    - SyncRes::doLog
    - auto::append
    linkageType: ''
    returnType: std::string
    signature: std::string getPrefix(unsigned int depth) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: reset
      Src: /src/pdns/pdns/recursordist/syncres.hh:791,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 792
      start: 789
    functionDepth: 0
    functionLinenumber: 789
    functionLinenumberEnd: 792
    functionName: PacketID
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.hh
    functionUses: 0
    functionsReached:
    - reset
    linkageType: ''
    returnType: void
    signature: void PacketID()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/pdns/pdns/recursordist/syncres.hh:821,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (0)
      pos:
        line_end: 820
        line_start: 820
        source_file: /src/pdns/pdns/recursordist/syncres.hh
    constantsTouched: []
    func_position:
      end: 822
      start: 818
    functionDepth: 0
    functionLinenumber: 818
    functionLinenumberEnd: 822
    functionName: operator<(const PacketID& /* b */) const
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.hh
    functionUses: 0
    functionsReached:
    - assert
    linkageType: ''
    returnType: bool
    signature: bool operator<(const PacketID& /* b */) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: remote::toString
      Src: /src/pdns/pdns/recursordist/syncres.hh:827,1
    - Dst: ecsSubnet::toString
      Src: /src/pdns/pdns/recursordist/syncres.hh:827,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' ostr'
    - ' pid'
    argTypes:
    - ostream
    - PacketID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 828
      start: 825
    functionDepth: 0
    functionLinenumber: 825
    functionLinenumberEnd: 828
    functionName: '& operator<<(ostream& ostr, const PacketID& pid)'
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.hh
    functionUses: 0
    functionsReached:
    - ecsSubnet::toString
    - remote::toString
    linkageType: ''
    returnType: ostream
    signature: ostream & operator<<(ostream& ostr, const PacketID& pid)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' ostr'
    - ' pid'
    argTypes:
    - ostream
    - shared_ptr<PacketID>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 833
      start: 830
    functionDepth: 0
    functionLinenumber: 830
    functionLinenumberEnd: 833
    functionName: '& operator<<(ostream& ostr, const shared_ptr<PacketID>& pid)'
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: ostream
    signature: ostream & operator<<(ostream& ostr, const shared_ptr<PacketID>& pid)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: std::tie
      Src: /src/pdns/pdns/recursordist/syncres.hh:844,1
    - Dst: std::tie
      Src: /src/pdns/pdns/recursordist/syncres.hh:844,1
    - Dst: std::tie
      Src: /src/pdns/pdns/recursordist/syncres.hh:847,1
    - Dst: std::tie
      Src: /src/pdns/pdns/recursordist/syncres.hh:847,1
    - Dst: std::tie
      Src: /src/pdns/pdns/recursordist/syncres.hh:851,1
    - Dst: std::tie
      Src: /src/pdns/pdns/recursordist/syncres.hh:851,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - ' lhs'
    - ' rhs'
    argTypes:
    - std::shared_ptr<PacketID>
    - std::shared_ptr<PacketID>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 852
      start: 842
    functionDepth: 0
    functionLinenumber: 842
    functionLinenumberEnd: 852
    functionName: operator()(const std::shared_ptr<PacketID>& lhs, const std::shared_ptr<PacketID>&
      rhs) const
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.hh
    functionUses: 0
    functionsReached:
    - std::tie
    linkageType: ''
    returnType: bool
    signature: bool operator()(const std::shared_ptr<PacketID>& lhs, const std::shared_ptr<PacketID>&
      rhs) const
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: std::tie
      Src: /src/pdns/pdns/recursordist/syncres.hh:859,1
    - Dst: std::tie
      Src: /src/pdns/pdns/recursordist/syncres.hh:859,1
    - Dst: std::tie
      Src: /src/pdns/pdns/recursordist/syncres.hh:862,1
    - Dst: std::tie
      Src: /src/pdns/pdns/recursordist/syncres.hh:862,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - ' lhs'
    - ' rhs'
    argTypes:
    - std::shared_ptr<PacketID>
    - std::shared_ptr<PacketID>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 866
      start: 857
    functionDepth: 0
    functionLinenumber: 857
    functionLinenumberEnd: 866
    functionName: operator()(const std::shared_ptr<PacketID>& lhs, const std::shared_ptr<PacketID>&
      rhs) const
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.hh
    functionUses: 0
    functionsReached:
    - std::tie
    linkageType: ''
    returnType: bool
    signature: bool operator()(const std::shared_ptr<PacketID>& lhs, const std::shared_ptr<PacketID>&
      rhs) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 879
      start: 879
    functionDepth: 0
    functionLinenumber: 879
    functionLinenumberEnd: 879
    functionName: TCPConnection::TCPConnection
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void TCPConnection(const TCPConnection&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 880
      start: 880
    functionDepth: 0
    functionLinenumber: 880
    functionLinenumberEnd: 880
    functionName: '& operator=(const TCPConnection&)'
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: TCPConnection
    signature: TCPConnection & operator=(const TCPConnection&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 881
      start: 881
    functionDepth: 0
    functionLinenumber: 881
    functionLinenumberEnd: 881
    functionName: TCPConnection::TCPConnection
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void TCPConnection(TCPConnection&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 882
      start: 882
    functionDepth: 0
    functionLinenumber: 882
    functionLinenumberEnd: 882
    functionName: '& operator=(TCPConnection&&)'
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: TCPConnection
    signature: TCPConnection & operator=(TCPConnection&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 887
      start: 884
    functionDepth: 0
    functionLinenumber: 884
    functionLinenumberEnd: 887
    functionName: TCPConnection::getFD
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int getFD() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 891
      start: 888
    functionDepth: 0
    functionLinenumber: 888
    functionLinenumberEnd: 891
    functionName: TCPConnection::setDropOnIdle
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setDropOnIdle()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 895
      start: 892
    functionDepth: 0
    functionLinenumber: 892
    functionLinenumberEnd: 895
    functionName: TCPConnection::isDropOnIdle
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool isDropOnIdle() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 899
      start: 899
    functionDepth: 0
    functionLinenumber: 899
    functionLinenumberEnd: 899
    functionName: TCPConnection::getCurrentConnections
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int getCurrentConnections()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/syncres.hh:932,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - reason_
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 932
      start: 931
    functionDepth: 0
    functionLinenumber: 931
    functionLinenumberEnd: 932
    functionName: ImmediateServFailException::ImmediateServFailException
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.hh
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void ImmediateServFailException(string reason_)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: push_back
      Src: /src/pdns/pdns/recursordist/syncres.hh:1002,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - ThreadTimes
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1004
      start: 1000
    functionDepth: 0
    functionLinenumber: 1000
    functionLinenumberEnd: 1004
    functionName: '& operator+=(const ThreadTimes& rhs)'
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.hh
    functionUses: 0
    functionsReached:
    - push_back
    linkageType: ''
    returnType: ThreadTimes
    signature: ThreadTimes & operator+=(const ThreadTimes& rhs)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: length
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:74,1
    - Dst: std::isdigit
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:79,1
    - Dst: std::isdigit
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:83,1
    - Dst: substr
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:88,1
    - Dst: substr
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:88,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:88,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 1
    argNames:
    - ' arg'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 72
    functionDepth: 0
    functionLinenumber: 72
    functionLinenumberEnd: 89
    functionName: PrefixDashNumberCompare::prefixAndTrailingNum
    functionSourceFile: /src/pdns/pdns/recursordist/rec_channel_rec.cc
    functionUses: 0
    functionsReached:
    - length
    - substr
    - std::isdigit
    - size
    linkageType: ''
    returnType: std::pair<std::string, std::string>
    signature: std::pair<std::string, std::string> PrefixDashNumberCompare::prefixAndTrailingNum(const
      std::string& arg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: prefixAndTrailingNum
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:93,1
    - Dst: prefixAndTrailingNum
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:94,1
    - Dst: length
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:96,1
    - Dst: length
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:96,1
    - Dst: std::stoull
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:99,1
    - Dst: std::stoull
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:99,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 5
    argCount: 2
    argNames:
    - ' lhs'
    - ' rhs'
    argTypes:
    - std::string
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 91
    functionDepth: 0
    functionLinenumber: 91
    functionLinenumberEnd: 100
    functionName: PrefixDashNumberCompare::operator()(const std::string& lhs, const
      std::string& rhs) const
    functionSourceFile: /src/pdns/pdns/recursordist/rec_channel_rec.cc
    functionUses: 0
    functionsReached:
    - std::stoull
    - length
    - prefixAndTrailingNum
    linkageType: ''
    returnType: bool
    signature: bool PrefixDashNumberCompare::operator()(const std::string& lhs, const
      std::string& rhs) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: count
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:120,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - component
    - ' name'
    argTypes:
    - StatComponent
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 118
    functionDepth: 0
    functionLinenumber: 118
    functionLinenumberEnd: 121
    functionName: isStatDisabled
    functionSourceFile: /src/pdns/pdns/recursordist/rec_channel_rec.cc
    functionUses: 0
    functionsReached:
    - count
    linkageType: ''
    returnType: bool
    signature: bool isStatDisabled(StatComponent component, const string& name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: insert
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:125,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - component
    - ' name'
    argTypes:
    - StatComponent
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 123
    functionDepth: 1
    functionLinenumber: 123
    functionLinenumberEnd: 126
    functionName: disableStat
    functionSourceFile: /src/pdns/pdns/recursordist/rec_channel_rec.cc
    functionUses: 0
    functionsReached:
    - insert
    linkageType: ''
    returnType: void
    signature: void disableStat(StatComponent component, const string& name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: stringtok
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:131,1
    - Dst: insert
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:134,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - component
    - ' stats'
    argTypes:
    - StatComponent
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 136
      start: 128
    functionDepth: 1
    functionLinenumber: 128
    functionLinenumberEnd: 136
    functionName: disableStats
    functionSourceFile: /src/pdns/pdns/recursordist/rec_channel_rec.cc
    functionUses: 0
    functionsReached:
    - stringtok
    - insert
    linkageType: ''
    returnType: void
    signature: void disableStats(StatComponent component, const string& stats)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: emplace
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:140,1
    - Dst: _exit
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:142,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - ' name'
    - place
    argTypes:
    - string
    - pdns::stat_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 144
      start: 138
    functionDepth: 0
    functionLinenumber: 138
    functionLinenumberEnd: 144
    functionName: addGetStat
    functionSourceFile: /src/pdns/pdns/recursordist/rec_channel_rec.cc
    functionUses: 0
    functionsReached:
    - _exit
    - emplace
    linkageType: ''
    returnType: void
    signature: void addGetStat(const string& name, const pdns::stat_t* place)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: emplace
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:148,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:148,1
    - Dst: _exit
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:150,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - ' name'
    - func
    argTypes:
    - string
    - std::function<uint64_t()>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 152
      start: 146
    functionDepth: 0
    functionLinenumber: 146
    functionLinenumberEnd: 152
    functionName: addGetStat
    functionSourceFile: /src/pdns/pdns/recursordist/rec_channel_rec.cc
    functionUses: 0
    functionsReached:
    - std::move
    - _exit
    - emplace
    linkageType: ''
    returnType: void
    signature: void addGetStat(const string& name, std::function<uint64_t()> func)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: emplace
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:156,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:156,1
    - Dst: _exit
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:158,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - ' name'
    - func
    argTypes:
    - string
    - std::function<StatsMap()>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 160
      start: 154
    functionDepth: 0
    functionLinenumber: 154
    functionLinenumberEnd: 160
    functionName: addGetStat
    functionSourceFile: /src/pdns/pdns/recursordist/rec_channel_rec.cc
    functionUses: 0
    functionsReached:
    - std::move
    - _exit
    - emplace
    linkageType: ''
    returnType: void
    signature: void addGetStat(const string& name, std::function<StatsMap()> func)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::replace_if
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:165,1
    - Dst: std::string::begin
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:166,1
    - Dst: std::string::end
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:166,1
    - Dst: isalnum
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:166,1
    - Dst: static_cast<unsigned char>
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:166,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - ' arg'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 168
      start: 162
    functionDepth: 0
    functionLinenumber: 162
    functionLinenumberEnd: 168
    functionName: getPrometheusName
    functionSourceFile: /src/pdns/pdns/recursordist/rec_channel_rec.cc
    functionUses: 0
    functionsReached:
    - std::string::begin
    - std::string::end
    - std::replace_if
    - isalnum
    - static_cast<unsigned char>
    linkageType: ''
    returnType: std::string
    signature: std::string getPrometheusName(const std::string& arg)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:172,1
    - Dst: auto::find
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:173,1
    - Dst: auto::end
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:174,1
    - Dst: auto::second::d_ptr::get
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:175,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:178,1
    - Dst: getPrometheusName
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:178,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:189,1
    - Dst: std::make_unique<std::atomic<unsigned long>>
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:193,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:194,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:195,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:195,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:195,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:196,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 4
    argNames:
    - ' str'
    - ' prometheusName'
    - ' prometheusTypeName'
    - ' prometheusDescr'
    argTypes:
    - std::string
    - std::string
    - std::string
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 198
      start: 170
    functionDepth: 1
    functionLinenumber: 170
    functionLinenumberEnd: 198
    functionName: getDynMetric
    functionSourceFile: /src/pdns/pdns/recursordist/rec_channel_rec.cc
    functionUses: 0
    functionsReached:
    - std::move
    - auto::get
    - std::make_unique<std::atomic<unsigned long>>
    - lock
    - getPrometheusName
    - empty
    - auto::end
    - auto::second::d_ptr::get
    - auto::find
    linkageType: ''
    returnType: std::atomic<unsigned long>
    signature: std::atomic<unsigned long> * getDynMetric(const std::string& str, const
      std::string& prometheusName, const std::string& prometheusTypeName, const std::string&
      prometheusDescr)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: count
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:204,1
    - Dst: find
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:205,1
    - Dst: load
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:205,1
    - Dst: count
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:207,1
    - Dst: find
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:208,1
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:212,1
    - Dst: rplookup
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:213,1
    - Dst: auto*::d_ptr::load
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:215,1
    - Dst: second
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:220,1
    - Dst: auto::find
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:221,1
    - Dst: auto::end
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:222,1
    - Dst: std::stoull
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:223,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 1
    argNames:
    - ' name'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 228
      start: 200
    functionDepth: 0
    functionLinenumber: 200
    functionLinenumberEnd: 228
    functionName: get
    functionSourceFile: /src/pdns/pdns/recursordist/rec_channel_rec.cc
    functionUses: 536
    functionsReached:
    - load
    - count
    - auto::end
    - second
    - lock
    - rplookup
    - auto*::d_ptr::load
    - std::stoull
    - auto::find
    - find
    linkageType: ''
    returnType: std::optional<uint64_t>
    signature: std::optional<uint64_t> get(const string& name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: get
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:232,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' name'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 233
      start: 230
    functionDepth: 0
    functionLinenumber: 230
    functionLinenumberEnd: 233
    functionName: getStatByName
    functionSourceFile: /src/pdns/pdns/recursordist/rec_channel_rec.cc
    functionUses: 0
    functionsReached:
    - get
    linkageType: ''
    returnType: std::optional<uint64_t>
    signature: std::optional<uint64_t> getStatByName(const std::string& name)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: at
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:238,1
    - Dst: count
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:241,1
    - Dst: StatsMap::emplace
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:242,1
    - Dst: getPrometheusName
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:242,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:242,1
    - Dst: second::load
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:242,1
    - Dst: count
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:247,1
    - Dst: StatsMap::emplace
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:248,1
    - Dst: getPrometheusName
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:248,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:248,1
    - Dst: second
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:248,1
    - Dst: count
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:253,1
    - Dst: StatsMap::merge
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:254,1
    - Dst: second
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:254,1
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:259,1
    - Dst: count
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:260,1
    - Dst: StatsMap::emplace
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:261,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:261,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 19
    argCount: 1
    argNames:
    - component
    argTypes:
    - StatComponent
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 267
      start: 235
    functionDepth: 1
    functionLinenumber: 235
    functionLinenumberEnd: 267
    functionName: getAllStatsMap
    functionSourceFile: /src/pdns/pdns/recursordist/rec_channel_rec.cc
    functionUses: 0
    functionsReached:
    - std::to_string
    - StatsMap::merge
    - count
    - second::load
    - second
    - lock
    - getPrometheusName
    - at
    - StatsMap::emplace
    linkageType: ''
    returnType: StatsMap
    signature: StatsMap getAllStatsMap(StatComponent component)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getAllStatsMap
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:274,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:279,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 280
      start: 272
    functionDepth: 2
    functionLinenumber: 272
    functionLinenumberEnd: 280
    functionName: getAllStats
    functionSourceFile: /src/pdns/pdns/recursordist/rec_channel_rec.cc
    functionUses: 0
    functionsReached:
    - getAllStatsMap
    - std::move
    linkageType: ''
    returnType: Answer
    signature: Answer getAllStats(ArgIterator /* begin */, ArgIterator /* end */)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: get
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:287,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:289,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:295,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - begin
    - end
    argTypes:
    - ArgIterator
    - ArgIterator
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 296
      start: 282
    functionDepth: 0
    functionLinenumber: 282
    functionLinenumberEnd: 296
    functionName: doGet
    functionSourceFile: /src/pdns/pdns/recursordist/rec_channel_rec.cc
    functionUses: 0
    functionsReached:
    - std::move
    - std::to_string
    - get
    linkageType: ''
    returnType: Answer
    signature: Answer doGet(ArgIterator begin, ArgIterator end)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:305,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:306,1
    - Dst: std::stringstream::str
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:314,1
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:317,1
    - Dst: auto::get_value
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:320,1
    - Dst: pdns::settings::rec::defaultsToYaml
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:320,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:321,1
    - Dst: std::stringstream::str
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:322,1
    - Dst: stringtok
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:327,1
    - Dst: auto::get_value
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:330,1
    - Dst: pdns::settings::rec::defaultsToYaml
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:330,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:331,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:334,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:334,1
    - Dst: std::stringstream::str
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:338,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 26
    argCount: 2
    argNames:
    - begin
    - end
    argTypes:
    - ArgIterator
    - ArgIterator
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 339
      start: 298
    functionDepth: 0
    functionLinenumber: 298
    functionLinenumberEnd: 339
    functionName: doGetParameter
    functionSourceFile: /src/pdns/pdns/recursordist/rec_channel_rec.cc
    functionUses: 0
    functionsReached:
    - auto::get_value
    - stringtok
    - pdns::settings::rec::defaultsToYaml
    - what
    - lock
    - std::stringstream::str
    - std::string
    - arg
    linkageType: ''
    returnType: Answer
    signature: Answer doGetParameter(ArgIterator begin, ArgIterator end)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:348,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:349,1
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:358,1
    - Dst: pdns::rust::settings::rec::parse_yaml_string
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:359,1
    - Dst: pdns::settings::rec::defaultsToYaml
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:361,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:362,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:362,1
    - Dst: stringtok
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:367,1
    - Dst: auto::get_value
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:370,1
    - Dst: pdns::settings::rec::defaultsToYaml
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:370,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:371,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:374,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:374,1
    - Dst: std::stringstream::str
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:380,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 26
    argCount: 2
    argNames:
    - begin
    - end
    argTypes:
    - ArgIterator
    - ArgIterator
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 381
      start: 341
    functionDepth: 0
    functionLinenumber: 341
    functionLinenumberEnd: 381
    functionName: doGetDefaultParameter
    functionSourceFile: /src/pdns/pdns/recursordist/rec_channel_rec.cc
    functionUses: 0
    functionsReached:
    - std::move
    - auto::get_value
    - stringtok
    - pdns::settings::rec::defaultsToYaml
    - what
    - lock
    - std::stringstream::str
    - std::string
    - pdns::rust::settings::rec::parse_yaml_string
    - arg
    linkageType: ''
    returnType: Answer
    signature: Answer doGetDefaultParameter(ArgIterator begin, ArgIterator end)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:401,1
    - Dst: "union\n  {\n    struct cmsghdr hdr;\n    std::array<unsigned char, CMSG_SPACE(sizeof(int))>
        buf{};\n  }::buf::data"
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:402,1
    - Dst: "union\n  {\n    struct cmsghdr hdr;\n    std::array<unsigned char, CMSG_SPACE(sizeof(int))>
        buf{};\n  }::buf::size"
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:403,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:404,1
    - Dst: std::array::size
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:405,1
    - Dst: recvmsg
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:407,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:408,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:411,1
    - Dst: CMSG_FIRSTHDR
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:413,1
    - Dst: CMSG_NXTHDR
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:414,1
    - Dst: CMSG_LEN
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:415,1
    - Dst: reinterpret_cast<int*>
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:416,1
    - Dst: CMSG_DATA
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:416,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 21
    argCount: 1
    argNames:
    - socket
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 421
      start: 384
    functionDepth: 0
    functionLinenumber: 384
    functionLinenumberEnd: 421
    functionName: getfd
    functionSourceFile: /src/pdns/pdns/recursordist/rec_channel_rec.cc
    functionUses: 0
    functionsReached:
    - CMSG_FIRSTHDR
    - recvmsg
    - PDNSException
    - CMSG_DATA
    - "union\n  {\n    struct cmsghdr hdr;\n    std::array<unsigned char, CMSG_SPACE(sizeof(int))>
      buf{};\n  }::buf::size"
    - "union\n  {\n    struct cmsghdr hdr;\n    std::array<unsigned char, CMSG_SPACE(sizeof(int))>
      buf{};\n  }::buf::data"
    - memset
    - CMSG_NXTHDR
    - reinterpret_cast<int*>
    - std::array::data
    - CMSG_LEN
    - std::array::size
    linkageType: ''
    returnType: FDWrapper
    signature: FDWrapper getfd(int socket)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: dup
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:429,1
    - Dst: pdns::UniqueFilePtr
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:433,1
    - Dst: fdopen
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:433,1
    - Dst: fprintf
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:437,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:437,1
    - Dst: Utility::gettimeofday
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:440,1
    - Dst: dumpToFile
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:441,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 1
    argNames:
    - fileDesc
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 442
      start: 423
    functionDepth: 0
    functionLinenumber: 423
    functionLinenumberEnd: 442
    functionName: dumpAggressiveNSECCache
    functionSourceFile: /src/pdns/pdns/recursordist/rec_channel_rec.cc
    functionUses: 0
    functionsReached:
    - fprintf
    - auto::get
    - Utility::gettimeofday
    - dup
    - dumpToFile
    - pdns::UniqueFilePtr
    - fdopen
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t dumpAggressiveNSECCache(int fileDesc)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dumpCookies
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:447,1
    - Dst: uint64_t::uint64_t
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:447,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - fileDesc
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 448
      start: 445
    functionDepth: 1
    functionLinenumber: 445
    functionLinenumberEnd: 448
    functionName: pleaseDumpCookiesMap
    functionSourceFile: /src/pdns/pdns/recursordist/rec_channel_rec.cc
    functionUses: 0
    functionsReached:
    - dumpCookies
    - uint64_t::uint64_t
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t * pleaseDumpCookiesMap(int fileDesc)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SyncRes::doEDNSDump
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:452,1
    - Dst: uint64_t::uint64_t
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:452,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - fileDesc
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 453
      start: 450
    functionDepth: 1
    functionLinenumber: 450
    functionLinenumberEnd: 453
    functionName: pleaseDumpEDNSMap
    functionSourceFile: /src/pdns/pdns/recursordist/rec_channel_rec.cc
    functionUses: 0
    functionsReached:
    - SyncRes::doEDNSDump
    - uint64_t::uint64_t
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t * pleaseDumpEDNSMap(int fileDesc)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SyncRes::doDumpNSSpeeds
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:457,1
    - Dst: uint64_t::uint64_t
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:457,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - fileDesc
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 458
      start: 455
    functionDepth: 1
    functionLinenumber: 455
    functionLinenumberEnd: 458
    functionName: pleaseDumpNSSpeeds
    functionSourceFile: /src/pdns/pdns/recursordist/rec_channel_rec.cc
    functionUses: 0
    functionsReached:
    - SyncRes::doDumpNSSpeeds
    - uint64_t::uint64_t
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t * pleaseDumpNSSpeeds(int fileDesc)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SyncRes::doDumpThrottleMap
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:462,1
    - Dst: uint64_t::uint64_t
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:462,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - fileDesc
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 463
      start: 460
    functionDepth: 1
    functionLinenumber: 460
    functionLinenumberEnd: 463
    functionName: pleaseDumpThrottleMap
    functionSourceFile: /src/pdns/pdns/recursordist/rec_channel_rec.cc
    functionUses: 0
    functionsReached:
    - uint64_t::uint64_t
    - SyncRes::doDumpThrottleMap
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t * pleaseDumpThrottleMap(int fileDesc)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SyncRes::doDumpFailedServers
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:467,1
    - Dst: uint64_t::uint64_t
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:467,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - fileDesc
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 468
      start: 465
    functionDepth: 1
    functionLinenumber: 465
    functionLinenumberEnd: 468
    functionName: pleaseDumpFailedServers
    functionSourceFile: /src/pdns/pdns/recursordist/rec_channel_rec.cc
    functionUses: 0
    functionsReached:
    - SyncRes::doDumpFailedServers
    - uint64_t::uint64_t
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t * pleaseDumpFailedServers(int fileDesc)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SyncRes::doDumpSavedParentNSSets
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:472,1
    - Dst: uint64_t::uint64_t
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:472,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - fileDesc
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 473
      start: 470
    functionDepth: 1
    functionLinenumber: 470
    functionLinenumberEnd: 473
    functionName: pleaseDumpSavedParentNSSets
    functionSourceFile: /src/pdns/pdns/recursordist/rec_channel_rec.cc
    functionUses: 0
    functionsReached:
    - SyncRes::doDumpSavedParentNSSets
    - uint64_t::uint64_t
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t * pleaseDumpSavedParentNSSets(int fileDesc)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SyncRes::doDumpNonResolvingNS
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:477,1
    - Dst: uint64_t::uint64_t
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:477,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - fileDesc
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 478
      start: 475
    functionDepth: 1
    functionLinenumber: 475
    functionLinenumberEnd: 478
    functionName: pleaseDumpNonResolvingNS
    functionSourceFile: /src/pdns/pdns/recursordist/rec_channel_rec.cc
    functionUses: 0
    functionsReached:
    - uint64_t::uint64_t
    - SyncRes::doDumpNonResolvingNS
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t * pleaseDumpNonResolvingNS(int fileDesc)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SyncRes::doDumpDoTProbeMap
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:482,1
    - Dst: uint64_t::uint64_t
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:482,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - fileDesc
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 483
      start: 480
    functionDepth: 1
    functionLinenumber: 480
    functionLinenumberEnd: 483
    functionName: pleaseDumpDoTProbeMap
    functionSourceFile: /src/pdns/pdns/recursordist/rec_channel_rec.cc
    functionUses: 0
    functionsReached:
    - SyncRes::doDumpDoTProbeMap
    - uint64_t::uint64_t
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t * pleaseDumpDoTProbeMap(int fileDesc)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: getfd
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:489,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:492,1
    - Dst: broadcastAccFunction
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:499,1
    - Dst: function
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:499,1
    - Dst: function
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:502,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:508,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:508,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:514,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 3
    argNames:
    - socket
    - (*function)(int)
    - ' name'
    argTypes:
    - int
    - uint64_t*
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 515
      start: 487
    functionDepth: 1
    functionLinenumber: 487
    functionLinenumberEnd: 515
    functionName: doDumpToFile
    functionSourceFile: /src/pdns/pdns/recursordist/rec_channel_rec.cc
    functionUses: 0
    functionsReached:
    - std::to_string
    - stringerror
    - what
    - string
    - broadcastAccFunction
    - getfd
    - function
    linkageType: ''
    returnType: RecursorControlChannel::Answer
    signature: RecursorControlChannel::Answer doDumpToFile(int socket, uint64_t* (*function)(int),
      const string& name, bool threads = true)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: getfd
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:520,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:523,1
    - Dst: doDump
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:552,1
    - Dst: load
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:552,1
    - Dst: doDump
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:555,1
    - Dst: load
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:555,1
    - Dst: doDump
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:558,1
    - Dst: dumpAggressiveNSECCache
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:561,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:568,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 41
    argCount: 3
    argNames:
    - socket
    - begin
    - end
    argTypes:
    - int
    - ArgIterator
    - ArgIterator
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 569
      start: 518
    functionDepth: 1
    functionLinenumber: 518
    functionLinenumberEnd: 569
    functionName: doDumpCache
    functionSourceFile: /src/pdns/pdns/recursordist/rec_channel_rec.cc
    functionUses: 0
    functionsReached:
    - load
    - std::to_string
    - stringerror
    - dumpAggressiveNSECCache
    - getfd
    - doDump
    linkageType: ''
    returnType: RecursorControlChannel::Answer
    signature: RecursorControlChannel::Answer doDumpCache(int socket, ArgIterator
      begin, ArgIterator end)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: getfd
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:574,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:577,1
    - Dst: getLocal
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:587,1
    - Dst: auto::dfe::getZone
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:588,1
    - Dst: pdns::UniqueFilePtr
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:593,1
    - Dst: fdopen
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:593,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:596,1
    - Dst: auto::dump
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:599,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:599,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 3
    argNames:
    - socket
    - begin
    - end
    argTypes:
    - int
    - ArgIterator
    - ArgIterator
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 602
      start: 572
    functionDepth: 1
    functionLinenumber: 572
    functionLinenumberEnd: 602
    functionName: doDumpRPZ
    functionSourceFile: /src/pdns/pdns/recursordist/rec_channel_rec.cc
    functionUses: 0
    functionsReached:
    - auto::dump
    - auto::get
    - auto::dfe::getZone
    - stringerror
    - getLocal
    - getfd
    - pdns::UniqueFilePtr
    - fdopen
    linkageType: ''
    returnType: RecursorControlChannel::Answer
    signature: RecursorControlChannel::Answer doDumpRPZ(int socket, ArgIterator begin,
      ArgIterator end)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DNSName::DNSName
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:608,1
    - Dst: boost::ends_with
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:612,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:613,1
    - Dst: auto::substr
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:613,1
    - Dst: auto::size
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:613,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:617,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:621,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:621,1
    - Dst: vector::emplace_back
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:623,1
    - Dst: wipeCaches
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:631,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:637,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:641,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:641,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:641,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 23
    argCount: 3
    argNames:
    - begin
    - end
    - qtype
    argTypes:
    - ArgIterator
    - ArgIterator
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 642
      start: 604
    functionDepth: 1
    functionLinenumber: 604
    functionLinenumberEnd: 642
    functionName: doWipeCache
    functionSourceFile: /src/pdns/pdns/recursordist/rec_channel_rec.cc
    functionUses: 0
    functionsReached:
    - std::to_string
    - what
    - DNSName
    - wipeCaches
    - auto::substr
    - vector::emplace_back
    - DNSName::DNSName
    - std::string
    - boost::ends_with
    - auto::size
    linkageType: ''
    returnType: Answer
    signature: Answer doWipeCache(ArgIterator begin, ArgIterator end, uint16_t qtype)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pdns::checked_stoi_into
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:647,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - ' yamlSetting'
    - ' oldstyle'
    - ' value'
    argTypes:
    - T
    - U
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 651
      start: 645
    functionDepth: 0
    functionLinenumber: 645
    functionLinenumberEnd: 651
    functionName: setBothYamlAndOldStyleInt
    functionSourceFile: /src/pdns/pdns/recursordist/rec_channel_rec.cc
    functionUses: 0
    functionsReached:
    - pdns::checked_stoi_into
    linkageType: ''
    returnType: void
    signature: void setBothYamlAndOldStyleInt(T& yamlSetting, U& oldstyle, const string&
      value)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: getCopy
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:655,1
    - Dst: auto::servers::clear
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:657,1
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:659,1
    - Dst: server::clear
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:659,1
    - Dst: setState
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:661,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:661,1
    - Dst: stringtok
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:666,1
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:668,1
    - Dst: server::emplace_back
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:668,1
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:676,1
    - Dst: setState
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:681,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:681,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:682,1
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:689,1
    - Dst: setState
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:694,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:694,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:695,1
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:702,1
    - Dst: setState
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:707,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:707,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:708,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 46
    argCount: 2
    argNames:
    - begin
    - end
    argTypes:
    - ArgIterator
    - ArgIterator
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 709
      start: 653
    functionDepth: 1
    functionLinenumber: 653
    functionLinenumberEnd: 709
    functionName: doSetCarbonServer
    functionSourceFile: /src/pdns/pdns/recursordist/rec_channel_rec.cc
    functionUses: 0
    functionsReached:
    - setState
    - std::move
    - stringtok
    - auto::servers::clear
    - lock
    - getCopy
    - server::clear
    - server::emplace_back
    linkageType: ''
    returnType: Answer
    signature: Answer doSetCarbonServer(ArgIterator begin, ArgIterator end)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: checkDNSSECDisabled
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:713,1
    - Dst: pdns_iequals
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:719,1
    - Dst: pdns_iequals
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:719,1
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:720,1
    - Dst: pdns_iequals
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:729,1
    - Dst: pdns_iequals
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:729,1
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:730,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 24
    argCount: 2
    argNames:
    - begin
    - end
    argTypes:
    - ArgIterator
    - ArgIterator
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 740
      start: 711
    functionDepth: 1
    functionLinenumber: 711
    functionLinenumberEnd: 740
    functionName: doSetDnssecLogBogus
    functionSourceFile: /src/pdns/pdns/recursordist/rec_channel_rec.cc
    functionUses: 0
    functionsReached:
    - pdns_iequals
    - checkDNSSECDisabled
    - lock
    linkageType: ''
    returnType: Answer
    signature: Answer doSetDnssecLogBogus(ArgIterator begin, ArgIterator end)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: checkDNSSECDisabled
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:744,1
    - Dst: DNSName::DNSName
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:750,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:752,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:756,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:758,1
    - Dst: modify
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:771,1
    - Dst: wipeCaches
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:775,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:778,1
    - Dst: DNSName::toStringRootDot
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:779,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:779,1
    - Dst: DNSName::toLogString
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:781,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 33
    argCount: 2
    argNames:
    - begin
    - end
    argTypes:
    - ArgIterator
    - ArgIterator
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 782
      start: 742
    functionDepth: 1
    functionLinenumber: 742
    functionLinenumberEnd: 782
    functionName: doAddNTA
    functionSourceFile: /src/pdns/pdns/recursordist/rec_channel_rec.cc
    functionUses: 0
    functionsReached:
    - std::move
    - modify
    - what
    - checkDNSSECDisabled
    - DNSName::toStringRootDot
    - DNSName
    - wipeCaches
    - DNSName::toLogString
    - DNSName::DNSName
    linkageType: ''
    returnType: Answer
    signature: Answer doAddNTA(ArgIterator begin, ArgIterator end)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: checkDNSSECDisabled
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:786,1
    - Dst: modify
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:794,1
    - Dst: negAnchors::clear
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:795,1
    - Dst: DNSName::DNSName
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:801,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:807,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:811,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:813,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:815,1
    - Dst: modify
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:824,1
    - Dst: negAnchors::erase
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:825,1
    - Dst: wipeCaches
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:827,1
    - Dst: toStringRootDot
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:832,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:836,1
    - Dst: DNSName::toStringRootDot
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:837,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:837,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 45
    argCount: 2
    argNames:
    - begin
    - end
    argTypes:
    - ArgIterator
    - ArgIterator
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 841
      start: 784
    functionDepth: 1
    functionLinenumber: 784
    functionLinenumberEnd: 841
    functionName: doClearNTA
    functionSourceFile: /src/pdns/pdns/recursordist/rec_channel_rec.cc
    functionUses: 0
    functionsReached:
    - modify
    - std::move
    - vector::push_back
    - negAnchors::erase
    - what
    - checkDNSSECDisabled
    - DNSName::toStringRootDot
    - DNSName
    - wipeCaches
    - toStringRootDot
    - DNSName::DNSName
    - negAnchors::clear
    linkageType: ''
    returnType: Answer
    signature: Answer doClearNTA(ArgIterator begin, ArgIterator end)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: checkDNSSECDisabled
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:845,1
    - Dst: getLocal
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:849,1
    - Dst: first::toLogString
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:851,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:853,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 854
      start: 843
    functionDepth: 1
    functionLinenumber: 843
    functionLinenumberEnd: 854
    functionName: getNTAs
    functionSourceFile: /src/pdns/pdns/recursordist/rec_channel_rec.cc
    functionUses: 0
    functionsReached:
    - getLocal
    - checkDNSSECDisabled
    - first::toLogString
    - std::move
    linkageType: ''
    returnType: Answer
    signature: Answer getNTAs(ArgIterator /* begin */, ArgIterator /* end */)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: checkDNSSECDisabled
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:858,1
    - Dst: DNSName::DNSName
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:864,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:866,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:870,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:872,1
    - Dst: modify
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:884,1
    - Dst: std::dynamic_pointer_cast<DSRecordContent>
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:885,1
    - Dst: make
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:885,1
    - Dst: insert
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:886,1
    - Dst: wipeCaches
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:888,1
    - Dst: DNSName::toStringRootDot
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:890,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:893,1
    - Dst: DNSName::toStringRootDot
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:894,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:894,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 31
    argCount: 2
    argNames:
    - begin
    - end
    argTypes:
    - ArgIterator
    - ArgIterator
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 896
      start: 856
    functionDepth: 1
    functionLinenumber: 856
    functionLinenumberEnd: 896
    functionName: doAddTA
    functionSourceFile: /src/pdns/pdns/recursordist/rec_channel_rec.cc
    functionUses: 0
    functionsReached:
    - std::move
    - modify
    - std::dynamic_pointer_cast<DSRecordContent>
    - what
    - checkDNSSECDisabled
    - DNSName::toStringRootDot
    - DNSName
    - wipeCaches
    - insert
    - make
    - DNSName::DNSName
    linkageType: ''
    returnType: Answer
    signature: Answer doAddTA(ArgIterator begin, ArgIterator end)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: checkDNSSECDisabled
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:900,1
    - Dst: DNSName::DNSName
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:907,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:910,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:914,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:916,1
    - Dst: DNSName::isRoot
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:918,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:921,1
    - Dst: modify
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:930,1
    - Dst: dsAnchors::erase
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:931,1
    - Dst: wipeCaches
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:933,1
    - Dst: toStringRootDot
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:938,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:942,1
    - Dst: DNSName::toStringRootDot
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:943,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:943,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 38
    argCount: 2
    argNames:
    - begin
    - end
    argTypes:
    - ArgIterator
    - ArgIterator
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 947
      start: 898
    functionDepth: 1
    functionLinenumber: 898
    functionLinenumberEnd: 947
    functionName: doClearTA
    functionSourceFile: /src/pdns/pdns/recursordist/rec_channel_rec.cc
    functionUses: 0
    functionsReached:
    - std::move
    - vector::push_back
    - modify
    - dsAnchors::erase
    - what
    - checkDNSSECDisabled
    - DNSName::isRoot
    - DNSName::toStringRootDot
    - DNSName
    - wipeCaches
    - toStringRootDot
    - DNSName::DNSName
    linkageType: ''
    returnType: Answer
    signature: Answer doClearTA(ArgIterator begin, ArgIterator end)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: checkDNSSECDisabled
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:951,1
    - Dst: getLocal
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:955,1
    - Dst: first::toLogString
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:957,1
    - Dst: getZoneRepresentation
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:959,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:963,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 964
      start: 949
    functionDepth: 1
    functionLinenumber: 949
    functionLinenumberEnd: 964
    functionName: getTAs
    functionSourceFile: /src/pdns/pdns/recursordist/rec_channel_rec.cc
    functionUses: 0
    functionsReached:
    - getZoneRepresentation
    - std::move
    - first::toLogString
    - checkDNSSECDisabled
    - getLocal
    linkageType: ''
    returnType: Answer
    signature: Answer getTAs(ArgIterator /* begin */, ArgIterator /* end */)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: setBothYamlAndOldStyleInt
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:972,1
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:972,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:973,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:976,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:976,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - begin
    - end
    argTypes:
    - ArgIterator
    - ArgIterator
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 978
      start: 966
    functionDepth: 1
    functionLinenumber: 966
    functionLinenumberEnd: 978
    functionName: setMinimumTTL
    functionSourceFile: /src/pdns/pdns/recursordist/rec_channel_rec.cc
    functionUses: 0
    functionsReached:
    - std::to_string
    - what
    - setBothYamlAndOldStyleInt
    - lock
    - std::string
    linkageType: ''
    returnType: Answer
    signature: Answer setMinimumTTL(ArgIterator begin, ArgIterator end)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: setBothYamlAndOldStyleInt
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:986,1
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:986,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:987,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:990,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:990,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - begin
    - end
    argTypes:
    - ArgIterator
    - ArgIterator
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 992
      start: 980
    functionDepth: 1
    functionLinenumber: 980
    functionLinenumberEnd: 992
    functionName: setMinimumECSTTL
    functionSourceFile: /src/pdns/pdns/recursordist/rec_channel_rec.cc
    functionUses: 0
    functionsReached:
    - std::to_string
    - what
    - setBothYamlAndOldStyleInt
    - lock
    - std::string
    linkageType: ''
    returnType: Answer
    signature: Answer setMinimumECSTTL(ArgIterator begin, ArgIterator end)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: setBothYamlAndOldStyleInt
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1001,1
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1001,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1003,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1006,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1006,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - begin
    - end
    argTypes:
    - ArgIterator
    - ArgIterator
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1008
      start: 994
    functionDepth: 1
    functionLinenumber: 994
    functionLinenumberEnd: 1008
    functionName: setMaxCacheEntries
    functionSourceFile: /src/pdns/pdns/recursordist/rec_channel_rec.cc
    functionUses: 0
    functionsReached:
    - std::to_string
    - what
    - setBothYamlAndOldStyleInt
    - lock
    - std::string
    linkageType: ''
    returnType: Answer
    signature: Answer setMaxCacheEntries(ArgIterator begin, ArgIterator end)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1015,1
    - Dst: setBothYamlAndOldStyleInt
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1020,1
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1020,1
    - Dst: setMaxSize
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1022,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1023,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1026,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1026,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 2
    argNames:
    - begin
    - end
    argTypes:
    - ArgIterator
    - ArgIterator
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1028
      start: 1010
    functionDepth: 1
    functionLinenumber: 1010
    functionLinenumberEnd: 1028
    functionName: setMaxPacketCacheEntries
    functionSourceFile: /src/pdns/pdns/recursordist/rec_channel_rec.cc
    functionUses: 0
    functionsReached:
    - std::to_string
    - setMaxSize
    - what
    - setBothYamlAndOldStyleInt
    - lock
    - std::string
    - arg
    linkageType: ''
    returnType: Answer
    signature: Answer setMaxPacketCacheEntries(ArgIterator begin, ArgIterator end)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: setBothYamlAndOldStyleInt
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1040,1
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1040,1
    - Dst: setMaxEntries
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1041,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1042,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1045,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1045,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 2
    argNames:
    - begin
    - end
    argTypes:
    - ArgIterator
    - ArgIterator
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1047
      start: 1030
    functionDepth: 1
    functionLinenumber: 1030
    functionLinenumberEnd: 1047
    functionName: setAggrNSECCacheSize
    functionSourceFile: /src/pdns/pdns/recursordist/rec_channel_rec.cc
    functionUses: 0
    functionsReached:
    - std::to_string
    - setMaxEntries
    - what
    - setBothYamlAndOldStyleInt
    - lock
    - std::string
    linkageType: ''
    returnType: RecursorControlChannel::Answer
    signature: RecursorControlChannel::Answer setAggrNSECCacheSize(ArgIterator begin,
      ArgIterator end)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getrusage
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1052,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1054
      start: 1049
    functionDepth: 0
    functionLinenumber: 1049
    functionLinenumberEnd: 1054
    functionName: getSysTimeMsec
    functionSourceFile: /src/pdns/pdns/recursordist/rec_channel_rec.cc
    functionUses: 0
    functionsReached:
    - getrusage
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t getSysTimeMsec()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getrusage
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1059,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1061
      start: 1056
    functionDepth: 0
    functionLinenumber: 1056
    functionLinenumberEnd: 1061
    functionName: getUserTimeMsec
    functionSourceFile: /src/pdns/pdns/recursordist/rec_channel_rec.cc
    functionUses: 0
    functionsReached:
    - getrusage
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t getUserTimeMsec()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getrusage
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1077,1
    - Dst: vector<uint64_t>
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1081,1
    - Dst: ThreadTimes::ThreadTimes
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1081,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1082
      start: 1072
    functionDepth: 0
    functionLinenumber: 1072
    functionLinenumberEnd: 1082
    functionName: pleaseGetThreadCPUMsec
    functionSourceFile: /src/pdns/pdns/recursordist/rec_channel_rec.cc
    functionUses: 0
    functionsReached:
    - ThreadTimes::ThreadTimes
    - vector<uint64_t>
    - getrusage
    linkageType: ''
    returnType: ThreadTimes
    signature: ThreadTimes * pleaseGetThreadCPUMsec()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::scoped_lock
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1096,1
    - Dst: time
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1097,1
    - Dst: broadcastAccFunction
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1098,1
    - Dst: time
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1099,1
    - Dst: ThreadTimes::times::at
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1102,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - n
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1103
      start: 1090
    functionDepth: 1
    functionLinenumber: 1090
    functionLinenumberEnd: 1103
    functionName: doGetThreadCPUMsec
    functionSourceFile: /src/pdns/pdns/recursordist/rec_channel_rec.cc
    functionUses: 0
    functionsReached:
    - std::scoped_lock
    - time
    - broadcastAccFunction
    - ThreadTimes::times::at
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t doGetThreadCPUMsec(unsigned int n)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ProxyMappingStats_t::ProxyMappingStats_t
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1107,1
    - Dst: auto*::emplace
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1110,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1114
      start: 1105
    functionDepth: 0
    functionLinenumber: 1105
    functionLinenumberEnd: 1114
    functionName: pleaseGetProxyMappingStats
    functionSourceFile: /src/pdns/pdns/recursordist/rec_channel_rec.cc
    functionUses: 0
    functionsReached:
    - auto*::emplace
    - ProxyMappingStats_t::ProxyMappingStats_t
    linkageType: ''
    returnType: ProxyMappingStats_t
    signature: ProxyMappingStats_t * pleaseGetProxyMappingStats()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: make_unique<RemoteLoggerStats_t>
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1118,1
    - Dst: auto::emplace
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1122,1
    - Dst: address
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1122,1
    - Dst: getStats
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1122,1
    - Dst: auto::release
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1125,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1126
      start: 1116
    functionDepth: 0
    functionLinenumber: 1116
    functionLinenumberEnd: 1126
    functionName: pleaseGetRemoteLoggerStats
    functionSourceFile: /src/pdns/pdns/recursordist/rec_channel_rec.cc
    functionUses: 0
    functionsReached:
    - make_unique<RemoteLoggerStats_t>
    - address
    - getStats
    - auto::emplace
    - auto::release
    linkageType: ''
    returnType: RemoteLoggerStats_t
    signature: RemoteLoggerStats_t * pleaseGetRemoteLoggerStats()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: broadcastAccFunction
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1132,1
    - Dst: toString
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1134,1
    - Dst: ostringstream::str
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1136,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1137
      start: 1128
    functionDepth: 1
    functionLinenumber: 1128
    functionLinenumberEnd: 1137
    functionName: doGetProxyMappingStats
    functionSourceFile: /src/pdns/pdns/recursordist/rec_channel_rec.cc
    functionUses: 0
    functionsReached:
    - ostringstream::str
    - toString
    - broadcastAccFunction
    linkageType: ''
    returnType: Answer
    signature: Answer doGetProxyMappingStats(ArgIterator /* begin */, ArgIterator
      /* end */)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: make_unique<RemoteLoggerStats_t>
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1141,1
    - Dst: auto::emplace
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1145,1
    - Dst: address
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1145,1
    - Dst: getStats
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1145,1
    - Dst: auto::release
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1148,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1149
      start: 1139
    functionDepth: 0
    functionLinenumber: 1139
    functionLinenumberEnd: 1149
    functionName: pleaseGetOutgoingRemoteLoggerStats
    functionSourceFile: /src/pdns/pdns/recursordist/rec_channel_rec.cc
    functionUses: 0
    functionsReached:
    - make_unique<RemoteLoggerStats_t>
    - address
    - getStats
    - auto::emplace
    - auto::release
    linkageType: ''
    returnType: RemoteLoggerStats_t
    signature: RemoteLoggerStats_t * pleaseGetOutgoingRemoteLoggerStats()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: make_unique<RemoteLoggerStats_t>
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1154,1
    - Dst: auto::emplace
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1158,1
    - Dst: address
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1158,1
    - Dst: getStats
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1158,1
    - Dst: auto::release
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1161,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1162
      start: 1152
    functionDepth: 0
    functionLinenumber: 1152
    functionLinenumberEnd: 1162
    functionName: pleaseGetFramestreamLoggerStats
    functionSourceFile: /src/pdns/pdns/recursordist/rec_channel_rec.cc
    functionUses: 0
    functionsReached:
    - make_unique<RemoteLoggerStats_t>
    - address
    - getStats
    - auto::emplace
    - auto::release
    linkageType: ''
    returnType: RemoteLoggerStats_t
    signature: RemoteLoggerStats_t * pleaseGetFramestreamLoggerStats()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: make_unique<RemoteLoggerStats_t>
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1166,1
    - Dst: auto::emplace
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1170,1
    - Dst: address
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1170,1
    - Dst: getStats
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1170,1
    - Dst: auto::release
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1173,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1174
      start: 1164
    functionDepth: 0
    functionLinenumber: 1164
    functionLinenumberEnd: 1174
    functionName: pleaseGetNODFramestreamLoggerStats
    functionSourceFile: /src/pdns/pdns/recursordist/rec_channel_rec.cc
    functionUses: 0
    functionsReached:
    - make_unique<RemoteLoggerStats_t>
    - address
    - getStats
    - auto::emplace
    - auto::release
    linkageType: ''
    returnType: RemoteLoggerStats_t
    signature: RemoteLoggerStats_t * pleaseGetNODFramestreamLoggerStats()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1179,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - ' type'
    - ' stats'
    - ' outpustStream'
    argTypes:
    - string
    - RemoteLoggerStats_t
    - ostringstream
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1185
      start: 1177
    functionDepth: 0
    functionLinenumber: 1177
    functionLinenumberEnd: 1185
    functionName: remoteLoggerStats
    functionSourceFile: /src/pdns/pdns/recursordist/rec_channel_rec.cc
    functionUses: 0
    functionsReached:
    - empty
    linkageType: ''
    returnType: void
    signature: void remoteLoggerStats(const string& type, const RemoteLoggerStats_t&
      stats, ostringstream& outpustStream)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: broadcastAccFunction
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1192,1
    - Dst: remoteLoggerStats
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1193,1
    - Dst: broadcastAccFunction
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1194,1
    - Dst: remoteLoggerStats
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1195,1
    - Dst: broadcastAccFunction
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1197,1
    - Dst: remoteLoggerStats
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1198,1
    - Dst: broadcastAccFunction
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1199,1
    - Dst: remoteLoggerStats
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1200,1
    - Dst: ostringstream::str
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1202,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1203
      start: 1187
    functionDepth: 1
    functionLinenumber: 1187
    functionLinenumberEnd: 1203
    functionName: getRemoteLoggerStats
    functionSourceFile: /src/pdns/pdns/recursordist/rec_channel_rec.cc
    functionUses: 0
    functionsReached:
    - remoteLoggerStats
    - ostringstream::str
    - broadcastAccFunction
    linkageType: ''
    returnType: Answer
    signature: Answer getRemoteLoggerStats(ArgIterator /* begin */, ArgIterator /*
      end */)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: gettimeofday
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1209,1
    - Dst: getMT
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1211,1
    - Dst: getMT
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1217,1
    - Dst: DiffTime
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1219,1
    - Dst: domain::toLogString
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1221,1
    - Dst: DNSRecordContent::NumberToType
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1221,1
    - Dst: remote::toString
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1222,1
    - Dst: ostringstream::str
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1231,1
    - Dst: string::string
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1231,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1232
      start: 1205
    functionDepth: 1
    functionLinenumber: 1205
    functionLinenumberEnd: 1232
    functionName: pleaseGetCurrentQueries
    functionSourceFile: /src/pdns/pdns/recursordist/rec_channel_rec.cc
    functionUses: 0
    functionsReached:
    - domain::toLogString
    - DiffTime
    - remote::toString
    - ostringstream::str
    - DNSRecordContent::NumberToType
    - gettimeofday
    - getMT
    - string::string
    linkageType: ''
    returnType: string
    signature: string * pleaseGetCurrentQueries()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: broadcastAccFunction
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1236,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1237
      start: 1234
    functionDepth: 1
    functionLinenumber: 1234
    functionLinenumberEnd: 1237
    functionName: doCurrentQueries
    functionSourceFile: /src/pdns/pdns/recursordist/rec_channel_rec.cc
    functionUses: 0
    functionsReached:
    - broadcastAccFunction
    linkageType: ''
    returnType: Answer
    signature: Answer doCurrentQueries(ArgIterator /* begin */, ArgIterator /* end
      */)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1241,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1242
      start: 1239
    functionDepth: 0
    functionLinenumber: 1239
    functionLinenumberEnd: 1242
    functionName: getNegCacheSize
    functionSourceFile: /src/pdns/pdns/recursordist/rec_channel_rec.cc
    functionUses: 0
    functionsReached:
    - size
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t getNegCacheSize()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getMT
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1246,1
    - Dst: getMT
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1246,1
    - Dst: uint64_t::uint64_t
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1246,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1247
      start: 1244
    functionDepth: 1
    functionLinenumber: 1244
    functionLinenumberEnd: 1247
    functionName: pleaseGetConcurrentQueries
    functionSourceFile: /src/pdns/pdns/recursordist/rec_channel_rec.cc
    functionUses: 0
    functionsReached:
    - getMT
    - uint64_t::uint64_t
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t * pleaseGetConcurrentQueries()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: broadcastAccFunction
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1251,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1252
      start: 1249
    functionDepth: 1
    functionLinenumber: 1249
    functionLinenumberEnd: 1252
    functionName: getConcurrentQueries
    functionSourceFile: /src/pdns/pdns/recursordist/rec_channel_rec.cc
    functionUses: 0
    functionsReached:
    - broadcastAccFunction
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t getConcurrentQueries()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1256,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1257
      start: 1254
    functionDepth: 0
    functionLinenumber: 1254
    functionLinenumberEnd: 1257
    functionName: doGetCacheSize
    functionSourceFile: /src/pdns/pdns/recursordist/rec_channel_rec.cc
    functionUses: 0
    functionsReached:
    - size
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t doGetCacheSize()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: bytes
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1261,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1262
      start: 1259
    functionDepth: 0
    functionLinenumber: 1259
    functionLinenumberEnd: 1262
    functionName: doGetCacheBytes
    functionSourceFile: /src/pdns/pdns/recursordist/rec_channel_rec.cc
    functionUses: 0
    functionsReached:
    - bytes
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t doGetCacheBytes()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1270
      start: 1264
    functionDepth: 0
    functionLinenumber: 1264
    functionLinenumberEnd: 1270
    functionName: doGetMallocated
    functionSourceFile: /src/pdns/pdns/recursordist/rec_channel_rec.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t doGetMallocated()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getCumulativeBuckets
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1274,1
    - Dst: getPrometheusName
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1275,1
    - Dst: snprintf
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1280,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1280,1
    - Dst: std::array::size
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1280,1
    - Dst: static_cast<double>
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1280,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1281,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1281,1
    - Dst: StatsMap::emplace
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1282,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1282,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1282,1
    - Dst: snprintf
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1285,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1285,1
    - Dst: std::array::size
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1285,1
    - Dst: static_cast<double>
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1285,1
    - Dst: getSum
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1285,1
    - Dst: StatsMap::emplace
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1286,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1286,1
    - Dst: StatsMap::emplace
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1287,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1287,1
    - Dst: back
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1287,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - ' name'
    - ' histogram'
    argTypes:
    - string
    - pdns::Histogram
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1290
      start: 1272
    functionDepth: 1
    functionLinenumber: 1272
    functionLinenumberEnd: 1290
    functionName: toStatsMap
    functionSourceFile: /src/pdns/pdns/recursordist/rec_channel_rec.cc
    functionUses: 0
    functionsReached:
    - pdns::max
    - StatsMap::emplace
    - std::move
    - snprintf
    - static_cast<double>
    - std::to_string
    - getCumulativeBuckets
    - back
    - getPrometheusName
    - getSum
    - std::array::data
    - std::array::size
    linkageType: ''
    returnType: StatsMap
    signature: StatsMap toStatsMap(const string& name, const pdns::Histogram& histogram)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getPrometheusName
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1294,1
    - Dst: getCumulativeBuckets
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1299,1
    - Dst: snprintf
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1301,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1301,1
    - Dst: std::array::size
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1301,1
    - Dst: static_cast<double>
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1301,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1302,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1302,1
    - Dst: StatsMap::emplace
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1303,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1303,1
    - Dst: snprintf
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1305,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1305,1
    - Dst: std::array::size
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1305,1
    - Dst: static_cast<double>
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1305,1
    - Dst: getSum
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1305,1
    - Dst: StatsMap::emplace
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1306,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1306,1
    - Dst: StatsMap::emplace
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1307,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1307,1
    - Dst: back
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1307,1
    - Dst: getCumulativeBuckets
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1309,1
    - Dst: snprintf
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1311,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1311,1
    - Dst: std::array::size
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1311,1
    - Dst: static_cast<double>
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1311,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1312,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1312,1
    - Dst: StatsMap::emplace
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1313,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1313,1
    - Dst: snprintf
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1315,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1315,1
    - Dst: std::array::size
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1315,1
    - Dst: static_cast<double>
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1315,1
    - Dst: getSum
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1315,1
    - Dst: StatsMap::emplace
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1316,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1316,1
    - Dst: StatsMap::emplace
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1317,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1317,1
    - Dst: back
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1317,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 3
    argNames:
    - ' name'
    - ' histogram4'
    - ' histogram6'
    argTypes:
    - string
    - pdns::Histogram
    - pdns::Histogram
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1320
      start: 1292
    functionDepth: 1
    functionLinenumber: 1292
    functionLinenumberEnd: 1320
    functionName: toStatsMap
    functionSourceFile: /src/pdns/pdns/recursordist/rec_channel_rec.cc
    functionUses: 0
    functionsReached:
    - pdns::max
    - StatsMap::emplace
    - snprintf
    - static_cast<double>
    - std::to_string
    - getCumulativeBuckets
    - back
    - getPrometheusName
    - getSum
    - std::array::data
    - std::array::size
    linkageType: ''
    returnType: StatsMap
    signature: StatsMap toStatsMap(const string& name, const pdns::Histogram& histogram4,
      const pdns::Histogram& histogram6)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getPrometheusName
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1324,1
    - Dst: sum
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1328,1
    - Dst: RCode::to_short_s
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1330,1
    - Dst: StatsMap::emplace
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1333,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1333,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1333,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - ' name'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1337
      start: 1322
    functionDepth: 1
    functionLinenumber: 1322
    functionLinenumberEnd: 1337
    functionName: toAuthRCodeStatsMap
    functionSourceFile: /src/pdns/pdns/recursordist/rec_channel_rec.cc
    functionUses: 0
    functionsReached:
    - std::move
    - std::to_string
    - getPrometheusName
    - RCode::to_short_s
    - sum
    - StatsMap::emplace
    linkageType: ''
    returnType: StatsMap
    signature: StatsMap toAuthRCodeStatsMap(const string& name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getPrometheusName
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1341,1
    - Dst: numRecursorThreads
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1345,1
    - Dst: doGetThreadCPUMsec
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1346,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1347,1
    - Dst: StatsMap::emplace
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1348,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1348,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1348,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1348,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ' name'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1351
      start: 1339
    functionDepth: 2
    functionLinenumber: 1339
    functionLinenumberEnd: 1351
    functionName: toCPUStatsMap
    functionSourceFile: /src/pdns/pdns/recursordist/rec_channel_rec.cc
    functionUses: 0
    functionsReached:
    - std::move
    - std::to_string
    - getPrometheusName
    - doGetThreadCPUMsec
    - StatsMap::emplace
    - numRecursorThreads
    linkageType: ''
    returnType: StatsMap
    signature: StatsMap toCPUStatsMap(const string& name)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: getPrometheusName
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1355,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1364,1
    - Dst: StatsMap::emplace
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1374,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1374,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1374,1
    - Dst: StatsMap::emplace
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1377,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1377,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 2
    argNames:
    - ' name'
    - ' map'
    argTypes:
    - string
    - std::unordered_map<std::string, uint64_t>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1379
      start: 1353
    functionDepth: 1
    functionLinenumber: 1353
    functionLinenumberEnd: 1379
    functionName: toRPZStatsMap
    functionSourceFile: /src/pdns/pdns/recursordist/rec_channel_rec.cc
    functionUses: 0
    functionsReached:
    - std::move
    - std::to_string
    - getPrometheusName
    - empty
    - StatsMap::emplace
    linkageType: ''
    returnType: StatsMap
    signature: StatsMap toRPZStatsMap(const string& name, const std::unordered_map<std::string,
      uint64_t>& map)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getPrometheusName
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1383,1
    - Dst: broadcastAccFunction
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1386,1
    - Dst: toString
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1389,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1390,1
    - Dst: StatsMap::emplace
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1392,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1392,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1392,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1393,1
    - Dst: StatsMap::emplace
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1395,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1395,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1395,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - ' name'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1399
      start: 1381
    functionDepth: 1
    functionLinenumber: 1381
    functionLinenumberEnd: 1399
    functionName: toProxyMappingStatsMap
    functionSourceFile: /src/pdns/pdns/recursordist/rec_channel_rec.cc
    functionUses: 0
    functionsReached:
    - std::move
    - toString
    - std::to_string
    - getPrometheusName
    - broadcastAccFunction
    - StatsMap::emplace
    linkageType: ''
    returnType: StatsMap
    signature: StatsMap toProxyMappingStatsMap(const string& name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getPrometheusName
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1403,1
    - Dst: broadcastAccFunction
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1407,1
    - Dst: std::vector::emplace_back
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1408,1
    - Dst: broadcastAccFunction
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1409,1
    - Dst: std::vector::emplace_back
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1410,1
    - Dst: broadcastAccFunction
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1412,1
    - Dst: std::vector::emplace_back
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1413,1
    - Dst: broadcastAccFunction
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1414,1
    - Dst: std::vector::emplace_back
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1415,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1423,1
    - Dst: StatsMap::emplace
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1425,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1425,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1425,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1426,1
    - Dst: StatsMap::emplace
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1428,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1428,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1428,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1429,1
    - Dst: StatsMap::emplace
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1431,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1431,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1431,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1432,1
    - Dst: StatsMap::emplace
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1434,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1434,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1434,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 1
    argNames:
    - ' name'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1439
      start: 1401
    functionDepth: 1
    functionLinenumber: 1401
    functionLinenumberEnd: 1439
    functionName: toRemoteLoggerStatsMap
    functionSourceFile: /src/pdns/pdns/recursordist/rec_channel_rec.cc
    functionUses: 0
    functionsReached:
    - std::move
    - std::to_string
    - std::vector::emplace_back
    - getPrometheusName
    - broadcastAccFunction
    - StatsMap::emplace
    linkageType: ''
    returnType: StatsMap
    signature: StatsMap toRemoteLoggerStatsMap(const string& name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SyncRes::clearECSStats
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1448,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1449,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1450,1
    - Dst: addGetStat
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1451,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1451,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1453,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1454,1
    - Dst: addGetStat
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1455,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1455,1
    - Dst: addGetStat
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1458,1
    - Dst: toStatsMap
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1459,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1459,1
    - Dst: sum
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1459,1
    - Dst: addGetStat
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1461,1
    - Dst: toStatsMap
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1462,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1462,1
    - Dst: sum
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1462,1
    - Dst: sum
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1462,1
    - Dst: addGetStat
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1464,1
    - Dst: toRPZStatsMap
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1465,1
    - Dst: sum
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1465,1
    - Dst: addGetStat
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1467,1
    - Dst: toProxyMappingStatsMap
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1468,1
    - Dst: addGetStat
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1470,1
    - Dst: toAuthRCodeStatsMap
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1471,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 23
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1473
      start: 1443
    functionDepth: 2
    functionLinenumber: 1443
    functionLinenumberEnd: 1473
    functionName: registerAllStats1
    functionSourceFile: /src/pdns/pdns/recursordist/rec_channel_rec.cc
    functionUses: 0
    functionsReached:
    - addGetStat
    - toProxyMappingStatsMap
    - std::to_string
    - size
    - toStatsMap
    - toAuthRCodeStatsMap
    - SyncRes::clearECSStats
    - at
    - sum
    - toRPZStatsMap
    linkageType: ''
    returnType: void
    signature: void registerAllStats1()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: registerAllStats1
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1478,1
    - Dst: exit
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1482,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1484
      start: 1475
    functionDepth: 3
    functionLinenumber: 1475
    functionLinenumberEnd: 1484
    functionName: registerAllStats
    functionSourceFile: /src/pdns/pdns/recursordist/rec_channel_rec.cc
    functionUses: 0
    functionsReached:
    - exit
    - registerAllStats1
    linkageType: ''
    returnType: void
    signature: void registerAllStats()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vector::emplace_back
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1489,1
    - Dst: doQueueReloadLuaScript
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1490,1
    - Dst: vector::begin
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1490,1
    - Dst: vector::end
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1490,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1491
      start: 1486
    functionDepth: 1
    functionLinenumber: 1486
    functionLinenumberEnd: 1491
    functionName: clearLuaScript
    functionSourceFile: /src/pdns/pdns/recursordist/rec_channel_rec.cc
    functionUses: 0
    functionsReached:
    - vector::begin
    - doQueueReloadLuaScript
    - vector::emplace_back
    - vector::end
    linkageType: ''
    returnType: auto
    signature: auto clearLuaScript(ArgIterator /* begin */, ArgIterator /* end */)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: _exit
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1497,1
    - Dst: withName
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1499,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1499,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1501,1
    - Dst: unlink
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1502,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1502,1
    - Dst: condVar::wait
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1509,1
    - Dst: done::load
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1509,1
    - Dst: ~RecursorControlChannel
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1516,1
    - Dst: clearLuaScript
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1518,1
    - Dst: pdns::coverage::dumpCoverageData
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1519,1
    - Dst: __lsan_do_leak_check
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1520,1
    - Dst: _exit
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1521,1
    - Dst: pdns::coverage::dumpCoverageData
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1523,1
    - Dst: _exit
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1524,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 21
    argCount: 1
    argNames:
    - nicely
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1527
      start: 1494
    functionDepth: 2
    functionLinenumber: 1494
    functionLinenumberEnd: 1527
    functionName: doExitGeneric
    functionSourceFile: /src/pdns/pdns/recursordist/rec_channel_rec.cc
    functionUses: 0
    functionsReached:
    - _exit
    - c_str
    - Logging::Loggable
    - withName
    - ~RecursorControlChannel
    - clearLuaScript
    - __lsan_do_leak_check
    - done::load
    - unlink
    - empty
    - condVar::wait
    - pdns::coverage::dumpCoverageData
    linkageType: ''
    returnType: void
    signature: void doExitGeneric(bool nicely)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: doExitGeneric
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1531,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1532
      start: 1529
    functionDepth: 3
    functionLinenumber: 1529
    functionLinenumberEnd: 1532
    functionName: doExit
    functionSourceFile: /src/pdns/pdns/recursordist/rec_channel_rec.cc
    functionUses: 0
    functionsReached:
    - doExitGeneric
    linkageType: ''
    returnType: void
    signature: void doExit()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: doExitGeneric
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1536,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1537
      start: 1534
    functionDepth: 3
    functionLinenumber: 1534
    functionLinenumberEnd: 1537
    functionName: doExitNicely
    functionSourceFile: /src/pdns/pdns/recursordist/rec_channel_rec.cc
    functionUses: 3
    functionsReached:
    - doExitGeneric
    linkageType: ''
    returnType: void
    signature: void doExitNicely()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: vector<query_t>::vector<query_t>
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1543,1
    - Dst: auto*::reserve
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1547,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1547,1
    - Dst: auto*::emplace_back
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1550,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1553
      start: 1540
    functionDepth: 0
    functionLinenumber: 1540
    functionLinenumberEnd: 1553
    functionName: pleaseGetQueryRing
    functionSourceFile: /src/pdns/pdns/recursordist/rec_channel_rec.cc
    functionUses: 0
    functionsReached:
    - auto*::reserve
    - auto*::emplace_back
    - size
    - vector<query_t>::vector<query_t>
    linkageType: ''
    returnType: vector<pair<DNSName, uint16_t>>
    signature: vector<pair<DNSName, uint16_t>> * pleaseGetQueryRing()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: vector<query_t>::vector<query_t>
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1557,1
    - Dst: auto*::reserve
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1561,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1561,1
    - Dst: auto*::emplace_back
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1563,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1566
      start: 1554
    functionDepth: 0
    functionLinenumber: 1554
    functionLinenumberEnd: 1566
    functionName: pleaseGetServfailQueryRing
    functionSourceFile: /src/pdns/pdns/recursordist/rec_channel_rec.cc
    functionUses: 0
    functionsReached:
    - auto*::reserve
    - auto*::emplace_back
    - size
    - vector<query_t>::vector<query_t>
    linkageType: ''
    returnType: vector<pair<DNSName, uint16_t>>
    signature: vector<pair<DNSName, uint16_t>> * pleaseGetServfailQueryRing()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: vector<query_t>::vector<query_t>
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1570,1
    - Dst: auto*::reserve
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1574,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1574,1
    - Dst: auto*::emplace_back
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1576,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1579
      start: 1567
    functionDepth: 0
    functionLinenumber: 1567
    functionLinenumberEnd: 1579
    functionName: pleaseGetBogusQueryRing
    functionSourceFile: /src/pdns/pdns/recursordist/rec_channel_rec.cc
    functionUses: 0
    functionsReached:
    - auto*::reserve
    - auto*::emplace_back
    - size
    - vector<query_t>::vector<query_t>
    linkageType: ''
    returnType: vector<pair<DNSName, uint16_t>>
    signature: vector<pair<DNSName, uint16_t>> * pleaseGetBogusQueryRing()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: vector<ComboAddress>::vector<ComboAddress>
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1586,1
    - Dst: auto*::reserve
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1590,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1590,1
    - Dst: auto*::emplace_back
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1592,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1595
      start: 1584
    functionDepth: 0
    functionLinenumber: 1584
    functionLinenumberEnd: 1595
    functionName: pleaseGetRemotes
    functionSourceFile: /src/pdns/pdns/recursordist/rec_channel_rec.cc
    functionUses: 0
    functionsReached:
    - vector<ComboAddress>::vector<ComboAddress>
    - auto*::emplace_back
    - size
    - auto*::reserve
    linkageType: ''
    returnType: vector<ComboAddress>
    signature: vector<ComboAddress> * pleaseGetRemotes()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: vector<ComboAddress>::vector<ComboAddress>
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1599,1
    - Dst: auto*::reserve
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1603,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1603,1
    - Dst: auto*::push_back
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1605,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1608
      start: 1597
    functionDepth: 0
    functionLinenumber: 1597
    functionLinenumberEnd: 1608
    functionName: pleaseGetServfailRemotes
    functionSourceFile: /src/pdns/pdns/recursordist/rec_channel_rec.cc
    functionUses: 0
    functionsReached:
    - vector<ComboAddress>::vector<ComboAddress>
    - auto*::push_back
    - size
    - auto*::reserve
    linkageType: ''
    returnType: vector<ComboAddress>
    signature: vector<ComboAddress> * pleaseGetServfailRemotes()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: vector<ComboAddress>::vector<ComboAddress>
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1612,1
    - Dst: auto*::reserve
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1616,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1616,1
    - Dst: auto*::emplace_back
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1618,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1621
      start: 1610
    functionDepth: 0
    functionLinenumber: 1610
    functionLinenumberEnd: 1621
    functionName: pleaseGetBogusRemotes
    functionSourceFile: /src/pdns/pdns/recursordist/rec_channel_rec.cc
    functionUses: 0
    functionsReached:
    - vector<ComboAddress>::vector<ComboAddress>
    - auto*::emplace_back
    - size
    - auto*::reserve
    linkageType: ''
    returnType: vector<ComboAddress>
    signature: vector<ComboAddress> * pleaseGetBogusRemotes()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: vector<ComboAddress>::vector<ComboAddress>
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1625,1
    - Dst: auto*::reserve
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1629,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1629,1
    - Dst: auto*::emplace_back
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1631,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1634
      start: 1623
    functionDepth: 0
    functionLinenumber: 1623
    functionLinenumberEnd: 1634
    functionName: pleaseGetLargeAnswerRemotes
    functionSourceFile: /src/pdns/pdns/recursordist/rec_channel_rec.cc
    functionUses: 0
    functionsReached:
    - vector<ComboAddress>::vector<ComboAddress>
    - auto*::emplace_back
    - size
    - auto*::reserve
    linkageType: ''
    returnType: vector<ComboAddress>
    signature: vector<ComboAddress> * pleaseGetLargeAnswerRemotes()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: vector<ComboAddress>::vector<ComboAddress>
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1638,1
    - Dst: auto*::reserve
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1642,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1642,1
    - Dst: auto*::emplace_back
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1644,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1647
      start: 1636
    functionDepth: 0
    functionLinenumber: 1636
    functionLinenumberEnd: 1647
    functionName: pleaseGetTimeouts
    functionSourceFile: /src/pdns/pdns/recursordist/rec_channel_rec.cc
    functionUses: 0
    functionsReached:
    - vector<ComboAddress>::vector<ComboAddress>
    - auto*::emplace_back
    - size
    - auto*::reserve
    linkageType: ''
    returnType: vector<ComboAddress>
    signature: vector<ComboAddress> * pleaseGetTimeouts()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: broadcastAccFunction
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1652,1
    - Dst: auto::size
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1653,1
    - Dst: std::multimap::emplace
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1665,1
    - Dst: std::multimap::rbegin
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1673,1
    - Dst: std::multimap::rend
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1673,1
    - Dst: auto::second::toString
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1674,1
    - Dst: ostringstream::str
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1679,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 1
    argNames:
    - ' func'
    argTypes:
    - pleaseremotefunc_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1680
      start: 1650
    functionDepth: 1
    functionLinenumber: 1650
    functionLinenumberEnd: 1680
    functionName: doGenericTopRemotes
    functionSourceFile: /src/pdns/pdns/recursordist/rec_channel_rec.cc
    functionUses: 0
    functionsReached:
    - auto::second::toString
    - ostringstream::str
    - broadcastAccFunction
    - std::multimap::rbegin
    - auto::size
    - std::multimap::emplace
    - std::multimap::rend
    linkageType: ''
    returnType: Answer
    signature: Answer doGenericTopRemotes(const pleaseremotefunc_t& func)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: getRawLabels
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1685,1
    - Dst: auto::size
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1686,1
    - Dst: reverse
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1689,1
    - Dst: auto::begin
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1689,1
    - Dst: auto::end
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1689,1
    - Dst: toLower
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1691,1
    - Dst: auto::empty
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1696,1
    - Dst: auto::size
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1697,1
    - Dst: binary_search
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1697,1
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1697,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1697,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1699,1
    - Dst: string::empty
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1700,1
    - Dst: auto::crbegin
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1703,1
    - Dst: auto::crend
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1703,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1706,1
    - Dst: auto::size
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1709,1
    - Dst: auto::resize
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1710,1
    - Dst: auto::size
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1710,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1712,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 22
    argCount: 1
    argNames:
    - ' dom'
    argTypes:
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1713
      start: 1683
    functionDepth: 1
    functionLinenumber: 1683
    functionLinenumberEnd: 1713
    functionName: getRegisteredName
    functionSourceFile: /src/pdns/pdns/recursordist/rec_channel_rec.cc
    functionUses: 0
    functionsReached:
    - getRawLabels
    - std::move
    - auto::crbegin
    - binary_search
    - string::empty
    - reverse
    - toLower
    - end
    - DNSName
    - auto::begin
    - auto::resize
    - auto::crend
    - begin
    - auto::end
    - auto::size
    - auto::empty
    linkageType: ''
    returnType: DNSName
    signature: DNSName getRegisteredName(const DNSName& dom)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' name'
    argTypes:
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1718
      start: 1715
    functionDepth: 0
    functionLinenumber: 1715
    functionLinenumberEnd: 1718
    functionName: nopFilter
    functionSourceFile: /src/pdns/pdns/recursordist/rec_channel_rec.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: DNSName
    signature: DNSName nopFilter(const DNSName& name)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: broadcastAccFunction
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1723,1
    - Dst: auto::size
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1724,1
    - Dst: pair
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1731,1
    - Dst: filter
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1731,1
    - Dst: std::multimap::emplace
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1736,1
    - Dst: std::multimap::rbegin
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1744,1
    - Dst: std::multimap::rend
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1744,1
    - Dst: auto::second::first::toLogString
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1745,1
    - Dst: DNSRecordContent::NumberToType
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1745,1
    - Dst: ostringstream::str
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1751,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 1
    argNames:
    - ' func'
    argTypes:
    - pleasequeryfunc_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1752
      start: 1720
    functionDepth: 1
    functionLinenumber: 1720
    functionLinenumberEnd: 1752
    functionName: doGenericTopQueries
    functionSourceFile: /src/pdns/pdns/recursordist/rec_channel_rec.cc
    functionUses: 0
    functionsReached:
    - pair
    - ostringstream::str
    - filter
    - broadcastAccFunction
    - std::multimap::rbegin
    - auto::second::first::toLogString
    - DNSRecordContent::NumberToType
    - auto::size
    - std::multimap::emplace
    - std::multimap::rend
    linkageType: ''
    returnType: Answer
    signature: Answer doGenericTopQueries(const pleasequeryfunc_t& func, const std::function<DNSName(const
      DNSName&)>& filter = nopFilter)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: isWildcardExpandedOntoItself
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1756,1
    - Dst: string::string
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1756,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1757
      start: 1754
    functionDepth: 0
    functionLinenumber: 1754
    functionLinenumberEnd: 1757
    functionName: nopFunction
    functionSourceFile: /src/pdns/pdns/recursordist/rec_channel_rec.cc
    functionUses: 0
    functionsReached:
    - isWildcardExpandedOntoItself
    - string::string
    linkageType: ''
    returnType: string
    signature: string * nopFunction()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getLocal
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1761,1
    - Dst: auto::toString
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1762,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1763
      start: 1759
    functionDepth: 0
    functionLinenumber: 1759
    functionLinenumberEnd: 1763
    functionName: getDontThrottleNames
    functionSourceFile: /src/pdns/pdns/recursordist/rec_channel_rec.cc
    functionUses: 0
    functionsReached:
    - getLocal
    - auto::toString
    linkageType: ''
    returnType: Answer
    signature: Answer getDontThrottleNames(ArgIterator /* begin */, ArgIterator /*
      end */)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getLocal
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1767,1
    - Dst: auto::toString
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1768,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1769
      start: 1765
    functionDepth: 0
    functionLinenumber: 1765
    functionLinenumberEnd: 1769
    functionName: getDontThrottleNetmasks
    functionSourceFile: /src/pdns/pdns/recursordist/rec_channel_rec.cc
    functionUses: 0
    functionsReached:
    - getLocal
    - auto::toString
    linkageType: ''
    returnType: Answer
    signature: Answer getDontThrottleNetmasks(ArgIterator /* begin */, ArgIterator
      /* end */)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1779,1
    - Dst: vector::emplace_back
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1780,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1780,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1783,1
    - Dst: getCopy
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1789,1
    - Dst: auto::toLogString
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1796,1
    - Dst: auto::add
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1797,1
    - Dst: setState
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1800,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1800,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 23
    argCount: 2
    argNames:
    - begin
    - end
    argTypes:
    - ArgIterator
    - ArgIterator
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1805
      start: 1771
    functionDepth: 0
    functionLinenumber: 1771
    functionLinenumberEnd: 1805
    functionName: addDontThrottleNames
    functionSourceFile: /src/pdns/pdns/recursordist/rec_channel_rec.cc
    functionUses: 0
    functionsReached:
    - std::move
    - setState
    - what
    - DNSName
    - getCopy
    - vector::emplace_back
    - auto::add
    - auto::toLogString
    linkageType: ''
    returnType: Answer
    signature: Answer addDontThrottleNames(ArgIterator begin, ArgIterator end)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Netmask
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1815,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1816,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1819,1
    - Dst: getCopy
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1828,1
    - Dst: auto::toString
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1835,1
    - Dst: auto::addMask
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1836,1
    - Dst: setState
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1839,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1839,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 25
    argCount: 2
    argNames:
    - begin
    - end
    argTypes:
    - ArgIterator
    - ArgIterator
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1844
      start: 1807
    functionDepth: 0
    functionLinenumber: 1807
    functionLinenumberEnd: 1844
    functionName: addDontThrottleNetmasks
    functionSourceFile: /src/pdns/pdns/recursordist/rec_channel_rec.cc
    functionUses: 0
    functionsReached:
    - Netmask
    - setState
    - vector::push_back
    - std::move
    - auto::addMask
    - what
    - getCopy
    - auto::toString
    linkageType: ''
    returnType: Answer
    signature: Answer addDontThrottleNetmasks(ArgIterator begin, ArgIterator end)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: setState
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1853,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1853,1
    - Dst: vector::emplace_back
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1865,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1868,1
    - Dst: getCopy
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1875,1
    - Dst: toLogString
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1881,1
    - Dst: auto::remove
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1882,1
    - Dst: setState
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1885,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1885,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 31
    argCount: 2
    argNames:
    - begin
    - end
    argTypes:
    - ArgIterator
    - ArgIterator
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1890
      start: 1846
    functionDepth: 0
    functionLinenumber: 1846
    functionLinenumberEnd: 1890
    functionName: clearDontThrottleNames
    functionSourceFile: /src/pdns/pdns/recursordist/rec_channel_rec.cc
    functionUses: 0
    functionsReached:
    - setState
    - std::move
    - toLogString
    - what
    - getCopy
    - vector::emplace_back
    - auto::remove
    linkageType: ''
    returnType: Answer
    signature: Answer clearDontThrottleNames(ArgIterator begin, ArgIterator end)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: getCopy
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1898,1
    - Dst: auto::clear
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1899,1
    - Dst: setState
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1900,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1900,1
    - Dst: Netmask
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1913,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1914,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1917,1
    - Dst: getCopy
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1927,1
    - Dst: toString
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1933,1
    - Dst: auto::deleteMask
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1934,1
    - Dst: setState
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1937,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1937,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 34
    argCount: 2
    argNames:
    - begin
    - end
    argTypes:
    - ArgIterator
    - ArgIterator
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1942
      start: 1892
    functionDepth: 1
    functionLinenumber: 1892
    functionLinenumberEnd: 1942
    functionName: clearDontThrottleNetmasks
    functionSourceFile: /src/pdns/pdns/recursordist/rec_channel_rec.cc
    functionUses: 0
    functionsReached:
    - Netmask
    - setState
    - std::move
    - std::vector::push_back
    - toString
    - auto::deleteMask
    - what
    - getCopy
    - auto::clear
    linkageType: ''
    returnType: Answer
    signature: Answer clearDontThrottleNetmasks(ArgIterator begin, ArgIterator end)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: setBothYamlAndOldStyleInt
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1950,1
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1950,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1951,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1954,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1954,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - begin
    - end
    argTypes:
    - ArgIterator
    - ArgIterator
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1956
      start: 1944
    functionDepth: 1
    functionLinenumber: 1944
    functionLinenumberEnd: 1956
    functionName: setEventTracing
    functionSourceFile: /src/pdns/pdns/recursordist/rec_channel_rec.cc
    functionUses: 0
    functionsReached:
    - std::to_string
    - what
    - setBothYamlAndOldStyleInt
    - lock
    - std::string
    linkageType: ''
    returnType: Answer
    signature: Answer setEventTracing(ArgIterator begin, ArgIterator end)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1960,1
    - Dst: make_unique<ProxyMapping>
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1965,1
    - Dst: auto::insert
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1967,1
    - Dst: lookup
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1970,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1975,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 1
    argNames:
    - ' proxyMapping'
    argTypes:
    - ProxyMapping
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1978
      start: 1958
    functionDepth: 1
    functionLinenumber: 1958
    functionLinenumberEnd: 1978
    functionName: pleaseSupplantProxyMapping
    functionSourceFile: /src/pdns/pdns/recursordist/rec_channel_rec.cc
    functionUses: 0
    functionsReached:
    - std::move
    - lookup
    - make_unique<ProxyMapping>
    - auto::insert
    - empty
    linkageType: ''
    returnType: void
    signature: void * pleaseSupplantProxyMapping(const ProxyMapping& proxyMapping)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1982,1
    - Dst: std::make_unique<OpenTelemetryTraceConditions>
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1986,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - ' conditions'
    argTypes:
    - OpenTelemetryTraceConditions
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1989
      start: 1980
    functionDepth: 0
    functionLinenumber: 1980
    functionLinenumberEnd: 1989
    functionName: pleaseSupplantOTConditions
    functionSourceFile: /src/pdns/pdns/recursordist/rec_channel_rec.cc
    functionUses: 0
    functionsReached:
    - empty
    - std::make_unique<OpenTelemetryTraceConditions>
    linkageType: ''
    returnType: void
    signature: void * pleaseSupplantOTConditions(const OpenTelemetryTraceConditions&
      conditions)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: broadcastFunction
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1994,1
    - Dst: pleaseSupplantOTConditions
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:1994,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - ' conditions'
    argTypes:
    - OpenTelemetryTraceConditions
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1995
      start: 1991
    functionDepth: 1
    functionLinenumber: 1991
    functionLinenumberEnd: 1995
    functionName: updateOTConditions
    functionSourceFile: /src/pdns/pdns/recursordist/rec_channel_rec.cc
    functionUses: 0
    functionsReached:
    - pleaseSupplantOTConditions
    - broadcastFunction
    linkageType: ''
    returnType: void
    signature: void updateOTConditions(const OpenTelemetryTraceConditions& conditions)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::setw
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:2073,1
    - Dst: ostringstream::str
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:2075,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2076
      start: 1997
    functionDepth: 0
    functionLinenumber: 1997
    functionLinenumberEnd: 2076
    functionName: help
    functionSourceFile: /src/pdns/pdns/recursordist/rec_channel_rec.cc
    functionUses: 0
    functionsReached:
    - ostringstream::str
    - std::setw
    linkageType: ''
    returnType: RecursorControlChannel::Answer
    signature: RecursorControlChannel::Answer help(ArgIterator /* begin */, ArgIterator
      /* end */)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: activateLuaConfig
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:2083,1
    - Dst: getCopy
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:2084,1
    - Dst: startLuaConfigDelayedThreads
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:2086,1
    - Dst: broadcastFunction
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:2087,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:2087,1
    - Dst: pleaseSupplantProxyMapping
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:2087,1
    - Dst: broadcastFunction
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:2088,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:2088,1
    - Dst: pleaseSupplantOTConditions
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:2088,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:2092,1
    - Dst: std::make_unique<ProxyMapping>
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:2092,1
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:2093,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:2093,1
    - Dst: std::make_unique<OpenTelemetryTraceConditions>
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:2093,1
    - Dst: withName
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:2096,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 4
    argNames:
    - ' lci'
    - broadcast
    - ' proxyMapping'
    - ' conditions'
    argTypes:
    - LuaConfigItems
    - bool
    - ProxyMapping
    - OpenTelemetryTraceConditions
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2098
      start: 2079
    functionDepth: 2
    functionLinenumber: 2079
    functionLinenumberEnd: 2098
    functionName: activateLua
    functionSourceFile: /src/pdns/pdns/recursordist/rec_channel_rec.cc
    functionUses: 0
    functionsReached:
    - std::move
    - broadcastFunction
    - withName
    - std::make_unique<ProxyMapping>
    - startLuaConfigDelayedThreads
    - pleaseSupplantProxyMapping
    - lock
    - std::make_unique<OpenTelemetryTraceConditions>
    - getCopy
    - empty
    - pleaseSupplantOTConditions
    - activateLuaConfig
    linkageType: ''
    returnType: void
    signature: void activateLua(LuaConfigItems& lci, bool broadcast, ProxyMapping&&
      proxyMapping, OpenTelemetryTraceConditions&& conditions)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: LuaConfigItems::LuaConfigItems
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:2103,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:2111,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:2112,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:2112,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:2113,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:2113,1
    - Dst: pdns::settings::rec::tryReadYAML
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:2117,1
    - Dst: LuaConfigItems::LuaConfigItems
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:2128,1
    - Dst: pdns::settings::rec::fromBridgeStructToLuaConfig
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:2129,1
    - Dst: TCPOutConnectionManager::setupOutgoingTLSConfigTables
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:2130,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:2132,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:2132,1
    - Dst: loadRecursorLuaConfig
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:2133,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:2133,1
    - Dst: activateLua
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:2135,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:2135,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:2135,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:2137,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:2137,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:2138,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:2143,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:2143,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:2146,1
    - Dst: getLocal
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:2154,1
    - Dst: pdns::settings::rec::fromBridgeStructToLuaConfig
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:2156,1
    - Dst: activateLua
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:2157,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:2157,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:2157,1
    - Dst: TCPOutConnectionManager::setupOutgoingTLSConfigTables
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:2158,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:2163,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:2163,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 42
    argCount: 1
    argNames:
    - broadcast
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2168
      start: 2100
    functionDepth: 3
    functionLinenumber: 2100
    functionLinenumberEnd: 2168
    functionName: luaconfig
    functionSourceFile: /src/pdns/pdns/recursordist/rec_channel_rec.cc
    functionUses: 0
    functionsReached:
    - pdns::settings::rec::tryReadYAML
    - TCPOutConnectionManager::setupOutgoingTLSConfigTables
    - std::move
    - LuaConfigItems::LuaConfigItems
    - what
    - getLocal
    - empty
    - activateLua
    - loadRecursorLuaConfig
    - arg
    - std::string
    - pdns::settings::rec::fromBridgeStructToLuaConfig
    linkageType: ''
    returnType: RecursorControlChannel::Answer
    signature: RecursorControlChannel::Answer luaconfig(bool broadcast)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:2176,1
    - Dst: luaconfig
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:2178,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - begin
    - end
    argTypes:
    - ArgIterator
    - ArgIterator
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2179
      start: 2170
    functionDepth: 4
    functionLinenumber: 2170
    functionLinenumberEnd: 2179
    functionName: luaconfig1
    functionSourceFile: /src/pdns/pdns/recursordist/rec_channel_rec.cc
    functionUses: 0
    functionsReached:
    - luaconfig
    - arg
    linkageType: ''
    returnType: RecursorControlChannel::Answer
    signature: RecursorControlChannel::Answer luaconfig1(ArgIterator begin, ArgIterator
      end)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:2183,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:2183,1
    - Dst: parseACLs
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:2189,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:2192,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:2193,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:2193,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:2197,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2200
      start: 2181
    functionDepth: 1
    functionLinenumber: 2181
    functionLinenumberEnd: 2200
    functionName: reloadACLs
    functionSourceFile: /src/pdns/pdns/recursordist/rec_channel_rec.cc
    functionUses: 0
    functionsReached:
    - what
    - parseACLs
    - string
    - empty
    - arg
    linkageType: ''
    returnType: RecursorControlChannel::Answer
    signature: RecursorControlChannel::Answer reloadACLs(ArgIterator /* begin */,
      ArgIterator /* end */)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::RecResolve::getInstance
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:2204,1
    - Dst: stopRefresher
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:2205,1
    - Dst: wipe
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:2206,1
    - Dst: reloadZoneConfiguration
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:2207,1
    - Dst: startRefresher
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:2208,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2210
      start: 2202
    functionDepth: 1
    functionLinenumber: 2202
    functionLinenumberEnd: 2210
    functionName: reloadZoneConfigurationWithSysResolveReset
    functionSourceFile: /src/pdns/pdns/recursordist/rec_channel_rec.cc
    functionUses: 0
    functionsReached:
    - pdns::RecResolve::getInstance
    - reloadZoneConfiguration
    - startRefresher
    - wipe
    - stopRefresher
    linkageType: ''
    returnType: std::string
    signature: std::string reloadZoneConfigurationWithSysResolveReset()
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: stringtok
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:2216,1
    - Dst: vector::empty
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:2218,1
    - Dst: toLower
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:2222,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:2222,1
    - Dst: getPDNSVersion
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:2236,1
    - Dst: doDumpCache
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:2240,1
    - Dst: clearCookies
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:2244,1
    - Dst: string::empty
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:2245,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:2246,1
    - Dst: addS
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:2246,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:2248,1
    - Dst: addS
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:2248,1
    - Dst: addCookiesUnsupported
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:2252,1
    - Dst: string::empty
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:2253,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:2254,1
    - Dst: addS
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:2254,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:2256,1
    - Dst: addS
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:2256,1
    - Dst: doDumpToFile
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:2259,1
    - Dst: doDumpToFile
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:2262,1
    - Dst: doDumpToFile
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:2265,1
    - Dst: doDumpToFile
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:2268,1
    - Dst: doDumpToFile
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:2271,1
    - Dst: doDumpToFile
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:2274,1
    - Dst: doDumpToFile
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:2277,1
    - Dst: doDumpRPZ
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:2280,1
    - Dst: doDumpToFile
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:2283,1
    - Dst: doDumpToFile
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:2286,1
    - Dst: doWipeCache
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:2289,1
    - Dst: doWipeCache
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:2292,1
    - Dst: QType::chartocode
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:2298,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:2298,1
    - Dst: doWipeCache
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:2303,1
    - Dst: doTraceRegex
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:2310,1
    - Dst: FDWrapper
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:2310,1
    - Dst: getfd
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:2310,1
    - Dst: doGenericTopRemotes
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:2315,1
    - Dst: doGenericTopQueries
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:2318,1
    - Dst: doGenericTopQueries
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:2321,1
    - Dst: doGenericTopQueries
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:2324,1
    - Dst: doGenericTopQueries
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:2327,1
    - Dst: doGenericTopQueries
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:2330,1
    - Dst: doGenericTopQueries
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:2333,1
    - Dst: doGenericTopRemotes
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:2336,1
    - Dst: doGenericTopRemotes
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:2339,1
    - Dst: doGenericTopRemotes
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:2342,1
    - Dst: doGenericTopRemotes
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:2345,1
    - Dst: broadcastAccFunction
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:2349,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:2352,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:2352,1
    - Dst: reloadZoneConfigurationWithSysResolveReset
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:2356,1
    - Dst: sum
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:2363,1
    - Dst: DNSCryptoKeyEngine::listSupportedAlgoNames
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:2382,1
    - Dst: withName
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:2382,1
    - Dst: std::unordered_map::find
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:2387,1
    - Dst: std::unordered_map::end
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:2387,1
    - Dst: vector::begin
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:2388,1
    - Dst: vector::end
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:2389,1
    - Dst: auto::second
      Src: /src/pdns/pdns/recursordist/rec_channel_rec.cc:2390,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 103
    argCount: 3
    argNames:
    - socket
    - ' question'
    - command
    argTypes:
    - int
    - string
    - RecursorControlParser::func_t**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2394
      start: 2212
    functionDepth: 2
    functionLinenumber: 2212
    functionLinenumberEnd: 2394
    functionName: RecursorControlParser::getAnswer
    functionSourceFile: /src/pdns/pdns/recursordist/rec_channel_rec.cc
    functionUses: 0
    functionsReached:
    - addS
    - std::to_string
    - withName
    - QType::chartocode
    - doDumpToFile
    - vector::begin
    - doTraceRegex
    - stringtok
    - vector::at
    - string::empty
    - doDumpCache
    - getfd
    - getPDNSVersion
    - DNSCryptoKeyEngine::listSupportedAlgoNames
    - c_str
    - empty
    - sum
    - doDumpRPZ
    - addCookiesUnsupported
    - std::unordered_map::find
    - toLower
    - clearCookies
    - vector::end
    - vector::empty
    - FDWrapper
    - broadcastAccFunction
    - arg
    - std::unordered_map::end
    - doWipeCache
    - auto::second
    - doGenericTopRemotes
    - doGenericTopQueries
    - reloadZoneConfigurationWithSysResolveReset
    linkageType: ''
    returnType: RecursorControlChannel::Answer
    signature: RecursorControlChannel::Answer RecursorControlParser::getAnswer(int
      socket, const string& question, RecursorControlParser::func_t** command)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::string::resize
      Src: /src/pdns/pdns/recursordist/ednspadding.cc:28,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - bytes
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 30
      start: 25
    functionDepth: 1
    functionLinenumber: 25
    functionLinenumberEnd: 30
    functionName: makeEDNSPaddingOptString
    functionSourceFile: /src/pdns/pdns/recursordist/ednspadding.cc
    functionUses: 2
    functionsReached:
    - std::string::resize
    linkageType: ''
    returnType: std::string
    signature: std::string makeEDNSPaddingOptString(size_t bytes)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::Resource::encode
      Src: /src/pdns/pdns/recursordist/test-protozero-trace.cc:21,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-protozero-trace.cc:26,1
    - Dst: makeHexDump
      Src: /src/pdns/pdns/recursordist/test-protozero-trace.cc:26,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 27
      start: 16
    functionDepth: 0
    functionLinenumber: 16
    functionLinenumberEnd: 27
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-protozero-trace.cc
    functionUses: 0
    functionsReached:
    - makeHexDump
    - pdns::trace::Resource::encode
    - BOOST_CHECK_EQUAL
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(resource0)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::Resource::encode
      Src: /src/pdns/pdns/recursordist/test-protozero-trace.cc:41,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-protozero-trace.cc:46,1
    - Dst: makeHexDump
      Src: /src/pdns/pdns/recursordist/test-protozero-trace.cc:46,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 29
    functionDepth: 0
    functionLinenumber: 29
    functionLinenumberEnd: 47
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-protozero-trace.cc
    functionUses: 0
    functionsReached:
    - makeHexDump
    - pdns::trace::Resource::encode
    - BOOST_CHECK_EQUAL
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(resource1)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::AnyValue::encode
      Src: /src/pdns/pdns/recursordist/test-protozero-trace.cc:55,1
    - Dst: pdns::trace::AnyValue::decode
      Src: /src/pdns/pdns/recursordist/test-protozero-trace.cc:62,1
    - Dst: std::holds_alternative<pdns::trace::NoValue>
      Src: /src/pdns/pdns/recursordist/test-protozero-trace.cc:63,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-protozero-trace.cc:64,1
    - Dst: std::get<T>
      Src: /src/pdns/pdns/recursordist/test-protozero-trace.cc:64,1
    - Dst: std::holds_alternative<pdns::trace::ArrayValue>
      Src: /src/pdns/pdns/recursordist/test-protozero-trace.cc:67,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-protozero-trace.cc:68,1
    - Dst: std::get<pdns::trace::ArrayValue>
      Src: /src/pdns/pdns/recursordist/test-protozero-trace.cc:68,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/test-protozero-trace.cc:68,1
    - Dst: std::holds_alternative<pdns::trace::KeyValueList>
      Src: /src/pdns/pdns/recursordist/test-protozero-trace.cc:70,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-protozero-trace.cc:71,1
    - Dst: std::get<pdns::trace::KeyValueList>
      Src: /src/pdns/pdns/recursordist/test-protozero-trace.cc:71,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/test-protozero-trace.cc:71,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 1
    argNames:
    - ' testcase'
    argTypes:
    - T
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 50
    functionDepth: 0
    functionLinenumber: 50
    functionLinenumberEnd: 74
    functionName: testAny
    functionSourceFile: /src/pdns/pdns/recursordist/test-protozero-trace.cc
    functionUses: 1
    functionsReached:
    - BOOST_CHECK
    - pdns::trace::AnyValue::decode
    - std::holds_alternative<pdns::trace::NoValue>
    - std::holds_alternative<pdns::trace::ArrayValue>
    - std::get<T>
    - std::get<pdns::trace::KeyValueList>
    - empty
    - std::holds_alternative<pdns::trace::KeyValueList>
    - pdns::trace::AnyValue::encode
    - std::get<pdns::trace::ArrayValue>
    linkageType: ''
    returnType: void
    signature: void testAny(const T& testcase)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: testAny
      Src: /src/pdns/pdns/recursordist/test-protozero-trace.cc:78,1
    - Dst: testAny
      Src: /src/pdns/pdns/recursordist/test-protozero-trace.cc:79,1
    - Dst: testAny
      Src: /src/pdns/pdns/recursordist/test-protozero-trace.cc:80,1
    - Dst: testAny
      Src: /src/pdns/pdns/recursordist/test-protozero-trace.cc:81,1
    - Dst: static_cast<int64_t>
      Src: /src/pdns/pdns/recursordist/test-protozero-trace.cc:81,1
    - Dst: testAny
      Src: /src/pdns/pdns/recursordist/test-protozero-trace.cc:82,1
    - Dst: static_cast<int64_t>
      Src: /src/pdns/pdns/recursordist/test-protozero-trace.cc:82,1
    - Dst: testAny
      Src: /src/pdns/pdns/recursordist/test-protozero-trace.cc:83,1
    - Dst: static_cast<int64_t>
      Src: /src/pdns/pdns/recursordist/test-protozero-trace.cc:83,1
    - Dst: testAny
      Src: /src/pdns/pdns/recursordist/test-protozero-trace.cc:84,1
    - Dst: pdns::min
      Src: /src/pdns/pdns/recursordist/test-protozero-trace.cc:84,1
    - Dst: testAny
      Src: /src/pdns/pdns/recursordist/test-protozero-trace.cc:85,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/recursordist/test-protozero-trace.cc:85,1
    - Dst: testAny
      Src: /src/pdns/pdns/recursordist/test-protozero-trace.cc:86,1
    - Dst: testAny
      Src: /src/pdns/pdns/recursordist/test-protozero-trace.cc:87,1
    - Dst: testAny
      Src: /src/pdns/pdns/recursordist/test-protozero-trace.cc:88,1
    - Dst: testAny
      Src: /src/pdns/pdns/recursordist/test-protozero-trace.cc:89,1
    - Dst: pdns::min
      Src: /src/pdns/pdns/recursordist/test-protozero-trace.cc:89,1
    - Dst: testAny
      Src: /src/pdns/pdns/recursordist/test-protozero-trace.cc:90,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/recursordist/test-protozero-trace.cc:90,1
    - Dst: testAny
      Src: /src/pdns/pdns/recursordist/test-protozero-trace.cc:93,1
    - Dst: pdns::trace::ArrayValue::values::emplace_back
      Src: /src/pdns/pdns/recursordist/test-protozero-trace.cc:94,1
    - Dst: pdns::trace::ArrayValue::values::emplace_back
      Src: /src/pdns/pdns/recursordist/test-protozero-trace.cc:95,1
    - Dst: testAny
      Src: /src/pdns/pdns/recursordist/test-protozero-trace.cc:96,1
    - Dst: testAny
      Src: /src/pdns/pdns/recursordist/test-protozero-trace.cc:99,1
    - Dst: pdns::trace::KeyValueList::values::emplace_back
      Src: /src/pdns/pdns/recursordist/test-protozero-trace.cc:100,1
    - Dst: pdns::trace::KeyValueList::values::emplace_back
      Src: /src/pdns/pdns/recursordist/test-protozero-trace.cc:101,1
    - Dst: testAny
      Src: /src/pdns/pdns/recursordist/test-protozero-trace.cc:102,1
    - Dst: testAny
      Src: /src/pdns/pdns/recursordist/test-protozero-trace.cc:105,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/recursordist/test-protozero-trace.cc:106,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/recursordist/test-protozero-trace.cc:107,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/recursordist/test-protozero-trace.cc:108,1
    - Dst: testAny
      Src: /src/pdns/pdns/recursordist/test-protozero-trace.cc:109,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 27
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 76
    functionDepth: 0
    functionLinenumber: 76
    functionLinenumberEnd: 110
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-protozero-trace.cc
    functionUses: 0
    functionsReached:
    - pdns::max
    - std::vector::push_back
    - pdns::trace::KeyValueList::values::emplace_back
    - testAny
    - static_cast<int64_t>
    - pdns::trace::ArrayValue::values::emplace_back
    - pdns::min
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(any)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::TracesData::encode
      Src: /src/pdns/pdns/recursordist/test-protozero-trace.cc:132,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-protozero-trace.cc:152,1
    - Dst: makeHexDump
      Src: /src/pdns/pdns/recursordist/test-protozero-trace.cc:152,1
    - Dst: pdns::trace::TracesData::decode
      Src: /src/pdns/pdns/recursordist/test-protozero-trace.cc:155,1
    - Dst: std::string::clear
      Src: /src/pdns/pdns/recursordist/test-protozero-trace.cc:156,1
    - Dst: auto::encode
      Src: /src/pdns/pdns/recursordist/test-protozero-trace.cc:158,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-protozero-trace.cc:159,1
    - Dst: makeHexDump
      Src: /src/pdns/pdns/recursordist/test-protozero-trace.cc:159,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 160
      start: 112
    functionDepth: 1
    functionLinenumber: 112
    functionLinenumberEnd: 160
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-protozero-trace.cc
    functionUses: 0
    functionsReached:
    - pdns::trace::TracesData::encode
    - std::string::clear
    - BOOST_CHECK_EQUAL
    - auto::encode
    - pdns::trace::TracesData::decode
    - makeHexDump
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(traces1)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<uint32_t>
      Src: /src/pdns/pdns/recursordist/test-protozero-trace.cc:187,1
    - Dst: static_cast<uint32_t>
      Src: /src/pdns/pdns/recursordist/test-protozero-trace.cc:188,1
    - Dst: pdns::trace::TracesData::encode
      Src: /src/pdns/pdns/recursordist/test-protozero-trace.cc:210,1
    - Dst: pdns::trace::TracesData::decode
      Src: /src/pdns/pdns/recursordist/test-protozero-trace.cc:216,1
    - Dst: auto::encode
      Src: /src/pdns/pdns/recursordist/test-protozero-trace.cc:219,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-protozero-trace.cc:220,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 221
      start: 162
    functionDepth: 0
    functionLinenumber: 162
    functionLinenumberEnd: 221
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-protozero-trace.cc
    functionUses: 0
    functionsReached:
    - pdns::trace::TracesData::encode
    - BOOST_CHECK_EQUAL
    - static_cast<uint32_t>
    - auto::encode
    - pdns::trace::TracesData::decode
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(traces2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::array::size
      Src: /src/pdns/pdns/recursordist/test-protozero-trace.cc:229,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/recursordist/test-protozero-trace.cc:233,1
    - Dst: std::array::size
      Src: /src/pdns/pdns/recursordist/test-protozero-trace.cc:233,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-protozero-trace.cc:236,1
    - Dst: pdns::trace::EDNSOTTraceRecordView::getVersion
      Src: /src/pdns/pdns/recursordist/test-protozero-trace.cc:236,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-protozero-trace.cc:237,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-protozero-trace.cc:240,1
    - Dst: pdns::trace::EDNSOTTraceRecordView::getReserved
      Src: /src/pdns/pdns/recursordist/test-protozero-trace.cc:240,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-protozero-trace.cc:241,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-protozero-trace.cc:244,1
    - Dst: pdns::trace::EDNSOTTraceRecordView::getTraceID
      Src: /src/pdns/pdns/recursordist/test-protozero-trace.cc:244,1
    - Dst: BOOST_CHECK_EQUAL_COLLECTIONS
      Src: /src/pdns/pdns/recursordist/test-protozero-trace.cc:247,1
    - Dst: pdns::trace::TraceID::begin
      Src: /src/pdns/pdns/recursordist/test-protozero-trace.cc:247,1
    - Dst: pdns::trace::TraceID::end
      Src: /src/pdns/pdns/recursordist/test-protozero-trace.cc:247,1
    - Dst: std::array::begin
      Src: /src/pdns/pdns/recursordist/test-protozero-trace.cc:247,1
    - Dst: std::array::end
      Src: /src/pdns/pdns/recursordist/test-protozero-trace.cc:247,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-protozero-trace.cc:250,1
    - Dst: pdns::trace::EDNSOTTraceRecordView::getSpanID
      Src: /src/pdns/pdns/recursordist/test-protozero-trace.cc:250,1
    - Dst: BOOST_CHECK_EQUAL_COLLECTIONS
      Src: /src/pdns/pdns/recursordist/test-protozero-trace.cc:253,1
    - Dst: pdns::trace::SpanID::begin
      Src: /src/pdns/pdns/recursordist/test-protozero-trace.cc:253,1
    - Dst: pdns::trace::SpanID::end
      Src: /src/pdns/pdns/recursordist/test-protozero-trace.cc:253,1
    - Dst: std::array::begin
      Src: /src/pdns/pdns/recursordist/test-protozero-trace.cc:253,1
    - Dst: std::array::end
      Src: /src/pdns/pdns/recursordist/test-protozero-trace.cc:253,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-protozero-trace.cc:256,1
    - Dst: pdns::trace::EDNSOTTraceRecordView::getFlags
      Src: /src/pdns/pdns/recursordist/test-protozero-trace.cc:256,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-protozero-trace.cc:257,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 258
      start: 223
    functionDepth: 0
    functionLinenumber: 223
    functionLinenumberEnd: 258
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-protozero-trace.cc
    functionUses: 0
    functionsReached:
    - pdns::trace::TraceID::end
    - pdns::trace::EDNSOTTraceRecordView::getReserved
    - pdns::trace::TraceID::begin
    - pdns::trace::EDNSOTTraceRecordView::getSpanID
    - pdns::trace::EDNSOTTraceRecordView::getTraceID
    - pdns::trace::EDNSOTTraceRecordView::getFlags
    - std::array::end
    - BOOST_CHECK_EQUAL
    - std::array::data
    - BOOST_CHECK_EQUAL_COLLECTIONS
    - std::array::begin
    - BOOST_CHECK
    - pdns::trace::SpanID::end
    - pdns::trace::EDNSOTTraceRecordView::getVersion
    - std::array::size
    - pdns::trace::SpanID::begin
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(EDNSOTTraceRecordView)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::array::data
      Src: /src/pdns/pdns/recursordist/test-protozero-trace.cc:263,1
    - Dst: pdns::trace::TraceID::makeRandom
      Src: /src/pdns/pdns/recursordist/test-protozero-trace.cc:267,1
    - Dst: pdns::trace::SpanID::makeRandom
      Src: /src/pdns/pdns/recursordist/test-protozero-trace.cc:268,1
    - Dst: pdns::trace::EDNSOTTraceRecord::setVersion
      Src: /src/pdns/pdns/recursordist/test-protozero-trace.cc:269,1
    - Dst: pdns::trace::EDNSOTTraceRecord::setReserved
      Src: /src/pdns/pdns/recursordist/test-protozero-trace.cc:270,1
    - Dst: pdns::trace::EDNSOTTraceRecord::setTraceID
      Src: /src/pdns/pdns/recursordist/test-protozero-trace.cc:271,1
    - Dst: pdns::trace::EDNSOTTraceRecord::setSpanID
      Src: /src/pdns/pdns/recursordist/test-protozero-trace.cc:272,1
    - Dst: pdns::trace::EDNSOTTraceRecord::setFlags
      Src: /src/pdns/pdns/recursordist/test-protozero-trace.cc:273,1
    - Dst: pdns::trace::TraceID::size
      Src: /src/pdns/pdns/recursordist/test-protozero-trace.cc:279,1
    - Dst: pdns::trace::TraceID::data
      Src: /src/pdns/pdns/recursordist/test-protozero-trace.cc:280,1
    - Dst: pdns::trace::SpanID::size
      Src: /src/pdns/pdns/recursordist/test-protozero-trace.cc:282,1
    - Dst: pdns::trace::SpanID::data
      Src: /src/pdns/pdns/recursordist/test-protozero-trace.cc:283,1
    - Dst: BOOST_CHECK_EQUAL_COLLECTIONS
      Src: /src/pdns/pdns/recursordist/test-protozero-trace.cc:286,1
    - Dst: std::array::begin
      Src: /src/pdns/pdns/recursordist/test-protozero-trace.cc:286,1
    - Dst: std::array::end
      Src: /src/pdns/pdns/recursordist/test-protozero-trace.cc:286,1
    - Dst: std::array::begin
      Src: /src/pdns/pdns/recursordist/test-protozero-trace.cc:286,1
    - Dst: std::array::end
      Src: /src/pdns/pdns/recursordist/test-protozero-trace.cc:286,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 287
      start: 260
    functionDepth: 0
    functionLinenumber: 260
    functionLinenumberEnd: 287
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-protozero-trace.cc
    functionUses: 0
    functionsReached:
    - pdns::trace::TraceID::size
    - pdns::trace::EDNSOTTraceRecord::setSpanID
    - std::array::end
    - pdns::trace::TraceID::data
    - pdns::trace::SpanID::makeRandom
    - pdns::trace::TraceID::makeRandom
    - pdns::trace::EDNSOTTraceRecord::setTraceID
    - pdns::trace::EDNSOTTraceRecord::setFlags
    - pdns::trace::SpanID::data
    - BOOST_CHECK_EQUAL_COLLECTIONS
    - std::array::begin
    - pdns::trace::EDNSOTTraceRecord::setVersion
    - pdns::trace::EDNSOTTraceRecord::setReserved
    - std::array::data
    - pdns::trace::SpanID::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(EDNSOTTraceRecord)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: reinterpret_cast<MTasker<>*>
      Src: /src/pdns/pdns/recursordist/test-mtasker.cc:20,1
    - Dst: MTasker*::waitEvent
      Src: /src/pdns/pdns/recursordist/test-mtasker.cc:22,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - p
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 24
      start: 18
    functionDepth: 0
    functionLinenumber: 18
    functionLinenumberEnd: 24
    functionName: doSomething
    functionSourceFile: /src/pdns/pdns/recursordist/test-mtasker.cc
    functionUses: 0
    functionsReached:
    - MTasker*::waitEvent
    - reinterpret_cast<MTasker<>*>
    linkageType: ''
    returnType: void
    signature: void doSomething(void* p)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: MTasker::MTasker
      Src: /src/pdns/pdns/recursordist/test-mtasker.cc:28,1
    - Dst: MTasker::makeThread
      Src: /src/pdns/pdns/recursordist/test-mtasker.cc:29,1
    - Dst: gettimeofday
      Src: /src/pdns/pdns/recursordist/test-mtasker.cc:31,1
    - Dst: MTasker::schedule
      Src: /src/pdns/pdns/recursordist/test-mtasker.cc:35,1
    - Dst: MTasker::sendEvent
      Src: /src/pdns/pdns/recursordist/test-mtasker.cc:39,1
    - Dst: MTasker::noProcesses
      Src: /src/pdns/pdns/recursordist/test-mtasker.cc:42,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-mtasker.cc:45,1
    - Dst: MTasker::getEvents
      Src: /src/pdns/pdns/recursordist/test-mtasker.cc:47,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-mtasker.cc:48,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-mtasker.cc:48,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 26
    functionDepth: 1
    functionLinenumber: 26
    functionLinenumberEnd: 49
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-mtasker.cc
    functionUses: 0
    functionsReached:
    - MTasker::sendEvent
    - MTasker::noProcesses
    - MTasker::makeThread
    - MTasker::MTasker
    - BOOST_CHECK_EQUAL
    - MTasker::schedule
    - gettimeofday
    - MTasker::getEvents
    - vector::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_Simple)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/pdns/pdns/recursordist/test-mtasker.cc:59,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (0)
      pos:
        line_end: 58
        line_start: 58
        source_file: /src/pdns/pdns/recursordist/test-mtasker.cc
    constantsTouched: []
    func_position:
      end: 60
      start: 56
    functionDepth: 0
    functionLinenumber: 56
    functionLinenumberEnd: 60
    functionName: operator<(const MTKey& /* b */) const
    functionSourceFile: /src/pdns/pdns/recursordist/test-mtasker.cc
    functionUses: 0
    functionsReached:
    - assert
    linkageType: ''
    returnType: bool
    signature: bool operator<(const MTKey& /* b */) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' lhs'
    - ' rhs'
    argTypes:
    - std::shared_ptr<MTKey>
    - std::shared_ptr<MTKey>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 65
    functionDepth: 0
    functionLinenumber: 65
    functionLinenumberEnd: 68
    functionName: operator()(const std::shared_ptr<MTKey>& lhs, const std::shared_ptr<MTKey>&
      rhs) const
    functionSourceFile: /src/pdns/pdns/recursordist/test-mtasker.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool operator()(const std::shared_ptr<MTKey>& lhs, const std::shared_ptr<MTKey>&
      rhs) const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: reinterpret_cast<KeyMT_t*>
      Src: /src/pdns/pdns/recursordist/test-mtasker.cc:76,1
    - Dst: std::make_shared<MTKey>
      Src: /src/pdns/pdns/recursordist/test-mtasker.cc:77,1
    - Dst: std::make_shared<int>
      Src: /src/pdns/pdns/recursordist/test-mtasker.cc:79,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-mtasker.cc:80,1
    - Dst: auto::use_count
      Src: /src/pdns/pdns/recursordist/test-mtasker.cc:80,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-mtasker.cc:81,1
    - Dst: auto::ptr::use_count
      Src: /src/pdns/pdns/recursordist/test-mtasker.cc:81,1
    - Dst: auto*::waitEvent
      Src: /src/pdns/pdns/recursordist/test-mtasker.cc:83,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-mtasker.cc:86,1
    - Dst: auto::use_count
      Src: /src/pdns/pdns/recursordist/test-mtasker.cc:86,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-mtasker.cc:87,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/recursordist/test-mtasker.cc:88,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-mtasker.cc:89,1
    - Dst: auto::ptr::use_count
      Src: /src/pdns/pdns/recursordist/test-mtasker.cc:89,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-mtasker.cc:90,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 1
    argNames:
    - ptr
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 74
    functionDepth: 0
    functionLinenumber: 74
    functionLinenumberEnd: 91
    functionName: doSomethingKey
    functionSourceFile: /src/pdns/pdns/recursordist/test-mtasker.cc
    functionUses: 0
    functionsReached:
    - auto*::waitEvent
    - std::make_shared<MTKey>
    - std::make_shared<int>
    - BOOST_CHECK_EQUAL
    - reinterpret_cast<KeyMT_t*>
    - auto::ptr::use_count
    - BOOST_REQUIRE
    - auto::use_count
    linkageType: ''
    returnType: void
    signature: void doSomethingKey(void* ptr)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: KeyMT_t::makeThread
      Src: /src/pdns/pdns/recursordist/test-mtasker.cc:97,1
    - Dst: gettimeofday
      Src: /src/pdns/pdns/recursordist/test-mtasker.cc:99,1
    - Dst: std::make_shared<MTKey>
      Src: /src/pdns/pdns/recursordist/test-mtasker.cc:102,1
    - Dst: std::make_shared<int>
      Src: /src/pdns/pdns/recursordist/test-mtasker.cc:104,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-mtasker.cc:105,1
    - Dst: auto::ptr::use_count
      Src: /src/pdns/pdns/recursordist/test-mtasker.cc:105,1
    - Dst: KeyMT_t::schedule
      Src: /src/pdns/pdns/recursordist/test-mtasker.cc:107,1
    - Dst: KeyMT_t::sendEvent
      Src: /src/pdns/pdns/recursordist/test-mtasker.cc:111,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-mtasker.cc:112,1
    - Dst: auto::use_count
      Src: /src/pdns/pdns/recursordist/test-mtasker.cc:112,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-mtasker.cc:113,1
    - Dst: auto::ptr::use_count
      Src: /src/pdns/pdns/recursordist/test-mtasker.cc:113,1
    - Dst: KeyMT_t::noProcesses
      Src: /src/pdns/pdns/recursordist/test-mtasker.cc:116,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-mtasker.cc:120,1
    - Dst: KeyMT_t::getEvents
      Src: /src/pdns/pdns/recursordist/test-mtasker.cc:122,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-mtasker.cc:123,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-mtasker.cc:123,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-mtasker.cc:124,1
    - Dst: auto::use_count
      Src: /src/pdns/pdns/recursordist/test-mtasker.cc:124,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-mtasker.cc:125,1
    - Dst: auto::ptr::use_count
      Src: /src/pdns/pdns/recursordist/test-mtasker.cc:125,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-mtasker.cc:126,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 26
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 127
      start: 93
    functionDepth: 0
    functionLinenumber: 93
    functionLinenumberEnd: 127
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-mtasker.cc
    functionUses: 0
    functionsReached:
    - KeyMT_t::schedule
    - KeyMT_t::sendEvent
    - std::make_shared<MTKey>
    - std::make_shared<int>
    - BOOST_CHECK_EQUAL
    - KeyMT_t::makeThread
    - auto::ptr::use_count
    - KeyMT_t::noProcesses
    - KeyMT_t::getEvents
    - gettimeofday
    - vector::size
    - auto::use_count
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_SharedPointer)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: reinterpret_cast<MTasker<>*>
      Src: /src/pdns/pdns/recursordist/test-mtasker.cc:134,1
    - Dst: auto*::waitEvent
      Src: /src/pdns/pdns/recursordist/test-mtasker.cc:138,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 141
      start: 132
    functionDepth: 0
    functionLinenumber: 132
    functionLinenumberEnd: 141
    functionName: doAlmostStackoverflow
    functionSourceFile: /src/pdns/pdns/recursordist/test-mtasker.cc
    functionUses: 0
    functionsReached:
    - auto*::waitEvent
    - reinterpret_cast<MTasker<>*>
    linkageType: ''
    returnType: void
    signature: void doAlmostStackoverflow(void* arg)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: MTasker::makeThread
      Src: /src/pdns/pdns/recursordist/test-mtasker.cc:146,1
    - Dst: gettimeofday
      Src: /src/pdns/pdns/recursordist/test-mtasker.cc:148,1
    - Dst: MTasker::schedule
      Src: /src/pdns/pdns/recursordist/test-mtasker.cc:152,1
    - Dst: MTasker::sendEvent
      Src: /src/pdns/pdns/recursordist/test-mtasker.cc:156,1
    - Dst: MTasker::noProcesses
      Src: /src/pdns/pdns/recursordist/test-mtasker.cc:159,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-mtasker.cc:163,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 164
      start: 143
    functionDepth: 1
    functionLinenumber: 143
    functionLinenumberEnd: 164
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-mtasker.cc
    functionUses: 0
    functionsReached:
    - MTasker::sendEvent
    - MTasker::noProcesses
    - MTasker::makeThread
    - BOOST_CHECK_EQUAL
    - MTasker::schedule
    - gettimeofday
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_AlmostStackOverflow)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/test-mtasker.cc:168,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 169
      start: 166
    functionDepth: 0
    functionLinenumber: 166
    functionLinenumberEnd: 169
    functionName: willThrow
    functionSourceFile: /src/pdns/pdns/recursordist/test-mtasker.cc
    functionUses: 0
    functionsReached:
    - std::runtime_error
    linkageType: ''
    returnType: void
    signature: void willThrow(void* /* p */)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/recursordist/test-mtasker.cc:173,1
    - Dst: MTasker::MTasker
      Src: /src/pdns/pdns/recursordist/test-mtasker.cc:174,1
    - Dst: MTasker::makeThread
      Src: /src/pdns/pdns/recursordist/test-mtasker.cc:175,1
    - Dst: MTasker::schedule
      Src: /src/pdns/pdns/recursordist/test-mtasker.cc:180,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 182
      start: 171
    functionDepth: 1
    functionLinenumber: 171
    functionLinenumberEnd: 182
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-mtasker.cc
    functionUses: 0
    functionsReached:
    - MTasker::MTasker
    - MTasker::schedule
    - MTasker::makeThread
    - BOOST_CHECK_THROW
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_MtaskerException)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeNetmaskFromRPZ
      Src: /src/pdns/pdns/recursordist/test-rpzloader_cc.cc:36,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-rpzloader_cc.cc:36,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-rpzloader_cc.cc:37,1
    - Dst: Netmask::toString
      Src: /src/pdns/pdns/recursordist/test-rpzloader_cc.cc:37,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 39
      start: 18
    functionDepth: 1
    functionLinenumber: 18
    functionLinenumberEnd: 39
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-rpzloader_cc.cc
    functionUses: 0
    functionsReached:
    - makeNetmaskFromRPZ
    - Netmask::toString
    - BOOST_CHECK_EQUAL
    - DNSName
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_rpz_loader)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mkstemp
      Src: /src/pdns/pdns/recursordist/test-rpzloader_cc.cc:44,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/recursordist/test-rpzloader_cc.cc:44,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/recursordist/test-rpzloader_cc.cc:45,1
    - Dst: pdns::UniqueFilePtr
      Src: /src/pdns/pdns/recursordist/test-rpzloader_cc.cc:46,1
    - Dst: fdopen
      Src: /src/pdns/pdns/recursordist/test-rpzloader_cc.cc:46,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/recursordist/test-rpzloader_cc.cc:47,1
    - Dst: fwrite
      Src: /src/pdns/pdns/recursordist/test-rpzloader_cc.cc:48,1
    - Dst: data
      Src: /src/pdns/pdns/recursordist/test-rpzloader_cc.cc:48,1
    - Dst: length
      Src: /src/pdns/pdns/recursordist/test-rpzloader_cc.cc:48,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/test-rpzloader_cc.cc:48,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/recursordist/test-rpzloader_cc.cc:49,1
    - Dst: length
      Src: /src/pdns/pdns/recursordist/test-rpzloader_cc.cc:49,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/recursordist/test-rpzloader_cc.cc:50,1
    - Dst: fflush
      Src: /src/pdns/pdns/recursordist/test-rpzloader_cc.cc:50,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/test-rpzloader_cc.cc:50,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/recursordist/test-rpzloader_cc.cc:51,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - ' lines'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 41
    functionDepth: 0
    functionLinenumber: 41
    functionLinenumberEnd: 52
    functionName: makeFile
    functionSourceFile: /src/pdns/pdns/recursordist/test-rpzloader_cc.cc
    functionUses: 0
    functionsReached:
    - mkstemp
    - length
    - auto::get
    - data
    - fflush
    - fwrite
    - BOOST_REQUIRE
    - pdns::UniqueFilePtr
    - fdopen
    - std::array::data
    linkageType: ''
    returnType: string
    signature: string makeFile(const string& lines)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeFile
      Src: /src/pdns/pdns/recursordist/test-rpzloader_cc.cc:104,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/test-rpzloader_cc.cc:106,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/test-rpzloader_cc.cc:107,1
    - Dst: std::make_shared<DNSFilterEngine::Zone>
      Src: /src/pdns/pdns/recursordist/test-rpzloader_cc.cc:108,1
    - Dst: loadRPZFromFile
      Src: /src/pdns/pdns/recursordist/test-rpzloader_cc.cc:110,1
    - Dst: unlink
      Src: /src/pdns/pdns/recursordist/test-rpzloader_cc.cc:111,1
    - Dst: auto::c_str
      Src: /src/pdns/pdns/recursordist/test-rpzloader_cc.cc:111,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-rpzloader_cc.cc:113,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-rpzloader_cc.cc:114,1
    - Dst: auto::getDomain
      Src: /src/pdns/pdns/recursordist/test-rpzloader_cc.cc:114,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-rpzloader_cc.cc:114,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-rpzloader_cc.cc:115,1
    - Dst: auto::size
      Src: /src/pdns/pdns/recursordist/test-rpzloader_cc.cc:115,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 54
    functionDepth: 1
    functionLinenumber: 54
    functionLinenumberEnd: 116
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-rpzloader_cc.cc
    functionUses: 0
    functionsReached:
    - auto::c_str
    - BOOST_CHECK_EQUAL
    - DNSName
    - unlink
    - auto::getDomain
    - makeFile
    - std::make_shared<DNSFilterEngine::Zone>
    - loadRPZFromFile
    - arg
    - auto::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(load_rpz_ok)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeFile
      Src: /src/pdns/pdns/recursordist/test-rpzloader_cc.cc:133,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/test-rpzloader_cc.cc:135,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/test-rpzloader_cc.cc:136,1
    - Dst: std::make_shared<DNSFilterEngine::Zone>
      Src: /src/pdns/pdns/recursordist/test-rpzloader_cc.cc:137,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/recursordist/test-rpzloader_cc.cc:139,1
    - Dst: loadRPZFromFile
      Src: /src/pdns/pdns/recursordist/test-rpzloader_cc.cc:139,1
    - Dst: unlink
      Src: /src/pdns/pdns/recursordist/test-rpzloader_cc.cc:141,1
    - Dst: auto::c_str
      Src: /src/pdns/pdns/recursordist/test-rpzloader_cc.cc:141,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 142
      start: 118
    functionDepth: 1
    functionLinenumber: 118
    functionLinenumberEnd: 142
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-rpzloader_cc.cc
    functionUses: 0
    functionsReached:
    - auto::c_str
    - unlink
    - BOOST_CHECK_THROW
    - makeFile
    - std::make_shared<DNSFilterEngine::Zone>
    - loadRPZFromFile
    - arg
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(load_rpz_dups)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeFile
      Src: /src/pdns/pdns/recursordist/test-rpzloader_cc.cc:159,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/test-rpzloader_cc.cc:161,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/test-rpzloader_cc.cc:162,1
    - Dst: std::make_shared<DNSFilterEngine::Zone>
      Src: /src/pdns/pdns/recursordist/test-rpzloader_cc.cc:163,1
    - Dst: auto::setIgnoreDuplicates
      Src: /src/pdns/pdns/recursordist/test-rpzloader_cc.cc:164,1
    - Dst: loadRPZFromFile
      Src: /src/pdns/pdns/recursordist/test-rpzloader_cc.cc:166,1
    - Dst: unlink
      Src: /src/pdns/pdns/recursordist/test-rpzloader_cc.cc:167,1
    - Dst: auto::c_str
      Src: /src/pdns/pdns/recursordist/test-rpzloader_cc.cc:167,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-rpzloader_cc.cc:168,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-rpzloader_cc.cc:169,1
    - Dst: auto::getDomain
      Src: /src/pdns/pdns/recursordist/test-rpzloader_cc.cc:169,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-rpzloader_cc.cc:169,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-rpzloader_cc.cc:170,1
    - Dst: auto::size
      Src: /src/pdns/pdns/recursordist/test-rpzloader_cc.cc:170,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 171
      start: 144
    functionDepth: 1
    functionLinenumber: 144
    functionLinenumberEnd: 171
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-rpzloader_cc.cc
    functionUses: 0
    functionsReached:
    - auto::c_str
    - BOOST_CHECK_EQUAL
    - DNSName
    - unlink
    - auto::getDomain
    - makeFile
    - std::make_shared<DNSFilterEngine::Zone>
    - auto::setIgnoreDuplicates
    - loadRPZFromFile
    - arg
    - auto::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(load_rpz_dups_allow)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 33
      start: 33
    functionDepth: 0
    functionLinenumber: 33
    functionLinenumberEnd: 33
    functionName: EDNSCookiesOpt
    functionSourceFile: /src/pdns/pdns/recursordist/ednscookies.hh
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void EDNSCookiesOpt()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/recursordist/ednscookies.hh:42,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/ednscookies.hh:42,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 40
    functionDepth: 0
    functionLinenumber: 40
    functionLinenumberEnd: 43
    functionName: size
    functionSourceFile: /src/pdns/pdns/recursordist/ednscookies.hh
    functionUses: 1661
    functionsReached:
    - size
    linkageType: ''
    returnType: size_t
    signature: size_t size() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/recursordist/ednscookies.hh:51,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/ednscookies.hh:51,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/ednscookies.hh:51,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/ednscookies.hh:51,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 45
    functionDepth: 0
    functionLinenumber: 45
    functionLinenumberEnd: 52
    functionName: isWellFormed
    functionSourceFile: /src/pdns/pdns/recursordist/ednscookies.hh
    functionUses: 12
    functionsReached:
    - empty
    - size
    linkageType: ''
    returnType: bool
    signature: bool isWellFormed() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 60
    functionDepth: 0
    functionLinenumber: 60
    functionLinenumberEnd: 63
    functionName: getServer
    functionSourceFile: /src/pdns/pdns/recursordist/ednscookies.hh
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string getServer() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 64
    functionDepth: 0
    functionLinenumber: 64
    functionLinenumberEnd: 67
    functionName: getClient
    functionSourceFile: /src/pdns/pdns/recursordist/ednscookies.hh
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string getClient() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: bf::stableBF::optimalK
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:44,1
    - Dst: std::random_device
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:48,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:49,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 3
    argNames:
    - fp_rate
    - num_cells
    - pArg
    argTypes:
    - float
    - uint32_t
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 43
    functionDepth: 1
    functionLinenumber: 43
    functionLinenumberEnd: 49
    functionName: bf::stableBF::stableBF
    functionSourceFile: /src/pdns/pdns/recursordist/stable-bloom.hh
    functionUses: 0
    functionsReached:
    - std::random_device
    - bf::stableBF::optimalK
    - static_cast<int>
    linkageType: ''
    returnType: void
    signature: void stableBF(float fp_rate, uint32_t num_cells, uint8_t pArg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::random_device
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:55,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:56,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 4
    argNames:
    - kArg
    - num_cells
    - pArg
    - ' bitstr'
    argTypes:
    - uint8_t
    - uint32_t
    - uint8_t
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 50
    functionDepth: 0
    functionLinenumber: 50
    functionLinenumberEnd: 56
    functionName: bf::stableBF::stableBF
    functionSourceFile: /src/pdns/pdns/recursordist/stable-bloom.hh
    functionUses: 0
    functionsReached:
    - std::random_device
    - static_cast<int>
    linkageType: ''
    returnType: void
    signature: void stableBF(uint8_t kArg, uint32_t num_cells, uint8_t pArg, const
      std::string& bitstr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: bf::stableBF::decrement
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:60,1
    - Dst: bf::stableBF::hash
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:61,1
    - Dst: set
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:63,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ' data'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 58
    functionDepth: 1
    functionLinenumber: 58
    functionLinenumberEnd: 65
    functionName: bf::stableBF::add
    functionSourceFile: /src/pdns/pdns/recursordist/stable-bloom.hh
    functionUses: 0
    functionsReached:
    - bf::stableBF::decrement
    - bf::stableBF::hash
    - set
    linkageType: ''
    returnType: void
    signature: void add(const std::string& data)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: bf::stableBF::hash
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:69,1
    - Dst: bf::stableBF::test
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:71,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - ' data'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 67
    functionDepth: 0
    functionLinenumber: 67
    functionLinenumberEnd: 76
    functionName: bf::stableBF::test
    functionSourceFile: /src/pdns/pdns/recursordist/stable-bloom.hh
    functionUses: 1
    functionsReached:
    - bf::stableBF::hash
    - bf::stableBF::test
    linkageType: ''
    returnType: bool
    signature: bool test(const std::string& data) const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: bf::stableBF::hash
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:80,1
    - Dst: bf::stableBF::test
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:83,1
    - Dst: bf::stableBF::decrement
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:88,1
    - Dst: set
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:90,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 1
    argNames:
    - ' data'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 78
    functionDepth: 1
    functionLinenumber: 78
    functionLinenumberEnd: 93
    functionName: bf::stableBF::testAndAdd
    functionSourceFile: /src/pdns/pdns/recursordist/stable-bloom.hh
    functionUses: 0
    functionsReached:
    - set
    - bf::stableBF::hash
    - bf::stableBF::test
    - bf::stableBF::decrement
    linkageType: ''
    returnType: bool
    signature: bool testAndAdd(const std::string& data)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: write
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:97,1
    - Dst: bf::stableBF::charPtr
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:97,1
    - Dst: htonl
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:98,1
    - Dst: write
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:99,1
    - Dst: bf::stableBF::charPtr
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:99,1
    - Dst: write
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:100,1
    - Dst: bf::stableBF::charPtr
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:100,1
    - Dst: libssl_tls_version_to_string
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:102,1
    - Dst: htonl
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:103,1
    - Dst: static_cast<uint32_t>
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:103,1
    - Dst: std::string::length
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:103,1
    - Dst: write
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:104,1
    - Dst: bf::stableBF::charPtr
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:104,1
    - Dst: write
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:105,1
    - Dst: bf::stableBF::charPtr
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:105,1
    - Dst: std::string::c_str
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:105,1
    - Dst: static_cast<std::streamsize>
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:105,1
    - Dst: std::string::length
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:105,1
    - Dst: fail
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:106,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:107,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - ' ostr'
    argTypes:
    - std::ostream
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 95
    functionDepth: 1
    functionLinenumber: 95
    functionLinenumberEnd: 109
    functionName: bf::stableBF::dump
    functionSourceFile: /src/pdns/pdns/recursordist/stable-bloom.hh
    functionUses: 0
    functionsReached:
    - std::string::length
    - static_cast<std::streamsize>
    - htonl
    - std::runtime_error
    - std::string::c_str
    - bf::stableBF::charPtr
    - static_cast<uint32_t>
    - fail
    - write
    - libssl_tls_version_to_string
    linkageType: ''
    returnType: void
    signature: void dump(std::ostream& ostr)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: read
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:114,1
    - Dst: bf::stableBF::charPtr
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:114,1
    - Dst: fail
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:115,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:116,1
    - Dst: read
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:119,1
    - Dst: bf::stableBF::charPtr
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:119,1
    - Dst: fail
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:120,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:121,1
    - Dst: ntohl
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:123,1
    - Dst: read
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:125,1
    - Dst: bf::stableBF::charPtr
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:125,1
    - Dst: fail
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:126,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:127,1
    - Dst: read
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:130,1
    - Dst: bf::stableBF::charPtr
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:130,1
    - Dst: fail
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:131,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:132,1
    - Dst: ntohl
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:134,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:136,1
    - Dst: NoInitVector<char>
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:138,1
    - Dst: read
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:139,1
    - Dst: auto::data
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:139,1
    - Dst: fail
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:140,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:141,1
    - Dst: auto::data
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:143,1
    - Dst: bf::stableBF::swap
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:145,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 27
    argCount: 1
    argNames:
    - ' istr'
    argTypes:
    - std::istream
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 146
      start: 111
    functionDepth: 1
    functionLinenumber: 111
    functionLinenumberEnd: 146
    functionName: bf::stableBF::restore
    functionSourceFile: /src/pdns/pdns/recursordist/stable-bloom.hh
    functionUses: 0
    functionsReached:
    - ntohl
    - bf::stableBF::swap
    - read
    - std::runtime_error
    - bf::stableBF::charPtr
    - auto::data
    - fail
    - NoInitVector<char>
    linkageType: ''
    returnType: void
    signature: void restore(std::istream& istr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<const char*>
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:151,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ptr
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 152
      start: 149
    functionDepth: 0
    functionLinenumber: 149
    functionLinenumberEnd: 152
    functionName: bf::stableBF::charPtr
    functionSourceFile: /src/pdns/pdns/recursordist/stable-bloom.hh
    functionUses: 2
    functionsReached:
    - static_cast<const char*>
    linkageType: ''
    returnType: char
    signature: char * charPtr(const void* ptr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<char*>
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:156,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ptr
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 157
      start: 154
    functionDepth: 0
    functionLinenumber: 154
    functionLinenumberEnd: 157
    functionName: bf::stableBF::charPtr
    functionSourceFile: /src/pdns/pdns/recursordist/stable-bloom.hh
    functionUses: 2
    functionsReached:
    - static_cast<char*>
    linkageType: ''
    returnType: char
    signature: char * charPtr(void* ptr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::ceil
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:161,1
    - Dst: std::log2
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:161,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - fp_rate
    argTypes:
    - float
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 162
      start: 159
    functionDepth: 0
    functionLinenumber: 159
    functionLinenumberEnd: 162
    functionName: bf::stableBF::optimalK
    functionSourceFile: /src/pdns/pdns/recursordist/stable-bloom.hh
    functionUses: 1
    functionsReached:
    - std::log2
    - std::ceil
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int optimalK(float fp_rate)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: d_dis
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:170,1
    - Dst: reset
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:172,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 174
      start: 164
    functionDepth: 0
    functionLinenumber: 164
    functionLinenumberEnd: 174
    functionName: bf::stableBF::decrement
    functionSourceFile: /src/pdns/pdns/recursordist/stable-bloom.hh
    functionUses: 2
    functionsReached:
    - reset
    - d_dis
    linkageType: ''
    returnType: void
    signature: void decrement()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: bf::stableBF::swap
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:178,1
    - Dst: bf::stableBF::swap
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:179,1
    - Dst: bf::stableBF::swap
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:180,1
    - Dst: bf::stableBF::swap
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:181,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - stableBF
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 182
      start: 176
    functionDepth: 1
    functionLinenumber: 176
    functionLinenumberEnd: 182
    functionName: bf::stableBF::swap
    functionSourceFile: /src/pdns/pdns/recursordist/stable-bloom.hh
    functionUses: 2
    functionsReached:
    - bf::stableBF::swap
    linkageType: ''
    returnType: void
    signature: void swap(stableBF& rhs)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: reinterpret_cast<uintptr_t>
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:192,1
    - Dst: data
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:192,1
    - Dst: length
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:193,1
    - Dst: memcpy
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:194,1
    - Dst: NoInitVector::data
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:194,1
    - Dst: data
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:194,1
    - Dst: length
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:194,1
    - Dst: MurmurHash3_x86_32
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:195,1
    - Dst: NoInitVector::data
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:195,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:195,1
    - Dst: length
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:195,1
    - Dst: MurmurHash3_x86_32
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:196,1
    - Dst: NoInitVector::data
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:196,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:196,1
    - Dst: length
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:196,1
    - Dst: MurmurHash3_x86_32
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:199,1
    - Dst: data
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:199,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:199,1
    - Dst: length
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:199,1
    - Dst: MurmurHash3_x86_32
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:200,1
    - Dst: data
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:200,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:200,1
    - Dst: length
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:200,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 1
    argNames:
    - ' data'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 207
      start: 186
    functionDepth: 0
    functionLinenumber: 186
    functionLinenumberEnd: 207
    functionName: bf::stableBF::hash
    functionSourceFile: /src/pdns/pdns/recursordist/stable-bloom.hh
    functionUses: 3
    functionsReached:
    - reinterpret_cast<uintptr_t>
    - length
    - memcpy
    - static_cast<int>
    - NoInitVector::data
    - data
    - MurmurHash3_x86_32
    linkageType: ''
    returnType: std::vector<uint32_t>
    signature: std::vector<uint32_t> hash(const std::string& data) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: bf::stableBF::optimalK
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:44,1
    - Dst: std::random_device
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:48,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:49,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 3
    argNames:
    - fp_rate
    - num_cells
    - pArg
    argTypes:
    - float
    - uint32_t
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 43
    functionDepth: 1
    functionLinenumber: 43
    functionLinenumberEnd: 49
    functionName: bf::stableBF::stableBF
    functionSourceFile: /src/pdns/pdns/recursordist/stable-bloom.hh
    functionUses: 0
    functionsReached:
    - std::random_device
    - bf::stableBF::optimalK
    - static_cast<int>
    linkageType: ''
    returnType: void
    signature: void stableBF(float fp_rate, uint32_t num_cells, uint8_t pArg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::random_device
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:55,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:56,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 4
    argNames:
    - kArg
    - num_cells
    - pArg
    - ' bitstr'
    argTypes:
    - uint8_t
    - uint32_t
    - uint8_t
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 50
    functionDepth: 0
    functionLinenumber: 50
    functionLinenumberEnd: 56
    functionName: bf::stableBF::stableBF
    functionSourceFile: /src/pdns/pdns/recursordist/stable-bloom.hh
    functionUses: 0
    functionsReached:
    - std::random_device
    - static_cast<int>
    linkageType: ''
    returnType: void
    signature: void stableBF(uint8_t kArg, uint32_t num_cells, uint8_t pArg, const
      std::string& bitstr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: bf::stableBF::decrement
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:60,1
    - Dst: bf::stableBF::hash
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:61,1
    - Dst: set
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:63,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ' data'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 58
    functionDepth: 1
    functionLinenumber: 58
    functionLinenumberEnd: 65
    functionName: bf::stableBF::add
    functionSourceFile: /src/pdns/pdns/recursordist/stable-bloom.hh
    functionUses: 0
    functionsReached:
    - bf::stableBF::decrement
    - bf::stableBF::hash
    - set
    linkageType: ''
    returnType: void
    signature: void add(const std::string& data)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: bf::stableBF::hash
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:69,1
    - Dst: bf::stableBF::test
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:71,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - ' data'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 67
    functionDepth: 0
    functionLinenumber: 67
    functionLinenumberEnd: 76
    functionName: bf::stableBF::test
    functionSourceFile: /src/pdns/pdns/recursordist/stable-bloom.hh
    functionUses: 3
    functionsReached:
    - bf::stableBF::hash
    - bf::stableBF::test
    linkageType: ''
    returnType: bool
    signature: bool test(const std::string& data) const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: bf::stableBF::hash
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:80,1
    - Dst: bf::stableBF::test
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:83,1
    - Dst: bf::stableBF::decrement
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:88,1
    - Dst: set
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:90,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 1
    argNames:
    - ' data'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 78
    functionDepth: 1
    functionLinenumber: 78
    functionLinenumberEnd: 93
    functionName: bf::stableBF::testAndAdd
    functionSourceFile: /src/pdns/pdns/recursordist/stable-bloom.hh
    functionUses: 0
    functionsReached:
    - set
    - bf::stableBF::hash
    - bf::stableBF::test
    - bf::stableBF::decrement
    linkageType: ''
    returnType: bool
    signature: bool testAndAdd(const std::string& data)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: write
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:97,1
    - Dst: bf::stableBF::charPtr
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:97,1
    - Dst: htonl
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:98,1
    - Dst: write
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:99,1
    - Dst: bf::stableBF::charPtr
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:99,1
    - Dst: write
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:100,1
    - Dst: bf::stableBF::charPtr
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:100,1
    - Dst: libssl_tls_version_to_string
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:102,1
    - Dst: htonl
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:103,1
    - Dst: static_cast<uint32_t>
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:103,1
    - Dst: std::string::length
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:103,1
    - Dst: write
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:104,1
    - Dst: bf::stableBF::charPtr
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:104,1
    - Dst: write
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:105,1
    - Dst: bf::stableBF::charPtr
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:105,1
    - Dst: std::string::c_str
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:105,1
    - Dst: static_cast<std::streamsize>
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:105,1
    - Dst: std::string::length
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:105,1
    - Dst: fail
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:106,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:107,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - ' ostr'
    argTypes:
    - std::ostream
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 95
    functionDepth: 1
    functionLinenumber: 95
    functionLinenumberEnd: 109
    functionName: bf::stableBF::dump
    functionSourceFile: /src/pdns/pdns/recursordist/stable-bloom.hh
    functionUses: 0
    functionsReached:
    - std::string::length
    - static_cast<std::streamsize>
    - htonl
    - std::runtime_error
    - std::string::c_str
    - bf::stableBF::charPtr
    - static_cast<uint32_t>
    - fail
    - write
    - libssl_tls_version_to_string
    linkageType: ''
    returnType: void
    signature: void dump(std::ostream& ostr)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: read
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:114,1
    - Dst: bf::stableBF::charPtr
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:114,1
    - Dst: fail
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:115,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:116,1
    - Dst: read
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:119,1
    - Dst: bf::stableBF::charPtr
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:119,1
    - Dst: fail
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:120,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:121,1
    - Dst: ntohl
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:123,1
    - Dst: read
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:125,1
    - Dst: bf::stableBF::charPtr
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:125,1
    - Dst: fail
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:126,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:127,1
    - Dst: read
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:130,1
    - Dst: bf::stableBF::charPtr
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:130,1
    - Dst: fail
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:131,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:132,1
    - Dst: ntohl
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:134,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:136,1
    - Dst: NoInitVector<char>
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:138,1
    - Dst: read
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:139,1
    - Dst: auto::data
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:139,1
    - Dst: fail
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:140,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:141,1
    - Dst: auto::data
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:143,1
    - Dst: bf::stableBF::swap
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:145,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 27
    argCount: 1
    argNames:
    - ' istr'
    argTypes:
    - std::istream
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 146
      start: 111
    functionDepth: 2
    functionLinenumber: 111
    functionLinenumberEnd: 146
    functionName: bf::stableBF::restore
    functionSourceFile: /src/pdns/pdns/recursordist/stable-bloom.hh
    functionUses: 0
    functionsReached:
    - ntohl
    - bf::stableBF::swap
    - read
    - std::runtime_error
    - bf::stableBF::charPtr
    - auto::data
    - fail
    - NoInitVector<char>
    linkageType: ''
    returnType: void
    signature: void restore(std::istream& istr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<const char*>
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:151,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ptr
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 152
      start: 149
    functionDepth: 0
    functionLinenumber: 149
    functionLinenumberEnd: 152
    functionName: bf::stableBF::charPtr
    functionSourceFile: /src/pdns/pdns/recursordist/stable-bloom.hh
    functionUses: 4
    functionsReached:
    - static_cast<const char*>
    linkageType: ''
    returnType: char
    signature: char * charPtr(const void* ptr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<char*>
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:156,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ptr
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 157
      start: 154
    functionDepth: 0
    functionLinenumber: 154
    functionLinenumberEnd: 157
    functionName: bf::stableBF::charPtr
    functionSourceFile: /src/pdns/pdns/recursordist/stable-bloom.hh
    functionUses: 4
    functionsReached:
    - static_cast<char*>
    linkageType: ''
    returnType: char
    signature: char * charPtr(void* ptr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::ceil
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:161,1
    - Dst: std::log2
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:161,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - fp_rate
    argTypes:
    - float
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 162
      start: 159
    functionDepth: 0
    functionLinenumber: 159
    functionLinenumberEnd: 162
    functionName: bf::stableBF::optimalK
    functionSourceFile: /src/pdns/pdns/recursordist/stable-bloom.hh
    functionUses: 2
    functionsReached:
    - std::log2
    - std::ceil
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int optimalK(float fp_rate)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: d_dis
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:170,1
    - Dst: reset
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:172,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 174
      start: 164
    functionDepth: 0
    functionLinenumber: 164
    functionLinenumberEnd: 174
    functionName: bf::stableBF::decrement
    functionSourceFile: /src/pdns/pdns/recursordist/stable-bloom.hh
    functionUses: 4
    functionsReached:
    - reset
    - d_dis
    linkageType: ''
    returnType: void
    signature: void decrement()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: bf::stableBF::swap
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:178,1
    - Dst: bf::stableBF::swap
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:179,1
    - Dst: bf::stableBF::swap
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:180,1
    - Dst: bf::stableBF::swap
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:181,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - stableBF
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 182
      start: 176
    functionDepth: 1
    functionLinenumber: 176
    functionLinenumberEnd: 182
    functionName: bf::stableBF::swap
    functionSourceFile: /src/pdns/pdns/recursordist/stable-bloom.hh
    functionUses: 4
    functionsReached:
    - bf::stableBF::swap
    linkageType: ''
    returnType: void
    signature: void swap(stableBF& rhs)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: reinterpret_cast<uintptr_t>
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:192,1
    - Dst: data
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:192,1
    - Dst: length
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:193,1
    - Dst: memcpy
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:194,1
    - Dst: NoInitVector::data
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:194,1
    - Dst: data
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:194,1
    - Dst: length
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:194,1
    - Dst: MurmurHash3_x86_32
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:195,1
    - Dst: NoInitVector::data
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:195,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:195,1
    - Dst: length
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:195,1
    - Dst: MurmurHash3_x86_32
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:196,1
    - Dst: NoInitVector::data
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:196,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:196,1
    - Dst: length
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:196,1
    - Dst: MurmurHash3_x86_32
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:199,1
    - Dst: data
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:199,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:199,1
    - Dst: length
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:199,1
    - Dst: MurmurHash3_x86_32
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:200,1
    - Dst: data
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:200,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:200,1
    - Dst: length
      Src: /src/pdns/pdns/recursordist/stable-bloom.hh:200,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 1
    argNames:
    - ' data'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 207
      start: 186
    functionDepth: 0
    functionLinenumber: 186
    functionLinenumberEnd: 207
    functionName: bf::stableBF::hash
    functionSourceFile: /src/pdns/pdns/recursordist/stable-bloom.hh
    functionUses: 6
    functionsReached:
    - reinterpret_cast<uintptr_t>
    - length
    - memcpy
    - static_cast<int>
    - NoInitVector::data
    - data
    - MurmurHash3_x86_32
    linkageType: ''
    returnType: std::vector<uint32_t>
    signature: std::vector<uint32_t> hash(const std::string& data) const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: filesystem::directory_iterator
      Src: /src/pdns/pdns/recursordist/nod.cc:44,1
    - Dst: filesystem::is_regular_file
      Src: /src/pdns/pdns/recursordist/nod.cc:45,1
    - Dst: path
      Src: /src/pdns/pdns/recursordist/nod.cc:45,1
    - Dst: Regex::match
      Src: /src/pdns/pdns/recursordist/nod.cc:45,1
    - Dst: path
      Src: /src/pdns/pdns/recursordist/nod.cc:45,1
    - Dst: AuthZoneCache::remove
      Src: /src/pdns/pdns/recursordist/nod.cc:46,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 5
    argCount: 1
    argNames:
    - ' path'
    argTypes:
    - filesystem::path
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 41
    functionDepth: 0
    functionLinenumber: 41
    functionLinenumberEnd: 49
    functionName: PersistentSBF::remove_tmp_files
    functionSourceFile: /src/pdns/pdns/recursordist/nod.cc
    functionUses: 0
    functionsReached:
    - filesystem::is_regular_file
    - path
    - filesystem::directory_iterator
    - AuthZoneCache::remove
    - Regex::match
    linkageType: ''
    returnType: void
    signature: void PersistentSBF::remove_tmp_files(const filesystem::path& path,
      std::scoped_lock<std::mutex>& /* lock */)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: withName
      Src: /src/pdns/pdns/recursordist/nod.cc:58,1
    - Dst: length
      Src: /src/pdns/pdns/recursordist/nod.cc:60,1
    - Dst: StatBag::exists
      Src: /src/pdns/pdns/recursordist/nod.cc:63,1
    - Dst: filesystem::is_directory
      Src: /src/pdns/pdns/recursordist/nod.cc:63,1
    - Dst: PersistentSBF::remove_tmp_files
      Src: /src/pdns/pdns/recursordist/nod.cc:64,1
    - Dst: filesystem::directory_iterator
      Src: /src/pdns/pdns/recursordist/nod.cc:68,1
    - Dst: filesystem::is_regular_file
      Src: /src/pdns/pdns/recursordist/nod.cc:69,1
    - Dst: path
      Src: /src/pdns/pdns/recursordist/nod.cc:69,1
    - Dst: Regex::match
      Src: /src/pdns/pdns/recursordist/nod.cc:69,1
    - Dst: path
      Src: /src/pdns/pdns/recursordist/nod.cc:69,1
    - Dst: path
      Src: /src/pdns/pdns/recursordist/nod.cc:70,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/nod.cc:70,1
    - Dst: getpid
      Src: /src/pdns/pdns/recursordist/nod.cc:70,1
    - Dst: last_write_time
      Src: /src/pdns/pdns/recursordist/nod.cc:72,1
    - Dst: path
      Src: /src/pdns/pdns/recursordist/nod.cc:72,1
    - Dst: last_write_time
      Src: /src/pdns/pdns/recursordist/nod.cc:73,1
    - Dst: path
      Src: /src/pdns/pdns/recursordist/nod.cc:73,1
    - Dst: path
      Src: /src/pdns/pdns/recursordist/nod.cc:74,1
    - Dst: filesystem::path::empty
      Src: /src/pdns/pdns/recursordist/nod.cc:79,1
    - Dst: StatBag::exists
      Src: /src/pdns/pdns/recursordist/nod.cc:79,1
    - Dst: filesystem::path::string
      Src: /src/pdns/pdns/recursordist/nod.cc:80,1
    - Dst: std::ifstream::open
      Src: /src/pdns/pdns/recursordist/nod.cc:83,1
    - Dst: auto::info
      Src: /src/pdns/pdns/recursordist/nod.cc:84,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/nod.cc:84,1
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/nod.cc:86,1
    - Dst: std::ifstream::close
      Src: /src/pdns/pdns/recursordist/nod.cc:87,1
    - Dst: PersistentSBF::snapshotCurrent
      Src: /src/pdns/pdns/recursordist/nod.cc:89,1
    - Dst: dnsdist_ffi_dnsquestion_get_id
      Src: /src/pdns/pdns/recursordist/nod.cc:89,1
    - Dst: AuthZoneCache::remove
      Src: /src/pdns/pdns/recursordist/nod.cc:91,1
    - Dst: std::ifstream::close
      Src: /src/pdns/pdns/recursordist/nod.cc:94,1
    - Dst: AuthZoneCache::remove
      Src: /src/pdns/pdns/recursordist/nod.cc:95,1
    - Dst: auto::error
      Src: /src/pdns/pdns/recursordist/nod.cc:96,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/nod.cc:96,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/nod.cc:96,1
    - Dst: auto::error
      Src: /src/pdns/pdns/recursordist/nod.cc:102,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/nod.cc:102,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/nod.cc:102,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 35
    argCount: 1
    argNames:
    - ignore_pid
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 107
      start: 56
    functionDepth: 2
    functionLinenumber: 56
    functionLinenumberEnd: 107
    functionName: PersistentSBF::init
    functionSourceFile: /src/pdns/pdns/recursordist/nod.cc
    functionUses: 0
    functionsReached:
    - std::to_string
    - path
    - withName
    - filesystem::directory_iterator
    - Regex::match
    - PersistentSBF::snapshotCurrent
    - Logging::Loggable
    - filesystem::is_directory
    - last_write_time
    - lock
    - AuthZoneCache::remove
    - auto::error
    - PersistentSBF::remove_tmp_files
    - getpid
    - auto::info
    - StatBag::exists
    - std::ifstream::close
    - std::ifstream::open
    - filesystem::path::empty
    - filesystem::path::string
    - filesystem::is_regular_file
    - length
    - what
    - dnsdist_ffi_dnsquestion_get_id
    linkageType: ''
    returnType: bool
    signature: bool PersistentSBF::init(bool ignore_pid)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: exists
      Src: /src/pdns/pdns/recursordist/nod.cc:112,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/recursordist/nod.cc:113,1
    - Dst: is_directory
      Src: /src/pdns/pdns/recursordist/nod.cc:115,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/recursordist/nod.cc:116,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 1
    argNames:
    - ' cachedir'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 119
      start: 109
    functionDepth: 0
    functionLinenumber: 109
    functionLinenumberEnd: 119
    functionName: PersistentSBF::setCacheDir
    functionSourceFile: /src/pdns/pdns/recursordist/nod.cc
    functionUses: 0
    functionsReached:
    - PDNSException
    - is_directory
    - exists
    linkageType: ''
    returnType: void
    signature: void PersistentSBF::setCacheDir(const std::string& cachedir)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: withName
      Src: /src/pdns/pdns/recursordist/nod.cc:127,1
    - Dst: length
      Src: /src/pdns/pdns/recursordist/nod.cc:128,1
    - Dst: std::stringstream::str
      Src: /src/pdns/pdns/recursordist/nod.cc:133,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/nod.cc:133,1
    - Dst: getpid
      Src: /src/pdns/pdns/recursordist/nod.cc:133,1
    - Dst: StatBag::exists
      Src: /src/pdns/pdns/recursordist/nod.cc:134,1
    - Dst: filesystem::is_directory
      Src: /src/pdns/pdns/recursordist/nod.cc:134,1
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/nod.cc:139,1
    - Dst: filesystem::path::string
      Src: /src/pdns/pdns/recursordist/nod.cc:142,1
    - Dst: FDWrapper
      Src: /src/pdns/pdns/recursordist/nod.cc:143,1
    - Dst: mkstemp
      Src: /src/pdns/pdns/recursordist/nod.cc:143,1
    - Dst: std::string::data
      Src: /src/pdns/pdns/recursordist/nod.cc:143,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/nod.cc:145,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/nod.cc:145,1
    - Dst: std::ostringstream::str
      Src: /src/pdns/pdns/recursordist/nod.cc:147,1
    - Dst: write
      Src: /src/pdns/pdns/recursordist/nod.cc:148,1
    - Dst: std::string::data
      Src: /src/pdns/pdns/recursordist/nod.cc:148,1
    - Dst: std::string::length
      Src: /src/pdns/pdns/recursordist/nod.cc:148,1
    - Dst: static_cast<ssize_t>
      Src: /src/pdns/pdns/recursordist/nod.cc:149,1
    - Dst: std::string::length
      Src: /src/pdns/pdns/recursordist/nod.cc:149,1
    - Dst: AuthZoneCache::remove
      Src: /src/pdns/pdns/recursordist/nod.cc:150,1
    - Dst: std::string::c_str
      Src: /src/pdns/pdns/recursordist/nod.cc:150,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/nod.cc:151,1
    - Dst: auto::reset
      Src: /src/pdns/pdns/recursordist/nod.cc:153,1
    - Dst: AuthZoneCache::remove
      Src: /src/pdns/pdns/recursordist/nod.cc:154,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/nod.cc:155,1
    - Dst: filesystem::rename
      Src: /src/pdns/pdns/recursordist/nod.cc:158,1
    - Dst: auto::error
      Src: /src/pdns/pdns/recursordist/nod.cc:161,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/nod.cc:161,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/nod.cc:161,1
    - Dst: AuthZoneCache::remove
      Src: /src/pdns/pdns/recursordist/nod.cc:162,1
    - Dst: auto::error
      Src: /src/pdns/pdns/recursordist/nod.cc:168,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/nod.cc:168,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/nod.cc:168,1
    - Dst: auto::info
      Src: /src/pdns/pdns/recursordist/nod.cc:172,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/nod.cc:172,1
    - Dst: filesystem::path::string
      Src: /src/pdns/pdns/recursordist/nod.cc:172,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 35
    argCount: 1
    argNames:
    - tid
    argTypes:
    - std::thread::id
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 176
      start: 125
    functionDepth: 1
    functionLinenumber: 125
    functionLinenumberEnd: 176
    functionName: PersistentSBF::snapshotCurrent
    functionSourceFile: /src/pdns/pdns/recursordist/nod.cc
    functionUses: 1
    functionsReached:
    - std::string::length
    - std::to_string
    - withName
    - stringerror
    - std::stringstream::str
    - Logging::Loggable
    - std::ostringstream::str
    - filesystem::is_directory
    - lock
    - AuthZoneCache::remove
    - filesystem::rename
    - auto::error
    - getpid
    - auto::info
    - mkstemp
    - StatBag::exists
    - std::runtime_error
    - std::string::data
    - FDWrapper
    - write
    - filesystem::path::string
    - length
    - static_cast<ssize_t>
    - std::string::c_str
    - what
    - auto::reset
    linkageType: ''
    returnType: bool
    signature: bool PersistentSBF::snapshotCurrent(std::thread::id tid)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: setThreadName
      Src: /src/pdns/pdns/recursordist/nod.cc:182,1
    - Dst: std::this_thread::sleep_for
      Src: /src/pdns/pdns/recursordist/nod.cc:184,1
    - Dst: std::chrono::seconds
      Src: /src/pdns/pdns/recursordist/nod.cc:184,1
    - Dst: snapshotCurrent
      Src: /src/pdns/pdns/recursordist/nod.cc:185,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - tid
    argTypes:
    - std::thread::id
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 187
      start: 180
    functionDepth: 0
    functionLinenumber: 180
    functionLinenumberEnd: 187
    functionName: NODDB::housekeepingThread
    functionSourceFile: /src/pdns/pdns/recursordist/nod.cc
    functionUses: 0
    functionsReached:
    - std::this_thread::sleep_for
    - snapshotCurrent
    - setThreadName
    - std::chrono::seconds
    linkageType: ''
    returnType: void
    signature: void NODDB::housekeepingThread(std::thread::id tid)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: NODDB::isNewDomain
      Src: /src/pdns/pdns/recursordist/nod.cc:192,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' domain'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 193
      start: 189
    functionDepth: 1
    functionLinenumber: 189
    functionLinenumberEnd: 193
    functionName: NODDB::isNewDomain
    functionSourceFile: /src/pdns/pdns/recursordist/nod.cc
    functionUses: 1
    functionsReached:
    - NODDB::isNewDomain
    linkageType: ''
    returnType: bool
    signature: bool NODDB::isNewDomain(const std::string& domain)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: toDNSStringLC
      Src: /src/pdns/pdns/recursordist/nod.cc:197,1
    - Dst: testAndAdd
      Src: /src/pdns/pdns/recursordist/nod.cc:199,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' dname'
    argTypes:
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 200
      start: 195
    functionDepth: 0
    functionLinenumber: 195
    functionLinenumberEnd: 200
    functionName: NODDB::isNewDomain
    functionSourceFile: /src/pdns/pdns/recursordist/nod.cc
    functionUses: 1
    functionsReached:
    - toDNSStringLC
    - testAndAdd
    linkageType: ''
    returnType: bool
    signature: bool NODDB::isNewDomain(const DNSName& dname)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: NODDB::isNewDomainWithParent
      Src: /src/pdns/pdns/recursordist/nod.cc:205,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' domain'
    - ' observed'
    argTypes:
    - std::string
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 206
      start: 202
    functionDepth: 1
    functionLinenumber: 202
    functionLinenumberEnd: 206
    functionName: NODDB::isNewDomainWithParent
    functionSourceFile: /src/pdns/pdns/recursordist/nod.cc
    functionUses: 1
    functionsReached:
    - NODDB::isNewDomainWithParent
    linkageType: ''
    returnType: bool
    signature: bool NODDB::isNewDomainWithParent(const std::string& domain, std::string&
      observed)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: NODDB::isNewDomain
      Src: /src/pdns/pdns/recursordist/nod.cc:210,1
    - Dst: DNSName::chopOff
      Src: /src/pdns/pdns/recursordist/nod.cc:213,1
    - Dst: NODDB::isNewDomain
      Src: /src/pdns/pdns/recursordist/nod.cc:214,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/recursordist/nod.cc:215,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 2
    argNames:
    - ' dname'
    - ' observed'
    argTypes:
    - DNSName
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 221
      start: 208
    functionDepth: 2
    functionLinenumber: 208
    functionLinenumberEnd: 221
    functionName: NODDB::isNewDomainWithParent
    functionSourceFile: /src/pdns/pdns/recursordist/nod.cc
    functionUses: 1
    functionsReached:
    - DNSName::toString
    - DNSName::chopOff
    - NODDB::isNewDomain
    linkageType: ''
    returnType: bool
    signature: bool NODDB::isNewDomainWithParent(const DNSName& dname, std::string&
      observed)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: toDNSStringLC
      Src: /src/pdns/pdns/recursordist/nod.cc:225,1
    - Dst: add
      Src: /src/pdns/pdns/recursordist/nod.cc:226,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' dname'
    argTypes:
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 227
      start: 223
    functionDepth: 0
    functionLinenumber: 223
    functionLinenumberEnd: 227
    functionName: NODDB::addDomain
    functionSourceFile: /src/pdns/pdns/recursordist/nod.cc
    functionUses: 0
    functionsReached:
    - add
    - toDNSStringLC
    linkageType: ''
    returnType: void
    signature: void NODDB::addDomain(const DNSName& dname)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: NODDB::addDomain
      Src: /src/pdns/pdns/recursordist/nod.cc:232,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' domain'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 233
      start: 229
    functionDepth: 1
    functionLinenumber: 229
    functionLinenumberEnd: 233
    functionName: NODDB::addDomain
    functionSourceFile: /src/pdns/pdns/recursordist/nod.cc
    functionUses: 1
    functionsReached:
    - NODDB::addDomain
    linkageType: ''
    returnType: void
    signature: void NODDB::addDomain(const std::string& domain)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: testAndAdd
      Src: /src/pdns/pdns/recursordist/nod.cc:238,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' response'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 239
      start: 236
    functionDepth: 0
    functionLinenumber: 236
    functionLinenumberEnd: 239
    functionName: UniqueResponseDB::isUniqueResponse
    functionSourceFile: /src/pdns/pdns/recursordist/nod.cc
    functionUses: 0
    functionsReached:
    - testAndAdd
    linkageType: ''
    returnType: bool
    signature: bool UniqueResponseDB::isUniqueResponse(const std::string& response)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: add
      Src: /src/pdns/pdns/recursordist/nod.cc:243,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' response'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 244
      start: 241
    functionDepth: 0
    functionLinenumber: 241
    functionLinenumberEnd: 244
    functionName: UniqueResponseDB::addResponse
    functionSourceFile: /src/pdns/pdns/recursordist/nod.cc
    functionUses: 0
    functionsReached:
    - add
    linkageType: ''
    returnType: void
    signature: void UniqueResponseDB::addResponse(const std::string& response)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: setThreadName
      Src: /src/pdns/pdns/recursordist/nod.cc:248,1
    - Dst: std::this_thread::sleep_for
      Src: /src/pdns/pdns/recursordist/nod.cc:250,1
    - Dst: std::chrono::seconds
      Src: /src/pdns/pdns/recursordist/nod.cc:250,1
    - Dst: snapshotCurrent
      Src: /src/pdns/pdns/recursordist/nod.cc:251,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - tid
    argTypes:
    - std::thread::id
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 253
      start: 246
    functionDepth: 0
    functionLinenumber: 246
    functionLinenumberEnd: 253
    functionName: UniqueResponseDB::housekeepingThread
    functionSourceFile: /src/pdns/pdns/recursordist/nod.cc
    functionUses: 0
    functionsReached:
    - std::this_thread::sleep_for
    - snapshotCurrent
    - setThreadName
    - std::chrono::seconds
    linkageType: ''
    returnType: void
    signature: void UniqueResponseDB::housekeepingThread(std::thread::id tid)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ERCode::to_s
      Src: /src/pdns/pdns/recursordist/dns.cc:92,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - rcode
    argTypes:
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 88
    functionDepth: 0
    functionLinenumber: 88
    functionLinenumberEnd: 93
    functionName: RCode::to_s
    functionSourceFile: /src/pdns/pdns/recursordist/dns.cc
    functionUses: 37
    functionsReached:
    - ERCode::to_s
    linkageType: ''
    returnType: std::string
    signature: std::string RCode::to_s(uint8_t rcode)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ERCode::to_short_s
      Src: /src/pdns/pdns/recursordist/dns.cc:99,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - rcode
    argTypes:
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 95
    functionDepth: 0
    functionLinenumber: 95
    functionLinenumberEnd: 100
    functionName: RCode::to_short_s
    functionSourceFile: /src/pdns/pdns/recursordist/dns.cc
    functionUses: 8
    functionsReached:
    - ERCode::to_short_s
    linkageType: ''
    returnType: std::string
    signature: std::string RCode::to_short_s(uint8_t rcode)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: std::find
      Src: /src/pdns/pdns/recursordist/dns.cc:104,1
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/dns.cc:104,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/dns.cc:104,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/dns.cc:105,1
    - Dst: std::distance
      Src: /src/pdns/pdns/recursordist/dns.cc:108,1
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/dns.cc:108,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - ' rcode_string'
    argTypes:
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 113
      start: 102
    functionDepth: 1
    functionLinenumber: 102
    functionLinenumberEnd: 113
    functionName: RCode::from_short
    functionSourceFile: /src/pdns/pdns/recursordist/dns.cc
    functionUses: 6
    functionsReached:
    - end
    - std::distance
    - std::find
    - begin
    linkageType: ''
    returnType: std::optional<uint8_t>
    signature: std::optional<uint8_t> RCode::from_short(const std::string_view& rcode_string)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/recursordist/dns.cc:116,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/dns.cc:117,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/dns.cc:117,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/dns.cc:119,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - rcode
    argTypes:
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 115
    functionDepth: 0
    functionLinenumber: 115
    functionLinenumberEnd: 120
    functionName: ERCode::to_s
    functionSourceFile: /src/pdns/pdns/recursordist/dns.cc
    functionUses: 9
    functionsReached:
    - std::string
    - at
    - std::to_string
    - size
    linkageType: ''
    returnType: std::string
    signature: std::string ERCode::to_s(uint16_t rcode)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/recursordist/dns.cc:123,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/dns.cc:124,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/dns.cc:126,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - rcode
    argTypes:
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 127
      start: 122
    functionDepth: 0
    functionLinenumber: 122
    functionLinenumberEnd: 127
    functionName: ERCode::to_short_s
    functionSourceFile: /src/pdns/pdns/recursordist/dns.cc
    functionUses: 5
    functionsReached:
    - at
    - std::to_string
    - size
    linkageType: ''
    returnType: std::string
    signature: std::string ERCode::to_short_s(uint16_t rcode)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::find
      Src: /src/pdns/pdns/recursordist/dns.cc:131,1
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/dns.cc:131,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/dns.cc:131,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/dns.cc:132,1
    - Dst: std::distance
      Src: /src/pdns/pdns/recursordist/dns.cc:135,1
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/dns.cc:135,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ' ercode_string'
    argTypes:
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 136
      start: 129
    functionDepth: 1
    functionLinenumber: 129
    functionLinenumberEnd: 136
    functionName: ERCode::from_short
    functionSourceFile: /src/pdns/pdns/recursordist/dns.cc
    functionUses: 2
    functionsReached:
    - end
    - std::distance
    - std::find
    - begin
    linkageType: ''
    returnType: std::optional<uint16_t>
    signature: std::optional<uint16_t> ERCode::from_short(const std::string_view&
      ercode_string)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::array::size
      Src: /src/pdns/pdns/recursordist/dns.cc:141,1
    - Dst: std::array::at
      Src: /src/pdns/pdns/recursordist/dns.cc:141,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/dns.cc:142,1
    - Dst: std::array::at
      Src: /src/pdns/pdns/recursordist/dns.cc:145,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - opcode
    argTypes:
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 146
      start: 138
    functionDepth: 0
    functionLinenumber: 138
    functionLinenumberEnd: 146
    functionName: Opcode::to_s
    functionSourceFile: /src/pdns/pdns/recursordist/dns.cc
    functionUses: 6
    functionsReached:
    - std::array::at
    - std::to_string
    - std::array::size
    linkageType: ''
    returnType: std::string
    signature: std::string Opcode::to_s(uint8_t opcode)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::find
      Src: /src/pdns/pdns/recursordist/dns.cc:151,1
    - Dst: std::array::begin
      Src: /src/pdns/pdns/recursordist/dns.cc:151,1
    - Dst: std::array::end
      Src: /src/pdns/pdns/recursordist/dns.cc:151,1
    - Dst: std::array::end
      Src: /src/pdns/pdns/recursordist/dns.cc:152,1
    - Dst: auto*::empty
      Src: /src/pdns/pdns/recursordist/dns.cc:152,1
    - Dst: std::distance
      Src: /src/pdns/pdns/recursordist/dns.cc:155,1
    - Dst: std::array::begin
      Src: /src/pdns/pdns/recursordist/dns.cc:155,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - ' opcode_string'
    argTypes:
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 156
      start: 148
    functionDepth: 1
    functionLinenumber: 148
    functionLinenumberEnd: 156
    functionName: Opcode::from_lowercase_string
    functionSourceFile: /src/pdns/pdns/recursordist/dns.cc
    functionUses: 6
    functionsReached:
    - std::distance
    - std::array::end
    - std::find
    - auto*::empty
    - std::array::begin
    linkageType: ''
    returnType: std::optional<uint8_t>
    signature: std::optional<uint8_t> Opcode::from_lowercase_string(const std::string_view&
      opcode_string)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pdns::views::UnsignedCharView::length
      Src: /src/pdns/pdns/recursordist/dns.cc:169,1
    - Dst: burtleCI
      Src: /src/pdns/pdns/recursordist/dns.cc:174,1
    - Dst: pdns::views::UnsignedCharView::data
      Src: /src/pdns/pdns/recursordist/dns.cc:174,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 4
    argNames:
    - packet
    - packet_len
    - init
    - ' wasOK'
    argTypes:
    - uint8_t*
    - uint16_t
    - uint32_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 181
      start: 159
    functionDepth: 0
    functionLinenumber: 159
    functionLinenumberEnd: 181
    functionName: hashQuestion
    functionSourceFile: /src/pdns/pdns/recursordist/dns.cc
    functionUses: 1
    functionsReached:
    - pdns::views::UnsignedCharView::length
    - burtleCI
    - pdns::views::UnsignedCharView::data
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t hashQuestion(const uint8_t* packet, uint16_t packet_len, uint32_t
      init, bool& wasOK)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/recursordist/dns.cc:192,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/dns.cc:195,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - place
    argTypes:
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 196
      start: 190
    functionDepth: 0
    functionLinenumber: 190
    functionLinenumberEnd: 196
    functionName: DNSResourceRecord::placeString
    functionSourceFile: /src/pdns/pdns/recursordist/dns.cc
    functionUses: 2
    functionsReached:
    - at
    - size
    linkageType: ''
    returnType: std::string
    signature: std::string DNSResourceRecord::placeString(uint8_t place)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/recursordist/rec-cookiestore.hh:67,1
    - Dst: std::array::size
      Src: /src/pdns/pdns/recursordist/rec-cookiestore.hh:68,1
    - Dst: std::array::at
      Src: /src/pdns/pdns/recursordist/rec-cookiestore.hh:71,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - support
    argTypes:
    - Support
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 61
    functionDepth: 0
    functionLinenumber: 61
    functionLinenumberEnd: 72
    functionName: toString
    functionSourceFile: /src/pdns/pdns/recursordist/rec-cookiestore.hh
    functionUses: 356
    functionsReached:
    - std::array::at
    - std::array::size
    - static_cast<uint8_t>
    linkageType: ''
    returnType: std::string
    signature: std::string toString(Support support)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 74
    functionDepth: 0
    functionLinenumber: 74
    functionLinenumberEnd: 77
    functionName: getSupport
    functionSourceFile: /src/pdns/pdns/recursordist/rec-cookiestore.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Support
    signature: Support getSupport() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - support
    - now
    argTypes:
    - Support
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 79
    functionDepth: 0
    functionLinenumber: 79
    functionLinenumberEnd: 83
    functionName: setSupport
    functionSourceFile: /src/pdns/pdns/recursordist/rec-cookiestore.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setSupport(Support support, time_t now) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 85
    functionDepth: 0
    functionLinenumber: 85
    functionLinenumberEnd: 88
    functionName: supported
    functionSourceFile: /src/pdns/pdns/recursordist/rec-cookiestore.hh
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool supported() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: productTypeApiType
      Src: /src/pdns/pdns/recursordist/ws-api.cc:59,1
    - Dst: getPDNSVersion
      Src: /src/pdns/pdns/recursordist/ws-api.cc:60,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 53
    functionDepth: 0
    functionLinenumber: 53
    functionLinenumberEnd: 67
    functionName: getServerDetail
    functionSourceFile: /src/pdns/pdns/recursordist/ws-api.cc
    functionUses: 2
    functionsReached:
    - productTypeApiType
    - getPDNSVersion
    linkageType: ''
    returnType: Json
    signature: Json getServerDetail()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/ws-api.cc:77,1
    - Dst: HttpResponse*::setJsonBody
      Src: /src/pdns/pdns/recursordist/ws-api.cc:79,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - resp
    argTypes:
    - HttpResponse*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 72
    functionDepth: 0
    functionLinenumber: 72
    functionLinenumberEnd: 80
    functionName: apiDiscovery
    functionSourceFile: /src/pdns/pdns/recursordist/ws-api.cc
    functionUses: 0
    functionsReached:
    - std::move
    - HttpResponse*::setJsonBody
    linkageType: ''
    returnType: void
    signature: void apiDiscovery(HttpRequest* /* req */, HttpResponse* resp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: HttpResponse*::setJsonBody
      Src: /src/pdns/pdns/recursordist/ws-api.cc:89,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - resp
    argTypes:
    - HttpResponse*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 82
    functionDepth: 0
    functionLinenumber: 82
    functionLinenumberEnd: 90
    functionName: apiDiscoveryV1
    functionSourceFile: /src/pdns/pdns/recursordist/ws-api.cc
    functionUses: 0
    functionsReached:
    - HttpResponse*::setJsonBody
    linkageType: ''
    returnType: void
    signature: void apiDiscoveryV1(HttpRequest* /* req */, HttpResponse* resp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getServerDetail
      Src: /src/pdns/pdns/recursordist/ws-api.cc:94,1
    - Dst: HttpResponse*::setJsonBody
      Src: /src/pdns/pdns/recursordist/ws-api.cc:95,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - resp
    argTypes:
    - HttpResponse*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 92
    functionDepth: 0
    functionLinenumber: 92
    functionLinenumberEnd: 96
    functionName: apiServer
    functionSourceFile: /src/pdns/pdns/recursordist/ws-api.cc
    functionUses: 0
    functionsReached:
    - getServerDetail
    - HttpResponse*::setJsonBody
    linkageType: ''
    returnType: void
    signature: void apiServer(HttpRequest* /* req */, HttpResponse* resp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: HttpResponse*::setJsonBody
      Src: /src/pdns/pdns/recursordist/ws-api.cc:100,1
    - Dst: getServerDetail
      Src: /src/pdns/pdns/recursordist/ws-api.cc:100,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - resp
    argTypes:
    - HttpResponse*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 98
    functionDepth: 0
    functionLinenumber: 98
    functionLinenumberEnd: 101
    functionName: apiServerDetail
    functionSourceFile: /src/pdns/pdns/recursordist/ws-api.cc
    functionUses: 0
    functionsReached:
    - getServerDetail
    - HttpResponse*::setJsonBody
    linkageType: ''
    returnType: void
    signature: void apiServerDetail(HttpRequest* /* req */, HttpResponse* resp)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: boost::ends_with
      Src: /src/pdns/pdns/recursordist/ws-api.cc:106,1
    - Dst: boost::ends_with
      Src: /src/pdns/pdns/recursordist/ws-api.cc:110,1
    - Dst: boost::ends_with
      Src: /src/pdns/pdns/recursordist/ws-api.cc:115,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - ' setting'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 103
    functionDepth: 0
    functionLinenumber: 103
    functionLinenumberEnd: 120
    functionName: shouldBeRedacted
    functionSourceFile: /src/pdns/pdns/recursordist/ws-api.cc
    functionUses: 1
    functionsReached:
    - boost::ends_with
    linkageType: ''
    returnType: bool
    signature: bool shouldBeRedacted(const std::string& setting)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/ws-api.cc:124,1
    - Dst: shouldBeRedacted
      Src: /src/pdns/pdns/recursordist/ws-api.cc:129,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/ws-api.cc:133,1
    - Dst: Json::array::push_back
      Src: /src/pdns/pdns/recursordist/ws-api.cc:136,1
    - Dst: HttpResponse*::setJsonBody
      Src: /src/pdns/pdns/recursordist/ws-api.cc:142,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - resp
    argTypes:
    - HttpResponse*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 143
      start: 122
    functionDepth: 0
    functionLinenumber: 122
    functionLinenumberEnd: 143
    functionName: apiServerConfig
    functionSourceFile: /src/pdns/pdns/recursordist/ws-api.cc
    functionUses: 1
    functionsReached:
    - shouldBeRedacted
    - Json::array::push_back
    - arg
    - HttpResponse*::setJsonBody
    linkageType: ''
    returnType: void
    signature: void apiServerConfig(HttpRequest* /* req */, HttpResponse* resp)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: string::empty
      Src: /src/pdns/pdns/recursordist/ws-api.cc:149,1
    - Dst: productServerStatisticsFetch
      Src: /src/pdns/pdns/recursordist/ws-api.cc:150,1
    - Dst: ApiException
      Src: /src/pdns/pdns/recursordist/ws-api.cc:152,1
    - Dst: Json::array::push_back
      Src: /src/pdns/pdns/recursordist/ws-api.cc:155,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/ws-api.cc:158,1
    - Dst: HttpResponse*::setJsonBody
      Src: /src/pdns/pdns/recursordist/ws-api.cc:161,1
    - Dst: productServerStatisticsFetch
      Src: /src/pdns/pdns/recursordist/ws-api.cc:168,1
    - Dst: Json::array::push_back
      Src: /src/pdns/pdns/recursordist/ws-api.cc:171,1
    - Dst: sum
      Src: /src/pdns/pdns/recursordist/ws-api.cc:179,1
    - Dst: auto::getQTypeResponseCounts
      Src: /src/pdns/pdns/recursordist/ws-api.cc:180,1
    - Dst: auto::getSizeResponseCounts
      Src: /src/pdns/pdns/recursordist/ws-api.cc:181,1
    - Dst: auto::getRCodeResponseCounts
      Src: /src/pdns/pdns/recursordist/ws-api.cc:182,1
    - Dst: getQTypeResponseCounts
      Src: /src/pdns/pdns/recursordist/ws-api.cc:184,1
    - Dst: getSizeResponseCounts
      Src: /src/pdns/pdns/recursordist/ws-api.cc:185,1
    - Dst: getRCodeResponseCounts
      Src: /src/pdns/pdns/recursordist/ws-api.cc:186,1
    - Dst: Json::array::push_back
      Src: /src/pdns/pdns/recursordist/ws-api.cc:194,1
    - Dst: DNSRecordContent::NumberToType
      Src: /src/pdns/pdns/recursordist/ws-api.cc:195,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/ws-api.cc:196,1
    - Dst: Json::array::push_back
      Src: /src/pdns/pdns/recursordist/ws-api.cc:200,1
    - Dst: Json::array::push_back
      Src: /src/pdns/pdns/recursordist/ws-api.cc:214,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/ws-api.cc:215,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/ws-api.cc:216,1
    - Dst: Json::array::push_back
      Src: /src/pdns/pdns/recursordist/ws-api.cc:220,1
    - Dst: Json::array::push_back
      Src: /src/pdns/pdns/recursordist/ws-api.cc:234,1
    - Dst: RCode::to_s
      Src: /src/pdns/pdns/recursordist/ws-api.cc:235,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/ws-api.cc:236,1
    - Dst: Json::array::push_back
      Src: /src/pdns/pdns/recursordist/ws-api.cc:240,1
    - Dst: HttpRequest*::getvars::count
      Src: /src/pdns/pdns/recursordist/ws-api.cc:248,1
    - Dst: listRings
      Src: /src/pdns/pdns/recursordist/ws-api.cc:249,1
    - Dst: getRing
      Src: /src/pdns/pdns/recursordist/ws-api.cc:251,1
    - Dst: Json::array::push_back
      Src: /src/pdns/pdns/recursordist/ws-api.cc:257,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/ws-api.cc:259,1
    - Dst: Json::array::push_back
      Src: /src/pdns/pdns/recursordist/ws-api.cc:263,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/ws-api.cc:266,1
    - Dst: getRingSize
      Src: /src/pdns/pdns/recursordist/ws-api.cc:266,1
    - Dst: HttpResponse*::setJsonBody
      Src: /src/pdns/pdns/recursordist/ws-api.cc:273,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 43
    argCount: 2
    argNames:
    - req
    - resp
    argTypes:
    - HttpRequest*
    - HttpResponse*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 274
      start: 145
    functionDepth: 0
    functionLinenumber: 145
    functionLinenumberEnd: 274
    functionName: apiServerStatistics
    functionSourceFile: /src/pdns/pdns/recursordist/ws-api.cc
    functionUses: 0
    functionsReached:
    - std::to_string
    - ApiException
    - HttpResponse*::setJsonBody
    - Json::array::push_back
    - getQTypeResponseCounts
    - RCode::to_s
    - listRings
    - HttpRequest*::getvars::count
    - getRing
    - string::empty
    - getRCodeResponseCounts
    - DNSRecordContent::NumberToType
    - getRingSize
    - auto::getSizeResponseCounts
    - sum
    - productServerStatisticsFetch
    - getSizeResponseCounts
    - auto::getRCodeResponseCounts
    - auto::getQTypeResponseCounts
    linkageType: ''
    returnType: void
    signature: void apiServerStatistics(HttpRequest* req, HttpResponse* resp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: isCanonical
      Src: /src/pdns/pdns/recursordist/ws-api.cc:278,1
    - Dst: ApiException
      Src: /src/pdns/pdns/recursordist/ws-api.cc:279,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/ws-api.cc:282,1
    - Dst: ApiException
      Src: /src/pdns/pdns/recursordist/ws-api.cc:285,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 1
    argNames:
    - ' name'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 287
      start: 276
    functionDepth: 0
    functionLinenumber: 276
    functionLinenumberEnd: 287
    functionName: apiNameToDNSName
    functionSourceFile: /src/pdns/pdns/recursordist/ws-api.cc
    functionUses: 4
    functionsReached:
    - DNSName
    - isCanonical
    - ApiException
    linkageType: ''
    returnType: DNSName
    signature: DNSName apiNameToDNSName(const string& name)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ZoneName::findVariantSeparator
      Src: /src/pdns/pdns/recursordist/ws-api.cc:294,1
    - Dst: isCanonical
      Src: /src/pdns/pdns/recursordist/ws-api.cc:295,1
    - Dst: std::string_view
      Src: /src/pdns/pdns/recursordist/ws-api.cc:295,1
    - Dst: ApiException
      Src: /src/pdns/pdns/recursordist/ws-api.cc:296,1
    - Dst: ZoneName
      Src: /src/pdns/pdns/recursordist/ws-api.cc:299,1
    - Dst: ApiException
      Src: /src/pdns/pdns/recursordist/ws-api.cc:302,1
    - Dst: ZoneName
      Src: /src/pdns/pdns/recursordist/ws-api.cc:305,1
    - Dst: apiNameToDNSName
      Src: /src/pdns/pdns/recursordist/ws-api.cc:305,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 1
    argNames:
    - ' name'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 306
      start: 290
    functionDepth: 0
    functionLinenumber: 290
    functionLinenumberEnd: 306
    functionName: apiNameToZoneName
    functionSourceFile: /src/pdns/pdns/recursordist/ws-api.cc
    functionUses: 4
    functionsReached:
    - isCanonical
    - apiNameToDNSName
    - std::string_view
    - ApiException
    - ZoneName
    - ZoneName::findVariantSeparator
    linkageType: ''
    returnType: ZoneName
    signature: ZoneName apiNameToZoneName(const string& name)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/ws-api.cc:314,1
    - Dst: HttpBadRequestException
      Src: /src/pdns/pdns/recursordist/ws-api.cc:315,1
    - Dst: find
      Src: /src/pdns/pdns/recursordist/ws-api.cc:320,1
    - Dst: substr
      Src: /src/pdns/pdns/recursordist/ws-api.cc:321,1
    - Dst: static_cast<char>
      Src: /src/pdns/pdns/recursordist/ws-api.cc:325,1
    - Dst: static_cast<char>
      Src: /src/pdns/pdns/recursordist/ws-api.cc:328,1
    - Dst: HttpBadRequestException
      Src: /src/pdns/pdns/recursordist/ws-api.cc:331,1
    - Dst: static_cast<char>
      Src: /src/pdns/pdns/recursordist/ws-api.cc:333,1
    - Dst: static_cast<char>
      Src: /src/pdns/pdns/recursordist/ws-api.cc:337,1
    - Dst: static_cast<char>
      Src: /src/pdns/pdns/recursordist/ws-api.cc:340,1
    - Dst: HttpBadRequestException
      Src: /src/pdns/pdns/recursordist/ws-api.cc:343,1
    - Dst: substr
      Src: /src/pdns/pdns/recursordist/ws-api.cc:351,1
    - Dst: ostringstream::str
      Src: /src/pdns/pdns/recursordist/ws-api.cc:354,1
    - Dst: ZoneName
      Src: /src/pdns/pdns/recursordist/ws-api.cc:357,1
    - Dst: ApiException
      Src: /src/pdns/pdns/recursordist/ws-api.cc:360,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 35
    argCount: 1
    argNames:
    - ' identifier'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 362
      start: 309
    functionDepth: 0
    functionLinenumber: 309
    functionLinenumberEnd: 362
    functionName: apiZoneIdToName
    functionSourceFile: /src/pdns/pdns/recursordist/ws-api.cc
    functionUses: 4
    functionsReached:
    - ApiException
    - substr
    - ostringstream::str
    - empty
    - ZoneName
    - HttpBadRequestException
    - static_cast<char>
    - find
    linkageType: ''
    returnType: ZoneName
    signature: ZoneName apiZoneIdToName(const string& identifier)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: boost::format
      Src: /src/pdns/pdns/recursordist/ws-api.cc:373,1
    - Dst: ostringstream::str
      Src: /src/pdns/pdns/recursordist/ws-api.cc:377,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 8
    argCount: 1
    argNames:
    - ' name'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 378
      start: 364
    functionDepth: 0
    functionLinenumber: 364
    functionLinenumberEnd: 378
    functionName: encodeName
    functionSourceFile: /src/pdns/pdns/recursordist/ws-api.cc
    functionUses: 2
    functionsReached:
    - ostringstream::str
    - boost::format
    linkageType: ''
    returnType: string
    signature: string encodeName(const string& name)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: apiNameToId
      Src: /src/pdns/pdns/recursordist/ws-api.cc:383,1
    - Dst: toString
      Src: /src/pdns/pdns/recursordist/ws-api.cc:383,1
    - Dst: hasVariant
      Src: /src/pdns/pdns/recursordist/ws-api.cc:385,1
    - Dst: encodeName
      Src: /src/pdns/pdns/recursordist/ws-api.cc:387,1
    - Dst: getVariant
      Src: /src/pdns/pdns/recursordist/ws-api.cc:387,1
    - Dst: apiNameToId
      Src: /src/pdns/pdns/recursordist/ws-api.cc:391,1
    - Dst: toString
      Src: /src/pdns/pdns/recursordist/ws-api.cc:391,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - ' dname'
    argTypes:
    - ZoneName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 393
      start: 380
    functionDepth: 0
    functionLinenumber: 380
    functionLinenumberEnd: 393
    functionName: apiZoneNameToId
    functionSourceFile: /src/pdns/pdns/recursordist/ws-api.cc
    functionUses: 2
    functionsReached:
    - toString
    - getVariant
    - encodeName
    - hasVariant
    - apiNameToId
    linkageType: ''
    returnType: string
    signature: string apiZoneNameToId(const ZoneName& dname)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: encodeName
      Src: /src/pdns/pdns/recursordist/ws-api.cc:397,1
    - Dst: string::empty
      Src: /src/pdns/pdns/recursordist/ws-api.cc:400,1
    - Dst: string::substr
      Src: /src/pdns/pdns/recursordist/ws-api.cc:400,1
    - Dst: string::size
      Src: /src/pdns/pdns/recursordist/ws-api.cc:400,1
    - Dst: boost::format
      Src: /src/pdns/pdns/recursordist/ws-api.cc:407,1
    - Dst: str
      Src: /src/pdns/pdns/recursordist/ws-api.cc:407,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - ' name'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 410
      start: 395
    functionDepth: 0
    functionLinenumber: 395
    functionLinenumberEnd: 410
    functionName: apiNameToId
    functionSourceFile: /src/pdns/pdns/recursordist/ws-api.cc
    functionUses: 4
    functionsReached:
    - string::size
    - string::empty
    - encodeName
    - string::substr
    - str
    - boost::format
    linkageType: ''
    returnType: string
    signature: string apiNameToId(const string& name)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::string_view::find_first_not_of
      Src: /src/pdns/pdns/recursordist/ws-api.cc:414,1
    - Dst: ApiException
      Src: /src/pdns/pdns/recursordist/ws-api.cc:415,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/ws-api.cc:415,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - name
    argTypes:
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 417
      start: 412
    functionDepth: 0
    functionLinenumber: 412
    functionLinenumberEnd: 417
    functionName: apiCheckNameAllowedCharacters
    functionSourceFile: /src/pdns/pdns/recursordist/ws-api.cc
    functionUses: 3
    functionsReached:
    - std::string
    - std::string_view::find_first_not_of
    - ApiException
    linkageType: ''
    returnType: void
    signature: void apiCheckNameAllowedCharacters(std::string_view name)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::string_view::compare
      Src: /src/pdns/pdns/recursordist/ws-api.cc:421,1
    - Dst: apiCheckNameAllowedCharacters
      Src: /src/pdns/pdns/recursordist/ws-api.cc:422,1
    - Dst: std::string_view::substr
      Src: /src/pdns/pdns/recursordist/ws-api.cc:422,1
    - Dst: apiCheckNameAllowedCharacters
      Src: /src/pdns/pdns/recursordist/ws-api.cc:425,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - qname
    argTypes:
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 427
      start: 419
    functionDepth: 0
    functionLinenumber: 419
    functionLinenumberEnd: 427
    functionName: apiCheckQNameAllowedCharacters
    functionSourceFile: /src/pdns/pdns/recursordist/ws-api.cc
    functionUses: 3
    functionsReached:
    - apiCheckNameAllowedCharacters
    - std::string_view::compare
    - std::string_view::substr
    linkageType: ''
    returnType: void
    signature: void apiCheckQNameAllowedCharacters(std::string_view qname)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: std::stringstream::str
      Src: /src/pdns/pdns/recursordist/testrunner.cc:46,1
    - Dst: std::quoted
      Src: /src/pdns/pdns/recursordist/testrunner.cc:47,1
    - Dst: std::quoted
      Src: /src/pdns/pdns/recursordist/testrunner.cc:49,1
    - Dst: error::value
      Src: /src/pdns/pdns/recursordist/testrunner.cc:49,1
    - Dst: std::quoted
      Src: /src/pdns/pdns/recursordist/testrunner.cc:53,1
    - Dst: name::value
      Src: /src/pdns/pdns/recursordist/testrunner.cc:53,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/recursordist/testrunner.cc:57,1
    - Dst: std::quoted
      Src: /src/pdns/pdns/recursordist/testrunner.cc:60,1
    - Dst: Logging::toTimestampStringMilli
      Src: /src/pdns/pdns/recursordist/testrunner.cc:60,1
    - Dst: std::quoted
      Src: /src/pdns/pdns/recursordist/testrunner.cc:63,1
    - Dst: Logger::Urgency
      Src: /src/pdns/pdns/recursordist/testrunner.cc:65,1
    - Dst: std::stringstream::str
      Src: /src/pdns/pdns/recursordist/testrunner.cc:66,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 1
    argNames:
    - ' entry'
    argTypes:
    - Logging::Entry
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 42
    functionDepth: 0
    functionLinenumber: 42
    functionLinenumberEnd: 67
    functionName: loggerBackend
    functionSourceFile: /src/pdns/pdns/recursordist/testrunner.cc
    functionUses: 0
    functionsReached:
    - std::quoted
    - Logger::Urgency
    - std::stringstream::str
    - name::value
    - error::value
    - Logging::toTimestampStringMilli
    - static_cast<int>
    linkageType: ''
    returnType: void
    signature: void loggerBackend(const Logging::Entry& entry)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dns_random_uint16
      Src: /src/pdns/pdns/recursordist/testrunner.cc:72,1
    - Dst: Logging::Logger::create
      Src: /src/pdns/pdns/recursordist/testrunner.cc:73,1
    - Dst: reportAllTypes
      Src: /src/pdns/pdns/recursordist/testrunner.cc:74,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 69
    functionDepth: 0
    functionLinenumber: 69
    functionLinenumberEnd: 76
    functionName: init_unit_test
    functionSourceFile: /src/pdns/pdns/recursordist/testrunner.cc
    functionUses: 0
    functionsReached:
    - Logging::Logger::create
    - dns_random_uint16
    - reportAllTypes
    linkageType: ''
    returnType: bool
    signature: bool init_unit_test()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: setenv
      Src: /src/pdns/pdns/recursordist/testrunner.cc:81,1
    - Dst: boost::unit_test::unit_test_main
      Src: /src/pdns/pdns/recursordist/testrunner.cc:82,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 79
    functionDepth: 0
    functionLinenumber: 79
    functionLinenumberEnd: 83
    functionName: main
    functionSourceFile: /src/pdns/pdns/recursordist/testrunner.cc
    functionUses: 43
    functionsReached:
    - boost::unit_test::unit_test_main
    - setenv
    linkageType: ''
    returnType: int
    signature: int main(int argc, char* argv[])
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Logger::open
      Src: /src/pdns/pdns/recursordist/logger.hh:65,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - f
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 62
    functionDepth: 0
    functionLinenumber: 62
    functionLinenumberEnd: 66
    functionName: Logger::setFacility
    functionSourceFile: /src/pdns/pdns/recursordist/logger.hh
    functionUses: 0
    functionsReached:
    - Logger::open
    linkageType: ''
    returnType: void
    signature: void setFacility(int f)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Logger::open
      Src: /src/pdns/pdns/recursordist/logger.hh:70,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - f
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 67
    functionDepth: 0
    functionLinenumber: 67
    functionLinenumberEnd: 71
    functionName: Logger::setFlag
    functionSourceFile: /src/pdns/pdns/recursordist/logger.hh
    functionUses: 0
    functionsReached:
    - Logger::open
    linkageType: ''
    returnType: void
    signature: void setFlag(int f)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - d
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 78
    functionDepth: 0
    functionLinenumber: 78
    functionLinenumberEnd: 81
    functionName: Logger::disableSyslog
    functionSourceFile: /src/pdns/pdns/recursordist/logger.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void disableSyslog(bool d)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - t
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 83
    functionDepth: 0
    functionLinenumber: 83
    functionLinenumberEnd: 86
    functionName: Logger::setTimestamps
    functionSourceFile: /src/pdns/pdns/recursordist/logger.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setTimestamps(bool t)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - p
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 88
    functionDepth: 0
    functionLinenumber: 88
    functionLinenumberEnd: 91
    functionName: Logger::setPrefixed
    functionSourceFile: /src/pdns/pdns/recursordist/logger.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setPrefixed(bool p)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Logger::open
      Src: /src/pdns/pdns/recursordist/logger.hh:99,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 96
    functionDepth: 0
    functionLinenumber: 96
    functionLinenumberEnd: 100
    functionName: Logger::resetFlags
    functionSourceFile: /src/pdns/pdns/recursordist/logger.hh
    functionUses: 0
    functionsReached:
    - Logger::open
    linkageType: ''
    returnType: void
    signature: void resetFlags()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: toString
      Src: /src/pdns/pdns/recursordist/logger.hh:120,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ' qtype'
    argTypes:
    - QType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 122
      start: 118
    functionDepth: 0
    functionLinenumber: 118
    functionLinenumberEnd: 122
    functionName: '& operator<<(const QType& qtype)'
    functionSourceFile: /src/pdns/pdns/recursordist/logger.hh
    functionUses: 0
    functionsReached:
    - toString
    linkageType: ''
    returnType: Logger
    signature: Logger & operator<<(const QType& qtype)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: toString
      Src: /src/pdns/pdns/recursordist/logger.hh:126,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ' qclass'
    argTypes:
    - QClass
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 124
    functionDepth: 0
    functionLinenumber: 124
    functionLinenumberEnd: 128
    functionName: '& operator<<(const QClass& qclass)'
    functionSourceFile: /src/pdns/pdns/recursordist/logger.hh
    functionUses: 0
    functionsReached:
    - toString
    linkageType: ''
    returnType: Logger
    signature: Logger & operator<<(const QClass& qclass)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ostringstream::str
      Src: /src/pdns/pdns/recursordist/logger.hh:136,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - ' i'
    argTypes:
    - T
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 138
      start: 132
    functionDepth: 0
    functionLinenumber: 132
    functionLinenumberEnd: 138
    functionName: '& operator<<(const T& i)'
    functionSourceFile: /src/pdns/pdns/recursordist/logger.hh
    functionUses: 0
    functionsReached:
    - ostringstream::str
    linkageType: ''
    returnType: Logger
    signature: Logger & operator<<(const T& i)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 169
      start: 168
    functionDepth: 0
    functionLinenumber: 168
    functionLinenumberEnd: 169
    functionName: DLOG
    functionSourceFile: /src/pdns/pdns/recursordist/logger.hh
    functionUses: 34
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DLOG(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 171
      start: 170
    functionDepth: 0
    functionLinenumber: 170
    functionLinenumberEnd: 171
    functionName: DLOG
    functionSourceFile: /src/pdns/pdns/recursordist/logger.hh
    functionUses: 34
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DLOG(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - log
    - ','
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 193
      start: 190
    functionDepth: 0
    functionLinenumber: 190
    functionLinenumberEnd: 193
    functionName: VLOG
    functionSourceFile: /src/pdns/pdns/recursordist/logger.hh
    functionUses: 13
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: VLOG(log, x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - log
    - ','
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 207
      start: 204
    functionDepth: 0
    functionLinenumber: 204
    functionLinenumberEnd: 207
    functionName: VLOG_NO_PREFIX
    functionSourceFile: /src/pdns/pdns/recursordist/logger.hh
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: VLOG_NO_PREFIX(log, x)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: backtrace
      Src: /src/pdns/pdns/recursordist/malloctrace.cc:37,1
    - Dst: vector<void*>
      Src: /src/pdns/pdns/recursordist/malloctrace.cc:38,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 39
      start: 34
    functionDepth: 0
    functionLinenumber: 34
    functionLinenumberEnd: 39
    functionName: MallocTracer::makeBacktrace
    functionSourceFile: /src/pdns/pdns/recursordist/malloctrace.cc
    functionUses: 1
    functionsReached:
    - backtrace
    - vector<void*>
    linkageType: ''
    returnType: vector<void*>
    signature: vector<void*> MallocTracer::makeBacktrace()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: __libc_malloc
      Src: /src/pdns/pdns/recursordist/malloctrace.cc:49,1
    - Dst: MallocTracer::MallocTracer
      Src: /src/pdns/pdns/recursordist/malloctrace.cc:50,1
    - Dst: malloc
      Src: /src/pdns/pdns/recursordist/malloctrace.cc:52,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - size
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 46
    functionDepth: 0
    functionLinenumber: 46
    functionLinenumberEnd: 53
    functionName: malloc
    functionSourceFile: /src/pdns/pdns/recursordist/malloctrace.cc
    functionUses: 7
    functionsReached:
    - MallocTracer::MallocTracer
    - malloc
    - __libc_malloc
    linkageType: ''
    returnType: void
    signature: void * malloc (size_t size)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/pdns/pdns/recursordist/malloctrace.cc:58,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - ptr
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 55
    functionDepth: 0
    functionLinenumber: 55
    functionLinenumberEnd: 59
    functionName: free
    functionSourceFile: /src/pdns/pdns/recursordist/malloctrace.cc
    functionUses: 52
    functionsReached:
    - free
    linkageType: ''
    returnType: void
    signature: void free(void* ptr)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: __libc_malloc
      Src: /src/pdns/pdns/recursordist/malloctrace.cc:67,1
    - Dst: std::scoped_lock
      Src: /src/pdns/pdns/recursordist/malloctrace.cc:76,1
    - Dst: MallocTracer::makeBacktrace
      Src: /src/pdns/pdns/recursordist/malloctrace.cc:77,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - size
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 65
    functionDepth: 0
    functionLinenumber: 65
    functionLinenumberEnd: 85
    functionName: MallocTracer::malloc
    functionSourceFile: /src/pdns/pdns/recursordist/malloctrace.cc
    functionUses: 0
    functionsReached:
    - std::scoped_lock
    - MallocTracer::makeBacktrace
    - __libc_malloc
    linkageType: ''
    returnType: void
    signature: void * MallocTracer::malloc(size_t size)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: __libc_free
      Src: /src/pdns/pdns/recursordist/malloctrace.cc:89,1
    - Dst: std::scoped_lock
      Src: /src/pdns/pdns/recursordist/malloctrace.cc:92,1
    - Dst: find
      Src: /src/pdns/pdns/recursordist/malloctrace.cc:93,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/malloctrace.cc:94,1
    - Dst: erase
      Src: /src/pdns/pdns/recursordist/malloctrace.cc:96,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - ptr
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 87
    functionDepth: 0
    functionLinenumber: 87
    functionLinenumberEnd: 100
    functionName: MallocTracer::free
    functionSourceFile: /src/pdns/pdns/recursordist/malloctrace.cc
    functionUses: 0
    functionsReached:
    - end
    - std::scoped_lock
    - erase
    - __libc_free
    - find
    linkageType: ''
    returnType: void
    signature: void MallocTracer::free(void* ptr)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: allocators_t::emplace_back
      Src: /src/pdns/pdns/recursordist/malloctrace.cc:107,1
    - Dst: std::sort
      Src: /src/pdns/pdns/recursordist/malloctrace.cc:109,1
    - Dst: allocators_t::begin
      Src: /src/pdns/pdns/recursordist/malloctrace.cc:109,1
    - Dst: allocators_t::end
      Src: /src/pdns/pdns/recursordist/malloctrace.cc:109,1
    - Dst: allocators_t::size
      Src: /src/pdns/pdns/recursordist/malloctrace.cc:114,1
    - Dst: allocators_t::clear
      Src: /src/pdns/pdns/recursordist/malloctrace.cc:115,1
    - Dst: allocators_t::erase
      Src: /src/pdns/pdns/recursordist/malloctrace.cc:117,1
    - Dst: allocators_t::begin
      Src: /src/pdns/pdns/recursordist/malloctrace.cc:117,1
    - Dst: allocators_t::begin
      Src: /src/pdns/pdns/recursordist/malloctrace.cc:117,1
    - Dst: allocators_t::size
      Src: /src/pdns/pdns/recursordist/malloctrace.cc:117,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 1
    argNames:
    - num
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 102
    functionDepth: 1
    functionLinenumber: 102
    functionLinenumberEnd: 120
    functionName: MallocTracer::topAllocators
    functionSourceFile: /src/pdns/pdns/recursordist/malloctrace.cc
    functionUses: 1
    functionsReached:
    - allocators_t::erase
    - allocators_t::size
    - allocators_t::end
    - std::sort
    - allocators_t::clear
    - allocators_t::begin
    - allocators_t::emplace_back
    linkageType: ''
    returnType: MallocTracer::allocators_t
    signature: MallocTracer::allocators_t MallocTracer::topAllocators(int num)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MallocTracer::topAllocators
      Src: /src/pdns/pdns/recursordist/malloctrace.cc:125,1
    - Dst: backtrace_symbols
      Src: /src/pdns/pdns/recursordist/malloctrace.cc:133,1
    - Dst: second::size
      Src: /src/pdns/pdns/recursordist/malloctrace.cc:133,1
    - Dst: second::size
      Src: /src/pdns/pdns/recursordist/malloctrace.cc:134,1
    - Dst: std::ostringstream::str
      Src: /src/pdns/pdns/recursordist/malloctrace.cc:139,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - num
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 142
      start: 122
    functionDepth: 0
    functionLinenumber: 122
    functionLinenumberEnd: 142
    functionName: MallocTracer::topAllocatorsString
    functionSourceFile: /src/pdns/pdns/recursordist/malloctrace.cc
    functionUses: 0
    functionsReached:
    - backtrace_symbols
    - std::ostringstream::str
    - MallocTracer::topAllocators
    - second::size
    linkageType: ''
    returnType: std::string
    signature: std::string MallocTracer::topAllocatorsString(int num)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::scoped_lock
      Src: /src/pdns/pdns/recursordist/malloctrace.cc:147,1
    - Dst: clear
      Src: /src/pdns/pdns/recursordist/malloctrace.cc:148,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 150
      start: 144
    functionDepth: 1
    functionLinenumber: 144
    functionLinenumberEnd: 150
    functionName: MallocTracer::clearAllocators
    functionSourceFile: /src/pdns/pdns/recursordist/malloctrace.cc
    functionUses: 0
    functionsReached:
    - std::scoped_lock
    - clear
    linkageType: ''
    returnType: void
    signature: void MallocTracer::clearAllocators()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-secpoll_cc.cc:20,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ' ex'
    argTypes:
    - PDNSException
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 22
      start: 18
    functionDepth: 0
    functionLinenumber: 18
    functionLinenumberEnd: 22
    functionName: checkBasicMessage1
    functionSourceFile: /src/pdns/pdns/recursordist/test-secpoll_cc.cc
    functionUses: 0
    functionsReached:
    - BOOST_CHECK_EQUAL
    linkageType: ''
    returnType: bool
    signature: bool checkBasicMessage1(const PDNSException& ex)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-secpoll_cc.cc:26,1
    - Dst: RCode::to_s
      Src: /src/pdns/pdns/recursordist/test-secpoll_cc.cc:26,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ' ex'
    argTypes:
    - PDNSException
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 28
      start: 24
    functionDepth: 0
    functionLinenumber: 24
    functionLinenumberEnd: 28
    functionName: checkBasicMessage2
    functionSourceFile: /src/pdns/pdns/recursordist/test-secpoll_cc.cc
    functionUses: 0
    functionsReached:
    - RCode::to_s
    - BOOST_CHECK_EQUAL
    linkageType: ''
    returnType: bool
    signature: bool checkBasicMessage2(const PDNSException& ex)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-secpoll_cc.cc:32,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ' ex'
    argTypes:
    - PDNSException
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 34
      start: 30
    functionDepth: 0
    functionLinenumber: 30
    functionLinenumberEnd: 34
    functionName: checkBasicMessage3
    functionSourceFile: /src/pdns/pdns/recursordist/test-secpoll_cc.cc
    functionUses: 0
    functionsReached:
    - BOOST_CHECK_EQUAL
    linkageType: ''
    returnType: bool
    signature: bool checkBasicMessage3(const PDNSException& ex)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-secpoll_cc.cc:38,1
    - Dst: reason::find
      Src: /src/pdns/pdns/recursordist/test-secpoll_cc.cc:38,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ' ex'
    argTypes:
    - PDNSException
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 36
    functionDepth: 0
    functionLinenumber: 36
    functionLinenumberEnd: 40
    functionName: checkBasicMessage4
    functionSourceFile: /src/pdns/pdns/recursordist/test-secpoll_cc.cc
    functionUses: 0
    functionsReached:
    - BOOST_CHECK
    - reason::find
    linkageType: ''
    returnType: bool
    signature: bool checkBasicMessage4(const PDNSException& ex)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-secpoll_cc.cc:44,1
    - Dst: reason::find
      Src: /src/pdns/pdns/recursordist/test-secpoll_cc.cc:44,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ' ex'
    argTypes:
    - PDNSException
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 42
    functionDepth: 0
    functionLinenumber: 42
    functionLinenumberEnd: 46
    functionName: checkBasicMessage5
    functionSourceFile: /src/pdns/pdns/recursordist/test-secpoll_cc.cc
    functionUses: 0
    functionsReached:
    - BOOST_CHECK
    - reason::find
    linkageType: ''
    returnType: bool
    signature: bool checkBasicMessage5(const PDNSException& ex)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-secpoll_cc.cc:51,1
    - Dst: isReleaseVersion
      Src: /src/pdns/pdns/recursordist/test-secpoll_cc.cc:51,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-secpoll_cc.cc:52,1
    - Dst: isReleaseVersion
      Src: /src/pdns/pdns/recursordist/test-secpoll_cc.cc:52,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-secpoll_cc.cc:53,1
    - Dst: isReleaseVersion
      Src: /src/pdns/pdns/recursordist/test-secpoll_cc.cc:53,1
    - Dst: BOOST_CHECK_EXCEPTION
      Src: /src/pdns/pdns/recursordist/test-secpoll_cc.cc:58,1
    - Dst: processSecPoll
      Src: /src/pdns/pdns/recursordist/test-secpoll_cc.cc:58,1
    - Dst: std::vector<DNSRecord>
      Src: /src/pdns/pdns/recursordist/test-secpoll_cc.cc:58,1
    - Dst: BOOST_CHECK_EXCEPTION
      Src: /src/pdns/pdns/recursordist/test-secpoll_cc.cc:59,1
    - Dst: processSecPoll
      Src: /src/pdns/pdns/recursordist/test-secpoll_cc.cc:59,1
    - Dst: std::vector<DNSRecord>
      Src: /src/pdns/pdns/recursordist/test-secpoll_cc.cc:59,1
    - Dst: addRecordToList
      Src: /src/pdns/pdns/recursordist/test-secpoll_cc.cc:63,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-secpoll_cc.cc:63,1
    - Dst: BOOST_CHECK_EXCEPTION
      Src: /src/pdns/pdns/recursordist/test-secpoll_cc.cc:64,1
    - Dst: processSecPoll
      Src: /src/pdns/pdns/recursordist/test-secpoll_cc.cc:64,1
    - Dst: std::vector::clear
      Src: /src/pdns/pdns/recursordist/test-secpoll_cc.cc:66,1
    - Dst: addRecordToList
      Src: /src/pdns/pdns/recursordist/test-secpoll_cc.cc:67,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-secpoll_cc.cc:67,1
    - Dst: BOOST_CHECK_EXCEPTION
      Src: /src/pdns/pdns/recursordist/test-secpoll_cc.cc:68,1
    - Dst: processSecPoll
      Src: /src/pdns/pdns/recursordist/test-secpoll_cc.cc:68,1
    - Dst: std::vector::clear
      Src: /src/pdns/pdns/recursordist/test-secpoll_cc.cc:70,1
    - Dst: addRecordToList
      Src: /src/pdns/pdns/recursordist/test-secpoll_cc.cc:71,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-secpoll_cc.cc:71,1
    - Dst: processSecPoll
      Src: /src/pdns/pdns/recursordist/test-secpoll_cc.cc:72,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-secpoll_cc.cc:73,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-secpoll_cc.cc:74,1
    - Dst: std::vector::clear
      Src: /src/pdns/pdns/recursordist/test-secpoll_cc.cc:76,1
    - Dst: addRecordToList
      Src: /src/pdns/pdns/recursordist/test-secpoll_cc.cc:77,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-secpoll_cc.cc:77,1
    - Dst: processSecPoll
      Src: /src/pdns/pdns/recursordist/test-secpoll_cc.cc:78,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-secpoll_cc.cc:79,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-secpoll_cc.cc:80,1
    - Dst: std::vector::clear
      Src: /src/pdns/pdns/recursordist/test-secpoll_cc.cc:82,1
    - Dst: addRecordToList
      Src: /src/pdns/pdns/recursordist/test-secpoll_cc.cc:83,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-secpoll_cc.cc:83,1
    - Dst: processSecPoll
      Src: /src/pdns/pdns/recursordist/test-secpoll_cc.cc:84,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-secpoll_cc.cc:85,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-secpoll_cc.cc:86,1
    - Dst: std::vector::clear
      Src: /src/pdns/pdns/recursordist/test-secpoll_cc.cc:88,1
    - Dst: addRecordToList
      Src: /src/pdns/pdns/recursordist/test-secpoll_cc.cc:89,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-secpoll_cc.cc:89,1
    - Dst: BOOST_CHECK_EXCEPTION
      Src: /src/pdns/pdns/recursordist/test-secpoll_cc.cc:90,1
    - Dst: processSecPoll
      Src: /src/pdns/pdns/recursordist/test-secpoll_cc.cc:90,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 29
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 48
    functionDepth: 1
    functionLinenumber: 48
    functionLinenumberEnd: 91
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-secpoll_cc.cc
    functionUses: 0
    functionsReached:
    - addRecordToList
    - isReleaseVersion
    - BOOST_CHECK_EXCEPTION
    - DNSName
    - BOOST_CHECK_EQUAL
    - processSecPoll
    - BOOST_CHECK
    - std::vector::clear
    - std::vector<DNSRecord>
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_secpoll_basic)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 84
    functionDepth: 0
    functionLinenumber: 84
    functionLinenumberEnd: 84
    functionName: ReadWriteLock::ReadWriteLock
    functionSourceFile: /src/pdns/pdns/recursordist/lock.hh
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ReadWriteLock()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 85
    functionDepth: 0
    functionLinenumber: 85
    functionLinenumberEnd: 85
    functionName: ~ReadWriteLock()
    functionSourceFile: /src/pdns/pdns/recursordist/lock.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~ReadWriteLock()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - ReadWriteLock
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 87
    functionDepth: 0
    functionLinenumber: 87
    functionLinenumberEnd: 87
    functionName: ReadWriteLock::ReadWriteLock
    functionSourceFile: /src/pdns/pdns/recursordist/lock.hh
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ReadWriteLock(const ReadWriteLock& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - ReadWriteLock
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 88
    functionDepth: 0
    functionLinenumber: 88
    functionLinenumberEnd: 88
    functionName: ReadWriteLock::ReadWriteLock
    functionSourceFile: /src/pdns/pdns/recursordist/lock.hh
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ReadWriteLock(ReadWriteLock&& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 89
    functionDepth: 0
    functionLinenumber: 89
    functionLinenumberEnd: 89
    functionName: '& operator=(ReadWriteLock&&)'
    functionSourceFile: /src/pdns/pdns/recursordist/lock.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: ReadWriteLock
    signature: ReadWriteLock & operator=(ReadWriteLock&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - ReadWriteLock
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 90
    functionDepth: 0
    functionLinenumber: 90
    functionLinenumberEnd: 90
    functionName: '& operator=(const ReadWriteLock& rhs)'
    functionSourceFile: /src/pdns/pdns/recursordist/lock.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: ReadWriteLock
    signature: ReadWriteLock & operator=(const ReadWriteLock& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 92
    functionDepth: 0
    functionLinenumber: 92
    functionLinenumberEnd: 95
    functionName: '& getLock()'
    functionSourceFile: /src/pdns/pdns/recursordist/lock.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::shared_mutex
    signature: std::shared_mutex & getLock()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getLock
      Src: /src/pdns/pdns/recursordist/lock.hh:105,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' lock'
    argTypes:
    - ReadWriteLock
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 107
      start: 104
    functionDepth: 0
    functionLinenumber: 104
    functionLinenumberEnd: 107
    functionName: ReadLock::ReadLock
    functionSourceFile: /src/pdns/pdns/recursordist/lock.hh
    functionUses: 0
    functionsReached:
    - getLock
    linkageType: ''
    returnType: void
    signature: void ReadLock(ReadWriteLock& lock)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ReadWriteLock*::getLock
      Src: /src/pdns/pdns/recursordist/lock.hh:110,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - lock
    argTypes:
    - ReadWriteLock*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 112
      start: 109
    functionDepth: 0
    functionLinenumber: 109
    functionLinenumberEnd: 112
    functionName: ReadLock::ReadLock
    functionSourceFile: /src/pdns/pdns/recursordist/lock.hh
    functionUses: 0
    functionsReached:
    - ReadWriteLock*::getLock
    linkageType: ''
    returnType: void
    signature: void ReadLock(ReadWriteLock* lock)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 114
    functionDepth: 0
    functionLinenumber: 114
    functionLinenumberEnd: 114
    functionName: ~ReadLock()
    functionSourceFile: /src/pdns/pdns/recursordist/lock.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~ReadLock()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - ReadLock
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 115
      start: 115
    functionDepth: 0
    functionLinenumber: 115
    functionLinenumberEnd: 115
    functionName: ReadLock::ReadLock
    functionSourceFile: /src/pdns/pdns/recursordist/lock.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ReadLock(const ReadLock& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - ReadLock
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 116
    functionDepth: 0
    functionLinenumber: 116
    functionLinenumberEnd: 116
    functionName: '& operator=(const ReadLock& rhs)'
    functionSourceFile: /src/pdns/pdns/recursordist/lock.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: ReadLock
    signature: ReadLock & operator=(const ReadLock& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 117
    functionDepth: 0
    functionLinenumber: 117
    functionLinenumberEnd: 117
    functionName: '& operator=(ReadLock&&)'
    functionSourceFile: /src/pdns/pdns/recursordist/lock.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: ReadLock
    signature: ReadLock & operator=(ReadLock&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/lock.hh:120,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - ReadLock
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 122
      start: 119
    functionDepth: 0
    functionLinenumber: 119
    functionLinenumberEnd: 122
    functionName: ReadLock::ReadLock
    functionSourceFile: /src/pdns/pdns/recursordist/lock.hh
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void ReadLock(ReadLock&& rhs) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' lock'
    argTypes:
    - std::shared_mutex
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 125
    functionDepth: 0
    functionLinenumber: 125
    functionLinenumberEnd: 128
    functionName: ReadLock::ReadLock
    functionSourceFile: /src/pdns/pdns/recursordist/lock.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ReadLock(std::shared_mutex& lock)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getLock
      Src: /src/pdns/pdns/recursordist/lock.hh:137,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' lock'
    argTypes:
    - ReadWriteLock
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 139
      start: 136
    functionDepth: 0
    functionLinenumber: 136
    functionLinenumberEnd: 139
    functionName: WriteLock::WriteLock
    functionSourceFile: /src/pdns/pdns/recursordist/lock.hh
    functionUses: 0
    functionsReached:
    - getLock
    linkageType: ''
    returnType: void
    signature: void WriteLock(ReadWriteLock& lock)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ReadWriteLock*::getLock
      Src: /src/pdns/pdns/recursordist/lock.hh:142,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - lock
    argTypes:
    - ReadWriteLock*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 144
      start: 141
    functionDepth: 0
    functionLinenumber: 141
    functionLinenumberEnd: 144
    functionName: WriteLock::WriteLock
    functionSourceFile: /src/pdns/pdns/recursordist/lock.hh
    functionUses: 0
    functionsReached:
    - ReadWriteLock*::getLock
    linkageType: ''
    returnType: void
    signature: void WriteLock(ReadWriteLock* lock)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 146
      start: 146
    functionDepth: 0
    functionLinenumber: 146
    functionLinenumberEnd: 146
    functionName: ~WriteLock()
    functionSourceFile: /src/pdns/pdns/recursordist/lock.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~WriteLock()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - WriteLock
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 147
    functionDepth: 0
    functionLinenumber: 147
    functionLinenumberEnd: 147
    functionName: WriteLock::WriteLock
    functionSourceFile: /src/pdns/pdns/recursordist/lock.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void WriteLock(const WriteLock& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - WriteLock
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 148
      start: 148
    functionDepth: 0
    functionLinenumber: 148
    functionLinenumberEnd: 148
    functionName: '& operator=(const WriteLock& rhs)'
    functionSourceFile: /src/pdns/pdns/recursordist/lock.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: WriteLock
    signature: WriteLock & operator=(const WriteLock& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 149
      start: 149
    functionDepth: 0
    functionLinenumber: 149
    functionLinenumberEnd: 149
    functionName: '& operator=(WriteLock&&)'
    functionSourceFile: /src/pdns/pdns/recursordist/lock.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: WriteLock
    signature: WriteLock & operator=(WriteLock&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/lock.hh:152,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - WriteLock
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 154
      start: 151
    functionDepth: 0
    functionLinenumber: 151
    functionLinenumberEnd: 154
    functionName: WriteLock::WriteLock
    functionSourceFile: /src/pdns/pdns/recursordist/lock.hh
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void WriteLock(WriteLock&& rhs) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' lock'
    argTypes:
    - std::shared_mutex
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 160
      start: 157
    functionDepth: 0
    functionLinenumber: 157
    functionLinenumberEnd: 160
    functionName: WriteLock::WriteLock
    functionSourceFile: /src/pdns/pdns/recursordist/lock.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void WriteLock(std::shared_mutex& lock)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getLock
      Src: /src/pdns/pdns/recursordist/lock.hh:169,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' lock'
    argTypes:
    - ReadWriteLock
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 171
      start: 168
    functionDepth: 0
    functionLinenumber: 168
    functionLinenumberEnd: 171
    functionName: TryReadLock::TryReadLock
    functionSourceFile: /src/pdns/pdns/recursordist/lock.hh
    functionUses: 0
    functionsReached:
    - getLock
    linkageType: ''
    returnType: void
    signature: void TryReadLock(ReadWriteLock& lock)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ReadWriteLock*::getLock
      Src: /src/pdns/pdns/recursordist/lock.hh:174,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - lock
    argTypes:
    - ReadWriteLock*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 176
      start: 173
    functionDepth: 0
    functionLinenumber: 173
    functionLinenumberEnd: 176
    functionName: TryReadLock::TryReadLock
    functionSourceFile: /src/pdns/pdns/recursordist/lock.hh
    functionUses: 0
    functionsReached:
    - ReadWriteLock*::getLock
    linkageType: ''
    returnType: void
    signature: void TryReadLock(ReadWriteLock* lock)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 178
      start: 178
    functionDepth: 0
    functionLinenumber: 178
    functionLinenumberEnd: 178
    functionName: ~TryReadLock()
    functionSourceFile: /src/pdns/pdns/recursordist/lock.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~TryReadLock()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - TryReadLock
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 179
      start: 179
    functionDepth: 0
    functionLinenumber: 179
    functionLinenumberEnd: 179
    functionName: TryReadLock::TryReadLock
    functionSourceFile: /src/pdns/pdns/recursordist/lock.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void TryReadLock(const TryReadLock& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 180
      start: 180
    functionDepth: 0
    functionLinenumber: 180
    functionLinenumberEnd: 180
    functionName: TryReadLock::TryReadLock
    functionSourceFile: /src/pdns/pdns/recursordist/lock.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void TryReadLock(TryReadLock&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - TryReadLock
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 181
      start: 181
    functionDepth: 0
    functionLinenumber: 181
    functionLinenumberEnd: 181
    functionName: '& operator=(const TryReadLock& rhs)'
    functionSourceFile: /src/pdns/pdns/recursordist/lock.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: TryReadLock
    signature: TryReadLock & operator=(const TryReadLock& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 182
      start: 182
    functionDepth: 0
    functionLinenumber: 182
    functionLinenumberEnd: 182
    functionName: '& operator=(TryReadLock&&)'
    functionSourceFile: /src/pdns/pdns/recursordist/lock.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: TryReadLock
    signature: TryReadLock & operator=(TryReadLock&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: owns_lock
      Src: /src/pdns/pdns/recursordist/lock.hh:186,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 187
      start: 184
    functionDepth: 0
    functionLinenumber: 184
    functionLinenumberEnd: 187
    functionName: TryReadLock::gotIt
    functionSourceFile: /src/pdns/pdns/recursordist/lock.hh
    functionUses: 2
    functionsReached:
    - owns_lock
    linkageType: ''
    returnType: bool
    signature: bool gotIt() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' lock'
    argTypes:
    - std::shared_mutex
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 193
      start: 190
    functionDepth: 0
    functionLinenumber: 190
    functionLinenumberEnd: 193
    functionName: TryReadLock::TryReadLock
    functionSourceFile: /src/pdns/pdns/recursordist/lock.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void TryReadLock(std::shared_mutex& lock)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getLock
      Src: /src/pdns/pdns/recursordist/lock.hh:202,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' lock'
    argTypes:
    - ReadWriteLock
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 204
      start: 201
    functionDepth: 0
    functionLinenumber: 201
    functionLinenumberEnd: 204
    functionName: TryWriteLock::TryWriteLock
    functionSourceFile: /src/pdns/pdns/recursordist/lock.hh
    functionUses: 0
    functionsReached:
    - getLock
    linkageType: ''
    returnType: void
    signature: void TryWriteLock(ReadWriteLock& lock)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ReadWriteLock*::getLock
      Src: /src/pdns/pdns/recursordist/lock.hh:207,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - lock
    argTypes:
    - ReadWriteLock*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 209
      start: 206
    functionDepth: 0
    functionLinenumber: 206
    functionLinenumberEnd: 209
    functionName: TryWriteLock::TryWriteLock
    functionSourceFile: /src/pdns/pdns/recursordist/lock.hh
    functionUses: 0
    functionsReached:
    - ReadWriteLock*::getLock
    linkageType: ''
    returnType: void
    signature: void TryWriteLock(ReadWriteLock* lock)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 211
      start: 211
    functionDepth: 0
    functionLinenumber: 211
    functionLinenumberEnd: 211
    functionName: ~TryWriteLock()
    functionSourceFile: /src/pdns/pdns/recursordist/lock.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~TryWriteLock()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - TryWriteLock
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 212
      start: 212
    functionDepth: 0
    functionLinenumber: 212
    functionLinenumberEnd: 212
    functionName: TryWriteLock::TryWriteLock
    functionSourceFile: /src/pdns/pdns/recursordist/lock.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void TryWriteLock(const TryWriteLock& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 213
      start: 213
    functionDepth: 0
    functionLinenumber: 213
    functionLinenumberEnd: 213
    functionName: TryWriteLock::TryWriteLock
    functionSourceFile: /src/pdns/pdns/recursordist/lock.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void TryWriteLock(TryWriteLock&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - TryWriteLock
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 214
      start: 214
    functionDepth: 0
    functionLinenumber: 214
    functionLinenumberEnd: 214
    functionName: '& operator=(const TryWriteLock& rhs)'
    functionSourceFile: /src/pdns/pdns/recursordist/lock.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: TryWriteLock
    signature: TryWriteLock & operator=(const TryWriteLock& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 215
      start: 215
    functionDepth: 0
    functionLinenumber: 215
    functionLinenumberEnd: 215
    functionName: '& operator=(TryWriteLock&&)'
    functionSourceFile: /src/pdns/pdns/recursordist/lock.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: TryWriteLock
    signature: TryWriteLock & operator=(TryWriteLock&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: owns_lock
      Src: /src/pdns/pdns/recursordist/lock.hh:219,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 220
      start: 217
    functionDepth: 0
    functionLinenumber: 217
    functionLinenumberEnd: 220
    functionName: TryWriteLock::gotIt
    functionSourceFile: /src/pdns/pdns/recursordist/lock.hh
    functionUses: 1
    functionsReached:
    - owns_lock
    linkageType: ''
    returnType: bool
    signature: bool gotIt() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' lock'
    argTypes:
    - std::shared_mutex
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 226
      start: 223
    functionDepth: 0
    functionLinenumber: 223
    functionLinenumberEnd: 226
    functionName: TryWriteLock::TryWriteLock
    functionSourceFile: /src/pdns/pdns/recursordist/lock.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void TryWriteLock(std::shared_mutex& lock)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - ' value'
    - ' mutex'
    argTypes:
    - T
    - std::mutex
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 238
      start: 235
    functionDepth: 0
    functionLinenumber: 235
    functionLinenumberEnd: 238
    functionName: LockGuardedHolder::LockGuardedHolder
    functionSourceFile: /src/pdns/pdns/recursordist/lock.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void LockGuardedHolder(T& value, std::mutex& mutex)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 243
      start: 240
    functionDepth: 0
    functionLinenumber: 240
    functionLinenumberEnd: 243
    functionName: '& operator*() const noexcept'
    functionSourceFile: /src/pdns/pdns/recursordist/lock.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: T
    signature: T & operator*() const noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 248
      start: 245
    functionDepth: 0
    functionLinenumber: 245
    functionLinenumberEnd: 248
    functionName: '* operator->() const noexcept'
    functionSourceFile: /src/pdns/pdns/recursordist/lock.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: T
    signature: T * operator->() const noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - ' value'
    - ' mutex'
    argTypes:
    - T
    - std::mutex
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 262
      start: 259
    functionDepth: 0
    functionLinenumber: 259
    functionLinenumberEnd: 262
    functionName: LockGuardedTryHolder::LockGuardedTryHolder
    functionSourceFile: /src/pdns/pdns/recursordist/lock.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void LockGuardedTryHolder(T& value, std::mutex& mutex)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: owns_lock
      Src: /src/pdns/pdns/recursordist/lock.hh:266,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/lock.hh:267,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 270
      start: 264
    functionDepth: 0
    functionLinenumber: 264
    functionLinenumberEnd: 270
    functionName: '& operator*() const'
    functionSourceFile: /src/pdns/pdns/recursordist/lock.hh
    functionUses: 0
    functionsReached:
    - owns_lock
    - std::runtime_error
    linkageType: ''
    returnType: T
    signature: T & operator*() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: owns_lock
      Src: /src/pdns/pdns/recursordist/lock.hh:274,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/lock.hh:275,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 278
      start: 272
    functionDepth: 0
    functionLinenumber: 272
    functionLinenumberEnd: 278
    functionName: '* operator->() const'
    functionSourceFile: /src/pdns/pdns/recursordist/lock.hh
    functionUses: 0
    functionsReached:
    - owns_lock
    - std::runtime_error
    linkageType: ''
    returnType: T
    signature: T * operator->() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: owns_lock
      Src: /src/pdns/pdns/recursordist/lock.hh:282,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 283
      start: 280
    functionDepth: 0
    functionLinenumber: 280
    functionLinenumberEnd: 283
    functionName: operator bool() const noexcept
    functionSourceFile: /src/pdns/pdns/recursordist/lock.hh
    functionUses: 0
    functionsReached:
    - owns_lock
    linkageType: ''
    returnType: void
    signature: void operator bool() const noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LockGuardedTryHolder::owns_lock
      Src: /src/pdns/pdns/recursordist/lock.hh:287,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 288
      start: 285
    functionDepth: 0
    functionLinenumber: 285
    functionLinenumberEnd: 288
    functionName: LockGuardedTryHolder::owns_lock
    functionSourceFile: /src/pdns/pdns/recursordist/lock.hh
    functionUses: 7
    functionsReached:
    - LockGuardedTryHolder::owns_lock
    linkageType: ''
    returnType: bool
    signature: bool owns_lock() const noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LockGuardedTryHolder::lock
      Src: /src/pdns/pdns/recursordist/lock.hh:292,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 293
      start: 290
    functionDepth: 0
    functionLinenumber: 290
    functionLinenumberEnd: 293
    functionName: LockGuardedTryHolder::lock
    functionSourceFile: /src/pdns/pdns/recursordist/lock.hh
    functionUses: 5
    functionsReached:
    - LockGuardedTryHolder::lock
    linkageType: ''
    returnType: void
    signature: void lock()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' value'
    argTypes:
    - T
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 307
      start: 304
    functionDepth: 0
    functionLinenumber: 304
    functionLinenumberEnd: 307
    functionName: LockGuarded::LockGuarded
    functionSourceFile: /src/pdns/pdns/recursordist/lock.hh
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void LockGuarded(const T& value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/lock.hh:310,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 1
    argNames:
    - ' value'
    argTypes:
    - T
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 312
      start: 309
    functionDepth: 0
    functionLinenumber: 309
    functionLinenumberEnd: 312
    functionName: LockGuarded::LockGuarded
    functionSourceFile: /src/pdns/pdns/recursordist/lock.hh
    functionUses: 2
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void LockGuarded(T&& value)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 314
      start: 314
    functionDepth: 0
    functionLinenumber: 314
    functionLinenumberEnd: 314
    functionName: LockGuarded::LockGuarded
    functionSourceFile: /src/pdns/pdns/recursordist/lock.hh
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void LockGuarded()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LockGuardedTryHolder<T>
      Src: /src/pdns/pdns/recursordist/lock.hh:318,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 319
      start: 316
    functionDepth: 0
    functionLinenumber: 316
    functionLinenumberEnd: 319
    functionName: LockGuarded::try_lock
    functionSourceFile: /src/pdns/pdns/recursordist/lock.hh
    functionUses: 0
    functionsReached:
    - LockGuardedTryHolder<T>
    linkageType: ''
    returnType: LockGuardedTryHolder<T>
    signature: LockGuardedTryHolder<T> try_lock()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LockGuardedHolder<T>
      Src: /src/pdns/pdns/recursordist/lock.hh:323,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 324
      start: 321
    functionDepth: 0
    functionLinenumber: 321
    functionLinenumberEnd: 324
    functionName: LockGuarded::lock
    functionSourceFile: /src/pdns/pdns/recursordist/lock.hh
    functionUses: 2
    functionsReached:
    - LockGuardedHolder<T>
    linkageType: ''
    returnType: LockGuardedHolder<T>
    signature: LockGuardedHolder<T> lock()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LockGuardedHolder<const T>
      Src: /src/pdns/pdns/recursordist/lock.hh:328,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 329
      start: 326
    functionDepth: 0
    functionLinenumber: 326
    functionLinenumberEnd: 329
    functionName: LockGuarded::read_only_lock
    functionSourceFile: /src/pdns/pdns/recursordist/lock.hh
    functionUses: 0
    functionsReached:
    - LockGuardedHolder<const T>
    linkageType: ''
    returnType: LockGuardedHolder<const T>
    signature: LockGuardedHolder<const T> read_only_lock()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - ' value'
    - ' mutex'
    argTypes:
    - T
    - std::recursive_mutex
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 343
      start: 340
    functionDepth: 0
    functionLinenumber: 340
    functionLinenumberEnd: 343
    functionName: RecursiveLockGuardedHolder::RecursiveLockGuardedHolder
    functionSourceFile: /src/pdns/pdns/recursordist/lock.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void RecursiveLockGuardedHolder(T& value, std::recursive_mutex& mutex)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 348
      start: 345
    functionDepth: 0
    functionLinenumber: 345
    functionLinenumberEnd: 348
    functionName: '& operator*() const noexcept'
    functionSourceFile: /src/pdns/pdns/recursordist/lock.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: T
    signature: T & operator*() const noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 353
      start: 350
    functionDepth: 0
    functionLinenumber: 350
    functionLinenumberEnd: 353
    functionName: '* operator->() const noexcept'
    functionSourceFile: /src/pdns/pdns/recursordist/lock.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: T
    signature: T * operator->() const noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - ' value'
    - ' mutex'
    argTypes:
    - T
    - std::recursive_mutex
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 367
      start: 364
    functionDepth: 0
    functionLinenumber: 364
    functionLinenumberEnd: 367
    functionName: RecursiveLockGuardedTryHolder::RecursiveLockGuardedTryHolder
    functionSourceFile: /src/pdns/pdns/recursordist/lock.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void RecursiveLockGuardedTryHolder(T& value, std::recursive_mutex&
      mutex)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: owns_lock
      Src: /src/pdns/pdns/recursordist/lock.hh:371,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/lock.hh:372,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 375
      start: 369
    functionDepth: 0
    functionLinenumber: 369
    functionLinenumberEnd: 375
    functionName: '& operator*() const'
    functionSourceFile: /src/pdns/pdns/recursordist/lock.hh
    functionUses: 0
    functionsReached:
    - owns_lock
    - std::runtime_error
    linkageType: ''
    returnType: T
    signature: T & operator*() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: owns_lock
      Src: /src/pdns/pdns/recursordist/lock.hh:379,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/lock.hh:380,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 383
      start: 377
    functionDepth: 0
    functionLinenumber: 377
    functionLinenumberEnd: 383
    functionName: '* operator->() const'
    functionSourceFile: /src/pdns/pdns/recursordist/lock.hh
    functionUses: 0
    functionsReached:
    - owns_lock
    - std::runtime_error
    linkageType: ''
    returnType: T
    signature: T * operator->() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: owns_lock
      Src: /src/pdns/pdns/recursordist/lock.hh:387,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 388
      start: 385
    functionDepth: 0
    functionLinenumber: 385
    functionLinenumberEnd: 388
    functionName: operator bool() const noexcept
    functionSourceFile: /src/pdns/pdns/recursordist/lock.hh
    functionUses: 0
    functionsReached:
    - owns_lock
    linkageType: ''
    returnType: void
    signature: void operator bool() const noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RecursiveLockGuardedTryHolder::owns_lock
      Src: /src/pdns/pdns/recursordist/lock.hh:392,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 393
      start: 390
    functionDepth: 0
    functionLinenumber: 390
    functionLinenumberEnd: 393
    functionName: RecursiveLockGuardedTryHolder::owns_lock
    functionSourceFile: /src/pdns/pdns/recursordist/lock.hh
    functionUses: 3
    functionsReached:
    - RecursiveLockGuardedTryHolder::owns_lock
    linkageType: ''
    returnType: bool
    signature: bool owns_lock() const noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RecursiveLockGuardedTryHolder::lock
      Src: /src/pdns/pdns/recursordist/lock.hh:397,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 398
      start: 395
    functionDepth: 0
    functionLinenumber: 395
    functionLinenumberEnd: 398
    functionName: RecursiveLockGuardedTryHolder::lock
    functionSourceFile: /src/pdns/pdns/recursordist/lock.hh
    functionUses: 3
    functionsReached:
    - RecursiveLockGuardedTryHolder::lock
    linkageType: ''
    returnType: void
    signature: void lock()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' value'
    argTypes:
    - T
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 412
      start: 409
    functionDepth: 0
    functionLinenumber: 409
    functionLinenumberEnd: 412
    functionName: RecursiveLockGuarded::RecursiveLockGuarded
    functionSourceFile: /src/pdns/pdns/recursordist/lock.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void RecursiveLockGuarded(const T& value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/lock.hh:415,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 1
    argNames:
    - ' value'
    argTypes:
    - T
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 417
      start: 414
    functionDepth: 0
    functionLinenumber: 414
    functionLinenumberEnd: 417
    functionName: RecursiveLockGuarded::RecursiveLockGuarded
    functionSourceFile: /src/pdns/pdns/recursordist/lock.hh
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void RecursiveLockGuarded(T&& value)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 419
      start: 419
    functionDepth: 0
    functionLinenumber: 419
    functionLinenumberEnd: 419
    functionName: RecursiveLockGuarded::RecursiveLockGuarded
    functionSourceFile: /src/pdns/pdns/recursordist/lock.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void RecursiveLockGuarded()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RecursiveLockGuardedTryHolder<T>
      Src: /src/pdns/pdns/recursordist/lock.hh:423,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 424
      start: 421
    functionDepth: 0
    functionLinenumber: 421
    functionLinenumberEnd: 424
    functionName: RecursiveLockGuarded::try_lock
    functionSourceFile: /src/pdns/pdns/recursordist/lock.hh
    functionUses: 0
    functionsReached:
    - RecursiveLockGuardedTryHolder<T>
    linkageType: ''
    returnType: RecursiveLockGuardedTryHolder<T>
    signature: RecursiveLockGuardedTryHolder<T> try_lock()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RecursiveLockGuardedHolder<T>
      Src: /src/pdns/pdns/recursordist/lock.hh:428,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 429
      start: 426
    functionDepth: 0
    functionLinenumber: 426
    functionLinenumberEnd: 429
    functionName: RecursiveLockGuarded::lock
    functionSourceFile: /src/pdns/pdns/recursordist/lock.hh
    functionUses: 0
    functionsReached:
    - RecursiveLockGuardedHolder<T>
    linkageType: ''
    returnType: RecursiveLockGuardedHolder<T>
    signature: RecursiveLockGuardedHolder<T> lock()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RecursiveLockGuardedHolder<const T>
      Src: /src/pdns/pdns/recursordist/lock.hh:433,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 434
      start: 431
    functionDepth: 0
    functionLinenumber: 431
    functionLinenumberEnd: 434
    functionName: RecursiveLockGuarded::read_only_lock
    functionSourceFile: /src/pdns/pdns/recursordist/lock.hh
    functionUses: 0
    functionsReached:
    - RecursiveLockGuardedHolder<const T>
    linkageType: ''
    returnType: RecursiveLockGuardedHolder<const T>
    signature: RecursiveLockGuardedHolder<const T> read_only_lock()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - ' value'
    - ' mutex'
    argTypes:
    - T
    - std::shared_mutex
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 448
      start: 445
    functionDepth: 0
    functionLinenumber: 445
    functionLinenumberEnd: 448
    functionName: SharedLockGuardedHolder::SharedLockGuardedHolder
    functionSourceFile: /src/pdns/pdns/recursordist/lock.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void SharedLockGuardedHolder(T& value, std::shared_mutex& mutex)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 453
      start: 450
    functionDepth: 0
    functionLinenumber: 450
    functionLinenumberEnd: 453
    functionName: '& operator*() const noexcept'
    functionSourceFile: /src/pdns/pdns/recursordist/lock.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: T
    signature: T & operator*() const noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 458
      start: 455
    functionDepth: 0
    functionLinenumber: 455
    functionLinenumberEnd: 458
    functionName: '* operator->() const noexcept'
    functionSourceFile: /src/pdns/pdns/recursordist/lock.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: T
    signature: T * operator->() const noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - ' value'
    - ' mutex'
    argTypes:
    - T
    - std::shared_mutex
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 472
      start: 469
    functionDepth: 0
    functionLinenumber: 469
    functionLinenumberEnd: 472
    functionName: SharedLockGuardedTryHolder::SharedLockGuardedTryHolder
    functionSourceFile: /src/pdns/pdns/recursordist/lock.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void SharedLockGuardedTryHolder(T& value, std::shared_mutex& mutex)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: owns_lock
      Src: /src/pdns/pdns/recursordist/lock.hh:476,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/lock.hh:477,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 480
      start: 474
    functionDepth: 0
    functionLinenumber: 474
    functionLinenumberEnd: 480
    functionName: '& operator*() const'
    functionSourceFile: /src/pdns/pdns/recursordist/lock.hh
    functionUses: 0
    functionsReached:
    - owns_lock
    - std::runtime_error
    linkageType: ''
    returnType: T
    signature: T & operator*() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: owns_lock
      Src: /src/pdns/pdns/recursordist/lock.hh:484,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/lock.hh:485,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 488
      start: 482
    functionDepth: 0
    functionLinenumber: 482
    functionLinenumberEnd: 488
    functionName: '* operator->() const'
    functionSourceFile: /src/pdns/pdns/recursordist/lock.hh
    functionUses: 0
    functionsReached:
    - owns_lock
    - std::runtime_error
    linkageType: ''
    returnType: T
    signature: T * operator->() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: owns_lock
      Src: /src/pdns/pdns/recursordist/lock.hh:492,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 493
      start: 490
    functionDepth: 0
    functionLinenumber: 490
    functionLinenumberEnd: 493
    functionName: operator bool() const noexcept
    functionSourceFile: /src/pdns/pdns/recursordist/lock.hh
    functionUses: 0
    functionsReached:
    - owns_lock
    linkageType: ''
    returnType: void
    signature: void operator bool() const noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SharedLockGuardedTryHolder::owns_lock
      Src: /src/pdns/pdns/recursordist/lock.hh:497,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 498
      start: 495
    functionDepth: 0
    functionLinenumber: 495
    functionLinenumberEnd: 498
    functionName: SharedLockGuardedTryHolder::owns_lock
    functionSourceFile: /src/pdns/pdns/recursordist/lock.hh
    functionUses: 3
    functionsReached:
    - SharedLockGuardedTryHolder::owns_lock
    linkageType: ''
    returnType: bool
    signature: bool owns_lock() const noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - ' value'
    - ' mutex'
    argTypes:
    - T
    - std::shared_mutex
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 512
      start: 509
    functionDepth: 0
    functionLinenumber: 509
    functionLinenumberEnd: 512
    functionName: SharedLockGuardedNonExclusiveHolder::SharedLockGuardedNonExclusiveHolder
    functionSourceFile: /src/pdns/pdns/recursordist/lock.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void SharedLockGuardedNonExclusiveHolder(const T& value, std::shared_mutex&
      mutex)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 517
      start: 514
    functionDepth: 0
    functionLinenumber: 514
    functionLinenumberEnd: 517
    functionName: '& operator*() const noexcept'
    functionSourceFile: /src/pdns/pdns/recursordist/lock.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: T
    signature: T & operator*() const noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 522
      start: 519
    functionDepth: 0
    functionLinenumber: 519
    functionLinenumberEnd: 522
    functionName: '* operator->() const noexcept'
    functionSourceFile: /src/pdns/pdns/recursordist/lock.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: T
    signature: T * operator->() const noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - ' value'
    - ' mutex'
    argTypes:
    - T
    - std::shared_mutex
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 536
      start: 533
    functionDepth: 0
    functionLinenumber: 533
    functionLinenumberEnd: 536
    functionName: SharedLockGuardedNonExclusiveTryHolder::SharedLockGuardedNonExclusiveTryHolder
    functionSourceFile: /src/pdns/pdns/recursordist/lock.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void SharedLockGuardedNonExclusiveTryHolder(const T& value, std::shared_mutex&
      mutex)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: owns_lock
      Src: /src/pdns/pdns/recursordist/lock.hh:540,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/lock.hh:541,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 544
      start: 538
    functionDepth: 0
    functionLinenumber: 538
    functionLinenumberEnd: 544
    functionName: '& operator*() const'
    functionSourceFile: /src/pdns/pdns/recursordist/lock.hh
    functionUses: 0
    functionsReached:
    - owns_lock
    - std::runtime_error
    linkageType: ''
    returnType: T
    signature: T & operator*() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: owns_lock
      Src: /src/pdns/pdns/recursordist/lock.hh:548,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/lock.hh:549,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 552
      start: 546
    functionDepth: 0
    functionLinenumber: 546
    functionLinenumberEnd: 552
    functionName: '* operator->() const'
    functionSourceFile: /src/pdns/pdns/recursordist/lock.hh
    functionUses: 0
    functionsReached:
    - owns_lock
    - std::runtime_error
    linkageType: ''
    returnType: T
    signature: T * operator->() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: owns_lock
      Src: /src/pdns/pdns/recursordist/lock.hh:556,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 557
      start: 554
    functionDepth: 0
    functionLinenumber: 554
    functionLinenumberEnd: 557
    functionName: operator bool() const noexcept
    functionSourceFile: /src/pdns/pdns/recursordist/lock.hh
    functionUses: 0
    functionsReached:
    - owns_lock
    linkageType: ''
    returnType: void
    signature: void operator bool() const noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SharedLockGuardedNonExclusiveTryHolder::owns_lock
      Src: /src/pdns/pdns/recursordist/lock.hh:561,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 562
      start: 559
    functionDepth: 0
    functionLinenumber: 559
    functionLinenumberEnd: 562
    functionName: SharedLockGuardedNonExclusiveTryHolder::owns_lock
    functionSourceFile: /src/pdns/pdns/recursordist/lock.hh
    functionUses: 3
    functionsReached:
    - SharedLockGuardedNonExclusiveTryHolder::owns_lock
    linkageType: ''
    returnType: bool
    signature: bool owns_lock() const noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' value'
    argTypes:
    - T
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 576
      start: 573
    functionDepth: 0
    functionLinenumber: 573
    functionLinenumberEnd: 576
    functionName: SharedLockGuarded::SharedLockGuarded
    functionSourceFile: /src/pdns/pdns/recursordist/lock.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void SharedLockGuarded(const T& value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/lock.hh:579,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 1
    argNames:
    - ' value'
    argTypes:
    - T
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 581
      start: 578
    functionDepth: 0
    functionLinenumber: 578
    functionLinenumberEnd: 581
    functionName: SharedLockGuarded::SharedLockGuarded
    functionSourceFile: /src/pdns/pdns/recursordist/lock.hh
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void SharedLockGuarded(T&& value)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 583
      start: 583
    functionDepth: 0
    functionLinenumber: 583
    functionLinenumberEnd: 583
    functionName: SharedLockGuarded::SharedLockGuarded
    functionSourceFile: /src/pdns/pdns/recursordist/lock.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void SharedLockGuarded()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SharedLockGuardedTryHolder<T>
      Src: /src/pdns/pdns/recursordist/lock.hh:587,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 588
      start: 585
    functionDepth: 0
    functionLinenumber: 585
    functionLinenumberEnd: 588
    functionName: SharedLockGuarded::try_write_lock
    functionSourceFile: /src/pdns/pdns/recursordist/lock.hh
    functionUses: 0
    functionsReached:
    - SharedLockGuardedTryHolder<T>
    linkageType: ''
    returnType: SharedLockGuardedTryHolder<T>
    signature: SharedLockGuardedTryHolder<T> try_write_lock()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SharedLockGuardedHolder<T>
      Src: /src/pdns/pdns/recursordist/lock.hh:592,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 593
      start: 590
    functionDepth: 0
    functionLinenumber: 590
    functionLinenumberEnd: 593
    functionName: SharedLockGuarded::write_lock
    functionSourceFile: /src/pdns/pdns/recursordist/lock.hh
    functionUses: 0
    functionsReached:
    - SharedLockGuardedHolder<T>
    linkageType: ''
    returnType: SharedLockGuardedHolder<T>
    signature: SharedLockGuardedHolder<T> write_lock()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SharedLockGuardedNonExclusiveTryHolder<T>
      Src: /src/pdns/pdns/recursordist/lock.hh:597,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 598
      start: 595
    functionDepth: 0
    functionLinenumber: 595
    functionLinenumberEnd: 598
    functionName: SharedLockGuarded::try_read_lock
    functionSourceFile: /src/pdns/pdns/recursordist/lock.hh
    functionUses: 0
    functionsReached:
    - SharedLockGuardedNonExclusiveTryHolder<T>
    linkageType: ''
    returnType: SharedLockGuardedNonExclusiveTryHolder<T>
    signature: SharedLockGuardedNonExclusiveTryHolder<T> try_read_lock()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SharedLockGuardedNonExclusiveHolder<T>
      Src: /src/pdns/pdns/recursordist/lock.hh:602,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 603
      start: 600
    functionDepth: 0
    functionLinenumber: 600
    functionLinenumberEnd: 603
    functionName: SharedLockGuarded::read_lock
    functionSourceFile: /src/pdns/pdns/recursordist/lock.hh
    functionUses: 0
    functionsReached:
    - SharedLockGuardedNonExclusiveHolder<T>
    linkageType: ''
    returnType: SharedLockGuardedNonExclusiveHolder<T>
    signature: SharedLockGuardedNonExclusiveHolder<T> read_lock()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hashPassword
      Src: /src/pdns/pdns/recursordist/test-credentials_cc.cc:27,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-credentials_cc.cc:28,1
    - Dst: auto::empty
      Src: /src/pdns/pdns/recursordist/test-credentials_cc.cc:28,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-credentials_cc.cc:30,1
    - Dst: verifyPassword
      Src: /src/pdns/pdns/recursordist/test-credentials_cc.cc:30,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-credentials_cc.cc:31,1
    - Dst: verifyPassword
      Src: /src/pdns/pdns/recursordist/test-credentials_cc.cc:31,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-credentials_cc.cc:33,1
    - Dst: verifyPassword
      Src: /src/pdns/pdns/recursordist/test-credentials_cc.cc:33,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-credentials_cc.cc:34,1
    - Dst: verifyPassword
      Src: /src/pdns/pdns/recursordist/test-credentials_cc.cc:34,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-credentials_cc.cc:35,1
    - Dst: verifyPassword
      Src: /src/pdns/pdns/recursordist/test-credentials_cc.cc:35,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-credentials_cc.cc:37,1
    - Dst: isPasswordHashed
      Src: /src/pdns/pdns/recursordist/test-credentials_cc.cc:37,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-credentials_cc.cc:38,1
    - Dst: isPasswordHashed
      Src: /src/pdns/pdns/recursordist/test-credentials_cc.cc:38,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-credentials_cc.cc:39,1
    - Dst: isPasswordHashed
      Src: /src/pdns/pdns/recursordist/test-credentials_cc.cc:39,1
    - Dst: hashPassword
      Src: /src/pdns/pdns/recursordist/test-credentials_cc.cc:43,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-credentials_cc.cc:45,1
    - Dst: boost::starts_with
      Src: /src/pdns/pdns/recursordist/test-credentials_cc.cc:45,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-credentials_cc.cc:47,1
    - Dst: verifyPassword
      Src: /src/pdns/pdns/recursordist/test-credentials_cc.cc:47,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/recursordist/test-credentials_cc.cc:52,1
    - Dst: hashPassword
      Src: /src/pdns/pdns/recursordist/test-credentials_cc.cc:52,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/recursordist/test-credentials_cc.cc:53,1
    - Dst: hashPassword
      Src: /src/pdns/pdns/recursordist/test-credentials_cc.cc:53,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/recursordist/test-credentials_cc.cc:54,1
    - Dst: hashPassword
      Src: /src/pdns/pdns/recursordist/test-credentials_cc.cc:54,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-credentials_cc.cc:58,1
    - Dst: isPasswordHashed
      Src: /src/pdns/pdns/recursordist/test-credentials_cc.cc:58,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-credentials_cc.cc:60,1
    - Dst: isPasswordHashed
      Src: /src/pdns/pdns/recursordist/test-credentials_cc.cc:60,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-credentials_cc.cc:62,1
    - Dst: isPasswordHashed
      Src: /src/pdns/pdns/recursordist/test-credentials_cc.cc:62,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-credentials_cc.cc:64,1
    - Dst: isPasswordHashed
      Src: /src/pdns/pdns/recursordist/test-credentials_cc.cc:64,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-credentials_cc.cc:66,1
    - Dst: isPasswordHashed
      Src: /src/pdns/pdns/recursordist/test-credentials_cc.cc:66,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-credentials_cc.cc:68,1
    - Dst: isPasswordHashed
      Src: /src/pdns/pdns/recursordist/test-credentials_cc.cc:68,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-credentials_cc.cc:70,1
    - Dst: isPasswordHashed
      Src: /src/pdns/pdns/recursordist/test-credentials_cc.cc:70,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-credentials_cc.cc:72,1
    - Dst: isPasswordHashed
      Src: /src/pdns/pdns/recursordist/test-credentials_cc.cc:72,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-credentials_cc.cc:74,1
    - Dst: isPasswordHashed
      Src: /src/pdns/pdns/recursordist/test-credentials_cc.cc:74,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-credentials_cc.cc:76,1
    - Dst: isPasswordHashed
      Src: /src/pdns/pdns/recursordist/test-credentials_cc.cc:76,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-credentials_cc.cc:78,1
    - Dst: isPasswordHashed
      Src: /src/pdns/pdns/recursordist/test-credentials_cc.cc:78,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-credentials_cc.cc:80,1
    - Dst: isPasswordHashed
      Src: /src/pdns/pdns/recursordist/test-credentials_cc.cc:80,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-credentials_cc.cc:82,1
    - Dst: isPasswordHashed
      Src: /src/pdns/pdns/recursordist/test-credentials_cc.cc:82,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/recursordist/test-credentials_cc.cc:85,1
    - Dst: verifyPassword
      Src: /src/pdns/pdns/recursordist/test-credentials_cc.cc:85,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/recursordist/test-credentials_cc.cc:87,1
    - Dst: verifyPassword
      Src: /src/pdns/pdns/recursordist/test-credentials_cc.cc:87,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/recursordist/test-credentials_cc.cc:89,1
    - Dst: verifyPassword
      Src: /src/pdns/pdns/recursordist/test-credentials_cc.cc:89,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/recursordist/test-credentials_cc.cc:91,1
    - Dst: verifyPassword
      Src: /src/pdns/pdns/recursordist/test-credentials_cc.cc:91,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/recursordist/test-credentials_cc.cc:93,1
    - Dst: verifyPassword
      Src: /src/pdns/pdns/recursordist/test-credentials_cc.cc:93,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/recursordist/test-credentials_cc.cc:95,1
    - Dst: verifyPassword
      Src: /src/pdns/pdns/recursordist/test-credentials_cc.cc:95,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/recursordist/test-credentials_cc.cc:97,1
    - Dst: verifyPassword
      Src: /src/pdns/pdns/recursordist/test-credentials_cc.cc:97,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/recursordist/test-credentials_cc.cc:99,1
    - Dst: verifyPassword
      Src: /src/pdns/pdns/recursordist/test-credentials_cc.cc:99,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/recursordist/test-credentials_cc.cc:101,1
    - Dst: verifyPassword
      Src: /src/pdns/pdns/recursordist/test-credentials_cc.cc:101,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/recursordist/test-credentials_cc.cc:103,1
    - Dst: verifyPassword
      Src: /src/pdns/pdns/recursordist/test-credentials_cc.cc:103,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/recursordist/test-credentials_cc.cc:105,1
    - Dst: verifyPassword
      Src: /src/pdns/pdns/recursordist/test-credentials_cc.cc:105,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 41
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 21
    functionDepth: 0
    functionLinenumber: 21
    functionLinenumberEnd: 106
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-credentials_cc.cc
    functionUses: 0
    functionsReached:
    - hashPassword
    - boost::starts_with
    - isPasswordHashed
    - BOOST_CHECK_THROW
    - BOOST_CHECK
    - verifyPassword
    - auto::empty
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_CredentialsUtils)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CredentialsHolder
      Src: /src/pdns/pdns/recursordist/test-credentials_cc.cc:113,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-credentials_cc.cc:113,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-credentials_cc.cc:115,1
    - Dst: auto::matches
      Src: /src/pdns/pdns/recursordist/test-credentials_cc.cc:115,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-credentials_cc.cc:116,1
    - Dst: auto::matches
      Src: /src/pdns/pdns/recursordist/test-credentials_cc.cc:116,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-credentials_cc.cc:117,1
    - Dst: auto::wasHashed
      Src: /src/pdns/pdns/recursordist/test-credentials_cc.cc:117,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-credentials_cc.cc:118,1
    - Dst: auto::isHashed
      Src: /src/pdns/pdns/recursordist/test-credentials_cc.cc:118,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-credentials_cc.cc:121,1
    - Dst: CredentialsHolder::isHashingAvailable
      Src: /src/pdns/pdns/recursordist/test-credentials_cc.cc:121,1
    - Dst: CredentialsHolder
      Src: /src/pdns/pdns/recursordist/test-credentials_cc.cc:124,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-credentials_cc.cc:124,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-credentials_cc.cc:125,1
    - Dst: auto::wasHashed
      Src: /src/pdns/pdns/recursordist/test-credentials_cc.cc:125,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-credentials_cc.cc:126,1
    - Dst: auto::isHashed
      Src: /src/pdns/pdns/recursordist/test-credentials_cc.cc:126,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-credentials_cc.cc:127,1
    - Dst: auto::matches
      Src: /src/pdns/pdns/recursordist/test-credentials_cc.cc:127,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-credentials_cc.cc:128,1
    - Dst: auto::matches
      Src: /src/pdns/pdns/recursordist/test-credentials_cc.cc:128,1
    - Dst: CredentialsHolder
      Src: /src/pdns/pdns/recursordist/test-credentials_cc.cc:130,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-credentials_cc.cc:130,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-credentials_cc.cc:131,1
    - Dst: auto::wasHashed
      Src: /src/pdns/pdns/recursordist/test-credentials_cc.cc:131,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-credentials_cc.cc:132,1
    - Dst: auto::isHashed
      Src: /src/pdns/pdns/recursordist/test-credentials_cc.cc:132,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-credentials_cc.cc:133,1
    - Dst: auto::matches
      Src: /src/pdns/pdns/recursordist/test-credentials_cc.cc:133,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-credentials_cc.cc:134,1
    - Dst: auto::matches
      Src: /src/pdns/pdns/recursordist/test-credentials_cc.cc:134,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-credentials_cc.cc:136,1
    - Dst: CredentialsHolder::isHashingAvailable
      Src: /src/pdns/pdns/recursordist/test-credentials_cc.cc:136,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 138
      start: 109
    functionDepth: 0
    functionLinenumber: 109
    functionLinenumberEnd: 138
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-credentials_cc.cc
    functionUses: 0
    functionsReached:
    - auto::isHashed
    - auto::wasHashed
    - auto::matches
    - CredentialsHolder::isHashingAvailable
    - CredentialsHolder
    - std::string
    - BOOST_CHECK
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_CredentialsHolder)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-credentials_cc.cc:144,1
    - Dst: SensitiveData::getString
      Src: /src/pdns/pdns/recursordist/test-credentials_cc.cc:144,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/test-credentials_cc.cc:147,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-credentials_cc.cc:148,1
    - Dst: SensitiveData::getString
      Src: /src/pdns/pdns/recursordist/test-credentials_cc.cc:148,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-credentials_cc.cc:149,1
    - Dst: SensitiveData::getString
      Src: /src/pdns/pdns/recursordist/test-credentials_cc.cc:149,1
    - Dst: SensitiveData::clear
      Src: /src/pdns/pdns/recursordist/test-credentials_cc.cc:151,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-credentials_cc.cc:152,1
    - Dst: SensitiveData::getString
      Src: /src/pdns/pdns/recursordist/test-credentials_cc.cc:152,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 153
      start: 140
    functionDepth: 0
    functionLinenumber: 140
    functionLinenumberEnd: 153
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-credentials_cc.cc
    functionUses: 0
    functionsReached:
    - SensitiveData::clear
    - std::move
    - SensitiveData::getString
    - BOOST_CHECK_EQUAL
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_SensitiveData)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: time
      Src: /src/pdns/pdns/recursordist/test-tsig.cc:43,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/recursordist/test-tsig.cc:47,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/recursordist/test-tsig.cc:48,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/recursordist/test-tsig.cc:49,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/recursordist/test-tsig.cc:50,1
    - Dst: DNSPacketWriter::xfr32BitInt
      Src: /src/pdns/pdns/recursordist/test-tsig.cc:51,1
    - Dst: DNSPacketWriter::addOpt
      Src: /src/pdns/pdns/recursordist/test-tsig.cc:52,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/recursordist/test-tsig.cc:53,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/recursordist/test-tsig.cc:61,1
    - Dst: getTSIGHashEnum
      Src: /src/pdns/pdns/recursordist/test-tsig.cc:61,1
    - Dst: TSIGRecordContent::TSIGRecordContent
      Src: /src/pdns/pdns/recursordist/test-tsig.cc:63,1
    - Dst: getTSIGAlgoName
      Src: /src/pdns/pdns/recursordist/test-tsig.cc:64,1
    - Dst: ntohs
      Src: /src/pdns/pdns/recursordist/test-tsig.cc:67,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/recursordist/test-tsig.cc:67,1
    - Dst: addTSIG
      Src: /src/pdns/pdns/recursordist/test-tsig.cc:70,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 19
    argCount: 4
    argNames:
    - ' qname'
    - ' tsigName'
    - ' tsigAlgo'
    - ' tsigSecret'
    argTypes:
    - DNSName
    - DNSName
    - DNSName
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 43
    functionDepth: 1
    functionLinenumber: 43
    functionLinenumberEnd: 72
    functionName: generateTSIGQuery
    functionSourceFile: /src/pdns/pdns/recursordist/test-tsig.cc
    functionUses: 12
    functionsReached:
    - addTSIG
    - DNSPacketWriter::commit
    - ntohs
    - getTSIGAlgoName
    - time
    - DNSPacketWriter::getHeader
    - DNSPacketWriter::addOpt
    - getTSIGHashEnum
    - BOOST_REQUIRE
    - DNSPacketWriter::xfr32BitInt
    - TSIGRecordContent::TSIGRecordContent
    - DNSPacketWriter::startRecord
    linkageType: ''
    returnType: vector<uint8_t>
    signature: vector<uint8_t> generateTSIGQuery(const DNSName& qname, const DNSName&
      tsigName, const DNSName& tsigAlgo, const string& tsigSecret, uint16_t fudge=300,
      time_t tsigTime=time(nullptr))
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/recursordist/test-tsig.cc:76,1
    - Dst: data
      Src: /src/pdns/pdns/recursordist/test-tsig.cc:76,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/test-tsig.cc:76,1
    - Dst: DNSName::DNSName
      Src: /src/pdns/pdns/recursordist/test-tsig.cc:81,1
    - Dst: TSIGRecordContent::TSIGRecordContent
      Src: /src/pdns/pdns/recursordist/test-tsig.cc:82,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-tsig.cc:86,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-tsig.cc:87,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-tsig.cc:88,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-tsig.cc:89,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/test-tsig.cc:91,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/recursordist/test-tsig.cc:113,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-tsig.cc:119,1
    - Dst: validateTSIG
      Src: /src/pdns/pdns/recursordist/test-tsig.cc:119,1
    - Dst: MOADNSParser::getTSIGPos
      Src: /src/pdns/pdns/recursordist/test-tsig.cc:119,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 28
    argCount: 4
    argNames:
    - ' tsigName'
    - ' tsigAlgo'
    - ' tsigSecret'
    - ' packet'
    argTypes:
    - DNSName
    - DNSName
    - string
    - vector<uint8_t>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 74
    functionDepth: 0
    functionLinenumber: 74
    functionLinenumberEnd: 120
    functionName: checkTSIG
    functionSourceFile: /src/pdns/pdns/recursordist/test-tsig.cc
    functionUses: 12
    functionsReached:
    - getRR
    - BOOST_CHECK
    - validateTSIG
    - size
    - BOOST_CHECK_EQUAL
    - MOADNSParser::getTSIGPos
    - reinterpret_cast<const char*>
    - BOOST_REQUIRE
    - data
    - DNSName::DNSName
    - TSIGRecordContent::TSIGRecordContent
    linkageType: ''
    returnType: void
    signature: void checkTSIG(const DNSName& tsigName, const DNSName& tsigAlgo, const
      string& tsigSecret, const vector<uint8_t>& packet, const string* overrideMac=nullptr,
      uint16_t* overrideExtendedRCode=nullptr, uint16_t* overrideOrigID=nullptr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: generateTSIGQuery
      Src: /src/pdns/pdns/recursordist/test-tsig.cc:128,1
    - Dst: checkTSIG
      Src: /src/pdns/pdns/recursordist/test-tsig.cc:130,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 130
      start: 122
    functionDepth: 0
    functionLinenumber: 122
    functionLinenumberEnd: 130
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-tsig.cc
    functionUses: 0
    functionsReached:
    - generateTSIGQuery
    - checkTSIG
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_TSIG_valid)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: generateTSIGQuery
      Src: /src/pdns/pdns/recursordist/test-tsig.cc:139,1
    - Dst: checkTSIG
      Src: /src/pdns/pdns/recursordist/test-tsig.cc:141,1
    - Dst: DNSName::makeLowerCase
      Src: /src/pdns/pdns/recursordist/test-tsig.cc:141,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 142
      start: 133
    functionDepth: 0
    functionLinenumber: 133
    functionLinenumberEnd: 142
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-tsig.cc
    functionUses: 0
    functionsReached:
    - generateTSIGQuery
    - DNSName::makeLowerCase
    - checkTSIG
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_TSIG_different_case_algo)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: generateTSIGQuery
      Src: /src/pdns/pdns/recursordist/test-tsig.cc:150,1
    - Dst: checkTSIG
      Src: /src/pdns/pdns/recursordist/test-tsig.cc:152,1
    - Dst: DNSName::makeLowerCase
      Src: /src/pdns/pdns/recursordist/test-tsig.cc:152,1
    - Dst: DNSName::makeLowerCase
      Src: /src/pdns/pdns/recursordist/test-tsig.cc:152,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 153
      start: 144
    functionDepth: 0
    functionLinenumber: 144
    functionLinenumberEnd: 153
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-tsig.cc
    functionUses: 0
    functionsReached:
    - generateTSIGQuery
    - DNSName::makeLowerCase
    - checkTSIG
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_TSIG_different_case_name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: generateTSIGQuery
      Src: /src/pdns/pdns/recursordist/test-tsig.cc:161,1
    - Dst: checkTSIG
      Src: /src/pdns/pdns/recursordist/test-tsig.cc:163,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 164
      start: 155
    functionDepth: 0
    functionLinenumber: 155
    functionLinenumberEnd: 164
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-tsig.cc
    functionUses: 0
    functionsReached:
    - generateTSIGQuery
    - checkTSIG
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_TSIG_different_name_same_algo)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: generateTSIGQuery
      Src: /src/pdns/pdns/recursordist/test-tsig.cc:172,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/recursordist/test-tsig.cc:174,1
    - Dst: checkTSIG
      Src: /src/pdns/pdns/recursordist/test-tsig.cc:174,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-tsig.cc:174,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 175
      start: 166
    functionDepth: 0
    functionLinenumber: 166
    functionLinenumberEnd: 175
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-tsig.cc
    functionUses: 0
    functionsReached:
    - generateTSIGQuery
    - DNSName
    - BOOST_CHECK_THROW
    - checkTSIG
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_TSIG_bad_key_name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: generateTSIGQuery
      Src: /src/pdns/pdns/recursordist/test-tsig.cc:183,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/recursordist/test-tsig.cc:185,1
    - Dst: checkTSIG
      Src: /src/pdns/pdns/recursordist/test-tsig.cc:185,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-tsig.cc:185,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 186
      start: 177
    functionDepth: 0
    functionLinenumber: 177
    functionLinenumberEnd: 186
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-tsig.cc
    functionUses: 0
    functionsReached:
    - generateTSIGQuery
    - DNSName
    - BOOST_CHECK_THROW
    - checkTSIG
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_TSIG_bad_algo)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: generateTSIGQuery
      Src: /src/pdns/pdns/recursordist/test-tsig.cc:194,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/recursordist/test-tsig.cc:196,1
    - Dst: checkTSIG
      Src: /src/pdns/pdns/recursordist/test-tsig.cc:196,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 197
      start: 188
    functionDepth: 0
    functionLinenumber: 188
    functionLinenumberEnd: 197
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-tsig.cc
    functionUses: 0
    functionsReached:
    - generateTSIGQuery
    - BOOST_CHECK_THROW
    - checkTSIG
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_TSIG_bad_secret)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: generateTSIGQuery
      Src: /src/pdns/pdns/recursordist/test-tsig.cc:205,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/recursordist/test-tsig.cc:208,1
    - Dst: checkTSIG
      Src: /src/pdns/pdns/recursordist/test-tsig.cc:208,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 209
      start: 199
    functionDepth: 0
    functionLinenumber: 199
    functionLinenumberEnd: 209
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-tsig.cc
    functionUses: 0
    functionsReached:
    - generateTSIGQuery
    - BOOST_CHECK_THROW
    - checkTSIG
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_TSIG_bad_ercode)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: generateTSIGQuery
      Src: /src/pdns/pdns/recursordist/test-tsig.cc:217,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/recursordist/test-tsig.cc:220,1
    - Dst: checkTSIG
      Src: /src/pdns/pdns/recursordist/test-tsig.cc:220,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 221
      start: 211
    functionDepth: 0
    functionLinenumber: 211
    functionLinenumberEnd: 221
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-tsig.cc
    functionUses: 0
    functionsReached:
    - generateTSIGQuery
    - BOOST_CHECK_THROW
    - checkTSIG
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_TSIG_bad_origID)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: generateTSIGQuery
      Src: /src/pdns/pdns/recursordist/test-tsig.cc:229,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/recursordist/test-tsig.cc:232,1
    - Dst: checkTSIG
      Src: /src/pdns/pdns/recursordist/test-tsig.cc:232,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 233
      start: 223
    functionDepth: 0
    functionLinenumber: 223
    functionLinenumberEnd: 233
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-tsig.cc
    functionUses: 0
    functionsReached:
    - generateTSIGQuery
    - BOOST_CHECK_THROW
    - checkTSIG
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_TSIG_bad_mac)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: generateTSIGQuery
      Src: /src/pdns/pdns/recursordist/test-tsig.cc:241,1
    - Dst: time
      Src: /src/pdns/pdns/recursordist/test-tsig.cc:241,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/recursordist/test-tsig.cc:243,1
    - Dst: checkTSIG
      Src: /src/pdns/pdns/recursordist/test-tsig.cc:243,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 244
      start: 235
    functionDepth: 0
    functionLinenumber: 235
    functionLinenumberEnd: 244
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-tsig.cc
    functionUses: 0
    functionsReached:
    - generateTSIGQuery
    - time
    - BOOST_CHECK_THROW
    - checkTSIG
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_TSIG_signature_expired)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: generateTSIGQuery
      Src: /src/pdns/pdns/recursordist/test-tsig.cc:252,1
    - Dst: time
      Src: /src/pdns/pdns/recursordist/test-tsig.cc:252,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/recursordist/test-tsig.cc:254,1
    - Dst: checkTSIG
      Src: /src/pdns/pdns/recursordist/test-tsig.cc:254,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 255
      start: 246
    functionDepth: 0
    functionLinenumber: 246
    functionLinenumberEnd: 255
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-tsig.cc
    functionUses: 0
    functionsReached:
    - generateTSIGQuery
    - time
    - BOOST_CHECK_THROW
    - checkTSIG
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_TSIG_signature_too_far_in_the_future)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - ProxyProtocolValue
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 35
      start: 32
    functionDepth: 0
    functionLinenumber: 32
    functionLinenumberEnd: 35
    functionName: operator==(const ProxyProtocolValue& rhs) const
    functionSourceFile: /src/pdns/pdns/recursordist/proxy-protocol.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool operator==(const ProxyProtocolValue& rhs) const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<float>
      Src: /src/pdns/pdns/recursordist/rec-nsspeeds.hh:50,1
    - Dst: makeFloat
      Src: /src/pdns/pdns/recursordist/rec-nsspeeds.hh:55,1
    - Dst: expf
      Src: /src/pdns/pdns/recursordist/rec-nsspeeds.hh:56,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - arg
    - ' last'
    - ' now'
    argTypes:
    - int
    - struct timeval
    - struct timeval
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 47
    functionDepth: 0
    functionLinenumber: 47
    functionLinenumberEnd: 59
    functionName: DecayingEwmaCollection::submit
    functionSourceFile: /src/pdns/pdns/recursordist/rec-nsspeeds.hh
    functionUses: 0
    functionsReached:
    - expf
    - makeFloat
    - static_cast<float>
    linkageType: ''
    returnType: void
    signature: void submit(int arg, const struct timeval& last, const struct timeval&
      now)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - factor
    argTypes:
    - float
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 61
    functionDepth: 0
    functionLinenumber: 61
    functionLinenumberEnd: 64
    functionName: DecayingEwmaCollection::get
    functionSourceFile: /src/pdns/pdns/recursordist/rec-nsspeeds.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: float
    signature: float get(float factor)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 66
    functionDepth: 0
    functionLinenumber: 66
    functionLinenumberEnd: 69
    functionName: DecayingEwmaCollection::peek
    functionSourceFile: /src/pdns/pdns/recursordist/rec-nsspeeds.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: float
    signature: float peek() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 71
    functionDepth: 0
    functionLinenumber: 71
    functionLinenumberEnd: 74
    functionName: DecayingEwmaCollection::last
    functionSourceFile: /src/pdns/pdns/recursordist/rec-nsspeeds.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int last() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/rec-nsspeeds.hh:82,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - name
    argTypes:
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 81
    functionDepth: 0
    functionLinenumber: 81
    functionLinenumberEnd: 84
    functionName: DecayingEwmaCollection::DecayingEwmaCollection
    functionSourceFile: /src/pdns/pdns/recursordist/rec-nsspeeds.hh
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void DecayingEwmaCollection(DNSName name, const struct timeval val
      = {0, 0})
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DecayingEwmaCollection::submit
      Src: /src/pdns/pdns/recursordist/rec-nsspeeds.hh:88,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' remote'
    - usecs
    - ' now'
    argTypes:
    - ComboAddress
    - int
    - struct timeval
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 86
    functionDepth: 1
    functionLinenumber: 86
    functionLinenumberEnd: 89
    functionName: DecayingEwmaCollection::submit
    functionSourceFile: /src/pdns/pdns/recursordist/rec-nsspeeds.hh
    functionUses: 1
    functionsReached:
    - DecayingEwmaCollection::submit
    linkageType: ''
    returnType: void
    signature: void submit(const ComboAddress& remote, int usecs, const struct timeval&
      now) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeFloat
      Src: /src/pdns/pdns/recursordist/rec-nsspeeds.hh:93,1
    - Dst: expf
      Src: /src/pdns/pdns/recursordist/rec-nsspeeds.hh:94,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' now'
    argTypes:
    - struct timeval
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 91
    functionDepth: 0
    functionLinenumber: 91
    functionLinenumberEnd: 95
    functionName: DecayingEwmaCollection::getFactor
    functionSourceFile: /src/pdns/pdns/recursordist/rec-nsspeeds.hh
    functionUses: 0
    functionsReached:
    - expf
    - makeFloat
    linkageType: ''
    returnType: float
    signature: float getFactor(const struct timeval& now) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - limit
    argTypes:
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 97
    functionDepth: 0
    functionLinenumber: 97
    functionLinenumberEnd: 100
    functionName: DecayingEwmaCollection::stale
    functionSourceFile: /src/pdns/pdns/recursordist/rec-nsspeeds.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool stale(time_t limit) const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/rec-nsspeeds.hh:104,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/rec-nsspeeds.hh:104,1
    - Dst: find
      Src: /src/pdns/pdns/recursordist/rec-nsspeeds.hh:105,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/rec-nsspeeds.hh:105,1
    - Dst: erase
      Src: /src/pdns/pdns/recursordist/rec-nsspeeds.hh:109,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - ' keep'
    argTypes:
    - std::map<ComboAddress, float>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 112
      start: 102
    functionDepth: 0
    functionLinenumber: 102
    functionLinenumberEnd: 112
    functionName: DecayingEwmaCollection::purge
    functionSourceFile: /src/pdns/pdns/recursordist/rec-nsspeeds.hh
    functionUses: 0
    functionsReached:
    - erase
    - end
    - find
    - begin
    linkageType: ''
    returnType: void
    signature: void purge(const std::map<ComboAddress, float>& keep) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DecayingEwmaCollection::insert
      Src: /src/pdns/pdns/recursordist/rec-nsspeeds.hh:116,1
    - Dst: std::make_pair
      Src: /src/pdns/pdns/recursordist/rec-nsspeeds.hh:116,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' address'
    - val
    - last
    argTypes:
    - ComboAddress
    - float
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 114
    functionDepth: 0
    functionLinenumber: 114
    functionLinenumberEnd: 117
    functionName: DecayingEwmaCollection::insert
    functionSourceFile: /src/pdns/pdns/recursordist/rec-nsspeeds.hh
    functionUses: 1
    functionsReached:
    - DecayingEwmaCollection::insert
    - std::make_pair
    linkageType: ''
    returnType: void
    signature: void insert(const ComboAddress& address, float val, int last)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: insert
      Src: /src/pdns/pdns/recursordist/rec-nsspeeds.hh:133,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' name'
    - ' now'
    argTypes:
    - DNSName
    - struct timeval
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 135
      start: 131
    functionDepth: 1
    functionLinenumber: 131
    functionLinenumberEnd: 135
    functionName: '& find_or_enter(const DNSName& name, const struct timeval& now)'
    functionSourceFile: /src/pdns/pdns/recursordist/rec-nsspeeds.hh
    functionUses: 0
    functionsReached:
    - insert
    linkageType: ''
    returnType: auto
    signature: auto & find_or_enter(const DNSName& name, const struct timeval& now)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: insert
      Src: /src/pdns/pdns/recursordist/rec-nsspeeds.hh:139,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' name'
    argTypes:
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 141
      start: 137
    functionDepth: 1
    functionLinenumber: 137
    functionLinenumberEnd: 141
    functionName: '& find_or_enter(const DNSName& name)'
    functionSourceFile: /src/pdns/pdns/recursordist/rec-nsspeeds.hh
    functionUses: 0
    functionsReached:
    - insert
    linkageType: ''
    returnType: auto
    signature: auto & find_or_enter(const DNSName& name)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: get
      Src: /src/pdns/pdns/recursordist/rec-nsspeeds.hh:145,1
    - Dst: insert
      Src: /src/pdns/pdns/recursordist/rec-nsspeeds.hh:146,1
    - Dst: auto::d_collection::empty
      Src: /src/pdns/pdns/recursordist/rec-nsspeeds.hh:147,1
    - Dst: modify
      Src: /src/pdns/pdns/recursordist/rec-nsspeeds.hh:152,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/recursordist/rec-nsspeeds.hh:155,1
    - Dst: auto::getFactor
      Src: /src/pdns/pdns/recursordist/rec-nsspeeds.hh:156,1
    - Dst: std::min
      Src: /src/pdns/pdns/recursordist/rec-nsspeeds.hh:158,1
    - Dst: second::get
      Src: /src/pdns/pdns/recursordist/rec-nsspeeds.hh:158,1
    - Dst: modify
      Src: /src/pdns/pdns/recursordist/rec-nsspeeds.hh:160,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 2
    argNames:
    - ' name'
    - ' now'
    argTypes:
    - DNSName
    - struct timeval
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 162
      start: 143
    functionDepth: 1
    functionLinenumber: 143
    functionLinenumberEnd: 162
    functionName: nsspeeds_t::fastest
    functionSourceFile: /src/pdns/pdns/recursordist/rec-nsspeeds.hh
    functionUses: 0
    functionsReached:
    - pdns::max
    - modify
    - std::min
    - second::get
    - get
    - auto::getFactor
    - insert
    - auto::d_collection::empty
    linkageType: ''
    returnType: float
    signature: float fastest(const DNSName& name, const struct timeval& now)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lua_pushlightuserdata
      Src: /src/pdns/pdns/recursordist/lua-recursor4.hh:49,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - state
    - ptr
    argTypes:
    - lua_State*
    - pdns_ffi_param*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 47
    functionDepth: 0
    functionLinenumber: 47
    functionLinenumberEnd: 51
    functionName: push
    functionSourceFile: /src/pdns/pdns/recursordist/lua-recursor4.hh
    functionUses: 52
    functionsReached:
    - lua_pushlightuserdata
    linkageType: ''
    returnType: PushedObject
    signature: PushedObject push(lua_State* state, pdns_ffi_param* ptr) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lua_pushlightuserdata
      Src: /src/pdns/pdns/recursordist/lua-recursor4.hh:63,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - state
    - ptr
    argTypes:
    - lua_State*
    - pdns_postresolve_ffi_handle*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 61
    functionDepth: 0
    functionLinenumber: 61
    functionLinenumberEnd: 65
    functionName: push
    functionSourceFile: /src/pdns/pdns/recursordist/lua-recursor4.hh
    functionUses: 52
    functionsReached:
    - lua_pushlightuserdata
    linkageType: ''
    returnType: PushedObject
    signature: PushedObject push(lua_State* state, pdns_postresolve_ffi_handle* ptr)
      noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: prepareContext
      Src: /src/pdns/pdns/recursordist/lua-recursor4.hh:74,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 71
    functionDepth: 0
    functionLinenumber: 71
    functionLinenumberEnd: 75
    functionName: RecursorLua4::RecursorLua4
    functionSourceFile: /src/pdns/pdns/recursordist/lua-recursor4.hh
    functionUses: 0
    functionsReached:
    - prepareContext
    linkageType: ''
    returnType: void
    signature: void RecursorLua4(const std::string& includePath = "")
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 76
    functionDepth: 0
    functionLinenumber: 76
    functionLinenumberEnd: 76
    functionName: RecursorLua4::RecursorLua4
    functionSourceFile: /src/pdns/pdns/recursordist/lua-recursor4.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void RecursorLua4(const RecursorLua4&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 77
    functionDepth: 0
    functionLinenumber: 77
    functionLinenumberEnd: 77
    functionName: RecursorLua4::RecursorLua4
    functionSourceFile: /src/pdns/pdns/recursordist/lua-recursor4.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void RecursorLua4(RecursorLua4&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 78
    functionDepth: 0
    functionLinenumber: 78
    functionLinenumberEnd: 78
    functionName: '& operator=(const RecursorLua4&)'
    functionSourceFile: /src/pdns/pdns/recursordist/lua-recursor4.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: RecursorLua4
    signature: RecursorLua4 & operator=(const RecursorLua4&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 79
    functionDepth: 0
    functionLinenumber: 79
    functionLinenumberEnd: 79
    functionName: '& operator=(RecursorLua4&&)'
    functionSourceFile: /src/pdns/pdns/recursordist/lua-recursor4.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: RecursorLua4
    signature: RecursorLua4 & operator=(RecursorLua4&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 12
    argNames:
    - ' prem'
    - ' ploc'
    - ' rem'
    - ' loc'
    - ' query'
    - type
    - tcp
    - ' variable_'
    - ' wantsRPZ_'
    - ' logResponse_'
    - ' addPaddingToResponse_'
    - ' queryTime_'
    argTypes:
    - ComboAddress
    - ComboAddress
    - ComboAddress
    - ComboAddress
    - DNSName
    - uint16_t
    - bool
    - bool
    - bool
    - bool
    - bool
    - struct timeval
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 90
    functionDepth: 0
    functionLinenumber: 90
    functionLinenumberEnd: 93
    functionName: RecursorLua4::DNSQuestion
    functionSourceFile: /src/pdns/pdns/recursordist/lua-recursor4.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void DNSQuestion(const ComboAddress& prem, const ComboAddress& ploc,
      const ComboAddress& rem, const ComboAddress& loc, const DNSName& query, uint16_t
      type, bool tcp, bool& variable_, bool& wantsRPZ_, bool& logResponse_, bool&
      addPaddingToResponse_, const struct timeval& queryTime_)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 4
    argNames:
    - ' rem'
    - ' name'
    - ' type'
    - tcp
    argTypes:
    - ComboAddress
    - DNSName
    - QType
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 158
      start: 155
    functionDepth: 0
    functionLinenumber: 155
    functionLinenumberEnd: 158
    functionName: RecursorLua4::PolicyEvent
    functionSourceFile: /src/pdns/pdns/recursordist/lua-recursor4.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void PolicyEvent(const ComboAddress& rem, const DNSName& name, const
      QType& type, bool tcp)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 27
    argNames:
    - ' qname_'
    - qtype_
    - ' plocal_'
    - ' premote_'
    - ' local_'
    - ' remote_'
    - ' ednssubnet_'
    - ' data_'
    - ' policyTags_'
    - ' records_'
    - ' ednsOptions_'
    - ' proxyProtocolValues_'
    - ' requestorId_'
    - ' deviceId_'
    - ' deviceName_'
    - ' routingTag_'
    - ' rcode_'
    - ' ttlCap_'
    - ' variable_'
    - tcp_
    - ' logQuery_'
    - ' logResponse_'
    - ' followCNAMERecords_'
    - ' extendedErrorCode_'
    - ' extendedErrorExtra_'
    - ' disablePadding_'
    - ' meta_'
    argTypes:
    - DNSName
    - uint16_t
    - ComboAddress
    - ComboAddress
    - ComboAddress
    - ComboAddress
    - Netmask
    - LuaContext::LuaObject
    - std::unordered_set<std::string>
    - std::vector<DNSRecord>
    - EDNSOptionViewMap
    - std::vector<ProxyProtocolValue>
    - std::string
    - std::string
    - std::string
    - std::string
    - std::optional<int>
    - uint32_t
    - bool
    - bool
    - bool
    - bool
    - bool
    - std::optional<uint16_t>
    - std::string
    - bool
    - std::map<std::string, MetaValue>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 175
      start: 172
    functionDepth: 0
    functionLinenumber: 172
    functionLinenumberEnd: 175
    functionName: RecursorLua4::FFIParams
    functionSourceFile: /src/pdns/pdns/recursordist/lua-recursor4.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void FFIParams(const DNSName& qname_, uint16_t qtype_, const ComboAddress&
      plocal_, const ComboAddress& premote_, const ComboAddress& local_, const ComboAddress&
      remote_, const Netmask& ednssubnet_, LuaContext::LuaObject& data_, std::unordered_set<std::string>&
      policyTags_, std::vector<DNSRecord>& records_, const EDNSOptionViewMap& ednsOptions_,
      const std::vector<ProxyProtocolValue>& proxyProtocolValues_, std::string& requestorId_,
      std::string& deviceId_, std::string& deviceName_, std::string& routingTag_,
      std::optional<int>& rcode_, uint32_t& ttlCap_, bool& variable_, bool tcp_, bool&
      logQuery_, bool& logResponse_, bool& followCNAMERecords_, std::optional<uint16_t>&
      extendedErrorCode_, std::string& extendedErrorExtra_, bool& disablePadding_,
      std::map<std::string, MetaValue>& meta_)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 229
      start: 226
    functionDepth: 0
    functionLinenumber: 226
    functionLinenumberEnd: 229
    functionName: RecursorLua4::needDQ
    functionSourceFile: /src/pdns/pdns/recursordist/lua-recursor4.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool needDQ() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' dnsQuestion'
    argTypes:
    - DNSQuestion
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 236
      start: 233
    functionDepth: 0
    functionLinenumber: 233
    functionLinenumberEnd: 236
    functionName: RecursorLua4::PostResolveFFIHandle
    functionSourceFile: /src/pdns/pdns/recursordist/lua-recursor4.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void PostResolveFFIHandle(DNSQuestion& dnsQuestion)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<bool>
      Src: /src/pdns/pdns/recursordist/lua-recursor4.hh:244,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 245
      start: 242
    functionDepth: 0
    functionLinenumber: 242
    functionLinenumberEnd: 245
    functionName: RecursorLua4::hasGettagFunc
    functionSourceFile: /src/pdns/pdns/recursordist/lua-recursor4.hh
    functionUses: 0
    functionsReached:
    - static_cast<bool>
    linkageType: ''
    returnType: bool
    signature: bool hasGettagFunc() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<bool>
      Src: /src/pdns/pdns/recursordist/lua-recursor4.hh:248,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 249
      start: 246
    functionDepth: 0
    functionLinenumber: 246
    functionLinenumberEnd: 249
    functionName: RecursorLua4::hasGettagFFIFunc
    functionSourceFile: /src/pdns/pdns/recursordist/lua-recursor4.hh
    functionUses: 0
    functionsReached:
    - static_cast<bool>
    linkageType: ''
    returnType: bool
    signature: bool hasGettagFFIFunc() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<bool>
      Src: /src/pdns/pdns/recursordist/lua-recursor4.hh:252,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 253
      start: 250
    functionDepth: 0
    functionLinenumber: 250
    functionLinenumberEnd: 253
    functionName: RecursorLua4::hasPostResolveFFIfunc
    functionSourceFile: /src/pdns/pdns/recursordist/lua-recursor4.hh
    functionUses: 0
    functionsReached:
    - static_cast<bool>
    linkageType: ''
    returnType: bool
    signature: bool hasPostResolveFFIfunc() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: getLocal
      Src: /src/pdns/pdns/recursordist/test-sholder_hh.cc:26,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/test-sholder_hh.cc:29,1
    - Dst: store
      Src: /src/pdns/pdns/recursordist/test-sholder_hh.cc:30,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 34
      start: 24
    functionDepth: 0
    functionLinenumber: 24
    functionLinenumberEnd: 34
    functionName: treader
    functionSourceFile: /src/pdns/pdns/recursordist/test-sholder_hh.cc
    functionUses: 0
    functionsReached:
    - getLocal
    - store
    - std::to_string
    linkageType: ''
    returnType: void
    signature: void treader()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: setState
      Src: /src/pdns/pdns/recursordist/test-sholder_hh.cc:38,1
    - Dst: setState
      Src: /src/pdns/pdns/recursordist/test-sholder_hh.cc:42,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/test-sholder_hh.cc:42,1
    - Dst: modify
      Src: /src/pdns/pdns/recursordist/test-sholder_hh.cc:43,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/test-sholder_hh.cc:43,1
    - Dst: std::thread::join
      Src: /src/pdns/pdns/recursordist/test-sholder_hh.cc:45,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-sholder_hh.cc:46,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 36
    functionDepth: 0
    functionLinenumber: 36
    functionLinenumberEnd: 47
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-sholder_hh.cc
    functionUses: 0
    functionsReached:
    - setState
    - modify
    - std::to_string
    - std::thread::join
    - BOOST_CHECK_EQUAL
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_sholder)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/recursordist/packetcache.hh:38,1
    - Dst: assert
      Src: /src/pdns/pdns/recursordist/packetcache.hh:39,1
    - Dst: data
      Src: /src/pdns/pdns/recursordist/packetcache.hh:47,1
    - Dst: dnsheader_aligned::get
      Src: /src/pdns/pdns/recursordist/packetcache.hh:48,1
    - Dst: ntohs
      Src: /src/pdns/pdns/recursordist/packetcache.hh:49,1
    - Dst: ntohs
      Src: /src/pdns/pdns/recursordist/packetcache.hh:49,1
    - Dst: ntohs
      Src: /src/pdns/pdns/recursordist/packetcache.hh:49,1
    - Dst: ntohs
      Src: /src/pdns/pdns/recursordist/packetcache.hh:49,1
    - Dst: burtle
      Src: /src/pdns/pdns/recursordist/packetcache.hh:51,1
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/recursordist/packetcache.hh:51,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/packetcache.hh:51,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/packetcache.hh:56,1
    - Dst: burtle
      Src: /src/pdns/pdns/recursordist/packetcache.hh:57,1
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/recursordist/packetcache.hh:57,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/packetcache.hh:57,1
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/packetcache.hh:60,1
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/packetcache.hh:60,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/recursordist/packetcache.hh:61,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/recursordist/packetcache.hh:61,1
    - Dst: std::upper_bound
      Src: /src/pdns/pdns/recursordist/packetcache.hh:62,1
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/packetcache.hh:62,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/packetcache.hh:62,1
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/packetcache.hh:63,1
    - Dst: burtle
      Src: /src/pdns/pdns/recursordist/packetcache.hh:68,1
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/recursordist/packetcache.hh:68,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/recursordist/packetcache.hh:68,1
    - Dst: static_cast<uint16_t>
      Src: /src/pdns/pdns/recursordist/packetcache.hh:79,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/packetcache.hh:79,1
    - Dst: static_cast<uint16_t>
      Src: /src/pdns/pdns/recursordist/packetcache.hh:79,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/packetcache.hh:79,1
    - Dst: burtle
      Src: /src/pdns/pdns/recursordist/packetcache.hh:86,1
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/recursordist/packetcache.hh:86,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/packetcache.hh:86,1
    - Dst: getNextEDNSOption
      Src: /src/pdns/pdns/recursordist/packetcache.hh:95,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/packetcache.hh:95,1
    - Dst: burtle
      Src: /src/pdns/pdns/recursordist/packetcache.hh:98,1
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/recursordist/packetcache.hh:98,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/packetcache.hh:98,1
    - Dst: count
      Src: /src/pdns/pdns/recursordist/packetcache.hh:103,1
    - Dst: burtle
      Src: /src/pdns/pdns/recursordist/packetcache.hh:105,1
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/recursordist/packetcache.hh:105,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/packetcache.hh:105,1
    - Dst: burtle
      Src: /src/pdns/pdns/recursordist/packetcache.hh:109,1
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/recursordist/packetcache.hh:109,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/packetcache.hh:109,1
    - Dst: burtle
      Src: /src/pdns/pdns/recursordist/packetcache.hh:117,1
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/recursordist/packetcache.hh:117,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/packetcache.hh:117,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 48
    argCount: 3
    argNames:
    - ' packet'
    - currentHash
    - pos
    argTypes:
    - std::string_view
    - uint32_t
    - size_t
    assertStmts:
    - condition: (packetSize >= sizeof(dnsheader))
      pos:
        line_end: 38
        line_start: 38
        source_file: /src/pdns/pdns/recursordist/packetcache.hh
    constantsTouched: []
    func_position:
      end: 121
      start: 36
    functionDepth: 0
    functionLinenumber: 36
    functionLinenumberEnd: 121
    functionName: PacketCache::hashAfterQname
    functionSourceFile: /src/pdns/pdns/recursordist/packetcache.hh
    functionUses: 3
    functionsReached:
    - dnsheader_aligned::get
    - ntohs
    - count
    - end
    - assert
    - size
    - begin
    - empty
    - reinterpret_cast<const unsigned char*>
    - std::vector::at
    - std::upper_bound
    - static_cast<uint16_t>
    - data
    - burtle
    - getNextEDNSOption
    - at
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t hashAfterQname(const std::string_view& packet, uint32_t currentHash,
      size_t pos, const std::unordered_set<uint16_t>& optionsToSkip = {EDNSOptionCode::COOKIE},
      const std::vector<uint16_t>& payloadRanks = {})
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/recursordist/packetcache.hh:125,1
    - Dst: assert
      Src: /src/pdns/pdns/recursordist/packetcache.hh:126,1
    - Dst: burtle
      Src: /src/pdns/pdns/recursordist/packetcache.hh:131,1
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/recursordist/packetcache.hh:131,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/packetcache.hh:131,1
    - Dst: static_cast<unsigned char>
      Src: /src/pdns/pdns/recursordist/packetcache.hh:134,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/packetcache.hh:134,1
    - Dst: std::min
      Src: /src/pdns/pdns/recursordist/packetcache.hh:139,1
    - Dst: burtleCI
      Src: /src/pdns/pdns/recursordist/packetcache.hh:141,1
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/recursordist/packetcache.hh:141,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/packetcache.hh:141,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - ' packet'
    - ' pos'
    argTypes:
    - std::string
    - size_t
    assertStmts:
    - condition: (packetSize >= sizeof(dnsheader))
      pos:
        line_end: 125
        line_start: 125
        source_file: /src/pdns/pdns/recursordist/packetcache.hh
    constantsTouched: []
    func_position:
      end: 142
      start: 123
    functionDepth: 0
    functionLinenumber: 123
    functionLinenumberEnd: 142
    functionName: PacketCache::hashHeaderAndQName
    functionSourceFile: /src/pdns/pdns/recursordist/packetcache.hh
    functionUses: 2
    functionsReached:
    - burtleCI
    - std::min
    - assert
    - size
    - reinterpret_cast<const unsigned char*>
    - burtle
    - at
    - static_cast<unsigned char>
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t hashHeaderAndQName(const std::string& packet, size_t& pos)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PacketCache::hashHeaderAndQName
      Src: /src/pdns/pdns/recursordist/packetcache.hh:152,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/packetcache.hh:154,1
    - Dst: PacketCache::hashAfterQname
      Src: /src/pdns/pdns/recursordist/packetcache.hh:158,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ' packet'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 159
      start: 149
    functionDepth: 0
    functionLinenumber: 149
    functionLinenumberEnd: 159
    functionName: PacketCache::canHashPacket
    functionSourceFile: /src/pdns/pdns/recursordist/packetcache.hh
    functionUses: 6
    functionsReached:
    - PacketCache::hashHeaderAndQName
    - size
    - PacketCache::hashAfterQname
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t canHashPacket(const std::string& packet, const std::unordered_set<uint16_t>&
      optionsToSkip = {EDNSOptionCode::COOKIE})
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/recursordist/packetcache.hh:163,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/packetcache.hh:163,1
    - Dst: compare
      Src: /src/pdns/pdns/recursordist/packetcache.hh:167,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - ' cachedQuery'
    - ' query'
    argTypes:
    - std::string
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 168
      start: 161
    functionDepth: 0
    functionLinenumber: 161
    functionLinenumberEnd: 168
    functionName: PacketCache::queryHeaderMatches
    functionSourceFile: /src/pdns/pdns/recursordist/packetcache.hh
    functionUses: 2
    functionsReached:
    - compare
    - size
    linkageType: ''
    returnType: bool
    signature: bool queryHeaderMatches(const std::string& cachedQuery, const std::string&
      query)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/recursordist/packetcache.hh:172,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/packetcache.hh:173,1
    - Dst: PacketCache::queryHeaderMatches
      Src: /src/pdns/pdns/recursordist/packetcache.hh:178,1
    - Dst: wirelength
      Src: /src/pdns/pdns/recursordist/packetcache.hh:182,1
    - Dst: data
      Src: /src/pdns/pdns/recursordist/packetcache.hh:189,1
    - Dst: dnsheader_aligned::get
      Src: /src/pdns/pdns/recursordist/packetcache.hh:190,1
    - Dst: ntohs
      Src: /src/pdns/pdns/recursordist/packetcache.hh:191,1
    - Dst: ntohs
      Src: /src/pdns/pdns/recursordist/packetcache.hh:191,1
    - Dst: ntohs
      Src: /src/pdns/pdns/recursordist/packetcache.hh:191,1
    - Dst: ntohs
      Src: /src/pdns/pdns/recursordist/packetcache.hh:191,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/packetcache.hh:191,1
    - Dst: compare
      Src: /src/pdns/pdns/recursordist/packetcache.hh:192,1
    - Dst: compare
      Src: /src/pdns/pdns/recursordist/packetcache.hh:196,1
    - Dst: static_cast<unsigned char>
      Src: /src/pdns/pdns/recursordist/packetcache.hh:205,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/packetcache.hh:205,1
    - Dst: static_cast<unsigned char>
      Src: /src/pdns/pdns/recursordist/packetcache.hh:205,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/packetcache.hh:205,1
    - Dst: compare
      Src: /src/pdns/pdns/recursordist/packetcache.hh:212,1
    - Dst: getNextEDNSOption
      Src: /src/pdns/pdns/recursordist/packetcache.hh:219,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/packetcache.hh:219,1
    - Dst: compare
      Src: /src/pdns/pdns/recursordist/packetcache.hh:221,1
    - Dst: compare
      Src: /src/pdns/pdns/recursordist/packetcache.hh:225,1
    - Dst: count
      Src: /src/pdns/pdns/recursordist/packetcache.hh:231,1
    - Dst: compare
      Src: /src/pdns/pdns/recursordist/packetcache.hh:232,1
    - Dst: compare
      Src: /src/pdns/pdns/recursordist/packetcache.hh:244,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 39
    argCount: 4
    argNames:
    - ' cachedQuery'
    - ' query'
    - ' qname'
    - ' optionsToIgnore'
    argTypes:
    - std::string
    - std::string
    - DNSName
    - std::unordered_set<uint16_t>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 245
      start: 170
    functionDepth: 0
    functionLinenumber: 170
    functionLinenumberEnd: 245
    functionName: PacketCache::queryMatches
    functionSourceFile: /src/pdns/pdns/recursordist/packetcache.hh
    functionUses: 3
    functionsReached:
    - wirelength
    - dnsheader_aligned::get
    - ntohs
    - count
    - PacketCache::queryHeaderMatches
    - size
    - compare
    - getNextEDNSOption
    - data
    - empty
    - at
    - static_cast<unsigned char>
    linkageType: ''
    returnType: bool
    signature: bool queryMatches(const std::string& cachedQuery, const std::string&
      query, const DNSName& qname, const std::unordered_set<uint16_t>& optionsToIgnore)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:25,1
    - Dst: SLOG
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:26,1
    - Dst: withName
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:27,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:27,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:28,1
    - Dst: BaseLua4::loadStream
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:30,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - ' fname'
    - doPostLoad
    argTypes:
    - std::string
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 31
      start: 20
    functionDepth: 0
    functionLinenumber: 20
    functionLinenumberEnd: 31
    functionName: BaseLua4::loadFile
    functionSourceFile: /src/pdns/pdns/recursordist/lua-base4.cc
    functionUses: 1
    functionsReached:
    - BaseLua4::loadStream
    - SLOG
    - std::runtime_error
    - withName
    - stringerror
    - Logging::Loggable
    linkageType: ''
    returnType: void
    signature: void BaseLua4::loadFile(const std::string& fname, bool doPostLoad)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BaseLua4::loadStream
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:35,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - script
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 36
      start: 33
    functionDepth: 0
    functionLinenumber: 33
    functionLinenumberEnd: 36
    functionName: BaseLua4::loadString
    functionSourceFile: /src/pdns/pdns/recursordist/lua-base4.cc
    functionUses: 0
    functionsReached:
    - BaseLua4::loadStream
    linkageType: ''
    returnType: void
    signature: void BaseLua4::loadString(const std::string &script)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pdns::visit_directory
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:41,1
    - Dst: boost::starts_with
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:43,1
    - Dst: boost::ends_with
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:46,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:48,1
    - Dst: stat
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:53,1
    - Dst: string::c_str
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:53,1
    - Dst: S_ISREG
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:53,1
    - Dst: SLOG
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:55,1
    - Dst: withName
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:56,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:56,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:57,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:57,1
    - Dst: std::vector::emplace_back
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:59,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:66,1
    - Dst: SLOG
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:67,1
    - Dst: withName
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:68,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:68,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:69,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:69,1
    - Dst: std::sort
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:72,1
    - Dst: std::vector::begin
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:72,1
    - Dst: std::vector::end
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:72,1
    - Dst: CIStringComparePOSIX
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:72,1
    - Dst: BaseLua4::loadFile
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:75,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 21
    argCount: 1
    argNames:
    - ' directory'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 38
    functionDepth: 0
    functionLinenumber: 38
    functionLinenumberEnd: 77
    functionName: BaseLua4::includePath
    functionSourceFile: /src/pdns/pdns/recursordist/lua-base4.cc
    functionUses: 0
    functionsReached:
    - withName
    - PDNSException
    - stringerror
    - BaseLua4::loadFile
    - std::string
    - SLOG
    - Logging::Loggable
    - std::vector::begin
    - boost::starts_with
    - stat
    - boost::ends_with
    - std::vector::end
    - string::c_str
    - pdns::visit_directory
    - S_ISREG
    - std::move
    - std::sort
    - std::vector::emplace_back
    - CIStringComparePOSIX
    linkageType: ''
    returnType: void
    signature: void BaseLua4::includePath(const std::string& directory)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 80
    functionDepth: 0
    functionLinenumber: 80
    functionLinenumberEnd: 80
    functionName: BaseLua4::getFeatures
    functionSourceFile: /src/pdns/pdns/recursordist/lua-base4.cc
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void BaseLua4::getFeatures(Features &)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: std::make_unique<LuaContext>
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:83,1
    - Dst: BaseLua4::getFeatures
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:87,1
    - Dst: writeVariable
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:88,1
    - Dst: ntohs
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:91,1
    - Dst: ntohs
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:100,1
    - Dst: ntohs
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:101,1
    - Dst: ntohs
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:102,1
    - Dst: ntohs
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:103,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:106,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:106,1
    - Dst: registerFunction
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:107,1
    - Dst: canonCompare
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:108,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:109,1
    - Dst: makeRelative
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:109,1
    - Dst: isPartOf
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:110,1
    - Dst: registerFunction
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:111,1
    - Dst: registerFunction
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:112,1
    - Dst: countLabels
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:112,1
    - Dst: wirelength
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:113,1
    - Dst: wirelength
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:114,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:115,1
    - Dst: registerEqFunction
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:116,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:117,1
    - Dst: toString
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:117,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:118,1
    - Dst: toString
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:118,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:119,1
    - Dst: toStringNoDot
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:119,1
    - Dst: chopOff
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:120,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:123,1
    - Dst: DNSResourceRecord
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:124,1
    - Dst: auto::setContent
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:128,1
    - Dst: registerEqFunction
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:135,1
    - Dst: registerFunction
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:136,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:137,1
    - Dst: getZoneRepresentation
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:137,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:138,1
    - Dst: getZoneRepresentation
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:138,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:139,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:140,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:141,1
    - Dst: time_t
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:142,1
    - Dst: qtype::getCode
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:146,1
    - Dst: ntohs
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:155,1
    - Dst: isMappedIPv4
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:156,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:157,1
    - Dst: mapToIPv4
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:157,1
    - Dst: truncate
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:158,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:159,1
    - Dst: toString
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:159,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:160,1
    - Dst: toString
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:160,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:161,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:161,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:162,1
    - Dst: toByteString
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:162,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:164,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:164,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:165,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:166,1
    - Dst: memset
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:168,1
    - Dst: memcpy
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:170,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:170,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:170,1
    - Dst: htons
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:172,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:174,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:176,1
    - Dst: memset
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:178,1
    - Dst: memcpy
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:180,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:180,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:180,1
    - Dst: htons
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:182,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:184,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:186,1
    - Dst: ComboAddress::addressOnlyEqual
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:189,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:192,1
    - Dst: cas_t
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:192,1
    - Dst: boost::get<string>
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:197,1
    - Dst: insert
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:198,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:198,1
    - Dst: boost::get<vector<pair<unsigned int, string> > >
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:200,1
    - Dst: insert
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:202,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:202,1
    - Dst: insert
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:205,1
    - Dst: boost::get<ComboAddress>
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:205,1
    - Dst: SLOG
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:208,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:208,1
    - Dst: withName
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:209,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:209,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:209,1
    - Dst: count
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:212,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:215,1
    - Dst: QType::QType
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:215,1
    - Dst: registerFunction
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:216,1
    - Dst: registerFunction
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:217,1
    - Dst: registerToStringFunction
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:219,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:222,1
    - Dst: Netmask
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:222,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:223,1
    - Dst: getNetwork
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:223,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:224,1
    - Dst: getMaskedNetwork
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:224,1
    - Dst: registerFunction
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:225,1
    - Dst: registerFunction
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:226,1
    - Dst: registerFunction
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:227,1
    - Dst: registerFunction
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:228,1
    - Dst: registerFunction
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:229,1
    - Dst: registerFunction
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:230,1
    - Dst: registerFunction
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:231,1
    - Dst: registerFunction
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:232,1
    - Dst: registerEqFunction
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:233,1
    - Dst: registerToStringFunction
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:234,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:237,1
    - Dst: NetmaskGroup
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:238,1
    - Dst: auto::addMask
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:242,1
    - Dst: auto::addMask
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:249,1
    - Dst: auto::addMask
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:250,1
    - Dst: registerFunction
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:251,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:254,1
    - Dst: QType::QType
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:254,1
    - Dst: DNSRecord
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:254,1
    - Dst: QType::getCode
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:254,1
    - Dst: auto::setContent
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:254,1
    - Dst: shared_ptr<DNSRecordContent>
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:254,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:254,1
    - Dst: static_cast<DNSResourceRecord::Place>
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:254,1
    - Dst: registerMember
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:255,1
    - Dst: registerMember
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:256,1
    - Dst: registerMember
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:257,1
    - Dst: registerMember
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:258,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:259,1
    - Dst: auto::getContent
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:259,1
    - Dst: boost::optional<ComboAddress>
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:260,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:263,1
    - Dst: auto::getCA
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:264,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:265,1
    - Dst: auto::getCA
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:266,1
    - Dst: auto::setContent
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:269,1
    - Dst: shared_ptr<DNSRecordContent>
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:269,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:269,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:273,1
    - Dst: withName
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:275,1
    - Dst: auto::info
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:276,1
    - Dst: static_cast<Logr::Priority>
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:276,1
    - Dst: get_value_or
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:276,1
    - Dst: get_value_or
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:279,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:283,1
    - Dst: withName
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:284,1
    - Dst: auto::withValues
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:287,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:287,1
    - Dst: auto::info
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:290,1
    - Dst: static_cast<Logr::Priority>
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:290,1
    - Dst: get_value_or
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:290,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:293,1
    - Dst: get_value_or
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:294,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:298,1
    - Dst: dns_random
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:299,1
    - Dst: dns_random_uint32
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:299,1
    - Dst: push_back
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:317,1
    - Dst: push_back
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:319,1
    - Dst: push_back
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:326,1
    - Dst: push_back
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:338,1
    - Dst: registerMember
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:340,1
    - Dst: registerMember
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:341,1
    - Dst: postPrepareContext
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:343,1
    - Dst: writeVariable
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:346,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 311
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 347
      start: 82
    functionDepth: 1
    functionLinenumber: 82
    functionLinenumberEnd: 347
    functionName: BaseLua4::prepareContext
    functionSourceFile: /src/pdns/pdns/recursordist/lua-base4.cc
    functionUses: 0
    functionsReached:
    - getZoneRepresentation
    - makeRelative
    - toString
    - wirelength
    - ntohs
    - withName
    - boost::optional<ComboAddress>
    - getMaskedNetwork
    - postPrepareContext
    - toStringNoDot
    - writeVariable
    - auto::withValues
    - auto::getContent
    - insert
    - dns_random_uint32
    - countLabels
    - NetmaskGroup
    - SLOG
    - auto::setContent
    - boost::get<string>
    - Logging::Loggable
    - auto::addMask
    - string
    - ComboAddress::addressOnlyEqual
    - mapToIPv4
    - size
    - memset
    - registerMember
    - boost::get<ComboAddress>
    - time_t
    - getNetwork
    - DNSRecordContent::make
    - c_str
    - static_cast<DNSResourceRecord::Place>
    - writeFunction
    - auto::getCA
    - static_cast<Logr::Priority>
    - htons
    - cas_t
    - DNSResourceRecord
    - Netmask
    - isPartOf
    - auto::info
    - canonCompare
    - push_back
    - registerFunction
    - registerEqFunction
    - DNSRecord
    - DNSName
    - chopOff
    - qtype::getCode
    - toByteString
    - boost::get<vector<pair<unsigned int, string> > >
    - truncate
    - shared_ptr<DNSRecordContent>
    - get_value_or
    - std::make_unique<LuaContext>
    - toStringWithPort
    - ComboAddress
    - memcpy
    - getRR
    - QType::QType
    - dns_random
    - isMappedIPv4
    - count
    - what
    - registerToStringFunction
    - BaseLua4::getFeatures
    - QType::getCode
    linkageType: ''
    returnType: void
    signature: void BaseLua4::prepareContext()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: executeCode
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:350,1
    - Dst: postLoad
      Src: /src/pdns/pdns/recursordist/lua-base4.cc:353,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - stream
    - doPostLoad
    argTypes:
    - std::istream
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 355
      start: 349
    functionDepth: 0
    functionLinenumber: 349
    functionLinenumberEnd: 355
    functionName: BaseLua4::loadStream
    functionSourceFile: /src/pdns/pdns/recursordist/lua-base4.cc
    functionUses: 4
    functionsReached:
    - postLoad
    - executeCode
    linkageType: ''
    returnType: void
    signature: void BaseLua4::loadStream(std::istream &stream, bool doPostLoad)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 357
      start: 357
    functionDepth: 0
    functionLinenumber: 357
    functionLinenumberEnd: 357
    functionName: BaseLua4::~BaseLua4()
    functionSourceFile: /src/pdns/pdns/recursordist/lua-base4.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void BaseLua4::~BaseLua4()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RecursorPacketCache::setMaxSize
      Src: /src/pdns/pdns/recursordist/recpacketcache.hh:62,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - maxsize
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 59
    functionDepth: 1
    functionLinenumber: 59
    functionLinenumberEnd: 63
    functionName: RecursorPacketCache::RecursorPacketCache
    functionSourceFile: /src/pdns/pdns/recursordist/recpacketcache.hh
    functionUses: 0
    functionsReached:
    - RecursorPacketCache::setMaxSize
    linkageType: ''
    returnType: void
    signature: void RecursorPacketCache(size_t maxsize, size_t shards = 1024)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSName::DNSName
      Src: /src/pdns/pdns/recursordist/recpacketcache.hh:68,1
    - Dst: RecursorPacketCache::getResponsePacket
      Src: /src/pdns/pdns/recursordist/recpacketcache.hh:72,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 6
    argNames:
    - tag
    - ' queryPacket'
    - now
    - responsePacket
    - age
    - qhash
    argTypes:
    - unsigned int
    - std::string
    - time_t
    - std::string*
    - uint32_t*
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 65
    functionDepth: 0
    functionLinenumber: 65
    functionLinenumberEnd: 73
    functionName: RecursorPacketCache::getResponsePacket
    functionSourceFile: /src/pdns/pdns/recursordist/recpacketcache.hh
    functionUses: 1
    functionsReached:
    - DNSName::DNSName
    - RecursorPacketCache::getResponsePacket
    linkageType: ''
    returnType: bool
    signature: "bool getResponsePacket(unsigned int tag, const std::string& queryPacket,
      time_t now,\n                         std::string* responsePacket, uint32_t*
      age, uint32_t* qhash)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RecursorPacketCache::getResponsePacket
      Src: /src/pdns/pdns/recursordist/recpacketcache.hh:79,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 9
    argNames:
    - tag
    - ' queryPacket'
    - ' qname'
    - qtype
    - qclass
    - now
    - responsePacket
    - age
    - qhash
    argTypes:
    - unsigned int
    - std::string
    - DNSName
    - uint16_t
    - uint16_t
    - time_t
    - std::string*
    - uint32_t*
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 75
    functionDepth: 0
    functionLinenumber: 75
    functionLinenumberEnd: 80
    functionName: RecursorPacketCache::getResponsePacket
    functionSourceFile: /src/pdns/pdns/recursordist/recpacketcache.hh
    functionUses: 2
    functionsReached:
    - RecursorPacketCache::getResponsePacket
    linkageType: ''
    returnType: bool
    signature: "bool getResponsePacket(unsigned int tag, const std::string& queryPacket,
      const DNSName& qname, uint16_t qtype, uint16_t qclass, time_t now,\n                         std::string*
      responsePacket, uint32_t* age, uint32_t* qhash)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: RecursorPacketCache::size
      Src: /src/pdns/pdns/recursordist/recpacketcache.hh:93,1
    - Dst: RecursorPacketCache::size
      Src: /src/pdns/pdns/recursordist/recpacketcache.hh:94,1
    - Dst: RecursorPacketCache::setShardSizes
      Src: /src/pdns/pdns/recursordist/recpacketcache.hh:96,1
    - Dst: RecursorPacketCache::size
      Src: /src/pdns/pdns/recursordist/recpacketcache.hh:96,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - size
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 91
    functionDepth: 1
    functionLinenumber: 91
    functionLinenumberEnd: 97
    functionName: RecursorPacketCache::setMaxSize
    functionSourceFile: /src/pdns/pdns/recursordist/recpacketcache.hh
    functionUses: 1
    functionsReached:
    - RecursorPacketCache::setShardSizes
    - RecursorPacketCache::size
    linkageType: ''
    returnType: void
    signature: void setMaxSize(size_t size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/recpacketcache.hh:111,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/recpacketcache.hh:112,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/recpacketcache.hh:113,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 1
    argCount: 11
    argNames:
    - ' qname'
    - qtype
    - qclass
    - ' packet'
    - ' query'
    - tcp
    - qhash
    - ttd
    - now
    - tag
    - vstate
    argTypes:
    - DNSName
    - uint16_t
    - uint16_t
    - std::string
    - std::string
    - bool
    - uint32_t
    - time_t
    - time_t
    - uint32_t
    - vState
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 108
    functionDepth: 0
    functionLinenumber: 108
    functionLinenumberEnd: 123
    functionName: RecursorPacketCache::Entry
    functionSourceFile: /src/pdns/pdns/recursordist/recpacketcache.hh
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: "void Entry(DNSName&& qname, uint16_t qtype, uint16_t qclass, std::string&&
      packet, std::string&& query, bool tcp,\n          // NOLINTNEXTLINE(bugprone-easily-swappable-parameters)\n
      \         uint32_t qhash, time_t ttd, time_t now, uint32_t tag, vState vstate)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - now
    argTypes:
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 143
      start: 140
    functionDepth: 0
    functionLinenumber: 140
    functionLinenumberEnd: 143
    functionName: RecursorPacketCache::isStale
    functionSourceFile: /src/pdns/pdns/recursordist/recpacketcache.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool isStale(time_t now) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 148
      start: 145
    functionDepth: 0
    functionLinenumber: 145
    functionLinenumberEnd: 148
    functionName: RecursorPacketCache::getOrigTTL
    functionSourceFile: /src/pdns/pdns/recursordist/recpacketcache.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t getOrigTTL() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 171
      start: 171
    functionDepth: 0
    functionLinenumber: 171
    functionLinenumberEnd: 171
    functionName: RecursorPacketCache::MapCombo
    functionSourceFile: /src/pdns/pdns/recursordist/recpacketcache.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void MapCombo()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 172
      start: 172
    functionDepth: 0
    functionLinenumber: 172
    functionLinenumberEnd: 172
    functionName: ~MapCombo()
    functionSourceFile: /src/pdns/pdns/recursordist/recpacketcache.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~MapCombo()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 173
      start: 173
    functionDepth: 0
    functionLinenumber: 173
    functionLinenumberEnd: 173
    functionName: RecursorPacketCache::MapCombo
    functionSourceFile: /src/pdns/pdns/recursordist/recpacketcache.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void MapCombo(const MapCombo&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 174
      start: 174
    functionDepth: 0
    functionLinenumber: 174
    functionLinenumberEnd: 174
    functionName: RecursorPacketCache::MapCombo
    functionSourceFile: /src/pdns/pdns/recursordist/recpacketcache.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void MapCombo(MapCombo&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 175
      start: 175
    functionDepth: 0
    functionLinenumber: 175
    functionLinenumberEnd: 175
    functionName: '& operator=(const MapCombo&)'
    functionSourceFile: /src/pdns/pdns/recursordist/recpacketcache.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: MapCombo
    signature: MapCombo & operator=(const MapCombo&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 176
      start: 176
    functionDepth: 0
    functionLinenumber: 176
    functionLinenumberEnd: 176
    functionName: '& operator=(MapCombo&&)'
    functionSourceFile: /src/pdns/pdns/recursordist/recpacketcache.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: MapCombo
    signature: MapCombo & operator=(MapCombo&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 186
      start: 186
    functionDepth: 0
    functionLinenumber: 186
    functionLinenumberEnd: 186
    functionName: RecursorPacketCache::invalidate
    functionSourceFile: /src/pdns/pdns/recursordist/recpacketcache.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void invalidate()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 187
      start: 187
    functionDepth: 0
    functionLinenumber: 187
    functionLinenumberEnd: 187
    functionName: RecursorPacketCache::preRemoval
    functionSourceFile: /src/pdns/pdns/recursordist/recpacketcache.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void preRemoval(const Entry& /* entry */)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: try_lock
      Src: /src/pdns/pdns/recursordist/recpacketcache.hh:192,1
    - Dst: auto::owns_lock
      Src: /src/pdns/pdns/recursordist/recpacketcache.hh:193,1
    - Dst: auto::lock
      Src: /src/pdns/pdns/recursordist/recpacketcache.hh:194,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 199
      start: 190
    functionDepth: 0
    functionLinenumber: 190
    functionLinenumberEnd: 199
    functionName: RecursorPacketCache::lock
    functionSourceFile: /src/pdns/pdns/recursordist/recpacketcache.hh
    functionUses: 0
    functionsReached:
    - auto::owns_lock
    - try_lock
    - auto::lock
    linkageType: ''
    returnType: LockGuardedTryHolder<MapCombo::LockedContent>
    signature: LockGuardedTryHolder<MapCombo::LockedContent> lock()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: load
      Src: /src/pdns/pdns/recursordist/recpacketcache.hh:203,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 204
      start: 201
    functionDepth: 0
    functionLinenumber: 201
    functionLinenumberEnd: 204
    functionName: RecursorPacketCache::getEntriesCount
    functionSourceFile: /src/pdns/pdns/recursordist/recpacketcache.hh
    functionUses: 0
    functionsReached:
    - load
    linkageType: ''
    returnType: auto
    signature: auto getEntriesCount() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 209
      start: 206
    functionDepth: 0
    functionLinenumber: 206
    functionLinenumberEnd: 209
    functionName: RecursorPacketCache::incEntriesCount
    functionSourceFile: /src/pdns/pdns/recursordist/recpacketcache.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void incEntriesCount()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 214
      start: 211
    functionDepth: 0
    functionLinenumber: 211
    functionLinenumberEnd: 214
    functionName: RecursorPacketCache::decEntriesCount
    functionSourceFile: /src/pdns/pdns/recursordist/recpacketcache.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void decEntriesCount()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: boost::hash_combine
      Src: /src/pdns/pdns/recursordist/recpacketcache.hh:226,1
    - Dst: boost::hash_combine
      Src: /src/pdns/pdns/recursordist/recpacketcache.hh:227,1
    - Dst: boost::hash_combine
      Src: /src/pdns/pdns/recursordist/recpacketcache.hh:228,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - tag
    - hash
    - tcp
    argTypes:
    - unsigned int
    - uint32_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 230
      start: 223
    functionDepth: 0
    functionLinenumber: 223
    functionLinenumberEnd: 230
    functionName: RecursorPacketCache::combine
    functionSourceFile: /src/pdns/pdns/recursordist/recpacketcache.hh
    functionUses: 0
    functionsReached:
    - boost::hash_combine
    linkageType: ''
    returnType: size_t
    signature: size_t combine(unsigned int tag, uint32_t hash, bool tcp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: at
      Src: /src/pdns/pdns/recursordist/recpacketcache.hh:234,1
    - Dst: combine
      Src: /src/pdns/pdns/recursordist/recpacketcache.hh:234,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/recpacketcache.hh:234,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - tag
    - hash
    - tcp
    argTypes:
    - unsigned int
    - uint32_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 235
      start: 232
    functionDepth: 0
    functionLinenumber: 232
    functionLinenumberEnd: 235
    functionName: '& getMap(unsigned int tag, uint32_t hash, bool tcp)'
    functionSourceFile: /src/pdns/pdns/recursordist/recpacketcache.hh
    functionUses: 0
    functionsReached:
    - at
    - size
    - combine
    linkageType: ''
    returnType: MapCombo
    signature: MapCombo & getMap(unsigned int tag, uint32_t hash, bool tcp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: at
      Src: /src/pdns/pdns/recursordist/recpacketcache.hh:239,1
    - Dst: combine
      Src: /src/pdns/pdns/recursordist/recpacketcache.hh:239,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/recpacketcache.hh:239,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - tag
    - hash
    - tcp
    argTypes:
    - unsigned int
    - uint32_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 240
      start: 237
    functionDepth: 0
    functionLinenumber: 237
    functionLinenumberEnd: 240
    functionName: '& getMap(unsigned int tag, uint32_t hash, bool tcp) const'
    functionSourceFile: /src/pdns/pdns/recursordist/recpacketcache.hh
    functionUses: 0
    functionsReached:
    - at
    - size
    - combine
    linkageType: ''
    returnType: MapCombo
    signature: MapCombo & getMap(unsigned int tag, uint32_t hash, bool tcp) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RecursorPacketCache::lock
      Src: /src/pdns/pdns/recursordist/recpacketcache.cc:19,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - shardSize
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 22
      start: 16
    functionDepth: 1
    functionLinenumber: 16
    functionLinenumberEnd: 22
    functionName: RecursorPacketCache::setShardSizes
    functionSourceFile: /src/pdns/pdns/recursordist/recpacketcache.cc
    functionUses: 1
    functionsReached:
    - RecursorPacketCache::lock
    linkageType: ''
    returnType: void
    signature: void RecursorPacketCache::setShardSizes(size_t shardSize)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RecursorPacketCache::getEntriesCount
      Src: /src/pdns/pdns/recursordist/recpacketcache.cc:28,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 31
      start: 24
    functionDepth: 1
    functionLinenumber: 24
    functionLinenumberEnd: 31
    functionName: RecursorPacketCache::size
    functionSourceFile: /src/pdns/pdns/recursordist/recpacketcache.cc
    functionUses: 1
    functionsReached:
    - RecursorPacketCache::getEntriesCount
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t RecursorPacketCache::size() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RecursorPacketCache::lock
      Src: /src/pdns/pdns/recursordist/recpacketcache.cc:37,1
    - Dst: d_packet::length
      Src: /src/pdns/pdns/recursordist/recpacketcache.cc:39,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 33
    functionDepth: 1
    functionLinenumber: 33
    functionLinenumberEnd: 43
    functionName: RecursorPacketCache::bytes
    functionSourceFile: /src/pdns/pdns/recursordist/recpacketcache.cc
    functionUses: 0
    functionsReached:
    - d_packet::length
    - RecursorPacketCache::lock
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t RecursorPacketCache::bytes()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RecursorPacketCache::lock
      Src: /src/pdns/pdns/recursordist/recpacketcache.cc:49,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 45
    functionDepth: 1
    functionLinenumber: 45
    functionLinenumberEnd: 53
    functionName: RecursorPacketCache::getHits
    functionSourceFile: /src/pdns/pdns/recursordist/recpacketcache.cc
    functionUses: 0
    functionsReached:
    - RecursorPacketCache::lock
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t RecursorPacketCache::getHits()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RecursorPacketCache::lock
      Src: /src/pdns/pdns/recursordist/recpacketcache.cc:59,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 55
    functionDepth: 1
    functionLinenumber: 55
    functionLinenumberEnd: 63
    functionName: RecursorPacketCache::getMisses
    functionSourceFile: /src/pdns/pdns/recursordist/recpacketcache.cc
    functionUses: 0
    functionsReached:
    - RecursorPacketCache::lock
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t RecursorPacketCache::getMisses()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RecursorPacketCache::lock
      Src: /src/pdns/pdns/recursordist/recpacketcache.cc:70,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 65
    functionDepth: 1
    functionLinenumber: 65
    functionLinenumberEnd: 75
    functionName: RecursorPacketCache::stats
    functionSourceFile: /src/pdns/pdns/recursordist/recpacketcache.cc
    functionUses: 0
    functionsReached:
    - RecursorPacketCache::lock
    linkageType: ''
    returnType: pair<uint64_t, uint64_t>
    signature: pair<uint64_t, uint64_t> RecursorPacketCache::stats()
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: RecursorPacketCache::lock
      Src: /src/pdns/pdns/recursordist/recpacketcache.cc:81,1
    - Dst: auto::d_map::get
      Src: /src/pdns/pdns/recursordist/recpacketcache.cc:82,1
    - Dst: lower_bound
      Src: /src/pdns/pdns/recursordist/recpacketcache.cc:83,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/recpacketcache.cc:83,1
    - Dst: auto::d_name::isPartOf
      Src: /src/pdns/pdns/recursordist/recpacketcache.cc:85,1
    - Dst: erase
      Src: /src/pdns/pdns/recursordist/recpacketcache.cc:95,1
    - Dst: RecursorPacketCache::decEntriesCount
      Src: /src/pdns/pdns/recursordist/recpacketcache.cc:96,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 21
    argCount: 3
    argNames:
    - ' name'
    - qtype
    - subtree
    argTypes:
    - DNSName
    - uint16_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 77
    functionDepth: 1
    functionLinenumber: 77
    functionLinenumberEnd: 105
    functionName: RecursorPacketCache::doWipePacketCache
    functionSourceFile: /src/pdns/pdns/recursordist/recpacketcache.cc
    functionUses: 0
    functionsReached:
    - auto::d_name::isPartOf
    - lower_bound
    - RecursorPacketCache::decEntriesCount
    - end
    - RecursorPacketCache::lock
    - auto::d_map::get
    - erase
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t RecursorPacketCache::doWipePacketCache(const DNSName& name,
      uint16_t qtype, bool subtree)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: isWildcard
      Src: /src/pdns/pdns/recursordist/recpacketcache.cc:111,1
    - Dst: DNSName::chopOff
      Src: /src/pdns/pdns/recursordist/recpacketcache.cc:113,1
    - Dst: RecursorPacketCache::doWipePacketCache
      Src: /src/pdns/pdns/recursordist/recpacketcache.cc:114,1
    - Dst: RecursorPacketCache::doWipePacketCache
      Src: /src/pdns/pdns/recursordist/recpacketcache.cc:118,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - ' names'
    argTypes:
    - std::unordered_set<DNSName>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 122
      start: 107
    functionDepth: 1
    functionLinenumber: 107
    functionLinenumberEnd: 122
    functionName: RecursorPacketCache::doWipePacketCache
    functionSourceFile: /src/pdns/pdns/recursordist/recpacketcache.cc
    functionUses: 1
    functionsReached:
    - isWildcard
    - RecursorPacketCache::doWipePacketCache
    - DNSName::chopOff
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t RecursorPacketCache::doWipePacketCache(const std::unordered_set<DNSName>&
      names)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: queryMatches
      Src: /src/pdns/pdns/recursordist/recpacketcache.cc:133,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 5
    argCount: 5
    argNames:
    - ' iter'
    - ' queryPacket'
    - ' qname'
    - qtype
    - qclass
    argTypes:
    - packetCache_t::index<HashTag>::type::iterator
    - std::string
    - DNSName
    - uint16_t
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 134
      start: 126
    functionDepth: 0
    functionLinenumber: 126
    functionLinenumberEnd: 134
    functionName: RecursorPacketCache::qrMatch
    functionSourceFile: /src/pdns/pdns/recursordist/recpacketcache.cc
    functionUses: 0
    functionsReached:
    - queryMatches
    linkageType: ''
    returnType: bool
    signature: bool RecursorPacketCache::qrMatch(const packetCache_t::index<HashTag>::type::iterator&
      iter, const std::string& queryPacket, const DNSName& qname, uint16_t qtype,
      uint16_t qclass)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: RecursorPacketCache::qrMatch
      Src: /src/pdns/pdns/recursordist/recpacketcache.cc:140,1
    - Dst: static_cast<uint32_t>
      Src: /src/pdns/pdns/recursordist/recpacketcache.cc:146,1
    - Dst: static_cast<uint32_t>
      Src: /src/pdns/pdns/recursordist/recpacketcache.cc:148,1
    - Dst: taskQTypeIsSupported
      Src: /src/pdns/pdns/recursordist/recpacketcache.cc:149,1
    - Dst: auto::d_packet::data
      Src: /src/pdns/pdns/recursordist/recpacketcache.cc:150,1
    - Dst: dnsheader_aligned::get
      Src: /src/pdns/pdns/recursordist/recpacketcache.cc:151,1
    - Dst: auto::getOrigTTL
      Src: /src/pdns/pdns/recursordist/recpacketcache.cc:153,1
    - Dst: pushAlmostExpiredTask
      Src: /src/pdns/pdns/recursordist/recpacketcache.cc:157,1
    - Dst: Netmask
      Src: /src/pdns/pdns/recursordist/recpacketcache.cc:157,1
    - Dst: std::string*::replace
      Src: /src/pdns/pdns/recursordist/recpacketcache.cc:162,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/recpacketcache.cc:162,1
    - Dst: wirelength
      Src: /src/pdns/pdns/recursordist/recpacketcache.cc:165,1
    - Dst: std::string*::size
      Src: /src/pdns/pdns/recursordist/recpacketcache.cc:166,1
    - Dst: std::string*::replace
      Src: /src/pdns/pdns/recursordist/recpacketcache.cc:167,1
    - Dst: moveCacheItemToBack
      Src: /src/pdns/pdns/recursordist/recpacketcache.cc:171,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 36
    argCount: 11
    argNames:
    - ' shard'
    - range
    - ' queryPacket'
    - ' qname'
    - qtype
    - qclass
    - now
    - responsePacket
    - age
    - valState
    - pbdata
    argTypes:
    - MapCombo::LockedContent
    - std::pair<packetCache_t::index<HashTag>::type::iterator, packetCache_t::index<HashTag>::type::iterator>
    - std::string
    - DNSName
    - uint16_t
    - uint16_t
    - time_t
    - std::string*
    - uint32_t*
    - vState*
    - OptPBData*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 191
      start: 136
    functionDepth: 1
    functionLinenumber: 136
    functionLinenumberEnd: 191
    functionName: RecursorPacketCache::checkResponseMatches
    functionSourceFile: /src/pdns/pdns/recursordist/recpacketcache.cc
    functionUses: 0
    functionsReached:
    - Netmask
    - auto::getOrigTTL
    - dnsheader_aligned::get
    - taskQTypeIsSupported
    - wirelength
    - RecursorPacketCache::qrMatch
    - static_cast<uint32_t>
    - moveCacheItemToBack
    - pushAlmostExpiredTask
    - c_str
    - std::string*::replace
    - auto::d_packet::data
    - std::string*::size
    linkageType: ''
    returnType: bool
    signature: bool RecursorPacketCache::checkResponseMatches(MapCombo::LockedContent&
      shard, std::pair<packetCache_t::index<HashTag>::type::iterator, packetCache_t::index<HashTag>::type::iterator>
      range, const std::string& queryPacket, const DNSName& qname, uint16_t qtype,
      uint16_t qclass, time_t now, std::string* responsePacket, uint32_t* age, vState*
      valState, OptPBData* pbdata)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: canHashPacket
      Src: /src/pdns/pdns/recursordist/recpacketcache.cc:196,1
    - Dst: getMap
      Src: /src/pdns/pdns/recursordist/recpacketcache.cc:197,1
    - Dst: RecursorPacketCache::lock
      Src: /src/pdns/pdns/recursordist/recpacketcache.cc:198,1
    - Dst: auto::d_map::get
      Src: /src/pdns/pdns/recursordist/recpacketcache.cc:199,1
    - Dst: equal_range
      Src: /src/pdns/pdns/recursordist/recpacketcache.cc:200,1
    - Dst: std::tie
      Src: /src/pdns/pdns/recursordist/recpacketcache.cc:200,1
    - Dst: RecursorPacketCache::checkResponseMatches
      Src: /src/pdns/pdns/recursordist/recpacketcache.cc:207,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 12
    argNames:
    - tag
    - ' queryPacket'
    - ' qname'
    - qtype
    - qclass
    - now
    - responsePacket
    - age
    - valState
    - qhash
    - pbdata
    - tcp
    argTypes:
    - unsigned int
    - std::string
    - DNSName
    - uint16_t
    - uint16_t
    - time_t
    - std::string*
    - uint32_t*
    - vState*
    - uint32_t*
    - OptPBData*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 208
      start: 193
    functionDepth: 2
    functionLinenumber: 193
    functionLinenumberEnd: 208
    functionName: RecursorPacketCache::getResponsePacket
    functionSourceFile: /src/pdns/pdns/recursordist/recpacketcache.cc
    functionUses: 2
    functionsReached:
    - canHashPacket
    - equal_range
    - getMap
    - RecursorPacketCache::checkResponseMatches
    - RecursorPacketCache::lock
    - auto::d_map::get
    - std::tie
    linkageType: ''
    returnType: bool
    signature: "bool RecursorPacketCache::getResponsePacket(unsigned int tag, const
      std::string& queryPacket, const DNSName& qname, uint16_t qtype, uint16_t qclass,
      time_t now,\n                                            std::string* responsePacket,
      uint32_t* age, vState* valState, uint32_t* qhash, OptPBData* pbdata, bool tcp)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: canHashPacket
      Src: /src/pdns/pdns/recursordist/recpacketcache.cc:213,1
    - Dst: getMap
      Src: /src/pdns/pdns/recursordist/recpacketcache.cc:214,1
    - Dst: RecursorPacketCache::lock
      Src: /src/pdns/pdns/recursordist/recpacketcache.cc:215,1
    - Dst: auto::d_map::get
      Src: /src/pdns/pdns/recursordist/recpacketcache.cc:216,1
    - Dst: equal_range
      Src: /src/pdns/pdns/recursordist/recpacketcache.cc:217,1
    - Dst: std::tie
      Src: /src/pdns/pdns/recursordist/recpacketcache.cc:217,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/recpacketcache.cc:224,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/recpacketcache.cc:224,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/recursordist/recpacketcache.cc:224,1
    - Dst: length
      Src: /src/pdns/pdns/recursordist/recpacketcache.cc:224,1
    - Dst: RecursorPacketCache::checkResponseMatches
      Src: /src/pdns/pdns/recursordist/recpacketcache.cc:226,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 12
    argNames:
    - tag
    - ' queryPacket'
    - ' qname'
    - qtype
    - qclass
    - now
    - responsePacket
    - age
    - valState
    - qhash
    - pbdata
    - tcp
    argTypes:
    - unsigned int
    - std::string
    - DNSName
    - uint16_t*
    - uint16_t*
    - time_t
    - std::string*
    - uint32_t*
    - vState*
    - uint32_t*
    - OptPBData*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 227
      start: 210
    functionDepth: 2
    functionLinenumber: 210
    functionLinenumberEnd: 227
    functionName: RecursorPacketCache::getResponsePacket
    functionSourceFile: /src/pdns/pdns/recursordist/recpacketcache.cc
    functionUses: 2
    functionsReached:
    - canHashPacket
    - length
    - equal_range
    - getMap
    - DNSName
    - RecursorPacketCache::checkResponseMatches
    - RecursorPacketCache::lock
    - auto::d_map::get
    - std::tie
    - c_str
    - static_cast<int>
    linkageType: ''
    returnType: bool
    signature: "bool RecursorPacketCache::getResponsePacket(unsigned int tag, const
      std::string& queryPacket, DNSName& qname, uint16_t* qtype, uint16_t* qclass,
      time_t now,\n                                            std::string* responsePacket,
      uint32_t* age, vState* valState, uint32_t* qhash, OptPBData* pbdata, bool tcp)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: getMap
      Src: /src/pdns/pdns/recursordist/recpacketcache.cc:231,1
    - Dst: RecursorPacketCache::lock
      Src: /src/pdns/pdns/recursordist/recpacketcache.cc:232,1
    - Dst: auto::d_map::get
      Src: /src/pdns/pdns/recursordist/recpacketcache.cc:233,1
    - Dst: equal_range
      Src: /src/pdns/pdns/recursordist/recpacketcache.cc:234,1
    - Dst: std::tie
      Src: /src/pdns/pdns/recursordist/recpacketcache.cc:234,1
    - Dst: moveCacheItemToBack
      Src: /src/pdns/pdns/recursordist/recpacketcache.cc:242,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/recpacketcache.cc:243,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/recpacketcache.cc:244,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/recpacketcache.cc:250,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/recpacketcache.cc:256,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/recpacketcache.cc:256,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/recpacketcache.cc:256,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/recpacketcache.cc:258,1
    - Dst: auto::d_map::insert
      Src: /src/pdns/pdns/recursordist/recpacketcache.cc:261,1
    - Dst: RecursorPacketCache::incEntriesCount
      Src: /src/pdns/pdns/recursordist/recpacketcache.cc:262,1
    - Dst: auto::d_map::size
      Src: /src/pdns/pdns/recursordist/recpacketcache.cc:264,1
    - Dst: auto::d_map::get
      Src: /src/pdns/pdns/recursordist/recpacketcache.cc:265,1
    - Dst: erase
      Src: /src/pdns/pdns/recursordist/recpacketcache.cc:266,1
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/recpacketcache.cc:266,1
    - Dst: RecursorPacketCache::decEntriesCount
      Src: /src/pdns/pdns/recursordist/recpacketcache.cc:267,1
    - Dst: assert
      Src: /src/pdns/pdns/recursordist/recpacketcache.cc:269,1
    - Dst: RecursorPacketCache::getEntriesCount
      Src: /src/pdns/pdns/recursordist/recpacketcache.cc:269,1
    - Dst: auto::d_map::size
      Src: /src/pdns/pdns/recursordist/recpacketcache.cc:269,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 27
    argCount: 12
    argNames:
    - tag
    - qhash
    - ' query'
    - ' qname'
    - qtype
    - qclass
    - ' responsePacket'
    - now
    - ttl
    - ' valState'
    - ' pbdata'
    - tcp
    argTypes:
    - unsigned int
    - uint32_t
    - std::string
    - DNSName
    - uint16_t
    - uint16_t
    - std::string
    - time_t
    - uint32_t
    - vState
    - OptPBData
    - bool
    assertStmts:
    - condition: (map.getEntriesCount() == shard->d_map.size())
      pos:
        line_end: 268
        line_start: 268
        source_file: /src/pdns/pdns/recursordist/recpacketcache.cc
    constantsTouched: []
    func_position:
      end: 270
      start: 229
    functionDepth: 1
    functionLinenumber: 229
    functionLinenumberEnd: 270
    functionName: RecursorPacketCache::insertResponsePacket
    functionSourceFile: /src/pdns/pdns/recursordist/recpacketcache.cc
    functionUses: 0
    functionsReached:
    - RecursorPacketCache::getEntriesCount
    - std::move
    - equal_range
    - auto::d_map::size
    - auto::d_map::insert
    - getMap
    - DNSName
    - RecursorPacketCache::decEntriesCount
    - assert
    - RecursorPacketCache::lock
    - moveCacheItemToBack
    - auto::d_map::get
    - std::tie
    - begin
    - RecursorPacketCache::incEntriesCount
    - erase
    linkageType: ''
    returnType: void
    signature: void RecursorPacketCache::insertResponsePacket(unsigned int tag, uint32_t
      qhash, std::string&& query, const DNSName& qname, uint16_t qtype, uint16_t qclass,
      std::string&& responsePacket, time_t now, uint32_t ttl, const vState& valState,
      OptPBData&& pbdata, bool tcp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RecursorPacketCache::size
      Src: /src/pdns/pdns/recursordist/recpacketcache.cc:274,1
    - Dst: pruneMutexCollectionsVector
      Src: /src/pdns/pdns/recursordist/recpacketcache.cc:275,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - now
    - maxSize
    argTypes:
    - time_t
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 276
      start: 272
    functionDepth: 0
    functionLinenumber: 272
    functionLinenumberEnd: 276
    functionName: RecursorPacketCache::doPruneTo
    functionSourceFile: /src/pdns/pdns/recursordist/recpacketcache.cc
    functionUses: 0
    functionsReached:
    - RecursorPacketCache::size
    - pruneMutexCollectionsVector
    linkageType: ''
    returnType: void
    signature: void RecursorPacketCache::doPruneTo(time_t now, size_t maxSize)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dup
      Src: /src/pdns/pdns/recursordist/recpacketcache.cc:280,1
    - Dst: pdns::UniqueFilePtr
      Src: /src/pdns/pdns/recursordist/recpacketcache.cc:284,1
    - Dst: fdopen
      Src: /src/pdns/pdns/recursordist/recpacketcache.cc:284,1
    - Dst: close
      Src: /src/pdns/pdns/recursordist/recpacketcache.cc:286,1
    - Dst: time
      Src: /src/pdns/pdns/recursordist/recpacketcache.cc:291,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/recursordist/recpacketcache.cc:294,1
    - Dst: RecursorPacketCache::lock
      Src: /src/pdns/pdns/recursordist/recpacketcache.cc:299,1
    - Dst: auto::d_map::get
      Src: /src/pdns/pdns/recursordist/recpacketcache.cc:300,1
    - Dst: auto::d_map::size
      Src: /src/pdns/pdns/recursordist/recpacketcache.cc:301,1
    - Dst: fprintf
      Src: /src/pdns/pdns/recursordist/recpacketcache.cc:302,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/recpacketcache.cc:302,1
    - Dst: std::min
      Src: /src/pdns/pdns/recursordist/recpacketcache.cc:303,1
    - Dst: std::max
      Src: /src/pdns/pdns/recursordist/recpacketcache.cc:304,1
    - Dst: fprintf
      Src: /src/pdns/pdns/recursordist/recpacketcache.cc:310,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/recpacketcache.cc:310,1
    - Dst: d_name::toString
      Src: /src/pdns/pdns/recursordist/recpacketcache.cc:310,1
    - Dst: static_cast<int64_t>
      Src: /src/pdns/pdns/recursordist/recpacketcache.cc:310,1
    - Dst: DNSRecordContent::NumberToType
      Src: /src/pdns/pdns/recursordist/recpacketcache.cc:310,1
    - Dst: fprintf
      Src: /src/pdns/pdns/recursordist/recpacketcache.cc:313,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/recpacketcache.cc:313,1
    - Dst: d_name::empty
      Src: /src/pdns/pdns/recursordist/recpacketcache.cc:313,1
    - Dst: d_name::toString
      Src: /src/pdns/pdns/recursordist/recpacketcache.cc:313,1
    - Dst: fprintf
      Src: /src/pdns/pdns/recursordist/recpacketcache.cc:317,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/recpacketcache.cc:317,1
    - Dst: RecursorPacketCache::size
      Src: /src/pdns/pdns/recursordist/recpacketcache.cc:317,1
    - Dst: RecursorPacketCache::size
      Src: /src/pdns/pdns/recursordist/recpacketcache.cc:317,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 23
    argCount: 1
    argNames:
    - file
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 319
      start: 278
    functionDepth: 1
    functionLinenumber: 278
    functionLinenumberEnd: 319
    functionName: RecursorPacketCache::doDump
    functionSourceFile: /src/pdns/pdns/recursordist/recpacketcache.cc
    functionUses: 0
    functionsReached:
    - pdns::max
    - fprintf
    - auto::get
    - d_name::toString
    - RecursorPacketCache::size
    - d_name::empty
    - time
    - std::min
    - auto::d_map::size
    - dup
    - static_cast<int64_t>
    - RecursorPacketCache::lock
    - auto::d_map::get
    - std::max
    - pdns::UniqueFilePtr
    - fdopen
    - DNSRecordContent::NumberToType
    - close
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t RecursorPacketCache::doDump(int file)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 30
      start: 30
    functionDepth: 0
    functionLinenumber: 30
    functionLinenumberEnd: 30
    functionName: SensitiveData::SensitiveData
    functionSourceFile: /src/pdns/pdns/recursordist/credentials.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void SensitiveData(const SensitiveData&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 31
      start: 31
    functionDepth: 0
    functionLinenumber: 31
    functionLinenumberEnd: 31
    functionName: SensitiveData::SensitiveData
    functionSourceFile: /src/pdns/pdns/recursordist/credentials.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void SensitiveData(SensitiveData&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 32
      start: 32
    functionDepth: 0
    functionLinenumber: 32
    functionLinenumberEnd: 32
    functionName: '& operator=(const SensitiveData&)'
    functionSourceFile: /src/pdns/pdns/recursordist/credentials.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: SensitiveData
    signature: SensitiveData & operator=(const SensitiveData&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 39
    functionDepth: 0
    functionLinenumber: 39
    functionLinenumberEnd: 42
    functionName: '& getString() const'
    functionSourceFile: /src/pdns/pdns/recursordist/credentials.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string & getString() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 46
    functionName: '& getString()'
    functionSourceFile: /src/pdns/pdns/recursordist/credentials.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string & getString()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 63
    functionDepth: 0
    functionLinenumber: 63
    functionLinenumberEnd: 63
    functionName: CredentialsHolder::CredentialsHolder
    functionSourceFile: /src/pdns/pdns/recursordist/credentials.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void CredentialsHolder(CredentialsHolder&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 64
    functionDepth: 0
    functionLinenumber: 64
    functionLinenumberEnd: 64
    functionName: '& operator=(CredentialsHolder&&)'
    functionSourceFile: /src/pdns/pdns/recursordist/credentials.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: CredentialsHolder
    signature: CredentialsHolder & operator=(CredentialsHolder&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 73
    functionDepth: 0
    functionLinenumber: 73
    functionLinenumberEnd: 73
    functionName: CredentialsHolder::CredentialsHolder
    functionSourceFile: /src/pdns/pdns/recursordist/credentials.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void CredentialsHolder(const CredentialsHolder&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 74
    functionDepth: 0
    functionLinenumber: 74
    functionLinenumberEnd: 74
    functionName: '& operator=(const CredentialsHolder&)'
    functionSourceFile: /src/pdns/pdns/recursordist/credentials.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: CredentialsHolder
    signature: CredentialsHolder & operator=(const CredentialsHolder&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 78
    functionDepth: 0
    functionLinenumber: 78
    functionLinenumberEnd: 81
    functionName: CredentialsHolder::wasHashed
    functionSourceFile: /src/pdns/pdns/recursordist/credentials.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool wasHashed() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 83
    functionDepth: 0
    functionLinenumber: 83
    functionLinenumberEnd: 86
    functionName: CredentialsHolder::isHashed
    functionSourceFile: /src/pdns/pdns/recursordist/credentials.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool isHashed() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: FDMultiplexer::getMultiplexerMap
      Src: /src/pdns/pdns/recursordist/pollmplexer.cc:15,1
    - Dst: second
      Src: /src/pdns/pdns/recursordist/pollmplexer.cc:17,1
    - Dst: std::min
      Src: /src/pdns/pdns/recursordist/pollmplexer.cc:17,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - maxEventsHint
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 26
      start: 12
    functionDepth: 0
    functionLinenumber: 12
    functionLinenumberEnd: 26
    functionName: FDMultiplexer::getMultiplexerSilent
    functionSourceFile: /src/pdns/pdns/recursordist/pollmplexer.cc
    functionUses: 20
    functionsReached:
    - FDMultiplexer::getMultiplexerMap
    - std::min
    - second
    linkageType: ''
    returnType: FDMultiplexer
    signature: FDMultiplexer * FDMultiplexer::getMultiplexerSilent(unsigned int maxEventsHint)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 32
      start: 31
    functionDepth: 0
    functionLinenumber: 31
    functionLinenumberEnd: 32
    functionName: PollFDMultiplexer::PollFDMultiplexer
    functionSourceFile: /src/pdns/pdns/recursordist/pollmplexer.cc
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void PollFDMultiplexer(unsigned int /* maxEventsHint */)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 40
    functionDepth: 0
    functionLinenumber: 40
    functionLinenumberEnd: 43
    functionName: PollFDMultiplexer::getName
    functionSourceFile: /src/pdns/pdns/recursordist/pollmplexer.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: string
    signature: string getName() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PollFDMultiplexer::PollFDMultiplexer
      Src: /src/pdns/pdns/recursordist/pollmplexer.cc:52,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - maxEventsHint
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 50
    functionDepth: 0
    functionLinenumber: 50
    functionLinenumberEnd: 53
    functionName: make
    functionSourceFile: /src/pdns/pdns/recursordist/pollmplexer.cc
    functionUses: 61
    functionsReached:
    - PollFDMultiplexer::PollFDMultiplexer
    linkageType: ''
    returnType: FDMultiplexer
    signature: FDMultiplexer * make(unsigned int maxEventsHint)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: FDMultiplexer::getMultiplexerMap
      Src: /src/pdns/pdns/recursordist/pollmplexer.cc:59,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 57
    functionDepth: 0
    functionLinenumber: 57
    functionLinenumberEnd: 60
    functionName: RegisterOurselves
    functionSourceFile: /src/pdns/pdns/recursordist/pollmplexer.cc
    functionUses: 0
    functionsReached:
    - FDMultiplexer::getMultiplexerMap
    linkageType: ''
    returnType: void
    signature: void RegisterOurselves()
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/pollmplexer.cc:73,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - kind
    argTypes:
    - FDMultiplexer::EventKind
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 63
    functionDepth: 0
    functionLinenumber: 63
    functionLinenumberEnd: 74
    functionName: convertEventKind
    functionSourceFile: /src/pdns/pdns/recursordist/pollmplexer.cc
    functionUses: 14
    functionsReached:
    - std::runtime_error
    linkageType: ''
    returnType: int
    signature: int convertEventKind(FDMultiplexer::EventKind kind)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: count
      Src: /src/pdns/pdns/recursordist/pollmplexer.cc:78,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/pollmplexer.cc:83,1
    - Dst: convertEventKind
      Src: /src/pdns/pdns/recursordist/pollmplexer.cc:84,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - fd
    - kind
    argTypes:
    - int
    - FDMultiplexer::EventKind
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 76
    functionDepth: 0
    functionLinenumber: 76
    functionLinenumberEnd: 85
    functionName: PollFDMultiplexer::addFD
    functionSourceFile: /src/pdns/pdns/recursordist/pollmplexer.cc
    functionUses: 0
    functionsReached:
    - at
    - convertEventKind
    - count
    linkageType: ''
    returnType: void
    signature: void PollFDMultiplexer::addFD(int fd, FDMultiplexer::EventKind kind)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: erase
      Src: /src/pdns/pdns/recursordist/pollmplexer.cc:89,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - fd
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 87
    functionDepth: 0
    functionLinenumber: 87
    functionLinenumberEnd: 90
    functionName: PollFDMultiplexer::removeFD
    functionSourceFile: /src/pdns/pdns/recursordist/pollmplexer.cc
    functionUses: 0
    functionsReached:
    - erase
    linkageType: ''
    returnType: void
    signature: void PollFDMultiplexer::removeFD(int fd, FDMultiplexer::EventKind)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::vector::reserve
      Src: /src/pdns/pdns/recursordist/pollmplexer.cc:95,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/pollmplexer.cc:95,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/recursordist/pollmplexer.cc:97,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 92
    functionDepth: 0
    functionLinenumber: 92
    functionLinenumberEnd: 101
    functionName: PollFDMultiplexer::preparePollFD
    functionSourceFile: /src/pdns/pdns/recursordist/pollmplexer.cc
    functionUses: 4
    functionsReached:
    - std::vector::reserve
    - std::vector::push_back
    - size
    linkageType: ''
    returnType: vector<struct pollfd>
    signature: vector<struct pollfd> PollFDMultiplexer::preparePollFD() const
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: PollFDMultiplexer::preparePollFD
      Src: /src/pdns/pdns/recursordist/pollmplexer.cc:105,1
    - Dst: auto::empty
      Src: /src/pdns/pdns/recursordist/pollmplexer.cc:106,1
    - Dst: poll
      Src: /src/pdns/pdns/recursordist/pollmplexer.cc:110,1
    - Dst: auto::size
      Src: /src/pdns/pdns/recursordist/pollmplexer.cc:110,1
    - Dst: FDMultiplexerException
      Src: /src/pdns/pdns/recursordist/pollmplexer.cc:113,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/pollmplexer.cc:113,1
    - Dst: push_back
      Src: /src/pdns/pdns/recursordist/pollmplexer.cc:118,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 11
    argCount: 2
    argNames:
    - ' fds'
    - timeout
    argTypes:
    - std::vector<int>
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 103
    functionDepth: 0
    functionLinenumber: 103
    functionLinenumberEnd: 121
    functionName: PollFDMultiplexer::getAvailableFDs
    functionSourceFile: /src/pdns/pdns/recursordist/pollmplexer.cc
    functionUses: 0
    functionsReached:
    - push_back
    - stringerror
    - PollFDMultiplexer::preparePollFD
    - poll
    - FDMultiplexerException
    - auto::size
    - auto::empty
    linkageType: ''
    returnType: void
    signature: void PollFDMultiplexer::getAvailableFDs(std::vector<int>& fds, int
      timeout)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: PollFDMultiplexer::preparePollFD
      Src: /src/pdns/pdns/recursordist/pollmplexer.cc:127,1
    - Dst: auto::empty
      Src: /src/pdns/pdns/recursordist/pollmplexer.cc:128,1
    - Dst: gettimeofday
      Src: /src/pdns/pdns/recursordist/pollmplexer.cc:129,1
    - Dst: poll
      Src: /src/pdns/pdns/recursordist/pollmplexer.cc:133,1
    - Dst: auto::size
      Src: /src/pdns/pdns/recursordist/pollmplexer.cc:133,1
    - Dst: gettimeofday
      Src: /src/pdns/pdns/recursordist/pollmplexer.cc:134,1
    - Dst: FDMultiplexerException
      Src: /src/pdns/pdns/recursordist/pollmplexer.cc:137,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/pollmplexer.cc:137,1
    - Dst: find
      Src: /src/pdns/pdns/recursordist/pollmplexer.cc:143,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/pollmplexer.cc:144,1
    - Dst: d_callback
      Src: /src/pdns/pdns/recursordist/pollmplexer.cc:145,1
    - Dst: find
      Src: /src/pdns/pdns/recursordist/pollmplexer.cc:151,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/pollmplexer.cc:152,1
    - Dst: d_callback
      Src: /src/pdns/pdns/recursordist/pollmplexer.cc:153,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 23
    argCount: 2
    argNames:
    - now
    - timeout
    argTypes:
    - struct timeval*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 160
      start: 123
    functionDepth: 0
    functionLinenumber: 123
    functionLinenumberEnd: 160
    functionName: PollFDMultiplexer::run
    functionSourceFile: /src/pdns/pdns/recursordist/pollmplexer.cc
    functionUses: 4
    functionsReached:
    - stringerror
    - end
    - PollFDMultiplexer::preparePollFD
    - d_callback
    - find
    - poll
    - gettimeofday
    - FDMultiplexerException
    - auto::size
    - auto::empty
    linkageType: ''
    returnType: int
    signature: int PollFDMultiplexer::run(struct timeval* now, int timeout)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: boost::any_cast<Socket*>
      Src: /src/pdns/pdns/recursordist/pollmplexer.cc:167,1
    - Dst: Socket*::recvFrom
      Src: /src/pdns/pdns/recursordist/pollmplexer.cc:170,1
    - Dst: string::size
      Src: /src/pdns/pdns/recursordist/pollmplexer.cc:171,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - fd
    - ' parameter'
    argTypes:
    - int
    - boost::any
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 172
      start: 164
    functionDepth: 0
    functionLinenumber: 164
    functionLinenumberEnd: 172
    functionName: acceptData
    functionSourceFile: /src/pdns/pdns/recursordist/pollmplexer.cc
    functionUses: 0
    functionsReached:
    - string::size
    - boost::any_cast<Socket*>
    - Socket*::recvFrom
    linkageType: ''
    returnType: void
    signature: void acceptData(int fd, boost::any& parameter)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Socket::bind
      Src: /src/pdns/pdns/recursordist/pollmplexer.cc:180,1
    - Dst: PollFDMultiplexer::PollFDMultiplexer
      Src: /src/pdns/pdns/recursordist/pollmplexer.cc:182,1
    - Dst: PollFDMultiplexer::addReadFD
      Src: /src/pdns/pdns/recursordist/pollmplexer.cc:184,1
    - Dst: Socket::getHandle
      Src: /src/pdns/pdns/recursordist/pollmplexer.cc:184,1
    - Dst: PollFDMultiplexer::run
      Src: /src/pdns/pdns/recursordist/pollmplexer.cc:187,1
    - Dst: PollFDMultiplexer::removeReadFD
      Src: /src/pdns/pdns/recursordist/pollmplexer.cc:189,1
    - Dst: Socket::getHandle
      Src: /src/pdns/pdns/recursordist/pollmplexer.cc:189,1
    - Dst: PollFDMultiplexer::removeReadFD
      Src: /src/pdns/pdns/recursordist/pollmplexer.cc:190,1
    - Dst: Socket::getHandle
      Src: /src/pdns/pdns/recursordist/pollmplexer.cc:190,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 191
      start: 175
    functionDepth: 0
    functionLinenumber: 175
    functionLinenumberEnd: 191
    functionName: main
    functionSourceFile: /src/pdns/pdns/recursordist/pollmplexer.cc
    functionUses: 43
    functionsReached:
    - PollFDMultiplexer::removeReadFD
    - Socket::getHandle
    - PollFDMultiplexer::addReadFD
    - PollFDMultiplexer::run
    - PollFDMultiplexer::PollFDMultiplexer
    - Socket::bind
    linkageType: ''
    returnType: int
    signature: int main()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:140,1
    - Dst: std::string::empty
      Src: /src/pdns/pdns/recursordist/rec-main.cc:142,1
    - Dst: isSettingThreadCPUAffinitySupported
      Src: /src/pdns/pdns/recursordist/rec-main.cc:142,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/recursordist/rec-main.cc:143,1
    - Dst: stringtok
      Src: /src/pdns/pdns/recursordist/rec-main.cc:149,1
    - Dst: find
      Src: /src/pdns/pdns/recursordist/rec-main.cc:152,1
    - Dst: splitField
      Src: /src/pdns/pdns/recursordist/rec-main.cc:157,1
    - Dst: Utility::trim
      Src: /src/pdns/pdns/recursordist/rec-main.cc:158,1
    - Dst: Utility::trim
      Src: /src/pdns/pdns/recursordist/rec-main.cc:159,1
    - Dst: pdns::checked_stoi<unsigned int>
      Src: /src/pdns/pdns/recursordist/rec-main.cc:161,1
    - Dst: stringtok
      Src: /src/pdns/pdns/recursordist/rec-main.cc:164,1
    - Dst: std::stoi
      Src: /src/pdns/pdns/recursordist/rec-main.cc:167,1
    - Dst: insert
      Src: /src/pdns/pdns/recursordist/rec-main.cc:169,1
    - Dst: Logr::log_t::error
      Src: /src/pdns/pdns/recursordist/rec-main.cc:173,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/rec-main.cc:173,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-main.cc:173,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 20
    argCount: 1
    argNames:
    - log
    argTypes:
    - Logr::log_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 178
      start: 136
    functionDepth: 1
    functionLinenumber: 136
    functionLinenumberEnd: 178
    functionName: parseCPUMap
    functionSourceFile: /src/pdns/pdns/recursordist/rec-main.cc
    functionUses: 0
    functionsReached:
    - Utility::trim
    - stringtok
    - isSettingThreadCPUAffinitySupported
    - Logr::log_t::info
    - splitField
    - Logging::Loggable
    - what
    - std::stoi
    - Logr::log_t::error
    - pdns::checked_stoi<unsigned int>
    - insert
    - std::string::empty
    - arg
    - find
    linkageType: ''
    returnType: std::map<unsigned int, std::set<int>>
    signature: std::map<unsigned int, std::set<int>> parseCPUMap(Logr::log_t log)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: find
      Src: /src/pdns/pdns/recursordist/rec-main.cc:182,1
    - Dst: cend
      Src: /src/pdns/pdns/recursordist/rec-main.cc:183,1
    - Dst: mapThreadToCPUList
      Src: /src/pdns/pdns/recursordist/rec-main.cc:186,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/recursordist/rec-main.cc:188,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-main.cc:188,1
    - Dst: Logging::IterLoggable
      Src: /src/pdns/pdns/recursordist/rec-main.cc:188,1
    - Dst: second::begin
      Src: /src/pdns/pdns/recursordist/rec-main.cc:188,1
    - Dst: second::end
      Src: /src/pdns/pdns/recursordist/rec-main.cc:188,1
    - Dst: Logr::log_t::error
      Src: /src/pdns/pdns/recursordist/rec-main.cc:191,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-main.cc:191,1
    - Dst: Logging::IterLoggable
      Src: /src/pdns/pdns/recursordist/rec-main.cc:191,1
    - Dst: second::begin
      Src: /src/pdns/pdns/recursordist/rec-main.cc:191,1
    - Dst: second::end
      Src: /src/pdns/pdns/recursordist/rec-main.cc:191,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 4
    argNames:
    - ' cpusMap'
    - n
    - tid
    - log
    argTypes:
    - std::map<unsigned int, std::set<int>>
    - unsigned int
    - pthread_t
    - Logr::log_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 193
      start: 180
    functionDepth: 0
    functionLinenumber: 180
    functionLinenumberEnd: 193
    functionName: setCPUMap
    functionSourceFile: /src/pdns/pdns/recursordist/rec-main.cc
    functionUses: 0
    functionsReached:
    - mapThreadToCPUList
    - Logr::log_t::info
    - Logging::Loggable
    - Logr::log_t::error
    - Logging::IterLoggable
    - second::end
    - cend
    - find
    - second::begin
    linkageType: ''
    returnType: void
    signature: void setCPUMap(const std::map<unsigned int, std::set<int>>& cpusMap,
      unsigned int n, pthread_t tid, Logr::log_t log)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::thread
      Src: /src/pdns/pdns/recursordist/rec-main.cc:200,1
    - Dst: setThreadName
      Src: /src/pdns/pdns/recursordist/rec-main.cc:203,1
    - Dst: recursorThread
      Src: /src/pdns/pdns/recursordist/rec-main.cc:204,1
    - Dst: setCPUMap
      Src: /src/pdns/pdns/recursordist/rec-main.cc:206,1
    - Dst: native_handle
      Src: /src/pdns/pdns/recursordist/rec-main.cc:206,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 4
    argNames:
    - tid
    - ' tname'
    - ' cpusMap'
    - log
    argTypes:
    - unsigned int
    - string
    - std::map<unsigned int, std::set<int>>
    - Logr::log_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 207
      start: 197
    functionDepth: 1
    functionLinenumber: 197
    functionLinenumberEnd: 207
    functionName: RecThreadInfo::start
    functionSourceFile: /src/pdns/pdns/recursordist/rec-main.cc
    functionUses: 0
    functionsReached:
    - std::thread
    - native_handle
    - setCPUMap
    - setThreadName
    - recursorThread
    linkageType: ''
    returnType: void
    signature: void RecThreadInfo::start(unsigned int tid, const string& tname, const
      std::map<unsigned int, std::set<int>>& cpusMap, Logr::log_t log)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: parseCPUMap
      Src: /src/pdns/pdns/recursordist/rec-main.cc:212,1
    - Dst: numDistributors
      Src: /src/pdns/pdns/recursordist/rec-main.cc:214,1
    - Dst: numUDPWorkers
      Src: /src/pdns/pdns/recursordist/rec-main.cc:214,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/recursordist/rec-main.cc:215,1
    - Dst: Logging::Logger::info
      Src: /src/pdns/pdns/recursordist/rec-main.cc:219,1
    - Dst: setHandler
      Src: /src/pdns/pdns/recursordist/rec-main.cc:220,1
    - Dst: RecThreadInfo::start
      Src: /src/pdns/pdns/recursordist/rec-main.cc:221,1
    - Dst: numTCPWorkers
      Src: /src/pdns/pdns/recursordist/rec-main.cc:225,1
    - Dst: Logging::Logger::info
      Src: /src/pdns/pdns/recursordist/rec-main.cc:226,1
    - Dst: setTCPListener
      Src: /src/pdns/pdns/recursordist/rec-main.cc:227,1
    - Dst: setWorker
      Src: /src/pdns/pdns/recursordist/rec-main.cc:228,1
    - Dst: RecThreadInfo::start
      Src: /src/pdns/pdns/recursordist/rec-main.cc:229,1
    - Dst: numTaskThreads
      Src: /src/pdns/pdns/recursordist/rec-main.cc:232,1
    - Dst: Logging::Logger::info
      Src: /src/pdns/pdns/recursordist/rec-main.cc:233,1
    - Dst: setTaskThread
      Src: /src/pdns/pdns/recursordist/rec-main.cc:234,1
    - Dst: RecThreadInfo::start
      Src: /src/pdns/pdns/recursordist/rec-main.cc:235,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:238,1
    - Dst: serveRustWeb
      Src: /src/pdns/pdns/recursordist/rec-main.cc:239,1
    - Dst: Logging::Logger::info
      Src: /src/pdns/pdns/recursordist/rec-main.cc:243,1
    - Dst: setListener
      Src: /src/pdns/pdns/recursordist/rec-main.cc:244,1
    - Dst: setWorker
      Src: /src/pdns/pdns/recursordist/rec-main.cc:245,1
    - Dst: setThreadId
      Src: /src/pdns/pdns/recursordist/rec-main.cc:246,1
    - Dst: recursorThread
      Src: /src/pdns/pdns/recursordist/rec-main.cc:247,1
    - Dst: numRecursorThreads
      Src: /src/pdns/pdns/recursordist/rec-main.cc:251,1
    - Dst: Logging::Logger::info
      Src: /src/pdns/pdns/recursordist/rec-main.cc:252,1
    - Dst: thread::join
      Src: /src/pdns/pdns/recursordist/rec-main.cc:253,1
    - Dst: weDistributeQueries
      Src: /src/pdns/pdns/recursordist/rec-main.cc:262,1
    - Dst: numDistributors
      Src: /src/pdns/pdns/recursordist/rec-main.cc:263,1
    - Dst: Logging::Logger::info
      Src: /src/pdns/pdns/recursordist/rec-main.cc:264,1
    - Dst: numUDPWorkers
      Src: /src/pdns/pdns/recursordist/rec-main.cc:267,1
    - Dst: Logging::Logger::info
      Src: /src/pdns/pdns/recursordist/rec-main.cc:268,1
    - Dst: setListener
      Src: /src/pdns/pdns/recursordist/rec-main.cc:269,1
    - Dst: weDistributeQueries
      Src: /src/pdns/pdns/recursordist/rec-main.cc:269,1
    - Dst: setWorker
      Src: /src/pdns/pdns/recursordist/rec-main.cc:270,1
    - Dst: numTCPWorkers
      Src: /src/pdns/pdns/recursordist/rec-main.cc:272,1
    - Dst: Logging::Logger::info
      Src: /src/pdns/pdns/recursordist/rec-main.cc:273,1
    - Dst: setTCPListener
      Src: /src/pdns/pdns/recursordist/rec-main.cc:274,1
    - Dst: setWorker
      Src: /src/pdns/pdns/recursordist/rec-main.cc:275,1
    - Dst: numTaskThreads
      Src: /src/pdns/pdns/recursordist/rec-main.cc:277,1
    - Dst: Logging::Logger::info
      Src: /src/pdns/pdns/recursordist/rec-main.cc:278,1
    - Dst: setTaskThread
      Src: /src/pdns/pdns/recursordist/rec-main.cc:279,1
    - Dst: weDistributeQueries
      Src: /src/pdns/pdns/recursordist/rec-main.cc:284,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/recursordist/rec-main.cc:285,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-main.cc:285,1
    - Dst: numDistributors
      Src: /src/pdns/pdns/recursordist/rec-main.cc:285,1
    - Dst: numDistributors
      Src: /src/pdns/pdns/recursordist/rec-main.cc:286,1
    - Dst: Logging::Logger::info
      Src: /src/pdns/pdns/recursordist/rec-main.cc:287,1
    - Dst: RecThreadInfo::start
      Src: /src/pdns/pdns/recursordist/rec-main.cc:288,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/recursordist/rec-main.cc:291,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-main.cc:291,1
    - Dst: numUDPWorkers
      Src: /src/pdns/pdns/recursordist/rec-main.cc:291,1
    - Dst: numUDPWorkers
      Src: /src/pdns/pdns/recursordist/rec-main.cc:293,1
    - Dst: Logging::Logger::info
      Src: /src/pdns/pdns/recursordist/rec-main.cc:294,1
    - Dst: RecThreadInfo::start
      Src: /src/pdns/pdns/recursordist/rec-main.cc:295,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/recursordist/rec-main.cc:298,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-main.cc:298,1
    - Dst: numTCPWorkers
      Src: /src/pdns/pdns/recursordist/rec-main.cc:298,1
    - Dst: numTCPWorkers
      Src: /src/pdns/pdns/recursordist/rec-main.cc:300,1
    - Dst: Logging::Logger::info
      Src: /src/pdns/pdns/recursordist/rec-main.cc:301,1
    - Dst: RecThreadInfo::start
      Src: /src/pdns/pdns/recursordist/rec-main.cc:302,1
    - Dst: numTaskThreads
      Src: /src/pdns/pdns/recursordist/rec-main.cc:305,1
    - Dst: Logging::Logger::info
      Src: /src/pdns/pdns/recursordist/rec-main.cc:306,1
    - Dst: RecThreadInfo::start
      Src: /src/pdns/pdns/recursordist/rec-main.cc:307,1
    - Dst: Logging::Logger::info
      Src: /src/pdns/pdns/recursordist/rec-main.cc:312,1
    - Dst: setHandler
      Src: /src/pdns/pdns/recursordist/rec-main.cc:313,1
    - Dst: RecThreadInfo::start
      Src: /src/pdns/pdns/recursordist/rec-main.cc:314,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:316,1
    - Dst: serveRustWeb
      Src: /src/pdns/pdns/recursordist/rec-main.cc:317,1
    - Dst: RecThreadInfo::infos
      Src: /src/pdns/pdns/recursordist/rec-main.cc:319,1
    - Dst: isHandler
      Src: /src/pdns/pdns/recursordist/rec-main.cc:321,1
    - Dst: thread::join
      Src: /src/pdns/pdns/recursordist/rec-main.cc:324,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 80
    argCount: 1
    argNames:
    - log
    argTypes:
    - Logr::log_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 331
      start: 209
    functionDepth: 2
    functionLinenumber: 209
    functionLinenumberEnd: 331
    functionName: RecThreadInfo::runThreads
    functionSourceFile: /src/pdns/pdns/recursordist/rec-main.cc
    functionUses: 0
    functionsReached:
    - numDistributors
    - Logging::Logger::info
    - setWorker
    - setTaskThread
    - numTaskThreads
    - setHandler
    - Logr::log_t::info
    - Logging::Loggable
    - setThreadId
    - numTCPWorkers
    - isHandler
    - RecThreadInfo::start
    - numUDPWorkers
    - setTCPListener
    - thread::join
    - parseCPUMap
    - arg
    - recursorThread
    - weDistributeQueries
    - setListener
    - serveRustWeb
    - RecThreadInfo::infos
    - numRecursorThreads
    linkageType: ''
    returnType: int
    signature: int RecThreadInfo::runThreads(Logr::log_t log)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:335,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/recursordist/rec-main.cc:337,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-main.cc:337,1
    - Dst: numRecursorThreads
      Src: /src/pdns/pdns/recursordist/rec-main.cc:341,1
    - Dst: info
      Src: /src/pdns/pdns/recursordist/rec-main.cc:342,1
    - Dst: pipe
      Src: /src/pdns/pdns/recursordist/rec-main.cc:345,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/recursordist/rec-main.cc:345,1
    - Dst: unixDie
      Src: /src/pdns/pdns/recursordist/rec-main.cc:346,1
    - Dst: pipe
      Src: /src/pdns/pdns/recursordist/rec-main.cc:357,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/recursordist/rec-main.cc:357,1
    - Dst: unixDie
      Src: /src/pdns/pdns/recursordist/rec-main.cc:358,1
    - Dst: pipe
      Src: /src/pdns/pdns/recursordist/rec-main.cc:364,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/recursordist/rec-main.cc:364,1
    - Dst: unixDie
      Src: /src/pdns/pdns/recursordist/rec-main.cc:365,1
    - Dst: setPipeBufferSize
      Src: /src/pdns/pdns/recursordist/rec-main.cc:372,1
    - Dst: Logr::log_t::error
      Src: /src/pdns/pdns/recursordist/rec-main.cc:374,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-main.cc:374,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-main.cc:374,1
    - Dst: getPipeBufferSize
      Src: /src/pdns/pdns/recursordist/rec-main.cc:375,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/recursordist/rec-main.cc:377,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-main.cc:377,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-main.cc:377,1
    - Dst: setNonBlocking
      Src: /src/pdns/pdns/recursordist/rec-main.cc:382,1
    - Dst: unixDie
      Src: /src/pdns/pdns/recursordist/rec-main.cc:383,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 35
    argCount: 1
    argNames:
    - log
    argTypes:
    - Logr::log_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 386
      start: 333
    functionDepth: 1
    functionLinenumber: 333
    functionLinenumberEnd: 386
    functionName: RecThreadInfo::makeThreadPipes
    functionSourceFile: /src/pdns/pdns/recursordist/rec-main.cc
    functionUses: 0
    functionsReached:
    - Logr::log_t::info
    - Logging::Loggable
    - unixDie
    - setNonBlocking
    - Logr::log_t::error
    - info
    - pipe
    - setPipeBufferSize
    - getPipeBufferSize
    - std::array::data
    - arg
    - numRecursorThreads
    linkageType: ''
    returnType: void
    signature: void RecThreadInfo::makeThreadPipes(Logr::log_t log)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ArgvMap::ArgvMap
      Src: /src/pdns/pdns/recursordist/rec-main.cc:390,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 392
      start: 388
    functionDepth: 0
    functionLinenumber: 388
    functionLinenumberEnd: 392
    functionName: arg
    functionSourceFile: /src/pdns/pdns/recursordist/rec-main.cc
    functionUses: 126
    functionsReached:
    - ArgvMap::ArgvMap
    linkageType: ''
    returnType: ArgvMap
    signature: ArgvMap & arg()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: FDMultiplexer::getMultiplexerMap
      Src: /src/pdns/pdns/recursordist/rec-main.cc:397,1
    - Dst: second
      Src: /src/pdns/pdns/recursordist/rec-main.cc:399,1
    - Dst: Logr::log_t::error
      Src: /src/pdns/pdns/recursordist/rec-main.cc:403,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/rec-main.cc:403,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/recursordist/rec-main.cc:406,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/recursordist/rec-main.cc:409,1
    - Dst: _exit
      Src: /src/pdns/pdns/recursordist/rec-main.cc:410,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 1
    argNames:
    - log
    argTypes:
    - Logr::log_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 411
      start: 394
    functionDepth: 0
    functionLinenumber: 394
    functionLinenumberEnd: 411
    functionName: getMultiplexer
    functionSourceFile: /src/pdns/pdns/recursordist/rec-main.cc
    functionUses: 0
    functionsReached:
    - FDMultiplexer::getMultiplexerMap
    - _exit
    - Logr::log_t::info
    - what
    - second
    - Logr::log_t::error
    linkageType: ''
    returnType: FDMultiplexer
    signature: FDMultiplexer * getMultiplexer(Logr::log_t log)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<std::vector<std::unique_ptr<RemoteLogger>>>
      Src: /src/pdns/pdns/recursordist/rec-main.cc:415,1
    - Dst: make_unique<RemoteLogger>
      Src: /src/pdns/pdns/recursordist/rec-main.cc:419,1
    - Dst: auto::setLogQueries
      Src: /src/pdns/pdns/recursordist/rec-main.cc:420,1
    - Dst: auto::setLogResponses
      Src: /src/pdns/pdns/recursordist/rec-main.cc:421,1
    - Dst: auto::emplace_back
      Src: /src/pdns/pdns/recursordist/rec-main.cc:422,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/rec-main.cc:422,1
    - Dst: Logr::log_t::error
      Src: /src/pdns/pdns/recursordist/rec-main.cc:425,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/rec-main.cc:425,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-main.cc:425,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-main.cc:425,1
    - Dst: Logr::log_t::error
      Src: /src/pdns/pdns/recursordist/rec-main.cc:428,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-main.cc:428,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-main.cc:428,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 2
    argNames:
    - ' config'
    - log
    argTypes:
    - ProtobufExportConfig
    - Logr::log_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 433
      start: 413
    functionDepth: 0
    functionLinenumber: 413
    functionLinenumberEnd: 433
    functionName: startProtobufServers
    functionSourceFile: /src/pdns/pdns/recursordist/rec-main.cc
    functionUses: 0
    functionsReached:
    - auto::setLogResponses
    - std::make_shared<std::vector<std::unique_ptr<RemoteLogger>>>
    - std::move
    - Logging::Loggable
    - what
    - Logr::log_t::error
    - make_unique<RemoteLogger>
    - auto::setLogQueries
    - auto::emplace_back
    linkageType: ''
    returnType: std::shared_ptr<std::vector<std::unique_ptr<RemoteLogger>>>
    signature: std::shared_ptr<std::vector<std::unique_ptr<RemoteLogger>>> startProtobufServers(const
      ProtobufExportConfig& config, Logr::log_t log)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: servers::reset
      Src: /src/pdns/pdns/recursordist/rec-main.cc:439,1
    - Dst: servers::reset
      Src: /src/pdns/pdns/recursordist/rec-main.cc:451,1
    - Dst: withName
      Src: /src/pdns/pdns/recursordist/rec-main.cc:453,1
    - Dst: startProtobufServers
      Src: /src/pdns/pdns/recursordist/rec-main.cc:454,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 1
    argNames:
    - ' luaconfsLocal'
    argTypes:
    - LocalStateHolder<LuaConfigItems>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 460
      start: 435
    functionDepth: 1
    functionLinenumber: 435
    functionLinenumberEnd: 460
    functionName: checkProtobufExport
    functionSourceFile: /src/pdns/pdns/recursordist/rec-main.cc
    functionUses: 0
    functionsReached:
    - withName
    - servers::reset
    - startProtobufServers
    linkageType: ''
    returnType: bool
    signature: bool checkProtobufExport(LocalStateHolder<LuaConfigItems>& luaconfsLocal)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: servers::reset
      Src: /src/pdns/pdns/recursordist/rec-main.cc:466,1
    - Dst: servers::reset
      Src: /src/pdns/pdns/recursordist/rec-main.cc:478,1
    - Dst: withName
      Src: /src/pdns/pdns/recursordist/rec-main.cc:480,1
    - Dst: startProtobufServers
      Src: /src/pdns/pdns/recursordist/rec-main.cc:481,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 1
    argNames:
    - ' luaconfsLocal'
    argTypes:
    - LocalStateHolder<LuaConfigItems>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 487
      start: 462
    functionDepth: 1
    functionLinenumber: 462
    functionLinenumberEnd: 487
    functionName: checkOutgoingProtobufExport
    functionSourceFile: /src/pdns/pdns/recursordist/rec-main.cc
    functionUses: 0
    functionsReached:
    - withName
    - servers::reset
    - startProtobufServers
    linkageType: ''
    returnType: bool
    signature: bool checkOutgoingProtobufExport(LocalStateHolder<LuaConfigItems>&
      luaconfsLocal)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: remoteLoggerQueueData
      Src: /src/pdns/pdns/recursordist/rec-main.cc:494,1
    - Dst: servers::size
      Src: /src/pdns/pdns/recursordist/rec-main.cc:498,1
    - Dst: servers::size
      Src: /src/pdns/pdns/recursordist/rec-main.cc:499,1
    - Dst: remoteLoggerQueueData
      Src: /src/pdns/pdns/recursordist/rec-main.cc:500,1
    - Dst: servers::at
      Src: /src/pdns/pdns/recursordist/rec-main.cc:500,1
    - Dst: remoteLoggerQueueData
      Src: /src/pdns/pdns/recursordist/rec-main.cc:507,1
    - Dst: servers::size
      Src: /src/pdns/pdns/recursordist/rec-main.cc:512,1
    - Dst: RemoteLoggerInterface::toErrorString
      Src: /src/pdns/pdns/recursordist/rec-main.cc:514,1
    - Dst: withName
      Src: /src/pdns/pdns/recursordist/rec-main.cc:515,1
    - Dst: servers::at
      Src: /src/pdns/pdns/recursordist/rec-main.cc:515,1
    - Dst: servers::size
      Src: /src/pdns/pdns/recursordist/rec-main.cc:520,1
    - Dst: hash
      Src: /src/pdns/pdns/recursordist/rec-main.cc:523,1
    - Dst: ComboAddress::addressOnlyHash
      Src: /src/pdns/pdns/recursordist/rec-main.cc:523,1
    - Dst: servers::size
      Src: /src/pdns/pdns/recursordist/rec-main.cc:524,1
    - Dst: remoteLoggerQueueData
      Src: /src/pdns/pdns/recursordist/rec-main.cc:525,1
    - Dst: servers::at
      Src: /src/pdns/pdns/recursordist/rec-main.cc:525,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 29
    argCount: 4
    argNames:
    - ' pbConfig'
    - ' msg'
    - ' qname'
    - ' address'
    argTypes:
    - ProtobufServersInfo
    - string
    - DNSName
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 529
      start: 489
    functionDepth: 2
    functionLinenumber: 489
    functionLinenumberEnd: 529
    functionName: protobufLog
    functionSourceFile: /src/pdns/pdns/recursordist/rec-main.cc
    functionUses: 0
    functionsReached:
    - servers::at
    - hash
    - withName
    - remoteLoggerQueueData
    - RemoteLoggerInterface::toErrorString
    - ComboAddress::addressOnlyHash
    - servers::size
    linkageType: ''
    returnType: void
    signature: void protobufLog(const ProtobufServersInfo& pbConfig, const string&
      msg, const DNSName& qname, const ComboAddress& address)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: withName
      Src: /src/pdns/pdns/recursordist/rec-main.cc:533,1
    - Dst: Netmask::getMaskedNetwork
      Src: /src/pdns/pdns/recursordist/rec-main.cc:542,1
    - Dst: ComboAddress::setPort
      Src: /src/pdns/pdns/recursordist/rec-main.cc:543,1
    - Dst: getPort
      Src: /src/pdns/pdns/recursordist/rec-main.cc:543,1
    - Dst: Netmask::getMaskedNetwork
      Src: /src/pdns/pdns/recursordist/rec-main.cc:547,1
    - Dst: ComboAddress::setPort
      Src: /src/pdns/pdns/recursordist/rec-main.cc:548,1
    - Dst: getPort
      Src: /src/pdns/pdns/recursordist/rec-main.cc:548,1
    - Dst: std::string::size_type
      Src: /src/pdns/pdns/recursordist/rec-main.cc:551,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/rec-main.cc:551,1
    - Dst: pdns::ProtoZero::RecMessage::setType
      Src: /src/pdns/pdns/recursordist/rec-main.cc:552,1
    - Dst: pdns::ProtoZero::RecMessage::setRequest
      Src: /src/pdns/pdns/recursordist/rec-main.cc:553,1
    - Dst: pdns::ProtoZero::RecMessage::setServerIdentity
      Src: /src/pdns/pdns/recursordist/rec-main.cc:554,1
    - Dst: pdns::ProtoZero::RecMessage::setEDNSSubnet
      Src: /src/pdns/pdns/recursordist/rec-main.cc:555,1
    - Dst: isIPv4
      Src: /src/pdns/pdns/recursordist/rec-main.cc:555,1
    - Dst: pdns::ProtoZero::RecMessage::setRequestorId
      Src: /src/pdns/pdns/recursordist/rec-main.cc:556,1
    - Dst: pdns::ProtoZero::RecMessage::setDeviceId
      Src: /src/pdns/pdns/recursordist/rec-main.cc:557,1
    - Dst: pdns::ProtoZero::RecMessage::setDeviceName
      Src: /src/pdns/pdns/recursordist/rec-main.cc:558,1
    - Dst: pdns::ProtoZero::RecMessage::setWorkerId
      Src: /src/pdns/pdns/recursordist/rec-main.cc:559,1
    - Dst: thread_local_id
      Src: /src/pdns/pdns/recursordist/rec-main.cc:559,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/rec-main.cc:562,1
    - Dst: pdns::ProtoZero::RecMessage::addPolicyTags
      Src: /src/pdns/pdns/recursordist/rec-main.cc:563,1
    - Dst: pdns::ProtoZero::RecMessage::setMeta
      Src: /src/pdns/pdns/recursordist/rec-main.cc:566,1
    - Dst: pdns::ProtoZero::RecMessage::setHeaderFlags
      Src: /src/pdns/pdns/recursordist/rec-main.cc:568,1
    - Dst: getFlagsFromDNSHeader
      Src: /src/pdns/pdns/recursordist/rec-main.cc:568,1
    - Dst: pdns::ProtoZero::RecMessage::setEDNSVersion
      Src: /src/pdns/pdns/recursordist/rec-main.cc:570,1
    - Dst: pdns::ProtoZero::RecMessage::setOpenTelemetryTraceID
      Src: /src/pdns/pdns/recursordist/rec-main.cc:573,1
    - Dst: pdns::ProtoZero::RecMessage::finishAndMoveBuf
      Src: /src/pdns/pdns/recursordist/rec-main.cc:576,1
    - Dst: protobufLog
      Src: /src/pdns/pdns/recursordist/rec-main.cc:577,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 32
    argCount: 19
    argNames:
    - ' luaconfsLocal'
    - ' uniqueId'
    - ' remote'
    - ' local'
    - ' mappedSource'
    - ' ednssubnet'
    - tcp
    - len
    - ' qname'
    - qtype
    - qclass
    - ' policyTags'
    - ' requestorId'
    - ' deviceId'
    - ' deviceName'
    - ' meta'
    - ' ednsVersion'
    - ' header'
    - ' traceID'
    argTypes:
    - LocalStateHolder<LuaConfigItems>
    - boost::uuids::uuid
    - ComboAddress
    - ComboAddress
    - ComboAddress
    - Netmask
    - bool
    - size_t
    - DNSName
    - uint16_t
    - uint16_t
    - std::unordered_set<std::string>
    - std::string
    - std::string
    - std::string
    - std::map<std::string, RecursorLua4::MetaValue>
    - std::optional<uint32_t>
    - dnsheader
    - pdns::trace::TraceID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 578
      start: 531
    functionDepth: 4
    functionLinenumber: 531
    functionLinenumberEnd: 578
    functionName: protobufLogQuery
    functionSourceFile: /src/pdns/pdns/recursordist/rec-main.cc
    functionUses: 0
    functionsReached:
    - withName
    - Netmask::getMaskedNetwork
    - thread_local_id
    - getFlagsFromDNSHeader
    - pdns::ProtoZero::RecMessage::setHeaderFlags
    - pdns::ProtoZero::RecMessage::setEDNSVersion
    - pdns::ProtoZero::RecMessage::setDeviceName
    - getPort
    - pdns::ProtoZero::RecMessage::finishAndMoveBuf
    - pdns::ProtoZero::RecMessage::setWorkerId
    - pdns::ProtoZero::RecMessage::setDeviceId
    - empty
    - protobufLog
    - pdns::ProtoZero::RecMessage::setEDNSSubnet
    - pdns::ProtoZero::RecMessage::setOpenTelemetryTraceID
    - pdns::ProtoZero::RecMessage::setRequestorId
    - pdns::ProtoZero::RecMessage::setRequest
    - pdns::ProtoZero::RecMessage::setMeta
    - std::string::size_type
    - ComboAddress::setPort
    - pdns::ProtoZero::RecMessage::setType
    - isIPv4
    - pdns::ProtoZero::RecMessage::setServerIdentity
    - pdns::ProtoZero::RecMessage::addPolicyTags
    linkageType: ''
    returnType: void
    signature: void protobufLogQuery(LocalStateHolder<LuaConfigItems>& luaconfsLocal,
      const boost::uuids::uuid& uniqueId, const ComboAddress& remote, const ComboAddress&
      local, const ComboAddress& mappedSource, const Netmask& ednssubnet, bool tcp,
      size_t len, const DNSName& qname, uint16_t qtype, uint16_t qclass, const std::unordered_set<std::string>&
      policyTags, const std::string& requestorId, const std::string& deviceId, const
      std::string& deviceName, const std::map<std::string, RecursorLua4::MetaValue>&
      meta, const std::optional<uint32_t>& ednsVersion, const dnsheader& header, const
      pdns::trace::TraceID& traceID)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: finishAndMoveBuf
      Src: /src/pdns/pdns/recursordist/rec-main.cc:586,1
    - Dst: protobufLog
      Src: /src/pdns/pdns/recursordist/rec-main.cc:587,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - ' message'
    - ' qname'
    - ' address'
    argTypes:
    - pdns::ProtoZero::RecMessage
    - DNSName
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 588
      start: 580
    functionDepth: 3
    functionLinenumber: 580
    functionLinenumberEnd: 588
    functionName: protobufLogResponse
    functionSourceFile: /src/pdns/pdns/recursordist/rec-main.cc
    functionUses: 0
    functionsReached:
    - protobufLog
    - finishAndMoveBuf
    linkageType: ''
    returnType: void
    signature: void protobufLogResponse(pdns::ProtoZero::RecMessage& message, const
      DNSName& qname, const ComboAddress& address)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::RecMessage::setType
      Src: /src/pdns/pdns/recursordist/rec-main.cc:606,1
    - Dst: pdns::ProtoZero::RecMessage::setServerIdentity
      Src: /src/pdns/pdns/recursordist/rec-main.cc:607,1
    - Dst: pdns::ProtoZero::RecMessage::setQueryTime
      Src: /src/pdns/pdns/recursordist/rec-main.cc:612,1
    - Dst: pdns::ProtoZero::RecMessage::setQueryTime
      Src: /src/pdns/pdns/recursordist/rec-main.cc:615,1
    - Dst: pdns::ProtoZero::RecMessage::setSocketFamily
      Src: /src/pdns/pdns/recursordist/rec-main.cc:620,1
    - Dst: Netmask::getMaskedNetwork
      Src: /src/pdns/pdns/recursordist/rec-main.cc:622,1
    - Dst: pdns::ProtoZero::RecMessage::setFrom
      Src: /src/pdns/pdns/recursordist/rec-main.cc:623,1
    - Dst: pdns::ProtoZero::RecMessage::setFromPort
      Src: /src/pdns/pdns/recursordist/rec-main.cc:624,1
    - Dst: getPort
      Src: /src/pdns/pdns/recursordist/rec-main.cc:624,1
    - Dst: pdns::ProtoZero::RecMessage::setSocketFamily
      Src: /src/pdns/pdns/recursordist/rec-main.cc:627,1
    - Dst: Netmask::getMaskedNetwork
      Src: /src/pdns/pdns/recursordist/rec-main.cc:629,1
    - Dst: pdns::ProtoZero::RecMessage::setFrom
      Src: /src/pdns/pdns/recursordist/rec-main.cc:630,1
    - Dst: pdns::ProtoZero::RecMessage::setFromPort
      Src: /src/pdns/pdns/recursordist/rec-main.cc:631,1
    - Dst: getPort
      Src: /src/pdns/pdns/recursordist/rec-main.cc:631,1
    - Dst: pdns::ProtoZero::RecMessage::setMessageIdentity
      Src: /src/pdns/pdns/recursordist/rec-main.cc:633,1
    - Dst: pdns::ProtoZero::RecMessage::setTo
      Src: /src/pdns/pdns/recursordist/rec-main.cc:634,1
    - Dst: pdns::ProtoZero::RecMessage::setSocketProtocol
      Src: /src/pdns/pdns/recursordist/rec-main.cc:635,1
    - Dst: pdns::ProtoZero::RecMessage::setId
      Src: /src/pdns/pdns/recursordist/rec-main.cc:636,1
    - Dst: pdns::ProtoZero::RecMessage::setTime
      Src: /src/pdns/pdns/recursordist/rec-main.cc:638,1
    - Dst: pdns::ProtoZero::RecMessage::setEDNSSubnet
      Src: /src/pdns/pdns/recursordist/rec-main.cc:639,1
    - Dst: getSource
      Src: /src/pdns/pdns/recursordist/rec-main.cc:639,1
    - Dst: getSource
      Src: /src/pdns/pdns/recursordist/rec-main.cc:639,1
    - Dst: pdns::ProtoZero::RecMessage::setRequestorId
      Src: /src/pdns/pdns/recursordist/rec-main.cc:640,1
    - Dst: pdns::ProtoZero::RecMessage::setDeviceId
      Src: /src/pdns/pdns/recursordist/rec-main.cc:641,1
    - Dst: pdns::ProtoZero::RecMessage::setDeviceName
      Src: /src/pdns/pdns/recursordist/rec-main.cc:642,1
    - Dst: pdns::ProtoZero::RecMessage::setToPort
      Src: /src/pdns/pdns/recursordist/rec-main.cc:643,1
    - Dst: getPort
      Src: /src/pdns/pdns/recursordist/rec-main.cc:643,1
    - Dst: pdns::ProtoZero::RecMessage::setWorkerId
      Src: /src/pdns/pdns/recursordist/rec-main.cc:644,1
    - Dst: thread_local_id
      Src: /src/pdns/pdns/recursordist/rec-main.cc:644,1
    - Dst: pdns::ProtoZero::RecMessage::setPacketCacheHit
      Src: /src/pdns/pdns/recursordist/rec-main.cc:646,1
    - Dst: pdns::ProtoZero::RecMessage::setMeta
      Src: /src/pdns/pdns/recursordist/rec-main.cc:650,1
    - Dst: pdns::ProtoZero::RecMessage::setNewlyObservedDomain
      Src: /src/pdns/pdns/recursordist/rec-main.cc:654,1
    - Dst: enabled
      Src: /src/pdns/pdns/recursordist/rec-main.cc:657,1
    - Dst: SyncRes::eventTraceEnabled
      Src: /src/pdns/pdns/recursordist/rec-main.cc:657,1
    - Dst: pdns::ProtoZero::RecMessage::addEvents
      Src: /src/pdns/pdns/recursordist/rec-main.cc:658,1
    - Dst: enabled
      Src: /src/pdns/pdns/recursordist/rec-main.cc:661,1
    - Dst: getThisOTTraceEnabled
      Src: /src/pdns/pdns/recursordist/rec-main.cc:661,1
    - Dst: SyncRes::eventTraceEnabled
      Src: /src/pdns/pdns/recursordist/rec-main.cc:661,1
    - Dst: setIDsIfNotSet
      Src: /src/pdns/pdns/recursordist/rec-main.cc:662,1
    - Dst: pdns::trace::boilerPlate
      Src: /src/pdns/pdns/recursordist/rec-main.cc:663,1
    - Dst: convertToOT
      Src: /src/pdns/pdns/recursordist/rec-main.cc:663,1
    - Dst: toLogString
      Src: /src/pdns/pdns/recursordist/rec-main.cc:664,1
    - Dst: QType::toString
      Src: /src/pdns/pdns/recursordist/rec-main.cc:665,1
    - Dst: pdns::ProtoZero::RecMessage::setOpenTelemetryData
      Src: /src/pdns/pdns/recursordist/rec-main.cc:667,1
    - Dst: auto::encode
      Src: /src/pdns/pdns/recursordist/rec-main.cc:667,1
    - Dst: pdns::ProtoZero::RecMessage::setOpenTelemetryTraceID
      Src: /src/pdns/pdns/recursordist/rec-main.cc:670,1
    - Dst: pdns::ProtoZero::RecMessage::addPolicyTags
      Src: /src/pdns/pdns/recursordist/rec-main.cc:672,1
    - Dst: protobufLogResponse
      Src: /src/pdns/pdns/recursordist/rec-main.cc:674,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 48
    argCount: 19
    argNames:
    - ' qname'
    - qtype
    - header
    - ' luaconfsLocal'
    - ' pbData'
    - ' tval'
    - tcp
    - ' source'
    - ' destination'
    - ' mappedSource'
    - ' ednssubnet'
    - ' uniqueId'
    - ' requestorId'
    - ' deviceId'
    - ' deviceName'
    - ' meta'
    - ' eventTrace'
    - ' otTrace'
    - ' policyTags'
    argTypes:
    - DNSName
    - QType
    - struct dnsheader*
    - LocalStateHolder<LuaConfigItems>
    - RecursorPacketCache::OptPBData
    - struct timeval
    - bool
    - ComboAddress
    - ComboAddress
    - ComboAddress
    - EDNSSubnetOpts
    - boost::uuids::uuid
    - string
    - string
    - string
    - std::map<std::string, RecursorLua4::MetaValue>
    - RecEventTrace
    - pdns::trace::InitialSpanInfo
    - std::unordered_set<std::string>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 675
      start: 590
    functionDepth: 4
    functionLinenumber: 590
    functionLinenumberEnd: 675
    functionName: protobufLogResponse
    functionSourceFile: /src/pdns/pdns/recursordist/rec-main.cc
    functionUses: 1
    functionsReached:
    - toLogString
    - protobufLogResponse
    - Netmask::getMaskedNetwork
    - thread_local_id
    - pdns::ProtoZero::RecMessage::setPacketCacheHit
    - auto::encode
    - pdns::ProtoZero::RecMessage::setDeviceName
    - getPort
    - pdns::ProtoZero::RecMessage::setQueryTime
    - pdns::ProtoZero::RecMessage::addEvents
    - pdns::ProtoZero::RecMessage::setId
    - pdns::ProtoZero::RecMessage::setWorkerId
    - pdns::ProtoZero::RecMessage::setTime
    - pdns::ProtoZero::RecMessage::setDeviceId
    - pdns::ProtoZero::RecMessage::setMessageIdentity
    - pdns::ProtoZero::RecMessage::setNewlyObservedDomain
    - pdns::ProtoZero::RecMessage::setFromPort
    - convertToOT
    - pdns::trace::boilerPlate
    - setIDsIfNotSet
    - QType::toString
    - pdns::ProtoZero::RecMessage::setEDNSSubnet
    - SyncRes::eventTraceEnabled
    - pdns::ProtoZero::RecMessage::setOpenTelemetryTraceID
    - pdns::ProtoZero::RecMessage::setSocketFamily
    - pdns::ProtoZero::RecMessage::setRequestorId
    - getThisOTTraceEnabled
    - pdns::ProtoZero::RecMessage::setOpenTelemetryData
    - pdns::ProtoZero::RecMessage::setSocketProtocol
    - pdns::ProtoZero::RecMessage::setTo
    - enabled
    - pdns::ProtoZero::RecMessage::setToPort
    - pdns::ProtoZero::RecMessage::setMeta
    - pdns::ProtoZero::RecMessage::setFrom
    - pdns::ProtoZero::RecMessage::setType
    - getSource
    - pdns::ProtoZero::RecMessage::setServerIdentity
    - pdns::ProtoZero::RecMessage::addPolicyTags
    linkageType: ''
    returnType: void
    signature: "void protobufLogResponse(const DNSName& qname, QType qtype,\n                         const
      struct dnsheader* header, LocalStateHolder<LuaConfigItems>& luaconfsLocal,\n
      \                        const RecursorPacketCache::OptPBData& pbData, const
      struct timeval& tval,\n                         bool tcp, const ComboAddress&
      source, const ComboAddress& destination,\n                         const ComboAddress&
      mappedSource,\n                         const EDNSSubnetOpts& ednssubnet,\n
      \                        const boost::uuids::uuid& uniqueId, const string& requestorId,
      const string& deviceId,\n                         const string& deviceName,
      const std::map<std::string, RecursorLua4::MetaValue>& meta,\n                         const
      RecEventTrace& eventTrace,\n                         pdns::trace::InitialSpanInfo&
      otTrace,\n                         const std::unordered_set<std::string>& policyTags)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<std::vector<std::unique_ptr<FrameStreamLogger>>>
      Src: /src/pdns/pdns/recursordist/rec-main.cc:681,1
    - Dst: make_unique<FrameStreamLogger>
      Src: /src/pdns/pdns/recursordist/rec-main.cc:695,1
    - Dst: ComboAddress::toStringWithPort
      Src: /src/pdns/pdns/recursordist/rec-main.cc:695,1
    - Dst: make_unique<FrameStreamLogger>
      Src: /src/pdns/pdns/recursordist/rec-main.cc:698,1
    - Dst: unique_ptr::setLogQueries
      Src: /src/pdns/pdns/recursordist/rec-main.cc:700,1
    - Dst: unique_ptr::setLogResponses
      Src: /src/pdns/pdns/recursordist/rec-main.cc:701,1
    - Dst: unique_ptr::setLogNODs
      Src: /src/pdns/pdns/recursordist/rec-main.cc:702,1
    - Dst: unique_ptr::setLogUDRs
      Src: /src/pdns/pdns/recursordist/rec-main.cc:703,1
    - Dst: auto::emplace_back
      Src: /src/pdns/pdns/recursordist/rec-main.cc:704,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/rec-main.cc:704,1
    - Dst: Logr::log_t::error
      Src: /src/pdns/pdns/recursordist/rec-main.cc:707,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/rec-main.cc:707,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-main.cc:707,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-main.cc:707,1
    - Dst: Logr::log_t::error
      Src: /src/pdns/pdns/recursordist/rec-main.cc:710,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-main.cc:710,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-main.cc:710,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 25
    argCount: 2
    argNames:
    - ' config'
    - log
    argTypes:
    - FrameStreamExportConfig
    - Logr::log_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 715
      start: 679
    functionDepth: 0
    functionLinenumber: 679
    functionLinenumberEnd: 715
    functionName: startFrameStreamServers
    functionSourceFile: /src/pdns/pdns/recursordist/rec-main.cc
    functionUses: 0
    functionsReached:
    - auto::emplace_back
    - std::move
    - unique_ptr::setLogNODs
    - Logging::Loggable
    - make_unique<FrameStreamLogger>
    - unique_ptr::setLogQueries
    - what
    - Logr::log_t::error
    - unique_ptr::setLogUDRs
    - std::make_shared<std::vector<std::unique_ptr<FrameStreamLogger>>>
    - unique_ptr::setLogResponses
    - ComboAddress::toStringWithPort
    linkageType: ''
    returnType: std::shared_ptr<std::vector<std::unique_ptr<FrameStreamLogger>>>
    signature: std::shared_ptr<std::vector<std::unique_ptr<FrameStreamLogger>>> startFrameStreamServers(const
      FrameStreamExportConfig& config, Logr::log_t log)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::thread
      Src: /src/pdns/pdns/recursordist/rec-main.cc:719,1
    - Dst: reset
      Src: /src/pdns/pdns/recursordist/rec-main.cc:720,1
    - Dst: auto::detach
      Src: /src/pdns/pdns/recursordist/rec-main.cc:722,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ' servers'
    argTypes:
    - std::shared_ptr<std::vector<std::unique_ptr<FrameStreamLogger>>>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 723
      start: 717
    functionDepth: 0
    functionLinenumber: 717
    functionLinenumberEnd: 723
    functionName: asyncFrameStreamLoggersCleanup
    functionSourceFile: /src/pdns/pdns/recursordist/rec-main.cc
    functionUses: 0
    functionsReached:
    - std::thread
    - reset
    - auto::detach
    linkageType: ''
    returnType: void
    signature: void asyncFrameStreamLoggersCleanup(std::shared_ptr<std::vector<std::unique_ptr<FrameStreamLogger>>>&&
      servers)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: asyncFrameStreamLoggersCleanup
      Src: /src/pdns/pdns/recursordist/rec-main.cc:730,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/rec-main.cc:730,1
    - Dst: asyncFrameStreamLoggersCleanup
      Src: /src/pdns/pdns/recursordist/rec-main.cc:743,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/rec-main.cc:743,1
    - Dst: withName
      Src: /src/pdns/pdns/recursordist/rec-main.cc:746,1
    - Dst: startFrameStreamServers
      Src: /src/pdns/pdns/recursordist/rec-main.cc:747,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 3
    argNames:
    - ' luaconfsLocal'
    - ' config'
    - ' serverInfos'
    argTypes:
    - LocalStateHolder<LuaConfigItems>
    - FrameStreamExportConfig
    - FrameStreamServersInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 753
      start: 725
    functionDepth: 1
    functionLinenumber: 725
    functionLinenumberEnd: 753
    functionName: checkFrameStreamExport
    functionSourceFile: /src/pdns/pdns/recursordist/rec-main.cc
    functionUses: 0
    functionsReached:
    - withName
    - std::move
    - startFrameStreamServers
    - asyncFrameStreamLoggersCleanup
    linkageType: ''
    returnType: bool
    signature: bool checkFrameStreamExport(LocalStateHolder<LuaConfigItems>& luaconfsLocal,
      const FrameStreamExportConfig& config, FrameStreamServersInfo& serverInfos)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:759,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/rec-main.cc:761,1
    - Dst: listen
      Src: /src/pdns/pdns/recursordist/rec-main.cc:764,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:769,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:770,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:772,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:773,1
    - Dst: static_cast<gid_t>
      Src: /src/pdns/pdns/recursordist/rec-main.cc:776,1
    - Dst: static_cast<uid_t>
      Src: /src/pdns/pdns/recursordist/rec-main.cc:776,1
    - Dst: chown
      Src: /src/pdns/pdns/recursordist/rec-main.cc:777,1
    - Dst: string::c_str
      Src: /src/pdns/pdns/recursordist/rec-main.cc:777,1
    - Dst: unixDie
      Src: /src/pdns/pdns/recursordist/rec-main.cc:778,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:783,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:784,1
    - Dst: chmod
      Src: /src/pdns/pdns/recursordist/rec-main.cc:785,1
    - Dst: string::c_str
      Src: /src/pdns/pdns/recursordist/rec-main.cc:785,1
    - Dst: unixDie
      Src: /src/pdns/pdns/recursordist/rec-main.cc:786,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 22
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 789
      start: 757
    functionDepth: 0
    functionLinenumber: 757
    functionLinenumberEnd: 789
    functionName: makeControlChannelSocket
    functionSourceFile: /src/pdns/pdns/recursordist/rec-main.cc
    functionUses: 0
    functionsReached:
    - string::c_str
    - std::to_string
    - unixDie
    - chmod
    - chown
    - static_cast<gid_t>
    - static_cast<uid_t>
    - listen
    - arg
    linkageType: ''
    returnType: void
    signature: void makeControlChannelSocket(int processNum = -1)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:793,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/rec-main.cc:796,1
    - Dst: Utility::getpid
      Src: /src/pdns/pdns/recursordist/rec-main.cc:798,1
    - Dst: Logr::log_t::error
      Src: /src/pdns/pdns/recursordist/rec-main.cc:802,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-main.cc:802,1
    - Dst: Utility::getpid
      Src: /src/pdns/pdns/recursordist/rec-main.cc:802,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-main.cc:802,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - log
    argTypes:
    - Logr::log_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 804
      start: 791
    functionDepth: 0
    functionLinenumber: 791
    functionLinenumberEnd: 804
    functionName: writePid
    functionSourceFile: /src/pdns/pdns/recursordist/rec-main.cc
    functionUses: 2
    functionsReached:
    - Logging::Loggable
    - Logr::log_t::error
    - c_str
    - Utility::getpid
    - arg
    linkageType: ''
    returnType: void
    signature: void writePid(Logr::log_t log)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: stat
      Src: /src/pdns/pdns/recursordist/rec-main.cc:812,1
    - Dst: string::c_str
      Src: /src/pdns/pdns/recursordist/rec-main.cc:812,1
    - Dst: S_ISDIR
      Src: /src/pdns/pdns/recursordist/rec-main.cc:815,1
    - Dst: access
      Src: /src/pdns/pdns/recursordist/rec-main.cc:818,1
    - Dst: string::c_str
      Src: /src/pdns/pdns/recursordist/rec-main.cc:818,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:824,1
    - Dst: Logr::log_t::error
      Src: /src/pdns/pdns/recursordist/rec-main.cc:825,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-main.cc:825,1
    - Dst: _exit
      Src: /src/pdns/pdns/recursordist/rec-main.cc:826,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 1
    argNames:
    - log
    argTypes:
    - Logr::log_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 827
      start: 806
    functionDepth: 0
    functionLinenumber: 806
    functionLinenumberEnd: 827
    functionName: checkSocketDir
    functionSourceFile: /src/pdns/pdns/recursordist/rec-main.cc
    functionUses: 0
    functionsReached:
    - string::c_str
    - _exit
    - S_ISDIR
    - Logging::Loggable
    - access
    - Logr::log_t::error
    - stat
    - arg
    linkageType: ''
    returnType: void
    signature: void checkSocketDir(Logr::log_t log)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:833,1
    - Dst: std::make_unique<nod::NODDB>
      Src: /src/pdns/pdns/recursordist/rec-main.cc:834,1
    - Dst: setCacheDir
      Src: /src/pdns/pdns/recursordist/rec-main.cc:836,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:836,1
    - Dst: Logr::log_t::error
      Src: /src/pdns/pdns/recursordist/rec-main.cc:839,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-main.cc:839,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:839,1
    - Dst: _exit
      Src: /src/pdns/pdns/recursordist/rec-main.cc:840,1
    - Dst: init
      Src: /src/pdns/pdns/recursordist/rec-main.cc:842,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/recursordist/rec-main.cc:843,1
    - Dst: _exit
      Src: /src/pdns/pdns/recursordist/rec-main.cc:844,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:846,1
    - Dst: setSnapshotInterval
      Src: /src/pdns/pdns/recursordist/rec-main.cc:847,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:847,1
    - Dst: dnsdist_ffi_dnsquestion_get_id
      Src: /src/pdns/pdns/recursordist/rec-main.cc:848,1
    - Dst: housekeepingThread
      Src: /src/pdns/pdns/recursordist/rec-main.cc:849,1
    - Dst: std::thread::detach
      Src: /src/pdns/pdns/recursordist/rec-main.cc:851,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:855,1
    - Dst: std::make_unique<nod::UniqueResponseDB>
      Src: /src/pdns/pdns/recursordist/rec-main.cc:856,1
    - Dst: setCacheDir
      Src: /src/pdns/pdns/recursordist/rec-main.cc:858,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:858,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/recursordist/rec-main.cc:861,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-main.cc:861,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:861,1
    - Dst: _exit
      Src: /src/pdns/pdns/recursordist/rec-main.cc:862,1
    - Dst: init
      Src: /src/pdns/pdns/recursordist/rec-main.cc:864,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/recursordist/rec-main.cc:865,1
    - Dst: _exit
      Src: /src/pdns/pdns/recursordist/rec-main.cc:866,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:868,1
    - Dst: setSnapshotInterval
      Src: /src/pdns/pdns/recursordist/rec-main.cc:869,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:869,1
    - Dst: dnsdist_ffi_dnsquestion_get_id
      Src: /src/pdns/pdns/recursordist/rec-main.cc:870,1
    - Dst: housekeepingThread
      Src: /src/pdns/pdns/recursordist/rec-main.cc:871,1
    - Dst: std::thread::detach
      Src: /src/pdns/pdns/recursordist/rec-main.cc:873,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 39
    argCount: 1
    argNames:
    - log
    argTypes:
    - Logr::log_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 876
      start: 830
    functionDepth: 2
    functionLinenumber: 830
    functionLinenumberEnd: 876
    functionName: setupNODThread
    functionSourceFile: /src/pdns/pdns/recursordist/rec-main.cc
    functionUses: 0
    functionsReached:
    - setSnapshotInterval
    - housekeepingThread
    - _exit
    - Logr::log_t::info
    - Logging::Loggable
    - setCacheDir
    - init
    - Logr::log_t::error
    - std::make_unique<nod::UniqueResponseDB>
    - dnsdist_ffi_dnsquestion_get_id
    - std::make_unique<nod::NODDB>
    - std::thread::detach
    - arg
    linkageType: ''
    returnType: void
    signature: void setupNODThread(Logr::log_t log)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: stringtok
      Src: /src/pdns/pdns/recursordist/rec-main.cc:881,1
    - Dst: add
      Src: /src/pdns/pdns/recursordist/rec-main.cc:883,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/rec-main.cc:883,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - ' wlist'
    - ' matchNode'
    argTypes:
    - std::string
    - SuffixMatchNode
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 885
      start: 878
    functionDepth: 0
    functionLinenumber: 878
    functionLinenumberEnd: 885
    functionName: parseIgnorelist
    functionSourceFile: /src/pdns/pdns/recursordist/rec-main.cc
    functionUses: 0
    functionsReached:
    - add
    - stringtok
    - DNSName
    linkageType: ''
    returnType: void
    signature: void parseIgnorelist(const std::string& wlist, SuffixMatchNode& matchNode)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ArgException
      Src: /src/pdns/pdns/recursordist/rec-main.cc:892,1
    - Dst: getline
      Src: /src/pdns/pdns/recursordist/rec-main.cc:895,1
    - Dst: Utility::trim
      Src: /src/pdns/pdns/recursordist/rec-main.cc:896,1
    - Dst: add
      Src: /src/pdns/pdns/recursordist/rec-main.cc:899,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/rec-main.cc:899,1
    - Dst: withName
      Src: /src/pdns/pdns/recursordist/rec-main.cc:902,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/rec-main.cc:902,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-main.cc:902,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 2
    argNames:
    - ' fname'
    - ' matchNode'
    argTypes:
    - std::string
    - SuffixMatchNode
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 905
      start: 887
    functionDepth: 0
    functionLinenumber: 887
    functionLinenumberEnd: 905
    functionName: parseIgnorelistFile
    functionSourceFile: /src/pdns/pdns/recursordist/rec-main.cc
    functionUses: 0
    functionsReached:
    - add
    - Logging::Loggable
    - withName
    - what
    - DNSName
    - ArgException
    - getline
    - Utility::trim
    linkageType: ''
    returnType: void
    signature: void parseIgnorelistFile(const std::string& fname, SuffixMatchNode&
      matchNode)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:910,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/rec-main.cc:911,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:911,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:912,1
    - Dst: parseIgnorelist
      Src: /src/pdns/pdns/recursordist/rec-main.cc:913,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:913,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:914,1
    - Dst: parseIgnorelistFile
      Src: /src/pdns/pdns/recursordist/rec-main.cc:915,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:915,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:919,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:920,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:921,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:922,1
    - Dst: parseIgnorelist
      Src: /src/pdns/pdns/recursordist/rec-main.cc:923,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:923,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:924,1
    - Dst: parseIgnorelistFile
      Src: /src/pdns/pdns/recursordist/rec-main.cc:925,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:925,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 927
      start: 907
    functionDepth: 1
    functionLinenumber: 907
    functionLinenumberEnd: 927
    functionName: setupNODGlobal
    functionSourceFile: /src/pdns/pdns/recursordist/rec-main.cc
    functionUses: 0
    functionsReached:
    - parseIgnorelist
    - parseIgnorelistFile
    - arg
    - DNSName
    linkageType: ''
    returnType: void
    signature: void setupNODGlobal()
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: fork
      Src: /src/pdns/pdns/recursordist/rec-main.cc:932,1
    - Dst: Logr::log_t::error
      Src: /src/pdns/pdns/recursordist/rec-main.cc:935,1
    - Dst: exit
      Src: /src/pdns/pdns/recursordist/rec-main.cc:936,1
    - Dst: exit
      Src: /src/pdns/pdns/recursordist/rec-main.cc:938,1
    - Dst: setsid
      Src: /src/pdns/pdns/recursordist/rec-main.cc:941,1
    - Dst: open
      Src: /src/pdns/pdns/recursordist/rec-main.cc:943,1
    - Dst: Logr::log_t::error
      Src: /src/pdns/pdns/recursordist/rec-main.cc:946,1
    - Dst: dup2
      Src: /src/pdns/pdns/recursordist/rec-main.cc:949,1
    - Dst: dup2
      Src: /src/pdns/pdns/recursordist/rec-main.cc:950,1
    - Dst: dup2
      Src: /src/pdns/pdns/recursordist/rec-main.cc:951,1
    - Dst: close
      Src: /src/pdns/pdns/recursordist/rec-main.cc:952,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 1
    argNames:
    - log
    argTypes:
    - Logr::log_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 954
      start: 930
    functionDepth: 0
    functionLinenumber: 930
    functionLinenumberEnd: 954
    functionName: daemonize
    functionSourceFile: /src/pdns/pdns/recursordist/rec-main.cc
    functionUses: 2
    functionsReached:
    - Logr::log_t::error
    - fork
    - setsid
    - open
    - dup2
    - exit
    - close
    linkageType: ''
    returnType: void
    signature: void daemonize(Logr::log_t log)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _exit
      Src: /src/pdns/pdns/recursordist/rec-main.cc:958,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - arg
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 959
      start: 956
    functionDepth: 0
    functionLinenumber: 956
    functionLinenumberEnd: 959
    functionName: termIntHandler
    functionSourceFile: /src/pdns/pdns/recursordist/rec-main.cc
    functionUses: 0
    functionsReached:
    - _exit
    linkageType: ''
    returnType: void
    signature: void termIntHandler([[maybe_unused]] int arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - arg
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 964
      start: 961
    functionDepth: 0
    functionLinenumber: 961
    functionLinenumberEnd: 964
    functionName: usr1Handler
    functionSourceFile: /src/pdns/pdns/recursordist/rec-main.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void usr1Handler([[maybe_unused]] int arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SyncRes::setDefaultLogMode
      Src: /src/pdns/pdns/recursordist/rec-main.cc:969,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:970,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - arg
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 971
      start: 966
    functionDepth: 1
    functionLinenumber: 966
    functionLinenumberEnd: 971
    functionName: usr2Handler
    functionSourceFile: /src/pdns/pdns/recursordist/rec-main.cc
    functionUses: 0
    functionsReached:
    - arg
    - SyncRes::setDefaultLogMode
    linkageType: ''
    returnType: void
    signature: void usr2Handler([[maybe_unused]] int arg)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: readFileIfThere
      Src: /src/pdns/pdns/recursordist/rec-main.cc:977,1
    - Dst: std::stoi
      Src: /src/pdns/pdns/recursordist/rec-main.cc:978,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/recursordist/rec-main.cc:980,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-main.cc:980,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - log
    argTypes:
    - Logr::log_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 984
      start: 973
    functionDepth: 0
    functionLinenumber: 973
    functionLinenumberEnd: 984
    functionName: checkLinuxIPv6Limits
    functionSourceFile: /src/pdns/pdns/recursordist/rec-main.cc
    functionUses: 0
    functionsReached:
    - Logging::Loggable
    - readFileIfThere
    - Logr::log_t::info
    - std::stoi
    linkageType: ''
    returnType: void
    signature: void checkLinuxIPv6Limits([[maybe_unused]] Logr::log_t log)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: readFileIfThere
      Src: /src/pdns/pdns/recursordist/rec-main.cc:990,1
    - Dst: std::stoull
      Src: /src/pdns/pdns/recursordist/rec-main.cc:991,1
    - Dst: numTCPWorkers
      Src: /src/pdns/pdns/recursordist/rec-main.cc:994,1
    - Dst: numUDPWorkers
      Src: /src/pdns/pdns/recursordist/rec-main.cc:994,1
    - Dst: static_cast<unsigned int>
      Src: /src/pdns/pdns/recursordist/rec-main.cc:997,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/recursordist/rec-main.cc:998,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-main.cc:999,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-main.cc:999,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1000,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - log
    argTypes:
    - Logr::log_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1004
      start: 986
    functionDepth: 1
    functionLinenumber: 986
    functionLinenumberEnd: 1004
    functionName: checkOrFixLinuxMapCountLimits
    functionSourceFile: /src/pdns/pdns/recursordist/rec-main.cc
    functionUses: 0
    functionsReached:
    - readFileIfThere
    - Logr::log_t::info
    - Logging::Loggable
    - numTCPWorkers
    - static_cast<unsigned int>
    - std::stoull
    - numUDPWorkers
    linkageType: ''
    returnType: void
    signature: void checkOrFixLinuxMapCountLimits([[maybe_unused]] Logr::log_t log)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: getFilenumLimit
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1008,1
    - Dst: numRecursorThreads
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1010,1
    - Dst: numUDPWorkers
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1012,1
    - Dst: numTCPWorkers
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1012,1
    - Dst: getFilenumLimit
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1034,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1036,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1037,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1037,1
    - Dst: _exit
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1038,1
    - Dst: setFilenumLimit
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1041,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1042,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1042,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1046,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1046,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1046,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1046,1
    - Dst: setFilenumLimit
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1048,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 20
    argCount: 2
    argNames:
    - listeningSockets
    - log
    argTypes:
    - unsigned int
    - Logr::log_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1051
      start: 1006
    functionDepth: 1
    functionLinenumber: 1006
    functionLinenumberEnd: 1051
    functionName: checkOrFixFDS
    functionSourceFile: /src/pdns/pdns/recursordist/rec-main.cc
    functionUses: 0
    functionsReached:
    - _exit
    - Logr::log_t::info
    - Logging::Loggable
    - setFilenumLimit
    - numTCPWorkers
    - getFilenumLimit
    - numUDPWorkers
    - numRecursorThreads
    linkageType: ''
    returnType: void
    signature: void checkOrFixFDS(unsigned int listeningSockets, Logr::log_t log)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Logger::Urgency
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1078,1
    - Dst: vector::emplace_back
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1087,1
    - Dst: appendKeyAndVal
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1089,1
    - Dst: appendKeyAndVal
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1091,1
    - Dst: error::value
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1091,1
    - Dst: appendKeyAndVal
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1093,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1093,1
    - Dst: appendKeyAndVal
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1094,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1094,1
    - Dst: appendKeyAndVal
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1096,1
    - Dst: name::value
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1096,1
    - Dst: appendKeyAndVal
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1099,1
    - Dst: Logging::toTimestampStringMilli
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1099,1
    - Dst: first::at
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1101,1
    - Dst: set::count
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1101,1
    - Dst: string::append
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1103,1
    - Dst: appendKeyAndVal
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1104,1
    - Dst: toUpper
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1104,1
    - Dst: appendKeyAndVal
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1107,1
    - Dst: toUpper
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1107,1
    - Dst: appendKeyAndVal
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1112,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1112,1
    - Dst: thread_local_id
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1112,1
    - Dst: vector::reserve
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1115,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1115,1
    - Dst: vector::emplace_back
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1118,1
    - Dst: const_cast<void*>
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1118,1
    - Dst: reinterpret_cast<const void*>
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1118,1
    - Dst: data
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1118,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1118,1
    - Dst: sd_journal_sendv
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1120,1
    - Dst: vector::data
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1120,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1120,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1120,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 28
    argCount: 1
    argNames:
    - ' entry'
    argTypes:
    - Logging::Entry
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1121
      start: 1054
    functionDepth: 1
    functionLinenumber: 1054
    functionLinenumberEnd: 1121
    functionName: loggerSDBackend
    functionSourceFile: /src/pdns/pdns/recursordist/rec-main.cc
    functionUses: 0
    functionsReached:
    - appendKeyAndVal
    - sd_journal_sendv
    - std::to_string
    - reinterpret_cast<const void*>
    - first::at
    - thread_local_id
    - error::value
    - vector::reserve
    - static_cast<int>
    - toUpper
    - size
    - name::value
    - Logging::toTimestampStringMilli
    - vector::data
    - Logger::Urgency
    - string::append
    - set::count
    - vector::emplace_back
    - data
    - const_cast<void*>
    - vector::size
    linkageType: ''
    returnType: void
    signature: void loggerSDBackend(const Logging::Entry& entry)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Logger::Urgency
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1127,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1137,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1140,1
    - Dst: thread_local_id
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1140,1
    - Dst: Logging::toTimestampStringMilli
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1141,1
    - Dst: json11::Json::object::emplace
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1145,1
    - Dst: error::value
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1145,1
    - Dst: json11::Json::object::emplace
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1149,1
    - Dst: name::value
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1149,1
    - Dst: json11::Json::object::emplace
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1153,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1153,1
    - Dst: json11::Json::object::emplace
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1157,1
    - Dst: std::string::clear
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1161,1
    - Dst: json11::Json::dump
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1163,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 1
    argNames:
    - ' entry'
    argTypes:
    - Logging::Entry
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1165
      start: 1124
    functionDepth: 1
    functionLinenumber: 1124
    functionLinenumberEnd: 1165
    functionName: loggerJSONBackend
    functionSourceFile: /src/pdns/pdns/recursordist/rec-main.cc
    functionUses: 0
    functionsReached:
    - Logger::Urgency
    - std::to_string
    - json11::Json::dump
    - std::string::clear
    - thread_local_id
    - name::value
    - error::value
    - Logging::toTimestampStringMilli
    - json11::Json::object::emplace
    linkageType: ''
    returnType: void
    signature: void loggerJSONBackend(const Logging::Entry& entry)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Logger::Urgency
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1172,1
    - Dst: std::stringstream::str
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1178,1
    - Dst: std::quoted
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1179,1
    - Dst: std::quoted
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1181,1
    - Dst: error::value
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1181,1
    - Dst: std::quoted
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1185,1
    - Dst: name::value
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1185,1
    - Dst: std::quoted
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1187,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1187,1
    - Dst: std::quoted
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1189,1
    - Dst: Logr::Logger::toString
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1189,1
    - Dst: std::quoted
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1193,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1193,1
    - Dst: thread_local_id
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1193,1
    - Dst: std::quoted
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1195,1
    - Dst: Logging::toTimestampStringMilli
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1195,1
    - Dst: std::quoted
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1198,1
    - Dst: std::stringstream::str
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1201,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 22
    argCount: 1
    argNames:
    - ' entry'
    argTypes:
    - Logging::Entry
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1202
      start: 1167
    functionDepth: 1
    functionLinenumber: 1167
    functionLinenumberEnd: 1202
    functionName: loggerBackend
    functionSourceFile: /src/pdns/pdns/recursordist/rec-main.cc
    functionUses: 0
    functionsReached:
    - std::quoted
    - Logger::Urgency
    - std::to_string
    - Logr::Logger::toString
    - std::stringstream::str
    - name::value
    - thread_local_id
    - error::value
    - Logging::toTimestampStringMilli
    linkageType: ''
    returnType: void
    signature: void loggerBackend(const Logging::Entry& entry)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::setprecision
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1210,1
    - Dst: static_cast<double>
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1210,1
    - Dst: static_cast<double>
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1210,1
    - Dst: std::ostringstream::str
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1211,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - nom
    - denom
    argTypes:
    - uint64_t
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1212
      start: 1204
    functionDepth: 0
    functionLinenumber: 1204
    functionLinenumberEnd: 1212
    functionName: ratePercentage
    functionSourceFile: /src/pdns/pdns/recursordist/rec-main.cc
    functionUses: 0
    functionsReached:
    - std::setprecision
    - std::ostringstream::str
    - static_cast<double>
    linkageType: ''
    returnType: std::string
    signature: std::string ratePercentage(uint64_t nom, uint64_t denom)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: getCacheHits
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1219,1
    - Dst: getCacheMisses
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1220,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1221,1
    - Dst: stats
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1222,1
    - Dst: stats
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1223,1
    - Dst: ratePercentage
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1224,1
    - Dst: ratePercentage
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1225,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1226,1
    - Dst: getTaskPushes
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1227,1
    - Dst: getTaskExpired
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1228,1
    - Dst: getTaskSize
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1229,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1230,1
    - Dst: getHits
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1231,1
    - Dst: getMisses
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1232,1
    - Dst: sum
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1234,1
    - Dst: sum
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1235,1
    - Dst: sum
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1236,1
    - Dst: sum
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1237,1
    - Dst: sum
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1238,1
    - Dst: sum
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1239,1
    - Dst: withName
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1241,1
    - Dst: auto::info
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1245,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1246,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1247,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1248,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1249,1
    - Dst: ratePercentage
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1249,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1250,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1251,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1252,1
    - Dst: auto::info
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1253,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1254,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1255,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1256,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1257,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1258,1
    - Dst: ratePercentage
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1258,1
    - Dst: auto::info
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1259,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1260,1
    - Dst: SyncRes::getThrottledServersSize
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1260,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1261,1
    - Dst: SyncRes::getNSSpeedsSize
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1261,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1262,1
    - Dst: SyncRes::getFailedServersSize
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1262,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1263,1
    - Dst: SyncRes::getEDNSStatusesSize
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1263,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1264,1
    - Dst: SyncRes::getNonResolvingNSSize
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1264,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1265,1
    - Dst: SyncRes::getSaveParentsNSSetsSize
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1265,1
    - Dst: auto::info
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1266,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1267,1
    - Dst: ratePercentage
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1267,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1268,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1269,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1270,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1271,1
    - Dst: getCurrentIdleTCPConnections
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1271,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1272,1
    - Dst: broadcastAccFunction
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1272,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1273,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1274,1
    - Dst: ratePercentage
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1274,1
    - Dst: auto::info
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1275,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1276,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1277,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1278,1
    - Dst: RecThreadInfo::infos
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1281,1
    - Dst: isWorker
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1282,1
    - Dst: auto::info
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1283,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1283,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1283,1
    - Dst: getName
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1283,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1283,1
    - Dst: getNumberOfDistributedQueries
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1283,1
    - Dst: time
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1287,1
    - Dst: auto::info
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1289,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1289,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1290,1
    - Dst: auto::info
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1296,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 22
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1300
      start: 1214
    functionDepth: 1
    functionLinenumber: 1214
    functionLinenumberEnd: 1300
    functionName: doStats
    functionSourceFile: /src/pdns/pdns/recursordist/rec-main.cc
    functionUses: 0
    functionsReached:
    - getNumberOfDistributedQueries
    - withName
    - getCurrentIdleTCPConnections
    - isWorker
    - getTaskExpired
    - SyncRes::getEDNSStatusesSize
    - SyncRes::getNonResolvingNSSize
    - getHits
    - getName
    - Logging::Loggable
    - time
    - size
    - SyncRes::getFailedServersSize
    - sum
    - getMisses
    - auto::info
    - SyncRes::getSaveParentsNSSetsSize
    - broadcastAccFunction
    - SyncRes::getThrottledServersSize
    - ratePercentage
    - getCacheHits
    - SyncRes::getNSSpeedsSize
    - getTaskPushes
    - getCacheMisses
    - getTaskSize
    - RecThreadInfo::infos
    - stats
    linkageType: ''
    returnType: void
    signature: void doStats()
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<NetmaskGroup>
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1304,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1306,1
    - Dst: string::empty
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1308,1
    - Dst: boost::ends_with
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1309,1
    - Dst: pdns::settings::rec::readYamlAllowFromFile
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1311,1
    - Dst: auto::addMask
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1313,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1313,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1321,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1321,1
    - Dst: getline
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1324,1
    - Dst: string::find
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1325,1
    - Dst: string::resize
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1327,1
    - Dst: Utility::trim
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1329,1
    - Dst: string::empty
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1330,1
    - Dst: auto::addMask
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1334,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1337,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1337,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1338,1
    - Dst: auto::size
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1338,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1338,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1340,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1340,1
    - Dst: stringtok
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1342,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1342,1
    - Dst: auto::addMask
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1345,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1347,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1347,1
    - Dst: Logging::IterLoggable
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1347,1
    - Dst: vector::begin
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1347,1
    - Dst: vector::end
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1347,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 30
    argCount: 3
    argNames:
    - ' aclFile'
    - ' aclSetting'
    - log
    argTypes:
    - std::string
    - std::string
    - Logr::log_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1351
      start: 1302
    functionDepth: 1
    functionLinenumber: 1302
    functionLinenumberEnd: 1351
    functionName: parseACL
    functionSourceFile: /src/pdns/pdns/recursordist/rec-main.cc
    functionUses: 0
    functionsReached:
    - stringerror
    - runtime_error
    - getline
    - auto::size
    - vector::begin
    - string::resize
    - stringtok
    - auto::addMask
    - Logr::log_t::info
    - string::empty
    - Logging::Loggable
    - string
    - string::find
    - Logging::IterLoggable
    - empty
    - std::make_shared<NetmaskGroup>
    - boost::ends_with
    - pdns::settings::rec::readYamlAllowFromFile
    - vector::end
    - Utility::trim
    - arg
    linkageType: ''
    returnType: std::shared_ptr<NetmaskGroup>
    signature: std::shared_ptr<NetmaskGroup> parseACL(const std::string& aclFile,
      const std::string& aclSetting, Logr::log_t log)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1355,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - nmgroup
    argTypes:
    - std::shared_ptr<NetmaskGroup>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1357
      start: 1353
    functionDepth: 0
    functionLinenumber: 1353
    functionLinenumberEnd: 1357
    functionName: pleaseSupplantAllowFrom
    functionSourceFile: /src/pdns/pdns/recursordist/rec-main.cc
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void * pleaseSupplantAllowFrom(std::shared_ptr<NetmaskGroup> nmgroup)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1361,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - nmgroup
    argTypes:
    - std::shared_ptr<NetmaskGroup>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1363
      start: 1359
    functionDepth: 0
    functionLinenumber: 1359
    functionLinenumberEnd: 1363
    functionName: pleaseSupplantAllowNotifyFrom
    functionSourceFile: /src/pdns/pdns/recursordist/rec-main.cc
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void * pleaseSupplantAllowNotifyFrom(std::shared_ptr<NetmaskGroup>
      nmgroup)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1367,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - allowNotifyFor
    argTypes:
    - std::shared_ptr<notifyset_t>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1369
      start: 1365
    functionDepth: 0
    functionLinenumber: 1365
    functionLinenumberEnd: 1369
    functionName: pleaseSupplantAllowNotifyFor
    functionSourceFile: /src/pdns/pdns/recursordist/rec-main.cc
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void * pleaseSupplantAllowNotifyFor(std::shared_ptr<notifyset_t> allowNotifyFor)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1373,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1374,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - acl
    - except
    argTypes:
    - std::shared_ptr<NetmaskGroup>
    - std::shared_ptr<std::set<ComboAddress>>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1376
      start: 1371
    functionDepth: 0
    functionLinenumber: 1371
    functionLinenumberEnd: 1376
    functionName: pleaseSupplantProxyProtocolSettings
    functionSourceFile: /src/pdns/pdns/recursordist/rec-main.cc
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void * pleaseSupplantProxyProtocolSettings(std::shared_ptr<NetmaskGroup>
      acl, std::shared_ptr<std::set<ComboAddress>> except)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: withName
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1380,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1393,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1394,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1394,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1395,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1395,1
    - Dst: cleanSlashes
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1397,1
    - Dst: pdns::settings::rec::readYamlSettings
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1404,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1404,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1408,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1411,1
    - Dst: pdns::settings::rec::processAPIDir
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1414,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1414,1
    - Dst: pdns::settings::rec::setArgsForACLRelatedSettings
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1416,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1422,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1423,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1425,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1427,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1428,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1430,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1431,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1432,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1434,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1435,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1439,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1439,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1443,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1443,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1444,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1452,1
    - Dst: parseACL
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1455,1
    - Dst: auto::empty
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1457,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1458,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1458,1
    - Dst: auto::info
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1459,1
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1464,1
    - Dst: broadcastFunction
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1466,1
    - Dst: pleaseSupplantAllowFrom
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1466,1
    - Dst: parseACL
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1468,1
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1470,1
    - Dst: broadcastFunction
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1472,1
    - Dst: pleaseSupplantAllowNotifyFrom
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1472,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1476,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1476,1
    - Dst: std::make_shared<NetmaskGroup>
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1477,1
    - Dst: std::shared_ptr::toMasks
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1478,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1478,1
    - Dst: stringtok
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1481,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1481,1
    - Dst: std::vector::empty
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1482,1
    - Dst: std::make_shared<std::set<ComboAddress>>
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1483,1
    - Dst: std::shared_ptr::emplace
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1486,1
    - Dst: broadcastFunction
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1494,1
    - Dst: pleaseSupplantProxyProtocolSettings
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1494,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 74
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1497
      start: 1378
    functionDepth: 2
    functionLinenumber: 1378
    functionLinenumberEnd: 1497
    functionName: parseACLs
    functionSourceFile: /src/pdns/pdns/recursordist/rec-main.cc
    functionUses: 1
    functionsReached:
    - broadcastFunction
    - withName
    - parseACL
    - runtime_error
    - pdns::settings::rec::readYamlSettings
    - pleaseSupplantAllowFrom
    - pdns::settings::rec::processAPIDir
    - std::shared_ptr::toMasks
    - stringtok
    - std::make_shared<std::set<ComboAddress>>
    - lock
    - pleaseSupplantAllowNotifyFrom
    - empty
    - std::make_shared<NetmaskGroup>
    - auto::info
    - std::shared_ptr::emplace
    - std::vector::empty
    - arg
    - pleaseSupplantProxyProtocolSettings
    - cleanSlashes
    - pdns::settings::rec::setArgsForACLRelatedSettings
    - auto::empty
    linkageType: ''
    returnType: void
    signature: void parseACLs()
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: RecThreadInfo::infos
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1510,1
    - Dst: is_thread_inited
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1510,1
    - Dst: func
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1516,1
    - Dst: RecThreadInfo::infos
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1520,1
    - Dst: thread_local_id
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1521,1
    - Dst: func
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1522,1
    - Dst: ThreadMSG::ThreadMSG
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1526,1
    - Dst: __tsan_release
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1530,1
    - Dst: write
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1532,1
    - Dst: getPipes
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1532,1
    - Dst: __tsan_acquire
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1534,1
    - Dst: unixDie
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1538,1
    - Dst: read
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1542,1
    - Dst: getPipes
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1542,1
    - Dst: unixDie
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1543,1
    - Dst: __tsan_acquire
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1546,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 25
    argCount: 1
    argNames:
    - ' func'
    argTypes:
    - pipefunc_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1554
      start: 1501
    functionDepth: 1
    functionLinenumber: 1501
    functionLinenumberEnd: 1554
    functionName: broadcastFunction
    functionSourceFile: /src/pdns/pdns/recursordist/rec-main.cc
    functionUses: 3
    functionsReached:
    - __tsan_acquire
    - read
    - __tsan_release
    - getPipes
    - unixDie
    - is_thread_inited
    - func
    - ThreadMSG::ThreadMSG
    - thread_local_id
    - write
    - RecThreadInfo::infos
    linkageType: ''
    returnType: void
    signature: void broadcastFunction(const pipefunc_t& func)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: func
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1559,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' func'
    argTypes:
    - std::function<T*()>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1560
      start: 1557
    functionDepth: 0
    functionLinenumber: 1557
    functionLinenumberEnd: 1560
    functionName: voider
    functionSourceFile: /src/pdns/pdns/recursordist/rec-main.cc
    functionUses: 0
    functionsReached:
    - func
    linkageType: ''
    returnType: void
    signature: void * voider(const std::function<T*()>& func)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: insert
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1564,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1564,1
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1564,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1564,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ' lhs'
    - ' rhs'
    argTypes:
    - vector<ComboAddress>
    - vector<ComboAddress>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1566
      start: 1562
    functionDepth: 1
    functionLinenumber: 1562
    functionLinenumberEnd: 1566
    functionName: '& operator+=(vector<ComboAddress>& lhs, const vector<ComboAddress>&
      rhs)'
    functionSourceFile: /src/pdns/pdns/recursordist/rec-main.cc
    functionUses: 0
    functionsReached:
    - end
    - insert
    - begin
    linkageType: ''
    returnType: vector<ComboAddress>
    signature: vector<ComboAddress> & operator+=(vector<ComboAddress>& lhs, const
      vector<ComboAddress>& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: insert
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1570,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1570,1
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1570,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1570,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ' lhs'
    - ' rhs'
    argTypes:
    - vector<pair<DNSName, uint16_t>>
    - vector<pair<DNSName, uint16_t>>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1572
      start: 1568
    functionDepth: 1
    functionLinenumber: 1568
    functionLinenumberEnd: 1572
    functionName: '& operator+=(vector<pair<DNSName, uint16_t>>& lhs, const vector<pair<DNSName,
      uint16_t>>& rhs)'
    functionSourceFile: /src/pdns/pdns/recursordist/rec-main.cc
    functionUses: 0
    functionsReached:
    - end
    - insert
    - begin
    linkageType: ''
    returnType: vector<pair<DNSName, uint16_t>>
    signature: vector<pair<DNSName, uint16_t>> & operator+=(vector<pair<DNSName, uint16_t>>&
      lhs, const vector<pair<DNSName, uint16_t>>& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - ' lhs'
    - ' rhs'
    argTypes:
    - ProxyMappingStats_t
    - ProxyMappingStats_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1581
      start: 1574
    functionDepth: 0
    functionLinenumber: 1574
    functionLinenumberEnd: 1581
    functionName: '& operator+=(ProxyMappingStats_t& lhs, const ProxyMappingStats_t&
      rhs)'
    functionSourceFile: /src/pdns/pdns/recursordist/rec-main.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: ProxyMappingStats_t
    signature: ProxyMappingStats_t & operator+=(ProxyMappingStats_t& lhs, const ProxyMappingStats_t&
      rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - ' lhs'
    - ' rhs'
    argTypes:
    - RemoteLoggerStats_t
    - RemoteLoggerStats_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1589
      start: 1583
    functionDepth: 0
    functionLinenumber: 1583
    functionLinenumberEnd: 1589
    functionName: '& operator+=(RemoteLoggerStats_t& lhs, const RemoteLoggerStats_t&
      rhs)'
    functionSourceFile: /src/pdns/pdns/recursordist/rec-main.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: RemoteLoggerStats_t
    signature: RemoteLoggerStats_t & operator+=(RemoteLoggerStats_t& lhs, const RemoteLoggerStats_t&
      rhs)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: thread_local_id
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1598,1
    - Dst: withName
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1599,1
    - Dst: _exit
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1600,1
    - Dst: T
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1607,1
    - Dst: RecThreadInfo::infos
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1608,1
    - Dst: thread_local_id
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1609,1
    - Dst: getPipes
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1613,1
    - Dst: ThreadMSG::ThreadMSG
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1614,1
    - Dst: voider
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1615,1
    - Dst: __tsan_release
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1618,1
    - Dst: write
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1620,1
    - Dst: __tsan_acquire
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1622,1
    - Dst: unixDie
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1625,1
    - Dst: read
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1629,1
    - Dst: unixDie
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1630,1
    - Dst: __tsan_acquire
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1632,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 28
    argCount: 1
    argNames:
    - ' func'
    argTypes:
    - std::function<T*()>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1642
      start: 1596
    functionDepth: 1
    functionLinenumber: 1596
    functionLinenumberEnd: 1642
    functionName: broadcastAccFunction
    functionSourceFile: /src/pdns/pdns/recursordist/rec-main.cc
    functionUses: 12
    functionsReached:
    - __tsan_acquire
    - _exit
    - read
    - __tsan_release
    - withName
    - getPipes
    - ThreadMSG::ThreadMSG
    - unixDie
    - thread_local_id
    - write
    - T
    - RecThreadInfo::infos
    - voider
    linkageType: ''
    returnType: T
    signature: T broadcastAccFunction(const std::function<T*()>& func)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: checkLinuxIPv6Limits
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1655,1
    - Dst: pdns::parseQueryLocalAddress
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1657,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1657,1
    - Dst: Logr::log_t::error
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1660,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1660,1
    - Dst: pdns::isQueryLocalAddressFamilyEnabled
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1664,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1666,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1669,1
    - Dst: pdns::isQueryLocalAddressFamilyEnabled
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1672,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1674,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1677,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1681,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 25
    argCount: 1
    argNames:
    - log
    argTypes:
    - Logr::log_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1685
      start: 1653
    functionDepth: 1
    functionLinenumber: 1653
    functionLinenumberEnd: 1685
    functionName: initNet
    functionSourceFile: /src/pdns/pdns/recursordist/rec-main.cc
    functionUses: 0
    functionsReached:
    - Logr::log_t::info
    - what
    - Logr::log_t::error
    - checkLinuxIPv6Limits
    - pdns::isQueryLocalAddressFamilyEnabled
    - arg
    - pdns::parseQueryLocalAddress
    linkageType: ''
    returnType: int
    signature: int initNet(Logr::log_t log)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1689,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1692,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1695,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1698,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1701,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1705,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1705,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1705,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1710,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1712,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1718,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1719,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1720,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1721,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1722,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1723,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1727,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1727,1
    - Dst: stringtok
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1729,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1729,1
    - Dst: DNSCryptoKeyEngine::switchOffAlgorithm
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1731,1
    - Dst: pdns::checked_stoi<unsigned int>
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1731,1
    - Dst: DNSCryptoKeyEngine::verifyOne
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1736,1
    - Dst: DNSCryptoKeyEngine::switchOffAlgorithm
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1737,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1738,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1738,1
    - Dst: vector::empty
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1742,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1743,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1743,1
    - Dst: Logging::IterLoggable
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1743,1
    - Dst: vector::begin
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1743,1
    - Dst: vector::end
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1743,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 47
    argCount: 1
    argNames:
    - log
    argTypes:
    - Logr::log_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1747
      start: 1687
    functionDepth: 0
    functionLinenumber: 1687
    functionLinenumberEnd: 1747
    functionName: initDNSSEC
    functionSourceFile: /src/pdns/pdns/recursordist/rec-main.cc
    functionUses: 0
    functionsReached:
    - vector::begin
    - vector::push_back
    - stringtok
    - std::to_string
    - Logr::log_t::info
    - Logging::Loggable
    - DNSCryptoKeyEngine::switchOffAlgorithm
    - DNSCryptoKeyEngine::verifyOne
    - vector::end
    - vector::empty
    - pdns::checked_stoi<unsigned int>
    - Logging::IterLoggable
    - empty
    - arg
    linkageType: ''
    returnType: int
    signature: int initDNSSEC(Logr::log_t log)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1751,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1751,1
    - Dst: stringtok
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1753,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1753,1
    - Dst: vector::emplace_back
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1754,1
    - Dst: vector::emplace_back
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1755,1
    - Dst: SyncRes::addDontQuery
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1758,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1760,1
    - Dst: Logging::IterLoggable
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1760,1
    - Dst: vector::begin
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1760,1
    - Dst: vector::end
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1760,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - log
    argTypes:
    - Logr::log_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1762
      start: 1749
    functionDepth: 1
    functionLinenumber: 1749
    functionLinenumberEnd: 1762
    functionName: initDontQuery
    functionSourceFile: /src/pdns/pdns/recursordist/rec-main.cc
    functionUses: 0
    functionsReached:
    - vector::begin
    - stringtok
    - Logr::log_t::info
    - vector::end
    - Logging::IterLoggable
    - vector::emplace_back
    - empty
    - SyncRes::addDontQuery
    - arg
    linkageType: ''
    returnType: void
    signature: void initDontQuery(Logr::log_t log)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1766,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1767,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1768,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1769,1
    - Dst: max
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1770,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1770,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1772,1
    - Dst: std::min
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1774,1
    - Dst: static_cast<unsigned int>
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1774,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1774,1
    - Dst: std::min
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1775,1
    - Dst: static_cast<unsigned int>
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1775,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1775,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1777,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1778,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1779,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1780,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1781,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1782,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1784,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1785,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1786,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1787,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1788,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1789,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1790,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1791,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1792,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1793,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1794,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1796,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1797,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1799,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1800,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1801,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1802,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1803,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1805,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1806,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1807,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1807,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1813,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1814,1
    - Dst: checkFastOpenSysctl
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1817,1
    - Dst: checkTFOconnect
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1818,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1820,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1821,1
    - Dst: SyncRes::clearECSStats
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1822,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1823,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1824,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1825,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1826,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1827,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1829,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1830,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1831,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1834,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1842,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1842,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1846,1
    - Dst: SyncRes::setECSScopeZeroAddress
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1848,1
    - Dst: Netmask
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1848,1
    - Dst: ComboAddress::isIPv4
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1848,1
    - Dst: Netmask::Netmask
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1851,1
    - Dst: pdns::getNonAnyQueryLocalAddress
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1854,1
    - Dst: Netmask
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1856,1
    - Dst: pdns::getNonAnyQueryLocalAddress
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1860,1
    - Dst: Netmask
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1862,1
    - Dst: Netmask
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1867,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1867,1
    - Dst: SyncRes::setECSScopeZeroAddress
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1869,1
    - Dst: SyncRes::parseEDNSSubnetAllowlist
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1872,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1872,1
    - Dst: SyncRes::parseEDNSSubnetAddFor
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1873,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1873,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1874,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1875,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 93
    argCount: 1
    argNames:
    - log
    argTypes:
    - Logr::log_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1877
      start: 1764
    functionDepth: 2
    functionLinenumber: 1764
    functionLinenumberEnd: 1877
    functionName: initSyncRes
    functionSourceFile: /src/pdns/pdns/recursordist/rec-main.cc
    functionUses: 0
    functionsReached:
    - pdns::max
    - max
    - SyncRes::setECSScopeZeroAddress
    - Netmask
    - ComboAddress::isIPv4
    - Logr::log_t::info
    - Logging::Loggable
    - SyncRes::parseEDNSSubnetAllowlist
    - std::min
    - Netmask::Netmask
    - static_cast<unsigned int>
    - checkFastOpenSysctl
    - checkTFOconnect
    - SyncRes::parseEDNSSubnetAddFor
    - SyncRes::clearECSStats
    - pdns::getNonAnyQueryLocalAddress
    - arg
    - ComboAddress
    linkageType: ''
    returnType: int
    signature: int initSyncRes(Logr::log_t log)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1882,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1885,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1889,1
    - Dst: StatRing<T,Comp>::resize
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1892,1
    - Dst: numRecursorThreads
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1892,1
    - Dst: weDistributeQueries
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1896,1
    - Dst: numDistributors
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1898,1
    - Dst: Logging::Logger::info
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1899,1
    - Dst: getDeferredAdds
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1900,1
    - Dst: makeUDPServerSockets
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1902,1
    - Dst: numDistributors
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1902,1
    - Dst: numDistributors
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1902,1
    - Dst: numUDPWorkers
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1907,1
    - Dst: Logging::Logger::info
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1908,1
    - Dst: getDeferredAdds
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1909,1
    - Dst: makeUDPServerSockets
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1910,1
    - Dst: numUDPWorkers
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1910,1
    - Dst: numUDPWorkers
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1910,1
    - Dst: numDistributors
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1913,1
    - Dst: numUDPWorkers
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1913,1
    - Dst: numTCPWorkers
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1914,1
    - Dst: Logging::Logger::info
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1915,1
    - Dst: getDeferredAdds
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1916,1
    - Dst: getTCPSockets
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1917,1
    - Dst: makeTCPServerSockets
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1918,1
    - Dst: numTCPWorkers
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1918,1
    - Dst: numTCPWorkers
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1918,1
    - Dst: makeUDPServerSockets
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1925,1
    - Dst: makeTCPServerSockets
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1926,1
    - Dst: numTCPWorkers
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1929,1
    - Dst: Logging::Logger::info
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1930,1
    - Dst: numDistributors
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1930,1
    - Dst: numUDPWorkers
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1930,1
    - Dst: setTCPSockets
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1931,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 30
    argCount: 1
    argNames:
    - log
    argTypes:
    - Logr::log_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1935
      start: 1879
    functionDepth: 1
    functionLinenumber: 1879
    functionLinenumberEnd: 1935
    functionName: initDistribution
    functionSourceFile: /src/pdns/pdns/recursordist/rec-main.cc
    functionUses: 0
    functionsReached:
    - weDistributeQueries
    - setTCPSockets
    - Logr::log_t::info
    - StatRing<T,Comp>::resize
    - numDistributors
    - numTCPWorkers
    - Logging::Logger::info
    - makeUDPServerSockets
    - getDeferredAdds
    - getTCPSockets
    - makeTCPServerSockets
    - numUDPWorkers
    - arg
    - numRecursorThreads
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int initDistribution(Logr::log_t log)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1940,1
    - Dst: fork
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1941,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1946,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1947,1
    - Dst: toConsole
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1948,1
    - Dst: daemonize
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1949,1
    - Dst: Utility::getpid
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1952,1
    - Dst: signal
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1966,1
    - Dst: signal
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1967,1
    - Dst: signal
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1970,1
    - Dst: signal
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1971,1
    - Dst: signal
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1972,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 1
    argNames:
    - log
    argTypes:
    - Logr::log_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1974
      start: 1937
    functionDepth: 0
    functionLinenumber: 1937
    functionLinenumberEnd: 1974
    functionName: initForks
    functionSourceFile: /src/pdns/pdns/recursordist/rec-main.cc
    functionUses: 0
    functionsReached:
    - daemonize
    - Logr::log_t::info
    - toConsole
    - fork
    - Utility::getpid
    - arg
    - signal
    linkageType: ''
    returnType: int
    signature: int initForks(Logr::log_t log)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1978,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1980,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1984,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1986,1
    - Dst: resize
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1990,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1990,1
    - Dst: stringtok
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1992,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1992,1
    - Dst: std::stoi
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1994,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1996,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-main.cc:1996,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 22
    argCount: 1
    argNames:
    - log
    argTypes:
    - Logr::log_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2002
      start: 1976
    functionDepth: 1
    functionLinenumber: 1976
    functionLinenumberEnd: 2002
    functionName: initPorts
    functionSourceFile: /src/pdns/pdns/recursordist/rec-main.cc
    functionUses: 0
    functionsReached:
    - pdns::max
    - stringtok
    - resize
    - Logr::log_t::info
    - Logging::Loggable
    - std::stoi
    - arg
    linkageType: ''
    returnType: int
    signature: int initPorts(Logr::log_t log)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2006,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2008,1
    - Dst: std::make_shared<RecursorSNMPAgent>
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2009,1
    - Dst: run
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2010,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2013,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - log
    argTypes:
    - Logr::log_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2016
      start: 2004
    functionDepth: 0
    functionLinenumber: 2004
    functionLinenumberEnd: 2016
    functionName: initSNMP
    functionSourceFile: /src/pdns/pdns/recursordist/rec-main.cc
    functionUses: 0
    functionsReached:
    - run
    - arg
    - Logr::log_t::info
    - std::make_shared<RecursorSNMPAgent>
    linkageType: ''
    returnType: void
    signature: void initSNMP([[maybe_unused]] Logr::log_t log)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2020,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2020,1
    - Dst: getenv
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2023,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2025,1
    - Dst: chroot
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2029,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2029,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2029,1
    - Dst: chdir
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2029,1
    - Dst: Logr::log_t::error
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2031,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2031,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2031,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2034,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2034,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2034,1
    - Dst: checkSocketDir
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2037,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2039,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2040,1
    - Dst: unlink
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2041,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2041,1
    - Dst: writePid
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2043,1
    - Dst: makeControlChannelSocket
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2045,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2045,1
    - Dst: Utility::dropUserPrivs
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2047,1
    - Dst: dropCapabilities
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2053,1
    - Dst: Logr::log_t::error
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2056,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2056,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 27
    argCount: 3
    argNames:
    - log
    - newuid
    - forks
    argTypes:
    - Logr::log_t
    - uid_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2059
      start: 2018
    functionDepth: 1
    functionLinenumber: 2018
    functionLinenumberEnd: 2059
    functionName: initControl
    functionSourceFile: /src/pdns/pdns/recursordist/rec-main.cc
    functionUses: 0
    functionsReached:
    - Utility::dropUserPrivs
    - checkSocketDir
    - dropCapabilities
    - arg
    - getenv
    - Logr::log_t::info
    - c_str
    - chdir
    - Logging::Loggable
    - what
    - Logr::log_t::error
    - makeControlChannelSocket
    - unlink
    - empty
    - chroot
    - writePid
    linkageType: ''
    returnType: int
    signature: int initControl(Logr::log_t log, uid_t newuid, int forks)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: stringtok
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2066,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2066,1
    - Dst: SuffixMatchNode::add
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2068,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2068,1
    - Dst: setState
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2070,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2070,1
    - Dst: NetmaskGroup::NetmaskGroup
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2072,1
    - Dst: NetmaskGroup::toMasks
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2073,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2073,1
    - Dst: setState
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2074,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2074,1
    - Dst: stringtok
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2080,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2080,1
    - Dst: SuffixMatchNode::add
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2082,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2082,1
    - Dst: setState
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2084,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2084,1
    - Dst: stringtok
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2090,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2090,1
    - Dst: vector::empty
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2092,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2093,1
    - Dst: SuffixMatchNode::add
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2097,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2097,1
    - Dst: setState
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2099,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2099,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 21
    argCount: 1
    argNames:
    - log
    argTypes:
    - Logr::log_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2101
      start: 2061
    functionDepth: 0
    functionLinenumber: 2061
    functionLinenumberEnd: 2101
    functionName: initSuffixMatchNodes
    functionSourceFile: /src/pdns/pdns/recursordist/rec-main.cc
    functionUses: 0
    functionsReached:
    - setState
    - std::move
    - stringtok
    - arg
    - NetmaskGroup::NetmaskGroup
    - Logr::log_t::info
    - DNSName
    - NetmaskGroup::toMasks
    - vector::empty
    - SuffixMatchNode::add
    linkageType: ''
    returnType: void
    signature: void initSuffixMatchNodes([[maybe_unused]] Logr::log_t log)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: stringtok
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2106,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2106,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2107,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2108,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2109,1
    - Dst: setState
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2110,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2110,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2111
      start: 2103
    functionDepth: 0
    functionLinenumber: 2103
    functionLinenumberEnd: 2111
    functionName: initCarbon
    functionSourceFile: /src/pdns/pdns/recursordist/rec-main.cc
    functionUses: 0
    functionsReached:
    - setState
    - stringtok
    - arg
    - std::move
    linkageType: ''
    returnType: void
    signature: void initCarbon()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2115,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2115,1
    - Dst: Netmask
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2117,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2117,1
    - Dst: auto::getBits
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2118,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2119,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2119,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2119,1
    - Dst: auto::getNetwork
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2122,1
    - Dst: reverseNameFromIP
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2123,1
    - Dst: countLabels
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2125,1
    - Dst: chopOff
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2126,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2130,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2130,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2130,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 1
    argNames:
    - log
    argTypes:
    - Logr::log_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2135
      start: 2113
    functionDepth: 0
    functionLinenumber: 2113
    functionLinenumberEnd: 2135
    functionName: initDNS64
    functionSourceFile: /src/pdns/pdns/recursordist/rec-main.cc
    functionUses: 0
    functionsReached:
    - Netmask
    - countLabels
    - Logr::log_t::info
    - Logging::Loggable
    - reverseNameFromIP
    - auto::getBits
    - chopOff
    - empty
    - arg
    - auto::getNetwork
    linkageType: ''
    returnType: int
    signature: int initDNS64(Logr::log_t log)
  - BBCount: 25
    BranchProfiles: []
    Callsites:
    - Dst: setName
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2139,1
    - Dst: disableSyslog
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2140,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2140,1
    - Dst: setTimestamps
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2141,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2141,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2142,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2144,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2144,1
    - Dst: logFacilityToLOG
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2145,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2145,1
    - Dst: setFacility
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2147,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2150,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2150,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2150,1
    - Dst: dns_random_uint32
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2154,1
    - Dst: initNet
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2156,1
    - Dst: initDNSSEC
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2161,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2165,1
    - Dst: luaconfig
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2167,1
    - Dst: Logr::log_t::error
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2169,1
    - Dst: parseACLs
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2173,1
    - Dst: initPublicSuffixList
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2174,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2174,1
    - Dst: initDontQuery
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2176,1
    - Dst: setWeDistributeQueries
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2178,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2178,1
    - Dst: weDistributeQueries
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2179,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2180,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2183,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2185,1
    - Dst: SyncRes::setDefaultLogMode
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2186,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2188,1
    - Dst: SyncRes::setDefaultLogMode
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2189,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2190,1
    - Dst: initSyncRes
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2194,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2199,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2199,1
    - Dst: std::make_shared<NetmaskGroup>
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2200,1
    - Dst: toMasks
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2201,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2201,1
    - Dst: stringtok
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2204,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2204,1
    - Dst: std::vector::empty
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2205,1
    - Dst: std::make_shared<std::set<ComboAddress>>
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2206,1
    - Dst: emplace
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2209,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2213,1
    - Dst: initDNS64
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2215,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2219,1
    - Dst: std::tie
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2223,1
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2223,1
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2223,1
    - Dst: parseZoneConfiguration
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2223,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2226,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2228,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2229,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2231,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2232,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2233,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2235,1
    - Dst: toMasks
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2237,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2237,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2238,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2241,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2245,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2245,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2245,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2248,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2249,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2250,1
    - Dst: enableOutgoingCookies
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2253,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2253,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2253,1
    - Dst: setNumDistributorThreads
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2255,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2255,1
    - Dst: setNumUDPWorkerThreads
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2256,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2256,1
    - Dst: numUDPWorkers
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2257,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2258,1
    - Dst: setNumUDPWorkerThreads
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2259,1
    - Dst: setNumTCPWorkerThreads
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2261,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2261,1
    - Dst: numTCPWorkers
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2262,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2263,1
    - Dst: setNumTCPWorkerThreads
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2264,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2267,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2269,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2271,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2278,1
    - Dst: static_cast<suseconds_t>
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2279,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2280,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2281,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2282,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2284,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2286,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2288,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2290,1
    - Dst: make_unique<AggressiveNSECCache>
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2292,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2292,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2295,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2299,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2300,1
    - Dst: std::round
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2300,1
    - Dst: std::log2
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2300,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2300,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2301,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2301,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2301,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2301,1
    - Dst: initSuffixMatchNodes
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2303,1
    - Dst: initCarbon
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2304,1
    - Dst: initDistribution
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2305,1
    - Dst: setupNODGlobal
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2309,1
    - Dst: initForks
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2312,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2314,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2315,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2316,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2317,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2318,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2320,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2321,1
    - Dst: checkOrFixFDS
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2323,1
    - Dst: checkOrFixLinuxMapCountLimits
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2324,1
    - Dst: sodium_init
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2327,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2328,1
    - Dst: openssl_thread_setup
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2333,1
    - Dst: openssl_seed
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2334,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2337,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2337,1
    - Dst: strToGID
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2338,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2338,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2341,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2341,1
    - Dst: strToUID
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2342,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2342,1
    - Dst: Utility::dropGroupPrivs
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2345,1
    - Dst: initControl
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2347,1
    - Dst: getCopy
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2353,1
    - Dst: startLuaConfigDelayedThreads
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2354,1
    - Dst: RecThreadInfo::makeThreadPipes
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2357,1
    - Dst: disableStats
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2359,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2359,1
    - Dst: disableStats
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2360,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2360,1
    - Dst: disableStats
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2361,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2361,1
    - Dst: disableStats
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2362,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2362,1
    - Dst: registerAllStats
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2365,1
    - Dst: initSNMP
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2367,1
    - Dst: initPorts
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2369,1
    - Dst: setupNODThread
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2375,1
    - Dst: runStartStopLua
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2378,1
    - Dst: RecThreadInfo::runThreads
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2379,1
    - Dst: runStartStopLua
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2380,1
    CyclomaticComplexity: 29
    EdgeCount: 29
    ICount: 166
    argCount: 1
    argNames:
    - log
    argTypes:
    - Logr::log_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2382
      start: 2137
    functionDepth: 4
    functionLinenumber: 2137
    functionLinenumberEnd: 2382
    functionName: serviceMain
    functionSourceFile: /src/pdns/pdns/recursordist/rec-main.cc
    functionUses: 0
    functionsReached:
    - strToGID
    - std::log2
    - parseACLs
    - openssl_thread_setup
    - RecThreadInfo::makeThreadPipes
    - strToUID
    - startLuaConfigDelayedThreads
    - initSNMP
    - std::round
    - luaconfig
    - initForks
    - initDNSSEC
    - setNumUDPWorkerThreads
    - disableStats
    - dns_random_uint32
    - stringtok
    - Utility::dropGroupPrivs
    - Logr::log_t::info
    - Logging::Loggable
    - runStartStopLua
    - std::make_shared<std::set<ComboAddress>>
    - initNet
    - Logr::log_t::error
    - setNumDistributorThreads
    - lock
    - parseZoneConfiguration
    - numTCPWorkers
    - RecThreadInfo::runThreads
    - std::tie
    - initPorts
    - initDontQuery
    - empty
    - setName
    - std::make_shared<NetmaskGroup>
    - sodium_init
    - numUDPWorkers
    - openssl_seed
    - checkOrFixLinuxMapCountLimits
    - setNumTCPWorkerThreads
    - setupNODGlobal
    - initControl
    - initSuffixMatchNodes
    - static_cast<uint8_t>
    - checkOrFixFDS
    - initPublicSuffixList
    - setFacility
    - std::vector::empty
    - initDNS64
    - setupNODThread
    - setWeDistributeQueries
    - disableSyslog
    - enableOutgoingCookies
    - arg
    - SyncRes::setDefaultLogMode
    - weDistributeQueries
    - initCarbon
    - setTimestamps
    - registerAllStats
    - static_cast<suseconds_t>
    - make_unique<AggressiveNSECCache>
    - getCopy
    - toMasks
    - logFacilityToLOG
    - initSyncRes
    - initDistribution
    - emplace
    linkageType: ''
    returnType: int
    signature: int serviceMain(Logr::log_t log)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: read
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2388,1
    - Dst: unixDie
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2389,1
    - Dst: __tsan_acquire
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2392,1
    - Dst: ThreadMSG*::func
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2396,1
    - Dst: log
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2399,1
    - Dst: withName
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2399,1
    - Dst: withName
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2403,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2403,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2403,1
    - Dst: log
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2407,1
    - Dst: withName
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2407,1
    - Dst: log
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2410,1
    - Dst: withName
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2410,1
    - Dst: __tsan_release
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2414,1
    - Dst: write
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2416,1
    - Dst: isWildcardExpandedOntoItself
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2416,1
    - Dst: static_cast<void*>
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2416,1
    - Dst: unixDie
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2418,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 26
    argCount: 1
    argNames:
    - fileDesc
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2423
      start: 2384
    functionDepth: 0
    functionLinenumber: 2384
    functionLinenumberEnd: 2423
    functionName: handlePipeRequest
    functionSourceFile: /src/pdns/pdns/recursordist/rec-main.cc
    functionUses: 0
    functionsReached:
    - __tsan_acquire
    - log
    - read
    - Logging::Loggable
    - unixDie
    - withName
    - ThreadMSG*::func
    - what
    - __tsan_release
    - isWildcardExpandedOntoItself
    - write
    - static_cast<void*>
    linkageType: ''
    returnType: void
    signature: void handlePipeRequest(int fileDesc, FDMultiplexer::funcparam_t& /*
      var */)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: withName
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2427,1
    - Dst: accept
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2429,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2431,1
    - Dst: RecursorControlChannel::recv
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2433,1
    - Dst: auto::info
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2434,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2434,1
    - Dst: RecursorControlParser::getAnswer
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2437,1
    - Dst: RecursorControlChannel::send
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2440,1
    - Dst: command
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2442,1
    - Dst: RecursorControlChannel::send
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2444,1
    - Dst: auto::error
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2448,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2448,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2448,1
    - Dst: auto::error
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2451,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2451,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 1
    argNames:
    - fileDesc
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2453
      start: 2425
    functionDepth: 3
    functionLinenumber: 2425
    functionLinenumberEnd: 2453
    functionName: handleRCC
    functionSourceFile: /src/pdns/pdns/recursordist/rec-main.cc
    functionUses: 0
    functionsReached:
    - Logging::Loggable
    - withName
    - PDNSException
    - accept
    - what
    - RecursorControlChannel::send
    - RecursorControlParser::getAnswer
    - auto::error
    - RecursorControlChannel::recv
    - command
    - auto::info
    linkageType: ''
    returnType: void
    signature: void handleRCC(int fileDesc, FDMultiplexer::funcparam_t& /* var */)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PDNSException
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2462,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 2
    argNames:
    - ' aName'
    - aTime
    argTypes:
    - string
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2464
      start: 2458
    functionDepth: 0
    functionLinenumber: 2458
    functionLinenumberEnd: 2464
    functionName: PeriodicTask::PeriodicTask
    functionSourceFile: /src/pdns/pdns/recursordist/rec-main.cc
    functionUses: 0
    functionsReached:
    - PDNSException
    linkageType: ''
    returnType: void
    signature: void PeriodicTask(const string& aName, time_t aTime)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: function
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2469,1
    - Dst: Utility::gettimeofday
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2470,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - ' now'
    - ' function'
    argTypes:
    - struct timeval
    - std::function<void()>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2473
      start: 2466
    functionDepth: 0
    functionLinenumber: 2466
    functionLinenumberEnd: 2473
    functionName: PeriodicTask::runIfDue
    functionSourceFile: /src/pdns/pdns/recursordist/rec-main.cc
    functionUses: 0
    functionsReached:
    - function
    - Utility::gettimeofday
    linkageType: ''
    returnType: void
    signature: void runIfDue(struct timeval& now, const std::function<void()>& function)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2478
      start: 2475
    functionDepth: 0
    functionLinenumber: 2475
    functionLinenumberEnd: 2478
    functionName: PeriodicTask::getPeriod
    functionSourceFile: /src/pdns/pdns/recursordist/rec-main.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: time_t
    signature: time_t getPeriod() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - newperiod
    argTypes:
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2483
      start: 2480
    functionDepth: 0
    functionLinenumber: 2480
    functionLinenumberEnd: 2483
    functionName: PeriodicTask::setPeriod
    functionSourceFile: /src/pdns/pdns/recursordist/rec-main.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setPeriod(time_t newperiod)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Utility::gettimeofday
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2487,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2488
      start: 2485
    functionDepth: 0
    functionLinenumber: 2485
    functionLinenumberEnd: 2488
    functionName: PeriodicTask::updateLastRun
    functionSourceFile: /src/pdns/pdns/recursordist/rec-main.cc
    functionUses: 0
    functionsReached:
    - Utility::gettimeofday
    linkageType: ''
    returnType: void
    signature: void updateLastRun()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2493
      start: 2490
    functionDepth: 0
    functionLinenumber: 2490
    functionLinenumberEnd: 2493
    functionName: PeriodicTask::hasRun
    functionSourceFile: /src/pdns/pdns/recursordist/rec-main.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool hasRun() const
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: Utility::gettimeofday
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2505,1
    - Dst: updateSnap
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2506,1
    - Dst: PeriodicTask::runIfDue
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2511,1
    - Dst: cleanup
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2512,1
    - Dst: isWildcardExpandedOntoItself
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2515,1
    - Dst: getLocal
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2520,1
    - Dst: PeriodicTask::runIfDue
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2521,1
    - Dst: checkProtobufExport
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2522,1
    - Dst: checkOutgoingProtobufExport
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2523,1
    - Dst: checkFrameStreamExport
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2525,1
    - Dst: checkFrameStreamExport
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2526,1
    - Dst: isTaskThread
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2532,1
    - Dst: runTasks
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2534,1
    - Dst: PeriodicTask::runIfDue
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2538,1
    - Dst: RecZoneToCache::maintainStates
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2539,1
    - Dst: RecZoneToCache::ZoneToCache
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2541,1
    - Dst: map::at
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2541,1
    - Dst: isHandler
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2545,1
    - Dst: PeriodicTask::runIfDue
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2548,1
    - Dst: doPruneTo
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2549,1
    - Dst: PeriodicTask::runIfDue
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2553,1
    - Dst: doPrune
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2554,1
    - Dst: PeriodicTask::runIfDue
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2558,1
    - Dst: prune
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2559,1
    - Dst: PeriodicTask::runIfDue
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2563,1
    - Dst: prune
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2565,1
    - Dst: PeriodicTask::runIfDue
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2570,1
    - Dst: SyncRes::pruneNSSpeeds
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2571,1
    - Dst: PeriodicTask::runIfDue
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2575,1
    - Dst: SyncRes::pruneEDNSStatuses
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2576,1
    - Dst: PeriodicTask::runIfDue
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2581,1
    - Dst: SyncRes::pruneDoTProbeMap
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2582,1
    - Dst: PeriodicTask::runIfDue
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2587,1
    - Dst: SyncRes::pruneThrottledServers
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2588,1
    - Dst: PeriodicTask::runIfDue
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2592,1
    - Dst: SyncRes::pruneFailedServers
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2593,1
    - Dst: static_cast<time_t>
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2593,1
    - Dst: PeriodicTask::runIfDue
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2597,1
    - Dst: SyncRes::pruneNonResolving
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2598,1
    - Dst: PeriodicTask::runIfDue
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2602,1
    - Dst: SyncRes::pruneSaveParentsNSSets
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2603,1
    - Dst: PeriodicTask::runIfDue
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2607,1
    - Dst: pruneCookies
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2608,1
    - Dst: std::max
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2613,1
    - Dst: PeriodicTask::runIfDue
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2614,1
    - Dst: SyncRes::getRootNS
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2617,1
    - Dst: PeriodicTask::setPeriod
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2621,1
    - Dst: std::max
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2621,1
    - Dst: PeriodicTask::setPeriod
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2627,1
    - Dst: std::max<time_t>
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2627,1
    - Dst: PeriodicTask::getPeriod
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2627,1
    - Dst: PeriodicTask::runIfDue
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2633,1
    - Dst: doSecPoll
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2635,1
    - Dst: Logr::log_t::error
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2638,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2638,1
    - Dst: Logr::log_t::error
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2641,1
    - Dst: Logr::log_t::error
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2644,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2647,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2650,1
    - Dst: std::max
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2654,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2654,1
    - Dst: PeriodicTask::hasRun
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2656,1
    - Dst: PeriodicTask::updateLastRun
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2658,1
    - Dst: PeriodicTask::setPeriod
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2661,1
    - Dst: PeriodicTask::runIfDue
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2662,1
    - Dst: auto::trustAnchorFileInfo::fname::empty
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2663,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2664,1
    - Dst: updateTrustAnchorsFromFile
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2667,1
    - Dst: modify
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2668,1
    - Dst: Logr::log_t::error
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2674,1
    - Dst: updateSnap
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2679,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 108
    argCount: 1
    argNames:
    - log
    argTypes:
    - Logr::log_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2680
      start: 2502
    functionDepth: 2
    functionLinenumber: 2502
    functionLinenumberEnd: 2680
    functionName: houseKeepingWork
    functionSourceFile: /src/pdns/pdns/recursordist/rec-main.cc
    functionUses: 0
    functionsReached:
    - SyncRes::pruneNonResolving
    - std::max<time_t>
    - PeriodicTask::hasRun
    - modify
    - RecZoneToCache::maintainStates
    - doPruneTo
    - SyncRes::pruneSaveParentsNSSets
    - SyncRes::pruneEDNSStatuses
    - cleanup
    - RecZoneToCache::ZoneToCache
    - static_cast<time_t>
    - auto::trustAnchorFileInfo::fname::empty
    - static_cast<int>
    - Logr::log_t::info
    - checkOutgoingProtobufExport
    - SyncRes::pruneFailedServers
    - Logr::log_t::error
    - isHandler
    - getLocal
    - updateSnap
    - SyncRes::getRootNS
    - std::max
    - SyncRes::pruneDoTProbeMap
    - checkProtobufExport
    - PeriodicTask::getPeriod
    - SyncRes::pruneThrottledServers
    - prune
    - isWildcardExpandedOntoItself
    - Utility::gettimeofday
    - doSecPoll
    - PeriodicTask::updateLastRun
    - pruneCookies
    - runTasks
    - doPrune
    - updateTrustAnchorsFromFile
    - PeriodicTask::setPeriod
    - PeriodicTask::runIfDue
    - what
    - isTaskThread
    - map::at
    - SyncRes::pruneNSSpeeds
    - checkFrameStreamExport
    linkageType: ''
    returnType: void
    signature: void houseKeepingWork(Logr::log_t log)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: withName
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2684,1
    - Dst: houseKeepingWork
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2692,1
    - Dst: auto::error
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2697,1
    - Dst: auto::info
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2702,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2705
      start: 2682
    functionDepth: 3
    functionLinenumber: 2682
    functionLinenumberEnd: 2705
    functionName: houseKeeping
    functionSourceFile: /src/pdns/pdns/recursordist/rec-main.cc
    functionUses: 2
    functionsReached:
    - withName
    - houseKeepingWork
    - auto::info
    - auto::error
    linkageType: ''
    returnType: void
    signature: void houseKeeping(void* /* ignored */)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: isWorker
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2711,1
    - Dst: Utility::gettimeofday
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2715,1
    - Dst: maintenance
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2716,1
    - Dst: Utility::gettimeofday
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2719,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2720,1
    - Dst: uSec
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2720,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2721,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 3
    argNames:
    - ' threadInfo'
    - ' last_lua_maintenance'
    - luaMaintenanceInterval
    argTypes:
    - RecThreadInfo
    - time_t
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2725
      start: 2707
    functionDepth: 1
    functionLinenumber: 2707
    functionLinenumberEnd: 2725
    functionName: runLuaMaintenance
    functionSourceFile: /src/pdns/pdns/recursordist/rec-main.cc
    functionUses: 0
    functionsReached:
    - maintenance
    - Utility::gettimeofday
    - isWorker
    - uSec
    - at
    linkageType: ''
    returnType: void
    signature: void runLuaMaintenance(RecThreadInfo& threadInfo, time_t& last_lua_maintenance,
      time_t luaMaintenanceInterval)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2732,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2733,1
    - Dst: isWildcardExpandedOntoItself
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2735,1
    - Dst: schedule
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2739,1
    - Dst: isHandler
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2745,1
    - Dst: isTaskThread
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2745,1
    - Dst: Utility::gettimeofday
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2747,1
    - Dst: makeThread
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2748,1
    - Dst: isTaskThread
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2749,1
    - Dst: Utility::gettimeofday
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2751,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2752,1
    - Dst: uSec
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2752,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2753,1
    - Dst: getTimeouts
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2758,1
    - Dst: boost::any_cast<shared_ptr<TCPConnection>>
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2761,1
    - Dst: info
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2763,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2763,1
    - Dst: removeReadFD
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2765,1
    - Dst: isHandler
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2771,1
    - Dst: doStats
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2773,1
    - Dst: Utility::gettimeofday
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2777,1
    - Dst: makeThread
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2780,1
    - Dst: runLuaMaintenance
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2784,1
    - Dst: nextWaiterDelayUsec
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2786,1
    - Dst: run
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2787,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2787,1
    - Dst: log
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2791,1
    - Dst: withName
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2791,1
    - Dst: log
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2794,1
    - Dst: withName
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2794,1
    - Dst: log
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2797,1
    - Dst: withName
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2797,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 44
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2800
      start: 2727
    functionDepth: 2
    functionLinenumber: 2727
    functionLinenumberEnd: 2800
    functionName: recLoop
    functionSourceFile: /src/pdns/pdns/recursordist/rec-main.cc
    functionUses: 0
    functionsReached:
    - schedule
    - log
    - withName
    - removeReadFD
    - static_cast<int>
    - Logging::Loggable
    - getTimeouts
    - isHandler
    - run
    - at
    - nextWaiterDelayUsec
    - boost::any_cast<shared_ptr<TCPConnection>>
    - isWildcardExpandedOntoItself
    - Utility::gettimeofday
    - arg
    - doStats
    - info
    - isTaskThread
    - runLuaMaintenance
    - uSec
    - makeThread
    linkageType: ''
    returnType: void
    signature: void recLoop()
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: withName
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2804,1
    - Dst: updateSnap
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2805,1
    - Dst: isWildcardExpandedOntoItself
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2807,1
    - Dst: SyncRes::setDomainMap
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2810,1
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2810,1
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2811,1
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2812,1
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2813,1
    - Dst: std::make_unique<UDPClientSocks>
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2816,1
    - Dst: make_unique<ProxyMapping>
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2818,1
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2823,1
    - Dst: make_unique<OpenTelemetryTraceConditions>
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2825,1
    - Dst: isHandler
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2830,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2831,1
    - Dst: setExitCode
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2832,1
    - Dst: auto::info
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2834,1
    - Dst: auto::info
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2836,1
    - Dst: isWorker
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2841,1
    - Dst: isListener
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2841,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2843,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2843,1
    - Dst: std::make_shared<RecursorLua4>
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2844,1
    - Dst: loadFile
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2845,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2845,1
    - Dst: auto::info
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2846,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2846,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2846,1
    - Dst: auto::error
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2850,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2850,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2850,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2850,1
    - Dst: _exit
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2851,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2855,1
    - Dst: numUDPWorkers
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2855,1
    - Dst: std::make_unique<addrringbuf_t>
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2856,1
    - Dst: weDistributeQueries
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2857,1
    - Dst: set_capacity
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2858,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2858,1
    - Dst: numDistributors
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2858,1
    - Dst: set_capacity
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2861,1
    - Dst: std::make_unique<addrringbuf_t>
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2863,1
    - Dst: set_capacity
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2864,1
    - Dst: std::make_unique<addrringbuf_t>
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2865,1
    - Dst: set_capacity
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2866,1
    - Dst: std::make_unique<addrringbuf_t>
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2867,1
    - Dst: set_capacity
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2868,1
    - Dst: std::make_unique<addrringbuf_t>
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2869,1
    - Dst: set_capacity
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2870,1
    - Dst: std::make_unique<boost::circular_buffer<pair<DNSName, uint16_t>>>
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2872,1
    - Dst: set_capacity
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2873,1
    - Dst: std::make_unique<boost::circular_buffer<pair<DNSName, uint16_t>>>
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2874,1
    - Dst: set_capacity
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2875,1
    - Dst: std::make_unique<boost::circular_buffer<pair<DNSName, uint16_t>>>
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2876,1
    - Dst: set_capacity
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2877,1
    - Dst: std::make_unique<MT_t>
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2879,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2879,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2879,1
    - Dst: setMT
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2880,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2880,1
    - Dst: getLocal
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2884,1
    - Dst: checkProtobufExport
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2885,1
    - Dst: checkOutgoingProtobufExport
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2886,1
    - Dst: checkFrameStreamExport
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2888,1
    - Dst: checkFrameStreamExport
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2889,1
    - Dst: string::empty
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2893,1
    - Dst: zoneXFRParams::primaries::empty
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2894,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2896,1
    - Dst: unique_ptr<FDMultiplexer>
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2900,1
    - Dst: getMultiplexer
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2900,1
    - Dst: addReadFD
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2901,1
    - Dst: getPipes
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2901,1
    - Dst: isHandler
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2903,1
    - Dst: auto::info
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2904,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2904,1
    - Dst: getName
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2904,1
    - Dst: addReadFD
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2907,1
    - Dst: getPipes
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2907,1
    - Dst: isListener
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2909,1
    - Dst: getDeferredAdds
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2912,1
    - Dst: addReadFD
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2913,1
    - Dst: isTCPListener
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2918,1
    - Dst: addReadFD
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2919,1
    - Dst: isHandler
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2925,1
    - Dst: addReadFD
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2926,1
    - Dst: getDescriptor
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2926,1
    - Dst: isHandler
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2930,1
    - Dst: sd_notify
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2934,1
    - Dst: recLoop
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2938,1
    - Dst: auto::error
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2941,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2941,1
    - Dst: auto::error
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2944,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2944,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2944,1
    - Dst: auto::info
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2947,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 106
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2949
      start: 2802
    functionDepth: 3
    functionLinenumber: 2802
    functionLinenumberEnd: 2949
    functionName: recursorThread
    functionSourceFile: /src/pdns/pdns/recursordist/rec-main.cc
    functionUses: 2
    functionsReached:
    - setExitCode
    - withName
    - primeHints
    - getPipes
    - std::make_shared<RecursorLua4>
    - numDistributors
    - sd_notify
    - unique_ptr<FDMultiplexer>
    - std::make_unique<UDPClientSocks>
    - isWorker
    - getDeferredAdds
    - getDescriptor
    - getName
    - Logging::Loggable
    - checkOutgoingProtobufExport
    - string::empty
    - setMT
    - addReadFD
    - isHandler
    - lock
    - std::make_unique<addrringbuf_t>
    - auto::error
    - getLocal
    - getMultiplexer
    - updateSnap
    - empty
    - numUDPWorkers
    - at
    - auto::info
    - recLoop
    - checkProtobufExport
    - isListener
    - _exit
    - std::make_unique<MT_t>
    - set_capacity
    - isWildcardExpandedOntoItself
    - get
    - isTCPListener
    - std::make_unique<boost::circular_buffer<pair<DNSName, uint16_t>>>
    - arg
    - weDistributeQueries
    - make_unique<OpenTelemetryTraceConditions>
    - make_unique<ProxyMapping>
    - what
    - loadFile
    - zoneXFRParams::primaries::empty
    - SyncRes::setDomainMap
    - checkFrameStreamExport
    linkageType: ''
    returnType: void
    signature: void recursorThread()
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2953,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2956,1
    - Dst: string::empty
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2957,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2958,1
    - Dst: LuaConfigItems::LuaConfigItems
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2960,1
    - Dst: pdns::settings::rec::fromBridgeStructToLuaConfig
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2962,1
    - Dst: to_yaml_string
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2963,1
    - Dst: pdns::settings::rec::defaultsToYaml
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2967,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 3
    argNames:
    - argc
    - argv
    - ' settings'
    argTypes:
    - int
    - char*[]
    - pdns::rust::settings::rec::Recursorsettings
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2974
      start: 2951
    functionDepth: 1
    functionLinenumber: 2951
    functionLinenumberEnd: 2974
    functionName: doYamlConfig
    functionSourceFile: /src/pdns/pdns/recursordist/rec-main.cc
    functionUses: 0
    functionsReached:
    - to_yaml_string
    - pdns::settings::rec::defaultsToYaml
    - LuaConfigItems::LuaConfigItems
    - string::empty
    - arg
    - pdns::settings::rec::fromBridgeStructToLuaConfig
    linkageType: ''
    returnType: pair<int, bool>
    signature: pair<int, bool> doYamlConfig(int argc, char* argv[], const pdns::rust::settings::rec::Recursorsettings&
      settings)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2978,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2979,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2982,1
    - Dst: Logr::log_t::error
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2983,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2983,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2986,1
    - Dst: Logr::log_t::error
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2990,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2990,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2990,1
    - Dst: string::empty
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2994,1
    - Dst: pdns::settings::rec::defaultsToYaml
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2995,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:2999,1
    - Dst: Logr::log_t::error
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3000,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3000,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3003,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3004,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3007,1
    - Dst: Logr::log_t::error
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3008,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3008,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3011,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3012,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 36
    argCount: 4
    argNames:
    - startupLog
    - ' configname'
    - argc
    - argv
    argTypes:
    - Logr::log_t
    - string
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3017
      start: 2976
    functionDepth: 0
    functionLinenumber: 2976
    functionLinenumberEnd: 3017
    functionName: doConfig
    functionSourceFile: /src/pdns/pdns/recursordist/rec-main.cc
    functionUses: 0
    functionsReached:
    - pdns::settings::rec::defaultsToYaml
    - string::empty
    - Logging::Loggable
    - Logr::log_t::error
    - arg
    linkageType: ''
    returnType: pair<int, bool>
    signature: pair<int, bool> doConfig(Logr::log_t startupLog, const string& configname,
      int argc, char* argv[])
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3023,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3025,1
    - Dst: std::make_shared<RecursorLua4>
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3028,1
    - Dst: auto::runStartStopFunction
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3029,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3029,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - start
    - log
    argTypes:
    - bool
    - Logr::log_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3030
      start: 3021
    functionDepth: 0
    functionLinenumber: 3021
    functionLinenumberEnd: 3030
    functionName: runStartStopLua
    functionSourceFile: /src/pdns/pdns/recursordist/rec-main.cc
    functionUses: 1
    functionsReached:
    - auto::runStartStopFunction
    - std::make_shared<RecursorLua4>
    - lock
    - empty
    - std::string
    linkageType: ''
    returnType: void
    signature: void runStartStopLua(bool start, Logr::log_t log)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3036,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3037,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3042,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3043,1
    - Dst: fullVersionString
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3043,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3046,1
    - Dst: getHostname
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3047,1
    - Dst: auto::has_value
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3048,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3049,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3051,1
    - Dst: auto::has_value
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3051,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3054,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3054,1
    - Dst: getenv
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3055,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3057,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3061,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3061,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3062,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3062,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3063,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3063,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3066,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3070,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3071,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3072,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3073,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3077,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3077,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3078,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3079,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3082,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3082,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3083,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3084,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 39
    argCount: 1
    argNames:
    - log
    argTypes:
    - Logr::log_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3086
      start: 3032
    functionDepth: 0
    functionLinenumber: 3032
    functionLinenumberEnd: 3086
    functionName: handleRuntimeDefaults
    functionSourceFile: /src/pdns/pdns/recursordist/rec-main.cc
    functionUses: 0
    functionsReached:
    - getenv
    - Logr::log_t::info
    - auto::has_value
    - empty
    - std::string
    - fullVersionString
    - getHostname
    - arg
    linkageType: ''
    returnType: void
    signature: void handleRuntimeDefaults(Logr::log_t log)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: sd_journal_stream_fd
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3092,1
    - Dst: Logging::Logger::create
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3093,1
    - Dst: close
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3094,1
    - Dst: Logging::Logger::create
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3102,1
    - Dst: Logging::Logger::create
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3109,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    argCount: 1
    argNames:
    - ' logname'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3111
      start: 3088
    functionDepth: 0
    functionLinenumber: 3088
    functionLinenumberEnd: 3111
    functionName: setupLogging
    functionSourceFile: /src/pdns/pdns/recursordist/rec-main.cc
    functionUses: 1
    functionsReached:
    - Logging::Logger::create
    - sd_journal_stream_fd
    - close
    linkageType: ''
    returnType: void
    signature: void setupLogging(const string& logname)
  - BBCount: 22
    BranchProfiles: []
    Callsites:
    - Dst: versionSetProduct
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3119,1
    - Dst: reportAllTypes
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3120,1
    - Dst: pdns::settings::rec::defineOldStyleSettings
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3125,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3126,1
    - Dst: toConsole
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3127,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3128,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3130,1
    - Dst: getProductVersion
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3131,1
    - Dst: getBuildConfiguration
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3132,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3135,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3138,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3138,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3143,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3144,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3145,1
    - Dst: setLoglevel
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3150,1
    - Dst: toConsole
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3151,1
    - Dst: getProductVersionLines
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3153,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3156,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3161,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3162,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3162,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3163,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3163,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3164,1
    - Dst: cleanSlashes
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3166,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3168,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3170,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3175,1
    - Dst: setupLogging
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3186,1
    - Dst: withName
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3188,1
    - Dst: withName
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3189,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3189,1
    - Dst: withName
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3190,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3190,1
    - Dst: withName
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3191,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3193,1
    - Dst: pdns::settings::rec::tryReadYAML
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3201,1
    - Dst: std::tie
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3213,1
    - Dst: doYamlConfig
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3213,1
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3219,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3220,1
    - Dst: auto::info
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3224,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3224,1
    - Dst: std::tie
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3226,1
    - Dst: doConfig
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3226,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3230,1
    - Dst: auto::error
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3231,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3231,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3234,1
    - Dst: auto::info
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3235,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3235,1
    - Dst: auto::info
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3236,1
    - Dst: auto::info
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3239,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3244,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3246,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3247,1
    - Dst: std::max
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3249,1
    - Dst: setLoglevel
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3253,1
    - Dst: toConsole
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3254,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3256,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3256,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3256,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3256,1
    - Dst: auto::info
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3257,1
    - Dst: handleRuntimeDefaults
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3261,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3263,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3265,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3266,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3268,1
    - Dst: pdns::RecResolve::setInstanceParameters
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3270,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3270,1
    - Dst: reloadZoneConfiguration
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3270,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3273,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3276,1
    - Dst: std::make_unique<MemRecursorCache>
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3277,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3277,1
    - Dst: std::make_unique<NegCache>
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3278,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3278,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3279,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3280,1
    - Dst: std::make_unique<RecursorPacketCache>
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3281,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3281,1
    - Dst: serviceMain
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3284,1
    - Dst: condVar::notify_one
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3288,1
    - Dst: joinThread0
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3290,1
    - Dst: withName
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3293,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3293,1
    - Dst: withName
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3297,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3297,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3297,1
    - Dst: withName
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3301,1
    CyclomaticComplexity: 32
    EdgeCount: 32
    ICount: 144
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3306
      start: 3115
    functionDepth: 5
    functionLinenumber: 3115
    functionLinenumberEnd: 3306
    functionName: main
    functionSourceFile: /src/pdns/pdns/recursordist/rec-main.cc
    functionUses: 44
    functionsReached:
    - handleRuntimeDefaults
    - withName
    - pdns::settings::rec::defineOldStyleSettings
    - toConsole
    - std::make_unique<RecursorPacketCache>
    - versionSetProduct
    - joinThread0
    - getBuildConfiguration
    - pdns::settings::rec::tryReadYAML
    - setLoglevel
    - reportAllTypes
    - Logging::Loggable
    - doConfig
    - lock
    - auto::error
    - condVar::notify_one
    - std::tie
    - empty
    - std::max
    - auto::info
    - getProductVersion
    - doYamlConfig
    - getProductVersionLines
    - serviceMain
    - reloadZoneConfiguration
    - pdns::RecResolve::setInstanceParameters
    - arg
    - std::move
    - what
    - std::make_unique<MemRecursorCache>
    - cleanSlashes
    - std::make_unique<NegCache>
    - setupLogging
    linkageType: ''
    returnType: int
    signature: int main(int argc, char** argv)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3310,1
    - Dst: withName
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3311,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3311,1
    - Dst: string::empty
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3313,1
    - Dst: reset
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3314,1
    - Dst: auto::info
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3315,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3316,1
    - Dst: RecursorControlChannel::Answer::Answer
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3316,1
    - Dst: std::make_shared<RecursorLua4>
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3319,1
    - Dst: loadFile
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3321,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3324,1
    - Dst: thread_local_id
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3324,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3324,1
    - Dst: auto::error
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3325,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3325,1
    - Dst: RecursorControlChannel::Answer::Answer
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3326,1
    - Dst: auto::error
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3330,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3330,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3331,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3331,1
    - Dst: RecursorControlChannel::Answer::Answer
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3331,1
    - Dst: auto::info
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3334,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3335,1
    - Dst: RecursorControlChannel::Answer::Answer
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3335,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 20
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3336
      start: 3308
    functionDepth: 1
    functionLinenumber: 3308
    functionLinenumberEnd: 3336
    functionName: doReloadLuaScript
    functionSourceFile: /src/pdns/pdns/recursordist/rec-main.cc
    functionUses: 0
    functionsReached:
    - reset
    - std::to_string
    - string::empty
    - withName
    - Logging::Loggable
    - what
    - std::make_shared<RecursorLua4>
    - string
    - RecursorControlChannel::Answer::Answer
    - loadFile
    - thread_local_id
    - auto::error
    - arg
    - auto::info
    linkageType: ''
    returnType: RecursorControlChannel::Answer
    signature: RecursorControlChannel::Answer * doReloadLuaScript()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3341,1
    - Dst: broadcastAccFunction
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3344,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - begin
    - end
    argTypes:
    - vector<string>::const_iterator
    - vector<string>::const_iterator
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3345
      start: 3338
    functionDepth: 2
    functionLinenumber: 3338
    functionLinenumberEnd: 3345
    functionName: doQueueReloadLuaScript
    functionSourceFile: /src/pdns/pdns/recursordist/rec-main.cc
    functionUses: 1
    functionsReached:
    - broadcastAccFunction
    - arg
    linkageType: ''
    returnType: RecursorControlChannel::Answer
    signature: RecursorControlChannel::Answer doQueueReloadLuaScript(vector<string>::const_iterator
      begin, vector<string>::const_iterator end)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3350,1
    - Dst: reset
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3351,1
    - Dst: FDWrapper
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3352,1
    - Dst: string::string
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3353,1
    - Dst: string::string
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3356,1
    - Dst: std::make_shared<Regex>
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3358,1
    - Dst: string::string
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3360,1
    - Dst: string::string
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3363,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 2
    argNames:
    - ' newRegex'
    - file
    argTypes:
    - std::string
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3365
      start: 3347
    functionDepth: 0
    functionLinenumber: 3347
    functionLinenumberEnd: 3365
    functionName: pleaseUseNewTraceRegex
    functionSourceFile: /src/pdns/pdns/recursordist/rec-main.cc
    functionUses: 0
    functionsReached:
    - reset
    - FDWrapper
    - std::make_shared<Regex>
    - empty
    - string::string
    linkageType: ''
    returnType: string
    signature: string * pleaseUseNewTraceRegex(const std::string& newRegex, int file)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dup
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3369,1
    - Dst: broadcastAccFunction
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3371,1
    - Dst: pleaseUseNewTraceRegex
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3371,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - file
    - begin
    - end
    argTypes:
    - FDWrapper
    - vector<string>::const_iterator
    - vector<string>::const_iterator
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3372
      start: 3367
    functionDepth: 2
    functionLinenumber: 3367
    functionLinenumberEnd: 3372
    functionName: doTraceRegex
    functionSourceFile: /src/pdns/pdns/recursordist/rec-main.cc
    functionUses: 1
    functionsReached:
    - pleaseUseNewTraceRegex
    - broadcastAccFunction
    - dup
    linkageType: ''
    returnType: string
    signature: string doTraceRegex(FDWrapper file, vector<string>::const_iterator
      begin, vector<string>::const_iterator end)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3379,1
    - Dst: doWipeCache
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3379,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3380,1
    - Dst: wipe
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3380,1
    - Dst: removeZoneInfo
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3382,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3392,1
    - Dst: doWipePacketCache
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3392,1
    - Dst: withName
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3396,1
    - Dst: auto::error
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3397,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3397,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 3
    argNames:
    - ' canon'
    - subtree
    - qtype
    argTypes:
    - DNSName
    - bool
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3401
      start: 3374
    functionDepth: 2
    functionLinenumber: 3374
    functionLinenumberEnd: 3401
    functionName: wipeCaches
    functionSourceFile: /src/pdns/pdns/recursordist/rec-main.cc
    functionUses: 5
    functionsReached:
    - doWipeCache
    - withName
    - what
    - doWipePacketCache
    - auto::error
    - removeZoneInfo
    - wipe
    - static_cast<int>
    linkageType: ''
    returnType: WipeCacheResult
    signature: WipeCacheResult wipeCaches(const DNSName& canon, bool subtree, uint16_t
      qtype)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: zoneXFRParams::primaries::empty
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3406,1
    - Dst: std::thread::detach
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3413,1
    - Dst: withName
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3416,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3416,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3416,1
    - Dst: exit
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3417,1
    - Dst: withName
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3420,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3420,1
    - Dst: exit
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3421,1
    - Dst: d_params::primaries::empty
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3425,1
    - Dst: std::thread::detach
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3432,1
    - Dst: withName
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3435,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3435,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3435,1
    - Dst: exit
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3436,1
    - Dst: withName
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3439,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3439,1
    - Dst: exit
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3440,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 27
    argCount: 2
    argNames:
    - ' luaConfig'
    - generation
    argTypes:
    - LuaConfigItems
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3443
      start: 3403
    functionDepth: 0
    functionLinenumber: 3403
    functionLinenumberEnd: 3443
    functionName: startLuaConfigDelayedThreads
    functionSourceFile: /src/pdns/pdns/recursordist/rec-main.cc
    functionUses: 2
    functionsReached:
    - Logging::Loggable
    - withName
    - what
    - zoneXFRParams::primaries::empty
    - d_params::primaries::empty
    - std::thread::detach
    - exit
    linkageType: ''
    returnType: void
    signature: void startLuaConfigDelayedThreads(const LuaConfigItems& luaConfig,
      uint64_t generation)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: at
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3447,1
    - Dst: count
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3447,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3448,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ' name'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3451
      start: 3445
    functionDepth: 0
    functionLinenumber: 3445
    functionLinenumberEnd: 3451
    functionName: pleaseInitPolCounts
    functionSourceFile: /src/pdns/pdns/recursordist/rec-main.cc
    functionUses: 0
    functionsReached:
    - at
    - count
    linkageType: ''
    returnType: void
    signature: void * pleaseInitPolCounts(const string& name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: d_slog::withValues
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3455,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3455,1
    - Dst: setName
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3457,1
    - Dst: polName::empty
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3457,1
    - Dst: auto::info
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3459,1
    - Dst: loadRPZFromFile
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3460,1
    - Dst: auto::info
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3461,1
    - Dst: auto::error
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3464,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3464,1
    - Dst: clear
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3465,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 4
    argNames:
    - ' params'
    - ' lci'
    - ' zone'
    - ' affected'
    argTypes:
    - RPZTrackerParams
    - LuaConfigItems
    - shared_ptr<DNSFilterEngine::Zone>
    - std::unordered_set<DNSName>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3469
      start: 3453
    functionDepth: 1
    functionLinenumber: 3453
    functionLinenumberEnd: 3469
    functionName: activateRPZFile
    functionSourceFile: /src/pdns/pdns/recursordist/rec-main.cc
    functionUses: 0
    functionsReached:
    - Logging::Loggable
    - what
    - auto::error
    - d_slog::withValues
    - polName::empty
    - clear
    - setName
    - loadRPZFromFile
    - auto::info
    linkageType: ''
    returnType: bool
    signature: bool activateRPZFile(const RPZTrackerParams& params, LuaConfigItems&
      lci, shared_ptr<DNSFilterEngine::Zone>& zone, std::unordered_set<DNSName>& affected)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: d_slog::withValues
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3473,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3473,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3473,1
    - Dst: seedFileName::empty
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3475,1
    - Dst: auto::info
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3476,1
    - Dst: loadRPZFromFile
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3478,1
    - Dst: getDomain
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3480,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3481,1
    - Dst: getDomain
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3481,1
    - Dst: toString
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3481,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3485,1
    - Dst: getDomain
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3485,1
    - Dst: auto::error
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3489,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3489,1
    - Dst: clear
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3490,1
    - Dst: auto::error
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3493,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3493,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3493,1
    - Dst: clear
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3494,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 5
    argNames:
    - ' params'
    - ' lci'
    - ' zone'
    - ' domain'
    - ' affected'
    argTypes:
    - RPZTrackerParams
    - LuaConfigItems
    - shared_ptr<DNSFilterEngine::Zone>
    - DNSName
    - std::unordered_set<DNSName>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3497
      start: 3471
    functionDepth: 1
    functionLinenumber: 3471
    functionLinenumberEnd: 3497
    functionName: activateRPZPrimary
    functionSourceFile: /src/pdns/pdns/recursordist/rec-main.cc
    functionUses: 0
    functionsReached:
    - toString
    - Logging::Loggable
    - PDNSException
    - what
    - getDomain
    - auto::error
    - d_slog::withValues
    - clear
    - seedFileName::empty
    - loadRPZFromFile
    - auto::info
    linkageType: ''
    returnType: void
    signature: void activateRPZPrimary(RPZTrackerParams& params, LuaConfigItems& lci,
      shared_ptr<DNSFilterEngine::Zone>& zone, const DNSName& domain, std::unordered_set<DNSName>&
      affected)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<DNSFilterEngine::Zone>
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3504,1
    - Dst: auto::reserve
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3506,1
    - Dst: tags::empty
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3508,1
    - Dst: std::unordered_set::emplace
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3511,1
    - Dst: auto::setTags
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3513,1
    - Dst: auto::setPolicyOverridesGettag
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3515,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3516,1
    - Dst: auto::setExtendedErrorCode
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3517,1
    - Dst: extendedErrorExtra::empty
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3518,1
    - Dst: auto::setExtendedErrorExtra
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3519,1
    - Dst: auto::setIncludeSOA
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3522,1
    - Dst: auto::setIgnoreDuplicates
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3523,1
    - Dst: zoneXFRParams::primaries::empty
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3525,1
    - Dst: activateRPZFile
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3526,1
    - Dst: dfe::addZone
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3527,1
    - Dst: auto::setDomain
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3532,1
    - Dst: auto::setName
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3533,1
    - Dst: polName::empty
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3533,1
    - Dst: dfe::addZone
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3534,1
    - Dst: activateRPZPrimary
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3535,1
    - Dst: broadcastFunction
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3537,1
    - Dst: auto::getName
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3537,1
    - Dst: pleaseInitPolCounts
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3537,1
    - Dst: doWipePacketCache
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3541,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 35
    argCount: 1
    argNames:
    - ' lci'
    argTypes:
    - LuaConfigItems
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3543
      start: 3499
    functionDepth: 2
    functionLinenumber: 3499
    functionLinenumberEnd: 3543
    functionName: activateRPZs
    functionSourceFile: /src/pdns/pdns/recursordist/rec-main.cc
    functionUses: 0
    functionsReached:
    - auto::setTags
    - broadcastFunction
    - auto::setExtendedErrorExtra
    - std::unordered_set::emplace
    - auto::setDomain
    - auto::setExtendedErrorCode
    - pleaseInitPolCounts
    - extendedErrorExtra::empty
    - activateRPZPrimary
    - tags::empty
    - polName::empty
    - auto::reserve
    - pdns::max
    - dfe::addZone
    - auto::getName
    - auto::setName
    - doWipePacketCache
    - auto::setPolicyOverridesGettag
    - zoneXFRParams::primaries::empty
    - auto::setIncludeSOA
    - activateRPZFile
    - std::make_shared<DNSFilterEngine::Zone>
    - auto::setIgnoreDuplicates
    linkageType: ''
    returnType: void
    signature: void activateRPZs(LuaConfigItems& lci)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<CatalogZone>
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3552,1
    - Dst: auto::setName
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3554,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3554,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3555,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ' lci'
    argTypes:
    - LuaConfigItems
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3557
      start: 3545
    functionDepth: 1
    functionLinenumber: 3545
    functionLinenumberEnd: 3557
    functionName: activateForwardingCatalogZones
    functionSourceFile: /src/pdns/pdns/recursordist/rec-main.cc
    functionUses: 0
    functionsReached:
    - std::make_shared<CatalogZone>
    - auto::setName
    - std::move
    - DNSName
    linkageType: ''
    returnType: void
    signature: void activateForwardingCatalogZones(LuaConfigItems& lci)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: trustAnchorFileInfo::fname::empty
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3561,1
    - Dst: warnIfDNSSECDisabled
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3562,1
    - Dst: updateTrustAnchorsFromFile
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3563,1
    - Dst: dsAnchors::size
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3565,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3565,1
    - Dst: warnIfDNSSECDisabled
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3566,1
    - Dst: negAnchors::empty
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3568,1
    - Dst: warnIfDNSSECDisabled
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3569,1
    - Dst: activateRPZs
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3571,1
    - Dst: activateForwardingCatalogZones
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3572,1
    - Dst: setState
      Src: /src/pdns/pdns/recursordist/rec-main.cc:3573,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 1
    argNames:
    - ' lci'
    argTypes:
    - LuaConfigItems
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3574
      start: 3559
    functionDepth: 3
    functionLinenumber: 3559
    functionLinenumberEnd: 3574
    functionName: activateLuaConfig
    functionSourceFile: /src/pdns/pdns/recursordist/rec-main.cc
    functionUses: 1
    functionsReached:
    - updateTrustAnchorsFromFile
    - setState
    - warnIfDNSSECDisabled
    - size
    - dsAnchors::size
    - activateForwardingCatalogZones
    - trustAnchorFileInfo::fname::empty
    - negAnchors::empty
    - activateRPZs
    linkageType: ''
    returnType: void
    signature: void activateLuaConfig(LuaConfigItems& lci)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: getCode
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:34,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:37,1
    - Dst: rbegin
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:37,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:47,1
    - Dst: rbegin
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:47,1
    - Dst: boost::erase_tail
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:48,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 1
    argNames:
    - cont
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 32
    functionDepth: 0
    functionLinenumber: 32
    functionLinenumberEnd: 50
    functionName: DNSResourceRecord::setContent
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.cc
    functionUses: 1
    functionsReached:
    - rbegin
    - getCode
    - boost::erase_tail
    - size
    linkageType: ''
    returnType: void
    signature: void DNSResourceRecord::setContent(const string &cont)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: getCode
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:57,1
    - Dst: stringtok
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:60,1
    - Dst: vector::empty
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:61,1
    - Dst: vector::rbegin
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:63,1
    - Dst: string::rbegin
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:67,1
    - Dst: rbegin
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:78,1
    - Dst: ostringstream::str
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:85,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 28
    argCount: 1
    argNames:
    - noDot
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 52
    functionDepth: 0
    functionLinenumber: 52
    functionLinenumberEnd: 86
    functionName: DNSResourceRecord::getZoneRepresentation
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.cc
    functionUses: 1
    functionsReached:
    - stringtok
    - rbegin
    - vector::empty
    - string::rbegin
    - ostringstream::str
    - vector::rbegin
    - getCode
    linkageType: ''
    returnType: string
    signature: string DNSResourceRecord::getZoneRepresentation(bool noDot) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: toLower
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:90,1
    - Dst: toLower
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:91,1
    - Dst: std::tie
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:94,1
    - Dst: std::tie
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:95,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - DNSResourceRecord
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 88
    functionDepth: 0
    functionLinenumber: 88
    functionLinenumberEnd: 96
    functionName: DNSResourceRecord::operator==(const DNSResourceRecord& rhs) const
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.cc
    functionUses: 0
    functionsReached:
    - toLower
    - std::tie
    linkageType: ''
    returnType: bool
    signature: bool DNSResourceRecord::operator==(const DNSResourceRecord& rhs) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ip
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 102
    functionDepth: 0
    functionLinenumber: 102
    functionLinenumberEnd: 105
    functionName: ARecordContent::ARecordContent
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ARecordContent::ARecordContent(uint32_t ip)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' ca'
    argTypes:
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 107
    functionDepth: 0
    functionLinenumber: 107
    functionLinenumberEnd: 110
    functionName: ARecordContent::ARecordContent
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ARecordContent::ARecordContent(const ComboAddress& ca)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assign
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:114,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' ca'
    argTypes:
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 115
      start: 112
    functionDepth: 1
    functionLinenumber: 112
    functionLinenumberEnd: 115
    functionName: AAAARecordContent::AAAARecordContent
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.cc
    functionUses: 0
    functionsReached:
    - assign
    linkageType: ''
    returnType: void
    signature: void AAAARecordContent::AAAARecordContent(const ComboAddress& ca)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: htons
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:123,1
    - Dst: memcpy
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:124,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - port
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 119
    functionDepth: 0
    functionLinenumber: 119
    functionLinenumberEnd: 126
    functionName: ARecordContent::getCA
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.cc
    functionUses: 0
    functionsReached:
    - memcpy
    - htons
    linkageType: ''
    returnType: ComboAddress
    signature: ComboAddress ARecordContent::getCA(int port) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ComboAddress::reset
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:131,1
    - Dst: htons
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:134,1
    - Dst: memcpy
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:135,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:135,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - port
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 137
      start: 128
    functionDepth: 0
    functionLinenumber: 128
    functionLinenumberEnd: 137
    functionName: AAAARecordContent::getCA
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.cc
    functionUses: 0
    functionsReached:
    - c_str
    - memcpy
    - ComboAddress::reset
    - htons
    linkageType: ''
    returnType: ComboAddress
    signature: ComboAddress AAAARecordContent::getCA(int port) const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: MOADNSException
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:143,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:143,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 3
    argCount: 1
    argNames:
    - ' dr'
    argTypes:
    - DNSRecord
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 144
      start: 140
    functionDepth: 0
    functionLinenumber: 140
    functionLinenumberEnd: 144
    functionName: ARecordContent::doRecordCheck
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.cc
    functionUses: 0
    functionsReached:
    - MOADNSException
    - std::to_string
    linkageType: ''
    returnType: void
    signature: void ARecordContent::doRecordCheck(const DNSRecord& dr)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: stringtok
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:199,1
    - Dst: string::append
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:204,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 215
      start: 195
    functionDepth: 0
    functionLinenumber: 195
    functionLinenumberEnd: 215
    functionName: LUARecordContent::getCode
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.cc
    functionUses: 1
    functionsReached:
    - string::append
    - stringtok
    linkageType: ''
    returnType: string
    signature: string LUARecordContent::getCode() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:222,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:223,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:223,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:224,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:224,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:227,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:230,1
    - Dst: emplace_back
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:232,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:232,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - ' options'
    argTypes:
    - vector<pair<uint16_t, string> >
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 234
      start: 218
    functionDepth: 0
    functionLinenumber: 218
    functionLinenumberEnd: 234
    functionName: OPTRecordContent::getData
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.cc
    functionUses: 0
    functionsReached:
    - std::move
    - size
    - emplace_back
    - c_str
    - at
    linkageType: ''
    returnType: void
    signature: void OPTRecordContent::getData(vector<pair<uint16_t, string> >& options)
      const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:252,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - preference
    - mxname
    argTypes:
    - uint16_t
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 254
      start: 252
    functionDepth: 0
    functionLinenumber: 252
    functionLinenumberEnd: 254
    functionName: MXRecordContent::MXRecordContent
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.cc
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void MXRecordContent::MXRecordContent(uint16_t preference, DNSName  mxname)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:321,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 4
    argNames:
    - preference
    - weight
    - port
    - target
    argTypes:
    - uint16_t
    - uint16_t
    - uint16_t
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 322
      start: 320
    functionDepth: 0
    functionLinenumber: 320
    functionLinenumberEnd: 322
    functionName: SRVRecordContent::SRVRecordContent
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.cc
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void SRVRecordContent::SRVRecordContent(uint16_t preference, uint16_t
      weight, uint16_t port, DNSName  target)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:332,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:332,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 3
    argNames:
    - mname
    - rname
    - ' st'
    argTypes:
    - DNSName
    - DNSName
    - struct soatimes
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 334
      start: 331
    functionDepth: 0
    functionLinenumber: 331
    functionLinenumberEnd: 334
    functionName: SOARecordContent::SOARecordContent
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.cc
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void SOARecordContent::SOARecordContent(DNSName  mname, DNSName  rname,
      const struct soatimes& st)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 412
      start: 412
    functionDepth: 0
    functionLinenumber: 412
    functionLinenumberEnd: 412
    functionName: DSRecordContent::DSRecordContent
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.cc
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void DSRecordContent::DSRecordContent()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 420
      start: 420
    functionDepth: 0
    functionLinenumber: 420
    functionLinenumberEnd: 420
    functionName: CDSRecordContent::CDSRecordContent
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void CDSRecordContent::CDSRecordContent()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 428
      start: 428
    functionDepth: 0
    functionLinenumber: 428
    functionLinenumberEnd: 428
    functionName: DLVRecordContent::DLVRecordContent
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void DLVRecordContent::DLVRecordContent()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 455
      start: 455
    functionDepth: 0
    functionLinenumber: 455
    functionLinenumberEnd: 455
    functionName: RRSIGRecordContent::RRSIGRecordContent
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.cc
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void RRSIGRecordContent::RRSIGRecordContent()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 463
      start: 463
    functionDepth: 0
    functionLinenumber: 463
    functionLinenumberEnd: 463
    functionName: DNSKEYRecordContent::DNSKEYRecordContent
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.cc
    functionUses: 14
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void DNSKEYRecordContent::DNSKEYRecordContent()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 471
      start: 471
    functionDepth: 0
    functionLinenumber: 471
    functionLinenumberEnd: 471
    functionName: CDNSKEYRecordContent::CDNSKEYRecordContent
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void CDNSKEYRecordContent::CDNSKEYRecordContent()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 479
      start: 479
    functionDepth: 0
    functionLinenumber: 479
    functionLinenumberEnd: 479
    functionName: RKEYRecordContent::RKEYRecordContent
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void RKEYRecordContent::RKEYRecordContent()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: regist
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:501,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 502
      start: 499
    functionDepth: 0
    functionLinenumber: 499
    functionLinenumberEnd: 502
    functionName: EUI48RecordContent::report
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.cc
    functionUses: 2
    functionsReached:
    - regist
    linkageType: ''
    returnType: void
    signature: void EUI48RecordContent::report(const ReportIsOnlyCallableByReportAllTypes&
      /* unused */)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: MOADNSException
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:506,1
    - Dst: std::make_shared<EUI48RecordContent>
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:508,1
    - Dst: copyRecord
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:509,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - dr
    - ' pr'
    argTypes:
    - DNSRecord
    - PacketReader
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 511
      start: 503
    functionDepth: 0
    functionLinenumber: 503
    functionLinenumberEnd: 511
    functionName: EUI48RecordContent::make
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.cc
    functionUses: 0
    functionsReached:
    - std::make_shared<EUI48RecordContent>
    - MOADNSException
    - copyRecord
    linkageType: ''
    returnType: std::shared_ptr<DNSRecordContent>
    signature: std::shared_ptr<DNSRecordContent> EUI48RecordContent::make(const DNSRecord
      &dr, PacketReader& pr)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<EUI48RecordContent>
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:515,1
    - Dst: sscanf
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:517,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:517,1
    - Dst: MOADNSException
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:520,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - ' zone'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 523
      start: 512
    functionDepth: 0
    functionLinenumber: 512
    functionLinenumberEnd: 523
    functionName: EUI48RecordContent::make
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.cc
    functionUses: 0
    functionsReached:
    - std::make_shared<EUI48RecordContent>
    - c_str
    - MOADNSException
    - sscanf
    linkageType: ''
    returnType: std::shared_ptr<DNSRecordContent>
    signature: std::shared_ptr<DNSRecordContent> EUI48RecordContent::make(const string&
      zone)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: xfrBlob
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:527,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' pw'
    argTypes:
    - DNSPacketWriter
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 528
      start: 524
    functionDepth: 0
    functionLinenumber: 524
    functionLinenumberEnd: 528
    functionName: EUI48RecordContent::toPacket
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.cc
    functionUses: 0
    functionsReached:
    - xfrBlob
    linkageType: ''
    returnType: void
    signature: void EUI48RecordContent::toPacket(DNSPacketWriter& pw) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:533,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 537
      start: 530
    functionDepth: 0
    functionLinenumber: 530
    functionLinenumberEnd: 537
    functionName: EUI48RecordContent::getZoneRepresentation
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.cc
    functionUses: 0
    functionsReached:
    - snprintf
    linkageType: ''
    returnType: string
    signature: string EUI48RecordContent::getZoneRepresentation(bool /* noDot */)
      const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: regist
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:545,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 546
      start: 543
    functionDepth: 0
    functionLinenumber: 543
    functionLinenumberEnd: 546
    functionName: EUI64RecordContent::report
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.cc
    functionUses: 1
    functionsReached:
    - regist
    linkageType: ''
    returnType: void
    signature: void EUI64RecordContent::report(const ReportIsOnlyCallableByReportAllTypes&
      /* unused */)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: MOADNSException
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:550,1
    - Dst: std::make_shared<EUI64RecordContent>
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:552,1
    - Dst: copyRecord
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:553,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - dr
    - ' pr'
    argTypes:
    - DNSRecord
    - PacketReader
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 555
      start: 547
    functionDepth: 0
    functionLinenumber: 547
    functionLinenumberEnd: 555
    functionName: EUI64RecordContent::make
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.cc
    functionUses: 0
    functionsReached:
    - std::make_shared<EUI64RecordContent>
    - MOADNSException
    - copyRecord
    linkageType: ''
    returnType: std::shared_ptr<DNSRecordContent>
    signature: std::shared_ptr<DNSRecordContent> EUI64RecordContent::make(const DNSRecord
      &dr, PacketReader& pr)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<EUI64RecordContent>
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:559,1
    - Dst: sscanf
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:561,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:561,1
    - Dst: MOADNSException
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:565,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - ' zone'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 568
      start: 556
    functionDepth: 0
    functionLinenumber: 556
    functionLinenumberEnd: 568
    functionName: EUI64RecordContent::make
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.cc
    functionUses: 0
    functionsReached:
    - c_str
    - std::make_shared<EUI64RecordContent>
    - MOADNSException
    - sscanf
    linkageType: ''
    returnType: std::shared_ptr<DNSRecordContent>
    signature: std::shared_ptr<DNSRecordContent> EUI64RecordContent::make(const string&
      zone)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: xfrBlob
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:572,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' pw'
    argTypes:
    - DNSPacketWriter
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 573
      start: 569
    functionDepth: 0
    functionLinenumber: 569
    functionLinenumberEnd: 573
    functionName: EUI64RecordContent::toPacket
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.cc
    functionUses: 0
    functionsReached:
    - xfrBlob
    linkageType: ''
    returnType: void
    signature: void EUI64RecordContent::toPacket(DNSPacketWriter& pw) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:578,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 583
      start: 575
    functionDepth: 0
    functionLinenumber: 575
    functionLinenumberEnd: 583
    functionName: EUI64RecordContent::getZoneRepresentation
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.cc
    functionUses: 0
    functionsReached:
    - snprintf
    linkageType: ''
    returnType: string
    signature: string EUI64RecordContent::getZoneRepresentation(bool /* noDot */)
      const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: regist
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:591,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 592
      start: 589
    functionDepth: 0
    functionLinenumber: 589
    functionLinenumberEnd: 592
    functionName: APLRecordContent::report
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.cc
    functionUses: 1
    functionsReached:
    - regist
    linkageType: ''
    returnType: void
    signature: void APLRecordContent::report(const ReportIsOnlyCallableByReportAllTypes&
      /* unused */)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<APLRecordContent>
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:600,1
    - Dst: xfr16BitInt
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:603,1
    - Dst: xfr8BitInt
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:604,1
    - Dst: xfr8BitInt
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:605,1
    - Dst: MOADNSException
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:611,1
    - Dst: memset
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:613,1
    - Dst: xfr8BitInt
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:615,1
    - Dst: MOADNSException
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:618,1
    - Dst: memset
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:620,1
    - Dst: xfr8BitInt
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:622,1
    - Dst: MOADNSException
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:624,1
    - Dst: auto::aplrdata::push_back
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:628,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 28
    argCount: 2
    argNames:
    - dr
    - ' pr'
    argTypes:
    - DNSRecord
    - PacketReader
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 632
      start: 595
    functionDepth: 0
    functionLinenumber: 595
    functionLinenumberEnd: 632
    functionName: APLRecordContent::make
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.cc
    functionUses: 0
    functionsReached:
    - auto::aplrdata::push_back
    - xfr8BitInt
    - xfr16BitInt
    - memset
    - std::make_shared<APLRecordContent>
    - MOADNSException
    linkageType: ''
    returnType: std::shared_ptr<DNSRecordContent>
    signature: std::shared_ptr<DNSRecordContent> APLRecordContent::make(const DNSRecord
      &dr, PacketReader& pr)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: Netmask::Netmask
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:637,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:643,1
    - Dst: substr
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:645,1
    - Dst: length
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:645,1
    - Dst: string::find
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:651,1
    - Dst: MOADNSException
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:652,1
    - Dst: string::find
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:656,1
    - Dst: Netmask
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:664,1
    - Dst: string::substr
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:664,1
    - Dst: string::length
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:664,1
    - Dst: Netmask::getBits
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:665,1
    - Dst: Netmask::getNetwork
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:667,1
    - Dst: MOADNSException
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:668,1
    - Dst: ntohl
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:672,1
    - Dst: Netmask::getNetwork
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:672,1
    - Dst: memset
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:673,1
    - Dst: string::find
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:688,1
    - Dst: Netmask
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:692,1
    - Dst: string::substr
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:692,1
    - Dst: string::length
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:692,1
    - Dst: Netmask::getBits
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:693,1
    - Dst: Netmask::getNetwork
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:695,1
    - Dst: MOADNSException
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:696,1
    - Dst: memset
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:700,1
    - Dst: Netmask::getNetwork
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:704,1
    - Dst: Netmask::getNetwork
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:705,1
    - Dst: MOADNSException
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:715,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 54
    argCount: 1
    argNames:
    - ' element'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 719
      start: 635
    functionDepth: 0
    functionLinenumber: 635
    functionLinenumberEnd: 719
    functionName: APLRecordContent::parseAPLElement
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.cc
    functionUses: 0
    functionsReached:
    - length
    - Netmask
    - Netmask::getNetwork
    - ntohl
    - Netmask::Netmask
    - string::find
    - Netmask::getBits
    - memset
    - substr
    - string::substr
    - MOADNSException
    - string::length
    - at
    linkageType: ''
    returnType: APLRDataElement
    signature: APLRDataElement APLRecordContent::parseAPLElement(const string& element)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<APLRecordContent>
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:726,1
    - Dst: NetmaskTree::TreeNode::split
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:728,1
    - Dst: boost::is_any_of
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:728,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:730,1
    - Dst: auto::parseAPLElement
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:731,1
    - Dst: auto::aplrdata::push_back
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:732,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - ' zone'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 736
      start: 722
    functionDepth: 0
    functionLinenumber: 722
    functionLinenumberEnd: 736
    functionName: APLRecordContent::make
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.cc
    functionUses: 0
    functionsReached:
    - NetmaskTree::TreeNode::split
    - auto::aplrdata::push_back
    - boost::is_any_of
    - std::make_shared<APLRecordContent>
    - empty
    - auto::parseAPLElement
    linkageType: ''
    returnType: std::shared_ptr<DNSRecordContent>
    signature: std::shared_ptr<DNSRecordContent> APLRecordContent::make(const string&
      zone)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: xfr16BitInt
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:742,1
    - Dst: xfr8BitInt
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:743,1
    - Dst: xfr8BitInt
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:744,1
    - Dst: xfr8BitInt
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:747,1
    - Dst: xfr8BitInt
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:751,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 1
    argNames:
    - ' pw'
    argTypes:
    - DNSPacketWriter
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 755
      start: 740
    functionDepth: 0
    functionLinenumber: 740
    functionLinenumberEnd: 755
    functionName: APLRecordContent::toPacket
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.cc
    functionUses: 0
    functionsReached:
    - xfr16BitInt
    - xfr8BitInt
    linkageType: ''
    returnType: void
    signature: void APLRecordContent::toPacket(DNSPacketWriter& pw) const
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Netmask::Netmask
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:761,1
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:765,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:765,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:775,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:776,1
    - Dst: memset
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:777,1
    - Dst: memcpy
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:779,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:781,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:782,1
    - Dst: memset
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:784,1
    - Dst: memcpy
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:786,1
    - Dst: MOADNSException
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:788,1
    - Dst: Netmask
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:791,1
    - Dst: Netmask::toString
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:793,1
    - Dst: std::next
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:794,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:794,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 29
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 798
      start: 758
    functionDepth: 0
    functionLinenumber: 758
    functionLinenumberEnd: 798
    functionName: APLRecordContent::getZoneRepresentation
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.cc
    functionUses: 0
    functionsReached:
    - memcpy
    - Netmask
    - std::to_string
    - Netmask::toString
    - Netmask::Netmask
    - end
    - std::next
    - memset
    - begin
    - MOADNSException
    - ComboAddress
    linkageType: ''
    returnType: string
    signature: string APLRecordContent::getZoneRepresentation(bool /* noDot */) const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SVCBBaseRecordContent::getParamIt
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:804,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:805,1
    - Dst: auto::getAutoHint
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:808,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - key
    argTypes:
    - SvcParam::SvcParamKey
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 809
      start: 803
    functionDepth: 0
    functionLinenumber: 803
    functionLinenumberEnd: 809
    functionName: SVCBBaseRecordContent::autoHint
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.cc
    functionUses: 0
    functionsReached:
    - SVCBBaseRecordContent::getParamIt
    - end
    - auto::getAutoHint
    linkageType: ''
    returnType: bool
    signature: bool SVCBBaseRecordContent::autoHint(const SvcParam::SvcParamKey &key)
      const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SVCBBaseRecordContent::getParamIt
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:812,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:813,1
    - Dst: std::vector::reserve
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:818,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:818,1
    - Dst: std::vector<ComboAddress>::size
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:818,1
    - Dst: std::vector::insert
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:819,1
    - Dst: std::vector::end
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:819,1
    - Dst: std::vector<ComboAddress>::begin
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:819,1
    - Dst: std::vector<ComboAddress>::end
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:819,1
    - Dst: SvcParam
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:822,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:822,1
    - Dst: erase
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:823,1
    - Dst: insert
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:824,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:824,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 2
    argNames:
    - key
    - addresses
    argTypes:
    - SvcParam::SvcParamKey
    - std::vector<ComboAddress>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 829
      start: 811
    functionDepth: 1
    functionLinenumber: 811
    functionLinenumberEnd: 829
    functionName: SVCBBaseRecordContent::setHints
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.cc
    functionUses: 0
    functionsReached:
    - SVCBBaseRecordContent::getParamIt
    - std::vector::end
    - std::move
    - std::vector<ComboAddress>::size
    - std::vector::size
    - std::vector::insert
    - SvcParam
    - end
    - std::vector::reserve
    - std::vector<ComboAddress>::begin
    - insert
    - erase
    - std::vector<ComboAddress>::end
    linkageType: ''
    returnType: void
    signature: void SVCBBaseRecordContent::setHints(const SvcParam::SvcParamKey &key,
      const std::vector<ComboAddress> &addresses)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SVCBBaseRecordContent::getParamIt
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:832,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:833,1
    - Dst: erase
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:836,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - key
    argTypes:
    - SvcParam::SvcParamKey
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 837
      start: 831
    functionDepth: 0
    functionLinenumber: 831
    functionLinenumberEnd: 837
    functionName: SVCBBaseRecordContent::removeParam
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.cc
    functionUses: 0
    functionsReached:
    - SVCBBaseRecordContent::getParamIt
    - erase
    - end
    linkageType: ''
    returnType: void
    signature: void SVCBBaseRecordContent::removeParam(const SvcParam::SvcParamKey
      &key)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:840,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 841
      start: 839
    functionDepth: 0
    functionLinenumber: 839
    functionLinenumberEnd: 841
    functionName: SVCBBaseRecordContent::hasParams
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.cc
    functionUses: 0
    functionsReached:
    - empty
    linkageType: ''
    returnType: bool
    signature: bool SVCBBaseRecordContent::hasParams() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SVCBBaseRecordContent::getParamIt
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:844,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:844,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - key
    argTypes:
    - SvcParam::SvcParamKey
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 845
      start: 843
    functionDepth: 0
    functionLinenumber: 843
    functionLinenumberEnd: 845
    functionName: SVCBBaseRecordContent::hasParam
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.cc
    functionUses: 0
    functionsReached:
    - SVCBBaseRecordContent::getParamIt
    - end
    linkageType: ''
    returnType: bool
    signature: bool SVCBBaseRecordContent::hasParam(const SvcParam::SvcParamKey &key)
      const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SVCBBaseRecordContent::getParamIt
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:848,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:849,1
    - Dst: std::out_of_range
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:850,1
    - Dst: SvcParam::keyToString
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:850,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - key
    argTypes:
    - SvcParam::SvcParamKey
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 853
      start: 847
    functionDepth: 0
    functionLinenumber: 847
    functionLinenumberEnd: 853
    functionName: SVCBBaseRecordContent::getParam
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.cc
    functionUses: 0
    functionsReached:
    - SVCBBaseRecordContent::getParamIt
    - SvcParam::keyToString
    - end
    - std::out_of_range
    linkageType: ''
    returnType: SvcParam
    signature: SvcParam SVCBBaseRecordContent::getParam(const SvcParam::SvcParamKey
      &key) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::find
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:856,1
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:856,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:856,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - key
    argTypes:
    - SvcParam::SvcParamKey
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 857
      start: 855
    functionDepth: 0
    functionLinenumber: 855
    functionLinenumberEnd: 857
    functionName: SVCBBaseRecordContent::getParamIt
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.cc
    functionUses: 10
    functionsReached:
    - end
    - std::find
    - begin
    linkageType: ''
    returnType: set<SvcParam>::const_iterator
    signature: set<SvcParam>::const_iterator SVCBBaseRecordContent::getParamIt(const
      SvcParam::SvcParamKey &key) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::shared_ptr<SVCBBaseRecordContent>
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:861,1
    - Dst: std::make_shared<SVCBRecordContent>
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:861,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 862
      start: 859
    functionDepth: 0
    functionLinenumber: 859
    functionLinenumberEnd: 862
    functionName: SVCBRecordContent::clone
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.cc
    functionUses: 0
    functionsReached:
    - std::shared_ptr<SVCBBaseRecordContent>
    - std::make_shared<SVCBRecordContent>
    linkageType: ''
    returnType: std::shared_ptr<SVCBBaseRecordContent>
    signature: std::shared_ptr<SVCBBaseRecordContent> SVCBRecordContent::clone() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::shared_ptr<SVCBBaseRecordContent>
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:866,1
    - Dst: std::make_shared<HTTPSRecordContent>
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:866,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 867
      start: 864
    functionDepth: 0
    functionLinenumber: 864
    functionLinenumberEnd: 867
    functionName: HTTPSRecordContent::clone
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.cc
    functionUses: 0
    functionsReached:
    - std::make_shared<HTTPSRecordContent>
    - std::shared_ptr<SVCBBaseRecordContent>
    linkageType: ''
    returnType: std::shared_ptr<SVCBBaseRecordContent>
    signature: std::shared_ptr<SVCBBaseRecordContent> HTTPSRecordContent::clone()
      const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<HHITRecordContent>
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:873,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 874
      start: 871
    functionDepth: 0
    functionLinenumber: 871
    functionLinenumberEnd: 874
    functionName: HHITRecordContent::clone
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.cc
    functionUses: 0
    functionsReached:
    - std::make_shared<HHITRecordContent>
    linkageType: ''
    returnType: std::shared_ptr<DRIPBaseRecordContent>
    signature: std::shared_ptr<DRIPBaseRecordContent> HHITRecordContent::clone() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<BRIDRecordContent>
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:878,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 879
      start: 876
    functionDepth: 0
    functionLinenumber: 876
    functionLinenumberEnd: 879
    functionName: BRIDRecordContent::clone
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.cc
    functionUses: 0
    functionsReached:
    - std::make_shared<BRIDRecordContent>
    linkageType: ''
    returnType: std::shared_ptr<DRIPBaseRecordContent>
    signature: std::shared_ptr<DRIPBaseRecordContent> BRIDRecordContent::clone() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:911,1
    - Dst: length
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:912,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ' data'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 921
      start: 909
    functionDepth: 0
    functionLinenumber: 909
    functionLinenumberEnd: 921
    functionName: makeTag
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.cc
    functionUses: 1
    functionsReached:
    - c_str
    - length
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t makeTag(const std::string& data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeTag
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:925,1
    - Dst: DNSKEYRecordContent::serialize
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:925,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:925,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 926
      start: 923
    functionDepth: 0
    functionLinenumber: 923
    functionLinenumberEnd: 926
    functionName: DNSKEYRecordContent::getTag
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.cc
    functionUses: 1
    functionsReached:
    - makeTag
    - DNSName
    - DNSKEYRecordContent::serialize
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t DNSKEYRecordContent::getTag() const
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: d_answers::empty
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:935,1
    - Dst: ntohl
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:941,1
    - Dst: memcpy
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:943,1
    - Dst: ntohs
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:947,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:948,1
    - Dst: auto::getData
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:951,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 2
    argNames:
    - ' mdp'
    - eo
    argTypes:
    - MOADNSParser
    - EDNSOpts*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 957
      start: 932
    functionDepth: 0
    functionLinenumber: 932
    functionLinenumberEnd: 957
    functionName: getEDNSOpts
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.cc
    functionUses: 3
    functionsReached:
    - ntohl
    - getRR
    - memcpy
    - ntohs
    - d_answers::empty
    - auto::getData
    linkageType: ''
    returnType: bool
    signature: bool getEDNSOpts(const MOADNSParser& mdp, EDNSOpts* eo)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EUI48RecordContent::report
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:961,1
    - Dst: EUI48RecordContent::report
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:962,1
    - Dst: EUI48RecordContent::report
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:963,1
    - Dst: EUI48RecordContent::report
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:964,1
    - Dst: EUI48RecordContent::report
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:965,1
    - Dst: EUI48RecordContent::report
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:966,1
    - Dst: EUI48RecordContent::report
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:967,1
    - Dst: EUI48RecordContent::report
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:968,1
    - Dst: DNSRecordContent::regist
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:969,1
    - Dst: EUI48RecordContent::report
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:970,1
    - Dst: EUI48RecordContent::report
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:972,1
    - Dst: DNSRecordContent::regist
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:974,1
    - Dst: DNSRecordContent::regist
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:975,1
    - Dst: DNSRecordContent::regist
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:976,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 15
    argCount: 1
    argNames:
    - ' guard'
    argTypes:
    - ReportIsOnlyCallableByReportAllTypes
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 977
      start: 959
    functionDepth: 0
    functionLinenumber: 959
    functionLinenumberEnd: 977
    functionName: reportBasicTypes
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.cc
    functionUses: 1
    functionsReached:
    - EUI48RecordContent::report
    - DNSRecordContent::regist
    linkageType: ''
    returnType: void
    signature: void reportBasicTypes(const ReportIsOnlyCallableByReportAllTypes& guard)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EUI48RecordContent::report
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:981,1
    - Dst: EUI48RecordContent::report
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:982,1
    - Dst: EUI48RecordContent::report
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:983,1
    - Dst: EUI48RecordContent::report
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:984,1
    - Dst: EUI48RecordContent::report
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:985,1
    - Dst: EUI48RecordContent::report
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:987,1
    - Dst: EUI48RecordContent::report
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:989,1
    - Dst: EUI48RecordContent::report
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:990,1
    - Dst: EUI48RecordContent::report
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:991,1
    - Dst: LOCRecordContent::report
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:992,1
    - Dst: EUI48RecordContent::report
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:993,1
    - Dst: EUI48RecordContent::report
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:994,1
    - Dst: EUI48RecordContent::report
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:995,1
    - Dst: EUI48RecordContent::report
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:996,1
    - Dst: EUI48RecordContent::report
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:997,1
    - Dst: EUI48RecordContent::report
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:998,1
    - Dst: EUI48RecordContent::report
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:999,1
    - Dst: EUI48RecordContent::report
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:1000,1
    - Dst: EUI48RecordContent::report
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:1001,1
    - Dst: EUI48RecordContent::report
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:1002,1
    - Dst: EUI48RecordContent::report
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:1003,1
    - Dst: EUI48RecordContent::report
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:1004,1
    - Dst: EUI48RecordContent::report
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:1005,1
    - Dst: NSECRecordContent::report
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:1006,1
    - Dst: NSEC3RecordContent::report
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:1007,1
    - Dst: NSEC3PARAMRecordContent::report
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:1008,1
    - Dst: EUI48RecordContent::report
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:1009,1
    - Dst: EUI48RecordContent::report
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:1010,1
    - Dst: EUI48RecordContent::report
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:1011,1
    - Dst: EUI48RecordContent::report
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:1012,1
    - Dst: EUI48RecordContent::report
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:1013,1
    - Dst: EUI48RecordContent::report
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:1014,1
    - Dst: EUI48RecordContent::report
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:1015,1
    - Dst: EUI48RecordContent::report
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:1016,1
    - Dst: DNSRecordContent::regist
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:1017,1
    - Dst: DNSRecordContent::regist
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:1018,1
    - Dst: EUI48RecordContent::report
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:1020,1
    - Dst: EUI48RecordContent::report
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:1021,1
    - Dst: EUI64RecordContent::report
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:1022,1
    - Dst: EUI48RecordContent::report
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:1023,1
    - Dst: EUI48RecordContent::report
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:1024,1
    - Dst: EUI48RecordContent::report
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:1025,1
    - Dst: EUI48RecordContent::report
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:1026,1
    - Dst: APLRecordContent::report
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:1027,1
    - Dst: EUI48RecordContent::report
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:1028,1
    - Dst: CSYNCRecordContent::report
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:1029,1
    - Dst: EUI48RecordContent::report
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:1030,1
    - Dst: EUI48RecordContent::report
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:1031,1
    - Dst: EUI48RecordContent::report
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:1032,1
    - Dst: EUI48RecordContent::report
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:1033,1
    - Dst: EUI48RecordContent::report
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:1034,1
    - Dst: EUI48RecordContent::report
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:1035,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 53
    argCount: 1
    argNames:
    - ' guard'
    argTypes:
    - ReportIsOnlyCallableByReportAllTypes
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1036
      start: 979
    functionDepth: 0
    functionLinenumber: 979
    functionLinenumberEnd: 1036
    functionName: reportOtherTypes
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.cc
    functionUses: 1
    functionsReached:
    - LOCRecordContent::report
    - NSEC3RecordContent::report
    - NSEC3PARAMRecordContent::report
    - DNSRecordContent::regist
    - EUI64RecordContent::report
    - APLRecordContent::report
    - NSECRecordContent::report
    - CSYNCRecordContent::report
    - EUI48RecordContent::report
    linkageType: ''
    returnType: void
    signature: void reportOtherTypes(const ReportIsOnlyCallableByReportAllTypes& guard)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: reportBasicTypes
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:1045,1
    - Dst: reportOtherTypes
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:1046,1
    - Dst: DNSRecordContent::lock
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:1047,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1048
      start: 1042
    functionDepth: 0
    functionLinenumber: 1042
    functionLinenumberEnd: 1048
    functionName: reportAllTypes
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.cc
    functionUses: 28
    functionsReached:
    - reportBasicTypes
    - reportOtherTypes
    - DNSRecordContent::lock
    linkageType: ''
    returnType: void
    signature: void reportAllTypes()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:1052,1
    - Dst: auto::getCA
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:1053,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:1055,1
    - Dst: auto::getCA
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:1056,1
    - Dst: std::invalid_argument
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:1058,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - ' dr'
    - defport
    argTypes:
    - DNSRecord
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1059
      start: 1050
    functionDepth: 0
    functionLinenumber: 1050
    functionLinenumberEnd: 1059
    functionName: getAddr
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.cc
    functionUses: 2
    functionsReached:
    - std::invalid_argument
    - getRR
    - auto::getCA
    linkageType: ''
    returnType: ComboAddress
    signature: ComboAddress getAddr(const DNSRecord& dr, uint16_t defport)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: qtype::getCode
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:1066,1
    - Dst: qtype::getCode
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:1066,1
    - Dst: qtype::getCode
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:1066,1
    - Dst: DNSName::DNSName
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:1067,1
    - Dst: qtype::getCode
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:1068,1
    - Dst: stringtok
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:1070,1
    - Dst: getZoneRepresentation
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:1070,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:1071,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:1071,1
    - Dst: qtype::getCode
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:1072,1
    - Dst: stringtok
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:1074,1
    - Dst: getZoneRepresentation
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:1074,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:1075,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:1075,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:1077,1
    - Dst: DNSName::empty
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:1080,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:1081,1
    - Dst: qtype::getCode
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:1083,1
    - Dst: qtype::getCode
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:1083,1
    - Dst: DNSName::isHostname
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:1085,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:1086,1
    - Dst: sqlstr
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:1086,1
    - Dst: boost::format
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:1086,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:1086,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 23
    argCount: 2
    argNames:
    - ' rr'
    - allowUnderscore
    argTypes:
    - DNSResourceRecord
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1089
      start: 1064
    functionDepth: 1
    functionLinenumber: 1064
    functionLinenumberEnd: 1089
    functionName: checkHostnameCorrectness
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.cc
    functionUses: 3
    functionsReached:
    - getZoneRepresentation
    - stringtok
    - std::runtime_error
    - DNSName
    - qtype::getCode
    - DNSName::isHostname
    - DNSName::toString
    - DNSName::empty
    - sqlstr
    - boost::format
    - DNSName::DNSName
    - vector::size
    linkageType: ''
    returnType: void
    signature: void checkHostnameCorrectness(const DNSResourceRecord& rr, bool allowUnderscore)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: cbegin
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:1093,1
    - Dst: cend
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:1093,1
    - Dst: cend
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:1098,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - optionCode
    argTypes:
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1099
      start: 1091
    functionDepth: 0
    functionLinenumber: 1091
    functionLinenumberEnd: 1099
    functionName: EDNSOpts::getFirstOption
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.cc
    functionUses: 0
    functionsReached:
    - cbegin
    - cend
    linkageType: ''
    returnType: vector<pair<uint16_t, string>>::const_iterator
    signature: vector<pair<uint16_t, string>>::const_iterator EDNSOpts::getFirstOption(uint16_t
      optionCode) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: reportAllTypes
      Src: /src/pdns/pdns/recursordist/dnsrecords.cc:1106,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1107
      start: 1104
    functionDepth: 0
    functionLinenumber: 1104
    functionLinenumberEnd: 1107
    functionName: Reporter
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.cc
    functionUses: 0
    functionsReached:
    - reportAllTypes
    linkageType: ''
    returnType: void
    signature: void Reporter()
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:15,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:17,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:23,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:25,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:26,1
    - Dst: isIPv4
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:27,1
    - Dst: isIPv6
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:28,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:30,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:31,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:32,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:33,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:37,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:38,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:40,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:41,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:45,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:46,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:48,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:49,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:58,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:58,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:59,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:60,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:61,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:62,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:63,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:63,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 41
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 12
    functionDepth: 1
    functionLinenumber: 12
    functionLinenumberEnd: 64
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc10.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - std::unique_ptr::setAsyncCallback
    - isIPv6
    - primeHints
    - QType
    - addRecordToLW
    - DNSName
    - initSR
    - BOOST_CHECK_EQUAL
    - isIPv4
    - std::unique_ptr::beginResolve
    - isRootServer
    - vector::size
    - BOOST_REQUIRE_EQUAL
    - ComboAddress
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_outgoing_v4_only)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:70,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:72,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:76,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:78,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:79,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:81,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:82,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:83,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:87,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:88,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:89,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:90,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:99,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:99,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:100,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:101,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:102,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:102,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 27
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 66
    functionDepth: 1
    functionLinenumber: 66
    functionLinenumberEnd: 103
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc10.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - std::unique_ptr::setAsyncCallback
    - primeHints
    - QType
    - addRecordToLW
    - DNSName
    - initSR
    - BOOST_CHECK_EQUAL
    - std::unique_ptr::beginResolve
    - isRootServer
    - vector::size
    - BOOST_REQUIRE_EQUAL
    - ComboAddress
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_outgoing_v4_only_no_A_in_delegation)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:108,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:111,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:115,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:117,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:118,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:119,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:120,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:121,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:125,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:126,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:127,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:128,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:137,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:137,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:138,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:139,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:140,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:140,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 28
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 141
      start: 105
    functionDepth: 1
    functionLinenumber: 105
    functionLinenumberEnd: 141
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc10.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - std::unique_ptr::setAsyncCallback
    - primeHints
    - QType
    - addRecordToLW
    - DNSName
    - initSR
    - BOOST_CHECK_EQUAL
    - std::unique_ptr::beginResolve
    - isRootServer
    - vector::size
    - BOOST_REQUIRE_EQUAL
    - ComboAddress
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_outgoing_v6_only_no_AAAA_in_delegation)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:146,1
    - Dst: setDNSSECValidation
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:148,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:150,1
    - Dst: getCopy
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:155,1
    - Dst: auto::dsAnchors::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:156,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:157,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:158,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:158,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:159,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:159,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:160,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:160,1
    - Dst: setState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:162,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:166,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:171,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:173,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:174,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:175,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:175,1
    - Dst: addNSECRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:176,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:176,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:177,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:177,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:180,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:182,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:183,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:184,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:184,1
    - Dst: addNSECRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:185,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:185,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:185,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:186,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:186,1
    - Dst: genericDSAndDNSKEYHandler
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:189,1
    - Dst: genericDSAndDNSKEYHandler
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:192,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:195,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:196,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:197,1
    - Dst: addDS
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:198,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:198,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:199,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:199,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:200,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:203,1
    - Dst: isPartOf
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:204,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:204,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:205,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:206,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:206,1
    - Dst: addNSECRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:208,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:208,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:208,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:209,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:209,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:210,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:214,1
    - Dst: isPartOf
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:215,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:215,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:216,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:217,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:217,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:218,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:218,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:221,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:222,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:223,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:223,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:224,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:224,1
    - Dst: addNSECRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:226,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:226,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:226,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:227,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:227,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:240,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:240,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:240,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:241,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:242,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:242,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:243,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:243,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:244,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:244,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:245,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:245,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:246,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:246,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:247,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:247,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:248,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:251,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:252,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:252,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:253,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:254,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:254,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:255,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:255,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:256,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:257,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:260,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:261,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:261,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:262,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:263,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:263,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:264,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:264,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:265,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:266,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 93
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 267
      start: 143
    functionDepth: 1
    functionLinenumber: 143
    functionLinenumberEnd: 267
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc10.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - genericDSAndDNSKEYHandler
    - primeHints
    - setDNSSECValidation
    - std::unique_ptr::beginResolve
    - isRootServer
    - setState
    - vector::at
    - QType
    - generateKeyMaterial
    - addRecordToLW
    - auto::dsAnchors::clear
    - addRRSIG
    - addNSECRecordToLW
    - vector::clear
    - BOOST_REQUIRE_EQUAL
    - std::unique_ptr::setAsyncCallback
    - isPartOf
    - DNSName
    - initSR
    - addDS
    - std::unique_ptr::getValidationState
    - ComboAddress
    - BOOST_CHECK
    - BOOST_CHECK_EQUAL
    - getCopy
    - ComboAddress::toString
    - vector::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_dnssec_secure_to_insecure_skipped_cut_invalid_ds_denial)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:276,1
    - Dst: setDNSSECValidation
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:278,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:280,1
    - Dst: getCopy
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:285,1
    - Dst: auto::dsAnchors::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:286,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:287,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:288,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:288,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:289,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:289,1
    - Dst: setState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:291,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:295,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:301,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:303,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:304,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:305,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:305,1
    - Dst: addNSECRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:306,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:306,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:307,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:307,1
    - Dst: genericDSAndDNSKEYHandler
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:310,1
    - Dst: genericDSAndDNSKEYHandler
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:313,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:316,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:317,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:318,1
    - Dst: addDS
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:319,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:319,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:320,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:320,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:321,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:324,1
    - Dst: isPartOf
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:325,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:325,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:326,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:327,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:327,1
    - Dst: addNSECRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:329,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:329,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:329,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:330,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:330,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:331,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:335,1
    - Dst: isPartOf
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:336,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:336,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:337,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:338,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:338,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:339,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:339,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:342,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:343,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:344,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:344,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:357,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:357,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:357,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:358,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:359,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:359,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:360,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:360,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:361,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:361,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:362,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:365,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:366,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:366,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:367,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:368,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:368,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:369,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:369,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:370,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:371,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:374,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:375,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:375,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:376,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:377,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:377,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:378,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:378,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:379,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:380,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 78
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 381
      start: 269
    functionDepth: 1
    functionLinenumber: 269
    functionLinenumberEnd: 381
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc10.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - genericDSAndDNSKEYHandler
    - primeHints
    - setDNSSECValidation
    - std::unique_ptr::beginResolve
    - isRootServer
    - setState
    - vector::at
    - QType
    - generateKeyMaterial
    - addRecordToLW
    - auto::dsAnchors::clear
    - addRRSIG
    - addNSECRecordToLW
    - vector::clear
    - BOOST_REQUIRE_EQUAL
    - std::unique_ptr::setAsyncCallback
    - isPartOf
    - DNSName
    - initSR
    - addDS
    - std::unique_ptr::getValidationState
    - ComboAddress
    - BOOST_CHECK
    - BOOST_CHECK_EQUAL
    - getCopy
    - ComboAddress::toString
    - vector::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_dnssec_secure_to_insecure_wrong_rrsig_fake_signer)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:390,1
    - Dst: setDNSSECValidation
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:392,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:394,1
    - Dst: getCopy
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:398,1
    - Dst: auto::dsAnchors::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:399,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:400,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:401,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:401,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:402,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:402,1
    - Dst: setState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:404,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:408,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:414,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:416,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:417,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:418,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:418,1
    - Dst: addNSECRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:419,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:419,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:420,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:420,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:423,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:425,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:426,1
    - Dst: genericDSAndDNSKEYHandler
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:429,1
    - Dst: genericDSAndDNSKEYHandler
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:432,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:435,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:436,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:437,1
    - Dst: addDS
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:438,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:438,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:439,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:439,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:440,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:443,1
    - Dst: isPartOf
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:444,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:444,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:445,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:446,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:446,1
    - Dst: addNSECRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:448,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:448,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:448,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:449,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:449,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:450,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:454,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:455,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:456,1
    - Dst: addNSECRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:457,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:457,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:457,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:458,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:458,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:461,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:462,1
    - Dst: addNSECRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:464,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:464,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:464,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:465,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:465,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:468,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:469,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:470,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:470,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:483,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:483,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:483,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:484,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:485,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:485,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:486,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:486,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:487,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:487,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:488,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:491,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:492,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:492,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:492,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:493,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:494,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:494,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:495,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:495,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:496,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:497,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:500,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:501,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:501,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:501,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:502,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:503,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:503,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:504,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:504,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:505,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:506,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:509,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:510,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:510,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:510,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:511,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:512,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:512,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:513,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:513,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:514,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:515,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:518,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:519,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:519,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:519,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:520,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:521,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:521,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:522,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:522,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:523,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:524,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 103
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 525
      start: 383
    functionDepth: 1
    functionLinenumber: 383
    functionLinenumberEnd: 525
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc10.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - genericDSAndDNSKEYHandler
    - primeHints
    - setDNSSECValidation
    - std::unique_ptr::beginResolve
    - isRootServer
    - setState
    - vector::at
    - QType
    - generateKeyMaterial
    - addRecordToLW
    - auto::dsAnchors::clear
    - addRRSIG
    - addNSECRecordToLW
    - vector::clear
    - BOOST_REQUIRE_EQUAL
    - std::unique_ptr::setAsyncCallback
    - isPartOf
    - DNSName
    - initSR
    - addDS
    - std::unique_ptr::getValidationState
    - ComboAddress
    - BOOST_CHECK
    - BOOST_CHECK_EQUAL
    - getCopy
    - ComboAddress::toString
    - vector::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_dnssec_secure_to_insecure_missing_soa)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:534,1
    - Dst: setDNSSECValidation
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:536,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:538,1
    - Dst: getCopy
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:542,1
    - Dst: auto::dsAnchors::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:543,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:544,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:545,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:545,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:546,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:546,1
    - Dst: setState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:548,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:552,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:558,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:560,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:561,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:562,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:562,1
    - Dst: addNSECRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:563,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:563,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:564,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:564,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:567,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:569,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:570,1
    - Dst: genericDSAndDNSKEYHandler
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:573,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:576,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:578,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:579,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:580,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:580,1
    - Dst: addNSECRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:581,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:581,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:582,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:582,1
    - Dst: genericDSAndDNSKEYHandler
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:585,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:588,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:589,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:590,1
    - Dst: addDS
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:591,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:591,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:592,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:592,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:593,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:596,1
    - Dst: isPartOf
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:597,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:597,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:598,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:599,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:599,1
    - Dst: addNSECRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:601,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:601,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:601,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:602,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:602,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:603,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:607,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:608,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:609,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:610,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:610,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:611,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:611,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:614,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:615,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:616,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:616,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:629,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:629,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:629,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:630,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:631,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:631,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:632,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:632,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:633,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:633,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:634,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:637,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:638,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:638,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:638,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:639,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:640,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:640,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:641,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:641,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:642,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:643,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:646,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:647,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:647,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:647,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:648,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:649,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:649,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:650,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:650,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:651,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:652,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 91
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 653
      start: 527
    functionDepth: 1
    functionLinenumber: 527
    functionLinenumberEnd: 653
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc10.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - genericDSAndDNSKEYHandler
    - primeHints
    - setDNSSECValidation
    - std::unique_ptr::beginResolve
    - isRootServer
    - setState
    - vector::at
    - QType
    - generateKeyMaterial
    - addRecordToLW
    - auto::dsAnchors::clear
    - addRRSIG
    - addNSECRecordToLW
    - vector::clear
    - BOOST_REQUIRE_EQUAL
    - std::unique_ptr::setAsyncCallback
    - isPartOf
    - DNSName
    - initSR
    - addDS
    - std::unique_ptr::getValidationState
    - ComboAddress
    - BOOST_CHECK
    - BOOST_CHECK_EQUAL
    - getCopy
    - ComboAddress::toString
    - vector::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_dnssec_secure_to_insecure_missing_dnskey)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:662,1
    - Dst: setDNSSECValidation
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:664,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:666,1
    - Dst: getCopy
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:670,1
    - Dst: auto::dsAnchors::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:671,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:672,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:673,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:673,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:674,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:674,1
    - Dst: setState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:676,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:680,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:686,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:688,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:689,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:690,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:690,1
    - Dst: addNSECRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:691,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:691,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:692,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:692,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:695,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:697,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:698,1
    - Dst: genericDSAndDNSKEYHandler
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:701,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:704,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:706,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:707,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:708,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:708,1
    - Dst: addNSECRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:709,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:709,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:709,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:710,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:710,1
    - Dst: genericDSAndDNSKEYHandler
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:713,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:716,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:717,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:718,1
    - Dst: addDS
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:719,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:719,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:720,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:720,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:721,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:724,1
    - Dst: isPartOf
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:725,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:725,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:726,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:727,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:727,1
    - Dst: addNSECRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:729,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:729,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:729,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:730,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:730,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:731,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:735,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:736,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:737,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:738,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:738,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:739,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:739,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:742,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:743,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:744,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:744,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:757,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:757,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:757,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:758,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:759,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:759,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:760,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:760,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:761,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:761,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:762,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:765,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:766,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:766,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:766,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:767,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:768,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:768,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:769,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:769,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:770,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:771,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:774,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:775,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:775,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:775,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:776,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:777,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:777,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:778,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:778,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:779,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:780,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 91
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 781
      start: 655
    functionDepth: 1
    functionLinenumber: 655
    functionLinenumberEnd: 781
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc10.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - genericDSAndDNSKEYHandler
    - primeHints
    - setDNSSECValidation
    - std::unique_ptr::beginResolve
    - isRootServer
    - setState
    - vector::at
    - QType
    - generateKeyMaterial
    - addRecordToLW
    - auto::dsAnchors::clear
    - addRRSIG
    - addNSECRecordToLW
    - vector::clear
    - BOOST_REQUIRE_EQUAL
    - std::unique_ptr::setAsyncCallback
    - isPartOf
    - DNSName
    - initSR
    - addDS
    - std::unique_ptr::getValidationState
    - ComboAddress
    - BOOST_CHECK
    - BOOST_CHECK_EQUAL
    - getCopy
    - ComboAddress::toString
    - vector::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_dnssec_secure_to_insecure_nxd_dnskey)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:790,1
    - Dst: setDNSSECValidation
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:792,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:794,1
    - Dst: getCopy
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:798,1
    - Dst: auto::dsAnchors::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:799,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:800,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:801,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:801,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:802,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:802,1
    - Dst: setState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:804,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:808,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:814,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:816,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:817,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:818,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:818,1
    - Dst: addNSECRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:819,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:819,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:820,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:820,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:823,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:825,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:826,1
    - Dst: genericDSAndDNSKEYHandler
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:829,1
    - Dst: genericDSAndDNSKEYHandler
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:832,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:835,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:836,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:837,1
    - Dst: addDS
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:838,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:838,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:839,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:839,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:840,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:843,1
    - Dst: isPartOf
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:844,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:844,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:845,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:846,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:846,1
    - Dst: addNSECRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:848,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:848,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:848,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:849,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:849,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:850,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:854,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:855,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:856,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:857,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:857,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:858,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:858,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:861,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:862,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:863,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:863,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:876,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:876,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:876,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:877,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:878,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:878,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:879,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:879,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:880,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:880,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:881,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:884,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:885,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:885,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:885,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:886,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:887,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:887,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:888,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:888,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:889,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:890,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:893,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:894,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:894,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:894,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:895,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:896,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:896,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:897,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:897,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:898,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:899,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 83
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 900
      start: 783
    functionDepth: 1
    functionLinenumber: 783
    functionLinenumberEnd: 900
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc10.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - genericDSAndDNSKEYHandler
    - primeHints
    - setDNSSECValidation
    - std::unique_ptr::beginResolve
    - isRootServer
    - setState
    - vector::at
    - QType
    - generateKeyMaterial
    - addRecordToLW
    - auto::dsAnchors::clear
    - addRRSIG
    - addNSECRecordToLW
    - vector::clear
    - BOOST_REQUIRE_EQUAL
    - std::unique_ptr::setAsyncCallback
    - isPartOf
    - DNSName
    - initSR
    - addDS
    - std::unique_ptr::getValidationState
    - ComboAddress
    - BOOST_CHECK
    - BOOST_CHECK_EQUAL
    - getCopy
    - ComboAddress::toString
    - vector::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_dnssec_secure_to_insecure_nxd_ds)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:905,1
    - Dst: setDNSSECValidation
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:907,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:909,1
    - Dst: getCopy
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:913,1
    - Dst: auto::dsAnchors::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:914,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:915,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:916,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:916,1
    - Dst: withName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:919,1
    - Dst: DNSCryptoKeyEngine::make
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:920,1
    - Dst: auto::create
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:921,1
    - Dst: auto::getBits
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:921,1
    - Dst: DNSSECPrivateKey::setKey
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:923,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:923,1
    - Dst: makeDSFromDNSKey
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:924,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:924,1
    - Dst: DNSSECPrivateKey::getDNSKEY
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:924,1
    - Dst: DNSCryptoKeyEngine::make
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:927,1
    - Dst: auto::create
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:928,1
    - Dst: auto::getBits
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:928,1
    - Dst: DNSSECPrivateKey::setKey
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:930,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:930,1
    - Dst: makeDSFromDNSKey
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:931,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:931,1
    - Dst: DNSSECPrivateKey::getDNSKEY
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:931,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:933,1
    - Dst: std::pair<DNSSECPrivateKey, DSRecordContent>
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:933,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:934,1
    - Dst: std::pair<DNSSECPrivateKey, DSRecordContent>
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:934,1
    - Dst: setState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:936,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:940,1
    - Dst: genericDSAndDNSKEYHandler
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:944,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:947,1
    - Dst: genericDSAndDNSKEYHandler
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:949,1
    - Dst: genericDSAndDNSKEYHandler
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:951,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:954,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:955,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:956,1
    - Dst: addDS
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:957,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:957,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:958,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:958,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:959,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:962,1
    - Dst: isPartOf
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:963,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:963,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:964,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:965,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:965,1
    - Dst: addDS
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:966,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:966,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:967,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:967,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:968,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:972,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:973,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:974,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:975,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:975,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:976,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:976,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:989,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:989,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:989,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:990,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:991,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:991,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:992,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:992,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:993,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:993,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:994,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:997,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:998,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:998,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:998,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:999,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1000,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1000,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1001,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1001,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1002,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1003,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 66
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1004
      start: 902
    functionDepth: 1
    functionLinenumber: 902
    functionLinenumberEnd: 1004
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc10.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - genericDSAndDNSKEYHandler
    - primeHints
    - withName
    - DNSSECPrivateKey::setKey
    - setDNSSECValidation
    - std::unique_ptr::beginResolve
    - isRootServer
    - std::pair<DNSSECPrivateKey, DSRecordContent>
    - setState
    - vector::at
    - QType
    - generateKeyMaterial
    - addRecordToLW
    - auto::dsAnchors::clear
    - addRRSIG
    - vector::clear
    - BOOST_REQUIRE_EQUAL
    - std::unique_ptr::setAsyncCallback
    - isPartOf
    - DNSCryptoKeyEngine::make
    - auto::create
    - DNSName
    - initSR
    - addDS
    - std::unique_ptr::getValidationState
    - makeDSFromDNSKey
    - ComboAddress
    - std::move
    - BOOST_CHECK
    - auto::getBits
    - BOOST_CHECK_EQUAL
    - getCopy
    - DNSSECPrivateKey::getDNSKEY
    - vector::size
    - ComboAddress::toString
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_dnssec_bogus_dnskey_loop)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1011,1
    - Dst: setDNSSECValidation
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1013,1
    - Dst: std::unique_ptr::setQNameMinimization
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1014,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1016,1
    - Dst: getCopy
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1020,1
    - Dst: auto::dsAnchors::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1021,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1022,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1023,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1023,1
    - Dst: withName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1026,1
    - Dst: DNSCryptoKeyEngine::make
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1027,1
    - Dst: auto::create
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1028,1
    - Dst: auto::getBits
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1028,1
    - Dst: DNSSECPrivateKey::setKey
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1030,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1030,1
    - Dst: makeDSFromDNSKey
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1031,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1031,1
    - Dst: DNSSECPrivateKey::getDNSKEY
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1031,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1033,1
    - Dst: std::pair<DNSSECPrivateKey, DSRecordContent>
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1033,1
    - Dst: setState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1034,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1038,1
    - Dst: genericDSAndDNSKEYHandler
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1042,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1045,1
    - Dst: genericDSAndDNSKEYHandler
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1046,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1049,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1050,1
    - Dst: auto::d_signature::data
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1051,1
    - Dst: genericDSAndDNSKEYHandler
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1056,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1059,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1060,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1061,1
    - Dst: addDS
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1062,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1062,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1063,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1063,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1064,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1067,1
    - Dst: isPartOf
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1068,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1068,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1069,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1070,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1070,1
    - Dst: addDS
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1071,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1071,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1072,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1072,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1073,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1077,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1078,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1079,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1080,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1080,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1081,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1081,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1091,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1091,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1091,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1092,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1093,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1093,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1094,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1094,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1095,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1095,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1096,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1099,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1100,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1100,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1100,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1101,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1102,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1102,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1103,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1103,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1104,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1105,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 68
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1106
      start: 1006
    functionDepth: 1
    functionLinenumber: 1006
    functionLinenumberEnd: 1106
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc10.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - genericDSAndDNSKEYHandler
    - primeHints
    - withName
    - DNSSECPrivateKey::setKey
    - setDNSSECValidation
    - std::unique_ptr::beginResolve
    - isRootServer
    - std::pair<DNSSECPrivateKey, DSRecordContent>
    - setState
    - vector::at
    - QType
    - generateKeyMaterial
    - addRecordToLW
    - auto::dsAnchors::clear
    - addRRSIG
    - vector::clear
    - auto::d_signature::data
    - BOOST_REQUIRE_EQUAL
    - std::unique_ptr::setAsyncCallback
    - isPartOf
    - DNSCryptoKeyEngine::make
    - auto::create
    - DNSName
    - initSR
    - addDS
    - std::unique_ptr::getValidationState
    - makeDSFromDNSKey
    - ComboAddress
    - std::move
    - getRR
    - BOOST_CHECK
    - std::unique_ptr::setQNameMinimization
    - auto::getBits
    - BOOST_CHECK_EQUAL
    - getCopy
    - DNSSECPrivateKey::getDNSKEY
    - vector::size
    - ComboAddress::toString
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_dnssec_bogus_ds_loop)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1111,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1114,1
    - Dst: std::make_shared<PacketID>
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1117,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 6
    argNames:
    - rem
    - tcpsock
    - type
    - domain
    - fd
    - id
    argTypes:
    - std::string
    - int
    - uint16_t
    - std::string
    - int
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1118
      start: 1108
    functionDepth: 0
    functionLinenumber: 1108
    functionLinenumberEnd: 1118
    functionName: createPID
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc10.cc
    functionUses: 0
    functionsReached:
    - std::make_shared<PacketID>
    - DNSName
    - ComboAddress
    linkageType: ''
    returnType: auto
    signature: auto createPID(std::string rem, int tcpsock, uint16_t type, std::string
      domain, int fd, uint16_t id)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: createPID
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1123,1
    - Dst: createPID
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1124,1
    - Dst: PacketIDCompare
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1126,1
    - Dst: PacketIDBirthdayCompare
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1127,1
    - Dst: cmp
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1129,1
    - Dst: bcmp
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1130,1
    - Dst: cmp
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1131,1
    - Dst: bcmp
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1132,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1134,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1135,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1136,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1137,1
    - Dst: createPID
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1140,1
    - Dst: createPID
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1141,1
    - Dst: cmp
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1143,1
    - Dst: bcmp
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1144,1
    - Dst: cmp
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1145,1
    - Dst: bcmp
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1146,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1148,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1149,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1150,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1151,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1152
      start: 1120
    functionDepth: 1
    functionLinenumber: 1120
    functionLinenumberEnd: 1152
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc10.cc
    functionUses: 0
    functionsReached:
    - BOOST_CHECK
    - cmp
    - PacketIDCompare
    - PacketIDBirthdayCompare
    - createPID
    - bcmp
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_PacketIDCompare)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1157,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1160,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1170,1
    - Dst: std::set::find
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1172,1
    - Dst: std::set::end
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1172,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1177,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1178,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1179,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1180,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1181,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1184,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1184,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1185,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1186,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1187,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1188,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1189,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1190,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1191,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1194,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1194,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1194,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1194,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1195,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1196,1
    - Dst: time
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1203,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1206,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1206,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1207,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1208,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1208,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1209,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1210,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1211,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1212,1
    - Dst: std::set::insert
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1214,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1214,1
    - Dst: std::set::insert
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1215,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1215,1
    - Dst: std::set::insert
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1216,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1216,1
    - Dst: std::set::insert
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1217,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1217,1
    - Dst: std::unique_ptr::setNow
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1219,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1221,1
    - Dst: getTaskSize
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1221,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1224,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1225,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1225,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1226,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1227,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1227,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1228,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1229,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1230,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1231,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1233,1
    - Dst: getTaskSize
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1233,1
    - Dst: taskQueuePop
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1234,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1235,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1236,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1239,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1240,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1240,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1241,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1242,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1242,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1243,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1244,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1245,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1246,1
    - Dst: std::unique_ptr::setNow
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1249,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1250,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1251,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1251,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1252,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1253,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1253,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1254,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1255,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1256,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1257,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1259,1
    - Dst: getTaskSize
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1259,1
    - Dst: taskQueuePop
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1260,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1261,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1262,1
    - Dst: std::unique_ptr::setNow
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1265,1
    - Dst: std::set::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1266,1
    - Dst: std::unique_ptr::setRefreshAlmostExpired
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1267,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1268,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1269,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1269,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1270,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1271,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1271,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1272,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1273,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1274,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1275,1
    - Dst: std::unique_ptr::setRefreshAlmostExpired
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1278,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1279,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1280,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1280,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1281,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1282,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1282,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1283,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1284,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1285,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1286,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 98
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1287
      start: 1154
    functionDepth: 1
    functionLinenumber: 1154
    functionLinenumberEnd: 1287
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc10.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - primeHints
    - std::unique_ptr::beginResolve
    - isRootServer
    - std::unique_ptr::setNow
    - time
    - QType
    - addRecordToLW
    - std::set::insert
    - std::unique_ptr::setRefreshAlmostExpired
    - vector::size
    - vector::clear
    - BOOST_REQUIRE_EQUAL
    - std::set::end
    - std::unique_ptr::setAsyncCallback
    - initSR
    - std::set::find
    - ComboAddress
    - getTaskSize
    - BOOST_CHECK_EQUAL
    - std::set::clear
    - taskQueuePop
    - BOOST_CHECK
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_servestale)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1292,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1296,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1306,1
    - Dst: std::set::find
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1308,1
    - Dst: std::set::end
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1308,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1313,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1314,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1315,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1316,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1317,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1320,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1320,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1321,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1322,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1323,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1324,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1325,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1326,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1327,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1330,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1330,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1330,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1330,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1331,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1332,1
    - Dst: time
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1341,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1344,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1344,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1345,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1346,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1346,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1347,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1348,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1349,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1350,1
    - Dst: std::set::insert
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1352,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1352,1
    - Dst: std::set::insert
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1353,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1353,1
    - Dst: std::set::insert
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1354,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1354,1
    - Dst: std::set::insert
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1355,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1355,1
    - Dst: std::unique_ptr::setNow
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1359,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1362,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1363,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1363,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1364,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1365,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1365,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1366,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1367,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1368,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1369,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1372,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1373,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1373,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1374,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1375,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1375,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1376,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1377,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1378,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1379,1
    - Dst: std::unique_ptr::setNow
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1382,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1383,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1384,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1384,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1385,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1386,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1386,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1387,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1388,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1389,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1390,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1392,1
    - Dst: getTaskSize
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1392,1
    - Dst: taskQueuePop
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1393,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1394,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1395,1
    - Dst: std::unique_ptr::setNow
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1398,1
    - Dst: std::set::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1399,1
    - Dst: std::unique_ptr::setRefreshAlmostExpired
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1400,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1401,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1402,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1402,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1403,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1404,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1404,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1405,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1406,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1407,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1408,1
    - Dst: std::unique_ptr::setRefreshAlmostExpired
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1411,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1412,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1413,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1413,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1414,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1415,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1415,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1416,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1417,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1418,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1419,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 95
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1420
      start: 1289
    functionDepth: 1
    functionLinenumber: 1289
    functionLinenumberEnd: 1420
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc10.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - primeHints
    - std::unique_ptr::beginResolve
    - isRootServer
    - std::unique_ptr::setNow
    - time
    - QType
    - addRecordToLW
    - std::set::insert
    - std::unique_ptr::setRefreshAlmostExpired
    - vector::size
    - vector::clear
    - BOOST_REQUIRE_EQUAL
    - std::set::end
    - std::unique_ptr::setAsyncCallback
    - initSR
    - std::set::find
    - ComboAddress
    - getTaskSize
    - BOOST_CHECK_EQUAL
    - std::set::clear
    - taskQueuePop
    - BOOST_CHECK
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_servestale_neg)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1425,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1429,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1441,1
    - Dst: std::set::find
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1443,1
    - Dst: std::set::end
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1443,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1448,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1449,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1450,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1451,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1452,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1455,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1455,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1456,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1457,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1458,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1459,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1460,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1461,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1462,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1465,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1465,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1465,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1465,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1467,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1468,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1473,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1474,1
    - Dst: time
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1484,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1487,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1487,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1488,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1489,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1489,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1490,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1491,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1492,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1493,1
    - Dst: std::set::insert
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1495,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1495,1
    - Dst: std::set::insert
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1496,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1496,1
    - Dst: std::set::insert
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1497,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1497,1
    - Dst: std::set::insert
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1498,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1498,1
    - Dst: std::unique_ptr::setNow
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1500,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1503,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1504,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1504,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1505,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1506,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1506,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1507,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1508,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1509,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1510,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1513,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1514,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1514,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1515,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1516,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1516,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1517,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1518,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1519,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1520,1
    - Dst: std::unique_ptr::setNow
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1523,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1524,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1525,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1525,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1526,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1527,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1527,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1528,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1529,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1530,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1531,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1533,1
    - Dst: getTaskSize
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1533,1
    - Dst: taskQueuePop
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1534,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1535,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1536,1
    - Dst: std::unique_ptr::setNow
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1540,1
    - Dst: std::set::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1541,1
    - Dst: std::unique_ptr::setRefreshAlmostExpired
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1542,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1543,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1544,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1544,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1545,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1546,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1546,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1547,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1548,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1549,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1550,1
    - Dst: std::unique_ptr::setRefreshAlmostExpired
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1553,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1554,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1555,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1555,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1556,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1557,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1557,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1558,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1559,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1560,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1561,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 103
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1562
      start: 1422
    functionDepth: 1
    functionLinenumber: 1422
    functionLinenumberEnd: 1562
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc10.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - primeHints
    - std::unique_ptr::beginResolve
    - isRootServer
    - std::unique_ptr::setNow
    - time
    - QType
    - addRecordToLW
    - std::set::insert
    - std::unique_ptr::setRefreshAlmostExpired
    - vector::size
    - vector::clear
    - BOOST_REQUIRE_EQUAL
    - std::set::end
    - std::unique_ptr::setAsyncCallback
    - initSR
    - std::set::find
    - ComboAddress
    - getTaskSize
    - BOOST_CHECK_EQUAL
    - std::set::clear
    - taskQueuePop
    - BOOST_CHECK
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_servestale_neg_to_available)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1567,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1571,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1584,1
    - Dst: std::set::find
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1586,1
    - Dst: std::set::end
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1586,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1591,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1592,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1593,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1594,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1595,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1598,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1598,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1599,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1600,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1601,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1602,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1603,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1604,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1605,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1608,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1608,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1608,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1608,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1610,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1611,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1612,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1612,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1616,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1617,1
    - Dst: time
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1626,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1629,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1629,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1630,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1630,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1631,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1632,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1633,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1634,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1634,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1635,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1636,1
    - Dst: std::set::insert
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1638,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1638,1
    - Dst: std::set::insert
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1639,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1639,1
    - Dst: std::set::insert
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1640,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1640,1
    - Dst: std::set::insert
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1641,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1641,1
    - Dst: std::unique_ptr::setNow
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1643,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1646,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1647,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1647,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1648,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1649,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1649,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1650,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1651,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1652,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1653,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1653,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1654,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1655,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1658,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1659,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1659,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1660,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1661,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1661,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1662,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1663,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1664,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1665,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1665,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1666,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1667,1
    - Dst: std::unique_ptr::setNow
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1670,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1671,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1672,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1672,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1673,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1674,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1674,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1675,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1676,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1677,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1678,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1678,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1679,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1680,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1682,1
    - Dst: getTaskSize
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1682,1
    - Dst: taskQueuePop
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1683,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1684,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1685,1
    - Dst: taskQueuePop
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1686,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1687,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1687,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1688,1
    - Dst: std::unique_ptr::setNow
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1692,1
    - Dst: std::set::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1693,1
    - Dst: std::unique_ptr::setRefreshAlmostExpired
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1694,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1696,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1697,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1697,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1698,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1699,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1699,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1700,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1701,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1702,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1703,1
    - Dst: std::unique_ptr::setRefreshAlmostExpired
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1706,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1707,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1708,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1708,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1709,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1710,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1710,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1711,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1712,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1713,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1714,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 113
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1715
      start: 1564
    functionDepth: 1
    functionLinenumber: 1564
    functionLinenumberEnd: 1715
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc10.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - primeHints
    - std::unique_ptr::beginResolve
    - isRootServer
    - std::unique_ptr::setNow
    - time
    - QType
    - addRecordToLW
    - std::set::insert
    - std::unique_ptr::setRefreshAlmostExpired
    - vector::size
    - vector::clear
    - BOOST_REQUIRE_EQUAL
    - std::set::end
    - std::unique_ptr::setAsyncCallback
    - DNSName
    - initSR
    - std::set::find
    - ComboAddress
    - getTaskSize
    - BOOST_CHECK_EQUAL
    - std::set::clear
    - taskQueuePop
    - BOOST_CHECK
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_servestale_cname_to_nxdomain)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1720,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1724,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1737,1
    - Dst: std::set::find
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1739,1
    - Dst: std::set::end
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1739,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1744,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1745,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1746,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1747,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1748,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1751,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1751,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1752,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1753,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1754,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1755,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1756,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1757,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1758,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1761,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1761,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1761,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1761,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1763,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1764,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1765,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1765,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1769,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1770,1
    - Dst: time
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1777,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1780,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1780,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1781,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1782,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1782,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1783,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1784,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1785,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1786,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1786,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1787,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1788,1
    - Dst: std::set::insert
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1790,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1790,1
    - Dst: std::set::insert
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1791,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1791,1
    - Dst: std::set::insert
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1792,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1792,1
    - Dst: std::set::insert
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1793,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1793,1
    - Dst: std::unique_ptr::setNow
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1795,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1798,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1799,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1799,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1800,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1801,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1801,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1802,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1803,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1804,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1805,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1805,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1806,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1807,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1810,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1811,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1811,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1812,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1813,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1813,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1814,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1815,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1816,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1817,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1817,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1818,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1819,1
    - Dst: std::unique_ptr::setNow
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1822,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1823,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1824,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1824,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1825,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1826,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1826,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1827,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1828,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1829,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1830,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1830,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1831,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1832,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1834,1
    - Dst: getTaskSize
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1834,1
    - Dst: taskQueuePop
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1835,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1836,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1837,1
    - Dst: taskQueuePop
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1838,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1839,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1839,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1840,1
    - Dst: std::unique_ptr::setNow
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1844,1
    - Dst: std::set::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1845,1
    - Dst: std::unique_ptr::setRefreshAlmostExpired
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1846,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1848,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1849,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1849,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1850,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1851,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1851,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1852,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1853,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1854,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1855,1
    - Dst: std::unique_ptr::setRefreshAlmostExpired
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1858,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1859,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1860,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1860,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1861,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1862,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1862,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1863,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1864,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1865,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1866,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 113
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1867
      start: 1717
    functionDepth: 1
    functionLinenumber: 1717
    functionLinenumberEnd: 1867
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc10.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - primeHints
    - std::unique_ptr::beginResolve
    - isRootServer
    - std::unique_ptr::setNow
    - time
    - QType
    - addRecordToLW
    - std::set::insert
    - std::unique_ptr::setRefreshAlmostExpired
    - vector::size
    - vector::clear
    - BOOST_REQUIRE_EQUAL
    - std::set::end
    - std::unique_ptr::setAsyncCallback
    - DNSName
    - initSR
    - std::set::find
    - ComboAddress
    - getTaskSize
    - BOOST_CHECK_EQUAL
    - std::set::clear
    - taskQueuePop
    - BOOST_CHECK
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_servestale_cname_to_nodata)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1872,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1875,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1885,1
    - Dst: std::set::find
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1888,1
    - Dst: std::set::end
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1888,1
    - Dst: ImmediateServFailException
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1890,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1893,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1894,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1895,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1896,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1897,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1900,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1900,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1901,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1902,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1903,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1904,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1905,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1906,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1907,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1910,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1910,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1910,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1910,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1911,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1912,1
    - Dst: time
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1921,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1924,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1924,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1926,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1927,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1927,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1928,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1929,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1930,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1931,1
    - Dst: std::set::insert
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1933,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1933,1
    - Dst: std::set::insert
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1934,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1934,1
    - Dst: std::set::insert
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1935,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1935,1
    - Dst: std::set::insert
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1936,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1936,1
    - Dst: std::unique_ptr::setNow
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1938,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1940,1
    - Dst: getTaskSize
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1940,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1943,1
    - Dst: BOOST_REQUIRE_THROW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1944,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1944,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1944,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1945,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 50
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1946
      start: 1869
    functionDepth: 1
    functionLinenumber: 1869
    functionLinenumberEnd: 1946
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc10.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - BOOST_REQUIRE_THROW
    - primeHints
    - std::unique_ptr::beginResolve
    - isRootServer
    - std::unique_ptr::setNow
    - time
    - QType
    - addRecordToLW
    - std::set::insert
    - vector::size
    - vector::clear
    - BOOST_REQUIRE_EQUAL
    - std::set::end
    - std::unique_ptr::setAsyncCallback
    - initSR
    - std::set::find
    - ComboAddress
    - getTaskSize
    - BOOST_CHECK_EQUAL
    - BOOST_CHECK
    - ImmediateServFailException
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_servestale_immediateservfail)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1953,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1954,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1959,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1965,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1966,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1967,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1968,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1969,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1972,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1972,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1974,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1975,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1976,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1977,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1978,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1979,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1980,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1984,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1985,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1986,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1987,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1988,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1989,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1990,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1995,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1995,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1995,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1995,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1996,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:1998,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:2001,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:2012,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:2012,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:2013,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:2014,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:2014,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:2015,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:2016,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:2018,1
    - Dst: std::unique_ptr::getNow
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:2018,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:2018,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:2018,1
    - Dst: std::unique_ptr::setNow
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:2021,1
    - Dst: std::unique_ptr::getNow
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:2021,1
    - Dst: std::unique_ptr::getNow
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:2021,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:2024,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:2025,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:2025,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:2026,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:2027,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:2027,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:2028,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:2029,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:2031,1
    - Dst: std::unique_ptr::getNow
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:2031,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:2031,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:2031,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:2033,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 62
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2034
      start: 1948
    functionDepth: 1
    functionLinenumber: 1948
    functionLinenumberEnd: 2034
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc10.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - std::unique_ptr::setAsyncCallback
    - BOOST_CHECK
    - std::unique_ptr::setNow
    - primeHints
    - QType
    - addRecordToLW
    - BOOST_CHECK_EQUAL
    - initSR
    - get
    - std::unique_ptr::getNow
    - DNSName
    - std::unique_ptr::beginResolve
    - isRootServer
    - vector::size
    - vector::clear
    - BOOST_REQUIRE_EQUAL
    - ComboAddress
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_glued_referral_additional_update)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:2041,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:2045,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:2050,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:2056,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:2057,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:2058,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:2059,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:2060,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:2063,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:2063,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:2065,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:2066,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:2067,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:2068,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:2069,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:2070,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:2071,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:2075,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:2076,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:2077,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:2078,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:2079,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:2080,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:2081,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:2086,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:2086,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:2086,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:2086,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:2087,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:2089,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:2092,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:2103,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:2103,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:2104,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:2105,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:2105,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:2106,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:2107,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:2109,1
    - Dst: std::unique_ptr::getNow
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:2109,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:2109,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:2109,1
    - Dst: std::unique_ptr::setNow
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:2112,1
    - Dst: std::unique_ptr::getNow
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:2112,1
    - Dst: std::unique_ptr::getNow
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:2112,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:2115,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:2116,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:2116,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:2117,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:2118,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:2118,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:2119,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:2120,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:2122,1
    - Dst: std::unique_ptr::getNow
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:2122,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:2122,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:2122,1
    - Dst: BOOST_CHECK_NE
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:2124,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 63
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2125
      start: 2036
    functionDepth: 1
    functionLinenumber: 2036
    functionLinenumberEnd: 2125
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc10.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - primeHints
    - std::unique_ptr::beginResolve
    - isRootServer
    - std::unique_ptr::setNow
    - QType
    - addRecordToLW
    - vector::size
    - vector::clear
    - BOOST_REQUIRE_EQUAL
    - BOOST_CHECK_NE
    - std::unique_ptr::setAsyncCallback
    - std::unique_ptr::getNow
    - initSR
    - get
    - DNSName
    - ComboAddress
    - BOOST_CHECK_EQUAL
    - BOOST_CHECK
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_glued_referral_additional_no_update_because_locked)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:2132,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:2136,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:2140,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:2146,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:2147,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:2148,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:2149,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:2150,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:2153,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:2153,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:2154,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:2155,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:2156,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:2157,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:2158,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:2159,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:2160,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:2163,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:2163,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:2163,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:2163,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:2165,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:2166,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:2170,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:2171,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:2172,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:2181,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:2181,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:2182,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:2183,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:2183,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:2184,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:2185,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:2187,1
    - Dst: std::unique_ptr::getNow
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:2187,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:2187,1
    - Dst: BOOST_CHECK_GT
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:2188,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:2191,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:2192,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:2192,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:2193,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:2194,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:2194,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:2195,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:2197,1
    - Dst: std::unique_ptr::getNow
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:2197,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:2197,1
    - Dst: BOOST_CHECK_GT
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:2198,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 51
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2199
      start: 2127
    functionDepth: 1
    functionLinenumber: 2127
    functionLinenumberEnd: 2199
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc10.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - std::unique_ptr::setAsyncCallback
    - BOOST_CHECK_GT
    - BOOST_CHECK
    - primeHints
    - QType
    - addRecordToLW
    - BOOST_CHECK_EQUAL
    - initSR
    - get
    - std::unique_ptr::getNow
    - std::unique_ptr::beginResolve
    - isRootServer
    - vector::size
    - vector::clear
    - BOOST_REQUIRE_EQUAL
    - ComboAddress
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_locked_nonauth_update_to_auth)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vector::emplace_back
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:2204,1
    - Dst: vector::emplace_back
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:2205,1
    - Dst: vector::emplace_back
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:2206,1
    - Dst: vector::emplace_back
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:2207,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:2209,1
    - Dst: SyncRes::answerIsNOData
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:2209,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2210
      start: 2201
    functionDepth: 1
    functionLinenumber: 2201
    functionLinenumberEnd: 2210
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc10.cc
    functionUses: 0
    functionsReached:
    - BOOST_CHECK
    - SyncRes::answerIsNOData
    - vector::emplace_back
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_nodata_ok)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vector::emplace_back
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:2215,1
    - Dst: vector::emplace_back
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:2216,1
    - Dst: vector::emplace_back
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:2217,1
    - Dst: vector::emplace_back
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:2218,1
    - Dst: vector::emplace_back
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:2219,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:2221,1
    - Dst: SyncRes::answerIsNOData
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:2221,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2222
      start: 2212
    functionDepth: 1
    functionLinenumber: 2212
    functionLinenumberEnd: 2222
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc10.cc
    functionUses: 0
    functionsReached:
    - BOOST_CHECK
    - SyncRes::answerIsNOData
    - vector::emplace_back
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_nodata_not)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vector::emplace_back
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:2227,1
    - Dst: vector::emplace_back
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:2228,1
    - Dst: vector::emplace_back
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:2229,1
    - Dst: vector::emplace_back
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:2230,1
    - Dst: vector::emplace_back
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:2231,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:2233,1
    - Dst: SyncRes::answerIsNOData
      Src: /src/pdns/pdns/recursordist/test-syncres_cc10.cc:2233,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2234
      start: 2224
    functionDepth: 1
    functionLinenumber: 2224
    functionLinenumberEnd: 2234
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc10.cc
    functionUses: 0
    functionsReached:
    - BOOST_CHECK
    - SyncRes::answerIsNOData
    - vector::emplace_back
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_nodata_out_of_order)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - M
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 25
      start: 24
    functionDepth: 0
    functionLinenumber: 24
    functionLinenumberEnd: 25
    functionName: NameEntry
    functionSourceFile: /src/pdns/pdns/recursordist/rec-eventtrace.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: NameEntry(M)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: std::holds_alternative<std::nullopt_t>
      Src: /src/pdns/pdns/recursordist/rec-eventtrace.cc:52,1
    - Dst: std::holds_alternative<bool>
      Src: /src/pdns/pdns/recursordist/rec-eventtrace.cc:56,1
    - Dst: attributes::emplace_back
      Src: /src/pdns/pdns/recursordist/rec-eventtrace.cc:57,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/rec-eventtrace.cc:57,1
    - Dst: std::get<bool>
      Src: /src/pdns/pdns/recursordist/rec-eventtrace.cc:57,1
    - Dst: std::holds_alternative<int64_t>
      Src: /src/pdns/pdns/recursordist/rec-eventtrace.cc:59,1
    - Dst: attributes::emplace_back
      Src: /src/pdns/pdns/recursordist/rec-eventtrace.cc:60,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/rec-eventtrace.cc:60,1
    - Dst: std::get<int64_t>
      Src: /src/pdns/pdns/recursordist/rec-eventtrace.cc:60,1
    - Dst: std::holds_alternative<std::string>
      Src: /src/pdns/pdns/recursordist/rec-eventtrace.cc:62,1
    - Dst: attributes::emplace_back
      Src: /src/pdns/pdns/recursordist/rec-eventtrace.cc:63,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/rec-eventtrace.cc:63,1
    - Dst: std::get<std::string>
      Src: /src/pdns/pdns/recursordist/rec-eventtrace.cc:63,1
    - Dst: attributes::emplace_back
      Src: /src/pdns/pdns/recursordist/rec-eventtrace.cc:66,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/rec-eventtrace.cc:66,1
    - Dst: RecEventTrace::toString
      Src: /src/pdns/pdns/recursordist/rec-eventtrace.cc:66,1
    - Dst: std::holds_alternative<bool>
      Src: /src/pdns/pdns/recursordist/rec-eventtrace.cc:69,1
    - Dst: attributes::emplace_back
      Src: /src/pdns/pdns/recursordist/rec-eventtrace.cc:70,1
    - Dst: std::get<bool>
      Src: /src/pdns/pdns/recursordist/rec-eventtrace.cc:70,1
    - Dst: std::holds_alternative<int64_t>
      Src: /src/pdns/pdns/recursordist/rec-eventtrace.cc:72,1
    - Dst: attributes::emplace_back
      Src: /src/pdns/pdns/recursordist/rec-eventtrace.cc:73,1
    - Dst: std::get<int64_t>
      Src: /src/pdns/pdns/recursordist/rec-eventtrace.cc:73,1
    - Dst: std::holds_alternative<std::string>
      Src: /src/pdns/pdns/recursordist/rec-eventtrace.cc:75,1
    - Dst: attributes::emplace_back
      Src: /src/pdns/pdns/recursordist/rec-eventtrace.cc:76,1
    - Dst: std::get<std::string>
      Src: /src/pdns/pdns/recursordist/rec-eventtrace.cc:76,1
    - Dst: attributes::emplace_back
      Src: /src/pdns/pdns/recursordist/rec-eventtrace.cc:79,1
    - Dst: RecEventTrace::toString
      Src: /src/pdns/pdns/recursordist/rec-eventtrace.cc:79,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 27
    argCount: 3
    argNames:
    - ' event'
    - ' work'
    - start
    argTypes:
    - RecEventTrace::Entry
    - Span
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 50
    functionDepth: 0
    functionLinenumber: 50
    functionLinenumberEnd: 82
    functionName: addValue
    functionSourceFile: /src/pdns/pdns/recursordist/rec-eventtrace.cc
    functionUses: 0
    functionsReached:
    - std::move
    - std::holds_alternative<std::string>
    - std::get<std::string>
    - RecEventTrace::toString
    - attributes::emplace_back
    - std::holds_alternative<std::nullopt_t>
    - std::holds_alternative<bool>
    - std::holds_alternative<int64_t>
    - std::get<int64_t>
    - std::get<bool>
    linkageType: ''
    returnType: void
    signature: void addValue(const RecEventTrace::Entry& event, Span& work, bool start)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: clock_gettime
      Src: /src/pdns/pdns/recursordist/rec-eventtrace.cc:89,1
    - Dst: clock_gettime
      Src: /src/pdns/pdns/recursordist/rec-eventtrace.cc:91,1
    - Dst: std::vector::reserve
      Src: /src/pdns/pdns/recursordist/rec-eventtrace.cc:96,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/rec-eventtrace.cc:96,1
    - Dst: std::vector::emplace_back
      Src: /src/pdns/pdns/recursordist/rec-eventtrace.cc:99,1
    - Dst: timestamp
      Src: /src/pdns/pdns/recursordist/rec-eventtrace.cc:107,1
    - Dst: RecEventTrace::toString
      Src: /src/pdns/pdns/recursordist/rec-eventtrace.cc:119,1
    - Dst: static_cast<uint64_t>
      Src: /src/pdns/pdns/recursordist/rec-eventtrace.cc:120,1
    - Dst: static_cast<uint64_t>
      Src: /src/pdns/pdns/recursordist/rec-eventtrace.cc:121,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/recursordist/rec-eventtrace.cc:122,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/recursordist/rec-eventtrace.cc:128,1
    - Dst: Span::span_id::makeRandom
      Src: /src/pdns/pdns/recursordist/rec-eventtrace.cc:131,1
    - Dst: addValue
      Src: /src/pdns/pdns/recursordist/rec-eventtrace.cc:132,1
    - Dst: std::vector::emplace_back
      Src: /src/pdns/pdns/recursordist/rec-eventtrace.cc:133,1
    - Dst: std::vector::emplace_back
      Src: /src/pdns/pdns/recursordist/rec-eventtrace.cc:134,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/recursordist/rec-eventtrace.cc:135,1
    - Dst: std::map::find
      Src: /src/pdns/pdns/recursordist/rec-eventtrace.cc:139,1
    - Dst: std::map::end
      Src: /src/pdns/pdns/recursordist/rec-eventtrace.cc:139,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/recursordist/rec-eventtrace.cc:140,1
    - Dst: addValue
      Src: /src/pdns/pdns/recursordist/rec-eventtrace.cc:141,1
    - Dst: static_cast<uint64_t>
      Src: /src/pdns/pdns/recursordist/rec-eventtrace.cc:142,1
    - Dst: std::vector::emplace_back
      Src: /src/pdns/pdns/recursordist/rec-eventtrace.cc:143,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 32
    argCount: 1
    argNames:
    - ' span'
    argTypes:
    - InitialSpanInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 149
      start: 86
    functionDepth: 1
    functionLinenumber: 86
    functionLinenumberEnd: 149
    functionName: RecEventTrace::convertToOT
    functionSourceFile: /src/pdns/pdns/recursordist/rec-eventtrace.cc
    functionUses: 0
    functionsReached:
    - timestamp
    - std::vector::size
    - RecEventTrace::toString
    - addValue
    - static_cast<uint64_t>
    - std::vector::emplace_back
    - size
    - std::vector::reserve
    - std::vector::at
    - clock_gettime
    - std::map::find
    - std::map::end
    - Span::span_id::makeRandom
    linkageType: ''
    returnType: std::vector<pdns::trace::Span>
    signature: std::vector<pdns::trace::Span> RecEventTrace::convertToOT(const InitialSpanInfo&
      span) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: shared_from_this
      Src: /src/pdns/pdns/recursordist/logging.cc:32,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 33
      start: 30
    functionDepth: 0
    functionLinenumber: 30
    functionLinenumberEnd: 33
    functionName: Logging::Logger::getptr
    functionSourceFile: /src/pdns/pdns/recursordist/logging.cc
    functionUses: 12
    functionsReached:
    - shared_from_this
    linkageType: ''
    returnType: std::shared_ptr<const Logger>
    signature: std::shared_ptr<const Logger> Logger::getptr() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Logging::Logger::logMessage
      Src: /src/pdns/pdns/recursordist/logging.cc:37,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - prio
    - ' msg'
    argTypes:
    - Logr::Priority
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 35
    functionDepth: 0
    functionLinenumber: 35
    functionLinenumberEnd: 38
    functionName: Logging::Logger::info
    functionSourceFile: /src/pdns/pdns/recursordist/logging.cc
    functionUses: 2
    functionsReached:
    - Logging::Logger::logMessage
    linkageType: ''
    returnType: void
    signature: void Logger::info(Logr::Priority prio, const std::string& msg) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Utility::gettimeofday
      Src: /src/pdns/pdns/recursordist/logging.cc:45,1
    - Dst: Entry::values::insert
      Src: /src/pdns/pdns/recursordist/logging.cc:50,1
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/logging.cc:50,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/logging.cc:50,1
    - Dst: Entry::values::insert
      Src: /src/pdns/pdns/recursordist/logging.cc:52,1
    - Dst: auto::_values::begin
      Src: /src/pdns/pdns/recursordist/logging.cc:52,1
    - Dst: auto::_values::end
      Src: /src/pdns/pdns/recursordist/logging.cc:52,1
    - Dst: _callback
      Src: /src/pdns/pdns/recursordist/logging.cc:55,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 3
    argNames:
    - ' msg'
    - prio
    - ' err'
    argTypes:
    - std::string
    - Logr::Priority
    - std::optional<std::string>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 40
    functionDepth: 1
    functionLinenumber: 40
    functionLinenumberEnd: 56
    functionName: Logging::Logger::logMessage
    functionSourceFile: /src/pdns/pdns/recursordist/logging.cc
    functionUses: 13
    functionsReached:
    - _callback
    - Entry::values::insert
    - end
    - Utility::gettimeofday
    - begin
    - auto::_values::begin
    - auto::_values::end
    linkageType: ''
    returnType: void
    signature: void Logger::logMessage(const std::string& msg, Logr::Priority prio,
      const std::optional<std::string>& err) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Logging::Logger::logMessage
      Src: /src/pdns/pdns/recursordist/logging.cc:60,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/logging.cc:60,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/logging.cc:60,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - prio
    - err
    - ' msg'
    argTypes:
    - Logr::Priority
    - int
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 58
    functionDepth: 0
    functionLinenumber: 58
    functionLinenumberEnd: 61
    functionName: Logging::Logger::error
    functionSourceFile: /src/pdns/pdns/recursordist/logging.cc
    functionUses: 47
    functionsReached:
    - Logging::Logger::logMessage
    - stringerror
    - std::string
    linkageType: ''
    returnType: void
    signature: void Logger::error(Logr::Priority prio, int err, const std::string&
      msg) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Logging::Logger::logMessage
      Src: /src/pdns/pdns/recursordist/logging.cc:65,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - prio
    - ' err'
    - ' msg'
    argTypes:
    - Logr::Priority
    - std::string
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 63
    functionDepth: 0
    functionLinenumber: 63
    functionLinenumberEnd: 66
    functionName: Logging::Logger::error
    functionSourceFile: /src/pdns/pdns/recursordist/logging.cc
    functionUses: 47
    functionsReached:
    - Logging::Logger::logMessage
    linkageType: ''
    returnType: void
    signature: void Logger::error(Logr::Priority prio, const std::string& err, const
      std::string& msg) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<Logger>
      Src: /src/pdns/pdns/recursordist/logging.cc:70,1
    - Dst: Logging::Logger::getptr
      Src: /src/pdns/pdns/recursordist/logging.cc:70,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - level
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 68
    functionDepth: 0
    functionLinenumber: 68
    functionLinenumberEnd: 72
    functionName: Logging::Logger::v
    functionSourceFile: /src/pdns/pdns/recursordist/logging.cc
    functionUses: 0
    functionsReached:
    - Logging::Logger::getptr
    - std::make_shared<Logger>
    linkageType: ''
    returnType: std::shared_ptr<Logr::Logger>
    signature: std::shared_ptr<Logr::Logger> Logger::v(size_t level) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<Logger>
      Src: /src/pdns/pdns/recursordist/logging.cc:76,1
    - Dst: Logging::Logger::getptr
      Src: /src/pdns/pdns/recursordist/logging.cc:76,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ' values'
    argTypes:
    - std::map<std::string, std::string>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 74
    functionDepth: 0
    functionLinenumber: 74
    functionLinenumberEnd: 79
    functionName: Logging::Logger::withValues
    functionSourceFile: /src/pdns/pdns/recursordist/logging.cc
    functionUses: 0
    functionsReached:
    - Logging::Logger::getptr
    - std::make_shared<Logger>
    linkageType: ''
    returnType: std::shared_ptr<Logr::Logger>
    signature: std::shared_ptr<Logr::Logger> Logger::withValues(const std::map<std::string,
      std::string>& values) const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<Logger>
      Src: /src/pdns/pdns/recursordist/logging.cc:85,1
    - Dst: Logging::Logger::getptr
      Src: /src/pdns/pdns/recursordist/logging.cc:85,1
    - Dst: value
      Src: /src/pdns/pdns/recursordist/logging.cc:85,1
    - Dst: std::make_shared<Logger>
      Src: /src/pdns/pdns/recursordist/logging.cc:88,1
    - Dst: Logging::Logger::getptr
      Src: /src/pdns/pdns/recursordist/logging.cc:88,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - ' name'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 81
    functionDepth: 0
    functionLinenumber: 81
    functionLinenumberEnd: 91
    functionName: Logging::Logger::withName
    functionSourceFile: /src/pdns/pdns/recursordist/logging.cc
    functionUses: 0
    functionsReached:
    - Logging::Logger::getptr
    - std::make_shared<Logger>
    - value
    linkageType: ''
    returnType: std::shared_ptr<Logr::Logger>
    signature: std::shared_ptr<Logr::Logger> Logger::withName(const std::string& name)
      const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<Logger>
      Src: /src/pdns/pdns/recursordist/logging.cc:94,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - callback
    argTypes:
    - EntryLogger
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 92
    functionDepth: 0
    functionLinenumber: 92
    functionLinenumberEnd: 95
    functionName: Logging::Logger::create
    functionSourceFile: /src/pdns/pdns/recursordist/logging.cc
    functionUses: 9
    functionsReached:
    - std::make_shared<Logger>
    linkageType: ''
    returnType: std::shared_ptr<Logger>
    signature: std::shared_ptr<Logger> Logger::create(EntryLogger callback)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<Logger>
      Src: /src/pdns/pdns/recursordist/logging.cc:98,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - callback
    - ' name'
    argTypes:
    - EntryLogger
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 96
    functionDepth: 0
    functionLinenumber: 96
    functionLinenumberEnd: 99
    functionName: Logging::Logger::create
    functionSourceFile: /src/pdns/pdns/recursordist/logging.cc
    functionUses: 9
    functionsReached:
    - std::make_shared<Logger>
    linkageType: ''
    returnType: std::shared_ptr<Logger>
    signature: std::shared_ptr<Logger> Logger::create(EntryLogger callback, const
      std::string& name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - callback
    argTypes:
    - EntryLogger
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 104
      start: 101
    functionDepth: 0
    functionLinenumber: 101
    functionLinenumberEnd: 104
    functionName: Logging::Logger::Logger
    functionSourceFile: /src/pdns/pdns/recursordist/logging.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Logger::Logger(EntryLogger callback)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/logging.cc:106,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - callback
    - name
    argTypes:
    - EntryLogger
    - std::optional<std::string>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 105
    functionDepth: 0
    functionLinenumber: 105
    functionLinenumberEnd: 108
    functionName: Logging::Logger::Logger
    functionSourceFile: /src/pdns/pdns/recursordist/logging.cc
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void Logger::Logger(EntryLogger callback, std::optional<std::string>
      name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/logging.cc:110,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/logging.cc:110,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 4
    argNames:
    - parent
    - name
    - lvl
    - callback
    argTypes:
    - std::shared_ptr<const Logger>
    - std::optional<std::string>
    - size_t
    - EntryLogger
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 112
      start: 109
    functionDepth: 0
    functionLinenumber: 109
    functionLinenumberEnd: 112
    functionName: Logging::Logger::Logger
    functionSourceFile: /src/pdns/pdns/recursordist/logging.cc
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void Logger::Logger(std::shared_ptr<const Logger> parent, std::optional<std::string>
      name, size_t lvl, EntryLogger callback)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 114
    functionDepth: 0
    functionLinenumber: 114
    functionLinenumberEnd: 114
    functionName: Logger::~Logger()
    functionSourceFile: /src/pdns/pdns/recursordist/logging.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Logger::~Logger()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: shared_from_this
      Src: /src/pdns/pdns/recursordist/logging.cc:32,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 33
      start: 30
    functionDepth: 0
    functionLinenumber: 30
    functionLinenumberEnd: 33
    functionName: Logging::Logger::getptr
    functionSourceFile: /src/pdns/pdns/recursordist/logging.cc
    functionUses: 15
    functionsReached:
    - shared_from_this
    linkageType: ''
    returnType: std::shared_ptr<const Logger>
    signature: std::shared_ptr<const Logger> Logger::getptr() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Logging::Logger::logMessage
      Src: /src/pdns/pdns/recursordist/logging.cc:37,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - prio
    - ' msg'
    argTypes:
    - Logr::Priority
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 35
    functionDepth: 0
    functionLinenumber: 35
    functionLinenumberEnd: 38
    functionName: Logging::Logger::info
    functionSourceFile: /src/pdns/pdns/recursordist/logging.cc
    functionUses: 2
    functionsReached:
    - Logging::Logger::logMessage
    linkageType: ''
    returnType: void
    signature: void Logger::info(Logr::Priority prio, const std::string& msg) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Utility::gettimeofday
      Src: /src/pdns/pdns/recursordist/logging.cc:45,1
    - Dst: Entry::values::insert
      Src: /src/pdns/pdns/recursordist/logging.cc:50,1
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/logging.cc:50,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/logging.cc:50,1
    - Dst: Entry::values::insert
      Src: /src/pdns/pdns/recursordist/logging.cc:52,1
    - Dst: auto::_values::begin
      Src: /src/pdns/pdns/recursordist/logging.cc:52,1
    - Dst: auto::_values::end
      Src: /src/pdns/pdns/recursordist/logging.cc:52,1
    - Dst: _callback
      Src: /src/pdns/pdns/recursordist/logging.cc:55,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 3
    argNames:
    - ' msg'
    - prio
    - ' err'
    argTypes:
    - std::string
    - Logr::Priority
    - std::optional<std::string>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 40
    functionDepth: 1
    functionLinenumber: 40
    functionLinenumberEnd: 56
    functionName: Logging::Logger::logMessage
    functionSourceFile: /src/pdns/pdns/recursordist/logging.cc
    functionUses: 16
    functionsReached:
    - _callback
    - Entry::values::insert
    - end
    - Utility::gettimeofday
    - begin
    - auto::_values::begin
    - auto::_values::end
    linkageType: ''
    returnType: void
    signature: void Logger::logMessage(const std::string& msg, Logr::Priority prio,
      const std::optional<std::string>& err) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Logging::Logger::logMessage
      Src: /src/pdns/pdns/recursordist/logging.cc:60,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/logging.cc:60,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/logging.cc:60,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - prio
    - err
    - ' msg'
    argTypes:
    - Logr::Priority
    - int
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 58
    functionDepth: 0
    functionLinenumber: 58
    functionLinenumberEnd: 61
    functionName: Logging::Logger::error
    functionSourceFile: /src/pdns/pdns/recursordist/logging.cc
    functionUses: 47
    functionsReached:
    - Logging::Logger::logMessage
    - stringerror
    - std::string
    linkageType: ''
    returnType: void
    signature: void Logger::error(Logr::Priority prio, int err, const std::string&
      msg) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Logging::Logger::logMessage
      Src: /src/pdns/pdns/recursordist/logging.cc:65,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - prio
    - ' err'
    - ' msg'
    argTypes:
    - Logr::Priority
    - std::string
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 63
    functionDepth: 0
    functionLinenumber: 63
    functionLinenumberEnd: 66
    functionName: Logging::Logger::error
    functionSourceFile: /src/pdns/pdns/recursordist/logging.cc
    functionUses: 47
    functionsReached:
    - Logging::Logger::logMessage
    linkageType: ''
    returnType: void
    signature: void Logger::error(Logr::Priority prio, const std::string& err, const
      std::string& msg) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<Logger>
      Src: /src/pdns/pdns/recursordist/logging.cc:70,1
    - Dst: Logging::Logger::getptr
      Src: /src/pdns/pdns/recursordist/logging.cc:70,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - level
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 68
    functionDepth: 0
    functionLinenumber: 68
    functionLinenumberEnd: 72
    functionName: Logging::Logger::v
    functionSourceFile: /src/pdns/pdns/recursordist/logging.cc
    functionUses: 0
    functionsReached:
    - Logging::Logger::getptr
    - std::make_shared<Logger>
    linkageType: ''
    returnType: std::shared_ptr<Logr::Logger>
    signature: std::shared_ptr<Logr::Logger> Logger::v(size_t level) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<Logger>
      Src: /src/pdns/pdns/recursordist/logging.cc:76,1
    - Dst: Logging::Logger::getptr
      Src: /src/pdns/pdns/recursordist/logging.cc:76,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ' values'
    argTypes:
    - std::map<std::string, std::string>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 74
    functionDepth: 0
    functionLinenumber: 74
    functionLinenumberEnd: 79
    functionName: Logging::Logger::withValues
    functionSourceFile: /src/pdns/pdns/recursordist/logging.cc
    functionUses: 0
    functionsReached:
    - Logging::Logger::getptr
    - std::make_shared<Logger>
    linkageType: ''
    returnType: std::shared_ptr<Logr::Logger>
    signature: std::shared_ptr<Logr::Logger> Logger::withValues(const std::map<std::string,
      std::string>& values) const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<Logger>
      Src: /src/pdns/pdns/recursordist/logging.cc:85,1
    - Dst: Logging::Logger::getptr
      Src: /src/pdns/pdns/recursordist/logging.cc:85,1
    - Dst: value
      Src: /src/pdns/pdns/recursordist/logging.cc:85,1
    - Dst: std::make_shared<Logger>
      Src: /src/pdns/pdns/recursordist/logging.cc:88,1
    - Dst: Logging::Logger::getptr
      Src: /src/pdns/pdns/recursordist/logging.cc:88,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - ' name'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 81
    functionDepth: 0
    functionLinenumber: 81
    functionLinenumberEnd: 91
    functionName: Logging::Logger::withName
    functionSourceFile: /src/pdns/pdns/recursordist/logging.cc
    functionUses: 0
    functionsReached:
    - Logging::Logger::getptr
    - std::make_shared<Logger>
    - value
    linkageType: ''
    returnType: std::shared_ptr<Logr::Logger>
    signature: std::shared_ptr<Logr::Logger> Logger::withName(const std::string& name)
      const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<Logger>
      Src: /src/pdns/pdns/recursordist/logging.cc:94,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - callback
    argTypes:
    - EntryLogger
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 92
    functionDepth: 0
    functionLinenumber: 92
    functionLinenumberEnd: 95
    functionName: Logging::Logger::create
    functionSourceFile: /src/pdns/pdns/recursordist/logging.cc
    functionUses: 9
    functionsReached:
    - std::make_shared<Logger>
    linkageType: ''
    returnType: std::shared_ptr<Logger>
    signature: std::shared_ptr<Logger> Logger::create(EntryLogger callback)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<Logger>
      Src: /src/pdns/pdns/recursordist/logging.cc:98,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - callback
    - ' name'
    argTypes:
    - EntryLogger
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 96
    functionDepth: 0
    functionLinenumber: 96
    functionLinenumberEnd: 99
    functionName: Logging::Logger::create
    functionSourceFile: /src/pdns/pdns/recursordist/logging.cc
    functionUses: 9
    functionsReached:
    - std::make_shared<Logger>
    linkageType: ''
    returnType: std::shared_ptr<Logger>
    signature: std::shared_ptr<Logger> Logger::create(EntryLogger callback, const
      std::string& name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - callback
    argTypes:
    - EntryLogger
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 104
      start: 101
    functionDepth: 0
    functionLinenumber: 101
    functionLinenumberEnd: 104
    functionName: Logging::Logger::Logger
    functionSourceFile: /src/pdns/pdns/recursordist/logging.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Logger::Logger(EntryLogger callback)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/logging.cc:106,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - callback
    - name
    argTypes:
    - EntryLogger
    - std::optional<std::string>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 105
    functionDepth: 0
    functionLinenumber: 105
    functionLinenumberEnd: 108
    functionName: Logging::Logger::Logger
    functionSourceFile: /src/pdns/pdns/recursordist/logging.cc
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void Logger::Logger(EntryLogger callback, std::optional<std::string>
      name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/logging.cc:110,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/logging.cc:110,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 4
    argNames:
    - parent
    - name
    - lvl
    - callback
    argTypes:
    - std::shared_ptr<const Logger>
    - std::optional<std::string>
    - size_t
    - EntryLogger
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 112
      start: 109
    functionDepth: 0
    functionLinenumber: 109
    functionLinenumberEnd: 112
    functionName: Logging::Logger::Logger
    functionSourceFile: /src/pdns/pdns/recursordist/logging.cc
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void Logger::Logger(std::shared_ptr<const Logger> parent, std::optional<std::string>
      name, size_t lvl, EntryLogger callback)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 114
    functionDepth: 0
    functionLinenumber: 114
    functionLinenumberEnd: 114
    functionName: Logger::~Logger()
    functionSourceFile: /src/pdns/pdns/recursordist/logging.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Logger::~Logger()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: std::scoped_lock
      Src: /src/pdns/pdns/recursordist/logging.cc:125,1
    - Dst: strftime
      Src: /src/pdns/pdns/recursordist/logging.cc:128,1
    - Dst: data
      Src: /src/pdns/pdns/recursordist/logging.cc:128,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/logging.cc:128,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/logging.cc:128,1
    - Dst: localtime_r
      Src: /src/pdns/pdns/recursordist/logging.cc:128,1
    - Dst: snprintf
      Src: /src/pdns/pdns/recursordist/logging.cc:131,1
    - Dst: data
      Src: /src/pdns/pdns/recursordist/logging.cc:131,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/logging.cc:131,1
    - Dst: static_cast<long long>
      Src: /src/pdns/pdns/recursordist/logging.cc:131,1
    - Dst: snprintf
      Src: /src/pdns/pdns/recursordist/logging.cc:134,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/logging.cc:134,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/logging.cc:134,1
    - Dst: static_cast<long>
      Src: /src/pdns/pdns/recursordist/logging.cc:134,1
    - Dst: data
      Src: /src/pdns/pdns/recursordist/logging.cc:135,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 3
    argNames:
    - ' tval'
    - ' buf'
    - ' format'
    argTypes:
    - struct timeval
    - std::array<char, 64>
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 136
      start: 119
    functionDepth: 0
    functionLinenumber: 119
    functionLinenumberEnd: 136
    functionName: Logging::toTimestampStringMilli
    functionSourceFile: /src/pdns/pdns/recursordist/logging.cc
    functionUses: 9
    functionsReached:
    - strftime
    - snprintf
    - localtime_r
    - c_str
    - static_cast<long long>
    - size
    - static_cast<long>
    - data
    - std::scoped_lock
    - at
    linkageType: ''
    returnType: char
    signature: char * Logging::toTimestampStringMilli(const struct timeval& tval,
      std::array<char, 64>& buf, const std::string& format)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: equal_range
      Src: /src/pdns/pdns/recursordist/reczones-helpers.cc:36,1
    - Dst: vector::emplace_back
      Src: /src/pdns/pdns/recursordist/reczones-helpers.cc:39,1
    - Dst: replace
      Src: /src/pdns/pdns/recursordist/reczones-helpers.cc:44,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 6
    argNames:
    - now
    - qtype
    - state
    - ' from'
    - ' seen'
    - ' allRecords'
    argTypes:
    - time_t
    - QType
    - vState
    - ComboAddress
    - set<DNSName>
    - std::multimap<DNSName, DNSRecord>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 33
    functionDepth: 0
    functionLinenumber: 33
    functionLinenumberEnd: 46
    functionName: putIntoCache
    functionSourceFile: /src/pdns/pdns/recursordist/reczones-helpers.cc
    functionUses: 0
    functionsReached:
    - equal_range
    - replace
    - vector::emplace_back
    linkageType: ''
    returnType: void
    signature: void putIntoCache(time_t now, QType qtype, vState state, const ComboAddress&
      from, const set<DNSName>& seen, const std::multimap<DNSName, DNSRecord>& allRecords)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ZoneParserTNG::setMaxGenerateSteps
      Src: /src/pdns/pdns/recursordist/reczones-helpers.cc:51,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/reczones-helpers.cc:51,1
    - Dst: ZoneParserTNG::setMaxIncludes
      Src: /src/pdns/pdns/recursordist/reczones-helpers.cc:52,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/reczones-helpers.cc:52,1
    - Dst: ZoneParserTNG::get
      Src: /src/pdns/pdns/recursordist/reczones-helpers.cc:55,1
    - Dst: insert
      Src: /src/pdns/pdns/recursordist/reczones-helpers.cc:59,1
    - Dst: emplace
      Src: /src/pdns/pdns/recursordist/reczones-helpers.cc:60,1
    - Dst: DNSRecord
      Src: /src/pdns/pdns/recursordist/reczones-helpers.cc:60,1
    - Dst: insert
      Src: /src/pdns/pdns/recursordist/reczones-helpers.cc:63,1
    - Dst: emplace
      Src: /src/pdns/pdns/recursordist/reczones-helpers.cc:64,1
    - Dst: DNSRecord
      Src: /src/pdns/pdns/recursordist/reczones-helpers.cc:64,1
    - Dst: emplace
      Src: /src/pdns/pdns/recursordist/reczones-helpers.cc:67,1
    - Dst: toLower
      Src: /src/pdns/pdns/recursordist/reczones-helpers.cc:68,1
    - Dst: emplace_back
      Src: /src/pdns/pdns/recursordist/reczones-helpers.cc:69,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 21
    argCount: 8
    argNames:
    - now
    - ' hintfile'
    - ' seenA'
    - ' seenAAAA'
    - ' seenNS'
    - ' aRecords'
    - ' aaaaRecords'
    - ' nsvec'
    argTypes:
    - time_t
    - std::string
    - set<DNSName>
    - set<DNSName>
    - set<DNSName>
    - std::multimap<DNSName, DNSRecord>
    - std::multimap<DNSName, DNSRecord>
    - vector<DNSRecord>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 48
    functionDepth: 1
    functionLinenumber: 48
    functionLinenumberEnd: 73
    functionName: parseHintFile
    functionSourceFile: /src/pdns/pdns/recursordist/reczones-helpers.cc
    functionUses: 0
    functionsReached:
    - ZoneParserTNG::setMaxIncludes
    - ZoneParserTNG::setMaxGenerateSteps
    - toLower
    - DNSRecord
    - insert
    - ZoneParserTNG::get
    - emplace_back
    - arg
    - emplace
    linkageType: ''
    returnType: void
    signature: void parseHintFile(time_t now, const std::string& hintfile, set<DNSName>&
      seenA, set<DNSName>& seenAAAA, set<DNSName>& seenNS, std::multimap<DNSName,
      DNSRecord>& aRecords, std::multimap<DNSName, DNSRecord>& aaaaRecords, vector<DNSRecord>&
      nsvec)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: count
      Src: /src/pdns/pdns/recursordist/reczones-helpers.cc:79,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 2
    argNames:
    - ' names'
    - ' nameservers'
    argTypes:
    - set<DNSName>
    - set<DNSName>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 75
    functionDepth: 0
    functionLinenumber: 75
    functionLinenumberEnd: 85
    functionName: determineReachable
    functionSourceFile: /src/pdns/pdns/recursordist/reczones-helpers.cc
    functionUses: 0
    functionsReached:
    - count
    linkageType: ''
    returnType: bool
    signature: bool determineReachable(const set<DNSName>& names, const set<DNSName>&
      nameservers)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: parseHintFile
      Src: /src/pdns/pdns/recursordist/reczones-helpers.cc:97,1
    - Dst: putIntoCache
      Src: /src/pdns/pdns/recursordist/reczones-helpers.cc:99,1
    - Dst: putIntoCache
      Src: /src/pdns/pdns/recursordist/reczones-helpers.cc:100,1
    - Dst: determineReachable
      Src: /src/pdns/pdns/recursordist/reczones-helpers.cc:102,1
    - Dst: determineReachable
      Src: /src/pdns/pdns/recursordist/reczones-helpers.cc:103,1
    - Dst: withName
      Src: /src/pdns/pdns/recursordist/reczones-helpers.cc:105,1
    - Dst: auto::info
      Src: /src/pdns/pdns/recursordist/reczones-helpers.cc:107,1
    - Dst: auto::info
      Src: /src/pdns/pdns/recursordist/reczones-helpers.cc:111,1
    - Dst: auto::info
      Src: /src/pdns/pdns/recursordist/reczones-helpers.cc:115,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 17
    argCount: 3
    argNames:
    - now
    - ' hintfile'
    - ' nsvec'
    argTypes:
    - time_t
    - std::string
    - std::vector<DNSRecord>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 119
      start: 87
    functionDepth: 2
    functionLinenumber: 87
    functionLinenumberEnd: 119
    functionName: readHintsIntoCache
    functionSourceFile: /src/pdns/pdns/recursordist/reczones-helpers.cc
    functionUses: 0
    functionsReached:
    - determineReachable
    - withName
    - putIntoCache
    - parseHintFile
    - auto::info
    linkageType: ''
    returnType: bool
    signature: bool readHintsIntoCache(time_t now, const std::string& hintfile, std::vector<DNSRecord>&
      nsvec)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: DNSRecord::DNSRecord
      Src: /src/pdns/pdns/recursordist/reczones-helpers.cc:125,1
    - Dst: DNSRecord::DNSRecord
      Src: /src/pdns/pdns/recursordist/reczones-helpers.cc:126,1
    - Dst: DNSRecord::DNSRecord
      Src: /src/pdns/pdns/recursordist/reczones-helpers.cc:127,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/reczones-helpers.cc:138,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/reczones-helpers.cc:138,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/reczones-helpers.cc:140,1
    - Dst: string::at
      Src: /src/pdns/pdns/recursordist/reczones-helpers.cc:141,1
    - Dst: static_cast<char>
      Src: /src/pdns/pdns/recursordist/reczones-helpers.cc:141,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/reczones-helpers.cc:142,1
    - Dst: DNSRecord::setContent
      Src: /src/pdns/pdns/recursordist/reczones-helpers.cc:143,1
    - Dst: std::make_shared<NSRecordContent>
      Src: /src/pdns/pdns/recursordist/reczones-helpers.cc:143,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/reczones-helpers.cc:143,1
    - Dst: push_back
      Src: /src/pdns/pdns/recursordist/reczones-helpers.cc:144,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/reczones-helpers.cc:146,1
    - Dst: DNSRecord::setContent
      Src: /src/pdns/pdns/recursordist/reczones-helpers.cc:147,1
    - Dst: std::make_shared<ARecordContent>
      Src: /src/pdns/pdns/recursordist/reczones-helpers.cc:147,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/reczones-helpers.cc:147,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/reczones-helpers.cc:147,1
    - Dst: replace
      Src: /src/pdns/pdns/recursordist/reczones-helpers.cc:161,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/reczones-helpers.cc:161,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/reczones-helpers.cc:163,1
    - Dst: DNSRecord::setContent
      Src: /src/pdns/pdns/recursordist/reczones-helpers.cc:164,1
    - Dst: std::make_shared<AAAARecordContent>
      Src: /src/pdns/pdns/recursordist/reczones-helpers.cc:164,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/reczones-helpers.cc:164,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/reczones-helpers.cc:164,1
    - Dst: replace
      Src: /src/pdns/pdns/recursordist/reczones-helpers.cc:165,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/reczones-helpers.cc:165,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 20
    argCount: 2
    argNames:
    - now
    - ' nsvec'
    argTypes:
    - time_t
    - std::vector<DNSRecord>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 168
      start: 121
    functionDepth: 0
    functionLinenumber: 121
    functionLinenumberEnd: 168
    functionName: putDefaultHintsIntoCache
    functionSourceFile: /src/pdns/pdns/recursordist/reczones-helpers.cc
    functionUses: 0
    functionsReached:
    - DNSRecord::DNSRecord
    - push_back
    - DNSName
    - size
    - std::make_shared<NSRecordContent>
    - string::at
    - DNSRecord::setContent
    - std::make_shared<ARecordContent>
    - std::make_shared<AAAARecordContent>
    - replace
    - at
    - static_cast<char>
    - ComboAddress
    linkageType: ''
    returnType: void
    signature: void putDefaultHintsIntoCache(time_t now, std::vector<DNSRecord>& nsvec)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: setContent
      Src: /src/pdns/pdns/recursordist/reczones-helpers.cc:177,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/recursordist/reczones-helpers.cc:177,1
    - Dst: SyncRes::AuthDomain::d_records::insert
      Src: /src/pdns/pdns/recursordist/reczones-helpers.cc:181,1
    - Dst: setContent
      Src: /src/pdns/pdns/recursordist/reczones-helpers.cc:184,1
    - Dst: std::make_shared<NSRecordContent>
      Src: /src/pdns/pdns/recursordist/reczones-helpers.cc:184,1
    - Dst: SyncRes::AuthDomain::d_records::insert
      Src: /src/pdns/pdns/recursordist/reczones-helpers.cc:185,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 2
    argNames:
    - ' dr'
    - content
    argTypes:
    - DNSRecord
    - T
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 188
      start: 171
    functionDepth: 1
    functionLinenumber: 171
    functionLinenumberEnd: 188
    functionName: makeSOAAndNSNodes
    functionSourceFile: /src/pdns/pdns/recursordist/reczones-helpers.cc
    functionUses: 0
    functionsReached:
    - setContent
    - DNSRecordContent::make
    - SyncRes::AuthDomain::d_records::insert
    - std::make_shared<NSRecordContent>
    linkageType: ''
    returnType: SyncRes::AuthDomain
    signature: SyncRes::AuthDomain makeSOAAndNSNodes(DNSRecord& dr, T content)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: count
      Src: /src/pdns/pdns/recursordist/reczones-helpers.cc:197,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/recursordist/reczones-helpers.cc:198,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/reczones-helpers.cc:199,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/recursordist/reczones-helpers.cc:204,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/reczones-helpers.cc:204,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 4
    argNames:
    - ' newMap'
    - ad
    - ' name'
    - log
    argTypes:
    - SyncRes::domainmap_t
    - SyncRes::AuthDomain
    - DNSName
    - Logr::log_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 209
      start: 190
    functionDepth: 0
    functionLinenumber: 190
    functionLinenumberEnd: 209
    functionName: addToDomainMap
    functionSourceFile: /src/pdns/pdns/recursordist/reczones-helpers.cc
    functionUses: 0
    functionsReached:
    - Logging::Loggable
    - Logr::log_t::info
    - count
    linkageType: ''
    returnType: void
    signature: "void addToDomainMap(SyncRes::domainmap_t& newMap,\n                           SyncRes::AuthDomain
      ad,\n                           const DNSName& name,\n                           Logr::log_t
      log,\n                           const bool partial = false,\n                           const
      bool reverse = false)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DNSRecord::DNSRecord
      Src: /src/pdns/pdns/recursordist/reczones-helpers.cc:215,1
    - Dst: find
      Src: /src/pdns/pdns/recursordist/reczones-helpers.cc:218,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/reczones-helpers.cc:219,1
    - Dst: makeSOAAndNSNodes
      Src: /src/pdns/pdns/recursordist/reczones-helpers.cc:220,1
    - Dst: insert
      Src: /src/pdns/pdns/recursordist/reczones-helpers.cc:222,1
    - Dst: isIPv6
      Src: /src/pdns/pdns/recursordist/reczones-helpers.cc:225,1
    - Dst: DNSRecord::setContent
      Src: /src/pdns/pdns/recursordist/reczones-helpers.cc:228,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/recursordist/reczones-helpers.cc:228,1
    - Dst: toStringNoInterface
      Src: /src/pdns/pdns/recursordist/reczones-helpers.cc:228,1
    - Dst: auto::second::d_records::insert
      Src: /src/pdns/pdns/recursordist/reczones-helpers.cc:229,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 3
    argNames:
    - ' newMap'
    - ' hostname'
    - ' address'
    argTypes:
    - SyncRes::domainmap_t
    - DNSName
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 230
      start: 211
    functionDepth: 2
    functionLinenumber: 211
    functionLinenumberEnd: 230
    functionName: makeNameToIPZone
    functionSourceFile: /src/pdns/pdns/recursordist/reczones-helpers.cc
    functionUses: 0
    functionsReached:
    - isIPv6
    - makeSOAAndNSNodes
    - DNSRecord::DNSRecord
    - auto::second::d_records::insert
    - end
    - DNSRecordContent::make
    - insert
    - DNSRecord::setContent
    - toStringNoInterface
    - find
    linkageType: ''
    returnType: void
    signature: "void makeNameToIPZone(SyncRes::domainmap_t& newMap,\n                             const
      DNSName& hostname,\n                             const ComboAddress& address)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSRecord::DNSRecord
      Src: /src/pdns/pdns/recursordist/reczones-helpers.cc:237,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/reczones-helpers.cc:238,1
    - Dst: toStringReversed
      Src: /src/pdns/pdns/recursordist/reczones-helpers.cc:238,1
    - Dst: DNSRecord::d_name::appendRawLabel
      Src: /src/pdns/pdns/recursordist/reczones-helpers.cc:239,1
    - Dst: isIPv4
      Src: /src/pdns/pdns/recursordist/reczones-helpers.cc:239,1
    - Dst: DNSRecord::d_name::appendRawLabel
      Src: /src/pdns/pdns/recursordist/reczones-helpers.cc:240,1
    - Dst: makeSOAAndNSNodes
      Src: /src/pdns/pdns/recursordist/reczones-helpers.cc:242,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/reczones-helpers.cc:242,1
    - Dst: DNSRecord::setContent
      Src: /src/pdns/pdns/recursordist/reczones-helpers.cc:246,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/recursordist/reczones-helpers.cc:246,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/reczones-helpers.cc:246,1
    - Dst: SyncRes::AuthDomain::d_records::insert
      Src: /src/pdns/pdns/recursordist/reczones-helpers.cc:247,1
    - Dst: addToDomainMap
      Src: /src/pdns/pdns/recursordist/reczones-helpers.cc:249,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/reczones-helpers.cc:249,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 4
    argNames:
    - ' newMap'
    - ' address'
    - ' canonicalHostname'
    - log
    argTypes:
    - SyncRes::domainmap_t
    - ComboAddress
    - std::string
    - Logr::log_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 250
      start: 232
    functionDepth: 2
    functionLinenumber: 232
    functionLinenumberEnd: 250
    functionName: makeIPToNamesZone
    functionSourceFile: /src/pdns/pdns/recursordist/reczones-helpers.cc
    functionUses: 0
    functionsReached:
    - std::move
    - toStringReversed
    - DNSRecord::DNSRecord
    - makeSOAAndNSNodes
    - SyncRes::AuthDomain::d_records::insert
    - addToDomainMap
    - DNSName
    - isIPv4
    - DNSRecordContent::make
    - DNSRecord::setContent
    - DNSRecord::d_name::appendRawLabel
    linkageType: ''
    returnType: void
    signature: "void makeIPToNamesZone(SyncRes::domainmap_t& newMap,\n                              const
      ComboAddress& address,\n                              const std::string& canonicalHostname,\n
      \                             Logr::log_t log)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSRecord::DNSRecord
      Src: /src/pdns/pdns/recursordist/reczones-helpers.cc:256,1
    - Dst: std::rbegin
      Src: /src/pdns/pdns/recursordist/reczones-helpers.cc:257,1
    - Dst: std::rend
      Src: /src/pdns/pdns/recursordist/reczones-helpers.cc:257,1
    - Dst: DNSRecord::d_name::appendRawLabel
      Src: /src/pdns/pdns/recursordist/reczones-helpers.cc:258,1
    - Dst: DNSRecord::d_name::appendRawLabel
      Src: /src/pdns/pdns/recursordist/reczones-helpers.cc:260,1
    - Dst: DNSRecord::d_name::appendRawLabel
      Src: /src/pdns/pdns/recursordist/reczones-helpers.cc:261,1
    - Dst: makeSOAAndNSNodes
      Src: /src/pdns/pdns/recursordist/reczones-helpers.cc:263,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/reczones-helpers.cc:263,1
    - Dst: addToDomainMap
      Src: /src/pdns/pdns/recursordist/reczones-helpers.cc:265,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/reczones-helpers.cc:265,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - ' newMap'
    - labels
    - log
    argTypes:
    - SyncRes::domainmap_t
    - std::initializer_list<const char*>
    - Logr::log_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 266
      start: 252
    functionDepth: 2
    functionLinenumber: 252
    functionLinenumberEnd: 266
    functionName: makePartialIPZone
    functionSourceFile: /src/pdns/pdns/recursordist/reczones-helpers.cc
    functionUses: 0
    functionsReached:
    - std::move
    - std::rend
    - makeSOAAndNSNodes
    - DNSRecord::DNSRecord
    - std::rbegin
    - addToDomainMap
    - DNSName
    - DNSRecord::d_name::appendRawLabel
    linkageType: ''
    returnType: void
    signature: "void makePartialIPZone(SyncRes::domainmap_t& newMap,\n                       std::initializer_list<const
      char*> labels,\n                       Logr::log_t log)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSRecord::DNSRecord
      Src: /src/pdns/pdns/recursordist/reczones-helpers.cc:272,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/reczones-helpers.cc:273,1
    - Dst: makeSOAAndNSNodes
      Src: /src/pdns/pdns/recursordist/reczones-helpers.cc:274,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/reczones-helpers.cc:274,1
    - Dst: addToDomainMap
      Src: /src/pdns/pdns/recursordist/reczones-helpers.cc:276,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/reczones-helpers.cc:276,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - ' newMap'
    - ' name'
    - log
    argTypes:
    - SyncRes::domainmap_t
    - std::string
    - Logr::log_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 277
      start: 268
    functionDepth: 2
    functionLinenumber: 268
    functionLinenumberEnd: 277
    functionName: makePartialIP6Zone
    functionSourceFile: /src/pdns/pdns/recursordist/reczones-helpers.cc
    functionUses: 0
    functionsReached:
    - std::move
    - makeSOAAndNSNodes
    - DNSRecord::DNSRecord
    - addToDomainMap
    - DNSName
    linkageType: ''
    returnType: void
    signature: "void makePartialIP6Zone(SyncRes::domainmap_t& newMap,\n                        const
      std::string& name,\n                        Logr::log_t log)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: cbegin
      Src: /src/pdns/pdns/recursordist/reczones-helpers.cc:288,1
    - Dst: cend
      Src: /src/pdns/pdns/recursordist/reczones-helpers.cc:288,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/reczones-helpers.cc:289,1
    - Dst: auto::find
      Src: /src/pdns/pdns/recursordist/reczones-helpers.cc:289,1
    - Dst: makeNameToIPZone
      Src: /src/pdns/pdns/recursordist/reczones-helpers.cc:290,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/reczones-helpers.cc:290,1
    - Dst: toCanonic
      Src: /src/pdns/pdns/recursordist/reczones-helpers.cc:293,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/reczones-helpers.cc:293,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/reczones-helpers.cc:294,1
    - Dst: makeNameToIPZone
      Src: /src/pdns/pdns/recursordist/reczones-helpers.cc:295,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/reczones-helpers.cc:301,1
    - Dst: find
      Src: /src/pdns/pdns/recursordist/reczones-helpers.cc:301,1
    - Dst: makeIPToNamesZone
      Src: /src/pdns/pdns/recursordist/reczones-helpers.cc:302,1
    - Dst: toCanonic
      Src: /src/pdns/pdns/recursordist/reczones-helpers.cc:305,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/reczones-helpers.cc:305,1
    - Dst: makeIPToNamesZone
      Src: /src/pdns/pdns/recursordist/reczones-helpers.cc:306,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/recursordist/reczones-helpers.cc:306,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 4
    argNames:
    - ' newMap'
    - ' searchSuffix'
    - ' parts'
    - log
    argTypes:
    - SyncRes::domainmap_t
    - std::string
    - std::vector<std::string>
    - Logr::log_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 308
      start: 279
    functionDepth: 3
    functionLinenumber: 279
    functionLinenumberEnd: 308
    functionName: addForwardAndReverseLookupEntries
    functionSourceFile: /src/pdns/pdns/recursordist/reczones-helpers.cc
    functionUses: 0
    functionsReached:
    - makeNameToIPZone
    - DNSName
    - cbegin
    - DNSName::toString
    - toCanonic
    - cend
    - empty
    - makeIPToNamesZone
    - auto::find
    - find
    linkageType: ''
    returnType: void
    signature: "void addForwardAndReverseLookupEntries(SyncRes::domainmap_t& newMap,\n
      \                                      const std::string& searchSuffix,\n                                       const
      std::vector<std::string>& parts,\n                                       Logr::log_t
      log)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: find
      Src: /src/pdns/pdns/recursordist/reczones-helpers.cc:312,1
    - Dst: resize
      Src: /src/pdns/pdns/recursordist/reczones-helpers.cc:314,1
    - Dst: Utility::trim
      Src: /src/pdns/pdns/recursordist/reczones-helpers.cc:316,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/reczones-helpers.cc:317,1
    - Dst: clear
      Src: /src/pdns/pdns/recursordist/reczones-helpers.cc:320,1
    - Dst: stringtok
      Src: /src/pdns/pdns/recursordist/reczones-helpers.cc:321,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/reczones-helpers.cc:322,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - ' parts'
    - ' line'
    argTypes:
    - std::vector<std::string>
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 323
      start: 310
    functionDepth: 1
    functionLinenumber: 310
    functionLinenumberEnd: 323
    functionName: parseEtcHostsLine
    functionSourceFile: /src/pdns/pdns/recursordist/reczones-helpers.cc
    functionUses: 0
    functionsReached:
    - stringtok
    - resize
    - size
    - clear
    - Utility::trim
    - empty
    - find
    linkageType: ''
    returnType: bool
    signature: bool parseEtcHostsLine(std::vector<std::string>& parts, std::string&
      line)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 38
    functionDepth: 0
    functionLinenumber: 38
    functionLinenumberEnd: 44
    functionName: RecursorLua4::DNSQuestion::getDH() const
    functionSourceFile: /src/pdns/pdns/recursordist/lua-recursor4.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::optional<dnsheader>
    signature: std::optional<dnsheader> RecursorLua4::DNSQuestion::getDH() const
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: vector::emplace_back
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:51,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 46
    functionDepth: 0
    functionLinenumber: 46
    functionLinenumberEnd: 55
    functionName: RecursorLua4::DNSQuestion::getEDNSFlags() const
    functionSourceFile: /src/pdns/pdns/recursordist/lua-recursor4.cc
    functionUses: 0
    functionsReached:
    - vector::emplace_back
    linkageType: ''
    returnType: vector<string>
    signature: vector<string> RecursorLua4::DNSQuestion::getEDNSFlags() const
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 1
    argNames:
    - ' flag'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 57
    functionDepth: 0
    functionLinenumber: 57
    functionLinenumberEnd: 65
    functionName: RecursorLua4::DNSQuestion::getEDNSFlag(const string& flag) const
    functionSourceFile: /src/pdns/pdns/recursordist/lua-recursor4.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool RecursorLua4::DNSQuestion::getEDNSFlag(const string& flag) const
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 67
    functionDepth: 0
    functionLinenumber: 67
    functionLinenumberEnd: 73
    functionName: RecursorLua4::DNSQuestion::getEDNSOptions() const
    functionSourceFile: /src/pdns/pdns/recursordist/lua-recursor4.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: vector<pair<uint16_t, string>>
    signature: vector<pair<uint16_t, string>> RecursorLua4::DNSQuestion::getEDNSOptions()
      const
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - code
    argTypes:
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 75
    functionDepth: 0
    functionLinenumber: 75
    functionLinenumberEnd: 85
    functionName: RecursorLua4::DNSQuestion::getEDNSOption(uint16_t code) const
    functionSourceFile: /src/pdns/pdns/recursordist/lua-recursor4.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::optional<string>
    signature: std::optional<string> RecursorLua4::DNSQuestion::getEDNSOption(uint16_t
      code) const
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: EDNSSubnetOpts::getFromString
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:93,1
    - Dst: EDNSSubnetOpts::getSource
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:94,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 87
    functionDepth: 0
    functionLinenumber: 87
    functionLinenumberEnd: 101
    functionName: RecursorLua4::DNSQuestion::getEDNSSubnet() const
    functionSourceFile: /src/pdns/pdns/recursordist/lua-recursor4.cc
    functionUses: 0
    functionsReached:
    - EDNSSubnetOpts::getFromString
    - EDNSSubnetOpts::getSource
    linkageType: ''
    returnType: std::optional<Netmask>
    signature: std::optional<Netmask> RecursorLua4::DNSQuestion::getEDNSSubnet() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::vector::reserve
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:108,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:108,1
    - Dst: std::vector::emplace_back
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:110,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 103
    functionDepth: 0
    functionLinenumber: 103
    functionLinenumberEnd: 114
    functionName: RecursorLua4::DNSQuestion::getProxyProtocolValues() const
    functionSourceFile: /src/pdns/pdns/recursordist/lua-recursor4.cc
    functionUses: 0
    functionsReached:
    - std::vector::reserve
    - std::vector::emplace_back
    - size
    linkageType: ''
    returnType: std::vector<std::pair<int, ProxyProtocolValue>>
    signature: std::vector<std::pair<int, ProxyProtocolValue>> RecursorLua4::DNSQuestion::getProxyProtocolValues()
      const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vector::reserve
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:120,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:120,1
    - Dst: vector::emplace_back
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:122,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 125
      start: 116
    functionDepth: 0
    functionLinenumber: 116
    functionLinenumberEnd: 125
    functionName: RecursorLua4::DNSQuestion::getRecords() const
    functionSourceFile: /src/pdns/pdns/recursordist/lua-recursor4.cc
    functionUses: 0
    functionsReached:
    - vector::reserve
    - size
    - vector::emplace_back
    linkageType: ''
    returnType: vector<pair<int, DNSRecord>>
    signature: vector<pair<int, DNSRecord>> RecursorLua4::DNSQuestion::getRecords()
      const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: clear
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:129,1
    - Dst: push_back
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:131,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ' arg'
    argTypes:
    - vector<pair<int, DNSRecord>>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 133
      start: 127
    functionDepth: 1
    functionLinenumber: 127
    functionLinenumberEnd: 133
    functionName: RecursorLua4::DNSQuestion::setRecords(const vector<pair<int, DNSRecord>>&
      arg)
    functionSourceFile: /src/pdns/pdns/recursordist/lua-recursor4.cc
    functionUses: 0
    functionsReached:
    - clear
    - push_back
    linkageType: ''
    returnType: void
    signature: void RecursorLua4::DNSQuestion::setRecords(const vector<pair<int, DNSRecord>>&
      arg)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: boost::get<std::string>
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:139,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:140,1
    - Dst: boost::get<DNSName>
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:143,1
    - Dst: std::optional<int>::value_or
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:149,1
    - Dst: DNSRecord::setContent
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:152,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:152,1
    - Dst: push_back
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:153,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:153,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 5
    argNames:
    - type
    - ' content'
    - place
    - ttl
    - name
    argTypes:
    - uint16_t
    - std::string
    - DNSResourceRecord::Place
    - std::optional<int>
    - RecursorLua4::DNSQuestion::OptDNSNameOrString
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 154
      start: 135
    functionDepth: 0
    functionLinenumber: 135
    functionLinenumberEnd: 154
    functionName: RecursorLua4::DNSQuestion::addRecord(uint16_t type, const std::string&
      content, DNSResourceRecord::Place place, std::optional<int> ttl, RecursorLua4::DNSQuestion::OptDNSNameOrString
      name)
    functionSourceFile: /src/pdns/pdns/recursordist/lua-recursor4.cc
    functionUses: 0
    functionsReached:
    - std::move
    - push_back
    - DNSName
    - boost::get<std::string>
    - DNSRecordContent::make
    - DNSRecord::setContent
    - std::optional<int>::value_or
    - boost::get<DNSName>
    linkageType: ''
    returnType: void
    signature: void RecursorLua4::DNSQuestion::addRecord(uint16_t type, const std::string&
      content, DNSResourceRecord::Place place, std::optional<int> ttl, RecursorLua4::DNSQuestion::OptDNSNameOrString
      name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: addRecord
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:158,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:158,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - type
    - ' content'
    - ttl
    - name
    argTypes:
    - uint16_t
    - std::string
    - std::optional<int>
    - OptDNSNameOrString
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 159
      start: 156
    functionDepth: 3
    functionLinenumber: 156
    functionLinenumberEnd: 159
    functionName: RecursorLua4::DNSQuestion::addAnswer(uint16_t type, const std::string&
      content, std::optional<int> ttl, OptDNSNameOrString name)
    functionSourceFile: /src/pdns/pdns/recursordist/lua-recursor4.cc
    functionUses: 0
    functionsReached:
    - std::move
    - addRecord
    linkageType: ''
    returnType: void
    signature: void RecursorLua4::DNSQuestion::addAnswer(uint16_t type, const std::string&
      content, std::optional<int> ttl, OptDNSNameOrString name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 164
      start: 164
    functionDepth: 0
    functionLinenumber: 164
    functionLinenumberEnd: 164
    functionName: inc
    functionSourceFile: /src/pdns/pdns/recursordist/lua-recursor4.cc
    functionUses: 18
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void inc() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - incr
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 165
      start: 165
    functionDepth: 0
    functionLinenumber: 165
    functionLinenumberEnd: 165
    functionName: incBy
    functionSourceFile: /src/pdns/pdns/recursordist/lua-recursor4.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void incBy(unsigned int incr) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 166
      start: 166
    functionDepth: 0
    functionLinenumber: 166
    functionLinenumberEnd: 166
    functionName: get
    functionSourceFile: /src/pdns/pdns/recursordist/lua-recursor4.cc
    functionUses: 555
    functionsReached: []
    linkageType: ''
    returnType: unsigned long
    signature: unsigned long get() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - val
    argTypes:
    - unsigned long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 167
      start: 167
    functionDepth: 0
    functionLinenumber: 167
    functionLinenumberEnd: 167
    functionName: set
    functionSourceFile: /src/pdns/pdns/recursordist/lua-recursor4.cc
    functionUses: 372
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void set(unsigned long val) const
  - BBCount: 29
    BranchProfiles: []
    Callsites:
    - Dst: registerMember
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:174,1
    - Dst: registerMember
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:177,1
    - Dst: registerMember
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:178,1
    - Dst: registerMember
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:179,1
    - Dst: registerMember
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:180,1
    - Dst: vStateIsBogus
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:181,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:181,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:181,1
    - Dst: vState
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:182,1
    - Dst: registerMember
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:189,1
    - Dst: registerMember
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:190,1
    - Dst: registerMember
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:191,1
    - Dst: registerMember
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:192,1
    - Dst: registerMember
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:193,1
    - Dst: registerMember
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:194,1
    - Dst: registerMember
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:195,1
    - Dst: registerMember
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:196,1
    - Dst: registerMember
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:197,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:209,1
    - Dst: registerMember
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:220,1
    - Dst: registerMember
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:221,1
    - Dst: registerMember
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:222,1
    - Dst: registerMember
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:223,1
    - Dst: registerMember
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:224,1
    - Dst: registerMember
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:225,1
    - Dst: registerMember
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:227,1
    - Dst: getName
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:229,1
    - Dst: setName
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:232,1
    - Dst: registerMember
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:234,1
    - Dst: registerMember
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:235,1
    - Dst: registerMember
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:236,1
    - Dst: registerMember
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:237,1
    - Dst: getTrigger
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:239,1
    - Dst: setHitData
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:242,1
    - Dst: getHit
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:242,1
    - Dst: registerMember
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:244,1
    - Dst: getHit
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:246,1
    - Dst: setHitData
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:249,1
    - Dst: getTrigger
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:249,1
    - Dst: registerMember
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:251,1
    - Dst: std::string::empty
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:260,1
    - Dst: getZoneRepresentation
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:263,1
    - Dst: make_unique<DNSFilterEngine::Policy::CustomData>
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:271,1
    - Dst: d_custom::push_back
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:272,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:272,1
    - Dst: registerFunction
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:275,1
    - Dst: registerFunction
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:276,1
    - Dst: registerFunction
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:277,1
    - Dst: registerFunction
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:278,1
    - Dst: registerFunction
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:279,1
    - Dst: registerFunction
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:280,1
    - Dst: registerFunction
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:281,1
    - Dst: registerMember
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:283,1
    - Dst: registerMember
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:284,1
    - Dst: registerMember
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:285,1
    - Dst: registerMember
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:286,1
    - Dst: registerMember
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:288,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:289,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:289,1
    - Dst: values::size
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:290,1
    - Dst: std::vector<string>
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:291,1
    - Dst: std::vector::reserve
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:293,1
    - Dst: values::size
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:293,1
    - Dst: std::vector::emplace_back
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:295,1
    - Dst: values::empty
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:304,1
    - Dst: values::at
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:305,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:310,1
    - Dst: values::empty
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:311,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:312,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:314,1
    - Dst: values::at
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:314,1
    - Dst: values::at
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:314,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:316,1
    - Dst: getContent
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:316,1
    - Dst: std::optional<ComboAddress>
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:317,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:320,1
    - Dst: auto::getCA
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:321,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:323,1
    - Dst: auto::getCA
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:324,1
    - Dst: registerFunction
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:329,1
    - Dst: registerFunction
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:330,1
    - Dst: setContent
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:332,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:332,1
    - Dst: registerFunction
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:333,1
    - Dst: registerFunction
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:334,1
    - Dst: registerFunction
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:335,1
    - Dst: registerFunction
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:336,1
    - Dst: policyTags::insert
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:338,1
    - Dst: policyTags::clear
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:341,1
    - Dst: policyTags::reserve
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:342,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:342,1
    - Dst: policyTags::insert
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:344,1
    - Dst: std::vector<std::pair<int, std::string> >
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:348,1
    - Dst: std::vector::reserve
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:352,1
    - Dst: policyTags::size
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:352,1
    - Dst: std::vector::emplace_back
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:354,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:366,1
    - Dst: SuffixMatchNode
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:366,1
    - Dst: boost::get<string>
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:371,1
    - Dst: add
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:372,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:372,1
    - Dst: boost::get<vector<pair<unsigned int, string> > >
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:374,1
    - Dst: add
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:376,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:376,1
    - Dst: add
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:380,1
    - Dst: boost::get<DNSName>
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:380,1
    - Dst: withName
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:384,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:384,1
    - Dst: registerFunction
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:389,1
    - Dst: registerFunction
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:390,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:390,1
    - Dst: emplace_back
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:392,1
    - Dst: emplace_back
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:401,1
    - Dst: emplace_back
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:411,1
    - Dst: emplace_back
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:414,1
    - Dst: static_cast<unsigned int>
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:415,1
    - Dst: static_cast<unsigned int>
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:416,1
    - Dst: static_cast<unsigned int>
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:417,1
    - Dst: static_cast<unsigned int>
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:418,1
    - Dst: static_cast<unsigned int>
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:419,1
    - Dst: static_cast<unsigned int>
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:420,1
    - Dst: static_cast<unsigned int>
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:421,1
    - Dst: static_cast<unsigned int>
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:422,1
    - Dst: static_cast<unsigned int>
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:423,1
    - Dst: static_cast<unsigned int>
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:424,1
    - Dst: static_cast<unsigned int>
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:425,1
    - Dst: static_cast<unsigned int>
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:426,1
    - Dst: static_cast<unsigned int>
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:427,1
    - Dst: static_cast<unsigned int>
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:428,1
    - Dst: static_cast<unsigned int>
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:429,1
    - Dst: static_cast<unsigned int>
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:430,1
    - Dst: static_cast<unsigned int>
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:431,1
    - Dst: static_cast<unsigned int>
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:432,1
    - Dst: static_cast<unsigned int>
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:434,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:437,1
    - Dst: vStateIsBogus
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:438,1
    - Dst: emplace_back
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:441,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:443,1
    - Dst: boost::get<std::string>
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:449,1
    - Dst: boost::get<std::unordered_map<std::string, std::string>>
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:451,1
    - Dst: std::string::empty
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:458,1
    - Dst: getDynMetric
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:461,1
    - Dst: registerFunction
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:464,1
    - Dst: registerFunction
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:465,1
    - Dst: registerFunction
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:466,1
    - Dst: registerFunction
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:467,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:469,1
    - Dst: getStatByName
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:471,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:478,1
    - Dst: thread_local_id
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:479,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:482,1
    - Dst: sendCustomTrap
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:484,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:488,1
    - Dst: getRegisteredName
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:489,1
    - Dst: registerMember
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:492,1
    - Dst: qtype::getCode
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:493,1
    - Dst: registerMember
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:495,1
    - Dst: registerMember
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:496,1
    - Dst: policyTags::insert
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:497,1
    - Dst: policyTags::clear
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:500,1
    - Dst: policyTags::reserve
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:501,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:501,1
    - Dst: policyTags::insert
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:503,1
    - Dst: std::vector<std::pair<int, std::string> >
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:507,1
    - Dst: std::vector::reserve
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:511,1
    - Dst: policyTags::size
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:511,1
    - Dst: std::vector::emplace_back
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:513,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:524,1
    - Dst: getRecordSets
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:526,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:530,1
    - Dst: putRecordSets
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:531,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:534,1
    - Dst: withName
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:535,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:535,1
    - Dst: auto::info
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:536,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:537,1
    - Dst: std::make_shared<RecursorLua4>
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:538,1
    - Dst: auto::loadFile
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:539,1
    - Dst: auto::info
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:540,1
    - Dst: std::thread::detach
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:542,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:545,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:546,1
    - Dst: cleanSlashes
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:547,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:548,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:552,1
    - Dst: SyncRes::getNSSpeedTable
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:554,1
    - Dst: writeFunction
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:558,1
    - Dst: SyncRes::putIntoNSSpeedTable
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:559,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:562,1
    - Dst: includePath
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:563,1
    CyclomaticComplexity: 38
    EdgeCount: 38
    ICount: 365
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 565
      start: 172
    functionDepth: 2
    functionLinenumber: 172
    functionLinenumberEnd: 565
    functionName: RecursorLua4::postPrepareContext
    functionSourceFile: /src/pdns/pdns/recursordist/lua-recursor4.cc
    functionUses: 0
    functionsReached:
    - getTrigger
    - getZoneRepresentation
    - std::optional<ComboAddress>
    - add
    - withName
    - SyncRes::getNSSpeedTable
    - std::make_shared<RecursorLua4>
    - values::empty
    - vStateIsBogus
    - boost::get<std::string>
    - thread_local_id
    - empty
    - emplace_back
    - std::string
    - getRecordSets
    - boost::get<string>
    - getName
    - Logging::Loggable
    - policyTags::insert
    - string
    - size
    - registerMember
    - values::size
    - DNSRecordContent::make
    - values::at
    - std::string::empty
    - getDynMetric
    - setName
    - vState
    - auto::getCA
    - writeFunction
    - std::vector<string>
    - SuffixMatchNode
    - boost::get<DNSName>
    - sendCustomTrap
    - auto::info
    - includePath
    - getStatByName
    - registerFunction
    - setContent
    - getRegisteredName
    - SyncRes::putIntoNSSpeedTable
    - DNSName
    - static_cast<uint8_t>
    - getHit
    - std::vector::reserve
    - boost::get<vector<pair<unsigned int, string> > >
    - static_cast<unsigned int>
    - qtype::getCode
    - boost::get<std::unordered_map<std::string, std::string>>
    - arg
    - make_unique<DNSFilterEngine::Policy::CustomData>
    - getRR
    - std::move
    - policyTags::size
    - what
    - putRecordSets
    - d_custom::push_back
    - std::vector::emplace_back
    - getContent
    - policyTags::clear
    - cleanSlashes
    - setHitData
    - auto::loadFile
    - std::thread::detach
    - std::vector<std::pair<int, std::string> >
    - policyTags::reserve
    linkageType: ''
    returnType: void
    signature: void RecursorLua4::postPrepareContext()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: readVariable
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:571,1
    - Dst: readVariable
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:572,1
    - Dst: readVariable
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:573,1
    - Dst: readVariable
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:574,1
    - Dst: readVariable
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:575,1
    - Dst: readVariable
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:576,1
    - Dst: readVariable
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:577,1
    - Dst: readVariable
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:579,1
    - Dst: readVariable
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:580,1
    - Dst: readVariable
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:581,1
    - Dst: readVariable
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:582,1
    - Dst: readVariable
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:584,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 585
      start: 569
    functionDepth: 0
    functionLinenumber: 569
    functionLinenumberEnd: 585
    functionName: RecursorLua4::postLoad
    functionSourceFile: /src/pdns/pdns/recursordist/lua-recursor4.cc
    functionUses: 0
    functionsReached:
    - readVariable
    linkageType: ''
    returnType: void
    signature: void RecursorLua4::postLoad()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: emplace_back
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:593,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' features'
    argTypes:
    - Features
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 594
      start: 587
    functionDepth: 0
    functionLinenumber: 587
    functionLinenumberEnd: 594
    functionName: RecursorLua4::getFeatures
    functionSourceFile: /src/pdns/pdns/recursordist/lua-recursor4.cc
    functionUses: 0
    functionsReached:
    - emplace_back
    linkageType: ''
    returnType: void
    signature: void RecursorLua4::getFeatures(Features& features)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Logr::log_t::withValues
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:599,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:599,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:599,1
    - Dst: loadFile
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:600,1
    - Dst: readVariable
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:602,1
    - Dst: auto::info
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:604,1
    - Dst: call
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:605,1
    - Dst: auto::info
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:606,1
    - Dst: auto::info
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:609,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 3
    argNames:
    - ' script'
    - start
    - log
    argTypes:
    - string
    - bool
    - Logr::log_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 611
      start: 596
    functionDepth: 0
    functionLinenumber: 596
    functionLinenumberEnd: 611
    functionName: RecursorLua4::runStartStopFunction
    functionSourceFile: /src/pdns/pdns/recursordist/lua-recursor4.cc
    functionUses: 0
    functionsReached:
    - Logging::Loggable
    - loadFile
    - call
    - Logr::log_t::withValues
    - readVariable
    - auto::info
    linkageType: ''
    returnType: void
    signature: void RecursorLua4::runStartStopFunction(const string& script, bool
      start, Logr::log_t log)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: withName
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:616,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ' dnsQuestion'
    argTypes:
    - RecursorLua4::DNSQuestion
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 620
      start: 613
    functionDepth: 0
    functionLinenumber: 613
    functionLinenumberEnd: 620
    functionName: warnDrop
    functionSourceFile: /src/pdns/pdns/recursordist/lua-recursor4.cc
    functionUses: 0
    functionsReached:
    - withName
    linkageType: ''
    returnType: void
    signature: void warnDrop(const RecursorLua4::DNSQuestion& dnsQuestion)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: d_maintenance
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:625,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 627
      start: 622
    functionDepth: 0
    functionLinenumber: 622
    functionLinenumberEnd: 627
    functionName: RecursorLua4::maintenance
    functionSourceFile: /src/pdns/pdns/recursordist/lua-recursor4.cc
    functionUses: 0
    functionsReached:
    - d_maintenance
    linkageType: ''
    returnType: void
    signature: void RecursorLua4::maintenance() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: add
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:634,1
    - Dst: RecursorLua4::genhook
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:635,1
    - Dst: add
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:636,1
    - Dst: warnDrop
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:637,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - ' dnsQuestion'
    - ' ret'
    - ' eventTrace'
    argTypes:
    - DNSQuestion
    - int
    - RecEventTrace
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 639
      start: 629
    functionDepth: 1
    functionLinenumber: 629
    functionLinenumberEnd: 639
    functionName: RecursorLua4::prerpz
    functionSourceFile: /src/pdns/pdns/recursordist/lua-recursor4.cc
    functionUses: 0
    functionsReached:
    - warnDrop
    - add
    - RecursorLua4::genhook
    linkageType: ''
    returnType: bool
    signature: bool RecursorLua4::prerpz(DNSQuestion& dnsQuestion, int& ret, RecEventTrace&
      eventTrace) const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: add
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:646,1
    - Dst: RecursorLua4::genhook
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:647,1
    - Dst: add
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:648,1
    - Dst: warnDrop
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:649,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - ' dnsQuestion'
    - ' ret'
    - ' eventTrace'
    argTypes:
    - DNSQuestion
    - int
    - RecEventTrace
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 651
      start: 641
    functionDepth: 1
    functionLinenumber: 641
    functionLinenumberEnd: 651
    functionName: RecursorLua4::preresolve
    functionSourceFile: /src/pdns/pdns/recursordist/lua-recursor4.cc
    functionUses: 0
    functionsReached:
    - warnDrop
    - add
    - RecursorLua4::genhook
    linkageType: ''
    returnType: bool
    signature: bool RecursorLua4::preresolve(DNSQuestion& dnsQuestion, int& ret, RecEventTrace&
      eventTrace) const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: add
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:658,1
    - Dst: RecursorLua4::genhook
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:659,1
    - Dst: add
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:660,1
    - Dst: warnDrop
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:661,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - ' dnsQuestion'
    - ' ret'
    - ' eventTrace'
    argTypes:
    - DNSQuestion
    - int
    - RecEventTrace
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 663
      start: 653
    functionDepth: 1
    functionLinenumber: 653
    functionLinenumberEnd: 663
    functionName: RecursorLua4::nxdomain
    functionSourceFile: /src/pdns/pdns/recursordist/lua-recursor4.cc
    functionUses: 0
    functionsReached:
    - warnDrop
    - add
    - RecursorLua4::genhook
    linkageType: ''
    returnType: bool
    signature: bool RecursorLua4::nxdomain(DNSQuestion& dnsQuestion, int& ret, RecEventTrace&
      eventTrace) const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: add
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:670,1
    - Dst: RecursorLua4::genhook
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:671,1
    - Dst: add
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:672,1
    - Dst: warnDrop
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:673,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - ' dnsQuestion'
    - ' ret'
    - ' eventTrace'
    argTypes:
    - DNSQuestion
    - int
    - RecEventTrace
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 675
      start: 665
    functionDepth: 1
    functionLinenumber: 665
    functionLinenumberEnd: 675
    functionName: RecursorLua4::nodata
    functionSourceFile: /src/pdns/pdns/recursordist/lua-recursor4.cc
    functionUses: 0
    functionsReached:
    - warnDrop
    - add
    - RecursorLua4::genhook
    linkageType: ''
    returnType: bool
    signature: bool RecursorLua4::nodata(DNSQuestion& dnsQuestion, int& ret, RecEventTrace&
      eventTrace) const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: add
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:682,1
    - Dst: RecursorLua4::genhook
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:683,1
    - Dst: add
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:684,1
    - Dst: warnDrop
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:685,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - ' dnsQuestion'
    - ' ret'
    - ' eventTrace'
    argTypes:
    - DNSQuestion
    - int
    - RecEventTrace
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 687
      start: 677
    functionDepth: 1
    functionLinenumber: 677
    functionLinenumberEnd: 687
    functionName: RecursorLua4::postresolve
    functionSourceFile: /src/pdns/pdns/recursordist/lua-recursor4.cc
    functionUses: 0
    functionsReached:
    - warnDrop
    - add
    - RecursorLua4::genhook
    linkageType: ''
    returnType: bool
    signature: bool RecursorLua4::postresolve(DNSQuestion& dnsQuestion, int& ret,
      RecEventTrace& eventTrace) const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: getCode
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:698,1
    - Dst: add
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:700,1
    - Dst: RecursorLua4::genhook
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:701,1
    - Dst: add
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:702,1
    - Dst: warnDrop
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:703,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 9
    argNames:
    - ' nameserver'
    - ' requestor'
    - ' query'
    - ' qtype'
    - ' isTcp'
    - ' res'
    - ' ret'
    - ' eventTrace'
    - ' theTime'
    argTypes:
    - ComboAddress
    - ComboAddress
    - DNSName
    - QType
    - bool
    - vector<DNSRecord>
    - int
    - RecEventTrace
    - struct timeval
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 708
      start: 689
    functionDepth: 1
    functionLinenumber: 689
    functionLinenumberEnd: 708
    functionName: RecursorLua4::preoutquery
    functionSourceFile: /src/pdns/pdns/recursordist/lua-recursor4.cc
    functionUses: 0
    functionsReached:
    - warnDrop
    - add
    - RecursorLua4::genhook
    - getCode
    linkageType: ''
    returnType: bool
    signature: bool RecursorLua4::preoutquery(const ComboAddress& nameserver, const
      ComboAddress& requestor, const DNSName& query, const QType& qtype, bool& isTcp,
      vector<DNSRecord>& res, int& ret, RecEventTrace& eventTrace, const struct timeval&
      theTime) const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: add
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:715,1
    - Dst: d_ipfilter
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:716,1
    - Dst: add
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:717,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 4
    argNames:
    - ' remote'
    - ' local'
    - ' header'
    - ' eventTrace'
    argTypes:
    - ComboAddress
    - ComboAddress
    - struct dnsheader
    - RecEventTrace
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 719
      start: 710
    functionDepth: 0
    functionLinenumber: 710
    functionLinenumberEnd: 719
    functionName: RecursorLua4::ipfilter
    functionSourceFile: /src/pdns/pdns/recursordist/lua-recursor4.cc
    functionUses: 0
    functionsReached:
    - add
    - d_ipfilter
    linkageType: ''
    returnType: bool
    signature: bool RecursorLua4::ipfilter(const ComboAddress& remote, const ComboAddress&
      local, const struct dnsheader& header, RecEventTrace& eventTrace) const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: d_policyHitEventFilter
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:732,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 7
    argNames:
    - ' remote'
    - ' qname'
    - ' qtype'
    - tcp
    - ' policy'
    - ' tags'
    - ' discardedPolicies'
    argTypes:
    - ComboAddress
    - DNSName
    - QType
    - bool
    - DNSFilterEngine::Policy
    - std::unordered_set<std::string>
    - std::unordered_map<std::string, bool>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 733
      start: 721
    functionDepth: 0
    functionLinenumber: 721
    functionLinenumberEnd: 733
    functionName: RecursorLua4::policyHitEventFilter
    functionSourceFile: /src/pdns/pdns/recursordist/lua-recursor4.cc
    functionUses: 0
    functionsReached:
    - d_policyHitEventFilter
    linkageType: ''
    returnType: bool
    signature: bool RecursorLua4::policyHitEventFilter(const ComboAddress& remote,
      const DNSName& qname, const QType& qtype, bool tcp, DNSFilterEngine::Policy&
      policy, std::unordered_set<std::string>& tags, std::unordered_map<std::string,
      bool>& discardedPolicies) const
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: std::vector::reserve
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:740,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:740,1
    - Dst: std::vector::emplace_back
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:743,1
    - Dst: d_gettag
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:746,1
    - Dst: std::get<1>
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:749,1
    - Dst: std::unordered_set<std::string>*::reserve
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:751,1
    - Dst: std::unordered_set<std::string>*::size
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:751,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:751,1
    - Dst: std::unordered_set<std::string>*::insert
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:753,1
    - Dst: std::get<2>
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:757,1
    - Dst: std::get<3>
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:761,1
    - Dst: std::get<4>
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:765,1
    - Dst: std::get<5>
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:770,1
    - Dst: std::get<6>
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:775,1
    - Dst: std::get<0>
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:780,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 30
    argCount: 14
    argNames:
    - ' remote'
    - ' ednssubnet'
    - ' local'
    - ' qname'
    - qtype
    - policyTags
    - ' data'
    - ' ednsOptions'
    - tcp
    - ' requestorId'
    - ' deviceId'
    - ' deviceName'
    - ' routingTag'
    - ' proxyProtocolValues'
    argTypes:
    - ComboAddress
    - Netmask
    - ComboAddress
    - DNSName
    - uint16_t
    - std::unordered_set<std::string>*
    - LuaContext::LuaObject
    - EDNSOptionViewMap
    - bool
    - std::string
    - std::string
    - std::string
    - std::string
    - std::vector<ProxyProtocolValue>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 783
      start: 736
    functionDepth: 1
    functionLinenumber: 736
    functionLinenumberEnd: 783
    functionName: RecursorLua4::gettag
    functionSourceFile: /src/pdns/pdns/recursordist/lua-recursor4.cc
    functionUses: 0
    functionsReached:
    - std::unordered_set<std::string>*::reserve
    - std::get<4>
    - std::get<2>
    - d_gettag
    - std::get<5>
    - std::unordered_set<std::string>*::insert
    - std::get<6>
    - std::vector::emplace_back
    - std::get<1>
    - size
    - std::vector::reserve
    - std::get<0>
    - std::unordered_set<std::string>*::size
    - std::get<3>
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int RecursorLua4::gettag(const ComboAddress& remote, const
      Netmask& ednssubnet, const ComboAddress& local, const DNSName& qname, uint16_t
      qtype, std::unordered_set<std::string>* policyTags, LuaContext::LuaObject& data,
      const EDNSOptionViewMap& ednsOptions, bool tcp, std::string& requestorId, std::string&
      deviceId, std::string& deviceName, std::string& routingTag, const std::vector<ProxyProtocolValue>&
      proxyProtocolValues) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' params_'
    argTypes:
    - RecursorLua4::FFIParams
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 791
      start: 788
    functionDepth: 0
    functionLinenumber: 788
    functionLinenumberEnd: 791
    functionName: pdns_ffi_param
    functionSourceFile: /src/pdns/pdns/recursordist/lua-recursor4.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void pdns_ffi_param(RecursorLua4::FFIParams& params_)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: d_gettag_ffi
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:809,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - ' params'
    argTypes:
    - RecursorLua4::FFIParams
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 817
      start: 804
    functionDepth: 0
    functionLinenumber: 804
    functionLinenumberEnd: 817
    functionName: RecursorLua4::gettag_ffi
    functionSourceFile: /src/pdns/pdns/recursordist/lua-recursor4.cc
    functionUses: 0
    functionsReached:
    - d_gettag_ffi
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int RecursorLua4::gettag_ffi(RecursorLua4::FFIParams& params)
      const
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: records::clear
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:829,1
    - Dst: followupFunction::clear
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:832,1
    - Dst: followupPrefix::clear
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:833,1
    - Dst: followupName::clear
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:834,1
    - Dst: udpQuery::clear
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:835,1
    - Dst: udpAnswer::clear
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:836,1
    - Dst: udpCallback::clear
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:837,1
    - Dst: func
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:840,1
    - Dst: followupFunction::empty
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:849,1
    - Dst: followCNAMERecords
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:851,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:851,1
    - Dst: getFakeAAAARecords
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:854,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:854,1
    - Dst: getFakePTRRecords
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:857,1
    - Dst: GenUDPQueryResponse
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:860,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:861,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:861,1
    - Dst: PacketBuffer::data
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:861,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:861,1
    - Dst: readVariable
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:863,1
    - Dst: withName
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:865,1
    - Dst: cbFunc
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:868,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 49
    argCount: 3
    argNames:
    - ' func'
    - ' dnsQuestion'
    - ' ret'
    argTypes:
    - luacall_t
    - DNSQuestion
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 883
      start: 819
    functionDepth: 1
    functionLinenumber: 819
    functionLinenumberEnd: 883
    functionName: RecursorLua4::genhook
    functionSourceFile: /src/pdns/pdns/recursordist/lua-recursor4.cc
    functionUses: 6
    functionsReached:
    - followupName::clear
    - withName
    - getFakePTRRecords
    - PacketBuffer::size
    - getFakeAAAARecords
    - std::string
    - udpAnswer::clear
    - followCNAMERecords
    - QType
    - func
    - udpQuery::clear
    - records::clear
    - GenUDPQueryResponse
    - cbFunc
    - followupFunction::clear
    - reinterpret_cast<const char*>
    - ComboAddress
    - PacketBuffer::data
    - followupFunction::empty
    - udpCallback::clear
    - followupPrefix::clear
    - readVariable
    linkageType: ''
    returnType: bool
    signature: bool RecursorLua4::genhook(const luacall_t& func, DNSQuestion& dnsQuestion,
      int& ret) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 885
      start: 885
    functionDepth: 0
    functionLinenumber: 885
    functionLinenumberEnd: 885
    functionName: RecursorLua4::~RecursorLua4()
    functionSourceFile: /src/pdns/pdns/recursordist/lua-recursor4.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void RecursorLua4::~RecursorLua4()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::make_unique<std::string>
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:890,1
    - Dst: pdns_ffi_param_t*::params::qname::toStringNoDot
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:890,1
    - Dst: pdns_ffi_param_t*::qnameStr::c_str
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:893,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ref
    argTypes:
    - pdns_ffi_param_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 894
      start: 887
    functionDepth: 0
    functionLinenumber: 887
    functionLinenumberEnd: 894
    functionName: pdns_ffi_param_get_qname
    functionSourceFile: /src/pdns/pdns/recursordist/lua-recursor4.cc
    functionUses: 0
    functionsReached:
    - pdns_ffi_param_t*::params::qname::toStringNoDot
    - std::make_unique<std::string>
    - pdns_ffi_param_t*::qnameStr::c_str
    linkageType: ''
    returnType: char
    signature: char * pdns_ffi_param_get_qname(pdns_ffi_param_t* ref)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns_ffi_param_t*::params::qname::getStorage
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:898,1
    - Dst: data
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:899,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:900,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - ref
    - qname
    - qnameSize
    argTypes:
    - pdns_ffi_param_t*
    - char**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 901
      start: 896
    functionDepth: 0
    functionLinenumber: 896
    functionLinenumberEnd: 901
    functionName: pdns_ffi_param_get_qname_raw
    functionSourceFile: /src/pdns/pdns/recursordist/lua-recursor4.cc
    functionUses: 0
    functionsReached:
    - data
    - size
    - pdns_ffi_param_t*::params::qname::getStorage
    linkageType: ''
    returnType: void
    signature: void pdns_ffi_param_get_qname_raw(pdns_ffi_param_t* ref, const char**
      qname, size_t* qnameSize)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ref
    argTypes:
    - pdns_ffi_param_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 906
      start: 903
    functionDepth: 0
    functionLinenumber: 903
    functionLinenumberEnd: 906
    functionName: pdns_ffi_param_get_qtype
    functionSourceFile: /src/pdns/pdns/recursordist/lua-recursor4.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t pdns_ffi_param_get_qtype(const pdns_ffi_param_t* ref)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::make_unique<std::string>
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:911,1
    - Dst: pdns_ffi_param_t*::params::remote::toString
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:911,1
    - Dst: pdns_ffi_param_t*::remoteStr::c_str
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:914,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ref
    argTypes:
    - pdns_ffi_param_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 915
      start: 908
    functionDepth: 0
    functionLinenumber: 908
    functionLinenumberEnd: 915
    functionName: pdns_ffi_param_get_remote
    functionSourceFile: /src/pdns/pdns/recursordist/lua-recursor4.cc
    functionUses: 0
    functionsReached:
    - std::make_unique<std::string>
    - pdns_ffi_param_t*::params::remote::toString
    - pdns_ffi_param_t*::remoteStr::c_str
    linkageType: ''
    returnType: char
    signature: char * pdns_ffi_param_get_remote(pdns_ffi_param_t* ref)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: isIPv4
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:919,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 3
    argNames:
    - ' address'
    - addr
    - addrSize
    argTypes:
    - ComboAddress
    - void**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 927
      start: 917
    functionDepth: 0
    functionLinenumber: 917
    functionLinenumberEnd: 927
    functionName: pdns_ffi_comboaddress_to_raw
    functionSourceFile: /src/pdns/pdns/recursordist/lua-recursor4.cc
    functionUses: 0
    functionsReached:
    - isIPv4
    linkageType: ''
    returnType: void
    signature: void pdns_ffi_comboaddress_to_raw(const ComboAddress& address, const
      void** addr, size_t* addrSize)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns_ffi_comboaddress_to_raw
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:931,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ref
    - addr
    - addrSize
    argTypes:
    - pdns_ffi_param_t*
    - void**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 932
      start: 929
    functionDepth: 1
    functionLinenumber: 929
    functionLinenumberEnd: 932
    functionName: pdns_ffi_param_get_remote_raw
    functionSourceFile: /src/pdns/pdns/recursordist/lua-recursor4.cc
    functionUses: 0
    functionsReached:
    - pdns_ffi_comboaddress_to_raw
    linkageType: ''
    returnType: void
    signature: void pdns_ffi_param_get_remote_raw(pdns_ffi_param_t* ref, const void**
      addr, size_t* addrSize)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns_ffi_param_t*::params::remote::getPort
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:936,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ref
    argTypes:
    - pdns_ffi_param_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 937
      start: 934
    functionDepth: 0
    functionLinenumber: 934
    functionLinenumberEnd: 937
    functionName: pdns_ffi_param_get_remote_port
    functionSourceFile: /src/pdns/pdns/recursordist/lua-recursor4.cc
    functionUses: 0
    functionsReached:
    - pdns_ffi_param_t*::params::remote::getPort
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t pdns_ffi_param_get_remote_port(const pdns_ffi_param_t* ref)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::make_unique<std::string>
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:942,1
    - Dst: pdns_ffi_param_t*::params::local::toString
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:942,1
    - Dst: pdns_ffi_param_t*::localStr::c_str
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:945,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ref
    argTypes:
    - pdns_ffi_param_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 946
      start: 939
    functionDepth: 0
    functionLinenumber: 939
    functionLinenumberEnd: 946
    functionName: pdns_ffi_param_get_local
    functionSourceFile: /src/pdns/pdns/recursordist/lua-recursor4.cc
    functionUses: 0
    functionsReached:
    - pdns_ffi_param_t*::params::local::toString
    - std::make_unique<std::string>
    - pdns_ffi_param_t*::localStr::c_str
    linkageType: ''
    returnType: char
    signature: char * pdns_ffi_param_get_local(pdns_ffi_param_t* ref)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns_ffi_comboaddress_to_raw
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:950,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ref
    - addr
    - addrSize
    argTypes:
    - pdns_ffi_param_t*
    - void**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 951
      start: 948
    functionDepth: 1
    functionLinenumber: 948
    functionLinenumberEnd: 951
    functionName: pdns_ffi_param_get_local_raw
    functionSourceFile: /src/pdns/pdns/recursordist/lua-recursor4.cc
    functionUses: 0
    functionsReached:
    - pdns_ffi_comboaddress_to_raw
    linkageType: ''
    returnType: void
    signature: void pdns_ffi_param_get_local_raw(pdns_ffi_param_t* ref, const void**
      addr, size_t* addrSize)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns_ffi_param_t*::params::local::getPort
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:955,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ref
    argTypes:
    - pdns_ffi_param_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 956
      start: 953
    functionDepth: 0
    functionLinenumber: 953
    functionLinenumberEnd: 956
    functionName: pdns_ffi_param_get_local_port
    functionSourceFile: /src/pdns/pdns/recursordist/lua-recursor4.cc
    functionUses: 0
    functionsReached:
    - pdns_ffi_param_t*::params::local::getPort
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t pdns_ffi_param_get_local_port(const pdns_ffi_param_t* ref)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::make_unique<std::string>
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:961,1
    - Dst: pdns_ffi_param_t*::params::interface_remote::toString
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:961,1
    - Dst: pdns_ffi_param_t*::interfaceRemoteStr::c_str
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:964,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ref
    argTypes:
    - pdns_ffi_param_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 965
      start: 958
    functionDepth: 0
    functionLinenumber: 958
    functionLinenumberEnd: 965
    functionName: pdns_ffi_param_get_interface_remote
    functionSourceFile: /src/pdns/pdns/recursordist/lua-recursor4.cc
    functionUses: 0
    functionsReached:
    - std::make_unique<std::string>
    - pdns_ffi_param_t*::params::interface_remote::toString
    - pdns_ffi_param_t*::interfaceRemoteStr::c_str
    linkageType: ''
    returnType: char
    signature: char * pdns_ffi_param_get_interface_remote(pdns_ffi_param_t* ref)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns_ffi_comboaddress_to_raw
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:969,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ref
    - addr
    - addrSize
    argTypes:
    - pdns_ffi_param_t*
    - void**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 970
      start: 967
    functionDepth: 1
    functionLinenumber: 967
    functionLinenumberEnd: 970
    functionName: pdns_ffi_param_get_interface_remote_raw
    functionSourceFile: /src/pdns/pdns/recursordist/lua-recursor4.cc
    functionUses: 0
    functionsReached:
    - pdns_ffi_comboaddress_to_raw
    linkageType: ''
    returnType: void
    signature: void pdns_ffi_param_get_interface_remote_raw(pdns_ffi_param_t* ref,
      const void** addr, size_t* addrSize)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns_ffi_param_t*::params::interface_remote::getPort
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:974,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ref
    argTypes:
    - pdns_ffi_param_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 975
      start: 972
    functionDepth: 0
    functionLinenumber: 972
    functionLinenumberEnd: 975
    functionName: pdns_ffi_param_get_interface_remote_port
    functionSourceFile: /src/pdns/pdns/recursordist/lua-recursor4.cc
    functionUses: 0
    functionsReached:
    - pdns_ffi_param_t*::params::interface_remote::getPort
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t pdns_ffi_param_get_interface_remote_port(const pdns_ffi_param_t*
      ref)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::make_unique<std::string>
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:980,1
    - Dst: pdns_ffi_param_t*::params::interface_local::toString
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:980,1
    - Dst: pdns_ffi_param_t*::interfaceLocalStr::c_str
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:983,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ref
    argTypes:
    - pdns_ffi_param_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 984
      start: 977
    functionDepth: 0
    functionLinenumber: 977
    functionLinenumberEnd: 984
    functionName: pdns_ffi_param_get_interface_local
    functionSourceFile: /src/pdns/pdns/recursordist/lua-recursor4.cc
    functionUses: 0
    functionsReached:
    - std::make_unique<std::string>
    - pdns_ffi_param_t*::interfaceLocalStr::c_str
    - pdns_ffi_param_t*::params::interface_local::toString
    linkageType: ''
    returnType: char
    signature: char * pdns_ffi_param_get_interface_local(pdns_ffi_param_t* ref)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns_ffi_comboaddress_to_raw
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:988,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ref
    - addr
    - addrSize
    argTypes:
    - pdns_ffi_param_t*
    - void**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 989
      start: 986
    functionDepth: 1
    functionLinenumber: 986
    functionLinenumberEnd: 989
    functionName: pdns_ffi_param_get_interface_local_raw
    functionSourceFile: /src/pdns/pdns/recursordist/lua-recursor4.cc
    functionUses: 0
    functionsReached:
    - pdns_ffi_comboaddress_to_raw
    linkageType: ''
    returnType: void
    signature: void pdns_ffi_param_get_interface_local_raw(pdns_ffi_param_t* ref,
      const void** addr, size_t* addrSize)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns_ffi_param_t*::params::interface_local::getPort
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:993,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ref
    argTypes:
    - pdns_ffi_param_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 994
      start: 991
    functionDepth: 0
    functionLinenumber: 991
    functionLinenumberEnd: 994
    functionName: pdns_ffi_param_get_interface_local_port
    functionSourceFile: /src/pdns/pdns/recursordist/lua-recursor4.cc
    functionUses: 0
    functionsReached:
    - pdns_ffi_param_t*::params::interface_local::getPort
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t pdns_ffi_param_get_interface_local_port(const pdns_ffi_param_t*
      ref)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pdns_ffi_param_t*::params::ednssubnet::empty
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:998,1
    - Dst: std::make_unique<std::string>
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:1003,1
    - Dst: pdns_ffi_param_t*::params::ednssubnet::toStringNoMask
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:1003,1
    - Dst: pdns_ffi_param_t*::ednssubnetStr::c_str
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:1006,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - ref
    argTypes:
    - pdns_ffi_param_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1007
      start: 996
    functionDepth: 0
    functionLinenumber: 996
    functionLinenumberEnd: 1007
    functionName: pdns_ffi_param_get_edns_cs
    functionSourceFile: /src/pdns/pdns/recursordist/lua-recursor4.cc
    functionUses: 0
    functionsReached:
    - pdns_ffi_param_t*::params::ednssubnet::empty
    - pdns_ffi_param_t*::params::ednssubnet::toStringNoMask
    - std::make_unique<std::string>
    - pdns_ffi_param_t*::ednssubnetStr::c_str
    linkageType: ''
    returnType: char
    signature: char * pdns_ffi_param_get_edns_cs(pdns_ffi_param_t* ref)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pdns_ffi_param_t*::params::ednssubnet::empty
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:1011,1
    - Dst: pdns_ffi_comboaddress_to_raw
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:1017,1
    - Dst: pdns_ffi_param_t*::params::ednssubnet::getNetwork
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:1017,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - ref
    - net
    - netSize
    argTypes:
    - pdns_ffi_param_t*
    - void**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1018
      start: 1009
    functionDepth: 1
    functionLinenumber: 1009
    functionLinenumberEnd: 1018
    functionName: pdns_ffi_param_get_edns_cs_raw
    functionSourceFile: /src/pdns/pdns/recursordist/lua-recursor4.cc
    functionUses: 0
    functionsReached:
    - pdns_ffi_param_t*::params::ednssubnet::getNetwork
    - pdns_ffi_param_t*::params::ednssubnet::empty
    - pdns_ffi_comboaddress_to_raw
    linkageType: ''
    returnType: void
    signature: void pdns_ffi_param_get_edns_cs_raw(pdns_ffi_param_t* ref, const void**
      net, size_t* netSize)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns_ffi_param_t*::params::ednssubnet::getBits
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:1022,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ref
    argTypes:
    - pdns_ffi_param_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1023
      start: 1020
    functionDepth: 0
    functionLinenumber: 1020
    functionLinenumberEnd: 1023
    functionName: pdns_ffi_param_get_edns_cs_source_mask
    functionSourceFile: /src/pdns/pdns/recursordist/lua-recursor4.cc
    functionUses: 0
    functionsReached:
    - pdns_ffi_param_t*::params::ednssubnet::getBits
    linkageType: ''
    returnType: uint8_t
    signature: uint8_t pdns_ffi_param_get_edns_cs_source_mask(const pdns_ffi_param_t*
      ref)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - ' value'
    - ' option'
    argTypes:
    - EDNSOptionViewValue
    - pdns_ednsoption_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1033
      start: 1025
    functionDepth: 0
    functionLinenumber: 1025
    functionLinenumberEnd: 1033
    functionName: fill_edns_option
    functionSourceFile: /src/pdns/pdns/recursordist/lua-recursor4.cc
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void fill_edns_option(const EDNSOptionViewValue& value, pdns_ednsoption_t&
      option)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pdns_ffi_param_t*::params::ednsOptions::empty
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:1037,1
    - Dst: second::values::size
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:1043,1
    - Dst: pdns_ffi_param_t*::ednsOptionsVect::resize
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:1046,1
    - Dst: fill_edns_option
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:1051,1
    - Dst: pdns_ffi_param_t*::ednsOptionsVect::at
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:1051,1
    - Dst: pdns_ffi_param_t*::ednsOptionsVect::at
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:1052,1
    - Dst: pdns_ffi_param_t*::ednsOptionsVect::data
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:1057,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 2
    argNames:
    - ref
    - out
    argTypes:
    - pdns_ffi_param_t*
    - pdns_ednsoption_t**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1060
      start: 1035
    functionDepth: 1
    functionLinenumber: 1035
    functionLinenumberEnd: 1060
    functionName: pdns_ffi_param_get_edns_options
    functionSourceFile: /src/pdns/pdns/recursordist/lua-recursor4.cc
    functionUses: 0
    functionsReached:
    - second::values::size
    - pdns_ffi_param_t*::ednsOptionsVect::resize
    - pdns_ffi_param_t*::ednsOptionsVect::data
    - fill_edns_option
    - pdns_ffi_param_t*::params::ednsOptions::empty
    - pdns_ffi_param_t*::ednsOptionsVect::at
    linkageType: ''
    returnType: size_t
    signature: size_t pdns_ffi_param_get_edns_options(pdns_ffi_param_t* ref, const
      pdns_ednsoption_t** out)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pdns_ffi_param_t*::params::ednsOptions::find
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:1064,1
    - Dst: pdns_ffi_param_t*::params::ednsOptions::cend
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:1065,1
    - Dst: auto::second::values::empty
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:1065,1
    - Dst: pdns_ffi_param_t*::ednsOptionsVect::resize
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:1069,1
    - Dst: auto::second::values::size
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:1069,1
    - Dst: fill_edns_option
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:1073,1
    - Dst: pdns_ffi_param_t*::ednsOptionsVect::at
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:1073,1
    - Dst: pdns_ffi_param_t*::ednsOptionsVect::at
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:1074,1
    - Dst: pdns_ffi_param_t*::ednsOptionsVect::data
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:1078,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 3
    argNames:
    - ref
    - optionCode
    - out
    argTypes:
    - pdns_ffi_param_t*
    - uint16_t
    - pdns_ednsoption_t**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1081
      start: 1062
    functionDepth: 1
    functionLinenumber: 1062
    functionLinenumberEnd: 1081
    functionName: pdns_ffi_param_get_edns_options_by_code
    functionSourceFile: /src/pdns/pdns/recursordist/lua-recursor4.cc
    functionUses: 0
    functionsReached:
    - pdns_ffi_param_t*::ednsOptionsVect::resize
    - pdns_ffi_param_t*::ednsOptionsVect::data
    - fill_edns_option
    - pdns_ffi_param_t*::ednsOptionsVect::at
    - auto::second::values::empty
    - auto::second::values::size
    - pdns_ffi_param_t*::params::ednsOptions::cend
    - pdns_ffi_param_t*::params::ednsOptions::find
    linkageType: ''
    returnType: size_t
    signature: size_t pdns_ffi_param_get_edns_options_by_code(pdns_ffi_param_t* ref,
      uint16_t optionCode, const pdns_ednsoption_t** out)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pdns_ffi_param_t*::params::proxyProtocolValues::empty
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:1085,1
    - Dst: pdns_ffi_param_t*::proxyProtocolValuesVect::resize
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:1089,1
    - Dst: pdns_ffi_param_t*::params::proxyProtocolValues::size
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:1089,1
    - Dst: pdns_ffi_param_t*::proxyProtocolValuesVect::at
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:1093,1
    - Dst: content::size
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:1095,1
    - Dst: content::data
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:1097,1
    - Dst: pdns_ffi_param_t*::proxyProtocolValuesVect::data
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:1102,1
    - Dst: pdns_ffi_param_t*::proxyProtocolValuesVect::size
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:1104,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 2
    argNames:
    - ref
    - out
    argTypes:
    - pdns_ffi_param_t*
    - pdns_proxyprotocol_value_t**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1105
      start: 1083
    functionDepth: 1
    functionLinenumber: 1083
    functionLinenumberEnd: 1105
    functionName: pdns_ffi_param_get_proxy_protocol_values
    functionSourceFile: /src/pdns/pdns/recursordist/lua-recursor4.cc
    functionUses: 0
    functionsReached:
    - pdns_ffi_param_t*::proxyProtocolValuesVect::at
    - pdns_ffi_param_t*::proxyProtocolValuesVect::size
    - pdns_ffi_param_t*::proxyProtocolValuesVect::data
    - pdns_ffi_param_t*::params::proxyProtocolValues::empty
    - content::data
    - pdns_ffi_param_t*::params::proxyProtocolValues::size
    - pdns_ffi_param_t*::proxyProtocolValuesVect::resize
    - content::size
    linkageType: ''
    returnType: size_t
    signature: size_t pdns_ffi_param_get_proxy_protocol_values(pdns_ffi_param_t* ref,
      const pdns_proxyprotocol_value_t** out)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ref
    - tag
    argTypes:
    - pdns_ffi_param_t*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1110
      start: 1107
    functionDepth: 0
    functionLinenumber: 1107
    functionLinenumberEnd: 1110
    functionName: pdns_ffi_param_set_tag
    functionSourceFile: /src/pdns/pdns/recursordist/lua-recursor4.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void pdns_ffi_param_set_tag(pdns_ffi_param_t* ref, unsigned int tag)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns_ffi_param_t*::params::policyTags::insert
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:1114,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:1114,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ref
    - name
    argTypes:
    - pdns_ffi_param_t*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1115
      start: 1112
    functionDepth: 1
    functionLinenumber: 1112
    functionLinenumberEnd: 1115
    functionName: pdns_ffi_param_add_policytag
    functionSourceFile: /src/pdns/pdns/recursordist/lua-recursor4.cc
    functionUses: 0
    functionsReached:
    - std::string
    - pdns_ffi_param_t*::params::policyTags::insert
    linkageType: ''
    returnType: void
    signature: void pdns_ffi_param_add_policytag(pdns_ffi_param_t* ref, const char*
      name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:1119,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ref
    - name
    argTypes:
    - pdns_ffi_param_t*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1120
      start: 1117
    functionDepth: 0
    functionLinenumber: 1117
    functionLinenumberEnd: 1120
    functionName: pdns_ffi_param_set_requestorid
    functionSourceFile: /src/pdns/pdns/recursordist/lua-recursor4.cc
    functionUses: 0
    functionsReached:
    - std::string
    linkageType: ''
    returnType: void
    signature: void pdns_ffi_param_set_requestorid(pdns_ffi_param_t* ref, const char*
      name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:1124,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ref
    - name
    argTypes:
    - pdns_ffi_param_t*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1125
      start: 1122
    functionDepth: 0
    functionLinenumber: 1122
    functionLinenumberEnd: 1125
    functionName: pdns_ffi_param_set_devicename
    functionSourceFile: /src/pdns/pdns/recursordist/lua-recursor4.cc
    functionUses: 0
    functionsReached:
    - std::string
    linkageType: ''
    returnType: void
    signature: void pdns_ffi_param_set_devicename(pdns_ffi_param_t* ref, const char*
      name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:1129,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:1129,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ref
    - len
    - name
    argTypes:
    - pdns_ffi_param_t*
    - size_t
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1130
      start: 1127
    functionDepth: 0
    functionLinenumber: 1127
    functionLinenumberEnd: 1130
    functionName: pdns_ffi_param_set_deviceid
    functionSourceFile: /src/pdns/pdns/recursordist/lua-recursor4.cc
    functionUses: 0
    functionsReached:
    - std::string
    - reinterpret_cast<const char*>
    linkageType: ''
    returnType: void
    signature: void pdns_ffi_param_set_deviceid(pdns_ffi_param_t* ref, size_t len,
      const void* name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:1134,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ref
    - name
    argTypes:
    - pdns_ffi_param_t*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1135
      start: 1132
    functionDepth: 0
    functionLinenumber: 1132
    functionLinenumberEnd: 1135
    functionName: pdns_ffi_param_set_routingtag
    functionSourceFile: /src/pdns/pdns/recursordist/lua-recursor4.cc
    functionUses: 0
    functionsReached:
    - std::string
    linkageType: ''
    returnType: void
    signature: void pdns_ffi_param_set_routingtag(pdns_ffi_param_t* ref, const char*
      name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ref
    - variable
    argTypes:
    - pdns_ffi_param_t*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1140
      start: 1137
    functionDepth: 0
    functionLinenumber: 1137
    functionLinenumberEnd: 1140
    functionName: pdns_ffi_param_set_variable
    functionSourceFile: /src/pdns/pdns/recursordist/lua-recursor4.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void pdns_ffi_param_set_variable(pdns_ffi_param_t* ref, bool variable)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ref
    - ttl
    argTypes:
    - pdns_ffi_param_t*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1145
      start: 1142
    functionDepth: 0
    functionLinenumber: 1142
    functionLinenumberEnd: 1145
    functionName: pdns_ffi_param_set_ttl_cap
    functionSourceFile: /src/pdns/pdns/recursordist/lua-recursor4.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void pdns_ffi_param_set_ttl_cap(pdns_ffi_param_t* ref, uint32_t ttl)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ref
    - logQuery
    argTypes:
    - pdns_ffi_param_t*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1150
      start: 1147
    functionDepth: 0
    functionLinenumber: 1147
    functionLinenumberEnd: 1150
    functionName: pdns_ffi_param_set_log_query
    functionSourceFile: /src/pdns/pdns/recursordist/lua-recursor4.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void pdns_ffi_param_set_log_query(pdns_ffi_param_t* ref, bool logQuery)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ref
    - logResponse
    argTypes:
    - pdns_ffi_param_t*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1155
      start: 1152
    functionDepth: 0
    functionLinenumber: 1152
    functionLinenumberEnd: 1155
    functionName: pdns_ffi_param_set_log_response
    functionSourceFile: /src/pdns/pdns/recursordist/lua-recursor4.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void pdns_ffi_param_set_log_response(pdns_ffi_param_t* ref, bool logResponse)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ref
    - rcode
    argTypes:
    - pdns_ffi_param_t*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1160
      start: 1157
    functionDepth: 0
    functionLinenumber: 1157
    functionLinenumberEnd: 1160
    functionName: pdns_ffi_param_set_rcode
    functionSourceFile: /src/pdns/pdns/recursordist/lua-recursor4.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void pdns_ffi_param_set_rcode(pdns_ffi_param_t* ref, int rcode)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ref
    - follow
    argTypes:
    - pdns_ffi_param_t*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1165
      start: 1162
    functionDepth: 0
    functionLinenumber: 1162
    functionLinenumberEnd: 1165
    functionName: pdns_ffi_param_set_follow_cname_records
    functionSourceFile: /src/pdns/pdns/recursordist/lua-recursor4.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void pdns_ffi_param_set_follow_cname_records(pdns_ffi_param_t* ref,
      bool follow)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ref
    - code
    argTypes:
    - pdns_ffi_param_t*
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1170
      start: 1167
    functionDepth: 0
    functionLinenumber: 1167
    functionLinenumberEnd: 1170
    functionName: pdns_ffi_param_set_extended_error_code
    functionSourceFile: /src/pdns/pdns/recursordist/lua-recursor4.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void pdns_ffi_param_set_extended_error_code(pdns_ffi_param_t* ref,
      uint16_t code)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:1174,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ref
    - len
    - extra
    argTypes:
    - pdns_ffi_param_t*
    - size_t
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1175
      start: 1172
    functionDepth: 0
    functionLinenumber: 1172
    functionLinenumberEnd: 1175
    functionName: pdns_ffi_param_set_extended_error_extra
    functionSourceFile: /src/pdns/pdns/recursordist/lua-recursor4.cc
    functionUses: 0
    functionsReached:
    - std::string
    linkageType: ''
    returnType: void
    signature: void pdns_ffi_param_set_extended_error_extra(pdns_ffi_param_t* ref,
      size_t len, const char* extra)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSRecord::DNSRecord
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:1180,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:1181,1
    - Dst: toLowerInPlace
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:1185,1
    - Dst: DNSRecord::setContent
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:1186,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:1186,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:1186,1
    - Dst: pdns_ffi_param_t*::params::records::push_back
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:1187,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:1187,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:1192,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 7
    argNames:
    - ref
    - name
    - type
    - ttl
    - content
    - contentSize
    - place
    argTypes:
    - pdns_ffi_param_t*
    - char*
    - uint16_t
    - uint32_t
    - char*
    - size_t
    - pdns_record_place_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1195
      start: 1177
    functionDepth: 0
    functionLinenumber: 1177
    functionLinenumberEnd: 1195
    functionName: pdns_ffi_param_add_record
    functionSourceFile: /src/pdns/pdns/recursordist/lua-recursor4.cc
    functionUses: 0
    functionsReached:
    - pdns_ffi_param_t*::params::records::push_back
    - toLowerInPlace
    - std::move
    - DNSRecord::DNSRecord
    - what
    - DNSName
    - DNSRecordContent::make
    - DNSRecord::setContent
    - std::string
    linkageType: ''
    returnType: bool
    signature: bool pdns_ffi_param_add_record(pdns_ffi_param_t* ref, const char* name,
      uint16_t type, uint32_t ttl, const char* content, size_t contentSize, pdns_record_place_t
      place)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ref
    - disabled
    argTypes:
    - pdns_ffi_param_t*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1200
      start: 1197
    functionDepth: 0
    functionLinenumber: 1197
    functionLinenumberEnd: 1200
    functionName: pdns_ffi_param_set_padding_disabled
    functionSourceFile: /src/pdns/pdns/recursordist/lua-recursor4.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void pdns_ffi_param_set_padding_disabled(pdns_ffi_param_t* ref, bool
      disabled)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:1204,1
    - Dst: stringVal::insert
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:1204,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:1204,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ref
    - key
    - val
    argTypes:
    - pdns_ffi_param_t*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1205
      start: 1202
    functionDepth: 1
    functionLinenumber: 1202
    functionLinenumberEnd: 1205
    functionName: pdns_ffi_param_add_meta_single_string_kv
    functionSourceFile: /src/pdns/pdns/recursordist/lua-recursor4.cc
    functionUses: 0
    functionsReached:
    - std::string
    - stringVal::insert
    linkageType: ''
    returnType: void
    signature: void pdns_ffi_param_add_meta_single_string_kv(pdns_ffi_param_t* ref,
      const char* key, const char* val)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:1209,1
    - Dst: intVal::insert
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:1209,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ref
    - key
    - val
    argTypes:
    - pdns_ffi_param_t*
    - char*
    - int64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1210
      start: 1207
    functionDepth: 1
    functionLinenumber: 1207
    functionLinenumberEnd: 1210
    functionName: pdns_ffi_param_add_meta_single_int64_kv
    functionSourceFile: /src/pdns/pdns/recursordist/lua-recursor4.cc
    functionUses: 0
    functionsReached:
    - std::string
    - intVal::insert
    linkageType: ''
    returnType: void
    signature: void pdns_ffi_param_add_meta_single_int64_kv(pdns_ffi_param_t* ref,
      const char* key, int64_t val)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' arg'
    argTypes:
    - RecursorLua4::PostResolveFFIHandle
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1218
      start: 1215
    functionDepth: 0
    functionLinenumber: 1215
    functionLinenumberEnd: 1218
    functionName: pdns_postresolve_ffi_handle
    functionSourceFile: /src/pdns/pdns/recursordist/lua-recursor4.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void pdns_postresolve_ffi_handle(RecursorLua4::PostResolveFFIHandle&
      arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: insert
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:1222,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:1222,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - ' str'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1224
      start: 1220
    functionDepth: 1
    functionLinenumber: 1220
    functionLinenumberEnd: 1224
    functionName: insert
    functionSourceFile: /src/pdns/pdns/recursordist/lua-recursor4.cc
    functionUses: 380
    functionsReached:
    - std::move
    - insert
    linkageType: ''
    returnType: auto
    signature: auto insert(std::string&& str)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1229
      start: 1226
    functionDepth: 0
    functionLinenumber: 1226
    functionLinenumberEnd: 1229
    functionName: '& getHandle() const'
    functionSourceFile: /src/pdns/pdns/recursordist/lua-recursor4.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: RecursorLua4::PostResolveFFIHandle
    signature: RecursorLua4::PostResolveFFIHandle & getHandle() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: d_postresolve_ffi
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:1241,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ' arg'
    argTypes:
    - RecursorLua4::PostResolveFFIHandle
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1245
      start: 1236
    functionDepth: 0
    functionLinenumber: 1236
    functionLinenumberEnd: 1245
    functionName: RecursorLua4::postresolve_ffi
    functionSourceFile: /src/pdns/pdns/recursordist/lua-recursor4.cc
    functionUses: 0
    functionsReached:
    - d_postresolve_ffi
    linkageType: ''
    returnType: bool
    signature: bool RecursorLua4::postresolve_ffi(RecursorLua4::PostResolveFFIHandle&
      arg) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns_postresolve_ffi_handle_t*::insert
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:1249,1
    - Dst: pdns_postresolve_ffi_handle_t*::getHandle
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:1249,1
    - Dst: qname::toStringNoDot
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:1249,1
    - Dst: auto::c_str
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:1250,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ref
    argTypes:
    - pdns_postresolve_ffi_handle_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1251
      start: 1247
    functionDepth: 2
    functionLinenumber: 1247
    functionLinenumberEnd: 1251
    functionName: pdns_postresolve_ffi_handle_get_qname
    functionSourceFile: /src/pdns/pdns/recursordist/lua-recursor4.cc
    functionUses: 0
    functionsReached:
    - pdns_postresolve_ffi_handle_t*::insert
    - qname::toStringNoDot
    - pdns_postresolve_ffi_handle_t*::getHandle
    - auto::c_str
    linkageType: ''
    returnType: char
    signature: char * pdns_postresolve_ffi_handle_get_qname(pdns_postresolve_ffi_handle_t*
      ref)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns_postresolve_ffi_handle_t*::getHandle
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:1255,1
    - Dst: qname::getStorage
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:1255,1
    - Dst: data
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:1256,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:1257,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - ref
    - qname
    - qnameSize
    argTypes:
    - pdns_postresolve_ffi_handle_t*
    - char**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1258
      start: 1253
    functionDepth: 0
    functionLinenumber: 1253
    functionLinenumberEnd: 1258
    functionName: pdns_postresolve_ffi_handle_get_qname_raw
    functionSourceFile: /src/pdns/pdns/recursordist/lua-recursor4.cc
    functionUses: 0
    functionsReached:
    - size
    - pdns_postresolve_ffi_handle_t*::getHandle
    - qname::getStorage
    - data
    linkageType: ''
    returnType: void
    signature: void pdns_postresolve_ffi_handle_get_qname_raw(pdns_postresolve_ffi_handle_t*
      ref, const char** qname, size_t* qnameSize)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns_postresolve_ffi_handle_t*::getHandle
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:1262,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ref
    argTypes:
    - pdns_postresolve_ffi_handle_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1263
      start: 1260
    functionDepth: 0
    functionLinenumber: 1260
    functionLinenumberEnd: 1263
    functionName: pdns_postresolve_ffi_handle_get_qtype
    functionSourceFile: /src/pdns/pdns/recursordist/lua-recursor4.cc
    functionUses: 0
    functionsReached:
    - pdns_postresolve_ffi_handle_t*::getHandle
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t pdns_postresolve_ffi_handle_get_qtype(const pdns_postresolve_ffi_handle_t*
      ref)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns_postresolve_ffi_handle_t*::getHandle
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:1267,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ref
    argTypes:
    - pdns_postresolve_ffi_handle_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1268
      start: 1265
    functionDepth: 0
    functionLinenumber: 1265
    functionLinenumberEnd: 1268
    functionName: pdns_postresolve_ffi_handle_get_rcode
    functionSourceFile: /src/pdns/pdns/recursordist/lua-recursor4.cc
    functionUses: 0
    functionsReached:
    - pdns_postresolve_ffi_handle_t*::getHandle
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t pdns_postresolve_ffi_handle_get_rcode(const pdns_postresolve_ffi_handle_t*
      ref)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns_postresolve_ffi_handle_t*::getHandle
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:1272,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ref
    - rcode
    argTypes:
    - pdns_postresolve_ffi_handle_t*
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1273
      start: 1270
    functionDepth: 0
    functionLinenumber: 1270
    functionLinenumberEnd: 1273
    functionName: pdns_postresolve_ffi_handle_set_rcode
    functionSourceFile: /src/pdns/pdns/recursordist/lua-recursor4.cc
    functionUses: 0
    functionsReached:
    - pdns_postresolve_ffi_handle_t*::getHandle
    linkageType: ''
    returnType: void
    signature: void pdns_postresolve_ffi_handle_set_rcode(const pdns_postresolve_ffi_handle_t*
      ref, uint16_t rcode)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<pdns_policy_kind_t>
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:1277,1
    - Dst: pdns_postresolve_ffi_handle_t*::getHandle
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:1277,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ref
    argTypes:
    - pdns_postresolve_ffi_handle_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1278
      start: 1275
    functionDepth: 0
    functionLinenumber: 1275
    functionLinenumberEnd: 1278
    functionName: pdns_postresolve_ffi_handle_get_appliedpolicy_kind
    functionSourceFile: /src/pdns/pdns/recursordist/lua-recursor4.cc
    functionUses: 0
    functionsReached:
    - static_cast<pdns_policy_kind_t>
    - pdns_postresolve_ffi_handle_t*::getHandle
    linkageType: ''
    returnType: pdns_policy_kind_t
    signature: pdns_policy_kind_t pdns_postresolve_ffi_handle_get_appliedpolicy_kind(const
      pdns_postresolve_ffi_handle_t* ref)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns_postresolve_ffi_handle_t*::getHandle
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:1282,1
    - Dst: static_cast<DNSFilterEngine::PolicyKind>
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:1282,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ref
    - kind
    argTypes:
    - pdns_postresolve_ffi_handle_t*
    - pdns_policy_kind_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1283
      start: 1280
    functionDepth: 0
    functionLinenumber: 1280
    functionLinenumberEnd: 1283
    functionName: pdns_postresolve_ffi_handle_set_appliedpolicy_kind
    functionSourceFile: /src/pdns/pdns/recursordist/lua-recursor4.cc
    functionUses: 0
    functionsReached:
    - pdns_postresolve_ffi_handle_t*::getHandle
    - static_cast<DNSFilterEngine::PolicyKind>
    linkageType: ''
    returnType: void
    signature: void pdns_postresolve_ffi_handle_set_appliedpolicy_kind(pdns_postresolve_ffi_handle_t*
      ref, pdns_policy_kind_t kind)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: pdns_postresolve_ffi_handle_t*::getHandle
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:1287,1
    - Dst: currentRecords::size
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:1287,1
    - Dst: pdns_postresolve_ffi_handle_t*::getHandle
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:1291,1
    - Dst: currentRecords::at
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:1291,1
    - Dst: d_name::getStorage
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:1293,1
    - Dst: data
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:1294,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:1295,1
    - Dst: d_name::toStringNoDot
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:1298,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:1299,1
    - Dst: pdns_postresolve_ffi_handle_t*::insert
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:1300,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:1300,1
    - Dst: pdns_postresolve_ffi_handle_t*::insert
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:1303,1
    - Dst: getContent
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:1303,1
    - Dst: auto::data
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:1304,1
    - Dst: auto::size
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:1305,1
    - Dst: pdns_postresolve_ffi_handle_t*::insert
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:1308,1
    - Dst: getContent
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:1308,1
    - Dst: auto::data
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:1309,1
    - Dst: auto::size
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:1310,1
    - Dst: static_cast<pdns_record_place_t>
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:1313,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:1317,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 27
    argCount: 4
    argNames:
    - ref
    - index
    - record
    - raw
    argTypes:
    - pdns_postresolve_ffi_handle_t*
    - unsigned int
    - pdns_ffi_record_t*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1322
      start: 1285
    functionDepth: 2
    functionLinenumber: 1285
    functionLinenumberEnd: 1322
    functionName: pdns_postresolve_ffi_handle_get_record
    functionSourceFile: /src/pdns/pdns/recursordist/lua-recursor4.cc
    functionUses: 0
    functionsReached:
    - std::move
    - d_name::toStringNoDot
    - pdns_postresolve_ffi_handle_t*::insert
    - what
    - static_cast<pdns_record_place_t>
    - pdns_postresolve_ffi_handle_t*::getHandle
    - size
    - getContent
    - auto::data
    - d_name::getStorage
    - currentRecords::at
    - currentRecords::size
    - data
    - std::string::size
    - auto::size
    linkageType: ''
    returnType: bool
    signature: bool pdns_postresolve_ffi_handle_get_record(pdns_postresolve_ffi_handle_t*
      ref, unsigned int index, pdns_ffi_record_t* record, bool raw)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pdns_postresolve_ffi_handle_t*::getHandle
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:1326,1
    - Dst: currentRecords::size
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:1326,1
    - Dst: pdns_postresolve_ffi_handle_t*::getHandle
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:1330,1
    - Dst: currentRecords::at
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:1330,1
    - Dst: setContent
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:1332,1
    - Dst: DNSRecordContent::deserialize
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:1332,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:1332,1
    - Dst: setContent
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:1335,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:1335,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:1335,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:1341,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 5
    argNames:
    - ref
    - index
    - content
    - contentLen
    - raw
    argTypes:
    - pdns_postresolve_ffi_handle_t*
    - unsigned int
    - char*
    - size_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1344
      start: 1324
    functionDepth: 0
    functionLinenumber: 1324
    functionLinenumberEnd: 1344
    functionName: pdns_postresolve_ffi_handle_set_record
    functionSourceFile: /src/pdns/pdns/recursordist/lua-recursor4.cc
    functionUses: 0
    functionsReached:
    - setContent
    - what
    - string
    - pdns_postresolve_ffi_handle_t*::getHandle
    - currentRecords::at
    - currentRecords::size
    - DNSRecordContent::make
    - DNSRecordContent::deserialize
    linkageType: ''
    returnType: bool
    signature: bool pdns_postresolve_ffi_handle_set_record(pdns_postresolve_ffi_handle_t*
      ref, unsigned int index, const char* content, size_t contentLen, bool raw)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns_postresolve_ffi_handle_t*::getHandle
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:1348,1
    - Dst: currentRecords::clear
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:1348,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ref
    argTypes:
    - pdns_postresolve_ffi_handle_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1349
      start: 1346
    functionDepth: 1
    functionLinenumber: 1346
    functionLinenumberEnd: 1349
    functionName: pdns_postresolve_ffi_handle_clear_records
    functionSourceFile: /src/pdns/pdns/recursordist/lua-recursor4.cc
    functionUses: 0
    functionsReached:
    - currentRecords::clear
    - pdns_postresolve_ffi_handle_t*::getHandle
    linkageType: ''
    returnType: void
    signature: void pdns_postresolve_ffi_handle_clear_records(pdns_postresolve_ffi_handle_t*
      ref)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DNSRecord::DNSRecord
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:1354,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:1355,1
    - Dst: pdns_postresolve_ffi_handle_t*::getHandle
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:1355,1
    - Dst: toLowerInPlace
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:1359,1
    - Dst: DNSRecord::setContent
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:1361,1
    - Dst: DNSRecordContent::deserialize
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:1361,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:1361,1
    - Dst: DNSRecord::setContent
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:1364,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:1364,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:1364,1
    - Dst: pdns_postresolve_ffi_handle_t*::getHandle
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:1366,1
    - Dst: currentRecords::push_back
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:1366,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:1366,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:1371,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 18
    argCount: 8
    argNames:
    - ref
    - name
    - type
    - ttl
    - content
    - contentLen
    - place
    - raw
    argTypes:
    - pdns_postresolve_ffi_handle_t*
    - char*
    - uint16_t
    - uint32_t
    - char*
    - size_t
    - pdns_record_place_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1374
      start: 1351
    functionDepth: 0
    functionLinenumber: 1351
    functionLinenumberEnd: 1374
    functionName: pdns_postresolve_ffi_handle_add_record
    functionSourceFile: /src/pdns/pdns/recursordist/lua-recursor4.cc
    functionUses: 0
    functionsReached:
    - toLowerInPlace
    - std::move
    - DNSRecord::DNSRecord
    - what
    - string
    - pdns_postresolve_ffi_handle_t*::getHandle
    - DNSName
    - DNSRecordContent::make
    - DNSRecord::setContent
    - currentRecords::push_back
    - DNSRecordContent::deserialize
    linkageType: ''
    returnType: bool
    signature: bool pdns_postresolve_ffi_handle_add_record(pdns_postresolve_ffi_handle_t*
      ref, const char* name, uint16_t type, uint32_t ttl, const char* content, size_t
      contentLen, pdns_record_place_t place, bool raw)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns_postresolve_ffi_handle_t*::insert
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:1378,1
    - Dst: pdns_postresolve_ffi_handle_t*::getHandle
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:1378,1
    - Dst: fromAuthIP::toString
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:1378,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ref
    argTypes:
    - pdns_postresolve_ffi_handle_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1379
      start: 1376
    functionDepth: 2
    functionLinenumber: 1376
    functionLinenumberEnd: 1379
    functionName: pdns_postresolve_ffi_handle_get_authip
    functionSourceFile: /src/pdns/pdns/recursordist/lua-recursor4.cc
    functionUses: 0
    functionsReached:
    - pdns_postresolve_ffi_handle_t*::insert
    - fromAuthIP::toString
    - pdns_postresolve_ffi_handle_t*::getHandle
    linkageType: ''
    returnType: char
    signature: char * pdns_postresolve_ffi_handle_get_authip(pdns_postresolve_ffi_handle_t*
      ref)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns_ffi_comboaddress_to_raw
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:1383,1
    - Dst: pdns_postresolve_ffi_handle_t*::getHandle
      Src: /src/pdns/pdns/recursordist/lua-recursor4.cc:1383,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ref
    - addr
    - addrSize
    argTypes:
    - pdns_postresolve_ffi_handle_t*
    - void**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1384
      start: 1381
    functionDepth: 1
    functionLinenumber: 1381
    functionLinenumberEnd: 1384
    functionName: pdns_postresolve_ffi_handle_get_authip_raw
    functionSourceFile: /src/pdns/pdns/recursordist/lua-recursor4.cc
    functionUses: 0
    functionsReached:
    - pdns_ffi_comboaddress_to_raw
    - pdns_postresolve_ffi_handle_t*::getHandle
    linkageType: ''
    returnType: void
    signature: void pdns_postresolve_ffi_handle_get_authip_raw(pdns_postresolve_ffi_handle_t*
      ref, const void** addr, size_t* addrSize)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: arc4random_uniform
      Src: /src/pdns/pdns/recursordist/dns_random.hh:31,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - upper_bound
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 32
      start: 29
    functionDepth: 0
    functionLinenumber: 29
    functionLinenumberEnd: 32
    functionName: dns_random
    functionSourceFile: /src/pdns/pdns/recursordist/dns_random.hh
    functionUses: 35
    functionsReached:
    - arc4random_uniform
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t dns_random(uint32_t upper_bound)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: arc4random
      Src: /src/pdns/pdns/recursordist/dns_random.hh:36,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 34
    functionDepth: 0
    functionLinenumber: 34
    functionLinenumberEnd: 37
    functionName: dns_random_uint32
    functionSourceFile: /src/pdns/pdns/recursordist/dns_random.hh
    functionUses: 19
    functionsReached:
    - arc4random
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t dns_random_uint32()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: arc4random
      Src: /src/pdns/pdns/recursordist/dns_random.hh:41,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 39
    functionDepth: 0
    functionLinenumber: 39
    functionLinenumberEnd: 42
    functionName: dns_random_uint16
    functionSourceFile: /src/pdns/pdns/recursordist/dns_random.hh
    functionUses: 16
    functionsReached:
    - arc4random
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t dns_random_uint16()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: arc4random_buf
      Src: /src/pdns/pdns/recursordist/dns_random.hh:46,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - buf
    - size
    argTypes:
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 44
    functionDepth: 0
    functionLinenumber: 44
    functionLinenumberEnd: 47
    functionName: dns_random
    functionSourceFile: /src/pdns/pdns/recursordist/dns_random.hh
    functionUses: 35
    functionsReached:
    - arc4random_buf
    linkageType: ''
    returnType: void
    signature: void dns_random(void* buf, size_t size)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 56
    functionDepth: 0
    functionLinenumber: 56
    functionLinenumberEnd: 59
    functionName: pdns::min
    functionSourceFile: /src/pdns/pdns/recursordist/dns_random.hh
    functionUses: 10
    functionsReached: []
    linkageType: ''
    returnType: result_type
    signature: result_type min()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::max
      Src: /src/pdns/pdns/recursordist/dns_random.hh:63,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 61
    functionDepth: 0
    functionLinenumber: 61
    functionLinenumberEnd: 64
    functionName: pdns::max
    functionSourceFile: /src/pdns/pdns/recursordist/dns_random.hh
    functionUses: 136
    functionsReached:
    - pdns::max
    linkageType: ''
    returnType: result_type
    signature: result_type max()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dns_random_uint32
      Src: /src/pdns/pdns/recursordist/dns_random.hh:68,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 66
    functionDepth: 0
    functionLinenumber: 66
    functionLinenumberEnd: 69
    functionName: operator()()
    functionSourceFile: /src/pdns/pdns/recursordist/dns_random.hh
    functionUses: 0
    functionsReached:
    - dns_random_uint32
    linkageType: ''
    returnType: result_type
    signature: result_type operator()()
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - upper_bound
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 73
    functionDepth: 0
    functionLinenumber: 73
    functionLinenumberEnd: 96
    functionName: pdns::random_minimum_acceptable_value
    functionSourceFile: /src/pdns/pdns/recursordist/dns_random.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int random_minimum_acceptable_value(uint32_t upper_bound)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 56
    functionDepth: 0
    functionLinenumber: 56
    functionLinenumberEnd: 59
    functionName: pdns::min
    functionSourceFile: /src/pdns/pdns/recursordist/dns_random.hh
    functionUses: 10
    functionsReached: []
    linkageType: ''
    returnType: result_type
    signature: result_type min()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::max
      Src: /src/pdns/pdns/recursordist/dns_random.hh:63,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 61
    functionDepth: 0
    functionLinenumber: 61
    functionLinenumberEnd: 64
    functionName: pdns::max
    functionSourceFile: /src/pdns/pdns/recursordist/dns_random.hh
    functionUses: 137
    functionsReached:
    - pdns::max
    linkageType: ''
    returnType: result_type
    signature: result_type max()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dns_random_uint32
      Src: /src/pdns/pdns/recursordist/dns_random.hh:68,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 66
    functionDepth: 0
    functionLinenumber: 66
    functionLinenumberEnd: 69
    functionName: operator()()
    functionSourceFile: /src/pdns/pdns/recursordist/dns_random.hh
    functionUses: 0
    functionsReached:
    - dns_random_uint32
    linkageType: ''
    returnType: result_type
    signature: result_type operator()()
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - upper_bound
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 73
    functionDepth: 0
    functionLinenumber: 73
    functionLinenumberEnd: 96
    functionName: pdns::random_minimum_acceptable_value
    functionSourceFile: /src/pdns/pdns/recursordist/dns_random.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int random_minimum_acceptable_value(uint32_t upper_bound)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: taskQueueClear
      Src: /src/pdns/pdns/recursordist/test-rec-taskqueue.cc:19,1
    - Dst: pushAlmostExpiredTask
      Src: /src/pdns/pdns/recursordist/test-rec-taskqueue.cc:20,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-rec-taskqueue.cc:20,1
    - Dst: Netmask
      Src: /src/pdns/pdns/recursordist/test-rec-taskqueue.cc:20,1
    - Dst: pushAlmostExpiredTask
      Src: /src/pdns/pdns/recursordist/test-rec-taskqueue.cc:21,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-rec-taskqueue.cc:21,1
    - Dst: Netmask
      Src: /src/pdns/pdns/recursordist/test-rec-taskqueue.cc:21,1
    - Dst: pushAlmostExpiredTask
      Src: /src/pdns/pdns/recursordist/test-rec-taskqueue.cc:22,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-rec-taskqueue.cc:22,1
    - Dst: Netmask
      Src: /src/pdns/pdns/recursordist/test-rec-taskqueue.cc:22,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-rec-taskqueue.cc:24,1
    - Dst: getTaskSize
      Src: /src/pdns/pdns/recursordist/test-rec-taskqueue.cc:24,1
    - Dst: taskQueuePop
      Src: /src/pdns/pdns/recursordist/test-rec-taskqueue.cc:25,1
    - Dst: taskQueuePop
      Src: /src/pdns/pdns/recursordist/test-rec-taskqueue.cc:26,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-rec-taskqueue.cc:27,1
    - Dst: getTaskSize
      Src: /src/pdns/pdns/recursordist/test-rec-taskqueue.cc:27,1
    - Dst: pushAlmostExpiredTask
      Src: /src/pdns/pdns/recursordist/test-rec-taskqueue.cc:29,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-rec-taskqueue.cc:29,1
    - Dst: Netmask
      Src: /src/pdns/pdns/recursordist/test-rec-taskqueue.cc:29,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-rec-taskqueue.cc:30,1
    - Dst: getTaskSize
      Src: /src/pdns/pdns/recursordist/test-rec-taskqueue.cc:30,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 31
      start: 17
    functionDepth: 1
    functionLinenumber: 17
    functionLinenumberEnd: 31
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-rec-taskqueue.cc
    functionUses: 0
    functionsReached:
    - Netmask
    - getTaskSize
    - BOOST_CHECK_EQUAL
    - DNSName
    - pushAlmostExpiredTask
    - taskQueuePop
    - taskQueueClear
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_almostexpired_queue_no_dups)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: taskQueueClear
      Src: /src/pdns/pdns/recursordist/test-rec-taskqueue.cc:35,1
    - Dst: pushResolveTask
      Src: /src/pdns/pdns/recursordist/test-rec-taskqueue.cc:36,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-rec-taskqueue.cc:36,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-rec-taskqueue.cc:37,1
    - Dst: getTaskSize
      Src: /src/pdns/pdns/recursordist/test-rec-taskqueue.cc:37,1
    - Dst: taskQueuePop
      Src: /src/pdns/pdns/recursordist/test-rec-taskqueue.cc:38,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-rec-taskqueue.cc:39,1
    - Dst: getTaskSize
      Src: /src/pdns/pdns/recursordist/test-rec-taskqueue.cc:39,1
    - Dst: pushResolveTask
      Src: /src/pdns/pdns/recursordist/test-rec-taskqueue.cc:42,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-rec-taskqueue.cc:42,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-rec-taskqueue.cc:43,1
    - Dst: getTaskSize
      Src: /src/pdns/pdns/recursordist/test-rec-taskqueue.cc:43,1
    - Dst: pushResolveTask
      Src: /src/pdns/pdns/recursordist/test-rec-taskqueue.cc:46,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-rec-taskqueue.cc:46,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-rec-taskqueue.cc:47,1
    - Dst: getTaskSize
      Src: /src/pdns/pdns/recursordist/test-rec-taskqueue.cc:47,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 33
    functionDepth: 1
    functionLinenumber: 33
    functionLinenumberEnd: 48
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-rec-taskqueue.cc
    functionUses: 0
    functionsReached:
    - pushResolveTask
    - getTaskSize
    - BOOST_CHECK_EQUAL
    - DNSName
    - taskQueuePop
    - taskQueueClear
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_resolve_queue_rate_limit)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:30,1
    - Dst: RecursorPacketCache::size
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:30,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:35,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:36,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:37,1
    - Dst: dns_random_uint16
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:37,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:38,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:39,1
    - Dst: time
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:41,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:42,1
    - Dst: RecursorPacketCache::getResponsePacket
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:42,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:43,1
    - Dst: RecursorPacketCache::getResponsePacket
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:43,1
    - Dst: ARecordContent::toPacket
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:46,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:47,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:48,1
    - Dst: RecursorPacketCache::insertResponsePacket
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:50,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:50,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:50,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:51,1
    - Dst: RecursorPacketCache::size
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:51,1
    - Dst: RecursorPacketCache::doPruneTo
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:52,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:53,1
    - Dst: RecursorPacketCache::size
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:53,1
    - Dst: RecursorPacketCache::insertResponsePacket
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:54,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:54,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:54,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:55,1
    - Dst: RecursorPacketCache::size
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:55,1
    - Dst: RecursorPacketCache::doWipePacketCache
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:56,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:57,1
    - Dst: RecursorPacketCache::size
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:57,1
    - Dst: RecursorPacketCache::insertResponsePacket
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:59,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:59,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:59,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:60,1
    - Dst: RecursorPacketCache::size
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:60,1
    - Dst: RecursorPacketCache::getResponsePacket
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:62,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:63,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:64,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:65,1
    - Dst: RecursorPacketCache::getResponsePacket
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:66,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:67,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:68,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:69,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:71,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:72,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:75,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:76,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:77,1
    - Dst: dns_random_uint16
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:77,1
    - Dst: string::assign
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:78,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:78,1
    - Dst: RecursorPacketCache::getResponsePacket
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:80,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:81,1
    - Dst: RecursorPacketCache::getResponsePacket
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:82,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:83,1
    - Dst: RecursorPacketCache::doWipePacketCache
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:85,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:85,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:86,1
    - Dst: RecursorPacketCache::size
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:86,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 39
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 22
    functionDepth: 2
    functionLinenumber: 22
    functionLinenumberEnd: 87
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc
    functionUses: 0
    functionsReached:
    - string::assign
    - RecursorPacketCache::size
    - DNSPacketWriter::commit
    - time
    - RecursorPacketCache::getResponsePacket
    - ARecordContent::toPacket
    - dns_random_uint16
    - string
    - DNSPacketWriter::getHeader
    - BOOST_CHECK_EQUAL
    - RecursorPacketCache::doPruneTo
    - RecursorPacketCache::insertResponsePacket
    - RecursorPacketCache::doWipePacketCache
    - DNSName
    - vector::size
    - vector::clear
    - DNSPacketWriter::startRecord
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_recPacketCacheSimple)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:98,1
    - Dst: RecursorPacketCache::size
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:98,1
    - Dst: taskQueueClear
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:100,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:105,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:106,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:107,1
    - Dst: dns_random_uint16
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:107,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:108,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:109,1
    - Dst: time
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:111,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:113,1
    - Dst: RecursorPacketCache::getResponsePacket
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:113,1
    - Dst: ARecordContent::toPacket
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:116,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:117,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:118,1
    - Dst: RecursorPacketCache::insertResponsePacket
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:120,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:120,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:120,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:121,1
    - Dst: RecursorPacketCache::size
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:121,1
    - Dst: RecursorPacketCache::getResponsePacket
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:123,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:124,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:125,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:126,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:128,1
    - Dst: getTaskSize
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:128,1
    - Dst: RecursorPacketCache::getResponsePacket
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:132,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:133,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:134,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:135,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:137,1
    - Dst: getTaskSize
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:137,1
    - Dst: RecursorPacketCache::getResponsePacket
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:141,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:142,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:143,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:144,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:146,1
    - Dst: getTaskSize
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:146,1
    - Dst: taskQueuePop
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:147,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:148,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 30
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 149
      start: 89
    functionDepth: 2
    functionLinenumber: 89
    functionLinenumberEnd: 149
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc
    functionUses: 0
    functionsReached:
    - RecursorPacketCache::size
    - DNSPacketWriter::commit
    - time
    - RecursorPacketCache::getResponsePacket
    - ARecordContent::toPacket
    - dns_random_uint16
    - string
    - DNSPacketWriter::getHeader
    - BOOST_CHECK_EQUAL
    - getTaskSize
    - RecursorPacketCache::insertResponsePacket
    - taskQueuePop
    - vector::size
    - taskQueueClear
    - DNSPacketWriter::startRecord
    - BOOST_REQUIRE_EQUAL
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_recPacketCacheSimpleWithRefresh)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:159,1
    - Dst: RecursorPacketCache::size
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:159,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:164,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:165,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:166,1
    - Dst: dns_random_uint16
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:166,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:167,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:168,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:172,1
    - Dst: RecursorPacketCache::getResponsePacket
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:172,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:173,1
    - Dst: RecursorPacketCache::getResponsePacket
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:173,1
    - Dst: ARecordContent::toPacket
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:176,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:177,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:178,1
    - Dst: RecursorPacketCache::insertResponsePacket
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:180,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:180,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:180,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:181,1
    - Dst: RecursorPacketCache::size
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:181,1
    - Dst: RecursorPacketCache::doPruneTo
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:182,1
    - Dst: time
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:182,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:183,1
    - Dst: RecursorPacketCache::size
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:183,1
    - Dst: RecursorPacketCache::insertResponsePacket
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:184,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:184,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:184,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:185,1
    - Dst: RecursorPacketCache::size
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:185,1
    - Dst: RecursorPacketCache::doWipePacketCache
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:187,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:188,1
    - Dst: RecursorPacketCache::size
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:188,1
    - Dst: RecursorPacketCache::insertResponsePacket
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:190,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:190,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:190,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:191,1
    - Dst: RecursorPacketCache::size
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:191,1
    - Dst: RecursorPacketCache::getResponsePacket
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:193,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:194,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:195,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:196,1
    - Dst: RecursorPacketCache::getResponsePacket
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:197,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:198,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:199,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:200,1
    - Dst: RecursorPacketCache::getResponsePacket
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:202,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:203,1
    - Dst: RecursorPacketCache::getResponsePacket
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:204,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:205,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:207,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:208,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:211,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:212,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:213,1
    - Dst: dns_random_uint16
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:213,1
    - Dst: string::assign
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:214,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:214,1
    - Dst: RecursorPacketCache::getResponsePacket
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:216,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:217,1
    - Dst: RecursorPacketCache::getResponsePacket
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:218,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:219,1
    - Dst: RecursorPacketCache::doWipePacketCache
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:221,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:221,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:222,1
    - Dst: RecursorPacketCache::size
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:222,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 43
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 223
      start: 151
    functionDepth: 2
    functionLinenumber: 151
    functionLinenumberEnd: 223
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc
    functionUses: 0
    functionsReached:
    - string::assign
    - RecursorPacketCache::size
    - DNSPacketWriter::commit
    - RecursorPacketCache::getResponsePacket
    - time
    - ARecordContent::toPacket
    - dns_random_uint16
    - string
    - DNSPacketWriter::getHeader
    - BOOST_CHECK_EQUAL
    - RecursorPacketCache::doPruneTo
    - RecursorPacketCache::insertResponsePacket
    - RecursorPacketCache::doWipePacketCache
    - DNSName
    - vector::size
    - vector::clear
    - DNSPacketWriter::startRecord
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_recPacketCacheSimplePost2038)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:240,1
    - Dst: RecursorPacketCache::size
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:240,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:245,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:246,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:247,1
    - Dst: dns_random_uint16
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:247,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:248,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:248,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:249,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:252,1
    - Dst: RecursorPacketCache::getResponsePacket
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:252,1
    - Dst: time
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:252,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:253,1
    - Dst: RecursorPacketCache::getResponsePacket
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:253,1
    - Dst: time
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:253,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:254,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:257,1
    - Dst: RecursorPacketCache::getResponsePacket
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:257,1
    - Dst: time
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:257,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:258,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:259,1
    - Dst: RecursorPacketCache::getResponsePacket
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:259,1
    - Dst: time
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:259,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:260,1
    - Dst: ARecordContent::toPacket
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:264,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:265,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:267,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:267,1
    - Dst: ARecordContent::toPacket
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:271,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:272,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:274,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:274,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:276,1
    - Dst: RecursorPacketCache::insertResponsePacket
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:279,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:279,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:279,1
    - Dst: time
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:279,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:280,1
    - Dst: RecursorPacketCache::size
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:280,1
    - Dst: RecursorPacketCache::insertResponsePacket
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:283,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:283,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:283,1
    - Dst: time
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:283,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:284,1
    - Dst: RecursorPacketCache::size
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:284,1
    - Dst: RecursorPacketCache::doPruneTo
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:287,1
    - Dst: time
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:287,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:288,1
    - Dst: RecursorPacketCache::size
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:288,1
    - Dst: RecursorPacketCache::insertResponsePacket
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:291,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:291,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:291,1
    - Dst: time
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:291,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:292,1
    - Dst: RecursorPacketCache::size
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:292,1
    - Dst: RecursorPacketCache::insertResponsePacket
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:294,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:294,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:294,1
    - Dst: time
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:294,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:295,1
    - Dst: RecursorPacketCache::size
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:295,1
    - Dst: RecursorPacketCache::doWipePacketCache
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:298,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:299,1
    - Dst: RecursorPacketCache::size
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:299,1
    - Dst: RecursorPacketCache::insertResponsePacket
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:302,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:302,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:302,1
    - Dst: time
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:302,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:303,1
    - Dst: RecursorPacketCache::size
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:303,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:306,1
    - Dst: RecursorPacketCache::getResponsePacket
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:306,1
    - Dst: time
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:306,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:307,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:308,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:311,1
    - Dst: RecursorPacketCache::getResponsePacket
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:311,1
    - Dst: time
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:311,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:312,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:313,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:316,1
    - Dst: RecursorPacketCache::getResponsePacket
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:316,1
    - Dst: time
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:316,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:318,1
    - Dst: RecursorPacketCache::insertResponsePacket
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:321,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:321,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:321,1
    - Dst: time
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:321,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:322,1
    - Dst: RecursorPacketCache::size
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:322,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:325,1
    - Dst: RecursorPacketCache::getResponsePacket
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:325,1
    - Dst: time
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:325,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:326,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:327,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:329,1
    - Dst: RecursorPacketCache::getResponsePacket
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:329,1
    - Dst: time
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:329,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:330,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:331,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:334,1
    - Dst: RecursorPacketCache::getResponsePacket
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:334,1
    - Dst: time
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:334,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:335,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:336,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:338,1
    - Dst: RecursorPacketCache::getResponsePacket
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:338,1
    - Dst: time
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:338,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:339,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:340,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 56
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 341
      start: 225
    functionDepth: 2
    functionLinenumber: 225
    functionLinenumberEnd: 341
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc
    functionUses: 0
    functionsReached:
    - RecursorPacketCache::size
    - DNSPacketWriter::commit
    - BOOST_CHECK
    - RecursorPacketCache::getResponsePacket
    - time
    - ARecordContent::toPacket
    - dns_random_uint16
    - string
    - DNSPacketWriter::getHeader
    - BOOST_CHECK_EQUAL
    - RecursorPacketCache::doPruneTo
    - RecursorPacketCache::insertResponsePacket
    - RecursorPacketCache::doWipePacketCache
    - reinterpret_cast<const char*>
    - vector::size
    - DNSPacketWriter::startRecord
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_recPacketCache_Tags)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:354,1
    - Dst: RecursorPacketCache::size
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:354,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:359,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:360,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:361,1
    - Dst: dns_random_uint16
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:361,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:362,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:362,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:363,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:366,1
    - Dst: RecursorPacketCache::getResponsePacket
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:366,1
    - Dst: time
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:366,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:367,1
    - Dst: RecursorPacketCache::getResponsePacket
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:367,1
    - Dst: time
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:367,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:368,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:371,1
    - Dst: RecursorPacketCache::getResponsePacket
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:371,1
    - Dst: time
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:371,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:372,1
    - Dst: RecursorPacketCache::getResponsePacket
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:372,1
    - Dst: time
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:372,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:373,1
    - Dst: ARecordContent::toPacket
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:377,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:378,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:380,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:380,1
    - Dst: ARecordContent::toPacket
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:384,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:385,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:387,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:387,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:389,1
    - Dst: RecursorPacketCache::insertResponsePacket
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:392,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:392,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:392,1
    - Dst: time
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:392,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:393,1
    - Dst: RecursorPacketCache::size
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:393,1
    - Dst: RecursorPacketCache::insertResponsePacket
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:396,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:396,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:396,1
    - Dst: time
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:396,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:397,1
    - Dst: RecursorPacketCache::size
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:397,1
    - Dst: RecursorPacketCache::doPruneTo
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:400,1
    - Dst: time
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:400,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:401,1
    - Dst: RecursorPacketCache::size
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:401,1
    - Dst: RecursorPacketCache::insertResponsePacket
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:404,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:404,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:404,1
    - Dst: time
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:404,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:405,1
    - Dst: RecursorPacketCache::size
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:405,1
    - Dst: RecursorPacketCache::insertResponsePacket
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:407,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:407,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:407,1
    - Dst: time
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:407,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:408,1
    - Dst: RecursorPacketCache::size
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:408,1
    - Dst: RecursorPacketCache::doWipePacketCache
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:411,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:412,1
    - Dst: RecursorPacketCache::size
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:412,1
    - Dst: RecursorPacketCache::insertResponsePacket
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:415,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:415,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:415,1
    - Dst: time
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:415,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:416,1
    - Dst: RecursorPacketCache::size
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:416,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:420,1
    - Dst: RecursorPacketCache::getResponsePacket
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:420,1
    - Dst: time
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:420,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:421,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:422,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:425,1
    - Dst: RecursorPacketCache::getResponsePacket
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:425,1
    - Dst: time
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:425,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:426,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:427,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:430,1
    - Dst: RecursorPacketCache::getResponsePacket
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:430,1
    - Dst: time
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:430,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:432,1
    - Dst: RecursorPacketCache::insertResponsePacket
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:435,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:435,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:435,1
    - Dst: time
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:435,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:436,1
    - Dst: RecursorPacketCache::size
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:436,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:439,1
    - Dst: RecursorPacketCache::getResponsePacket
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:439,1
    - Dst: time
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:439,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:440,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:441,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:443,1
    - Dst: RecursorPacketCache::getResponsePacket
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:443,1
    - Dst: time
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:443,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:444,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:445,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:448,1
    - Dst: RecursorPacketCache::getResponsePacket
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:448,1
    - Dst: time
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:448,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:449,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc:450,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 52
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 451
      start: 343
    functionDepth: 2
    functionLinenumber: 343
    functionLinenumberEnd: 451
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc
    functionUses: 0
    functionsReached:
    - RecursorPacketCache::size
    - DNSPacketWriter::commit
    - BOOST_CHECK
    - RecursorPacketCache::getResponsePacket
    - time
    - ARecordContent::toPacket
    - dns_random_uint16
    - string
    - DNSPacketWriter::getHeader
    - BOOST_CHECK_EQUAL
    - RecursorPacketCache::doPruneTo
    - RecursorPacketCache::insertResponsePacket
    - RecursorPacketCache::doWipePacketCache
    - reinterpret_cast<const char*>
    - vector::size
    - DNSPacketWriter::startRecord
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_recPacketCache_TCP)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EDNSCookiesOpt::getEDNSCookiesOptFromString
      Src: /src/pdns/pdns/recursordist/ednscookies.cc:35,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/ednscookies.cc:35,1
    - Dst: length
      Src: /src/pdns/pdns/recursordist/ednscookies.cc:35,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' option'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 36
      start: 33
    functionDepth: 0
    functionLinenumber: 33
    functionLinenumberEnd: 36
    functionName: EDNSCookiesOpt::EDNSCookiesOpt
    functionSourceFile: /src/pdns/pdns/recursordist/ednscookies.cc
    functionUses: 1
    functionsReached:
    - EDNSCookiesOpt::getEDNSCookiesOptFromString
    - length
    - c_str
    linkageType: ''
    returnType: void
    signature: void EDNSCookiesOpt::EDNSCookiesOpt(const std::string& option)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EDNSCookiesOpt::getEDNSCookiesOptFromString
      Src: /src/pdns/pdns/recursordist/ednscookies.cc:40,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - option
    - len
    argTypes:
    - char*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 38
    functionDepth: 0
    functionLinenumber: 38
    functionLinenumberEnd: 41
    functionName: EDNSCookiesOpt::EDNSCookiesOpt
    functionSourceFile: /src/pdns/pdns/recursordist/ednscookies.cc
    functionUses: 1
    functionsReached:
    - EDNSCookiesOpt::getEDNSCookiesOptFromString
    linkageType: ''
    returnType: void
    signature: void EDNSCookiesOpt::EDNSCookiesOpt(const char* option, unsigned int
      len)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EDNSCookiesOpt::getEDNSCookiesOptFromString
      Src: /src/pdns/pdns/recursordist/ednscookies.cc:45,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/ednscookies.cc:45,1
    - Dst: length
      Src: /src/pdns/pdns/recursordist/ednscookies.cc:45,1
    - Dst: isWellFormed
      Src: /src/pdns/pdns/recursordist/ednscookies.cc:46,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ' option'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 47
    functionName: EDNSCookiesOpt::makeFromString
    functionSourceFile: /src/pdns/pdns/recursordist/ednscookies.cc
    functionUses: 4
    functionsReached:
    - EDNSCookiesOpt::getEDNSCookiesOptFromString
    - length
    - isWellFormed
    - c_str
    linkageType: ''
    returnType: bool
    signature: bool EDNSCookiesOpt::makeFromString(const std::string& option)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EDNSCookiesOpt::getEDNSCookiesOptFromString
      Src: /src/pdns/pdns/recursordist/ednscookies.cc:51,1
    - Dst: isWellFormed
      Src: /src/pdns/pdns/recursordist/ednscookies.cc:52,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - option
    - len
    argTypes:
    - char*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 49
    functionDepth: 0
    functionLinenumber: 49
    functionLinenumberEnd: 53
    functionName: EDNSCookiesOpt::makeFromString
    functionSourceFile: /src/pdns/pdns/recursordist/ednscookies.cc
    functionUses: 4
    functionsReached:
    - EDNSCookiesOpt::getEDNSCookiesOptFromString
    - isWellFormed
    linkageType: ''
    returnType: bool
    signature: bool EDNSCookiesOpt::makeFromString(const char* option, unsigned int
      len)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: isWellFormed
      Src: /src/pdns/pdns/recursordist/ednscookies.cc:58,1
    - Dst: string::assign
      Src: /src/pdns/pdns/recursordist/ednscookies.cc:61,1
    - Dst: length
      Src: /src/pdns/pdns/recursordist/ednscookies.cc:62,1
    - Dst: string::append
      Src: /src/pdns/pdns/recursordist/ednscookies.cc:63,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 55
    functionDepth: 1
    functionLinenumber: 55
    functionLinenumberEnd: 66
    functionName: EDNSCookiesOpt::makeOptString
    functionSourceFile: /src/pdns/pdns/recursordist/ednscookies.cc
    functionUses: 14
    functionsReached:
    - string::append
    - length
    - string::assign
    - isWellFormed
    linkageType: ''
    returnType: string
    signature: string EDNSCookiesOpt::makeOptString() const
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: makeHexDump
      Src: /src/pdns/pdns/recursordist/ednscookies.cc:71,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/ednscookies.cc:72,1
    - Dst: length
      Src: /src/pdns/pdns/recursordist/ednscookies.cc:74,1
    - Dst: makeHexDump
      Src: /src/pdns/pdns/recursordist/ednscookies.cc:76,1
    - Dst: makeHexDump
      Src: /src/pdns/pdns/recursordist/ednscookies.cc:80,1
    - Dst: substr
      Src: /src/pdns/pdns/recursordist/ednscookies.cc:80,1
    - Dst: makeHexDump
      Src: /src/pdns/pdns/recursordist/ednscookies.cc:82,1
    - Dst: substr
      Src: /src/pdns/pdns/recursordist/ednscookies.cc:82,1
    - Dst: makeHexDump
      Src: /src/pdns/pdns/recursordist/ednscookies.cc:84,1
    - Dst: substr
      Src: /src/pdns/pdns/recursordist/ednscookies.cc:84,1
    - Dst: makeHexDump
      Src: /src/pdns/pdns/recursordist/ednscookies.cc:86,1
    - Dst: substr
      Src: /src/pdns/pdns/recursordist/ednscookies.cc:86,1
    - Dst: std::ostringstream::str
      Src: /src/pdns/pdns/recursordist/ednscookies.cc:89,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 68
    functionDepth: 0
    functionLinenumber: 68
    functionLinenumberEnd: 90
    functionName: EDNSCookiesOpt::toDisplayString
    functionSourceFile: /src/pdns/pdns/recursordist/ednscookies.cc
    functionUses: 0
    functionsReached:
    - length
    - std::ostringstream::str
    - substr
    - empty
    - makeHexDump
    linkageType: ''
    returnType: string
    signature: string EDNSCookiesOpt::toDisplayString() const
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: clear
      Src: /src/pdns/pdns/recursordist/ednscookies.cc:94,1
    - Dst: clear
      Src: /src/pdns/pdns/recursordist/ednscookies.cc:95,1
    - Dst: std::string::substr
      Src: /src/pdns/pdns/recursordist/ednscookies.cc:100,1
    - Dst: std::string::substr
      Src: /src/pdns/pdns/recursordist/ednscookies.cc:102,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - option
    - len
    argTypes:
    - char*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 104
      start: 92
    functionDepth: 1
    functionLinenumber: 92
    functionLinenumberEnd: 104
    functionName: EDNSCookiesOpt::getEDNSCookiesOptFromString
    functionSourceFile: /src/pdns/pdns/recursordist/ednscookies.cc
    functionUses: 12
    functionsReached:
    - clear
    - std::string::substr
    linkageType: ''
    returnType: void
    signature: void EDNSCookiesOpt::getEDNSCookiesOptFromString(const char* option,
      unsigned int len)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: rfc1982LessThan
      Src: /src/pdns/pdns/recursordist/ednscookies.cc:113,1
    - Dst: rfc1982LessThan
      Src: /src/pdns/pdns/recursordist/ednscookies.cc:113,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 2
    argNames:
    - timestamp
    - now
    argTypes:
    - uint32_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 106
    functionDepth: 0
    functionLinenumber: 106
    functionLinenumberEnd: 114
    functionName: cookieTSIsValid
    functionSourceFile: /src/pdns/pdns/recursordist/ednscookies.cc
    functionUses: 4
    functionsReached:
    - rfc1982LessThan
    linkageType: ''
    returnType: bool
    signature: bool cookieTSIsValid(uint32_t timestamp, uint32_t now)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: length
      Src: /src/pdns/pdns/recursordist/ednscookies.cc:119,1
    - Dst: length
      Src: /src/pdns/pdns/recursordist/ednscookies.cc:119,1
    - Dst: memcpy
      Src: /src/pdns/pdns/recursordist/ednscookies.cc:127,1
    - Dst: ntohl
      Src: /src/pdns/pdns/recursordist/ednscookies.cc:128,1
    - Dst: static_cast<uint32_t>
      Src: /src/pdns/pdns/recursordist/ednscookies.cc:130,1
    - Dst: time
      Src: /src/pdns/pdns/recursordist/ednscookies.cc:130,1
    - Dst: cookieTSIsValid
      Src: /src/pdns/pdns/recursordist/ednscookies.cc:131,1
    - Dst: length
      Src: /src/pdns/pdns/recursordist/ednscookies.cc:134,1
    - Dst: substr
      Src: /src/pdns/pdns/recursordist/ednscookies.cc:138,1
    - Dst: toByteString
      Src: /src/pdns/pdns/recursordist/ednscookies.cc:138,1
    - Dst: string::resize
      Src: /src/pdns/pdns/recursordist/ednscookies.cc:140,1
    - Dst: crypto_shorthash
      Src: /src/pdns/pdns/recursordist/ednscookies.cc:143,1
    - Dst: reinterpret_cast<unsigned char*>
      Src: /src/pdns/pdns/recursordist/ednscookies.cc:143,1
    - Dst: string::data
      Src: /src/pdns/pdns/recursordist/ednscookies.cc:143,1
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/recursordist/ednscookies.cc:144,1
    - Dst: string::data
      Src: /src/pdns/pdns/recursordist/ednscookies.cc:144,1
    - Dst: string::length
      Src: /src/pdns/pdns/recursordist/ednscookies.cc:145,1
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/recursordist/ednscookies.cc:146,1
    - Dst: data
      Src: /src/pdns/pdns/recursordist/ednscookies.cc:146,1
    - Dst: constantTimeStringEquals
      Src: /src/pdns/pdns/recursordist/ednscookies.cc:148,1
    - Dst: substr
      Src: /src/pdns/pdns/recursordist/ednscookies.cc:148,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 2
    argNames:
    - ' secret'
    - ' source'
    argTypes:
    - string
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 152
      start: 116
    functionDepth: 1
    functionLinenumber: 116
    functionLinenumberEnd: 152
    functionName: EDNSCookiesOpt::isValid
    functionSourceFile: /src/pdns/pdns/recursordist/ednscookies.cc
    functionUses: 3
    functionsReached:
    - string::data
    - length
    - ntohl
    - memcpy
    - string::resize
    - time
    - crypto_shorthash
    - static_cast<uint32_t>
    - toByteString
    - reinterpret_cast<unsigned char*>
    - cookieTSIsValid
    - substr
    - reinterpret_cast<const unsigned char*>
    - data
    - constantTimeStringEquals
    - string::length
    linkageType: ''
    returnType: bool
    signature: bool EDNSCookiesOpt::isValid([[maybe_unused]] const string& secret,
      [[maybe_unused]] const ComboAddress& source) const
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/recursordist/ednscookies.cc:156,1
    - Dst: memcpy
      Src: /src/pdns/pdns/recursordist/ednscookies.cc:160,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/ednscookies.cc:160,1
    - Dst: ntohl
      Src: /src/pdns/pdns/recursordist/ednscookies.cc:161,1
    - Dst: static_cast<uint32_t>
      Src: /src/pdns/pdns/recursordist/ednscookies.cc:163,1
    - Dst: time
      Src: /src/pdns/pdns/recursordist/ednscookies.cc:163,1
    - Dst: cookieTSIsValid
      Src: /src/pdns/pdns/recursordist/ednscookies.cc:165,1
    - Dst: rfc1982LessThan
      Src: /src/pdns/pdns/recursordist/ednscookies.cc:172,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 173
      start: 154
    functionDepth: 0
    functionLinenumber: 154
    functionLinenumberEnd: 173
    functionName: EDNSCookiesOpt::shouldRefresh
    functionSourceFile: /src/pdns/pdns/recursordist/ednscookies.cc
    functionUses: 2
    functionsReached:
    - memcpy
    - ntohl
    - rfc1982LessThan
    - time
    - size
    - static_cast<uint32_t>
    - cookieTSIsValid
    - at
    linkageType: ''
    returnType: bool
    signature: bool EDNSCookiesOpt::shouldRefresh() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: resize
      Src: /src/pdns/pdns/recursordist/ednscookies.cc:178,1
    - Dst: dns_random
      Src: /src/pdns/pdns/recursordist/ednscookies.cc:179,1
    - Dst: data
      Src: /src/pdns/pdns/recursordist/ednscookies.cc:179,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 180
      start: 175
    functionDepth: 1
    functionLinenumber: 175
    functionLinenumberEnd: 180
    functionName: EDNSCookiesOpt::makeClientCookie
    functionSourceFile: /src/pdns/pdns/recursordist/ednscookies.cc
    functionUses: 1
    functionsReached:
    - dns_random
    - resize
    - data
    linkageType: ''
    returnType: void
    signature: void EDNSCookiesOpt::makeClientCookie()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/recursordist/ednscookies.cc:185,1
    - Dst: EDNSCookiesOpt::isValid
      Src: /src/pdns/pdns/recursordist/ednscookies.cc:187,1
    - Dst: EDNSCookiesOpt::shouldRefresh
      Src: /src/pdns/pdns/recursordist/ednscookies.cc:187,1
    - Dst: length
      Src: /src/pdns/pdns/recursordist/ednscookies.cc:191,1
    - Dst: clear
      Src: /src/pdns/pdns/recursordist/ednscookies.cc:195,1
    - Dst: reserve
      Src: /src/pdns/pdns/recursordist/ednscookies.cc:196,1
    - Dst: resize
      Src: /src/pdns/pdns/recursordist/ednscookies.cc:198,1
    - Dst: htonl
      Src: /src/pdns/pdns/recursordist/ednscookies.cc:200,1
    - Dst: static_cast<uint32_t>
      Src: /src/pdns/pdns/recursordist/ednscookies.cc:200,1
    - Dst: time
      Src: /src/pdns/pdns/recursordist/ednscookies.cc:200,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/ednscookies.cc:202,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/recursordist/ednscookies.cc:202,1
    - Dst: resize
      Src: /src/pdns/pdns/recursordist/ednscookies.cc:203,1
    - Dst: toByteString
      Src: /src/pdns/pdns/recursordist/ednscookies.cc:207,1
    - Dst: resize
      Src: /src/pdns/pdns/recursordist/ednscookies.cc:208,1
    - Dst: crypto_shorthash
      Src: /src/pdns/pdns/recursordist/ednscookies.cc:209,1
    - Dst: reinterpret_cast<unsigned char*>
      Src: /src/pdns/pdns/recursordist/ednscookies.cc:209,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/ednscookies.cc:209,1
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/recursordist/ednscookies.cc:210,1
    - Dst: string::data
      Src: /src/pdns/pdns/recursordist/ednscookies.cc:210,1
    - Dst: string::length
      Src: /src/pdns/pdns/recursordist/ednscookies.cc:211,1
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/recursordist/ednscookies.cc:212,1
    - Dst: data
      Src: /src/pdns/pdns/recursordist/ednscookies.cc:212,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 2
    argNames:
    - ' secret'
    - ' source'
    argTypes:
    - string
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 218
      start: 182
    functionDepth: 1
    functionLinenumber: 182
    functionLinenumberEnd: 218
    functionName: EDNSCookiesOpt::makeServerCookie
    functionSourceFile: /src/pdns/pdns/recursordist/ednscookies.cc
    functionUses: 0
    functionsReached:
    - crypto_shorthash
    - static_cast<uint32_t>
    - string::data
    - static_cast<size_t>
    - resize
    - time
    - string
    - reinterpret_cast<unsigned char*>
    - reinterpret_cast<const unsigned char*>
    - EDNSCookiesOpt::isValid
    - clear
    - at
    - toByteString
    - reserve
    - reinterpret_cast<const char*>
    - string::length
    - length
    - htonl
    - EDNSCookiesOpt::shouldRefresh
    - data
    linkageType: ''
    returnType: bool
    signature: bool EDNSCookiesOpt::makeServerCookie([[maybe_unused]] const string&
      secret, [[maybe_unused]] const ComboAddress& source)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: get
      Src: /src/pdns/pdns/recursordist/zonemd.cc:13,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/recursordist/zonemd.cc:16,1
    - Dst: DNSResourceRecord::qname::toStringNoDot
      Src: /src/pdns/pdns/recursordist/zonemd.cc:19,1
    - Dst: DNSResourceRecord::qtype::toString
      Src: /src/pdns/pdns/recursordist/zonemd.cc:19,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/recursordist/zonemd.cc:20,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/zonemd.cc:20,1
    - Dst: DNSResourceRecord::qname::toStringNoDot
      Src: /src/pdns/pdns/recursordist/zonemd.cc:23,1
    - Dst: DNSResourceRecord::qtype::toString
      Src: /src/pdns/pdns/recursordist/zonemd.cc:23,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/zonemd.cc:23,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/recursordist/zonemd.cc:24,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/zonemd.cc:24,1
    - Dst: DNSRecord::DNSRecord
      Src: /src/pdns/pdns/recursordist/zonemd.cc:26,1
    - Dst: DNSRecord::setContent
      Src: /src/pdns/pdns/recursordist/zonemd.cc:28,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/zonemd.cc:28,1
    - Dst: DNSResourceRecord::content::length
      Src: /src/pdns/pdns/recursordist/zonemd.cc:32,1
    - Dst: readRecord
      Src: /src/pdns/pdns/recursordist/zonemd.cc:33,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 1
    argNames:
    - ' zpt'
    argTypes:
    - ZoneParserTNG
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 35
      start: 9
    functionDepth: 0
    functionLinenumber: 9
    functionLinenumberEnd: 35
    functionName: pdns::ZoneMD::readRecords(ZoneParserTNG& zpt)
    functionSourceFile: /src/pdns/pdns/recursordist/zonemd.cc
    functionUses: 0
    functionsReached:
    - std::move
    - DNSResourceRecord::content::length
    - DNSRecord::DNSRecord
    - DNSResourceRecord::qtype::toString
    - PDNSException
    - what
    - get
    - DNSResourceRecord::qname::toStringNoDot
    - DNSRecordContent::make
    - DNSRecord::setContent
    - readRecord
    linkageType: ''
    returnType: void
    signature: void pdns::ZoneMD::readRecords(ZoneParserTNG& zpt)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: readRecord
      Src: /src/pdns/pdns/recursordist/zonemd.cc:40,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - ' records'
    argTypes:
    - vector<DNSRecord>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 37
    functionDepth: 0
    functionLinenumber: 37
    functionLinenumberEnd: 42
    functionName: pdns::ZoneMD::readRecords(const vector<DNSRecord>& records)
    functionSourceFile: /src/pdns/pdns/recursordist/zonemd.cc
    functionUses: 0
    functionsReached:
    - readRecord
    linkageType: ''
    returnType: void
    signature: void pdns::ZoneMD::readRecords(const vector<DNSRecord>& records)
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/zonemd.cc:46,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/zonemd.cc:49,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/recursordist/zonemd.cc:51,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/zonemd.cc:56,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/recursordist/zonemd.cc:58,1
    - Dst: emplace
      Src: /src/pdns/pdns/recursordist/zonemd.cc:60,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/zonemd.cc:64,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/recursordist/zonemd.cc:66,1
    - Dst: insert
      Src: /src/pdns/pdns/recursordist/zonemd.cc:68,1
    - Dst: pair
      Src: /src/pdns/pdns/recursordist/zonemd.cc:68,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/zonemd.cc:76,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/recursordist/zonemd.cc:78,1
    - Dst: emplace_back
      Src: /src/pdns/pdns/recursordist/zonemd.cc:80,1
    - Dst: signatures::emplace_back
      Src: /src/pdns/pdns/recursordist/zonemd.cc:82,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/zonemd.cc:88,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/recursordist/zonemd.cc:90,1
    - Dst: records::emplace
      Src: /src/pdns/pdns/recursordist/zonemd.cc:92,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/zonemd.cc:99,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/recursordist/zonemd.cc:101,1
    - Dst: emplace_back
      Src: /src/pdns/pdns/recursordist/zonemd.cc:106,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/zonemd.cc:107,1
    - Dst: prependRawLabel
      Src: /src/pdns/pdns/recursordist/zonemd.cc:108,1
    - Dst: toBase32Hex
      Src: /src/pdns/pdns/recursordist/zonemd.cc:108,1
    - Dst: hashQNameWithSalt
      Src: /src/pdns/pdns/recursordist/zonemd.cc:108,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/zonemd.cc:108,1
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/zonemd.cc:110,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/zonemd.cc:110,1
    - Dst: erase
      Src: /src/pdns/pdns/recursordist/zonemd.cc:112,1
    CyclomaticComplexity: 28
    EdgeCount: 28
    ICount: 66
    argCount: 1
    argNames:
    - ' record'
    argTypes:
    - DNSRecord
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 122
      start: 44
    functionDepth: 2
    functionLinenumber: 44
    functionLinenumberEnd: 122
    functionName: pdns::ZoneMD::processRecord(const DNSRecord& record)
    functionSourceFile: /src/pdns/pdns/recursordist/zonemd.cc
    functionUses: 0
    functionsReached:
    - getRR
    - toBase32Hex
    - PDNSException
    - prependRawLabel
    - signatures::emplace_back
    - pair
    - DNSName
    - end
    - begin
    - records::emplace
    - insert
    - emplace_back
    - erase
    - hashQNameWithSalt
    - emplace
    linkageType: ''
    returnType: void
    signature: void pdns::ZoneMD::processRecord(const DNSRecord& record)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: d_name::isPartOf
      Src: /src/pdns/pdns/recursordist/zonemd.cc:126,1
    - Dst: processRecord
      Src: /src/pdns/pdns/recursordist/zonemd.cc:133,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/zonemd.cc:136,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/zonemd.cc:139,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/recursordist/zonemd.cc:141,1
    - Dst: records::emplace
      Src: /src/pdns/pdns/recursordist/zonemd.cc:143,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/zonemd.cc:147,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/recursordist/zonemd.cc:149,1
    - Dst: signatures::emplace_back
      Src: /src/pdns/pdns/recursordist/zonemd.cc:152,1
    - Dst: std::pair
      Src: /src/pdns/pdns/recursordist/zonemd.cc:158,1
    - Dst: push_back
      Src: /src/pdns/pdns/recursordist/zonemd.cc:159,1
    - Dst: getContent
      Src: /src/pdns/pdns/recursordist/zonemd.cc:159,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 30
    argCount: 1
    argNames:
    - ' record'
    argTypes:
    - DNSRecord
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 161
      start: 124
    functionDepth: 0
    functionLinenumber: 124
    functionLinenumberEnd: 161
    functionName: pdns::ZoneMD::readRecord(const DNSRecord& record)
    functionSourceFile: /src/pdns/pdns/recursordist/zonemd.cc
    functionUses: 0
    functionsReached:
    - getRR
    - PDNSException
    - push_back
    - signatures::emplace_back
    - getContent
    - records::emplace
    - std::pair
    - processRecord
    - empty
    - d_name::isPartOf
    linkageType: ''
    returnType: void
    signature: void pdns::ZoneMD::readRecord(const DNSRecord& record)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: make_unique<pdns::SHADigest>
      Src: /src/pdns/pdns/recursordist/zonemd.cc:194,1
    - Dst: make_unique<pdns::SHADigest>
      Src: /src/pdns/pdns/recursordist/zonemd.cc:197,1
    - Dst: unique_ptr::process
      Src: /src/pdns/pdns/recursordist/zonemd.cc:210,1
    - Dst: unique_ptr::process
      Src: /src/pdns/pdns/recursordist/zonemd.cc:213,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/zonemd.cc:221,1
    - Dst: std::dynamic_pointer_cast<const RRSIGRecordContent>
      Src: /src/pdns/pdns/recursordist/zonemd.cc:228,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/zonemd.cc:229,1
    - Dst: sortedRecords_t::insert
      Src: /src/pdns/pdns/recursordist/zonemd.cc:233,1
    - Dst: sortedRecords_t::empty
      Src: /src/pdns/pdns/recursordist/zonemd.cc:236,1
    - Dst: RRSIGRecordContent::RRSIGRecordContent
      Src: /src/pdns/pdns/recursordist/zonemd.cc:241,1
    - Dst: getMessageForRRSET
      Src: /src/pdns/pdns/recursordist/zonemd.cc:244,1
    - Dst: hash
      Src: /src/pdns/pdns/recursordist/zonemd.cc:245,1
    - Dst: std::dynamic_pointer_cast<const RRSIGRecordContent>
      Src: /src/pdns/pdns/recursordist/zonemd.cc:251,1
    - Dst: RRSIGRecordContent::RRSIGRecordContent
      Src: /src/pdns/pdns/recursordist/zonemd.cc:252,1
    - Dst: pair
      Src: /src/pdns/pdns/recursordist/zonemd.cc:253,1
    - Dst: getMessageForRRSET
      Src: /src/pdns/pdns/recursordist/zonemd.cc:255,1
    - Dst: hash
      Src: /src/pdns/pdns/recursordist/zonemd.cc:256,1
    - Dst: unique_ptr::digest
      Src: /src/pdns/pdns/recursordist/zonemd.cc:266,1
    - Dst: constantTimeStringEquals
      Src: /src/pdns/pdns/recursordist/zonemd.cc:267,1
    - Dst: unique_ptr::digest
      Src: /src/pdns/pdns/recursordist/zonemd.cc:274,1
    - Dst: constantTimeStringEquals
      Src: /src/pdns/pdns/recursordist/zonemd.cc:275,1
    CyclomaticComplexity: 35
    EdgeCount: 35
    ICount: 64
    argCount: 2
    argNames:
    - ' validationDone'
    - ' validationOK'
    argTypes:
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 281
      start: 163
    functionDepth: 2
    functionLinenumber: 163
    functionLinenumberEnd: 281
    functionName: pdns::ZoneMD::verify(bool& validationDone, bool& validationOK)
    functionSourceFile: /src/pdns/pdns/recursordist/zonemd.cc
    functionUses: 0
    functionsReached:
    - hash
    - getMessageForRRSET
    - make_unique<pdns::SHADigest>
    - sortedRecords_t::empty
    - unique_ptr::digest
    - DNSName
    - RRSIGRecordContent::RRSIGRecordContent
    - sortedRecords_t::insert
    - constantTimeStringEquals
    - unique_ptr::process
    - std::dynamic_pointer_cast<const RRSIGRecordContent>
    - pair
    linkageType: ''
    returnType: void
    signature: void pdns::ZoneMD::verify(bool& validationDone, bool& validationOK)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::count
      Src: /src/pdns/pdns/recursordist/secpoll.cc:31,1
    - Dst: std::string::begin
      Src: /src/pdns/pdns/recursordist/secpoll.cc:31,1
    - Dst: std::string::end
      Src: /src/pdns/pdns/recursordist/secpoll.cc:31,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - version
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 32
      start: 30
    functionDepth: 0
    functionLinenumber: 30
    functionLinenumberEnd: 32
    functionName: isReleaseVersion
    functionSourceFile: /src/pdns/pdns/recursordist/secpoll.cc
    functionUses: 2
    functionsReached:
    - std::string::begin
    - std::string::end
    - std::count
    linkageType: ''
    returnType: bool
    signature: bool isReleaseVersion(const std::string &version)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - secPollStatus
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 34
    functionDepth: 0
    functionLinenumber: 34
    functionLinenumberEnd: 38
    functionName: setSecPollToUnknownOnOK
    functionSourceFile: /src/pdns/pdns/recursordist/secpoll.cc
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setSecPollToUnknownOnOK(int &secPollStatus)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: std::string::clear
      Src: /src/pdns/pdns/recursordist/secpoll.cc:41,1
    - Dst: setSecPollToUnknownOnOK
      Src: /src/pdns/pdns/recursordist/secpoll.cc:43,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/recursordist/secpoll.cc:44,1
    - Dst: RCode::to_s
      Src: /src/pdns/pdns/recursordist/secpoll.cc:44,1
    - Dst: std::vector<DNSRecord>::empty
      Src: /src/pdns/pdns/recursordist/secpoll.cc:47,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/recursordist/secpoll.cc:51,1
    - Dst: DNSRecord::DNSRecord
      Src: /src/pdns/pdns/recursordist/secpoll.cc:54,1
    - Dst: DNSRecord::d_name::empty
      Src: /src/pdns/pdns/recursordist/secpoll.cc:62,1
    - Dst: setSecPollToUnknownOnOK
      Src: /src/pdns/pdns/recursordist/secpoll.cc:63,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/recursordist/secpoll.cc:64,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/secpoll.cc:67,1
    - Dst: setSecPollToUnknownOnOK
      Src: /src/pdns/pdns/recursordist/secpoll.cc:69,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/recursordist/secpoll.cc:70,1
    - Dst: splitField
      Src: /src/pdns/pdns/recursordist/secpoll.cc:74,1
    - Dst: unquotify
      Src: /src/pdns/pdns/recursordist/secpoll.cc:74,1
    - Dst: std::stoi
      Src: /src/pdns/pdns/recursordist/secpoll.cc:77,1
    - Dst: setSecPollToUnknownOnOK
      Src: /src/pdns/pdns/recursordist/secpoll.cc:79,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/recursordist/secpoll.cc:80,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/secpoll.cc:80,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/secpoll.cc:80,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 32
    argCount: 4
    argNames:
    - res
    - ret
    - secPollStatus
    - secPollMessage
    argTypes:
    - int
    - std::vector<DNSRecord>
    - int
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 40
    functionDepth: 1
    functionLinenumber: 40
    functionLinenumberEnd: 83
    functionName: processSecPoll
    functionSourceFile: /src/pdns/pdns/recursordist/secpoll.cc
    functionUses: 2
    functionsReached:
    - getRR
    - splitField
    - DNSRecord::DNSRecord
    - unquotify
    - PDNSException
    - what
    - std::string::clear
    - std::vector<DNSRecord>::empty
    - RCode::to_s
    - std::stoi
    - std::string
    - setSecPollToUnknownOnOK
    - DNSRecord::d_name::empty
    linkageType: ''
    returnType: void
    signature: void processSecPoll(const int res, const std::vector<DNSRecord> &ret,
      int &secPollStatus, std::string &secPollMessage)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:20,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:21,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:22,1
    - Dst: htons
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:22,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:23,1
    - Dst: htonl
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:23,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:26,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:27,1
    - Dst: htons
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:27,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:30,1
    - Dst: htons
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:30,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:33,1
    - Dst: htons
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:33,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:35,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:36,1
    - Dst: htons
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:36,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:38,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:39,1
    - Dst: htons
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:39,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:42,1
    - Dst: htons
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:42,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:44,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:45,1
    - Dst: htons
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:45,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:47,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:48,1
    - Dst: htons
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:48,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:52,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:53,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:54,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:57,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:58,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:59,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:61,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:62,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:63,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:64,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:65,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:68,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:68,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:69,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:69,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:70,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:70,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:71,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:71,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 28
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 18
    functionDepth: 0
    functionLinenumber: 18
    functionLinenumberEnd: 72
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-iputils_hh.cc
    functionUses: 0
    functionsReached:
    - htonl
    - BOOST_CHECK_EQUAL
    - htons
    - BOOST_CHECK_THROW
    - BOOST_CHECK
    - ComboAddress
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_ComboAddress)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:76,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:77,1
    - Dst: htons
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:77,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:78,1
    - Dst: htonl
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:78,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:81,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:84,1
    - Dst: htons
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:84,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:87,1
    - Dst: htons
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:87,1
    - Dst: SockaddrWrapper
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:89,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:90,1
    - Dst: htons
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:90,1
    - Dst: SockaddrWrapper
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:92,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:93,1
    - Dst: htons
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:93,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:96,1
    - Dst: htons
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:96,1
    - Dst: SockaddrWrapper
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:98,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:99,1
    - Dst: htons
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:99,1
    - Dst: SockaddrWrapper
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:101,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:102,1
    - Dst: htons
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:102,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:104,1
    - Dst: SockaddrWrapper
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:104,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:105,1
    - Dst: SockaddrWrapper
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:105,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:106,1
    - Dst: SockaddrWrapper
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:106,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:107,1
    - Dst: SockaddrWrapper
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:107,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:109,1
    - Dst: SockaddrWrapper
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:109,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:110,1
    - Dst: SockaddrWrapper
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:110,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 22
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 111
      start: 74
    functionDepth: 0
    functionLinenumber: 74
    functionLinenumberEnd: 111
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-iputils_hh.cc
    functionUses: 0
    functionsReached:
    - SockaddrWrapper
    - htonl
    - BOOST_CHECK_EQUAL
    - BOOST_CHECK_THROW
    - htons
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_SockaddrWrapper)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ComboAddress::reset
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:115,1
    - Dst: reset
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:116,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:117,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:118,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 119
      start: 113
    functionDepth: 0
    functionLinenumber: 113
    functionLinenumberEnd: 119
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-iputils_hh.cc
    functionUses: 0
    functionsReached:
    - reset
    - ComboAddress::reset
    - BOOST_CHECK
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_ComboAddressCompare)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ComboAddress::truncate
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:123,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:124,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:124,1
    - Dst: ComboAddress::truncate
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:125,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:126,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:126,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:130,1
    - Dst: ComboAddress::truncate
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:133,1
    - Dst: memcpy
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:136,1
    - Dst: memcpy
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:139,1
    - Dst: std::bitset::set
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:144,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:146,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:149,1
    - Dst: ComboAddress::truncate
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:150,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:151,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:151,1
    - Dst: ComboAddress::truncate
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:153,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:154,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:154,1
    - Dst: ComboAddress::truncate
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:156,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:157,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:157,1
    - Dst: ComboAddress::truncate
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:159,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:160,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:160,1
    - Dst: ComboAddress::truncate
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:162,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:163,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:163,1
    - Dst: ComboAddress::truncate
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:165,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:166,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:166,1
    - Dst: ComboAddress::truncate
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:169,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:170,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:170,1
    - Dst: ComboAddress::truncate
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:171,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:172,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:172,1
    - Dst: ComboAddress::truncate
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:173,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:174,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:174,1
    - Dst: ComboAddress::truncate
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:175,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:176,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:176,1
    - Dst: ComboAddress::truncate
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:177,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:178,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:178,1
    - Dst: ComboAddress::truncate
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:179,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:180,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:180,1
    - Dst: ComboAddress::truncate
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:181,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:182,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:182,1
    - Dst: ComboAddress::truncate
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:183,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:184,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:184,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:187,1
    - Dst: ComboAddress::truncate
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:189,1
    - Dst: std::bitset<128>
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:194,1
    - Dst: std::bitset<128>
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:197,1
    - Dst: std::bitset::set
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:202,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:204,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 56
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 206
      start: 121
    functionDepth: 0
    functionLinenumber: 121
    functionLinenumberEnd: 206
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-iputils_hh.cc
    functionUses: 0
    functionsReached:
    - memcpy
    - std::bitset::set
    - BOOST_CHECK_EQUAL
    - std::bitset<128>
    - ComboAddress::truncate
    - ComboAddress::toString
    - ComboAddress
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_ComboAddressTruncate)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:211,1
    - Dst: ComboAddress::toStringReversed
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:211,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:214,1
    - Dst: ComboAddress::toStringReversed
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:214,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:217,1
    - Dst: ComboAddress::toStringReversed
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:217,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:220,1
    - Dst: ComboAddress::toStringReversed
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:220,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:223,1
    - Dst: ComboAddress::toStringReversed
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:223,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:226,1
    - Dst: ComboAddress::toStringReversed
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:226,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 227
      start: 208
    functionDepth: 0
    functionLinenumber: 208
    functionLinenumberEnd: 227
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-iputils_hh.cc
    functionUses: 0
    functionsReached:
    - ComboAddress::toStringReversed
    - BOOST_CHECK_EQUAL
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_ComboAddressReverse)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:232,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:232,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 233
      start: 229
    functionDepth: 0
    functionLinenumber: 229
    functionLinenumberEnd: 233
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-iputils_hh.cc
    functionUses: 0
    functionsReached:
    - BOOST_CHECK_EQUAL
    - ComboAddress::toString
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_Mapping)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:240,1
    - Dst: Netmask::getBits
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:240,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:241,1
    - Dst: Netmask::match
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:241,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:242,1
    - Dst: Netmask::match
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:242,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:243,1
    - Dst: Netmask::isIPv4
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:243,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:244,1
    - Dst: Netmask::isIPv6
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:244,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:247,1
    - Dst: Netmask::getBits
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:247,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:248,1
    - Dst: Netmask::match
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:248,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:249,1
    - Dst: Netmask::match
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:249,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:250,1
    - Dst: Netmask::isIPv4
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:250,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:251,1
    - Dst: Netmask::isIPv6
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:251,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:254,1
    - Dst: Netmask::match
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:254,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:257,1
    - Dst: Netmask::match
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:257,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:258,1
    - Dst: Netmask::match
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:258,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:261,1
    - Dst: Netmask::match
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:261,1
    - Dst: Netmask::match
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:261,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:264,1
    - Dst: Netmask::match
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:264,1
    - Dst: Netmask::match
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:264,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:267,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:268,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:269,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:270,1
    - Dst: Netmask::match
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:270,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:271,1
    - Dst: Netmask::match
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:271,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:271,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:272,1
    - Dst: Netmask::getNetwork
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:272,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:272,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:273,1
    - Dst: Netmask::getMaskedNetwork
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:273,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:273,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:276,1
    - Dst: Netmask::getBits
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:276,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:277,1
    - Dst: Netmask::getNetwork
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:277,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:277,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:278,1
    - Dst: Netmask::getMaskedNetwork
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:278,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:278,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:285,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:286,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:287,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:288,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:292,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:293,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:294,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:298,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:299,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:300,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:305,1
    - Dst: Netmask::match
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:305,1
    - Dst: Netmask::getNetwork
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:305,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:306,1
    - Dst: Netmask::match
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:306,1
    - Dst: Netmask::getNetwork
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:306,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:307,1
    - Dst: Netmask::match
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:307,1
    - Dst: Netmask::getNetwork
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:307,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:308,1
    - Dst: Netmask::match
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:308,1
    - Dst: Netmask::getNetwork
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:308,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:309,1
    - Dst: Netmask::match
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:309,1
    - Dst: Netmask::getNetwork
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:309,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:310,1
    - Dst: Netmask::match
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:310,1
    - Dst: Netmask::getNetwork
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:310,1
    - Dst: Netmask
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:314,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:316,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:317,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:318,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:319,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:324,1
    - Dst: Netmask::getBits
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:324,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:325,1
    - Dst: Netmask::getNetwork
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:325,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:325,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:327,1
    - Dst: Netmask::getBits
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:327,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:328,1
    - Dst: Netmask::getNetwork
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:328,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:328,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:331,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:332,1
    - Dst: Netmask::getBits
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:332,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:333,1
    - Dst: Netmask::getNetwork
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:333,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:333,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:334,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:335,1
    - Dst: Netmask::getBits
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:335,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:336,1
    - Dst: Netmask::getNetwork
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:336,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:336,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 54
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 338
      start: 235
    functionDepth: 0
    functionLinenumber: 235
    functionLinenumberEnd: 338
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-iputils_hh.cc
    functionUses: 0
    functionsReached:
    - Netmask
    - Netmask::getNetwork
    - Netmask::getBits
    - ComboAddress
    - Netmask::getMaskedNetwork
    - BOOST_CHECK_EQUAL
    - Netmask::isIPv4
    - Netmask::match
    - BOOST_CHECK
    - Netmask::isIPv6
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_Netmask)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: stringtok
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:343,1
    - Dst: std::sort
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:344,1
    - Dst: std::vector::begin
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:344,1
    - Dst: std::vector::end
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:344,1
    - Dst: std::string::empty
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:347,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - ' str'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 354
      start: 340
    functionDepth: 0
    functionLinenumber: 340
    functionLinenumberEnd: 354
    functionName: NMGOutputToSorted
    functionSourceFile: /src/pdns/pdns/recursordist/test-iputils_hh.cc
    functionUses: 2
    functionsReached:
    - std::vector::end
    - stringtok
    - std::vector::begin
    - std::sort
    - std::string::empty
    linkageType: ''
    returnType: std::string
    signature: std::string NMGOutputToSorted(const std::string& str)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: NetmaskGroup::NetmaskGroup
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:359,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:360,1
    - Dst: NetmaskGroup::empty
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:360,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:361,1
    - Dst: NetmaskGroup::size
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:361,1
    - Dst: NetmaskGroup::addMask
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:362,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:363,1
    - Dst: NetmaskGroup::empty
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:363,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:364,1
    - Dst: NetmaskGroup::size
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:364,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:365,1
    - Dst: NetmaskGroup::match
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:365,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:365,1
    - Dst: NetmaskGroup::toMasks
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:366,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:367,1
    - Dst: NetmaskGroup::size
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:367,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:368,1
    - Dst: NetmaskGroup::match
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:368,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:368,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:369,1
    - Dst: NetmaskGroup::match
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:369,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:369,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:370,1
    - Dst: NetmaskGroup::match
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:370,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:370,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:371,1
    - Dst: NetmaskGroup::match
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:371,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:371,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:372,1
    - Dst: NetmaskGroup::match
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:372,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:372,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:373,1
    - Dst: NetmaskGroup::match
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:373,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:373,1
    - Dst: NetmaskGroup::addMask
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:374,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:375,1
    - Dst: NetmaskGroup::size
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:375,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:376,1
    - Dst: NetmaskGroup::match
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:376,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:376,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:377,1
    - Dst: NetmaskGroup::match
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:377,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:377,1
    - Dst: NetmaskGroup::addMask
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:378,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:379,1
    - Dst: NetmaskGroup::size
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:379,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:380,1
    - Dst: NetmaskGroup::match
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:380,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:380,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:381,1
    - Dst: NetmaskGroup::match
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:381,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:381,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:382,1
    - Dst: NMGOutputToSorted
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:382,1
    - Dst: NetmaskGroup::toString
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:382,1
    - Dst: NMGOutputToSorted
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:382,1
    - Dst: NetmaskGroup::addMask
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:385,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:386,1
    - Dst: NetmaskGroup::size
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:386,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:387,1
    - Dst: NetmaskGroup::match
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:387,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:387,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:388,1
    - Dst: NetmaskGroup::match
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:388,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:388,1
    - Dst: NetmaskGroup::addMask
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:389,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:390,1
    - Dst: NetmaskGroup::size
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:390,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:391,1
    - Dst: NetmaskGroup::match
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:391,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:391,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:392,1
    - Dst: NetmaskGroup::match
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:392,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:392,1
    - Dst: NetmaskGroup::addMask
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:393,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:394,1
    - Dst: NetmaskGroup::size
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:394,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:395,1
    - Dst: NetmaskGroup::match
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:395,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:395,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:396,1
    - Dst: NetmaskGroup::match
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:396,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:396,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:398,1
    - Dst: NetmaskGroup::match
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:398,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:398,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:401,1
    - Dst: NetmaskGroup::match
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:401,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:401,1
    - Dst: NetmaskGroup::addMask
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:402,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:403,1
    - Dst: NetmaskGroup::size
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:403,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:404,1
    - Dst: NetmaskGroup::match
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:404,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:404,1
    - Dst: NetmaskGroup::addMask
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:405,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:406,1
    - Dst: NetmaskGroup::size
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:406,1
    - Dst: NetmaskGroup::addMask
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:407,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:408,1
    - Dst: NetmaskGroup::size
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:408,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:409,1
    - Dst: NetmaskGroup::match
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:409,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:409,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:411,1
    - Dst: NetmaskGroup::match
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:411,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:411,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:413,1
    - Dst: NMGOutputToSorted
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:413,1
    - Dst: NetmaskGroup::toString
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:413,1
    - Dst: NMGOutputToSorted
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:413,1
    - Dst: NetmaskGroup::NetmaskGroup
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:418,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:419,1
    - Dst: NetmaskGroup::empty
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:419,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:420,1
    - Dst: NetmaskGroup::size
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:420,1
    - Dst: NetmaskGroup::addMask
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:421,1
    - Dst: Netmask
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:421,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:422,1
    - Dst: NetmaskGroup::empty
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:422,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:423,1
    - Dst: NetmaskGroup::size
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:423,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:424,1
    - Dst: NetmaskGroup::match
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:424,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:424,1
    - Dst: NetmaskGroup::addMask
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:425,1
    - Dst: Netmask
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:425,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:426,1
    - Dst: NetmaskGroup::size
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:426,1
    - Dst: NetmaskGroup::addMask
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:427,1
    - Dst: Netmask
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:427,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:428,1
    - Dst: NetmaskGroup::size
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:428,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:429,1
    - Dst: NetmaskGroup::match
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:429,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:429,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:430,1
    - Dst: NetmaskGroup::match
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:430,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:430,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:431,1
    - Dst: NetmaskGroup::match
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:431,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:431,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:432,1
    - Dst: NetmaskGroup::match
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:432,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:432,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:433,1
    - Dst: NetmaskGroup::match
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:433,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:433,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:434,1
    - Dst: NetmaskGroup::match
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:434,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:434,1
    - Dst: NetmaskGroup::addMask
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:435,1
    - Dst: Netmask
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:435,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:436,1
    - Dst: NetmaskGroup::size
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:436,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:437,1
    - Dst: NetmaskGroup::match
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:437,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:437,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:438,1
    - Dst: NetmaskGroup::match
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:438,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:438,1
    - Dst: NetmaskGroup::addMask
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:439,1
    - Dst: Netmask
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:439,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:440,1
    - Dst: NetmaskGroup::size
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:440,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:441,1
    - Dst: NetmaskGroup::match
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:441,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:441,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:442,1
    - Dst: NetmaskGroup::match
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:442,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:442,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:443,1
    - Dst: NMGOutputToSorted
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:443,1
    - Dst: NetmaskGroup::toString
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:443,1
    - Dst: NMGOutputToSorted
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:443,1
    - Dst: NetmaskGroup::addMask
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:446,1
    - Dst: Netmask
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:446,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:447,1
    - Dst: NetmaskGroup::size
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:447,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:448,1
    - Dst: NetmaskGroup::match
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:448,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:448,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:449,1
    - Dst: NetmaskGroup::match
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:449,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:449,1
    - Dst: NetmaskGroup::addMask
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:450,1
    - Dst: Netmask
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:450,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:451,1
    - Dst: NetmaskGroup::size
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:451,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:452,1
    - Dst: NetmaskGroup::match
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:452,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:452,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:453,1
    - Dst: NetmaskGroup::match
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:453,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:453,1
    - Dst: NetmaskGroup::addMask
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:454,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:455,1
    - Dst: NetmaskGroup::size
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:455,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:456,1
    - Dst: NetmaskGroup::match
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:456,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:456,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:457,1
    - Dst: NetmaskGroup::match
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:457,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:457,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:459,1
    - Dst: NetmaskGroup::match
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:459,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:459,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:461,1
    - Dst: NMGOutputToSorted
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:461,1
    - Dst: NetmaskGroup::toString
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:461,1
    - Dst: NMGOutputToSorted
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:461,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 89
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 463
      start: 356
    functionDepth: 0
    functionLinenumber: 356
    functionLinenumberEnd: 463
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-iputils_hh.cc
    functionUses: 0
    functionsReached:
    - Netmask
    - NetmaskGroup::NetmaskGroup
    - NMGOutputToSorted
    - NetmaskGroup::match
    - BOOST_CHECK_EQUAL
    - NetmaskGroup::toMasks
    - NetmaskGroup::addMask
    - NetmaskGroup::size
    - NetmaskGroup::toString
    - BOOST_CHECK
    - NetmaskGroup::empty
    - ComboAddress
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_NetmaskGroup)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: NetmaskTree::NetmaskTree
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:466,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:467,1
    - Dst: NetmaskTree::empty
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:467,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:468,1
    - Dst: NetmaskTree::size
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:468,1
    - Dst: NetmaskTree::insert
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:469,1
    - Dst: Netmask
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:469,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:470,1
    - Dst: NetmaskTree::empty
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:470,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:471,1
    - Dst: NetmaskTree::size
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:471,1
    - Dst: NetmaskTree::insert
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:472,1
    - Dst: Netmask
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:472,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:473,1
    - Dst: NetmaskTree::size
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:473,1
    - Dst: NetmaskTree::insert
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:474,1
    - Dst: Netmask
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:474,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:475,1
    - Dst: NetmaskTree::size
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:475,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:477,1
    - Dst: NetmaskTree::lookup
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:477,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:477,1
    - Dst: NetmaskTree::lookup
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:478,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:478,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:479,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:480,1
    - Dst: NetmaskTree::lookup
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:481,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:481,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:482,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:483,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:485,1
    - Dst: NetmaskTree::lookup
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:485,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:485,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:486,1
    - Dst: NetmaskTree::lookup
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:486,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:486,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:487,1
    - Dst: NetmaskTree::lookup
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:487,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:487,1
    - Dst: NetmaskTree::lookup
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:489,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:489,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:490,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:491,1
    - Dst: NetmaskTree::insert
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:493,1
    - Dst: Netmask
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:493,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:494,1
    - Dst: NetmaskTree::size
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:494,1
    - Dst: NetmaskTree::insert
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:495,1
    - Dst: Netmask
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:495,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:496,1
    - Dst: NetmaskTree::size
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:496,1
    - Dst: NetmaskTree::insert
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:497,1
    - Dst: Netmask
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:497,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:498,1
    - Dst: NetmaskTree::size
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:498,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:499,1
    - Dst: NetmaskTree::lookup
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:499,1
    - Dst: Netmask
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:499,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:500,1
    - Dst: NetmaskTree::lookup
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:500,1
    - Dst: Netmask
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:500,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:501,1
    - Dst: NetmaskTree::lookup
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:501,1
    - Dst: Netmask
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:501,1
    - Dst: NetmaskTree::clear
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:503,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:504,1
    - Dst: NetmaskTree::empty
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:504,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:505,1
    - Dst: NetmaskTree::size
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:505,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:506,1
    - Dst: NetmaskTree::lookup
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:506,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:506,1
    - Dst: NetmaskTree::insert
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:508,1
    - Dst: Netmask
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:508,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:509,1
    - Dst: NetmaskTree::empty
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:509,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:510,1
    - Dst: NetmaskTree::size
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:510,1
    - Dst: NetmaskTree::insert
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:511,1
    - Dst: Netmask
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:511,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:512,1
    - Dst: NetmaskTree::size
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:512,1
    - Dst: NetmaskTree::insert
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:513,1
    - Dst: Netmask
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:513,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:514,1
    - Dst: NetmaskTree::size
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:514,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:515,1
    - Dst: NetmaskTree::lookup
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:515,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:515,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:516,1
    - Dst: NetmaskTree::lookup
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:516,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:516,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:517,1
    - Dst: NetmaskTree::lookup
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:517,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:517,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:518,1
    - Dst: NetmaskTree::lookup
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:518,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:518,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:519,1
    - Dst: NetmaskTree::lookup
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:519,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:519,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 47
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 520
      start: 465
    functionDepth: 2
    functionLinenumber: 465
    functionLinenumberEnd: 520
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-iputils_hh.cc
    functionUses: 0
    functionsReached:
    - Netmask
    - NetmaskTree::empty
    - NetmaskTree::size
    - BOOST_CHECK_EQUAL
    - NetmaskTree::lookup
    - NetmaskTree::clear
    - NetmaskTree::insert
    - BOOST_CHECK
    - NetmaskTree::NetmaskTree
    - ComboAddress
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_NetmaskTree)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: NetmaskTree::NetmaskTree
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:523,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:524,1
    - Dst: NetmaskTree::empty
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:524,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:525,1
    - Dst: NetmaskTree::size
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:525,1
    - Dst: NetmaskTree::insert
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:526,1
    - Dst: Netmask
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:526,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:527,1
    - Dst: NetmaskTree::empty
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:527,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:528,1
    - Dst: NetmaskTree::size
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:528,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:529,1
    - Dst: NetmaskTree::lookup
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:529,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:529,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 530
      start: 522
    functionDepth: 2
    functionLinenumber: 522
    functionLinenumberEnd: 530
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-iputils_hh.cc
    functionUses: 0
    functionsReached:
    - Netmask
    - NetmaskTree::empty
    - NetmaskTree::size
    - BOOST_CHECK_EQUAL
    - NetmaskTree::lookup
    - NetmaskTree::insert
    - NetmaskTree::NetmaskTree
    - ComboAddress
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_single)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: NetmaskTree::NetmaskTree
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:534,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:535,1
    - Dst: NetmaskTree::size
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:535,1
    - Dst: NetmaskTree::insert
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:538,1
    - Dst: Netmask
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:538,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:538,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:538,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:539,1
    - Dst: NetmaskTree::size
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:539,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:545,1
    - Dst: NetmaskTree::lookup
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:545,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:545,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:545,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:545,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:552,1
    - Dst: NetmaskTree::lookup
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:552,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:552,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:552,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:552,1
    - Dst: NetmaskTree::insert
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:559,1
    - Dst: Netmask
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:559,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:559,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:559,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:560,1
    - Dst: NetmaskTree::size
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:560,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:566,1
    - Dst: NetmaskTree::lookup
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:566,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:566,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:566,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:566,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:566,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:566,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:573,1
    - Dst: NetmaskTree::lookup
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:573,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:573,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:573,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:573,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:573,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:573,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 37
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 576
      start: 532
    functionDepth: 2
    functionLinenumber: 532
    functionLinenumberEnd: 576
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-iputils_hh.cc
    functionUses: 0
    functionsReached:
    - Netmask
    - std::to_string
    - NetmaskTree::size
    - BOOST_CHECK_EQUAL
    - NetmaskTree::lookup
    - NetmaskTree::insert
    - NetmaskTree::NetmaskTree
    - ComboAddress
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_scale)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: NetmaskTree::NetmaskTree
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:580,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:581,1
    - Dst: NetmaskTree::empty
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:581,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:582,1
    - Dst: NetmaskTree::size
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:582,1
    - Dst: NetmaskTree::insert
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:587,1
    - Dst: Netmask
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:587,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:587,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:587,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:589,1
    - Dst: NetmaskTree::size
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:589,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:594,1
    - Dst: NetmaskTree::lookup
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:595,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:596,1
    - Dst: auto::first::getBits
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:596,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:597,1
    - Dst: auto::first::getMaskedNetwork
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:597,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:597,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:598,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:603,1
    - Dst: NetmaskTree::erase
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:604,1
    - Dst: Netmask
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:604,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:606,1
    - Dst: NetmaskTree::size
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:606,1
    - Dst: NetmaskTree::lookup
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:607,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:610,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:611,1
    - Dst: auto::first::getBits
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:611,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:612,1
    - Dst: auto::first::getMaskedNetwork
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:612,1
    - Dst: Netmask
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:612,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:613,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:616,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:621,1
    - Dst: NetmaskTree::size
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:621,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:622,1
    - Dst: NetmaskTree::empty
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:622,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 32
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 623
      start: 578
    functionDepth: 2
    functionLinenumber: 578
    functionLinenumberEnd: 623
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-iputils_hh.cc
    functionUses: 0
    functionsReached:
    - auto::first::getMaskedNetwork
    - Netmask
    - auto::first::getBits
    - NetmaskTree::empty
    - std::to_string
    - NetmaskTree::size
    - NetmaskTree::erase
    - BOOST_CHECK_EQUAL
    - NetmaskTree::lookup
    - NetmaskTree::insert
    - BOOST_REQUIRE
    - ComboAddress::toString
    - BOOST_CHECK
    - NetmaskTree::NetmaskTree
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_removal)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: NetmaskTree::NetmaskTree
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:626,1
    - Dst: Netmask::Netmask
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:633,1
    - Dst: Netmask
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:636,1
    - Dst: std::stringstream::str
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:636,1
    - Dst: NetmaskTree::insert
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:637,1
    - Dst: std::set::insert
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:638,1
    - Dst: Netmask::getNormalized
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:638,1
    - Dst: std::stringstream::str
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:640,1
    - Dst: Netmask
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:642,1
    - Dst: std::stringstream::str
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:642,1
    - Dst: NetmaskTree::insert
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:643,1
    - Dst: std::set::insert
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:644,1
    - Dst: Netmask::getNormalized
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:644,1
    - Dst: std::stringstream::str
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:646,1
    - Dst: Netmask
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:648,1
    - Dst: std::stringstream::str
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:648,1
    - Dst: NetmaskTree::insert
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:649,1
    - Dst: std::set::insert
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:650,1
    - Dst: Netmask::getNormalized
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:650,1
    - Dst: std::stringstream::str
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:652,1
    - Dst: Netmask
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:654,1
    - Dst: std::stringstream::str
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:654,1
    - Dst: NetmaskTree::insert
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:655,1
    - Dst: std::set::insert
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:656,1
    - Dst: Netmask::getNormalized
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:656,1
    - Dst: std::stringstream::str
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:658,1
    - Dst: Netmask
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:660,1
    - Dst: std::stringstream::str
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:660,1
    - Dst: NetmaskTree::insert
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:661,1
    - Dst: std::set::insert
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:662,1
    - Dst: Netmask::getNormalized
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:662,1
    - Dst: std::stringstream::str
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:664,1
    - Dst: Netmask
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:666,1
    - Dst: std::stringstream::str
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:666,1
    - Dst: NetmaskTree::insert
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:667,1
    - Dst: std::set::insert
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:668,1
    - Dst: Netmask::getNormalized
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:668,1
    - Dst: std::stringstream::str
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:670,1
    - Dst: Netmask
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:672,1
    - Dst: std::stringstream::str
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:672,1
    - Dst: NetmaskTree::insert
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:673,1
    - Dst: std::set::insert
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:674,1
    - Dst: Netmask::getNormalized
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:674,1
    - Dst: std::stringstream::str
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:676,1
    - Dst: Netmask
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:678,1
    - Dst: std::stringstream::str
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:678,1
    - Dst: NetmaskTree::insert
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:679,1
    - Dst: std::set::insert
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:680,1
    - Dst: Netmask::getNormalized
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:680,1
    - Dst: std::stringstream::str
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:682,1
    - Dst: Netmask
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:684,1
    - Dst: std::stringstream::str
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:684,1
    - Dst: NetmaskTree::insert
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:685,1
    - Dst: std::set::insert
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:686,1
    - Dst: Netmask::getNormalized
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:686,1
    - Dst: Netmask::Netmask
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:690,1
    - Dst: Netmask
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:693,1
    - Dst: std::stringstream::str
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:693,1
    - Dst: NetmaskTree::insert
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:694,1
    - Dst: std::set::insert
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:695,1
    - Dst: Netmask::getNormalized
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:695,1
    - Dst: std::stringstream::str
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:697,1
    - Dst: Netmask
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:699,1
    - Dst: std::stringstream::str
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:699,1
    - Dst: NetmaskTree::insert
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:700,1
    - Dst: std::set::insert
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:701,1
    - Dst: Netmask::getNormalized
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:701,1
    - Dst: Netmask::Netmask
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:705,1
    - Dst: Netmask
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:708,1
    - Dst: std::stringstream::str
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:708,1
    - Dst: NetmaskTree::insert
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:709,1
    - Dst: std::set::insert
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:710,1
    - Dst: Netmask::getNormalized
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:710,1
    - Dst: std::stringstream::str
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:712,1
    - Dst: Netmask
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:714,1
    - Dst: std::stringstream::str
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:714,1
    - Dst: NetmaskTree::insert
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:715,1
    - Dst: std::set::insert
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:716,1
    - Dst: Netmask::getNormalized
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:716,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:721,1
    - Dst: NetmaskTree::size
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:721,1
    - Dst: std::set::size
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:721,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:722,1
    - Dst: std::distance
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:722,1
    - Dst: NetmaskTree::begin
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:722,1
    - Dst: NetmaskTree::end
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:722,1
    - Dst: std::distance
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:723,1
    - Dst: std::set::begin
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:723,1
    - Dst: std::set::end
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:723,1
    - Dst: first::getNormalized
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:725,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:727,1
    - Dst: std::set::find
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:727,1
    - Dst: std::set::end
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:727,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:730,1
    - Dst: NetmaskTree::lookup
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:730,1
    - Dst: NetmaskTree::insert
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:737,1
    - Dst: NetmaskTree::erase
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:738,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:741,1
    - Dst: NetmaskTree::size
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:741,1
    - Dst: std::set::size
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:741,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:742,1
    - Dst: std::distance
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:742,1
    - Dst: NetmaskTree::begin
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:742,1
    - Dst: NetmaskTree::end
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:742,1
    - Dst: std::distance
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:743,1
    - Dst: std::set::begin
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:743,1
    - Dst: std::set::end
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:743,1
    - Dst: first::getNormalized
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:745,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:747,1
    - Dst: std::set::find
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:747,1
    - Dst: std::set::end
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:747,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:750,1
    - Dst: NetmaskTree::lookup
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:750,1
    - Dst: NetmaskTree::insert
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:757,1
    - Dst: NetmaskTree::erase
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:758,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:761,1
    - Dst: NetmaskTree::size
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:761,1
    - Dst: std::set::size
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:761,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:762,1
    - Dst: std::distance
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:762,1
    - Dst: NetmaskTree::begin
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:762,1
    - Dst: NetmaskTree::end
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:762,1
    - Dst: std::distance
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:763,1
    - Dst: std::set::begin
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:763,1
    - Dst: std::set::end
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:763,1
    - Dst: first::getNormalized
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:765,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:767,1
    - Dst: std::set::find
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:767,1
    - Dst: std::set::end
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:767,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:770,1
    - Dst: NetmaskTree::lookup
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:770,1
    - Dst: NetmaskTree::NetmaskTree
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:774,1
    - Dst: NetmaskTree::swap
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:775,1
    - Dst: NetmaskTree::insert
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:778,1
    - Dst: NetmaskTree::erase
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:779,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:782,1
    - Dst: NetmaskTree::size
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:782,1
    - Dst: std::set::size
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:782,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:783,1
    - Dst: std::distance
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:783,1
    - Dst: NetmaskTree::begin
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:783,1
    - Dst: NetmaskTree::end
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:783,1
    - Dst: std::distance
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:784,1
    - Dst: std::set::begin
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:784,1
    - Dst: std::set::end
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:784,1
    - Dst: first::getNormalized
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:786,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:788,1
    - Dst: std::set::find
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:788,1
    - Dst: std::set::end
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:788,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:791,1
    - Dst: NetmaskTree::lookup
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:791,1
    - Dst: NetmaskTree::begin
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:795,1
    - Dst: NetmaskTree::end
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:795,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:798,1
    - Dst: std::set::size
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:798,1
    - Dst: std::set::size
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:798,1
    - Dst: first::getNormalized
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:800,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:802,1
    - Dst: std::set::find
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:802,1
    - Dst: std::set::end
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:802,1
    - Dst: Netmask::getNormalized
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:805,1
    - Dst: first::getNormalized
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:808,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:813,1
    - Dst: Netmask::Netmask
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:821,1
    - Dst: Netmask
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:823,1
    - Dst: NetmaskTree::erase
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:824,1
    - Dst: std::set::erase
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:825,1
    - Dst: Netmask::getNormalized
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:825,1
    - Dst: Netmask
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:827,1
    - Dst: NetmaskTree::erase
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:828,1
    - Dst: std::set::erase
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:829,1
    - Dst: Netmask::getNormalized
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:829,1
    - Dst: Netmask
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:831,1
    - Dst: NetmaskTree::erase
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:832,1
    - Dst: std::set::erase
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:833,1
    - Dst: Netmask::getNormalized
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:833,1
    - Dst: Netmask
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:835,1
    - Dst: NetmaskTree::erase
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:836,1
    - Dst: std::set::erase
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:837,1
    - Dst: Netmask::getNormalized
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:837,1
    - Dst: Netmask
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:839,1
    - Dst: NetmaskTree::erase
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:840,1
    - Dst: std::set::erase
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:841,1
    - Dst: Netmask::getNormalized
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:841,1
    - Dst: Netmask
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:843,1
    - Dst: NetmaskTree::erase
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:844,1
    - Dst: std::set::erase
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:845,1
    - Dst: Netmask::getNormalized
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:845,1
    - Dst: Netmask
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:847,1
    - Dst: NetmaskTree::erase
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:848,1
    - Dst: std::set::erase
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:849,1
    - Dst: Netmask::getNormalized
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:849,1
    - Dst: Netmask
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:851,1
    - Dst: NetmaskTree::erase
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:852,1
    - Dst: std::set::erase
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:853,1
    - Dst: Netmask::getNormalized
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:853,1
    - Dst: Netmask
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:855,1
    - Dst: NetmaskTree::erase
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:856,1
    - Dst: std::set::erase
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:857,1
    - Dst: Netmask::getNormalized
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:857,1
    - Dst: Netmask
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:859,1
    - Dst: NetmaskTree::erase
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:860,1
    - Dst: std::set::erase
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:861,1
    - Dst: Netmask::getNormalized
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:861,1
    - Dst: Netmask
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:863,1
    - Dst: NetmaskTree::erase
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:864,1
    - Dst: std::set::erase
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:865,1
    - Dst: Netmask::getNormalized
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:865,1
    - Dst: Netmask
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:867,1
    - Dst: NetmaskTree::erase
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:868,1
    - Dst: std::set::erase
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:869,1
    - Dst: Netmask::getNormalized
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:869,1
    - Dst: Netmask
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:871,1
    - Dst: NetmaskTree::erase
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:872,1
    - Dst: std::set::erase
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:873,1
    - Dst: Netmask::getNormalized
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:873,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:877,1
    - Dst: NetmaskTree::size
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:877,1
    - Dst: std::set::size
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:877,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:878,1
    - Dst: std::distance
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:878,1
    - Dst: NetmaskTree::begin
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:878,1
    - Dst: NetmaskTree::end
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:878,1
    - Dst: std::distance
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:879,1
    - Dst: std::set::begin
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:879,1
    - Dst: std::set::end
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:879,1
    - Dst: first::getNormalized
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:881,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:883,1
    - Dst: std::set::find
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:883,1
    - Dst: std::set::end
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:883,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:886,1
    - Dst: NetmaskTree::lookup
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:886,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 154
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 888
      start: 625
    functionDepth: 2
    functionLinenumber: 625
    functionLinenumberEnd: 888
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-iputils_hh.cc
    functionUses: 0
    functionsReached:
    - std::set::erase
    - std::distance
    - NetmaskTree::begin
    - NetmaskTree::lookup
    - std::stringstream::str
    - first::getNormalized
    - std::set::size
    - NetmaskTree::end
    - std::set::insert
    - Netmask
    - std::set::end
    - Netmask::getNormalized
    - NetmaskTree::swap
    - std::set::find
    - NetmaskTree::size
    - NetmaskTree::erase
    - Netmask::Netmask
    - BOOST_CHECK_EQUAL
    - NetmaskTree::insert
    - std::set::begin
    - BOOST_CHECK
    - NetmaskTree::NetmaskTree
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_iterator)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: caContainerToString
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:899,1
    - Dst: caContainerToString
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:900,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:901,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:902,1
    - Dst: caContainerToString
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:904,1
    - Dst: caContainerToString
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:905,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:906,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:907,1
    - Dst: caContainerToString
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:909,1
    - Dst: caContainerToString
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:910,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:911,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:912,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 913
      start: 890
    functionDepth: 0
    functionLinenumber: 890
    functionLinenumberEnd: 913
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-iputils_hh.cc
    functionUses: 0
    functionsReached:
    - caContainerToString
    - BOOST_CHECK_EQUAL
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_ComboAddress_caContainerToString)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:939,1
    - Dst: parseIPAndPort
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:939,1
    - Dst: parseIPAndPort
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:941,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:942,1
    - Dst: ComboAddress::toStringWithPort
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:942,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:942,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 945
      start: 915
    functionDepth: 0
    functionLinenumber: 915
    functionLinenumberEnd: 945
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-iputils_hh.cc
    functionUses: 0
    functionsReached:
    - ComboAddress::toStringWithPort
    - BOOST_CHECK_EQUAL
    - BOOST_CHECK_THROW
    - parseIPAndPort
    - ComboAddress
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_parseIPAndPort)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:967,1
    - Dst: ComboAddress::isUnspecified
      Src: /src/pdns/pdns/recursordist/test-iputils_hh.cc:967,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 969
      start: 947
    functionDepth: 0
    functionLinenumber: 947
    functionLinenumberEnd: 969
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-iputils_hh.cc
    functionUses: 0
    functionsReached:
    - BOOST_CHECK_EQUAL
    - ComboAddress::isUnspecified
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_unspecified)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/histogram.hh:40,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 3
    argNames:
    - name
    - boundary
    - val
    argTypes:
    - std::string
    - uint64_t
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 39
    functionDepth: 0
    functionLinenumber: 39
    functionLinenumberEnd: 40
    functionName: pdns::Bucket
    functionSourceFile: /src/pdns/pdns/recursordist/histogram.hh
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void Bucket(std::string name, uint64_t boundary, uint64_t val)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 45
    functionDepth: 0
    functionLinenumber: 45
    functionLinenumberEnd: 45
    functionName: pdns::Bucket
    functionSourceFile: /src/pdns/pdns/recursordist/histogram.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Bucket(const Bucket&)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/pdns/pdns/recursordist/histogram.hh:48,1
    - Dst: assert
      Src: /src/pdns/pdns/recursordist/histogram.hh:49,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - Bucket
    assertStmts:
    - condition: (d_name == rhs.d_name)
      pos:
        line_end: 47
        line_start: 47
        source_file: /src/pdns/pdns/recursordist/histogram.hh
    - condition: (d_boundary == rhs.d_boundary)
      pos:
        line_end: 48
        line_start: 48
        source_file: /src/pdns/pdns/recursordist/histogram.hh
    constantsTouched: []
    func_position:
      end: 52
      start: 46
    functionDepth: 0
    functionLinenumber: 46
    functionLinenumberEnd: 52
    functionName: '& operator=(const Bucket& rhs)'
    functionSourceFile: /src/pdns/pdns/recursordist/histogram.hh
    functionUses: 0
    functionsReached:
    - assert
    linkageType: ''
    returnType: Bucket
    signature: Bucket & operator=(const Bucket& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 58
    functionDepth: 0
    functionLinenumber: 58
    functionLinenumberEnd: 58
    functionName: pdns::AtomicBucket
    functionSourceFile: /src/pdns/pdns/recursordist/histogram.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void AtomicBucket()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/histogram.hh:60,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 3
    argNames:
    - name
    - boundary
    - val
    argTypes:
    - std::string
    - uint64_t
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 59
    functionDepth: 0
    functionLinenumber: 59
    functionLinenumberEnd: 60
    functionName: pdns::AtomicBucket
    functionSourceFile: /src/pdns/pdns/recursordist/histogram.hh
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void AtomicBucket(std::string name, uint64_t boundary, uint64_t val)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: d_count::load
      Src: /src/pdns/pdns/recursordist/histogram.hh:62,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - AtomicBucket
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 61
    functionDepth: 0
    functionLinenumber: 61
    functionLinenumberEnd: 62
    functionName: pdns::AtomicBucket
    functionSourceFile: /src/pdns/pdns/recursordist/histogram.hh
    functionUses: 0
    functionsReached:
    - d_count::load
    linkageType: ''
    returnType: void
    signature: void AtomicBucket(const AtomicBucket& rhs)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: std::is_sorted
      Src: /src/pdns/pdns/recursordist/histogram.hh:76,1
    - Dst: cbegin
      Src: /src/pdns/pdns/recursordist/histogram.hh:76,1
    - Dst: cend
      Src: /src/pdns/pdns/recursordist/histogram.hh:76,1
    - Dst: std::invalid_argument
      Src: /src/pdns/pdns/recursordist/histogram.hh:77,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/histogram.hh:79,1
    - Dst: std::invalid_argument
      Src: /src/pdns/pdns/recursordist/histogram.hh:80,1
    - Dst: std::invalid_argument
      Src: /src/pdns/pdns/recursordist/histogram.hh:83,1
    - Dst: reserve
      Src: /src/pdns/pdns/recursordist/histogram.hh:85,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/histogram.hh:85,1
    - Dst: std::invalid_argument
      Src: /src/pdns/pdns/recursordist/histogram.hh:89,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/histogram.hh:91,1
    - Dst: emplace_back
      Src: /src/pdns/pdns/recursordist/histogram.hh:92,1
    - Dst: emplace_back
      Src: /src/pdns/pdns/recursordist/histogram.hh:97,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/recursordist/histogram.hh:97,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 18
    argCount: 2
    argNames:
    - ' prefix'
    - ' boundaries'
    argTypes:
    - std::string
    - std::vector<uint64_t>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 73
    functionDepth: 0
    functionLinenumber: 73
    functionLinenumberEnd: 98
    functionName: pdns::BaseHistogram::BaseHistogram
    functionSourceFile: /src/pdns/pdns/recursordist/histogram.hh
    functionUses: 0
    functionsReached:
    - pdns::max
    - std::to_string
    - std::invalid_argument
    - size
    - reserve
    - cbegin
    - cend
    - emplace_back
    - std::is_sorted
    linkageType: ''
    returnType: void
    signature: void BaseHistogram(const std::string& prefix, const std::vector<uint64_t>&
      boundaries)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::BaseHistogram::to125
      Src: /src/pdns/pdns/recursordist/histogram.hh:101,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 3
    argNames:
    - ' prefix'
    - start
    - num
    argTypes:
    - std::string
    - uint64_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 100
    functionDepth: 0
    functionLinenumber: 100
    functionLinenumberEnd: 103
    functionName: pdns::BaseHistogram::BaseHistogram
    functionSourceFile: /src/pdns/pdns/recursordist/histogram.hh
    functionUses: 0
    functionsReached:
    - pdns::BaseHistogram::to125
    linkageType: ''
    returnType: void
    signature: void BaseHistogram(const std::string& prefix, uint64_t start, int num)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 105
    functionDepth: 0
    functionLinenumber: 105
    functionLinenumberEnd: 108
    functionName: pdns::BaseHistogram::getName
    functionSourceFile: /src/pdns/pdns/recursordist/histogram.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string getName() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 113
      start: 110
    functionDepth: 0
    functionLinenumber: 110
    functionLinenumberEnd: 113
    functionName: pdns::BaseHistogram::getSum
    functionSourceFile: /src/pdns/pdns/recursordist/histogram.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t getSum() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 118
      start: 115
    functionDepth: 0
    functionLinenumber: 115
    functionLinenumberEnd: 118
    functionName: '& getRawData() const'
    functionSourceFile: /src/pdns/pdns/recursordist/histogram.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::vector<B>
    signature: std::vector<B> & getRawData() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - i
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 120
    functionDepth: 0
    functionLinenumber: 120
    functionLinenumberEnd: 123
    functionName: pdns::BaseHistogram::getCount
    functionSourceFile: /src/pdns/pdns/recursordist/histogram.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t getCount(size_t i) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::vector::reserve
      Src: /src/pdns/pdns/recursordist/histogram.hh:128,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/histogram.hh:128,1
    - Dst: std::vector::emplace_back
      Src: /src/pdns/pdns/recursordist/histogram.hh:132,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 135
      start: 125
    functionDepth: 0
    functionLinenumber: 125
    functionLinenumberEnd: 135
    functionName: pdns::BaseHistogram::getCumulativeBuckets
    functionSourceFile: /src/pdns/pdns/recursordist/histogram.hh
    functionUses: 0
    functionsReached:
    - std::vector::reserve
    - std::vector::emplace_back
    - size
    linkageType: ''
    returnType: std::vector<B>
    signature: std::vector<B> getCumulativeBuckets() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::vector::reserve
      Src: /src/pdns/pdns/recursordist/histogram.hh:140,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/histogram.hh:140,1
    - Dst: std::vector::emplace_back
      Src: /src/pdns/pdns/recursordist/histogram.hh:144,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 137
    functionDepth: 0
    functionLinenumber: 137
    functionLinenumberEnd: 147
    functionName: pdns::BaseHistogram::getCumulativeCounts
    functionSourceFile: /src/pdns/pdns/recursordist/histogram.hh
    functionUses: 0
    functionsReached:
    - std::vector::reserve
    - std::vector::emplace_back
    - size
    linkageType: ''
    returnType: std::vector<uint64_t>
    signature: std::vector<uint64_t> getCumulativeCounts() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - b
    - ' bu'
    argTypes:
    - uint64_t
    - B
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 152
      start: 149
    functionDepth: 0
    functionLinenumber: 149
    functionLinenumberEnd: 152
    functionName: pdns::BaseHistogram::lessOrEqual
    functionSourceFile: /src/pdns/pdns/recursordist/histogram.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool lessOrEqual(uint64_t b, const B& bu)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::upper_bound
      Src: /src/pdns/pdns/recursordist/histogram.hh:156,1
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/histogram.hh:156,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/histogram.hh:156,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - d
    argTypes:
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 160
      start: 154
    functionDepth: 0
    functionLinenumber: 154
    functionLinenumberEnd: 160
    functionName: operator()(uint64_t d) const
    functionSourceFile: /src/pdns/pdns/recursordist/histogram.hh
    functionUses: 0
    functionsReached:
    - std::upper_bound
    - end
    - begin
    linkageType: ''
    returnType: void
    signature: void operator()(uint64_t d) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/pdns/pdns/recursordist/histogram.hh:164,1
    - Dst: assert
      Src: /src/pdns/pdns/recursordist/histogram.hh:165,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/histogram.hh:165,1
    - Dst: d_buckets::size
      Src: /src/pdns/pdns/recursordist/histogram.hh:165,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/histogram.hh:166,1
    - Dst: assert
      Src: /src/pdns/pdns/recursordist/histogram.hh:167,1
    - Dst: assert
      Src: /src/pdns/pdns/recursordist/histogram.hh:168,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - BaseHistogram
    assertStmts:
    - condition: (d_name == rhs.d_name)
      pos:
        line_end: 163
        line_start: 163
        source_file: /src/pdns/pdns/recursordist/histogram.hh
    - condition: (d_buckets.size() == rhs.d_buckets.size())
      pos:
        line_end: 164
        line_start: 164
        source_file: /src/pdns/pdns/recursordist/histogram.hh
    - condition: (d_buckets[bucket].d_name == rhs.d_buckets[bucket].d_name)
      pos:
        line_end: 166
        line_start: 166
        source_file: /src/pdns/pdns/recursordist/histogram.hh
    - condition: (d_buckets[bucket].d_boundary == rhs.d_buckets[bucket].d_boundary)
      pos:
        line_end: 167
        line_start: 167
        source_file: /src/pdns/pdns/recursordist/histogram.hh
    constantsTouched: []
    func_position:
      end: 173
      start: 162
    functionDepth: 0
    functionLinenumber: 162
    functionLinenumberEnd: 173
    functionName: '& operator+=(const BaseHistogram& rhs)'
    functionSourceFile: /src/pdns/pdns/recursordist/histogram.hh
    functionUses: 0
    functionsReached:
    - d_buckets::size
    - size
    - assert
    linkageType: ''
    returnType: BaseHistogram
    signature: BaseHistogram & operator+=(const BaseHistogram& rhs)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: std::vector::reserve
      Src: /src/pdns/pdns/recursordist/histogram.hh:183,1
    - Dst: std::vector::emplace_back
      Src: /src/pdns/pdns/recursordist/histogram.hh:184,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/recursordist/histogram.hh:190,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/recursordist/histogram.hh:194,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/recursordist/histogram.hh:198,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 19
    argCount: 2
    argNames:
    - start
    - num
    argTypes:
    - uint64_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 202
      start: 180
    functionDepth: 0
    functionLinenumber: 180
    functionLinenumberEnd: 202
    functionName: pdns::BaseHistogram::to125
    functionSourceFile: /src/pdns/pdns/recursordist/histogram.hh
    functionUses: 3
    functionsReached:
    - std::vector::reserve
    - std::vector::push_back
    - std::vector::emplace_back
    linkageType: ''
    returnType: std::vector<uint64_t>
    signature: std::vector<uint64_t> to125(uint64_t start, int num)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/histogram.hh:40,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 3
    argNames:
    - name
    - boundary
    - val
    argTypes:
    - std::string
    - uint64_t
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 39
    functionDepth: 0
    functionLinenumber: 39
    functionLinenumberEnd: 40
    functionName: pdns::Bucket
    functionSourceFile: /src/pdns/pdns/recursordist/histogram.hh
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void Bucket(std::string name, uint64_t boundary, uint64_t val)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 45
    functionDepth: 0
    functionLinenumber: 45
    functionLinenumberEnd: 45
    functionName: pdns::Bucket
    functionSourceFile: /src/pdns/pdns/recursordist/histogram.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Bucket(const Bucket&)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/pdns/pdns/recursordist/histogram.hh:48,1
    - Dst: assert
      Src: /src/pdns/pdns/recursordist/histogram.hh:49,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - Bucket
    assertStmts:
    - condition: (d_name == rhs.d_name)
      pos:
        line_end: 47
        line_start: 47
        source_file: /src/pdns/pdns/recursordist/histogram.hh
    - condition: (d_boundary == rhs.d_boundary)
      pos:
        line_end: 48
        line_start: 48
        source_file: /src/pdns/pdns/recursordist/histogram.hh
    constantsTouched: []
    func_position:
      end: 52
      start: 46
    functionDepth: 0
    functionLinenumber: 46
    functionLinenumberEnd: 52
    functionName: '& operator=(const Bucket& rhs)'
    functionSourceFile: /src/pdns/pdns/recursordist/histogram.hh
    functionUses: 0
    functionsReached:
    - assert
    linkageType: ''
    returnType: Bucket
    signature: Bucket & operator=(const Bucket& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 58
    functionDepth: 0
    functionLinenumber: 58
    functionLinenumberEnd: 58
    functionName: pdns::AtomicBucket
    functionSourceFile: /src/pdns/pdns/recursordist/histogram.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void AtomicBucket()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/histogram.hh:60,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 3
    argNames:
    - name
    - boundary
    - val
    argTypes:
    - std::string
    - uint64_t
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 59
    functionDepth: 0
    functionLinenumber: 59
    functionLinenumberEnd: 60
    functionName: pdns::AtomicBucket
    functionSourceFile: /src/pdns/pdns/recursordist/histogram.hh
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void AtomicBucket(std::string name, uint64_t boundary, uint64_t val)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: d_count::load
      Src: /src/pdns/pdns/recursordist/histogram.hh:62,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - AtomicBucket
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 61
    functionDepth: 0
    functionLinenumber: 61
    functionLinenumberEnd: 62
    functionName: pdns::AtomicBucket
    functionSourceFile: /src/pdns/pdns/recursordist/histogram.hh
    functionUses: 0
    functionsReached:
    - d_count::load
    linkageType: ''
    returnType: void
    signature: void AtomicBucket(const AtomicBucket& rhs)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: std::is_sorted
      Src: /src/pdns/pdns/recursordist/histogram.hh:76,1
    - Dst: cbegin
      Src: /src/pdns/pdns/recursordist/histogram.hh:76,1
    - Dst: cend
      Src: /src/pdns/pdns/recursordist/histogram.hh:76,1
    - Dst: std::invalid_argument
      Src: /src/pdns/pdns/recursordist/histogram.hh:77,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/histogram.hh:79,1
    - Dst: std::invalid_argument
      Src: /src/pdns/pdns/recursordist/histogram.hh:80,1
    - Dst: std::invalid_argument
      Src: /src/pdns/pdns/recursordist/histogram.hh:83,1
    - Dst: reserve
      Src: /src/pdns/pdns/recursordist/histogram.hh:85,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/histogram.hh:85,1
    - Dst: std::invalid_argument
      Src: /src/pdns/pdns/recursordist/histogram.hh:89,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/histogram.hh:91,1
    - Dst: emplace_back
      Src: /src/pdns/pdns/recursordist/histogram.hh:92,1
    - Dst: emplace_back
      Src: /src/pdns/pdns/recursordist/histogram.hh:97,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/recursordist/histogram.hh:97,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 18
    argCount: 2
    argNames:
    - ' prefix'
    - ' boundaries'
    argTypes:
    - std::string
    - std::vector<uint64_t>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 73
    functionDepth: 0
    functionLinenumber: 73
    functionLinenumberEnd: 98
    functionName: pdns::BaseHistogram::BaseHistogram
    functionSourceFile: /src/pdns/pdns/recursordist/histogram.hh
    functionUses: 0
    functionsReached:
    - pdns::max
    - std::to_string
    - std::invalid_argument
    - size
    - reserve
    - cbegin
    - cend
    - emplace_back
    - std::is_sorted
    linkageType: ''
    returnType: void
    signature: void BaseHistogram(const std::string& prefix, const std::vector<uint64_t>&
      boundaries)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::BaseHistogram::to125
      Src: /src/pdns/pdns/recursordist/histogram.hh:101,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 3
    argNames:
    - ' prefix'
    - start
    - num
    argTypes:
    - std::string
    - uint64_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 100
    functionDepth: 0
    functionLinenumber: 100
    functionLinenumberEnd: 103
    functionName: pdns::BaseHistogram::BaseHistogram
    functionSourceFile: /src/pdns/pdns/recursordist/histogram.hh
    functionUses: 0
    functionsReached:
    - pdns::BaseHistogram::to125
    linkageType: ''
    returnType: void
    signature: void BaseHistogram(const std::string& prefix, uint64_t start, int num)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 105
    functionDepth: 0
    functionLinenumber: 105
    functionLinenumberEnd: 108
    functionName: pdns::BaseHistogram::getName
    functionSourceFile: /src/pdns/pdns/recursordist/histogram.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string getName() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 113
      start: 110
    functionDepth: 0
    functionLinenumber: 110
    functionLinenumberEnd: 113
    functionName: pdns::BaseHistogram::getSum
    functionSourceFile: /src/pdns/pdns/recursordist/histogram.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t getSum() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 118
      start: 115
    functionDepth: 0
    functionLinenumber: 115
    functionLinenumberEnd: 118
    functionName: '& getRawData() const'
    functionSourceFile: /src/pdns/pdns/recursordist/histogram.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::vector<B>
    signature: std::vector<B> & getRawData() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - i
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 120
    functionDepth: 0
    functionLinenumber: 120
    functionLinenumberEnd: 123
    functionName: pdns::BaseHistogram::getCount
    functionSourceFile: /src/pdns/pdns/recursordist/histogram.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t getCount(size_t i) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::vector::reserve
      Src: /src/pdns/pdns/recursordist/histogram.hh:128,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/histogram.hh:128,1
    - Dst: std::vector::emplace_back
      Src: /src/pdns/pdns/recursordist/histogram.hh:132,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 135
      start: 125
    functionDepth: 0
    functionLinenumber: 125
    functionLinenumberEnd: 135
    functionName: pdns::BaseHistogram::getCumulativeBuckets
    functionSourceFile: /src/pdns/pdns/recursordist/histogram.hh
    functionUses: 0
    functionsReached:
    - std::vector::reserve
    - std::vector::emplace_back
    - size
    linkageType: ''
    returnType: std::vector<B>
    signature: std::vector<B> getCumulativeBuckets() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::vector::reserve
      Src: /src/pdns/pdns/recursordist/histogram.hh:140,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/histogram.hh:140,1
    - Dst: std::vector::emplace_back
      Src: /src/pdns/pdns/recursordist/histogram.hh:144,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 137
    functionDepth: 0
    functionLinenumber: 137
    functionLinenumberEnd: 147
    functionName: pdns::BaseHistogram::getCumulativeCounts
    functionSourceFile: /src/pdns/pdns/recursordist/histogram.hh
    functionUses: 0
    functionsReached:
    - std::vector::reserve
    - std::vector::emplace_back
    - size
    linkageType: ''
    returnType: std::vector<uint64_t>
    signature: std::vector<uint64_t> getCumulativeCounts() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - b
    - ' bu'
    argTypes:
    - uint64_t
    - B
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 152
      start: 149
    functionDepth: 0
    functionLinenumber: 149
    functionLinenumberEnd: 152
    functionName: pdns::BaseHistogram::lessOrEqual
    functionSourceFile: /src/pdns/pdns/recursordist/histogram.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool lessOrEqual(uint64_t b, const B& bu)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::upper_bound
      Src: /src/pdns/pdns/recursordist/histogram.hh:156,1
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/histogram.hh:156,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/histogram.hh:156,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - d
    argTypes:
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 160
      start: 154
    functionDepth: 0
    functionLinenumber: 154
    functionLinenumberEnd: 160
    functionName: operator()(uint64_t d) const
    functionSourceFile: /src/pdns/pdns/recursordist/histogram.hh
    functionUses: 0
    functionsReached:
    - std::upper_bound
    - end
    - begin
    linkageType: ''
    returnType: void
    signature: void operator()(uint64_t d) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/pdns/pdns/recursordist/histogram.hh:164,1
    - Dst: assert
      Src: /src/pdns/pdns/recursordist/histogram.hh:165,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/histogram.hh:165,1
    - Dst: d_buckets::size
      Src: /src/pdns/pdns/recursordist/histogram.hh:165,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/histogram.hh:166,1
    - Dst: assert
      Src: /src/pdns/pdns/recursordist/histogram.hh:167,1
    - Dst: assert
      Src: /src/pdns/pdns/recursordist/histogram.hh:168,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - BaseHistogram
    assertStmts:
    - condition: (d_name == rhs.d_name)
      pos:
        line_end: 163
        line_start: 163
        source_file: /src/pdns/pdns/recursordist/histogram.hh
    - condition: (d_buckets.size() == rhs.d_buckets.size())
      pos:
        line_end: 164
        line_start: 164
        source_file: /src/pdns/pdns/recursordist/histogram.hh
    - condition: (d_buckets[bucket].d_name == rhs.d_buckets[bucket].d_name)
      pos:
        line_end: 166
        line_start: 166
        source_file: /src/pdns/pdns/recursordist/histogram.hh
    - condition: (d_buckets[bucket].d_boundary == rhs.d_buckets[bucket].d_boundary)
      pos:
        line_end: 167
        line_start: 167
        source_file: /src/pdns/pdns/recursordist/histogram.hh
    constantsTouched: []
    func_position:
      end: 173
      start: 162
    functionDepth: 0
    functionLinenumber: 162
    functionLinenumberEnd: 173
    functionName: '& operator+=(const BaseHistogram& rhs)'
    functionSourceFile: /src/pdns/pdns/recursordist/histogram.hh
    functionUses: 0
    functionsReached:
    - d_buckets::size
    - size
    - assert
    linkageType: ''
    returnType: BaseHistogram
    signature: BaseHistogram & operator+=(const BaseHistogram& rhs)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: std::vector::reserve
      Src: /src/pdns/pdns/recursordist/histogram.hh:183,1
    - Dst: std::vector::emplace_back
      Src: /src/pdns/pdns/recursordist/histogram.hh:184,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/recursordist/histogram.hh:190,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/recursordist/histogram.hh:194,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/recursordist/histogram.hh:198,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 19
    argCount: 2
    argNames:
    - start
    - num
    argTypes:
    - uint64_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 202
      start: 180
    functionDepth: 0
    functionLinenumber: 180
    functionLinenumberEnd: 202
    functionName: pdns::BaseHistogram::to125
    functionSourceFile: /src/pdns/pdns/recursordist/histogram.hh
    functionUses: 4
    functionsReached:
    - std::vector::reserve
    - std::vector::push_back
    - std::vector::emplace_back
    linkageType: ''
    returnType: std::vector<uint64_t>
    signature: std::vector<uint64_t> to125(uint64_t start, int num)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - data_
    - size_
    argTypes:
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 35
      start: 32
    functionDepth: 0
    functionLinenumber: 32
    functionLinenumberEnd: 35
    functionName: pdns::views::UnsignedCharView::UnsignedCharView
    functionSourceFile: /src/pdns/pdns/recursordist/views.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void UnsignedCharView(const char* data_, size_t size_)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/recursordist/views.hh:38,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - data_
    - size_
    argTypes:
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 37
    functionDepth: 0
    functionLinenumber: 37
    functionLinenumberEnd: 40
    functionName: pdns::views::UnsignedCharView::UnsignedCharView
    functionSourceFile: /src/pdns/pdns/recursordist/views.hh
    functionUses: 0
    functionsReached:
    - reinterpret_cast<const char*>
    linkageType: ''
    returnType: void
    signature: void UnsignedCharView(const unsigned char* data_, size_t size_)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: reinterpret_cast<const unsigned char&>
      Src: /src/pdns/pdns/recursordist/views.hh:45,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/views.hh:45,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - pos
    argTypes:
    - size_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 46
    functionName: '& at(size_type pos) const'
    functionSourceFile: /src/pdns/pdns/recursordist/views.hh
    functionUses: 0
    functionsReached:
    - reinterpret_cast<const unsigned char&>
    - at
    linkageType: ''
    returnType: unsigned char
    signature: unsigned char & at(size_type pos) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: reinterpret_cast<const unsigned char&>
      Src: /src/pdns/pdns/recursordist/views.hh:50,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - pos
    argTypes:
    - size_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 48
    functionDepth: 0
    functionLinenumber: 48
    functionLinenumberEnd: 51
    functionName: '& operator[](size_type pos) const'
    functionSourceFile: /src/pdns/pdns/recursordist/views.hh
    functionUses: 0
    functionsReached:
    - reinterpret_cast<const unsigned char&>
    linkageType: ''
    returnType: unsigned char
    signature: unsigned char & operator[](size_type pos) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/recursordist/views.hh:55,1
    - Dst: pdns::views::UnsignedCharView::data
      Src: /src/pdns/pdns/recursordist/views.hh:55,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 53
    functionDepth: 0
    functionLinenumber: 53
    functionLinenumberEnd: 56
    functionName: pdns::views::UnsignedCharView::data
    functionSourceFile: /src/pdns/pdns/recursordist/views.hh
    functionUses: 8
    functionsReached:
    - reinterpret_cast<const unsigned char*>
    - pdns::views::UnsignedCharView::data
    linkageType: ''
    returnType: unsigned char
    signature: unsigned char * data() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::views::UnsignedCharView::size
      Src: /src/pdns/pdns/recursordist/views.hh:61,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 59
    functionDepth: 0
    functionLinenumber: 59
    functionLinenumberEnd: 62
    functionName: pdns::views::UnsignedCharView::size
    functionSourceFile: /src/pdns/pdns/recursordist/views.hh
    functionUses: 11
    functionsReached:
    - pdns::views::UnsignedCharView::size
    linkageType: ''
    returnType: size_t
    signature: size_t size() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::views::UnsignedCharView::length
      Src: /src/pdns/pdns/recursordist/views.hh:66,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 64
    functionDepth: 0
    functionLinenumber: 64
    functionLinenumberEnd: 67
    functionName: pdns::views::UnsignedCharView::length
    functionSourceFile: /src/pdns/pdns/recursordist/views.hh
    functionUses: 8
    functionsReached:
    - pdns::views::UnsignedCharView::length
    linkageType: ''
    returnType: size_t
    signature: size_t length() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - data_
    - size_
    argTypes:
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 35
      start: 32
    functionDepth: 0
    functionLinenumber: 32
    functionLinenumberEnd: 35
    functionName: pdns::views::UnsignedCharView::UnsignedCharView
    functionSourceFile: /src/pdns/pdns/recursordist/views.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void UnsignedCharView(const char* data_, size_t size_)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/recursordist/views.hh:38,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - data_
    - size_
    argTypes:
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 37
    functionDepth: 0
    functionLinenumber: 37
    functionLinenumberEnd: 40
    functionName: pdns::views::UnsignedCharView::UnsignedCharView
    functionSourceFile: /src/pdns/pdns/recursordist/views.hh
    functionUses: 0
    functionsReached:
    - reinterpret_cast<const char*>
    linkageType: ''
    returnType: void
    signature: void UnsignedCharView(const unsigned char* data_, size_t size_)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: reinterpret_cast<const unsigned char&>
      Src: /src/pdns/pdns/recursordist/views.hh:45,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/views.hh:45,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - pos
    argTypes:
    - size_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 46
    functionName: '& at(size_type pos) const'
    functionSourceFile: /src/pdns/pdns/recursordist/views.hh
    functionUses: 0
    functionsReached:
    - reinterpret_cast<const unsigned char&>
    - at
    linkageType: ''
    returnType: unsigned char
    signature: unsigned char & at(size_type pos) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: reinterpret_cast<const unsigned char&>
      Src: /src/pdns/pdns/recursordist/views.hh:50,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - pos
    argTypes:
    - size_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 48
    functionDepth: 0
    functionLinenumber: 48
    functionLinenumberEnd: 51
    functionName: '& operator[](size_type pos) const'
    functionSourceFile: /src/pdns/pdns/recursordist/views.hh
    functionUses: 0
    functionsReached:
    - reinterpret_cast<const unsigned char&>
    linkageType: ''
    returnType: unsigned char
    signature: unsigned char & operator[](size_type pos) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/recursordist/views.hh:55,1
    - Dst: pdns::views::UnsignedCharView::data
      Src: /src/pdns/pdns/recursordist/views.hh:55,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 53
    functionDepth: 0
    functionLinenumber: 53
    functionLinenumberEnd: 56
    functionName: pdns::views::UnsignedCharView::data
    functionSourceFile: /src/pdns/pdns/recursordist/views.hh
    functionUses: 9
    functionsReached:
    - reinterpret_cast<const unsigned char*>
    - pdns::views::UnsignedCharView::data
    linkageType: ''
    returnType: unsigned char
    signature: unsigned char * data() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::views::UnsignedCharView::size
      Src: /src/pdns/pdns/recursordist/views.hh:61,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 59
    functionDepth: 0
    functionLinenumber: 59
    functionLinenumberEnd: 62
    functionName: pdns::views::UnsignedCharView::size
    functionSourceFile: /src/pdns/pdns/recursordist/views.hh
    functionUses: 12
    functionsReached:
    - pdns::views::UnsignedCharView::size
    linkageType: ''
    returnType: size_t
    signature: size_t size() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::views::UnsignedCharView::length
      Src: /src/pdns/pdns/recursordist/views.hh:66,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 64
    functionDepth: 0
    functionLinenumber: 64
    functionLinenumberEnd: 67
    functionName: pdns::views::UnsignedCharView::length
    functionSourceFile: /src/pdns/pdns/recursordist/views.hh
    functionUses: 9
    functionsReached:
    - pdns::views::UnsignedCharView::length
    linkageType: ''
    returnType: size_t
    signature: size_t length() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:16,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:18,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:24,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:24,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:25,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:26,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:26,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:28,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:29,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:29,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:30,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:31,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:31,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:32,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:32,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:33,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 13
    functionDepth: 1
    functionLinenumber: 13
    functionLinenumberEnd: 38
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc1.cc
    functionUses: 0
    functionsReached:
    - BOOST_CHECK
    - primeHints
    - QType
    - BOOST_CHECK_EQUAL
    - initSR
    - std::unique_ptr::getValidationState
    - std::unique_ptr::beginResolve
    - vector::size
    - vector::clear
    - BOOST_REQUIRE_EQUAL
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_root_primed)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:43,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:45,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:53,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:58,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:62,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:62,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:65,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:66,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:75,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:75,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:76,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:77,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:77,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:78,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 20
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 40
    functionDepth: 1
    functionLinenumber: 40
    functionLinenumberEnd: 79
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc1.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - std::unique_ptr::setAsyncCallback
    - primeHints
    - QType
    - addRecordToLW
    - BOOST_CHECK_EQUAL
    - initSR
    - std::unique_ptr::beginResolve
    - std::string
    - vector::size
    - BOOST_REQUIRE_EQUAL
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_root_primed_ns)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:84,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:88,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:92,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:93,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:94,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:95,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:106,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:106,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:106,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:107,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:108,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:108,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:109,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 81
    functionDepth: 1
    functionLinenumber: 81
    functionLinenumberEnd: 110
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc1.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - std::unique_ptr::setAsyncCallback
    - QType
    - addRecordToLW
    - DNSName
    - initSR
    - BOOST_CHECK_EQUAL
    - std::unique_ptr::beginResolve
    - vector::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_root_not_primed)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:115,1
    - Dst: toConsole
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:117,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:124,1
    - Dst: std::set::insert
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:125,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:130,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:130,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:130,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:131,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:132,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:132,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:133,1
    - Dst: std::set::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:133,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:136,1
    - Dst: SyncRes::getServerFailsCount
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:136,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 138
      start: 112
    functionDepth: 2
    functionLinenumber: 112
    functionLinenumberEnd: 138
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc1.cc
    functionUses: 0
    functionsReached:
    - std::unique_ptr::setAsyncCallback
    - std::set::size
    - BOOST_CHECK
    - QType
    - toConsole
    - DNSName
    - initSR
    - BOOST_CHECK_EQUAL
    - SyncRes::getServerFailsCount
    - std::set::insert
    - std::unique_ptr::beginResolve
    - vector::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_root_not_primed_and_no_response)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:143,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:145,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:148,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:151,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:155,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:155,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:158,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:159,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:166,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:167,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:169,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:170,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:180,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:180,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:181,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:182,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:182,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:185,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:186,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:186,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:187,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:188,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:188,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:191,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:192,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:192,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:193,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:194,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:194,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 33
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 195
      start: 140
    functionDepth: 1
    functionLinenumber: 140
    functionLinenumberEnd: 195
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc1.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - std::unique_ptr::setAsyncCallback
    - primeHints
    - QType
    - addRecordToLW
    - BOOST_CHECK_EQUAL
    - initSR
    - std::unique_ptr::beginResolve
    - std::string
    - vector::size
    - vector::clear
    - BOOST_REQUIRE_EQUAL
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_root_ns_poison_resistance)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:200,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:202,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:218,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:222,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:222,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:225,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:225,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:226,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:226,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:233,1
    - Dst: Utility::gettimeofday
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:236,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:239,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:239,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:240,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:241,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:241,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:242,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:244,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:245,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:245,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:246,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:247,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:247,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:248,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:248,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:248,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:250,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:251,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:251,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:252,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:253,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:253,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:254,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:254,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:254,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 30
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 255
      start: 197
    functionDepth: 1
    functionLinenumber: 197
    functionLinenumberEnd: 255
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc1.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - std::unique_ptr::setAsyncCallback
    - getRR
    - BOOST_CHECK
    - primeHints
    - QType
    - addRecordToLW
    - Utility::gettimeofday
    - initSR
    - BOOST_CHECK_EQUAL
    - get
    - DNSName::toString
    - std::unique_ptr::beginResolve
    - std::string
    - vector::size
    - vector::clear
    - BOOST_REQUIRE_EQUAL
    - ComboAddress
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_root_primed_ns_update)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:260,1
    - Dst: std::unique_ptr::setQNameMinimization
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:262,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:268,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:273,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:279,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:280,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:281,1
    - Dst: basicRecordsForQnameMinimization
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:285,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:288,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:292,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:292,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:292,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:293,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:294,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:294,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:295,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:296,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:297,1
    - Dst: SyncRes::getEDNSStatusesSize
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:297,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:298,1
    - Dst: SyncRes::getEDNSStatus
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:298,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 27
    argCount: 1
    argNames:
    - sample
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 299
      start: 257
    functionDepth: 1
    functionLinenumber: 257
    functionLinenumberEnd: 299
    functionName: test_edns_formerr_fallback_f
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc1.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - std::unique_ptr::setAsyncCallback
    - SyncRes::getEDNSStatus
    - primeHints
    - std::unique_ptr::setQNameMinimization
    - QType
    - addRecordToLW
    - DNSName
    - initSR
    - BOOST_CHECK_EQUAL
    - std::unique_ptr::beginResolve
    - vector::size
    - basicRecordsForQnameMinimization
    - SyncRes::getEDNSStatusesSize
    linkageType: ''
    returnType: void
    signature: void test_edns_formerr_fallback_f(bool sample)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_edns_formerr_fallback_f
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:303,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 304
      start: 301
    functionDepth: 2
    functionLinenumber: 301
    functionLinenumberEnd: 304
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc1.cc
    functionUses: 0
    functionsReached:
    - test_edns_formerr_fallback_f
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_edns_formerr_fallback)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_edns_formerr_fallback_f
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:310,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 311
      start: 306
    functionDepth: 2
    functionLinenumber: 306
    functionLinenumberEnd: 311
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc1.cc
    functionUses: 0
    functionsReached:
    - test_edns_formerr_fallback_f
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_edns_formerr_fallback_qmin)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:316,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:326,1
    - Dst: std::set::insert
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:333,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:336,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:346,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:349,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:349,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:349,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:350,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:351,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:351,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:352,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:353,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:354,1
    - Dst: SyncRes::getEDNSStatusesSize
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:354,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:355,1
    - Dst: std::set::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:355,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:357,1
    - Dst: SyncRes::getEDNSStatus
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:357,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 27
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 359
      start: 313
    functionDepth: 2
    functionLinenumber: 313
    functionLinenumberEnd: 359
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc1.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - std::unique_ptr::setAsyncCallback
    - SyncRes::getEDNSStatus
    - std::set::size
    - primeHints
    - QType
    - DNSName
    - initSR
    - BOOST_CHECK_EQUAL
    - std::set::insert
    - std::unique_ptr::beginResolve
    - vector::size
    - SyncRes::getEDNSStatusesSize
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_edns_formerr_but_edns_enabled)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:364,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:376,1
    - Dst: std::set::insert
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:383,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:386,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:397,1
    - Dst: BOOST_CHECK_EXCEPTION
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:400,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:400,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:400,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:400,1
    - Dst: reason::substr
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:401,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 23
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 403
      start: 361
    functionDepth: 2
    functionLinenumber: 361
    functionLinenumberEnd: 403
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc1.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - std::unique_ptr::setAsyncCallback
    - primeHints
    - BOOST_CHECK_EXCEPTION
    - QType
    - reason::substr
    - DNSName
    - initSR
    - std::set::insert
    - std::unique_ptr::beginResolve
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_edns_formerr_but_edns_enabled_limit_bytes)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:408,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:415,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:420,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:423,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:423,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:423,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:424,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:425,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:425,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:426,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 428
      start: 405
    functionDepth: 1
    functionLinenumber: 405
    functionLinenumberEnd: 428
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc1.cc
    functionUses: 0
    functionsReached:
    - std::unique_ptr::setAsyncCallback
    - primeHints
    - QType
    - DNSName
    - initSR
    - BOOST_CHECK_EQUAL
    - std::unique_ptr::beginResolve
    - vector::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_meta_types)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:433,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:435,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:437,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:440,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:441,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:442,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:449,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:453,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:453,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:453,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:454,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 455
      start: 430
    functionDepth: 1
    functionLinenumber: 430
    functionLinenumberEnd: 455
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc1.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - std::unique_ptr::setAsyncCallback
    - primeHints
    - QType
    - addRecordToLW
    - DNSName
    - initSR
    - BOOST_CHECK_EQUAL
    - std::unique_ptr::beginResolve
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_tc_fallback_to_tcp)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:460,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:464,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:466,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:473,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:476,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:479,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:483,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:486,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:486,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:486,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:487,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:488,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 19
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 489
      start: 457
    functionDepth: 1
    functionLinenumber: 457
    functionLinenumberEnd: 489
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc1.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - std::unique_ptr::setAsyncCallback
    - primeHints
    - QType
    - addRecordToLW
    - DNSName
    - initSR
    - BOOST_CHECK_EQUAL
    - std::unique_ptr::beginResolve
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_tc_over_tcp)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:494,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:497,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:499,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:500,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:501,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:502,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:503,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:504,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:507,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:507,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:508,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:509,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:510,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:511,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:512,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:513,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:514,1
    - Dst: std::set::insert
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:517,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:525,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:525,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:526,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:527,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:527,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:528,1
    - Dst: std::set::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:528,1
    - Dst: std::unique_ptr::getNow
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:530,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:532,1
    - Dst: SyncRes::getServerFailsCount
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:532,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:533,1
    - Dst: SyncRes::isThrottled
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:533,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 31
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 535
      start: 491
    functionDepth: 2
    functionLinenumber: 491
    functionLinenumberEnd: 535
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc1.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - std::unique_ptr::setAsyncCallback
    - std::set::size
    - BOOST_CHECK
    - primeHints
    - SyncRes::isThrottled
    - QType
    - addRecordToLW
    - BOOST_CHECK_EQUAL
    - initSR
    - std::unique_ptr::getNow
    - SyncRes::getServerFailsCount
    - std::set::insert
    - std::unique_ptr::beginResolve
    - isRootServer
    - vector::size
    - ComboAddress
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_all_nss_down)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:540,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:543,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:545,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:546,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:547,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:548,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:549,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:550,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:553,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:553,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:554,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:555,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:556,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:557,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:558,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:559,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:560,1
    - Dst: std::set::insert
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:563,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:572,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:572,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:573,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:574,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:574,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:575,1
    - Dst: std::set::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:575,1
    - Dst: std::unique_ptr::getNow
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:577,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:579,1
    - Dst: SyncRes::getServerFailsCount
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:579,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:580,1
    - Dst: SyncRes::isThrottled
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:580,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 31
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 582
      start: 537
    functionDepth: 2
    functionLinenumber: 537
    functionLinenumberEnd: 582
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc1.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - std::unique_ptr::setAsyncCallback
    - std::set::size
    - BOOST_CHECK
    - primeHints
    - SyncRes::isThrottled
    - QType
    - addRecordToLW
    - BOOST_CHECK_EQUAL
    - initSR
    - std::unique_ptr::getNow
    - SyncRes::getServerFailsCount
    - std::set::insert
    - std::unique_ptr::beginResolve
    - isRootServer
    - vector::size
    - ComboAddress
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_all_nss_network_error)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:587,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:589,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:593,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:594,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:595,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:596,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:597,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:598,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:603,1
    - Dst: std::set::insert
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:606,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:608,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:616,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:616,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:617,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:618,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:618,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:619,1
    - Dst: std::set::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:619,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:622,1
    - Dst: SyncRes::isThrottled
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:622,1
    - Dst: time
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:622,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:623,1
    - Dst: SyncRes::getNSSpeed
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:623,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:623,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 26
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 625
      start: 584
    functionDepth: 2
    functionLinenumber: 584
    functionLinenumberEnd: 625
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc1.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - std::unique_ptr::setAsyncCallback
    - std::set::size
    - BOOST_CHECK
    - primeHints
    - SyncRes::isThrottled
    - QType
    - time
    - addRecordToLW
    - BOOST_CHECK_EQUAL
    - initSR
    - DNSName
    - std::set::insert
    - std::unique_ptr::beginResolve
    - SyncRes::getNSSpeed
    - isRootServer
    - vector::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_all_nss_send_tc_then_garbage_over_tcp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:630,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:632,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:637,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:638,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:639,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:640,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:641,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:642,1
    - Dst: std::set::insert
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:647,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:649,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:657,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:657,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:658,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:659,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:659,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:660,1
    - Dst: std::set::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:660,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:662,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:665,1
    - Dst: SyncRes::isThrottled
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:665,1
    - Dst: time
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:665,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:666,1
    - Dst: SyncRes::getNSSpeed
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:666,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:666,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:667,1
    - Dst: SyncRes::getEDNSStatus
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:667,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 25
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 669
      start: 627
    functionDepth: 2
    functionLinenumber: 627
    functionLinenumberEnd: 669
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc1.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - std::unique_ptr::setAsyncCallback
    - SyncRes::getEDNSStatus
    - std::set::size
    - BOOST_CHECK
    - primeHints
    - SyncRes::isThrottled
    - QType
    - time
    - addRecordToLW
    - BOOST_CHECK_EQUAL
    - initSR
    - DNSName
    - std::set::insert
    - std::unique_ptr::beginResolve
    - SyncRes::getNSSpeed
    - isRootServer
    - vector::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_all_nss_send_garbage_over_udp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:674,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:676,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:681,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:682,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:683,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:684,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:685,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:686,1
    - Dst: std::set::insert
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:691,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:693,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:701,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:701,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:702,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:703,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:703,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:704,1
    - Dst: std::set::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:704,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:705,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:709,1
    - Dst: SyncRes::isThrottled
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:709,1
    - Dst: time
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:709,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:710,1
    - Dst: SyncRes::getNSSpeed
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:710,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:710,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:711,1
    - Dst: SyncRes::getEDNSStatus
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:711,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 24
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 713
      start: 671
    functionDepth: 2
    functionLinenumber: 671
    functionLinenumberEnd: 713
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc1.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - std::unique_ptr::setAsyncCallback
    - SyncRes::getEDNSStatus
    - std::set::size
    - BOOST_CHECK
    - primeHints
    - SyncRes::isThrottled
    - QType
    - time
    - addRecordToLW
    - BOOST_CHECK_EQUAL
    - initSR
    - DNSName
    - std::set::insert
    - std::unique_ptr::beginResolve
    - SyncRes::getNSSpeed
    - isRootServer
    - vector::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_regular_ns_send_refused)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:718,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:720,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:728,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:728,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:733,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:734,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:735,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:736,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:737,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:738,1
    - Dst: std::set::insert
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:743,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:745,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:751,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:751,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:752,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:753,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:753,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:754,1
    - Dst: std::set::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:754,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:755,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:758,1
    - Dst: std::set::count
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:758,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:760,1
    - Dst: SyncRes::isThrottled
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:760,1
    - Dst: time
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:760,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:761,1
    - Dst: SyncRes::getNSSpeed
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:761,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:761,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:762,1
    - Dst: SyncRes::getEDNSStatus
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:762,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 28
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 764
      start: 715
    functionDepth: 2
    functionLinenumber: 715
    functionLinenumberEnd: 764
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc1.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - primeHints
    - std::unique_ptr::beginResolve
    - SyncRes::isThrottled
    - isRootServer
    - std::set::size
    - time
    - QType
    - addRecordToLW
    - std::set::insert
    - vector::size
    - std::unique_ptr::setAsyncCallback
    - SyncRes::getEDNSStatus
    - DNSName
    - initSR
    - ComboAddress
    - std::set::count
    - BOOST_CHECK_EQUAL
    - SyncRes::getNSSpeed
    - BOOST_CHECK
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_forward_ns_send_refused)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:769,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:771,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:779,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:779,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:782,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:784,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:785,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:786,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:787,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:788,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:789,1
    - Dst: std::set::insert
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:794,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:796,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:802,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:802,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:803,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:804,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:804,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:805,1
    - Dst: std::set::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:805,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:806,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:809,1
    - Dst: std::set::count
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:809,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:812,1
    - Dst: SyncRes::isThrottled
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:812,1
    - Dst: time
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:812,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:813,1
    - Dst: SyncRes::getNSSpeed
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:813,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:813,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:813,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:814,1
    - Dst: SyncRes::getEDNSStatus
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:814,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 28
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 816
      start: 766
    functionDepth: 2
    functionLinenumber: 766
    functionLinenumberEnd: 816
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc1.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - primeHints
    - std::unique_ptr::beginResolve
    - SyncRes::isThrottled
    - isRootServer
    - std::set::size
    - time
    - QType
    - addRecordToLW
    - std::set::insert
    - vector::size
    - std::unique_ptr::setAsyncCallback
    - SyncRes::getEDNSStatus
    - DNSName
    - initSR
    - toStringWithPort
    - ComboAddress
    - std::set::count
    - BOOST_CHECK_EQUAL
    - SyncRes::getNSSpeed
    - BOOST_CHECK
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_forward_ns_send_servfail)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:821,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:823,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:832,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:832,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:835,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:837,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:838,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:839,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:840,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:841,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:842,1
    - Dst: std::set::insert
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:847,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:849,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:855,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:855,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:856,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:857,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:857,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:858,1
    - Dst: std::set::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:858,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:859,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:861,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:862,1
    - Dst: std::set::count
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:862,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:865,1
    - Dst: SyncRes::isThrottled
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:865,1
    - Dst: time
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:865,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:866,1
    - Dst: SyncRes::getNSSpeed
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:866,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:866,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:866,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:867,1
    - Dst: SyncRes::getEDNSStatus
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:867,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 27
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 868
      start: 818
    functionDepth: 2
    functionLinenumber: 818
    functionLinenumberEnd: 868
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc1.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - primeHints
    - std::vector::at
    - std::unique_ptr::beginResolve
    - SyncRes::isThrottled
    - isRootServer
    - std::set::size
    - time
    - QType
    - addRecordToLW
    - std::set::insert
    - vector::size
    - std::unique_ptr::setAsyncCallback
    - SyncRes::getEDNSStatus
    - DNSName
    - initSR
    - toStringWithPort
    - ComboAddress
    - std::set::count
    - BOOST_CHECK_EQUAL
    - SyncRes::getNSSpeed
    - BOOST_CHECK
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_forward_ns_send_servfail_same)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:873,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:875,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:879,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:880,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:881,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:883,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:884,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:885,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:886,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:888,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:889,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:890,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:891,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:892,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:896,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:897,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:898,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:900,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:903,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:908,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:911,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:920,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:920,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:921,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:922,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:922,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 44
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 923
      start: 870
    functionDepth: 1
    functionLinenumber: 870
    functionLinenumberEnd: 923
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc1.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - std::unique_ptr::setAsyncCallback
    - primeHints
    - QType
    - addRecordToLW
    - DNSName
    - initSR
    - BOOST_CHECK_EQUAL
    - std::unique_ptr::beginResolve
    - isRootServer
    - vector::size
    - ComboAddress
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_only_one_ns_up_resolving_itself_with_glue)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:928,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:931,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:933,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:934,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:935,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:936,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:937,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:938,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:941,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:941,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:942,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:943,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:944,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:945,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:946,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:947,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:948,1
    - Dst: std::set::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:952,1
    - Dst: std::set::insert
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:954,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:958,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:959,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:967,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:967,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:968,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:969,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:969,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:970,1
    - Dst: std::set::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:970,1
    - Dst: std::unique_ptr::getNow
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:973,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:975,1
    - Dst: SyncRes::getServerFailsCount
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:975,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:976,1
    - Dst: SyncRes::isThrottled
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:976,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 37
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 978
      start: 925
    functionDepth: 2
    functionLinenumber: 925
    functionLinenumberEnd: 978
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc1.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - std::unique_ptr::setAsyncCallback
    - std::set::size
    - BOOST_CHECK
    - primeHints
    - SyncRes::isThrottled
    - QType
    - addRecordToLW
    - BOOST_CHECK_EQUAL
    - initSR
    - std::unique_ptr::getNow
    - SyncRes::getServerFailsCount
    - std::set::insert
    - std::unique_ptr::beginResolve
    - isRootServer
    - vector::size
    - ComboAddress
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_os_limit_errors)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:983,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:985,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:989,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:995,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:996,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:997,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:998,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:999,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1002,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1002,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1003,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1004,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1005,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1006,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1007,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1008,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1009,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1012,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1012,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1012,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1012,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1013,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1014,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1021,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1021,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1022,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1023,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1023,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1024,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1025,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 35
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1026
      start: 980
    functionDepth: 1
    functionLinenumber: 980
    functionLinenumberEnd: 1026
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc1.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - std::unique_ptr::setAsyncCallback
    - BOOST_CHECK
    - primeHints
    - QType
    - addRecordToLW
    - BOOST_CHECK_EQUAL
    - initSR
    - std::unique_ptr::beginResolve
    - isRootServer
    - vector::size
    - BOOST_REQUIRE_EQUAL
    - ComboAddress
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_glued_referral)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1031,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1033,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1037,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1038,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1039,1
    - Dst: isPartOf
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1041,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1041,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1042,1
    - Dst: isPartOf
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1044,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1044,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1045,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1048,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1052,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1053,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1056,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1056,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1058,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1059,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1060,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1063,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1064,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1065,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1066,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1069,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1070,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1071,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1072,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1076,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1079,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1079,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1079,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1079,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1080,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1081,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1088,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1088,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1089,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1090,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1090,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1091,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1092,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 52
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1093
      start: 1028
    functionDepth: 1
    functionLinenumber: 1028
    functionLinenumberEnd: 1093
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc1.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - std::unique_ptr::setAsyncCallback
    - isPartOf
    - BOOST_CHECK
    - primeHints
    - QType
    - addRecordToLW
    - DNSName
    - initSR
    - BOOST_CHECK_EQUAL
    - std::unique_ptr::beginResolve
    - isRootServer
    - vector::size
    - BOOST_REQUIRE_EQUAL
    - ComboAddress
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_glueless_referral)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1098,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1100,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1105,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1106,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1107,1
    - Dst: isPartOf
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1109,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1109,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1110,1
    - Dst: isPartOf
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1112,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1112,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1113,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1116,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1120,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1121,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1125,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1126,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1127,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1130,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1131,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1131,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1132,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1132,1
    - Dst: BOOST_CHECK_EXCEPTION
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1138,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1138,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1138,1
    - Dst: reason::substr
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1141,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 34
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1143
      start: 1095
    functionDepth: 1
    functionLinenumber: 1095
    functionLinenumberEnd: 1143
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc1.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - std::unique_ptr::setAsyncCallback
    - isPartOf
    - std::to_string
    - primeHints
    - BOOST_CHECK_EXCEPTION
    - QType
    - addRecordToLW
    - reason::substr
    - DNSName
    - initSR
    - std::unique_ptr::beginResolve
    - isRootServer
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_endless_glueless_referral)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1148,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1150,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1154,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1155,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1156,1
    - Dst: isPartOf
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1158,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1158,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1159,1
    - Dst: isPartOf
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1161,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1161,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1162,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1165,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1169,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1170,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1173,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1173,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1175,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1176,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1177,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1180,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1181,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1183,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1186,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1190,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1191,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1193,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1196,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1201,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1204,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1204,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1204,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1204,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1205,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1206,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1213,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1213,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1214,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1215,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1215,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1216,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1217,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1220,1
    - Dst: getTaskSize
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1220,1
    - Dst: taskQueuePop
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1221,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1222,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1222,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1222,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1223,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 61
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1224
      start: 1145
    functionDepth: 1
    functionLinenumber: 1145
    functionLinenumberEnd: 1224
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc1.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - std::unique_ptr::setAsyncCallback
    - isPartOf
    - taskQueuePop
    - BOOST_CHECK
    - primeHints
    - QType
    - addRecordToLW
    - getTaskSize
    - DNSName
    - initSR
    - BOOST_CHECK_EQUAL
    - std::unique_ptr::beginResolve
    - isRootServer
    - vector::size
    - BOOST_REQUIRE_EQUAL
    - ComboAddress
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_glueless_referral_aaaa_task)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1229,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1231,1
    - Dst: SyncRes::addEDNSDomain
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1234,1
    - Dst: EDNSSubnetOpts::setSource
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1237,1
    - Dst: Netmask
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1237,1
    - Dst: std::unique_ptr::setQuerySource
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1238,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1238,1
    - Dst: boost::optional<const EDNSSubnetOpts&>
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1238,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1240,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1241,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1242,1
    - Dst: toString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1242,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1244,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1245,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1246,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1247,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1254,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1256,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1257,1
    - Dst: Netmask
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1260,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1271,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1271,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1272,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1273,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1273,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1274,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1275,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1276,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1277,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1279,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1282,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 36
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1284
      start: 1226
    functionDepth: 1
    functionLinenumber: 1226
    functionLinenumberEnd: 1284
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc1.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - toString
    - primeHints
    - std::unique_ptr::beginResolve
    - isRootServer
    - boost::optional<const EDNSSubnetOpts&>
    - QType
    - addRecordToLW
    - BOOST_REQUIRE
    - BOOST_REQUIRE_EQUAL
    - SyncRes::addEDNSDomain
    - Netmask
    - std::unique_ptr::setAsyncCallback
    - EDNSSubnetOpts::setSource
    - initSR
    - ComboAddress
    - BOOST_CHECK
    - BOOST_CHECK_EQUAL
    - std::unique_ptr::setQuerySource
    - vector::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_edns_subnet_by_domain)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1289,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1291,1
    - Dst: SyncRes::addEDNSRemoteSubnet
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1294,1
    - Dst: EDNSSubnetOpts::setSource
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1297,1
    - Dst: Netmask
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1297,1
    - Dst: std::unique_ptr::setQuerySource
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1298,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1298,1
    - Dst: boost::optional<const EDNSSubnetOpts&>
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1298,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1300,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1301,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1302,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1304,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1305,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1306,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1309,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1311,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1312,1
    - Dst: toString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1312,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1314,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1315,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1325,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1325,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1326,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1327,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1327,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1328,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1329,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1330,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1331,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1333,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1336,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 35
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1338
      start: 1286
    functionDepth: 1
    functionLinenumber: 1286
    functionLinenumberEnd: 1338
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc1.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - toString
    - primeHints
    - SyncRes::addEDNSRemoteSubnet
    - std::unique_ptr::beginResolve
    - isRootServer
    - boost::optional<const EDNSSubnetOpts&>
    - QType
    - addRecordToLW
    - BOOST_REQUIRE
    - BOOST_REQUIRE_EQUAL
    - Netmask
    - std::unique_ptr::setAsyncCallback
    - EDNSSubnetOpts::setSource
    - initSR
    - ComboAddress
    - BOOST_CHECK
    - BOOST_CHECK_EQUAL
    - std::unique_ptr::setQuerySource
    - vector::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_edns_subnet_by_addr)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1343,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1345,1
    - Dst: SyncRes::addEDNSRemoteSubnet
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1348,1
    - Dst: std::unique_ptr::setQuerySource
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1350,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1350,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1352,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1353,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1354,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1356,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1357,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1358,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1361,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1363,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1364,1
    - Dst: toString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1364,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1366,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1367,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1375,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1375,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1376,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1377,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1377,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1378,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1379,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 26
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1380
      start: 1340
    functionDepth: 1
    functionLinenumber: 1340
    functionLinenumberEnd: 1380
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc1.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - std::unique_ptr::setAsyncCallback
    - toString
    - BOOST_CHECK
    - primeHints
    - QType
    - addRecordToLW
    - BOOST_CHECK_EQUAL
    - initSR
    - SyncRes::addEDNSRemoteSubnet
    - BOOST_REQUIRE
    - std::unique_ptr::setQuerySource
    - isRootServer
    - std::unique_ptr::beginResolve
    - vector::size
    - BOOST_REQUIRE_EQUAL
    - ComboAddress
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_ecs_use_requestor)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1385,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1387,1
    - Dst: SyncRes::addEDNSRemoteSubnet
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1390,1
    - Dst: SyncRes::clearEDNSLocalSubnets
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1391,1
    - Dst: SyncRes::addEDNSLocalSubnet
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1392,1
    - Dst: std::unique_ptr::setQuerySource
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1394,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1394,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1396,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1397,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1398,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1400,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1401,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1402,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1405,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1407,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1408,1
    - Dst: toString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1408,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1410,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1411,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1419,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1419,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1420,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1421,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1421,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1422,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1423,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 28
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1424
      start: 1382
    functionDepth: 2
    functionLinenumber: 1382
    functionLinenumberEnd: 1424
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc1.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - toString
    - primeHints
    - SyncRes::addEDNSLocalSubnet
    - SyncRes::addEDNSRemoteSubnet
    - std::unique_ptr::beginResolve
    - isRootServer
    - SyncRes::clearEDNSLocalSubnets
    - QType
    - addRecordToLW
    - BOOST_REQUIRE
    - vector::size
    - BOOST_REQUIRE_EQUAL
    - std::unique_ptr::setAsyncCallback
    - initSR
    - ComboAddress
    - BOOST_CHECK_EQUAL
    - std::unique_ptr::setQuerySource
    - BOOST_CHECK
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_ecs_use_scope_zero)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1429,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1431,1
    - Dst: SyncRes::addEDNSRemoteSubnet
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1434,1
    - Dst: SyncRes::clearEDNSLocalSubnets
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1435,1
    - Dst: SyncRes::addEDNSLocalSubnet
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1436,1
    - Dst: EDNSSubnetOpts::setSource
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1438,1
    - Dst: Netmask
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1438,1
    - Dst: std::unique_ptr::setQuerySource
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1439,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1439,1
    - Dst: boost::optional<const EDNSSubnetOpts&>
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1439,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1441,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1442,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1443,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1445,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1446,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1447,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1450,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1452,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1453,1
    - Dst: toString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1453,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1455,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1456,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1464,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1464,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1465,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1466,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1466,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1467,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1468,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 29
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1469
      start: 1426
    functionDepth: 2
    functionLinenumber: 1426
    functionLinenumberEnd: 1469
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc1.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - toString
    - primeHints
    - SyncRes::addEDNSLocalSubnet
    - SyncRes::addEDNSRemoteSubnet
    - std::unique_ptr::beginResolve
    - isRootServer
    - SyncRes::clearEDNSLocalSubnets
    - boost::optional<const EDNSSubnetOpts&>
    - QType
    - addRecordToLW
    - BOOST_REQUIRE
    - BOOST_REQUIRE_EQUAL
    - Netmask
    - std::unique_ptr::setAsyncCallback
    - EDNSSubnetOpts::setSource
    - initSR
    - ComboAddress
    - BOOST_CHECK
    - BOOST_CHECK_EQUAL
    - std::unique_ptr::setQuerySource
    - vector::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_ecs_honor_incoming_mask)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1474,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1476,1
    - Dst: SyncRes::addEDNSRemoteSubnet
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1479,1
    - Dst: SyncRes::clearEDNSLocalSubnets
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1480,1
    - Dst: SyncRes::addEDNSLocalSubnet
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1481,1
    - Dst: EDNSSubnetOpts::setSource
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1483,1
    - Dst: Netmask
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1483,1
    - Dst: std::unique_ptr::setQuerySource
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1484,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1484,1
    - Dst: boost::optional<const EDNSSubnetOpts&>
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1484,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1486,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1487,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1488,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1490,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1491,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1492,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1495,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1497,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1498,1
    - Dst: toString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1498,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1500,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1501,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1509,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1509,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1510,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1511,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1511,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1512,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1513,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 29
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1514
      start: 1471
    functionDepth: 2
    functionLinenumber: 1471
    functionLinenumberEnd: 1514
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc1.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - toString
    - primeHints
    - SyncRes::addEDNSLocalSubnet
    - SyncRes::addEDNSRemoteSubnet
    - std::unique_ptr::beginResolve
    - isRootServer
    - SyncRes::clearEDNSLocalSubnets
    - boost::optional<const EDNSSubnetOpts&>
    - QType
    - addRecordToLW
    - BOOST_REQUIRE
    - BOOST_REQUIRE_EQUAL
    - Netmask
    - std::unique_ptr::setAsyncCallback
    - EDNSSubnetOpts::setSource
    - initSR
    - ComboAddress
    - BOOST_CHECK
    - BOOST_CHECK_EQUAL
    - std::unique_ptr::setQuerySource
    - vector::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_ecs_honor_incoming_mask_zero)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1519,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1521,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1526,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1527,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1528,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1529,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1530,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1533,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1536,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1537,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1537,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1541,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1542,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1552,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1552,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1553,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1554,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1554,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1555,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1556,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1557,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1558,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 30
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1559
      start: 1516
    functionDepth: 1
    functionLinenumber: 1516
    functionLinenumberEnd: 1559
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc1.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - std::unique_ptr::setAsyncCallback
    - BOOST_CHECK
    - primeHints
    - QType
    - addRecordToLW
    - BOOST_CHECK_EQUAL
    - initSR
    - DNSName::toString
    - std::unique_ptr::beginResolve
    - isRootServer
    - vector::size
    - BOOST_REQUIRE_EQUAL
    - ComboAddress
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_following_cname)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1564,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1566,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1571,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1572,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1573,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1574,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1575,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1578,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1581,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1582,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1583,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1583,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1587,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1588,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1598,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1598,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1599,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1600,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1600,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1601,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1602,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1603,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1604,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1605,1
    - Dst: getContent
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1605,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 32
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1606
      start: 1561
    functionDepth: 1
    functionLinenumber: 1561
    functionLinenumberEnd: 1606
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc1.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - std::unique_ptr::setAsyncCallback
    - BOOST_CHECK
    - primeHints
    - QType
    - addRecordToLW
    - BOOST_CHECK_EQUAL
    - initSR
    - getContent
    - DNSName::toString
    - std::unique_ptr::beginResolve
    - isRootServer
    - vector::size
    - BOOST_REQUIRE_EQUAL
    - ComboAddress
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_following_cname_with_a)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1611,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1613,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1619,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1620,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1621,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1622,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1623,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1626,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1629,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1630,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1631,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1631,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1632,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1633,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1633,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1636,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1637,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1638,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1638,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1642,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1643,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1653,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1653,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1654,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1655,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1655,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1656,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1657,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1658,1
    - Dst: getContent
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1658,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1658,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1659,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1660,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1661,1
    - Dst: getContent
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1661,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1661,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1662,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1663,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1664,1
    - Dst: getContent
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1664,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 43
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1665
      start: 1608
    functionDepth: 1
    functionLinenumber: 1608
    functionLinenumberEnd: 1665
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc1.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - std::unique_ptr::setAsyncCallback
    - BOOST_CHECK
    - primeHints
    - QType
    - addRecordToLW
    - BOOST_CHECK_EQUAL
    - initSR
    - getContent
    - DNSName::toString
    - std::unique_ptr::beginResolve
    - isRootServer
    - vector::size
    - BOOST_REQUIRE_EQUAL
    - ComboAddress
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_following_cname_chain_with_a)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1670,1
    - Dst: std::unique_ptr::setQNameMinimization
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1671,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1673,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1679,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1680,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1681,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1682,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1683,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1686,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1689,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1690,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1690,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1694,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1695,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1707,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1707,1
    - Dst: DNSFilterEngine::Policy::setCustom
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1709,1
    - Dst: std::make_shared<DNSFilterEngine::Zone>
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1710,1
    - Dst: std::shared_ptr::setName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1711,1
    - Dst: std::shared_ptr::addQNameTrigger
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1712,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1712,1
    - Dst: getCopy
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1713,1
    - Dst: auto::dfe::clearZones
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1714,1
    - Dst: auto::dfe::addZone
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1715,1
    - Dst: setState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1716,1
    - Dst: time
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1718,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1721,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1721,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1722,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1723,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1723,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1724,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1725,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1726,1
    - Dst: getContent
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1726,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1726,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1727,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1728,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1729,1
    - Dst: getContent
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1729,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1729,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1730,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1731,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1732,1
    - Dst: getContent
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1732,1
    - Dst: std::unique_ptr::setNow
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1737,1
    - Dst: std::unique_ptr::setQNameMinimization
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1738,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1740,1
    - Dst: DNSFilterEngine::Policy
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1741,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1742,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1742,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1743,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1744,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1744,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1745,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1746,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1747,1
    - Dst: getContent
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1747,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1747,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1748,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1749,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1750,1
    - Dst: getContent
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1750,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1750,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1751,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1752,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1753,1
    - Dst: getContent
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1753,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 60
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1754
      start: 1667
    functionDepth: 1
    functionLinenumber: 1667
    functionLinenumberEnd: 1754
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc1.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - primeHints
    - auto::dfe::addZone
    - DNSName::toString
    - std::unique_ptr::beginResolve
    - std::shared_ptr::addQNameTrigger
    - isRootServer
    - setState
    - std::unique_ptr::setNow
    - time
    - QType
    - addRecordToLW
    - auto::dfe::clearZones
    - DNSRecordContent::make
    - vector::clear
    - BOOST_REQUIRE_EQUAL
    - std::unique_ptr::setAsyncCallback
    - DNSFilterEngine::Policy::setCustom
    - initSR
    - ComboAddress
    - std::move
    - std::shared_ptr::setName
    - BOOST_CHECK
    - std::unique_ptr::setQNameMinimization
    - DNSFilterEngine::Policy
    - BOOST_CHECK_EQUAL
    - getContent
    - getCopy
    - std::make_shared<DNSFilterEngine::Zone>
    - vector::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_following_cname_chain_with_rpz)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1759,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1761,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1766,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1767,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1768,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1769,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1770,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1773,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1776,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1777,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1777,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1778,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1781,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1782,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1793,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1793,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1794,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1795,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1795,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1796,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1797,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1798,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1801,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1802,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1802,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1803,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1804,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1804,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1805,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1806,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1807,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 37
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1808
      start: 1756
    functionDepth: 1
    functionLinenumber: 1756
    functionLinenumberEnd: 1808
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc1.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - std::unique_ptr::setAsyncCallback
    - BOOST_CHECK
    - primeHints
    - QType
    - addRecordToLW
    - BOOST_CHECK_EQUAL
    - initSR
    - DNSName::toString
    - std::unique_ptr::beginResolve
    - isRootServer
    - vector::size
    - vector::clear
    - BOOST_REQUIRE_EQUAL
    - ComboAddress
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_cname_nxdomain)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1813,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1815,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1824,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1825,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1827,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1829,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1830,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1833,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1836,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1837,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1837,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1838,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1842,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1843,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1854,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1854,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1855,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1856,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1856,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1857,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1858,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1859,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1859,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1860,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1861,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1862,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1862,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1862,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 34
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1863
      start: 1810
    functionDepth: 1
    functionLinenumber: 1810
    functionLinenumberEnd: 1863
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc1.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - std::unique_ptr::setAsyncCallback
    - getRR
    - BOOST_CHECK
    - primeHints
    - QType
    - addRecordToLW
    - BOOST_CHECK_EQUAL
    - initSR
    - DNSName::toString
    - std::unique_ptr::beginResolve
    - BOOST_REQUIRE
    - isRootServer
    - vector::size
    - BOOST_REQUIRE_EQUAL
    - ComboAddress
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_included_poisonous_cname)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1868,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1870,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1875,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1878,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1880,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1881,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1882,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1885,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1888,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1889,1
    - Dst: toString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1889,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1900,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1900,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1901,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1902,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1902,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1903,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1907,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1907,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1908,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1911,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 30
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1913
      start: 1865
    functionDepth: 1
    functionLinenumber: 1865
    functionLinenumberEnd: 1913
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc1.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - std::unique_ptr::setAsyncCallback
    - toString
    - BOOST_CHECK
    - primeHints
    - QType
    - addRecordToLW
    - BOOST_CHECK_EQUAL
    - initSR
    - std::unique_ptr::beginResolve
    - isRootServer
    - vector::size
    - ComboAddress
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_cname_loop)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1918,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1920,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1928,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1933,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1936,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1938,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1939,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1940,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1943,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1946,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1947,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1947,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1948,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1948,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1949,1
    - Dst: toString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1949,1
    - Dst: BOOST_REQUIRE_THROW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1960,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1960,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1960,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 27
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1961
      start: 1915
    functionDepth: 1
    functionLinenumber: 1915
    functionLinenumberEnd: 1961
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc1.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - BOOST_REQUIRE_THROW
    - std::unique_ptr::setAsyncCallback
    - toString
    - primeHints
    - QType
    - addRecordToLW
    - initSR
    - DNSName::toString
    - std::unique_ptr::beginResolve
    - isRootServer
    - ComboAddress
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_cname_loop_forwarder)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1966,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1968,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1976,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1979,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1981,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1982,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1983,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1986,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1989,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1990,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1990,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1994,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1995,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1995,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:1999,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2000,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2000,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2004,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2005,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2005,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2016,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2016,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2017,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2018,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2018,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2019,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2023,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2023,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2024,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2027,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 45
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2029
      start: 1963
    functionDepth: 1
    functionLinenumber: 1963
    functionLinenumberEnd: 2029
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc1.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - std::unique_ptr::setAsyncCallback
    - BOOST_CHECK
    - primeHints
    - QType
    - addRecordToLW
    - BOOST_CHECK_EQUAL
    - initSR
    - DNSName::toString
    - std::unique_ptr::beginResolve
    - isRootServer
    - vector::size
    - ComboAddress
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_cname_long_loop)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2035,1
    - Dst: std::unique_ptr::setQNameMinimization
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2036,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2037,1
    - Dst: std::unique_ptr::setLogMode
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2038,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2046,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2049,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2050,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2051,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2052,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2055,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2056,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2057,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2058,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2061,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2064,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2065,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2065,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2069,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2070,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2070,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2074,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2075,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2075,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2079,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2081,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2084,1
    - Dst: find
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2102,1
    - Dst: find
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2105,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2110,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2110,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2111,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2112,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2112,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2113,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2114,1
    - Dst: std::unique_ptr::getTrace
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2115,1
    - Dst: std::unique_ptr::getTrace
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2116,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2117,1
    - Dst: counter
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2117,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2120,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2121,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2121,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2122,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2123,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2123,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2124,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2125,1
    - Dst: std::unique_ptr::getTrace
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2126,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2127,1
    - Dst: counter
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2127,1
    - Dst: doWipeCache
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2130,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2131,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2132,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2132,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2133,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2134,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2134,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2135,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2136,1
    - Dst: std::unique_ptr::getTrace
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2137,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2139,1
    - Dst: counter
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2139,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 78
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2140
      start: 2031
    functionDepth: 2
    functionLinenumber: 2031
    functionLinenumberEnd: 2140
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc1.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - primeHints
    - DNSName::toString
    - std::unique_ptr::beginResolve
    - find
    - QType
    - addRecordToLW
    - std::unique_ptr::setLogMode
    - vector::clear
    - std::unique_ptr::setAsyncCallback
    - DNSName
    - initSR
    - ComboAddress
    - doWipeCache
    - std::unique_ptr::setQNameMinimization
    - BOOST_CHECK_EQUAL
    - std::unique_ptr::getTrace
    - counter
    - vector::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_cname_long_step0_shortcut)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2145,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2147,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2152,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2153,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2155,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2156,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2157,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2160,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2162,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2163,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2163,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2172,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2172,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2173,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2174,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2174,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2175,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2179,1
    - Dst: BOOST_CHECK_EXCEPTION
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2180,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2180,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2180,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2185,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2185,1
    - Dst: std::unique_ptr::setQNameMinimization
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2189,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2190,1
    - Dst: BOOST_CHECK_EXCEPTION
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2191,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2191,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2191,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2196,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2196,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 32
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2197
      start: 2142
    functionDepth: 1
    functionLinenumber: 2142
    functionLinenumberEnd: 2197
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc1.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - std::unique_ptr::setAsyncCallback
    - std::to_string
    - primeHints
    - BOOST_CHECK_EXCEPTION
    - QType
    - std::unique_ptr::setQNameMinimization
    - addRecordToLW
    - BOOST_CHECK_EQUAL
    - initSR
    - std::unique_ptr::beginResolve
    - isRootServer
    - vector::size
    - vector::clear
    - ComboAddress
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_cname_length)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2202,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2204,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2209,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2210,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2211,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2212,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2213,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2216,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2219,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2220,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2220,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2234,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2234,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2235,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2236,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2236,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2237,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2238,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 27
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2239
      start: 2199
    functionDepth: 1
    functionLinenumber: 2199
    functionLinenumberEnd: 2239
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc1.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - std::unique_ptr::setAsyncCallback
    - BOOST_CHECK
    - primeHints
    - QType
    - addRecordToLW
    - BOOST_CHECK_EQUAL
    - initSR
    - DNSName::toString
    - std::unique_ptr::beginResolve
    - isRootServer
    - vector::size
    - BOOST_REQUIRE_EQUAL
    - ComboAddress
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_cname_target_servfail)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2244,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2247,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2252,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2253,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2254,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2255,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2256,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2259,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2262,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2263,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2263,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2277,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2277,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2279,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2280,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2280,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2281,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2282,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 28
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2283
      start: 2241
    functionDepth: 1
    functionLinenumber: 2241
    functionLinenumberEnd: 2283
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc1.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - std::unique_ptr::setAsyncCallback
    - BOOST_CHECK
    - primeHints
    - QType
    - addRecordToLW
    - BOOST_CHECK_EQUAL
    - initSR
    - DNSName::toString
    - std::unique_ptr::beginResolve
    - isRootServer
    - vector::size
    - BOOST_REQUIRE_EQUAL
    - ComboAddress
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_cname_target_servfail_servestale)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2288,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2290,1
    - Dst: Utility::gettimeofday
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2298,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2300,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2301,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2303,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2304,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2305,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2308,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2311,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2312,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2312,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2313,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2313,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2314,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2314,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2315,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2315,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2316,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2316,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2320,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2330,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2330,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2331,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2332,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2332,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2334,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2334,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2335,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2336,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2336,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2337,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2338,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2338,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2339,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2342,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2343,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2343,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2344,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2345,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2345,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 41
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2346
      start: 2285
    functionDepth: 1
    functionLinenumber: 2285
    functionLinenumberEnd: 2346
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc1.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - std::unique_ptr::setAsyncCallback
    - BOOST_CHECK
    - primeHints
    - QType
    - addRecordToLW
    - Utility::gettimeofday
    - initSR
    - BOOST_CHECK_EQUAL
    - get
    - DNSName::toString
    - std::unique_ptr::beginResolve
    - isRootServer
    - vector::size
    - vector::clear
    - ComboAddress
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_broken_cname_chain)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2351,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2353,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2358,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2361,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2362,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2366,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2367,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2370,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2372,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2373,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2385,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2385,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2386,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2390,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 26
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2391
      start: 2348
    functionDepth: 1
    functionLinenumber: 2348
    functionLinenumberEnd: 2391
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc1.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - std::unique_ptr::setAsyncCallback
    - primeHints
    - QType
    - addRecordToLW
    - BOOST_CHECK_EQUAL
    - initSR
    - std::unique_ptr::beginResolve
    - isRootServer
    - BOOST_CHECK
    - ComboAddress
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_time_limit)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2396,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2398,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2414,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2417,1
    - Dst: isPartOf
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2418,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2419,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2420,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2421,1
    - Dst: isPartOf
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2424,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2425,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2426,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2427,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2431,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2433,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2434,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2434,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2435,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2435,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2439,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2441,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2442,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2445,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2446,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2454,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2454,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2456,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2457,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2457,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2459,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2461,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2462,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2463,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2463,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2465,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2466,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2468,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2469,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2472,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2473,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2473,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2475,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2476,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2476,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2478,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2480,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2481,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2482,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2482,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2484,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2485,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2487,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2488,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2491,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2492,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2492,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2494,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2495,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2497,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2498,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2499,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2499,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2501,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2502,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2503,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2503,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2505,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2506,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2509,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2510,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2510,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2511,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2512,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2514,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2515,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2516,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2516,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2519,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2520,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2520,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2521,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2522,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2524,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2525,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2526,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2526,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2528,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2529,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2530,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2530,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 91
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2531
      start: 2393
    functionDepth: 1
    functionLinenumber: 2393
    functionLinenumberEnd: 2531
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc1.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - std::unique_ptr::setAsyncCallback
    - isPartOf
    - getRR
    - BOOST_CHECK
    - primeHints
    - QType
    - addRecordToLW
    - BOOST_CHECK_EQUAL
    - initSR
    - DNSName::toString
    - std::unique_ptr::beginResolve
    - BOOST_REQUIRE
    - isRootServer
    - vector::size
    - vector::clear
    - BOOST_REQUIRE_EQUAL
    - ComboAddress
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_dname_processing)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2536,1
    - Dst: setDNSSECValidation
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2537,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2539,1
    - Dst: getCopy
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2549,1
    - Dst: auto::dsAnchors::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2550,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2551,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2552,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2553,1
    - Dst: setState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2554,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2558,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2564,1
    - Dst: countLabels
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2565,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2566,1
    - Dst: addDNSKEY
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2567,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2568,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2568,1
    - Dst: countLabels
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2571,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2572,1
    - Dst: addDS
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2573,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2574,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2574,1
    - Dst: isPartOf
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2578,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2579,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2580,1
    - Dst: addDS
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2581,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2582,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2582,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2583,1
    - Dst: isPartOf
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2586,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2587,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2588,1
    - Dst: addDS
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2589,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2590,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2590,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2591,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2595,1
    - Dst: countLabels
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2596,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2597,1
    - Dst: addDNSKEY
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2598,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2599,1
    - Dst: genericDSAndDNSKEYHandler
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2603,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2606,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2607,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2607,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2608,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2609,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2609,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2613,1
    - Dst: countLabels
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2614,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2615,1
    - Dst: addDNSKEY
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2616,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2617,1
    - Dst: genericDSAndDNSKEYHandler
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2621,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2624,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2625,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2626,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2634,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2634,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2636,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2637,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2637,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2638,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2638,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2640,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2642,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2643,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2644,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2644,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2646,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2647,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2649,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2650,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2652,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2653,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2655,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2656,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2659,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2660,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2660,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2662,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2663,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2663,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2664,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2664,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2666,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2668,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2669,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2670,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2670,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2672,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2673,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2675,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2676,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2678,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2679,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2681,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2682,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 110
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2683
      start: 2533
    functionDepth: 1
    functionLinenumber: 2533
    functionLinenumberEnd: 2683
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc1.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - genericDSAndDNSKEYHandler
    - primeHints
    - setDNSSECValidation
    - DNSName::toString
    - addDNSKEY
    - std::unique_ptr::beginResolve
    - isRootServer
    - countLabels
    - setState
    - QType
    - generateKeyMaterial
    - addRecordToLW
    - auto::dsAnchors::clear
    - addRRSIG
    - BOOST_REQUIRE
    - vector::clear
    - BOOST_REQUIRE_EQUAL
    - std::unique_ptr::setAsyncCallback
    - isPartOf
    - DNSName
    - initSR
    - addDS
    - std::unique_ptr::getValidationState
    - ComboAddress
    - getRR
    - BOOST_CHECK
    - BOOST_CHECK_EQUAL
    - getCopy
    - vector::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_dname_dnssec_secure)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2688,1
    - Dst: setDNSSECValidation
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2689,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2691,1
    - Dst: getCopy
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2701,1
    - Dst: auto::dsAnchors::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2702,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2703,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2704,1
    - Dst: setState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2705,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2709,1
    - Dst: genericDSAndDNSKEYHandler
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2713,1
    - Dst: isPartOf
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2716,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2717,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2718,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2718,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2719,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2719,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2720,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2720,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2722,1
    - Dst: addDS
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2723,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2724,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2724,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2725,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2729,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2730,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2731,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2738,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2738,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2740,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2741,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2741,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2742,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2742,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2744,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2746,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2747,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2748,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2748,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2750,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2751,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2753,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2754,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2756,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2757,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2759,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2760,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2763,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2764,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2764,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2766,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2767,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2767,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2768,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2768,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2770,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2772,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2773,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2774,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2774,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2776,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2777,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2779,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2780,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2782,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2783,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2785,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2786,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 64
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2787
      start: 2685
    functionDepth: 1
    functionLinenumber: 2685
    functionLinenumberEnd: 2787
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc1.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - genericDSAndDNSKEYHandler
    - primeHints
    - setDNSSECValidation
    - DNSName::toString
    - std::unique_ptr::beginResolve
    - setState
    - QType
    - generateKeyMaterial
    - addRecordToLW
    - auto::dsAnchors::clear
    - addRRSIG
    - BOOST_REQUIRE
    - vector::clear
    - BOOST_REQUIRE_EQUAL
    - std::unique_ptr::setAsyncCallback
    - isPartOf
    - DNSName
    - initSR
    - addDS
    - std::unique_ptr::getValidationState
    - getRR
    - BOOST_CHECK
    - BOOST_CHECK_EQUAL
    - getCopy
    - vector::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_dname_plus_ns_dnssec_secure)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2795,1
    - Dst: setDNSSECValidation
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2796,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2798,1
    - Dst: getCopy
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2808,1
    - Dst: auto::dsAnchors::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2809,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2810,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2811,1
    - Dst: setState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2812,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2816,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2819,1
    - Dst: countLabels
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2820,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2821,1
    - Dst: addDNSKEY
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2822,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2823,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2823,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2827,1
    - Dst: addDS
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2828,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2829,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2829,1
    - Dst: genericDSAndDNSKEYHandler
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2833,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2833,1
    - Dst: isPartOf
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2836,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2837,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2838,1
    - Dst: addDS
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2839,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2840,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2840,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2841,1
    - Dst: isPartOf
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2844,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2845,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2846,1
    - Dst: addDS
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2847,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2848,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2848,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2849,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2853,1
    - Dst: countLabels
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2854,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2855,1
    - Dst: addDNSKEY
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2856,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2857,1
    - Dst: genericDSAndDNSKEYHandler
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2861,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2864,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2865,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2865,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2866,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2867,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2867,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2871,1
    - Dst: genericDSAndDNSKEYHandler
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2873,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2876,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2877,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2885,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2885,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2887,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2888,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2888,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2889,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2889,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2891,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2893,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2894,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2895,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2895,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2897,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2898,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2900,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2901,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2903,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2904,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2907,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2908,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2908,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2910,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2911,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2911,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2912,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2912,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2914,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2916,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2917,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2918,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2918,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2920,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2921,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2923,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2924,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2926,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2927,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 101
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2928
      start: 2789
    functionDepth: 1
    functionLinenumber: 2789
    functionLinenumberEnd: 2928
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc1.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - genericDSAndDNSKEYHandler
    - primeHints
    - setDNSSECValidation
    - DNSName::toString
    - addDNSKEY
    - std::unique_ptr::beginResolve
    - isRootServer
    - countLabels
    - setState
    - QType
    - generateKeyMaterial
    - addRecordToLW
    - auto::dsAnchors::clear
    - addRRSIG
    - BOOST_REQUIRE
    - vector::clear
    - BOOST_REQUIRE_EQUAL
    - std::unique_ptr::setAsyncCallback
    - isPartOf
    - DNSName
    - initSR
    - addDS
    - std::unique_ptr::getValidationState
    - ComboAddress
    - getRR
    - BOOST_CHECK
    - BOOST_CHECK_EQUAL
    - getCopy
    - vector::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_dname_dnssec_insecure)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2933,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2935,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2945,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2948,1
    - Dst: isPartOf
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2949,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2950,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2951,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2952,1
    - Dst: isPartOf
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2955,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2956,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2957,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2958,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2962,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2964,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2965,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2965,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2970,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2972,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2973,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2981,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2981,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2983,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2984,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2984,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2986,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2988,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2989,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2990,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2990,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2992,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2993,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2995,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2996,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:2999,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:3000,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:3000,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:3002,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:3003,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:3003,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:3005,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:3007,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:3008,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:3009,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:3009,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:3011,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:3012,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:3014,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:3015,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 57
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3016
      start: 2930
    functionDepth: 1
    functionLinenumber: 2930
    functionLinenumberEnd: 3016
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc1.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - std::unique_ptr::setAsyncCallback
    - isPartOf
    - getRR
    - BOOST_CHECK
    - primeHints
    - QType
    - addRecordToLW
    - BOOST_CHECK_EQUAL
    - initSR
    - DNSName::toString
    - std::unique_ptr::beginResolve
    - BOOST_REQUIRE
    - isRootServer
    - vector::size
    - vector::clear
    - BOOST_REQUIRE_EQUAL
    - ComboAddress
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_dname_processing_no_CNAME)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:3030,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:3032,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:3036,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:3042,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:3043,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:3044,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:3045,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:3046,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:3049,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:3049,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:3050,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:3051,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:3052,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:3053,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:3054,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:3055,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:3056,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:3059,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:3059,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:3059,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:3059,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:3062,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:3063,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:3067,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:3068,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:3069,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:3070,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:3071,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:3072,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:3073,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:3082,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:3082,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:3083,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:3084,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:3084,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:3085,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:3086,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:3089,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:3090,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:3090,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:3091,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:3092,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:3092,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:3093,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:3094,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:3095,1
    - Dst: SyncRes::getSaveParentsNSSetsSize
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:3095,1
    - Dst: doWipeCache
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:3097,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:3101,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:3102,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:3102,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:3103,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:3104,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:3104,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:3109,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:3110,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:3110,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:3111,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:3112,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:3112,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:3113,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc1.cc:3114,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 68
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3115
      start: 3027
    functionDepth: 2
    functionLinenumber: 3027
    functionLinenumberEnd: 3115
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc1.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - doWipeCache
    - std::unique_ptr::setAsyncCallback
    - BOOST_CHECK
    - primeHints
    - QType
    - addRecordToLW
    - SyncRes::getSaveParentsNSSetsSize
    - BOOST_CHECK_EQUAL
    - initSR
    - std::unique_ptr::beginResolve
    - isRootServer
    - vector::size
    - vector::clear
    - BOOST_REQUIRE_EQUAL
    - ComboAddress
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_glued_referral_child_ns_set_wrong)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: getaddrinfo
      Src: /src/pdns/pdns/recursordist/rec-system-resolve.cc:46,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/rec-system-resolve.cc:46,1
    - Dst: vector::emplace_back
      Src: /src/pdns/pdns/recursordist/rec-system-resolve.cc:56,1
    - Dst: freeaddrinfo
      Src: /src/pdns/pdns/recursordist/rec-system-resolve.cc:62,1
    - Dst: vector::empty
      Src: /src/pdns/pdns/recursordist/rec-system-resolve.cc:63,1
    - Dst: std::sort
      Src: /src/pdns/pdns/recursordist/rec-system-resolve.cc:64,1
    - Dst: vector::begin
      Src: /src/pdns/pdns/recursordist/rec-system-resolve.cc:64,1
    - Dst: vector::end
      Src: /src/pdns/pdns/recursordist/rec-system-resolve.cc:64,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/rec-system-resolve.cc:65,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 1
    argNames:
    - ' name'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 39
    functionDepth: 0
    functionLinenumber: 39
    functionLinenumberEnd: 68
    functionName: resolve
    functionSourceFile: /src/pdns/pdns/recursordist/rec-system-resolve.cc
    functionUses: 3
    functionsReached:
    - vector::begin
    - vector::at
    - freeaddrinfo
    - std::sort
    - vector::end
    - vector::empty
    - vector::emplace_back
    - c_str
    - getaddrinfo
    linkageType: ''
    returnType: ComboAddress
    signature: ComboAddress resolve(const std::string& name)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: res_query
      Src: /src/pdns/pdns/recursordist/rec-system-resolve.cc:73,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/rec-system-resolve.cc:73,1
    - Dst: PacketBuffer::data
      Src: /src/pdns/pdns/recursordist/rec-system-resolve.cc:73,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/recursordist/rec-system-resolve.cc:73,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/recursordist/rec-system-resolve.cc:73,1
    - Dst: PacketBuffer::resize
      Src: /src/pdns/pdns/recursordist/rec-system-resolve.cc:75,1
    - Dst: PacketBuffer::resize
      Src: /src/pdns/pdns/recursordist/rec-system-resolve.cc:78,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - ' name'
    - cls
    - type
    argTypes:
    - string
    - QClass
    - QType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 70
    functionDepth: 1
    functionLinenumber: 70
    functionLinenumberEnd: 81
    functionName: resolve
    functionSourceFile: /src/pdns/pdns/recursordist/rec-system-resolve.cc
    functionUses: 3
    functionsReached:
    - PacketBuffer::data
    - PacketBuffer::size
    - PacketBuffer::resize
    - c_str
    - res_query
    - static_cast<int>
    linkageType: ''
    returnType: PacketBuffer
    signature: PacketBuffer resolve(const string& name, QClass cls, QType type)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: resolve
      Src: /src/pdns/pdns/recursordist/rec-system-resolve.cc:86,1
    - Dst: auto::empty
      Src: /src/pdns/pdns/recursordist/rec-system-resolve.cc:87,1
    - Dst: static_cast<const char*>
      Src: /src/pdns/pdns/recursordist/rec-system-resolve.cc:91,1
    - Dst: static_cast<void*>
      Src: /src/pdns/pdns/recursordist/rec-system-resolve.cc:91,1
    - Dst: auto::data
      Src: /src/pdns/pdns/recursordist/rec-system-resolve.cc:91,1
    - Dst: auto::size
      Src: /src/pdns/pdns/recursordist/rec-system-resolve.cc:91,1
    - Dst: MOADNSParser::d_answers::size
      Src: /src/pdns/pdns/recursordist/rec-system-resolve.cc:92,1
    - Dst: MOADNSParser::d_answers::at
      Src: /src/pdns/pdns/recursordist/rec-system-resolve.cc:95,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/rec-system-resolve.cc:97,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/rec-system-resolve.cc:99,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/rec-system-resolve.cc:99,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/rec-system-resolve.cc:99,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/rec-system-resolve.cc:99,1
    - Dst: auto::d_text::substr
      Src: /src/pdns/pdns/recursordist/rec-system-resolve.cc:101,1
    - Dst: auto::d_text::size
      Src: /src/pdns/pdns/recursordist/rec-system-resolve.cc:101,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 107
      start: 84
    functionDepth: 0
    functionLinenumber: 84
    functionLinenumberEnd: 107
    functionName: serverID
    functionSourceFile: /src/pdns/pdns/recursordist/rec-system-resolve.cc
    functionUses: 0
    functionsReached:
    - getRR
    - static_cast<const char*>
    - auto::data
    - MOADNSParser::d_answers::size
    - size
    - auto::d_text::substr
    - auto::d_text::size
    - MOADNSParser::d_answers::at
    - resolve
    - at
    - static_cast<void*>
    - auto::size
    - auto::empty
    linkageType: ''
    returnType: std::string
    signature: std::string serverID()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: getaddrinfo
      Src: /src/pdns/pdns/recursordist/rec-system-resolve.cc:46,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/rec-system-resolve.cc:46,1
    - Dst: vector::emplace_back
      Src: /src/pdns/pdns/recursordist/rec-system-resolve.cc:56,1
    - Dst: freeaddrinfo
      Src: /src/pdns/pdns/recursordist/rec-system-resolve.cc:62,1
    - Dst: vector::empty
      Src: /src/pdns/pdns/recursordist/rec-system-resolve.cc:63,1
    - Dst: std::sort
      Src: /src/pdns/pdns/recursordist/rec-system-resolve.cc:64,1
    - Dst: vector::begin
      Src: /src/pdns/pdns/recursordist/rec-system-resolve.cc:64,1
    - Dst: vector::end
      Src: /src/pdns/pdns/recursordist/rec-system-resolve.cc:64,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/rec-system-resolve.cc:65,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 1
    argNames:
    - ' name'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 39
    functionDepth: 0
    functionLinenumber: 39
    functionLinenumberEnd: 68
    functionName: resolve
    functionSourceFile: /src/pdns/pdns/recursordist/rec-system-resolve.cc
    functionUses: 4
    functionsReached:
    - vector::begin
    - vector::at
    - freeaddrinfo
    - std::sort
    - vector::end
    - vector::empty
    - vector::emplace_back
    - c_str
    - getaddrinfo
    linkageType: ''
    returnType: ComboAddress
    signature: ComboAddress resolve(const std::string& name)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: res_query
      Src: /src/pdns/pdns/recursordist/rec-system-resolve.cc:73,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/rec-system-resolve.cc:73,1
    - Dst: PacketBuffer::data
      Src: /src/pdns/pdns/recursordist/rec-system-resolve.cc:73,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/recursordist/rec-system-resolve.cc:73,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/recursordist/rec-system-resolve.cc:73,1
    - Dst: PacketBuffer::resize
      Src: /src/pdns/pdns/recursordist/rec-system-resolve.cc:75,1
    - Dst: PacketBuffer::resize
      Src: /src/pdns/pdns/recursordist/rec-system-resolve.cc:78,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - ' name'
    - cls
    - type
    argTypes:
    - string
    - QClass
    - QType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 70
    functionDepth: 1
    functionLinenumber: 70
    functionLinenumberEnd: 81
    functionName: resolve
    functionSourceFile: /src/pdns/pdns/recursordist/rec-system-resolve.cc
    functionUses: 4
    functionsReached:
    - PacketBuffer::data
    - PacketBuffer::size
    - PacketBuffer::resize
    - c_str
    - res_query
    - static_cast<int>
    linkageType: ''
    returnType: PacketBuffer
    signature: PacketBuffer resolve(const string& name, QClass cls, QType type)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: resolve
      Src: /src/pdns/pdns/recursordist/rec-system-resolve.cc:86,1
    - Dst: auto::empty
      Src: /src/pdns/pdns/recursordist/rec-system-resolve.cc:87,1
    - Dst: static_cast<const char*>
      Src: /src/pdns/pdns/recursordist/rec-system-resolve.cc:91,1
    - Dst: static_cast<void*>
      Src: /src/pdns/pdns/recursordist/rec-system-resolve.cc:91,1
    - Dst: auto::data
      Src: /src/pdns/pdns/recursordist/rec-system-resolve.cc:91,1
    - Dst: auto::size
      Src: /src/pdns/pdns/recursordist/rec-system-resolve.cc:91,1
    - Dst: MOADNSParser::d_answers::size
      Src: /src/pdns/pdns/recursordist/rec-system-resolve.cc:92,1
    - Dst: MOADNSParser::d_answers::at
      Src: /src/pdns/pdns/recursordist/rec-system-resolve.cc:95,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/rec-system-resolve.cc:97,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/rec-system-resolve.cc:99,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/rec-system-resolve.cc:99,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/rec-system-resolve.cc:99,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/rec-system-resolve.cc:99,1
    - Dst: auto::d_text::substr
      Src: /src/pdns/pdns/recursordist/rec-system-resolve.cc:101,1
    - Dst: auto::d_text::size
      Src: /src/pdns/pdns/recursordist/rec-system-resolve.cc:101,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 107
      start: 84
    functionDepth: 0
    functionLinenumber: 84
    functionLinenumberEnd: 107
    functionName: serverID
    functionSourceFile: /src/pdns/pdns/recursordist/rec-system-resolve.cc
    functionUses: 0
    functionsReached:
    - getRR
    - static_cast<const char*>
    - auto::data
    - MOADNSParser::d_answers::size
    - size
    - auto::d_text::substr
    - auto::d_text::size
    - MOADNSParser::d_answers::at
    - resolve
    - at
    - static_cast<void*>
    - auto::size
    - auto::empty
    linkageType: ''
    returnType: std::string
    signature: std::string serverID()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/rec-system-resolve.cc:119,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 5
    argNames:
    - serverID
    - ttl
    - interval
    - selfResolveCheck
    - ' callback'
    argTypes:
    - std::string
    - time_t
    - time_t
    - bool
    - std::function<void()>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 124
      start: 117
    functionDepth: 0
    functionLinenumber: 117
    functionLinenumberEnd: 124
    functionName: pdns::RecResolve::setInstanceParameters(std::string serverID, time_t
      ttl, time_t interval, bool selfResolveCheck, const std::function<void()>& callback)
    functionSourceFile: /src/pdns/pdns/recursordist/rec-system-resolve.cc
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void pdns::RecResolve::setInstanceParameters(std::string serverID,
      time_t ttl, time_t interval, bool selfResolveCheck, const std::function<void()>&
      callback)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: make_unique<pdns::RecResolve>
      Src: /src/pdns/pdns/recursordist/rec-system-resolve.cc:128,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 130
      start: 126
    functionDepth: 0
    functionLinenumber: 126
    functionLinenumberEnd: 130
    functionName: '& pdns::RecResolve::getInstance()'
    functionSourceFile: /src/pdns/pdns/recursordist/rec-system-resolve.cc
    functionUses: 0
    functionsReached:
    - make_unique<pdns::RecResolve>
    linkageType: ''
    returnType: pdns::RecResolve
    signature: pdns::RecResolve & pdns::RecResolve::getInstance()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 4
    argNames:
    - ttl
    - interval
    - selfResolveCheck
    - ' callback'
    argTypes:
    - time_t
    - time_t
    - bool
    - std::function<void()>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 135
      start: 132
    functionDepth: 0
    functionLinenumber: 132
    functionLinenumberEnd: 135
    functionName: pdns::RecResolve::RecResolve(time_t ttl, time_t interval, bool selfResolveCheck,
      const std::function<void()>& callback)
    functionSourceFile: /src/pdns/pdns/recursordist/rec-system-resolve.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void pdns::RecResolve::RecResolve(time_t ttl, time_t interval, bool
      selfResolveCheck, const std::function<void()>& callback)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 137
      start: 137
    functionDepth: 0
    functionLinenumber: 137
    functionLinenumberEnd: 137
    functionName: pdns::RecResolve::~RecResolve()
    functionSourceFile: /src/pdns/pdns/recursordist/rec-system-resolve.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void pdns::RecResolve::~RecResolve()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: finish
      Src: /src/pdns/pdns/recursordist/rec-system-resolve.cc:141,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 142
      start: 139
    functionDepth: 0
    functionLinenumber: 139
    functionLinenumberEnd: 142
    functionName: pdns::RecResolve::stopRefresher()
    functionSourceFile: /src/pdns/pdns/recursordist/rec-system-resolve.cc
    functionUses: 0
    functionsReached:
    - finish
    linkageType: ''
    returnType: void
    signature: void pdns::RecResolve::stopRefresher()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: start
      Src: /src/pdns/pdns/recursordist/rec-system-resolve.cc:146,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 144
    functionDepth: 2
    functionLinenumber: 144
    functionLinenumberEnd: 147
    functionName: pdns::RecResolve::startRefresher()
    functionSourceFile: /src/pdns/pdns/recursordist/rec-system-resolve.cc
    functionUses: 0
    functionsReached:
    - start
    linkageType: ''
    returnType: void
    signature: void pdns::RecResolve::startRefresher()
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: PDNSException
      Src: /src/pdns/pdns/recursordist/rec-system-resolve.cc:152,1
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/rec-system-resolve.cc:154,1
    - Dst: auto::d_map::find
      Src: /src/pdns/pdns/recursordist/rec-system-resolve.cc:155,1
    - Dst: auto::d_map::end
      Src: /src/pdns/pdns/recursordist/rec-system-resolve.cc:155,1
    - Dst: resolve
      Src: /src/pdns/pdns/recursordist/rec-system-resolve.cc:162,1
    - Dst: auto::d_map::emplace
      Src: /src/pdns/pdns/recursordist/rec-system-resolve.cc:165,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 2
    argNames:
    - ' name'
    - now
    argTypes:
    - std::string
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 167
      start: 149
    functionDepth: 0
    functionLinenumber: 149
    functionLinenumberEnd: 167
    functionName: pdns::RecResolve::lookupAndRegister(const std::string& name, time_t
      now)
    functionSourceFile: /src/pdns/pdns/recursordist/rec-system-resolve.cc
    functionUses: 0
    functionsReached:
    - PDNSException
    - auto::d_map::find
    - lock
    - auto::d_map::end
    - auto::d_map::emplace
    - resolve
    linkageType: ''
    returnType: ComboAddress
    signature: ComboAddress pdns::RecResolve::lookupAndRegister(const std::string&
      name, time_t now)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/rec-system-resolve.cc:171,1
    - Dst: auto::d_map::find
      Src: /src/pdns/pdns/recursordist/rec-system-resolve.cc:172,1
    - Dst: auto::d_map::end
      Src: /src/pdns/pdns/recursordist/rec-system-resolve.cc:172,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/recursordist/rec-system-resolve.cc:176,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - ' name'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 177
      start: 169
    functionDepth: 0
    functionLinenumber: 169
    functionLinenumberEnd: 177
    functionName: pdns::RecResolve::lookup(const std::string& name)
    functionSourceFile: /src/pdns/pdns/recursordist/rec-system-resolve.cc
    functionUses: 0
    functionsReached:
    - PDNSException
    - auto::d_map::end
    - auto::d_map::find
    - lock
    linkageType: ''
    returnType: ComboAddress
    signature: ComboAddress pdns::RecResolve::lookup(const std::string& name)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/rec-system-resolve.cc:181,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/rec-system-resolve.cc:182,1
    - Dst: auto::d_map::clear
      Src: /src/pdns/pdns/recursordist/rec-system-resolve.cc:183,1
    - Dst: auto::d_map::erase
      Src: /src/pdns/pdns/recursordist/rec-system-resolve.cc:186,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - ' name'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 188
      start: 179
    functionDepth: 1
    functionLinenumber: 179
    functionLinenumberEnd: 188
    functionName: pdns::RecResolve::wipe(const string& name)
    functionSourceFile: /src/pdns/pdns/recursordist/rec-system-resolve.cc
    functionUses: 0
    functionsReached:
    - empty
    - auto::d_map::clear
    - auto::d_map::erase
    - lock
    linkageType: ''
    returnType: void
    signature: void pdns::RecResolve::wipe(const string& name)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/rec-system-resolve.cc:195,1
    - Dst: withName
      Src: /src/pdns/pdns/recursordist/rec-system-resolve.cc:200,1
    - Dst: resolve
      Src: /src/pdns/pdns/recursordist/rec-system-resolve.cc:205,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/rec-system-resolve.cc:207,1
    - Dst: auto::info
      Src: /src/pdns/pdns/recursordist/rec-system-resolve.cc:212,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-system-resolve.cc:212,1
    - Dst: auto::info
      Src: /src/pdns/pdns/recursordist/rec-system-resolve.cc:215,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-system-resolve.cc:216,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-system-resolve.cc:217,1
    - Dst: auto::toString
      Src: /src/pdns/pdns/recursordist/rec-system-resolve.cc:217,1
    - Dst: std::map::emplace
      Src: /src/pdns/pdns/recursordist/rec-system-resolve.cc:221,1
    - Dst: std::map::empty
      Src: /src/pdns/pdns/recursordist/rec-system-resolve.cc:225,1
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/rec-system-resolve.cc:226,1
    - Dst: auto::d_map::insert_or_assign
      Src: /src/pdns/pdns/recursordist/rec-system-resolve.cc:228,1
    - Dst: auto::info
      Src: /src/pdns/pdns/recursordist/rec-system-resolve.cc:232,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 24
    argCount: 1
    argNames:
    - now
    argTypes:
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 235
      start: 190
    functionDepth: 0
    functionLinenumber: 190
    functionLinenumberEnd: 235
    functionName: pdns::RecResolve::refresh(time_t now)
    functionSourceFile: /src/pdns/pdns/recursordist/rec-system-resolve.cc
    functionUses: 0
    functionsReached:
    - std::map::empty
    - Logging::Loggable
    - withName
    - ComboAddress
    - lock
    - std::map::emplace
    - auto::toString
    - auto::d_map::insert_or_assign
    - resolve
    - auto::info
    linkageType: ''
    returnType: bool
    signature: bool pdns::RecResolve::refresh(time_t now)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::max
      Src: /src/pdns/pdns/recursordist/rec-system-resolve.cc:238,1
    - Dst: static_cast<time_t>
      Src: /src/pdns/pdns/recursordist/rec-system-resolve.cc:238,1
    - Dst: start
      Src: /src/pdns/pdns/recursordist/rec-system-resolve.cc:240,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - interval
    - ' callback'
    - selfResolveCheck
    - ' res'
    argTypes:
    - time_t
    - std::function<void()>
    - bool
    - pdns::RecResolve
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 241
      start: 237
    functionDepth: 2
    functionLinenumber: 237
    functionLinenumberEnd: 241
    functionName: pdns::RecResolve::Refresher::Refresher(time_t interval, const std::function<void()>&
      callback, bool selfResolveCheck, pdns::RecResolve& res)
    functionSourceFile: /src/pdns/pdns/recursordist/rec-system-resolve.cc
    functionUses: 0
    functionsReached:
    - std::max
    - static_cast<time_t>
    - start
    linkageType: ''
    returnType: void
    signature: void pdns::RecResolve::Refresher::Refresher(time_t interval, const
      std::function<void()>& callback, bool selfResolveCheck, pdns::RecResolve& res)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: finish
      Src: /src/pdns/pdns/recursordist/rec-system-resolve.cc:245,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 246
      start: 243
    functionDepth: 0
    functionLinenumber: 243
    functionLinenumberEnd: 246
    functionName: pdns::RecResolve::Refresher::~Refresher()
    functionSourceFile: /src/pdns/pdns/recursordist/rec-system-resolve.cc
    functionUses: 0
    functionsReached:
    - finish
    linkageType: ''
    returnType: void
    signature: void pdns::RecResolve::Refresher::~Refresher()
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: setThreadName
      Src: /src/pdns/pdns/recursordist/rec-system-resolve.cc:250,1
    - Dst: time
      Src: /src/pdns/pdns/recursordist/rec-system-resolve.cc:254,1
    - Dst: wait_for
      Src: /src/pdns/pdns/recursordist/rec-system-resolve.cc:263,1
    - Dst: std::chrono::seconds
      Src: /src/pdns/pdns/recursordist/rec-system-resolve.cc:263,1
    - Dst: load
      Src: /src/pdns/pdns/recursordist/rec-system-resolve.cc:264,1
    - Dst: time
      Src: /src/pdns/pdns/recursordist/rec-system-resolve.cc:269,1
    - Dst: time
      Src: /src/pdns/pdns/recursordist/rec-system-resolve.cc:270,1
    - Dst: serverID
      Src: /src/pdns/pdns/recursordist/rec-system-resolve.cc:271,1
    - Dst: withName
      Src: /src/pdns/pdns/recursordist/rec-system-resolve.cc:273,1
    - Dst: auto::info
      Src: /src/pdns/pdns/recursordist/rec-system-resolve.cc:274,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-system-resolve.cc:274,1
    - Dst: refresh
      Src: /src/pdns/pdns/recursordist/rec-system-resolve.cc:277,1
    - Dst: time
      Src: /src/pdns/pdns/recursordist/rec-system-resolve.cc:277,1
    - Dst: time
      Src: /src/pdns/pdns/recursordist/rec-system-resolve.cc:278,1
    - Dst: d_callback
      Src: /src/pdns/pdns/recursordist/rec-system-resolve.cc:280,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 26
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 284
      start: 248
    functionDepth: 1
    functionLinenumber: 248
    functionLinenumberEnd: 284
    functionName: pdns::RecResolve::Refresher::refreshLoop()
    functionSourceFile: /src/pdns/pdns/recursordist/rec-system-resolve.cc
    functionUses: 0
    functionsReached:
    - load
    - std::chrono::seconds
    - withName
    - time
    - Logging::Loggable
    - serverID
    - refresh
    - wait_for
    - d_callback
    - setThreadName
    - auto::info
    linkageType: ''
    returnType: void
    signature: void pdns::RecResolve::Refresher::refreshLoop()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: notify_one
      Src: /src/pdns/pdns/recursordist/rec-system-resolve.cc:290,1
    - Dst: join
      Src: /src/pdns/pdns/recursordist/rec-system-resolve.cc:291,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 292
      start: 286
    functionDepth: 0
    functionLinenumber: 286
    functionLinenumberEnd: 292
    functionName: pdns::RecResolve::Refresher::finish()
    functionSourceFile: /src/pdns/pdns/recursordist/rec-system-resolve.cc
    functionUses: 0
    functionsReached:
    - notify_one
    - join
    linkageType: ''
    returnType: void
    signature: void pdns::RecResolve::Refresher::finish()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::thread
      Src: /src/pdns/pdns/recursordist/rec-system-resolve.cc:298,1
    - Dst: refreshLoop
      Src: /src/pdns/pdns/recursordist/rec-system-resolve.cc:298,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 299
      start: 294
    functionDepth: 0
    functionLinenumber: 294
    functionLinenumberEnd: 299
    functionName: pdns::RecResolve::Refresher::start()
    functionSourceFile: /src/pdns/pdns/recursordist/rec-system-resolve.cc
    functionUses: 0
    functionsReached:
    - refreshLoop
    - std::thread
    linkageType: ''
    returnType: void
    signature: void pdns::RecResolve::Refresher::start()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: notify_one
      Src: /src/pdns/pdns/recursordist/rec-system-resolve.cc:305,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 306
      start: 301
    functionDepth: 0
    functionLinenumber: 301
    functionLinenumberEnd: 306
    functionName: pdns::RecResolve::Refresher::trigger()
    functionSourceFile: /src/pdns/pdns/recursordist/rec-system-resolve.cc
    functionUses: 0
    functionsReached:
    - notify_one
    linkageType: ''
    returnType: void
    signature: void pdns::RecResolve::Refresher::trigger()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: parseIPAndPort
      Src: /src/pdns/pdns/recursordist/rec-system-resolve.cc:311,1
    - Dst: rfind
      Src: /src/pdns/pdns/recursordist/rec-system-resolve.cc:316,1
    - Dst: pdns::checked_stoi<uint16_t>
      Src: /src/pdns/pdns/recursordist/rec-system-resolve.cc:318,1
    - Dst: substr
      Src: /src/pdns/pdns/recursordist/rec-system-resolve.cc:318,1
    - Dst: pdns::RecResolve::getInstance
      Src: /src/pdns/pdns/recursordist/rec-system-resolve.cc:320,1
    - Dst: lookupAndRegister
      Src: /src/pdns/pdns/recursordist/rec-system-resolve.cc:321,1
    - Dst: substr
      Src: /src/pdns/pdns/recursordist/rec-system-resolve.cc:321,1
    - Dst: time
      Src: /src/pdns/pdns/recursordist/rec-system-resolve.cc:321,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/rec-system-resolve.cc:322,1
    - Dst: ComboAddress::setPort
      Src: /src/pdns/pdns/recursordist/rec-system-resolve.cc:323,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/recursordist/rec-system-resolve.cc:326,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-system-resolve.cc:326,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/recursordist/rec-system-resolve.cc:327,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 3
    argNames:
    - ' str'
    - defPort
    - log
    argTypes:
    - string
    - uint16_t
    - Logr::log_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 329
      start: 308
    functionDepth: 0
    functionLinenumber: 308
    functionLinenumberEnd: 329
    functionName: pdns::fromNameOrIP
    functionSourceFile: /src/pdns/pdns/recursordist/rec-system-resolve.cc
    functionUses: 0
    functionsReached:
    - pdns::RecResolve::getInstance
    - Logr::log_t::info
    - Logging::Loggable
    - PDNSException
    - time
    - pdns::checked_stoi<uint16_t>
    - ComboAddress::setPort
    - substr
    - lookupAndRegister
    - parseIPAndPort
    - rfind
    - ComboAddress
    linkageType: ''
    returnType: ComboAddress
    signature: ComboAddress pdns::fromNameOrIP(const string& str, uint16_t defPort,
      Logr::log_t log)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 40
    functionDepth: 0
    functionLinenumber: 40
    functionLinenumberEnd: 49
    functionName: compilerVersion
    functionSourceFile: /src/pdns/pdns/recursordist/version.cc
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: string
    signature: string compilerVersion()
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 52
    functionDepth: 0
    functionLinenumber: 52
    functionLinenumberEnd: 61
    functionName: productName
    functionSourceFile: /src/pdns/pdns/recursordist/version.cc
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: string
    signature: string productName()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 63
    functionDepth: 0
    functionLinenumber: 63
    functionLinenumberEnd: 66
    functionName: getPDNSVersion
    functionSourceFile: /src/pdns/pdns/recursordist/version.cc
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: string
    signature: string getPDNSVersion()
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 69
    functionDepth: 0
    functionLinenumber: 69
    functionLinenumberEnd: 78
    functionName: productTypeApiType
    functionSourceFile: /src/pdns/pdns/recursordist/version.cc
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: string
    signature: string productTypeApiType()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::getline
      Src: /src/pdns/pdns/recursordist/version.cc:84,1
    - Dst: vector::emplace_back
      Src: /src/pdns/pdns/recursordist/version.cc:85,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 80
    functionDepth: 0
    functionLinenumber: 80
    functionLinenumberEnd: 88
    functionName: getProductVersionLines
    functionSourceFile: /src/pdns/pdns/recursordist/version.cc
    functionUses: 2
    functionsReached:
    - std::getline
    - vector::emplace_back
    linkageType: ''
    returnType: vector<string>
    signature: vector<string> getProductVersionLines()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: productName
      Src: /src/pdns/pdns/recursordist/version.cc:93,1
    - Dst: compilerVersion
      Src: /src/pdns/pdns/recursordist/version.cc:98,1
    - Dst: ostringstream::str
      Src: /src/pdns/pdns/recursordist/version.cc:107,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 90
    functionDepth: 0
    functionLinenumber: 90
    functionLinenumberEnd: 108
    functionName: getProductVersion
    functionSourceFile: /src/pdns/pdns/recursordist/version.cc
    functionUses: 2
    functionsReached:
    - productName
    - ostringstream::str
    - compilerVersion
    linkageType: ''
    returnType: string
    signature: string getProductVersion()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::rust::misc::rust_features
      Src: /src/pdns/pdns/recursordist/version.cc:185,1
    - Dst: BackendMakers
      Src: /src/pdns/pdns/recursordist/version.cc:191,1
    - Dst: boost::join
      Src: /src/pdns/pdns/recursordist/version.cc:192,1
    - Dst: escape_quotes
      Src: /src/pdns/pdns/recursordist/version.cc:199,1
    - Dst: ostringstream::str
      Src: /src/pdns/pdns/recursordist/version.cc:203,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 204
      start: 110
    functionDepth: 1
    functionLinenumber: 110
    functionLinenumberEnd: 204
    functionName: getBuildConfiguration
    functionSourceFile: /src/pdns/pdns/recursordist/version.cc
    functionUses: 2
    functionsReached:
    - BackendMakers
    - ostringstream::str
    - boost::join
    - escape_quotes
    - pdns::rust::misc::rust_features
    linkageType: ''
    returnType: string
    signature: string getBuildConfiguration()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - s
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 197
      start: 196
    functionDepth: 0
    functionLinenumber: 196
    functionLinenumberEnd: 197
    functionName: double_escape
    functionSourceFile: /src/pdns/pdns/recursordist/version.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: double_escape(s)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - s
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 198
      start: 197
    functionDepth: 0
    functionLinenumber: 197
    functionLinenumberEnd: 198
    functionName: escape_quotes
    functionSourceFile: /src/pdns/pdns/recursordist/version.cc
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: escape_quotes(s)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: productName
      Src: /src/pdns/pdns/recursordist/version.cc:209,1
    - Dst: ostringstream::str
      Src: /src/pdns/pdns/recursordist/version.cc:213,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 214
      start: 206
    functionDepth: 0
    functionLinenumber: 206
    functionLinenumberEnd: 214
    functionName: fullVersionString
    functionSourceFile: /src/pdns/pdns/recursordist/version.cc
    functionUses: 3
    functionsReached:
    - productName
    - ostringstream::str
    linkageType: ''
    returnType: string
    signature: string fullVersionString()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - productType_
    argTypes:
    - ProductType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 219
      start: 216
    functionDepth: 0
    functionLinenumber: 216
    functionLinenumberEnd: 219
    functionName: versionSetProduct
    functionSourceFile: /src/pdns/pdns/recursordist/version.cc
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void versionSetProduct(ProductType productType_)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 224
      start: 221
    functionDepth: 0
    functionLinenumber: 221
    functionLinenumberEnd: 224
    functionName: versionGetProduct
    functionSourceFile: /src/pdns/pdns/recursordist/version.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: ProductType
    signature: ProductType versionGetProduct()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/sortlist.hh:35,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - slo
    argTypes:
    - SortListOrder
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 35
      start: 34
    functionDepth: 0
    functionLinenumber: 34
    functionLinenumberEnd: 35
    functionName: SortListOrderCmp
    functionSourceFile: /src/pdns/pdns/recursordist/sortlist.hh
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void SortListOrderCmp(SortListOrder slo)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 47
    functionDepth: 0
    functionLinenumber: 47
    functionLinenumberEnd: 50
    functionName: '& getTree() const'
    functionSourceFile: /src/pdns/pdns/recursordist/sortlist.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: NetmaskTree<SortListOrder>
    signature: NetmaskTree<SortListOrder> & getTree() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::AtomicHistogram
      Src: /src/pdns/pdns/recursordist/test-histogram_hh.cc:40,1
    - Dst: h
      Src: /src/pdns/pdns/recursordist/test-histogram_hh.cc:42,1
    - Dst: h
      Src: /src/pdns/pdns/recursordist/test-histogram_hh.cc:43,1
    - Dst: h
      Src: /src/pdns/pdns/recursordist/test-histogram_hh.cc:44,1
    - Dst: h
      Src: /src/pdns/pdns/recursordist/test-histogram_hh.cc:45,1
    - Dst: h
      Src: /src/pdns/pdns/recursordist/test-histogram_hh.cc:46,1
    - Dst: h
      Src: /src/pdns/pdns/recursordist/test-histogram_hh.cc:47,1
    - Dst: h
      Src: /src/pdns/pdns/recursordist/test-histogram_hh.cc:48,1
    - Dst: h
      Src: /src/pdns/pdns/recursordist/test-histogram_hh.cc:49,1
    - Dst: auto::getRawData
      Src: /src/pdns/pdns/recursordist/test-histogram_hh.cc:51,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-histogram_hh.cc:52,1
    - Dst: auto::size
      Src: /src/pdns/pdns/recursordist/test-histogram_hh.cc:52,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-histogram_hh.cc:56,1
    - Dst: auto::getCumulativeCounts
      Src: /src/pdns/pdns/recursordist/test-histogram_hh.cc:59,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-histogram_hh.cc:60,1
    - Dst: auto::size
      Src: /src/pdns/pdns/recursordist/test-histogram_hh.cc:60,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-histogram_hh.cc:64,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-histogram_hh.cc:66,1
    - Dst: auto::getSum
      Src: /src/pdns/pdns/recursordist/test-histogram_hh.cc:66,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 38
    functionDepth: 0
    functionLinenumber: 38
    functionLinenumberEnd: 67
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-histogram_hh.cc
    functionUses: 0
    functionsReached:
    - auto::getCumulativeCounts
    - auto::getRawData
    - BOOST_CHECK_EQUAL
    - auto::getSum
    - pdns::AtomicHistogram
    - h
    - auto::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_simple)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 50
    functionDepth: 0
    functionLinenumber: 50
    functionLinenumberEnd: 50
    functionName: SvcParam::SvcParam
    functionSourceFile: /src/pdns/pdns/recursordist/svc-records.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void SvcParam()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' key'
    argTypes:
    - SvcParamKey
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 91
    functionDepth: 0
    functionLinenumber: 91
    functionLinenumberEnd: 94
    functionName: operator==(const SvcParamKey& key) const
    functionSourceFile: /src/pdns/pdns/recursordist/svc-records.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool operator==(const SvcParamKey& key) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 96
    functionDepth: 0
    functionLinenumber: 96
    functionLinenumberEnd: 99
    functionName: SvcParam::getKey
    functionSourceFile: /src/pdns/pdns/recursordist/svc-records.hh
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: SvcParamKey
    signature: SvcParamKey getKey() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 109
    functionDepth: 0
    functionLinenumber: 109
    functionLinenumberEnd: 109
    functionName: SvcParam::getAutoHint
    functionSourceFile: /src/pdns/pdns/recursordist/svc-records.hh
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool getAutoHint() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - value
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 110
    functionDepth: 0
    functionLinenumber: 110
    functionLinenumberEnd: 110
    functionName: SvcParam::setAutoHint
    functionSourceFile: /src/pdns/pdns/recursordist/svc-records.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setAutoHint(const bool value)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 33
      start: 32
    functionDepth: 0
    functionLinenumber: 32
    functionLinenumberEnd: 33
    functionName: pdns::RateLimitedLog::RateLimitedLog
    functionSourceFile: /src/pdns/pdns/recursordist/ratelimitedlog.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void RateLimitedLog(time_t arg = 60)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pdns::RateLimitedLog::doLog
      Src: /src/pdns/pdns/recursordist/ratelimitedlog.hh:39,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/recursordist/ratelimitedlog.hh:40,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/ratelimitedlog.hh:41,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/ratelimitedlog.hh:42,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - slog
    - ' msg'
    argTypes:
    - Logr::log_t
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 36
    functionDepth: 1
    functionLinenumber: 36
    functionLinenumberEnd: 44
    functionName: pdns::RateLimitedLog::log
    functionSourceFile: /src/pdns/pdns/recursordist/ratelimitedlog.hh
    functionUses: 0
    functionsReached:
    - Logging::Loggable
    - Logr::log_t::info
    - pdns::RateLimitedLog::doLog
    linkageType: ''
    returnType: void
    signature: void log(Logr::log_t slog, const string& msg, const Args&... args)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pdns::RateLimitedLog::doLog
      Src: /src/pdns/pdns/recursordist/ratelimitedlog.hh:50,1
    - Dst: Logr::log_t::error
      Src: /src/pdns/pdns/recursordist/ratelimitedlog.hh:51,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/ratelimitedlog.hh:51,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/ratelimitedlog.hh:52,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/ratelimitedlog.hh:53,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - slog
    - ' msg'
    - ' stdException'
    argTypes:
    - Logr::log_t
    - string
    - std::exception
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 47
    functionDepth: 1
    functionLinenumber: 47
    functionLinenumberEnd: 55
    functionName: pdns::RateLimitedLog::log
    functionSourceFile: /src/pdns/pdns/recursordist/ratelimitedlog.hh
    functionUses: 0
    functionsReached:
    - what
    - Logr::log_t::error
    - Logging::Loggable
    - pdns::RateLimitedLog::doLog
    linkageType: ''
    returnType: void
    signature: void log(Logr::log_t slog, const string& msg, const std::exception&
      stdException, const Args&... args)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pdns::RateLimitedLog::doLog
      Src: /src/pdns/pdns/recursordist/ratelimitedlog.hh:61,1
    - Dst: Logr::log_t::error
      Src: /src/pdns/pdns/recursordist/ratelimitedlog.hh:62,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/ratelimitedlog.hh:63,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/ratelimitedlog.hh:64,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - slog
    - ' msg'
    - ' pdnsException'
    argTypes:
    - Logr::log_t
    - string
    - PDNSException
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 58
    functionDepth: 1
    functionLinenumber: 58
    functionLinenumberEnd: 66
    functionName: pdns::RateLimitedLog::log
    functionSourceFile: /src/pdns/pdns/recursordist/ratelimitedlog.hh
    functionUses: 0
    functionsReached:
    - Logging::Loggable
    - Logr::log_t::error
    - pdns::RateLimitedLog::doLog
    linkageType: ''
    returnType: void
    signature: void log(Logr::log_t slog, const string& msg, const PDNSException&
      pdnsException, const Args&... args)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/ratelimitedlog.hh:71,1
    - Dst: time
      Src: /src/pdns/pdns/recursordist/ratelimitedlog.hh:72,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - ' count'
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 69
    functionDepth: 0
    functionLinenumber: 69
    functionLinenumberEnd: 82
    functionName: pdns::RateLimitedLog::doLog
    functionSourceFile: /src/pdns/pdns/recursordist/ratelimitedlog.hh
    functionUses: 3
    functionsReached:
    - time
    - lock
    linkageType: ''
    returnType: bool
    signature: bool doLog(uint32_t& count)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 33
      start: 32
    functionDepth: 0
    functionLinenumber: 32
    functionLinenumberEnd: 33
    functionName: pdns::RateLimitedLog::RateLimitedLog
    functionSourceFile: /src/pdns/pdns/recursordist/ratelimitedlog.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void RateLimitedLog(time_t arg = 60)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pdns::RateLimitedLog::doLog
      Src: /src/pdns/pdns/recursordist/ratelimitedlog.hh:39,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/recursordist/ratelimitedlog.hh:40,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/ratelimitedlog.hh:41,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/ratelimitedlog.hh:42,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - slog
    - ' msg'
    argTypes:
    - Logr::log_t
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 36
    functionDepth: 1
    functionLinenumber: 36
    functionLinenumberEnd: 44
    functionName: pdns::RateLimitedLog::log
    functionSourceFile: /src/pdns/pdns/recursordist/ratelimitedlog.hh
    functionUses: 0
    functionsReached:
    - Logging::Loggable
    - Logr::log_t::info
    - pdns::RateLimitedLog::doLog
    linkageType: ''
    returnType: void
    signature: void log(Logr::log_t slog, const string& msg, const Args&... args)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pdns::RateLimitedLog::doLog
      Src: /src/pdns/pdns/recursordist/ratelimitedlog.hh:50,1
    - Dst: Logr::log_t::error
      Src: /src/pdns/pdns/recursordist/ratelimitedlog.hh:51,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/ratelimitedlog.hh:51,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/ratelimitedlog.hh:52,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/ratelimitedlog.hh:53,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - slog
    - ' msg'
    - ' stdException'
    argTypes:
    - Logr::log_t
    - string
    - std::exception
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 47
    functionDepth: 1
    functionLinenumber: 47
    functionLinenumberEnd: 55
    functionName: pdns::RateLimitedLog::log
    functionSourceFile: /src/pdns/pdns/recursordist/ratelimitedlog.hh
    functionUses: 0
    functionsReached:
    - what
    - Logr::log_t::error
    - Logging::Loggable
    - pdns::RateLimitedLog::doLog
    linkageType: ''
    returnType: void
    signature: void log(Logr::log_t slog, const string& msg, const std::exception&
      stdException, const Args&... args)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pdns::RateLimitedLog::doLog
      Src: /src/pdns/pdns/recursordist/ratelimitedlog.hh:61,1
    - Dst: Logr::log_t::error
      Src: /src/pdns/pdns/recursordist/ratelimitedlog.hh:62,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/ratelimitedlog.hh:63,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/ratelimitedlog.hh:64,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - slog
    - ' msg'
    - ' pdnsException'
    argTypes:
    - Logr::log_t
    - string
    - PDNSException
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 58
    functionDepth: 1
    functionLinenumber: 58
    functionLinenumberEnd: 66
    functionName: pdns::RateLimitedLog::log
    functionSourceFile: /src/pdns/pdns/recursordist/ratelimitedlog.hh
    functionUses: 0
    functionsReached:
    - Logging::Loggable
    - Logr::log_t::error
    - pdns::RateLimitedLog::doLog
    linkageType: ''
    returnType: void
    signature: void log(Logr::log_t slog, const string& msg, const PDNSException&
      pdnsException, const Args&... args)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/ratelimitedlog.hh:71,1
    - Dst: time
      Src: /src/pdns/pdns/recursordist/ratelimitedlog.hh:72,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - ' count'
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 69
    functionDepth: 0
    functionLinenumber: 69
    functionLinenumberEnd: 82
    functionName: pdns::RateLimitedLog::doLog
    functionSourceFile: /src/pdns/pdns/recursordist/ratelimitedlog.hh
    functionUses: 6
    functionsReached:
    - time
    - lock
    linkageType: ''
    returnType: bool
    signature: bool doLog(uint32_t& count)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - source
    argTypes:
    - GlobalStateHolder<T>*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 60
    functionDepth: 0
    functionLinenumber: 60
    functionLinenumberEnd: 62
    functionName: LocalStateHolder::LocalStateHolder
    functionSourceFile: /src/pdns/pdns/recursordist/sholder.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void LocalStateHolder(GlobalStateHolder<T>* source)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: getGeneration
      Src: /src/pdns/pdns/recursordist/sholder.hh:66,1
    - Dst: getState
      Src: /src/pdns/pdns/recursordist/sholder.hh:67,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/sholder.hh:70,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 64
    functionDepth: 0
    functionLinenumber: 64
    functionLinenumberEnd: 71
    functionName: '* operator->()'
    functionSourceFile: /src/pdns/pdns/recursordist/sholder.hh
    functionUses: 0
    functionsReached:
    - getGeneration
    - get
    - getState
    linkageType: ''
    returnType: T
    signature: T * operator->()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 72
    functionDepth: 0
    functionLinenumber: 72
    functionLinenumberEnd: 75
    functionName: '& operator*()'
    functionSourceFile: /src/pdns/pdns/recursordist/sholder.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: T
    signature: T & operator*()
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 80
    functionDepth: 0
    functionLinenumber: 80
    functionLinenumberEnd: 86
    functionName: '& get(bool allowedOutdated = false)'
    functionSourceFile: /src/pdns/pdns/recursordist/sholder.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: T
    signature: T & get(bool allowedOutdated = false)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LocalStateHolder::reset
      Src: /src/pdns/pdns/recursordist/sholder.hh:91,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 88
    functionDepth: 0
    functionLinenumber: 88
    functionLinenumberEnd: 92
    functionName: LocalStateHolder::reset
    functionSourceFile: /src/pdns/pdns/recursordist/sholder.hh
    functionUses: 4
    functionsReached:
    - LocalStateHolder::reset
    linkageType: ''
    returnType: void
    signature: void reset()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<T>
      Src: /src/pdns/pdns/recursordist/sholder.hh:105,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 104
    functionDepth: 0
    functionLinenumber: 104
    functionLinenumberEnd: 106
    functionName: GlobalStateHolder::GlobalStateHolder
    functionSourceFile: /src/pdns/pdns/recursordist/sholder.hh
    functionUses: 0
    functionsReached:
    - std::make_shared<T>
    linkageType: ''
    returnType: void
    signature: void GlobalStateHolder()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LocalStateHolder<T>
      Src: /src/pdns/pdns/recursordist/sholder.hh:109,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 107
    functionDepth: 0
    functionLinenumber: 107
    functionLinenumberEnd: 110
    functionName: GlobalStateHolder::getLocal
    functionSourceFile: /src/pdns/pdns/recursordist/sholder.hh
    functionUses: 0
    functionsReached:
    - LocalStateHolder<T>
    linkageType: ''
    returnType: LocalStateHolder<T>
    signature: LocalStateHolder<T> getLocal()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<T>
      Src: /src/pdns/pdns/recursordist/sholder.hh:114,1
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/sholder.hh:116,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/sholder.hh:116,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - ' state'
    argTypes:
    - T
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 119
      start: 112
    functionDepth: 0
    functionLinenumber: 112
    functionLinenumberEnd: 119
    functionName: GlobalStateHolder::setState
    functionSourceFile: /src/pdns/pdns/recursordist/sholder.hh
    functionUses: 0
    functionsReached:
    - std::make_shared<T>
    - std::move
    - lock
    linkageType: ''
    returnType: void
    signature: void setState(const T& state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<T>
      Src: /src/pdns/pdns/recursordist/sholder.hh:123,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/sholder.hh:123,1
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/sholder.hh:125,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/sholder.hh:125,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ' state'
    argTypes:
    - T
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 121
    functionDepth: 0
    functionLinenumber: 121
    functionLinenumberEnd: 128
    functionName: GlobalStateHolder::setState
    functionSourceFile: /src/pdns/pdns/recursordist/sholder.hh
    functionUses: 0
    functionsReached:
    - std::make_shared<T>
    - std::move
    - lock
    linkageType: ''
    returnType: void
    signature: void setState(T&& state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/sholder.hh:132,1
    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: GlobalStateHolder::getCopy
    functionSourceFile: /src/pdns/pdns/recursordist/sholder.hh
    functionUses: 0
    functionsReached:
    - lock
    linkageType: ''
    returnType: T
    signature: T getCopy() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/sholder.hh:139,1
    - Dst: act
      Src: /src/pdns/pdns/recursordist/sholder.hh:141,1
    - Dst: std::make_shared<T>
      Src: /src/pdns/pdns/recursordist/sholder.hh:142,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/sholder.hh:142,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - act
    argTypes:
    - F
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 144
      start: 137
    functionDepth: 0
    functionLinenumber: 137
    functionLinenumberEnd: 144
    functionName: GlobalStateHolder::modify
    functionSourceFile: /src/pdns/pdns/recursordist/sholder.hh
    functionUses: 0
    functionsReached:
    - std::make_shared<T>
    - std::move
    - act
    - lock
    linkageType: ''
    returnType: void
    signature: void modify(F act)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 152
      start: 149
    functionDepth: 0
    functionLinenumber: 149
    functionLinenumberEnd: 152
    functionName: GlobalStateHolder::getGeneration
    functionSourceFile: /src/pdns/pdns/recursordist/sholder.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int getGeneration() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/sholder.hh:155,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - state
    - generation
    argTypes:
    - std::shared_ptr<T>*
    - unsigned int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 157
      start: 153
    functionDepth: 0
    functionLinenumber: 153
    functionLinenumberEnd: 157
    functionName: GlobalStateHolder::getState
    functionSourceFile: /src/pdns/pdns/recursordist/sholder.hh
    functionUses: 0
    functionsReached:
    - lock
    linkageType: ''
    returnType: void
    signature: void getState(std::shared_ptr<T>* state, unsigned int* generation)
      const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::dynamic_pointer_cast<DSRecordContent>
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:58,1
    - Dst: make
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:58,1
    - Dst: emplace
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:59,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 54
    functionDepth: 0
    functionLinenumber: 54
    functionLinenumberEnd: 61
    functionName: LuaConfigItems::LuaConfigItems
    functionSourceFile: /src/pdns/pdns/recursordist/rec-lua-conf.cc
    functionUses: 2
    functionsReached:
    - std::dynamic_pointer_cast<DSRecordContent>
    - emplace
    - make
    linkageType: ''
    returnType: void
    signature: void LuaConfigItems::LuaConfigItems()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 2
    argCount: 2
    argNames:
    - ' configA'
    - ' configB'
    argTypes:
    - ProtobufExportConfig
    - ProtobufExportConfig
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 65
    functionDepth: 0
    functionLinenumber: 65
    functionLinenumberEnd: 83
    functionName: operator==(const ProtobufExportConfig& configA, const ProtobufExportConfig&
      configB)
    functionSourceFile: /src/pdns/pdns/recursordist/rec-lua-conf.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool operator==(const ProtobufExportConfig& configA, const ProtobufExportConfig&
      configB)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' configA'
    - ' configB'
    argTypes:
    - ProtobufExportConfig
    - ProtobufExportConfig
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 85
    functionDepth: 0
    functionLinenumber: 85
    functionLinenumberEnd: 88
    functionName: operator!=(const ProtobufExportConfig& configA, const ProtobufExportConfig&
      configB)
    functionSourceFile: /src/pdns/pdns/recursordist/rec-lua-conf.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool operator!=(const ProtobufExportConfig& configA, const ProtobufExportConfig&
      configB)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 2
    argCount: 2
    argNames:
    - ' configA'
    - ' configB'
    argTypes:
    - FrameStreamExportConfig
    - FrameStreamExportConfig
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 90
    functionDepth: 0
    functionLinenumber: 90
    functionLinenumberEnd: 106
    functionName: operator==(const FrameStreamExportConfig& configA, const FrameStreamExportConfig&
      configB)
    functionSourceFile: /src/pdns/pdns/recursordist/rec-lua-conf.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool operator==(const FrameStreamExportConfig& configA, const FrameStreamExportConfig&
      configB)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' configA'
    - ' configB'
    argTypes:
    - FrameStreamExportConfig
    - FrameStreamExportConfig
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 111
      start: 108
    functionDepth: 0
    functionLinenumber: 108
    functionLinenumberEnd: 111
    functionName: operator!=(const FrameStreamExportConfig& configA, const FrameStreamExportConfig&
      configB)
    functionSourceFile: /src/pdns/pdns/recursordist/rec-lua-conf.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool operator!=(const FrameStreamExportConfig& configA, const FrameStreamExportConfig&
      configB)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: count
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:117,1
    - Dst: boost::get<std::string>
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:118,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:118,1
    - Dst: count
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:120,1
    - Dst: DNSFilterEngine::Policy
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:121,1
    - Dst: boost::get<uint32_t>
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:122,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:122,1
    - Dst: defpol::setName
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:123,1
    - Dst: boost::get<string>
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:125,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:125,1
    - Dst: make_unique<DNSFilterEngine::Policy::CustomData>
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:127,1
    - Dst: defpol::d_custom::push_back
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:129,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:129,1
    - Dst: count
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:132,1
    - Dst: static_cast<int32_t>
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:133,1
    - Dst: boost::get<uint32_t>
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:133,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:133,1
    - Dst: count
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:140,1
    - Dst: boost::get<bool>
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:141,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:141,1
    - Dst: count
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:144,1
    - Dst: boost::get<uint32_t>
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:145,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:145,1
    - Dst: count
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:147,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:148,1
    - Dst: boost::get<uint32_t>
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:148,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:148,1
    - Dst: count
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:150,1
    - Dst: boost::get<std::vector<std::pair<int, std::string>>>
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:151,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:151,1
    - Dst: std::unordered_set::insert
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:154,1
    - Dst: tags::insert
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:155,1
    - Dst: count
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:158,1
    - Dst: boost::get<bool>
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:159,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:159,1
    - Dst: count
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:161,1
    - Dst: boost::get<uint32_t>
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:162,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:162,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:163,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:164,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:164,1
    - Dst: count
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:167,1
    - Dst: boost::get<std::string>
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:168,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:168,1
    - Dst: count
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:171,1
    - Dst: boost::get<bool>
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:172,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:172,1
    - Dst: count
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:174,1
    - Dst: boost::get<bool>
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:175,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:175,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 53
    argCount: 2
    argNames:
    - ' have'
    - ' params'
    argTypes:
    - rpzOptions_t
    - RPZTrackerParams
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 177
      start: 115
    functionDepth: 2
    functionLinenumber: 115
    functionLinenumberEnd: 177
    functionName: parseRPZParameters
    functionSourceFile: /src/pdns/pdns/recursordist/rec-lua-conf.cc
    functionUses: 0
    functionsReached:
    - std::to_string
    - static_cast<int32_t>
    - std::unordered_set::insert
    - boost::get<std::string>
    - boost::get<std::vector<std::pair<int, std::string>>>
    - static_cast<size_t>
    - boost::get<string>
    - DNSRecordContent::make
    - at
    - pdns::max
    - tags::insert
    - std::runtime_error
    - defpol::d_custom::push_back
    - make_unique<DNSFilterEngine::Policy::CustomData>
    - boost::get<uint32_t>
    - count
    - DNSFilterEngine::Policy
    - defpol::setName
    - boost::get<bool>
    linkageType: ''
    returnType: void
    signature: void parseRPZParameters(const rpzOptions_t& have, RPZTrackerParams&
      params)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::find
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:190,1
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:190,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:190,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:191,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:192,1
    - Dst: static_cast<ProtobufExportConfig::Strategy>
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:194,1
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:194,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - ' strategy'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 195
      start: 188
    functionDepth: 0
    functionLinenumber: 188
    functionLinenumberEnd: 195
    functionName: ProtobufExportConfig::strategyFromString
    functionSourceFile: /src/pdns/pdns/recursordist/rec-lua-conf.cc
    functionUses: 0
    functionsReached:
    - end
    - runtime_error
    - static_cast<ProtobufExportConfig::Strategy>
    - std::find
    - begin
    linkageType: ''
    returnType: ProtobufExportConfig::Strategy
    signature: ProtobufExportConfig::Strategy ProtobufExportConfig::strategyFromString(const
      std::string& strategy)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:199,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:200,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:203,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - strategy
    argTypes:
    - ProtobufExportConfig::Strategy
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 204
      start: 197
    functionDepth: 0
    functionLinenumber: 197
    functionLinenumberEnd: 204
    functionName: ProtobufExportConfig::toString
    functionSourceFile: /src/pdns/pdns/recursordist/rec-lua-conf.cc
    functionUses: 0
    functionsReached:
    - static_cast<size_t>
    - at
    - size
    linkageType: ''
    returnType: std::string
    signature: std::string ProtobufExportConfig::toString(ProtobufExportConfig::Strategy
      strategy)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: count
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:213,1
    - Dst: boost::get<uint64_t>
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:214,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:214,1
    - Dst: count
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:217,1
    - Dst: boost::get<uint64_t>
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:218,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:218,1
    - Dst: count
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:221,1
    - Dst: boost::get<uint64_t>
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:222,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:222,1
    - Dst: count
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:225,1
    - Dst: boost::get<bool>
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:226,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:226,1
    - Dst: count
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:229,1
    - Dst: boost::get<bool>
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:230,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:230,1
    - Dst: count
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:233,1
    - Dst: boost::get<bool>
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:234,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:234,1
    - Dst: count
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:237,1
    - Dst: boost::get<bool>
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:238,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:238,1
    - Dst: count
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:241,1
    - Dst: boost::get<bool>
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:242,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:242,1
    - Dst: count
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:245,1
    - Dst: boost::get<bool>
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:246,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:246,1
    - Dst: count
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:249,1
    - Dst: boost::get<string>
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:250,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:250,1
    - Dst: ProtobufExportConfig::strategyFromString
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:251,1
    - Dst: count
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:254,1
    - Dst: exportTypes::clear
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:255,1
    - Dst: boost::get<std::vector<std::pair<int, std::string>>>
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:257,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:257,1
    - Dst: QType::QType
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:261,1
    - Dst: std::stoul
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:263,1
    - Dst: QType::chartocode
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:266,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:266,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:268,1
    - Dst: exportTypes::insert
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:271,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 47
    argCount: 2
    argNames:
    - ' vars'
    - ' config'
    argTypes:
    - std::optional<protobufOptions_t>
    - ProtobufExportConfig
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 274
      start: 206
    functionDepth: 2
    functionLinenumber: 206
    functionLinenumberEnd: 274
    functionName: parseProtobufOptions
    functionSourceFile: /src/pdns/pdns/recursordist/rec-lua-conf.cc
    functionUses: 0
    functionsReached:
    - boost::get<uint64_t>
    - exportTypes::clear
    - QType::QType
    - boost::get<string>
    - c_str
    - count
    - std::runtime_error
    - exportTypes::insert
    - boost::get<bool>
    - boost::get<std::vector<std::pair<int, std::string>>>
    - QType::chartocode
    - std::stoul
    - ProtobufExportConfig::strategyFromString
    - at
    linkageType: ''
    returnType: void
    signature: void parseProtobufOptions(const std::optional<protobufOptions_t>& vars,
      ProtobufExportConfig& config)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: count
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:286,1
    - Dst: boost::get<bool>
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:287,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:287,1
    - Dst: count
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:289,1
    - Dst: boost::get<bool>
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:290,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:290,1
    - Dst: count
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:292,1
    - Dst: boost::get<bool>
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:293,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:293,1
    - Dst: count
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:295,1
    - Dst: boost::get<bool>
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:296,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:296,1
    - Dst: count
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:299,1
    - Dst: boost::get<uint64_t>
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:300,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:300,1
    - Dst: count
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:302,1
    - Dst: boost::get<uint64_t>
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:303,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:303,1
    - Dst: count
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:305,1
    - Dst: boost::get<uint64_t>
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:306,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:306,1
    - Dst: count
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:308,1
    - Dst: boost::get<uint64_t>
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:309,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:309,1
    - Dst: count
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:311,1
    - Dst: boost::get<uint64_t>
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:312,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:312,1
    - Dst: count
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:314,1
    - Dst: boost::get<uint64_t>
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:315,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:315,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 34
    argCount: 2
    argNames:
    - ' vars'
    - ' config'
    argTypes:
    - std::optional<frameStreamOptions_t>
    - FrameStreamExportConfig
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 317
      start: 279
    functionDepth: 0
    functionLinenumber: 279
    functionLinenumberEnd: 317
    functionName: parseFrameStreamOptions
    functionSourceFile: /src/pdns/pdns/recursordist/rec-lua-conf.cc
    functionUses: 0
    functionsReached:
    - boost::get<uint64_t>
    - boost::get<bool>
    - at
    - count
    linkageType: ''
    returnType: void
    signature: void parseFrameStreamOptions(const std::optional<frameStreamOptions_t>&
      vars, FrameStreamExportConfig& config)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<DNSFilterEngine::Zone>
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:326,1
    - Dst: type
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:327,1
    - Dst: typeid
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:327,1
    - Dst: RPZTrackerParams::zoneXFRParams::primaries::emplace_back
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:328,1
    - Dst: boost::get<std::string>
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:328,1
    - Dst: boost::get<std::vector<std::pair<int, std::string>>>
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:331,1
    - Dst: RPZTrackerParams::zoneXFRParams::primaries::emplace_back
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:332,1
    - Dst: parseRPZParameters
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:339,1
    - Dst: count
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:341,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:342,1
    - Dst: toLower
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:342,1
    - Dst: boost::get<string>
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:342,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:342,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:343,1
    - Dst: toLower
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:343,1
    - Dst: boost::get<string>
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:343,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:343,1
    - Dst: B64Decode
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:344,1
    - Dst: boost::get<string>
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:344,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:344,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:345,1
    - Dst: count
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:348,1
    - Dst: boost::get<uint32_t>
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:349,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:349,1
    - Dst: d_slog::info
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:351,1
    - Dst: count
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:355,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:356,1
    - Dst: boost::get<uint32_t>
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:356,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:356,1
    - Dst: count
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:359,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:360,1
    - Dst: boost::get<string>
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:360,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:360,1
    - Dst: count
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:363,1
    - Dst: static_cast<uint16_t>
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:364,1
    - Dst: boost::get<uint32_t>
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:364,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:364,1
    - Dst: count
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:367,1
    - Dst: boost::get<std::string>
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:368,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:368,1
    - Dst: count
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:371,1
    - Dst: boost::get<std::string>
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:372,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:372,1
    - Dst: count
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:375,1
    - Dst: boost::get<bool>
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:376,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:376,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:380,1
    - Dst: pdns::fromNameOrIP
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:383,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:385,1
    - Dst: auto::toString
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:385,1
    - Dst: RPZTrackerParams::zoneXFRParams::localAddress::toString
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:385,1
    - Dst: rpzs::emplace_back
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:389,1
    - Dst: d_slog::error
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:392,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:392,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:392,1
    - Dst: d_slog::error
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:395,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:395,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 56
    argCount: 4
    argNames:
    - ' lci'
    - ' primaries_'
    - ' zoneName'
    - ' options'
    argTypes:
    - LuaConfigItems
    - boost::variant<string, std::vector<std::pair<int, string>>>
    - string
    - std::optional<rpzOptions_t>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 397
      start: 320
    functionDepth: 3
    functionLinenumber: 320
    functionLinenumberEnd: 397
    functionName: rpzPrimary
    functionSourceFile: /src/pdns/pdns/recursordist/rec-lua-conf.cc
    functionUses: 0
    functionsReached:
    - PDNSException
    - d_slog::info
    - boost::get<std::string>
    - boost::get<std::vector<std::pair<int, std::string>>>
    - static_cast<size_t>
    - boost::get<string>
    - Logging::Loggable
    - B64Decode
    - static_cast<uint16_t>
    - rpzs::emplace_back
    - at
    - type
    - RPZTrackerParams::zoneXFRParams::primaries::emplace_back
    - RPZTrackerParams::zoneXFRParams::localAddress::toString
    - pdns::fromNameOrIP
    - d_slog::error
    - std::runtime_error
    - parseRPZParameters
    - toLower
    - DNSName
    - auto::toString
    - ComboAddress
    - typeid
    - boost::get<uint32_t>
    - count
    - what
    - boost::get<bool>
    - std::make_shared<DNSFilterEngine::Zone>
    linkageType: ''
    returnType: void
    signature: void rpzPrimary(LuaConfigItems& lci, const boost::variant<string, std::vector<std::pair<int,
      string>>>& primaries_, const string& zoneName, const std::optional<rpzOptions_t>&
      options)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: prepareContext
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:406,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 407
      start: 403
    functionDepth: 0
    functionLinenumber: 403
    functionLinenumberEnd: 407
    functionName: RecLuaConfigContext::RecLuaConfigContext
    functionSourceFile: /src/pdns/pdns/recursordist/rec-lua-conf.cc
    functionUses: 0
    functionsReached:
    - prepareContext
    linkageType: ''
    returnType: void
    signature: void RecLuaConfigContext()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: emplace_back
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:411,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:412,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:413,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:414,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:415,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:416,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 418
      start: 408
    functionDepth: 0
    functionLinenumber: 408
    functionLinenumberEnd: 418
    functionName: RecLuaConfigContext::postPrepareContext
    functionSourceFile: /src/pdns/pdns/recursordist/rec-lua-conf.cc
    functionUses: 0
    functionsReached:
    - emplace_back
    - static_cast<int>
    linkageType: ''
    returnType: void
    signature: void postPrepareContext() override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 421
      start: 419
    functionDepth: 0
    functionLinenumber: 419
    functionLinenumberEnd: 421
    functionName: RecLuaConfigContext::postLoad
    functionSourceFile: /src/pdns/pdns/recursordist/rec-lua-conf.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void postLoad() override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: get
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:424,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 425
      start: 422
    functionDepth: 0
    functionLinenumber: 422
    functionLinenumberEnd: 425
    functionName: '* operator->()'
    functionSourceFile: /src/pdns/pdns/recursordist/rec-lua-conf.cc
    functionUses: 0
    functionsReached:
    - get
    linkageType: ''
    returnType: LuaContext
    signature: LuaContext * operator->()
  - BBCount: 46
    BranchProfiles: []
    Callsites:
    - Dst: LuaConfigItems::LuaConfigItems
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:430,1
    - Dst: withName
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:432,1
    - Dst: RecLuaConfigContext::RecLuaConfigContext
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:435,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:437,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:442,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:442,1
    - Dst: getLocal
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:445,1
    - Dst: RecLuaConfigContext::writeFunction
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:448,1
    - Dst: LuaConfigItems::sortlist::clear
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:448,1
    - Dst: RecLuaConfigContext::writeVariable
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:462,1
    - Dst: RecLuaConfigContext::writeFunction
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:465,1
    - Dst: parseRPZParameters
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:470,1
    - Dst: LuaConfigItems::rpzs::emplace_back
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:472,1
    - Dst: RecLuaConfigContext::writeFunction
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:476,1
    - Dst: rpzPrimary
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:477,1
    - Dst: RecLuaConfigContext::writeFunction
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:483,1
    - Dst: set::count
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:489,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:490,1
    - Dst: type
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:493,1
    - Dst: typeid
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:493,1
    - Dst: RecZoneToCache::Config::d_sources::push_back
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:494,1
    - Dst: boost::get<std::string>
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:494,1
    - Dst: boost::get<std::vector<std::pair<int, std::string>>>
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:497,1
    - Dst: RecZoneToCache::Config::d_sources::push_back
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:498,1
    - Dst: RecZoneToCache::Config::d_sources::size
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:501,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:502,1
    - Dst: count
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:506,1
    - Dst: boost::get<uint32_t>
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:507,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:507,1
    - Dst: count
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:509,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:510,1
    - Dst: toLower
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:510,1
    - Dst: boost::get<string>
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:510,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:510,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:511,1
    - Dst: toLower
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:511,1
    - Dst: boost::get<string>
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:511,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:511,1
    - Dst: B64Decode
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:512,1
    - Dst: boost::get<string>
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:512,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:512,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:513,1
    - Dst: count
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:516,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:517,1
    - Dst: boost::get<uint32_t>
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:517,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:517,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:518,1
    - Dst: count
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:520,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:521,1
    - Dst: boost::get<string>
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:521,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:521,1
    - Dst: count
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:523,1
    - Dst: boost::get<uint32_t>
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:524,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:524,1
    - Dst: count
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:526,1
    - Dst: boost::get<uint32_t>
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:527,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:527,1
    - Dst: count
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:534,1
    - Dst: boost::get<string>
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:535,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:535,1
    - Dst: map::find
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:536,1
    - Dst: map::end
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:537,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:538,1
    - Dst: count
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:542,1
    - Dst: boost::get<string>
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:543,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:543,1
    - Dst: map::find
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:544,1
    - Dst: map::end
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:545,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:546,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:552,1
    - Dst: LuaConfigItems::d_slog::error
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:555,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:555,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:555,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:556,1
    - Dst: RecLuaConfigContext::writeFunction
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:561,1
    - Dst: LuaConfigItems::sortlist::getMaxOrder
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:567,1
    - Dst: boost::get<string>
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:568,1
    - Dst: LuaConfigItems::sortlist::addEntry
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:569,1
    - Dst: Netmask
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:569,1
    - Dst: boost::get<argvec_t>
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:573,1
    - Dst: boost::get<string>
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:575,1
    - Dst: LuaConfigItems::sortlist::addEntry
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:576,1
    - Dst: Netmask
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:576,1
    - Dst: boost::get<vector<pair<int, string>>>
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:579,1
    - Dst: LuaConfigItems::sortlist::addEntry
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:581,1
    - Dst: Netmask
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:581,1
    - Dst: LuaConfigItems::d_slog::error
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:589,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:589,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:589,1
    - Dst: RecLuaConfigContext::writeFunction
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:593,1
    - Dst: std::dynamic_pointer_cast<DSRecordContent>
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:595,1
    - Dst: make
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:595,1
    - Dst: insert
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:596,1
    - Dst: RecLuaConfigContext::writeFunction
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:599,1
    - Dst: LuaConfigItems::dsAnchors::erase
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:601,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:601,1
    - Dst: LuaConfigItems::dsAnchors::clear
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:604,1
    - Dst: RecLuaConfigContext::writeFunction
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:608,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:610,1
    - Dst: static_cast<string>
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:610,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:613,1
    - Dst: RecLuaConfigContext::writeFunction
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:617,1
    - Dst: LuaConfigItems::negAnchors::erase
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:619,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:619,1
    - Dst: LuaConfigItems::negAnchors::clear
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:622,1
    - Dst: RecLuaConfigContext::writeFunction
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:626,1
    - Dst: static_cast<uint32_t>
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:629,1
    - Dst: RecLuaConfigContext::writeFunction
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:635,1
    - Dst: RecLuaConfigContext::writeFunction
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:641,1
    - Dst: type
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:647,1
    - Dst: typeid
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:647,1
    - Dst: boost::get<const std::string>
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:648,1
    - Dst: LuaConfigItems::protobufExportConfig::servers::emplace_back
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:650,1
    - Dst: boost::get<const std::unordered_map<int, std::string>>
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:653,1
    - Dst: LuaConfigItems::protobufExportConfig::servers::emplace_back
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:655,1
    - Dst: parseProtobufOptions
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:659,1
    - Dst: LuaConfigItems::d_slog::error
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:662,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:662,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:662,1
    - Dst: LuaConfigItems::d_slog::error
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:665,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:665,1
    - Dst: LuaConfigItems::d_slog::info
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:669,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:669,1
    - Dst: LuaConfigItems::protobufExportConfig::servers::at
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:669,1
    - Dst: RecLuaConfigContext::writeFunction
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:674,1
    - Dst: type
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:680,1
    - Dst: typeid
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:680,1
    - Dst: boost::get<const std::string>
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:681,1
    - Dst: LuaConfigItems::outgoingProtobufExportConfig::servers::emplace_back
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:683,1
    - Dst: boost::get<const std::unordered_map<int, std::string>>
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:686,1
    - Dst: LuaConfigItems::outgoingProtobufExportConfig::servers::emplace_back
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:688,1
    - Dst: parseProtobufOptions
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:692,1
    - Dst: LuaConfigItems::d_slog::error
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:695,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:695,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:695,1
    - Dst: LuaConfigItems::d_slog::error
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:698,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:698,1
    - Dst: LuaConfigItems::d_slog::info
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:702,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:702,1
    - Dst: LuaConfigItems::outgoingProtobufExportConfig::servers::at
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:702,1
    - Dst: RecLuaConfigContext::writeFunction
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:708,1
    - Dst: type
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:714,1
    - Dst: typeid
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:714,1
    - Dst: boost::get<const std::string>
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:715,1
    - Dst: boost::starts_with
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:716,1
    - Dst: LuaConfigItems::frameStreamExportConfig::servers::emplace_back
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:719,1
    - Dst: boost::get<const std::unordered_map<int, std::string>>
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:722,1
    - Dst: LuaConfigItems::frameStreamExportConfig::servers::emplace_back
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:724,1
    - Dst: parseFrameStreamOptions
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:728,1
    - Dst: LuaConfigItems::d_slog::error
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:731,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:731,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:731,1
    - Dst: LuaConfigItems::d_slog::error
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:734,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:734,1
    - Dst: LuaConfigItems::d_slog::info
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:738,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:738,1
    - Dst: LuaConfigItems::frameStreamExportConfig::servers::at
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:738,1
    - Dst: RecLuaConfigContext::writeFunction
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:742,1
    - Dst: type
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:747,1
    - Dst: typeid
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:747,1
    - Dst: boost::get<const std::string>
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:748,1
    - Dst: boost::starts_with
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:749,1
    - Dst: LuaConfigItems::nodFrameStreamExportConfig::servers::emplace_back
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:752,1
    - Dst: boost::get<const std::unordered_map<int, std::string>>
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:755,1
    - Dst: LuaConfigItems::nodFrameStreamExportConfig::servers::emplace_back
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:757,1
    - Dst: parseFrameStreamOptions
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:761,1
    - Dst: LuaConfigItems::d_slog::error
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:764,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:764,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:764,1
    - Dst: LuaConfigItems::d_slog::error
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:767,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:767,1
    - Dst: LuaConfigItems::d_slog::info
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:771,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:771,1
    - Dst: LuaConfigItems::nodFrameStreamExportConfig::servers::at
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:771,1
    - Dst: RecLuaConfigContext::writeFunction
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:777,1
    - Dst: LuaConfigItems::d_slog::info
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:786,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:786,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:786,1
    - Dst: std::set::emplace
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:792,1
    - Dst: find
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:798,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:798,1
    - Dst: static_cast<AdditionalMode>
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:799,1
    - Dst: LuaConfigItems::d_slog::info
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:801,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:801,1
    - Dst: LuaConfigItems::allowAdditionalQTypes::insert_or_assign
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:805,1
    - Dst: pair
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:805,1
    - Dst: RecLuaConfigContext::writeFunction
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:809,1
    - Dst: std::make_optional
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:815,1
    - Dst: std::optional::add
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:817,1
    - Dst: insert_or_assign
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:820,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:820,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:820,1
    - Dst: LuaConfigItems::d_slog::error
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:823,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:823,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:823,1
    - Dst: LuaConfigItems::d_slog::error
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:826,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:826,1
    - Dst: RecLuaConfigContext::executeCode
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:831,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:832,1
    - Dst: LuaConfigItems::d_slog::error
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:835,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:835,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:835,1
    - Dst: std::rethrow_if_nested
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:837,1
    - Dst: LuaConfigItems::d_slog::error
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:841,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:841,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:841,1
    - Dst: LuaConfigItems::d_slog::error
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:845,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:845,1
    - Dst: LuaConfigItems::d_slog::error
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:850,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:850,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:850,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-lua-conf.cc:850,1
    CyclomaticComplexity: 67
    EdgeCount: 67
    ICount: 277
    argCount: 3
    argNames:
    - ' fname'
    - ' proxyMapping'
    - ' newLuaConfig'
    argTypes:
    - std::string
    - ProxyMapping
    - LuaConfigItems
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 853
      start: 428
    functionDepth: 4
    functionLinenumber: 428
    functionLinenumberEnd: 853
    functionName: loadRecursorLuaConfig
    functionSourceFile: /src/pdns/pdns/recursordist/rec-lua-conf.cc
    functionUses: 1
    functionsReached:
    - LuaConfigItems::sortlist::getMaxOrder
    - static_cast<AdditionalMode>
    - LuaConfigItems::outgoingProtobufExportConfig::servers::emplace_back
    - withName
    - PDNSException
    - stringerror
    - LuaConfigItems::dsAnchors::erase
    - boost::get<std::string>
    - static_cast<uint32_t>
    - boost::get<std::vector<std::pair<int, std::string>>>
    - LuaConfigItems::negAnchors::clear
    - insert
    - RecZoneToCache::Config::d_sources::push_back
    - LuaConfigItems::protobufExportConfig::servers::at
    - find
    - RecLuaConfigContext::executeCode
    - static_cast<size_t>
    - std::dynamic_pointer_cast<DSRecordContent>
    - boost::get<string>
    - map::end
    - Logging::Loggable
    - boost::get<argvec_t>
    - boost::get<vector<pair<int, string>>>
    - boost::starts_with
    - QType
    - B64Decode
    - std::optional::add
    - getLocal
    - LuaConfigItems::outgoingProtobufExportConfig::servers::at
    - LuaConfigItems::nodFrameStreamExportConfig::servers::emplace_back
    - empty
    - LuaConfigItems::rpzs::emplace_back
    - at
    - parseFrameStreamOptions
    - type
    - LuaConfigItems::allowAdditionalQTypes::insert_or_assign
    - std::rethrow_if_nested
    - Netmask
    - std::runtime_error
    - parseRPZParameters
    - LuaConfigItems::sortlist::clear
    - toLower
    - LuaConfigItems::nodFrameStreamExportConfig::servers::at
    - DNSName
    - LuaConfigItems::d_slog::error
    - boost::get<const std::string>
    - LuaConfigItems::protobufExportConfig::servers::emplace_back
    - RecLuaConfigContext::writeVariable
    - make
    - LuaConfigItems::frameStreamExportConfig::servers::emplace_back
    - LuaConfigItems::dsAnchors::clear
    - std::make_optional
    - RecLuaConfigContext::writeFunction
    - static_cast<string>
    - ComboAddress
    - pair
    - map::find
    - std::move
    - insert_or_assign
    - parseProtobufOptions
    - typeid
    - boost::get<uint32_t>
    - LuaConfigItems::LuaConfigItems
    - count
    - what
    - LuaConfigItems::frameStreamExportConfig::servers::at
    - rpzPrimary
    - std::set::emplace
    - end
    - boost::get<const std::unordered_map<int, std::string>>
    - LuaConfigItems::d_slog::info
    - set::count
    - LuaConfigItems::sortlist::addEntry
    - LuaConfigItems::negAnchors::erase
    - RecZoneToCache::Config::d_sources::size
    - RecLuaConfigContext::RecLuaConfigContext
    linkageType: ''
    returnType: void
    signature: void loadRecursorLuaConfig(const std::string& fname, ProxyMapping&
      proxyMapping, LuaConfigItems& newLuaConfig)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: at
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:64,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:67,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 4
    argNames:
    - mode
    - type
    - file
    - line
    argTypes:
    - int
    - int
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 61
    functionDepth: 0
    functionLinenumber: 61
    functionLinenumberEnd: 69
    functionName: openssl_pthreads_locking_callback
    functionSourceFile: /src/pdns/pdns/recursordist/opensslsigners.cc
    functionUses: 0
    functionsReached:
    - at
    linkageType: ''
    returnType: void
    signature: void openssl_pthreads_locking_callback(int mode, int type, const char*
      file, int line)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pthread_self
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:73,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 71
    functionDepth: 0
    functionLinenumber: 71
    functionLinenumberEnd: 74
    functionName: openssl_pthreads_id_callback
    functionSourceFile: /src/pdns/pdns/recursordist/opensslsigners.cc
    functionUses: 0
    functionsReached:
    - pthread_self
    linkageType: ''
    returnType: unsigned long
    signature: unsigned long openssl_pthreads_id_callback(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::vector<std::mutex>
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:79,1
    - Dst: CRYPTO_num_locks
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:79,1
    - Dst: CRYPTO_set_id_callback
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:80,1
    - Dst: CRYPTO_set_locking_callback
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:81,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 77
    functionDepth: 0
    functionLinenumber: 77
    functionLinenumberEnd: 82
    functionName: openssl_thread_setup
    functionSourceFile: /src/pdns/pdns/recursordist/opensslsigners.cc
    functionUses: 4
    functionsReached:
    - CRYPTO_set_locking_callback
    - std::vector<std::mutex>
    - CRYPTO_set_id_callback
    - CRYPTO_num_locks
    linkageType: ''
    returnType: void
    signature: void openssl_thread_setup()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CRYPTO_set_locking_callback
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:86,1
    - Dst: clear
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:87,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 84
    functionDepth: 1
    functionLinenumber: 84
    functionLinenumberEnd: 88
    functionName: openssl_thread_cleanup
    functionSourceFile: /src/pdns/pdns/recursordist/opensslsigners.cc
    functionUses: 2
    functionsReached:
    - clear
    - CRYPTO_set_locking_callback
    linkageType: ''
    returnType: void
    signature: void openssl_thread_cleanup()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 4
    argNames:
    - rsakey
    - n
    - e
    - d
    argTypes:
    - RSA*
    - BIGNUM**
    - BIGNUM**
    - BIGNUM**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 93
    functionDepth: 0
    functionLinenumber: 93
    functionLinenumberEnd: 98
    functionName: RSA_get0_key
    functionSourceFile: /src/pdns/pdns/recursordist/opensslsigners.cc
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void RSA_get0_key(const RSA* rsakey, const BIGNUM** n, const BIGNUM**
      e, const BIGNUM** d)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: BN_clear_free
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:103,1
    - Dst: BN_clear_free
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:107,1
    - Dst: BN_clear_free
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:111,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 4
    argNames:
    - rsakey
    - n
    - e
    - d
    argTypes:
    - RSA*
    - BIGNUM*
    - BIGNUM*
    - BIGNUM*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 115
      start: 100
    functionDepth: 0
    functionLinenumber: 100
    functionLinenumberEnd: 115
    functionName: RSA_set0_key
    functionSourceFile: /src/pdns/pdns/recursordist/opensslsigners.cc
    functionUses: 2
    functionsReached:
    - BN_clear_free
    linkageType: ''
    returnType: int
    signature: int RSA_set0_key(RSA* rsakey, BIGNUM* n, BIGNUM* e, BIGNUM* d)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - rsakey
    - p
    - q
    argTypes:
    - RSA*
    - BIGNUM**
    - BIGNUM**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 117
    functionDepth: 0
    functionLinenumber: 117
    functionLinenumberEnd: 121
    functionName: RSA_get0_factors
    functionSourceFile: /src/pdns/pdns/recursordist/opensslsigners.cc
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void RSA_get0_factors(const RSA* rsakey, const BIGNUM** p, const BIGNUM**
      q)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BN_clear_free
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:125,1
    - Dst: BN_clear_free
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:127,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 3
    argNames:
    - rsakey
    - p
    - q
    argTypes:
    - RSA*
    - BIGNUM*
    - BIGNUM*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 130
      start: 123
    functionDepth: 0
    functionLinenumber: 123
    functionLinenumberEnd: 130
    functionName: RSA_set0_factors
    functionSourceFile: /src/pdns/pdns/recursordist/opensslsigners.cc
    functionUses: 1
    functionsReached:
    - BN_clear_free
    linkageType: ''
    returnType: int
    signature: int RSA_set0_factors(RSA* rsakey, BIGNUM* p, BIGNUM* q)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 4
    argNames:
    - rsakey
    - dmp1
    - dmq1
    - iqmp
    argTypes:
    - RSA*
    - BIGNUM**
    - BIGNUM**
    - BIGNUM**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 137
      start: 132
    functionDepth: 0
    functionLinenumber: 132
    functionLinenumberEnd: 137
    functionName: RSA_get0_crt_params
    functionSourceFile: /src/pdns/pdns/recursordist/opensslsigners.cc
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void RSA_get0_crt_params(const RSA* rsakey, const BIGNUM** dmp1, const
      BIGNUM** dmq1, const BIGNUM** iqmp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BN_clear_free
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:141,1
    - Dst: BN_clear_free
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:143,1
    - Dst: BN_clear_free
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:145,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 4
    argNames:
    - rsakey
    - dmp1
    - dmq1
    - iqmp
    argTypes:
    - RSA*
    - BIGNUM*
    - BIGNUM*
    - BIGNUM*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 148
      start: 139
    functionDepth: 0
    functionLinenumber: 139
    functionLinenumberEnd: 148
    functionName: RSA_set0_crt_params
    functionSourceFile: /src/pdns/pdns/recursordist/opensslsigners.cc
    functionUses: 1
    functionsReached:
    - BN_clear_free
    linkageType: ''
    returnType: int
    signature: int RSA_set0_crt_params(RSA* rsakey, BIGNUM* dmp1, BIGNUM* dmq1, BIGNUM*
      iqmp)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - signature
    - pr
    - ps
    argTypes:
    - ECDSA_SIG*
    - BIGNUM**
    - BIGNUM**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 151
    functionDepth: 0
    functionLinenumber: 151
    functionLinenumberEnd: 155
    functionName: ECDSA_SIG_get0
    functionSourceFile: /src/pdns/pdns/recursordist/opensslsigners.cc
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ECDSA_SIG_get0(const ECDSA_SIG* signature, const BIGNUM** pr,
      const BIGNUM** ps)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BN_clear_free
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:159,1
    - Dst: BN_clear_free
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:160,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 3
    argNames:
    - signature
    - pr
    - ps
    argTypes:
    - ECDSA_SIG*
    - BIGNUM*
    - BIGNUM*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 164
      start: 157
    functionDepth: 0
    functionLinenumber: 157
    functionLinenumberEnd: 164
    functionName: ECDSA_SIG_set0
    functionSourceFile: /src/pdns/pdns/recursordist/opensslsigners.cc
    functionUses: 1
    functionsReached:
    - BN_clear_free
    linkageType: ''
    returnType: int
    signature: int ECDSA_SIG_set0(ECDSA_SIG* signature, BIGNUM* pr, BIGNUM* ps)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 170
      start: 170
    functionDepth: 0
    functionLinenumber: 170
    functionLinenumberEnd: 170
    functionName: openssl_thread_setup
    functionSourceFile: /src/pdns/pdns/recursordist/opensslsigners.cc
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void openssl_thread_setup()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 171
      start: 171
    functionDepth: 0
    functionLinenumber: 171
    functionLinenumberEnd: 171
    functionName: openssl_thread_cleanup
    functionSourceFile: /src/pdns/pdns/recursordist/opensslsigners.cc
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void openssl_thread_cleanup()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::string::reserve
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:178,1
    - Dst: dns_random_uint32
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:182,1
    - Dst: std::string::append
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:183,1
    - Dst: RAND_seed
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:186,1
    - Dst: std::string::c_str
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:186,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 187
      start: 175
    functionDepth: 0
    functionLinenumber: 175
    functionLinenumberEnd: 187
    functionName: openssl_seed
    functionSourceFile: /src/pdns/pdns/recursordist/opensslsigners.cc
    functionUses: 3
    functionsReached:
    - dns_random_uint32
    - std::string::append
    - std::string::reserve
    - std::string::c_str
    - RAND_seed
    linkageType: ''
    returnType: void
    signature: void openssl_seed()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: at
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:193,1
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:196,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:196,1
    - Dst: BN_bin2bn
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:197,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:197,1
    - Dst: length
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:197,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:199,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 3
    argNames:
    - ' componentName'
    - ' stormap'
    - ' key'
    argTypes:
    - std::string
    - std::map<std::string, std::string>
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 203
      start: 191
    functionDepth: 0
    functionLinenumber: 191
    functionLinenumberEnd: 203
    functionName: mapToBN
    functionSourceFile: /src/pdns/pdns/recursordist/opensslsigners.cc
    functionUses: 2
    functionsReached:
    - length
    - BN_bin2bn
    - reinterpret_cast<const unsigned char*>
    - c_str
    - at
    - Logging::Logger::error
    - static_cast<int>
    linkageType: ''
    returnType: auto
    signature: auto mapToBN(const std::string& componentName, const std::map<std::string,
      std::string>& stormap, const std::string& key) -> BigNum
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 210
      start: 210
    functionDepth: 0
    functionLinenumber: 210
    functionLinenumberEnd: 210
    functionName: OpenSSLRSADNSCryptoKeyEngine::getName
    functionSourceFile: /src/pdns/pdns/recursordist/opensslsigners.cc
    functionUses: 20
    functionsReached: []
    linkageType: ''
    returnType: string
    signature: string getName() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: make_unique<OpenSSLRSADNSCryptoKeyEngine>
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:255,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - slog
    - algorithm
    argTypes:
    - Logr::log_t
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 256
      start: 253
    functionDepth: 0
    functionLinenumber: 253
    functionLinenumberEnd: 256
    functionName: OpenSSLRSADNSCryptoKeyEngine::maker
    functionSourceFile: /src/pdns/pdns/recursordist/opensslsigners.cc
    functionUses: 0
    functionsReached:
    - make_unique<OpenSSLRSADNSCryptoKeyEngine>
    linkageType: ''
    returnType: std::unique_ptr<DNSCryptoKeyEngine>
    signature: std::unique_ptr<DNSCryptoKeyEngine> maker(Logr::log_t slog, unsigned
      int algorithm)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Key
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:295,1
    - Dst: Key
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:297,1
    - Dst: RAND_status
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:300,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:302,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:302,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 2
    argNames:
    - slog
    - algo
    argTypes:
    - Logr::log_t
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 304
      start: 292
    functionDepth: 0
    functionLinenumber: 292
    functionLinenumberEnd: 304
    functionName: OpenSSLRSADNSCryptoKeyEngine::OpenSSLRSADNSCryptoKeyEngine
    functionSourceFile: /src/pdns/pdns/recursordist/opensslsigners.cc
    functionUses: 0
    functionsReached:
    - OpenSSLRSADNSCryptoKeyEngine::getName
    - RAND_status
    - runtime_error
    - Key
    linkageType: ''
    returnType: void
    signature: void OpenSSLRSADNSCryptoKeyEngine::OpenSSLRSADNSCryptoKeyEngine(Logr::log_t
      slog, unsigned int algo)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EVP_PKEY_get_bits
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:309,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:309,1
    - Dst: RSA_size
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:311,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:311,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 313
      start: 306
    functionDepth: 0
    functionLinenumber: 306
    functionLinenumberEnd: 313
    functionName: OpenSSLRSADNSCryptoKeyEngine::getBits
    functionSourceFile: /src/pdns/pdns/recursordist/opensslsigners.cc
    functionUses: 0
    functionsReached:
    - RSA_size
    - EVP_PKEY_get_bits
    - get
    linkageType: ''
    returnType: int
    signature: int OpenSSLRSADNSCryptoKeyEngine::getBits() const
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: runtime_error
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:320,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:320,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:320,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:324,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:324,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:324,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:328,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:328,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:328,1
    - Dst: BigNum
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:331,1
    - Dst: BN_new
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:331,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:333,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:333,1
    - Dst: BN_set_word
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:337,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:337,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:340,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:340,1
    - Dst: KeyContext
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:344,1
    - Dst: EVP_PKEY_CTX_new_from_name
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:344,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:346,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:346,1
    - Dst: EVP_PKEY_keygen_init
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:349,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:349,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:350,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:350,1
    - Dst: EVP_PKEY_CTX_set_rsa_keygen_bits
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:353,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:353,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:354,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:354,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:354,1
    - Dst: EVP_PKEY_CTX_set1_rsa_keygen_pubexp
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:357,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:357,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:357,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:358,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:358,1
    - Dst: EVP_PKEY_generate
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:362,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:362,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:363,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:363,1
    - Dst: reset
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:366,1
    - Dst: Key
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:368,1
    - Dst: RSA_new
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:368,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:370,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:370,1
    - Dst: RSA_generate_key_ex
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:373,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:373,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:373,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:375,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:375,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:378,1
    CyclomaticComplexity: 31
    EdgeCount: 31
    ICount: 40
    argCount: 1
    argNames:
    - bits
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 380
      start: 315
    functionDepth: 0
    functionLinenumber: 315
    functionLinenumberEnd: 380
    functionName: OpenSSLRSADNSCryptoKeyEngine::create
    functionSourceFile: /src/pdns/pdns/recursordist/opensslsigners.cc
    functionUses: 0
    functionsReached:
    - EVP_PKEY_generate
    - std::to_string
    - runtime_error
    - BN_new
    - reset
    - OpenSSLRSADNSCryptoKeyEngine::getName
    - EVP_PKEY_CTX_set1_rsa_keygen_pubexp
    - RSA_new
    - RSA_generate_key_ex
    - auto::get
    - BigNum
    - Key
    - EVP_PKEY_CTX_new_from_name
    - std::move
    - BN_set_word
    - EVP_PKEY_keygen_init
    - EVP_PKEY_CTX_set_rsa_keygen_bits
    - KeyContext
    - Logging::Logger::error
    linkageType: ''
    returnType: void
    signature: void OpenSSLRSADNSCryptoKeyEngine::create(unsigned int bits)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: PEM_read_PrivateKey
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:388,1
    - Dst: std::optional<std::reference_wrapper<const std::string>>::has_value
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:389,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:390,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:390,1
    - Dst: std::optional<std::reference_wrapper<const std::string>>::get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:390,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:393,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:393,1
    - Dst: reset
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:396,1
    - Dst: Key
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:398,1
    - Dst: PEM_read_RSAPrivateKey
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:398,1
    - Dst: std::optional<std::reference_wrapper<const std::string>>::has_value
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:400,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:401,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:401,1
    - Dst: std::optional<std::reference_wrapper<const std::string>>::get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:401,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:404,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:404,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 16
    argCount: 3
    argNames:
    - ' drc'
    - ' inputFile'
    - filename
    argTypes:
    - DNSKEYRecordContent
    - std::FILE
    - std::optional<std::reference_wrapper<const std::string>>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 407
      start: 382
    functionDepth: 0
    functionLinenumber: 382
    functionLinenumberEnd: 407
    functionName: OpenSSLRSADNSCryptoKeyEngine::createFromPEMFile
    functionSourceFile: /src/pdns/pdns/recursordist/opensslsigners.cc
    functionUses: 0
    functionsReached:
    - reset
    - runtime_error
    - PEM_read_PrivateKey
    - OpenSSLRSADNSCryptoKeyEngine::getName
    - std::optional<std::reference_wrapper<const std::string>>::has_value
    - std::optional<std::reference_wrapper<const std::string>>::get
    - Key
    - Logging::Logger::error
    - PEM_read_RSAPrivateKey
    linkageType: ''
    returnType: void
    signature: void OpenSSLRSADNSCryptoKeyEngine::createFromPEMFile(DNSKEYRecordContent&
      drc, std::FILE& inputFile, const std::optional<std::reference_wrapper<const
      std::string>> filename)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PEM_write_PrivateKey
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:412,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:412,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:413,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:413,1
    - Dst: PEM_write_RSAPrivateKey
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:416,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:416,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:418,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:418,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 7
    argCount: 1
    argNames:
    - ' outputFile'
    argTypes:
    - std::FILE
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 421
      start: 409
    functionDepth: 0
    functionLinenumber: 409
    functionLinenumberEnd: 421
    functionName: OpenSSLRSADNSCryptoKeyEngine::convertToPEMFile
    functionSourceFile: /src/pdns/pdns/recursordist/opensslsigners.cc
    functionUses: 0
    functionsReached:
    - runtime_error
    - get
    - OpenSSLRSADNSCryptoKeyEngine::getName
    - PEM_write_RSAPrivateKey
    - PEM_write_PrivateKey
    - Logging::Logger::error
    linkageType: ''
    returnType: void
    signature: void OpenSSLRSADNSCryptoKeyEngine::convertToPEMFile(std::FILE& outputFile)
      const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: EVP_PKEY_get_bn_param
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:427,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:427,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:428,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:428,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 431
      start: 424
    functionDepth: 0
    functionLinenumber: 424
    functionLinenumberEnd: 431
    functionName: OpenSSLRSADNSCryptoKeyEngine::getKeyParamModulus
    functionSourceFile: /src/pdns/pdns/recursordist/opensslsigners.cc
    functionUses: 2
    functionsReached:
    - OpenSSLRSADNSCryptoKeyEngine::getName
    - EVP_PKEY_get_bn_param
    - Logging::Logger::error
    - get
    linkageType: ''
    returnType: BigNum
    signature: BigNum OpenSSLRSADNSCryptoKeyEngine::getKeyParamModulus() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: EVP_PKEY_get_bn_param
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:436,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:436,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:437,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:437,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 440
      start: 433
    functionDepth: 0
    functionLinenumber: 433
    functionLinenumberEnd: 440
    functionName: OpenSSLRSADNSCryptoKeyEngine::getKeyParamPublicExponent
    functionSourceFile: /src/pdns/pdns/recursordist/opensslsigners.cc
    functionUses: 2
    functionsReached:
    - OpenSSLRSADNSCryptoKeyEngine::getName
    - EVP_PKEY_get_bn_param
    - Logging::Logger::error
    - get
    linkageType: ''
    returnType: BigNum
    signature: BigNum OpenSSLRSADNSCryptoKeyEngine::getKeyParamPublicExponent() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: EVP_PKEY_get_bn_param
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:445,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:445,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:446,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:446,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 449
      start: 442
    functionDepth: 0
    functionLinenumber: 442
    functionLinenumberEnd: 449
    functionName: OpenSSLRSADNSCryptoKeyEngine::getKeyParamPrivateExponent
    functionSourceFile: /src/pdns/pdns/recursordist/opensslsigners.cc
    functionUses: 1
    functionsReached:
    - OpenSSLRSADNSCryptoKeyEngine::getName
    - EVP_PKEY_get_bn_param
    - Logging::Logger::error
    - get
    linkageType: ''
    returnType: BigNum
    signature: BigNum OpenSSLRSADNSCryptoKeyEngine::getKeyParamPrivateExponent() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: EVP_PKEY_get_bn_param
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:454,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:454,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:455,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:455,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 458
      start: 451
    functionDepth: 0
    functionLinenumber: 451
    functionLinenumberEnd: 458
    functionName: OpenSSLRSADNSCryptoKeyEngine::getKeyParamPrime1
    functionSourceFile: /src/pdns/pdns/recursordist/opensslsigners.cc
    functionUses: 1
    functionsReached:
    - OpenSSLRSADNSCryptoKeyEngine::getName
    - EVP_PKEY_get_bn_param
    - Logging::Logger::error
    - get
    linkageType: ''
    returnType: BigNum
    signature: BigNum OpenSSLRSADNSCryptoKeyEngine::getKeyParamPrime1() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: EVP_PKEY_get_bn_param
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:463,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:463,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:464,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:464,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 467
      start: 460
    functionDepth: 0
    functionLinenumber: 460
    functionLinenumberEnd: 467
    functionName: OpenSSLRSADNSCryptoKeyEngine::getKeyParamPrime2
    functionSourceFile: /src/pdns/pdns/recursordist/opensslsigners.cc
    functionUses: 1
    functionsReached:
    - OpenSSLRSADNSCryptoKeyEngine::getName
    - EVP_PKEY_get_bn_param
    - Logging::Logger::error
    - get
    linkageType: ''
    returnType: BigNum
    signature: BigNum OpenSSLRSADNSCryptoKeyEngine::getKeyParamPrime2() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: EVP_PKEY_get_bn_param
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:472,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:472,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:473,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:473,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 476
      start: 469
    functionDepth: 0
    functionLinenumber: 469
    functionLinenumberEnd: 476
    functionName: OpenSSLRSADNSCryptoKeyEngine::getKeyParamDmp1
    functionSourceFile: /src/pdns/pdns/recursordist/opensslsigners.cc
    functionUses: 1
    functionsReached:
    - OpenSSLRSADNSCryptoKeyEngine::getName
    - EVP_PKEY_get_bn_param
    - Logging::Logger::error
    - get
    linkageType: ''
    returnType: BigNum
    signature: BigNum OpenSSLRSADNSCryptoKeyEngine::getKeyParamDmp1() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: EVP_PKEY_get_bn_param
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:481,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:481,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:482,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:482,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 485
      start: 478
    functionDepth: 0
    functionLinenumber: 478
    functionLinenumberEnd: 485
    functionName: OpenSSLRSADNSCryptoKeyEngine::getKeyParamDmq1
    functionSourceFile: /src/pdns/pdns/recursordist/opensslsigners.cc
    functionUses: 1
    functionsReached:
    - OpenSSLRSADNSCryptoKeyEngine::getName
    - EVP_PKEY_get_bn_param
    - Logging::Logger::error
    - get
    linkageType: ''
    returnType: BigNum
    signature: BigNum OpenSSLRSADNSCryptoKeyEngine::getKeyParamDmq1() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: EVP_PKEY_get_bn_param
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:490,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:490,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:491,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:491,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 494
      start: 487
    functionDepth: 0
    functionLinenumber: 487
    functionLinenumberEnd: 494
    functionName: OpenSSLRSADNSCryptoKeyEngine::getKeyParamIqmp
    functionSourceFile: /src/pdns/pdns/recursordist/opensslsigners.cc
    functionUses: 1
    functionsReached:
    - OpenSSLRSADNSCryptoKeyEngine::getName
    - EVP_PKEY_get_bn_param
    - Logging::Logger::error
    - get
    linkageType: ''
    returnType: BigNum
    signature: BigNum OpenSSLRSADNSCryptoKeyEngine::getKeyParamIqmp() const
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: ParamsBuilder
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:500,1
    - Dst: OSSL_PARAM_BLD_new
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:500,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:502,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:502,1
    - Dst: OSSL_PARAM_BLD_push_BN
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:505,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:505,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:506,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:506,1
    - Dst: OSSL_PARAM_BLD_push_BN
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:509,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:509,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:510,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:510,1
    - Dst: OSSL_PARAM_BLD_push_BN
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:513,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:513,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:514,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:514,1
    - Dst: OSSL_PARAM_BLD_push_BN
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:517,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:517,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:518,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:518,1
    - Dst: OSSL_PARAM_BLD_push_BN
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:521,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:521,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:522,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:522,1
    - Dst: OSSL_PARAM_BLD_push_BN
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:525,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:525,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:526,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:526,1
    - Dst: OSSL_PARAM_BLD_push_BN
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:529,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:529,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:530,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:530,1
    - Dst: OSSL_PARAM_BLD_push_BN
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:533,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:533,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:534,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:534,1
    - Dst: Params
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:537,1
    - Dst: OSSL_PARAM_BLD_to_param
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:537,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:537,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:539,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:539,1
    CyclomaticComplexity: 28
    EdgeCount: 28
    ICount: 32
    argCount: 8
    argNames:
    - modulus
    - publicExponent
    - privateExponent
    - prime1
    - prime2
    - dmp1
    - dmq1
    - iqmp
    argTypes:
    - BIGNUM*
    - BIGNUM*
    - BIGNUM*
    - BIGNUM*
    - BIGNUM*
    - BIGNUM*
    - BIGNUM*
    - BIGNUM*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 543
      start: 498
    functionDepth: 0
    functionLinenumber: 498
    functionLinenumberEnd: 543
    functionName: OpenSSLRSADNSCryptoKeyEngine::makeKeyParams
    functionSourceFile: /src/pdns/pdns/recursordist/opensslsigners.cc
    functionUses: 2
    functionsReached:
    - OSSL_PARAM_BLD_new
    - auto::get
    - OSSL_PARAM_BLD_to_param
    - Params
    - OpenSSLRSADNSCryptoKeyEngine::getName
    - OSSL_PARAM_BLD_push_BN
    - ParamsBuilder
    - Logging::Logger::error
    linkageType: ''
    returnType: auto
    signature: auto OpenSSLRSADNSCryptoKeyEngine::makeKeyParams(const BIGNUM* modulus,
      const BIGNUM* publicExponent, const BIGNUM* privateExponent, const BIGNUM* prime1,
      const BIGNUM* prime2, const BIGNUM* dmp1, const BIGNUM* dmq1, const BIGNUM*
      iqmp) const -> Params
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: OpenSSLRSADNSCryptoKeyEngine::getKeyParamModulus
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:554,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::getKeyParamPublicExponent
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:555,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::getKeyParamPrivateExponent
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:556,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::getKeyParamPrime1
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:557,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::getKeyParamPrime2
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:558,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::getKeyParamDmp1
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:559,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::getKeyParamDmq1
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:560,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::getKeyParamIqmp
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:561,1
    - Dst: BigNum::get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:564,1
    - Dst: BigNum::get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:565,1
    - Dst: BigNum::get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:566,1
    - Dst: BigNum::get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:567,1
    - Dst: BigNum::get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:568,1
    - Dst: BigNum::get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:569,1
    - Dst: BigNum::get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:570,1
    - Dst: BigNum::get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:571,1
    - Dst: RSA_get0_key
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:581,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:581,1
    - Dst: RSA_get0_factors
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:582,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:582,1
    - Dst: RSA_get0_crt_params
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:583,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:583,1
    - Dst: outputs_t::emplace_back
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:586,1
    - Dst: outputs_t::emplace_back
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:587,1
    - Dst: outputs_t::emplace_back
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:588,1
    - Dst: outputs_t::emplace_back
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:589,1
    - Dst: outputs_t::emplace_back
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:590,1
    - Dst: outputs_t::emplace_back
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:591,1
    - Dst: outputs_t::emplace_back
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:592,1
    - Dst: outputs_t::emplace_back
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:593,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:595,1
    - Dst: storvector_t::emplace_back
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:610,1
    - Dst: std::string::resize
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:614,1
    - Dst: BN_num_bytes
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:614,1
    - Dst: BN_bn2bin
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:616,1
    - Dst: reinterpret_cast<unsigned char*>
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:616,1
    - Dst: std::string::data
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:616,1
    - Dst: std::string::resize
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:618,1
    - Dst: storvector_t::emplace_back
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:619,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 34
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 624
      start: 546
    functionDepth: 1
    functionLinenumber: 546
    functionLinenumberEnd: 624
    functionName: OpenSSLRSADNSCryptoKeyEngine::convertToISCVector
    functionSourceFile: /src/pdns/pdns/recursordist/opensslsigners.cc
    functionUses: 0
    functionsReached:
    - std::to_string
    - OpenSSLRSADNSCryptoKeyEngine::getKeyParamPrivateExponent
    - OpenSSLRSADNSCryptoKeyEngine::getKeyParamPublicExponent
    - BN_bn2bin
    - OpenSSLRSADNSCryptoKeyEngine::getKeyParamModulus
    - storvector_t::emplace_back
    - OpenSSLRSADNSCryptoKeyEngine::getKeyParamDmp1
    - reinterpret_cast<unsigned char*>
    - RSA_get0_factors
    - RSA_get0_key
    - outputs_t::emplace_back
    - OpenSSLRSADNSCryptoKeyEngine::getKeyParamDmq1
    - std::string::data
    - get
    - std::string::resize
    - OpenSSLRSADNSCryptoKeyEngine::getKeyParamPrime1
    - OpenSSLRSADNSCryptoKeyEngine::getKeyParamIqmp
    - OpenSSLRSADNSCryptoKeyEngine::getKeyParamPrime2
    - RSA_get0_crt_params
    - BN_num_bytes
    - BigNum::get
    linkageType: ''
    returnType: DNSCryptoKeyEngine::storvector_t
    signature: DNSCryptoKeyEngine::storvector_t OpenSSLRSADNSCryptoKeyEngine::convertToISCVector()
      const
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: runtime_error
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:637,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:637,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:637,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 639
      start: 626
    functionDepth: 0
    functionLinenumber: 626
    functionLinenumberEnd: 639
    functionName: OpenSSLRSADNSCryptoKeyEngine::hashSize
    functionSourceFile: /src/pdns/pdns/recursordist/opensslsigners.cc
    functionUses: 1
    functionsReached:
    - OpenSSLRSADNSCryptoKeyEngine::getName
    - runtime_error
    - std::to_string
    linkageType: ''
    returnType: std::size_t
    signature: std::size_t OpenSSLRSADNSCryptoKeyEngine::hashSize() const
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: EVP_sha1
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:648,1
    - Dst: EVP_sha256
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:651,1
    - Dst: EVP_sha512
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:654,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:657,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:657,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:657,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:661,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:661,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::hashSize
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:661,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 19
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 665
      start: 641
    functionDepth: 0
    functionLinenumber: 641
    functionLinenumberEnd: 665
    functionName: OpenSSLRSADNSCryptoKeyEngine::hasher
    functionSourceFile: /src/pdns/pdns/recursordist/opensslsigners.cc
    functionUses: 2
    functionsReached:
    - OpenSSLRSADNSCryptoKeyEngine::hashSize
    - std::to_string
    - std::runtime_error
    - runtime_error
    - EVP_sha256
    - OpenSSLRSADNSCryptoKeyEngine::getName
    - EVP_sha512
    - EVP_sha1
    linkageType: ''
    returnType: EVP_MD
    signature: EVP_MD * OpenSSLRSADNSCryptoKeyEngine::hasher() const
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: std::string::resize
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:671,1
    - Dst: SHA1
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:673,1
    - Dst: reinterpret_cast<unsigned char*>
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:673,1
    - Dst: const_cast<char*>
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:673,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:673,1
    - Dst: length
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:673,1
    - Dst: reinterpret_cast<unsigned char*>
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:673,1
    - Dst: std::string::data
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:673,1
    - Dst: std::string::resize
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:679,1
    - Dst: SHA256
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:681,1
    - Dst: reinterpret_cast<unsigned char*>
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:681,1
    - Dst: const_cast<char*>
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:681,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:681,1
    - Dst: length
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:681,1
    - Dst: reinterpret_cast<unsigned char*>
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:681,1
    - Dst: std::string::data
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:681,1
    - Dst: std::string::resize
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:687,1
    - Dst: SHA512
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:689,1
    - Dst: reinterpret_cast<unsigned char*>
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:689,1
    - Dst: const_cast<char*>
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:689,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:689,1
    - Dst: length
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:689,1
    - Dst: reinterpret_cast<unsigned char*>
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:689,1
    - Dst: std::string::data
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:689,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:693,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:693,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:693,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 1
    argNames:
    - ' message'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 694
      start: 667
    functionDepth: 1
    functionLinenumber: 667
    functionLinenumberEnd: 694
    functionName: OpenSSLRSADNSCryptoKeyEngine::hash
    functionSourceFile: /src/pdns/pdns/recursordist/opensslsigners.cc
    functionUses: 2
    functionsReached:
    - length
    - SHA512
    - const_cast<char*>
    - std::to_string
    - c_str
    - runtime_error
    - std::string::data
    - reinterpret_cast<unsigned char*>
    - OpenSSLRSADNSCryptoKeyEngine::getName
    - std::string::resize
    - SHA256
    - SHA1
    linkageType: ''
    returnType: std::string
    signature: std::string OpenSSLRSADNSCryptoKeyEngine::hash(const std::string& message)
      const
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: runtime_error
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:708,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:708,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 1
    argNames:
    - hashSize
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 710
      start: 696
    functionDepth: 0
    functionLinenumber: 696
    functionLinenumberEnd: 710
    functionName: OpenSSLRSADNSCryptoKeyEngine::hashSizeToKind
    functionSourceFile: /src/pdns/pdns/recursordist/opensslsigners.cc
    functionUses: 2
    functionsReached:
    - runtime_error
    - std::to_string
    linkageType: ''
    returnType: int
    signature: int OpenSSLRSADNSCryptoKeyEngine::hashSizeToKind(const size_t hashSize)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: MessageDigestContext
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:717,1
    - Dst: EVP_MD_CTX_new
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:717,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:719,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:719,1
    - Dst: EVP_DigestSignInit
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:722,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:722,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::hasher
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:722,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:722,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:723,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:723,1
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:728,1
    - Dst: data
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:728,1
    - Dst: EVP_DigestSign
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:729,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:729,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:729,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:730,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:730,1
    - Dst: std::string::resize
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:733,1
    - Dst: reinterpret_cast<unsigned char*>
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:736,1
    - Dst: std::string::data
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:736,1
    - Dst: EVP_DigestSign
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:737,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:737,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:737,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:738,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:738,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::hash
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:742,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::hashSizeToKind
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:743,1
    - Dst: string::size
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:743,1
    - Dst: std::string::resize
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:744,1
    - Dst: RSA_size
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:744,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:744,1
    - Dst: RSA_sign
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:747,1
    - Dst: reinterpret_cast<unsigned char*>
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:747,1
    - Dst: string::at
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:747,1
    - Dst: string::length
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:747,1
    - Dst: reinterpret_cast<unsigned char*>
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:747,1
    - Dst: std::string::at
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:747,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:747,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:749,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:749,1
    - Dst: std::string::resize
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:752,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 20
    argCount: 1
    argNames:
    - ' message'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 756
      start: 712
    functionDepth: 1
    functionLinenumber: 712
    functionLinenumberEnd: 756
    functionName: OpenSSLRSADNSCryptoKeyEngine::sign
    functionSourceFile: /src/pdns/pdns/recursordist/opensslsigners.cc
    functionUses: 0
    functionsReached:
    - runtime_error
    - EVP_DigestSign
    - OpenSSLRSADNSCryptoKeyEngine::hasher
    - EVP_DigestSignInit
    - string::at
    - MessageDigestContext
    - std::string::at
    - string::size
    - size
    - OpenSSLRSADNSCryptoKeyEngine::getName
    - reinterpret_cast<unsigned char*>
    - reinterpret_cast<const unsigned char*>
    - RSA_sign
    - auto::get
    - OpenSSLRSADNSCryptoKeyEngine::hashSizeToKind
    - OpenSSLRSADNSCryptoKeyEngine::hash
    - std::string::data
    - get
    - std::string::resize
    - string::length
    - RSA_size
    - data
    - EVP_MD_CTX_new
    - Logging::Logger::error
    linkageType: ''
    returnType: std::string
    signature: std::string OpenSSLRSADNSCryptoKeyEngine::sign(const std::string& message)
      const
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: MessageDigestContext
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:761,1
    - Dst: EVP_MD_CTX_new
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:761,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:763,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:763,1
    - Dst: EVP_DigestVerifyInit
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:766,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:766,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::hasher
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:766,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:766,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:767,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:767,1
    - Dst: EVP_DigestVerify
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:771,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:771,1
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:771,1
    - Dst: data
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:771,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:771,1
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:771,1
    - Dst: data
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:771,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:771,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:773,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:773,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::hash
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:778,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::hashSizeToKind
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:779,1
    - Dst: string::size
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:779,1
    - Dst: RSA_verify
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:781,1
    - Dst: string::c_str
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:781,1
    - Dst: string::length
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:781,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:781,1
    - Dst: length
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:781,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:781,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 12
    argCount: 2
    argNames:
    - ' message'
    - ' signature'
    argTypes:
    - std::string
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 785
      start: 758
    functionDepth: 0
    functionLinenumber: 758
    functionLinenumberEnd: 785
    functionName: OpenSSLRSADNSCryptoKeyEngine::verify
    functionSourceFile: /src/pdns/pdns/recursordist/opensslsigners.cc
    functionUses: 0
    functionsReached:
    - OpenSSLRSADNSCryptoKeyEngine::hasher
    - MessageDigestContext
    - string::size
    - size
    - OpenSSLRSADNSCryptoKeyEngine::getName
    - reinterpret_cast<const unsigned char*>
    - c_str
    - RSA_verify
    - string::c_str
    - auto::get
    - EVP_DigestVerifyInit
    - EVP_DigestVerify
    - OpenSSLRSADNSCryptoKeyEngine::hashSizeToKind
    - OpenSSLRSADNSCryptoKeyEngine::hash
    - get
    - string::length
    - length
    - data
    - EVP_MD_CTX_new
    - Logging::Logger::error
    linkageType: ''
    returnType: bool
    signature: bool OpenSSLRSADNSCryptoKeyEngine::verify(const std::string& message,
      const std::string& signature) const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: OpenSSLRSADNSCryptoKeyEngine::getKeyParamModulus
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:791,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::getKeyParamPublicExponent
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:792,1
    - Dst: BigNum::get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:795,1
    - Dst: BigNum::get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:796,1
    - Dst: RSA_get0_key
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:801,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:801,1
    - Dst: std::string::resize
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:806,1
    - Dst: std::max
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:806,1
    - Dst: BN_num_bytes
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:806,1
    - Dst: BN_num_bytes
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:806,1
    - Dst: BN_bn2bin
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:809,1
    - Dst: reinterpret_cast<unsigned char*>
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:809,1
    - Dst: std::string::at
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:809,1
    - Dst: string::assign
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:811,1
    - Dst: string::assign
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:814,1
    - Dst: htons
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:816,1
    - Dst: string::append
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:817,1
    - Dst: string::append
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:819,1
    - Dst: std::string::at
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:819,1
    - Dst: BN_bn2bin
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:822,1
    - Dst: reinterpret_cast<unsigned char*>
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:822,1
    - Dst: std::string::at
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:822,1
    - Dst: string::append
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:823,1
    - Dst: std::string::at
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:823,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 826
      start: 787
    functionDepth: 1
    functionLinenumber: 787
    functionLinenumberEnd: 826
    functionName: OpenSSLRSADNSCryptoKeyEngine::getPublicKeyString
    functionSourceFile: /src/pdns/pdns/recursordist/opensslsigners.cc
    functionUses: 0
    functionsReached:
    - std::string::at
    - string::assign
    - BN_num_bytes
    - string::append
    - OpenSSLRSADNSCryptoKeyEngine::getKeyParamPublicExponent
    - get
    - BN_bn2bin
    - reinterpret_cast<unsigned char*>
    - std::string::resize
    - RSA_get0_key
    - std::max
    - OpenSSLRSADNSCryptoKeyEngine::getKeyParamModulus
    - BigNum::get
    - htons
    linkageType: ''
    returnType: std::string
    signature: std::string OpenSSLRSADNSCryptoKeyEngine::getPublicKeyString() const
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: mapToBN
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:830,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:830,1
    - Dst: mapToBN
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:831,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:831,1
    - Dst: mapToBN
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:832,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:832,1
    - Dst: mapToBN
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:834,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:834,1
    - Dst: mapToBN
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:835,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:835,1
    - Dst: mapToBN
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:837,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:837,1
    - Dst: mapToBN
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:838,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:838,1
    - Dst: mapToBN
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:839,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:839,1
    - Dst: pdns::checked_stoi_into
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:841,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:844,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:844,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:844,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:844,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::makeKeyParams
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:848,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:848,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:848,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:848,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:848,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:848,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:848,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:848,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:848,1
    - Dst: KeyContext
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:850,1
    - Dst: EVP_PKEY_CTX_new_from_name
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:850,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:852,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:852,1
    - Dst: EVP_PKEY_fromdata_init
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:855,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:855,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:856,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:856,1
    - Dst: EVP_PKEY_fromdata
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:860,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:860,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:860,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:861,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:861,1
    - Dst: reset
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:864,1
    - Dst: Key
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:866,1
    - Dst: RSA_new
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:866,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:868,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:868,1
    - Dst: RSA_set0_key
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:872,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:872,1
    - Dst: auto::release
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:872,1
    - Dst: auto::release
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:872,1
    - Dst: auto::release
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:872,1
    - Dst: RSA_set0_factors
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:873,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:873,1
    - Dst: auto::release
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:873,1
    - Dst: auto::release
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:873,1
    - Dst: RSA_set0_crt_params
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:874,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:874,1
    - Dst: auto::release
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:874,1
    - Dst: auto::release
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:874,1
    - Dst: auto::release
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:874,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:876,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 22
    argCount: 2
    argNames:
    - ' drc'
    - ' stormap'
    argTypes:
    - DNSKEYRecordContent
    - std::map<std::string, std::string>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 878
      start: 828
    functionDepth: 0
    functionLinenumber: 828
    functionLinenumberEnd: 878
    functionName: OpenSSLRSADNSCryptoKeyEngine::fromISCMap
    functionSourceFile: /src/pdns/pdns/recursordist/opensslsigners.cc
    functionUses: 0
    functionsReached:
    - std::to_string
    - runtime_error
    - OpenSSLRSADNSCryptoKeyEngine::makeKeyParams
    - mapToBN
    - reset
    - EVP_PKEY_fromdata_init
    - OpenSSLRSADNSCryptoKeyEngine::getName
    - EVP_PKEY_fromdata
    - RSA_new
    - pdns::checked_stoi_into
    - auto::get
    - Key
    - RSA_set0_crt_params
    - EVP_PKEY_CTX_new_from_name
    - std::move
    - RSA_set0_factors
    - RSA_set0_key
    - KeyContext
    - auto::release
    - Logging::Logger::error
    linkageType: ''
    returnType: void
    signature: void OpenSSLRSADNSCryptoKeyEngine::fromISCMap(DNSKEYRecordContent&
      drc, std::map<std::string, std::string>& stormap)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: length
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:923,1
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:926,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:926,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:929,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:929,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:935,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:935,1
    - Dst: substr
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:937,1
    - Dst: substr
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:938,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:942,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:942,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:944,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:946,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:946,1
    - Dst: substr
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:948,1
    - Dst: substr
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:949,1
    - Dst: BigNum
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:953,1
    - Dst: BN_bin2bn
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:953,1
    - Dst: reinterpret_cast<unsigned char*>
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:953,1
    - Dst: const_cast<char*>
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:953,1
    - Dst: string::c_str
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:953,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:953,1
    - Dst: string::length
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:953,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:955,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:955,1
    - Dst: BigNum
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:959,1
    - Dst: BN_bin2bn
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:959,1
    - Dst: reinterpret_cast<unsigned char*>
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:959,1
    - Dst: const_cast<char*>
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:959,1
    - Dst: string::c_str
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:959,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:959,1
    - Dst: string::length
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:959,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:961,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:961,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::makeKeyParams
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:965,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:965,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:965,1
    - Dst: KeyContext
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:967,1
    - Dst: EVP_PKEY_CTX_new_from_name
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:967,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:969,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:969,1
    - Dst: EVP_PKEY_fromdata_init
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:972,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:972,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:973,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:973,1
    - Dst: EVP_PKEY_fromdata
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:977,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:977,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:977,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:978,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:978,1
    - Dst: reset
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:981,1
    - Dst: Key
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:983,1
    - Dst: RSA_new
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:983,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:985,1
    - Dst: OpenSSLRSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:985,1
    - Dst: RSA_set0_key
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:988,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:988,1
    - Dst: auto::release
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:988,1
    - Dst: auto::release
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:988,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:989,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 41
    argCount: 1
    argNames:
    - ' content'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 991
      start: 919
    functionDepth: 0
    functionLinenumber: 919
    functionLinenumberEnd: 991
    functionName: OpenSSLRSADNSCryptoKeyEngine::fromPublicKeyString
    functionSourceFile: /src/pdns/pdns/recursordist/opensslsigners.cc
    functionUses: 0
    functionsReached:
    - runtime_error
    - OpenSSLRSADNSCryptoKeyEngine::makeKeyParams
    - static_cast<int>
    - reset
    - static_cast<size_t>
    - const_cast<char*>
    - EVP_PKEY_fromdata_init
    - OpenSSLRSADNSCryptoKeyEngine::getName
    - reinterpret_cast<unsigned char*>
    - reinterpret_cast<const unsigned char*>
    - substr
    - EVP_PKEY_fromdata
    - RSA_new
    - BN_bin2bn
    - c_str
    - string::c_str
    - auto::get
    - BigNum
    - Key
    - string::length
    - EVP_PKEY_CTX_new_from_name
    - length
    - std::move
    - RSA_set0_key
    - KeyContext
    - auto::release
    - Logging::Logger::error
    linkageType: ''
    returnType: void
    signature: void OpenSSLRSADNSCryptoKeyEngine::fromPublicKeyString(const std::string&
      content)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 999
      start: 999
    functionDepth: 0
    functionLinenumber: 999
    functionLinenumberEnd: 999
    functionName: OpenSSLECDSADNSCryptoKeyEngine::getName
    functionSourceFile: /src/pdns/pdns/recursordist/opensslsigners.cc
    functionUses: 16
    functionsReached: []
    linkageType: ''
    returnType: string
    signature: string getName() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: make_unique<OpenSSLECDSADNSCryptoKeyEngine>
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1047,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - slog
    - algorithm
    argTypes:
    - Logr::log_t
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1048
      start: 1045
    functionDepth: 0
    functionLinenumber: 1045
    functionLinenumberEnd: 1048
    functionName: OpenSSLECDSADNSCryptoKeyEngine::maker
    functionSourceFile: /src/pdns/pdns/recursordist/opensslsigners.cc
    functionUses: 0
    functionsReached:
    - make_unique<OpenSSLECDSADNSCryptoKeyEngine>
    linkageType: ''
    returnType: std::unique_ptr<DNSCryptoKeyEngine>
    signature: std::unique_ptr<DNSCryptoKeyEngine> maker(Logr::log_t slog, unsigned
      int algorithm)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1085
      start: 1082
    functionDepth: 0
    functionLinenumber: 1082
    functionLinenumberEnd: 1085
    functionName: OpenSSLECDSADNSCryptoKeyEngine::getBits
    functionSourceFile: /src/pdns/pdns/recursordist/opensslsigners.cc
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int OpenSSLECDSADNSCryptoKeyEngine::getBits() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: d_eckey
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1091,1
    - Dst: Key
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1091,1
    - Dst: EC_KEY_new
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1091,1
    - Dst: RAND_status
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1094,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1096,1
    - Dst: OpenSSLECDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1096,1
    - Dst: if
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1100,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1101,1
    - Dst: OpenSSLECDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1101,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - slog
    - algo
    argTypes:
    - Logr::log_t
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1111
      start: 1087
    functionDepth: 0
    functionLinenumber: 1087
    functionLinenumberEnd: 1111
    functionName: OpenSSLECDSADNSCryptoKeyEngine::OpenSSLECDSADNSCryptoKeyEngine
    functionSourceFile: /src/pdns/pdns/recursordist/opensslsigners.cc
    functionUses: 0
    functionsReached:
    - runtime_error
    - d_eckey
    - OpenSSLECDSADNSCryptoKeyEngine::getName
    - if
    - EC_KEY_new
    - Key
    - RAND_status
    linkageType: ''
    returnType: void
    signature: void OpenSSLECDSADNSCryptoKeyEngine::OpenSSLECDSADNSCryptoKeyEngine(Logr::log_t
      slog, unsigned int algo)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<unsigned int>
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1136,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1137,1
    - Dst: OpenSSLECDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1137,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1137,1
    - Dst: EVP_PKEY_Q_keygen
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1142,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1142,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1144,1
    - Dst: OpenSSLECDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1144,1
    - Dst: reset
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1147,1
    - Dst: EC_KEY_generate_key
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1149,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1149,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1151,1
    - Dst: OpenSSLECDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1151,1
    - Dst: EC_KEY_set_asn1_flag
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1154,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1154,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 12
    argCount: 1
    argNames:
    - bits
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1156
      start: 1134
    functionDepth: 0
    functionLinenumber: 1134
    functionLinenumberEnd: 1156
    functionName: OpenSSLECDSADNSCryptoKeyEngine::create
    functionSourceFile: /src/pdns/pdns/recursordist/opensslsigners.cc
    functionUses: 0
    functionsReached:
    - EVP_PKEY_Q_keygen
    - reset
    - std::to_string
    - runtime_error
    - EC_KEY_set_asn1_flag
    - OpenSSLECDSADNSCryptoKeyEngine::getName
    - get
    - static_cast<unsigned int>
    - c_str
    - Logging::Logger::error
    - EC_KEY_generate_key
    linkageType: ''
    returnType: void
    signature: void OpenSSLECDSADNSCryptoKeyEngine::create(unsigned int bits)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: PEM_read_PrivateKey
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1164,1
    - Dst: std::optional<std::reference_wrapper<const std::string>>::has_value
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1165,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1166,1
    - Dst: OpenSSLECDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1166,1
    - Dst: std::optional<std::reference_wrapper<const std::string>>::get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1166,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1169,1
    - Dst: OpenSSLECDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1169,1
    - Dst: reset
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1172,1
    - Dst: Key
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1174,1
    - Dst: PEM_read_ECPrivateKey
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1174,1
    - Dst: std::optional<std::reference_wrapper<const std::string>>::has_value
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1176,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1177,1
    - Dst: OpenSSLECDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1177,1
    - Dst: std::optional<std::reference_wrapper<const std::string>>::get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1177,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1180,1
    - Dst: OpenSSLECDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1180,1
    - Dst: EC_KEY_set_group
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1183,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1183,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1183,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1185,1
    - Dst: OpenSSLECDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1185,1
    - Dst: EC_KEY_get0_private_key
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1188,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1188,1
    - Dst: Point
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1190,1
    - Dst: EC_POINT_new
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1190,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1190,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1192,1
    - Dst: OpenSSLECDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1192,1
    - Dst: EC_POINT_mul
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1195,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1195,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1195,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1197,1
    - Dst: OpenSSLECDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1197,1
    - Dst: EC_KEY_set_public_key
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1200,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1200,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1200,1
    - Dst: ERR_print_errors_fp
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1202,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1203,1
    - Dst: OpenSSLECDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1203,1
    - Dst: EC_KEY_set_asn1_flag
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1206,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1206,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 32
    argCount: 3
    argNames:
    - ' drc'
    - ' inputFile'
    - filename
    argTypes:
    - DNSKEYRecordContent
    - std::FILE
    - std::optional<std::reference_wrapper<const std::string>>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1208
      start: 1158
    functionDepth: 0
    functionLinenumber: 1158
    functionLinenumberEnd: 1208
    functionName: OpenSSLECDSADNSCryptoKeyEngine::createFromPEMFile
    functionSourceFile: /src/pdns/pdns/recursordist/opensslsigners.cc
    functionUses: 0
    functionsReached:
    - runtime_error
    - std::optional<std::reference_wrapper<const std::string>>::has_value
    - EC_KEY_set_asn1_flag
    - EC_KEY_set_group
    - reset
    - ERR_print_errors_fp
    - std::optional<std::reference_wrapper<const std::string>>::get
    - EC_KEY_set_public_key
    - auto::get
    - OpenSSLECDSADNSCryptoKeyEngine::getName
    - PEM_read_PrivateKey
    - get
    - EC_KEY_get0_private_key
    - EC_POINT_new
    - Key
    - EC_POINT_mul
    - PEM_read_ECPrivateKey
    - Point
    - Logging::Logger::error
    linkageType: ''
    returnType: void
    signature: void OpenSSLECDSADNSCryptoKeyEngine::createFromPEMFile(DNSKEYRecordContent&
      drc, std::FILE& inputFile, std::optional<std::reference_wrapper<const std::string>>
      filename)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PEM_write_PrivateKey
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1213,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1213,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1214,1
    - Dst: OpenSSLECDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1214,1
    - Dst: PEM_write_ECPrivateKey
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1217,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1217,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1219,1
    - Dst: OpenSSLECDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1219,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 7
    argCount: 1
    argNames:
    - ' outputFile'
    argTypes:
    - std::FILE
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1222
      start: 1210
    functionDepth: 0
    functionLinenumber: 1210
    functionLinenumberEnd: 1222
    functionName: OpenSSLECDSADNSCryptoKeyEngine::convertToPEMFile
    functionSourceFile: /src/pdns/pdns/recursordist/opensslsigners.cc
    functionUses: 0
    functionsReached:
    - runtime_error
    - OpenSSLECDSADNSCryptoKeyEngine::getName
    - get
    - PEM_write_PrivateKey
    - PEM_write_ECPrivateKey
    - Logging::Logger::error
    linkageType: ''
    returnType: void
    signature: void OpenSSLECDSADNSCryptoKeyEngine::convertToPEMFile(std::FILE& outputFile)
      const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: EVP_PKEY_get_bn_param
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1228,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1228,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1229,1
    - Dst: OpenSSLECDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1229,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1232
      start: 1225
    functionDepth: 0
    functionLinenumber: 1225
    functionLinenumberEnd: 1232
    functionName: OpenSSLECDSADNSCryptoKeyEngine::getPrivateKey
    functionSourceFile: /src/pdns/pdns/recursordist/opensslsigners.cc
    functionUses: 1
    functionsReached:
    - EVP_PKEY_get_bn_param
    - Logging::Logger::error
    - OpenSSLECDSADNSCryptoKeyEngine::getName
    - get
    linkageType: ''
    returnType: auto
    signature: auto OpenSSLECDSADNSCryptoKeyEngine::getPrivateKey() const -> BigNum
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: storvector_t::emplace_back
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1250,1
    - Dst: OpenSSLECDSADNSCryptoKeyEngine::getPrivateKey
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1253,1
    - Dst: std::string::resize
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1256,1
    - Dst: BN_num_bytes
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1256,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1256,1
    - Dst: BN_bn2bin
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1258,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1258,1
    - Dst: reinterpret_cast<unsigned char*>
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1258,1
    - Dst: std::string::data
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1258,1
    - Dst: std::string::resize
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1260,1
    - Dst: std::string::append
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1264,1
    - Dst: storvector_t::emplace_back
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1267,1
    - Dst: EC_KEY_get0_private_key
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1270,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1270,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1272,1
    - Dst: OpenSSLECDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1272,1
    - Dst: std::string::resize
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1276,1
    - Dst: BN_num_bytes
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1276,1
    - Dst: BN_bn2bin
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1277,1
    - Dst: reinterpret_cast<unsigned char*>
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1277,1
    - Dst: std::string::at
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1277,1
    - Dst: string::append
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1281,1
    - Dst: storvector_t::emplace_back
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1284,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 27
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1288
      start: 1235
    functionDepth: 1
    functionLinenumber: 1235
    functionLinenumberEnd: 1288
    functionName: OpenSSLECDSADNSCryptoKeyEngine::convertToISCVector
    functionSourceFile: /src/pdns/pdns/recursordist/opensslsigners.cc
    functionUses: 0
    functionsReached:
    - std::string::at
    - storvector_t::emplace_back
    - BN_num_bytes
    - auto::get
    - std::string::append
    - string::append
    - runtime_error
    - std::string::data
    - OpenSSLECDSADNSCryptoKeyEngine::getName
    - EC_KEY_get0_private_key
    - BN_bn2bin
    - reinterpret_cast<unsigned char*>
    - std::string::resize
    - get
    - OpenSSLECDSADNSCryptoKeyEngine::getPrivateKey
    linkageType: ''
    returnType: DNSCryptoKeyEngine::storvector_t
    signature: DNSCryptoKeyEngine::storvector_t OpenSSLECDSADNSCryptoKeyEngine::convertToISCVector()
      const
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: OpenSSLECDSADNSCryptoKeyEngine::getBits
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1292,1
    - Dst: std::string::resize
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1294,1
    - Dst: SHA256
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1296,1
    - Dst: reinterpret_cast<unsigned char*>
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1296,1
    - Dst: const_cast<char*>
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1296,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1296,1
    - Dst: length
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1296,1
    - Dst: reinterpret_cast<unsigned char*>
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1296,1
    - Dst: std::string::data
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1296,1
    - Dst: OpenSSLECDSADNSCryptoKeyEngine::getBits
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1300,1
    - Dst: std::string::resize
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1302,1
    - Dst: SHA384
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1304,1
    - Dst: reinterpret_cast<unsigned char*>
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1304,1
    - Dst: const_cast<char*>
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1304,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1304,1
    - Dst: length
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1304,1
    - Dst: reinterpret_cast<unsigned char*>
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1304,1
    - Dst: std::string::data
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1304,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1308,1
    - Dst: OpenSSLECDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1308,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1308,1
    - Dst: OpenSSLECDSADNSCryptoKeyEngine::getBits
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1308,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - ' message'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1309
      start: 1290
    functionDepth: 1
    functionLinenumber: 1290
    functionLinenumberEnd: 1309
    functionName: OpenSSLECDSADNSCryptoKeyEngine::hash
    functionSourceFile: /src/pdns/pdns/recursordist/opensslsigners.cc
    functionUses: 2
    functionsReached:
    - length
    - const_cast<char*>
    - std::to_string
    - runtime_error
    - std::string::data
    - SHA384
    - OpenSSLECDSADNSCryptoKeyEngine::getName
    - reinterpret_cast<unsigned char*>
    - std::string::resize
    - SHA256
    - c_str
    - OpenSSLECDSADNSCryptoKeyEngine::getBits
    linkageType: ''
    returnType: std::string
    signature: std::string OpenSSLECDSADNSCryptoKeyEngine::hash(const std::string&
      message) const
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: EVP_sha256
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1317,1
    - Dst: EVP_sha384
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1320,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1323,1
    - Dst: OpenSSLECDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1323,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1323,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1327,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1327,1
    - Dst: OpenSSLECDSADNSCryptoKeyEngine::hashSize
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1327,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1331
      start: 1311
    functionDepth: 0
    functionLinenumber: 1311
    functionLinenumberEnd: 1331
    functionName: OpenSSLECDSADNSCryptoKeyEngine::hasher
    functionSourceFile: /src/pdns/pdns/recursordist/opensslsigners.cc
    functionUses: 2
    functionsReached:
    - EVP_sha384
    - std::to_string
    - std::runtime_error
    - runtime_error
    - OpenSSLECDSADNSCryptoKeyEngine::getName
    - EVP_sha256
    - OpenSSLECDSADNSCryptoKeyEngine::hashSize
    linkageType: ''
    returnType: EVP_MD
    signature: EVP_MD * OpenSSLECDSADNSCryptoKeyEngine::hasher() const
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: runtime_error
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1341,1
    - Dst: OpenSSLECDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1341,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1341,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1343
      start: 1333
    functionDepth: 0
    functionLinenumber: 1333
    functionLinenumberEnd: 1343
    functionName: OpenSSLECDSADNSCryptoKeyEngine::hashSize
    functionSourceFile: /src/pdns/pdns/recursordist/opensslsigners.cc
    functionUses: 2
    functionsReached:
    - runtime_error
    - std::to_string
    - OpenSSLECDSADNSCryptoKeyEngine::getName
    linkageType: ''
    returnType: std::size_t
    signature: std::size_t OpenSSLECDSADNSCryptoKeyEngine::hashSize() const
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: MessageDigestContext
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1348,1
    - Dst: EVP_MD_CTX_new
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1348,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1350,1
    - Dst: OpenSSLECDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1350,1
    - Dst: EVP_DigestSignInit
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1353,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1353,1
    - Dst: OpenSSLECDSADNSCryptoKeyEngine::hasher
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1353,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1353,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1354,1
    - Dst: OpenSSLECDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1354,1
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1360,1
    - Dst: data
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1360,1
    - Dst: EVP_DigestSign
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1361,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1361,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1361,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1362,1
    - Dst: OpenSSLECDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1362,1
    - Dst: std::string::resize
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1366,1
    - Dst: reinterpret_cast<unsigned char*>
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1369,1
    - Dst: std::string::data
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1369,1
    - Dst: EVP_DigestSign
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1370,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1370,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1370,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1371,1
    - Dst: OpenSSLECDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1371,1
    - Dst: std::string::resize
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1374,1
    - Dst: Signature
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1377,1
    - Dst: d2i_ECDSA_SIG
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1377,1
    - Dst: const_cast<const unsigned char**>
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1377,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1379,1
    - Dst: OpenSSLECDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1379,1
    - Dst: OpenSSLECDSADNSCryptoKeyEngine::hash
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1382,1
    - Dst: Signature
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1384,1
    - Dst: ECDSA_do_sign
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1384,1
    - Dst: string::c_str
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1384,1
    - Dst: string::length
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1384,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1384,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1386,1
    - Dst: OpenSSLECDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1386,1
    - Dst: std::string::resize
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1392,1
    - Dst: ECDSA_SIG_get0
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1396,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1396,1
    - Dst: BN_bn2bin
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1398,1
    - Dst: reinterpret_cast<unsigned char*>
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1398,1
    - Dst: std::string::at
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1398,1
    - Dst: string::append
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1400,1
    - Dst: string::append
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1402,1
    - Dst: std::string::at
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1402,1
    - Dst: BN_bn2bin
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1405,1
    - Dst: reinterpret_cast<unsigned char*>
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1405,1
    - Dst: std::string::at
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1405,1
    - Dst: string::append
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1407,1
    - Dst: string::append
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1409,1
    - Dst: std::string::at
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1409,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 33
    argCount: 1
    argNames:
    - ' message'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1412
      start: 1345
    functionDepth: 1
    functionLinenumber: 1345
    functionLinenumberEnd: 1412
    functionName: OpenSSLECDSADNSCryptoKeyEngine::sign
    functionSourceFile: /src/pdns/pdns/recursordist/opensslsigners.cc
    functionUses: 0
    functionsReached:
    - runtime_error
    - EVP_DigestSign
    - const_cast<const unsigned char**>
    - BN_bn2bin
    - EVP_DigestSignInit
    - MessageDigestContext
    - OpenSSLECDSADNSCryptoKeyEngine::hasher
    - std::string::at
    - ECDSA_do_sign
    - size
    - reinterpret_cast<unsigned char*>
    - reinterpret_cast<const unsigned char*>
    - Signature
    - ECDSA_SIG_get0
    - string::c_str
    - auto::get
    - std::string::data
    - OpenSSLECDSADNSCryptoKeyEngine::getName
    - get
    - d2i_ECDSA_SIG
    - std::string::resize
    - OpenSSLECDSADNSCryptoKeyEngine::hash
    - string::length
    - string::append
    - data
    - EVP_MD_CTX_new
    - Logging::Logger::error
    linkageType: ''
    returnType: std::string
    signature: std::string OpenSSLECDSADNSCryptoKeyEngine::sign(const std::string&
      message) const
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: length
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1416,1
    - Dst: static_cast<unsigned long>
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1416,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1417,1
    - Dst: OpenSSLECDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1417,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1417,1
    - Dst: length
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1417,1
    - Dst: const_cast<unsigned char*>
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1421,1
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1421,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1421,1
    - Dst: BigNum
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1422,1
    - Dst: BN_bin2bn
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1422,1
    - Dst: BigNum
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1423,1
    - Dst: BN_bin2bn
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1423,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1425,1
    - Dst: OpenSSLECDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1425,1
    - Dst: Signature
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1428,1
    - Dst: ECDSA_SIG_new
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1428,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1430,1
    - Dst: OpenSSLECDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1430,1
    - Dst: ECDSA_SIG_set0
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1432,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1432,1
    - Dst: auto::release
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1432,1
    - Dst: auto::release
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1432,1
    - Dst: i2d_ECDSA_SIG
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1436,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1436,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1438,1
    - Dst: OpenSSLECDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1438,1
    - Dst: OPENSSL_free
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1441,1
    - Dst: MessageDigestContext
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1443,1
    - Dst: EVP_MD_CTX_new
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1443,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1445,1
    - Dst: OpenSSLECDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1445,1
    - Dst: EVP_DigestVerifyInit
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1448,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1448,1
    - Dst: OpenSSLECDSADNSCryptoKeyEngine::hasher
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1448,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1448,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1449,1
    - Dst: OpenSSLECDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1449,1
    - Dst: EVP_DigestVerify
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1453,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1453,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1453,1
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1453,1
    - Dst: data
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1453,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1453,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1455,1
    - Dst: OpenSSLECDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1455,1
    - Dst: OpenSSLECDSADNSCryptoKeyEngine::hash
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1460,1
    - Dst: ECDSA_do_verify
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1462,1
    - Dst: string::c_str
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1462,1
    - Dst: string::length
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1462,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1462,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1462,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1464,1
    - Dst: OpenSSLECDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1464,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 30
    argCount: 2
    argNames:
    - ' message'
    - ' signature'
    argTypes:
    - std::string
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1469
      start: 1414
    functionDepth: 0
    functionLinenumber: 1414
    functionLinenumberEnd: 1469
    functionName: OpenSSLECDSADNSCryptoKeyEngine::verify
    functionSourceFile: /src/pdns/pdns/recursordist/opensslsigners.cc
    functionUses: 0
    functionsReached:
    - std::to_string
    - runtime_error
    - OPENSSL_free
    - MessageDigestContext
    - OpenSSLECDSADNSCryptoKeyEngine::hasher
    - ECDSA_SIG_set0
    - ECDSA_do_verify
    - size
    - reinterpret_cast<const unsigned char*>
    - Signature
    - BN_bin2bn
    - c_str
    - string::c_str
    - auto::get
    - const_cast<unsigned char*>
    - BigNum
    - EVP_DigestVerifyInit
    - ECDSA_SIG_new
    - EVP_DigestVerify
    - OpenSSLECDSADNSCryptoKeyEngine::getName
    - get
    - OpenSSLECDSADNSCryptoKeyEngine::hash
    - string::length
    - length
    - EVP_MD_CTX_new
    - i2d_ECDSA_SIG
    - data
    - auto::release
    - static_cast<unsigned long>
    - Logging::Logger::error
    linkageType: ''
    returnType: bool
    signature: bool OpenSSLECDSADNSCryptoKeyEngine::verify(const std::string& message,
      const std::string& signature) const
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: EVP_PKEY_get_octet_string_param
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1475,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1475,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1476,1
    - Dst: OpenSSLECDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1476,1
    - Dst: std::string::resize
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1480,1
    - Dst: const_cast<unsigned char*>
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1483,1
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1483,1
    - Dst: std::string::c_str
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1483,1
    - Dst: EVP_PKEY_get_octet_string_param
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1484,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1484,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1485,1
    - Dst: OpenSSLECDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1485,1
    - Dst: std::string::resize
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1488,1
    - Dst: Point
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1490,1
    - Dst: EC_POINT_new
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1490,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1490,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1492,1
    - Dst: OpenSSLECDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1492,1
    - Dst: BigNumContext
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1495,1
    - Dst: BN_CTX_new
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1495,1
    - Dst: const_cast<unsigned char*>
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1498,1
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1498,1
    - Dst: std::string::c_str
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1498,1
    - Dst: EC_POINT_oct2point
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1499,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1499,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1499,1
    - Dst: std::string::length
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1499,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1499,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1500,1
    - Dst: OpenSSLECDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1500,1
    - Dst: EC_POINT_point2oct
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1504,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1504,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1504,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1506,1
    - Dst: OpenSSLECDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1506,1
    - Dst: std::string::resize
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1508,1
    - Dst: const_cast<unsigned char*>
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1511,1
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1511,1
    - Dst: std::string::c_str
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1511,1
    - Dst: EC_POINT_point2oct
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1512,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1512,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1512,1
    - Dst: std::string::length
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1512,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1514,1
    - Dst: OpenSSLECDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1514,1
    - Dst: std::string::erase
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1520,1
    - Dst: std::string::resize
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1525,1
    - Dst: EC_POINT_point2oct
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1527,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1527,1
    - Dst: EC_KEY_get0_public_key
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1527,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1527,1
    - Dst: reinterpret_cast<unsigned char*>
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1527,1
    - Dst: std::string::at
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1527,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1527,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1529,1
    - Dst: OpenSSLECDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1529,1
    - Dst: std::string::erase
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1535,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 33
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1538
      start: 1471
    functionDepth: 1
    functionLinenumber: 1471
    functionLinenumberEnd: 1538
    functionName: OpenSSLECDSADNSCryptoKeyEngine::getPublicKeyString
    functionSourceFile: /src/pdns/pdns/recursordist/opensslsigners.cc
    functionUses: 0
    functionsReached:
    - std::string::length
    - EC_POINT_oct2point
    - runtime_error
    - EC_POINT_point2oct
    - EC_KEY_get0_public_key
    - std::string::size
    - std::string::at
    - std::string::erase
    - reinterpret_cast<unsigned char*>
    - reinterpret_cast<const unsigned char*>
    - auto::get
    - const_cast<unsigned char*>
    - OpenSSLECDSADNSCryptoKeyEngine::getName
    - EVP_PKEY_get_octet_string_param
    - get
    - std::string::resize
    - EC_POINT_new
    - std::string::c_str
    - BigNumContext
    - Point
    - BN_CTX_new
    - Logging::Logger::error
    linkageType: ''
    returnType: std::string
    signature: std::string OpenSSLECDSADNSCryptoKeyEngine::getPublicKeyString() const
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: ParamsBuilder
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1543,1
    - Dst: OSSL_PARAM_BLD_new
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1543,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1545,1
    - Dst: OpenSSLECDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1545,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1548,1
    - Dst: OSSL_PARAM_BLD_push_utf8_string
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1548,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1548,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1548,1
    - Dst: length
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1548,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1549,1
    - Dst: OpenSSLECDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1549,1
    - Dst: OSSL_PARAM_BLD_push_BN
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1552,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1552,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1553,1
    - Dst: OpenSSLECDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1553,1
    - Dst: has_value
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1556,1
    - Dst: OSSL_PARAM_BLD_push_octet_string
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1557,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1557,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1557,1
    - Dst: length
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1557,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1558,1
    - Dst: OpenSSLECDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1558,1
    - Dst: Params
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1562,1
    - Dst: OSSL_PARAM_BLD_to_param
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1562,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1562,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1564,1
    - Dst: OpenSSLECDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1564,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 19
    argCount: 3
    argNames:
    - ' group_name'
    - privateKey
    - ' publicKey'
    argTypes:
    - std::string
    - BIGNUM*
    - std::optional<std::string>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1568
      start: 1541
    functionDepth: 0
    functionLinenumber: 1541
    functionLinenumberEnd: 1568
    functionName: OpenSSLECDSADNSCryptoKeyEngine::makeKeyParams
    functionSourceFile: /src/pdns/pdns/recursordist/opensslsigners.cc
    functionUses: 2
    functionsReached:
    - length
    - OSSL_PARAM_BLD_new
    - has_value
    - auto::get
    - OSSL_PARAM_BLD_to_param
    - c_str
    - Params
    - OpenSSLECDSADNSCryptoKeyEngine::getName
    - OSSL_PARAM_BLD_push_BN
    - empty
    - OSSL_PARAM_BLD_push_utf8_string
    - ParamsBuilder
    - Logging::Logger::error
    - OSSL_PARAM_BLD_push_octet_string
    linkageType: ''
    returnType: auto
    signature: auto OpenSSLECDSADNSCryptoKeyEngine::makeKeyParams(const std::string&
      group_name, const BIGNUM* privateKey, const std::optional<std::string>& publicKey)
      const -> Params
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: atoi
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1573,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1573,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1576,1
    - Dst: OpenSSLECDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1576,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1576,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1576,1
    - Dst: mapToBN
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1579,1
    - Dst: OpenSSLECDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1579,1
    - Dst: Point
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1582,1
    - Dst: EC_POINT_new
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1582,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1582,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1584,1
    - Dst: OpenSSLECDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1584,1
    - Dst: EC_POINT_mul
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1587,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1587,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1587,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1587,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1588,1
    - Dst: OpenSSLECDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1588,1
    - Dst: EC_POINT_point2oct
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1592,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1592,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1592,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1594,1
    - Dst: OpenSSLECDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1594,1
    - Dst: std::string::resize
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1596,1
    - Dst: reinterpret_cast<unsigned char*>
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1599,1
    - Dst: std::string::data
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1599,1
    - Dst: EC_POINT_point2oct
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1600,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1600,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1600,1
    - Dst: std::string::length
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1600,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1602,1
    - Dst: OpenSSLECDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1602,1
    - Dst: OpenSSLECDSADNSCryptoKeyEngine::makeKeyParams
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1605,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1605,1
    - Dst: std::make_optional
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1605,1
    - Dst: KeyContext
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1607,1
    - Dst: EVP_PKEY_CTX_new_from_name
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1607,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1609,1
    - Dst: OpenSSLECDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1609,1
    - Dst: EVP_PKEY_fromdata_init
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1612,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1612,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1613,1
    - Dst: OpenSSLECDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1613,1
    - Dst: EVP_PKEY_fromdata
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1617,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1617,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1617,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1618,1
    - Dst: OpenSSLECDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1618,1
    - Dst: reset
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1621,1
    - Dst: EC_KEY_set_private_key
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1623,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1623,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1623,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1625,1
    - Dst: OpenSSLECDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1625,1
    - Dst: Point
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1628,1
    - Dst: EC_POINT_new
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1628,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1628,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1630,1
    - Dst: OpenSSLECDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1630,1
    - Dst: EC_POINT_mul
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1633,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1633,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1633,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1633,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1635,1
    - Dst: OpenSSLECDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1635,1
    - Dst: EC_KEY_set_public_key
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1638,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1638,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1638,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1640,1
    - Dst: OpenSSLECDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1640,1
    - Dst: EC_KEY_set_asn1_flag
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1643,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1643,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 44
    argCount: 2
    argNames:
    - ' drc'
    - ' stormap'
    argTypes:
    - DNSKEYRecordContent
    - std::map<std::string, std::string>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1645
      start: 1571
    functionDepth: 1
    functionLinenumber: 1571
    functionLinenumberEnd: 1645
    functionName: OpenSSLECDSADNSCryptoKeyEngine::fromISCMap
    functionSourceFile: /src/pdns/pdns/recursordist/opensslsigners.cc
    functionUses: 0
    functionsReached:
    - std::string::length
    - std::to_string
    - runtime_error
    - EC_POINT_point2oct
    - EC_KEY_set_asn1_flag
    - mapToBN
    - reset
    - EVP_PKEY_fromdata_init
    - reinterpret_cast<unsigned char*>
    - EVP_PKEY_fromdata
    - EC_KEY_set_public_key
    - c_str
    - auto::get
    - EC_KEY_set_private_key
    - std::string::data
    - OpenSSLECDSADNSCryptoKeyEngine::getName
    - get
    - std::string::resize
    - EC_POINT_new
    - std::make_optional
    - EC_POINT_mul
    - EVP_PKEY_CTX_new_from_name
    - OpenSSLECDSADNSCryptoKeyEngine::makeKeyParams
    - atoi
    - KeyContext
    - Point
    - Logging::Logger::error
    linkageType: ''
    returnType: void
    signature: void OpenSSLECDSADNSCryptoKeyEngine::fromISCMap(DNSKEYRecordContent&
      drc, std::map<std::string, std::string>& stormap)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: EVP_PKEY_CTX_new_from_pkey
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1650,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1650,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1652,1
    - Dst: OpenSSLECDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1652,1
    - Dst: std::optional<std::reference_wrapper<std::vector<std::string>>>::has_value
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1662,1
    - Dst: ERR_reason_error_string
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1663,1
    - Dst: ERR_get_error
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1663,1
    - Dst: std::optional<std::reference_wrapper<std::vector<std::string>>>::get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1665,1
    - Dst: std::optional<std::reference_wrapper<std::vector<std::string>>>::get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1668,1
    - Dst: addOpenSSLErrorMessageOnFail
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1674,1
    - Dst: EVP_PKEY_param_check
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1674,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1674,1
    - Dst: OpenSSLECDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1674,1
    - Dst: addOpenSSLErrorMessageOnFail
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1675,1
    - Dst: EVP_PKEY_public_check
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1675,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1675,1
    - Dst: OpenSSLECDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1675,1
    - Dst: addOpenSSLErrorMessageOnFail
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1676,1
    - Dst: EVP_PKEY_private_check
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1676,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1676,1
    - Dst: OpenSSLECDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1676,1
    - Dst: addOpenSSLErrorMessageOnFail
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1677,1
    - Dst: EVP_PKEY_pairwise_check
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1677,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1677,1
    - Dst: OpenSSLECDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1677,1
    - Dst: EC_KEY_check_key
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1682,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1682,1
    - Dst: std::optional<std::reference_wrapper<std::vector<std::string>>>::has_value
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1684,1
    - Dst: ERR_reason_error_string
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1685,1
    - Dst: ERR_get_error
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1685,1
    - Dst: std::optional<std::reference_wrapper<std::vector<std::string>>>::get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1689,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 30
    argCount: 1
    argNames:
    - errorMessages
    argTypes:
    - std::optional<std::reference_wrapper<std::vector<std::string>>>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1694
      start: 1647
    functionDepth: 0
    functionLinenumber: 1647
    functionLinenumberEnd: 1694
    functionName: OpenSSLECDSADNSCryptoKeyEngine::checkKey
    functionSourceFile: /src/pdns/pdns/recursordist/opensslsigners.cc
    functionUses: 0
    functionsReached:
    - ERR_get_error
    - auto::get
    - EVP_PKEY_private_check
    - addOpenSSLErrorMessageOnFail
    - ERR_reason_error_string
    - std::optional<std::reference_wrapper<std::vector<std::string>>>::get
    - std::optional<std::reference_wrapper<std::vector<std::string>>>::has_value
    - EC_KEY_check_key
    - OpenSSLECDSADNSCryptoKeyEngine::getName
    - get
    - EVP_PKEY_public_check
    - EVP_PKEY_pairwise_check
    - EVP_PKEY_param_check
    - Logging::Logger::error
    - EVP_PKEY_CTX_new_from_pkey
    linkageType: ''
    returnType: bool
    signature: bool OpenSSLECDSADNSCryptoKeyEngine::checkKey(std::optional<std::reference_wrapper<std::vector<std::string>>>
      errorMessages) const
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: std::string::append
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1703,1
    - Dst: OpenSSLECDSADNSCryptoKeyEngine::makeKeyParams
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1705,1
    - Dst: std::make_optional
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1705,1
    - Dst: KeyContext
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1707,1
    - Dst: EVP_PKEY_CTX_new_from_name
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1707,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1709,1
    - Dst: OpenSSLECDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1709,1
    - Dst: EVP_PKEY_fromdata_init
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1712,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1712,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1713,1
    - Dst: OpenSSLECDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1713,1
    - Dst: EVP_PKEY_fromdata
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1717,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1717,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1717,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1718,1
    - Dst: OpenSSLECDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1718,1
    - Dst: reset
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1721,1
    - Dst: string::append
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1727,1
    - Dst: Point
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1729,1
    - Dst: EC_POINT_new
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1729,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1729,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1731,1
    - Dst: OpenSSLECDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1731,1
    - Dst: EC_POINT_oct2point
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1734,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1734,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1734,1
    - Dst: string::c_str
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1734,1
    - Dst: string::length
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1734,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1736,1
    - Dst: OpenSSLECDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1736,1
    - Dst: EC_KEY_set_private_key
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1739,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1739,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1741,1
    - Dst: OpenSSLECDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1741,1
    - Dst: EC_KEY_set_public_key
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1744,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1744,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1744,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1746,1
    - Dst: OpenSSLECDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1746,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 27
    argCount: 1
    argNames:
    - ' content'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1749
      start: 1696
    functionDepth: 0
    functionLinenumber: 1696
    functionLinenumberEnd: 1749
    functionName: OpenSSLECDSADNSCryptoKeyEngine::fromPublicKeyString
    functionSourceFile: /src/pdns/pdns/recursordist/opensslsigners.cc
    functionUses: 0
    functionsReached:
    - EC_POINT_oct2point
    - runtime_error
    - reset
    - std::string::append
    - EVP_PKEY_fromdata_init
    - EVP_PKEY_fromdata
    - EC_KEY_set_public_key
    - string::c_str
    - auto::get
    - EC_KEY_set_private_key
    - OpenSSLECDSADNSCryptoKeyEngine::getName
    - get
    - EC_POINT_new
    - std::make_optional
    - string::length
    - EVP_PKEY_CTX_new_from_name
    - OpenSSLECDSADNSCryptoKeyEngine::makeKeyParams
    - string::append
    - KeyContext
    - Point
    - Logging::Logger::error
    linkageType: ''
    returnType: void
    signature: void OpenSSLECDSADNSCryptoKeyEngine::fromPublicKeyString(const std::string&
      content)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1758
      start: 1758
    functionDepth: 0
    functionLinenumber: 1758
    functionLinenumberEnd: 1758
    functionName: OpenSSLEDDSADNSCryptoKeyEngine::getName
    functionSourceFile: /src/pdns/pdns/recursordist/opensslsigners.cc
    functionUses: 11
    functionsReached: []
    linkageType: ''
    returnType: string
    signature: string getName() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: make_unique<OpenSSLEDDSADNSCryptoKeyEngine>
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1800,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - slog
    - algorithm
    argTypes:
    - Logr::log_t
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1801
      start: 1798
    functionDepth: 0
    functionLinenumber: 1798
    functionLinenumberEnd: 1801
    functionName: OpenSSLEDDSADNSCryptoKeyEngine::maker
    functionSourceFile: /src/pdns/pdns/recursordist/opensslsigners.cc
    functionUses: 0
    functionsReached:
    - make_unique<OpenSSLEDDSADNSCryptoKeyEngine>
    linkageType: ''
    returnType: std::unique_ptr<DNSCryptoKeyEngine>
    signature: std::unique_ptr<DNSCryptoKeyEngine> maker(Logr::log_t slog, unsigned
      int algorithm)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Key
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1816,1
    - Dst: RAND_status
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1818,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1820,1
    - Dst: OpenSSLEDDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1820,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1836,1
    - Dst: OpenSSLEDDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1836,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1836,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 2
    argNames:
    - slog
    - algo
    argTypes:
    - Logr::log_t
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1838
      start: 1814
    functionDepth: 0
    functionLinenumber: 1814
    functionLinenumberEnd: 1838
    functionName: OpenSSLEDDSADNSCryptoKeyEngine::OpenSSLEDDSADNSCryptoKeyEngine
    functionSourceFile: /src/pdns/pdns/recursordist/opensslsigners.cc
    functionUses: 0
    functionsReached:
    - OpenSSLEDDSADNSCryptoKeyEngine::getName
    - std::to_string
    - runtime_error
    - Key
    - RAND_status
    linkageType: ''
    returnType: void
    signature: void OpenSSLEDDSADNSCryptoKeyEngine::OpenSSLEDDSADNSCryptoKeyEngine(Logr::log_t
      slog, unsigned int algo)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1843
      start: 1840
    functionDepth: 0
    functionLinenumber: 1840
    functionLinenumberEnd: 1843
    functionName: OpenSSLEDDSADNSCryptoKeyEngine::getBits
    functionSourceFile: /src/pdns/pdns/recursordist/opensslsigners.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int OpenSSLEDDSADNSCryptoKeyEngine::getBits() const
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: EVP_PKEY_CTX_new_from_pkey
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1848,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1848,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1850,1
    - Dst: OpenSSLEDDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1850,1
    - Dst: std::optional<std::reference_wrapper<std::vector<std::string>>>::has_value
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1860,1
    - Dst: ERR_reason_error_string
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1861,1
    - Dst: ERR_get_error
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1861,1
    - Dst: std::optional<std::reference_wrapper<std::vector<std::string>>>::get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1863,1
    - Dst: std::optional<std::reference_wrapper<std::vector<std::string>>>::get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1866,1
    - Dst: addOpenSSLErrorMessageOnFail
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1872,1
    - Dst: EVP_PKEY_param_check
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1872,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1872,1
    - Dst: OpenSSLEDDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1872,1
    - Dst: addOpenSSLErrorMessageOnFail
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1873,1
    - Dst: EVP_PKEY_public_check
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1873,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1873,1
    - Dst: OpenSSLEDDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1873,1
    - Dst: addOpenSSLErrorMessageOnFail
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1874,1
    - Dst: EVP_PKEY_private_check
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1874,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1874,1
    - Dst: OpenSSLEDDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1874,1
    - Dst: addOpenSSLErrorMessageOnFail
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1875,1
    - Dst: EVP_PKEY_pairwise_check
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1875,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1875,1
    - Dst: OpenSSLEDDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1875,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 1
    argNames:
    - errorMessages
    argTypes:
    - std::optional<std::reference_wrapper<std::vector<std::string>>>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1881
      start: 1845
    functionDepth: 0
    functionLinenumber: 1845
    functionLinenumberEnd: 1881
    functionName: OpenSSLEDDSADNSCryptoKeyEngine::checkKey
    functionSourceFile: /src/pdns/pdns/recursordist/opensslsigners.cc
    functionUses: 0
    functionsReached:
    - OpenSSLEDDSADNSCryptoKeyEngine::getName
    - ERR_get_error
    - auto::get
    - EVP_PKEY_private_check
    - addOpenSSLErrorMessageOnFail
    - ERR_reason_error_string
    - std::optional<std::reference_wrapper<std::vector<std::string>>>::get
    - std::optional<std::reference_wrapper<std::vector<std::string>>>::has_value
    - EVP_PKEY_public_check
    - get
    - EVP_PKEY_pairwise_check
    - EVP_PKEY_param_check
    - Logging::Logger::error
    - EVP_PKEY_CTX_new_from_pkey
    linkageType: ''
    returnType: bool
    signature: bool OpenSSLEDDSADNSCryptoKeyEngine::checkKey([[maybe_unused]] std::optional<std::reference_wrapper<std::vector<std::string>>>
      errorMessages) const
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: KeyContext
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1885,1
    - Dst: EVP_PKEY_CTX_new_id
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1885,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1887,1
    - Dst: OpenSSLEDDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1887,1
    - Dst: EVP_PKEY_keygen_init
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1890,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1890,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1891,1
    - Dst: OpenSSLEDDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1891,1
    - Dst: EVP_PKEY_keygen
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1895,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1895,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1896,1
    - Dst: OpenSSLEDDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1896,1
    - Dst: reset
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1899,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1900
      start: 1883
    functionDepth: 0
    functionLinenumber: 1883
    functionLinenumberEnd: 1900
    functionName: OpenSSLEDDSADNSCryptoKeyEngine::create
    functionSourceFile: /src/pdns/pdns/recursordist/opensslsigners.cc
    functionUses: 0
    functionsReached:
    - OpenSSLEDDSADNSCryptoKeyEngine::getName
    - reset
    - auto::get
    - EVP_PKEY_keygen
    - EVP_PKEY_keygen_init
    - KeyContext
    - EVP_PKEY_CTX_new_id
    - Logging::Logger::error
    linkageType: ''
    returnType: void
    signature: void OpenSSLEDDSADNSCryptoKeyEngine::create(unsigned int /* bits */)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Key
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1905,1
    - Dst: PEM_read_PrivateKey
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1905,1
    - Dst: std::optional<std::reference_wrapper<const std::string>>::has_value
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1907,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1908,1
    - Dst: OpenSSLEDDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1908,1
    - Dst: std::optional<std::reference_wrapper<const std::string>>::get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1908,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1911,1
    - Dst: OpenSSLEDDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1911,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 3
    argNames:
    - ' drc'
    - ' inputFile'
    - filename
    argTypes:
    - DNSKEYRecordContent
    - std::FILE
    - std::optional<std::reference_wrapper<const std::string>>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1913
      start: 1902
    functionDepth: 0
    functionLinenumber: 1902
    functionLinenumberEnd: 1913
    functionName: OpenSSLEDDSADNSCryptoKeyEngine::createFromPEMFile
    functionSourceFile: /src/pdns/pdns/recursordist/opensslsigners.cc
    functionUses: 0
    functionsReached:
    - OpenSSLEDDSADNSCryptoKeyEngine::getName
    - PEM_read_PrivateKey
    - std::optional<std::reference_wrapper<const std::string>>::has_value
    - std::optional<std::reference_wrapper<const std::string>>::get
    - Key
    - Logging::Logger::error
    linkageType: ''
    returnType: void
    signature: void OpenSSLEDDSADNSCryptoKeyEngine::createFromPEMFile(DNSKEYRecordContent&
      drc, std::FILE& inputFile, std::optional<std::reference_wrapper<const std::string>>
      filename)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PEM_write_PrivateKey
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1917,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1917,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1919,1
    - Dst: OpenSSLEDDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1919,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - ' outputFile'
    argTypes:
    - std::FILE
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1921
      start: 1915
    functionDepth: 0
    functionLinenumber: 1915
    functionLinenumberEnd: 1921
    functionName: OpenSSLEDDSADNSCryptoKeyEngine::convertToPEMFile
    functionSourceFile: /src/pdns/pdns/recursordist/opensslsigners.cc
    functionUses: 0
    functionsReached:
    - OpenSSLEDDSADNSCryptoKeyEngine::getName
    - PEM_write_PrivateKey
    - Logging::Logger::error
    - get
    linkageType: ''
    returnType: void
    signature: void OpenSSLEDDSADNSCryptoKeyEngine::convertToPEMFile(std::FILE& outputFile)
      const
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: string::empty
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1938,1
    - Dst: storvector_t::emplace_back
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1942,1
    - Dst: string::resize
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1946,1
    - Dst: EVP_PKEY_get_raw_private_key
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1949,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1949,1
    - Dst: reinterpret_cast<unsigned char*>
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1949,1
    - Dst: string::at
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1949,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1950,1
    - Dst: OpenSSLEDDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1950,1
    - Dst: storvector_t::emplace_back
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1952,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1954
      start: 1923
    functionDepth: 1
    functionLinenumber: 1923
    functionLinenumberEnd: 1954
    functionName: OpenSSLEDDSADNSCryptoKeyEngine::convertToISCVector
    functionSourceFile: /src/pdns/pdns/recursordist/opensslsigners.cc
    functionUses: 0
    functionsReached:
    - string::resize
    - EVP_PKEY_get_raw_private_key
    - OpenSSLEDDSADNSCryptoKeyEngine::getName
    - storvector_t::emplace_back
    - string::empty
    - get
    - reinterpret_cast<unsigned char*>
    - string::at
    - Logging::Logger::error
    linkageType: ''
    returnType: DNSCryptoKeyEngine::storvector_t
    signature: DNSCryptoKeyEngine::storvector_t OpenSSLEDDSADNSCryptoKeyEngine::convertToISCVector()
      const
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: MessageDigestContext
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1958,1
    - Dst: EVP_MD_CTX_new
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1958,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1960,1
    - Dst: OpenSSLEDDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1960,1
    - Dst: EVP_DigestSignInit
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1962,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1962,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1962,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1963,1
    - Dst: OpenSSLEDDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1963,1
    - Dst: string::resize
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1970,1
    - Dst: EVP_DigestSign
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1972,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1972,1
    - Dst: reinterpret_cast<unsigned char*>
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1974,1
    - Dst: string::at
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1974,1
    - Dst: reinterpret_cast<unsigned char*>
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1976,1
    - Dst: string::at
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1976,1
    - Dst: string::length
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1976,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1978,1
    - Dst: OpenSSLEDDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1978,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 12
    argCount: 1
    argNames:
    - ' msg'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1982
      start: 1956
    functionDepth: 1
    functionLinenumber: 1956
    functionLinenumberEnd: 1982
    functionName: OpenSSLEDDSADNSCryptoKeyEngine::sign
    functionSourceFile: /src/pdns/pdns/recursordist/opensslsigners.cc
    functionUses: 0
    functionsReached:
    - OpenSSLEDDSADNSCryptoKeyEngine::getName
    - string::resize
    - auto::get
    - MessageDigestContext
    - get
    - EVP_DigestSign
    - reinterpret_cast<unsigned char*>
    - EVP_DigestSignInit
    - string::at
    - string::length
    - EVP_MD_CTX_new
    - Logging::Logger::error
    linkageType: ''
    returnType: std::string
    signature: std::string OpenSSLEDDSADNSCryptoKeyEngine::sign(const std::string&
      msg) const
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: MessageDigestContext
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1986,1
    - Dst: EVP_MD_CTX_new
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1986,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1988,1
    - Dst: OpenSSLEDDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1988,1
    - Dst: EVP_DigestVerifyInit
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1990,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1990,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1990,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1991,1
    - Dst: OpenSSLEDDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1991,1
    - Dst: EVP_DigestVerify
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1994,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1994,1
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1996,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1996,1
    - Dst: length
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1996,1
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1998,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1998,1
    - Dst: length
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:1998,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:2000,1
    - Dst: OpenSSLEDDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:2000,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 11
    argCount: 2
    argNames:
    - ' message'
    - ' signature'
    argTypes:
    - std::string
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2004
      start: 1984
    functionDepth: 0
    functionLinenumber: 1984
    functionLinenumberEnd: 2004
    functionName: OpenSSLEDDSADNSCryptoKeyEngine::verify
    functionSourceFile: /src/pdns/pdns/recursordist/opensslsigners.cc
    functionUses: 0
    functionsReached:
    - OpenSSLEDDSADNSCryptoKeyEngine::getName
    - length
    - auto::get
    - at
    - EVP_DigestVerifyInit
    - MessageDigestContext
    - EVP_DigestVerify
    - get
    - reinterpret_cast<const unsigned char*>
    - EVP_MD_CTX_new
    - Logging::Logger::error
    linkageType: ''
    returnType: bool
    signature: bool OpenSSLEDDSADNSCryptoKeyEngine::verify(const std::string& message,
      const std::string& signature) const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: string::resize
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:2010,1
    - Dst: EVP_PKEY_get_raw_public_key
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:2013,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:2013,1
    - Dst: reinterpret_cast<unsigned char*>
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:2013,1
    - Dst: string::at
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:2013,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:2014,1
    - Dst: OpenSSLEDDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:2014,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2018
      start: 2006
    functionDepth: 1
    functionLinenumber: 2006
    functionLinenumberEnd: 2018
    functionName: OpenSSLEDDSADNSCryptoKeyEngine::getPublicKeyString
    functionSourceFile: /src/pdns/pdns/recursordist/opensslsigners.cc
    functionUses: 0
    functionsReached:
    - string::resize
    - OpenSSLEDDSADNSCryptoKeyEngine::getName
    - get
    - reinterpret_cast<unsigned char*>
    - EVP_PKEY_get_raw_public_key
    - string::at
    - Logging::Logger::error
    linkageType: ''
    returnType: std::string
    signature: std::string OpenSSLEDDSADNSCryptoKeyEngine::getPublicKeyString() const
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: atoi
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:2022,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:2022,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:2024,1
    - Dst: OpenSSLEDDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:2024,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:2024,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:2024,1
    - Dst: Key
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:2028,1
    - Dst: EVP_PKEY_new_raw_private_key
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:2028,1
    - Dst: reinterpret_cast<unsigned char*>
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:2028,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:2028,1
    - Dst: length
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:2028,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:2030,1
    - Dst: OpenSSLEDDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:2030,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 2
    argNames:
    - ' drc'
    - ' stormap'
    argTypes:
    - DNSKEYRecordContent
    - std::map<std::string, std::string>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2032
      start: 2020
    functionDepth: 0
    functionLinenumber: 2020
    functionLinenumberEnd: 2032
    functionName: OpenSSLEDDSADNSCryptoKeyEngine::fromISCMap
    functionSourceFile: /src/pdns/pdns/recursordist/opensslsigners.cc
    functionUses: 0
    functionsReached:
    - OpenSSLEDDSADNSCryptoKeyEngine::getName
    - length
    - std::to_string
    - atoi
    - EVP_PKEY_new_raw_private_key
    - runtime_error
    - reinterpret_cast<unsigned char*>
    - Key
    - c_str
    - at
    - Logging::Logger::error
    linkageType: ''
    returnType: void
    signature: void OpenSSLEDDSADNSCryptoKeyEngine::fromISCMap(DNSKEYRecordContent&
      drc, std::map<std::string, std::string>& stormap)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: length
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:2036,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:2037,1
    - Dst: OpenSSLEDDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:2037,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:2037,1
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:2041,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:2041,1
    - Dst: Key
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:2043,1
    - Dst: EVP_PKEY_new_raw_public_key
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:2043,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:2045,1
    - Dst: OpenSSLEDDSADNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:2045,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 1
    argNames:
    - ' content'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2047
      start: 2034
    functionDepth: 0
    functionLinenumber: 2034
    functionLinenumberEnd: 2047
    functionName: OpenSSLEDDSADNSCryptoKeyEngine::fromPublicKeyString
    functionSourceFile: /src/pdns/pdns/recursordist/opensslsigners.cc
    functionUses: 0
    functionsReached:
    - length
    - OpenSSLEDDSADNSCryptoKeyEngine::getName
    - std::to_string
    - runtime_error
    - EVP_PKEY_new_raw_public_key
    - reinterpret_cast<const unsigned char*>
    - Key
    - c_str
    - Logging::Logger::error
    linkageType: ''
    returnType: void
    signature: void OpenSSLEDDSADNSCryptoKeyEngine::fromPublicKeyString(const std::string&
      content)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSCryptoKeyEngine::report
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:2056,1
    - Dst: DNSCryptoKeyEngine::report
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:2057,1
    - Dst: DNSCryptoKeyEngine::report
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:2058,1
    - Dst: DNSCryptoKeyEngine::report
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:2059,1
    - Dst: DNSCryptoKeyEngine::report
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:2061,1
    - Dst: DNSCryptoKeyEngine::report
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:2062,1
    - Dst: DNSCryptoKeyEngine::report
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:2065,1
    - Dst: DNSCryptoKeyEngine::report
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:2068,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2070
      start: 2054
    functionDepth: 0
    functionLinenumber: 2054
    functionLinenumberEnd: 2070
    functionName: LoaderStruct
    functionSourceFile: /src/pdns/pdns/recursordist/opensslsigners.cc
    functionUses: 0
    functionsReached:
    - DNSCryptoKeyEngine::report
    linkageType: ''
    returnType: void
    signature: void LoaderStruct()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSCryptoKeyEngine::report
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:2056,1
    - Dst: DNSCryptoKeyEngine::report
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:2057,1
    - Dst: DNSCryptoKeyEngine::report
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:2058,1
    - Dst: DNSCryptoKeyEngine::report
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:2059,1
    - Dst: DNSCryptoKeyEngine::report
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:2061,1
    - Dst: DNSCryptoKeyEngine::report
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:2062,1
    - Dst: DNSCryptoKeyEngine::report
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:2065,1
    - Dst: DNSCryptoKeyEngine::report
      Src: /src/pdns/pdns/recursordist/opensslsigners.cc:2068,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2070
      start: 2054
    functionDepth: 0
    functionLinenumber: 2054
    functionLinenumberEnd: 2070
    functionName: LoaderStruct
    functionSourceFile: /src/pdns/pdns/recursordist/opensslsigners.cc
    functionUses: 0
    functionsReached:
    - DNSCryptoKeyEngine::report
    linkageType: ''
    returnType: void
    signature: void LoaderStruct()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: GssName::setName
      Src: /src/pdns/pdns/recursordist/gss_context.hh: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: GssName::GssName
    functionSourceFile: /src/pdns/pdns/recursordist/gss_context.hh
    functionUses: 0
    functionsReached:
    - GssName::setName
    linkageType: ''
    returnType: void
    signature: void GssName()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: GssName::setName
      Src: /src/pdns/pdns/recursordist/gss_context.hh:78,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' name'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 76
    functionDepth: 0
    functionLinenumber: 76
    functionLinenumberEnd: 79
    functionName: GssName::GssName
    functionSourceFile: /src/pdns/pdns/recursordist/gss_context.hh
    functionUses: 0
    functionsReached:
    - GssName::setName
    linkageType: ''
    returnType: void
    signature: void GssName(const std::string& name)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/gss_context.hh:88,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/gss_context.hh:89,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/gss_context.hh:90,1
    - Dst: gss_import_name
      Src: /src/pdns/pdns/recursordist/gss_context.hh:91,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - ' name'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 83
    functionDepth: 0
    functionLinenumber: 83
    functionLinenumberEnd: 96
    functionName: GssName::setName
    functionSourceFile: /src/pdns/pdns/recursordist/gss_context.hh
    functionUses: 4
    functionsReached:
    - empty
    - c_str
    - gss_import_name
    - size
    linkageType: ''
    returnType: bool
    signature: bool setName(const std::string& name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 98
    functionDepth: 0
    functionLinenumber: 98
    functionLinenumberEnd: 101
    functionName: GssName::setName
    functionSourceFile: /src/pdns/pdns/recursordist/gss_context.hh
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool setName(const std::string& /* name */)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: gss_release_name
      Src: /src/pdns/pdns/recursordist/gss_context.hh:108,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 104
    functionDepth: 0
    functionLinenumber: 104
    functionLinenumberEnd: 110
    functionName: ~GssName()
    functionSourceFile: /src/pdns/pdns/recursordist/gss_context.hh
    functionUses: 0
    functionsReached:
    - gss_release_name
    linkageType: ''
    returnType: void
    signature: void ~GssName()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: gss_compare_name
      Src: /src/pdns/pdns/recursordist/gss_context.hh:119,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - GssName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 115
    functionDepth: 0
    functionLinenumber: 115
    functionLinenumberEnd: 121
    functionName: operator==(const GssName& rhs)
    functionSourceFile: /src/pdns/pdns/recursordist/gss_context.hh
    functionUses: 0
    functionsReached:
    - gss_compare_name
    linkageType: ''
    returnType: bool
    signature: bool operator==(const GssName& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 123
    functionDepth: 0
    functionLinenumber: 123
    functionLinenumberEnd: 126
    functionName: operator==(const GssName& /* rhs */)
    functionSourceFile: /src/pdns/pdns/recursordist/gss_context.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool operator==(const GssName& /* rhs */)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/recursordist/gss_context.hh:138,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/gss_context.hh:139,1
    - Dst: gss_import_name
      Src: /src/pdns/pdns/recursordist/gss_context.hh:140,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/recursordist/gss_context.hh:142,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/gss_context.hh:142,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/gss_context.hh:142,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/gss_context.hh:142,1
    - Dst: gss_compare_name
      Src: /src/pdns/pdns/recursordist/gss_context.hh:144,1
    - Dst: gss_release_name
      Src: /src/pdns/pdns/recursordist/gss_context.hh:145,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - ' name'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 132
    functionDepth: 0
    functionLinenumber: 132
    functionLinenumberEnd: 147
    functionName: GssName::match
    functionSourceFile: /src/pdns/pdns/recursordist/gss_context.hh
    functionUses: 1
    functionsReached:
    - std::to_string
    - gss_compare_name
    - PDNSException
    - string
    - size
    - gss_import_name
    - c_str
    - gss_release_name
    linkageType: ''
    returnType: bool
    signature: bool match(const std::string& name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 152
      start: 149
    functionDepth: 0
    functionLinenumber: 149
    functionLinenumberEnd: 152
    functionName: GssName::match
    functionSourceFile: /src/pdns/pdns/recursordist/gss_context.hh
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool match(const std::string& /* name */)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 163
      start: 156
    functionDepth: 0
    functionLinenumber: 156
    functionLinenumberEnd: 163
    functionName: GssName::valid
    functionSourceFile: /src/pdns/pdns/recursordist/gss_context.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool valid()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 187
      start: 187
    functionDepth: 0
    functionLinenumber: 187
    functionLinenumberEnd: 187
    functionName: '& getLabel()'
    functionSourceFile: /src/pdns/pdns/recursordist/gss_context.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: DNSName
    signature: DNSName & getLabel()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 199
      start: 199
    functionDepth: 0
    functionLinenumber: 199
    functionLinenumberEnd: 199
    functionName: GssContext::getErrorStrings
    functionSourceFile: /src/pdns/pdns/recursordist/gss_context.hh
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: std::vector<std::string>
    signature: std::vector<std::string> getErrorStrings()
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: std::getline
      Src: /src/pdns/pdns/recursordist/pubsuffixloader.cc:40,1
    - Dst: std::string::empty
      Src: /src/pdns/pdns/recursordist/pubsuffixloader.cc:41,1
    - Dst: std::string::rfind
      Src: /src/pdns/pdns/recursordist/pubsuffixloader.cc:41,1
    - Dst: toLower
      Src: /src/pdns/pdns/recursordist/pubsuffixloader.cc:46,1
    - Dst: Regex::match
      Src: /src/pdns/pdns/recursordist/pubsuffixloader.cc:47,1
    - Dst: DNSName::countLabels
      Src: /src/pdns/pdns/recursordist/pubsuffixloader.cc:51,1
    - Dst: emplace_back
      Src: /src/pdns/pdns/recursordist/pubsuffixloader.cc:54,1
    - Dst: DNSName::labelReverse
      Src: /src/pdns/pdns/recursordist/pubsuffixloader.cc:54,1
    - Dst: withName
      Src: /src/pdns/pdns/recursordist/pubsuffixloader.cc:63,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/pubsuffixloader.cc:63,1
    - Dst: withName
      Src: /src/pdns/pdns/recursordist/pubsuffixloader.cc:68,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/pubsuffixloader.cc:68,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/pubsuffixloader.cc:68,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 27
    argCount: 3
    argNames:
    - ' file'
    - ' stream'
    - ' pbList'
    argTypes:
    - std::string
    - std::istream
    - std::vector<std::vector<std::string>>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 33
    functionDepth: 0
    functionLinenumber: 33
    functionLinenumberEnd: 71
    functionName: initPublicSuffixList
    functionSourceFile: /src/pdns/pdns/recursordist/pubsuffixloader.cc
    functionUses: 1
    functionsReached:
    - DNSName::labelReverse
    - Logging::Loggable
    - withName
    - DNSName::countLabels
    - what
    - toLower
    - Regex::match
    - std::string::rfind
    - emplace_back
    - std::string::empty
    - std::getline
    linkageType: ''
    returnType: bool
    signature: bool initPublicSuffixList(const std::string& file, std::istream& stream,
      std::vector<std::vector<std::string>>& pbList)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/pubsuffixloader.cc:78,1
    - Dst: std::ifstream::is_open
      Src: /src/pdns/pdns/recursordist/pubsuffixloader.cc:81,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/pubsuffixloader.cc:82,1
    - Dst: initPublicSuffixList
      Src: /src/pdns/pdns/recursordist/pubsuffixloader.cc:84,1
    - Dst: withName
      Src: /src/pdns/pdns/recursordist/pubsuffixloader.cc:87,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/pubsuffixloader.cc:87,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/pubsuffixloader.cc:87,1
    - Dst: std::vector::clear
      Src: /src/pdns/pdns/recursordist/pubsuffixloader.cc:92,1
    - Dst: initPublicSuffixList
      Src: /src/pdns/pdns/recursordist/pubsuffixloader.cc:94,1
    - Dst: std::sort
      Src: /src/pdns/pdns/recursordist/pubsuffixloader.cc:96,1
    - Dst: std::vector::begin
      Src: /src/pdns/pdns/recursordist/pubsuffixloader.cc:96,1
    - Dst: std::vector::end
      Src: /src/pdns/pdns/recursordist/pubsuffixloader.cc:96,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/pubsuffixloader.cc:97,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 1
    argNames:
    - ' file'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 73
    functionDepth: 1
    functionLinenumber: 73
    functionLinenumberEnd: 98
    functionName: initPublicSuffixList
    functionSourceFile: /src/pdns/pdns/recursordist/pubsuffixloader.cc
    functionUses: 2
    functionsReached:
    - std::vector::end
    - std::move
    - std::runtime_error
    - withName
    - what
    - std::ifstream::is_open
    - Logging::Loggable
    - std::sort
    - std::vector::begin
    - initPublicSuffixList
    - empty
    - std::vector::clear
    linkageType: ''
    returnType: void
    signature: void initPublicSuffixList(const std::string& file)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: map::emplace
      Src: /src/pdns/pdns/recursordist/qtype.cc:111,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ' names'
    argTypes:
    - map<const string, uint16_t>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 107
    functionDepth: 0
    functionLinenumber: 107
    functionLinenumberEnd: 114
    functionName: swapElements
    functionSourceFile: /src/pdns/pdns/recursordist/qtype.cc
    functionUses: 0
    functionsReached:
    - map::emplace
    linkageType: ''
    returnType: map<uint16_t, const string>
    signature: map<uint16_t, const string> swapElements(const map<const string, uint16_t>&
      names)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: count
      Src: /src/pdns/pdns/recursordist/qtype.cc:121,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 122
      start: 119
    functionDepth: 0
    functionLinenumber: 119
    functionLinenumberEnd: 122
    functionName: QType::isSupportedType
    functionSourceFile: /src/pdns/pdns/recursordist/qtype.cc
    functionUses: 0
    functionsReached:
    - count
    linkageType: ''
    returnType: bool
    signature: bool QType::isSupportedType() const
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 131
      start: 124
    functionDepth: 0
    functionLinenumber: 124
    functionLinenumberEnd: 131
    functionName: QType::isMetadataType
    functionSourceFile: /src/pdns/pdns/recursordist/qtype.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool QType::isMetadataType() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: find
      Src: /src/pdns/pdns/recursordist/qtype.cc:135,1
    - Dst: cend
      Src: /src/pdns/pdns/recursordist/qtype.cc:136,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/qtype.cc:139,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 133
    functionDepth: 0
    functionLinenumber: 133
    functionLinenumberEnd: 140
    functionName: QType::toString
    functionSourceFile: /src/pdns/pdns/recursordist/qtype.cc
    functionUses: 8
    functionsReached:
    - cend
    - std::to_string
    - find
    linkageType: ''
    returnType: string
    signature: string QType::toString() const
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: toUpper
      Src: /src/pdns/pdns/recursordist/qtype.cc:144,1
    - Dst: find
      Src: /src/pdns/pdns/recursordist/qtype.cc:146,1
    - Dst: cend
      Src: /src/pdns/pdns/recursordist/qtype.cc:147,1
    - Dst: static_cast<uint16_t>
      Src: /src/pdns/pdns/recursordist/qtype.cc:151,1
    - Dst: atoi
      Src: /src/pdns/pdns/recursordist/qtype.cc:151,1
    - Dst: boost::starts_with
      Src: /src/pdns/pdns/recursordist/qtype.cc:154,1
    - Dst: static_cast<uint16_t>
      Src: /src/pdns/pdns/recursordist/qtype.cc:155,1
    - Dst: atoi
      Src: /src/pdns/pdns/recursordist/qtype.cc:155,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - p
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 159
      start: 142
    functionDepth: 0
    functionLinenumber: 142
    functionLinenumberEnd: 159
    functionName: QType::chartocode
    functionSourceFile: /src/pdns/pdns/recursordist/qtype.cc
    functionUses: 7
    functionsReached:
    - atoi
    - boost::starts_with
    - toUpper
    - static_cast<uint16_t>
    - cend
    - find
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t QType::chartocode(const char *p)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: chartocode
      Src: /src/pdns/pdns/recursordist/qtype.cc:163,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - p
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 165
      start: 161
    functionDepth: 0
    functionLinenumber: 161
    functionLinenumberEnd: 165
    functionName: '&QType::operator=(const char *p)'
    functionSourceFile: /src/pdns/pdns/recursordist/qtype.cc
    functionUses: 0
    functionsReached:
    - chartocode
    linkageType: ''
    returnType: QType
    signature: QType &QType::operator=(const char *p)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: chartocode
      Src: /src/pdns/pdns/recursordist/qtype.cc:169,1
    - Dst: string::c_str
      Src: /src/pdns/pdns/recursordist/qtype.cc:169,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - s
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 171
      start: 167
    functionDepth: 0
    functionLinenumber: 167
    functionLinenumberEnd: 171
    functionName: '&QType::operator=(const string &s)'
    functionSourceFile: /src/pdns/pdns/recursordist/qtype.cc
    functionUses: 0
    functionsReached:
    - string::c_str
    - chartocode
    linkageType: ''
    returnType: QType
    signature: QType &QType::operator=(const string &s)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: find
      Src: /src/pdns/pdns/recursordist/qtype.cc:182,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/qtype.cc:183,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/qtype.cc:184,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - ' code'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 187
      start: 180
    functionDepth: 0
    functionLinenumber: 180
    functionLinenumberEnd: 187
    functionName: QClass::QClass
    functionSourceFile: /src/pdns/pdns/recursordist/qtype.cc
    functionUses: 0
    functionsReached:
    - end
    - find
    - std::runtime_error
    linkageType: ''
    returnType: void
    signature: void QClass::QClass(const std::string& code)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/qtype.cc:201,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 203
      start: 189
    functionDepth: 0
    functionLinenumber: 189
    functionLinenumberEnd: 203
    functionName: QClass::toString
    functionSourceFile: /src/pdns/pdns/recursordist/qtype.cc
    functionUses: 3
    functionsReached:
    - std::to_string
    linkageType: ''
    returnType: std::string
    signature: std::string QClass::toString() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSRecordContent::TypeToNumber
      Src: /src/pdns/pdns/recursordist/test-dnsparser_hh.cc:18,1
    - Dst: DNSRecordContent::TypeToNumber
      Src: /src/pdns/pdns/recursordist/test-dnsparser_hh.cc:19,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-dnsparser_hh.cc:20,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-dnsparser_hh.cc:21,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 22
      start: 14
    functionDepth: 0
    functionLinenumber: 14
    functionLinenumberEnd: 22
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-dnsparser_hh.cc
    functionUses: 0
    functionsReached:
    - DNSRecordContent::TypeToNumber
    - BOOST_CHECK_EQUAL
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_type_lowercase)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: protozero::pbf_builder::add_uint32
      Src: /src/pdns/pdns/recursordist/protozero-helpers.hh:41,1
    - Dst: getPort
      Src: /src/pdns/pdns/recursordist/protozero-helpers.hh:41,1
    - Dst: protozero::pbf_builder::add_bytes
      Src: /src/pdns/pdns/recursordist/protozero-helpers.hh:43,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/recursordist/protozero-helpers.hh:43,1
    - Dst: protozero::pbf_builder::add_bytes
      Src: /src/pdns/pdns/recursordist/protozero-helpers.hh:46,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/recursordist/protozero-helpers.hh:46,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - ' writer'
    - type
    - ' address'
    argTypes:
    - protozero::pbf_builder<T>
    - T
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 36
    functionDepth: 0
    functionLinenumber: 36
    functionLinenumberEnd: 48
    functionName: encodeComboAddress
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-helpers.hh
    functionUses: 16
    functionsReached:
    - protozero::pbf_builder::add_uint32
    - protozero::pbf_builder::add_bytes
    - reinterpret_cast<const char*>
    - getPort
    linkageType: ''
    returnType: void
    signature: void encodeComboAddress(protozero::pbf_builder<T>& writer, T type,
      const ComboAddress& address)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: reset
      Src: /src/pdns/pdns/recursordist/protozero-helpers.hh:53,1
    - Dst: get_message
      Src: /src/pdns/pdns/recursordist/protozero-helpers.hh:54,1
    - Dst: protozero::pbf_message::next
      Src: /src/pdns/pdns/recursordist/protozero-helpers.hh:57,1
    - Dst: setPort
      Src: /src/pdns/pdns/recursordist/protozero-helpers.hh:58,1
    - Dst: protozero::pbf_message::get_uint32
      Src: /src/pdns/pdns/recursordist/protozero-helpers.hh:58,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/protozero-helpers.hh:61,1
    - Dst: protozero::pbf_message::next
      Src: /src/pdns/pdns/recursordist/protozero-helpers.hh:65,1
    - Dst: protozero::pbf_message::get_bytes
      Src: /src/pdns/pdns/recursordist/protozero-helpers.hh:66,1
    - Dst: auto::size
      Src: /src/pdns/pdns/recursordist/protozero-helpers.hh:67,1
    - Dst: auto::size
      Src: /src/pdns/pdns/recursordist/protozero-helpers.hh:68,1
    - Dst: memcpy
      Src: /src/pdns/pdns/recursordist/protozero-helpers.hh:70,1
    - Dst: auto::data
      Src: /src/pdns/pdns/recursordist/protozero-helpers.hh:70,1
    - Dst: auto::size
      Src: /src/pdns/pdns/recursordist/protozero-helpers.hh:70,1
    - Dst: auto::size
      Src: /src/pdns/pdns/recursordist/protozero-helpers.hh:72,1
    - Dst: memcpy
      Src: /src/pdns/pdns/recursordist/protozero-helpers.hh:74,1
    - Dst: auto::data
      Src: /src/pdns/pdns/recursordist/protozero-helpers.hh:74,1
    - Dst: auto::size
      Src: /src/pdns/pdns/recursordist/protozero-helpers.hh:74,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/protozero-helpers.hh:77,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/protozero-helpers.hh:81,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 22
    argCount: 2
    argNames:
    - ' reader'
    - ' address'
    argTypes:
    - protozero::pbf_message<T>
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 51
    functionDepth: 1
    functionLinenumber: 51
    functionLinenumberEnd: 83
    functionName: decodeComboAddress
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-helpers.hh
    functionUses: 0
    functionsReached:
    - memcpy
    - reset
    - setPort
    - protozero::pbf_message::get_uint32
    - std::runtime_error
    - auto::data
    - get_message
    - protozero::pbf_message::next
    - protozero::pbf_message::get_bytes
    - auto::size
    linkageType: ''
    returnType: void
    signature: void decodeComboAddress(protozero::pbf_message<T>& reader, ComboAddress&
      address)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/protozero-helpers.hh:88,1
    - Dst: add_bytes
      Src: /src/pdns/pdns/recursordist/protozero-helpers.hh:89,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/recursordist/protozero-helpers.hh:89,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - ' writer'
    - type
    - ' subnet'
    argTypes:
    - protozero::pbf_builder<T>
    - T
    - Netmask
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 86
    functionDepth: 0
    functionLinenumber: 86
    functionLinenumberEnd: 91
    functionName: encodeNetmask
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-helpers.hh
    functionUses: 8
    functionsReached:
    - empty
    - add_bytes
    - reinterpret_cast<const char*>
    linkageType: ''
    returnType: void
    signature: void encodeNetmask(protozero::pbf_builder<T>& writer, T type, const
      Netmask& subnet)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: get_bytes
      Src: /src/pdns/pdns/recursordist/protozero-helpers.hh:96,1
    - Dst: memcpy
      Src: /src/pdns/pdns/recursordist/protozero-helpers.hh:97,1
    - Dst: auto::data
      Src: /src/pdns/pdns/recursordist/protozero-helpers.hh:97,1
    - Dst: std::min
      Src: /src/pdns/pdns/recursordist/protozero-helpers.hh:97,1
    - Dst: auto::size
      Src: /src/pdns/pdns/recursordist/protozero-helpers.hh:97,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' message'
    - ' subnet'
    argTypes:
    - protozero::pbf_message<T>
    - Netmask
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 94
    functionDepth: 0
    functionLinenumber: 94
    functionLinenumberEnd: 98
    functionName: decodeNetmask
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-helpers.hh
    functionUses: 0
    functionsReached:
    - memcpy
    - get_bytes
    - std::min
    - auto::data
    - auto::size
    linkageType: ''
    returnType: void
    signature: void decodeNetmask(protozero::pbf_message<T>& message, Netmask& subnet)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/tcounters.hh:83,1
    - Dst: auto::d_instances::emplace
      Src: /src/pdns/pdns/recursordist/tcounters.hh:84,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ptr
    argTypes:
    - TLocalCounters<Counters>*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 81
    functionDepth: 0
    functionLinenumber: 81
    functionLinenumberEnd: 85
    functionName: pdns::GlobalCounters::subscribe
    functionSourceFile: /src/pdns/pdns/recursordist/tcounters.hh
    functionUses: 0
    functionsReached:
    - auto::d_instances::emplace
    - lock
    linkageType: ''
    returnType: void
    signature: void subscribe(TLocalCounters<Counters>* ptr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/tcounters.hh:90,1
    - Dst: auto::d_instances::erase
      Src: /src/pdns/pdns/recursordist/tcounters.hh:91,1
    - Dst: auto::d_history::merge
      Src: /src/pdns/pdns/recursordist/tcounters.hh:92,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ptr
    - ' data'
    argTypes:
    - TLocalCounters<Counters>*
    - Counters
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 88
    functionDepth: 0
    functionLinenumber: 88
    functionLinenumberEnd: 93
    functionName: pdns::GlobalCounters::unsubscribe
    functionSourceFile: /src/pdns/pdns/recursordist/tcounters.hh
    functionUses: 0
    functionsReached:
    - auto::d_history::merge
    - auto::d_instances::erase
    - lock
    linkageType: ''
    returnType: void
    signature: void unsubscribe(TLocalCounters<Counters>* ptr, const Counters& data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/tcounters.hh:109,1
    - Dst: Counters
      Src: /src/pdns/pdns/recursordist/tcounters.hh: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: pdns::GlobalCounters::reset
    functionSourceFile: /src/pdns/pdns/recursordist/tcounters.hh
    functionUses: 0
    functionsReached:
    - Counters
    - lock
    linkageType: ''
    returnType: void
    signature: void reset()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: subscribe
      Src: /src/pdns/pdns/recursordist/tcounters.hh:133,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' collector'
    argTypes:
    - GlobalCounters<Counters>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 134
      start: 130
    functionDepth: 0
    functionLinenumber: 130
    functionLinenumberEnd: 134
    functionName: pdns::TLocalCounters::TLocalCounters
    functionSourceFile: /src/pdns/pdns/recursordist/tcounters.hh
    functionUses: 0
    functionsReached:
    - subscribe
    linkageType: ''
    returnType: void
    signature: void TLocalCounters(GlobalCounters<Counters>& collector, timeval interval
      = timeval{0, defaultSnapUpdatePeriodus})
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: unsubscribe
      Src: /src/pdns/pdns/recursordist/tcounters.hh:138,1
    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: ~TLocalCounters()
    functionSourceFile: /src/pdns/pdns/recursordist/tcounters.hh
    functionUses: 0
    functionsReached:
    - unsubscribe
    linkageType: ''
    returnType: void
    signature: void ~TLocalCounters()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 141
      start: 141
    functionDepth: 0
    functionLinenumber: 141
    functionLinenumberEnd: 141
    functionName: pdns::TLocalCounters::TLocalCounters
    functionSourceFile: /src/pdns/pdns/recursordist/tcounters.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void TLocalCounters(const TLocalCounters&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 142
      start: 142
    functionDepth: 0
    functionLinenumber: 142
    functionLinenumberEnd: 142
    functionName: pdns::TLocalCounters::TLocalCounters
    functionSourceFile: /src/pdns/pdns/recursordist/tcounters.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void TLocalCounters(TLocalCounters&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 143
      start: 143
    functionDepth: 0
    functionLinenumber: 143
    functionLinenumberEnd: 143
    functionName: '& operator=(const TLocalCounters&)'
    functionSourceFile: /src/pdns/pdns/recursordist/tcounters.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: TLocalCounters
    signature: TLocalCounters & operator=(const TLocalCounters&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 144
      start: 144
    functionDepth: 0
    functionLinenumber: 144
    functionLinenumberEnd: 144
    functionName: '& operator=(TLocalCounters&&)'
    functionSourceFile: /src/pdns/pdns/recursordist/tcounters.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: TLocalCounters
    signature: TLocalCounters & operator=(TLocalCounters&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::TLocalCounters::at
      Src: /src/pdns/pdns/recursordist/tcounters.hh:149,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - index
    argTypes:
    - Enum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 150
      start: 147
    functionDepth: 0
    functionLinenumber: 147
    functionLinenumberEnd: 150
    functionName: pdns::TLocalCounters::at
    functionSourceFile: /src/pdns/pdns/recursordist/tcounters.hh
    functionUses: 3
    functionsReached:
    - pdns::TLocalCounters::at
    linkageType: ''
    returnType: auto
    signature: auto & at(Enum index)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/tcounters.hh:156,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - index
    argTypes:
    - Enum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 157
      start: 154
    functionDepth: 0
    functionLinenumber: 154
    functionLinenumberEnd: 157
    functionName: pdns::TLocalCounters::snapAt
    functionSourceFile: /src/pdns/pdns/recursordist/tcounters.hh
    functionUses: 0
    functionsReached:
    - lock
    linkageType: ''
    returnType: auto
    signature: auto snapAt(Enum index)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/tcounters.hh:161,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 162
      start: 159
    functionDepth: 0
    functionLinenumber: 159
    functionLinenumberEnd: 162
    functionName: pdns::TLocalCounters::getSnap
    functionSourceFile: /src/pdns/pdns/recursordist/tcounters.hh
    functionUses: 0
    functionsReached:
    - lock
    linkageType: ''
    returnType: Counters
    signature: Counters getSnap()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: timersub
      Src: /src/pdns/pdns/recursordist/tcounters.hh:169,1
    - Dst: timercmp
      Src: /src/pdns/pdns/recursordist/tcounters.hh:171,1
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/tcounters.hh:173,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - ' tv_now'
    argTypes:
    - timeval
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 178
      start: 164
    functionDepth: 0
    functionLinenumber: 164
    functionLinenumberEnd: 178
    functionName: pdns::TLocalCounters::updateSnap
    functionSourceFile: /src/pdns/pdns/recursordist/tcounters.hh
    functionUses: 2
    functionsReached:
    - timersub
    - timercmp
    - lock
    linkageType: ''
    returnType: bool
    signature: bool updateSnap(const timeval& tv_now, bool force = false)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: gettimeofday
      Src: /src/pdns/pdns/recursordist/tcounters.hh:185,1
    - Dst: pdns::TLocalCounters::updateSnap
      Src: /src/pdns/pdns/recursordist/tcounters.hh:187,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 188
      start: 180
    functionDepth: 0
    functionLinenumber: 180
    functionLinenumberEnd: 188
    functionName: pdns::TLocalCounters::updateSnap
    functionSourceFile: /src/pdns/pdns/recursordist/tcounters.hh
    functionUses: 3
    functionsReached:
    - gettimeofday
    - pdns::TLocalCounters::updateSnap
    linkageType: ''
    returnType: bool
    signature: bool updateSnap(bool force = false)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/tcounters.hh:205,1
    - Dst: auto::d_history::at
      Src: /src/pdns/pdns/recursordist/tcounters.hh:206,1
    - Dst: snapAt
      Src: /src/pdns/pdns/recursordist/tcounters.hh:208,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - index
    argTypes:
    - Enum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 211
      start: 203
    functionDepth: 0
    functionLinenumber: 203
    functionLinenumberEnd: 211
    functionName: pdns::GlobalCounters<Counters>::sum
    functionSourceFile: /src/pdns/pdns/recursordist/tcounters.hh
    functionUses: 0
    functionsReached:
    - auto::d_history::at
    - snapAt
    - lock
    linkageType: ''
    returnType: auto
    signature: auto GlobalCounters<Counters>::sum(Enum index)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/tcounters.hh:220,1
    - Dst: auto::d_history::at
      Src: /src/pdns/pdns/recursordist/tcounters.hh:221,1
    - Dst: snapAt
      Src: /src/pdns/pdns/recursordist/tcounters.hh:225,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - index
    argTypes:
    - Enum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 230
      start: 218
    functionDepth: 0
    functionLinenumber: 218
    functionLinenumberEnd: 230
    functionName: pdns::GlobalCounters<Counters>::avg
    functionSourceFile: /src/pdns/pdns/recursordist/tcounters.hh
    functionUses: 0
    functionsReached:
    - auto::d_history::at
    - snapAt
    - lock
    linkageType: ''
    returnType: auto
    signature: auto GlobalCounters<Counters>::avg(Enum index)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/tcounters.hh:239,1
    - Dst: pdns::GlobalCounters<Counters>::max
      Src: /src/pdns/pdns/recursordist/tcounters.hh:242,1
    - Dst: snapAt
      Src: /src/pdns/pdns/recursordist/tcounters.hh:242,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - index
    argTypes:
    - Enum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 245
      start: 237
    functionDepth: 0
    functionLinenumber: 237
    functionLinenumberEnd: 245
    functionName: pdns::GlobalCounters<Counters>::max
    functionSourceFile: /src/pdns/pdns/recursordist/tcounters.hh
    functionUses: 3
    functionsReached:
    - pdns::GlobalCounters<Counters>::max
    - snapAt
    - lock
    linkageType: ''
    returnType: auto
    signature: auto GlobalCounters<Counters>::max(Enum index)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/tcounters.hh:251,1
    - Dst: getSnap
      Src: /src/pdns/pdns/recursordist/tcounters.hh:254,1
    - Dst: Counters::merge
      Src: /src/pdns/pdns/recursordist/tcounters.hh:255,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 258
      start: 249
    functionDepth: 0
    functionLinenumber: 249
    functionLinenumberEnd: 258
    functionName: pdns::GlobalCounters<Counters>::aggregatedSnap
    functionSourceFile: /src/pdns/pdns/recursordist/tcounters.hh
    functionUses: 0
    functionsReached:
    - Counters::merge
    - getSnap
    - lock
    linkageType: ''
    returnType: Counters
    signature: Counters GlobalCounters<Counters>::aggregatedSnap()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/tcounters.hh:83,1
    - Dst: auto::d_instances::emplace
      Src: /src/pdns/pdns/recursordist/tcounters.hh:84,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ptr
    argTypes:
    - TLocalCounters<Counters>*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 81
    functionDepth: 0
    functionLinenumber: 81
    functionLinenumberEnd: 85
    functionName: pdns::GlobalCounters::subscribe
    functionSourceFile: /src/pdns/pdns/recursordist/tcounters.hh
    functionUses: 0
    functionsReached:
    - auto::d_instances::emplace
    - lock
    linkageType: ''
    returnType: void
    signature: void subscribe(TLocalCounters<Counters>* ptr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/tcounters.hh:90,1
    - Dst: auto::d_instances::erase
      Src: /src/pdns/pdns/recursordist/tcounters.hh:91,1
    - Dst: auto::d_history::merge
      Src: /src/pdns/pdns/recursordist/tcounters.hh:92,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ptr
    - ' data'
    argTypes:
    - TLocalCounters<Counters>*
    - Counters
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 88
    functionDepth: 0
    functionLinenumber: 88
    functionLinenumberEnd: 93
    functionName: pdns::GlobalCounters::unsubscribe
    functionSourceFile: /src/pdns/pdns/recursordist/tcounters.hh
    functionUses: 0
    functionsReached:
    - auto::d_history::merge
    - auto::d_instances::erase
    - lock
    linkageType: ''
    returnType: void
    signature: void unsubscribe(TLocalCounters<Counters>* ptr, const Counters& data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/tcounters.hh:109,1
    - Dst: Counters
      Src: /src/pdns/pdns/recursordist/tcounters.hh: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: pdns::GlobalCounters::reset
    functionSourceFile: /src/pdns/pdns/recursordist/tcounters.hh
    functionUses: 0
    functionsReached:
    - Counters
    - lock
    linkageType: ''
    returnType: void
    signature: void reset()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: subscribe
      Src: /src/pdns/pdns/recursordist/tcounters.hh:133,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' collector'
    argTypes:
    - GlobalCounters<Counters>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 134
      start: 130
    functionDepth: 0
    functionLinenumber: 130
    functionLinenumberEnd: 134
    functionName: pdns::TLocalCounters::TLocalCounters
    functionSourceFile: /src/pdns/pdns/recursordist/tcounters.hh
    functionUses: 0
    functionsReached:
    - subscribe
    linkageType: ''
    returnType: void
    signature: void TLocalCounters(GlobalCounters<Counters>& collector, timeval interval
      = timeval{0, defaultSnapUpdatePeriodus})
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: unsubscribe
      Src: /src/pdns/pdns/recursordist/tcounters.hh:138,1
    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: ~TLocalCounters()
    functionSourceFile: /src/pdns/pdns/recursordist/tcounters.hh
    functionUses: 0
    functionsReached:
    - unsubscribe
    linkageType: ''
    returnType: void
    signature: void ~TLocalCounters()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 141
      start: 141
    functionDepth: 0
    functionLinenumber: 141
    functionLinenumberEnd: 141
    functionName: pdns::TLocalCounters::TLocalCounters
    functionSourceFile: /src/pdns/pdns/recursordist/tcounters.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void TLocalCounters(const TLocalCounters&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 142
      start: 142
    functionDepth: 0
    functionLinenumber: 142
    functionLinenumberEnd: 142
    functionName: pdns::TLocalCounters::TLocalCounters
    functionSourceFile: /src/pdns/pdns/recursordist/tcounters.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void TLocalCounters(TLocalCounters&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 143
      start: 143
    functionDepth: 0
    functionLinenumber: 143
    functionLinenumberEnd: 143
    functionName: '& operator=(const TLocalCounters&)'
    functionSourceFile: /src/pdns/pdns/recursordist/tcounters.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: TLocalCounters
    signature: TLocalCounters & operator=(const TLocalCounters&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 144
      start: 144
    functionDepth: 0
    functionLinenumber: 144
    functionLinenumberEnd: 144
    functionName: '& operator=(TLocalCounters&&)'
    functionSourceFile: /src/pdns/pdns/recursordist/tcounters.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: TLocalCounters
    signature: TLocalCounters & operator=(TLocalCounters&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::TLocalCounters::at
      Src: /src/pdns/pdns/recursordist/tcounters.hh:149,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - index
    argTypes:
    - Enum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 150
      start: 147
    functionDepth: 0
    functionLinenumber: 147
    functionLinenumberEnd: 150
    functionName: pdns::TLocalCounters::at
    functionSourceFile: /src/pdns/pdns/recursordist/tcounters.hh
    functionUses: 4
    functionsReached:
    - pdns::TLocalCounters::at
    linkageType: ''
    returnType: auto
    signature: auto & at(Enum index)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/tcounters.hh:156,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - index
    argTypes:
    - Enum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 157
      start: 154
    functionDepth: 0
    functionLinenumber: 154
    functionLinenumberEnd: 157
    functionName: pdns::TLocalCounters::snapAt
    functionSourceFile: /src/pdns/pdns/recursordist/tcounters.hh
    functionUses: 0
    functionsReached:
    - lock
    linkageType: ''
    returnType: auto
    signature: auto snapAt(Enum index)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/tcounters.hh:161,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 162
      start: 159
    functionDepth: 0
    functionLinenumber: 159
    functionLinenumberEnd: 162
    functionName: pdns::TLocalCounters::getSnap
    functionSourceFile: /src/pdns/pdns/recursordist/tcounters.hh
    functionUses: 0
    functionsReached:
    - lock
    linkageType: ''
    returnType: Counters
    signature: Counters getSnap()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: timersub
      Src: /src/pdns/pdns/recursordist/tcounters.hh:169,1
    - Dst: timercmp
      Src: /src/pdns/pdns/recursordist/tcounters.hh:171,1
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/tcounters.hh:173,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - ' tv_now'
    argTypes:
    - timeval
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 178
      start: 164
    functionDepth: 0
    functionLinenumber: 164
    functionLinenumberEnd: 178
    functionName: pdns::TLocalCounters::updateSnap
    functionSourceFile: /src/pdns/pdns/recursordist/tcounters.hh
    functionUses: 3
    functionsReached:
    - timersub
    - timercmp
    - lock
    linkageType: ''
    returnType: bool
    signature: bool updateSnap(const timeval& tv_now, bool force = false)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: gettimeofday
      Src: /src/pdns/pdns/recursordist/tcounters.hh:185,1
    - Dst: pdns::TLocalCounters::updateSnap
      Src: /src/pdns/pdns/recursordist/tcounters.hh:187,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 188
      start: 180
    functionDepth: 0
    functionLinenumber: 180
    functionLinenumberEnd: 188
    functionName: pdns::TLocalCounters::updateSnap
    functionSourceFile: /src/pdns/pdns/recursordist/tcounters.hh
    functionUses: 4
    functionsReached:
    - gettimeofday
    - pdns::TLocalCounters::updateSnap
    linkageType: ''
    returnType: bool
    signature: bool updateSnap(bool force = false)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/tcounters.hh:205,1
    - Dst: auto::d_history::at
      Src: /src/pdns/pdns/recursordist/tcounters.hh:206,1
    - Dst: snapAt
      Src: /src/pdns/pdns/recursordist/tcounters.hh:208,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - index
    argTypes:
    - Enum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 211
      start: 203
    functionDepth: 0
    functionLinenumber: 203
    functionLinenumberEnd: 211
    functionName: pdns::GlobalCounters<Counters>::sum
    functionSourceFile: /src/pdns/pdns/recursordist/tcounters.hh
    functionUses: 0
    functionsReached:
    - auto::d_history::at
    - snapAt
    - lock
    linkageType: ''
    returnType: auto
    signature: auto GlobalCounters<Counters>::sum(Enum index)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/tcounters.hh:220,1
    - Dst: auto::d_history::at
      Src: /src/pdns/pdns/recursordist/tcounters.hh:221,1
    - Dst: snapAt
      Src: /src/pdns/pdns/recursordist/tcounters.hh:225,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - index
    argTypes:
    - Enum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 230
      start: 218
    functionDepth: 0
    functionLinenumber: 218
    functionLinenumberEnd: 230
    functionName: pdns::GlobalCounters<Counters>::avg
    functionSourceFile: /src/pdns/pdns/recursordist/tcounters.hh
    functionUses: 0
    functionsReached:
    - auto::d_history::at
    - snapAt
    - lock
    linkageType: ''
    returnType: auto
    signature: auto GlobalCounters<Counters>::avg(Enum index)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/tcounters.hh:239,1
    - Dst: pdns::GlobalCounters<Counters>::max
      Src: /src/pdns/pdns/recursordist/tcounters.hh:242,1
    - Dst: snapAt
      Src: /src/pdns/pdns/recursordist/tcounters.hh:242,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - index
    argTypes:
    - Enum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 245
      start: 237
    functionDepth: 0
    functionLinenumber: 237
    functionLinenumberEnd: 245
    functionName: pdns::GlobalCounters<Counters>::max
    functionSourceFile: /src/pdns/pdns/recursordist/tcounters.hh
    functionUses: 4
    functionsReached:
    - pdns::GlobalCounters<Counters>::max
    - snapAt
    - lock
    linkageType: ''
    returnType: auto
    signature: auto GlobalCounters<Counters>::max(Enum index)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/tcounters.hh:251,1
    - Dst: getSnap
      Src: /src/pdns/pdns/recursordist/tcounters.hh:254,1
    - Dst: Counters::merge
      Src: /src/pdns/pdns/recursordist/tcounters.hh:255,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 258
      start: 249
    functionDepth: 0
    functionLinenumber: 249
    functionLinenumberEnd: 258
    functionName: pdns::GlobalCounters<Counters>::aggregatedSnap
    functionSourceFile: /src/pdns/pdns/recursordist/tcounters.hh
    functionUses: 0
    functionsReached:
    - Counters::merge
    - getSnap
    - lock
    linkageType: ''
    returnType: Counters
    signature: Counters GlobalCounters<Counters>::aggregatedSnap()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/reczones.cc:41,1
    - Dst: withName
      Src: /src/pdns/pdns/recursordist/reczones.cc:46,1
    - Dst: auto::info
      Src: /src/pdns/pdns/recursordist/reczones.cc:47,1
    - Dst: string::empty
      Src: /src/pdns/pdns/recursordist/reczones.cc:51,1
    - Dst: putDefaultHintsIntoCache
      Src: /src/pdns/pdns/recursordist/reczones.cc:52,1
    - Dst: readHintsIntoCache
      Src: /src/pdns/pdns/recursordist/reczones.cc:55,1
    - Dst: doWipeCache
      Src: /src/pdns/pdns/recursordist/reczones.cc:58,1
    - Dst: replace
      Src: /src/pdns/pdns/recursordist/reczones.cc:59,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/reczones.cc:59,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 1
    argNames:
    - now
    argTypes:
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 39
    functionDepth: 3
    functionLinenumber: 39
    functionLinenumberEnd: 61
    functionName: primeHints
    functionSourceFile: /src/pdns/pdns/recursordist/reczones.cc
    functionUses: 72
    functionsReached:
    - doWipeCache
    - readHintsIntoCache
    - string::empty
    - withName
    - ComboAddress
    - putDefaultHintsIntoCache
    - replace
    - arg
    - auto::info
    linkageType: ''
    returnType: bool
    signature: bool primeHints(time_t now)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: stringtok
      Src: /src/pdns/pdns/recursordist/reczones.cc:66,1
    - Dst: vector::empty
      Src: /src/pdns/pdns/recursordist/reczones.cc:67,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/recursordist/reczones.cc:68,1
    - Dst: d_servers::clear
      Src: /src/pdns/pdns/recursordist/reczones.cc:70,1
    - Dst: pdns::fromNameOrIP
      Src: /src/pdns/pdns/recursordist/reczones.cc:74,1
    - Dst: d_servers::push_back
      Src: /src/pdns/pdns/recursordist/reczones.cc:75,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/recursordist/reczones.cc:77,1
    - Dst: ComboAddress::toStringWithPort
      Src: /src/pdns/pdns/recursordist/reczones.cc:77,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/recursordist/reczones.cc:81,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/reczones.cc:81,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/reczones.cc:81,1
    - Dst: Logging::IterLoggable
      Src: /src/pdns/pdns/recursordist/reczones.cc:81,1
    - Dst: vector::begin
      Src: /src/pdns/pdns/recursordist/reczones.cc:81,1
    - Dst: vector::end
      Src: /src/pdns/pdns/recursordist/reczones.cc:81,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 5
    argNames:
    - ' zone'
    - ' input'
    - ' authDomain'
    - sepa
    - log
    argTypes:
    - std::string
    - std::string
    - SyncRes::AuthDomain
    - char*
    - Logr::log_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 63
    functionDepth: 1
    functionLinenumber: 63
    functionLinenumberEnd: 83
    functionName: convertServersForAD
    functionSourceFile: /src/pdns/pdns/recursordist/reczones.cc
    functionUses: 0
    functionsReached:
    - vector::begin
    - d_servers::push_back
    - pdns::fromNameOrIP
    - stringtok
    - vector::push_back
    - Logr::log_t::info
    - Logging::Loggable
    - PDNSException
    - vector::end
    - vector::empty
    - Logging::IterLoggable
    - d_servers::clear
    - ComboAddress::toStringWithPort
    linkageType: ''
    returnType: void
    signature: void convertServersForAD(const std::string& zone, const std::string&
      input, SyncRes::AuthDomain& authDomain, const char* sepa, Logr::log_t log, bool
      verbose = true)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SyncRes::setDomainMap
      Src: /src/pdns/pdns/recursordist/reczones.cc:87,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/reczones.cc:87,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - newmap
    argTypes:
    - std::shared_ptr<SyncRes::domainmap_t>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 85
    functionDepth: 1
    functionLinenumber: 85
    functionLinenumberEnd: 89
    functionName: pleaseUseNewSDomainsMap
    functionSourceFile: /src/pdns/pdns/recursordist/reczones.cc
    functionUses: 0
    functionsReached:
    - std::move
    - SyncRes::setDomainMap
    linkageType: ''
    returnType: void
    signature: void * pleaseUseNewSDomainsMap(std::shared_ptr<SyncRes::domainmap_t>
      newmap)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: withName
      Src: /src/pdns/pdns/recursordist/reczones.cc:93,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/reczones.cc:95,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/reczones.cc:96,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/reczones.cc:96,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/reczones.cc:97,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/reczones.cc:97,1
    - Dst: cleanSlashes
      Src: /src/pdns/pdns/recursordist/reczones.cc:99,1
    - Dst: auto::info
      Src: /src/pdns/pdns/recursordist/reczones.cc:102,1
    - Dst: pdns::settings::rec::readYamlSettings
      Src: /src/pdns/pdns/recursordist/reczones.cc:109,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/reczones.cc:109,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/recursordist/reczones.cc:113,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/recursordist/reczones.cc:116,1
    - Dst: pdns::settings::rec::setArgsForZoneRelatedSettings
      Src: /src/pdns/pdns/recursordist/reczones.cc:120,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/reczones.cc:127,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/recursordist/reczones.cc:128,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/reczones.cc:130,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/reczones.cc:131,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/reczones.cc:132,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/reczones.cc:133,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/reczones.cc:134,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/reczones.cc:135,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/reczones.cc:136,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/reczones.cc:137,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/reczones.cc:138,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/reczones.cc:139,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/reczones.cc:143,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/reczones.cc:143,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/reczones.cc:146,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/reczones.cc:146,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/recursordist/reczones.cc:147,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/reczones.cc:149,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/reczones.cc:149,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/reczones.cc:150,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/reczones.cc:150,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/reczones.cc:151,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/reczones.cc:151,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/reczones.cc:152,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/reczones.cc:152,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/reczones.cc:153,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/reczones.cc:153,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/reczones.cc:154,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/reczones.cc:154,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/reczones.cc:155,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/reczones.cc:155,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/reczones.cc:156,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/reczones.cc:156,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/reczones.cc:160,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/reczones.cc:161,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/reczones.cc:162,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/reczones.cc:163,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/reczones.cc:164,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/reczones.cc:165,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/reczones.cc:166,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/reczones.cc:167,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/reczones.cc:168,1
    - Dst: parseZoneConfiguration
      Src: /src/pdns/pdns/recursordist/reczones.cc:170,1
    - Dst: std::set::insert
      Src: /src/pdns/pdns/recursordist/reczones.cc:175,1
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/reczones.cc:179,1
    - Dst: std::set::insert
      Src: /src/pdns/pdns/recursordist/reczones.cc:182,1
    - Dst: broadcastFunction
      Src: /src/pdns/pdns/recursordist/reczones.cc:190,1
    - Dst: pleaseUseNewSDomainsMap
      Src: /src/pdns/pdns/recursordist/reczones.cc:190,1
    - Dst: broadcastFunction
      Src: /src/pdns/pdns/recursordist/reczones.cc:191,1
    - Dst: pleaseSupplantAllowNotifyFor
      Src: /src/pdns/pdns/recursordist/reczones.cc:191,1
    - Dst: wipeCaches
      Src: /src/pdns/pdns/recursordist/reczones.cc:197,1
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/reczones.cc:199,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/reczones.cc:199,1
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/reczones.cc:200,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/reczones.cc:200,1
    - Dst: auto::error
      Src: /src/pdns/pdns/recursordist/reczones.cc:204,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/reczones.cc:204,1
    - Dst: auto::error
      Src: /src/pdns/pdns/recursordist/reczones.cc:207,1
    - Dst: auto::error
      Src: /src/pdns/pdns/recursordist/reczones.cc:210,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 84
    argCount: 1
    argNames:
    - yaml
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 213
      start: 91
    functionDepth: 3
    functionLinenumber: 91
    functionLinenumberEnd: 213
    functionName: reloadZoneConfiguration
    functionSourceFile: /src/pdns/pdns/recursordist/reczones.cc
    functionUses: 2
    functionsReached:
    - pdns::settings::rec::setArgsForZoneRelatedSettings
    - broadcastFunction
    - std::move
    - withName
    - what
    - runtime_error
    - cleanSlashes
    - pleaseSupplantAllowNotifyFor
    - pdns::settings::rec::readYamlSettings
    - parseZoneConfiguration
    - lock
    - pleaseUseNewSDomainsMap
    - wipeCaches
    - auto::error
    - std::set::insert
    - empty
    - arg
    - auto::info
    linkageType: ''
    returnType: string
    signature: string reloadZoneConfiguration(bool yaml)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/recursordist/reczones.cc:217,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/reczones.cc:217,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/reczones.cc:217,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/reczones.cc:218,1
    - Dst: ZoneParserTNG::setMaxGenerateSteps
      Src: /src/pdns/pdns/recursordist/reczones.cc:219,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/reczones.cc:219,1
    - Dst: ZoneParserTNG::setMaxIncludes
      Src: /src/pdns/pdns/recursordist/reczones.cc:220,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/reczones.cc:220,1
    - Dst: DNSRecord::DNSRecord
      Src: /src/pdns/pdns/recursordist/reczones.cc:222,1
    - Dst: ZoneParserTNG::get
      Src: /src/pdns/pdns/recursordist/reczones.cc:223,1
    - Dst: DNSRecord
      Src: /src/pdns/pdns/recursordist/reczones.cc:225,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/recursordist/reczones.cc:229,1
    - Dst: DNSResourceRecord::qname::toLogString
      Src: /src/pdns/pdns/recursordist/reczones.cc:229,1
    - Dst: DNSResourceRecord::qtype::toString
      Src: /src/pdns/pdns/recursordist/reczones.cc:229,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/reczones.cc:229,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/recursordist/reczones.cc:232,1
    - Dst: DNSResourceRecord::qname::toLogString
      Src: /src/pdns/pdns/recursordist/reczones.cc:232,1
    - Dst: DNSResourceRecord::qtype::toString
      Src: /src/pdns/pdns/recursordist/reczones.cc:232,1
    - Dst: d_records::insert
      Src: /src/pdns/pdns/recursordist/reczones.cc:235,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 3
    argNames:
    - ' authDomain'
    - ' headers'
    - log
    argTypes:
    - SyncRes::AuthDomain
    - pair<string, string>
    - Logr::log_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 237
      start: 215
    functionDepth: 2
    functionLinenumber: 215
    functionLinenumberEnd: 237
    functionName: readAuthZoneData
    functionSourceFile: /src/pdns/pdns/recursordist/reczones.cc
    functionUses: 0
    functionsReached:
    - ZoneParserTNG::setMaxIncludes
    - ZoneParserTNG::setMaxGenerateSteps
    - Logr::log_t::info
    - Logging::Loggable
    - DNSRecord::DNSRecord
    - PDNSException
    - DNSResourceRecord::qtype::toString
    - what
    - DNSRecord
    - DNSName
    - DNSResourceRecord::qname::toLogString
    - d_records::insert
    - ZoneParserTNG::get
    - arg
    linkageType: ''
    returnType: void
    signature: void readAuthZoneData(SyncRes::AuthDomain& authDomain, const pair<string,
      string>& headers, Logr::log_t log)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: std::array::size
      Src: /src/pdns/pdns/recursordist/reczones.cc:243,1
    - Dst: stringtok
      Src: /src/pdns/pdns/recursordist/reczones.cc:245,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/reczones.cc:245,1
    - Dst: std::array::at
      Src: /src/pdns/pdns/recursordist/reczones.cc:245,1
    - Dst: find
      Src: /src/pdns/pdns/recursordist/reczones.cc:248,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/recursordist/reczones.cc:249,1
    - Dst: splitField
      Src: /src/pdns/pdns/recursordist/reczones.cc:251,1
    - Dst: Utility::trim
      Src: /src/pdns/pdns/recursordist/reczones.cc:252,1
    - Dst: Utility::trim
      Src: /src/pdns/pdns/recursordist/reczones.cc:253,1
    - Dst: readAuthZoneData
      Src: /src/pdns/pdns/recursordist/reczones.cc:257,1
    - Dst: convertServersForAD
      Src: /src/pdns/pdns/recursordist/reczones.cc:261,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/reczones.cc:264,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 2
    argNames:
    - ' newMap'
    - log
    argTypes:
    - shared_ptr<SyncRes::domainmap_t>
    - Logr::log_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 268
      start: 239
    functionDepth: 3
    functionLinenumber: 239
    functionLinenumberEnd: 268
    functionName: processForwardZones
    functionSourceFile: /src/pdns/pdns/recursordist/reczones.cc
    functionUses: 0
    functionsReached:
    - stringtok
    - splitField
    - convertServersForAD
    - PDNSException
    - DNSName
    - Utility::trim
    - readAuthZoneData
    - std::array::at
    - arg
    - std::array::size
    - find
    linkageType: ''
    returnType: void
    signature: void processForwardZones(shared_ptr<SyncRes::domainmap_t>& newMap,
      Logr::log_t log)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/reczones.cc:272,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/reczones.cc:272,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/reczones.cc:275,1
    - Dst: stat
      Src: /src/pdns/pdns/recursordist/reczones.cc:278,1
    - Dst: auto::c_str
      Src: /src/pdns/pdns/recursordist/reczones.cc:278,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/recursordist/reczones.cc:282,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/reczones.cc:282,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/reczones.cc:284,1
    - Dst: pdns::rust::settings::rec::api_read_zones
      Src: /src/pdns/pdns/recursordist/reczones.cc:286,1
    - Dst: std::unique_ptr::validate
      Src: /src/pdns/pdns/recursordist/reczones.cc:287,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/reczones.cc:291,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/reczones.cc:291,1
    - Dst: pdns::fromNameOrIP
      Src: /src/pdns/pdns/recursordist/reczones.cc:294,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/reczones.cc:294,1
    - Dst: SyncRes::AuthDomain::d_servers::emplace_back
      Src: /src/pdns/pdns/recursordist/reczones.cc:295,1
    - Dst: insert
      Src: /src/pdns/pdns/recursordist/reczones.cc:299,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/reczones.cc:304,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/reczones.cc:304,1
    - Dst: readAuthZoneData
      Src: /src/pdns/pdns/recursordist/reczones.cc:305,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/reczones.cc:305,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/reczones.cc:305,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/recursordist/reczones.cc:308,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/reczones.cc:309,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/reczones.cc:310,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/reczones.cc:310,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 23
    argCount: 4
    argNames:
    - ' file'
    - ' newMap'
    - ' newSet'
    - log
    argTypes:
    - string
    - shared_ptr<SyncRes::domainmap_t>
    - shared_ptr<notifyset_t>
    - Logr::log_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 311
      start: 270
    functionDepth: 3
    functionLinenumber: 270
    functionLinenumberEnd: 311
    functionName: processApiZonesFile
    functionSourceFile: /src/pdns/pdns/recursordist/reczones.cc
    functionUses: 0
    functionsReached:
    - std::unique_ptr::validate
    - pdns::fromNameOrIP
    - Logr::log_t::info
    - auto::c_str
    - Logging::Loggable
    - string
    - size
    - DNSName
    - pdns::rust::settings::rec::api_read_zones
    - insert
    - empty
    - readAuthZoneData
    - stat
    - arg
    - SyncRes::AuthDomain::d_servers::emplace_back
    linkageType: ''
    returnType: void
    signature: void processApiZonesFile(const string& file, shared_ptr<SyncRes::domainmap_t>&
      newMap, shared_ptr<notifyset_t>& newSet, Logr::log_t log)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/reczones.cc:315,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/reczones.cc:316,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/reczones.cc:319,1
    - Dst: boost::ends_with
      Src: /src/pdns/pdns/recursordist/reczones.cc:321,1
    - Dst: pdns::settings::rec::readYamlForwardZonesFile
      Src: /src/pdns/pdns/recursordist/reczones.cc:323,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/reczones.cc:326,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/reczones.cc:326,1
    - Dst: pdns::fromNameOrIP
      Src: /src/pdns/pdns/recursordist/reczones.cc:329,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/reczones.cc:329,1
    - Dst: SyncRes::AuthDomain::d_servers::emplace_back
      Src: /src/pdns/pdns/recursordist/reczones.cc:330,1
    - Dst: insert
      Src: /src/pdns/pdns/recursordist/reczones.cc:334,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/recursordist/reczones.cc:339,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/reczones.cc:339,1
    - Dst: pdns::UniqueFilePtr
      Src: /src/pdns/pdns/recursordist/reczones.cc:340,1
    - Dst: fopen
      Src: /src/pdns/pdns/recursordist/reczones.cc:340,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/reczones.cc:340,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/recursordist/reczones.cc:343,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/reczones.cc:343,1
    - Dst: stringfgets
      Src: /src/pdns/pdns/recursordist/reczones.cc:348,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/reczones.cc:348,1
    - Dst: Utility::trim
      Src: /src/pdns/pdns/recursordist/reczones.cc:350,1
    - Dst: std::tie
      Src: /src/pdns/pdns/recursordist/reczones.cc:356,1
    - Dst: splitField
      Src: /src/pdns/pdns/recursordist/reczones.cc:356,1
    - Dst: splitField
      Src: /src/pdns/pdns/recursordist/reczones.cc:357,1
    - Dst: Utility::trim
      Src: /src/pdns/pdns/recursordist/reczones.cc:358,1
    - Dst: Utility::trim
      Src: /src/pdns/pdns/recursordist/reczones.cc:359,1
    - Dst: string::empty
      Src: /src/pdns/pdns/recursordist/reczones.cc:360,1
    - Dst: string::empty
      Src: /src/pdns/pdns/recursordist/reczones.cc:361,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/recursordist/reczones.cc:364,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/reczones.cc:364,1
    - Dst: string::empty
      Src: /src/pdns/pdns/recursordist/reczones.cc:369,1
    - Dst: string::erase
      Src: /src/pdns/pdns/recursordist/reczones.cc:369,1
    - Dst: string::empty
      Src: /src/pdns/pdns/recursordist/reczones.cc:381,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/recursordist/reczones.cc:382,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/reczones.cc:382,1
    - Dst: convertServersForAD
      Src: /src/pdns/pdns/recursordist/reczones.cc:386,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/recursordist/reczones.cc:389,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/reczones.cc:389,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/recursordist/reczones.cc:392,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/reczones.cc:392,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/reczones.cc:395,1
    - Dst: insert
      Src: /src/pdns/pdns/recursordist/reczones.cc:398,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/recursordist/reczones.cc:402,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/reczones.cc:403,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/reczones.cc:404,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/reczones.cc:404,1
    CyclomaticComplexity: 25
    EdgeCount: 25
    ICount: 64
    argCount: 3
    argNames:
    - ' newMap'
    - ' newSet'
    - log
    argTypes:
    - shared_ptr<SyncRes::domainmap_t>
    - shared_ptr<notifyset_t>
    - Logr::log_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 405
      start: 313
    functionDepth: 2
    functionLinenumber: 313
    functionLinenumberEnd: 405
    functionName: processForwardZonesFile
    functionSourceFile: /src/pdns/pdns/recursordist/reczones.cc
    functionUses: 0
    functionsReached:
    - std::to_string
    - pdns::settings::rec::readYamlForwardZonesFile
    - PDNSException
    - stringerror
    - fopen
    - insert
    - pdns::UniqueFilePtr
    - splitField
    - Logr::log_t::info
    - Logging::Loggable
    - string::empty
    - stringfgets
    - convertServersForAD
    - string
    - size
    - std::tie
    - c_str
    - empty
    - boost::ends_with
    - string::erase
    - pdns::fromNameOrIP
    - auto::get
    - DNSName
    - Utility::trim
    - arg
    - SyncRes::AuthDomain::d_servers::emplace_back
    linkageType: ''
    returnType: void
    signature: void processForwardZonesFile(shared_ptr<SyncRes::domainmap_t>& newMap,
      shared_ptr<notifyset_t>& newSet, Logr::log_t log)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/reczones.cc:409,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/reczones.cc:412,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/recursordist/reczones.cc:415,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/reczones.cc:415,1
    - Dst: getline
      Src: /src/pdns/pdns/recursordist/reczones.cc:420,1
    - Dst: parseEtcHostsLine
      Src: /src/pdns/pdns/recursordist/reczones.cc:421,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/reczones.cc:426,1
    - Dst: addForwardAndReverseLookupEntries
      Src: /src/pdns/pdns/recursordist/reczones.cc:427,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/recursordist/reczones.cc:430,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/reczones.cc:431,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/reczones.cc:432,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/reczones.cc:433,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 2
    argNames:
    - ' newMap'
    - log
    argTypes:
    - std::shared_ptr<SyncRes::domainmap_t>
    - Logr::log_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 436
      start: 407
    functionDepth: 4
    functionLinenumber: 407
    functionLinenumberEnd: 436
    functionName: processExportEtcHosts
    functionSourceFile: /src/pdns/pdns/recursordist/reczones.cc
    functionUses: 0
    functionsReached:
    - parseEtcHostsLine
    - Logr::log_t::info
    - Logging::Loggable
    - addForwardAndReverseLookupEntries
    - getline
    - arg
    linkageType: ''
    returnType: void
    signature: void processExportEtcHosts(std::shared_ptr<SyncRes::domainmap_t>& newMap,
      Logr::log_t log)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/reczones.cc:440,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/recursordist/reczones.cc:443,1
    - Dst: makePartialIPZone
      Src: /src/pdns/pdns/recursordist/reczones.cc:445,1
    - Dst: makePartialIPZone
      Src: /src/pdns/pdns/recursordist/reczones.cc:446,1
    - Dst: makePartialIPZone
      Src: /src/pdns/pdns/recursordist/reczones.cc:447,1
    - Dst: makePartialIPZone
      Src: /src/pdns/pdns/recursordist/reczones.cc:450,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/reczones.cc:450,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - ' newMap'
    - log
    argTypes:
    - std::shared_ptr<SyncRes::domainmap_t>
    - Logr::log_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 452
      start: 438
    functionDepth: 3
    functionLinenumber: 438
    functionLinenumberEnd: 452
    functionName: processServeRFC1918
    functionSourceFile: /src/pdns/pdns/recursordist/reczones.cc
    functionUses: 0
    functionsReached:
    - std::to_string
    - makePartialIPZone
    - arg
    - Logr::log_t::info
    linkageType: ''
    returnType: void
    signature: void processServeRFC1918(std::shared_ptr<SyncRes::domainmap_t>& newMap,
      Logr::log_t log)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/reczones.cc:456,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/reczones.cc:459,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/recursordist/reczones.cc:462,1
    - Dst: makePartialIPZone
      Src: /src/pdns/pdns/recursordist/reczones.cc:464,1
    - Dst: makePartialIPZone
      Src: /src/pdns/pdns/recursordist/reczones.cc:466,1
    - Dst: makePartialIPZone
      Src: /src/pdns/pdns/recursordist/reczones.cc:467,1
    - Dst: makePartialIPZone
      Src: /src/pdns/pdns/recursordist/reczones.cc:468,1
    - Dst: makePartialIPZone
      Src: /src/pdns/pdns/recursordist/reczones.cc:469,1
    - Dst: makePartialIPZone
      Src: /src/pdns/pdns/recursordist/reczones.cc:470,1
    - Dst: makePartialIP6Zone
      Src: /src/pdns/pdns/recursordist/reczones.cc:475,1
    - Dst: makePartialIP6Zone
      Src: /src/pdns/pdns/recursordist/reczones.cc:477,1
    - Dst: makePartialIP6Zone
      Src: /src/pdns/pdns/recursordist/reczones.cc:479,1
    - Dst: makePartialIP6Zone
      Src: /src/pdns/pdns/recursordist/reczones.cc:480,1
    - Dst: makePartialIP6Zone
      Src: /src/pdns/pdns/recursordist/reczones.cc:481,1
    - Dst: makePartialIP6Zone
      Src: /src/pdns/pdns/recursordist/reczones.cc:482,1
    - Dst: makePartialIP6Zone
      Src: /src/pdns/pdns/recursordist/reczones.cc:484,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 21
    argCount: 2
    argNames:
    - ' newMap'
    - log
    argTypes:
    - std::shared_ptr<SyncRes::domainmap_t>
    - Logr::log_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 485
      start: 454
    functionDepth: 3
    functionLinenumber: 454
    functionLinenumberEnd: 485
    functionName: processServeRFC6303
    functionSourceFile: /src/pdns/pdns/recursordist/reczones.cc
    functionUses: 0
    functionsReached:
    - makePartialIP6Zone
    - makePartialIPZone
    - arg
    - Logr::log_t::info
    linkageType: ''
    returnType: void
    signature: void processServeRFC6303(std::shared_ptr<SyncRes::domainmap_t>& newMap,
      Logr::log_t log)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: stringtok
      Src: /src/pdns/pdns/recursordist/reczones.cc:490,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/reczones.cc:490,1
    - Dst: insert
      Src: /src/pdns/pdns/recursordist/reczones.cc:492,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/reczones.cc:492,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ' newSet'
    argTypes:
    - shared_ptr<notifyset_t>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 494
      start: 487
    functionDepth: 2
    functionLinenumber: 487
    functionLinenumberEnd: 494
    functionName: processAllowNotifyFor
    functionSourceFile: /src/pdns/pdns/recursordist/reczones.cc
    functionUses: 0
    functionsReached:
    - DNSName
    - stringtok
    - arg
    - insert
    linkageType: ''
    returnType: void
    signature: void processAllowNotifyFor(shared_ptr<notifyset_t>& newSet)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/reczones.cc:498,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/reczones.cc:499,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/reczones.cc:502,1
    - Dst: boost::ends_with
      Src: /src/pdns/pdns/recursordist/reczones.cc:503,1
    - Dst: pdns::settings::rec::readYamlAllowNotifyForFile
      Src: /src/pdns/pdns/recursordist/reczones.cc:505,1
    - Dst: insert
      Src: /src/pdns/pdns/recursordist/reczones.cc:507,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/reczones.cc:507,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/reczones.cc:507,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/recursordist/reczones.cc:511,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/reczones.cc:511,1
    - Dst: pdns::UniqueFilePtr
      Src: /src/pdns/pdns/recursordist/reczones.cc:512,1
    - Dst: fopen
      Src: /src/pdns/pdns/recursordist/reczones.cc:512,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/reczones.cc:512,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/recursordist/reczones.cc:514,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/reczones.cc:514,1
    - Dst: stringfgets
      Src: /src/pdns/pdns/recursordist/reczones.cc:518,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/reczones.cc:518,1
    - Dst: Utility::trim
      Src: /src/pdns/pdns/recursordist/reczones.cc:519,1
    - Dst: insert
      Src: /src/pdns/pdns/recursordist/reczones.cc:523,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/reczones.cc:523,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/recursordist/reczones.cc:526,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/reczones.cc:526,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/reczones.cc:526,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/reczones.cc:526,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 22
    argCount: 2
    argNames:
    - ' newSet'
    - log
    argTypes:
    - shared_ptr<notifyset_t>
    - Logr::log_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 527
      start: 496
    functionDepth: 2
    functionLinenumber: 496
    functionLinenumberEnd: 527
    functionName: processAllowNotifyForFile
    functionSourceFile: /src/pdns/pdns/recursordist/reczones.cc
    functionUses: 0
    functionsReached:
    - Utility::trim
    - auto::get
    - Logr::log_t::info
    - Logging::Loggable
    - c_str
    - PDNSException
    - fopen
    - stringerror
    - string
    - stringfgets
    - size
    - DNSName
    - pdns::settings::rec::readYamlAllowNotifyForFile
    - insert
    - pdns::UniqueFilePtr
    - empty
    - boost::ends_with
    - arg
    linkageType: ''
    returnType: void
    signature: void processAllowNotifyForFile(shared_ptr<notifyset_t>& newSet, Logr::log_t
      log)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: withName
      Src: /src/pdns/pdns/recursordist/reczones.cc:531,1
    - Dst: std::make_shared<SyncRes::domainmap_t>
      Src: /src/pdns/pdns/recursordist/reczones.cc:533,1
    - Dst: std::make_shared<notifyset_t>
      Src: /src/pdns/pdns/recursordist/reczones.cc:534,1
    - Dst: processForwardZones
      Src: /src/pdns/pdns/recursordist/reczones.cc:536,1
    - Dst: processForwardZonesFile
      Src: /src/pdns/pdns/recursordist/reczones.cc:537,1
    - Dst: getLocal
      Src: /src/pdns/pdns/recursordist/reczones.cc:539,1
    - Dst: processApiZonesFile
      Src: /src/pdns/pdns/recursordist/reczones.cc:540,1
    - Dst: processApiZonesFile
      Src: /src/pdns/pdns/recursordist/reczones.cc:542,1
    - Dst: d_catz::getName
      Src: /src/pdns/pdns/recursordist/reczones.cc:542,1
    - Dst: processExportEtcHosts
      Src: /src/pdns/pdns/recursordist/reczones.cc:545,1
    - Dst: processServeRFC1918
      Src: /src/pdns/pdns/recursordist/reczones.cc:546,1
    - Dst: processServeRFC6303
      Src: /src/pdns/pdns/recursordist/reczones.cc:547,1
    - Dst: processAllowNotifyFor
      Src: /src/pdns/pdns/recursordist/reczones.cc:548,1
    - Dst: processAllowNotifyForFile
      Src: /src/pdns/pdns/recursordist/reczones.cc:549,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 1
    argNames:
    - yaml
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 552
      start: 529
    functionDepth: 5
    functionLinenumber: 529
    functionLinenumberEnd: 552
    functionName: parseZoneConfiguration
    functionSourceFile: /src/pdns/pdns/recursordist/reczones.cc
    functionUses: 2
    functionsReached:
    - processForwardZones
    - processApiZonesFile
    - withName
    - processServeRFC6303
    - processForwardZonesFile
    - getLocal
    - processExportEtcHosts
    - processServeRFC1918
    - std::make_shared<SyncRes::domainmap_t>
    - processAllowNotifyForFile
    - std::make_shared<notifyset_t>
    - d_catz::getName
    - processAllowNotifyFor
    linkageType: ''
    returnType: std::tuple<std::shared_ptr<SyncRes::domainmap_t>, std::shared_ptr<notifyset_t>>
    signature: std::tuple<std::shared_ptr<SyncRes::domainmap_t>, std::shared_ptr<notifyset_t>>
      parseZoneConfiguration(bool yaml)
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - keyType
    argTypes:
    - keytype_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 61
    functionDepth: 0
    functionLinenumber: 61
    functionLinenumberEnd: 73
    functionName: DNSSEC::keyTypeToString
    functionSourceFile: /src/pdns/pdns/recursordist/dnssec.hh
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string keyTypeToString(keytype_t keyType)
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: pdns_iequals
      Src: /src/pdns/pdns/recursordist/dnssec.hh:82,1
    - Dst: pdns_iequals
      Src: /src/pdns/pdns/recursordist/dnssec.hh:85,1
    - Dst: pdns_iequals
      Src: /src/pdns/pdns/recursordist/dnssec.hh:88,1
    - Dst: pdns_iequals
      Src: /src/pdns/pdns/recursordist/dnssec.hh:91,1
    - Dst: pdns_iequals
      Src: /src/pdns/pdns/recursordist/dnssec.hh:94,1
    - Dst: pdns_iequals
      Src: /src/pdns/pdns/recursordist/dnssec.hh:97,1
    - Dst: pdns_iequals
      Src: /src/pdns/pdns/recursordist/dnssec.hh:100,1
    - Dst: pdns_iequals
      Src: /src/pdns/pdns/recursordist/dnssec.hh:103,1
    - Dst: pdns_iequals
      Src: /src/pdns/pdns/recursordist/dnssec.hh:106,1
    - Dst: pdns_iequals
      Src: /src/pdns/pdns/recursordist/dnssec.hh:109,1
    - Dst: pdns_iequals
      Src: /src/pdns/pdns/recursordist/dnssec.hh:112,1
    - Dst: pdns_iequals
      Src: /src/pdns/pdns/recursordist/dnssec.hh:115,1
    - Dst: pdns_iequals
      Src: /src/pdns/pdns/recursordist/dnssec.hh:118,1
    - Dst: pdns_iequals
      Src: /src/pdns/pdns/recursordist/dnssec.hh:121,1
    - Dst: pdns_iequals
      Src: /src/pdns/pdns/recursordist/dnssec.hh:124,1
    - Dst: pdns_iequals
      Src: /src/pdns/pdns/recursordist/dnssec.hh:127,1
    - Dst: pdns_iequals
      Src: /src/pdns/pdns/recursordist/dnssec.hh:130,1
    - Dst: pdns_iequals
      Src: /src/pdns/pdns/recursordist/dnssec.hh:133,1
    - Dst: pdns_iequals
      Src: /src/pdns/pdns/recursordist/dnssec.hh:136,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 59
    argCount: 1
    argNames:
    - ' algorithm'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 79
    functionDepth: 0
    functionLinenumber: 79
    functionLinenumberEnd: 140
    functionName: DNSSEC::shorthand2algorithm
    functionSourceFile: /src/pdns/pdns/recursordist/dnssec.hh
    functionUses: 8
    functionsReached:
    - pdns_iequals
    linkageType: ''
    returnType: int
    signature: int shorthand2algorithm(const std::string& algorithm)
  - BBCount: 22
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 42
    argCount: 1
    argNames:
    - algo
    argTypes:
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 188
      start: 145
    functionDepth: 0
    functionLinenumber: 145
    functionLinenumberEnd: 188
    functionName: DNSSEC::algorithm2name
    functionSourceFile: /src/pdns/pdns/recursordist/dnssec.hh
    functionUses: 8
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string algorithm2name(uint8_t algo)
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - alpn
    - client
    argTypes:
    - TLSFrontend::ALPN
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 36
      start: 18
    functionDepth: 0
    functionLinenumber: 18
    functionLinenumberEnd: 36
    functionName: getALPNVector
    functionSourceFile: /src/pdns/pdns/recursordist/tcpiohandler.cc
    functionUses: 8
    functionsReached: []
    linkageType: ''
    returnType: std::vector<std::vector<uint8_t>>
    signature: std::vector<std::vector<uint8_t>> getALPNVector(TLSFrontend::ALPN alpn,
      bool client)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:44,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 41
    functionDepth: 2
    functionLinenumber: 41
    functionLinenumberEnd: 50
    functionName: shouldDoVerboseLogging
    functionSourceFile: /src/pdns/pdns/recursordist/tcpiohandler.cc
    functionUses: 8
    functionsReached:
    - dnsdist::configuration::getCurrentRuntimeConfiguration
    linkageType: ''
    returnType: bool
    signature: bool shouldDoVerboseLogging()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist::configuration::getCurrentRuntimeConfiguration
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:44,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 41
    functionDepth: 2
    functionLinenumber: 41
    functionLinenumberEnd: 50
    functionName: shouldDoVerboseLogging
    functionSourceFile: /src/pdns/pdns/recursordist/tcpiohandler.cc
    functionUses: 8
    functionsReached:
    - dnsdist::configuration::getCurrentRuntimeConfiguration
    linkageType: ''
    returnType: bool
    signature: bool shouldDoVerboseLogging()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: registerOpenSSLUser
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:68,1
    - Dst: libssl_init_server_context
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:70,1
    - Dst: SLOG
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:73,1
    - Dst: warnlog
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:73,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:74,1
    - Dst: warnlog
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:76,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:80,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:82,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:84,1
    - Dst: SSL_CTX_set_tlsext_servername_callback
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:86,1
    - Dst: second::get
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:86,1
    - Dst: ERR_print_errors_fp
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:90,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:91,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:91,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 2
    argNames:
    - ' addr'
    - ' tlsConfig'
    argTypes:
    - ComboAddress
    - TLSConfig
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 66
    functionDepth: 1
    functionLinenumber: 66
    functionLinenumberEnd: 93
    functionName: OpenSSLFrontendContext::OpenSSLFrontendContext
    functionSourceFile: /src/pdns/pdns/recursordist/tcpiohandler.cc
    functionUses: 0
    functionsReached:
    - SSL_CTX_set_tlsext_servername_callback
    - std::move
    - SLOG
    - std::runtime_error
    - libssl_init_server_context
    - second::get
    - warnlog
    - ERR_print_errors_fp
    - registerOpenSSLUser
    - dnsdist::logging::getTopLogger
    - toStringWithPort
    linkageType: ''
    returnType: void
    signature: void OpenSSLFrontendContext(const ComboAddress& addr, const TLSConfig&
      tlsConfig)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: reset
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:97,1
    - Dst: unregisterOpenSSLUser
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:99,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 95
    functionDepth: 0
    functionLinenumber: 95
    functionLinenumberEnd: 100
    functionName: OpenSSLFrontendContext::cleanup
    functionSourceFile: /src/pdns/pdns/recursordist/tcpiohandler.cc
    functionUses: 0
    functionsReached:
    - reset
    - unregisterOpenSSLUser
    linkageType: ''
    returnType: void
    signature: void cleanup()
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: SSL_get_servername
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:112,1
    - Dst: reinterpret_cast<OpenSSLFrontendContext*>
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:117,1
    - Dst: libssl_get_ticket_key_callback_data
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:117,1
    - Dst: std::string_view
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:122,1
    - Dst: auto*::d_sniMap::find
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:124,1
    - Dst: auto*::d_sniMap::end
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:125,1
    - Dst: SSL_set_SSL_CTX
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:133,1
    - Dst: auto::second::get
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:133,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - ssl
    argTypes:
    - SSL*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 135
      start: 110
    functionDepth: 0
    functionLinenumber: 110
    functionLinenumberEnd: 135
    functionName: sni_server_name_callback
    functionSourceFile: /src/pdns/pdns/recursordist/tcpiohandler.cc
    functionUses: 0
    functionsReached:
    - libssl_get_ticket_key_callback_data
    - auto*::d_sniMap::end
    - auto*::d_sniMap::find
    - std::string_view
    - SSL_set_SSL_CTX
    - reinterpret_cast<OpenSSLFrontendContext*>
    - SSL_get_servername
    - auto::second::get
    linkageType: ''
    returnType: int
    signature: int sni_server_name_callback(SSL* ssl, int* /* alert */, void* /* arg
      */)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:140,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 1
    argNames:
    - ' sess'
    argTypes:
    - std::unique_ptr<SSL_SESSION, void(*)(SSL_SESSION*)>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 142
      start: 140
    functionDepth: 0
    functionLinenumber: 140
    functionLinenumberEnd: 142
    functionName: OpenSSLSession::OpenSSLSession
    functionSourceFile: /src/pdns/pdns/recursordist/tcpiohandler.cc
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void OpenSSLSession(std::unique_ptr<SSL_SESSION, void(*)(SSL_SESSION*)>&&
      sess)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:146,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 144
    functionDepth: 0
    functionLinenumber: 144
    functionLinenumberEnd: 147
    functionName: OpenSSLSession::getNative
    functionSourceFile: /src/pdns/pdns/recursordist/tcpiohandler.cc
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: std::unique_ptr<SSL_SESSION, void(*)(SSL_SESSION*)>
    signature: std::unique_ptr<SSL_SESSION, void(*)(SSL_SESSION*)> getNative()
  - BBCount: 25
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:159,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:159,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:164,1
    - Dst: infolog
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:164,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:165,1
    - Dst: shouldDoVerboseLogging
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:166,1
    - Dst: ERR_print_errors_fp
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:167,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:169,1
    - Dst: SSL_set_fd
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:172,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:172,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:173,1
    - Dst: SSL_set_ex_data
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:176,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:176,1
    - Dst: getConnectionIndex
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:176,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:180,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:180,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:180,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:185,1
    - Dst: infolog
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:185,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:186,1
    - Dst: shouldDoVerboseLogging
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:187,1
    - Dst: ERR_print_errors_fp
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:188,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:190,1
    - Dst: SSL_set_fd
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:193,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:193,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:194,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:198,1
    - Dst: SSL_set_tlsext_host_name
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:198,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:198,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:198,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:199,1
    - Dst: SSL_get0_param
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:204,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:204,1
    - Dst: X509_VERIFY_PARAM_set_hostflags
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:206,1
    - Dst: X509_VERIFY_PARAM_set1_ip_asc
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:207,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:207,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:208,1
    - Dst: SSL_set_hostflags
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:216,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:216,1
    - Dst: SSL_set1_host
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:217,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:217,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:217,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:218,1
    - Dst: SSL_get0_param
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:221,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:221,1
    - Dst: X509_VERIFY_PARAM_set_hostflags
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:223,1
    - Dst: X509_VERIFY_PARAM_set1_host
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:224,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:224,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:224,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:225,1
    - Dst: SSL_set_ex_data
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:232,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:232,1
    - Dst: getConnectionIndex
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:232,1
    - Dst: SSL_waiting_for_async
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:239,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:239,1
    - Dst: SSL_get_all_async_fds
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:245,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:245,1
    - Dst: SSL_get_all_async_fds
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:250,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:250,1
    - Dst: std::vector::reserve
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:251,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:253,1
    - Dst: SSL_get_error
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:261,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:261,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:270,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:273,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:273,1
    - Dst: strerror
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:273,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:277,1
    - Dst: if
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:285,1
    - Dst: shouldDoVerboseLogging
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:285,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:286,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:286,1
    - Dst: libssl_get_error_string
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:286,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:288,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:288,1
    - Dst: convertIORequestToIOState
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:295,1
    - Dst: waitForData
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:297,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:299,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:302,1
    - Dst: waitForRWData
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:306,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:308,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:311,1
    CyclomaticComplexity: 46
    EdgeCount: 46
    ICount: 99
    argCount: 2
    argNames:
    - res
    - ' timeout'
    argTypes:
    - int
    - struct timeval
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 314
      start: 155
    functionDepth: 1
    functionLinenumber: 155
    functionLinenumberEnd: 314
    functionName: handleIORequest
    functionSourceFile: /src/pdns/pdns/recursordist/tcpiohandler.cc
    functionUses: 8
    functionsReached:
    - std::to_string
    - std::string
    - std::vector::push_back
    - SSL_get0_param
    - SSL_set_tlsext_host_name
    - ERR_print_errors_fp
    - size
    - X509_VERIFY_PARAM_set1_ip_asc
    - dnsdist::logging::getTopLogger
    - strerror
    - c_str
    - empty
    - SSL_set_fd
    - X509_VERIFY_PARAM_set_hostflags
    - std::runtime_error
    - VERBOSESLOG
    - get
    - std::vector::reserve
    - SSL_set_hostflags
    - SSL_get_error
    - shouldDoVerboseLogging
    - waitForRWData
    - convertIORequestToIOState
    - X509_VERIFY_PARAM_set1_host
    - std::move
    - libssl_get_error_string
    - SSL_set1_host
    - getConnectionIndex
    - SSL_set_ex_data
    - infolog
    - waitForData
    - if
    - SSL_get_all_async_fds
    - SSL_waiting_for_async
    linkageType: ''
    returnType: "class OpenSSLTLSConnection: public TLSConnection\n{\npublic:\n  /*
      server side connection */\n  OpenSSLTLSConnection(int socket, const struct timeval&
      timeout, std::shared_ptr<const OpenSSLTLSIOCtx> tlsCtx, std::unique_ptr<SSL,
      void(*)(SSL*)>&& conn): d_tlsCtx(std::move(tlsCtx)), d_conn(std::move(conn)),
      d_timeout(timeout)\n  {\n    d_socket = socket;\n\n    if (!d_conn) {\n      VERBOSESLOG(infolog(\"Error
      creating TLS object\"),\n                  dnsdist::logging::getTopLogger(\"openssl-server-side\")->info(Logr::Info,
      \"Error creating server-side TLS object\"));\n      if (shouldDoVerboseLogging())
      {\n        ERR_print_errors_fp(stderr);\n      }\n      throw std::runtime_error(\"Error
      creating TLS object\");\n    }\n\n    if (!SSL_set_fd(d_conn.get(), d_socket))
      {\n      throw std::runtime_error(\"Error assigning socket\");\n    }\n\n    SSL_set_ex_data(d_conn.get(),
      getConnectionIndex(), this);\n  }\n\n  /* client-side connection */\n  OpenSSLTLSConnection(std::string
      hostname, bool hostIsAddr, int socket, const struct timeval& timeout, std::shared_ptr<const
      OpenSSLTLSIOCtx> tlsCtx, std::unique_ptr<SSL, void(*)(SSL*)>&& conn): d_tlsCtx(std::move(tlsCtx)),
      d_conn(std::move(conn)), d_hostname(std::move(hostname)), d_timeout(timeout),
      d_isClient(true)\n  {\n    d_socket = socket;\n\n    if (!d_conn) {\n      VERBOSESLOG(infolog(\"Error
      creating TLS object\"),\n                  dnsdist::logging::getTopLogger(\"openssl-client-side\")->info(Logr::Info,
      \"Error creating client-side TLS object\"));\n      if (shouldDoVerboseLogging())
      {\n        ERR_print_errors_fp(stderr);\n      }\n      throw std::runtime_error(\"Error
      creating TLS object\");\n    }\n\n    if (!SSL_set_fd(d_conn.get(), d_socket))
      {\n      throw std::runtime_error(\"Error assigning socket\");\n    }\n\n    /*
      set outgoing Server Name Indication */\n    if (!d_hostname.empty() && SSL_set_tlsext_host_name(d_conn.get(),
      d_hostname.c_str()) != 1) {\n      throw std::runtime_error(\"Error setting
      TLS SNI to \" + d_hostname);\n    }\n\n    if (hostIsAddr) {\n#if (OPENSSL_VERSION_NUMBER
      >= 0x10002000L)\n      X509_VERIFY_PARAM *param = SSL_get0_param(d_conn.get());\n
      \     /* Enable automatic IP checks */\n      X509_VERIFY_PARAM_set_hostflags(param,
      X509_CHECK_FLAG_NO_PARTIAL_WILDCARDS);\n      if (X509_VERIFY_PARAM_set1_ip_asc(param,
      d_hostname.c_str()) != 1) {\n        throw std::runtime_error(\"Error setting
      TLS IP for certificate validation\");\n      }\n#else\n      /* no validation
      for you, see https://wiki.openssl.org/index.php/Hostname_validation */\n#endif\n
      \   }\n    else {\n#if (OPENSSL_VERSION_NUMBER >= 0x1010000fL) && defined(HAVE_SSL_SET_HOSTFLAGS)
      // grrr libressl\n      SSL_set_hostflags(d_conn.get(), X509_CHECK_FLAG_NO_PARTIAL_WILDCARDS);\n
      \     if (SSL_set1_host(d_conn.get(), d_hostname.c_str()) != 1) {\n        throw
      std::runtime_error(\"Error setting TLS hostname for certificate validation\");\n
      \     }\n#elif (OPENSSL_VERSION_NUMBER >= 0x10002000L)\n      X509_VERIFY_PARAM
      *param = SSL_get0_param(d_conn.get());\n      /* Enable automatic hostname checks
      */\n      X509_VERIFY_PARAM_set_hostflags(param, X509_CHECK_FLAG_NO_PARTIAL_WILDCARDS);\n
      \     if (X509_VERIFY_PARAM_set1_host(param, d_hostname.c_str(), d_hostname.size())
      != 1) {\n        throw std::runtime_error(\"Error setting TLS hostname for certificate
      validation\");\n      }\n#else\n      /* no hostname validation for you, see
      https://wiki.openssl.org/index.php/Hostname_validation */\n#endif\n    }\n\n
      \   SSL_set_ex_data(d_conn.get(), getConnectionIndex(), this);\n  }\n\n  std::vector<int>
      getAsyncFDs() override\n  {\n    std::vector<int> results;\n#ifdef SSL_MODE_ASYNC\n
      \   if (SSL_waiting_for_async(d_conn.get()) != 1) {\n      return results;\n
      \   }\n\n    OSSL_ASYNC_FD fds[32];\n    size_t numfds = sizeof(fds)/sizeof(*fds);\n
      \   SSL_get_all_async_fds(d_conn.get(), nullptr, &numfds);\n    if (numfds ==
      0) {\n      return results;\n    }\n\n    SSL_get_all_async_fds(d_conn.get(),
      fds, &numfds);\n    results.reserve(numfds);\n    for (size_t idx = 0; idx <
      numfds; idx++) {\n      results.push_back(fds[idx]);\n    }\n#endif\n    return
      results;\n  }\n\n  IOState convertIORequestToIOState(int res) const\n  {\n    int
      error = SSL_get_error(d_conn.get(), res);\n    if (error == SSL_ERROR_WANT_READ)
      {\n      return IOState::NeedRead;\n    }\n    else if (error == SSL_ERROR_WANT_WRITE)
      {\n      return IOState::NeedWrite;\n    }\n    else if (error == SSL_ERROR_SYSCALL)
      {\n      if (errno == 0) {\n        throw std::runtime_error(\"TLS connection
      closed by remote end\");\n      }\n      else {\n        throw std::runtime_error(\"Syscall
      error while processing TLS connection: \" + std::string(strerror(errno)));\n
      \     }\n    }\n    else if (error == SSL_ERROR_ZERO_RETURN) {\n      throw
      std::runtime_error(\"TLS connection closed by remote end\");\n    }\n#ifdef
      SSL_MODE_ASYNC\n    else if (error == SSL_ERROR_WANT_ASYNC) {\n      return
      IOState::Async;\n    }\n#endif\n    else {\n      if (shouldDoVerboseLogging())
      {\n        throw std::runtime_error(\"Error while processing TLS connection:
      (\" + std::to_string(error) + \") \" + libssl_get_error_string());\n      }
      else {\n        throw std::runtime_error(\"Error while processing TLS connection:
      \" + std::to_string(error));\n      }\n    }"
    signature: "class OpenSSLTLSConnection: public TLSConnection\n{\npublic:\n  /*
      server side connection */\n  OpenSSLTLSConnection(int socket, const struct timeval&
      timeout, std::shared_ptr<const OpenSSLTLSIOCtx> tlsCtx, std::unique_ptr<SSL,
      void(*)(SSL*)>&& conn): d_tlsCtx(std::move(tlsCtx)), d_conn(std::move(conn)),
      d_timeout(timeout)\n  {\n    d_socket = socket;\n\n    if (!d_conn) {\n      VERBOSESLOG(infolog(\"Error
      creating TLS object\"),\n                  dnsdist::logging::getTopLogger(\"openssl-server-side\")->info(Logr::Info,
      \"Error creating server-side TLS object\"));\n      if (shouldDoVerboseLogging())
      {\n        ERR_print_errors_fp(stderr);\n      }\n      throw std::runtime_error(\"Error
      creating TLS object\");\n    }\n\n    if (!SSL_set_fd(d_conn.get(), d_socket))
      {\n      throw std::runtime_error(\"Error assigning socket\");\n    }\n\n    SSL_set_ex_data(d_conn.get(),
      getConnectionIndex(), this);\n  }\n\n  /* client-side connection */\n  OpenSSLTLSConnection(std::string
      hostname, bool hostIsAddr, int socket, const struct timeval& timeout, std::shared_ptr<const
      OpenSSLTLSIOCtx> tlsCtx, std::unique_ptr<SSL, void(*)(SSL*)>&& conn): d_tlsCtx(std::move(tlsCtx)),
      d_conn(std::move(conn)), d_hostname(std::move(hostname)), d_timeout(timeout),
      d_isClient(true)\n  {\n    d_socket = socket;\n\n    if (!d_conn) {\n      VERBOSESLOG(infolog(\"Error
      creating TLS object\"),\n                  dnsdist::logging::getTopLogger(\"openssl-client-side\")->info(Logr::Info,
      \"Error creating client-side TLS object\"));\n      if (shouldDoVerboseLogging())
      {\n        ERR_print_errors_fp(stderr);\n      }\n      throw std::runtime_error(\"Error
      creating TLS object\");\n    }\n\n    if (!SSL_set_fd(d_conn.get(), d_socket))
      {\n      throw std::runtime_error(\"Error assigning socket\");\n    }\n\n    /*
      set outgoing Server Name Indication */\n    if (!d_hostname.empty() && SSL_set_tlsext_host_name(d_conn.get(),
      d_hostname.c_str()) != 1) {\n      throw std::runtime_error(\"Error setting
      TLS SNI to \" + d_hostname);\n    }\n\n    if (hostIsAddr) {\n#if (OPENSSL_VERSION_NUMBER
      >= 0x10002000L)\n      X509_VERIFY_PARAM *param = SSL_get0_param(d_conn.get());\n
      \     /* Enable automatic IP checks */\n      X509_VERIFY_PARAM_set_hostflags(param,
      X509_CHECK_FLAG_NO_PARTIAL_WILDCARDS);\n      if (X509_VERIFY_PARAM_set1_ip_asc(param,
      d_hostname.c_str()) != 1) {\n        throw std::runtime_error(\"Error setting
      TLS IP for certificate validation\");\n      }\n#else\n      /* no validation
      for you, see https://wiki.openssl.org/index.php/Hostname_validation */\n#endif\n
      \   }\n    else {\n#if (OPENSSL_VERSION_NUMBER >= 0x1010000fL) && defined(HAVE_SSL_SET_HOSTFLAGS)
      // grrr libressl\n      SSL_set_hostflags(d_conn.get(), X509_CHECK_FLAG_NO_PARTIAL_WILDCARDS);\n
      \     if (SSL_set1_host(d_conn.get(), d_hostname.c_str()) != 1) {\n        throw
      std::runtime_error(\"Error setting TLS hostname for certificate validation\");\n
      \     }\n#elif (OPENSSL_VERSION_NUMBER >= 0x10002000L)\n      X509_VERIFY_PARAM
      *param = SSL_get0_param(d_conn.get());\n      /* Enable automatic hostname checks
      */\n      X509_VERIFY_PARAM_set_hostflags(param, X509_CHECK_FLAG_NO_PARTIAL_WILDCARDS);\n
      \     if (X509_VERIFY_PARAM_set1_host(param, d_hostname.c_str(), d_hostname.size())
      != 1) {\n        throw std::runtime_error(\"Error setting TLS hostname for certificate
      validation\");\n      }\n#else\n      /* no hostname validation for you, see
      https://wiki.openssl.org/index.php/Hostname_validation */\n#endif\n    }\n\n
      \   SSL_set_ex_data(d_conn.get(), getConnectionIndex(), this);\n  }\n\n  std::vector<int>
      getAsyncFDs() override\n  {\n    std::vector<int> results;\n#ifdef SSL_MODE_ASYNC\n
      \   if (SSL_waiting_for_async(d_conn.get()) != 1) {\n      return results;\n
      \   }\n\n    OSSL_ASYNC_FD fds[32];\n    size_t numfds = sizeof(fds)/sizeof(*fds);\n
      \   SSL_get_all_async_fds(d_conn.get(), nullptr, &numfds);\n    if (numfds ==
      0) {\n      return results;\n    }\n\n    SSL_get_all_async_fds(d_conn.get(),
      fds, &numfds);\n    results.reserve(numfds);\n    for (size_t idx = 0; idx <
      numfds; idx++) {\n      results.push_back(fds[idx]);\n    }\n#endif\n    return
      results;\n  }\n\n  IOState convertIORequestToIOState(int res) const\n  {\n    int
      error = SSL_get_error(d_conn.get(), res);\n    if (error == SSL_ERROR_WANT_READ)
      {\n      return IOState::NeedRead;\n    }\n    else if (error == SSL_ERROR_WANT_WRITE)
      {\n      return IOState::NeedWrite;\n    }\n    else if (error == SSL_ERROR_SYSCALL)
      {\n      if (errno == 0) {\n        throw std::runtime_error(\"TLS connection
      closed by remote end\");\n      }\n      else {\n        throw std::runtime_error(\"Syscall
      error while processing TLS connection: \" + std::string(strerror(errno)));\n
      \     }\n    }\n    else if (error == SSL_ERROR_ZERO_RETURN) {\n      throw
      std::runtime_error(\"TLS connection closed by remote end\");\n    }\n#ifdef
      SSL_MODE_ASYNC\n    else if (error == SSL_ERROR_WANT_ASYNC) {\n      return
      IOState::Async;\n    }\n#endif\n    else {\n      if (shouldDoVerboseLogging())
      {\n        throw std::runtime_error(\"Error while processing TLS connection:
      (\" + std::to_string(error) + \") \" + libssl_get_error_string());\n      }
      else {\n        throw std::runtime_error(\"Error while processing TLS connection:
      \" + std::to_string(error));\n      }\n    } handleIORequest(int res, const
      struct timeval& timeout)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:159,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:159,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:164,1
    - Dst: infolog
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:164,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:165,1
    - Dst: shouldDoVerboseLogging
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:166,1
    - Dst: ERR_print_errors_fp
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:167,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:169,1
    - Dst: SSL_set_fd
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:172,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:172,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:173,1
    - Dst: SSL_set_ex_data
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:176,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:176,1
    - Dst: getConnectionIndex
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:176,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 13
    argCount: 4
    argNames:
    - socket
    - ' timeout'
    - tlsCtx
    - ' conn'
    argTypes:
    - int
    - struct timeval
    - std::shared_ptr<const OpenSSLTLSIOCtx>
    - std::unique_ptr<SSL, void(*)(SSL*)>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 177
      start: 159
    functionDepth: 1
    functionLinenumber: 159
    functionLinenumberEnd: 177
    functionName: OpenSSLTLSConnection::OpenSSLTLSConnection
    functionSourceFile: /src/pdns/pdns/recursordist/tcpiohandler.cc
    functionUses: 0
    functionsReached:
    - std::move
    - SSL_set_fd
    - std::runtime_error
    - getConnectionIndex
    - SSL_set_ex_data
    - ERR_print_errors_fp
    - VERBOSESLOG
    - infolog
    - get
    - shouldDoVerboseLogging
    - dnsdist::logging::getTopLogger
    linkageType: ''
    returnType: void
    signature: void OpenSSLTLSConnection(int socket, const struct timeval& timeout,
      std::shared_ptr<const OpenSSLTLSIOCtx> tlsCtx, std::unique_ptr<SSL, void(*)(SSL*)>&&
      conn)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:180,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:180,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:180,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:185,1
    - Dst: infolog
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:185,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:186,1
    - Dst: shouldDoVerboseLogging
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:187,1
    - Dst: ERR_print_errors_fp
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:188,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:190,1
    - Dst: SSL_set_fd
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:193,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:193,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:194,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:198,1
    - Dst: SSL_set_tlsext_host_name
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:198,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:198,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:198,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:199,1
    - Dst: SSL_get0_param
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:204,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:204,1
    - Dst: X509_VERIFY_PARAM_set_hostflags
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:206,1
    - Dst: X509_VERIFY_PARAM_set1_ip_asc
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:207,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:207,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:208,1
    - Dst: SSL_set_hostflags
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:216,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:216,1
    - Dst: SSL_set1_host
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:217,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:217,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:217,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:218,1
    - Dst: SSL_get0_param
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:221,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:221,1
    - Dst: X509_VERIFY_PARAM_set_hostflags
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:223,1
    - Dst: X509_VERIFY_PARAM_set1_host
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:224,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:224,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:224,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:225,1
    - Dst: SSL_set_ex_data
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:232,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:232,1
    - Dst: getConnectionIndex
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:232,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 31
    argCount: 6
    argNames:
    - hostname
    - hostIsAddr
    - socket
    - ' timeout'
    - tlsCtx
    - ' conn'
    argTypes:
    - std::string
    - bool
    - int
    - struct timeval
    - std::shared_ptr<const OpenSSLTLSIOCtx>
    - std::unique_ptr<SSL, void(*)(SSL*)>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 233
      start: 180
    functionDepth: 1
    functionLinenumber: 180
    functionLinenumberEnd: 233
    functionName: OpenSSLTLSConnection::OpenSSLTLSConnection
    functionSourceFile: /src/pdns/pdns/recursordist/tcpiohandler.cc
    functionUses: 0
    functionsReached:
    - SSL_get0_param
    - SSL_set_tlsext_host_name
    - ERR_print_errors_fp
    - size
    - X509_VERIFY_PARAM_set1_ip_asc
    - dnsdist::logging::getTopLogger
    - c_str
    - empty
    - SSL_set_fd
    - X509_VERIFY_PARAM_set_hostflags
    - std::runtime_error
    - VERBOSESLOG
    - get
    - SSL_set_hostflags
    - shouldDoVerboseLogging
    - X509_VERIFY_PARAM_set1_host
    - std::move
    - SSL_set1_host
    - getConnectionIndex
    - SSL_set_ex_data
    - infolog
    linkageType: ''
    returnType: void
    signature: void OpenSSLTLSConnection(std::string hostname, bool hostIsAddr, int
      socket, const struct timeval& timeout, std::shared_ptr<const OpenSSLTLSIOCtx>
      tlsCtx, std::unique_ptr<SSL, void(*)(SSL*)>&& conn)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: SSL_waiting_for_async
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:239,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:239,1
    - Dst: SSL_get_all_async_fds
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:245,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:245,1
    - Dst: SSL_get_all_async_fds
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:250,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:250,1
    - Dst: std::vector::reserve
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:251,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:253,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 257
      start: 235
    functionDepth: 0
    functionLinenumber: 235
    functionLinenumberEnd: 257
    functionName: OpenSSLTLSConnection::getAsyncFDs
    functionSourceFile: /src/pdns/pdns/recursordist/tcpiohandler.cc
    functionUses: 0
    functionsReached:
    - std::vector::push_back
    - get
    - std::vector::reserve
    - SSL_get_all_async_fds
    - SSL_waiting_for_async
    linkageType: ''
    returnType: std::vector<int>
    signature: std::vector<int> getAsyncFDs() override
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: SSL_get_error
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:261,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:261,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:270,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:273,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:273,1
    - Dst: strerror
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:273,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:277,1
    - Dst: if
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:285,1
    - Dst: shouldDoVerboseLogging
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:285,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:286,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:286,1
    - Dst: libssl_get_error_string
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:286,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 20
    argCount: 1
    argNames:
    - res
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 287
      start: 259
    functionDepth: 0
    functionLinenumber: 259
    functionLinenumberEnd: 287
    functionName: OpenSSLTLSConnection::convertIORequestToIOState
    functionSourceFile: /src/pdns/pdns/recursordist/tcpiohandler.cc
    functionUses: 0
    functionsReached:
    - std::to_string
    - libssl_get_error_string
    - std::runtime_error
    - get
    - if
    - SSL_get_error
    - shouldDoVerboseLogging
    - strerror
    - std::string
    linkageType: ''
    returnType: IOState
    signature: IOState convertIORequestToIOState(int res) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:288,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:288,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 289
      start: 287
    functionDepth: 0
    functionLinenumber: 287
    functionLinenumberEnd: 289
    functionName: ''
    functionSourceFile: /src/pdns/pdns/recursordist/tcpiohandler.cc
    functionUses: 9754
    functionsReached:
    - std::to_string
    - std::runtime_error
    linkageType: ''
    returnType: else
    signature: 'else '
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: SSL_connect
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:322,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:322,1
    - Dst: convertIORequestToIOState
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:327,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:330,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - fastOpen
    - ' remote'
    argTypes:
    - bool
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 331
      start: 316
    functionDepth: 0
    functionLinenumber: 316
    functionLinenumberEnd: 331
    functionName: tryConnect
    functionSourceFile: /src/pdns/pdns/recursordist/tcpiohandler.cc
    functionUses: 6
    functionsReached:
    - convertIORequestToIOState
    - std::runtime_error
    - SSL_connect
    - get
    linkageType: ''
    returnType: IOState
    signature: IOState tryConnect(bool fastOpen, const ComboAddress& remote) override
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: gettimeofday
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:342,1
    - Dst: SSL_connect
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:347,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:347,1
    - Dst: handleIORequest
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:349,1
    - Dst: gettimeofday
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:354,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:357,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 20
    argCount: 3
    argNames:
    - fastOpen
    - ' remote'
    - timeout
    argTypes:
    - bool
    - ComboAddress
    - struct timeval
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 364
      start: 333
    functionDepth: 0
    functionLinenumber: 333
    functionLinenumberEnd: 364
    functionName: connect
    functionSourceFile: /src/pdns/pdns/recursordist/tcpiohandler.cc
    functionUses: 56
    functionsReached:
    - runtime_error
    - get
    - gettimeofday
    - SSL_connect
    - handleIORequest
    linkageType: ''
    returnType: void
    signature: void connect(bool fastOpen, const ComboAddress& remote, const struct
      timeval &timeout) override
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: isClient
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:368,1
    - Dst: SSL_accept
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:383,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:383,1
    - Dst: convertIORequestToIOState
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:388,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:391,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 392
      start: 366
    functionDepth: 0
    functionLinenumber: 366
    functionLinenumberEnd: 392
    functionName: tryHandshake
    functionSourceFile: /src/pdns/pdns/recursordist/tcpiohandler.cc
    functionUses: 8
    functionsReached:
    - convertIORequestToIOState
    - std::runtime_error
    - get
    - isClient
    - SSL_accept
    linkageType: ''
    returnType: IOState
    signature: IOState tryHandshake() override
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: isClient
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:396,1
    - Dst: SSL_accept
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:403,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:403,1
    - Dst: handleIORequest
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:405,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:411,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 413
      start: 394
    functionDepth: 0
    functionLinenumber: 394
    functionLinenumberEnd: 413
    functionName: doHandshake
    functionSourceFile: /src/pdns/pdns/recursordist/tcpiohandler.cc
    functionUses: 0
    functionsReached:
    - std::runtime_error
    - get
    - isClient
    - handleIORequest
    - SSL_accept
    linkageType: ''
    returnType: void
    signature: void doHandshake() override
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: isClient
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:417,1
    - Dst: SSL_set_fd
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:420,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:420,1
    - Dst: SSL_get_fd
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:420,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:420,1
    - Dst: SSL_write
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:425,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:425,1
    - Dst: reinterpret_cast<const char *>
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:425,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:425,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:425,1
    - Dst: convertIORequestToIOState
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:427,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:430,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 3
    argNames:
    - ' buffer'
    - ' pos'
    - toWrite
    argTypes:
    - PacketBuffer
    - size_t
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 440
      start: 415
    functionDepth: 0
    functionLinenumber: 415
    functionLinenumberEnd: 440
    functionName: tryWrite
    functionSourceFile: /src/pdns/pdns/recursordist/tcpiohandler.cc
    functionUses: 10
    functionsReached:
    - convertIORequestToIOState
    - SSL_set_fd
    - static_cast<size_t>
    - get
    - reinterpret_cast<const char *>
    - isClient
    - SSL_write
    - at
    - SSL_get_fd
    - static_cast<int>
    linkageType: ''
    returnType: IOState
    signature: IOState tryWrite(const PacketBuffer& buffer, size_t& pos, size_t toWrite)
      override
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: SSL_read
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:445,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:445,1
    - Dst: reinterpret_cast<char *>
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:445,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:445,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:445,1
    - Dst: convertIORequestToIOState
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:447,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:450,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 4
    argNames:
    - ' buffer'
    - ' pos'
    - toRead
    - allowIncomplete
    argTypes:
    - PacketBuffer
    - size_t
    - size_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 458
      start: 442
    functionDepth: 0
    functionLinenumber: 442
    functionLinenumberEnd: 458
    functionName: tryRead
    functionSourceFile: /src/pdns/pdns/recursordist/tcpiohandler.cc
    functionUses: 8
    functionsReached:
    - convertIORequestToIOState
    - static_cast<size_t>
    - at
    - get
    - reinterpret_cast<char *>
    - SSL_read
    - static_cast<int>
    linkageType: ''
    returnType: IOState
    signature: IOState tryRead(PacketBuffer& buffer, size_t& pos, size_t toRead, bool
      allowIncomplete) override
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: gettimeofday
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:466,1
    - Dst: SSL_read
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:470,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:470,1
    - Dst: reinterpret_cast<char *>
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:470,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:470,1
    - Dst: handleIORequest
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:472,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:475,1
    - Dst: gettimeofday
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:483,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:486,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 23
    argCount: 5
    argNames:
    - buffer
    - bufferSize
    - ' readTimeout'
    - ' totalTimeout'
    - allowIncomplete
    argTypes:
    - void*
    - size_t
    - struct timeval
    - struct timeval
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 495
      start: 460
    functionDepth: 0
    functionLinenumber: 460
    functionLinenumberEnd: 495
    functionName: read
    functionSourceFile: /src/pdns/pdns/recursordist/tcpiohandler.cc
    functionUses: 157
    functionsReached:
    - static_cast<size_t>
    - handleIORequest
    - runtime_error
    - get
    - gettimeofday
    - reinterpret_cast<char *>
    - SSL_read
    - static_cast<int>
    linkageType: ''
    returnType: size_t
    signature: size_t read(void* buffer, size_t bufferSize, const struct timeval&
      readTimeout, const struct timeval& totalTimeout, bool allowIncomplete) override
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SSL_write
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:501,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:501,1
    - Dst: reinterpret_cast<const char *>
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:501,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:501,1
    - Dst: handleIORequest
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:503,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:506,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 3
    argNames:
    - buffer
    - bufferSize
    - ' writeTimeout'
    argTypes:
    - void*
    - size_t
    - struct timeval
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 512
      start: 497
    functionDepth: 0
    functionLinenumber: 497
    functionLinenumberEnd: 512
    functionName: write
    functionSourceFile: /src/pdns/pdns/recursordist/tcpiohandler.cc
    functionUses: 85
    functionsReached:
    - static_cast<size_t>
    - get
    - reinterpret_cast<const char *>
    - SSL_write
    - handleIORequest
    - static_cast<int>
    linkageType: ''
    returnType: size_t
    signature: size_t write(const void* buffer, size_t bufferSize, const struct timeval&
      writeTimeout) override
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: SSL_peek
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:521,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:521,1
    - Dst: convertIORequestToIOState
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:526,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 534
      start: 514
    functionDepth: 0
    functionLinenumber: 514
    functionLinenumberEnd: 534
    functionName: isUsable
    functionSourceFile: /src/pdns/pdns/recursordist/tcpiohandler.cc
    functionUses: 5
    functionsReached:
    - convertIORequestToIOState
    - SSL_peek
    - get
    linkageType: ''
    returnType: bool
    signature: bool isUsable() const override
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SSL_shutdown
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:539,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:539,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 541
      start: 536
    functionDepth: 0
    functionLinenumber: 536
    functionLinenumberEnd: 541
    functionName: close
    functionSourceFile: /src/pdns/pdns/recursordist/tcpiohandler.cc
    functionUses: 143
    functionsReached:
    - SSL_shutdown
    - get
    linkageType: ''
    returnType: void
    signature: void close() override
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: SSL_get_servername
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:546,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:546,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:548,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:551,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 552
      start: 543
    functionDepth: 0
    functionLinenumber: 543
    functionLinenumberEnd: 552
    functionName: getServerNameIndication
    functionSourceFile: /src/pdns/pdns/recursordist/tcpiohandler.cc
    functionUses: 3
    functionsReached:
    - std::string
    - SSL_get_servername
    - get
    linkageType: ''
    returnType: std::string
    signature: std::string getServerNameIndication() const override
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: SSL_get0_alpn_selected
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:565,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:565,1
    - Dst: std::vector::insert
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:569,1
    - Dst: std::vector::end
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:569,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 572
      start: 554
    functionDepth: 2
    functionLinenumber: 554
    functionLinenumberEnd: 572
    functionName: getNextProtocol
    functionSourceFile: /src/pdns/pdns/recursordist/tcpiohandler.cc
    functionUses: 5
    functionsReached:
    - std::vector::end
    - std::vector::insert
    - SSL_get0_alpn_selected
    - get
    linkageType: ''
    returnType: std::vector<uint8_t>
    signature: std::vector<uint8_t> getNextProtocol() const override
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: SSL_get_verify_result
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:577,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:577,1
    - Dst: SSL_get_peer_certificate
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:580,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:580,1
    - Dst: X509_free
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:583,1
    - Dst: X509_verify_cert_error_string
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:589,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 593
      start: 574
    functionDepth: 0
    functionLinenumber: 574
    functionLinenumberEnd: 593
    functionName: getVerifyResult
    functionSourceFile: /src/pdns/pdns/recursordist/tcpiohandler.cc
    functionUses: 2
    functionsReached:
    - X509_verify_cert_error_string
    - X509_free
    - get
    - SSL_get_verify_result
    - SSL_get_peer_certificate
    linkageType: ''
    returnType: std::pair<long, std::string>
    signature: std::pair<long, std::string> getVerifyResult() const override
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: SSL_version
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:597,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:597,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 612
      start: 595
    functionDepth: 0
    functionLinenumber: 595
    functionLinenumberEnd: 612
    functionName: getTLSVersion
    functionSourceFile: /src/pdns/pdns/recursordist/tcpiohandler.cc
    functionUses: 3
    functionsReached:
    - SSL_version
    - get
    linkageType: ''
    returnType: LibsslTLSVersion
    signature: LibsslTLSVersion getTLSVersion() const override
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SSL_session_reused
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:617,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:617,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 620
      start: 614
    functionDepth: 0
    functionLinenumber: 614
    functionLinenumberEnd: 620
    functionName: hasSessionBeenResumed
    functionSourceFile: /src/pdns/pdns/recursordist/tcpiohandler.cc
    functionUses: 2
    functionsReached:
    - SSL_session_reused
    - get
    linkageType: ''
    returnType: bool
    signature: bool hasSessionBeenResumed() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:624,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 625
      start: 622
    functionDepth: 0
    functionLinenumber: 622
    functionLinenumberEnd: 625
    functionName: getSessions
    functionSourceFile: /src/pdns/pdns/recursordist/tcpiohandler.cc
    functionUses: 2
    functionsReached:
    - std::move
    linkageType: ''
    returnType: std::vector<std::unique_ptr<TLSSession>>
    signature: std::vector<std::unique_ptr<TLSSession>> getSessions() override
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dynamic_cast<OpenSSLSession*>
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:629,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:629,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:631,1
    - Dst: auto::getNative
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:634,1
    - Dst: SSL_set_session
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:635,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:635,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:635,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:637,1
    - Dst: libssl_get_error_string
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:637,1
    - Dst: reset
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:639,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 1
    argNames:
    - ' session'
    argTypes:
    - std::unique_ptr<TLSSession>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 640
      start: 627
    functionDepth: 0
    functionLinenumber: 627
    functionLinenumberEnd: 640
    functionName: setSession
    functionSourceFile: /src/pdns/pdns/recursordist/tcpiohandler.cc
    functionUses: 2
    functionsReached:
    - dynamic_cast<OpenSSLSession*>
    - reset
    - auto::get
    - libssl_get_error_string
    - std::runtime_error
    - get
    - SSL_set_session
    - auto::getNative
    linkageType: ''
    returnType: void
    signature: void setSession(std::unique_ptr<TLSSession>& session) override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: push_back
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:644,1
    - Dst: std::make_unique<OpenSSLSession>
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:644,1
    - Dst: std::unique_ptr<SSL_SESSION, void (*)(SSL_SESSION*)>
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:644,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - session
    argTypes:
    - SSL_SESSION*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 645
      start: 642
    functionDepth: 0
    functionLinenumber: 642
    functionLinenumberEnd: 645
    functionName: addNewTicket
    functionSourceFile: /src/pdns/pdns/recursordist/tcpiohandler.cc
    functionUses: 2
    functionsReached:
    - push_back
    - std::unique_ptr<SSL_SESSION, void (*)(SSL_SESSION*)>
    - std::make_unique<OpenSSLSession>
    linkageType: ''
    returnType: void
    signature: void addNewTicket(SSL_SESSION* session)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 650
      start: 647
    functionDepth: 0
    functionLinenumber: 647
    functionLinenumberEnd: 650
    functionName: enableKTLS
    functionSourceFile: /src/pdns/pdns/recursordist/tcpiohandler.cc
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void enableKTLS()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 655
      start: 652
    functionDepth: 0
    functionLinenumber: 652
    functionLinenumberEnd: 655
    functionName: isClient
    functionSourceFile: /src/pdns/pdns/recursordist/tcpiohandler.cc
    functionUses: 9
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool isClient() const
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:659,1
    - Dst: SSL_get_ex_new_index
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:665,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:667,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 671
      start: 657
    functionDepth: 0
    functionLinenumber: 657
    functionLinenumberEnd: 671
    functionName: generateConnectionIndexIfNeeded
    functionSourceFile: /src/pdns/pdns/recursordist/tcpiohandler.cc
    functionUses: 4
    functionsReached:
    - std::runtime_error
    - SSL_get_ex_new_index
    - lock
    linkageType: ''
    returnType: void
    signature: void generateConnectionIndexIfNeeded()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 676
      start: 673
    functionDepth: 0
    functionLinenumber: 673
    functionLinenumberEnd: 676
    functionName: getConnectionIndex
    functionSourceFile: /src/pdns/pdns/recursordist/tcpiohandler.cc
    functionUses: 13
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int getConnectionIndex()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 698
      start: 698
    functionDepth: 0
    functionLinenumber: 698
    functionLinenumberEnd: 698
    functionName: Private
    functionSourceFile: /src/pdns/pdns/recursordist/tcpiohandler.cc
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Private()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<OpenSSLTLSIOCtx>
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:704,1
    - Dst: Private
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:704,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' frontend'
    argTypes:
    - TLSFrontend
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 705
      start: 702
    functionDepth: 0
    functionLinenumber: 702
    functionLinenumberEnd: 705
    functionName: createServerSideContext
    functionSourceFile: /src/pdns/pdns/recursordist/tcpiohandler.cc
    functionUses: 2
    functionsReached:
    - std::make_shared<OpenSSLTLSIOCtx>
    - Private
    linkageType: ''
    returnType: std::shared_ptr<OpenSSLTLSIOCtx>
    signature: std::shared_ptr<OpenSSLTLSIOCtx> createServerSideContext(TLSFrontend&
      frontend)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<OpenSSLTLSIOCtx>
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:709,1
    - Dst: Private
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:709,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' params'
    argTypes:
    - TLSContextParameters
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 710
      start: 707
    functionDepth: 0
    functionLinenumber: 707
    functionLinenumberEnd: 710
    functionName: createClientSideContext
    functionSourceFile: /src/pdns/pdns/recursordist/tcpiohandler.cc
    functionUses: 2
    functionsReached:
    - std::make_shared<OpenSSLTLSIOCtx>
    - Private
    linkageType: ''
    returnType: std::shared_ptr<OpenSSLTLSIOCtx>
    signature: std::shared_ptr<OpenSSLTLSIOCtx> createClientSideContext(const TLSContextParameters&
      params)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: getALPNVector
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:713,1
    - Dst: std::make_unique<OpenSSLFrontendContext>
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:713,1
    - Dst: generateConnectionIndexIfNeeded
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:715,1
    - Dst: second::get
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:720,1
    - Dst: SSL_CTX_set_tlsext_ticket_key_evp_cb
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:724,1
    - Dst: SSL_CTX_set_tlsext_ticket_key_cb
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:726,1
    - Dst: libssl_set_ticket_key_callback_data
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:728,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:728,1
    - Dst: d_ocspResponses::empty
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:732,1
    - Dst: SSL_CTX_set_tlsext_status_cb
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:733,1
    - Dst: SSL_CTX_set_tlsext_status_arg
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:734,1
    - Dst: SSL_CTX_set_read_ahead
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:739,1
    - Dst: libssl_set_error_counters_callback
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:742,1
    - Dst: libssl_set_alpn_select_callback
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:744,1
    - Dst: d_tlsConfig::d_keyLogFile::empty
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:746,1
    - Dst: libssl_set_key_log_file
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:747,1
    - Dst: d_tlsConfig::d_ticketKeyFile::empty
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:752,1
    - Dst: handleTicketsKeyRotation
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:753,1
    - Dst: time
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:753,1
    - Dst: loadTicketsKeys
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:756,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 30
    argCount: 2
    argNames:
    - ' frontend'
    - priv
    argTypes:
    - TLSFrontend
    - Private
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 762
      start: 713
    functionDepth: 1
    functionLinenumber: 713
    functionLinenumberEnd: 762
    functionName: OpenSSLTLSIOCtx
    functionSourceFile: /src/pdns/pdns/recursordist/tcpiohandler.cc
    functionUses: 0
    functionsReached:
    - d_ocspResponses::empty
    - handleTicketsKeyRotation
    - d_tlsConfig::d_ticketKeyFile::empty
    - SSL_CTX_set_tlsext_ticket_key_evp_cb
    - generateConnectionIndexIfNeeded
    - time
    - libssl_set_ticket_key_callback_data
    - SSL_CTX_set_read_ahead
    - SSL_CTX_set_tlsext_status_cb
    - std::make_unique<OpenSSLFrontendContext>
    - libssl_set_alpn_select_callback
    - SSL_CTX_set_tlsext_status_arg
    - getALPNVector
    - second::get
    - get
    - d_tlsConfig::d_keyLogFile::empty
    - libssl_set_error_counters_callback
    - loadTicketsKeys
    - libssl_set_key_log_file
    - SSL_CTX_set_tlsext_ticket_key_cb
    linkageType: ''
    returnType: void
    signature: void OpenSSLTLSIOCtx(TLSFrontend& frontend, [[maybe_unused]] Private
      priv)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: registerOpenSSLUser
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:793,1
    - Dst: generateConnectionIndexIfNeeded
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:795,1
    - Dst: std::shared_ptr<SSL_CTX>
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:798,1
    - Dst: SSL_CTX_new
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:798,1
    - Dst: TLS_client_method
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:798,1
    - Dst: std::shared_ptr<SSL_CTX>
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:800,1
    - Dst: SSL_CTX_new
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:800,1
    - Dst: SSLv23_client_method
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:800,1
    - Dst: ERR_print_errors_fp
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:803,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:804,1
    - Dst: SSL_CTX_set_options
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:807,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:807,1
    - Dst: SSL_CTX_set_ecdh_auto
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:809,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:809,1
    - Dst: d_ciphers::empty
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:812,1
    - Dst: SSL_CTX_set_cipher_list
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:813,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:813,1
    - Dst: d_ciphers::c_str
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:813,1
    - Dst: ERR_print_errors_fp
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:814,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:815,1
    - Dst: d_ciphers13::empty
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:819,1
    - Dst: SSL_CTX_set_ciphersuites
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:820,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:820,1
    - Dst: d_ciphers13::c_str
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:820,1
    - Dst: ERR_print_errors_fp
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:821,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:822,1
    - Dst: d_caStore::empty
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:828,1
    - Dst: SSL_CTX_set_default_verify_paths
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:829,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:829,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:830,1
    - Dst: SSL_CTX_load_verify_locations
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:833,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:833,1
    - Dst: d_caStore::c_str
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:833,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:834,1
    - Dst: SSL_CTX_set_verify
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:838,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:838,1
    - Dst: SLOG
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:841,1
    - Dst: warnlog
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:841,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:842,1
    - Dst: warnlog
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:844,1
    - Dst: SSL_CTX_set_session_cache_mode
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:851,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:851,1
    - Dst: SSL_CTX_sess_set_new_cb
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:852,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:852,1
    - Dst: d_keyLogFile::empty
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:854,1
    - Dst: libssl_set_key_log_file
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:855,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:855,1
    - Dst: libssl_set_alpn_protos
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:858,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:858,1
    - Dst: getALPNVector
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:858,1
    - Dst: d_client_certificate::empty
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:860,1
    - Dst: d_client_certificate_key::empty
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:862,1
    - Dst: d_client_certificate_password::empty
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:866,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:869,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:869,1
    - Dst: libssl_setup_context_no_sni
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:871,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:871,1
    - Dst: SSL_CTX_set_mode
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:876,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:876,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 63
    argCount: 2
    argNames:
    - ' params'
    - priv
    argTypes:
    - TLSContextParameters
    - Private
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 879
      start: 765
    functionDepth: 1
    functionLinenumber: 765
    functionLinenumberEnd: 879
    functionName: OpenSSLTLSIOCtx
    functionSourceFile: /src/pdns/pdns/recursordist/tcpiohandler.cc
    functionUses: 0
    functionsReached:
    - SSL_CTX_set_verify
    - d_client_certificate_key::empty
    - d_client_certificate::empty
    - d_ciphers::empty
    - SLOG
    - generateConnectionIndexIfNeeded
    - SSL_CTX_set_ciphersuites
    - ERR_print_errors_fp
    - warnlog
    - registerOpenSSLUser
    - libssl_set_alpn_protos
    - dnsdist::logging::getTopLogger
    - SSL_CTX_sess_set_new_cb
    - SSL_CTX_set_options
    - SSL_CTX_new
    - SSL_CTX_load_verify_locations
    - SSL_CTX_set_session_cache_mode
    - d_ciphers13::empty
    - SSL_CTX_set_mode
    - SSL_CTX_set_cipher_list
    - d_keyLogFile::empty
    - getALPNVector
    - std::runtime_error
    - TLS_client_method
    - get
    - libssl_setup_context_no_sni
    - d_caStore::empty
    - libssl_set_key_log_file
    - std::move
    - std::shared_ptr<SSL_CTX>
    - d_ciphers13::c_str
    - SSLv23_client_method
    - SSL_CTX_set_ecdh_auto
    - d_client_certificate_password::empty
    - SSL_CTX_set_default_verify_paths
    - d_caStore::c_str
    - d_ciphers::c_str
    linkageType: ''
    returnType: void
    signature: void OpenSSLTLSIOCtx(const TLSContextParameters& params, [[maybe_unused]]
      Private priv)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 881
      start: 881
    functionDepth: 0
    functionLinenumber: 881
    functionLinenumberEnd: 881
    functionName: OpenSSLTLSIOCtx
    functionSourceFile: /src/pdns/pdns/recursordist/tcpiohandler.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void OpenSSLTLSIOCtx(const OpenSSLTLSIOCtx&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 882
      start: 882
    functionDepth: 0
    functionLinenumber: 882
    functionLinenumberEnd: 882
    functionName: OpenSSLTLSIOCtx
    functionSourceFile: /src/pdns/pdns/recursordist/tcpiohandler.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void OpenSSLTLSIOCtx(OpenSSLTLSIOCtx&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 883
      start: 883
    functionDepth: 0
    functionLinenumber: 883
    functionLinenumberEnd: 883
    functionName: '& operator=(const OpenSSLTLSIOCtx&)'
    functionSourceFile: /src/pdns/pdns/recursordist/tcpiohandler.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: OpenSSLTLSIOCtx
    signature: OpenSSLTLSIOCtx & operator=(const OpenSSLTLSIOCtx&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 884
      start: 884
    functionDepth: 0
    functionLinenumber: 884
    functionLinenumberEnd: 884
    functionName: '& operator=(OpenSSLTLSIOCtx&&)'
    functionSourceFile: /src/pdns/pdns/recursordist/tcpiohandler.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: OpenSSLTLSIOCtx
    signature: OpenSSLTLSIOCtx & operator=(OpenSSLTLSIOCtx&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: reset
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:888,1
    - Dst: unregisterOpenSSLUser
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:889,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 890
      start: 886
    functionDepth: 0
    functionLinenumber: 886
    functionLinenumberEnd: 890
    functionName: ~OpenSSLTLSIOCtx() override
    functionSourceFile: /src/pdns/pdns/recursordist/tcpiohandler.cc
    functionUses: 0
    functionsReached:
    - reset
    - unregisterOpenSSLUser
    linkageType: ''
    returnType: void
    signature: void ~OpenSSLTLSIOCtx() override
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: reinterpret_cast<OpenSSLFrontendContext*>
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:898,1
    - Dst: libssl_get_ticket_key_callback_data
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:898,1
    - Dst: libssl_ticket_key_callback
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:903,1
    - Dst: reinterpret_cast<OpenSSLTLSConnection*>
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:906,1
    - Dst: SSL_get_ex_data
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:906,1
    - Dst: getConnectionIndex
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:906,1
    - Dst: auto*::setUnknownTicketKey
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:909,1
    - Dst: auto*::setResumedFromInactiveTicketKey
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:912,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 17
    argCount: 6
    argNames:
    - s
    - keyName
    - iv
    - ectx
    - hctx
    - enc
    argTypes:
    - SSL*
    - unsigned char[]
    - unsigned char*
    - EVP_CIPHER_CTX*
    - HMAC_CTX*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 919
      start: 895
    functionDepth: 0
    functionLinenumber: 895
    functionLinenumberEnd: 919
    functionName: ticketKeyCb
    functionSourceFile: /src/pdns/pdns/recursordist/tcpiohandler.cc
    functionUses: 0
    functionsReached:
    - libssl_get_ticket_key_callback_data
    - reinterpret_cast<OpenSSLTLSConnection*>
    - auto*::setUnknownTicketKey
    - getConnectionIndex
    - SSL_get_ex_data
    - auto*::setResumedFromInactiveTicketKey
    - reinterpret_cast<OpenSSLFrontendContext*>
    - libssl_ticket_key_callback
    linkageType: ''
    returnType: int
    signature: int ticketKeyCb(SSL* s, unsigned char keyName[TLS_TICKETS_KEY_NAME_SIZE],
      unsigned char* iv, EVP_CIPHER_CTX* ectx, HMAC_CTX* hctx, int enc)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: reinterpret_cast<std::map<int, std::string>*>
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:927,1
    - Dst: libssl_ocsp_stapling_callback
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:928,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - ssl
    - arg
    argTypes:
    - SSL*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 929
      start: 922
    functionDepth: 0
    functionLinenumber: 922
    functionLinenumberEnd: 929
    functionName: ocspStaplingCb
    functionSourceFile: /src/pdns/pdns/recursordist/tcpiohandler.cc
    functionUses: 0
    functionsReached:
    - reinterpret_cast<std::map<int, std::string>*>
    - libssl_ocsp_stapling_callback
    linkageType: ''
    returnType: int
    signature: int ocspStaplingCb(SSL* ssl, void* arg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: reinterpret_cast<OpenSSLTLSConnection*>
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:934,1
    - Dst: SSL_get_ex_data
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:934,1
    - Dst: getConnectionIndex
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:934,1
    - Dst: OpenSSLTLSConnection*::addNewTicket
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:940,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - ssl
    - session
    argTypes:
    - SSL*
    - SSL_SESSION*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 947
      start: 932
    functionDepth: 0
    functionLinenumber: 932
    functionLinenumberEnd: 947
    functionName: newTicketFromServerCb
    functionSourceFile: /src/pdns/pdns/recursordist/tcpiohandler.cc
    functionUses: 0
    functionsReached:
    - reinterpret_cast<OpenSSLTLSConnection*>
    - SSL_get_ex_data
    - getConnectionIndex
    - OpenSSLTLSConnection*::addNewTicket
    linkageType: ''
    returnType: int
    signature: int newTicketFromServerCb(SSL* ssl, SSL_SESSION* session)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: d_tlsCtx::get
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:952,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:954,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 955
      start: 949
    functionDepth: 0
    functionLinenumber: 949
    functionLinenumberEnd: 955
    functionName: getOpenSSLContext
    functionSourceFile: /src/pdns/pdns/recursordist/tcpiohandler.cc
    functionUses: 4
    functionsReached:
    - get
    - d_tlsCtx::get
    linkageType: ''
    returnType: SSL_CTX
    signature: SSL_CTX * getOpenSSLContext() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: handleTicketsKeyRotation
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:959,1
    - Dst: std::make_unique<OpenSSLTLSConnection>
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:961,1
    - Dst: shared_from_this
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:961,1
    - Dst: std::unique_ptr<SSL, void(*)(SSL*)>
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:961,1
    - Dst: SSL_new
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:961,1
    - Dst: getOpenSSLContext
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:961,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - socket
    - ' timeout'
    - now
    argTypes:
    - int
    - struct timeval
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 962
      start: 957
    functionDepth: 1
    functionLinenumber: 957
    functionLinenumberEnd: 962
    functionName: getConnection
    functionSourceFile: /src/pdns/pdns/recursordist/tcpiohandler.cc
    functionUses: 8
    functionsReached:
    - handleTicketsKeyRotation
    - SSL_new
    - std::unique_ptr<SSL, void(*)(SSL*)>
    - std::make_unique<OpenSSLTLSConnection>
    - getOpenSSLContext
    - shared_from_this
    linkageType: ''
    returnType: std::unique_ptr<TLSConnection>
    signature: std::unique_ptr<TLSConnection> getConnection(int socket, const struct
      timeval& timeout, time_t now) override
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::make_unique<OpenSSLTLSConnection>
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:966,1
    - Dst: shared_from_this
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:966,1
    - Dst: std::unique_ptr<SSL, void(*)(SSL*)>
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:966,1
    - Dst: SSL_new
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:966,1
    - Dst: getOpenSSLContext
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:966,1
    - Dst: auto::enableKTLS
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:968,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 4
    argNames:
    - ' host'
    - hostIsAddr
    - socket
    - ' timeout'
    argTypes:
    - std::string
    - bool
    - int
    - struct timeval
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 971
      start: 964
    functionDepth: 0
    functionLinenumber: 964
    functionLinenumberEnd: 971
    functionName: getClientConnection
    functionSourceFile: /src/pdns/pdns/recursordist/tcpiohandler.cc
    functionUses: 2
    functionsReached:
    - auto::enableKTLS
    - SSL_new
    - std::unique_ptr<SSL, void(*)(SSL*)>
    - std::make_unique<OpenSSLTLSConnection>
    - getOpenSSLContext
    - shared_from_this
    linkageType: ''
    returnType: std::unique_ptr<TLSConnection>
    signature: std::unique_ptr<TLSConnection> getClientConnection(const std::string&
      host, bool hostIsAddr, int socket, const struct timeval& timeout) override
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: d_ticketKeys::rotateTicketsKey
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:975,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - now
    argTypes:
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 980
      start: 973
    functionDepth: 0
    functionLinenumber: 973
    functionLinenumberEnd: 980
    functionName: rotateTicketsKey
    functionSourceFile: /src/pdns/pdns/recursordist/tcpiohandler.cc
    functionUses: 9
    functionsReached:
    - d_ticketKeys::rotateTicketsKey
    linkageType: ''
    returnType: void
    signature: void rotateTicketsKey(time_t now) override
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: d_ticketKeys::loadTicketsKeys
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:984,1
    - Dst: time
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:987,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ' keyFile'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 989
      start: 982
    functionDepth: 0
    functionLinenumber: 982
    functionLinenumberEnd: 989
    functionName: loadTicketsKeys
    functionSourceFile: /src/pdns/pdns/recursordist/tcpiohandler.cc
    functionUses: 12
    functionsReached:
    - time
    - d_ticketKeys::loadTicketsKeys
    linkageType: ''
    returnType: void
    signature: void loadTicketsKeys(const std::string& keyFile) final
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: d_ticketKeys::loadTicketsKey
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:993,1
    - Dst: time
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:996,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ' key'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 998
      start: 991
    functionDepth: 0
    functionLinenumber: 991
    functionLinenumberEnd: 998
    functionName: loadTicketsKey
    functionSourceFile: /src/pdns/pdns/recursordist/tcpiohandler.cc
    functionUses: 7
    functionsReached:
    - time
    - d_ticketKeys::loadTicketsKey
    linkageType: ''
    returnType: void
    signature: void loadTicketsKey(const std::string& key) final
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: d_ticketKeys::getKeysCount
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1002,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1003
      start: 1000
    functionDepth: 0
    functionLinenumber: 1000
    functionLinenumberEnd: 1003
    functionName: getTicketsKeysCount
    functionSourceFile: /src/pdns/pdns/recursordist/tcpiohandler.cc
    functionUses: 4
    functionsReached:
    - d_ticketKeys::getKeysCount
    linkageType: ''
    returnType: size_t
    signature: size_t getTicketsKeysCount() override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1008
      start: 1005
    functionDepth: 0
    functionLinenumber: 1005
    functionLinenumberEnd: 1008
    functionName: getName
    functionSourceFile: /src/pdns/pdns/recursordist/tcpiohandler.cc
    functionUses: 172
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string getName() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1013
      start: 1010
    functionDepth: 0
    functionLinenumber: 1010
    functionLinenumberEnd: 1013
    functionName: isServerContext
    functionSourceFile: /src/pdns/pdns/recursordist/tcpiohandler.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool isServerContext() const
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: reinterpret_cast<OpenSSLTLSIOCtx*>
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1023,1
    - Dst: pdns::views::UnsignedCharView::size
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1029,1
    - Dst: pdns::views::UnsignedCharView::at
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1030,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1037,1
    - Dst: memcmp
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1037,1
    - Dst: pdns::views::UnsignedCharView::at
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1037,1
    - Dst: data
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1037,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1037,1
    - Dst: pdns::views::UnsignedCharView::at
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1038,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 5
    argNames:
    - out
    - outlen
    - in
    - inlen
    - arg
    argTypes:
    - unsigned char**
    - unsigned char*
    - unsigned char*
    - unsigned int
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1047
      start: 1017
    functionDepth: 0
    functionLinenumber: 1017
    functionLinenumberEnd: 1047
    functionName: alpnServerSelectCallback
    functionSourceFile: /src/pdns/pdns/recursordist/tcpiohandler.cc
    functionUses: 0
    functionsReached:
    - memcmp
    - pdns::views::UnsignedCharView::at
    - size
    - pdns::views::UnsignedCharView::size
    - reinterpret_cast<OpenSSLTLSIOCtx*>
    - data
    linkageType: ''
    returnType: int
    signature: int alpnServerSelectCallback(SSL*, const unsigned char** out, unsigned
      char* outlen, const unsigned char* in, unsigned int inlen, void* arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sodium_mlock
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1066,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - data
    - size
    argTypes:
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1068
      start: 1063
    functionDepth: 0
    functionLinenumber: 1063
    functionLinenumberEnd: 1068
    functionName: safe_memory_lock
    functionSourceFile: /src/pdns/pdns/recursordist/tcpiohandler.cc
    functionUses: 8
    functionsReached:
    - sodium_mlock
    linkageType: ''
    returnType: void
    signature: void safe_memory_lock([[maybe_unused]] void* data, [[maybe_unused]]
      size_t size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sodium_munlock
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1073,1
    - Dst: SensitiveData::reallyClearContent
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1075,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - data
    - size
    argTypes:
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1077
      start: 1070
    functionDepth: 0
    functionLinenumber: 1070
    functionLinenumberEnd: 1077
    functionName: safe_memory_release
    functionSourceFile: /src/pdns/pdns/recursordist/tcpiohandler.cc
    functionUses: 10
    functionsReached:
    - SensitiveData::reallyClearContent
    - sodium_munlock
    linkageType: ''
    returnType: void
    signature: void safe_memory_release(void* data, size_t size)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: gnutls_session_ticket_key_generate
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1084,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1085,1
    - Dst: safe_memory_lock
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1088,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1089
      start: 1082
    functionDepth: 0
    functionLinenumber: 1082
    functionLinenumberEnd: 1089
    functionName: GnuTLSTicketsKey::GnuTLSTicketsKey
    functionSourceFile: /src/pdns/pdns/recursordist/tcpiohandler.cc
    functionUses: 0
    functionsReached:
    - gnutls_session_ticket_key_generate
    - safe_memory_lock
    - std::runtime_error
    linkageType: ''
    returnType: void
    signature: void GnuTLSTicketsKey()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: gnutls_session_ticket_key_generate
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1095,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1096,1
    - Dst: safe_memory_lock
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1099,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1100,1
    - Dst: safe_memory_release
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1101,1
    - Dst: gnutls_free
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1102,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1104,1
    - Dst: memcpy
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1106,1
    - Dst: data
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1106,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1106,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 1
    argNames:
    - ' key'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1107
      start: 1091
    functionDepth: 0
    functionLinenumber: 1091
    functionLinenumberEnd: 1107
    functionName: GnuTLSTicketsKey::GnuTLSTicketsKey
    functionSourceFile: /src/pdns/pdns/recursordist/tcpiohandler.cc
    functionUses: 0
    functionsReached:
    - memcpy
    - safe_memory_release
    - std::runtime_error
    - size
    - safe_memory_lock
    - data
    - gnutls_session_ticket_key_generate
    - gnutls_free
    linkageType: ''
    returnType: void
    signature: void GnuTLSTicketsKey(const std::string& key)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: gnutls_session_ticket_key_generate
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1112,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1113,1
    - Dst: safe_memory_lock
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1116,1
    - Dst: read
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1119,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1119,1
    - Dst: fail
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1121,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1122,1
    - Dst: safe_memory_release
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1127,1
    - Dst: gnutls_free
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1128,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 16
    argCount: 1
    argNames:
    - ' file'
    argTypes:
    - std::ifstream
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1132
      start: 1108
    functionDepth: 0
    functionLinenumber: 1108
    functionLinenumberEnd: 1132
    functionName: GnuTLSTicketsKey::GnuTLSTicketsKey
    functionSourceFile: /src/pdns/pdns/recursordist/tcpiohandler.cc
    functionUses: 0
    functionsReached:
    - reinterpret_cast<char*>
    - safe_memory_release
    - read
    - std::runtime_error
    - fail
    - safe_memory_lock
    - gnutls_session_ticket_key_generate
    - gnutls_free
    linkageType: ''
    returnType: void
    signature: void GnuTLSTicketsKey(std::ifstream& file)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::string::append
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1138,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1138,1
    - Dst: safe_memory_lock
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1139,1
    - Dst: std::string::data
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1139,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1139,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1142
      start: 1133
    functionDepth: 0
    functionLinenumber: 1133
    functionLinenumberEnd: 1142
    functionName: GnuTLSTicketsKey::content
    functionSourceFile: /src/pdns/pdns/recursordist/tcpiohandler.cc
    functionUses: 0
    functionsReached:
    - std::string::append
    - std::string::data
    - safe_memory_lock
    - reinterpret_cast<const char*>
    - std::string::size
    linkageType: ''
    returnType: std::string
    signature: std::string content() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: safe_memory_release
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1147,1
    - Dst: gnutls_free
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1149,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1151
      start: 1144
    functionDepth: 0
    functionLinenumber: 1144
    functionLinenumberEnd: 1151
    functionName: ~GnuTLSTicketsKey()
    functionSourceFile: /src/pdns/pdns/recursordist/tcpiohandler.cc
    functionUses: 0
    functionsReached:
    - safe_memory_release
    - gnutls_free
    linkageType: ''
    returnType: void
    signature: void ~GnuTLSTicketsKey()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1155
      start: 1152
    functionDepth: 0
    functionLinenumber: 1152
    functionLinenumberEnd: 1155
    functionName: '& getKey() const'
    functionSourceFile: /src/pdns/pdns/recursordist/tcpiohandler.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: gnutls_datum_t
    signature: gnutls_datum_t & getKey() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ' sess'
    argTypes:
    - gnutls_datum_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1168
      start: 1164
    functionDepth: 0
    functionLinenumber: 1164
    functionLinenumberEnd: 1168
    functionName: GnuTLSSession::GnuTLSSession
    functionSourceFile: /src/pdns/pdns/recursordist/tcpiohandler.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void GnuTLSSession(gnutls_datum_t& sess)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: safe_memory_release
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1173,1
    - Dst: gnutls_free
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1175,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1177
      start: 1170
    functionDepth: 0
    functionLinenumber: 1170
    functionLinenumberEnd: 1177
    functionName: ~GnuTLSSession() override
    functionSourceFile: /src/pdns/pdns/recursordist/tcpiohandler.cc
    functionUses: 0
    functionsReached:
    - safe_memory_release
    - gnutls_free
    linkageType: ''
    returnType: void
    signature: void ~GnuTLSSession() override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1182
      start: 1179
    functionDepth: 0
    functionLinenumber: 1179
    functionLinenumberEnd: 1182
    functionName: '& getNative()'
    functionSourceFile: /src/pdns/pdns/recursordist/tcpiohandler.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: gnutls_datum_t
    signature: gnutls_datum_t & getNative()
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: std::unique_ptr<gnutls_session_int, void(*)(gnutls_session_t)>
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1192,1
    - Dst: gnutls_init
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1202,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1203,1
    - Dst: std::unique_ptr<gnutls_session_int, void(*)(gnutls_session_t)>
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1206,1
    - Dst: gnutls_credentials_set
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1209,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1209,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1209,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1210,1
    - Dst: gnutls_priority_set
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1213,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1213,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1214,1
    - Dst: getKey
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1218,1
    - Dst: gnutls_session_ticket_enable_server
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1219,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1219,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1220,1
    - Dst: gnutls_transport_set_int
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1224,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1224,1
    - Dst: gnutls_handshake_set_timeout
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1227,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1227,1
    - Dst: gnutls_record_set_timeout
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1228,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1228,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 22
    argCount: 6
    argNames:
    - socket
    - ' timeout'
    - ' creds'
    - priorityCache
    - ' ticketsKey'
    - enableTickets
    argTypes:
    - int
    - struct timeval
    - std::shared_ptr<gnutls_certificate_credentials_st>
    - gnutls_priority_t
    - std::shared_ptr<GnuTLSTicketsKey>
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1229
      start: 1192
    functionDepth: 0
    functionLinenumber: 1192
    functionLinenumberEnd: 1229
    functionName: GnuTLSConnection
    functionSourceFile: /src/pdns/pdns/recursordist/tcpiohandler.cc
    functionUses: 0
    functionsReached:
    - gnutls_handshake_set_timeout
    - std::runtime_error
    - gnutls_transport_set_int
    - gnutls_credentials_set
    - gnutls_record_set_timeout
    - get
    - getKey
    - gnutls_session_ticket_enable_server
    - gnutls_init
    - std::unique_ptr<gnutls_session_int, void(*)(gnutls_session_t)>
    - gnutls_priority_set
    linkageType: ''
    returnType: void
    signature: void GnuTLSConnection(int socket, const struct timeval& timeout, std::shared_ptr<gnutls_certificate_credentials_st>&
      creds, const gnutls_priority_t priorityCache, std::shared_ptr<GnuTLSTicketsKey>&
      ticketsKey, bool enableTickets)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: std::unique_ptr<gnutls_session_int, void(*)(gnutls_session_t)>
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1232,1
    - Dst: gnutls_init
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1242,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1243,1
    - Dst: std::unique_ptr<gnutls_session_int, void(*)(gnutls_session_t)>
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1246,1
    - Dst: gnutls_credentials_set
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1249,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1249,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1249,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1251,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1251,1
    - Dst: gnutls_strerror
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1251,1
    - Dst: gnutls_priority_set
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1254,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1254,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1256,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1256,1
    - Dst: gnutls_strerror
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1256,1
    - Dst: gnutls_transport_set_int
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1259,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1259,1
    - Dst: gnutls_handshake_set_timeout
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1262,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1262,1
    - Dst: gnutls_record_set_timeout
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1263,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1263,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1266,1
    - Dst: gnutls_session_set_verify_cert
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1267,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1267,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1267,1
    - Dst: gnutls_server_name_set
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1268,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1268,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1268,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1268,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1270,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1270,1
    - Dst: gnutls_strerror
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1270,1
    - Dst: gnutls_session_set_ptr
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1278,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1278,1
    - Dst: gnutls_handshake_set_hook_function
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1279,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1279,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 27
    argCount: 6
    argNames:
    - ' host'
    - socket
    - ' timeout'
    - ' creds'
    - priorityCache
    - validateCerts
    argTypes:
    - std::string
    - int
    - struct timeval
    - std::shared_ptr<gnutls_certificate_credentials_st>
    - gnutls_priority_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1280
      start: 1232
    functionDepth: 0
    functionLinenumber: 1232
    functionLinenumberEnd: 1280
    functionName: GnuTLSConnection
    functionSourceFile: /src/pdns/pdns/recursordist/tcpiohandler.cc
    functionUses: 0
    functionsReached:
    - gnutls_session_set_verify_cert
    - gnutls_handshake_set_timeout
    - gnutls_session_set_ptr
    - gnutls_server_name_set
    - c_str
    - std::runtime_error
    - gnutls_transport_set_int
    - gnutls_credentials_set
    - gnutls_record_set_timeout
    - size
    - get
    - gnutls_strerror
    - gnutls_handshake_set_hook_function
    - empty
    - std::string
    - gnutls_init
    - std::unique_ptr<gnutls_session_int, void(*)(gnutls_session_t)>
    - gnutls_priority_set
    linkageType: ''
    returnType: void
    signature: void GnuTLSConnection(const std::string& host, int socket, const struct
      timeval& timeout, std::shared_ptr<gnutls_certificate_credentials_st>& creds,
      const gnutls_priority_t priorityCache, bool validateCerts)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: reinterpret_cast<GnuTLSConnection*>
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1294,1
    - Dst: gnutls_session_get_ptr
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1294,1
    - Dst: gnutls_session_get_data2
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1300,1
    - Dst: gnutls_free
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1304,1
    - Dst: auto*::d_tlsSessions::push_back
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1308,1
    - Dst: std::make_unique<GnuTLSSession>
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1308,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 15
    argCount: 3
    argNames:
    - session
    - htype
    - post
    argTypes:
    - gnutls_session_t
    - unsigned int
    - unsigned
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1310
      start: 1286
    functionDepth: 0
    functionLinenumber: 1286
    functionLinenumberEnd: 1310
    functionName: newTicketFromServerCb
    functionSourceFile: /src/pdns/pdns/recursordist/tcpiohandler.cc
    functionUses: 0
    functionsReached:
    - reinterpret_cast<GnuTLSConnection*>
    - auto*::d_tlsSessions::push_back
    - gnutls_session_get_ptr
    - gnutls_session_get_data2
    - std::make_unique<GnuTLSSession>
    - gnutls_free
    linkageType: ''
    returnType: int
    signature: int newTicketFromServerCb(gnutls_session_t session, unsigned int htype,
      unsigned post, unsigned int /* incoming */)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: gnutls_transport_set_fastopen
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1318,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1318,1
    - Dst: const_cast<struct sockaddr*>
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1318,1
    - Dst: reinterpret_cast<const struct sockaddr*>
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1318,1
    - Dst: getSocklen
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1318,1
    - Dst: gnutls_handshake
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1323,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1323,1
    - Dst: gnutls_record_get_direction
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1329,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1329,1
    - Dst: gnutls_error_is_fatal
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1332,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1333,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1333,1
    - Dst: gnutls_strerror
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1333,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1337,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1337,1
    - Dst: gnutls_strerror
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1337,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 18
    argCount: 2
    argNames:
    - fastOpen
    - ' remote'
    argTypes:
    - bool
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1338
      start: 1312
    functionDepth: 0
    functionLinenumber: 1312
    functionLinenumberEnd: 1338
    functionName: tryConnect
    functionSourceFile: /src/pdns/pdns/recursordist/tcpiohandler.cc
    functionUses: 6
    functionsReached:
    - std::runtime_error
    - gnutls_handshake
    - gnutls_record_get_direction
    - const_cast<struct sockaddr*>
    - get
    - gnutls_transport_set_fastopen
    - reinterpret_cast<const struct sockaddr*>
    - gnutls_strerror
    - std::string
    - getSocklen
    - gnutls_error_is_fatal
    linkageType: ''
    returnType: IOState
    signature: IOState tryConnect(bool fastOpen, [[maybe_unused]] const ComboAddress&
      remote) override
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: gettimeofday
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1345,1
    - Dst: tryConnect
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1350,1
    - Dst: waitForData
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1355,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1357,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1357,1
    - Dst: waitForRWData
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1361,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1363,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1363,1
    - Dst: gettimeofday
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1369,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1372,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 28
    argCount: 3
    argNames:
    - fastOpen
    - ' remote'
    - ' timeout'
    argTypes:
    - bool
    - ComboAddress
    - struct timeval
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1379
      start: 1340
    functionDepth: 0
    functionLinenumber: 1340
    functionLinenumberEnd: 1379
    functionName: connect
    functionSourceFile: /src/pdns/pdns/recursordist/tcpiohandler.cc
    functionUses: 56
    functionsReached:
    - std::to_string
    - std::runtime_error
    - tryConnect
    - runtime_error
    - waitForData
    - gettimeofday
    - waitForRWData
    linkageType: ''
    returnType: void
    signature: void connect(bool fastOpen, const ComboAddress& remote, const struct
      timeval& timeout) override
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: gnutls_handshake
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1385,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1385,1
    - Dst: gnutls_error_is_fatal
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1386,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1388,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1388,1
    - Dst: gnutls_strerror
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1388,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1391,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1391,1
    - Dst: gnutls_strerror
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1391,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1398
      start: 1381
    functionDepth: 0
    functionLinenumber: 1381
    functionLinenumberEnd: 1398
    functionName: doHandshake
    functionSourceFile: /src/pdns/pdns/recursordist/tcpiohandler.cc
    functionUses: 0
    functionsReached:
    - std::runtime_error
    - gnutls_handshake
    - get
    - gnutls_strerror
    - std::string
    - gnutls_error_is_fatal
    linkageType: ''
    returnType: void
    signature: void doHandshake() override
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: gnutls_handshake
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1405,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1405,1
    - Dst: gnutls_record_get_direction
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1411,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1411,1
    - Dst: gnutls_error_is_fatal
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1414,1
    - Dst: gnutls_certificate_verification_status_print
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1420,1
    - Dst: gnutls_session_get_verify_cert_status
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1420,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1420,1
    - Dst: gnutls_certificate_type_get
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1420,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1420,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1421,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1421,1
    - Dst: gnutls_free
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1422,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1426,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1426,1
    - Dst: gnutls_strerror
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1426,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1429,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1429,1
    - Dst: gnutls_strerror
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1429,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1435,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1435,1
    - Dst: gnutls_strerror
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1435,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1438,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1438,1
    - Dst: gnutls_strerror
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1438,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 29
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1440
      start: 1400
    functionDepth: 0
    functionLinenumber: 1400
    functionLinenumberEnd: 1440
    functionName: tryHandshake
    functionSourceFile: /src/pdns/pdns/recursordist/tcpiohandler.cc
    functionUses: 8
    functionsReached:
    - gnutls_certificate_verification_status_print
    - gnutls_certificate_type_get
    - std::runtime_error
    - gnutls_handshake
    - gnutls_record_get_direction
    - get
    - gnutls_session_get_verify_cert_status
    - reinterpret_cast<const char*>
    - gnutls_strerror
    - std::string
    - gnutls_error_is_fatal
    - gnutls_free
    linkageType: ''
    returnType: IOState
    signature: IOState tryHandshake() override
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: tryHandshake
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1447,1
    - Dst: gnutls_record_send
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1454,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1454,1
    - Dst: reinterpret_cast<const char *>
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1454,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1454,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1456,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1459,1
    - Dst: gnutls_error_is_fatal
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1462,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1463,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1463,1
    - Dst: gnutls_strerror
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1463,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1468,1
    - Dst: infolog
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1468,1
    - Dst: gnutls_strerror
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1468,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1469,1
    - Dst: gnutls_strerror
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1469,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1469,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 24
    argCount: 3
    argNames:
    - ' buffer'
    - ' pos'
    - toWrite
    argTypes:
    - PacketBuffer
    - size_t
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1474
      start: 1442
    functionDepth: 1
    functionLinenumber: 1442
    functionLinenumberEnd: 1474
    functionName: tryWrite
    functionSourceFile: /src/pdns/pdns/recursordist/tcpiohandler.cc
    functionUses: 10
    functionsReached:
    - gnutls_record_send
    - static_cast<size_t>
    - std::runtime_error
    - Logging::Loggable
    - VERBOSESLOG
    - infolog
    - get
    - reinterpret_cast<const char *>
    - tryHandshake
    - gnutls_strerror
    - dnsdist::logging::getTopLogger
    - std::string
    - at
    - gnutls_error_is_fatal
    linkageType: ''
    returnType: IOState
    signature: IOState tryWrite(const PacketBuffer& buffer, size_t& pos, size_t toWrite)
      override
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: tryHandshake
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1481,1
    - Dst: gnutls_record_recv
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1488,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1488,1
    - Dst: reinterpret_cast<char *>
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1488,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1488,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1490,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1493,1
    - Dst: gnutls_error_is_fatal
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1499,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1500,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1500,1
    - Dst: gnutls_strerror
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1500,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1505,1
    - Dst: infolog
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1505,1
    - Dst: gnutls_strerror
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1505,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1506,1
    - Dst: gnutls_strerror
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1506,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1506,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 27
    argCount: 4
    argNames:
    - ' buffer'
    - ' pos'
    - toRead
    - allowIncomplete
    argTypes:
    - PacketBuffer
    - size_t
    - size_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1511
      start: 1476
    functionDepth: 1
    functionLinenumber: 1476
    functionLinenumberEnd: 1511
    functionName: tryRead
    functionSourceFile: /src/pdns/pdns/recursordist/tcpiohandler.cc
    functionUses: 8
    functionsReached:
    - static_cast<size_t>
    - gnutls_record_recv
    - std::runtime_error
    - Logging::Loggable
    - VERBOSESLOG
    - infolog
    - get
    - std::string
    - tryHandshake
    - gnutls_strerror
    - dnsdist::logging::getTopLogger
    - reinterpret_cast<char *>
    - at
    - gnutls_error_is_fatal
    linkageType: ''
    returnType: IOState
    signature: IOState tryRead(PacketBuffer& buffer, size_t& pos, size_t toRead, bool
      allowIncomplete) override
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: gettimeofday
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1519,1
    - Dst: gnutls_record_recv
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1523,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1523,1
    - Dst: reinterpret_cast<char *>
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1523,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1525,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1528,1
    - Dst: gnutls_error_is_fatal
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1534,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1535,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1535,1
    - Dst: gnutls_strerror
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1535,1
    - Dst: waitForData
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1538,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1540,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1540,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1544,1
    - Dst: infolog
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1544,1
    - Dst: gnutls_strerror
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1544,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1545,1
    - Dst: gnutls_strerror
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1545,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1545,1
    - Dst: gettimeofday
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1551,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1554,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 36
    argCount: 5
    argNames:
    - buffer
    - bufferSize
    - ' readTimeout'
    - ' totalTimeout'
    - allowIncomplete
    argTypes:
    - void*
    - size_t
    - struct timeval
    - struct timeval
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1563
      start: 1513
    functionDepth: 1
    functionLinenumber: 1513
    functionLinenumberEnd: 1563
    functionName: read
    functionSourceFile: /src/pdns/pdns/recursordist/tcpiohandler.cc
    functionUses: 158
    functionsReached:
    - static_cast<size_t>
    - gnutls_record_recv
    - std::to_string
    - std::runtime_error
    - Logging::Loggable
    - VERBOSESLOG
    - waitForData
    - infolog
    - get
    - runtime_error
    - gnutls_strerror
    - gettimeofday
    - dnsdist::logging::getTopLogger
    - reinterpret_cast<char *>
    - std::string
    - gnutls_error_is_fatal
    linkageType: ''
    returnType: size_t
    signature: size_t read(void* buffer, size_t bufferSize, const struct timeval&
      readTimeout, const struct timeval& totalTimeout, bool allowIncomplete) override
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: gnutls_record_send
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1570,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1570,1
    - Dst: reinterpret_cast<const char *>
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1570,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1572,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1575,1
    - Dst: gnutls_error_is_fatal
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1578,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1579,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1579,1
    - Dst: gnutls_strerror
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1579,1
    - Dst: waitForRWData
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1582,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1584,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1584,1
    - Dst: VERBOSESLOG
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1588,1
    - Dst: infolog
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1588,1
    - Dst: gnutls_strerror
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1588,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1589,1
    - Dst: gnutls_strerror
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1589,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1589,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 22
    argCount: 3
    argNames:
    - buffer
    - bufferSize
    - ' writeTimeout'
    argTypes:
    - void*
    - size_t
    - struct timeval
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1596
      start: 1565
    functionDepth: 1
    functionLinenumber: 1565
    functionLinenumberEnd: 1596
    functionName: write
    functionSourceFile: /src/pdns/pdns/recursordist/tcpiohandler.cc
    functionUses: 85
    functionsReached:
    - gnutls_record_send
    - static_cast<size_t>
    - std::to_string
    - std::runtime_error
    - Logging::Loggable
    - VERBOSESLOG
    - infolog
    - get
    - reinterpret_cast<const char *>
    - gnutls_strerror
    - dnsdist::logging::getTopLogger
    - std::string
    - waitForRWData
    - gnutls_error_is_fatal
    linkageType: ''
    returnType: size_t
    signature: size_t write(const void* buffer, size_t bufferSize, const struct timeval&
      writeTimeout) override
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: isTCPSocketUsable
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1605,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1606
      start: 1598
    functionDepth: 0
    functionLinenumber: 1598
    functionLinenumberEnd: 1606
    functionName: isUsable
    functionSourceFile: /src/pdns/pdns/recursordist/tcpiohandler.cc
    functionUses: 5
    functionsReached:
    - isTCPSocketUsable
    linkageType: ''
    returnType: bool
    signature: bool isUsable() const override
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: std::string::resize
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1614,1
    - Dst: gnutls_server_name_get
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1616,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1616,1
    - Dst: const_cast<char*>
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1616,1
    - Dst: std::string::c_str
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1616,1
    - Dst: std::string::resize
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1618,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1622,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1623
      start: 1608
    functionDepth: 1
    functionLinenumber: 1608
    functionLinenumberEnd: 1623
    functionName: getServerNameIndication
    functionSourceFile: /src/pdns/pdns/recursordist/tcpiohandler.cc
    functionUses: 3
    functionsReached:
    - gnutls_server_name_get
    - const_cast<char*>
    - std::string::c_str
    - get
    - std::string::resize
    - std::string
    linkageType: ''
    returnType: std::string
    signature: std::string getServerNameIndication() const override
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: gnutls_alpn_get_selected_protocol
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1632,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1632,1
    - Dst: std::vector::insert
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1635,1
    - Dst: std::vector::end
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1635,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1637
      start: 1625
    functionDepth: 2
    functionLinenumber: 1625
    functionLinenumberEnd: 1637
    functionName: getNextProtocol
    functionSourceFile: /src/pdns/pdns/recursordist/tcpiohandler.cc
    functionUses: 5
    functionsReached:
    - std::vector::end
    - std::vector::insert
    - gnutls_alpn_get_selected_protocol
    - get
    linkageType: ''
    returnType: std::vector<uint8_t>
    signature: std::vector<uint8_t> getNextProtocol() const override
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: gnutls_protocol_get_version
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1641,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1641,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1656
      start: 1639
    functionDepth: 0
    functionLinenumber: 1639
    functionLinenumberEnd: 1656
    functionName: getTLSVersion
    functionSourceFile: /src/pdns/pdns/recursordist/tcpiohandler.cc
    functionUses: 3
    functionsReached:
    - gnutls_protocol_get_version
    - get
    linkageType: ''
    returnType: LibsslTLSVersion
    signature: LibsslTLSVersion getTLSVersion() const override
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: gnutls_session_get_verify_cert_status
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1661,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1661,1
    - Dst: gnutls_certificate_verification_status_print
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1663,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1664,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1664,1
    - Dst: gnutls_free
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1665,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1671
      start: 1658
    functionDepth: 0
    functionLinenumber: 1658
    functionLinenumberEnd: 1671
    functionName: getVerifyResult
    functionSourceFile: /src/pdns/pdns/recursordist/tcpiohandler.cc
    functionUses: 2
    functionsReached:
    - gnutls_certificate_verification_status_print
    - get
    - gnutls_session_get_verify_cert_status
    - reinterpret_cast<const char*>
    - std::string
    - gnutls_free
    linkageType: ''
    returnType: std::pair<long, std::string>
    signature: std::pair<long, std::string> getVerifyResult() const override
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: gnutls_session_is_resumed
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1676,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1676,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1679
      start: 1673
    functionDepth: 0
    functionLinenumber: 1673
    functionLinenumberEnd: 1679
    functionName: hasSessionBeenResumed
    functionSourceFile: /src/pdns/pdns/recursordist/tcpiohandler.cc
    functionUses: 2
    functionsReached:
    - gnutls_session_is_resumed
    - get
    linkageType: ''
    returnType: bool
    signature: bool hasSessionBeenResumed() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1683,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1684
      start: 1681
    functionDepth: 0
    functionLinenumber: 1681
    functionLinenumberEnd: 1684
    functionName: getSessions
    functionSourceFile: /src/pdns/pdns/recursordist/tcpiohandler.cc
    functionUses: 2
    functionsReached:
    - std::move
    linkageType: ''
    returnType: std::vector<std::unique_ptr<TLSSession>>
    signature: std::vector<std::unique_ptr<TLSSession>> getSessions() override
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dynamic_cast<GnuTLSSession*>
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1688,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1688,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1690,1
    - Dst: auto::getNative
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1693,1
    - Dst: gnutls_session_set_data
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1694,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1694,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1696,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1696,1
    - Dst: gnutls_strerror
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1696,1
    - Dst: reset
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1698,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 1
    argNames:
    - ' session'
    argTypes:
    - std::unique_ptr<TLSSession>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1699
      start: 1686
    functionDepth: 0
    functionLinenumber: 1686
    functionLinenumberEnd: 1699
    functionName: setSession
    functionSourceFile: /src/pdns/pdns/recursordist/tcpiohandler.cc
    functionUses: 2
    functionsReached:
    - gnutls_session_set_data
    - reset
    - std::runtime_error
    - get
    - gnutls_strerror
    - std::string
    - auto::getNative
    - dynamic_cast<GnuTLSSession*>
    linkageType: ''
    returnType: void
    signature: void setSession(std::unique_ptr<TLSSession>& session) override
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: gnutls_bye
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1704,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1704,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1706
      start: 1701
    functionDepth: 0
    functionLinenumber: 1701
    functionLinenumberEnd: 1706
    functionName: close
    functionSourceFile: /src/pdns/pdns/recursordist/tcpiohandler.cc
    functionUses: 143
    functionsReached:
    - gnutls_bye
    - get
    linkageType: ''
    returnType: void
    signature: void close() override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::vector::reserve
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1711,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1711,1
    - Dst: const_cast<uint8_t*>
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1714,1
    - Dst: data
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1714,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1715,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1716,1
    - Dst: gnutls_alpn_set_protocols
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1724,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1724,1
    - Dst: std::vector::data
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1724,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1724,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - ' protos'
    argTypes:
    - std::vector<std::vector<uint8_t>>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1725
      start: 1708
    functionDepth: 0
    functionLinenumber: 1708
    functionLinenumberEnd: 1725
    functionName: setALPNProtos
    functionSourceFile: /src/pdns/pdns/recursordist/tcpiohandler.cc
    functionUses: 4
    functionsReached:
    - std::vector::push_back
    - std::vector::size
    - size
    - get
    - std::vector::reserve
    - const_cast<uint8_t*>
    - gnutls_alpn_set_protocols
    - data
    - std::vector::data
    linkageType: ''
    returnType: bool
    signature: bool setALPNProtos(const std::vector<std::vector<uint8_t>>& protos)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1730
      start: 1727
    functionDepth: 0
    functionLinenumber: 1727
    functionLinenumberEnd: 1730
    functionName: getAsyncFDs
    functionSourceFile: /src/pdns/pdns/recursordist/tcpiohandler.cc
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: std::vector<int>
    signature: std::vector<int> getAsyncFDs() override
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: getALPNVector
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1746,1
    - Dst: gnutls_certificate_allocate_credentials
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1752,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1754,1
    - Dst: d_addr::toStringWithPort
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1754,1
    - Dst: gnutls_strerror
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1754,1
    - Dst: std::shared_ptr<gnutls_certificate_credentials_st>
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1757,1
    - Dst: gnutls_certificate_set_x509_key_file
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1761,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1761,1
    - Dst: d_cert::c_str
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1761,1
    - Dst: d_key::c_str
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1761,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1763,1
    - Dst: d_key::value
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1763,1
    - Dst: d_addr::toStringWithPort
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1763,1
    - Dst: gnutls_strerror
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1763,1
    - Dst: gnutls_certificate_set_ocsp_status_request_file
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1770,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1770,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1770,1
    - Dst: SLOG
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1773,1
    - Dst: warnlog
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1773,1
    - Dst: d_tlsConfig::d_certKeyPairs::at
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1773,1
    - Dst: d_tlsConfig::d_certKeyPairs::at
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1773,1
    - Dst: value
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1773,1
    - Dst: d_addr::toStringWithPort
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1773,1
    - Dst: gnutls_strerror
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1773,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1774,1
    - Dst: gnutls_strerror
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1774,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1774,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1774,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1774,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1774,1
    - Dst: d_tlsConfig::d_certKeyPairs::at
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1774,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1774,1
    - Dst: d_tlsConfig::d_certKeyPairs::at
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1774,1
    - Dst: value
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1774,1
    - Dst: warnlog
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1776,1
    - Dst: d_tlsConfig::d_certKeyPairs::at
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1776,1
    - Dst: d_tlsConfig::d_certKeyPairs::at
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1776,1
    - Dst: value
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1776,1
    - Dst: d_addr::toStringWithPort
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1776,1
    - Dst: gnutls_strerror
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1776,1
    - Dst: gnutls_certificate_set_known_dh_params
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1784,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1784,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1786,1
    - Dst: d_addr::toStringWithPort
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1786,1
    - Dst: gnutls_strerror
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1786,1
    - Dst: gnutls_priority_init
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1790,1
    - Dst: d_tlsConfig::d_ciphers::empty
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1790,1
    - Dst: d_tlsConfig::d_ciphers::c_str
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1790,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1792,1
    - Dst: gnutls_strerror
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1792,1
    - Dst: d_addr::toStringWithPort
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1792,1
    - Dst: d_tlsConfig::d_ticketKeyFile::empty
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1796,1
    - Dst: handleTicketsKeyRotation
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1797,1
    - Dst: time
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1797,1
    - Dst: GnuTLSIOCtx::loadTicketsKeys
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1800,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1804,1
    - Dst: d_addr::toStringWithPort
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1804,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1804,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 37
    argCount: 1
    argNames:
    - ' frontend'
    argTypes:
    - TLSFrontend
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1806
      start: 1746
    functionDepth: 1
    functionLinenumber: 1746
    functionLinenumberEnd: 1806
    functionName: GnuTLSIOCtx::GnuTLSIOCtx
    functionSourceFile: /src/pdns/pdns/recursordist/tcpiohandler.cc
    functionUses: 0
    functionsReached:
    - handleTicketsKeyRotation
    - gnutls_certificate_set_ocsp_status_request_file
    - d_tlsConfig::d_ticketKeyFile::empty
    - d_key::value
    - gnutls_strerror
    - d_tlsConfig::d_certKeyPairs::at
    - SLOG
    - Logging::Loggable
    - gnutls_certificate_allocate_credentials
    - time
    - warnlog
    - d_addr::toStringWithPort
    - dnsdist::logging::getTopLogger
    - c_str
    - GnuTLSIOCtx::loadTicketsKeys
    - getALPNVector
    - std::runtime_error
    - gnutls_certificate_set_x509_key_file
    - get
    - d_cert::c_str
    - gnutls_certificate_set_known_dh_params
    - gnutls_priority_init
    - d_tlsConfig::d_ciphers::empty
    - d_key::c_str
    - value
    - std::shared_ptr<gnutls_certificate_credentials_st>
    - what
    - d_tlsConfig::d_ciphers::c_str
    linkageType: ''
    returnType: void
    signature: void GnuTLSIOCtx(TLSFrontend& frontend)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: getALPNVector
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1809,1
    - Dst: std::make_unique<TLSContextParameters>
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1809,1
    - Dst: gnutls_certificate_allocate_credentials
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1814,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1816,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1816,1
    - Dst: gnutls_strerror
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1816,1
    - Dst: std::shared_ptr<gnutls_certificate_credentials_st>
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1819,1
    - Dst: d_caStore::empty
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1823,1
    - Dst: gnutls_certificate_set_x509_system_trust
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1828,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1828,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1830,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1830,1
    - Dst: gnutls_strerror
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1830,1
    - Dst: gnutls_certificate_set_x509_trust_file
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1834,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1834,1
    - Dst: d_caStore::c_str
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1834,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1836,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1836,1
    - Dst: gnutls_strerror
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1836,1
    - Dst: gnutls_priority_init
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1841,1
    - Dst: d_ciphers::empty
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1841,1
    - Dst: d_ciphers::c_str
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1841,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1843,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1843,1
    - Dst: gnutls_strerror
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1843,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 25
    argCount: 1
    argNames:
    - ' params'
    argTypes:
    - TLSContextParameters
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1845
      start: 1809
    functionDepth: 0
    functionLinenumber: 1809
    functionLinenumberEnd: 1845
    functionName: GnuTLSIOCtx::GnuTLSIOCtx
    functionSourceFile: /src/pdns/pdns/recursordist/tcpiohandler.cc
    functionUses: 0
    functionsReached:
    - d_ciphers::empty
    - getALPNVector
    - std::runtime_error
    - std::make_unique<TLSContextParameters>
    - gnutls_certificate_allocate_credentials
    - std::shared_ptr<gnutls_certificate_credentials_st>
    - gnutls_certificate_set_x509_trust_file
    - get
    - d_caStore::empty
    - gnutls_strerror
    - gnutls_certificate_set_x509_system_trust
    - gnutls_priority_init
    - std::string
    - d_caStore::c_str
    - d_ciphers::c_str
    linkageType: ''
    returnType: void
    signature: void GnuTLSIOCtx(const TLSContextParameters& params)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: reset
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1849,1
    - Dst: gnutls_priority_deinit
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1852,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1854
      start: 1847
    functionDepth: 0
    functionLinenumber: 1847
    functionLinenumberEnd: 1854
    functionName: ~GnuTLSIOCtx() override
    functionSourceFile: /src/pdns/pdns/recursordist/tcpiohandler.cc
    functionUses: 0
    functionsReached:
    - reset
    - gnutls_priority_deinit
    linkageType: ''
    returnType: void
    signature: void ~GnuTLSIOCtx() override
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: handleTicketsKeyRotation
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1858,1
    - Dst: read_lock
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1862,1
    - Dst: std::make_unique<GnuTLSConnection>
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1865,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1866,1
    - Dst: auto::setALPNProtos
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1867,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 3
    argNames:
    - socket
    - ' timeout'
    - now
    argTypes:
    - int
    - struct timeval
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1870
      start: 1856
    functionDepth: 1
    functionLinenumber: 1856
    functionLinenumberEnd: 1870
    functionName: GnuTLSIOCtx::getConnection
    functionSourceFile: /src/pdns/pdns/recursordist/tcpiohandler.cc
    functionUses: 0
    functionsReached:
    - handleTicketsKeyRotation
    - auto::setALPNProtos
    - read_lock
    - empty
    - std::make_unique<GnuTLSConnection>
    linkageType: ''
    returnType: std::unique_ptr<TLSConnection>
    signature: std::unique_ptr<TLSConnection> getConnection(int socket, const struct
      timeval& timeout, time_t now) override
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: gnutls_certificate_allocate_credentials
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1878,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1880,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1880,1
    - Dst: gnutls_strerror
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1880,1
    - Dst: std::shared_ptr<gnutls_certificate_credentials_st>
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1883,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1887,1
    - Dst: gnutls_certificate_set_x509_system_trust
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1888,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1888,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1890,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1890,1
    - Dst: gnutls_strerror
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1890,1
    - Dst: gnutls_certificate_set_x509_trust_file
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1894,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1894,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1894,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1896,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1896,1
    - Dst: gnutls_strerror
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1896,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 22
    argCount: 2
    argNames:
    - validate
    - ' caStore'
    argTypes:
    - bool
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1902
      start: 1872
    functionDepth: 0
    functionLinenumber: 1872
    functionLinenumberEnd: 1902
    functionName: GnuTLSIOCtx::getPerThreadCredentials
    functionSourceFile: /src/pdns/pdns/recursordist/tcpiohandler.cc
    functionUses: 2
    functionsReached:
    - c_str
    - std::runtime_error
    - std::shared_ptr<gnutls_certificate_credentials_st>
    - gnutls_certificate_allocate_credentials
    - gnutls_certificate_set_x509_trust_file
    - get
    - gnutls_certificate_set_x509_system_trust
    - gnutls_strerror
    - empty
    - std::string
    linkageType: ''
    returnType: std::shared_ptr<gnutls_certificate_credentials_st>
    signature: std::shared_ptr<gnutls_certificate_credentials_st> getPerThreadCredentials(bool
      validate, const std::string& caStore)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: GnuTLSIOCtx::getPerThreadCredentials
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1906,1
    - Dst: std::make_unique<GnuTLSConnection>
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1907,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1908,1
    - Dst: auto::setALPNProtos
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1909,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - ' host'
    - socket
    - ' timeout'
    argTypes:
    - std::string
    - int
    - struct timeval
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1912
      start: 1904
    functionDepth: 0
    functionLinenumber: 1904
    functionLinenumberEnd: 1912
    functionName: GnuTLSIOCtx::getClientConnection
    functionSourceFile: /src/pdns/pdns/recursordist/tcpiohandler.cc
    functionUses: 0
    functionsReached:
    - empty
    - GnuTLSIOCtx::getPerThreadCredentials
    - auto::setALPNProtos
    - std::make_unique<GnuTLSConnection>
    linkageType: ''
    returnType: std::unique_ptr<TLSConnection>
    signature: std::unique_ptr<TLSConnection> getClientConnection(const std::string&
      host, bool, int socket, const struct timeval& timeout) override
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: write_lock
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1921,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1921,1
    - Dst: TLSCtx::hasTicketsKeyAddedHook
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1928,1
    - Dst: read_lock
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1929,1
    - Dst: auto::content
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1930,1
    - Dst: TLSCtx::getTicketsKeyAddedHook
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1931,1
    - Dst: safe_memory_release
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1932,1
    - Dst: auto::data
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1932,1
    - Dst: auto::size
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1932,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 2
    argNames:
    - now
    - ' newKey'
    argTypes:
    - time_t
    - std::shared_ptr<GnuTLSTicketsKey>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1934
      start: 1914
    functionDepth: 0
    functionLinenumber: 1914
    functionLinenumberEnd: 1934
    functionName: GnuTLSIOCtx::addTicketsKey
    functionSourceFile: /src/pdns/pdns/recursordist/tcpiohandler.cc
    functionUses: 6
    functionsReached:
    - std::move
    - TLSCtx::getTicketsKeyAddedHook
    - safe_memory_release
    - auto::content
    - read_lock
    - auto::data
    - TLSCtx::hasTicketsKeyAddedHook
    - write_lock
    - auto::size
    linkageType: ''
    returnType: void
    signature: void addTicketsKey(time_t now, std::shared_ptr<GnuTLSTicketsKey>&&
      newKey)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<GnuTLSTicketsKey>
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1941,1
    - Dst: GnuTLSIOCtx::addTicketsKey
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1942,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1942,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - now
    argTypes:
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1943
      start: 1935
    functionDepth: 0
    functionLinenumber: 1935
    functionLinenumberEnd: 1943
    functionName: GnuTLSIOCtx::rotateTicketsKey
    functionSourceFile: /src/pdns/pdns/recursordist/tcpiohandler.cc
    functionUses: 0
    functionsReached:
    - std::make_shared<GnuTLSTicketsKey>
    - std::move
    - GnuTLSIOCtx::addTicketsKey
    linkageType: ''
    returnType: void
    signature: void rotateTicketsKey(time_t now) override
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<GnuTLSTicketsKey>
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1950,1
    - Dst: GnuTLSIOCtx::addTicketsKey
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1951,1
    - Dst: time
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1951,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1951,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ' key'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1952
      start: 1944
    functionDepth: 0
    functionLinenumber: 1944
    functionLinenumberEnd: 1952
    functionName: GnuTLSIOCtx::loadTicketsKey
    functionSourceFile: /src/pdns/pdns/recursordist/tcpiohandler.cc
    functionUses: 0
    functionsReached:
    - std::make_shared<GnuTLSTicketsKey>
    - time
    - std::move
    - GnuTLSIOCtx::addTicketsKey
    linkageType: ''
    returnType: void
    signature: void loadTicketsKey(const std::string& key) final
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<GnuTLSTicketsKey>
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1961,1
    - Dst: GnuTLSIOCtx::addTicketsKey
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1962,1
    - Dst: time
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1962,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1962,1
    - Dst: std::ifstream::close
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1963,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - ' keyFile'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1964
      start: 1954
    functionDepth: 0
    functionLinenumber: 1954
    functionLinenumberEnd: 1964
    functionName: GnuTLSIOCtx::loadTicketsKeys
    functionSourceFile: /src/pdns/pdns/recursordist/tcpiohandler.cc
    functionUses: 3
    functionsReached:
    - std::move
    - std::ifstream::close
    - GnuTLSIOCtx::addTicketsKey
    - time
    - std::make_shared<GnuTLSTicketsKey>
    linkageType: ''
    returnType: void
    signature: void loadTicketsKeys(const std::string& keyFile) final
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: read_lock
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1968,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1969
      start: 1966
    functionDepth: 0
    functionLinenumber: 1966
    functionLinenumberEnd: 1969
    functionName: GnuTLSIOCtx::getTicketsKeysCount
    functionSourceFile: /src/pdns/pdns/recursordist/tcpiohandler.cc
    functionUses: 0
    functionsReached:
    - read_lock
    linkageType: ''
    returnType: size_t
    signature: size_t getTicketsKeysCount() override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1974
      start: 1971
    functionDepth: 0
    functionLinenumber: 1971
    functionLinenumberEnd: 1974
    functionName: GnuTLSIOCtx::getName
    functionSourceFile: /src/pdns/pdns/recursordist/tcpiohandler.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string getName() const override
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: setupTLS
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1991,1
    - Dst: getContext
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1996,1
    - Dst: std::atomic_store_explicit
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1998,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:1998,1
    - Dst: std::make_shared<GnuTLSIOCtx>
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:2006,1
    - Dst: createServerSideContext
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:2011,1
    - Dst: createServerSideContext
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:2017,1
    - Dst: std::make_shared<GnuTLSIOCtx>
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:2019,1
    - Dst: std::atomic_store_explicit
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:2025,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:2025,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2028
      start: 1991
    functionDepth: 0
    functionLinenumber: 1991
    functionLinenumberEnd: 2028
    functionName: TLSFrontend
    functionSourceFile: /src/pdns/pdns/recursordist/tcpiohandler.cc
    functionUses: 3
    functionsReached:
    - std::move
    - std::make_shared<GnuTLSIOCtx>
    - std::atomic_store_explicit
    - createServerSideContext
    - getContext
    - setupTLS
    linkageType: ''
    returnType: bool
    signature: bool TLSFrontend
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: d_provider::empty
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:2034,1
    - Dst: std::make_shared<GnuTLSIOCtx>
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:2037,1
    - Dst: createClientSideContext
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:2042,1
    - Dst: createClientSideContext
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:2048,1
    - Dst: std::make_shared<GnuTLSIOCtx>
      Src: /src/pdns/pdns/recursordist/tcpiohandler.cc:2050,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - ' params'
    argTypes:
    - TLSContextParameters
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2057
      start: 2030
    functionDepth: 0
    functionLinenumber: 2030
    functionLinenumberEnd: 2057
    functionName: getTLSContext
    functionSourceFile: /src/pdns/pdns/recursordist/tcpiohandler.cc
    functionUses: 6
    functionsReached:
    - std::make_shared<GnuTLSIOCtx>
    - d_provider::empty
    - createClientSideContext
    linkageType: ''
    returnType: std::shared_ptr<TLSCtx>
    signature: std::shared_ptr<TLSCtx> getTLSContext([[maybe_unused]] const TLSContextParameters&
      params)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 46
    functionDepth: 0
    functionLinenumber: 46
    functionLinenumberEnd: 46
    functionName: RecursorControlChannel::RecursorControlChannel
    functionSourceFile: /src/pdns/pdns/recursordist/rec_channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void RecursorControlChannel(const RecursorControlChannel&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 47
    functionDepth: 0
    functionLinenumber: 47
    functionLinenumberEnd: 47
    functionName: RecursorControlChannel::RecursorControlChannel
    functionSourceFile: /src/pdns/pdns/recursordist/rec_channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void RecursorControlChannel(RecursorControlChannel&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 48
    functionDepth: 0
    functionLinenumber: 48
    functionLinenumberEnd: 48
    functionName: '& operator=(const RecursorControlChannel&)'
    functionSourceFile: /src/pdns/pdns/recursordist/rec_channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: RecursorControlChannel
    signature: RecursorControlChannel & operator=(const RecursorControlChannel&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 49
    functionDepth: 0
    functionLinenumber: 49
    functionLinenumberEnd: 49
    functionName: '& operator=(RecursorControlChannel&&)'
    functionSourceFile: /src/pdns/pdns/recursordist/rec_channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: RecursorControlChannel
    signature: RecursorControlChannel & operator=(RecursorControlChannel&&)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - Answer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 59
    functionDepth: 0
    functionLinenumber: 59
    functionLinenumberEnd: 66
    functionName: '& operator+=(const Answer& rhs)'
    functionSourceFile: /src/pdns/pdns/recursordist/rec_channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Answer
    signature: Answer & operator+=(const Answer& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 76
    functionDepth: 0
    functionLinenumber: 76
    functionLinenumberEnd: 79
    functionName: RecursorControlChannel::getDescriptor
    functionSourceFile: /src/pdns/pdns/recursordist/rec_channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int getDescriptor() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 89
    functionDepth: 0
    functionLinenumber: 89
    functionLinenumberEnd: 89
    functionName: RecursorControlParser::RecursorControlParser
    functionSourceFile: /src/pdns/pdns/recursordist/rec_channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void RecursorControlParser()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 90
    functionDepth: 0
    functionLinenumber: 90
    functionLinenumberEnd: 90
    functionName: RecursorControlParser::nop
    functionSourceFile: /src/pdns/pdns/recursordist/rec_channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void nop()
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: std::holds_alternative<std::string>
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:35,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:36,1
    - Dst: std::get<std::string>
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:36,1
    - Dst: std::holds_alternative<bool>
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:38,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:39,1
    - Dst: std::get<bool>
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:39,1
    - Dst: std::holds_alternative<int64_t>
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:41,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:42,1
    - Dst: std::get<int64_t>
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:42,1
    - Dst: std::holds_alternative<double>
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:44,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:45,1
    - Dst: std::get<double>
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:45,1
    - Dst: std::holds_alternative<ArrayValue>
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:47,1
    - Dst: std::get<ArrayValue>
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:49,1
    - Dst: std::holds_alternative<KeyValueList>
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:51,1
    - Dst: std::get<KeyValueList>
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:53,1
    - Dst: std::holds_alternative<std::vector<uint8_t>>
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:55,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:56,1
    - Dst: std::get<std::vector<uint8_t>>
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:56,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 22
    argCount: 1
    argNames:
    - ' writer'
    argTypes:
    - protozero::pbf_writer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 33
    functionDepth: 0
    functionLinenumber: 33
    functionLinenumberEnd: 58
    functionName: pdns::trace::AnyValue::encode
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.cc
    functionUses: 2
    functionsReached:
    - std::get<std::vector<uint8_t>>
    - std::get<ArrayValue>
    - std::holds_alternative<std::string>
    - std::holds_alternative<ArrayValue>
    - std::holds_alternative<std::vector<uint8_t>>
    - std::get<std::string>
    - std::get<double>
    - std::holds_alternative<double>
    - std::holds_alternative<bool>
    - std::holds_alternative<KeyValueList>
    - std::holds_alternative<int64_t>
    - pdns::trace::encode
    - std::get<int64_t>
    - std::get<KeyValueList>
    - std::get<bool>
    linkageType: ''
    returnType: void
    signature: void AnyValue::encode(protozero::pbf_writer& writer) const
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: next
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:62,1
    - Dst: tag
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:63,1
    - Dst: get_string
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:65,1
    - Dst: get_bool
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:68,1
    - Dst: get_int64
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:71,1
    - Dst: get_double
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:74,1
    - Dst: get_message
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:77,1
    - Dst: pdns::trace::ArrayValue::decode
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:78,1
    - Dst: get_message
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:82,1
    - Dst: pdns::trace::KeyValueList::decode
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:83,1
    - Dst: get_view
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:87,1
    - Dst: std::vector::reserve
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:89,1
    - Dst: auto::size
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:89,1
    - Dst: auto::size
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:90,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:91,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:91,1
    - Dst: auto::data
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:91,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:93,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 36
    argCount: 1
    argNames:
    - ' reader'
    argTypes:
    - protozero::pbf_reader
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 60
    functionDepth: 0
    functionLinenumber: 60
    functionLinenumberEnd: 102
    functionName: pdns::trace::AnyValue::decode
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.cc
    functionUses: 6
    functionsReached:
    - next
    - get_double
    - std::vector::push_back
    - std::move
    - get_bool
    - tag
    - pdns::trace::KeyValueList::decode
    - auto::data
    - get_message
    - get_int64
    - std::vector::reserve
    - static_cast<uint8_t>
    - pdns::trace::ArrayValue::decode
    - auto::size
    - get_string
    - get_view
    linkageType: ''
    returnType: AnyValue
    signature: AnyValue AnyValue::decode(protozero::pbf_reader& reader)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: std::holds_alternative<std::string>
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:106,1
    - Dst: std::get<std::string>
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:107,1
    - Dst: std::holds_alternative<bool>
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:109,1
    - Dst: std::get<bool>
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:110,1
    - Dst: std::holds_alternative<int64_t>
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:115,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:116,1
    - Dst: std::get<int64_t>
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:116,1
    - Dst: std::holds_alternative<double>
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:118,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:119,1
    - Dst: std::get<double>
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:119,1
    - Dst: std::holds_alternative<ArrayValue>
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:121,1
    - Dst: std::get<ArrayValue>
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:123,1
    - Dst: pdns::trace::AnyValue::toLogString
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:124,1
    - Dst: std::string::resize
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:126,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:126,1
    - Dst: std::holds_alternative<KeyValueList>
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:129,1
    - Dst: std::get<KeyValueList>
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:131,1
    - Dst: value::toLogString
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:132,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:134,1
    - Dst: std::string::resize
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:135,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:135,1
    - Dst: std::holds_alternative<std::vector<uint8_t>>
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:139,1
    - Dst: std::get<std::vector<uint8_t>>
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:140,1
    - Dst: Base64Encode
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:141,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:141,1
    - Dst: auto::begin
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:141,1
    - Dst: auto::end
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:141,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 34
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 144
      start: 104
    functionDepth: 1
    functionLinenumber: 104
    functionLinenumberEnd: 144
    functionName: pdns::trace::AnyValue::toLogString
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.cc
    functionUses: 5
    functionsReached:
    - std::to_string
    - std::get<double>
    - std::holds_alternative<KeyValueList>
    - auto::begin
    - std::holds_alternative<ArrayValue>
    - std::get<int64_t>
    - std::string
    - std::get<KeyValueList>
    - std::string::size
    - value::toLogString
    - std::holds_alternative<std::vector<uint8_t>>
    - std::holds_alternative<std::string>
    - pdns::trace::AnyValue::toLogString
    - std::holds_alternative<double>
    - std::holds_alternative<bool>
    - std::string::resize
    - std::holds_alternative<int64_t>
    - std::get<std::vector<uint8_t>>
    - std::get<ArrayValue>
    - std::get<std::string>
    - auto::end
    - std::get<bool>
    - Base64Encode
    linkageType: ''
    returnType: std::string
    signature: std::string AnyValue::toLogString() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:148,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:149,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:151,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:154,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - ' writer'
    argTypes:
    - protozero::pbf_writer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 156
      start: 146
    functionDepth: 0
    functionLinenumber: 146
    functionLinenumberEnd: 156
    functionName: pdns::trace::EntityRef::encode
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.cc
    functionUses: 0
    functionsReached:
    - pdns::trace::encode
    linkageType: ''
    returnType: void
    signature: void EntityRef::encode(protozero::pbf_writer& writer) const
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: next
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:161,1
    - Dst: tag
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:162,1
    - Dst: get_string
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:164,1
    - Dst: get_string
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:167,1
    - Dst: EntityRef::id_keys::emplace_back
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:170,1
    - Dst: get_string
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:170,1
    - Dst: EntityRef::description_keys::emplace_back
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:173,1
    - Dst: get_string
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:173,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 20
    argCount: 1
    argNames:
    - ' reader'
    argTypes:
    - protozero::pbf_reader
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 180
      start: 158
    functionDepth: 0
    functionLinenumber: 158
    functionLinenumberEnd: 180
    functionName: pdns::trace::EntityRef::decode
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.cc
    functionUses: 4
    functionsReached:
    - next
    - tag
    - EntityRef::description_keys::emplace_back
    - EntityRef::id_keys::emplace_back
    - get_string
    linkageType: ''
    returnType: EntityRef
    signature: EntityRef EntityRef::decode(protozero::pbf_reader& reader)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:184,1
    - Dst: pdns::trace::KeyValue::encode
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:187,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - ' writer'
    argTypes:
    - protozero::pbf_writer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 189
      start: 182
    functionDepth: 0
    functionLinenumber: 182
    functionLinenumberEnd: 189
    functionName: pdns::trace::KeyValue::encode
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.cc
    functionUses: 5
    functionsReached:
    - pdns::trace::KeyValue::encode
    - pdns::trace::encode
    linkageType: ''
    returnType: void
    signature: void KeyValue::encode(protozero::pbf_writer& writer) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:193,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:194,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:195,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - ' writer'
    argTypes:
    - protozero::pbf_writer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 196
      start: 191
    functionDepth: 0
    functionLinenumber: 191
    functionLinenumberEnd: 196
    functionName: pdns::trace::Resource::encode
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.cc
    functionUses: 4
    functionsReached:
    - pdns::trace::encode
    linkageType: ''
    returnType: void
    signature: void Resource::encode(protozero::pbf_writer& writer) const
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: next
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:201,1
    - Dst: tag
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:202,1
    - Dst: get_message
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:204,1
    - Dst: Resource::attributes::emplace_back
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:205,1
    - Dst: pdns::trace::KeyValue::decode
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:205,1
    - Dst: get_uint32
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:209,1
    - Dst: get_message
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:212,1
    - Dst: Resource::entity_refs::emplace_back
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:213,1
    - Dst: pdns::trace::EntityRef::decode
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:213,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 1
    argNames:
    - ' reader'
    argTypes:
    - protozero::pbf_reader
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 221
      start: 198
    functionDepth: 0
    functionLinenumber: 198
    functionLinenumberEnd: 221
    functionName: pdns::trace::Resource::decode
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.cc
    functionUses: 4
    functionsReached:
    - next
    - Resource::attributes::emplace_back
    - Resource::entity_refs::emplace_back
    - tag
    - get_message
    - pdns::trace::KeyValue::decode
    - get_uint32
    - pdns::trace::EntityRef::decode
    linkageType: ''
    returnType: Resource
    signature: Resource Resource::decode(protozero::pbf_reader& reader)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:225,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:226,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:227,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:228,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - ' writer'
    argTypes:
    - protozero::pbf_writer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 229
      start: 223
    functionDepth: 0
    functionLinenumber: 223
    functionLinenumberEnd: 229
    functionName: pdns::trace::InstrumentationScope::encode
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.cc
    functionUses: 0
    functionsReached:
    - pdns::trace::encode
    linkageType: ''
    returnType: void
    signature: void InstrumentationScope::encode(protozero::pbf_writer& writer) const
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: next
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:234,1
    - Dst: tag
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:235,1
    - Dst: get_string
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:237,1
    - Dst: get_string
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:240,1
    - Dst: get_message
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:243,1
    - Dst: InstrumentationScope::attributes::emplace_back
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:244,1
    - Dst: pdns::trace::KeyValue::decode
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:244,1
    - Dst: get_uint32
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:248,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 21
    argCount: 1
    argNames:
    - ' reader'
    argTypes:
    - protozero::pbf_reader
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 255
      start: 231
    functionDepth: 0
    functionLinenumber: 231
    functionLinenumberEnd: 255
    functionName: pdns::trace::InstrumentationScope::decode
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.cc
    functionUses: 4
    functionsReached:
    - next
    - tag
    - get_message
    - pdns::trace::KeyValue::decode
    - get_uint32
    - get_string
    - InstrumentationScope::attributes::emplace_back
    linkageType: ''
    returnType: InstrumentationScope
    signature: InstrumentationScope InstrumentationScope::decode(protozero::pbf_reader&
      reader)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:259,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:260,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ' writer'
    argTypes:
    - protozero::pbf_writer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 261
      start: 257
    functionDepth: 0
    functionLinenumber: 257
    functionLinenumberEnd: 261
    functionName: pdns::trace::Status::encode
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.cc
    functionUses: 0
    functionsReached:
    - pdns::trace::encode
    linkageType: ''
    returnType: void
    signature: void Status::encode(protozero::pbf_writer& writer) const
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: next
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:266,1
    - Dst: tag
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:267,1
    - Dst: get_string
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:269,1
    - Dst: static_cast<StatusCode>
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:272,1
    - Dst: get_uint32
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:272,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 1
    argNames:
    - ' reader'
    argTypes:
    - protozero::pbf_reader
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 279
      start: 263
    functionDepth: 0
    functionLinenumber: 263
    functionLinenumberEnd: 279
    functionName: pdns::trace::Status::decode
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.cc
    functionUses: 4
    functionsReached:
    - next
    - tag
    - static_cast<StatusCode>
    - get_uint32
    - get_string
    linkageType: ''
    returnType: Status
    signature: Status Status::decode(protozero::pbf_reader& reader)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::encodeFixed
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:283,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:284,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:285,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:286,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - ' writer'
    argTypes:
    - protozero::pbf_writer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 287
      start: 281
    functionDepth: 0
    functionLinenumber: 281
    functionLinenumberEnd: 287
    functionName: Span::Event::encode(protozero::pbf_writer& writer) const
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.cc
    functionUses: 0
    functionsReached:
    - pdns::trace::encodeFixed
    - pdns::trace::encode
    linkageType: ''
    returnType: void
    signature: void Span::Event::encode(protozero::pbf_writer& writer) const
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: next
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:292,1
    - Dst: tag
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:293,1
    - Dst: get_fixed64
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:295,1
    - Dst: get_string
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:298,1
    - Dst: get_message
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:301,1
    - Dst: Span::Event::attributes::emplace_back
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:302,1
    - Dst: pdns::trace::KeyValue::decode
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:302,1
    - Dst: get_uint32
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:306,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    argCount: 1
    argNames:
    - ' reader'
    argTypes:
    - protozero::pbf_reader
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 312
      start: 289
    functionDepth: 0
    functionLinenumber: 289
    functionLinenumberEnd: 312
    functionName: Span::Event::decode(protozero::pbf_reader& reader)
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.cc
    functionUses: 0
    functionsReached:
    - next
    - tag
    - Span::Event::attributes::emplace_back
    - get_message
    - pdns::trace::KeyValue::decode
    - get_fixed64
    - get_uint32
    - get_string
    linkageType: ''
    returnType: Span::Event
    signature: Span::Event Span::Event::decode(protozero::pbf_reader& reader)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:316,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:317,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:318,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:319,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:320,1
    - Dst: pdns::trace::encodeFixed
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:321,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - ' writer'
    argTypes:
    - protozero::pbf_writer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 322
      start: 314
    functionDepth: 0
    functionLinenumber: 314
    functionLinenumberEnd: 322
    functionName: Span::Link::encode(protozero::pbf_writer& writer) const
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.cc
    functionUses: 0
    functionsReached:
    - pdns::trace::encodeFixed
    - pdns::trace::encode
    linkageType: ''
    returnType: void
    signature: void Span::Link::encode(protozero::pbf_writer& writer) const
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: next
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:327,1
    - Dst: tag
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:328,1
    - Dst: decodeTraceID
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:330,1
    - Dst: decodeSpanID
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:333,1
    - Dst: get_string
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:336,1
    - Dst: get_message
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:339,1
    - Dst: Link::attributes::emplace_back
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:340,1
    - Dst: pdns::trace::KeyValue::decode
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:340,1
    - Dst: get_uint32
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:344,1
    - Dst: get_fixed32
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:347,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 26
    argCount: 1
    argNames:
    - ' reader'
    argTypes:
    - protozero::pbf_reader
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 353
      start: 324
    functionDepth: 0
    functionLinenumber: 324
    functionLinenumberEnd: 353
    functionName: Span::Link::decode(protozero::pbf_reader& reader)
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.cc
    functionUses: 0
    functionsReached:
    - next
    - decodeSpanID
    - Link::attributes::emplace_back
    - decodeTraceID
    - tag
    - get_message
    - pdns::trace::KeyValue::decode
    - get_uint32
    - get_fixed32
    - get_string
    linkageType: ''
    returnType: Span::Link
    signature: Span::Link Span::Link::decode(protozero::pbf_reader& reader)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:357,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:358,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:359,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:360,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:361,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:362,1
    - Dst: pdns::trace::encodeFixed
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:363,1
    - Dst: pdns::trace::encodeFixed
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:364,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:365,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:366,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:367,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:368,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:369,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:370,1
    - Dst: message::empty
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:371,1
    - Dst: pdns::trace::Span::encode
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:373,1
    - Dst: pdns::trace::encodeFixed
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:375,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 19
    argCount: 1
    argNames:
    - ' writer'
    argTypes:
    - protozero::pbf_writer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 376
      start: 355
    functionDepth: 0
    functionLinenumber: 355
    functionLinenumberEnd: 376
    functionName: pdns::trace::Span::encode
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.cc
    functionUses: 5
    functionsReached:
    - pdns::trace::Span::encode
    - pdns::trace::encodeFixed
    - pdns::trace::encode
    - message::empty
    linkageType: ''
    returnType: void
    signature: void Span::encode(protozero::pbf_writer& writer) const
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: next
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:381,1
    - Dst: tag
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:382,1
    - Dst: decodeTraceID
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:384,1
    - Dst: decodeSpanID
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:387,1
    - Dst: get_string
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:390,1
    - Dst: decodeSpanID
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:393,1
    - Dst: get_string
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:396,1
    - Dst: static_cast<Span::SpanKind>
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:399,1
    - Dst: get_uint32
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:399,1
    - Dst: get_fixed64
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:402,1
    - Dst: get_fixed64
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:405,1
    - Dst: get_message
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:408,1
    - Dst: Span::attributes::emplace_back
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:409,1
    - Dst: pdns::trace::KeyValue::decode
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:409,1
    - Dst: get_uint32
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:413,1
    - Dst: get_message
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:416,1
    - Dst: Span::events::emplace_back
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:417,1
    - Dst: YAML::decode
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:417,1
    - Dst: get_uint32
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:421,1
    - Dst: get_message
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:424,1
    - Dst: Span::links::emplace_back
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:425,1
    - Dst: YAML::decode
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:425,1
    - Dst: get_uint32
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:429,1
    - Dst: get_message
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:432,1
    - Dst: pdns::trace::Status::decode
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:433,1
    - Dst: get_fixed32
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:437,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 60
    argCount: 1
    argNames:
    - ' reader'
    argTypes:
    - protozero::pbf_reader
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 444
      start: 378
    functionDepth: 1
    functionLinenumber: 378
    functionLinenumberEnd: 444
    functionName: pdns::trace::Span::decode
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.cc
    functionUses: 4
    functionsReached:
    - next
    - Span::attributes::emplace_back
    - decodeSpanID
    - static_cast<Span::SpanKind>
    - decodeTraceID
    - tag
    - YAML::decode
    - get_message
    - pdns::trace::KeyValue::decode
    - pdns::trace::Status::decode
    - get_fixed64
    - Span::events::emplace_back
    - get_uint32
    - get_fixed32
    - get_string
    - Span::links::emplace_back
    linkageType: ''
    returnType: Span
    signature: Span Span::decode(protozero::pbf_reader& reader)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::ScopeSpans::encode
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:450,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:452,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:453,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - ' writer'
    argTypes:
    - protozero::pbf_writer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 454
      start: 446
    functionDepth: 0
    functionLinenumber: 446
    functionLinenumberEnd: 454
    functionName: pdns::trace::ScopeSpans::encode
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.cc
    functionUses: 5
    functionsReached:
    - pdns::trace::ScopeSpans::encode
    - pdns::trace::encode
    linkageType: ''
    returnType: void
    signature: void ScopeSpans::encode(protozero::pbf_writer& writer) const
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: next
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:459,1
    - Dst: tag
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:460,1
    - Dst: get_message
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:462,1
    - Dst: pdns::trace::InstrumentationScope::decode
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:463,1
    - Dst: get_message
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:467,1
    - Dst: ScopeSpans::spans::emplace_back
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:468,1
    - Dst: pdns::trace::Span::decode
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:468,1
    - Dst: get_string
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:472,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 1
    argNames:
    - ' reader'
    argTypes:
    - protozero::pbf_reader
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 478
      start: 456
    functionDepth: 0
    functionLinenumber: 456
    functionLinenumberEnd: 478
    functionName: pdns::trace::ScopeSpans::decode
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.cc
    functionUses: 4
    functionsReached:
    - next
    - ScopeSpans::spans::emplace_back
    - tag
    - get_message
    - pdns::trace::InstrumentationScope::decode
    - get_string
    - pdns::trace::Span::decode
    linkageType: ''
    returnType: ScopeSpans
    signature: ScopeSpans ScopeSpans::decode(protozero::pbf_reader& reader)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::ResourceSpans::encode
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:484,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:486,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:487,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - ' writer'
    argTypes:
    - protozero::pbf_writer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 488
      start: 480
    functionDepth: 0
    functionLinenumber: 480
    functionLinenumberEnd: 488
    functionName: pdns::trace::ResourceSpans::encode
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.cc
    functionUses: 5
    functionsReached:
    - pdns::trace::encode
    - pdns::trace::ResourceSpans::encode
    linkageType: ''
    returnType: void
    signature: void ResourceSpans::encode(protozero::pbf_writer& writer) const
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: next
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:493,1
    - Dst: tag
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:494,1
    - Dst: get_message
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:496,1
    - Dst: pdns::trace::Resource::decode
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:497,1
    - Dst: get_message
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:501,1
    - Dst: ResourceSpans::scope_spans::emplace_back
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:502,1
    - Dst: pdns::trace::ScopeSpans::decode
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:502,1
    - Dst: get_string
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:506,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 1
    argNames:
    - ' reader'
    argTypes:
    - protozero::pbf_reader
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 512
      start: 490
    functionDepth: 0
    functionLinenumber: 490
    functionLinenumberEnd: 512
    functionName: pdns::trace::ResourceSpans::decode
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.cc
    functionUses: 4
    functionsReached:
    - next
    - pdns::trace::Resource::decode
    - tag
    - pdns::trace::ScopeSpans::decode
    - get_message
    - ResourceSpans::scope_spans::emplace_back
    - get_string
    linkageType: ''
    returnType: ResourceSpans
    signature: ResourceSpans ResourceSpans::decode(protozero::pbf_reader& reader)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:516,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' writer'
    argTypes:
    - protozero::pbf_writer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 517
      start: 514
    functionDepth: 0
    functionLinenumber: 514
    functionLinenumberEnd: 517
    functionName: pdns::trace::TracesData::encode
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.cc
    functionUses: 4
    functionsReached:
    - pdns::trace::encode
    linkageType: ''
    returnType: void
    signature: void TracesData::encode(protozero::pbf_writer& writer) const
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: next
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:522,1
    - Dst: tag
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:523,1
    - Dst: get_message
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:525,1
    - Dst: TracesData::resource_spans::emplace_back
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:526,1
    - Dst: pdns::trace::ResourceSpans::decode
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:526,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 1
    argNames:
    - ' reader'
    argTypes:
    - protozero::pbf_reader
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 534
      start: 519
    functionDepth: 0
    functionLinenumber: 519
    functionLinenumberEnd: 534
    functionName: pdns::trace::TracesData::decode
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.cc
    functionUses: 4
    functionsReached:
    - next
    - TracesData::resource_spans::emplace_back
    - tag
    - get_message
    - pdns::trace::ResourceSpans::decode
    linkageType: ''
    returnType: TracesData
    signature: TracesData TracesData::decode(protozero::pbf_reader& reader)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: next
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:539,1
    - Dst: tag
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:540,1
    - Dst: get_string
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:542,1
    - Dst: get_message
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:545,1
    - Dst: pdns::trace::AnyValue::decode
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:546,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 1
    argNames:
    - ' reader'
    argTypes:
    - protozero::pbf_reader
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 554
      start: 536
    functionDepth: 0
    functionLinenumber: 536
    functionLinenumberEnd: 554
    functionName: pdns::trace::KeyValue::decode
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.cc
    functionUses: 25
    functionsReached:
    - next
    - pdns::trace::AnyValue::decode
    - tag
    - get_message
    - get_string
    linkageType: ''
    returnType: KeyValue
    signature: KeyValue KeyValue::decode(protozero::pbf_reader& reader)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::extractOTraceIDs
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:560,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' map'
    - eoc
    - ' span'
    argTypes:
    - EDNSOptionViewMap
    - EDNSOptionCode::EDNSOptionCodeEnum
    - pdns::trace::InitialSpanInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 562
      start: 556
    functionDepth: 0
    functionLinenumber: 556
    functionLinenumberEnd: 562
    functionName: pdns::trace::extractOTraceIDs
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.cc
    functionUses: 7
    functionsReached:
    - pdns::trace::extractOTraceIDs
    linkageType: ''
    returnType: bool
    signature: bool extractOTraceIDs(const EDNSOptionViewMap& map, EDNSOptionCode::EDNSOptionCodeEnum
      eoc, pdns::trace::InitialSpanInfo& span)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: find
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:580,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:580,1
    - Dst: second::values::at
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:581,1
    - Dst: reinterpret_cast<const uint8_t*>
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:582,1
    - Dst: EDNSOTTraceRecordView::getVersion
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:585,1
    - Dst: EDNSOTTraceRecordView::getTraceID
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:586,1
    - Dst: EDNSOTTraceRecordView::getSpanID
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:589,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 4
    argNames:
    - ' map'
    - eoc
    - ' traceID'
    - ' spanID'
    argTypes:
    - EDNSOptionViewMap
    - EDNSOptionCode::EDNSOptionCodeEnum
    - pdns::trace::TraceID
    - pdns::trace::SpanID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 593
      start: 573
    functionDepth: 0
    functionLinenumber: 573
    functionLinenumberEnd: 593
    functionName: pdns::trace::extractOTraceIDs
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.cc
    functionUses: 7
    functionsReached:
    - EDNSOTTraceRecordView::getVersion
    - EDNSOTTraceRecordView::getSpanID
    - reinterpret_cast<const uint8_t*>
    - end
    - second::values::at
    - EDNSOTTraceRecordView::getTraceID
    - find
    linkageType: ''
    returnType: bool
    signature: bool extractOTraceIDs(const EDNSOptionViewMap& map, EDNSOptionCode::EDNSOptionCodeEnum
      eoc, pdns::trace::TraceID& traceID, pdns::trace::SpanID& spanID)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeHexDump
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:597,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:597,1
    - Dst: pdns::trace::SpanID::begin
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:597,1
    - Dst: pdns::trace::SpanID::end
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:597,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 598
      start: 595
    functionDepth: 0
    functionLinenumber: 595
    functionLinenumberEnd: 598
    functionName: pdns::trace::SpanID::toLogString
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.cc
    functionUses: 0
    functionsReached:
    - std::string
    - pdns::trace::SpanID::end
    - makeHexDump
    - pdns::trace::SpanID::begin
    linkageType: ''
    returnType: std::string
    signature: std::string SpanID::toLogString() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeHexDump
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:602,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:602,1
    - Dst: pdns::trace::TraceID::begin
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:602,1
    - Dst: pdns::trace::TraceID::end
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:602,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 603
      start: 600
    functionDepth: 0
    functionLinenumber: 600
    functionLinenumberEnd: 603
    functionName: pdns::trace::TraceID::toLogString
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.cc
    functionUses: 0
    functionsReached:
    - pdns::trace::TraceID::end
    - std::string
    - makeHexDump
    - pdns::trace::TraceID::begin
    linkageType: ''
    returnType: std::string
    signature: std::string TraceID::toLogString() const
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: std::holds_alternative<std::string>
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:35,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:36,1
    - Dst: std::get<std::string>
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:36,1
    - Dst: std::holds_alternative<bool>
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:38,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:39,1
    - Dst: std::get<bool>
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:39,1
    - Dst: std::holds_alternative<int64_t>
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:41,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:42,1
    - Dst: std::get<int64_t>
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:42,1
    - Dst: std::holds_alternative<double>
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:44,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:45,1
    - Dst: std::get<double>
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:45,1
    - Dst: std::holds_alternative<ArrayValue>
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:47,1
    - Dst: std::get<ArrayValue>
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:49,1
    - Dst: std::holds_alternative<KeyValueList>
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:51,1
    - Dst: std::get<KeyValueList>
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:53,1
    - Dst: std::holds_alternative<std::vector<uint8_t>>
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:55,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:56,1
    - Dst: std::get<std::vector<uint8_t>>
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:56,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 22
    argCount: 1
    argNames:
    - ' writer'
    argTypes:
    - protozero::pbf_writer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 33
    functionDepth: 0
    functionLinenumber: 33
    functionLinenumberEnd: 58
    functionName: pdns::trace::AnyValue::encode
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.cc
    functionUses: 2
    functionsReached:
    - std::get<std::vector<uint8_t>>
    - std::get<ArrayValue>
    - std::holds_alternative<std::string>
    - std::holds_alternative<ArrayValue>
    - std::holds_alternative<std::vector<uint8_t>>
    - std::get<std::string>
    - std::get<double>
    - std::holds_alternative<double>
    - std::holds_alternative<bool>
    - std::holds_alternative<KeyValueList>
    - std::holds_alternative<int64_t>
    - pdns::trace::encode
    - std::get<int64_t>
    - std::get<KeyValueList>
    - std::get<bool>
    linkageType: ''
    returnType: void
    signature: void AnyValue::encode(protozero::pbf_writer& writer) const
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: next
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:62,1
    - Dst: tag
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:63,1
    - Dst: get_string
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:65,1
    - Dst: get_bool
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:68,1
    - Dst: get_int64
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:71,1
    - Dst: get_double
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:74,1
    - Dst: get_message
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:77,1
    - Dst: pdns::trace::ArrayValue::decode
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:78,1
    - Dst: get_message
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:82,1
    - Dst: pdns::trace::KeyValueList::decode
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:83,1
    - Dst: get_view
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:87,1
    - Dst: std::vector::reserve
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:89,1
    - Dst: auto::size
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:89,1
    - Dst: auto::size
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:90,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:91,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:91,1
    - Dst: auto::data
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:91,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:93,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 36
    argCount: 1
    argNames:
    - ' reader'
    argTypes:
    - protozero::pbf_reader
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 60
    functionDepth: 0
    functionLinenumber: 60
    functionLinenumberEnd: 102
    functionName: pdns::trace::AnyValue::decode
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.cc
    functionUses: 7
    functionsReached:
    - next
    - get_double
    - std::vector::push_back
    - std::move
    - get_bool
    - tag
    - pdns::trace::KeyValueList::decode
    - auto::data
    - get_message
    - get_int64
    - std::vector::reserve
    - static_cast<uint8_t>
    - pdns::trace::ArrayValue::decode
    - auto::size
    - get_string
    - get_view
    linkageType: ''
    returnType: AnyValue
    signature: AnyValue AnyValue::decode(protozero::pbf_reader& reader)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: std::holds_alternative<std::string>
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:106,1
    - Dst: std::get<std::string>
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:107,1
    - Dst: std::holds_alternative<bool>
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:109,1
    - Dst: std::get<bool>
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:110,1
    - Dst: std::holds_alternative<int64_t>
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:115,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:116,1
    - Dst: std::get<int64_t>
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:116,1
    - Dst: std::holds_alternative<double>
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:118,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:119,1
    - Dst: std::get<double>
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:119,1
    - Dst: std::holds_alternative<ArrayValue>
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:121,1
    - Dst: std::get<ArrayValue>
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:123,1
    - Dst: pdns::trace::AnyValue::toLogString
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:124,1
    - Dst: std::string::resize
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:126,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:126,1
    - Dst: std::holds_alternative<KeyValueList>
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:129,1
    - Dst: std::get<KeyValueList>
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:131,1
    - Dst: value::toLogString
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:132,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:134,1
    - Dst: std::string::resize
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:135,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:135,1
    - Dst: std::holds_alternative<std::vector<uint8_t>>
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:139,1
    - Dst: std::get<std::vector<uint8_t>>
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:140,1
    - Dst: Base64Encode
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:141,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:141,1
    - Dst: auto::begin
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:141,1
    - Dst: auto::end
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:141,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 34
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 144
      start: 104
    functionDepth: 1
    functionLinenumber: 104
    functionLinenumberEnd: 144
    functionName: pdns::trace::AnyValue::toLogString
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.cc
    functionUses: 6
    functionsReached:
    - std::to_string
    - std::get<double>
    - std::holds_alternative<KeyValueList>
    - auto::begin
    - std::holds_alternative<ArrayValue>
    - std::get<int64_t>
    - std::string
    - std::get<KeyValueList>
    - std::string::size
    - value::toLogString
    - std::holds_alternative<std::vector<uint8_t>>
    - std::holds_alternative<std::string>
    - pdns::trace::AnyValue::toLogString
    - std::holds_alternative<double>
    - std::holds_alternative<bool>
    - std::string::resize
    - std::holds_alternative<int64_t>
    - std::get<std::vector<uint8_t>>
    - std::get<ArrayValue>
    - std::get<std::string>
    - auto::end
    - std::get<bool>
    - Base64Encode
    linkageType: ''
    returnType: std::string
    signature: std::string AnyValue::toLogString() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:148,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:149,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:151,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:154,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - ' writer'
    argTypes:
    - protozero::pbf_writer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 156
      start: 146
    functionDepth: 0
    functionLinenumber: 146
    functionLinenumberEnd: 156
    functionName: pdns::trace::EntityRef::encode
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.cc
    functionUses: 0
    functionsReached:
    - pdns::trace::encode
    linkageType: ''
    returnType: void
    signature: void EntityRef::encode(protozero::pbf_writer& writer) const
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: next
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:161,1
    - Dst: tag
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:162,1
    - Dst: get_string
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:164,1
    - Dst: get_string
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:167,1
    - Dst: EntityRef::id_keys::emplace_back
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:170,1
    - Dst: get_string
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:170,1
    - Dst: EntityRef::description_keys::emplace_back
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:173,1
    - Dst: get_string
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:173,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 20
    argCount: 1
    argNames:
    - ' reader'
    argTypes:
    - protozero::pbf_reader
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 180
      start: 158
    functionDepth: 0
    functionLinenumber: 158
    functionLinenumberEnd: 180
    functionName: pdns::trace::EntityRef::decode
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.cc
    functionUses: 5
    functionsReached:
    - next
    - tag
    - EntityRef::description_keys::emplace_back
    - EntityRef::id_keys::emplace_back
    - get_string
    linkageType: ''
    returnType: EntityRef
    signature: EntityRef EntityRef::decode(protozero::pbf_reader& reader)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:184,1
    - Dst: pdns::trace::KeyValue::encode
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:187,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - ' writer'
    argTypes:
    - protozero::pbf_writer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 189
      start: 182
    functionDepth: 0
    functionLinenumber: 182
    functionLinenumberEnd: 189
    functionName: pdns::trace::KeyValue::encode
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.cc
    functionUses: 6
    functionsReached:
    - pdns::trace::KeyValue::encode
    - pdns::trace::encode
    linkageType: ''
    returnType: void
    signature: void KeyValue::encode(protozero::pbf_writer& writer) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:193,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:194,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:195,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - ' writer'
    argTypes:
    - protozero::pbf_writer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 196
      start: 191
    functionDepth: 0
    functionLinenumber: 191
    functionLinenumberEnd: 196
    functionName: pdns::trace::Resource::encode
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.cc
    functionUses: 4
    functionsReached:
    - pdns::trace::encode
    linkageType: ''
    returnType: void
    signature: void Resource::encode(protozero::pbf_writer& writer) const
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: next
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:201,1
    - Dst: tag
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:202,1
    - Dst: get_message
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:204,1
    - Dst: Resource::attributes::emplace_back
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:205,1
    - Dst: pdns::trace::KeyValue::decode
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:205,1
    - Dst: get_uint32
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:209,1
    - Dst: get_message
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:212,1
    - Dst: Resource::entity_refs::emplace_back
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:213,1
    - Dst: pdns::trace::EntityRef::decode
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:213,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 1
    argNames:
    - ' reader'
    argTypes:
    - protozero::pbf_reader
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 221
      start: 198
    functionDepth: 0
    functionLinenumber: 198
    functionLinenumberEnd: 221
    functionName: pdns::trace::Resource::decode
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.cc
    functionUses: 5
    functionsReached:
    - next
    - Resource::attributes::emplace_back
    - Resource::entity_refs::emplace_back
    - tag
    - get_message
    - pdns::trace::KeyValue::decode
    - get_uint32
    - pdns::trace::EntityRef::decode
    linkageType: ''
    returnType: Resource
    signature: Resource Resource::decode(protozero::pbf_reader& reader)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:225,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:226,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:227,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:228,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - ' writer'
    argTypes:
    - protozero::pbf_writer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 229
      start: 223
    functionDepth: 0
    functionLinenumber: 223
    functionLinenumberEnd: 229
    functionName: pdns::trace::InstrumentationScope::encode
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.cc
    functionUses: 0
    functionsReached:
    - pdns::trace::encode
    linkageType: ''
    returnType: void
    signature: void InstrumentationScope::encode(protozero::pbf_writer& writer) const
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: next
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:234,1
    - Dst: tag
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:235,1
    - Dst: get_string
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:237,1
    - Dst: get_string
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:240,1
    - Dst: get_message
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:243,1
    - Dst: InstrumentationScope::attributes::emplace_back
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:244,1
    - Dst: pdns::trace::KeyValue::decode
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:244,1
    - Dst: get_uint32
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:248,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 21
    argCount: 1
    argNames:
    - ' reader'
    argTypes:
    - protozero::pbf_reader
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 255
      start: 231
    functionDepth: 0
    functionLinenumber: 231
    functionLinenumberEnd: 255
    functionName: pdns::trace::InstrumentationScope::decode
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.cc
    functionUses: 5
    functionsReached:
    - next
    - tag
    - get_message
    - pdns::trace::KeyValue::decode
    - get_uint32
    - get_string
    - InstrumentationScope::attributes::emplace_back
    linkageType: ''
    returnType: InstrumentationScope
    signature: InstrumentationScope InstrumentationScope::decode(protozero::pbf_reader&
      reader)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:259,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:260,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ' writer'
    argTypes:
    - protozero::pbf_writer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 261
      start: 257
    functionDepth: 0
    functionLinenumber: 257
    functionLinenumberEnd: 261
    functionName: pdns::trace::Status::encode
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.cc
    functionUses: 0
    functionsReached:
    - pdns::trace::encode
    linkageType: ''
    returnType: void
    signature: void Status::encode(protozero::pbf_writer& writer) const
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: next
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:266,1
    - Dst: tag
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:267,1
    - Dst: get_string
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:269,1
    - Dst: static_cast<StatusCode>
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:272,1
    - Dst: get_uint32
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:272,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 1
    argNames:
    - ' reader'
    argTypes:
    - protozero::pbf_reader
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 279
      start: 263
    functionDepth: 0
    functionLinenumber: 263
    functionLinenumberEnd: 279
    functionName: pdns::trace::Status::decode
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.cc
    functionUses: 5
    functionsReached:
    - next
    - tag
    - static_cast<StatusCode>
    - get_uint32
    - get_string
    linkageType: ''
    returnType: Status
    signature: Status Status::decode(protozero::pbf_reader& reader)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::encodeFixed
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:283,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:284,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:285,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:286,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - ' writer'
    argTypes:
    - protozero::pbf_writer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 287
      start: 281
    functionDepth: 0
    functionLinenumber: 281
    functionLinenumberEnd: 287
    functionName: Span::Event::encode(protozero::pbf_writer& writer) const
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.cc
    functionUses: 0
    functionsReached:
    - pdns::trace::encodeFixed
    - pdns::trace::encode
    linkageType: ''
    returnType: void
    signature: void Span::Event::encode(protozero::pbf_writer& writer) const
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: next
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:292,1
    - Dst: tag
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:293,1
    - Dst: get_fixed64
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:295,1
    - Dst: get_string
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:298,1
    - Dst: get_message
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:301,1
    - Dst: Span::Event::attributes::emplace_back
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:302,1
    - Dst: pdns::trace::KeyValue::decode
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:302,1
    - Dst: get_uint32
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:306,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    argCount: 1
    argNames:
    - ' reader'
    argTypes:
    - protozero::pbf_reader
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 312
      start: 289
    functionDepth: 0
    functionLinenumber: 289
    functionLinenumberEnd: 312
    functionName: Span::Event::decode(protozero::pbf_reader& reader)
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.cc
    functionUses: 0
    functionsReached:
    - next
    - tag
    - Span::Event::attributes::emplace_back
    - get_message
    - pdns::trace::KeyValue::decode
    - get_fixed64
    - get_uint32
    - get_string
    linkageType: ''
    returnType: Span::Event
    signature: Span::Event Span::Event::decode(protozero::pbf_reader& reader)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:316,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:317,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:318,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:319,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:320,1
    - Dst: pdns::trace::encodeFixed
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:321,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - ' writer'
    argTypes:
    - protozero::pbf_writer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 322
      start: 314
    functionDepth: 0
    functionLinenumber: 314
    functionLinenumberEnd: 322
    functionName: Span::Link::encode(protozero::pbf_writer& writer) const
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.cc
    functionUses: 0
    functionsReached:
    - pdns::trace::encodeFixed
    - pdns::trace::encode
    linkageType: ''
    returnType: void
    signature: void Span::Link::encode(protozero::pbf_writer& writer) const
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: next
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:327,1
    - Dst: tag
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:328,1
    - Dst: decodeTraceID
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:330,1
    - Dst: decodeSpanID
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:333,1
    - Dst: get_string
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:336,1
    - Dst: get_message
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:339,1
    - Dst: Link::attributes::emplace_back
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:340,1
    - Dst: pdns::trace::KeyValue::decode
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:340,1
    - Dst: get_uint32
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:344,1
    - Dst: get_fixed32
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:347,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 26
    argCount: 1
    argNames:
    - ' reader'
    argTypes:
    - protozero::pbf_reader
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 353
      start: 324
    functionDepth: 0
    functionLinenumber: 324
    functionLinenumberEnd: 353
    functionName: Span::Link::decode(protozero::pbf_reader& reader)
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.cc
    functionUses: 0
    functionsReached:
    - next
    - decodeSpanID
    - Link::attributes::emplace_back
    - decodeTraceID
    - tag
    - get_message
    - pdns::trace::KeyValue::decode
    - get_uint32
    - get_fixed32
    - get_string
    linkageType: ''
    returnType: Span::Link
    signature: Span::Link Span::Link::decode(protozero::pbf_reader& reader)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:357,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:358,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:359,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:360,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:361,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:362,1
    - Dst: pdns::trace::encodeFixed
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:363,1
    - Dst: pdns::trace::encodeFixed
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:364,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:365,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:366,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:367,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:368,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:369,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:370,1
    - Dst: message::empty
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:371,1
    - Dst: pdns::trace::Span::encode
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:373,1
    - Dst: pdns::trace::encodeFixed
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:375,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 19
    argCount: 1
    argNames:
    - ' writer'
    argTypes:
    - protozero::pbf_writer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 376
      start: 355
    functionDepth: 0
    functionLinenumber: 355
    functionLinenumberEnd: 376
    functionName: pdns::trace::Span::encode
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.cc
    functionUses: 6
    functionsReached:
    - pdns::trace::Span::encode
    - pdns::trace::encodeFixed
    - pdns::trace::encode
    - message::empty
    linkageType: ''
    returnType: void
    signature: void Span::encode(protozero::pbf_writer& writer) const
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: next
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:381,1
    - Dst: tag
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:382,1
    - Dst: decodeTraceID
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:384,1
    - Dst: decodeSpanID
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:387,1
    - Dst: get_string
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:390,1
    - Dst: decodeSpanID
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:393,1
    - Dst: get_string
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:396,1
    - Dst: static_cast<Span::SpanKind>
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:399,1
    - Dst: get_uint32
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:399,1
    - Dst: get_fixed64
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:402,1
    - Dst: get_fixed64
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:405,1
    - Dst: get_message
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:408,1
    - Dst: Span::attributes::emplace_back
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:409,1
    - Dst: pdns::trace::KeyValue::decode
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:409,1
    - Dst: get_uint32
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:413,1
    - Dst: get_message
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:416,1
    - Dst: Span::events::emplace_back
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:417,1
    - Dst: YAML::decode
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:417,1
    - Dst: get_uint32
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:421,1
    - Dst: get_message
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:424,1
    - Dst: Span::links::emplace_back
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:425,1
    - Dst: YAML::decode
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:425,1
    - Dst: get_uint32
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:429,1
    - Dst: get_message
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:432,1
    - Dst: pdns::trace::Status::decode
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:433,1
    - Dst: get_fixed32
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:437,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 60
    argCount: 1
    argNames:
    - ' reader'
    argTypes:
    - protozero::pbf_reader
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 444
      start: 378
    functionDepth: 1
    functionLinenumber: 378
    functionLinenumberEnd: 444
    functionName: pdns::trace::Span::decode
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.cc
    functionUses: 5
    functionsReached:
    - next
    - Span::attributes::emplace_back
    - decodeSpanID
    - static_cast<Span::SpanKind>
    - decodeTraceID
    - tag
    - YAML::decode
    - get_message
    - pdns::trace::KeyValue::decode
    - pdns::trace::Status::decode
    - get_fixed64
    - Span::events::emplace_back
    - get_uint32
    - get_fixed32
    - get_string
    - Span::links::emplace_back
    linkageType: ''
    returnType: Span
    signature: Span Span::decode(protozero::pbf_reader& reader)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::ScopeSpans::encode
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:450,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:452,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:453,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - ' writer'
    argTypes:
    - protozero::pbf_writer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 454
      start: 446
    functionDepth: 0
    functionLinenumber: 446
    functionLinenumberEnd: 454
    functionName: pdns::trace::ScopeSpans::encode
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.cc
    functionUses: 6
    functionsReached:
    - pdns::trace::ScopeSpans::encode
    - pdns::trace::encode
    linkageType: ''
    returnType: void
    signature: void ScopeSpans::encode(protozero::pbf_writer& writer) const
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: next
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:459,1
    - Dst: tag
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:460,1
    - Dst: get_message
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:462,1
    - Dst: pdns::trace::InstrumentationScope::decode
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:463,1
    - Dst: get_message
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:467,1
    - Dst: ScopeSpans::spans::emplace_back
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:468,1
    - Dst: pdns::trace::Span::decode
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:468,1
    - Dst: get_string
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:472,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 1
    argNames:
    - ' reader'
    argTypes:
    - protozero::pbf_reader
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 478
      start: 456
    functionDepth: 0
    functionLinenumber: 456
    functionLinenumberEnd: 478
    functionName: pdns::trace::ScopeSpans::decode
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.cc
    functionUses: 5
    functionsReached:
    - next
    - ScopeSpans::spans::emplace_back
    - tag
    - get_message
    - pdns::trace::InstrumentationScope::decode
    - get_string
    - pdns::trace::Span::decode
    linkageType: ''
    returnType: ScopeSpans
    signature: ScopeSpans ScopeSpans::decode(protozero::pbf_reader& reader)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::ResourceSpans::encode
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:484,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:486,1
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:487,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - ' writer'
    argTypes:
    - protozero::pbf_writer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 488
      start: 480
    functionDepth: 0
    functionLinenumber: 480
    functionLinenumberEnd: 488
    functionName: pdns::trace::ResourceSpans::encode
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.cc
    functionUses: 6
    functionsReached:
    - pdns::trace::encode
    - pdns::trace::ResourceSpans::encode
    linkageType: ''
    returnType: void
    signature: void ResourceSpans::encode(protozero::pbf_writer& writer) const
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: next
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:493,1
    - Dst: tag
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:494,1
    - Dst: get_message
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:496,1
    - Dst: pdns::trace::Resource::decode
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:497,1
    - Dst: get_message
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:501,1
    - Dst: ResourceSpans::scope_spans::emplace_back
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:502,1
    - Dst: pdns::trace::ScopeSpans::decode
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:502,1
    - Dst: get_string
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:506,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 1
    argNames:
    - ' reader'
    argTypes:
    - protozero::pbf_reader
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 512
      start: 490
    functionDepth: 0
    functionLinenumber: 490
    functionLinenumberEnd: 512
    functionName: pdns::trace::ResourceSpans::decode
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.cc
    functionUses: 5
    functionsReached:
    - next
    - pdns::trace::Resource::decode
    - tag
    - pdns::trace::ScopeSpans::decode
    - get_message
    - ResourceSpans::scope_spans::emplace_back
    - get_string
    linkageType: ''
    returnType: ResourceSpans
    signature: ResourceSpans ResourceSpans::decode(protozero::pbf_reader& reader)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:516,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' writer'
    argTypes:
    - protozero::pbf_writer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 517
      start: 514
    functionDepth: 0
    functionLinenumber: 514
    functionLinenumberEnd: 517
    functionName: pdns::trace::TracesData::encode
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.cc
    functionUses: 4
    functionsReached:
    - pdns::trace::encode
    linkageType: ''
    returnType: void
    signature: void TracesData::encode(protozero::pbf_writer& writer) const
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: next
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:522,1
    - Dst: tag
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:523,1
    - Dst: get_message
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:525,1
    - Dst: TracesData::resource_spans::emplace_back
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:526,1
    - Dst: pdns::trace::ResourceSpans::decode
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:526,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 1
    argNames:
    - ' reader'
    argTypes:
    - protozero::pbf_reader
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 534
      start: 519
    functionDepth: 0
    functionLinenumber: 519
    functionLinenumberEnd: 534
    functionName: pdns::trace::TracesData::decode
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.cc
    functionUses: 4
    functionsReached:
    - next
    - TracesData::resource_spans::emplace_back
    - tag
    - get_message
    - pdns::trace::ResourceSpans::decode
    linkageType: ''
    returnType: TracesData
    signature: TracesData TracesData::decode(protozero::pbf_reader& reader)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: next
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:539,1
    - Dst: tag
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:540,1
    - Dst: get_string
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:542,1
    - Dst: get_message
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:545,1
    - Dst: pdns::trace::AnyValue::decode
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:546,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 1
    argNames:
    - ' reader'
    argTypes:
    - protozero::pbf_reader
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 554
      start: 536
    functionDepth: 0
    functionLinenumber: 536
    functionLinenumberEnd: 554
    functionName: pdns::trace::KeyValue::decode
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.cc
    functionUses: 30
    functionsReached:
    - next
    - pdns::trace::AnyValue::decode
    - tag
    - get_message
    - get_string
    linkageType: ''
    returnType: KeyValue
    signature: KeyValue KeyValue::decode(protozero::pbf_reader& reader)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::extractOTraceIDs
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:560,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' map'
    - eoc
    - ' span'
    argTypes:
    - EDNSOptionViewMap
    - EDNSOptionCode::EDNSOptionCodeEnum
    - pdns::trace::InitialSpanInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 562
      start: 556
    functionDepth: 0
    functionLinenumber: 556
    functionLinenumberEnd: 562
    functionName: pdns::trace::extractOTraceIDs
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.cc
    functionUses: 8
    functionsReached:
    - pdns::trace::extractOTraceIDs
    linkageType: ''
    returnType: bool
    signature: bool extractOTraceIDs(const EDNSOptionViewMap& map, EDNSOptionCode::EDNSOptionCodeEnum
      eoc, pdns::trace::InitialSpanInfo& span)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: find
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:580,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:580,1
    - Dst: second::values::at
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:581,1
    - Dst: reinterpret_cast<const uint8_t*>
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:582,1
    - Dst: EDNSOTTraceRecordView::getVersion
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:585,1
    - Dst: EDNSOTTraceRecordView::getTraceID
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:586,1
    - Dst: EDNSOTTraceRecordView::getSpanID
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:589,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 4
    argNames:
    - ' map'
    - eoc
    - ' traceID'
    - ' spanID'
    argTypes:
    - EDNSOptionViewMap
    - EDNSOptionCode::EDNSOptionCodeEnum
    - pdns::trace::TraceID
    - pdns::trace::SpanID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 593
      start: 573
    functionDepth: 0
    functionLinenumber: 573
    functionLinenumberEnd: 593
    functionName: pdns::trace::extractOTraceIDs
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.cc
    functionUses: 8
    functionsReached:
    - EDNSOTTraceRecordView::getVersion
    - EDNSOTTraceRecordView::getSpanID
    - reinterpret_cast<const uint8_t*>
    - end
    - second::values::at
    - EDNSOTTraceRecordView::getTraceID
    - find
    linkageType: ''
    returnType: bool
    signature: bool extractOTraceIDs(const EDNSOptionViewMap& map, EDNSOptionCode::EDNSOptionCodeEnum
      eoc, pdns::trace::TraceID& traceID, pdns::trace::SpanID& spanID)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeHexDump
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:597,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:597,1
    - Dst: pdns::trace::SpanID::begin
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:597,1
    - Dst: pdns::trace::SpanID::end
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:597,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 598
      start: 595
    functionDepth: 0
    functionLinenumber: 595
    functionLinenumberEnd: 598
    functionName: pdns::trace::SpanID::toLogString
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.cc
    functionUses: 0
    functionsReached:
    - std::string
    - pdns::trace::SpanID::end
    - makeHexDump
    - pdns::trace::SpanID::begin
    linkageType: ''
    returnType: std::string
    signature: std::string SpanID::toLogString() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeHexDump
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:602,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:602,1
    - Dst: pdns::trace::TraceID::begin
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:602,1
    - Dst: pdns::trace::TraceID::end
      Src: /src/pdns/pdns/recursordist/protozero-trace.cc:602,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 603
      start: 600
    functionDepth: 0
    functionLinenumber: 600
    functionLinenumberEnd: 603
    functionName: pdns::trace::TraceID::toLogString
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.cc
    functionUses: 0
    functionsReached:
    - pdns::trace::TraceID::end
    - std::string
    - makeHexDump
    - pdns::trace::TraceID::begin
    linkageType: ''
    returnType: std::string
    signature: std::string TraceID::toLogString() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - tcpsock
    - ','
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 77
    functionDepth: 0
    functionLinenumber: 77
    functionLinenumberEnd: 81
    functionName: TCPLOG
    functionSourceFile: /src/pdns/pdns/recursordist/rec-tcp.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TCPLOG(tcpsock, x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - pid
    - ','
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 82
    functionDepth: 0
    functionLinenumber: 82
    functionLinenumberEnd: 84
    functionName: TCPLOG
    functionSourceFile: /src/pdns/pdns/recursordist/rec-tcp.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TCPLOG(pid, x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - fileDesc
    - ' addr'
    argTypes:
    - int
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 88
    functionDepth: 0
    functionLinenumber: 88
    functionLinenumberEnd: 93
    functionName: TCPConnection::TCPConnection
    functionSourceFile: /src/pdns/pdns/recursordist/rec-tcp.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void TCPConnection::TCPConnection(int fileDesc, const ComboAddress&
      addr)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: closesocket
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:98,1
    - Dst: info
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:99,1
    - Dst: error
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:103,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:103,1
    - Dst: count
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:106,1
    - Dst: erase
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:107,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 95
    functionDepth: 0
    functionLinenumber: 95
    functionLinenumberEnd: 110
    functionName: TCPConnection::~TCPConnection()
    functionSourceFile: /src/pdns/pdns/recursordist/rec-tcp.cc
    functionUses: 0
    functionsReached:
    - Logging::Loggable
    - count
    - closesocket
    - info
    - error
    - erase
    linkageType: ''
    returnType: void
    signature: void TCPConnection::~TCPConnection()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: removeReadFD
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:115,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - fileDesc
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 112
    functionDepth: 0
    functionLinenumber: 112
    functionLinenumberEnd: 120
    functionName: terminateTCPConnection
    functionSourceFile: /src/pdns/pdns/recursordist/rec-tcp.cc
    functionUses: 0
    functionsReached:
    - removeReadFD
    linkageType: ''
    returnType: void
    signature: void terminateTCPConnection(int fileDesc)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: std::vector::resize
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:127,1
    - Dst: d_mdp::hasEDNS
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:131,1
    - Dst: DNSPacketWriter::addOpt
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:138,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:139,1
    - Dst: reinterpret_cast<dnsheader&>
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:143,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:143,1
    - Dst: sendResponseOverTCP
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:153,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 18
    argCount: 2
    argNames:
    - ' comboWriter'
    - rcode
    argTypes:
    - std::unique_ptr<DNSComboWriter>
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 154
      start: 122
    functionDepth: 1
    functionLinenumber: 122
    functionLinenumberEnd: 154
    functionName: sendErrorOverTCP
    functionSourceFile: /src/pdns/pdns/recursordist/rec-tcp.cc
    functionUses: 0
    functionsReached:
    - std::vector::resize
    - DNSPacketWriter::commit
    - d_mdp::hasEDNS
    - DNSPacketWriter::addOpt
    - sendResponseOverTCP
    - std::vector::at
    - reinterpret_cast<dnsheader&>
    linkageType: ''
    returnType: void
    signature: void sendErrorOverTCP(std::unique_ptr<DNSComboWriter>& comboWriter,
      int rcode)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: terminateTCPConnection
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:168,1
    - Dst: d_tcpConnection::isDropOnIdle
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:173,1
    - Dst: removeReadFD
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:175,1
    - Dst: Utility::gettimeofday
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:184,1
    - Dst: addReadFD
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:193,1
    - Dst: setReadTTD
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:198,1
    - Dst: addReadFD
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:204,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 31
    argCount: 3
    argNames:
    - ' comboWriter'
    - hadError
    - updateInFlight
    argTypes:
    - std::unique_ptr<DNSComboWriter>
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 206
      start: 156
    functionDepth: 1
    functionLinenumber: 156
    functionLinenumberEnd: 206
    functionName: finishTCPReply
    functionSourceFile: /src/pdns/pdns/recursordist/rec-tcp.cc
    functionUses: 0
    functionsReached:
    - terminateTCPConnection
    - addReadFD
    - setReadTTD
    - d_tcpConnection::isDropOnIdle
    - Utility::gettimeofday
    - removeReadFD
    linkageType: ''
    returnType: void
    signature: void finishTCPReply(std::unique_ptr<DNSComboWriter>& comboWriter, bool
      hadError, bool updateInFlight)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 215
      start: 215
    functionDepth: 0
    functionLinenumber: 215
    functionLinenumberEnd: 215
    functionName: RunningTCPQuestionGuard::RunningTCPQuestionGuard
    functionSourceFile: /src/pdns/pdns/recursordist/rec-tcp.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void RunningTCPQuestionGuard(const RunningTCPQuestionGuard&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 216
      start: 216
    functionDepth: 0
    functionLinenumber: 216
    functionLinenumberEnd: 216
    functionName: RunningTCPQuestionGuard::RunningTCPQuestionGuard
    functionSourceFile: /src/pdns/pdns/recursordist/rec-tcp.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void RunningTCPQuestionGuard(RunningTCPQuestionGuard&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 217
      start: 217
    functionDepth: 0
    functionLinenumber: 217
    functionLinenumberEnd: 217
    functionName: '& operator=(const RunningTCPQuestionGuard&)'
    functionSourceFile: /src/pdns/pdns/recursordist/rec-tcp.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: RunningTCPQuestionGuard
    signature: RunningTCPQuestionGuard & operator=(const RunningTCPQuestionGuard&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 218
      start: 218
    functionDepth: 0
    functionLinenumber: 218
    functionLinenumberEnd: 218
    functionName: '& operator=(RunningTCPQuestionGuard&&)'
    functionSourceFile: /src/pdns/pdns/recursordist/rec-tcp.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: RunningTCPQuestionGuard
    signature: RunningTCPQuestionGuard & operator=(RunningTCPQuestionGuard&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - fileDesc
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 220
      start: 219
    functionDepth: 0
    functionLinenumber: 219
    functionLinenumberEnd: 220
    functionName: RunningTCPQuestionGuard::RunningTCPQuestionGuard
    functionSourceFile: /src/pdns/pdns/recursordist/rec-tcp.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void RunningTCPQuestionGuard(int fileDesc)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: terminateTCPConnection
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:224,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 227
      start: 221
    functionDepth: 1
    functionLinenumber: 221
    functionLinenumberEnd: 227
    functionName: ~RunningTCPQuestionGuard()
    functionSourceFile: /src/pdns/pdns/recursordist/rec-tcp.cc
    functionUses: 0
    functionsReached:
    - terminateTCPConnection
    linkageType: ''
    returnType: void
    signature: void ~RunningTCPQuestionGuard()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 231
      start: 228
    functionDepth: 0
    functionLinenumber: 228
    functionLinenumberEnd: 231
    functionName: RunningTCPQuestionGuard::keep
    functionSourceFile: /src/pdns/pdns/recursordist/rec-tcp.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void keep()
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: RunningTCPQuestionGuard::keep
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:243,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 1
    argNames:
    - bytes
    argTypes:
    - ssize_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 245
      start: 232
    functionDepth: 1
    functionLinenumber: 232
    functionLinenumberEnd: 245
    functionName: RunningTCPQuestionGuard::handleTCPReadResult
    functionSourceFile: /src/pdns/pdns/recursordist/rec-tcp.cc
    functionUses: 0
    functionsReached:
    - RunningTCPQuestionGuard::keep
    linkageType: ''
    returnType: bool
    signature: bool handleTCPReadResult(int /* fd */, ssize_t bytes)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: match
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:253,1
    - Dst: info
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:255,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:255,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:258,1
    - Dst: isAllowNotifyForZone
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:262,1
    - Dst: info
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:264,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:264,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:264,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:267,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 2
    argNames:
    - ' comboWriter'
    - ' qname'
    argTypes:
    - std::unique_ptr<DNSComboWriter>
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 271
      start: 251
    functionDepth: 1
    functionLinenumber: 251
    functionLinenumberEnd: 271
    functionName: handleNotify
    functionSourceFile: /src/pdns/pdns/recursordist/rec-tcp.cc
    functionUses: 0
    functionsReached:
    - Logging::Loggable
    - info
    - match
    - isAllowNotifyForZone
    - at
    linkageType: ''
    returnType: bool
    signature: bool handleNotify(std::unique_ptr<DNSComboWriter>& comboWriter, const
      DNSName& qname)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: d_policyTags::empty
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:276,1
    - Dst: protobufLogQuery
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:277,1
    - Dst: d_ednssubnet::getSource
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:277,1
    - Dst: error
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:282,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:282,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:282,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:282,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 10
    argCount: 9
    argNames:
    - logQuery
    - ' luaconfsLocal'
    - ' comboWriter'
    - ' qname'
    - qtype
    - qclass
    - dnsheader
    - ' conn'
    - ' ednsVersion'
    argTypes:
    - bool
    - LocalStateHolder<LuaConfigItems>
    - std::unique_ptr<DNSComboWriter>
    - DNSName
    - QType
    - QClass
    - dnsheader*
    - shared_ptr<TCPConnection>
    - std::optional<uint32_t>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 285
      start: 273
    functionDepth: 5
    functionLinenumber: 273
    functionLinenumberEnd: 285
    functionName: doProtobufLogQuery
    functionSourceFile: /src/pdns/pdns/recursordist/rec-tcp.cc
    functionUses: 0
    functionsReached:
    - protobufLogQuery
    - d_ednssubnet::getSource
    - Logging::Loggable
    - what
    - d_policyTags::empty
    - error
    linkageType: ''
    returnType: void
    signature: void doProtobufLogQuery(bool logQuery, LocalStateHolder<LuaConfigItems>&
      luaconfsLocal, const std::unique_ptr<DNSComboWriter>& comboWriter, const DNSName&
      qname, QType qtype, QClass qclass, const dnsheader* dnsheader, const shared_ptr<TCPConnection>&
      conn, const std::optional<uint32_t>& ednsVersion)
  - BBCount: 34
    BranchProfiles: []
    Callsites:
    - Dst: isWildcardExpandedOntoItself
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:289,1
    - Dst: Utility::gettimeofday
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:291,1
    - Dst: DNSName::DNSName
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:293,1
    - Dst: d_eventTrace::setEnabled
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:304,1
    - Dst: d_eventTrace::enabled
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:305,1
    - Dst: matchOTConditions
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:305,1
    - Dst: SyncRes::eventTraceEnabledOnly
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:305,1
    - Dst: d_eventTrace::setEnabled
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:306,1
    - Dst: pdns::trace::timestamp
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:312,1
    - Dst: d_eventTrace::add
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:313,1
    - Dst: SyncRes::eventTraceEnabled
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:314,1
    - Dst: d_otTrace::clear
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:315,1
    - Dst: d_eventTrace::add
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:318,1
    - Dst: d_eventTrace::setParent
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:319,1
    - Dst: getLocal
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:322,1
    - Dst: checkProtobufExport
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:323,1
    - Dst: hasGettagFFIFunc
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:329,1
    - Dst: hasGettagFunc
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:329,1
    - Dst: static_cast<unsigned>
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:329,1
    - Dst: d_eventTrace::add
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:332,1
    - Dst: getQNameAndSubnet
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:336,1
    - Dst: SyncRes::eventTraceEnabled
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:338,1
    - Dst: d_eventTrace::add
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:339,1
    - Dst: SyncRes::eventTraceEnabled
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:342,1
    - Dst: pdns::trace::extractOTraceIDs
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:343,1
    - Dst: SyncRes::eventTraceEnabledOnly
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:344,1
    - Dst: matchOTConditions
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:344,1
    - Dst: ntohs
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:344,1
    - Dst: d_eventTrace::setEnabled
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:345,1
    - Dst: hasGettagFFIFunc
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:350,1
    - Dst: d_ednssubnet::getSource
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:351,1
    - Dst: d_eventTrace::add
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:352,1
    - Dst: gettag_ffi
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:353,1
    - Dst: d_eventTrace::add
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:354,1
    - Dst: hasGettagFunc
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:356,1
    - Dst: d_eventTrace::add
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:357,1
    - Dst: gettag
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:358,1
    - Dst: d_ednssubnet::getSource
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:358,1
    - Dst: d_eventTrace::add
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:359,1
    - Dst: error
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:371,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:371,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:371,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:371,1
    - Dst: log
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:375,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:375,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:375,1
    - Dst: log
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:380,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:380,1
    - Dst: match
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:384,1
    - Dst: data::data
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:388,1
    - Dst: dnsheader_aligned::get
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:389,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:392,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:393,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:394,1
    - Dst: getUniqueID
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:395,1
    - Dst: doProtobufLogQuery
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:399,1
    - Dst: ipfilter
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:403,1
    - Dst: info
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:406,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:406,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:406,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:408,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:414,1
    - Dst: info
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:416,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:416,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:416,1
    - Dst: static_cast<unsigned>
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:420,1
    - Dst: static_cast<unsigned>
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:420,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:421,1
    - Dst: info
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:423,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:423,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:423,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:423,1
    - Dst: Opcode::to_s
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:423,1
    - Dst: sendErrorOverTCP
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:425,1
    - Dst: keep
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:426,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:430,1
    - Dst: info
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:432,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:432,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:432,1
    - Dst: sendErrorOverTCP
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:434,1
    - Dst: keep
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:435,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:440,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:441,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:443,1
    - Dst: static_cast<unsigned>
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:446,1
    - Dst: handleNotify
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:447,1
    - Dst: static_cast<unsigned>
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:455,1
    - Dst: d_eventTrace::add
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:459,1
    - Dst: checkForCacheHit
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:460,1
    - Dst: d_eventTrace::add
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:461,1
    - Dst: info
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:465,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:465,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:466,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:466,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:466,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:467,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:467,1
    - Dst: d_eventTrace::add
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:470,1
    - Dst: sendResponseOverTCP
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:471,1
    - Dst: finishTCPReply
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:472,1
    - Dst: Utility::gettimeofday
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:474,1
    - Dst: uSec
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:475,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:476,1
    - Dst: d_eventTrace::add
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:477,1
    - Dst: RecEventTrace::EventScope::close
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:478,1
    - Dst: protobufLogResponse
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:483,1
    - Dst: d_eventTrace::enabled
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:486,1
    - Dst: SyncRes::eventTraceEnabled
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:486,1
    - Dst: info
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:487,1
    - Dst: d_eventTrace::toString
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:487,1
    - Dst: keep
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:489,1
    - Dst: updateSnap
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:490,1
    - Dst: static_cast<unsigned>
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:495,1
    - Dst: info
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:497,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:497,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:497,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:497,1
    - Dst: requestWipeCaches
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:500,1
    - Dst: removeReadFD
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:512,1
    - Dst: Utility::gettimeofday
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:515,1
    - Dst: setReadTTD
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:517,1
    - Dst: keep
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:519,1
    - Dst: RecEventTrace::EventScope::close
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:520,1
    - Dst: makeThread
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:521,1
    - Dst: release
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:521,1
    CyclomaticComplexity: 54
    EdgeCount: 54
    ICount: 148
    argCount: 4
    argNames:
    - ' comboWriter'
    - ' conn'
    - ' tcpGuard'
    - fileDesc
    argTypes:
    - std::unique_ptr<DNSComboWriter>
    - shared_ptr<TCPConnection>
    - RunningTCPQuestionGuard
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 523
      start: 287
    functionDepth: 6
    functionLinenumber: 287
    functionLinenumberEnd: 523
    functionName: doProcessTCPQuestion
    functionSourceFile: /src/pdns/pdns/recursordist/rec-tcp.cc
    functionUses: 0
    functionsReached:
    - log
    - d_ednssubnet::getSource
    - gettag_ffi
    - ntohs
    - SyncRes::eventTraceEnabledOnly
    - dnsheader_aligned::get
    - getUniqueID
    - handleNotify
    - protobufLogResponse
    - d_eventTrace::toString
    - setReadTTD
    - checkForCacheHit
    - release
    - removeReadFD
    - error
    - getQNameAndSubnet
    - d_eventTrace::enabled
    - Logging::Loggable
    - matchOTConditions
    - hasGettagFunc
    - QType
    - getLocal
    - match
    - Opcode::to_s
    - finishTCPReply
    - updateSnap
    - doProtobufLogQuery
    - data::data
    - at
    - d_eventTrace::setEnabled
    - RecEventTrace::EventScope::close
    - makeThread
    - checkProtobufExport
    - d_eventTrace::setParent
    - requestWipeCaches
    - isWildcardExpandedOntoItself
    - Utility::gettimeofday
    - gettag
    - ipfilter
    - SyncRes::eventTraceEnabled
    - static_cast<unsigned>
    - pdns::trace::extractOTraceIDs
    - std::move
    - what
    - d_otTrace::clear
    - info
    - keep
    - d_eventTrace::add
    - sendResponseOverTCP
    - DNSName::DNSName
    - uSec
    - sendErrorOverTCP
    - hasGettagFFIFunc
    - pdns::trace::timestamp
    linkageType: ''
    returnType: void
    signature: void doProcessTCPQuestion(std::unique_ptr<DNSComboWriter>& comboWriter,
      shared_ptr<TCPConnection>& conn, RunningTCPQuestionGuard& tcpGuard, int fileDesc)
  - BBCount: 32
    BranchProfiles: []
    Callsites:
    - Dst: boost::any_cast<shared_ptr<TCPConnection>>
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:527,1
    - Dst: recv
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:532,1
    - Dst: auto::getFD
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:532,1
    - Dst: auto::data::at
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:532,1
    - Dst: RunningTCPQuestionGuard::handleTCPReadResult
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:534,1
    - Dst: auto::data::resize
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:539,1
    - Dst: isProxyHeaderComplete
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:540,1
    - Dst: info
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:543,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:543,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:545,1
    - Dst: auto::data::resize
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:550,1
    - Dst: RunningTCPQuestionGuard::keep
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:551,1
    - Dst: parseProxyHeader
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:560,1
    - Dst: info
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:563,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:563,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:565,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:568,1
    - Dst: info
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:570,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:570,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:570,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:572,1
    - Dst: lookup
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:581,1
    - Dst: push_back
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:587,1
    - Dst: match
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:589,1
    - Dst: info
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:591,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:591,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:594,1
    - Dst: auto::data::resize
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:598,1
    - Dst: recv
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:604,1
    - Dst: auto::getFD
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:604,1
    - Dst: auto::data::data
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:604,1
    - Dst: auto::data::resize
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:610,1
    - Dst: RunningTCPQuestionGuard::handleTCPReadResult
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:615,1
    - Dst: recv
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:621,1
    - Dst: auto::getFD
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:621,1
    - Dst: auto::data::resize
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:625,1
    - Dst: RunningTCPQuestionGuard::handleTCPReadResult
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:629,1
    - Dst: info
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:631,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:631,1
    - Dst: recv
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:639,1
    - Dst: auto::getFD
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:639,1
    - Dst: RunningTCPQuestionGuard::handleTCPReadResult
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:641,1
    - Dst: info
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:643,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:643,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:648,1
    - Dst: info
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:650,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:650,1
    - Dst: std::make_unique<DNSComboWriter>
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:659,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:662,1
    - Dst: info
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:664,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:664,1
    - Dst: std::unique_ptr::setSocket
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:670,1
    - Dst: auto::getFD
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:670,1
    - Dst: std::unique_ptr::setRemote
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:672,1
    - Dst: std::unique_ptr::setSource
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:673,1
    - Dst: ComboAddress::reset
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:675,1
    - Dst: ComboAddress::getSocklen
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:677,1
    - Dst: getsockname
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:678,1
    - Dst: auto::getFD
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:678,1
    - Dst: reinterpret_cast<sockaddr*>
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:678,1
    - Dst: std::unique_ptr::setLocal
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:679,1
    - Dst: std::unique_ptr::setDestination
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:680,1
    - Dst: std::unique_ptr::setMappedSource
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:681,1
    - Dst: doProcessTCPQuestion
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:686,1
    - Dst: RunningTCPQuestionGuard::keep
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:690,1
    CyclomaticComplexity: 33
    EdgeCount: 33
    ICount: 130
    argCount: 2
    argNames:
    - fileDesc
    - ' var'
    argTypes:
    - int
    - FDMultiplexer::funcparam_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 691
      start: 525
    functionDepth: 7
    functionLinenumber: 525
    functionLinenumberEnd: 691
    functionName: handleRunningTCPQuestion
    functionSourceFile: /src/pdns/pdns/recursordist/rec-tcp.cc
    functionUses: 0
    functionsReached:
    - lookup
    - std::unique_ptr::setRemote
    - std::unique_ptr::setSource
    - auto::data::at
    - std::unique_ptr::setDestination
    - RunningTCPQuestionGuard::handleTCPReadResult
    - ComboAddress::getSocklen
    - reinterpret_cast<sockaddr*>
    - isProxyHeaderComplete
    - recv
    - static_cast<size_t>
    - Logging::Loggable
    - auto::getFD
    - getsockname
    - match
    - auto::data::data
    - at
    - auto::data::resize
    - pdns::max
    - boost::any_cast<shared_ptr<TCPConnection>>
    - push_back
    - RunningTCPQuestionGuard::keep
    - doProcessTCPQuestion
    - std::unique_ptr::setMappedSource
    - parseProxyHeader
    - std::make_unique<DNSComboWriter>
    - info
    - std::unique_ptr::setSocket
    - ComboAddress::reset
    - std::unique_ptr::setLocal
    linkageType: ''
    returnType: void
    signature: void handleRunningTCPQuestion(int fileDesc, FDMultiplexer::funcparam_t&
      var)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: accept
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:698,1
    - Dst: reinterpret_cast<struct sockaddr*>
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:698,1
    - Dst: closesocket
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:704,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:705,1
    - Dst: updateSnap
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:707,1
    - Dst: error
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:710,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:710,1
    - Dst: TCPConnection::getCurrentConnections
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:714,1
    - Dst: closeSock
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:715,1
    - Dst: numProcesses
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:718,1
    - Dst: closeSock
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:719,1
    - Dst: getsockname
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:725,1
    - Dst: reinterpret_cast<sockaddr*>
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:725,1
    - Dst: expectProxyProtocol
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:726,1
    - Dst: push_back
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:728,1
    - Dst: lookup
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:732,1
    - Dst: match
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:737,1
    - Dst: info
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:739,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:739,1
    - Dst: closeSock
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:741,1
    - Dst: count
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:745,1
    - Dst: closeSock
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:746,1
    - Dst: setNonBlocking
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:750,1
    - Dst: setTCPNoDelay
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:751,1
    - Dst: std::make_shared<TCPConnection>
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:752,1
    - Dst: std::shared_ptr::data::resize
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:759,1
    - Dst: Utility::gettimeofday
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:767,1
    - Dst: addReadFD
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:770,1
    - Dst: std::shared_ptr::getFD
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:770,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 56
    argCount: 2
    argNames:
    - fileDesc
    - ' var'
    argTypes:
    - int
    - FDMultiplexer::funcparam_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 771
      start: 694
    functionDepth: 1
    functionLinenumber: 694
    functionLinenumberEnd: 771
    functionName: handleNewTCPQuestion
    functionSourceFile: /src/pdns/pdns/recursordist/rec-tcp.cc
    functionUses: 0
    functionsReached:
    - closeSock
    - lookup
    - std::make_shared<TCPConnection>
    - error
    - reinterpret_cast<sockaddr*>
    - reinterpret_cast<struct sockaddr*>
    - Logging::Loggable
    - accept
    - setNonBlocking
    - addReadFD
    - getsockname
    - match
    - updateSnap
    - TCPConnection::getCurrentConnections
    - at
    - expectProxyProtocol
    - push_back
    - Utility::gettimeofday
    - std::shared_ptr::getFD
    - closesocket
    - count
    - setTCPNoDelay
    - numProcesses
    - info
    - std::shared_ptr::data::resize
    linkageType: ''
    returnType: void
    signature: void handleNewTCPQuestion(int fileDesc, [[maybe_unused]] FDMultiplexer::funcparam_t&
      var)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: TCPLOG
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:777,1
    - Dst: TCPLOG
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:787,1
    - Dst: alterFDToWrite
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:788,1
    - Dst: TCPLOG
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:793,1
    - Dst: removeReadFD
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:794,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:797,1
    - Dst: TCPLOG
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:806,1
    - Dst: alterFDToRead
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:807,1
    - Dst: TCPLOG
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:812,1
    - Dst: removeWriteFD
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:813,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:816,1
    - Dst: TCPLOG
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:824,1
    - Dst: addReadFD
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:825,1
    - Dst: TCPLOG
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:828,1
    - Dst: addWriteFD
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:829,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:834,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:840,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 59
    argCount: 3
    argNames:
    - oldstate
    - newstate
    - ' pid'
    argTypes:
    - IOState
    - IOState
    - std::shared_ptr<PacketID>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 843
      start: 775
    functionDepth: 1
    functionLinenumber: 775
    functionLinenumberEnd: 843
    functionName: TCPIOHandlerStateChange
    functionSourceFile: /src/pdns/pdns/recursordist/rec-tcp.cc
    functionUses: 0
    functionsReached:
    - alterFDToRead
    - std::runtime_error
    - addReadFD
    - TCPLOG
    - removeReadFD
    - removeWriteFD
    - addWriteFD
    - alterFDToWrite
    linkageType: ''
    returnType: void
    signature: void TCPIOHandlerStateChange(IOState oldstate, IOState newstate, std::shared_ptr<PacketID>&
      pid)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: boost::any_cast<std::shared_ptr<PacketID>>
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:847,1
    - Dst: assert
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:848,1
    - Dst: assert
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:849,1
    - Dst: auto::tcphandler::getDescriptor
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:849,1
    - Dst: TCPLOG
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:852,1
    - Dst: TCPLOG
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:859,1
    - Dst: auto::tcphandler::tryRead
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:863,1
    - Dst: TCPLOG
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:867,1
    - Dst: TCPLOG
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:868,1
    - Dst: auto::inMSG::resize
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:870,1
    - Dst: TCPIOHandlerStateChange
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:872,1
    - Dst: sendEvent
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:873,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:880,1
    - Dst: TCPLOG
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:886,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:886,1
    - Dst: TCPIOHandlerStateChange
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:888,1
    - Dst: sendEvent
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:889,1
    - Dst: TCPLOG
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:895,1
    - Dst: TCPLOG
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:897,1
    - Dst: auto::outMSG::size
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:897,1
    - Dst: auto::tcphandler::tryWrite
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:898,1
    - Dst: auto::outMSG::size
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:898,1
    - Dst: TCPLOG
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:899,1
    - Dst: auto::outMSG::size
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:899,1
    - Dst: TCPLOG
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:902,1
    - Dst: TCPIOHandlerStateChange
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:903,1
    - Dst: sendEvent
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:904,1
    - Dst: TCPLOG
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:908,1
    - Dst: TCPLOG
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:911,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:914,1
    - Dst: TCPLOG
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:920,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:920,1
    - Dst: TCPIOHandlerStateChange
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:922,1
    - Dst: sendEvent
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:923,1
    - Dst: TCPIOHandlerStateChange
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:930,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 69
    argCount: 2
    argNames:
    - fileDesc
    - ' var'
    argTypes:
    - int
    - FDMultiplexer::funcparam_t
    assertStmts:
    - condition: (fileDesc == pid->tcphandler->getDescriptor())
      pos:
        line_end: 848
        line_start: 848
        source_file: /src/pdns/pdns/recursordist/rec-tcp.cc
    - condition: (pid->tcphandler)
      pos:
        line_end: 847
        line_start: 847
        source_file: /src/pdns/pdns/recursordist/rec-tcp.cc
    constantsTouched: []
    func_position:
      end: 931
      start: 845
    functionDepth: 2
    functionLinenumber: 845
    functionLinenumberEnd: 931
    functionName: TCPIOHandlerIO
    functionSourceFile: /src/pdns/pdns/recursordist/rec-tcp.cc
    functionUses: 0
    functionsReached:
    - auto::tcphandler::tryWrite
    - auto::tcphandler::tryRead
    - std::runtime_error
    - auto::outMSG::size
    - what
    - TCPLOG
    - assert
    - TCPIOHandlerStateChange
    - auto::inMSG::resize
    - auto::tcphandler::getDescriptor
    - boost::any_cast<std::shared_ptr<PacketID>>
    - sendEvent
    linkageType: ''
    returnType: void
    signature: void TCPIOHandlerIO(int fileDesc, FDMultiplexer::funcparam_t& var)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: readFileIfThere
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:937,1
    - Dst: std::stoi
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:938,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:940,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:943,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:947,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:950,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 2
    argNames:
    - active
    - log
    argTypes:
    - bool
    - Logr::log_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 952
      start: 933
    functionDepth: 0
    functionLinenumber: 933
    functionLinenumberEnd: 952
    functionName: checkFastOpenSysctl
    functionSourceFile: /src/pdns/pdns/recursordist/rec-tcp.cc
    functionUses: 1
    functionsReached:
    - readFileIfThere
    - Logr::log_t::info
    - std::stoi
    linkageType: ''
    returnType: void
    signature: void checkFastOpenSysctl([[maybe_unused]] bool active, [[maybe_unused]]
      Logr::log_t log)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Socket::setNonBlocking
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:958,1
    - Dst: Socket::setFastOpenConnect
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:959,1
    - Dst: Logr::log_t::error
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:962,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:962,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - log
    argTypes:
    - Logr::log_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 964
      start: 954
    functionDepth: 0
    functionLinenumber: 954
    functionLinenumberEnd: 964
    functionName: checkTFOconnect
    functionSourceFile: /src/pdns/pdns/recursordist/rec-tcp.cc
    functionUses: 1
    functionsReached:
    - what
    - Logr::log_t::error
    - Socket::setFastOpenConnect
    - Socket::setNonBlocking
    linkageType: ''
    returnType: void
    signature: void checkTFOconnect(Logr::log_t log)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: TCPLOG
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:968,1
    - Dst: getDescriptor
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:968,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:968,1
    - Dst: std::make_shared<PacketID>
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:970,1
    - Dst: getDescriptor
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:972,1
    - Dst: TCPLOG
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:978,1
    - Dst: auto::outMSG::size
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:978,1
    - Dst: tryWrite
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:979,1
    - Dst: auto::outMSG::size
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:979,1
    - Dst: TCPLOG
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:980,1
    - Dst: auto::outMSG::size
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:980,1
    - Dst: TCPLOG
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:983,1
    - Dst: TCPLOG
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:988,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:988,1
    - Dst: TCPIOHandlerStateChange
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:993,1
    - Dst: waitEvent
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:996,1
    - Dst: TCPLOG
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:997,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:997,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:997,1
    - Dst: TCPLOG
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:999,1
    - Dst: TCPIOHandlerStateChange
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:1000,1
    - Dst: TCPLOG
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:1004,1
    - Dst: TCPIOHandlerStateChange
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:1005,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:1008,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:1008,1
    - Dst: TCPLOG
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:1010,1
    - Dst: TCPLOG
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:1014,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 36
    argCount: 2
    argNames:
    - ' data'
    - ' handler'
    argTypes:
    - PacketBuffer
    - shared_ptr<TCPIOHandler>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1016
      start: 966
    functionDepth: 2
    functionLinenumber: 966
    functionLinenumberEnd: 1016
    functionName: asendtcp
    functionSourceFile: /src/pdns/pdns/recursordist/rec-tcp.cc
    functionUses: 0
    functionsReached:
    - std::make_shared<PacketID>
    - what
    - TCPLOG
    - size
    - TCPIOHandlerStateChange
    - PacketBuffer::size
    - getDescriptor
    - waitEvent
    - tryWrite
    - auto::outMSG::size
    linkageType: ''
    returnType: LWResult::Result
    signature: LWResult::Result asendtcp(const PacketBuffer& data, shared_ptr<TCPIOHandler>&
      handler)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: TCPLOG
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:1020,1
    - Dst: getDescriptor
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:1020,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:1020,1
    - Dst: resize
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:1021,1
    - Dst: TCPLOG
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:1027,1
    - Dst: getDescriptor
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:1027,1
    - Dst: tryRead
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:1028,1
    - Dst: TCPLOG
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:1029,1
    - Dst: getDescriptor
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:1029,1
    - Dst: resize
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:1034,1
    - Dst: TCPLOG
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:1035,1
    - Dst: getDescriptor
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:1035,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:1042,1
    - Dst: TCPLOG
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:1047,1
    - Dst: getDescriptor
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:1047,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:1047,1
    - Dst: std::make_shared<PacketID>
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:1051,1
    - Dst: getDescriptor
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:1053,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:1055,1
    - Dst: clear
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:1061,1
    - Dst: TCPIOHandlerStateChange
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:1064,1
    - Dst: waitEvent
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:1066,1
    - Dst: authWaitTimeMSec
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:1066,1
    - Dst: TCPLOG
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:1067,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:1067,1
    - Dst: TCPLOG
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:1069,1
    - Dst: TCPIOHandlerStateChange
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:1070,1
    - Dst: TCPLOG
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:1074,1
    - Dst: TCPIOHandlerStateChange
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:1075,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:1078,1
    - Dst: TCPLOG
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:1080,1
    - Dst: TCPLOG
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:1084,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 52
    argCount: 4
    argNames:
    - ' data'
    - len
    - ' handler'
    - incompleteOkay
    argTypes:
    - PacketBuffer
    - size_t
    - shared_ptr<TCPIOHandler>
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1086
      start: 1018
    functionDepth: 2
    functionLinenumber: 1018
    functionLinenumberEnd: 1086
    functionName: arecvtcp
    functionSourceFile: /src/pdns/pdns/recursordist/rec-tcp.cc
    functionUses: 0
    functionsReached:
    - std::move
    - resize
    - std::runtime_error
    - std::make_shared<PacketID>
    - what
    - TCPLOG
    - size
    - authWaitTimeMSec
    - TCPIOHandlerStateChange
    - empty
    - getDescriptor
    - tryRead
    - clear
    - waitEvent
    linkageType: ''
    returnType: LWResult::Result
    signature: LWResult::Result arecvtcp(PacketBuffer& data, const size_t len, shared_ptr<TCPIOHandler>&
      handler, const bool incompleteOkay)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: stringtok
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:1093,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:1093,1
    - Dst: vector::empty
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:1095,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:1096,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:1102,1
    - Dst: FDWrapper
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:1108,1
    - Dst: socket
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:1108,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:1110,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:1110,1
    - Dst: setCloseOnExec
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:1112,1
    - Dst: setsockopt
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:1115,1
    - Dst: Logr::log_t::error
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:1117,1
    - Dst: _exit
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:1118,1
    - Dst: setsockopt
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:1120,1
    - Dst: Logr::log_t::error
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:1122,1
    - Dst: setsockopt
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:1126,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:1128,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:1133,1
    - Dst: Utility::setBindAny
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:1134,1
    - Dst: SSetsockopt
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:1140,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:1143,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:1143,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:1143,1
    - Dst: SSetsockopt
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:1147,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:1150,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:1150,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:1150,1
    - Dst: checkFastOpenSysctl
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:1156,1
    - Dst: setsockopt
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:1158,1
    - Dst: Logr::log_t::error
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:1160,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:1163,1
    - Dst: Socket::bind
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:1168,1
    - Dst: reinterpret_cast<struct sockaddr*>
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:1168,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:1171,1
    - Dst: ComboAddress::toStringWithPort
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:1171,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:1171,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:1173,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:1173,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:1173,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:1173,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:1173,1
    - Dst: setNonBlocking
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:1177,1
    - Dst: setSocketSendBuffer
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:1179,1
    - Dst: Logr::log_t::error
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:1182,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:1182,1
    - Dst: listen
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:1185,1
    - Dst: emplace_back
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:1186,1
    - Dst: insert
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:1187,1
    - Dst: vector::emplace_back
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:1188,1
    - Dst: ComboAddress::toStringWithPort
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:1188,1
    - Dst: auto::release
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:1196,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:1199,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:1199,1
    - Dst: Logging::IterLoggable
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:1199,1
    - Dst: vector::cbegin
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:1199,1
    - Dst: vector::cend
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:1199,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:1199,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:1199,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/rec-tcp.cc:1201,1
    CyclomaticComplexity: 25
    EdgeCount: 25
    ICount: 67
    argCount: 5
    argNames:
    - ' deferredAdds'
    - ' tcpSockets'
    - log
    - doLog
    - instances
    argTypes:
    - deferredAdd_t
    - std::set<int>
    - Logr::log_t
    - bool
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1202
      start: 1089
    functionDepth: 2
    functionLinenumber: 1089
    functionLinenumberEnd: 1202
    functionName: makeTCPServerSockets
    functionSourceFile: /src/pdns/pdns/recursordist/rec-tcp.cc
    functionUses: 1
    functionsReached:
    - PDNSException
    - stringerror
    - vector::cend
    - emplace_back
    - insert
    - vector::cbegin
    - std::string
    - auto::release
    - reinterpret_cast<struct sockaddr*>
    - stringtok
    - Logr::log_t::info
    - Logging::Loggable
    - setNonBlocking
    - Logr::log_t::error
    - setsockopt
    - Utility::setBindAny
    - Logging::IterLoggable
    - vector::size
    - listen
    - _exit
    - setSocketSendBuffer
    - vector::empty
    - setCloseOnExec
    - FDWrapper
    - checkFastOpenSysctl
    - arg
    - ComboAddress::toStringWithPort
    - socket
    - what
    - SSetsockopt
    - vector::emplace_back
    - Socket::bind
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int makeTCPServerSockets(deferredAdd_t& deferredAdds, std::set<int>&
      tcpSockets, Logr::log_t log, bool doLog, unsigned int instances)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: at
      Src: /src/pdns/pdns/recursordist/libssl.cc:61,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/libssl.cc:64,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 4
    argNames:
    - mode
    - type
    - file
    - line
    argTypes:
    - int
    - int
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 58
    functionDepth: 0
    functionLinenumber: 58
    functionLinenumberEnd: 66
    functionName: openssl_pthreads_locking_callback
    functionSourceFile: /src/pdns/pdns/recursordist/libssl.cc
    functionUses: 0
    functionsReached:
    - at
    linkageType: ''
    returnType: void
    signature: void openssl_pthreads_locking_callback(int mode, int type, const char
      *file, int line)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pthread_self
      Src: /src/pdns/pdns/recursordist/libssl.cc:70,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 68
    functionDepth: 0
    functionLinenumber: 68
    functionLinenumberEnd: 71
    functionName: openssl_pthreads_id_callback
    functionSourceFile: /src/pdns/pdns/recursordist/libssl.cc
    functionUses: 0
    functionsReached:
    - pthread_self
    linkageType: ''
    returnType: unsigned long
    signature: unsigned long openssl_pthreads_id_callback()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::vector<std::mutex>
      Src: /src/pdns/pdns/recursordist/libssl.cc:76,1
    - Dst: CRYPTO_num_locks
      Src: /src/pdns/pdns/recursordist/libssl.cc:76,1
    - Dst: CRYPTO_set_id_callback
      Src: /src/pdns/pdns/recursordist/libssl.cc:77,1
    - Dst: CRYPTO_set_locking_callback
      Src: /src/pdns/pdns/recursordist/libssl.cc:78,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 74
    functionDepth: 0
    functionLinenumber: 74
    functionLinenumberEnd: 79
    functionName: openssl_thread_setup
    functionSourceFile: /src/pdns/pdns/recursordist/libssl.cc
    functionUses: 4
    functionsReached:
    - CRYPTO_set_locking_callback
    - std::vector<std::mutex>
    - CRYPTO_set_id_callback
    - CRYPTO_num_locks
    linkageType: ''
    returnType: void
    signature: void openssl_thread_setup()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CRYPTO_set_locking_callback
      Src: /src/pdns/pdns/recursordist/libssl.cc:83,1
    - Dst: clear
      Src: /src/pdns/pdns/recursordist/libssl.cc:84,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 81
    functionDepth: 1
    functionLinenumber: 81
    functionLinenumberEnd: 85
    functionName: openssl_thread_cleanup
    functionSourceFile: /src/pdns/pdns/recursordist/libssl.cc
    functionUses: 2
    functionsReached:
    - clear
    - CRYPTO_set_locking_callback
    linkageType: ''
    returnType: void
    signature: void openssl_thread_cleanup()
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: fetch_add
      Src: /src/pdns/pdns/recursordist/libssl.cc:105,1
    - Dst: OPENSSL_init_crypto
      Src: /src/pdns/pdns/recursordist/libssl.cc:126,1
    - Dst: OPENSSL_init_ssl
      Src: /src/pdns/pdns/recursordist/libssl.cc:127,1
    - Dst: SSL_load_error_strings
      Src: /src/pdns/pdns/recursordist/libssl.cc:132,1
    - Dst: OpenSSL_add_ssl_algorithms
      Src: /src/pdns/pdns/recursordist/libssl.cc:134,1
    - Dst: openssl_thread_setup
      Src: /src/pdns/pdns/recursordist/libssl.cc:135,1
    - Dst: SSL_CTX_get_ex_new_index
      Src: /src/pdns/pdns/recursordist/libssl.cc:137,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/libssl.cc:140,1
    - Dst: SSL_CTX_get_ex_new_index
      Src: /src/pdns/pdns/recursordist/libssl.cc:143,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/libssl.cc:146,1
    - Dst: SSL_CTX_get_ex_new_index
      Src: /src/pdns/pdns/recursordist/libssl.cc:149,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/libssl.cc:152,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 21
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 103
    functionDepth: 0
    functionLinenumber: 103
    functionLinenumberEnd: 155
    functionName: registerOpenSSLUser
    functionSourceFile: /src/pdns/pdns/recursordist/libssl.cc
    functionUses: 16
    functionsReached:
    - fetch_add
    - std::runtime_error
    - openssl_thread_setup
    - OpenSSL_add_ssl_algorithms
    - OPENSSL_init_crypto
    - OPENSSL_init_ssl
    - SSL_CTX_get_ex_new_index
    - SSL_load_error_strings
    linkageType: ''
    returnType: void
    signature: void registerOpenSSLUser()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: fetch_sub
      Src: /src/pdns/pdns/recursordist/libssl.cc:159,1
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/libssl.cc:161,1
    - Dst: ENGINE_finish
      Src: /src/pdns/pdns/recursordist/libssl.cc:162,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/libssl.cc:162,1
    - Dst: reset
      Src: /src/pdns/pdns/recursordist/libssl.cc:163,1
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/libssl.cc:165,1
    - Dst: ERR_free_strings
      Src: /src/pdns/pdns/recursordist/libssl.cc:168,1
    - Dst: EVP_cleanup
      Src: /src/pdns/pdns/recursordist/libssl.cc:170,1
    - Dst: CONF_modules_finish
      Src: /src/pdns/pdns/recursordist/libssl.cc:172,1
    - Dst: CONF_modules_free
      Src: /src/pdns/pdns/recursordist/libssl.cc:173,1
    - Dst: CONF_modules_unload
      Src: /src/pdns/pdns/recursordist/libssl.cc:174,1
    - Dst: CRYPTO_cleanup_all_ex_data
      Src: /src/pdns/pdns/recursordist/libssl.cc:176,1
    - Dst: openssl_thread_cleanup
      Src: /src/pdns/pdns/recursordist/libssl.cc:177,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 180
      start: 157
    functionDepth: 0
    functionLinenumber: 157
    functionLinenumberEnd: 180
    functionName: unregisterOpenSSLUser
    functionSourceFile: /src/pdns/pdns/recursordist/libssl.cc
    functionUses: 6
    functionsReached:
    - reset
    - fetch_sub
    - CONF_modules_unload
    - EVP_cleanup
    - get
    - lock
    - CONF_modules_free
    - openssl_thread_cleanup
    - CONF_modules_finish
    - CRYPTO_cleanup_all_ex_data
    - ERR_free_strings
    - ENGINE_finish
    linkageType: ''
    returnType: void
    signature: void unregisterOpenSSLUser()
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: load
      Src: /src/pdns/pdns/recursordist/libssl.cc:185,1
    - Dst: registerOpenSSLUser
      Src: /src/pdns/pdns/recursordist/libssl.cc:189,1
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/libssl.cc:192,1
    - Dst: auto::count
      Src: /src/pdns/pdns/recursordist/libssl.cc:193,1
    - Dst: std::unique_ptr<OSSL_PROVIDER, decltype(&OSSL_PROVIDER_unload)>
      Src: /src/pdns/pdns/recursordist/libssl.cc:197,1
    - Dst: OSSL_PROVIDER_load
      Src: /src/pdns/pdns/recursordist/libssl.cc:197,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/libssl.cc:197,1
    - Dst: auto::insert
      Src: /src/pdns/pdns/recursordist/libssl.cc:202,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/libssl.cc:202,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - ' providerName'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 204
      start: 183
    functionDepth: 2
    functionLinenumber: 183
    functionLinenumberEnd: 204
    functionName: libssl_load_provider
    functionSourceFile: /src/pdns/pdns/recursordist/libssl.cc
    functionUses: 3
    functionsReached:
    - load
    - std::unique_ptr<OSSL_PROVIDER, decltype(&OSSL_PROVIDER_unload)>
    - OSSL_PROVIDER_load
    - std::move
    - lock
    - registerOpenSSLUser
    - auto::insert
    - c_str
    - auto::count
    linkageType: ''
    returnType: std::pair<bool, std::string>
    signature: std::pair<bool, std::string> libssl_load_provider(const std::string&
      providerName)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: load
      Src: /src/pdns/pdns/recursordist/libssl.cc:215,1
    - Dst: registerOpenSSLUser
      Src: /src/pdns/pdns/recursordist/libssl.cc:219,1
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/libssl.cc:222,1
    - Dst: auto::count
      Src: /src/pdns/pdns/recursordist/libssl.cc:223,1
    - Dst: std::unique_ptr<ENGINE, decltype(&ENGINE_free)>
      Src: /src/pdns/pdns/recursordist/libssl.cc:227,1
    - Dst: ENGINE_by_id
      Src: /src/pdns/pdns/recursordist/libssl.cc:227,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/libssl.cc:227,1
    - Dst: ENGINE_init
      Src: /src/pdns/pdns/recursordist/libssl.cc:232,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/libssl.cc:232,1
    - Dst: ENGINE_set_default_string
      Src: /src/pdns/pdns/recursordist/libssl.cc:237,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/libssl.cc:237,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/libssl.cc:237,1
    - Dst: auto::insert
      Src: /src/pdns/pdns/recursordist/libssl.cc:242,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/libssl.cc:242,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 22
    argCount: 2
    argNames:
    - ' engineName'
    - ' defaultString'
    argTypes:
    - std::string
    - std::optional<std::string>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 245
      start: 208
    functionDepth: 2
    functionLinenumber: 208
    functionLinenumberEnd: 245
    functionName: libssl_load_engine
    functionSourceFile: /src/pdns/pdns/recursordist/libssl.cc
    functionUses: 3
    functionsReached:
    - load
    - std::move
    - ENGINE_init
    - auto::get
    - lock
    - registerOpenSSLUser
    - std::unique_ptr<ENGINE, decltype(&ENGINE_free)>
    - auto::insert
    - ENGINE_set_default_string
    - c_str
    - auto::count
    - ENGINE_by_id
    linkageType: ''
    returnType: std::pair<bool, std::string>
    signature: std::pair<bool, std::string> libssl_load_engine([[maybe_unused]] const
      std::string& engineName, [[maybe_unused]] const std::optional<std::string>&
      defaultString)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SSL_get_SSL_CTX
      Src: /src/pdns/pdns/recursordist/libssl.cc:250,1
    - Dst: SSL_CTX_get_ex_data
      Src: /src/pdns/pdns/recursordist/libssl.cc:255,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - s
    argTypes:
    - SSL*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 256
      start: 248
    functionDepth: 0
    functionLinenumber: 248
    functionLinenumberEnd: 256
    functionName: libssl_get_ticket_key_callback_data
    functionSourceFile: /src/pdns/pdns/recursordist/libssl.cc
    functionUses: 6
    functionsReached:
    - SSL_CTX_get_ex_data
    - SSL_get_SSL_CTX
    linkageType: ''
    returnType: void
    signature: void * libssl_get_ticket_key_callback_data(SSL* s)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SSL_CTX_set_ex_data
      Src: /src/pdns/pdns/recursordist/libssl.cc:260,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ctx
    - data
    argTypes:
    - SSL_CTX*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 261
      start: 258
    functionDepth: 0
    functionLinenumber: 258
    functionLinenumberEnd: 261
    functionName: libssl_set_ticket_key_callback_data
    functionSourceFile: /src/pdns/pdns/recursordist/libssl.cc
    functionUses: 3
    functionsReached:
    - SSL_CTX_set_ex_data
    linkageType: ''
    returnType: void
    signature: void libssl_set_ticket_key_callback_data(SSL_CTX* ctx, void* data)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: getEncryptionKey
      Src: /src/pdns/pdns/recursordist/libssl.cc:270,1
    - Dst: auto::encrypt
      Src: /src/pdns/pdns/recursordist/libssl.cc:275,1
    - Dst: getDecryptionKey
      Src: /src/pdns/pdns/recursordist/libssl.cc:280,1
    - Dst: auto::decrypt
      Src: /src/pdns/pdns/recursordist/libssl.cc:286,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 6
    argNames:
    - ' keyring'
    - keyName
    - iv
    - ectx
    - hctx
    - enc
    argTypes:
    - OpenSSLTLSTicketKeysRing
    - unsigned char[]
    - unsigned char*
    - EVP_CIPHER_CTX*
    - HMAC_CTX*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 296
      start: 266
    functionDepth: 0
    functionLinenumber: 266
    functionLinenumberEnd: 296
    functionName: libssl_ticket_key_callback
    functionSourceFile: /src/pdns/pdns/recursordist/libssl.cc
    functionUses: 3
    functionsReached:
    - auto::decrypt
    - getEncryptionKey
    - auto::encrypt
    - getDecryptionKey
    linkageType: ''
    returnType: int
    signature: int libssl_ticket_key_callback(SSL* /* s */, OpenSSLTLSTicketKeysRing&
      keyring, unsigned char keyName[TLS_TICKETS_KEY_NAME_SIZE], unsigned char* iv,
      EVP_CIPHER_CTX* ectx, HMAC_CTX* hctx, int enc)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SSL_get_servername
      Src: /src/pdns/pdns/recursordist/libssl.cc:300,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ssl
    argTypes:
    - SSL*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 305
      start: 298
    functionDepth: 0
    functionLinenumber: 298
    functionLinenumberEnd: 305
    functionName: libssl_server_name_callback
    functionSourceFile: /src/pdns/pdns/recursordist/libssl.cc
    functionUses: 0
    functionsReached:
    - SSL_get_servername
    linkageType: ''
    returnType: int
    signature: int libssl_server_name_callback(SSL* ssl, int* /* alert */, void* /*
      arg */)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: SSL_get_SSL_CTX
      Src: /src/pdns/pdns/recursordist/libssl.cc:309,1
    - Dst: reinterpret_cast<TLSErrorCounters*>
      Src: /src/pdns/pdns/recursordist/libssl.cc:314,1
    - Dst: SSL_CTX_get_ex_data
      Src: /src/pdns/pdns/recursordist/libssl.cc:314,1
    - Dst: ERR_peek_last_error
      Src: /src/pdns/pdns/recursordist/libssl.cc:320,1
    - Dst: ERR_GET_REASON
      Src: /src/pdns/pdns/recursordist/libssl.cc:321,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 38
    argCount: 2
    argNames:
    - ssl
    - where
    argTypes:
    - SSL*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 355
      start: 307
    functionDepth: 0
    functionLinenumber: 307
    functionLinenumberEnd: 355
    functionName: libssl_info_callback
    functionSourceFile: /src/pdns/pdns/recursordist/libssl.cc
    functionUses: 0
    functionsReached:
    - ERR_peek_last_error
    - ERR_GET_REASON
    - reinterpret_cast<TLSErrorCounters*>
    - SSL_CTX_get_ex_data
    - SSL_get_SSL_CTX
    linkageType: ''
    returnType: void
    signature: void libssl_info_callback(const SSL *ssl, int where, int /* ret */)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SSL_CTX_set_ex_data
      Src: /src/pdns/pdns/recursordist/libssl.cc:359,1
    - Dst: SSL_CTX_set_info_callback
      Src: /src/pdns/pdns/recursordist/libssl.cc:360,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ' ctx'
    - counters
    argTypes:
    - SSL_CTX
    - TLSErrorCounters*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 361
      start: 357
    functionDepth: 0
    functionLinenumber: 357
    functionLinenumberEnd: 361
    functionName: libssl_set_error_counters_callback
    functionSourceFile: /src/pdns/pdns/recursordist/libssl.cc
    functionUses: 3
    functionsReached:
    - SSL_CTX_set_info_callback
    - SSL_CTX_set_ex_data
    linkageType: ''
    returnType: void
    signature: void libssl_set_error_counters_callback(SSL_CTX& ctx, TLSErrorCounters*
      counters)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: SSL_get_privatekey
      Src: /src/pdns/pdns/recursordist/libssl.cc:366,1
    - Dst: find
      Src: /src/pdns/pdns/recursordist/libssl.cc:372,1
    - Dst: EVP_PKEY_base_id
      Src: /src/pdns/pdns/recursordist/libssl.cc:372,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/libssl.cc:373,1
    - Dst: second::size
      Src: /src/pdns/pdns/recursordist/libssl.cc:377,1
    - Dst: OPENSSL_malloc
      Src: /src/pdns/pdns/recursordist/libssl.cc:383,1
    - Dst: memcpy
      Src: /src/pdns/pdns/recursordist/libssl.cc:388,1
    - Dst: second::data
      Src: /src/pdns/pdns/recursordist/libssl.cc:388,1
    - Dst: const_cast<char*>
      Src: /src/pdns/pdns/recursordist/libssl.cc:391,1
    - Dst: second::data
      Src: /src/pdns/pdns/recursordist/libssl.cc:391,1
    - Dst: SSL_set_tlsext_status_ocsp_resp
      Src: /src/pdns/pdns/recursordist/libssl.cc:393,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 2
    argNames:
    - ssl
    - ' ocspMap'
    argTypes:
    - SSL*
    - std::map<int, std::string>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 395
      start: 364
    functionDepth: 0
    functionLinenumber: 364
    functionLinenumberEnd: 395
    functionName: libssl_ocsp_stapling_callback
    functionSourceFile: /src/pdns/pdns/recursordist/libssl.cc
    functionUses: 3
    functionsReached:
    - memcpy
    - const_cast<char*>
    - SSL_set_tlsext_status_ocsp_resp
    - end
    - OPENSSL_malloc
    - EVP_PKEY_base_id
    - SSL_get_privatekey
    - second::data
    - find
    - second::size
    linkageType: ''
    returnType: int
    signature: int libssl_ocsp_stapling_callback(SSL* ssl, const std::map<int, std::string>&
      ocspMap)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: reinterpret_cast<const unsigned char *>
      Src: /src/pdns/pdns/recursordist/libssl.cc:399,1
    - Dst: data
      Src: /src/pdns/pdns/recursordist/libssl.cc:399,1
    - Dst: d2i_OCSP_RESPONSE
      Src: /src/pdns/pdns/recursordist/libssl.cc:400,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/libssl.cc:400,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/libssl.cc:402,1
    - Dst: OCSP_response_status
      Src: /src/pdns/pdns/recursordist/libssl.cc:405,1
    - Dst: std::unique_ptr::get
      Src: /src/pdns/pdns/recursordist/libssl.cc:405,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/libssl.cc:407,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/libssl.cc:407,1
    - Dst: OCSP_response_get1_basic
      Src: /src/pdns/pdns/recursordist/libssl.cc:410,1
    - Dst: std::unique_ptr::get
      Src: /src/pdns/pdns/recursordist/libssl.cc:410,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/libssl.cc:412,1
    - Dst: OCSP_resp_count
      Src: /src/pdns/pdns/recursordist/libssl.cc:415,1
    - Dst: std::unique_ptr::get
      Src: /src/pdns/pdns/recursordist/libssl.cc:415,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/libssl.cc:416,1
    - Dst: OCSP_resp_get0
      Src: /src/pdns/pdns/recursordist/libssl.cc:419,1
    - Dst: std::unique_ptr::get
      Src: /src/pdns/pdns/recursordist/libssl.cc:419,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/libssl.cc:421,1
    - Dst: OCSP_single_get0_status
      Src: /src/pdns/pdns/recursordist/libssl.cc:429,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/libssl.cc:431,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/libssl.cc:431,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/libssl.cc:434,1
    - Dst: OCSP_check_validity
      Src: /src/pdns/pdns/recursordist/libssl.cc:437,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/libssl.cc:439,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 26
    argCount: 1
    argNames:
    - ' response'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 443
      start: 397
    functionDepth: 0
    functionLinenumber: 397
    functionLinenumberEnd: 443
    functionName: libssl_validate_ocsp_response
    functionSourceFile: /src/pdns/pdns/recursordist/libssl.cc
    functionUses: 2
    functionsReached:
    - reinterpret_cast<const unsigned char *>
    - OCSP_single_get0_status
    - d2i_OCSP_RESPONSE
    - std::to_string
    - std::runtime_error
    - OCSP_response_status
    - size
    - OCSP_resp_get0
    - OCSP_resp_count
    - data
    - OCSP_response_get1_basic
    - std::unique_ptr::get
    - OCSP_check_validity
    linkageType: ''
    returnType: bool
    signature: bool libssl_validate_ocsp_response(const std::string& response)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/recursordist/libssl.cc:449,1
    - Dst: std::vector<int>::size
      Src: /src/pdns/pdns/recursordist/libssl.cc:449,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/libssl.cc:450,1
    - Dst: std::ifstream::read
      Src: /src/pdns/pdns/recursordist/libssl.cc:460,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/recursordist/libssl.cc:460,1
    - Dst: std::array::size
      Src: /src/pdns/pdns/recursordist/libssl.cc:460,1
    - Dst: std::ifstream::bad
      Src: /src/pdns/pdns/recursordist/libssl.cc:461,1
    - Dst: std::ifstream::close
      Src: /src/pdns/pdns/recursordist/libssl.cc:462,1
    - Dst: push_back
      Src: /src/pdns/pdns/recursordist/libssl.cc:463,1
    - Dst: std::string::append
      Src: /src/pdns/pdns/recursordist/libssl.cc:466,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/recursordist/libssl.cc:466,1
    - Dst: std::ifstream::gcount
      Src: /src/pdns/pdns/recursordist/libssl.cc:466,1
    - Dst: std::ifstream::close
      Src: /src/pdns/pdns/recursordist/libssl.cc:468,1
    - Dst: libssl_validate_ocsp_response
      Src: /src/pdns/pdns/recursordist/libssl.cc:471,1
    - Dst: std::map::insert
      Src: /src/pdns/pdns/recursordist/libssl.cc:472,1
    - Dst: std::vector<int>::at
      Src: /src/pdns/pdns/recursordist/libssl.cc:472,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/libssl.cc:472,1
    - Dst: push_back
      Src: /src/pdns/pdns/recursordist/libssl.cc:475,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/libssl.cc:475,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 23
    argCount: 3
    argNames:
    - ' ocspFiles'
    - keyTypes
    - ' warnings'
    argTypes:
    - std::vector<std::string>
    - std::vector<int>
    - std::vector<std::string>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 481
      start: 445
    functionDepth: 2
    functionLinenumber: 445
    functionLinenumberEnd: 481
    functionName: libssl_load_ocsp_responses
    functionSourceFile: /src/pdns/pdns/recursordist/libssl.cc
    functionUses: 4
    functionsReached:
    - std::move
    - std::vector<int>::size
    - std::ifstream::close
    - std::runtime_error
    - push_back
    - std::string::append
    - what
    - std::map::insert
    - size
    - libssl_validate_ocsp_response
    - std::ifstream::gcount
    - std::ifstream::read
    - std::vector<int>::at
    - std::array::data
    - std::ifstream::bad
    - std::array::size
    linkageType: ''
    returnType: std::map<int, std::string>
    signature: std::map<int, std::string> libssl_load_ocsp_responses(const std::vector<std::string>&
      ocspFiles, std::vector<int> keyTypes, std::vector<std::string>& warnings)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: EVP_sha256
      Src: /src/pdns/pdns/recursordist/libssl.cc:486,1
    - Dst: pdns::UniqueFilePtr
      Src: /src/pdns/pdns/recursordist/libssl.cc:488,1
    - Dst: fopen
      Src: /src/pdns/pdns/recursordist/libssl.cc:488,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/libssl.cc:488,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/libssl.cc:490,1
    - Dst: std::unique_ptr<X509, void(*)(X509*)>
      Src: /src/pdns/pdns/recursordist/libssl.cc:492,1
    - Dst: PEM_read_X509_AUX
      Src: /src/pdns/pdns/recursordist/libssl.cc:492,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/libssl.cc:492,1
    - Dst: pdns::UniqueFilePtr
      Src: /src/pdns/pdns/recursordist/libssl.cc:494,1
    - Dst: fopen
      Src: /src/pdns/pdns/recursordist/libssl.cc:494,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/libssl.cc:494,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/libssl.cc:496,1
    - Dst: std::unique_ptr<X509, void(*)(X509*)>
      Src: /src/pdns/pdns/recursordist/libssl.cc:498,1
    - Dst: PEM_read_X509_AUX
      Src: /src/pdns/pdns/recursordist/libssl.cc:498,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/libssl.cc:498,1
    - Dst: pdns::UniqueFilePtr
      Src: /src/pdns/pdns/recursordist/libssl.cc:499,1
    - Dst: fopen
      Src: /src/pdns/pdns/recursordist/libssl.cc:499,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/libssl.cc:499,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/libssl.cc:501,1
    - Dst: std::unique_ptr<EVP_PKEY, void(*)(EVP_PKEY*)>
      Src: /src/pdns/pdns/recursordist/libssl.cc:503,1
    - Dst: PEM_read_PrivateKey
      Src: /src/pdns/pdns/recursordist/libssl.cc:503,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/libssl.cc:503,1
    - Dst: auto::reset
      Src: /src/pdns/pdns/recursordist/libssl.cc:504,1
    - Dst: std::unique_ptr<OCSP_BASICRESP, void(*)(OCSP_BASICRESP*)>
      Src: /src/pdns/pdns/recursordist/libssl.cc:506,1
    - Dst: OCSP_BASICRESP_new
      Src: /src/pdns/pdns/recursordist/libssl.cc:506,1
    - Dst: std::unique_ptr<ASN1_TIME, void(*)(ASN1_TIME*)>
      Src: /src/pdns/pdns/recursordist/libssl.cc:507,1
    - Dst: X509_gmtime_adj
      Src: /src/pdns/pdns/recursordist/libssl.cc:507,1
    - Dst: std::unique_ptr<ASN1_TIME, void(*)(ASN1_TIME*)>
      Src: /src/pdns/pdns/recursordist/libssl.cc:508,1
    - Dst: X509_time_adj_ex
      Src: /src/pdns/pdns/recursordist/libssl.cc:508,1
    - Dst: std::unique_ptr<OCSP_CERTID, void(*)(OCSP_CERTID*)>
      Src: /src/pdns/pdns/recursordist/libssl.cc:510,1
    - Dst: OCSP_cert_to_id
      Src: /src/pdns/pdns/recursordist/libssl.cc:510,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/libssl.cc:510,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/libssl.cc:510,1
    - Dst: OCSP_basic_add1_status
      Src: /src/pdns/pdns/recursordist/libssl.cc:511,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/libssl.cc:511,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/libssl.cc:511,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/libssl.cc:511,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/libssl.cc:511,1
    - Dst: OCSP_basic_sign
      Src: /src/pdns/pdns/recursordist/libssl.cc:513,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/libssl.cc:513,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/libssl.cc:513,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/libssl.cc:513,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/libssl.cc:514,1
    - Dst: std::unique_ptr<OCSP_RESPONSE, void(*)(OCSP_RESPONSE*)>
      Src: /src/pdns/pdns/recursordist/libssl.cc:517,1
    - Dst: OCSP_response_create
      Src: /src/pdns/pdns/recursordist/libssl.cc:517,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/libssl.cc:517,1
    - Dst: std::unique_ptr<BIO, void(*)(BIO*)>
      Src: /src/pdns/pdns/recursordist/libssl.cc:518,1
    - Dst: BIO_new_file
      Src: /src/pdns/pdns/recursordist/libssl.cc:518,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/libssl.cc:518,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/libssl.cc:520,1
    - Dst: ASN1_i2d_bio
      Src: /src/pdns/pdns/recursordist/libssl.cc:524,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/libssl.cc:524,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/libssl.cc:524,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 22
    argCount: 6
    argNames:
    - ' certFile'
    - ' caCert'
    - ' caKey'
    - ' outFile'
    - ndays
    - nmin
    argTypes:
    - std::string
    - std::string
    - std::string
    - std::string
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 527
      start: 484
    functionDepth: 0
    functionLinenumber: 484
    functionLinenumberEnd: 527
    functionName: libssl_generate_ocsp_response
    functionSourceFile: /src/pdns/pdns/recursordist/libssl.cc
    functionUses: 1
    functionsReached:
    - OCSP_response_create
    - std::unique_ptr<X509, void(*)(X509*)>
    - fopen
    - X509_time_adj_ex
    - std::unique_ptr<OCSP_RESPONSE, void(*)(OCSP_RESPONSE*)>
    - std::unique_ptr<BIO, void(*)(BIO*)>
    - pdns::UniqueFilePtr
    - OCSP_cert_to_id
    - OCSP_BASICRESP_new
    - std::unique_ptr<ASN1_TIME, void(*)(ASN1_TIME*)>
    - c_str
    - std::unique_ptr<OCSP_CERTID, void(*)(OCSP_CERTID*)>
    - ASN1_i2d_bio
    - auto::get
    - std::runtime_error
    - OCSP_basic_add1_status
    - PEM_read_PrivateKey
    - EVP_sha256
    - PEM_read_X509_AUX
    - BIO_new_file
    - std::unique_ptr<OCSP_BASICRESP, void(*)(OCSP_BASICRESP*)>
    - auto::reset
    - OCSP_basic_sign
    - std::unique_ptr<EVP_PKEY, void(*)(EVP_PKEY*)>
    - X509_gmtime_adj
    linkageType: ''
    returnType: bool
    signature: bool libssl_generate_ocsp_response(const std::string& certFile, const
      std::string& caCert, const std::string& caKey, const std::string& outFile, int
      ndays, int nmin)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: SSL_CTX_get0_privatekey
      Src: /src/pdns/pdns/recursordist/libssl.cc:534,1
    - Dst: std::unique_ptr<SSL, void(*)(SSL*)>
      Src: /src/pdns/pdns/recursordist/libssl.cc:536,1
    - Dst: SSL_new
      Src: /src/pdns/pdns/recursordist/libssl.cc:536,1
    - Dst: SSL_get_privatekey
      Src: /src/pdns/pdns/recursordist/libssl.cc:540,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/libssl.cc:540,1
    - Dst: EVP_PKEY_base_id
      Src: /src/pdns/pdns/recursordist/libssl.cc:547,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - ' ctx'
    argTypes:
    - SSL_CTX
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 548
      start: 531
    functionDepth: 0
    functionLinenumber: 531
    functionLinenumberEnd: 548
    functionName: libssl_get_last_key_type
    functionSourceFile: /src/pdns/pdns/recursordist/libssl.cc
    functionUses: 0
    functionsReached:
    - auto::get
    - SSL_new
    - std::unique_ptr<SSL, void(*)(SSL*)>
    - EVP_PKEY_base_id
    - SSL_get_privatekey
    - SSL_CTX_get0_privatekey
    linkageType: ''
    returnType: int
    signature: int libssl_get_last_key_type(SSL_CTX& ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sk_GENERAL_NAME_pop_free
      Src: /src/pdns/pdns/recursordist/libssl.cc:553,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ptr
    argTypes:
    - STACK_OF*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 554
      start: 552
    functionDepth: 0
    functionLinenumber: 552
    functionLinenumberEnd: 554
    functionName: operator()(STACK_OF(GENERAL_NAME)* ptr) const noexcept
    functionSourceFile: /src/pdns/pdns/recursordist/libssl.cc
    functionUses: 0
    functionsReached:
    - sk_GENERAL_NAME_pop_free
    linkageType: ''
    returnType: void
    signature: void operator()(STACK_OF(GENERAL_NAME)* ptr) const noexcept
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: std::unique_ptr<STACK_OF(GENERAL_NAME), StackOfNamesDeleter>
      Src: /src/pdns/pdns/recursordist/libssl.cc:567,1
    - Dst: STACK_OF
      Src: /src/pdns/pdns/recursordist/libssl.cc:567,1
    - Dst: static_cast<STACK_OF(GENERAL_NAME)*>
      Src: /src/pdns/pdns/recursordist/libssl.cc:567,1
    - Dst: X509_get_ext_d2i
      Src: /src/pdns/pdns/recursordist/libssl.cc:567,1
    - Dst: sk_GENERAL_NAME_num
      Src: /src/pdns/pdns/recursordist/libssl.cc:569,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/libssl.cc:569,1
    - Dst: sk_GENERAL_NAME_value
      Src: /src/pdns/pdns/recursordist/libssl.cc:570,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/libssl.cc:570,1
    - Dst: ASN1_STRING_to_UTF8
      Src: /src/pdns/pdns/recursordist/libssl.cc:576,1
    - Dst: std::unordered_set::emplace
      Src: /src/pdns/pdns/recursordist/libssl.cc:580,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/recursordist/libssl.cc:580,1
    - Dst: OPENSSL_free
      Src: /src/pdns/pdns/recursordist/libssl.cc:581,1
    - Dst: X509_get_subject_name
      Src: /src/pdns/pdns/recursordist/libssl.cc:585,1
    - Dst: X509_NAME_get_index_by_NID
      Src: /src/pdns/pdns/recursordist/libssl.cc:588,1
    - Dst: X509_NAME_get_entry
      Src: /src/pdns/pdns/recursordist/libssl.cc:589,1
    - Dst: X509_NAME_ENTRY_get_data
      Src: /src/pdns/pdns/recursordist/libssl.cc:590,1
    - Dst: ASN1_STRING_to_UTF8
      Src: /src/pdns/pdns/recursordist/libssl.cc:592,1
    - Dst: std::unordered_set::emplace
      Src: /src/pdns/pdns/recursordist/libssl.cc:596,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/recursordist/libssl.cc:596,1
    - Dst: OPENSSL_free
      Src: /src/pdns/pdns/recursordist/libssl.cc:597,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 23
    argCount: 1
    argNames:
    - certificate
    argTypes:
    - X509*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 602
      start: 564
    functionDepth: 0
    functionLinenumber: 564
    functionLinenumberEnd: 602
    functionName: get_names_from_certificate
    functionSourceFile: /src/pdns/pdns/recursordist/libssl.cc
    functionUses: 2
    functionsReached:
    - sk_GENERAL_NAME_value
    - sk_GENERAL_NAME_num
    - ASN1_STRING_to_UTF8
    - auto::get
    - std::unordered_set::emplace
    - OPENSSL_free
    - X509_get_subject_name
    - X509_NAME_get_entry
    - std::unique_ptr<STACK_OF(GENERAL_NAME), StackOfNamesDeleter>
    - reinterpret_cast<const char*>
    - X509_NAME_get_index_by_NID
    - static_cast<STACK_OF(GENERAL_NAME)*>
    - STACK_OF
    - X509_get_ext_d2i
    - X509_NAME_ENTRY_get_data
    linkageType: ''
    returnType: std::unordered_set<std::string>
    signature: std::unordered_set<std::string> get_names_from_certificate(const X509*
      certificate)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SSL_CTX_get0_certificate
      Src: /src/pdns/pdns/recursordist/libssl.cc:606,1
    - Dst: get_names_from_certificate
      Src: /src/pdns/pdns/recursordist/libssl.cc:611,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ' ctx'
    argTypes:
    - SSL_CTX
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 612
      start: 604
    functionDepth: 0
    functionLinenumber: 604
    functionLinenumberEnd: 612
    functionName: get_names_from_last_certificate
    functionSourceFile: /src/pdns/pdns/recursordist/libssl.cc
    functionUses: 0
    functionsReached:
    - SSL_CTX_get0_certificate
    - get_names_from_certificate
    linkageType: ''
    returnType: std::unordered_set<std::string>
    signature: std::unordered_set<std::string> get_names_from_last_certificate(const
      SSL_CTX& ctx)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/libssl.cc:628,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 1
    argNames:
    - ' str'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 629
      start: 614
    functionDepth: 0
    functionLinenumber: 614
    functionLinenumberEnd: 629
    functionName: libssl_tls_version_from_string
    functionSourceFile: /src/pdns/pdns/recursordist/libssl.cc
    functionUses: 3
    functionsReached:
    - std::runtime_error
    linkageType: ''
    returnType: LibsslTLSVersion
    signature: LibsslTLSVersion libssl_tls_version_from_string(const std::string&
      str)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::map::find
      Src: /src/pdns/pdns/recursordist/libssl.cc:640,1
    - Dst: std::map::end
      Src: /src/pdns/pdns/recursordist/libssl.cc:641,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/libssl.cc:642,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/libssl.cc:642,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - version
    argTypes:
    - LibsslTLSVersion
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 645
      start: 631
    functionDepth: 0
    functionLinenumber: 631
    functionLinenumberEnd: 645
    functionName: libssl_tls_version_to_string
    functionSourceFile: /src/pdns/pdns/recursordist/libssl.cc
    functionUses: 15
    functionsReached:
    - std::map::find
    - std::map::end
    - std::to_string
    - std::runtime_error
    linkageType: ''
    returnType: std::string
    signature: std::string & libssl_tls_version_to_string(LibsslTLSVersion version)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: SSL_CTX_set_min_proto_version
      Src: /src/pdns/pdns/recursordist/libssl.cc:674,1
    - Dst: SSL_CTX_get_options
      Src: /src/pdns/pdns/recursordist/libssl.cc:696,1
    - Dst: SSL_CTX_set_options
      Src: /src/pdns/pdns/recursordist/libssl.cc:697,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 39
    argCount: 2
    argNames:
    - ' ctx'
    - version
    argTypes:
    - SSL_CTX
    - LibsslTLSVersion
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 700
      start: 647
    functionDepth: 0
    functionLinenumber: 647
    functionLinenumberEnd: 700
    functionName: libssl_set_min_tls_version
    functionSourceFile: /src/pdns/pdns/recursordist/libssl.cc
    functionUses: 2
    functionsReached:
    - SSL_CTX_set_options
    - SSL_CTX_get_options
    - SSL_CTX_set_min_proto_version
    linkageType: ''
    returnType: bool
    signature: bool libssl_set_min_tls_version(SSL_CTX& ctx, LibsslTLSVersion version)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: write_lock
      Src: /src/pdns/pdns/recursordist/libssl.cc:704,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - capacity
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 705
      start: 702
    functionDepth: 0
    functionLinenumber: 702
    functionLinenumberEnd: 705
    functionName: OpenSSLTLSTicketKeysRing::OpenSSLTLSTicketKeysRing
    functionSourceFile: /src/pdns/pdns/recursordist/libssl.cc
    functionUses: 0
    functionsReached:
    - write_lock
    linkageType: ''
    returnType: void
    signature: void OpenSSLTLSTicketKeysRing::OpenSSLTLSTicketKeysRing(size_t capacity)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 707
      start: 707
    functionDepth: 0
    functionLinenumber: 707
    functionLinenumberEnd: 707
    functionName: OpenSSLTLSTicketKeysRing::~OpenSSLTLSTicketKeysRing()
    functionSourceFile: /src/pdns/pdns/recursordist/libssl.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void OpenSSLTLSTicketKeysRing::~OpenSSLTLSTicketKeysRing()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: write_lock
      Src: /src/pdns/pdns/recursordist/libssl.cc:711,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/libssl.cc:711,1
    - Dst: TLSCtx::hasTicketsKeyAddedHook
      Src: /src/pdns/pdns/recursordist/libssl.cc:712,1
    - Dst: read_lock
      Src: /src/pdns/pdns/recursordist/libssl.cc:713,1
    - Dst: auto::content
      Src: /src/pdns/pdns/recursordist/libssl.cc:714,1
    - Dst: TLSCtx::getTicketsKeyAddedHook
      Src: /src/pdns/pdns/recursordist/libssl.cc:715,1
    - Dst: OPENSSL_cleanse
      Src: /src/pdns/pdns/recursordist/libssl.cc:717,1
    - Dst: auto::data
      Src: /src/pdns/pdns/recursordist/libssl.cc:717,1
    - Dst: auto::size
      Src: /src/pdns/pdns/recursordist/libssl.cc:717,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - ' newKey'
    argTypes:
    - std::shared_ptr<OpenSSLTLSTicketKey>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 719
      start: 709
    functionDepth: 0
    functionLinenumber: 709
    functionLinenumberEnd: 719
    functionName: OpenSSLTLSTicketKeysRing::addKey
    functionSourceFile: /src/pdns/pdns/recursordist/libssl.cc
    functionUses: 6
    functionsReached:
    - std::move
    - TLSCtx::getTicketsKeyAddedHook
    - auto::content
    - read_lock
    - auto::data
    - TLSCtx::hasTicketsKeyAddedHook
    - write_lock
    - OPENSSL_cleanse
    - auto::size
    linkageType: ''
    returnType: void
    signature: void OpenSSLTLSTicketKeysRing::addKey(std::shared_ptr<OpenSSLTLSTicketKey>&&
      newKey)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: read_lock
      Src: /src/pdns/pdns/recursordist/libssl.cc:723,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 724
      start: 721
    functionDepth: 0
    functionLinenumber: 721
    functionLinenumberEnd: 724
    functionName: OpenSSLTLSTicketKeysRing::getEncryptionKey
    functionSourceFile: /src/pdns/pdns/recursordist/libssl.cc
    functionUses: 0
    functionsReached:
    - read_lock
    linkageType: ''
    returnType: std::shared_ptr<OpenSSLTLSTicketKey>
    signature: std::shared_ptr<OpenSSLTLSTicketKey> OpenSSLTLSTicketKeysRing::getEncryptionKey()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: read_lock
      Src: /src/pdns/pdns/recursordist/libssl.cc:728,1
    - Dst: nameMatches
      Src: /src/pdns/pdns/recursordist/libssl.cc:730,1
    - Dst: auto::front
      Src: /src/pdns/pdns/recursordist/libssl.cc:731,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - name
    - ' activeKey'
    argTypes:
    - unsigned char[]
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 736
      start: 726
    functionDepth: 0
    functionLinenumber: 726
    functionLinenumberEnd: 736
    functionName: OpenSSLTLSTicketKeysRing::getDecryptionKey
    functionSourceFile: /src/pdns/pdns/recursordist/libssl.cc
    functionUses: 0
    functionsReached:
    - nameMatches
    - read_lock
    - auto::front
    linkageType: ''
    returnType: std::shared_ptr<OpenSSLTLSTicketKey>
    signature: std::shared_ptr<OpenSSLTLSTicketKey> OpenSSLTLSTicketKeysRing::getDecryptionKey(unsigned
      char name[TLS_TICKETS_KEY_NAME_SIZE], bool& activeKey)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: read_lock
      Src: /src/pdns/pdns/recursordist/libssl.cc:740,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 741
      start: 738
    functionDepth: 0
    functionLinenumber: 738
    functionLinenumberEnd: 741
    functionName: OpenSSLTLSTicketKeysRing::getKeysCount
    functionSourceFile: /src/pdns/pdns/recursordist/libssl.cc
    functionUses: 0
    functionsReached:
    - read_lock
    linkageType: ''
    returnType: size_t
    signature: size_t OpenSSLTLSTicketKeysRing::getKeysCount()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<OpenSSLTLSTicketKey>
      Src: /src/pdns/pdns/recursordist/libssl.cc:749,1
    - Dst: OpenSSLTLSTicketKeysRing::addKey
      Src: /src/pdns/pdns/recursordist/libssl.cc:750,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/libssl.cc:750,1
    - Dst: std::ifstream::fail
      Src: /src/pdns/pdns/recursordist/libssl.cc:753,1
    - Dst: std::ifstream::close
      Src: /src/pdns/pdns/recursordist/libssl.cc:762,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 1
    argNames:
    - ' keyFile'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 763
      start: 743
    functionDepth: 0
    functionLinenumber: 743
    functionLinenumberEnd: 763
    functionName: OpenSSLTLSTicketKeysRing::loadTicketsKeys
    functionSourceFile: /src/pdns/pdns/recursordist/libssl.cc
    functionUses: 0
    functionsReached:
    - std::move
    - std::ifstream::close
    - std::make_shared<OpenSSLTLSTicketKey>
    - std::ifstream::fail
    - OpenSSLTLSTicketKeysRing::addKey
    linkageType: ''
    returnType: void
    signature: void OpenSSLTLSTicketKeysRing::loadTicketsKeys(const std::string& keyFile)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<OpenSSLTLSTicketKey>
      Src: /src/pdns/pdns/recursordist/libssl.cc:769,1
    - Dst: OpenSSLTLSTicketKeysRing::addKey
      Src: /src/pdns/pdns/recursordist/libssl.cc:770,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/libssl.cc:770,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - ' key'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 779
      start: 765
    functionDepth: 0
    functionLinenumber: 765
    functionLinenumberEnd: 779
    functionName: OpenSSLTLSTicketKeysRing::loadTicketsKey
    functionSourceFile: /src/pdns/pdns/recursordist/libssl.cc
    functionUses: 0
    functionsReached:
    - std::move
    - OpenSSLTLSTicketKeysRing::addKey
    - std::make_shared<OpenSSLTLSTicketKey>
    linkageType: ''
    returnType: void
    signature: void OpenSSLTLSTicketKeysRing::loadTicketsKey(const std::string& key)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<OpenSSLTLSTicketKey>
      Src: /src/pdns/pdns/recursordist/libssl.cc:783,1
    - Dst: OpenSSLTLSTicketKeysRing::addKey
      Src: /src/pdns/pdns/recursordist/libssl.cc:784,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/libssl.cc:784,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 785
      start: 781
    functionDepth: 0
    functionLinenumber: 781
    functionLinenumberEnd: 785
    functionName: OpenSSLTLSTicketKeysRing::rotateTicketsKey
    functionSourceFile: /src/pdns/pdns/recursordist/libssl.cc
    functionUses: 0
    functionsReached:
    - std::move
    - OpenSSLTLSTicketKeysRing::addKey
    - std::make_shared<OpenSSLTLSTicketKey>
    linkageType: ''
    returnType: void
    signature: void OpenSSLTLSTicketKeysRing::rotateTicketsKey(time_t /* now */)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: RAND_bytes
      Src: /src/pdns/pdns/recursordist/libssl.cc:789,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/libssl.cc:790,1
    - Dst: RAND_bytes
      Src: /src/pdns/pdns/recursordist/libssl.cc:793,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/libssl.cc:794,1
    - Dst: RAND_bytes
      Src: /src/pdns/pdns/recursordist/libssl.cc:797,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/libssl.cc:798,1
    - Dst: sodium_mlock
      Src: /src/pdns/pdns/recursordist/libssl.cc:801,1
    - Dst: sodium_mlock
      Src: /src/pdns/pdns/recursordist/libssl.cc:802,1
    - Dst: sodium_mlock
      Src: /src/pdns/pdns/recursordist/libssl.cc:803,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 805
      start: 787
    functionDepth: 0
    functionLinenumber: 787
    functionLinenumberEnd: 805
    functionName: OpenSSLTLSTicketKey::OpenSSLTLSTicketKey
    functionSourceFile: /src/pdns/pdns/recursordist/libssl.cc
    functionUses: 0
    functionsReached:
    - RAND_bytes
    - sodium_mlock
    - std::runtime_error
    linkageType: ''
    returnType: void
    signature: void OpenSSLTLSTicketKey::OpenSSLTLSTicketKey()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: read
      Src: /src/pdns/pdns/recursordist/libssl.cc:809,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/recursordist/libssl.cc:809,1
    - Dst: read
      Src: /src/pdns/pdns/recursordist/libssl.cc:810,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/recursordist/libssl.cc:810,1
    - Dst: read
      Src: /src/pdns/pdns/recursordist/libssl.cc:811,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/recursordist/libssl.cc:811,1
    - Dst: fail
      Src: /src/pdns/pdns/recursordist/libssl.cc:813,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/libssl.cc:814,1
    - Dst: sodium_mlock
      Src: /src/pdns/pdns/recursordist/libssl.cc:817,1
    - Dst: sodium_mlock
      Src: /src/pdns/pdns/recursordist/libssl.cc:818,1
    - Dst: sodium_mlock
      Src: /src/pdns/pdns/recursordist/libssl.cc:819,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - ' file'
    argTypes:
    - std::ifstream
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 821
      start: 807
    functionDepth: 0
    functionLinenumber: 807
    functionLinenumberEnd: 821
    functionName: OpenSSLTLSTicketKey::OpenSSLTLSTicketKey
    functionSourceFile: /src/pdns/pdns/recursordist/libssl.cc
    functionUses: 0
    functionsReached:
    - reinterpret_cast<char*>
    - read
    - std::runtime_error
    - sodium_mlock
    - fail
    linkageType: ''
    returnType: void
    signature: void OpenSSLTLSTicketKey::OpenSSLTLSTicketKey(std::ifstream& file)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/recursordist/libssl.cc:825,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/libssl.cc:826,1
    - Dst: memcpy
      Src: /src/pdns/pdns/recursordist/libssl.cc:829,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/libssl.cc:829,1
    - Dst: memcpy
      Src: /src/pdns/pdns/recursordist/libssl.cc:831,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/libssl.cc:831,1
    - Dst: memcpy
      Src: /src/pdns/pdns/recursordist/libssl.cc:833,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/libssl.cc:833,1
    - Dst: sodium_mlock
      Src: /src/pdns/pdns/recursordist/libssl.cc:836,1
    - Dst: sodium_mlock
      Src: /src/pdns/pdns/recursordist/libssl.cc:837,1
    - Dst: sodium_mlock
      Src: /src/pdns/pdns/recursordist/libssl.cc:838,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 1
    argNames:
    - ' key'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 840
      start: 823
    functionDepth: 0
    functionLinenumber: 823
    functionLinenumberEnd: 840
    functionName: OpenSSLTLSTicketKey::OpenSSLTLSTicketKey
    functionSourceFile: /src/pdns/pdns/recursordist/libssl.cc
    functionUses: 0
    functionsReached:
    - memcpy
    - std::runtime_error
    - sodium_mlock
    - size
    - at
    linkageType: ''
    returnType: void
    signature: void OpenSSLTLSTicketKey::OpenSSLTLSTicketKey(const std::string& key)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sodium_munlock
      Src: /src/pdns/pdns/recursordist/libssl.cc:845,1
    - Dst: sodium_munlock
      Src: /src/pdns/pdns/recursordist/libssl.cc:846,1
    - Dst: sodium_munlock
      Src: /src/pdns/pdns/recursordist/libssl.cc:847,1
    - Dst: OPENSSL_cleanse
      Src: /src/pdns/pdns/recursordist/libssl.cc:849,1
    - Dst: OPENSSL_cleanse
      Src: /src/pdns/pdns/recursordist/libssl.cc:850,1
    - Dst: OPENSSL_cleanse
      Src: /src/pdns/pdns/recursordist/libssl.cc:851,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 853
      start: 842
    functionDepth: 0
    functionLinenumber: 842
    functionLinenumberEnd: 853
    functionName: OpenSSLTLSTicketKey::~OpenSSLTLSTicketKey()
    functionSourceFile: /src/pdns/pdns/recursordist/libssl.cc
    functionUses: 0
    functionsReached:
    - OPENSSL_cleanse
    - sodium_munlock
    linkageType: ''
    returnType: void
    signature: void OpenSSLTLSTicketKey::~OpenSSLTLSTicketKey()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/pdns/pdns/recursordist/libssl.cc:857,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - name
    argTypes:
    - unsigned char[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 858
      start: 855
    functionDepth: 0
    functionLinenumber: 855
    functionLinenumberEnd: 858
    functionName: OpenSSLTLSTicketKey::nameMatches
    functionSourceFile: /src/pdns/pdns/recursordist/libssl.cc
    functionUses: 0
    functionsReached:
    - memcmp
    linkageType: ''
    returnType: bool
    signature: bool OpenSSLTLSTicketKey::nameMatches(const unsigned char name[TLS_TICKETS_KEY_NAME_SIZE])
      const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::string::reserve
      Src: /src/pdns/pdns/recursordist/libssl.cc:863,1
    - Dst: std::string::append
      Src: /src/pdns/pdns/recursordist/libssl.cc:865,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/recursordist/libssl.cc:865,1
    - Dst: std::string::append
      Src: /src/pdns/pdns/recursordist/libssl.cc:866,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/recursordist/libssl.cc:866,1
    - Dst: std::string::append
      Src: /src/pdns/pdns/recursordist/libssl.cc:867,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/recursordist/libssl.cc:867,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 871
      start: 860
    functionDepth: 0
    functionLinenumber: 860
    functionLinenumberEnd: 871
    functionName: OpenSSLTLSTicketKey::content
    functionSourceFile: /src/pdns/pdns/recursordist/libssl.cc
    functionUses: 0
    functionsReached:
    - reinterpret_cast<const char*>
    - std::string::append
    - std::string::reserve
    linkageType: ''
    returnType: std::string
    signature: std::string OpenSSLTLSTicketKey::content() const
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/pdns/pdns/recursordist/libssl.cc:883,1
    - Dst: RAND_bytes
      Src: /src/pdns/pdns/recursordist/libssl.cc:885,1
    - Dst: EVP_EncryptInit_ex
      Src: /src/pdns/pdns/recursordist/libssl.cc:889,1
    - Dst: TLS_TICKETS_CIPHER_ALGO
      Src: /src/pdns/pdns/recursordist/libssl.cc:889,1
    - Dst: ParamsBuilder
      Src: /src/pdns/pdns/recursordist/libssl.cc:897,1
    - Dst: OSSL_PARAM_BLD_new
      Src: /src/pdns/pdns/recursordist/libssl.cc:897,1
    - Dst: OSSL_PARAM_BLD_push_utf8_string
      Src: /src/pdns/pdns/recursordist/libssl.cc:902,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/libssl.cc:902,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/libssl.cc:902,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/libssl.cc:902,1
    - Dst: Params
      Src: /src/pdns/pdns/recursordist/libssl.cc:906,1
    - Dst: OSSL_PARAM_BLD_to_param
      Src: /src/pdns/pdns/recursordist/libssl.cc:906,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/libssl.cc:906,1
    - Dst: EVP_MAC_CTX_set_params
      Src: /src/pdns/pdns/recursordist/libssl.cc:911,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/libssl.cc:911,1
    - Dst: EVP_MAC_init
      Src: /src/pdns/pdns/recursordist/libssl.cc:915,1
    - Dst: HMAC_Init_ex
      Src: /src/pdns/pdns/recursordist/libssl.cc:919,1
    - Dst: TLS_TICKETS_MAC_ALGO
      Src: /src/pdns/pdns/recursordist/libssl.cc:919,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 27
    argCount: 4
    argNames:
    - keyName
    - iv
    - ectx
    - hctx
    argTypes:
    - unsigned char[]
    - unsigned char*
    - EVP_CIPHER_CTX*
    - HMAC_CTX*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 925
      start: 880
    functionDepth: 0
    functionLinenumber: 880
    functionLinenumberEnd: 925
    functionName: OpenSSLTLSTicketKey::encrypt
    functionSourceFile: /src/pdns/pdns/recursordist/libssl.cc
    functionUses: 0
    functionsReached:
    - memcpy
    - OSSL_PARAM_BLD_new
    - RAND_bytes
    - auto::get
    - c_str
    - OSSL_PARAM_BLD_to_param
    - Params
    - EVP_MAC_init
    - TLS_TICKETS_MAC_ALGO
    - size
    - HMAC_Init_ex
    - EVP_EncryptInit_ex
    - TLS_TICKETS_CIPHER_ALGO
    - OSSL_PARAM_BLD_push_utf8_string
    - ParamsBuilder
    - EVP_MAC_CTX_set_params
    linkageType: ''
    returnType: int
    signature: int OpenSSLTLSTicketKey::encrypt(unsigned char keyName[TLS_TICKETS_KEY_NAME_SIZE],
      unsigned char* iv, EVP_CIPHER_CTX* ectx, HMAC_CTX* hctx) const
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: ParamsBuilder
      Src: /src/pdns/pdns/recursordist/libssl.cc:937,1
    - Dst: OSSL_PARAM_BLD_new
      Src: /src/pdns/pdns/recursordist/libssl.cc:937,1
    - Dst: OSSL_PARAM_BLD_push_utf8_string
      Src: /src/pdns/pdns/recursordist/libssl.cc:942,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/libssl.cc:942,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/libssl.cc:942,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/libssl.cc:942,1
    - Dst: Params
      Src: /src/pdns/pdns/recursordist/libssl.cc:946,1
    - Dst: OSSL_PARAM_BLD_to_param
      Src: /src/pdns/pdns/recursordist/libssl.cc:946,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/libssl.cc:946,1
    - Dst: EVP_MAC_CTX_set_params
      Src: /src/pdns/pdns/recursordist/libssl.cc:951,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/libssl.cc:951,1
    - Dst: EVP_MAC_init
      Src: /src/pdns/pdns/recursordist/libssl.cc:955,1
    - Dst: HMAC_Init_ex
      Src: /src/pdns/pdns/recursordist/libssl.cc:959,1
    - Dst: TLS_TICKETS_MAC_ALGO
      Src: /src/pdns/pdns/recursordist/libssl.cc:959,1
    - Dst: EVP_DecryptInit_ex
      Src: /src/pdns/pdns/recursordist/libssl.cc:964,1
    - Dst: TLS_TICKETS_CIPHER_ALGO
      Src: /src/pdns/pdns/recursordist/libssl.cc:964,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 23
    argCount: 3
    argNames:
    - iv
    - ectx
    - hctx
    argTypes:
    - unsigned char*
    - EVP_CIPHER_CTX*
    - HMAC_CTX*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 969
      start: 930
    functionDepth: 0
    functionLinenumber: 930
    functionLinenumberEnd: 969
    functionName: OpenSSLTLSTicketKey::decrypt
    functionSourceFile: /src/pdns/pdns/recursordist/libssl.cc
    functionUses: 0
    functionsReached:
    - OSSL_PARAM_BLD_new
    - auto::get
    - OSSL_PARAM_BLD_to_param
    - Params
    - EVP_MAC_init
    - TLS_TICKETS_MAC_ALGO
    - size
    - EVP_DecryptInit_ex
    - TLS_TICKETS_CIPHER_ALGO
    - c_str
    - EVP_MAC_CTX_set_params
    - OSSL_PARAM_BLD_push_utf8_string
    - ParamsBuilder
    - HMAC_Init_ex
    linkageType: ''
    returnType: bool
    signature: bool OpenSSLTLSTicketKey::decrypt(const unsigned char* iv, EVP_CIPHER_CTX*
      ectx, HMAC_CTX* hctx) const
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: std::unique_ptr<SSL_CTX, decltype(&SSL_CTX_free)>
      Src: /src/pdns/pdns/recursordist/libssl.cc:973,1
    - Dst: SSL_CTX_new
      Src: /src/pdns/pdns/recursordist/libssl.cc:973,1
    - Dst: SSLv23_server_method
      Src: /src/pdns/pdns/recursordist/libssl.cc:973,1
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/recursordist/libssl.cc:976,1
    - Dst: SSL_CTX_set_num_tickets
      Src: /src/pdns/pdns/recursordist/libssl.cc:993,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/libssl.cc:993,1
    - Dst: SSL_CTX_set_timeout
      Src: /src/pdns/pdns/recursordist/libssl.cc:1004,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/libssl.cc:1004,1
    - Dst: SSL_CTX_set_options
      Src: /src/pdns/pdns/recursordist/libssl.cc:1026,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/libssl.cc:1026,1
    - Dst: libssl_set_min_tls_version
      Src: /src/pdns/pdns/recursordist/libssl.cc:1027,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/libssl.cc:1028,1
    - Dst: libssl_tls_version_to_string
      Src: /src/pdns/pdns/recursordist/libssl.cc:1028,1
    - Dst: SSL_CTX_set_ecdh_auto
      Src: /src/pdns/pdns/recursordist/libssl.cc:1032,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/libssl.cc:1032,1
    - Dst: SSL_CTX_set_session_cache_mode
      Src: /src/pdns/pdns/recursordist/libssl.cc:1037,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/libssl.cc:1037,1
    - Dst: SSL_CTX_set_session_cache_mode
      Src: /src/pdns/pdns/recursordist/libssl.cc:1041,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/libssl.cc:1041,1
    - Dst: SSL_CTX_sess_set_cache_size
      Src: /src/pdns/pdns/recursordist/libssl.cc:1042,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/libssl.cc:1042,1
    - Dst: push_back
      Src: /src/pdns/pdns/recursordist/libssl.cc:1056,1
    - Dst: SSL_CTX_set_mode
      Src: /src/pdns/pdns/recursordist/libssl.cc:1060,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/libssl.cc:1060,1
    - Dst: SSL_CTX_set_tlsext_servername_callback
      Src: /src/pdns/pdns/recursordist/libssl.cc:1065,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/libssl.cc:1065,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 44
    argCount: 2
    argNames:
    - ' config'
    - ' warnings'
    argTypes:
    - TLSConfig
    - std::vector<std::string>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1068
      start: 971
    functionDepth: 0
    functionLinenumber: 971
    functionLinenumberEnd: 1068
    functionName: getNewServerContext
    functionSourceFile: /src/pdns/pdns/recursordist/libssl.cc
    functionUses: 2
    functionsReached:
    - SSL_CTX_set_mode
    - SSL_CTX_set_tlsext_servername_callback
    - libssl_set_min_tls_version
    - auto::get
    - SSL_CTX_set_options
    - SSL_CTX_set_num_tickets
    - SSLv23_server_method
    - SSL_CTX_set_timeout
    - std::runtime_error
    - push_back
    - SSL_CTX_set_ecdh_auto
    - SSL_CTX_sess_set_cache_size
    - libssl_tls_version_to_string
    - std::unique_ptr<SSL_CTX, decltype(&SSL_CTX_free)>
    - SSL_CTX_new
    - SSL_CTX_set_session_cache_mode
    - Logging::Logger::error
    linkageType: ''
    returnType: std::unique_ptr<SSL_CTX, decltype(&SSL_CTX_free)>
    signature: std::unique_ptr<SSL_CTX, decltype(&SSL_CTX_free)> getNewServerContext(const
      TLSConfig& config, [[maybe_unused]] std::vector<std::string>& warnings)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: d_sniMap::emplace
      Src: /src/pdns/pdns/recursordist/libssl.cc:1073,1
    - Dst: existingContextCallback
      Src: /src/pdns/pdns/recursordist/libssl.cc:1076,1
    - Dst: d_sniMap::size
      Src: /src/pdns/pdns/recursordist/libssl.cc:1078,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 4
    argNames:
    - ' serverContext'
    - newContext
    - ' names'
    - ' existingContextCallback'
    argTypes:
    - pdns::libssl::ServerContext
    - pdns::libssl::ServerContext::SharedContext
    - std::unordered_set<std::string>
    - std::function<void(pdns::libssl::ServerContext::SharedContext&)>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1082
      start: 1070
    functionDepth: 0
    functionLinenumber: 1070
    functionLinenumberEnd: 1082
    functionName: mergeNewCertificateAndKey
    functionSourceFile: /src/pdns/pdns/recursordist/libssl.cc
    functionUses: 0
    functionsReached:
    - existingContextCallback
    - d_sniMap::emplace
    - d_sniMap::size
    linkageType: ''
    returnType: void
    signature: void mergeNewCertificateAndKey(pdns::libssl::ServerContext& serverContext,
      pdns::libssl::ServerContext::SharedContext newContext, std::unordered_set<std::string>&
      names, const std::function<void(pdns::libssl::ServerContext::SharedContext&)>&
      existingContextCallback)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: getNewServerContext
      Src: /src/pdns/pdns/recursordist/libssl.cc:1163,1
    - Dst: libssl_setup_context_no_sni
      Src: /src/pdns/pdns/recursordist/libssl.cc:1168,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/libssl.cc:1168,1
    - Dst: d_ocspFiles::empty
      Src: /src/pdns/pdns/recursordist/libssl.cc:1172,1
    - Dst: libssl_load_ocsp_responses
      Src: /src/pdns/pdns/recursordist/libssl.cc:1174,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/libssl.cc:1174,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/libssl.cc:1177,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/libssl.cc:1177,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/libssl.cc:1177,1
    - Dst: d_ciphers::empty
      Src: /src/pdns/pdns/recursordist/libssl.cc:1182,1
    - Dst: SSL_CTX_set_cipher_list
      Src: /src/pdns/pdns/recursordist/libssl.cc:1182,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/libssl.cc:1182,1
    - Dst: d_ciphers::c_str
      Src: /src/pdns/pdns/recursordist/libssl.cc:1182,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/libssl.cc:1183,1
    - Dst: d_ciphers13::empty
      Src: /src/pdns/pdns/recursordist/libssl.cc:1187,1
    - Dst: SSL_CTX_set_ciphersuites
      Src: /src/pdns/pdns/recursordist/libssl.cc:1187,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/libssl.cc:1187,1
    - Dst: d_ciphers13::c_str
      Src: /src/pdns/pdns/recursordist/libssl.cc:1187,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/libssl.cc:1188,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/libssl.cc:1192,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/libssl.cc:1192,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 17
    argCount: 2
    argNames:
    - ' config'
    - ' ocspResponses'
    argTypes:
    - TLSConfig
    - std::map<int, std::string>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1193
      start: 1159
    functionDepth: 0
    functionLinenumber: 1159
    functionLinenumberEnd: 1193
    functionName: libssl_init_server_context_no_sni
    functionSourceFile: /src/pdns/pdns/recursordist/libssl.cc
    functionUses: 0
    functionsReached:
    - std::move
    - d_ciphers::empty
    - auto::get
    - SSL_CTX_set_cipher_list
    - d_ciphers13::c_str
    - std::runtime_error
    - what
    - SSL_CTX_set_ciphersuites
    - getNewServerContext
    - d_ocspFiles::empty
    - std::string
    - libssl_load_ocsp_responses
    - libssl_setup_context_no_sni
    - d_ciphers13::empty
    - d_ciphers::c_str
    linkageType: ''
    returnType: std::pair<std::unique_ptr<SSL_CTX, decltype(&SSL_CTX_free)>, std::vector<std::string>>
    signature: "std::pair<std::unique_ptr<SSL_CTX, decltype(&SSL_CTX_free)>, std::vector<std::string>>
      libssl_init_server_context_no_sni(const TLSConfig& config,\n                                                                                                                         [[maybe_unused]]
      std::map<int, std::string>& ocspResponses)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: libssl_setup_context
      Src: /src/pdns/pdns/recursordist/libssl.cc:1303,1
    - Dst: d_ocspFiles::empty
      Src: /src/pdns/pdns/recursordist/libssl.cc:1307,1
    - Dst: libssl_load_ocsp_responses
      Src: /src/pdns/pdns/recursordist/libssl.cc:1309,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/libssl.cc:1309,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/libssl.cc:1312,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/libssl.cc:1312,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/libssl.cc:1312,1
    - Dst: d_ciphers::empty
      Src: /src/pdns/pdns/recursordist/libssl.cc:1319,1
    - Dst: SSL_CTX_set_cipher_list
      Src: /src/pdns/pdns/recursordist/libssl.cc:1319,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/libssl.cc:1319,1
    - Dst: d_ciphers::c_str
      Src: /src/pdns/pdns/recursordist/libssl.cc:1319,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/libssl.cc:1320,1
    - Dst: d_ciphers13::empty
      Src: /src/pdns/pdns/recursordist/libssl.cc:1324,1
    - Dst: SSL_CTX_set_ciphersuites
      Src: /src/pdns/pdns/recursordist/libssl.cc:1324,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/libssl.cc:1324,1
    - Dst: d_ciphers13::c_str
      Src: /src/pdns/pdns/recursordist/libssl.cc:1324,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/libssl.cc:1325,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/libssl.cc:1330,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/libssl.cc:1330,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 18
    argCount: 1
    argNames:
    - ' config'
    argTypes:
    - TLSConfig
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1331
      start: 1295
    functionDepth: 0
    functionLinenumber: 1295
    functionLinenumberEnd: 1331
    functionName: libssl_init_server_context
    functionSourceFile: /src/pdns/pdns/recursordist/libssl.cc
    functionUses: 6
    functionsReached:
    - std::move
    - d_ciphers::empty
    - SSL_CTX_set_cipher_list
    - libssl_setup_context
    - d_ciphers13::c_str
    - std::runtime_error
    - what
    - SSL_CTX_set_ciphersuites
    - get
    - d_ocspFiles::empty
    - std::string
    - libssl_load_ocsp_responses
    - d_ciphers13::empty
    - d_ciphers::c_str
    linkageType: ''
    returnType: std::pair<pdns::libssl::ServerContext, std::vector<std::string>>
    signature: std::pair<pdns::libssl::ServerContext, std::vector<std::string>> libssl_init_server_context(const
      TLSConfig& config)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: SSL_get_SSL_CTX
      Src: /src/pdns/pdns/recursordist/libssl.cc:1336,1
    - Dst: reinterpret_cast<FILE*>
      Src: /src/pdns/pdns/recursordist/libssl.cc:1342,1
    - Dst: SSL_CTX_get_ex_data
      Src: /src/pdns/pdns/recursordist/libssl.cc:1342,1
    - Dst: fprintf
      Src: /src/pdns/pdns/recursordist/libssl.cc:1347,1
    - Dst: fflush
      Src: /src/pdns/pdns/recursordist/libssl.cc:1348,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - ssl
    - line
    argTypes:
    - SSL*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1349
      start: 1334
    functionDepth: 0
    functionLinenumber: 1334
    functionLinenumberEnd: 1349
    functionName: libssl_key_log_file_callback
    functionSourceFile: /src/pdns/pdns/recursordist/libssl.cc
    functionUses: 0
    functionsReached:
    - fprintf
    - reinterpret_cast<FILE*>
    - SSL_CTX_get_ex_data
    - fflush
    - SSL_get_SSL_CTX
    linkageType: ''
    returnType: void
    signature: void libssl_key_log_file_callback(const SSL* ssl, const char* line)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pdns::openFileForWriting
      Src: /src/pdns/pdns/recursordist/libssl.cc:1355,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/libssl.cc:1358,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/libssl.cc:1358,1
    - Dst: SSL_CTX_set_ex_data
      Src: /src/pdns/pdns/recursordist/libssl.cc:1360,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/libssl.cc:1360,1
    - Dst: SSL_CTX_set_keylog_callback
      Src: /src/pdns/pdns/recursordist/libssl.cc:1361,1
    - Dst: pdns::UniqueFilePtr
      Src: /src/pdns/pdns/recursordist/libssl.cc:1364,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - ctx
    - ' logFile'
    argTypes:
    - SSL_CTX*
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1366
      start: 1352
    functionDepth: 0
    functionLinenumber: 1352
    functionLinenumberEnd: 1366
    functionName: libssl_set_key_log_file
    functionSourceFile: /src/pdns/pdns/recursordist/libssl.cc
    functionUses: 6
    functionsReached:
    - auto::get
    - std::runtime_error
    - stringerror
    - pdns::openFileForWriting
    - SSL_CTX_set_keylog_callback
    - SSL_CTX_set_ex_data
    - pdns::UniqueFilePtr
    linkageType: ''
    returnType: pdns::UniqueFilePtr
    signature: pdns::UniqueFilePtr libssl_set_key_log_file([[maybe_unused]] SSL_CTX*
      ctx, [[maybe_unused]] const std::string& logFile)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SSL_CTX_set_alpn_select_cb
      Src: /src/pdns/pdns/recursordist/libssl.cc:1372,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ctx
    - arg
    argTypes:
    - SSL_CTX*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1374
      start: 1369
    functionDepth: 0
    functionLinenumber: 1369
    functionLinenumberEnd: 1374
    functionName: libssl_set_alpn_select_callback
    functionSourceFile: /src/pdns/pdns/recursordist/libssl.cc
    functionUses: 3
    functionsReached:
    - SSL_CTX_set_alpn_select_cb
    linkageType: ''
    returnType: void
    signature: void libssl_set_alpn_select_callback([[maybe_unused]] SSL_CTX* ctx,
      [[maybe_unused]] int (*callback)(SSL* ssl, const unsigned char** out, unsigned
      char* outlen, const unsigned char* inPtr, unsigned int inlen, void* arg), [[maybe_unused]]
      void* arg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/recursordist/libssl.cc:1381,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/recursordist/libssl.cc:1381,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/libssl.cc:1382,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/libssl.cc:1384,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/recursordist/libssl.cc:1385,1
    - Dst: std::vector::insert
      Src: /src/pdns/pdns/recursordist/libssl.cc:1386,1
    - Dst: std::vector::end
      Src: /src/pdns/pdns/recursordist/libssl.cc:1386,1
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/libssl.cc:1386,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/libssl.cc:1386,1
    - Dst: SSL_CTX_set_alpn_protos
      Src: /src/pdns/pdns/recursordist/libssl.cc:1388,1
    - Dst: std::vector::data
      Src: /src/pdns/pdns/recursordist/libssl.cc:1388,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/recursordist/libssl.cc:1388,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - ctx
    - ' protos'
    argTypes:
    - SSL_CTX*
    - std::vector<std::vector<uint8_t>>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1392
      start: 1376
    functionDepth: 2
    functionLinenumber: 1376
    functionLinenumberEnd: 1392
    functionName: libssl_set_alpn_protos
    functionSourceFile: /src/pdns/pdns/recursordist/libssl.cc
    functionUses: 3
    functionsReached:
    - std::vector::end
    - pdns::max
    - std::vector::push_back
    - std::vector::insert
    - SSL_CTX_set_alpn_protos
    - std::vector::size
    - std::runtime_error
    - end
    - size
    - begin
    - std::vector::data
    linkageType: ''
    returnType: bool
    signature: bool libssl_set_alpn_protos([[maybe_unused]] SSL_CTX* ctx, [[maybe_unused]]
      const std::vector<std::vector<uint8_t>>& protos)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: BIO_new
      Src: /src/pdns/pdns/recursordist/libssl.cc:1397,1
    - Dst: BIO_s_mem
      Src: /src/pdns/pdns/recursordist/libssl.cc:1397,1
    - Dst: ERR_print_errors
      Src: /src/pdns/pdns/recursordist/libssl.cc:1398,1
    - Dst: BIO_get_mem_data
      Src: /src/pdns/pdns/recursordist/libssl.cc:1400,1
    - Dst: std::string::empty
      Src: /src/pdns/pdns/recursordist/libssl.cc:1403,1
    - Dst: std::string::back
      Src: /src/pdns/pdns/recursordist/libssl.cc:1403,1
    - Dst: std::string::pop_back
      Src: /src/pdns/pdns/recursordist/libssl.cc:1404,1
    - Dst: std::replace
      Src: /src/pdns/pdns/recursordist/libssl.cc:1406,1
    - Dst: std::string::begin
      Src: /src/pdns/pdns/recursordist/libssl.cc:1406,1
    - Dst: std::string::end
      Src: /src/pdns/pdns/recursordist/libssl.cc:1406,1
    - Dst: BIO_free
      Src: /src/pdns/pdns/recursordist/libssl.cc:1407,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1409
      start: 1395
    functionDepth: 0
    functionLinenumber: 1395
    functionLinenumberEnd: 1409
    functionName: libssl_get_error_string
    functionSourceFile: /src/pdns/pdns/recursordist/libssl.cc
    functionUses: 9
    functionsReached:
    - std::string::back
    - std::string::begin
    - BIO_get_mem_data
    - ERR_print_errors
    - std::string::pop_back
    - std::string::end
    - std::string::empty
    - BIO_free
    - BIO_s_mem
    - std::replace
    - BIO_new
    linkageType: ''
    returnType: std::string
    signature: std::string libssl_get_error_string()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - mapsCount
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 36
      start: 33
    functionDepth: 0
    functionLinenumber: 33
    functionLinenumberEnd: 36
    functionName: NegCache::NegCache
    functionSourceFile: /src/pdns/pdns/recursordist/negcache.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void NegCache::NegCache(size_t mapsCount)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: NegCache::getEntriesCount
      Src: /src/pdns/pdns/recursordist/negcache.cc:42,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 38
    functionDepth: 1
    functionLinenumber: 38
    functionLinenumberEnd: 45
    functionName: NegCache::size
    functionSourceFile: /src/pdns/pdns/recursordist/negcache.cc
    functionUses: 0
    functionsReached:
    - NegCache::getEntriesCount
    linkageType: ''
    returnType: size_t
    signature: size_t NegCache::size() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sizeEstimate
      Src: /src/pdns/pdns/recursordist/negcache.cc:50,1
    - Dst: sizeEstimate
      Src: /src/pdns/pdns/recursordist/negcache.cc:51,1
    - Dst: sizeEstimate
      Src: /src/pdns/pdns/recursordist/negcache.cc:52,1
    - Dst: sizeEstimate
      Src: /src/pdns/pdns/recursordist/negcache.cc:53,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 47
    functionDepth: 0
    functionLinenumber: 47
    functionLinenumberEnd: 56
    functionName: NegCache::NegCacheEntry::sizeEstimate() const
    functionSourceFile: /src/pdns/pdns/recursordist/negcache.cc
    functionUses: 0
    functionsReached:
    - sizeEstimate
    linkageType: ''
    returnType: size_t
    signature: size_t NegCache::NegCacheEntry::sizeEstimate() const
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: isRoot
      Src: /src/pdns/pdns/recursordist/negcache.cc:70,1
    - Dst: getLastLabel
      Src: /src/pdns/pdns/recursordist/negcache.cc:74,1
    - Dst: NegCache::get
      Src: /src/pdns/pdns/recursordist/negcache.cc:77,1
    - Dst: NegCacheEntry::d_auth::isRoot
      Src: /src/pdns/pdns/recursordist/negcache.cc:78,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/negcache.cc:79,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 5
    argNames:
    - ' qname'
    - ' now'
    - ' negEntry'
    - serveStale
    - refresh
    argTypes:
    - DNSName
    - struct timeval
    - NegCacheEntry
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 67
    functionDepth: 0
    functionLinenumber: 67
    functionLinenumberEnd: 83
    functionName: NegCache::getRootNXTrust
    functionSourceFile: /src/pdns/pdns/recursordist/negcache.cc
    functionUses: 0
    functionsReached:
    - getLastLabel
    - std::move
    - NegCache::get
    - isRoot
    - NegCacheEntry::d_auth::isRoot
    linkageType: ''
    returnType: bool
    signature: bool NegCache::getRootNXTrust(const DNSName& qname, const struct timeval&
      now, NegCacheEntry& negEntry, bool serveStale, bool refresh)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::max
      Src: /src/pdns/pdns/recursordist/negcache.cc:90,1
    - Dst: static_cast<time_t>
      Src: /src/pdns/pdns/recursordist/negcache.cc:90,1
    - Dst: std::max
      Src: /src/pdns/pdns/recursordist/negcache.cc:91,1
    - Dst: std::min
      Src: /src/pdns/pdns/recursordist/negcache.cc:91,1
    - Dst: std::min
      Src: /src/pdns/pdns/recursordist/negcache.cc:92,1
    - Dst: static_cast<time_t>
      Src: /src/pdns/pdns/recursordist/negcache.cc:92,1
    - Dst: std::min
      Src: /src/pdns/pdns/recursordist/negcache.cc:93,1
    - Dst: pushAlmostExpiredTask
      Src: /src/pdns/pdns/recursordist/negcache.cc:99,1
    - Dst: Netmask
      Src: /src/pdns/pdns/recursordist/negcache.cc:99,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - now
    - ' entry'
    - qtype
    argTypes:
    - time_t
    - negcache_t::iterator
    - QType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 85
    functionDepth: 1
    functionLinenumber: 85
    functionLinenumberEnd: 100
    functionName: NegCache::updateStaleEntry
    functionSourceFile: /src/pdns/pdns/recursordist/negcache.cc
    functionUses: 0
    functionsReached:
    - Netmask
    - std::min
    - pushAlmostExpiredTask
    - std::max
    - static_cast<time_t>
    linkageType: ''
    returnType: void
    signature: void NegCache::updateStaleEntry(time_t now, negcache_t::iterator& entry,
      QType qtype)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: getMap
      Src: /src/pdns/pdns/recursordist/negcache.cc:113,1
    - Dst: NegCache::lock
      Src: /src/pdns/pdns/recursordist/negcache.cc:114,1
    - Dst: auto::d_map::get
      Src: /src/pdns/pdns/recursordist/negcache.cc:116,1
    - Dst: equal_range
      Src: /src/pdns/pdns/recursordist/negcache.cc:117,1
    - Dst: auto::d_map::project
      Src: /src/pdns/pdns/recursordist/negcache.cc:123,1
    - Dst: auto::isEntryUsable
      Src: /src/pdns/pdns/recursordist/negcache.cc:126,1
    - Dst: moveCacheItemToFront
      Src: /src/pdns/pdns/recursordist/negcache.cc:128,1
    - Dst: NegCache::updateStaleEntry
      Src: /src/pdns/pdns/recursordist/negcache.cc:134,1
    - Dst: moveCacheItemToBack
      Src: /src/pdns/pdns/recursordist/negcache.cc:139,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 18
    argCount: 7
    argNames:
    - ' qname'
    - qtype
    - ' now'
    - ' negEntry'
    - typeMustMatch
    - serveStale
    - refresh
    argTypes:
    - DNSName
    - QType
    - struct timeval
    - NegCacheEntry
    - bool
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 146
      start: 111
    functionDepth: 2
    functionLinenumber: 111
    functionLinenumberEnd: 146
    functionName: NegCache::get
    functionSourceFile: /src/pdns/pdns/recursordist/negcache.cc
    functionUses: 1
    functionsReached:
    - auto::isEntryUsable
    - equal_range
    - NegCache::lock
    - getMap
    - auto::d_map::project
    - moveCacheItemToBack
    - auto::d_map::get
    - moveCacheItemToFront
    - NegCache::updateStaleEntry
    linkageType: ''
    returnType: bool
    signature: bool NegCache::get(const DNSName& qname, QType qtype, const struct
      timeval& now, NegCacheEntry& negEntry, bool typeMustMatch, bool serveStale,
      bool refresh)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: sizeEstimate
      Src: /src/pdns/pdns/recursordist/negcache.cc:155,1
    - Dst: getMap
      Src: /src/pdns/pdns/recursordist/negcache.cc:159,1
    - Dst: NegCache::lock
      Src: /src/pdns/pdns/recursordist/negcache.cc:160,1
    - Dst: lruReplacingInsert
      Src: /src/pdns/pdns/recursordist/negcache.cc:161,1
    - Dst: NegCache::incEntriesCount
      Src: /src/pdns/pdns/recursordist/negcache.cc:163,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - ' negEntry'
    argTypes:
    - NegCacheEntry
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 165
      start: 153
    functionDepth: 1
    functionLinenumber: 153
    functionLinenumberEnd: 165
    functionName: NegCache::add
    functionSourceFile: /src/pdns/pdns/recursordist/negcache.cc
    functionUses: 0
    functionsReached:
    - lruReplacingInsert
    - sizeEstimate
    - NegCache::lock
    - getMap
    - NegCache::incEntriesCount
    linkageType: ''
    returnType: void
    signature: void NegCache::add(const NegCacheEntry& negEntry)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: getMap
      Src: /src/pdns/pdns/recursordist/negcache.cc:176,1
    - Dst: auto::d_map::equal_range
      Src: /src/pdns/pdns/recursordist/negcache.cc:177,1
    - Dst: std::tie
      Src: /src/pdns/pdns/recursordist/negcache.cc:177,1
    - Dst: std::min
      Src: /src/pdns/pdns/recursordist/negcache.cc:182,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 4
    argNames:
    - ' qname'
    - qtype
    - newState
    - capTTD
    argTypes:
    - DNSName
    - QType
    - vState
    - std::optional<time_t>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 185
      start: 174
    functionDepth: 1
    functionLinenumber: 174
    functionLinenumberEnd: 185
    functionName: NegCache::updateValidationStatus
    functionSourceFile: /src/pdns/pdns/recursordist/negcache.cc
    functionUses: 0
    functionsReached:
    - auto::d_map::equal_range
    - std::min
    - std::tie
    - getMap
    linkageType: ''
    returnType: void
    signature: void NegCache::updateValidationStatus(const DNSName& qname, const QType
      qtype, const vState newState, std::optional<time_t> capTTD)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getMap
      Src: /src/pdns/pdns/recursordist/negcache.cc:194,1
    - Dst: NegCache::lock
      Src: /src/pdns/pdns/recursordist/negcache.cc:195,1
    - Dst: auto::d_map::count
      Src: /src/pdns/pdns/recursordist/negcache.cc:196,1
    - Dst: std::tie
      Src: /src/pdns/pdns/recursordist/negcache.cc:196,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' qname'
    argTypes:
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 197
      start: 192
    functionDepth: 1
    functionLinenumber: 192
    functionLinenumberEnd: 197
    functionName: NegCache::count
    functionSourceFile: /src/pdns/pdns/recursordist/negcache.cc
    functionUses: 0
    functionsReached:
    - std::tie
    - NegCache::lock
    - getMap
    - auto::d_map::count
    linkageType: ''
    returnType: size_t
    signature: size_t NegCache::count(const DNSName& qname)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getMap
      Src: /src/pdns/pdns/recursordist/negcache.cc:207,1
    - Dst: NegCache::lock
      Src: /src/pdns/pdns/recursordist/negcache.cc:208,1
    - Dst: auto::d_map::count
      Src: /src/pdns/pdns/recursordist/negcache.cc:209,1
    - Dst: std::tie
      Src: /src/pdns/pdns/recursordist/negcache.cc:209,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' qname'
    - qtype
    argTypes:
    - DNSName
    - QType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 210
      start: 205
    functionDepth: 1
    functionLinenumber: 205
    functionLinenumberEnd: 210
    functionName: NegCache::count
    functionSourceFile: /src/pdns/pdns/recursordist/negcache.cc
    functionUses: 0
    functionsReached:
    - std::tie
    - NegCache::lock
    - getMap
    - auto::d_map::count
    linkageType: ''
    returnType: size_t
    signature: size_t NegCache::count(const DNSName& qname, const QType qtype)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: NegCache::lock
      Src: /src/pdns/pdns/recursordist/negcache.cc:224,1
    - Dst: auto::d_map::lower_bound
      Src: /src/pdns/pdns/recursordist/negcache.cc:225,1
    - Dst: std::tie
      Src: /src/pdns/pdns/recursordist/negcache.cc:225,1
    - Dst: auto::d_map::end
      Src: /src/pdns/pdns/recursordist/negcache.cc:225,1
    - Dst: auto::d_name::isPartOf
      Src: /src/pdns/pdns/recursordist/negcache.cc:226,1
    - Dst: auto::d_map::erase
      Src: /src/pdns/pdns/recursordist/negcache.cc:229,1
    - Dst: NegCache::decEntriesCount
      Src: /src/pdns/pdns/recursordist/negcache.cc:231,1
    - Dst: getMap
      Src: /src/pdns/pdns/recursordist/negcache.cc:237,1
    - Dst: NegCache::lock
      Src: /src/pdns/pdns/recursordist/negcache.cc:238,1
    - Dst: auto::d_map::equal_range
      Src: /src/pdns/pdns/recursordist/negcache.cc:239,1
    - Dst: std::tie
      Src: /src/pdns/pdns/recursordist/negcache.cc:239,1
    - Dst: auto::d_map::erase
      Src: /src/pdns/pdns/recursordist/negcache.cc:242,1
    - Dst: NegCache::decEntriesCount
      Src: /src/pdns/pdns/recursordist/negcache.cc:244,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 2
    argNames:
    - ' name'
    - subtree
    argTypes:
    - DNSName
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 247
      start: 219
    functionDepth: 1
    functionLinenumber: 219
    functionLinenumberEnd: 247
    functionName: NegCache::wipe
    functionSourceFile: /src/pdns/pdns/recursordist/negcache.cc
    functionUses: 0
    functionsReached:
    - auto::d_map::equal_range
    - auto::d_name::isPartOf
    - auto::d_map::lower_bound
    - NegCache::lock
    - getMap
    - auto::d_map::end
    - std::tie
    - auto::d_map::erase
    - NegCache::decEntriesCount
    linkageType: ''
    returnType: size_t
    signature: size_t NegCache::wipe(const DNSName& name, bool subtree)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: getMap
      Src: /src/pdns/pdns/recursordist/negcache.cc:252,1
    - Dst: NegCache::lock
      Src: /src/pdns/pdns/recursordist/negcache.cc:253,1
    - Dst: auto::d_map::equal_range
      Src: /src/pdns/pdns/recursordist/negcache.cc:254,1
    - Dst: std::tie
      Src: /src/pdns/pdns/recursordist/negcache.cc:254,1
    - Dst: auto::d_map::erase
      Src: /src/pdns/pdns/recursordist/negcache.cc:258,1
    - Dst: NegCache::decEntriesCount
      Src: /src/pdns/pdns/recursordist/negcache.cc:260,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - ' qname'
    - qtype
    argTypes:
    - DNSName
    - QType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 267
      start: 249
    functionDepth: 1
    functionLinenumber: 249
    functionLinenumberEnd: 267
    functionName: NegCache::wipeTyped
    functionSourceFile: /src/pdns/pdns/recursordist/negcache.cc
    functionUses: 0
    functionsReached:
    - auto::d_map::equal_range
    - NegCache::lock
    - getMap
    - std::tie
    - auto::d_map::erase
    - NegCache::decEntriesCount
    linkageType: ''
    returnType: size_t
    signature: size_t NegCache::wipeTyped(const DNSName& qname, QType qtype)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: NegCache::lock
      Src: /src/pdns/pdns/recursordist/negcache.cc:275,1
    - Dst: auto::d_map::clear
      Src: /src/pdns/pdns/recursordist/negcache.cc:276,1
    - Dst: NegCache::clearEntriesCount
      Src: /src/pdns/pdns/recursordist/negcache.cc:277,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 279
      start: 272
    functionDepth: 1
    functionLinenumber: 272
    functionLinenumberEnd: 279
    functionName: NegCache::clear
    functionSourceFile: /src/pdns/pdns/recursordist/negcache.cc
    functionUses: 0
    functionsReached:
    - NegCache::lock
    - NegCache::clearEntriesCount
    - auto::d_map::clear
    linkageType: ''
    returnType: void
    signature: void NegCache::clear()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: NegCache::size
      Src: /src/pdns/pdns/recursordist/negcache.cc:288,1
    - Dst: pruneMutexCollectionsVector
      Src: /src/pdns/pdns/recursordist/negcache.cc:289,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - now
    - maxEntries
    argTypes:
    - time_t
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 290
      start: 286
    functionDepth: 0
    functionLinenumber: 286
    functionLinenumberEnd: 290
    functionName: NegCache::prune
    functionSourceFile: /src/pdns/pdns/recursordist/negcache.cc
    functionUses: 0
    functionsReached:
    - pruneMutexCollectionsVector
    - NegCache::size
    linkageType: ''
    returnType: void
    signature: void NegCache::prune(time_t now, size_t maxEntries)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dup
      Src: /src/pdns/pdns/recursordist/negcache.cc:299,1
    - Dst: pdns::UniqueFilePtr
      Src: /src/pdns/pdns/recursordist/negcache.cc:303,1
    - Dst: fdopen
      Src: /src/pdns/pdns/recursordist/negcache.cc:303,1
    - Dst: close
      Src: /src/pdns/pdns/recursordist/negcache.cc:305,1
    - Dst: fprintf
      Src: /src/pdns/pdns/recursordist/negcache.cc:308,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/negcache.cc:308,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/recursordist/negcache.cc:313,1
    - Dst: NegCache::lock
      Src: /src/pdns/pdns/recursordist/negcache.cc:316,1
    - Dst: auto::d_map::size
      Src: /src/pdns/pdns/recursordist/negcache.cc:317,1
    - Dst: fprintf
      Src: /src/pdns/pdns/recursordist/negcache.cc:318,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/negcache.cc:318,1
    - Dst: std::min
      Src: /src/pdns/pdns/recursordist/negcache.cc:319,1
    - Dst: std::max
      Src: /src/pdns/pdns/recursordist/negcache.cc:320,1
    - Dst: auto::d_map::get
      Src: /src/pdns/pdns/recursordist/negcache.cc:322,1
    - Dst: fprintf
      Src: /src/pdns/pdns/recursordist/negcache.cc:326,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/negcache.cc:326,1
    - Dst: d_name::toString
      Src: /src/pdns/pdns/recursordist/negcache.cc:326,1
    - Dst: d_qtype::toString
      Src: /src/pdns/pdns/recursordist/negcache.cc:326,1
    - Dst: d_auth::toString
      Src: /src/pdns/pdns/recursordist/negcache.cc:326,1
    - Dst: vStateToString
      Src: /src/pdns/pdns/recursordist/negcache.cc:326,1
    - Dst: fprintf
      Src: /src/pdns/pdns/recursordist/negcache.cc:328,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/negcache.cc:328,1
    - Dst: d_name::toString
      Src: /src/pdns/pdns/recursordist/negcache.cc:328,1
    - Dst: DNSRecordContent::NumberToType
      Src: /src/pdns/pdns/recursordist/negcache.cc:328,1
    - Dst: getContent
      Src: /src/pdns/pdns/recursordist/negcache.cc:328,1
    - Dst: vStateToString
      Src: /src/pdns/pdns/recursordist/negcache.cc:328,1
    - Dst: fprintf
      Src: /src/pdns/pdns/recursordist/negcache.cc:331,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/negcache.cc:331,1
    - Dst: d_name::toString
      Src: /src/pdns/pdns/recursordist/negcache.cc:331,1
    - Dst: getContent
      Src: /src/pdns/pdns/recursordist/negcache.cc:331,1
    - Dst: fprintf
      Src: /src/pdns/pdns/recursordist/negcache.cc:334,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/negcache.cc:334,1
    - Dst: d_name::toString
      Src: /src/pdns/pdns/recursordist/negcache.cc:334,1
    - Dst: DNSRecordContent::NumberToType
      Src: /src/pdns/pdns/recursordist/negcache.cc:334,1
    - Dst: getContent
      Src: /src/pdns/pdns/recursordist/negcache.cc:334,1
    - Dst: vStateToString
      Src: /src/pdns/pdns/recursordist/negcache.cc:334,1
    - Dst: fprintf
      Src: /src/pdns/pdns/recursordist/negcache.cc:337,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/negcache.cc:337,1
    - Dst: d_name::toString
      Src: /src/pdns/pdns/recursordist/negcache.cc:337,1
    - Dst: getContent
      Src: /src/pdns/pdns/recursordist/negcache.cc:337,1
    - Dst: fprintf
      Src: /src/pdns/pdns/recursordist/negcache.cc:341,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/negcache.cc:341,1
    - Dst: NegCache::size
      Src: /src/pdns/pdns/recursordist/negcache.cc:341,1
    - Dst: NegCache::size
      Src: /src/pdns/pdns/recursordist/negcache.cc:341,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 27
    argCount: 3
    argNames:
    - fileDesc
    - maxCacheEntries
    - now
    argTypes:
    - int
    - size_t
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 343
      start: 297
    functionDepth: 1
    functionLinenumber: 297
    functionLinenumberEnd: 343
    functionName: NegCache::doDump
    functionSourceFile: /src/pdns/pdns/recursordist/negcache.cc
    functionUses: 0
    functionsReached:
    - fprintf
    - d_qtype::toString
    - pdns::UniqueFilePtr
    - d_name::toString
    - auto::d_map::size
    - d_auth::toString
    - DNSRecordContent::NumberToType
    - std::max
    - pdns::max
    - auto::get
    - NegCache::lock
    - dup
    - fdopen
    - std::min
    - getContent
    - auto::d_map::get
    - vStateToString
    - close
    - NegCache::size
    linkageType: ''
    returnType: size_t
    signature: size_t NegCache::doDump(int fileDesc, size_t maxCacheEntries, time_t
      now)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 40
    functionDepth: 0
    functionLinenumber: 40
    functionLinenumberEnd: 40
    functionName: FrameStreamLogger::FrameStreamLogger
    functionSourceFile: /src/pdns/pdns/recursordist/fstrm_logger.hh
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void FrameStreamLogger(const FrameStreamLogger&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 41
    functionDepth: 0
    functionLinenumber: 41
    functionLinenumberEnd: 41
    functionName: FrameStreamLogger::FrameStreamLogger
    functionSourceFile: /src/pdns/pdns/recursordist/fstrm_logger.hh
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void FrameStreamLogger(FrameStreamLogger&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 42
    functionDepth: 0
    functionLinenumber: 42
    functionLinenumberEnd: 42
    functionName: '& operator=(const FrameStreamLogger&)'
    functionSourceFile: /src/pdns/pdns/recursordist/fstrm_logger.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: FrameStreamLogger
    signature: FrameStreamLogger & operator=(const FrameStreamLogger&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 43
    functionName: '& operator=(FrameStreamLogger&&)'
    functionSourceFile: /src/pdns/pdns/recursordist/fstrm_logger.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: FrameStreamLogger
    signature: FrameStreamLogger & operator=(FrameStreamLogger&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 47
    functionDepth: 0
    functionLinenumber: 47
    functionLinenumberEnd: 50
    functionName: FrameStreamLogger::address
    functionSourceFile: /src/pdns/pdns/recursordist/fstrm_logger.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string address() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 52
    functionDepth: 0
    functionLinenumber: 52
    functionLinenumberEnd: 55
    functionName: FrameStreamLogger::name
    functionSourceFile: /src/pdns/pdns/recursordist/fstrm_logger.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string name() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/fstrm_logger.hh:59,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/fstrm_logger.hh:59,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/fstrm_logger.hh:59,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 57
    functionDepth: 0
    functionLinenumber: 57
    functionLinenumberEnd: 60
    functionName: FrameStreamLogger::toString
    functionSourceFile: /src/pdns/pdns/recursordist/fstrm_logger.hh
    functionUses: 0
    functionsReached:
    - std::to_string
    linkageType: ''
    returnType: std::string
    signature: std::string toString() override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 62
    functionDepth: 0
    functionLinenumber: 62
    functionLinenumberEnd: 68
    functionName: FrameStreamLogger::getStats
    functionSourceFile: /src/pdns/pdns/recursordist/fstrm_logger.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: RemoteLoggerInterface::Stats
    signature: RemoteLoggerInterface::Stats getStats() override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 93
    functionDepth: 0
    functionLinenumber: 93
    functionLinenumberEnd: 93
    functionName: FrameStreamLogger::FrameStreamLogger
    functionSourceFile: /src/pdns/pdns/recursordist/fstrm_logger.hh
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void FrameStreamLogger(const FrameStreamLogger&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 94
    functionDepth: 0
    functionLinenumber: 94
    functionLinenumberEnd: 94
    functionName: FrameStreamLogger::FrameStreamLogger
    functionSourceFile: /src/pdns/pdns/recursordist/fstrm_logger.hh
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void FrameStreamLogger(FrameStreamLogger&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 95
    functionDepth: 0
    functionLinenumber: 95
    functionLinenumberEnd: 95
    functionName: '& operator=(const FrameStreamLogger&)'
    functionSourceFile: /src/pdns/pdns/recursordist/fstrm_logger.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: FrameStreamLogger
    signature: FrameStreamLogger & operator=(const FrameStreamLogger&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 96
    functionDepth: 0
    functionLinenumber: 96
    functionLinenumberEnd: 96
    functionName: '& operator=(FrameStreamLogger&&)'
    functionSourceFile: /src/pdns/pdns/recursordist/fstrm_logger.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: FrameStreamLogger
    signature: FrameStreamLogger & operator=(FrameStreamLogger&&)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: OID_LENGTH
      Src: /src/pdns/pdns/recursordist/rec-snmp.cc:69,1
    - Dst: find
      Src: /src/pdns/pdns/recursordist/rec-snmp.cc:73,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/rec-snmp.cc:74,1
    - Dst: getStatByName
      Src: /src/pdns/pdns/recursordist/rec-snmp.cc:78,1
    - Dst: SNMPAgent::setCounter64Value
      Src: /src/pdns/pdns/recursordist/rec-snmp.cc:80,1
    - Dst: SNMPAgent::setCounter64Value
      Src: /src/pdns/pdns/recursordist/rec-snmp.cc:82,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 3
    argNames:
    - reginfo
    - reqinfo
    - requests
    argTypes:
    - netsnmp_handler_registration*
    - netsnmp_agent_request_info*
    - netsnmp_request_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 60
    functionDepth: 1
    functionLinenumber: 60
    functionLinenumberEnd: 83
    functionName: handleCounter64Stats
    functionSourceFile: /src/pdns/pdns/recursordist/rec-snmp.cc
    functionUses: 0
    functionsReached:
    - getStatByName
    - end
    - OID_LENGTH
    - SNMPAgent::setCounter64Value
    - find
    linkageType: ''
    returnType: int
    signature: "int handleCounter64Stats(netsnmp_mib_handler* /* handler */,\n                                netsnmp_handler_registration*
      reginfo,\n                                netsnmp_agent_request_info* reqinfo,\n
      \                               netsnmp_request_info* requests)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: OID_LENGTH
      Src: /src/pdns/pdns/recursordist/rec-snmp.cc:94,1
    - Dst: SNMPAgent::setCounter64Value
      Src: /src/pdns/pdns/recursordist/rec-snmp.cc:98,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - reginfo
    - reqinfo
    - requests
    argTypes:
    - netsnmp_handler_registration*
    - netsnmp_agent_request_info*
    - netsnmp_request_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 85
    functionDepth: 0
    functionLinenumber: 85
    functionLinenumberEnd: 99
    functionName: handleDisabledCounter64Stats
    functionSourceFile: /src/pdns/pdns/recursordist/rec-snmp.cc
    functionUses: 0
    functionsReached:
    - OID_LENGTH
    - SNMPAgent::setCounter64Value
    linkageType: ''
    returnType: int
    signature: "int handleDisabledCounter64Stats(netsnmp_mib_handler* /* handler */,\n
      \                                       netsnmp_handler_registration* reginfo,\n
      \                                       netsnmp_agent_request_info* reqinfo,\n
      \                                       netsnmp_request_info* requests)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/recursordist/rec-snmp.cc:103,1
    - Dst: OID_LENGTH
      Src: /src/pdns/pdns/recursordist/rec-snmp.cc:103,1
    - Dst: withName
      Src: /src/pdns/pdns/recursordist/rec-snmp.cc:104,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-snmp.cc:104,1
    - Dst: find
      Src: /src/pdns/pdns/recursordist/rec-snmp.cc:108,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/rec-snmp.cc:108,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/rec-snmp.cc:108,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/rec-snmp.cc:108,1
    - Dst: withName
      Src: /src/pdns/pdns/recursordist/rec-snmp.cc:109,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-snmp.cc:109,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/rec-snmp.cc:113,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/rec-snmp.cc:113,1
    - Dst: netsnmp_register_scalar
      Src: /src/pdns/pdns/recursordist/rec-snmp.cc:114,1
    - Dst: netsnmp_create_handler_registration
      Src: /src/pdns/pdns/recursordist/rec-snmp.cc:114,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/rec-snmp.cc:114,1
    - Dst: isStatDisabled
      Src: /src/pdns/pdns/recursordist/rec-snmp.cc:115,1
    - Dst: data
      Src: /src/pdns/pdns/recursordist/rec-snmp.cc:116,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/rec-snmp.cc:117,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - ' name'
    - ' statOID'
    argTypes:
    - std::string
    - oid10
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 119
      start: 101
    functionDepth: 1
    functionLinenumber: 101
    functionLinenumberEnd: 119
    functionName: registerCounter64Stat
    functionSourceFile: /src/pdns/pdns/recursordist/rec-snmp.cc
    functionUses: 1
    functionsReached:
    - isStatDisabled
    - Logging::Loggable
    - withName
    - netsnmp_register_scalar
    - end
    - size
    - OID_LENGTH
    - netsnmp_create_handler_registration
    - data
    - c_str
    - at
    - find
    linkageType: ''
    returnType: void
    signature: void registerCounter64Stat(const std::string& name, const oid10& statOID)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: addSNMPTrapOID
      Src: /src/pdns/pdns/recursordist/rec-snmp.cc:130,1
    - Dst: data
      Src: /src/pdns/pdns/recursordist/rec-snmp.cc:131,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/rec-snmp.cc:132,1
    - Dst: snmp_varlist_add_variable
      Src: /src/pdns/pdns/recursordist/rec-snmp.cc:134,1
    - Dst: data
      Src: /src/pdns/pdns/recursordist/rec-snmp.cc:135,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/rec-snmp.cc:136,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/rec-snmp.cc:138,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/rec-snmp.cc:139,1
    - Dst: sendTrap
      Src: /src/pdns/pdns/recursordist/rec-snmp.cc:141,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - ' reason'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 144
      start: 125
    functionDepth: 0
    functionLinenumber: 125
    functionLinenumberEnd: 144
    functionName: RecursorSNMPAgent::sendCustomTrap
    functionSourceFile: /src/pdns/pdns/recursordist/rec-snmp.cc
    functionUses: 0
    functionsReached:
    - addSNMPTrapOID
    - size
    - sendTrap
    - data
    - c_str
    - snmp_varlist_add_variable
    linkageType: ''
    returnType: bool
    signature: bool RecursorSNMPAgent::sendCustomTrap([[maybe_unused]] const std::string&
      reason)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - ' name'
    - ' daemonSocket'
    argTypes:
    - std::string
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 154
      start: 146
    functionDepth: 0
    functionLinenumber: 146
    functionLinenumberEnd: 154
    functionName: RecursorSNMPAgent::RecursorSNMPAgent
    functionSourceFile: /src/pdns/pdns/recursordist/rec-snmp.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void RecursorSNMPAgent::RecursorSNMPAgent(const std::string& name,
      const std::string& daemonSocket)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:34,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:35,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:36,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:37,1
    - Dst: PacketCache::canHashPacket
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:38,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:40,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:42,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:43,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:44,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:45,1
    - Dst: PacketCache::canHashPacket
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:46,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:48,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:49,1
    - Dst: PacketCache::queryMatches
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:49,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:56,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:57,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:58,1
    - Dst: EDNSSubnetOpts::setSource
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:59,1
    - Dst: Netmask
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:59,1
    - Dst: DNSPacketWriter::optvect_t::clear
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:60,1
    - Dst: DNSPacketWriter::optvect_t::emplace_back
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:61,1
    - Dst: EDNSSubnetOpts::makeOptString
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:61,1
    - Dst: DNSPacketWriter::addOpt
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:62,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:63,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:65,1
    - Dst: PacketCache::canHashPacket
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:66,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:68,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:70,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:71,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:72,1
    - Dst: EDNSSubnetOpts::setSource
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:73,1
    - Dst: Netmask
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:73,1
    - Dst: DNSPacketWriter::optvect_t::clear
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:74,1
    - Dst: DNSPacketWriter::optvect_t::emplace_back
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:75,1
    - Dst: EDNSSubnetOpts::makeOptString
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:75,1
    - Dst: DNSPacketWriter::addOpt
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:76,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:77,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:79,1
    - Dst: PacketCache::canHashPacket
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:80,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:82,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:84,1
    - Dst: PacketCache::queryMatches
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:84,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:98,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:99,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:100,1
    - Dst: Netmask
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:101,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:101,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:101,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:101,1
    - Dst: DNSPacketWriter::optvect_t::clear
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:102,1
    - Dst: DNSPacketWriter::optvect_t::emplace_back
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:103,1
    - Dst: makeEDNSSubnetOptsString
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:103,1
    - Dst: DNSPacketWriter::addOpt
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:104,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:105,1
    - Dst: PacketCache::canHashPacket
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:106,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:106,1
    - Dst: reinterpret_cast<const char *>
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:106,1
    - Dst: vector::data
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:106,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:106,1
    - Dst: std::map::emplace
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:107,1
    - Dst: toString
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:111,1
    - Dst: EDNSSubnetOpts::source::toString
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:111,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:128,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:129,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:130,1
    - Dst: EDNSSubnetOpts::setSource
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:131,1
    - Dst: Netmask
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:131,1
    - Dst: DNSPacketWriter::optvect_t::clear
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:132,1
    - Dst: DNSPacketWriter::optvect_t::emplace_back
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:133,1
    - Dst: EDNSSubnetOpts::makeOptString
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:133,1
    - Dst: DNSPacketWriter::addOpt
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:134,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:135,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:137,1
    - Dst: PacketCache::canHashPacket
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:138,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:140,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:142,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:143,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:144,1
    - Dst: EDNSSubnetOpts::setSource
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:145,1
    - Dst: Netmask
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:145,1
    - Dst: DNSPacketWriter::optvect_t::clear
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:146,1
    - Dst: DNSPacketWriter::optvect_t::emplace_back
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:147,1
    - Dst: EDNSSubnetOpts::makeOptString
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:147,1
    - Dst: DNSPacketWriter::addOpt
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:149,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:150,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:152,1
    - Dst: PacketCache::canHashPacket
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:153,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:155,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:157,1
    - Dst: PacketCache::queryMatches
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:157,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:164,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:165,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:166,1
    - Dst: EDNSSubnetOpts::setSource
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:167,1
    - Dst: Netmask
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:167,1
    - Dst: DNSPacketWriter::optvect_t::clear
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:168,1
    - Dst: DNSPacketWriter::optvect_t::emplace_back
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:169,1
    - Dst: EDNSSubnetOpts::makeOptString
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:169,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:170,1
    - Dst: DNSPacketWriter::optvect_t::emplace_back
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:171,1
    - Dst: EDNSCookiesOpt::makeOptString
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:171,1
    - Dst: DNSPacketWriter::addOpt
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:172,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:173,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:175,1
    - Dst: PacketCache::canHashPacket
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:176,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:178,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:180,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:181,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:182,1
    - Dst: EDNSSubnetOpts::setSource
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:183,1
    - Dst: Netmask
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:183,1
    - Dst: DNSPacketWriter::optvect_t::clear
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:184,1
    - Dst: DNSPacketWriter::optvect_t::emplace_back
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:185,1
    - Dst: EDNSSubnetOpts::makeOptString
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:185,1
    - Dst: EDNSCookiesOpt::makeFromString
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:186,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:186,1
    - Dst: DNSPacketWriter::optvect_t::emplace_back
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:187,1
    - Dst: EDNSCookiesOpt::makeOptString
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:187,1
    - Dst: DNSPacketWriter::addOpt
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:188,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:189,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:191,1
    - Dst: PacketCache::canHashPacket
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:192,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:194,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:196,1
    - Dst: PacketCache::queryMatches
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:196,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:198,1
    - Dst: PacketCache::queryMatches
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:198,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:212,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:213,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:214,1
    - Dst: Netmask
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:215,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:215,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:215,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:215,1
    - Dst: DNSPacketWriter::optvect_t::clear
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:216,1
    - Dst: DNSPacketWriter::optvect_t::emplace_back
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:217,1
    - Dst: makeEDNSSubnetOptsString
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:217,1
    - Dst: DNSPacketWriter::addOpt
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:218,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:219,1
    - Dst: PacketCache::canHashPacket
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:220,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:220,1
    - Dst: reinterpret_cast<const char *>
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:220,1
    - Dst: vector::data
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:220,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:220,1
    - Dst: std::map::emplace
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:221,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:223,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:225,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:226,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:227,1
    - Dst: Netmask
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:228,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:228,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:228,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:228,1
    - Dst: DNSPacketWriter::optvect_t::clear
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:229,1
    - Dst: DNSPacketWriter::optvect_t::emplace_back
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:230,1
    - Dst: makeEDNSSubnetOptsString
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:230,1
    - Dst: DNSPacketWriter::addOpt
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:231,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:232,1
    - Dst: PacketCache::canHashPacket
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:233,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:233,1
    - Dst: reinterpret_cast<const char *>
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:233,1
    - Dst: vector::data
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:233,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:233,1
    - Dst: std::map::count
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:236,1
    - Dst: toString
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:238,1
    - Dst: EDNSSubnetOpts::source::toString
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:238,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 138
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 250
      start: 20
    functionDepth: 1
    functionLinenumber: 20
    functionLinenumberEnd: 250
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-packetcache_hh.cc
    functionUses: 0
    functionsReached:
    - toString
    - std::to_string
    - DNSPacketWriter::optvect_t::clear
    - reinterpret_cast<const char *>
    - std::string
    - EDNSSubnetOpts::source::toString
    - DNSPacketWriter::optvect_t::emplace_back
    - EDNSCookiesOpt::makeFromString
    - PacketCache::queryMatches
    - string
    - DNSPacketWriter::getHeader
    - std::map::emplace
    - vector::data
    - vector::size
    - vector::clear
    - Netmask
    - EDNSSubnetOpts::makeOptString
    - DNSPacketWriter::commit
    - EDNSSubnetOpts::setSource
    - EDNSCookiesOpt::makeOptString
    - std::map::count
    - PacketCache::canHashPacket
    - BOOST_CHECK_EQUAL
    - makeEDNSSubnetOptsString
    - DNSPacketWriter::addOpt
    - BOOST_CHECK
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_PacketCacheAuthCollision)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:263,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:264,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:265,1
    - Dst: DNSPacketWriter::addOpt
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:266,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:267,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:269,1
    - Dst: reinterpret_cast<unsigned char*>
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:271,1
    - Dst: string::at
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:271,1
    - Dst: DNSName::wirelength
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:271,1
    - Dst: string::resize
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:275,1
    - Dst: string::size
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:275,1
    - Dst: BOOST_CHECK_NO_THROW
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:276,1
    - Dst: PacketCache::canHashPacket
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:276,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 278
      start: 252
    functionDepth: 1
    functionLinenumber: 252
    functionLinenumberEnd: 278
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-packetcache_hh.cc
    functionUses: 0
    functionsReached:
    - string::resize
    - string::size
    - DNSPacketWriter::commit
    - PacketCache::canHashPacket
    - DNSPacketWriter::getHeader
    - DNSPacketWriter::addOpt
    - reinterpret_cast<unsigned char*>
    - string::at
    - BOOST_CHECK_NO_THROW
    - vector::size
    - DNSName::wirelength
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_PacketCacheRecSimple)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:293,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:294,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:295,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:296,1
    - Dst: PacketCache::canHashPacket
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:297,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:299,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:301,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:302,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:303,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:304,1
    - Dst: PacketCache::canHashPacket
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:305,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:307,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:308,1
    - Dst: PacketCache::queryMatches
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:308,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:315,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:316,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:317,1
    - Dst: EDNSSubnetOpts::setSource
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:318,1
    - Dst: Netmask
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:318,1
    - Dst: DNSPacketWriter::optvect_t::clear
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:319,1
    - Dst: DNSPacketWriter::optvect_t::emplace_back
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:320,1
    - Dst: EDNSSubnetOpts::makeOptString
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:320,1
    - Dst: DNSPacketWriter::addOpt
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:321,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:322,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:324,1
    - Dst: PacketCache::canHashPacket
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:325,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:327,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:329,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:330,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:331,1
    - Dst: EDNSSubnetOpts::setSource
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:332,1
    - Dst: Netmask
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:332,1
    - Dst: DNSPacketWriter::optvect_t::clear
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:333,1
    - Dst: DNSPacketWriter::optvect_t::emplace_back
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:334,1
    - Dst: EDNSSubnetOpts::makeOptString
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:334,1
    - Dst: DNSPacketWriter::addOpt
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:335,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:336,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:338,1
    - Dst: PacketCache::canHashPacket
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:339,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:341,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:343,1
    - Dst: PacketCache::queryMatches
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:343,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:350,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:351,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:352,1
    - Dst: EDNSSubnetOpts::setSource
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:353,1
    - Dst: Netmask
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:353,1
    - Dst: DNSPacketWriter::optvect_t::clear
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:354,1
    - Dst: DNSPacketWriter::optvect_t::emplace_back
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:355,1
    - Dst: EDNSSubnetOpts::makeOptString
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:355,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:356,1
    - Dst: DNSPacketWriter::optvect_t::emplace_back
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:357,1
    - Dst: EDNSCookiesOpt::makeOptString
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:357,1
    - Dst: DNSPacketWriter::addOpt
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:358,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:359,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:361,1
    - Dst: PacketCache::canHashPacket
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:362,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:364,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:366,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:367,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:368,1
    - Dst: EDNSSubnetOpts::setSource
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:369,1
    - Dst: Netmask
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:369,1
    - Dst: DNSPacketWriter::optvect_t::clear
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:370,1
    - Dst: DNSPacketWriter::optvect_t::emplace_back
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:371,1
    - Dst: EDNSSubnetOpts::makeOptString
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:371,1
    - Dst: EDNSCookiesOpt::makeFromString
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:372,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:372,1
    - Dst: DNSPacketWriter::optvect_t::emplace_back
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:373,1
    - Dst: EDNSCookiesOpt::makeOptString
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:373,1
    - Dst: DNSPacketWriter::addOpt
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:374,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:375,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:377,1
    - Dst: PacketCache::canHashPacket
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:378,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:380,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:383,1
    - Dst: PacketCache::queryMatches
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:383,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:386,1
    - Dst: PacketCache::queryMatches
      Src: /src/pdns/pdns/recursordist/test-packetcache_hh.cc:386,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 55
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 388
      start: 280
    functionDepth: 1
    functionLinenumber: 280
    functionLinenumberEnd: 388
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-packetcache_hh.cc
    functionUses: 0
    functionsReached:
    - Netmask
    - EDNSCookiesOpt::makeFromString
    - PacketCache::queryMatches
    - PacketCache::canHashPacket
    - BOOST_CHECK
    - EDNSSubnetOpts::makeOptString
    - DNSPacketWriter::commit
    - EDNSSubnetOpts::setSource
    - string
    - DNSPacketWriter::optvect_t::clear
    - BOOST_CHECK_EQUAL
    - DNSPacketWriter::getHeader
    - DNSPacketWriter::addOpt
    - EDNSCookiesOpt::makeOptString
    - vector::size
    - vector::clear
    - DNSPacketWriter::optvect_t::emplace_back
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_PacketCacheRecCollision)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:25,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:26,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:27,1
    - Dst: DNSName::canonCompare_three_way
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:27,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:28,1
    - Dst: canonCompare_three_way
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:28,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:33,1
    - Dst: DNSName::getRawLabels
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:33,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:34,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:35,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:39,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:39,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:44,1
    - Dst: DNSName::isPartOf
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:44,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:45,1
    - Dst: DNSName::isPartOf
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:45,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:46,1
    - Dst: DNSName::isPartOf
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:46,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:48,1
    - Dst: DNSName::isPartOf
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:48,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:50,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:52,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:52,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:52,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:53,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:53,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:53,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:55,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:55,1
    - Dst: DNSName::DNSName
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:60,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:61,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:67,1
    - Dst: DNSName::isPartOf
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:67,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:73,1
    - Dst: DNSName::isPartOf
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:73,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:79,1
    - Dst: DNSName::isPartOf
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:79,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:85,1
    - Dst: DNSName::isPartOf
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:85,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:91,1
    - Dst: DNSName::isPartOf
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:91,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:97,1
    - Dst: DNSName::isPartOf
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:97,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:103,1
    - Dst: DNSName::makeRelative
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:103,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:103,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:108,1
    - Dst: DNSName::labelReverse
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:108,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:108,1
    - Dst: DNSName::DNSName
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:112,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:113,1
    - Dst: DNSName::empty
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:113,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:118,1
    - Dst: DNSName::empty
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:118,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:121,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:125,1
    - Dst: DNSName::prependRawLabel
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:129,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:130,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:130,1
    - Dst: DNSName::appendRawLabel
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:132,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:134,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:134,1
    - Dst: DNSName::DNSName
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:136,1
    - Dst: DNSName::appendRawLabel
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:138,1
    - Dst: DNSName::appendRawLabel
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:139,1
    - Dst: DNSName::appendRawLabel
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:140,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:142,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:142,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:147,1
    - Dst: DNSName::isPartOf
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:147,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:148,1
    - Dst: DNSName::isPartOf
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:148,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:149,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:149,1
    - Dst: DNSName::getRawLabels
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:151,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:152,1
    - Dst: auto::begin
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:152,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:153,1
    - Dst: auto::rbegin
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:153,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:154,1
    - Dst: auto::size
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:154,1
    - Dst: DNSName::DNSName
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:156,1
    - Dst: DNSName::appendRawLabel
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:157,1
    - Dst: DNSName::appendRawLabel
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:158,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:159,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:159,1
    - Dst: DNSName::DNSName
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:162,1
    - Dst: DNSName::appendRawLabel
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:163,1
    - Dst: DNSName::appendRawLabel
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:164,1
    - Dst: DNSName::appendRawLabel
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:165,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:167,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:167,1
    - Dst: DNSName::DNSName
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:171,1
    - Dst: string::append
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:173,1
    - Dst: string::append
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:174,1
    - Dst: DNSName::appendRawLabel
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:175,1
    - Dst: DNSName::appendRawLabel
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:176,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:178,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:178,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 67
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 179
      start: 23
    functionDepth: 0
    functionLinenumber: 23
    functionLinenumberEnd: 179
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-dnsname_cc.cc
    functionUses: 0
    functionsReached:
    - DNSName::labelReverse
    - canonCompare_three_way
    - auto::rbegin
    - DNSName::prependRawLabel
    - string::append
    - BOOST_CHECK_EQUAL
    - DNSName
    - DNSName::canonCompare_three_way
    - DNSName::getRawLabels
    - DNSName::toString
    - DNSName::makeRelative
    - DNSName::empty
    - DNSName::isPartOf
    - DNSName::DNSName
    - DNSName::appendRawLabel
    - BOOST_CHECK
    - auto::begin
    - auto::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_basic)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:183,1
    - Dst: DNSName::countLabels
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:183,1
    - Dst: DNSName::trimToLabels
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:184,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:185,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:185,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:187,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:190,1
    - Dst: DNSName::countLabels
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:190,1
    - Dst: DNSName::trimToLabels
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:192,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:193,1
    - Dst: DNSName::clear
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:195,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:196,1
    - Dst: DNSName::empty
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:196,1
    - Dst: DNSName::trimToLabels
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:197,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:198,1
    - Dst: DNSName::empty
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:198,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 199
      start: 181
    functionDepth: 0
    functionLinenumber: 181
    functionLinenumberEnd: 199
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-dnsname_cc.cc
    functionUses: 0
    functionsReached:
    - DNSName::countLabels
    - DNSName::clear
    - BOOST_CHECK_EQUAL
    - DNSName::trimToLabels
    - DNSName::toString
    - DNSName::empty
    - BOOST_CHECK
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_trim)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 206
      start: 201
    functionDepth: 0
    functionLinenumber: 201
    functionLinenumberEnd: 206
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-dnsname_cc.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_toolong)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:210,1
    - Dst: DNSName::toDNSString
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:210,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:210,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 211
      start: 208
    functionDepth: 0
    functionLinenumber: 208
    functionLinenumberEnd: 211
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-dnsname_cc.cc
    functionUses: 0
    functionsReached:
    - DNSName::toDNSString
    - string
    - BOOST_CHECK_EQUAL
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_dnsstrings)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSName::DNSName
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:214,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:215,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:215,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:216,1
    - Dst: DNSName::toStringNoDot
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:216,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:217,1
    - Dst: DNSName::toDNSString
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:217,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:218,1
    - Dst: DNSName::empty
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:218,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:219,1
    - Dst: DNSName::isRoot
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:219,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:220,1
    - Dst: DNSName::isWildcard
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:220,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:221,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:222,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:225,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:227,1
    - Dst: DNSName::isPartOf
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:227,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:228,1
    - Dst: DNSName::isPartOf
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:228,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 229
      start: 213
    functionDepth: 0
    functionLinenumber: 213
    functionLinenumberEnd: 229
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-dnsname_cc.cc
    functionUses: 0
    functionsReached:
    - DNSName::isWildcard
    - DNSName::isRoot
    - DNSName::toStringNoDot
    - BOOST_CHECK_EQUAL
    - DNSName::toDNSString
    - DNSName::toString
    - BOOST_CHECK_THROW
    - DNSName::empty
    - DNSName::isPartOf
    - DNSName::DNSName
    - BOOST_CHECK
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_empty)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:234,1
    - Dst: DNSName::isRoot
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:234,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:235,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:235,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:238,1
    - Dst: DNSName::isWildcard
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:238,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:241,1
    - Dst: DNSName::isWildcard
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:241,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 242
      start: 231
    functionDepth: 0
    functionLinenumber: 231
    functionLinenumberEnd: 242
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-dnsname_cc.cc
    functionUses: 0
    functionsReached:
    - BOOST_CHECK
    - DNSName::isRoot
    - DNSName::isWildcard
    - DNSName
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_specials)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:247,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:247,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:248,1
    - Dst: DNSName::chopOff
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:248,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:249,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:249,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:250,1
    - Dst: DNSName::chopOff
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:250,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:251,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:251,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:252,1
    - Dst: DNSName::chopOff
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:252,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:253,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:253,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:254,1
    - Dst: DNSName::chopOff
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:254,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:255,1
    - Dst: DNSName::chopOff
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:255,1
    - Dst: DNSName::prependRawLabel
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:257,1
    - Dst: DNSName::prependRawLabel
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:258,1
    - Dst: DNSName::prependRawLabel
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:259,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:260,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:260,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 261
      start: 245
    functionDepth: 0
    functionLinenumber: 245
    functionLinenumberEnd: 261
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-dnsname_cc.cc
    functionUses: 0
    functionsReached:
    - DNSName::chopOff
    - DNSName::prependRawLabel
    - BOOST_CHECK_EQUAL
    - DNSName::toString
    - BOOST_CHECK
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_chopping)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:267,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:267,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:268,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:268,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:272,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:272,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 273
      start: 263
    functionDepth: 0
    functionLinenumber: 263
    functionLinenumberEnd: 273
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-dnsname_cc.cc
    functionUses: 0
    functionsReached:
    - BOOST_CHECK
    - DNSName::toString
    - DNSName
    - BOOST_CHECK_EQUAL
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_Append)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:277,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:278,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:278,1
    - Dst: SOARecordContent::toPacket
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:280,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:282,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:282,1
    - Dst: AAAARecordContent::toPacket
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:283,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:284,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:284,1
    - Dst: AAAARecordContent::toPacket
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:285,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:286,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:286,1
    - Dst: AAAARecordContent::toPacket
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:287,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:288,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:288,1
    - Dst: AAAARecordContent::toPacket
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:289,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:290,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:290,1
    - Dst: AAAARecordContent::toPacket
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:291,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:292,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:293,1
    - Dst: string::find
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:296,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:300,1
    - Dst: string::find
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:303,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:307,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 26
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 309
      start: 275
    functionDepth: 0
    functionLinenumber: 275
    functionLinenumberEnd: 309
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-dnsname_cc.cc
    functionUses: 0
    functionsReached:
    - DNSPacketWriter::commit
    - AAAARecordContent::toPacket
    - string::find
    - DNSName
    - SOARecordContent::toPacket
    - BOOST_CHECK_EQUAL
    - vector::size
    - DNSPacketWriter::startRecord
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_packetCompress)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:316,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:317,1
    - Dst: PTRRecordContent::toPacket
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:318,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:319,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:320,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:321,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:323,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:327,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:327,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:328,1
    - Dst: PTRRecordContent::toPacket
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:329,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:330,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 332
      start: 311
    functionDepth: 1
    functionLinenumber: 311
    functionLinenumberEnd: 332
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-dnsname_cc.cc
    functionUses: 0
    functionsReached:
    - PTRRecordContent::toPacket
    - DNSPacketWriter::commit
    - DNSName
    - BOOST_CHECK_EQUAL
    - vector::size
    - vector::clear
    - DNSPacketWriter::startRecord
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_packetCompressLong)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:341,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:342,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:351,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:351,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:351,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 352
      start: 337
    functionDepth: 0
    functionLinenumber: 337
    functionLinenumberEnd: 352
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-dnsname_cc.cc
    functionUses: 0
    functionsReached:
    - vector::size
    - DNSName
    - BOOST_CHECK_THROW
    - BOOST_CHECK_EQUAL
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_PacketParse)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:357,1
    - Dst: DNSName::hash
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:357,1
    - Dst: hash
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:357,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:362,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:362,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:363,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:363,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:364,1
    - Dst: DNSName::hash
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:364,1
    - Dst: DNSName::hash
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:364,1
    - Dst: DNSName::hash
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:365,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:365,1
    - Dst: std::accumulate
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:368,1
    - Dst: std::begin
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:368,1
    - Dst: std::end
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:368,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:369,1
    - Dst: std::for_each
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:372,1
    - Dst: std::begin
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:372,1
    - Dst: std::end
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:372,1
    - Dst: sqrt
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:376,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:376,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:377,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 378
      start: 355
    functionDepth: 2
    functionLinenumber: 355
    functionLinenumberEnd: 378
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-dnsname_cc.cc
    functionUses: 0
    functionsReached:
    - std::for_each
    - DNSName::hash
    - hash
    - std::to_string
    - std::end
    - BOOST_CHECK
    - std::begin
    - std::accumulate
    - BOOST_CHECK_EQUAL
    - sqrt
    - vector::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_hash)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::unordered_set::insert
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:382,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:382,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:383,1
    - Dst: std::unordered_set::count
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:383,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:383,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:384,1
    - Dst: std::unordered_set::size
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:384,1
    - Dst: std::unordered_set::insert
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:385,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:385,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:386,1
    - Dst: std::unordered_set::size
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:386,1
    - Dst: std::unordered_set::insert
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:387,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:387,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:388,1
    - Dst: std::unordered_set::size
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:388,1
    - Dst: std::unordered_set::clear
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:390,1
    - Dst: std::unordered_set::insert
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:393,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:393,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:393,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:394,1
    - Dst: std::unordered_set::size
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:394,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 396
      start: 380
    functionDepth: 2
    functionLinenumber: 380
    functionLinenumberEnd: 396
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-dnsname_cc.cc
    functionUses: 0
    functionsReached:
    - std::unordered_set::clear
    - std::to_string
    - std::unordered_set::insert
    - BOOST_CHECK_EQUAL
    - DNSName
    - std::unordered_set::size
    - std::unordered_set::count
    - BOOST_CHECK
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_hashContainer)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:404,1
    - Dst: hashQuestion
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:404,1
    - Dst: vector::data
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:404,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:405,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:409,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:410,1
    - Dst: hashQuestion
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:410,1
    - Dst: vector::data
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:410,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:410,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:411,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:414,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:415,1
    - Dst: hashQuestion
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:415,1
    - Dst: vector::data
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:415,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:415,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:416,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:418,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:421,1
    - Dst: hashQuestion
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:421,1
    - Dst: vector::data
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:421,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:421,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:422,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:424,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:427,1
    - Dst: hashQuestion
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:427,1
    - Dst: vector::data
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:427,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:427,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:428,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:430,1
    - Dst: hashQuestion
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:431,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:431,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:432,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:433,1
    - Dst: hashQuestion
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:434,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:434,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:435,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:436,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:440,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:441,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:441,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:441,1
    - Dst: assert
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:442,1
    - Dst: hashQuestion
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:443,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:443,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:443,1
    - Dst: std::accumulate
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:446,1
    - Dst: std::begin
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:446,1
    - Dst: std::end
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:446,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:447,1
    - Dst: std::for_each
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:450,1
    - Dst: std::begin
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:450,1
    - Dst: std::end
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:450,1
    - Dst: sqrt
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:454,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:454,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:455,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 25
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (ok)
      pos:
        line_end: 441
        line_start: 441
        source_file: /src/pdns/pdns/recursordist/test-dnsname_cc.cc
    constantsTouched: []
    func_position:
      end: 456
      start: 399
    functionDepth: 1
    functionLinenumber: 399
    functionLinenumberEnd: 456
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-dnsname_cc.cc
    functionUses: 0
    functionsReached:
    - std::for_each
    - hashQuestion
    - std::end
    - std::to_string
    - std::begin
    - std::accumulate
    - DNSName
    - BOOST_CHECK_EQUAL
    - assert
    - sqrt
    - vector::data
    - vector::size
    - BOOST_CHECK
    - vector::clear
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_QuestionHash)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:460,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:463,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:464,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:464,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:465,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:466,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:468,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:468,1
    - Dst: DNSRecordContent::TypeToNumber
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:468,1
    - Dst: NSRecordContent::toPacket
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:470,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:472,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:484,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:485,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:485,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:486,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:487,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:489,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:490,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:490,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:492,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:493,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 496
      start: 458
    functionDepth: 0
    functionLinenumber: 458
    functionLinenumberEnd: 496
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-dnsname_cc.cc
    functionUses: 0
    functionsReached:
    - NSRecordContent::toPacket
    - BOOST_CHECK
    - DNSPacketWriter::commit
    - BOOST_CHECK_EQUAL
    - DNSName
    - DNSName::toString
    - DNSRecordContent::TypeToNumber
    - vector::size
    - DNSPacketWriter::startRecord
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_packetParse)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: DNSName::DNSName
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:499,1
    - Dst: DNSName::appendRawLabel
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:504,1
    - Dst: string::clear
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:505,1
    - Dst: string::append
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:507,1
    - Dst: string::empty
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:509,1
    - Dst: DNSName::appendRawLabel
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:510,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:512,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:513,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 514
      start: 498
    functionDepth: 1
    functionLinenumber: 498
    functionLinenumberEnd: 514
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-dnsname_cc.cc
    functionUses: 0
    functionsReached:
    - string::empty
    - string::append
    - DNSName::appendRawLabel
    - DNSName::toString
    - DNSName::DNSName
    - BOOST_CHECK
    - string::clear
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_escaping)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SuffixMatchNode::add
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:519,1
    - Dst: DNSName::getRawLabels
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:519,1
    - Dst: SuffixMatchNode::add
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:521,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:521,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:525,1
    - Dst: SuffixMatchNode::check
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:525,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:526,1
    - Dst: SuffixMatchNode::check
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:526,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:528,1
    - Dst: SuffixMatchNode::check
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:528,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:528,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:529,1
    - Dst: SuffixMatchNode::check
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:529,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:529,1
    - Dst: SuffixMatchNode::add
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:531,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:531,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:532,1
    - Dst: SuffixMatchNode::check
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:532,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:532,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:533,1
    - Dst: SuffixMatchNode::getBestMatch
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:533,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:533,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:533,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:534,1
    - Dst: SuffixMatchNode::check
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:534,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:534,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:535,1
    - Dst: SuffixMatchNode::getBestMatch
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:535,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:535,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:535,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:536,1
    - Dst: SuffixMatchNode::check
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:536,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:536,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:537,1
    - Dst: SuffixMatchNode::check
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:537,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:537,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:538,1
    - Dst: SuffixMatchNode::getBestMatch
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:538,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:538,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:540,1
    - Dst: SuffixMatchNode::check
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:540,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:540,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:541,1
    - Dst: SuffixMatchNode::getBestMatch
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:541,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:541,1
    - Dst: SuffixMatchNode::add
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:543,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:544,1
    - Dst: SuffixMatchNode::check
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:544,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:544,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:545,1
    - Dst: SuffixMatchNode::getBestMatch
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:545,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:545,1
    - Dst: SuffixMatchNode::add
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:549,1
    - Dst: SuffixMatchNode::add
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:550,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:551,1
    - Dst: SuffixMatchNode::check
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:551,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:552,1
    - Dst: SuffixMatchNode::check
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:552,1
    - Dst: SuffixMatchNode::remove
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:555,1
    - Dst: SuffixMatchNode::remove
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:556,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:557,1
    - Dst: SuffixMatchNode::check
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:557,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:558,1
    - Dst: SuffixMatchNode::check
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:558,1
    - Dst: SuffixMatchNode::add
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:560,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:560,1
    - Dst: SuffixMatchNode::add
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:561,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:561,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:563,1
    - Dst: SuffixMatchNode::check
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:563,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:563,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 31
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 564
      start: 516
    functionDepth: 0
    functionLinenumber: 516
    functionLinenumberEnd: 564
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-dnsname_cc.cc
    functionUses: 0
    functionsReached:
    - SuffixMatchNode::check
    - DNSName
    - BOOST_CHECK_EQUAL
    - SuffixMatchNode::remove
    - DNSName::getRawLabels
    - SuffixMatchNode::getBestMatch
    - BOOST_CHECK
    - SuffixMatchNode::add
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_suffixmatch)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SuffixMatchTree::add
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:569,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:569,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:571,1
    - Dst: SuffixMatchTree::add
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:572,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:572,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:576,1
    - Dst: SuffixMatchTree::lookup
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:576,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:577,1
    - Dst: SuffixMatchTree::lookup
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:577,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:578,1
    - Dst: SuffixMatchTree::lookup
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:578,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:580,1
    - Dst: SuffixMatchTree::lookup
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:580,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:580,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:581,1
    - Dst: SuffixMatchTree::lookup
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:581,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:581,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:581,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:582,1
    - Dst: SuffixMatchTree::lookup
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:582,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:582,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:583,1
    - Dst: SuffixMatchTree::lookup
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:583,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:583,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:583,1
    - Dst: SuffixMatchTree::add
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:585,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:585,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:585,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:586,1
    - Dst: SuffixMatchTree::lookup
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:586,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:586,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:587,1
    - Dst: SuffixMatchTree::lookup
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:587,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:587,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:587,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:588,1
    - Dst: SuffixMatchTree::lookup
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:588,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:588,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:589,1
    - Dst: SuffixMatchTree::lookup
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:589,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:589,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:589,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:590,1
    - Dst: SuffixMatchTree::lookup
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:590,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:590,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:591,1
    - Dst: SuffixMatchTree::lookup
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:591,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:591,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:591,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:592,1
    - Dst: SuffixMatchTree::lookup
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:592,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:592,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:593,1
    - Dst: SuffixMatchTree::lookup
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:593,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:593,1
    - Dst: SuffixMatchTree::add
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:595,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:595,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:596,1
    - Dst: SuffixMatchTree::lookup
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:596,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:596,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:597,1
    - Dst: SuffixMatchTree::lookup
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:597,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:597,1
    - Dst: SuffixMatchTree::add
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:601,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:601,1
    - Dst: SuffixMatchTree::add
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:602,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:602,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:603,1
    - Dst: SuffixMatchTree::lookup
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:603,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:604,1
    - Dst: SuffixMatchTree::lookup
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:604,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:605,1
    - Dst: SuffixMatchTree::lookup
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:605,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:606,1
    - Dst: SuffixMatchTree::lookup
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:606,1
    - Dst: SuffixMatchTree::add
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:610,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:610,1
    - Dst: SuffixMatchTree::add
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:611,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:611,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:612,1
    - Dst: SuffixMatchTree::lookup
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:612,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:613,1
    - Dst: SuffixMatchTree::lookup
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:613,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:614,1
    - Dst: SuffixMatchTree::lookup
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:614,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:615,1
    - Dst: SuffixMatchTree::lookup
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:615,1
    - Dst: SuffixMatchTree::remove
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:618,1
    - Dst: SuffixMatchTree::remove
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:619,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:620,1
    - Dst: SuffixMatchTree::lookup
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:620,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:621,1
    - Dst: SuffixMatchTree::lookup
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:621,1
    - Dst: SuffixMatchTree
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:623,1
    - Dst: SuffixMatchTree::add
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:624,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:624,1
    - Dst: SuffixMatchTree::add
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:625,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:625,1
    - Dst: SuffixMatchTree::add
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:626,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:626,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:626,1
    - Dst: SuffixMatchTree::add
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:627,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:627,1
    - Dst: SuffixMatchTree::remove
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:629,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:629,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:630,1
    - Dst: SuffixMatchTree::lookup
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:630,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:630,1
    - Dst: SuffixMatchTree::remove
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:631,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:631,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:632,1
    - Dst: SuffixMatchTree::lookup
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:632,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:632,1
    - Dst: SuffixMatchTree::remove
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:634,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:635,1
    - Dst: SuffixMatchTree::lookup
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:635,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:636,1
    - Dst: SuffixMatchTree::lookup
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:636,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:637,1
    - Dst: SuffixMatchTree::lookup
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:637,1
    - Dst: SuffixMatchTree::remove
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:639,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:640,1
    - Dst: SuffixMatchTree::lookup
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:640,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:641,1
    - Dst: SuffixMatchTree::lookup
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:641,1
    - Dst: SuffixMatchTree::add
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:643,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:643,1
    - Dst: SuffixMatchTree::add
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:644,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:644,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:645,1
    - Dst: SuffixMatchTree::lookup
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:645,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:646,1
    - Dst: SuffixMatchTree::lookup
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:646,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:647,1
    - Dst: SuffixMatchTree::lookup
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:647,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:648,1
    - Dst: SuffixMatchTree::lookup
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:648,1
    - Dst: SuffixMatchTree::remove
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:650,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:651,1
    - Dst: SuffixMatchTree::lookup
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:651,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:652,1
    - Dst: SuffixMatchTree::lookup
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:652,1
    - Dst: SuffixMatchTree::remove
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:653,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:654,1
    - Dst: SuffixMatchTree::lookup
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:654,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:655,1
    - Dst: SuffixMatchTree::lookup
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:655,1
    - Dst: SuffixMatchTree::remove
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:656,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:657,1
    - Dst: SuffixMatchTree::lookup
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:657,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:658,1
    - Dst: SuffixMatchTree::lookup
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:658,1
    - Dst: SuffixMatchTree::remove
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:659,1
    - Dst: SuffixMatchTree::visit
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:662,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:664,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:666,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:668,1
    - Dst: SuffixMatchTree::lookup
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:668,1
    - Dst: SuffixMatchTree::remove
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:669,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:670,1
    - Dst: SuffixMatchTree::lookup
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:670,1
    - Dst: SuffixMatchTree::visit
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:673,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:676,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 83
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 677
      start: 566
    functionDepth: 0
    functionLinenumber: 566
    functionLinenumberEnd: 677
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-dnsname_cc.cc
    functionUses: 0
    functionsReached:
    - SuffixMatchTree
    - BOOST_CHECK_EQUAL
    - DNSName
    - SuffixMatchTree::add
    - SuffixMatchTree::lookup
    - SuffixMatchTree::remove
    - SuffixMatchTree::visit
    - BOOST_REQUIRE
    - BOOST_CHECK
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_suffixmatch_tree)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:682,1
    - Dst: toString
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:682,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 683
      start: 680
    functionDepth: 0
    functionLinenumber: 680
    functionLinenumberEnd: 683
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-dnsname_cc.cc
    functionUses: 0
    functionsReached:
    - toString
    - BOOST_CHECK_EQUAL
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_concat)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:686,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:686,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:686,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:687,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:687,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:687,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:688,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:688,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:688,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:689,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:689,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:689,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 690
      start: 685
    functionDepth: 0
    functionLinenumber: 685
    functionLinenumberEnd: 690
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-dnsname_cc.cc
    functionUses: 0
    functionsReached:
    - BOOST_CHECK
    - DNSName
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_compare_naive)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSName::DNSName
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:693,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:694,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:695,1
    - Dst: DNSName::canonCompare_three_way
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:695,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 696
      start: 692
    functionDepth: 0
    functionLinenumber: 692
    functionLinenumberEnd: 696
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-dnsname_cc.cc
    functionUses: 0
    functionsReached:
    - DNSName::DNSName
    - BOOST_CHECK
    - DNSName::canonCompare_three_way
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_compare_empty)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:700,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:701,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:701,1
    - Dst: DNSName::makeLowerCase
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:702,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:703,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:704,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:705,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:705,1
    - Dst: toString
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:705,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:706,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:706,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 707
      start: 698
    functionDepth: 0
    functionLinenumber: 698
    functionLinenumberEnd: 707
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-dnsname_cc.cc
    functionUses: 0
    functionsReached:
    - toString
    - DNSName::toString
    - DNSName::makeLowerCase
    - BOOST_CHECK_EQUAL
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_casing)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:713,1
    - Dst: DNSName::canonCompare_three_way
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:713,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:715,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:715,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:715,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:716,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:716,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:716,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:717,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:717,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:717,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:720,1
    - Dst: a
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:720,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:720,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:721,1
    - Dst: a
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:721,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:721,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:722,1
    - Dst: a
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:722,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:722,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:728,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:728,1
    - Dst: sort
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:730,1
    - Dst: vector::begin
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:730,1
    - Dst: vector::end
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:730,1
    - Dst: CanonDNSNameCompare
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:730,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:743,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:743,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:746,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 747
      start: 711
    functionDepth: 0
    functionLinenumber: 711
    functionLinenumberEnd: 747
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-dnsname_cc.cc
    functionUses: 0
    functionsReached:
    - vector::begin
    - vector::push_back
    - CanonDNSNameCompare
    - DNSName
    - vector::end
    - DNSName::canonCompare_three_way
    - sort
    - BOOST_CHECK
    - a
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_compare_canonical)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:750,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:750,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:750,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:751,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:751,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:751,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:752,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:752,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:752,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:753,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:753,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:753,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:754,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:754,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:754,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:755,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:755,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:755,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 756
      start: 749
    functionDepth: 0
    functionLinenumber: 749
    functionLinenumberEnd: 756
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-dnsname_cc.cc
    functionUses: 0
    functionsReached:
    - BOOST_CHECK
    - DNSName
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_compare_pretty)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:762,1
    - Dst: DNSName::appendRawLabel
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:762,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:767,1
    - Dst: DNSName::prependRawLabel
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:767,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 769
      start: 758
    functionDepth: 0
    functionLinenumber: 758
    functionLinenumberEnd: 769
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-dnsname_cc.cc
    functionUses: 0
    functionsReached:
    - DNSName::prependRawLabel
    - DNSName::appendRawLabel
    - BOOST_CHECK_THROW
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_empty_label)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSName::appendRawLabel
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:777,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:778,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:778,1
    - Dst: DNSName::prependRawLabel
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:783,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:784,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:784,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 786
      start: 771
    functionDepth: 0
    functionLinenumber: 771
    functionLinenumberEnd: 786
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-dnsname_cc.cc
    functionUses: 0
    functionsReached:
    - DNSName::toString
    - DNSName::prependRawLabel
    - DNSName::appendRawLabel
    - BOOST_CHECK_EQUAL
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_label_length_max)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:794,1
    - Dst: DNSName::appendRawLabel
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:794,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:799,1
    - Dst: DNSName::prependRawLabel
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:799,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 801
      start: 788
    functionDepth: 0
    functionLinenumber: 788
    functionLinenumberEnd: 801
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-dnsname_cc.cc
    functionUses: 0
    functionsReached:
    - DNSName::prependRawLabel
    - DNSName::appendRawLabel
    - BOOST_CHECK_THROW
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_label_length_too_long)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSName::appendRawLabel
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:812,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:813,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:813,1
    - Dst: DNSName::prependRawLabel
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:818,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:819,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:819,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:825,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:826,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:826,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 828
      start: 803
    functionDepth: 0
    functionLinenumber: 803
    functionLinenumberEnd: 828
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-dnsname_cc.cc
    functionUses: 0
    functionsReached:
    - DNSName::prependRawLabel
    - DNSName
    - BOOST_CHECK_EQUAL
    - DNSName::toString
    - DNSName::appendRawLabel
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_name_length_max)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:839,1
    - Dst: DNSName::appendRawLabel
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:839,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:844,1
    - Dst: DNSName::prependRawLabel
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:844,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:849,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:849,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 851
      start: 830
    functionDepth: 0
    functionLinenumber: 830
    functionLinenumberEnd: 851
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-dnsname_cc.cc
    functionUses: 0
    functionsReached:
    - DNSName::prependRawLabel
    - DNSName::appendRawLabel
    - BOOST_CHECK_THROW
    - DNSName
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_name_length_too_long)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 859
      start: 854
    functionDepth: 0
    functionLinenumber: 854
    functionLinenumberEnd: 859
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-dnsname_cc.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_invalid_label_length)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: string::c_str
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:865,1
    - Dst: string::size
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:865,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:866,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:866,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 867
      start: 861
    functionDepth: 0
    functionLinenumber: 861
    functionLinenumberEnd: 867
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-dnsname_cc.cc
    functionUses: 0
    functionsReached:
    - string::c_str
    - DNSName::toString
    - string::size
    - BOOST_CHECK_EQUAL
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_compression)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: string::c_str
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:876,1
    - Dst: string::size
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:876,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:877,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:877,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:878,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:879,1
    - Dst: string::insert
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:891,1
    - Dst: string::c_str
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:893,1
    - Dst: string::size
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:893,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:894,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:894,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:895,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:896,1
    - Dst: string::insert
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:902,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 906
      start: 869
    functionDepth: 2
    functionLinenumber: 869
    functionLinenumberEnd: 906
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-dnsname_cc.cc
    functionUses: 0
    functionsReached:
    - string::c_str
    - string::size
    - BOOST_CHECK_EQUAL
    - string::insert
    - DNSName::toString
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_compression_qtype_qclass)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 924
      start: 908
    functionDepth: 0
    functionLinenumber: 908
    functionLinenumberEnd: 924
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-dnsname_cc.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_compression_single_bit_set)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: string::c_str
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:930,1
    - Dst: string::size
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:930,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:931,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:931,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 932
      start: 926
    functionDepth: 0
    functionLinenumber: 926
    functionLinenumberEnd: 932
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-dnsname_cc.cc
    functionUses: 0
    functionsReached:
    - string::c_str
    - DNSName::toString
    - string::size
    - BOOST_CHECK_EQUAL
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_pointer_pointer_root)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 939
      start: 934
    functionDepth: 0
    functionLinenumber: 934
    functionLinenumberEnd: 939
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-dnsname_cc.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_bad_compression_pointer)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 946
      start: 941
    functionDepth: 0
    functionLinenumber: 941
    functionLinenumberEnd: 946
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-dnsname_cc.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_compression_loop)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 953
      start: 948
    functionDepth: 0
    functionLinenumber: 948
    functionLinenumberEnd: 953
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-dnsname_cc.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_compression_loop1)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: string::append
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:960,1
    - Dst: string::append
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:961,1
    - Dst: string::append
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:966,1
    - Dst: string::append
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:967,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 970
      start: 955
    functionDepth: 0
    functionLinenumber: 955
    functionLinenumberEnd: 970
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-dnsname_cc.cc
    functionUses: 0
    functionsReached:
    - string::append
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_compression_loop2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:974,1
    - Dst: DNSName::wirelength
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:974,1
    - Dst: DNSName::prependRawLabel
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:977,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:977,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:978,1
    - Dst: DNSName::wirelength
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:978,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:980,1
    - Dst: DNSName::prependRawLabel
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:981,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:981,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:982,1
    - Dst: DNSName::wirelength
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:982,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 983
      start: 972
    functionDepth: 0
    functionLinenumber: 972
    functionLinenumberEnd: 983
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-dnsname_cc.cc
    functionUses: 0
    functionsReached:
    - DNSName::prependRawLabel
    - string
    - DNSName
    - BOOST_CHECK_EQUAL
    - DNSName::wirelength
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_wirelength)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:987,1
    - Dst: DNSName::getRawLabel
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:987,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:988,1
    - Dst: DNSName::getRawLabel
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:988,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:989,1
    - Dst: DNSName::getRawLabel
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:989,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:990,1
    - Dst: DNSName::getRawLabel
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:990,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:991,1
    - Dst: DNSName::getRawLabel
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:991,1
    - Dst: DNSName::countLabels
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:991,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 992
      start: 985
    functionDepth: 0
    functionLinenumber: 985
    functionLinenumberEnd: 992
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-dnsname_cc.cc
    functionUses: 0
    functionsReached:
    - DNSName::getRawLabel
    - DNSName::countLabels
    - BOOST_CHECK_THROW
    - BOOST_CHECK_EQUAL
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_getrawlabel)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSName::getRawLabelsVisitor
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:996,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:997,1
    - Dst: auto::empty
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:997,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:998,1
    - Dst: auto::front
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:998,1
    - Dst: DNSName::getRawLabels
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:998,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:999,1
    - Dst: auto::back
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:999,1
    - Dst: DNSName::getRawLabels
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:999,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:1001,1
    - Dst: auto::back
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:1001,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:1002,1
    - Dst: auto::pop_back
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:1002,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:1003,1
    - Dst: auto::back
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:1003,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:1004,1
    - Dst: auto::pop_back
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:1004,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:1005,1
    - Dst: auto::back
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:1005,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:1006,1
    - Dst: auto::pop_back
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:1006,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:1007,1
    - Dst: auto::back
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:1007,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:1008,1
    - Dst: auto::pop_back
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:1008,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:1009,1
    - Dst: auto::empty
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:1009,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:1010,1
    - Dst: auto::pop_back
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:1010,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:1011,1
    - Dst: auto::front
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:1011,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:1012,1
    - Dst: auto::back
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:1012,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1013
      start: 994
    functionDepth: 0
    functionLinenumber: 994
    functionLinenumberEnd: 1013
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-dnsname_cc.cc
    functionUses: 0
    functionsReached:
    - auto::pop_back
    - auto::back
    - BOOST_CHECK_EQUAL
    - auto::front
    - DNSName::getRawLabels
    - BOOST_CHECK_THROW
    - DNSName::getRawLabelsVisitor
    - BOOST_CHECK
    - auto::empty
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_getrawlabels_visitor)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSName::getLastLabel
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:1017,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:1020,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:1020,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:1023,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:1023,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1024
      start: 1015
    functionDepth: 0
    functionLinenumber: 1015
    functionLinenumberEnd: 1024
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-dnsname_cc.cc
    functionUses: 0
    functionsReached:
    - DNSName::getLastLabel
    - DNSName
    - BOOST_CHECK_EQUAL
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_getlastlabel)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:1030,1
    - Dst: DNSName::getCommonLabels
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:1030,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:1031,1
    - Dst: DNSName::getCommonLabels
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:1031,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:1033,1
    - Dst: DNSName::getCommonLabels
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:1033,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:1033,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:1034,1
    - Dst: DNSName::getCommonLabels
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:1034,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:1034,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:1037,1
    - Dst: DNSName::getCommonLabels
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:1037,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:1038,1
    - Dst: DNSName::getCommonLabels
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:1038,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:1039,1
    - Dst: DNSName::getCommonLabels
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:1039,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:1040,1
    - Dst: DNSName::getCommonLabels
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:1040,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:1043,1
    - Dst: DNSName::getCommonLabels
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:1043,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:1044,1
    - Dst: DNSName::getCommonLabels
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:1044,1
    - Dst: DNSName::DNSName
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:1046,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:1047,1
    - Dst: DNSName::getCommonLabels
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:1047,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:1047,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:1048,1
    - Dst: DNSName::getCommonLabels
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:1048,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:1048,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1049
      start: 1026
    functionDepth: 0
    functionLinenumber: 1026
    functionLinenumberEnd: 1049
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-dnsname_cc.cc
    functionUses: 0
    functionsReached:
    - DNSName::DNSName
    - DNSName::getCommonLabels
    - DNSName
    - BOOST_CHECK_EQUAL
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_getcommonlabels)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:1058,1
    - Dst: PacketBuffer::data
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:1058,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:1058,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:1059,1
    - Dst: DNSName::matchesUncompressedName
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:1059,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:1062,1
    - Dst: DNSName::matchesUncompressedName
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:1062,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:1065,1
    - Dst: DNSName::matchesUncompressedName
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:1065,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:1069,1
    - Dst: DNSName::matchesUncompressedName
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:1069,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:1075,1
    - Dst: PacketBuffer::data
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:1075,1
    - Dst: DNSName::wirelength
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:1075,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:1076,1
    - Dst: DNSName::matchesUncompressedName
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:1076,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1078
      start: 1051
    functionDepth: 0
    functionLinenumber: 1051
    functionLinenumberEnd: 1078
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-dnsname_cc.cc
    functionUses: 0
    functionsReached:
    - PacketBuffer::data
    - DNSName::matchesUncompressedName
    - PacketBuffer::size
    - reinterpret_cast<const char*>
    - BOOST_CHECK
    - DNSName::wirelength
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_raw_data_comparison)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:1089,1
    - Dst: ZoneName::hasVariant
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:1089,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:1090,1
    - Dst: isRoot
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:1090,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:1092,1
    - Dst: ZoneName::hasVariant
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:1092,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:1093,1
    - Dst: toString
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:1093,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:1094,1
    - Dst: ZoneName::getVariant
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:1094,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:1096,1
    - Dst: ZoneName::hasVariant
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:1096,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:1097,1
    - Dst: ZoneName::hasVariant
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:1097,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:1099,1
    - Dst: ZoneName::hasVariant
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:1099,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:1100,1
    - Dst: toString
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:1100,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:1101,1
    - Dst: ZoneName::getVariant
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:1101,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:1103,1
    - Dst: ZoneName::hasVariant
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:1103,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:1104,1
    - Dst: ZoneName::getVariant
      Src: /src/pdns/pdns/recursordist/test-dnsname_cc.cc:1104,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1107
      start: 1081
    functionDepth: 0
    functionLinenumber: 1081
    functionLinenumberEnd: 1107
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-dnsname_cc.cc
    functionUses: 0
    functionsReached:
    - toString
    - ZoneName::hasVariant
    - BOOST_CHECK_EQUAL
    - isRoot
    - ZoneName::getVariant
    - BOOST_CHECK
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_variantnames)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSFilterEngine::DNSFilterEngine
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:18,1
    - Dst: std::make_shared<DNSFilterEngine::Zone>
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:21,1
    - Dst: auto::setName
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:22,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:23,1
    - Dst: auto::getName
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:23,1
    - Dst: auto::setDomain
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:24,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:24,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:25,1
    - Dst: auto::getDomain
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:25,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:25,1
    - Dst: auto::setSerial
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:26,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:27,1
    - Dst: auto::getSerial
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:27,1
    - Dst: auto::setRefresh
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:28,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:29,1
    - Dst: auto::getRefresh
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:29,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:38,1
    - Dst: auto::size
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:38,1
    - Dst: auto::addClientTrigger
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:39,1
    - Dst: Netmask
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:39,1
    - Dst: DNSFilterEngine::Policy
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:39,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:40,1
    - Dst: auto::size
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:40,1
    - Dst: auto::addQNameTrigger
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:41,1
    - Dst: DNSFilterEngine::Policy
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:41,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:42,1
    - Dst: auto::size
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:42,1
    - Dst: auto::addQNameTrigger
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:43,1
    - Dst: DNSFilterEngine::Policy
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:43,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:44,1
    - Dst: auto::size
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:44,1
    - Dst: auto::addNSIPTrigger
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:45,1
    - Dst: Netmask
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:45,1
    - Dst: DNSFilterEngine::Policy
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:45,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:46,1
    - Dst: auto::size
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:46,1
    - Dst: auto::addNSTrigger
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:47,1
    - Dst: DNSFilterEngine::Policy
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:47,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:48,1
    - Dst: auto::size
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:48,1
    - Dst: auto::addNSTrigger
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:49,1
    - Dst: DNSFilterEngine::Policy
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:49,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:50,1
    - Dst: auto::size
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:50,1
    - Dst: auto::addResponseTrigger
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:51,1
    - Dst: Netmask
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:51,1
    - Dst: DNSFilterEngine::Policy
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:51,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:52,1
    - Dst: auto::size
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:52,1
    - Dst: DNSFilterEngine::addZone
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:54,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:56,1
    - Dst: DNSFilterEngine::size
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:56,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:57,1
    - Dst: DNSFilterEngine::getZone
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:57,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:58,1
    - Dst: DNSFilterEngine::getZone
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:58,1
    - Dst: DNSFilterEngine::setZone
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:60,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:62,1
    - Dst: DNSFilterEngine::size
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:62,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:63,1
    - Dst: DNSFilterEngine::getZone
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:63,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:64,1
    - Dst: DNSFilterEngine::getZone
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:64,1
    - Dst: DNSFilterEngine::getProcessingPolicy
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:68,1
    - Dst: std::unordered_map<std::string, bool>
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:68,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:69,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:70,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:73,1
    - Dst: auto::findExactNSPolicy
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:73,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:74,1
    - Dst: DNSFilterEngine::getProcessingPolicy
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:77,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:77,1
    - Dst: std::unordered_map<std::string, bool>
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:77,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:78,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:79,1
    - Dst: auto::findExactNSPolicy
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:79,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:79,1
    - Dst: DNSFilterEngine::getProcessingPolicy
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:84,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:84,1
    - Dst: std::unordered_map<std::string, bool>
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:84,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:85,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:86,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:87,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:87,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:88,1
    - Dst: DNSFilterEngine::getProcessingPolicy
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:91,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:91,1
    - Dst: std::unordered_map<std::string, bool>
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:91,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:92,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:96,1
    - Dst: auto::findExactNSPolicy
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:96,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:96,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:98,1
    - Dst: auto::findExactNSPolicy
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:98,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:99,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:100,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:100,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:101,1
    - Dst: DNSName::toStringNoDot
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:101,1
    - Dst: DNSFilterEngine::getProcessingPolicy
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:106,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:106,1
    - Dst: std::unordered_map<std::string, bool>
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:106,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:107,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:109,1
    - Dst: auto::findExactNSPolicy
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:109,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:109,1
    - Dst: DNSFilterEngine::getProcessingPolicy
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:114,1
    - Dst: std::unordered_map<std::string, bool>
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:114,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:115,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:116,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:118,1
    - Dst: auto::findNSIPPolicy
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:118,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:119,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:120,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:120,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:121,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:121,1
    - Dst: DNSFilterEngine::getProcessingPolicy
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:126,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:126,1
    - Dst: std::unordered_map<std::string, bool>
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:126,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:127,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:129,1
    - Dst: auto::findNSIPPolicy
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:129,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:129,1
    - Dst: DNSFilterEngine::getQueryPolicy
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:134,1
    - Dst: std::unordered_map<std::string, bool>
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:134,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:135,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:136,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:138,1
    - Dst: auto::findExactQNamePolicy
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:138,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:139,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:140,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:141,1
    - Dst: DNSName::toStringNoDot
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:141,1
    - Dst: DNSFilterEngine::getQueryPolicy
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:144,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:144,1
    - Dst: std::unordered_map<std::string, bool>
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:144,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:145,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:146,1
    - Dst: auto::findExactQNamePolicy
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:146,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:146,1
    - Dst: DNSFilterEngine::getQueryPolicy
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:151,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:151,1
    - Dst: std::unordered_map<std::string, bool>
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:151,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:152,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:153,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:154,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:155,1
    - Dst: DNSFilterEngine::getQueryPolicy
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:158,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:158,1
    - Dst: std::unordered_map<std::string, bool>
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:158,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:159,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:163,1
    - Dst: auto::findExactQNamePolicy
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:163,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:163,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:165,1
    - Dst: auto::findExactQNamePolicy
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:165,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:166,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:167,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:168,1
    - Dst: DNSName::toStringNoDot
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:168,1
    - Dst: DNSFilterEngine::getClientPolicy
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:173,1
    - Dst: std::unordered_map<std::string, bool>
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:173,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:174,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:175,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:177,1
    - Dst: auto::findClientPolicy
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:177,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:178,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:179,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:179,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:180,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:180,1
    - Dst: DNSFilterEngine::getClientPolicy
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:185,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:185,1
    - Dst: std::unordered_map<std::string, bool>
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:185,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:186,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:188,1
    - Dst: auto::findClientPolicy
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:188,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:188,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:189,1
    - Dst: auto::findExactQNamePolicy
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:189,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:189,1
    - Dst: DNSRecord::DNSRecord
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:194,1
    - Dst: DNSRecord::setContent
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:196,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:196,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:196,1
    - Dst: DNSFilterEngine::getPostPolicy
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:197,1
    - Dst: std::unordered_map<std::string, bool>
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:197,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:198,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:199,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:201,1
    - Dst: auto::findResponsePolicy
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:201,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:202,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:203,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:203,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:204,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:204,1
    - Dst: DNSRecord::DNSRecord
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:209,1
    - Dst: DNSRecord::setContent
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:211,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:211,1
    - Dst: DNSFilterEngine::getPostPolicy
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:212,1
    - Dst: std::unordered_map<std::string, bool>
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:212,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:213,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:215,1
    - Dst: auto::findResponsePolicy
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:215,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:215,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:218,1
    - Dst: auto::size
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:218,1
    - Dst: auto::rmClientTrigger
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:219,1
    - Dst: Netmask
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:219,1
    - Dst: DNSFilterEngine::Policy
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:219,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:220,1
    - Dst: auto::size
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:220,1
    - Dst: auto::rmQNameTrigger
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:221,1
    - Dst: DNSFilterEngine::Policy
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:221,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:222,1
    - Dst: auto::size
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:222,1
    - Dst: auto::rmQNameTrigger
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:223,1
    - Dst: DNSFilterEngine::Policy
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:223,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:224,1
    - Dst: auto::size
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:224,1
    - Dst: auto::rmNSIPTrigger
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:225,1
    - Dst: Netmask
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:225,1
    - Dst: DNSFilterEngine::Policy
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:225,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:226,1
    - Dst: auto::size
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:226,1
    - Dst: auto::rmNSTrigger
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:227,1
    - Dst: DNSFilterEngine::Policy
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:227,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:228,1
    - Dst: auto::size
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:228,1
    - Dst: auto::rmNSTrigger
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:229,1
    - Dst: DNSFilterEngine::Policy
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:229,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:230,1
    - Dst: auto::size
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:230,1
    - Dst: auto::rmResponseTrigger
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:231,1
    - Dst: Netmask
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:231,1
    - Dst: DNSFilterEngine::Policy
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:231,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:232,1
    - Dst: auto::size
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:232,1
    - Dst: DNSFilterEngine::clear
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:235,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:236,1
    - Dst: DNSFilterEngine::size
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:236,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:237,1
    - Dst: DNSFilterEngine::getZone
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:237,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:238,1
    - Dst: DNSFilterEngine::getZone
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:238,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 128
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 239
      start: 16
    functionDepth: 1
    functionLinenumber: 16
    functionLinenumberEnd: 239
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-filterpo_cc.cc
    functionUses: 0
    functionsReached:
    - auto::rmNSTrigger
    - DNSFilterEngine::clear
    - DNSRecord::DNSRecord
    - auto::addQNameTrigger
    - auto::rmNSIPTrigger
    - auto::rmQNameTrigger
    - auto::setDomain
    - DNSRecord::setContent
    - auto::addClientTrigger
    - auto::size
    - auto::setRefresh
    - std::unordered_map<std::string, bool>
    - auto::findClientPolicy
    - DNSRecordContent::make
    - auto::addNSTrigger
    - DNSFilterEngine::getProcessingPolicy
    - auto::setSerial
    - auto::rmResponseTrigger
    - auto::rmClientTrigger
    - auto::findExactQNamePolicy
    - Netmask
    - auto::getRefresh
    - auto::getSerial
    - DNSFilterEngine::getQueryPolicy
    - auto::getName
    - DNSName
    - DNSFilterEngine::size
    - auto::setName
    - DNSFilterEngine::addZone
    - DNSFilterEngine::setZone
    - auto::getDomain
    - auto::addResponseTrigger
    - ComboAddress
    - auto::findResponsePolicy
    - auto::findExactNSPolicy
    - DNSFilterEngine::getPostPolicy
    - auto::addNSIPTrigger
    - DNSFilterEngine::getClientPolicy
    - DNSFilterEngine::Policy
    - DNSName::toStringNoDot
    - BOOST_CHECK_EQUAL
    - DNSFilterEngine::getZone
    - DNSFilterEngine::DNSFilterEngine
    - ComboAddress::toString
    - auto::findNSIPPolicy
    - std::make_shared<DNSFilterEngine::Zone>
    - BOOST_CHECK
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_filter_policies_basic)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSFilterEngine::DNSFilterEngine
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:243,1
    - Dst: std::make_shared<DNSFilterEngine::Zone>
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:246,1
    - Dst: auto::setName
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:247,1
    - Dst: auto::setDomain
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:248,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:248,1
    - Dst: auto::setSerial
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:249,1
    - Dst: auto::setRefresh
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:250,1
    - Dst: auto::addQNameTrigger
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:252,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:252,1
    - Dst: DNSFilterEngine::Policy
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:253,1
    - Dst: auto::addQNameTrigger
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:255,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:255,1
    - Dst: DNSFilterEngine::Policy
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:256,1
    - Dst: auto::addQNameTrigger
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:258,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:258,1
    - Dst: DNSFilterEngine::Policy
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:259,1
    - Dst: DNSFilterEngine::addZone
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:262,1
    - Dst: DNSFilterEngine::getQueryPolicy
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:268,1
    - Dst: std::unordered_map<std::string, bool>
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:268,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:269,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:270,1
    - Dst: DNSFilterEngine::getQueryPolicy
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:275,1
    - Dst: std::unordered_map<std::string, bool>
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:275,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:276,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:277,1
    - Dst: DNSFilterEngine::getQueryPolicy
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:285,1
    - Dst: std::unordered_map<std::string, bool>
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:285,1
    - Dst: BOOST_WARN_MESSAGE
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:286,1
    - Dst: BOOST_WARN_MESSAGE
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:287,1
    - Dst: DNSFilterEngine::getQueryPolicy
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:292,1
    - Dst: std::unordered_map<std::string, bool>
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:292,1
    - Dst: BOOST_WARN_MESSAGE
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:293,1
    - Dst: BOOST_WARN_MESSAGE
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:294,1
    - Dst: DNSFilterEngine::getQueryPolicy
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:299,1
    - Dst: std::unordered_map<std::string, bool>
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:299,1
    - Dst: BOOST_WARN_MESSAGE
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:300,1
    - Dst: BOOST_WARN_MESSAGE
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:301,1
    - Dst: DNSFilterEngine::getQueryPolicy
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:306,1
    - Dst: std::unordered_map<std::string, bool>
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:306,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:307,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:308,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 27
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 310
      start: 241
    functionDepth: 1
    functionLinenumber: 241
    functionLinenumberEnd: 310
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-filterpo_cc.cc
    functionUses: 0
    functionsReached:
    - auto::addQNameTrigger
    - DNSFilterEngine::getQueryPolicy
    - DNSFilterEngine::Policy
    - std::unordered_map<std::string, bool>
    - DNSName
    - BOOST_WARN_MESSAGE
    - auto::setName
    - DNSFilterEngine::DNSFilterEngine
    - DNSFilterEngine::addZone
    - auto::setDomain
    - auto::setSerial
    - std::make_shared<DNSFilterEngine::Zone>
    - BOOST_CHECK
    - auto::setRefresh
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_filter_policies_wildcard_with_enc)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSFilterEngine::DNSFilterEngine
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:314,1
    - Dst: std::make_shared<DNSFilterEngine::Zone>
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:317,1
    - Dst: auto::setName
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:318,1
    - Dst: auto::addQNameTrigger
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:323,1
    - Dst: DNSFilterEngine::Policy
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:323,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:323,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:324,1
    - Dst: auto::size
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:324,1
    - Dst: auto::addQNameTrigger
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:326,1
    - Dst: DNSFilterEngine::Policy
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:326,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:326,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:327,1
    - Dst: auto::size
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:327,1
    - Dst: auto::addQNameTrigger
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:329,1
    - Dst: DNSFilterEngine::Policy
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:329,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:329,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:330,1
    - Dst: auto::size
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:330,1
    - Dst: auto::addQNameTrigger
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:332,1
    - Dst: DNSFilterEngine::Policy
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:332,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:332,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:333,1
    - Dst: auto::size
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:333,1
    - Dst: DNSFilterEngine::addZone
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:335,1
    - Dst: DNSFilterEngine::getQueryPolicy
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:339,1
    - Dst: std::unordered_map<std::string, bool>
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:339,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:340,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:341,1
    - Dst: auto::getCustomRecords
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:342,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:343,1
    - Dst: auto::size
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:343,1
    - Dst: auto::at
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:344,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:345,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:346,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:347,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:348,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:349,1
    - Dst: auto::getTarget
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:349,1
    - Dst: DNSFilterEngine::getQueryPolicy
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:354,1
    - Dst: std::unordered_map<std::string, bool>
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:354,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:355,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:356,1
    - Dst: auto::getCustomRecords
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:359,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:360,1
    - Dst: auto::size
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:360,1
    - Dst: auto::at
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:362,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:363,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:364,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:365,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:366,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:367,1
    - Dst: auto::getCA
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:367,1
    - Dst: auto::at
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:370,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:371,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:372,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:373,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:374,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:375,1
    - Dst: auto::getCA
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:375,1
    - Dst: auto::getCustomRecords
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:380,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:381,1
    - Dst: auto::size
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:381,1
    - Dst: auto::at
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:382,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:383,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:384,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:385,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:386,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:387,1
    - Dst: auto::d_mxname::toString
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:387,1
    - Dst: auto::getCustomRecords
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:392,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:393,1
    - Dst: auto::size
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:393,1
    - Dst: auto::rmQNameTrigger
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:398,1
    - Dst: DNSFilterEngine::Policy
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:398,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:398,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:399,1
    - Dst: auto::size
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:399,1
    - Dst: DNSFilterEngine::getQueryPolicy
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:403,1
    - Dst: std::unordered_map<std::string, bool>
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:403,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:404,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:405,1
    - Dst: auto::getCustomRecords
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:408,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:409,1
    - Dst: auto::size
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:409,1
    - Dst: auto::at
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:411,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:412,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:413,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:414,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:415,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:416,1
    - Dst: auto::getCA
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:416,1
    - Dst: auto::getCustomRecords
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:421,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:422,1
    - Dst: auto::size
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:422,1
    - Dst: auto::at
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:423,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:424,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:425,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:426,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:427,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:428,1
    - Dst: auto::d_mxname::toString
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:428,1
    - Dst: auto::getCustomRecords
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:433,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:434,1
    - Dst: auto::size
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:434,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 62
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 437
      start: 312
    functionDepth: 1
    functionLinenumber: 312
    functionLinenumberEnd: 437
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-filterpo_cc.cc
    functionUses: 0
    functionsReached:
    - auto::addQNameTrigger
    - auto::rmQNameTrigger
    - auto::d_mxname::toString
    - auto::size
    - std::unordered_map<std::string, bool>
    - DNSRecordContent::make
    - auto::getCA
    - BOOST_REQUIRE_EQUAL
    - auto::getCustomRecords
    - DNSFilterEngine::getQueryPolicy
    - auto::setName
    - DNSFilterEngine::addZone
    - auto::getTarget
    - getRR
    - DNSFilterEngine::Policy
    - BOOST_CHECK_EQUAL
    - DNSFilterEngine::DNSFilterEngine
    - auto::at
    - std::make_shared<DNSFilterEngine::Zone>
    - BOOST_CHECK
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_filter_policies_local_data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSFilterEngine::DNSFilterEngine
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:441,1
    - Dst: std::make_shared<DNSFilterEngine::Zone>
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:444,1
    - Dst: auto::setName
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:445,1
    - Dst: auto::addClientTrigger
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:450,1
    - Dst: DNSFilterEngine::Policy
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:450,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:450,1
    - Dst: auto::addClientTrigger
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:451,1
    - Dst: DNSFilterEngine::Policy
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:451,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:451,1
    - Dst: auto::addClientTrigger
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:452,1
    - Dst: DNSFilterEngine::Policy
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:452,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:452,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:453,1
    - Dst: auto::size
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:453,1
    - Dst: DNSFilterEngine::addZone
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:455,1
    - Dst: DNSFilterEngine::getClientPolicy
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:458,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:458,1
    - Dst: std::unordered_map<std::string, bool>
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:458,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:459,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:460,1
    - Dst: auto::getCustomRecords
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:461,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:461,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:462,1
    - Dst: auto::size
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:462,1
    - Dst: auto::at
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:463,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:464,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:465,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:466,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:467,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:468,1
    - Dst: auto::getCA
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:468,1
    - Dst: auto::at
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:470,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:471,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:472,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:473,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:474,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:475,1
    - Dst: auto::getCA
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:475,1
    - Dst: DNSFilterEngine::getClientPolicy
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:479,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:479,1
    - Dst: std::unordered_map<std::string, bool>
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:479,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:480,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:481,1
    - Dst: auto::getCustomRecords
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:482,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:482,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:483,1
    - Dst: auto::size
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:483,1
    - Dst: auto::at
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:484,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:485,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:486,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:487,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:488,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:489,1
    - Dst: auto::getCA
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:489,1
    - Dst: auto::rmClientTrigger
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:493,1
    - Dst: DNSFilterEngine::Policy
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:493,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:493,1
    - Dst: auto::rmClientTrigger
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:496,1
    - Dst: Netmask
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:496,1
    - Dst: DNSFilterEngine::Policy
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:496,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:496,1
    - Dst: auto::rmClientTrigger
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:499,1
    - Dst: Netmask
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:499,1
    - Dst: DNSFilterEngine::Policy
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:499,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:499,1
    - Dst: auto::rmClientTrigger
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:502,1
    - Dst: DNSFilterEngine::Policy
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:502,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:502,1
    - Dst: DNSFilterEngine::getClientPolicy
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:505,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:505,1
    - Dst: std::unordered_map<std::string, bool>
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:505,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:506,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:507,1
    - Dst: auto::getCustomRecords
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:508,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:508,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:509,1
    - Dst: auto::size
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:509,1
    - Dst: auto::at
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:510,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:511,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:512,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:513,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:514,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:515,1
    - Dst: auto::getCA
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:515,1
    - Dst: DNSFilterEngine::getClientPolicy
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:518,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:518,1
    - Dst: std::unordered_map<std::string, bool>
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:518,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:519,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:520,1
    - Dst: auto::getCustomRecords
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:521,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:521,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:522,1
    - Dst: auto::size
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:522,1
    - Dst: auto::at
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:523,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:524,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:525,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:526,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:527,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:528,1
    - Dst: auto::getCA
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:528,1
    - Dst: auto::rmClientTrigger
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:532,1
    - Dst: DNSFilterEngine::Policy
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:532,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:532,1
    - Dst: auto::rmClientTrigger
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:535,1
    - Dst: DNSFilterEngine::Policy
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:535,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:535,1
    - Dst: DNSFilterEngine::getClientPolicy
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:538,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:538,1
    - Dst: std::unordered_map<std::string, bool>
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:538,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:539,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:540,1
    - Dst: auto::getCustomRecords
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:541,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:541,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:542,1
    - Dst: auto::size
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:542,1
    - Dst: auto::at
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:543,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:544,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:545,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:546,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:547,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:548,1
    - Dst: auto::getCA
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:548,1
    - Dst: auto::rmClientTrigger
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:552,1
    - Dst: DNSFilterEngine::Policy
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:552,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:552,1
    - Dst: DNSFilterEngine::getClientPolicy
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:555,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:555,1
    - Dst: std::unordered_map<std::string, bool>
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:555,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:556,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:557,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 61
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 559
      start: 439
    functionDepth: 1
    functionLinenumber: 439
    functionLinenumberEnd: 559
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-filterpo_cc.cc
    functionUses: 0
    functionsReached:
    - auto::size
    - auto::addClientTrigger
    - std::unordered_map<std::string, bool>
    - DNSRecordContent::make
    - auto::rmClientTrigger
    - auto::getCA
    - auto::getCustomRecords
    - Netmask
    - DNSName
    - auto::setName
    - DNSFilterEngine::addZone
    - ComboAddress
    - getRR
    - DNSFilterEngine::getClientPolicy
    - DNSFilterEngine::Policy
    - BOOST_CHECK_EQUAL
    - DNSFilterEngine::DNSFilterEngine
    - auto::at
    - std::make_shared<DNSFilterEngine::Zone>
    - BOOST_CHECK
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_filter_policies_local_data_netmask)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSFilterEngine::DNSFilterEngine
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:563,1
    - Dst: std::make_shared<DNSFilterEngine::Zone>
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:565,1
    - Dst: auto::setName
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:566,1
    - Dst: std::make_shared<DNSFilterEngine::Zone>
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:568,1
    - Dst: auto::setName
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:569,1
    - Dst: auto::addQNameTrigger
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:575,1
    - Dst: DNSFilterEngine::Policy
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:575,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:575,1
    - Dst: auto::addQNameTrigger
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:576,1
    - Dst: DNSFilterEngine::Policy
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:576,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:576,1
    - Dst: auto::addQNameTrigger
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:577,1
    - Dst: DNSFilterEngine::Policy
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:577,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:577,1
    - Dst: auto::addQNameTrigger
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:578,1
    - Dst: DNSFilterEngine::Policy
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:578,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:578,1
    - Dst: DNSFilterEngine::addZone
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:580,1
    - Dst: DNSFilterEngine::addZone
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:581,1
    - Dst: DNSFilterEngine::getQueryPolicy
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:585,1
    - Dst: std::unordered_map<std::string, bool>
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:585,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:586,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:587,1
    - Dst: auto::getCustomRecords
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:588,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:589,1
    - Dst: auto::size
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:589,1
    - Dst: auto::at
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:590,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:591,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:592,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:593,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:594,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:595,1
    - Dst: auto::getTarget
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:595,1
    - Dst: DNSFilterEngine::getQueryPolicy
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:600,1
    - Dst: std::unordered_map<std::string, bool>
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:600,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:601,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:602,1
    - Dst: auto::getCustomRecords
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:603,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:604,1
    - Dst: auto::size
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:604,1
    - Dst: auto::at
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:605,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:606,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:607,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:608,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:609,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:610,1
    - Dst: auto::getTarget
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:610,1
    - Dst: DNSFilterEngine::getQueryPolicy
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:615,1
    - Dst: auto::getName
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:615,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:616,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:617,1
    - Dst: auto::getCustomRecords
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:618,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:619,1
    - Dst: auto::size
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:619,1
    - Dst: auto::at
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:620,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:621,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:622,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:623,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:624,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:625,1
    - Dst: auto::getTarget
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:625,1
    - Dst: DNSFilterEngine::getQueryPolicy
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:630,1
    - Dst: auto::getName
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:630,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:631,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:632,1
    - Dst: auto::getCustomRecords
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:633,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:634,1
    - Dst: auto::size
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:634,1
    - Dst: auto::at
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:635,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:636,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:637,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:638,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:639,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:640,1
    - Dst: auto::getTarget
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:640,1
    - Dst: DNSFilterEngine::getQueryPolicy
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:645,1
    - Dst: auto::getName
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:645,1
    - Dst: auto::getName
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:645,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:646,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 43
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 648
      start: 561
    functionDepth: 1
    functionLinenumber: 561
    functionLinenumberEnd: 648
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-filterpo_cc.cc
    functionUses: 0
    functionsReached:
    - auto::getTarget
    - getRR
    - auto::addQNameTrigger
    - DNSFilterEngine::getQueryPolicy
    - DNSFilterEngine::Policy
    - std::unordered_map<std::string, bool>
    - BOOST_CHECK_EQUAL
    - auto::getName
    - auto::setName
    - DNSFilterEngine::DNSFilterEngine
    - DNSFilterEngine::addZone
    - DNSRecordContent::make
    - auto::at
    - std::make_shared<DNSFilterEngine::Zone>
    - BOOST_CHECK
    - auto::size
    - auto::getCustomRecords
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_multiple_filter_policies)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSFilterEngine::DNSFilterEngine
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:652,1
    - Dst: std::make_shared<DNSFilterEngine::Zone>
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:654,1
    - Dst: auto::setName
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:655,1
    - Dst: std::make_shared<DNSFilterEngine::Zone>
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:657,1
    - Dst: auto::setName
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:658,1
    - Dst: auto::addClientTrigger
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:666,1
    - Dst: Netmask
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:666,1
    - Dst: DNSFilterEngine::Policy
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:666,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:666,1
    - Dst: auto::addQNameTrigger
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:667,1
    - Dst: DNSFilterEngine::Policy
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:667,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:667,1
    - Dst: auto::addNSIPTrigger
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:668,1
    - Dst: Netmask
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:668,1
    - Dst: DNSFilterEngine::Policy
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:668,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:668,1
    - Dst: auto::addNSTrigger
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:669,1
    - Dst: DNSFilterEngine::Policy
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:669,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:669,1
    - Dst: auto::addResponseTrigger
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:670,1
    - Dst: Netmask
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:670,1
    - Dst: DNSFilterEngine::Policy
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:670,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:670,1
    - Dst: auto::addClientTrigger
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:672,1
    - Dst: Netmask
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:672,1
    - Dst: DNSFilterEngine::Policy
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:672,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:672,1
    - Dst: auto::addQNameTrigger
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:673,1
    - Dst: DNSFilterEngine::Policy
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:673,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:673,1
    - Dst: auto::addNSIPTrigger
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:674,1
    - Dst: Netmask
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:674,1
    - Dst: DNSFilterEngine::Policy
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:674,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:674,1
    - Dst: auto::addNSTrigger
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:675,1
    - Dst: DNSFilterEngine::Policy
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:675,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:675,1
    - Dst: auto::addResponseTrigger
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:676,1
    - Dst: Netmask
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:676,1
    - Dst: DNSFilterEngine::Policy
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:676,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:676,1
    - Dst: DNSFilterEngine::addZone
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:678,1
    - Dst: DNSFilterEngine::addZone
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:679,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:680,1
    - Dst: auto::getPriority
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:680,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:681,1
    - Dst: auto::getPriority
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:681,1
    - Dst: DNSFilterEngine::getClientPolicy
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:685,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:685,1
    - Dst: std::unordered_map<std::string, bool>
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:685,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:686,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:687,1
    - Dst: auto::getCustomRecords
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:688,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:689,1
    - Dst: auto::size
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:689,1
    - Dst: auto::at
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:690,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:691,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:692,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:693,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:694,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:695,1
    - Dst: auto::getTarget
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:695,1
    - Dst: DNSFilterEngine::getClientPolicy
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:700,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:700,1
    - Dst: auto::getName
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:700,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:701,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:702,1
    - Dst: DNSFilterEngine::getQueryPolicy
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:707,1
    - Dst: std::unordered_map<std::string, bool>
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:707,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:708,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:709,1
    - Dst: auto::getCustomRecords
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:710,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:711,1
    - Dst: auto::size
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:711,1
    - Dst: auto::at
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:712,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:713,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:714,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:715,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:716,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:717,1
    - Dst: auto::getTarget
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:717,1
    - Dst: DNSFilterEngine::getQueryPolicy
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:722,1
    - Dst: std::unordered_map<std::string, bool>
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:722,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:723,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:724,1
    - Dst: auto::getCustomRecords
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:725,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:726,1
    - Dst: auto::size
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:726,1
    - Dst: auto::at
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:727,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:728,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:729,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:730,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:731,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:732,1
    - Dst: auto::getTarget
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:732,1
    - Dst: DNSFilterEngine::getQueryPolicy
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:737,1
    - Dst: std::unordered_map<std::string, bool>
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:737,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:738,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:739,1
    - Dst: DNSFilterEngine::getQueryPolicy
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:744,1
    - Dst: auto::getName
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:744,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:745,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:746,1
    - Dst: auto::getCustomRecords
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:747,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:748,1
    - Dst: auto::size
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:748,1
    - Dst: auto::at
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:749,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:750,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:751,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:752,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:753,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:754,1
    - Dst: auto::getTarget
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:754,1
    - Dst: DNSFilterEngine::getQueryPolicy
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:759,1
    - Dst: auto::getName
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:759,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:760,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:761,1
    - Dst: DNSFilterEngine::getProcessingPolicy
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:766,1
    - Dst: std::unordered_map<std::string, bool>
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:766,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:767,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:768,1
    - Dst: auto::getCustomRecords
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:769,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:770,1
    - Dst: auto::size
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:770,1
    - Dst: auto::at
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:771,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:772,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:773,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:774,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:775,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:776,1
    - Dst: auto::getTarget
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:776,1
    - Dst: DNSFilterEngine::getProcessingPolicy
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:781,1
    - Dst: auto::getName
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:781,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:782,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:783,1
    - Dst: DNSFilterEngine::getProcessingPolicy
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:788,1
    - Dst: std::unordered_map<std::string, bool>
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:788,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:789,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:790,1
    - Dst: auto::getCustomRecords
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:791,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:792,1
    - Dst: auto::size
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:792,1
    - Dst: auto::at
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:793,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:794,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:795,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:796,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:797,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:798,1
    - Dst: auto::getTarget
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:798,1
    - Dst: DNSFilterEngine::getProcessingPolicy
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:803,1
    - Dst: auto::getName
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:803,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:804,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:805,1
    - Dst: DNSRecord::DNSRecord
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:810,1
    - Dst: DNSRecord::setContent
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:812,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:812,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:812,1
    - Dst: DNSFilterEngine::getPostPolicy
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:813,1
    - Dst: std::unordered_map<std::string, bool>
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:813,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:814,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:815,1
    - Dst: auto::getCustomRecords
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:816,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:817,1
    - Dst: auto::size
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:817,1
    - Dst: auto::at
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:818,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:819,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:820,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:821,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:822,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:823,1
    - Dst: auto::getTarget
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:823,1
    - Dst: DNSRecord::DNSRecord
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:828,1
    - Dst: DNSRecord::setContent
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:830,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:830,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:830,1
    - Dst: DNSFilterEngine::getPostPolicy
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:831,1
    - Dst: auto::getName
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:831,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:832,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:833,1
    - Dst: DNSRecord::DNSRecord
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:838,1
    - Dst: DNSRecord::setContent
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:840,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:840,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:840,1
    - Dst: DNSFilterEngine::getPostPolicy
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:841,1
    - Dst: auto::getName
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:841,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:842,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:843,1
    - Dst: auto::getCustomRecords
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:844,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:845,1
    - Dst: auto::size
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:845,1
    - Dst: auto::at
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:846,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:847,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:848,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:849,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:850,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:851,1
    - Dst: auto::getTarget
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:851,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 105
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 853
      start: 650
    functionDepth: 1
    functionLinenumber: 650
    functionLinenumberEnd: 853
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-filterpo_cc.cc
    functionUses: 0
    functionsReached:
    - DNSRecord::DNSRecord
    - auto::addQNameTrigger
    - DNSRecord::setContent
    - auto::addClientTrigger
    - auto::size
    - std::unordered_map<std::string, bool>
    - DNSRecordContent::make
    - auto::addNSTrigger
    - DNSFilterEngine::getProcessingPolicy
    - auto::getCustomRecords
    - Netmask
    - DNSFilterEngine::getQueryPolicy
    - auto::getName
    - auto::setName
    - DNSFilterEngine::addZone
    - auto::addResponseTrigger
    - ComboAddress
    - auto::getTarget
    - auto::getPriority
    - getRR
    - DNSFilterEngine::getPostPolicy
    - auto::addNSIPTrigger
    - DNSFilterEngine::getClientPolicy
    - DNSFilterEngine::Policy
    - BOOST_CHECK_EQUAL
    - DNSFilterEngine::DNSFilterEngine
    - ComboAddress::toString
    - auto::at
    - std::make_shared<DNSFilterEngine::Zone>
    - BOOST_CHECK
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_multiple_filter_policies_order)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:857,1
    - Dst: DNSFilterEngine::Zone::maskToRPZ
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:857,1
    - Dst: Netmask
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:857,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:858,1
    - Dst: DNSFilterEngine::Zone::maskToRPZ
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:858,1
    - Dst: Netmask
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:858,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:859,1
    - Dst: DNSFilterEngine::Zone::maskToRPZ
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:859,1
    - Dst: Netmask
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:859,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:860,1
    - Dst: DNSFilterEngine::Zone::maskToRPZ
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:860,1
    - Dst: Netmask
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:860,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:861,1
    - Dst: DNSFilterEngine::Zone::maskToRPZ
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:861,1
    - Dst: Netmask
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:861,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:862,1
    - Dst: DNSFilterEngine::Zone::maskToRPZ
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:862,1
    - Dst: Netmask
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:862,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:863,1
    - Dst: DNSFilterEngine::Zone::maskToRPZ
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:863,1
    - Dst: Netmask
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:863,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:864,1
    - Dst: DNSFilterEngine::Zone::maskToRPZ
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:864,1
    - Dst: Netmask
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:864,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:865,1
    - Dst: DNSFilterEngine::Zone::maskToRPZ
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:865,1
    - Dst: Netmask
      Src: /src/pdns/pdns/recursordist/test-filterpo_cc.cc:865,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 866
      start: 855
    functionDepth: 0
    functionLinenumber: 855
    functionLinenumberEnd: 866
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-filterpo_cc.cc
    functionUses: 0
    functionsReached:
    - DNSFilterEngine::Zone::maskToRPZ
    - Netmask
    - BOOST_CHECK_EQUAL
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_mask_to_rpz)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - requestedSize
    - pageSize
    argTypes:
    - size_type
    - size_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 49
    functionDepth: 0
    functionLinenumber: 49
    functionLinenumberEnd: 56
    functionName: getAlignmentPadding
    functionSourceFile: /src/pdns/pdns/recursordist/lazy_allocator.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: size_type
    signature: size_type getAlignmentPadding(size_type requestedSize, size_type pageSize)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<pointer>
      Src: /src/pdns/pdns/recursordist/lazy_allocator.hh:63,1
    - Dst: ::operator new
      Src: /src/pdns/pdns/recursordist/lazy_allocator.hh:63,1
    - Dst: sysconf
      Src: /src/pdns/pdns/recursordist/lazy_allocator.hh:79,1
    - Dst: getAlignmentPadding
      Src: /src/pdns/pdns/recursordist/lazy_allocator.hh:82,1
    - Dst: mmap
      Src: /src/pdns/pdns/recursordist/lazy_allocator.hh:93,1
    - Dst: std::bad_alloc
      Src: /src/pdns/pdns/recursordist/lazy_allocator.hh:95,1
    - Dst: static_cast<char*>
      Src: /src/pdns/pdns/recursordist/lazy_allocator.hh:97,1
    - Dst: mprotect
      Src: /src/pdns/pdns/recursordist/lazy_allocator.hh:100,1
    - Dst: munmap
      Src: /src/pdns/pdns/recursordist/lazy_allocator.hh:102,1
    - Dst: std::bad_alloc
      Src: /src/pdns/pdns/recursordist/lazy_allocator.hh:103,1
    - Dst: mprotect
      Src: /src/pdns/pdns/recursordist/lazy_allocator.hh:105,1
    - Dst: mprotect
      Src: /src/pdns/pdns/recursordist/lazy_allocator.hh:107,1
    - Dst: munmap
      Src: /src/pdns/pdns/recursordist/lazy_allocator.hh:110,1
    - Dst: std::bad_alloc
      Src: /src/pdns/pdns/recursordist/lazy_allocator.hh:111,1
    - Dst: static_cast<pointer>
      Src: /src/pdns/pdns/recursordist/lazy_allocator.hh:113,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 15
    argCount: 1
    argNames:
    - n
    argTypes:
    - size_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 115
      start: 59
    functionDepth: 1
    functionLinenumber: 59
    functionLinenumberEnd: 115
    functionName: allocate
    functionSourceFile: /src/pdns/pdns/recursordist/lazy_allocator.hh
    functionUses: 2
    functionsReached:
    - static_cast<char*>
    - std::bad_alloc
    - sysconf
    - mmap
    - getAlignmentPadding
    - munmap
    - mprotect
    - static_cast<pointer>
    - ::operator new
    linkageType: ''
    returnType: pointer
    signature: pointer allocate(size_type const n)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ::operator delete
      Src: /src/pdns/pdns/recursordist/lazy_allocator.hh:122,1
    - Dst: ::operator delete
      Src: /src/pdns/pdns/recursordist/lazy_allocator.hh:125,1
    - Dst: sysconf
      Src: /src/pdns/pdns/recursordist/lazy_allocator.hh:128,1
    - Dst: getAlignmentPadding
      Src: /src/pdns/pdns/recursordist/lazy_allocator.hh:131,1
    - Dst: static_cast<char*>
      Src: /src/pdns/pdns/recursordist/lazy_allocator.hh:134,1
    - Dst: munmap
      Src: /src/pdns/pdns/recursordist/lazy_allocator.hh:135,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - ptr
    - n
    argTypes:
    - pointer
    - size_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 137
      start: 117
    functionDepth: 1
    functionLinenumber: 117
    functionLinenumberEnd: 137
    functionName: deallocate
    functionSourceFile: /src/pdns/pdns/recursordist/lazy_allocator.hh
    functionUses: 0
    functionsReached:
    - static_cast<char*>
    - sysconf
    - ::operator delete
    - munmap
    - getAlignmentPadding
    linkageType: ''
    returnType: void
    signature: void deallocate(pointer const ptr, size_type const n) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 139
      start: 139
    functionDepth: 0
    functionLinenumber: 139
    functionLinenumberEnd: 139
    functionName: construct
    functionSourceFile: /src/pdns/pdns/recursordist/lazy_allocator.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void construct(T*) const noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<void*>
      Src: /src/pdns/pdns/recursordist/lazy_allocator.hh:145,1
    - Dst: std::forward<Args>
      Src: /src/pdns/pdns/recursordist/lazy_allocator.hh:145,1
    - Dst: X::X
      Src: /src/pdns/pdns/recursordist/lazy_allocator.hh:145,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - place
    argTypes:
    - X*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 146
      start: 142
    functionDepth: 0
    functionLinenumber: 142
    functionLinenumberEnd: 146
    functionName: construct
    functionSourceFile: /src/pdns/pdns/recursordist/lazy_allocator.hh
    functionUses: 0
    functionsReached:
    - X::X
    - static_cast<void*>
    - std::forward<Args>
    linkageType: ''
    returnType: void
    signature: void construct(X* place, Args&&... args) const noexcept
  - 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: operator==(lazy_allocator<T> const&, lazy_allocator<T> const&) noexcept
    functionSourceFile: /src/pdns/pdns/recursordist/lazy_allocator.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool operator==(lazy_allocator<T> const&, lazy_allocator<T> const&)
      noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 159
      start: 156
    functionDepth: 0
    functionLinenumber: 156
    functionLinenumberEnd: 159
    functionName: operator!=(lazy_allocator<T> const&, lazy_allocator<T> const&) noexcept
    functionSourceFile: /src/pdns/pdns/recursordist/lazy_allocator.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool operator!=(lazy_allocator<T> const&, lazy_allocator<T> const&)
      noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/pdns/pdns/recursordist/nsecrecords.cc:32,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' pw_'
    argTypes:
    - DNSPacketWriter
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 33
      start: 30
    functionDepth: 0
    functionLinenumber: 30
    functionLinenumberEnd: 33
    functionName: NSECBitmapGenerator::NSECBitmapGenerator
    functionSourceFile: /src/pdns/pdns/recursordist/nsecrecords.cc
    functionUses: 0
    functionsReached:
    - memset
    linkageType: ''
    returnType: void
    signature: void NSECBitmapGenerator(DNSPacketWriter& pw_)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/recursordist/nsecrecords.cc:38,1
    - Dst: static_cast<unsigned char>
      Src: /src/pdns/pdns/recursordist/nsecrecords.cc:42,1
    - Dst: static_cast<unsigned char>
      Src: /src/pdns/pdns/recursordist/nsecrecords.cc:43,1
    - Dst: assign
      Src: /src/pdns/pdns/recursordist/nsecrecords.cc:44,1
    - Dst: xfrBlob
      Src: /src/pdns/pdns/recursordist/nsecrecords.cc:45,1
    - Dst: memset
      Src: /src/pdns/pdns/recursordist/nsecrecords.cc:47,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 1
    argNames:
    - type
    argTypes:
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 35
    functionDepth: 1
    functionLinenumber: 35
    functionLinenumberEnd: 52
    functionName: NSECBitmapGenerator::set
    functionSourceFile: /src/pdns/pdns/recursordist/nsecrecords.cc
    functionUses: 1
    functionsReached:
    - assign
    - memset
    - xfrBlob
    - static_cast<unsigned char>
    - static_cast<int>
    linkageType: ''
    returnType: void
    signature: void set(uint16_t type)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<unsigned char>
      Src: /src/pdns/pdns/recursordist/nsecrecords.cc:56,1
    - Dst: static_cast<unsigned char>
      Src: /src/pdns/pdns/recursordist/nsecrecords.cc:57,1
    - Dst: assign
      Src: /src/pdns/pdns/recursordist/nsecrecords.cc:59,1
    - Dst: xfrBlob
      Src: /src/pdns/pdns/recursordist/nsecrecords.cc:60,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 54
    functionDepth: 1
    functionLinenumber: 54
    functionLinenumberEnd: 62
    functionName: NSECBitmapGenerator::finish
    functionSourceFile: /src/pdns/pdns/recursordist/nsecrecords.cc
    functionUses: 1
    functionsReached:
    - assign
    - xfrBlob
    - static_cast<unsigned char>
    linkageType: ''
    returnType: void
    signature: void finish()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: NSECBitmap::count
      Src: /src/pdns/pdns/recursordist/nsecrecords.cc:80,1
    - Dst: test
      Src: /src/pdns/pdns/recursordist/nsecrecords.cc:82,1
    - Dst: NSECBitmapGenerator::set
      Src: /src/pdns/pdns/recursordist/nsecrecords.cc:86,1
    - Dst: NSECBitmapGenerator::set
      Src: /src/pdns/pdns/recursordist/nsecrecords.cc:91,1
    - Dst: NSECBitmapGenerator::finish
      Src: /src/pdns/pdns/recursordist/nsecrecords.cc:95,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 1
    argNames:
    - ' pw'
    argTypes:
    - DNSPacketWriter
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 75
    functionDepth: 0
    functionLinenumber: 75
    functionLinenumberEnd: 96
    functionName: NSECBitmap::toPacket
    functionSourceFile: /src/pdns/pdns/recursordist/nsecrecords.cc
    functionUses: 0
    functionsReached:
    - NSECBitmapGenerator::set
    - NSECBitmap::count
    - NSECBitmapGenerator::finish
    - test
    linkageType: ''
    returnType: void
    signature: void NSECBitmap::toPacket(DNSPacketWriter& pw) const
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: xfrBlob
      Src: /src/pdns/pdns/recursordist/nsecrecords.cc:101,1
    - Dst: string::empty
      Src: /src/pdns/pdns/recursordist/nsecrecords.cc:104,1
    - Dst: string::size
      Src: /src/pdns/pdns/recursordist/nsecrecords.cc:108,1
    - Dst: MOADNSException
      Src: /src/pdns/pdns/recursordist/nsecrecords.cc:109,1
    - Dst: string::size
      Src: /src/pdns/pdns/recursordist/nsecrecords.cc:112,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/recursordist/nsecrecords.cc:113,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/recursordist/nsecrecords.cc:114,1
    - Dst: MOADNSException
      Src: /src/pdns/pdns/recursordist/nsecrecords.cc:122,1
    - Dst: string::size
      Src: /src/pdns/pdns/recursordist/nsecrecords.cc:125,1
    - Dst: MOADNSException
      Src: /src/pdns/pdns/recursordist/nsecrecords.cc:126,1
    - Dst: NSECBitmap::set
      Src: /src/pdns/pdns/recursordist/nsecrecords.cc:133,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 26
    argCount: 1
    argNames:
    - ' pr'
    argTypes:
    - PacketReader
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 138
      start: 98
    functionDepth: 0
    functionLinenumber: 98
    functionLinenumberEnd: 138
    functionName: NSECBitmap::fromPacket
    functionSourceFile: /src/pdns/pdns/recursordist/nsecrecords.cc
    functionUses: 0
    functionsReached:
    - string::size
    - string::empty
    - static_cast<uint8_t>
    - NSECBitmap::set
    - MOADNSException
    - xfrBlob
    linkageType: ''
    returnType: void
    signature: void NSECBitmap::fromPacket(PacketReader& pr)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: NSECBitmap::count
      Src: /src/pdns/pdns/recursordist/nsecrecords.cc:146,1
    - Dst: test
      Src: /src/pdns/pdns/recursordist/nsecrecords.cc:148,1
    - Dst: DNSRecordContent::NumberToType
      Src: /src/pdns/pdns/recursordist/nsecrecords.cc:154,1
    - Dst: DNSRecordContent::NumberToType
      Src: /src/pdns/pdns/recursordist/nsecrecords.cc:160,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 165
      start: 140
    functionDepth: 0
    functionLinenumber: 140
    functionLinenumberEnd: 165
    functionName: NSECBitmap::getZoneRepresentation
    functionSourceFile: /src/pdns/pdns/recursordist/nsecrecords.cc
    functionUses: 0
    functionsReached:
    - NSECBitmap::count
    - DNSRecordContent::NumberToType
    - test
    linkageType: ''
    returnType: string
    signature: string NSECBitmap::getZoneRepresentation() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: regist
      Src: /src/pdns/pdns/recursordist/nsecrecords.cc:169,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 170
      start: 167
    functionDepth: 0
    functionLinenumber: 167
    functionLinenumberEnd: 170
    functionName: NSECRecordContent::report
    functionSourceFile: /src/pdns/pdns/recursordist/nsecrecords.cc
    functionUses: 2
    functionsReached:
    - regist
    linkageType: ''
    returnType: void
    signature: void NSECRecordContent::report(const ReportIsOnlyCallableByReportAllTypes&
      /* unused */)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<NSECRecordContent>
      Src: /src/pdns/pdns/recursordist/nsecrecords.cc:174,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' content'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 175
      start: 172
    functionDepth: 0
    functionLinenumber: 172
    functionLinenumberEnd: 175
    functionName: NSECRecordContent::make
    functionSourceFile: /src/pdns/pdns/recursordist/nsecrecords.cc
    functionUses: 0
    functionsReached:
    - std::make_shared<NSECRecordContent>
    linkageType: ''
    returnType: std::shared_ptr<DNSRecordContent>
    signature: std::shared_ptr<DNSRecordContent> NSECRecordContent::make(const string&
      content)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RecordTextReader::xfrName
      Src: /src/pdns/pdns/recursordist/nsecrecords.cc:180,1
    - Dst: RecordTextReader::eof
      Src: /src/pdns/pdns/recursordist/nsecrecords.cc:182,1
    - Dst: RecordTextReader::xfrType
      Src: /src/pdns/pdns/recursordist/nsecrecords.cc:184,1
    - Dst: NSECRecordContent::set
      Src: /src/pdns/pdns/recursordist/nsecrecords.cc:185,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - ' content'
    - ' zone'
    argTypes:
    - string
    - ZoneName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 187
      start: 177
    functionDepth: 0
    functionLinenumber: 177
    functionLinenumberEnd: 187
    functionName: NSECRecordContent::NSECRecordContent
    functionSourceFile: /src/pdns/pdns/recursordist/nsecrecords.cc
    functionUses: 2
    functionsReached:
    - NSECRecordContent::set
    - RecordTextReader::xfrType
    - RecordTextReader::eof
    - RecordTextReader::xfrName
    linkageType: ''
    returnType: void
    signature: void NSECRecordContent::NSECRecordContent(const string& content, const
      ZoneName& zone)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: xfrName
      Src: /src/pdns/pdns/recursordist/nsecrecords.cc:191,1
    - Dst: NSECRecordContent::toPacket
      Src: /src/pdns/pdns/recursordist/nsecrecords.cc:192,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ' pw'
    argTypes:
    - DNSPacketWriter
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 193
      start: 189
    functionDepth: 0
    functionLinenumber: 189
    functionLinenumberEnd: 193
    functionName: NSECRecordContent::toPacket
    functionSourceFile: /src/pdns/pdns/recursordist/nsecrecords.cc
    functionUses: 2
    functionsReached:
    - xfrName
    - NSECRecordContent::toPacket
    linkageType: ''
    returnType: void
    signature: void NSECRecordContent::toPacket(DNSPacketWriter& pw) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<NSECRecordContent>
      Src: /src/pdns/pdns/recursordist/nsecrecords.cc:197,1
    - Dst: xfrName
      Src: /src/pdns/pdns/recursordist/nsecrecords.cc:198,1
    - Dst: auto::d_bitmap::fromPacket
      Src: /src/pdns/pdns/recursordist/nsecrecords.cc:200,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - ' pr'
    argTypes:
    - PacketReader
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 203
      start: 195
    functionDepth: 0
    functionLinenumber: 195
    functionLinenumberEnd: 203
    functionName: NSECRecordContent::make
    functionSourceFile: /src/pdns/pdns/recursordist/nsecrecords.cc
    functionUses: 0
    functionsReached:
    - auto::d_bitmap::fromPacket
    - std::make_shared<NSECRecordContent>
    - xfrName
    linkageType: ''
    returnType: std::shared_ptr<NSECRecordContent::DNSRecordContent>
    signature: std::shared_ptr<NSECRecordContent::DNSRecordContent> NSECRecordContent::make(const
      DNSRecord & /* dr */, PacketReader& pr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RecordTextWriter::xfrName
      Src: /src/pdns/pdns/recursordist/nsecrecords.cc:209,1
    - Dst: NSECRecordContent::getZoneRepresentation
      Src: /src/pdns/pdns/recursordist/nsecrecords.cc:211,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 212
      start: 205
    functionDepth: 0
    functionLinenumber: 205
    functionLinenumberEnd: 212
    functionName: NSECRecordContent::getZoneRepresentation
    functionSourceFile: /src/pdns/pdns/recursordist/nsecrecords.cc
    functionUses: 2
    functionsReached:
    - NSECRecordContent::getZoneRepresentation
    - RecordTextWriter::xfrName
    linkageType: ''
    returnType: string
    signature: string NSECRecordContent::getZoneRepresentation(bool /* noDot */) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: regist
      Src: /src/pdns/pdns/recursordist/nsecrecords.cc:218,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 219
      start: 216
    functionDepth: 0
    functionLinenumber: 216
    functionLinenumberEnd: 219
    functionName: NSEC3RecordContent::report
    functionSourceFile: /src/pdns/pdns/recursordist/nsecrecords.cc
    functionUses: 2
    functionsReached:
    - regist
    linkageType: ''
    returnType: void
    signature: void NSEC3RecordContent::report(const ReportIsOnlyCallableByReportAllTypes&
      /* unused */)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<NSEC3RecordContent>
      Src: /src/pdns/pdns/recursordist/nsecrecords.cc:223,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' content'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 224
      start: 221
    functionDepth: 0
    functionLinenumber: 221
    functionLinenumberEnd: 224
    functionName: NSEC3RecordContent::make
    functionSourceFile: /src/pdns/pdns/recursordist/nsecrecords.cc
    functionUses: 0
    functionsReached:
    - std::make_shared<NSEC3RecordContent>
    linkageType: ''
    returnType: std::shared_ptr<DNSRecordContent>
    signature: std::shared_ptr<DNSRecordContent> NSEC3RecordContent::make(const string&
      content)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RecordTextReader::xfr8BitInt
      Src: /src/pdns/pdns/recursordist/nsecrecords.cc:229,1
    - Dst: RecordTextReader::xfr8BitInt
      Src: /src/pdns/pdns/recursordist/nsecrecords.cc:230,1
    - Dst: RecordTextReader::xfr16BitInt
      Src: /src/pdns/pdns/recursordist/nsecrecords.cc:231,1
    - Dst: RecordTextReader::xfrHexBlob
      Src: /src/pdns/pdns/recursordist/nsecrecords.cc:233,1
    - Dst: RecordTextReader::xfrBase32HexBlob
      Src: /src/pdns/pdns/recursordist/nsecrecords.cc:234,1
    - Dst: RecordTextReader::eof
      Src: /src/pdns/pdns/recursordist/nsecrecords.cc:236,1
    - Dst: RecordTextReader::xfrType
      Src: /src/pdns/pdns/recursordist/nsecrecords.cc:238,1
    - Dst: NSEC3RecordContent::set
      Src: /src/pdns/pdns/recursordist/nsecrecords.cc:239,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - ' content'
    - ' zone'
    argTypes:
    - string
    - ZoneName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 241
      start: 226
    functionDepth: 0
    functionLinenumber: 226
    functionLinenumberEnd: 241
    functionName: NSEC3RecordContent::NSEC3RecordContent
    functionSourceFile: /src/pdns/pdns/recursordist/nsecrecords.cc
    functionUses: 2
    functionsReached:
    - RecordTextReader::xfrType
    - RecordTextReader::xfr16BitInt
    - NSEC3RecordContent::set
    - RecordTextReader::xfrHexBlob
    - RecordTextReader::xfrBase32HexBlob
    - RecordTextReader::xfr8BitInt
    - RecordTextReader::eof
    linkageType: ''
    returnType: void
    signature: void NSEC3RecordContent::NSEC3RecordContent(const string& content,
      const ZoneName& zone)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: xfr8BitInt
      Src: /src/pdns/pdns/recursordist/nsecrecords.cc:245,1
    - Dst: xfr8BitInt
      Src: /src/pdns/pdns/recursordist/nsecrecords.cc:246,1
    - Dst: xfr16BitInt
      Src: /src/pdns/pdns/recursordist/nsecrecords.cc:247,1
    - Dst: xfr8BitInt
      Src: /src/pdns/pdns/recursordist/nsecrecords.cc:248,1
    - Dst: length
      Src: /src/pdns/pdns/recursordist/nsecrecords.cc:248,1
    - Dst: xfrBlob
      Src: /src/pdns/pdns/recursordist/nsecrecords.cc:249,1
    - Dst: xfr8BitInt
      Src: /src/pdns/pdns/recursordist/nsecrecords.cc:251,1
    - Dst: length
      Src: /src/pdns/pdns/recursordist/nsecrecords.cc:251,1
    - Dst: xfrBlob
      Src: /src/pdns/pdns/recursordist/nsecrecords.cc:252,1
    - Dst: NSEC3RecordContent::toPacket
      Src: /src/pdns/pdns/recursordist/nsecrecords.cc:254,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 1
    argNames:
    - ' pw'
    argTypes:
    - DNSPacketWriter
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 255
      start: 243
    functionDepth: 0
    functionLinenumber: 243
    functionLinenumberEnd: 255
    functionName: NSEC3RecordContent::toPacket
    functionSourceFile: /src/pdns/pdns/recursordist/nsecrecords.cc
    functionUses: 2
    functionsReached:
    - length
    - xfr8BitInt
    - xfr16BitInt
    - xfrBlob
    - NSEC3RecordContent::toPacket
    linkageType: ''
    returnType: void
    signature: void NSEC3RecordContent::toPacket(DNSPacketWriter& pw) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<NSEC3RecordContent>
      Src: /src/pdns/pdns/recursordist/nsecrecords.cc:259,1
    - Dst: xfr8BitInt
      Src: /src/pdns/pdns/recursordist/nsecrecords.cc:260,1
    - Dst: xfr8BitInt
      Src: /src/pdns/pdns/recursordist/nsecrecords.cc:261,1
    - Dst: xfr16BitInt
      Src: /src/pdns/pdns/recursordist/nsecrecords.cc:262,1
    - Dst: xfr8BitInt
      Src: /src/pdns/pdns/recursordist/nsecrecords.cc:264,1
    - Dst: xfrBlob
      Src: /src/pdns/pdns/recursordist/nsecrecords.cc:265,1
    - Dst: xfr8BitInt
      Src: /src/pdns/pdns/recursordist/nsecrecords.cc:267,1
    - Dst: xfrBlob
      Src: /src/pdns/pdns/recursordist/nsecrecords.cc:268,1
    - Dst: auto::d_bitmap::fromPacket
      Src: /src/pdns/pdns/recursordist/nsecrecords.cc:270,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 1
    argNames:
    - ' pr'
    argTypes:
    - PacketReader
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 272
      start: 257
    functionDepth: 0
    functionLinenumber: 257
    functionLinenumberEnd: 272
    functionName: NSEC3RecordContent::make
    functionSourceFile: /src/pdns/pdns/recursordist/nsecrecords.cc
    functionUses: 0
    functionsReached:
    - auto::d_bitmap::fromPacket
    - xfr8BitInt
    - xfr16BitInt
    - xfrBlob
    - std::make_shared<NSEC3RecordContent>
    linkageType: ''
    returnType: std::shared_ptr<NSEC3RecordContent::DNSRecordContent>
    signature: std::shared_ptr<NSEC3RecordContent::DNSRecordContent> NSEC3RecordContent::make(const
      DNSRecord& /* dr */, PacketReader& pr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RecordTextWriter::xfr8BitInt
      Src: /src/pdns/pdns/recursordist/nsecrecords.cc:278,1
    - Dst: RecordTextWriter::xfr8BitInt
      Src: /src/pdns/pdns/recursordist/nsecrecords.cc:279,1
    - Dst: RecordTextWriter::xfr16BitInt
      Src: /src/pdns/pdns/recursordist/nsecrecords.cc:280,1
    - Dst: RecordTextWriter::xfrHexBlob
      Src: /src/pdns/pdns/recursordist/nsecrecords.cc:282,1
    - Dst: RecordTextWriter::xfrBase32HexBlob
      Src: /src/pdns/pdns/recursordist/nsecrecords.cc:283,1
    - Dst: NSEC3RecordContent::getZoneRepresentation
      Src: /src/pdns/pdns/recursordist/nsecrecords.cc:285,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 286
      start: 274
    functionDepth: 0
    functionLinenumber: 274
    functionLinenumberEnd: 286
    functionName: NSEC3RecordContent::getZoneRepresentation
    functionSourceFile: /src/pdns/pdns/recursordist/nsecrecords.cc
    functionUses: 2
    functionsReached:
    - RecordTextWriter::xfrHexBlob
    - NSEC3RecordContent::getZoneRepresentation
    - RecordTextWriter::xfrBase32HexBlob
    - RecordTextWriter::xfr8BitInt
    - RecordTextWriter::xfr16BitInt
    linkageType: ''
    returnType: string
    signature: string NSEC3RecordContent::getZoneRepresentation(bool /* noDot */)
      const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: regist
      Src: /src/pdns/pdns/recursordist/nsecrecords.cc:291,1
    - Dst: regist
      Src: /src/pdns/pdns/recursordist/nsecrecords.cc:292,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 293
      start: 289
    functionDepth: 0
    functionLinenumber: 289
    functionLinenumberEnd: 293
    functionName: NSEC3PARAMRecordContent::report
    functionSourceFile: /src/pdns/pdns/recursordist/nsecrecords.cc
    functionUses: 2
    functionsReached:
    - regist
    linkageType: ''
    returnType: void
    signature: void NSEC3PARAMRecordContent::report(const ReportIsOnlyCallableByReportAllTypes&
      /* unused */)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<NSEC3PARAMRecordContent>
      Src: /src/pdns/pdns/recursordist/nsecrecords.cc:297,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' content'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 298
      start: 295
    functionDepth: 0
    functionLinenumber: 295
    functionLinenumberEnd: 298
    functionName: NSEC3PARAMRecordContent::make
    functionSourceFile: /src/pdns/pdns/recursordist/nsecrecords.cc
    functionUses: 0
    functionsReached:
    - std::make_shared<NSEC3PARAMRecordContent>
    linkageType: ''
    returnType: std::shared_ptr<DNSRecordContent>
    signature: std::shared_ptr<DNSRecordContent> NSEC3PARAMRecordContent::make(const
      string& content)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RecordTextReader::xfr8BitInt
      Src: /src/pdns/pdns/recursordist/nsecrecords.cc:303,1
    - Dst: RecordTextReader::xfr8BitInt
      Src: /src/pdns/pdns/recursordist/nsecrecords.cc:304,1
    - Dst: RecordTextReader::xfr16BitInt
      Src: /src/pdns/pdns/recursordist/nsecrecords.cc:305,1
    - Dst: RecordTextReader::xfrHexBlob
      Src: /src/pdns/pdns/recursordist/nsecrecords.cc:306,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - ' content'
    - ' zone'
    argTypes:
    - string
    - ZoneName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 307
      start: 300
    functionDepth: 0
    functionLinenumber: 300
    functionLinenumberEnd: 307
    functionName: NSEC3PARAMRecordContent::NSEC3PARAMRecordContent
    functionSourceFile: /src/pdns/pdns/recursordist/nsecrecords.cc
    functionUses: 11
    functionsReached:
    - RecordTextReader::xfrHexBlob
    - RecordTextReader::xfr16BitInt
    - RecordTextReader::xfr8BitInt
    linkageType: ''
    returnType: void
    signature: void NSEC3PARAMRecordContent::NSEC3PARAMRecordContent(const string&
      content, const ZoneName& zone)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: xfr8BitInt
      Src: /src/pdns/pdns/recursordist/nsecrecords.cc:311,1
    - Dst: xfr8BitInt
      Src: /src/pdns/pdns/recursordist/nsecrecords.cc:312,1
    - Dst: xfr16BitInt
      Src: /src/pdns/pdns/recursordist/nsecrecords.cc:313,1
    - Dst: xfr8BitInt
      Src: /src/pdns/pdns/recursordist/nsecrecords.cc:314,1
    - Dst: length
      Src: /src/pdns/pdns/recursordist/nsecrecords.cc:314,1
    - Dst: xfrBlob
      Src: /src/pdns/pdns/recursordist/nsecrecords.cc:316,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - ' pw'
    argTypes:
    - DNSPacketWriter
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 317
      start: 309
    functionDepth: 0
    functionLinenumber: 309
    functionLinenumberEnd: 317
    functionName: NSEC3PARAMRecordContent::toPacket
    functionSourceFile: /src/pdns/pdns/recursordist/nsecrecords.cc
    functionUses: 0
    functionsReached:
    - xfrBlob
    - xfr16BitInt
    - xfr8BitInt
    - length
    linkageType: ''
    returnType: void
    signature: void NSEC3PARAMRecordContent::toPacket(DNSPacketWriter& pw) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<NSEC3PARAMRecordContent>
      Src: /src/pdns/pdns/recursordist/nsecrecords.cc:321,1
    - Dst: xfr8BitInt
      Src: /src/pdns/pdns/recursordist/nsecrecords.cc:322,1
    - Dst: xfr8BitInt
      Src: /src/pdns/pdns/recursordist/nsecrecords.cc:323,1
    - Dst: xfr16BitInt
      Src: /src/pdns/pdns/recursordist/nsecrecords.cc:324,1
    - Dst: xfr8BitInt
      Src: /src/pdns/pdns/recursordist/nsecrecords.cc:326,1
    - Dst: xfrHexBlob
      Src: /src/pdns/pdns/recursordist/nsecrecords.cc:327,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - ' pr'
    argTypes:
    - PacketReader
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 329
      start: 319
    functionDepth: 0
    functionLinenumber: 319
    functionLinenumberEnd: 329
    functionName: NSEC3PARAMRecordContent::make
    functionSourceFile: /src/pdns/pdns/recursordist/nsecrecords.cc
    functionUses: 0
    functionsReached:
    - xfr16BitInt
    - xfr8BitInt
    - xfrHexBlob
    - std::make_shared<NSEC3PARAMRecordContent>
    linkageType: ''
    returnType: std::shared_ptr<NSEC3PARAMRecordContent::DNSRecordContent>
    signature: std::shared_ptr<NSEC3PARAMRecordContent::DNSRecordContent> NSEC3PARAMRecordContent::make(const
      DNSRecord& /* dr */, PacketReader& pr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RecordTextWriter::xfr8BitInt
      Src: /src/pdns/pdns/recursordist/nsecrecords.cc:335,1
    - Dst: RecordTextWriter::xfr8BitInt
      Src: /src/pdns/pdns/recursordist/nsecrecords.cc:336,1
    - Dst: RecordTextWriter::xfr16BitInt
      Src: /src/pdns/pdns/recursordist/nsecrecords.cc:337,1
    - Dst: RecordTextWriter::xfrHexBlob
      Src: /src/pdns/pdns/recursordist/nsecrecords.cc:338,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 340
      start: 331
    functionDepth: 0
    functionLinenumber: 331
    functionLinenumberEnd: 340
    functionName: NSEC3PARAMRecordContent::getZoneRepresentation
    functionSourceFile: /src/pdns/pdns/recursordist/nsecrecords.cc
    functionUses: 2
    functionsReached:
    - RecordTextWriter::xfrHexBlob
    - RecordTextWriter::xfr8BitInt
    - RecordTextWriter::xfr16BitInt
    linkageType: ''
    returnType: string
    signature: string NSEC3PARAMRecordContent::getZoneRepresentation(bool /* noDot
      */) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: regist
      Src: /src/pdns/pdns/recursordist/nsecrecords.cc:348,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 349
      start: 346
    functionDepth: 0
    functionLinenumber: 346
    functionLinenumberEnd: 349
    functionName: CSYNCRecordContent::report
    functionSourceFile: /src/pdns/pdns/recursordist/nsecrecords.cc
    functionUses: 2
    functionsReached:
    - regist
    linkageType: ''
    returnType: void
    signature: void CSYNCRecordContent::report(const ReportIsOnlyCallableByReportAllTypes&
      /* unused */)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<CSYNCRecordContent>
      Src: /src/pdns/pdns/recursordist/nsecrecords.cc:353,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' content'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 354
      start: 351
    functionDepth: 0
    functionLinenumber: 351
    functionLinenumberEnd: 354
    functionName: CSYNCRecordContent::make
    functionSourceFile: /src/pdns/pdns/recursordist/nsecrecords.cc
    functionUses: 0
    functionsReached:
    - std::make_shared<CSYNCRecordContent>
    linkageType: ''
    returnType: std::shared_ptr<DNSRecordContent>
    signature: std::shared_ptr<DNSRecordContent> CSYNCRecordContent::make(const string&
      content)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RecordTextReader::xfr32BitInt
      Src: /src/pdns/pdns/recursordist/nsecrecords.cc:359,1
    - Dst: RecordTextReader::xfr16BitInt
      Src: /src/pdns/pdns/recursordist/nsecrecords.cc:360,1
    - Dst: RecordTextReader::eof
      Src: /src/pdns/pdns/recursordist/nsecrecords.cc:362,1
    - Dst: RecordTextReader::xfrType
      Src: /src/pdns/pdns/recursordist/nsecrecords.cc:364,1
    - Dst: CSYNCRecordContent::set
      Src: /src/pdns/pdns/recursordist/nsecrecords.cc:365,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - ' content'
    - ' zone'
    argTypes:
    - string
    - ZoneName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 367
      start: 356
    functionDepth: 0
    functionLinenumber: 356
    functionLinenumberEnd: 367
    functionName: CSYNCRecordContent::CSYNCRecordContent
    functionSourceFile: /src/pdns/pdns/recursordist/nsecrecords.cc
    functionUses: 0
    functionsReached:
    - RecordTextReader::xfrType
    - RecordTextReader::xfr16BitInt
    - CSYNCRecordContent::set
    - RecordTextReader::eof
    - RecordTextReader::xfr32BitInt
    linkageType: ''
    returnType: void
    signature: void CSYNCRecordContent::CSYNCRecordContent(const string& content,
      const ZoneName& zone)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: xfr32BitInt
      Src: /src/pdns/pdns/recursordist/nsecrecords.cc:371,1
    - Dst: xfr16BitInt
      Src: /src/pdns/pdns/recursordist/nsecrecords.cc:372,1
    - Dst: CSYNCRecordContent::toPacket
      Src: /src/pdns/pdns/recursordist/nsecrecords.cc:374,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - ' pw'
    argTypes:
    - DNSPacketWriter
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 375
      start: 369
    functionDepth: 0
    functionLinenumber: 369
    functionLinenumberEnd: 375
    functionName: CSYNCRecordContent::toPacket
    functionSourceFile: /src/pdns/pdns/recursordist/nsecrecords.cc
    functionUses: 2
    functionsReached:
    - CSYNCRecordContent::toPacket
    - xfr16BitInt
    - xfr32BitInt
    linkageType: ''
    returnType: void
    signature: void CSYNCRecordContent::toPacket(DNSPacketWriter& pw) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<CSYNCRecordContent>
      Src: /src/pdns/pdns/recursordist/nsecrecords.cc:379,1
    - Dst: xfr32BitInt
      Src: /src/pdns/pdns/recursordist/nsecrecords.cc:380,1
    - Dst: xfr16BitInt
      Src: /src/pdns/pdns/recursordist/nsecrecords.cc:381,1
    - Dst: auto::d_bitmap::fromPacket
      Src: /src/pdns/pdns/recursordist/nsecrecords.cc:383,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - ' pr'
    argTypes:
    - PacketReader
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 385
      start: 377
    functionDepth: 0
    functionLinenumber: 377
    functionLinenumberEnd: 385
    functionName: CSYNCRecordContent::make
    functionSourceFile: /src/pdns/pdns/recursordist/nsecrecords.cc
    functionUses: 0
    functionsReached:
    - std::make_shared<CSYNCRecordContent>
    - xfr16BitInt
    - xfr32BitInt
    - auto::d_bitmap::fromPacket
    linkageType: ''
    returnType: std::shared_ptr<CSYNCRecordContent::DNSRecordContent>
    signature: std::shared_ptr<CSYNCRecordContent::DNSRecordContent> CSYNCRecordContent::make(const
      DNSRecord& /* dr */, PacketReader& pr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RecordTextWriter::xfr32BitInt
      Src: /src/pdns/pdns/recursordist/nsecrecords.cc:391,1
    - Dst: RecordTextWriter::xfr16BitInt
      Src: /src/pdns/pdns/recursordist/nsecrecords.cc:392,1
    - Dst: CSYNCRecordContent::getZoneRepresentation
      Src: /src/pdns/pdns/recursordist/nsecrecords.cc:394,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 395
      start: 387
    functionDepth: 0
    functionLinenumber: 387
    functionLinenumberEnd: 395
    functionName: CSYNCRecordContent::getZoneRepresentation
    functionSourceFile: /src/pdns/pdns/recursordist/nsecrecords.cc
    functionUses: 2
    functionsReached:
    - RecordTextWriter::xfr32BitInt
    - CSYNCRecordContent::getZoneRepresentation
    - RecordTextWriter::xfr16BitInt
    linkageType: ''
    returnType: string
    signature: string CSYNCRecordContent::getZoneRepresentation(bool /* noDot */)
      const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: clock_gettime
      Src: /src/pdns/pdns/recursordist/gettime.cc:34,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - tp
    - needRealTime
    argTypes:
    - struct timespec*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 35
      start: 32
    functionDepth: 0
    functionLinenumber: 32
    functionLinenumberEnd: 35
    functionName: gettime
    functionSourceFile: /src/pdns/pdns/recursordist/gettime.cc
    functionUses: 80
    functionsReached:
    - clock_gettime
    linkageType: ''
    returnType: int
    signature: int gettime(struct timespec *tp, bool needRealTime)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: gettimeofday
      Src: /src/pdns/pdns/recursordist/gettime.cc:45,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - tp
    argTypes:
    - struct timespec*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 41
    functionDepth: 0
    functionLinenumber: 41
    functionLinenumberEnd: 51
    functionName: gettime
    functionSourceFile: /src/pdns/pdns/recursordist/gettime.cc
    functionUses: 80
    functionsReached:
    - gettimeofday
    linkageType: ''
    returnType: int
    signature: int gettime(struct timespec *tp, bool /* needRealTime */)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' what_arg'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 41
    functionDepth: 0
    functionLinenumber: 41
    functionLinenumberEnd: 42
    functionName: JsonException::JsonException
    functionSourceFile: /src/pdns/pdns/recursordist/json.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void JsonException(const std::string& what_arg)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: string::length
      Src: /src/pdns/pdns/recursordist/misc.hh:126,1
    - Dst: string::find_first_not_of
      Src: /src/pdns/pdns/recursordist/misc.hh:131,1
    - Dst: string::find_first_of
      Src: /src/pdns/pdns/recursordist/misc.hh:136,1
    - Dst: Container::push_back
      Src: /src/pdns/pdns/recursordist/misc.hh:140,1
    - Dst: string::substr
      Src: /src/pdns/pdns/recursordist/misc.hh:140,1
    - Dst: Container::push_back
      Src: /src/pdns/pdns/recursordist/misc.hh:143,1
    - Dst: string::substr
      Src: /src/pdns/pdns/recursordist/misc.hh:143,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 2
    argNames:
    - container
    - in
    argTypes:
    - Container
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 148
      start: 122
    functionDepth: 0
    functionLinenumber: 122
    functionLinenumberEnd: 148
    functionName: stringtok
    functionSourceFile: /src/pdns/pdns/recursordist/misc.hh
    functionUses: 100
    functionsReached:
    - Container::push_back
    - string::length
    - string::substr
    - string::find_first_not_of
    - string::find_first_of
    linkageType: ''
    returnType: void
    signature: "void stringtok (Container &container, string const &in,\n           const
      char * const delimiters = \" \\t\\n\")"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<std::make_signed_t<T>>
      Src: /src/pdns/pdns/recursordist/misc.hh:153,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - lhs
    - rhs
    argTypes:
    - T
    - T
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 154
      start: 150
    functionDepth: 0
    functionLinenumber: 150
    functionLinenumberEnd: 154
    functionName: rfc1982LessThan
    functionSourceFile: /src/pdns/pdns/recursordist/misc.hh
    functionUses: 11
    functionsReached:
    - static_cast<std::make_signed_t<T>>
    linkageType: ''
    returnType: bool
    signature: bool rfc1982LessThan(T lhs, T rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<std::make_signed_t<T>>
      Src: /src/pdns/pdns/recursordist/misc.hh:159,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - lhs
    - rhs
    argTypes:
    - T
    - T
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 160
      start: 156
    functionDepth: 0
    functionLinenumber: 156
    functionLinenumberEnd: 160
    functionName: rfc1982LessThanOrEqual
    functionSourceFile: /src/pdns/pdns/recursordist/misc.hh
    functionUses: 3
    functionsReached:
    - static_cast<std::make_signed_t<T>>
    linkageType: ''
    returnType: bool
    signature: bool rfc1982LessThanOrEqual(T lhs, T rhs)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: string::length
      Src: /src/pdns/pdns/recursordist/misc.hh:168,1
    - Dst: string::find_first_not_of
      Src: /src/pdns/pdns/recursordist/misc.hh:173,1
    - Dst: string::find_first_of
      Src: /src/pdns/pdns/recursordist/misc.hh:178,1
    - Dst: Container::emplace_back
      Src: /src/pdns/pdns/recursordist/misc.hh:182,1
    - Dst: Container::emplace_back
      Src: /src/pdns/pdns/recursordist/misc.hh:185,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 2
    argNames:
    - container
    - in
    argTypes:
    - Container
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 190
      start: 164
    functionDepth: 0
    functionLinenumber: 164
    functionLinenumberEnd: 190
    functionName: vstringtok
    functionSourceFile: /src/pdns/pdns/recursordist/misc.hh
    functionUses: 4
    functionsReached:
    - Container::emplace_back
    - string::find_first_of
    - string::length
    - string::find_first_not_of
    linkageType: ''
    returnType: void
    signature: "void vstringtok (Container &container, string const &in,\n           const
      char * const delimiters = \" \\t\\n\")"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: writen2
      Src: /src/pdns/pdns/recursordist/misc.hh:193,1
    - Dst: std::string::data
      Src: /src/pdns/pdns/recursordist/misc.hh:193,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/recursordist/misc.hh:193,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - fd
    - s
    argTypes:
    - int
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 193
      start: 193
    functionDepth: 0
    functionLinenumber: 193
    functionLinenumberEnd: 193
    functionName: writen2
    functionSourceFile: /src/pdns/pdns/recursordist/misc.hh
    functionUses: 20
    functionsReached:
    - std::string::data
    - std::string::size
    - writen2
    linkageType: ''
    returnType: size_t
    signature: size_t writen2(int fd, const std::string &s)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::getMessageFromErrno
      Src: /src/pdns/pdns/recursordist/misc.hh:206,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 207
      start: 204
    functionDepth: 0
    functionLinenumber: 204
    functionLinenumberEnd: 207
    functionName: stringerror
    functionSourceFile: /src/pdns/pdns/recursordist/misc.hh
    functionUses: 293
    functionsReached:
    - pdns::getMessageFromErrno
    linkageType: ''
    returnType: string
    signature: string stringerror(int err = errno)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: clock_gettime
      Src: /src/pdns/pdns/recursordist/misc.hh:219,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 220
      start: 217
    functionDepth: 0
    functionLinenumber: 217
    functionLinenumberEnd: 220
    functionName: CPUTime::start
    functionSourceFile: /src/pdns/pdns/recursordist/misc.hh
    functionUses: 1
    functionsReached:
    - clock_gettime
    linkageType: ''
    returnType: void
    signature: void start()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: clock_gettime
      Src: /src/pdns/pdns/recursordist/misc.hh:224,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 226
      start: 221
    functionDepth: 0
    functionLinenumber: 221
    functionLinenumberEnd: 226
    functionName: CPUTime::ndiff
    functionSourceFile: /src/pdns/pdns/recursordist/misc.hh
    functionUses: 1
    functionsReached:
    - clock_gettime
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t ndiff()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 238
      start: 238
    functionDepth: 0
    functionLinenumber: 238
    functionLinenumberEnd: 238
    functionName: DTime::DTime
    functionSourceFile: /src/pdns/pdns/recursordist/misc.hh
    functionUses: 10
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void DTime()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 1
    argNames:
    - dt
    argTypes:
    - DTime
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 239
      start: 239
    functionDepth: 0
    functionLinenumber: 239
    functionLinenumberEnd: 239
    functionName: DTime::DTime
    functionSourceFile: /src/pdns/pdns/recursordist/misc.hh
    functionUses: 10
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void DTime(const DTime &dt)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 1
    argNames:
    - dt
    argTypes:
    - DTime
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 240
      start: 240
    functionDepth: 0
    functionLinenumber: 240
    functionLinenumberEnd: 240
    functionName: '& operator=(const DTime &dt)'
    functionSourceFile: /src/pdns/pdns/recursordist/misc.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: DTime
    signature: DTime & operator=(const DTime &dt)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DTime::udiff
      Src: /src/pdns/pdns/recursordist/misc.hh:247,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 248
      start: 245
    functionDepth: 0
    functionLinenumber: 245
    functionLinenumberEnd: 248
    functionName: DTime::udiffNoReset
    functionSourceFile: /src/pdns/pdns/recursordist/misc.hh
    functionUses: 4
    functionsReached:
    - DTime::udiff
    linkageType: ''
    returnType: int
    signature: int udiffNoReset()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' tv'
    argTypes:
    - struct timeval
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 252
      start: 249
    functionDepth: 0
    functionLinenumber: 249
    functionLinenumberEnd: 252
    functionName: DTime::setTimeval
    functionSourceFile: /src/pdns/pdns/recursordist/misc.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setTimeval(const struct timeval& tv)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 256
      start: 253
    functionDepth: 0
    functionLinenumber: 253
    functionLinenumberEnd: 256
    functionName: DTime::getTimeval
    functionSourceFile: /src/pdns/pdns/recursordist/misc.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct timeval
    signature: struct timeval getTimeval() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 264
      start: 261
    functionDepth: 0
    functionLinenumber: 261
    functionLinenumberEnd: 264
    functionName: DTime::time
    functionSourceFile: /src/pdns/pdns/recursordist/misc.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: time_t
    signature: time_t DTime::time() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: gettimeofday
      Src: /src/pdns/pdns/recursordist/misc.hh:268,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 269
      start: 266
    functionDepth: 0
    functionLinenumber: 266
    functionLinenumberEnd: 269
    functionName: DTime::set
    functionSourceFile: /src/pdns/pdns/recursordist/misc.hh
    functionUses: 10
    functionsReached:
    - gettimeofday
    linkageType: ''
    returnType: void
    signature: void DTime::set()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: gettimeofday
      Src: /src/pdns/pdns/recursordist/misc.hh:274,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - reset
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 283
      start: 271
    functionDepth: 0
    functionLinenumber: 271
    functionLinenumberEnd: 283
    functionName: DTime::udiff
    functionSourceFile: /src/pdns/pdns/recursordist/misc.hh
    functionUses: 11
    functionsReached:
    - gettimeofday
    linkageType: ''
    returnType: int
    signature: int DTime::udiff(bool reset)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: length
      Src: /src/pdns/pdns/recursordist/misc.hh:287,1
    - Dst: dns_tolower
      Src: /src/pdns/pdns/recursordist/misc.hh:290,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - ' str'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 295
      start: 285
    functionDepth: 0
    functionLinenumber: 285
    functionLinenumberEnd: 295
    functionName: toLowerInPlace
    functionSourceFile: /src/pdns/pdns/recursordist/misc.hh
    functionUses: 12
    functionsReached:
    - length
    - dns_tolower
    linkageType: ''
    returnType: void
    signature: void toLowerInPlace(string& str)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: toLowerInPlace
      Src: /src/pdns/pdns/recursordist/misc.hh:301,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - upper
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 304
      start: 297
    functionDepth: 0
    functionLinenumber: 297
    functionLinenumberEnd: 304
    functionName: toLower
    functionSourceFile: /src/pdns/pdns/recursordist/misc.hh
    functionUses: 26
    functionsReached:
    - toLowerInPlace
    linkageType: ''
    returnType: string
    signature: string toLower(const string &upper)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: string::empty
      Src: /src/pdns/pdns/recursordist/misc.hh:309,1
    - Dst: string::length
      Src: /src/pdns/pdns/recursordist/misc.hh:310,1
    - Dst: string::resize
      Src: /src/pdns/pdns/recursordist/misc.hh:312,1
    - Dst: toLowerInPlace
      Src: /src/pdns/pdns/recursordist/misc.hh:314,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - upper
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 317
      start: 306
    functionDepth: 1
    functionLinenumber: 306
    functionLinenumberEnd: 317
    functionName: toLowerCanonic
    functionSourceFile: /src/pdns/pdns/recursordist/misc.hh
    functionUses: 0
    functionsReached:
    - string::resize
    - toLowerInPlace
    - string::length
    - string::empty
    linkageType: ''
    returnType: string
    signature: string toLowerCanonic(const string &upper)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: length
      Src: /src/pdns/pdns/recursordist/misc.hh:323,1
    - Dst: dns_toupper
      Src: /src/pdns/pdns/recursordist/misc.hh:324,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ' s'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 327
      start: 320
    functionDepth: 0
    functionLinenumber: 320
    functionLinenumberEnd: 327
    functionName: toUpper
    functionSourceFile: /src/pdns/pdns/recursordist/misc.hh
    functionUses: 12
    functionsReached:
    - length
    - dns_toupper
    linkageType: ''
    returnType: string
    signature: string toUpper( const string& s )
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: gettimeofday
      Src: /src/pdns/pdns/recursordist/misc.hh:332,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 335
      start: 329
    functionDepth: 0
    functionLinenumber: 329
    functionLinenumberEnd: 335
    functionName: getTime
    functionSourceFile: /src/pdns/pdns/recursordist/misc.hh
    functionUses: 0
    functionsReached:
    - gettimeofday
    linkageType: ''
    returnType: double
    signature: double getTime()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: runtime_error
      Src: /src/pdns/pdns/recursordist/misc.hh:339,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/misc.hh:339,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - why
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 340
      start: 337
    functionDepth: 0
    functionLinenumber: 337
    functionLinenumberEnd: 340
    functionName: unixDie
    functionSourceFile: /src/pdns/pdns/recursordist/misc.hh
    functionUses: 46
    functionsReached:
    - stringerror
    - runtime_error
    linkageType: ''
    returnType: void
    signature: void unixDie(const string &why)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' tv'
    argTypes:
    - struct timeval
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 353
      start: 350
    functionDepth: 0
    functionLinenumber: 350
    functionLinenumberEnd: 353
    functionName: makeFloat
    functionSourceFile: /src/pdns/pdns/recursordist/misc.hh
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: float
    signature: float makeFloat(const struct timeval& tv)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' tv'
    argTypes:
    - struct timeval
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 357
      start: 354
    functionDepth: 0
    functionLinenumber: 354
    functionLinenumberEnd: 357
    functionName: uSec
    functionSourceFile: /src/pdns/pdns/recursordist/misc.hh
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t uSec(const struct timeval& tv)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::tie
      Src: /src/pdns/pdns/recursordist/misc.hh:361,1
    - Dst: std::tie
      Src: /src/pdns/pdns/recursordist/misc.hh:361,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' lhs'
    - ' rhs'
    argTypes:
    - struct timeval
    - struct timeval
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 362
      start: 359
    functionDepth: 0
    functionLinenumber: 359
    functionLinenumberEnd: 362
    functionName: operator<(const struct timeval& lhs, const struct timeval& rhs)
    functionSourceFile: /src/pdns/pdns/recursordist/misc.hh
    functionUses: 0
    functionsReached:
    - std::tie
    linkageType: ''
    returnType: bool
    signature: bool operator<(const struct timeval& lhs, const struct timeval& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::tie
      Src: /src/pdns/pdns/recursordist/misc.hh:365,1
    - Dst: std::tie
      Src: /src/pdns/pdns/recursordist/misc.hh:365,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' lhs'
    - ' rhs'
    argTypes:
    - struct timeval
    - struct timeval
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 366
      start: 363
    functionDepth: 0
    functionLinenumber: 363
    functionLinenumberEnd: 366
    functionName: operator<=(const struct timeval& lhs, const struct timeval& rhs)
    functionSourceFile: /src/pdns/pdns/recursordist/misc.hh
    functionUses: 0
    functionsReached:
    - std::tie
    linkageType: ''
    returnType: bool
    signature: bool operator<=(const struct timeval& lhs, const struct timeval& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::tie
      Src: /src/pdns/pdns/recursordist/misc.hh:370,1
    - Dst: std::tie
      Src: /src/pdns/pdns/recursordist/misc.hh:370,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' lhs'
    - ' rhs'
    argTypes:
    - struct timespec
    - struct timespec
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 371
      start: 368
    functionDepth: 0
    functionLinenumber: 368
    functionLinenumberEnd: 371
    functionName: operator<(const struct timespec& lhs, const struct timespec& rhs)
    functionSourceFile: /src/pdns/pdns/recursordist/misc.hh
    functionUses: 0
    functionsReached:
    - std::tie
    linkageType: ''
    returnType: bool
    signature: bool operator<(const struct timespec& lhs, const struct timespec& rhs)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: std::string_view::data
      Src: /src/pdns/pdns/recursordist/misc.hh:377,1
    - Dst: std::string_view::data
      Src: /src/pdns/pdns/recursordist/misc.hh:377,1
    - Dst: std::string_view::length
      Src: /src/pdns/pdns/recursordist/misc.hh:378,1
    - Dst: std::string_view::length
      Src: /src/pdns/pdns/recursordist/misc.hh:378,1
    - Dst: dns_tolower
      Src: /src/pdns/pdns/recursordist/misc.hh:381,1
    - Dst: dns_tolower
      Src: /src/pdns/pdns/recursordist/misc.hh:381,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - std::string_view
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 400
      start: 375
    functionDepth: 0
    functionLinenumber: 375
    functionLinenumberEnd: 400
    functionName: pdns_ilexicographical_compare_three_way
    functionSourceFile: /src/pdns/pdns/recursordist/misc.hh
    functionUses: 10
    functionsReached:
    - std::string_view::data
    - std::string_view::length
    - dns_tolower
    linkageType: ''
    returnType: int
    signature: int pdns_ilexicographical_compare_three_way(std::string_view a, std::string_view
      b)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns_ilexicographical_compare_three_way
      Src: /src/pdns/pdns/recursordist/misc.hh:405,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' a'
    - ' b'
    argTypes:
    - std::string
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 406
      start: 403
    functionDepth: 0
    functionLinenumber: 403
    functionLinenumberEnd: 406
    functionName: pdns_ilexicographical_compare
    functionSourceFile: /src/pdns/pdns/recursordist/misc.hh
    functionUses: 5
    functionsReached:
    - pdns_ilexicographical_compare_three_way
    linkageType: ''
    returnType: bool
    signature: bool pdns_ilexicographical_compare(const std::string& a, const std::string&
      b)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: length
      Src: /src/pdns/pdns/recursordist/misc.hh:411,1
    - Dst: length
      Src: /src/pdns/pdns/recursordist/misc.hh:411,1
    - Dst: pdns_ilexicographical_compare_three_way
      Src: /src/pdns/pdns/recursordist/misc.hh:414,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - ' a'
    - ' b'
    argTypes:
    - std::string
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 415
      start: 409
    functionDepth: 0
    functionLinenumber: 409
    functionLinenumberEnd: 415
    functionName: pdns_iequals
    functionSourceFile: /src/pdns/pdns/recursordist/misc.hh
    functionUses: 31
    functionsReached:
    - length
    - pdns_ilexicographical_compare_three_way
    linkageType: ''
    returnType: bool
    signature: bool pdns_iequals(const std::string& a, const std::string& b)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dns_tolower
      Src: /src/pdns/pdns/recursordist/misc.hh:420,1
    - Dst: dns_tolower
      Src: /src/pdns/pdns/recursordist/misc.hh:420,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - char
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 424
      start: 418
    functionDepth: 0
    functionLinenumber: 418
    functionLinenumberEnd: 424
    functionName: pdns_iequals_ch
    functionSourceFile: /src/pdns/pdns/recursordist/misc.hh
    functionUses: 0
    functionsReached:
    - dns_tolower
    linkageType: ''
    returnType: bool
    signature: bool pdns_iequals_ch(const char a, const char b)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns_ilexicographical_compare
      Src: /src/pdns/pdns/recursordist/misc.hh:435,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' a'
    - ' b'
    argTypes:
    - string
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 436
      start: 433
    functionDepth: 0
    functionLinenumber: 433
    functionLinenumberEnd: 436
    functionName: operator()(const string& a, const string& b) const
    functionSourceFile: /src/pdns/pdns/recursordist/misc.hh
    functionUses: 0
    functionsReached:
    - pdns_ilexicographical_compare
    linkageType: ''
    returnType: bool
    signature: bool operator()(const string& a, const string& b) const
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: std::locale
      Src: /src/pdns/pdns/recursordist/misc.hh:443,1
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/misc.hh:444,1
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/misc.hh:445,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/misc.hh:446,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/misc.hh:447,1
    - Dst: std::tolower
      Src: /src/pdns/pdns/recursordist/misc.hh:447,1
    - Dst: std::tolower
      Src: /src/pdns/pdns/recursordist/misc.hh:447,1
    - Dst: std::tolower
      Src: /src/pdns/pdns/recursordist/misc.hh:450,1
    - Dst: std::tolower
      Src: /src/pdns/pdns/recursordist/misc.hh:450,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/misc.hh:455,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 2
    argNames:
    - ' lhs'
    - ' rhs'
    argTypes:
    - std::string
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 456
      start: 441
    functionDepth: 0
    functionLinenumber: 441
    functionLinenumberEnd: 456
    functionName: operator() (const std::string& lhs, const std::string& rhs) const
    functionSourceFile: /src/pdns/pdns/recursordist/misc.hh
    functionUses: 0
    functionsReached:
    - std::locale
    - std::tolower
    - end
    - begin
    linkageType: ''
    returnType: bool
    signature: bool operator() (const std::string& lhs, const std::string& rhs) const
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pdns_ilexicographical_compare
      Src: /src/pdns/pdns/recursordist/misc.hh:463,1
    - Dst: pdns_ilexicographical_compare
      Src: /src/pdns/pdns/recursordist/misc.hh:465,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - ' a'
    - ' b'
    argTypes:
    - pair<string, uint16_t>
    - pair<string, uint16_t>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 468
      start: 461
    functionDepth: 0
    functionLinenumber: 461
    functionLinenumberEnd: 468
    functionName: operator()(const pair<string, uint16_t>& a, const pair<string, uint16_t>&
      b) const
    functionSourceFile: /src/pdns/pdns/recursordist/misc.hh
    functionUses: 0
    functionsReached:
    - pdns_ilexicographical_compare
    linkageType: ''
    returnType: bool
    signature: bool operator()(const pair<string, uint16_t>& a, const pair<string,
      uint16_t>& b) const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::search
      Src: /src/pdns/pdns/recursordist/misc.hh:473,1
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/misc.hh:473,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/misc.hh:473,1
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/misc.hh:474,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/misc.hh:474,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/misc.hh:475,1
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/misc.hh:479,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - ' haystack'
    - ' needle'
    argTypes:
    - string
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 481
      start: 471
    functionDepth: 0
    functionLinenumber: 471
    functionLinenumberEnd: 481
    functionName: pdns_ci_find
    functionSourceFile: /src/pdns/pdns/recursordist/misc.hh
    functionUses: 0
    functionsReached:
    - std::search
    - end
    - begin
    linkageType: ''
    returnType: size_t
    signature: size_t pdns_ci_find(const string& haystack, const string& needle)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: boost::ends_with
      Src: /src/pdns/pdns/recursordist/misc.hh:487,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - qname
    argTypes:
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 488
      start: 485
    functionDepth: 0
    functionLinenumber: 485
    functionLinenumberEnd: 488
    functionName: isCanonical
    functionSourceFile: /src/pdns/pdns/recursordist/misc.hh
    functionUses: 8
    functionsReached:
    - boost::ends_with
    linkageType: ''
    returnType: bool
    signature: bool isCanonical(std::string_view qname)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/recursordist/misc.hh:492,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/misc.hh:493,1
    - Dst: isCanonical
      Src: /src/pdns/pdns/recursordist/misc.hh:494,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/misc.hh:495,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/misc.hh:496,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/misc.hh:496,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 2
    argNames:
    - ' zone'
    - ' qname'
    argTypes:
    - ZoneName
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 497
      start: 490
    functionDepth: 0
    functionLinenumber: 490
    functionLinenumberEnd: 497
    functionName: toCanonic
    functionSourceFile: /src/pdns/pdns/recursordist/misc.hh
    functionUses: 2
    functionsReached:
    - isCanonical
    - DNSName
    - size
    linkageType: ''
    returnType: DNSName
    signature: DNSName toCanonic(const ZoneName& zone, const string& qname)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: insert
      Src: /src/pdns/pdns/recursordist/misc.hh:510,1
    - Dst: replace
      Src: /src/pdns/pdns/recursordist/misc.hh:511,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - ' i'
    - ' x'
    argTypes:
    - Index
    - typename Index::value_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 513
      start: 507
    functionDepth: 2
    functionLinenumber: 507
    functionLinenumberEnd: 513
    functionName: replacing_insert
    functionSourceFile: /src/pdns/pdns/recursordist/misc.hh
    functionUses: 0
    functionsReached:
    - replace
    - insert
    linkageType: ''
    returnType: std::pair<typename Index::iterator,bool>
    signature: std::pair<typename Index::iterator,bool> replacing_insert(Index& i,const
      typename Index::value_type& x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 521
      start: 521
    functionDepth: 0
    functionLinenumber: 521
    functionLinenumberEnd: 521
    functionName: Regex::Regex
    functionSourceFile: /src/pdns/pdns/recursordist/misc.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Regex(const Regex&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 522
      start: 522
    functionDepth: 0
    functionLinenumber: 522
    functionLinenumberEnd: 522
    functionName: '& operator=(const Regex&)'
    functionSourceFile: /src/pdns/pdns/recursordist/misc.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Regex
    signature: Regex & operator=(const Regex&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - Regex
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 523
      start: 523
    functionDepth: 0
    functionLinenumber: 523
    functionLinenumberEnd: 523
    functionName: Regex::Regex
    functionSourceFile: /src/pdns/pdns/recursordist/misc.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Regex(Regex&& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - Regex
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 524
      start: 524
    functionDepth: 0
    functionLinenumber: 524
    functionLinenumberEnd: 524
    functionName: '& operator=(Regex&& rhs)'
    functionSourceFile: /src/pdns/pdns/recursordist/misc.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Regex
    signature: Regex & operator=(Regex&& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 525
      start: 525
    functionDepth: 0
    functionLinenumber: 525
    functionLinenumberEnd: 525
    functionName: ~Regex()
    functionSourceFile: /src/pdns/pdns/recursordist/misc.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~Regex()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: regfree
      Src: /src/pdns/pdns/recursordist/misc.hh:534,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ptr
    argTypes:
    - regex_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 536
      start: 533
    functionDepth: 0
    functionLinenumber: 533
    functionLinenumberEnd: 536
    functionName: operator()(regex_t* ptr) const noexcept
    functionSourceFile: /src/pdns/pdns/recursordist/misc.hh
    functionUses: 0
    functionsReached:
    - regfree
    linkageType: ''
    returnType: void
    signature: void operator()(regex_t* ptr) const noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/misc.hh:546,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - mask
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 548
      start: 545
    functionDepth: 0
    functionLinenumber: 545
    functionLinenumberEnd: 548
    functionName: SimpleMatch::SimpleMatch
    functionSourceFile: /src/pdns/pdns/recursordist/misc.hh
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void SimpleMatch(string mask, bool caseFold = false)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: SimpleMatch::match
      Src: /src/pdns/pdns/recursordist/misc.hh:562,1
    - Dst: dns_tolower
      Src: /src/pdns/pdns/recursordist/misc.hh:570,1
    - Dst: dns_tolower
      Src: /src/pdns/pdns/recursordist/misc.hh:570,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 34
    argCount: 4
    argNames:
    - mi
    - mend
    - vi
    - vend
    argTypes:
    - string::const_iterator
    - string::const_iterator
    - string::const_iterator
    - string::const_iterator
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 577
      start: 550
    functionDepth: 0
    functionLinenumber: 550
    functionLinenumberEnd: 577
    functionName: SimpleMatch::match
    functionSourceFile: /src/pdns/pdns/recursordist/misc.hh
    functionUses: 12
    functionsReached:
    - SimpleMatch::match
    - dns_tolower
    linkageType: ''
    returnType: bool
    signature: bool match(string::const_iterator mi, string::const_iterator mend,
      string::const_iterator vi, string::const_iterator vend) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SimpleMatch::match
      Src: /src/pdns/pdns/recursordist/misc.hh:580,1
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/misc.hh:580,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/misc.hh:580,1
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/misc.hh:580,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/misc.hh:580,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' value'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 581
      start: 579
    functionDepth: 0
    functionLinenumber: 579
    functionLinenumberEnd: 581
    functionName: SimpleMatch::match
    functionSourceFile: /src/pdns/pdns/recursordist/misc.hh
    functionUses: 13
    functionsReached:
    - SimpleMatch::match
    - end
    - begin
    linkageType: ''
    returnType: bool
    signature: bool match(const string& value) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SimpleMatch::match
      Src: /src/pdns/pdns/recursordist/misc.hh:584,1
    - Dst: toStringNoDot
      Src: /src/pdns/pdns/recursordist/misc.hh:584,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' name'
    argTypes:
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 585
      start: 583
    functionDepth: 0
    functionLinenumber: 583
    functionLinenumberEnd: 585
    functionName: SimpleMatch::match
    functionSourceFile: /src/pdns/pdns/recursordist/misc.hh
    functionUses: 14
    functionsReached:
    - SimpleMatch::match
    - toStringNoDot
    linkageType: ''
    returnType: bool
    signature: bool match(const DNSName& name) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SimpleMatch::match
      Src: /src/pdns/pdns/recursordist/misc.hh:589,1
    - Dst: toStringNoDot
      Src: /src/pdns/pdns/recursordist/misc.hh:589,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' name'
    argTypes:
    - ZoneName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 590
      start: 588
    functionDepth: 0
    functionLinenumber: 588
    functionLinenumberEnd: 590
    functionName: SimpleMatch::match
    functionSourceFile: /src/pdns/pdns/recursordist/misc.hh
    functionUses: 15
    functionsReached:
    - SimpleMatch::match
    - toStringNoDot
    linkageType: ''
    returnType: bool
    signature: bool match(const ZoneName& name) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' a'
    - ' b'
    argTypes:
    - T
    - T
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 645
      start: 642
    functionDepth: 0
    functionLinenumber: 642
    functionLinenumberEnd: 645
    functionName: defTer
    functionSourceFile: /src/pdns/pdns/recursordist/misc.hh
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: T
    signature: T & defTer(const T& a, const T& b)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: T
      Src: /src/pdns/pdns/recursordist/misc.hh:650,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - val
    argTypes:
    - P
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 651
      start: 648
    functionDepth: 0
    functionLinenumber: 648
    functionLinenumberEnd: 651
    functionName: valueOrEmpty
    functionSourceFile: /src/pdns/pdns/recursordist/misc.hh
    functionUses: 0
    functionsReached:
    - T
    linkageType: ''
    returnType: T
    signature: T valueOrEmpty(const P val)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - siz
    argTypes:
    - Integer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 663
      start: 657
    functionDepth: 0
    functionLinenumber: 657
    functionLinenumberEnd: 663
    functionName: addS
    functionSourceFile: /src/pdns/pdns/recursordist/misc.hh
    functionUses: 9
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char * addS(Integer siz, const char* singular = "", const char *plural
      = "s")
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: addS
      Src: /src/pdns/pdns/recursordist/misc.hh:669,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/misc.hh:669,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' c'
    argTypes:
    - C
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 670
      start: 667
    functionDepth: 0
    functionLinenumber: 667
    functionLinenumberEnd: 670
    functionName: addS
    functionSourceFile: /src/pdns/pdns/recursordist/misc.hh
    functionUses: 10
    functionsReached:
    - addS
    - size
    linkageType: ''
    returnType: char
    signature: char * addS(const C& c, const char* singular = "", const char *plural
      = "s")
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: find
      Src: /src/pdns/pdns/recursordist/misc.hh:675,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/misc.hh:676,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - ' c'
    - ' key'
    argTypes:
    - C
    - typename C::value_type::first_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 679
      start: 673
    functionDepth: 0
    functionLinenumber: 673
    functionLinenumberEnd: 679
    functionName: rplookup
    functionSourceFile: /src/pdns/pdns/recursordist/misc.hh
    functionUses: 2
    functionsReached:
    - end
    - find
    linkageType: ''
    returnType: typename C::value_type::second_type
    signature: typename C::value_type::second_type * rplookup(const C& c, const typename
      C::value_type::first_type& key)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pdns::min
      Src: /src/pdns/pdns/recursordist/misc.hh:709,1
    - Dst: pdns::min
      Src: /src/pdns/pdns/recursordist/misc.hh:710,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/misc.hh:712,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/misc.hh:712,1
    - Dst: std::out_of_range
      Src: /src/pdns/pdns/recursordist/misc.hh:713,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/recursordist/misc.hh:717,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/recursordist/misc.hh:718,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/misc.hh:720,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/misc.hh:720,1
    - Dst: std::out_of_range
      Src: /src/pdns/pdns/recursordist/misc.hh:721,1
    - Dst: static_cast<T>
      Src: /src/pdns/pdns/recursordist/misc.hh:725,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 12
    argCount: 1
    argNames:
    - from
    argTypes:
    - F
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 726
      start: 702
    functionDepth: 0
    functionLinenumber: 702
    functionLinenumberEnd: 726
    functionName: pdns::checked_conv
    functionSourceFile: /src/pdns/pdns/recursordist/misc.hh
    functionUses: 0
    functionsReached:
    - pdns::max
    - std::out_of_range
    - std::to_string
    - static_cast<T>
    - pdns::min
    linkageType: ''
    returnType: auto
    signature: auto checked_conv(F from) -> T
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/misc.hh:759,1
    - Dst: pdns::checked_conv<T>
      Src: /src/pdns/pdns/recursordist/misc.hh:768,1
    - Dst: std::stoull
      Src: /src/pdns/pdns/recursordist/misc.hh:768,1
    - Dst: pdns::checked_conv<T>
      Src: /src/pdns/pdns/recursordist/misc.hh:771,1
    - Dst: std::stoll
      Src: /src/pdns/pdns/recursordist/misc.hh:771,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - ' str'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 773
      start: 755
    functionDepth: 0
    functionLinenumber: 755
    functionLinenumberEnd: 773
    functionName: pdns::checked_stoi
    functionSourceFile: /src/pdns/pdns/recursordist/misc.hh
    functionUses: 8
    functionsReached:
    - empty
    - std::stoll
    - std::stoull
    - pdns::checked_conv<T>
    linkageType: ''
    returnType: auto
    signature: auto checked_stoi(const std::string& str, size_t* idx = nullptr, int
      base = 10) -> T
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pdns::checked_stoi
      Src: /src/pdns/pdns/recursordist/misc.hh:797,1
    - Dst: std::out_of_range
      Src: /src/pdns/pdns/recursordist/misc.hh:799,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - ' str'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 802
      start: 795
    functionDepth: 0
    functionLinenumber: 795
    functionLinenumberEnd: 802
    functionName: pdns::checked_stoi_nonzero
    functionSourceFile: /src/pdns/pdns/recursordist/misc.hh
    functionUses: 0
    functionsReached:
    - std::out_of_range
    - pdns::checked_stoi
    linkageType: ''
    returnType: auto
    signature: auto checked_stoi_nonzero(const std::string& str, size_t* idx = nullptr,
      int base = 10) -> T
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::checked_stoi
      Src: /src/pdns/pdns/recursordist/misc.hh:827,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' out'
    - ' str'
    argTypes:
    - T
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 828
      start: 825
    functionDepth: 0
    functionLinenumber: 825
    functionLinenumberEnd: 828
    functionName: pdns::checked_stoi_into
    functionSourceFile: /src/pdns/pdns/recursordist/misc.hh
    functionUses: 29
    functionsReached:
    - pdns::checked_stoi
    linkageType: ''
    returnType: auto
    signature: auto checked_stoi_into(T& out, const std::string& str, size_t* idx
      = nullptr, int base = 10)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pdns::min
      Src: /src/pdns/pdns/recursordist/misc.hh:709,1
    - Dst: pdns::min
      Src: /src/pdns/pdns/recursordist/misc.hh:710,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/misc.hh:712,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/misc.hh:712,1
    - Dst: std::out_of_range
      Src: /src/pdns/pdns/recursordist/misc.hh:713,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/recursordist/misc.hh:717,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/recursordist/misc.hh:718,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/misc.hh:720,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/misc.hh:720,1
    - Dst: std::out_of_range
      Src: /src/pdns/pdns/recursordist/misc.hh:721,1
    - Dst: static_cast<T>
      Src: /src/pdns/pdns/recursordist/misc.hh:725,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 12
    argCount: 1
    argNames:
    - from
    argTypes:
    - F
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 726
      start: 702
    functionDepth: 0
    functionLinenumber: 702
    functionLinenumberEnd: 726
    functionName: pdns::checked_conv
    functionSourceFile: /src/pdns/pdns/recursordist/misc.hh
    functionUses: 0
    functionsReached:
    - pdns::max
    - std::out_of_range
    - std::to_string
    - static_cast<T>
    - pdns::min
    linkageType: ''
    returnType: auto
    signature: auto checked_conv(F from) -> T
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/misc.hh:759,1
    - Dst: pdns::checked_conv<T>
      Src: /src/pdns/pdns/recursordist/misc.hh:768,1
    - Dst: std::stoull
      Src: /src/pdns/pdns/recursordist/misc.hh:768,1
    - Dst: pdns::checked_conv<T>
      Src: /src/pdns/pdns/recursordist/misc.hh:771,1
    - Dst: std::stoll
      Src: /src/pdns/pdns/recursordist/misc.hh:771,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - ' str'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 773
      start: 755
    functionDepth: 0
    functionLinenumber: 755
    functionLinenumberEnd: 773
    functionName: pdns::checked_stoi
    functionSourceFile: /src/pdns/pdns/recursordist/misc.hh
    functionUses: 10
    functionsReached:
    - empty
    - std::stoll
    - std::stoull
    - pdns::checked_conv<T>
    linkageType: ''
    returnType: auto
    signature: auto checked_stoi(const std::string& str, size_t* idx = nullptr, int
      base = 10) -> T
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pdns::checked_stoi
      Src: /src/pdns/pdns/recursordist/misc.hh:797,1
    - Dst: std::out_of_range
      Src: /src/pdns/pdns/recursordist/misc.hh:799,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - ' str'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 802
      start: 795
    functionDepth: 0
    functionLinenumber: 795
    functionLinenumberEnd: 802
    functionName: pdns::checked_stoi_nonzero
    functionSourceFile: /src/pdns/pdns/recursordist/misc.hh
    functionUses: 0
    functionsReached:
    - std::out_of_range
    - pdns::checked_stoi
    linkageType: ''
    returnType: auto
    signature: auto checked_stoi_nonzero(const std::string& str, size_t* idx = nullptr,
      int base = 10) -> T
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::checked_stoi
      Src: /src/pdns/pdns/recursordist/misc.hh:827,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' out'
    - ' str'
    argTypes:
    - T
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 828
      start: 825
    functionDepth: 0
    functionLinenumber: 825
    functionLinenumberEnd: 828
    functionName: pdns::checked_stoi_into
    functionSourceFile: /src/pdns/pdns/recursordist/misc.hh
    functionUses: 29
    functionsReached:
    - pdns::checked_stoi
    linkageType: ''
    returnType: auto
    signature: auto checked_stoi_into(T& out, const std::string& str, size_t* idx
      = nullptr, int base = 10)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 856
      start: 856
    functionDepth: 0
    functionLinenumber: 856
    functionLinenumberEnd: 856
    functionName: FDWrapper
    functionSourceFile: /src/pdns/pdns/recursordist/misc.hh
    functionUses: 15
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void FDWrapper()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - desc
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 857
      start: 857
    functionDepth: 0
    functionLinenumber: 857
    functionLinenumberEnd: 857
    functionName: FDWrapper
    functionSourceFile: /src/pdns/pdns/recursordist/misc.hh
    functionUses: 15
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void FDWrapper(int desc)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 858
      start: 858
    functionDepth: 0
    functionLinenumber: 858
    functionLinenumberEnd: 858
    functionName: FDWrapper
    functionSourceFile: /src/pdns/pdns/recursordist/misc.hh
    functionUses: 15
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void FDWrapper(const FDWrapper&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - FDWrapper
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 859
      start: 859
    functionDepth: 0
    functionLinenumber: 859
    functionLinenumberEnd: 859
    functionName: '& operator=(const FDWrapper& rhs)'
    functionSourceFile: /src/pdns/pdns/recursordist/misc.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: FDWrapper
    signature: FDWrapper & operator=(const FDWrapper& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: reset
      Src: /src/pdns/pdns/recursordist/misc.hh:864,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 865
      start: 862
    functionDepth: 0
    functionLinenumber: 862
    functionLinenumberEnd: 865
    functionName: ~FDWrapper()
    functionSourceFile: /src/pdns/pdns/recursordist/misc.hh
    functionUses: 0
    functionsReached:
    - reset
    linkageType: ''
    returnType: void
    signature: void ~FDWrapper()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - FDWrapper
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 870
      start: 867
    functionDepth: 0
    functionLinenumber: 867
    functionLinenumberEnd: 870
    functionName: FDWrapper
    functionSourceFile: /src/pdns/pdns/recursordist/misc.hh
    functionUses: 15
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void FDWrapper(FDWrapper&& rhs) noexcept
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: close
      Src: /src/pdns/pdns/recursordist/misc.hh:875,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - FDWrapper
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 880
      start: 872
    functionDepth: 0
    functionLinenumber: 872
    functionLinenumberEnd: 880
    functionName: '& operator=(FDWrapper&& rhs) noexcept'
    functionSourceFile: /src/pdns/pdns/recursordist/misc.hh
    functionUses: 0
    functionsReached:
    - close
    linkageType: ''
    returnType: FDWrapper
    signature: FDWrapper & operator=(FDWrapper&& rhs) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 885
      start: 882
    functionDepth: 0
    functionLinenumber: 882
    functionLinenumberEnd: 885
    functionName: getHandle
    functionSourceFile: /src/pdns/pdns/recursordist/misc.hh
    functionUses: 162
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int getHandle() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 890
      start: 887
    functionDepth: 0
    functionLinenumber: 887
    functionLinenumberEnd: 890
    functionName: operator int() const
    functionSourceFile: /src/pdns/pdns/recursordist/misc.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void operator int() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: close
      Src: /src/pdns/pdns/recursordist/misc.hh:896,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 900
      start: 892
    functionDepth: 0
    functionLinenumber: 892
    functionLinenumberEnd: 900
    functionName: reset
    functionSourceFile: /src/pdns/pdns/recursordist/misc.hh
    functionUses: 146
    functionsReached:
    - close
    linkageType: ''
    returnType: int
    signature: int reset()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 907
      start: 902
    functionDepth: 0
    functionLinenumber: 902
    functionLinenumberEnd: 907
    functionName: release
    functionSourceFile: /src/pdns/pdns/recursordist/misc.hh
    functionUses: 86
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int release()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fclose
      Src: /src/pdns/pdns/recursordist/misc.hh:927,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - filePtr
    argTypes:
    - FILE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 928
      start: 926
    functionDepth: 0
    functionLinenumber: 926
    functionLinenumberEnd: 928
    functionName: operator()(FILE* filePtr) const noexcept
    functionSourceFile: /src/pdns/pdns/recursordist/misc.hh
    functionUses: 0
    functionsReached:
    - fclose
    linkageType: ''
    returnType: void
    signature: void operator()(FILE* filePtr) const noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fclose
      Src: /src/pdns/pdns/recursordist/misc.hh:927,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - filePtr
    argTypes:
    - FILE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 928
      start: 926
    functionDepth: 0
    functionLinenumber: 926
    functionLinenumberEnd: 928
    functionName: operator()(FILE* filePtr) const noexcept
    functionSourceFile: /src/pdns/pdns/recursordist/misc.hh
    functionUses: 0
    functionsReached:
    - fclose
    linkageType: ''
    returnType: void
    signature: void operator()(FILE* filePtr) const noexcept
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: add_bytes
      Src: /src/pdns/pdns/recursordist/protozero.cc:31,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/recursordist/protozero.cc:31,1
    - Dst: add_bytes
      Src: /src/pdns/pdns/recursordist/protozero.cc:34,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/recursordist/protozero.cc:34,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - type
    - ' address'
    argTypes:
    - protozero::pbf_tag_type
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 36
      start: 28
    functionDepth: 0
    functionLinenumber: 28
    functionLinenumberEnd: 36
    functionName: pdns::ProtoZero::Message::encodeComboAddress(const protozero::pbf_tag_type
      type, const ComboAddress& address)
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.cc
    functionUses: 0
    functionsReached:
    - add_bytes
    - reinterpret_cast<const char*>
    linkageType: ''
    returnType: void
    signature: void pdns::ProtoZero::Message::encodeComboAddress(const protozero::pbf_tag_type
      type, const ComboAddress& address)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/protozero.cc:40,1
    - Dst: getNetwork
      Src: /src/pdns/pdns/recursordist/protozero.cc:41,1
    - Dst: ComboAddress::truncate
      Src: /src/pdns/pdns/recursordist/protozero.cc:42,1
    - Dst: add_bytes
      Src: /src/pdns/pdns/recursordist/protozero.cc:44,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/recursordist/protozero.cc:44,1
    - Dst: add_bytes
      Src: /src/pdns/pdns/recursordist/protozero.cc:47,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/recursordist/protozero.cc:47,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 3
    argNames:
    - type
    - ' subnet'
    - mask
    argTypes:
    - protozero::pbf_tag_type
    - Netmask
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 38
    functionDepth: 0
    functionLinenumber: 38
    functionLinenumberEnd: 50
    functionName: pdns::ProtoZero::Message::encodeNetmask(const protozero::pbf_tag_type
      type, const Netmask& subnet, uint8_t mask)
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.cc
    functionUses: 0
    functionsReached:
    - add_bytes
    - reinterpret_cast<const char*>
    - getNetwork
    - ComboAddress::truncate
    - empty
    linkageType: ''
    returnType: void
    signature: void pdns::ProtoZero::Message::encodeNetmask(const protozero::pbf_tag_type
      type, const Netmask& subnet, uint8_t mask)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: toString
      Src: /src/pdns/pdns/recursordist/protozero.cc:57,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - ' pbf'
    - ' buffer'
    - type
    - ' name'
    argTypes:
    - protozero::pbf_writer
    - std::string
    - protozero::pbf_tag_type
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 52
    functionDepth: 0
    functionLinenumber: 52
    functionLinenumberEnd: 59
    functionName: pdns::ProtoZero::Message::encodeDNSName(protozero::pbf_writer& pbf,
      std::string& buffer, const protozero::pbf_tag_type type, const DNSName& name)
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.cc
    functionUses: 0
    functionsReached:
    - toString
    linkageType: ''
    returnType: void
    signature: void pdns::ProtoZero::Message::encodeDNSName(protozero::pbf_writer&
      pbf, std::string& buffer, const protozero::pbf_tag_type type, const DNSName&
      name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: setMessageIdentity
      Src: /src/pdns/pdns/recursordist/protozero.cc:63,1
    - Dst: setSocketFamily
      Src: /src/pdns/pdns/recursordist/protozero.cc:64,1
    - Dst: setSocketProtocol
      Src: /src/pdns/pdns/recursordist/protozero.cc:65,1
    - Dst: setFrom
      Src: /src/pdns/pdns/recursordist/protozero.cc:66,1
    - Dst: setTo
      Src: /src/pdns/pdns/recursordist/protozero.cc:67,1
    - Dst: setInBytes
      Src: /src/pdns/pdns/recursordist/protozero.cc:68,1
    - Dst: setTime
      Src: /src/pdns/pdns/recursordist/protozero.cc:69,1
    - Dst: setId
      Src: /src/pdns/pdns/recursordist/protozero.cc:70,1
    - Dst: setQuestion
      Src: /src/pdns/pdns/recursordist/protozero.cc:71,1
    - Dst: setFromPort
      Src: /src/pdns/pdns/recursordist/protozero.cc:72,1
    - Dst: getPort
      Src: /src/pdns/pdns/recursordist/protozero.cc:72,1
    - Dst: setToPort
      Src: /src/pdns/pdns/recursordist/protozero.cc:73,1
    - Dst: getPort
      Src: /src/pdns/pdns/recursordist/protozero.cc:73,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 9
    argNames:
    - ' uniqueId'
    - ' requestor'
    - ' local'
    - ' qname'
    - qtype
    - qclass
    - qid
    - proto
    - len
    argTypes:
    - boost::uuids::uuid
    - ComboAddress
    - ComboAddress
    - DNSName
    - uint16_t
    - uint16_t
    - uint16_t
    - pdns::ProtoZero::Message::TransportProtocol
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 61
    functionDepth: 0
    functionLinenumber: 61
    functionLinenumberEnd: 74
    functionName: pdns::ProtoZero::Message::setRequest(const boost::uuids::uuid& uniqueId,
      const ComboAddress& requestor, const ComboAddress& local, const DNSName& qname,
      uint16_t qtype, uint16_t qclass, uint16_t qid, pdns::ProtoZero::Message::TransportProtocol
      proto, size_t len)
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.cc
    functionUses: 0
    functionsReached:
    - setQuestion
    - setTo
    - setFrom
    - setId
    - setInBytes
    - setMessageIdentity
    - setTime
    - setFromPort
    - setSocketProtocol
    - setToPort
    - getPort
    - setSocketFamily
    linkageType: ''
    returnType: void
    signature: void pdns::ProtoZero::Message::setRequest(const boost::uuids::uuid&
      uniqueId, const ComboAddress& requestor, const ComboAddress& local, const DNSName&
      qname, uint16_t qtype, uint16_t qclass, uint16_t qid, pdns::ProtoZero::Message::TransportProtocol
      proto, size_t len)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::setType
      Src: /src/pdns/pdns/recursordist/protozero.cc:78,1
    - Dst: pdns::ProtoZero::Message::setQuestion
      Src: /src/pdns/pdns/recursordist/protozero.cc:79,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - ' qname'
    - qtype
    - qclass
    argTypes:
    - DNSName
    - uint16_t
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 76
    functionDepth: 0
    functionLinenumber: 76
    functionLinenumberEnd: 80
    functionName: pdns::ProtoZero::Message::setResponse(const DNSName& qname, uint16_t
      qtype, uint16_t qclass)
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.cc
    functionUses: 0
    functionsReached:
    - pdns::ProtoZero::Message::setQuestion
    - pdns::ProtoZero::Message::setType
    linkageType: ''
    returnType: void
    signature: void pdns::ProtoZero::Message::setResponse(const DNSName& qname, uint16_t
      qtype, uint16_t qclass)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: ntohs
      Src: /src/pdns/pdns/recursordist/protozero.cc:90,1
    - Dst: ntohs
      Src: /src/pdns/pdns/recursordist/protozero.cc:94,1
    - Dst: DNSName::DNSName
      Src: /src/pdns/pdns/recursordist/protozero.cc:101,1
    - Dst: ntohs
      Src: /src/pdns/pdns/recursordist/protozero.cc:102,1
    - Dst: ntohs
      Src: /src/pdns/pdns/recursordist/protozero.cc:103,1
    - Dst: PacketReader::getName
      Src: /src/pdns/pdns/recursordist/protozero.cc:109,1
    - Dst: PacketReader::get16BitInt
      Src: /src/pdns/pdns/recursordist/protozero.cc:110,1
    - Dst: PacketReader::get16BitInt
      Src: /src/pdns/pdns/recursordist/protozero.cc:111,1
    - Dst: PacketReader::getName
      Src: /src/pdns/pdns/recursordist/protozero.cc:118,1
    - Dst: PacketReader::get16BitInt
      Src: /src/pdns/pdns/recursordist/protozero.cc:119,1
    - Dst: PacketReader::get16BitInt
      Src: /src/pdns/pdns/recursordist/protozero.cc:120,1
    - Dst: PacketReader::getName
      Src: /src/pdns/pdns/recursordist/protozero.cc:128,1
    - Dst: PacketReader::getDnsrecordheader
      Src: /src/pdns/pdns/recursordist/protozero.cc:129,1
    - Dst: PacketReader::xfrBlob
      Src: /src/pdns/pdns/recursordist/protozero.cc:132,1
    - Dst: addRR
      Src: /src/pdns/pdns/recursordist/protozero.cc:134,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/recursordist/protozero.cc:137,1
    - Dst: encodeDNSName
      Src: /src/pdns/pdns/recursordist/protozero.cc:139,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/recursordist/protozero.cc:139,1
    - Dst: protozero::pbf_writer::add_uint32
      Src: /src/pdns/pdns/recursordist/protozero.cc:140,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/recursordist/protozero.cc:140,1
    - Dst: protozero::pbf_writer::add_uint32
      Src: /src/pdns/pdns/recursordist/protozero.cc:141,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/recursordist/protozero.cc:141,1
    - Dst: protozero::pbf_writer::add_uint32
      Src: /src/pdns/pdns/recursordist/protozero.cc:142,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/recursordist/protozero.cc:142,1
    - Dst: DNSName::DNSName
      Src: /src/pdns/pdns/recursordist/protozero.cc:143,1
    - Dst: PacketReader::xfrName
      Src: /src/pdns/pdns/recursordist/protozero.cc:144,1
    - Dst: encodeDNSName
      Src: /src/pdns/pdns/recursordist/protozero.cc:145,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/recursordist/protozero.cc:145,1
    - Dst: PacketReader::xfrBlob
      Src: /src/pdns/pdns/recursordist/protozero.cc:148,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 42
    argCount: 3
    argNames:
    - packet
    - len
    - includeCNAME
    argTypes:
    - char*
    - size_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 151
      start: 82
    functionDepth: 0
    functionLinenumber: 82
    functionLinenumberEnd: 151
    functionName: pdns::ProtoZero::Message::addRRsFromPacket(const char* packet, const
      size_t len, bool includeCNAME)
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.cc
    functionUses: 0
    functionsReached:
    - static_cast<protozero::pbf_tag_type>
    - PacketReader::getName
    - PacketReader::xfrBlob
    - ntohs
    - PacketReader::xfrName
    - encodeDNSName
    - PacketReader::get16BitInt
    - addRR
    - PacketReader::getDnsrecordheader
    - DNSName::DNSName
    - protozero::pbf_writer::add_uint32
    linkageType: ''
    returnType: void
    signature: void pdns::ProtoZero::Message::addRRsFromPacket(const char* packet,
      const size_t len, bool includeCNAME)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/recursordist/protozero.cc:155,1
    - Dst: encodeDNSName
      Src: /src/pdns/pdns/recursordist/protozero.cc:156,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/recursordist/protozero.cc:156,1
    - Dst: protozero::pbf_writer::add_uint32
      Src: /src/pdns/pdns/recursordist/protozero.cc:157,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/recursordist/protozero.cc:157,1
    - Dst: protozero::pbf_writer::add_uint32
      Src: /src/pdns/pdns/recursordist/protozero.cc:158,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/recursordist/protozero.cc:158,1
    - Dst: protozero::pbf_writer::add_uint32
      Src: /src/pdns/pdns/recursordist/protozero.cc:159,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/recursordist/protozero.cc:159,1
    - Dst: protozero::pbf_writer::add_string
      Src: /src/pdns/pdns/recursordist/protozero.cc:160,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/recursordist/protozero.cc:160,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 5
    argNames:
    - ' name'
    - uType
    - uClass
    - uTTL
    - ' blob'
    argTypes:
    - DNSName
    - uint16_t
    - uint16_t
    - uint32_t
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 161
      start: 153
    functionDepth: 0
    functionLinenumber: 153
    functionLinenumberEnd: 161
    functionName: pdns::ProtoZero::Message::addRR(const DNSName& name, uint16_t uType,
      uint16_t uClass, uint32_t uTTL, const std::string& blob)
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.cc
    functionUses: 0
    functionsReached:
    - static_cast<protozero::pbf_tag_type>
    - protozero::pbf_writer::add_uint32
    - encodeDNSName
    - protozero::pbf_writer::add_string
    linkageType: ''
    returnType: void
    signature: void pdns::ProtoZero::Message::addRR(const DNSName& name, uint16_t
      uType, uint16_t uClass, uint32_t uTTL, const std::string& blob)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/recursordist/rec-tcounters.cc:33,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/rec-tcounters.cc:34,1
    - Dst: uint64Count::at
      Src: /src/pdns/pdns/recursordist/rec-tcounters.cc:34,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/rec-tcounters.cc:37,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/rec-tcounters.cc:38,1
    - Dst: doubleWAvg::at
      Src: /src/pdns/pdns/recursordist/rec-tcounters.cc:39,1
    - Dst: static_cast<double>
      Src: /src/pdns/pdns/recursordist/rec-tcounters.cc:41,1
    - Dst: static_cast<double>
      Src: /src/pdns/pdns/recursordist/rec-tcounters.cc:41,1
    - Dst: static_cast<double>
      Src: /src/pdns/pdns/recursordist/rec-tcounters.cc:42,1
    - Dst: rcodeCounters::size
      Src: /src/pdns/pdns/recursordist/rec-tcounters.cc:48,1
    - Dst: rcodeCounters::at
      Src: /src/pdns/pdns/recursordist/rec-tcounters.cc:49,1
    - Dst: auth::rcodeCounters::at
      Src: /src/pdns/pdns/recursordist/rec-tcounters.cc:49,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/rec-tcounters.cc:53,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/rec-tcounters.cc:54,1
    - Dst: histograms::at
      Src: /src/pdns/pdns/recursordist/rec-tcounters.cc:54,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/rec-tcounters.cc:61,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/rec-tcounters.cc:62,1
    - Dst: dnssecCounters::at
      Src: /src/pdns/pdns/recursordist/rec-tcounters.cc:63,1
    - Dst: counts::size
      Src: /src/pdns/pdns/recursordist/rec-tcounters.cc:64,1
    - Dst: counts::at
      Src: /src/pdns/pdns/recursordist/rec-tcounters.cc:65,1
    - Dst: counts::at
      Src: /src/pdns/pdns/recursordist/rec-tcounters.cc:65,1
    - Dst: counts::size
      Src: /src/pdns/pdns/recursordist/rec-tcounters.cc:70,1
    - Dst: counts::at
      Src: /src/pdns/pdns/recursordist/rec-tcounters.cc:71,1
    - Dst: policyCounters::counts::at
      Src: /src/pdns/pdns/recursordist/rec-tcounters.cc:71,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 26
    argCount: 1
    argNames:
    - ' data'
    argTypes:
    - Counters
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 30
    functionDepth: 0
    functionLinenumber: 30
    functionLinenumberEnd: 78
    functionName: '& Counters::merge(const Counters& data)'
    functionSourceFile: /src/pdns/pdns/recursordist/rec-tcounters.cc
    functionUses: 0
    functionsReached:
    - static_cast<double>
    - rcodeCounters::at
    - dnssecCounters::at
    - policyCounters::counts::at
    - size
    - rcodeCounters::size
    - uint64Count::at
    - auth::rcodeCounters::at
    - counts::at
    - histograms::at
    - counts::size
    - at
    - doubleWAvg::at
    linkageType: ''
    returnType: Counters
    signature: Counters & Counters::merge(const Counters& data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getName
      Src: /src/pdns/pdns/recursordist/rec-tcounters.cc:97,1
    - Dst: std::ostringstream::str
      Src: /src/pdns/pdns/recursordist/rec-tcounters.cc:107,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 80
    functionDepth: 0
    functionLinenumber: 80
    functionLinenumberEnd: 108
    functionName: rec::Counters::toString
    functionSourceFile: /src/pdns/pdns/recursordist/rec-tcounters.cc
    functionUses: 0
    functionsReached:
    - std::ostringstream::str
    - getName
    linkageType: ''
    returnType: std::string
    signature: std::string Counters::toString() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/recursordist/rec-tcounters.cc:33,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/rec-tcounters.cc:34,1
    - Dst: uint64Count::at
      Src: /src/pdns/pdns/recursordist/rec-tcounters.cc:34,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/rec-tcounters.cc:37,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/rec-tcounters.cc:38,1
    - Dst: doubleWAvg::at
      Src: /src/pdns/pdns/recursordist/rec-tcounters.cc:39,1
    - Dst: static_cast<double>
      Src: /src/pdns/pdns/recursordist/rec-tcounters.cc:41,1
    - Dst: static_cast<double>
      Src: /src/pdns/pdns/recursordist/rec-tcounters.cc:41,1
    - Dst: static_cast<double>
      Src: /src/pdns/pdns/recursordist/rec-tcounters.cc:42,1
    - Dst: rcodeCounters::size
      Src: /src/pdns/pdns/recursordist/rec-tcounters.cc:48,1
    - Dst: rcodeCounters::at
      Src: /src/pdns/pdns/recursordist/rec-tcounters.cc:49,1
    - Dst: auth::rcodeCounters::at
      Src: /src/pdns/pdns/recursordist/rec-tcounters.cc:49,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/rec-tcounters.cc:53,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/rec-tcounters.cc:54,1
    - Dst: histograms::at
      Src: /src/pdns/pdns/recursordist/rec-tcounters.cc:54,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/rec-tcounters.cc:61,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/rec-tcounters.cc:62,1
    - Dst: dnssecCounters::at
      Src: /src/pdns/pdns/recursordist/rec-tcounters.cc:63,1
    - Dst: counts::size
      Src: /src/pdns/pdns/recursordist/rec-tcounters.cc:64,1
    - Dst: counts::at
      Src: /src/pdns/pdns/recursordist/rec-tcounters.cc:65,1
    - Dst: counts::at
      Src: /src/pdns/pdns/recursordist/rec-tcounters.cc:65,1
    - Dst: counts::size
      Src: /src/pdns/pdns/recursordist/rec-tcounters.cc:70,1
    - Dst: counts::at
      Src: /src/pdns/pdns/recursordist/rec-tcounters.cc:71,1
    - Dst: policyCounters::counts::at
      Src: /src/pdns/pdns/recursordist/rec-tcounters.cc:71,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 26
    argCount: 1
    argNames:
    - ' data'
    argTypes:
    - Counters
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 30
    functionDepth: 0
    functionLinenumber: 30
    functionLinenumberEnd: 78
    functionName: '& Counters::merge(const Counters& data)'
    functionSourceFile: /src/pdns/pdns/recursordist/rec-tcounters.cc
    functionUses: 0
    functionsReached:
    - static_cast<double>
    - rcodeCounters::at
    - dnssecCounters::at
    - policyCounters::counts::at
    - size
    - rcodeCounters::size
    - uint64Count::at
    - auth::rcodeCounters::at
    - counts::at
    - histograms::at
    - counts::size
    - at
    - doubleWAvg::at
    linkageType: ''
    returnType: Counters
    signature: Counters & Counters::merge(const Counters& data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getName
      Src: /src/pdns/pdns/recursordist/rec-tcounters.cc:97,1
    - Dst: std::ostringstream::str
      Src: /src/pdns/pdns/recursordist/rec-tcounters.cc:107,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 80
    functionDepth: 0
    functionLinenumber: 80
    functionLinenumberEnd: 108
    functionName: rec::Counters::toString
    functionSourceFile: /src/pdns/pdns/recursordist/rec-tcounters.cc
    functionUses: 0
    functionsReached:
    - std::ostringstream::str
    - getName
    linkageType: ''
    returnType: std::string
    signature: std::string Counters::toString() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 135
      start: 130
    functionDepth: 0
    functionLinenumber: 130
    functionLinenumberEnd: 135
    functionName: atomicThread
    functionSourceFile: /src/pdns/pdns/recursordist/rec-tcounters.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void atomicThread()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: at
      Src: /src/pdns/pdns/recursordist/rec-tcounters.cc:140,1
    - Dst: updateSnap
      Src: /src/pdns/pdns/recursordist/rec-tcounters.cc:142,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 145
      start: 137
    functionDepth: 0
    functionLinenumber: 137
    functionLinenumberEnd: 145
    functionName: tcounterThread
    functionSourceFile: /src/pdns/pdns/recursordist/rec-tcounters.cc
    functionUses: 0
    functionsReached:
    - updateSnap
    - at
    linkageType: ''
    returnType: void
    signature: void tcounterThread()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::atoi
      Src: /src/pdns/pdns/recursordist/rec-tcounters.cc:149,1
    - Dst: std::atoi
      Src: /src/pdns/pdns/recursordist/rec-tcounters.cc:150,1
    - Dst: std::vector::resize
      Src: /src/pdns/pdns/recursordist/rec-tcounters.cc:154,1
    - Dst: gettimeofday
      Src: /src/pdns/pdns/recursordist/rec-tcounters.cc:157,1
    - Dst: std::thread
      Src: /src/pdns/pdns/recursordist/rec-tcounters.cc:159,1
    - Dst: join
      Src: /src/pdns/pdns/recursordist/rec-tcounters.cc:162,1
    - Dst: gettimeofday
      Src: /src/pdns/pdns/recursordist/rec-tcounters.cc:165,1
    - Dst: timersub
      Src: /src/pdns/pdns/recursordist/rec-tcounters.cc:167,1
    - Dst: gettimeofday
      Src: /src/pdns/pdns/recursordist/rec-tcounters.cc:172,1
    - Dst: std::thread
      Src: /src/pdns/pdns/recursordist/rec-tcounters.cc:174,1
    - Dst: join
      Src: /src/pdns/pdns/recursordist/rec-tcounters.cc:177,1
    - Dst: gettimeofday
      Src: /src/pdns/pdns/recursordist/rec-tcounters.cc:179,1
    - Dst: timersub
      Src: /src/pdns/pdns/recursordist/rec-tcounters.cc:180,1
    - Dst: sum
      Src: /src/pdns/pdns/recursordist/rec-tcounters.cc:182,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 26
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 183
      start: 147
    functionDepth: 1
    functionLinenumber: 147
    functionLinenumberEnd: 183
    functionName: main
    functionSourceFile: /src/pdns/pdns/recursordist/rec-tcounters.cc
    functionUses: 49
    functionsReached:
    - std::vector::resize
    - timersub
    - std::thread
    - join
    - gettimeofday
    - sum
    - std::atoi
    linkageType: ''
    returnType: int
    signature: int main(int argc, char* argv[])
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 44
    functionDepth: 0
    functionLinenumber: 44
    functionLinenumberEnd: 47
    functionName: ZoneParserTNG::disableGenerate
    functionSourceFile: /src/pdns/pdns/recursordist/zoneparser-tng.hh
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void disableGenerate()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - max
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 48
    functionDepth: 0
    functionLinenumber: 48
    functionLinenumberEnd: 51
    functionName: ZoneParserTNG::setMaxGenerateSteps
    functionSourceFile: /src/pdns/pdns/recursordist/zoneparser-tng.hh
    functionUses: 11
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setMaxGenerateSteps(size_t max)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - max
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 52
    functionDepth: 0
    functionLinenumber: 52
    functionLinenumberEnd: 55
    functionName: ZoneParserTNG::setMaxIncludes
    functionSourceFile: /src/pdns/pdns/recursordist/zoneparser-tng.hh
    functionUses: 8
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setMaxIncludes(size_t max)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ttl
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 56
    functionDepth: 0
    functionLinenumber: 56
    functionLinenumberEnd: 60
    functionName: ZoneParserTNG::setDefaultTTL
    functionSourceFile: /src/pdns/pdns/recursordist/zoneparser-tng.hh
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setDefaultTTL(int ttl)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 61
    functionDepth: 0
    functionLinenumber: 61
    functionLinenumberEnd: 61
    functionName: ZoneParserTNG::getFileset
    functionSourceFile: /src/pdns/pdns/recursordist/zoneparser-tng.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::vector<std::pair<std::string, time_t>>
    signature: std::vector<std::pair<std::string, time_t>> getFileset() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.hh:70,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - fp
    - filename
    argTypes:
    - FILE*
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 69
    functionDepth: 0
    functionLinenumber: 69
    functionLinenumberEnd: 70
    functionName: ZoneParserTNG::filestate
    functionSourceFile: /src/pdns/pdns/recursordist/zoneparser-tng.hh
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void filestate(FILE* fp, string filename)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/resolve-context.hh:35,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 3
    argNames:
    - ' uuid'
    - name
    - ' auth'
    argTypes:
    - boost::optional<const boost::uuids::uuid&>
    - DNSName
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 36
      start: 34
    functionDepth: 0
    functionLinenumber: 34
    functionLinenumberEnd: 36
    functionName: ResolveContext
    functionSourceFile: /src/pdns/pdns/recursordist/resolve-context.hh
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void ResolveContext(const boost::optional<const boost::uuids::uuid&>&
      uuid, DNSName name, const DNSName& auth)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 37
    functionDepth: 0
    functionLinenumber: 37
    functionLinenumberEnd: 37
    functionName: ~ResolveContext()
    functionSourceFile: /src/pdns/pdns/recursordist/resolve-context.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~ResolveContext()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 39
      start: 39
    functionDepth: 0
    functionLinenumber: 39
    functionLinenumberEnd: 39
    functionName: ResolveContext
    functionSourceFile: /src/pdns/pdns/recursordist/resolve-context.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ResolveContext(const ResolveContext&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 40
    functionDepth: 0
    functionLinenumber: 40
    functionLinenumberEnd: 40
    functionName: '& operator=(const ResolveContext&)'
    functionSourceFile: /src/pdns/pdns/recursordist/resolve-context.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: ResolveContext
    signature: ResolveContext & operator=(const ResolveContext&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 41
    functionDepth: 0
    functionLinenumber: 41
    functionLinenumberEnd: 41
    functionName: ResolveContext
    functionSourceFile: /src/pdns/pdns/recursordist/resolve-context.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ResolveContext(ResolveContext&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 42
    functionDepth: 0
    functionLinenumber: 42
    functionLinenumberEnd: 42
    functionName: '& operator=(ResolveContext&&)'
    functionSourceFile: /src/pdns/pdns/recursordist/resolve-context.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: ResolveContext
    signature: ResolveContext & operator=(ResolveContext&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ArgvMap::begin
      Src: /src/pdns/pdns/recursordist/arguments.cc:40,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 38
    functionDepth: 0
    functionLinenumber: 38
    functionLinenumberEnd: 41
    functionName: ArgvMap::begin
    functionSourceFile: /src/pdns/pdns/recursordist/arguments.cc
    functionUses: 2
    functionsReached:
    - ArgvMap::begin
    linkageType: ''
    returnType: ArgvMap::param_t::const_iterator
    signature: ArgvMap::param_t::const_iterator ArgvMap::begin()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ArgvMap::end
      Src: /src/pdns/pdns/recursordist/arguments.cc:45,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 46
    functionName: ArgvMap::end
    functionSourceFile: /src/pdns/pdns/recursordist/arguments.cc
    functionUses: 9
    functionsReached:
    - ArgvMap::end
    linkageType: ''
    returnType: ArgvMap::param_t::const_iterator
    signature: ArgvMap::param_t::const_iterator ArgvMap::end()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' var'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 48
    functionDepth: 0
    functionLinenumber: 48
    functionLinenumberEnd: 51
    functionName: '& ArgvMap::set(const string& var)'
    functionSourceFile: /src/pdns/pdns/recursordist/arguments.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: string
    signature: string & ArgvMap::set(const string& var)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: count
      Src: /src/pdns/pdns/recursordist/arguments.cc:55,1
    - Dst: insert
      Src: /src/pdns/pdns/recursordist/arguments.cc:56,1
    - Dst: pair<string, string>
      Src: /src/pdns/pdns/recursordist/arguments.cc:56,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - ' var'
    - ' value'
    argTypes:
    - string
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 53
    functionDepth: 2
    functionLinenumber: 53
    functionLinenumberEnd: 58
    functionName: ArgvMap::setDefault
    functionSourceFile: /src/pdns/pdns/recursordist/arguments.cc
    functionUses: 0
    functionsReached:
    - pair<string, string>
    - insert
    - count
    linkageType: ''
    returnType: void
    signature: void ArgvMap::setDefault(const string& var, const string& value)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: count
      Src: /src/pdns/pdns/recursordist/arguments.cc:63,1
    - Dst: insert
      Src: /src/pdns/pdns/recursordist/arguments.cc:64,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 60
    functionDepth: 2
    functionLinenumber: 60
    functionLinenumberEnd: 67
    functionName: ArgvMap::setDefaults
    functionSourceFile: /src/pdns/pdns/recursordist/arguments.cc
    functionUses: 0
    functionsReached:
    - insert
    - count
    linkageType: ''
    returnType: void
    signature: void ArgvMap::setDefaults()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - ' var'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 69
    functionDepth: 0
    functionLinenumber: 69
    functionLinenumberEnd: 72
    functionName: ArgvMap::mustDo
    functionSourceFile: /src/pdns/pdns/recursordist/arguments.cc
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool ArgvMap::mustDo(const string& var)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vector::reserve
      Src: /src/pdns/pdns/recursordist/arguments.cc:77,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/arguments.cc:77,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/recursordist/arguments.cc:79,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 74
    functionDepth: 0
    functionLinenumber: 74
    functionLinenumberEnd: 82
    functionName: ArgvMap::list
    functionSourceFile: /src/pdns/pdns/recursordist/arguments.cc
    functionUses: 0
    functionsReached:
    - vector::reserve
    - vector::push_back
    - size
    linkageType: ''
    returnType: vector<string>
    signature: vector<string> ArgvMap::list()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: set
      Src: /src/pdns/pdns/recursordist/arguments.cc:88,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - ' var'
    - ' help'
    argTypes:
    - string
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 84
    functionDepth: 0
    functionLinenumber: 84
    functionLinenumberEnd: 89
    functionName: '& ArgvMap::set(const string& var, const string& help)'
    functionSourceFile: /src/pdns/pdns/recursordist/arguments.cc
    functionUses: 0
    functionsReached:
    - set
    linkageType: ''
    returnType: string
    signature: string & ArgvMap::set(const string& var, const string& help)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: set
      Src: /src/pdns/pdns/recursordist/arguments.cc:95,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - ' var'
    - ' help'
    argTypes:
    - string
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 91
    functionDepth: 0
    functionLinenumber: 91
    functionLinenumberEnd: 96
    functionName: ArgvMap::setCmd
    functionSourceFile: /src/pdns/pdns/recursordist/arguments.cc
    functionUses: 0
    functionsReached:
    - set
    linkageType: ''
    returnType: void
    signature: void ArgvMap::setCmd(const string& var, const string& help)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: set
      Src: /src/pdns/pdns/recursordist/arguments.cc:102,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - ' var'
    - ' help'
    argTypes:
    - string
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 98
    functionDepth: 0
    functionLinenumber: 98
    functionLinenumberEnd: 103
    functionName: '& ArgvMap::setSwitch(const string& var, const string& help)'
    functionSourceFile: /src/pdns/pdns/recursordist/arguments.cc
    functionUses: 0
    functionsReached:
    - set
    linkageType: ''
    returnType: string
    signature: string & ArgvMap::setSwitch(const string& var, const string& help)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: find
      Src: /src/pdns/pdns/recursordist/arguments.cc:107,1
    - Dst: ArgvMap::end
      Src: /src/pdns/pdns/recursordist/arguments.cc:108,1
    - Dst: second::empty
      Src: /src/pdns/pdns/recursordist/arguments.cc:108,1
    - Dst: stringtok
      Src: /src/pdns/pdns/recursordist/arguments.cc:113,1
    - Dst: std::find
      Src: /src/pdns/pdns/recursordist/arguments.cc:114,1
    - Dst: vector::begin
      Src: /src/pdns/pdns/recursordist/arguments.cc:114,1
    - Dst: vector::end
      Src: /src/pdns/pdns/recursordist/arguments.cc:114,1
    - Dst: vector::end
      Src: /src/pdns/pdns/recursordist/arguments.cc:114,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - ' var'
    - ' val'
    argTypes:
    - string
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 115
      start: 105
    functionDepth: 0
    functionLinenumber: 105
    functionLinenumberEnd: 115
    functionName: ArgvMap::contains
    functionSourceFile: /src/pdns/pdns/recursordist/arguments.cc
    functionUses: 0
    functionsReached:
    - vector::begin
    - stringtok
    - ArgvMap::end
    - vector::end
    - std::find
    - second::empty
    - find
    linkageType: ''
    returnType: bool
    signature: bool ArgvMap::contains(const string& var, const string& val)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: string::empty
      Src: /src/pdns/pdns/recursordist/arguments.cc:126,1
    - Dst: first::find
      Src: /src/pdns/pdns/recursordist/arguments.cc:126,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 21
    argCount: 1
    argNames:
    - prefix
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 148
      start: 117
    functionDepth: 0
    functionLinenumber: 117
    functionLinenumberEnd: 148
    functionName: ArgvMap::helpstring
    functionSourceFile: /src/pdns/pdns/recursordist/arguments.cc
    functionUses: 0
    functionsReached:
    - first::find
    - string::empty
    linkageType: ''
    returnType: string
    signature: string ArgvMap::helpstring(string prefix)
  - BBCount: 6
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 25
    argCount: 6
    argNames:
    - running
    - full
    - ' var'
    - ' help'
    - ' theDefault'
    - ' current'
    argTypes:
    - bool
    - bool
    - string
    - string
    - string
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 183
      start: 150
    functionDepth: 0
    functionLinenumber: 150
    functionLinenumberEnd: 183
    functionName: ArgvMap::formatOne
    functionSourceFile: /src/pdns/pdns/recursordist/arguments.cc
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: string
    signature: string ArgvMap::formatOne(bool running, bool full, const string& var,
      const string& help, const string& theDefault, const string& current)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: nowTime
      Src: /src/pdns/pdns/recursordist/arguments.cc:191,1
    - Dst: ArgvMap::formatOne
      Src: /src/pdns/pdns/recursordist/arguments.cc:198,1
    - Dst: count
      Src: /src/pdns/pdns/recursordist/arguments.cc:208,1
    - Dst: ArgException
      Src: /src/pdns/pdns/recursordist/arguments.cc:209,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/arguments.cc:209,1
    - Dst: ArgvMap::formatOne
      Src: /src/pdns/pdns/recursordist/arguments.cc:212,1
    - Dst: ArgvMap::formatOne
      Src: /src/pdns/pdns/recursordist/arguments.cc:217,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 23
    argCount: 2
    argNames:
    - running
    - full
    argTypes:
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 222
      start: 186
    functionDepth: 0
    functionLinenumber: 186
    functionLinenumberEnd: 222
    functionName: ArgvMap::configstring
    functionSourceFile: /src/pdns/pdns/recursordist/arguments.cc
    functionUses: 0
    functionsReached:
    - nowTime
    - count
    - string
    - ArgvMap::formatOne
    - ArgException
    linkageType: ''
    returnType: string
    signature: string ArgvMap::configstring(bool running, bool full)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: parmIsset
      Src: /src/pdns/pdns/recursordist/arguments.cc:226,1
    - Dst: ArgException
      Src: /src/pdns/pdns/recursordist/arguments.cc:227,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/arguments.cc:227,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - ' arg'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 231
      start: 224
    functionDepth: 0
    functionLinenumber: 224
    functionLinenumberEnd: 231
    functionName: '& ArgvMap::operator[](const string& arg)'
    functionSourceFile: /src/pdns/pdns/recursordist/arguments.cc
    functionUses: 0
    functionsReached:
    - parmIsset
    - string
    - ArgException
    linkageType: ''
    returnType: string
    signature: string & ArgvMap::operator[](const string& arg)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ArgvMap::parmIsset
      Src: /src/pdns/pdns/recursordist/arguments.cc:235,1
    - Dst: ArgException
      Src: /src/pdns/pdns/recursordist/arguments.cc:236,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/arguments.cc:236,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/arguments.cc:239,1
    - Dst: static_cast<mode_t>
      Src: /src/pdns/pdns/recursordist/arguments.cc:242,1
    - Dst: strtol
      Src: /src/pdns/pdns/recursordist/arguments.cc:242,1
    - Dst: ArgException
      Src: /src/pdns/pdns/recursordist/arguments.cc:244,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/arguments.cc:244,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 8
    argCount: 1
    argNames:
    - ' arg'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 247
      start: 233
    functionDepth: 0
    functionLinenumber: 233
    functionLinenumberEnd: 247
    functionName: ArgvMap::asMode
    functionSourceFile: /src/pdns/pdns/recursordist/arguments.cc
    functionUses: 0
    functionsReached:
    - static_cast<mode_t>
    - ArgvMap::parmIsset
    - strtol
    - string
    - ArgException
    - c_str
    linkageType: ''
    returnType: mode_t
    signature: mode_t ArgvMap::asMode(const string& arg)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ArgvMap::parmIsset
      Src: /src/pdns/pdns/recursordist/arguments.cc:251,1
    - Dst: ArgException
      Src: /src/pdns/pdns/recursordist/arguments.cc:252,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/arguments.cc:252,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/arguments.cc:255,1
    - Dst: static_cast<gid_t>
      Src: /src/pdns/pdns/recursordist/arguments.cc:257,1
    - Dst: strtol
      Src: /src/pdns/pdns/recursordist/arguments.cc:257,1
    - Dst: getgrnam
      Src: /src/pdns/pdns/recursordist/arguments.cc:261,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/arguments.cc:261,1
    - Dst: ArgException
      Src: /src/pdns/pdns/recursordist/arguments.cc:263,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/arguments.cc:263,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 11
    argCount: 1
    argNames:
    - ' arg'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 268
      start: 249
    functionDepth: 0
    functionLinenumber: 249
    functionLinenumberEnd: 268
    functionName: ArgvMap::asGid
    functionSourceFile: /src/pdns/pdns/recursordist/arguments.cc
    functionUses: 0
    functionsReached:
    - ArgvMap::parmIsset
    - strtol
    - string
    - ArgException
    - getgrnam
    - static_cast<gid_t>
    - c_str
    linkageType: ''
    returnType: gid_t
    signature: gid_t ArgvMap::asGid(const string& arg)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ArgvMap::parmIsset
      Src: /src/pdns/pdns/recursordist/arguments.cc:272,1
    - Dst: ArgException
      Src: /src/pdns/pdns/recursordist/arguments.cc:273,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/arguments.cc:273,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/arguments.cc:276,1
    - Dst: static_cast<uid_t>
      Src: /src/pdns/pdns/recursordist/arguments.cc:279,1
    - Dst: strtol
      Src: /src/pdns/pdns/recursordist/arguments.cc:279,1
    - Dst: getpwnam
      Src: /src/pdns/pdns/recursordist/arguments.cc:282,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/arguments.cc:282,1
    - Dst: ArgException
      Src: /src/pdns/pdns/recursordist/arguments.cc:284,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/arguments.cc:284,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 11
    argCount: 1
    argNames:
    - ' arg'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 289
      start: 270
    functionDepth: 0
    functionLinenumber: 270
    functionLinenumberEnd: 289
    functionName: ArgvMap::asUid
    functionSourceFile: /src/pdns/pdns/recursordist/arguments.cc
    functionUses: 0
    functionsReached:
    - getpwnam
    - ArgvMap::parmIsset
    - strtol
    - string
    - ArgException
    - c_str
    - static_cast<uid_t>
    linkageType: ''
    returnType: uid_t
    signature: uid_t ArgvMap::asUid(const string& arg)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ArgvMap::parmIsset
      Src: /src/pdns/pdns/recursordist/arguments.cc:293,1
    - Dst: ArgException
      Src: /src/pdns/pdns/recursordist/arguments.cc:294,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/arguments.cc:294,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/arguments.cc:298,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/arguments.cc:302,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/recursordist/arguments.cc:304,1
    - Dst: strtol
      Src: /src/pdns/pdns/recursordist/arguments.cc:304,1
    - Dst: ArgException
      Src: /src/pdns/pdns/recursordist/arguments.cc:306,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/arguments.cc:306,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/arguments.cc:306,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 11
    argCount: 2
    argNames:
    - ' arg'
    - def
    argTypes:
    - string
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 310
      start: 291
    functionDepth: 0
    functionLinenumber: 291
    functionLinenumberEnd: 310
    functionName: ArgvMap::asNum
    functionSourceFile: /src/pdns/pdns/recursordist/arguments.cc
    functionUses: 1
    functionsReached:
    - ArgvMap::parmIsset
    - strtol
    - c_str
    - string
    - ArgException
    - empty
    - static_cast<int>
    linkageType: ''
    returnType: int
    signature: int ArgvMap::asNum(const string& arg, int def)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ArgvMap::parmIsset
      Src: /src/pdns/pdns/recursordist/arguments.cc:314,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/arguments.cc:317,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ' arg'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 318
      start: 312
    functionDepth: 0
    functionLinenumber: 312
    functionLinenumberEnd: 318
    functionName: ArgvMap::isEmpty
    functionSourceFile: /src/pdns/pdns/recursordist/arguments.cc
    functionUses: 0
    functionsReached:
    - empty
    - ArgvMap::parmIsset
    linkageType: ''
    returnType: bool
    signature: bool ArgvMap::isEmpty(const string& arg)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ArgvMap::parmIsset
      Src: /src/pdns/pdns/recursordist/arguments.cc:322,1
    - Dst: ArgException
      Src: /src/pdns/pdns/recursordist/arguments.cc:323,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/arguments.cc:323,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/arguments.cc:326,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/arguments.cc:330,1
    - Dst: strtod
      Src: /src/pdns/pdns/recursordist/arguments.cc:332,1
    - Dst: ArgException
      Src: /src/pdns/pdns/recursordist/arguments.cc:335,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/arguments.cc:335,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 11
    argCount: 1
    argNames:
    - ' arg'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 339
      start: 320
    functionDepth: 0
    functionLinenumber: 320
    functionLinenumberEnd: 339
    functionName: ArgvMap::asDouble
    functionSourceFile: /src/pdns/pdns/recursordist/arguments.cc
    functionUses: 0
    functionsReached:
    - ArgvMap::parmIsset
    - c_str
    - string
    - ArgException
    - empty
    - strtod
    linkageType: ''
    returnType: double
    signature: double ArgvMap::asDouble(const string& arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: set
      Src: /src/pdns/pdns/recursordist/arguments.cc:343,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 344
      start: 341
    functionDepth: 0
    functionLinenumber: 341
    functionLinenumberEnd: 344
    functionName: ArgvMap::ArgvMap
    functionSourceFile: /src/pdns/pdns/recursordist/arguments.cc
    functionUses: 12
    functionsReached:
    - set
    linkageType: ''
    returnType: void
    signature: void ArgvMap::ArgvMap()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: find
      Src: /src/pdns/pdns/recursordist/arguments.cc:348,1
    - Dst: ArgvMap::end
      Src: /src/pdns/pdns/recursordist/arguments.cc:348,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' var'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 349
      start: 346
    functionDepth: 0
    functionLinenumber: 346
    functionLinenumberEnd: 349
    functionName: ArgvMap::parmIsset
    functionSourceFile: /src/pdns/pdns/recursordist/arguments.cc
    functionUses: 14
    functionsReached:
    - ArgvMap::end
    - find
    linkageType: ''
    returnType: bool
    signature: bool ArgvMap::parmIsset(const string& var)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: find
      Src: /src/pdns/pdns/recursordist/arguments.cc:359,1
    - Dst: ArgvMap::end
      Src: /src/pdns/pdns/recursordist/arguments.cc:360,1
    - Dst: SLOG
      Src: /src/pdns/pdns/recursordist/arguments.cc:361,1
    - Dst: info
      Src: /src/pdns/pdns/recursordist/arguments.cc:362,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/arguments.cc:362,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/arguments.cc:362,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ' var'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 364
      start: 357
    functionDepth: 0
    functionLinenumber: 357
    functionLinenumberEnd: 364
    functionName: ArgvMap::warnIfDeprecated
    functionSourceFile: /src/pdns/pdns/recursordist/arguments.cc
    functionUses: 1
    functionsReached:
    - SLOG
    - Logging::Loggable
    - ArgvMap::end
    - info
    - find
    linkageType: ''
    returnType: void
    signature: void ArgvMap::warnIfDeprecated(const string& var) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: find
      Src: /src/pdns/pdns/recursordist/arguments.cc:368,1
    - Dst: ArgvMap::end
      Src: /src/pdns/pdns/recursordist/arguments.cc:369,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' var'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 370
      start: 366
    functionDepth: 0
    functionLinenumber: 366
    functionLinenumberEnd: 370
    functionName: ArgvMap::isDeprecated
    functionSourceFile: /src/pdns/pdns/recursordist/arguments.cc
    functionUses: 0
    functionsReached:
    - ArgvMap::end
    - find
    linkageType: ''
    returnType: string
    signature: string ArgvMap::isDeprecated(const string& var)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: find
      Src: /src/pdns/pdns/recursordist/arguments.cc:379,1
    - Dst: find
      Src: /src/pdns/pdns/recursordist/arguments.cc:379,1
    - Dst: substr
      Src: /src/pdns/pdns/recursordist/arguments.cc:381,1
    - Dst: substr
      Src: /src/pdns/pdns/recursordist/arguments.cc:382,1
    - Dst: find
      Src: /src/pdns/pdns/recursordist/arguments.cc:385,1
    - Dst: find
      Src: /src/pdns/pdns/recursordist/arguments.cc:385,1
    - Dst: substr
      Src: /src/pdns/pdns/recursordist/arguments.cc:387,1
    - Dst: substr
      Src: /src/pdns/pdns/recursordist/arguments.cc:388,1
    - Dst: find
      Src: /src/pdns/pdns/recursordist/arguments.cc:390,1
    - Dst: find
      Src: /src/pdns/pdns/recursordist/arguments.cc:390,1
    - Dst: substr
      Src: /src/pdns/pdns/recursordist/arguments.cc:392,1
    - Dst: length
      Src: /src/pdns/pdns/recursordist/arguments.cc:395,1
    - Dst: substr
      Src: /src/pdns/pdns/recursordist/arguments.cc:396,1
    - Dst: push_back
      Src: /src/pdns/pdns/recursordist/arguments.cc:400,1
    - Dst: Utility::trim
      Src: /src/pdns/pdns/recursordist/arguments.cc:403,1
    - Dst: string::empty
      Src: /src/pdns/pdns/recursordist/arguments.cc:405,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/arguments.cc:405,1
    - Dst: ArgvMap::warnIfDeprecated
      Src: /src/pdns/pdns/recursordist/arguments.cc:407,1
    - Dst: string::find_first_not_of
      Src: /src/pdns/pdns/recursordist/arguments.cc:409,1
    - Dst: string::substr
      Src: /src/pdns/pdns/recursordist/arguments.cc:411,1
    - Dst: ArgvMap::parmIsset
      Src: /src/pdns/pdns/recursordist/arguments.cc:413,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/arguments.cc:415,1
    - Dst: count
      Src: /src/pdns/pdns/recursordist/arguments.cc:416,1
    - Dst: ArgException
      Src: /src/pdns/pdns/recursordist/arguments.cc:417,1
    - Dst: insert
      Src: /src/pdns/pdns/recursordist/arguments.cc:427,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/arguments.cc:427,1
    - Dst: stringtok
      Src: /src/pdns/pdns/recursordist/arguments.cc:433,1
    - Dst: find
      Src: /src/pdns/pdns/recursordist/arguments.cc:434,1
    - Dst: vector::begin
      Src: /src/pdns/pdns/recursordist/arguments.cc:434,1
    - Dst: vector::end
      Src: /src/pdns/pdns/recursordist/arguments.cc:434,1
    - Dst: vector::end
      Src: /src/pdns/pdns/recursordist/arguments.cc:434,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/arguments.cc:435,1
    - Dst: SLOG
      Src: /src/pdns/pdns/recursordist/arguments.cc:436,1
    - Dst: info
      Src: /src/pdns/pdns/recursordist/arguments.cc:437,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/arguments.cc:437,1
    - Dst: ArgException
      Src: /src/pdns/pdns/recursordist/arguments.cc:442,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 55
    argCount: 3
    argNames:
    - ' arg'
    - ' parseOnly'
    - lax
    argTypes:
    - string
    - string
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 446
      start: 372
    functionDepth: 2
    functionLinenumber: 372
    functionLinenumberEnd: 446
    functionName: ArgvMap::parseOne
    functionSourceFile: /src/pdns/pdns/recursordist/arguments.cc
    functionUses: 3
    functionsReached:
    - ArgvMap::warnIfDeprecated
    - string::substr
    - insert
    - find
    - vector::begin
    - SLOG
    - stringtok
    - string::empty
    - Logging::Loggable
    - substr
    - string::find_first_not_of
    - empty
    - ArgvMap::parmIsset
    - push_back
    - vector::end
    - Utility::trim
    - length
    - std::move
    - count
    - info
    - ArgException
    linkageType: ''
    returnType: void
    signature: void ArgvMap::parseOne(const string& arg, const string& parseOnly,
      bool lax)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 451
      start: 448
    functionDepth: 0
    functionLinenumber: 448
    functionLinenumberEnd: 451
    functionName: '& ArgvMap::getCommands()'
    functionSourceFile: /src/pdns/pdns/recursordist/arguments.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: vector<string>
    signature: vector<string> & ArgvMap::getCommands()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: clear
      Src: /src/pdns/pdns/recursordist/arguments.cc:455,1
    - Dst: clear
      Src: /src/pdns/pdns/recursordist/arguments.cc:456,1
    - Dst: ArgvMap::parseOne
      Src: /src/pdns/pdns/recursordist/arguments.cc:458,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - ' argc'
    - argv
    - lax
    argTypes:
    - int
    - char**
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 460
      start: 453
    functionDepth: 1
    functionLinenumber: 453
    functionLinenumberEnd: 460
    functionName: ArgvMap::parse
    functionSourceFile: /src/pdns/pdns/recursordist/arguments.cc
    functionUses: 1
    functionsReached:
    - clear
    - ArgvMap::parseOne
    linkageType: ''
    returnType: void
    signature: void ArgvMap::parse(int& argc, char** argv, bool lax)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: string::find
      Src: /src/pdns/pdns/recursordist/arguments.cc:466,1
    - Dst: ArgvMap::parseOne
      Src: /src/pdns/pdns/recursordist/arguments.cc:467,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - ' argc'
    - argv
    - ' arg'
    argTypes:
    - int
    - char**
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 470
      start: 462
    functionDepth: 0
    functionLinenumber: 462
    functionLinenumberEnd: 470
    functionName: ArgvMap::preParse
    functionSourceFile: /src/pdns/pdns/recursordist/arguments.cc
    functionUses: 0
    functionsReached:
    - string::find
    - ArgvMap::parseOne
    linkageType: ''
    returnType: void
    signature: void ArgvMap::preParse(int& argc, char** argv, const string& arg)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: getline
      Src: /src/pdns/pdns/recursordist/arguments.cc:482,1
    - Dst: boost::trim_right
      Src: /src/pdns/pdns/recursordist/arguments.cc:483,1
    - Dst: string::empty
      Src: /src/pdns/pdns/recursordist/arguments.cc:485,1
    - Dst: string::size
      Src: /src/pdns/pdns/recursordist/arguments.cc:485,1
    - Dst: string::substr
      Src: /src/pdns/pdns/recursordist/arguments.cc:486,1
    - Dst: string::length
      Src: /src/pdns/pdns/recursordist/arguments.cc:486,1
    - Dst: string::find
      Src: /src/pdns/pdns/recursordist/arguments.cc:493,1
    - Dst: std::isspace
      Src: /src/pdns/pdns/recursordist/arguments.cc:497,1
    - Dst: string::substr
      Src: /src/pdns/pdns/recursordist/arguments.cc:498,1
    - Dst: boost::trim_right
      Src: /src/pdns/pdns/recursordist/arguments.cc:503,1
    - Dst: string::find_first_not_of
      Src: /src/pdns/pdns/recursordist/arguments.cc:506,1
    - Dst: string::substr
      Src: /src/pdns/pdns/recursordist/arguments.cc:508,1
    - Dst: ArgvMap::parseOne
      Src: /src/pdns/pdns/recursordist/arguments.cc:513,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/arguments.cc:513,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 25
    argCount: 3
    argNames:
    - ' fname'
    - ' arg'
    - lax
    argTypes:
    - string
    - string
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 518
      start: 472
    functionDepth: 0
    functionLinenumber: 472
    functionLinenumberEnd: 518
    functionName: ArgvMap::parseFile
    functionSourceFile: /src/pdns/pdns/recursordist/arguments.cc
    functionUses: 2
    functionsReached:
    - string::size
    - string::empty
    - string::find
    - ArgvMap::parseOne
    - string
    - string::substr
    - getline
    - boost::trim_right
    - std::isspace
    - string::find_first_not_of
    - string::length
    linkageType: ''
    returnType: bool
    signature: bool ArgvMap::parseFile(const string& fname, const string& arg, bool
      lax)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ArgvMap::parseFile
      Src: /src/pdns/pdns/recursordist/arguments.cc:524,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - ' fname'
    - ' arg'
    - ' theDefault'
    argTypes:
    - string
    - string
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 525
      start: 520
    functionDepth: 0
    functionLinenumber: 520
    functionLinenumberEnd: 525
    functionName: ArgvMap::preParseFile
    functionSourceFile: /src/pdns/pdns/recursordist/arguments.cc
    functionUses: 0
    functionsReached:
    - ArgvMap::parseFile
    linkageType: ''
    returnType: bool
    signature: bool ArgvMap::preParseFile(const string& fname, const string& arg,
      const string& theDefault)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ArgvMap::file
      Src: /src/pdns/pdns/recursordist/arguments.cc:529,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' fname'
    - lax
    argTypes:
    - string
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 530
      start: 527
    functionDepth: 0
    functionLinenumber: 527
    functionLinenumberEnd: 530
    functionName: ArgvMap::file
    functionSourceFile: /src/pdns/pdns/recursordist/arguments.cc
    functionUses: 5
    functionsReached:
    - ArgvMap::file
    linkageType: ''
    returnType: bool
    signature: bool ArgvMap::file(const string& fname, bool lax)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ArgvMap::parmIsset
      Src: /src/pdns/pdns/recursordist/arguments.cc:534,1
    - Dst: set
      Src: /src/pdns/pdns/recursordist/arguments.cc:535,1
    - Dst: ArgvMap::parseFile
      Src: /src/pdns/pdns/recursordist/arguments.cc:538,1
    - Dst: SLOG
      Src: /src/pdns/pdns/recursordist/arguments.cc:539,1
    - Dst: info
      Src: /src/pdns/pdns/recursordist/arguments.cc:540,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/arguments.cc:540,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/arguments.cc:545,1
    - Dst: ArgvMap::gatherIncludes
      Src: /src/pdns/pdns/recursordist/arguments.cc:547,1
    - Dst: ArgvMap::file
      Src: /src/pdns/pdns/recursordist/arguments.cc:549,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/arguments.cc:549,1
    - Dst: SLOG
      Src: /src/pdns/pdns/recursordist/arguments.cc:550,1
    - Dst: info
      Src: /src/pdns/pdns/recursordist/arguments.cc:551,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/arguments.cc:551,1
    - Dst: ArgException
      Src: /src/pdns/pdns/recursordist/arguments.cc:552,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 17
    argCount: 3
    argNames:
    - ' fname'
    - lax
    - included
    argTypes:
    - string
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 558
      start: 532
    functionDepth: 0
    functionLinenumber: 532
    functionLinenumberEnd: 558
    functionName: ArgvMap::file
    functionSourceFile: /src/pdns/pdns/recursordist/arguments.cc
    functionUses: 6
    functionsReached:
    - SLOG
    - ArgvMap::parmIsset
    - ArgvMap::parseFile
    - c_str
    - Logging::Loggable
    - info
    - set
    - ArgException
    - empty
    - ArgvMap::file
    - ArgvMap::gatherIncludes
    linkageType: ''
    returnType: bool
    signature: bool ArgvMap::file(const string& fname, bool lax, bool included)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/arguments.cc:563,1
    - Dst: pdns::visit_directory
      Src: /src/pdns/pdns/recursordist/arguments.cc:568,1
    - Dst: boost::starts_with
      Src: /src/pdns/pdns/recursordist/arguments.cc:570,1
    - Dst: boost::ends_with
      Src: /src/pdns/pdns/recursordist/arguments.cc:573,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/arguments.cc:575,1
    - Dst: stat
      Src: /src/pdns/pdns/recursordist/arguments.cc:578,1
    - Dst: string::c_str
      Src: /src/pdns/pdns/recursordist/arguments.cc:578,1
    - Dst: S_ISREG
      Src: /src/pdns/pdns/recursordist/arguments.cc:578,1
    - Dst: SLOG
      Src: /src/pdns/pdns/recursordist/arguments.cc:580,1
    - Dst: info
      Src: /src/pdns/pdns/recursordist/arguments.cc:581,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/arguments.cc:581,1
    - Dst: ArgException
      Src: /src/pdns/pdns/recursordist/arguments.cc:582,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/arguments.cc:582,1
    - Dst: std::vector::emplace_back
      Src: /src/pdns/pdns/recursordist/arguments.cc:584,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/arguments.cc:591,1
    - Dst: SLOG
      Src: /src/pdns/pdns/recursordist/arguments.cc:592,1
    - Dst: error
      Src: /src/pdns/pdns/recursordist/arguments.cc:593,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/arguments.cc:593,1
    - Dst: ArgException
      Src: /src/pdns/pdns/recursordist/arguments.cc:594,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/arguments.cc:594,1
    - Dst: std::sort
      Src: /src/pdns/pdns/recursordist/arguments.cc:597,1
    - Dst: std::vector::begin
      Src: /src/pdns/pdns/recursordist/arguments.cc:597,1
    - Dst: std::vector::end
      Src: /src/pdns/pdns/recursordist/arguments.cc:597,1
    - Dst: CIStringComparePOSIX
      Src: /src/pdns/pdns/recursordist/arguments.cc:597,1
    - Dst: insert
      Src: /src/pdns/pdns/recursordist/arguments.cc:598,1
    - Dst: ArgvMap::end
      Src: /src/pdns/pdns/recursordist/arguments.cc:598,1
    - Dst: std::vector::begin
      Src: /src/pdns/pdns/recursordist/arguments.cc:598,1
    - Dst: std::vector::end
      Src: /src/pdns/pdns/recursordist/arguments.cc:598,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 23
    argCount: 3
    argNames:
    - ' directory'
    - ' suffix'
    - ' extraConfigs'
    argTypes:
    - std::string
    - std::string
    - std::vector<std::string>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 599
      start: 561
    functionDepth: 2
    functionLinenumber: 561
    functionLinenumberEnd: 599
    functionName: ArgvMap::gatherIncludes
    functionSourceFile: /src/pdns/pdns/recursordist/arguments.cc
    functionUses: 2
    functionsReached:
    - stringerror
    - insert
    - error
    - std::string
    - SLOG
    - Logging::Loggable
    - std::vector::begin
    - boost::starts_with
    - empty
    - stat
    - boost::ends_with
    - std::vector::end
    - string::c_str
    - ArgvMap::end
    - pdns::visit_directory
    - S_ISREG
    - std::move
    - std::sort
    - info
    - std::vector::emplace_back
    - CIStringComparePOSIX
    - ArgException
    linkageType: ''
    returnType: void
    signature: void ArgvMap::gatherIncludes(const std::string& directory, const std::string&
      suffix, std::vector<std::string>& extraConfigs)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/shuffle.cc:42,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/shuffle.cc:42,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/shuffle.cc:48,1
    - Dst: pdns::shuffle
      Src: /src/pdns/pdns/recursordist/shuffle.cc:57,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/shuffle.cc:61,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/shuffle.cc:66,1
    - Dst: pdns::shuffle
      Src: /src/pdns/pdns/recursordist/shuffle.cc:73,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 27
    argCount: 1
    argNames:
    - ' rrs'
    argTypes:
    - std::vector<DNSZoneRecord>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 33
    functionDepth: 0
    functionLinenumber: 33
    functionLinenumberEnd: 76
    functionName: pdns::shuffle
    functionSourceFile: /src/pdns/pdns/recursordist/shuffle.cc
    functionUses: 4
    functionsReached:
    - pdns::shuffle
    - end
    - begin
    linkageType: ''
    returnType: void
    signature: void pdns::shuffle(std::vector<DNSZoneRecord>& rrs)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/shuffle.cc:85,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/shuffle.cc:85,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/shuffle.cc:90,1
    - Dst: shuffle
      Src: /src/pdns/pdns/recursordist/shuffle.cc:98,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/shuffle.cc:106,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/shuffle.cc:111,1
    - Dst: shuffle
      Src: /src/pdns/pdns/recursordist/shuffle.cc:118,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 30
    argCount: 2
    argNames:
    - ' rrs'
    - includingAdditionals
    argTypes:
    - std::vector<DNSRecord>
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 79
    functionDepth: 0
    functionLinenumber: 79
    functionLinenumberEnd: 121
    functionName: shuffle
    functionSourceFile: /src/pdns/pdns/recursordist/shuffle.cc
    functionUses: 21
    functionsReached:
    - shuffle
    - end
    - begin
    linkageType: ''
    returnType: void
    signature: void shuffle(std::vector<DNSRecord>& rrs, bool includingAdditionals)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - type
    argTypes:
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 132
      start: 123
    functionDepth: 0
    functionLinenumber: 123
    functionLinenumberEnd: 132
    functionName: mapTypesToOrder
    functionSourceFile: /src/pdns/pdns/recursordist/shuffle.cc
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t mapTypesToOrder(uint16_t type)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::stable_sort
      Src: /src/pdns/pdns/recursordist/shuffle.cc:138,1
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/shuffle.cc:138,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/shuffle.cc:138,1
    - Dst: std::tuple
      Src: /src/pdns/pdns/recursordist/shuffle.cc:139,1
    - Dst: mapTypesToOrder
      Src: /src/pdns/pdns/recursordist/shuffle.cc:139,1
    - Dst: std::tuple
      Src: /src/pdns/pdns/recursordist/shuffle.cc:139,1
    - Dst: mapTypesToOrder
      Src: /src/pdns/pdns/recursordist/shuffle.cc:139,1
    - Dst: pdns::shuffle
      Src: /src/pdns/pdns/recursordist/shuffle.cc:141,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - ' rrs'
    - includingAdditionals
    argTypes:
    - vector<DNSRecord>
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 142
      start: 136
    functionDepth: 0
    functionLinenumber: 136
    functionLinenumberEnd: 142
    functionName: pdns::orderAndShuffle
    functionSourceFile: /src/pdns/pdns/recursordist/shuffle.cc
    functionUses: 0
    functionsReached:
    - pdns::shuffle
    - mapTypesToOrder
    - std::stable_sort
    - end
    - begin
    - std::tuple
    linkageType: ''
    returnType: void
    signature: void pdns::orderAndShuffle(vector<DNSRecord>& rrs, bool includingAdditionals)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/recursordist/shuffle.cc:148,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/shuffle.cc:155,1
    - Dst: std::unordered_set::reserve
      Src: /src/pdns/pdns/recursordist/shuffle.cc:160,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/shuffle.cc:160,1
    - Dst: getContent
      Src: /src/pdns/pdns/recursordist/shuffle.cc:162,1
    - Dst: std::unordered_set::emplace
      Src: /src/pdns/pdns/recursordist/shuffle.cc:164,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/shuffle.cc:164,1
    - Dst: std::vector::reserve
      Src: /src/pdns/pdns/recursordist/shuffle.cc:180,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/shuffle.cc:180,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/shuffle.cc:181,1
    - Dst: std::vector::emplace_back
      Src: /src/pdns/pdns/recursordist/shuffle.cc:183,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/shuffle.cc:183,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/shuffle.cc:186,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 22
    argCount: 1
    argNames:
    - ' rrs'
    argTypes:
    - vector<DNSRecord>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 188
      start: 144
    functionDepth: 0
    functionLinenumber: 144
    functionLinenumberEnd: 188
    functionName: pdns::dedupRecords
    functionSourceFile: /src/pdns/pdns/recursordist/shuffle.cc
    functionUses: 1
    functionsReached:
    - std::move
    - std::unordered_set::reserve
    - std::unordered_set::emplace
    - std::vector::emplace_back
    - getContent
    - size
    - std::vector::reserve
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int pdns::dedupRecords(vector<DNSRecord>& rrs)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: close
      Src: /src/pdns/pdns/recursordist/devpollmplexer.cc:46,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 48
    functionName: ~DevPollFDMultiplexer()
    functionSourceFile: /src/pdns/pdns/recursordist/devpollmplexer.cc
    functionUses: 0
    functionsReached:
    - close
    linkageType: ''
    returnType: void
    signature: void ~DevPollFDMultiplexer()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 56
    functionDepth: 0
    functionLinenumber: 56
    functionLinenumberEnd: 59
    functionName: DevPollFDMultiplexer::getName
    functionSourceFile: /src/pdns/pdns/recursordist/devpollmplexer.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: string
    signature: string getName() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DevPollFDMultiplexer::DevPollFDMultiplexer
      Src: /src/pdns/pdns/recursordist/devpollmplexer.cc:67,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 65
    functionDepth: 0
    functionLinenumber: 65
    functionLinenumberEnd: 68
    functionName: makeDevPoll
    functionSourceFile: /src/pdns/pdns/recursordist/devpollmplexer.cc
    functionUses: 0
    functionsReached:
    - DevPollFDMultiplexer::DevPollFDMultiplexer
    linkageType: ''
    returnType: FDMultiplexer
    signature: FDMultiplexer * makeDevPoll(unsigned int)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: FDMultiplexer::getMultiplexerMap
      Src: /src/pdns/pdns/recursordist/devpollmplexer.cc:74,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 72
    functionDepth: 0
    functionLinenumber: 72
    functionLinenumberEnd: 75
    functionName: DevPollRegisterOurselves
    functionSourceFile: /src/pdns/pdns/recursordist/devpollmplexer.cc
    functionUses: 0
    functionsReached:
    - FDMultiplexer::getMultiplexerMap
    linkageType: ''
    returnType: void
    signature: void DevPollRegisterOurselves()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: open
      Src: /src/pdns/pdns/recursordist/devpollmplexer.cc:80,1
    - Dst: FDMultiplexerException
      Src: /src/pdns/pdns/recursordist/devpollmplexer.cc:82,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/devpollmplexer.cc:82,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 78
    functionDepth: 0
    functionLinenumber: 78
    functionLinenumberEnd: 84
    functionName: DevPollFDMultiplexer::DevPollFDMultiplexer
    functionSourceFile: /src/pdns/pdns/recursordist/devpollmplexer.cc
    functionUses: 5
    functionsReached:
    - FDMultiplexerException
    - stringerror
    - open
    linkageType: ''
    returnType: void
    signature: void DevPollFDMultiplexer::DevPollFDMultiplexer()
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/devpollmplexer.cc:96,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - kind
    argTypes:
    - FDMultiplexer::EventKind
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 86
    functionDepth: 0
    functionLinenumber: 86
    functionLinenumberEnd: 97
    functionName: convertEventKind
    functionSourceFile: /src/pdns/pdns/recursordist/devpollmplexer.cc
    functionUses: 15
    functionsReached:
    - std::runtime_error
    linkageType: ''
    returnType: int
    signature: int convertEventKind(FDMultiplexer::EventKind kind)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: convertEventKind
      Src: /src/pdns/pdns/recursordist/devpollmplexer.cc:103,1
    - Dst: write
      Src: /src/pdns/pdns/recursordist/devpollmplexer.cc:106,1
    - Dst: FDMultiplexerException
      Src: /src/pdns/pdns/recursordist/devpollmplexer.cc:107,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/devpollmplexer.cc:107,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - fd
    - kind
    argTypes:
    - int
    - FDMultiplexer::EventKind
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 99
    functionDepth: 0
    functionLinenumber: 99
    functionLinenumberEnd: 109
    functionName: DevPollFDMultiplexer::addFD
    functionSourceFile: /src/pdns/pdns/recursordist/devpollmplexer.cc
    functionUses: 0
    functionsReached:
    - FDMultiplexerException
    - stringerror
    - write
    - convertEventKind
    linkageType: ''
    returnType: void
    signature: void DevPollFDMultiplexer::addFD(int fd, FDMultiplexer::EventKind kind)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: write
      Src: /src/pdns/pdns/recursordist/devpollmplexer.cc:118,1
    - Dst: FDMultiplexerException
      Src: /src/pdns/pdns/recursordist/devpollmplexer.cc:119,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/devpollmplexer.cc:119,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - fd
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 111
    functionDepth: 0
    functionLinenumber: 111
    functionLinenumberEnd: 121
    functionName: DevPollFDMultiplexer::removeFD
    functionSourceFile: /src/pdns/pdns/recursordist/devpollmplexer.cc
    functionUses: 0
    functionsReached:
    - FDMultiplexerException
    - stringerror
    - write
    linkageType: ''
    returnType: void
    signature: void DevPollFDMultiplexer::removeFD(int fd, FDMultiplexer::EventKind)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/recursordist/devpollmplexer.cc:125,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/devpollmplexer.cc:125,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/devpollmplexer.cc:127,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/devpollmplexer.cc:127,1
    - Dst: std::vector::data
      Src: /src/pdns/pdns/recursordist/devpollmplexer.cc:128,1
    - Dst: ioctl
      Src: /src/pdns/pdns/recursordist/devpollmplexer.cc:130,1
    - Dst: FDMultiplexerException
      Src: /src/pdns/pdns/recursordist/devpollmplexer.cc:133,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/devpollmplexer.cc:133,1
    - Dst: push_back
      Src: /src/pdns/pdns/recursordist/devpollmplexer.cc:137,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/recursordist/devpollmplexer.cc:137,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 2
    argNames:
    - ' fds'
    - timeout
    argTypes:
    - std::vector<int>
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 139
      start: 123
    functionDepth: 0
    functionLinenumber: 123
    functionLinenumberEnd: 139
    functionName: DevPollFDMultiplexer::getAvailableFDs
    functionSourceFile: /src/pdns/pdns/recursordist/devpollmplexer.cc
    functionUses: 0
    functionsReached:
    - push_back
    - stringerror
    - size
    - std::vector::at
    - FDMultiplexerException
    - std::vector::data
    - ioctl
    linkageType: ''
    returnType: void
    signature: void DevPollFDMultiplexer::getAvailableFDs(std::vector<int>& fds, int
      timeout)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/recursordist/devpollmplexer.cc:145,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/devpollmplexer.cc:145,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/devpollmplexer.cc:147,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/devpollmplexer.cc:147,1
    - Dst: std::vector::data
      Src: /src/pdns/pdns/recursordist/devpollmplexer.cc:148,1
    - Dst: ioctl
      Src: /src/pdns/pdns/recursordist/devpollmplexer.cc:150,1
    - Dst: gettimeofday
      Src: /src/pdns/pdns/recursordist/devpollmplexer.cc:152,1
    - Dst: FDMultiplexerException
      Src: /src/pdns/pdns/recursordist/devpollmplexer.cc:155,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/devpollmplexer.cc:155,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/recursordist/devpollmplexer.cc:164,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/recursordist/devpollmplexer.cc:164,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/recursordist/devpollmplexer.cc:164,1
    - Dst: find
      Src: /src/pdns/pdns/recursordist/devpollmplexer.cc:165,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/recursordist/devpollmplexer.cc:165,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/devpollmplexer.cc:166,1
    - Dst: d_callback
      Src: /src/pdns/pdns/recursordist/devpollmplexer.cc:167,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/recursordist/devpollmplexer.cc:172,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/recursordist/devpollmplexer.cc:172,1
    - Dst: find
      Src: /src/pdns/pdns/recursordist/devpollmplexer.cc:173,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/recursordist/devpollmplexer.cc:173,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/devpollmplexer.cc:174,1
    - Dst: d_callback
      Src: /src/pdns/pdns/recursordist/devpollmplexer.cc:175,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 26
    argCount: 2
    argNames:
    - now
    - timeout
    argTypes:
    - struct timeval*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 182
      start: 141
    functionDepth: 0
    functionLinenumber: 141
    functionLinenumberEnd: 182
    functionName: DevPollFDMultiplexer::run
    functionSourceFile: /src/pdns/pdns/recursordist/devpollmplexer.cc
    functionUses: 2
    functionsReached:
    - stringerror
    - end
    - size
    - d_callback
    - std::vector::at
    - gettimeofday
    - FDMultiplexerException
    - std::vector::data
    - find
    - ioctl
    linkageType: ''
    returnType: int
    signature: int DevPollFDMultiplexer::run(struct timeval* now, int timeout)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: funcparam_t_cast<Socket*>
      Src: /src/pdns/pdns/recursordist/devpollmplexer.cc:188,1
    - Dst: Socket*::recvFrom
      Src: /src/pdns/pdns/recursordist/devpollmplexer.cc:191,1
    - Dst: string::size
      Src: /src/pdns/pdns/recursordist/devpollmplexer.cc:192,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - fd
    - ' parameter'
    argTypes:
    - int
    - funcparam_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 193
      start: 185
    functionDepth: 0
    functionLinenumber: 185
    functionLinenumberEnd: 193
    functionName: acceptData
    functionSourceFile: /src/pdns/pdns/recursordist/devpollmplexer.cc
    functionUses: 0
    functionsReached:
    - string::size
    - funcparam_t_cast<Socket*>
    - Socket*::recvFrom
    linkageType: ''
    returnType: void
    signature: void acceptData(int fd, funcparam_t& parameter)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Socket::bind
      Src: /src/pdns/pdns/recursordist/devpollmplexer.cc:201,1
    - Dst: DevPollFDMultiplexer::DevPollFDMultiplexer
      Src: /src/pdns/pdns/recursordist/devpollmplexer.cc:203,1
    - Dst: DevPollFDMultiplexer::addReadFD
      Src: /src/pdns/pdns/recursordist/devpollmplexer.cc:205,1
    - Dst: Socket::getHandle
      Src: /src/pdns/pdns/recursordist/devpollmplexer.cc:205,1
    - Dst: DevPollFDMultiplexer::run
      Src: /src/pdns/pdns/recursordist/devpollmplexer.cc:208,1
    - Dst: DevPollFDMultiplexer::removeReadFD
      Src: /src/pdns/pdns/recursordist/devpollmplexer.cc:210,1
    - Dst: Socket::getHandle
      Src: /src/pdns/pdns/recursordist/devpollmplexer.cc:210,1
    - Dst: DevPollFDMultiplexer::removeReadFD
      Src: /src/pdns/pdns/recursordist/devpollmplexer.cc:211,1
    - Dst: Socket::getHandle
      Src: /src/pdns/pdns/recursordist/devpollmplexer.cc:211,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 212
      start: 196
    functionDepth: 0
    functionLinenumber: 196
    functionLinenumberEnd: 212
    functionName: main
    functionSourceFile: /src/pdns/pdns/recursordist/devpollmplexer.cc
    functionUses: 49
    functionsReached:
    - DevPollFDMultiplexer::removeReadFD
    - Socket::getHandle
    - DevPollFDMultiplexer::run
    - DevPollFDMultiplexer::addReadFD
    - DevPollFDMultiplexer::DevPollFDMultiplexer
    - Socket::bind
    linkageType: ''
    returnType: int
    signature: int main()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 18
      start: 18
    functionDepth: 0
    functionLinenumber: 18
    functionLinenumberEnd: 18
    functionName: ~TLSSession()
    functionSourceFile: /src/pdns/pdns/recursordist/tcpiohandler.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~TLSSession()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 24
      start: 24
    functionDepth: 0
    functionLinenumber: 24
    functionLinenumberEnd: 24
    functionName: ~TLSConnection()
    functionSourceFile: /src/pdns/pdns/recursordist/tcpiohandler.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~TLSConnection()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 44
    functionDepth: 0
    functionLinenumber: 44
    functionLinenumberEnd: 47
    functionName: TLSConnection::setUnknownTicketKey
    functionSourceFile: /src/pdns/pdns/recursordist/tcpiohandler.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setUnknownTicketKey()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 49
    functionDepth: 0
    functionLinenumber: 49
    functionLinenumberEnd: 52
    functionName: TLSConnection::getUnknownTicketKey
    functionSourceFile: /src/pdns/pdns/recursordist/tcpiohandler.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool getUnknownTicketKey() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 54
    functionDepth: 0
    functionLinenumber: 54
    functionLinenumberEnd: 57
    functionName: TLSConnection::setResumedFromInactiveTicketKey
    functionSourceFile: /src/pdns/pdns/recursordist/tcpiohandler.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setResumedFromInactiveTicketKey()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 59
    functionDepth: 0
    functionLinenumber: 59
    functionLinenumberEnd: 62
    functionName: TLSConnection::getResumedFromInactiveTicketKey
    functionSourceFile: /src/pdns/pdns/recursordist/tcpiohandler.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool getResumedFromInactiveTicketKey() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: clear
      Src: /src/pdns/pdns/recursordist/tcpiohandler.hh:75,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 73
    functionDepth: 1
    functionLinenumber: 73
    functionLinenumberEnd: 76
    functionName: TLSCtx::TLSCtx
    functionSourceFile: /src/pdns/pdns/recursordist/tcpiohandler.hh
    functionUses: 0
    functionsReached:
    - clear
    linkageType: ''
    returnType: void
    signature: void TLSCtx()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 77
    functionDepth: 0
    functionLinenumber: 77
    functionLinenumberEnd: 77
    functionName: ~TLSCtx()
    functionSourceFile: /src/pdns/pdns/recursordist/tcpiohandler.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~TLSCtx()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/tcpiohandler.hh:83,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 81
    functionDepth: 0
    functionLinenumber: 81
    functionLinenumberEnd: 84
    functionName: TLSCtx::loadTicketsKeys
    functionSourceFile: /src/pdns/pdns/recursordist/tcpiohandler.hh
    functionUses: 0
    functionsReached:
    - std::runtime_error
    linkageType: ''
    returnType: void
    signature: void loadTicketsKeys(const std::string& /* file */)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/tcpiohandler.hh:87,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 85
    functionDepth: 0
    functionLinenumber: 85
    functionLinenumberEnd: 88
    functionName: TLSCtx::loadTicketsKey
    functionSourceFile: /src/pdns/pdns/recursordist/tcpiohandler.hh
    functionUses: 0
    functionsReached:
    - std::runtime_error
    linkageType: ''
    returnType: void
    signature: void loadTicketsKey(const std::string& /* key */)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: test_and_set
      Src: /src/pdns/pdns/recursordist/tcpiohandler.hh:92,1
    - Dst: rotateTicketsKey
      Src: /src/pdns/pdns/recursordist/tcpiohandler.hh:97,1
    - Dst: clear
      Src: /src/pdns/pdns/recursordist/tcpiohandler.hh:98,1
    - Dst: clear
      Src: /src/pdns/pdns/recursordist/tcpiohandler.hh:101,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/tcpiohandler.hh:102,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/tcpiohandler.hh:102,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/tcpiohandler.hh:102,1
    - Dst: clear
      Src: /src/pdns/pdns/recursordist/tcpiohandler.hh:105,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 16
    argCount: 1
    argNames:
    - now
    argTypes:
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 89
    functionDepth: 1
    functionLinenumber: 89
    functionLinenumberEnd: 109
    functionName: TLSCtx::handleTicketsKeyRotation
    functionSourceFile: /src/pdns/pdns/recursordist/tcpiohandler.hh
    functionUses: 0
    functionsReached:
    - std::runtime_error
    - rotateTicketsKey
    - what
    - clear
    - std::string
    - test_and_set
    linkageType: ''
    returnType: void
    signature: void handleTicketsKeyRotation(time_t now)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 111
    functionDepth: 0
    functionLinenumber: 111
    functionLinenumberEnd: 114
    functionName: TLSCtx::getNextTicketsKeyRotation
    functionSourceFile: /src/pdns/pdns/recursordist/tcpiohandler.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: time_t
    signature: time_t getNextTicketsKeyRotation() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' hook'
    argTypes:
    - tickets_key_added_hook
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 124
      start: 121
    functionDepth: 0
    functionLinenumber: 121
    functionLinenumberEnd: 124
    functionName: TLSCtx::setTicketsKeyAddedHook
    functionSourceFile: /src/pdns/pdns/recursordist/tcpiohandler.hh
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setTicketsKeyAddedHook(const tickets_key_added_hook& hook)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 125
    functionDepth: 0
    functionLinenumber: 125
    functionLinenumberEnd: 128
    functionName: '& getTicketsKeyAddedHook()'
    functionSourceFile: /src/pdns/pdns/recursordist/tcpiohandler.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: tickets_key_added_hook
    signature: tickets_key_added_hook & getTicketsKeyAddedHook()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 132
      start: 129
    functionDepth: 0
    functionLinenumber: 129
    functionLinenumberEnd: 132
    functionName: TLSCtx::hasTicketsKeyAddedHook
    functionSourceFile: /src/pdns/pdns/recursordist/tcpiohandler.hh
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool hasTicketsKeyAddedHook()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - alpn
    argTypes:
    - ALPN
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 149
      start: 147
    functionDepth: 0
    functionLinenumber: 147
    functionLinenumberEnd: 149
    functionName: TLSFrontend::TLSFrontend
    functionSourceFile: /src/pdns/pdns/recursordist/tcpiohandler.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void TLSFrontend(ALPN alpn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/tcpiohandler.hh:151,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - std::shared_ptr<TLSCtx>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 153
      start: 151
    functionDepth: 0
    functionLinenumber: 151
    functionLinenumberEnd: 153
    functionName: TLSFrontend::TLSFrontend
    functionSourceFile: /src/pdns/pdns/recursordist/tcpiohandler.hh
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void TLSFrontend(std::shared_ptr<TLSCtx> ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: TLSFrontend::rotateTicketsKey
      Src: /src/pdns/pdns/recursordist/tcpiohandler.hh:160,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - now
    argTypes:
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 162
      start: 157
    functionDepth: 0
    functionLinenumber: 157
    functionLinenumberEnd: 162
    functionName: TLSFrontend::rotateTicketsKey
    functionSourceFile: /src/pdns/pdns/recursordist/tcpiohandler.hh
    functionUses: 3
    functionsReached:
    - TLSFrontend::rotateTicketsKey
    linkageType: ''
    returnType: void
    signature: void rotateTicketsKey(time_t now)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: TLSFrontend::loadTicketsKeys
      Src: /src/pdns/pdns/recursordist/tcpiohandler.hh:167,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - ' file'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 169
      start: 164
    functionDepth: 0
    functionLinenumber: 164
    functionLinenumberEnd: 169
    functionName: TLSFrontend::loadTicketsKeys
    functionSourceFile: /src/pdns/pdns/recursordist/tcpiohandler.hh
    functionUses: 3
    functionsReached:
    - TLSFrontend::loadTicketsKeys
    linkageType: ''
    returnType: void
    signature: void loadTicketsKeys(const std::string& file)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: TLSFrontend::loadTicketsKey
      Src: /src/pdns/pdns/recursordist/tcpiohandler.hh:174,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - ' key'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 176
      start: 171
    functionDepth: 0
    functionLinenumber: 171
    functionLinenumberEnd: 176
    functionName: TLSFrontend::loadTicketsKey
    functionSourceFile: /src/pdns/pdns/recursordist/tcpiohandler.hh
    functionUses: 3
    functionsReached:
    - TLSFrontend::loadTicketsKey
    linkageType: ''
    returnType: void
    signature: void loadTicketsKey(const std::string& key)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::atomic_load_explicit
      Src: /src/pdns/pdns/recursordist/tcpiohandler.hh:180,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 181
      start: 178
    functionDepth: 0
    functionLinenumber: 178
    functionLinenumberEnd: 181
    functionName: TLSFrontend::getContext
    functionSourceFile: /src/pdns/pdns/recursordist/tcpiohandler.hh
    functionUses: 0
    functionsReached:
    - std::atomic_load_explicit
    linkageType: ''
    returnType: std::shared_ptr<TLSCtx>
    signature: std::shared_ptr<TLSCtx> getContext() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::atomic_store_explicit
      Src: /src/pdns/pdns/recursordist/tcpiohandler.hh:185,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/tcpiohandler.hh:185,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - parent
    argTypes:
    - std::shared_ptr<const TLSFrontend>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 186
      start: 183
    functionDepth: 0
    functionLinenumber: 183
    functionLinenumberEnd: 186
    functionName: TLSFrontend::setParent
    functionSourceFile: /src/pdns/pdns/recursordist/tcpiohandler.hh
    functionUses: 0
    functionsReached:
    - std::move
    - std::atomic_store_explicit
    linkageType: ''
    returnType: void
    signature: void setParent(std::shared_ptr<const TLSFrontend> parent)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: reset
      Src: /src/pdns/pdns/recursordist/tcpiohandler.hh:190,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 191
      start: 188
    functionDepth: 0
    functionLinenumber: 188
    functionLinenumberEnd: 191
    functionName: TLSFrontend::cleanup
    functionSourceFile: /src/pdns/pdns/recursordist/tcpiohandler.hh
    functionUses: 0
    functionsReached:
    - reset
    linkageType: ''
    returnType: void
    signature: void cleanup()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: TLSFrontend::getTicketsKeysCount
      Src: /src/pdns/pdns/recursordist/tcpiohandler.hh:196,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 200
      start: 193
    functionDepth: 0
    functionLinenumber: 193
    functionLinenumberEnd: 200
    functionName: TLSFrontend::getTicketsKeysCount
    functionSourceFile: /src/pdns/pdns/recursordist/tcpiohandler.hh
    functionUses: 3
    functionsReached:
    - TLSFrontend::getTicketsKeysCount
    linkageType: ''
    returnType: size_t
    signature: size_t getTicketsKeysCount()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: localtime_r
      Src: /src/pdns/pdns/recursordist/tcpiohandler.hh:207,1
    - Dst: strftime
      Src: /src/pdns/pdns/recursordist/tcpiohandler.hh:208,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/tcpiohandler.hh:210,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - rotationTime
    argTypes:
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 211
      start: 202
    functionDepth: 0
    functionLinenumber: 202
    functionLinenumberEnd: 211
    functionName: TLSFrontend::timeToString
    functionSourceFile: /src/pdns/pdns/recursordist/tcpiohandler.hh
    functionUses: 2
    functionsReached:
    - strftime
    - std::string
    - localtime_r
    linkageType: ''
    returnType: std::string
    signature: std::string timeToString(time_t rotationTime)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 216
      start: 213
    functionDepth: 0
    functionLinenumber: 213
    functionLinenumberEnd: 216
    functionName: TLSFrontend::getTicketsKeyRotationDelay
    functionSourceFile: /src/pdns/pdns/recursordist/tcpiohandler.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: time_t
    signature: time_t getTicketsKeyRotationDelay() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: TLSFrontend::timeToString
      Src: /src/pdns/pdns/recursordist/tcpiohandler.hh:223,1
    - Dst: TLSFrontend::getNextTicketsKeyRotation
      Src: /src/pdns/pdns/recursordist/tcpiohandler.hh:223,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 227
      start: 218
    functionDepth: 0
    functionLinenumber: 218
    functionLinenumberEnd: 227
    functionName: TLSFrontend::getNextTicketsKeyRotation
    functionSourceFile: /src/pdns/pdns/recursordist/tcpiohandler.hh
    functionUses: 3
    functionsReached:
    - TLSFrontend::getNextTicketsKeyRotation
    - TLSFrontend::timeToString
    linkageType: ''
    returnType: std::string
    signature: std::string getNextTicketsKeyRotation() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 232
      start: 229
    functionDepth: 0
    functionLinenumber: 229
    functionLinenumberEnd: 232
    functionName: TLSFrontend::getRequestedProvider
    functionSourceFile: /src/pdns/pdns/recursordist/tcpiohandler.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string getRequestedProvider() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: getName
      Src: /src/pdns/pdns/recursordist/tcpiohandler.hh:237,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 240
      start: 234
    functionDepth: 0
    functionLinenumber: 234
    functionLinenumberEnd: 240
    functionName: TLSFrontend::getEffectiveProvider
    functionSourceFile: /src/pdns/pdns/recursordist/tcpiohandler.hh
    functionUses: 0
    functionsReached:
    - getName
    linkageType: ''
    returnType: std::string
    signature: std::string getEffectiveProvider() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: getClientConnection
      Src: /src/pdns/pdns/recursordist/tcpiohandler.hh:261,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 5
    argNames:
    - ' host'
    - hostIsAddr
    - socket
    - ' timeout'
    - ' ctx'
    argTypes:
    - std::string
    - bool
    - int
    - struct timeval
    - std::shared_ptr<TLSCtx>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 263
      start: 257
    functionDepth: 0
    functionLinenumber: 257
    functionLinenumberEnd: 263
    functionName: TCPIOHandler::TCPIOHandler
    functionSourceFile: /src/pdns/pdns/recursordist/tcpiohandler.hh
    functionUses: 0
    functionsReached:
    - getClientConnection
    linkageType: ''
    returnType: void
    signature: void TCPIOHandler(const std::string& host, bool hostIsAddr, int socket,
      const struct timeval& timeout, const std::shared_ptr<TLSCtx>& ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: getConnection
      Src: /src/pdns/pdns/recursordist/tcpiohandler.hh:269,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 4
    argNames:
    - socket
    - ' timeout'
    - ' ctx'
    - now
    argTypes:
    - int
    - struct timeval
    - std::shared_ptr<TLSCtx>
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 271
      start: 265
    functionDepth: 0
    functionLinenumber: 265
    functionLinenumberEnd: 271
    functionName: TCPIOHandler::TCPIOHandler
    functionSourceFile: /src/pdns/pdns/recursordist/tcpiohandler.hh
    functionUses: 0
    functionsReached:
    - getConnection
    linkageType: ''
    returnType: void
    signature: void TCPIOHandler(int socket, const struct timeval& timeout, const
      std::shared_ptr<TLSCtx>& ctx, time_t now)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: close
      Src: /src/pdns/pdns/recursordist/tcpiohandler.hh:275,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 276
      start: 273
    functionDepth: 0
    functionLinenumber: 273
    functionLinenumberEnd: 276
    functionName: ~TCPIOHandler()
    functionSourceFile: /src/pdns/pdns/recursordist/tcpiohandler.hh
    functionUses: 0
    functionsReached:
    - close
    linkageType: ''
    returnType: void
    signature: void ~TCPIOHandler()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: TCPIOHandler::close
      Src: /src/pdns/pdns/recursordist/tcpiohandler.hh:281,1
    - Dst: reset
      Src: /src/pdns/pdns/recursordist/tcpiohandler.hh:282,1
    - Dst: shutdown
      Src: /src/pdns/pdns/recursordist/tcpiohandler.hh:286,1
    - Dst: TCPIOHandler::close
      Src: /src/pdns/pdns/recursordist/tcpiohandler.hh:287,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 290
      start: 278
    functionDepth: 0
    functionLinenumber: 278
    functionLinenumberEnd: 290
    functionName: TCPIOHandler::close
    functionSourceFile: /src/pdns/pdns/recursordist/tcpiohandler.hh
    functionUses: 7
    functionsReached:
    - reset
    - shutdown
    - TCPIOHandler::close
    linkageType: ''
    returnType: void
    signature: void close()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 295
      start: 292
    functionDepth: 0
    functionLinenumber: 292
    functionLinenumberEnd: 295
    functionName: TCPIOHandler::getDescriptor
    functionSourceFile: /src/pdns/pdns/recursordist/tcpiohandler.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int getDescriptor() const
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: setsockopt
      Src: /src/pdns/pdns/recursordist/tcpiohandler.hh:304,1
    - Dst: SConnectWithTimeout
      Src: /src/pdns/pdns/recursordist/tcpiohandler.hh:317,1
    - Dst: SConnectWithTimeout
      Src: /src/pdns/pdns/recursordist/tcpiohandler.hh:322,1
    - Dst: TCPIOHandler::tryConnect
      Src: /src/pdns/pdns/recursordist/tcpiohandler.hh:327,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 21
    argCount: 2
    argNames:
    - fastOpen
    - ' remote'
    argTypes:
    - bool
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 331
      start: 297
    functionDepth: 0
    functionLinenumber: 297
    functionLinenumberEnd: 331
    functionName: TCPIOHandler::tryConnect
    functionSourceFile: /src/pdns/pdns/recursordist/tcpiohandler.hh
    functionUses: 3
    functionsReached:
    - SConnectWithTimeout
    - TCPIOHandler::tryConnect
    - setsockopt
    linkageType: ''
    returnType: IOState
    signature: IOState tryConnect(bool fastOpen, const ComboAddress& remote)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: setsockopt
      Src: /src/pdns/pdns/recursordist/tcpiohandler.hh:340,1
    - Dst: SConnectWithTimeout
      Src: /src/pdns/pdns/recursordist/tcpiohandler.hh:353,1
    - Dst: SConnectWithTimeout
      Src: /src/pdns/pdns/recursordist/tcpiohandler.hh:358,1
    - Dst: TCPIOHandler::connect
      Src: /src/pdns/pdns/recursordist/tcpiohandler.hh:363,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 20
    argCount: 3
    argNames:
    - fastOpen
    - ' remote'
    - ' timeout'
    argTypes:
    - bool
    - ComboAddress
    - struct timeval
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 365
      start: 333
    functionDepth: 0
    functionLinenumber: 333
    functionLinenumberEnd: 365
    functionName: TCPIOHandler::connect
    functionSourceFile: /src/pdns/pdns/recursordist/tcpiohandler.hh
    functionUses: 5
    functionsReached:
    - TCPIOHandler::connect
    - SConnectWithTimeout
    - setsockopt
    linkageType: ''
    returnType: void
    signature: void connect(bool fastOpen, const ComboAddress& remote, const struct
      timeval& timeout)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: TCPIOHandler::tryHandshake
      Src: /src/pdns/pdns/recursordist/tcpiohandler.hh:370,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 373
      start: 367
    functionDepth: 0
    functionLinenumber: 367
    functionLinenumberEnd: 373
    functionName: TCPIOHandler::tryHandshake
    functionSourceFile: /src/pdns/pdns/recursordist/tcpiohandler.hh
    functionUses: 3
    functionsReached:
    - TCPIOHandler::tryHandshake
    linkageType: ''
    returnType: IOState
    signature: IOState tryHandshake()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: TCPIOHandler::read
      Src: /src/pdns/pdns/recursordist/tcpiohandler.hh:378,1
    - Dst: readn2WithTimeout
      Src: /src/pdns/pdns/recursordist/tcpiohandler.hh:380,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - buffer
    - bufferSize
    - ' readTimeout'
    argTypes:
    - void*
    - size_t
    - struct timeval
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 382
      start: 375
    functionDepth: 0
    functionLinenumber: 375
    functionLinenumberEnd: 382
    functionName: TCPIOHandler::read
    functionSourceFile: /src/pdns/pdns/recursordist/tcpiohandler.hh
    functionUses: 6
    functionsReached:
    - readn2WithTimeout
    - TCPIOHandler::read
    linkageType: ''
    returnType: size_t
    signature: size_t read(void* buffer, size_t bufferSize, const struct timeval&
      readTimeout, const struct timeval& totalTimeout = {0,0}, bool allowIncomplete=false)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/recursordist/tcpiohandler.hh:392,1
    - Dst: std::out_of_range
      Src: /src/pdns/pdns/recursordist/tcpiohandler.hh:393,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/tcpiohandler.hh:393,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/tcpiohandler.hh:393,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/tcpiohandler.hh:393,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/tcpiohandler.hh:393,1
    - Dst: TCPIOHandler::tryRead
      Src: /src/pdns/pdns/recursordist/tcpiohandler.hh:397,1
    - Dst: TCPIOHandler::read
      Src: /src/pdns/pdns/recursordist/tcpiohandler.hh:401,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/recursordist/tcpiohandler.hh:401,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/tcpiohandler.hh:401,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/recursordist/tcpiohandler.hh:403,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/tcpiohandler.hh:410,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/tcpiohandler.hh:410,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/recursordist/tcpiohandler.hh:414,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 24
    argCount: 3
    argNames:
    - ' buffer'
    - ' pos'
    - toRead
    argTypes:
    - PacketBuffer
    - size_t
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 422
      start: 390
    functionDepth: 0
    functionLinenumber: 390
    functionLinenumberEnd: 422
    functionName: TCPIOHandler::tryRead
    functionSourceFile: /src/pdns/pdns/recursordist/tcpiohandler.hh
    functionUses: 3
    functionsReached:
    - reinterpret_cast<char*>
    - static_cast<size_t>
    - TCPIOHandler::tryRead
    - std::out_of_range
    - std::to_string
    - std::runtime_error
    - stringerror
    - runtime_error
    - size
    - TCPIOHandler::read
    - at
    linkageType: ''
    returnType: IOState
    signature: IOState tryRead(PacketBuffer& buffer, size_t& pos, size_t toRead, bool
      allowIncomplete=false, bool bypassFilters=false)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/recursordist/tcpiohandler.hh:432,1
    - Dst: std::out_of_range
      Src: /src/pdns/pdns/recursordist/tcpiohandler.hh:433,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/tcpiohandler.hh:433,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/tcpiohandler.hh:433,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/tcpiohandler.hh:433,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/tcpiohandler.hh:433,1
    - Dst: TCPIOHandler::tryWrite
      Src: /src/pdns/pdns/recursordist/tcpiohandler.hh:436,1
    - Dst: sendMsgWithOptions
      Src: /src/pdns/pdns/recursordist/tcpiohandler.hh:442,1
    - Dst: reinterpret_cast<const char *>
      Src: /src/pdns/pdns/recursordist/tcpiohandler.hh:442,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/tcpiohandler.hh:442,1
    - Dst: TCPIOHandler::write
      Src: /src/pdns/pdns/recursordist/tcpiohandler.hh:457,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/recursordist/tcpiohandler.hh:457,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/tcpiohandler.hh:457,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/recursordist/tcpiohandler.hh:460,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/tcpiohandler.hh:467,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/tcpiohandler.hh:467,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/recursordist/tcpiohandler.hh:471,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 31
    argCount: 3
    argNames:
    - ' buffer'
    - ' pos'
    - toWrite
    argTypes:
    - PacketBuffer
    - size_t
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 476
      start: 430
    functionDepth: 0
    functionLinenumber: 430
    functionLinenumberEnd: 476
    functionName: TCPIOHandler::tryWrite
    functionSourceFile: /src/pdns/pdns/recursordist/tcpiohandler.hh
    functionUses: 3
    functionsReached:
    - TCPIOHandler::write
    - static_cast<size_t>
    - std::out_of_range
    - std::to_string
    - at
    - std::runtime_error
    - stringerror
    - runtime_error
    - size
    - reinterpret_cast<const char *>
    - reinterpret_cast<const char*>
    - TCPIOHandler::tryWrite
    - sendMsgWithOptions
    linkageType: ''
    returnType: IOState
    signature: IOState tryWrite(const PacketBuffer& buffer, size_t& pos, size_t toWrite)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: TCPIOHandler::write
      Src: /src/pdns/pdns/recursordist/tcpiohandler.hh:481,1
    - Dst: sendMsgWithOptions
      Src: /src/pdns/pdns/recursordist/tcpiohandler.hh:487,1
    - Dst: reinterpret_cast<const char *>
      Src: /src/pdns/pdns/recursordist/tcpiohandler.hh:487,1
    - Dst: writen2WithTimeout
      Src: /src/pdns/pdns/recursordist/tcpiohandler.hh:496,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 3
    argNames:
    - buffer
    - bufferSize
    - ' writeTimeout'
    argTypes:
    - void*
    - size_t
    - struct timeval
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 497
      start: 478
    functionDepth: 0
    functionLinenumber: 478
    functionLinenumberEnd: 497
    functionName: TCPIOHandler::write
    functionSourceFile: /src/pdns/pdns/recursordist/tcpiohandler.hh
    functionUses: 11
    functionsReached:
    - TCPIOHandler::write
    - writen2WithTimeout
    - reinterpret_cast<const char *>
    - sendMsgWithOptions
    linkageType: ''
    returnType: size_t
    signature: size_t write(const void* buffer, size_t bufferSize, const struct timeval&
      writeTimeout)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: TCPIOHandler::getServerNameIndication
      Src: /src/pdns/pdns/recursordist/tcpiohandler.hh:502,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/tcpiohandler.hh:504,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 505
      start: 499
    functionDepth: 0
    functionLinenumber: 499
    functionLinenumberEnd: 505
    functionName: TCPIOHandler::getServerNameIndication
    functionSourceFile: /src/pdns/pdns/recursordist/tcpiohandler.hh
    functionUses: 3
    functionsReached:
    - std::string
    - TCPIOHandler::getServerNameIndication
    linkageType: ''
    returnType: std::string
    signature: std::string getServerNameIndication() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: TCPIOHandler::getNextProtocol
      Src: /src/pdns/pdns/recursordist/tcpiohandler.hh:510,1
    - Dst: std::vector<uint8_t>
      Src: /src/pdns/pdns/recursordist/tcpiohandler.hh:512,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 513
      start: 507
    functionDepth: 0
    functionLinenumber: 507
    functionLinenumberEnd: 513
    functionName: TCPIOHandler::getNextProtocol
    functionSourceFile: /src/pdns/pdns/recursordist/tcpiohandler.hh
    functionUses: 3
    functionsReached:
    - std::vector<uint8_t>
    - TCPIOHandler::getNextProtocol
    linkageType: ''
    returnType: std::vector<uint8_t>
    signature: std::vector<uint8_t> getNextProtocol() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: TCPIOHandler::getTLSVersion
      Src: /src/pdns/pdns/recursordist/tcpiohandler.hh:518,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 521
      start: 515
    functionDepth: 0
    functionLinenumber: 515
    functionLinenumberEnd: 521
    functionName: TCPIOHandler::getTLSVersion
    functionSourceFile: /src/pdns/pdns/recursordist/tcpiohandler.hh
    functionUses: 3
    functionsReached:
    - TCPIOHandler::getTLSVersion
    linkageType: ''
    returnType: LibsslTLSVersion
    signature: LibsslTLSVersion getTLSVersion() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 526
      start: 523
    functionDepth: 0
    functionLinenumber: 523
    functionLinenumberEnd: 526
    functionName: TCPIOHandler::isTLS
    functionSourceFile: /src/pdns/pdns/recursordist/tcpiohandler.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool isTLS() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: TCPIOHandler::getVerifyResult
      Src: /src/pdns/pdns/recursordist/tcpiohandler.hh:531,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 534
      start: 528
    functionDepth: 0
    functionLinenumber: 528
    functionLinenumberEnd: 534
    functionName: TCPIOHandler::getVerifyResult
    functionSourceFile: /src/pdns/pdns/recursordist/tcpiohandler.hh
    functionUses: 3
    functionsReached:
    - TCPIOHandler::getVerifyResult
    linkageType: ''
    returnType: std::pair<long, std::string>
    signature: std::pair<long, std::string> getVerifyResult() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hasSessionBeenResumed
      Src: /src/pdns/pdns/recursordist/tcpiohandler.hh:538,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 539
      start: 536
    functionDepth: 0
    functionLinenumber: 536
    functionLinenumberEnd: 539
    functionName: TCPIOHandler::hasTLSSessionBeenResumed
    functionSourceFile: /src/pdns/pdns/recursordist/tcpiohandler.hh
    functionUses: 0
    functionsReached:
    - hasSessionBeenResumed
    linkageType: ''
    returnType: bool
    signature: bool hasTLSSessionBeenResumed() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TCPIOHandler::getResumedFromInactiveTicketKey
      Src: /src/pdns/pdns/recursordist/tcpiohandler.hh:543,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 544
      start: 541
    functionDepth: 0
    functionLinenumber: 541
    functionLinenumberEnd: 544
    functionName: TCPIOHandler::getResumedFromInactiveTicketKey
    functionSourceFile: /src/pdns/pdns/recursordist/tcpiohandler.hh
    functionUses: 3
    functionsReached:
    - TCPIOHandler::getResumedFromInactiveTicketKey
    linkageType: ''
    returnType: bool
    signature: bool getResumedFromInactiveTicketKey() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TCPIOHandler::getUnknownTicketKey
      Src: /src/pdns/pdns/recursordist/tcpiohandler.hh:548,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 549
      start: 546
    functionDepth: 0
    functionLinenumber: 546
    functionLinenumberEnd: 549
    functionName: TCPIOHandler::getUnknownTicketKey
    functionSourceFile: /src/pdns/pdns/recursordist/tcpiohandler.hh
    functionUses: 3
    functionsReached:
    - TCPIOHandler::getUnknownTicketKey
    linkageType: ''
    returnType: bool
    signature: bool getUnknownTicketKey() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: setSession
      Src: /src/pdns/pdns/recursordist/tcpiohandler.hh:554,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ' session'
    argTypes:
    - std::unique_ptr<TLSSession>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 556
      start: 551
    functionDepth: 0
    functionLinenumber: 551
    functionLinenumberEnd: 556
    functionName: TCPIOHandler::setTLSSession
    functionSourceFile: /src/pdns/pdns/recursordist/tcpiohandler.hh
    functionUses: 0
    functionsReached:
    - setSession
    linkageType: ''
    returnType: void
    signature: void setTLSSession(std::unique_ptr<TLSSession>& session)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/tcpiohandler.hh:561,1
    - Dst: getSessions
      Src: /src/pdns/pdns/recursordist/tcpiohandler.hh:564,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 565
      start: 558
    functionDepth: 0
    functionLinenumber: 558
    functionLinenumberEnd: 565
    functionName: TCPIOHandler::getTLSSessions
    functionSourceFile: /src/pdns/pdns/recursordist/tcpiohandler.hh
    functionUses: 0
    functionsReached:
    - getSessions
    - std::runtime_error
    linkageType: ''
    returnType: std::vector<std::unique_ptr<TLSSession>>
    signature: std::vector<std::unique_ptr<TLSSession>> getTLSSessions()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: isTCPSocketUsable
      Src: /src/pdns/pdns/recursordist/tcpiohandler.hh:570,1
    - Dst: TCPIOHandler::isUsable
      Src: /src/pdns/pdns/recursordist/tcpiohandler.hh:572,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 573
      start: 567
    functionDepth: 0
    functionLinenumber: 567
    functionLinenumberEnd: 573
    functionName: TCPIOHandler::isUsable
    functionSourceFile: /src/pdns/pdns/recursordist/tcpiohandler.hh
    functionUses: 3
    functionsReached:
    - TCPIOHandler::isUsable
    - isTCPSocketUsable
    linkageType: ''
    returnType: bool
    signature: bool isUsable() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: TCPIOHandler::getAsyncFDs
      Src: /src/pdns/pdns/recursordist/tcpiohandler.hh:580,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 581
      start: 575
    functionDepth: 0
    functionLinenumber: 575
    functionLinenumberEnd: 581
    functionName: TCPIOHandler::getAsyncFDs
    functionSourceFile: /src/pdns/pdns/recursordist/tcpiohandler.hh
    functionUses: 3
    functionsReached:
    - TCPIOHandler::getAsyncFDs
    linkageType: ''
    returnType: std::vector<int>
    signature: std::vector<int> getAsyncFDs()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/libssl.hh:25,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/libssl.hh:25,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' cert'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 26
      start: 24
    functionDepth: 0
    functionLinenumber: 24
    functionLinenumberEnd: 26
    functionName: TLSCertKeyPair
    functionSourceFile: /src/pdns/pdns/recursordist/libssl.hh
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void TLSCertKeyPair(const std::string& cert, std::optional<std::string>
      key = std::nullopt, std::optional<std::string> password = std::nullopt)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: d_name::empty
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:41,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:42,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:42,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:46,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:46,1
    - Dst: d_name::getLastLabel
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:50,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:51,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:51,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 2
    argNames:
    - ' record'
    - logger
    argTypes:
    - DNSRecord
    - Logr::log_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 39
    functionDepth: 0
    functionLinenumber: 39
    functionLinenumberEnd: 55
    functionName: validate
    functionSourceFile: /src/pdns/pdns/recursordist/rec-xfr.cc
    functionUses: 5
    functionsReached:
    - d_name::empty
    - d_name::getLastLabel
    - Logr::log_t::info
    - Logging::Loggable
    linkageType: ''
    returnType: bool
    signature: bool validate(const DNSRecord& record, Logr::log_t logger)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: validate
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:59,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:63,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:63,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:63,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:63,1
    - Dst: emplace
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:64,1
    - Dst: std::make_pair
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:64,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - ' record'
    - logger
    argTypes:
    - DNSRecord
    - Logr::log_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 57
    functionDepth: 0
    functionLinenumber: 57
    functionLinenumberEnd: 65
    functionName: CatalogZone::add
    functionSourceFile: /src/pdns/pdns/recursordist/rec-xfr.cc
    functionUses: 0
    functionsReached:
    - Logr::log_t::info
    - Logging::Loggable
    - QType
    - validate
    - std::make_pair
    - emplace
    linkageType: ''
    returnType: void
    signature: void CatalogZone::add(const DNSRecord& record, Logr::log_t logger)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: validate
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:69,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:73,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:73,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:73,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:73,1
    - Dst: erase
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:74,1
    - Dst: std::make_pair
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:74,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - ' record'
    - logger
    argTypes:
    - DNSRecord
    - Logr::log_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 67
    functionDepth: 0
    functionLinenumber: 67
    functionLinenumberEnd: 75
    functionName: CatalogZone::remove
    functionSourceFile: /src/pdns/pdns/recursordist/rec-xfr.cc
    functionUses: 0
    functionsReached:
    - Logr::log_t::info
    - Logging::Loggable
    - QType
    - validate
    - std::make_pair
    - erase
    linkageType: ''
    returnType: void
    signature: void CatalogZone::remove(const DNSRecord& record, Logr::log_t logger)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:79,1
    - Dst: toString
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:79,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:86,1
    - Dst: d_defaults::find
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:87,1
    - Dst: auto::getContent
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:89,1
    - Dst: auto::prependRawLabel
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:91,1
    - Dst: equal_range
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:93,1
    - Dst: std::make_pair
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:93,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:95,1
    - Dst: unquotify
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:97,1
    - Dst: d_defaults::find
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:98,1
    - Dst: d_defaults::end
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:99,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:100,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:100,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:100,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:100,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:103,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:103,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:103,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:103,1
    - Dst: d_defaults::end
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:108,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:109,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:109,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:109,1
    - Dst: toString
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:113,1
    - Dst: pdns::rust::settings::rec::ForwardZone::forwarders::emplace_back
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:117,1
    - Dst: pdns::rust::settings::rec::ForwardZone::validate
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:119,1
    - Dst: ::rust::Vec<::pdns::rust::settings::rec::ForwardZone>::emplace_back
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:120,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:120,1
    - Dst: pdns::rust::settings::rec::api_delete_zones
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:126,1
    - Dst: pdns::rust::settings::rec::api_add_forward_zones
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:127,1
    - Dst: reloadZoneConfiguration
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:128,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 35
    argCount: 2
    argNames:
    - ' params'
    - logger
    argTypes:
    - FWCatalogZone
    - Logr::log_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 129
      start: 77
    functionDepth: 4
    functionLinenumber: 77
    functionLinenumberEnd: 129
    functionName: CatalogZone::registerForwarders
    functionSourceFile: /src/pdns/pdns/recursordist/rec-xfr.cc
    functionUses: 0
    functionsReached:
    - toString
    - auto::prependRawLabel
    - d_defaults::end
    - auto::getContent
    - unquotify
    - Logr::log_t::info
    - Logging::Loggable
    - pdns::rust::settings::rec::ForwardZone::validate
    - pdns::rust::settings::rec::api_add_forward_zones
    - pdns::rust::settings::rec::ForwardZone::forwarders::emplace_back
    - reloadZoneConfiguration
    - pdns::rust::settings::rec::api_delete_zones
    - arg
    - getRR
    - std::move
    - equal_range
    - ::rust::Vec<::pdns::rust::settings::rec::ForwardZone>::emplace_back
    - std::make_pair
    - d_defaults::find
    linkageType: ''
    returnType: void
    signature: void CatalogZone::registerForwarders(const FWCatalogZone& params, Logr::log_t
      logger) const
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: equal_range
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:133,1
    - Dst: std::make_pair
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:133,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:137,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 149
      start: 131
    functionDepth: 0
    functionLinenumber: 131
    functionLinenumberEnd: 149
    functionName: CatalogZone::versionCheck
    functionSourceFile: /src/pdns/pdns/recursordist/rec-xfr.cc
    functionUses: 0
    functionsReached:
    - equal_range
    - std::make_pair
    - getRR
    linkageType: ''
    returnType: bool
    signature: bool CatalogZone::versionCheck() const
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:159,1
    - Dst: std::unordered_set::emplace
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:164,1
    - Dst: auto::getContent
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:164,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 170
      start: 151
    functionDepth: 0
    functionLinenumber: 151
    functionLinenumberEnd: 170
    functionName: CatalogZone::dupsCheck
    functionSourceFile: /src/pdns/pdns/recursordist/rec-xfr.cc
    functionUses: 0
    functionsReached:
    - getRR
    - std::unordered_set::emplace
    - auto::getContent
    linkageType: ''
    returnType: bool
    signature: bool CatalogZone::dupsCheck() const
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: Logr::log_t::withValues
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:175,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:175,1
    - Dst: auto::info
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:176,1
    - Dst: name::empty
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:177,1
    - Dst: auto::info
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:178,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:178,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:178,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:182,1
    - Dst: pdns::getQueryLocalAddress
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:183,1
    - Dst: time
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:191,1
    - Dst: AXFRRetriever::getChunk
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:195,1
    - Dst: d_name::makeUsRelative
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:201,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:203,1
    - Dst: add
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:207,1
    - Dst: time
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:210,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:212,1
    - Dst: time
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:214,1
    - Dst: auto::info
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:215,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:215,1
    - Dst: time
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:216,1
    - Dst: versionCheck
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:220,1
    - Dst: clear
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:221,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:222,1
    - Dst: dupsCheck
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:224,1
    - Dst: clear
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:225,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:226,1
    - Dst: auto::info
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:228,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:228,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:228,1
    - Dst: shared_ptr::getZoneRepresentation
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:228,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 39
    argCount: 8
    argNames:
    - plogger
    - ' primary'
    - ' zoneName'
    - ' zone'
    - ' tsigTriplet'
    - maxReceivedBytes
    - ' localAddress'
    - axfrTimeout
    argTypes:
    - Logr::log_t
    - ComboAddress
    - DNSName
    - shared_ptr<CatalogZone>
    - TSIGTriplet
    - size_t
    - ComboAddress
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 230
      start: 172
    functionDepth: 1
    functionLinenumber: 172
    functionLinenumberEnd: 230
    functionName: loadZoneFromServer
    functionSourceFile: /src/pdns/pdns/recursordist/rec-xfr.cc
    functionUses: 0
    functionsReached:
    - versionCheck
    - add
    - pdns::getQueryLocalAddress
    - getRR
    - shared_ptr::getZoneRepresentation
    - AXFRRetriever::getChunk
    - Logging::Loggable
    - PDNSException
    - time
    - ComboAddress
    - dupsCheck
    - name::empty
    - Logr::log_t::withValues
    - clear
    - d_name::makeUsRelative
    - auto::info
    linkageType: ''
    returnType: shared_ptr<const SOARecordContent>
    signature: shared_ptr<const SOARecordContent> loadZoneFromServer(Logr::log_t plogger,
      const ComboAddress& primary, const DNSName& zoneName, shared_ptr<CatalogZone>&
      zone, const TSIGTriplet& tsigTriplet, size_t maxReceivedBytes, const ComboAddress&
      localAddress, uint16_t axfrTimeout)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<CatalogZone>
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:238,1
    - Dst: pdns::fromNameOrIP
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:241,1
    - Dst: loadZoneFromServer
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:242,1
    - Dst: auto::setSerial
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:243,1
    - Dst: auto::setRefresh
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:244,1
    - Dst: std::max
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:245,1
    - Dst: auto::getRefresh
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:245,1
    - Dst: modify
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:248,1
    - Dst: catalogzones::at
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:249,1
    - Dst: getLocal
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:252,1
    - Dst: auto::registerForwarders
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:253,1
    - Dst: auto::catalogzones::at
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:253,1
    - Dst: Logr::log_t::error
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:258,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:258,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:258,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:258,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:258,1
    - Dst: Logr::log_t::error
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:262,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:262,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:262,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:262,1
    - Dst: condVar::wait_for
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:270,1
    - Dst: std::chrono::seconds
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:270,1
    - Dst: load
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:271,1
    - Dst: getLocal
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:274,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 29
    argCount: 6
    argNames:
    - ' zoneName'
    - ' oldZone'
    - ' refresh'
    - configGeneration
    - ' waiter'
    - logger
    argTypes:
    - DNSName
    - std::shared_ptr<const CatalogZone>
    - uint32_t
    - uint64_t
    - ZoneWaiter
    - Logr::log_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 283
      start: 232
    functionDepth: 2
    functionLinenumber: 232
    functionLinenumberEnd: 283
    functionName: FWCatZoneXFR::preloadZoneFile
    functionSourceFile: /src/pdns/pdns/recursordist/rec-xfr.cc
    functionUses: 0
    functionsReached:
    - auto::getRefresh
    - pdns::fromNameOrIP
    - modify
    - load
    - Logging::Loggable
    - std::chrono::seconds
    - what
    - catalogzones::at
    - Logr::log_t::error
    - loadZoneFromServer
    - std::make_shared<CatalogZone>
    - getLocal
    - auto::registerForwarders
    - auto::catalogzones::at
    - auto::setSerial
    - std::max
    - condVar::wait_for
    - auto::setRefresh
    linkageType: ''
    returnType: void
    signature: void FWCatZoneXFR::preloadZoneFile(const DNSName& zoneName, const std::shared_ptr<const
      CatalogZone>& oldZone, uint32_t& refresh, uint64_t configGeneration, ZoneWaiter&
      waiter, Logr::log_t logger)
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: DNSRecord::DNSRecord
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:289,1
    - Dst: DNSRecord::setContent
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:290,1
    - Dst: std::min
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:296,1
    - Dst: time
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:297,1
    - Dst: condVar::wait_for
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:305,1
    - Dst: std::chrono::seconds
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:305,1
    - Dst: load
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:306,1
    - Dst: time
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:308,1
    - Dst: getLocal
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:311,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:317,1
    - Dst: pdns::fromNameOrIP
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:323,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:324,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:326,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:326,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:326,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:329,1
    - Dst: pdns::getQueryLocalAddress
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:330,1
    - Dst: getIXFRDeltas
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:334,1
    - Dst: Logr::log_t::error
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:340,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:340,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:340,1
    - Dst: vector::empty
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:348,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:353,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:353,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:353,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:356,1
    - Dst: auto::catalogzones::at
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:359,1
    - Dst: getName
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:360,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:361,1
    - Dst: std::make_shared<CatalogZone>
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:365,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:375,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:376,1
    - Dst: auto::clear
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:377,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:384,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:390,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:392,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:392,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:392,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:397,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:397,1
    - Dst: auto::remove
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:398,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:407,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:409,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:414,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:414,1
    - Dst: auto::add
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:415,1
    - Dst: auto::versionCheck
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:419,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:420,1
    - Dst: auto::dupsCheck
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:422,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:423,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:428,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:430,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:430,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:430,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:430,1
    - Dst: auto::setSerial
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:431,1
    - Dst: auto::setRefresh
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:432,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:440,1
    - Dst: modify
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:443,1
    - Dst: catalogzones::at
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:444,1
    - Dst: getLocal
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:447,1
    - Dst: auto::registerForwarders
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:448,1
    - Dst: auto::catalogzones::at
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:448,1
    - Dst: std::max
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:449,1
    - Dst: auto::getRefresh
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:449,1
    - Dst: Logr::log_t::error
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:452,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:452,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:452,1
    - Dst: Logr::log_t::error
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:455,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:455,1
    CyclomaticComplexity: 38
    EdgeCount: 38
    ICount: 111
    argCount: 7
    argNames:
    - ' zoneName'
    - ' oldZone'
    - ' refresh'
    - ' skipRefreshDelay'
    - configGeneration
    - ' waiter'
    - logger
    argTypes:
    - DNSName
    - std::shared_ptr<const CatalogZone>
    - uint32_t
    - bool
    - uint64_t
    - ZoneWaiter
    - Logr::log_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 458
      start: 285
    functionDepth: 1
    functionLinenumber: 285
    functionLinenumberEnd: 458
    functionName: FWCatZoneXFR::zoneTrackerIteration
    functionSourceFile: /src/pdns/pdns/recursordist/rec-xfr.cc
    functionUses: 0
    functionsReached:
    - modify
    - DNSRecord::DNSRecord
    - getIXFRDeltas
    - std::chrono::seconds
    - std::to_string
    - PDNSException
    - auto::registerForwarders
    - DNSRecord::setContent
    - condVar::wait_for
    - auto::setRefresh
    - Logr::log_t::info
    - Logging::Loggable
    - getName
    - time
    - Logr::log_t::error
    - getLocal
    - auto::versionCheck
    - auto::setSerial
    - empty
    - std::max
    - auto::clear
    - load
    - pdns::fromNameOrIP
    - pdns::getQueryLocalAddress
    - auto::getRefresh
    - std::runtime_error
    - vector::empty
    - auto::remove
    - ComboAddress
    - getRR
    - std::move
    - std::min
    - what
    - catalogzones::at
    - std::make_shared<CatalogZone>
    - auto::catalogzones::at
    - auto::add
    - vector::size
    - auto::dupsCheck
    linkageType: ''
    returnType: bool
    signature: bool FWCatZoneXFR::zoneTrackerIteration(const DNSName& zoneName, std::shared_ptr<const
      CatalogZone>& oldZone, uint32_t& refresh, bool& skipRefreshDelay, uint64_t configGeneration,
      ZoneWaiter& waiter, Logr::log_t logger)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: setThreadName
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:463,1
    - Dst: withName
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:465,1
    - Dst: getLocal
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:470,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:470,1
    - Dst: getLocal
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:471,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:471,1
    - Dst: auto::info
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:474,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:474,1
    - Dst: std::max
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:479,1
    - Dst: std::shared_ptr::getRefresh
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:479,1
    - Dst: std::shared_ptr::getName
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:480,1
    - Dst: auto::withValues
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:483,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:483,1
    - Dst: insertZoneTracker
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:485,1
    - Dst: FWCatZoneXFR::preloadZoneFile
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:488,1
    - Dst: FWCatZoneXFR::zoneTrackerIteration
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:490,1
    - Dst: clearZoneTracker
      Src: /src/pdns/pdns/recursordist/rec-xfr.cc:494,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 2
    argNames:
    - params
    - configGeneration
    argTypes:
    - ZoneXFRParams
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 495
      start: 461
    functionDepth: 3
    functionLinenumber: 461
    functionLinenumberEnd: 495
    functionName: FWCatZoneXFR::zoneXFRTracker
    functionSourceFile: /src/pdns/pdns/recursordist/rec-xfr.cc
    functionUses: 0
    functionsReached:
    - FWCatZoneXFR::preloadZoneFile
    - clearZoneTracker
    - std::shared_ptr::getName
    - Logging::Loggable
    - withName
    - size
    - getLocal
    - auto::withValues
    - FWCatZoneXFR::zoneTrackerIteration
    - insertZoneTracker
    - std::max
    - setThreadName
    - at
    - std::shared_ptr::getRefresh
    - auto::info
    linkageType: ''
    returnType: void
    signature: void FWCatZoneXFR::zoneXFRTracker(ZoneXFRParams params, uint64_t configGeneration)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - ' other'
    argTypes:
    - DNSResourceRecord
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 118
      start: 109
    functionDepth: 0
    functionLinenumber: 109
    functionLinenumberEnd: 118
    functionName: operator<(const DNSResourceRecord& other) const
    functionSourceFile: /src/pdns/pdns/recursordist/dns.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool operator<(const DNSResourceRecord& other) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: reinterpret_cast<uintptr_t>
      Src: /src/pdns/pdns/recursordist/dns.hh:195,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - mem
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 196
      start: 193
    functionDepth: 0
    functionLinenumber: 193
    functionLinenumberEnd: 196
    functionName: dnsheader_aligned::isMemoryAligned
    functionSourceFile: /src/pdns/pdns/recursordist/dns.hh
    functionUses: 6
    functionsReached:
    - reinterpret_cast<uintptr_t>
    linkageType: ''
    returnType: bool
    signature: bool isMemoryAligned(const void* mem)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dnsheader_aligned::isMemoryAligned
      Src: /src/pdns/pdns/recursordist/dns.hh:200,1
    - Dst: reinterpret_cast<const dnsheader*>
      Src: /src/pdns/pdns/recursordist/dns.hh:201,1
    - Dst: memcpy
      Src: /src/pdns/pdns/recursordist/dns.hh:204,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - mem
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 207
      start: 198
    functionDepth: 0
    functionLinenumber: 198
    functionLinenumberEnd: 207
    functionName: dnsheader_aligned::dnsheader_aligned
    functionSourceFile: /src/pdns/pdns/recursordist/dns.hh
    functionUses: 0
    functionsReached:
    - dnsheader_aligned::isMemoryAligned
    - memcpy
    - reinterpret_cast<const dnsheader*>
    linkageType: ''
    returnType: void
    signature: void dnsheader_aligned(const void* mem)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 208
      start: 208
    functionDepth: 0
    functionLinenumber: 208
    functionLinenumberEnd: 208
    functionName: dnsheader_aligned::dnsheader_aligned
    functionSourceFile: /src/pdns/pdns/recursordist/dns.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void dnsheader_aligned(const dnsheader_aligned&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 209
      start: 209
    functionDepth: 0
    functionLinenumber: 209
    functionLinenumberEnd: 209
    functionName: dnsheader_aligned::dnsheader_aligned
    functionSourceFile: /src/pdns/pdns/recursordist/dns.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void dnsheader_aligned(dnsheader_aligned&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 210
      start: 210
    functionDepth: 0
    functionLinenumber: 210
    functionLinenumberEnd: 210
    functionName: '& operator=(const dnsheader_aligned&)'
    functionSourceFile: /src/pdns/pdns/recursordist/dns.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: dnsheader_aligned
    signature: dnsheader_aligned & operator=(const dnsheader_aligned&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 211
      start: 211
    functionDepth: 0
    functionLinenumber: 211
    functionLinenumberEnd: 211
    functionName: '& operator=(dnsheader_aligned&&)'
    functionSourceFile: /src/pdns/pdns/recursordist/dns.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: dnsheader_aligned
    signature: dnsheader_aligned & operator=(dnsheader_aligned&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 212
      start: 212
    functionDepth: 0
    functionLinenumber: 212
    functionLinenumberEnd: 212
    functionName: ~dnsheader_aligned()
    functionSourceFile: /src/pdns/pdns/recursordist/dns.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~dnsheader_aligned()
  - 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: dnsheader_aligned::get
    functionSourceFile: /src/pdns/pdns/recursordist/dns.hh
    functionUses: 12
    functionsReached: []
    linkageType: ''
    returnType: dnsheader
    signature: dnsheader * get() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 222
      start: 219
    functionDepth: 0
    functionLinenumber: 219
    functionLinenumberEnd: 222
    functionName: '& operator*() const'
    functionSourceFile: /src/pdns/pdns/recursordist/dns.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: dnsheader
    signature: dnsheader & operator*() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 227
      start: 224
    functionDepth: 0
    functionLinenumber: 224
    functionLinenumberEnd: 227
    functionName: '* operator->() const'
    functionSourceFile: /src/pdns/pdns/recursordist/dns.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: dnsheader
    signature: dnsheader * operator->() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: reinterpret_cast<uint16_t*>
      Src: /src/pdns/pdns/recursordist/dns.hh:237,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/recursordist/dns.hh:237,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - dh
    argTypes:
    - dnsheader*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 238
      start: 234
    functionDepth: 0
    functionLinenumber: 234
    functionLinenumberEnd: 238
    functionName: getFlagsFromDNSHeader
    functionSourceFile: /src/pdns/pdns/recursordist/dns.hh
    functionUses: 26
    functionsReached:
    - reinterpret_cast<char*>
    - reinterpret_cast<uint16_t*>
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t * getFlagsFromDNSHeader(dnsheader* dh)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: reinterpret_cast<const uint16_t*>
      Src: /src/pdns/pdns/recursordist/dns.hh:243,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/recursordist/dns.hh:243,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - dh
    argTypes:
    - dnsheader*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 244
      start: 240
    functionDepth: 0
    functionLinenumber: 240
    functionLinenumberEnd: 244
    functionName: getFlagsFromDNSHeader
    functionSourceFile: /src/pdns/pdns/recursordist/dns.hh
    functionUses: 26
    functionsReached:
    - reinterpret_cast<const char*>
    - reinterpret_cast<const uint16_t*>
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t * getFlagsFromDNSHeader(const dnsheader* dh)
  - BBCount: 30
    BranchProfiles: []
    Callsites:
    - Dst: count
      Src: /src/pdns/pdns/recursordist/rec-protozero.cc:33,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/recursordist/rec-protozero.cc:37,1
    - Dst: encodeDNSName
      Src: /src/pdns/pdns/recursordist/rec-protozero.cc:39,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/recursordist/rec-protozero.cc:39,1
    - Dst: protozero::pbf_writer::add_uint32
      Src: /src/pdns/pdns/recursordist/rec-protozero.cc:40,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/recursordist/rec-protozero.cc:40,1
    - Dst: protozero::pbf_writer::add_uint32
      Src: /src/pdns/pdns/recursordist/rec-protozero.cc:41,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/recursordist/rec-protozero.cc:41,1
    - Dst: protozero::pbf_writer::add_uint32
      Src: /src/pdns/pdns/recursordist/rec-protozero.cc:42,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/recursordist/rec-protozero.cc:42,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/rec-protozero.cc:45,1
    - Dst: length
      Src: /src/pdns/pdns/recursordist/rec-protozero.cc:45,1
    - Dst: protozero::pbf_writer::add_string
      Src: /src/pdns/pdns/recursordist/rec-protozero.cc:46,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/recursordist/rec-protozero.cc:46,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/rec-protozero.cc:52,1
    - Dst: getCA
      Src: /src/pdns/pdns/recursordist/rec-protozero.cc:56,1
    - Dst: protozero::pbf_writer::add_bytes
      Src: /src/pdns/pdns/recursordist/rec-protozero.cc:57,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/recursordist/rec-protozero.cc:57,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/recursordist/rec-protozero.cc:57,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/rec-protozero.cc:61,1
    - Dst: getCA
      Src: /src/pdns/pdns/recursordist/rec-protozero.cc:65,1
    - Dst: protozero::pbf_writer::add_bytes
      Src: /src/pdns/pdns/recursordist/rec-protozero.cc:66,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/recursordist/rec-protozero.cc:66,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/recursordist/rec-protozero.cc:66,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/rec-protozero.cc:70,1
    - Dst: add
      Src: /src/pdns/pdns/recursordist/rec-protozero.cc:74,1
    - Dst: getTarget
      Src: /src/pdns/pdns/recursordist/rec-protozero.cc:74,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/rec-protozero.cc:78,1
    - Dst: add
      Src: /src/pdns/pdns/recursordist/rec-protozero.cc:82,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/rec-protozero.cc:86,1
    - Dst: add
      Src: /src/pdns/pdns/recursordist/rec-protozero.cc:90,1
    - Dst: getNS
      Src: /src/pdns/pdns/recursordist/rec-protozero.cc:90,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/rec-protozero.cc:94,1
    - Dst: add
      Src: /src/pdns/pdns/recursordist/rec-protozero.cc:98,1
    - Dst: getContent
      Src: /src/pdns/pdns/recursordist/rec-protozero.cc:98,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/rec-protozero.cc:102,1
    - Dst: add
      Src: /src/pdns/pdns/recursordist/rec-protozero.cc:106,1
    - Dst: d_mxname::toString
      Src: /src/pdns/pdns/recursordist/rec-protozero.cc:106,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/rec-protozero.cc:110,1
    - Dst: add
      Src: /src/pdns/pdns/recursordist/rec-protozero.cc:114,1
    - Dst: getText
      Src: /src/pdns/pdns/recursordist/rec-protozero.cc:114,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/rec-protozero.cc:118,1
    - Dst: add
      Src: /src/pdns/pdns/recursordist/rec-protozero.cc:122,1
    - Dst: d_target::toString
      Src: /src/pdns/pdns/recursordist/rec-protozero.cc:122,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/rec-protozero.cc:126,1
    - Dst: add
      Src: /src/pdns/pdns/recursordist/rec-protozero.cc:130,1
    - Dst: getZoneRepresentation
      Src: /src/pdns/pdns/recursordist/rec-protozero.cc:130,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/rec-protozero.cc:134,1
    - Dst: add
      Src: /src/pdns/pdns/recursordist/rec-protozero.cc:138,1
    - Dst: getZoneRepresentation
      Src: /src/pdns/pdns/recursordist/rec-protozero.cc:138,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/rec-protozero.cc:142,1
    - Dst: add
      Src: /src/pdns/pdns/recursordist/rec-protozero.cc:146,1
    - Dst: getZoneRepresentation
      Src: /src/pdns/pdns/recursordist/rec-protozero.cc:146,1
    - Dst: protozero::pbf_writer::add_bool
      Src: /src/pdns/pdns/recursordist/rec-protozero.cc:154,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/recursordist/rec-protozero.cc:154,1
    - Dst: protozero::pbf_writer::commit
      Src: /src/pdns/pdns/recursordist/rec-protozero.cc:155,1
    - Dst: push_back
      Src: /src/pdns/pdns/recursordist/rec-protozero.cc:159,1
    - Dst: length
      Src: /src/pdns/pdns/recursordist/rec-protozero.cc:159,1
    CyclomaticComplexity: 31
    EdgeCount: 31
    ICount: 108
    argCount: 4
    argNames:
    - ' record'
    - ' exportTypes'
    - udr
    - limit
    argTypes:
    - DNSRecord
    - std::set<uint16_t>
    - std::optional<bool>
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 162
      start: 27
    functionDepth: 0
    functionLinenumber: 27
    functionLinenumberEnd: 162
    functionName: pdns::ProtoZero::RecMessage::addRR(const DNSRecord& record, const
      std::set<uint16_t>& exportTypes, [[maybe_unused]] std::optional<bool> udr, size_t
      limit)
    functionSourceFile: /src/pdns/pdns/recursordist/rec-protozero.cc
    functionUses: 0
    functionsReached:
    - getZoneRepresentation
    - add
    - d_target::toString
    - size
    - protozero::pbf_writer::add_uint32
    - protozero::pbf_writer::add_bool
    - d_mxname::toString
    - protozero::pbf_writer::add_string
    - push_back
    - reinterpret_cast<const char*>
    - getNS
    - static_cast<protozero::pbf_tag_type>
    - length
    - getRR
    - count
    - encodeDNSName
    - getCA
    - protozero::pbf_writer::add_bytes
    - getContent
    - getText
    - getTarget
    - protozero::pbf_writer::commit
    linkageType: ''
    returnType: void
    signature: void pdns::ProtoZero::RecMessage::addRR(const DNSRecord& record, const
      std::set<uint16_t>& exportTypes, [[maybe_unused]] std::optional<bool> udr, size_t
      limit)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: at
      Src: /src/pdns/pdns/recursordist/rec-protozero.cc:168,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - ' str'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 170
      start: 165
    functionDepth: 0
    functionLinenumber: 165
    functionLinenumberEnd: 170
    functionName: pdns::ProtoZero::RecMessage::clearUDR(std::string& str)
    functionSourceFile: /src/pdns/pdns/recursordist/rec-protozero.cc
    functionUses: 0
    functionsReached:
    - at
    linkageType: ''
    returnType: void
    signature: void pdns::ProtoZero::RecMessage::clearUDR(std::string& str)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: getEvents
      Src: /src/pdns/pdns/recursordist/rec-protozero.cc:175,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/recursordist/rec-protozero.cc:176,1
    - Dst: protozero::pbf_writer::add_int64
      Src: /src/pdns/pdns/recursordist/rec-protozero.cc:177,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/recursordist/rec-protozero.cc:177,1
    - Dst: protozero::pbf_writer::add_uint32
      Src: /src/pdns/pdns/recursordist/rec-protozero.cc:178,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/recursordist/rec-protozero.cc:178,1
    - Dst: protozero::pbf_writer::add_bool
      Src: /src/pdns/pdns/recursordist/rec-protozero.cc:179,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/recursordist/rec-protozero.cc:179,1
    - Dst: std::holds_alternative<std::nullopt_t>
      Src: /src/pdns/pdns/recursordist/rec-protozero.cc:182,1
    - Dst: std::holds_alternative<bool>
      Src: /src/pdns/pdns/recursordist/rec-protozero.cc:184,1
    - Dst: protozero::pbf_writer::add_bool
      Src: /src/pdns/pdns/recursordist/rec-protozero.cc:185,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/recursordist/rec-protozero.cc:185,1
    - Dst: std::get<bool>
      Src: /src/pdns/pdns/recursordist/rec-protozero.cc:185,1
    - Dst: std::holds_alternative<int64_t>
      Src: /src/pdns/pdns/recursordist/rec-protozero.cc:187,1
    - Dst: protozero::pbf_writer::add_int64
      Src: /src/pdns/pdns/recursordist/rec-protozero.cc:188,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/recursordist/rec-protozero.cc:188,1
    - Dst: std::get<int64_t>
      Src: /src/pdns/pdns/recursordist/rec-protozero.cc:188,1
    - Dst: std::holds_alternative<std::string>
      Src: /src/pdns/pdns/recursordist/rec-protozero.cc:190,1
    - Dst: protozero::pbf_writer::add_string
      Src: /src/pdns/pdns/recursordist/rec-protozero.cc:191,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/recursordist/rec-protozero.cc:191,1
    - Dst: std::get<std::string>
      Src: /src/pdns/pdns/recursordist/rec-protozero.cc:191,1
    - Dst: std::holds_alternative<PacketBuffer>
      Src: /src/pdns/pdns/recursordist/rec-protozero.cc:193,1
    - Dst: std::get<PacketBuffer>
      Src: /src/pdns/pdns/recursordist/rec-protozero.cc:194,1
    - Dst: protozero::pbf_writer::add_bytes
      Src: /src/pdns/pdns/recursordist/rec-protozero.cc:195,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/recursordist/rec-protozero.cc:195,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/recursordist/rec-protozero.cc:195,1
    - Dst: data
      Src: /src/pdns/pdns/recursordist/rec-protozero.cc:195,1
    - Dst: pdns::ProtoZero::RecMessage::size
      Src: /src/pdns/pdns/recursordist/rec-protozero.cc:195,1
    - Dst: d_custom::empty
      Src: /src/pdns/pdns/recursordist/rec-protozero.cc:197,1
    - Dst: protozero::pbf_writer::add_string
      Src: /src/pdns/pdns/recursordist/rec-protozero.cc:198,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/recursordist/rec-protozero.cc:198,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 22
    argCount: 1
    argNames:
    - ' trace'
    argTypes:
    - RecEventTrace
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 201
      start: 173
    functionDepth: 0
    functionLinenumber: 173
    functionLinenumberEnd: 201
    functionName: pdns::ProtoZero::RecMessage::addEvents(const RecEventTrace& trace)
    functionSourceFile: /src/pdns/pdns/recursordist/rec-protozero.cc
    functionUses: 0
    functionsReached:
    - std::holds_alternative<PacketBuffer>
    - std::get<int64_t>
    - std::get<PacketBuffer>
    - data
    - protozero::pbf_writer::add_uint32
    - protozero::pbf_writer::add_bool
    - std::holds_alternative<std::string>
    - protozero::pbf_writer::add_string
    - d_custom::empty
    - std::holds_alternative<bool>
    - reinterpret_cast<const char*>
    - std::holds_alternative<int64_t>
    - protozero::pbf_writer::add_int64
    - static_cast<protozero::pbf_tag_type>
    - std::get<std::string>
    - protozero::pbf_writer::add_bytes
    - std::holds_alternative<std::nullopt_t>
    - pdns::ProtoZero::RecMessage::size
    - std::get<bool>
    - getEvents
    linkageType: ''
    returnType: void
    signature: void pdns::ProtoZero::RecMessage::addEvents(const RecEventTrace& trace)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: get
      Src: /src/pdns/pdns/recursordist/rec-cookiestore.cc:28,1
    - Dst: erase
      Src: /src/pdns/pdns/recursordist/rec-cookiestore.cc:29,1
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/rec-cookiestore.cc:29,1
    - Dst: upper_bound
      Src: /src/pdns/pdns/recursordist/rec-cookiestore.cc:29,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - cutoff
    argTypes:
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 30
      start: 26
    functionDepth: 0
    functionLinenumber: 26
    functionLinenumberEnd: 30
    functionName: CookieStore::prune
    functionSourceFile: /src/pdns/pdns/recursordist/rec-cookiestore.cc
    functionUses: 0
    functionsReached:
    - begin
    - upper_bound
    - erase
    - get
    linkageType: ''
    returnType: void
    signature: void CookieStore::prune(time_t cutoff)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dup
      Src: /src/pdns/pdns/recursordist/rec-cookiestore.cc:34,1
    - Dst: pdns::UniqueFilePtr
      Src: /src/pdns/pdns/recursordist/rec-cookiestore.cc:38,1
    - Dst: fdopen
      Src: /src/pdns/pdns/recursordist/rec-cookiestore.cc:38,1
    - Dst: close
      Src: /src/pdns/pdns/recursordist/rec-cookiestore.cc:40,1
    - Dst: fprintf
      Src: /src/pdns/pdns/recursordist/rec-cookiestore.cc:45,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/rec-cookiestore.cc:45,1
    - Dst: fprintf
      Src: /src/pdns/pdns/recursordist/rec-cookiestore.cc:49,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/rec-cookiestore.cc:49,1
    - Dst: d_address::toStringWithPortExcept
      Src: /src/pdns/pdns/recursordist/rec-cookiestore.cc:50,1
    - Dst: d_localaddress::isUnspecified
      Src: /src/pdns/pdns/recursordist/rec-cookiestore.cc:51,1
    - Dst: d_localaddress::toString
      Src: /src/pdns/pdns/recursordist/rec-cookiestore.cc:51,1
    - Dst: d_cookie::toDisplayString
      Src: /src/pdns/pdns/recursordist/rec-cookiestore.cc:52,1
    - Dst: QType::toString
      Src: /src/pdns/pdns/recursordist/rec-cookiestore.cc:53,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/recursordist/rec-cookiestore.cc:54,1
    - Dst: timestamp
      Src: /src/pdns/pdns/recursordist/rec-cookiestore.cc:54,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 1
    argNames:
    - fileDesc
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 32
    functionDepth: 0
    functionLinenumber: 32
    functionLinenumberEnd: 57
    functionName: CookieStore::dump
    functionSourceFile: /src/pdns/pdns/recursordist/rec-cookiestore.cc
    functionUses: 0
    functionsReached:
    - pdns::max
    - d_cookie::toDisplayString
    - fprintf
    - auto::get
    - timestamp
    - d_localaddress::toString
    - QType::toString
    - dup
    - d_address::toStringWithPortExcept
    - pdns::UniqueFilePtr
    - fdopen
    - d_localaddress::isUnspecified
    - close
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t CookieStore::dump(int fileDesc) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - state
    argTypes:
    - vState
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 64
    functionDepth: 0
    functionLinenumber: 64
    functionLinenumberEnd: 67
    functionName: vStateIsBogus
    functionSourceFile: /src/pdns/pdns/recursordist/validate.hh
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool vStateIsBogus(vState state)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' lhs'
    - ' rhs'
    argTypes:
    - shared_ptr<const DNSKEYRecordContent>
    - shared_ptr<const DNSKEYRecordContent>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 95
    functionDepth: 0
    functionLinenumber: 95
    functionLinenumberEnd: 98
    functionName: operator()(const shared_ptr<const DNSKEYRecordContent>& lhs, const
      shared_ptr<const DNSKEYRecordContent>& rhs) const
    functionSourceFile: /src/pdns/pdns/recursordist/validate.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool operator()(const shared_ptr<const DNSKEYRecordContent>& lhs, const
      shared_ptr<const DNSKEYRecordContent>& rhs) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 118
    functionDepth: 0
    functionLinenumber: 118
    functionLinenumberEnd: 121
    functionName: pdns::validation::TooManySEC3IterationsException::TooManySEC3IterationsException
    functionSourceFile: /src/pdns/pdns/recursordist/validate.hh
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void TooManySEC3IterationsException()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 118
    functionDepth: 0
    functionLinenumber: 118
    functionLinenumberEnd: 121
    functionName: pdns::validation::TooManySEC3IterationsException::TooManySEC3IterationsException
    functionSourceFile: /src/pdns/pdns/recursordist/validate.hh
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void TooManySEC3IterationsException()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: isSet
      Src: /src/pdns/pdns/recursordist/validate.hh:154,1
    - Dst: getCode
      Src: /src/pdns/pdns/recursordist/validate.hh:154,1
    - Dst: isSet
      Src: /src/pdns/pdns/recursordist/validate.hh:159,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - ' nsec'
    - ' type'
    argTypes:
    - NSEC
    - QType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 164
      start: 152
    functionDepth: 0
    functionLinenumber: 152
    functionLinenumberEnd: 164
    functionName: isTypeDenied
    functionSourceFile: /src/pdns/pdns/recursordist/validate.hh
    functionUses: 4
    functionsReached:
    - isSet
    - getCode
    linkageType: ''
    returnType: bool
    signature: bool isTypeDenied(const NSEC& nsec, const QType& type)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - slog
    - algorithm
    argTypes:
    - Logr::log_t
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 39
      start: 39
    functionDepth: 0
    functionLinenumber: 39
    functionLinenumberEnd: 39
    functionName: DNSCryptoKeyEngine::DNSCryptoKeyEngine
    functionSourceFile: /src/pdns/pdns/recursordist/dnssecinfra.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void DNSCryptoKeyEngine(Logr::log_t slog, unsigned int algorithm)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 40
    functionDepth: 0
    functionLinenumber: 40
    functionLinenumberEnd: 40
    functionName: ~DNSCryptoKeyEngine()
    functionSourceFile: /src/pdns/pdns/recursordist/dnssecinfra.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~DNSCryptoKeyEngine()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: has_value
      Src: /src/pdns/pdns/recursordist/dnssecinfra.hh:49,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/dnssecinfra.hh:50,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/dnssecinfra.hh:50,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/dnssecinfra.hh:53,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 47
    functionDepth: 0
    functionLinenumber: 47
    functionLinenumberEnd: 54
    functionName: DNSCryptoKeyEngine::createFromPEMFile
    functionSourceFile: /src/pdns/pdns/recursordist/dnssecinfra.hh
    functionUses: 1
    functionsReached:
    - has_value
    - get
    - std::runtime_error
    linkageType: ''
    returnType: void
    signature: void createFromPEMFile(DNSKEYRecordContent& /* drc */, std::FILE& /*
      inputFile */, const std::optional<std::reference_wrapper<const std::string>>
      filename = std::nullopt)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fmemopen
      Src: /src/pdns/pdns/recursordist/dnssecinfra.hh:70,1
    - Dst: const_cast<char*>
      Src: /src/pdns/pdns/recursordist/dnssecinfra.hh:70,1
    - Dst: data
      Src: /src/pdns/pdns/recursordist/dnssecinfra.hh:70,1
    - Dst: length
      Src: /src/pdns/pdns/recursordist/dnssecinfra.hh:70,1
    - Dst: DNSCryptoKeyEngine::createFromPEMFile
      Src: /src/pdns/pdns/recursordist/dnssecinfra.hh:71,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' drc'
    - ' contents'
    argTypes:
    - DNSKEYRecordContent
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 67
    functionDepth: 0
    functionLinenumber: 67
    functionLinenumberEnd: 72
    functionName: DNSCryptoKeyEngine::createFromPEMString
    functionSourceFile: /src/pdns/pdns/recursordist/dnssecinfra.hh
    functionUses: 0
    functionsReached:
    - length
    - const_cast<char*>
    - fmemopen
    - DNSCryptoKeyEngine::createFromPEMFile
    - data
    linkageType: ''
    returnType: void
    signature: void createFromPEMString(DNSKEYRecordContent& drc, const std::string&
      contents)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/dnssecinfra.hh:79,1
    - Dst: getName
      Src: /src/pdns/pdns/recursordist/dnssecinfra.hh:79,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 77
    functionDepth: 0
    functionLinenumber: 77
    functionLinenumberEnd: 80
    functionName: DNSCryptoKeyEngine::convertToPEMFile
    functionSourceFile: /src/pdns/pdns/recursordist/dnssecinfra.hh
    functionUses: 1
    functionsReached:
    - getName
    - std::runtime_error
    linkageType: ''
    returnType: void
    signature: void convertToPEMFile(std::FILE& /* outputFile */) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::string::resize
      Src: /src/pdns/pdns/recursordist/dnssecinfra.hh:92,1
    - Dst: fmemopen
      Src: /src/pdns/pdns/recursordist/dnssecinfra.hh:93,1
    - Dst: std::string::data
      Src: /src/pdns/pdns/recursordist/dnssecinfra.hh:93,1
    - Dst: std::string::length
      Src: /src/pdns/pdns/recursordist/dnssecinfra.hh:93,1
    - Dst: DNSCryptoKeyEngine::convertToPEMFile
      Src: /src/pdns/pdns/recursordist/dnssecinfra.hh:94,1
    - Dst: std::fflush
      Src: /src/pdns/pdns/recursordist/dnssecinfra.hh:95,1
    - Dst: pdns::UniqueFilePtr::get
      Src: /src/pdns/pdns/recursordist/dnssecinfra.hh:95,1
    - Dst: std::string::resize
      Src: /src/pdns/pdns/recursordist/dnssecinfra.hh:96,1
    - Dst: std::ftell
      Src: /src/pdns/pdns/recursordist/dnssecinfra.hh:96,1
    - Dst: pdns::UniqueFilePtr::get
      Src: /src/pdns/pdns/recursordist/dnssecinfra.hh:96,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 87
    functionDepth: 1
    functionLinenumber: 87
    functionLinenumberEnd: 99
    functionName: DNSCryptoKeyEngine::convertToPEMString
    functionSourceFile: /src/pdns/pdns/recursordist/dnssecinfra.hh
    functionUses: 0
    functionsReached:
    - std::string::length
    - std::ftell
    - fmemopen
    - DNSCryptoKeyEngine::convertToPEMFile
    - std::fflush
    - std::string::data
    - std::string::resize
    - pdns::UniqueFilePtr::get
    linkageType: ''
    returnType: auto
    signature: auto convertToPEMString() const -> std::string
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/dnssecinfra.hh:105,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - ' msg'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 107
      start: 103
    functionDepth: 0
    functionLinenumber: 103
    functionLinenumberEnd: 107
    functionName: DNSCryptoKeyEngine::hash
    functionSourceFile: /src/pdns/pdns/recursordist/dnssecinfra.hh
    functionUses: 12
    functionsReached:
    - std::runtime_error
    linkageType: ''
    returnType: std::string
    signature: std::string hash(const std::string& msg) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 113
    functionDepth: 0
    functionLinenumber: 113
    functionLinenumberEnd: 116
    functionName: DNSCryptoKeyEngine::getAlgorithm
    functionSourceFile: /src/pdns/pdns/recursordist/dnssecinfra.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int getAlgorithm() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 124
      start: 121
    functionDepth: 0
    functionLinenumber: 121
    functionLinenumberEnd: 124
    functionName: DNSCryptoKeyEngine::checkKey
    functionSourceFile: /src/pdns/pdns/recursordist/dnssecinfra.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool checkKey(std::optional<std::reference_wrapper<std::vector<std::string>>>
      /* errorMessages */ = std::nullopt) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 192
      start: 188
    functionDepth: 0
    functionLinenumber: 188
    functionLinenumberEnd: 192
    functionName: '& getMakers()'
    functionSourceFile: /src/pdns/pdns/recursordist/dnssecinfra.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: makers_t
    signature: makers_t & getMakers()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 197
      start: 193
    functionDepth: 0
    functionLinenumber: 193
    functionLinenumberEnd: 197
    functionName: '& getAllMakers()'
    functionSourceFile: /src/pdns/pdns/recursordist/dnssecinfra.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: allmakers_t
    signature: allmakers_t & getAllMakers()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getDNSKEY
      Src: /src/pdns/pdns/recursordist/dnssecinfra.hh:210,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 211
      start: 208
    functionDepth: 0
    functionLinenumber: 208
    functionLinenumberEnd: 211
    functionName: getTag
    functionSourceFile: /src/pdns/pdns/recursordist/dnssecinfra.hh
    functionUses: 6
    functionsReached:
    - getDNSKEY
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t getTag() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 216
      start: 213
    functionDepth: 0
    functionLinenumber: 213
    functionLinenumberEnd: 216
    functionName: '& getKey() const'
    functionSourceFile: /src/pdns/pdns/recursordist/dnssecinfra.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::shared_ptr<DNSCryptoKeyEngine>
    signature: std::shared_ptr<DNSCryptoKeyEngine> & getKey() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getAlgorithm
      Src: /src/pdns/pdns/recursordist/dnssecinfra.hh:223,1
    - Dst: computeDNSKEY
      Src: /src/pdns/pdns/recursordist/dnssecinfra.hh:224,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - ' key'
    - flags
    argTypes:
    - std::shared_ptr<DNSCryptoKeyEngine>
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 225
      start: 219
    functionDepth: 0
    functionLinenumber: 219
    functionLinenumberEnd: 225
    functionName: setKey
    functionSourceFile: /src/pdns/pdns/recursordist/dnssecinfra.hh
    functionUses: 12
    functionsReached:
    - computeDNSKEY
    - getAlgorithm
    linkageType: ''
    returnType: void
    signature: void setKey(std::shared_ptr<DNSCryptoKeyEngine>& key, uint16_t flags,
      std::optional<uint8_t> algorithm = std::nullopt)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/dnssecinfra.hh:230,1
    - Dst: getAlgorithm
      Src: /src/pdns/pdns/recursordist/dnssecinfra.hh:232,1
    - Dst: computeDNSKEY
      Src: /src/pdns/pdns/recursordist/dnssecinfra.hh:233,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - ' key'
    - flags
    argTypes:
    - std::unique_ptr<DNSCryptoKeyEngine>
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 234
      start: 228
    functionDepth: 0
    functionLinenumber: 228
    functionLinenumberEnd: 234
    functionName: setKey
    functionSourceFile: /src/pdns/pdns/recursordist/dnssecinfra.hh
    functionUses: 12
    functionsReached:
    - computeDNSKEY
    - std::move
    - getAlgorithm
    linkageType: ''
    returnType: void
    signature: void setKey(std::unique_ptr<DNSCryptoKeyEngine>&& key, uint16_t flags,
      std::optional<uint8_t> algorithm = std::nullopt)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 241
      start: 238
    functionDepth: 0
    functionLinenumber: 238
    functionLinenumberEnd: 241
    functionName: getFlags
    functionSourceFile: /src/pdns/pdns/recursordist/dnssecinfra.hh
    functionUses: 11
    functionsReached: []
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t getFlags() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 246
      start: 243
    functionDepth: 0
    functionLinenumber: 243
    functionLinenumberEnd: 246
    functionName: getAlgorithm
    functionSourceFile: /src/pdns/pdns/recursordist/dnssecinfra.hh
    functionUses: 11
    functionsReached: []
    linkageType: ''
    returnType: uint8_t
    signature: uint8_t getAlgorithm() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: stringtok
      Src: /src/pdns/pdns/recursordist/dnssecinfra.hh:264,1
    - Dst: stringtok
      Src: /src/pdns/pdns/recursordist/dnssecinfra.hh:265,1
    - Dst: reverse
      Src: /src/pdns/pdns/recursordist/dnssecinfra.hh:267,1
    - Dst: std::vector::begin
      Src: /src/pdns/pdns/recursordist/dnssecinfra.hh:267,1
    - Dst: std::vector::end
      Src: /src/pdns/pdns/recursordist/dnssecinfra.hh:267,1
    - Dst: reverse
      Src: /src/pdns/pdns/recursordist/dnssecinfra.hh:268,1
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/dnssecinfra.hh:268,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/dnssecinfra.hh:268,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - ' a'
    - ' b'
    argTypes:
    - std::string
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 271
      start: 261
    functionDepth: 0
    functionLinenumber: 261
    functionLinenumberEnd: 271
    functionName: operator()(const std::string& a, const std::string& b)
    functionSourceFile: /src/pdns/pdns/recursordist/dnssecinfra.hh
    functionUses: 0
    functionsReached:
    - std::vector::end
    - stringtok
    - std::vector::begin
    - reverse
    - end
    - begin
    linkageType: ''
    returnType: bool
    signature: bool operator()(const std::string& a, const std::string& b)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: serialize
      Src: /src/pdns/pdns/recursordist/dnssecinfra.hh:276,1
    - Dst: serialize
      Src: /src/pdns/pdns/recursordist/dnssecinfra.hh:276,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' a'
    - ' b'
    argTypes:
    - shared_ptr<const DNSRecordContent>
    - shared_ptr<const DNSRecordContent>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 277
      start: 275
    functionDepth: 0
    functionLinenumber: 275
    functionLinenumberEnd: 277
    functionName: operator() (const shared_ptr<const DNSRecordContent>& a, const shared_ptr<const
      DNSRecordContent>& b) const
    functionSourceFile: /src/pdns/pdns/recursordist/dnssecinfra.hh
    functionUses: 0
    functionsReached:
    - serialize
    linkageType: ''
    returnType: bool
    signature: bool operator() (const shared_ptr<const DNSRecordContent>& a, const
      shared_ptr<const DNSRecordContent>& b) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/malloctrace.hh:40,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 40
    functionDepth: 0
    functionLinenumber: 40
    functionLinenumberEnd: 40
    functionName: MallocTracer::getAllocs
    functionSourceFile: /src/pdns/pdns/recursordist/malloctrace.hh
    functionUses: 0
    functionsReached:
    - std::string
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t getAllocs(const std::string& = std::string()) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/malloctrace.hh:41,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 41
    functionDepth: 0
    functionLinenumber: 41
    functionLinenumberEnd: 41
    functionName: MallocTracer::getAllocFlux
    functionSourceFile: /src/pdns/pdns/recursordist/malloctrace.hh
    functionUses: 0
    functionsReached:
    - std::string
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t getAllocFlux(const std::string& = std::string()) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/malloctrace.hh:42,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 42
    functionDepth: 0
    functionLinenumber: 42
    functionLinenumberEnd: 42
    functionName: MallocTracer::getTotAllocated
    functionSourceFile: /src/pdns/pdns/recursordist/malloctrace.hh
    functionUses: 0
    functionsReached:
    - std::string
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t getTotAllocated(const std::string& = std::string()) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/recursordist/malloctrace.hh:43,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 43
    functionName: MallocTracer::getNumOut
    functionSourceFile: /src/pdns/pdns/recursordist/malloctrace.hh
    functionUses: 0
    functionsReached:
    - size
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t getNumOut()
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<const char*>
      Src: /src/pdns/pdns/recursordist/misc.cc:78,1
    - Dst: TCPIOHandler::write
      Src: /src/pdns/pdns/recursordist/misc.cc:82,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/misc.cc:85,1
    - Dst: unixDie
      Src: /src/pdns/pdns/recursordist/misc.cc:87,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/misc.cc:90,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 3
    argNames:
    - fileDesc
    - buf
    - count
    argTypes:
    - int
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 76
    functionDepth: 0
    functionLinenumber: 76
    functionLinenumberEnd: 97
    functionName: writen2
    functionSourceFile: /src/pdns/pdns/recursordist/misc.cc
    functionUses: 20
    functionsReached:
    - TCPIOHandler::write
    - static_cast<const char*>
    - unixDie
    - std::runtime_error
    linkageType: ''
    returnType: size_t
    signature: size_t writen2(int fileDesc, const void *buf, size_t count)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: read
      Src: /src/pdns/pdns/recursordist/misc.cc:104,1
    - Dst: static_cast<char *>
      Src: /src/pdns/pdns/recursordist/misc.cc:104,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/recursordist/misc.cc:106,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/misc.cc:110,1
    - Dst: unixDie
      Src: /src/pdns/pdns/recursordist/misc.cc:112,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/recursordist/misc.cc:115,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 17
    argCount: 3
    argNames:
    - fileDesc
    - buffer
    - len
    argTypes:
    - int
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 99
    functionDepth: 0
    functionLinenumber: 99
    functionLinenumberEnd: 121
    functionName: readn2
    functionSourceFile: /src/pdns/pdns/recursordist/misc.cc
    functionUses: 7
    functionsReached:
    - static_cast<size_t>
    - read
    - std::runtime_error
    - unixDie
    - runtime_error
    - static_cast<char *>
    linkageType: ''
    returnType: size_t
    signature: size_t readn2(int fileDesc, void* buffer, size_t len)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: gettimeofday
      Src: /src/pdns/pdns/recursordist/misc.cc:129,1
    - Dst: read
      Src: /src/pdns/pdns/recursordist/misc.cc:133,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/recursordist/misc.cc:141,1
    - Dst: waitForData
      Src: /src/pdns/pdns/recursordist/misc.cc:146,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/recursordist/misc.cc:151,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/recursordist/misc.cc:153,1
    - Dst: unixDie
      Src: /src/pdns/pdns/recursordist/misc.cc:157,1
    - Dst: gettimeofday
      Src: /src/pdns/pdns/recursordist/misc.cc:163,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/recursordist/misc.cc:166,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 36
    argCount: 6
    argNames:
    - fd
    - buffer
    - len
    - ' idleTimeout'
    - ' totalTimeout'
    - allowIncomplete
    argTypes:
    - int
    - void*
    - size_t
    - struct timeval
    - struct timeval
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 175
      start: 123
    functionDepth: 0
    functionLinenumber: 123
    functionLinenumberEnd: 175
    functionName: readn2WithTimeout
    functionSourceFile: /src/pdns/pdns/recursordist/misc.cc
    functionUses: 7
    functionsReached:
    - read
    - unixDie
    - runtime_error
    - waitForData
    - gettimeofday
    linkageType: ''
    returnType: size_t
    signature: size_t readn2WithTimeout(int fd, void* buffer, size_t len, const struct
      timeval& idleTimeout, const struct timeval& totalTimeout, bool allowIncomplete)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: write
      Src: /src/pdns/pdns/recursordist/misc.cc:181,1
    - Dst: reinterpret_cast<const char *>
      Src: /src/pdns/pdns/recursordist/misc.cc:181,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/recursordist/misc.cc:187,1
    - Dst: waitForRWData
      Src: /src/pdns/pdns/recursordist/misc.cc:190,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/recursordist/misc.cc:195,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/recursordist/misc.cc:197,1
    - Dst: unixDie
      Src: /src/pdns/pdns/recursordist/misc.cc:201,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 21
    argCount: 4
    argNames:
    - fd
    - buffer
    - len
    - ' timeout'
    argTypes:
    - int
    - void*
    - size_t
    - struct timeval
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 208
      start: 177
    functionDepth: 0
    functionLinenumber: 177
    functionLinenumberEnd: 208
    functionName: writen2WithTimeout
    functionSourceFile: /src/pdns/pdns/recursordist/misc.cc
    functionUses: 5
    functionsReached:
    - unixDie
    - runtime_error
    - reinterpret_cast<const char *>
    - write
    - waitForRWData
    linkageType: ''
    returnType: size_t
    signature: size_t writen2WithTimeout(int fd, const void * buffer, size_t len,
      const struct timeval& timeout)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::string::resize
      Src: /src/pdns/pdns/recursordist/misc.cc:214,1
    - Dst: strerror_r
      Src: /src/pdns/pdns/recursordist/misc.cc:218,1
    - Dst: std::string::data
      Src: /src/pdns/pdns/recursordist/misc.cc:218,1
    - Dst: std::string::length
      Src: /src/pdns/pdns/recursordist/misc.cc:218,1
    - Dst: strerror_r
      Src: /src/pdns/pdns/recursordist/misc.cc:222,1
    - Dst: std::string::data
      Src: /src/pdns/pdns/recursordist/misc.cc:222,1
    - Dst: std::string::length
      Src: /src/pdns/pdns/recursordist/misc.cc:222,1
    - Dst: std::string::c_str
      Src: /src/pdns/pdns/recursordist/misc.cc:223,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - errnum
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 234
      start: 210
    functionDepth: 1
    functionLinenumber: 210
    functionLinenumberEnd: 234
    functionName: pdns::getMessageFromErrno
    functionSourceFile: /src/pdns/pdns/recursordist/misc.cc
    functionUses: 4
    functionsReached:
    - std::string::length
    - std::string::c_str
    - std::string::data
    - std::string::resize
    - strerror_r
    linkageType: ''
    returnType: auto
    signature: auto pdns::getMessageFromErrno(const int errnum) -> std::string
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: ERR_get_error_all
      Src: /src/pdns/pdns/recursordist/misc.cc:245,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/misc.cc:246,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/misc.cc:246,1
    - Dst: ERR_lib_error_string
      Src: /src/pdns/pdns/recursordist/misc.cc:248,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/misc.cc:250,1
    - Dst: ERR_reason_error_string
      Src: /src/pdns/pdns/recursordist/misc.cc:253,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/misc.cc:255,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/misc.cc:259,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/misc.cc:262,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/misc.cc:262,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/misc.cc:265,1
    - Dst: ERR_get_error
      Src: /src/pdns/pdns/recursordist/misc.cc:269,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/misc.cc:270,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/misc.cc:270,1
    - Dst: ERR_lib_error_string
      Src: /src/pdns/pdns/recursordist/misc.cc:272,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/misc.cc:274,1
    - Dst: ERR_func_error_string
      Src: /src/pdns/pdns/recursordist/misc.cc:277,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/misc.cc:279,1
    - Dst: ERR_reason_error_string
      Src: /src/pdns/pdns/recursordist/misc.cc:282,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/misc.cc:284,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 32
    argCount: 1
    argNames:
    - ' errorMessage'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 289
      start: 237
    functionDepth: 0
    functionLinenumber: 237
    functionLinenumberEnd: 289
    functionName: pdns::OpenSSL::error(const std::string& errorMessage) -> std::runtime_error
    functionSourceFile: /src/pdns/pdns/recursordist/misc.cc
    functionUses: 0
    functionsReached:
    - ERR_get_error
    - ERR_get_error_all
    - std::to_string
    - ERR_reason_error_string
    - ERR_lib_error_string
    - ERR_func_error_string
    - std::string
    linkageType: ''
    returnType: auto
    signature: auto pdns::OpenSSL::error(const std::string& errorMessage) -> std::runtime_error
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Logging::Logger::error
      Src: /src/pdns/pdns/recursordist/misc.cc:293,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' componentName'
    - ' errorMessage'
    argTypes:
    - std::string
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 294
      start: 291
    functionDepth: 0
    functionLinenumber: 291
    functionLinenumberEnd: 294
    functionName: pdns::OpenSSL::error(const std::string& componentName, const std::string&
      errorMessage) -> std::runtime_error
    functionSourceFile: /src/pdns/pdns/recursordist/misc.cc
    functionUses: 0
    functionsReached:
    - Logging::Logger::error
    linkageType: ''
    returnType: auto
    signature: auto pdns::OpenSSL::error(const std::string& componentName, const std::string&
      errorMessage) -> std::runtime_error
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: time
      Src: /src/pdns/pdns/recursordist/misc.cc:299,1
    - Dst: localtime_r
      Src: /src/pdns/pdns/recursordist/misc.cc:301,1
    - Dst: strftime
      Src: /src/pdns/pdns/recursordist/misc.cc:304,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/recursordist/misc.cc:304,1
    - Dst: std::array::size
      Src: /src/pdns/pdns/recursordist/misc.cc:304,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/recursordist/misc.cc:308,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 309
      start: 297
    functionDepth: 0
    functionLinenumber: 297
    functionLinenumberEnd: 309
    functionName: nowTime
    functionSourceFile: /src/pdns/pdns/recursordist/misc.cc
    functionUses: 2
    functionsReached:
    - localtime_r
    - time
    - strftime
    - std::array::data
    - std::array::size
    linkageType: ''
    returnType: string
    signature: string nowTime()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: waitForRWData
      Src: /src/pdns/pdns/recursordist/misc.cc:314,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - fileDesc
    - seconds
    - mseconds
    argTypes:
    - int
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 315
      start: 312
    functionDepth: 0
    functionLinenumber: 312
    functionLinenumberEnd: 315
    functionName: waitForData
    functionSourceFile: /src/pdns/pdns/recursordist/misc.cc
    functionUses: 31
    functionsReached:
    - waitForRWData
    linkageType: ''
    returnType: int
    signature: int waitForData(int fileDesc, int seconds, int mseconds)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: waitForRWData
      Src: /src/pdns/pdns/recursordist/misc.cc:319,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - fileDesc
    - timeout
    argTypes:
    - int
    - struct timeval
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 320
      start: 317
    functionDepth: 0
    functionLinenumber: 317
    functionLinenumberEnd: 320
    functionName: waitForData
    functionSourceFile: /src/pdns/pdns/recursordist/misc.cc
    functionUses: 31
    functionsReached:
    - waitForRWData
    linkageType: ''
    returnType: int
    signature: int waitForData(int fileDesc, struct timeval timeout)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/pdns/pdns/recursordist/misc.cc:325,1
    - Dst: poll
      Src: /src/pdns/pdns/recursordist/misc.cc:335,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 6
    argNames:
    - fileDesc
    - waitForRead
    - seconds
    - mseconds
    - error
    - disconnected
    argTypes:
    - int
    - bool
    - int
    - int
    - bool*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 346
      start: 322
    functionDepth: 0
    functionLinenumber: 322
    functionLinenumberEnd: 346
    functionName: waitForRWData
    functionSourceFile: /src/pdns/pdns/recursordist/misc.cc
    functionUses: 30
    functionsReached:
    - memset
    - poll
    linkageType: ''
    returnType: int
    signature: int waitForRWData(int fileDesc, bool waitForRead, int seconds, int
      mseconds, bool* error, bool* disconnected)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: waitForRWData
      Src: /src/pdns/pdns/recursordist/misc.cc:350,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/recursordist/misc.cc:350,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/recursordist/misc.cc:350,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - fileDesc
    - waitForRead
    - timeout
    - error
    - disconnected
    argTypes:
    - int
    - bool
    - struct timeval
    - bool*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 351
      start: 348
    functionDepth: 0
    functionLinenumber: 348
    functionLinenumberEnd: 351
    functionName: waitForRWData
    functionSourceFile: /src/pdns/pdns/recursordist/misc.cc
    functionUses: 31
    functionsReached:
    - waitForRWData
    - static_cast<int>
    linkageType: ''
    returnType: int
    signature: int waitForRWData(int fileDesc, bool waitForRead, struct timeval timeout,
      bool* error, bool* disconnected)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: set::count
      Src: /src/pdns/pdns/recursordist/misc.cc:357,1
    - Dst: set::insert
      Src: /src/pdns/pdns/recursordist/misc.cc:358,1
    - Dst: set::size
      Src: /src/pdns/pdns/recursordist/misc.cc:362,1
    - Dst: memset
      Src: /src/pdns/pdns/recursordist/misc.cc:363,1
    - Dst: std::vector::data
      Src: /src/pdns/pdns/recursordist/misc.cc:363,1
    - Dst: set::size
      Src: /src/pdns/pdns/recursordist/misc.cc:363,1
    - Dst: poll
      Src: /src/pdns/pdns/recursordist/misc.cc:373,1
    - Dst: std::vector::data
      Src: /src/pdns/pdns/recursordist/misc.cc:373,1
    - Dst: set::size
      Src: /src/pdns/pdns/recursordist/misc.cc:373,1
    - Dst: poll
      Src: /src/pdns/pdns/recursordist/misc.cc:375,1
    - Dst: std::vector::data
      Src: /src/pdns/pdns/recursordist/misc.cc:375,1
    - Dst: set::size
      Src: /src/pdns/pdns/recursordist/misc.cc:375,1
    - Dst: set::insert
      Src: /src/pdns/pdns/recursordist/misc.cc:382,1
    - Dst: set::begin
      Src: /src/pdns/pdns/recursordist/misc.cc:385,1
    - Dst: advance
      Src: /src/pdns/pdns/recursordist/misc.cc:386,1
    - Dst: dns_random
      Src: /src/pdns/pdns/recursordist/misc.cc:386,1
    - Dst: set::size
      Src: /src/pdns/pdns/recursordist/misc.cc:386,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 22
    argCount: 4
    argNames:
    - ' fds'
    - seconds
    - mseconds
    - fdOut
    argTypes:
    - set<int>
    - int
    - int
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 389
      start: 354
    functionDepth: 2
    functionLinenumber: 354
    functionLinenumberEnd: 389
    functionName: waitForMultiData
    functionSourceFile: /src/pdns/pdns/recursordist/misc.cc
    functionUses: 2
    functionsReached:
    - set::insert
    - advance
    - set::size
    - dns_random
    - memset
    - set::begin
    - set::count
    - poll
    - std::vector::data
    linkageType: ''
    returnType: int
    signature: int waitForMultiData(const set<int>& fds, const int seconds, const
      int mseconds, int* fdOut)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: std::setprecision
      Src: /src/pdns/pdns/recursordist/misc.cc:397,1
    - Dst: std::setprecision
      Src: /src/pdns/pdns/recursordist/misc.cc:399,1
    - Dst: std::setprecision
      Src: /src/pdns/pdns/recursordist/misc.cc:401,1
    - Dst: std::setprecision
      Src: /src/pdns/pdns/recursordist/misc.cc:403,1
    - Dst: ostringstream::str
      Src: /src/pdns/pdns/recursordist/misc.cc:405,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 1
    argNames:
    - passed
    argTypes:
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 406
      start: 391
    functionDepth: 0
    functionLinenumber: 391
    functionLinenumberEnd: 406
    functionName: humanDuration
    functionSourceFile: /src/pdns/pdns/recursordist/misc.cc
    functionUses: 2
    functionsReached:
    - std::setprecision
    - ostringstream::str
    linkageType: ''
    returnType: string
    signature: string humanDuration(time_t passed)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: string::size
      Src: /src/pdns/pdns/recursordist/misc.cc:410,1
    - Dst: string::size
      Src: /src/pdns/pdns/recursordist/misc.cc:413,1
    - Dst: string::substr
      Src: /src/pdns/pdns/recursordist/misc.cc:421,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - item
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 422
      start: 408
    functionDepth: 0
    functionLinenumber: 408
    functionLinenumberEnd: 422
    functionName: unquotify
    functionSourceFile: /src/pdns/pdns/recursordist/misc.cc
    functionUses: 6
    functionsReached:
    - string::substr
    - string::size
    linkageType: ''
    returnType: string
    signature: string unquotify(const string &item)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: string::find_first_of
      Src: /src/pdns/pdns/recursordist/misc.cc:426,1
    - Dst: string::resize
      Src: /src/pdns/pdns/recursordist/misc.cc:428,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - line
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 430
      start: 424
    functionDepth: 1
    functionLinenumber: 424
    functionLinenumberEnd: 430
    functionName: stripLine
    functionSourceFile: /src/pdns/pdns/recursordist/misc.cc
    functionUses: 0
    functionsReached:
    - string::resize
    - string::find_first_of
    linkageType: ''
    returnType: void
    signature: void stripLine(string &line)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: string::append
      Src: /src/pdns/pdns/recursordist/misc.cc:436,1
    - Dst: string::append
      Src: /src/pdns/pdns/recursordist/misc.cc:437,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - text
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 439
      start: 432
    functionDepth: 0
    functionLinenumber: 432
    functionLinenumberEnd: 439
    functionName: urlEncode
    functionSourceFile: /src/pdns/pdns/recursordist/misc.cc
    functionUses: 0
    functionsReached:
    - string::append
    linkageType: ''
    returnType: string
    signature: string urlEncode(const string &text)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sysconf
      Src: /src/pdns/pdns/recursordist/misc.cc:448,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 456
      start: 441
    functionDepth: 0
    functionLinenumber: 441
    functionLinenumberEnd: 456
    functionName: getMaxHostNameSize
    functionSourceFile: /src/pdns/pdns/recursordist/misc.cc
    functionUses: 2
    functionsReached:
    - sysconf
    linkageType: ''
    returnType: size_t
    signature: size_t getMaxHostNameSize()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: getMaxHostNameSize
      Src: /src/pdns/pdns/recursordist/misc.cc:460,1
    - Dst: std::string::resize
      Src: /src/pdns/pdns/recursordist/misc.cc:462,1
    - Dst: gethostname
      Src: /src/pdns/pdns/recursordist/misc.cc:464,1
    - Dst: std::string::data
      Src: /src/pdns/pdns/recursordist/misc.cc:464,1
    - Dst: std::string::resize
      Src: /src/pdns/pdns/recursordist/misc.cc:468,1
    - Dst: strlen
      Src: /src/pdns/pdns/recursordist/misc.cc:468,1
    - Dst: std::string::c_str
      Src: /src/pdns/pdns/recursordist/misc.cc:468,1
    - Dst: std::make_optional
      Src: /src/pdns/pdns/recursordist/misc.cc:469,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 470
      start: 458
    functionDepth: 1
    functionLinenumber: 458
    functionLinenumberEnd: 470
    functionName: getHostname
    functionSourceFile: /src/pdns/pdns/recursordist/misc.cc
    functionUses: 3
    functionsReached:
    - std::string::c_str
    - getMaxHostNameSize
    - std::string::data
    - std::string::resize
    - strlen
    - std::make_optional
    - gethostname
    linkageType: ''
    returnType: std::optional<string>
    signature: std::optional<string> getHostname()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: getHostname
      Src: /src/pdns/pdns/recursordist/misc.cc:474,1
    - Dst: auto::has_value
      Src: /src/pdns/pdns/recursordist/misc.cc:475,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/misc.cc:476,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/misc.cc:476,1
    - Dst: std::replace
      Src: /src/pdns/pdns/recursordist/misc.cc:479,1
    - Dst: auto::begin
      Src: /src/pdns/pdns/recursordist/misc.cc:479,1
    - Dst: auto::end
      Src: /src/pdns/pdns/recursordist/misc.cc:479,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 481
      start: 472
    functionDepth: 0
    functionLinenumber: 472
    functionLinenumberEnd: 481
    functionName: getCarbonHostName
    functionSourceFile: /src/pdns/pdns/recursordist/misc.cc
    functionUses: 2
    functionsReached:
    - std::runtime_error
    - auto::has_value
    - stringerror
    - auto::begin
    - auto::end
    - getHostname
    - std::replace
    linkageType: ''
    returnType: std::string
    signature: std::string getCarbonHostName()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: string::append
      Src: /src/pdns/pdns/recursordist/misc.cc:499,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/misc.cc:501,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 1
    argNames:
    - str
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 502
      start: 483
    functionDepth: 0
    functionLinenumber: 483
    functionLinenumberEnd: 502
    functionName: cleanSlashes
    functionSourceFile: /src/pdns/pdns/recursordist/misc.cc
    functionUses: 9
    functionsReached:
    - string::append
    - std::move
    linkageType: ''
    returnType: void
    signature: void cleanSlashes(string &str)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: string::empty
      Src: /src/pdns/pdns/recursordist/misc.cc:506,1
    - Dst: inet_aton
      Src: /src/pdns/pdns/recursordist/misc.cc:512,1
    - Dst: string::c_str
      Src: /src/pdns/pdns/recursordist/misc.cc:512,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - str
    - ip
    argTypes:
    - string
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 517
      start: 504
    functionDepth: 0
    functionLinenumber: 504
    functionLinenumberEnd: 517
    functionName: IpToU32
    functionSourceFile: /src/pdns/pdns/recursordist/misc.cc
    functionUses: 0
    functionsReached:
    - string::c_str
    - inet_aton
    - string::empty
    linkageType: ''
    returnType: bool
    signature: bool IpToU32(const string &str, uint32_t *ip)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/pdns/pdns/recursordist/misc.cc:522,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/misc.cc:527,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - val
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 528
      start: 519
    functionDepth: 0
    functionLinenumber: 519
    functionLinenumberEnd: 528
    functionName: U32ToIP
    functionSourceFile: /src/pdns/pdns/recursordist/misc.cc
    functionUses: 0
    functionsReached:
    - string
    - snprintf
    linkageType: ''
    returnType: string
    signature: string U32ToIP(uint32_t val)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: string::reserve
      Src: /src/pdns/pdns/recursordist/misc.cc:535,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/recursordist/misc.cc:535,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/misc.cc:535,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/misc.cc:535,1
    - Dst: snprintf
      Src: /src/pdns/pdns/recursordist/misc.cc:538,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/recursordist/misc.cc:538,1
    - Dst: std::array::size
      Src: /src/pdns/pdns/recursordist/misc.cc:538,1
    - Dst: static_cast<unsigned char>
      Src: /src/pdns/pdns/recursordist/misc.cc:538,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/recursordist/misc.cc:539,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - ' str'
    - ' sep'
    argTypes:
    - string
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 543
      start: 531
    functionDepth: 0
    functionLinenumber: 531
    functionLinenumberEnd: 543
    functionName: makeHexDump
    functionSourceFile: /src/pdns/pdns/recursordist/misc.cc
    functionUses: 40
    functionsReached:
    - static_cast<size_t>
    - string::reserve
    - snprintf
    - size
    - static_cast<unsigned char>
    - std::array::data
    - std::array::size
    linkageType: ''
    returnType: string
    signature: string makeHexDump(const string& str, const string& sep)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: string::size
      Src: /src/pdns/pdns/recursordist/misc.cc:546,1
    - Dst: std::range_error
      Src: /src/pdns/pdns/recursordist/misc.cc:547,1
    - Dst: string::reserve
      Src: /src/pdns/pdns/recursordist/misc.cc:550,1
    - Dst: string::size
      Src: /src/pdns/pdns/recursordist/misc.cc:550,1
    - Dst: string::size
      Src: /src/pdns/pdns/recursordist/misc.cc:552,1
    - Dst: string::substr
      Src: /src/pdns/pdns/recursordist/misc.cc:553,1
    - Dst: sscanf
      Src: /src/pdns/pdns/recursordist/misc.cc:555,1
    - Dst: auto::c_str
      Src: /src/pdns/pdns/recursordist/misc.cc:555,1
    - Dst: std::range_error
      Src: /src/pdns/pdns/recursordist/misc.cc:556,1
    - Dst: string::push_back
      Src: /src/pdns/pdns/recursordist/misc.cc:558,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/recursordist/misc.cc:558,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 1
    argNames:
    - in
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 562
      start: 545
    functionDepth: 0
    functionLinenumber: 545
    functionLinenumberEnd: 562
    functionName: makeBytesFromHex
    functionSourceFile: /src/pdns/pdns/recursordist/misc.cc
    functionUses: 4
    functionsReached:
    - string::reserve
    - string::size
    - sscanf
    - auto::c_str
    - string::push_back
    - static_cast<uint8_t>
    - string::substr
    - std::range_error
    linkageType: ''
    returnType: string
    signature: string makeBytesFromHex(const string &in)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - ' tv'
    argTypes:
    - struct timeval
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 574
      start: 564
    functionDepth: 0
    functionLinenumber: 564
    functionLinenumberEnd: 574
    functionName: normalizeTV
    functionSourceFile: /src/pdns/pdns/recursordist/misc.cc
    functionUses: 12
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void normalizeTV(struct timeval& tv)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: normalizeTV
      Src: /src/pdns/pdns/recursordist/misc.cc:581,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - ' lhs'
    - ' rhs'
    argTypes:
    - struct timeval
    - struct timeval
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 583
      start: 576
    functionDepth: 0
    functionLinenumber: 576
    functionLinenumberEnd: 583
    functionName: operator+(const struct timeval& lhs, const struct timeval& rhs)
    functionSourceFile: /src/pdns/pdns/recursordist/misc.cc
    functionUses: 0
    functionsReached:
    - normalizeTV
    linkageType: ''
    returnType: struct timeval
    signature: struct timeval operator+(const struct timeval& lhs, const struct timeval&
      rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: normalizeTV
      Src: /src/pdns/pdns/recursordist/misc.cc:590,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - ' lhs'
    - ' rhs'
    argTypes:
    - struct timeval
    - struct timeval
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 592
      start: 585
    functionDepth: 0
    functionLinenumber: 585
    functionLinenumberEnd: 592
    functionName: operator-(const struct timeval& lhs, const struct timeval& rhs)
    functionSourceFile: /src/pdns/pdns/recursordist/misc.cc
    functionUses: 0
    functionsReached:
    - normalizeTV
    linkageType: ''
    returnType: struct timeval
    signature: struct timeval operator-(const struct timeval& lhs, const struct timeval&
      rhs)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: find
      Src: /src/pdns/pdns/recursordist/misc.cc:597,1
    - Dst: substr
      Src: /src/pdns/pdns/recursordist/misc.cc:601,1
    - Dst: substr
      Src: /src/pdns/pdns/recursordist/misc.cc:602,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - ' inp'
    - sepa
    argTypes:
    - string
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 605
      start: 594
    functionDepth: 0
    functionLinenumber: 594
    functionLinenumberEnd: 605
    functionName: splitField
    functionSourceFile: /src/pdns/pdns/recursordist/misc.cc
    functionUses: 17
    functionsReached:
    - substr
    - find
    linkageType: ''
    returnType: pair<string, string>
    signature: pair<string, string> splitField(const string& inp, char sepa)
  - BBCount: 10
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 21
    argCount: 1
    argNames:
    - facility
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 629
      start: 607
    functionDepth: 0
    functionLinenumber: 607
    functionLinenumberEnd: 629
    functionName: logFacilityToLOG
    functionSourceFile: /src/pdns/pdns/recursordist/misc.cc
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int logFacilityToLOG(unsigned int facility)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: toLowerInPlace
      Src: /src/pdns/pdns/recursordist/misc.cc:678,1
    - Dst: std::unordered_map::find
      Src: /src/pdns/pdns/recursordist/misc.cc:679,1
    - Dst: std::unordered_map::end
      Src: /src/pdns/pdns/recursordist/misc.cc:680,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - facilityStr
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 685
      start: 631
    functionDepth: 0
    functionLinenumber: 631
    functionLinenumberEnd: 685
    functionName: logFacilityFromString
    functionSourceFile: /src/pdns/pdns/recursordist/misc.cc
    functionUses: 3
    functionsReached:
    - toLowerInPlace
    - std::unordered_map::end
    - std::unordered_map::find
    linkageType: ''
    returnType: std::optional<int>
    signature: std::optional<int> logFacilityFromString(std::string facilityStr)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/misc.cc:689,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/misc.cc:692,1
    - Dst: substr
      Src: /src/pdns/pdns/recursordist/misc.cc:695,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/misc.cc:695,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - ' dom'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 696
      start: 687
    functionDepth: 0
    functionLinenumber: 687
    functionLinenumberEnd: 696
    functionName: stripDot
    functionSourceFile: /src/pdns/pdns/recursordist/misc.cc
    functionUses: 5
    functionsReached:
    - empty
    - substr
    - size
    linkageType: ''
    returnType: string
    signature: string stripDot(const string& dom)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/misc.cc:700,1
    - Dst: find
      Src: /src/pdns/pdns/recursordist/misc.cc:708,1
    - Dst: string::assign
      Src: /src/pdns/pdns/recursordist/misc.cc:713,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/misc.cc:713,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/misc.cc:714,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/misc.cc:715,1
    - Dst: pdns::checked_stoi<uint16_t>
      Src: /src/pdns/pdns/recursordist/misc.cc:720,1
    - Dst: substr
      Src: /src/pdns/pdns/recursordist/misc.cc:720,1
    - Dst: std::make_optional
      Src: /src/pdns/pdns/recursordist/misc.cc:721,1
    - Dst: inet_pton
      Src: /src/pdns/pdns/recursordist/misc.cc:732,1
    - Dst: string::c_str
      Src: /src/pdns/pdns/recursordist/misc.cc:732,1
    - Dst: std::memset
      Src: /src/pdns/pdns/recursordist/misc.cc:734,1
    - Dst: getaddrinfo
      Src: /src/pdns/pdns/recursordist/misc.cc:740,1
    - Dst: string::c_str
      Src: /src/pdns/pdns/recursordist/misc.cc:740,1
    - Dst: memcpy
      Src: /src/pdns/pdns/recursordist/misc.cc:744,1
    - Dst: freeaddrinfo
      Src: /src/pdns/pdns/recursordist/misc.cc:745,1
    - Dst: std::optional::has_value
      Src: /src/pdns/pdns/recursordist/misc.cc:748,1
    - Dst: htons
      Src: /src/pdns/pdns/recursordist/misc.cc:749,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 36
    argCount: 2
    argNames:
    - ' addr'
    - ret
    argTypes:
    - std::string
    - struct sockaddr_in6*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 753
      start: 698
    functionDepth: 1
    functionLinenumber: 698
    functionLinenumberEnd: 753
    functionName: makeIPv6sockaddr
    functionSourceFile: /src/pdns/pdns/recursordist/misc.cc
    functionUses: 6
    functionsReached:
    - inet_pton
    - string::c_str
    - string::assign
    - memcpy
    - std::memset
    - c_str
    - freeaddrinfo
    - getaddrinfo
    - size
    - pdns::checked_stoi<uint16_t>
    - substr
    - std::optional::has_value
    - empty
    - std::make_optional
    - find
    - htons
    linkageType: ''
    returnType: int
    signature: int makeIPv6sockaddr(const std::string& addr, struct sockaddr_in6*
      ret)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/misc.cc:757,1
    - Dst: find
      Src: /src/pdns/pdns/recursordist/misc.cc:762,1
    - Dst: inet_aton
      Src: /src/pdns/pdns/recursordist/misc.cc:764,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/misc.cc:764,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/misc.cc:770,1
    - Dst: const_cast<char*>
      Src: /src/pdns/pdns/recursordist/misc.cc:773,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/misc.cc:773,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/misc.cc:773,1
    - Dst: strtol
      Src: /src/pdns/pdns/recursordist/misc.cc:774,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/misc.cc:774,1
    - Dst: htons
      Src: /src/pdns/pdns/recursordist/misc.cc:781,1
    - Dst: inet_aton
      Src: /src/pdns/pdns/recursordist/misc.cc:782,1
    - Dst: substr
      Src: /src/pdns/pdns/recursordist/misc.cc:782,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 23
    argCount: 2
    argNames:
    - ' str'
    - ret
    argTypes:
    - std::string
    - struct sockaddr_in*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 787
      start: 755
    functionDepth: 0
    functionLinenumber: 755
    functionLinenumberEnd: 787
    functionName: makeIPv4sockaddr
    functionSourceFile: /src/pdns/pdns/recursordist/misc.cc
    functionUses: 4
    functionsReached:
    - strtol
    - const_cast<char*>
    - c_str
    - size
    - substr
    - inet_aton
    - empty
    - find
    - htons
    linkageType: ''
    returnType: int
    signature: int makeIPv4sockaddr(const std::string& str, struct sockaddr_in* ret)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/misc.cc:791,1
    - Dst: memset
      Src: /src/pdns/pdns/recursordist/misc.cc:794,1
    - Dst: length
      Src: /src/pdns/pdns/recursordist/misc.cc:796,1
    - Dst: copy
      Src: /src/pdns/pdns/recursordist/misc.cc:799,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - ' path'
    - ret
    argTypes:
    - std::string
    - struct sockaddr_un*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 801
      start: 789
    functionDepth: 0
    functionLinenumber: 789
    functionLinenumberEnd: 801
    functionName: makeUNsockaddr
    functionSourceFile: /src/pdns/pdns/recursordist/misc.cc
    functionUses: 11
    functionsReached:
    - empty
    - memset
    - copy
    - length
    linkageType: ''
    returnType: int
    signature: int makeUNsockaddr(const std::string& path, struct sockaddr_un* ret)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: clear
      Src: /src/pdns/pdns/recursordist/misc.cc:807,1
    - Dst: fgets
      Src: /src/pdns/pdns/recursordist/misc.cc:810,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/misc.cc:811,1
    - Dst: append
      Src: /src/pdns/pdns/recursordist/misc.cc:813,1
    - Dst: strchr
      Src: /src/pdns/pdns/recursordist/misc.cc:814,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - fp
    - ' line'
    argTypes:
    - FILE*
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 816
      start: 804
    functionDepth: 1
    functionLinenumber: 804
    functionLinenumberEnd: 816
    functionName: stringfgets
    functionSourceFile: /src/pdns/pdns/recursordist/misc.cc
    functionUses: 8
    functionsReached:
    - append
    - strchr
    - empty
    - fgets
    - clear
    linkageType: ''
    returnType: bool
    signature: bool stringfgets(FILE* fp, std::string& line)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::string*::clear
      Src: /src/pdns/pdns/recursordist/misc.cc:820,1
    - Dst: pdns::UniqueFilePtr
      Src: /src/pdns/pdns/recursordist/misc.cc:821,1
    - Dst: fopen
      Src: /src/pdns/pdns/recursordist/misc.cc:821,1
    - Dst: stringfgets
      Src: /src/pdns/pdns/recursordist/misc.cc:825,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/misc.cc:825,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - fname
    - line
    argTypes:
    - char*
    - std::string*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 826
      start: 818
    functionDepth: 1
    functionLinenumber: 818
    functionLinenumberEnd: 826
    functionName: readFileIfThere
    functionSourceFile: /src/pdns/pdns/recursordist/misc.cc
    functionUses: 3
    functionsReached:
    - auto::get
    - stringfgets
    - fopen
    - std::string*::clear
    - pdns::UniqueFilePtr
    linkageType: ''
    returnType: bool
    signature: bool readFileIfThere(const char* fname, std::string* line)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: regex_t::regex_t
      Src: /src/pdns/pdns/recursordist/misc.cc:829,1
    - Dst: regcomp
      Src: /src/pdns/pdns/recursordist/misc.cc:831,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/misc.cc:831,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/misc.cc:831,1
    - Dst: regerror
      Src: /src/pdns/pdns/recursordist/misc.cc:833,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/misc.cc:833,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/recursordist/misc.cc:833,1
    - Dst: std::array::size
      Src: /src/pdns/pdns/recursordist/misc.cc:833,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/recursordist/misc.cc:834,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/recursordist/misc.cc:834,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/recursordist/misc.cc:836,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 1
    argNames:
    - ' expr'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 838
      start: 828
    functionDepth: 0
    functionLinenumber: 828
    functionLinenumberEnd: 838
    functionName: Regex::Regex
    functionSourceFile: /src/pdns/pdns/recursordist/misc.cc
    functionUses: 0
    functionsReached:
    - regex_t::regex_t
    - PDNSException
    - regcomp
    - regerror
    - get
    - c_str
    - std::array::data
    - std::array::size
    linkageType: ''
    returnType: void
    signature: void Regex::Regex(const string& expr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: regexec
      Src: /src/pdns/pdns/recursordist/misc.cc:843,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/misc.cc:843,1
    - Dst: string::c_str
      Src: /src/pdns/pdns/recursordist/misc.cc:843,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - line
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 844
      start: 841
    functionDepth: 0
    functionLinenumber: 841
    functionLinenumberEnd: 844
    functionName: Regex::match
    functionSourceFile: /src/pdns/pdns/recursordist/misc.cc
    functionUses: 7
    functionsReached:
    - string::c_str
    - regexec
    - get
    linkageType: ''
    returnType: bool
    signature: bool Regex::match(const string &line) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Regex::match
      Src: /src/pdns/pdns/recursordist/misc.cc:848,1
    - Dst: toStringNoDot
      Src: /src/pdns/pdns/recursordist/misc.cc:848,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' name'
    argTypes:
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 849
      start: 846
    functionDepth: 0
    functionLinenumber: 846
    functionLinenumberEnd: 849
    functionName: Regex::match
    functionSourceFile: /src/pdns/pdns/recursordist/misc.cc
    functionUses: 8
    functionsReached:
    - Regex::match
    - toStringNoDot
    linkageType: ''
    returnType: bool
    signature: bool Regex::match(const DNSName& name) const
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: CMSG_SPACE
      Src: /src/pdns/pdns/recursordist/misc.cc:865,1
    - Dst: CMSG_SPACE
      Src: /src/pdns/pdns/recursordist/misc.cc:867,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/misc.cc:868,1
    - Dst: CMSG_SPACE
      Src: /src/pdns/pdns/recursordist/misc.cc:871,1
    - Dst: CMSG_FIRSTHDR
      Src: /src/pdns/pdns/recursordist/misc.cc:873,1
    - Dst: CMSG_LEN
      Src: /src/pdns/pdns/recursordist/misc.cc:876,1
    - Dst: CMSG_DATA
      Src: /src/pdns/pdns/recursordist/misc.cc:878,1
    - Dst: memset
      Src: /src/pdns/pdns/recursordist/misc.cc:880,1
    - Dst: CMSG_SPACE
      Src: /src/pdns/pdns/recursordist/misc.cc:880,1
    - Dst: CMSG_SPACE
      Src: /src/pdns/pdns/recursordist/misc.cc:891,1
    - Dst: CMSG_SPACE
      Src: /src/pdns/pdns/recursordist/misc.cc:893,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/misc.cc:894,1
    - Dst: CMSG_SPACE
      Src: /src/pdns/pdns/recursordist/misc.cc:897,1
    - Dst: CMSG_FIRSTHDR
      Src: /src/pdns/pdns/recursordist/misc.cc:899,1
    - Dst: CMSG_LEN
      Src: /src/pdns/pdns/recursordist/misc.cc:902,1
    - Dst: CMSG_DATA
      Src: /src/pdns/pdns/recursordist/misc.cc:904,1
    - Dst: memset
      Src: /src/pdns/pdns/recursordist/misc.cc:906,1
    - Dst: CMSG_SPACE
      Src: /src/pdns/pdns/recursordist/misc.cc:906,1
    - Dst: CMSG_SPACE
      Src: /src/pdns/pdns/recursordist/misc.cc:914,1
    - Dst: CMSG_SPACE
      Src: /src/pdns/pdns/recursordist/misc.cc:916,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/misc.cc:917,1
    - Dst: CMSG_SPACE
      Src: /src/pdns/pdns/recursordist/misc.cc:920,1
    - Dst: CMSG_FIRSTHDR
      Src: /src/pdns/pdns/recursordist/misc.cc:922,1
    - Dst: CMSG_LEN
      Src: /src/pdns/pdns/recursordist/misc.cc:925,1
    - Dst: CMSG_DATA
      Src: /src/pdns/pdns/recursordist/misc.cc:928,1
    - Dst: memset
      Src: /src/pdns/pdns/recursordist/misc.cc:929,1
    - Dst: CMSG_SPACE
      Src: /src/pdns/pdns/recursordist/misc.cc:929,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 42
    argCount: 4
    argNames:
    - msgh
    - cmsgbuf
    - source
    - itfIndex
    argTypes:
    - struct msghdr*
    - cmsgbuf_aligned*
    - ComboAddress*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 933
      start: 855
    functionDepth: 0
    functionLinenumber: 855
    functionLinenumberEnd: 933
    functionName: addCMsgSrcAddr
    functionSourceFile: /src/pdns/pdns/recursordist/misc.cc
    functionUses: 6
    functionsReached:
    - CMSG_FIRSTHDR
    - std::runtime_error
    - CMSG_DATA
    - memset
    - CMSG_SPACE
    - CMSG_LEN
    linkageType: ''
    returnType: void
    signature: void addCMsgSrcAddr(struct msghdr* msgh, cmsgbuf_aligned* cmsgbuf,
      const ComboAddress* source, int itfIndex)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: getrlimit
      Src: /src/pdns/pdns/recursordist/misc.cc:938,1
    - Dst: unixDie
      Src: /src/pdns/pdns/recursordist/misc.cc:939,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - hardOrSoft
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 941
      start: 935
    functionDepth: 0
    functionLinenumber: 935
    functionLinenumberEnd: 941
    functionName: getFilenumLimit
    functionSourceFile: /src/pdns/pdns/recursordist/misc.cc
    functionUses: 1
    functionsReached:
    - unixDie
    - getrlimit
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int getFilenumLimit(bool hardOrSoft)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: getrlimit
      Src: /src/pdns/pdns/recursordist/misc.cc:947,1
    - Dst: unixDie
      Src: /src/pdns/pdns/recursordist/misc.cc:948,1
    - Dst: setrlimit
      Src: /src/pdns/pdns/recursordist/misc.cc:950,1
    - Dst: unixDie
      Src: /src/pdns/pdns/recursordist/misc.cc:951,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - lim
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 952
      start: 943
    functionDepth: 0
    functionLinenumber: 943
    functionLinenumberEnd: 952
    functionName: setFilenumLimit
    functionSourceFile: /src/pdns/pdns/recursordist/misc.cc
    functionUses: 1
    functionsReached:
    - unixDie
    - setrlimit
    - getrlimit
    linkageType: ''
    returnType: void
    signature: void setFilenumLimit(unsigned int lim)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: setsockopt
      Src: /src/pdns/pdns/recursordist/misc.cc:958,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - fd
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 962
      start: 954
    functionDepth: 0
    functionLinenumber: 954
    functionLinenumberEnd: 962
    functionName: setSocketTimestamps
    functionSourceFile: /src/pdns/pdns/recursordist/misc.cc
    functionUses: 1
    functionsReached:
    - setsockopt
    linkageType: ''
    returnType: bool
    signature: bool setSocketTimestamps(int fd)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: setsockopt
      Src: /src/pdns/pdns/recursordist/misc.cc:967,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - sock
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 972
      start: 964
    functionDepth: 0
    functionLinenumber: 964
    functionLinenumberEnd: 972
    functionName: setTCPNoDelay
    functionSourceFile: /src/pdns/pdns/recursordist/misc.cc
    functionUses: 8
    functionsReached:
    - setsockopt
    linkageType: ''
    returnType: bool
    signature: bool setTCPNoDelay(int sock)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: fcntl
      Src: /src/pdns/pdns/recursordist/misc.cc:977,1
    - Dst: fcntl
      Src: /src/pdns/pdns/recursordist/misc.cc:978,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - sock
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 981
      start: 975
    functionDepth: 0
    functionLinenumber: 975
    functionLinenumberEnd: 981
    functionName: setNonBlocking
    functionSourceFile: /src/pdns/pdns/recursordist/misc.cc
    functionUses: 63
    functionsReached:
    - fcntl
    linkageType: ''
    returnType: bool
    signature: bool setNonBlocking(int sock)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: fcntl
      Src: /src/pdns/pdns/recursordist/misc.cc:985,1
    - Dst: fcntl
      Src: /src/pdns/pdns/recursordist/misc.cc:986,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - sock
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 989
      start: 983
    functionDepth: 0
    functionLinenumber: 983
    functionLinenumberEnd: 989
    functionName: setBlocking
    functionSourceFile: /src/pdns/pdns/recursordist/misc.cc
    functionUses: 7
    functionsReached:
    - fcntl
    linkageType: ''
    returnType: bool
    signature: bool setBlocking(int sock)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: setsockopt
      Src: /src/pdns/pdns/recursordist/misc.cc:994,1
    - Dst: static_cast<unsigned>
      Src: /src/pdns/pdns/recursordist/misc.cc:994,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/recursordist/misc.cc:995,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/misc.cc:995,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/misc.cc:995,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - sock
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 997
      start: 991
    functionDepth: 0
    functionLinenumber: 991
    functionLinenumberEnd: 997
    functionName: setReuseAddr
    functionSourceFile: /src/pdns/pdns/recursordist/misc.cc
    functionUses: 10
    functionsReached:
    - PDNSException
    - stringerror
    - string
    - setsockopt
    - static_cast<unsigned>
    linkageType: ''
    returnType: bool
    signature: bool setReuseAddr(int sock)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: getsockopt
      Src: /src/pdns/pdns/recursordist/misc.cc:1010,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/misc.cc:1011,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/misc.cc:1011,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/misc.cc:1011,1
    - Dst: setsockopt
      Src: /src/pdns/pdns/recursordist/misc.cc:1014,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/misc.cc:1015,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/misc.cc:1015,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/misc.cc:1015,1
    - Dst: getsockopt
      Src: /src/pdns/pdns/recursordist/misc.cc:1019,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/misc.cc:1020,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/misc.cc:1020,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/misc.cc:1020,1
    - Dst: setsockopt
      Src: /src/pdns/pdns/recursordist/misc.cc:1023,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/misc.cc:1024,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/misc.cc:1024,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/misc.cc:1024,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 22
    argCount: 3
    argNames:
    - sock
    - family
    - dscp
    argTypes:
    - int
    - unsigned short
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1027
      start: 999
    functionDepth: 0
    functionLinenumber: 999
    functionLinenumberEnd: 1027
    functionName: setDscp
    functionSourceFile: /src/pdns/pdns/recursordist/misc.cc
    functionUses: 2
    functionsReached:
    - getsockopt
    - std::runtime_error
    - stringerror
    - string
    - setsockopt
    linkageType: ''
    returnType: void
    signature: void setDscp(int sock, unsigned short family, uint8_t dscp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fcntl
      Src: /src/pdns/pdns/recursordist/misc.cc:1031,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - sock
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1033
      start: 1029
    functionDepth: 0
    functionLinenumber: 1029
    functionLinenumberEnd: 1033
    functionName: isNonBlocking
    functionSourceFile: /src/pdns/pdns/recursordist/misc.cc
    functionUses: 0
    functionsReached:
    - fcntl
    linkageType: ''
    returnType: bool
    signature: bool isNonBlocking(int sock)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: setsockopt
      Src: /src/pdns/pdns/recursordist/misc.cc:1040,1
    - Dst: setsockopt
      Src: /src/pdns/pdns/recursordist/misc.cc:1042,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/recursordist/misc.cc:1045,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/misc.cc:1045,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/misc.cc:1045,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - sock
    - af
    argTypes:
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1049
      start: 1035
    functionDepth: 0
    functionLinenumber: 1035
    functionLinenumberEnd: 1049
    functionName: setReceiveSocketErrors
    functionSourceFile: /src/pdns/pdns/recursordist/misc.cc
    functionUses: 0
    functionsReached:
    - PDNSException
    - stringerror
    - string
    - setsockopt
    linkageType: ''
    returnType: bool
    signature: bool setReceiveSocketErrors([[maybe_unused]] int sock, [[maybe_unused]]
      int af)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: TCPIOHandler::close
      Src: /src/pdns/pdns/recursordist/misc.cc:1054,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/recursordist/misc.cc:1060,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/misc.cc:1060,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 1
    argNames:
    - socket
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1063
      start: 1052
    functionDepth: 0
    functionLinenumber: 1052
    functionLinenumberEnd: 1063
    functionName: closesocket
    functionSourceFile: /src/pdns/pdns/recursordist/misc.cc
    functionUses: 13
    functionsReached:
    - PDNSException
    - stringerror
    - TCPIOHandler::close
    linkageType: ''
    returnType: int
    signature: int closesocket(int socket)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: fcntl
      Src: /src/pdns/pdns/recursordist/misc.cc:1067,1
    - Dst: fcntl
      Src: /src/pdns/pdns/recursordist/misc.cc:1068,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - sock
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1071
      start: 1065
    functionDepth: 0
    functionLinenumber: 1065
    functionLinenumberEnd: 1071
    functionName: setCloseOnExec
    functionSourceFile: /src/pdns/pdns/recursordist/misc.cc
    functionUses: 10
    functionsReached:
    - fcntl
    linkageType: ''
    returnType: bool
    signature: bool setCloseOnExec(int sock)
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: FDWrapper
      Src: /src/pdns/pdns/recursordist/misc.cc:1085,1
    - Dst: socket
      Src: /src/pdns/pdns/recursordist/misc.cc:1085,1
    - Dst: auto::getHandle
      Src: /src/pdns/pdns/recursordist/misc.cc:1086,1
    - Dst: memset
      Src: /src/pdns/pdns/recursordist/misc.cc:1090,1
    - Dst: NLMSG_LENGTH
      Src: /src/pdns/pdns/recursordist/misc.cc:1091,1
    - Dst: send
      Src: /src/pdns/pdns/recursordist/misc.cc:1097,1
    - Dst: auto::getHandle
      Src: /src/pdns/pdns/recursordist/misc.cc:1097,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/recursordist/misc.cc:1104,1
    - Dst: recv
      Src: /src/pdns/pdns/recursordist/misc.cc:1114,1
    - Dst: auto::getHandle
      Src: /src/pdns/pdns/recursordist/misc.cc:1114,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/recursordist/misc.cc:1114,1
    - Dst: std::array::size
      Src: /src/pdns/pdns/recursordist/misc.cc:1114,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/recursordist/misc.cc:1123,1
    - Dst: reinterpret_cast<struct nlmsghdr*>
      Src: /src/pdns/pdns/recursordist/misc.cc:1124,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/recursordist/misc.cc:1124,1
    - Dst: NLMSG_OK
      Src: /src/pdns/pdns/recursordist/misc.cc:1125,1
    - Dst: reinterpret_cast<struct nlmsghdr*>
      Src: /src/pdns/pdns/recursordist/misc.cc:1126,1
    - Dst: NLMSG_NEXT
      Src: /src/pdns/pdns/recursordist/misc.cc:1126,1
    - Dst: reinterpret_cast<struct ndmsg*>
      Src: /src/pdns/pdns/recursordist/misc.cc:1133,1
    - Dst: NLMSG_DATA
      Src: /src/pdns/pdns/recursordist/misc.cc:1133,1
    - Dst: reinterpret_cast<struct rtattr*>
      Src: /src/pdns/pdns/recursordist/misc.cc:1134,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/recursordist/misc.cc:1134,1
    - Dst: NLMSG_ALIGN
      Src: /src/pdns/pdns/recursordist/misc.cc:1134,1
    - Dst: NLMSG_LENGTH
      Src: /src/pdns/pdns/recursordist/misc.cc:1135,1
    - Dst: static_cast<int32_t>
      Src: /src/pdns/pdns/recursordist/misc.cc:1141,1
    - Dst: RTA_OK
      Src: /src/pdns/pdns/recursordist/misc.cc:1145,1
    - Dst: RTA_NEXT
      Src: /src/pdns/pdns/recursordist/misc.cc:1145,1
    - Dst: reinterpret_cast<struct in_addr*>
      Src: /src/pdns/pdns/recursordist/misc.cc:1148,1
    - Dst: RTA_DATA
      Src: /src/pdns/pdns/recursordist/misc.cc:1148,1
    - Dst: reinterpret_cast<struct in6_addr *>
      Src: /src/pdns/pdns/recursordist/misc.cc:1154,1
    - Dst: RTA_DATA
      Src: /src/pdns/pdns/recursordist/misc.cc:1154,1
    - Dst: memcmp
      Src: /src/pdns/pdns/recursordist/misc.cc:1155,1
    - Dst: memcpy
      Src: /src/pdns/pdns/recursordist/misc.cc:1166,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/recursordist/misc.cc:1166,1
    CyclomaticComplexity: 32
    EdgeCount: 32
    ICount: 67
    argCount: 3
    argNames:
    - ' ca'
    - dest
    - destLen
    argTypes:
    - ComboAddress
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1178
      start: 1076
    functionDepth: 0
    functionLinenumber: 1076
    functionLinenumberEnd: 1178
    functionName: getMACAddress
    functionSourceFile: /src/pdns/pdns/recursordist/misc.cc
    functionUses: 6
    functionsReached:
    - reinterpret_cast<char*>
    - static_cast<int32_t>
    - reinterpret_cast<struct in_addr*>
    - memcmp
    - recv
    - static_cast<size_t>
    - auto::getHandle
    - reinterpret_cast<struct rtattr*>
    - NLMSG_NEXT
    - RTA_OK
    - memset
    - NLMSG_OK
    - send
    - reinterpret_cast<struct ndmsg*>
    - RTA_DATA
    - NLMSG_LENGTH
    - FDWrapper
    - NLMSG_DATA
    - reinterpret_cast<const char*>
    - std::array::data
    - socket
    - memcpy
    - NLMSG_ALIGN
    - RTA_NEXT
    - reinterpret_cast<struct in6_addr *>
    - reinterpret_cast<struct nlmsghdr*>
    - std::array::size
    linkageType: ''
    returnType: int
    signature: int getMACAddress(const ComboAddress& ca, char* dest, size_t destLen)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1183
      start: 1180
    functionDepth: 0
    functionLinenumber: 1180
    functionLinenumberEnd: 1183
    functionName: getMACAddress
    functionSourceFile: /src/pdns/pdns/recursordist/misc.cc
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int getMACAddress(const ComboAddress& /* ca */, char* /* dest */, size_t
      /* len */)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: getMACAddress
      Src: /src/pdns/pdns/recursordist/misc.cc:1190,1
    - Dst: string::append
      Src: /src/pdns/pdns/recursordist/misc.cc:1191,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ' ca'
    argTypes:
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1194
      start: 1186
    functionDepth: 0
    functionLinenumber: 1186
    functionLinenumberEnd: 1194
    functionName: getMACAddress
    functionSourceFile: /src/pdns/pdns/recursordist/misc.cc
    functionUses: 7
    functionsReached:
    - string::append
    - getMACAddress
    linkageType: ''
    returnType: string
    signature: string getMACAddress(const ComboAddress& ca)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: getline
      Src: /src/pdns/pdns/recursordist/misc.cc:1205,1
    - Dst: boost::starts_with
      Src: /src/pdns/pdns/recursordist/misc.cc:1206,1
    - Dst: isdigit
      Src: /src/pdns/pdns/recursordist/misc.cc:1206,1
    - Dst: string::at
      Src: /src/pdns/pdns/recursordist/misc.cc:1206,1
    - Dst: stringtok
      Src: /src/pdns/pdns/recursordist/misc.cc:1208,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/misc.cc:1210,1
    - Dst: std::stoull
      Src: /src/pdns/pdns/recursordist/misc.cc:1215,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/misc.cc:1215,1
    - Dst: std::stoull
      Src: /src/pdns/pdns/recursordist/misc.cc:1218,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/misc.cc:1218,1
    - Dst: std::stoull
      Src: /src/pdns/pdns/recursordist/misc.cc:1221,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/misc.cc:1221,1
    - Dst: std::stoull
      Src: /src/pdns/pdns/recursordist/misc.cc:1224,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/misc.cc:1224,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/misc.cc:1226,1
    - Dst: std::stoull
      Src: /src/pdns/pdns/recursordist/misc.cc:1227,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/misc.cc:1227,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 30
    argCount: 1
    argNames:
    - ' str'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1236
      start: 1196
    functionDepth: 0
    functionLinenumber: 1196
    functionLinenumberEnd: 1236
    functionName: udpErrorStats
    functionSourceFile: /src/pdns/pdns/recursordist/misc.cc
    functionUses: 2
    functionsReached:
    - isdigit
    - stringtok
    - vector::at
    - boost::starts_with
    - getline
    - string::at
    - std::stoull
    - vector::size
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t udpErrorStats([[maybe_unused]] const std::string& str)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: std::map::find
      Src: /src/pdns/pdns/recursordist/misc.cc:1249,1
    - Dst: std::map::end
      Src: /src/pdns/pdns/recursordist/misc.cc:1250,1
    - Dst: getline
      Src: /src/pdns/pdns/recursordist/misc.cc:1260,1
    - Dst: boost::starts_with
      Src: /src/pdns/pdns/recursordist/misc.cc:1261,1
    - Dst: stringtok
      Src: /src/pdns/pdns/recursordist/misc.cc:1266,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/recursordist/misc.cc:1268,1
    - Dst: std::stoull
      Src: /src/pdns/pdns/recursordist/misc.cc:1272,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/recursordist/misc.cc:1272,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 1
    argNames:
    - ' str'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1276
      start: 1238
    functionDepth: 0
    functionLinenumber: 1238
    functionLinenumberEnd: 1276
    functionName: udp6ErrorStats
    functionSourceFile: /src/pdns/pdns/recursordist/misc.cc
    functionUses: 2
    functionsReached:
    - stringtok
    - std::vector::size
    - boost::starts_with
    - getline
    - std::vector::at
    - std::map::find
    - std::stoull
    - std::map::end
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t udp6ErrorStats([[maybe_unused]] const std::string& str)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: getline
      Src: /src/pdns/pdns/recursordist/misc.cc:1288,1
    - Dst: string::size
      Src: /src/pdns/pdns/recursordist/misc.cc:1289,1
    - Dst: boost::starts_with
      Src: /src/pdns/pdns/recursordist/misc.cc:1289,1
    - Dst: isdigit
      Src: /src/pdns/pdns/recursordist/misc.cc:1289,1
    - Dst: string::at
      Src: /src/pdns/pdns/recursordist/misc.cc:1289,1
    - Dst: stringtok
      Src: /src/pdns/pdns/recursordist/misc.cc:1290,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/misc.cc:1292,1
    - Dst: std::stoull
      Src: /src/pdns/pdns/recursordist/misc.cc:1296,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/misc.cc:1296,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1301
      start: 1278
    functionDepth: 0
    functionLinenumber: 1278
    functionLinenumberEnd: 1301
    functionName: tcpErrorStats
    functionSourceFile: /src/pdns/pdns/recursordist/misc.cc
    functionUses: 2
    functionsReached:
    - isdigit
    - string::size
    - stringtok
    - vector::at
    - boost::starts_with
    - getline
    - string::at
    - std::stoull
    - vector::size
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t tcpErrorStats(const std::string& /* str */)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: getline
      Src: /src/pdns/pdns/recursordist/misc.cc:1313,1
    - Dst: boost::starts_with
      Src: /src/pdns/pdns/recursordist/misc.cc:1314,1
    - Dst: stringtok
      Src: /src/pdns/pdns/recursordist/misc.cc:1315,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/misc.cc:1317,1
    - Dst: std::stoull
      Src: /src/pdns/pdns/recursordist/misc.cc:1321,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1326
      start: 1303
    functionDepth: 0
    functionLinenumber: 1303
    functionLinenumberEnd: 1326
    functionName: getCPUIOWait
    functionSourceFile: /src/pdns/pdns/recursordist/misc.cc
    functionUses: 0
    functionsReached:
    - stringtok
    - boost::starts_with
    - getline
    - std::stoull
    - vector::size
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t getCPUIOWait(const std::string& /* str */)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: getline
      Src: /src/pdns/pdns/recursordist/misc.cc:1338,1
    - Dst: boost::starts_with
      Src: /src/pdns/pdns/recursordist/misc.cc:1339,1
    - Dst: stringtok
      Src: /src/pdns/pdns/recursordist/misc.cc:1340,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/misc.cc:1342,1
    - Dst: std::stoull
      Src: /src/pdns/pdns/recursordist/misc.cc:1346,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1351
      start: 1328
    functionDepth: 0
    functionLinenumber: 1328
    functionLinenumberEnd: 1351
    functionName: getCPUSteal
    functionSourceFile: /src/pdns/pdns/recursordist/misc.cc
    functionUses: 0
    functionsReached:
    - stringtok
    - boost::starts_with
    - getline
    - std::stoull
    - vector::size
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t getCPUSteal(const std::string& /* str */)
  - BBCount: 8
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 25
    argCount: 2
    argNames:
    - ' algoName'
    - ' algoEnum'
    argTypes:
    - DNSName
    - TSIGHashEnum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1380
      start: 1353
    functionDepth: 0
    functionLinenumber: 1353
    functionLinenumberEnd: 1380
    functionName: getTSIGHashEnum
    functionSourceFile: /src/pdns/pdns/recursordist/misc.cc
    functionUses: 11
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool getTSIGHashEnum(const DNSName& algoName, TSIGHashEnum& algoEnum)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: PDNSException
      Src: /src/pdns/pdns/recursordist/misc.cc:1393,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 18
    argCount: 1
    argNames:
    - ' algoEnum'
    argTypes:
    - TSIGHashEnum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1394
      start: 1382
    functionDepth: 0
    functionLinenumber: 1382
    functionLinenumberEnd: 1394
    functionName: getTSIGAlgoName
    functionSourceFile: /src/pdns/pdns/recursordist/misc.cc
    functionUses: 5
    functionsReached:
    - PDNSException
    linkageType: ''
    returnType: DNSName
    signature: DNSName getTSIGAlgoName(TSIGHashEnum& algoEnum)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/misc.cc:1400,1
    - Dst: getpid
      Src: /src/pdns/pdns/recursordist/misc.cc:1400,1
    - Dst: pdns::visit_directory
      Src: /src/pdns/pdns/recursordist/misc.cc:1401,1
    - Dst: pdns::checked_stoi_into
      Src: /src/pdns/pdns/recursordist/misc.cc:1404,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/misc.cc:1404,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/misc.cc:1405,1
    - Dst: getdtablecount
      Src: /src/pdns/pdns/recursordist/misc.cc:1419,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1423
      start: 1396
    functionDepth: 0
    functionLinenumber: 1396
    functionLinenumberEnd: 1423
    functionName: getOpenFileDescriptors
    functionSourceFile: /src/pdns/pdns/recursordist/misc.cc
    functionUses: 1
    functionsReached:
    - getdtablecount
    - std::to_string
    - pdns::visit_directory
    - std::string
    - pdns::checked_stoi_into
    - getpid
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t getOpenFileDescriptors(const std::string&)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: getpagesize
      Src: /src/pdns/pdns/recursordist/misc.cc:1437,1
    - Dst: getrusage
      Src: /src/pdns/pdns/recursordist/misc.cc:1440,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1444
      start: 1425
    functionDepth: 0
    functionLinenumber: 1425
    functionLinenumberEnd: 1444
    functionName: getRealMemoryUsage
    functionSourceFile: /src/pdns/pdns/recursordist/misc.cc
    functionUses: 1
    functionsReached:
    - getpagesize
    - getrusage
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t getRealMemoryUsage(const std::string&)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: getline
      Src: /src/pdns/pdns/recursordist/misc.cc:1456,1
    - Dst: boost::starts_with
      Src: /src/pdns/pdns/recursordist/misc.cc:1457,1
    - Dst: std::stoull
      Src: /src/pdns/pdns/recursordist/misc.cc:1458,1
    - Dst: string::substr
      Src: /src/pdns/pdns/recursordist/misc.cc:1458,1
    - Dst: string::length
      Src: /src/pdns/pdns/recursordist/misc.cc:1458,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1465
      start: 1447
    functionDepth: 0
    functionLinenumber: 1447
    functionLinenumberEnd: 1465
    functionName: getSpecialMemoryUsage
    functionSourceFile: /src/pdns/pdns/recursordist/misc.cc
    functionUses: 0
    functionsReached:
    - boost::starts_with
    - getline
    - string::substr
    - std::stoull
    - string::length
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t getSpecialMemoryUsage(const std::string&)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getrusage
      Src: /src/pdns/pdns/recursordist/misc.cc:1470,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1472
      start: 1467
    functionDepth: 0
    functionLinenumber: 1467
    functionLinenumberEnd: 1472
    functionName: getCPUTimeUser
    functionSourceFile: /src/pdns/pdns/recursordist/misc.cc
    functionUses: 1
    functionsReached:
    - getrusage
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t getCPUTimeUser(const std::string&)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getrusage
      Src: /src/pdns/pdns/recursordist/misc.cc:1477,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1479
      start: 1474
    functionDepth: 0
    functionLinenumber: 1474
    functionLinenumberEnd: 1479
    functionName: getCPUTimeSystem
    functionSourceFile: /src/pdns/pdns/recursordist/misc.cc
    functionUses: 1
    functionsReached:
    - getrusage
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t getCPUTimeSystem(const std::string&)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<double>
      Src: /src/pdns/pdns/recursordist/misc.cc:1490,1
    - Dst: static_cast<double>
      Src: /src/pdns/pdns/recursordist/misc.cc:1490,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - ' first'
    - ' second'
    argTypes:
    - struct timespec
    - struct timespec
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1491
      start: 1481
    functionDepth: 0
    functionLinenumber: 1481
    functionLinenumberEnd: 1491
    functionName: DiffTime
    functionSourceFile: /src/pdns/pdns/recursordist/misc.cc
    functionUses: 13
    functionsReached:
    - static_cast<double>
    linkageType: ''
    returnType: double
    signature: double DiffTime(const struct timespec& first, const struct timespec&
      second)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - ' first'
    - ' second'
    argTypes:
    - struct timeval
    - struct timeval
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1503
      start: 1493
    functionDepth: 0
    functionLinenumber: 1493
    functionLinenumberEnd: 1503
    functionName: DiffTime
    functionSourceFile: /src/pdns/pdns/recursordist/misc.cc
    functionUses: 13
    functionsReached: []
    linkageType: ''
    returnType: double
    signature: double DiffTime(const struct timeval& first, const struct timeval&
      second)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: string::c_str
      Src: /src/pdns/pdns/recursordist/misc.cc:1508,1
    - Dst: getpwnam
      Src: /src/pdns/pdns/recursordist/misc.cc:1509,1
    - Dst: stoll
      Src: /src/pdns/pdns/recursordist/misc.cc:1515,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/recursordist/misc.cc:1518,1
    - Dst: boost::format
      Src: /src/pdns/pdns/recursordist/misc.cc:1518,1
    - Dst: str
      Src: /src/pdns/pdns/recursordist/misc.cc:1518,1
    - Dst: pdns::min
      Src: /src/pdns/pdns/recursordist/misc.cc:1521,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/recursordist/misc.cc:1521,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/recursordist/misc.cc:1522,1
    - Dst: boost::format
      Src: /src/pdns/pdns/recursordist/misc.cc:1522,1
    - Dst: str
      Src: /src/pdns/pdns/recursordist/misc.cc:1522,1
    - Dst: static_cast<uid_t>
      Src: /src/pdns/pdns/recursordist/misc.cc:1525,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 1
    argNames:
    - str
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1532
      start: 1505
    functionDepth: 0
    functionLinenumber: 1505
    functionLinenumberEnd: 1532
    functionName: strToUID
    functionSourceFile: /src/pdns/pdns/recursordist/misc.cc
    functionUses: 3
    functionsReached:
    - getpwnam
    - string::c_str
    - pdns::max
    - runtime_error
    - stoll
    - str
    - boost::format
    - static_cast<uid_t>
    - pdns::min
    linkageType: ''
    returnType: uid_t
    signature: uid_t strToUID(const string &str)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: string::c_str
      Src: /src/pdns/pdns/recursordist/misc.cc:1537,1
    - Dst: getgrnam
      Src: /src/pdns/pdns/recursordist/misc.cc:1538,1
    - Dst: stoll
      Src: /src/pdns/pdns/recursordist/misc.cc:1544,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/recursordist/misc.cc:1547,1
    - Dst: boost::format
      Src: /src/pdns/pdns/recursordist/misc.cc:1547,1
    - Dst: str
      Src: /src/pdns/pdns/recursordist/misc.cc:1547,1
    - Dst: pdns::min
      Src: /src/pdns/pdns/recursordist/misc.cc:1550,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/recursordist/misc.cc:1550,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/recursordist/misc.cc:1551,1
    - Dst: boost::format
      Src: /src/pdns/pdns/recursordist/misc.cc:1551,1
    - Dst: str
      Src: /src/pdns/pdns/recursordist/misc.cc:1551,1
    - Dst: static_cast<gid_t>
      Src: /src/pdns/pdns/recursordist/misc.cc:1554,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 1
    argNames:
    - str
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1561
      start: 1534
    functionDepth: 0
    functionLinenumber: 1534
    functionLinenumberEnd: 1561
    functionName: strToGID
    functionSourceFile: /src/pdns/pdns/recursordist/misc.cc
    functionUses: 4
    functionsReached:
    - string::c_str
    - pdns::max
    - static_cast<gid_t>
    - runtime_error
    - stoll
    - str
    - getgrnam
    - boost::format
    - pdns::min
    linkageType: ''
    returnType: gid_t
    signature: gid_t strToGID(const string &str)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1570
      start: 1563
    functionDepth: 0
    functionLinenumber: 1563
    functionLinenumberEnd: 1570
    functionName: isSettingThreadCPUAffinitySupported
    functionSourceFile: /src/pdns/pdns/recursordist/misc.cc
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool isSettingThreadCPUAffinitySupported()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: cpuset_create
      Src: /src/pdns/pdns/recursordist/misc.cc:1577,1
    - Dst: cpuset_set
      Src: /src/pdns/pdns/recursordist/misc.cc:1579,1
    - Dst: pthread_setaffinity_np
      Src: /src/pdns/pdns/recursordist/misc.cc:1582,1
    - Dst: cpuset_size
      Src: /src/pdns/pdns/recursordist/misc.cc:1583,1
    - Dst: CPU_ZERO
      Src: /src/pdns/pdns/recursordist/misc.cc:1590,1
    - Dst: CPU_SET
      Src: /src/pdns/pdns/recursordist/misc.cc:1592,1
    - Dst: pthread_setaffinity_np
      Src: /src/pdns/pdns/recursordist/misc.cc:1595,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - tid
    - ' cpus'
    argTypes:
    - pthread_t
    - std::set<int>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1602
      start: 1572
    functionDepth: 0
    functionLinenumber: 1572
    functionLinenumberEnd: 1602
    functionName: mapThreadToCPUList
    functionSourceFile: /src/pdns/pdns/recursordist/misc.cc
    functionUses: 4
    functionsReached:
    - pthread_setaffinity_np
    - cpuset_create
    - cpuset_size
    - cpuset_set
    - CPU_SET
    - CPU_ZERO
    linkageType: ''
    returnType: int
    signature: int mapThreadToCPUList([[maybe_unused]] pthread_t tid, [[maybe_unused]]
      const std::set<int>& cpus)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: std::getline
      Src: /src/pdns/pdns/recursordist/misc.cc:1614,1
    - Dst: boost::trim_right_if
      Src: /src/pdns/pdns/recursordist/misc.cc:1615,1
    - Dst: boost::is_any_of
      Src: /src/pdns/pdns/recursordist/misc.cc:1615,1
    - Dst: boost::trim_left
      Src: /src/pdns/pdns/recursordist/misc.cc:1616,1
    - Dst: string::find_first_of
      Src: /src/pdns/pdns/recursordist/misc.cc:1618,1
    - Dst: string::resize
      Src: /src/pdns/pdns/recursordist/misc.cc:1620,1
    - Dst: boost::starts_with
      Src: /src/pdns/pdns/recursordist/misc.cc:1623,1
    - Dst: boost::starts_with
      Src: /src/pdns/pdns/recursordist/misc.cc:1623,1
    - Dst: stringtok
      Src: /src/pdns/pdns/recursordist/misc.cc:1625,1
    - Dst: vector::begin
      Src: /src/pdns/pdns/recursordist/misc.cc:1626,1
    - Dst: vector::end
      Src: /src/pdns/pdns/recursordist/misc.cc:1626,1
    - Dst: std::vector::emplace_back
      Src: /src/pdns/pdns/recursordist/misc.cc:1628,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 21
    argCount: 1
    argNames:
    - ' resolvConfPath'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1638
      start: 1604
    functionDepth: 1
    functionLinenumber: 1604
    functionLinenumberEnd: 1638
    functionName: getResolvers
    functionSourceFile: /src/pdns/pdns/recursordist/misc.cc
    functionUses: 3
    functionsReached:
    - vector::begin
    - string::resize
    - stringtok
    - boost::starts_with
    - std::vector::emplace_back
    - boost::trim_right_if
    - vector::end
    - boost::is_any_of
    - boost::trim_left
    - string::find_first_of
    - std::getline
    linkageType: ''
    returnType: std::vector<ComboAddress>
    signature: std::vector<ComboAddress> getResolvers(const std::string& resolvConfPath)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: fcntl
      Src: /src/pdns/pdns/recursordist/misc.cc:1643,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - fd
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1652
      start: 1640
    functionDepth: 0
    functionLinenumber: 1640
    functionLinenumberEnd: 1652
    functionName: getPipeBufferSize
    functionSourceFile: /src/pdns/pdns/recursordist/misc.cc
    functionUses: 13
    functionsReached:
    - fcntl
    linkageType: ''
    returnType: size_t
    signature: size_t getPipeBufferSize([[maybe_unused]] int fd)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/recursordist/misc.cc:1657,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/recursordist/misc.cc:1657,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/recursordist/misc.cc:1661,1
    - Dst: fcntl
      Src: /src/pdns/pdns/recursordist/misc.cc:1662,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - fd
    - size
    argTypes:
    - int
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1671
      start: 1654
    functionDepth: 0
    functionLinenumber: 1654
    functionLinenumberEnd: 1671
    functionName: setPipeBufferSize
    functionSourceFile: /src/pdns/pdns/recursordist/misc.cc
    functionUses: 13
    functionsReached:
    - pdns::max
    - static_cast<size_t>
    - fcntl
    - static_cast<int>
    linkageType: ''
    returnType: bool
    signature: bool setPipeBufferSize([[maybe_unused]] int fd, [[maybe_unused]] size_t
      size)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: isIPv4
      Src: /src/pdns/pdns/recursordist/misc.cc:1675,1
    - Dst: reinterpret_cast<const uint8_t*>
      Src: /src/pdns/pdns/recursordist/misc.cc:1677,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/misc.cc:1679,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/misc.cc:1681,1
    - Dst: isIPv6
      Src: /src/pdns/pdns/recursordist/misc.cc:1683,1
    - Dst: reinterpret_cast<const uint8_t*>
      Src: /src/pdns/pdns/recursordist/misc.cc:1685,1
    - Dst: std::stringstream::str
      Src: /src/pdns/pdns/recursordist/misc.cc:1692,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/misc.cc:1694,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/misc.cc:1697,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 1
    argNames:
    - ' ip'
    argTypes:
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1698
      start: 1673
    functionDepth: 0
    functionLinenumber: 1673
    functionLinenumberEnd: 1698
    functionName: reverseNameFromIP
    functionSourceFile: /src/pdns/pdns/recursordist/misc.cc
    functionUses: 2
    functionsReached:
    - isIPv6
    - reinterpret_cast<const uint8_t*>
    - std::to_string
    - std::runtime_error
    - DNSName
    - std::stringstream::str
    - isIPv4
    linkageType: ''
    returnType: DNSName
    signature: DNSName reverseNameFromIP(const ComboAddress& ip)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: islower
      Src: /src/pdns/pdns/recursordist/misc.cc:1708,1
    - Dst: isupper
      Src: /src/pdns/pdns/recursordist/misc.cc:1708,1
    - Dst: snprintf
      Src: /src/pdns/pdns/recursordist/misc.cc:1713,1
    - Dst: ostringstream::str
      Src: /src/pdns/pdns/recursordist/misc.cc:1720,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - ' in'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1721
      start: 1700
    functionDepth: 0
    functionLinenumber: 1700
    functionLinenumberEnd: 1721
    functionName: makeLuaString
    functionSourceFile: /src/pdns/pdns/recursordist/misc.cc
    functionUses: 2
    functionsReached:
    - islower
    - ostringstream::str
    - snprintf
    - isupper
    linkageType: ''
    returnType: std::string
    signature: std::string makeLuaString(const std::string& in)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: parseRFC1035CharString
      Src: /src/pdns/pdns/recursordist/misc.cc:1725,1
    - Dst: parseSVCBValueListFromParsedRFC1035CharString
      Src: /src/pdns/pdns/recursordist/misc.cc:1726,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - in
    - val
    argTypes:
    - std::string
    - vector<std::string>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1728
      start: 1723
    functionDepth: 0
    functionLinenumber: 1723
    functionLinenumberEnd: 1728
    functionName: parseSVCBValueList
    functionSourceFile: /src/pdns/pdns/recursordist/misc.cc
    functionUses: 2
    functionsReached:
    - parseSVCBValueListFromParsedRFC1035CharString
    - parseRFC1035CharString
    linkageType: ''
    returnType: size_t
    signature: size_t parseSVCBValueList(const std::string &in, vector<std::string>
      &val)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/recursordist/misc.cc:1740,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/misc.cc:1740,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/misc.cc:1743,1
    - Dst: CRYPTO_memcmp
      Src: /src/pdns/pdns/recursordist/misc.cc:1745,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/misc.cc:1745,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/misc.cc:1745,1
    - Dst: sodium_memcmp
      Src: /src/pdns/pdns/recursordist/misc.cc:1748,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/misc.cc:1748,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/misc.cc:1748,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/misc.cc:1750,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/misc.cc:1751,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - ' a'
    - ' b'
    argTypes:
    - std::string
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1761
      start: 1738
    functionDepth: 0
    functionLinenumber: 1738
    functionLinenumberEnd: 1761
    functionName: constantTimeStringEquals
    functionSourceFile: /src/pdns/pdns/recursordist/misc.cc
    functionUses: 13
    functionsReached:
    - c_str
    - CRYPTO_memcmp
    - size
    - sodium_memcmp
    linkageType: ''
    returnType: bool
    signature: bool constantTimeStringEquals(const std::string& a, const std::string&
      b)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: closedir
      Src: /src/pdns/pdns/recursordist/misc.cc:1768,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - dir
    argTypes:
    - DIR*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1769
      start: 1767
    functionDepth: 0
    functionLinenumber: 1767
    functionLinenumberEnd: 1769
    functionName: operator()(DIR* dir) const noexcept
    functionSourceFile: /src/pdns/pdns/recursordist/misc.cc
    functionUses: 0
    functionsReached:
    - closedir
    linkageType: ''
    returnType: void
    signature: void operator()(DIR* dir) const noexcept
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::unique_ptr<DIR, CloseDirDeleter>
      Src: /src/pdns/pdns/recursordist/misc.cc:1774,1
    - Dst: opendir
      Src: /src/pdns/pdns/recursordist/misc.cc:1774,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/misc.cc:1774,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/misc.cc:1777,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/misc.cc:1777,1
    - Dst: readdir
      Src: /src/pdns/pdns/recursordist/misc.cc:1783,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/misc.cc:1783,1
    - Dst: std::string_view
      Src: /src/pdns/pdns/recursordist/misc.cc:1785,1
    - Dst: strlen
      Src: /src/pdns/pdns/recursordist/misc.cc:1785,1
    - Dst: visitor
      Src: /src/pdns/pdns/recursordist/misc.cc:1786,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - ' directory'
    - ' visitor'
    argTypes:
    - std::string
    - std::function<bool(ino_t inodeNumber, const std::string_view& name)>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1790
      start: 1772
    functionDepth: 1
    functionLinenumber: 1772
    functionLinenumberEnd: 1790
    functionName: pdns::visit_directory
    functionSourceFile: /src/pdns/pdns/recursordist/misc.cc
    functionUses: 11
    functionsReached:
    - std::unique_ptr<DIR, CloseDirDeleter>
    - auto::get
    - visitor
    - stringerror
    - std::string_view
    - opendir
    - strlen
    - readdir
    - c_str
    - std::string
    linkageType: ''
    returnType: std::optional<std::string>
    signature: std::optional<std::string> visit_directory(const std::string& directory,
      const std::function<bool(ino_t inodeNumber, const std::string_view& name)>&
      visitor)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: open
      Src: /src/pdns/pdns/recursordist/misc.cc:1801,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/misc.cc:1801,1
    - Dst: pdns::UniqueFilePtr
      Src: /src/pdns/pdns/recursordist/misc.cc:1805,1
    - Dst: fdopen
      Src: /src/pdns/pdns/recursordist/misc.cc:1805,1
    - Dst: close
      Src: /src/pdns/pdns/recursordist/misc.cc:1808,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 4
    argNames:
    - ' filePath'
    - permissions
    - mustNotExist
    - appendIfExists
    argTypes:
    - std::string
    - mode_t
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1813
      start: 1792
    functionDepth: 0
    functionLinenumber: 1792
    functionLinenumberEnd: 1813
    functionName: pdns::openFileForWriting
    functionSourceFile: /src/pdns/pdns/recursordist/misc.cc
    functionUses: 5
    functionsReached:
    - open
    - pdns::UniqueFilePtr
    - c_str
    - close
    - fdopen
    linkageType: ''
    returnType: UniqueFilePtr
    signature: UniqueFilePtr openFileForWriting(const std::string& filePath, mode_t
      permissions, bool mustNotExist, bool appendIfExists)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: closedir
      Src: /src/pdns/pdns/recursordist/misc.cc:1768,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - dir
    argTypes:
    - DIR*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1769
      start: 1767
    functionDepth: 0
    functionLinenumber: 1767
    functionLinenumberEnd: 1769
    functionName: operator()(DIR* dir) const noexcept
    functionSourceFile: /src/pdns/pdns/recursordist/misc.cc
    functionUses: 0
    functionsReached:
    - closedir
    linkageType: ''
    returnType: void
    signature: void operator()(DIR* dir) const noexcept
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::unique_ptr<DIR, CloseDirDeleter>
      Src: /src/pdns/pdns/recursordist/misc.cc:1774,1
    - Dst: opendir
      Src: /src/pdns/pdns/recursordist/misc.cc:1774,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/misc.cc:1774,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/misc.cc:1777,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/misc.cc:1777,1
    - Dst: readdir
      Src: /src/pdns/pdns/recursordist/misc.cc:1783,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/misc.cc:1783,1
    - Dst: std::string_view
      Src: /src/pdns/pdns/recursordist/misc.cc:1785,1
    - Dst: strlen
      Src: /src/pdns/pdns/recursordist/misc.cc:1785,1
    - Dst: visitor
      Src: /src/pdns/pdns/recursordist/misc.cc:1786,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - ' directory'
    - ' visitor'
    argTypes:
    - std::string
    - std::function<bool(ino_t inodeNumber, const std::string_view& name)>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1790
      start: 1772
    functionDepth: 1
    functionLinenumber: 1772
    functionLinenumberEnd: 1790
    functionName: pdns::visit_directory
    functionSourceFile: /src/pdns/pdns/recursordist/misc.cc
    functionUses: 11
    functionsReached:
    - std::unique_ptr<DIR, CloseDirDeleter>
    - auto::get
    - visitor
    - stringerror
    - std::string_view
    - opendir
    - strlen
    - readdir
    - c_str
    - std::string
    linkageType: ''
    returnType: std::optional<std::string>
    signature: std::optional<std::string> visit_directory(const std::string& directory,
      const std::function<bool(ino_t inodeNumber, const std::string_view& name)>&
      visitor)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: open
      Src: /src/pdns/pdns/recursordist/misc.cc:1801,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/misc.cc:1801,1
    - Dst: pdns::UniqueFilePtr
      Src: /src/pdns/pdns/recursordist/misc.cc:1805,1
    - Dst: fdopen
      Src: /src/pdns/pdns/recursordist/misc.cc:1805,1
    - Dst: close
      Src: /src/pdns/pdns/recursordist/misc.cc:1808,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 4
    argNames:
    - ' filePath'
    - permissions
    - mustNotExist
    - appendIfExists
    argTypes:
    - std::string
    - mode_t
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1813
      start: 1792
    functionDepth: 0
    functionLinenumber: 1792
    functionLinenumberEnd: 1813
    functionName: pdns::openFileForWriting
    functionSourceFile: /src/pdns/pdns/recursordist/misc.cc
    functionUses: 5
    functionsReached:
    - open
    - pdns::UniqueFilePtr
    - c_str
    - close
    - fdopen
    linkageType: ''
    returnType: UniqueFilePtr
    signature: UniqueFilePtr openFileForWriting(const std::string& filePath, mode_t
      permissions, bool mustNotExist, bool appendIfExists)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strftime
      Src: /src/pdns/pdns/recursordist/misc.cc:1821,1
    - Dst: data
      Src: /src/pdns/pdns/recursordist/misc.cc:1821,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/misc.cc:1821,1
    - Dst: std::string::c_str
      Src: /src/pdns/pdns/recursordist/misc.cc:1821,1
    - Dst: localtime_r
      Src: /src/pdns/pdns/recursordist/misc.cc:1821,1
    - Dst: snprintf
      Src: /src/pdns/pdns/recursordist/misc.cc:1823,1
    - Dst: data
      Src: /src/pdns/pdns/recursordist/misc.cc:1823,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/misc.cc:1823,1
    - Dst: static_cast<long long>
      Src: /src/pdns/pdns/recursordist/misc.cc:1823,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/recursordist/misc.cc:1824,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/misc.cc:1824,1
    - Dst: data
      Src: /src/pdns/pdns/recursordist/misc.cc:1828,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 2
    argNames:
    - arg
    - ' buf'
    argTypes:
    - time_t
    - timebuf_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1829
      start: 1817
    functionDepth: 0
    functionLinenumber: 1817
    functionLinenumberEnd: 1829
    functionName: timestamp
    functionSourceFile: /src/pdns/pdns/recursordist/misc.cc
    functionUses: 11
    functionsReached:
    - static_cast<size_t>
    - snprintf
    - localtime_r
    - std::string::c_str
    - static_cast<long long>
    - size
    - data
    - strftime
    linkageType: ''
    returnType: char
    signature: char * timestamp(time_t arg, timebuf_t& buf)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - RNAME
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 40
    functionDepth: 0
    functionLinenumber: 40
    functionLinenumberEnd: 53
    functionName: includeboilerplate
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: includeboilerplate(RNAME)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 61
    functionDepth: 0
    functionLinenumber: 61
    functionLinenumberEnd: 64
    functionName: '& getFlags() const'
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: string
    signature: string & getFlags() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 65
    functionDepth: 0
    functionLinenumber: 65
    functionLinenumberEnd: 68
    functionName: '& getReplacement() const'
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: DNSName
    signature: DNSName & getReplacement() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: NAPTRRecordContent::sizeEstimate
      Src: /src/pdns/pdns/recursordist/dnsrecords.hh:71,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/dnsrecords.hh:71,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/dnsrecords.hh:71,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/dnsrecords.hh:71,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 69
    functionDepth: 0
    functionLinenumber: 69
    functionLinenumberEnd: 72
    functionName: NAPTRRecordContent::sizeEstimate
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.hh
    functionUses: 2
    functionsReached:
    - NAPTRRecordContent::sizeEstimate
    - size
    linkageType: ''
    returnType: size_t
    signature: size_t sizeEstimate() const override
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: typeid
      Src: /src/pdns/pdns/recursordist/dnsrecords.hh:90,1
    - Dst: typeid
      Src: /src/pdns/pdns/recursordist/dnsrecords.hh:90,1
    - Dst: dynamic_cast<const ARecordContent&>
      Src: /src/pdns/pdns/recursordist/dnsrecords.hh:92,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - DNSRecordContent
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 88
    functionDepth: 0
    functionLinenumber: 88
    functionLinenumberEnd: 93
    functionName: operator==(const DNSRecordContent& rhs) const override
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.hh
    functionUses: 0
    functionsReached:
    - dynamic_cast<const ARecordContent&>
    - typeid
    linkageType: ''
    returnType: bool
    signature: bool operator==(const DNSRecordContent& rhs) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 94
    functionDepth: 0
    functionLinenumber: 94
    functionLinenumberEnd: 97
    functionName: ARecordContent::sizeEstimate
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.hh
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: size_t sizeEstimate() const override
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: typeid
      Src: /src/pdns/pdns/recursordist/dnsrecords.hh:111,1
    - Dst: typeid
      Src: /src/pdns/pdns/recursordist/dnsrecords.hh:111,1
    - Dst: dynamic_cast<const decltype(this)>
      Src: /src/pdns/pdns/recursordist/dnsrecords.hh:113,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - DNSRecordContent
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 109
    functionDepth: 0
    functionLinenumber: 109
    functionLinenumberEnd: 114
    functionName: operator==(const DNSRecordContent& rhs) const override
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.hh
    functionUses: 0
    functionsReached:
    - dynamic_cast<const decltype(this)>
    - typeid
    linkageType: ''
    returnType: bool
    signature: bool operator==(const DNSRecordContent& rhs) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/recursordist/dnsrecords.hh:117,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 118
      start: 115
    functionDepth: 0
    functionLinenumber: 115
    functionLinenumberEnd: 118
    functionName: AAAARecordContent::sizeEstimate
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.hh
    functionUses: 0
    functionsReached:
    - size
    linkageType: ''
    returnType: size_t
    signature: size_t sizeEstimate() const override
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: typeid
      Src: /src/pdns/pdns/recursordist/dnsrecords.hh:135,1
    - Dst: typeid
      Src: /src/pdns/pdns/recursordist/dnsrecords.hh:135,1
    - Dst: dynamic_cast<const decltype(this)>
      Src: /src/pdns/pdns/recursordist/dnsrecords.hh:137,1
    - Dst: std::tie
      Src: /src/pdns/pdns/recursordist/dnsrecords.hh:138,1
    - Dst: std::tie
      Src: /src/pdns/pdns/recursordist/dnsrecords.hh:138,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - DNSRecordContent
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 139
      start: 133
    functionDepth: 0
    functionLinenumber: 133
    functionLinenumberEnd: 139
    functionName: operator==(const DNSRecordContent& rhs) const override
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.hh
    functionUses: 0
    functionsReached:
    - std::tie
    - dynamic_cast<const decltype(this)>
    - typeid
    linkageType: ''
    returnType: bool
    signature: bool operator==(const DNSRecordContent& rhs) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MXRecordContent::sizeEstimate
      Src: /src/pdns/pdns/recursordist/dnsrecords.hh:142,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 143
      start: 140
    functionDepth: 0
    functionLinenumber: 140
    functionLinenumberEnd: 143
    functionName: MXRecordContent::sizeEstimate
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.hh
    functionUses: 2
    functionsReached:
    - MXRecordContent::sizeEstimate
    linkageType: ''
    returnType: size_t
    signature: size_t sizeEstimate() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: KXRecordContent::sizeEstimate
      Src: /src/pdns/pdns/recursordist/dnsrecords.hh:155,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 156
      start: 153
    functionDepth: 0
    functionLinenumber: 153
    functionLinenumberEnd: 156
    functionName: KXRecordContent::sizeEstimate
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.hh
    functionUses: 2
    functionsReached:
    - KXRecordContent::sizeEstimate
    linkageType: ''
    returnType: size_t
    signature: size_t sizeEstimate() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: IPSECKEYRecordContent::sizeEstimate
      Src: /src/pdns/pdns/recursordist/dnsrecords.hh:171,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/dnsrecords.hh:171,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/dnsrecords.hh:171,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 172
      start: 169
    functionDepth: 0
    functionLinenumber: 169
    functionLinenumberEnd: 172
    functionName: IPSECKEYRecordContent::sizeEstimate
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.hh
    functionUses: 2
    functionsReached:
    - IPSECKEYRecordContent::sizeEstimate
    - size
    linkageType: ''
    returnType: size_t
    signature: size_t sizeEstimate() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/recursordist/dnsrecords.hh:187,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 188
      start: 185
    functionDepth: 0
    functionLinenumber: 185
    functionLinenumberEnd: 188
    functionName: DHCIDRecordContent::sizeEstimate
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.hh
    functionUses: 0
    functionsReached:
    - size
    linkageType: ''
    returnType: size_t
    signature: size_t sizeEstimate() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SRVRecordContent::sizeEstimate
      Src: /src/pdns/pdns/recursordist/dnsrecords.hh:203,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 204
      start: 201
    functionDepth: 0
    functionLinenumber: 201
    functionLinenumberEnd: 204
    functionName: SRVRecordContent::sizeEstimate
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.hh
    functionUses: 2
    functionsReached:
    - SRVRecordContent::sizeEstimate
    linkageType: ''
    returnType: size_t
    signature: size_t sizeEstimate() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 215
      start: 214
    functionDepth: 0
    functionLinenumber: 214
    functionLinenumberEnd: 215
    functionName: TSIGRecordContent::TSIGRecordContent
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.hh
    functionUses: 17
    functionsReached: []
    linkageType: ''
    returnType: includeboilerplate
    signature: includeboilerplate TSIGRecordContent()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TSIGRecordContent::sizeEstimate
      Src: /src/pdns/pdns/recursordist/dnsrecords.hh:218,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/dnsrecords.hh:218,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/dnsrecords.hh:218,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 219
      start: 216
    functionDepth: 0
    functionLinenumber: 216
    functionLinenumberEnd: 219
    functionName: TSIGRecordContent::sizeEstimate
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.hh
    functionUses: 2
    functionsReached:
    - size
    - TSIGRecordContent::sizeEstimate
    linkageType: ''
    returnType: size_t
    signature: size_t sizeEstimate() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/recursordist/dnsrecords.hh:241,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 242
      start: 239
    functionDepth: 0
    functionLinenumber: 239
    functionLinenumberEnd: 242
    functionName: TXTRecordContent::sizeEstimate
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.hh
    functionUses: 0
    functionsReached:
    - size
    linkageType: ''
    returnType: size_t
    signature: size_t sizeEstimate() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LUARecordContent::getCode
      Src: /src/pdns/pdns/recursordist/dnsrecords.hh:254,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 255
      start: 252
    functionDepth: 0
    functionLinenumber: 252
    functionLinenumberEnd: 255
    functionName: LUARecordContent::sizeEstimate
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.hh
    functionUses: 0
    functionsReached:
    - LUARecordContent::getCode
    linkageType: ''
    returnType: size_t
    signature: size_t sizeEstimate() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 269
      start: 266
    functionDepth: 0
    functionLinenumber: 266
    functionLinenumberEnd: 269
    functionName: ENTRecordContent::sizeEstimate
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: size_t sizeEstimate() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 279
      start: 276
    functionDepth: 0
    functionLinenumber: 276
    functionLinenumberEnd: 279
    functionName: '& getText() const'
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string & getText() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/recursordist/dnsrecords.hh:282,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 283
      start: 280
    functionDepth: 0
    functionLinenumber: 280
    functionLinenumberEnd: 283
    functionName: SPFRecordContent::sizeEstimate
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.hh
    functionUses: 0
    functionsReached:
    - size
    linkageType: ''
    returnType: size_t
    signature: size_t sizeEstimate() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/dnsrecords.hh:294,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - content
    argTypes:
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 294
      start: 293
    functionDepth: 0
    functionLinenumber: 293
    functionLinenumberEnd: 294
    functionName: NSRecordContent::NSRecordContent
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.hh
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void NSRecordContent(DNSName content)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 295
      start: 295
    functionDepth: 0
    functionLinenumber: 295
    functionLinenumberEnd: 295
    functionName: '& getNS() const'
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: DNSName
    signature: DNSName & getNS() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: typeid
      Src: /src/pdns/pdns/recursordist/dnsrecords.hh:298,1
    - Dst: typeid
      Src: /src/pdns/pdns/recursordist/dnsrecords.hh:298,1
    - Dst: dynamic_cast<const decltype(this)>
      Src: /src/pdns/pdns/recursordist/dnsrecords.hh:300,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - DNSRecordContent
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 302
      start: 296
    functionDepth: 0
    functionLinenumber: 296
    functionLinenumberEnd: 302
    functionName: operator==(const DNSRecordContent& rhs) const override
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.hh
    functionUses: 0
    functionsReached:
    - dynamic_cast<const decltype(this)>
    - typeid
    linkageType: ''
    returnType: bool
    signature: bool operator==(const DNSRecordContent& rhs) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: NSRecordContent::sizeEstimate
      Src: /src/pdns/pdns/recursordist/dnsrecords.hh:305,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 306
      start: 303
    functionDepth: 0
    functionLinenumber: 303
    functionLinenumberEnd: 306
    functionName: NSRecordContent::sizeEstimate
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.hh
    functionUses: 2
    functionsReached:
    - NSRecordContent::sizeEstimate
    linkageType: ''
    returnType: size_t
    signature: size_t sizeEstimate() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/dnsrecords.hh:315,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - content
    argTypes:
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 315
      start: 314
    functionDepth: 0
    functionLinenumber: 314
    functionLinenumberEnd: 315
    functionName: PTRRecordContent::PTRRecordContent
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.hh
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void PTRRecordContent(DNSName content)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 316
      start: 316
    functionDepth: 0
    functionLinenumber: 316
    functionLinenumberEnd: 316
    functionName: '& getContent() const'
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: DNSName
    signature: DNSName & getContent() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PTRRecordContent::sizeEstimate
      Src: /src/pdns/pdns/recursordist/dnsrecords.hh:319,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 320
      start: 317
    functionDepth: 0
    functionLinenumber: 317
    functionLinenumberEnd: 320
    functionName: PTRRecordContent::sizeEstimate
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.hh
    functionUses: 4
    functionsReached:
    - PTRRecordContent::sizeEstimate
    linkageType: ''
    returnType: size_t
    signature: size_t sizeEstimate() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/dnsrecords.hh:330,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - content
    argTypes:
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 330
      start: 329
    functionDepth: 0
    functionLinenumber: 329
    functionLinenumberEnd: 330
    functionName: CNAMERecordContent::CNAMERecordContent
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.hh
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void CNAMERecordContent(DNSName content)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 331
      start: 331
    functionDepth: 0
    functionLinenumber: 331
    functionLinenumberEnd: 331
    functionName: CNAMERecordContent::getTarget
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: DNSName
    signature: DNSName getTarget() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CNAMERecordContent::sizeEstimate
      Src: /src/pdns/pdns/recursordist/dnsrecords.hh:334,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 335
      start: 332
    functionDepth: 0
    functionLinenumber: 332
    functionLinenumberEnd: 335
    functionName: CNAMERecordContent::sizeEstimate
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.hh
    functionUses: 2
    functionsReached:
    - CNAMERecordContent::sizeEstimate
    linkageType: ''
    returnType: size_t
    signature: size_t sizeEstimate() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 349
      start: 346
    functionDepth: 0
    functionLinenumber: 346
    functionLinenumberEnd: 349
    functionName: '& getContent() const'
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: DNSName
    signature: DNSName & getContent() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ALIASRecordContent::sizeEstimate
      Src: /src/pdns/pdns/recursordist/dnsrecords.hh:352,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 353
      start: 350
    functionDepth: 0
    functionLinenumber: 350
    functionLinenumberEnd: 353
    functionName: ALIASRecordContent::sizeEstimate
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.hh
    functionUses: 2
    functionsReached:
    - ALIASRecordContent::sizeEstimate
    linkageType: ''
    returnType: size_t
    signature: size_t sizeEstimate() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/dnsrecords.hh:364,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - content
    argTypes:
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 364
      start: 363
    functionDepth: 0
    functionLinenumber: 363
    functionLinenumberEnd: 364
    functionName: DNAMERecordContent::DNAMERecordContent
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.hh
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void DNAMERecordContent(DNSName content)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 365
      start: 365
    functionDepth: 0
    functionLinenumber: 365
    functionLinenumberEnd: 365
    functionName: '& getTarget() const'
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: DNSName
    signature: DNSName & getTarget() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNAMERecordContent::sizeEstimate
      Src: /src/pdns/pdns/recursordist/dnsrecords.hh:368,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 369
      start: 366
    functionDepth: 0
    functionLinenumber: 366
    functionLinenumberEnd: 369
    functionName: DNAMERecordContent::sizeEstimate
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.hh
    functionUses: 2
    functionsReached:
    - DNAMERecordContent::sizeEstimate
    linkageType: ''
    returnType: size_t
    signature: size_t sizeEstimate() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MBRecordContent::sizeEstimate
      Src: /src/pdns/pdns/recursordist/dnsrecords.hh:381,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 382
      start: 379
    functionDepth: 0
    functionLinenumber: 379
    functionLinenumberEnd: 382
    functionName: MBRecordContent::sizeEstimate
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.hh
    functionUses: 2
    functionsReached:
    - MBRecordContent::sizeEstimate
    linkageType: ''
    returnType: size_t
    signature: size_t sizeEstimate() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MGRecordContent::sizeEstimate
      Src: /src/pdns/pdns/recursordist/dnsrecords.hh:394,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 395
      start: 392
    functionDepth: 0
    functionLinenumber: 392
    functionLinenumberEnd: 395
    functionName: MGRecordContent::sizeEstimate
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.hh
    functionUses: 2
    functionsReached:
    - MGRecordContent::sizeEstimate
    linkageType: ''
    returnType: size_t
    signature: size_t sizeEstimate() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MRRecordContent::sizeEstimate
      Src: /src/pdns/pdns/recursordist/dnsrecords.hh:407,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 408
      start: 405
    functionDepth: 0
    functionLinenumber: 405
    functionLinenumberEnd: 408
    functionName: MRRecordContent::sizeEstimate
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.hh
    functionUses: 2
    functionsReached:
    - MRRecordContent::sizeEstimate
    linkageType: ''
    returnType: size_t
    signature: size_t sizeEstimate() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MINFORecordContent::sizeEstimate
      Src: /src/pdns/pdns/recursordist/dnsrecords.hh:420,1
    - Dst: MINFORecordContent::sizeEstimate
      Src: /src/pdns/pdns/recursordist/dnsrecords.hh:420,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 421
      start: 418
    functionDepth: 0
    functionLinenumber: 418
    functionLinenumberEnd: 421
    functionName: MINFORecordContent::sizeEstimate
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.hh
    functionUses: 2
    functionsReached:
    - MINFORecordContent::sizeEstimate
    linkageType: ''
    returnType: size_t
    signature: size_t sizeEstimate() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 431
      start: 431
    functionDepth: 0
    functionLinenumber: 431
    functionLinenumberEnd: 431
    functionName: OPTRecordContent::OPTRecordContent
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void OPTRecordContent()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/recursordist/dnsrecords.hh:436,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 437
      start: 434
    functionDepth: 0
    functionLinenumber: 434
    functionLinenumberEnd: 437
    functionName: OPTRecordContent::sizeEstimate
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.hh
    functionUses: 0
    functionsReached:
    - size
    linkageType: ''
    returnType: size_t
    signature: size_t sizeEstimate() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/recursordist/dnsrecords.hh:449,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/dnsrecords.hh:449,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 450
      start: 447
    functionDepth: 0
    functionLinenumber: 447
    functionLinenumberEnd: 450
    functionName: HINFORecordContent::sizeEstimate
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.hh
    functionUses: 0
    functionsReached:
    - size
    linkageType: ''
    returnType: size_t
    signature: size_t sizeEstimate() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RPRecordContent::sizeEstimate
      Src: /src/pdns/pdns/recursordist/dnsrecords.hh:462,1
    - Dst: RPRecordContent::sizeEstimate
      Src: /src/pdns/pdns/recursordist/dnsrecords.hh:462,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 463
      start: 460
    functionDepth: 0
    functionLinenumber: 460
    functionLinenumberEnd: 463
    functionName: RPRecordContent::sizeEstimate
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.hh
    functionUses: 2
    functionsReached:
    - RPRecordContent::sizeEstimate
    linkageType: ''
    returnType: size_t
    signature: size_t sizeEstimate() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::tie
      Src: /src/pdns/pdns/recursordist/dnsrecords.hh:482,1
    - Dst: std::tie
      Src: /src/pdns/pdns/recursordist/dnsrecords.hh:483,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - DNSKEYRecordContent
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 484
      start: 480
    functionDepth: 0
    functionLinenumber: 480
    functionLinenumberEnd: 484
    functionName: operator<(const DNSKEYRecordContent& rhs) const
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.hh
    functionUses: 0
    functionsReached:
    - std::tie
    linkageType: ''
    returnType: bool
    signature: bool operator<(const DNSKEYRecordContent& rhs) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/recursordist/dnsrecords.hh:487,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 488
      start: 485
    functionDepth: 0
    functionLinenumber: 485
    functionLinenumberEnd: 488
    functionName: DNSKEYRecordContent::sizeEstimate
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.hh
    functionUses: 0
    functionsReached:
    - size
    linkageType: ''
    returnType: size_t
    signature: size_t sizeEstimate() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/recursordist/dnsrecords.hh:499,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 500
      start: 497
    functionDepth: 0
    functionLinenumber: 497
    functionLinenumberEnd: 500
    functionName: CDNSKEYRecordContent::sizeEstimate
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.hh
    functionUses: 0
    functionsReached:
    - size
    linkageType: ''
    returnType: size_t
    signature: size_t sizeEstimate() const override
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: typeid
      Src: /src/pdns/pdns/recursordist/dnsrecords.hh:514,1
    - Dst: typeid
      Src: /src/pdns/pdns/recursordist/dnsrecords.hh:514,1
    - Dst: dynamic_cast<const decltype(this)>
      Src: /src/pdns/pdns/recursordist/dnsrecords.hh:516,1
    - Dst: std::tie
      Src: /src/pdns/pdns/recursordist/dnsrecords.hh:517,1
    - Dst: std::tie
      Src: /src/pdns/pdns/recursordist/dnsrecords.hh:518,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - DNSRecordContent
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 519
      start: 512
    functionDepth: 0
    functionLinenumber: 512
    functionLinenumberEnd: 519
    functionName: operator==(const DNSRecordContent& rhs) const override
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.hh
    functionUses: 0
    functionsReached:
    - std::tie
    - dynamic_cast<const decltype(this)>
    - typeid
    linkageType: ''
    returnType: bool
    signature: bool operator==(const DNSRecordContent& rhs) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::tie
      Src: /src/pdns/pdns/recursordist/dnsrecords.hh:522,1
    - Dst: std::tie
      Src: /src/pdns/pdns/recursordist/dnsrecords.hh:523,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - DSRecordContent
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 524
      start: 520
    functionDepth: 0
    functionLinenumber: 520
    functionLinenumberEnd: 524
    functionName: operator<(const DSRecordContent& rhs) const
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.hh
    functionUses: 0
    functionsReached:
    - std::tie
    linkageType: ''
    returnType: bool
    signature: bool operator<(const DSRecordContent& rhs) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/recursordist/dnsrecords.hh:529,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 530
      start: 527
    functionDepth: 0
    functionLinenumber: 527
    functionLinenumberEnd: 530
    functionName: DSRecordContent::sizeEstimate
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.hh
    functionUses: 0
    functionsReached:
    - size
    linkageType: ''
    returnType: size_t
    signature: size_t sizeEstimate() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/recursordist/dnsrecords.hh:544,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 545
      start: 542
    functionDepth: 0
    functionLinenumber: 542
    functionLinenumberEnd: 545
    functionName: CDSRecordContent::sizeEstimate
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.hh
    functionUses: 0
    functionsReached:
    - size
    linkageType: ''
    returnType: size_t
    signature: size_t sizeEstimate() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/recursordist/dnsrecords.hh:559,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 560
      start: 557
    functionDepth: 0
    functionLinenumber: 557
    functionLinenumberEnd: 560
    functionName: DLVRecordContent::sizeEstimate
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.hh
    functionUses: 0
    functionsReached:
    - size
    linkageType: ''
    returnType: size_t
    signature: size_t sizeEstimate() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/recursordist/dnsrecords.hh:574,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 575
      start: 572
    functionDepth: 0
    functionLinenumber: 572
    functionLinenumberEnd: 575
    functionName: SSHFPRecordContent::sizeEstimate
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.hh
    functionUses: 0
    functionsReached:
    - size
    linkageType: ''
    returnType: size_t
    signature: size_t sizeEstimate() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/recursordist/dnsrecords.hh:588,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 589
      start: 586
    functionDepth: 0
    functionLinenumber: 586
    functionLinenumberEnd: 589
    functionName: KEYRecordContent::sizeEstimate
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.hh
    functionUses: 3
    functionsReached:
    - size
    linkageType: ''
    returnType: size_t
    signature: size_t sizeEstimate() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: AFSDBRecordContent::sizeEstimate
      Src: /src/pdns/pdns/recursordist/dnsrecords.hh:603,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 604
      start: 601
    functionDepth: 0
    functionLinenumber: 601
    functionLinenumberEnd: 604
    functionName: AFSDBRecordContent::sizeEstimate
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.hh
    functionUses: 2
    functionsReached:
    - AFSDBRecordContent::sizeEstimate
    linkageType: ''
    returnType: size_t
    signature: size_t sizeEstimate() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/recursordist/dnsrecords.hh:622,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 623
      start: 620
    functionDepth: 0
    functionLinenumber: 620
    functionLinenumberEnd: 623
    functionName: CERTRecordContent::sizeEstimate
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.hh
    functionUses: 0
    functionsReached:
    - size
    linkageType: ''
    returnType: size_t
    signature: size_t sizeEstimate() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/recursordist/dnsrecords.hh:637,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 638
      start: 635
    functionDepth: 0
    functionLinenumber: 635
    functionLinenumberEnd: 638
    functionName: TLSARecordContent::sizeEstimate
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.hh
    functionUses: 0
    functionsReached:
    - size
    linkageType: ''
    returnType: size_t
    signature: size_t sizeEstimate() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/recursordist/dnsrecords.hh:651,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 652
      start: 649
    functionDepth: 0
    functionLinenumber: 649
    functionLinenumberEnd: 652
    functionName: SMIMEARecordContent::sizeEstimate
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.hh
    functionUses: 0
    functionsReached:
    - size
    linkageType: ''
    returnType: size_t
    signature: size_t sizeEstimate() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/recursordist/dnsrecords.hh:665,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 666
      start: 663
    functionDepth: 0
    functionLinenumber: 663
    functionLinenumberEnd: 666
    functionName: OPENPGPKEYRecordContent::sizeEstimate
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.hh
    functionUses: 0
    functionsReached:
    - size
    linkageType: ''
    returnType: size_t
    signature: size_t sizeEstimate() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 675
      start: 675
    functionDepth: 0
    functionLinenumber: 675
    functionLinenumberEnd: 675
    functionName: '& getTarget() const'
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: DNSName
    signature: DNSName & getTarget() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 676
      start: 676
    functionDepth: 0
    functionLinenumber: 676
    functionLinenumberEnd: 676
    functionName: SVCBBaseRecordContent::getPriority
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t getPriority() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/recursordist/dnsrecords.hh:693,1
    - Dst: SVCBBaseRecordContent::sizeEstimate
      Src: /src/pdns/pdns/recursordist/dnsrecords.hh:693,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 694
      start: 691
    functionDepth: 0
    functionLinenumber: 691
    functionLinenumberEnd: 694
    functionName: SVCBBaseRecordContent::sizeEstimate
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.hh
    functionUses: 2
    functionsReached:
    - size
    - SVCBBaseRecordContent::sizeEstimate
    linkageType: ''
    returnType: size_t
    signature: size_t sizeEstimate() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/recursordist/dnsrecords.hh:724,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 725
      start: 722
    functionDepth: 0
    functionLinenumber: 722
    functionLinenumberEnd: 725
    functionName: DRIPBaseRecordContent::sizeEstimate
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.hh
    functionUses: 0
    functionsReached:
    - size
    linkageType: ''
    returnType: size_t
    signature: size_t sizeEstimate() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RRSIGRecordContent::sizeEstimate
      Src: /src/pdns/pdns/recursordist/dnsrecords.hh:751,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/dnsrecords.hh:751,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 752
      start: 749
    functionDepth: 0
    functionLinenumber: 749
    functionLinenumberEnd: 752
    functionName: RRSIGRecordContent::sizeEstimate
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.hh
    functionUses: 2
    functionsReached:
    - RRSIGRecordContent::sizeEstimate
    - size
    linkageType: ''
    returnType: size_t
    signature: size_t sizeEstimate() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/recursordist/dnsrecords.hh:779,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 780
      start: 777
    functionDepth: 0
    functionLinenumber: 777
    functionLinenumberEnd: 780
    functionName: RKEYRecordContent::sizeEstimate
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.hh
    functionUses: 0
    functionsReached:
    - size
    linkageType: ''
    returnType: size_t
    signature: size_t sizeEstimate() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SOARecordContent::sizeEstimate
      Src: /src/pdns/pdns/recursordist/dnsrecords.hh:794,1
    - Dst: SOARecordContent::sizeEstimate
      Src: /src/pdns/pdns/recursordist/dnsrecords.hh:794,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 795
      start: 792
    functionDepth: 0
    functionLinenumber: 792
    functionLinenumberEnd: 795
    functionName: SOARecordContent::sizeEstimate
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.hh
    functionUses: 2
    functionsReached:
    - SOARecordContent::sizeEstimate
    linkageType: ''
    returnType: size_t
    signature: size_t sizeEstimate() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/recursordist/dnsrecords.hh:809,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 810
      start: 807
    functionDepth: 0
    functionLinenumber: 807
    functionLinenumberEnd: 810
    functionName: ZONEMDRecordContent::sizeEstimate
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.hh
    functionUses: 0
    functionsReached:
    - size
    linkageType: ''
    returnType: size_t
    signature: size_t sizeEstimate() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 822
      start: 820
    functionDepth: 0
    functionLinenumber: 820
    functionLinenumberEnd: 822
    functionName: NSECBitmap::NSECBitmap
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void NSECBitmap()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::make_unique<std::bitset<nbTypes>>
      Src: /src/pdns/pdns/recursordist/dnsrecords.hh:826,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - NSECBitmap
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 828
      start: 823
    functionDepth: 0
    functionLinenumber: 823
    functionLinenumberEnd: 828
    functionName: NSECBitmap::NSECBitmap
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.hh
    functionUses: 0
    functionsReached:
    - std::make_unique<std::bitset<nbTypes>>
    linkageType: ''
    returnType: void
    signature: void NSECBitmap(const NSECBitmap& rhs)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::make_unique<std::bitset<nbTypes>>
      Src: /src/pdns/pdns/recursordist/dnsrecords.hh:834,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - NSECBitmap
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 838
      start: 829
    functionDepth: 0
    functionLinenumber: 829
    functionLinenumberEnd: 838
    functionName: '& operator=(const NSECBitmap& rhs)'
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.hh
    functionUses: 0
    functionsReached:
    - std::make_unique<std::bitset<nbTypes>>
    linkageType: ''
    returnType: NSECBitmap
    signature: NSECBitmap & operator=(const NSECBitmap& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/dnsrecords.hh:840,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/dnsrecords.hh:840,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - NSECBitmap
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 842
      start: 839
    functionDepth: 0
    functionLinenumber: 839
    functionLinenumberEnd: 842
    functionName: NSECBitmap::NSECBitmap
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.hh
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void NSECBitmap(NSECBitmap&& rhs) noexcept
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: test
      Src: /src/pdns/pdns/recursordist/dnsrecords.hh:846,1
    - Dst: NSECBitmap::count
      Src: /src/pdns/pdns/recursordist/dnsrecords.hh:848,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - type
    argTypes:
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 849
      start: 843
    functionDepth: 0
    functionLinenumber: 843
    functionLinenumberEnd: 849
    functionName: NSECBitmap::isSet
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.hh
    functionUses: 0
    functionsReached:
    - NSECBitmap::count
    - test
    linkageType: ''
    returnType: bool
    signature: bool isSet(uint16_t type) const
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/recursordist/dnsrecords.hh:853,1
    - Dst: NSECBitmap::migrateToBitSet
      Src: /src/pdns/pdns/recursordist/dnsrecords.hh:854,1
    - Dst: NSECBitmap::set
      Src: /src/pdns/pdns/recursordist/dnsrecords.hh:858,1
    - Dst: insert
      Src: /src/pdns/pdns/recursordist/dnsrecords.hh:861,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - type
    argTypes:
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 863
      start: 850
    functionDepth: 2
    functionLinenumber: 850
    functionLinenumberEnd: 863
    functionName: NSECBitmap::set
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.hh
    functionUses: 5
    functionsReached:
    - NSECBitmap::migrateToBitSet
    - NSECBitmap::set
    - insert
    - size
    linkageType: ''
    returnType: void
    signature: void set(uint16_t type)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: NSECBitmap::count
      Src: /src/pdns/pdns/recursordist/dnsrecords.hh:867,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/dnsrecords.hh:870,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 872
      start: 864
    functionDepth: 0
    functionLinenumber: 864
    functionLinenumberEnd: 872
    functionName: NSECBitmap::count
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.hh
    functionUses: 8
    functionsReached:
    - NSECBitmap::count
    - size
    linkageType: ''
    returnType: size_t
    signature: size_t count() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/recursordist/dnsrecords.hh:885,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 886
      start: 880
    functionDepth: 0
    functionLinenumber: 880
    functionLinenumberEnd: 886
    functionName: NSECBitmap::sizeEstimate
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.hh
    functionUses: 0
    functionsReached:
    - size
    linkageType: ''
    returnType: size_t
    signature: size_t sizeEstimate() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::make_unique<std::bitset<nbTypes>>
      Src: /src/pdns/pdns/recursordist/dnsrecords.hh:892,1
    - Dst: NSECBitmap::set
      Src: /src/pdns/pdns/recursordist/dnsrecords.hh:894,1
    - Dst: clear
      Src: /src/pdns/pdns/recursordist/dnsrecords.hh:896,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 897
      start: 890
    functionDepth: 1
    functionLinenumber: 890
    functionLinenumberEnd: 897
    functionName: NSECBitmap::migrateToBitSet
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.hh
    functionUses: 2
    functionsReached:
    - clear
    - NSECBitmap::set
    - std::make_unique<std::bitset<nbTypes>>
    linkageType: ''
    returnType: void
    signature: void migrateToBitSet()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 911
      start: 911
    functionDepth: 0
    functionLinenumber: 911
    functionLinenumberEnd: 911
    functionName: NSECRecordContent::NSECRecordContent
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.hh
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void NSECRecordContent()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 921
      start: 918
    functionDepth: 0
    functionLinenumber: 918
    functionLinenumberEnd: 921
    functionName: NSECRecordContent::getType
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t getType() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: NSECRecordContent::isSet
      Src: /src/pdns/pdns/recursordist/dnsrecords.hh:924,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - type
    argTypes:
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 925
      start: 922
    functionDepth: 0
    functionLinenumber: 922
    functionLinenumberEnd: 925
    functionName: NSECRecordContent::isSet
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.hh
    functionUses: 2
    functionsReached:
    - NSECRecordContent::isSet
    linkageType: ''
    returnType: bool
    signature: bool isSet(uint16_t type) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: NSECRecordContent::set
      Src: /src/pdns/pdns/recursordist/dnsrecords.hh:928,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - type
    argTypes:
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 929
      start: 926
    functionDepth: 0
    functionLinenumber: 926
    functionLinenumberEnd: 929
    functionName: NSECRecordContent::set
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.hh
    functionUses: 6
    functionsReached:
    - NSECRecordContent::set
    linkageType: ''
    returnType: void
    signature: void set(uint16_t type)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' bitmap'
    argTypes:
    - NSECBitmap
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 933
      start: 930
    functionDepth: 0
    functionLinenumber: 930
    functionLinenumberEnd: 933
    functionName: NSECRecordContent::set
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.hh
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void set(const NSECBitmap& bitmap)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: count
      Src: /src/pdns/pdns/recursordist/dnsrecords.hh:936,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 937
      start: 934
    functionDepth: 0
    functionLinenumber: 934
    functionLinenumberEnd: 937
    functionName: NSECRecordContent::numberOfTypesSet
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.hh
    functionUses: 0
    functionsReached:
    - count
    linkageType: ''
    returnType: size_t
    signature: size_t numberOfTypesSet() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: NSECRecordContent::sizeEstimate
      Src: /src/pdns/pdns/recursordist/dnsrecords.hh:941,1
    - Dst: NSECRecordContent::sizeEstimate
      Src: /src/pdns/pdns/recursordist/dnsrecords.hh:941,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 942
      start: 939
    functionDepth: 0
    functionLinenumber: 939
    functionLinenumberEnd: 942
    functionName: NSECRecordContent::sizeEstimate
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.hh
    functionUses: 2
    functionsReached:
    - NSECRecordContent::sizeEstimate
    linkageType: ''
    returnType: size_t
    signature: size_t sizeEstimate() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 952
      start: 952
    functionDepth: 0
    functionLinenumber: 952
    functionLinenumberEnd: 952
    functionName: NSEC3RecordContent::NSEC3RecordContent
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.hh
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void NSEC3RecordContent()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 968
      start: 965
    functionDepth: 0
    functionLinenumber: 965
    functionLinenumberEnd: 968
    functionName: NSEC3RecordContent::getType
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t getType() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: NSEC3RecordContent::isSet
      Src: /src/pdns/pdns/recursordist/dnsrecords.hh:971,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - type
    argTypes:
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 972
      start: 969
    functionDepth: 0
    functionLinenumber: 969
    functionLinenumberEnd: 972
    functionName: NSEC3RecordContent::isSet
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.hh
    functionUses: 5
    functionsReached:
    - NSEC3RecordContent::isSet
    linkageType: ''
    returnType: bool
    signature: bool isSet(uint16_t type) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: NSEC3RecordContent::set
      Src: /src/pdns/pdns/recursordist/dnsrecords.hh:975,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - type
    argTypes:
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 976
      start: 973
    functionDepth: 0
    functionLinenumber: 973
    functionLinenumberEnd: 976
    functionName: NSEC3RecordContent::set
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.hh
    functionUses: 6
    functionsReached:
    - NSEC3RecordContent::set
    linkageType: ''
    returnType: void
    signature: void set(uint16_t type)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' bitmap'
    argTypes:
    - NSECBitmap
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 980
      start: 977
    functionDepth: 0
    functionLinenumber: 977
    functionLinenumberEnd: 980
    functionName: NSEC3RecordContent::set
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.hh
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void set(const NSECBitmap& bitmap)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: count
      Src: /src/pdns/pdns/recursordist/dnsrecords.hh:983,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 984
      start: 981
    functionDepth: 0
    functionLinenumber: 981
    functionLinenumberEnd: 984
    functionName: NSEC3RecordContent::numberOfTypesSet
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.hh
    functionUses: 2
    functionsReached:
    - count
    linkageType: ''
    returnType: size_t
    signature: size_t numberOfTypesSet() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 988
      start: 985
    functionDepth: 0
    functionLinenumber: 985
    functionLinenumberEnd: 988
    functionName: NSEC3RecordContent::isOptOut
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool isOptOut() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/recursordist/dnsrecords.hh:992,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/dnsrecords.hh:992,1
    - Dst: NSEC3RecordContent::sizeEstimate
      Src: /src/pdns/pdns/recursordist/dnsrecords.hh:992,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 993
      start: 990
    functionDepth: 0
    functionLinenumber: 990
    functionLinenumberEnd: 993
    functionName: NSEC3RecordContent::sizeEstimate
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.hh
    functionUses: 2
    functionsReached:
    - NSEC3RecordContent::sizeEstimate
    - size
    linkageType: ''
    returnType: size_t
    signature: size_t sizeEstimate() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1002
      start: 1002
    functionDepth: 0
    functionLinenumber: 1002
    functionLinenumberEnd: 1002
    functionName: CSYNCRecordContent::CSYNCRecordContent
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void CSYNCRecordContent()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1013
      start: 1010
    functionDepth: 0
    functionLinenumber: 1010
    functionLinenumberEnd: 1013
    functionName: CSYNCRecordContent::getType
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t getType() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CSYNCRecordContent::set
      Src: /src/pdns/pdns/recursordist/dnsrecords.hh:1017,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - type
    argTypes:
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1018
      start: 1015
    functionDepth: 0
    functionLinenumber: 1015
    functionLinenumberEnd: 1018
    functionName: CSYNCRecordContent::set
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.hh
    functionUses: 4
    functionsReached:
    - CSYNCRecordContent::set
    linkageType: ''
    returnType: void
    signature: void set(uint16_t type)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CSYNCRecordContent::sizeEstimate
      Src: /src/pdns/pdns/recursordist/dnsrecords.hh:1022,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1023
      start: 1020
    functionDepth: 0
    functionLinenumber: 1020
    functionLinenumberEnd: 1023
    functionName: CSYNCRecordContent::sizeEstimate
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.hh
    functionUses: 2
    functionsReached:
    - CSYNCRecordContent::sizeEstimate
    linkageType: ''
    returnType: size_t
    signature: size_t sizeEstimate() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1035
      start: 1035
    functionDepth: 0
    functionLinenumber: 1035
    functionLinenumberEnd: 1035
    functionName: NSEC3PARAMRecordContent::NSEC3PARAMRecordContent
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.hh
    functionUses: 11
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void NSEC3PARAMRecordContent()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1046
      start: 1043
    functionDepth: 0
    functionLinenumber: 1043
    functionLinenumberEnd: 1046
    functionName: NSEC3PARAMRecordContent::getType
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t getType() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/recursordist/dnsrecords.hh:1050,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1051
      start: 1048
    functionDepth: 0
    functionLinenumber: 1048
    functionLinenumberEnd: 1051
    functionName: NSEC3PARAMRecordContent::sizeEstimate
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.hh
    functionUses: 0
    functionsReached:
    - size
    linkageType: ''
    returnType: size_t
    signature: size_t sizeEstimate() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1063
      start: 1063
    functionDepth: 0
    functionLinenumber: 1063
    functionLinenumberEnd: 1063
    functionName: LOCRecordContent::LOCRecordContent
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void LOCRecordContent()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1076
      start: 1073
    functionDepth: 0
    functionLinenumber: 1073
    functionLinenumberEnd: 1076
    functionName: LOCRecordContent::getType
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t getType() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1081
      start: 1078
    functionDepth: 0
    functionLinenumber: 1078
    functionLinenumberEnd: 1081
    functionName: LOCRecordContent::sizeEstimate
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: size_t sizeEstimate() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1093
      start: 1090
    functionDepth: 0
    functionLinenumber: 1090
    functionLinenumberEnd: 1093
    functionName: NIDRecordContent::sizeEstimate
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: size_t sizeEstimate() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1107
      start: 1104
    functionDepth: 0
    functionLinenumber: 1104
    functionLinenumberEnd: 1107
    functionName: L32RecordContent::sizeEstimate
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: size_t sizeEstimate() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1121
      start: 1118
    functionDepth: 0
    functionLinenumber: 1118
    functionLinenumberEnd: 1121
    functionName: L64RecordContent::sizeEstimate
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: size_t sizeEstimate() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LPRecordContent::sizeEstimate
      Src: /src/pdns/pdns/recursordist/dnsrecords.hh:1134,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1135
      start: 1132
    functionDepth: 0
    functionLinenumber: 1132
    functionLinenumberEnd: 1135
    functionName: LPRecordContent::sizeEstimate
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.hh
    functionUses: 2
    functionsReached:
    - LPRecordContent::sizeEstimate
    linkageType: ''
    returnType: size_t
    signature: size_t sizeEstimate() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/recursordist/dnsrecords.hh:1149,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1150
      start: 1147
    functionDepth: 0
    functionLinenumber: 1147
    functionLinenumberEnd: 1150
    functionName: WALLETRecordContent::sizeEstimate
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.hh
    functionUses: 0
    functionsReached:
    - size
    linkageType: ''
    returnType: size_t
    signature: size_t sizeEstimate() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1159
      start: 1159
    functionDepth: 0
    functionLinenumber: 1159
    functionLinenumberEnd: 1159
    functionName: EUI48RecordContent::EUI48RecordContent
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void EUI48RecordContent()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1165
      start: 1165
    functionDepth: 0
    functionLinenumber: 1165
    functionLinenumberEnd: 1165
    functionName: EUI48RecordContent::getType
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t getType() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1169
      start: 1166
    functionDepth: 0
    functionLinenumber: 1166
    functionLinenumberEnd: 1169
    functionName: EUI48RecordContent::sizeEstimate
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: size_t sizeEstimate() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1178
      start: 1178
    functionDepth: 0
    functionLinenumber: 1178
    functionLinenumberEnd: 1178
    functionName: EUI64RecordContent::EUI64RecordContent
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void EUI64RecordContent()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1184
      start: 1184
    functionDepth: 0
    functionLinenumber: 1184
    functionLinenumberEnd: 1184
    functionName: EUI64RecordContent::getType
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t getType() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1188
      start: 1185
    functionDepth: 0
    functionLinenumber: 1185
    functionLinenumberEnd: 1188
    functionName: EUI64RecordContent::sizeEstimate
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: size_t sizeEstimate() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1209
      start: 1209
    functionDepth: 0
    functionLinenumber: 1209
    functionLinenumberEnd: 1209
    functionName: APLRecordContent::APLRecordContent
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void APLRecordContent()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/recursordist/dnsrecords.hh:1213,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1214
      start: 1211
    functionDepth: 0
    functionLinenumber: 1211
    functionLinenumberEnd: 1214
    functionName: APLRecordContent::sizeEstimate
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.hh
    functionUses: 0
    functionsReached:
    - size
    linkageType: ''
    returnType: size_t
    signature: size_t sizeEstimate() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1224
      start: 1224
    functionDepth: 0
    functionLinenumber: 1224
    functionLinenumberEnd: 1224
    functionName: TKEYRecordContent::TKEYRecordContent
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.hh
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void TKEYRecordContent()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TKEYRecordContent::sizeEstimate
      Src: /src/pdns/pdns/recursordist/dnsrecords.hh:1228,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/dnsrecords.hh:1228,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/dnsrecords.hh:1228,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1229
      start: 1226
    functionDepth: 0
    functionLinenumber: 1226
    functionLinenumberEnd: 1229
    functionName: TKEYRecordContent::sizeEstimate
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.hh
    functionUses: 2
    functionsReached:
    - TKEYRecordContent::sizeEstimate
    - size
    linkageType: ''
    returnType: size_t
    signature: size_t sizeEstimate() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/recursordist/dnsrecords.hh:1251,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1252
      start: 1249
    functionDepth: 0
    functionLinenumber: 1249
    functionLinenumberEnd: 1252
    functionName: URIRecordContent::sizeEstimate
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.hh
    functionUses: 0
    functionsReached:
    - size
    linkageType: ''
    returnType: size_t
    signature: size_t sizeEstimate() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/recursordist/dnsrecords.hh:1263,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/dnsrecords.hh:1263,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1264
      start: 1261
    functionDepth: 0
    functionLinenumber: 1261
    functionLinenumberEnd: 1264
    functionName: CAARecordContent::sizeEstimate
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.hh
    functionUses: 0
    functionsReached:
    - size
    linkageType: ''
    returnType: size_t
    signature: size_t sizeEstimate() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/recursordist/dnsrecords.hh:1277,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1278
      start: 1275
    functionDepth: 0
    functionLinenumber: 1275
    functionLinenumberEnd: 1278
    functionName: RESINFORecordContent::sizeEstimate
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.hh
    functionUses: 0
    functionsReached:
    - size
    linkageType: ''
    returnType: size_t
    signature: size_t sizeEstimate() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<uint16_t>
      Src: /src/pdns/pdns/recursordist/dnsrecords.hh:1357,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rcode
    argTypes:
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1358
      start: 1355
    functionDepth: 0
    functionLinenumber: 1355
    functionLinenumberEnd: 1358
    functionName: getCombinedERCode
    functionSourceFile: /src/pdns/pdns/recursordist/dnsrecords.hh
    functionUses: 0
    functionsReached:
    - static_cast<uint16_t>
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t getCombinedERCode(uint8_t rcode) const
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: cap_get_proc
      Src: /src/pdns/pdns/recursordist/capabilities.cc:39,1
    - Dst: cap_clear
      Src: /src/pdns/pdns/recursordist/capabilities.cc:41,1
    - Dst: std::set<std::string>::empty
      Src: /src/pdns/pdns/recursordist/capabilities.cc:43,1
    - Dst: std::vector::reserve
      Src: /src/pdns/pdns/recursordist/capabilities.cc:45,1
    - Dst: std::set<std::string>::size
      Src: /src/pdns/pdns/recursordist/capabilities.cc:45,1
    - Dst: cap_from_name
      Src: /src/pdns/pdns/recursordist/capabilities.cc:49,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/capabilities.cc:49,1
    - Dst: cap_free
      Src: /src/pdns/pdns/recursordist/capabilities.cc:51,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/capabilities.cc:52,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/capabilities.cc:52,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/recursordist/capabilities.cc:54,1
    - Dst: cap_set_flag
      Src: /src/pdns/pdns/recursordist/capabilities.cc:57,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/recursordist/capabilities.cc:57,1
    - Dst: std::vector::data
      Src: /src/pdns/pdns/recursordist/capabilities.cc:57,1
    - Dst: cap_free
      Src: /src/pdns/pdns/recursordist/capabilities.cc:58,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/capabilities.cc:59,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/capabilities.cc:59,1
    - Dst: cap_set_flag
      Src: /src/pdns/pdns/recursordist/capabilities.cc:62,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/recursordist/capabilities.cc:62,1
    - Dst: std::vector::data
      Src: /src/pdns/pdns/recursordist/capabilities.cc:62,1
    - Dst: cap_free
      Src: /src/pdns/pdns/recursordist/capabilities.cc:63,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/capabilities.cc:64,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/capabilities.cc:64,1
    - Dst: cap_set_proc
      Src: /src/pdns/pdns/recursordist/capabilities.cc:68,1
    - Dst: cap_free
      Src: /src/pdns/pdns/recursordist/capabilities.cc:69,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/capabilities.cc:73,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/capabilities.cc:73,1
    - Dst: cap_free
      Src: /src/pdns/pdns/recursordist/capabilities.cc:76,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 31
    argCount: 1
    argNames:
    - capabilitiesToKeep
    argTypes:
    - std::set<std::string>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 36
    functionDepth: 0
    functionLinenumber: 36
    functionLinenumberEnd: 81
    functionName: dropCapabilities
    functionSourceFile: /src/pdns/pdns/recursordist/capabilities.cc
    functionUses: 2
    functionsReached:
    - std::vector::push_back
    - std::vector::size
    - std::runtime_error
    - cap_get_proc
    - std::set<std::string>::empty
    - cap_clear
    - stringerror
    - cap_free
    - cap_from_name
    - cap_set_flag
    - std::vector::data
    - std::vector::reserve
    - cap_set_proc
    - c_str
    - std::set<std::string>::size
    linkageType: ''
    returnType: bool
    signature: bool dropCapabilities([[maybe_unused]] std::set<std::string> capabilitiesToKeep)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: prctl
      Src: /src/pdns/pdns/recursordist/capabilities.cc:87,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 83
    functionDepth: 0
    functionLinenumber: 83
    functionLinenumberEnd: 95
    functionName: dropCapabilitiesAfterSwitchingIDs
    functionSourceFile: /src/pdns/pdns/recursordist/capabilities.cc
    functionUses: 1
    functionsReached:
    - prctl
    linkageType: ''
    returnType: bool
    signature: bool dropCapabilitiesAfterSwitchingIDs()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: prctl
      Src: /src/pdns/pdns/recursordist/capabilities.cc:101,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 97
    functionDepth: 0
    functionLinenumber: 97
    functionLinenumberEnd: 109
    functionName: keepCapabilitiesAfterSwitchingIDs
    functionSourceFile: /src/pdns/pdns/recursordist/capabilities.cc
    functionUses: 1
    functionsReached:
    - prctl
    linkageType: ''
    returnType: bool
    signature: bool keepCapabilitiesAfterSwitchingIDs()
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: name::empty
      Src: /src/pdns/pdns/recursordist/tsigverifier.cc:8,1
    - Dst: append
      Src: /src/pdns/pdns/recursordist/tsigverifier.cc:16,1
    - Dst: getTSIGPos
      Src: /src/pdns/pdns/recursordist/tsigverifier.cc:17,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/tsigverifier.cc:18,1
    - Dst: getTSIGPos
      Src: /src/pdns/pdns/recursordist/tsigverifier.cc:21,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/tsigverifier.cc:31,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/tsigverifier.cc:44,1
    - Dst: string::empty
      Src: /src/pdns/pdns/recursordist/tsigverifier.cc:48,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/tsigverifier.cc:49,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/recursordist/tsigverifier.cc:49,1
    - Dst: name::toLogString
      Src: /src/pdns/pdns/recursordist/tsigverifier.cc:49,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/tsigverifier.cc:53,1
    - Dst: validateTSIG
      Src: /src/pdns/pdns/recursordist/tsigverifier.cc:54,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/tsigverifier.cc:54,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/tsigverifier.cc:54,1
    - Dst: validateTSIG
      Src: /src/pdns/pdns/recursordist/tsigverifier.cc:57,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/tsigverifier.cc:61,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/recursordist/tsigverifier.cc:61,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/tsigverifier.cc:61,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/tsigverifier.cc:65,1
    - Dst: clear
      Src: /src/pdns/pdns/recursordist/tsigverifier.cc:67,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 48
    argCount: 2
    argNames:
    - ' data'
    - ' mdp'
    argTypes:
    - string
    - MOADNSParser
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 6
    functionDepth: 1
    functionLinenumber: 6
    functionLinenumberEnd: 75
    functionName: TSIGTCPVerifier::check
    functionSourceFile: /src/pdns/pdns/recursordist/tsigverifier.cc
    functionUses: 1
    functionsReached:
    - getRR
    - std::move
    - std::runtime_error
    - string::empty
    - what
    - append
    - getTSIGPos
    - validateTSIG
    - size
    - name::empty
    - name::toLogString
    - clear
    - empty
    - toStringWithPort
    linkageType: ''
    returnType: bool
    signature: bool TSIGTCPVerifier::check(const string& data, const MOADNSParser&
      mdp)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/fstrm_logger.cc:19,1
    - Dst: fstrm_writer_options_init
      Src: /src/pdns/pdns/recursordist/fstrm_logger.cc:22,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/fstrm_logger.cc:24,1
    - Dst: fstrm_writer_options_add_content_type
      Src: /src/pdns/pdns/recursordist/fstrm_logger.cc:27,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/fstrm_logger.cc:27,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/fstrm_logger.cc:27,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/fstrm_logger.cc:29,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/fstrm_logger.cc:29,1
    - Dst: makeUNsockaddr
      Src: /src/pdns/pdns/recursordist/fstrm_logger.cc:34,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/fstrm_logger.cc:35,1
    - Dst: fstrm_unix_writer_options_init
      Src: /src/pdns/pdns/recursordist/fstrm_logger.cc:38,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/fstrm_logger.cc:40,1
    - Dst: fstrm_unix_writer_options_set_socket_path
      Src: /src/pdns/pdns/recursordist/fstrm_logger.cc:44,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/fstrm_logger.cc:44,1
    - Dst: fstrm_unix_writer_init
      Src: /src/pdns/pdns/recursordist/fstrm_logger.cc:46,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/fstrm_logger.cc:48,1
    - Dst: fstrm_tcp_writer_options_init
      Src: /src/pdns/pdns/recursordist/fstrm_logger.cc:53,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/fstrm_logger.cc:55,1
    - Dst: fstrm_tcp_writer_options_set_socket_address
      Src: /src/pdns/pdns/recursordist/fstrm_logger.cc:62,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/recursordist/fstrm_logger.cc:62,1
    - Dst: fstrm_tcp_writer_options_set_socket_port
      Src: /src/pdns/pdns/recursordist/fstrm_logger.cc:63,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/fstrm_logger.cc:63,1
    - Dst: ComboAddress::getPort
      Src: /src/pdns/pdns/recursordist/fstrm_logger.cc:63,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/fstrm_logger.cc:66,1
    - Dst: fstrm_tcp_writer_init
      Src: /src/pdns/pdns/recursordist/fstrm_logger.cc:69,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/fstrm_logger.cc:71,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/fstrm_logger.cc:76,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/fstrm_logger.cc:76,1
    - Dst: fstrm_iothr_options_init
      Src: /src/pdns/pdns/recursordist/fstrm_logger.cc:79,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/fstrm_logger.cc:81,1
    - Dst: fstrm_iothr_options_set_queue_model
      Src: /src/pdns/pdns/recursordist/fstrm_logger.cc:84,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/fstrm_logger.cc:86,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/fstrm_logger.cc:86,1
    - Dst: find
      Src: /src/pdns/pdns/recursordist/fstrm_logger.cc:102,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/fstrm_logger.cc:102,1
    - Dst: function
      Src: /src/pdns/pdns/recursordist/fstrm_logger.cc:103,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/fstrm_logger.cc:105,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/fstrm_logger.cc:105,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/fstrm_logger.cc:105,1
    - Dst: fstrm_iothr_init
      Src: /src/pdns/pdns/recursordist/fstrm_logger.cc:111,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/fstrm_logger.cc:113,1
    - Dst: fstrm_iothr_get_input_queue
      Src: /src/pdns/pdns/recursordist/fstrm_logger.cc:116,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/fstrm_logger.cc:118,1
    - Dst: FrameStreamLogger::cleanup
      Src: /src/pdns/pdns/recursordist/fstrm_logger.cc:123,1
    CyclomaticComplexity: 36
    EdgeCount: 36
    ICount: 70
    argCount: 4
    argNames:
    - family
    - address
    - connect
    - ' options'
    argTypes:
    - int
    - std::string
    - bool
    - std::unordered_map<string, unsigned>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 18
    functionDepth: 0
    functionLinenumber: 18
    functionLinenumberEnd: 126
    functionName: FrameStreamLogger::FrameStreamLogger
    functionSourceFile: /src/pdns/pdns/recursordist/fstrm_logger.cc
    functionUses: 1
    functionsReached:
    - std::to_string
    - fstrm_iothr_init
    - fstrm_iothr_options_init
    - fstrm_writer_options_init
    - fstrm_unix_writer_options_init
    - find
    - fstrm_iothr_options_set_queue_model
    - string
    - fstrm_writer_options_add_content_type
    - size
    - fstrm_unix_writer_options_set_socket_path
    - fstrm_tcp_writer_options_init
    - ComboAddress::getPort
    - c_str
    - std::runtime_error
    - fstrm_tcp_writer_options_set_socket_port
    - makeUNsockaddr
    - FrameStreamLogger::cleanup
    - std::move
    - fstrm_tcp_writer_init
    - fstrm_iothr_get_input_queue
    - end
    - fstrm_unix_writer_init
    - ComboAddress::toString
    - function
    - fstrm_tcp_writer_options_set_socket_address
    linkageType: ''
    returnType: void
    signature: void FrameStreamLogger::FrameStreamLogger(const int family, std::string
      address, bool connect, const std::unordered_map<string, unsigned>& options)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: fstrm_iothr_destroy
      Src: /src/pdns/pdns/recursordist/fstrm_logger.cc:131,1
    - Dst: fstrm_iothr_options_destroy
      Src: /src/pdns/pdns/recursordist/fstrm_logger.cc:135,1
    - Dst: fstrm_writer_destroy
      Src: /src/pdns/pdns/recursordist/fstrm_logger.cc:139,1
    - Dst: fstrm_unix_writer_options_destroy
      Src: /src/pdns/pdns/recursordist/fstrm_logger.cc:143,1
    - Dst: fstrm_tcp_writer_options_destroy
      Src: /src/pdns/pdns/recursordist/fstrm_logger.cc:148,1
    - Dst: fstrm_writer_options_destroy
      Src: /src/pdns/pdns/recursordist/fstrm_logger.cc:153,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 25
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 156
      start: 128
    functionDepth: 0
    functionLinenumber: 128
    functionLinenumberEnd: 156
    functionName: FrameStreamLogger::cleanup
    functionSourceFile: /src/pdns/pdns/recursordist/fstrm_logger.cc
    functionUses: 5
    functionsReached:
    - fstrm_writer_options_destroy
    - fstrm_writer_destroy
    - fstrm_iothr_destroy
    - fstrm_iothr_options_destroy
    - fstrm_unix_writer_options_destroy
    - fstrm_tcp_writer_options_destroy
    linkageType: ''
    returnType: void
    signature: void FrameStreamLogger::cleanup()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: FrameStreamLogger::cleanup
      Src: /src/pdns/pdns/recursordist/fstrm_logger.cc:160,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 161
      start: 158
    functionDepth: 0
    functionLinenumber: 158
    functionLinenumberEnd: 161
    functionName: FrameStreamLogger::~FrameStreamLogger()
    functionSourceFile: /src/pdns/pdns/recursordist/fstrm_logger.cc
    functionUses: 0
    functionsReached:
    - FrameStreamLogger::cleanup
    linkageType: ''
    returnType: void
    signature: void FrameStreamLogger::~FrameStreamLogger()
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/pdns/pdns/recursordist/fstrm_logger.cc:169,1
    - Dst: length
      Src: /src/pdns/pdns/recursordist/fstrm_logger.cc:169,1
    - Dst: memcpy
      Src: /src/pdns/pdns/recursordist/fstrm_logger.cc:174,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/fstrm_logger.cc:174,1
    - Dst: length
      Src: /src/pdns/pdns/recursordist/fstrm_logger.cc:174,1
    - Dst: fstrm_iothr_submit
      Src: /src/pdns/pdns/recursordist/fstrm_logger.cc:176,1
    - Dst: length
      Src: /src/pdns/pdns/recursordist/fstrm_logger.cc:176,1
    - Dst: free
      Src: /src/pdns/pdns/recursordist/fstrm_logger.cc:185,1
    - Dst: free
      Src: /src/pdns/pdns/recursordist/fstrm_logger.cc:190,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 22
    argCount: 1
    argNames:
    - ' data'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 193
      start: 163
    functionDepth: 0
    functionLinenumber: 163
    functionLinenumberEnd: 193
    functionName: FrameStreamLogger::queueData
    functionSourceFile: /src/pdns/pdns/recursordist/fstrm_logger.cc
    functionUses: 0
    functionsReached:
    - length
    - memcpy
    - fstrm_iothr_submit
    - free
    - malloc
    - c_str
    linkageType: ''
    returnType: RemoteLoggerInterface::Result
    signature: RemoteLoggerInterface::Result FrameStreamLogger::queueData(const std::string&
      data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::basic_pbf_writer::basic_pbf_writer
      Src: /src/pdns/pdns/recursordist/rec-protozero.hh:40,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 37
    functionDepth: 1
    functionLinenumber: 37
    functionLinenumberEnd: 41
    functionName: pdns::ProtoZero::RecMessage::RecMessage
    functionSourceFile: /src/pdns/pdns/recursordist/rec-protozero.hh
    functionUses: 0
    functionsReached:
    - protozero::basic_pbf_writer::basic_pbf_writer
    linkageType: ''
    returnType: void
    signature: void RecMessage()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::basic_pbf_writer::basic_pbf_writer
      Src: /src/pdns/pdns/recursordist/rec-protozero.hh:46,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' buffer'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 43
    functionDepth: 1
    functionLinenumber: 43
    functionLinenumberEnd: 47
    functionName: pdns::ProtoZero::RecMessage::RecMessage
    functionSourceFile: /src/pdns/pdns/recursordist/rec-protozero.hh
    functionUses: 0
    functionsReached:
    - protozero::basic_pbf_writer::basic_pbf_writer
    linkageType: ''
    returnType: void
    signature: void RecMessage(std::string& buffer)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::RecMessage::reserve
      Src: /src/pdns/pdns/recursordist/rec-protozero.hh:53,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - sz1
    - sz2
    argTypes:
    - std::string::size_type
    - std::string::size_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 50
    functionDepth: 1
    functionLinenumber: 50
    functionLinenumberEnd: 54
    functionName: pdns::ProtoZero::RecMessage::RecMessage
    functionSourceFile: /src/pdns/pdns/recursordist/rec-protozero.hh
    functionUses: 0
    functionsReached:
    - pdns::ProtoZero::RecMessage::reserve
    linkageType: ''
    returnType: void
    signature: void RecMessage(std::string::size_type sz1, std::string::size_type
      sz2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::basic_pbf_writer::basic_pbf_writer
      Src: /src/pdns/pdns/recursordist/rec-protozero.hh:62,1
    - Dst: protozero::basic_pbf_writer::basic_pbf_writer
      Src: /src/pdns/pdns/recursordist/rec-protozero.hh:63,1
    - Dst: pdns::ProtoZero::RecMessage::reserve
      Src: /src/pdns/pdns/recursordist/rec-protozero.hh:64,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 4
    argNames:
    - ' buf1'
    - ' buf2'
    - sz1
    - sz2
    argTypes:
    - std::string
    - std::string
    - std::string::size_type
    - std::string::size_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 57
    functionDepth: 1
    functionLinenumber: 57
    functionLinenumberEnd: 65
    functionName: pdns::ProtoZero::RecMessage::RecMessage
    functionSourceFile: /src/pdns/pdns/recursordist/rec-protozero.hh
    functionUses: 0
    functionsReached:
    - protozero::basic_pbf_writer::basic_pbf_writer
    - pdns::ProtoZero::RecMessage::reserve
    linkageType: ''
    returnType: void
    signature: void RecMessage(const std::string& buf1, const std::string& buf2, std::string::size_type
      sz1, std::string::size_type sz2)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 66
    functionDepth: 0
    functionLinenumber: 66
    functionLinenumberEnd: 66
    functionName: pdns::ProtoZero::RecMessage::RecMessage
    functionSourceFile: /src/pdns/pdns/recursordist/rec-protozero.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void RecMessage(const Message&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 67
    functionDepth: 0
    functionLinenumber: 67
    functionLinenumberEnd: 67
    functionName: pdns::ProtoZero::RecMessage::RecMessage
    functionSourceFile: /src/pdns/pdns/recursordist/rec-protozero.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void RecMessage(Message&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 68
    functionDepth: 0
    functionLinenumber: 68
    functionLinenumberEnd: 68
    functionName: '& operator=(const Message&)'
    functionSourceFile: /src/pdns/pdns/recursordist/rec-protozero.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: RecMessage
    signature: RecMessage & operator=(const Message&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 69
    functionDepth: 0
    functionLinenumber: 69
    functionLinenumberEnd: 69
    functionName: '& operator=(Message&&)'
    functionSourceFile: /src/pdns/pdns/recursordist/rec-protozero.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: RecMessage
    signature: RecMessage & operator=(Message&&)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: length
      Src: /src/pdns/pdns/recursordist/rec-protozero.hh:76,1
    - Dst: capacity
      Src: /src/pdns/pdns/recursordist/rec-protozero.hh:77,1
    - Dst: pdns::ProtoZero::RecMessage::size
      Src: /src/pdns/pdns/recursordist/rec-protozero.hh:77,1
    - Dst: pdns::ProtoZero::RecMessage::reserve
      Src: /src/pdns/pdns/recursordist/rec-protozero.hh:78,1
    - Dst: capacity
      Src: /src/pdns/pdns/recursordist/rec-protozero.hh:80,1
    - Dst: pdns::ProtoZero::RecMessage::size
      Src: /src/pdns/pdns/recursordist/rec-protozero.hh:80,1
    - Dst: pdns::ProtoZero::RecMessage::reserve
      Src: /src/pdns/pdns/recursordist/rec-protozero.hh:81,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - sz1
    - sz2
    argTypes:
    - std::string::size_type
    - std::string::size_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 71
    functionDepth: 1
    functionLinenumber: 71
    functionLinenumberEnd: 83
    functionName: pdns::ProtoZero::RecMessage::reserve
    functionSourceFile: /src/pdns/pdns/recursordist/rec-protozero.hh
    functionUses: 3
    functionsReached:
    - length
    - capacity
    - pdns::ProtoZero::RecMessage::reserve
    - pdns::ProtoZero::RecMessage::size
    linkageType: ''
    returnType: void
    signature: void reserve(std::string::size_type sz1, std::string::size_type sz2)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 85
    functionDepth: 0
    functionLinenumber: 85
    functionLinenumberEnd: 88
    functionName: '& getMessageBuf() const'
    functionSourceFile: /src/pdns/pdns/recursordist/rec-protozero.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string & getMessageBuf() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 90
    functionDepth: 0
    functionLinenumber: 90
    functionLinenumberEnd: 93
    functionName: '& getResponseBuf() const'
    functionSourceFile: /src/pdns/pdns/recursordist/rec-protozero.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string & getResponseBuf() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::RecMessage::size
      Src: /src/pdns/pdns/recursordist/rec-protozero.hh:97,1
    - Dst: pdns::ProtoZero::RecMessage::size
      Src: /src/pdns/pdns/recursordist/rec-protozero.hh:97,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 95
    functionDepth: 0
    functionLinenumber: 95
    functionLinenumberEnd: 98
    functionName: pdns::ProtoZero::RecMessage::size
    functionSourceFile: /src/pdns/pdns/recursordist/rec-protozero.hh
    functionUses: 3
    functionsReached:
    - pdns::ProtoZero::RecMessage::size
    linkageType: ''
    returnType: size_t
    signature: size_t size() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/rec-protozero.hh:102,1
    - Dst: add_message
      Src: /src/pdns/pdns/recursordist/rec-protozero.hh:103,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/recursordist/rec-protozero.hh:103,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/rec-protozero.hh:105,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 100
    functionDepth: 0
    functionLinenumber: 100
    functionLinenumberEnd: 106
    functionName: '&& finishAndMoveBuf()'
    functionSourceFile: /src/pdns/pdns/recursordist/rec-protozero.hh
    functionUses: 0
    functionsReached:
    - empty
    - static_cast<protozero::pbf_tag_type>
    - std::move
    - add_message
    linkageType: ''
    returnType: std::string
    signature: std::string && finishAndMoveBuf()
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/rec-protozero.hh:138,1
    - Dst: add_uint32
      Src: /src/pdns/pdns/recursordist/rec-protozero.hh:140,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/recursordist/rec-protozero.hh:140,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 24
    argCount: 1
    argNames:
    - type
    argTypes:
    - DNSFilterEngine::PolicyType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 141
      start: 114
    functionDepth: 0
    functionLinenumber: 114
    functionLinenumberEnd: 141
    functionName: pdns::ProtoZero::RecMessage::setAppliedPolicyType
    functionSourceFile: /src/pdns/pdns/recursordist/rec-protozero.hh
    functionUses: 0
    functionsReached:
    - add_uint32
    - static_cast<protozero::pbf_tag_type>
    - std::runtime_error
    linkageType: ''
    returnType: void
    signature: void setAppliedPolicyType(const DNSFilterEngine::PolicyType type)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: encodeDNSName
      Src: /src/pdns/pdns/recursordist/rec-protozero.hh:145,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/recursordist/rec-protozero.hh:145,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' trigger'
    argTypes:
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 146
      start: 143
    functionDepth: 0
    functionLinenumber: 143
    functionLinenumberEnd: 146
    functionName: pdns::ProtoZero::RecMessage::setAppliedPolicyTrigger
    functionSourceFile: /src/pdns/pdns/recursordist/rec-protozero.hh
    functionUses: 0
    functionsReached:
    - static_cast<protozero::pbf_tag_type>
    - encodeDNSName
    linkageType: ''
    returnType: void
    signature: void setAppliedPolicyTrigger(const DNSName& trigger)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: add_string
      Src: /src/pdns/pdns/recursordist/rec-protozero.hh:150,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/recursordist/rec-protozero.hh:150,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' hit'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 151
      start: 148
    functionDepth: 0
    functionLinenumber: 148
    functionLinenumberEnd: 151
    functionName: pdns::ProtoZero::RecMessage::setAppliedPolicyHit
    functionSourceFile: /src/pdns/pdns/recursordist/rec-protozero.hh
    functionUses: 0
    functionsReached:
    - add_string
    - static_cast<protozero::pbf_tag_type>
    linkageType: ''
    returnType: void
    signature: void setAppliedPolicyHit(const std::string& hit)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/rec-protozero.hh:177,1
    - Dst: add_uint32
      Src: /src/pdns/pdns/recursordist/rec-protozero.hh:179,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/recursordist/rec-protozero.hh:179,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 24
    argCount: 1
    argNames:
    - kind
    argTypes:
    - DNSFilterEngine::PolicyKind
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 180
      start: 153
    functionDepth: 0
    functionLinenumber: 153
    functionLinenumberEnd: 180
    functionName: pdns::ProtoZero::RecMessage::setAppliedPolicyKind
    functionSourceFile: /src/pdns/pdns/recursordist/rec-protozero.hh
    functionUses: 0
    functionsReached:
    - add_uint32
    - static_cast<protozero::pbf_tag_type>
    - std::runtime_error
    linkageType: ''
    returnType: void
    signature: void setAppliedPolicyKind(const DNSFilterEngine::PolicyKind kind)
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/rec-protozero.hh:242,1
    - Dst: add_uint32
      Src: /src/pdns/pdns/recursordist/rec-protozero.hh:244,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/recursordist/rec-protozero.hh:244,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 60
    argCount: 1
    argNames:
    - state
    argTypes:
    - vState
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 245
      start: 182
    functionDepth: 0
    functionLinenumber: 182
    functionLinenumberEnd: 245
    functionName: pdns::ProtoZero::RecMessage::setValidationState
    functionSourceFile: /src/pdns/pdns/recursordist/rec-protozero.hh
    functionUses: 0
    functionsReached:
    - add_uint32
    - static_cast<protozero::pbf_tag_type>
    - std::runtime_error
    linkageType: ''
    returnType: void
    signature: void setValidationState(const vState state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::basic_pbf_writer::basic_pbf_writer
      Src: /src/pdns/pdns/recursordist/rec-protozero.hh:40,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 37
    functionDepth: 1
    functionLinenumber: 37
    functionLinenumberEnd: 41
    functionName: pdns::ProtoZero::RecMessage::RecMessage
    functionSourceFile: /src/pdns/pdns/recursordist/rec-protozero.hh
    functionUses: 0
    functionsReached:
    - protozero::basic_pbf_writer::basic_pbf_writer
    linkageType: ''
    returnType: void
    signature: void RecMessage()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::basic_pbf_writer::basic_pbf_writer
      Src: /src/pdns/pdns/recursordist/rec-protozero.hh:46,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' buffer'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 43
    functionDepth: 1
    functionLinenumber: 43
    functionLinenumberEnd: 47
    functionName: pdns::ProtoZero::RecMessage::RecMessage
    functionSourceFile: /src/pdns/pdns/recursordist/rec-protozero.hh
    functionUses: 0
    functionsReached:
    - protozero::basic_pbf_writer::basic_pbf_writer
    linkageType: ''
    returnType: void
    signature: void RecMessage(std::string& buffer)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::RecMessage::reserve
      Src: /src/pdns/pdns/recursordist/rec-protozero.hh:53,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - sz1
    - sz2
    argTypes:
    - std::string::size_type
    - std::string::size_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 50
    functionDepth: 2
    functionLinenumber: 50
    functionLinenumberEnd: 54
    functionName: pdns::ProtoZero::RecMessage::RecMessage
    functionSourceFile: /src/pdns/pdns/recursordist/rec-protozero.hh
    functionUses: 0
    functionsReached:
    - pdns::ProtoZero::RecMessage::reserve
    linkageType: ''
    returnType: void
    signature: void RecMessage(std::string::size_type sz1, std::string::size_type
      sz2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::basic_pbf_writer::basic_pbf_writer
      Src: /src/pdns/pdns/recursordist/rec-protozero.hh:62,1
    - Dst: protozero::basic_pbf_writer::basic_pbf_writer
      Src: /src/pdns/pdns/recursordist/rec-protozero.hh:63,1
    - Dst: pdns::ProtoZero::RecMessage::reserve
      Src: /src/pdns/pdns/recursordist/rec-protozero.hh:64,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 4
    argNames:
    - ' buf1'
    - ' buf2'
    - sz1
    - sz2
    argTypes:
    - std::string
    - std::string
    - std::string::size_type
    - std::string::size_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 57
    functionDepth: 2
    functionLinenumber: 57
    functionLinenumberEnd: 65
    functionName: pdns::ProtoZero::RecMessage::RecMessage
    functionSourceFile: /src/pdns/pdns/recursordist/rec-protozero.hh
    functionUses: 0
    functionsReached:
    - protozero::basic_pbf_writer::basic_pbf_writer
    - pdns::ProtoZero::RecMessage::reserve
    linkageType: ''
    returnType: void
    signature: void RecMessage(const std::string& buf1, const std::string& buf2, std::string::size_type
      sz1, std::string::size_type sz2)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 66
    functionDepth: 0
    functionLinenumber: 66
    functionLinenumberEnd: 66
    functionName: pdns::ProtoZero::RecMessage::RecMessage
    functionSourceFile: /src/pdns/pdns/recursordist/rec-protozero.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void RecMessage(const Message&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 67
    functionDepth: 0
    functionLinenumber: 67
    functionLinenumberEnd: 67
    functionName: pdns::ProtoZero::RecMessage::RecMessage
    functionSourceFile: /src/pdns/pdns/recursordist/rec-protozero.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void RecMessage(Message&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 68
    functionDepth: 0
    functionLinenumber: 68
    functionLinenumberEnd: 68
    functionName: '& operator=(const Message&)'
    functionSourceFile: /src/pdns/pdns/recursordist/rec-protozero.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: RecMessage
    signature: RecMessage & operator=(const Message&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 69
    functionDepth: 0
    functionLinenumber: 69
    functionLinenumberEnd: 69
    functionName: '& operator=(Message&&)'
    functionSourceFile: /src/pdns/pdns/recursordist/rec-protozero.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: RecMessage
    signature: RecMessage & operator=(Message&&)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: length
      Src: /src/pdns/pdns/recursordist/rec-protozero.hh:76,1
    - Dst: capacity
      Src: /src/pdns/pdns/recursordist/rec-protozero.hh:77,1
    - Dst: pdns::ProtoZero::RecMessage::size
      Src: /src/pdns/pdns/recursordist/rec-protozero.hh:77,1
    - Dst: pdns::ProtoZero::RecMessage::reserve
      Src: /src/pdns/pdns/recursordist/rec-protozero.hh:78,1
    - Dst: capacity
      Src: /src/pdns/pdns/recursordist/rec-protozero.hh:80,1
    - Dst: pdns::ProtoZero::RecMessage::size
      Src: /src/pdns/pdns/recursordist/rec-protozero.hh:80,1
    - Dst: pdns::ProtoZero::RecMessage::reserve
      Src: /src/pdns/pdns/recursordist/rec-protozero.hh:81,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - sz1
    - sz2
    argTypes:
    - std::string::size_type
    - std::string::size_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 71
    functionDepth: 1
    functionLinenumber: 71
    functionLinenumberEnd: 83
    functionName: pdns::ProtoZero::RecMessage::reserve
    functionSourceFile: /src/pdns/pdns/recursordist/rec-protozero.hh
    functionUses: 6
    functionsReached:
    - length
    - capacity
    - pdns::ProtoZero::RecMessage::reserve
    - pdns::ProtoZero::RecMessage::size
    linkageType: ''
    returnType: void
    signature: void reserve(std::string::size_type sz1, std::string::size_type sz2)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 85
    functionDepth: 0
    functionLinenumber: 85
    functionLinenumberEnd: 88
    functionName: '& getMessageBuf() const'
    functionSourceFile: /src/pdns/pdns/recursordist/rec-protozero.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string & getMessageBuf() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 90
    functionDepth: 0
    functionLinenumber: 90
    functionLinenumberEnd: 93
    functionName: '& getResponseBuf() const'
    functionSourceFile: /src/pdns/pdns/recursordist/rec-protozero.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string & getResponseBuf() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::RecMessage::size
      Src: /src/pdns/pdns/recursordist/rec-protozero.hh:97,1
    - Dst: pdns::ProtoZero::RecMessage::size
      Src: /src/pdns/pdns/recursordist/rec-protozero.hh:97,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 95
    functionDepth: 0
    functionLinenumber: 95
    functionLinenumberEnd: 98
    functionName: pdns::ProtoZero::RecMessage::size
    functionSourceFile: /src/pdns/pdns/recursordist/rec-protozero.hh
    functionUses: 5
    functionsReached:
    - pdns::ProtoZero::RecMessage::size
    linkageType: ''
    returnType: size_t
    signature: size_t size() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/rec-protozero.hh:102,1
    - Dst: add_message
      Src: /src/pdns/pdns/recursordist/rec-protozero.hh:103,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/recursordist/rec-protozero.hh:103,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/rec-protozero.hh:105,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 100
    functionDepth: 0
    functionLinenumber: 100
    functionLinenumberEnd: 106
    functionName: '&& finishAndMoveBuf()'
    functionSourceFile: /src/pdns/pdns/recursordist/rec-protozero.hh
    functionUses: 0
    functionsReached:
    - empty
    - static_cast<protozero::pbf_tag_type>
    - std::move
    - add_message
    linkageType: ''
    returnType: std::string
    signature: std::string && finishAndMoveBuf()
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/rec-protozero.hh:138,1
    - Dst: add_uint32
      Src: /src/pdns/pdns/recursordist/rec-protozero.hh:140,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/recursordist/rec-protozero.hh:140,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 24
    argCount: 1
    argNames:
    - type
    argTypes:
    - DNSFilterEngine::PolicyType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 141
      start: 114
    functionDepth: 0
    functionLinenumber: 114
    functionLinenumberEnd: 141
    functionName: pdns::ProtoZero::RecMessage::setAppliedPolicyType
    functionSourceFile: /src/pdns/pdns/recursordist/rec-protozero.hh
    functionUses: 0
    functionsReached:
    - add_uint32
    - static_cast<protozero::pbf_tag_type>
    - std::runtime_error
    linkageType: ''
    returnType: void
    signature: void setAppliedPolicyType(const DNSFilterEngine::PolicyType type)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: encodeDNSName
      Src: /src/pdns/pdns/recursordist/rec-protozero.hh:145,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/recursordist/rec-protozero.hh:145,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' trigger'
    argTypes:
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 146
      start: 143
    functionDepth: 0
    functionLinenumber: 143
    functionLinenumberEnd: 146
    functionName: pdns::ProtoZero::RecMessage::setAppliedPolicyTrigger
    functionSourceFile: /src/pdns/pdns/recursordist/rec-protozero.hh
    functionUses: 0
    functionsReached:
    - static_cast<protozero::pbf_tag_type>
    - encodeDNSName
    linkageType: ''
    returnType: void
    signature: void setAppliedPolicyTrigger(const DNSName& trigger)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: add_string
      Src: /src/pdns/pdns/recursordist/rec-protozero.hh:150,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/recursordist/rec-protozero.hh:150,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' hit'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 151
      start: 148
    functionDepth: 0
    functionLinenumber: 148
    functionLinenumberEnd: 151
    functionName: pdns::ProtoZero::RecMessage::setAppliedPolicyHit
    functionSourceFile: /src/pdns/pdns/recursordist/rec-protozero.hh
    functionUses: 0
    functionsReached:
    - add_string
    - static_cast<protozero::pbf_tag_type>
    linkageType: ''
    returnType: void
    signature: void setAppliedPolicyHit(const std::string& hit)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/rec-protozero.hh:177,1
    - Dst: add_uint32
      Src: /src/pdns/pdns/recursordist/rec-protozero.hh:179,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/recursordist/rec-protozero.hh:179,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 24
    argCount: 1
    argNames:
    - kind
    argTypes:
    - DNSFilterEngine::PolicyKind
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 180
      start: 153
    functionDepth: 0
    functionLinenumber: 153
    functionLinenumberEnd: 180
    functionName: pdns::ProtoZero::RecMessage::setAppliedPolicyKind
    functionSourceFile: /src/pdns/pdns/recursordist/rec-protozero.hh
    functionUses: 0
    functionsReached:
    - add_uint32
    - static_cast<protozero::pbf_tag_type>
    - std::runtime_error
    linkageType: ''
    returnType: void
    signature: void setAppliedPolicyKind(const DNSFilterEngine::PolicyKind kind)
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/rec-protozero.hh:242,1
    - Dst: add_uint32
      Src: /src/pdns/pdns/recursordist/rec-protozero.hh:244,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/recursordist/rec-protozero.hh:244,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 60
    argCount: 1
    argNames:
    - state
    argTypes:
    - vState
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 245
      start: 182
    functionDepth: 0
    functionLinenumber: 182
    functionLinenumberEnd: 245
    functionName: pdns::ProtoZero::RecMessage::setValidationState
    functionSourceFile: /src/pdns/pdns/recursordist/rec-protozero.hh
    functionUses: 0
    functionsReached:
    - add_uint32
    - static_cast<protozero::pbf_tag_type>
    - std::runtime_error
    linkageType: ''
    returnType: void
    signature: void setValidationState(const vState state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::basic_pbf_writer::basic_pbf_writer
      Src: /src/pdns/pdns/recursordist/rec-protozero.hh:40,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 37
    functionDepth: 1
    functionLinenumber: 37
    functionLinenumberEnd: 41
    functionName: pdns::ProtoZero::RecMessage::RecMessage
    functionSourceFile: /src/pdns/pdns/recursordist/rec-protozero.hh
    functionUses: 0
    functionsReached:
    - protozero::basic_pbf_writer::basic_pbf_writer
    linkageType: ''
    returnType: void
    signature: void RecMessage()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::basic_pbf_writer::basic_pbf_writer
      Src: /src/pdns/pdns/recursordist/rec-protozero.hh:46,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' buffer'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 43
    functionDepth: 1
    functionLinenumber: 43
    functionLinenumberEnd: 47
    functionName: pdns::ProtoZero::RecMessage::RecMessage
    functionSourceFile: /src/pdns/pdns/recursordist/rec-protozero.hh
    functionUses: 0
    functionsReached:
    - protozero::basic_pbf_writer::basic_pbf_writer
    linkageType: ''
    returnType: void
    signature: void RecMessage(std::string& buffer)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::RecMessage::reserve
      Src: /src/pdns/pdns/recursordist/rec-protozero.hh:53,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - sz1
    - sz2
    argTypes:
    - std::string::size_type
    - std::string::size_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 50
    functionDepth: 2
    functionLinenumber: 50
    functionLinenumberEnd: 54
    functionName: pdns::ProtoZero::RecMessage::RecMessage
    functionSourceFile: /src/pdns/pdns/recursordist/rec-protozero.hh
    functionUses: 0
    functionsReached:
    - pdns::ProtoZero::RecMessage::reserve
    linkageType: ''
    returnType: void
    signature: void RecMessage(std::string::size_type sz1, std::string::size_type
      sz2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::basic_pbf_writer::basic_pbf_writer
      Src: /src/pdns/pdns/recursordist/rec-protozero.hh:62,1
    - Dst: protozero::basic_pbf_writer::basic_pbf_writer
      Src: /src/pdns/pdns/recursordist/rec-protozero.hh:63,1
    - Dst: pdns::ProtoZero::RecMessage::reserve
      Src: /src/pdns/pdns/recursordist/rec-protozero.hh:64,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 4
    argNames:
    - ' buf1'
    - ' buf2'
    - sz1
    - sz2
    argTypes:
    - std::string
    - std::string
    - std::string::size_type
    - std::string::size_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 57
    functionDepth: 2
    functionLinenumber: 57
    functionLinenumberEnd: 65
    functionName: pdns::ProtoZero::RecMessage::RecMessage
    functionSourceFile: /src/pdns/pdns/recursordist/rec-protozero.hh
    functionUses: 0
    functionsReached:
    - protozero::basic_pbf_writer::basic_pbf_writer
    - pdns::ProtoZero::RecMessage::reserve
    linkageType: ''
    returnType: void
    signature: void RecMessage(const std::string& buf1, const std::string& buf2, std::string::size_type
      sz1, std::string::size_type sz2)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 66
    functionDepth: 0
    functionLinenumber: 66
    functionLinenumberEnd: 66
    functionName: pdns::ProtoZero::RecMessage::RecMessage
    functionSourceFile: /src/pdns/pdns/recursordist/rec-protozero.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void RecMessage(const Message&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 67
    functionDepth: 0
    functionLinenumber: 67
    functionLinenumberEnd: 67
    functionName: pdns::ProtoZero::RecMessage::RecMessage
    functionSourceFile: /src/pdns/pdns/recursordist/rec-protozero.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void RecMessage(Message&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 68
    functionDepth: 0
    functionLinenumber: 68
    functionLinenumberEnd: 68
    functionName: '& operator=(const Message&)'
    functionSourceFile: /src/pdns/pdns/recursordist/rec-protozero.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: RecMessage
    signature: RecMessage & operator=(const Message&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 69
    functionDepth: 0
    functionLinenumber: 69
    functionLinenumberEnd: 69
    functionName: '& operator=(Message&&)'
    functionSourceFile: /src/pdns/pdns/recursordist/rec-protozero.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: RecMessage
    signature: RecMessage & operator=(Message&&)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: length
      Src: /src/pdns/pdns/recursordist/rec-protozero.hh:76,1
    - Dst: capacity
      Src: /src/pdns/pdns/recursordist/rec-protozero.hh:77,1
    - Dst: pdns::ProtoZero::RecMessage::size
      Src: /src/pdns/pdns/recursordist/rec-protozero.hh:77,1
    - Dst: pdns::ProtoZero::RecMessage::reserve
      Src: /src/pdns/pdns/recursordist/rec-protozero.hh:78,1
    - Dst: capacity
      Src: /src/pdns/pdns/recursordist/rec-protozero.hh:80,1
    - Dst: pdns::ProtoZero::RecMessage::size
      Src: /src/pdns/pdns/recursordist/rec-protozero.hh:80,1
    - Dst: pdns::ProtoZero::RecMessage::reserve
      Src: /src/pdns/pdns/recursordist/rec-protozero.hh:81,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - sz1
    - sz2
    argTypes:
    - std::string::size_type
    - std::string::size_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 71
    functionDepth: 1
    functionLinenumber: 71
    functionLinenumberEnd: 83
    functionName: pdns::ProtoZero::RecMessage::reserve
    functionSourceFile: /src/pdns/pdns/recursordist/rec-protozero.hh
    functionUses: 9
    functionsReached:
    - length
    - capacity
    - pdns::ProtoZero::RecMessage::reserve
    - pdns::ProtoZero::RecMessage::size
    linkageType: ''
    returnType: void
    signature: void reserve(std::string::size_type sz1, std::string::size_type sz2)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 85
    functionDepth: 0
    functionLinenumber: 85
    functionLinenumberEnd: 88
    functionName: '& getMessageBuf() const'
    functionSourceFile: /src/pdns/pdns/recursordist/rec-protozero.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string & getMessageBuf() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 90
    functionDepth: 0
    functionLinenumber: 90
    functionLinenumberEnd: 93
    functionName: '& getResponseBuf() const'
    functionSourceFile: /src/pdns/pdns/recursordist/rec-protozero.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string & getResponseBuf() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::RecMessage::size
      Src: /src/pdns/pdns/recursordist/rec-protozero.hh:97,1
    - Dst: pdns::ProtoZero::RecMessage::size
      Src: /src/pdns/pdns/recursordist/rec-protozero.hh:97,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 95
    functionDepth: 0
    functionLinenumber: 95
    functionLinenumberEnd: 98
    functionName: pdns::ProtoZero::RecMessage::size
    functionSourceFile: /src/pdns/pdns/recursordist/rec-protozero.hh
    functionUses: 7
    functionsReached:
    - pdns::ProtoZero::RecMessage::size
    linkageType: ''
    returnType: size_t
    signature: size_t size() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/rec-protozero.hh:102,1
    - Dst: add_message
      Src: /src/pdns/pdns/recursordist/rec-protozero.hh:103,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/recursordist/rec-protozero.hh:103,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/rec-protozero.hh:105,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 100
    functionDepth: 0
    functionLinenumber: 100
    functionLinenumberEnd: 106
    functionName: '&& finishAndMoveBuf()'
    functionSourceFile: /src/pdns/pdns/recursordist/rec-protozero.hh
    functionUses: 0
    functionsReached:
    - empty
    - static_cast<protozero::pbf_tag_type>
    - std::move
    - add_message
    linkageType: ''
    returnType: std::string
    signature: std::string && finishAndMoveBuf()
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/rec-protozero.hh:138,1
    - Dst: add_uint32
      Src: /src/pdns/pdns/recursordist/rec-protozero.hh:140,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/recursordist/rec-protozero.hh:140,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 24
    argCount: 1
    argNames:
    - type
    argTypes:
    - DNSFilterEngine::PolicyType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 141
      start: 114
    functionDepth: 0
    functionLinenumber: 114
    functionLinenumberEnd: 141
    functionName: pdns::ProtoZero::RecMessage::setAppliedPolicyType
    functionSourceFile: /src/pdns/pdns/recursordist/rec-protozero.hh
    functionUses: 0
    functionsReached:
    - add_uint32
    - static_cast<protozero::pbf_tag_type>
    - std::runtime_error
    linkageType: ''
    returnType: void
    signature: void setAppliedPolicyType(const DNSFilterEngine::PolicyType type)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: encodeDNSName
      Src: /src/pdns/pdns/recursordist/rec-protozero.hh:145,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/recursordist/rec-protozero.hh:145,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' trigger'
    argTypes:
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 146
      start: 143
    functionDepth: 0
    functionLinenumber: 143
    functionLinenumberEnd: 146
    functionName: pdns::ProtoZero::RecMessage::setAppliedPolicyTrigger
    functionSourceFile: /src/pdns/pdns/recursordist/rec-protozero.hh
    functionUses: 0
    functionsReached:
    - static_cast<protozero::pbf_tag_type>
    - encodeDNSName
    linkageType: ''
    returnType: void
    signature: void setAppliedPolicyTrigger(const DNSName& trigger)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: add_string
      Src: /src/pdns/pdns/recursordist/rec-protozero.hh:150,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/recursordist/rec-protozero.hh:150,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' hit'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 151
      start: 148
    functionDepth: 0
    functionLinenumber: 148
    functionLinenumberEnd: 151
    functionName: pdns::ProtoZero::RecMessage::setAppliedPolicyHit
    functionSourceFile: /src/pdns/pdns/recursordist/rec-protozero.hh
    functionUses: 0
    functionsReached:
    - add_string
    - static_cast<protozero::pbf_tag_type>
    linkageType: ''
    returnType: void
    signature: void setAppliedPolicyHit(const std::string& hit)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/rec-protozero.hh:177,1
    - Dst: add_uint32
      Src: /src/pdns/pdns/recursordist/rec-protozero.hh:179,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/recursordist/rec-protozero.hh:179,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 24
    argCount: 1
    argNames:
    - kind
    argTypes:
    - DNSFilterEngine::PolicyKind
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 180
      start: 153
    functionDepth: 0
    functionLinenumber: 153
    functionLinenumberEnd: 180
    functionName: pdns::ProtoZero::RecMessage::setAppliedPolicyKind
    functionSourceFile: /src/pdns/pdns/recursordist/rec-protozero.hh
    functionUses: 0
    functionsReached:
    - add_uint32
    - static_cast<protozero::pbf_tag_type>
    - std::runtime_error
    linkageType: ''
    returnType: void
    signature: void setAppliedPolicyKind(const DNSFilterEngine::PolicyKind kind)
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/rec-protozero.hh:242,1
    - Dst: add_uint32
      Src: /src/pdns/pdns/recursordist/rec-protozero.hh:244,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/recursordist/rec-protozero.hh:244,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 60
    argCount: 1
    argNames:
    - state
    argTypes:
    - vState
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 245
      start: 182
    functionDepth: 0
    functionLinenumber: 182
    functionLinenumberEnd: 245
    functionName: pdns::ProtoZero::RecMessage::setValidationState
    functionSourceFile: /src/pdns/pdns/recursordist/rec-protozero.hh
    functionUses: 0
    functionsReached:
    - add_uint32
    - static_cast<protozero::pbf_tag_type>
    - std::runtime_error
    linkageType: ''
    returnType: void
    signature: void setValidationState(const vState state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::basic_pbf_writer::basic_pbf_writer
      Src: /src/pdns/pdns/recursordist/rec-protozero.hh:40,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 37
    functionDepth: 1
    functionLinenumber: 37
    functionLinenumberEnd: 41
    functionName: pdns::ProtoZero::RecMessage::RecMessage
    functionSourceFile: /src/pdns/pdns/recursordist/rec-protozero.hh
    functionUses: 0
    functionsReached:
    - protozero::basic_pbf_writer::basic_pbf_writer
    linkageType: ''
    returnType: void
    signature: void RecMessage()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::basic_pbf_writer::basic_pbf_writer
      Src: /src/pdns/pdns/recursordist/rec-protozero.hh:46,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' buffer'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 43
    functionDepth: 1
    functionLinenumber: 43
    functionLinenumberEnd: 47
    functionName: pdns::ProtoZero::RecMessage::RecMessage
    functionSourceFile: /src/pdns/pdns/recursordist/rec-protozero.hh
    functionUses: 0
    functionsReached:
    - protozero::basic_pbf_writer::basic_pbf_writer
    linkageType: ''
    returnType: void
    signature: void RecMessage(std::string& buffer)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::RecMessage::reserve
      Src: /src/pdns/pdns/recursordist/rec-protozero.hh:53,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - sz1
    - sz2
    argTypes:
    - std::string::size_type
    - std::string::size_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 50
    functionDepth: 2
    functionLinenumber: 50
    functionLinenumberEnd: 54
    functionName: pdns::ProtoZero::RecMessage::RecMessage
    functionSourceFile: /src/pdns/pdns/recursordist/rec-protozero.hh
    functionUses: 0
    functionsReached:
    - pdns::ProtoZero::RecMessage::reserve
    linkageType: ''
    returnType: void
    signature: void RecMessage(std::string::size_type sz1, std::string::size_type
      sz2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::basic_pbf_writer::basic_pbf_writer
      Src: /src/pdns/pdns/recursordist/rec-protozero.hh:62,1
    - Dst: protozero::basic_pbf_writer::basic_pbf_writer
      Src: /src/pdns/pdns/recursordist/rec-protozero.hh:63,1
    - Dst: pdns::ProtoZero::RecMessage::reserve
      Src: /src/pdns/pdns/recursordist/rec-protozero.hh:64,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 4
    argNames:
    - ' buf1'
    - ' buf2'
    - sz1
    - sz2
    argTypes:
    - std::string
    - std::string
    - std::string::size_type
    - std::string::size_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 57
    functionDepth: 2
    functionLinenumber: 57
    functionLinenumberEnd: 65
    functionName: pdns::ProtoZero::RecMessage::RecMessage
    functionSourceFile: /src/pdns/pdns/recursordist/rec-protozero.hh
    functionUses: 0
    functionsReached:
    - protozero::basic_pbf_writer::basic_pbf_writer
    - pdns::ProtoZero::RecMessage::reserve
    linkageType: ''
    returnType: void
    signature: void RecMessage(const std::string& buf1, const std::string& buf2, std::string::size_type
      sz1, std::string::size_type sz2)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 66
    functionDepth: 0
    functionLinenumber: 66
    functionLinenumberEnd: 66
    functionName: pdns::ProtoZero::RecMessage::RecMessage
    functionSourceFile: /src/pdns/pdns/recursordist/rec-protozero.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void RecMessage(const Message&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 67
    functionDepth: 0
    functionLinenumber: 67
    functionLinenumberEnd: 67
    functionName: pdns::ProtoZero::RecMessage::RecMessage
    functionSourceFile: /src/pdns/pdns/recursordist/rec-protozero.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void RecMessage(Message&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 68
    functionDepth: 0
    functionLinenumber: 68
    functionLinenumberEnd: 68
    functionName: '& operator=(const Message&)'
    functionSourceFile: /src/pdns/pdns/recursordist/rec-protozero.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: RecMessage
    signature: RecMessage & operator=(const Message&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 69
    functionDepth: 0
    functionLinenumber: 69
    functionLinenumberEnd: 69
    functionName: '& operator=(Message&&)'
    functionSourceFile: /src/pdns/pdns/recursordist/rec-protozero.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: RecMessage
    signature: RecMessage & operator=(Message&&)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: length
      Src: /src/pdns/pdns/recursordist/rec-protozero.hh:76,1
    - Dst: capacity
      Src: /src/pdns/pdns/recursordist/rec-protozero.hh:77,1
    - Dst: pdns::ProtoZero::RecMessage::size
      Src: /src/pdns/pdns/recursordist/rec-protozero.hh:77,1
    - Dst: pdns::ProtoZero::RecMessage::reserve
      Src: /src/pdns/pdns/recursordist/rec-protozero.hh:78,1
    - Dst: capacity
      Src: /src/pdns/pdns/recursordist/rec-protozero.hh:80,1
    - Dst: pdns::ProtoZero::RecMessage::size
      Src: /src/pdns/pdns/recursordist/rec-protozero.hh:80,1
    - Dst: pdns::ProtoZero::RecMessage::reserve
      Src: /src/pdns/pdns/recursordist/rec-protozero.hh:81,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - sz1
    - sz2
    argTypes:
    - std::string::size_type
    - std::string::size_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 71
    functionDepth: 1
    functionLinenumber: 71
    functionLinenumberEnd: 83
    functionName: pdns::ProtoZero::RecMessage::reserve
    functionSourceFile: /src/pdns/pdns/recursordist/rec-protozero.hh
    functionUses: 12
    functionsReached:
    - length
    - capacity
    - pdns::ProtoZero::RecMessage::reserve
    - pdns::ProtoZero::RecMessage::size
    linkageType: ''
    returnType: void
    signature: void reserve(std::string::size_type sz1, std::string::size_type sz2)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 85
    functionDepth: 0
    functionLinenumber: 85
    functionLinenumberEnd: 88
    functionName: '& getMessageBuf() const'
    functionSourceFile: /src/pdns/pdns/recursordist/rec-protozero.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string & getMessageBuf() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 90
    functionDepth: 0
    functionLinenumber: 90
    functionLinenumberEnd: 93
    functionName: '& getResponseBuf() const'
    functionSourceFile: /src/pdns/pdns/recursordist/rec-protozero.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string & getResponseBuf() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::RecMessage::size
      Src: /src/pdns/pdns/recursordist/rec-protozero.hh:97,1
    - Dst: pdns::ProtoZero::RecMessage::size
      Src: /src/pdns/pdns/recursordist/rec-protozero.hh:97,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 95
    functionDepth: 0
    functionLinenumber: 95
    functionLinenumberEnd: 98
    functionName: pdns::ProtoZero::RecMessage::size
    functionSourceFile: /src/pdns/pdns/recursordist/rec-protozero.hh
    functionUses: 9
    functionsReached:
    - pdns::ProtoZero::RecMessage::size
    linkageType: ''
    returnType: size_t
    signature: size_t size() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/rec-protozero.hh:102,1
    - Dst: add_message
      Src: /src/pdns/pdns/recursordist/rec-protozero.hh:103,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/recursordist/rec-protozero.hh:103,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/rec-protozero.hh:105,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 100
    functionDepth: 0
    functionLinenumber: 100
    functionLinenumberEnd: 106
    functionName: '&& finishAndMoveBuf()'
    functionSourceFile: /src/pdns/pdns/recursordist/rec-protozero.hh
    functionUses: 0
    functionsReached:
    - empty
    - static_cast<protozero::pbf_tag_type>
    - std::move
    - add_message
    linkageType: ''
    returnType: std::string
    signature: std::string && finishAndMoveBuf()
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/rec-protozero.hh:138,1
    - Dst: add_uint32
      Src: /src/pdns/pdns/recursordist/rec-protozero.hh:140,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/recursordist/rec-protozero.hh:140,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 24
    argCount: 1
    argNames:
    - type
    argTypes:
    - DNSFilterEngine::PolicyType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 141
      start: 114
    functionDepth: 0
    functionLinenumber: 114
    functionLinenumberEnd: 141
    functionName: pdns::ProtoZero::RecMessage::setAppliedPolicyType
    functionSourceFile: /src/pdns/pdns/recursordist/rec-protozero.hh
    functionUses: 0
    functionsReached:
    - add_uint32
    - static_cast<protozero::pbf_tag_type>
    - std::runtime_error
    linkageType: ''
    returnType: void
    signature: void setAppliedPolicyType(const DNSFilterEngine::PolicyType type)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: encodeDNSName
      Src: /src/pdns/pdns/recursordist/rec-protozero.hh:145,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/recursordist/rec-protozero.hh:145,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' trigger'
    argTypes:
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 146
      start: 143
    functionDepth: 0
    functionLinenumber: 143
    functionLinenumberEnd: 146
    functionName: pdns::ProtoZero::RecMessage::setAppliedPolicyTrigger
    functionSourceFile: /src/pdns/pdns/recursordist/rec-protozero.hh
    functionUses: 0
    functionsReached:
    - static_cast<protozero::pbf_tag_type>
    - encodeDNSName
    linkageType: ''
    returnType: void
    signature: void setAppliedPolicyTrigger(const DNSName& trigger)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: add_string
      Src: /src/pdns/pdns/recursordist/rec-protozero.hh:150,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/recursordist/rec-protozero.hh:150,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' hit'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 151
      start: 148
    functionDepth: 0
    functionLinenumber: 148
    functionLinenumberEnd: 151
    functionName: pdns::ProtoZero::RecMessage::setAppliedPolicyHit
    functionSourceFile: /src/pdns/pdns/recursordist/rec-protozero.hh
    functionUses: 0
    functionsReached:
    - add_string
    - static_cast<protozero::pbf_tag_type>
    linkageType: ''
    returnType: void
    signature: void setAppliedPolicyHit(const std::string& hit)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/rec-protozero.hh:177,1
    - Dst: add_uint32
      Src: /src/pdns/pdns/recursordist/rec-protozero.hh:179,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/recursordist/rec-protozero.hh:179,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 24
    argCount: 1
    argNames:
    - kind
    argTypes:
    - DNSFilterEngine::PolicyKind
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 180
      start: 153
    functionDepth: 0
    functionLinenumber: 153
    functionLinenumberEnd: 180
    functionName: pdns::ProtoZero::RecMessage::setAppliedPolicyKind
    functionSourceFile: /src/pdns/pdns/recursordist/rec-protozero.hh
    functionUses: 0
    functionsReached:
    - add_uint32
    - static_cast<protozero::pbf_tag_type>
    - std::runtime_error
    linkageType: ''
    returnType: void
    signature: void setAppliedPolicyKind(const DNSFilterEngine::PolicyKind kind)
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/rec-protozero.hh:242,1
    - Dst: add_uint32
      Src: /src/pdns/pdns/recursordist/rec-protozero.hh:244,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/recursordist/rec-protozero.hh:244,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 60
    argCount: 1
    argNames:
    - state
    argTypes:
    - vState
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 245
      start: 182
    functionDepth: 0
    functionLinenumber: 182
    functionLinenumberEnd: 245
    functionName: pdns::ProtoZero::RecMessage::setValidationState
    functionSourceFile: /src/pdns/pdns/recursordist/rec-protozero.hh
    functionUses: 0
    functionsReached:
    - add_uint32
    - static_cast<protozero::pbf_tag_type>
    - std::runtime_error
    linkageType: ''
    returnType: void
    signature: void setValidationState(const vState state)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: UDPClientSocks::makeClientSocket
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:105,1
    - Dst: connect
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:110,1
    - Dst: reinterpret_cast<const struct sockaddr*>
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:110,1
    - Dst: getSocklen
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:110,1
    - Dst: closesocket
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:113,1
    - Dst: error
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:116,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:116,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 3
    argNames:
    - ' toaddr'
    - ' localAddress'
    - fileDesc
    argTypes:
    - ComboAddress
    - std::optional<ComboAddress>
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 103
    functionDepth: 1
    functionLinenumber: 103
    functionLinenumberEnd: 128
    functionName: UDPClientSocks::getSocket
    functionSourceFile: /src/pdns/pdns/recursordist/pdns_recursor.cc
    functionUses: 0
    functionsReached:
    - closesocket
    - UDPClientSocks::makeClientSocket
    - Logging::Loggable
    - reinterpret_cast<const struct sockaddr*>
    - error
    - getSocklen
    - connect
    linkageType: ''
    returnType: LWResult::Result
    signature: LWResult::Result UDPClientSocks::getSocket(const ComboAddress& toaddr,
      const std::optional<ComboAddress>& localAddress, int* fileDesc)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: removeReadFD
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:134,1
    - Dst: closesocket
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:141,1
    - Dst: error
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:144,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:144,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - fileDesc
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 148
      start: 131
    functionDepth: 0
    functionLinenumber: 131
    functionLinenumberEnd: 148
    functionName: UDPClientSocks::returnSocket
    functionSourceFile: /src/pdns/pdns/recursordist/pdns_recursor.cc
    functionUses: 0
    functionsReached:
    - error
    - Logging::Loggable
    - removeReadFD
    - closesocket
    linkageType: ''
    returnType: void
    signature: void UDPClientSocks::returnSocket(int fileDesc)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: socket
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:153,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:160,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:160,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:160,1
    - Dst: dns_random
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:179,1
    - Dst: ComboAddress::setPort
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:187,1
    - Dst: pdns::getQueryLocalAddress
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:190,1
    - Dst: Socket::bind
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:192,1
    - Dst: reinterpret_cast<struct sockaddr*>
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:192,1
    - Dst: ComboAddress::getSocklen
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:192,1
    - Dst: closesocket
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:200,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:201,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:201,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:201,1
    - Dst: setReceiveSocketErrors
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:205,1
    - Dst: setNonBlocking
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:206,1
    - Dst: closesocket
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:209,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 37
    argCount: 2
    argNames:
    - family
    - ' localAddress'
    argTypes:
    - int
    - std::optional<ComboAddress>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 213
      start: 151
    functionDepth: 0
    functionLinenumber: 151
    functionLinenumberEnd: 213
    functionName: UDPClientSocks::makeClientSocket
    functionSourceFile: /src/pdns/pdns/recursordist/pdns_recursor.cc
    functionUses: 1
    functionsReached:
    - socket
    - setReceiveSocketErrors
    - pdns::getQueryLocalAddress
    - dns_random
    - std::to_string
    - closesocket
    - PDNSException
    - stringerror
    - setNonBlocking
    - ComboAddress::setPort
    - ComboAddress::toString
    - Socket::bind
    - ComboAddress::getSocklen
    - reinterpret_cast<struct sockaddr*>
    linkageType: ''
    returnType: int
    signature: int UDPClientSocks::makeClientSocket(int family, const std::optional<ComboAddress>&
      localAddress)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: boost::any_cast<std::shared_ptr<PacketID>>
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:217,1
    - Dst: PacketBuffer::resize
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:219,1
    - Dst: recvfrom
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:223,1
    - Dst: PacketBuffer::data
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:223,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:223,1
    - Dst: reinterpret_cast<sockaddr*>
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:223,1
    - Dst: withName
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:225,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:225,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:225,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:225,1
    - Dst: removeReadFD
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:228,1
    - Dst: PacketBuffer::resize
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:230,1
    - Dst: sendEvent
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:231,1
    - Dst: sendEvent
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:235,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 2
    argNames:
    - fileDesc
    - ' var'
    argTypes:
    - int
    - FDMultiplexer::funcparam_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 237
      start: 215
    functionDepth: 1
    functionLinenumber: 215
    functionLinenumberEnd: 237
    functionName: handleGenUDPQueryResponse
    functionSourceFile: /src/pdns/pdns/recursordist/pdns_recursor.cc
    functionUses: 0
    functionsReached:
    - PacketBuffer::data
    - Logging::Loggable
    - withName
    - recvfrom
    - PacketBuffer::size
    - removeReadFD
    - PacketBuffer::resize
    - reinterpret_cast<sockaddr*>
    - boost::any_cast<std::shared_ptr<PacketID>>
    - sendEvent
    linkageType: ''
    returnType: void
    signature: void handleGenUDPQueryResponse(int fileDesc, FDMultiplexer::funcparam_t&
      var)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Socket::setNonBlocking
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:242,1
    - Dst: pdns::getQueryLocalAddress
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:243,1
    - Dst: Socket::bind
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:245,1
    - Dst: Socket::connect
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:246,1
    - Dst: Socket::send
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:247,1
    - Dst: std::make_shared<PacketID>
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:249,1
    - Dst: Socket::getHandle
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:250,1
    - Dst: addReadFD
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:253,1
    - Dst: Socket::getHandle
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:253,1
    - Dst: waitEvent
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:256,1
    - Dst: authWaitTimeMSec
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:256,1
    - Dst: removeReadFD
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:259,1
    - Dst: Socket::getHandle
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:259,1
    - Dst: PacketBuffer::empty
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:261,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 2
    argNames:
    - ' dest'
    - ' query'
    argTypes:
    - ComboAddress
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 266
      start: 239
    functionDepth: 1
    functionLinenumber: 239
    functionLinenumberEnd: 266
    functionName: GenUDPQueryResponse
    functionSourceFile: /src/pdns/pdns/recursordist/pdns_recursor.cc
    functionUses: 1
    functionsReached:
    - pdns::getQueryLocalAddress
    - Socket::send
    - Socket::getHandle
    - Socket::setNonBlocking
    - std::make_shared<PacketID>
    - addReadFD
    - PacketBuffer::empty
    - authWaitTimeMSec
    - Socket::connect
    - removeReadFD
    - waitEvent
    - Socket::bind
    linkageType: ''
    returnType: PacketBuffer
    signature: PacketBuffer GenUDPQueryResponse(const ComboAddress& dest, const string&
      query)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: numProcesses
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:277,1
    - Dst: std::max
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:283,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ' mtasker'
    argTypes:
    - std::unique_ptr<MT_t>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 284
      start: 274
    functionDepth: 0
    functionLinenumber: 274
    functionLinenumberEnd: 284
    functionName: authWaitTimeMSec
    functionSourceFile: /src/pdns/pdns/recursordist/pdns_recursor.cc
    functionUses: 2
    functionsReached:
    - std::max
    - numProcesses
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int authWaitTimeMSec(const std::unique_ptr<MT_t>& mtasker)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<PacketID>
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:291,1
    - Dst: getSource
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:296,1
    - Dst: getWaiters
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:302,1
    - Dst: PacketIDBirthdayCompare
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:302,1
    - Dst: assert
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:306,1
    - Dst: auto::first::key::authReqChain::size
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:309,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:310,1
    - Dst: assert
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:314,1
    - Dst: uSec
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:314,1
    - Dst: uSec
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:316,1
    - Dst: static_cast<uint64_t>
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:316,1
    - Dst: authWaitTimeMSec
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:316,1
    - Dst: auto::first::key::authReqChain::emplace
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:319,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:320,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:322,1
    - Dst: getSocket
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:328,1
    - Dst: addReadFD
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:336,1
    - Dst: send
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:337,1
    - Dst: returnSocket
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:340,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 37
    argCount: 10
    argNames:
    - data
    - len
    - ' toAddress'
    - ' localAddress'
    - qid
    - ' domain'
    - qtype
    - ' ecs'
    - fileDesc
    - ' now'
    argTypes:
    - void*
    - size_t
    - ComboAddress
    - std::optional<ComboAddress>
    - uint16_t
    - DNSName
    - uint16_t
    - std::optional<EDNSSubnetOpts>
    - int*
    - timeval
    assertStmts:
    - condition: (uSec(chain.first->key->creationTime) != 0)
      pos:
        line_end: 313
        line_start: 313
        source_file: /src/pdns/pdns/recursordist/pdns_recursor.cc
    - condition: (chain.first->key->domain == pident->domain)
      pos:
        line_end: 305
        line_start: 305
        source_file: /src/pdns/pdns/recursordist/pdns_recursor.cc
    constantsTouched: []
    func_position:
      end: 346
      start: 287
    functionDepth: 1
    functionLinenumber: 287
    functionLinenumberEnd: 346
    functionName: asendto
    functionSourceFile: /src/pdns/pdns/recursordist/pdns_recursor.cc
    functionUses: 1
    functionsReached:
    - returnSocket
    - getWaiters
    - auto::first::key::authReqChain::size
    - std::make_shared<PacketID>
    - addReadFD
    - static_cast<uint64_t>
    - assert
    - authWaitTimeMSec
    - auto::first::key::authReqChain::emplace
    - getSocket
    - PacketIDBirthdayCompare
    - getSource
    - send
    - uSec
    - at
    - static_cast<int>
    linkageType: ''
    returnType: LWResult::Result
    signature: "LWResult::Result asendto(const void* data, size_t len,\n                         const
      ComboAddress& toAddress, std::optional<ComboAddress>& localAddress, uint16_t
      qid, const DNSName& domain, uint16_t qtype, const std::optional<EDNSSubnetOpts>&
      ecs, int* fileDesc, timeval& now)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:353,1
    - Dst: std::make_shared<PacketID>
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:355,1
    - Dst: getSource
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:367,1
    - Dst: waitEvent
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:369,1
    - Dst: authWaitTimeMSec
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:369,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:375,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:379,1
    - Dst: checkIncomingECSSource
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:383,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:384,1
    - Dst: info
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:390,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:391,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:392,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:393,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:394,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:395,1
    - Dst: returnSocket
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:403,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 31
    argCount: 9
    argNames:
    - ' packet'
    - ' fromAddr'
    - ' len'
    - qid
    - ' domain'
    - qtype
    - fileDesc
    - ' ecs'
    - ' now'
    argTypes:
    - PacketBuffer
    - ComboAddress
    - size_t
    - uint16_t
    - DNSName
    - uint16_t
    - int
    - std::optional<EDNSSubnetOpts>
    - struct timeval
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 407
      start: 350
    functionDepth: 1
    functionLinenumber: 350
    functionLinenumberEnd: 407
    functionName: arecvfrom
    functionSourceFile: /src/pdns/pdns/recursordist/pdns_recursor.cc
    functionUses: 0
    functionsReached:
    - returnSocket
    - checkIncomingECSSource
    - std::make_shared<PacketID>
    - Logging::Loggable
    - info
    - authWaitTimeMSec
    - size
    - getSource
    - waitEvent
    - empty
    - at
    - arg
    linkageType: ''
    returnType: LWResult::Result
    signature: "LWResult::Result arecvfrom(PacketBuffer& packet, const ComboAddress&
      fromAddr, size_t& len,\n                           uint16_t qid, const DNSName&
      domain, uint16_t qtype, int fileDesc, const std::optional<EDNSSubnetOpts>& ecs,
      const struct timeval& now)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: push_back
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:413,1
    - Dst: push_back
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:418,1
    - Dst: push_back
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:420,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:423,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:426,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:429,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 21
    argCount: 5
    argNames:
    - res
    - ' remote'
    - packetsize
    - query
    - qtype
    argTypes:
    - int
    - ComboAddress
    - unsigned int
    - DNSName*
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 432
      start: 410
    functionDepth: 0
    functionLinenumber: 410
    functionLinenumberEnd: 432
    functionName: updateResponseStats
    functionSourceFile: /src/pdns/pdns/recursordist/pdns_recursor.cc
    functionUses: 0
    functionsReached:
    - push_back
    - at
    linkageType: ''
    returnType: void
    signature: void updateResponseStats(int res, const ComboAddress& remote, unsigned
      int packetsize, const DNSName* query, uint16_t qtype)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: getWantsRPZ
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:446,1
    - Dst: setWantsRPZ
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:447,1
    - Dst: beginResolve
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:449,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:449,1
    - Dst: getContent
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:449,1
    - Dst: push_back
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:452,1
    - Dst: setWantsRPZ
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:456,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 5
    argNames:
    - ' spoofed'
    - ' qtype'
    - ' resolver'
    - ' res'
    - ' ret'
    argTypes:
    - DNSRecord
    - QType
    - SyncRes
    - int
    - vector<DNSRecord>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 458
      start: 443
    functionDepth: 0
    functionLinenumber: 443
    functionLinenumberEnd: 458
    functionName: handleRPZCustom
    functionSourceFile: /src/pdns/pdns/recursordist/pdns_recursor.cc
    functionUses: 0
    functionsReached:
    - push_back
    - getContent
    - DNSName
    - beginResolve
    - getWantsRPZ
    - setWantsRPZ
    linkageType: ''
    returnType: void
    signature: void handleRPZCustom(const DNSRecord& spoofed, const QType& qtype,
      SyncRes& resolver, int& res, vector<DNSRecord>& ret)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: startRecord
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:462,1
    - Dst: min
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:469,1
    - Dst: getContent
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:472,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:473,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:473,1
    - Dst: rollback
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:474,1
    - Dst: getHeader
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:476,1
    - Dst: truncate
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:477,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 6
    argNames:
    - ' packetWritewr'
    - ' rec'
    - ' minTTL'
    - ttlCap
    - maxAnswerSize
    - ' seenAuthSOA'
    argTypes:
    - DNSPacketWriter
    - DNSRecord
    - uint32_t
    - uint32_t
    - uint16_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 483
      start: 460
    functionDepth: 1
    functionLinenumber: 460
    functionLinenumberEnd: 483
    functionName: addRecordToPacket
    functionSourceFile: /src/pdns/pdns/recursordist/pdns_recursor.cc
    functionUses: 0
    functionsReached:
    - static_cast<size_t>
    - size
    - getContent
    - rollback
    - truncate
    - getHeader
    - startRecord
    - min
    linkageType: ''
    returnType: bool
    signature: bool addRecordToPacket(DNSPacketWriter& packetWritewr, const DNSRecord&
      rec, uint32_t& minTTL, uint32_t ttlCap, const uint16_t maxAnswerSize, bool&
      seenAuthSOA)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 494
      start: 494
    functionDepth: 0
    functionLinenumber: 494
    functionLinenumberEnd: 494
    functionName: RunningResolveGuard::RunningResolveGuard
    functionSourceFile: /src/pdns/pdns/recursordist/pdns_recursor.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void RunningResolveGuard(const RunningResolveGuard&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 495
      start: 495
    functionDepth: 0
    functionLinenumber: 495
    functionLinenumberEnd: 495
    functionName: RunningResolveGuard::RunningResolveGuard
    functionSourceFile: /src/pdns/pdns/recursordist/pdns_recursor.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void RunningResolveGuard(RunningResolveGuard&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 496
      start: 496
    functionDepth: 0
    functionLinenumber: 496
    functionLinenumberEnd: 496
    functionName: '& operator=(const RunningResolveGuard&)'
    functionSourceFile: /src/pdns/pdns/recursordist/pdns_recursor.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: RunningResolveGuard
    signature: RunningResolveGuard & operator=(const RunningResolveGuard&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 497
      start: 497
    functionDepth: 0
    functionLinenumber: 497
    functionLinenumberEnd: 497
    functionName: '& operator=(RunningResolveGuard&&)'
    functionSourceFile: /src/pdns/pdns/recursordist/pdns_recursor.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: RunningResolveGuard
    signature: RunningResolveGuard & operator=(RunningResolveGuard&&)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:502,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 4
    argCount: 1
    argNames:
    - ' comboWriter'
    argTypes:
    - std::unique_ptr<DNSComboWriter>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 504
      start: 498
    functionDepth: 0
    functionLinenumber: 498
    functionLinenumberEnd: 504
    functionName: RunningResolveGuard::RunningResolveGuard
    functionSourceFile: /src/pdns/pdns/recursordist/pdns_recursor.cc
    functionUses: 0
    functionsReached:
    - std::runtime_error
    linkageType: ''
    returnType: void
    signature: void RunningResolveGuard(std::unique_ptr<DNSComboWriter>& comboWriter)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: finishTCPReply
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:509,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 514
      start: 505
    functionDepth: 2
    functionLinenumber: 505
    functionLinenumberEnd: 514
    functionName: ~RunningResolveGuard()
    functionSourceFile: /src/pdns/pdns/recursordist/pdns_recursor.cc
    functionUses: 0
    functionsReached:
    - finishTCPReply
    linkageType: ''
    returnType: void
    signature: void ~RunningResolveGuard()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 518
      start: 515
    functionDepth: 0
    functionLinenumber: 515
    functionLinenumberEnd: 518
    functionName: RunningResolveGuard::setHandled
    functionSourceFile: /src/pdns/pdns/recursordist/pdns_recursor.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setHandled()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: d_tcpConnection::setDropOnIdle
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:522,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 524
      start: 519
    functionDepth: 0
    functionLinenumber: 519
    functionLinenumberEnd: 524
    functionName: RunningResolveGuard::setDropOnIdle
    functionSourceFile: /src/pdns/pdns/recursordist/pdns_recursor.cc
    functionUses: 0
    functionsReached:
    - d_tcpConnection::setDropOnIdle
    linkageType: ''
    returnType: void
    signature: void setDropOnIdle()
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: at
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:542,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:543,1
    - Dst: getName
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:543,1
    - Dst: doLog
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:546,1
    - Dst: info
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:547,1
    - Dst: setDropOnIdle
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:561,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:562,1
    - Dst: clear
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:566,1
    - Dst: addSOAtoRPZResult
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:567,1
    - Dst: clear
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:572,1
    - Dst: addSOAtoRPZResult
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:573,1
    - Dst: clear
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:579,1
    - Dst: addSOAtoRPZResult
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:580,1
    - Dst: getHeader
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:582,1
    - Dst: getCustomRecords
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:590,1
    - Dst: push_back
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:592,1
    - Dst: handleRPZCustom
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:594,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:594,1
    - Dst: d_slog::error
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:598,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:599,1
    - Dst: getName
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:599,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:599,1
    - Dst: getDNSSECLimitHit
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:605,1
    - Dst: d_slog::error
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:606,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:606,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:607,1
    - Dst: getName
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:607,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:607,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:607,1
    - Dst: getDNSSECLimitHit
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:607,1
    - Dst: d_slog::info
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:614,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:615,1
    - Dst: getName
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:615,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:615,1
    - Dst: addSOAtoRPZResult
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:622,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 68
    argCount: 7
    argNames:
    - ' appliedPolicy'
    - ' comboWriter'
    - ' resolver'
    - ' res'
    - ' ret'
    - ' packetWriter'
    - ' tcpGuard'
    argTypes:
    - DNSFilterEngine::Policy
    - std::unique_ptr<DNSComboWriter>
    - SyncRes
    - int
    - vector<DNSRecord>
    - DNSPacketWriter
    - RunningResolveGuard
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 628
      start: 538
    functionDepth: 1
    functionLinenumber: 538
    functionLinenumberEnd: 628
    functionName: handlePolicyHit
    functionSourceFile: /src/pdns/pdns/recursordist/pdns_recursor.cc
    functionUses: 0
    functionsReached:
    - handleRPZCustom
    - d_slog::error
    - getName
    - Logging::Loggable
    - getCustomRecords
    - push_back
    - QType
    - getHeader
    - addSOAtoRPZResult
    - info
    - setDropOnIdle
    - what
    - d_slog::info
    - getDNSSECLimitHit
    - doLog
    - clear
    - at
    linkageType: ''
    returnType: PolicyResult
    signature: PolicyResult handlePolicyHit(const DNSFilterEngine::Policy& appliedPolicy,
      const std::unique_ptr<DNSComboWriter>& comboWriter, SyncRes& resolver, int&
      res, vector<DNSRecord>& ret, DNSPacketWriter& packetWriter, RunningResolveGuard&
      tcpGuard)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: check
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:635,1
    - Dst: isNewDomain
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:639,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:642,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:644,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 2
    argNames:
    - nodlogger
    - ' dname'
    argTypes:
    - Logr::log_t
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 648
      start: 631
    functionDepth: 0
    functionLinenumber: 631
    functionLinenumberEnd: 648
    functionName: nodCheckNewDomain
    functionSourceFile: /src/pdns/pdns/recursordist/pdns_recursor.cc
    functionUses: 0
    functionsReached:
    - check
    - at
    - Logr::log_t::info
    - isNewDomain
    linkageType: ''
    returnType: bool
    signature: bool nodCheckNewDomain(Logr::log_t nodlogger, const DNSName& dname)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: isRoot
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:652,1
    - Dst: DNSName::DNSName
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:654,1
    - Dst: Logr::log_t::v
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:660,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:662,1
    - Dst: Logr::log_t::v
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:665,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:665,1
    - Dst: directResolve
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:667,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 2
    argNames:
    - nodlogger
    - ' dname'
    argTypes:
    - Logr::log_t
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 669
      start: 650
    functionDepth: 1
    functionLinenumber: 650
    functionLinenumberEnd: 669
    functionName: sendNODLookup
    functionSourceFile: /src/pdns/pdns/recursordist/pdns_recursor.cc
    functionUses: 0
    functionsReached:
    - directResolve
    - Logging::Loggable
    - Logr::log_t::v
    - isRoot
    - DNSName::DNSName
    - at
    linkageType: ''
    returnType: void
    signature: void sendNODLookup(Logr::log_t nodlogger, const DNSName& dname)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: check
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:675,1
    - Dst: toDNSStringLC
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:681,1
    - Dst: d_name::toDNSStringLC
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:681,1
    - Dst: getContent
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:681,1
    - Dst: isUniqueResponse
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:682,1
    - Dst: std::stringstream::str
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:682,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:685,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:686,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:686,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:687,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:687,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:688,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:689,1
    - Dst: getContent
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:689,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:691,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 4
    argNames:
    - nodlogger
    - ' dname'
    - qtype
    - ' record'
    argTypes:
    - Logr::log_t
    - DNSName
    - uint16_t
    - DNSRecord
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 696
      start: 671
    functionDepth: 0
    functionLinenumber: 671
    functionLinenumberEnd: 696
    functionName: udrCheckUniqueDNSRecord
    functionSourceFile: /src/pdns/pdns/recursordist/pdns_recursor.cc
    functionUses: 0
    functionsReached:
    - toDNSStringLC
    - Logr::log_t::info
    - Logging::Loggable
    - QType
    - getContent
    - std::stringstream::str
    - check
    - at
    - d_name::toDNSStringLC
    - isUniqueResponse
    linkageType: ''
    returnType: bool
    signature: bool udrCheckUniqueDNSRecord(Logr::log_t nodlogger, const DNSName&
      dname, uint16_t qtype, const DNSRecord& record)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: DNSName::DNSName
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:704,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:710,1
    - Dst: auto::getTarget
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:712,1
    - Dst: DNSName::empty
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:718,1
    - Dst: withName
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:722,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:722,1
    - Dst: directResolve
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:723,1
    - Dst: dns64Candidate
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:725,1
    - Dst: getFakeAAAARecords
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:726,1
    - Dst: push_back
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:731,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:731,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 20
    argCount: 3
    argNames:
    - ' ret'
    - qtype
    - rcode
    argTypes:
    - vector<DNSRecord>
    - QType
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 735
      start: 701
    functionDepth: 1
    functionLinenumber: 701
    functionLinenumberEnd: 735
    functionName: followCNAMERecords
    functionSourceFile: /src/pdns/pdns/recursordist/pdns_recursor.cc
    functionUses: 1
    functionsReached:
    - auto::getTarget
    - directResolve
    - getRR
    - dns64Candidate
    - std::move
    - Logging::Loggable
    - withName
    - push_back
    - DNSName::empty
    - DNSName::DNSName
    - getFakeAAAARecords
    linkageType: ''
    returnType: int
    signature: int followCNAMERecords(vector<DNSRecord>& ret, const QType qtype, int
      rcode)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: withName
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:739,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:739,1
    - Dst: directResolve
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:744,1
    - Dst: reserve
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:746,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:746,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:746,1
    - Dst: push_back
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:748,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:748,1
    - Dst: erase
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:753,1
    - Dst: std::remove_if
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:753,1
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:754,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:755,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:758,1
    - Dst: std::set::count
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:762,1
    - Dst: auto::getTarget
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:762,1
    - Dst: std::set::insert
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:766,1
    - Dst: auto::getTarget
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:766,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:770,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:775,1
    - Dst: auto::getCA
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:776,1
    - Dst: memcpy
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:777,1
    - Dst: setContent
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:778,1
    - Dst: std::make_shared<AAAARecordContent>
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:778,1
    - Dst: erase
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:788,1
    - Dst: std::remove_if
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:788,1
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:789,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:790,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:794,1
    - Dst: pdns::dedupRecords
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:797,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:799,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 34
    argCount: 3
    argNames:
    - ' qname'
    - prefix
    - ' ret'
    argTypes:
    - DNSName
    - ComboAddress
    - vector<DNSRecord>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 801
      start: 737
    functionDepth: 2
    functionLinenumber: 737
    functionLinenumberEnd: 801
    functionName: getFakeAAAARecords
    functionSourceFile: /src/pdns/pdns/recursordist/pdns_recursor.cc
    functionUses: 2
    functionsReached:
    - withName
    - erase
    - Logging::Loggable
    - size
    - std::set::insert
    - begin
    - std::make_shared<AAAARecordContent>
    - auto::getCA
    - at
    - directResolve
    - push_back
    - setContent
    - reserve
    - auto::getTarget
    - memcpy
    - std::move
    - getRR
    - pdns::dedupRecords
    - std::set::count
    - std::remove_if
    - end
    - vector::size
    linkageType: ''
    returnType: int
    signature: int getFakeAAAARecords(const DNSName& qname, ComboAddress prefix, vector<DNSRecord>&
      ret)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:805,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 14
    argCount: 1
    argNames:
    - ' label'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 819
      start: 803
    functionDepth: 0
    functionLinenumber: 803
    functionLinenumberEnd: 819
    functionName: parseNibble
    functionSourceFile: /src/pdns/pdns/recursordist/pdns_recursor.cc
    functionUses: 0
    functionsReached:
    - size
    linkageType: ''
    returnType: std::pair<uint8_t, bool>
    signature: std::pair<uint8_t, bool> parseNibble(const std::string& label)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: clear
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:825,1
    - Dst: getRawLabels
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:826,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:828,1
    - Dst: parseNibble
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:834,1
    - Dst: parseNibble
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:838,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:842,1
    - Dst: withName
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:847,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:847,1
    - Dst: directResolve
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:849,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:849,1
    - Dst: DNSRecord::DNSRecord
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:851,1
    - Dst: DNSRecord::setContent
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:854,1
    - Dst: std::make_shared<CNAMERecordContent>
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:854,1
    - Dst: vector::empty
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:856,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:856,1
    - Dst: push_back
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:857,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:857,1
    - Dst: insert
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:859,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:859,1
    - Dst: vector::begin
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:859,1
    - Dst: vector::end
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:859,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:861,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 24
    argCount: 2
    argNames:
    - ' qname'
    - ' ret'
    argTypes:
    - DNSName
    - vector<DNSRecord>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 863
      start: 821
    functionDepth: 2
    functionLinenumber: 821
    functionLinenumberEnd: 863
    functionName: getFakePTRRecords
    functionSourceFile: /src/pdns/pdns/recursordist/pdns_recursor.cc
    functionUses: 1
    functionsReached:
    - std::to_string
    - DNSRecord::DNSRecord
    - withName
    - std::make_shared<CNAMERecordContent>
    - DNSRecord::setContent
    - insert
    - vector::begin
    - getRawLabels
    - vector::at
    - Logging::Loggable
    - parseNibble
    - clear
    - at
    - directResolve
    - push_back
    - DNSName
    - vector::end
    - vector::empty
    - std::move
    - end
    - vector::size
    linkageType: ''
    returnType: int
    signature: int getFakePTRRecords(const DNSName& qname, vector<DNSRecord>& ret)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SyncRes::answerIsNOData
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:870,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - requestedType
    - rcode
    - ' records'
    argTypes:
    - uint16_t
    - int
    - std::vector<DNSRecord>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 873
      start: 867
    functionDepth: 1
    functionLinenumber: 867
    functionLinenumberEnd: 873
    functionName: dns64Candidate
    functionSourceFile: /src/pdns/pdns/recursordist/pdns_recursor.cc
    functionUses: 1
    functionsReached:
    - SyncRes::answerIsNOData
    linkageType: ''
    returnType: bool
    signature: bool dns64Candidate(uint16_t requestedType, int rcode, const std::vector<DNSRecord>&
      records)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:877,1
    - Dst: find
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:882,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:883,1
    - Dst: DNSName::chopOff
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:886,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - qname
    argTypes:
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 888
      start: 875
    functionDepth: 0
    functionLinenumber: 875
    functionLinenumberEnd: 888
    functionName: isAllowNotifyForZone
    functionSourceFile: /src/pdns/pdns/recursordist/pdns_recursor.cc
    functionUses: 1
    functionsReached:
    - empty
    - DNSName::chopOff
    - end
    - find
    linkageType: ''
    returnType: bool
    signature: bool isAllowNotifyForZone(DNSName qname)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: logNODs
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:900,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - ' fstreamLoggers'
    argTypes:
    - std::shared_ptr<std::vector<std::unique_ptr<FrameStreamLogger>>>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 905
      start: 894
    functionDepth: 0
    functionLinenumber: 894
    functionLinenumberEnd: 905
    functionName: isEnabledForNODs
    functionSourceFile: /src/pdns/pdns/recursordist/pdns_recursor.cc
    functionUses: 0
    functionsReached:
    - logNODs
    linkageType: ''
    returnType: bool
    signature: bool isEnabledForNODs(const std::shared_ptr<std::vector<std::unique_ptr<FrameStreamLogger>>>&
      fstreamLoggers)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: logUDRs
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:912,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - ' fstreamLoggers'
    argTypes:
    - std::shared_ptr<std::vector<std::unique_ptr<FrameStreamLogger>>>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 917
      start: 906
    functionDepth: 0
    functionLinenumber: 906
    functionLinenumberEnd: 917
    functionName: isEnabledForUDRs
    functionSourceFile: /src/pdns/pdns/recursordist/pdns_recursor.cc
    functionUses: 0
    functionsReached:
    - logUDRs
    linkageType: ''
    returnType: bool
    signature: bool isEnabledForUDRs(const std::shared_ptr<std::vector<std::unique_ptr<FrameStreamLogger>>>&
      fstreamLoggers)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:922,1
    - Dst: std::getline
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:928,1
    - Dst: Utility::gettimeofday
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:935,1
    - Dst: dup
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:936,1
    - Dst: withName
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:939,1
    - Dst: setNonBlocking
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:942,1
    - Dst: pdns::UniqueFilePtr
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:943,1
    - Dst: fdopen
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:943,1
    - Dst: withName
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:946,1
    - Dst: close
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:947,1
    - Dst: isoDateTimeMillis
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:951,1
    - Dst: fprintf
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:952,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:952,1
    - Dst: timebuf_t::data
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:952,1
    - Dst: fprintf
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:953,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:953,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:953,1
    - Dst: isoDateTimeMillis
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:954,1
    - Dst: ferror
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:955,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:955,1
    - Dst: withName
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:957,1
    - Dst: clearerr
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:959,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:959,1
    - Dst: fprintf
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:960,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:960,1
    - Dst: timebuf_t::data
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:960,1
    - Dst: fprintf
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:963,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:963,1
    - Dst: timebuf_t::data
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:963,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 34
    argCount: 2
    argNames:
    - ' trace'
    - ' timev'
    argTypes:
    - string
    - timeval
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 966
      start: 920
    functionDepth: 1
    functionLinenumber: 920
    functionLinenumberEnd: 966
    functionName: dumpTrace
    functionSourceFile: /src/pdns/pdns/recursordist/pdns_recursor.cc
    functionUses: 0
    functionsReached:
    - timebuf_t::data
    - fprintf
    - isoDateTimeMillis
    - auto::get
    - c_str
    - withName
    - setNonBlocking
    - Utility::gettimeofday
    - dup
    - ferror
    - clearerr
    - pdns::UniqueFilePtr
    - empty
    - close
    - std::getline
    - fdopen
    linkageType: ''
    returnType: void
    signature: void dumpTrace(const string& trace, const timeval& timev)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: std::min
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:971,1
    - Dst: min
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:974,1
    - Dst: std::min
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:977,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 10
    argCount: 3
    argNames:
    - ' hdr'
    - ttl
    - seenAuthSOA
    argTypes:
    - struct dnsheader
    - uint32_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 980
      start: 968
    functionDepth: 0
    functionLinenumber: 968
    functionLinenumberEnd: 980
    functionName: capPacketCacheTTL
    functionSourceFile: /src/pdns/pdns/recursordist/pdns_recursor.cc
    functionUses: 0
    functionsReached:
    - std::min
    - min
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t capPacketCacheTTL(const struct dnsheader& hdr, uint32_t ttl,
      bool seenAuthSOA)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: d_gettagPolicyTags::empty
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:986,1
    - Dst: d_policyTags::erase
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:988,1
    - Dst: d_policyTags::empty
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:991,1
    - Dst: addPolicyTags
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:992,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - ' comboWriter'
    - ' pbMessage'
    argTypes:
    - DNSComboWriter
    - pdns::ProtoZero::RecMessage
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 994
      start: 982
    functionDepth: 0
    functionLinenumber: 982
    functionLinenumberEnd: 994
    functionName: addPolicyTagsToPBMessageIfNeeded
    functionSourceFile: /src/pdns/pdns/recursordist/pdns_recursor.cc
    functionUses: 0
    functionsReached:
    - d_policyTags::erase
    - d_gettagPolicyTags::empty
    - addPolicyTags
    - d_policyTags::empty
    linkageType: ''
    returnType: void
    signature: void addPolicyTagsToPBMessageIfNeeded(DNSComboWriter& comboWriter,
      pdns::ProtoZero::RecMessage& pbMessage)
  - BBCount: 159
    BranchProfiles: []
    Callsites:
    - Dst: std::unique_ptr<DNSComboWriter>
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:998,1
    - Dst: static_cast<DNSComboWriter*>
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:998,1
    - Dst: push_back
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1002,1
    - Dst: min
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1005,1
    - Dst: static_cast<uint16_t>
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1005,1
    - Dst: withName
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1016,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1016,1
    - Dst: getEDNSOpts
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1021,1
    - Dst: min
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1031,1
    - Dst: static_cast<uint16_t>
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1031,1
    - Dst: match
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1036,1
    - Dst: EDNSSubnetOpts::getFromString
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1045,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1048,1
    - Dst: string::empty
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1049,1
    - Dst: string::size
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1049,1
    - Dst: DNSPacketWriter::optvect_t::emplace_back
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1050,1
    - Dst: string::size
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1052,1
    - Dst: getLocal
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1073,1
    - Dst: pdns::ProtoZero::RecMessage::RecMessage
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1077,1
    - Dst: checkProtobufExport
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1078,1
    - Dst: pdns::ProtoZero::RecMessage::reserve
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1079,1
    - Dst: pdns::ProtoZero::RecMessage::setResponse
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1080,1
    - Dst: pdns::ProtoZero::RecMessage::setServerIdentity
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1081,1
    - Dst: checkOutgoingProtobufExport
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1085,1
    - Dst: checkFrameStreamExport
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1087,1
    - Dst: checkFrameStreamExport
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1088,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1093,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1094,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1095,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1096,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1097,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1098,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1099,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1108,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1109,1
    - Dst: SyncRes::setId
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1110,1
    - Dst: getTid
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1110,1
    - Dst: SyncRes::setLuaEngine
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1114,1
    - Dst: SyncRes::setDoDNSSEC
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1117,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1122,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1129,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1137,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1142,1
    - Dst: SyncRes::setDNSSECValidationRequested
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1144,1
    - Dst: SyncRes::setInitialRequestId
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1146,1
    - Dst: SyncRes::setOutgoingProtobufServers
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1147,1
    - Dst: SyncRes::setFrameStreamServers
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1149,1
    - Dst: lookup
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1156,1
    - Dst: auto*::second::suffixMatchNode::check
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1158,1
    - Dst: SyncRes::setQuerySource
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1170,1
    - Dst: auto::d_ednssubnet::getSource
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1170,1
    - Dst: boost::optional<const EDNSSubnetOpts&>
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1170,1
    - Dst: SyncRes::setQueryReceivedOverTCP
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1172,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1197,1
    - Dst: SyncRes::d_slog::withValues
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1200,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1200,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1201,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1201,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1202,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1203,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1204,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1205,1
    - Dst: auto::d_ednssubnet::getSource
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1205,1
    - Dst: auto::d_ednssubnet::getSource
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1205,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1206,1
    - Dst: getTid
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1206,1
    - Dst: static_cast<unsigned>
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1209,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1214,1
    - Dst: match
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1220,1
    - Dst: auto::d_mdp::d_qname::toString
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1220,1
    - Dst: SyncRes::setLogMode
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1221,1
    - Dst: SyncRes::d_slog::info
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1226,1
    - Dst: SyncRes::setCacheOnly
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1231,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1234,1
    - Dst: auto::d_luaContext::prerpz
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1241,1
    - Dst: DNSFilterEngine::Policy::wasHit
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1245,1
    - Dst: auto::dfe::getClientPolicy
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1247,1
    - Dst: mergePolicyTags
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1248,1
    - Dst: DNSFilterEngine::Policy::getTags
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1248,1
    - Dst: DNSFilterEngine::Policy::policyOverridesGettag
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1260,1
    - Dst: auto::dfe::getQueryPolicy
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1266,1
    - Dst: mergePolicyTags
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1268,1
    - Dst: DNSFilterEngine::Policy::getTags
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1268,1
    - Dst: DNSFilterEngine::Policy::wasHit
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1272,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1279,1
    - Dst: followCNAMERecords
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1282,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1282,1
    - Dst: auto::d_luaContext::preresolve
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1289,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1291,1
    - Dst: RecursorLua4::DNSQuestion::qname::isPartOf
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1291,1
    - Dst: getFakePTRRecords
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1292,1
    - Dst: SyncRes::setWantsRPZ
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1296,1
    - Dst: auto::d_luaContext::policyHitEventFilter
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1300,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1300,1
    - Dst: DNSFilterEngine::Policy
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1302,1
    - Dst: handlePolicyHit
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1305,1
    - Dst: dns64Candidate
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1307,1
    - Dst: getFakeAAAARecords
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1308,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1322,1
    - Dst: auto::d_routingTag::empty
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1324,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1328,1
    - Dst: SyncRes::beginResolve
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1329,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1329,1
    - Dst: SyncRes::wasOutOfBand
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1330,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1334,1
    - Dst: SyncRes::d_slog::info
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1335,1
    - Dst: SyncRes::d_slog::error
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1340,1
    - Dst: SyncRes::d_slog::error
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1346,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1346,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1346,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1351,1
    - Dst: SyncRes::d_appliedPolicy::addSOAtoRPZResult
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1352,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1354,1
    - Dst: SyncRes::getValidationState
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1359,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1361,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1371,1
    - Dst: handlePolicyHit
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1373,1
    - Dst: SyncRes::answerIsNOData
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1385,1
    - Dst: auto::d_luaContext::nodata
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1386,1
    - Dst: handlePolicyHit
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1389,1
    - Dst: auto::d_luaContext::nxdomain
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1392,1
    - Dst: handlePolicyHit
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1395,1
    - Dst: SyncRes::isDNSSECValidationRequested
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1405,1
    - Dst: vStateIsBogus
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1405,1
    - Dst: dns64Candidate
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1405,1
    - Dst: getFakeAAAARecords
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1406,1
    - Dst: auto::d_luaContext::hasPostResolveFFIfunc
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1412,1
    - Dst: SyncRes::d_eventTrace::add
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1414,1
    - Dst: auto::d_luaContext::postresolve_ffi
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1415,1
    - Dst: SyncRes::d_eventTrace::add
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1416,1
    - Dst: handlePolicyHit
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1419,1
    - Dst: auto::d_luaContext::postresolve
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1422,1
    - Dst: handlePolicyHit
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1424,1
    - Dst: handlePolicyHit
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1437,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1445,1
    - Dst: static_cast<unsigned>
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1445,1
    - Dst: dumpTrace
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1446,1
    - Dst: SyncRes::getTrace
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1446,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1450,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1452,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1455,1
    - Dst: SyncRes::isDNSSECValidationRequested
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1458,1
    - Dst: SyncRes::getValidationState
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1460,1
    - Dst: SyncRes::doLog
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1464,1
    - Dst: vStateIsBogus
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1464,1
    - Dst: SyncRes::d_slog::withValues
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1466,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1466,1
    - Dst: SyncRes::getDNSSECLimitHit
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1467,1
    - Dst: std::shared_ptr::withValues
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1468,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1468,1
    - Dst: getLocal
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1470,1
    - Dst: auto::check
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1471,1
    - Dst: std::shared_ptr::withValues
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1472,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1472,1
    - Dst: SyncRes::doLog
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1477,1
    - Dst: std::shared_ptr::info
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1478,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1483,1
    - Dst: SyncRes::doLog
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1487,1
    - Dst: std::shared_ptr::info
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1488,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1491,1
    - Dst: vStateIsBogus
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1493,1
    - Dst: push_back
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1495,1
    - Dst: push_back
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1498,1
    - Dst: SyncRes::doLog
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1500,1
    - Dst: std::shared_ptr::info
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1501,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1505,1
    - Dst: SyncRes::doLog
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1506,1
    - Dst: std::shared_ptr::info
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1507,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1510,1
    - Dst: SyncRes::doLog
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1514,1
    - Dst: std::shared_ptr::info
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1515,1
    - Dst: SyncRes::d_slog::error
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1522,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1522,1
    - Dst: SyncRes::getDNSSECLimitHit
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1527,1
    - Dst: SyncRes::d_slog::error
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1528,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1528,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1528,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1528,1
    - Dst: SyncRes::getDNSSECLimitHit
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1528,1
    - Dst: vector::empty
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1534,1
    - Dst: pdns::dedupRecords
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1539,1
    - Dst: pdns::orderAndShuffle
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1541,1
    - Dst: auto::sortlist::getOrderCmp
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1542,1
    - Dst: stable_sort
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1543,1
    - Dst: vector::begin
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1543,1
    - Dst: vector::end
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1543,1
    - Dst: addRecordToPacket
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1554,1
    - Dst: udrCheckUniqueDNSRecord
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1563,1
    - Dst: servers::size
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1574,1
    - Dst: servers::at
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1574,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1574,1
    - Dst: pdns::ProtoZero::RecMessage::size
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1575,1
    - Dst: pdns::ProtoZero::RecMessage::addRR
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1576,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1581,1
    - Dst: isEnabledForUDRs
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1586,1
    - Dst: TIMEVAL_TO_TIMESPEC
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1590,1
    - Dst: TIMEVAL_TO_TIMESPEC
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1593,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1595,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1595,1
    - Dst: vector::begin
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1595,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1595,1
    - Dst: DnstapMessage::getBuffer
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1596,1
    - Dst: logUDRs
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1598,1
    - Dst: remoteLoggerQueueData
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1599,1
    - Dst: SyncRes::wasVariable
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1609,1
    - Dst: EDNSSubnetOpts::setSource
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1611,1
    - Dst: auto::d_ednssubnet::getSource
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1611,1
    - Dst: ComboAddress::reset
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1613,1
    - Dst: EDNSSubnetOpts::getFamily
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1614,1
    - Dst: EDNSSubnetOpts::setScopePrefixLength
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1615,1
    - Dst: EDNSSubnetOpts::makeOptString
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1616,1
    - Dst: DNSPacketWriter::size
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1620,1
    - Dst: DNSPacketWriter::size
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1620,1
    - Dst: auto::size
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1620,1
    - Dst: auto::size
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1622,1
    - Dst: DNSPacketWriter::optvect_t::emplace_back
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1624,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1624,1
    - Dst: DNSPacketWriter::getSizeWithOpts
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1629,1
    - Dst: min
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1632,1
    - Dst: static_cast<uint16_t>
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1632,1
    - Dst: std::min
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1646,1
    - Dst: DNSPacketWriter::optvect_t::emplace_back
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1648,1
    - Dst: makeEDNSPaddingOptString
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1648,1
    - Dst: SyncRes::getValidationState
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1654,1
    - Dst: vStateIsBogus
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1655,1
    - Dst: static_cast<EDNSExtendedError::code>
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1660,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1661,1
    - Dst: static_cast<EDNSExtendedError::code>
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1664,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1665,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1713,1
    - Dst: vStateToString
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1713,1
    - Dst: std::optional::emplace
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1716,1
    - Dst: static_cast<uint16_t>
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1716,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1716,1
    - Dst: DNSPacketWriter::size
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1718,1
    - Dst: DNSPacketWriter::size
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1718,1
    - Dst: std::optional::extraText::size
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1718,1
    - Dst: DNSPacketWriter::optvect_t::emplace_back
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1719,1
    - Dst: makeEDNSExtendedErrorOptString
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1719,1
    - Dst: DNSPacketWriter::addOpt
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1729,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1730,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1733,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1733,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1733,1
    - Dst: updateResponseStats
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1734,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1734,1
    - Dst: nodCheckNewDomain
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1738,1
    - Dst: isEnabledForNODs
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1741,1
    - Dst: TIMEVAL_TO_TIMESPEC
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1745,1
    - Dst: TIMEVAL_TO_TIMESPEC
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1748,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1750,1
    - Dst: DnstapMessage::getBuffer
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1751,1
    - Dst: logNODs
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1754,1
    - Dst: remoteLoggerQueueData
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1755,1
    - Dst: SyncRes::wasVariable
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1764,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1765,1
    - Dst: DNSFilterEngine::Policy::getName
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1768,1
    - Dst: auto::d_policyTags::empty
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1768,1
    - Dst: pdns::ProtoZero::RecMessage::setResponseCode
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1770,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1770,1
    - Dst: DNSFilterEngine::Policy::getName
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1771,1
    - Dst: pdns::ProtoZero::RecMessage::setAppliedPolicy
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1772,1
    - Dst: DNSFilterEngine::Policy::getName
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1772,1
    - Dst: pdns::ProtoZero::RecMessage::setAppliedPolicyType
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1773,1
    - Dst: pdns::ProtoZero::RecMessage::setAppliedPolicyTrigger
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1774,1
    - Dst: DNSFilterEngine::Policy::getTrigger
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1774,1
    - Dst: pdns::ProtoZero::RecMessage::setAppliedPolicyHit
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1775,1
    - Dst: DNSFilterEngine::Policy::getHit
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1775,1
    - Dst: pdns::ProtoZero::RecMessage::setAppliedPolicyKind
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1776,1
    - Dst: pdns::ProtoZero::RecMessage::setInBytes
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1778,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1778,1
    - Dst: pdns::ProtoZero::RecMessage::setValidationState
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1779,1
    - Dst: SyncRes::getValidationState
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1779,1
    - Dst: addPolicyTagsToPBMessageIfNeeded
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1781,1
    - Dst: pdns::ProtoZero::RecMessage::setEDE
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1783,1
    - Dst: pdns::ProtoZero::RecMessage::setEDEText
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1784,1
    - Dst: std::make_optional
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1788,1
    - Dst: pdns::ProtoZero::RecMessage::getMessageBuf
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1789,1
    - Dst: pdns::ProtoZero::RecMessage::getResponseBuf
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1790,1
    - Dst: DNSFilterEngine::Policy::getName
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1791,1
    - Dst: auto::d_policyTags::empty
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1791,1
    - Dst: pdns::ProtoZero::RecMessage::clearUDR
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1794,1
    - Dst: SyncRes::wasVariable
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1798,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1798,1
    - Dst: capPacketCacheTTL
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1800,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1800,1
    - Dst: insertResponsePacket
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1801,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1801,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1803,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1803,1
    - Dst: vector::begin
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1803,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1803,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1807,1
    - Dst: updateSnap
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1811,1
    - Dst: SyncRes::d_eventTrace::add
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1814,1
    - Dst: fillMSGHdr
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1819,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1819,1
    - Dst: vector::begin
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1819,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1819,1
    - Dst: count
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1822,1
    - Dst: addCMsgSrcAddr
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1823,1
    - Dst: sendOnNBSocket
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1825,1
    - Dst: error
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1827,1
    - Dst: sendResponseOverTCP
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1831,1
    - Dst: finishTCPReply
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1832,1
    - Dst: RunningResolveGuard::setHandled
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1833,1
    - Dst: SyncRes::d_eventTrace::add
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1836,1
    - Dst: DNSFilterEngine::Policy::getName
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1839,1
    - Dst: auto::d_policyTags::empty
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1839,1
    - Dst: pdns::ProtoZero::RecMessage::setQueryTime
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1842,1
    - Dst: pdns::ProtoZero::RecMessage::setQueryTime
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1845,1
    - Dst: pdns::ProtoZero::RecMessage::setMessageIdentity
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1847,1
    - Dst: pdns::ProtoZero::RecMessage::setSocketProtocol
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1848,1
    - Dst: pdns::ProtoZero::RecMessage::setSocketFamily
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1851,1
    - Dst: Netmask::getMaskedNetwork
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1853,1
    - Dst: pdns::ProtoZero::RecMessage::setFrom
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1854,1
    - Dst: pdns::ProtoZero::RecMessage::setFromPort
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1855,1
    - Dst: auto::d_source::getPort
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1855,1
    - Dst: pdns::ProtoZero::RecMessage::setSocketFamily
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1858,1
    - Dst: Netmask::getMaskedNetwork
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1860,1
    - Dst: pdns::ProtoZero::RecMessage::setFrom
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1861,1
    - Dst: pdns::ProtoZero::RecMessage::setFromPort
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1862,1
    - Dst: auto::d_mappedSource::getPort
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1862,1
    - Dst: pdns::ProtoZero::RecMessage::setTo
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1865,1
    - Dst: pdns::ProtoZero::RecMessage::setId
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1866,1
    - Dst: pdns::ProtoZero::RecMessage::setTime
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1868,1
    - Dst: pdns::ProtoZero::RecMessage::setEDNSSubnet
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1869,1
    - Dst: auto::d_ednssubnet::getSource
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1869,1
    - Dst: auto::d_ednssubnet::getSource
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1869,1
    - Dst: pdns::ProtoZero::RecMessage::setRequestorId
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1870,1
    - Dst: pdns::ProtoZero::RecMessage::setDeviceId
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1871,1
    - Dst: pdns::ProtoZero::RecMessage::setDeviceName
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1872,1
    - Dst: pdns::ProtoZero::RecMessage::setToPort
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1873,1
    - Dst: auto::d_destination::getPort
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1873,1
    - Dst: pdns::ProtoZero::RecMessage::addPolicyTags
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1874,1
    - Dst: pdns::ProtoZero::RecMessage::setWorkerId
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1875,1
    - Dst: thread_local_id
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1875,1
    - Dst: pdns::ProtoZero::RecMessage::setPacketCacheHit
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1876,1
    - Dst: pdns::ProtoZero::RecMessage::setOutgoingQueries
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1877,1
    - Dst: pdns::ProtoZero::RecMessage::setMeta
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1879,1
    - Dst: pdns::ProtoZero::RecMessage::setNewlyObservedDomain
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1884,1
    - Dst: pdns::ProtoZero::RecMessage::addPolicyTag
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1885,1
    - Dst: pdns::ProtoZero::RecMessage::addPolicyTag
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1888,1
    - Dst: SyncRes::d_eventTrace::enabled
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1892,1
    - Dst: SyncRes::eventTraceEnabled
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1892,1
    - Dst: pdns::ProtoZero::RecMessage::addEvents
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1893,1
    - Dst: SyncRes::d_eventTrace::enabled
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1896,1
    - Dst: SyncRes::d_eventTrace::getThisOTTraceEnabled
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1896,1
    - Dst: SyncRes::eventTraceEnabled
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1896,1
    - Dst: SyncRes::d_otTrace::setIDsIfNotSet
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1897,1
    - Dst: pdns::trace::boilerPlate
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1898,1
    - Dst: SyncRes::d_eventTrace::convertToOT
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1898,1
    - Dst: auto::d_mdp::d_qname::toLogString
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1899,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1900,1
    - Dst: auto::encode
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1903,1
    - Dst: pdns::ProtoZero::RecMessage::setOpenTelemetryData
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1904,1
    - Dst: pdns::ProtoZero::RecMessage::setOpenTelemetryTraceID
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1908,1
    - Dst: protobufLogResponse
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1911,1
    - Dst: SyncRes::d_eventTrace::enabled
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1915,1
    - Dst: SyncRes::eventTraceEnabled
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1915,1
    - Dst: SyncRes::d_slog::info
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1916,1
    - Dst: SyncRes::d_eventTrace::toString
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1916,1
    - Dst: uSec
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1921,1
    - Dst: SyncRes::getNow
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1921,1
    - Dst: SyncRes::d_slog::info
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1923,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1923,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1924,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1924,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1925,1
    - Dst: ntohs
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1925,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1925,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1926,1
    - Dst: ntohs
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1926,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1926,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1927,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1928,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1929,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1930,1
    - Dst: static_cast<double>
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1930,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1931,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1932,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1933,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1934,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1935,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1936,1
    - Dst: SyncRes::getValidationState
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1936,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1937,1
    - Dst: SyncRes::wasVariable
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1937,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1938,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1939,1
    - Dst: static_cast<unsigned>
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1942,1
    - Dst: incCacheMisses
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1944,1
    - Dst: incCacheHits
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1947,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1951,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1952,1
    - Dst: static_cast<double>
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1954,1
    - Dst: min
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1955,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1956,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1961,1
    - Dst: static_cast<double>
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1962,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1963,1
    - Dst: sendNODLookup
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1968,1
    - Dst: SyncRes::d_slog::error
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1975,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1975,1
    - Dst: SyncRes::d_slog::error
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1978,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1978,1
    - Dst: SyncRes::d_slog::error
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1981,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1981,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1981,1
    - Dst: std::rethrow_if_nested
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1985,1
    - Dst: SyncRes::d_slog::error
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1988,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1988,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1988,1
    - Dst: SyncRes::d_slog::info
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1995,1
    - Dst: runTaskOnce
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:1998,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2000,1
    - Dst: getMaxStackUsage
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2001,1
    - Dst: SyncRes::d_slog::info
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2002,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2003,1
    - Dst: getMaxStackUsage
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2003,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2004,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2005,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2006,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2007,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2008,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2009,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2010,1
    - Dst: SyncRes::getValidationState
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2010,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2012,1
    - Dst: max
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2012,1
    - Dst: getMaxStackUsage
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2012,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2012,1
    - Dst: updateSnap
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2013,1
    CyclomaticComplexity: 275
    EdgeCount: 275
    ICount: 669
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2014
      start: 996
    functionDepth: 4
    functionLinenumber: 996
    functionLinenumberEnd: 2014
    functionName: startDoResolve
    functionSourceFile: /src/pdns/pdns/recursordist/pdns_recursor.cc
    functionUses: 0
    functionsReached:
    - udrCheckUniqueDNSRecord
    - SyncRes::isDNSSECValidationRequested
    - auto::d_luaContext::postresolve
    - servers::at
    - auto::d_luaContext::policyHitEventFilter
    - ntohs
    - TIMEVAL_TO_TIMESPEC
    - auto::encode
    - SyncRes::setWantsRPZ
    - DNSPacketWriter::optvect_t::emplace_back
    - vector::begin
    - SyncRes::d_slog::info
    - std::shared_ptr::info
    - auto::d_routingTag::empty
    - pdns::ProtoZero::RecMessage::setValidationState
    - static_cast<double>
    - followCNAMERecords
    - std::optional::extraText::size
    - pdns::ProtoZero::RecMessage::setDeviceId
    - pdns::ProtoZero::RecMessage::setNewlyObservedDomain
    - SyncRes::d_slog::error
    - SyncRes::setLogMode
    - incCacheHits
    - max
    - auto::dfe::getClientPolicy
    - DNSPacketWriter::commit
    - SyncRes::setDoDNSSEC
    - EDNSSubnetOpts::setSource
    - static_cast<EDNSExtendedError::code>
    - auto::check
    - vector::end
    - pdns::ProtoZero::RecMessage::setEDNSSubnet
    - pdns::ProtoZero::RecMessage::setOpenTelemetryTraceID
    - DNSFilterEngine::Policy::getTrigger
    - arg
    - getMaxStackUsage
    - std::unique_ptr<DNSComboWriter>
    - std::min
    - pdns::ProtoZero::RecMessage::setServerIdentity
    - ComboAddress::reset
    - pdns::orderAndShuffle
    - EDNSSubnetOpts::makeOptString
    - checkFrameStreamExport
    - vStateToString
    - addPolicyTagsToPBMessageIfNeeded
    - reinterpret_cast<char*>
    - lookup
    - SyncRes::getNow
    - std::optional::emplace
    - pdns::ProtoZero::RecMessage::addPolicyTag
    - SyncRes::wasVariable
    - pdns::ProtoZero::RecMessage::setPacketCacheHit
    - SyncRes::d_eventTrace::getThisOTTraceEnabled
    - getFakeAAAARecords
    - DNSPacketWriter::getSizeWithOpts
    - auto::size
    - pdns::ProtoZero::RecMessage::setDeviceName
    - DNSFilterEngine::Policy::wasHit
    - DNSFilterEngine::Policy::getTags
    - pdns::ProtoZero::RecMessage::setInBytes
    - string::empty
    - pdns::ProtoZero::RecMessage::setResponse
    - checkOutgoingProtobufExport
    - pdns::ProtoZero::RecMessage::setQueryTime
    - mergePolicyTags
    - string
    - auto::d_mdp::d_qname::toString
    - getLocal
    - pdns::ProtoZero::RecMessage::setAppliedPolicyTrigger
    - static_cast<uint16_t>
    - updateSnap
    - pdns::ProtoZero::RecMessage::setTime
    - capPacketCacheTTL
    - std::shared_ptr::withValues
    - DNSFilterEngine::Policy::getName
    - getEDNSOpts
    - checkProtobufExport
    - EDNSSubnetOpts::setScopePrefixLength
    - stable_sort
    - std::runtime_error
    - DNSFilterEngine::Policy::getHit
    - pdns::ProtoZero::RecMessage::getResponseBuf
    - pdns::trace::boilerPlate
    - getTid
    - vector::empty
    - SyncRes::eventTraceEnabled
    - SyncRes::beginResolve
    - pdns::ProtoZero::RecMessage::reserve
    - sendNODLookup
    - pdns::ProtoZero::RecMessage::setToPort
    - insertResponsePacket
    - DnstapMessage::getBuffer
    - pdns::dedupRecords
    - auto::d_luaContext::hasPostResolveFFIfunc
    - handlePolicyHit
    - SyncRes::setFrameStreamServers
    - sendResponseOverTCP
    - static_cast<DNSComboWriter*>
    - RecursorLua4::DNSQuestion::qname::isPartOf
    - auto*::second::suffixMatchNode::check
    - pdns::ProtoZero::RecMessage::setAppliedPolicyKind
    - uSec
    - vector::size
    - SyncRes::setDNSSECValidationRequested
    - PDNSException
    - addRecordToPacket
    - protobufLogResponse
    - SyncRes::getDNSSECLimitHit
    - nodCheckNewDomain
    - pdns::ProtoZero::RecMessage::getMessageBuf
    - Netmask::getMaskedNetwork
    - pdns::ProtoZero::RecMessage::setAppliedPolicyHit
    - auto::d_mappedSource::getPort
    - pdns::ProtoZero::RecMessage::setAppliedPolicy
    - DNSPacketWriter::size
    - isEnabledForNODs
    - SyncRes::getTrace
    - boost::optional<const EDNSSubnetOpts&>
    - pdns::ProtoZero::RecMessage::setId
    - SyncRes::setId
    - QType
    - pdns::ProtoZero::RecMessage::setWorkerId
    - auto::dfe::getQueryPolicy
    - match
    - pdns::ProtoZero::RecMessage::RecMessage
    - empty
    - auto::d_luaContext::prerpz
    - SyncRes::wasOutOfBand
    - at
    - auto::d_luaContext::preresolve
    - pdns::ProtoZero::RecMessage::setEDEText
    - std::rethrow_if_nested
    - dns64Candidate
    - auto::d_mdp::d_qname::toLogString
    - push_back
    - reinterpret_cast<const char*>
    - auto::d_luaContext::nxdomain
    - static_cast<unsigned>
    - SyncRes::setInitialRequestId
    - pdns::ProtoZero::RecMessage::setRequestorId
    - std::make_optional
    - pdns::ProtoZero::RecMessage::setSocketProtocol
    - sendOnNBSocket
    - std::move
    - pdns::ProtoZero::RecMessage::setResponseCode
    - auto::d_luaContext::nodata
    - pdns::ProtoZero::RecMessage::setFrom
    - SyncRes::d_eventTrace::toString
    - count
    - pdns::ProtoZero::RecMessage::setOutgoingQueries
    - SyncRes::answerIsNOData
    - incCacheMisses
    - DNSPacketWriter::addOpt
    - SyncRes::d_eventTrace::add
    - pdns::ProtoZero::RecMessage::addRR
    - pdns::ProtoZero::RecMessage::addPolicyTags
    - updateResponseStats
    - DNSFilterEngine::Policy::policyOverridesGettag
    - SyncRes::d_slog::withValues
    - addCMsgSrcAddr
    - auto::d_luaContext::postresolve_ffi
    - withName
    - auto::d_destination::getPort
    - SyncRes::d_otTrace::setIDsIfNotSet
    - vStateIsBogus
    - getFakePTRRecords
    - thread_local_id
    - remoteLoggerQueueData
    - error
    - servers::size
    - logUDRs
    - fillMSGHdr
    - string::size
    - pdns::ProtoZero::RecMessage::addEvents
    - Logging::Loggable
    - EDNSSubnetOpts::getFamily
    - SyncRes::setCacheOnly
    - logNODs
    - runTaskOnce
    - SyncRes::d_eventTrace::convertToOT
    - DNSPacketWriter::getHeader
    - SyncRes::doLog
    - EDNSSubnetOpts::getFromString
    - SyncRes::setLuaEngine
    - SyncRes::setQueryReceivedOverTCP
    - makeEDNSPaddingOptString
    - finishTCPReply
    - RunningResolveGuard::setHandled
    - SyncRes::d_appliedPolicy::addSOAtoRPZResult
    - pdns::ProtoZero::RecMessage::setMessageIdentity
    - vector::clear
    - min
    - pdns::max
    - pdns::ProtoZero::RecMessage::setAppliedPolicyType
    - dumpTrace
    - pdns::ProtoZero::RecMessage::setFromPort
    - auto::d_policyTags::empty
    - pdns::ProtoZero::RecMessage::clearUDR
    - pdns::ProtoZero::RecMessage::setSocketFamily
    - pdns::ProtoZero::RecMessage::setOpenTelemetryData
    - SyncRes::setOutgoingProtobufServers
    - pdns::ProtoZero::RecMessage::setEDE
    - isEnabledForUDRs
    - pdns::ProtoZero::RecMessage::setTo
    - auto::d_ednssubnet::getSource
    - auto::sortlist::getOrderCmp
    - pdns::ProtoZero::RecMessage::setMeta
    - what
    - DNSFilterEngine::Policy
    - SyncRes::setQuerySource
    - makeEDNSExtendedErrorOptString
    - auto::d_source::getPort
    - pdns::ProtoZero::RecMessage::size
    - SyncRes::getValidationState
    - SyncRes::d_eventTrace::enabled
    linkageType: ''
    returnType: void
    signature: void startDoResolve(void* arg)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: data
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2019,1
    - Dst: dnsheader_aligned::get
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2020,1
    - Dst: length
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2021,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2023,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2023,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2023,1
    - Dst: ntohs
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2027,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2030,1
    - Dst: reinterpret_cast<const dnsrecordheader*>
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2036,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2036,1
    - Dst: ntohs
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2037,1
    - Dst: memcpy
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2039,1
    - Dst: ntohs
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2049,1
    - Dst: getEDNSOption
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2054,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2054,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2054,1
    - Dst: EDNSSubnetOpts::getFromString
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2057,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2057,1
    - Dst: getEDNSOptions
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2065,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2065,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2065,1
    - Dst: EDNSOptionViewMap*::find
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2067,1
    - Dst: EDNSOptionViewMap*::end
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2068,1
    - Dst: auto::second::values::empty
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2068,1
    - Dst: auto::second::values::at
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2068,1
    - Dst: auto::second::values::at
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2068,1
    - Dst: EDNSSubnetOpts::getFromString
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2070,1
    - Dst: auto::second::values::at
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2070,1
    - Dst: auto::second::values::at
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2070,1
    - Dst: ntohs
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2079,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 36
    argCount: 8
    argNames:
    - ' question'
    - dnsname
    - qtype
    - qclass
    - ' foundECS'
    - ednssubnet
    - options
    - ' ednsVersion'
    argTypes:
    - std::string
    - DNSName*
    - uint16_t*
    - uint16_t*
    - bool
    - EDNSSubnetOpts*
    - EDNSOptionViewMap*
    - std::optional<uint32_t>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2081
      start: 2016
    functionDepth: 0
    functionLinenumber: 2016
    functionLinenumberEnd: 2081
    functionName: getQNameAndSubnet
    functionSourceFile: /src/pdns/pdns/recursordist/pdns_recursor.cc
    functionUses: 1
    functionsReached:
    - length
    - memcpy
    - dnsheader_aligned::get
    - ntohs
    - auto::second::values::at
    - DNSName
    - EDNSSubnetOpts::getFromString
    - auto::second::values::empty
    - reinterpret_cast<const char*>
    - getEDNSOptions
    - EDNSOptionViewMap*::end
    - data
    - c_str
    - reinterpret_cast<const dnsrecordheader*>
    - at
    - EDNSOptionViewMap*::find
    - getEDNSOption
    - static_cast<int>
    linkageType: ''
    returnType: void
    signature: "void getQNameAndSubnet(const std::string& question, DNSName* dnsname,
      uint16_t* qtype, uint16_t* qclass,\n                       bool& foundECS, EDNSSubnetOpts*
      ednssubnet, EDNSOptionViewMap* options, std::optional<uint32_t>& ednsVersion)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: getResponsePacket
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2097,1
    - Dst: getResponsePacket
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2100,1
    - Dst: vStateIsBogus
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2104,1
    - Dst: push_back
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2106,1
    - Dst: push_back
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2109,1
    - Dst: lookup
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2115,1
    - Dst: auto*::second::suffixMatchNode::check
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2117,1
    - Dst: length
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2124,1
    - Dst: data
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2125,1
    - Dst: ageDNSPacket
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2126,1
    - Dst: dnsheader_aligned::get
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2127,1
    - Dst: updateResponseStats
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2128,1
    - Dst: length
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2128,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2129,1
    - Dst: length
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2129,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2133,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2134,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2137,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2138,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 38
    argCount: 13
    argNames:
    - qnameParsed
    - tag
    - ' data'
    - ' qname'
    - ' qtype'
    - ' qclass'
    - ' now'
    - ' response'
    - ' qhash'
    - ' pbData'
    - tcp
    - ' source'
    - ' mappedSource'
    argTypes:
    - bool
    - unsigned int
    - string
    - DNSName
    - uint16_t
    - uint16_t
    - struct timeval
    - string
    - uint32_t
    - RecursorPacketCache::OptPBData
    - bool
    - ComboAddress
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2143
      start: 2083
    functionDepth: 1
    functionLinenumber: 2083
    functionLinenumberEnd: 2143
    functionName: checkForCacheHit
    functionSourceFile: /src/pdns/pdns/recursordist/pdns_recursor.cc
    functionUses: 1
    functionsReached:
    - length
    - getResponsePacket
    - lookup
    - dnsheader_aligned::get
    - push_back
    - vStateIsBogus
    - ageDNSPacket
    - auto*::second::suffixMatchNode::check
    - data
    - updateResponseStats
    - at
    linkageType: ''
    returnType: bool
    signature: "bool checkForCacheHit(bool qnameParsed, unsigned int tag, const string&
      data,\n                      DNSName& qname, uint16_t& qtype, uint16_t& qclass,\n
      \                     const struct timeval& now,\n                      string&
      response, uint32_t& qhash,\n                      RecursorPacketCache::OptPBData&
      pbData, bool tcp, const ComboAddress& source, const ComboAddress& mappedSource)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: wipeCaches
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2147,1
    - Dst: withName
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2148,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2148,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2148,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2148,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2148,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - ' canon'
    - subtree
    - qtype
    argTypes:
    - DNSName
    - bool
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2150
      start: 2145
    functionDepth: 3
    functionLinenumber: 2145
    functionLinenumberEnd: 2150
    functionName: pleaseWipeCaches
    functionSourceFile: /src/pdns/pdns/recursordist/pdns_recursor.cc
    functionUses: 0
    functionsReached:
    - wipeCaches
    - withName
    - Logging::Loggable
    linkageType: ''
    returnType: void
    signature: void * pleaseWipeCaches(const DNSName& canon, bool subtree, uint16_t
      qtype)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ThreadMSG::ThreadMSG
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2156,1
    - Dst: pleaseWipeCaches
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2157,1
    - Dst: __tsan_release
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2159,1
    - Dst: write
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2161,1
    - Dst: Logging::Logger::info
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2161,1
    - Dst: __tsan_acquire
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2162,1
    - Dst: unixDie
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2165,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - ' canon'
    argTypes:
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2168
      start: 2152
    functionDepth: 4
    functionLinenumber: 2152
    functionLinenumberEnd: 2168
    functionName: requestWipeCaches
    functionSourceFile: /src/pdns/pdns/recursordist/pdns_recursor.cc
    functionUses: 1
    functionsReached:
    - __tsan_acquire
    - __tsan_release
    - unixDie
    - ThreadMSG::ThreadMSG
    - Logging::Logger::info
    - write
    - pleaseWipeCaches
    linkageType: ''
    returnType: void
    signature: void requestWipeCaches(const DNSName& canon)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: match
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2175,1
    - Dst: count
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2179,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - ' from'
    - ' listenAddress'
    argTypes:
    - ComboAddress
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2182
      start: 2170
    functionDepth: 0
    functionLinenumber: 2170
    functionLinenumberEnd: 2182
    functionName: expectProxyProtocol
    functionSourceFile: /src/pdns/pdns/recursordist/pdns_recursor.cc
    functionUses: 1
    functionsReached:
    - match
    - count
    linkageType: ''
    returnType: bool
    signature: bool expectProxyProtocol(const ComboAddress& from, const ComboAddress&
      listenAddress)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2186,1
    - Dst: lookup
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2189,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 2
    argNames:
    - ' conditions'
    - ' source'
    argTypes:
    - std::unique_ptr<OpenTelemetryTraceConditions>
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2197
      start: 2184
    functionDepth: 0
    functionLinenumber: 2184
    functionLinenumberEnd: 2197
    functionName: matchOTConditions
    functionSourceFile: /src/pdns/pdns/recursordist/pdns_recursor.cc
    functionUses: 1
    functionsReached:
    - empty
    - lookup
    linkageType: ''
    returnType: bool
    signature: bool matchOTConditions(const std::unique_ptr<OpenTelemetryTraceConditions>&
      conditions, const ComboAddress& source)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2201,1
    - Dst: lookup
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2204,1
    - Dst: d_qtypes::count
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2215,1
    - Dst: d_qnames::check
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2218,1
    - Dst: setThisOTTraceEnabled
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2221,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 25
    argCount: 7
    argNames:
    - ' eventTrace'
    - ' conditions'
    - ' source'
    - ' qname'
    - qtype
    - qid
    - edns_option_present
    argTypes:
    - RecEventTrace
    - std::unique_ptr<OpenTelemetryTraceConditions>
    - ComboAddress
    - DNSName
    - QType
    - uint16_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2226
      start: 2199
    functionDepth: 0
    functionLinenumber: 2199
    functionLinenumberEnd: 2226
    functionName: matchOTConditions
    functionSourceFile: /src/pdns/pdns/recursordist/pdns_recursor.cc
    functionUses: 1
    functionsReached:
    - d_qtypes::count
    - setThisOTTraceEnabled
    - lookup
    - empty
    - d_qnames::check
    linkageType: ''
    returnType: bool
    signature: bool matchOTConditions(RecEventTrace& eventTrace, const std::unique_ptr<OpenTelemetryTraceConditions>&
      conditions, const ComboAddress& source, const DNSName& qname, QType qtype, uint16_t
      qid, bool edns_option_present)
  - BBCount: 35
    BranchProfiles: []
    Callsites:
    - Dst: add
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2235,1
    - Dst: setParent
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2236,1
    - Dst: isWildcardExpandedOntoItself
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2238,1
    - Dst: gettimeofday
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2239,1
    - Dst: static_cast<double>
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2242,1
    - Dst: static_cast<double>
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2242,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2245,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2250,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2253,1
    - Dst: data
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2257,1
    - Dst: dnsheader_aligned::get
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2258,1
    - Dst: getLocal
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2272,1
    - Dst: checkProtobufExport
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2273,1
    - Dst: checkOutgoingProtobufExport
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2274,1
    - Dst: getUniqueID
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2279,1
    - Dst: checkFrameStreamExport
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2284,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2294,1
    - Dst: DNSName::DNSName
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2298,1
    - Dst: hasGettagFunc
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2316,1
    - Dst: hasGettagFFIFunc
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2316,1
    - Dst: static_cast<unsigned>
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2316,1
    - Dst: add
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2318,1
    - Dst: getQNameAndSubnet
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2323,1
    - Dst: SyncRes::eventTraceEnabled
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2325,1
    - Dst: add
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2328,1
    - Dst: SyncRes::eventTraceEnabled
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2332,1
    - Dst: pdns::trace::extractOTraceIDs
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2333,1
    - Dst: matchOTConditions
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2334,1
    - Dst: ntohs
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2334,1
    - Dst: SyncRes::eventTraceEnabledOnly
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2334,1
    - Dst: setEnabled
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2335,1
    - Dst: hasGettagFFIFunc
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2341,1
    - Dst: EDNSSubnetOpts::getSource
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2342,1
    - Dst: add
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2344,1
    - Dst: gettag_ffi
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2345,1
    - Dst: add
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2346,1
    - Dst: hasGettagFunc
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2348,1
    - Dst: add
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2349,1
    - Dst: gettag
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2350,1
    - Dst: EDNSSubnetOpts::getSource
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2350,1
    - Dst: add
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2351,1
    - Dst: error
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2356,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2356,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2356,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2356,1
    - Dst: log
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2360,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2360,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2360,1
    - Dst: log
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2365,1
    - Dst: std::unordered_set::empty
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2371,1
    - Dst: protobufLogQuery
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2372,1
    - Dst: EDNSSubnetOpts::getSource
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2372,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2372,1
    - Dst: match
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2376,1
    - Dst: static_cast<unsigned>
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2380,1
    - Dst: add
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2384,1
    - Dst: checkForCacheHit
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2385,1
    - Dst: add
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2386,1
    - Dst: info
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2389,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2389,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2390,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2390,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2390,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2391,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2391,1
    - Dst: add
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2393,1
    - Dst: fillMSGHdr
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2397,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2397,1
    - Dst: string::data
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2397,1
    - Dst: string::length
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2397,1
    - Dst: const_cast<ComboAddress*>
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2397,1
    - Dst: count
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2400,1
    - Dst: addCMsgSrcAddr
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2401,1
    - Dst: sendOnNBSocket
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2403,1
    - Dst: add
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2404,1
    - Dst: RecEventTrace::EventScope::close
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2405,1
    - Dst: protobufLogResponse
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2407,1
    - Dst: enabled
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2410,1
    - Dst: SyncRes::eventTraceEnabled
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2410,1
    - Dst: info
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2411,1
    - Dst: toString
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2411,1
    - Dst: error
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2414,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2414,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2414,1
    - Dst: Utility::gettimeofday
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2417,1
    - Dst: uSec
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2418,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2419,1
    - Dst: updateSnap
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2420,1
    - Dst: error
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2427,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2427,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2427,1
    - Dst: ipfilter
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2433,1
    - Dst: info
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2436,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2436,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2436,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2438,1
    - Dst: static_cast<unsigned>
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2443,1
    - Dst: isAllowNotifyForZone
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2444,1
    - Dst: info
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2446,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2446,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2446,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2449,1
    - Dst: info
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2454,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2454,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2454,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2454,1
    - Dst: ZoneXFR::notifyZoneTracker
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2456,1
    - Dst: requestWipeCaches
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2458,1
    - Dst: numProcesses
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2468,1
    - Dst: info
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2470,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2470,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2470,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2472,1
    - Dst: std::make_unique<DNSComboWriter>
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2476,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2476,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2476,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2476,1
    - Dst: auto::setSocket
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2478,1
    - Dst: auto::setRemote
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2481,1
    - Dst: auto::setSource
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2482,1
    - Dst: auto::setLocal
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2483,1
    - Dst: auto::setDestination
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2484,1
    - Dst: auto::setMappedSource
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2485,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2498,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2499,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2500,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2502,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2503,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2505,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2507,1
    - Dst: RecEventTrace::EventScope::close
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2509,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2510,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2511,1
    - Dst: makeThread
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2513,1
    - Dst: auto::release
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2513,1
    CyclomaticComplexity: 57
    EdgeCount: 57
    ICount: 167
    argCount: 11
    argNames:
    - ' question'
    - ' fromaddr'
    - ' destaddr'
    - source
    - destination
    - ' mappedSource'
    - tval
    - fileDesc
    - ' proxyProtocolValues'
    - ' eventTrace'
    - ' otTrace'
    argTypes:
    - std::string
    - ComboAddress
    - ComboAddress
    - ComboAddress
    - ComboAddress
    - ComboAddress
    - struct timeval
    - int
    - std::vector<ProxyProtocolValue>
    - RecEventTrace
    - pdns::trace::InitialSpanInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2516
      start: 2233
    functionDepth: 5
    functionLinenumber: 2233
    functionLinenumberEnd: 2516
    functionName: doProcessUDPQuestion
    functionSourceFile: /src/pdns/pdns/recursordist/pdns_recursor.cc
    functionUses: 0
    functionsReached:
    - reinterpret_cast<char*>
    - add
    - log
    - toString
    - gettag_ffi
    - dnsheader_aligned::get
    - setParent
    - getUniqueID
    - ntohs
    - SyncRes::eventTraceEnabledOnly
    - protobufLogResponse
    - auto::setSocket
    - checkForCacheHit
    - ZoneXFR::notifyZoneTracker
    - gettimeofday
    - error
    - auto::setLocal
    - auto::release
    - getQNameAndSubnet
    - fillMSGHdr
    - string::data
    - const_cast<ComboAddress*>
    - static_cast<double>
    - auto::setSource
    - checkOutgoingProtobufExport
    - Logging::Loggable
    - matchOTConditions
    - hasGettagFunc
    - QType
    - size
    - getLocal
    - match
    - updateSnap
    - RecEventTrace::EventScope::close
    - at
    - makeThread
    - checkProtobufExport
    - pdns::max
    - requestWipeCaches
    - isWildcardExpandedOntoItself
    - Utility::gettimeofday
    - gettag
    - ipfilter
    - SyncRes::eventTraceEnabled
    - auto::setRemote
    - EDNSSubnetOpts::getSource
    - static_cast<unsigned>
    - auto::setMappedSource
    - pdns::trace::extractOTraceIDs
    - string::length
    - enabled
    - sendOnNBSocket
    - auto::setDestination
    - protobufLogQuery
    - std::move
    - count
    - what
    - std::make_unique<DNSComboWriter>
    - numProcesses
    - info
    - setEnabled
    - isAllowNotifyForZone
    - data
    - DNSName::DNSName
    - uSec
    - std::unordered_set::empty
    - checkFrameStreamExport
    - hasGettagFFIFunc
    - addCMsgSrcAddr
    linkageType: ''
    returnType: string
    signature: string * doProcessUDPQuestion(const std::string& question, const ComboAddress&
      fromaddr, const ComboAddress& destaddr, ComboAddress source, ComboAddress destination,
      const ComboAddress& mappedSource, struct timeval tval, int fileDesc, std::vector<ProxyProtocolValue>&
      proxyProtocolValues, RecEventTrace& eventTrace, pdns::trace::InitialSpanInfo&
      otTrace)
  - BBCount: 40
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2520,1
    - Dst: RecEventTrace::RecEventTrace
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2531,1
    - Dst: std::vector::clear
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2536,1
    - Dst: std::string::resize
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2537,1
    - Dst: fillMSGHdr
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2539,1
    - Dst: std::string::data
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2539,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2539,1
    - Dst: recvmsg
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2541,1
    - Dst: RecEventTrace::clear
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2542,1
    - Dst: RecEventTrace::setEnabled
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2543,1
    - Dst: pdns::trace::timestamp
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2547,1
    - Dst: RecEventTrace::add
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2548,1
    - Dst: SyncRes::eventTraceEnabled
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2549,1
    - Dst: pdns::trace::InitialSpanInfo::clear
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2550,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2556,1
    - Dst: info
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2558,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2558,1
    - Dst: std::string::resize
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2563,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2563,1
    - Dst: ComboAddress::reset
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2566,1
    - Dst: rplookup
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2567,1
    - Dst: HarvestDestinationAddress
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2568,1
    - Dst: ComboAddress::getSocklen
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2580,1
    - Dst: getsockname
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2581,1
    - Dst: reinterpret_cast<sockaddr*>
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2581,1
    - Dst: expectProxyProtocol
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2584,1
    - Dst: parseProxyHeader
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2586,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2588,1
    - Dst: info
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2590,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2590,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2591,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2591,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2595,1
    - Dst: info
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2597,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2598,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2598,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2600,1
    - Dst: std::string::erase
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2604,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2608,1
    - Dst: info
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2610,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2610,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2615,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2616,1
    - Dst: info
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2618,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2618,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2618,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2619,1
    - Dst: lookup
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2629,1
    - Dst: push_back
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2635,1
    - Dst: match
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2638,1
    - Dst: info
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2640,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2640,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2643,1
    - Dst: BOOST_STATIC_ASSERT
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2647,1
    - Dst: info
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2650,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2650,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2653,1
    - Dst: std::string::data
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2658,1
    - Dst: dnsheader_aligned::get
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2659,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2662,1
    - Dst: info
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2664,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2664,1
    - Dst: static_cast<unsigned>
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2667,1
    - Dst: static_cast<unsigned>
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2667,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2668,1
    - Dst: info
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2670,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2670,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2670,1
    - Dst: Opcode::to_s
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2670,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2674,1
    - Dst: info
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2676,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2676,1
    - Dst: static_cast<unsigned>
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2680,1
    - Dst: match
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2681,1
    - Dst: info
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2683,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2684,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2687,1
    - Dst: HarvestTimestamp
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2693,1
    - Dst: RecEventTrace::enabled
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2698,1
    - Dst: matchOTConditions
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2698,1
    - Dst: SyncRes::eventTraceEnabledOnly
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2698,1
    - Dst: RecEventTrace::setEnabled
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2699,1
    - Dst: RecEventTrace::add
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2701,1
    - Dst: weDistributeQueries
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2702,1
    - Dst: distributeAsyncFunction
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2704,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2704,1
    - Dst: doProcessUDPQuestion
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2705,1
    - Dst: doProcessUDPQuestion
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2709,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2714,1
    - Dst: error
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2716,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2716,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2716,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2716,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2720,1
    - Dst: error
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2722,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2722,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2722,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2722,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2728,1
    - Dst: updateSnap
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2734,1
    CyclomaticComplexity: 49
    EdgeCount: 49
    ICount: 157
    argCount: 1
    argNames:
    - fileDesc
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2735
      start: 2518
    functionDepth: 6
    functionLinenumber: 2518
    functionLinenumberEnd: 2735
    functionName: handleNewUDPQuestion
    functionSourceFile: /src/pdns/pdns/recursordist/pdns_recursor.cc
    functionUses: 0
    functionsReached:
    - BOOST_STATIC_ASSERT
    - HarvestTimestamp
    - lookup
    - dnsheader_aligned::get
    - RecEventTrace::add
    - SyncRes::eventTraceEnabledOnly
    - pdns::trace::InitialSpanInfo::clear
    - error
    - std::string::size
    - ComboAddress::getSocklen
    - reinterpret_cast<sockaddr*>
    - fillMSGHdr
    - static_cast<size_t>
    - std::string::erase
    - Logging::Loggable
    - matchOTConditions
    - getsockname
    - Opcode::to_s
    - match
    - RecEventTrace::clear
    - updateSnap
    - rplookup
    - RecEventTrace::setEnabled
    - empty
    - RecEventTrace::enabled
    - at
    - HarvestDestinationAddress
    - expectProxyProtocol
    - push_back
    - std::string::data
    - std::string::resize
    - SyncRes::eventTraceEnabled
    - parseProxyHeader
    - static_cast<unsigned>
    - std::vector::clear
    - weDistributeQueries
    - distributeAsyncFunction
    - std::move
    - recvmsg
    - doProcessUDPQuestion
    - what
    - info
    - ComboAddress::reset
    - RecEventTrace::RecEventTrace
    - pdns::trace::timestamp
    linkageType: ''
    returnType: void
    signature: void handleNewUDPQuestion(int fileDesc, FDMultiplexer::funcparam_t&
      /* var */)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: stringtok
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2743,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2743,1
    - Dst: vector::empty
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2745,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2746,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2749,1
    - Dst: FDWrapper
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2755,1
    - Dst: socket
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2755,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2757,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2757,1
    - Dst: setSocketTimestamps
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2760,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2761,1
    - Dst: IsAnyAddress
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2763,1
    - Dst: setsockopt
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2765,1
    - Dst: insert
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2766,1
    - Dst: setsockopt
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2771,1
    - Dst: insert
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2772,1
    - Dst: setsockopt
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2776,1
    - Dst: Logr::log_t::error
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2778,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2781,1
    - Dst: Utility::setBindAny
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2782,1
    - Dst: setCloseOnExec
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2785,1
    - Dst: setSocketReceiveBuffer
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2788,1
    - Dst: Logr::log_t::error
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2791,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2791,1
    - Dst: SSetsockopt
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2797,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2800,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2800,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2800,1
    - Dst: SSetsockopt
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2804,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2807,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2807,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2807,1
    - Dst: setSocketIgnorePMTU
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2813,1
    - Dst: Logr::log_t::error
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2816,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2816,1
    - Dst: ComboAddress::getSocklen
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2819,1
    - Dst: Socket::bind
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2820,1
    - Dst: reinterpret_cast<struct sockaddr*>
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2820,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2823,1
    - Dst: ComboAddress::toStringWithPort
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2823,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2823,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2825,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2825,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2825,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2825,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2825,1
    - Dst: setNonBlocking
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2829,1
    - Dst: emplace_back
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2831,1
    - Dst: vector::emplace_back
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2833,1
    - Dst: ComboAddress::toStringWithPort
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2833,1
    - Dst: auto::release
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2834,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2837,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2837,1
    - Dst: Logging::IterLoggable
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2837,1
    - Dst: vector::cbegin
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2837,1
    - Dst: vector::cend
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2837,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2837,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2837,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2839,1
    CyclomaticComplexity: 27
    EdgeCount: 27
    ICount: 69
    argCount: 4
    argNames:
    - ' deferredAdds'
    - log
    - doLog
    - instances
    argTypes:
    - deferredAdd_t
    - Logr::log_t
    - bool
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2840
      start: 2738
    functionDepth: 2
    functionLinenumber: 2738
    functionLinenumberEnd: 2840
    functionName: makeUDPServerSockets
    functionSourceFile: /src/pdns/pdns/recursordist/pdns_recursor.cc
    functionUses: 1
    functionsReached:
    - PDNSException
    - stringerror
    - setSocketReceiveBuffer
    - vector::cend
    - insert
    - emplace_back
    - vector::cbegin
    - std::string
    - IsAnyAddress
    - ComboAddress::getSocklen
    - auto::release
    - reinterpret_cast<struct sockaddr*>
    - stringtok
    - Logr::log_t::info
    - Logging::Loggable
    - setNonBlocking
    - setSocketIgnorePMTU
    - Logr::log_t::error
    - setsockopt
    - Utility::setBindAny
    - Logging::IterLoggable
    - vector::size
    - vector::empty
    - setCloseOnExec
    - FDWrapper
    - arg
    - ComboAddress::toStringWithPort
    - socket
    - what
    - setSocketTimestamps
    - SSetsockopt
    - vector::emplace_back
    - Socket::bind
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int makeUDPServerSockets(deferredAdd_t& deferredAdds, Logr::log_t
      log, bool doLog, unsigned int instances)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Logging::Logger::info
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2844,1
    - Dst: isWorker
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2845,1
    - Dst: withName
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2846,1
    - Dst: _exit
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2847,1
    - Dst: getPipes
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2850,1
    - Dst: write
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2852,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2854,1
    - Dst: unixDie
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2856,1
    - Dst: unixDie
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2865,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2865,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 2
    argNames:
    - target
    - tmsg
    argTypes:
    - unsigned int
    - ThreadMSG*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2869
      start: 2842
    functionDepth: 1
    functionLinenumber: 2842
    functionLinenumberEnd: 2869
    functionName: trySendingQueryToWorker
    functionSourceFile: /src/pdns/pdns/recursordist/pdns_recursor.cc
    functionUses: 0
    functionsReached:
    - static_cast<size_t>
    - _exit
    - std::to_string
    - withName
    - getPipes
    - unixDie
    - Logging::Logger::info
    - write
    - isWorker
    linkageType: ''
    returnType: bool
    signature: bool trySendingQueryToWorker(unsigned int target, ThreadMSG* tmsg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Logging::Logger::info
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2873,1
    - Dst: numHandlers
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2873,1
    - Dst: numDistributors
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2873,1
    - Dst: auto*::numProcesses
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2875,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - workerIdx
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2878
      start: 2871
    functionDepth: 1
    functionLinenumber: 2871
    functionLinenumberEnd: 2878
    functionName: getWorkerLoad
    functionSourceFile: /src/pdns/pdns/recursordist/pdns_recursor.cc
    functionUses: 0
    functionsReached:
    - numHandlers
    - numDistributors
    - Logging::Logger::info
    - auto*::numProcesses
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int getWorkerLoad(size_t workerIdx)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2882,1
    - Dst: numUDPWorkers
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2882,1
    - Dst: numHandlers
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2884,1
    - Dst: numDistributors
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2884,1
    - Dst: numUDPWorkers
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2884,1
    - Dst: numUDPWorkers
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2890,1
    - Dst: getWorkerLoad
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2891,1
    - Dst: numUDPWorkers
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2895,1
    - Dst: numUDPWorkers
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2897,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2900,1
    - Dst: numUDPWorkers
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2902,1
    - Dst: numHandlers
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2906,1
    - Dst: numDistributors
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2906,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 1
    argNames:
    - hash
    argTypes:
    - unsigned int
    assertStmts:
    - condition: (RecThreadInfo::numUDPWorkers() != 0)
      pos:
        line_end: 2881
        line_start: 2881
        source_file: /src/pdns/pdns/recursordist/pdns_recursor.cc
    constantsTouched: []
    func_position:
      end: 2907
      start: 2880
    functionDepth: 2
    functionLinenumber: 2880
    functionLinenumberEnd: 2907
    functionName: selectWorker
    functionSourceFile: /src/pdns/pdns/recursordist/pdns_recursor.cc
    functionUses: 0
    functionsReached:
    - getWorkerLoad
    - at
    - numDistributors
    - assert
    - numHandlers
    - numUDPWorkers
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int selectWorker(unsigned int hash)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: isWildcardExpandedOntoItself
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2912,1
    - Dst: withName
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2913,1
    - Dst: _exit
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2914,1
    - Dst: hashQuestion
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2918,1
    - Dst: reinterpret_cast<const uint8_t*>
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2918,1
    - Dst: data
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2918,1
    - Dst: length
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2918,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2921,1
    - Dst: MOADNSException
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2922,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2922,1
    - Dst: length
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2922,1
    - Dst: selectWorker
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2924,1
    - Dst: ThreadMSG::ThreadMSG
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2926,1
    - Dst: __tsan_release
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2929,1
    - Dst: trySendingQueryToWorker
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2931,1
    - Dst: numHandlers
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2936,1
    - Dst: numDistributors
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2936,1
    - Dst: dns_random
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2936,1
    - Dst: numUDPWorkers
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2936,1
    - Dst: trySendingQueryToWorker
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2939,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2940,1
    - Dst: __tsan_acquire
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2941,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 22
    argCount: 2
    argNames:
    - ' packet'
    - ' func'
    argTypes:
    - string
    - pipefunc_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2946
      start: 2910
    functionDepth: 3
    functionLinenumber: 2910
    functionLinenumberEnd: 2946
    functionName: distributeAsyncFunction
    functionSourceFile: /src/pdns/pdns/recursordist/pdns_recursor.cc
    functionUses: 1
    functionsReached:
    - reinterpret_cast<const uint8_t*>
    - std::to_string
    - __tsan_release
    - withName
    - numDistributors
    - numUDPWorkers
    - at
    - hashQuestion
    - _exit
    - isWildcardExpandedOntoItself
    - numHandlers
    - selectWorker
    - length
    - __tsan_acquire
    - dns_random
    - ThreadMSG::ThreadMSG
    - data
    - MOADNSException
    - trySendingQueryToWorker
    linkageType: ''
    returnType: void
    signature: void distributeAsyncFunction(const string& packet, const pipefunc_t&
      func)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: key::authReqChain::empty
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2954,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2958,1
    - Dst: key::authReqChain::size
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2959,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2959,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2961,1
    - Dst: std::make_shared<PacketID>
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2965,1
    - Dst: sendEvent
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2968,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2969,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 3
    argNames:
    - ' iter'
    - ' resend'
    - ' content'
    argTypes:
    - MT_t::waiters_t::iterator
    - std::shared_ptr<PacketID>
    - PacketBuffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2971
      start: 2949
    functionDepth: 0
    functionLinenumber: 2949
    functionLinenumberEnd: 2971
    functionName: doResends
    functionSourceFile: /src/pdns/pdns/recursordist/pdns_recursor.cc
    functionUses: 0
    functionsReached:
    - key::authReqChain::empty
    - std::make_shared<PacketID>
    - size
    - key::authReqChain::size
    - at
    - sendEvent
    linkageType: ''
    returnType: void
    signature: void doResends(MT_t::waiters_t::iterator& iter, const std::shared_ptr<PacketID>&
      resend, const PacketBuffer& content)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<PacketID>
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2975,1
    - Dst: dns_random_uint16
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2976,1
    - Dst: dns_random_uint16
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2977,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2978,1
    - Dst: auto::remote::setPort
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2979,1
    - Dst: dns_random_uint16
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2979,1
    - Dst: assert
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2981,1
    - Dst: waitEvent
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2981,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - jitterMsec
    argTypes:
    - unsigned int
    assertStmts:
    - condition: (g_multiTasker->waitEvent(neverHappens, nullptr, jitterMsec) != -1)
      pos:
        line_end: 2980
        line_start: 2980
        source_file: /src/pdns/pdns/recursordist/pdns_recursor.cc
    constantsTouched: []
    func_position:
      end: 2982
      start: 2973
    functionDepth: 0
    functionLinenumber: 2973
    functionLinenumberEnd: 2982
    functionName: mthreadSleep
    functionSourceFile: /src/pdns/pdns/recursordist/pdns_recursor.cc
    functionUses: 0
    functionsReached:
    - std::make_shared<PacketID>
    - dns_random_uint16
    - auto::remote::setPort
    - assert
    - waitEvent
    - ComboAddress
    linkageType: ''
    returnType: void
    signature: void mthreadSleep(unsigned int jitterMsec)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: slowParseEDNSOptions
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2990,1
    - Dst: EDNSOptionViewMap::find
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2992,1
    - Dst: EDNSOptionViewMap::end
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2993,1
    - Dst: EDNSSubnetOpts::getFromString
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2997,1
    - Dst: EDNSSubnetOpts::getSource
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:2998,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 13
    argCount: 2
    argNames:
    - ' packet'
    - ' subnet'
    argTypes:
    - PacketBuffer
    - Netmask
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3008
      start: 2984
    functionDepth: 0
    functionLinenumber: 2984
    functionLinenumberEnd: 3008
    functionName: checkIncomingECSSource
    functionSourceFile: /src/pdns/pdns/recursordist/pdns_recursor.cc
    functionUses: 1
    functionsReached:
    - EDNSSubnetOpts::getFromString
    - EDNSSubnetOpts::getSource
    - EDNSOptionViewMap::end
    - EDNSOptionViewMap::find
    - slowParseEDNSOptions
    linkageType: ''
    returnType: bool
    signature: bool checkIncomingECSSource(const PacketBuffer& packet, const Netmask&
      subnet)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: boost::any_cast<std::shared_ptr<PacketID>>
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:3012,1
    - Dst: PacketBuffer::resize
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:3014,1
    - Dst: recvfrom
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:3018,1
    - Dst: PacketBuffer::at
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:3018,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:3018,1
    - Dst: reinterpret_cast<sockaddr*>
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:3018,1
    - Dst: returnSocket
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:3024,1
    - Dst: getWaiters
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:3027,1
    - Dst: getWaiters
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:3028,1
    - Dst: doResends
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:3029,1
    - Dst: sendEvent
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:3031,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:3038,1
    - Dst: info
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:3040,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:3040,1
    - Dst: PacketBuffer::resize
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:3046,1
    - Dst: memcpy
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:3048,1
    - Dst: PacketBuffer::at
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:3048,1
    - Dst: std::make_shared<PacketID>
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:3050,1
    - Dst: info
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:3058,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:3058,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:3060,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:3066,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:3066,1
    - Dst: PacketBuffer::data
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:3066,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:3066,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:3066,1
    - Dst: auto::domain::clear
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:3071,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:3077,1
    - Dst: error
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:3078,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:3078,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:3078,1
    - Dst: auto::domain::empty
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:3082,1
    - Dst: getWaiters
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:3083,1
    - Dst: getWaiters
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:3084,1
    - Dst: doResends
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:3085,1
    - Dst: auto::domain::empty
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:3091,1
    - Dst: sendEvent
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:3091,1
    - Dst: getWaiters
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:3095,1
    - Dst: auto::domain::empty
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:3104,1
    - Dst: key::domain::empty
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:3104,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:3110,1
    - Dst: info
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:3112,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:3112,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:3113,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:3114,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:3114,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:3115,1
    - Dst: getWaiters
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:3115,1
    - Dst: returnSocket
      Src: /src/pdns/pdns/recursordist/pdns_recursor.cc:3120,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 67
    argCount: 2
    argNames:
    - fileDesc
    - ' var'
    argTypes:
    - int
    - FDMultiplexer::funcparam_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3122
      start: 3010
    functionDepth: 1
    functionLinenumber: 3010
    functionLinenumberEnd: 3122
    functionName: handleUDPServerResponse
    functionSourceFile: /src/pdns/pdns/recursordist/pdns_recursor.cc
    functionUses: 0
    functionsReached:
    - PacketBuffer::at
    - PacketBuffer::size
    - error
    - reinterpret_cast<sockaddr*>
    - static_cast<int>
    - sendEvent
    - Logging::Loggable
    - QType
    - recvfrom
    - auto::domain::clear
    - at
    - getWaiters
    - DNSName
    - reinterpret_cast<const char*>
    - returnSocket
    - memcpy
    - PacketBuffer::data
    - std::make_shared<PacketID>
    - auto::domain::empty
    - what
    - doResends
    - info
    - PacketBuffer::resize
    - key::domain::empty
    - boost::any_cast<std::shared_ptr<PacketID>>
    linkageType: ''
    returnType: void
    signature: void handleUDPServerResponse(int fileDesc, FDMultiplexer::funcparam_t&
      var)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: xfr16BitInt
      Src: /src/pdns/pdns/recursordist/dnswriter.hh:94,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - val
    argTypes:
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 92
    functionDepth: 0
    functionLinenumber: 92
    functionLinenumberEnd: 95
    functionName: GenericDNSPacketWriter::xfrType
    functionSourceFile: /src/pdns/pdns/recursordist/dnswriter.hh
    functionUses: 1
    functionsReached:
    - xfr16BitInt
    linkageType: ''
    returnType: void
    signature: void xfrType(uint16_t val)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: xfr32BitInt
      Src: /src/pdns/pdns/recursordist/dnswriter.hh:98,1
    - Dst: htonl
      Src: /src/pdns/pdns/recursordist/dnswriter.hh:98,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' val'
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 96
    functionDepth: 0
    functionLinenumber: 96
    functionLinenumberEnd: 99
    functionName: GenericDNSPacketWriter::xfrIP
    functionSourceFile: /src/pdns/pdns/recursordist/dnswriter.hh
    functionUses: 4
    functionsReached:
    - xfr32BitInt
    - htonl
    linkageType: ''
    returnType: void
    signature: void xfrIP(const uint32_t& val)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: xfrBlob
      Src: /src/pdns/pdns/recursordist/dnswriter.hh:102,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' val'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 100
    functionDepth: 0
    functionLinenumber: 100
    functionLinenumberEnd: 103
    functionName: GenericDNSPacketWriter::xfrIP6
    functionSourceFile: /src/pdns/pdns/recursordist/dnswriter.hh
    functionUses: 0
    functionsReached:
    - xfrBlob
    linkageType: ''
    returnType: void
    signature: void xfrIP6(const std::string& val)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: GenericDNSPacketWriter::xfrIP
      Src: /src/pdns/pdns/recursordist/dnswriter.hh:107,1
    - Dst: string::assign
      Src: /src/pdns/pdns/recursordist/dnswriter.hh:110,1
    - Dst: xfrBlob
      Src: /src/pdns/pdns/recursordist/dnswriter.hh:111,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/recursordist/dnswriter.hh:113,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - version
    - val
    argTypes:
    - uint8_t
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 105
    functionDepth: 1
    functionLinenumber: 105
    functionLinenumberEnd: 114
    functionName: GenericDNSPacketWriter::xfrCAWithoutPort
    functionSourceFile: /src/pdns/pdns/recursordist/dnswriter.hh
    functionUses: 14
    functionsReached:
    - string::assign
    - xfrBlob
    - runtime_error
    - GenericDNSPacketWriter::xfrIP
    linkageType: ''
    returnType: void
    signature: void xfrCAWithoutPort(uint8_t version, const ComboAddress &val)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: xfr16BitInt
      Src: /src/pdns/pdns/recursordist/dnswriter.hh:120,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - val
    argTypes:
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 116
    functionDepth: 0
    functionLinenumber: 116
    functionLinenumberEnd: 121
    functionName: GenericDNSPacketWriter::xfrCAPort
    functionSourceFile: /src/pdns/pdns/recursordist/dnswriter.hh
    functionUses: 0
    functionsReached:
    - xfr16BitInt
    linkageType: ''
    returnType: void
    signature: void xfrCAPort(const ComboAddress &val)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: xfr32BitInt
      Src: /src/pdns/pdns/recursordist/dnswriter.hh:125,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' val'
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 123
    functionDepth: 0
    functionLinenumber: 123
    functionLinenumberEnd: 126
    functionName: GenericDNSPacketWriter::xfrTime
    functionSourceFile: /src/pdns/pdns/recursordist/dnswriter.hh
    functionUses: 1
    functionsReached:
    - xfr32BitInt
    linkageType: ''
    returnType: void
    signature: void xfrTime(const uint32_t& val)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - val
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 146
      start: 143
    functionDepth: 0
    functionLinenumber: 143
    functionLinenumberEnd: 146
    functionName: GenericDNSPacketWriter::setCanonic
    functionSourceFile: /src/pdns/pdns/recursordist/dnswriter.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setCanonic(bool val)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - val
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 151
      start: 148
    functionDepth: 0
    functionLinenumber: 148
    functionLinenumberEnd: 151
    functionName: GenericDNSPacketWriter::setLowercase
    functionSourceFile: /src/pdns/pdns/recursordist/dnswriter.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setLowercase(bool val)
  - 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: '& getContent()'
    functionSourceFile: /src/pdns/pdns/recursordist/dnswriter.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Container
    signature: Container & getContent()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 156
      start: 156
    functionDepth: 0
    functionLinenumber: 156
    functionLinenumberEnd: 156
    functionName: GenericDNSPacketWriter::eof
    functionSourceFile: /src/pdns/pdns/recursordist/dnswriter.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool eof() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 160
      start: 158
    functionDepth: 0
    functionLinenumber: 158
    functionLinenumberEnd: 160
    functionName: GenericDNSPacketWriter::getRemaining
    functionSourceFile: /src/pdns/pdns/recursordist/dnswriter.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string getRemaining() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 168
      start: 166
    functionDepth: 0
    functionLinenumber: 166
    functionLinenumberEnd: 168
    functionName: GenericDNSPacketWriter::consumeRemaining
    functionSourceFile: /src/pdns/pdns/recursordist/dnswriter.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void consumeRemaining() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: snmp_set_var_typed_value
      Src: /src/pdns/pdns/recursordist/snmp-agent.cc:44,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - request
    - value
    argTypes:
    - netsnmp_request_info*
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 38
    functionDepth: 0
    functionLinenumber: 38
    functionLinenumberEnd: 49
    functionName: SNMPAgent::setCounter64Value
    functionSourceFile: /src/pdns/pdns/recursordist/snmp-agent.cc
    functionUses: 5
    functionsReached:
    - snmp_set_var_typed_value
    linkageType: ''
    returnType: int
    signature: "int SNMPAgent::setCounter64Value(netsnmp_request_info* request,\n
      \                                uint64_t value)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: snmp_varlist_add_variable
      Src: /src/pdns/pdns/recursordist/snmp-agent.cc:53,1
    - Dst: data
      Src: /src/pdns/pdns/recursordist/snmp-agent.cc:54,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/snmp-agent.cc:55,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - varList
    - value
    - len
    argTypes:
    - netsnmp_variable_list**
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 51
    functionDepth: 0
    functionLinenumber: 51
    functionLinenumberEnd: 59
    functionName: SNMPAgent::addSNMPTrapOID
    functionSourceFile: /src/pdns/pdns/recursordist/snmp-agent.cc
    functionUses: 0
    functionsReached:
    - snmp_varlist_add_variable
    - size
    - data
    linkageType: ''
    returnType: void
    signature: void SNMPAgent::addSNMPTrapOID(netsnmp_variable_list** varList, const
      void* value, size_t len)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::unique_ptr<netsnmp_variable_list, void(*)(netsnmp_variable_list*)>
      Src: /src/pdns/pdns/recursordist/snmp-agent.cc:65,1
    - Dst: send
      Src: /src/pdns/pdns/recursordist/snmp-agent.cc:66,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/snmp-agent.cc:66,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - ' sender'
    - varList
    argTypes:
    - pdns::channel::Sender<netsnmp_variable_list, void(*)(netsnmp_variable_list*)>
    - netsnmp_variable_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 61
    functionDepth: 0
    functionLinenumber: 61
    functionLinenumberEnd: 71
    functionName: SNMPAgent::sendTrap
    functionSourceFile: /src/pdns/pdns/recursordist/snmp-agent.cc
    functionUses: 0
    functionsReached:
    - std::unique_ptr<netsnmp_variable_list, void(*)(netsnmp_variable_list*)>
    - std::move
    - send
    linkageType: ''
    returnType: bool
    signature: "bool SNMPAgent::sendTrap(pdns::channel::Sender<netsnmp_variable_list,
      void(*)(netsnmp_variable_list*)>& sender,\n                         netsnmp_variable_list*
      varList)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: receive
      Src: /src/pdns/pdns/recursordist/snmp-agent.cc:77,1
    - Dst: send_v2trap
      Src: /src/pdns/pdns/recursordist/snmp-agent.cc:81,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/snmp-agent.cc:81,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 73
    functionDepth: 0
    functionLinenumber: 73
    functionLinenumberEnd: 86
    functionName: SNMPAgent::handleTrapsEvent
    functionSourceFile: /src/pdns/pdns/recursordist/snmp-agent.cc
    functionUses: 2
    functionsReached:
    - receive
    - send_v2trap
    - auto::get
    linkageType: ''
    returnType: void
    signature: void SNMPAgent::handleTrapsEvent()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: netsnmp_large_fd_set_init
      Src: /src/pdns/pdns/recursordist/snmp-agent.cc:91,1
    - Dst: NETSNMP_LARGE_FD_ZERO
      Src: /src/pdns/pdns/recursordist/snmp-agent.cc:92,1
    - Dst: NETSNMP_LARGE_FD_SET
      Src: /src/pdns/pdns/recursordist/snmp-agent.cc:93,1
    - Dst: snmp_read2
      Src: /src/pdns/pdns/recursordist/snmp-agent.cc:94,1
    - Dst: netsnmp_large_fd_set_cleanup
      Src: /src/pdns/pdns/recursordist/snmp-agent.cc:95,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - fd
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 88
    functionDepth: 0
    functionLinenumber: 88
    functionLinenumberEnd: 96
    functionName: SNMPAgent::handleSNMPQueryEvent
    functionSourceFile: /src/pdns/pdns/recursordist/snmp-agent.cc
    functionUses: 2
    functionsReached:
    - snmp_read2
    - NETSNMP_LARGE_FD_ZERO
    - netsnmp_large_fd_set_cleanup
    - NETSNMP_LARGE_FD_SET
    - netsnmp_large_fd_set_init
    linkageType: ''
    returnType: void
    signature: void SNMPAgent::handleSNMPQueryEvent(int fd)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: boost::any_cast<SNMPAgent*>
      Src: /src/pdns/pdns/recursordist/snmp-agent.cc:100,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/snmp-agent.cc:102,1
    - Dst: SNMPAgent::handleTrapsEvent
      Src: /src/pdns/pdns/recursordist/snmp-agent.cc:104,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 4
    argCount: 1
    argNames:
    - ' var'
    argTypes:
    - FDMultiplexer::funcparam_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 98
    functionDepth: 0
    functionLinenumber: 98
    functionLinenumberEnd: 105
    functionName: SNMPAgent::handleTrapsCB
    functionSourceFile: /src/pdns/pdns/recursordist/snmp-agent.cc
    functionUses: 0
    functionsReached:
    - SNMPAgent::handleTrapsEvent
    - boost::any_cast<SNMPAgent*>
    - std::runtime_error
    linkageType: ''
    returnType: void
    signature: void SNMPAgent::handleTrapsCB(int /* fd */, FDMultiplexer::funcparam_t&
      var)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: boost::any_cast<SNMPAgent*>
      Src: /src/pdns/pdns/recursordist/snmp-agent.cc:109,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/snmp-agent.cc:111,1
    - Dst: SNMPAgent::handleSNMPQueryEvent
      Src: /src/pdns/pdns/recursordist/snmp-agent.cc:113,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 4
    argCount: 2
    argNames:
    - fd
    - ' var'
    argTypes:
    - int
    - FDMultiplexer::funcparam_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 107
    functionDepth: 0
    functionLinenumber: 107
    functionLinenumberEnd: 114
    functionName: SNMPAgent::handleSNMPQueryCB
    functionSourceFile: /src/pdns/pdns/recursordist/snmp-agent.cc
    functionUses: 0
    functionsReached:
    - SNMPAgent::handleSNMPQueryEvent
    - boost::any_cast<SNMPAgent*>
    - std::runtime_error
    linkageType: ''
    returnType: void
    signature: void SNMPAgent::handleSNMPQueryCB(int fd, FDMultiplexer::funcparam_t&
      var)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: FDMultiplexer::getMultiplexerSilent
      Src: /src/pdns/pdns/recursordist/snmp-agent.cc:121,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/snmp-agent.cc:123,1
    - Dst: setThreadName
      Src: /src/pdns/pdns/recursordist/snmp-agent.cc:131,1
    - Dst: FDMultiplexer*::addReadFD
      Src: /src/pdns/pdns/recursordist/snmp-agent.cc:141,1
    - Dst: getDescriptor
      Src: /src/pdns/pdns/recursordist/snmp-agent.cc:141,1
    - Dst: netsnmp_large_fd_set_init
      Src: /src/pdns/pdns/recursordist/snmp-agent.cc:144,1
    - Dst: NETSNMP_LARGE_FD_ZERO
      Src: /src/pdns/pdns/recursordist/snmp-agent.cc:145,1
    - Dst: snmp_select_info2
      Src: /src/pdns/pdns/recursordist/snmp-agent.cc:149,1
    - Dst: NETSNMP_LARGE_FD_ISSET
      Src: /src/pdns/pdns/recursordist/snmp-agent.cc:152,1
    - Dst: FDMultiplexer*::addReadFD
      Src: /src/pdns/pdns/recursordist/snmp-agent.cc:153,1
    - Dst: FDMultiplexer*::run
      Src: /src/pdns/pdns/recursordist/snmp-agent.cc:158,1
    - Dst: snmp_timeout
      Src: /src/pdns/pdns/recursordist/snmp-agent.cc:162,1
    - Dst: run_alarms
      Src: /src/pdns/pdns/recursordist/snmp-agent.cc:163,1
    - Dst: NETSNMP_LARGE_FD_ISSET
      Src: /src/pdns/pdns/recursordist/snmp-agent.cc:167,1
    - Dst: FDMultiplexer*::removeReadFD
      Src: /src/pdns/pdns/recursordist/snmp-agent.cc:169,1
    - Dst: netsnmp_large_fd_set_cleanup
      Src: /src/pdns/pdns/recursordist/snmp-agent.cc:177,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 31
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 180
      start: 118
    functionDepth: 0
    functionLinenumber: 118
    functionLinenumberEnd: 180
    functionName: SNMPAgent::worker
    functionSourceFile: /src/pdns/pdns/recursordist/snmp-agent.cc
    functionUses: 0
    functionsReached:
    - NETSNMP_LARGE_FD_ISSET
    - std::runtime_error
    - NETSNMP_LARGE_FD_ZERO
    - FDMultiplexer*::removeReadFD
    - netsnmp_large_fd_set_cleanup
    - run_alarms
    - FDMultiplexer*::addReadFD
    - snmp_timeout
    - getDescriptor
    - FDMultiplexer::getMultiplexerSilent
    - setThreadName
    - snmp_select_info2
    - netsnmp_large_fd_set_init
    - FDMultiplexer*::run
    linkageType: ''
    returnType: void
    signature: void SNMPAgent::worker()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: netsnmp_enable_subagent
      Src: /src/pdns/pdns/recursordist/snmp-agent.cc:185,1
    - Dst: snmp_disable_log
      Src: /src/pdns/pdns/recursordist/snmp-agent.cc:186,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/snmp-agent.cc:187,1
    - Dst: netsnmp_ds_set_string
      Src: /src/pdns/pdns/recursordist/snmp-agent.cc:188,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/snmp-agent.cc:190,1
    - Dst: setenv
      Src: /src/pdns/pdns/recursordist/snmp-agent.cc:194,1
    - Dst: init_agent
      Src: /src/pdns/pdns/recursordist/snmp-agent.cc:196,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/snmp-agent.cc:196,1
    - Dst: netsnmp_ds_set_boolean
      Src: /src/pdns/pdns/recursordist/snmp-agent.cc:202,1
    - Dst: init_snmp
      Src: /src/pdns/pdns/recursordist/snmp-agent.cc:206,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/snmp-agent.cc:206,1
    - Dst: pdns::channel::createObjectQueue<netsnmp_variable_list, void(*)(netsnmp_variable_list*)>
      Src: /src/pdns/pdns/recursordist/snmp-agent.cc:208,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/snmp-agent.cc:209,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/snmp-agent.cc:210,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 2
    argNames:
    - ' name'
    - ' daemonSocket'
    argTypes:
    - std::string
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 212
      start: 182
    functionDepth: 0
    functionLinenumber: 182
    functionLinenumberEnd: 212
    functionName: SNMPAgent::SNMPAgent
    functionSourceFile: /src/pdns/pdns/recursordist/snmp-agent.cc
    functionUses: 0
    functionsReached:
    - std::move
    - init_agent
    - netsnmp_ds_set_boolean
    - c_str
    - netsnmp_ds_set_string
    - netsnmp_enable_subagent
    - init_snmp
    - pdns::channel::createObjectQueue<netsnmp_variable_list, void(*)(netsnmp_variable_list*)>
    - setenv
    - empty
    - snmp_disable_log
    linkageType: ''
    returnType: void
    signature: void SNMPAgent::SNMPAgent([[maybe_unused]] const std::string& name,
      [[maybe_unused]] const std::string& daemonSocket)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 48
    functionDepth: 0
    functionLinenumber: 48
    functionLinenumberEnd: 48
    functionName: Socket::Socket
    functionSourceFile: /src/pdns/pdns/recursordist/sstuff.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Socket(const Socket&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 49
    functionDepth: 0
    functionLinenumber: 49
    functionLinenumberEnd: 49
    functionName: '& operator=(const Socket&)'
    functionSourceFile: /src/pdns/pdns/recursordist/sstuff.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Socket
    signature: Socket & operator=(const Socket&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - socketDesc
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 51
    functionDepth: 0
    functionLinenumber: 51
    functionLinenumberEnd: 54
    functionName: Socket::Socket
    functionSourceFile: /src/pdns/pdns/recursordist/sstuff.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Socket(int socketDesc)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: socket
      Src: /src/pdns/pdns/recursordist/sstuff.hh:58,1
    - Dst: NetworkError
      Src: /src/pdns/pdns/recursordist/sstuff.hh:61,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/sstuff.hh:61,1
    - Dst: setCloseOnExec
      Src: /src/pdns/pdns/recursordist/sstuff.hh:63,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - addressFamily
    - socketType
    argTypes:
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 57
    functionDepth: 0
    functionLinenumber: 57
    functionLinenumberEnd: 64
    functionName: Socket::Socket
    functionSourceFile: /src/pdns/pdns/recursordist/sstuff.hh
    functionUses: 0
    functionsReached:
    - socket
    - stringerror
    - setCloseOnExec
    - NetworkError
    linkageType: ''
    returnType: void
    signature: void Socket(int addressFamily, int socketType, ProtocolType protocolType
      = 0)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/sstuff.hh:67,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - Socket
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 66
    functionDepth: 0
    functionLinenumber: 66
    functionLinenumberEnd: 70
    functionName: Socket::Socket
    functionSourceFile: /src/pdns/pdns/recursordist/sstuff.hh
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void Socket(Socket&& rhs) noexcept
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: close
      Src: /src/pdns/pdns/recursordist/sstuff.hh:75,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/sstuff.hh:79,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - Socket
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 72
    functionDepth: 0
    functionLinenumber: 72
    functionLinenumberEnd: 81
    functionName: '& operator=(Socket&& rhs) noexcept'
    functionSourceFile: /src/pdns/pdns/recursordist/sstuff.hh
    functionUses: 0
    functionsReached:
    - std::move
    - close
    linkageType: ''
    returnType: Socket
    signature: Socket & operator=(Socket&& rhs) noexcept
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: closesocket
      Src: /src/pdns/pdns/recursordist/sstuff.hh:87,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 83
    functionDepth: 0
    functionLinenumber: 83
    functionLinenumberEnd: 92
    functionName: ~Socket()
    functionSourceFile: /src/pdns/pdns/recursordist/sstuff.hh
    functionUses: 0
    functionsReached:
    - closesocket
    linkageType: ''
    returnType: void
    signature: void ~Socket()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/pdns/pdns/recursordist/sstuff.hh:99,1
    - Dst: Socket::accept
      Src: /src/pdns/pdns/recursordist/sstuff.hh:100,1
    - Dst: reinterpret_cast<sockaddr*>
      Src: /src/pdns/pdns/recursordist/sstuff.hh:100,1
    - Dst: NetworkError
      Src: /src/pdns/pdns/recursordist/sstuff.hh:106,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/sstuff.hh:106,1
    - Dst: std::make_unique<Socket>
      Src: /src/pdns/pdns/recursordist/sstuff.hh:109,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 95
    functionDepth: 0
    functionLinenumber: 95
    functionLinenumberEnd: 110
    functionName: Socket::accept
    functionSourceFile: /src/pdns/pdns/recursordist/sstuff.hh
    functionUses: 3
    functionsReached:
    - Socket::accept
    - stringerror
    - memset
    - NetworkError
    - std::make_unique<Socket>
    - reinterpret_cast<sockaddr*>
    linkageType: ''
    returnType: std::unique_ptr<Socket>
    signature: std::unique_ptr<Socket> accept() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getpeername
      Src: /src/pdns/pdns/recursordist/sstuff.hh:116,1
    - Dst: reinterpret_cast<struct sockaddr*>
      Src: /src/pdns/pdns/recursordist/sstuff.hh:116,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' remote'
    argTypes:
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 113
    functionDepth: 0
    functionLinenumber: 113
    functionLinenumberEnd: 117
    functionName: Socket::getRemote
    functionSourceFile: /src/pdns/pdns/recursordist/sstuff.hh
    functionUses: 2
    functionsReached:
    - getpeername
    - reinterpret_cast<struct sockaddr*>
    linkageType: ''
    returnType: bool
    signature: bool getRemote(ComboAddress& remote) const
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Socket::getRemote
      Src: /src/pdns/pdns/recursordist/sstuff.hh:123,1
    - Dst: match
      Src: /src/pdns/pdns/recursordist/sstuff.hh:124,1
    - Dst: ComboAddress::isMappedIPv4
      Src: /src/pdns/pdns/recursordist/sstuff.hh:128,1
    - Dst: match
      Src: /src/pdns/pdns/recursordist/sstuff.hh:129,1
    - Dst: ComboAddress::mapToIPv4
      Src: /src/pdns/pdns/recursordist/sstuff.hh:129,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - ' netmaskGroup'
    argTypes:
    - NetmaskGroup
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 134
      start: 120
    functionDepth: 0
    functionLinenumber: 120
    functionLinenumberEnd: 134
    functionName: Socket::acl
    functionSourceFile: /src/pdns/pdns/recursordist/sstuff.hh
    functionUses: 0
    functionsReached:
    - ComboAddress::isMappedIPv4
    - match
    - ComboAddress::mapToIPv4
    - Socket::getRemote
    linkageType: ''
    returnType: bool
    signature: bool acl(const NetmaskGroup& netmaskGroup) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Socket::setNonBlocking
      Src: /src/pdns/pdns/recursordist/sstuff.hh:139,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 137
    functionDepth: 0
    functionLinenumber: 137
    functionLinenumberEnd: 140
    functionName: Socket::setNonBlocking
    functionSourceFile: /src/pdns/pdns/recursordist/sstuff.hh
    functionUses: 22
    functionsReached:
    - Socket::setNonBlocking
    linkageType: ''
    returnType: void
    signature: void setNonBlocking() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Socket::setBlocking
      Src: /src/pdns/pdns/recursordist/sstuff.hh:145,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 146
      start: 143
    functionDepth: 0
    functionLinenumber: 143
    functionLinenumberEnd: 146
    functionName: Socket::setBlocking
    functionSourceFile: /src/pdns/pdns/recursordist/sstuff.hh
    functionUses: 5
    functionsReached:
    - Socket::setBlocking
    linkageType: ''
    returnType: void
    signature: void setBlocking() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Socket::setReuseAddr
      Src: /src/pdns/pdns/recursordist/sstuff.hh:151,1
    - Dst: NetworkError
      Src: /src/pdns/pdns/recursordist/sstuff.hh:154,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 156
      start: 148
    functionDepth: 0
    functionLinenumber: 148
    functionLinenumberEnd: 156
    functionName: Socket::setReuseAddr
    functionSourceFile: /src/pdns/pdns/recursordist/sstuff.hh
    functionUses: 8
    functionsReached:
    - Socket::setReuseAddr
    - NetworkError
    linkageType: ''
    returnType: void
    signature: void setReuseAddr() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: setsockopt
      Src: /src/pdns/pdns/recursordist/sstuff.hh:162,1
    - Dst: NetworkError
      Src: /src/pdns/pdns/recursordist/sstuff.hh:163,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/sstuff.hh:163,1
    - Dst: NetworkError
      Src: /src/pdns/pdns/recursordist/sstuff.hh:166,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 168
      start: 158
    functionDepth: 0
    functionLinenumber: 158
    functionLinenumberEnd: 168
    functionName: Socket::setFastOpenConnect
    functionSourceFile: /src/pdns/pdns/recursordist/sstuff.hh
    functionUses: 1
    functionsReached:
    - stringerror
    - NetworkError
    - setsockopt
    linkageType: ''
    returnType: void
    signature: void setFastOpenConnect()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: setsockopt
      Src: /src/pdns/pdns/recursordist/sstuff.hh:176,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/recursordist/sstuff.hh:176,1
    - Dst: NetworkError
      Src: /src/pdns/pdns/recursordist/sstuff.hh:177,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/sstuff.hh:177,1
    - Dst: Socket::bind
      Src: /src/pdns/pdns/recursordist/sstuff.hh:180,1
    - Dst: reinterpret_cast<const struct sockaddr*>
      Src: /src/pdns/pdns/recursordist/sstuff.hh:180,1
    - Dst: getSocklen
      Src: /src/pdns/pdns/recursordist/sstuff.hh:180,1
    - Dst: NetworkError
      Src: /src/pdns/pdns/recursordist/sstuff.hh:181,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/sstuff.hh:181,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 7
    argCount: 1
    argNames:
    - ' local'
    argTypes:
    - T
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 183
      start: 172
    functionDepth: 0
    functionLinenumber: 172
    functionLinenumberEnd: 183
    functionName: Socket::bind
    functionSourceFile: /src/pdns/pdns/recursordist/sstuff.hh
    functionUses: 35
    functionsReached:
    - reinterpret_cast<char*>
    - stringerror
    - setsockopt
    - reinterpret_cast<const struct sockaddr*>
    - NetworkError
    - Socket::bind
    - getSocklen
    linkageType: ''
    returnType: void
    signature: void bind(const T& local, bool reuseaddr = true) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SConnectWithTimeout
      Src: /src/pdns/pdns/recursordist/sstuff.hh:188,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' address'
    argTypes:
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 189
      start: 186
    functionDepth: 0
    functionLinenumber: 186
    functionLinenumberEnd: 189
    functionName: Socket::connect
    functionSourceFile: /src/pdns/pdns/recursordist/sstuff.hh
    functionUses: 15
    functionsReached:
    - SConnectWithTimeout
    linkageType: ''
    returnType: void
    signature: void connect(const ComboAddress& address, int timeout = 0) const
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/recursordist/sstuff.hh:198,1
    - Dst: resize
      Src: /src/pdns/pdns/recursordist/sstuff.hh:199,1
    - Dst: recvfrom
      Src: /src/pdns/pdns/recursordist/sstuff.hh:202,1
    - Dst: data
      Src: /src/pdns/pdns/recursordist/sstuff.hh:202,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/sstuff.hh:202,1
    - Dst: reinterpret_cast<sockaddr*>
      Src: /src/pdns/pdns/recursordist/sstuff.hh:202,1
    - Dst: NetworkError
      Src: /src/pdns/pdns/recursordist/sstuff.hh:204,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/sstuff.hh:204,1
    - Dst: resize
      Src: /src/pdns/pdns/recursordist/sstuff.hh:206,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/recursordist/sstuff.hh:206,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - ' dgram'
    - ' remote'
    argTypes:
    - string
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 207
      start: 195
    functionDepth: 1
    functionLinenumber: 195
    functionLinenumberEnd: 207
    functionName: Socket::recvFrom
    functionSourceFile: /src/pdns/pdns/recursordist/sstuff.hh
    functionUses: 2
    functionsReached:
    - static_cast<size_t>
    - resize
    - stringerror
    - recvfrom
    - size
    - NetworkError
    - data
    - reinterpret_cast<sockaddr*>
    linkageType: ''
    returnType: void
    signature: void recvFrom(string& dgram, ComboAddress& remote) const
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/recursordist/sstuff.hh:212,1
    - Dst: resize
      Src: /src/pdns/pdns/recursordist/sstuff.hh:213,1
    - Dst: recvfrom
      Src: /src/pdns/pdns/recursordist/sstuff.hh:216,1
    - Dst: data
      Src: /src/pdns/pdns/recursordist/sstuff.hh:216,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/sstuff.hh:216,1
    - Dst: reinterpret_cast<sockaddr*>
      Src: /src/pdns/pdns/recursordist/sstuff.hh:216,1
    - Dst: NetworkError
      Src: /src/pdns/pdns/recursordist/sstuff.hh:219,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/sstuff.hh:219,1
    - Dst: resize
      Src: /src/pdns/pdns/recursordist/sstuff.hh:223,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/recursordist/sstuff.hh:223,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 2
    argNames:
    - ' dgram'
    - ' remote'
    argTypes:
    - PacketBuffer
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 225
      start: 209
    functionDepth: 1
    functionLinenumber: 209
    functionLinenumberEnd: 225
    functionName: Socket::recvFromAsync
    functionSourceFile: /src/pdns/pdns/recursordist/sstuff.hh
    functionUses: 0
    functionsReached:
    - static_cast<size_t>
    - resize
    - stringerror
    - recvfrom
    - size
    - NetworkError
    - data
    - reinterpret_cast<sockaddr*>
    linkageType: ''
    returnType: bool
    signature: bool recvFromAsync(PacketBuffer& dgram, ComboAddress& remote) const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sendto
      Src: /src/pdns/pdns/recursordist/sstuff.hh:231,1
    - Dst: reinterpret_cast<const sockaddr*>
      Src: /src/pdns/pdns/recursordist/sstuff.hh:231,1
    - Dst: getSocklen
      Src: /src/pdns/pdns/recursordist/sstuff.hh:231,1
    - Dst: NetworkError
      Src: /src/pdns/pdns/recursordist/sstuff.hh:232,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/sstuff.hh:232,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 3
    argNames:
    - msg
    - len
    - ' remote'
    argTypes:
    - char*
    - size_t
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 234
      start: 228
    functionDepth: 0
    functionLinenumber: 228
    functionLinenumberEnd: 234
    functionName: Socket::sendTo
    functionSourceFile: /src/pdns/pdns/recursordist/sstuff.hh
    functionUses: 4
    functionsReached:
    - stringerror
    - reinterpret_cast<const sockaddr*>
    - NetworkError
    - sendto
    - getSocklen
    linkageType: ''
    returnType: void
    signature: void sendTo(const char* msg, size_t len, const ComboAddress& remote)
      const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Socket::send
      Src: /src/pdns/pdns/recursordist/sstuff.hh:239,1
    - Dst: data
      Src: /src/pdns/pdns/recursordist/sstuff.hh:239,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/sstuff.hh:239,1
    - Dst: NetworkError
      Src: /src/pdns/pdns/recursordist/sstuff.hh:240,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/sstuff.hh:240,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - ' msg'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 242
      start: 237
    functionDepth: 0
    functionLinenumber: 237
    functionLinenumberEnd: 242
    functionName: Socket::send
    functionSourceFile: /src/pdns/pdns/recursordist/sstuff.hh
    functionUses: 18
    functionsReached:
    - Socket::send
    - stringerror
    - size
    - NetworkError
    - data
    linkageType: ''
    returnType: void
    signature: void send(const std::string& msg) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Socket::sendTo
      Src: /src/pdns/pdns/recursordist/sstuff.hh:249,1
    - Dst: data
      Src: /src/pdns/pdns/recursordist/sstuff.hh:249,1
    - Dst: length
      Src: /src/pdns/pdns/recursordist/sstuff.hh:249,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' dgram'
    - ' remote'
    argTypes:
    - string
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 250
      start: 247
    functionDepth: 0
    functionLinenumber: 247
    functionLinenumberEnd: 250
    functionName: Socket::sendTo
    functionSourceFile: /src/pdns/pdns/recursordist/sstuff.hh
    functionUses: 5
    functionsReached:
    - Socket::sendTo
    - length
    - data
    linkageType: ''
    returnType: void
    signature: void sendTo(const string& dgram, const ComboAddress& remote) const
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/sstuff.hh:255,1
    - Dst: length
      Src: /src/pdns/pdns/recursordist/sstuff.hh:259,1
    - Dst: data
      Src: /src/pdns/pdns/recursordist/sstuff.hh:260,1
    - Dst: Socket::send
      Src: /src/pdns/pdns/recursordist/sstuff.hh:263,1
    - Dst: NetworkError
      Src: /src/pdns/pdns/recursordist/sstuff.hh:265,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/sstuff.hh:265,1
    - Dst: NetworkError
      Src: /src/pdns/pdns/recursordist/sstuff.hh:268,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/recursordist/sstuff.hh:270,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/recursordist/sstuff.hh:271,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 1
    argNames:
    - ' data'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 273
      start: 253
    functionDepth: 0
    functionLinenumber: 253
    functionLinenumberEnd: 273
    functionName: Socket::writen
    functionSourceFile: /src/pdns/pdns/recursordist/sstuff.hh
    functionUses: 4
    functionsReached:
    - length
    - Socket::send
    - static_cast<size_t>
    - stringerror
    - NetworkError
    - data
    - empty
    linkageType: ''
    returnType: void
    signature: void writen(const string& data) const
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Socket::send
      Src: /src/pdns/pdns/recursordist/sstuff.hh:282,1
    - Dst: NetworkError
      Src: /src/pdns/pdns/recursordist/sstuff.hh:284,1
    - Dst: NetworkError
      Src: /src/pdns/pdns/recursordist/sstuff.hh:294,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/sstuff.hh:294,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 2
    argNames:
    - ptr
    - toWrite
    argTypes:
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 295
      start: 280
    functionDepth: 0
    functionLinenumber: 280
    functionLinenumberEnd: 295
    functionName: Socket::tryWrite
    functionSourceFile: /src/pdns/pdns/recursordist/sstuff.hh
    functionUses: 0
    functionsReached:
    - stringerror
    - Socket::send
    - NetworkError
    linkageType: ''
    returnType: size_t
    signature: size_t tryWrite(const char* ptr, size_t toWrite) const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Socket::send
      Src: /src/pdns/pdns/recursordist/sstuff.hh:301,1
    - Dst: NetworkError
      Src: /src/pdns/pdns/recursordist/sstuff.hh:303,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/sstuff.hh:303,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - ptr
    - toWrite
    argTypes:
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 306
      start: 299
    functionDepth: 0
    functionLinenumber: 299
    functionLinenumberEnd: 306
    functionName: Socket::write
    functionSourceFile: /src/pdns/pdns/recursordist/sstuff.hh
    functionUses: 2
    functionsReached:
    - stringerror
    - Socket::send
    - NetworkError
    linkageType: ''
    returnType: size_t
    signature: size_t write(const char* ptr, size_t toWrite) const
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<const char*>
      Src: /src/pdns/pdns/recursordist/sstuff.hh:311,1
    - Dst: TCPIOHandler::write
      Src: /src/pdns/pdns/recursordist/sstuff.hh:314,1
    - Dst: waitForRWData
      Src: /src/pdns/pdns/recursordist/sstuff.hh:317,1
    - Dst: NetworkError
      Src: /src/pdns/pdns/recursordist/sstuff.hh:319,1
    - Dst: NetworkError
      Src: /src/pdns/pdns/recursordist/sstuff.hh:322,1
    - Dst: NetworkError
      Src: /src/pdns/pdns/recursordist/sstuff.hh:326,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/sstuff.hh:326,1
    - Dst: NetworkError
      Src: /src/pdns/pdns/recursordist/sstuff.hh:329,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/recursordist/sstuff.hh:332,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/recursordist/sstuff.hh:333,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 21
    argCount: 3
    argNames:
    - buffer
    - n
    - timeout
    argTypes:
    - void*
    - size_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 335
      start: 308
    functionDepth: 0
    functionLinenumber: 308
    functionLinenumberEnd: 335
    functionName: Socket::writenWithTimeout
    functionSourceFile: /src/pdns/pdns/recursordist/sstuff.hh
    functionUses: 3
    functionsReached:
    - TCPIOHandler::write
    - static_cast<size_t>
    - stringerror
    - static_cast<const char*>
    - NetworkError
    - waitForRWData
    linkageType: ''
    returnType: void
    signature: void writenWithTimeout(const void* buffer, size_t n, int timeout) const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: resize
      Src: /src/pdns/pdns/recursordist/sstuff.hh:340,1
    - Dst: XskSocket::recv
      Src: /src/pdns/pdns/recursordist/sstuff.hh:341,1
    - Dst: data
      Src: /src/pdns/pdns/recursordist/sstuff.hh:341,1
    - Dst: NetworkError
      Src: /src/pdns/pdns/recursordist/sstuff.hh:343,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/sstuff.hh:343,1
    - Dst: assign
      Src: /src/pdns/pdns/recursordist/sstuff.hh:345,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/recursordist/sstuff.hh:345,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - ' data'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 346
      start: 338
    functionDepth: 2
    functionLinenumber: 338
    functionLinenumberEnd: 346
    functionName: Socket::read
    functionSourceFile: /src/pdns/pdns/recursordist/sstuff.hh
    functionUses: 7
    functionsReached:
    - assign
    - static_cast<size_t>
    - XskSocket::recv
    - resize
    - stringerror
    - NetworkError
    - data
    linkageType: ''
    returnType: void
    signature: void read(string& data)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: XskSocket::recv
      Src: /src/pdns/pdns/recursordist/sstuff.hh:351,1
    - Dst: NetworkError
      Src: /src/pdns/pdns/recursordist/sstuff.hh:353,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/sstuff.hh:353,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/recursordist/sstuff.hh:355,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - buffer
    - bytes
    argTypes:
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 356
      start: 349
    functionDepth: 2
    functionLinenumber: 349
    functionLinenumberEnd: 356
    functionName: Socket::read
    functionSourceFile: /src/pdns/pdns/recursordist/sstuff.hh
    functionUses: 7
    functionsReached:
    - stringerror
    - static_cast<size_t>
    - XskSocket::recv
    - NetworkError
    linkageType: ''
    returnType: size_t
    signature: size_t read(char* buffer, size_t bytes) const
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: waitForRWData
      Src: /src/pdns/pdns/recursordist/sstuff.hh:365,1
    - Dst: NetworkError
      Src: /src/pdns/pdns/recursordist/sstuff.hh:368,1
    - Dst: NetworkError
      Src: /src/pdns/pdns/recursordist/sstuff.hh:371,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/sstuff.hh:371,1
    - Dst: Socket::read
      Src: /src/pdns/pdns/recursordist/sstuff.hh:374,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 3
    argNames:
    - buffer
    - n
    - timeout
    argTypes:
    - char*
    - size_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 375
      start: 363
    functionDepth: 0
    functionLinenumber: 363
    functionLinenumberEnd: 375
    functionName: Socket::readWithTimeout
    functionSourceFile: /src/pdns/pdns/recursordist/sstuff.hh
    functionUses: 1
    functionsReached:
    - stringerror
    - waitForRWData
    - Socket::read
    - NetworkError
    linkageType: ''
    returnType: size_t
    signature: size_t readWithTimeout(char* buffer, size_t n, int timeout) const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Socket::listen
      Src: /src/pdns/pdns/recursordist/sstuff.hh:380,1
    - Dst: NetworkError
      Src: /src/pdns/pdns/recursordist/sstuff.hh:381,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/sstuff.hh:381,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 383
      start: 378
    functionDepth: 0
    functionLinenumber: 378
    functionLinenumberEnd: 383
    functionName: Socket::listen
    functionSourceFile: /src/pdns/pdns/recursordist/sstuff.hh
    functionUses: 5
    functionsReached:
    - stringerror
    - NetworkError
    - Socket::listen
    linkageType: ''
    returnType: void
    signature: void listen(int length = 10) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 389
      start: 386
    functionDepth: 0
    functionLinenumber: 386
    functionLinenumberEnd: 389
    functionName: Socket::getHandle
    functionSourceFile: /src/pdns/pdns/recursordist/sstuff.hh
    functionUses: 36
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int getHandle() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 396
      start: 391
    functionDepth: 0
    functionLinenumber: 391
    functionLinenumberEnd: 396
    functionName: Socket::releaseHandle
    functionSourceFile: /src/pdns/pdns/recursordist/sstuff.hh
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int releaseHandle()
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<NSRecordContent>
      Src: /src/pdns/pdns/recursordist/test-common.hh:10,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-common.hh:10,1
    - Dst: std::make_shared<ARecordContent>
      Src: /src/pdns/pdns/recursordist/test-common.hh:13,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-common.hh:13,1
    - Dst: std::make_shared<AAAARecordContent>
      Src: /src/pdns/pdns/recursordist/test-common.hh:16,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-common.hh:16,1
    - Dst: std::make_shared<CNAMERecordContent>
      Src: /src/pdns/pdns/recursordist/test-common.hh:19,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-common.hh:19,1
    - Dst: std::make_shared<OPTRecordContent>
      Src: /src/pdns/pdns/recursordist/test-common.hh:22,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/recursordist/test-common.hh:25,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 2
    argNames:
    - type
    - ' content'
    argTypes:
    - uint16_t
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 29
      start: 5
    functionDepth: 0
    functionLinenumber: 5
    functionLinenumberEnd: 29
    functionName: getRecordContent
    functionSourceFile: /src/pdns/pdns/recursordist/test-common.hh
    functionUses: 1
    functionsReached:
    - std::make_shared<CNAMERecordContent>
    - DNSName
    - std::make_shared<NSRecordContent>
    - std::make_shared<OPTRecordContent>
    - DNSRecordContent::make
    - std::make_shared<ARecordContent>
    - std::make_shared<AAAARecordContent>
    - ComboAddress
    linkageType: ''
    returnType: std::shared_ptr<DNSRecordContent>
    signature: std::shared_ptr<DNSRecordContent> getRecordContent(uint16_t type, const
      std::string& content)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSRecord::DNSRecord
      Src: /src/pdns/pdns/recursordist/test-common.hh:33,1
    - Dst: DNSRecord::setContent
      Src: /src/pdns/pdns/recursordist/test-common.hh:39,1
    - Dst: getRecordContent
      Src: /src/pdns/pdns/recursordist/test-common.hh:39,1
    - Dst: push_back
      Src: /src/pdns/pdns/recursordist/test-common.hh:41,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 4
    argNames:
    - ' records'
    - ' name'
    - type
    - ' content'
    argTypes:
    - std::vector<DNSRecord>
    - DNSName
    - uint16_t
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 31
    functionDepth: 0
    functionLinenumber: 31
    functionLinenumberEnd: 42
    functionName: addRecordToList
    functionSourceFile: /src/pdns/pdns/recursordist/test-common.hh
    functionUses: 12
    functionsReached:
    - push_back
    - getRecordContent
    - DNSRecord::DNSRecord
    - DNSRecord::setContent
    linkageType: ''
    returnType: void
    signature: void addRecordToList(std::vector<DNSRecord>& records, const DNSName&
      name, uint16_t type, const std::string& content, DNSResourceRecord::Place place=DNSResourceRecord::ANSWER,
      uint32_t ttl=3600)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:31,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 32
      start: 29
    functionDepth: 0
    functionLinenumber: 29
    functionLinenumberEnd: 32
    functionName: makeLocalhostRootDRC
    functionSourceFile: /src/pdns/pdns/recursordist/test-reczones-helpers.cc
    functionUses: 0
    functionsReached:
    - DNSRecordContent::make
    linkageType: ''
    returnType: std::shared_ptr<DNSRecordContent>
    signature: std::shared_ptr<DNSRecordContent> makeLocalhostRootDRC()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:36,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 34
    functionDepth: 0
    functionLinenumber: 34
    functionLinenumberEnd: 37
    functionName: makeLocalhostDRC
    functionSourceFile: /src/pdns/pdns/recursordist/test-reczones-helpers.cc
    functionUses: 0
    functionsReached:
    - DNSRecordContent::make
    linkageType: ''
    returnType: std::shared_ptr<DNSRecordContent>
    signature: std::shared_ptr<DNSRecordContent> makeLocalhostDRC()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:41,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' name'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 39
    functionDepth: 0
    functionLinenumber: 39
    functionLinenumberEnd: 42
    functionName: makePtrDRC
    functionSourceFile: /src/pdns/pdns/recursordist/test-reczones-helpers.cc
    functionUses: 0
    functionsReached:
    - DNSRecordContent::make
    linkageType: ''
    returnType: std::shared_ptr<DNSRecordContent>
    signature: std::shared_ptr<DNSRecordContent> makePtrDRC(const std::string& name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' domainMap'
    - ' name'
    - ' records'
    argTypes:
    - SyncRes::domainmap_t
    - std::string
    - SyncRes::AuthDomain::records_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 44
    functionDepth: 0
    functionLinenumber: 44
    functionLinenumberEnd: 54
    functionName: addDomainMapFixtureEntry
    functionSourceFile: /src/pdns/pdns/recursordist/test-reczones-helpers.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void addDomainMapFixtureEntry(SyncRes::domainmap_t& domainMap,\n                                       const
      std::string& name,\n                                       const SyncRes::AuthDomain::records_t&
      records)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSRecord
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:63,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:63,1
    - Dst: DNSRecord
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:64,1
    - Dst: makeLocalhostDRC
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:64,1
    - Dst: DNSRecord
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:65,1
    - Dst: makeLocalhostRootDRC
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:65,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - ' domainMap'
    - ' name'
    - type
    - ' address'
    argTypes:
    - SyncRes::domainmap_t
    - std::string
    - QType
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 56
    functionDepth: 1
    functionLinenumber: 56
    functionLinenumberEnd: 71
    functionName: addDomainMapFixtureEntry
    functionSourceFile: /src/pdns/pdns/recursordist/test-reczones-helpers.cc
    functionUses: 0
    functionsReached:
    - makeLocalhostDRC
    - DNSRecordContent::make
    - DNSRecord
    - makeLocalhostRootDRC
    linkageType: ''
    returnType: void
    signature: "void addDomainMapFixtureEntry(SyncRes::domainmap_t& domainMap,\n                                       const
      std::string& name,\n                                       const QType type,\n
      \                                      const std::string& address)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:76,1
    - Dst: addDomainMapFixtureEntry
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:78,1
    - Dst: addDomainMapFixtureEntry
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:79,1
    - Dst: addDomainMapFixtureEntry
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:80,1
    - Dst: addDomainMapFixtureEntry
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:81,1
    - Dst: DNSRecord
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:85,1
    - Dst: makeLocalhostDRC
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:85,1
    - Dst: DNSRecord
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:86,1
    - Dst: makeLocalhostRootDRC
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:86,1
    - Dst: DNSRecord
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:87,1
    - Dst: makePtrDRC
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:87,1
    - Dst: addDomainMapFixtureEntry
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:89,1
    - Dst: addDomainMapFixtureEntry
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:90,1
    - Dst: DNSRecord
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:94,1
    - Dst: makeLocalhostDRC
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:94,1
    - Dst: DNSRecord
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:95,1
    - Dst: makeLocalhostRootDRC
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:95,1
    - Dst: DNSRecord
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:96,1
    - Dst: makePtrDRC
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:96,1
    - Dst: addDomainMapFixtureEntry
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:98,1
    - Dst: addDomainMapFixtureEntry
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:99,1
    - Dst: DNSRecord
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:103,1
    - Dst: makeLocalhostDRC
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:103,1
    - Dst: DNSRecord
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:104,1
    - Dst: makeLocalhostRootDRC
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:104,1
    - Dst: DNSRecord
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:105,1
    - Dst: makePtrDRC
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:105,1
    - Dst: addDomainMapFixtureEntry
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:107,1
    - Dst: addDomainMapFixtureEntry
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:108,1
    - Dst: DNSRecord
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:112,1
    - Dst: makeLocalhostDRC
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:112,1
    - Dst: DNSRecord
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:113,1
    - Dst: makeLocalhostRootDRC
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:113,1
    - Dst: DNSRecord
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:114,1
    - Dst: makePtrDRC
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:114,1
    - Dst: addDomainMapFixtureEntry
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:117,1
    - Dst: addDomainMapFixtureEntry
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:118,1
    - Dst: addDomainMapFixtureEntry
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:119,1
    - Dst: addDomainMapFixtureEntry
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:120,1
    - Dst: DNSRecord
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:124,1
    - Dst: makeLocalhostDRC
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:124,1
    - Dst: DNSRecord
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:125,1
    - Dst: makeLocalhostRootDRC
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:125,1
    - Dst: DNSRecord
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:126,1
    - Dst: makePtrDRC
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:126,1
    - Dst: addDomainMapFixtureEntry
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:129,1
    - Dst: DNSRecord
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:132,1
    - Dst: makeLocalhostDRC
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:132,1
    - Dst: DNSRecord
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:133,1
    - Dst: makeLocalhostRootDRC
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:133,1
    - Dst: DNSRecord
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:134,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:134,1
    - Dst: DNSRecord
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:135,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:135,1
    - Dst: addDomainMapFixtureEntry
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:136,1
    - Dst: addDomainMapFixtureEntry
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:137,1
    - Dst: DNSRecord
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:141,1
    - Dst: makeLocalhostDRC
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:141,1
    - Dst: DNSRecord
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:142,1
    - Dst: makeLocalhostRootDRC
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:142,1
    - Dst: DNSRecord
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:143,1
    - Dst: makePtrDRC
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:143,1
    - Dst: addDomainMapFixtureEntry
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:145,1
    - Dst: DNSRecord
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:149,1
    - Dst: makeLocalhostDRC
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:149,1
    - Dst: DNSRecord
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:150,1
    - Dst: makeLocalhostRootDRC
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:150,1
    - Dst: DNSRecord
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:151,1
    - Dst: makePtrDRC
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:151,1
    - Dst: addDomainMapFixtureEntry
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:154,1
    - Dst: addDomainMapFixtureEntry
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:155,1
    - Dst: addDomainMapFixtureEntry
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:156,1
    - Dst: addDomainMapFixtureEntry
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:157,1
    - Dst: DNSRecord
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:161,1
    - Dst: makeLocalhostDRC
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:161,1
    - Dst: DNSRecord
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:162,1
    - Dst: makeLocalhostRootDRC
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:162,1
    - Dst: DNSRecord
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:163,1
    - Dst: makePtrDRC
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:163,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 23
    argCount: 1
    argNames:
    - ' domainMap'
    argTypes:
    - SyncRes::domainmap_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 165
      start: 73
    functionDepth: 1
    functionLinenumber: 73
    functionLinenumberEnd: 165
    functionName: populateDomainMapFixture
    functionSourceFile: /src/pdns/pdns/recursordist/test-reczones-helpers.cc
    functionUses: 0
    functionsReached:
    - makePtrDRC
    - addDomainMapFixtureEntry
    - DNSRecord
    - makeLocalhostRootDRC
    - makeLocalhostDRC
    - DNSRecordContent::make
    - empty
    linkageType: ''
    returnType: void
    signature: "void populateDomainMapFixture(SyncRes::domainmap_t& domainMap,\n                                       const
      std::string& searchSuffix = \"\")"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: populateDomainMapFixture
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:169,1
    - Dst: populateDomainMapFixture
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:170,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 171
      start: 167
    functionDepth: 2
    functionLinenumber: 167
    functionLinenumberEnd: 171
    functionName: Fixture
    functionSourceFile: /src/pdns/pdns/recursordist/test-reczones-helpers.cc
    functionUses: 1
    functionsReached:
    - populateDomainMapFixture
    linkageType: ''
    returnType: void
    signature: void Fixture()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::vector::reserve
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:178,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:178,1
    - Dst: std::vector::emplace_back
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:180,1
    - Dst: std::stable_sort
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:182,1
    - Dst: std::begin
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:182,1
    - Dst: std::end
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:182,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - ' domainMap'
    argTypes:
    - SyncRes::domainmap_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 186
      start: 175
    functionDepth: 0
    functionLinenumber: 175
    functionLinenumberEnd: 186
    functionName: sortDomainMap
    functionSourceFile: /src/pdns/pdns/recursordist/test-reczones-helpers.cc
    functionUses: 0
    functionsReached:
    - std::end
    - std::begin
    - std::stable_sort
    - std::vector::emplace_back
    - size
    - std::vector::reserve
    linkageType: ''
    returnType: std::vector<DomainMapEntry>
    signature: std::vector<DomainMapEntry> sortDomainMap(const SyncRes::domainmap_t&
      domainMap)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: second::print
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:193,1
    - Dst: std::stringstream::str
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:196,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - ' domainMap'
    argTypes:
    - std::vector<DomainMapEntry>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 197
      start: 188
    functionDepth: 0
    functionLinenumber: 188
    functionLinenumberEnd: 197
    functionName: printDomainMap
    functionSourceFile: /src/pdns/pdns/recursordist/test-reczones-helpers.cc
    functionUses: 0
    functionsReached:
    - std::stringstream::str
    - second::print
    linkageType: ''
    returnType: std::string
    signature: std::string printDomainMap(const std::vector<DomainMapEntry>& domainMap)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sortDomainMap
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:201,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 202
      start: 199
    functionDepth: 1
    functionLinenumber: 199
    functionLinenumberEnd: 202
    functionName: getDomainMapFixture
    functionSourceFile: /src/pdns/pdns/recursordist/test-reczones-helpers.cc
    functionUses: 0
    functionsReached:
    - sortDomainMap
    linkageType: ''
    returnType: std::vector<DomainMapEntry>
    signature: std::vector<DomainMapEntry> getDomainMapFixture() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sortDomainMap
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:206,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 207
      start: 204
    functionDepth: 1
    functionLinenumber: 204
    functionLinenumberEnd: 207
    functionName: getDomainMapFixtureWithSearchSuffix
    functionSourceFile: /src/pdns/pdns/recursordist/test-reczones-helpers.cc
    functionUses: 0
    functionsReached:
    - sortDomainMap
    linkageType: ''
    returnType: std::vector<DomainMapEntry>
    signature: std::vector<DomainMapEntry> getDomainMapFixtureWithSearchSuffix() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: withName
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:216,1
    - Dst: std::make_shared<SyncRes::domainmap_t>
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:218,1
    - Dst: std::make_shared<SyncRes::domainmap_t>
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:219,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:222,1
    - Dst: parseEtcHostsLine
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:222,1
    - Dst: addForwardAndReverseLookupEntries
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:223,1
    - Dst: addForwardAndReverseLookupEntries
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:224,1
    - Dst: BOOST_TEST_MESSAGE
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:227,1
    - Dst: sortDomainMap
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:229,1
    - Dst: BOOST_TEST_MESSAGE
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:230,1
    - Dst: BOOST_TEST_MESSAGE
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:231,1
    - Dst: printDomainMap
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:231,1
    - Dst: getDomainMapFixture
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:233,1
    - Dst: BOOST_TEST_MESSAGE
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:234,1
    - Dst: BOOST_TEST_MESSAGE
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:235,1
    - Dst: printDomainMap
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:235,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:237,1
    - Dst: auto::size
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:237,1
    - Dst: auto::size
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:237,1
    - Dst: auto::size
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:238,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:239,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:240,1
    - Dst: BOOST_TEST_MESSAGE
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:243,1
    - Dst: BOOST_TEST_MESSAGE
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:245,1
    - Dst: sortDomainMap
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:247,1
    - Dst: BOOST_TEST_MESSAGE
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:248,1
    - Dst: BOOST_TEST_MESSAGE
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:249,1
    - Dst: printDomainMap
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:249,1
    - Dst: getDomainMapFixtureWithSearchSuffix
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:251,1
    - Dst: BOOST_TEST_MESSAGE
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:252,1
    - Dst: BOOST_TEST_MESSAGE
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:253,1
    - Dst: printDomainMap
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:253,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:255,1
    - Dst: auto::size
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:255,1
    - Dst: auto::size
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:255,1
    - Dst: auto::size
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:256,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:257,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:258,1
    - Dst: BOOST_TEST_MESSAGE
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:261,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 27
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 262
      start: 214
    functionDepth: 4
    functionLinenumber: 214
    functionLinenumberEnd: 262
    functionName: BOOST_FIXTURE_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-reczones-helpers.cc
    functionUses: 0
    functionsReached:
    - BOOST_TEST_MESSAGE
    - parseEtcHostsLine
    - sortDomainMap
    - addForwardAndReverseLookupEntries
    - withName
    - printDomainMap
    - getDomainMapFixtureWithSearchSuffix
    - BOOST_CHECK_EQUAL
    - getDomainMapFixture
    - BOOST_REQUIRE
    - std::make_shared<SyncRes::domainmap_t>
    - BOOST_CHECK
    - auto::size
    linkageType: ''
    returnType: void
    signature: void BOOST_FIXTURE_TEST_CASE(test_loading_etc_hosts, Fixture)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MemRecursorCache::resetStaticsForTests
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:275,1
    - Dst: make_unique<MemRecursorCache>
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:276,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:278,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:279,1
    - Dst: mkstemp
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:281,1
    - Dst: string::data
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:281,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:282,1
    - Dst: fdopen
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:283,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:284,1
    - Dst: fwrite
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:285,1
    - Dst: data
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:285,1
    - Dst: length
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:285,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:286,1
    - Dst: length
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:286,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:287,1
    - Dst: fclose
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:287,1
    - Dst: time
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:289,1
    - Dst: readHintsIntoCache
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:292,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:292,1
    - Dst: unlink
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:293,1
    - Dst: string::data
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:293,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:294,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:295,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:295,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:299,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:299,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:299,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:299,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:300,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:300,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:302,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:302,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:302,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:302,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:303,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:303,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:305,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:305,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:305,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:305,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:306,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/recursordist/test-reczones-helpers.cc:306,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 307
      start: 273
    functionDepth: 3
    functionLinenumber: 273
    functionLinenumberEnd: 307
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-reczones-helpers.cc
    functionUses: 0
    functionsReached:
    - readHintsIntoCache
    - make_unique<MemRecursorCache>
    - std::string
    - string::data
    - std::vector::size
    - time
    - fwrite
    - BOOST_REQUIRE
    - mkstemp
    - DNSName
    - get
    - fdopen
    - arg
    - ComboAddress
    - length
    - fclose
    - BOOST_CHECK_EQUAL
    - unlink
    - data
    - BOOST_CHECK
    - MemRecursorCache::resetStaticsForTests
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_UserHints)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/lua-base4.hh:18,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - includePath
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 18
      start: 17
    functionDepth: 0
    functionLinenumber: 17
    functionLinenumberEnd: 18
    functionName: BaseLua4::BaseLua4
    functionSourceFile: /src/pdns/pdns/recursordist/lua-base4.hh
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void BaseLua4(std::string includePath)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:42,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:42,1
    - Dst: ZoneParserTNG::stackFile
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:46,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - ' fname'
    - zname
    - reldir
    - upgradeContent
    argTypes:
    - string
    - ZoneName
    - string
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 41
    functionDepth: 0
    functionLinenumber: 41
    functionLinenumberEnd: 47
    functionName: ZoneParserTNG::ZoneParserTNG
    functionSourceFile: /src/pdns/pdns/recursordist/zoneparser-tng.cc
    functionUses: 0
    functionsReached:
    - std::move
    - ZoneParserTNG::stackFile
    linkageType: ''
    returnType: void
    signature: void ZoneParserTNG::ZoneParserTNG(const string& fname, ZoneName zname,
      string reldir, bool upgradeContent)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:50,1
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:54,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' zonedata'
    - zname
    - upgradeContent
    argTypes:
    - vector<string>
    - ZoneName
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 49
    functionDepth: 0
    functionLinenumber: 49
    functionLinenumberEnd: 55
    functionName: ZoneParserTNG::ZoneParserTNG
    functionSourceFile: /src/pdns/pdns/recursordist/zoneparser-tng.cc
    functionUses: 0
    functionsReached:
    - std::move
    - begin
    linkageType: ''
    returnType: void
    signature: void ZoneParserTNG::ZoneParserTNG(const vector<string>& zonedata, ZoneName
      zname, bool upgradeContent)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:59,1
    - Dst: std::generic_category
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:60,1
    - Dst: std::system_error
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:61,1
    - Dst: open
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:63,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:63,1
    - Dst: std::system_error
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:67,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:67,1
    - Dst: fstat
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:71,1
    - Dst: close
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:73,1
    - Dst: std::system_error
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:75,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:75,1
    - Dst: S_ISREG
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:77,1
    - Dst: close
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:78,1
    - Dst: std::generic_category
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:79,1
    - Dst: std::system_error
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:80,1
    - Dst: fdopen
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:82,1
    - Dst: close
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:85,1
    - Dst: std::system_error
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:87,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:87,1
    - Dst: push
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:91,1
    - Dst: emplace_back
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:93,1
    - Dst: std::make_pair
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:93,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 22
    argCount: 1
    argNames:
    - ' fname'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 57
    functionDepth: 0
    functionLinenumber: 57
    functionLinenumberEnd: 94
    functionName: ZoneParserTNG::stackFile
    functionSourceFile: /src/pdns/pdns/recursordist/zoneparser-tng.cc
    functionUses: 3
    functionsReached:
    - std::system_error
    - push
    - stringerror
    - size
    - open
    - S_ISREG
    - fstat
    - emplace_back
    - std::make_pair
    - c_str
    - std::generic_category
    - close
    - fdopen
    linkageType: ''
    returnType: void
    signature: void ZoneParserTNG::stackFile(const std::string& fname)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:98,1
    - Dst: fclose
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:99,1
    - Dst: top
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:99,1
    - Dst: pop
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:100,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 96
    functionDepth: 0
    functionLinenumber: 96
    functionLinenumberEnd: 102
    functionName: ZoneParserTNG::~ZoneParserTNG()
    functionSourceFile: /src/pdns/pdns/recursordist/zoneparser-tng.cc
    functionUses: 0
    functionsReached:
    - empty
    - top
    - fclose
    - pop
    linkageType: ''
    returnType: void
    signature: void ZoneParserTNG::~ZoneParserTNG()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: string
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:106,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:106,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' line'
    - ' range'
    argTypes:
    - string
    - pair<string::size_type, string::size_type>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 107
      start: 104
    functionDepth: 0
    functionLinenumber: 104
    functionLinenumberEnd: 107
    functionName: makeString
    functionSourceFile: /src/pdns/pdns/recursordist/zoneparser-tng.cc
    functionUses: 2
    functionsReached:
    - c_str
    - string
    linkageType: ''
    returnType: string
    signature: string makeString(const string& line, const pair<string::size_type,
      string::size_type>& range)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:111,1
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:115,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:115,1
    - Dst: static_cast<unsigned char>
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:116,1
    - Dst: isdigit
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:117,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:121,1
    - Dst: static_cast<char>
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:125,1
    - Dst: tolower
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:125,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 14
    argCount: 1
    argNames:
    - ' nextpart'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 129
      start: 109
    functionDepth: 0
    functionLinenumber: 109
    functionLinenumberEnd: 129
    functionName: isTimeSpec
    functionSourceFile: /src/pdns/pdns/recursordist/zoneparser-tng.cc
    functionUses: 1
    functionsReached:
    - isdigit
    - end
    - begin
    - empty
    - static_cast<char>
    - tolower
    - static_cast<unsigned char>
    linkageType: ''
    returnType: bool
    signature: bool isTimeSpec(const string& nextpart)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:134,1
    - Dst: pdns::checked_stoi_into
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:139,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:142,1
    - Dst: ZoneParserTNG::getLineOfFile
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:142,1
    - Dst: dns_tolower
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:145,1
    - Dst: length
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:145,1
    - Dst: isdigit
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:146,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:167,1
    - Dst: ZoneParserTNG::getLineOfFile
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:167,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 31
    argCount: 1
    argNames:
    - ' str'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 170
      start: 132
    functionDepth: 0
    functionLinenumber: 132
    functionLinenumberEnd: 170
    functionName: ZoneParserTNG::makeTTLFromZone
    functionSourceFile: /src/pdns/pdns/recursordist/zoneparser-tng.cc
    functionUses: 1
    functionsReached:
    - length
    - isdigit
    - dns_tolower
    - PDNSException
    - ZoneParserTNG::getLineOfFile
    - empty
    - pdns::checked_stoi_into
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int ZoneParserTNG::makeTTLFromZone(const string& str)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:174,1
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:180,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:180,1
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:181,1
    - Dst: makeString
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:185,1
    - Dst: string::reserve
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:195,1
    - Dst: string::size
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:195,1
    - Dst: string::size
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:198,1
    - Dst: string::append
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:201,1
    - Dst: string::size
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:211,1
    - Dst: string::append
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:212,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:212,1
    - Dst: string::size
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:220,1
    - Dst: string::size
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:223,1
    - Dst: string::c_str
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:228,1
    - Dst: string::c_str
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:228,1
    - Dst: sscanf
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:232,1
    - Dst: string::c_str
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:232,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:234,1
    - Dst: ZoneParserTNG::getLineOfFile
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:234,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:237,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:237,1
    - Dst: ZoneParserTNG::getLineOfFile
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:237,1
    - Dst: std::min
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:243,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:243,1
    - Dst: snprintf
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:247,1
    - Dst: snprintf
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:250,1
    - Dst: snprintf
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:253,1
    - Dst: snprintf
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:257,1
    - Dst: string::append
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:263,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:275,1
    CyclomaticComplexity: 28
    EdgeCount: 28
    ICount: 64
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 277
      start: 172
    functionDepth: 0
    functionLinenumber: 172
    functionLinenumberEnd: 277
    functionName: ZoneParserTNG::getTemplateLine
    functionSourceFile: /src/pdns/pdns/recursordist/zoneparser-tng.cc
    functionUses: 1
    functionsReached:
    - string::c_str
    - std::move
    - string::reserve
    - string::size
    - std::to_string
    - sscanf
    - snprintf
    - PDNSException
    - std::min
    - string::append
    - end
    - ZoneParserTNG::getLineOfFile
    - begin
    - empty
    - makeString
    - static_cast<int>
    linkageType: ''
    returnType: bool
    signature: bool ZoneParserTNG::getTemplateLine()
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: find
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:281,1
    - Dst: length
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:285,1
    - Dst: resize
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:296,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 13
    argCount: 1
    argNames:
    - ' line'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 297
      start: 279
    functionDepth: 1
    functionLinenumber: 279
    functionLinenumberEnd: 297
    functionName: chopComment
    functionSourceFile: /src/pdns/pdns/recursordist/zoneparser-tng.cc
    functionUses: 1
    functionsReached:
    - length
    - resize
    - find
    linkageType: ''
    returnType: void
    signature: void chopComment(string& line)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: length
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:301,1
    - Dst: erase
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:312,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 14
    argCount: 2
    argNames:
    - ' line'
    - c
    argTypes:
    - string
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 316
      start: 299
    functionDepth: 0
    functionLinenumber: 299
    functionLinenumberEnd: 316
    functionName: findAndElide
    functionSourceFile: /src/pdns/pdns/recursordist/zoneparser-tng.cc
    functionUses: 1
    functionsReached:
    - length
    - erase
    linkageType: ''
    returnType: bool
    signature: bool findAndElide(string& line, char c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 321
      start: 318
    functionDepth: 0
    functionLinenumber: 318
    functionLinenumberEnd: 321
    functionName: ZoneParserTNG::getZoneName
    functionSourceFile: /src/pdns/pdns/recursordist/zoneparser-tng.cc
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: ZoneName
    signature: ZoneName ZoneParserTNG::getZoneName()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:325,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:326,1
    - Dst: std::distance
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:326,1
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:326,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:328,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:331,1
    - Dst: top
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:331,1
    - Dst: top
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:331,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 332
      start: 323
    functionDepth: 1
    functionLinenumber: 323
    functionLinenumberEnd: 332
    functionName: ZoneParserTNG::getLineOfFile
    functionSourceFile: /src/pdns/pdns/recursordist/zoneparser-tng.cc
    functionUses: 6
    functionsReached:
    - std::distance
    - std::to_string
    - top
    - begin
    - empty
    linkageType: ''
    returnType: string
    signature: string ZoneParserTNG::getLineOfFile()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:336,1
    - Dst: top
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:339,1
    - Dst: top
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:339,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 340
      start: 334
    functionDepth: 0
    functionLinenumber: 334
    functionLinenumberEnd: 340
    functionName: ZoneParserTNG::getLineNumAndFile
    functionSourceFile: /src/pdns/pdns/recursordist/zoneparser-tng.cc
    functionUses: 1
    functionsReached:
    - empty
    - top
    linkageType: ''
    returnType: pair<string,int>
    signature: pair<string,int> ZoneParserTNG::getLineNumAndFile()
  - BBCount: 63
    BranchProfiles: []
    Callsites:
    - Dst: ZoneParserTNG::getTemplateLine
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:346,1
    - Dst: ZoneParserTNG::getLine
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:346,1
    - Dst: boost::trim_right_if
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:349,1
    - Dst: boost::is_any_of
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:349,1
    - Dst: std::string*::clear
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:351,1
    - Dst: find
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:352,1
    - Dst: substr
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:353,1
    - Dst: find
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:353,1
    - Dst: clear
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:355,1
    - Dst: vstringtok
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:356,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:358,1
    - Dst: makeString
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:365,1
    - Dst: pdns_iequals
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:366,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:366,1
    - Dst: ZoneParserTNG::makeTTLFromZone
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:367,1
    - Dst: trim_right_copy_if
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:367,1
    - Dst: makeString
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:367,1
    - Dst: boost::is_any_of
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:367,1
    - Dst: pdns_iequals
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:370,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:370,1
    - Dst: unquotify
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:371,1
    - Dst: makeString
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:371,1
    - Dst: string::find
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:373,1
    - Dst: string::resize
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:374,1
    - Dst: string::empty
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:376,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:376,1
    - Dst: ZoneParserTNG::stackFile
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:379,1
    - Dst: pdns_iequals
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:381,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:381,1
    - Dst: ZoneName
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:382,1
    - Dst: makeString
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:382,1
    - Dst: pdns_iequals
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:384,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:384,1
    - Dst: exception
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:386,1
    - Dst: makeString
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:393,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:393,1
    - Dst: clear
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:396,1
    - Dst: find
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:398,1
    - Dst: emplace_back
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:400,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:403,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:405,1
    - Dst: find
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:407,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:410,1
    - Dst: emplace_back
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:412,1
    - Dst: substr
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:412,1
    - Dst: emplace_back
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:413,1
    - Dst: substr
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:413,1
    - Dst: splitOnOnlyOneSeparator
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:417,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:418,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:419,1
    - Dst: std::stoul
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:424,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:425,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:426,1
    - Dst: static_cast<uint32_t>
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:428,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:431,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:431,1
    - Dst: parseValue
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:435,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:435,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:438,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:438,1
    - Dst: splitOnOnlyOneSeparator
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:439,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:441,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:442,1
    - Dst: parseValue
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:445,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:445,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:447,1
    - Dst: parseValue
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:448,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:448,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:456,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:461,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:461,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:461,1
    - Dst: pop_front
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:466,1
    - Dst: pop_front
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:467,1
    - Dst: exception
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:475,1
    - Dst: ZoneParserTNG::getLineOfFile
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:475,1
    - Dst: makeString
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:480,1
    - Dst: dns_isspace
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:481,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:485,1
    - Dst: pop_front
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:486,1
    - Dst: string::empty
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:487,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:491,1
    - Dst: isCanonical
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:492,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:493,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:496,1
    - Dst: exception
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:497,1
    - Dst: ZoneParserTNG::getLineOfFile
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:497,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:506,1
    - Dst: front
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:507,1
    - Dst: pop_front
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:508,1
    - Dst: makeString
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:509,1
    - Dst: string::empty
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:510,1
    - Dst: string::find
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:513,1
    - Dst: pdns_iequals
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:519,1
    - Dst: isTimeSpec
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:523,1
    - Dst: ZoneParserTNG::makeTTLFromZone
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:524,1
    - Dst: DNSRecordContent::TypeToNumber
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:536,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:543,1
    - Dst: ZoneParserTNG::getLineOfFile
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:543,1
    - Dst: exception
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:549,1
    - Dst: ZoneParserTNG::getLineOfFile
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:549,1
    - Dst: content::assign
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:552,1
    - Dst: chopComment
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:553,1
    - Dst: trim_if
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:554,1
    - Dst: boost::is_any_of
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:554,1
    - Dst: content::size
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:556,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:557,1
    - Dst: findAndElide
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:559,1
    - Dst: findAndElide
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:560,1
    - Dst: ZoneParserTNG::getLine
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:561,1
    - Dst: boost::trim_right
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:562,1
    - Dst: chopComment
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:563,1
    - Dst: Utility::trim
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:564,1
    - Dst: findAndElide
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:566,1
    - Dst: boost::trim_if
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:573,1
    - Dst: boost::is_any_of
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:573,1
    - Dst: DNSRecordContent::isUnknownType
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:575,1
    - Dst: DNSRecordContent::upgradeContent
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:576,1
    - Dst: qtype::getCode
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:580,1
    - Dst: stringtok
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:582,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:583,1
    - Dst: toCanonic
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:586,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:588,1
    - Dst: qname::toLogString
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:588,1
    - Dst: qtype::toString
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:588,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:588,1
    - Dst: stringtok
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:596,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:597,1
    - Dst: toCanonic
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:598,1
    - Dst: toCanonic
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:599,1
    - Dst: stringtok
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:605,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:606,1
    - Dst: toCanonic
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:609,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:611,1
    - Dst: qname::toLogString
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:611,1
    - Dst: qtype::toString
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:611,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:611,1
    - Dst: toCanonic
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:626,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:628,1
    - Dst: qname::toLogString
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:628,1
    - Dst: qtype::toString
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:628,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:628,1
    - Dst: stringtok
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:632,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:633,1
    - Dst: toCanonic
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:635,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:637,1
    - Dst: qname::toLogString
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:637,1
    - Dst: qtype::toString
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:637,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:637,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:640,1
    - Dst: qname::toLogString
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:640,1
    - Dst: content::clear
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:642,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:643,1
    - Dst: content::append
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:645,1
    - Dst: stringtok
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:652,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:653,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:654,1
    - Dst: qname::toLogString
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:654,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:655,1
    - Dst: toCanonic
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:657,1
    - Dst: toCanonic
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:658,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:660,1
    - Dst: qname::toLogString
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:660,1
    - Dst: qtype::toString
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:660,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:660,1
    - Dst: content::clear
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:663,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:664,1
    - Dst: content::append
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:666,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:670,1
    - Dst: ZoneParserTNG::makeTTLFromZone
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:670,1
    CyclomaticComplexity: 118
    EdgeCount: 118
    ICount: 263
    argCount: 2
    argNames:
    - ' rr'
    - comment
    argTypes:
    - DNSResourceRecord
    - std::string*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 678
      start: 343
    functionDepth: 1
    functionLinenumber: 343
    functionLinenumberEnd: 678
    functionName: ZoneParserTNG::get
    functionSourceFile: /src/pdns/pdns/recursordist/zoneparser-tng.cc
    functionUses: 17
    functionsReached:
    - DNSRecordContent::upgradeContent
    - exception
    - std::to_string
    - PDNSException
    - runtime_error
    - static_cast<uint32_t>
    - content::assign
    - content::clear
    - std::vector::at
    - emplace_back
    - front
    - DNSRecordContent::isUnknownType
    - find
    - string::resize
    - unquotify
    - std::vector::size
    - stringtok
    - ZoneParserTNG::getTemplateLine
    - string::empty
    - qname::toLogString
    - ZoneParserTNG::stackFile
    - string::find
    - std::string*::clear
    - size
    - content::append
    - substr
    - toCanonic
    - trim_if
    - vstringtok
    - empty
    - clear
    - DNSRecordContent::TypeToNumber
    - at
    - parseValue
    - isTimeSpec
    - pdns::max
    - isCanonical
    - std::runtime_error
    - ZoneParserTNG::getLine
    - pdns_iequals
    - chopComment
    - boost::trim_right_if
    - DNSName
    - qtype::getCode
    - pop_front
    - trim_right_copy_if
    - ZoneParserTNG::getLineOfFile
    - boost::trim_right
    - Utility::trim
    - dns_isspace
    - makeString
    - ZoneParserTNG::makeTTLFromZone
    - std::move
    - qtype::toString
    - what
    - findAndElide
    - boost::is_any_of
    - splitOnOnlyOneSeparator
    - std::stoul
    - boost::trim_if
    - ZoneName
    - vector::size
    - content::size
    linkageType: ''
    returnType: bool
    signature: bool ZoneParserTNG::get(DNSResourceRecord& rr, std::string* comment)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:683,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:684,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:691,1
    - Dst: stringfgets
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:692,1
    - Dst: top
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:692,1
    - Dst: top
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:693,1
    - Dst: fclose
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:696,1
    - Dst: top
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:696,1
    - Dst: pop
      Src: /src/pdns/pdns/recursordist/zoneparser-tng.cc:697,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 700
      start: 681
    functionDepth: 0
    functionLinenumber: 681
    functionLinenumberEnd: 700
    functionName: ZoneParserTNG::getLine
    functionSourceFile: /src/pdns/pdns/recursordist/zoneparser-tng.cc
    functionUses: 2
    functionsReached:
    - stringfgets
    - fclose
    - end
    - top
    - empty
    - pop
    linkageType: ''
    returnType: bool
    signature: bool ZoneParserTNG::getLine()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/syncres.cc:57,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - arg
    argTypes:
    - T
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 56
    functionDepth: 0
    functionLinenumber: 56
    functionLinenumberEnd: 57
    functionName: fails_t::value_t
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void value_t(T arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 68
    functionDepth: 0
    functionLinenumber: 68
    functionLinenumberEnd: 71
    functionName: fails_t::getMapCopy
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: cont_t
    signature: cont_t getMapCopy() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: find
      Src: /src/pdns/pdns/recursordist/syncres.cc:75,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/syncres.cc:77,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ' arg'
    argTypes:
    - T
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 73
    functionDepth: 0
    functionLinenumber: 73
    functionLinenumberEnd: 81
    functionName: fails_t::value
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 0
    functionsReached:
    - end
    - find
    linkageType: ''
    returnType: counter_t
    signature: counter_t value(const T& arg) const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: insert
      Src: /src/pdns/pdns/recursordist/syncres.cc:85,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/recursordist/syncres.cc:87,1
    - Dst: template get<T>
      Src: /src/pdns/pdns/recursordist/syncres.cc:90,1
    - Dst: modify
      Src: /src/pdns/pdns/recursordist/syncres.cc:92,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - ' key'
    - ' now'
    argTypes:
    - T
    - struct timeval
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 83
    functionDepth: 2
    functionLinenumber: 83
    functionLinenumberEnd: 94
    functionName: fails_t::incr
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 0
    functionsReached:
    - pdns::max
    - modify
    - insert
    - template get<T>
    linkageType: ''
    returnType: counter_t
    signature: counter_t incr(const T& key, const struct timeval& now)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: erase
      Src: /src/pdns/pdns/recursordist/syncres.cc:98,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' arg'
    argTypes:
    - T
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 96
    functionDepth: 0
    functionLinenumber: 96
    functionLinenumberEnd: 99
    functionName: fails_t::clear
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 0
    functionsReached:
    - erase
    linkageType: ''
    returnType: void
    signature: void clear(const T& arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fails_t::clear
      Src: /src/pdns/pdns/recursordist/syncres.cc:103,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 104
      start: 101
    functionDepth: 0
    functionLinenumber: 101
    functionLinenumberEnd: 104
    functionName: fails_t::clear
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 1
    functionsReached:
    - fails_t::clear
    linkageType: ''
    returnType: void
    signature: void clear()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fails_t::size
      Src: /src/pdns/pdns/recursordist/syncres.cc:108,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 106
    functionDepth: 0
    functionLinenumber: 106
    functionLinenumberEnd: 109
    functionName: fails_t::size
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 1
    functionsReached:
    - fails_t::size
    linkageType: ''
    returnType: size_t
    signature: size_t size() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: template get<time_t>
      Src: /src/pdns/pdns/recursordist/syncres.cc:113,1
    - Dst: erase
      Src: /src/pdns/pdns/recursordist/syncres.cc:114,1
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/syncres.cc:114,1
    - Dst: upper_bound
      Src: /src/pdns/pdns/recursordist/syncres.cc:114,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - cutoff
    argTypes:
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 115
      start: 111
    functionDepth: 0
    functionLinenumber: 111
    functionLinenumberEnd: 115
    functionName: fails_t::prune
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 0
    functionsReached:
    - upper_bound
    - erase
    - template get<time_t>
    - begin
    linkageType: ''
    returnType: void
    signature: void prune(time_t cutoff)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/syncres.cc:125,1
    - Dst: auto::getPB
      Src: /src/pdns/pdns/recursordist/syncres.cc:126,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - maxSize
    - ' ret'
    argTypes:
    - size_t
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 127
      start: 123
    functionDepth: 0
    functionLinenumber: 123
    functionLinenumberEnd: 127
    functionName: SyncRes::getNSSpeedTable
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 1
    functionsReached:
    - auto::getPB
    - lock
    linkageType: ''
    returnType: size_t
    signature: size_t SyncRes::getNSSpeedTable(size_t maxSize, std::string& ret)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/syncres.cc:131,1
    - Dst: auto::putPB
      Src: /src/pdns/pdns/recursordist/syncres.cc:132,1
    - Dst: time
      Src: /src/pdns/pdns/recursordist/syncres.cc:132,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' ret'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 133
      start: 129
    functionDepth: 0
    functionLinenumber: 129
    functionLinenumberEnd: 133
    functionName: SyncRes::putIntoNSSpeedTable
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 1
    functionsReached:
    - auto::putPB
    - time
    - lock
    linkageType: ''
    returnType: size_t
    signature: size_t SyncRes::putIntoNSSpeedTable(const std::string& ret)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 138
      start: 138
    functionDepth: 0
    functionLinenumber: 138
    functionLinenumberEnd: 138
    functionName: Throttle::Throttle
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Throttle()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 139
      start: 139
    functionDepth: 0
    functionLinenumber: 139
    functionLinenumberEnd: 139
    functionName: ~Throttle()
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~Throttle()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 140
    functionDepth: 0
    functionLinenumber: 140
    functionLinenumberEnd: 140
    functionName: Throttle::Throttle
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Throttle(Throttle&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 141
      start: 141
    functionDepth: 0
    functionLinenumber: 141
    functionLinenumberEnd: 141
    functionName: '& operator=(const Throttle&)'
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Throttle
    signature: Throttle & operator=(const Throttle&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 142
      start: 142
    functionDepth: 0
    functionLinenumber: 142
    functionLinenumberEnd: 142
    functionName: '& operator=(Throttle&&)'
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Throttle
    signature: Throttle & operator=(Throttle&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 143
      start: 143
    functionDepth: 0
    functionLinenumber: 143
    functionLinenumberEnd: 143
    functionName: Throttle::Throttle
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Throttle(const Throttle&)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/syncres.cc:151,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 4
    argNames:
    - thing_
    - ttd_
    - count_
    - reason_
    argTypes:
    - Key
    - time_t
    - unsigned int
    - Reason
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 153
      start: 150
    functionDepth: 0
    functionLinenumber: 150
    functionLinenumberEnd: 153
    functionName: Throttle::entry_t
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void entry_t(Key thing_, time_t ttd_, unsigned int count_, Reason reason_)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: find
      Src: /src/pdns/pdns/recursordist/syncres.cc:166,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/syncres.cc:167,1
    - Dst: erase
      Src: /src/pdns/pdns/recursordist/syncres.cc:171,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - now
    - ' arg'
    argTypes:
    - time_t
    - Key
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 177
      start: 164
    functionDepth: 0
    functionLinenumber: 164
    functionLinenumberEnd: 177
    functionName: Throttle::shouldThrottle
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 0
    functionsReached:
    - erase
    - end
    - find
    linkageType: ''
    returnType: bool
    signature: bool shouldThrottle(time_t now, const Key& arg)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: find
      Src: /src/pdns/pdns/recursordist/syncres.cc:181,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/syncres.cc:183,1
    - Dst: emplace
      Src: /src/pdns/pdns/recursordist/syncres.cc:184,1
    - Dst: std::max
      Src: /src/pdns/pdns/recursordist/syncres.cc:187,1
    - Dst: std::max
      Src: /src/pdns/pdns/recursordist/syncres.cc:188,1
    - Dst: template get<Key>
      Src: /src/pdns/pdns/recursordist/syncres.cc:189,1
    - Dst: modify
      Src: /src/pdns/pdns/recursordist/syncres.cc:190,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 5
    argNames:
    - now
    - ' arg'
    - ttl
    - count
    - reason
    argTypes:
    - time_t
    - Key
    - time_t
    - unsigned int
    - Reason
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 196
      start: 179
    functionDepth: 0
    functionLinenumber: 179
    functionLinenumberEnd: 196
    functionName: Throttle::throttle
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 0
    functionsReached:
    - modify
    - end
    - template get<Key>
    - std::max
    - emplace
    - find
    linkageType: ''
    returnType: void
    signature: void throttle(time_t now, const Key& arg, time_t ttl, unsigned int
      count, Reason reason)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Throttle::size
      Src: /src/pdns/pdns/recursordist/syncres.cc:200,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 201
      start: 198
    functionDepth: 0
    functionLinenumber: 198
    functionLinenumberEnd: 201
    functionName: Throttle::size
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 1
    functionsReached:
    - Throttle::size
    linkageType: ''
    returnType: size_t
    signature: size_t size() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 206
      start: 203
    functionDepth: 0
    functionLinenumber: 203
    functionLinenumberEnd: 206
    functionName: Throttle::getThrottleMap
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: cont_t
    signature: cont_t getThrottleMap() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Throttle::clear
      Src: /src/pdns/pdns/recursordist/syncres.cc:210,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 211
      start: 208
    functionDepth: 0
    functionLinenumber: 208
    functionLinenumberEnd: 211
    functionName: Throttle::clear
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 1
    functionsReached:
    - Throttle::clear
    linkageType: ''
    returnType: void
    signature: void clear()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: erase
      Src: /src/pdns/pdns/recursordist/syncres.cc:215,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' thing'
    argTypes:
    - Key
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 216
      start: 213
    functionDepth: 0
    functionLinenumber: 213
    functionLinenumberEnd: 216
    functionName: Throttle::clear
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 1
    functionsReached:
    - erase
    linkageType: ''
    returnType: void
    signature: void clear(const Key& thing)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: template get<time_t>
      Src: /src/pdns/pdns/recursordist/syncres.cc:219,1
    - Dst: erase
      Src: /src/pdns/pdns/recursordist/syncres.cc:220,1
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/syncres.cc:220,1
    - Dst: upper_bound
      Src: /src/pdns/pdns/recursordist/syncres.cc:220,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - now
    argTypes:
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 221
      start: 217
    functionDepth: 0
    functionLinenumber: 217
    functionLinenumberEnd: 221
    functionName: Throttle::prune
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 0
    functionsReached:
    - upper_bound
    - erase
    - template get<time_t>
    - begin
    linkageType: ''
    returnType: void
    signature: void prune(time_t now)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<unsigned int>
      Src: /src/pdns/pdns/recursordist/syncres.cc:236,1
    - Dst: std::array::size
      Src: /src/pdns/pdns/recursordist/syncres.cc:237,1
    - Dst: std::array::at
      Src: /src/pdns/pdns/recursordist/syncres.cc:240,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - reason
    argTypes:
    - Reason
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 241
      start: 223
    functionDepth: 0
    functionLinenumber: 223
    functionLinenumberEnd: 241
    functionName: Throttle::toString
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 0
    functionsReached:
    - static_cast<unsigned int>
    - std::array::at
    - std::array::size
    linkageType: ''
    returnType: std::string
    signature: std::string toString(Reason reason)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/syncres.cc:252,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/syncres.cc:252,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - name
    - ' nsAddresses'
    - ttd
    argTypes:
    - DNSName
    - map<DNSName, vector<ComboAddress>>
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 254
      start: 251
    functionDepth: 0
    functionLinenumber: 251
    functionLinenumberEnd: 254
    functionName: SavedParentEntry
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void SavedParentEntry(DNSName name, map<DNSName, vector<ComboAddress>>&&
      nsAddresses, time_t ttd)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: get
      Src: /src/pdns/pdns/recursordist/syncres.cc:271,1
    - Dst: erase
      Src: /src/pdns/pdns/recursordist/syncres.cc:272,1
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/syncres.cc:272,1
    - Dst: upper_bound
      Src: /src/pdns/pdns/recursordist/syncres.cc:272,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - now
    argTypes:
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 273
      start: 269
    functionDepth: 0
    functionLinenumber: 269
    functionLinenumberEnd: 273
    functionName: SavedParentNSSet::prune
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 0
    functionsReached:
    - begin
    - upper_bound
    - erase
    - get
    linkageType: ''
    returnType: void
    signature: void prune(time_t now)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: find
      Src: /src/pdns/pdns/recursordist/syncres.cc:276,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/syncres.cc:277,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ' name'
    argTypes:
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 280
      start: 274
    functionDepth: 0
    functionLinenumber: 274
    functionLinenumberEnd: 280
    functionName: SavedParentNSSet::inc
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 0
    functionsReached:
    - end
    - find
    linkageType: ''
    returnType: void
    signature: void inc(const DNSName& name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 284
      start: 281
    functionDepth: 0
    functionLinenumber: 281
    functionLinenumberEnd: 284
    functionName: SavedParentNSSet::getMapCopy
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: SavedParentNSSet
    signature: SavedParentNSSet getMapCopy() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/syncres.cc:305,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 3
    argNames:
    - ' address'
    - auth
    - ttd
    argTypes:
    - ComboAddress
    - DNSName
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 307
      start: 304
    functionDepth: 0
    functionLinenumber: 304
    functionLinenumberEnd: 307
    functionName: DoTStatus
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void DoTStatus(const ComboAddress& address, DNSName auth, time_t ttd)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<unsigned int>
      Src: /src/pdns/pdns/recursordist/syncres.cc:323,1
    - Dst: std::array::size
      Src: /src/pdns/pdns/recursordist/syncres.cc:324,1
    - Dst: std::array::at
      Src: /src/pdns/pdns/recursordist/syncres.cc:324,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 325
      start: 320
    functionDepth: 0
    functionLinenumber: 320
    functionLinenumberEnd: 325
    functionName: toString
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 445
    functionsReached:
    - static_cast<unsigned int>
    - std::array::at
    - std::array::size
    linkageType: ''
    returnType: std::string
    signature: std::string toString() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: template get<time_t>
      Src: /src/pdns/pdns/recursordist/syncres.cc:339,1
    - Dst: erase
      Src: /src/pdns/pdns/recursordist/syncres.cc:340,1
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/syncres.cc:340,1
    - Dst: upper_bound
      Src: /src/pdns/pdns/recursordist/syncres.cc:340,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - cutoff
    argTypes:
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 341
      start: 337
    functionDepth: 0
    functionLinenumber: 337
    functionLinenumberEnd: 341
    functionName: prune
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 1
    functionsReached:
    - upper_bound
    - erase
    - template get<time_t>
    - begin
    linkageType: ''
    returnType: void
    signature: void prune(time_t cutoff)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 411
      start: 403
    functionDepth: 0
    functionLinenumber: 403
    functionLinenumberEnd: 411
    functionName: LOG
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 558
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LOG(x)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - ' prefix'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 422
      start: 412
    functionDepth: 0
    functionLinenumber: 412
    functionLinenumberEnd: 422
    functionName: SyncRes::LogObject
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: OptLog
    signature: OptLog SyncRes::LogObject(const string& prefix)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: get
      Src: /src/pdns/pdns/recursordist/syncres.cc:427,1
    - Dst: pushResolveTask
      Src: /src/pdns/pdns/recursordist/syncres.cc:432,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - ' qname'
    - qtype
    - ' now'
    argTypes:
    - DNSName
    - QType
    - struct timeval
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 435
      start: 424
    functionDepth: 1
    functionLinenumber: 424
    functionLinenumberEnd: 435
    functionName: pushResolveIfNotInNegCache
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 0
    functionsReached:
    - pushResolveTask
    - get
    linkageType: ''
    returnType: bool
    signature: bool pushResolveIfNotInNegCache(const DNSName& qname, QType qtype,
      const struct timeval& now)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/pdns/pdns/recursordist/syncres.cc:445,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/recursordist/syncres.cc:445,1
    - Dst: std::array::size
      Src: /src/pdns/pdns/recursordist/syncres.cc:445,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/recursordist/syncres.cc:446,1
    - Dst: std::array::size
      Src: /src/pdns/pdns/recursordist/syncres.cc:446,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/recursordist/syncres.cc:449,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/recursordist/syncres.cc:449,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - value
    argTypes:
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 450
      start: 442
    functionDepth: 0
    functionLinenumber: 442
    functionLinenumberEnd: 450
    functionName: fmtfloat
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 0
    functionsReached:
    - static_cast<size_t>
    - snprintf
    - std::array::data
    - std::array::size
    - static_cast<int>
    linkageType: ''
    returnType: std::string
    signature: std::string fmtfloat(double value)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: at
      Src: /src/pdns/pdns/recursordist/syncres.cc:455,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/syncres.cc:456,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/syncres.cc:459,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/syncres.cc:460,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - usec
    - family
    argTypes:
    - uint64_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 462
      start: 452
    functionDepth: 0
    functionLinenumber: 452
    functionLinenumberEnd: 462
    functionName: accountAuthLatency
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 0
    functionsReached:
    - at
    linkageType: ''
    returnType: void
    signature: void accountAuthLatency(uint64_t usec, int family)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::max
      Src: /src/pdns/pdns/recursordist/syncres.cc:467,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' now'
    argTypes:
    - struct timeval
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 468
      start: 464
    functionDepth: 0
    functionLinenumber: 464
    functionLinenumberEnd: 468
    functionName: SyncRes::SyncRes
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 0
    functionsReached:
    - pdns::max
    linkageType: ''
    returnType: void
    signature: void SyncRes::SyncRes(const struct timeval& now)
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: SyncRes::doResolve
      Src: /src/pdns/pdns/recursordist/syncres.cc:480,1
    - Dst: vStateIsBogus
      Src: /src/pdns/pdns/recursordist/syncres.cc:486,1
    - Dst: SyncRes::shouldValidate
      Src: /src/pdns/pdns/recursordist/syncres.cc:489,1
    - Dst: push_back
      Src: /src/pdns/pdns/recursordist/syncres.cc:494,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/syncres.cc:494,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/syncres.cc:503,1
    - Dst: vStateIsBogus
      Src: /src/pdns/pdns/recursordist/syncres.cc:507,1
    - Dst: SyncRes::shouldValidate
      Src: /src/pdns/pdns/recursordist/syncres.cc:510,1
    - Dst: push_back
      Src: /src/pdns/pdns/recursordist/syncres.cc:516,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/syncres.cc:516,1
    - Dst: SyncRes::setCacheOnly
      Src: /src/pdns/pdns/recursordist/syncres.cc:522,1
    - Dst: SyncRes::doResolve
      Src: /src/pdns/pdns/recursordist/syncres.cc:524,1
    - Dst: SyncRes::setCacheOnly
      Src: /src/pdns/pdns/recursordist/syncres.cc:525,1
    - Dst: vector::empty
      Src: /src/pdns/pdns/recursordist/syncres.cc:526,1
    - Dst: vStateIsBogus
      Src: /src/pdns/pdns/recursordist/syncres.cc:529,1
    - Dst: SyncRes::shouldValidate
      Src: /src/pdns/pdns/recursordist/syncres.cc:532,1
    - Dst: push_back
      Src: /src/pdns/pdns/recursordist/syncres.cc:539,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/syncres.cc:539,1
    - Dst: pushResolveIfNotInNegCache
      Src: /src/pdns/pdns/recursordist/syncres.cc:547,1
    CyclomaticComplexity: 29
    EdgeCount: 29
    ICount: 62
    argCount: 6
    argNames:
    - ' qname'
    - qtype
    - mode
    - ' additionals'
    - depth
    - ' additionalsNotInCache'
    argTypes:
    - DNSName
    - QType
    - AdditionalMode
    - std::vector<DNSRecord>
    - unsigned int
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 555
      start: 472
    functionDepth: 2
    functionLinenumber: 472
    functionLinenumberEnd: 555
    functionName: SyncRes::resolveAdditionals
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 0
    functionsReached:
    - std::move
    - push_back
    - SyncRes::setCacheOnly
    - vStateIsBogus
    - get
    - pushResolveIfNotInNegCache
    - vector::empty
    - SyncRes::doResolve
    - SyncRes::shouldValidate
    linkageType: ''
    returnType: void
    signature: void SyncRes::resolveAdditionals(const DNSName& qname, QType qtype,
      AdditionalMode mode, std::vector<DNSRecord>& additionals, unsigned int depth,
      bool& additionalsNotInCache)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/syncres.cc:565,1
    - Dst: getLocal
      Src: /src/pdns/pdns/recursordist/syncres.cc:569,1
    - Dst: auto::allowAdditionalQTypes::find
      Src: /src/pdns/pdns/recursordist/syncres.cc:570,1
    - Dst: auto::allowAdditionalQTypes::end
      Src: /src/pdns/pdns/recursordist/syncres.cc:571,1
    - Dst: allowAdditionalEntry
      Src: /src/pdns/pdns/recursordist/syncres.cc:580,1
    - Dst: emplace
      Src: /src/pdns/pdns/recursordist/syncres.cc:593,1
    - Dst: SyncRes::resolveAdditionals
      Src: /src/pdns/pdns/recursordist/syncres.cc:595,1
    - Dst: std::vector::empty
      Src: /src/pdns/pdns/recursordist/syncres.cc:597,1
    - Dst: std::vector::begin
      Src: /src/pdns/pdns/recursordist/syncres.cc:598,1
    - Dst: std::vector::end
      Src: /src/pdns/pdns/recursordist/syncres.cc:598,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/syncres.cc:601,1
    - Dst: count
      Src: /src/pdns/pdns/recursordist/syncres.cc:605,1
    - Dst: std::tuple
      Src: /src/pdns/pdns/recursordist/syncres.cc:605,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/syncres.cc:605,1
    - Dst: std::vector::erase
      Src: /src/pdns/pdns/recursordist/syncres.cc:607,1
    - Dst: push_back
      Src: /src/pdns/pdns/recursordist/syncres.cc:614,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/syncres.cc:617,1
    - Dst: emplace
      Src: /src/pdns/pdns/recursordist/syncres.cc:621,1
    - Dst: SyncRes::addAdditionals
      Src: /src/pdns/pdns/recursordist/syncres.cc:623,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 41
    argCount: 8
    argNames:
    - qtype
    - ' start'
    - ' additionals'
    - ' uniqueCalls'
    - ' uniqueResults'
    - depth
    - additionaldepth
    - ' additionalsNotInCache'
    argTypes:
    - QType
    - vector<DNSRecord>
    - vector<DNSRecord>
    - std::set<std::pair<DNSName, QType>>
    - std::set<std::tuple<DNSName, QType, QType>>
    - unsigned int
    - unsigned
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 627
      start: 563
    functionDepth: 3
    functionLinenumber: 563
    functionLinenumberEnd: 627
    functionName: SyncRes::addAdditionals
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 1
    functionsReached:
    - std::vector::end
    - SyncRes::resolveAdditionals
    - getRR
    - SyncRes::addAdditionals
    - count
    - std::vector::begin
    - push_back
    - auto::allowAdditionalQTypes::find
    - auto::allowAdditionalQTypes::end
    - QType
    - getLocal
    - std::vector::erase
    - std::vector::empty
    - empty
    - std::tuple
    - allowAdditionalEntry
    - emplace
    linkageType: ''
    returnType: void
    signature: void SyncRes::addAdditionals(QType qtype, const vector<DNSRecord>&
      start, vector<DNSRecord>& additionals, std::set<std::pair<DNSName, QType>>&
      uniqueCalls, std::set<std::tuple<DNSName, QType, QType>>& uniqueResults, unsigned
      int depth, unsigned additionaldepth, bool& additionalsNotInCache)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SyncRes::addAdditionals
      Src: /src/pdns/pdns/recursordist/syncres.cc:643,1
    - Dst: push_back
      Src: /src/pdns/pdns/recursordist/syncres.cc:647,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/syncres.cc:647,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - qtype
    - ' ret'
    - depth
    argTypes:
    - QType
    - vector<DNSRecord>
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 650
      start: 630
    functionDepth: 1
    functionLinenumber: 630
    functionLinenumberEnd: 650
    functionName: SyncRes::addAdditionals
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 2
    functionsReached:
    - push_back
    - std::move
    - SyncRes::addAdditionals
    linkageType: ''
    returnType: bool
    signature: bool SyncRes::addAdditionals(QType qtype, vector<DNSRecord>& ret, unsigned
      int depth)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: add
      Src: /src/pdns/pdns/recursordist/syncres.cc:655,1
    - Dst: setParent
      Src: /src/pdns/pdns/recursordist/syncres.cc:656,1
    - Dst: clear
      Src: /src/pdns/pdns/recursordist/syncres.cc:661,1
    - Dst: SyncRes::doSpecialNamesResolve
      Src: /src/pdns/pdns/recursordist/syncres.cc:663,1
    - Dst: SyncRes::isUnsupported
      Src: /src/pdns/pdns/recursordist/syncres.cc:668,1
    - Dst: clear
      Src: /src/pdns/pdns/recursordist/syncres.cc:683,1
    - Dst: SyncRes::doResolve
      Src: /src/pdns/pdns/recursordist/syncres.cc:688,1
    - Dst: SyncRes::shouldValidate
      Src: /src/pdns/pdns/recursordist/syncres.cc:692,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/syncres.cc:694,1
    - Dst: getLocal
      Src: /src/pdns/pdns/recursordist/syncres.cc:696,1
    - Dst: auto::check
      Src: /src/pdns/pdns/recursordist/syncres.cc:697,1
    - Dst: increaseXDNSSECStateCounter
      Src: /src/pdns/pdns/recursordist/syncres.cc:698,1
    - Dst: increaseDNSSECStateCounter
      Src: /src/pdns/pdns/recursordist/syncres.cc:701,1
    - Dst: getLocal
      Src: /src/pdns/pdns/recursordist/syncres.cc:706,1
    - Dst: auto::allowAdditionalQTypes::find
      Src: /src/pdns/pdns/recursordist/syncres.cc:707,1
    - Dst: auto::allowAdditionalQTypes::end
      Src: /src/pdns/pdns/recursordist/syncres.cc:707,1
    - Dst: SyncRes::addAdditionals
      Src: /src/pdns/pdns/recursordist/syncres.cc:708,1
    - Dst: RecEventTrace::EventScope::close
      Src: /src/pdns/pdns/recursordist/syncres.cc:713,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 41
    argCount: 5
    argNames:
    - ' qname'
    - qtype
    - qclass
    - ' ret'
    - depth
    argTypes:
    - DNSName
    - QType
    - QClass
    - vector<DNSRecord>
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 715
      start: 653
    functionDepth: 4
    functionLinenumber: 653
    functionLinenumberEnd: 715
    functionName: SyncRes::beginResolve
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 1
    functionsReached:
    - add
    - SyncRes::addAdditionals
    - setParent
    - auto::allowAdditionalQTypes::find
    - SyncRes::isUnsupported
    - auto::allowAdditionalQTypes::end
    - increaseXDNSSECStateCounter
    - auto::check
    - getLocal
    - SyncRes::doSpecialNamesResolve
    - increaseDNSSECStateCounter
    - SyncRes::doResolve
    - clear
    - RecEventTrace::EventScope::close
    - at
    - SyncRes::shouldValidate
    linkageType: ''
    returnType: int
    signature: int SyncRes::beginResolve(const DNSName& qname, const QType qtype,
      QClass qclass, vector<DNSRecord>& ret, unsigned int depth)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: vector::emplace_back
      Src: /src/pdns/pdns/recursordist/syncres.cc:749,1
    - Dst: isPartOf
      Src: /src/pdns/pdns/recursordist/syncres.cc:753,1
    - Dst: vector::emplace_back
      Src: /src/pdns/pdns/recursordist/syncres.cc:756,1
    - Dst: vector::emplace_back
      Src: /src/pdns/pdns/recursordist/syncres.cc:759,1
    - Dst: vector::emplace_back
      Src: /src/pdns/pdns/recursordist/syncres.cc:767,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/syncres.cc:767,1
    - Dst: vector::emplace_back
      Src: /src/pdns/pdns/recursordist/syncres.cc:770,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/syncres.cc:775,1
    - Dst: getLocal
      Src: /src/pdns/pdns/recursordist/syncres.cc:778,1
    - Dst: first::toString
      Src: /src/pdns/pdns/recursordist/syncres.cc:782,1
    - Dst: vector::emplace_back
      Src: /src/pdns/pdns/recursordist/syncres.cc:788,1
    - Dst: ostringstream::str
      Src: /src/pdns/pdns/recursordist/syncres.cc:788,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/syncres.cc:794,1
    - Dst: getLocal
      Src: /src/pdns/pdns/recursordist/syncres.cc:797,1
    - Dst: first::toString
      Src: /src/pdns/pdns/recursordist/syncres.cc:801,1
    - Dst: second::length
      Src: /src/pdns/pdns/recursordist/syncres.cc:802,1
    - Dst: txtEscape
      Src: /src/pdns/pdns/recursordist/syncres.cc:803,1
    - Dst: vector::emplace_back
      Src: /src/pdns/pdns/recursordist/syncres.cc:806,1
    - Dst: ostringstream::str
      Src: /src/pdns/pdns/recursordist/syncres.cc:806,1
    - Dst: vector::empty
      Src: /src/pdns/pdns/recursordist/syncres.cc:812,1
    - Dst: clear
      Src: /src/pdns/pdns/recursordist/syncres.cc:813,1
    - Dst: DNSRecord::DNSRecord
      Src: /src/pdns/pdns/recursordist/syncres.cc:816,1
    - Dst: DNSRecord::setContent
      Src: /src/pdns/pdns/recursordist/syncres.cc:823,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/recursordist/syncres.cc:823,1
    - Dst: push_back
      Src: /src/pdns/pdns/recursordist/syncres.cc:824,1
    CyclomaticComplexity: 37
    EdgeCount: 37
    ICount: 68
    argCount: 4
    argNames:
    - ' qname'
    - qtype
    - qclass
    - ' ret'
    argTypes:
    - DNSName
    - QType
    - QClass
    - vector<DNSRecord>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 829
      start: 732
    functionDepth: 1
    functionLinenumber: 732
    functionLinenumberEnd: 829
    functionName: SyncRes::doSpecialNamesResolve
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 1
    functionsReached:
    - isPartOf
    - DNSRecord::DNSRecord
    - push_back
    - second::length
    - txtEscape
    - getLocal
    - vector::empty
    - ostringstream::str
    - first::toString
    - DNSRecordContent::make
    - vector::emplace_back
    - DNSRecord::setContent
    - clear
    - arg
    linkageType: ''
    returnType: bool
    signature: bool SyncRes::doSpecialNamesResolve(const DNSName& qname, const QType
      qtype, const QClass qclass, vector<DNSRecord>& ret)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: find
      Src: /src/pdns/pdns/recursordist/syncres.cc:834,1
    - Dst: std::tuple
      Src: /src/pdns/pdns/recursordist/syncres.cc:834,1
    - Dst: getName
      Src: /src/pdns/pdns/recursordist/syncres.cc:834,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/syncres.cc:835,1
    - Dst: push_back
      Src: /src/pdns/pdns/recursordist/syncres.cc:838,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/syncres.cc:838,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ' records'
    argTypes:
    - std::vector<DNSRecord>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 840
      start: 832
    functionDepth: 0
    functionLinenumber: 832
    functionLinenumberEnd: 840
    functionName: SyncRes::AuthDomain::addSOA(std::vector<DNSRecord>& records) const
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 0
    functionsReached:
    - std::move
    - getName
    - push_back
    - end
    - std::tuple
    - find
    linkageType: ''
    returnType: void
    signature: void SyncRes::AuthDomain::addSOA(std::vector<DNSRecord>& records) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 2
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - AuthDomain
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 848
      start: 842
    functionDepth: 0
    functionLinenumber: 842
    functionLinenumberEnd: 848
    functionName: SyncRes::AuthDomain::operator==(const AuthDomain& rhs) const
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool SyncRes::AuthDomain::operator==(const AuthDomain& rhs) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: print
      Src: /src/pdns/pdns/recursordist/syncres.cc:862,1
    - Dst: toString
      Src: /src/pdns/pdns/recursordist/syncres.cc:868,1
    - Dst: std::stringstream::str
      Src: /src/pdns/pdns/recursordist/syncres.cc:871,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 2
    argNames:
    - ' indent'
    - ' indentLevel'
    argTypes:
    - std::string
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 872
      start: 850
    functionDepth: 0
    functionLinenumber: 850
    functionLinenumberEnd: 872
    functionName: "SyncRes::AuthDomain::print(const std::string& indent,\n                                                     const
      std::string& indentLevel) const"
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 0
    functionsReached:
    - std::stringstream::str
    - toString
    - print
    linkageType: ''
    returnType: std::string
    signature: "std::string SyncRes::AuthDomain::print(const std::string& indent,\n
      \                                                    const std::string& indentLevel)
      const"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: clear
      Src: /src/pdns/pdns/recursordist/syncres.cc:877,1
    - Dst: equal_range
      Src: /src/pdns/pdns/recursordist/syncres.cc:880,1
    - Dst: std::tie
      Src: /src/pdns/pdns/recursordist/syncres.cc:880,1
    - Dst: push_back
      Src: /src/pdns/pdns/recursordist/syncres.cc:890,1
    - Dst: SyncRes::AuthDomain::records_t::const_iterator::d_name::countLabels
      Src: /src/pdns/pdns/recursordist/syncres.cc:892,1
    - Dst: getName
      Src: /src/pdns/pdns/recursordist/syncres.cc:892,1
    - Dst: push_back
      Src: /src/pdns/pdns/recursordist/syncres.cc:896,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/syncres.cc:896,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/syncres.cc:900,1
    - Dst: addSOA
      Src: /src/pdns/pdns/recursordist/syncres.cc:907,1
    - Dst: getName
      Src: /src/pdns/pdns/recursordist/syncres.cc:913,1
    - Dst: DNSName::chopOff
      Src: /src/pdns/pdns/recursordist/syncres.cc:913,1
    - Dst: equal_range
      Src: /src/pdns/pdns/recursordist/syncres.cc:914,1
    - Dst: std::tuple
      Src: /src/pdns/pdns/recursordist/syncres.cc:914,1
    - Dst: push_back
      Src: /src/pdns/pdns/recursordist/syncres.cc:924,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/syncres.cc:924,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/syncres.cc:928,1
    - Dst: addSOA
      Src: /src/pdns/pdns/recursordist/syncres.cc:929,1
    - Dst: DNSName::chopOff
      Src: /src/pdns/pdns/recursordist/syncres.cc:937,1
    - Dst: getName
      Src: /src/pdns/pdns/recursordist/syncres.cc:937,1
    - Dst: equal_range
      Src: /src/pdns/pdns/recursordist/syncres.cc:938,1
    - Dst: std::tuple
      Src: /src/pdns/pdns/recursordist/syncres.cc:938,1
    - Dst: push_back
      Src: /src/pdns/pdns/recursordist/syncres.cc:945,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/syncres.cc:945,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/syncres.cc:949,1
    - Dst: addSOA
      Src: /src/pdns/pdns/recursordist/syncres.cc:950,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 51
    argCount: 3
    argNames:
    - ' qname'
    - qtype
    - ' records'
    argTypes:
    - DNSName
    - QType
    - std::vector<DNSRecord>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 955
      start: 874
    functionDepth: 1
    functionLinenumber: 874
    functionLinenumberEnd: 955
    functionName: SyncRes::AuthDomain::getRecords(const DNSName& qname, const QType
      qtype, std::vector<DNSRecord>& records) const
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 0
    functionsReached:
    - std::move
    - getName
    - DNSName::chopOff
    - push_back
    - equal_range
    - SyncRes::AuthDomain::records_t::const_iterator::d_name::countLabels
    - addSOA
    - empty
    - std::tie
    - clear
    - std::tuple
    linkageType: ''
    returnType: int
    signature: int SyncRes::AuthDomain::getRecords(const DNSName& qname, const QType
      qtype, std::vector<DNSRecord>& records) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: at
      Src: /src/pdns/pdns/recursordist/syncres.cc:960,1
    - Dst: getRecords
      Src: /src/pdns/pdns/recursordist/syncres.cc:962,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 5
    argNames:
    - ' domain'
    - ' qname'
    - qtype
    - ' ret'
    - ' res'
    argTypes:
    - AuthDomain
    - DNSName
    - QType
    - vector<DNSRecord>
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 964
      start: 957
    functionDepth: 1
    functionLinenumber: 957
    functionLinenumberEnd: 964
    functionName: SyncRes::doOOBResolve
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 0
    functionsReached:
    - getRecords
    - at
    linkageType: ''
    returnType: bool
    signature: bool SyncRes::doOOBResolve(const AuthDomain& domain, const DNSName&
      qname, const QType qtype, vector<DNSRecord>& ret, int& res)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SyncRes::getBestAuthZone
      Src: /src/pdns/pdns/recursordist/syncres.cc:969,1
    - Dst: domainmap::end
      Src: /src/pdns/pdns/recursordist/syncres.cc:970,1
    - Dst: auto::second::isAuth
      Src: /src/pdns/pdns/recursordist/syncres.cc:970,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:971,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:975,1
    - Dst: SyncRes::doOOBResolve
      Src: /src/pdns/pdns/recursordist/syncres.cc:976,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 5
    argNames:
    - ' qname'
    - qtype
    - ' ret'
    - ' prefix'
    - ' res'
    argTypes:
    - DNSName
    - QType
    - vector<DNSRecord>
    - string
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 977
      start: 966
    functionDepth: 1
    functionLinenumber: 966
    functionLinenumberEnd: 977
    functionName: SyncRes::doOOBResolve
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 1
    functionsReached:
    - SyncRes::doOOBResolve
    - domainmap::end
    - SyncRes::getBestAuthZone
    - auto::second::isAuth
    - LOG
    linkageType: ''
    returnType: bool
    signature: bool SyncRes::doOOBResolve(const DNSName& qname, const QType qtype,
      vector<DNSRecord>& ret, unsigned int /* depth */, const string& prefix, int&
      res)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SyncRes::getBestAuthZone
      Src: /src/pdns/pdns/recursordist/syncres.cc:982,1
    - Dst: domainmap::end
      Src: /src/pdns/pdns/recursordist/syncres.cc:983,1
    - Dst: auto::second::isAuth
      Src: /src/pdns/pdns/recursordist/syncres.cc:983,1
    - Dst: auto::second::shouldRecurse
      Src: /src/pdns/pdns/recursordist/syncres.cc:983,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 2
    argCount: 1
    argNames:
    - ' qname'
    argTypes:
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 984
      start: 979
    functionDepth: 1
    functionLinenumber: 979
    functionLinenumberEnd: 984
    functionName: SyncRes::isRecursiveForwardOrAuth
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 0
    functionsReached:
    - SyncRes::getBestAuthZone
    - auto::second::isAuth
    - auto::second::shouldRecurse
    - domainmap::end
    linkageType: ''
    returnType: bool
    signature: bool SyncRes::isRecursiveForwardOrAuth(const DNSName& qname)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SyncRes::getBestAuthZone
      Src: /src/pdns/pdns/recursordist/syncres.cc:989,1
    - Dst: domainmap::end
      Src: /src/pdns/pdns/recursordist/syncres.cc:990,1
    - Dst: auto::second::shouldRecurse
      Src: /src/pdns/pdns/recursordist/syncres.cc:990,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - ' qname'
    argTypes:
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 991
      start: 986
    functionDepth: 1
    functionLinenumber: 986
    functionLinenumberEnd: 991
    functionName: SyncRes::isRecursiveForward
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 0
    functionsReached:
    - SyncRes::getBestAuthZone
    - auto::second::shouldRecurse
    - domainmap::end
    linkageType: ''
    returnType: bool
    signature: bool SyncRes::isRecursiveForward(const DNSName& qname)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SyncRes::getBestAuthZone
      Src: /src/pdns/pdns/recursordist/syncres.cc:996,1
    - Dst: domainmap::end
      Src: /src/pdns/pdns/recursordist/syncres.cc:997,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' qname'
    argTypes:
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 998
      start: 993
    functionDepth: 1
    functionLinenumber: 993
    functionLinenumberEnd: 998
    functionName: SyncRes::isForwardOrAuth
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 0
    functionsReached:
    - SyncRes::getBestAuthZone
    - domainmap::end
    linkageType: ''
    returnType: bool
    signature: bool SyncRes::isForwardOrAuth(const DNSName& qname)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strftime
      Src: /src/pdns/pdns/recursordist/syncres.cc:1004,1
    - Dst: data
      Src: /src/pdns/pdns/recursordist/syncres.cc:1004,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/syncres.cc:1004,1
    - Dst: std::string::c_str
      Src: /src/pdns/pdns/recursordist/syncres.cc:1004,1
    - Dst: localtime_r
      Src: /src/pdns/pdns/recursordist/syncres.cc:1004,1
    - Dst: snprintf
      Src: /src/pdns/pdns/recursordist/syncres.cc:1006,1
    - Dst: data
      Src: /src/pdns/pdns/recursordist/syncres.cc:1006,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/syncres.cc:1006,1
    - Dst: static_cast<long long>
      Src: /src/pdns/pdns/recursordist/syncres.cc:1006,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/recursordist/syncres.cc:1007,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/syncres.cc:1007,1
    - Dst: data
      Src: /src/pdns/pdns/recursordist/syncres.cc:1009,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/syncres.cc:1014,1
    - Dst: snprintf
      Src: /src/pdns/pdns/recursordist/syncres.cc:1015,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/syncres.cc:1015,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/syncres.cc:1015,1
    - Dst: static_cast<long>
      Src: /src/pdns/pdns/recursordist/syncres.cc:1015,1
    - Dst: data
      Src: /src/pdns/pdns/recursordist/syncres.cc:1017,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 2
    argNames:
    - ' tval'
    - ' buf'
    argTypes:
    - struct timeval
    - timebuf_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1018
      start: 1000
    functionDepth: 0
    functionLinenumber: 1000
    functionLinenumberEnd: 1018
    functionName: isoDateTimeMillis
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 1
    functionsReached:
    - static_cast<size_t>
    - snprintf
    - localtime_r
    - std::string::c_str
    - static_cast<long long>
    - size
    - static_cast<long>
    - data
    - strftime
    - at
    linkageType: ''
    returnType: char
    signature: char * isoDateTimeMillis(const struct timeval& tval, timebuf_t& buf)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1029
      start: 1026
    functionDepth: 0
    functionLinenumber: 1026
    functionLinenumberEnd: 1029
    functionName: getMap
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 18
    functionsReached: []
    linkageType: ''
    returnType: ednsstatus_t
    signature: ednsstatus_t getMap() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: modify
      Src: /src/pdns/pdns/recursordist/syncres.cc:1034,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 4
    argNames:
    - ' ind'
    - iter
    - mode
    - theTime
    argTypes:
    - index<ComboAddress>::type
    - iterator
    - SyncRes::EDNSStatus::EDNSMode
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1036
      start: 1031
    functionDepth: 0
    functionLinenumber: 1031
    functionLinenumberEnd: 1036
    functionName: setMode
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 0
    functionsReached:
    - modify
    linkageType: ''
    returnType: void
    signature: void setMode(index<ComboAddress>::type& ind, iterator iter, SyncRes::EDNSStatus::EDNSMode
      mode, time_t theTime)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: get
      Src: /src/pdns/pdns/recursordist/syncres.cc:1040,1
    - Dst: erase
      Src: /src/pdns/pdns/recursordist/syncres.cc:1041,1
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/syncres.cc:1041,1
    - Dst: upper_bound
      Src: /src/pdns/pdns/recursordist/syncres.cc:1041,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - now
    argTypes:
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1042
      start: 1038
    functionDepth: 0
    functionLinenumber: 1038
    functionLinenumberEnd: 1042
    functionName: prune
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 1
    functionsReached:
    - begin
    - upper_bound
    - erase
    - get
    linkageType: ''
    returnType: void
    signature: void prune(time_t now)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/syncres.cc:1051,1
    - Dst: auto::find
      Src: /src/pdns/pdns/recursordist/syncres.cc:1052,1
    - Dst: auto::end
      Src: /src/pdns/pdns/recursordist/syncres.cc:1053,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ' server'
    argTypes:
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1057
      start: 1049
    functionDepth: 0
    functionLinenumber: 1049
    functionLinenumberEnd: 1057
    functionName: SyncRes::getEDNSStatus
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 7
    functionsReached:
    - auto::end
    - auto::find
    - lock
    linkageType: ''
    returnType: SyncRes::EDNSStatus::EDNSMode
    signature: SyncRes::EDNSStatus::EDNSMode SyncRes::getEDNSStatus(const ComboAddress&
      server)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/syncres.cc:1061,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1062
      start: 1059
    functionDepth: 0
    functionLinenumber: 1059
    functionLinenumberEnd: 1062
    functionName: SyncRes::getEDNSStatusesSize
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 3
    functionsReached:
    - lock
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t SyncRes::getEDNSStatusesSize()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/syncres.cc:1066,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1067
      start: 1064
    functionDepth: 0
    functionLinenumber: 1064
    functionLinenumberEnd: 1067
    functionName: SyncRes::clearEDNSStatuses
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 0
    functionsReached:
    - lock
    linkageType: ''
    returnType: void
    signature: void SyncRes::clearEDNSStatuses()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/syncres.cc:1071,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - cutoff
    argTypes:
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1072
      start: 1069
    functionDepth: 0
    functionLinenumber: 1069
    functionLinenumberEnd: 1072
    functionName: SyncRes::pruneEDNSStatuses
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 1
    functionsReached:
    - lock
    linkageType: ''
    returnType: void
    signature: void SyncRes::pruneEDNSStatuses(time_t cutoff)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dup
      Src: /src/pdns/pdns/recursordist/syncres.cc:1076,1
    - Dst: pdns::UniqueFilePtr
      Src: /src/pdns/pdns/recursordist/syncres.cc:1080,1
    - Dst: fdopen
      Src: /src/pdns/pdns/recursordist/syncres.cc:1080,1
    - Dst: close
      Src: /src/pdns/pdns/recursordist/syncres.cc:1082,1
    - Dst: fprintf
      Src: /src/pdns/pdns/recursordist/syncres.cc:1087,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/syncres.cc:1087,1
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/syncres.cc:1088,1
    - Dst: fprintf
      Src: /src/pdns/pdns/recursordist/syncres.cc:1092,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/syncres.cc:1092,1
    - Dst: address::toString
      Src: /src/pdns/pdns/recursordist/syncres.cc:1092,1
    - Dst: SyncRes::toString
      Src: /src/pdns/pdns/recursordist/syncres.cc:1092,1
    - Dst: timestamp
      Src: /src/pdns/pdns/recursordist/syncres.cc:1092,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 1
    argNames:
    - fileDesc
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1095
      start: 1074
    functionDepth: 0
    functionLinenumber: 1074
    functionLinenumberEnd: 1095
    functionName: SyncRes::doEDNSDump
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 1
    functionsReached:
    - fprintf
    - auto::get
    - timestamp
    - dup
    - lock
    - SyncRes::toString
    - address::toString
    - pdns::UniqueFilePtr
    - fdopen
    - close
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t SyncRes::doEDNSDump(int fileDesc)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/syncres.cc:1099,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/syncres.cc:1100,1
    - Dst: erase
      Src: /src/pdns/pdns/recursordist/syncres.cc:1101,1
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/syncres.cc:1101,1
    - Dst: upper_bound
      Src: /src/pdns/pdns/recursordist/syncres.cc:1101,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - limit
    argTypes:
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1102
      start: 1097
    functionDepth: 0
    functionLinenumber: 1097
    functionLinenumberEnd: 1102
    functionName: SyncRes::pruneNSSpeeds
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 1
    functionsReached:
    - auto::get
    - lock
    - begin
    - upper_bound
    - erase
    linkageType: ''
    returnType: void
    signature: void SyncRes::pruneNSSpeeds(time_t limit)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/syncres.cc:1106,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1107
      start: 1104
    functionDepth: 0
    functionLinenumber: 1104
    functionLinenumberEnd: 1107
    functionName: SyncRes::getNSSpeedsSize
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 1
    functionsReached:
    - lock
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t SyncRes::getNSSpeedsSize()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/syncres.cc:1111,1
    - Dst: auto::find_or_enter
      Src: /src/pdns/pdns/recursordist/syncres.cc:1112,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - ' server'
    - ' address'
    - usec
    - ' now'
    argTypes:
    - DNSName
    - ComboAddress
    - int
    - struct timeval
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1113
      start: 1109
    functionDepth: 0
    functionLinenumber: 1109
    functionLinenumberEnd: 1113
    functionName: SyncRes::submitNSSpeed
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 0
    functionsReached:
    - auto::find_or_enter
    - lock
    linkageType: ''
    returnType: void
    signature: void SyncRes::submitNSSpeed(const DNSName& server, const ComboAddress&
      address, int usec, const struct timeval& now)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/syncres.cc:1117,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1118
      start: 1115
    functionDepth: 0
    functionLinenumber: 1115
    functionLinenumberEnd: 1118
    functionName: SyncRes::clearNSSpeeds
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 0
    functionsReached:
    - lock
    linkageType: ''
    returnType: void
    signature: void SyncRes::clearNSSpeeds()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/syncres.cc:1122,1
    - Dst: auto::find_or_enter
      Src: /src/pdns/pdns/recursordist/syncres.cc:1123,1
    - Dst: peek
      Src: /src/pdns/pdns/recursordist/syncres.cc:1123,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' server'
    - ' address'
    argTypes:
    - DNSName
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1124
      start: 1120
    functionDepth: 0
    functionLinenumber: 1120
    functionLinenumberEnd: 1124
    functionName: SyncRes::getNSSpeed
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 6
    functionsReached:
    - auto::find_or_enter
    - peek
    - lock
    linkageType: ''
    returnType: float
    signature: float SyncRes::getNSSpeed(const DNSName& server, const ComboAddress&
      address)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dup
      Src: /src/pdns/pdns/recursordist/syncres.cc:1128,1
    - Dst: pdns::UniqueFilePtr
      Src: /src/pdns/pdns/recursordist/syncres.cc:1132,1
    - Dst: fdopen
      Src: /src/pdns/pdns/recursordist/syncres.cc:1132,1
    - Dst: close
      Src: /src/pdns/pdns/recursordist/syncres.cc:1134,1
    - Dst: fprintf
      Src: /src/pdns/pdns/recursordist/syncres.cc:1138,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/syncres.cc:1138,1
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/syncres.cc:1142,1
    - Dst: fprintf
      Src: /src/pdns/pdns/recursordist/syncres.cc:1147,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/syncres.cc:1147,1
    - Dst: d_name::toLogString
      Src: /src/pdns/pdns/recursordist/syncres.cc:1147,1
    - Dst: isoDateTimeMillis
      Src: /src/pdns/pdns/recursordist/syncres.cc:1147,1
    - Dst: fprintf
      Src: /src/pdns/pdns/recursordist/syncres.cc:1150,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/syncres.cc:1150,1
    - Dst: first::toStringWithPortExcept
      Src: /src/pdns/pdns/recursordist/syncres.cc:1150,1
    - Dst: second::peek
      Src: /src/pdns/pdns/recursordist/syncres.cc:1150,1
    - Dst: static_cast<float>
      Src: /src/pdns/pdns/recursordist/syncres.cc:1150,1
    - Dst: second::last
      Src: /src/pdns/pdns/recursordist/syncres.cc:1150,1
    - Dst: fprintf
      Src: /src/pdns/pdns/recursordist/syncres.cc:1153,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/syncres.cc:1153,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 1
    argNames:
    - fileDesc
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1156
      start: 1126
    functionDepth: 1
    functionLinenumber: 1126
    functionLinenumberEnd: 1156
    functionName: SyncRes::doDumpNSSpeeds
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 1
    functionsReached:
    - fprintf
    - auto::get
    - isoDateTimeMillis
    - first::toStringWithPortExcept
    - second::last
    - second::peek
    - d_name::toLogString
    - dup
    - lock
    - static_cast<float>
    - pdns::UniqueFilePtr
    - fdopen
    - close
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t SyncRes::doDumpNSSpeeds(int fileDesc)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/syncres.cc:1160,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1161
      start: 1158
    functionDepth: 0
    functionLinenumber: 1158
    functionLinenumberEnd: 1161
    functionName: SyncRes::getThrottledServersSize
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 1
    functionsReached:
    - lock
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t SyncRes::getThrottledServersSize()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/syncres.cc:1165,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - now
    argTypes:
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1166
      start: 1163
    functionDepth: 0
    functionLinenumber: 1163
    functionLinenumberEnd: 1166
    functionName: SyncRes::pruneThrottledServers
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 1
    functionsReached:
    - lock
    linkageType: ''
    returnType: void
    signature: void SyncRes::pruneThrottledServers(time_t now)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/syncres.cc:1170,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1171
      start: 1168
    functionDepth: 0
    functionLinenumber: 1168
    functionLinenumberEnd: 1171
    functionName: SyncRes::clearThrottle
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 0
    functionsReached:
    - lock
    linkageType: ''
    returnType: void
    signature: void SyncRes::clearThrottle()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/syncres.cc:1175,1
    - Dst: std::tuple
      Src: /src/pdns/pdns/recursordist/syncres.cc:1175,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - now
    - ' server'
    - ' target'
    - qtype
    argTypes:
    - time_t
    - ComboAddress
    - DNSName
    - QType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1176
      start: 1173
    functionDepth: 0
    functionLinenumber: 1173
    functionLinenumberEnd: 1176
    functionName: SyncRes::isThrottled
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 9
    functionsReached:
    - std::tuple
    - lock
    linkageType: ''
    returnType: bool
    signature: bool SyncRes::isThrottled(time_t now, const ComboAddress& server, const
      DNSName& target, QType qtype)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/syncres.cc:1180,1
    - Dst: std::tuple
      Src: /src/pdns/pdns/recursordist/syncres.cc:1180,1
    - Dst: dns_random
      Src: /src/pdns/pdns/recursordist/syncres.cc:1184,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 2
    argNames:
    - now
    - ' server'
    argTypes:
    - time_t
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1189
      start: 1178
    functionDepth: 0
    functionLinenumber: 1178
    functionLinenumberEnd: 1189
    functionName: SyncRes::isThrottled
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 9
    functionsReached:
    - std::tuple
    - dns_random
    - lock
    linkageType: ''
    returnType: bool
    signature: bool SyncRes::isThrottled(time_t now, const ComboAddress& server)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/syncres.cc:1193,1
    - Dst: std::tuple
      Src: /src/pdns/pdns/recursordist/syncres.cc:1193,1
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/syncres.cc:1194,1
    - Dst: std::tuple
      Src: /src/pdns/pdns/recursordist/syncres.cc:1194,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - ' server'
    - ' name'
    - qtype
    argTypes:
    - ComboAddress
    - DNSName
    - QType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1195
      start: 1191
    functionDepth: 0
    functionLinenumber: 1191
    functionLinenumberEnd: 1195
    functionName: SyncRes::unThrottle
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 0
    functionsReached:
    - std::tuple
    - lock
    linkageType: ''
    returnType: void
    signature: void SyncRes::unThrottle(const ComboAddress& server, const DNSName&
      name, QType qtype)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/syncres.cc:1199,1
    - Dst: std::tuple
      Src: /src/pdns/pdns/recursordist/syncres.cc:1199,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - now
    - ' server'
    - duration
    - tries
    - reason
    argTypes:
    - time_t
    - ComboAddress
    - time_t
    - unsigned int
    - Throttle::Reason
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1200
      start: 1197
    functionDepth: 0
    functionLinenumber: 1197
    functionLinenumberEnd: 1200
    functionName: SyncRes::doThrottle
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 0
    functionsReached:
    - std::tuple
    - lock
    linkageType: ''
    returnType: void
    signature: void SyncRes::doThrottle(time_t now, const ComboAddress& server, time_t
      duration, unsigned int tries, Throttle::Reason reason)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/syncres.cc:1204,1
    - Dst: std::tuple
      Src: /src/pdns/pdns/recursordist/syncres.cc:1204,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 7
    argNames:
    - now
    - ' server'
    - ' name'
    - qtype
    - duration
    - tries
    - reason
    argTypes:
    - time_t
    - ComboAddress
    - DNSName
    - QType
    - time_t
    - unsigned int
    - Throttle::Reason
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1205
      start: 1202
    functionDepth: 0
    functionLinenumber: 1202
    functionLinenumberEnd: 1205
    functionName: SyncRes::doThrottle
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 0
    functionsReached:
    - std::tuple
    - lock
    linkageType: ''
    returnType: void
    signature: void SyncRes::doThrottle(time_t now, const ComboAddress& server, const
      DNSName& name, QType qtype, time_t duration, unsigned int tries, Throttle::Reason
      reason)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dup
      Src: /src/pdns/pdns/recursordist/syncres.cc:1209,1
    - Dst: pdns::UniqueFilePtr
      Src: /src/pdns/pdns/recursordist/syncres.cc:1213,1
    - Dst: fdopen
      Src: /src/pdns/pdns/recursordist/syncres.cc:1213,1
    - Dst: close
      Src: /src/pdns/pdns/recursordist/syncres.cc:1215,1
    - Dst: fprintf
      Src: /src/pdns/pdns/recursordist/syncres.cc:1218,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/syncres.cc:1218,1
    - Dst: fprintf
      Src: /src/pdns/pdns/recursordist/syncres.cc:1219,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/syncres.cc:1219,1
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/syncres.cc:1223,1
    - Dst: fprintf
      Src: /src/pdns/pdns/recursordist/syncres.cc:1228,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/syncres.cc:1228,1
    - Dst: std::get<0>
      Src: /src/pdns/pdns/recursordist/syncres.cc:1228,1
    - Dst: std::get<1>
      Src: /src/pdns/pdns/recursordist/syncres.cc:1228,1
    - Dst: std::get<2>
      Src: /src/pdns/pdns/recursordist/syncres.cc:1228,1
    - Dst: timestamp
      Src: /src/pdns/pdns/recursordist/syncres.cc:1228,1
    - Dst: Throttle::toString
      Src: /src/pdns/pdns/recursordist/syncres.cc:1228,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 1
    argNames:
    - fileDesc
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1232
      start: 1207
    functionDepth: 0
    functionLinenumber: 1207
    functionLinenumberEnd: 1232
    functionName: SyncRes::doDumpThrottleMap
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 1
    functionsReached:
    - fprintf
    - auto::get
    - timestamp
    - std::get<2>
    - std::get<0>
    - std::get<1>
    - dup
    - lock
    - Throttle::toString
    - pdns::UniqueFilePtr
    - fdopen
    - close
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t SyncRes::doDumpThrottleMap(int fileDesc)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/syncres.cc:1236,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1237
      start: 1234
    functionDepth: 0
    functionLinenumber: 1234
    functionLinenumberEnd: 1237
    functionName: SyncRes::getFailedServersSize
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 1
    functionsReached:
    - lock
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t SyncRes::getFailedServersSize()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/syncres.cc:1241,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1242
      start: 1239
    functionDepth: 0
    functionLinenumber: 1239
    functionLinenumberEnd: 1242
    functionName: SyncRes::clearFailedServers
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 0
    functionsReached:
    - lock
    linkageType: ''
    returnType: void
    signature: void SyncRes::clearFailedServers()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/syncres.cc:1246,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - cutoff
    argTypes:
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1247
      start: 1244
    functionDepth: 0
    functionLinenumber: 1244
    functionLinenumberEnd: 1247
    functionName: SyncRes::pruneFailedServers
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 1
    functionsReached:
    - lock
    linkageType: ''
    returnType: void
    signature: void SyncRes::pruneFailedServers(time_t cutoff)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/syncres.cc:1251,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' server'
    argTypes:
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1252
      start: 1249
    functionDepth: 0
    functionLinenumber: 1249
    functionLinenumberEnd: 1252
    functionName: SyncRes::getServerFailsCount
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 4
    functionsReached:
    - lock
    linkageType: ''
    returnType: unsigned long
    signature: unsigned long SyncRes::getServerFailsCount(const ComboAddress& server)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dup
      Src: /src/pdns/pdns/recursordist/syncres.cc:1256,1
    - Dst: pdns::UniqueFilePtr
      Src: /src/pdns/pdns/recursordist/syncres.cc:1260,1
    - Dst: fdopen
      Src: /src/pdns/pdns/recursordist/syncres.cc:1260,1
    - Dst: close
      Src: /src/pdns/pdns/recursordist/syncres.cc:1262,1
    - Dst: fprintf
      Src: /src/pdns/pdns/recursordist/syncres.cc:1265,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/syncres.cc:1265,1
    - Dst: fprintf
      Src: /src/pdns/pdns/recursordist/syncres.cc:1266,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/syncres.cc:1266,1
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/syncres.cc:1270,1
    - Dst: fprintf
      Src: /src/pdns/pdns/recursordist/syncres.cc:1273,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/syncres.cc:1273,1
    - Dst: key::toString
      Src: /src/pdns/pdns/recursordist/syncres.cc:1273,1
    - Dst: timestamp
      Src: /src/pdns/pdns/recursordist/syncres.cc:1273,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 1
    argNames:
    - fileDesc
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1277
      start: 1254
    functionDepth: 0
    functionLinenumber: 1254
    functionLinenumberEnd: 1277
    functionName: SyncRes::doDumpFailedServers
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 1
    functionsReached:
    - fprintf
    - auto::get
    - timestamp
    - dup
    - lock
    - pdns::UniqueFilePtr
    - fdopen
    - key::toString
    - close
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t SyncRes::doDumpFailedServers(int fileDesc)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/syncres.cc:1281,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1282
      start: 1279
    functionDepth: 0
    functionLinenumber: 1279
    functionLinenumberEnd: 1282
    functionName: SyncRes::getNonResolvingNSSize
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 1
    functionsReached:
    - lock
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t SyncRes::getNonResolvingNSSize()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/syncres.cc:1286,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1287
      start: 1284
    functionDepth: 0
    functionLinenumber: 1284
    functionLinenumberEnd: 1287
    functionName: SyncRes::clearNonResolvingNS
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 0
    functionsReached:
    - lock
    linkageType: ''
    returnType: void
    signature: void SyncRes::clearNonResolvingNS()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/syncres.cc:1291,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - cutoff
    argTypes:
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1292
      start: 1289
    functionDepth: 0
    functionLinenumber: 1289
    functionLinenumberEnd: 1292
    functionName: SyncRes::pruneNonResolving
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 1
    functionsReached:
    - lock
    linkageType: ''
    returnType: void
    signature: void SyncRes::pruneNonResolving(time_t cutoff)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dup
      Src: /src/pdns/pdns/recursordist/syncres.cc:1296,1
    - Dst: pdns::UniqueFilePtr
      Src: /src/pdns/pdns/recursordist/syncres.cc:1300,1
    - Dst: fdopen
      Src: /src/pdns/pdns/recursordist/syncres.cc:1300,1
    - Dst: close
      Src: /src/pdns/pdns/recursordist/syncres.cc:1302,1
    - Dst: fprintf
      Src: /src/pdns/pdns/recursordist/syncres.cc:1305,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/syncres.cc:1305,1
    - Dst: fprintf
      Src: /src/pdns/pdns/recursordist/syncres.cc:1306,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/syncres.cc:1306,1
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/syncres.cc:1310,1
    - Dst: fprintf
      Src: /src/pdns/pdns/recursordist/syncres.cc:1313,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/syncres.cc:1313,1
    - Dst: key::toString
      Src: /src/pdns/pdns/recursordist/syncres.cc:1313,1
    - Dst: timestamp
      Src: /src/pdns/pdns/recursordist/syncres.cc:1313,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 1
    argNames:
    - fileDesc
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1317
      start: 1294
    functionDepth: 0
    functionLinenumber: 1294
    functionLinenumberEnd: 1317
    functionName: SyncRes::doDumpNonResolvingNS
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 1
    functionsReached:
    - fprintf
    - auto::get
    - timestamp
    - dup
    - lock
    - pdns::UniqueFilePtr
    - fdopen
    - key::toString
    - close
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t SyncRes::doDumpNonResolvingNS(int fileDesc)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/syncres.cc:1321,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1322
      start: 1319
    functionDepth: 0
    functionLinenumber: 1319
    functionLinenumberEnd: 1322
    functionName: SyncRes::clearSaveParentsNSSets
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 0
    functionsReached:
    - lock
    linkageType: ''
    returnType: void
    signature: void SyncRes::clearSaveParentsNSSets()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/syncres.cc:1326,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1327
      start: 1324
    functionDepth: 0
    functionLinenumber: 1324
    functionLinenumberEnd: 1327
    functionName: SyncRes::getSaveParentsNSSetsSize
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 2
    functionsReached:
    - lock
    linkageType: ''
    returnType: size_t
    signature: size_t SyncRes::getSaveParentsNSSetsSize()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/syncres.cc:1331,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - now
    argTypes:
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1332
      start: 1329
    functionDepth: 0
    functionLinenumber: 1329
    functionLinenumberEnd: 1332
    functionName: SyncRes::pruneSaveParentsNSSets
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 1
    functionsReached:
    - lock
    linkageType: ''
    returnType: void
    signature: void SyncRes::pruneSaveParentsNSSets(time_t now)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: dup
      Src: /src/pdns/pdns/recursordist/syncres.cc:1336,1
    - Dst: pdns::UniqueFilePtr
      Src: /src/pdns/pdns/recursordist/syncres.cc:1340,1
    - Dst: fdopen
      Src: /src/pdns/pdns/recursordist/syncres.cc:1340,1
    - Dst: close
      Src: /src/pdns/pdns/recursordist/syncres.cc:1342,1
    - Dst: fprintf
      Src: /src/pdns/pdns/recursordist/syncres.cc:1345,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/syncres.cc:1345,1
    - Dst: fprintf
      Src: /src/pdns/pdns/recursordist/syncres.cc:1346,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/syncres.cc:1346,1
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/syncres.cc:1346,1
    - Dst: fprintf
      Src: /src/pdns/pdns/recursordist/syncres.cc:1347,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/syncres.cc:1347,1
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/syncres.cc:1351,1
    - Dst: fprintf
      Src: /src/pdns/pdns/recursordist/syncres.cc:1357,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/syncres.cc:1357,1
    - Dst: d_domain::toString
      Src: /src/pdns/pdns/recursordist/syncres.cc:1357,1
    - Dst: timestamp
      Src: /src/pdns/pdns/recursordist/syncres.cc:1357,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 1
    argNames:
    - fileDesc
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1360
      start: 1334
    functionDepth: 0
    functionLinenumber: 1334
    functionLinenumberEnd: 1360
    functionName: SyncRes::doDumpSavedParentNSSets
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 1
    functionsReached:
    - d_domain::toString
    - fprintf
    - auto::get
    - timestamp
    - dup
    - lock
    - pdns::UniqueFilePtr
    - fdopen
    - close
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t SyncRes::doDumpSavedParentNSSets(int fileDesc)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/syncres.cc:1364,1
    - Dst: auto::d_map::get
      Src: /src/pdns/pdns/recursordist/syncres.cc:1365,1
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/syncres.cc:1367,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/syncres.cc:1367,1
    - Dst: erase
      Src: /src/pdns/pdns/recursordist/syncres.cc:1375,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 1
    argNames:
    - cutoff
    argTypes:
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1377
      start: 1362
    functionDepth: 0
    functionLinenumber: 1362
    functionLinenumberEnd: 1377
    functionName: SyncRes::pruneDoTProbeMap
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 1
    functionsReached:
    - end
    - lock
    - auto::d_map::get
    - begin
    - erase
    linkageType: ''
    returnType: void
    signature: void SyncRes::pruneDoTProbeMap(time_t cutoff)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dup
      Src: /src/pdns/pdns/recursordist/syncres.cc:1381,1
    - Dst: pdns::UniqueFilePtr
      Src: /src/pdns/pdns/recursordist/syncres.cc:1385,1
    - Dst: fdopen
      Src: /src/pdns/pdns/recursordist/syncres.cc:1385,1
    - Dst: close
      Src: /src/pdns/pdns/recursordist/syncres.cc:1387,1
    - Dst: fprintf
      Src: /src/pdns/pdns/recursordist/syncres.cc:1390,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/syncres.cc:1390,1
    - Dst: fprintf
      Src: /src/pdns/pdns/recursordist/syncres.cc:1391,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/syncres.cc:1391,1
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/syncres.cc:1397,1
    - Dst: fprintf
      Src: /src/pdns/pdns/recursordist/syncres.cc:1399,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/syncres.cc:1399,1
    - Dst: fprintf
      Src: /src/pdns/pdns/recursordist/syncres.cc:1403,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/syncres.cc:1403,1
    - Dst: d_address::toString
      Src: /src/pdns/pdns/recursordist/syncres.cc:1403,1
    - Dst: d_auth::toString
      Src: /src/pdns/pdns/recursordist/syncres.cc:1403,1
    - Dst: SyncRes::toString
      Src: /src/pdns/pdns/recursordist/syncres.cc:1403,1
    - Dst: timestamp
      Src: /src/pdns/pdns/recursordist/syncres.cc:1403,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 1
    argNames:
    - fileDesc
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1406
      start: 1379
    functionDepth: 0
    functionLinenumber: 1379
    functionLinenumberEnd: 1406
    functionName: SyncRes::doDumpDoTProbeMap
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 1
    functionsReached:
    - fprintf
    - auto::get
    - timestamp
    - dup
    - lock
    - d_address::toString
    - SyncRes::toString
    - d_auth::toString
    - pdns::UniqueFilePtr
    - fdopen
    - close
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t SyncRes::doDumpDoTProbeMap(int fileDesc)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/syncres.cc:1451,1
    - Dst: auto::find
      Src: /src/pdns/pdns/recursordist/syncres.cc:1452,1
    - Dst: auto::end
      Src: /src/pdns/pdns/recursordist/syncres.cc:1453,1
    - Dst: auto::erase
      Src: /src/pdns/pdns/recursordist/syncres.cc:1455,1
    - Dst: getLocal
      Src: /src/pdns/pdns/recursordist/syncres.cc:1464,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/syncres.cc:1472,1
    - Dst: DNSName::makeUsLowerCase
      Src: /src/pdns/pdns/recursordist/syncres.cc:1481,1
    - Dst: d_asyncResolve
      Src: /src/pdns/pdns/recursordist/syncres.cc:1485,1
    - Dst: asyncresolve
      Src: /src/pdns/pdns/recursordist/syncres.cc:1488,1
    - Dst: LWResult::isLimitError
      Src: /src/pdns/pdns/recursordist/syncres.cc:1491,1
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/syncres.cc:1503,1
    - Dst: auto::insert
      Src: /src/pdns/pdns/recursordist/syncres.cc:1520,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/syncres.cc:1521,1
    - Dst: auto::setMode
      Src: /src/pdns/pdns/recursordist/syncres.cc:1522,1
    - Dst: auto::insert
      Src: /src/pdns/pdns/recursordist/syncres.cc:1527,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/syncres.cc:1528,1
    - Dst: auto::setMode
      Src: /src/pdns/pdns/recursordist/syncres.cc:1529,1
    - Dst: auto::erase
      Src: /src/pdns/pdns/recursordist/syncres.cc:1533,1
    CyclomaticComplexity: 28
    EdgeCount: 28
    ICount: 52
    argCount: 13
    argNames:
    - ' log'
    - ' address'
    - ednsMANDATORY
    - ' domain'
    - ' auth'
    - type
    - doTCP
    - sendRDQuery
    - now
    - ' srcmask'
    - res
    - chained
    - ' nsName'
    argTypes:
    - OptLog
    - ComboAddress
    - bool
    - DNSName
    - DNSName
    - int
    - bool
    - bool
    - struct timeval*
    - std::optional<Netmask>
    - LWResult*
    - bool*
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1540
      start: 1429
    functionDepth: 2
    functionLinenumber: 1429
    functionLinenumberEnd: 1540
    functionName: SyncRes::asyncresolveWrapper
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 0
    functionsReached:
    - asyncresolve
    - auto::get
    - DNSName::makeUsLowerCase
    - d_asyncResolve
    - lock
    - getLocal
    - auto::setMode
    - auto::insert
    - LWResult::isLimitError
    - auto::end
    - auto::erase
    - at
    - auto::find
    linkageType: ''
    returnType: LWResult::Result
    signature: LWResult::Result SyncRes::asyncresolveWrapper(const OptLog& log, const
      ComboAddress& address, bool ednsMANDATORY, const DNSName& domain, [[maybe_unused]]
      const DNSName& auth, int type, bool doTCP, bool sendRDQuery, struct timeval*
      now, std::optional<Netmask>& srcmask, LWResult* res, bool* chained, const DNSName&
      nsName) const
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: std::max
      Src: /src/pdns/pdns/recursordist/syncres.cc:1556,1
    - Dst: std::min
      Src: /src/pdns/pdns/recursordist/syncres.cc:1561,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 3
    argNames:
    - labels
    - qnamelen
    - qmIteration
    argTypes:
    - unsigned int
    - unsigned int
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1563
      start: 1548
    functionDepth: 0
    functionLinenumber: 1548
    functionLinenumberEnd: 1563
    functionName: qmStepLen
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 0
    functionsReached:
    - std::max
    - std::min
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int qmStepLen(unsigned int labels, unsigned int qnamelen,
      unsigned int qmIteration)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RCode::to_s
      Src: /src/pdns/pdns/recursordist/syncres.cc:1567,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/syncres.cc:1567,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - res
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1568
      start: 1565
    functionDepth: 0
    functionLinenumber: 1565
    functionLinenumberEnd: 1568
    functionName: resToString
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 0
    functionsReached:
    - std::to_string
    - RCode::to_s
    linkageType: ''
    returnType: string
    signature: string resToString(int res)
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: SyncRes::getPrefix
      Src: /src/pdns/pdns/recursordist/syncres.cc:1572,1
    - Dst: getLocal
      Src: /src/pdns/pdns/recursordist/syncres.cc:1573,1
    - Dst: wasHit
      Src: /src/pdns/pdns/recursordist/syncres.cc:1576,1
    - Dst: auto::dfe::getQueryPolicy
      Src: /src/pdns/pdns/recursordist/syncres.cc:1577,1
    - Dst: mergePolicyTags
      Src: /src/pdns/pdns/recursordist/syncres.cc:1578,1
    - Dst: getTags
      Src: /src/pdns/pdns/recursordist/syncres.cc:1578,1
    - Dst: SyncRes::handlePolicyHit
      Src: /src/pdns/pdns/recursordist/syncres.cc:1581,1
    - Dst: SyncRes::initZoneCutsFromTA
      Src: /src/pdns/pdns/recursordist/syncres.cc:1588,1
    - Dst: SyncRes::getQNameMinimization
      Src: /src/pdns/pdns/recursordist/syncres.cc:1591,1
    - Dst: SyncRes::isRecursiveForwardOrAuth
      Src: /src/pdns/pdns/recursordist/syncres.cc:1591,1
    - Dst: SyncRes::doResolveNoQNameMinimization
      Src: /src/pdns/pdns/recursordist/syncres.cc:1592,1
    - Dst: DNSName::DNSName
      Src: /src/pdns/pdns/recursordist/syncres.cc:1610,1
    - Dst: auto::append
      Src: /src/pdns/pdns/recursordist/syncres.cc:1611,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/syncres.cc:1611,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:1613,1
    - Dst: SyncRes::setCacheOnly
      Src: /src/pdns/pdns/recursordist/syncres.cc:1617,1
    - Dst: SyncRes::doResolveNoQNameMinimization
      Src: /src/pdns/pdns/recursordist/syncres.cc:1629,1
    - Dst: insert
      Src: /src/pdns/pdns/recursordist/syncres.cc:1632,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/syncres.cc:1632,1
    - Dst: std::make_move_iterator
      Src: /src/pdns/pdns/recursordist/syncres.cc:1632,1
    - Dst: vector::begin
      Src: /src/pdns/pdns/recursordist/syncres.cc:1632,1
    - Dst: std::make_move_iterator
      Src: /src/pdns/pdns/recursordist/syncres.cc:1632,1
    - Dst: vector::end
      Src: /src/pdns/pdns/recursordist/syncres.cc:1632,1
    - Dst: SyncRes::setCacheOnly
      Src: /src/pdns/pdns/recursordist/syncres.cc:1635,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:1637,1
    - Dst: clear
      Src: /src/pdns/pdns/recursordist/syncres.cc:1639,1
    - Dst: insert
      Src: /src/pdns/pdns/recursordist/syncres.cc:1641,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/syncres.cc:1641,1
    - Dst: std::make_move_iterator
      Src: /src/pdns/pdns/recursordist/syncres.cc:1641,1
    - Dst: vector::begin
      Src: /src/pdns/pdns/recursordist/syncres.cc:1641,1
    - Dst: std::make_move_iterator
      Src: /src/pdns/pdns/recursordist/syncres.cc:1641,1
    - Dst: vector::end
      Src: /src/pdns/pdns/recursordist/syncres.cc:1641,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:1644,1
    - Dst: countLabels
      Src: /src/pdns/pdns/recursordist/syncres.cc:1646,1
    - Dst: SyncRes::getBestAuthZone
      Src: /src/pdns/pdns/recursordist/syncres.cc:1649,1
    - Dst: domainmap::end
      Src: /src/pdns/pdns/recursordist/syncres.cc:1649,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:1651,1
    - Dst: DNSName::chopOff
      Src: /src/pdns/pdns/recursordist/syncres.cc:1660,1
    - Dst: vector::empty
      Src: /src/pdns/pdns/recursordist/syncres.cc:1664,1
    - Dst: SyncRes::getBestNSFromCache
      Src: /src/pdns/pdns/recursordist/syncres.cc:1667,1
    - Dst: std::make_optional
      Src: /src/pdns/pdns/recursordist/syncres.cc:1667,1
    - Dst: vector::empty
      Src: /src/pdns/pdns/recursordist/syncres.cc:1673,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:1676,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:1682,1
    - Dst: d_name::isPartOf
      Src: /src/pdns/pdns/recursordist/syncres.cc:1684,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:1685,1
    - Dst: DNSName::countLabels
      Src: /src/pdns/pdns/recursordist/syncres.cc:1693,1
    - Dst: qmStepLen
      Src: /src/pdns/pdns/recursordist/syncres.cc:1694,1
    - Dst: DNSName::prependRawLabel
      Src: /src/pdns/pdns/recursordist/syncres.cc:1697,1
    - Dst: getRawLabel
      Src: /src/pdns/pdns/recursordist/syncres.cc:1697,1
    - Dst: getRawLabel
      Src: /src/pdns/pdns/recursordist/syncres.cc:1702,1
    - Dst: auto::at
      Src: /src/pdns/pdns/recursordist/syncres.cc:1703,1
    - Dst: DNSName::prependRawLabel
      Src: /src/pdns/pdns/recursordist/syncres.cc:1706,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:1710,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:1714,1
    - Dst: SyncRes::doResolveNoQNameMinimization
      Src: /src/pdns/pdns/recursordist/syncres.cc:1715,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:1716,1
    - Dst: resToString
      Src: /src/pdns/pdns/recursordist/syncres.cc:1716,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/syncres.cc:1716,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:1730,1
    - Dst: SyncRes::doResolveNoQNameMinimization
      Src: /src/pdns/pdns/recursordist/syncres.cc:1731,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:1732,1
    - Dst: resToString
      Src: /src/pdns/pdns/recursordist/syncres.cc:1732,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/syncres.cc:1732,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:1737,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/syncres.cc:1740,1
    - Dst: SyncRes::doResolveNoQNameMinimization
      Src: /src/pdns/pdns/recursordist/syncres.cc:1742,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:1744,1
    - Dst: RCode::to_s
      Src: /src/pdns/pdns/recursordist/syncres.cc:1744,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/syncres.cc:1744,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:1746,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:1752,1
    - Dst: SyncRes::setQNameMinimization
      Src: /src/pdns/pdns/recursordist/syncres.cc:1753,1
    - Dst: SyncRes::setQMFallbackMode
      Src: /src/pdns/pdns/recursordist/syncres.cc:1754,1
    - Dst: SyncRes::doResolveNoQNameMinimization
      Src: /src/pdns/pdns/recursordist/syncres.cc:1757,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/syncres.cc:1760,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/syncres.cc:1765,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:1769,1
    - Dst: resToString
      Src: /src/pdns/pdns/recursordist/syncres.cc:1769,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/syncres.cc:1769,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:1776,1
    CyclomaticComplexity: 37
    EdgeCount: 37
    ICount: 119
    argCount: 6
    argNames:
    - ' qname'
    - qtype
    - ' ret'
    - depth
    - ' beenthere'
    - ' context'
    argTypes:
    - DNSName
    - QType
    - vector<DNSRecord>
    - unsigned int
    - set<GetBestNSAnswer>
    - Context
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1778
      start: 1570
    functionDepth: 2
    functionLinenumber: 1570
    functionLinenumberEnd: 1778
    functionName: SyncRes::doResolve
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 2
    functionsReached:
    - SyncRes::initZoneCutsFromTA
    - SyncRes::getPrefix
    - SyncRes::setQNameMinimization
    - std::make_move_iterator
    - insert
    - RCode::to_s
    - vector::begin
    - countLabels
    - DNSName::chopOff
    - domainmap::end
    - SyncRes::getBestNSFromCache
    - SyncRes::setCacheOnly
    - mergePolicyTags
    - string
    - auto::dfe::getQueryPolicy
    - qmStepLen
    - size
    - getLocal
    - clear
    - SyncRes::doResolveNoQNameMinimization
    - LOG
    - SyncRes::handlePolicyHit
    - d_name::isPartOf
    - vector::clear
    - resToString
    - at
    - SyncRes::isRecursiveForwardOrAuth
    - getTags
    - SyncRes::getBestAuthZone
    - DNSName::prependRawLabel
    - vector::end
    - vector::empty
    - auto::at
    - SyncRes::getQNameMinimization
    - SyncRes::setQMFallbackMode
    - std::make_optional
    - getRawLabel
    - std::move
    - auto::append
    - DNSName::countLabels
    - end
    - DNSName::DNSName
    - vector::size
    - wasHit
    linkageType: ''
    returnType: int
    signature: int SyncRes::doResolve(const DNSName& qname, const QType qtype, vector<DNSRecord>&
      ret, unsigned int depth, set<GetBestNSAnswer>& beenthere, Context& context)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SyncRes::getQMFallbackMode
      Src: /src/pdns/pdns/recursordist/syncres.cc:1783,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1790
      start: 1780
    functionDepth: 1
    functionLinenumber: 1780
    functionLinenumberEnd: 1790
    functionName: SyncRes::getAdjustedRecursionBound
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 0
    functionsReached:
    - SyncRes::getQMFallbackMode
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int SyncRes::getAdjustedRecursionBound() const
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/syncres.cc:1806,1
    - Dst: auto::getTarget
      Src: /src/pdns/pdns/recursordist/syncres.cc:1807,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 18
    argCount: 4
    argNames:
    - ' qname'
    - qtype
    - res
    - ' ret'
    argTypes:
    - DNSName
    - QType
    - int
    - vector<DNSRecord>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1816
      start: 1792
    functionDepth: 0
    functionLinenumber: 1792
    functionLinenumberEnd: 1816
    functionName: haveFinalAnswer
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 0
    functionsReached:
    - auto::getTarget
    - getRR
    linkageType: ''
    returnType: bool
    signature: bool haveFinalAnswer(const DNSName& qname, QType qtype, int res, const
      vector<DNSRecord>& ret)
  - BBCount: 41
    BranchProfiles: []
    Callsites:
    - Dst: extendedError::reset
      Src: /src/pdns/pdns/recursordist/syncres.cc:1831,1
    - Dst: SyncRes::getPrefix
      Src: /src/pdns/pdns/recursordist/syncres.cc:1832,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:1834,1
    - Dst: std::max
      Src: /src/pdns/pdns/recursordist/syncres.cc:1836,1
    - Dst: SyncRes::getAdjustedRecursionBound
      Src: /src/pdns/pdns/recursordist/syncres.cc:1838,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/syncres.cc:1841,1
    - Dst: toLogString
      Src: /src/pdns/pdns/recursordist/syncres.cc:1841,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:1842,1
    - Dst: ImmediateServFailException
      Src: /src/pdns/pdns/recursordist/syncres.cc:1843,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/syncres.cc:1843,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:1854,1
    - Dst: QType::getCode
      Src: /src/pdns/pdns/recursordist/syncres.cc:1857,1
    - Dst: isRoot
      Src: /src/pdns/pdns/recursordist/syncres.cc:1857,1
    - Dst: SyncRes::getBestAuthZone
      Src: /src/pdns/pdns/recursordist/syncres.cc:1859,1
    - Dst: domainmap::end
      Src: /src/pdns/pdns/recursordist/syncres.cc:1862,1
    - Dst: auto::second::isAuth
      Src: /src/pdns/pdns/recursordist/syncres.cc:1863,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:1864,1
    - Dst: clear
      Src: /src/pdns/pdns/recursordist/syncres.cc:1865,1
    - Dst: SyncRes::doOOBResolve
      Src: /src/pdns/pdns/recursordist/syncres.cc:1866,1
    - Dst: domainmap::end
      Src: /src/pdns/pdns/recursordist/syncres.cc:1879,1
    - Dst: auto::second::isAuth
      Src: /src/pdns/pdns/recursordist/syncres.cc:1882,1
    - Dst: auto::second::shouldRecurse
      Src: /src/pdns/pdns/recursordist/syncres.cc:1885,1
    - Dst: SyncRes::doCNAMECacheCheck
      Src: /src/pdns/pdns/recursordist/syncres.cc:1893,1
    - Dst: wasHit
      Src: /src/pdns/pdns/recursordist/syncres.cc:1901,1
    - Dst: d_custom::empty
      Src: /src/pdns/pdns/recursordist/syncres.cc:1905,1
    - Dst: d_custom::at
      Src: /src/pdns/pdns/recursordist/syncres.cc:1905,1
    - Dst: wasHit
      Src: /src/pdns/pdns/recursordist/syncres.cc:1914,1
    - Dst: getLocal
      Src: /src/pdns/pdns/recursordist/syncres.cc:1915,1
    - Dst: auto::dfe::getPostPolicy
      Src: /src/pdns/pdns/recursordist/syncres.cc:1916,1
    - Dst: mergePolicyTags
      Src: /src/pdns/pdns/recursordist/syncres.cc:1917,1
    - Dst: getTags
      Src: /src/pdns/pdns/recursordist/syncres.cc:1917,1
    - Dst: SyncRes::handlePolicyHit
      Src: /src/pdns/pdns/recursordist/syncres.cc:1919,1
    - Dst: haveFinalAnswer
      Src: /src/pdns/pdns/recursordist/syncres.cc:1927,1
    - Dst: SyncRes::doCacheCheck
      Src: /src/pdns/pdns/recursordist/syncres.cc:1933,1
    - Dst: wasHit
      Src: /src/pdns/pdns/recursordist/syncres.cc:1940,1
    - Dst: getLocal
      Src: /src/pdns/pdns/recursordist/syncres.cc:1941,1
    - Dst: auto::dfe::getPostPolicy
      Src: /src/pdns/pdns/recursordist/syncres.cc:1942,1
    - Dst: mergePolicyTags
      Src: /src/pdns/pdns/recursordist/syncres.cc:1943,1
    - Dst: getTags
      Src: /src/pdns/pdns/recursordist/syncres.cc:1943,1
    - Dst: SyncRes::handlePolicyHit
      Src: /src/pdns/pdns/recursordist/syncres.cc:1945,1
    - Dst: SyncRes::doCNAMECacheCheck
      Src: /src/pdns/pdns/recursordist/syncres.cc:1953,1
    - Dst: wasHit
      Src: /src/pdns/pdns/recursordist/syncres.cc:1961,1
    - Dst: getLocal
      Src: /src/pdns/pdns/recursordist/syncres.cc:1969,1
    - Dst: auto::dfe::getPostPolicy
      Src: /src/pdns/pdns/recursordist/syncres.cc:1970,1
    - Dst: mergePolicyTags
      Src: /src/pdns/pdns/recursordist/syncres.cc:1971,1
    - Dst: getTags
      Src: /src/pdns/pdns/recursordist/syncres.cc:1971,1
    - Dst: SyncRes::handlePolicyHit
      Src: /src/pdns/pdns/recursordist/syncres.cc:1973,1
    - Dst: haveFinalAnswer
      Src: /src/pdns/pdns/recursordist/syncres.cc:1979,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:1996,1
    - Dst: DNSName::chopOff
      Src: /src/pdns/pdns/recursordist/syncres.cc:2000,1
    - Dst: NsSet::empty
      Src: /src/pdns/pdns/recursordist/syncres.cc:2008,1
    - Dst: SyncRes::getBestNSNamesFromCache
      Src: /src/pdns/pdns/recursordist/syncres.cc:2009,1
    - Dst: SyncRes::doResolveAt
      Src: /src/pdns/pdns/recursordist/syncres.cc:2012,1
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/syncres.cc:2018,1
    - Dst: auto::find
      Src: /src/pdns/pdns/recursordist/syncres.cc:2019,1
    - Dst: auto::end
      Src: /src/pdns/pdns/recursordist/syncres.cc:2020,1
    - Dst: auto::d_nsAddresses::empty
      Src: /src/pdns/pdns/recursordist/syncres.cc:2020,1
    - Dst: NsSet::clear
      Src: /src/pdns/pdns/recursordist/syncres.cc:2021,1
    - Dst: NsSet::emplace
      Src: /src/pdns/pdns/recursordist/syncres.cc:2025,1
    - Dst: pair
      Src: /src/pdns/pdns/recursordist/syncres.cc:2025,1
    - Dst: std::vector<ComboAddress>
      Src: /src/pdns/pdns/recursordist/syncres.cc:2025,1
    - Dst: map::emplace
      Src: /src/pdns/pdns/recursordist/syncres.cc:2026,1
    - Dst: map::empty
      Src: /src/pdns/pdns/recursordist/syncres.cc:2030,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:2031,1
    - Dst: SyncRes::doResolveAt
      Src: /src/pdns/pdns/recursordist/syncres.cc:2032,1
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/syncres.cc:2035,1
    - Dst: wasHit
      Src: /src/pdns/pdns/recursordist/syncres.cc:2040,1
    - Dst: getLocal
      Src: /src/pdns/pdns/recursordist/syncres.cc:2041,1
    - Dst: auto::dfe::getPostPolicy
      Src: /src/pdns/pdns/recursordist/syncres.cc:2042,1
    - Dst: mergePolicyTags
      Src: /src/pdns/pdns/recursordist/syncres.cc:2043,1
    - Dst: getTags
      Src: /src/pdns/pdns/recursordist/syncres.cc:2043,1
    - Dst: SyncRes::handlePolicyHit
      Src: /src/pdns/pdns/recursordist/syncres.cc:2045,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:2053,1
    CyclomaticComplexity: 73
    EdgeCount: 73
    ICount: 140
    argCount: 8
    argNames:
    - ' qname'
    - qtype
    - ' ret'
    - depth
    - ' beenthere'
    - ' context'
    - fromCache
    - stopAtDelegation
    argTypes:
    - DNSName
    - QType
    - vector<DNSRecord>
    - unsigned int
    - set<GetBestNSAnswer>
    - Context
    - bool*
    - StopAtDelegation*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2059
      start: 1829
    functionDepth: 2
    functionLinenumber: 1829
    functionLinenumberEnd: 2059
    functionName: SyncRes::doResolveNoQNameMinimization
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 1
    functionsReached:
    - toLogString
    - std::to_string
    - SyncRes::getPrefix
    - haveFinalAnswer
    - NsSet::clear
    - isRoot
    - auto::second::shouldRecurse
    - SyncRes::doCacheCheck
    - std::vector<ComboAddress>
    - d_custom::at
    - auto::dfe::getPostPolicy
    - DNSName::chopOff
    - domainmap::end
    - SyncRes::doCNAMECacheCheck
    - mergePolicyTags
    - map::emplace
    - lock
    - getLocal
    - clear
    - std::max
    - LOG
    - SyncRes::handlePolicyHit
    - NsSet::empty
    - SyncRes::doResolveAt
    - extendedError::reset
    - map::empty
    - SyncRes::doOOBResolve
    - auto::d_nsAddresses::empty
    - getTags
    - SyncRes::getBestAuthZone
    - d_custom::empty
    - NsSet::emplace
    - SyncRes::getBestNSNamesFromCache
    - auto::find
    - pair
    - std::move
    - SyncRes::getAdjustedRecursionBound
    - auto::second::isAuth
    - QType::getCode
    - auto::end
    - ImmediateServFailException
    - wasHit
    linkageType: ''
    returnType: int
    signature: int SyncRes::doResolveNoQNameMinimization(const DNSName& qname, const
      QType qtype, vector<DNSRecord>& ret, unsigned int depth, set<GetBestNSAnswer>&
      beenthere, Context& context, bool* fromCache, StopAtDelegation* stopAtDelegation)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' a'
    - ' b'
    argTypes:
    - ComboAddress
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2066
      start: 2063
    functionDepth: 0
    functionLinenumber: 2063
    functionLinenumberEnd: 2066
    functionName: ipv6First
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool ipv6First(const ComboAddress& a, const ComboAddress& b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' speeds'
    argTypes:
    - std::map<ComboAddress, float>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2072
      start: 2071
    functionDepth: 0
    functionLinenumber: 2071
    functionLinenumberEnd: 2072
    functionName: speedOrderCA
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void speedOrderCA(std::map<ComboAddress, float>& speeds)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' lhs'
    - ' rhs'
    argTypes:
    - ComboAddress
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2076
      start: 2073
    functionDepth: 0
    functionLinenumber: 2073
    functionLinenumberEnd: 2076
    functionName: operator()(const ComboAddress& lhs, const ComboAddress& rhs) const
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool operator()(const ComboAddress& lhs, const ComboAddress& rhs) const
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/syncres.cc:2088,1
    - Dst: auto::find_or_enter
      Src: /src/pdns/pdns/recursordist/syncres.cc:2089,1
    - Dst: getFactor
      Src: /src/pdns/pdns/recursordist/syncres.cc:2090,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/syncres.cc:2092,1
    - Dst: purge
      Src: /src/pdns/pdns/recursordist/syncres.cc:2094,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/syncres.cc:2097,1
    - Dst: shuffle
      Src: /src/pdns/pdns/recursordist/syncres.cc:2098,1
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/syncres.cc:2098,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/syncres.cc:2098,1
    - Dst: pdns::dns_random_engine
      Src: /src/pdns/pdns/recursordist/syncres.cc:2098,1
    - Dst: stable_sort
      Src: /src/pdns/pdns/recursordist/syncres.cc:2100,1
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/syncres.cc:2100,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/syncres.cc:2100,1
    - Dst: SyncRes::doLog
      Src: /src/pdns/pdns/recursordist/syncres.cc:2103,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:2104,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:2111,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:2113,1
    - Dst: SyncRes::toString
      Src: /src/pdns/pdns/recursordist/syncres.cc:2113,1
    - Dst: fmtfloat
      Src: /src/pdns/pdns/recursordist/syncres.cc:2113,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:2115,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 3
    argNames:
    - ' qname'
    - ' prefix'
    - ' ret'
    argTypes:
    - DNSName
    - string
    - vector<ComboAddress>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2117
      start: 2080
    functionDepth: 1
    functionLinenumber: 2080
    functionLinenumberEnd: 2117
    functionName: SyncRes::selectNSOnSpeed
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 0
    functionsReached:
    - purge
    - fmtfloat
    - auto::find_or_enter
    - stable_sort
    - end
    - size
    - get
    - lock
    - shuffle
    - SyncRes::doLog
    - SyncRes::toString
    - begin
    - pdns::dns_random_engine
    - getFactor
    - LOG
    linkageType: ''
    returnType: void
    signature: void SyncRes::selectNSOnSpeed(const DNSName& qname, const string& prefix,
      vector<ComboAddress>& ret)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/syncres.cc:2124,1
    - Dst: push_back
      Src: /src/pdns/pdns/recursordist/syncres.cc:2125,1
    - Dst: auto::getCA
      Src: /src/pdns/pdns/recursordist/syncres.cc:2125,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - ' cset'
    - ' ret'
    argTypes:
    - vector<DNSRecord>
    - vector<ComboAddress>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2130
      start: 2120
    functionDepth: 0
    functionLinenumber: 2120
    functionLinenumberEnd: 2130
    functionName: collectAddresses
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 0
    functionsReached:
    - push_back
    - getRR
    - auto::getCA
    linkageType: ''
    returnType: bool
    signature: bool collectAddresses(const vector<DNSRecord>& cset, vector<ComboAddress>&
      ret)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: SyncRes::setCacheOnly
      Src: /src/pdns/pdns/recursordist/syncres.cc:2140,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/syncres.cc:2157,1
    - Dst: collectAddresses
      Src: /src/pdns/pdns/recursordist/syncres.cc:2158,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/syncres.cc:2160,1
    - Dst: collectAddresses
      Src: /src/pdns/pdns/recursordist/syncres.cc:2161,1
    - Dst: ret_t::empty
      Src: /src/pdns/pdns/recursordist/syncres.cc:2165,1
    - Dst: res_t::clear
      Src: /src/pdns/pdns/recursordist/syncres.cc:2168,1
    - Dst: SyncRes::doResolveNoQNameMinimization
      Src: /src/pdns/pdns/recursordist/syncres.cc:2170,1
    - Dst: collectAddresses
      Src: /src/pdns/pdns/recursordist/syncres.cc:2171,1
    - Dst: ret_t::empty
      Src: /src/pdns/pdns/recursordist/syncres.cc:2174,1
    - Dst: SyncRes::doResolveNoQNameMinimization
      Src: /src/pdns/pdns/recursordist/syncres.cc:2177,1
    - Dst: collectAddresses
      Src: /src/pdns/pdns/recursordist/syncres.cc:2178,1
    - Dst: res_t::clear
      Src: /src/pdns/pdns/recursordist/syncres.cc:2185,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/syncres.cc:2186,1
    - Dst: collectAddresses
      Src: /src/pdns/pdns/recursordist/syncres.cc:2187,1
    - Dst: pushResolveIfNotInNegCache
      Src: /src/pdns/pdns/recursordist/syncres.cc:2197,1
    - Dst: ret_t::empty
      Src: /src/pdns/pdns/recursordist/syncres.cc:2205,1
    - Dst: SyncRes::setCacheOnly
      Src: /src/pdns/pdns/recursordist/syncres.cc:2211,1
    - Dst: shouldDoDoT
      Src: /src/pdns/pdns/recursordist/syncres.cc:2216,1
    - Dst: setPort
      Src: /src/pdns/pdns/recursordist/syncres.cc:2217,1
    - Dst: SyncRes::selectNSOnSpeed
      Src: /src/pdns/pdns/recursordist/syncres.cc:2221,1
    CyclomaticComplexity: 25
    EdgeCount: 25
    ICount: 58
    argCount: 6
    argNames:
    - ' qname'
    - depth
    - ' prefix'
    - ' beenthere'
    - cacheOnly
    - ' addressQueriesForNS'
    argTypes:
    - DNSName
    - unsigned int
    - string
    - set<GetBestNSAnswer>
    - bool
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2223
      start: 2134
    functionDepth: 3
    functionLinenumber: 2134
    functionLinenumberEnd: 2223
    functionName: SyncRes::getAddrs
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 0
    functionsReached:
    - res_t::clear
    - setPort
    - SyncRes::setCacheOnly
    - shouldDoDoT
    - ret_t::empty
    - collectAddresses
    - get
    - pushResolveIfNotInNegCache
    - SyncRes::selectNSOnSpeed
    - SyncRes::doResolveNoQNameMinimization
    linkageType: ''
    returnType: vector<ComboAddress>
    signature: vector<ComboAddress> SyncRes::getAddrs(const DNSName& qname, unsigned
      int depth, const string& prefix, set<GetBestNSAnswer>& beenthere, bool cacheOnly,
      unsigned int& addressQueriesForNS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: vStateIsBogus
      Src: /src/pdns/pdns/recursordist/syncres.cc:2227,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:2228,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 5
    argNames:
    - ' prefix'
    - ' qname'
    - ' name'
    - qtype
    - state
    argTypes:
    - std::string
    - DNSName
    - DNSName
    - QType
    - vState
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2233
      start: 2225
    functionDepth: 1
    functionLinenumber: 2225
    functionLinenumberEnd: 2233
    functionName: SyncRes::canUseRecords
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 0
    functionsReached:
    - LOG
    - vStateIsBogus
    linkageType: ''
    returnType: bool
    signature: bool SyncRes::canUseRecords(const std::string& prefix, const DNSName&
      qname, const DNSName& name, QType qtype, vState state)
  - BBCount: 23
    BranchProfiles: []
    Callsites:
    - Dst: clear
      Src: /src/pdns/pdns/recursordist/syncres.cc:2238,1
    - Dst: DNSName::isPartOf
      Src: /src/pdns/pdns/recursordist/syncres.cc:2245,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:2249,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/syncres.cc:2254,1
    - Dst: SyncRes::canUseRecords
      Src: /src/pdns/pdns/recursordist/syncres.cc:2254,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/syncres.cc:2255,1
    - Dst: vector::reserve
      Src: /src/pdns/pdns/recursordist/syncres.cc:2257,1
    - Dst: std::sample
      Src: /src/pdns/pdns/recursordist/syncres.cc:2258,1
    - Dst: vector::cbegin
      Src: /src/pdns/pdns/recursordist/syncres.cc:2258,1
    - Dst: vector::cend
      Src: /src/pdns/pdns/recursordist/syncres.cc:2258,1
    - Dst: std::back_inserter
      Src: /src/pdns/pdns/recursordist/syncres.cc:2258,1
    - Dst: pdns::dns_random_engine
      Src: /src/pdns/pdns/recursordist/syncres.cc:2258,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/syncres.cc:2259,1
    - Dst: reserve
      Src: /src/pdns/pdns/recursordist/syncres.cc:2261,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/syncres.cc:2261,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/syncres.cc:2275,1
    - Dst: auto::getNS
      Src: /src/pdns/pdns/recursordist/syncres.cc:2277,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/syncres.cc:2277,1
    - Dst: auto::getNS
      Src: /src/pdns/pdns/recursordist/syncres.cc:2277,1
    - Dst: SyncRes::doLog
      Src: /src/pdns/pdns/recursordist/syncres.cc:2277,1
    - Dst: SyncRes::canUseRecords
      Src: /src/pdns/pdns/recursordist/syncres.cc:2279,1
    - Dst: auto::getNS
      Src: /src/pdns/pdns/recursordist/syncres.cc:2279,1
    - Dst: push_back
      Src: /src/pdns/pdns/recursordist/syncres.cc:2282,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:2283,1
    - Dst: auto::getNS
      Src: /src/pdns/pdns/recursordist/syncres.cc:2283,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:2284,1
    - Dst: auto::getNS
      Src: /src/pdns/pdns/recursordist/syncres.cc:2284,1
    - Dst: vector::empty
      Src: /src/pdns/pdns/recursordist/syncres.cc:2285,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:2286,1
    - Dst: vector::begin
      Src: /src/pdns/pdns/recursordist/syncres.cc:2286,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:2289,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:2294,1
    - Dst: auto::getNS
      Src: /src/pdns/pdns/recursordist/syncres.cc:2294,1
    - Dst: vector::emplace_back
      Src: /src/pdns/pdns/recursordist/syncres.cc:2295,1
    - Dst: auto::getNS
      Src: /src/pdns/pdns/recursordist/syncres.cc:2295,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/syncres.cc:2299,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:2302,1
    - Dst: doWipeCache
      Src: /src/pdns/pdns/recursordist/syncres.cc:2303,1
    - Dst: vector::empty
      Src: /src/pdns/pdns/recursordist/syncres.cc:2305,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/syncres.cc:2305,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/syncres.cc:2305,1
    - Dst: shuffle
      Src: /src/pdns/pdns/recursordist/syncres.cc:2310,1
    - Dst: vector::begin
      Src: /src/pdns/pdns/recursordist/syncres.cc:2310,1
    - Dst: vector::end
      Src: /src/pdns/pdns/recursordist/syncres.cc:2310,1
    - Dst: pdns::dns_random_engine
      Src: /src/pdns/pdns/recursordist/syncres.cc:2310,1
    - Dst: pushResolveIfNotInNegCache
      Src: /src/pdns/pdns/recursordist/syncres.cc:2312,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:2313,1
    - Dst: pushResolveIfNotInNegCache
      Src: /src/pdns/pdns/recursordist/syncres.cc:2316,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:2317,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/syncres.cc:2326,1
    - Dst: QType::getCode
      Src: /src/pdns/pdns/recursordist/syncres.cc:2329,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/syncres.cc:2331,1
    - Dst: GetBestNSAnswer::bestns::emplace
      Src: /src/pdns/pdns/recursordist/syncres.cc:2332,1
    - Dst: auto::getNS
      Src: /src/pdns/pdns/recursordist/syncres.cc:2332,1
    - Dst: insert
      Src: /src/pdns/pdns/recursordist/syncres.cc:2336,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/syncres.cc:2336,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:2339,1
    - Dst: SyncRes::doLog
      Src: /src/pdns/pdns/recursordist/syncres.cc:2341,1
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/syncres.cc:2342,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/syncres.cc:2342,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:2344,1
    - Dst: DNSRecordContent::NumberToType
      Src: /src/pdns/pdns/recursordist/syncres.cc:2344,1
    - Dst: auto::bestns::size
      Src: /src/pdns/pdns/recursordist/syncres.cc:2344,1
    - Dst: clear
      Src: /src/pdns/pdns/recursordist/syncres.cc:2347,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:2350,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:2355,1
    - Dst: DNSName::isRoot
      Src: /src/pdns/pdns/recursordist/syncres.cc:2357,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/syncres.cc:2359,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:2360,1
    - Dst: withName
      Src: /src/pdns/pdns/recursordist/syncres.cc:2363,1
    - Dst: SyncRes::getRootNS
      Src: /src/pdns/pdns/recursordist/syncres.cc:2364,1
    - Dst: DNSName::chopOff
      Src: /src/pdns/pdns/recursordist/syncres.cc:2367,1
    CyclomaticComplexity: 44
    EdgeCount: 44
    ICount: 99
    argCount: 8
    argNames:
    - ' qname'
    - qtype
    - ' bestns'
    - flawedNSSet
    - depth
    - ' prefix'
    - ' beenthere'
    - ' cutOffDomain'
    argTypes:
    - DNSName
    - QType
    - vector<DNSRecord>
    - bool*
    - unsigned int
    - string
    - set<GetBestNSAnswer>
    - std::optional<DNSName>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2368
      start: 2235
    functionDepth: 2
    functionLinenumber: 2235
    functionLinenumberEnd: 2368
    functionName: SyncRes::getBestNSFromCache
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 1
    functionsReached:
    - primeHints
    - withName
    - pushResolveIfNotInNegCache
    - vector::cend
    - insert
    - std::back_inserter
    - vector::reserve
    - auto::bestns::size
    - vector::begin
    - std::sample
    - DNSName::chopOff
    - DNSName::isRoot
    - SyncRes::doLog
    - shuffle
    - DNSRecordContent::NumberToType
    - DNSName::isPartOf
    - clear
    - pdns::dns_random_engine
    - LOG
    - empty
    - begin
    - SyncRes::canUseRecords
    - SyncRes::getRootNS
    - push_back
    - get
    - vector::end
    - reserve
    - vector::empty
    - doWipeCache
    - std::move
    - getRR
    - auto::getNS
    - end
    - GetBestNSAnswer::bestns::emplace
    - QType::getCode
    - vector::emplace_back
    - vector::cbegin
    - vector::size
    linkageType: ''
    returnType: void
    signature: void SyncRes::getBestNSFromCache(const DNSName& qname, const QType
      qtype, vector<DNSRecord>& bestns, bool* flawedNSSet, unsigned int depth, const
      string& prefix, set<GetBestNSAnswer>& beenthere, const std::optional<DNSName>&
      cutOffDomain)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: domainmap::empty
      Src: /src/pdns/pdns/recursordist/syncres.cc:2372,1
    - Dst: domainmap::end
      Src: /src/pdns/pdns/recursordist/syncres.cc:2373,1
    - Dst: domainmap::find
      Src: /src/pdns/pdns/recursordist/syncres.cc:2378,1
    - Dst: domainmap::end
      Src: /src/pdns/pdns/recursordist/syncres.cc:2379,1
    - Dst: DNSName*::chopOff
      Src: /src/pdns/pdns/recursordist/syncres.cc:2382,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 1
    argNames:
    - qname
    argTypes:
    - DNSName*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2384
      start: 2370
    functionDepth: 0
    functionLinenumber: 2370
    functionLinenumberEnd: 2384
    functionName: SyncRes::getBestAuthZone
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 6
    functionsReached:
    - DNSName*::chopOff
    - domainmap::find
    - domainmap::empty
    - domainmap::end
    linkageType: ''
    returnType: SyncRes::domainmap_t::const_iterator
    signature: SyncRes::domainmap_t::const_iterator SyncRes::getBestAuthZone(DNSName*
      qname)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: SyncRes::getBestAuthZone
      Src: /src/pdns/pdns/recursordist/syncres.cc:2391,1
    - Dst: domainmap::end
      Src: /src/pdns/pdns/recursordist/syncres.cc:2393,1
    - Dst: auto::second::isAuth
      Src: /src/pdns/pdns/recursordist/syncres.cc:2394,1
    - Dst: insert
      Src: /src/pdns/pdns/recursordist/syncres.cc:2397,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/syncres.cc:2397,1
    - Dst: auto::second::shouldRecurse
      Src: /src/pdns/pdns/recursordist/syncres.cc:2400,1
    - Dst: insert
      Src: /src/pdns/pdns/recursordist/syncres.cc:2404,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/syncres.cc:2404,1
    - Dst: SyncRes::getBestNSFromCache
      Src: /src/pdns/pdns/recursordist/syncres.cc:2413,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/syncres.cc:2417,1
    - Dst: domainmap::end
      Src: /src/pdns/pdns/recursordist/syncres.cc:2424,1
    - Dst: SyncRes::doLog
      Src: /src/pdns/pdns/recursordist/syncres.cc:2425,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:2426,1
    - Dst: DNSName::isPartOf
      Src: /src/pdns/pdns/recursordist/syncres.cc:2426,1
    - Dst: DNSName::isPartOf
      Src: /src/pdns/pdns/recursordist/syncres.cc:2431,1
    - Dst: SyncRes::doLog
      Src: /src/pdns/pdns/recursordist/syncres.cc:2432,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:2433,1
    - Dst: insert
      Src: /src/pdns/pdns/recursordist/syncres.cc:2435,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/syncres.cc:2435,1
    - Dst: SyncRes::doLog
      Src: /src/pdns/pdns/recursordist/syncres.cc:2438,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:2439,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/syncres.cc:2444,1
    - Dst: insert
      Src: /src/pdns/pdns/recursordist/syncres.cc:2446,1
    - Dst: auto::getNS
      Src: /src/pdns/pdns/recursordist/syncres.cc:2446,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 37
    argCount: 7
    argNames:
    - ' qname'
    - qtype
    - ' nsset'
    - flawedNSSet
    - depth
    - ' prefix'
    - ' beenthere'
    argTypes:
    - DNSName
    - QType
    - NsSet
    - bool*
    - unsigned int
    - string
    - set<GetBestNSAnswer>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2450
      start: 2387
    functionDepth: 3
    functionLinenumber: 2387
    functionLinenumberEnd: 2450
    functionName: SyncRes::getBestNSNamesFromCache
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 1
    functionsReached:
    - getRR
    - SyncRes::getBestNSFromCache
    - domainmap::end
    - SyncRes::getBestAuthZone
    - auto::getNS
    - DNSName
    - SyncRes::doLog
    - auto::second::isAuth
    - auto::second::shouldRecurse
    - insert
    - DNSName::isPartOf
    - LOG
    linkageType: ''
    returnType: DNSName
    signature: DNSName SyncRes::getBestNSNamesFromCache(const DNSName& qname, const
      QType qtype, NsSet& nsset, bool* flawedNSSet, unsigned int depth, const string&
      prefix, set<GetBestNSAnswer>& beenthere)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: vStateIsBogus
      Src: /src/pdns/pdns/recursordist/syncres.cc:2459,1
    - Dst: updateValidationStatus
      Src: /src/pdns/pdns/recursordist/syncres.cc:2460,1
    - Dst: updateValidationStatus
      Src: /src/pdns/pdns/recursordist/syncres.cc:2463,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 4
    argNames:
    - ' qname'
    - qtype
    - aaFlag
    - newState
    argTypes:
    - DNSName
    - QType
    - bool
    - vState
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2465
      start: 2452
    functionDepth: 0
    functionLinenumber: 2452
    functionLinenumberEnd: 2465
    functionName: SyncRes::updateValidationStatusInCache
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 0
    functionsReached:
    - vStateIsBogus
    - updateValidationStatus
    linkageType: ''
    returnType: void
    signature: void SyncRes::updateValidationStatusInCache(const DNSName& qname, const
      QType qtype, bool aaFlag, vState newState) const
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 2
    argNames:
    - ' name'
    - ' records'
    argTypes:
    - DNSName
    - vector<DNSRecord>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2479
      start: 2467
    functionDepth: 0
    functionLinenumber: 2467
    functionLinenumberEnd: 2479
    functionName: scanForCNAMELoop
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: pair<bool, unsigned int>
    signature: pair<bool, unsigned int> scanForCNAMELoop(const DNSName& name, const
      vector<DNSRecord>& records)
  - BBCount: 31
    BranchProfiles: []
    Callsites:
    - Dst: pdns::max
      Src: /src/pdns/pdns/recursordist/syncres.cc:2487,1
    - Dst: DNSName::DNSName
      Src: /src/pdns/pdns/recursordist/syncres.cc:2488,1
    - Dst: DNSName::DNSName
      Src: /src/pdns/pdns/recursordist/syncres.cc:2489,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/syncres.cc:2504,1
    - Dst: DNSName::empty
      Src: /src/pdns/pdns/recursordist/syncres.cc:2510,1
    - Dst: getRawLabels
      Src: /src/pdns/pdns/recursordist/syncres.cc:2512,1
    - Dst: DNSName::prependRawLabel
      Src: /src/pdns/pdns/recursordist/syncres.cc:2516,1
    - Dst: auto::back
      Src: /src/pdns/pdns/recursordist/syncres.cc:2516,1
    - Dst: auto::pop_back
      Src: /src/pdns/pdns/recursordist/syncres.cc:2517,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/syncres.cc:2521,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/syncres.cc:2522,1
    - Dst: auto::empty
      Src: /src/pdns/pdns/recursordist/syncres.cc:2527,1
    - Dst: DNSName::empty
      Src: /src/pdns/pdns/recursordist/syncres.cc:2530,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:2537,1
    - Dst: QType::toString
      Src: /src/pdns/pdns/recursordist/syncres.cc:2537,1
    - Dst: SyncRes::shouldValidate
      Src: /src/pdns/pdns/recursordist/syncres.cc:2548,1
    - Dst: SyncRes::getValidationStatus
      Src: /src/pdns/pdns/recursordist/syncres.cc:2551,1
    - Dst: MemRecursorCache::SigRecs::empty
      Src: /src/pdns/pdns/recursordist/syncres.cc:2551,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:2553,1
    - Dst: QType::toString
      Src: /src/pdns/pdns/recursordist/syncres.cc:2553,1
    - Dst: SyncRes::validateRecordsWithSigs
      Src: /src/pdns/pdns/recursordist/syncres.cc:2554,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:2556,1
    - Dst: QType::toString
      Src: /src/pdns/pdns/recursordist/syncres.cc:2556,1
    - Dst: vStateIsBogus
      Src: /src/pdns/pdns/recursordist/syncres.cc:2557,1
    - Dst: SyncRes::updateValidationStatusInCache
      Src: /src/pdns/pdns/recursordist/syncres.cc:2560,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:2565,1
    - Dst: QType::toString
      Src: /src/pdns/pdns/recursordist/syncres.cc:2565,1
    - Dst: QType::toString
      Src: /src/pdns/pdns/recursordist/syncres.cc:2565,1
    - Dst: getContent
      Src: /src/pdns/pdns/recursordist/syncres.cc:2565,1
    - Dst: std::min
      Src: /src/pdns/pdns/recursordist/syncres.cc:2581,1
    - Dst: reserve
      Src: /src/pdns/pdns/recursordist/syncres.cc:2584,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/syncres.cc:2584,1
    - Dst: MemRecursorCache::SigRecs::size
      Src: /src/pdns/pdns/recursordist/syncres.cc:2584,1
    - Dst: MemRecursorCache::AuthRecs::size
      Src: /src/pdns/pdns/recursordist/syncres.cc:2584,1
    - Dst: push_back
      Src: /src/pdns/pdns/recursordist/syncres.cc:2585,1
    - Dst: DNSRecord::DNSRecord
      Src: /src/pdns/pdns/recursordist/syncres.cc:2588,1
    - Dst: DNSRecord::setContent
      Src: /src/pdns/pdns/recursordist/syncres.cc:2592,1
    - Dst: push_back
      Src: /src/pdns/pdns/recursordist/syncres.cc:2595,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/syncres.cc:2595,1
    - Dst: push_back
      Src: /src/pdns/pdns/recursordist/syncres.cc:2601,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/syncres.cc:2601,1
    - Dst: DNSName::DNSName
      Src: /src/pdns/pdns/recursordist/syncres.cc:2605,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/syncres.cc:2612,1
    - Dst: ImmediateServFailException
      Src: /src/pdns/pdns/recursordist/syncres.cc:2614,1
    - Dst: DNSName::toLogString
      Src: /src/pdns/pdns/recursordist/syncres.cc:2614,1
    - Dst: auto::getTarget
      Src: /src/pdns/pdns/recursordist/syncres.cc:2616,1
    - Dst: makeRelative
      Src: /src/pdns/pdns/recursordist/syncres.cc:2617,1
    - Dst: DNSRecord::setContent
      Src: /src/pdns/pdns/recursordist/syncres.cc:2622,1
    - Dst: std::make_shared<CNAMERecordContent>
      Src: /src/pdns/pdns/recursordist/syncres.cc:2622,1
    - Dst: CNAMERecordContent
      Src: /src/pdns/pdns/recursordist/syncres.cc:2622,1
    - Dst: push_back
      Src: /src/pdns/pdns/recursordist/syncres.cc:2623,1
    - Dst: ImmediateServFailException
      Src: /src/pdns/pdns/recursordist/syncres.cc:2628,1
    - Dst: DNSName::toLogString
      Src: /src/pdns/pdns/recursordist/syncres.cc:2628,1
    - Dst: toLogString
      Src: /src/pdns/pdns/recursordist/syncres.cc:2628,1
    - Dst: DNSName::toLogString
      Src: /src/pdns/pdns/recursordist/syncres.cc:2628,1
    - Dst: toLogString
      Src: /src/pdns/pdns/recursordist/syncres.cc:2628,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/syncres.cc:2628,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:2631,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/syncres.cc:2647,1
    - Dst: ImmediateServFailException
      Src: /src/pdns/pdns/recursordist/syncres.cc:2649,1
    - Dst: DNSName::toLogString
      Src: /src/pdns/pdns/recursordist/syncres.cc:2649,1
    - Dst: auto::getTarget
      Src: /src/pdns/pdns/recursordist/syncres.cc:2651,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:2656,1
    - Dst: ImmediateServFailException
      Src: /src/pdns/pdns/recursordist/syncres.cc:2657,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/syncres.cc:2657,1
    - Dst: DNSName::isPartOf
      Src: /src/pdns/pdns/recursordist/syncres.cc:2660,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:2663,1
    - Dst: SyncRes::setQNameMinimization
      Src: /src/pdns/pdns/recursordist/syncres.cc:2664,1
    - Dst: scanForCNAMELoop
      Src: /src/pdns/pdns/recursordist/syncres.cc:2673,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:2676,1
    - Dst: ImmediateServFailException
      Src: /src/pdns/pdns/recursordist/syncres.cc:2677,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/syncres.cc:2677,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:2681,1
    - Dst: ImmediateServFailException
      Src: /src/pdns/pdns/recursordist/syncres.cc:2682,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/syncres.cc:2682,1
    - Dst: SyncRes::doResolve
      Src: /src/pdns/pdns/recursordist/syncres.cc:2689,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:2690,1
    - Dst: pdns::dedupRecords
      Src: /src/pdns/pdns/recursordist/syncres.cc:2691,1
    - Dst: SyncRes::updateValidationState
      Src: /src/pdns/pdns/recursordist/syncres.cc:2692,1
    - Dst: ImmediateServFailException
      Src: /src/pdns/pdns/recursordist/syncres.cc:2697,1
    - Dst: toLogString
      Src: /src/pdns/pdns/recursordist/syncres.cc:2697,1
    CyclomaticComplexity: 59
    EdgeCount: 59
    ICount: 140
    argCount: 10
    argNames:
    - ' qname'
    - qtype
    - ' ret'
    - depth
    - ' prefix'
    - ' res'
    - ' context'
    - wasAuthZone
    - wasForwardRecurse
    - checkForDups
    argTypes:
    - DNSName
    - QType
    - vector<DNSRecord>
    - unsigned int
    - string
    - int
    - Context
    - bool
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2698
      start: 2481
    functionDepth: 3
    functionLinenumber: 2481
    functionLinenumberEnd: 2698
    functionName: SyncRes::doCNAMECacheCheck
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 1
    functionsReached:
    - makeRelative
    - toLogString
    - DNSRecord::DNSRecord
    - SyncRes::getValidationStatus
    - std::make_shared<CNAMERecordContent>
    - vStateIsBogus
    - MemRecursorCache::AuthRecs::size
    - SyncRes::setQNameMinimization
    - DNSName::toLogString
    - DNSRecord::setContent
    - getRawLabels
    - size
    - SyncRes::doResolve
    - DNSName::isPartOf
    - CNAMERecordContent
    - LOG
    - pdns::max
    - scanForCNAMELoop
    - push_back
    - DNSName::prependRawLabel
    - QType::toString
    - get
    - reserve
    - DNSName::empty
    - SyncRes::shouldValidate
    - auto::getTarget
    - std::move
    - auto::pop_back
    - getRR
    - SyncRes::updateValidationStatusInCache
    - pdns::dedupRecords
    - MemRecursorCache::SigRecs::size
    - std::min
    - what
    - auto::back
    - getContent
    - MemRecursorCache::SigRecs::empty
    - SyncRes::validateRecordsWithSigs
    - DNSName::DNSName
    - ImmediateServFailException
    - SyncRes::updateValidationState
    - auto::empty
    linkageType: ''
    returnType: bool
    signature: bool SyncRes::doCNAMECacheCheck(const DNSName& qname, const QType qtype,
      vector<DNSRecord>& ret, unsigned int depth, const string& prefix, int& res,
      Context& context, bool wasAuthZone, bool wasForwardRecurse, bool checkForDups)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::tie
      Src: /src/pdns/pdns/recursordist/syncres.cc:2716,1
    - Dst: std::tie
      Src: /src/pdns/pdns/recursordist/syncres.cc:2716,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - CacheKey
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2717
      start: 2714
    functionDepth: 0
    functionLinenumber: 2714
    functionLinenumberEnd: 2717
    functionName: operator<(const CacheKey& rhs) const
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 0
    functionsReached:
    - std::tie
    linkageType: ''
    returnType: bool
    signature: bool operator<(const CacheKey& rhs) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::tie
      Src: /src/pdns/pdns/recursordist/syncres.cc:2716,1
    - Dst: std::tie
      Src: /src/pdns/pdns/recursordist/syncres.cc:2716,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - CacheKey
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2717
      start: 2714
    functionDepth: 0
    functionLinenumber: 2714
    functionLinenumberEnd: 2717
    functionName: operator<(const CacheKey& rhs) const
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 0
    functionsReached:
    - std::tie
    linkageType: ''
    returnType: bool
    signature: bool operator<(const CacheKey& rhs) const
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/syncres.cc:2726,1
    - Dst: signatures::push_back
      Src: /src/pdns/pdns/recursordist/syncres.cc:2728,1
    - Dst: records::push_back
      Src: /src/pdns/pdns/recursordist/syncres.cc:2732,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - ' tcache'
    - ' records'
    argTypes:
    - tcache_t
    - vector<DNSRecord>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2735
      start: 2722
    functionDepth: 0
    functionLinenumber: 2722
    functionLinenumberEnd: 2735
    functionName: reapRecordsFromNegCacheEntryForValidation
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 0
    functionsReached:
    - getRR
    - records::push_back
    - signatures::push_back
    linkageType: ''
    returnType: void
    signature: void reapRecordsFromNegCacheEntryForValidation(tcache_t& tcache, const
      vector<DNSRecord>& records)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: authoritySOA::records::empty
      Src: /src/pdns/pdns/recursordist/syncres.cc:2739,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' negEntry'
    argTypes:
    - NegCache::NegCacheEntry
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2740
      start: 2737
    functionDepth: 0
    functionLinenumber: 2737
    functionLinenumberEnd: 2740
    functionName: negativeCacheEntryHasSOA
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 0
    functionsReached:
    - authoritySOA::records::empty
    linkageType: ''
    returnType: bool
    signature: bool negativeCacheEntryHasSOA(const NegCache::NegCacheEntry& negEntry)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: records::push_back
      Src: /src/pdns/pdns/recursordist/syncres.cc:2745,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - ' entries'
    - ' records'
    argTypes:
    - std::map<QType, CacheEntry>
    - vector<DNSRecord>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2747
      start: 2742
    functionDepth: 0
    functionLinenumber: 2742
    functionLinenumberEnd: 2747
    functionName: reapRecordsForValidation
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 0
    functionsReached:
    - records::push_back
    linkageType: ''
    returnType: void
    signature: void reapRecordsForValidation(std::map<QType, CacheEntry>& entries,
      const vector<DNSRecord>& records)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: signatures::push_back
      Src: /src/pdns/pdns/recursordist/syncres.cc:2752,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - ' entries'
    - ' signatures'
    argTypes:
    - std::map<QType, CacheEntry>
    - MemRecursorCache::SigRecs
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2754
      start: 2749
    functionDepth: 0
    functionLinenumber: 2749
    functionLinenumberEnd: 2754
    functionName: reapSignaturesForValidation
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 0
    functionsReached:
    - signatures::push_back
    linkageType: ''
    returnType: void
    signature: void reapSignaturesForValidation(std::map<QType, CacheEntry>& entries,
      const MemRecursorCache::SigRecs& signatures)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: push_back
      Src: /src/pdns/pdns/recursordist/syncres.cc:2767,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/syncres.cc:2767,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - ' records'
    - ttl
    - ' ret'
    argTypes:
    - vector<DNSRecord>
    - uint32_t
    - vector<DNSRecord>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2769
      start: 2763
    functionDepth: 0
    functionLinenumber: 2763
    functionLinenumberEnd: 2769
    functionName: addTTLModifiedRecords
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 0
    functionsReached:
    - push_back
    - std::move
    linkageType: ''
    returnType: void
    signature: void addTTLModifiedRecords(vector<DNSRecord>& records, const uint32_t
      ttl, vector<DNSRecord>& ret)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: reapRecordsFromNegCacheEntryForValidation
      Src: /src/pdns/pdns/recursordist/syncres.cc:2774,1
    - Dst: reapRecordsFromNegCacheEntryForValidation
      Src: /src/pdns/pdns/recursordist/syncres.cc:2775,1
    - Dst: reapRecordsFromNegCacheEntryForValidation
      Src: /src/pdns/pdns/recursordist/syncres.cc:2776,1
    - Dst: reapRecordsFromNegCacheEntryForValidation
      Src: /src/pdns/pdns/recursordist/syncres.cc:2777,1
    - Dst: second::records::empty
      Src: /src/pdns/pdns/recursordist/syncres.cc:2781,1
    - Dst: SyncRes::getValidationStatus
      Src: /src/pdns/pdns/recursordist/syncres.cc:2787,1
    - Dst: second::signatures::empty
      Src: /src/pdns/pdns/recursordist/syncres.cc:2787,1
    - Dst: SyncRes::validateRecordsWithSigs
      Src: /src/pdns/pdns/recursordist/syncres.cc:2793,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/syncres.cc:2793,1
    - Dst: SyncRes::updateValidationState
      Src: /src/pdns/pdns/recursordist/syncres.cc:2797,1
    - Dst: SyncRes::getDenialValidationState
      Src: /src/pdns/pdns/recursordist/syncres.cc:2807,1
    - Dst: SyncRes::updateDenialValidationState
      Src: /src/pdns/pdns/recursordist/syncres.cc:2808,1
    - Dst: vStateIsBogus
      Src: /src/pdns/pdns/recursordist/syncres.cc:2813,1
    - Dst: updateValidationStatus
      Src: /src/pdns/pdns/recursordist/syncres.cc:2816,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 30
    argCount: 7
    argNames:
    - ' negEntry'
    - ' qname'
    - qtype
    - res
    - ' state'
    - depth
    - ' prefix'
    argTypes:
    - NegCache::NegCacheEntry
    - DNSName
    - QType
    - int
    - vState
    - unsigned int
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2818
      start: 2771
    functionDepth: 1
    functionLinenumber: 2771
    functionLinenumberEnd: 2818
    functionName: SyncRes::computeNegCacheValidationStatus
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 0
    functionsReached:
    - second::signatures::empty
    - SyncRes::getValidationStatus
    - QType
    - vStateIsBogus
    - updateValidationStatus
    - second::records::empty
    - reapRecordsFromNegCacheEntryForValidation
    - SyncRes::validateRecordsWithSigs
    - SyncRes::getDenialValidationState
    - SyncRes::updateValidationState
    - SyncRes::updateDenialValidationState
    linkageType: ''
    returnType: void
    signature: void SyncRes::computeNegCacheValidationStatus(const NegCache::NegCacheEntry&
      negEntry, const DNSName& qname, const QType qtype, const int res, vState& state,
      unsigned int depth, const string& prefix)
  - BBCount: 37
    BranchProfiles: []
    Callsites:
    - Dst: getRootNXTrust
      Src: /src/pdns/pdns/recursordist/syncres.cc:2832,1
    - Dst: NegCache::NegCacheEntry::d_auth::isRoot
      Src: /src/pdns/pdns/recursordist/syncres.cc:2832,1
    - Dst: isRoot
      Src: /src/pdns/pdns/recursordist/syncres.cc:2832,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:2834,1
    - Dst: static_cast<uint16_t>
      Src: /src/pdns/pdns/recursordist/syncres.cc:2839,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/syncres.cc:2842,1
    - Dst: NegCache::NegCacheEntry::d_qtype::getCode
      Src: /src/pdns/pdns/recursordist/syncres.cc:2845,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/syncres.cc:2845,1
    - Dst: NegCache::NegCacheEntry::d_qtype::getCode
      Src: /src/pdns/pdns/recursordist/syncres.cc:2849,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/syncres.cc:2849,1
    - Dst: negativeCacheEntryHasSOA
      Src: /src/pdns/pdns/recursordist/syncres.cc:2849,1
    - Dst: NegCache::NegCacheEntry::d_qtype::getCode
      Src: /src/pdns/pdns/recursordist/syncres.cc:2857,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:2858,1
    - Dst: static_cast<uint16_t>
      Src: /src/pdns/pdns/recursordist/syncres.cc:2861,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:2865,1
    - Dst: static_cast<uint16_t>
      Src: /src/pdns/pdns/recursordist/syncres.cc:2867,1
    - Dst: isRoot
      Src: /src/pdns/pdns/recursordist/syncres.cc:2873,1
    - Dst: getRawLabels
      Src: /src/pdns/pdns/recursordist/syncres.cc:2874,1
    - Dst: DNSName::prependRawLabel
      Src: /src/pdns/pdns/recursordist/syncres.cc:2876,1
    - Dst: auto::back
      Src: /src/pdns/pdns/recursordist/syncres.cc:2876,1
    - Dst: auto::pop_back
      Src: /src/pdns/pdns/recursordist/syncres.cc:2877,1
    - Dst: auto::empty
      Src: /src/pdns/pdns/recursordist/syncres.cc:2878,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/syncres.cc:2879,1
    - Dst: SyncRes::validationEnabled
      Src: /src/pdns/pdns/recursordist/syncres.cc:2880,1
    - Dst: vStateIsBogus
      Src: /src/pdns/pdns/recursordist/syncres.cc:2886,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:2891,1
    - Dst: static_cast<uint16_t>
      Src: /src/pdns/pdns/recursordist/syncres.cc:2893,1
    - Dst: DNSName::prependRawLabel
      Src: /src/pdns/pdns/recursordist/syncres.cc:2898,1
    - Dst: auto::back
      Src: /src/pdns/pdns/recursordist/syncres.cc:2898,1
    - Dst: auto::pop_back
      Src: /src/pdns/pdns/recursordist/syncres.cc:2899,1
    - Dst: SyncRes::shouldValidate
      Src: /src/pdns/pdns/recursordist/syncres.cc:2907,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:2908,1
    - Dst: SyncRes::computeNegCacheValidationStatus
      Src: /src/pdns/pdns/recursordist/syncres.cc:2909,1
    - Dst: vStateIsBogus
      Src: /src/pdns/pdns/recursordist/syncres.cc:2911,1
    - Dst: std::min
      Src: /src/pdns/pdns/recursordist/syncres.cc:2912,1
    - Dst: addTTLModifiedRecords
      Src: /src/pdns/pdns/recursordist/syncres.cc:2917,1
    - Dst: addTTLModifiedRecords
      Src: /src/pdns/pdns/recursordist/syncres.cc:2919,1
    - Dst: addTTLModifiedRecords
      Src: /src/pdns/pdns/recursordist/syncres.cc:2920,1
    - Dst: addTTLModifiedRecords
      Src: /src/pdns/pdns/recursordist/syncres.cc:2921,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:2924,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/recursordist/syncres.cc:2934,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/syncres.cc:2948,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:2951,1
    - Dst: QType::toString
      Src: /src/pdns/pdns/recursordist/syncres.cc:2951,1
    - Dst: SyncRes::shouldValidate
      Src: /src/pdns/pdns/recursordist/syncres.cc:2953,1
    - Dst: SyncRes::getValidationStatus
      Src: /src/pdns/pdns/recursordist/syncres.cc:2956,1
    - Dst: MemRecursorCache::SigRecs::empty
      Src: /src/pdns/pdns/recursordist/syncres.cc:2956,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:2959,1
    - Dst: getSigner
      Src: /src/pdns/pdns/recursordist/syncres.cc:2960,1
    - Dst: SyncRes::validateDNSKeys
      Src: /src/pdns/pdns/recursordist/syncres.cc:2961,1
    - Dst: reapRecordsForValidation
      Src: /src/pdns/pdns/recursordist/syncres.cc:2966,1
    - Dst: reapSignaturesForValidation
      Src: /src/pdns/pdns/recursordist/syncres.cc:2967,1
    - Dst: getSigner
      Src: /src/pdns/pdns/recursordist/syncres.cc:2971,1
    - Dst: SyncRes::validateDNSKeys
      Src: /src/pdns/pdns/recursordist/syncres.cc:2972,1
    - Dst: SyncRes::validateRecordsWithSigs
      Src: /src/pdns/pdns/recursordist/syncres.cc:2975,1
    - Dst: updateDNSSECValidationState
      Src: /src/pdns/pdns/recursordist/syncres.cc:2977,1
    - Dst: SyncRes::validateRecordsWithSigs
      Src: /src/pdns/pdns/recursordist/syncres.cc:2981,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:2990,1
    - Dst: vStateIsBogus
      Src: /src/pdns/pdns/recursordist/syncres.cc:2991,1
    - Dst: SyncRes::updateValidationStatusInCache
      Src: /src/pdns/pdns/recursordist/syncres.cc:2995,1
    - Dst: vector::cbegin
      Src: /src/pdns/pdns/recursordist/syncres.cc:3000,1
    - Dst: vector::cend
      Src: /src/pdns/pdns/recursordist/syncres.cc:3000,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:3002,1
    - Dst: auto::getContent
      Src: /src/pdns/pdns/recursordist/syncres.cc:3002,1
    - Dst: std::min
      Src: /src/pdns/pdns/recursordist/syncres.cc:3011,1
    - Dst: push_back
      Src: /src/pdns/pdns/recursordist/syncres.cc:3013,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:3014,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:3018,1
    - Dst: reserve
      Src: /src/pdns/pdns/recursordist/syncres.cc:3023,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/syncres.cc:3023,1
    - Dst: MemRecursorCache::SigRecs::size
      Src: /src/pdns/pdns/recursordist/syncres.cc:3023,1
    - Dst: MemRecursorCache::AuthRecs::size
      Src: /src/pdns/pdns/recursordist/syncres.cc:3023,1
    - Dst: DNSRecord::DNSRecord
      Src: /src/pdns/pdns/recursordist/syncres.cc:3026,1
    - Dst: DNSRecord::setContent
      Src: /src/pdns/pdns/recursordist/syncres.cc:3030,1
    - Dst: push_back
      Src: /src/pdns/pdns/recursordist/syncres.cc:3033,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/syncres.cc:3033,1
    - Dst: push_back
      Src: /src/pdns/pdns/recursordist/syncres.cc:3039,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/syncres.cc:3039,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:3042,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:3047,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:3051,1
    - Dst: getDenial
      Src: /src/pdns/pdns/recursordist/syncres.cc:3056,1
    - Dst: SyncRes::LogObject
      Src: /src/pdns/pdns/recursordist/syncres.cc:3056,1
    - Dst: static_cast<uint16_t>
      Src: /src/pdns/pdns/recursordist/syncres.cc:3059,1
    CyclomaticComplexity: 73
    EdgeCount: 73
    ICount: 171
    argCount: 11
    argNames:
    - ' qname'
    - ' authname'
    - wasForwardedOrAuthZone
    - wasAuthZone
    - wasForwardRecurse
    - qtype
    - ' ret'
    - depth
    - ' prefix'
    - ' res'
    - ' context'
    argTypes:
    - DNSName
    - DNSName
    - bool
    - bool
    - bool
    - QType
    - vector<DNSRecord>
    - unsigned int
    - string
    - int
    - Context
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3066
      start: 2820
    functionDepth: 2
    functionLinenumber: 2820
    functionLinenumberEnd: 3066
    functionName: SyncRes::doCacheCheck
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 1
    functionsReached:
    - reapSignaturesForValidation
    - getSigner
    - DNSRecord::DNSRecord
    - SyncRes::computeNegCacheValidationStatus
    - SyncRes::getValidationStatus
    - vStateIsBogus
    - MemRecursorCache::AuthRecs::size
    - SyncRes::LogObject
    - isRoot
    - vector::cend
    - auto::getContent
    - DNSRecord::setContent
    - vector::cbegin
    - SyncRes::validateDNSKeys
    - updateDNSSECValidationState
    - NegCache::NegCacheEntry::d_auth::isRoot
    - getRawLabels
    - reapRecordsForValidation
    - addTTLModifiedRecords
    - size
    - static_cast<uint16_t>
    - empty
    - LOG
    - pdns::max
    - getDenial
    - push_back
    - DNSName::prependRawLabel
    - NegCache::NegCacheEntry::d_qtype::getCode
    - QType::toString
    - get
    - reserve
    - getRootNXTrust
    - SyncRes::shouldValidate
    - SyncRes::validationEnabled
    - std::move
    - auto::pop_back
    - SyncRes::updateValidationStatusInCache
    - MemRecursorCache::SigRecs::size
    - std::min
    - auto::back
    - MemRecursorCache::SigRecs::empty
    - SyncRes::validateRecordsWithSigs
    - negativeCacheEntryHasSOA
    - auto::empty
    linkageType: ''
    returnType: bool
    signature: bool SyncRes::doCacheCheck(const DNSName& qname, const DNSName& authname,
      bool wasForwardedOrAuthZone, bool wasAuthZone, bool wasForwardRecurse, QType
      qtype, vector<DNSRecord>& ret, unsigned int depth, const string& prefix, int&
      res, Context& context)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: isPartOf
      Src: /src/pdns/pdns/recursordist/syncres.cc:3070,1
    - Dst: countLabels
      Src: /src/pdns/pdns/recursordist/syncres.cc:3070,1
    - Dst: countLabels
      Src: /src/pdns/pdns/recursordist/syncres.cc:3070,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 2
    argNames:
    - ' lhs'
    - ' rhs'
    argTypes:
    - DNSName
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3071
      start: 3068
    functionDepth: 0
    functionLinenumber: 3068
    functionLinenumberEnd: 3071
    functionName: SyncRes::moreSpecificThan
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 0
    functionsReached:
    - countLabels
    - isPartOf
    linkageType: ''
    returnType: bool
    signature: bool SyncRes::moreSpecificThan(const DNSName& lhs, const DNSName& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' lhs'
    - ' rhs'
    argTypes:
    - std::pair<DNSName, float>
    - std::pair<DNSName, float>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3078
      start: 3075
    functionDepth: 0
    functionLinenumber: 3075
    functionLinenumberEnd: 3078
    functionName: operator()(const std::pair<DNSName, float>& lhs, const std::pair<DNSName,
      float>& rhs) const
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool operator()(const std::pair<DNSName, float>& lhs, const std::pair<DNSName,
      float>& rhs) const
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: std::vector::reserve
      Src: /src/pdns/pdns/recursordist/syncres.cc:3084,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/syncres.cc:3084,1
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/syncres.cc:3086,1
    - Dst: std::vector::emplace_back
      Src: /src/pdns/pdns/recursordist/syncres.cc:3087,1
    - Dst: first::empty
      Src: /src/pdns/pdns/recursordist/syncres.cc:3088,1
    - Dst: shuffle
      Src: /src/pdns/pdns/recursordist/syncres.cc:3093,1
    - Dst: std::vector::begin
      Src: /src/pdns/pdns/recursordist/syncres.cc:3093,1
    - Dst: std::vector::end
      Src: /src/pdns/pdns/recursordist/syncres.cc:3093,1
    - Dst: pdns::dns_random_engine
      Src: /src/pdns/pdns/recursordist/syncres.cc:3093,1
    - Dst: stable_sort
      Src: /src/pdns/pdns/recursordist/syncres.cc:3095,1
    - Dst: std::vector::begin
      Src: /src/pdns/pdns/recursordist/syncres.cc:3095,1
    - Dst: std::vector::end
      Src: /src/pdns/pdns/recursordist/syncres.cc:3095,1
    - Dst: SyncRes::doLog
      Src: /src/pdns/pdns/recursordist/syncres.cc:3097,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:3098,1
    - Dst: std::vector::begin
      Src: /src/pdns/pdns/recursordist/syncres.cc:3099,1
    - Dst: std::vector::end
      Src: /src/pdns/pdns/recursordist/syncres.cc:3099,1
    - Dst: std::vector::begin
      Src: /src/pdns/pdns/recursordist/syncres.cc:3100,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:3101,1
    - Dst: std::vector::begin
      Src: /src/pdns/pdns/recursordist/syncres.cc:3102,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:3103,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:3107,1
    - Dst: auto::first::toLogString
      Src: /src/pdns/pdns/recursordist/syncres.cc:3107,1
    - Dst: fmtfloat
      Src: /src/pdns/pdns/recursordist/syncres.cc:3107,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:3109,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 23
    argCount: 3
    argNames:
    - ' qname'
    - ' tnameservers'
    - ' prefix'
    argTypes:
    - DNSName
    - NsSet
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3112
      start: 3081
    functionDepth: 1
    functionLinenumber: 3081
    functionLinenumberEnd: 3112
    functionName: SyncRes::shuffleInSpeedOrder
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 0
    functionsReached:
    - std::vector::end
    - fmtfloat
    - stable_sort
    - std::vector::begin
    - std::vector::emplace_back
    - size
    - lock
    - std::vector::reserve
    - shuffle
    - SyncRes::doLog
    - pdns::dns_random_engine
    - first::empty
    - LOG
    - auto::first::toLogString
    linkageType: ''
    returnType: std::vector<std::pair<DNSName, float>>
    signature: std::vector<std::pair<DNSName, float>> SyncRes::shuffleInSpeedOrder(const
      DNSName& qname, NsSet& tnameservers, const string& prefix)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/syncres.cc:3120,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/recursordist/syncres.cc:3120,1
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/syncres.cc:3121,1
    - Dst: shuffle
      Src: /src/pdns/pdns/recursordist/syncres.cc:3124,1
    - Dst: vector::begin
      Src: /src/pdns/pdns/recursordist/syncres.cc:3124,1
    - Dst: vector::end
      Src: /src/pdns/pdns/recursordist/syncres.cc:3124,1
    - Dst: pdns::dns_random_engine
      Src: /src/pdns/pdns/recursordist/syncres.cc:3124,1
    - Dst: stable_sort
      Src: /src/pdns/pdns/recursordist/syncres.cc:3126,1
    - Dst: vector::begin
      Src: /src/pdns/pdns/recursordist/syncres.cc:3126,1
    - Dst: vector::end
      Src: /src/pdns/pdns/recursordist/syncres.cc:3126,1
    - Dst: SyncRes::doLog
      Src: /src/pdns/pdns/recursordist/syncres.cc:3128,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:3129,1
    - Dst: vector::cbegin
      Src: /src/pdns/pdns/recursordist/syncres.cc:3130,1
    - Dst: vector::cend
      Src: /src/pdns/pdns/recursordist/syncres.cc:3130,1
    - Dst: vector::cbegin
      Src: /src/pdns/pdns/recursordist/syncres.cc:3131,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:3132,1
    - Dst: vector::cbegin
      Src: /src/pdns/pdns/recursordist/syncres.cc:3133,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:3134,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:3138,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/syncres.cc:3138,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/syncres.cc:3138,1
    - Dst: auto::toStringWithPort
      Src: /src/pdns/pdns/recursordist/syncres.cc:3138,1
    - Dst: fmtfloat
      Src: /src/pdns/pdns/recursordist/syncres.cc:3138,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:3140,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 4
    argNames:
    - ' qname'
    - ' rnameservers'
    - ' prefix'
    - wasRd
    argTypes:
    - DNSName
    - vector<ComboAddress>
    - string
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3143
      start: 3114
    functionDepth: 1
    functionLinenumber: 3114
    functionLinenumberEnd: 3143
    functionName: SyncRes::shuffleForwardSpeed
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 0
    functionsReached:
    - vector::begin
    - auto::toStringWithPort
    - fmtfloat
    - stable_sort
    - string
    - DNSName
    - lock
    - shuffle
    - vector::end
    - SyncRes::doLog
    - vector::cend
    - vector::cbegin
    - pdns::dns_random_engine
    - toStringWithPort
    - LOG
    linkageType: ''
    returnType: vector<ComboAddress>
    signature: vector<ComboAddress> SyncRes::shuffleForwardSpeed(const DNSName& qname,
      const vector<ComboAddress>& rnameservers, const string& prefix, const bool wasRd)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<uint32_t>
      Src: /src/pdns/pdns/recursordist/syncres.cc:3150,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - now
    - ' rrsig'
    argTypes:
    - time_t
    - std::shared_ptr<const RRSIGRecordContent>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3153
      start: 3145
    functionDepth: 0
    functionLinenumber: 3145
    functionLinenumberEnd: 3153
    functionName: getRRSIGTTL
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 0
    functionsReached:
    - static_cast<uint32_t>
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t getRRSIGTTL(const time_t now, const std::shared_ptr<const
      RRSIGRecordContent>& rrsig)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/syncres.cc:3174,1
    - Dst: authoritySOA::signatures::push_back
      Src: /src/pdns/pdns/recursordist/syncres.cc:3177,1
    - Dst: isRRSIGNotExpired
      Src: /src/pdns/pdns/recursordist/syncres.cc:3178,1
    - Dst: min
      Src: /src/pdns/pdns/recursordist/syncres.cc:3179,1
    - Dst: min
      Src: /src/pdns/pdns/recursordist/syncres.cc:3180,1
    - Dst: getRRSIGTTL
      Src: /src/pdns/pdns/recursordist/syncres.cc:3180,1
    - Dst: count
      Src: /src/pdns/pdns/recursordist/syncres.cc:3183,1
    - Dst: DNSSECRecords::signatures::push_back
      Src: /src/pdns/pdns/recursordist/syncres.cc:3184,1
    - Dst: isRRSIGNotExpired
      Src: /src/pdns/pdns/recursordist/syncres.cc:3185,1
    - Dst: min
      Src: /src/pdns/pdns/recursordist/syncres.cc:3186,1
    - Dst: min
      Src: /src/pdns/pdns/recursordist/syncres.cc:3187,1
    - Dst: getRRSIGTTL
      Src: /src/pdns/pdns/recursordist/syncres.cc:3187,1
    - Dst: authoritySOA::records::push_back
      Src: /src/pdns/pdns/recursordist/syncres.cc:3194,1
    - Dst: min
      Src: /src/pdns/pdns/recursordist/syncres.cc:3196,1
    - Dst: count
      Src: /src/pdns/pdns/recursordist/syncres.cc:3200,1
    - Dst: DNSSECRecords::records::push_back
      Src: /src/pdns/pdns/recursordist/syncres.cc:3201,1
    - Dst: min
      Src: /src/pdns/pdns/recursordist/syncres.cc:3203,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 38
    argCount: 4
    argNames:
    - ' records'
    - ' negEntry'
    - now
    - lowestTTL
    argTypes:
    - vector<DNSRecord>
    - NegCache::NegCacheEntry
    - time_t
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3208
      start: 3162
    functionDepth: 1
    functionLinenumber: 3162
    functionLinenumberEnd: 3208
    functionName: harvestNXRecords
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 0
    functionsReached:
    - getRRSIGTTL
    - isRRSIGNotExpired
    - getRR
    - authoritySOA::signatures::push_back
    - count
    - DNSSECRecords::signatures::push_back
    - authoritySOA::records::push_back
    - DNSSECRecords::records::push_back
    - min
    linkageType: ''
    returnType: void
    signature: void harvestNXRecords(const vector<DNSRecord>& records, NegCache::NegCacheEntry&
      negEntry, const time_t now, uint32_t* lowestTTL)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/syncres.cc:3215,1
    - Dst: signatures::push_back
      Src: /src/pdns/pdns/recursordist/syncres.cc:3217,1
    - Dst: records::insert
      Src: /src/pdns/pdns/recursordist/syncres.cc:3222,1
    - Dst: getContent
      Src: /src/pdns/pdns/recursordist/syncres.cc:3222,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 1
    argNames:
    - ' negEntry'
    argTypes:
    - NegCache::NegCacheEntry
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3225
      start: 3210
    functionDepth: 2
    functionLinenumber: 3210
    functionLinenumberEnd: 3225
    functionName: harvestCSPFromNE
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 0
    functionsReached:
    - records::insert
    - getRR
    - getContent
    - signatures::push_back
    linkageType: ''
    returnType: cspmap_t
    signature: cspmap_t harvestCSPFromNE(const NegCache::NegCacheEntry& negEntry)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: harvestNXRecords
      Src: /src/pdns/pdns/recursordist/syncres.cc:3232,1
    - Dst: insert
      Src: /src/pdns/pdns/recursordist/syncres.cc:3233,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/syncres.cc:3233,1
    - Dst: NegCache::NegCacheEntry::authoritySOA::signatures::begin
      Src: /src/pdns/pdns/recursordist/syncres.cc:3233,1
    - Dst: NegCache::NegCacheEntry::authoritySOA::signatures::end
      Src: /src/pdns/pdns/recursordist/syncres.cc:3233,1
    - Dst: insert
      Src: /src/pdns/pdns/recursordist/syncres.cc:3234,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/syncres.cc:3234,1
    - Dst: NegCache::NegCacheEntry::DNSSECRecords::records::begin
      Src: /src/pdns/pdns/recursordist/syncres.cc:3234,1
    - Dst: NegCache::NegCacheEntry::DNSSECRecords::records::end
      Src: /src/pdns/pdns/recursordist/syncres.cc:3234,1
    - Dst: insert
      Src: /src/pdns/pdns/recursordist/syncres.cc:3235,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/syncres.cc:3235,1
    - Dst: NegCache::NegCacheEntry::DNSSECRecords::signatures::begin
      Src: /src/pdns/pdns/recursordist/syncres.cc:3235,1
    - Dst: NegCache::NegCacheEntry::DNSSECRecords::signatures::end
      Src: /src/pdns/pdns/recursordist/syncres.cc:3235,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - ' ret'
    - ' records'
    argTypes:
    - vector<DNSRecord>
    - vector<DNSRecord>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3236
      start: 3229
    functionDepth: 2
    functionLinenumber: 3229
    functionLinenumberEnd: 3236
    functionName: addNXNSECS
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 0
    functionsReached:
    - NegCache::NegCacheEntry::authoritySOA::signatures::end
    - harvestNXRecords
    - end
    - NegCache::NegCacheEntry::authoritySOA::signatures::begin
    - NegCache::NegCacheEntry::DNSSECRecords::signatures::begin
    - NegCache::NegCacheEntry::DNSSECRecords::records::end
    - NegCache::NegCacheEntry::DNSSECRecords::records::begin
    - insert
    - NegCache::NegCacheEntry::DNSSECRecords::signatures::end
    linkageType: ''
    returnType: void
    signature: void addNXNSECS(vector<DNSRecord>& ret, const vector<DNSRecord>& records)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/syncres.cc:3246,1
    - Dst: auto::getTarget
      Src: /src/pdns/pdns/recursordist/syncres.cc:3247,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 3
    argNames:
    - ' qname'
    - qtype
    - ' records'
    argTypes:
    - DNSName
    - QType
    - std::vector<DNSRecord>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3259
      start: 3238
    functionDepth: 0
    functionLinenumber: 3238
    functionLinenumberEnd: 3259
    functionName: rpzHitShouldReplaceContent
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 0
    functionsReached:
    - auto::getTarget
    - getRR
    linkageType: ''
    returnType: bool
    signature: bool rpzHitShouldReplaceContent(const DNSName& qname, const QType qtype,
      const std::vector<DNSRecord>& records)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/syncres.cc:3263,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/syncres.cc:3263,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/syncres.cc:3270,1
    - Dst: erase
      Src: /src/pdns/pdns/recursordist/syncres.cc:3279,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 18
    argCount: 3
    argNames:
    - ' records'
    - ' name'
    - dtype
    argTypes:
    - std::vector<DNSRecord>
    - DNSName
    - QType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3285
      start: 3261
    functionDepth: 0
    functionLinenumber: 3261
    functionLinenumberEnd: 3285
    functionName: removeConflictingRecord
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 0
    functionsReached:
    - erase
    - getRR
    - end
    - begin
    linkageType: ''
    returnType: void
    signature: void removeConflictingRecord(std::vector<DNSRecord>& records, const
      DNSName& name, const QType dtype)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: policyHitEventFilter
      Src: /src/pdns/pdns/recursordist/syncres.cc:3289,1
    - Dst: DNSFilterEngine::Policy
      Src: /src/pdns/pdns/recursordist/syncres.cc:3291,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/syncres.cc:3297,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/syncres.cc:3298,1
    - Dst: getName
      Src: /src/pdns/pdns/recursordist/syncres.cc:3298,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:3302,1
    - Dst: getLogString
      Src: /src/pdns/pdns/recursordist/syncres.cc:3302,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/syncres.cc:3311,1
    - Dst: ImmediateQueryDropException
      Src: /src/pdns/pdns/recursordist/syncres.cc:3312,1
    - Dst: clear
      Src: /src/pdns/pdns/recursordist/syncres.cc:3315,1
    - Dst: addSOAtoRPZResult
      Src: /src/pdns/pdns/recursordist/syncres.cc:3316,1
    - Dst: clear
      Src: /src/pdns/pdns/recursordist/syncres.cc:3322,1
    - Dst: addSOAtoRPZResult
      Src: /src/pdns/pdns/recursordist/syncres.cc:3323,1
    - Dst: clear
      Src: /src/pdns/pdns/recursordist/syncres.cc:3330,1
    - Dst: SendTruncatedAnswerException
      Src: /src/pdns/pdns/recursordist/syncres.cc:3334,1
    - Dst: rpzHitShouldReplaceContent
      Src: /src/pdns/pdns/recursordist/syncres.cc:3339,1
    - Dst: clear
      Src: /src/pdns/pdns/recursordist/syncres.cc:3340,1
    - Dst: getCustomRecords
      Src: /src/pdns/pdns/recursordist/syncres.cc:3345,1
    - Dst: QType::getCode
      Src: /src/pdns/pdns/recursordist/syncres.cc:3345,1
    - Dst: removeConflictingRecord
      Src: /src/pdns/pdns/recursordist/syncres.cc:3347,1
    - Dst: push_back
      Src: /src/pdns/pdns/recursordist/syncres.cc:3351,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/syncres.cc:3354,1
    - Dst: SyncRes::handleNewTarget
      Src: /src/pdns/pdns/recursordist/syncres.cc:3356,1
    - Dst: auto::getTarget
      Src: /src/pdns/pdns/recursordist/syncres.cc:3356,1
    - Dst: QType::getCode
      Src: /src/pdns/pdns/recursordist/syncres.cc:3356,1
    - Dst: addSOAtoRPZResult
      Src: /src/pdns/pdns/recursordist/syncres.cc:3360,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 55
    argCount: 7
    argNames:
    - ' prefix'
    - ' qname'
    - qtype
    - ' ret'
    - ' done'
    - ' rcode'
    - depth
    argTypes:
    - std::string
    - DNSName
    - QType
    - std::vector<DNSRecord>
    - bool
    - int
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3363
      start: 3287
    functionDepth: 1
    functionLinenumber: 3287
    functionLinenumberEnd: 3363
    functionName: SyncRes::handlePolicyHit
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 2
    functionsReached:
    - SendTruncatedAnswerException
    - auto::getTarget
    - policyHitEventFilter
    - getRR
    - getName
    - getCustomRecords
    - removeConflictingRecord
    - push_back
    - SyncRes::handleNewTarget
    - DNSFilterEngine::Policy
    - getLogString
    - ImmediateQueryDropException
    - QType::getCode
    - addSOAtoRPZResult
    - clear
    - LOG
    - rpzHitShouldReplaceContent
    - at
    linkageType: ''
    returnType: void
    signature: void SyncRes::handlePolicyHit(const std::string& prefix, const DNSName&
      qname, const QType qtype, std::vector<DNSRecord>& ret, bool& done, int& rcode,
      unsigned int depth)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: wasHit
      Src: /src/pdns/pdns/recursordist/syncres.cc:3373,1
    - Dst: getProcessingPolicy
      Src: /src/pdns/pdns/recursordist/syncres.cc:3375,1
    - Dst: mergePolicyTags
      Src: /src/pdns/pdns/recursordist/syncres.cc:3377,1
    - Dst: getTags
      Src: /src/pdns/pdns/recursordist/syncres.cc:3377,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:3379,1
    - Dst: getName
      Src: /src/pdns/pdns/recursordist/syncres.cc:3379,1
    - Dst: getProcessingPolicy
      Src: /src/pdns/pdns/recursordist/syncres.cc:3386,1
    - Dst: mergePolicyTags
      Src: /src/pdns/pdns/recursordist/syncres.cc:3388,1
    - Dst: getTags
      Src: /src/pdns/pdns/recursordist/syncres.cc:3388,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:3390,1
    - Dst: SyncRes::toString
      Src: /src/pdns/pdns/recursordist/syncres.cc:3390,1
    - Dst: getName
      Src: /src/pdns/pdns/recursordist/syncres.cc:3390,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 21
    argCount: 2
    argNames:
    - ' dfe'
    - ' nameservers'
    argTypes:
    - DNSFilterEngine
    - NsSet
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3398
      start: 3365
    functionDepth: 1
    functionLinenumber: 3365
    functionLinenumberEnd: 3398
    functionName: SyncRes::nameserversBlockedByRPZ
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 0
    functionsReached:
    - getName
    - getTags
    - mergePolicyTags
    - wasHit
    - SyncRes::toString
    - LOG
    - getProcessingPolicy
    linkageType: ''
    returnType: bool
    signature: bool SyncRes::nameserversBlockedByRPZ(const DNSFilterEngine& dfe, const
      NsSet& nameservers)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: wasHit
      Src: /src/pdns/pdns/recursordist/syncres.cc:3408,1
    - Dst: getProcessingPolicy
      Src: /src/pdns/pdns/recursordist/syncres.cc:3409,1
    - Dst: mergePolicyTags
      Src: /src/pdns/pdns/recursordist/syncres.cc:3411,1
    - Dst: getTags
      Src: /src/pdns/pdns/recursordist/syncres.cc:3411,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:3413,1
    - Dst: getName
      Src: /src/pdns/pdns/recursordist/syncres.cc:3413,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 2
    argNames:
    - ' dfe'
    - ' remoteIP'
    argTypes:
    - DNSFilterEngine
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3419
      start: 3400
    functionDepth: 1
    functionLinenumber: 3400
    functionLinenumberEnd: 3419
    functionName: SyncRes::nameserverIPBlockedByRPZ
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 0
    functionsReached:
    - getName
    - getTags
    - mergePolicyTags
    - wasHit
    - LOG
    - getProcessingPolicy
    linkageType: ''
    returnType: bool
    signature: bool SyncRes::nameserverIPBlockedByRPZ(const DNSFilterEngine& dfe,
      const ComboAddress& remoteIP)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: getLocal
      Src: /src/pdns/pdns/recursordist/syncres.cc:3424,1
    - Dst: auto::check
      Src: /src/pdns/pdns/recursordist/syncres.cc:3425,1
    - Dst: getLocal
      Src: /src/pdns/pdns/recursordist/syncres.cc:3430,1
    - Dst: auto::match
      Src: /src/pdns/pdns/recursordist/syncres.cc:3431,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 2
    argNames:
    - name
    - address
    argTypes:
    - DNSName*
    - ComboAddress*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3436
      start: 3421
    functionDepth: 0
    functionLinenumber: 3421
    functionLinenumberEnd: 3436
    functionName: shouldNotThrottle
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 0
    functionsReached:
    - getLocal
    - auto::match
    - auto::check
    linkageType: ''
    returnType: bool
    signature: bool shouldNotThrottle(const DNSName* name, const ComboAddress* address)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: first::empty
      Src: /src/pdns/pdns/recursordist/syncres.cc:3443,1
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/syncres.cc:3445,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:3447,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:3452,1
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/syncres.cc:3452,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/syncres.cc:3452,1
    - Dst: SyncRes::getAddrs
      Src: /src/pdns/pdns/recursordist/syncres.cc:3455,1
    - Dst: shouldNotThrottle
      Src: /src/pdns/pdns/recursordist/syncres.cc:3460,1
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/syncres.cc:3461,1
    - Dst: vector::empty
      Src: /src/pdns/pdns/recursordist/syncres.cc:3467,1
    - Dst: shouldNotThrottle
      Src: /src/pdns/pdns/recursordist/syncres.cc:3468,1
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/syncres.cc:3469,1
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/syncres.cc:3474,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:3480,1
    - Dst: first::size
      Src: /src/pdns/pdns/recursordist/syncres.cc:3482,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:3483,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:3485,1
    - Dst: SyncRes::shuffleForwardSpeed
      Src: /src/pdns/pdns/recursordist/syncres.cc:3488,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 42
    argCount: 11
    argNames:
    - ' prefix'
    - ' qname'
    - ' tns'
    - depth
    - ' beenthere'
    - ' rnameservers'
    - ' nameservers'
    - ' sendRDQuery'
    - ' pierceDontQuery'
    - cacheOnly
    - ' nretrieveAddressesForNS'
    argTypes:
    - std::string
    - DNSName
    - std::vector<std::pair<DNSName, float>>::const_iterator
    - unsigned int
    - set<GetBestNSAnswer>
    - vector<std::pair<DNSName, float>>
    - NsSet
    - bool
    - bool
    - bool
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3492
      start: 3438
    functionDepth: 4
    functionLinenumber: 3438
    functionLinenumberEnd: 3492
    functionName: SyncRes::retrieveAddressesForNS
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 0
    functionsReached:
    - first::size
    - size
    - lock
    - vector::empty
    - shouldNotThrottle
    - begin
    - LOG
    - first::empty
    - SyncRes::getAddrs
    - SyncRes::shuffleForwardSpeed
    linkageType: ''
    returnType: vector<ComboAddress>
    signature: vector<ComboAddress> SyncRes::retrieveAddressesForNS(const std::string&
      prefix, const DNSName& qname, std::vector<std::pair<DNSName, float>>::const_iterator&
      tns, const unsigned int depth, set<GetBestNSAnswer>& beenthere, const vector<std::pair<DNSName,
      float>>& rnameservers, NsSet& nameservers, bool& sendRDQuery, bool& pierceDontQuery,
      bool& /* flawedNSSet */, bool cacheOnly, unsigned int& nretrieveAddressesForNS)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ImmediateServFailException
      Src: /src/pdns/pdns/recursordist/syncres.cc:3497,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/syncres.cc:3497,1
    - Dst: toLogString
      Src: /src/pdns/pdns/recursordist/syncres.cc:3497,1
    - Dst: ImmediateServFailException
      Src: /src/pdns/pdns/recursordist/syncres.cc:3500,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/syncres.cc:3500,1
    - Dst: toLogString
      Src: /src/pdns/pdns/recursordist/syncres.cc:3500,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 7
    argCount: 1
    argNames:
    - ' qname'
    argTypes:
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3502
      start: 3494
    functionDepth: 0
    functionLinenumber: 3494
    functionLinenumberEnd: 3502
    functionName: SyncRes::checkMaxQperQ
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 0
    functionsReached:
    - toLogString
    - ImmediateServFailException
    - std::to_string
    linkageType: ''
    returnType: void
    signature: void SyncRes::checkMaxQperQ(const DNSName& qname) const
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: SyncRes::isThrottled
      Src: /src/pdns/pdns/recursordist/syncres.cc:3506,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:3507,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/syncres.cc:3508,1
    - Dst: SyncRes::isThrottled
      Src: /src/pdns/pdns/recursordist/syncres.cc:3512,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:3513,1
    - Dst: SyncRes::toString
      Src: /src/pdns/pdns/recursordist/syncres.cc:3513,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/syncres.cc:3514,1
    - Dst: match
      Src: /src/pdns/pdns/recursordist/syncres.cc:3518,1
    - Dst: SyncRes::getBestAuthZone
      Src: /src/pdns/pdns/recursordist/syncres.cc:3522,1
    - Dst: domainmap::end
      Src: /src/pdns/pdns/recursordist/syncres.cc:3523,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:3524,1
    - Dst: SyncRes::toString
      Src: /src/pdns/pdns/recursordist/syncres.cc:3524,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/syncres.cc:3525,1
    - Dst: std::find
      Src: /src/pdns/pdns/recursordist/syncres.cc:3530,1
    - Dst: cbegin
      Src: /src/pdns/pdns/recursordist/syncres.cc:3530,1
    - Dst: cend
      Src: /src/pdns/pdns/recursordist/syncres.cc:3530,1
    - Dst: cend
      Src: /src/pdns/pdns/recursordist/syncres.cc:3530,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:3531,1
    - Dst: SyncRes::toString
      Src: /src/pdns/pdns/recursordist/syncres.cc:3531,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/syncres.cc:3532,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:3535,1
    - Dst: SyncRes::toString
      Src: /src/pdns/pdns/recursordist/syncres.cc:3535,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 27
    argCount: 5
    argNames:
    - ' prefix'
    - ' remoteIP'
    - ' qname'
    - qtype
    - pierceDontQuery
    argTypes:
    - std::string
    - ComboAddress
    - DNSName
    - QType
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3538
      start: 3504
    functionDepth: 1
    functionLinenumber: 3504
    functionLinenumberEnd: 3538
    functionName: SyncRes::throttledOrBlocked
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 0
    functionsReached:
    - domainmap::end
    - SyncRes::getBestAuthZone
    - SyncRes::toString
    - match
    - cbegin
    - std::find
    - cend
    - SyncRes::isThrottled
    - LOG
    - at
    linkageType: ''
    returnType: bool
    signature: bool SyncRes::throttledOrBlocked(const std::string& prefix, const ComboAddress&
      remoteIP, const DNSName& qname, const QType qtype, bool pierceDontQuery)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3543
      start: 3540
    functionDepth: 0
    functionLinenumber: 3540
    functionLinenumberEnd: 3543
    functionName: SyncRes::validationEnabled
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool SyncRes::validationEnabled()
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: pdns::max
      Src: /src/pdns/pdns/recursordist/syncres.cc:3547,1
    - Dst: min
      Src: /src/pdns/pdns/recursordist/syncres.cc:3549,1
    - Dst: SyncRes::validationEnabled
      Src: /src/pdns/pdns/recursordist/syncres.cc:3554,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/syncres.cc:3554,1
    - Dst: min
      Src: /src/pdns/pdns/recursordist/syncres.cc:3557,1
    - Dst: static_cast<uint32_t>
      Src: /src/pdns/pdns/recursordist/syncres.cc:3557,1
    - Dst: isRRSIGNotExpired
      Src: /src/pdns/pdns/recursordist/syncres.cc:3560,1
    - Dst: min
      Src: /src/pdns/pdns/recursordist/syncres.cc:3562,1
    - Dst: static_cast<uint32_t>
      Src: /src/pdns/pdns/recursordist/syncres.cc:3562,1
    - Dst: min
      Src: /src/pdns/pdns/recursordist/syncres.cc:3569,1
    - Dst: static_cast<uint32_t>
      Src: /src/pdns/pdns/recursordist/syncres.cc:3569,1
    - Dst: SyncRes::validationEnabled
      Src: /src/pdns/pdns/recursordist/syncres.cc:3571,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/syncres.cc:3572,1
    - Dst: isRRSIGNotExpired
      Src: /src/pdns/pdns/recursordist/syncres.cc:3574,1
    - Dst: min
      Src: /src/pdns/pdns/recursordist/syncres.cc:3576,1
    - Dst: static_cast<uint32_t>
      Src: /src/pdns/pdns/recursordist/syncres.cc:3576,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 20
    argCount: 4
    argNames:
    - ' records'
    - ' signatures'
    - signaturesTTL
    - ' authorityRecs'
    argTypes:
    - std::vector<DNSRecord>
    - MemRecursorCache::SigRecsVec
    - uint32_t
    - MemRecursorCache::AuthRecsVec
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3583
      start: 3545
    functionDepth: 1
    functionLinenumber: 3545
    functionLinenumberEnd: 3583
    functionName: SyncRes::computeLowestTTD
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 0
    functionsReached:
    - pdns::max
    - isRRSIGNotExpired
    - getRR
    - static_cast<uint32_t>
    - empty
    - min
    - SyncRes::validationEnabled
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t SyncRes::computeLowestTTD(const std::vector<DNSRecord>& records,
      const MemRecursorCache::SigRecsVec& signatures, uint32_t signaturesTTL, const
      MemRecursorCache::AuthRecsVec& authorityRecs) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:3587,1
    - Dst: updateDNSSECValidationState
      Src: /src/pdns/pdns/recursordist/syncres.cc:3588,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:3589,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 4
    argNames:
    - ' qname'
    - ' state'
    - stateUpdate
    - ' prefix'
    argTypes:
    - DNSName
    - vState
    - vState
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3590
      start: 3585
    functionDepth: 1
    functionLinenumber: 3585
    functionLinenumberEnd: 3590
    functionName: SyncRes::updateValidationState
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 2
    functionsReached:
    - LOG
    - updateDNSSECValidationState
    linkageType: ''
    returnType: void
    signature: void SyncRes::updateValidationState(const DNSName& qname, vState& state,
      const vState stateUpdate, const string& prefix)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: getLocal
      Src: /src/pdns/pdns/recursordist/syncres.cc:3594,1
    - Dst: auto::dsAnchors::empty
      Src: /src/pdns/pdns/recursordist/syncres.cc:3596,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:3597,1
    - Dst: haveNegativeTrustAnchor
      Src: /src/pdns/pdns/recursordist/syncres.cc:3603,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:3604,1
    - Dst: getTrustAnchor
      Src: /src/pdns/pdns/recursordist/syncres.cc:3608,1
    - Dst: isRoot
      Src: /src/pdns/pdns/recursordist/syncres.cc:3609,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:3610,1
    - Dst: isRoot
      Src: /src/pdns/pdns/recursordist/syncres.cc:3615,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 3
    argNames:
    - ' zone'
    - ' dsSet'
    - ' prefix'
    argTypes:
    - DNSName
    - dsset_t
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3621
      start: 3592
    functionDepth: 1
    functionLinenumber: 3592
    functionLinenumberEnd: 3621
    functionName: SyncRes::getTA
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 0
    functionsReached:
    - getTrustAnchor
    - auto::dsAnchors::empty
    - getLocal
    - haveNegativeTrustAnchor
    - isRoot
    - LOG
    linkageType: ''
    returnType: vState
    signature: vState SyncRes::getTA(const DNSName& zone, dsset_t& dsSet, const string&
      prefix)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: isSupportedDS
      Src: /src/pdns/pdns/recursordist/syncres.cc:3628,1
    - Dst: SyncRes::LogObject
      Src: /src/pdns/pdns/recursordist/syncres.cc:3628,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - ' dsset'
    - ' prefix'
    argTypes:
    - dsset_t
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3634
      start: 3623
    functionDepth: 1
    functionLinenumber: 3623
    functionLinenumberEnd: 3634
    functionName: SyncRes::countSupportedDS
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 0
    functionsReached:
    - isSupportedDS
    - SyncRes::LogObject
    linkageType: ''
    returnType: size_t
    signature: size_t SyncRes::countSupportedDS(const dsset_t& dsset, const string&
      prefix)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: SyncRes::getTA
      Src: /src/pdns/pdns/recursordist/syncres.cc:3641,1
    - Dst: SyncRes::countSupportedDS
      Src: /src/pdns/pdns/recursordist/syncres.cc:3644,1
    - Dst: dsset_t::clear
      Src: /src/pdns/pdns/recursordist/syncres.cc:3645,1
    - Dst: DNSName::chopOff
      Src: /src/pdns/pdns/recursordist/syncres.cc:3658,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 2
    argNames:
    - ' from'
    - ' prefix'
    argTypes:
    - DNSName
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3659
      start: 3636
    functionDepth: 2
    functionLinenumber: 3636
    functionLinenumberEnd: 3659
    functionName: SyncRes::initZoneCutsFromTA
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 1
    functionsReached:
    - DNSName::chopOff
    - dsset_t::clear
    - SyncRes::countSupportedDS
    - SyncRes::getTA
    linkageType: ''
    returnType: void
    signature: void SyncRes::initZoneCutsFromTA(const DNSName& from, const string&
      prefix)
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: SyncRes::getTA
      Src: /src/pdns/pdns/recursordist/syncres.cc:3663,1
    - Dst: SyncRes::countSupportedDS
      Src: /src/pdns/pdns/recursordist/syncres.cc:3671,1
    - Dst: clear
      Src: /src/pdns/pdns/recursordist/syncres.cc:3672,1
    - Dst: SyncRes::setCacheOnly
      Src: /src/pdns/pdns/recursordist/syncres.cc:3691,1
    - Dst: SyncRes::setQNameMinimization
      Src: /src/pdns/pdns/recursordist/syncres.cc:3692,1
    - Dst: SyncRes::getQMFallbackMode
      Src: /src/pdns/pdns/recursordist/syncres.cc:3692,1
    - Dst: SyncRes::doResolve
      Src: /src/pdns/pdns/recursordist/syncres.cc:3693,1
    - Dst: SyncRes::setCacheOnly
      Src: /src/pdns/pdns/recursordist/syncres.cc:3694,1
    - Dst: SyncRes::setQNameMinimization
      Src: /src/pdns/pdns/recursordist/syncres.cc:3695,1
    - Dst: ImmediateServFailException
      Src: /src/pdns/pdns/recursordist/syncres.cc:3698,1
    - Dst: toLogString
      Src: /src/pdns/pdns/recursordist/syncres.cc:3698,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:3702,1
    - Dst: static_cast<const char*>
      Src: /src/pdns/pdns/recursordist/syncres.cc:3702,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/syncres.cc:3711,1
    - Dst: isSupportedDS
      Src: /src/pdns/pdns/recursordist/syncres.cc:3712,1
    - Dst: SyncRes::LogObject
      Src: /src/pdns/pdns/recursordist/syncres.cc:3712,1
    - Dst: insert
      Src: /src/pdns/pdns/recursordist/syncres.cc:3720,1
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/syncres.cc:3732,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/syncres.cc:3732,1
    - Dst: erase
      Src: /src/pdns/pdns/recursordist/syncres.cc:3734,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/syncres.cc:3742,1
    - Dst: denialProvesNoDelegation
      Src: /src/pdns/pdns/recursordist/syncres.cc:3747,1
    CyclomaticComplexity: 33
    EdgeCount: 33
    ICount: 69
    argCount: 7
    argNames:
    - ' zone'
    - ' dsSet'
    - onlyTA
    - depth
    - ' prefix'
    - bogusOnNXD
    - foundCut
    argTypes:
    - DNSName
    - dsset_t
    - bool
    - unsigned int
    - string
    - bool
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3776
      start: 3661
    functionDepth: 3
    functionLinenumber: 3661
    functionLinenumberEnd: 3776
    functionName: SyncRes::getDSRecords
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 0
    functionsReached:
    - toLogString
    - static_cast<const char*>
    - SyncRes::LogObject
    - SyncRes::setQNameMinimization
    - insert
    - SyncRes::getTA
    - erase
    - SyncRes::setCacheOnly
    - SyncRes::doResolve
    - begin
    - empty
    - clear
    - LOG
    - SyncRes::getQMFallbackMode
    - denialProvesNoDelegation
    - getRR
    - isSupportedDS
    - end
    - SyncRes::countSupportedDS
    - ImmediateServFailException
    linkageType: ''
    returnType: vState
    signature: vState SyncRes::getDSRecords(const DNSName& zone, dsset_t& dsSet, bool
      onlyTA, unsigned int depth, const string& prefix, bool bogusOnNXD, bool* foundCut)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: SyncRes::shouldValidate
      Src: /src/pdns/pdns/recursordist/syncres.cc:3782,1
    - Dst: DNSName::chopOff
      Src: /src/pdns/pdns/recursordist/syncres.cc:3788,1
    - Dst: find
      Src: /src/pdns/pdns/recursordist/syncres.cc:3792,1
    - Dst: cend
      Src: /src/pdns/pdns/recursordist/syncres.cc:3793,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:3794,1
    - Dst: DNSName::chopOff
      Src: /src/pdns/pdns/recursordist/syncres.cc:3801,1
    - Dst: find
      Src: /src/pdns/pdns/recursordist/syncres.cc:3802,1
    - Dst: cend
      Src: /src/pdns/pdns/recursordist/syncres.cc:3803,1
    - Dst: vStateIsBogus
      Src: /src/pdns/pdns/recursordist/syncres.cc:3805,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:3806,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:3819,1
    - Dst: DNSName::makeRelative
      Src: /src/pdns/pdns/recursordist/syncres.cc:3821,1
    - Dst: std::vector::empty
      Src: /src/pdns/pdns/recursordist/syncres.cc:3823,1
    - Dst: DNSName::prependRawLabel
      Src: /src/pdns/pdns/recursordist/syncres.cc:3825,1
    - Dst: std::vector::back
      Src: /src/pdns/pdns/recursordist/syncres.cc:3825,1
    - Dst: std::vector::pop_back
      Src: /src/pdns/pdns/recursordist/syncres.cc:3826,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:3827,1
    - Dst: SyncRes::getDSRecords
      Src: /src/pdns/pdns/recursordist/syncres.cc:3831,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:3834,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:3835,1
    - Dst: getSigner
      Src: /src/pdns/pdns/recursordist/syncres.cc:3850,1
    - Dst: DNSName::empty
      Src: /src/pdns/pdns/recursordist/syncres.cc:3852,1
    - Dst: isPartOf
      Src: /src/pdns/pdns/recursordist/syncres.cc:3852,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 45
    argCount: 5
    argNames:
    - ' name'
    - wouldBeValid
    - typeIsDS
    - depth
    - ' prefix'
    argTypes:
    - DNSName
    - bool
    - bool
    - unsigned int
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3866
      start: 3778
    functionDepth: 4
    functionLinenumber: 3778
    functionLinenumberEnd: 3866
    functionName: SyncRes::getValidationStatus
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 3
    functionsReached:
    - isPartOf
    - getSigner
    - DNSName::chopOff
    - DNSName::prependRawLabel
    - SyncRes::getDSRecords
    - vStateIsBogus
    - std::vector::pop_back
    - std::vector::back
    - DNSName::makeRelative
    - DNSName::empty
    - cend
    - std::vector::empty
    - LOG
    - SyncRes::shouldValidate
    - find
    linkageType: ''
    returnType: vState
    signature: vState SyncRes::getValidationStatus(const DNSName& name, bool wouldBeValid,
      bool typeIsDS, unsigned int depth, const string& prefix)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/syncres.cc:3871,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:3872,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/syncres.cc:3872,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/syncres.cc:3872,1
    - Dst: getSigner
      Src: /src/pdns/pdns/recursordist/syncres.cc:3876,1
    - Dst: DNSName::empty
      Src: /src/pdns/pdns/recursordist/syncres.cc:3878,1
    - Dst: isPartOf
      Src: /src/pdns/pdns/recursordist/syncres.cc:3878,1
    - Dst: SyncRes::getDSRecords
      Src: /src/pdns/pdns/recursordist/syncres.cc:3879,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:3886,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/syncres.cc:3886,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/syncres.cc:3886,1
    - Dst: SyncRes::getValidationStatus
      Src: /src/pdns/pdns/recursordist/syncres.cc:3888,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:3891,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/syncres.cc:3891,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/syncres.cc:3891,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/syncres.cc:3902,1
    - Dst: skeyset_t::insert
      Src: /src/pdns/pdns/recursordist/syncres.cc:3904,1
    - Dst: sortedRecords_t::insert
      Src: /src/pdns/pdns/recursordist/syncres.cc:3905,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:3910,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/syncres.cc:3910,1
    - Dst: skeyset_t::size
      Src: /src/pdns/pdns/recursordist/syncres.cc:3910,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/syncres.cc:3910,1
    - Dst: dsset_t::size
      Src: /src/pdns/pdns/recursordist/syncres.cc:3910,1
    - Dst: validateDNSKeysAgainstDS
      Src: /src/pdns/pdns/recursordist/syncres.cc:3912,1
    - Dst: SyncRes::LogObject
      Src: /src/pdns/pdns/recursordist/syncres.cc:3912,1
    - Dst: ImmediateServFailException
      Src: /src/pdns/pdns/recursordist/syncres.cc:3915,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:3918,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/syncres.cc:3918,1
    - Dst: skeyset_t::size
      Src: /src/pdns/pdns/recursordist/syncres.cc:3918,1
    - Dst: skeyset_t::size
      Src: /src/pdns/pdns/recursordist/syncres.cc:3924,1
    - Dst: skeyset_t::size
      Src: /src/pdns/pdns/recursordist/syncres.cc:3924,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:3925,1
    - Dst: static_cast<const char*>
      Src: /src/pdns/pdns/recursordist/syncres.cc:3925,1
    - Dst: SyncRes::getValidationStatus
      Src: /src/pdns/pdns/recursordist/syncres.cc:3927,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:3930,1
    - Dst: static_cast<const char*>
      Src: /src/pdns/pdns/recursordist/syncres.cc:3930,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 38
    argCount: 5
    argNames:
    - ' zone'
    - ' dnskeys'
    - ' signatures'
    - depth
    - ' prefix'
    argTypes:
    - DNSName
    - std::vector<DNSRecord>
    - MemRecursorCache::SigRecsVec
    - unsigned int
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3937
      start: 3868
    functionDepth: 5
    functionLinenumber: 3868
    functionLinenumberEnd: 3937
    functionName: SyncRes::validateDNSKeys
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 1
    functionsReached:
    - getRR
    - isPartOf
    - getSigner
    - std::to_string
    - SyncRes::getValidationStatus
    - SyncRes::getDSRecords
    - static_cast<const char*>
    - size
    - skeyset_t::insert
    - SyncRes::LogObject
    - sortedRecords_t::insert
    - dsset_t::size
    - validateDNSKeysAgainstDS
    - DNSName::empty
    - skeyset_t::size
    - empty
    - LOG
    - ImmediateServFailException
    linkageType: ''
    returnType: vState
    signature: vState SyncRes::validateDNSKeys(const DNSName& zone, const std::vector<DNSRecord>&
      dnskeys, const MemRecursorCache::SigRecsVec& signatures, unsigned int depth,
      const string& prefix)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:3943,1
    - Dst: SyncRes::setCacheOnly
      Src: /src/pdns/pdns/recursordist/syncres.cc:3947,1
    - Dst: SyncRes::doResolve
      Src: /src/pdns/pdns/recursordist/syncres.cc:3948,1
    - Dst: SyncRes::setCacheOnly
      Src: /src/pdns/pdns/recursordist/syncres.cc:3949,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/syncres.cc:3960,1
    - Dst: insert
      Src: /src/pdns/pdns/recursordist/syncres.cc:3962,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/syncres.cc:3962,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:3967,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/syncres.cc:3967,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:3975,1
    - Dst: static_cast<const char*>
      Src: /src/pdns/pdns/recursordist/syncres.cc:3975,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 24
    argCount: 5
    argNames:
    - ' signer'
    - ' keys'
    - ' servFailOccurred'
    - depth
    - ' prefix'
    argTypes:
    - DNSName
    - skeyset_t
    - bool
    - unsigned int
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3977
      start: 3939
    functionDepth: 3
    functionLinenumber: 3939
    functionLinenumberEnd: 3977
    functionName: SyncRes::getDNSKeys
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 0
    functionsReached:
    - getRR
    - std::move
    - SyncRes::setCacheOnly
    - static_cast<const char*>
    - size
    - SyncRes::doResolve
    - insert
    - LOG
    linkageType: ''
    returnType: vState
    signature: vState SyncRes::getDNSKeys(const DNSName& signer, skeyset_t& keys,
      bool& servFailOccurred, unsigned int depth, const string& prefix)
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/syncres.cc:3982,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:3983,1
    - Dst: getSigner
      Src: /src/pdns/pdns/recursordist/syncres.cc:3987,1
    - Dst: DNSName::empty
      Src: /src/pdns/pdns/recursordist/syncres.cc:3989,1
    - Dst: isPartOf
      Src: /src/pdns/pdns/recursordist/syncres.cc:3989,1
    - Dst: DNSName::isRoot
      Src: /src/pdns/pdns/recursordist/syncres.cc:3994,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:3998,1
    - Dst: DNSName::isRoot
      Src: /src/pdns/pdns/recursordist/syncres.cc:4002,1
    - Dst: SyncRes::getDSRecords
      Src: /src/pdns/pdns/recursordist/syncres.cc:4025,1
    - Dst: vStateIsBogus
      Src: /src/pdns/pdns/recursordist/syncres.cc:4026,1
    - Dst: vStateIsBogus
      Src: /src/pdns/pdns/recursordist/syncres.cc:4028,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:4033,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:4042,1
    - Dst: SyncRes::getDNSKeys
      Src: /src/pdns/pdns/recursordist/syncres.cc:4049,1
    - Dst: vStateIsBogus
      Src: /src/pdns/pdns/recursordist/syncres.cc:4053,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:4057,1
    - Dst: QType::toString
      Src: /src/pdns/pdns/recursordist/syncres.cc:4057,1
    - Dst: SyncRes::getValidationStatus
      Src: /src/pdns/pdns/recursordist/syncres.cc:4058,1
    - Dst: ImmediateServFailException
      Src: /src/pdns/pdns/recursordist/syncres.cc:4061,1
    - Dst: DNSName::toLogString
      Src: /src/pdns/pdns/recursordist/syncres.cc:4061,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:4064,1
    - Dst: vStateToString
      Src: /src/pdns/pdns/recursordist/syncres.cc:4064,1
    - Dst: sortedRecords_t::insert
      Src: /src/pdns/pdns/recursordist/syncres.cc:4073,1
    - Dst: getContent
      Src: /src/pdns/pdns/recursordist/syncres.cc:4073,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:4076,1
    - Dst: sortedRecords_t::size
      Src: /src/pdns/pdns/recursordist/syncres.cc:4076,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/syncres.cc:4076,1
    - Dst: skeyset_t::size
      Src: /src/pdns/pdns/recursordist/syncres.cc:4076,1
    - Dst: QType::toString
      Src: /src/pdns/pdns/recursordist/syncres.cc:4076,1
    - Dst: validateWithKeySet
      Src: /src/pdns/pdns/recursordist/syncres.cc:4077,1
    - Dst: SyncRes::LogObject
      Src: /src/pdns/pdns/recursordist/syncres.cc:4077,1
    - Dst: ImmediateServFailException
      Src: /src/pdns/pdns/recursordist/syncres.cc:4079,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:4083,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:4087,1
    - Dst: vStateToString
      Src: /src/pdns/pdns/recursordist/syncres.cc:4087,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:4096,1
    - Dst: SyncRes::getValidationStatus
      Src: /src/pdns/pdns/recursordist/syncres.cc:4101,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:4102,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:4105,1
    - Dst: vStateToString
      Src: /src/pdns/pdns/recursordist/syncres.cc:4105,1
    CyclomaticComplexity: 42
    EdgeCount: 42
    ICount: 79
    argCount: 8
    argNames:
    - depth
    - ' prefix'
    - ' qname'
    - qtype
    - ' name'
    - type
    - ' records'
    - ' signatures'
    argTypes:
    - unsigned int
    - string
    - DNSName
    - QType
    - DNSName
    - QType
    - std::vector<DNSRecord>
    - MemRecursorCache::SigRecsVec
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4109
      start: 3979
    functionDepth: 5
    functionLinenumber: 3979
    functionLinenumberEnd: 4109
    functionName: SyncRes::validateRecordsWithSigs
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 3
    functionsReached:
    - getSigner
    - SyncRes::getValidationStatus
    - SyncRes::getDSRecords
    - vStateIsBogus
    - SyncRes::LogObject
    - DNSName::toLogString
    - validateWithKeySet
    - DNSName::isRoot
    - size
    - empty
    - LOG
    - isPartOf
    - QType::toString
    - SyncRes::getDNSKeys
    - sortedRecords_t::insert
    - DNSName::empty
    - sortedRecords_t::size
    - getContent
    - skeyset_t::size
    - vStateToString
    - ImmediateServFailException
    linkageType: ''
    returnType: vState
    signature: vState SyncRes::validateRecordsWithSigs(unsigned int depth, const string&
      prefix, const DNSName& qname, const QType qtype, const DNSName& name, const
      QType type, const std::vector<DNSRecord>& records, const MemRecursorCache::SigRecsVec&
      signatures)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: d_name::isPartOf
      Src: /src/pdns/pdns/recursordist/syncres.cc:4136,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:4139,1
    - Dst: DNSRecordContent::NumberToType
      Src: /src/pdns/pdns/recursordist/syncres.cc:4139,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 22
    argCount: 7
    argNames:
    - ' prefix'
    - ' lwr'
    - ' qname'
    - qtype
    - ' auth'
    - wasForwarded
    - rdQuery
    argTypes:
    - std::string
    - LWResult
    - DNSName
    - QType
    - DNSName
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4149
      start: 4113
    functionDepth: 1
    functionLinenumber: 4113
    functionLinenumberEnd: 4149
    functionName: SyncRes::fixupAnswer
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 0
    functionsReached:
    - d_name::isPartOf
    - LOG
    - DNSRecordContent::NumberToType
    linkageType: ''
    returnType: void
    signature: void SyncRes::fixupAnswer(const std::string& prefix, LWResult& lwr,
      const DNSName& qname, const QType qtype, const DNSName& auth, bool wasForwarded,
      bool rdQuery)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/recursordist/syncres.cc:4156,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/syncres.cc:4161,1
    - Dst: insert
      Src: /src/pdns/pdns/recursordist/syncres.cc:4162,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/syncres.cc:4166,1
    - Dst: insert
      Src: /src/pdns/pdns/recursordist/syncres.cc:4167,1
    - Dst: auto::getNS
      Src: /src/pdns/pdns/recursordist/syncres.cc:4167,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/syncres.cc:4171,1
    - Dst: insert
      Src: /src/pdns/pdns/recursordist/syncres.cc:4172,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/syncres.cc:4177,1
    - Dst: auto::getPriority
      Src: /src/pdns/pdns/recursordist/syncres.cc:4178,1
    - Dst: auto::getTarget
      Src: /src/pdns/pdns/recursordist/syncres.cc:4179,1
    - Dst: DNSName::isRoot
      Src: /src/pdns/pdns/recursordist/syncres.cc:4180,1
    - Dst: insert
      Src: /src/pdns/pdns/recursordist/syncres.cc:4183,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/syncres.cc:4183,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/syncres.cc:4191,1
    - Dst: auto::getFlags
      Src: /src/pdns/pdns/recursordist/syncres.cc:4192,1
    - Dst: toLowerInPlace
      Src: /src/pdns/pdns/recursordist/syncres.cc:4193,1
    - Dst: auto::find
      Src: /src/pdns/pdns/recursordist/syncres.cc:4194,1
    - Dst: auto::find
      Src: /src/pdns/pdns/recursordist/syncres.cc:4194,1
    - Dst: insert
      Src: /src/pdns/pdns/recursordist/syncres.cc:4195,1
    - Dst: auto::getReplacement
      Src: /src/pdns/pdns/recursordist/syncres.cc:4195,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 43
    argCount: 2
    argNames:
    - ' allowedAdditionals'
    - ' rec'
    argTypes:
    - std::unordered_set<DNSName>
    - DNSRecord
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4202
      start: 4151
    functionDepth: 2
    functionLinenumber: 4151
    functionLinenumberEnd: 4202
    functionName: allowAdditionalEntry
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 1
    functionsReached:
    - auto::getTarget
    - getRR
    - auto::getPriority
    - std::move
    - toLowerInPlace
    - auto::getFlags
    - DNSName::isRoot
    - auto::getNS
    - size
    - auto::getReplacement
    - insert
    - auto::find
    linkageType: ''
    returnType: void
    signature: void allowAdditionalEntry(std::unordered_set<DNSName>& allowedAdditionals,
      const DNSRecord& rec)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - qtype
    argTypes:
    - QType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4207
      start: 4204
    functionDepth: 0
    functionLinenumber: 4204
    functionLinenumberEnd: 4207
    functionName: isRedirection
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool isRedirection(QType qtype)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: find
      Src: /src/pdns/pdns/recursordist/syncres.cc:4215,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/syncres.cc:4215,1
    - Dst: std::unordered_set::emplace
      Src: /src/pdns/pdns/recursordist/syncres.cc:4216,1
    - Dst: erase
      Src: /src/pdns/pdns/recursordist/syncres.cc:4219,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 2
    argNames:
    - ' qname'
    - ' cnameChain'
    argTypes:
    - DNSName
    - std::unordered_map<DNSName, DNSName>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4226
      start: 4210
    functionDepth: 0
    functionLinenumber: 4210
    functionLinenumberEnd: 4226
    functionName: sanitizeCNAMEChain
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 0
    functionsReached:
    - std::unordered_set::emplace
    - erase
    - end
    - find
    linkageType: ''
    returnType: std::unordered_set<DNSName>
    signature: std::unordered_set<DNSName> sanitizeCNAMEChain(const DNSName& qname,
      std::unordered_map<DNSName, DNSName>& cnameChain)
  - BBCount: 23
    BranchProfiles: []
    Callsites:
    - Dst: d_records::size
      Src: /src/pdns/pdns/recursordist/syncres.cc:4241,1
    - Dst: d_records::cbegin
      Src: /src/pdns/pdns/recursordist/syncres.cc:4245,1
    - Dst: d_records::cend
      Src: /src/pdns/pdns/recursordist/syncres.cc:4245,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:4254,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:4262,1
    - Dst: auto::d_name::isPartOf
      Src: /src/pdns/pdns/recursordist/syncres.cc:4269,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:4270,1
    - Dst: auto::toString
      Src: /src/pdns/pdns/recursordist/syncres.cc:4270,1
    - Dst: DNSResourceRecord::placeString
      Src: /src/pdns/pdns/recursordist/syncres.cc:4270,1
    - Dst: isPartOf
      Src: /src/pdns/pdns/recursordist/syncres.cc:4279,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:4280,1
    - Dst: auto::toString
      Src: /src/pdns/pdns/recursordist/syncres.cc:4280,1
    - Dst: DNSResourceRecord::placeString
      Src: /src/pdns/pdns/recursordist/syncres.cc:4280,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:4293,1
    - Dst: auto::toString
      Src: /src/pdns/pdns/recursordist/syncres.cc:4293,1
    - Dst: QType::getCode
      Src: /src/pdns/pdns/recursordist/syncres.cc:4300,1
    - Dst: isRedirection
      Src: /src/pdns/pdns/recursordist/syncres.cc:4300,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:4301,1
    - Dst: auto::toString
      Src: /src/pdns/pdns/recursordist/syncres.cc:4301,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/syncres.cc:4309,1
    - Dst: std::unordered_map::emplace
      Src: /src/pdns/pdns/recursordist/syncres.cc:4310,1
    - Dst: auto::getTarget
      Src: /src/pdns/pdns/recursordist/syncres.cc:4310,1
    - Dst: std::unordered_set::insert
      Src: /src/pdns/pdns/recursordist/syncres.cc:4316,1
    - Dst: allowAdditionalEntry
      Src: /src/pdns/pdns/recursordist/syncres.cc:4318,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:4325,1
    - Dst: auto::toString
      Src: /src/pdns/pdns/recursordist/syncres.cc:4325,1
    - Dst: auto::d_name::isPartOf
      Src: /src/pdns/pdns/recursordist/syncres.cc:4330,1
    - Dst: isPartOf
      Src: /src/pdns/pdns/recursordist/syncres.cc:4330,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:4335,1
    - Dst: auto::toString
      Src: /src/pdns/pdns/recursordist/syncres.cc:4335,1
    - Dst: isPartOf
      Src: /src/pdns/pdns/recursordist/syncres.cc:4343,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:4344,1
    - Dst: auto::toString
      Src: /src/pdns/pdns/recursordist/syncres.cc:4344,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:4351,1
    - Dst: auto::toString
      Src: /src/pdns/pdns/recursordist/syncres.cc:4351,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:4362,1
    - Dst: auto::toString
      Src: /src/pdns/pdns/recursordist/syncres.cc:4362,1
    - Dst: std::unordered_map::size
      Src: /src/pdns/pdns/recursordist/syncres.cc:4374,1
    - Dst: sanitizeCNAMEChain
      Src: /src/pdns/pdns/recursordist/syncres.cc:4375,1
    - Dst: std::unordered_set::insert
      Src: /src/pdns/pdns/recursordist/syncres.cc:4376,1
    - Dst: auto::begin
      Src: /src/pdns/pdns/recursordist/syncres.cc:4376,1
    - Dst: auto::end
      Src: /src/pdns/pdns/recursordist/syncres.cc:4376,1
    - Dst: SyncRes::sanitizeRecordsPass2
      Src: /src/pdns/pdns/recursordist/syncres.cc:4378,1
    CyclomaticComplexity: 58
    EdgeCount: 58
    ICount: 102
    argCount: 7
    argNames:
    - ' prefix'
    - ' lwr'
    - ' qname'
    - qtype
    - ' auth'
    - wasForwarded
    - rdQuery
    argTypes:
    - std::string
    - LWResult
    - DNSName
    - QType
    - DNSName
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4379
      start: 4228
    functionDepth: 3
    functionLinenumber: 4228
    functionLinenumberEnd: 4379
    functionName: SyncRes::sanitizeRecords
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 0
    functionsReached:
    - d_records::size
    - std::unordered_set::insert
    - auto::begin
    - std::unordered_map::emplace
    - allowAdditionalEntry
    - isRedirection
    - d_records::cend
    - LOG
    - isPartOf
    - auto::d_name::isPartOf
    - SyncRes::sanitizeRecordsPass2
    - sanitizeCNAMEChain
    - std::unordered_map::size
    - DNSResourceRecord::placeString
    - auto::toString
    - d_records::cbegin
    - auto::getTarget
    - getRR
    - QType::getCode
    - auto::end
    linkageType: ''
    returnType: void
    signature: void SyncRes::sanitizeRecords(const std::string& prefix, LWResult&
      lwr, const DNSName& qname, const QType qtype, const DNSName& auth, bool wasForwarded,
      bool rdQuery)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: d_records::cbegin
      Src: /src/pdns/pdns/recursordist/syncres.cc:4385,1
    - Dst: d_records::cend
      Src: /src/pdns/pdns/recursordist/syncres.cc:4385,1
    - Dst: count
      Src: /src/pdns/pdns/recursordist/syncres.cc:4396,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:4397,1
    - Dst: auto::toString
      Src: /src/pdns/pdns/recursordist/syncres.cc:4397,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:4403,1
    - Dst: auto::toString
      Src: /src/pdns/pdns/recursordist/syncres.cc:4403,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:4416,1
    - Dst: auto::toString
      Src: /src/pdns/pdns/recursordist/syncres.cc:4416,1
    - Dst: allowAdditionalEntry
      Src: /src/pdns/pdns/recursordist/syncres.cc:4421,1
    - Dst: count
      Src: /src/pdns/pdns/recursordist/syncres.cc:4425,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:4426,1
    - Dst: auto::toString
      Src: /src/pdns/pdns/recursordist/syncres.cc:4426,1
    - Dst: std::vector::reserve
      Src: /src/pdns/pdns/recursordist/syncres.cc:4435,1
    - Dst: d_records::size
      Src: /src/pdns/pdns/recursordist/syncres.cc:4435,1
    - Dst: d_records::size
      Src: /src/pdns/pdns/recursordist/syncres.cc:4436,1
    - Dst: std::vector::emplace_back
      Src: /src/pdns/pdns/recursordist/syncres.cc:4438,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/syncres.cc:4438,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/syncres.cc:4441,1
    - Dst: pdns::dedupRecords
      Src: /src/pdns/pdns/recursordist/syncres.cc:4445,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:4446,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 52
    argCount: 11
    argNames:
    - ' prefix'
    - ' lwr'
    - ' qname'
    - qtype
    - ' auth'
    - ' allowedAnswerNames'
    - ' allowedAdditionals'
    - cnameSeen
    - acceptDelegation
    - ' skipvec'
    - ' skipCount'
    argTypes:
    - std::string
    - LWResult
    - DNSName
    - QType
    - DNSName
    - std::unordered_set<DNSName>
    - std::unordered_set<DNSName>
    - bool
    - bool
    - std::vector<bool>
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4449
      start: 4381
    functionDepth: 3
    functionLinenumber: 4381
    functionLinenumberEnd: 4449
    functionName: SyncRes::sanitizeRecordsPass2
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 1
    functionsReached:
    - d_records::size
    - std::move
    - d_records::cend
    - pdns::dedupRecords
    - count
    - std::vector::emplace_back
    - std::vector::reserve
    - auto::toString
    - d_records::cbegin
    - LOG
    - allowAdditionalEntry
    linkageType: ''
    returnType: void
    signature: void SyncRes::sanitizeRecordsPass2(const std::string& prefix, LWResult&
      lwr, const DNSName& qname, const QType qtype, const DNSName& auth, std::unordered_set<DNSName>&
      allowedAnswerNames, std::unordered_set<DNSName>& allowedAdditionals, bool cnameSeen,
      bool acceptDelegation, std::vector<bool>& skipvec, unsigned int& skipCount)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: get
      Src: /src/pdns/pdns/recursordist/syncres.cc:4455,1
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/syncres.cc:4461,1
    - Dst: auto::find
      Src: /src/pdns/pdns/recursordist/syncres.cc:4462,1
    - Dst: auto::end
      Src: /src/pdns/pdns/recursordist/syncres.cc:4462,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/syncres.cc:4470,1
    - Dst: set::insert
      Src: /src/pdns/pdns/recursordist/syncres.cc:4471,1
    - Dst: auto::getNS
      Src: /src/pdns/pdns/recursordist/syncres.cc:4471,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/syncres.cc:4481,1
    - Dst: set::count
      Src: /src/pdns/pdns/recursordist/syncres.cc:4482,1
    - Dst: auto::getNS
      Src: /src/pdns/pdns/recursordist/syncres.cc:4482,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:4483,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/syncres.cc:4492,1
    - Dst: auto::getNS
      Src: /src/pdns/pdns/recursordist/syncres.cc:4493,1
    - Dst: SyncRes::getAddrs
      Src: /src/pdns/pdns/recursordist/syncres.cc:4496,1
    - Dst: map::emplace
      Src: /src/pdns/pdns/recursordist/syncres.cc:4497,1
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/syncres.cc:4503,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/syncres.cc:4503,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 29
    argCount: 4
    argNames:
    - ' domain'
    - ' newRecords'
    - depth
    - ' prefix'
    argTypes:
    - DNSName
    - vector<DNSRecord>
    - unsigned int
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4505
      start: 4451
    functionDepth: 4
    functionLinenumber: 4451
    functionLinenumberEnd: 4505
    functionName: SyncRes::rememberParentSetIfNeeded
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 0
    functionsReached:
    - getRR
    - set::insert
    - std::move
    - auto::getNS
    - map::emplace
    - lock
    - get
    - set::count
    - auto::end
    - LOG
    - SyncRes::getAddrs
    - auto::find
    linkageType: ''
    returnType: void
    signature: void SyncRes::rememberParentSetIfNeeded(const DNSName& domain, const
      vector<DNSRecord>& newRecords, unsigned int depth, const string& prefix)
  - BBCount: 68
    BranchProfiles: []
    Callsites:
    - Dst: SyncRes::fixupAnswer
      Src: /src/pdns/pdns/recursordist/syncres.cc:4512,1
    - Dst: SyncRes::sanitizeRecords
      Src: /src/pdns/pdns/recursordist/syncres.cc:4513,1
    - Dst: DNSName::DNSName
      Src: /src/pdns/pdns/recursordist/syncres.cc:4518,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/syncres.cc:4532,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/syncres.cc:4533,1
    - Dst: auto::getTarget
      Src: /src/pdns/pdns/recursordist/syncres.cc:4533,1
    - Dst: std::unordered_map::find
      Src: /src/pdns/pdns/recursordist/syncres.cc:4538,1
    - Dst: std::unordered_map::end
      Src: /src/pdns/pdns/recursordist/syncres.cc:4539,1
    - Dst: std::map::emplace
      Src: /src/pdns/pdns/recursordist/syncres.cc:4543,1
    - Dst: min
      Src: /src/pdns/pdns/recursordist/syncres.cc:4555,1
    - Dst: isPartOf
      Src: /src/pdns/pdns/recursordist/syncres.cc:4560,1
    - Dst: isPartOf
      Src: /src/pdns/pdns/recursordist/syncres.cc:4565,1
    - Dst: d_name::countLabels
      Src: /src/pdns/pdns/recursordist/syncres.cc:4569,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/syncres.cc:4571,1
    - Dst: std::map::find
      Src: /src/pdns/pdns/recursordist/syncres.cc:4577,1
    - Dst: std::map::end
      Src: /src/pdns/pdns/recursordist/syncres.cc:4577,1
    - Dst: isWildcardExpanded
      Src: /src/pdns/pdns/recursordist/syncres.cc:4577,1
    - Dst: isWildcardExpandedOntoItself
      Src: /src/pdns/pdns/recursordist/syncres.cc:4580,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:4586,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:4590,1
    - Dst: signatures::push_back
      Src: /src/pdns/pdns/recursordist/syncres.cc:4596,1
    - Dst: std::min
      Src: /src/pdns/pdns/recursordist/syncres.cc:4597,1
    - Dst: count
      Src: /src/pdns/pdns/recursordist/syncres.cc:4611,1
    - Dst: MemRecursorCache::AuthRecsVec::emplace_back
      Src: /src/pdns/pdns/recursordist/syncres.cc:4612,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/syncres.cc:4615,1
    - Dst: count
      Src: /src/pdns/pdns/recursordist/syncres.cc:4616,1
    - Dst: MemRecursorCache::AuthRecsVec::emplace_back
      Src: /src/pdns/pdns/recursordist/syncres.cc:4617,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:4626,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:4630,1
    - Dst: DNSRecordContent::NumberToType
      Src: /src/pdns/pdns/recursordist/syncres.cc:4630,1
    - Dst: getContent
      Src: /src/pdns/pdns/recursordist/syncres.cc:4630,1
    - Dst: d_name::isPartOf
      Src: /src/pdns/pdns/recursordist/syncres.cc:4634,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:4636,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:4639,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:4644,1
    - Dst: domainmap::empty
      Src: /src/pdns/pdns/recursordist/syncres.cc:4647,1
    - Dst: DNSName::chopOff
      Src: /src/pdns/pdns/recursordist/syncres.cc:4652,1
    - Dst: SyncRes::getBestAuthZone
      Src: /src/pdns/pdns/recursordist/syncres.cc:4654,1
    - Dst: domainmap::end
      Src: /src/pdns/pdns/recursordist/syncres.cc:4655,1
    - Dst: countLabels
      Src: /src/pdns/pdns/recursordist/syncres.cc:4655,1
    - Dst: auto::first::countLabels
      Src: /src/pdns/pdns/recursordist/syncres.cc:4655,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:4657,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:4660,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:4662,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:4665,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:4668,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:4672,1
    - Dst: min
      Src: /src/pdns/pdns/recursordist/syncres.cc:4675,1
    - Dst: records::push_back
      Src: /src/pdns/pdns/recursordist/syncres.cc:4681,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/syncres.cc:4681,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:4685,1
    - Dst: second::records::size
      Src: /src/pdns/pdns/recursordist/syncres.cc:4690,1
    - Dst: second::signatures::size
      Src: /src/pdns/pdns/recursordist/syncres.cc:4690,1
    - Dst: MemRecursorCache::AuthRecsVec::size
      Src: /src/pdns/pdns/recursordist/syncres.cc:4690,1
    - Dst: SyncRes::computeLowestTTD
      Src: /src/pdns/pdns/recursordist/syncres.cc:4691,1
    - Dst: tcache_t::begin
      Src: /src/pdns/pdns/recursordist/syncres.cc:4702,1
    - Dst: tcache_t::end
      Src: /src/pdns/pdns/recursordist/syncres.cc:4702,1
    - Dst: auto::second::records::empty
      Src: /src/pdns/pdns/recursordist/syncres.cc:4704,1
    - Dst: isPartOf
      Src: /src/pdns/pdns/recursordist/syncres.cc:4744,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:4758,1
    - Dst: DNSRecordContent::NumberToType
      Src: /src/pdns/pdns/recursordist/syncres.cc:4758,1
    - Dst: SyncRes::shouldValidate
      Src: /src/pdns/pdns/recursordist/syncres.cc:4780,1
    - Dst: SyncRes::getValidationStatus
      Src: /src/pdns/pdns/recursordist/syncres.cc:4781,1
    - Dst: auto::second::signatures::empty
      Src: /src/pdns/pdns/recursordist/syncres.cc:4781,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:4782,1
    - Dst: DNSRecordContent::NumberToType
      Src: /src/pdns/pdns/recursordist/syncres.cc:4782,1
    - Dst: getSigner
      Src: /src/pdns/pdns/recursordist/syncres.cc:4785,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:4786,1
    - Dst: SyncRes::validateDNSKeys
      Src: /src/pdns/pdns/recursordist/syncres.cc:4787,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:4790,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/syncres.cc:4790,1
    - Dst: SyncRes::validateRecordsWithSigs
      Src: /src/pdns/pdns/recursordist/syncres.cc:4791,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/syncres.cc:4791,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:4796,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:4799,1
    - Dst: SyncRes::updateValidationState
      Src: /src/pdns/pdns/recursordist/syncres.cc:4801,1
    - Dst: vStateIsBogus
      Src: /src/pdns/pdns/recursordist/syncres.cc:4805,1
    - Dst: std::min
      Src: /src/pdns/pdns/recursordist/syncres.cc:4809,1
    - Dst: static_cast<uint32_t>
      Src: /src/pdns/pdns/recursordist/syncres.cc:4809,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:4828,1
    - Dst: isIPv4
      Src: /src/pdns/pdns/recursordist/syncres.cc:4832,1
    - Dst: getBits
      Src: /src/pdns/pdns/recursordist/syncres.cc:4838,1
    - Dst: getBits
      Src: /src/pdns/pdns/recursordist/syncres.cc:4838,1
    - Dst: SyncRes::rememberParentSetIfNeeded
      Src: /src/pdns/pdns/recursordist/syncres.cc:4861,1
    - Dst: std::map::find
      Src: /src/pdns/pdns/recursordist/syncres.cc:4865,1
    - Dst: std::map::end
      Src: /src/pdns/pdns/recursordist/syncres.cc:4865,1
    - Dst: replace
      Src: /src/pdns/pdns/recursordist/syncres.cc:4869,1
    - Dst: wipeTyped
      Src: /src/pdns/pdns/recursordist/syncres.cc:4874,1
    - Dst: auto::second::signatures::empty
      Src: /src/pdns/pdns/recursordist/syncres.cc:4877,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/syncres.cc:4877,1
    - Dst: auto::second::signatures::at
      Src: /src/pdns/pdns/recursordist/syncres.cc:4880,1
    - Dst: auto::first::name::countLabels
      Src: /src/pdns/pdns/recursordist/syncres.cc:4881,1
    - Dst: isWildcardExpanded
      Src: /src/pdns/pdns/recursordist/syncres.cc:4883,1
    - Dst: isWildcardExpandedOntoItself
      Src: /src/pdns/pdns/recursordist/syncres.cc:4883,1
    - Dst: getNSECOwnerName
      Src: /src/pdns/pdns/recursordist/syncres.cc:4884,1
    - Dst: std::vector::reserve
      Src: /src/pdns/pdns/recursordist/syncres.cc:4887,1
    - Dst: auto::second::records::size
      Src: /src/pdns/pdns/recursordist/syncres.cc:4887,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/recursordist/syncres.cc:4891,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/syncres.cc:4891,1
    - Dst: replace
      Src: /src/pdns/pdns/recursordist/syncres.cc:4894,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/syncres.cc:4894,1
    - Dst: DNSName::empty
      Src: /src/pdns/pdns/recursordist/syncres.cc:4900,1
    - Dst: auto::second::signatures::empty
      Src: /src/pdns/pdns/recursordist/syncres.cc:4900,1
    - Dst: getSigner
      Src: /src/pdns/pdns/recursordist/syncres.cc:4901,1
    - Dst: DNSName::empty
      Src: /src/pdns/pdns/recursordist/syncres.cc:4904,1
    - Dst: std::vector::emplace_back
      Src: /src/pdns/pdns/recursordist/syncres.cc:4906,1
    - Dst: AggressiveNSECCache::nsec3Disabled
      Src: /src/pdns/pdns/recursordist/syncres.cc:4912,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/syncres.cc:4914,1
    - Dst: auto::second::records::at
      Src: /src/pdns/pdns/recursordist/syncres.cc:4914,1
    - Dst: AggressiveNSECCache::isSmallCoveringNSEC3
      Src: /src/pdns/pdns/recursordist/syncres.cc:4915,1
    - Dst: insertNSEC
      Src: /src/pdns/pdns/recursordist/syncres.cc:4931,1
    - Dst: second::records::at
      Src: /src/pdns/pdns/recursordist/syncres.cc:4931,1
    - Dst: std::map::find
      Src: /src/pdns/pdns/recursordist/syncres.cc:4936,1
    - Dst: std::map::end
      Src: /src/pdns/pdns/recursordist/syncres.cc:4936,1
    CyclomaticComplexity: 165
    EdgeCount: 165
    ICount: 248
    argCount: 15
    argNames:
    - depth
    - ' prefix'
    - ' lwr'
    - ' qname'
    - qtype
    - ' auth'
    - wasForwarded
    - ' ednsmask'
    - ' state'
    - ' needWildcardProof'
    - ' gatherWildcardProof'
    - ' wildcardLabelsCount'
    - rdQuery
    - ' remoteIP'
    - overTCP
    argTypes:
    - unsigned int
    - string
    - LWResult
    - DNSName
    - QType
    - DNSName
    - bool
    - std::optional<Netmask>
    - vState
    - bool
    - bool
    - unsigned int
    - bool
    - ComboAddress
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4943
      start: 4507
    functionDepth: 6
    functionLinenumber: 4507
    functionLinenumberEnd: 4943
    functionName: SyncRes::updateCacheFromRecords
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 0
    functionsReached:
    - records::push_back
    - getSigner
    - auto::second::signatures::at
    - signatures::push_back
    - AggressiveNSECCache::nsec3Disabled
    - SyncRes::getValidationStatus
    - vStateIsBogus
    - static_cast<uint32_t>
    - second::records::at
    - wipeTyped
    - getNSECOwnerName
    - replace
    - SyncRes::validateDNSKeys
    - auto::first::name::countLabels
    - countLabels
    - std::vector::push_back
    - DNSName::chopOff
    - domainmap::end
    - QType
    - AggressiveNSECCache::isSmallCoveringNSEC3
    - std::map::emplace
    - MemRecursorCache::AuthRecsVec::emplace_back
    - DNSRecordContent::NumberToType
    - SyncRes::computeLowestTTD
    - SyncRes::fixupAnswer
    - LOG
    - std::map::find
    - d_name::isPartOf
    - auto::first::countLabels
    - min
    - domainmap::empty
    - second::signatures::size
    - auto::second::records::empty
    - empty
    - SyncRes::sanitizeRecords
    - isPartOf
    - second::records::size
    - SyncRes::rememberParentSetIfNeeded
    - std::unordered_map::find
    - insertNSEC
    - SyncRes::getBestAuthZone
    - isWildcardExpandedOntoItself
    - DNSName
    - std::vector::reserve
    - DNSName::empty
    - MemRecursorCache::AuthRecsVec::size
    - isWildcardExpanded
    - tcache_t::end
    - std::map::end
    - std::unordered_map::end
    - tcache_t::begin
    - SyncRes::shouldValidate
    - auto::getTarget
    - auto::second::signatures::empty
    - getRR
    - std::move
    - auto::second::records::at
    - count
    - getBits
    - std::min
    - std::vector::emplace_back
    - getContent
    - d_name::countLabels
    - auto::second::records::size
    - isIPv4
    - SyncRes::validateRecordsWithSigs
    - DNSName::DNSName
    - SyncRes::updateValidationState
    linkageType: ''
    returnType: RCode::rcodes_
    signature: RCode::rcodes_ SyncRes::updateCacheFromRecords(unsigned int depth,
      const string& prefix, LWResult& lwr, const DNSName& qname, const QType qtype,
      const DNSName& auth, bool wasForwarded, const std::optional<Netmask>& ednsmask,
      vState& state, bool& needWildcardProof, bool& gatherWildcardProof, unsigned
      int& wildcardLabelsCount, bool rdQuery, const ComboAddress& remoteIP, bool overTCP)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:4952,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:4970,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:4974,1
    - Dst: SyncRes::getValidationStatus
      Src: /src/pdns/pdns/recursordist/syncres.cc:4976,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:4981,1
    - Dst: vStateToString
      Src: /src/pdns/pdns/recursordist/syncres.cc:4981,1
    - Dst: SyncRes::updateValidationState
      Src: /src/pdns/pdns/recursordist/syncres.cc:4986,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 22
    argCount: 9
    argNames:
    - ' qname'
    - ' neValidationState'
    - ' neName'
    - ' state'
    - denialState
    - expectedState
    - isDS
    - depth
    - ' prefix'
    argTypes:
    - DNSName
    - vState
    - DNSName
    - vState
    - dState
    - dState
    - bool
    - unsigned int
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4987
      start: 4945
    functionDepth: 5
    functionLinenumber: 4945
    functionLinenumberEnd: 4987
    functionName: SyncRes::updateDenialValidationState
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 1
    functionsReached:
    - LOG
    - SyncRes::getValidationStatus
    - SyncRes::updateValidationState
    - vStateToString
    linkageType: ''
    returnType: void
    signature: void SyncRes::updateDenialValidationState(const DNSName& qname, vState&
      neValidationState, const DNSName& neName, vState& state, const dState denialState,
      const dState expectedState, bool isDS, unsigned int depth, const string& prefix)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: harvestCSPFromNE
      Src: /src/pdns/pdns/recursordist/syncres.cc:4991,1
    - Dst: getDenial
      Src: /src/pdns/pdns/recursordist/syncres.cc:4992,1
    - Dst: d_qtype::getCode
      Src: /src/pdns/pdns/recursordist/syncres.cc:4992,1
    - Dst: SyncRes::LogObject
      Src: /src/pdns/pdns/recursordist/syncres.cc:4992,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - ' negEntry'
    - expectedState
    - referralToUnsigned
    - ' prefix'
    argTypes:
    - NegCache::NegCacheEntry
    - dState
    - bool
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4993
      start: 4989
    functionDepth: 3
    functionLinenumber: 4989
    functionLinenumberEnd: 4993
    functionName: SyncRes::getDenialValidationState
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 1
    functionsReached:
    - harvestCSPFromNE
    - SyncRes::LogObject
    - d_qtype::getCode
    - getDenial
    linkageType: ''
    returnType: dState
    signature: dState SyncRes::getDenialValidationState(const NegCache::NegCacheEntry&
      negEntry, const dState expectedState, bool referralToUnsigned, const string&
      prefix)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: harvestNXRecords
      Src: /src/pdns/pdns/recursordist/syncres.cc:5002,1
    - Dst: vStateIsBogus
      Src: /src/pdns/pdns/recursordist/syncres.cc:5004,1
    - Dst: SyncRes::getValidationStatus
      Src: /src/pdns/pdns/recursordist/syncres.cc:5008,1
    - Dst: NegCache::NegCacheEntry::authoritySOA::signatures::empty
      Src: /src/pdns/pdns/recursordist/syncres.cc:5008,1
    - Dst: NegCache::NegCacheEntry::DNSSECRecords::signatures::empty
      Src: /src/pdns/pdns/recursordist/syncres.cc:5008,1
    - Dst: harvestCSPFromNE
      Src: /src/pdns/pdns/recursordist/syncres.cc:5015,1
    - Dst: getDenial
      Src: /src/pdns/pdns/recursordist/syncres.cc:5016,1
    - Dst: NegCache::NegCacheEntry::d_qtype::getCode
      Src: /src/pdns/pdns/recursordist/syncres.cc:5016,1
    - Dst: SyncRes::LogObject
      Src: /src/pdns/pdns/recursordist/syncres.cc:5016,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:5023,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:5026,1
    - Dst: std::min
      Src: /src/pdns/pdns/recursordist/syncres.cc:5027,1
    - Dst: SyncRes::updateValidationState
      Src: /src/pdns/pdns/recursordist/syncres.cc:5030,1
    - Dst: SyncRes::updateValidationStatusInCache
      Src: /src/pdns/pdns/recursordist/syncres.cc:5032,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 8
    argNames:
    - ' qname'
    - ' qtype'
    - ' rec'
    - ' lwr'
    - ' state'
    - depth
    - ' prefix'
    - wildcardLabelsCount
    argTypes:
    - DNSName
    - QType
    - DNSRecord
    - LWResult
    - vState
    - unsigned int
    - std::string
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5036
      start: 4995
    functionDepth: 5
    functionLinenumber: 4995
    functionLinenumberEnd: 5036
    functionName: SyncRes::checkWildcardProof
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 0
    functionsReached:
    - harvestCSPFromNE
    - SyncRes::updateValidationStatusInCache
    - getDenial
    - NegCache::NegCacheEntry::authoritySOA::signatures::empty
    - harvestNXRecords
    - SyncRes::getValidationStatus
    - NegCache::NegCacheEntry::d_qtype::getCode
    - std::min
    - vStateIsBogus
    - SyncRes::LogObject
    - NegCache::NegCacheEntry::DNSSECRecords::signatures::empty
    - LOG
    - SyncRes::updateValidationState
    linkageType: ''
    returnType: void
    signature: void SyncRes::checkWildcardProof(const DNSName& qname, const QType&
      qtype, DNSRecord& rec, const LWResult& lwr, vState& state, unsigned int depth,
      const std::string& prefix, unsigned int wildcardLabelsCount)
  - BBCount: 52
    BranchProfiles: []
    Callsites:
    - Dst: DNSName::DNSName
      Src: /src/pdns/pdns/recursordist/syncres.cc:5041,1
    - Dst: DNSName::DNSName
      Src: /src/pdns/pdns/recursordist/syncres.cc:5042,1
    - Dst: isPartOf
      Src: /src/pdns/pdns/recursordist/syncres.cc:5058,1
    - Dst: d_name::isPartOf
      Src: /src/pdns/pdns/recursordist/syncres.cc:5058,1
    - Dst: SyncRes::isForwardOrAuth
      Src: /src/pdns/pdns/recursordist/syncres.cc:5061,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:5067,1
    - Dst: d_name::isPartOf
      Src: /src/pdns/pdns/recursordist/syncres.cc:5067,1
    - Dst: min
      Src: /src/pdns/pdns/recursordist/syncres.cc:5069,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/syncres.cc:5071,1
    - Dst: push_back
      Src: /src/pdns/pdns/recursordist/syncres.cc:5072,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/syncres.cc:5080,1
    - Dst: harvestNXRecords
      Src: /src/pdns/pdns/recursordist/syncres.cc:5083,1
    - Dst: vStateIsBogus
      Src: /src/pdns/pdns/recursordist/syncres.cc:5085,1
    - Dst: SyncRes::getValidationStatus
      Src: /src/pdns/pdns/recursordist/syncres.cc:5091,1
    - Dst: NegCache::NegCacheEntry::authoritySOA::signatures::empty
      Src: /src/pdns/pdns/recursordist/syncres.cc:5091,1
    - Dst: NegCache::NegCacheEntry::DNSSECRecords::signatures::empty
      Src: /src/pdns/pdns/recursordist/syncres.cc:5091,1
    - Dst: SyncRes::getDenialValidationState
      Src: /src/pdns/pdns/recursordist/syncres.cc:5093,1
    - Dst: SyncRes::updateDenialValidationState
      Src: /src/pdns/pdns/recursordist/syncres.cc:5094,1
    - Dst: SyncRes::updateValidationState
      Src: /src/pdns/pdns/recursordist/syncres.cc:5098,1
    - Dst: vStateIsBogus
      Src: /src/pdns/pdns/recursordist/syncres.cc:5102,1
    - Dst: min
      Src: /src/pdns/pdns/recursordist/syncres.cc:5103,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/syncres.cc:5113,1
    - Dst: add
      Src: /src/pdns/pdns/recursordist/syncres.cc:5114,1
    - Dst: doWipeCache
      Src: /src/pdns/pdns/recursordist/syncres.cc:5118,1
    - Dst: NegCache::NegCacheEntry::d_auth::isRoot
      Src: /src/pdns/pdns/recursordist/syncres.cc:5120,1
    - Dst: isRoot
      Src: /src/pdns/pdns/recursordist/syncres.cc:5120,1
    - Dst: NegCache::NegCacheEntry::d_name::getLastLabel
      Src: /src/pdns/pdns/recursordist/syncres.cc:5121,1
    - Dst: add
      Src: /src/pdns/pdns/recursordist/syncres.cc:5122,1
    - Dst: NegCache::NegCacheEntry::authoritySOA::signatures::empty
      Src: /src/pdns/pdns/recursordist/syncres.cc:5126,1
    - Dst: NegCache::NegCacheEntry::DNSSECRecords::signatures::empty
      Src: /src/pdns/pdns/recursordist/syncres.cc:5126,1
    - Dst: isRedirection
      Src: /src/pdns/pdns/recursordist/syncres.cc:5129,1
    - Dst: isRedirection
      Src: /src/pdns/pdns/recursordist/syncres.cc:5130,1
    - Dst: QType::getCode
      Src: /src/pdns/pdns/recursordist/syncres.cc:5130,1
    - Dst: DNSName::empty
      Src: /src/pdns/pdns/recursordist/syncres.cc:5132,1
    - Dst: push_back
      Src: /src/pdns/pdns/recursordist/syncres.cc:5135,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/syncres.cc:5136,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/syncres.cc:5137,1
    - Dst: auto::getTarget
      Src: /src/pdns/pdns/recursordist/syncres.cc:5137,1
    - Dst: SyncRes::checkWildcardProof
      Src: /src/pdns/pdns/recursordist/syncres.cc:5140,1
    - Dst: isPartOf
      Src: /src/pdns/pdns/recursordist/syncres.cc:5143,1
    - Dst: push_back
      Src: /src/pdns/pdns/recursordist/syncres.cc:5144,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/syncres.cc:5145,1
    - Dst: auto::getTarget
      Src: /src/pdns/pdns/recursordist/syncres.cc:5147,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/syncres.cc:5149,1
    - Dst: erase
      Src: /src/pdns/pdns/recursordist/syncres.cc:5150,1
    - Dst: std::remove_if
      Src: /src/pdns/pdns/recursordist/syncres.cc:5150,1
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/syncres.cc:5151,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/syncres.cc:5152,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/syncres.cc:5156,1
    - Dst: makeRelative
      Src: /src/pdns/pdns/recursordist/syncres.cc:5159,1
    - Dst: SyncRes::checkWildcardProof
      Src: /src/pdns/pdns/recursordist/syncres.cc:5161,1
    - Dst: ImmediateServFailException
      Src: /src/pdns/pdns/recursordist/syncres.cc:5167,1
    - Dst: DNSName::toLogString
      Src: /src/pdns/pdns/recursordist/syncres.cc:5167,1
    - Dst: DNSName::toLogString
      Src: /src/pdns/pdns/recursordist/syncres.cc:5167,1
    - Dst: makeRelative
      Src: /src/pdns/pdns/recursordist/syncres.cc:5167,1
    - Dst: DNSName::toLogString
      Src: /src/pdns/pdns/recursordist/syncres.cc:5167,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/syncres.cc:5167,1
    - Dst: push_back
      Src: /src/pdns/pdns/recursordist/syncres.cc:5177,1
    - Dst: QType::getCode
      Src: /src/pdns/pdns/recursordist/syncres.cc:5180,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:5181,1
    - Dst: getContent
      Src: /src/pdns/pdns/recursordist/syncres.cc:5181,1
    - Dst: DNSRecordContent::NumberToType
      Src: /src/pdns/pdns/recursordist/syncres.cc:5181,1
    - Dst: SyncRes::checkWildcardProof
      Src: /src/pdns/pdns/recursordist/syncres.cc:5187,1
    - Dst: push_back
      Src: /src/pdns/pdns/recursordist/syncres.cc:5190,1
    - Dst: push_back
      Src: /src/pdns/pdns/recursordist/syncres.cc:5194,1
    - Dst: isPartOf
      Src: /src/pdns/pdns/recursordist/syncres.cc:5196,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/syncres.cc:5197,1
    - Dst: push_back
      Src: /src/pdns/pdns/recursordist/syncres.cc:5199,1
    - Dst: isPartOf
      Src: /src/pdns/pdns/recursordist/syncres.cc:5203,1
    - Dst: SyncRes::moreSpecificThan
      Src: /src/pdns/pdns/recursordist/syncres.cc:5204,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:5206,1
    - Dst: getContent
      Src: /src/pdns/pdns/recursordist/syncres.cc:5206,1
    - Dst: isPartOf
      Src: /src/pdns/pdns/recursordist/syncres.cc:5209,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/syncres.cc:5215,1
    - Dst: insert
      Src: /src/pdns/pdns/recursordist/syncres.cc:5216,1
    - Dst: auto::getNS
      Src: /src/pdns/pdns/recursordist/syncres.cc:5216,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:5221,1
    - Dst: getContent
      Src: /src/pdns/pdns/recursordist/syncres.cc:5221,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/syncres.cc:5222,1
    - Dst: insert
      Src: /src/pdns/pdns/recursordist/syncres.cc:5223,1
    - Dst: auto::getNS
      Src: /src/pdns/pdns/recursordist/syncres.cc:5223,1
    - Dst: isPartOf
      Src: /src/pdns/pdns/recursordist/syncres.cc:5227,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:5228,1
    - Dst: getContent
      Src: /src/pdns/pdns/recursordist/syncres.cc:5228,1
    - Dst: isPartOf
      Src: /src/pdns/pdns/recursordist/syncres.cc:5230,1
    - Dst: harvestNXRecords
      Src: /src/pdns/pdns/recursordist/syncres.cc:5234,1
    - Dst: vStateIsBogus
      Src: /src/pdns/pdns/recursordist/syncres.cc:5236,1
    - Dst: SyncRes::getValidationStatus
      Src: /src/pdns/pdns/recursordist/syncres.cc:5237,1
    - Dst: NegCache::NegCacheEntry::authoritySOA::signatures::empty
      Src: /src/pdns/pdns/recursordist/syncres.cc:5237,1
    - Dst: NegCache::NegCacheEntry::DNSSECRecords::signatures::empty
      Src: /src/pdns/pdns/recursordist/syncres.cc:5237,1
    - Dst: min
      Src: /src/pdns/pdns/recursordist/syncres.cc:5243,1
    - Dst: SyncRes::getDenialValidationState
      Src: /src/pdns/pdns/recursordist/syncres.cc:5245,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:5254,1
    - Dst: add
      Src: /src/pdns/pdns/recursordist/syncres.cc:5256,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/syncres.cc:5261,1
    - Dst: NegCache::NegCacheEntry::authoritySOA::signatures::empty
      Src: /src/pdns/pdns/recursordist/syncres.cc:5264,1
    - Dst: NegCache::NegCacheEntry::DNSSECRecords::signatures::empty
      Src: /src/pdns/pdns/recursordist/syncres.cc:5264,1
    - Dst: clear
      Src: /src/pdns/pdns/recursordist/syncres.cc:5265,1
    - Dst: isPartOf
      Src: /src/pdns/pdns/recursordist/syncres.cc:5271,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:5272,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/syncres.cc:5274,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:5275,1
    - Dst: min
      Src: /src/pdns/pdns/recursordist/syncres.cc:5278,1
    - Dst: harvestNXRecords
      Src: /src/pdns/pdns/recursordist/syncres.cc:5285,1
    - Dst: vStateIsBogus
      Src: /src/pdns/pdns/recursordist/syncres.cc:5287,1
    - Dst: SyncRes::getValidationStatus
      Src: /src/pdns/pdns/recursordist/syncres.cc:5291,1
    - Dst: NegCache::NegCacheEntry::authoritySOA::signatures::empty
      Src: /src/pdns/pdns/recursordist/syncres.cc:5291,1
    - Dst: NegCache::NegCacheEntry::DNSSECRecords::signatures::empty
      Src: /src/pdns/pdns/recursordist/syncres.cc:5291,1
    - Dst: SyncRes::getDenialValidationState
      Src: /src/pdns/pdns/recursordist/syncres.cc:5293,1
    - Dst: SyncRes::updateDenialValidationState
      Src: /src/pdns/pdns/recursordist/syncres.cc:5294,1
    - Dst: SyncRes::updateValidationState
      Src: /src/pdns/pdns/recursordist/syncres.cc:5298,1
    - Dst: vStateIsBogus
      Src: /src/pdns/pdns/recursordist/syncres.cc:5302,1
    - Dst: min
      Src: /src/pdns/pdns/recursordist/syncres.cc:5303,1
    - Dst: min
      Src: /src/pdns/pdns/recursordist/syncres.cc:5304,1
    - Dst: QType::getCode
      Src: /src/pdns/pdns/recursordist/syncres.cc:5308,1
    - Dst: doWipeCache
      Src: /src/pdns/pdns/recursordist/syncres.cc:5312,1
    - Dst: add
      Src: /src/pdns/pdns/recursordist/syncres.cc:5314,1
    - Dst: push_back
      Src: /src/pdns/pdns/recursordist/syncres.cc:5317,1
    - Dst: NegCache::NegCacheEntry::authoritySOA::signatures::empty
      Src: /src/pdns/pdns/recursordist/syncres.cc:5319,1
    - Dst: NegCache::NegCacheEntry::DNSSECRecords::signatures::empty
      Src: /src/pdns/pdns/recursordist/syncres.cc:5319,1
    - Dst: DNSName::empty
      Src: /src/pdns/pdns/recursordist/syncres.cc:5324,1
    - Dst: DNSRecord
      Src: /src/pdns/pdns/recursordist/syncres.cc:5326,1
    - Dst: auto::setContent
      Src: /src/pdns/pdns/recursordist/syncres.cc:5330,1
    - Dst: std::make_shared<CNAMERecordContent>
      Src: /src/pdns/pdns/recursordist/syncres.cc:5330,1
    - Dst: CNAMERecordContent
      Src: /src/pdns/pdns/recursordist/syncres.cc:5330,1
    - Dst: push_back
      Src: /src/pdns/pdns/recursordist/syncres.cc:5331,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/syncres.cc:5331,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:5337,1
    - Dst: vStateIsBogus
      Src: /src/pdns/pdns/recursordist/syncres.cc:5338,1
    - Dst: SyncRes::getValidationStatus
      Src: /src/pdns/pdns/recursordist/syncres.cc:5339,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:5342,1
    - Dst: SyncRes::updateValidationState
      Src: /src/pdns/pdns/recursordist/syncres.cc:5343,1
    CyclomaticComplexity: 121
    EdgeCount: 121
    ICount: 212
    argCount: 19
    argNames:
    - ' prefix'
    - ' qname'
    - qtype
    - ' auth'
    - ' lwr'
    - sendRDQuery
    - ' ret'
    - ' nsset'
    - ' newtarget'
    - ' newauth'
    - ' realreferral'
    - ' negindic'
    - ' state'
    - needWildcardProof
    - gatherWildcardProof
    - wildcardLabelsCount
    - ' rcode'
    - ' negIndicHasSignatures'
    - depth
    argTypes:
    - std::string
    - DNSName
    - QType
    - DNSName
    - LWResult
    - bool
    - vector<DNSRecord>
    - set<DNSName>
    - DNSName
    - DNSName
    - bool
    - bool
    - vState
    - bool
    - bool
    - unsigned int
    - int
    - bool
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5351
      start: 5038
    functionDepth: 6
    functionLinenumber: 5038
    functionLinenumberEnd: 5351
    functionName: SyncRes::processRecords
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 0
    functionsReached:
    - add
    - makeRelative
    - harvestNXRecords
    - SyncRes::getValidationStatus
    - std::make_shared<CNAMERecordContent>
    - vStateIsBogus
    - isRoot
    - DNSName::toLogString
    - insert
    - SyncRes::getDenialValidationState
    - isRedirection
    - erase
    - NegCache::NegCacheEntry::d_auth::isRoot
    - auto::setContent
    - SyncRes::moreSpecificThan
    - NegCache::NegCacheEntry::DNSSECRecords::signatures::empty
    - NegCache::NegCacheEntry::d_name::getLastLabel
    - DNSRecordContent::NumberToType
    - begin
    - empty
    - d_name::isPartOf
    - LOG
    - clear
    - CNAMERecordContent
    - min
    - isPartOf
    - push_back
    - NegCache::NegCacheEntry::authoritySOA::signatures::empty
    - SyncRes::isForwardOrAuth
    - DNSRecord
    - DNSName
    - DNSName::empty
    - auto::getTarget
    - doWipeCache
    - getRR
    - std::move
    - what
    - std::remove_if
    - end
    - auto::getNS
    - getContent
    - SyncRes::checkWildcardProof
    - QType::getCode
    - DNSName::DNSName
    - ImmediateServFailException
    - SyncRes::updateValidationState
    - SyncRes::updateDenialValidationState
    linkageType: ''
    returnType: bool
    signature: bool SyncRes::processRecords(const std::string& prefix, const DNSName&
      qname, const QType qtype, const DNSName& auth, LWResult& lwr, const bool sendRDQuery,
      vector<DNSRecord>& ret, set<DNSName>& nsset, DNSName& newtarget, DNSName& newauth,
      bool& realreferral, bool& negindic, vState& state, const bool needWildcardProof,
      const bool gatherWildcardProof, const unsigned int wildcardLabelsCount, int&
      rcode, bool& negIndicHasSignatures, unsigned int depth)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: ComboAddress::getPort
      Src: /src/pdns/pdns/recursordist/syncres.cc:5355,1
    - Dst: ComboAddress::setPort
      Src: /src/pdns/pdns/recursordist/syncres.cc:5358,1
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/syncres.cc:5359,1
    - Dst: auto::d_map::emplace
      Src: /src/pdns/pdns/recursordist/syncres.cc:5363,1
    - Dst: auto::d_map::modify
      Src: /src/pdns/pdns/recursordist/syncres.cc:5379,1
    - Dst: pushTryDoTTask
      Src: /src/pdns/pdns/recursordist/syncres.cc:5380,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/recursordist/syncres.cc:5380,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 29
    argCount: 4
    argNames:
    - address
    - ' auth'
    - ' nsname'
    - now
    argTypes:
    - ComboAddress
    - DNSName
    - DNSName
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5385
      start: 5353
    functionDepth: 1
    functionLinenumber: 5353
    functionLinenumberEnd: 5385
    functionName: submitTryDotTask
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 0
    functionsReached:
    - auto::d_map::modify
    - pdns::max
    - pushTryDoTTask
    - lock
    - ComboAddress::setPort
    - auto::d_map::emplace
    - ComboAddress::getPort
    linkageType: ''
    returnType: void
    signature: void submitTryDotTask(ComboAddress address, const DNSName& auth, const
      DNSName& nsname, time_t now)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ComboAddress::setPort
      Src: /src/pdns/pdns/recursordist/syncres.cc:5389,1
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/syncres.cc:5390,1
    - Dst: auto::d_map::find
      Src: /src/pdns/pdns/recursordist/syncres.cc:5391,1
    - Dst: auto::d_map::end
      Src: /src/pdns/pdns/recursordist/syncres.cc:5392,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - address
    - now
    argTypes:
    - ComboAddress
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5397
      start: 5387
    functionDepth: 0
    functionLinenumber: 5387
    functionLinenumberEnd: 5397
    functionName: shouldDoDoT
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 1
    functionsReached:
    - ComboAddress::setPort
    - auto::d_map::end
    - auto::d_map::find
    - lock
    linkageType: ''
    returnType: bool
    signature: bool shouldDoDoT(ComboAddress address, time_t now)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ComboAddress::setPort
      Src: /src/pdns/pdns/recursordist/syncres.cc:5401,1
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/syncres.cc:5402,1
    - Dst: auto::d_map::find
      Src: /src/pdns/pdns/recursordist/syncres.cc:5403,1
    - Dst: auto::d_map::end
      Src: /src/pdns/pdns/recursordist/syncres.cc:5404,1
    - Dst: auto::d_map::modify
      Src: /src/pdns/pdns/recursordist/syncres.cc:5406,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 3
    argNames:
    - address
    - status
    - time
    argTypes:
    - ComboAddress
    - DoTStatus::Status
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5411
      start: 5399
    functionDepth: 0
    functionLinenumber: 5399
    functionLinenumberEnd: 5411
    functionName: updateDoTStatus
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 0
    functionsReached:
    - auto::d_map::modify
    - auto::d_map::find
    - lock
    - ComboAddress::setPort
    - auto::d_map::end
    linkageType: ''
    returnType: void
    signature: void updateDoTStatus(ComboAddress address, DoTStatus::Status status,
      time_t time, bool updateBusy = false)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: withName
      Src: /src/pdns/pdns/recursordist/syncres.cc:5415,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/syncres.cc:5415,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/syncres.cc:5415,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/syncres.cc:5415,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/syncres.cc:5415,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/syncres.cc:5415,1
    - Dst: auto::info
      Src: /src/pdns/pdns/recursordist/syncres.cc:5418,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/syncres.cc:5418,1
    - Dst: auto::error
      Src: /src/pdns/pdns/recursordist/syncres.cc:5421,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/syncres.cc:5421,1
    - Dst: ComboAddress::setPort
      Src: /src/pdns/pdns/recursordist/syncres.cc:5427,1
    - Dst: SyncRes::doResolveAtThisIP
      Src: /src/pdns/pdns/recursordist/syncres.cc:5432,1
    - Dst: LWResult::d_records::empty
      Src: /src/pdns/pdns/recursordist/syncres.cc:5433,1
    - Dst: logHelper2
      Src: /src/pdns/pdns/recursordist/syncres.cc:5436,1
    - Dst: logHelper2
      Src: /src/pdns/pdns/recursordist/syncres.cc:5439,1
    - Dst: logHelper1
      Src: /src/pdns/pdns/recursordist/syncres.cc:5442,1
    - Dst: logHelper2
      Src: /src/pdns/pdns/recursordist/syncres.cc:5445,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/syncres.cc:5445,1
    - Dst: logHelper1
      Src: /src/pdns/pdns/recursordist/syncres.cc:5448,1
    - Dst: updateDoTStatus
      Src: /src/pdns/pdns/recursordist/syncres.cc:5450,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 22
    argCount: 5
    argNames:
    - ' qname'
    - qtype
    - ' nsName'
    - address
    - now
    argTypes:
    - DNSName
    - QType
    - DNSName
    - ComboAddress
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5452
      start: 5413
    functionDepth: 1
    functionLinenumber: 5413
    functionLinenumberEnd: 5452
    functionName: SyncRes::tryDoT
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 0
    functionsReached:
    - Logging::Loggable
    - withName
    - LWResult::d_records::empty
    - QType
    - SyncRes::doResolveAtThisIP
    - logHelper2
    - what
    - auto::error
    - ComboAddress::setPort
    - updateDoTStatus
    - logHelper1
    - auto::info
    linkageType: ''
    returnType: bool
    signature: bool SyncRes::tryDoT(const DNSName& qname, const QType qtype, const
      DNSName& nsName, ComboAddress address, time_t now)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:5460,1
    - Dst: SyncRes::toString
      Src: /src/pdns/pdns/recursordist/syncres.cc:5460,1
    - Dst: getBits
      Src: /src/pdns/pdns/recursordist/syncres.cc:5462,1
    - Dst: isIPv4
      Src: /src/pdns/pdns/recursordist/syncres.cc:5463,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/syncres.cc:5464,1
    - Dst: getBits
      Src: /src/pdns/pdns/recursordist/syncres.cc:5464,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/syncres.cc:5467,1
    - Dst: getBits
      Src: /src/pdns/pdns/recursordist/syncres.cc:5467,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 3
    argNames:
    - ' ednsmask'
    - ' qname'
    - ' prefix'
    argTypes:
    - std::optional<Netmask>
    - DNSName
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5470
      start: 5454
    functionDepth: 1
    functionLinenumber: 5454
    functionLinenumberEnd: 5470
    functionName: SyncRes::ednsStats
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 0
    functionsReached:
    - getBits
    - SyncRes::toString
    - isIPv4
    - LOG
    - at
    linkageType: ''
    returnType: void
    signature: void SyncRes::ednsStats(std::optional<Netmask>& ednsmask, const DNSName&
      qname, const string& prefix)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: at
      Src: /src/pdns/pdns/recursordist/syncres.cc:5474,1
    - Dst: SyncRes::checkMaxQperQ
      Src: /src/pdns/pdns/recursordist/syncres.cc:5476,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/syncres.cc:5478,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:5482,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/recursordist/syncres.cc:5482,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/syncres.cc:5483,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:5487,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/recursordist/syncres.cc:5487,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/syncres.cc:5488,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 5
    argNames:
    - ' prefix'
    - ' qname'
    - ' address'
    - doTCP
    - doDoT
    argTypes:
    - string
    - DNSName
    - ComboAddress
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5492
      start: 5472
    functionDepth: 1
    functionLinenumber: 5472
    functionLinenumberEnd: 5492
    functionName: SyncRes::updateQueryCounts
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 0
    functionsReached:
    - LOG
    - toStringWithPort
    - at
    - SyncRes::checkMaxQperQ
    linkageType: ''
    returnType: void
    signature: void SyncRes::updateQueryCounts(const string& prefix, const DNSName&
      qname, const ComboAddress& address, bool doTCP, bool doDoT)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: at
      Src: /src/pdns/pdns/recursordist/syncres.cc:5497,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/syncres.cc:5500,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/syncres.cc:5503,1
    - Dst: push_back
      Src: /src/pdns/pdns/recursordist/syncres.cc:5507,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - ' remoteIP'
    argTypes:
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5509
      start: 5494
    functionDepth: 0
    functionLinenumber: 5494
    functionLinenumberEnd: 5509
    functionName: SyncRes::incTimeoutStats
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 0
    functionsReached:
    - push_back
    - at
    linkageType: ''
    returnType: void
    signature: void SyncRes::incTimeoutStats(const ComboAddress& remoteIP)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<uint16_t>
      Src: /src/pdns/pdns/recursordist/syncres.cc:5515,1
    - Dst: ImmediateServFailException
      Src: /src/pdns/pdns/recursordist/syncres.cc:5517,1
    - Dst: toLogString
      Src: /src/pdns/pdns/recursordist/syncres.cc:5517,1
    - Dst: QType::toString
      Src: /src/pdns/pdns/recursordist/syncres.cc:5517,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/syncres.cc:5517,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/syncres.cc:5517,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/syncres.cc:5517,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/syncres.cc:5517,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 7
    argCount: 3
    argNames:
    - ' qname'
    - qtype
    - ' extendedError'
    argTypes:
    - DNSName
    - QType
    - std::optional<EDNSExtendedError>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5519
      start: 5511
    functionDepth: 0
    functionLinenumber: 5511
    functionLinenumberEnd: 5519
    functionName: SyncRes::checkTotalTime
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 0
    functionsReached:
    - toLogString
    - std::to_string
    - QType::toString
    - static_cast<uint16_t>
    - ImmediateServFailException
    linkageType: ''
    returnType: void
    signature: void SyncRes::checkTotalTime(const DNSName& qname, QType qtype, std::optional<EDNSExtendedError>&
      extendedError) const
  - BBCount: 31
    BranchProfiles: []
    Callsites:
    - Dst: SyncRes::checkTotalTime
      Src: /src/pdns/pdns/recursordist/syncres.cc:5523,1
    - Dst: preoutquery
      Src: /src/pdns/pdns/recursordist/syncres.cc:5529,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:5530,1
    - Dst: SyncRes::getEDNSSubnetMask
      Src: /src/pdns/pdns/recursordist/syncres.cc:5533,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:5535,1
    - Dst: SyncRes::toString
      Src: /src/pdns/pdns/recursordist/syncres.cc:5535,1
    - Dst: add
      Src: /src/pdns/pdns/recursordist/syncres.cc:5538,1
    - Dst: toLogString
      Src: /src/pdns/pdns/recursordist/syncres.cc:5538,1
    - Dst: setValueName
      Src: /src/pdns/pdns/recursordist/syncres.cc:5539,1
    - Dst: addExtraValues
      Src: /src/pdns/pdns/recursordist/syncres.cc:5540,1
    - Dst: QType::toString
      Src: /src/pdns/pdns/recursordist/syncres.cc:5540,1
    - Dst: toStringWithPortExcept
      Src: /src/pdns/pdns/recursordist/syncres.cc:5540,1
    - Dst: toLogString
      Src: /src/pdns/pdns/recursordist/syncres.cc:5540,1
    - Dst: SyncRes::updateQueryCounts
      Src: /src/pdns/pdns/recursordist/syncres.cc:5541,1
    - Dst: SyncRes::asyncresolveWrapper
      Src: /src/pdns/pdns/recursordist/syncres.cc:5542,1
    - Dst: SyncRes::LogObject
      Src: /src/pdns/pdns/recursordist/syncres.cc:5542,1
    - Dst: QType::getCode
      Src: /src/pdns/pdns/recursordist/syncres.cc:5542,1
    - Dst: add
      Src: /src/pdns/pdns/recursordist/syncres.cc:5544,1
    - Dst: static_cast<int64_t>
      Src: /src/pdns/pdns/recursordist/syncres.cc:5544,1
    - Dst: SyncRes::ednsStats
      Src: /src/pdns/pdns/recursordist/syncres.cc:5545,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:5548,1
    - Dst: SyncRes::updateQueryCounts
      Src: /src/pdns/pdns/recursordist/syncres.cc:5549,1
    - Dst: add
      Src: /src/pdns/pdns/recursordist/syncres.cc:5550,1
    - Dst: toLogString
      Src: /src/pdns/pdns/recursordist/syncres.cc:5550,1
    - Dst: QType::toString
      Src: /src/pdns/pdns/recursordist/syncres.cc:5550,1
    - Dst: SyncRes::asyncresolveWrapper
      Src: /src/pdns/pdns/recursordist/syncres.cc:5551,1
    - Dst: SyncRes::LogObject
      Src: /src/pdns/pdns/recursordist/syncres.cc:5551,1
    - Dst: QType::getCode
      Src: /src/pdns/pdns/recursordist/syncres.cc:5551,1
    - Dst: add
      Src: /src/pdns/pdns/recursordist/syncres.cc:5553,1
    - Dst: static_cast<int64_t>
      Src: /src/pdns/pdns/recursordist/syncres.cc:5553,1
    - Dst: ImmediateServFailException
      Src: /src/pdns/pdns/recursordist/syncres.cc:5559,1
    - Dst: SyncRes::checkMaxQperQ
      Src: /src/pdns/pdns/recursordist/syncres.cc:5563,1
    - Dst: accountAuthLatency
      Src: /src/pdns/pdns/recursordist/syncres.cc:5572,1
    - Dst: static_cast<decltype(lwr.d_rcode)>
      Src: /src/pdns/pdns/recursordist/syncres.cc:5573,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/syncres.cc:5573,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/syncres.cc:5573,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/syncres.cc:5574,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/syncres.cc:5574,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/recursordist/syncres.cc:5574,1
    - Dst: shouldNotThrottle
      Src: /src/pdns/pdns/recursordist/syncres.cc:5578,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:5585,1
    - Dst: SyncRes::incTimeoutStats
      Src: /src/pdns/pdns/recursordist/syncres.cc:5586,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:5590,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/syncres.cc:5590,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/syncres.cc:5591,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:5595,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/syncres.cc:5596,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/syncres.cc:5600,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:5603,1
    - Dst: SyncRes::toString
      Src: /src/pdns/pdns/recursordist/syncres.cc:5603,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/syncres.cc:5603,1
    - Dst: LWResult::isLimitError
      Src: /src/pdns/pdns/recursordist/syncres.cc:5609,1
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/syncres.cc:5616,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/syncres.cc:5616,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/syncres.cc:5616,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/recursordist/syncres.cc:5616,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/recursordist/syncres.cc:5616,1
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/syncres.cc:5619,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:5620,1
    - Dst: SyncRes::toString
      Src: /src/pdns/pdns/recursordist/syncres.cc:5620,1
    - Dst: SyncRes::doThrottle
      Src: /src/pdns/pdns/recursordist/syncres.cc:5622,1
    - Dst: SyncRes::doThrottle
      Src: /src/pdns/pdns/recursordist/syncres.cc:5626,1
    - Dst: SyncRes::doThrottle
      Src: /src/pdns/pdns/recursordist/syncres.cc:5634,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:5643,1
    - Dst: SyncRes::toString
      Src: /src/pdns/pdns/recursordist/syncres.cc:5643,1
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/syncres.cc:5647,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/syncres.cc:5647,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/syncres.cc:5647,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/recursordist/syncres.cc:5647,1
    - Dst: SyncRes::doThrottle
      Src: /src/pdns/pdns/recursordist/syncres.cc:5651,1
    - Dst: SyncRes::doThrottle
      Src: /src/pdns/pdns/recursordist/syncres.cc:5654,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:5661,1
    - Dst: SyncRes::toString
      Src: /src/pdns/pdns/recursordist/syncres.cc:5661,1
    - Dst: RCode::to_s
      Src: /src/pdns/pdns/recursordist/syncres.cc:5661,1
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/syncres.cc:5667,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/syncres.cc:5667,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/syncres.cc:5667,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/recursordist/syncres.cc:5667,1
    - Dst: SyncRes::doThrottle
      Src: /src/pdns/pdns/recursordist/syncres.cc:5682,1
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/syncres.cc:5690,1
    - Dst: SyncRes::unThrottle
      Src: /src/pdns/pdns/recursordist/syncres.cc:5693,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:5699,1
    - Dst: SyncRes::doThrottle
      Src: /src/pdns/pdns/recursordist/syncres.cc:5702,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:5706,1
    CyclomaticComplexity: 44
    EdgeCount: 44
    ICount: 132
    argCount: 16
    argNames:
    - ' prefix'
    - ' qname'
    - qtype
    - ' lwr'
    - ' ednsmask'
    - ' auth'
    - sendRDQuery
    - wasForwarded
    - ' nsName'
    - ' remoteIP'
    - doTCP
    - doDoT
    - ' truncated'
    - ' spoofed'
    - ' extendedError'
    - dontThrottle
    argTypes:
    - std::string
    - DNSName
    - QType
    - LWResult
    - std::optional<Netmask>
    - DNSName
    - bool
    - bool
    - DNSName
    - ComboAddress
    - bool
    - bool
    - bool
    - bool
    - std::optional<EDNSExtendedError>
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5712
      start: 5521
    functionDepth: 3
    functionLinenumber: 5521
    functionLinenumberEnd: 5712
    functionName: SyncRes::doResolveAtThisIP
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 1
    functionsReached:
    - setValueName
    - add
    - toLogString
    - accountAuthLatency
    - stringerror
    - preoutquery
    - SyncRes::doThrottle
    - SyncRes::LogObject
    - SyncRes::toString
    - SyncRes::incTimeoutStats
    - RCode::to_s
    - static_cast<int>
    - SyncRes::getEDNSSubnetMask
    - addExtraValues
    - size
    - lock
    - SyncRes::checkMaxQperQ
    - shouldNotThrottle
    - LWResult::isLimitError
    - empty
    - LOG
    - at
    - SyncRes::asyncresolveWrapper
    - QType::toString
    - DNSName
    - static_cast<uint8_t>
    - toStringWithPort
    - SyncRes::checkTotalTime
    - SyncRes::updateQueryCounts
    - QType::getCode
    - static_cast<int64_t>
    - SyncRes::ednsStats
    - static_cast<decltype(lwr.d_rcode)>
    - SyncRes::unThrottle
    - toStringWithPortExcept
    - ImmediateServFailException
    linkageType: ''
    returnType: bool
    signature: bool SyncRes::doResolveAtThisIP(const std::string& prefix, const DNSName&
      qname, const QType qtype, LWResult& lwr, std::optional<Netmask>& ednsmask, const
      DNSName& auth, bool const sendRDQuery, const bool wasForwarded, const DNSName&
      nsName, const ComboAddress& remoteIP, bool doTCP, bool doDoT, bool& truncated,
      bool& spoofed, std::optional<EDNSExtendedError>& extendedError, bool dontThrottle)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:5717,1
    - Dst: clear
      Src: /src/pdns/pdns/recursordist/syncres.cc:5718,1
    - Dst: isPartOf
      Src: /src/pdns/pdns/recursordist/syncres.cc:5722,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:5724,1
    - Dst: SyncRes::setQNameMinimization
      Src: /src/pdns/pdns/recursordist/syncres.cc:5725,1
    - Dst: scanForCNAMELoop
      Src: /src/pdns/pdns/recursordist/syncres.cc:5734,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:5736,1
    - Dst: clear
      Src: /src/pdns/pdns/recursordist/syncres.cc:5737,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:5742,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:5748,1
    - Dst: addNXNSECS
      Src: /src/pdns/pdns/recursordist/syncres.cc:5751,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:5758,1
    - Dst: SyncRes::doResolve
      Src: /src/pdns/pdns/recursordist/syncres.cc:5762,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:5763,1
    - Dst: SyncRes::updateValidationState
      Src: /src/pdns/pdns/recursordist/syncres.cc:5764,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 38
    argCount: 9
    argNames:
    - ' prefix'
    - ' qname'
    - ' newtarget'
    - qtype
    - ' ret'
    - ' rcode'
    - depth
    - ' recordsFromAnswer'
    - ' state'
    argTypes:
    - std::string
    - DNSName
    - DNSName
    - QType
    - std::vector<DNSRecord>
    - int
    - unsigned int
    - std::vector<DNSRecord>
    - vState
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5765
      start: 5714
    functionDepth: 3
    functionLinenumber: 5714
    functionLinenumberEnd: 5765
    functionName: SyncRes::handleNewTarget
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 1
    functionsReached:
    - isPartOf
    - scanForCNAMELoop
    - SyncRes::setQNameMinimization
    - addNXNSECS
    - SyncRes::doResolve
    - clear
    - LOG
    - SyncRes::updateValidationState
    linkageType: ''
    returnType: void
    signature: void SyncRes::handleNewTarget(const std::string& prefix, const DNSName&
      qname, const DNSName& newtarget, const QType qtype, std::vector<DNSRecord>&
      ret, int& rcode, unsigned int depth, const std::vector<DNSRecord>& recordsFromAnswer,
      vState& state)
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: std::max
      Src: /src/pdns/pdns/recursordist/syncres.cc:5771,1
    - Dst: d_name::isRoot
      Src: /src/pdns/pdns/recursordist/syncres.cc:5772,1
    - Dst: std::max
      Src: /src/pdns/pdns/recursordist/syncres.cc:5775,1
    - Dst: max
      Src: /src/pdns/pdns/recursordist/syncres.cc:5785,1
    - Dst: SyncRes::updateCacheFromRecords
      Src: /src/pdns/pdns/recursordist/syncres.cc:5793,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:5798,1
    - Dst: DNSName::DNSName
      Src: /src/pdns/pdns/recursordist/syncres.cc:5804,1
    - Dst: DNSName::DNSName
      Src: /src/pdns/pdns/recursordist/syncres.cc:5805,1
    - Dst: SyncRes::processRecords
      Src: /src/pdns/pdns/recursordist/syncres.cc:5807,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:5815,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:5816,1
    - Dst: DNSName::empty
      Src: /src/pdns/pdns/recursordist/syncres.cc:5820,1
    - Dst: SyncRes::handleNewTarget
      Src: /src/pdns/pdns/recursordist/syncres.cc:5821,1
    - Dst: QType::getCode
      Src: /src/pdns/pdns/recursordist/syncres.cc:5821,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:5826,1
    - Dst: SyncRes::getValidationStatus
      Src: /src/pdns/pdns/recursordist/syncres.cc:5828,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:5830,1
    - Dst: SyncRes::updateValidationState
      Src: /src/pdns/pdns/recursordist/syncres.cc:5831,1
    - Dst: SyncRes::updateValidationState
      Src: /src/pdns/pdns/recursordist/syncres.cc:5836,1
    - Dst: addNXNSECS
      Src: /src/pdns/pdns/recursordist/syncres.cc:5840,1
    - Dst: set::empty
      Src: /src/pdns/pdns/recursordist/syncres.cc:5847,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:5848,1
    - Dst: SyncRes::getValidationStatus
      Src: /src/pdns/pdns/recursordist/syncres.cc:5850,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:5852,1
    - Dst: SyncRes::updateValidationState
      Src: /src/pdns/pdns/recursordist/syncres.cc:5853,1
    - Dst: SyncRes::updateValidationState
      Src: /src/pdns/pdns/recursordist/syncres.cc:5858,1
    - Dst: addNXNSECS
      Src: /src/pdns/pdns/recursordist/syncres.cc:5862,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:5870,1
    - Dst: set::size
      Src: /src/pdns/pdns/recursordist/syncres.cc:5870,1
    - Dst: clear
      Src: /src/pdns/pdns/recursordist/syncres.cc:5872,1
    - Dst: wasHit
      Src: /src/pdns/pdns/recursordist/syncres.cc:5874,1
    - Dst: getProcessingPolicy
      Src: /src/pdns/pdns/recursordist/syncres.cc:5875,1
    - Dst: mergePolicyTags
      Src: /src/pdns/pdns/recursordist/syncres.cc:5877,1
    - Dst: getTags
      Src: /src/pdns/pdns/recursordist/syncres.cc:5877,1
    - Dst: policyHitEventFilter
      Src: /src/pdns/pdns/recursordist/syncres.cc:5879,1
    - Dst: DNSFilterEngine::Policy
      Src: /src/pdns/pdns/recursordist/syncres.cc:5881,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:5884,1
    - Dst: getName
      Src: /src/pdns/pdns/recursordist/syncres.cc:5884,1
    - Dst: PolicyHitException
      Src: /src/pdns/pdns/recursordist/syncres.cc:5885,1
    - Dst: insert
      Src: /src/pdns/pdns/recursordist/syncres.cc:5890,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:5892,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/syncres.cc:5893,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:5894,1
    - Dst: std::sample
      Src: /src/pdns/pdns/recursordist/syncres.cc:5896,1
    - Dst: cbegin
      Src: /src/pdns/pdns/recursordist/syncres.cc:5896,1
    - Dst: cend
      Src: /src/pdns/pdns/recursordist/syncres.cc:5896,1
    - Dst: std::inserter
      Src: /src/pdns/pdns/recursordist/syncres.cc:5896,1
    - Dst: NsSet::begin
      Src: /src/pdns/pdns/recursordist/syncres.cc:5896,1
    - Dst: pdns::dns_random_engine
      Src: /src/pdns/pdns/recursordist/syncres.cc:5896,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/syncres.cc:5897,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/syncres.cc:5901,1
    CyclomaticComplexity: 41
    EdgeCount: 41
    ICount: 85
    argCount: 17
    argNames:
    - depth
    - ' prefix'
    - ' lwr'
    - ' qname'
    - qtype
    - ' auth'
    - wasForwarded
    - ' ednsmask'
    - sendRDQuery
    - ' nameservers'
    - ' ret'
    - ' dfe'
    - gotNewServers
    - rcode
    - ' state'
    - ' remoteIP'
    - overTCP
    argTypes:
    - unsigned int
    - string
    - LWResult
    - DNSName
    - QType
    - DNSName
    - bool
    - std::optional<Netmask>
    - bool
    - NsSet
    - std::vector<DNSRecord>
    - DNSFilterEngine
    - bool*
    - int*
    - vState
    - ComboAddress
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5907
      start: 5767
    functionDepth: 7
    functionLinenumber: 5767
    functionLinenumberEnd: 5907
    functionName: SyncRes::processAnswer
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 0
    functionsReached:
    - SyncRes::getValidationStatus
    - insert
    - SyncRes::processRecords
    - std::sample
    - set::size
    - getName
    - SyncRes::handleNewTarget
    - set::empty
    - mergePolicyTags
    - PolicyHitException
    - size
    - cbegin
    - addNXNSECS
    - cend
    - clear
    - std::max
    - LOG
    - pdns::dns_random_engine
    - getProcessingPolicy
    - max
    - policyHitEventFilter
    - SyncRes::updateCacheFromRecords
    - getTags
    - DNSName::empty
    - NsSet::begin
    - std::inserter
    - std::move
    - DNSFilterEngine::Policy
    - d_name::isRoot
    - QType::getCode
    - DNSName::DNSName
    - SyncRes::updateValidationState
    - wasHit
    linkageType: ''
    returnType: bool
    signature: bool SyncRes::processAnswer(unsigned int depth, const string& prefix,
      LWResult& lwr, const DNSName& qname, const QType qtype, DNSName& auth, bool
      wasForwarded, const std::optional<Netmask>& ednsmask, bool sendRDQuery, NsSet&
      nameservers, std::vector<DNSRecord>& ret, const DNSFilterEngine& dfe, bool*
      gotNewServers, int* rcode, vState& state, const ComboAddress& remoteIP, bool
      overTCP)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getLocal
      Src: /src/pdns/pdns/recursordist/syncres.cc:5911,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' nameServer'
    argTypes:
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5912
      start: 5909
    functionDepth: 0
    functionLinenumber: 5909
    functionLinenumberEnd: 5912
    functionName: SyncRes::doDoTtoAuth
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 0
    functionsReached:
    - getLocal
    linkageType: ''
    returnType: bool
    signature: bool SyncRes::doDoTtoAuth(const DNSName& nameServer)
  - BBCount: 40
    BranchProfiles: []
    Callsites:
    - Dst: getLocal
      Src: /src/pdns/pdns/recursordist/syncres.cc:5924,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:5926,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/syncres.cc:5926,1
    - Dst: SyncRes::nameserversBlockedByRPZ
      Src: /src/pdns/pdns/recursordist/syncres.cc:5928,1
    - Dst: policyHitEventFilter
      Src: /src/pdns/pdns/recursordist/syncres.cc:5930,1
    - Dst: DNSFilterEngine::Policy
      Src: /src/pdns/pdns/recursordist/syncres.cc:5932,1
    - Dst: PolicyHitException
      Src: /src/pdns/pdns/recursordist/syncres.cc:5935,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:5939,1
    - Dst: SyncRes::shuffleInSpeedOrder
      Src: /src/pdns/pdns/recursordist/syncres.cc:5943,1
    - Dst: auto::size
      Src: /src/pdns/pdns/recursordist/syncres.cc:5950,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/recursordist/syncres.cc:5951,1
    - Dst: auto::size
      Src: /src/pdns/pdns/recursordist/syncres.cc:5951,1
    - Dst: std::max
      Src: /src/pdns/pdns/recursordist/syncres.cc:5952,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:5953,1
    - Dst: auto::cbegin
      Src: /src/pdns/pdns/recursordist/syncres.cc:5958,1
    - Dst: ImmediateServFailException
      Src: /src/pdns/pdns/recursordist/syncres.cc:5960,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/syncres.cc:5960,1
    - Dst: toLogString
      Src: /src/pdns/pdns/recursordist/syncres.cc:5960,1
    - Dst: std::set::size
      Src: /src/pdns/pdns/recursordist/syncres.cc:5962,1
    - Dst: ImmediateServFailException
      Src: /src/pdns/pdns/recursordist/syncres.cc:5963,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/syncres.cc:5963,1
    - Dst: toLogString
      Src: /src/pdns/pdns/recursordist/syncres.cc:5963,1
    - Dst: auto::cend
      Src: /src/pdns/pdns/recursordist/syncres.cc:5965,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:5966,1
    - Dst: auto::size
      Src: /src/pdns/pdns/recursordist/syncres.cc:5966,1
    - Dst: static_cast<uint16_t>
      Src: /src/pdns/pdns/recursordist/syncres.cc:5968,1
    - Dst: DNSName::toLogString
      Src: /src/pdns/pdns/recursordist/syncres.cc:5968,1
    - Dst: DNSName::isRoot
      Src: /src/pdns/pdns/recursordist/syncres.cc:5970,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:5971,1
    - Dst: doAgeCache
      Src: /src/pdns/pdns/recursordist/syncres.cc:5972,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/syncres.cc:5973,1
    - Dst: QType::getCode
      Src: /src/pdns/pdns/recursordist/syncres.cc:5981,1
    - Dst: QType::getCode
      Src: /src/pdns/pdns/recursordist/syncres.cc:5981,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:5984,1
    - Dst: auto::cbegin
      Src: /src/pdns/pdns/recursordist/syncres.cc:5984,1
    - Dst: auto::size
      Src: /src/pdns/pdns/recursordist/syncres.cc:5984,1
    - Dst: auto::first::empty
      Src: /src/pdns/pdns/recursordist/syncres.cc:5995,1
    - Dst: first::empty
      Src: /src/pdns/pdns/recursordist/syncres.cc:5995,1
    - Dst: auto::first::empty
      Src: /src/pdns/pdns/recursordist/syncres.cc:5999,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:6001,1
    - Dst: SyncRes::doOOBResolve
      Src: /src/pdns/pdns/recursordist/syncres.cc:6005,1
    - Dst: SyncRes::processAnswer
      Src: /src/pdns/pdns/recursordist/syncres.cc:6010,1
    - Dst: map<DNSName, vector<ComboAddress>>*::find
      Src: /src/pdns/pdns/recursordist/syncres.cc:6024,1
    - Dst: map<DNSName, vector<ComboAddress>>*::end
      Src: /src/pdns/pdns/recursordist/syncres.cc:6024,1
    - Dst: remoteIPs_t::empty
      Src: /src/pdns/pdns/recursordist/syncres.cc:6028,1
    - Dst: SyncRes::retrieveAddressesForNS
      Src: /src/pdns/pdns/recursordist/syncres.cc:6029,1
    - Dst: remoteIPs_t::empty
      Src: /src/pdns/pdns/recursordist/syncres.cc:6032,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:6033,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:6038,1
    - Dst: remoteIPs_t::begin
      Src: /src/pdns/pdns/recursordist/syncres.cc:6039,1
    - Dst: remoteIPs_t::end
      Src: /src/pdns/pdns/recursordist/syncres.cc:6039,1
    - Dst: remoteIPs_t::begin
      Src: /src/pdns/pdns/recursordist/syncres.cc:6040,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:6041,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:6043,1
    - Dst: remoteIPs_t::iterator::toString
      Src: /src/pdns/pdns/recursordist/syncres.cc:6043,1
    - Dst: SyncRes::nameserverIPBlockedByRPZ
      Src: /src/pdns/pdns/recursordist/syncres.cc:6044,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:6048,1
    - Dst: policyHitEventFilter
      Src: /src/pdns/pdns/recursordist/syncres.cc:6051,1
    - Dst: DNSFilterEngine::Policy
      Src: /src/pdns/pdns/recursordist/syncres.cc:6053,1
    - Dst: PolicyHitException
      Src: /src/pdns/pdns/recursordist/syncres.cc:6056,1
    - Dst: remoteIPs_t::begin
      Src: /src/pdns/pdns/recursordist/syncres.cc:6060,1
    - Dst: remoteIPs_t::end
      Src: /src/pdns/pdns/recursordist/syncres.cc:6060,1
    - Dst: std::set::insert
      Src: /src/pdns/pdns/recursordist/syncres.cc:6061,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:6063,1
    - Dst: remoteIPs_t::iterator::toStringWithPort
      Src: /src/pdns/pdns/recursordist/syncres.cc:6063,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:6066,1
    - Dst: remoteIPs_t::iterator::toStringWithPort
      Src: /src/pdns/pdns/recursordist/syncres.cc:6066,1
    - Dst: SyncRes::throttledOrBlocked
      Src: /src/pdns/pdns/recursordist/syncres.cc:6068,1
    - Dst: SyncRes::checkMaxQperQ
      Src: /src/pdns/pdns/recursordist/syncres.cc:6070,1
    - Dst: SyncRes::doDoTtoAuth
      Src: /src/pdns/pdns/recursordist/syncres.cc:6079,1
    - Dst: remoteIPs_t::iterator::setPort
      Src: /src/pdns/pdns/recursordist/syncres.cc:6080,1
    - Dst: remoteIPs_t::iterator::getPort
      Src: /src/pdns/pdns/recursordist/syncres.cc:6083,1
    - Dst: submitTryDotTask
      Src: /src/pdns/pdns/recursordist/syncres.cc:6089,1
    - Dst: SyncRes::doResolveAtThisIP
      Src: /src/pdns/pdns/recursordist/syncres.cc:6093,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:6097,1
    - Dst: SyncRes::doResolveAtThisIP
      Src: /src/pdns/pdns/recursordist/syncres.cc:6101,1
    - Dst: updateDoTStatus
      Src: /src/pdns/pdns/recursordist/syncres.cc:6109,1
    - Dst: LOG
      Src: /src/pdns/pdns/recursordist/syncres.cc:6114,1
    - Dst: LWResult::d_records::size
      Src: /src/pdns/pdns/recursordist/syncres.cc:6114,1
    - Dst: remoteIPs_t::iterator::toString
      Src: /src/pdns/pdns/recursordist/syncres.cc:6114,1
    - Dst: RCode::to_s
      Src: /src/pdns/pdns/recursordist/syncres.cc:6114,1
    - Dst: updateDoTStatus
      Src: /src/pdns/pdns/recursordist/syncres.cc:6117,1
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/syncres.cc:6125,1
    - Dst: auto::first::empty
      Src: /src/pdns/pdns/recursordist/syncres.cc:6125,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/syncres.cc:6125,1
    - Dst: remoteIPs_t::iterator::toStringWithPort
      Src: /src/pdns/pdns/recursordist/syncres.cc:6125,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/recursordist/syncres.cc:6125,1
    - Dst: SyncRes::processAnswer
      Src: /src/pdns/pdns/recursordist/syncres.cc:6128,1
    - Dst: shouldNotThrottle
      Src: /src/pdns/pdns/recursordist/syncres.cc:6140,1
    - Dst: SyncRes::doThrottle
      Src: /src/pdns/pdns/recursordist/syncres.cc:6141,1
    - Dst: remoteIPs_t::cend
      Src: /src/pdns/pdns/recursordist/syncres.cc:6149,1
    CyclomaticComplexity: 75
    EdgeCount: 75
    ICount: 153
    argCount: 12
    argNames:
    - ' nameservers'
    - auth
    - flawedNSSet
    - ' qname'
    - qtype
    - ' ret'
    - depth
    - ' prefix'
    - ' beenthere'
    - ' context'
    - stopAtDelegation
    - fallBack
    argTypes:
    - NsSet
    - DNSName
    - bool
    - DNSName
    - QType
    - vector<DNSRecord>
    - unsigned int
    - string
    - set<GetBestNSAnswer>
    - Context
    - StopAtDelegation*
    - map<DNSName, vector<ComboAddress>>*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6156
      start: 5919
    functionDepth: 8
    functionLinenumber: 5919
    functionLinenumberEnd: 6156
    functionName: SyncRes::doResolveAt
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 1
    functionsReached:
    - toLogString
    - std::to_string
    - auto::cbegin
    - map<DNSName, vector<ComboAddress>>*::find
    - SyncRes::processAnswer
    - SyncRes::doThrottle
    - remoteIPs_t::cend
    - DNSName::toLogString
    - submitTryDotTask
    - RCode::to_s
    - auto::size
    - static_cast<int>
    - remoteIPs_t::iterator::toStringWithPort
    - std::set::size
    - SyncRes::doDoTtoAuth
    - remoteIPs_t::begin
    - SyncRes::shuffleInSpeedOrder
    - DNSName::isRoot
    - size
    - PolicyHitException
    - getLocal
    - lock
    - static_cast<uint16_t>
    - doAgeCache
    - std::set::insert
    - remoteIPs_t::iterator::toString
    - SyncRes::retrieveAddressesForNS
    - std::max
    - LOG
    - SyncRes::checkMaxQperQ
    - auto::cend
    - at
    - remoteIPs_t::iterator::setPort
    - shouldNotThrottle
    - policyHitEventFilter
    - SyncRes::doOOBResolve
    - auto::first::empty
    - SyncRes::throttledOrBlocked
    - remoteIPs_t::empty
    - SyncRes::nameserverIPBlockedByRPZ
    - DNSName
    - updateDoTStatus
    - LWResult::d_records::size
    - SyncRes::nameserversBlockedByRPZ
    - remoteIPs_t::end
    - SyncRes::doResolveAtThisIP
    - DNSFilterEngine::Policy
    - remoteIPs_t::iterator::getPort
    - QType::getCode
    - first::empty
    - ImmediateServFailException
    - map<DNSName, vector<ComboAddress>>*::end
    linkageType: ''
    returnType: int
    signature: "int SyncRes::doResolveAt(NsSet& nameservers, DNSName auth, bool flawedNSSet,
      const DNSName& qname, const QType qtype,\n                         vector<DNSRecord>&
      ret,\n                         unsigned int depth, const string& prefix, set<GetBestNSAnswer>&
      beenthere, Context& context, StopAtDelegation* stopAtDelegation,\n                         map<DNSName,
      vector<ComboAddress>>* fallBack)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/syncres.cc:6160,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - ' netmask'
    argTypes:
    - Netmask
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6166
      start: 6158
    functionDepth: 0
    functionLinenumber: 6158
    functionLinenumberEnd: 6166
    functionName: SyncRes::setQuerySource
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 1
    functionsReached:
    - empty
    linkageType: ''
    returnType: void
    signature: void SyncRes::setQuerySource(const Netmask& netmask)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: getSourcePrefixLength
      Src: /src/pdns/pdns/recursordist/syncres.cc:6172,1
    - Dst: getSource
      Src: /src/pdns/pdns/recursordist/syncres.cc:6173,1
    - Dst: std::min
      Src: /src/pdns/pdns/recursordist/syncres.cc:6174,1
    - Dst: getSourcePrefixLength
      Src: /src/pdns/pdns/recursordist/syncres.cc:6174,1
    - Dst: getSource
      Src: /src/pdns/pdns/recursordist/syncres.cc:6174,1
    - Dst: getSource
      Src: /src/pdns/pdns/recursordist/syncres.cc:6175,1
    - Dst: ComboAddress::truncate
      Src: /src/pdns/pdns/recursordist/syncres.cc:6176,1
    - Dst: std::optional<Netmask>
      Src: /src/pdns/pdns/recursordist/syncres.cc:6177,1
    - Dst: Netmask
      Src: /src/pdns/pdns/recursordist/syncres.cc:6177,1
    - Dst: match
      Src: /src/pdns/pdns/recursordist/syncres.cc:6181,1
    - Dst: isIPv4
      Src: /src/pdns/pdns/recursordist/syncres.cc:6183,1
    - Dst: std::min
      Src: /src/pdns/pdns/recursordist/syncres.cc:6184,1
    - Dst: ComboAddress::isIPv4
      Src: /src/pdns/pdns/recursordist/syncres.cc:6184,1
    - Dst: ComboAddress::truncate
      Src: /src/pdns/pdns/recursordist/syncres.cc:6185,1
    - Dst: std::optional<Netmask>
      Src: /src/pdns/pdns/recursordist/syncres.cc:6186,1
    - Dst: Netmask
      Src: /src/pdns/pdns/recursordist/syncres.cc:6186,1
    - Dst: getSourcePrefixLength
      Src: /src/pdns/pdns/recursordist/syncres.cc:6188,1
    - Dst: std::optional<Netmask>
      Src: /src/pdns/pdns/recursordist/syncres.cc:6203,1
    - Dst: getSource
      Src: /src/pdns/pdns/recursordist/syncres.cc:6203,1
    - Dst: getSource
      Src: /src/pdns/pdns/recursordist/syncres.cc:6204,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 2
    argNames:
    - ' requestor'
    - ' incomingECS'
    argTypes:
    - ComboAddress
    - boost::optional<const EDNSSubnetOpts&>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6211
      start: 6168
    functionDepth: 0
    functionLinenumber: 6168
    functionLinenumberEnd: 6211
    functionName: SyncRes::setQuerySource
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 1
    functionsReached:
    - Netmask
    - ComboAddress::isIPv4
    - std::optional<Netmask>
    - std::min
    - match
    - isIPv4
    - getSource
    - getSourcePrefixLength
    - ComboAddress::truncate
    linkageType: ''
    returnType: void
    signature: void SyncRes::setQuerySource(const ComboAddress& requestor, const boost::optional<const
      EDNSSubnetOpts&>& incomingECS)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: check
      Src: /src/pdns/pdns/recursordist/syncres.cc:6215,1
    - Dst: match
      Src: /src/pdns/pdns/recursordist/syncres.cc:6215,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 5
    argCount: 2
    argNames:
    - ' name'
    - ' rem'
    argTypes:
    - DNSName
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6219
      start: 6213
    functionDepth: 0
    functionLinenumber: 6213
    functionLinenumberEnd: 6219
    functionName: SyncRes::getEDNSSubnetMask
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 1
    functionsReached:
    - check
    - match
    linkageType: ''
    returnType: std::optional<Netmask>
    signature: std::optional<Netmask> SyncRes::getEDNSSubnetMask(const DNSName& name,
      const ComboAddress& rem)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: stringtok
      Src: /src/pdns/pdns/recursordist/syncres.cc:6224,1
    - Dst: addMask
      Src: /src/pdns/pdns/recursordist/syncres.cc:6227,1
    - Dst: Netmask
      Src: /src/pdns/pdns/recursordist/syncres.cc:6227,1
    - Dst: add
      Src: /src/pdns/pdns/recursordist/syncres.cc:6230,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/syncres.cc:6230,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - ' alist'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6233
      start: 6221
    functionDepth: 0
    functionLinenumber: 6221
    functionLinenumberEnd: 6233
    functionName: SyncRes::parseEDNSSubnetAllowlist
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 1
    functionsReached:
    - add
    - Netmask
    - stringtok
    - DNSName
    - addMask
    linkageType: ''
    returnType: void
    signature: void SyncRes::parseEDNSSubnetAllowlist(const std::string& alist)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: stringtok
      Src: /src/pdns/pdns/recursordist/syncres.cc:6238,1
    - Dst: addMask
      Src: /src/pdns/pdns/recursordist/syncres.cc:6240,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ' subnetlist'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6242
      start: 6235
    functionDepth: 0
    functionLinenumber: 6235
    functionLinenumberEnd: 6242
    functionName: SyncRes::parseEDNSSubnetAddFor
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 1
    functionsReached:
    - stringtok
    - addMask
    linkageType: ''
    returnType: void
    signature: void SyncRes::parseEDNSSubnetAddFor(const std::string& subnetlist)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: directResolve
      Src: /src/pdns/pdns/recursordist/syncres.cc:6247,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 6
    argNames:
    - ' qname'
    - qtype
    - qclass
    - ' ret'
    - ' pdl'
    - log
    argTypes:
    - DNSName
    - QType
    - QClass
    - vector<DNSRecord>
    - shared_ptr<RecursorLua4>
    - Logr::log_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6248
      start: 6245
    functionDepth: 1
    functionLinenumber: 6245
    functionLinenumberEnd: 6248
    functionName: directResolve
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 5
    functionsReached:
    - directResolve
    linkageType: ''
    returnType: int
    signature: int directResolve(const DNSName& qname, const QType qtype, const QClass
      qclass, vector<DNSRecord>& ret, const shared_ptr<RecursorLua4>& pdl, Logr::log_t
      log)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Logr::log_t::withValues
      Src: /src/pdns/pdns/recursordist/syncres.cc:6252,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/syncres.cc:6252,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/syncres.cc:6252,1
    - Dst: gettimeofday
      Src: /src/pdns/pdns/recursordist/syncres.cc:6255,1
    - Dst: SyncRes::setQNameMinimization
      Src: /src/pdns/pdns/recursordist/syncres.cc:6258,1
    - Dst: SyncRes::setLuaEngine
      Src: /src/pdns/pdns/recursordist/syncres.cc:6260,1
    - Dst: SyncRes::beginResolve
      Src: /src/pdns/pdns/recursordist/syncres.cc:6266,1
    - Dst: auto::error
      Src: /src/pdns/pdns/recursordist/syncres.cc:6269,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/syncres.cc:6269,1
    - Dst: clear
      Src: /src/pdns/pdns/recursordist/syncres.cc:6270,1
    - Dst: auto::error
      Src: /src/pdns/pdns/recursordist/syncres.cc:6273,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/syncres.cc:6273,1
    - Dst: clear
      Src: /src/pdns/pdns/recursordist/syncres.cc:6274,1
    - Dst: auto::info
      Src: /src/pdns/pdns/recursordist/syncres.cc:6277,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/syncres.cc:6277,1
    - Dst: clear
      Src: /src/pdns/pdns/recursordist/syncres.cc:6278,1
    - Dst: auto::error
      Src: /src/pdns/pdns/recursordist/syncres.cc:6281,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/syncres.cc:6281,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/syncres.cc:6281,1
    - Dst: clear
      Src: /src/pdns/pdns/recursordist/syncres.cc:6282,1
    - Dst: auto::info
      Src: /src/pdns/pdns/recursordist/syncres.cc:6285,1
    - Dst: clear
      Src: /src/pdns/pdns/recursordist/syncres.cc:6286,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 25
    argCount: 7
    argNames:
    - ' qname'
    - qtype
    - qclass
    - ' ret'
    - ' pdl'
    - qnamemin
    - slog
    argTypes:
    - DNSName
    - QType
    - QClass
    - vector<DNSRecord>
    - shared_ptr<RecursorLua4>
    - bool
    - Logr::log_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6290
      start: 6250
    functionDepth: 5
    functionLinenumber: 6250
    functionLinenumberEnd: 6290
    functionName: directResolve
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 5
    functionsReached:
    - Logging::Loggable
    - what
    - SyncRes::setQNameMinimization
    - SyncRes::setLuaEngine
    - SyncRes::beginResolve
    - auto::error
    - Logr::log_t::withValues
    - gettimeofday
    - clear
    - auto::info
    linkageType: ''
    returnType: int
    signature: int directResolve(const DNSName& qname, const QType qtype, const QClass
      qclass, vector<DNSRecord>& ret, const shared_ptr<RecursorLua4>& pdl, bool qnamemin,
      Logr::log_t slog)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/syncres.cc:6294,1
    - Dst: SyncRes::setDoEDNS0
      Src: /src/pdns/pdns/recursordist/syncres.cc:6299,1
    - Dst: SyncRes::setUpdatingRootNS
      Src: /src/pdns/pdns/recursordist/syncres.cc:6300,1
    - Dst: SyncRes::setDoDNSSEC
      Src: /src/pdns/pdns/recursordist/syncres.cc:6301,1
    - Dst: SyncRes::setDNSSECValidationRequested
      Src: /src/pdns/pdns/recursordist/syncres.cc:6302,1
    - Dst: SyncRes::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/syncres.cc:6303,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/syncres.cc:6303,1
    - Dst: SyncRes::setRefreshAlmostExpired
      Src: /src/pdns/pdns/recursordist/syncres.cc:6304,1
    - Dst: SyncRes::beginResolve
      Src: /src/pdns/pdns/recursordist/syncres.cc:6310,1
    - Dst: SyncRes::getValidationState
      Src: /src/pdns/pdns/recursordist/syncres.cc:6312,1
    - Dst: vStateIsBogus
      Src: /src/pdns/pdns/recursordist/syncres.cc:6313,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/recursordist/syncres.cc:6314,1
    - Dst: Logr::log_t::error
      Src: /src/pdns/pdns/recursordist/syncres.cc:6319,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/syncres.cc:6319,1
    - Dst: Logr::log_t::error
      Src: /src/pdns/pdns/recursordist/syncres.cc:6322,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/syncres.cc:6322,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/recursordist/syncres.cc:6325,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/syncres.cc:6325,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/syncres.cc:6326,1
    - Dst: SyncRes::d_appliedPolicy::getName
      Src: /src/pdns/pdns/recursordist/syncres.cc:6326,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/syncres.cc:6327,1
    - Dst: Logr::log_t::error
      Src: /src/pdns/pdns/recursordist/syncres.cc:6330,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/syncres.cc:6330,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/syncres.cc:6330,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/recursordist/syncres.cc:6333,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/recursordist/syncres.cc:6337,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/recursordist/syncres.cc:6340,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/syncres.cc:6340,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 36
    argCount: 4
    argNames:
    - now
    - asyncCallback
    - depth
    - log
    argTypes:
    - struct timeval
    - asyncresolve_t
    - unsigned int
    - Logr::log_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6343
      start: 6292
    functionDepth: 5
    functionLinenumber: 6292
    functionLinenumberEnd: 6343
    functionName: SyncRes::getRootNS
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 2
    functionsReached:
    - std::move
    - SyncRes::setDNSSECValidationRequested
    - arg
    - SyncRes::setRefreshAlmostExpired
    - Logr::log_t::info
    - Logging::Loggable
    - PDNSException
    - what
    - SyncRes::setDoDNSSEC
    - Logr::log_t::error
    - vStateIsBogus
    - SyncRes::setAsyncCallback
    - SyncRes::beginResolve
    - SyncRes::setDoEDNS0
    - SyncRes::getValidationState
    - SyncRes::d_appliedPolicy::getName
    - vector::clear
    - SyncRes::setUpdatingRootNS
    linkageType: ''
    returnType: int
    signature: int SyncRes::getRootNS(struct timeval now, asyncresolve_t asyncCallback,
      unsigned int depth, Logr::log_t log)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: std::any_of
      Src: /src/pdns/pdns/recursordist/syncres.cc:6362,1
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/syncres.cc:6362,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/syncres.cc:6362,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 3
    argNames:
    - requestedType
    - rcode
    - ' records'
    argTypes:
    - uint16_t
    - int
    - std::vector<DNSRecord>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6366
      start: 6345
    functionDepth: 0
    functionLinenumber: 6345
    functionLinenumberEnd: 6366
    functionName: SyncRes::answerIsNOData
    functionSourceFile: /src/pdns/pdns/recursordist/syncres.cc
    functionUses: 5
    functionsReached:
    - std::any_of
    - end
    - begin
    linkageType: ''
    returnType: bool
    signature: bool SyncRes::answerIsNOData(uint16_t requestedType, int rcode, const
      std::vector<DNSRecord>& records)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: stringtok
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:40,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:42,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:42,1
    - Dst: pdns_iequals
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:42,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:42,1
    - Dst: MOADNSException
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:43,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:43,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:43,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:46,1
    - Dst: MOADNSException
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:47,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:47,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:50,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:50,1
    - Dst: pdns::checked_stoi<unsigned int>
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:51,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:51,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:52,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:52,1
    - Dst: MOADNSException
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:53,1
    - Dst: boost::format
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:53,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:53,1
    - Dst: str
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:53,1
    - Dst: string::reserve
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:57,1
    - Dst: sscanf
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:61,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:61,1
    - Dst: MOADNSException
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:62,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:62,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:62,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:62,1
    - Dst: string::append
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:64,1
    - Dst: insert
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:67,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:67,1
    - Dst: string::begin
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:67,1
    - Dst: string::end
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:67,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 19
    argCount: 1
    argNames:
    - ' zone'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 36
    functionDepth: 2
    functionLinenumber: 36
    functionLinenumberEnd: 68
    functionName: UnknownRecordContent::UnknownRecordContent
    functionSourceFile: /src/pdns/pdns/recursordist/dnsparser.cc
    functionUses: 0
    functionsReached:
    - string::end
    - string::begin
    - string::reserve
    - stringtok
    - vector::at
    - std::to_string
    - sscanf
    - pdns_iequals
    - string::append
    - end
    - size
    - pdns::checked_stoi<unsigned int>
    - str
    - insert
    - boost::format
    - MOADNSException
    - vector::size
    - at
    linkageType: ''
    returnType: void
    signature: void UnknownRecordContent::UnknownRecordContent(const string& zone)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:73,1
    - Dst: snprintf
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:76,1
    - Dst: ostringstream::str
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:79,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 70
    functionDepth: 0
    functionLinenumber: 70
    functionLinenumberEnd: 80
    functionName: UnknownRecordContent::getZoneRepresentation
    functionSourceFile: /src/pdns/pdns/recursordist/dnsparser.cc
    functionUses: 0
    functionsReached:
    - ostringstream::str
    - snprintf
    - size
    linkageType: ''
    returnType: string
    signature: string UnknownRecordContent::getZoneRepresentation(bool /* noDot */)
      const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: xfrBlob
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:84,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:84,1
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:84,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:84,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' pw'
    argTypes:
    - DNSPacketWriter
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 82
    functionDepth: 0
    functionLinenumber: 82
    functionLinenumberEnd: 85
    functionName: UnknownRecordContent::toPacket
    functionSourceFile: /src/pdns/pdns/recursordist/dnsparser.cc
    functionUses: 0
    functionsReached:
    - end
    - xfrBlob
    - string
    - begin
    linkageType: ''
    returnType: void
    signature: void UnknownRecordContent::toPacket(DNSPacketWriter& pw) const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:90,1
    - Dst: htons
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:91,1
    - Dst: htons
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:92,1
    - Dst: getStorage
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:96,1
    - Dst: PacketBuffer::resize
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:97,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:97,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:97,1
    - Dst: memcpy
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:100,1
    - Dst: memcpy
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:103,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:103,1
    - Dst: std::array::size
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:103,1
    - Dst: std::array::size
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:103,1
    - Dst: memcpy
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:105,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:105,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:105,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:105,1
    - Dst: htons
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:108,1
    - Dst: htons
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:109,1
    - Dst: htons
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:111,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:111,1
    - Dst: memcpy
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:113,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:114,1
    - Dst: memcpy
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:115,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:115,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:115,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:116,1
    - Dst: DNSRecord::DNSRecord
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:120,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:124,1
    - Dst: std::string_view
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:126,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:126,1
    - Dst: PacketBuffer::data
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:126,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:126,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:126,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:126,1
    - Dst: PacketReader::getDnsrecordheader
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:128,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:129,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 28
    argCount: 5
    argNames:
    - ' qname'
    - qtype
    - ' serialized'
    - qclass
    - internalRepresentation
    argTypes:
    - DNSName
    - uint16_t
    - string
    - uint16_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 131
      start: 87
    functionDepth: 1
    functionLinenumber: 87
    functionLinenumberEnd: 131
    functionName: DNSRecordContent::deserialize
    functionSourceFile: /src/pdns/pdns/recursordist/dnsparser.cc
    functionUses: 6
    functionsReached:
    - memcpy
    - PacketBuffer::data
    - DNSRecord::DNSRecord
    - getStorage
    - std::string_view
    - size
    - memset
    - empty
    - reinterpret_cast<const char*>
    - PacketBuffer::size
    - PacketReader::getDnsrecordheader
    - PacketBuffer::resize
    - DNSRecordContent::make
    - c_str
    - std::array::data
    - std::array::size
    - htons
    linkageType: ''
    returnType: shared_ptr<DNSRecordContent>
    signature: shared_ptr<DNSRecordContent> DNSRecordContent::deserialize(const DNSName&
      qname, uint16_t qtype, const string& serialized, uint16_t qclass, bool internalRepresentation)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: getTypemap
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:138,1
    - Dst: pair
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:138,1
    - Dst: getTypemap
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:139,1
    - Dst: std::make_shared<UnknownRecordContent>
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:140,1
    - Dst: auto::second
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:143,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - ' dr'
    - ' pr'
    argTypes:
    - DNSRecord
    - PacketReader
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 144
      start: 133
    functionDepth: 0
    functionLinenumber: 133
    functionLinenumberEnd: 144
    functionName: DNSRecordContent::make
    functionSourceFile: /src/pdns/pdns/recursordist/dnsparser.cc
    functionUses: 76
    functionsReached:
    - auto::second
    - std::make_shared<UnknownRecordContent>
    - getTypemap
    - pair
    linkageType: ''
    returnType: std::shared_ptr<DNSRecordContent>
    signature: "std::shared_ptr<DNSRecordContent> DNSRecordContent::make(const DNSRecord&
      dr,\n                                                         PacketReader&
      pr)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: getZmakermap
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:149,1
    - Dst: pair
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:149,1
    - Dst: getZmakermap
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:150,1
    - Dst: std::make_shared<UnknownRecordContent>
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:151,1
    - Dst: auto::second
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:154,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - qtype
    - qclass
    - ' content'
    argTypes:
    - uint16_t
    - uint16_t
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 146
    functionDepth: 0
    functionLinenumber: 146
    functionLinenumberEnd: 155
    functionName: DNSRecordContent::make
    functionSourceFile: /src/pdns/pdns/recursordist/dnsparser.cc
    functionUses: 76
    functionsReached:
    - auto::second
    - getZmakermap
    - std::make_shared<UnknownRecordContent>
    - pair
    linkageType: ''
    returnType: std::shared_ptr<DNSRecordContent>
    signature: "std::shared_ptr<DNSRecordContent> DNSRecordContent::make(uint16_t
      qtype, uint16_t qclass,\n                                                         const
      string& content)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<UnknownRecordContent>
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:163,1
    - Dst: getTypemap
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:167,1
    - Dst: pair
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:167,1
    - Dst: getTypemap
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:168,1
    - Dst: std::make_shared<UnknownRecordContent>
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:169,1
    - Dst: auto::second
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:172,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 7
    argCount: 3
    argNames:
    - ' dr'
    - ' pr'
    - oc
    argTypes:
    - DNSRecord
    - PacketReader
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 173
      start: 157
    functionDepth: 0
    functionLinenumber: 157
    functionLinenumberEnd: 173
    functionName: DNSRecordContent::make
    functionSourceFile: /src/pdns/pdns/recursordist/dnsparser.cc
    functionUses: 76
    functionsReached:
    - auto::second
    - std::make_shared<UnknownRecordContent>
    - getTypemap
    - pair
    linkageType: ''
    returnType: std::shared_ptr<DNSRecordContent>
    signature: std::shared_ptr<DNSRecordContent> DNSRecordContent::make(const DNSRecord&
      dr, PacketReader& pr, uint16_t oc)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSRecordContent::deserialize
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:178,1
    - Dst: getCode
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:178,1
    - Dst: UnknownRecordContent::serialize
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:178,1
    - Dst: shared_ptr::getZoneRepresentation
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:179,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' qname'
    - ' qtype'
    - ' content'
    argTypes:
    - DNSName
    - QType
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 180
      start: 175
    functionDepth: 0
    functionLinenumber: 175
    functionLinenumberEnd: 180
    functionName: DNSRecordContent::upgradeContent
    functionSourceFile: /src/pdns/pdns/recursordist/dnsparser.cc
    functionUses: 2
    functionsReached:
    - UnknownRecordContent::serialize
    - shared_ptr::getZoneRepresentation
    - getCode
    - DNSRecordContent::deserialize
    linkageType: ''
    returnType: string
    signature: string DNSRecordContent::upgradeContent(const DNSName& qname, const
      QType& qtype, const string& content)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 186
      start: 182
    functionDepth: 0
    functionLinenumber: 182
    functionLinenumberEnd: 186
    functionName: '& DNSRecordContent::getTypemap()'
    functionSourceFile: /src/pdns/pdns/recursordist/dnsparser.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: DNSRecordContent::typemap_t
    signature: DNSRecordContent::typemap_t & DNSRecordContent::getTypemap()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 192
      start: 188
    functionDepth: 0
    functionLinenumber: 188
    functionLinenumberEnd: 192
    functionName: '& DNSRecordContent::getN2Typemap()'
    functionSourceFile: /src/pdns/pdns/recursordist/dnsparser.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: DNSRecordContent::n2typemap_t
    signature: DNSRecordContent::n2typemap_t & DNSRecordContent::getN2Typemap()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 198
      start: 194
    functionDepth: 0
    functionLinenumber: 194
    functionLinenumberEnd: 198
    functionName: '& DNSRecordContent::getT2Namemap()'
    functionSourceFile: /src/pdns/pdns/recursordist/dnsparser.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: DNSRecordContent::t2namemap_t
    signature: DNSRecordContent::t2namemap_t & DNSRecordContent::getT2Namemap()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 204
      start: 200
    functionDepth: 0
    functionLinenumber: 200
    functionLinenumberEnd: 204
    functionName: '& DNSRecordContent::getZmakermap()'
    functionSourceFile: /src/pdns/pdns/recursordist/dnsparser.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: DNSRecordContent::zmakermap_t
    signature: DNSRecordContent::zmakermap_t & DNSRecordContent::getZmakermap()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getTypemap
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:208,1
    - Dst: pair
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:208,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - rtype
    - rclass
    argTypes:
    - uint16_t
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 209
      start: 206
    functionDepth: 0
    functionLinenumber: 206
    functionLinenumberEnd: 209
    functionName: DNSRecordContent::isRegisteredType
    functionSourceFile: /src/pdns/pdns/recursordist/dnsparser.cc
    functionUses: 0
    functionsReached:
    - getTypemap
    - pair
    linkageType: ''
    returnType: bool
    signature: bool DNSRecordContent::isRegisteredType(uint16_t rtype, uint16_t rclass)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: qtype::getCode
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:213,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:218,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - ' rr'
    argTypes:
    - DNSResourceRecord
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 219
      start: 211
    functionDepth: 0
    functionLinenumber: 211
    functionLinenumberEnd: 219
    functionName: DNSRecord::DNSRecord
    functionSourceFile: /src/pdns/pdns/recursordist/dnsparser.cc
    functionUses: 30
    functionsReached:
    - qtype::getCode
    - DNSRecordContent::make
    linkageType: ''
    returnType: void
    signature: void DNSRecord::DNSRecord(const DNSResourceRecord& rr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:226,1
    - Dst: getContent
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:228,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - ' wire'
    argTypes:
    - DNSRecord
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 232
      start: 222
    functionDepth: 0
    functionLinenumber: 222
    functionLinenumberEnd: 232
    functionName: DNSResourceRecord::fromWire
    functionSourceFile: /src/pdns/pdns/recursordist/dnsparser.cc
    functionUses: 6
    functionsReached:
    - QType
    - getContent
    linkageType: ''
    returnType: DNSResourceRecord
    signature: DNSResourceRecord DNSResourceRecord::fromWire(const DNSRecord& wire)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:236,1
    - Dst: MOADNSException
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:237,1
    - Dst: memcpy
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:239,1
    - Dst: data
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:239,1
    - Dst: MOADNSException
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:242,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:242,1
    - Dst: ntohs
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:244,1
    - Dst: ntohs
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:245,1
    - Dst: ntohs
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:246,1
    - Dst: ntohs
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:247,1
    - Dst: MOADNSException
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:250,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:250,1
    - Dst: PacketReader::getName
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:260,1
    - Dst: PacketReader::get16BitInt
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:261,1
    - Dst: PacketReader::get16BitInt
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:262,1
    - Dst: std::min
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:275,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:275,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:275,1
    - Dst: reserve
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:276,1
    - Dst: DNSRecord::DNSRecord
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:278,1
    - Dst: PacketReader::getPosition
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:287,1
    - Dst: PacketReader::getName
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:289,1
    - Dst: PacketReader::getDnsrecordheader
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:291,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:296,1
    - Dst: DNSRecord::setContent
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:303,1
    - Dst: std::make_shared<UnknownRecordContent>
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:303,1
    - Dst: DNSRecord::setContent
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:307,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:307,1
    - Dst: MOADNSException
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:311,1
    - Dst: toString
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:311,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:311,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:311,1
    - Dst: MOADNSException
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:316,1
    - Dst: toLogString
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:316,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:316,1
    - Dst: emplace_back
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:322,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:322,1
    - Dst: PacketReader::getPosition
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:326,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:326,1
    - Dst: MOADNSException
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:327,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:327,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:327,1
    - Dst: PacketReader::getPosition
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:327,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:328,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:328,1
    - Dst: MOADNSException
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:345,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:345,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:345,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:346,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:347,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:347,1
    CyclomaticComplexity: 43
    EdgeCount: 43
    ICount: 69
    argCount: 2
    argNames:
    - query
    - ' packet'
    argTypes:
    - bool
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 350
      start: 234
    functionDepth: 0
    functionLinenumber: 234
    functionLinenumberEnd: 350
    functionName: MOADNSParser::init
    functionSourceFile: /src/pdns/pdns/recursordist/dnsparser.cc
    functionUses: 4
    functionsReached:
    - PacketReader::getName
    - toString
    - toLogString
    - std::to_string
    - DNSRecord::DNSRecord
    - ntohs
    - DNSRecord::setContent
    - emplace_back
    - static_cast<size_t>
    - string
    - size
    - PacketReader::get16BitInt
    - DNSRecordContent::make
    - PacketReader::getPosition
    - std::make_shared<UnknownRecordContent>
    - reserve
    - memcpy
    - std::move
    - std::min
    - what
    - PacketReader::getDnsrecordheader
    - data
    - MOADNSException
    linkageType: ''
    returnType: void
    signature: void MOADNSParser::init(bool query, const std::string_view& packet)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:354,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 365
      start: 352
    functionDepth: 0
    functionLinenumber: 352
    functionLinenumberEnd: 365
    functionName: MOADNSParser::hasEDNS
    functionSourceFile: /src/pdns/pdns/recursordist/dnsparser.cc
    functionUses: 0
    functionsReached:
    - empty
    linkageType: ''
    returnType: bool
    signature: bool MOADNSParser::hasEDNS() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: reinterpret_cast<unsigned char*>
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:369,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:372,1
    - Dst: ntohs
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:375,1
    - Dst: ntohs
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:376,1
    - Dst: ntohs
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:377,1
    - Dst: ntohl
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:378,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:382,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:382,1
    - Dst: std::out_of_range
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:383,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:383,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:383,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:383,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:383,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 1
    argNames:
    - ah
    argTypes:
    - struct dnsrecordheader
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 385
      start: 367
    functionDepth: 0
    functionLinenumber: 367
    functionLinenumberEnd: 385
    functionName: PacketReader::getDnsrecordheader
    functionSourceFile: /src/pdns/pdns/recursordist/dnsparser.cc
    functionUses: 20
    functionsReached:
    - ntohl
    - std::out_of_range
    - std::to_string
    - ntohs
    - size
    - reinterpret_cast<unsigned char*>
    - at
    linkageType: ''
    returnType: void
    signature: void PacketReader::getDnsrecordheader(struct dnsrecordheader &ah)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:393,1
    - Dst: std::out_of_range
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:394,1
    - Dst: resize
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:397,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:400,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:400,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 2
    argNames:
    - ' dest'
    - len
    argTypes:
    - vector<unsigned char>
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 402
      start: 388
    functionDepth: 1
    functionLinenumber: 388
    functionLinenumberEnd: 402
    functionName: PacketReader::copyRecord
    functionSourceFile: /src/pdns/pdns/recursordist/dnsparser.cc
    functionUses: 0
    functionsReached:
    - at
    - std::out_of_range
    - resize
    - size
    linkageType: ''
    returnType: void
    signature: void PacketReader::copyRecord(vector<unsigned char>& dest, uint16_t
      len)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:406,1
    - Dst: std::out_of_range
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:407,1
    - Dst: memcpy
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:410,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:410,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - dest
    - len
    argTypes:
    - unsigned char*
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 412
      start: 404
    functionDepth: 0
    functionLinenumber: 404
    functionLinenumberEnd: 412
    functionName: PacketReader::copyRecord
    functionSourceFile: /src/pdns/pdns/recursordist/dnsparser.cc
    functionUses: 0
    functionsReached:
    - memcpy
    - at
    - std::out_of_range
    - size
    linkageType: ''
    returnType: void
    signature: void PacketReader::copyRecord(unsigned char* dest, uint16_t len)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:416,1
    - Dst: std::out_of_range
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:417,1
    - Dst: memcpy
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:419,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:419,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - ' ret'
    argTypes:
    - NodeOrLocatorID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 421
      start: 414
    functionDepth: 0
    functionLinenumber: 414
    functionLinenumberEnd: 421
    functionName: PacketReader::xfrNodeOrLocatorID
    functionSourceFile: /src/pdns/pdns/recursordist/dnsparser.cc
    functionUses: 0
    functionsReached:
    - memcpy
    - at
    - std::out_of_range
    - size
    linkageType: ''
    returnType: void
    signature: void PacketReader::xfrNodeOrLocatorID(NodeOrLocatorID& ret)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:426,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:426,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:428,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:428,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:430,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:430,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:432,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:432,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:434,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:434,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:436,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:436,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 1
    argNames:
    - ' ret'
    argTypes:
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 437
      start: 423
    functionDepth: 0
    functionLinenumber: 423
    functionLinenumberEnd: 437
    functionName: PacketReader::xfr48BitInt
    functionSourceFile: /src/pdns/pdns/recursordist/dnsparser.cc
    functionUses: 0
    functionsReached:
    - at
    - static_cast<uint8_t>
    linkageType: ''
    returnType: void
    signature: void PacketReader::xfr48BitInt(uint64_t& ret)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:442,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:442,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:444,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:444,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:446,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:446,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:448,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:448,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 451
      start: 439
    functionDepth: 0
    functionLinenumber: 439
    functionLinenumberEnd: 451
    functionName: PacketReader::get32BitInt
    functionSourceFile: /src/pdns/pdns/recursordist/dnsparser.cc
    functionUses: 6
    functionsReached:
    - at
    - static_cast<uint8_t>
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t PacketReader::get32BitInt()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:457,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:457,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:459,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:459,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 462
      start: 454
    functionDepth: 0
    functionLinenumber: 454
    functionLinenumberEnd: 462
    functionName: PacketReader::get16BitInt
    functionSourceFile: /src/pdns/pdns/recursordist/dnsparser.cc
    functionUses: 21
    functionsReached:
    - at
    - static_cast<uint8_t>
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t PacketReader::get16BitInt()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: at
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:466,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 467
      start: 464
    functionDepth: 0
    functionLinenumber: 464
    functionLinenumberEnd: 467
    functionName: PacketReader::get8BitInt
    functionSourceFile: /src/pdns/pdns/recursordist/dnsparser.cc
    functionUses: 2
    functionsReached:
    - at
    linkageType: ''
    returnType: uint8_t
    signature: uint8_t PacketReader::get8BitInt()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: data
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:473,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:473,1
    - Dst: std::out_of_range
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:479,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:479,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:479,1
    - Dst: std::out_of_range
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:482,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:484,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 485
      start: 469
    functionDepth: 0
    functionLinenumber: 469
    functionLinenumberEnd: 485
    functionName: PacketReader::getName
    functionSourceFile: /src/pdns/pdns/recursordist/dnsparser.cc
    functionUses: 21
    functionsReached:
    - std::out_of_range
    - PDNSException
    - what
    - string
    - size
    - data
    linkageType: ''
    returnType: DNSName
    signature: DNSName PacketReader::getName()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<unsigned char>
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:494,1
    - Dst: snprintf
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:496,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:496,1
    - Dst: std::array::size
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:496,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:497,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 1
    argNames:
    - name
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 508
      start: 488
    functionDepth: 0
    functionLinenumber: 488
    functionLinenumberEnd: 508
    functionName: txtEscape
    functionSourceFile: /src/pdns/pdns/recursordist/dnsparser.cc
    functionUses: 6
    functionsReached:
    - std::array::size
    - std::array::data
    - snprintf
    - static_cast<unsigned char>
    linkageType: ''
    returnType: string
    signature: string txtEscape(const string &name)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: string::reserve
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:514,1
    - Dst: string::empty
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:516,1
    - Dst: string::append
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:517,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:521,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:521,1
    - Dst: std::out_of_range
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:529,1
    - Dst: string::append
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:532,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:534,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:534,1
    - Dst: string::append
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:535,1
    - Dst: txtEscape
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:535,1
    - Dst: string::append
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:537,1
    - Dst: string::empty
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:544,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 28
    argCount: 2
    argNames:
    - multi
    - lenField
    argTypes:
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 549
      start: 511
    functionDepth: 0
    functionLinenumber: 511
    functionLinenumberEnd: 549
    functionName: PacketReader::getText
    functionSourceFile: /src/pdns/pdns/recursordist/dnsparser.cc
    functionUses: 2
    functionsReached:
    - string::reserve
    - std::out_of_range
    - string::empty
    - string::append
    - static_cast<uint8_t>
    - txtEscape
    - at
    linkageType: ''
    returnType: string
    signature: string PacketReader::getText(bool multi, bool lenField)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:555,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:555,1
    - Dst: std::out_of_range
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:563,1
    - Dst: std::out_of_range
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:569,1
    - Dst: substr
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:577,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 1
    argNames:
    - lenField
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 580
      start: 551
    functionDepth: 0
    functionLinenumber: 551
    functionLinenumberEnd: 580
    functionName: PacketReader::getUnquotedText
    functionSourceFile: /src/pdns/pdns/recursordist/dnsparser.cc
    functionUses: 2
    functionsReached:
    - std::out_of_range
    - substr
    - at
    - static_cast<uint8_t>
    linkageType: ''
    returnType: string
    signature: string PacketReader::getUnquotedText(bool lenField)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: std::out_of_range
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:587,1
    - Dst: assign
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:589,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:589,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:589,1
    - Dst: clear
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:592,1
    - Dst: std::out_of_range
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:599,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 1
    argNames:
    - ' blob'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 601
      start: 582
    functionDepth: 1
    functionLinenumber: 582
    functionLinenumberEnd: 601
    functionName: PacketReader::xfrBlob
    functionSourceFile: /src/pdns/pdns/recursordist/dnsparser.cc
    functionUses: 23
    functionsReached:
    - clear
    - assign
    - std::out_of_range
    - at
    linkageType: ''
    returnType: void
    signature: void PacketReader::xfrBlob(string& blob)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PacketReader::xfrBlob
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:604,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' blob'
    - length
    argTypes:
    - string
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 605
      start: 603
    functionDepth: 0
    functionLinenumber: 603
    functionLinenumberEnd: 605
    functionName: PacketReader::xfrBlobNoSpaces
    functionSourceFile: /src/pdns/pdns/recursordist/dnsparser.cc
    functionUses: 2
    functionsReached:
    - PacketReader::xfrBlob
    linkageType: ''
    returnType: void
    signature: void PacketReader::xfrBlobNoSpaces(string& blob, int length)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: std::out_of_range
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:611,1
    - Dst: std::out_of_range
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:615,1
    - Dst: assign
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:618,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:618,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:618,1
    - Dst: clear
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:623,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 2
    argNames:
    - ' blob'
    - length
    argTypes:
    - string
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 625
      start: 607
    functionDepth: 1
    functionLinenumber: 607
    functionLinenumberEnd: 625
    functionName: PacketReader::xfrBlob
    functionSourceFile: /src/pdns/pdns/recursordist/dnsparser.cc
    functionUses: 24
    functionsReached:
    - clear
    - assign
    - std::out_of_range
    - at
    linkageType: ''
    returnType: void
    signature: void PacketReader::xfrBlob(string& blob, int length)
  - BBCount: 22
    BranchProfiles: []
    Callsites:
    - Dst: std::out_of_range
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:632,1
    - Dst: PacketReader::xfr16BitInt
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:635,1
    - Dst: std::out_of_range
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:638,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:638,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:638,1
    - Dst: static_cast<SvcParam::SvcParamKey>
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:642,1
    - Dst: PacketReader::xfr16BitInt
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:645,1
    - Dst: std::out_of_range
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:648,1
    - Dst: std::out_of_range
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:655,1
    - Dst: std::out_of_range
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:658,1
    - Dst: PacketReader::xfr16BitInt
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:664,1
    - Dst: std::set::insert
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:665,1
    - Dst: static_cast<SvcParam::SvcParamKey>
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:665,1
    - Dst: set<SvcParam>::insert
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:667,1
    - Dst: SvcParam
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:667,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:667,1
    - Dst: PacketReader::xfr8BitInt
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:676,1
    - Dst: std::out_of_range
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:678,1
    - Dst: std::out_of_range
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:681,1
    - Dst: PacketReader::xfrBlob
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:683,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:684,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:684,1
    - Dst: set<SvcParam>::insert
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:686,1
    - Dst: SvcParam
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:686,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:686,1
    - Dst: std::out_of_range
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:692,1
    - Dst: SvcParam::keyToString
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:692,1
    - Dst: set<SvcParam>::insert
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:694,1
    - Dst: SvcParam
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:694,1
    - Dst: std::out_of_range
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:699,1
    - Dst: PacketReader::xfr16BitInt
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:702,1
    - Dst: set<SvcParam>::insert
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:703,1
    - Dst: SvcParam
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:703,1
    - Dst: std::out_of_range
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:710,1
    - Dst: SvcParam::keyToString
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:710,1
    - Dst: PacketReader::xfrCAWithoutPort
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:717,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:718,1
    - Dst: SvcParam
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:724,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:724,1
    - Dst: auto::setAutoHint
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:725,1
    - Dst: set<SvcParam>::insert
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:726,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:726,1
    - Dst: std::string::reserve
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:731,1
    - Dst: PacketReader::xfrBlobNoSpaces
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:732,1
    - Dst: set<SvcParam>::insert
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:733,1
    - Dst: SvcParam
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:733,1
    - Dst: std::out_of_range
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:738,1
    - Dst: SvcParam::keyToString
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:738,1
    - Dst: vector::reserve
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:741,1
    - Dst: PacketReader::xfr16BitInt
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:746,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:747,1
    - Dst: SvcParam
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:749,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:749,1
    - Dst: set<SvcParam>::insert
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:750,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:750,1
    - Dst: std::string::reserve
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:755,1
    - Dst: PacketReader::xfrBlob
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:756,1
    - Dst: set<SvcParam>::insert
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:757,1
    - Dst: SvcParam
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:757,1
    CyclomaticComplexity: 37
    EdgeCount: 37
    ICount: 99
    argCount: 1
    argNames:
    - kvs
    argTypes:
    - set<SvcParam>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 762
      start: 627
    functionDepth: 2
    functionLinenumber: 627
    functionLinenumberEnd: 762
    functionName: PacketReader::xfrSvcParamKeyVals
    functionSourceFile: /src/pdns/pdns/recursordist/dnsparser.cc
    functionUses: 13
    functionsReached:
    - std::vector::push_back
    - std::move
    - vector::push_back
    - std::out_of_range
    - std::to_string
    - PacketReader::xfr8BitInt
    - PacketReader::xfrBlob
    - set<SvcParam>::insert
    - static_cast<SvcParam::SvcParamKey>
    - SvcParam
    - PacketReader::xfrCAWithoutPort
    - auto::setAutoHint
    - std::string::reserve
    - PacketReader::xfrBlobNoSpaces
    - std::set::insert
    - vector::reserve
    - SvcParam::keyToString
    - PacketReader::xfr16BitInt
    linkageType: ''
    returnType: void
    signature: void PacketReader::xfrSvcParamKeyVals(set<SvcParam> &kvs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PacketReader::xfrBlob
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:767,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' blob'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 768
      start: 765
    functionDepth: 0
    functionLinenumber: 765
    functionLinenumberEnd: 768
    functionName: PacketReader::xfrHexBlob
    functionSourceFile: /src/pdns/pdns/recursordist/dnsparser.cc
    functionUses: 0
    functionsReached:
    - PacketReader::xfrBlob
    linkageType: ''
    returnType: void
    signature: void PacketReader::xfrHexBlob(string& blob, bool /* keepReading */)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strchr
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:775,1
    - Dst: string::c_str
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:775,1
    - Dst: boost::replace_all
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:776,1
    - Dst: boost::replace_all
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:777,1
    - Dst: boost::replace_all
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:778,1
    - Dst: vstringtok
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:782,1
    - Dst: string::reserve
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:784,1
    - Dst: string::size
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:784,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:786,1
    - Dst: strncasecmp
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:786,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:786,1
    - Dst: string::c_str
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:786,1
    - Dst: string::length
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:786,1
    - Dst: string::append
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:788,1
    - Dst: string::append
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:791,1
    - Dst: string::append
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:792,1
    - Dst: string::c_str
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:792,1
    - Dst: string::append
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:794,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 2
    argNames:
    - ' elabel'
    - ' root'
    argTypes:
    - string
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 796
      start: 771
    functionDepth: 0
    functionLinenumber: 771
    functionLinenumberEnd: 796
    functionName: simpleCompress
    functionSourceFile: /src/pdns/pdns/recursordist/dnsparser.cc
    functionUses: 1
    functionsReached:
    - string::c_str
    - string::reserve
    - string::size
    - c_str
    - string::append
    - strncasecmp
    - boost::replace_all
    - strchr
    - vstringtok
    - empty
    - string::length
    linkageType: ''
    returnType: string
    signature: string simpleCompress(const string& elabel, const string& root)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:806,1
    - Dst: ntohs
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:807,1
    - Dst: ntohs
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:807,1
    - Dst: ntohs
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:807,1
    - Dst: ntohs
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:811,1
    - Dst: DNSPacketMangler::skipDomainName
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:812,1
    - Dst: DNSPacketMangler::skipBytes
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:814,1
    - Dst: DNSPacketMangler::skipDomainName
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:818,1
    - Dst: ntohs
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:820,1
    - Dst: ntohs
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:820,1
    - Dst: ntohs
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:820,1
    - Dst: DNSPacketMangler::get16BitInt
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:821,1
    - Dst: DNSPacketMangler::get16BitInt
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:822,1
    - Dst: DNSPacketMangler::get32BitInt
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:827,1
    - Dst: visitor
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:828,1
    - Dst: DNSPacketMangler::rewindBytes
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:830,1
    - Dst: DNSPacketMangler::setAndSkip32BitInt
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:831,1
    - Dst: DNSPacketMangler::skipRData
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:833,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 22
    argCount: 3
    argNames:
    - packet
    - length
    - ' visitor'
    argTypes:
    - char*
    - size_t
    - std::function<uint32_t(uint8_t, uint16_t, uint16_t, uint32_t)>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 840
      start: 799
    functionDepth: 1
    functionLinenumber: 799
    functionLinenumberEnd: 840
    functionName: editDNSPacketTTL
    functionSourceFile: /src/pdns/pdns/recursordist/dnsparser.cc
    functionUses: 10
    functionsReached:
    - DNSPacketMangler::skipDomainName
    - memcpy
    - DNSPacketMangler::get32BitInt
    - DNSPacketMangler::skipBytes
    - ntohs
    - visitor
    - DNSPacketMangler::setAndSkip32BitInt
    - DNSPacketMangler::rewindBytes
    - DNSPacketMangler::skipRData
    - DNSPacketMangler::get16BitInt
    linkageType: ''
    returnType: void
    signature: void editDNSPacketTTL(char* packet, size_t length, const std::function<uint32_t(uint8_t,
      uint16_t, uint16_t, uint32_t)>& visitor)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:844,1
    - Dst: data
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:850,1
    - Dst: const_cast<char*>
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:851,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:851,1
    - Dst: data
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:851,1
    - Dst: ntohs
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:853,1
    - Dst: DNSPacketMangler::skipDomainName
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:855,1
    - Dst: DNSPacketMangler::skipBytes
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:857,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:859,1
    - Dst: ntohs
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:859,1
    - Dst: ntohs
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:859,1
    - Dst: ntohs
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:859,1
    - Dst: DNSPacketMangler::skipDomainName
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:861,1
    - Dst: DNSPacketMangler::get16BitInt
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:862,1
    - Dst: DNSPacketMangler::get16BitInt
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:863,1
    - Dst: count
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:864,1
    - Dst: DNSPacketMangler::skipBytes
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:868,1
    - Dst: DNSPacketMangler::skipRData
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:869,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    argCount: 2
    argNames:
    - ' packet'
    - ' qtypes'
    argTypes:
    - PacketBuffer
    - std::unordered_set<QType>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 876
      start: 842
    functionDepth: 0
    functionLinenumber: 842
    functionLinenumberEnd: 876
    functionName: checkIfPacketContainsRecords
    functionSourceFile: /src/pdns/pdns/recursordist/dnsparser.cc
    functionUses: 2
    functionsReached:
    - DNSPacketMangler::skipDomainName
    - static_cast<size_t>
    - const_cast<char*>
    - DNSPacketMangler::skipBytes
    - ntohs
    - count
    - size
    - DNSPacketMangler::skipRData
    - reinterpret_cast<const char*>
    - data
    - DNSPacketMangler::get16BitInt
    linkageType: ''
    returnType: bool
    signature: bool checkIfPacketContainsRecords(const PacketBuffer& packet, const
      std::unordered_set<QType>& qtypes)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:882,1
    - Dst: data
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:886,1
    - Dst: ntohs
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:888,1
    - Dst: std::string_view
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:890,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:890,1
    - Dst: data
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:890,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:890,1
    - Dst: DNSName::DNSName
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:895,1
    - Dst: ntohs
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:896,1
    - Dst: ntohs
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:897,1
    - Dst: ntohs
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:898,1
    - Dst: ntohs
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:899,1
    - Dst: PacketReader::getName
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:905,1
    - Dst: PacketReader::get16BitInt
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:906,1
    - Dst: PacketReader::get16BitInt
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:907,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:910,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:911,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:912,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:913,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:914,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:915,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:916,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:917,1
    - Dst: GenericDNSPacketWriter::getHeader
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:918,1
    - Dst: PacketReader::getName
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:923,1
    - Dst: PacketReader::get16BitInt
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:924,1
    - Dst: PacketReader::get16BitInt
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:925,1
    - Dst: PacketReader::getName
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:933,1
    - Dst: PacketReader::getDnsrecordheader
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:934,1
    - Dst: PacketReader::xfrBlob
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:935,1
    - Dst: find
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:937,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:937,1
    - Dst: find
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:939,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:939,1
    - Dst: clear
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:941,1
    - Dst: GenericDNSPacketWriter::startRecord
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:944,1
    - Dst: GenericDNSPacketWriter::xfrBlob
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:945,1
    - Dst: PacketReader::getName
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:951,1
    - Dst: PacketReader::getDnsrecordheader
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:952,1
    - Dst: PacketReader::xfrBlob
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:953,1
    - Dst: find
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:955,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:955,1
    - Dst: find
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:956,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:956,1
    - Dst: clear
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:958,1
    - Dst: GenericDNSPacketWriter::startRecord
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:961,1
    - Dst: GenericDNSPacketWriter::xfrBlob
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:962,1
    - Dst: PacketReader::getName
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:967,1
    - Dst: PacketReader::getDnsrecordheader
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:968,1
    - Dst: PacketReader::xfrBlob
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:969,1
    - Dst: find
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:971,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:971,1
    - Dst: find
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:972,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:972,1
    - Dst: clear
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:974,1
    - Dst: GenericDNSPacketWriter::startRecord
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:977,1
    - Dst: GenericDNSPacketWriter::xfrBlob
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:978,1
    - Dst: GenericDNSPacketWriter::commit
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:981,1
    - Dst: clear
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:986,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 73
    argCount: 3
    argNames:
    - ' initialPacket'
    - ' newContent'
    - ' qtypes'
    argTypes:
    - PacketBuffer
    - PacketBuffer
    - std::unordered_set<QType>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 990
      start: 878
    functionDepth: 1
    functionLinenumber: 878
    functionLinenumberEnd: 990
    functionName: rewritePacketWithoutRecordTypes
    functionSourceFile: /src/pdns/pdns/recursordist/dnsparser.cc
    functionUses: 2
    functionsReached:
    - PacketReader::getName
    - PacketReader::xfrBlob
    - ntohs
    - GenericDNSPacketWriter::startRecord
    - std::string_view
    - GenericDNSPacketWriter::getHeader
    - end
    - size
    - PacketReader::get16BitInt
    - GenericDNSPacketWriter::commit
    - reinterpret_cast<const char*>
    - PacketReader::getDnsrecordheader
    - GenericDNSPacketWriter::xfrBlob
    - clear
    - data
    - DNSName::DNSName
    - find
    linkageType: ''
    returnType: int
    signature: int rewritePacketWithoutRecordTypes(const PacketBuffer& initialPacket,
      PacketBuffer& newContent, const std::unordered_set<QType>& qtypes)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: clearDNSPacketRecordTypes
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:994,1
    - Dst: reinterpret_cast<PacketBuffer&>
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:994,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' packet'
    - ' qtypes'
    argTypes:
    - vector<uint8_t>
    - std::unordered_set<QType>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 995
      start: 992
    functionDepth: 0
    functionLinenumber: 992
    functionLinenumberEnd: 995
    functionName: clearDNSPacketRecordTypes
    functionSourceFile: /src/pdns/pdns/recursordist/dnsparser.cc
    functionUses: 10
    functionsReached:
    - clearDNSPacketRecordTypes
    - reinterpret_cast<PacketBuffer&>
    linkageType: ''
    returnType: void
    signature: void clearDNSPacketRecordTypes(vector<uint8_t>& packet, const std::unordered_set<QType>&
      qtypes)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: checkIfPacketContainsRecords
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:999,1
    - Dst: rewritePacketWithoutRecordTypes
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:1005,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:1007,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - ' packet'
    - ' qtypes'
    argTypes:
    - PacketBuffer
    - std::unordered_set<QType>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1009
      start: 997
    functionDepth: 0
    functionLinenumber: 997
    functionLinenumberEnd: 1009
    functionName: clearDNSPacketRecordTypes
    functionSourceFile: /src/pdns/pdns/recursordist/dnsparser.cc
    functionUses: 10
    functionsReached:
    - checkIfPacketContainsRecords
    - rewritePacketWithoutRecordTypes
    - std::move
    linkageType: ''
    returnType: void
    signature: void clearDNSPacketRecordTypes(PacketBuffer& packet, const std::unordered_set<QType>&
      qtypes)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: get
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:1018,1
    - Dst: ntohs
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:1019,1
    - Dst: ntohs
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:1020,1
    - Dst: ntohs
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:1020,1
    - Dst: ntohs
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:1020,1
    - Dst: DNSPacketMangler::skipDomainName
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:1024,1
    - Dst: DNSPacketMangler::skipBytes
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:1026,1
    - Dst: DNSPacketMangler::skipDomainName
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:1030,1
    - Dst: DNSPacketMangler::get16BitInt
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:1032,1
    - Dst: DNSPacketMangler::skipBytes
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:1034,1
    - Dst: DNSPacketMangler::decreaseAndSkip32BitInt
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:1037,1
    - Dst: DNSPacketMangler::skipBytes
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:1039,1
    - Dst: DNSPacketMangler::skipRData
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:1041,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 21
    argCount: 4
    argNames:
    - packet
    - length
    - seconds
    - ' aligned_dh'
    argTypes:
    - char*
    - size_t
    - uint32_t
    - dnsheader_aligned
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1046
      start: 1012
    functionDepth: 0
    functionLinenumber: 1012
    functionLinenumberEnd: 1046
    functionName: ageDNSPacket
    functionSourceFile: /src/pdns/pdns/recursordist/dnsparser.cc
    functionUses: 6
    functionsReached:
    - DNSPacketMangler::skipDomainName
    - DNSPacketMangler::skipBytes
    - ntohs
    - DNSPacketMangler::decreaseAndSkip32BitInt
    - get
    - DNSPacketMangler::skipRData
    - DNSPacketMangler::get16BitInt
    linkageType: ''
    returnType: void
    signature: void ageDNSPacket(char* packet, size_t length, uint32_t seconds, const
      dnsheader_aligned& aligned_dh)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ageDNSPacket
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:1050,1
    - Dst: data
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:1050,1
    - Dst: length
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:1050,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' packet'
    - seconds
    - ' aligned_dh'
    argTypes:
    - std::string
    - uint32_t
    - dnsheader_aligned
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1051
      start: 1048
    functionDepth: 0
    functionLinenumber: 1048
    functionLinenumberEnd: 1051
    functionName: ageDNSPacket
    functionSourceFile: /src/pdns/pdns/recursordist/dnsparser.cc
    functionUses: 7
    functionsReached:
    - ageDNSPacket
    - length
    - data
    linkageType: ''
    returnType: void
    signature: void ageDNSPacket(std::string& packet, uint32_t seconds, const dnsheader_aligned&
      aligned_dh)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: get
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:1059,1
    - Dst: ntohs
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:1060,1
    - Dst: ntohs
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:1068,1
    - Dst: DNSPacketMangler::skipDomainName
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:1071,1
    - Dst: DNSPacketMangler::skipBytes
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:1073,1
    - Dst: std::vector::reserve
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:1080,1
    - Dst: DNSPacketMangler::getOffset
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:1083,1
    - Dst: DNSPacketMangler::skipDomainName
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:1084,1
    - Dst: DNSPacketMangler::get16BitInt
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:1085,1
    - Dst: std::vector::empty
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:1087,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:1089,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:1094,1
    - Dst: DNSPacketMangler::skipBytes
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:1099,1
    - Dst: DNSPacketMangler::skipBytes
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:1102,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:1103,1
    - Dst: DNSPacketMangler::skipRDataAndReturnOffsets
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:1103,1
    - Dst: std::vector::empty
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:1105,1
    - Dst: DNSPacketMangler::skipBytes
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:1109,1
    - Dst: DNSPacketMangler::skipBytes
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:1112,1
    - Dst: DNSPacketMangler::skipRData
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:1113,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:1117,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:1122,1
    - Dst: dist
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:1123,1
    - Dst: uid::param_type
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:1123,1
    - Dst: DNSPacketMangler::swapInPlace
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:1125,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:1125,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:1125,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 48
    argCount: 3
    argNames:
    - packet
    - length
    - ' aligned_dh'
    argTypes:
    - char*
    - size_t
    - dnsheader_aligned
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1132
      start: 1053
    functionDepth: 0
    functionLinenumber: 1053
    functionLinenumberEnd: 1132
    functionName: shuffleDNSPacket
    functionSourceFile: /src/pdns/pdns/recursordist/dnsparser.cc
    functionUses: 1
    functionsReached:
    - DNSPacketMangler::skipDomainName
    - std::vector::push_back
    - DNSPacketMangler::skipRDataAndReturnOffsets
    - std::vector::size
    - DNSPacketMangler::skipBytes
    - ntohs
    - DNSPacketMangler::swapInPlace
    - DNSName
    - get
    - std::vector::reserve
    - DNSPacketMangler::skipRData
    - uid::param_type
    - std::vector::at
    - DNSPacketMangler::get16BitInt
    - DNSPacketMangler::getOffset
    - dist
    - std::vector::empty
    linkageType: ''
    returnType: void
    signature: void shuffleDNSPacket(char* packet, size_t length, const dnsheader_aligned&
      aligned_dh)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: pdns::max
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:1136,1
    - Dst: ntohs
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:1145,1
    - Dst: DNSPacketMangler::skipDomainName
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:1147,1
    - Dst: DNSPacketMangler::skipBytes
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:1149,1
    - Dst: ntohs
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:1151,1
    - Dst: ntohs
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:1151,1
    - Dst: ntohs
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:1151,1
    - Dst: DNSPacketMangler::skipDomainName
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:1153,1
    - Dst: DNSPacketMangler::get16BitInt
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:1154,1
    - Dst: DNSPacketMangler::get16BitInt
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:1156,1
    - Dst: ntohs
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:1163,1
    - Dst: ntohs
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:1163,1
    - Dst: ntohs
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:1163,1
    - Dst: DNSPacketMangler::get32BitInt
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:1167,1
    - Dst: std::min
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:1168,1
    - Dst: DNSPacketMangler::skipRData
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:1170,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 23
    argCount: 3
    argNames:
    - packet
    - length
    - seenAuthSOA
    argTypes:
    - char*
    - size_t
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1177
      start: 1134
    functionDepth: 0
    functionLinenumber: 1134
    functionLinenumberEnd: 1177
    functionName: getDNSPacketMinTTL
    functionSourceFile: /src/pdns/pdns/recursordist/dnsparser.cc
    functionUses: 4
    functionsReached:
    - DNSPacketMangler::skipDomainName
    - pdns::max
    - DNSPacketMangler::get32BitInt
    - DNSPacketMangler::skipBytes
    - ntohs
    - std::min
    - DNSPacketMangler::skipRData
    - DNSPacketMangler::get16BitInt
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t getDNSPacketMinTTL(const char* packet, size_t length, bool*
      seenAuthSOA)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ntohs
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:1190,1
    - Dst: DNSPacketMangler::skipDomainName
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:1192,1
    - Dst: DNSPacketMangler::skipBytes
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:1194,1
    - Dst: ntohs
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:1196,1
    - Dst: ntohs
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:1196,1
    - Dst: ntohs
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:1196,1
    - Dst: DNSPacketMangler::skipDomainName
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:1198,1
    - Dst: DNSPacketMangler::skipBytes
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:1200,1
    - Dst: DNSPacketMangler::skipRData
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:1201,1
    - Dst: DNSPacketMangler::getOffset
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:1203,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 2
    argNames:
    - packet
    - length
    argTypes:
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1209
      start: 1179
    functionDepth: 0
    functionLinenumber: 1179
    functionLinenumberEnd: 1209
    functionName: getDNSPacketLength
    functionSourceFile: /src/pdns/pdns/recursordist/dnsparser.cc
    functionUses: 7
    functionsReached:
    - DNSPacketMangler::skipDomainName
    - DNSPacketMangler::skipBytes
    - ntohs
    - DNSPacketMangler::skipRData
    - DNSPacketMangler::getOffset
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t getDNSPacketLength(const char* packet, size_t length)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: ntohs
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:1222,1
    - Dst: DNSPacketMangler::skipDomainName
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:1224,1
    - Dst: DNSPacketMangler::get16BitInt
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:1226,1
    - Dst: DNSPacketMangler::skipBytes
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:1231,1
    - Dst: DNSPacketMangler::skipBytes
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:1234,1
    - Dst: ntohs
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:1237,1
    - Dst: DNSPacketMangler::skipDomainName
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:1239,1
    - Dst: DNSPacketMangler::get16BitInt
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:1241,1
    - Dst: DNSPacketMangler::skipBytes
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:1246,1
    - Dst: DNSPacketMangler::skipBytes
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:1249,1
    - Dst: DNSPacketMangler::skipBytes
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:1252,1
    - Dst: DNSPacketMangler::skipRData
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:1253,1
    - Dst: ntohs
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:1255,1
    - Dst: DNSPacketMangler::skipDomainName
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:1257,1
    - Dst: DNSPacketMangler::get16BitInt
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:1259,1
    - Dst: DNSPacketMangler::skipBytes
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:1264,1
    - Dst: DNSPacketMangler::skipBytes
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:1267,1
    - Dst: DNSPacketMangler::skipBytes
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:1270,1
    - Dst: DNSPacketMangler::skipRData
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:1271,1
    - Dst: ntohs
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:1273,1
    - Dst: DNSPacketMangler::skipDomainName
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:1275,1
    - Dst: DNSPacketMangler::get16BitInt
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:1277,1
    - Dst: DNSPacketMangler::skipBytes
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:1282,1
    - Dst: DNSPacketMangler::skipBytes
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:1285,1
    - Dst: DNSPacketMangler::skipBytes
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:1288,1
    - Dst: DNSPacketMangler::skipRData
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:1289,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 58
    argCount: 4
    argNames:
    - packet
    - length
    - section
    - type
    argTypes:
    - char*
    - size_t
    - uint8_t
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1296
      start: 1211
    functionDepth: 0
    functionLinenumber: 1211
    functionLinenumberEnd: 1296
    functionName: getRecordsOfTypeCount
    functionSourceFile: /src/pdns/pdns/recursordist/dnsparser.cc
    functionUses: 7
    functionsReached:
    - DNSPacketMangler::skipDomainName
    - DNSPacketMangler::skipBytes
    - ntohs
    - DNSPacketMangler::skipRData
    - DNSPacketMangler::get16BitInt
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t getRecordsOfTypeCount(const char* packet, size_t length, uint8_t
      section, uint16_t type)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ntohs
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:1317,1
    - Dst: DNSPacketMangler::skipDomainName
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:1319,1
    - Dst: DNSPacketMangler::skipBytes
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:1321,1
    - Dst: ntohs
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:1323,1
    - Dst: ntohs
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:1323,1
    - Dst: ntohs
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:1323,1
    - Dst: DNSPacketMangler::skipDomainName
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:1325,1
    - Dst: DNSPacketMangler::get16BitInt
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:1326,1
    - Dst: DNSPacketMangler::get16BitInt
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:1329,1
    - Dst: DNSPacketMangler::skipBytes
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:1331,1
    - Dst: DNSPacketMangler::get16BitInt
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:1332,1
    - Dst: DNSPacketMangler::skipBytes
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:1337,1
    - Dst: DNSPacketMangler::skipBytes
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:1339,1
    - Dst: DNSPacketMangler::skipRData
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:1340,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 29
    argCount: 4
    argNames:
    - packet
    - length
    - payloadSize
    - z
    argTypes:
    - char*
    - size_t
    - uint16_t*
    - uint16_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1348
      start: 1298
    functionDepth: 0
    functionLinenumber: 1298
    functionLinenumberEnd: 1348
    functionName: getEDNSUDPPayloadSizeAndZ
    functionSourceFile: /src/pdns/pdns/recursordist/dnsparser.cc
    functionUses: 7
    functionsReached:
    - DNSPacketMangler::skipDomainName
    - DNSPacketMangler::skipBytes
    - ntohs
    - DNSPacketMangler::skipRData
    - DNSPacketMangler::get16BitInt
    linkageType: ''
    returnType: bool
    signature: bool getEDNSUDPPayloadSizeAndZ(const char* packet, size_t length, uint16_t*
      payloadSize, uint16_t* z)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:1352,1
    - Dst: data
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:1358,1
    - Dst: ntohs
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:1359,1
    - Dst: ntohs
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:1359,1
    - Dst: ntohs
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:1359,1
    - Dst: ntohs
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:1363,1
    - Dst: PacketReader::getName
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:1364,1
    - Dst: PacketReader::skip
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:1366,1
    - Dst: PacketReader::getName
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:1370,1
    - Dst: ntohs
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:1372,1
    - Dst: ntohs
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:1372,1
    - Dst: ntohs
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:1372,1
    - Dst: PacketReader::get16BitInt
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:1373,1
    - Dst: PacketReader::get16BitInt
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:1374,1
    - Dst: PacketReader::get32BitInt
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:1381,1
    - Dst: PacketReader::get16BitInt
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:1382,1
    - Dst: PacketReader::getPosition
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:1383,1
    - Dst: PacketReader::skip
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:1384,1
    - Dst: visitor
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:1386,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/dnsparser.cc:1386,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 23
    argCount: 2
    argNames:
    - ' packet'
    - ' visitor'
    argTypes:
    - std::string_view
    - std::function<bool(uint8_t, uint16_t, uint16_t, uint32_t, uint16_t, const char*)>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1397
      start: 1350
    functionDepth: 1
    functionLinenumber: 1350
    functionLinenumberEnd: 1397
    functionName: visitDNSPacket
    functionSourceFile: /src/pdns/pdns/recursordist/dnsparser.cc
    functionUses: 2
    functionsReached:
    - PacketReader::getName
    - ntohs
    - PacketReader::skip
    - visitor
    - size
    - PacketReader::get16BitInt
    - PacketReader::get32BitInt
    - data
    - PacketReader::getPosition
    - at
    linkageType: ''
    returnType: bool
    signature: bool visitDNSPacket(const std::string_view& packet, const std::function<bool(uint8_t,
      uint16_t, uint16_t, uint32_t, uint16_t, const char*)>& visitor)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/rec-xfrtracker.cc:31,1
    - Dst: auto::equal_range
      Src: /src/pdns/pdns/recursordist/rec-xfrtracker.cc:32,1
    - Dst: second::condVar::notify_one
      Src: /src/pdns/pdns/recursordist/rec-xfrtracker.cc:39,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - ' name'
    argTypes:
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 29
    functionDepth: 0
    functionLinenumber: 29
    functionLinenumberEnd: 43
    functionName: ZoneXFR::notifyZoneTracker
    functionSourceFile: /src/pdns/pdns/recursordist/rec-xfrtracker.cc
    functionUses: 1
    functionsReached:
    - auto::equal_range
    - second::condVar::notify_one
    - lock
    linkageType: ''
    returnType: bool
    signature: bool ZoneXFR::notifyZoneTracker(const DNSName& name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/rec-xfrtracker.cc:47,1
    - Dst: auto::emplace
      Src: /src/pdns/pdns/recursordist/rec-xfrtracker.cc:48,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' zoneName'
    - ' waiter'
    argTypes:
    - DNSName
    - ZoneWaiter
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 45
    functionDepth: 0
    functionLinenumber: 45
    functionLinenumberEnd: 49
    functionName: ZoneXFR::insertZoneTracker
    functionSourceFile: /src/pdns/pdns/recursordist/rec-xfrtracker.cc
    functionUses: 0
    functionsReached:
    - auto::emplace
    - lock
    linkageType: ''
    returnType: void
    signature: void ZoneXFR::insertZoneTracker(const DNSName& zoneName, ZoneWaiter&
      waiter)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/rec-xfrtracker.cc:54,1
    - Dst: auto::equal_range
      Src: /src/pdns/pdns/recursordist/rec-xfrtracker.cc:55,1
    - Dst: dnsdist_ffi_dnsquestion_get_id
      Src: /src/pdns/pdns/recursordist/rec-xfrtracker.cc:57,1
    - Dst: auto::erase
      Src: /src/pdns/pdns/recursordist/rec-xfrtracker.cc:58,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - ' zoneName'
    argTypes:
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 51
    functionDepth: 2
    functionLinenumber: 51
    functionLinenumberEnd: 63
    functionName: ZoneXFR::clearZoneTracker
    functionSourceFile: /src/pdns/pdns/recursordist/rec-xfrtracker.cc
    functionUses: 0
    functionsReached:
    - auto::equal_range
    - auto::erase
    - dnsdist_ffi_dnsquestion_get_id
    - lock
    linkageType: ''
    returnType: void
    signature: void ZoneXFR::clearZoneTracker(const DNSName& zoneName)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 85
    functionDepth: 0
    functionLinenumber: 85
    functionLinenumberEnd: 94
    functionName: MemRecursorCache::resetStaticsForTests
    functionSourceFile: /src/pdns/pdns/recursordist/recursor_cache.cc
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void MemRecursorCache::resetStaticsForTests()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - mapsCount
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 96
    functionDepth: 0
    functionLinenumber: 96
    functionLinenumberEnd: 99
    functionName: MemRecursorCache::MemRecursorCache
    functionSourceFile: /src/pdns/pdns/recursordist/recursor_cache.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void MemRecursorCache::MemRecursorCache(size_t mapsCount)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MemRecursorCache::getEntriesCount
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:105,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 101
    functionDepth: 1
    functionLinenumber: 101
    functionLinenumberEnd: 108
    functionName: MemRecursorCache::size
    functionSourceFile: /src/pdns/pdns/recursordist/recursor_cache.cc
    functionUses: 0
    functionsReached:
    - MemRecursorCache::getEntriesCount
    linkageType: ''
    returnType: size_t
    signature: size_t MemRecursorCache::size() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MemRecursorCache::lock
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:115,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 110
    functionDepth: 1
    functionLinenumber: 110
    functionLinenumberEnd: 120
    functionName: MemRecursorCache::stats
    functionSourceFile: /src/pdns/pdns/recursordist/recursor_cache.cc
    functionUses: 0
    functionsReached:
    - MemRecursorCache::lock
    linkageType: ''
    returnType: pair<uint64_t, uint64_t>
    signature: pair<uint64_t, uint64_t> MemRecursorCache::stats()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MemRecursorCache::lock
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:127,1
    - Dst: auto::d_ecsIndex::size
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:128,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 131
      start: 122
    functionDepth: 1
    functionLinenumber: 122
    functionLinenumberEnd: 131
    functionName: MemRecursorCache::ecsIndexSize
    functionSourceFile: /src/pdns/pdns/recursordist/recursor_cache.cc
    functionUses: 0
    functionsReached:
    - MemRecursorCache::lock
    - auto::d_ecsIndex::size
    linkageType: ''
    returnType: size_t
    signature: size_t MemRecursorCache::ecsIndexSize()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sizeEstimate
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:138,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 142
      start: 133
    functionDepth: 0
    functionLinenumber: 133
    functionLinenumberEnd: 142
    functionName: MemRecursorCache::CacheEntry::authRecsSizeEstimate() const
    functionSourceFile: /src/pdns/pdns/recursordist/recursor_cache.cc
    functionUses: 0
    functionsReached:
    - sizeEstimate
    linkageType: ''
    returnType: size_t
    signature: size_t MemRecursorCache::CacheEntry::authRecsSizeEstimate() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sizeEstimate
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:149,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 153
      start: 144
    functionDepth: 0
    functionLinenumber: 144
    functionLinenumberEnd: 153
    functionName: MemRecursorCache::CacheEntry::sigRecsSizeEstimate() const
    functionSourceFile: /src/pdns/pdns/recursordist/recursor_cache.cc
    functionUses: 0
    functionsReached:
    - sizeEstimate
    linkageType: ''
    returnType: size_t
    signature: size_t MemRecursorCache::CacheEntry::sigRecsSizeEstimate() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sizeEstimate
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:158,1
    - Dst: sizeEstimate
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:159,1
    - Dst: sizeEstimate
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:161,1
    - Dst: authRecsSizeEstimate
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:163,1
    - Dst: sigRecsSizeEstimate
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:164,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 166
      start: 155
    functionDepth: 0
    functionLinenumber: 155
    functionLinenumberEnd: 166
    functionName: MemRecursorCache::CacheEntry::sizeEstimate() const
    functionSourceFile: /src/pdns/pdns/recursordist/recursor_cache.cc
    functionUses: 0
    functionsReached:
    - authRecsSizeEstimate
    - sigRecsSizeEstimate
    - sizeEstimate
    linkageType: ''
    returnType: size_t
    signature: size_t MemRecursorCache::CacheEntry::sizeEstimate() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MemRecursorCache::lock
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:173,1
    - Dst: sizeEstimate
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:175,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 179
      start: 169
    functionDepth: 1
    functionLinenumber: 169
    functionLinenumberEnd: 179
    functionName: MemRecursorCache::bytes
    functionSourceFile: /src/pdns/pdns/recursordist/recursor_cache.cc
    functionUses: 0
    functionsReached:
    - MemRecursorCache::lock
    - sizeEstimate
    linkageType: ''
    returnType: size_t
    signature: size_t MemRecursorCache::bytes()
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: vStateIsBogus
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:195,1
    - Dst: vStateIsBogus
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:199,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 19
    argCount: 2
    argNames:
    - ' state'
    - stateUpdate
    argTypes:
    - std::optional<vState>
    - vState
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 203
      start: 181
    functionDepth: 0
    functionLinenumber: 181
    functionLinenumberEnd: 203
    functionName: updateDNSSECValidationStateFromCache
    functionSourceFile: /src/pdns/pdns/recursordist/recursor_cache.cc
    functionUses: 0
    functionsReached:
    - vStateIsBogus
    linkageType: ''
    returnType: void
    signature: void updateDNSSECValidationStateFromCache(std::optional<vState>& state,
      const vState stateUpdate)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - ptr
    - ' value'
    argTypes:
    - T*
    - T
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 211
      start: 206
    functionDepth: 0
    functionLinenumber: 206
    functionLinenumberEnd: 211
    functionName: ptrAssign
    functionSourceFile: /src/pdns/pdns/recursordist/recursor_cache.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ptrAssign(T* ptr, const T& value)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: ImmediateServFailException
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:219,1
    - Dst: d_netmask::empty
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:229,1
    - Dst: d_rtag::empty
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:229,1
    - Dst: ptrAssign
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:230,1
    - Dst: vector<DNSRecord>*::size
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:234,1
    - Dst: d_records::size
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:234,1
    - Dst: ImmediateServFailException
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:235,1
    - Dst: vector<DNSRecord>*::reserve
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:238,1
    - Dst: vector<DNSRecord>*::size
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:238,1
    - Dst: d_records::size
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:238,1
    - Dst: DNSRecord::DNSRecord
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:241,1
    - Dst: DNSRecord::setContent
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:245,1
    - Dst: static_cast<uint32_t>
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:247,1
    - Dst: vector<DNSRecord>*::push_back
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:249,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:249,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:254,1
    - Dst: d_signatures::empty
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:254,1
    - Dst: SigRecsVec::insert
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:257,1
    - Dst: SigRecsVec::end
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:257,1
    - Dst: d_signatures::cbegin
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:257,1
    - Dst: d_signatures::cend
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:257,1
    - Dst: std::make_shared<SigRecsVec>
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:258,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:258,1
    - Dst: assert
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:267,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:267,1
    - Dst: updateDNSSECValidationStateFromCache
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:271,1
    - Dst: ptrAssign
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:276,1
    - Dst: moveCacheItemToBack
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:282,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 48
    argCount: 13
    argNames:
    - now
    - ' content'
    - ' entry'
    - ' qname'
    - ' origTTL'
    - res
    - signatures
    - authorityRecs
    - variable
    - ' state'
    - wasAuth
    - fromAuthZone
    - extra
    argTypes:
    - time_t
    - MapCombo::LockedContent
    - OrderedTagIterator_t
    - DNSName
    - uint32_t
    - vector<DNSRecord>*
    - SigRecs*
    - AuthRecs*
    - bool*
    - std::optional<vState>
    - bool*
    - DNSName*
    - Extra*
    assertStmts:
    - condition: (*authorityRecs == nullptr || (*authorityRecs)->empty())
      pos:
        line_end: 266
        line_start: 266
        source_file: /src/pdns/pdns/recursordist/recursor_cache.cc
    constantsTouched: []
    func_position:
      end: 285
      start: 215
    functionDepth: 2
    functionLinenumber: 215
    functionLinenumberEnd: 285
    functionName: MemRecursorCache::handleHit
    functionSourceFile: /src/pdns/pdns/recursordist/recursor_cache.cc
    functionUses: 0
    functionsReached:
    - d_records::size
    - DNSRecord::DNSRecord
    - std::make_shared<SigRecsVec>
    - static_cast<uint32_t>
    - DNSRecord::setContent
    - d_signatures::cbegin
    - SigRecsVec::end
    - assert
    - d_netmask::empty
    - d_signatures::cend
    - ptrAssign
    - empty
    - d_signatures::empty
    - vector<DNSRecord>*::size
    - d_rtag::empty
    - moveCacheItemToBack
    - vector<DNSRecord>*::reserve
    - std::move
    - updateDNSSECValidationStateFromCache
    - vector<DNSRecord>*::push_back
    - SigRecsVec::insert
    - ImmediateServFailException
    linkageType: ''
    returnType: time_t
    signature: time_t MemRecursorCache::handleHit(time_t now, MapCombo::LockedContent&
      content, OrderedTagIterator_t& entry, const DNSName& qname, uint32_t& origTTL,
      vector<DNSRecord>* res, SigRecs* signatures, AuthRecs* authorityRecs, bool*
      variable, std::optional<vState>& state, bool* wasAuth, DNSName* fromAuthZone,
      Extra* extra)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pushAlmostExpiredTask
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:290,1
    - Dst: pushAlmostExpiredTask
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:291,1
    - Dst: pushAlmostExpiredTask
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:294,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 4
    argNames:
    - ' qname'
    - qtype
    - deadline
    - ' netmask'
    argTypes:
    - DNSName
    - QType
    - time_t
    - Netmask
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 296
      start: 287
    functionDepth: 1
    functionLinenumber: 287
    functionLinenumberEnd: 296
    functionName: pushRefreshTask
    functionSourceFile: /src/pdns/pdns/recursordist/recursor_cache.cc
    functionUses: 0
    functionsReached:
    - pushAlmostExpiredTask
    linkageType: ''
    returnType: void
    signature: void pushRefreshTask(const DNSName& qname, QType qtype, time_t deadline,
      const Netmask& netmask)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::max
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:303,1
    - Dst: static_cast<time_t>
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:303,1
    - Dst: std::max
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:304,1
    - Dst: std::min
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:304,1
    - Dst: std::min
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:305,1
    - Dst: static_cast<time_t>
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:305,1
    - Dst: pushRefreshTask
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:308,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - now
    - ' entry'
    argTypes:
    - time_t
    - MemRecursorCache::OrderedTagIterator_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 309
      start: 298
    functionDepth: 2
    functionLinenumber: 298
    functionLinenumberEnd: 309
    functionName: MemRecursorCache::updateStaleEntry
    functionSourceFile: /src/pdns/pdns/recursordist/recursor_cache.cc
    functionUses: 0
    functionsReached:
    - std::max
    - std::min
    - static_cast<time_t>
    - pushRefreshTask
    linkageType: ''
    returnType: void
    signature: void MemRecursorCache::updateStaleEntry(time_t now, MemRecursorCache::OrderedTagIterator_t&
      entry)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: MemRecursorCache::updateStaleEntry
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:317,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 4
    argCount: 3
    argNames:
    - now
    - serveStale
    - ' entry'
    argTypes:
    - time_t
    - bool
    - MemRecursorCache::OrderedTagIterator_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 319
      start: 314
    functionDepth: 3
    functionLinenumber: 314
    functionLinenumberEnd: 319
    functionName: MemRecursorCache::handleServeStaleBookkeeping
    functionSourceFile: /src/pdns/pdns/recursordist/recursor_cache.cc
    functionUses: 0
    functionsReached:
    - MemRecursorCache::updateStaleEntry
    linkageType: ''
    returnType: void
    signature: void MemRecursorCache::handleServeStaleBookkeeping(time_t now, bool
      serveStale, MemRecursorCache::OrderedTagIterator_t& entry)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: std::tie
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:324,1
    - Dst: d_ecsIndex::find
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:325,1
    - Dst: d_ecsIndex::end
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:326,1
    - Dst: auto::isEmpty
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:326,1
    - Dst: auto::lookupBestMatch
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:329,1
    - Dst: Netmask::empty
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:330,1
    - Dst: std::tuple
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:334,1
    - Dst: d_map::find
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:335,1
    - Dst: d_map::end
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:336,1
    - Dst: auto::removeNetmask
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:338,1
    - Dst: auto::isEmpty
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:339,1
    - Dst: d_ecsIndex::erase
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:340,1
    - Dst: MemRecursorCache::handleServeStaleBookkeeping
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:345,1
    - Dst: d_map::end
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:352,1
    - Dst: moveCacheItemToFront
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:355,1
    - Dst: auto::removeNetmask
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:357,1
    - Dst: auto::isEmpty
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:358,1
    - Dst: d_ecsIndex::erase
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:359,1
    - Dst: std::tuple
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:366,1
    - Dst: Netmask
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:366,1
    - Dst: d_map::find
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:367,1
    - Dst: d_map::end
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:368,1
    - Dst: MemRecursorCache::handleServeStaleBookkeeping
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:369,1
    - Dst: moveCacheItemToFront
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:376,1
    - Dst: d_map::end
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:381,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 40
    argCount: 7
    argNames:
    - ' map'
    - now
    - ' qname'
    - qtype
    - requireAuth
    - ' who'
    - serveStale
    argTypes:
    - MapCombo::LockedContent
    - time_t
    - DNSName
    - QType
    - bool
    - ComboAddress
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 382
      start: 321
    functionDepth: 4
    functionLinenumber: 321
    functionLinenumberEnd: 382
    functionName: MemRecursorCache::getEntryUsingECSIndex
    functionSourceFile: /src/pdns/pdns/recursordist/recursor_cache.cc
    functionUses: 0
    functionsReached:
    - Netmask
    - MemRecursorCache::handleServeStaleBookkeeping
    - auto::removeNetmask
    - d_ecsIndex::erase
    - d_map::find
    - auto::isEmpty
    - moveCacheItemToFront
    - std::tie
    - std::tuple
    - d_ecsIndex::find
    - d_ecsIndex::end
    - d_map::end
    - Netmask::empty
    - auto::lookupBestMatch
    linkageType: ''
    returnType: MemRecursorCache::cache_t::const_iterator
    signature: MemRecursorCache::cache_t::const_iterator MemRecursorCache::getEntryUsingECSIndex(MapCombo::LockedContent&
      map, time_t now, const DNSName& qname, const QType qtype, bool requireAuth,
      const ComboAddress& who, bool serveStale)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: d_map::get
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:390,1
    - Dst: equal_range
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:391,1
    - Dst: std::tie
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:391,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 3
    argNames:
    - ' map'
    - ' qname'
    - ' rtag'
    argTypes:
    - MapCombo::LockedContent
    - DNSName
    - OptTag
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 395
      start: 384
    functionDepth: 0
    functionLinenumber: 384
    functionLinenumberEnd: 395
    functionName: MemRecursorCache::getEntries
    functionSourceFile: /src/pdns/pdns/recursordist/recursor_cache.cc
    functionUses: 0
    functionsReached:
    - equal_range
    - std::tie
    - d_map::get
    linkageType: ''
    returnType: MemRecursorCache::Entries
    signature: MemRecursorCache::Entries MemRecursorCache::getEntries(MapCombo::LockedContent&
      map, const DNSName& qname, const QType /* qtype */, const OptTag& rtag)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: d_netmask::empty
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:406,1
    - Dst: d_netmask::match
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:406,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 5
    argCount: 4
    argNames:
    - ' entry'
    - qtype
    - requireAuth
    - ' who'
    argTypes:
    - MemRecursorCache::OrderedTagIterator_t
    - QType
    - bool
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 408
      start: 397
    functionDepth: 0
    functionLinenumber: 397
    functionLinenumberEnd: 408
    functionName: MemRecursorCache::entryMatches
    functionSourceFile: /src/pdns/pdns/recursordist/recursor_cache.cc
    functionUses: 0
    functionsReached:
    - d_netmask::match
    - d_netmask::empty
    linkageType: ''
    returnType: bool
    signature: bool MemRecursorCache::entryMatches(MemRecursorCache::OrderedTagIterator_t&
      entry, const QType qtype, bool requireAuth, const ComboAddress& who)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<uint32_t>
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:423,1
    - Dst: pushRefreshTask
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:429,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 16
    argCount: 7
    argNames:
    - ' entry'
    - ' qname'
    - qtype
    - ret
    - now
    - origTTL
    - refresh
    argTypes:
    - MemRecursorCache::OrderedTagIterator_t
    - DNSName
    - QType
    - time_t
    - time_t
    - uint32_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 435
      start: 411
    functionDepth: 2
    functionLinenumber: 411
    functionLinenumberEnd: 435
    functionName: MemRecursorCache::fakeTTD
    functionSourceFile: /src/pdns/pdns/recursordist/recursor_cache.cc
    functionUses: 0
    functionsReached:
    - pushRefreshTask
    - static_cast<uint32_t>
    linkageType: ''
    returnType: time_t
    signature: time_t MemRecursorCache::fakeTTD(MemRecursorCache::OrderedTagIterator_t&
      entry, const DNSName& qname, QType qtype, time_t ret, time_t now, uint32_t origTTL,
      bool refresh)
  - BBCount: 28
    BranchProfiles: []
    Callsites:
    - Dst: vector<DNSRecord>*::clear
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:448,1
    - Dst: ptrAssign
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:453,1
    - Dst: getMap
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:455,1
    - Dst: MemRecursorCache::lock
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:456,1
    - Dst: auto::d_ecsIndex::empty
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:460,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:460,1
    - Dst: MemRecursorCache::getEntryUsingECSIndex
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:464,1
    - Dst: auto::d_map::end
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:465,1
    - Dst: MemRecursorCache::handleHit
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:466,1
    - Dst: MemRecursorCache::getEntryUsingECSIndex
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:468,1
    - Dst: auto::d_map::end
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:469,1
    - Dst: MemRecursorCache::handleHit
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:474,1
    - Dst: std::min
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:476,1
    - Dst: ptrAssign
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:484,1
    - Dst: MemRecursorCache::getEntryUsingECSIndex
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:489,1
    - Dst: auto::d_map::end
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:490,1
    - Dst: MemRecursorCache::handleHit
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:491,1
    - Dst: ptrAssign
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:493,1
    - Dst: MemRecursorCache::fakeTTD
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:495,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:500,1
    - Dst: MemRecursorCache::getEntries
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:501,1
    - Dst: auto::d_map::project
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:508,1
    - Dst: auto::isEntryUsable
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:511,1
    - Dst: moveCacheItemToFront
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:512,1
    - Dst: MemRecursorCache::entryMatches
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:516,1
    - Dst: MemRecursorCache::handleServeStaleBookkeeping
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:521,1
    - Dst: MemRecursorCache::handleHit
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:528,1
    - Dst: ptrAssign
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:539,1
    - Dst: MemRecursorCache::fakeTTD
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:541,1
    - Dst: MemRecursorCache::getEntries
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:547,1
    - Dst: auto::d_map::project
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:555,1
    - Dst: auto::isEntryUsable
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:558,1
    - Dst: moveCacheItemToFront
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:559,1
    - Dst: MemRecursorCache::entryMatches
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:563,1
    - Dst: MemRecursorCache::handleServeStaleBookkeeping
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:568,1
    - Dst: MemRecursorCache::handleHit
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:574,1
    - Dst: ptrAssign
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:585,1
    - Dst: MemRecursorCache::fakeTTD
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:587,1
    CyclomaticComplexity: 45
    EdgeCount: 45
    ICount: 97
    argCount: 14
    argNames:
    - now
    - ' qname'
    - qtype
    - flags
    - res
    - ' who'
    - ' routingTag'
    - signatures
    - authorityRecs
    - variable
    - state
    - wasAuth
    - fromAuthZone
    - extra
    argTypes:
    - time_t
    - DNSName
    - QType
    - Flags
    - vector<DNSRecord>*
    - ComboAddress
    - OptTag
    - SigRecs*
    - AuthRecs*
    - bool*
    - vState*
    - bool*
    - DNSName*
    - Extra*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 591
      start: 438
    functionDepth: 5
    functionLinenumber: 438
    functionLinenumberEnd: 591
    functionName: MemRecursorCache::get
    functionSourceFile: /src/pdns/pdns/recursordist/recursor_cache.cc
    functionUses: 0
    functionsReached:
    - MemRecursorCache::fakeTTD
    - MemRecursorCache::getEntries
    - MemRecursorCache::handleServeStaleBookkeeping
    - auto::d_ecsIndex::empty
    - MemRecursorCache::getEntryUsingECSIndex
    - auto::isEntryUsable
    - std::min
    - getMap
    - auto::d_map::project
    - MemRecursorCache::entryMatches
    - MemRecursorCache::lock
    - auto::d_map::end
    - moveCacheItemToFront
    - ptrAssign
    - empty
    - vector<DNSRecord>*::clear
    - MemRecursorCache::handleHit
    linkageType: ''
    returnType: time_t
    signature: time_t MemRecursorCache::get(time_t now, const DNSName& qname, const
      QType qtype, Flags flags, vector<DNSRecord>* res, const ComboAddress& who, const
      OptTag& routingTag, SigRecs* signatures, AuthRecs* authorityRecs, bool* variable,
      vState* state, bool* wasAuth, DNSName* fromAuthZone, Extra* extra)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: vStateIsBogus
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:607,1
    - Dst: vStateIsBogus
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:607,1
    - Dst: static_cast<uint32_t>
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:627,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 24
    argCount: 4
    argNames:
    - now
    - auth
    - state
    - refresh
    argTypes:
    - time_t
    - bool
    - vState
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 634
      start: 593
    functionDepth: 0
    functionLinenumber: 593
    functionLinenumberEnd: 634
    functionName: MemRecursorCache::CacheEntry::shouldReplace(time_t now, bool auth,
      vState state, bool refresh)
    functionSourceFile: /src/pdns/pdns/recursordist/recursor_cache.cc
    functionUses: 0
    functionsReached:
    - vStateIsBogus
    - static_cast<uint32_t>
    linkageType: ''
    returnType: bool
    signature: bool MemRecursorCache::CacheEntry::shouldReplace(time_t now, bool auth,
      vState state, bool refresh)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: d_netmask::empty
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:638,1
    - Dst: d_rtag::empty
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:638,1
    - Dst: getMap
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:642,1
    - Dst: MemRecursorCache::lock
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:643,1
    - Dst: auto::d_map::emplace
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:647,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:647,1
    - Dst: MemRecursorCache::incEntriesCount
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:648,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 1
    argNames:
    - ' entry'
    argTypes:
    - CacheEntry
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 652
      start: 636
    functionDepth: 1
    functionLinenumber: 636
    functionLinenumberEnd: 652
    functionName: MemRecursorCache::replace
    functionSourceFile: /src/pdns/pdns/recursordist/recursor_cache.cc
    functionUses: 0
    functionsReached:
    - std::move
    - d_rtag::empty
    - getMap
    - MemRecursorCache::incEntriesCount
    - d_netmask::empty
    - MemRecursorCache::lock
    - auto::d_map::emplace
    linkageType: ''
    returnType: bool
    signature: bool MemRecursorCache::replace(CacheEntry&& entry)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: getMap
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:656,1
    - Dst: MemRecursorCache::lock
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:657,1
    - Dst: getNormalized
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:663,1
    - Dst: std::tuple
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:668,1
    - Dst: QType::getCode
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:668,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:668,1
    - Dst: Netmask
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:668,1
    - Dst: auto::d_map::find
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:670,1
    - Dst: auto::d_map::end
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:671,1
    - Dst: auto::d_map::insert
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:672,1
    - Dst: MemRecursorCache::CacheEntry
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:672,1
    - Dst: MemRecursorCache::incEntriesCount
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:673,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:684,1
    - Dst: std::optional::empty
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:684,1
    - Dst: std::tuple
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:685,1
    - Dst: QType::getCode
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:685,1
    - Dst: auto::d_ecsIndex::find
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:686,1
    - Dst: auto::d_ecsIndex::end
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:687,1
    - Dst: auto::d_ecsIndex::insert
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:688,1
    - Dst: ECSIndexEntry
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:688,1
    - Dst: QType::getCode
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:688,1
    - Dst: auto::addMask
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:690,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:694,1
    - Dst: QType::getCode
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:696,1
    - Dst: CacheEntry::shouldReplace
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:698,1
    - Dst: isRoot
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:708,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:716,1
    - Dst: std::make_shared<const SigRecsVec>
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:717,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:722,1
    - Dst: std::make_shared<const AuthRecsVec>
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:723,1
    - Dst: CacheEntry::d_records::clear
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:728,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:735,1
    - Dst: MemRecursorCache::size
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:739,1
    - Dst: CacheEntry::d_records::reserve
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:747,1
    - Dst: min
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:751,1
    - Dst: static_cast<time_t>
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:751,1
    - Dst: CacheEntry::d_records::push_back
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:761,1
    - Dst: getContent
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:761,1
    - Dst: CacheEntry::sizeEstimate
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:767,1
    - Dst: moveCacheItemToBack
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:772,1
    - Dst: auto::d_map::replace
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:776,1
    CyclomaticComplexity: 29
    EdgeCount: 29
    ICount: 74
    argCount: 14
    argNames:
    - now
    - ' qname'
    - qtype
    - ' content'
    - ' signatures'
    - ' authorityRecs'
    - auth
    - ' authZone'
    - ' ednsmaskArg'
    - ' routingTag'
    - state
    - ' extra'
    - refresh
    - ttl_time
    argTypes:
    - time_t
    - DNSName
    - QType
    - vector<DNSRecord>
    - SigRecsVec
    - AuthRecsVec
    - bool
    - DNSName
    - std::optional<Netmask>
    - OptTag
    - vState
    - std::optional<Extra>
    - bool
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 777
      start: 654
    functionDepth: 2
    functionLinenumber: 654
    functionLinenumberEnd: 777
    functionName: MemRecursorCache::replace
    functionSourceFile: /src/pdns/pdns/recursordist/recursor_cache.cc
    functionUses: 0
    functionsReached:
    - isRoot
    - static_cast<time_t>
    - auto::d_map::replace
    - auto::d_ecsIndex::insert
    - getNormalized
    - auto::addMask
    - std::optional::empty
    - CacheEntry::d_records::reserve
    - MemRecursorCache::lock
    - std::make_shared<const SigRecsVec>
    - empty
    - ECSIndexEntry
    - CacheEntry::d_records::push_back
    - min
    - Netmask
    - pdns::max
    - CacheEntry::d_records::clear
    - getMap
    - moveCacheItemToBack
    - auto::d_map::end
    - auto::d_ecsIndex::find
    - MemRecursorCache::size
    - CacheEntry::sizeEstimate
    - std::tuple
    - std::make_shared<const AuthRecsVec>
    - ComboAddress
    - MemRecursorCache::CacheEntry
    - auto::d_map::insert
    - auto::d_map::find
    - getContent
    - MemRecursorCache::incEntriesCount
    - auto::d_ecsIndex::end
    - CacheEntry::shouldReplace
    - QType::getCode
    linkageType: ''
    returnType: void
    signature: void MemRecursorCache::replace(time_t now, const DNSName& qname, const
      QType qtype, const vector<DNSRecord>& content, const SigRecsVec& signatures,
      const AuthRecsVec& authorityRecs, bool auth, const DNSName& authZone, const
      std::optional<Netmask>& ednsmaskArg, const OptTag& routingTag, vState state,
      const std::optional<Extra>& extra, bool refresh, time_t ttl_time)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: getMap
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:784,1
    - Dst: MemRecursorCache::lock
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:785,1
    - Dst: auto::d_map::get
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:787,1
    - Dst: equal_range
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:788,1
    - Dst: erase
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:792,1
    - Dst: MemRecursorCache::decEntriesCount
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:794,1
    - Dst: auto::d_ecsIndex::get
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:802,1
    - Dst: equal_range
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:803,1
    - Dst: erase
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:804,1
    - Dst: auto::d_ecsIndex::get
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:807,1
    - Dst: equal_range
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:808,1
    - Dst: std::tie
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:808,1
    - Dst: erase
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:809,1
    - Dst: MemRecursorCache::lock
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:814,1
    - Dst: auto::d_map::get
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:816,1
    - Dst: lower_bound
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:817,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:817,1
    - Dst: auto::d_qname::isPartOf
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:818,1
    - Dst: erase
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:823,1
    - Dst: MemRecursorCache::decEntriesCount
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:824,1
    - Dst: auto::d_ecsIndex::get
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:830,1
    - Dst: lower_bound
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:831,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:831,1
    - Dst: auto::d_qname::isPartOf
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:832,1
    - Dst: erase
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:836,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 44
    argCount: 3
    argNames:
    - ' name'
    - sub
    - qtype
    argTypes:
    - DNSName
    - bool
    - QType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 845
      start: 779
    functionDepth: 1
    functionLinenumber: 779
    functionLinenumberEnd: 845
    functionName: MemRecursorCache::doWipeCache
    functionSourceFile: /src/pdns/pdns/recursordist/recursor_cache.cc
    functionUses: 0
    functionsReached:
    - lower_bound
    - auto::d_ecsIndex::get
    - equal_range
    - auto::d_qname::isPartOf
    - end
    - getMap
    - MemRecursorCache::lock
    - auto::d_map::get
    - std::tie
    - MemRecursorCache::decEntriesCount
    - erase
    linkageType: ''
    returnType: size_t
    signature: size_t MemRecursorCache::doWipeCache(const DNSName& name, bool sub,
      const QType qtype)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: getMap
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:850,1
    - Dst: MemRecursorCache::lock
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:851,1
    - Dst: auto::d_map::find
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:852,1
    - Dst: std::tie
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:852,1
    - Dst: auto::d_map::end
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:853,1
    - Dst: static_cast<uint32_t>
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:863,1
    - Dst: auto::d_map::replace
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:871,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 4
    argNames:
    - now
    - ' name'
    - qtype
    - newTTL
    argTypes:
    - time_t
    - DNSName
    - QType
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 876
      start: 848
    functionDepth: 1
    functionLinenumber: 848
    functionLinenumberEnd: 876
    functionName: MemRecursorCache::doAgeCache
    functionSourceFile: /src/pdns/pdns/recursordist/recursor_cache.cc
    functionUses: 0
    functionsReached:
    - auto::d_map::find
    - getMap
    - static_cast<uint32_t>
    - MemRecursorCache::lock
    - auto::d_map::end
    - std::tie
    - auto::d_map::replace
    linkageType: ''
    returnType: bool
    signature: bool MemRecursorCache::doAgeCache(time_t now, const DNSName& name,
      const QType qtype, uint32_t newTTL)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:881,1
    - Dst: toLogString
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:881,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:884,1
    - Dst: toLogString
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:884,1
    - Dst: getMap
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:887,1
    - Dst: MemRecursorCache::lock
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:888,1
    - Dst: auto::d_ecsIndex::empty
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:891,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:891,1
    - Dst: MemRecursorCache::getEntryUsingECSIndex
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:892,1
    - Dst: auto::d_map::end
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:893,1
    - Dst: std::min
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:899,1
    - Dst: MemRecursorCache::getEntries
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:904,1
    - Dst: auto::d_map::project
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:907,1
    - Dst: MemRecursorCache::entryMatches
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:909,1
    - Dst: std::min
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:915,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 29
    argCount: 8
    argNames:
    - now
    - ' qname'
    - qtype
    - ' who'
    - ' routingTag'
    - requireAuth
    - newState
    - capTTD
    argTypes:
    - time_t
    - DNSName
    - QType
    - ComboAddress
    - OptTag
    - bool
    - vState
    - std::optional<time_t>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 923
      start: 878
    functionDepth: 5
    functionLinenumber: 878
    functionLinenumberEnd: 923
    functionName: MemRecursorCache::updateValidationStatus
    functionSourceFile: /src/pdns/pdns/recursordist/recursor_cache.cc
    functionUses: 0
    functionsReached:
    - MemRecursorCache::getEntries
    - toLogString
    - auto::d_ecsIndex::empty
    - MemRecursorCache::getEntryUsingECSIndex
    - std::runtime_error
    - std::min
    - getMap
    - auto::d_map::project
    - MemRecursorCache::entryMatches
    - MemRecursorCache::lock
    - auto::d_map::end
    - empty
    linkageType: ''
    returnType: bool
    signature: bool MemRecursorCache::updateValidationStatus(time_t now, const DNSName&
      qname, const QType qtype, const ComboAddress& who, const OptTag& routingTag,
      bool requireAuth, vState newState, std::optional<time_t> capTTD)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: dup
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:927,1
    - Dst: pdns::UniqueFilePtr
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:931,1
    - Dst: fdopen
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:931,1
    - Dst: close
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:933,1
    - Dst: fprintf
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:937,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:937,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:940,1
    - Dst: MemRecursorCache::lock
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:943,1
    - Dst: auto::d_map::size
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:944,1
    - Dst: sizeEstimate
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:947,1
    - Dst: fprintf
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:949,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:949,1
    - Dst: std::min
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:950,1
    - Dst: std::max
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:951,1
    - Dst: auto::d_map::get
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:953,1
    - Dst: time
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:954,1
    - Dst: fprintf
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:959,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:959,1
    - Dst: d_qname::toString
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:959,1
    - Dst: static_cast<int64_t>
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:959,1
    - Dst: d_qtype::toString
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:959,1
    - Dst: getZoneRepresentation
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:959,1
    - Dst: vStateToString
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:959,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:959,1
    - Dst: d_authZone::toLogString
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:959,1
    - Dst: d_from::toString
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:959,1
    - Dst: d_netmask::empty
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:959,1
    - Dst: d_netmask::toString
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:959,1
    - Dst: d_rtag::c_str
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:959,1
    - Dst: fprintf
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:962,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:962,1
    - Dst: d_qname::empty
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:962,1
    - Dst: d_qname::toString
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:962,1
    - Dst: fprintf
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:969,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:969,1
    - Dst: d_qname::toString
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:969,1
    - Dst: static_cast<int64_t>
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:969,1
    - Dst: getZoneRepresentation
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:969,1
    - Dst: d_netmask::empty
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:969,1
    - Dst: d_netmask::toString
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:969,1
    - Dst: fprintf
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:972,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:972,1
    - Dst: d_qname::empty
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:972,1
    - Dst: d_qname::toString
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:972,1
    - Dst: fprintf
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:978,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:978,1
    - Dst: MemRecursorCache::size
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:978,1
    - Dst: MemRecursorCache::size
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:978,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 35
    argCount: 2
    argNames:
    - fileDesc
    - maxCacheEntries
    argTypes:
    - int
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 980
      start: 925
    functionDepth: 1
    functionLinenumber: 925
    functionLinenumberEnd: 980
    functionName: MemRecursorCache::doDump
    functionSourceFile: /src/pdns/pdns/recursordist/recursor_cache.cc
    functionUses: 0
    functionsReached:
    - getZoneRepresentation
    - fprintf
    - d_qtype::toString
    - d_qname::toString
    - d_rtag::c_str
    - pdns::UniqueFilePtr
    - d_authZone::toLogString
    - static_cast<int>
    - time
    - auto::d_map::size
    - d_netmask::empty
    - MemRecursorCache::lock
    - d_qname::empty
    - std::max
    - pdns::max
    - auto::get
    - sizeEstimate
    - dup
    - MemRecursorCache::size
    - fdopen
    - d_from::toString
    - std::min
    - static_cast<int64_t>
    - auto::d_map::get
    - d_netmask::toString
    - vStateToString
    - close
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t MemRecursorCache::doDump(int fileDesc, size_t maxCacheEntries)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MemRecursorCache::size
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:984,1
    - Dst: pruneMutexCollectionsVector
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:985,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - now
    - keep
    argTypes:
    - time_t
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 986
      start: 982
    functionDepth: 0
    functionLinenumber: 982
    functionLinenumberEnd: 986
    functionName: MemRecursorCache::doPrune
    functionSourceFile: /src/pdns/pdns/recursordist/recursor_cache.cc
    functionUses: 0
    functionsReached:
    - MemRecursorCache::size
    - pruneMutexCollectionsVector
    linkageType: ''
    returnType: void
    signature: void MemRecursorCache::doPrune(time_t now, size_t keep)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: add_bytes
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:1034,1
    - Dst: U::d_qname::toString
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:1034,1
    - Dst: add_uint32
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:1035,1
    - Dst: add_bytes
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:1037,1
    - Dst: serialize
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:1037,1
    - Dst: add_bytes
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:1041,1
    - Dst: serialize
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:1041,1
    - Dst: protozero::pbf_builder::add_bytes
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:1047,1
    - Dst: d_name::toString
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:1047,1
    - Dst: protozero::pbf_builder::add_uint32
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:1048,1
    - Dst: protozero::pbf_builder::add_uint32
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:1049,1
    - Dst: protozero::pbf_builder::add_uint32
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:1050,1
    - Dst: protozero::pbf_builder::add_uint32
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:1051,1
    - Dst: protozero::pbf_builder::add_uint32
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:1052,1
    - Dst: protozero::pbf_builder::add_bytes
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:1054,1
    - Dst: getContent
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:1054,1
    - Dst: add_bytes
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:1057,1
    - Dst: U::d_authZone::toString
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:1057,1
    - Dst: encodeComboAddress
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:1058,1
    - Dst: encodeNetmask
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:1059,1
    - Dst: U::d_rtag::empty
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:1060,1
    - Dst: add_bytes
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:1061,1
    - Dst: add_uint32
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:1063,1
    - Dst: static_cast<uint32_t>
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:1063,1
    - Dst: add_int64
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:1064,1
    - Dst: add_uint32
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:1065,1
    - Dst: add_uint32
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:1066,1
    - Dst: add_bool
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:1067,1
    - Dst: add_bool
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:1068,1
    - Dst: add_bool
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:1069,1
    - Dst: add_bool
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:1070,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 33
    argCount: 2
    argNames:
    - ' message'
    - recordSet
    argTypes:
    - T
    - U
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1071
      start: 1031
    functionDepth: 1
    functionLinenumber: 1031
    functionLinenumberEnd: 1071
    functionName: MemRecursorCache::getRecordSet
    functionSourceFile: /src/pdns/pdns/recursordist/recursor_cache.cc
    functionUses: 0
    functionsReached:
    - encodeComboAddress
    - d_name::toString
    - encodeNetmask
    - serialize
    - U::d_rtag::empty
    - getContent
    - add_uint32
    - protozero::pbf_builder::add_uint32
    - add_bytes
    - protozero::pbf_builder::add_bytes
    - U::d_qname::toString
    - U::d_authZone::toString
    - static_cast<uint32_t>
    - add_int64
    - add_bool
    linkageType: ''
    returnType: void
    signature: void MemRecursorCache::getRecordSet(T& message, U recordSet)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: withName
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:1075,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:1075,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:1075,1
    - Dst: auto::info
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:1076,1
    - Dst: MemRecursorCache::size
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:1080,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:1083,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:1086,1
    - Dst: protozero::pbf_builder::add_string
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:1089,1
    - Dst: getPDNSVersion
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:1089,1
    - Dst: protozero::pbf_builder::add_string
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:1090,1
    - Dst: protozero::pbf_builder::add_uint64
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:1091,1
    - Dst: protozero::pbf_builder::add_int64
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:1092,1
    - Dst: time
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:1092,1
    - Dst: protozero::pbf_builder::add_string
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:1093,1
    - Dst: reserve
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:1096,1
    - Dst: MemRecursorCache::lock
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:1099,1
    - Dst: auto::d_map::get
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:1100,1
    - Dst: rbegin
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:1102,1
    - Dst: rend
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:1102,1
    - Dst: MemRecursorCache::getRecordSet
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:1104,1
    - Dst: MemRecursorCache::size
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:1105,1
    - Dst: protozero::pbf_builder::rollback
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:1106,1
    - Dst: auto::info
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:1107,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:1107,1
    - Dst: MemRecursorCache::size
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:1107,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:1107,1
    - Dst: auto::info
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:1117,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:1117,1
    - Dst: MemRecursorCache::size
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:1117,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:1117,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 30
    argCount: 3
    argNames:
    - perShard
    - maxSize
    - ' ret'
    argTypes:
    - size_t
    - size_t
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1119
      start: 1073
    functionDepth: 2
    functionLinenumber: 1073
    functionLinenumberEnd: 1119
    functionName: MemRecursorCache::getRecordSets
    functionSourceFile: /src/pdns/pdns/recursordist/recursor_cache.cc
    functionUses: 0
    functionsReached:
    - pdns::max
    - Logging::Loggable
    - withName
    - time
    - rbegin
    - protozero::pbf_builder::add_int64
    - MemRecursorCache::getRecordSet
    - protozero::pbf_builder::add_uint64
    - protozero::pbf_builder::rollback
    - reserve
    - protozero::pbf_builder::add_string
    - MemRecursorCache::lock
    - auto::d_map::get
    - MemRecursorCache::size
    - getPDNSVersion
    - rend
    - auto::info
    linkageType: ''
    returnType: size_t
    signature: size_t MemRecursorCache::getRecordSets(size_t perShard, size_t maxSize,
      std::string& ret)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: get_message
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:1123,1
    - Dst: DNSRecord::DNSRecord
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:1124,1
    - Dst: protozero::pbf_message::next
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:1125,1
    - Dst: protozero::pbf_message::tag
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:1126,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:1128,1
    - Dst: protozero::pbf_message::get_bytes
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:1128,1
    - Dst: DNSRecordContent::deserialize
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:1131,1
    - Dst: protozero::pbf_message::get_bytes
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:1131,1
    - Dst: DNSRecord::setContent
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:1132,1
    - Dst: protozero::pbf_message::get_uint32
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:1136,1
    - Dst: protozero::pbf_message::get_uint32
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:1139,1
    - Dst: protozero::pbf_message::get_uint32
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:1142,1
    - Dst: static_cast<DNSResourceRecord::Place>
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:1145,1
    - Dst: protozero::pbf_message::get_uint32
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:1145,1
    - Dst: protozero::pbf_message::get_uint32
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:1148,1
    - Dst: emplace_back
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:1154,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 30
    argCount: 3
    argNames:
    - ' message'
    - ' qname'
    - ' authRecs'
    argTypes:
    - protozero::pbf_message<PBCacheEntry>
    - DNSName
    - std::vector<DNSRecord>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1155
      start: 1121
    functionDepth: 1
    functionLinenumber: 1121
    functionLinenumberEnd: 1155
    functionName: putAuthRecord
    functionSourceFile: /src/pdns/pdns/recursordist/recursor_cache.cc
    functionUses: 0
    functionsReached:
    - protozero::pbf_message::get_uint32
    - DNSRecord::DNSRecord
    - DNSName
    - get_message
    - protozero::pbf_message::tag
    - DNSRecord::setContent
    - static_cast<DNSResourceRecord::Place>
    - protozero::pbf_message::next
    - emplace_back
    - protozero::pbf_message::get_bytes
    - DNSRecordContent::deserialize
    linkageType: ''
    returnType: void
    signature: void putAuthRecord(protozero::pbf_message<PBCacheEntry>& message, const
      DNSName& qname, std::vector<DNSRecord>& authRecs)
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: Netmask
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:1162,1
    - Dst: next
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:1163,1
    - Dst: tag
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:1164,1
    - Dst: DNSRecordContent::deserialize
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:1166,1
    - Dst: get_bytes
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:1166,1
    - Dst: CacheEntry::d_records::emplace_back
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:1167,1
    - Dst: DNSRecordContent::deserialize
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:1171,1
    - Dst: get_bytes
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:1171,1
    - Dst: SigRecsVec::emplace_back
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:1172,1
    - Dst: std::dynamic_pointer_cast<RRSIGRecordContent>
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:1172,1
    - Dst: putAuthRecord
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:1176,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:1179,1
    - Dst: get_bytes
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:1179,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:1182,1
    - Dst: get_bytes
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:1182,1
    - Dst: decodeComboAddress
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:1185,1
    - Dst: decodeNetmask
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:1188,1
    - Dst: get_bytes
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:1191,1
    - Dst: static_cast<vState>
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:1194,1
    - Dst: get_uint32
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:1194,1
    - Dst: get_int64
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:1197,1
    - Dst: get_uint32
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:1200,1
    - Dst: get_uint32
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:1203,1
    - Dst: get_uint32
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:1206,1
    - Dst: get_bool
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:1209,1
    - Dst: get_bool
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:1212,1
    - Dst: get_bool
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:1216,1
    - Dst: get_bool
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:1219,1
    - Dst: AuthRecsVec::empty
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:1225,1
    - Dst: std::make_shared<const AuthRecsVec>
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:1226,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:1226,1
    - Dst: SigRecsVec::empty
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:1228,1
    - Dst: std::make_shared<const SigRecsVec>
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:1229,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:1229,1
    - Dst: MemRecursorCache::replace
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:1231,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:1231,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 68
    argCount: 1
    argNames:
    - ' message'
    argTypes:
    - T
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1232
      start: 1158
    functionDepth: 2
    functionLinenumber: 1158
    functionLinenumberEnd: 1232
    functionName: MemRecursorCache::putRecordSet
    functionSourceFile: /src/pdns/pdns/recursordist/recursor_cache.cc
    functionUses: 0
    functionsReached:
    - get_bytes
    - get_int64
    - get_uint32
    - AuthRecsVec::empty
    - CacheEntry::d_records::emplace_back
    - SigRecsVec::emplace_back
    - get_bool
    - tag
    - std::dynamic_pointer_cast<RRSIGRecordContent>
    - std::make_shared<const SigRecsVec>
    - SigRecsVec::empty
    - next
    - Netmask
    - MemRecursorCache::replace
    - DNSName
    - std::make_shared<const AuthRecsVec>
    - std::move
    - putAuthRecord
    - static_cast<vState>
    - decodeComboAddress
    - decodeNetmask
    - DNSRecordContent::deserialize
    linkageType: ''
    returnType: bool
    signature: bool MemRecursorCache::putRecordSet(T& message)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: withName
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:1236,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:1236,1
    - Dst: MemRecursorCache::size
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:1236,1
    - Dst: auto::info
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:1237,1
    - Dst: protozero::pbf_message::next
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:1245,1
    - Dst: protozero::pbf_message::tag
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:1246,1
    - Dst: protozero::pbf_message::get_string
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:1248,1
    - Dst: auto::withValues
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:1249,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:1249,1
    - Dst: protozero::pbf_message::get_string
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:1253,1
    - Dst: auto::withValues
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:1254,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:1254,1
    - Dst: protozero::pbf_message::get_uint64
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:1258,1
    - Dst: auto::withValues
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:1259,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:1259,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:1261,1
    - Dst: protozero::pbf_message::get_int64
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:1267,1
    - Dst: auto::withValues
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:1268,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:1268,1
    - Dst: protozero::pbf_message::get_string
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:1272,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:1274,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:1281,1
    - Dst: protozero::pbf_message::get_message
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:1283,1
    - Dst: MemRecursorCache::putRecordSet
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:1284,1
    - Dst: auto::info
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:1292,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:1292,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:1292,1
    - Dst: auto::error
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:1296,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:1296,1
    - Dst: auto::error
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:1299,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:1299,1
    - Dst: auto::info
      Src: /src/pdns/pdns/recursordist/recursor_cache.cc:1302,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 54
    argCount: 1
    argNames:
    - ' pbuf'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1305
      start: 1234
    functionDepth: 3
    functionLinenumber: 1234
    functionLinenumberEnd: 1305
    functionName: MemRecursorCache::putRecordSets
    functionSourceFile: /src/pdns/pdns/recursordist/recursor_cache.cc
    functionUses: 0
    functionsReached:
    - Logging::Loggable
    - withName
    - std::runtime_error
    - protozero::pbf_message::get_int64
    - what
    - MemRecursorCache::putRecordSet
    - protozero::pbf_message::get_message
    - auto::error
    - protozero::pbf_message::tag
    - auto::withValues
    - MemRecursorCache::size
    - protozero::pbf_message::get_uint64
    - protozero::pbf_message::next
    - protozero::pbf_message::get_string
    - auto::info
    linkageType: ''
    returnType: size_t
    signature: size_t MemRecursorCache::putRecordSets(const std::string& pbuf)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 48
    functionDepth: 0
    functionLinenumber: 48
    functionLinenumberEnd: 48
    functionName: '& operator=(const MiniCurl&)'
    functionSourceFile: /src/pdns/pdns/recursordist/minicurl.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: MiniCurl
    signature: MiniCurl & operator=(const MiniCurl&)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/zonemd.hh:54,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - zone
    argTypes:
    - ZoneName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 53
    functionDepth: 0
    functionLinenumber: 53
    functionLinenumberEnd: 55
    functionName: pdns::ZoneMD::ZoneMD
    functionSourceFile: /src/pdns/pdns/recursordist/zonemd.hh
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void ZoneMD(ZoneName zone)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 63
    functionDepth: 0
    functionLinenumber: 63
    functionLinenumberEnd: 66
    functionName: '& getDNSKEYs() const'
    functionSourceFile: /src/pdns/pdns/recursordist/zonemd.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::set<shared_ptr<const DNSKEYRecordContent>>
    signature: std::set<shared_ptr<const DNSKEYRecordContent>> & getDNSKEYs() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: count
      Src: /src/pdns/pdns/recursordist/zonemd.hh:71,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - requestedType
    argTypes:
    - QType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 69
    functionDepth: 0
    functionLinenumber: 69
    functionLinenumberEnd: 75
    functionName: '& getRRSIGs(QType requestedType)'
    functionSourceFile: /src/pdns/pdns/recursordist/zonemd.hh
    functionUses: 0
    functionsReached:
    - count
    linkageType: ''
    returnType: std::vector<shared_ptr<const RRSIGRecordContent>>
    signature: std::vector<shared_ptr<const RRSIGRecordContent>> & getRRSIGs(QType
      requestedType)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::vector::reserve
      Src: /src/pdns/pdns/recursordist/zonemd.hh:81,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/zonemd.hh:81,1
    - Dst: std::vector::emplace_back
      Src: /src/pdns/pdns/recursordist/zonemd.hh:83,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 78
    functionDepth: 0
    functionLinenumber: 78
    functionLinenumberEnd: 86
    functionName: pdns::ZoneMD::getZONEMDs
    functionSourceFile: /src/pdns/pdns/recursordist/zonemd.hh
    functionUses: 0
    functionsReached:
    - std::vector::reserve
    - std::vector::emplace_back
    - size
    linkageType: ''
    returnType: std::vector<shared_ptr<const ZONEMDRecordContent>>
    signature: std::vector<shared_ptr<const ZONEMDRecordContent>> getZONEMDs() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 89
    functionDepth: 0
    functionLinenumber: 89
    functionLinenumberEnd: 92
    functionName: '& getNSECs() const'
    functionSourceFile: /src/pdns/pdns/recursordist/zonemd.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: ContentSigPair
    signature: ContentSigPair & getNSECs() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: find
      Src: /src/pdns/pdns/recursordist/zonemd.hh:97,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/zonemd.hh:98,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/zonemd.hh:98,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 95
    functionDepth: 0
    functionLinenumber: 95
    functionLinenumberEnd: 99
    functionName: '& getNSEC3s() const'
    functionSourceFile: /src/pdns/pdns/recursordist/zonemd.hh
    functionUses: 0
    functionsReached:
    - at
    - end
    - find
    linkageType: ''
    returnType: ContentSigPair
    signature: ContentSigPair & getNSEC3s() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 104
      start: 101
    functionDepth: 0
    functionLinenumber: 101
    functionLinenumberEnd: 104
    functionName: '& getNSEC3Label() const'
    functionSourceFile: /src/pdns/pdns/recursordist/zonemd.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: DNSName
    signature: DNSName & getNSEC3Label() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 106
    functionDepth: 0
    functionLinenumber: 106
    functionLinenumberEnd: 109
    functionName: '& getNSEC3Params() const'
    functionSourceFile: /src/pdns/pdns/recursordist/zonemd.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::vector<shared_ptr<const NSEC3PARAMRecordContent>>
    signature: std::vector<shared_ptr<const NSEC3PARAMRecordContent>> & getNSEC3Params()
      const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: first::canonCompare_three_way
      Src: /src/pdns/pdns/recursordist/zonemd.hh:119,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - ' lhs'
    - ' rhs'
    argTypes:
    - RRSetKey_t
    - RRSetKey_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 117
    functionDepth: 0
    functionLinenumber: 117
    functionLinenumberEnd: 123
    functionName: operator()(const RRSetKey_t& lhs, const RRSetKey_t& rhs) const
    functionSourceFile: /src/pdns/pdns/recursordist/zonemd.hh
    functionUses: 0
    functionsReached:
    - first::canonCompare_three_way
    linkageType: ''
    returnType: bool
    signature: bool operator()(const RRSetKey_t& lhs, const RRSetKey_t& rhs) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/zonemd.hh:54,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - zone
    argTypes:
    - ZoneName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 53
    functionDepth: 0
    functionLinenumber: 53
    functionLinenumberEnd: 55
    functionName: pdns::ZoneMD::ZoneMD
    functionSourceFile: /src/pdns/pdns/recursordist/zonemd.hh
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void ZoneMD(ZoneName zone)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 63
    functionDepth: 0
    functionLinenumber: 63
    functionLinenumberEnd: 66
    functionName: '& getDNSKEYs() const'
    functionSourceFile: /src/pdns/pdns/recursordist/zonemd.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::set<shared_ptr<const DNSKEYRecordContent>>
    signature: std::set<shared_ptr<const DNSKEYRecordContent>> & getDNSKEYs() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: count
      Src: /src/pdns/pdns/recursordist/zonemd.hh:71,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - requestedType
    argTypes:
    - QType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 69
    functionDepth: 0
    functionLinenumber: 69
    functionLinenumberEnd: 75
    functionName: '& getRRSIGs(QType requestedType)'
    functionSourceFile: /src/pdns/pdns/recursordist/zonemd.hh
    functionUses: 0
    functionsReached:
    - count
    linkageType: ''
    returnType: std::vector<shared_ptr<const RRSIGRecordContent>>
    signature: std::vector<shared_ptr<const RRSIGRecordContent>> & getRRSIGs(QType
      requestedType)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::vector::reserve
      Src: /src/pdns/pdns/recursordist/zonemd.hh:81,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/zonemd.hh:81,1
    - Dst: std::vector::emplace_back
      Src: /src/pdns/pdns/recursordist/zonemd.hh:83,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 78
    functionDepth: 0
    functionLinenumber: 78
    functionLinenumberEnd: 86
    functionName: pdns::ZoneMD::getZONEMDs
    functionSourceFile: /src/pdns/pdns/recursordist/zonemd.hh
    functionUses: 0
    functionsReached:
    - std::vector::reserve
    - std::vector::emplace_back
    - size
    linkageType: ''
    returnType: std::vector<shared_ptr<const ZONEMDRecordContent>>
    signature: std::vector<shared_ptr<const ZONEMDRecordContent>> getZONEMDs() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 89
    functionDepth: 0
    functionLinenumber: 89
    functionLinenumberEnd: 92
    functionName: '& getNSECs() const'
    functionSourceFile: /src/pdns/pdns/recursordist/zonemd.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: ContentSigPair
    signature: ContentSigPair & getNSECs() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: find
      Src: /src/pdns/pdns/recursordist/zonemd.hh:97,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/zonemd.hh:98,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/zonemd.hh:98,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 95
    functionDepth: 0
    functionLinenumber: 95
    functionLinenumberEnd: 99
    functionName: '& getNSEC3s() const'
    functionSourceFile: /src/pdns/pdns/recursordist/zonemd.hh
    functionUses: 0
    functionsReached:
    - at
    - end
    - find
    linkageType: ''
    returnType: ContentSigPair
    signature: ContentSigPair & getNSEC3s() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 104
      start: 101
    functionDepth: 0
    functionLinenumber: 101
    functionLinenumberEnd: 104
    functionName: '& getNSEC3Label() const'
    functionSourceFile: /src/pdns/pdns/recursordist/zonemd.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: DNSName
    signature: DNSName & getNSEC3Label() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 106
    functionDepth: 0
    functionLinenumber: 106
    functionLinenumberEnd: 109
    functionName: '& getNSEC3Params() const'
    functionSourceFile: /src/pdns/pdns/recursordist/zonemd.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::vector<shared_ptr<const NSEC3PARAMRecordContent>>
    signature: std::vector<shared_ptr<const NSEC3PARAMRecordContent>> & getNSEC3Params()
      const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: first::canonCompare_three_way
      Src: /src/pdns/pdns/recursordist/zonemd.hh:119,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - ' lhs'
    - ' rhs'
    argTypes:
    - RRSetKey_t
    - RRSetKey_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 117
    functionDepth: 0
    functionLinenumber: 117
    functionLinenumberEnd: 123
    functionName: operator()(const RRSetKey_t& lhs, const RRSetKey_t& rhs) const
    functionSourceFile: /src/pdns/pdns/recursordist/zonemd.hh
    functionUses: 0
    functionsReached:
    - first::canonCompare_three_way
    linkageType: ''
    returnType: bool
    signature: bool operator()(const RRSetKey_t& lhs, const RRSetKey_t& rhs) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SvcParam::keyFromString
      Src: /src/pdns/pdns/recursordist/svc-records.cc:42,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' k'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 39
    functionDepth: 0
    functionLinenumber: 39
    functionLinenumberEnd: 43
    functionName: SvcParam::keyFromString
    functionSourceFile: /src/pdns/pdns/recursordist/svc-records.cc
    functionUses: 18
    functionsReached:
    - SvcParam::keyFromString
    linkageType: ''
    returnType: SvcParam::SvcParamKey
    signature: SvcParam::SvcParamKey SvcParam::keyFromString(const std::string& k)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: find
      Src: /src/pdns/pdns/recursordist/svc-records.cc:47,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/svc-records.cc:48,1
    - Dst: substr
      Src: /src/pdns/pdns/recursordist/svc-records.cc:52,1
    - Dst: SvcParam::SvcParamKey
      Src: /src/pdns/pdns/recursordist/svc-records.cc:55,1
    - Dst: pdns::checked_stoi<uint16_t>
      Src: /src/pdns/pdns/recursordist/svc-records.cc:55,1
    - Dst: substr
      Src: /src/pdns/pdns/recursordist/svc-records.cc:55,1
    - Dst: std::invalid_argument
      Src: /src/pdns/pdns/recursordist/svc-records.cc:60,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 2
    argNames:
    - ' k'
    - ' generic'
    argTypes:
    - std::string
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 45
    functionDepth: 0
    functionLinenumber: 45
    functionLinenumberEnd: 61
    functionName: SvcParam::keyFromString
    functionSourceFile: /src/pdns/pdns/recursordist/svc-records.cc
    functionUses: 18
    functionsReached:
    - SvcParam::SvcParamKey
    - std::invalid_argument
    - end
    - pdns::checked_stoi<uint16_t>
    - substr
    - find
    linkageType: ''
    returnType: SvcParam::SvcParamKey
    signature: SvcParam::SvcParamKey SvcParam::keyFromString(const std::string& k,
      bool& generic)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::find_if
      Src: /src/pdns/pdns/recursordist/svc-records.cc:65,1
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/svc-records.cc:65,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/svc-records.cc:65,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/svc-records.cc:66,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/svc-records.cc:69,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - ' k'
    argTypes:
    - SvcParam::SvcParamKey
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 63
    functionDepth: 0
    functionLinenumber: 63
    functionLinenumberEnd: 70
    functionName: SvcParam::keyToString
    functionSourceFile: /src/pdns/pdns/recursordist/svc-records.cc
    functionUses: 26
    functionsReached:
    - end
    - std::find_if
    - std::to_string
    - begin
    linkageType: ''
    returnType: std::string
    signature: std::string SvcParam::keyToString(const SvcParam::SvcParamKey& k)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::invalid_argument
      Src: /src/pdns/pdns/recursordist/svc-records.cc:76,1
    - Dst: SvcParam::keyToString
      Src: /src/pdns/pdns/recursordist/svc-records.cc:76,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 5
    argCount: 1
    argNames:
    - ' key'
    argTypes:
    - SvcParamKey
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 72
    functionDepth: 0
    functionLinenumber: 72
    functionLinenumberEnd: 78
    functionName: SvcParam::SvcParam
    functionSourceFile: /src/pdns/pdns/recursordist/svc-records.cc
    functionUses: 0
    functionsReached:
    - SvcParam::keyToString
    - std::invalid_argument
    linkageType: ''
    returnType: void
    signature: void SvcParam::SvcParam(const SvcParamKey& key)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: std::invalid_argument
      Src: /src/pdns/pdns/recursordist/svc-records.cc:84,1
    - Dst: SvcParam::keyToString
      Src: /src/pdns/pdns/recursordist/svc-records.cc:84,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 10
    argCount: 2
    argNames:
    - ' key'
    - ' value'
    argTypes:
    - SvcParamKey
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 80
    functionDepth: 0
    functionLinenumber: 80
    functionLinenumberEnd: 93
    functionName: SvcParam::SvcParam
    functionSourceFile: /src/pdns/pdns/recursordist/svc-records.cc
    functionUses: 0
    functionsReached:
    - SvcParam::keyToString
    - std::invalid_argument
    linkageType: ''
    returnType: void
    signature: void SvcParam::SvcParam(const SvcParamKey& key, const std::string&
      value)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: std::invalid_argument
      Src: /src/pdns/pdns/recursordist/svc-records.cc:99,1
    - Dst: SvcParam::keyToString
      Src: /src/pdns/pdns/recursordist/svc-records.cc:99,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/svc-records.cc:102,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 2
    argNames:
    - ' key'
    - ' value'
    argTypes:
    - SvcParamKey
    - std::vector<std::string>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 104
      start: 95
    functionDepth: 0
    functionLinenumber: 95
    functionLinenumberEnd: 104
    functionName: SvcParam::SvcParam
    functionSourceFile: /src/pdns/pdns/recursordist/svc-records.cc
    functionUses: 0
    functionsReached:
    - SvcParam::keyToString
    - std::invalid_argument
    - std::move
    linkageType: ''
    returnType: void
    signature: void SvcParam::SvcParam(const SvcParamKey& key, std::vector<std::string>&&
      value)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: std::invalid_argument
      Src: /src/pdns/pdns/recursordist/svc-records.cc:110,1
    - Dst: SvcParam::keyToString
      Src: /src/pdns/pdns/recursordist/svc-records.cc:110,1
    - Dst: insert
      Src: /src/pdns/pdns/recursordist/svc-records.cc:114,1
    - Dst: SvcParam::keyFromString
      Src: /src/pdns/pdns/recursordist/svc-records.cc:114,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 9
    argCount: 2
    argNames:
    - ' key'
    - ' value'
    argTypes:
    - SvcParamKey
    - std::set<std::string>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 106
    functionDepth: 2
    functionLinenumber: 106
    functionLinenumberEnd: 117
    functionName: SvcParam::SvcParam
    functionSourceFile: /src/pdns/pdns/recursordist/svc-records.cc
    functionUses: 0
    functionsReached:
    - SvcParam::keyToString
    - std::invalid_argument
    - insert
    - SvcParam::keyFromString
    linkageType: ''
    returnType: void
    signature: void SvcParam::SvcParam(const SvcParamKey& key, std::set<std::string>&&
      value)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::invalid_argument
      Src: /src/pdns/pdns/recursordist/svc-records.cc:123,1
    - Dst: SvcParam::keyToString
      Src: /src/pdns/pdns/recursordist/svc-records.cc:123,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/svc-records.cc:125,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 2
    argNames:
    - ' key'
    - ' value'
    argTypes:
    - SvcParamKey
    - std::set<SvcParam::SvcParamKey>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 119
    functionDepth: 0
    functionLinenumber: 119
    functionLinenumberEnd: 126
    functionName: SvcParam::SvcParam
    functionSourceFile: /src/pdns/pdns/recursordist/svc-records.cc
    functionUses: 0
    functionsReached:
    - SvcParam::keyToString
    - std::invalid_argument
    - std::move
    linkageType: ''
    returnType: void
    signature: void SvcParam::SvcParam(const SvcParamKey& key, std::set<SvcParam::SvcParamKey>&&
      value)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: std::invalid_argument
      Src: /src/pdns/pdns/recursordist/svc-records.cc:132,1
    - Dst: SvcParam::keyToString
      Src: /src/pdns/pdns/recursordist/svc-records.cc:132,1
    - Dst: isIPv6
      Src: /src/pdns/pdns/recursordist/svc-records.cc:135,1
    - Dst: std::invalid_argument
      Src: /src/pdns/pdns/recursordist/svc-records.cc:136,1
    - Dst: toString
      Src: /src/pdns/pdns/recursordist/svc-records.cc:136,1
    - Dst: SvcParam::keyToString
      Src: /src/pdns/pdns/recursordist/svc-records.cc:136,1
    - Dst: isIPv4
      Src: /src/pdns/pdns/recursordist/svc-records.cc:138,1
    - Dst: std::invalid_argument
      Src: /src/pdns/pdns/recursordist/svc-records.cc:139,1
    - Dst: toString
      Src: /src/pdns/pdns/recursordist/svc-records.cc:139,1
    - Dst: SvcParam::keyToString
      Src: /src/pdns/pdns/recursordist/svc-records.cc:139,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/svc-records.cc:142,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 13
    argCount: 2
    argNames:
    - ' key'
    - ' value'
    argTypes:
    - SvcParamKey
    - std::vector<ComboAddress>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 143
      start: 128
    functionDepth: 0
    functionLinenumber: 128
    functionLinenumberEnd: 143
    functionName: SvcParam::SvcParam
    functionSourceFile: /src/pdns/pdns/recursordist/svc-records.cc
    functionUses: 0
    functionsReached:
    - std::move
    - isIPv6
    - toString
    - std::invalid_argument
    - isIPv4
    - SvcParam::keyToString
    linkageType: ''
    returnType: void
    signature: void SvcParam::SvcParam(const SvcParamKey& key, std::vector<ComboAddress>&&
      value)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::invalid_argument
      Src: /src/pdns/pdns/recursordist/svc-records.cc:149,1
    - Dst: SvcParam::keyToString
      Src: /src/pdns/pdns/recursordist/svc-records.cc:149,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/svc-records.cc:151,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 5
    argCount: 2
    argNames:
    - ' key'
    - ' value'
    argTypes:
    - SvcParamKey
    - std::vector<uint16_t>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 152
      start: 145
    functionDepth: 0
    functionLinenumber: 145
    functionLinenumberEnd: 152
    functionName: SvcParam::SvcParam
    functionSourceFile: /src/pdns/pdns/recursordist/svc-records.cc
    functionUses: 0
    functionsReached:
    - SvcParam::keyToString
    - std::invalid_argument
    - std::move
    linkageType: ''
    returnType: void
    signature: void SvcParam::SvcParam(const SvcParamKey& key, std::vector<uint16_t>&&
      value)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::invalid_argument
      Src: /src/pdns/pdns/recursordist/svc-records.cc:158,1
    - Dst: SvcParam::keyToString
      Src: /src/pdns/pdns/recursordist/svc-records.cc:158,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - ' key'
    - value
    argTypes:
    - SvcParamKey
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 161
      start: 154
    functionDepth: 0
    functionLinenumber: 154
    functionLinenumberEnd: 161
    functionName: SvcParam::SvcParam
    functionSourceFile: /src/pdns/pdns/recursordist/svc-records.cc
    functionUses: 0
    functionsReached:
    - SvcParam::keyToString
    - std::invalid_argument
    linkageType: ''
    returnType: void
    signature: void SvcParam::SvcParam(const SvcParamKey& key, const uint16_t value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SvcParam::getKey
      Src: /src/pdns/pdns/recursordist/svc-records.cc:166,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' other'
    argTypes:
    - SvcParam
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 167
      start: 164
    functionDepth: 0
    functionLinenumber: 164
    functionLinenumberEnd: 167
    functionName: SvcParam::operator<(const SvcParam& other) const
    functionSourceFile: /src/pdns/pdns/recursordist/svc-records.cc
    functionUses: 0
    functionsReached:
    - SvcParam::getKey
    linkageType: ''
    returnType: bool
    signature: bool SvcParam::operator<(const SvcParam& other) const
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: SvcParam::getKey
      Src: /src/pdns/pdns/recursordist/svc-records.cc:171,1
    - Dst: SvcParam::getKey
      Src: /src/pdns/pdns/recursordist/svc-records.cc:171,1
    - Dst: SvcParam::getMandatory
      Src: /src/pdns/pdns/recursordist/svc-records.cc:176,1
    - Dst: getMandatory
      Src: /src/pdns/pdns/recursordist/svc-records.cc:176,1
    - Dst: SvcParam::getALPN
      Src: /src/pdns/pdns/recursordist/svc-records.cc:178,1
    - Dst: getALPN
      Src: /src/pdns/pdns/recursordist/svc-records.cc:178,1
    - Dst: SvcParam::getPort
      Src: /src/pdns/pdns/recursordist/svc-records.cc:183,1
    - Dst: SvcParam::getPort
      Src: /src/pdns/pdns/recursordist/svc-records.cc:183,1
    - Dst: SvcParam::getIPHints
      Src: /src/pdns/pdns/recursordist/svc-records.cc:186,1
    - Dst: getIPHints
      Src: /src/pdns/pdns/recursordist/svc-records.cc:186,1
    - Dst: SvcParam::getAutoHint
      Src: /src/pdns/pdns/recursordist/svc-records.cc:186,1
    - Dst: SvcParam::getAutoHint
      Src: /src/pdns/pdns/recursordist/svc-records.cc:186,1
    - Dst: SvcParam::getECH
      Src: /src/pdns/pdns/recursordist/svc-records.cc:188,1
    - Dst: getECH
      Src: /src/pdns/pdns/recursordist/svc-records.cc:188,1
    - Dst: SvcParam::getValue
      Src: /src/pdns/pdns/recursordist/svc-records.cc:190,1
    - Dst: getValue
      Src: /src/pdns/pdns/recursordist/svc-records.cc:190,1
    - Dst: SvcParam::getTLSSupportedGroups
      Src: /src/pdns/pdns/recursordist/svc-records.cc:192,1
    - Dst: getTLSSupportedGroups
      Src: /src/pdns/pdns/recursordist/svc-records.cc:192,1
    - Dst: SvcParam::getValue
      Src: /src/pdns/pdns/recursordist/svc-records.cc:194,1
    - Dst: getValue
      Src: /src/pdns/pdns/recursordist/svc-records.cc:194,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 26
    argCount: 1
    argNames:
    - ' other'
    argTypes:
    - SvcParam
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 196
      start: 169
    functionDepth: 0
    functionLinenumber: 169
    functionLinenumberEnd: 196
    functionName: SvcParam::operator==(const SvcParam& other) const
    functionSourceFile: /src/pdns/pdns/recursordist/svc-records.cc
    functionUses: 0
    functionsReached:
    - getTLSSupportedGroups
    - SvcParam::getIPHints
    - SvcParam::getMandatory
    - getALPN
    - SvcParam::getKey
    - getIPHints
    - getECH
    - SvcParam::getTLSSupportedGroups
    - SvcParam::getPort
    - SvcParam::getECH
    - getValue
    - getMandatory
    - SvcParam::getAutoHint
    - SvcParam::getALPN
    - SvcParam::getValue
    linkageType: ''
    returnType: bool
    signature: bool SvcParam::operator==(const SvcParam& other) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' other'
    argTypes:
    - SvcParam
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 201
      start: 198
    functionDepth: 0
    functionLinenumber: 198
    functionLinenumberEnd: 201
    functionName: SvcParam::operator!=(const SvcParam& other) const
    functionSourceFile: /src/pdns/pdns/recursordist/svc-records.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool SvcParam::operator!=(const SvcParam& other) const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::invalid_argument
      Src: /src/pdns/pdns/recursordist/svc-records.cc:206,1
    - Dst: keyToString
      Src: /src/pdns/pdns/recursordist/svc-records.cc:206,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 209
      start: 203
    functionDepth: 0
    functionLinenumber: 203
    functionLinenumberEnd: 209
    functionName: '& SvcParam::getIPHints() const'
    functionSourceFile: /src/pdns/pdns/recursordist/svc-records.cc
    functionUses: 0
    functionsReached:
    - std::invalid_argument
    - keyToString
    linkageType: ''
    returnType: std::vector<ComboAddress>
    signature: std::vector<ComboAddress> & SvcParam::getIPHints() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::invalid_argument
      Src: /src/pdns/pdns/recursordist/svc-records.cc:214,1
    - Dst: SvcParam::keyToString
      Src: /src/pdns/pdns/recursordist/svc-records.cc:214,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 217
      start: 211
    functionDepth: 0
    functionLinenumber: 211
    functionLinenumberEnd: 217
    functionName: SvcParam::getPort
    functionSourceFile: /src/pdns/pdns/recursordist/svc-records.cc
    functionUses: 8
    functionsReached:
    - SvcParam::keyToString
    - std::invalid_argument
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t SvcParam::getPort() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::invalid_argument
      Src: /src/pdns/pdns/recursordist/svc-records.cc:222,1
    - Dst: keyToString
      Src: /src/pdns/pdns/recursordist/svc-records.cc:222,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 225
      start: 219
    functionDepth: 0
    functionLinenumber: 219
    functionLinenumberEnd: 225
    functionName: '& SvcParam::getALPN() const'
    functionSourceFile: /src/pdns/pdns/recursordist/svc-records.cc
    functionUses: 0
    functionsReached:
    - std::invalid_argument
    - keyToString
    linkageType: ''
    returnType: std::vector<std::string>
    signature: std::vector<std::string> & SvcParam::getALPN() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::invalid_argument
      Src: /src/pdns/pdns/recursordist/svc-records.cc:230,1
    - Dst: keyToString
      Src: /src/pdns/pdns/recursordist/svc-records.cc:230,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 233
      start: 227
    functionDepth: 0
    functionLinenumber: 227
    functionLinenumberEnd: 233
    functionName: '& SvcParam::getMandatory() const'
    functionSourceFile: /src/pdns/pdns/recursordist/svc-records.cc
    functionUses: 0
    functionsReached:
    - std::invalid_argument
    - keyToString
    linkageType: ''
    returnType: std::set<SvcParam::SvcParamKey>
    signature: std::set<SvcParam::SvcParamKey> & SvcParam::getMandatory() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::invalid_argument
      Src: /src/pdns/pdns/recursordist/svc-records.cc:238,1
    - Dst: keyToString
      Src: /src/pdns/pdns/recursordist/svc-records.cc:238,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 241
      start: 235
    functionDepth: 0
    functionLinenumber: 235
    functionLinenumberEnd: 241
    functionName: '& SvcParam::getECH() const'
    functionSourceFile: /src/pdns/pdns/recursordist/svc-records.cc
    functionUses: 0
    functionsReached:
    - std::invalid_argument
    - keyToString
    linkageType: ''
    returnType: std::string
    signature: std::string & SvcParam::getECH() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::invalid_argument
      Src: /src/pdns/pdns/recursordist/svc-records.cc:246,1
    - Dst: keyToString
      Src: /src/pdns/pdns/recursordist/svc-records.cc:246,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 249
      start: 243
    functionDepth: 0
    functionLinenumber: 243
    functionLinenumberEnd: 249
    functionName: '& SvcParam::getValue() const'
    functionSourceFile: /src/pdns/pdns/recursordist/svc-records.cc
    functionUses: 0
    functionsReached:
    - std::invalid_argument
    - keyToString
    linkageType: ''
    returnType: std::string
    signature: std::string & SvcParam::getValue() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::invalid_argument
      Src: /src/pdns/pdns/recursordist/svc-records.cc:254,1
    - Dst: keyToString
      Src: /src/pdns/pdns/recursordist/svc-records.cc:254,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 257
      start: 251
    functionDepth: 0
    functionLinenumber: 251
    functionLinenumberEnd: 257
    functionName: '& SvcParam::getTLSSupportedGroups() const'
    functionSourceFile: /src/pdns/pdns/recursordist/svc-records.cc
    functionUses: 0
    functionsReached:
    - std::invalid_argument
    - keyToString
    linkageType: ''
    returnType: std::vector<uint16_t>
    signature: std::vector<uint16_t> & SvcParam::getTLSSupportedGroups() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-ednscookie_cc.cc:42,1
    - Dst: EDNSCookiesOpt::isWellFormed
      Src: /src/pdns/pdns/recursordist/test-ednscookie_cc.cc:42,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-ednscookie_cc.cc:46,1
    - Dst: EDNSCookiesOpt::makeFromString
      Src: /src/pdns/pdns/recursordist/test-ednscookie_cc.cc:46,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-ednscookie_cc.cc:50,1
    - Dst: EDNSCookiesOpt::makeFromString
      Src: /src/pdns/pdns/recursordist/test-ednscookie_cc.cc:50,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-ednscookie_cc.cc:54,1
    - Dst: EDNSCookiesOpt::makeFromString
      Src: /src/pdns/pdns/recursordist/test-ednscookie_cc.cc:54,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-ednscookie_cc.cc:57,1
    - Dst: EDNSCookiesOpt::makeFromString
      Src: /src/pdns/pdns/recursordist/test-ednscookie_cc.cc:57,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-ednscookie_cc.cc:62,1
    - Dst: EDNSCookiesOpt::makeFromString
      Src: /src/pdns/pdns/recursordist/test-ednscookie_cc.cc:62,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-ednscookie_cc.cc:65,1
    - Dst: EDNSCookiesOpt::makeFromString
      Src: /src/pdns/pdns/recursordist/test-ednscookie_cc.cc:65,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-ednscookie_cc.cc:68,1
    - Dst: EDNSCookiesOpt::makeFromString
      Src: /src/pdns/pdns/recursordist/test-ednscookie_cc.cc:68,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-ednscookie_cc.cc:72,1
    - Dst: EDNSCookiesOpt::makeFromString
      Src: /src/pdns/pdns/recursordist/test-ednscookie_cc.cc:72,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 19
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 37
    functionDepth: 0
    functionLinenumber: 37
    functionLinenumberEnd: 73
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-ednscookie_cc.cc
    functionUses: 0
    functionsReached:
    - EDNSCookiesOpt::makeFromString
    - BOOST_CHECK
    - EDNSCookiesOpt::isWellFormed
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_getEDNSCookiesOptFromString)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EDNSCookiesOpt
      Src: /src/pdns/pdns/recursordist/test-ednscookie_cc.cc:78,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-ednscookie_cc.cc:79,1
    - Dst: auto::isWellFormed
      Src: /src/pdns/pdns/recursordist/test-ednscookie_cc.cc:79,1
    - Dst: EDNSCookiesOpt
      Src: /src/pdns/pdns/recursordist/test-ednscookie_cc.cc:81,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-ednscookie_cc.cc:82,1
    - Dst: auto::isWellFormed
      Src: /src/pdns/pdns/recursordist/test-ednscookie_cc.cc:82,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-ednscookie_cc.cc:83,1
    - Dst: auto::makeOptString
      Src: /src/pdns/pdns/recursordist/test-ednscookie_cc.cc:83,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 75
    functionDepth: 0
    functionLinenumber: 75
    functionLinenumberEnd: 84
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-ednscookie_cc.cc
    functionUses: 0
    functionsReached:
    - auto::makeOptString
    - auto::isWellFormed
    - BOOST_CHECK_EQUAL
    - EDNSCookiesOpt
    - BOOST_CHECK
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_ctor)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EDNSCookiesOpt
      Src: /src/pdns/pdns/recursordist/test-ednscookie_cc.cc:89,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-ednscookie_cc.cc:92,1
    - Dst: auto::isWellFormed
      Src: /src/pdns/pdns/recursordist/test-ednscookie_cc.cc:92,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-ednscookie_cc.cc:96,1
    - Dst: auto::makeServerCookie
      Src: /src/pdns/pdns/recursordist/test-ednscookie_cc.cc:96,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-ednscookie_cc.cc:97,1
    - Dst: auto::isWellFormed
      Src: /src/pdns/pdns/recursordist/test-ednscookie_cc.cc:97,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-ednscookie_cc.cc:98,1
    - Dst: auto::isValid
      Src: /src/pdns/pdns/recursordist/test-ednscookie_cc.cc:98,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-ednscookie_cc.cc:101,1
    - Dst: auto::makeServerCookie
      Src: /src/pdns/pdns/recursordist/test-ednscookie_cc.cc:101,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-ednscookie_cc.cc:102,1
    - Dst: auto::isWellFormed
      Src: /src/pdns/pdns/recursordist/test-ednscookie_cc.cc:102,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-ednscookie_cc.cc:103,1
    - Dst: auto::isValid
      Src: /src/pdns/pdns/recursordist/test-ednscookie_cc.cc:103,1
    - Dst: auto::makeOptString
      Src: /src/pdns/pdns/recursordist/test-ednscookie_cc.cc:105,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-ednscookie_cc.cc:106,1
    - Dst: EDNSCookiesOpt::isValid
      Src: /src/pdns/pdns/recursordist/test-ednscookie_cc.cc:106,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-ednscookie_cc.cc:106,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-ednscookie_cc.cc:107,1
    - Dst: EDNSCookiesOpt::isValid
      Src: /src/pdns/pdns/recursordist/test-ednscookie_cc.cc:107,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-ednscookie_cc.cc:108,1
    - Dst: EDNSCookiesOpt::isValid
      Src: /src/pdns/pdns/recursordist/test-ednscookie_cc.cc:108,1
    - Dst: EDNSCookiesOpt
      Src: /src/pdns/pdns/recursordist/test-ednscookie_cc.cc:111,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-ednscookie_cc.cc:111,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-ednscookie_cc.cc:112,1
    - Dst: auto::isValid
      Src: /src/pdns/pdns/recursordist/test-ednscookie_cc.cc:112,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 113
      start: 87
    functionDepth: 0
    functionLinenumber: 87
    functionLinenumberEnd: 113
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-ednscookie_cc.cc
    functionUses: 0
    functionsReached:
    - auto::makeOptString
    - auto::isWellFormed
    - auto::makeServerCookie
    - EDNSCookiesOpt
    - auto::isValid
    - BOOST_CHECK
    - EDNSCookiesOpt::isValid
    - std::string
    - ComboAddress
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_createEDNSServerCookie)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: close
      Src: /src/pdns/pdns/recursordist/kqueuemplexer.cc:45,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 42
    functionDepth: 0
    functionLinenumber: 42
    functionLinenumberEnd: 47
    functionName: ~KqueueFDMultiplexer()
    functionSourceFile: /src/pdns/pdns/recursordist/kqueuemplexer.cc
    functionUses: 0
    functionsReached:
    - close
    linkageType: ''
    returnType: void
    signature: void ~KqueueFDMultiplexer()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 55
    functionDepth: 0
    functionLinenumber: 55
    functionLinenumberEnd: 58
    functionName: KqueueFDMultiplexer::getName
    functionSourceFile: /src/pdns/pdns/recursordist/kqueuemplexer.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: string
    signature: string getName() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: KqueueFDMultiplexer::KqueueFDMultiplexer
      Src: /src/pdns/pdns/recursordist/kqueuemplexer.cc:67,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - maxEventsHint
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 65
    functionDepth: 0
    functionLinenumber: 65
    functionLinenumberEnd: 68
    functionName: make
    functionSourceFile: /src/pdns/pdns/recursordist/kqueuemplexer.cc
    functionUses: 91
    functionsReached:
    - KqueueFDMultiplexer::KqueueFDMultiplexer
    linkageType: ''
    returnType: FDMultiplexer
    signature: FDMultiplexer * make(unsigned int maxEventsHint)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: FDMultiplexer::getMultiplexerMap
      Src: /src/pdns/pdns/recursordist/kqueuemplexer.cc:74,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 72
    functionDepth: 0
    functionLinenumber: 72
    functionLinenumberEnd: 75
    functionName: KqueueRegisterOurselves
    functionSourceFile: /src/pdns/pdns/recursordist/kqueuemplexer.cc
    functionUses: 0
    functionsReached:
    - FDMultiplexer::getMultiplexerMap
    linkageType: ''
    returnType: void
    signature: void KqueueRegisterOurselves()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: kqueue
      Src: /src/pdns/pdns/recursordist/kqueuemplexer.cc:81,1
    - Dst: FDMultiplexerException
      Src: /src/pdns/pdns/recursordist/kqueuemplexer.cc:83,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/kqueuemplexer.cc:83,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - maxEventsHint
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 78
    functionDepth: 0
    functionLinenumber: 78
    functionLinenumberEnd: 85
    functionName: KqueueFDMultiplexer::KqueueFDMultiplexer
    functionSourceFile: /src/pdns/pdns/recursordist/kqueuemplexer.cc
    functionUses: 5
    functionsReached:
    - kqueue
    - FDMultiplexerException
    - stringerror
    linkageType: ''
    returnType: void
    signature: void KqueueFDMultiplexer::KqueueFDMultiplexer(unsigned int maxEventsHint)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/kqueuemplexer.cc:95,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/kqueuemplexer.cc:98,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - kind
    argTypes:
    - FDMultiplexer::EventKind
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 87
    functionDepth: 0
    functionLinenumber: 87
    functionLinenumberEnd: 99
    functionName: convertEventKind
    functionSourceFile: /src/pdns/pdns/recursordist/kqueuemplexer.cc
    functionUses: 16
    functionsReached:
    - std::runtime_error
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t convertEventKind(FDMultiplexer::EventKind kind)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: EV_SET
      Src: /src/pdns/pdns/recursordist/kqueuemplexer.cc:107,1
    - Dst: convertEventKind
      Src: /src/pdns/pdns/recursordist/kqueuemplexer.cc:107,1
    - Dst: EV_SET
      Src: /src/pdns/pdns/recursordist/kqueuemplexer.cc:112,1
    - Dst: convertEventKind
      Src: /src/pdns/pdns/recursordist/kqueuemplexer.cc:112,1
    - Dst: kevent
      Src: /src/pdns/pdns/recursordist/kqueuemplexer.cc:116,1
    - Dst: FDMultiplexerException
      Src: /src/pdns/pdns/recursordist/kqueuemplexer.cc:117,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/kqueuemplexer.cc:117,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 12
    argCount: 2
    argNames:
    - fd
    - kind
    argTypes:
    - int
    - FDMultiplexer::EventKind
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 119
      start: 101
    functionDepth: 0
    functionLinenumber: 101
    functionLinenumberEnd: 119
    functionName: KqueueFDMultiplexer::addFD
    functionSourceFile: /src/pdns/pdns/recursordist/kqueuemplexer.cc
    functionUses: 0
    functionsReached:
    - stringerror
    - convertEventKind
    - kevent
    - FDMultiplexerException
    - EV_SET
    linkageType: ''
    returnType: void
    signature: void KqueueFDMultiplexer::addFD(int fd, FDMultiplexer::EventKind kind)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: EV_SET
      Src: /src/pdns/pdns/recursordist/kqueuemplexer.cc:127,1
    - Dst: convertEventKind
      Src: /src/pdns/pdns/recursordist/kqueuemplexer.cc:127,1
    - Dst: EV_SET
      Src: /src/pdns/pdns/recursordist/kqueuemplexer.cc:132,1
    - Dst: convertEventKind
      Src: /src/pdns/pdns/recursordist/kqueuemplexer.cc:132,1
    - Dst: kevent
      Src: /src/pdns/pdns/recursordist/kqueuemplexer.cc:136,1
    - Dst: FDMultiplexerException
      Src: /src/pdns/pdns/recursordist/kqueuemplexer.cc:138,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/kqueuemplexer.cc:138,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 12
    argCount: 2
    argNames:
    - fd
    - kind
    argTypes:
    - int
    - FDMultiplexer::EventKind
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 121
    functionDepth: 0
    functionLinenumber: 121
    functionLinenumberEnd: 140
    functionName: KqueueFDMultiplexer::removeFD
    functionSourceFile: /src/pdns/pdns/recursordist/kqueuemplexer.cc
    functionUses: 0
    functionsReached:
    - stringerror
    - convertEventKind
    - kevent
    - FDMultiplexerException
    - EV_SET
    linkageType: ''
    returnType: void
    signature: void KqueueFDMultiplexer::removeFD(int fd, FDMultiplexer::EventKind
      kind)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: kevent
      Src: /src/pdns/pdns/recursordist/kqueuemplexer.cc:148,1
    - Dst: data
      Src: /src/pdns/pdns/recursordist/kqueuemplexer.cc:148,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/kqueuemplexer.cc:148,1
    - Dst: FDMultiplexerException
      Src: /src/pdns/pdns/recursordist/kqueuemplexer.cc:151,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/kqueuemplexer.cc:151,1
    - Dst: std::unordered_set::reserve
      Src: /src/pdns/pdns/recursordist/kqueuemplexer.cc:157,1
    - Dst: std::unordered_set::insert
      Src: /src/pdns/pdns/recursordist/kqueuemplexer.cc:159,1
    - Dst: push_back
      Src: /src/pdns/pdns/recursordist/kqueuemplexer.cc:163,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 2
    argNames:
    - ' fds'
    - timeout
    argTypes:
    - std::vector<int>
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 165
      start: 142
    functionDepth: 2
    functionLinenumber: 142
    functionLinenumberEnd: 165
    functionName: KqueueFDMultiplexer::getAvailableFDs
    functionSourceFile: /src/pdns/pdns/recursordist/kqueuemplexer.cc
    functionUses: 0
    functionsReached:
    - push_back
    - stringerror
    - std::unordered_set::reserve
    - std::unordered_set::insert
    - size
    - data
    - kevent
    - FDMultiplexerException
    linkageType: ''
    returnType: void
    signature: void KqueueFDMultiplexer::getAvailableFDs(std::vector<int>& fds, int
      timeout)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: kevent
      Src: /src/pdns/pdns/recursordist/kqueuemplexer.cc:175,1
    - Dst: data
      Src: /src/pdns/pdns/recursordist/kqueuemplexer.cc:175,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/kqueuemplexer.cc:175,1
    - Dst: gettimeofday
      Src: /src/pdns/pdns/recursordist/kqueuemplexer.cc:176,1
    - Dst: FDMultiplexerException
      Src: /src/pdns/pdns/recursordist/kqueuemplexer.cc:179,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/kqueuemplexer.cc:179,1
    - Dst: find
      Src: /src/pdns/pdns/recursordist/kqueuemplexer.cc:189,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/kqueuemplexer.cc:190,1
    - Dst: d_callback
      Src: /src/pdns/pdns/recursordist/kqueuemplexer.cc:191,1
    - Dst: find
      Src: /src/pdns/pdns/recursordist/kqueuemplexer.cc:196,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/kqueuemplexer.cc:197,1
    - Dst: d_callback
      Src: /src/pdns/pdns/recursordist/kqueuemplexer.cc:198,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 23
    argCount: 2
    argNames:
    - now
    - timeout
    argTypes:
    - struct timeval*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 204
      start: 167
    functionDepth: 0
    functionLinenumber: 167
    functionLinenumberEnd: 204
    functionName: KqueueFDMultiplexer::run
    functionSourceFile: /src/pdns/pdns/recursordist/kqueuemplexer.cc
    functionUses: 2
    functionsReached:
    - stringerror
    - end
    - size
    - d_callback
    - gettimeofday
    - data
    - kevent
    - FDMultiplexerException
    - find
    linkageType: ''
    returnType: int
    signature: int KqueueFDMultiplexer::run(struct timeval* now, int timeout)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: boost::any_cast<Socket*>
      Src: /src/pdns/pdns/recursordist/kqueuemplexer.cc:210,1
    - Dst: Socket*::recvFrom
      Src: /src/pdns/pdns/recursordist/kqueuemplexer.cc:213,1
    - Dst: string::size
      Src: /src/pdns/pdns/recursordist/kqueuemplexer.cc:214,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - fd
    - ' parameter'
    argTypes:
    - int
    - boost::any
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 215
      start: 207
    functionDepth: 0
    functionLinenumber: 207
    functionLinenumberEnd: 215
    functionName: acceptData
    functionSourceFile: /src/pdns/pdns/recursordist/kqueuemplexer.cc
    functionUses: 0
    functionsReached:
    - string::size
    - boost::any_cast<Socket*>
    - Socket*::recvFrom
    linkageType: ''
    returnType: void
    signature: void acceptData(int fd, boost::any& parameter)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Socket::bind
      Src: /src/pdns/pdns/recursordist/kqueuemplexer.cc:222,1
    - Dst: KqueueFDMultiplexer::KqueueFDMultiplexer
      Src: /src/pdns/pdns/recursordist/kqueuemplexer.cc:224,1
    - Dst: KqueueFDMultiplexer::addReadFD
      Src: /src/pdns/pdns/recursordist/kqueuemplexer.cc:226,1
    - Dst: Socket::getHandle
      Src: /src/pdns/pdns/recursordist/kqueuemplexer.cc:226,1
    - Dst: KqueueFDMultiplexer::run
      Src: /src/pdns/pdns/recursordist/kqueuemplexer.cc:229,1
    - Dst: KqueueFDMultiplexer::removeReadFD
      Src: /src/pdns/pdns/recursordist/kqueuemplexer.cc:231,1
    - Dst: Socket::getHandle
      Src: /src/pdns/pdns/recursordist/kqueuemplexer.cc:231,1
    - Dst: KqueueFDMultiplexer::removeReadFD
      Src: /src/pdns/pdns/recursordist/kqueuemplexer.cc:232,1
    - Dst: Socket::getHandle
      Src: /src/pdns/pdns/recursordist/kqueuemplexer.cc:232,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 233
      start: 217
    functionDepth: 0
    functionLinenumber: 217
    functionLinenumberEnd: 233
    functionName: main
    functionSourceFile: /src/pdns/pdns/recursordist/kqueuemplexer.cc
    functionUses: 51
    functionsReached:
    - Socket::getHandle
    - KqueueFDMultiplexer::KqueueFDMultiplexer
    - KqueueFDMultiplexer::removeReadFD
    - KqueueFDMultiplexer::addReadFD
    - Socket::bind
    - KqueueFDMultiplexer::run
    linkageType: ''
    returnType: int
    signature: int main()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 32
      start: 32
    functionDepth: 0
    functionLinenumber: 32
    functionLinenumberEnd: 32
    functionName: PDNSException::PDNSException
    functionSourceFile: /src/pdns/pdns/recursordist/pdnsexception.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void PDNSException()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/pdnsexception.hh:34,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - r
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 34
      start: 33
    functionDepth: 0
    functionLinenumber: 33
    functionLinenumberEnd: 34
    functionName: PDNSException::PDNSException
    functionSourceFile: /src/pdns/pdns/recursordist/pdnsexception.hh
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void PDNSException(string r)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 42
    functionDepth: 0
    functionLinenumber: 42
    functionLinenumberEnd: 42
    functionName: TimeoutException::TimeoutException
    functionSourceFile: /src/pdns/pdns/recursordist/pdnsexception.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void TimeoutException()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' r'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 43
    functionName: TimeoutException::TimeoutException
    functionSourceFile: /src/pdns/pdns/recursordist/pdnsexception.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void TimeoutException(const string& r)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/rec-tcpout.hh:50,1
    - Dst: getDescriptor
      Src: /src/pdns/pdns/recursordist/rec-tcpout.hh:50,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/rec-tcpout.hh:50,1
    - Dst: use_count
      Src: /src/pdns/pdns/recursordist/rec-tcpout.hh:50,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 47
    functionDepth: 0
    functionLinenumber: 47
    functionLinenumberEnd: 53
    functionName: TCPOutConnectionManager::toString
    functionSourceFile: /src/pdns/pdns/recursordist/rec-tcpout.hh
    functionUses: 0
    functionsReached:
    - use_count
    - std::to_string
    - getDescriptor
    linkageType: ''
    returnType: std::string
    signature: std::string toString() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TCPOutConnectionManager::size
      Src: /src/pdns/pdns/recursordist/rec-tcpout.hh:70,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 68
    functionDepth: 0
    functionLinenumber: 68
    functionLinenumberEnd: 71
    functionName: TCPOutConnectionManager::size
    functionSourceFile: /src/pdns/pdns/recursordist/rec-tcpout.hh
    functionUses: 1
    functionsReached:
    - TCPOutConnectionManager::size
    linkageType: ''
    returnType: size_t
    signature: size_t size() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TCPOutConnectionManager::size
      Src: /src/pdns/pdns/recursordist/rec-tcpout.hh:74,1
    - Dst: uint64_t::uint64_t
      Src: /src/pdns/pdns/recursordist/rec-tcpout.hh:74,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 72
    functionDepth: 0
    functionLinenumber: 72
    functionLinenumberEnd: 75
    functionName: TCPOutConnectionManager::getSize
    functionSourceFile: /src/pdns/pdns/recursordist/rec-tcpout.hh
    functionUses: 0
    functionsReached:
    - uint64_t::uint64_t
    - TCPOutConnectionManager::size
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t * getSize() const
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: isdigit
      Src: /src/pdns/pdns/recursordist/sillyrecords.cc:31,1
    - Dst: isdigit
      Src: /src/pdns/pdns/recursordist/sillyrecords.cc:36,1
    - Dst: isdigit
      Src: /src/pdns/pdns/recursordist/sillyrecords.cc:38,1
    - Dst: std::min
      Src: /src/pdns/pdns/recursordist/sillyrecords.cc:50,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 22
    argCount: 1
    argNames:
    - strptr
    argTypes:
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 21
    functionDepth: 0
    functionLinenumber: 21
    functionLinenumberEnd: 57
    functionName: precsize_aton
    functionSourceFile: /src/pdns/pdns/recursordist/sillyrecords.cc
    functionUses: 1
    functionsReached:
    - std::min
    - isdigit
    linkageType: ''
    returnType: uint8_t
    signature: uint8_t precsize_aton(const char **strptr)
  - BBCount: 26
    BranchProfiles: []
    Callsites:
    - Dst: isdigit
      Src: /src/pdns/pdns/recursordist/sillyrecords.cc:70,1
    - Dst: isspace
      Src: /src/pdns/pdns/recursordist/sillyrecords.cc:73,1
    - Dst: isdigit
      Src: /src/pdns/pdns/recursordist/sillyrecords.cc:76,1
    - Dst: isdigit
      Src: /src/pdns/pdns/recursordist/sillyrecords.cc:79,1
    - Dst: isspace
      Src: /src/pdns/pdns/recursordist/sillyrecords.cc:82,1
    - Dst: isdigit
      Src: /src/pdns/pdns/recursordist/sillyrecords.cc:85,1
    - Dst: isdigit
      Src: /src/pdns/pdns/recursordist/sillyrecords.cc:88,1
    - Dst: isdigit
      Src: /src/pdns/pdns/recursordist/sillyrecords.cc:93,1
    - Dst: isdigit
      Src: /src/pdns/pdns/recursordist/sillyrecords.cc:95,1
    - Dst: isdigit
      Src: /src/pdns/pdns/recursordist/sillyrecords.cc:97,1
    - Dst: isspace
      Src: /src/pdns/pdns/recursordist/sillyrecords.cc:104,1
    - Dst: isspace
      Src: /src/pdns/pdns/recursordist/sillyrecords.cc:107,1
    - Dst: isspace
      Src: /src/pdns/pdns/recursordist/sillyrecords.cc:148,1
    - Dst: isspace
      Src: /src/pdns/pdns/recursordist/sillyrecords.cc:151,1
    CyclomaticComplexity: 29
    EdgeCount: 29
    ICount: 79
    argCount: 2
    argNames:
    - latlonstrptr
    - which
    argTypes:
    - char**
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 157
      start: 61
    functionDepth: 0
    functionLinenumber: 61
    functionLinenumberEnd: 157
    functionName: latlon2ul
    functionSourceFile: /src/pdns/pdns/recursordist/sillyrecords.cc
    functionUses: 1
    functionsReached:
    - isdigit
    - isspace
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t latlon2ul(const char **latlonstrptr, int *which)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: regist
      Src: /src/pdns/pdns/recursordist/sillyrecords.cc:161,1
    - Dst: regist
      Src: /src/pdns/pdns/recursordist/sillyrecords.cc:162,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 163
      start: 159
    functionDepth: 0
    functionLinenumber: 159
    functionLinenumberEnd: 163
    functionName: LOCRecordContent::report
    functionSourceFile: /src/pdns/pdns/recursordist/sillyrecords.cc
    functionUses: 2
    functionsReached:
    - regist
    linkageType: ''
    returnType: void
    signature: void LOCRecordContent::report(const ReportIsOnlyCallableByReportAllTypes&
      /* unused */)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<LOCRecordContent>
      Src: /src/pdns/pdns/recursordist/sillyrecords.cc:167,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' content'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 168
      start: 165
    functionDepth: 0
    functionLinenumber: 165
    functionLinenumberEnd: 168
    functionName: LOCRecordContent::make
    functionSourceFile: /src/pdns/pdns/recursordist/sillyrecords.cc
    functionUses: 0
    functionsReached:
    - std::make_shared<LOCRecordContent>
    linkageType: ''
    returnType: std::shared_ptr<DNSRecordContent>
    signature: std::shared_ptr<DNSRecordContent> LOCRecordContent::make(const string&
      content)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: xfr8BitInt
      Src: /src/pdns/pdns/recursordist/sillyrecords.cc:173,1
    - Dst: xfr8BitInt
      Src: /src/pdns/pdns/recursordist/sillyrecords.cc:174,1
    - Dst: xfr8BitInt
      Src: /src/pdns/pdns/recursordist/sillyrecords.cc:175,1
    - Dst: xfr8BitInt
      Src: /src/pdns/pdns/recursordist/sillyrecords.cc:176,1
    - Dst: xfr32BitInt
      Src: /src/pdns/pdns/recursordist/sillyrecords.cc:178,1
    - Dst: xfr32BitInt
      Src: /src/pdns/pdns/recursordist/sillyrecords.cc:179,1
    - Dst: xfr32BitInt
      Src: /src/pdns/pdns/recursordist/sillyrecords.cc:180,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - ' pw'
    argTypes:
    - DNSPacketWriter
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 181
      start: 171
    functionDepth: 0
    functionLinenumber: 171
    functionLinenumberEnd: 181
    functionName: LOCRecordContent::toPacket
    functionSourceFile: /src/pdns/pdns/recursordist/sillyrecords.cc
    functionUses: 0
    functionsReached:
    - xfr32BitInt
    - xfr8BitInt
    linkageType: ''
    returnType: void
    signature: void LOCRecordContent::toPacket(DNSPacketWriter& pw) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<LOCRecordContent>
      Src: /src/pdns/pdns/recursordist/sillyrecords.cc:185,1
    - Dst: xfr8BitInt
      Src: /src/pdns/pdns/recursordist/sillyrecords.cc:186,1
    - Dst: xfr8BitInt
      Src: /src/pdns/pdns/recursordist/sillyrecords.cc:187,1
    - Dst: xfr8BitInt
      Src: /src/pdns/pdns/recursordist/sillyrecords.cc:188,1
    - Dst: xfr8BitInt
      Src: /src/pdns/pdns/recursordist/sillyrecords.cc:189,1
    - Dst: xfr32BitInt
      Src: /src/pdns/pdns/recursordist/sillyrecords.cc:191,1
    - Dst: xfr32BitInt
      Src: /src/pdns/pdns/recursordist/sillyrecords.cc:192,1
    - Dst: xfr32BitInt
      Src: /src/pdns/pdns/recursordist/sillyrecords.cc:193,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 1
    argNames:
    - ' pr'
    argTypes:
    - PacketReader
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 196
      start: 183
    functionDepth: 0
    functionLinenumber: 183
    functionLinenumberEnd: 196
    functionName: LOCRecordContent::make
    functionSourceFile: /src/pdns/pdns/recursordist/sillyrecords.cc
    functionUses: 0
    functionsReached:
    - xfr32BitInt
    - xfr8BitInt
    - std::make_shared<LOCRecordContent>
    linkageType: ''
    returnType: std::shared_ptr<LOCRecordContent::DNSRecordContent>
    signature: std::shared_ptr<LOCRecordContent::DNSRecordContent> LOCRecordContent::make(const
      DNSRecord& /* dr */, PacketReader& pr)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/sillyrecords.cc:213,1
    - Dst: strlen
      Src: /src/pdns/pdns/recursordist/sillyrecords.cc:214,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/sillyrecords.cc:214,1
    - Dst: latlon2ul
      Src: /src/pdns/pdns/recursordist/sillyrecords.cc:216,1
    - Dst: latlon2ul
      Src: /src/pdns/pdns/recursordist/sillyrecords.cc:217,1
    - Dst: MOADNSException
      Src: /src/pdns/pdns/recursordist/sillyrecords.cc:232,1
    - Dst: isdigit
      Src: /src/pdns/pdns/recursordist/sillyrecords.cc:244,1
    - Dst: isdigit
      Src: /src/pdns/pdns/recursordist/sillyrecords.cc:249,1
    - Dst: isdigit
      Src: /src/pdns/pdns/recursordist/sillyrecords.cc:251,1
    - Dst: isspace
      Src: /src/pdns/pdns/recursordist/sillyrecords.cc:259,1
    - Dst: isspace
      Src: /src/pdns/pdns/recursordist/sillyrecords.cc:263,1
    - Dst: precsize_aton
      Src: /src/pdns/pdns/recursordist/sillyrecords.cc:270,1
    - Dst: isspace
      Src: /src/pdns/pdns/recursordist/sillyrecords.cc:272,1
    - Dst: isspace
      Src: /src/pdns/pdns/recursordist/sillyrecords.cc:275,1
    - Dst: precsize_aton
      Src: /src/pdns/pdns/recursordist/sillyrecords.cc:281,1
    - Dst: isspace
      Src: /src/pdns/pdns/recursordist/sillyrecords.cc:283,1
    - Dst: isspace
      Src: /src/pdns/pdns/recursordist/sillyrecords.cc:286,1
    - Dst: precsize_aton
      Src: /src/pdns/pdns/recursordist/sillyrecords.cc:292,1
    CyclomaticComplexity: 31
    EdgeCount: 31
    ICount: 70
    argCount: 1
    argNames:
    - ' content'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 296
      start: 198
    functionDepth: 0
    functionLinenumber: 198
    functionLinenumberEnd: 296
    functionName: LOCRecordContent::LOCRecordContent
    functionSourceFile: /src/pdns/pdns/recursordist/sillyrecords.cc
    functionUses: 0
    functionsReached:
    - latlon2ul
    - isdigit
    - precsize_aton
    - isspace
    - strlen
    - c_str
    - MOADNSException
    linkageType: ''
    returnType: void
    signature: void LOCRecordContent::LOCRecordContent(const string& content, const
      string& /* zone */)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: sqlstr
      Src: /src/pdns/pdns/recursordist/sillyrecords.cc:354,1
    - Dst: boost::format
      Src: /src/pdns/pdns/recursordist/sillyrecords.cc:355,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 26
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 363
      start: 299
    functionDepth: 1
    functionLinenumber: 299
    functionLinenumberEnd: 363
    functionName: LOCRecordContent::getZoneRepresentation
    functionSourceFile: /src/pdns/pdns/recursordist/sillyrecords.cc
    functionUses: 0
    functionsReached:
    - sqlstr
    - boost::format
    linkageType: ''
    returnType: string
    signature: string LOCRecordContent::getZoneRepresentation(bool /* noDot */) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: setNonBlocking
      Src: /src/pdns/pdns/recursordist/ws-recursor.hh:42,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' localaddress'
    - port
    argTypes:
    - string
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 39
    functionDepth: 0
    functionLinenumber: 39
    functionLinenumberEnd: 43
    functionName: AsyncServer::AsyncServer
    functionSourceFile: /src/pdns/pdns/recursordist/ws-recursor.hh
    functionUses: 0
    functionsReached:
    - setNonBlocking
    linkageType: ''
    returnType: void
    signature: void AsyncServer(const string& localaddress, int port)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 3
    argNames:
    - fdm
    - ' listenaddress'
    - port
    argTypes:
    - FDMultiplexer*
    - string
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 59
    functionDepth: 0
    functionLinenumber: 59
    functionLinenumberEnd: 60
    functionName: AsyncWebServer::AsyncWebServer
    functionSourceFile: /src/pdns/pdns/recursordist/ws-recursor.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void AsyncWebServer(FDMultiplexer* fdm, const string& listenaddress,
      int port)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<AsyncServer>
      Src: /src/pdns/pdns/recursordist/ws-recursor.hh:70,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 68
    functionDepth: 0
    functionLinenumber: 68
    functionLinenumberEnd: 71
    functionName: AsyncWebServer::createServer
    functionSourceFile: /src/pdns/pdns/recursordist/ws-recursor.hh
    functionUses: 0
    functionsReached:
    - std::make_shared<AsyncServer>
    linkageType: ''
    returnType: std::shared_ptr<Server>
    signature: std::shared_ptr<Server> createServer() override
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mkstemp
      Src: /src/pdns/pdns/recursordist/test-rec-zonetocache.cc:66,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/recursordist/test-rec-zonetocache.cc:67,1
    - Dst: fdopen
      Src: /src/pdns/pdns/recursordist/test-rec-zonetocache.cc:68,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/recursordist/test-rec-zonetocache.cc:69,1
    - Dst: fwrite
      Src: /src/pdns/pdns/recursordist/test-rec-zonetocache.cc:70,1
    - Dst: data
      Src: /src/pdns/pdns/recursordist/test-rec-zonetocache.cc:70,1
    - Dst: length
      Src: /src/pdns/pdns/recursordist/test-rec-zonetocache.cc:70,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/recursordist/test-rec-zonetocache.cc:71,1
    - Dst: length
      Src: /src/pdns/pdns/recursordist/test-rec-zonetocache.cc:71,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/recursordist/test-rec-zonetocache.cc:72,1
    - Dst: fclose
      Src: /src/pdns/pdns/recursordist/test-rec-zonetocache.cc:72,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-rec-zonetocache.cc:74,1
    - Dst: TSIGTriplet
      Src: /src/pdns/pdns/recursordist/test-rec-zonetocache.cc:74,1
    - Dst: std::make_unique<MemRecursorCache>
      Src: /src/pdns/pdns/recursordist/test-rec-zonetocache.cc:81,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-rec-zonetocache.cc:82,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/test-rec-zonetocache.cc:82,1
    - Dst: RecZoneToCache::ZoneToCache
      Src: /src/pdns/pdns/recursordist/test-rec-zonetocache.cc:84,1
    - Dst: unlink
      Src: /src/pdns/pdns/recursordist/test-rec-zonetocache.cc:85,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-rec-zonetocache.cc:87,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/test-rec-zonetocache.cc:87,1
    - Dst: time
      Src: /src/pdns/pdns/recursordist/test-rec-zonetocache.cc:91,1
    - Dst: BOOST_CHECK_GT
      Src: /src/pdns/pdns/recursordist/test-rec-zonetocache.cc:93,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/test-rec-zonetocache.cc:93,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-rec-zonetocache.cc:93,1
    - Dst: BOOST_CHECK_LT
      Src: /src/pdns/pdns/recursordist/test-rec-zonetocache.cc:95,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/test-rec-zonetocache.cc:95,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-rec-zonetocache.cc:95,1
    - Dst: BOOST_CHECK_GT
      Src: /src/pdns/pdns/recursordist/test-rec-zonetocache.cc:97,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/test-rec-zonetocache.cc:97,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-rec-zonetocache.cc:97,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 19
    argCount: 4
    argNames:
    - ' lines'
    - mode
    - dnssec
    - expectedCacheSize
    argTypes:
    - std::string
    - pdns::ZoneMD::Config
    - pdns::ZoneMD::Config
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 63
    functionDepth: 1
    functionLinenumber: 63
    functionLinenumberEnd: 99
    functionName: zonemdTest
    functionSourceFile: /src/pdns/pdns/recursordist/test-rec-zonetocache.cc
    functionUses: 0
    functionsReached:
    - TSIGTriplet
    - RecZoneToCache::ZoneToCache
    - time
    - size
    - fwrite
    - BOOST_REQUIRE
    - mkstemp
    - BOOST_CHECK_GT
    - BOOST_CHECK_LT
    - DNSName
    - get
    - fdopen
    - ComboAddress
    - length
    - fclose
    - std::make_unique<MemRecursorCache>
    - BOOST_CHECK_EQUAL
    - unlink
    - data
    linkageType: ''
    returnType: void
    signature: void zonemdTest(const std::string& lines, pdns::ZoneMD::Config mode,
      pdns::ZoneMD::Config dnssec, size_t expectedCacheSize)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-rec-zonetocache.cc:104,1
    - Dst: setLoglevel
      Src: /src/pdns/pdns/recursordist/test-rec-zonetocache.cc:105,1
    - Dst: toConsole
      Src: /src/pdns/pdns/recursordist/test-rec-zonetocache.cc:106,1
    - Dst: setDNSSECValidation
      Src: /src/pdns/pdns/recursordist/test-rec-zonetocache.cc:107,1
    - Dst: zonemdTest
      Src: /src/pdns/pdns/recursordist/test-rec-zonetocache.cc:109,1
    - Dst: zonemdTest
      Src: /src/pdns/pdns/recursordist/test-rec-zonetocache.cc:110,1
    - Dst: zonemdTest
      Src: /src/pdns/pdns/recursordist/test-rec-zonetocache.cc:111,1
    - Dst: zonemdTest
      Src: /src/pdns/pdns/recursordist/test-rec-zonetocache.cc:112,1
    - Dst: zonemdTest
      Src: /src/pdns/pdns/recursordist/test-rec-zonetocache.cc:114,1
    - Dst: zonemdTest
      Src: /src/pdns/pdns/recursordist/test-rec-zonetocache.cc:115,1
    - Dst: zonemdTest
      Src: /src/pdns/pdns/recursordist/test-rec-zonetocache.cc:116,1
    - Dst: zonemdTest
      Src: /src/pdns/pdns/recursordist/test-rec-zonetocache.cc:117,1
    - Dst: zonemdTest
      Src: /src/pdns/pdns/recursordist/test-rec-zonetocache.cc:119,1
    - Dst: zonemdTest
      Src: /src/pdns/pdns/recursordist/test-rec-zonetocache.cc:120,1
    - Dst: zonemdTest
      Src: /src/pdns/pdns/recursordist/test-rec-zonetocache.cc:121,1
    - Dst: zonemdTest
      Src: /src/pdns/pdns/recursordist/test-rec-zonetocache.cc:122,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 101
    functionDepth: 2
    functionLinenumber: 101
    functionLinenumberEnd: 123
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-rec-zonetocache.cc
    functionUses: 0
    functionsReached:
    - setLoglevel
    - toConsole
    - initSR
    - setDNSSECValidation
    - zonemdTest
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_zonetocache)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mkstemp
      Src: /src/pdns/pdns/recursordist/test-rec-zonetocache.cc:139,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/recursordist/test-rec-zonetocache.cc:140,1
    - Dst: fdopen
      Src: /src/pdns/pdns/recursordist/test-rec-zonetocache.cc:141,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/recursordist/test-rec-zonetocache.cc:142,1
    - Dst: fwrite
      Src: /src/pdns/pdns/recursordist/test-rec-zonetocache.cc:143,1
    - Dst: data
      Src: /src/pdns/pdns/recursordist/test-rec-zonetocache.cc:143,1
    - Dst: length
      Src: /src/pdns/pdns/recursordist/test-rec-zonetocache.cc:143,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/recursordist/test-rec-zonetocache.cc:144,1
    - Dst: length
      Src: /src/pdns/pdns/recursordist/test-rec-zonetocache.cc:144,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/recursordist/test-rec-zonetocache.cc:145,1
    - Dst: fclose
      Src: /src/pdns/pdns/recursordist/test-rec-zonetocache.cc:145,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-rec-zonetocache.cc:147,1
    - Dst: TSIGTriplet
      Src: /src/pdns/pdns/recursordist/test-rec-zonetocache.cc:147,1
    - Dst: std::make_unique<MemRecursorCache>
      Src: /src/pdns/pdns/recursordist/test-rec-zonetocache.cc:154,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-rec-zonetocache.cc:155,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/test-rec-zonetocache.cc:155,1
    - Dst: RecZoneToCache::ZoneToCache
      Src: /src/pdns/pdns/recursordist/test-rec-zonetocache.cc:157,1
    - Dst: unlink
      Src: /src/pdns/pdns/recursordist/test-rec-zonetocache.cc:158,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-rec-zonetocache.cc:160,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/test-rec-zonetocache.cc:160,1
    - Dst: time
      Src: /src/pdns/pdns/recursordist/test-rec-zonetocache.cc:164,1
    - Dst: BOOST_CHECK_GT
      Src: /src/pdns/pdns/recursordist/test-rec-zonetocache.cc:166,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/test-rec-zonetocache.cc:166,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-rec-zonetocache.cc:166,1
    - Dst: BOOST_CHECK_GT
      Src: /src/pdns/pdns/recursordist/test-rec-zonetocache.cc:167,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/test-rec-zonetocache.cc:167,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-rec-zonetocache.cc:167,1
    - Dst: BOOST_CHECK_GT
      Src: /src/pdns/pdns/recursordist/test-rec-zonetocache.cc:168,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/test-rec-zonetocache.cc:168,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-rec-zonetocache.cc:168,1
    - Dst: BOOST_CHECK_GT
      Src: /src/pdns/pdns/recursordist/test-rec-zonetocache.cc:169,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/test-rec-zonetocache.cc:169,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-rec-zonetocache.cc:169,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 20
    argCount: 4
    argNames:
    - ' lines'
    - mode
    - dnssec
    - expectedCacheSize
    argTypes:
    - std::string
    - pdns::ZoneMD::Config
    - pdns::ZoneMD::Config
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 171
      start: 136
    functionDepth: 1
    functionLinenumber: 136
    functionLinenumberEnd: 171
    functionName: zonemdGenericTest
    functionSourceFile: /src/pdns/pdns/recursordist/test-rec-zonetocache.cc
    functionUses: 0
    functionsReached:
    - mkstemp
    - length
    - BOOST_CHECK_GT
    - time
    - fclose
    - std::make_unique<MemRecursorCache>
    - BOOST_CHECK_EQUAL
    - size
    - get
    - DNSName
    - unlink
    - TSIGTriplet
    - fwrite
    - BOOST_REQUIRE
    - data
    - fdopen
    - RecZoneToCache::ZoneToCache
    - ComboAddress
    linkageType: ''
    returnType: void
    signature: void zonemdGenericTest(const std::string& lines, pdns::ZoneMD::Config
      mode, pdns::ZoneMD::Config dnssec, size_t expectedCacheSize)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SyncRes::setDomainMap
      Src: /src/pdns/pdns/recursordist/test-rec-zonetocache.cc:175,1
    - Dst: std::make_shared<SyncRes::domainmap_t>
      Src: /src/pdns/pdns/recursordist/test-rec-zonetocache.cc:175,1
    - Dst: setLoglevel
      Src: /src/pdns/pdns/recursordist/test-rec-zonetocache.cc:176,1
    - Dst: toConsole
      Src: /src/pdns/pdns/recursordist/test-rec-zonetocache.cc:177,1
    - Dst: zonemdGenericTest
      Src: /src/pdns/pdns/recursordist/test-rec-zonetocache.cc:178,1
    - Dst: zonemdGenericTest
      Src: /src/pdns/pdns/recursordist/test-rec-zonetocache.cc:179,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 180
      start: 173
    functionDepth: 2
    functionLinenumber: 173
    functionLinenumberEnd: 180
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-rec-zonetocache.cc
    functionUses: 0
    functionsReached:
    - setLoglevel
    - zonemdGenericTest
    - toConsole
    - SyncRes::setDomainMap
    - std::make_shared<SyncRes::domainmap_t>
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_zonetocachegeneric)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/recursordist/remote_logger.cc:39,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/remote_logger.cc:39,1
    - Dst: capacity
      Src: /src/pdns/pdns/recursordist/remote_logger.cc:39,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' str'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 37
    functionDepth: 0
    functionLinenumber: 37
    functionLinenumberEnd: 40
    functionName: CircularWriteBuffer::hasRoomFor
    functionSourceFile: /src/pdns/pdns/recursordist/remote_logger.cc
    functionUses: 2
    functionsReached:
    - capacity
    - size
    linkageType: ''
    returnType: bool
    signature: bool CircularWriteBuffer::hasRoomFor(const std::string& str) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/recursordist/remote_logger.cc:44,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/recursordist/remote_logger.cc:44,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/recursordist/remote_logger.cc:44,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' str'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 42
    functionDepth: 0
    functionLinenumber: 42
    functionLinenumberEnd: 45
    functionName: CircularWriteBuffer::tooBig
    functionSourceFile: /src/pdns/pdns/recursordist/remote_logger.cc
    functionUses: 2
    functionsReached:
    - pdns::max
    - size
    linkageType: ''
    returnType: bool
    signature: bool CircularWriteBuffer::tooBig(const std::string& str) const
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: CircularWriteBuffer::tooBig
      Src: /src/pdns/pdns/recursordist/remote_logger.cc:49,1
    - Dst: CircularWriteBuffer::hasRoomFor
      Src: /src/pdns/pdns/recursordist/remote_logger.cc:49,1
    - Dst: htons
      Src: /src/pdns/pdns/recursordist/remote_logger.cc:54,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/remote_logger.cc:54,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/recursordist/remote_logger.cc:55,1
    - Dst: insert
      Src: /src/pdns/pdns/recursordist/remote_logger.cc:56,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/remote_logger.cc:56,1
    - Dst: htonl
      Src: /src/pdns/pdns/recursordist/remote_logger.cc:59,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/remote_logger.cc:59,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/recursordist/remote_logger.cc:60,1
    - Dst: insert
      Src: /src/pdns/pdns/recursordist/remote_logger.cc:61,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/remote_logger.cc:61,1
    - Dst: insert
      Src: /src/pdns/pdns/recursordist/remote_logger.cc:63,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/remote_logger.cc:63,1
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/remote_logger.cc:63,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/remote_logger.cc:63,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - ' str'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 47
    functionDepth: 2
    functionLinenumber: 47
    functionLinenumberEnd: 65
    functionName: CircularWriteBuffer::write
    functionSourceFile: /src/pdns/pdns/recursordist/remote_logger.cc
    functionUses: 0
    functionsReached:
    - htonl
    - CircularWriteBuffer::tooBig
    - end
    - size
    - reinterpret_cast<const char*>
    - insert
    - begin
    - CircularWriteBuffer::hasRoomFor
    - htons
    linkageType: ''
    returnType: bool
    signature: bool CircularWriteBuffer::write(const std::string& str)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/remote_logger.cc:69,1
    - Dst: array_one
      Src: /src/pdns/pdns/recursordist/remote_logger.cc:74,1
    - Dst: array_two
      Src: /src/pdns/pdns/recursordist/remote_logger.cc:75,1
    - Dst: std::array::at
      Src: /src/pdns/pdns/recursordist/remote_logger.cc:81,1
    - Dst: std::array::at
      Src: /src/pdns/pdns/recursordist/remote_logger.cc:82,1
    - Dst: Utility::writev
      Src: /src/pdns/pdns/recursordist/remote_logger.cc:89,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/recursordist/remote_logger.cc:89,1
    - Dst: clear
      Src: /src/pdns/pdns/recursordist/remote_logger.cc:102,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/remote_logger.cc:103,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/remote_logger.cc:103,1
    - Dst: clear
      Src: /src/pdns/pdns/recursordist/remote_logger.cc:108,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/remote_logger.cc:109,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/recursordist/remote_logger.cc:113,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/remote_logger.cc:113,1
    - Dst: clear
      Src: /src/pdns/pdns/recursordist/remote_logger.cc:114,1
    - Dst: pop_front
      Src: /src/pdns/pdns/recursordist/remote_logger.cc:118,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 35
    argCount: 1
    argNames:
    - fileDesc
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 67
    functionDepth: 1
    functionLinenumber: 67
    functionLinenumberEnd: 123
    functionName: CircularWriteBuffer::flush
    functionSourceFile: /src/pdns/pdns/recursordist/remote_logger.cc
    functionUses: 0
    functionsReached:
    - static_cast<size_t>
    - array_one
    - std::runtime_error
    - stringerror
    - size
    - pop_front
    - std::array::data
    - clear
    - empty
    - Utility::writev
    - std::array::at
    - array_two
    linkageType: ''
    returnType: bool
    signature: bool CircularWriteBuffer::flush(int fileDesc)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<unsigned int>
      Src: /src/pdns/pdns/recursordist/remote_logger.cc:133,1
    - Dst: std::array::at
      Src: /src/pdns/pdns/recursordist/remote_logger.cc:134,1
    - Dst: std::min
      Src: /src/pdns/pdns/recursordist/remote_logger.cc:134,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - result
    argTypes:
    - Result
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 135
      start: 125
    functionDepth: 0
    functionLinenumber: 125
    functionLinenumberEnd: 135
    functionName: '& RemoteLoggerInterface::toErrorString(Result result)'
    functionSourceFile: /src/pdns/pdns/recursordist/remote_logger.cc
    functionUses: 0
    functionsReached:
    - static_cast<unsigned int>
    - std::min
    - std::array::at
    linkageType: ''
    returnType: std::string
    signature: std::string & RemoteLoggerInterface::toErrorString(Result result)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: CircularWriteBuffer
      Src: /src/pdns/pdns/recursordist/remote_logger.cc:138,1
    - Dst: RemoteLogger::reconnect
      Src: /src/pdns/pdns/recursordist/remote_logger.cc:141,1
    - Dst: std::thread
      Src: /src/pdns/pdns/recursordist/remote_logger.cc:144,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 6
    argNames:
    - ' remote'
    - timeout
    - maxQueuedBytes
    - reconnectWaitTime
    - asyncConnect
    - frame
    argTypes:
    - ComboAddress
    - uint16_t
    - uint64_t
    - uint8_t
    - bool
    - RemoteLogger::FrameSize
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 145
      start: 137
    functionDepth: 0
    functionLinenumber: 137
    functionLinenumberEnd: 145
    functionName: RemoteLogger::RemoteLogger
    functionSourceFile: /src/pdns/pdns/recursordist/remote_logger.cc
    functionUses: 1
    functionsReached:
    - RemoteLogger::reconnect
    - CircularWriteBuffer
    - std::thread
    linkageType: ''
    returnType: void
    signature: void RemoteLogger::RemoteLogger(const ComboAddress& remote, uint16_t
      timeout, uint64_t maxQueuedBytes, uint8_t reconnectWaitTime, bool asyncConnect,
      RemoteLogger::FrameSize frame)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: make_unique<Socket>
      Src: /src/pdns/pdns/recursordist/remote_logger.cc:150,1
    - Dst: auto::setNonBlocking
      Src: /src/pdns/pdns/recursordist/remote_logger.cc:151,1
    - Dst: auto::connect
      Src: /src/pdns/pdns/recursordist/remote_logger.cc:152,1
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/remote_logger.cc:157,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/remote_logger.cc:158,1
    - Dst: SLOG
      Src: /src/pdns/pdns/recursordist/remote_logger.cc:163,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/recursordist/remote_logger.cc:163,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/remote_logger.cc:163,1
    - Dst: withName
      Src: /src/pdns/pdns/recursordist/remote_logger.cc:164,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/remote_logger.cc:164,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/remote_logger.cc:164,1
    - Dst: SLOG
      Src: /src/pdns/pdns/recursordist/remote_logger.cc:166,1
    - Dst: warnlog
      Src: /src/pdns/pdns/recursordist/remote_logger.cc:166,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/recursordist/remote_logger.cc:166,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/remote_logger.cc:166,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/recursordist/remote_logger.cc:167,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/remote_logger.cc:167,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/remote_logger.cc:167,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 173
      start: 147
    functionDepth: 1
    functionLinenumber: 147
    functionLinenumberEnd: 173
    functionName: RemoteLogger::reconnect
    functionSourceFile: /src/pdns/pdns/recursordist/remote_logger.cc
    functionUses: 5
    functionsReached:
    - std::move
    - SLOG
    - Logging::Loggable
    - withName
    - what
    - auto::connect
    - warnlog
    - lock
    - make_unique<Socket>
    - auto::setNonBlocking
    - dnsdist::logging::getTopLogger
    - toStringWithPort
    linkageType: ''
    returnType: bool
    signature: bool RemoteLogger::reconnect()
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/remote_logger.cc:177,1
    - Dst: auto::d_writer::tooBig
      Src: /src/pdns/pdns/recursordist/remote_logger.cc:179,1
    - Dst: auto::d_writer::hasRoomFor
      Src: /src/pdns/pdns/recursordist/remote_logger.cc:184,1
    - Dst: auto::d_writer::flush
      Src: /src/pdns/pdns/recursordist/remote_logger.cc:192,1
    - Dst: auto::d_socket::getHandle
      Src: /src/pdns/pdns/recursordist/remote_logger.cc:192,1
    - Dst: auto::d_writer::hasRoomFor
      Src: /src/pdns/pdns/recursordist/remote_logger.cc:199,1
    - Dst: auto::d_socket::reset
      Src: /src/pdns/pdns/recursordist/remote_logger.cc:207,1
    - Dst: auto::d_writer::write
      Src: /src/pdns/pdns/recursordist/remote_logger.cc:213,1
    - Dst: auto::d_writer::flush
      Src: /src/pdns/pdns/recursordist/remote_logger.cc:217,1
    - Dst: auto::d_socket::getHandle
      Src: /src/pdns/pdns/recursordist/remote_logger.cc:217,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 31
    argCount: 1
    argNames:
    - ' data'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 222
      start: 175
    functionDepth: 2
    functionLinenumber: 175
    functionLinenumberEnd: 222
    functionName: RemoteLogger::queueData
    functionSourceFile: /src/pdns/pdns/recursordist/remote_logger.cc
    functionUses: 0
    functionsReached:
    - auto::d_writer::flush
    - auto::d_socket::getHandle
    - auto::d_writer::tooBig
    - auto::d_socket::reset
    - auto::d_writer::write
    - lock
    - auto::d_writer::hasRoomFor
    linkageType: ''
    returnType: RemoteLoggerInterface::Result
    signature: RemoteLoggerInterface::Result RemoteLogger::queueData(const std::string&
      data)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: setThreadName
      Src: /src/pdns/pdns/recursordist/remote_logger.cc:234,1
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/remote_logger.cc:242,1
    - Dst: RemoteLogger::reconnect
      Src: /src/pdns/pdns/recursordist/remote_logger.cc:244,1
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/remote_logger.cc:251,1
    - Dst: auto::d_writer::flush
      Src: /src/pdns/pdns/recursordist/remote_logger.cc:256,1
    - Dst: auto::d_socket::getHandle
      Src: /src/pdns/pdns/recursordist/remote_logger.cc:256,1
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/remote_logger.cc:263,1
    - Dst: reset
      Src: /src/pdns/pdns/recursordist/remote_logger.cc:263,1
    - Dst: RemoteLogger::reconnect
      Src: /src/pdns/pdns/recursordist/remote_logger.cc:269,1
    - Dst: std::this_thread::sleep_for
      Src: /src/pdns/pdns/recursordist/remote_logger.cc:272,1
    - Dst: std::chrono::seconds
      Src: /src/pdns/pdns/recursordist/remote_logger.cc:272,1
    - Dst: SLOG
      Src: /src/pdns/pdns/recursordist/remote_logger.cc:277,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/remote_logger.cc:277,1
    - Dst: withName
      Src: /src/pdns/pdns/recursordist/remote_logger.cc:278,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/remote_logger.cc:278,1
    - Dst: SLOG
      Src: /src/pdns/pdns/recursordist/remote_logger.cc:280,1
    - Dst: errlog
      Src: /src/pdns/pdns/recursordist/remote_logger.cc:280,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/remote_logger.cc:280,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/recursordist/remote_logger.cc:281,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/remote_logger.cc:281,1
    - Dst: SLOG
      Src: /src/pdns/pdns/recursordist/remote_logger.cc:286,1
    - Dst: withName
      Src: /src/pdns/pdns/recursordist/remote_logger.cc:287,1
    - Dst: SLOG
      Src: /src/pdns/pdns/recursordist/remote_logger.cc:289,1
    - Dst: errlog
      Src: /src/pdns/pdns/recursordist/remote_logger.cc:289,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/recursordist/remote_logger.cc:290,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 34
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 293
      start: 224
    functionDepth: 1
    functionLinenumber: 224
    functionLinenumberEnd: 293
    functionName: RemoteLogger::maintenanceThread
    functionSourceFile: /src/pdns/pdns/recursordist/remote_logger.cc
    functionUses: 0
    functionsReached:
    - std::this_thread::sleep_for
    - errlog
    - reset
    - SLOG
    - std::chrono::seconds
    - withName
    - auto::d_writer::flush
    - auto::d_socket::getHandle
    - what
    - lock
    - RemoteLogger::reconnect
    - dnsdist::logging::getTopLogger
    - setThreadName
    linkageType: ''
    returnType: void
    signature: void RemoteLogger::maintenanceThread()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: join
      Src: /src/pdns/pdns/recursordist/remote_logger.cc:299,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 300
      start: 295
    functionDepth: 0
    functionLinenumber: 295
    functionLinenumberEnd: 300
    functionName: RemoteLogger::~RemoteLogger()
    functionSourceFile: /src/pdns/pdns/recursordist/remote_logger.cc
    functionUses: 0
    functionsReached:
    - join
    linkageType: ''
    returnType: void
    signature: void RemoteLogger::~RemoteLogger()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: try_read_lock
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:44,1
    - Dst: auto::owns_lock
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:45,1
    - Dst: auto::lookup
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:49,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - ' zone'
    argTypes:
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 40
    functionDepth: 0
    functionLinenumber: 40
    functionLinenumberEnd: 55
    functionName: AggressiveNSECCache::getBestZone
    functionSourceFile: /src/pdns/pdns/recursordist/aggressive_nsec.cc
    functionUses: 0
    functionsReached:
    - auto::lookup
    - try_read_lock
    - auto::owns_lock
    linkageType: ''
    returnType: std::shared_ptr<LockGuarded<AggressiveNSECCache::ZoneEntry>>
    signature: std::shared_ptr<LockGuarded<AggressiveNSECCache::ZoneEntry>> AggressiveNSECCache::getBestZone(const
      DNSName& zone)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: read_lock
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:60,1
    - Dst: auto::lookup
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:61,1
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:63,1
    - Dst: std::make_shared<LockGuarded<ZoneEntry>>
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:70,1
    - Dst: write_lock
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:73,1
    - Dst: auto::lookup
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:75,1
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:77,1
    - Dst: auto::add
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:82,1
    - Dst: std::shared_ptr<LockGuarded<ZoneEntry>>
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:82,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 1
    argNames:
    - ' zone'
    argTypes:
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 57
    functionDepth: 0
    functionLinenumber: 57
    functionLinenumberEnd: 85
    functionName: AggressiveNSECCache::getZone
    functionSourceFile: /src/pdns/pdns/recursordist/aggressive_nsec.cc
    functionUses: 0
    functionsReached:
    - auto::lookup
    - read_lock
    - std::shared_ptr<LockGuarded<ZoneEntry>>
    - lock
    - std::make_shared<LockGuarded<ZoneEntry>>
    - write_lock
    - auto::add
    linkageType: ''
    returnType: std::shared_ptr<LockGuarded<AggressiveNSECCache::ZoneEntry>>
    signature: std::shared_ptr<LockGuarded<AggressiveNSECCache::ZoneEntry>> AggressiveNSECCache::getZone(const
      DNSName& zone)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: visit
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:90,1
    - Dst: d_value::lock
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:92,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:92,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - ' zones'
    argTypes:
    - SuffixMatchTree<std::shared_ptr<LockGuarded<ZoneEntry>>>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 87
    functionDepth: 0
    functionLinenumber: 87
    functionLinenumberEnd: 96
    functionName: AggressiveNSECCache::updateEntriesCount
    functionSourceFile: /src/pdns/pdns/recursordist/aggressive_nsec.cc
    functionUses: 0
    functionsReached:
    - d_value::lock
    - visit
    - size
    linkageType: ''
    returnType: void
    signature: void AggressiveNSECCache::updateEntriesCount(SuffixMatchTree<std::shared_ptr<LockGuarded<ZoneEntry>>>&
      zones)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: write_lock
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:100,1
    - Dst: auto::remove
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:103,1
    - Dst: AggressiveNSECCache::updateEntriesCount
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:104,1
    - Dst: auto::lookup
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:107,1
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:117,1
    - Dst: auto::d_entries::size
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:121,1
    - Dst: auto::remove
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:122,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 2
    argNames:
    - ' zone'
    - subzones
    argTypes:
    - DNSName
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 98
    functionDepth: 1
    functionLinenumber: 98
    functionLinenumberEnd: 126
    functionName: AggressiveNSECCache::removeZoneInfo
    functionSourceFile: /src/pdns/pdns/recursordist/aggressive_nsec.cc
    functionUses: 0
    functionsReached:
    - auto::lookup
    - lock
    - write_lock
    - AggressiveNSECCache::updateEntriesCount
    - auto::d_entries::size
    - auto::remove
    linkageType: ''
    returnType: void
    signature: void AggressiveNSECCache::removeZoneInfo(const DNSName& zone, bool
      subzones)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: write_lock
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:134,1
    - Dst: auto::visit
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:136,1
    - Dst: d_value::lock
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:141,1
    - Dst: boost::multi_index::get<ZoneEntry::SequencedTag>
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:142,1
    - Dst: auto::d_entries::size
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:143,1
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:145,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:145,1
    - Dst: erase
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:147,1
    - Dst: auto::d_entries::empty
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:155,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:156,1
    - Dst: load
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:163,1
    - Dst: auto::visit
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:167,1
    - Dst: d_value::lock
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:171,1
    - Dst: auto::d_entries::size
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:172,1
    - Dst: boost::multi_index::get<ZoneEntry::SequencedTag>
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:173,1
    - Dst: static_cast<uint64_t>
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:174,1
    - Dst: std::round
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:174,1
    - Dst: static_cast<double>
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:174,1
    - Dst: static_cast<double>
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:174,1
    - Dst: static_cast<double>
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:174,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:176,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:176,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:176,1
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:181,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:181,1
    - Dst: erase
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:182,1
    - Dst: auto::d_entries::empty
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:189,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:190,1
    - Dst: std::vector::empty
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:197,1
    - Dst: auto::remove
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:199,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 46
    argCount: 1
    argNames:
    - now
    argTypes:
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 202
      start: 128
    functionDepth: 0
    functionLinenumber: 128
    functionLinenumberEnd: 202
    functionName: AggressiveNSECCache::prune
    functionSourceFile: /src/pdns/pdns/recursordist/aggressive_nsec.cc
    functionUses: 0
    functionsReached:
    - std::vector::push_back
    - load
    - static_cast<double>
    - std::to_string
    - auto::d_entries::empty
    - std::runtime_error
    - d_value::lock
    - erase
    - auto::visit
    - end
    - static_cast<uint64_t>
    - std::round
    - write_lock
    - begin
    - boost::multi_index::get<ZoneEntry::SequencedTag>
    - std::vector::empty
    - auto::d_entries::size
    - auto::remove
    linkageType: ''
    returnType: void
    signature: void AggressiveNSECCache::prune(time_t now)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: getStorage
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:209,1
    - Dst: d_next::getStorage
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:210,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:213,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:213,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:213,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:218,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:218,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:218,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:218,1
    - Dst: compare
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:223,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:223,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 2
    argNames:
    - ' owner'
    - ' nsec'
    argTypes:
    - DNSName
    - std::shared_ptr<const NSECRecordContent>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 228
      start: 204
    functionDepth: 0
    functionLinenumber: 204
    functionLinenumberEnd: 228
    functionName: isMinimallyCoveringNSEC
    functionSourceFile: /src/pdns/pdns/recursordist/aggressive_nsec.cc
    functionUses: 0
    functionsReached:
    - getStorage
    - size
    - static_cast<uint8_t>
    - d_next::getStorage
    - compare
    - at
    linkageType: ''
    returnType: bool
    signature: bool isMinimallyCoveringNSEC(const DNSName& owner, const std::shared_ptr<const
      NSECRecordContent>& nsec)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: std::min
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:233,1
    - Dst: length
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:233,1
    - Dst: length
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:233,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:236,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:237,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 23
    argCount: 3
    argNames:
    - ' one'
    - ' two'
    - bound
    argTypes:
    - string
    - string
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 263
      start: 230
    functionDepth: 0
    functionLinenumber: 230
    functionLinenumberEnd: 263
    functionName: commonPrefixIsLong
    functionSourceFile: /src/pdns/pdns/recursordist/aggressive_nsec.cc
    functionUses: 0
    functionsReached:
    - std::min
    - length
    - at
    linkageType: ''
    returnType: bool
    signature: bool commonPrefixIsLong(const string& one, const string& two, size_t
      bound)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: sizeEstimate
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:269,1
    - Dst: sizeEstimate
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:273,1
    - Dst: sizeEstimate
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:276,1
    - Dst: sizeEstimate
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:277,1
    - Dst: sizeEstimate
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:278,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 280
      start: 265
    functionDepth: 0
    functionLinenumber: 265
    functionLinenumberEnd: 280
    functionName: AggressiveNSECCache::ZoneEntry::CacheEntry::sizeEstimate() const
    functionSourceFile: /src/pdns/pdns/recursordist/aggressive_nsec.cc
    functionUses: 0
    functionsReached:
    - sizeEstimate
    linkageType: ''
    returnType: size_t
    signature: size_t AggressiveNSECCache::ZoneEntry::CacheEntry::sizeEstimate() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: fromBase32Hex
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:286,1
    - Dst: getRawLabel
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:286,1
    - Dst: commonPrefixIsLong
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:291,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - ' owner'
    - ' nextHash'
    argTypes:
    - DNSName
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 292
      start: 284
    functionDepth: 1
    functionLinenumber: 284
    functionLinenumberEnd: 292
    functionName: AggressiveNSECCache::isSmallCoveringNSEC3
    functionSourceFile: /src/pdns/pdns/recursordist/aggressive_nsec.cc
    functionUses: 1
    functionsReached:
    - getRawLabel
    - fromBase32Hex
    - commonPrefixIsLong
    linkageType: ''
    returnType: bool
    signature: bool AggressiveNSECCache::isSmallCoveringNSEC3(const DNSName& owner,
      const std::string& nextHash)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: AggressiveNSECCache::nsec3Disabled
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:296,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:299,1
    - Dst: AggressiveNSECCache::getZone
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:303,1
    - Dst: std::shared_ptr::lock
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:305,1
    - Dst: DNSName::DNSName
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:316,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:318,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:320,1
    - Dst: DNSName::canonCompare
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:324,1
    - Dst: isMinimallyCoveringNSEC
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:330,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:336,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:338,1
    - Dst: auto::isOptOut
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:341,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:353,1
    - Dst: toBase32Hex
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:353,1
    - Dst: auto::d_entries::size
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:361,1
    - Dst: auto::d_entries::clear
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:362,1
    - Dst: isWildcardExpanded
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:366,1
    - Dst: countLabels
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:366,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:366,1
    - Dst: getNSECOwnerName
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:367,1
    - Dst: getContent
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:369,1
    - Dst: ZoneEntry::CacheEntry::sizeEstimate
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:370,1
    - Dst: auto::d_entries::emplace
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:375,1
    - Dst: auto::d_entries::replace
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:380,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:380,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 57
    argCount: 7
    argNames:
    - ' zone'
    - ' owner'
    - ' record'
    - ' signatures'
    - nsec3
    - ' qname'
    - qtype
    argTypes:
    - DNSName
    - DNSName
    - DNSRecord
    - std::vector<std::shared_ptr<const RRSIGRecordContent>>
    - bool
    - DNSName
    - QType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 383
      start: 294
    functionDepth: 1
    functionLinenumber: 294
    functionLinenumberEnd: 383
    functionName: AggressiveNSECCache::insertNSEC
    functionSourceFile: /src/pdns/pdns/recursordist/aggressive_nsec.cc
    functionUses: 0
    functionsReached:
    - AggressiveNSECCache::nsec3Disabled
    - std::shared_ptr::lock
    - getNSECOwnerName
    - countLabels
    - isMinimallyCoveringNSEC
    - empty
    - auto::isOptOut
    - at
    - auto::d_entries::size
    - auto::d_entries::clear
    - std::runtime_error
    - AggressiveNSECCache::getZone
    - DNSName
    - DNSName::canonCompare
    - auto::d_entries::replace
    - isWildcardExpanded
    - getRR
    - std::move
    - auto::d_entries::emplace
    - getContent
    - ZoneEntry::CacheEntry::sizeEstimate
    - toBase32Hex
    - DNSName::DNSName
    linkageType: ''
    returnType: void
    signature: void AggressiveNSECCache::insertNSEC(const DNSName& zone, const DNSName&
      owner, const DNSRecord& record, const std::vector<std::shared_ptr<const RRSIGRecordContent>>&
      signatures, bool nsec3, const DNSName& qname, QType qtype)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: try_lock
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:387,1
    - Dst: auto::owns_lock
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:388,1
    - Dst: auto::d_entries::empty
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:388,1
    - Dst: auto::d_entries::get
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:392,1
    - Dst: lower_bound
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:393,1
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:397,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:398,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:406,1
    - Dst: auto::d_owner::canonCompare
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:406,1
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:407,1
    - Dst: auto::d_entries::project
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:420,1
    - Dst: moveCacheItemToFront
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:422,1
    - Dst: moveCacheItemToBack
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:427,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 27
    argCount: 4
    argNames:
    - now
    - ' zone'
    - ' name'
    - ' entry'
    argTypes:
    - time_t
    - std::shared_ptr<LockGuarded<AggressiveNSECCache::ZoneEntry>>
    - DNSName
    - ZoneEntry::CacheEntry
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 429
      start: 385
    functionDepth: 0
    functionLinenumber: 385
    functionLinenumberEnd: 429
    functionName: AggressiveNSECCache::getNSECBefore
    functionSourceFile: /src/pdns/pdns/recursordist/aggressive_nsec.cc
    functionUses: 0
    functionsReached:
    - auto::d_entries::empty
    - auto::d_entries::get
    - lower_bound
    - end
    - auto::owns_lock
    - auto::d_entries::project
    - moveCacheItemToBack
    - moveCacheItemToFront
    - try_lock
    - begin
    - auto::d_owner::canonCompare
    linkageType: ''
    returnType: bool
    signature: bool AggressiveNSECCache::getNSECBefore(time_t now, std::shared_ptr<LockGuarded<AggressiveNSECCache::ZoneEntry>>&
      zone, const DNSName& name, ZoneEntry::CacheEntry& entry)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: try_lock
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:433,1
    - Dst: auto::owns_lock
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:434,1
    - Dst: auto::d_entries::empty
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:434,1
    - Dst: auto::d_entries::get
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:438,1
    - Dst: equal_range
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:439,1
    - Dst: auto::d_entries::project
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:447,1
    - Dst: moveCacheItemToFront
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:449,1
    - Dst: moveCacheItemToBack
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:454,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 4
    argNames:
    - now
    - ' zone'
    - ' name'
    - ' entry'
    argTypes:
    - time_t
    - std::shared_ptr<LockGuarded<AggressiveNSECCache::ZoneEntry>>
    - DNSName
    - ZoneEntry::CacheEntry
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 459
      start: 431
    functionDepth: 0
    functionLinenumber: 431
    functionLinenumberEnd: 459
    functionName: AggressiveNSECCache::getNSEC3
    functionSourceFile: /src/pdns/pdns/recursordist/aggressive_nsec.cc
    functionUses: 0
    functionsReached:
    - auto::d_entries::empty
    - auto::d_entries::get
    - equal_range
    - auto::owns_lock
    - auto::d_entries::project
    - moveCacheItemToBack
    - moveCacheItemToFront
    - try_lock
    linkageType: ''
    returnType: bool
    signature: bool AggressiveNSECCache::getNSEC3(time_t now, std::shared_ptr<LockGuarded<AggressiveNSECCache::ZoneEntry>>&
      zone, const DNSName& name, ZoneEntry::CacheEntry& entry)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: push_back
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:474,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:474,1
    - Dst: DNSRecord::DNSRecord
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:479,1
    - Dst: DNSRecord::setContent
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:483,1
    - Dst: push_back
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:486,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:486,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 6
    argNames:
    - now
    - ' recordSet'
    - ' signatures'
    - ' owner'
    - doDNSSEC
    - ' ret'
    argTypes:
    - time_t
    - std::vector<DNSRecord>
    - MemRecursorCache::SigRecs
    - DNSName
    - bool
    - std::vector<DNSRecord>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 489
      start: 461
    functionDepth: 0
    functionLinenumber: 461
    functionLinenumberEnd: 489
    functionName: addToRRSet
    functionSourceFile: /src/pdns/pdns/recursordist/aggressive_nsec.cc
    functionUses: 0
    functionsReached:
    - push_back
    - std::move
    - DNSRecord::DNSRecord
    - DNSRecord::setContent
    linkageType: ''
    returnType: void
    signature: void addToRRSet(const time_t now, std::vector<DNSRecord>& recordSet,
      const MemRecursorCache::SigRecs& signatures, const DNSName& owner, bool doDNSSEC,
      std::vector<DNSRecord>& ret, DNSResourceRecord::Place place = DNSResourceRecord::AUTHORITY)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DNSRecord::DNSRecord
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:493,1
    - Dst: getCode
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:494,1
    - Dst: DNSRecord::setContent
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:497,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:497,1
    - Dst: push_back
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:500,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:500,1
    - Dst: DNSRecord::DNSRecord
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:504,1
    - Dst: DNSRecord::setContent
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:508,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:508,1
    - Dst: push_back
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:511,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:511,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 18
    argCount: 7
    argNames:
    - ' owner'
    - ' type'
    - ttl
    - ' content'
    - signatures
    - doDNSSEC
    - ' ret'
    argTypes:
    - DNSName
    - QType
    - uint32_t
    - std::shared_ptr<const DNSRecordContent>
    - std::vector<std::shared_ptr<const RRSIGRecordContent>>
    - bool
    - std::vector<DNSRecord>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 514
      start: 491
    functionDepth: 0
    functionLinenumber: 491
    functionLinenumberEnd: 514
    functionName: addRecordToRRSet
    functionSourceFile: /src/pdns/pdns/recursordist/aggressive_nsec.cc
    functionUses: 0
    functionsReached:
    - std::move
    - DNSRecord::DNSRecord
    - push_back
    - DNSRecord::setContent
    - getCode
    linkageType: ''
    returnType: void
    signature: void addRecordToRRSet(const DNSName& owner, const QType& type, uint32_t
      ttl, std::shared_ptr<const DNSRecordContent>& content, std::vector<std::shared_ptr<const
      RRSIGRecordContent>> signatures, bool doDNSSEC, std::vector<DNSRecord>& ret)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: get
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:523,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:523,1
    - Dst: VLOG
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:524,1
    - Dst: addToRRSet
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:528,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:528,1
    - Dst: addRecordToRRSet
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:531,1
    - Dst: VLOG
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:534,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 9
    argNames:
    - now
    - ' name'
    - ' type'
    - ' ret'
    - ' res'
    - doDNSSEC
    - ' nextCloser'
    - ' wildcardName'
    - ' log'
    argTypes:
    - time_t
    - DNSName
    - QType
    - std::vector<DNSRecord>
    - int
    - bool
    - ZoneEntry::CacheEntry
    - DNSName
    - OptLog
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 538
      start: 516
    functionDepth: 1
    functionLinenumber: 516
    functionLinenumberEnd: 538
    functionName: AggressiveNSECCache::synthesizeFromNSEC3Wildcard
    functionSourceFile: /src/pdns/pdns/recursordist/aggressive_nsec.cc
    functionUses: 0
    functionsReached:
    - std::move
    - addRecordToRRSet
    - addToRRSet
    - get
    - VLOG
    - ComboAddress
    linkageType: ''
    returnType: bool
    signature: bool AggressiveNSECCache::synthesizeFromNSEC3Wildcard(time_t now, const
      DNSName& name, const QType& type, std::vector<DNSRecord>& ret, int& res, bool
      doDNSSEC, ZoneEntry::CacheEntry& nextCloser, const DNSName& wildcardName, const
      OptLog& log)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: get
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:547,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:547,1
    - Dst: VLOG
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:548,1
    - Dst: addToRRSet
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:552,1
    - Dst: addRecordToRRSet
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:554,1
    - Dst: VLOG
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:556,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 9
    argNames:
    - now
    - ' name'
    - ' type'
    - ' ret'
    - ' res'
    - doDNSSEC
    - ' nsec'
    - ' wildcardName'
    - ' log'
    argTypes:
    - time_t
    - DNSName
    - QType
    - std::vector<DNSRecord>
    - int
    - bool
    - ZoneEntry::CacheEntry
    - DNSName
    - OptLog
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 560
      start: 540
    functionDepth: 1
    functionLinenumber: 540
    functionLinenumberEnd: 560
    functionName: AggressiveNSECCache::synthesizeFromNSECWildcard
    functionSourceFile: /src/pdns/pdns/recursordist/aggressive_nsec.cc
    functionUses: 0
    functionsReached:
    - addRecordToRRSet
    - addToRRSet
    - get
    - VLOG
    - ComboAddress
    linkageType: ''
    returnType: bool
    signature: bool AggressiveNSECCache::synthesizeFromNSECWildcard(time_t now, const
      DNSName& name, const QType& type, std::vector<DNSRecord>& ret, int& res, bool
      doDNSSEC, ZoneEntry::CacheEntry& nsec, const DNSName& wildcardName, const OptLog&
      log)
  - BBCount: 31
    BranchProfiles: []
    Callsites:
    - Dst: DNSName::DNSName
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:564,1
    - Dst: try_lock
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:569,1
    - Dst: auto::owns_lock
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:570,1
    - Dst: DNSName::countLabels
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:578,1
    - Dst: getNSEC3DenialProofWorstCaseIterationsCount
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:580,1
    - Dst: countLabels
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:580,1
    - Dst: std::string::length
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:580,1
    - Dst: VLOG
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:583,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:588,1
    - Dst: toBase32Hex
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:588,1
    - Dst: getHashFromNSEC3
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:588,1
    - Dst: AggressiveNSECCache::getNSEC3
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:591,1
    - Dst: VLOG
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:592,1
    - Dst: std::dynamic_pointer_cast<const NSEC3RecordContent>
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:593,1
    - Dst: VLOG_NO_PREFIX
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:595,1
    - Dst: isTypeDenied
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:599,1
    - Dst: VLOG_NO_PREFIX
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:600,1
    - Dst: toString
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:600,1
    - Dst: getSigner
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:604,1
    - Dst: isNSEC3AncestorDelegation
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:607,1
    - Dst: VLOG_NO_PREFIX
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:614,1
    - Dst: isRoot
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:618,1
    - Dst: VLOG_NO_PREFIX
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:619,1
    - Dst: VLOG_NO_PREFIX
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:623,1
    - Dst: addToRRSet
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:626,1
    - Dst: addRecordToRRSet
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:627,1
    - Dst: VLOG
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:631,1
    - Dst: DNSName::countLabels
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:635,1
    - Dst: DNSName::chopOff
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:636,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:637,1
    - Dst: toBase32Hex
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:637,1
    - Dst: getHashFromNSEC3
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:637,1
    - Dst: AggressiveNSECCache::getNSEC3
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:640,1
    - Dst: VLOG
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:641,1
    - Dst: std::dynamic_pointer_cast<const NSEC3RecordContent>
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:643,1
    - Dst: VLOG_NO_PREFIX
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:645,1
    - Dst: getSigner
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:649,1
    - Dst: isNSEC3AncestorDelegation
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:652,1
    - Dst: VLOG_NO_PREFIX
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:659,1
    - Dst: isRoot
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:663,1
    - Dst: VLOG_NO_PREFIX
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:664,1
    - Dst: auto::isSet
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:668,1
    - Dst: VLOG_NO_PREFIX
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:678,1
    - Dst: VLOG
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:688,1
    - Dst: countLabels
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:692,1
    - Dst: DNSName::countLabels
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:692,1
    - Dst: DNSName::DNSName
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:697,1
    - Dst: DNSName::prependRawLabel
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:699,1
    - Dst: getRawLabel
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:699,1
    - Dst: toBase32Hex
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:700,1
    - Dst: getHashFromNSEC3
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:700,1
    - Dst: VLOG
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:701,1
    - Dst: AggressiveNSECCache::getNSECBefore
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:704,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:704,1
    - Dst: VLOG
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:705,1
    - Dst: isCoveredByNSEC3Hash
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:709,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:709,1
    - Dst: VLOG
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:710,1
    - Dst: std::dynamic_pointer_cast<const NSEC3RecordContent>
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:714,1
    - Dst: VLOG
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:716,1
    - Dst: getSigner
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:720,1
    - Dst: isRoot
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:721,1
    - Dst: VLOG
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:722,1
    - Dst: toBase32Hex
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:729,1
    - Dst: getHashFromNSEC3
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:729,1
    - Dst: VLOG
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:730,1
    - Dst: AggressiveNSECCache::getNSECBefore
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:733,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:733,1
    - Dst: VLOG
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:734,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:738,1
    - Dst: VLOG
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:739,1
    - Dst: std::dynamic_pointer_cast<const NSEC3RecordContent>
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:741,1
    - Dst: VLOG_NO_PREFIX
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:743,1
    - Dst: getSigner
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:747,1
    - Dst: isNSEC3AncestorDelegation
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:750,1
    - Dst: VLOG_NO_PREFIX
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:757,1
    - Dst: isRoot
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:761,1
    - Dst: VLOG_NO_PREFIX
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:762,1
    - Dst: isTypeDenied
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:766,1
    - Dst: VLOG_NO_PREFIX
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:767,1
    - Dst: toString
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:767,1
    - Dst: AggressiveNSECCache::synthesizeFromNSEC3Wildcard
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:768,1
    - Dst: VLOG
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:772,1
    - Dst: isCoveredByNSEC3Hash
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:775,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:775,1
    - Dst: VLOG
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:776,1
    - Dst: std::dynamic_pointer_cast<const NSEC3RecordContent>
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:780,1
    - Dst: VLOG
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:782,1
    - Dst: getSigner
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:786,1
    - Dst: isRoot
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:787,1
    - Dst: VLOG_NO_PREFIX
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:788,1
    - Dst: addToRRSet
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:797,1
    - Dst: addRecordToRRSet
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:798,1
    - Dst: addRecordToRRSet
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:802,1
    - Dst: addRecordToRRSet
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:806,1
    - Dst: VLOG
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:809,1
    CyclomaticComplexity: 59
    EdgeCount: 59
    ICount: 140
    argCount: 11
    argNames:
    - now
    - ' zoneEntry'
    - ' soaSet'
    - ' soaSignatures'
    - ' name'
    - ' type'
    - ' ret'
    - ' res'
    - doDNSSEC
    - ' log'
    - ' validationContext'
    argTypes:
    - time_t
    - std::shared_ptr<LockGuarded<AggressiveNSECCache::ZoneEntry>>
    - std::vector<DNSRecord>
    - MemRecursorCache::SigRecs
    - DNSName
    - QType
    - std::vector<DNSRecord>
    - int
    - bool
    - OptLog
    - pdns::validation::ValidationContext
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 812
      start: 562
    functionDepth: 2
    functionLinenumber: 562
    functionLinenumberEnd: 812
    functionName: AggressiveNSECCache::getNSEC3Denial
    functionSourceFile: /src/pdns/pdns/recursordist/aggressive_nsec.cc
    functionUses: 0
    functionsReached:
    - std::string::length
    - toString
    - getSigner
    - auto::owns_lock
    - isRoot
    - auto::isSet
    - AggressiveNSECCache::getNSEC3
    - countLabels
    - isTypeDenied
    - addRecordToRRSet
    - DNSName::chopOff
    - getNSEC3DenialProofWorstCaseIterationsCount
    - std::dynamic_pointer_cast<const NSEC3RecordContent>
    - addToRRSet
    - DNSName::prependRawLabel
    - DNSName
    - getHashFromNSEC3
    - isNSEC3AncestorDelegation
    - VLOG
    - getRawLabel
    - AggressiveNSECCache::getNSECBefore
    - DNSName::countLabels
    - isCoveredByNSEC3Hash
    - VLOG_NO_PREFIX
    - AggressiveNSECCache::synthesizeFromNSEC3Wildcard
    - try_lock
    - toBase32Hex
    - DNSName::DNSName
    linkageType: ''
    returnType: bool
    signature: bool AggressiveNSECCache::getNSEC3Denial(time_t now, std::shared_ptr<LockGuarded<AggressiveNSECCache::ZoneEntry>>&
      zoneEntry, std::vector<DNSRecord>& soaSet, const MemRecursorCache::SigRecs&
      soaSignatures, const DNSName& name, const QType& type, std::vector<DNSRecord>&
      ret, int& res, bool doDNSSEC, const OptLog& log, pdns::validation::ValidationContext&
      validationContext)
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: DNSName::chopOff
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:819,1
    - Dst: AggressiveNSECCache::getBestZone
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:820,1
    - Dst: AggressiveNSECCache::getBestZone
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:823,1
    - Dst: DNSName::DNSName
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:830,1
    - Dst: std::shared_ptr::try_lock
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:833,1
    - Dst: auto::owns_lock
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:834,1
    - Dst: auto::d_entries::empty
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:837,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:848,1
    - Dst: VLOG
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:849,1
    - Dst: AggressiveNSECCache::getNSEC3Denial
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:854,1
    - Dst: VLOG
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:862,1
    - Dst: AggressiveNSECCache::getNSECBefore
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:863,1
    - Dst: VLOG_NO_PREFIX
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:864,1
    - Dst: std::dynamic_pointer_cast<const NSECRecordContent>
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:868,1
    - Dst: VLOG_NO_PREFIX
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:873,1
    - Dst: matchesNSEC
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:875,1
    - Dst: getCode
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:875,1
    - Dst: VLOG_NO_PREFIX
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:877,1
    - Dst: VLOG_NO_PREFIX
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:882,1
    - Dst: VLOG_NO_PREFIX
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:886,1
    - Dst: getClosestEncloserFromNSEC
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:887,1
    - Dst: VLOG
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:890,1
    - Dst: AggressiveNSECCache::getNSECBefore
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:891,1
    - Dst: VLOG_NO_PREFIX
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:892,1
    - Dst: VLOG_NO_PREFIX
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:896,1
    - Dst: std::dynamic_pointer_cast<const NSECRecordContent>
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:898,1
    - Dst: matchesNSEC
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:903,1
    - Dst: getCode
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:903,1
    - Dst: VLOG_NO_PREFIX
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:907,1
    - Dst: AggressiveNSECCache::synthesizeFromNSECWildcard
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:908,1
    - Dst: VLOG_NO_PREFIX
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:911,1
    - Dst: VLOG_NO_PREFIX
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:916,1
    - Dst: VLOG_NO_PREFIX
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:921,1
    - Dst: reserve
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:935,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:935,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:935,1
    - Dst: MemRecursorCache::SigRecs::size
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:935,1
    - Dst: ZoneEntry::CacheEntry::d_signatures::size
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:935,1
    - Dst: ZoneEntry::CacheEntry::d_signatures::size
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:935,1
    - Dst: addToRRSet
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:937,1
    - Dst: addRecordToRRSet
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:939,1
    - Dst: addRecordToRRSet
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:943,1
    - Dst: VLOG
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:946,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 90
    argCount: 10
    argNames:
    - now
    - ' name'
    - ' type'
    - ' ret'
    - ' res'
    - ' who'
    - ' routingTag'
    - doDNSSEC
    - ' validationContext'
    - ' log'
    argTypes:
    - time_t
    - DNSName
    - QType
    - std::vector<DNSRecord>
    - int
    - ComboAddress
    - std::string
    - bool
    - pdns::validation::ValidationContext
    - OptLog
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 949
      start: 814
    functionDepth: 3
    functionLinenumber: 814
    functionLinenumberEnd: 949
    functionName: AggressiveNSECCache::getDenial
    functionSourceFile: /src/pdns/pdns/recursordist/aggressive_nsec.cc
    functionUses: 0
    functionsReached:
    - std::dynamic_pointer_cast<const NSECRecordContent>
    - auto::owns_lock
    - std::vector::size
    - DNSName::chopOff
    - auto::d_entries::empty
    - addRecordToRRSet
    - matchesNSEC
    - size
    - addToRRSet
    - get
    - reserve
    - AggressiveNSECCache::synthesizeFromNSECWildcard
    - VLOG
    - AggressiveNSECCache::getBestZone
    - AggressiveNSECCache::getNSEC3Denial
    - AggressiveNSECCache::getNSECBefore
    - MemRecursorCache::SigRecs::size
    - VLOG_NO_PREFIX
    - getClosestEncloserFromNSEC
    - ZoneEntry::CacheEntry::d_signatures::size
    - DNSName::DNSName
    - std::shared_ptr::try_lock
    - getCode
    linkageType: ''
    returnType: bool
    signature: bool AggressiveNSECCache::getDenial(time_t now, const DNSName& name,
      const QType& type, std::vector<DNSRecord>& ret, int& res, const ComboAddress&
      who, const std::string& routingTag, bool doDNSSEC, pdns::validation::ValidationContext&
      validationContext, const OptLog& log)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:958,1
    - Dst: std::array::size
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:958,1
    - Dst: std::array::at
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:959,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:959,1
    - Dst: std::array::at
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:961,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - type
    argTypes:
    - ZoneEntry::ZoneDenialType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 962
      start: 951
    functionDepth: 0
    functionLinenumber: 951
    functionLinenumberEnd: 962
    functionName: '& AggressiveNSECCache::ZoneEntry::getZoneTypeAsString(ZoneEntry::ZoneDenialType
      type)'
    functionSourceFile: /src/pdns/pdns/recursordist/aggressive_nsec.cc
    functionUses: 0
    functionsReached:
    - std::array::at
    - std::array::size
    - static_cast<uint8_t>
    linkageType: ''
    returnType: std::string
    signature: std::string & AggressiveNSECCache::ZoneEntry::getZoneTypeAsString(ZoneEntry::ZoneDenialType
      type)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: read_lock
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:968,1
    - Dst: auto::visit
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:969,1
    - Dst: d_value::lock
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:974,1
    - Dst: auto::d_entries::empty
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:975,1
    - Dst: fprintf
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:978,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:978,1
    - Dst: auto::d_zone::toString
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:978,1
    - Dst: fprintf
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:983,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:983,1
    - Dst: d_owner::toString
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:983,1
    - Dst: AggressiveNSECCache::ZoneEntry::getZoneTypeAsString
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:983,1
    - Dst: d_record::getZoneRepresentation
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:983,1
    - Dst: d_qname::toString
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:983,1
    - Dst: d_qtype::toString
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:983,1
    - Dst: fprintf
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:985,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:985,1
    - Dst: getZoneRepresentation
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:985,1
    - Dst: fprintf
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:990,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:990,1
    - Dst: auto::d_zone::toString
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:990,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:990,1
    - Dst: fprintf
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:993,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:993,1
    - Dst: auto::d_zone::toString
      Src: /src/pdns/pdns/recursordist/aggressive_nsec.cc:993,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 22
    argCount: 2
    argNames:
    - ' filePtr'
    - ' now'
    argTypes:
    - pdns::UniqueFilePtr
    - struct timeval
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 999
      start: 964
    functionDepth: 0
    functionLinenumber: 964
    functionLinenumberEnd: 999
    functionName: AggressiveNSECCache::dumpToFile
    functionSourceFile: /src/pdns/pdns/recursordist/aggressive_nsec.cc
    functionUses: 0
    functionsReached:
    - getZoneRepresentation
    - fprintf
    - d_record::getZoneRepresentation
    - auto::d_entries::empty
    - d_qtype::toString
    - d_qname::toString
    - d_value::lock
    - what
    - read_lock
    - auto::visit
    - get
    - d_owner::toString
    - AggressiveNSECCache::ZoneEntry::getZoneTypeAsString
    - auto::d_zone::toString
    linkageType: ''
    returnType: size_t
    signature: size_t AggressiveNSECCache::dumpToFile(pdns::UniqueFilePtr& filePtr,
      const struct timeval& now)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 53
    functionDepth: 0
    functionLinenumber: 53
    functionLinenumberEnd: 53
    functionName: pdns::channel::Sender::Sender
    functionSourceFile: /src/pdns/pdns/recursordist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Sender()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/channel.hh:55,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 1
    argNames:
    - ' descriptor'
    argTypes:
    - FDWrapper
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 54
    functionDepth: 0
    functionLinenumber: 54
    functionLinenumberEnd: 57
    functionName: pdns::channel::Sender::Sender
    functionSourceFile: /src/pdns/pdns/recursordist/channel.hh
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void Sender(FDWrapper&& descriptor)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 58
    functionDepth: 0
    functionLinenumber: 58
    functionLinenumberEnd: 58
    functionName: pdns::channel::Sender::Sender
    functionSourceFile: /src/pdns/pdns/recursordist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Sender(const Sender&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 59
    functionDepth: 0
    functionLinenumber: 59
    functionLinenumberEnd: 59
    functionName: '& operator=(const Sender&)'
    functionSourceFile: /src/pdns/pdns/recursordist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Sender
    signature: Sender & operator=(const Sender&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 60
    functionDepth: 0
    functionLinenumber: 60
    functionLinenumberEnd: 60
    functionName: pdns::channel::Sender::Sender
    functionSourceFile: /src/pdns/pdns/recursordist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Sender(Sender&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 61
    functionDepth: 0
    functionLinenumber: 61
    functionLinenumberEnd: 61
    functionName: '& operator=(Sender&&)'
    functionSourceFile: /src/pdns/pdns/recursordist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Sender
    signature: Sender & operator=(Sender&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 62
    functionDepth: 0
    functionLinenumber: 62
    functionLinenumberEnd: 62
    functionName: ~Sender()
    functionSourceFile: /src/pdns/pdns/recursordist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~Sender()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 86
    functionDepth: 0
    functionLinenumber: 86
    functionLinenumberEnd: 86
    functionName: pdns::channel::Receiver::Receiver
    functionSourceFile: /src/pdns/pdns/recursordist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Receiver()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/channel.hh:88,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 1
    argNames:
    - ' descriptor'
    argTypes:
    - FDWrapper
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 87
    functionDepth: 0
    functionLinenumber: 87
    functionLinenumberEnd: 90
    functionName: pdns::channel::Receiver::Receiver
    functionSourceFile: /src/pdns/pdns/recursordist/channel.hh
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void Receiver(FDWrapper&& descriptor, bool throwOnEOF = true)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 91
    functionDepth: 0
    functionLinenumber: 91
    functionLinenumberEnd: 91
    functionName: pdns::channel::Receiver::Receiver
    functionSourceFile: /src/pdns/pdns/recursordist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Receiver(const Receiver&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 92
    functionDepth: 0
    functionLinenumber: 92
    functionLinenumberEnd: 92
    functionName: '& operator=(const Receiver&)'
    functionSourceFile: /src/pdns/pdns/recursordist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Receiver
    signature: Receiver & operator=(const Receiver&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 93
    functionDepth: 0
    functionLinenumber: 93
    functionLinenumberEnd: 93
    functionName: pdns::channel::Receiver::Receiver
    functionSourceFile: /src/pdns/pdns/recursordist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Receiver(Receiver&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 94
    functionDepth: 0
    functionLinenumber: 94
    functionLinenumberEnd: 94
    functionName: '& operator=(Receiver&&)'
    functionSourceFile: /src/pdns/pdns/recursordist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Receiver
    signature: Receiver & operator=(Receiver&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 95
    functionDepth: 0
    functionLinenumber: 95
    functionLinenumberEnd: 95
    functionName: ~Receiver()
    functionSourceFile: /src/pdns/pdns/recursordist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~Receiver()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getHandle
      Src: /src/pdns/pdns/recursordist/channel.hh:113,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 111
    functionDepth: 0
    functionLinenumber: 111
    functionLinenumberEnd: 114
    functionName: pdns::channel::Receiver::getDescriptor
    functionSourceFile: /src/pdns/pdns/recursordist/channel.hh
    functionUses: 0
    functionsReached:
    - getHandle
    linkageType: ''
    returnType: int
    signature: int getDescriptor() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 118
    functionDepth: 0
    functionLinenumber: 118
    functionLinenumberEnd: 121
    functionName: pdns::channel::Receiver::isClosed
    functionSourceFile: /src/pdns/pdns/recursordist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool isClosed() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 147
    functionDepth: 0
    functionLinenumber: 147
    functionLinenumberEnd: 147
    functionName: pdns::channel::Notifier::Notifier
    functionSourceFile: /src/pdns/pdns/recursordist/channel.hh
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Notifier()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 149
      start: 149
    functionDepth: 0
    functionLinenumber: 149
    functionLinenumberEnd: 149
    functionName: pdns::channel::Notifier::Notifier
    functionSourceFile: /src/pdns/pdns/recursordist/channel.hh
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Notifier(const Notifier&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 150
      start: 150
    functionDepth: 0
    functionLinenumber: 150
    functionLinenumberEnd: 150
    functionName: '& operator=(const Notifier&)'
    functionSourceFile: /src/pdns/pdns/recursordist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Notifier
    signature: Notifier & operator=(const Notifier&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 151
      start: 151
    functionDepth: 0
    functionLinenumber: 151
    functionLinenumberEnd: 151
    functionName: pdns::channel::Notifier::Notifier
    functionSourceFile: /src/pdns/pdns/recursordist/channel.hh
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Notifier(Notifier&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 152
      start: 152
    functionDepth: 0
    functionLinenumber: 152
    functionLinenumberEnd: 152
    functionName: '& operator=(Notifier&&)'
    functionSourceFile: /src/pdns/pdns/recursordist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Notifier
    signature: Notifier & operator=(Notifier&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 153
      start: 153
    functionDepth: 0
    functionLinenumber: 153
    functionLinenumberEnd: 153
    functionName: ~Notifier()
    functionSourceFile: /src/pdns/pdns/recursordist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~Notifier()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 176
      start: 176
    functionDepth: 0
    functionLinenumber: 176
    functionLinenumberEnd: 176
    functionName: pdns::channel::Waiter::Waiter
    functionSourceFile: /src/pdns/pdns/recursordist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Waiter()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 178
      start: 178
    functionDepth: 0
    functionLinenumber: 178
    functionLinenumberEnd: 178
    functionName: pdns::channel::Waiter::Waiter
    functionSourceFile: /src/pdns/pdns/recursordist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Waiter(const Waiter&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 179
      start: 179
    functionDepth: 0
    functionLinenumber: 179
    functionLinenumberEnd: 179
    functionName: '& operator=(const Waiter&)'
    functionSourceFile: /src/pdns/pdns/recursordist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Waiter
    signature: Waiter & operator=(const Waiter&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 180
      start: 180
    functionDepth: 0
    functionLinenumber: 180
    functionLinenumberEnd: 180
    functionName: pdns::channel::Waiter::Waiter
    functionSourceFile: /src/pdns/pdns/recursordist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Waiter(Waiter&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 181
      start: 181
    functionDepth: 0
    functionLinenumber: 181
    functionLinenumberEnd: 181
    functionName: '& operator=(Waiter&&)'
    functionSourceFile: /src/pdns/pdns/recursordist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Waiter
    signature: Waiter & operator=(Waiter&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 182
      start: 182
    functionDepth: 0
    functionLinenumber: 182
    functionLinenumberEnd: 182
    functionName: ~Waiter()
    functionSourceFile: /src/pdns/pdns/recursordist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~Waiter()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 200
      start: 197
    functionDepth: 0
    functionLinenumber: 197
    functionLinenumberEnd: 200
    functionName: pdns::channel::Waiter::isClosed
    functionSourceFile: /src/pdns/pdns/recursordist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool isClosed() const
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/channel.hh:222,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/channel.hh:223,1
    - Dst: __tsan_release
      Src: /src/pdns/pdns/recursordist/channel.hh:227,1
    - Dst: write
      Src: /src/pdns/pdns/recursordist/channel.hh:229,1
    - Dst: getHandle
      Src: /src/pdns/pdns/recursordist/channel.hh:229,1
    - Dst: auto::release
      Src: /src/pdns/pdns/recursordist/channel.hh:233,1
    - Dst: __tsan_acquire
      Src: /src/pdns/pdns/recursordist/channel.hh:238,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/channel.hh:240,1
    - Dst: __tsan_acquire
      Src: /src/pdns/pdns/recursordist/channel.hh:244,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/channel.hh:250,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/channel.hh:254,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/channel.hh:254,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 23
    argCount: 1
    argNames:
    - ' object'
    argTypes:
    - std::unique_ptr<T, D>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 258
      start: 218
    functionDepth: 0
    functionLinenumber: 218
    functionLinenumberEnd: 258
    functionName: pdns::channel::Sender<T, D>::send
    functionSourceFile: /src/pdns/pdns/recursordist/channel.hh
    functionUses: 0
    functionsReached:
    - std::move
    - __tsan_acquire
    - auto::get
    - __tsan_release
    - std::runtime_error
    - stringerror
    - getHandle
    - write
    - auto::release
    linkageType: ''
    returnType: bool
    signature: bool Sender<T, D>::send(std::unique_ptr<T, D>&& object) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: reset
      Src: /src/pdns/pdns/recursordist/channel.hh:263,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 264
      start: 261
    functionDepth: 0
    functionLinenumber: 261
    functionLinenumberEnd: 264
    functionName: pdns::channel::Sender<T, D>::close
    functionSourceFile: /src/pdns/pdns/recursordist/channel.hh
    functionUses: 0
    functionsReached:
    - reset
    linkageType: ''
    returnType: void
    signature: void Sender<T, D>::close()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::channel::Receiver<T, D>::receive
      Src: /src/pdns/pdns/recursordist/channel.hh:269,1
    - Dst: D
      Src: /src/pdns/pdns/recursordist/channel.hh:269,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 270
      start: 267
    functionDepth: 0
    functionLinenumber: 267
    functionLinenumberEnd: 270
    functionName: pdns::channel::Receiver<T, D>::receive
    functionSourceFile: /src/pdns/pdns/recursordist/channel.hh
    functionUses: 9
    functionsReached:
    - pdns::channel::Receiver<T, D>::receive
    - D
    linkageType: ''
    returnType: std::optional<std::unique_ptr<T, D>>
    signature: std::optional<std::unique_ptr<T, D>> Receiver<T, D>::receive()
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: read
      Src: /src/pdns/pdns/recursordist/channel.hh:278,1
    - Dst: getHandle
      Src: /src/pdns/pdns/recursordist/channel.hh:278,1
    - Dst: __tsan_acquire
      Src: /src/pdns/pdns/recursordist/channel.hh:281,1
    - Dst: std::unique_ptr<T, D>
      Src: /src/pdns/pdns/recursordist/channel.hh:283,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/channel.hh:290,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/channel.hh:299,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/channel.hh:299,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/channel.hh:302,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 25
    argCount: 1
    argNames:
    - deleter
    argTypes:
    - D
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 305
      start: 273
    functionDepth: 0
    functionLinenumber: 273
    functionLinenumberEnd: 305
    functionName: pdns::channel::Receiver<T, D>::receive
    functionSourceFile: /src/pdns/pdns/recursordist/channel.hh
    functionUses: 9
    functionsReached:
    - __tsan_acquire
    - read
    - std::runtime_error
    - std::unique_ptr<T, D>
    - stringerror
    - getHandle
    linkageType: ''
    returnType: std::optional<std::unique_ptr<T, D>>
    signature: std::optional<std::unique_ptr<T, D>> Receiver<T, D>::receive(D deleter)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pipe
      Src: /src/pdns/pdns/recursordist/channel.hh:311,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/channel.hh:312,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/channel.hh:312,1
    - Dst: setNonBlocking
      Src: /src/pdns/pdns/recursordist/channel.hh:317,1
    - Dst: FDWrapper::getHandle
      Src: /src/pdns/pdns/recursordist/channel.hh:317,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/channel.hh:319,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/channel.hh:319,1
    - Dst: setNonBlocking
      Src: /src/pdns/pdns/recursordist/channel.hh:322,1
    - Dst: FDWrapper::getHandle
      Src: /src/pdns/pdns/recursordist/channel.hh:322,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/channel.hh:324,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/channel.hh:324,1
    - Dst: getPipeBufferSize
      Src: /src/pdns/pdns/recursordist/channel.hh:327,1
    - Dst: FDWrapper::getHandle
      Src: /src/pdns/pdns/recursordist/channel.hh:327,1
    - Dst: setPipeBufferSize
      Src: /src/pdns/pdns/recursordist/channel.hh:328,1
    - Dst: FDWrapper::getHandle
      Src: /src/pdns/pdns/recursordist/channel.hh:328,1
    - Dst: Sender<T, D>
      Src: /src/pdns/pdns/recursordist/channel.hh:331,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/channel.hh:331,1
    - Dst: Receiver<T, D>
      Src: /src/pdns/pdns/recursordist/channel.hh:331,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/channel.hh:331,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 14
    argCount: 4
    argNames:
    - senderBlockingMode
    - receiverBlockingMode
    - pipeBufferSize
    - throwOnEOF
    argTypes:
    - SenderBlockingMode
    - ReceiverBlockingMode
    - size_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 332
      start: 308
    functionDepth: 0
    functionLinenumber: 308
    functionLinenumberEnd: 332
    functionName: pdns::channel::createObjectQueue
    functionSourceFile: /src/pdns/pdns/recursordist/channel.hh
    functionUses: 0
    functionsReached:
    - std::move
    - FDWrapper::getHandle
    - std::runtime_error
    - setNonBlocking
    - stringerror
    - pipe
    - Receiver<T, D>
    - setPipeBufferSize
    - getPipeBufferSize
    - Sender<T, D>
    linkageType: ''
    returnType: std::pair<Sender<T, D>, Receiver<T, D>>
    signature: std::pair<Sender<T, D>, Receiver<T, D>> createObjectQueue(SenderBlockingMode
      senderBlockingMode, ReceiverBlockingMode receiverBlockingMode, size_t pipeBufferSize,
      bool throwOnEOF)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 53
    functionDepth: 0
    functionLinenumber: 53
    functionLinenumberEnd: 53
    functionName: pdns::channel::Sender::Sender
    functionSourceFile: /src/pdns/pdns/recursordist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Sender()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/channel.hh:55,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 1
    argNames:
    - ' descriptor'
    argTypes:
    - FDWrapper
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 54
    functionDepth: 0
    functionLinenumber: 54
    functionLinenumberEnd: 57
    functionName: pdns::channel::Sender::Sender
    functionSourceFile: /src/pdns/pdns/recursordist/channel.hh
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void Sender(FDWrapper&& descriptor)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 58
    functionDepth: 0
    functionLinenumber: 58
    functionLinenumberEnd: 58
    functionName: pdns::channel::Sender::Sender
    functionSourceFile: /src/pdns/pdns/recursordist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Sender(const Sender&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 59
    functionDepth: 0
    functionLinenumber: 59
    functionLinenumberEnd: 59
    functionName: '& operator=(const Sender&)'
    functionSourceFile: /src/pdns/pdns/recursordist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Sender
    signature: Sender & operator=(const Sender&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 60
    functionDepth: 0
    functionLinenumber: 60
    functionLinenumberEnd: 60
    functionName: pdns::channel::Sender::Sender
    functionSourceFile: /src/pdns/pdns/recursordist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Sender(Sender&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 61
    functionDepth: 0
    functionLinenumber: 61
    functionLinenumberEnd: 61
    functionName: '& operator=(Sender&&)'
    functionSourceFile: /src/pdns/pdns/recursordist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Sender
    signature: Sender & operator=(Sender&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 62
    functionDepth: 0
    functionLinenumber: 62
    functionLinenumberEnd: 62
    functionName: ~Sender()
    functionSourceFile: /src/pdns/pdns/recursordist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~Sender()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 86
    functionDepth: 0
    functionLinenumber: 86
    functionLinenumberEnd: 86
    functionName: pdns::channel::Receiver::Receiver
    functionSourceFile: /src/pdns/pdns/recursordist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Receiver()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/channel.hh:88,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 1
    argNames:
    - ' descriptor'
    argTypes:
    - FDWrapper
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 87
    functionDepth: 0
    functionLinenumber: 87
    functionLinenumberEnd: 90
    functionName: pdns::channel::Receiver::Receiver
    functionSourceFile: /src/pdns/pdns/recursordist/channel.hh
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void Receiver(FDWrapper&& descriptor, bool throwOnEOF = true)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 91
    functionDepth: 0
    functionLinenumber: 91
    functionLinenumberEnd: 91
    functionName: pdns::channel::Receiver::Receiver
    functionSourceFile: /src/pdns/pdns/recursordist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Receiver(const Receiver&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 92
    functionDepth: 0
    functionLinenumber: 92
    functionLinenumberEnd: 92
    functionName: '& operator=(const Receiver&)'
    functionSourceFile: /src/pdns/pdns/recursordist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Receiver
    signature: Receiver & operator=(const Receiver&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 93
    functionDepth: 0
    functionLinenumber: 93
    functionLinenumberEnd: 93
    functionName: pdns::channel::Receiver::Receiver
    functionSourceFile: /src/pdns/pdns/recursordist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Receiver(Receiver&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 94
    functionDepth: 0
    functionLinenumber: 94
    functionLinenumberEnd: 94
    functionName: '& operator=(Receiver&&)'
    functionSourceFile: /src/pdns/pdns/recursordist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Receiver
    signature: Receiver & operator=(Receiver&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 95
    functionDepth: 0
    functionLinenumber: 95
    functionLinenumberEnd: 95
    functionName: ~Receiver()
    functionSourceFile: /src/pdns/pdns/recursordist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~Receiver()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getHandle
      Src: /src/pdns/pdns/recursordist/channel.hh:113,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 111
    functionDepth: 0
    functionLinenumber: 111
    functionLinenumberEnd: 114
    functionName: pdns::channel::Receiver::getDescriptor
    functionSourceFile: /src/pdns/pdns/recursordist/channel.hh
    functionUses: 0
    functionsReached:
    - getHandle
    linkageType: ''
    returnType: int
    signature: int getDescriptor() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 118
    functionDepth: 0
    functionLinenumber: 118
    functionLinenumberEnd: 121
    functionName: pdns::channel::Receiver::isClosed
    functionSourceFile: /src/pdns/pdns/recursordist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool isClosed() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 147
    functionDepth: 0
    functionLinenumber: 147
    functionLinenumberEnd: 147
    functionName: pdns::channel::Notifier::Notifier
    functionSourceFile: /src/pdns/pdns/recursordist/channel.hh
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Notifier()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 149
      start: 149
    functionDepth: 0
    functionLinenumber: 149
    functionLinenumberEnd: 149
    functionName: pdns::channel::Notifier::Notifier
    functionSourceFile: /src/pdns/pdns/recursordist/channel.hh
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Notifier(const Notifier&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 150
      start: 150
    functionDepth: 0
    functionLinenumber: 150
    functionLinenumberEnd: 150
    functionName: '& operator=(const Notifier&)'
    functionSourceFile: /src/pdns/pdns/recursordist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Notifier
    signature: Notifier & operator=(const Notifier&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 151
      start: 151
    functionDepth: 0
    functionLinenumber: 151
    functionLinenumberEnd: 151
    functionName: pdns::channel::Notifier::Notifier
    functionSourceFile: /src/pdns/pdns/recursordist/channel.hh
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Notifier(Notifier&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 152
      start: 152
    functionDepth: 0
    functionLinenumber: 152
    functionLinenumberEnd: 152
    functionName: '& operator=(Notifier&&)'
    functionSourceFile: /src/pdns/pdns/recursordist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Notifier
    signature: Notifier & operator=(Notifier&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 153
      start: 153
    functionDepth: 0
    functionLinenumber: 153
    functionLinenumberEnd: 153
    functionName: ~Notifier()
    functionSourceFile: /src/pdns/pdns/recursordist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~Notifier()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 176
      start: 176
    functionDepth: 0
    functionLinenumber: 176
    functionLinenumberEnd: 176
    functionName: pdns::channel::Waiter::Waiter
    functionSourceFile: /src/pdns/pdns/recursordist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Waiter()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 178
      start: 178
    functionDepth: 0
    functionLinenumber: 178
    functionLinenumberEnd: 178
    functionName: pdns::channel::Waiter::Waiter
    functionSourceFile: /src/pdns/pdns/recursordist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Waiter(const Waiter&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 179
      start: 179
    functionDepth: 0
    functionLinenumber: 179
    functionLinenumberEnd: 179
    functionName: '& operator=(const Waiter&)'
    functionSourceFile: /src/pdns/pdns/recursordist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Waiter
    signature: Waiter & operator=(const Waiter&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 180
      start: 180
    functionDepth: 0
    functionLinenumber: 180
    functionLinenumberEnd: 180
    functionName: pdns::channel::Waiter::Waiter
    functionSourceFile: /src/pdns/pdns/recursordist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Waiter(Waiter&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 181
      start: 181
    functionDepth: 0
    functionLinenumber: 181
    functionLinenumberEnd: 181
    functionName: '& operator=(Waiter&&)'
    functionSourceFile: /src/pdns/pdns/recursordist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Waiter
    signature: Waiter & operator=(Waiter&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 182
      start: 182
    functionDepth: 0
    functionLinenumber: 182
    functionLinenumberEnd: 182
    functionName: ~Waiter()
    functionSourceFile: /src/pdns/pdns/recursordist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~Waiter()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 200
      start: 197
    functionDepth: 0
    functionLinenumber: 197
    functionLinenumberEnd: 200
    functionName: pdns::channel::Waiter::isClosed
    functionSourceFile: /src/pdns/pdns/recursordist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool isClosed() const
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/channel.hh:222,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/channel.hh:223,1
    - Dst: __tsan_release
      Src: /src/pdns/pdns/recursordist/channel.hh:227,1
    - Dst: write
      Src: /src/pdns/pdns/recursordist/channel.hh:229,1
    - Dst: getHandle
      Src: /src/pdns/pdns/recursordist/channel.hh:229,1
    - Dst: auto::release
      Src: /src/pdns/pdns/recursordist/channel.hh:233,1
    - Dst: __tsan_acquire
      Src: /src/pdns/pdns/recursordist/channel.hh:238,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/channel.hh:240,1
    - Dst: __tsan_acquire
      Src: /src/pdns/pdns/recursordist/channel.hh:244,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/channel.hh:250,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/channel.hh:254,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/channel.hh:254,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 23
    argCount: 1
    argNames:
    - ' object'
    argTypes:
    - std::unique_ptr<T, D>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 258
      start: 218
    functionDepth: 0
    functionLinenumber: 218
    functionLinenumberEnd: 258
    functionName: pdns::channel::Sender<T, D>::send
    functionSourceFile: /src/pdns/pdns/recursordist/channel.hh
    functionUses: 0
    functionsReached:
    - std::move
    - __tsan_acquire
    - auto::get
    - __tsan_release
    - std::runtime_error
    - stringerror
    - getHandle
    - write
    - auto::release
    linkageType: ''
    returnType: bool
    signature: bool Sender<T, D>::send(std::unique_ptr<T, D>&& object) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: reset
      Src: /src/pdns/pdns/recursordist/channel.hh:263,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 264
      start: 261
    functionDepth: 0
    functionLinenumber: 261
    functionLinenumberEnd: 264
    functionName: pdns::channel::Sender<T, D>::close
    functionSourceFile: /src/pdns/pdns/recursordist/channel.hh
    functionUses: 0
    functionsReached:
    - reset
    linkageType: ''
    returnType: void
    signature: void Sender<T, D>::close()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::channel::Receiver<T, D>::receive
      Src: /src/pdns/pdns/recursordist/channel.hh:269,1
    - Dst: D
      Src: /src/pdns/pdns/recursordist/channel.hh:269,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 270
      start: 267
    functionDepth: 0
    functionLinenumber: 267
    functionLinenumberEnd: 270
    functionName: pdns::channel::Receiver<T, D>::receive
    functionSourceFile: /src/pdns/pdns/recursordist/channel.hh
    functionUses: 10
    functionsReached:
    - pdns::channel::Receiver<T, D>::receive
    - D
    linkageType: ''
    returnType: std::optional<std::unique_ptr<T, D>>
    signature: std::optional<std::unique_ptr<T, D>> Receiver<T, D>::receive()
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: read
      Src: /src/pdns/pdns/recursordist/channel.hh:278,1
    - Dst: getHandle
      Src: /src/pdns/pdns/recursordist/channel.hh:278,1
    - Dst: __tsan_acquire
      Src: /src/pdns/pdns/recursordist/channel.hh:281,1
    - Dst: std::unique_ptr<T, D>
      Src: /src/pdns/pdns/recursordist/channel.hh:283,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/channel.hh:290,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/channel.hh:299,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/channel.hh:299,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/channel.hh:302,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 25
    argCount: 1
    argNames:
    - deleter
    argTypes:
    - D
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 305
      start: 273
    functionDepth: 0
    functionLinenumber: 273
    functionLinenumberEnd: 305
    functionName: pdns::channel::Receiver<T, D>::receive
    functionSourceFile: /src/pdns/pdns/recursordist/channel.hh
    functionUses: 10
    functionsReached:
    - __tsan_acquire
    - read
    - std::runtime_error
    - std::unique_ptr<T, D>
    - stringerror
    - getHandle
    linkageType: ''
    returnType: std::optional<std::unique_ptr<T, D>>
    signature: std::optional<std::unique_ptr<T, D>> Receiver<T, D>::receive(D deleter)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pipe
      Src: /src/pdns/pdns/recursordist/channel.hh:311,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/channel.hh:312,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/channel.hh:312,1
    - Dst: setNonBlocking
      Src: /src/pdns/pdns/recursordist/channel.hh:317,1
    - Dst: FDWrapper::getHandle
      Src: /src/pdns/pdns/recursordist/channel.hh:317,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/channel.hh:319,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/channel.hh:319,1
    - Dst: setNonBlocking
      Src: /src/pdns/pdns/recursordist/channel.hh:322,1
    - Dst: FDWrapper::getHandle
      Src: /src/pdns/pdns/recursordist/channel.hh:322,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/channel.hh:324,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/channel.hh:324,1
    - Dst: getPipeBufferSize
      Src: /src/pdns/pdns/recursordist/channel.hh:327,1
    - Dst: FDWrapper::getHandle
      Src: /src/pdns/pdns/recursordist/channel.hh:327,1
    - Dst: setPipeBufferSize
      Src: /src/pdns/pdns/recursordist/channel.hh:328,1
    - Dst: FDWrapper::getHandle
      Src: /src/pdns/pdns/recursordist/channel.hh:328,1
    - Dst: Sender<T, D>
      Src: /src/pdns/pdns/recursordist/channel.hh:331,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/channel.hh:331,1
    - Dst: Receiver<T, D>
      Src: /src/pdns/pdns/recursordist/channel.hh:331,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/channel.hh:331,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 14
    argCount: 4
    argNames:
    - senderBlockingMode
    - receiverBlockingMode
    - pipeBufferSize
    - throwOnEOF
    argTypes:
    - SenderBlockingMode
    - ReceiverBlockingMode
    - size_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 332
      start: 308
    functionDepth: 0
    functionLinenumber: 308
    functionLinenumberEnd: 332
    functionName: pdns::channel::createObjectQueue
    functionSourceFile: /src/pdns/pdns/recursordist/channel.hh
    functionUses: 0
    functionsReached:
    - std::move
    - FDWrapper::getHandle
    - std::runtime_error
    - setNonBlocking
    - stringerror
    - pipe
    - Receiver<T, D>
    - setPipeBufferSize
    - getPipeBufferSize
    - Sender<T, D>
    linkageType: ''
    returnType: std::pair<Sender<T, D>, Receiver<T, D>>
    signature: std::pair<Sender<T, D>, Receiver<T, D>> createObjectQueue(SenderBlockingMode
      senderBlockingMode, ReceiverBlockingMode receiverBlockingMode, size_t pipeBufferSize,
      bool throwOnEOF)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 53
    functionDepth: 0
    functionLinenumber: 53
    functionLinenumberEnd: 53
    functionName: pdns::channel::Sender::Sender
    functionSourceFile: /src/pdns/pdns/recursordist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Sender()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/channel.hh:55,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 1
    argNames:
    - ' descriptor'
    argTypes:
    - FDWrapper
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 54
    functionDepth: 0
    functionLinenumber: 54
    functionLinenumberEnd: 57
    functionName: pdns::channel::Sender::Sender
    functionSourceFile: /src/pdns/pdns/recursordist/channel.hh
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void Sender(FDWrapper&& descriptor)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 58
    functionDepth: 0
    functionLinenumber: 58
    functionLinenumberEnd: 58
    functionName: pdns::channel::Sender::Sender
    functionSourceFile: /src/pdns/pdns/recursordist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Sender(const Sender&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 59
    functionDepth: 0
    functionLinenumber: 59
    functionLinenumberEnd: 59
    functionName: '& operator=(const Sender&)'
    functionSourceFile: /src/pdns/pdns/recursordist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Sender
    signature: Sender & operator=(const Sender&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 60
    functionDepth: 0
    functionLinenumber: 60
    functionLinenumberEnd: 60
    functionName: pdns::channel::Sender::Sender
    functionSourceFile: /src/pdns/pdns/recursordist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Sender(Sender&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 61
    functionDepth: 0
    functionLinenumber: 61
    functionLinenumberEnd: 61
    functionName: '& operator=(Sender&&)'
    functionSourceFile: /src/pdns/pdns/recursordist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Sender
    signature: Sender & operator=(Sender&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 62
    functionDepth: 0
    functionLinenumber: 62
    functionLinenumberEnd: 62
    functionName: ~Sender()
    functionSourceFile: /src/pdns/pdns/recursordist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~Sender()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 86
    functionDepth: 0
    functionLinenumber: 86
    functionLinenumberEnd: 86
    functionName: pdns::channel::Receiver::Receiver
    functionSourceFile: /src/pdns/pdns/recursordist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Receiver()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/channel.hh:88,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 1
    argNames:
    - ' descriptor'
    argTypes:
    - FDWrapper
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 87
    functionDepth: 0
    functionLinenumber: 87
    functionLinenumberEnd: 90
    functionName: pdns::channel::Receiver::Receiver
    functionSourceFile: /src/pdns/pdns/recursordist/channel.hh
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void Receiver(FDWrapper&& descriptor, bool throwOnEOF = true)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 91
    functionDepth: 0
    functionLinenumber: 91
    functionLinenumberEnd: 91
    functionName: pdns::channel::Receiver::Receiver
    functionSourceFile: /src/pdns/pdns/recursordist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Receiver(const Receiver&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 92
    functionDepth: 0
    functionLinenumber: 92
    functionLinenumberEnd: 92
    functionName: '& operator=(const Receiver&)'
    functionSourceFile: /src/pdns/pdns/recursordist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Receiver
    signature: Receiver & operator=(const Receiver&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 93
    functionDepth: 0
    functionLinenumber: 93
    functionLinenumberEnd: 93
    functionName: pdns::channel::Receiver::Receiver
    functionSourceFile: /src/pdns/pdns/recursordist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Receiver(Receiver&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 94
    functionDepth: 0
    functionLinenumber: 94
    functionLinenumberEnd: 94
    functionName: '& operator=(Receiver&&)'
    functionSourceFile: /src/pdns/pdns/recursordist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Receiver
    signature: Receiver & operator=(Receiver&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 95
    functionDepth: 0
    functionLinenumber: 95
    functionLinenumberEnd: 95
    functionName: ~Receiver()
    functionSourceFile: /src/pdns/pdns/recursordist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~Receiver()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getHandle
      Src: /src/pdns/pdns/recursordist/channel.hh:113,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 111
    functionDepth: 0
    functionLinenumber: 111
    functionLinenumberEnd: 114
    functionName: pdns::channel::Receiver::getDescriptor
    functionSourceFile: /src/pdns/pdns/recursordist/channel.hh
    functionUses: 0
    functionsReached:
    - getHandle
    linkageType: ''
    returnType: int
    signature: int getDescriptor() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 118
    functionDepth: 0
    functionLinenumber: 118
    functionLinenumberEnd: 121
    functionName: pdns::channel::Receiver::isClosed
    functionSourceFile: /src/pdns/pdns/recursordist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool isClosed() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 147
    functionDepth: 0
    functionLinenumber: 147
    functionLinenumberEnd: 147
    functionName: pdns::channel::Notifier::Notifier
    functionSourceFile: /src/pdns/pdns/recursordist/channel.hh
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Notifier()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 149
      start: 149
    functionDepth: 0
    functionLinenumber: 149
    functionLinenumberEnd: 149
    functionName: pdns::channel::Notifier::Notifier
    functionSourceFile: /src/pdns/pdns/recursordist/channel.hh
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Notifier(const Notifier&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 150
      start: 150
    functionDepth: 0
    functionLinenumber: 150
    functionLinenumberEnd: 150
    functionName: '& operator=(const Notifier&)'
    functionSourceFile: /src/pdns/pdns/recursordist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Notifier
    signature: Notifier & operator=(const Notifier&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 151
      start: 151
    functionDepth: 0
    functionLinenumber: 151
    functionLinenumberEnd: 151
    functionName: pdns::channel::Notifier::Notifier
    functionSourceFile: /src/pdns/pdns/recursordist/channel.hh
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Notifier(Notifier&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 152
      start: 152
    functionDepth: 0
    functionLinenumber: 152
    functionLinenumberEnd: 152
    functionName: '& operator=(Notifier&&)'
    functionSourceFile: /src/pdns/pdns/recursordist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Notifier
    signature: Notifier & operator=(Notifier&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 153
      start: 153
    functionDepth: 0
    functionLinenumber: 153
    functionLinenumberEnd: 153
    functionName: ~Notifier()
    functionSourceFile: /src/pdns/pdns/recursordist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~Notifier()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 176
      start: 176
    functionDepth: 0
    functionLinenumber: 176
    functionLinenumberEnd: 176
    functionName: pdns::channel::Waiter::Waiter
    functionSourceFile: /src/pdns/pdns/recursordist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Waiter()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 178
      start: 178
    functionDepth: 0
    functionLinenumber: 178
    functionLinenumberEnd: 178
    functionName: pdns::channel::Waiter::Waiter
    functionSourceFile: /src/pdns/pdns/recursordist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Waiter(const Waiter&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 179
      start: 179
    functionDepth: 0
    functionLinenumber: 179
    functionLinenumberEnd: 179
    functionName: '& operator=(const Waiter&)'
    functionSourceFile: /src/pdns/pdns/recursordist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Waiter
    signature: Waiter & operator=(const Waiter&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 180
      start: 180
    functionDepth: 0
    functionLinenumber: 180
    functionLinenumberEnd: 180
    functionName: pdns::channel::Waiter::Waiter
    functionSourceFile: /src/pdns/pdns/recursordist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Waiter(Waiter&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 181
      start: 181
    functionDepth: 0
    functionLinenumber: 181
    functionLinenumberEnd: 181
    functionName: '& operator=(Waiter&&)'
    functionSourceFile: /src/pdns/pdns/recursordist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Waiter
    signature: Waiter & operator=(Waiter&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 182
      start: 182
    functionDepth: 0
    functionLinenumber: 182
    functionLinenumberEnd: 182
    functionName: ~Waiter()
    functionSourceFile: /src/pdns/pdns/recursordist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~Waiter()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 200
      start: 197
    functionDepth: 0
    functionLinenumber: 197
    functionLinenumberEnd: 200
    functionName: pdns::channel::Waiter::isClosed
    functionSourceFile: /src/pdns/pdns/recursordist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool isClosed() const
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/channel.hh:222,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/channel.hh:223,1
    - Dst: __tsan_release
      Src: /src/pdns/pdns/recursordist/channel.hh:227,1
    - Dst: write
      Src: /src/pdns/pdns/recursordist/channel.hh:229,1
    - Dst: getHandle
      Src: /src/pdns/pdns/recursordist/channel.hh:229,1
    - Dst: auto::release
      Src: /src/pdns/pdns/recursordist/channel.hh:233,1
    - Dst: __tsan_acquire
      Src: /src/pdns/pdns/recursordist/channel.hh:238,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/channel.hh:240,1
    - Dst: __tsan_acquire
      Src: /src/pdns/pdns/recursordist/channel.hh:244,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/channel.hh:250,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/channel.hh:254,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/channel.hh:254,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 23
    argCount: 1
    argNames:
    - ' object'
    argTypes:
    - std::unique_ptr<T, D>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 258
      start: 218
    functionDepth: 0
    functionLinenumber: 218
    functionLinenumberEnd: 258
    functionName: pdns::channel::Sender<T, D>::send
    functionSourceFile: /src/pdns/pdns/recursordist/channel.hh
    functionUses: 0
    functionsReached:
    - std::move
    - __tsan_acquire
    - auto::get
    - __tsan_release
    - std::runtime_error
    - stringerror
    - getHandle
    - write
    - auto::release
    linkageType: ''
    returnType: bool
    signature: bool Sender<T, D>::send(std::unique_ptr<T, D>&& object) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: reset
      Src: /src/pdns/pdns/recursordist/channel.hh:263,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 264
      start: 261
    functionDepth: 0
    functionLinenumber: 261
    functionLinenumberEnd: 264
    functionName: pdns::channel::Sender<T, D>::close
    functionSourceFile: /src/pdns/pdns/recursordist/channel.hh
    functionUses: 0
    functionsReached:
    - reset
    linkageType: ''
    returnType: void
    signature: void Sender<T, D>::close()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::channel::Receiver<T, D>::receive
      Src: /src/pdns/pdns/recursordist/channel.hh:269,1
    - Dst: D
      Src: /src/pdns/pdns/recursordist/channel.hh:269,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 270
      start: 267
    functionDepth: 0
    functionLinenumber: 267
    functionLinenumberEnd: 270
    functionName: pdns::channel::Receiver<T, D>::receive
    functionSourceFile: /src/pdns/pdns/recursordist/channel.hh
    functionUses: 11
    functionsReached:
    - pdns::channel::Receiver<T, D>::receive
    - D
    linkageType: ''
    returnType: std::optional<std::unique_ptr<T, D>>
    signature: std::optional<std::unique_ptr<T, D>> Receiver<T, D>::receive()
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: read
      Src: /src/pdns/pdns/recursordist/channel.hh:278,1
    - Dst: getHandle
      Src: /src/pdns/pdns/recursordist/channel.hh:278,1
    - Dst: __tsan_acquire
      Src: /src/pdns/pdns/recursordist/channel.hh:281,1
    - Dst: std::unique_ptr<T, D>
      Src: /src/pdns/pdns/recursordist/channel.hh:283,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/channel.hh:290,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/channel.hh:299,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/channel.hh:299,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/channel.hh:302,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 25
    argCount: 1
    argNames:
    - deleter
    argTypes:
    - D
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 305
      start: 273
    functionDepth: 0
    functionLinenumber: 273
    functionLinenumberEnd: 305
    functionName: pdns::channel::Receiver<T, D>::receive
    functionSourceFile: /src/pdns/pdns/recursordist/channel.hh
    functionUses: 11
    functionsReached:
    - __tsan_acquire
    - read
    - std::runtime_error
    - std::unique_ptr<T, D>
    - stringerror
    - getHandle
    linkageType: ''
    returnType: std::optional<std::unique_ptr<T, D>>
    signature: std::optional<std::unique_ptr<T, D>> Receiver<T, D>::receive(D deleter)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pipe
      Src: /src/pdns/pdns/recursordist/channel.hh:311,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/channel.hh:312,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/channel.hh:312,1
    - Dst: setNonBlocking
      Src: /src/pdns/pdns/recursordist/channel.hh:317,1
    - Dst: FDWrapper::getHandle
      Src: /src/pdns/pdns/recursordist/channel.hh:317,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/channel.hh:319,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/channel.hh:319,1
    - Dst: setNonBlocking
      Src: /src/pdns/pdns/recursordist/channel.hh:322,1
    - Dst: FDWrapper::getHandle
      Src: /src/pdns/pdns/recursordist/channel.hh:322,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/channel.hh:324,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/channel.hh:324,1
    - Dst: getPipeBufferSize
      Src: /src/pdns/pdns/recursordist/channel.hh:327,1
    - Dst: FDWrapper::getHandle
      Src: /src/pdns/pdns/recursordist/channel.hh:327,1
    - Dst: setPipeBufferSize
      Src: /src/pdns/pdns/recursordist/channel.hh:328,1
    - Dst: FDWrapper::getHandle
      Src: /src/pdns/pdns/recursordist/channel.hh:328,1
    - Dst: Sender<T, D>
      Src: /src/pdns/pdns/recursordist/channel.hh:331,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/channel.hh:331,1
    - Dst: Receiver<T, D>
      Src: /src/pdns/pdns/recursordist/channel.hh:331,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/channel.hh:331,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 14
    argCount: 4
    argNames:
    - senderBlockingMode
    - receiverBlockingMode
    - pipeBufferSize
    - throwOnEOF
    argTypes:
    - SenderBlockingMode
    - ReceiverBlockingMode
    - size_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 332
      start: 308
    functionDepth: 0
    functionLinenumber: 308
    functionLinenumberEnd: 332
    functionName: pdns::channel::createObjectQueue
    functionSourceFile: /src/pdns/pdns/recursordist/channel.hh
    functionUses: 0
    functionsReached:
    - std::move
    - FDWrapper::getHandle
    - std::runtime_error
    - setNonBlocking
    - stringerror
    - pipe
    - Receiver<T, D>
    - setPipeBufferSize
    - getPipeBufferSize
    - Sender<T, D>
    linkageType: ''
    returnType: std::pair<Sender<T, D>, Receiver<T, D>>
    signature: std::pair<Sender<T, D>, Receiver<T, D>> createObjectQueue(SenderBlockingMode
      senderBlockingMode, ReceiverBlockingMode receiverBlockingMode, size_t pipeBufferSize,
      bool throwOnEOF)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 53
    functionDepth: 0
    functionLinenumber: 53
    functionLinenumberEnd: 53
    functionName: pdns::channel::Sender::Sender
    functionSourceFile: /src/pdns/pdns/recursordist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Sender()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/channel.hh:55,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 1
    argNames:
    - ' descriptor'
    argTypes:
    - FDWrapper
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 54
    functionDepth: 0
    functionLinenumber: 54
    functionLinenumberEnd: 57
    functionName: pdns::channel::Sender::Sender
    functionSourceFile: /src/pdns/pdns/recursordist/channel.hh
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void Sender(FDWrapper&& descriptor)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 58
    functionDepth: 0
    functionLinenumber: 58
    functionLinenumberEnd: 58
    functionName: pdns::channel::Sender::Sender
    functionSourceFile: /src/pdns/pdns/recursordist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Sender(const Sender&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 59
    functionDepth: 0
    functionLinenumber: 59
    functionLinenumberEnd: 59
    functionName: '& operator=(const Sender&)'
    functionSourceFile: /src/pdns/pdns/recursordist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Sender
    signature: Sender & operator=(const Sender&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 60
    functionDepth: 0
    functionLinenumber: 60
    functionLinenumberEnd: 60
    functionName: pdns::channel::Sender::Sender
    functionSourceFile: /src/pdns/pdns/recursordist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Sender(Sender&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 61
    functionDepth: 0
    functionLinenumber: 61
    functionLinenumberEnd: 61
    functionName: '& operator=(Sender&&)'
    functionSourceFile: /src/pdns/pdns/recursordist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Sender
    signature: Sender & operator=(Sender&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 62
    functionDepth: 0
    functionLinenumber: 62
    functionLinenumberEnd: 62
    functionName: ~Sender()
    functionSourceFile: /src/pdns/pdns/recursordist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~Sender()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 86
    functionDepth: 0
    functionLinenumber: 86
    functionLinenumberEnd: 86
    functionName: pdns::channel::Receiver::Receiver
    functionSourceFile: /src/pdns/pdns/recursordist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Receiver()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/channel.hh:88,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 1
    argNames:
    - ' descriptor'
    argTypes:
    - FDWrapper
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 87
    functionDepth: 0
    functionLinenumber: 87
    functionLinenumberEnd: 90
    functionName: pdns::channel::Receiver::Receiver
    functionSourceFile: /src/pdns/pdns/recursordist/channel.hh
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void Receiver(FDWrapper&& descriptor, bool throwOnEOF = true)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 91
    functionDepth: 0
    functionLinenumber: 91
    functionLinenumberEnd: 91
    functionName: pdns::channel::Receiver::Receiver
    functionSourceFile: /src/pdns/pdns/recursordist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Receiver(const Receiver&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 92
    functionDepth: 0
    functionLinenumber: 92
    functionLinenumberEnd: 92
    functionName: '& operator=(const Receiver&)'
    functionSourceFile: /src/pdns/pdns/recursordist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Receiver
    signature: Receiver & operator=(const Receiver&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 93
    functionDepth: 0
    functionLinenumber: 93
    functionLinenumberEnd: 93
    functionName: pdns::channel::Receiver::Receiver
    functionSourceFile: /src/pdns/pdns/recursordist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Receiver(Receiver&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 94
    functionDepth: 0
    functionLinenumber: 94
    functionLinenumberEnd: 94
    functionName: '& operator=(Receiver&&)'
    functionSourceFile: /src/pdns/pdns/recursordist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Receiver
    signature: Receiver & operator=(Receiver&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 95
    functionDepth: 0
    functionLinenumber: 95
    functionLinenumberEnd: 95
    functionName: ~Receiver()
    functionSourceFile: /src/pdns/pdns/recursordist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~Receiver()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getHandle
      Src: /src/pdns/pdns/recursordist/channel.hh:113,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 111
    functionDepth: 0
    functionLinenumber: 111
    functionLinenumberEnd: 114
    functionName: pdns::channel::Receiver::getDescriptor
    functionSourceFile: /src/pdns/pdns/recursordist/channel.hh
    functionUses: 0
    functionsReached:
    - getHandle
    linkageType: ''
    returnType: int
    signature: int getDescriptor() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 118
    functionDepth: 0
    functionLinenumber: 118
    functionLinenumberEnd: 121
    functionName: pdns::channel::Receiver::isClosed
    functionSourceFile: /src/pdns/pdns/recursordist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool isClosed() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 147
    functionDepth: 0
    functionLinenumber: 147
    functionLinenumberEnd: 147
    functionName: pdns::channel::Notifier::Notifier
    functionSourceFile: /src/pdns/pdns/recursordist/channel.hh
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Notifier()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 149
      start: 149
    functionDepth: 0
    functionLinenumber: 149
    functionLinenumberEnd: 149
    functionName: pdns::channel::Notifier::Notifier
    functionSourceFile: /src/pdns/pdns/recursordist/channel.hh
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Notifier(const Notifier&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 150
      start: 150
    functionDepth: 0
    functionLinenumber: 150
    functionLinenumberEnd: 150
    functionName: '& operator=(const Notifier&)'
    functionSourceFile: /src/pdns/pdns/recursordist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Notifier
    signature: Notifier & operator=(const Notifier&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 151
      start: 151
    functionDepth: 0
    functionLinenumber: 151
    functionLinenumberEnd: 151
    functionName: pdns::channel::Notifier::Notifier
    functionSourceFile: /src/pdns/pdns/recursordist/channel.hh
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Notifier(Notifier&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 152
      start: 152
    functionDepth: 0
    functionLinenumber: 152
    functionLinenumberEnd: 152
    functionName: '& operator=(Notifier&&)'
    functionSourceFile: /src/pdns/pdns/recursordist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Notifier
    signature: Notifier & operator=(Notifier&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 153
      start: 153
    functionDepth: 0
    functionLinenumber: 153
    functionLinenumberEnd: 153
    functionName: ~Notifier()
    functionSourceFile: /src/pdns/pdns/recursordist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~Notifier()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 176
      start: 176
    functionDepth: 0
    functionLinenumber: 176
    functionLinenumberEnd: 176
    functionName: pdns::channel::Waiter::Waiter
    functionSourceFile: /src/pdns/pdns/recursordist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Waiter()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 178
      start: 178
    functionDepth: 0
    functionLinenumber: 178
    functionLinenumberEnd: 178
    functionName: pdns::channel::Waiter::Waiter
    functionSourceFile: /src/pdns/pdns/recursordist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Waiter(const Waiter&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 179
      start: 179
    functionDepth: 0
    functionLinenumber: 179
    functionLinenumberEnd: 179
    functionName: '& operator=(const Waiter&)'
    functionSourceFile: /src/pdns/pdns/recursordist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Waiter
    signature: Waiter & operator=(const Waiter&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 180
      start: 180
    functionDepth: 0
    functionLinenumber: 180
    functionLinenumberEnd: 180
    functionName: pdns::channel::Waiter::Waiter
    functionSourceFile: /src/pdns/pdns/recursordist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Waiter(Waiter&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 181
      start: 181
    functionDepth: 0
    functionLinenumber: 181
    functionLinenumberEnd: 181
    functionName: '& operator=(Waiter&&)'
    functionSourceFile: /src/pdns/pdns/recursordist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Waiter
    signature: Waiter & operator=(Waiter&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 182
      start: 182
    functionDepth: 0
    functionLinenumber: 182
    functionLinenumberEnd: 182
    functionName: ~Waiter()
    functionSourceFile: /src/pdns/pdns/recursordist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~Waiter()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 200
      start: 197
    functionDepth: 0
    functionLinenumber: 197
    functionLinenumberEnd: 200
    functionName: pdns::channel::Waiter::isClosed
    functionSourceFile: /src/pdns/pdns/recursordist/channel.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool isClosed() const
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/channel.hh:222,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/channel.hh:223,1
    - Dst: __tsan_release
      Src: /src/pdns/pdns/recursordist/channel.hh:227,1
    - Dst: write
      Src: /src/pdns/pdns/recursordist/channel.hh:229,1
    - Dst: getHandle
      Src: /src/pdns/pdns/recursordist/channel.hh:229,1
    - Dst: auto::release
      Src: /src/pdns/pdns/recursordist/channel.hh:233,1
    - Dst: __tsan_acquire
      Src: /src/pdns/pdns/recursordist/channel.hh:238,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/channel.hh:240,1
    - Dst: __tsan_acquire
      Src: /src/pdns/pdns/recursordist/channel.hh:244,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/channel.hh:250,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/channel.hh:254,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/channel.hh:254,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 23
    argCount: 1
    argNames:
    - ' object'
    argTypes:
    - std::unique_ptr<T, D>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 258
      start: 218
    functionDepth: 0
    functionLinenumber: 218
    functionLinenumberEnd: 258
    functionName: pdns::channel::Sender<T, D>::send
    functionSourceFile: /src/pdns/pdns/recursordist/channel.hh
    functionUses: 0
    functionsReached:
    - std::move
    - __tsan_acquire
    - auto::get
    - __tsan_release
    - std::runtime_error
    - stringerror
    - getHandle
    - write
    - auto::release
    linkageType: ''
    returnType: bool
    signature: bool Sender<T, D>::send(std::unique_ptr<T, D>&& object) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: reset
      Src: /src/pdns/pdns/recursordist/channel.hh:263,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 264
      start: 261
    functionDepth: 0
    functionLinenumber: 261
    functionLinenumberEnd: 264
    functionName: pdns::channel::Sender<T, D>::close
    functionSourceFile: /src/pdns/pdns/recursordist/channel.hh
    functionUses: 0
    functionsReached:
    - reset
    linkageType: ''
    returnType: void
    signature: void Sender<T, D>::close()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::channel::Receiver<T, D>::receive
      Src: /src/pdns/pdns/recursordist/channel.hh:269,1
    - Dst: D
      Src: /src/pdns/pdns/recursordist/channel.hh:269,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 270
      start: 267
    functionDepth: 0
    functionLinenumber: 267
    functionLinenumberEnd: 270
    functionName: pdns::channel::Receiver<T, D>::receive
    functionSourceFile: /src/pdns/pdns/recursordist/channel.hh
    functionUses: 12
    functionsReached:
    - pdns::channel::Receiver<T, D>::receive
    - D
    linkageType: ''
    returnType: std::optional<std::unique_ptr<T, D>>
    signature: std::optional<std::unique_ptr<T, D>> Receiver<T, D>::receive()
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: read
      Src: /src/pdns/pdns/recursordist/channel.hh:278,1
    - Dst: getHandle
      Src: /src/pdns/pdns/recursordist/channel.hh:278,1
    - Dst: __tsan_acquire
      Src: /src/pdns/pdns/recursordist/channel.hh:281,1
    - Dst: std::unique_ptr<T, D>
      Src: /src/pdns/pdns/recursordist/channel.hh:283,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/channel.hh:290,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/channel.hh:299,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/channel.hh:299,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/channel.hh:302,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 25
    argCount: 1
    argNames:
    - deleter
    argTypes:
    - D
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 305
      start: 273
    functionDepth: 0
    functionLinenumber: 273
    functionLinenumberEnd: 305
    functionName: pdns::channel::Receiver<T, D>::receive
    functionSourceFile: /src/pdns/pdns/recursordist/channel.hh
    functionUses: 12
    functionsReached:
    - __tsan_acquire
    - read
    - std::runtime_error
    - std::unique_ptr<T, D>
    - stringerror
    - getHandle
    linkageType: ''
    returnType: std::optional<std::unique_ptr<T, D>>
    signature: std::optional<std::unique_ptr<T, D>> Receiver<T, D>::receive(D deleter)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pipe
      Src: /src/pdns/pdns/recursordist/channel.hh:311,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/channel.hh:312,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/channel.hh:312,1
    - Dst: setNonBlocking
      Src: /src/pdns/pdns/recursordist/channel.hh:317,1
    - Dst: FDWrapper::getHandle
      Src: /src/pdns/pdns/recursordist/channel.hh:317,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/channel.hh:319,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/channel.hh:319,1
    - Dst: setNonBlocking
      Src: /src/pdns/pdns/recursordist/channel.hh:322,1
    - Dst: FDWrapper::getHandle
      Src: /src/pdns/pdns/recursordist/channel.hh:322,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/channel.hh:324,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/channel.hh:324,1
    - Dst: getPipeBufferSize
      Src: /src/pdns/pdns/recursordist/channel.hh:327,1
    - Dst: FDWrapper::getHandle
      Src: /src/pdns/pdns/recursordist/channel.hh:327,1
    - Dst: setPipeBufferSize
      Src: /src/pdns/pdns/recursordist/channel.hh:328,1
    - Dst: FDWrapper::getHandle
      Src: /src/pdns/pdns/recursordist/channel.hh:328,1
    - Dst: Sender<T, D>
      Src: /src/pdns/pdns/recursordist/channel.hh:331,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/channel.hh:331,1
    - Dst: Receiver<T, D>
      Src: /src/pdns/pdns/recursordist/channel.hh:331,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/channel.hh:331,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 14
    argCount: 4
    argNames:
    - senderBlockingMode
    - receiverBlockingMode
    - pipeBufferSize
    - throwOnEOF
    argTypes:
    - SenderBlockingMode
    - ReceiverBlockingMode
    - size_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 332
      start: 308
    functionDepth: 0
    functionLinenumber: 308
    functionLinenumberEnd: 332
    functionName: pdns::channel::createObjectQueue
    functionSourceFile: /src/pdns/pdns/recursordist/channel.hh
    functionUses: 0
    functionsReached:
    - std::move
    - FDWrapper::getHandle
    - std::runtime_error
    - setNonBlocking
    - stringerror
    - pipe
    - Receiver<T, D>
    - setPipeBufferSize
    - getPipeBufferSize
    - Sender<T, D>
    linkageType: ''
    returnType: std::pair<Sender<T, D>, Receiver<T, D>>
    signature: std::pair<Sender<T, D>, Receiver<T, D>> createObjectQueue(SenderBlockingMode
      senderBlockingMode, ReceiverBlockingMode receiverBlockingMode, size_t pipeBufferSize,
      bool throwOnEOF)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RecEventTrace::reset
      Src: /src/pdns/pdns/recursordist/rec-eventtrace.hh:68,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 66
    functionDepth: 0
    functionLinenumber: 66
    functionLinenumberEnd: 69
    functionName: RecEventTrace::RecEventTrace
    functionSourceFile: /src/pdns/pdns/recursordist/rec-eventtrace.hh
    functionUses: 1
    functionsReached:
    - RecEventTrace::reset
    linkageType: ''
    returnType: void
    signature: void RecEventTrace()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' old'
    argTypes:
    - RecEventTrace
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 71
    functionDepth: 0
    functionLinenumber: 71
    functionLinenumberEnd: 81
    functionName: RecEventTrace::RecEventTrace
    functionSourceFile: /src/pdns/pdns/recursordist/rec-eventtrace.hh
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void RecEventTrace(const RecEventTrace& old)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/rec-eventtrace.hh:84,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - ' old'
    argTypes:
    - RecEventTrace
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 83
    functionDepth: 0
    functionLinenumber: 83
    functionLinenumberEnd: 93
    functionName: RecEventTrace::RecEventTrace
    functionSourceFile: /src/pdns/pdns/recursordist/rec-eventtrace.hh
    functionUses: 1
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void RecEventTrace(RecEventTrace&& old) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 1
    argNames:
    - ' old'
    argTypes:
    - RecEventTrace
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 95
    functionDepth: 0
    functionLinenumber: 95
    functionLinenumberEnd: 95
    functionName: '& operator=(const RecEventTrace& old)'
    functionSourceFile: /src/pdns/pdns/recursordist/rec-eventtrace.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: RecEventTrace
    signature: RecEventTrace & operator=(const RecEventTrace& old)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/rec-eventtrace.hh:98,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - ' old'
    argTypes:
    - RecEventTrace
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 104
      start: 96
    functionDepth: 0
    functionLinenumber: 96
    functionLinenumberEnd: 104
    functionName: '& operator=(RecEventTrace&& old) noexcept'
    functionSourceFile: /src/pdns/pdns/recursordist/rec-eventtrace.hh
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: RecEventTrace
    signature: RecEventTrace & operator=(RecEventTrace&& old) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 106
    functionDepth: 0
    functionLinenumber: 106
    functionLinenumberEnd: 106
    functionName: ~RecEventTrace()
    functionSourceFile: /src/pdns/pdns/recursordist/rec-eventtrace.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~RecEventTrace()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: at
      Src: /src/pdns/pdns/recursordist/rec-eventtrace.hh:113,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - eventType
    argTypes:
    - EventType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 111
    functionDepth: 0
    functionLinenumber: 111
    functionLinenumberEnd: 114
    functionName: RecEventTrace::toString
    functionSourceFile: /src/pdns/pdns/recursordist/rec-eventtrace.hh
    functionUses: 2
    functionsReached:
    - at
    linkageType: ''
    returnType: std::string
    signature: std::string toString(const EventType eventType)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: std::holds_alternative<std::nullopt_t>
      Src: /src/pdns/pdns/recursordist/rec-eventtrace.hh:118,1
    - Dst: std::holds_alternative<bool>
      Src: /src/pdns/pdns/recursordist/rec-eventtrace.hh:121,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/rec-eventtrace.hh:122,1
    - Dst: std::get<bool>
      Src: /src/pdns/pdns/recursordist/rec-eventtrace.hh:122,1
    - Dst: std::holds_alternative<int64_t>
      Src: /src/pdns/pdns/recursordist/rec-eventtrace.hh:124,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/rec-eventtrace.hh:125,1
    - Dst: std::get<int64_t>
      Src: /src/pdns/pdns/recursordist/rec-eventtrace.hh:125,1
    - Dst: std::holds_alternative<std::string>
      Src: /src/pdns/pdns/recursordist/rec-eventtrace.hh:127,1
    - Dst: std::get<std::string>
      Src: /src/pdns/pdns/recursordist/rec-eventtrace.hh:128,1
    - Dst: std::holds_alternative<PacketBuffer>
      Src: /src/pdns/pdns/recursordist/rec-eventtrace.hh:130,1
    - Dst: std::get<PacketBuffer>
      Src: /src/pdns/pdns/recursordist/rec-eventtrace.hh:131,1
    - Dst: makeHexDump
      Src: /src/pdns/pdns/recursordist/rec-eventtrace.hh:132,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/rec-eventtrace.hh:132,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/recursordist/rec-eventtrace.hh:132,1
    - Dst: data
      Src: /src/pdns/pdns/recursordist/rec-eventtrace.hh:132,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/rec-eventtrace.hh:132,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 1
    argNames:
    - ' value'
    argTypes:
    - Value_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 135
      start: 116
    functionDepth: 0
    functionLinenumber: 116
    functionLinenumberEnd: 135
    functionName: RecEventTrace::toString
    functionSourceFile: /src/pdns/pdns/recursordist/rec-eventtrace.hh
    functionUses: 2
    functionsReached:
    - std::holds_alternative<std::string>
    - std::holds_alternative<PacketBuffer>
    - std::to_string
    - std::get<std::string>
    - data
    - std::holds_alternative<std::nullopt_t>
    - std::get<PacketBuffer>
    - size
    - std::holds_alternative<bool>
    - reinterpret_cast<const char*>
    - std::holds_alternative<int64_t>
    - std::get<int64_t>
    - std::string
    - std::get<bool>
    - makeHexDump
    linkageType: ''
    returnType: std::string
    signature: std::string toString(const Value_t& value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/rec-eventtrace.hh:140,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 6
    argNames:
    - ' value'
    - eventType
    - start
    - timestamp
    - parent
    - match
    argTypes:
    - Value_t
    - EventType
    - bool
    - int64_t
    - size_t
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 142
      start: 139
    functionDepth: 0
    functionLinenumber: 139
    functionLinenumberEnd: 142
    functionName: RecEventTrace::Entry
    functionSourceFile: /src/pdns/pdns/recursordist/rec-eventtrace.hh
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void Entry(Value_t&& value, EventType eventType, bool start, int64_t
      timestamp, size_t parent, size_t match)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/rec-eventtrace.hh:144,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/rec-eventtrace.hh:144,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 6
    argNames:
    - ' value'
    - custom
    - start
    - timestamp
    - parent
    - match
    argTypes:
    - Value_t
    - std::string
    - bool
    - int64_t
    - size_t
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 146
      start: 143
    functionDepth: 0
    functionLinenumber: 143
    functionLinenumberEnd: 146
    functionName: RecEventTrace::Entry
    functionSourceFile: /src/pdns/pdns/recursordist/rec-eventtrace.hh
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void Entry(Value_t&& value, std::string custom, bool start, int64_t
      timestamp, size_t parent, size_t match)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: RecEventTrace::toString
      Src: /src/pdns/pdns/recursordist/rec-eventtrace.hh:159,1
    - Dst: std::string::empty
      Src: /src/pdns/pdns/recursordist/rec-eventtrace.hh:160,1
    - Dst: RecEventTrace::toString
      Src: /src/pdns/pdns/recursordist/rec-eventtrace.hh:163,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/rec-eventtrace.hh:168,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 169
      start: 157
    functionDepth: 0
    functionLinenumber: 157
    functionLinenumberEnd: 169
    functionName: RecEventTrace::toString
    functionSourceFile: /src/pdns/pdns/recursordist/rec-eventtrace.hh
    functionUses: 3
    functionsReached:
    - std::string::empty
    - std::to_string
    - RecEventTrace::toString
    linkageType: ''
    returnType: std::string
    signature: std::string toString() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/pdns/pdns/recursordist/rec-eventtrace.hh:174,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - flag
    argTypes:
    - bool
    assertStmts:
    - condition: (d_status != Invalid)
      pos:
        line_end: 173
        line_start: 173
        source_file: /src/pdns/pdns/recursordist/rec-eventtrace.hh
    constantsTouched: []
    func_position:
      end: 176
      start: 172
    functionDepth: 0
    functionLinenumber: 172
    functionLinenumberEnd: 176
    functionName: RecEventTrace::setEnabled
    functionSourceFile: /src/pdns/pdns/recursordist/rec-eventtrace.hh
    functionUses: 1
    functionsReached:
    - assert
    linkageType: ''
    returnType: void
    signature: void setEnabled(bool flag)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 181
      start: 178
    functionDepth: 0
    functionLinenumber: 178
    functionLinenumberEnd: 181
    functionName: RecEventTrace::enabled
    functionSourceFile: /src/pdns/pdns/recursordist/rec-eventtrace.hh
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool enabled() const
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/pdns/pdns/recursordist/rec-eventtrace.hh:186,1
    - Dst: clock_gettime
      Src: /src/pdns/pdns/recursordist/rec-eventtrace.hh:193,1
    - Dst: emplace_back
      Src: /src/pdns/pdns/recursordist/rec-eventtrace.hh:208,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/rec-eventtrace.hh:208,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/rec-eventtrace.hh:209,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 4
    argNames:
    - event
    - ' value'
    - start
    - match
    argTypes:
    - E
    - Value_t
    - bool
    - size_t
    assertStmts:
    - condition: (d_status != Invalid)
      pos:
        line_end: 185
        line_start: 185
        source_file: /src/pdns/pdns/recursordist/rec-eventtrace.hh
    constantsTouched: []
    func_position:
      end: 210
      start: 184
    functionDepth: 0
    functionLinenumber: 184
    functionLinenumberEnd: 210
    functionName: RecEventTrace::add
    functionSourceFile: /src/pdns/pdns/recursordist/rec-eventtrace.hh
    functionUses: 1
    functionsReached:
    - std::move
    - size
    - assert
    - emplace_back
    - clock_gettime
    linkageType: ''
    returnType: size_t
    signature: size_t add(E event, Value_t&& value, bool start, size_t match, int64_t
      stamp = 0)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RecEventTrace::add
      Src: /src/pdns/pdns/recursordist/rec-eventtrace.hh:215,1
    - Dst: Value_t
      Src: /src/pdns/pdns/recursordist/rec-eventtrace.hh:215,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - eventType
    argTypes:
    - E
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 216
      start: 213
    functionDepth: 0
    functionLinenumber: 213
    functionLinenumberEnd: 216
    functionName: RecEventTrace::add
    functionSourceFile: /src/pdns/pdns/recursordist/rec-eventtrace.hh
    functionUses: 2
    functionsReached:
    - RecEventTrace::add
    - Value_t
    linkageType: ''
    returnType: size_t
    signature: size_t add(E eventType)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RecEventTrace::add
      Src: /src/pdns/pdns/recursordist/rec-eventtrace.hh:222,1
    - Dst: static_cast<int64_t>
      Src: /src/pdns/pdns/recursordist/rec-eventtrace.hh:222,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - eventType
    - value
    - start
    - match
    argTypes:
    - E
    - uint32_t
    - bool
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 223
      start: 220
    functionDepth: 0
    functionLinenumber: 220
    functionLinenumberEnd: 223
    functionName: RecEventTrace::add
    functionSourceFile: /src/pdns/pdns/recursordist/rec-eventtrace.hh
    functionUses: 3
    functionsReached:
    - RecEventTrace::add
    - static_cast<int64_t>
    linkageType: ''
    returnType: size_t
    signature: size_t add(E eventType, uint32_t value, bool start, size_t match)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RecEventTrace::add
      Src: /src/pdns/pdns/recursordist/rec-eventtrace.hh:228,1
    - Dst: static_cast<int64_t>
      Src: /src/pdns/pdns/recursordist/rec-eventtrace.hh:228,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - eventType
    - value
    - start
    - match
    argTypes:
    - E
    - int32_t
    - bool
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 229
      start: 226
    functionDepth: 0
    functionLinenumber: 226
    functionLinenumberEnd: 229
    functionName: RecEventTrace::add
    functionSourceFile: /src/pdns/pdns/recursordist/rec-eventtrace.hh
    functionUses: 4
    functionsReached:
    - RecEventTrace::add
    - static_cast<int64_t>
    linkageType: ''
    returnType: size_t
    signature: size_t add(E eventType, int32_t value, bool start, size_t match)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RecEventTrace::add
      Src: /src/pdns/pdns/recursordist/rec-eventtrace.hh:234,1
    - Dst: Value_t
      Src: /src/pdns/pdns/recursordist/rec-eventtrace.hh:234,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - eventType
    - value
    - start
    - match
    argTypes:
    - E
    - T
    - bool
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 235
      start: 232
    functionDepth: 0
    functionLinenumber: 232
    functionLinenumberEnd: 235
    functionName: RecEventTrace::add
    functionSourceFile: /src/pdns/pdns/recursordist/rec-eventtrace.hh
    functionUses: 5
    functionsReached:
    - RecEventTrace::add
    - Value_t
    linkageType: ''
    returnType: size_t
    signature: size_t add(E eventType, T value, bool start, size_t match)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/pdns/pdns/recursordist/rec-eventtrace.hh:239,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/rec-eventtrace.hh:243,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - index
    - ' name'
    argTypes:
    - size_t
    - std::string
    assertStmts:
    - condition: (d_status != Invalid)
      pos:
        line_end: 238
        line_start: 238
        source_file: /src/pdns/pdns/recursordist/rec-eventtrace.hh
    constantsTouched: []
    func_position:
      end: 244
      start: 237
    functionDepth: 0
    functionLinenumber: 237
    functionLinenumberEnd: 244
    functionName: RecEventTrace::setValueName
    functionSourceFile: /src/pdns/pdns/recursordist/rec-eventtrace.hh
    functionUses: 0
    functionsReached:
    - at
    - assert
    linkageType: ''
    returnType: void
    signature: void setValueName(size_t index, const std::string& name)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/pdns/pdns/recursordist/rec-eventtrace.hh:248,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/rec-eventtrace.hh:252,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/rec-eventtrace.hh:252,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - index
    - ' values'
    argTypes:
    - size_t
    - std::vector<std::pair<std::string, Value_t>>
    assertStmts:
    - condition: (d_status != Invalid)
      pos:
        line_end: 247
        line_start: 247
        source_file: /src/pdns/pdns/recursordist/rec-eventtrace.hh
    constantsTouched: []
    func_position:
      end: 253
      start: 246
    functionDepth: 0
    functionLinenumber: 246
    functionLinenumberEnd: 253
    functionName: RecEventTrace::addExtraValues
    functionSourceFile: /src/pdns/pdns/recursordist/rec-eventtrace.hh
    functionUses: 0
    functionsReached:
    - std::move
    - at
    - assert
    linkageType: ''
    returnType: void
    signature: void addExtraValues(size_t index, std::vector<std::pair<std::string,
      Value_t>>&& values)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RecEventTrace::clear
      Src: /src/pdns/pdns/recursordist/rec-eventtrace.hh:257,1
    - Dst: RecEventTrace::reset
      Src: /src/pdns/pdns/recursordist/rec-eventtrace.hh:258,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 259
      start: 255
    functionDepth: 0
    functionLinenumber: 255
    functionLinenumberEnd: 259
    functionName: RecEventTrace::clear
    functionSourceFile: /src/pdns/pdns/recursordist/rec-eventtrace.hh
    functionUses: 2
    functionsReached:
    - RecEventTrace::clear
    - RecEventTrace::reset
    linkageType: ''
    returnType: void
    signature: void clear()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: clock_gettime
      Src: /src/pdns/pdns/recursordist/rec-eventtrace.hh:264,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 268
      start: 261
    functionDepth: 0
    functionLinenumber: 261
    functionLinenumberEnd: 268
    functionName: RecEventTrace::reset
    functionSourceFile: /src/pdns/pdns/recursordist/rec-eventtrace.hh
    functionUses: 2
    functionsReached:
    - clock_gettime
    linkageType: ''
    returnType: void
    signature: void reset()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/pdns/pdns/recursordist/rec-eventtrace.hh:272,1
    - Dst: RecEventTrace::toString
      Src: /src/pdns/pdns/recursordist/rec-eventtrace.hh:285,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (d_status != Invalid)
      pos:
        line_end: 271
        line_start: 271
        source_file: /src/pdns/pdns/recursordist/rec-eventtrace.hh
    constantsTouched: []
    func_position:
      end: 289
      start: 270
    functionDepth: 0
    functionLinenumber: 270
    functionLinenumberEnd: 289
    functionName: RecEventTrace::toString
    functionSourceFile: /src/pdns/pdns/recursordist/rec-eventtrace.hh
    functionUses: 4
    functionsReached:
    - assert
    - RecEventTrace::toString
    linkageType: ''
    returnType: std::string
    signature: std::string toString() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 294
      start: 291
    functionDepth: 0
    functionLinenumber: 291
    functionLinenumberEnd: 294
    functionName: '& getEvents() const'
    functionSourceFile: /src/pdns/pdns/recursordist/rec-eventtrace.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::vector<Entry>
    signature: std::vector<Entry> & getEvents() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - parent
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 303
      start: 298
    functionDepth: 0
    functionLinenumber: 298
    functionLinenumberEnd: 303
    functionName: RecEventTrace::setParent
    functionSourceFile: /src/pdns/pdns/recursordist/rec-eventtrace.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: size_t setParent(size_t parent)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 308
      start: 305
    functionDepth: 0
    functionLinenumber: 305
    functionLinenumberEnd: 308
    functionName: RecEventTrace::getThisOTTraceEnabled
    functionSourceFile: /src/pdns/pdns/recursordist/rec-eventtrace.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool getThisOTTraceEnabled() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 313
      start: 310
    functionDepth: 0
    functionLinenumber: 310
    functionLinenumberEnd: 313
    functionName: RecEventTrace::setThisOTTraceEnabled
    functionSourceFile: /src/pdns/pdns/recursordist/rec-eventtrace.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setThisOTTraceEnabled()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: enabled
      Src: /src/pdns/pdns/recursordist/rec-eventtrace.hh:325,1
    - Dst: d_events::empty
      Src: /src/pdns/pdns/recursordist/rec-eventtrace.hh:325,1
    - Dst: d_events::back
      Src: /src/pdns/pdns/recursordist/rec-eventtrace.hh:326,1
    - Dst: d_events::size
      Src: /src/pdns/pdns/recursordist/rec-eventtrace.hh:327,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - oldParent
    - ' eventTrace'
    argTypes:
    - size_t
    - RecEventTrace
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 329
      start: 321
    functionDepth: 0
    functionLinenumber: 321
    functionLinenumberEnd: 329
    functionName: RecEventTrace::EventScope::EventScope
    functionSourceFile: /src/pdns/pdns/recursordist/rec-eventtrace.hh
    functionUses: 0
    functionsReached:
    - d_events::empty
    - d_events::size
    - enabled
    - d_events::back
    linkageType: ''
    returnType: void
    signature: void EventScope(size_t oldParent, RecEventTrace& eventTrace)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: enabled
      Src: /src/pdns/pdns/recursordist/rec-eventtrace.hh:334,1
    - Dst: setParent
      Src: /src/pdns/pdns/recursordist/rec-eventtrace.hh:337,1
    - Dst: add
      Src: /src/pdns/pdns/recursordist/rec-eventtrace.hh:338,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - val
    argTypes:
    - int64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 340
      start: 332
    functionDepth: 0
    functionLinenumber: 332
    functionLinenumberEnd: 340
    functionName: RecEventTrace::EventScope::close
    functionSourceFile: /src/pdns/pdns/recursordist/rec-eventtrace.hh
    functionUses: 3
    functionsReached:
    - setParent
    - add
    - enabled
    linkageType: ''
    returnType: void
    signature: void close(int64_t val)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: close
      Src: /src/pdns/pdns/recursordist/rec-eventtrace.hh:346,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 347
      start: 342
    functionDepth: 0
    functionLinenumber: 342
    functionLinenumberEnd: 347
    functionName: ~EventScope()
    functionSourceFile: /src/pdns/pdns/recursordist/rec-eventtrace.hh
    functionUses: 0
    functionsReached:
    - close
    linkageType: ''
    returnType: void
    signature: void ~EventScope()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 348
      start: 348
    functionDepth: 0
    functionLinenumber: 348
    functionLinenumberEnd: 348
    functionName: RecEventTrace::EventScope::EventScope
    functionSourceFile: /src/pdns/pdns/recursordist/rec-eventtrace.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void EventScope(const EventScope&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 349
      start: 349
    functionDepth: 0
    functionLinenumber: 349
    functionLinenumberEnd: 349
    functionName: RecEventTrace::EventScope::EventScope
    functionSourceFile: /src/pdns/pdns/recursordist/rec-eventtrace.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void EventScope(EventScope&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 350
      start: 350
    functionDepth: 0
    functionLinenumber: 350
    functionLinenumberEnd: 350
    functionName: '& operator=(const EventScope&)'
    functionSourceFile: /src/pdns/pdns/recursordist/rec-eventtrace.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: EventScope
    signature: EventScope & operator=(const EventScope&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 351
      start: 351
    functionDepth: 0
    functionLinenumber: 351
    functionLinenumberEnd: 351
    functionName: '& operator=(EventScope&&)'
    functionSourceFile: /src/pdns/pdns/recursordist/rec-eventtrace.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: EventScope
    signature: EventScope & operator=(EventScope&&)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:16,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:18,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:23,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:26,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:27,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:29,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:30,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:32,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:33,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:35,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:36,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:38,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:39,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:41,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:42,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:43,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:48,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:49,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:50,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:51,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:54,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:67,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:67,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:68,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:71,1
    - Dst: reason::find
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:71,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:79,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:79,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:80,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:81,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:81,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:82,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:83,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:84,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:84,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:84,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:87,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 56
    argCount: 1
    argNames:
    - limited
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 13
    functionDepth: 1
    functionLinenumber: 13
    functionLinenumberEnd: 90
    functionName: do_test_referral_depth
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc2.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - std::unique_ptr::setAsyncCallback
    - getRR
    - primeHints
    - QType
    - reason::find
    - addRecordToLW
    - DNSName
    - initSR
    - BOOST_CHECK_EQUAL
    - std::unique_ptr::beginResolve
    - BOOST_REQUIRE
    - isRootServer
    - vector::size
    - BOOST_CHECK
    - BOOST_REQUIRE_EQUAL
    - ComboAddress
    linkageType: ''
    returnType: void
    signature: void do_test_referral_depth(bool limited)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: do_test_referral_depth
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:95,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 92
    functionDepth: 2
    functionLinenumber: 92
    functionLinenumberEnd: 96
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc2.cc
    functionUses: 0
    functionsReached:
    - do_test_referral_depth
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_referral_depth)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: do_test_referral_depth
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:101,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 98
    functionDepth: 2
    functionLinenumber: 98
    functionLinenumberEnd: 102
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc2.cc
    functionUses: 0
    functionsReached:
    - do_test_referral_depth
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_referral_depth_ok)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:107,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:115,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:121,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:124,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:125,1
    - Dst: isPartOf
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:127,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:127,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:128,1
    - Dst: isPartOf
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:130,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:130,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:131,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:134,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:138,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:139,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:142,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:142,1
    - Dst: isPartOf
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:143,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:144,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:145,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:146,1
    - Dst: isPartOf
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:149,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:150,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:151,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:152,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:155,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:164,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:164,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:165,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:166,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:166,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:167,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 43
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 168
      start: 104
    functionDepth: 1
    functionLinenumber: 104
    functionLinenumberEnd: 168
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc2.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - std::unique_ptr::setAsyncCallback
    - isPartOf
    - primeHints
    - QType
    - addRecordToLW
    - DNSName
    - initSR
    - BOOST_CHECK_EQUAL
    - std::unique_ptr::beginResolve
    - isRootServer
    - vector::size
    - BOOST_REQUIRE_EQUAL
    - ComboAddress
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_glueless_referral_loop)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:173,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:181,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:187,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:190,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:191,1
    - Dst: isPartOf
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:193,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:193,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:194,1
    - Dst: isPartOf
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:196,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:196,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:197,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:200,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:204,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:205,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:208,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:208,1
    - Dst: isPartOf
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:209,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:210,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:211,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:212,1
    - Dst: isPartOf
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:215,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:216,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:217,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:218,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:221,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:233,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:233,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:234,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:235,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:235,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:238,1
    - Dst: SyncRes::getNonResolvingNSSize
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:238,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 45
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 239
      start: 170
    functionDepth: 1
    functionLinenumber: 170
    functionLinenumberEnd: 239
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc2.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - SyncRes::getNonResolvingNSSize
    - std::unique_ptr::setAsyncCallback
    - isPartOf
    - primeHints
    - QType
    - addRecordToLW
    - DNSName
    - initSR
    - BOOST_CHECK_EQUAL
    - std::unique_ptr::beginResolve
    - isRootServer
    - vector::size
    - BOOST_REQUIRE_EQUAL
    - ComboAddress
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_glueless_referral_loop_with_nonresolving)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:244,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:246,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:252,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:253,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:254,1
    - Dst: isPartOf
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:256,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:256,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:257,1
    - Dst: isPartOf
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:259,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:259,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:260,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:263,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:267,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:268,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:271,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:271,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:273,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:274,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:275,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:278,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:280,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:282,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:283,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:287,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:289,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:291,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:292,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:297,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:300,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:300,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:300,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:300,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:301,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:302,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:312,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:312,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:313,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:314,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:314,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:315,1
    - Dst: SyncRes::getNonResolvingNSSize
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:315,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:318,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:318,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:319,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:320,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:320,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:324,1
    - Dst: SyncRes::getNonResolvingNSSize
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:324,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:328,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:328,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:329,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:330,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:330,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:331,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:332,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:333,1
    - Dst: SyncRes::getNonResolvingNSSize
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:333,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 69
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 334
      start: 241
    functionDepth: 1
    functionLinenumber: 241
    functionLinenumberEnd: 334
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc2.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - SyncRes::getNonResolvingNSSize
    - std::unique_ptr::setAsyncCallback
    - isPartOf
    - BOOST_CHECK
    - primeHints
    - QType
    - addRecordToLW
    - DNSName
    - initSR
    - BOOST_CHECK_EQUAL
    - std::unique_ptr::beginResolve
    - isRootServer
    - vector::size
    - BOOST_REQUIRE_EQUAL
    - ComboAddress
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_glueless_referral_with_non_resolving)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:339,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:341,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:346,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:349,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:351,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:352,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:353,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:356,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:358,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:359,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:359,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:371,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:371,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:372,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:375,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 25
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 377
      start: 336
    functionDepth: 1
    functionLinenumber: 336
    functionLinenumberEnd: 377
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc2.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - std::unique_ptr::setAsyncCallback
    - std::to_string
    - primeHints
    - QType
    - addRecordToLW
    - BOOST_CHECK_EQUAL
    - initSR
    - std::unique_ptr::beginResolve
    - isRootServer
    - BOOST_CHECK
    - ComboAddress
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_cname_qperq)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:382,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:384,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:390,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:391,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:393,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:394,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:395,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:395,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:402,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:403,1
    - Dst: std::unique_ptr::getNow
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:412,1
    - Dst: SyncRes::doThrottle
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:413,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:416,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:416,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:417,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:418,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:418,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:420,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 22
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 421
      start: 379
    functionDepth: 1
    functionLinenumber: 379
    functionLinenumberEnd: 421
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc2.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - std::unique_ptr::setAsyncCallback
    - primeHints
    - QType
    - addRecordToLW
    - SyncRes::doThrottle
    - std::unique_ptr::getNow
    - initSR
    - BOOST_CHECK_EQUAL
    - std::unique_ptr::beginResolve
    - ComboAddress::toString
    - isRootServer
    - vector::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_throttled_server)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:426,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:428,1
    - Dst: std::unique_ptr::getNow
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:434,1
    - Dst: SyncRes::doThrottle
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:435,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:438,1
    - Dst: SyncRes::isThrottled
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:438,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:442,1
    - Dst: SyncRes::isThrottled
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:442,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 443
      start: 423
    functionDepth: 1
    functionLinenumber: 423
    functionLinenumberEnd: 443
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc2.cc
    functionUses: 0
    functionsReached:
    - primeHints
    - SyncRes::doThrottle
    - std::unique_ptr::getNow
    - initSR
    - SyncRes::isThrottled
    - BOOST_CHECK
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_throttled_server_count)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:448,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:450,1
    - Dst: std::unique_ptr::getNow
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:456,1
    - Dst: SyncRes::doThrottle
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:457,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:459,1
    - Dst: SyncRes::isThrottled
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:459,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:462,1
    - Dst: SyncRes::isThrottled
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:462,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 463
      start: 445
    functionDepth: 1
    functionLinenumber: 445
    functionLinenumberEnd: 463
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc2.cc
    functionUses: 0
    functionsReached:
    - primeHints
    - SyncRes::doThrottle
    - std::unique_ptr::getNow
    - initSR
    - SyncRes::isThrottled
    - BOOST_CHECK
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_throttled_server_time)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:468,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:470,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:476,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:477,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:479,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:480,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:481,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:481,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:488,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:489,1
    - Dst: SyncRes::addDontQuery
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:498,1
    - Dst: Netmask
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:498,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:501,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:501,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:502,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:503,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:503,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:505,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 22
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 506
      start: 465
    functionDepth: 1
    functionLinenumber: 465
    functionLinenumberEnd: 506
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc2.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - Netmask
    - std::unique_ptr::setAsyncCallback
    - primeHints
    - QType
    - addRecordToLW
    - BOOST_CHECK_EQUAL
    - initSR
    - std::unique_ptr::beginResolve
    - ComboAddress::toString
    - isRootServer
    - vector::size
    - SyncRes::addDontQuery
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_dont_query_server)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:511,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:513,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:520,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:523,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:526,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:527,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:530,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:531,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:532,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:532,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:539,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:540,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:551,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:551,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:552,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:553,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:553,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:555,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:555,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:557,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:558,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:558,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:559,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:560,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:560,1
    - Dst: BOOST_CHECK_LE
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:561,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:563,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:563,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:566,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 34
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 567
      start: 508
    functionDepth: 1
    functionLinenumber: 508
    functionLinenumberEnd: 567
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc2.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - std::unique_ptr::setAsyncCallback
    - primeHints
    - QType
    - addRecordToLW
    - BOOST_CHECK_EQUAL
    - initSR
    - size
    - std::unique_ptr::beginResolve
    - ComboAddress::toString
    - isRootServer
    - vector::size
    - vector::clear
    - BOOST_CHECK_LE
    - BOOST_REQUIRE_EQUAL
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_root_nx_trust)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:572,1
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:573,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:575,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:585,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:588,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:591,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:592,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:595,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:596,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:597,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:597,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:604,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:605,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:614,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:614,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:615,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:616,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:616,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:620,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:620,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:622,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:623,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:623,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:624,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:625,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:625,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:626,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:627,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:628,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:628,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:628,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:630,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:630,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:632,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 36
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 633
      start: 569
    functionDepth: 1
    functionLinenumber: 569
    functionLinenumberEnd: 633
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc2.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - std::unique_ptr::setAsyncCallback
    - getRR
    - BOOST_CHECK
    - primeHints
    - QType
    - addRecordToLW
    - BOOST_CHECK_EQUAL
    - initSR
    - size
    - std::unique_ptr::beginResolve
    - ComboAddress::toString
    - isRootServer
    - BOOST_REQUIRE
    - vector::size
    - vector::clear
    - BOOST_REQUIRE_EQUAL
    - ComboAddress
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_root_nx_trust_specific)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:638,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:640,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:647,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:650,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:653,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:654,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:657,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:658,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:659,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:659,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:666,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:667,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:678,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:678,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:679,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:680,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:680,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:682,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:682,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:684,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:685,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:685,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:686,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:687,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:687,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:689,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:689,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:692,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 33
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 693
      start: 635
    functionDepth: 1
    functionLinenumber: 635
    functionLinenumberEnd: 693
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc2.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - std::unique_ptr::setAsyncCallback
    - primeHints
    - QType
    - addRecordToLW
    - BOOST_CHECK_EQUAL
    - initSR
    - size
    - std::unique_ptr::beginResolve
    - ComboAddress::toString
    - isRootServer
    - vector::size
    - vector::clear
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_root_nx_dont_trust)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:698,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:701,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:710,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:713,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:714,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:715,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:716,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:716,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:720,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:721,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:728,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:728,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:729,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:730,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:730,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:731,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:732,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:732,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:734,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:735,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:735,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:736,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:737,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:737,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:738,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:739,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:739,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:741,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:742,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:742,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:743,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:744,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:744,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:745,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:746,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:746,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:748,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:749,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:749,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:750,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:751,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:751,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:752,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:753,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:753,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:759,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:760,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:760,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:761,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:762,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:762,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:763,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:764,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:764,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:767,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:768,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:768,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:769,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:770,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:770,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:771,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:772,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:772,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:774,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:775,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:775,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:776,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:777,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:777,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:778,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:779,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:779,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:781,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:782,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:782,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:783,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:784,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:784,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:785,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:786,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:786,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 67
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 790
      start: 695
    functionDepth: 1
    functionLinenumber: 695
    functionLinenumberEnd: 790
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc2.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - std::unique_ptr::setAsyncCallback
    - primeHints
    - QType
    - addRecordToLW
    - BOOST_CHECK_EQUAL
    - initSR
    - size
    - std::unique_ptr::beginResolve
    - ComboAddress::toString
    - isRootServer
    - vector::size
    - vector::clear
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_rfc8020_nothing_underneath)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:795,1
    - Dst: setDNSSECValidation
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:796,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:798,1
    - Dst: getCopy
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:810,1
    - Dst: auto::dsAnchors::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:811,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:812,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:813,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:814,1
    - Dst: setState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:815,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:819,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:824,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:828,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:829,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:829,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:830,1
    - Dst: addNSECRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:831,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:831,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:831,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:832,1
    - Dst: genericDSAndDNSKEYHandler
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:835,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:838,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:839,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:840,1
    - Dst: addDS
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:841,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:841,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:842,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:842,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:843,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:846,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:847,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:848,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:849,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:850,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:851,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:852,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:855,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:856,1
    - Dst: addDS
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:857,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:858,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:858,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:859,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:863,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:865,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:866,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:867,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:868,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:868,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:869,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:870,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:870,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:874,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:875,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:875,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:876,1
    - Dst: addNSECRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:877,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:877,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:877,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:878,1
    - Dst: addNSECRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:880,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:880,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:880,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:881,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:891,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:891,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:892,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:893,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:893,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:894,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:894,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:895,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:896,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:896,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:898,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:899,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:899,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:900,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:901,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:901,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:902,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:902,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:903,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:904,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:904,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:906,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:907,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:907,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:908,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:909,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:909,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:910,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:910,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:911,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:912,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:912,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:914,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:915,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:915,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:916,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:917,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:917,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:918,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:918,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:919,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:920,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:920,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:926,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:927,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:927,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:928,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:929,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:929,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:930,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:930,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:931,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:932,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:932,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:935,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:936,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:936,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:937,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:938,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:938,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:939,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:939,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:940,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:941,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:941,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:943,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:944,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:944,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:945,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:946,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:946,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:947,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:947,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:948,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:949,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:949,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:951,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:952,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:952,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:953,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:954,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:954,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:955,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:955,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:956,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:957,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:957,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 128
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 961
      start: 792
    functionDepth: 1
    functionLinenumber: 792
    functionLinenumberEnd: 961
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc2.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - genericDSAndDNSKEYHandler
    - primeHints
    - setDNSSECValidation
    - std::unique_ptr::beginResolve
    - isRootServer
    - setState
    - QType
    - generateKeyMaterial
    - addRecordToLW
    - size
    - auto::dsAnchors::clear
    - addRRSIG
    - addNSECRecordToLW
    - vector::clear
    - std::unique_ptr::setAsyncCallback
    - DNSName
    - initSR
    - addDS
    - std::unique_ptr::getValidationState
    - ComboAddress
    - BOOST_CHECK_EQUAL
    - getCopy
    - vector::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_rfc8020_nothing_underneath_dnssec)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:966,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:969,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:977,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:980,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:981,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:982,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:983,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:983,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:989,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:990,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:994,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:995,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1000,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1001,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1009,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1009,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1010,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1011,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1011,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1012,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1013,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1013,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1015,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1016,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1016,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1017,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1018,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1018,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1019,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1020,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1020,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1022,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1023,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1023,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1024,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1025,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1025,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1026,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1027,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1027,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1029,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1030,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1030,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1031,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1032,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1032,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1033,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1034,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1034,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 55
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1035
      start: 963
    functionDepth: 1
    functionLinenumber: 963
    functionLinenumberEnd: 1035
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc2.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - std::unique_ptr::setAsyncCallback
    - primeHints
    - QType
    - addRecordToLW
    - BOOST_CHECK_EQUAL
    - initSR
    - size
    - std::unique_ptr::beginResolve
    - ComboAddress::toString
    - isRootServer
    - vector::size
    - vector::clear
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_rfc8020_nodata)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1040,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1043,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1051,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1054,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1055,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1056,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1057,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1057,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1063,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1064,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1068,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1069,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1074,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1075,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1083,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1083,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1084,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1085,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1085,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1086,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1087,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1087,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1089,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1090,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1090,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1091,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1092,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1092,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1093,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1094,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1094,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1096,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1097,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1097,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1098,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1099,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1099,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1100,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1101,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1101,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1103,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1104,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1104,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1105,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1106,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1106,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1107,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1108,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1108,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 55
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1109
      start: 1037
    functionDepth: 1
    functionLinenumber: 1037
    functionLinenumberEnd: 1109
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc2.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - std::unique_ptr::setAsyncCallback
    - primeHints
    - QType
    - addRecordToLW
    - BOOST_CHECK_EQUAL
    - initSR
    - size
    - std::unique_ptr::beginResolve
    - ComboAddress::toString
    - isRootServer
    - vector::size
    - vector::clear
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_rfc8020_nodata_bis)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1114,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1116,1
    - Dst: SyncRes::addEDNSDomain
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1121,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1121,1
    - Dst: EDNSSubnetOpts::setSource
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1124,1
    - Dst: Netmask
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1124,1
    - Dst: std::unique_ptr::setQuerySource
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1125,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1125,1
    - Dst: boost::optional<const EDNSSubnetOpts&>
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1125,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1127,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1128,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1129,1
    - Dst: toString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1129,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1131,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1132,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1133,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1134,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1140,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1143,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1144,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1144,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1145,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1150,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1151,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1161,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1161,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1162,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1163,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1163,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1164,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1164,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 33
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1165
      start: 1111
    functionDepth: 1
    functionLinenumber: 1111
    functionLinenumberEnd: 1165
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc2.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - toString
    - primeHints
    - DNSName::toString
    - std::unique_ptr::beginResolve
    - isRootServer
    - boost::optional<const EDNSSubnetOpts&>
    - QType
    - addRecordToLW
    - size
    - BOOST_REQUIRE
    - SyncRes::addEDNSDomain
    - Netmask
    - std::unique_ptr::setAsyncCallback
    - EDNSSubnetOpts::setSource
    - DNSName
    - initSR
    - ComboAddress
    - BOOST_CHECK_EQUAL
    - std::unique_ptr::setQuerySource
    - vector::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_dont_skip_negcache_for_variable_response)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1170,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1172,1
    - Dst: SyncRes::addEDNSDomain
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1176,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1176,1
    - Dst: EDNSSubnetOpts::setSource
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1179,1
    - Dst: Netmask
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1179,1
    - Dst: std::unique_ptr::setQuerySource
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1180,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1180,1
    - Dst: boost::optional<const EDNSSubnetOpts&>
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1180,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1183,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1184,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1185,1
    - Dst: toString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1185,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1187,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1188,1
    - Dst: std::unique_ptr::getNow
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1193,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1195,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1195,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1196,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1197,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1197,1
    - Dst: BOOST_REQUIRE_GT
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1202,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1202,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1202,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1203,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1203,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1204
      start: 1167
    functionDepth: 1
    functionLinenumber: 1167
    functionLinenumberEnd: 1204
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc2.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - toString
    - primeHints
    - std::unique_ptr::beginResolve
    - boost::optional<const EDNSSubnetOpts&>
    - QType
    - addRecordToLW
    - BOOST_REQUIRE
    - BOOST_REQUIRE_EQUAL
    - SyncRes::addEDNSDomain
    - Netmask
    - std::unique_ptr::setAsyncCallback
    - EDNSSubnetOpts::setSource
    - DNSName
    - initSR
    - std::unique_ptr::getNow
    - get
    - BOOST_REQUIRE_GT
    - ComboAddress
    - BOOST_CHECK_EQUAL
    - std::unique_ptr::setQuerySource
    - vector::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_ecs_cache_limit_allowed)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1209,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1211,1
    - Dst: SyncRes::addEDNSDomain
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1215,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1215,1
    - Dst: EDNSSubnetOpts::setSource
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1218,1
    - Dst: Netmask
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1218,1
    - Dst: std::unique_ptr::setQuerySource
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1219,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1219,1
    - Dst: boost::optional<const EDNSSubnetOpts&>
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1219,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1222,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1223,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1224,1
    - Dst: toString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1224,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1226,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1227,1
    - Dst: std::unique_ptr::getNow
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1232,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1234,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1234,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1235,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1236,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1236,1
    - Dst: BOOST_REQUIRE_GT
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1241,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1241,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1241,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1242,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1242,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1243
      start: 1206
    functionDepth: 1
    functionLinenumber: 1206
    functionLinenumberEnd: 1243
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc2.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - toString
    - primeHints
    - std::unique_ptr::beginResolve
    - boost::optional<const EDNSSubnetOpts&>
    - QType
    - addRecordToLW
    - BOOST_REQUIRE
    - BOOST_REQUIRE_EQUAL
    - SyncRes::addEDNSDomain
    - Netmask
    - std::unique_ptr::setAsyncCallback
    - EDNSSubnetOpts::setSource
    - DNSName
    - initSR
    - std::unique_ptr::getNow
    - get
    - BOOST_REQUIRE_GT
    - ComboAddress
    - BOOST_CHECK_EQUAL
    - std::unique_ptr::setQuerySource
    - vector::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_ecs_cache_limit_no_ttl_limit_allowed)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1248,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1250,1
    - Dst: SyncRes::addEDNSDomain
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1254,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1254,1
    - Dst: EDNSSubnetOpts::setSource
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1257,1
    - Dst: Netmask
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1257,1
    - Dst: std::unique_ptr::setQuerySource
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1258,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1258,1
    - Dst: boost::optional<const EDNSSubnetOpts&>
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1258,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1261,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1262,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1263,1
    - Dst: toString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1263,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1265,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1266,1
    - Dst: std::unique_ptr::getNow
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1271,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1273,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1273,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1274,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1275,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1275,1
    - Dst: BOOST_REQUIRE_GT
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1280,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1280,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1280,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1281,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1281,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1282
      start: 1245
    functionDepth: 1
    functionLinenumber: 1245
    functionLinenumberEnd: 1282
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc2.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - toString
    - primeHints
    - std::unique_ptr::beginResolve
    - boost::optional<const EDNSSubnetOpts&>
    - QType
    - addRecordToLW
    - BOOST_REQUIRE
    - BOOST_REQUIRE_EQUAL
    - SyncRes::addEDNSDomain
    - Netmask
    - std::unique_ptr::setAsyncCallback
    - EDNSSubnetOpts::setSource
    - DNSName
    - initSR
    - std::unique_ptr::getNow
    - get
    - BOOST_REQUIRE_GT
    - ComboAddress
    - BOOST_CHECK_EQUAL
    - std::unique_ptr::setQuerySource
    - vector::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_ecs_cache_ttllimit_allowed)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1287,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1289,1
    - Dst: SyncRes::addEDNSDomain
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1293,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1293,1
    - Dst: EDNSSubnetOpts::setSource
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1296,1
    - Dst: Netmask
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1296,1
    - Dst: std::unique_ptr::setQuerySource
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1297,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1297,1
    - Dst: boost::optional<const EDNSSubnetOpts&>
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1297,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1301,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1302,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1303,1
    - Dst: toString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1303,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1305,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1306,1
    - Dst: std::unique_ptr::getNow
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1311,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1313,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1313,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1314,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1315,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1315,1
    - Dst: BOOST_REQUIRE_GT
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1320,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1320,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1320,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1321,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1321,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 19
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1322
      start: 1284
    functionDepth: 1
    functionLinenumber: 1284
    functionLinenumberEnd: 1322
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc2.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - toString
    - primeHints
    - std::unique_ptr::beginResolve
    - boost::optional<const EDNSSubnetOpts&>
    - QType
    - addRecordToLW
    - BOOST_REQUIRE
    - BOOST_REQUIRE_EQUAL
    - SyncRes::addEDNSDomain
    - Netmask
    - std::unique_ptr::setAsyncCallback
    - EDNSSubnetOpts::setSource
    - DNSName
    - initSR
    - std::unique_ptr::getNow
    - get
    - BOOST_REQUIRE_GT
    - ComboAddress
    - BOOST_CHECK_EQUAL
    - std::unique_ptr::setQuerySource
    - vector::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_ecs_cache_ttllimit_and_scope_allowed)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1327,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1329,1
    - Dst: SyncRes::addEDNSDomain
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1333,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1333,1
    - Dst: EDNSSubnetOpts::setSource
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1336,1
    - Dst: Netmask
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1336,1
    - Dst: std::unique_ptr::setQuerySource
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1337,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1337,1
    - Dst: boost::optional<const EDNSSubnetOpts&>
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1337,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1341,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1342,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1343,1
    - Dst: toString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1343,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1345,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1346,1
    - Dst: std::unique_ptr::getNow
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1351,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1353,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1353,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1354,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1355,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1355,1
    - Dst: BOOST_REQUIRE_LT
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1360,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1360,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1360,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1361,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1361,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 19
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1362
      start: 1324
    functionDepth: 1
    functionLinenumber: 1324
    functionLinenumberEnd: 1362
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc2.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - toString
    - primeHints
    - BOOST_REQUIRE_LT
    - std::unique_ptr::beginResolve
    - boost::optional<const EDNSSubnetOpts&>
    - QType
    - addRecordToLW
    - BOOST_REQUIRE
    - BOOST_REQUIRE_EQUAL
    - SyncRes::addEDNSDomain
    - Netmask
    - std::unique_ptr::setAsyncCallback
    - EDNSSubnetOpts::setSource
    - DNSName
    - initSR
    - std::unique_ptr::getNow
    - get
    - ComboAddress
    - BOOST_CHECK_EQUAL
    - std::unique_ptr::setQuerySource
    - vector::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_ecs_cache_ttllimit_notallowed)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1367,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1369,1
    - Dst: SyncRes::getNSSpeedsSize
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1369,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1371,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1377,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1378,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1379,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1380,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1381,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1382,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1384,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1385,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1386,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1387,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1388,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1389,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1396,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1396,1
    - Dst: BOOST_CHECK_LT
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1397,1
    - Dst: std::map::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1397,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1402,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1403,1
    - Dst: std::map::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1403,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1405,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1406,1
    - Dst: std::unique_ptr::getNow
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1416,1
    - Dst: SyncRes::submitNSSpeed
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1420,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1420,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1420,1
    - Dst: SyncRes::submitNSSpeed
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1421,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1421,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1421,1
    - Dst: SyncRes::submitNSSpeed
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1422,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1422,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1422,1
    - Dst: SyncRes::submitNSSpeed
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1423,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1423,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1423,1
    - Dst: SyncRes::submitNSSpeed
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1424,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1424,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1424,1
    - Dst: SyncRes::submitNSSpeed
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1425,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1425,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1425,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1428,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1428,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1429,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1430,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1430,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1431,1
    - Dst: std::map::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1431,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1432,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1432,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1433,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1433,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1434,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1434,1
    - Dst: FDWrapper
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1439,1
    - Dst: mkstemp
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1439,1
    - Dst: std::string::data
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1439,1
    - Dst: FDWrapper
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1440,1
    - Dst: mkstemp
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1440,1
    - Dst: std::string::data
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1440,1
    - Dst: SyncRes::doDumpNSSpeeds
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1441,1
    - Dst: auto::reset
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1442,1
    - Dst: SyncRes::getNSSpeedTable
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1444,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1445,1
    - Dst: SyncRes::clearNSSpeeds
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1447,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1448,1
    - Dst: SyncRes::getNSSpeedsSize
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1448,1
    - Dst: SyncRes::putIntoNSSpeedTable
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1451,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1452,1
    - Dst: SyncRes::doDumpNSSpeeds
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1453,1
    - Dst: auto::reset
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1454,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1455,1
    - Dst: std::ifstream::good
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1463,1
    - Dst: std::getline
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1465,1
    - Dst: std::vector::emplace_back
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1466,1
    - Dst: std::ifstream::good
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1468,1
    - Dst: std::getline
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1470,1
    - Dst: std::vector::emplace_back
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1471,1
    - Dst: unlink
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1473,1
    - Dst: std::string::data
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1473,1
    - Dst: unlink
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1474,1
    - Dst: std::string::data
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1474,1
    - Dst: std::sort
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1475,1
    - Dst: std::vector::begin
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1475,1
    - Dst: std::vector::end
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1475,1
    - Dst: std::sort
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1476,1
    - Dst: std::vector::begin
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1476,1
    - Dst: std::vector::end
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1476,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1477,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 67
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1478
      start: 1364
    functionDepth: 2
    functionLinenumber: 1364
    functionLinenumberEnd: 1478
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc2.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - primeHints
    - SyncRes::getNSSpeedTable
    - std::unique_ptr::beginResolve
    - isRootServer
    - std::getline
    - std::ifstream::good
    - std::vector::begin
    - QType
    - addRecordToLW
    - std::vector::end
    - mkstemp
    - std::unique_ptr::setAsyncCallback
    - BOOST_CHECK_LT
    - SyncRes::submitNSSpeed
    - SyncRes::putIntoNSSpeedTable
    - std::string::data
    - std::unique_ptr::getNow
    - initSR
    - DNSName
    - FDWrapper
    - ComboAddress
    - SyncRes::clearNSSpeeds
    - SyncRes::getNSSpeedsSize
    - BOOST_CHECK
    - std::sort
    - std::vector::emplace_back
    - BOOST_CHECK_EQUAL
    - auto::reset
    - unlink
    - SyncRes::doDumpNSSpeeds
    - vector::size
    - std::map::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_ns_speed)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1483,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1485,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1489,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1490,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1491,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1492,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1494,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1498,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1499,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1500,1
    - Dst: std::unique_ptr::getNow
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1508,1
    - Dst: addRecordToList
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1511,1
    - Dst: replace
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1513,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1513,1
    - Dst: std::optional<Netmask>
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1513,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1516,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1516,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1517,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1518,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1518,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 21
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1519
      start: 1480
    functionDepth: 1
    functionLinenumber: 1480
    functionLinenumberEnd: 1519
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc2.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - std::unique_ptr::setAsyncCallback
    - addRecordToList
    - primeHints
    - std::optional<Netmask>
    - QType
    - addRecordToLW
    - std::unique_ptr::getNow
    - initSR
    - BOOST_CHECK_EQUAL
    - std::unique_ptr::beginResolve
    - isRootServer
    - vector::size
    - replace
    - ComboAddress
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_flawed_nsset)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1524,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1526,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1531,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1534,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1535,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1536,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1537,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1540,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1540,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1541,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1542,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1550,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1550,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1551,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1552,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1552,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1554,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 21
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1555
      start: 1521
    functionDepth: 1
    functionLinenumber: 1521
    functionLinenumberEnd: 1555
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc2.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - std::unique_ptr::setAsyncCallback
    - primeHints
    - QType
    - addRecordToLW
    - DNSName
    - initSR
    - BOOST_CHECK_EQUAL
    - std::unique_ptr::beginResolve
    - isRootServer
    - vector::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_completely_flawed_nsset)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1560,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1562,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1567,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1570,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1571,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1574,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1574,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1574,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1575,1
    - Dst: toString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1579,1
    - Dst: toString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1579,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1580,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1581,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1589,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1589,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1590,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1593,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1593,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1596,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 26
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1598
      start: 1557
    functionDepth: 1
    functionLinenumber: 1557
    functionLinenumberEnd: 1598
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc2.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - std::unique_ptr::setAsyncCallback
    - toString
    - std::to_string
    - primeHints
    - QType
    - string
    - addRecordToLW
    - BOOST_CHECK_EQUAL
    - initSR
    - std::unique_ptr::beginResolve
    - isRootServer
    - vector::size
    - BOOST_CHECK
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_completely_flawed_big_nsset)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1603,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1605,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1609,1
    - Dst: std::unique_ptr::getNow
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1614,1
    - Dst: addRecordToList
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1618,1
    - Dst: replace
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1619,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1619,1
    - Dst: std::optional<Netmask>
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1619,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1622,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1622,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1623,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1624,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1624,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1625
      start: 1600
    functionDepth: 1
    functionLinenumber: 1600
    functionLinenumberEnd: 1625
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc2.cc
    functionUses: 0
    functionsReached:
    - std::unique_ptr::setAsyncCallback
    - addRecordToList
    - primeHints
    - std::optional<Netmask>
    - QType
    - std::unique_ptr::getNow
    - initSR
    - BOOST_CHECK_EQUAL
    - std::unique_ptr::beginResolve
    - vector::size
    - replace
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_cache_hit)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1630,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1632,1
    - Dst: std::unique_ptr::setCacheOnly
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1637,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1639,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1645,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1645,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1646,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1647,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1647,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1648,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1649
      start: 1627
    functionDepth: 1
    functionLinenumber: 1627
    functionLinenumberEnd: 1649
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc2.cc
    functionUses: 0
    functionsReached:
    - std::unique_ptr::setAsyncCallback
    - primeHints
    - QType
    - BOOST_CHECK_EQUAL
    - initSR
    - std::unique_ptr::beginResolve
    - std::unique_ptr::setCacheOnly
    - vector::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_no_rd)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1654,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1656,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1661,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1662,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1664,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1666,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1670,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1671,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1672,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1672,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1677,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1678,1
    - Dst: std::unique_ptr::getNow
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1686,1
    - Dst: doWipeCache
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1691,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1694,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1694,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1695,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1696,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1696,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1697,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1699,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1699,1
    - Dst: BOOST_CHECK_GT
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1701,1
    - Dst: BOOST_CHECK_LE
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1702,1
    - Dst: BOOST_REQUIRE_GT
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1706,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1706,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1706,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1707,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1707,1
    - Dst: BOOST_REQUIRE_GT
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1708,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1709,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1711,1
    - Dst: BOOST_REQUIRE_GT
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1712,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1712,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1712,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1713,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1713,1
    - Dst: BOOST_REQUIRE_GT
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1714,1
    - Dst: BOOST_CHECK_LE
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1715,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 39
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1716
      start: 1651
    functionDepth: 2
    functionLinenumber: 1651
    functionLinenumberEnd: 1716
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc2.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - primeHints
    - std::unique_ptr::beginResolve
    - isRootServer
    - BOOST_CHECK_LE
    - QType
    - addRecordToLW
    - vector::clear
    - BOOST_REQUIRE_EQUAL
    - std::unique_ptr::setAsyncCallback
    - BOOST_CHECK_GT
    - std::unique_ptr::getNow
    - initSR
    - get
    - BOOST_REQUIRE_GT
    - ComboAddress
    - doWipeCache
    - BOOST_CHECK_EQUAL
    - ComboAddress::toString
    - vector::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_cache_min_max_ttl)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1721,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1723,1
    - Dst: EDNSSubnetOpts::setSource
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1729,1
    - Dst: Netmask
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1729,1
    - Dst: std::unique_ptr::setQuerySource
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1730,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1730,1
    - Dst: boost::optional<const EDNSSubnetOpts&>
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1730,1
    - Dst: SyncRes::addEDNSDomain
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1731,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1733,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1734,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1735,1
    - Dst: toString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1735,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1737,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1739,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1740,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1741,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1741,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1748,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1749,1
    - Dst: std::unique_ptr::getNow
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1757,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1763,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1763,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1764,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1765,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1765,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1766,1
    - Dst: BOOST_REQUIRE_GT
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1770,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1770,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1770,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1771,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1771,1
    - Dst: BOOST_REQUIRE_GT
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1772,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1773,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1775,1
    - Dst: BOOST_REQUIRE_GT
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1776,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1776,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1776,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1777,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1777,1
    - Dst: BOOST_REQUIRE_GT
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1778,1
    - Dst: BOOST_CHECK_LE
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1779,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1781,1
    - Dst: BOOST_REQUIRE_GT
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1782,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1782,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1782,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1782,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1783,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1783,1
    - Dst: BOOST_REQUIRE_GT
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1784,1
    - Dst: BOOST_CHECK_LE
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1785,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 43
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1786
      start: 1718
    functionDepth: 1
    functionLinenumber: 1718
    functionLinenumberEnd: 1786
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc2.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - toString
    - primeHints
    - std::unique_ptr::beginResolve
    - isRootServer
    - BOOST_CHECK_LE
    - boost::optional<const EDNSSubnetOpts&>
    - QType
    - addRecordToLW
    - BOOST_REQUIRE
    - vector::clear
    - BOOST_REQUIRE_EQUAL
    - SyncRes::addEDNSDomain
    - Netmask
    - std::unique_ptr::setAsyncCallback
    - EDNSSubnetOpts::setSource
    - std::unique_ptr::getNow
    - initSR
    - get
    - DNSName
    - BOOST_REQUIRE_GT
    - ComboAddress
    - BOOST_CHECK_EQUAL
    - std::unique_ptr::setQuerySource
    - vector::size
    - ComboAddress::toString
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_cache_min_max_ecs_ttl)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1791,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1793,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1797,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1798,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1799,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1800,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1802,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1806,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1807,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1808,1
    - Dst: std::unique_ptr::getNow
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1816,1
    - Dst: addRecordToList
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1820,1
    - Dst: replace
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1822,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1822,1
    - Dst: std::optional<Netmask>
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1822,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1825,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1825,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1826,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1827,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1827,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1828,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1829,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1829,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1829,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 23
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1830
      start: 1788
    functionDepth: 1
    functionLinenumber: 1788
    functionLinenumberEnd: 1830
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc2.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - std::unique_ptr::setAsyncCallback
    - addRecordToList
    - getRR
    - primeHints
    - std::optional<Netmask>
    - QType
    - addRecordToLW
    - std::unique_ptr::getNow
    - initSR
    - BOOST_CHECK_EQUAL
    - std::unique_ptr::beginResolve
    - BOOST_REQUIRE
    - isRootServer
    - vector::size
    - replace
    - BOOST_REQUIRE_EQUAL
    - ComboAddress
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_cache_expired_ttl)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1836,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1838,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1843,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1844,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1845,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1847,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1851,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1852,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1853,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1859,1
    - Dst: std::unique_ptr::getNow
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1862,1
    - Dst: addRecordToList
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1866,1
    - Dst: replace
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1868,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1868,1
    - Dst: std::optional<Netmask>
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1868,1
    - Dst: addRecordToList
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1872,1
    - Dst: replace
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1873,1
    - Dst: std::optional<Netmask>
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1873,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1876,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1876,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1877,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1878,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1878,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1879,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1880,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1880,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1880,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1882,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1885,1
    - Dst: getTaskSize
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1885,1
    - Dst: taskQueuePop
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1887,1
    - Dst: std::unique_ptr::setRefreshAlmostExpired
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1890,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1891,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1892,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1892,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1893,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1894,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1894,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1895,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1896,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1896,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1896,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1898,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1901,1
    - Dst: BOOST_REQUIRE_GT
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1902,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1902,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1902,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1902,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1903,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1903,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1904,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1905,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1905,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1905,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1907,1
    - Dst: std::min
      Src: /src/pdns/pdns/recursordist/test-syncres_cc2.cc:1907,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 44
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1910
      start: 1832
    functionDepth: 1
    functionLinenumber: 1832
    functionLinenumberEnd: 1910
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc2.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - addRecordToList
    - primeHints
    - std::unique_ptr::beginResolve
    - isRootServer
    - replace
    - QType
    - addRecordToLW
    - BOOST_REQUIRE
    - std::unique_ptr::setRefreshAlmostExpired
    - vector::clear
    - BOOST_REQUIRE_EQUAL
    - std::unique_ptr::setAsyncCallback
    - std::optional<Netmask>
    - std::unique_ptr::getNow
    - initSR
    - get
    - DNSName
    - BOOST_REQUIRE_GT
    - ComboAddress
    - getRR
    - std::min
    - getTaskSize
    - BOOST_CHECK_EQUAL
    - taskQueuePop
    - vector::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_cache_almost_expired_ttl)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: pdns::UniqueFilePtr
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:56,1
    - Dst: fopen
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:56,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:58,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:58,1
    - Dst: stringfgets
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:61,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:61,1
    - Dst: auto::reset
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:64,1
    - Dst: DNSCryptoKeyEngine::makeFromISCString
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:66,1
    - Dst: auto::checkKey
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:69,1
    - Dst: auto::empty
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:71,1
    - Dst: boost::algorithm::join
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:72,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:74,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:74,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 3
    argNames:
    - slog
    - ' drc'
    - fname
    argTypes:
    - Logr::log_t
    - DNSKEYRecordContent
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 53
    functionDepth: 0
    functionLinenumber: 53
    functionLinenumberEnd: 77
    functionName: DNSCryptoKeyEngine::makeFromISCFile
    functionSourceFile: /src/pdns/pdns/recursordist/dnssecinfra.cc
    functionUses: 1
    functionsReached:
    - auto::get
    - stringfgets
    - fopen
    - DNSCryptoKeyEngine::makeFromISCString
    - runtime_error
    - string
    - auto::reset
    - boost::algorithm::join
    - auto::checkKey
    - pdns::UniqueFilePtr
    - auto::empty
    linkageType: ''
    returnType: std::unique_ptr<DNSCryptoKeyEngine>
    signature: std::unique_ptr<DNSCryptoKeyEngine> DNSCryptoKeyEngine::makeFromISCFile(Logr::log_t
      slog, DNSKEYRecordContent& drc, const char* fname)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: std::getline
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:106,1
    - Dst: std::tie
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:107,1
    - Dst: splitField
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:107,1
    - Dst: Utility::trim
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:108,1
    - Dst: toLowerInPlace
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:110,1
    - Dst: std::map::find
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:111,1
    - Dst: std::map::cend
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:112,1
    - Dst: clear
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:118,1
    - Dst: B64Decode
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:119,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:123,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:123,1
    - Dst: pdns::checked_stoi<unsigned int>
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:128,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:129,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:135,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:135,1
    - Dst: clear
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:141,1
    - Dst: B64Decode
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:142,1
    - Dst: map::count
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:153,1
    - Dst: map::count
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:155,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:156,1
    - Dst: map::count
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:159,1
    - Dst: PKCS11DNSCryptoKeyEngine::maker
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:162,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:164,1
    - Dst: DNSCryptoKeyEngine::make
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:167,1
    - Dst: std::unique_ptr::fromISCMap
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:169,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 52
    argCount: 3
    argNames:
    - slog
    - ' drc'
    - ' content'
    argTypes:
    - Logr::log_t
    - DNSKEYRecordContent
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 171
      start: 79
    functionDepth: 1
    functionLinenumber: 79
    functionLinenumberEnd: 171
    functionName: DNSCryptoKeyEngine::makeFromISCString
    functionSourceFile: /src/pdns/pdns/recursordist/dnssecinfra.cc
    functionUses: 11
    functionsReached:
    - toLowerInPlace
    - splitField
    - std::to_string
    - DNSCryptoKeyEngine::make
    - std::runtime_error
    - PDNSException
    - what
    - std::map::cend
    - B64Decode
    - std::unique_ptr::fromISCMap
    - map::count
    - pdns::checked_stoi<unsigned int>
    - std::tie
    - clear
    - Utility::trim
    - std::map::find
    - PKCS11DNSCryptoKeyEngine::maker
    - std::getline
    linkageType: ''
    returnType: std::unique_ptr<DNSCryptoKeyEngine>
    signature: std::unique_ptr<DNSCryptoKeyEngine> DNSCryptoKeyEngine::makeFromISCString(Logr::log_t
      slog, DNSKEYRecordContent& drc, const std::string& content)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSCryptoKeyEngine::make
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:175,1
    - Dst: auto::createFromPEMFile
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:176,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 5
    argNames:
    - slog
    - ' drc'
    - algorithm
    - ' inputFile'
    - ' filename'
    argTypes:
    - Logr::log_t
    - DNSKEYRecordContent
    - uint8_t
    - std::FILE
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 178
      start: 173
    functionDepth: 0
    functionLinenumber: 173
    functionLinenumberEnd: 178
    functionName: DNSCryptoKeyEngine::makeFromPEMFile
    functionSourceFile: /src/pdns/pdns/recursordist/dnssecinfra.cc
    functionUses: 1
    functionsReached:
    - DNSCryptoKeyEngine::make
    - auto::createFromPEMFile
    linkageType: ''
    returnType: std::unique_ptr<DNSCryptoKeyEngine>
    signature: std::unique_ptr<DNSCryptoKeyEngine> DNSCryptoKeyEngine::makeFromPEMFile(Logr::log_t
      slog, DNSKEYRecordContent& drc, const uint8_t algorithm, std::FILE& inputFile,
      const std::string& filename)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSCryptoKeyEngine::make
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:182,1
    - Dst: auto::createFromPEMString
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:183,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - slog
    - ' drc'
    - algorithm
    - ' contents'
    argTypes:
    - Logr::log_t
    - DNSKEYRecordContent
    - uint8_t
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 185
      start: 180
    functionDepth: 0
    functionLinenumber: 180
    functionLinenumberEnd: 185
    functionName: DNSCryptoKeyEngine::makeFromPEMString
    functionSourceFile: /src/pdns/pdns/recursordist/dnssecinfra.cc
    functionUses: 1
    functionsReached:
    - auto::createFromPEMString
    - DNSCryptoKeyEngine::make
    linkageType: ''
    returnType: std::unique_ptr<DNSCryptoKeyEngine>
    signature: std::unique_ptr<DNSCryptoKeyEngine> DNSCryptoKeyEngine::makeFromPEMString(Logr::log_t
      slog, DNSKEYRecordContent& drc, uint8_t algorithm, const std::string& contents)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DNSCryptoKeyEngine::convertToISCVector
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:189,1
    - Dst: Base64Encode
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:197,1
    - Dst: ostringstream::str
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:204,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 205
      start: 187
    functionDepth: 0
    functionLinenumber: 187
    functionLinenumberEnd: 205
    functionName: DNSCryptoKeyEngine::convertToISC
    functionSourceFile: /src/pdns/pdns/recursordist/dnssecinfra.cc
    functionUses: 0
    functionsReached:
    - ostringstream::str
    - DNSCryptoKeyEngine::convertToISCVector
    - Base64Encode
    linkageType: ''
    returnType: std::string
    signature: std::string DNSCryptoKeyEngine::convertToISC() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: getMakers
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:209,1
    - Dst: find
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:211,1
    - Dst: cend
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:212,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:216,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:216,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - slog
    - algo
    argTypes:
    - Logr::log_t
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 217
      start: 207
    functionDepth: 0
    functionLinenumber: 207
    functionLinenumberEnd: 217
    functionName: DNSCryptoKeyEngine::make
    functionSourceFile: /src/pdns/pdns/recursordist/dnssecinfra.cc
    functionUses: 10
    functionsReached:
    - std::to_string
    - runtime_error
    - cend
    - getMakers
    - find
    linkageType: ''
    returnType: std::unique_ptr<DNSCryptoKeyEngine>
    signature: std::unique_ptr<DNSCryptoKeyEngine> DNSCryptoKeyEngine::make(Logr::log_t
      slog, unsigned int algo)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getMakers
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:227,1
    - Dst: second
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:228,1
    - Dst: vector::emplace_back
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:229,1
    - Dst: auto::getName
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:229,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - slog
    argTypes:
    - Logr::log_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 232
      start: 224
    functionDepth: 0
    functionLinenumber: 224
    functionLinenumberEnd: 232
    functionName: DNSCryptoKeyEngine::listAllAlgosWithBackend
    functionSourceFile: /src/pdns/pdns/recursordist/dnssecinfra.cc
    functionUses: 3
    functionsReached:
    - second
    - auto::getName
    - getMakers
    - vector::emplace_back
    linkageType: ''
    returnType: vector<pair<uint8_t, string>>
    signature: vector<pair<uint8_t, string>> DNSCryptoKeyEngine::listAllAlgosWithBackend(Logr::log_t
      slog)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: DNSCryptoKeyEngine::listAllAlgosWithBackend
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:237,1
    - Dst: set::insert
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:239,1
    - Dst: string::append
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:245,1
    - Dst: string::append
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:250,1
    - Dst: DNSSEC::algorithm2name
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:250,1
    - Dst: DNSCryptoKeyEngine::isAlgorithmSwitchedOff
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:251,1
    - Dst: string::append
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:252,1
    - Dst: string::append
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:255,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 1
    argNames:
    - slog
    argTypes:
    - Logr::log_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 257
      start: 234
    functionDepth: 2
    functionLinenumber: 234
    functionLinenumberEnd: 257
    functionName: DNSCryptoKeyEngine::listSupportedAlgoNames
    functionSourceFile: /src/pdns/pdns/recursordist/dnssecinfra.cc
    functionUses: 1
    functionsReached:
    - set::insert
    - string::append
    - DNSSEC::algorithm2name
    - DNSCryptoKeyEngine::isAlgorithmSwitchedOff
    - DNSCryptoKeyEngine::listAllAlgosWithBackend
    linkageType: ''
    returnType: string
    signature: string DNSCryptoKeyEngine::listSupportedAlgoNames(Logr::log_t slog)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: getAllMakers
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:261,1
    - Dst: push_back
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:261,1
    - Dst: getMakers
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:262,1
    - Dst: getMakers
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:265,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - algo
    - maker
    - fallback
    argTypes:
    - unsigned int
    - maker_t*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 266
      start: 259
    functionDepth: 0
    functionLinenumber: 259
    functionLinenumberEnd: 266
    functionName: DNSCryptoKeyEngine::report
    functionSourceFile: /src/pdns/pdns/recursordist/dnssecinfra.cc
    functionUses: 6
    functionsReached:
    - push_back
    - getAllMakers
    - getMakers
    linkageType: ''
    returnType: void
    signature: void DNSCryptoKeyEngine::report(unsigned int algo, maker_t* maker,
      bool fallback)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getAllMakers
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:272,1
    - Dst: DNSCryptoKeyEngine::testMakers
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:281,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:285,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 1
    argNames:
    - slog
    argTypes:
    - Logr::log_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 293
      start: 268
    functionDepth: 0
    functionLinenumber: 268
    functionLinenumberEnd: 293
    functionName: DNSCryptoKeyEngine::testAll
    functionSourceFile: /src/pdns/pdns/recursordist/dnssecinfra.cc
    functionUses: 1
    functionsReached:
    - what
    - DNSCryptoKeyEngine::testMakers
    - getAllMakers
    linkageType: ''
    returnType: bool
    signature: bool DNSCryptoKeyEngine::testAll(Logr::log_t slog)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getAllMakers
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:299,1
    - Dst: getAllMakers
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:301,1
    - Dst: getAllMakers
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:304,1
    - Dst: DNSCryptoKeyEngine::testMakers
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:306,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:310,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 2
    argNames:
    - slog
    - algo
    argTypes:
    - Logr::log_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 317
      start: 295
    functionDepth: 0
    functionLinenumber: 295
    functionLinenumberEnd: 317
    functionName: DNSCryptoKeyEngine::testOne
    functionSourceFile: /src/pdns/pdns/recursordist/dnssecinfra.cc
    functionUses: 1
    functionsReached:
    - what
    - DNSCryptoKeyEngine::testMakers
    - getAllMakers
    linkageType: ''
    returnType: bool
    signature: bool DNSCryptoKeyEngine::testOne(Logr::log_t slog, int algo)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: std::getline
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:329,1
    - Dst: std::tie
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:330,1
    - Dst: splitField
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:330,1
    - Dst: Utility::trim
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:331,1
    - Dst: pdns_iequals
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:332,1
    - Dst: pdns::checked_stoi_into
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:333,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:334,1
    - Dst: pdns_iequals
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:337,1
    - Dst: pdns_iequals
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:341,1
    - Dst: pdns_iequals
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:345,1
    - Dst: pdns::checked_stoi<int>
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:346,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:347,1
    - Dst: pdns_iequals
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:350,1
    - Dst: pdns_iequals
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:354,1
    - Dst: string::clear
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:357,1
    - Dst: B64Decode
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:358,1
    - Dst: toLower
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:359,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 33
    argCount: 1
    argNames:
    - ' argStr'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 362
      start: 319
    functionDepth: 1
    functionLinenumber: 319
    functionLinenumberEnd: 362
    functionName: ISCStringtoMap
    functionSourceFile: /src/pdns/pdns/recursordist/dnssecinfra.cc
    functionUses: 1
    functionsReached:
    - splitField
    - std::to_string
    - pdns_iequals
    - pdns::checked_stoi<int>
    - toLower
    - B64Decode
    - std::tie
    - Utility::trim
    - pdns::checked_stoi_into
    - string::clear
    - std::getline
    linkageType: ''
    returnType: map<string, string>
    signature: map<string, string> ISCStringtoMap(const string& argStr)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: runtime_error
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:385,1
    - Dst: B64Decode
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:390,1
    - Dst: B64Decode
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:391,1
    - Dst: verifier
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:392,1
    - Dst: auto::fromPublicKeyString
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:393,1
    - Dst: auto::verify
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:395,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 3
    argNames:
    - slog
    - algo
    - verifier
    argTypes:
    - Logr::log_t
    - unsigned int
    - maker_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 397
      start: 364
    functionDepth: 0
    functionLinenumber: 364
    functionLinenumberEnd: 397
    functionName: DNSCryptoKeyEngine::testVerify
    functionSourceFile: /src/pdns/pdns/recursordist/dnssecinfra.cc
    functionUses: 1
    functionsReached:
    - verifier
    - auto::fromPublicKeyString
    - auto::verify
    - B64Decode
    - runtime_error
    linkageType: ''
    returnType: bool
    signature: bool DNSCryptoKeyEngine::testVerify(Logr::log_t slog, unsigned int
      algo, maker_t* verifier)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: getAllMakers
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:401,1
    - Dst: find
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:402,1
    - Dst: cend
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:404,1
    - Dst: auto::second::empty
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:408,1
    - Dst: std::all_of
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:412,1
    - Dst: auto::second::begin
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:412,1
    - Dst: auto::second::end
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:412,1
    - Dst: DNSCryptoKeyEngine::testVerify
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:414,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 2
    argNames:
    - slog
    - algo
    argTypes:
    - Logr::log_t
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 423
      start: 399
    functionDepth: 0
    functionLinenumber: 399
    functionLinenumberEnd: 423
    functionName: DNSCryptoKeyEngine::verifyOne
    functionSourceFile: /src/pdns/pdns/recursordist/dnssecinfra.cc
    functionUses: 1
    functionsReached:
    - auto::second::begin
    - auto::second::empty
    - auto::second::end
    - DNSCryptoKeyEngine::testVerify
    - cend
    - std::all_of
    - getAllMakers
    - find
    linkageType: ''
    returnType: bool
    signature: bool DNSCryptoKeyEngine::verifyOne(Logr::log_t slog, unsigned int algo)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: creator
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:427,1
    - Dst: signer
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:428,1
    - Dst: verifier
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:429,1
    - Dst: DNSSEC::algorithm2name
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:431,1
    - Dst: auto::getName
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:431,1
    - Dst: auto::getName
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:431,1
    - Dst: auto::getName
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:431,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:446,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:446,1
    - Dst: DTime::DTime
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:449,1
    - Dst: DTime::set
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:449,1
    - Dst: auto::create
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:451,1
    - Dst: auto::getBits
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:452,1
    - Dst: DTime::udiff
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:453,1
    - Dst: DNSKEYRecordContent::DNSKEYRecordContent
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:456,1
    - Dst: ISCStringtoMap
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:457,1
    - Dst: auto::convertToISC
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:457,1
    - Dst: auto::fromISCMap
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:459,1
    - Dst: auto::checkKey
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:460,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:461,1
    - Dst: auto::getName
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:461,1
    - Dst: auto::getName
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:461,1
    - Dst: auto::getName
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:461,1
    - Dst: DTime::set
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:468,1
    - Dst: auto::sign
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:470,1
    - Dst: DTime::udiff
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:471,1
    - Dst: auto::fromPublicKeyString
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:473,1
    - Dst: auto::getPublicKeyString
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:473,1
    - Dst: auto::getPublicKeyString
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:474,1
    - Dst: auto::getPublicKeyString
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:474,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:475,1
    - Dst: DTime::set
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:477,1
    - Dst: auto::verify
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:480,1
    - Dst: DTime::udiff
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:483,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:487,1
    - Dst: auto::getName
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:487,1
    - Dst: auto::getName
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:487,1
    - Dst: auto::getName
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:487,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 41
    argCount: 5
    argNames:
    - slog
    - algo
    - creator
    - signer
    - verifier
    argTypes:
    - Logr::log_t
    - unsigned int
    - maker_t*
    - maker_t*
    - maker_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 489
      start: 425
    functionDepth: 1
    functionLinenumber: 425
    functionLinenumberEnd: 489
    functionName: DNSCryptoKeyEngine::testMakers
    functionSourceFile: /src/pdns/pdns/recursordist/dnssecinfra.cc
    functionUses: 4
    functionsReached:
    - std::to_string
    - verifier
    - auto::verify
    - runtime_error
    - DTime::set
    - ISCStringtoMap
    - auto::getPublicKeyString
    - auto::fromPublicKeyString
    - DTime::DTime
    - creator
    - signer
    - auto::fromISCMap
    - auto::create
    - DTime::udiff
    - auto::getName
    - auto::checkKey
    - auto::convertToISC
    - auto::sign
    - DNSKEYRecordContent::DNSKEYRecordContent
    - auto::getBits
    - DNSSEC::algorithm2name
    linkageType: ''
    returnType: void
    signature: void DNSCryptoKeyEngine::testMakers(Logr::log_t slog, unsigned int
      algo, maker_t* creator, maker_t* signer, maker_t* verifier)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSCryptoKeyEngine::make
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:493,1
    - Dst: auto::fromPublicKeyString
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:494,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - slog
    - algorithm
    - ' content'
    argTypes:
    - Logr::log_t
    - unsigned int
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 496
      start: 491
    functionDepth: 0
    functionLinenumber: 491
    functionLinenumberEnd: 496
    functionName: DNSCryptoKeyEngine::makeFromPublicKeyString
    functionSourceFile: /src/pdns/pdns/recursordist/dnssecinfra.cc
    functionUses: 4
    functionsReached:
    - auto::fromPublicKeyString
    - DNSCryptoKeyEngine::make
    linkageType: ''
    returnType: std::unique_ptr<DNSCryptoKeyEngine>
    signature: std::unique_ptr<DNSCryptoKeyEngine> DNSCryptoKeyEngine::makeFromPublicKeyString(Logr::log_t
      slog, unsigned int algorithm, const std::string& content)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: string::append
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:523,1
    - Dst: serialize
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:523,1
    - Dst: string::resize
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:524,1
    - Dst: string::size
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:524,1
    - Dst: d_signature::length
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:524,1
    - Dst: toDNSStringLC
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:526,1
    - Dst: countLabels
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:530,1
    - Dst: DNSName::chopOff
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:535,1
    - Dst: DNSName::toDNSStringLC
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:537,1
    - Dst: string::append
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:546,1
    - Dst: htons
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:547,1
    - Dst: string::append
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:548,1
    - Dst: htons
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:549,1
    - Dst: string::append
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:550,1
    - Dst: htonl
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:551,1
    - Dst: string::append
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:552,1
    - Dst: serialize
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:554,1
    - Dst: getType
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:554,1
    - Dst: htons
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:555,1
    - Dst: string::length
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:555,1
    - Dst: string::append
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:556,1
    - Dst: string::append
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:557,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 26
    argCount: 5
    argNames:
    - ' qname'
    - ' rrc'
    - ' signRecords'
    - processRRSIGLabels
    - includeRRSIG_RDATA
    argTypes:
    - DNSName
    - RRSIGRecordContent
    - sortedRecords_t
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 561
      start: 511
    functionDepth: 2
    functionLinenumber: 511
    functionLinenumberEnd: 561
    functionName: getMessageForRRSET
    functionSourceFile: /src/pdns/pdns/recursordist/dnssecinfra.cc
    functionUses: 7
    functionsReached:
    - string::resize
    - toDNSStringLC
    - countLabels
    - string::size
    - DNSName::chopOff
    - serialize
    - d_signature::length
    - htonl
    - string::append
    - string::length
    - DNSName::toDNSStringLC
    - getType
    - htons
    linkageType: ''
    returnType: string
    signature: string getMessageForRRSET(const DNSName& qname, const RRSIGRecordContent&
      rrc, const sortedRecords_t& signRecords, bool processRRSIGLabels, bool includeRRSIG_RDATA)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: count
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:567,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - algo
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 568
      start: 565
    functionDepth: 0
    functionLinenumber: 565
    functionLinenumberEnd: 568
    functionName: DNSCryptoKeyEngine::isAlgorithmSwitchedOff
    functionSourceFile: /src/pdns/pdns/recursordist/dnssecinfra.cc
    functionUses: 3
    functionsReached:
    - count
    linkageType: ''
    returnType: bool
    signature: bool DNSCryptoKeyEngine::isAlgorithmSwitchedOff(unsigned int algo)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: insert
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:572,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - algo
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 573
      start: 570
    functionDepth: 2
    functionLinenumber: 570
    functionLinenumberEnd: 573
    functionName: DNSCryptoKeyEngine::switchOffAlgorithm
    functionSourceFile: /src/pdns/pdns/recursordist/dnssecinfra.cc
    functionUses: 1
    functionsReached:
    - insert
    linkageType: ''
    returnType: void
    signature: void DNSCryptoKeyEngine::switchOffAlgorithm(unsigned int algo)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DNSCryptoKeyEngine::isAlgorithmSwitchedOff
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:577,1
    - Dst: getMakers
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:580,1
    - Dst: find
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:581,1
    - Dst: cend
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:582,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - algo
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 583
      start: 575
    functionDepth: 0
    functionLinenumber: 575
    functionLinenumberEnd: 583
    functionName: DNSCryptoKeyEngine::isAlgorithmSupported
    functionSourceFile: /src/pdns/pdns/recursordist/dnssecinfra.cc
    functionUses: 4
    functionsReached:
    - cend
    - find
    - getMakers
    - DNSCryptoKeyEngine::isAlgorithmSwitchedOff
    linkageType: ''
    returnType: bool
    signature: bool DNSCryptoKeyEngine::isAlgorithmSupported(unsigned int algo)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:597,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:597,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 1
    argNames:
    - digest
    argTypes:
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 600
      start: 585
    functionDepth: 0
    functionLinenumber: 585
    functionLinenumberEnd: 600
    functionName: digestToAlgorithmNumber
    functionSourceFile: /src/pdns/pdns/recursordist/dnssecinfra.cc
    functionUses: 2
    functionsReached:
    - std::to_string
    - std::runtime_error
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int digestToAlgorithmNumber(uint8_t digest)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: digestToAlgorithmNumber
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:605,1
    - Dst: DNSCryptoKeyEngine::isAlgorithmSupported
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:606,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - digest
    argTypes:
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 611
      start: 602
    functionDepth: 0
    functionLinenumber: 602
    functionLinenumberEnd: 611
    functionName: DNSCryptoKeyEngine::isDigestSupported
    functionSourceFile: /src/pdns/pdns/recursordist/dnssecinfra.cc
    functionUses: 2
    functionsReached:
    - DNSCryptoKeyEngine::isAlgorithmSupported
    - digestToAlgorithmNumber
    linkageType: ''
    returnType: bool
    signature: bool DNSCryptoKeyEngine::isDigestSupported(uint8_t digest)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: string::assign
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:616,1
    - Dst: toDNSStringLC
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:616,1
    - Dst: string::append
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:617,1
    - Dst: serialize
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:617,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:617,1
    - Dst: DSRecordContent::DSRecordContent
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:619,1
    - Dst: digestToAlgorithmNumber
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:621,1
    - Dst: DNSCryptoKeyEngine::make
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:622,1
    - Dst: auto::hash
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:623,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:626,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:626,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:626,1
    - Dst: const_cast<DNSKEYRecordContent&>
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:631,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 4
    argNames:
    - slog
    - ' qname'
    - ' drc'
    - digest
    argTypes:
    - Logr::log_t
    - DNSName
    - DNSKEYRecordContent
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 634
      start: 613
    functionDepth: 2
    functionLinenumber: 613
    functionLinenumberEnd: 634
    functionName: makeDSFromDNSKey
    functionSourceFile: /src/pdns/pdns/recursordist/dnssecinfra.cc
    functionUses: 9
    functionsReached:
    - const_cast<DNSKEYRecordContent&>
    - toDNSStringLC
    - string::assign
    - DNSCryptoKeyEngine::make
    - std::to_string
    - serialize
    - std::runtime_error
    - what
    - string::append
    - DNSName
    - digestToAlgorithmNumber
    - DSRecordContent::DSRecordContent
    - auto::hash
    linkageType: ''
    returnType: DSRecordContent
    signature: DSRecordContent makeDSFromDNSKey(Logr::log_t slog, const DNSName& qname,
      const DNSKEYRecordContent& drc, uint8_t digest)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSKEYRecordContent::DNSKEYRecordContent
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:639,1
    - Dst: getPublicKeyString
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:645,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 3
    argNames:
    - ' pk'
    - algorithm
    - flags
    argTypes:
    - std::shared_ptr<DNSCryptoKeyEngine>
    - uint8_t
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 648
      start: 637
    functionDepth: 0
    functionLinenumber: 637
    functionLinenumberEnd: 648
    functionName: makeDNSKEYFromDNSCryptoKeyEngine
    functionSourceFile: /src/pdns/pdns/recursordist/dnssecinfra.cc
    functionUses: 1
    functionsReached:
    - getPublicKeyString
    - DNSKEYRecordContent::DNSKEYRecordContent
    linkageType: ''
    returnType: DNSKEYRecordContent
    signature: DNSKEYRecordContent makeDNSKEYFromDNSCryptoKeyEngine(const std::shared_ptr<DNSCryptoKeyEngine>&
      pk, uint8_t algorithm, uint16_t flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: time
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:653,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 656
      start: 650
    functionDepth: 0
    functionLinenumber: 650
    functionLinenumberEnd: 656
    functionName: getStartOfWeek
    functionSourceFile: /src/pdns/pdns/recursordist/dnssecinfra.cc
    functionUses: 2
    functionsReached:
    - time
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t getStartOfWeek()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hashQNameWithSalt
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:660,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' ns3prc'
    - ' qname'
    argTypes:
    - NSEC3PARAMRecordContent
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 661
      start: 658
    functionDepth: 0
    functionLinenumber: 658
    functionLinenumberEnd: 661
    functionName: hashQNameWithSalt
    functionSourceFile: /src/pdns/pdns/recursordist/dnssecinfra.cc
    functionUses: 17
    functionsReached:
    - hashQNameWithSalt
    linkageType: ''
    returnType: string
    signature: string hashQNameWithSalt(const NSEC3PARAMRecordContent& ns3prc, const
      DNSName& qname)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: toDNSStringLC
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:668,1
    - Dst: SHA1
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:673,1
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:673,1
    - Dst: string::c_str
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:673,1
    - Dst: string::length
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:673,1
    - Dst: string::assign
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:676,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:676,1
    - Dst: string::capacity
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:683,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:683,1
    - Dst: string::reserve
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:684,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:684,1
    - Dst: string::assign
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:686,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:686,1
    - Dst: string::append
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:687,1
    - Dst: std::copy
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:691,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:691,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:691,1
    - Dst: string::begin
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:691,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 3
    argNames:
    - ' salt'
    - iterations
    - ' qname'
    argTypes:
    - std::string
    - unsigned int
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 696
      start: 663
    functionDepth: 1
    functionLinenumber: 663
    functionLinenumberEnd: 696
    functionName: hashQNameWithSalt
    functionSourceFile: /src/pdns/pdns/recursordist/dnssecinfra.cc
    functionUses: 17
    functionsReached:
    - reinterpret_cast<char*>
    - string::c_str
    - toDNSStringLC
    - string::assign
    - string::reserve
    - string::begin
    - string::append
    - size
    - reinterpret_cast<const unsigned char*>
    - string::capacity
    - SHA1
    - string::length
    - std::copy
    linkageType: ''
    returnType: string
    signature: string hashQNameWithSalt(const std::string& salt, unsigned int iterations,
      const DNSName& qname)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:700,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:703,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 1
    argNames:
    - ' raw'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 711
      start: 698
    functionDepth: 0
    functionLinenumber: 698
    functionLinenumberEnd: 711
    functionName: incrementHash
    functionSourceFile: /src/pdns/pdns/recursordist/dnssecinfra.cc
    functionUses: 1
    functionsReached:
    - empty
    - size
    linkageType: ''
    returnType: void
    signature: void incrementHash(std::string& raw)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:715,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:718,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 1
    argNames:
    - ' raw'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 726
      start: 713
    functionDepth: 0
    functionLinenumber: 713
    functionLinenumberEnd: 726
    functionName: decrementHash
    functionSourceFile: /src/pdns/pdns/recursordist/dnssecinfra.cc
    functionUses: 1
    functionsReached:
    - empty
    - size
    linkageType: ''
    returnType: void
    signature: void decrementHash(std::string& raw)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 731
      start: 728
    functionDepth: 0
    functionLinenumber: 728
    functionLinenumberEnd: 731
    functionName: '& DNSSECPrivateKey::getDNSKEY() const'
    functionSourceFile: /src/pdns/pdns/recursordist/dnssecinfra.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: DNSKEYRecordContent
    signature: DNSKEYRecordContent & DNSSECPrivateKey::getDNSKEY() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeDNSKEYFromDNSCryptoKeyEngine
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:735,1
    - Dst: getKey
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:735,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 736
      start: 733
    functionDepth: 0
    functionLinenumber: 733
    functionLinenumberEnd: 736
    functionName: DNSSECPrivateKey::computeDNSKEY
    functionSourceFile: /src/pdns/pdns/recursordist/dnssecinfra.cc
    functionUses: 0
    functionsReached:
    - getKey
    - makeDNSKEYFromDNSCryptoKeyEngine
    linkageType: ''
    returnType: void
    signature: void DNSSECPrivateKey::computeDNSKEY()
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: EVP_md5
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:745,1
    - Dst: EVP_sha1
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:748,1
    - Dst: EVP_sha224
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:751,1
    - Dst: EVP_sha256
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:754,1
    - Dst: EVP_sha384
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:757,1
    - Dst: EVP_sha512
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:760,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:763,1
    - Dst: HMAC
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:766,1
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:766,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:766,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:766,1
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:766,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:766,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:766,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:768,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:771,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 27
    argCount: 3
    argNames:
    - ' key'
    - ' text'
    - hasher
    argTypes:
    - std::string
    - std::string
    - TSIGHashEnum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 772
      start: 738
    functionDepth: 0
    functionLinenumber: 738
    functionLinenumberEnd: 772
    functionName: calculateHMAC
    functionSourceFile: /src/pdns/pdns/recursordist/dnssecinfra.cc
    functionUses: 2
    functionsReached:
    - EVP_sha384
    - EVP_md5
    - PDNSException
    - EVP_sha224
    - string
    - size
    - EVP_sha256
    - reinterpret_cast<const unsigned char*>
    - EVP_sha512
    - c_str
    - HMAC
    - EVP_sha1
    linkageType: ''
    returnType: string
    signature: string calculateHMAC(const std::string& key, const std::string& text,
      TSIGHashEnum hasher)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:778,1
    - Dst: htons
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:779,1
    - Dst: length
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:779,1
    - Dst: string::append
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:780,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:780,1
    - Dst: string::append
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:781,1
    - Dst: string::append
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:784,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:787,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:788,1
    - Dst: DNSPacketWriter::xfrName
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:790,1
    - Dst: makeLowerCase
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:790,1
    - Dst: DNSPacketWriter::xfr16BitInt
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:791,1
    - Dst: DNSPacketWriter::xfr32BitInt
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:792,1
    - Dst: DNSPacketWriter::xfrName
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:793,1
    - Dst: d_algoName::makeLowerCase
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:793,1
    - Dst: DNSPacketWriter::xfr48BitInt
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:797,1
    - Dst: DNSPacketWriter::xfr16BitInt
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:798,1
    - Dst: DNSPacketWriter::xfr16BitInt
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:800,1
    - Dst: DNSPacketWriter::xfr16BitInt
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:801,1
    - Dst: d_otherData::length
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:801,1
    - Dst: string::append
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:804,1
    - Dst: vector::begin
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:804,1
    - Dst: vector::end
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:804,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 20
    argCount: 6
    argNames:
    - ' previous'
    - packetBegin
    - packetSize
    - ' tsigKeyName'
    - ' trc'
    - timersonly
    argTypes:
    - string
    - char*
    - size_t
    - DNSName
    - TSIGRecordContent
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 806
      start: 774
    functionDepth: 0
    functionLinenumber: 774
    functionLinenumberEnd: 806
    functionName: makeTSIGPayload
    functionSourceFile: /src/pdns/pdns/recursordist/dnssecinfra.cc
    functionUses: 2
    functionsReached:
    - makeLowerCase
    - length
    - DNSPacketWriter::xfr16BitInt
    - d_algoName::makeLowerCase
    - vector::begin
    - string::append
    - DNSName
    - vector::end
    - reinterpret_cast<const char*>
    - DNSPacketWriter::xfrName
    - DNSPacketWriter::xfr48BitInt
    - d_otherData::length
    - empty
    - DNSPacketWriter::xfr32BitInt
    - vector::size
    - htons
    linkageType: ''
    returnType: string
    signature: string makeTSIGPayload(const string& previous, const char* packetBegin,
      size_t packetSize, const DNSName& tsigKeyName, const TSIGRecordContent& trc,
      bool timersonly)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: string::resize
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:813,1
    - Dst: htons
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:821,1
    - Dst: string::replace
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:822,1
    - Dst: makeTSIGPayload
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:824,1
    - Dst: string::data
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:824,1
    - Dst: string::size
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:824,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 6
    argNames:
    - ' opacket'
    - tsigOffset
    - ' keyname'
    - ' trc'
    - ' previous'
    - timersonly
    argTypes:
    - string
    - unsigned int
    - DNSName
    - TSIGRecordContent
    - string
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 825
      start: 808
    functionDepth: 1
    functionLinenumber: 808
    functionLinenumberEnd: 825
    functionName: makeTSIGMessageFromTSIGPacket
    functionSourceFile: /src/pdns/pdns/recursordist/dnssecinfra.cc
    functionUses: 1
    functionsReached:
    - string::data
    - string::resize
    - string::size
    - makeTSIGPayload
    - string::replace
    - htons
    linkageType: ''
    returnType: string
    signature: string makeTSIGMessageFromTSIGPacket(const string& opacket, unsigned
      int tsigOffset, const DNSName& keyname, const TSIGRecordContent& trc, const
      string& previous, bool timersonly, unsigned int dnsHeaderOffset=0)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: getTSIGHashEnum
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:830,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:831,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:831,1
    - Dst: d_algoName::toLogString
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:831,1
    - Dst: makeTSIGPayload
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:834,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:834,1
    - Dst: getContent
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:834,1
    - Dst: getContent
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:834,1
    - Dst: gss_add_signature
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:837,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:838,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:838,1
    - Dst: toLogString
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:838,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:838,1
    - Dst: calculateHMAC
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:841,1
    - Dst: startRecord
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:844,1
    - Dst: toPacket
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:845,1
    - Dst: commit
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:846,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 7
    argNames:
    - slog
    - ' pw'
    - ' trc'
    - ' tsigkeyname'
    - ' tsigsecret'
    - ' tsigprevious'
    - timersonly
    argTypes:
    - Logr::log_t
    - DNSPacketWriter
    - TSIGRecordContent
    - DNSName
    - string
    - string
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 847
      start: 827
    functionDepth: 0
    functionLinenumber: 827
    functionLinenumberEnd: 847
    functionName: addTSIG
    functionSourceFile: /src/pdns/pdns/recursordist/dnssecinfra.cc
    functionUses: 10
    functionsReached:
    - d_algoName::toLogString
    - toLogString
    - toPacket
    - commit
    - PDNSException
    - makeTSIGPayload
    - calculateHMAC
    - string
    - getContent
    - getTSIGHashEnum
    - reinterpret_cast<const char*>
    - gss_add_signature
    - startRecord
    linkageType: ''
    returnType: void
    signature: void addTSIG(Logr::log_t slog, DNSPacketWriter& pw, TSIGRecordContent&
      trc, const DNSName& tsigkeyname, const string& tsigsecret, const string& tsigprevious,
      bool timersonly)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: std::abs
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:851,1
    - Dst: time
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:851,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:853,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:853,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:853,1
    - Dst: getTSIGHashEnum
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:857,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:858,1
    - Dst: d_algoName::toLogString
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:858,1
    - Dst: getTSIGHashEnum
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:862,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:863,1
    - Dst: algo::toLogString
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:863,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:867,1
    - Dst: name::toLogString
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:867,1
    - Dst: algo::toLogString
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:867,1
    - Dst: d_algoName::toLogString
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:867,1
    - Dst: makeTSIGMessageFromTSIGPacket
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:871,1
    - Dst: gss_verify_signature
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:874,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:875,1
    - Dst: name::toLogString
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:875,1
    - Dst: calculateHMAC
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:878,1
    - Dst: constantTimeStringEquals
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:880,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:881,1
    - Dst: name::toLogString
      Src: /src/pdns/pdns/recursordist/dnssecinfra.cc:881,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 24
    argCount: 9
    argNames:
    - slog
    - ' packet'
    - sigPos
    - ' tt'
    - ' trc'
    - ' previousMAC'
    - ' theirMAC'
    - timersOnly
    - dnsHeaderOffset
    argTypes:
    - Logr::log_t
    - std::string
    - size_t
    - TSIGTriplet
    - TSIGRecordContent
    - std::string
    - std::string
    - bool
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 886
      start: 849
    functionDepth: 0
    functionLinenumber: 849
    functionLinenumberEnd: 886
    functionName: validateTSIG
    functionSourceFile: /src/pdns/pdns/recursordist/dnssecinfra.cc
    functionUses: 6
    functionsReached:
    - d_algoName::toLogString
    - std::to_string
    - makeTSIGMessageFromTSIGPacket
    - std::runtime_error
    - calculateHMAC
    - time
    - constantTimeStringEquals
    - getTSIGHashEnum
    - name::toLogString
    - std::abs
    - algo::toLogString
    - gss_verify_signature
    linkageType: ''
    returnType: bool
    signature: bool validateTSIG(Logr::log_t slog, const std::string& packet, size_t
      sigPos, const TSIGTriplet& tt, const TSIGRecordContent& trc, const std::string&
      previousMAC, const std::string& theirMAC, bool timersOnly, unsigned int dnsHeaderOffset)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: withName
      Src: /src/pdns/pdns/recursordist/rec-carbon.cc:17,1
    - Dst: getLocal
      Src: /src/pdns/pdns/recursordist/rec-carbon.cc:19,1
    - Dst: auto::servers::empty
      Src: /src/pdns/pdns/recursordist/rec-carbon.cc:22,1
    - Dst: auto::namespace_name::empty
      Src: /src/pdns/pdns/recursordist/rec-carbon.cc:26,1
    - Dst: auto::hostname::empty
      Src: /src/pdns/pdns/recursordist/rec-carbon.cc:30,1
    - Dst: getCarbonHostName
      Src: /src/pdns/pdns/recursordist/rec-carbon.cc:32,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/rec-carbon.cc:35,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/rec-carbon.cc:35,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/rec-carbon.cc:35,1
    - Dst: auto::instance_name::empty
      Src: /src/pdns/pdns/recursordist/rec-carbon.cc:38,1
    - Dst: Socket::setNonBlocking
      Src: /src/pdns/pdns/recursordist/rec-carbon.cc:46,1
    - Dst: static_cast<suseconds_t>
      Src: /src/pdns/pdns/recursordist/rec-carbon.cc:49,1
    - Dst: std::make_shared<TCPIOHandler>
      Src: /src/pdns/pdns/recursordist/rec-carbon.cc:50,1
    - Dst: Socket::releaseHandle
      Src: /src/pdns/pdns/recursordist/rec-carbon.cc:50,1
    - Dst: auto::tryConnect
      Src: /src/pdns/pdns/recursordist/rec-carbon.cc:51,1
    - Dst: PacketBuffer::empty
      Src: /src/pdns/pdns/recursordist/rec-carbon.cc:53,1
    - Dst: getAllStatsMap
      Src: /src/pdns/pdns/recursordist/rec-carbon.cc:54,1
    - Dst: time
      Src: /src/pdns/pdns/recursordist/rec-carbon.cc:57,1
    - Dst: ostringstream::str
      Src: /src/pdns/pdns/recursordist/rec-carbon.cc:62,1
    - Dst: PacketBuffer::insert
      Src: /src/pdns/pdns/recursordist/rec-carbon.cc:63,1
    - Dst: PacketBuffer::end
      Src: /src/pdns/pdns/recursordist/rec-carbon.cc:63,1
    - Dst: cbegin
      Src: /src/pdns/pdns/recursordist/rec-carbon.cc:63,1
    - Dst: cend
      Src: /src/pdns/pdns/recursordist/rec-carbon.cc:63,1
    - Dst: asendtcp
      Src: /src/pdns/pdns/recursordist/rec-carbon.cc:66,1
    - Dst: auto::info
      Src: /src/pdns/pdns/recursordist/rec-carbon.cc:68,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-carbon.cc:68,1
    - Dst: auto::error
      Src: /src/pdns/pdns/recursordist/rec-carbon.cc:72,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-carbon.cc:72,1
    - Dst: auto::close
      Src: /src/pdns/pdns/recursordist/rec-carbon.cc:74,1
    - Dst: auto::error
      Src: /src/pdns/pdns/recursordist/rec-carbon.cc:78,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-carbon.cc:78,1
    - Dst: auto::error
      Src: /src/pdns/pdns/recursordist/rec-carbon.cc:81,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/rec-carbon.cc:81,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-carbon.cc:81,1
    - Dst: auto::info
      Src: /src/pdns/pdns/recursordist/rec-carbon.cc:84,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 40
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 15
    functionDepth: 3
    functionLinenumber: 15
    functionLinenumberEnd: 86
    functionName: doCarbonDump
    functionSourceFile: /src/pdns/pdns/recursordist/rec-carbon.cc
    functionUses: 0
    functionsReached:
    - Socket::releaseHandle
    - PacketBuffer::end
    - withName
    - std::make_shared<TCPIOHandler>
    - auto::hostname::empty
    - std::string
    - auto::close
    - getCarbonHostName
    - Socket::setNonBlocking
    - asendtcp
    - time
    - Logging::Loggable
    - getLocal
    - auto::error
    - cbegin
    - auto::servers::empty
    - cend
    - PacketBuffer::empty
    - auto::info
    - auto::tryConnect
    - std::runtime_error
    - getAllStatsMap
    - ostringstream::str
    - auto::instance_name::empty
    - what
    - PacketBuffer::insert
    - static_cast<suseconds_t>
    - auto::namespace_name::empty
    linkageType: ''
    returnType: void
    signature: void doCarbonDump(void*)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 41
    functionDepth: 0
    functionLinenumber: 41
    functionLinenumberEnd: 42
    functionName: htobe16
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: htobe16(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 42
    functionDepth: 0
    functionLinenumber: 42
    functionLinenumberEnd: 43
    functionName: htole16
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: htole16(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 44
    functionName: be16toh
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: be16toh(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 44
    functionDepth: 0
    functionLinenumber: 44
    functionLinenumberEnd: 45
    functionName: le16toh
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: le16toh(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 46
    functionDepth: 0
    functionLinenumber: 46
    functionLinenumberEnd: 47
    functionName: htobe32
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: htobe32(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 47
    functionDepth: 0
    functionLinenumber: 47
    functionLinenumberEnd: 48
    functionName: htole32
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: htole32(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 48
    functionDepth: 0
    functionLinenumber: 48
    functionLinenumberEnd: 49
    functionName: be32toh
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: be32toh(x)
  - 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: le32toh
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: le32toh(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: htobe64
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    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: 53
      start: 52
    functionDepth: 0
    functionLinenumber: 52
    functionLinenumberEnd: 53
    functionName: htole64
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: htole64(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 53
    functionDepth: 0
    functionLinenumber: 53
    functionLinenumberEnd: 54
    functionName: be64toh
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: be64toh(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 54
    functionDepth: 0
    functionLinenumber: 54
    functionLinenumberEnd: 55
    functionName: le64toh
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: le64toh(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 64
    functionDepth: 0
    functionLinenumber: 64
    functionLinenumberEnd: 65
    functionName: htobe16
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: htobe16(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 65
    functionDepth: 0
    functionLinenumber: 65
    functionLinenumberEnd: 66
    functionName: htole16
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: htole16(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 66
    functionDepth: 0
    functionLinenumber: 66
    functionLinenumberEnd: 67
    functionName: be16toh
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: be16toh(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 67
    functionDepth: 0
    functionLinenumber: 67
    functionLinenumberEnd: 68
    functionName: le16toh
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: le16toh(x)
  - 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: htobe32
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: htobe32(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: htole32
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: htole32(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 71
    functionDepth: 0
    functionLinenumber: 71
    functionLinenumberEnd: 72
    functionName: be32toh
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: be32toh(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 72
    functionDepth: 0
    functionLinenumber: 72
    functionLinenumberEnd: 73
    functionName: le32toh
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: le32toh(x)
  - 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: 74
    functionDepth: 0
    functionLinenumber: 74
    functionLinenumberEnd: 75
    functionName: htobe64
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    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: 76
      start: 75
    functionDepth: 0
    functionLinenumber: 75
    functionLinenumberEnd: 76
    functionName: htole64
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: htole64(x)
  - 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: be64toh
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: be64toh(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: le64toh
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: le64toh(x)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: std::tie
      Src: /src/pdns/pdns/recursordist/iputils.hh:98,1
    - Dst: std::tie
      Src: /src/pdns/pdns/recursordist/iputils.hh:98,1
    - Dst: memcmp
      Src: /src/pdns/pdns/recursordist/iputils.hh:104,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 96
    functionDepth: 0
    functionLinenumber: 96
    functionLinenumberEnd: 105
    functionName: operator==(const ComboAddress& rhs) const
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 0
    functionsReached:
    - memcmp
    - std::tie
    linkageType: ''
    returnType: bool
    signature: bool operator==(const ComboAddress& rhs) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 107
    functionDepth: 0
    functionLinenumber: 107
    functionLinenumberEnd: 110
    functionName: operator!=(const ComboAddress& rhs) const
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool operator!=(const ComboAddress& rhs) const
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: std::tie
      Src: /src/pdns/pdns/recursordist/iputils.hh:117,1
    - Dst: std::tie
      Src: /src/pdns/pdns/recursordist/iputils.hh:117,1
    - Dst: std::tie
      Src: /src/pdns/pdns/recursordist/iputils.hh:120,1
    - Dst: std::tie
      Src: /src/pdns/pdns/recursordist/iputils.hh:120,1
    - Dst: memcmp
      Src: /src/pdns/pdns/recursordist/iputils.hh:126,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 127
      start: 112
    functionDepth: 0
    functionLinenumber: 112
    functionLinenumberEnd: 127
    functionName: operator<(const ComboAddress& rhs) const
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 0
    functionsReached:
    - memcmp
    - std::tie
    linkageType: ''
    returnType: bool
    signature: bool operator<(const ComboAddress& rhs) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: rhs
      Src: /src/pdns/pdns/recursordist/iputils.hh:131,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 132
      start: 129
    functionDepth: 0
    functionLinenumber: 129
    functionLinenumberEnd: 132
    functionName: operator>(const ComboAddress& rhs) const
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 0
    functionsReached:
    - rhs
    linkageType: ''
    returnType: bool
    signature: bool operator>(const ComboAddress& rhs) const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/recursordist/iputils.hh:140,1
    - Dst: burtle
      Src: /src/pdns/pdns/recursordist/iputils.hh:141,1
    - Dst: burtle
      Src: /src/pdns/pdns/recursordist/iputils.hh:142,1
    - Dst: reinterpret_cast<const uint8_t*>
      Src: /src/pdns/pdns/recursordist/iputils.hh:142,1
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/recursordist/iputils.hh:144,1
    - Dst: burtle
      Src: /src/pdns/pdns/recursordist/iputils.hh:145,1
    - Dst: burtle
      Src: /src/pdns/pdns/recursordist/iputils.hh:146,1
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/recursordist/iputils.hh:146,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ' address'
    argTypes:
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 148
      start: 136
    functionDepth: 0
    functionLinenumber: 136
    functionLinenumberEnd: 148
    functionName: operator()(const ComboAddress& address) const
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 0
    functionsReached:
    - burtle
    - reinterpret_cast<const unsigned char*>
    - reinterpret_cast<const uint8_t*>
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t operator()(const ComboAddress& address) const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/recursordist/iputils.hh:159,1
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/recursordist/iputils.hh:163,1
    - Dst: burtle
      Src: /src/pdns/pdns/recursordist/iputils.hh:167,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - ' address'
    argTypes:
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 168
      start: 153
    functionDepth: 0
    functionLinenumber: 153
    functionLinenumberEnd: 168
    functionName: operator()(const ComboAddress& address) const
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 0
    functionsReached:
    - burtle
    - reinterpret_cast<const unsigned char*>
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t operator()(const ComboAddress& address) const
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/pdns/pdns/recursordist/iputils.hh:184,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - ' lhs'
    - ' rhs'
    argTypes:
    - ComboAddress
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 185
      start: 173
    functionDepth: 0
    functionLinenumber: 173
    functionLinenumberEnd: 185
    functionName: operator()(const ComboAddress& lhs, const ComboAddress& rhs) const
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 0
    functionsReached:
    - memcmp
    linkageType: ''
    returnType: bool
    signature: bool operator()(const ComboAddress& lhs, const ComboAddress& rhs) const
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/pdns/pdns/recursordist/iputils.hh:198,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - ' lhs'
    - ' rhs'
    argTypes:
    - ComboAddress
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 199
      start: 190
    functionDepth: 0
    functionLinenumber: 190
    functionLinenumberEnd: 199
    functionName: operator()(const ComboAddress& lhs, const ComboAddress& rhs) const
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 0
    functionsReached:
    - memcmp
    linkageType: ''
    returnType: bool
    signature: bool operator()(const ComboAddress& lhs, const ComboAddress& rhs) const
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 208
      start: 202
    functionDepth: 0
    functionLinenumber: 202
    functionLinenumberEnd: 208
    functionName: getSocklen
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 67
    functionsReached: []
    linkageType: ''
    returnType: socklen_t
    signature: socklen_t getSocklen() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 217
      start: 210
    functionDepth: 0
    functionLinenumber: 210
    functionLinenumberEnd: 217
    functionName: ComboAddress
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 318
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ComboAddress()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: setSockaddr
      Src: /src/pdns/pdns/recursordist/iputils.hh:221,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - socketAddress
    - salen
    argTypes:
    - struct sockaddr*
    - socklen_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 222
      start: 219
    functionDepth: 0
    functionLinenumber: 219
    functionLinenumberEnd: 222
    functionName: ComboAddress
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 318
    functionsReached:
    - setSockaddr
    linkageType: ''
    returnType: void
    signature: void ComboAddress(const struct sockaddr* socketAddress, socklen_t salen)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: setSockaddr
      Src: /src/pdns/pdns/recursordist/iputils.hh:227,1
    - Dst: reinterpret_cast<const struct sockaddr*>
      Src: /src/pdns/pdns/recursordist/iputils.hh:227,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - socketAddress
    argTypes:
    - struct sockaddr_in6*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 228
      start: 224
    functionDepth: 0
    functionLinenumber: 224
    functionLinenumberEnd: 228
    functionName: ComboAddress
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 318
    functionsReached:
    - reinterpret_cast<const struct sockaddr*>
    - setSockaddr
    linkageType: ''
    returnType: void
    signature: void ComboAddress(const struct sockaddr_in6* socketAddress)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: setSockaddr
      Src: /src/pdns/pdns/recursordist/iputils.hh:233,1
    - Dst: reinterpret_cast<const struct sockaddr*>
      Src: /src/pdns/pdns/recursordist/iputils.hh:233,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - socketAddress
    argTypes:
    - struct sockaddr_in*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 234
      start: 230
    functionDepth: 0
    functionLinenumber: 230
    functionLinenumberEnd: 234
    functionName: ComboAddress
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 318
    functionsReached:
    - reinterpret_cast<const struct sockaddr*>
    - setSockaddr
    linkageType: ''
    returnType: void
    signature: void ComboAddress(const struct sockaddr_in* socketAddress)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PDNSException
      Src: /src/pdns/pdns/recursordist/iputils.hh:239,1
    - Dst: memcpy
      Src: /src/pdns/pdns/recursordist/iputils.hh:241,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - socketAddress
    - salen
    argTypes:
    - struct sockaddr*
    - socklen_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 242
      start: 236
    functionDepth: 0
    functionLinenumber: 236
    functionLinenumberEnd: 242
    functionName: setSockaddr
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 22
    functionsReached:
    - PDNSException
    - memcpy
    linkageType: ''
    returnType: void
    signature: void setSockaddr(const struct sockaddr* socketAddress, socklen_t salen)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/pdns/pdns/recursordist/iputils.hh:247,1
    - Dst: makeIPv4sockaddr
      Src: /src/pdns/pdns/recursordist/iputils.hh:250,1
    - Dst: makeIPv6sockaddr
      Src: /src/pdns/pdns/recursordist/iputils.hh:252,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/recursordist/iputils.hh:253,1
    - Dst: htons
      Src: /src/pdns/pdns/recursordist/iputils.hh:257,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 1
    argNames:
    - ' str'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 259
      start: 245
    functionDepth: 0
    functionLinenumber: 245
    functionLinenumberEnd: 259
    functionName: ComboAddress
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 318
    functionsReached:
    - makeIPv4sockaddr
    - PDNSException
    - memset
    - makeIPv6sockaddr
    - htons
    linkageType: ''
    returnType: void
    signature: void ComboAddress(const string& str, uint16_t port = 0)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 264
      start: 261
    functionDepth: 0
    functionLinenumber: 261
    functionLinenumberEnd: 264
    functionName: isIPv6
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 55
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool isIPv6() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 268
      start: 265
    functionDepth: 0
    functionLinenumber: 265
    functionLinenumberEnd: 268
    functionName: isIPv4
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 86
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool isIPv4() const
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/recursordist/iputils.hh:278,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 290
      start: 270
    functionDepth: 0
    functionLinenumber: 270
    functionLinenumberEnd: 290
    functionName: isMappedIPv4
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 8
    functionsReached:
    - reinterpret_cast<const unsigned char*>
    linkageType: ''
    returnType: bool
    signature: bool isMappedIPv4() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ComboAddress::addressOnlyEqual
      Src: /src/pdns/pdns/recursordist/iputils.hh:296,1
    - Dst: compare
      Src: /src/pdns/pdns/recursordist/iputils.hh:297,1
    - Dst: compare
      Src: /src/pdns/pdns/recursordist/iputils.hh:297,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 298
      start: 292
    functionDepth: 0
    functionLinenumber: 292
    functionLinenumberEnd: 298
    functionName: isUnspecified
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 10
    functionsReached:
    - compare
    - ComboAddress::addressOnlyEqual
    linkageType: ''
    returnType: bool
    signature: bool isUnspecified() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: isMappedIPv4
      Src: /src/pdns/pdns/recursordist/iputils.hh:302,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/recursordist/iputils.hh:303,1
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/recursordist/iputils.hh:310,1
    - Dst: memcpy
      Src: /src/pdns/pdns/recursordist/iputils.hh:312,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 314
      start: 300
    functionDepth: 0
    functionLinenumber: 300
    functionLinenumberEnd: 314
    functionName: mapToIPv4
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 6
    functionsReached:
    - PDNSException
    - memcpy
    - reinterpret_cast<const unsigned char*>
    - isMappedIPv4
    linkageType: ''
    returnType: ComboAddress
    signature: ComboAddress mapToIPv4() const
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: getnameinfo
      Src: /src/pdns/pdns/recursordist/iputils.hh:321,1
    - Dst: reinterpret_cast<const struct sockaddr*>
      Src: /src/pdns/pdns/recursordist/iputils.hh:321,1
    - Dst: getSocklen
      Src: /src/pdns/pdns/recursordist/iputils.hh:321,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/recursordist/iputils.hh:321,1
    - Dst: std::array::size
      Src: /src/pdns/pdns/recursordist/iputils.hh:321,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/recursordist/iputils.hh:323,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/iputils.hh:325,1
    - Dst: gai_strerror
      Src: /src/pdns/pdns/recursordist/iputils.hh:325,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 328
      start: 316
    functionDepth: 0
    functionLinenumber: 316
    functionLinenumberEnd: 328
    functionName: toString
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 490
    functionsReached:
    - gai_strerror
    - getnameinfo
    - string
    - reinterpret_cast<const struct sockaddr*>
    - getSocklen
    - std::array::data
    - std::array::size
    linkageType: ''
    returnType: string
    signature: string toString() const
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: inet_ntop
      Src: /src/pdns/pdns/recursordist/iputils.hh:335,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/recursordist/iputils.hh:335,1
    - Dst: std::array::size
      Src: /src/pdns/pdns/recursordist/iputils.hh:335,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/recursordist/iputils.hh:337,1
    - Dst: inet_ntop
      Src: /src/pdns/pdns/recursordist/iputils.hh:341,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/recursordist/iputils.hh:341,1
    - Dst: std::array::size
      Src: /src/pdns/pdns/recursordist/iputils.hh:341,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/recursordist/iputils.hh:343,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/iputils.hh:349,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 350
      start: 331
    functionDepth: 0
    functionLinenumber: 331
    functionLinenumberEnd: 350
    functionName: toStringNoInterface
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 7
    functionsReached:
    - stringerror
    - std::array::data
    - inet_ntop
    - std::array::size
    linkageType: ''
    returnType: string
    signature: string toStringNoInterface() const
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: isIPv4
      Src: /src/pdns/pdns/recursordist/iputils.hh:354,1
    - Dst: ntohl
      Src: /src/pdns/pdns/recursordist/iputils.hh:355,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/iputils.hh:360,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/iputils.hh:360,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/iputils.hh:360,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/iputils.hh:360,1
    - Dst: std::stringstream::str
      Src: /src/pdns/pdns/recursordist/iputils.hh:373,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 374
      start: 352
    functionDepth: 0
    functionLinenumber: 352
    functionLinenumberEnd: 374
    functionName: toStringReversed
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 4
    functionsReached:
    - std::stringstream::str
    - ntohl
    - isIPv4
    - std::to_string
    linkageType: ''
    returnType: string
    signature: string toStringReversed() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: toString
      Src: /src/pdns/pdns/recursordist/iputils.hh:379,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/iputils.hh:379,1
    - Dst: ntohs
      Src: /src/pdns/pdns/recursordist/iputils.hh:379,1
    - Dst: toString
      Src: /src/pdns/pdns/recursordist/iputils.hh:381,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/iputils.hh:381,1
    - Dst: ntohs
      Src: /src/pdns/pdns/recursordist/iputils.hh:381,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 382
      start: 376
    functionDepth: 0
    functionLinenumber: 376
    functionLinenumberEnd: 382
    functionName: toStringWithPort
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 191
    functionsReached:
    - toString
    - std::to_string
    - ntohs
    linkageType: ''
    returnType: string
    signature: string toStringWithPort() const
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ntohs
      Src: /src/pdns/pdns/recursordist/iputils.hh:386,1
    - Dst: toString
      Src: /src/pdns/pdns/recursordist/iputils.hh:387,1
    - Dst: toString
      Src: /src/pdns/pdns/recursordist/iputils.hh:390,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/iputils.hh:390,1
    - Dst: ntohs
      Src: /src/pdns/pdns/recursordist/iputils.hh:390,1
    - Dst: toString
      Src: /src/pdns/pdns/recursordist/iputils.hh:392,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/iputils.hh:392,1
    - Dst: ntohs
      Src: /src/pdns/pdns/recursordist/iputils.hh:392,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - port
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 393
      start: 384
    functionDepth: 0
    functionLinenumber: 384
    functionLinenumberEnd: 393
    functionName: toStringWithPortExcept
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 12
    functionsReached:
    - toString
    - std::to_string
    - ntohs
    linkageType: ''
    returnType: string
    signature: string toStringWithPortExcept(int port) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: toStringWithPortExcept
      Src: /src/pdns/pdns/recursordist/iputils.hh:397,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 398
      start: 395
    functionDepth: 0
    functionLinenumber: 395
    functionLinenumberEnd: 398
    functionName: toLogString
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 126
    functionsReached:
    - toStringWithPortExcept
    linkageType: ''
    returnType: string
    signature: string toLogString() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/recursordist/iputils.hh:402,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 403
      start: 400
    functionDepth: 0
    functionLinenumber: 400
    functionLinenumberEnd: 403
    functionName: toStructuredLogString
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 8
    functionsReached:
    - toStringWithPort
    linkageType: ''
    returnType: string
    signature: string toStructuredLogString() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: isIPv4
      Src: /src/pdns/pdns/recursordist/iputils.hh:408,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/recursordist/iputils.hh:409,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/recursordist/iputils.hh:411,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 413
      start: 405
    functionDepth: 0
    functionLinenumber: 405
    functionLinenumberEnd: 413
    functionName: toByteString
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 15
    functionsReached:
    - reinterpret_cast<const char*>
    - isIPv4
    linkageType: ''
    returnType: string
    signature: string toByteString() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 420
      start: 417
    functionDepth: 0
    functionLinenumber: 417
    functionLinenumberEnd: 420
    functionName: getNetworkOrderPort
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t getNetworkOrderPort() const noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ntohs
      Src: /src/pdns/pdns/recursordist/iputils.hh:423,1
    - Dst: getNetworkOrderPort
      Src: /src/pdns/pdns/recursordist/iputils.hh:423,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 424
      start: 421
    functionDepth: 0
    functionLinenumber: 421
    functionLinenumberEnd: 424
    functionName: getPort
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 49
    functionsReached:
    - getNetworkOrderPort
    - ntohs
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t getPort() const noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: htons
      Src: /src/pdns/pdns/recursordist/iputils.hh:427,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - port
    argTypes:
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 428
      start: 425
    functionDepth: 0
    functionLinenumber: 425
    functionLinenumberEnd: 428
    functionName: setPort
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 25
    functionsReached:
    - htons
    linkageType: ''
    returnType: void
    signature: void setPort(uint16_t port)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/pdns/pdns/recursordist/iputils.hh:432,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 433
      start: 430
    functionDepth: 0
    functionLinenumber: 430
    functionLinenumberEnd: 433
    functionName: reset
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 161
    functionsReached:
    - memset
    linkageType: ''
    returnType: void
    signature: void reset()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: isIPv4
      Src: /src/pdns/pdns/recursordist/iputils.hh:438,1
    - Dst: isIPv6
      Src: /src/pdns/pdns/recursordist/iputils.hh:441,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 445
      start: 436
    functionDepth: 0
    functionLinenumber: 436
    functionLinenumberEnd: 445
    functionName: getBits
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 60
    functionsReached:
    - isIPv4
    - isIPv6
    linkageType: ''
    returnType: uint8_t
    signature: uint8_t getBits() const
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: isIPv4
      Src: /src/pdns/pdns/recursordist/iputils.hh:452,1
    - Dst: ntohl
      Src: /src/pdns/pdns/recursordist/iputils.hh:463,1
    - Dst: isIPv6
      Src: /src/pdns/pdns/recursordist/iputils.hh:467,1
    - Dst: reinterpret_cast<const uint8_t*>
      Src: /src/pdns/pdns/recursordist/iputils.hh:478,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 26
    argCount: 1
    argNames:
    - index
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 485
      start: 450
    functionDepth: 0
    functionLinenumber: 450
    functionLinenumberEnd: 485
    functionName: getBit
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 14
    functionsReached:
    - ntohl
    - isIPv4
    - reinterpret_cast<const uint8_t*>
    - isIPv6
    linkageType: ''
    returnType: bool
    signature: bool getBit(int index) const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: vector::push_back
      Src: /src/pdns/pdns/recursordist/iputils.hh:499,1
    - Dst: toStringWithPortExcept
      Src: /src/pdns/pdns/recursordist/iputils.hh:499,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/recursordist/iputils.hh:502,1
    - Dst: toString
      Src: /src/pdns/pdns/recursordist/iputils.hh:502,1
    - Dst: boost::join
      Src: /src/pdns/pdns/recursordist/iputils.hh:504,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - ' container'
    argTypes:
    - Container<ComboAddress, Args...>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 505
      start: 494
    functionDepth: 0
    functionLinenumber: 494
    functionLinenumberEnd: 505
    functionName: caContainerToString
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 4
    functionsReached:
    - toStringWithPortExcept
    - vector::push_back
    - toString
    - boost::join
    linkageType: ''
    returnType: string
    signature: string caContainerToString(const Container<ComboAddress, Args...>&
      container, const bool withPort = true, const uint16_t portExcept = 53)
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 526
      start: 514
    functionDepth: 0
    functionLinenumber: 514
    functionLinenumberEnd: 526
    functionName: getSocklen
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 68
    functionsReached: []
    linkageType: ''
    returnType: socklen_t
    signature: socklen_t getSocklen() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 533
      start: 528
    functionDepth: 0
    functionLinenumber: 528
    functionLinenumberEnd: 533
    functionName: SockaddrWrapper
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void SockaddrWrapper()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: setSockaddr
      Src: /src/pdns/pdns/recursordist/iputils.hh:537,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - socketAddress
    - salen
    argTypes:
    - struct sockaddr*
    - socklen_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 538
      start: 535
    functionDepth: 0
    functionLinenumber: 535
    functionLinenumberEnd: 538
    functionName: SockaddrWrapper
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 3
    functionsReached:
    - setSockaddr
    linkageType: ''
    returnType: void
    signature: void SockaddrWrapper(const struct sockaddr* socketAddress, socklen_t
      salen)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: setSockaddr
      Src: /src/pdns/pdns/recursordist/iputils.hh:543,1
    - Dst: reinterpret_cast<const struct sockaddr*>
      Src: /src/pdns/pdns/recursordist/iputils.hh:543,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - socketAddress
    argTypes:
    - struct sockaddr_in6*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 544
      start: 540
    functionDepth: 0
    functionLinenumber: 540
    functionLinenumberEnd: 544
    functionName: SockaddrWrapper
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 3
    functionsReached:
    - reinterpret_cast<const struct sockaddr*>
    - setSockaddr
    linkageType: ''
    returnType: void
    signature: void SockaddrWrapper(const struct sockaddr_in6* socketAddress)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: setSockaddr
      Src: /src/pdns/pdns/recursordist/iputils.hh:549,1
    - Dst: reinterpret_cast<const struct sockaddr*>
      Src: /src/pdns/pdns/recursordist/iputils.hh:549,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - socketAddress
    argTypes:
    - struct sockaddr_in*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 550
      start: 546
    functionDepth: 0
    functionLinenumber: 546
    functionLinenumberEnd: 550
    functionName: SockaddrWrapper
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 3
    functionsReached:
    - reinterpret_cast<const struct sockaddr*>
    - setSockaddr
    linkageType: ''
    returnType: void
    signature: void SockaddrWrapper(const struct sockaddr_in* socketAddress)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: setSockaddr
      Src: /src/pdns/pdns/recursordist/iputils.hh:555,1
    - Dst: reinterpret_cast<const struct sockaddr*>
      Src: /src/pdns/pdns/recursordist/iputils.hh:555,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - socketAddress
    argTypes:
    - struct sockaddr_un*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 556
      start: 552
    functionDepth: 0
    functionLinenumber: 552
    functionLinenumberEnd: 556
    functionName: SockaddrWrapper
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 3
    functionsReached:
    - reinterpret_cast<const struct sockaddr*>
    - setSockaddr
    linkageType: ''
    returnType: void
    signature: void SockaddrWrapper(const struct sockaddr_un* socketAddress)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PDNSException
      Src: /src/pdns/pdns/recursordist/iputils.hh:561,1
    - Dst: memcpy
      Src: /src/pdns/pdns/recursordist/iputils.hh:563,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - socketAddress
    - salen
    argTypes:
    - struct sockaddr*
    - socklen_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 564
      start: 558
    functionDepth: 0
    functionLinenumber: 558
    functionLinenumberEnd: 564
    functionName: setSockaddr
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 26
    functionsReached:
    - PDNSException
    - memcpy
    linkageType: ''
    returnType: void
    signature: void setSockaddr(const struct sockaddr* socketAddress, socklen_t salen)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/pdns/pdns/recursordist/iputils.hh:568,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/recursordist/iputils.hh:572,1
    - Dst: makeIPv4sockaddr
      Src: /src/pdns/pdns/recursordist/iputils.hh:574,1
    - Dst: makeIPv6sockaddr
      Src: /src/pdns/pdns/recursordist/iputils.hh:576,1
    - Dst: find
      Src: /src/pdns/pdns/recursordist/iputils.hh:579,1
    - Dst: makeUNsockaddr
      Src: /src/pdns/pdns/recursordist/iputils.hh:579,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/recursordist/iputils.hh:580,1
    - Dst: htons
      Src: /src/pdns/pdns/recursordist/iputils.hh:585,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 19
    argCount: 1
    argNames:
    - ' str'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 587
      start: 566
    functionDepth: 0
    functionLinenumber: 566
    functionLinenumberEnd: 587
    functionName: SockaddrWrapper
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 3
    functionsReached:
    - makeIPv4sockaddr
    - PDNSException
    - memset
    - makeIPv6sockaddr
    - makeUNsockaddr
    - find
    - htons
    linkageType: ''
    returnType: void
    signature: void SockaddrWrapper(const string& str, uint16_t port = 0)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 592
      start: 589
    functionDepth: 0
    functionLinenumber: 589
    functionLinenumberEnd: 592
    functionName: isIPv6
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 57
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool isIPv6() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 596
      start: 593
    functionDepth: 0
    functionLinenumber: 593
    functionLinenumberEnd: 596
    functionName: isIPv4
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 90
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool isIPv4() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 600
      start: 597
    functionDepth: 0
    functionLinenumber: 597
    functionLinenumberEnd: 600
    functionName: isUnixSocket
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool isUnixSocket() const
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: getnameinfo
      Src: /src/pdns/pdns/recursordist/iputils.hh:610,1
    - Dst: reinterpret_cast<const struct sockaddr*>
      Src: /src/pdns/pdns/recursordist/iputils.hh:610,1
    - Dst: getSocklen
      Src: /src/pdns/pdns/recursordist/iputils.hh:610,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/recursordist/iputils.hh:610,1
    - Dst: std::array::size
      Src: /src/pdns/pdns/recursordist/iputils.hh:610,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/recursordist/iputils.hh:612,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/iputils.hh:614,1
    - Dst: gai_strerror
      Src: /src/pdns/pdns/recursordist/iputils.hh:614,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 617
      start: 602
    functionDepth: 0
    functionLinenumber: 602
    functionLinenumberEnd: 617
    functionName: toString
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 493
    functionsReached:
    - gai_strerror
    - getnameinfo
    - string
    - reinterpret_cast<const struct sockaddr*>
    - getSocklen
    - std::array::data
    - std::array::size
    linkageType: ''
    returnType: string
    signature: string toString() const
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: toString
      Src: /src/pdns/pdns/recursordist/iputils.hh:622,1
    - Dst: toString
      Src: /src/pdns/pdns/recursordist/iputils.hh:625,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/iputils.hh:625,1
    - Dst: ntohs
      Src: /src/pdns/pdns/recursordist/iputils.hh:625,1
    - Dst: toString
      Src: /src/pdns/pdns/recursordist/iputils.hh:627,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/iputils.hh:627,1
    - Dst: ntohs
      Src: /src/pdns/pdns/recursordist/iputils.hh:627,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 628
      start: 619
    functionDepth: 0
    functionLinenumber: 619
    functionLinenumberEnd: 628
    functionName: toStringWithPort
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 192
    functionsReached:
    - toString
    - std::to_string
    - ntohs
    linkageType: ''
    returnType: string
    signature: string toStringWithPort() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/pdns/pdns/recursordist/iputils.hh:632,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 633
      start: 630
    functionDepth: 0
    functionLinenumber: 630
    functionLinenumberEnd: 633
    functionName: reset
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 161
    functionsReached:
    - memset
    linkageType: ''
    returnType: void
    signature: void reset()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' arg'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 641
      start: 640
    functionDepth: 0
    functionLinenumber: 640
    functionLinenumberEnd: 641
    functionName: NetmaskException::NetmaskException
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void NetmaskException(const string& arg)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: inet_pton
      Src: /src/pdns/pdns/recursordist/iputils.hh:648,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/iputils.hh:648,1
    - Dst: makeIPv6sockaddr
      Src: /src/pdns/pdns/recursordist/iputils.hh:650,1
    - Dst: NetmaskException
      Src: /src/pdns/pdns/recursordist/iputils.hh:651,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - ' str'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 655
      start: 644
    functionDepth: 0
    functionLinenumber: 644
    functionLinenumberEnd: 655
    functionName: makeComboAddress
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 5
    functionsReached:
    - inet_pton
    - makeIPv6sockaddr
    - NetmaskException
    - c_str
    linkageType: ''
    returnType: ComboAddress
    signature: ComboAddress makeComboAddress(const string& str)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: NetmaskException
      Src: /src/pdns/pdns/recursordist/iputils.hh:664,1
    - Dst: memcpy
      Src: /src/pdns/pdns/recursordist/iputils.hh:666,1
    - Dst: NetmaskException
      Src: /src/pdns/pdns/recursordist/iputils.hh:671,1
    - Dst: memcpy
      Src: /src/pdns/pdns/recursordist/iputils.hh:673,1
    - Dst: NetmaskException
      Src: /src/pdns/pdns/recursordist/iputils.hh:676,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 18
    argCount: 3
    argNames:
    - version
    - raw
    - len
    argTypes:
    - uint8_t
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 680
      start: 657
    functionDepth: 0
    functionLinenumber: 657
    functionLinenumberEnd: 680
    functionName: makeComboAddressFromRaw
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 24
    functionsReached:
    - memcpy
    - NetmaskException
    linkageType: ''
    returnType: ComboAddress
    signature: ComboAddress makeComboAddressFromRaw(uint8_t version, const char* raw,
      size_t len)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeComboAddressFromRaw
      Src: /src/pdns/pdns/recursordist/iputils.hh:684,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/iputils.hh:684,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/iputils.hh:684,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - version
    - ' str'
    argTypes:
    - uint8_t
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 685
      start: 682
    functionDepth: 0
    functionLinenumber: 682
    functionLinenumberEnd: 685
    functionName: makeComboAddressFromRaw
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 25
    functionsReached:
    - c_str
    - size
    - makeComboAddressFromRaw
    linkageType: ''
    returnType: ComboAddress
    signature: ComboAddress makeComboAddressFromRaw(uint8_t version, const string&
      str)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 696
      start: 692
    functionDepth: 0
    functionLinenumber: 692
    functionLinenumberEnd: 696
    functionName: Netmask::Netmask
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 12
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Netmask()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Netmask::setBits
      Src: /src/pdns/pdns/recursordist/iputils.hh:702,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ' network'
    argTypes:
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 703
      start: 698
    functionDepth: 0
    functionLinenumber: 698
    functionLinenumberEnd: 703
    functionName: Netmask::Netmask
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 12
    functionsReached:
    - Netmask::setBits
    linkageType: ''
    returnType: void
    signature: void Netmask(const ComboAddress& network, uint8_t bits = 0xff)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Netmask::setBits
      Src: /src/pdns/pdns/recursordist/iputils.hh:709,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - network
    argTypes:
    - sockaddr_in*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 710
      start: 705
    functionDepth: 0
    functionLinenumber: 705
    functionLinenumberEnd: 710
    functionName: Netmask::Netmask
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 12
    functionsReached:
    - Netmask::setBits
    linkageType: ''
    returnType: void
    signature: void Netmask(const sockaddr_in* network, uint8_t bits = 0xff)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Netmask::setBits
      Src: /src/pdns/pdns/recursordist/iputils.hh:715,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - network
    argTypes:
    - sockaddr_in6*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 716
      start: 711
    functionDepth: 0
    functionLinenumber: 711
    functionLinenumberEnd: 716
    functionName: Netmask::Netmask
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 12
    functionsReached:
    - Netmask::setBits
    linkageType: ''
    returnType: void
    signature: void Netmask(const sockaddr_in6* network, uint8_t bits = 0xff)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Netmask::isIPv4
      Src: /src/pdns/pdns/recursordist/iputils.hh:719,1
    - Dst: std::min
      Src: /src/pdns/pdns/recursordist/iputils.hh:719,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/recursordist/iputils.hh:719,1
    - Dst: std::min
      Src: /src/pdns/pdns/recursordist/iputils.hh:719,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/recursordist/iputils.hh:719,1
    - Dst: Netmask::isIPv4
      Src: /src/pdns/pdns/recursordist/iputils.hh:729,1
    - Dst: htonl
      Src: /src/pdns/pdns/recursordist/iputils.hh:730,1
    - Dst: ntohl
      Src: /src/pdns/pdns/recursordist/iputils.hh:730,1
    - Dst: Netmask::isIPv6
      Src: /src/pdns/pdns/recursordist/iputils.hh:732,1
    - Dst: reinterpret_cast<uint8_t*>
      Src: /src/pdns/pdns/recursordist/iputils.hh:734,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/recursordist/iputils.hh:736,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 1
    argNames:
    - value
    argTypes:
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 746
      start: 717
    functionDepth: 0
    functionLinenumber: 717
    functionLinenumberEnd: 746
    functionName: Netmask::setBits
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 12
    functionsReached:
    - ntohl
    - htonl
    - std::min
    - reinterpret_cast<uint8_t*>
    - static_cast<uint8_t>
    - Netmask::isIPv4
    - Netmask::isIPv6
    linkageType: ''
    returnType: void
    signature: void setBits(uint8_t value)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: at
      Src: /src/pdns/pdns/recursordist/iputils.hh:757,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/iputils.hh:759,1
    - Dst: makeComboAddressFromRaw
      Src: /src/pdns/pdns/recursordist/iputils.hh:761,1
    - Dst: substr
      Src: /src/pdns/pdns/recursordist/iputils.hh:761,1
    - Dst: Netmask::setBits
      Src: /src/pdns/pdns/recursordist/iputils.hh:763,1
    - Dst: splitField
      Src: /src/pdns/pdns/recursordist/iputils.hh:766,1
    - Dst: makeComboAddress
      Src: /src/pdns/pdns/recursordist/iputils.hh:767,1
    - Dst: pair::second::empty
      Src: /src/pdns/pdns/recursordist/iputils.hh:769,1
    - Dst: Netmask::setBits
      Src: /src/pdns/pdns/recursordist/iputils.hh:770,1
    - Dst: pdns::checked_stoi<uint8_t>
      Src: /src/pdns/pdns/recursordist/iputils.hh:770,1
    - Dst: Netmask::setBits
      Src: /src/pdns/pdns/recursordist/iputils.hh:773,1
    - Dst: Netmask::setBits
      Src: /src/pdns/pdns/recursordist/iputils.hh:776,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 1
    argNames:
    - ' mask'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 779
      start: 754
    functionDepth: 0
    functionLinenumber: 754
    functionLinenumberEnd: 779
    functionName: Netmask::Netmask
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 12
    functionsReached:
    - splitField
    - pdns::checked_stoi<uint8_t>
    - at
    - makeComboAddressFromRaw
    - substr
    - pair::second::empty
    - Netmask::setBits
    - makeComboAddress
    linkageType: ''
    returnType: void
    signature: void Netmask(const string& mask, stringType type = humanString)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Netmask::match
      Src: /src/pdns/pdns/recursordist/iputils.hh:783,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' address'
    argTypes:
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 784
      start: 781
    functionDepth: 0
    functionLinenumber: 781
    functionLinenumberEnd: 784
    functionName: Netmask::match
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 11
    functionsReached:
    - Netmask::match
    linkageType: ''
    returnType: bool
    signature: bool match(const ComboAddress& address) const
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Netmask::match4
      Src: /src/pdns/pdns/recursordist/iputils.hh:793,1
    - Dst: htonl
      Src: /src/pdns/pdns/recursordist/iputils.hh:793,1
    - Dst: reinterpret_cast<const uint8_t*>
      Src: /src/pdns/pdns/recursordist/iputils.hh:799,1
    - Dst: reinterpret_cast<const uint8_t*>
      Src: /src/pdns/pdns/recursordist/iputils.hh:800,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/recursordist/iputils.hh:811,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 1
    argNames:
    - address
    argTypes:
    - ComboAddress*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 817
      start: 787
    functionDepth: 0
    functionLinenumber: 787
    functionLinenumberEnd: 817
    functionName: Netmask::match
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 11
    functionsReached:
    - static_cast<uint8_t>
    - Netmask::match4
    - reinterpret_cast<const uint8_t*>
    - htonl
    linkageType: ''
    returnType: bool
    signature: bool match(const ComboAddress* address) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeComboAddress
      Src: /src/pdns/pdns/recursordist/iputils.hh:822,1
    - Dst: Netmask::match
      Src: /src/pdns/pdns/recursordist/iputils.hh:823,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' arg'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 824
      start: 820
    functionDepth: 0
    functionLinenumber: 820
    functionLinenumberEnd: 824
    functionName: Netmask::match
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 12
    functionsReached:
    - Netmask::match
    - makeComboAddress
    linkageType: ''
    returnType: bool
    signature: bool match(const string& arg) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ntohl
      Src: /src/pdns/pdns/recursordist/iputils.hh:829,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - arg
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 830
      start: 827
    functionDepth: 0
    functionLinenumber: 827
    functionLinenumberEnd: 830
    functionName: Netmask::match4
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 3
    functionsReached:
    - ntohl
    linkageType: ''
    returnType: bool
    signature: bool match4(uint32_t arg) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: toStringNoInterface
      Src: /src/pdns/pdns/recursordist/iputils.hh:834,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/iputils.hh:834,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 835
      start: 832
    functionDepth: 0
    functionLinenumber: 832
    functionLinenumberEnd: 835
    functionName: Netmask::toString
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 8
    functionsReached:
    - toStringNoInterface
    - std::to_string
    linkageType: ''
    returnType: string
    signature: string toString() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: toStringNoInterface
      Src: /src/pdns/pdns/recursordist/iputils.hh:839,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 840
      start: 837
    functionDepth: 0
    functionLinenumber: 837
    functionLinenumberEnd: 840
    functionName: Netmask::toStringNoMask
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 0
    functionsReached:
    - toStringNoInterface
    linkageType: ''
    returnType: string
    signature: string toStringNoMask() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Netmask::isIPv4
      Src: /src/pdns/pdns/recursordist/iputils.hh:846,1
    - Dst: Netmask::toByteString
      Src: /src/pdns/pdns/recursordist/iputils.hh:847,1
    - Dst: Netmask::getBits
      Src: /src/pdns/pdns/recursordist/iputils.hh:848,1
    - Dst: ostringstream::str
      Src: /src/pdns/pdns/recursordist/iputils.hh:850,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 851
      start: 842
    functionDepth: 0
    functionLinenumber: 842
    functionLinenumberEnd: 851
    functionName: Netmask::toByteString
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 3
    functionsReached:
    - ostringstream::str
    - Netmask::isIPv4
    - Netmask::getBits
    - Netmask::toByteString
    linkageType: ''
    returnType: string
    signature: string toByteString() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 856
      start: 853
    functionDepth: 0
    functionLinenumber: 853
    functionLinenumberEnd: 856
    functionName: '& getNetwork() const'
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: ComboAddress
    signature: ComboAddress & getNetwork() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getNetwork
      Src: /src/pdns/pdns/recursordist/iputils.hh:860,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 861
      start: 858
    functionDepth: 0
    functionLinenumber: 858
    functionLinenumberEnd: 861
    functionName: '& getMaskedNetwork() const'
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 0
    functionsReached:
    - getNetwork
    linkageType: ''
    returnType: ComboAddress
    signature: ComboAddress & getMaskedNetwork() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 866
      start: 863
    functionDepth: 0
    functionLinenumber: 863
    functionLinenumberEnd: 866
    functionName: Netmask::getBits
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 12
    functionsReached: []
    linkageType: ''
    returnType: uint8_t
    signature: uint8_t getBits() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 871
      start: 868
    functionDepth: 0
    functionLinenumber: 868
    functionLinenumberEnd: 871
    functionName: Netmask::isIPv6
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 9
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool isIPv6() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 876
      start: 873
    functionDepth: 0
    functionLinenumber: 873
    functionLinenumberEnd: 876
    functionName: Netmask::isIPv4
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 13
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool isIPv4() const
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/iputils.hh:880,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/iputils.hh:880,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/iputils.hh:883,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/iputils.hh:883,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - Netmask
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 894
      start: 878
    functionDepth: 0
    functionLinenumber: 878
    functionLinenumberEnd: 894
    functionName: operator<(const Netmask& rhs) const
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 0
    functionsReached:
    - empty
    linkageType: ''
    returnType: bool
    signature: bool operator<(const Netmask& rhs) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: rhs
      Src: /src/pdns/pdns/recursordist/iputils.hh:898,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - Netmask
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 899
      start: 896
    functionDepth: 0
    functionLinenumber: 896
    functionLinenumberEnd: 899
    functionName: operator>(const Netmask& rhs) const
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 0
    functionsReached:
    - rhs
    linkageType: ''
    returnType: bool
    signature: bool operator>(const Netmask& rhs) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::tie
      Src: /src/pdns/pdns/recursordist/iputils.hh:903,1
    - Dst: std::tie
      Src: /src/pdns/pdns/recursordist/iputils.hh:903,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - Netmask
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 904
      start: 901
    functionDepth: 0
    functionLinenumber: 901
    functionLinenumberEnd: 904
    functionName: operator==(const Netmask& rhs) const
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 0
    functionsReached:
    - std::tie
    linkageType: ''
    returnType: bool
    signature: bool operator==(const Netmask& rhs) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - Netmask
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 909
      start: 906
    functionDepth: 0
    functionLinenumber: 906
    functionLinenumberEnd: 909
    functionName: operator!=(const Netmask& rhs) const
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool operator!=(const Netmask& rhs) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 914
      start: 911
    functionDepth: 0
    functionLinenumber: 911
    functionLinenumberEnd: 914
    functionName: Netmask::empty
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool empty() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getMaskedNetwork
      Src: /src/pdns/pdns/recursordist/iputils.hh:919,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 920
      start: 917
    functionDepth: 0
    functionLinenumber: 917
    functionLinenumberEnd: 920
    functionName: Netmask::getNormalized
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 3
    functionsReached:
    - getMaskedNetwork
    linkageType: ''
    returnType: Netmask
    signature: Netmask getNormalized() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::min
      Src: /src/pdns/pdns/recursordist/iputils.hh:924,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - bits
    argTypes:
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 925
      start: 922
    functionDepth: 0
    functionLinenumber: 922
    functionLinenumberEnd: 925
    functionName: Netmask::getSuper
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 0
    functionsReached:
    - std::min
    linkageType: ''
    returnType: Netmask
    signature: Netmask getSuper(uint8_t bits) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Netmask::getBits
      Src: /src/pdns/pdns/recursordist/iputils.hh:930,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 931
      start: 928
    functionDepth: 0
    functionLinenumber: 928
    functionLinenumberEnd: 931
    functionName: Netmask::getFullBits
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 0
    functionsReached:
    - Netmask::getBits
    linkageType: ''
    returnType: uint8_t
    signature: uint8_t getFullBits() const
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: Netmask::isIPv4
      Src: /src/pdns/pdns/recursordist/iputils.hh:944,1
    - Dst: Netmask::isIPv6
      Src: /src/pdns/pdns/recursordist/iputils.hh:949,1
    - Dst: Netmask::getBit
      Src: /src/pdns/pdns/recursordist/iputils.hh:955,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 17
    argCount: 1
    argNames:
    - bit
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 956
      start: 938
    functionDepth: 0
    functionLinenumber: 938
    functionLinenumberEnd: 956
    functionName: Netmask::getBit
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 3
    functionsReached:
    - Netmask::getBit
    - Netmask::isIPv4
    - Netmask::isIPv6
    linkageType: ''
    returnType: bool
    signature: bool getBit(int bit) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: burtle
      Src: /src/pdns/pdns/recursordist/iputils.hh:962,1
    - Dst: ComboAddress::addressOnlyHash
      Src: /src/pdns/pdns/recursordist/iputils.hh:962,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' netmask'
    argTypes:
    - Netmask
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 963
      start: 960
    functionDepth: 0
    functionLinenumber: 960
    functionLinenumberEnd: 963
    functionName: operator()(const Netmask& netmask) const
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 0
    functionsReached:
    - burtle
    - ComboAddress::addressOnlyHash
    linkageType: ''
    returnType: size_t
    signature: size_t operator()(const Netmask& netmask) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' netmask'
    argTypes:
    - Netmask
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 980
      start: 977
    functionDepth: 0
    functionLinenumber: 977
    functionLinenumberEnd: 980
    functionName: operator()(const Netmask& netmask) const
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: auto operator()(const Netmask& netmask) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' netmask'
    argTypes:
    - Netmask
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 980
      start: 977
    functionDepth: 0
    functionLinenumber: 977
    functionLinenumberEnd: 980
    functionName: operator()(const Netmask& netmask) const
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: auto operator()(const Netmask& netmask) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1026
      start: 1023
    functionDepth: 0
    functionLinenumber: 1023
    functionLinenumberEnd: 1026
    functionName: NetmaskTree::TreeNode::TreeNode
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void TreeNode() noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getNormalized
      Src: /src/pdns/pdns/recursordist/iputils.hh:1028,1
    - Dst: value_type
      Src: /src/pdns/pdns/recursordist/iputils.hh:1028,1
    - Dst: getFullBits
      Src: /src/pdns/pdns/recursordist/iputils.hh:1028,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' key'
    argTypes:
    - key_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1030
      start: 1027
    functionDepth: 0
    functionLinenumber: 1027
    functionLinenumberEnd: 1030
    functionName: NetmaskTree::TreeNode::TreeNode
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 0
    functionsReached:
    - getFullBits
    - getNormalized
    - value_type
    linkageType: ''
    returnType: void
    signature: void TreeNode(const key_type& key)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: first::getBits
      Src: /src/pdns/pdns/recursordist/iputils.hh:1035,1
    - Dst: make_unique<TreeNode>
      Src: /src/pdns/pdns/recursordist/iputils.hh:1036,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/iputils.hh:1038,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - ' key'
    argTypes:
    - key_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1039
      start: 1033
    functionDepth: 0
    functionLinenumber: 1033
    functionLinenumberEnd: 1039
    functionName: NetmaskTree::TreeNode::make_left
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 0
    functionsReached:
    - first::getBits
    - make_unique<TreeNode>
    - get
    linkageType: ''
    returnType: TreeNode
    signature: TreeNode * make_left(const key_type& key)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: first::getBits
      Src: /src/pdns/pdns/recursordist/iputils.hh:1044,1
    - Dst: make_unique<TreeNode>
      Src: /src/pdns/pdns/recursordist/iputils.hh:1045,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/iputils.hh:1047,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - ' key'
    argTypes:
    - key_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1048
      start: 1042
    functionDepth: 0
    functionLinenumber: 1042
    functionLinenumberEnd: 1048
    functionName: NetmaskTree::TreeNode::make_right
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 0
    functionsReached:
    - first::getBits
    - make_unique<TreeNode>
    - get
    linkageType: ''
    returnType: TreeNode
    signature: TreeNode * make_right(const key_type& key)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: std::logic_error
      Src: /src/pdns/pdns/recursordist/iputils.hh:1055,1
    - Dst: left::get
      Src: /src/pdns/pdns/recursordist/iputils.hh:1060,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/iputils.hh:1061,1
    - Dst: std::logic_error
      Src: /src/pdns/pdns/recursordist/iputils.hh:1062,1
    - Dst: make_unique<TreeNode>
      Src: /src/pdns/pdns/recursordist/iputils.hh:1068,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/iputils.hh:1071,1
    - Dst: std::swap
      Src: /src/pdns/pdns/recursordist/iputils.hh:1075,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/iputils.hh:1079,1
    - Dst: std::unique_ptr::node::first::getBit
      Src: /src/pdns/pdns/recursordist/iputils.hh:1088,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/iputils.hh:1089,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/iputils.hh:1092,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 2
    argNames:
    - ' key'
    - bits
    argTypes:
    - key_type
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1096
      start: 1051
    functionDepth: 0
    functionLinenumber: 1051
    functionLinenumberEnd: 1096
    functionName: NetmaskTree::TreeNode::split
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 5
    functionsReached:
    - std::swap
    - std::move
    - auto::get
    - std::unique_ptr::node::first::getBit
    - make_unique<TreeNode>
    - get
    - left::get
    - std::logic_error
    linkageType: ''
    returnType: TreeNode
    signature: TreeNode * split(const key_type& key, int bits)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: std::logic_error
      Src: /src/pdns/pdns/recursordist/iputils.hh:1103,1
    - Dst: left::get
      Src: /src/pdns/pdns/recursordist/iputils.hh:1108,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/iputils.hh:1109,1
    - Dst: std::logic_error
      Src: /src/pdns/pdns/recursordist/iputils.hh:1110,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/iputils.hh:1118,1
    - Dst: make_unique<TreeNode>
      Src: /src/pdns/pdns/recursordist/iputils.hh:1120,1
    - Dst: first::getSuper
      Src: /src/pdns/pdns/recursordist/iputils.hh:1120,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/iputils.hh:1121,1
    - Dst: make_unique<TreeNode>
      Src: /src/pdns/pdns/recursordist/iputils.hh:1126,1
    - Dst: unique_ptr::get
      Src: /src/pdns/pdns/recursordist/iputils.hh:1127,1
    - Dst: unique_ptr::node::first::getBit
      Src: /src/pdns/pdns/recursordist/iputils.hh:1133,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/iputils.hh:1134,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/iputils.hh:1135,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/iputils.hh:1138,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/iputils.hh:1139,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 2
    argNames:
    - ' key'
    - bits
    argTypes:
    - key_type
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1147
      start: 1099
    functionDepth: 0
    functionLinenumber: 1099
    functionLinenumberEnd: 1147
    functionName: NetmaskTree::TreeNode::fork
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 0
    functionsReached:
    - std::move
    - unique_ptr::get
    - make_unique<TreeNode>
    - get
    - left::get
    - unique_ptr::node::first::getBit
    - first::getSuper
    - std::logic_error
    linkageType: ''
    returnType: TreeNode
    signature: TreeNode * fork(const key_type& key, int bits)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TreeNode*::left::get
      Src: /src/pdns/pdns/recursordist/iputils.hh:1155,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1158
      start: 1150
    functionDepth: 0
    functionLinenumber: 1150
    functionLinenumberEnd: 1158
    functionName: NetmaskTree::TreeNode::traverse_l
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 0
    functionsReached:
    - TreeNode*::left::get
    linkageType: ''
    returnType: TreeNode
    signature: TreeNode * traverse_l()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: TreeNode*::right::get
      Src: /src/pdns/pdns/recursordist/iputils.hh:1168,1
    - Dst: TreeNode*::traverse_l
      Src: /src/pdns/pdns/recursordist/iputils.hh:1170,1
    - Dst: TreeNode*::left::get
      Src: /src/pdns/pdns/recursordist/iputils.hh:1179,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1184
      start: 1161
    functionDepth: 0
    functionLinenumber: 1161
    functionLinenumberEnd: 1184
    functionName: NetmaskTree::TreeNode::traverse_lnr
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 2
    functionsReached:
    - TreeNode*::left::get
    - TreeNode*::right::get
    - TreeNode*::traverse_l
    linkageType: ''
    returnType: TreeNode
    signature: TreeNode * traverse_lnr()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: NetmaskTree::TreeNode::traverse_lnr
      Src: /src/pdns/pdns/recursordist/iputils.hh:1189,1
    - Dst: TreeNode*::traverse_lnr
      Src: /src/pdns/pdns/recursordist/iputils.hh:1192,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1195
      start: 1187
    functionDepth: 0
    functionLinenumber: 1187
    functionLinenumberEnd: 1195
    functionName: NetmaskTree::TreeNode::traverse_lnr_assigned
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 0
    functionsReached:
    - TreeNode*::traverse_lnr
    - NetmaskTree::TreeNode::traverse_lnr
    linkageType: ''
    returnType: TreeNode
    signature: TreeNode * traverse_lnr_assigned()
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: TreeNode*::left::get
      Src: /src/pdns/pdns/recursordist/iputils.hh:1215,1
    - Dst: TreeNode*::left::reset
      Src: /src/pdns/pdns/recursordist/iputils.hh:1216,1
    - Dst: TreeNode*::right::reset
      Src: /src/pdns/pdns/recursordist/iputils.hh:1219,1
    - Dst: NetmaskTree::cleanup_tree
      Src: /src/pdns/pdns/recursordist/iputils.hh:1222,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 1
    argNames:
    - node
    argTypes:
    - TreeNode*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1225
      start: 1207
    functionDepth: 0
    functionLinenumber: 1207
    functionLinenumberEnd: 1225
    functionName: NetmaskTree::cleanup_tree
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 5
    functionsReached:
    - TreeNode*::left::get
    - TreeNode*::left::reset
    - NetmaskTree::cleanup_tree
    - TreeNode*::right::reset
    linkageType: ''
    returnType: void
    signature: void cleanup_tree(TreeNode* node)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: d_root::get
      Src: /src/pdns/pdns/recursordist/iputils.hh:1230,1
    - Dst: TreeNode*::traverse_l
      Src: /src/pdns/pdns/recursordist/iputils.hh:1232,1
    - Dst: insert
      Src: /src/pdns/pdns/recursordist/iputils.hh:1236,1
    - Dst: TreeNode*::traverse_lnr
      Src: /src/pdns/pdns/recursordist/iputils.hh:1238,1
    - Dst: abort
      Src: /src/pdns/pdns/recursordist/iputils.hh:1242,1
    - Dst: abort
      Src: /src/pdns/pdns/recursordist/iputils.hh:1245,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - NetmaskTree
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1247
      start: 1227
    functionDepth: 2
    functionLinenumber: 1227
    functionLinenumberEnd: 1247
    functionName: NetmaskTree::copyTree
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 2
    functionsReached:
    - abort
    - TreeNode*::traverse_l
    - d_root::get
    - insert
    - TreeNode*::traverse_lnr
    linkageType: ''
    returnType: void
    signature: void copyTree(const NetmaskTree& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - tree
    - node
    argTypes:
    - NetmaskTree*
    - TreeNode*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1268
      start: 1265
    functionDepth: 0
    functionLinenumber: 1265
    functionLinenumberEnd: 1268
    functionName: NetmaskTree::Iterator::Iterator
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Iterator(const NetmaskTree* tree, TreeNode* node)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1272
      start: 1271
    functionDepth: 0
    functionLinenumber: 1271
    functionLinenumberEnd: 1272
    functionName: NetmaskTree::Iterator::Iterator
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Iterator()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::logic_error
      Src: /src/pdns/pdns/recursordist/iputils.hh:1277,1
    - Dst: traverse_lnr_assigned
      Src: /src/pdns/pdns/recursordist/iputils.hh:1280,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1282
      start: 1274
    functionDepth: 0
    functionLinenumber: 1274
    functionLinenumberEnd: 1282
    functionName: '& operator++()'
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 0
    functionsReached:
    - traverse_lnr_assigned
    - std::logic_error
    linkageType: ''
    returnType: Iterator
    signature: Iterator & operator++()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1288
      start: 1283
    functionDepth: 0
    functionLinenumber: 1283
    functionLinenumberEnd: 1288
    functionName: operator++(int)
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Iterator
    signature: Iterator operator++(int)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::logic_error
      Src: /src/pdns/pdns/recursordist/iputils.hh:1293,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1297
      start: 1290
    functionDepth: 0
    functionLinenumber: 1290
    functionLinenumberEnd: 1297
    functionName: operator*()
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 0
    functionsReached:
    - std::logic_error
    linkageType: ''
    returnType: reference
    signature: reference operator*()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::logic_error
      Src: /src/pdns/pdns/recursordist/iputils.hh:1302,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1306
      start: 1299
    functionDepth: 0
    functionLinenumber: 1299
    functionLinenumberEnd: 1306
    functionName: operator->()
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 0
    functionsReached:
    - std::logic_error
    linkageType: ''
    returnType: pointer
    signature: pointer operator->()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - Iterator
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1311
      start: 1308
    functionDepth: 0
    functionLinenumber: 1308
    functionLinenumberEnd: 1311
    functionName: operator==(const Iterator& rhs) const
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool operator==(const Iterator& rhs) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - Iterator
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1315
      start: 1312
    functionDepth: 0
    functionLinenumber: 1312
    functionLinenumberEnd: 1315
    functionName: operator!=(const Iterator& rhs) const
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool operator!=(const Iterator& rhs) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TreeNode::TreeNode
      Src: /src/pdns/pdns/recursordist/iputils.hh:1319,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1321
      start: 1318
    functionDepth: 0
    functionLinenumber: 1318
    functionLinenumberEnd: 1321
    functionName: NetmaskTree::NetmaskTree
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 34
    functionsReached:
    - TreeNode::TreeNode
    linkageType: ''
    returnType: void
    signature: void NetmaskTree() noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TreeNode::TreeNode
      Src: /src/pdns/pdns/recursordist/iputils.hh:1324,1
    - Dst: NetmaskTree::copyTree
      Src: /src/pdns/pdns/recursordist/iputils.hh:1326,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - NetmaskTree
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1327
      start: 1323
    functionDepth: 0
    functionLinenumber: 1323
    functionLinenumberEnd: 1327
    functionName: NetmaskTree::NetmaskTree
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 34
    functionsReached:
    - TreeNode::TreeNode
    - NetmaskTree::copyTree
    linkageType: ''
    returnType: void
    signature: void NetmaskTree(const NetmaskTree& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1329
      start: 1329
    functionDepth: 0
    functionLinenumber: 1329
    functionLinenumberEnd: 1329
    functionName: ~NetmaskTree()
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~NetmaskTree()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: clear
      Src: /src/pdns/pdns/recursordist/iputils.hh:1334,1
    - Dst: copyTree
      Src: /src/pdns/pdns/recursordist/iputils.hh:1335,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - NetmaskTree
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1338
      start: 1331
    functionDepth: 1
    functionLinenumber: 1331
    functionLinenumberEnd: 1338
    functionName: '& operator=(const NetmaskTree& rhs)'
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 0
    functionsReached:
    - clear
    - copyTree
    linkageType: ''
    returnType: NetmaskTree
    signature: NetmaskTree & operator=(const NetmaskTree& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1340
      start: 1340
    functionDepth: 0
    functionLinenumber: 1340
    functionLinenumberEnd: 1340
    functionName: NetmaskTree::NetmaskTree
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 34
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void NetmaskTree(NetmaskTree&&) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1341
      start: 1341
    functionDepth: 0
    functionLinenumber: 1341
    functionLinenumberEnd: 1341
    functionName: '& operator=(NetmaskTree&&) noexcept'
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: NetmaskTree
    signature: NetmaskTree & operator=(NetmaskTree&&) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Iterator
      Src: /src/pdns/pdns/recursordist/iputils.hh:1345,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1346
      start: 1343
    functionDepth: 0
    functionLinenumber: 1343
    functionLinenumberEnd: 1346
    functionName: NetmaskTree::begin
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 3
    functionsReached:
    - Iterator
    linkageType: ''
    returnType: iterator
    signature: iterator begin() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Iterator
      Src: /src/pdns/pdns/recursordist/iputils.hh:1349,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1350
      start: 1347
    functionDepth: 0
    functionLinenumber: 1347
    functionLinenumberEnd: 1350
    functionName: NetmaskTree::end
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 3
    functionsReached:
    - Iterator
    linkageType: ''
    returnType: iterator
    signature: iterator end() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Iterator
      Src: /src/pdns/pdns/recursordist/iputils.hh:1353,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1354
      start: 1351
    functionDepth: 0
    functionLinenumber: 1351
    functionLinenumberEnd: 1354
    functionName: NetmaskTree::begin
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 3
    functionsReached:
    - Iterator
    linkageType: ''
    returnType: iterator
    signature: iterator begin()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Iterator
      Src: /src/pdns/pdns/recursordist/iputils.hh:1357,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1358
      start: 1355
    functionDepth: 0
    functionLinenumber: 1355
    functionLinenumberEnd: 1358
    functionName: NetmaskTree::end
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 3
    functionsReached:
    - Iterator
    linkageType: ''
    returnType: iterator
    signature: iterator end()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: insert
      Src: /src/pdns/pdns/recursordist/iputils.hh:1362,1
    - Dst: key_type
      Src: /src/pdns/pdns/recursordist/iputils.hh:1362,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' mask'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1363
      start: 1360
    functionDepth: 2
    functionLinenumber: 1360
    functionLinenumberEnd: 1363
    functionName: '& insert(const string& mask)'
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 0
    functionsReached:
    - key_type
    - insert
    linkageType: ''
    returnType: node_type
    signature: node_type & insert(const string& mask)
  - BBCount: 22
    BranchProfiles: []
    Callsites:
    - Dst: isIPv4
      Src: /src/pdns/pdns/recursordist/iputils.hh:1372,1
    - Dst: left::get
      Src: /src/pdns/pdns/recursordist/iputils.hh:1373,1
    - Dst: make_unique<TreeNode>
      Src: /src/pdns/pdns/recursordist/iputils.hh:1376,1
    - Dst: left::get
      Src: /src/pdns/pdns/recursordist/iputils.hh:1377,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/iputils.hh:1379,1
    - Dst: isIPv6
      Src: /src/pdns/pdns/recursordist/iputils.hh:1385,1
    - Dst: right::get
      Src: /src/pdns/pdns/recursordist/iputils.hh:1386,1
    - Dst: make_unique<TreeNode>
      Src: /src/pdns/pdns/recursordist/iputils.hh:1389,1
    - Dst: right::get
      Src: /src/pdns/pdns/recursordist/iputils.hh:1390,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/iputils.hh:1392,1
    - Dst: NetmaskException
      Src: /src/pdns/pdns/recursordist/iputils.hh:1404,1
    - Dst: getBits
      Src: /src/pdns/pdns/recursordist/iputils.hh:1409,1
    - Dst: getBit
      Src: /src/pdns/pdns/recursordist/iputils.hh:1410,1
    - Dst: TreeNode*::make_right
      Src: /src/pdns/pdns/recursordist/iputils.hh:1420,1
    - Dst: TreeNode*::right::get
      Src: /src/pdns/pdns/recursordist/iputils.hh:1423,1
    - Dst: TreeNode*::make_left
      Src: /src/pdns/pdns/recursordist/iputils.hh:1428,1
    - Dst: TreeNode*::left::get
      Src: /src/pdns/pdns/recursordist/iputils.hh:1431,1
    - Dst: TreeNode*::node::first::getBits
      Src: /src/pdns/pdns/recursordist/iputils.hh:1435,1
    - Dst: TreeNode*::make_right
      Src: /src/pdns/pdns/recursordist/iputils.hh:1442,1
    - Dst: TreeNode*::make_left
      Src: /src/pdns/pdns/recursordist/iputils.hh:1445,1
    - Dst: TreeNode*::node::first::getBit
      Src: /src/pdns/pdns/recursordist/iputils.hh:1449,1
    - Dst: TreeNode*::fork
      Src: /src/pdns/pdns/recursordist/iputils.hh:1456,1
    - Dst: TreeNode*::node::first::getBits
      Src: /src/pdns/pdns/recursordist/iputils.hh:1461,1
    - Dst: getBits
      Src: /src/pdns/pdns/recursordist/iputils.hh:1461,1
    - Dst: TreeNode*::split
      Src: /src/pdns/pdns/recursordist/iputils.hh:1464,1
    - Dst: getBits
      Src: /src/pdns/pdns/recursordist/iputils.hh:1464,1
    - Dst: std::logic_error
      Src: /src/pdns/pdns/recursordist/iputils.hh:1485,1
    CyclomaticComplexity: 31
    EdgeCount: 31
    ICount: 89
    argCount: 1
    argNames:
    - ' key'
    argTypes:
    - key_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1491
      start: 1366
    functionDepth: 0
    functionLinenumber: 1366
    functionLinenumberEnd: 1491
    functionName: '& insert(const key_type& key)'
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 0
    functionsReached:
    - getBit
    - TreeNode*::make_right
    - TreeNode*::left::get
    - isIPv6
    - NetmaskException
    - TreeNode*::fork
    - getBits
    - make_unique<TreeNode>
    - right::get
    - get
    - left::get
    - TreeNode*::make_left
    - TreeNode*::split
    - isIPv4
    - TreeNode*::node::first::getBit
    - std::logic_error
    - TreeNode*::right::get
    - TreeNode*::node::first::getBits
    linkageType: ''
    returnType: node_type
    signature: node_type & insert(const key_type& key)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: insert
      Src: /src/pdns/pdns/recursordist/iputils.hh:1496,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' mask'
    - ' value'
    argTypes:
    - key_type
    - value_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1497
      start: 1494
    functionDepth: 2
    functionLinenumber: 1494
    functionLinenumberEnd: 1497
    functionName: NetmaskTree::insert_or_assign
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 2
    functionsReached:
    - insert
    linkageType: ''
    returnType: void
    signature: void insert_or_assign(const key_type& mask, const value_type& value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: insert
      Src: /src/pdns/pdns/recursordist/iputils.hh:1501,1
    - Dst: key_type
      Src: /src/pdns/pdns/recursordist/iputils.hh:1501,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' mask'
    - ' value'
    argTypes:
    - string
    - value_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1502
      start: 1499
    functionDepth: 2
    functionLinenumber: 1499
    functionLinenumberEnd: 1502
    functionName: NetmaskTree::insert_or_assign
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 2
    functionsReached:
    - key_type
    - insert
    linkageType: ''
    returnType: void
    signature: void insert_or_assign(const string& mask, const value_type& value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: NetmaskTree::lookup
      Src: /src/pdns/pdns/recursordist/iputils.hh:1507,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - ' key'
    argTypes:
    - key_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1509
      start: 1505
    functionDepth: 0
    functionLinenumber: 1505
    functionLinenumberEnd: 1509
    functionName: NetmaskTree::has_key
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 0
    functionsReached:
    - NetmaskTree::lookup
    linkageType: ''
    returnType: bool
    signature: bool has_key(const key_type& key) const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: NetmaskTree::empty
      Src: /src/pdns/pdns/recursordist/iputils.hh:1514,1
    - Dst: getBits
      Src: /src/pdns/pdns/recursordist/iputils.hh:1517,1
    - Dst: NetmaskTree::lookupImpl
      Src: /src/pdns/pdns/recursordist/iputils.hh:1518,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ' value'
    argTypes:
    - key_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1519
      start: 1512
    functionDepth: 0
    functionLinenumber: 1512
    functionLinenumberEnd: 1519
    functionName: NetmaskTree::lookup
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 22
    functionsReached:
    - getBits
    - NetmaskTree::lookupImpl
    - NetmaskTree::empty
    linkageType: ''
    returnType: node_type
    signature: node_type * lookup(const key_type& value) const
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: NetmaskTree::empty
      Src: /src/pdns/pdns/recursordist/iputils.hh:1524,1
    - Dst: getBits
      Src: /src/pdns/pdns/recursordist/iputils.hh:1527,1
    - Dst: NetmaskTree::lookupImpl
      Src: /src/pdns/pdns/recursordist/iputils.hh:1532,1
    - Dst: key_type
      Src: /src/pdns/pdns/recursordist/iputils.hh:1532,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - ' value'
    argTypes:
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1533
      start: 1522
    functionDepth: 0
    functionLinenumber: 1522
    functionLinenumberEnd: 1533
    functionName: NetmaskTree::lookup
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 22
    functionsReached:
    - getBits
    - NetmaskTree::lookupImpl
    - NetmaskTree::empty
    - key_type
    linkageType: ''
    returnType: node_type
    signature: node_type * lookup(const ComboAddress& value, int max_bits = 128) const
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: isIPv4
      Src: /src/pdns/pdns/recursordist/iputils.hh:1540,1
    - Dst: left::get
      Src: /src/pdns/pdns/recursordist/iputils.hh:1541,1
    - Dst: isIPv6
      Src: /src/pdns/pdns/recursordist/iputils.hh:1543,1
    - Dst: right::get
      Src: /src/pdns/pdns/recursordist/iputils.hh:1544,1
    - Dst: NetmaskException
      Src: /src/pdns/pdns/recursordist/iputils.hh:1547,1
    - Dst: getBits
      Src: /src/pdns/pdns/recursordist/iputils.hh:1554,1
    - Dst: getBit
      Src: /src/pdns/pdns/recursordist/iputils.hh:1555,1
    - Dst: TreeNode*::right::get
      Src: /src/pdns/pdns/recursordist/iputils.hh:1559,1
    - Dst: TreeNode*::left::get
      Src: /src/pdns/pdns/recursordist/iputils.hh:1562,1
    - Dst: TreeNode*::node::first::getBits
      Src: /src/pdns/pdns/recursordist/iputils.hh:1566,1
    - Dst: getBits
      Src: /src/pdns/pdns/recursordist/iputils.hh:1568,1
    - Dst: TreeNode*::node::first::getBits
      Src: /src/pdns/pdns/recursordist/iputils.hh:1568,1
    - Dst: TreeNode*::node::first::getBit
      Src: /src/pdns/pdns/recursordist/iputils.hh:1573,1
    - Dst: std::logic_error
      Src: /src/pdns/pdns/recursordist/iputils.hh:1583,1
    - Dst: value_type
      Src: /src/pdns/pdns/recursordist/iputils.hh:1588,1
    - Dst: traverse_lnr_assigned
      Src: /src/pdns/pdns/recursordist/iputils.hh:1591,1
    - Dst: NetmaskTree::cleanup_tree
      Src: /src/pdns/pdns/recursordist/iputils.hh:1593,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 44
    argCount: 1
    argNames:
    - ' key'
    argTypes:
    - key_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1595
      start: 1536
    functionDepth: 0
    functionLinenumber: 1536
    functionLinenumberEnd: 1595
    functionName: NetmaskTree::erase
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 8
    functionsReached:
    - getBit
    - TreeNode*::left::get
    - isIPv6
    - NetmaskException
    - value_type
    - getBits
    - NetmaskTree::cleanup_tree
    - right::get
    - left::get
    - traverse_lnr_assigned
    - isIPv4
    - TreeNode*::node::first::getBit
    - std::logic_error
    - TreeNode*::right::get
    - TreeNode*::node::first::getBits
    linkageType: ''
    returnType: void
    signature: void erase(const key_type& key)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: NetmaskTree::erase
      Src: /src/pdns/pdns/recursordist/iputils.hh:1599,1
    - Dst: key_type
      Src: /src/pdns/pdns/recursordist/iputils.hh:1599,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' key'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1600
      start: 1597
    functionDepth: 0
    functionLinenumber: 1597
    functionLinenumberEnd: 1600
    functionName: NetmaskTree::erase
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 9
    functionsReached:
    - NetmaskTree::erase
    - key_type
    linkageType: ''
    returnType: void
    signature: void erase(const string& key)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1606
      start: 1603
    functionDepth: 0
    functionLinenumber: 1603
    functionLinenumberEnd: 1606
    functionName: NetmaskTree::empty
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 17
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool empty() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1612
      start: 1609
    functionDepth: 0
    functionLinenumber: 1609
    functionLinenumberEnd: 1612
    functionName: NetmaskTree::size
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 17
    functionsReached: []
    linkageType: ''
    returnType: size_type
    signature: size_type size() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: NetmaskTree::lookup
      Src: /src/pdns/pdns/recursordist/iputils.hh:1617,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' value'
    argTypes:
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1618
      start: 1615
    functionDepth: 0
    functionLinenumber: 1615
    functionLinenumberEnd: 1618
    functionName: NetmaskTree::match
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 2
    functionsReached:
    - NetmaskTree::lookup
    linkageType: ''
    returnType: bool
    signature: bool match(const ComboAddress& value) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: NetmaskTree::match
      Src: /src/pdns/pdns/recursordist/iputils.hh:1622,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/iputils.hh:1622,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' value'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1623
      start: 1620
    functionDepth: 0
    functionLinenumber: 1620
    functionLinenumberEnd: 1623
    functionName: NetmaskTree::match
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 3
    functionsReached:
    - NetmaskTree::match
    - ComboAddress
    linkageType: ''
    returnType: bool
    signature: bool match(const std::string& value) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: make_unique<TreeNode>
      Src: /src/pdns/pdns/recursordist/iputils.hh:1628,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1631
      start: 1626
    functionDepth: 0
    functionLinenumber: 1626
    functionLinenumberEnd: 1631
    functionName: NetmaskTree::clear
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 5
    functionsReached:
    - make_unique<TreeNode>
    linkageType: ''
    returnType: void
    signature: void clear()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: NetmaskTree::swap
      Src: /src/pdns/pdns/recursordist/iputils.hh:1636,1
    - Dst: NetmaskTree::swap
      Src: /src/pdns/pdns/recursordist/iputils.hh:1637,1
    - Dst: NetmaskTree::swap
      Src: /src/pdns/pdns/recursordist/iputils.hh:1638,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - NetmaskTree
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1639
      start: 1634
    functionDepth: 0
    functionLinenumber: 1634
    functionLinenumberEnd: 1639
    functionName: NetmaskTree::swap
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 6
    functionsReached:
    - NetmaskTree::swap
    linkageType: ''
    returnType: void
    signature: void swap(NetmaskTree& rhs) noexcept
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: isIPv4
      Src: /src/pdns/pdns/recursordist/iputils.hh:1646,1
    - Dst: left::get
      Src: /src/pdns/pdns/recursordist/iputils.hh:1647,1
    - Dst: isIPv6
      Src: /src/pdns/pdns/recursordist/iputils.hh:1649,1
    - Dst: right::get
      Src: /src/pdns/pdns/recursordist/iputils.hh:1650,1
    - Dst: NetmaskException
      Src: /src/pdns/pdns/recursordist/iputils.hh:1653,1
    - Dst: getBit
      Src: /src/pdns/pdns/recursordist/iputils.hh:1663,1
    - Dst: TreeNode*::node::first::getBits
      Src: /src/pdns/pdns/recursordist/iputils.hh:1667,1
    - Dst: TreeNode*::right::get
      Src: /src/pdns/pdns/recursordist/iputils.hh:1674,1
    - Dst: TreeNode*::left::get
      Src: /src/pdns/pdns/recursordist/iputils.hh:1680,1
    - Dst: TreeNode*::node::first::getBits
      Src: /src/pdns/pdns/recursordist/iputils.hh:1684,1
    - Dst: TreeNode*::node::first::getBit
      Src: /src/pdns/pdns/recursordist/iputils.hh:1688,1
    - Dst: TreeNode*::node::first::getBits
      Src: /src/pdns/pdns/recursordist/iputils.hh:1696,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 41
    argCount: 2
    argNames:
    - ' value'
    - max_bits
    argTypes:
    - key_type
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1701
      start: 1642
    functionDepth: 0
    functionLinenumber: 1642
    functionLinenumberEnd: 1701
    functionName: NetmaskTree::lookupImpl
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 6
    functionsReached:
    - getBit
    - TreeNode*::left::get
    - isIPv6
    - NetmaskException
    - right::get
    - left::get
    - isIPv4
    - TreeNode*::node::first::getBit
    - TreeNode*::right::get
    - TreeNode*::node::first::getBits
    linkageType: ''
    returnType: node_type
    signature: node_type * lookupImpl(const key_type& value, uint8_t max_bits) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1714
      start: 1714
    functionDepth: 0
    functionLinenumber: 1714
    functionLinenumberEnd: 1714
    functionName: NetmaskGroup::NetmaskGroup
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 11
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void NetmaskGroup() noexcept
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: NetmaskGroup::lookup
      Src: /src/pdns/pdns/recursordist/iputils.hh:1720,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - address
    argTypes:
    - ComboAddress*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1725
      start: 1718
    functionDepth: 0
    functionLinenumber: 1718
    functionLinenumberEnd: 1725
    functionName: NetmaskGroup::match
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 6
    functionsReached:
    - NetmaskGroup::lookup
    linkageType: ''
    returnType: bool
    signature: bool match(const ComboAddress* address) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: NetmaskGroup::match
      Src: /src/pdns/pdns/recursordist/iputils.hh:1729,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' address'
    argTypes:
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1730
      start: 1727
    functionDepth: 0
    functionLinenumber: 1727
    functionLinenumberEnd: 1730
    functionName: NetmaskGroup::match
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 7
    functionsReached:
    - NetmaskGroup::match
    linkageType: ''
    returnType: bool
    signature: bool match(const ComboAddress& address) const
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: NetmaskGroup::lookup
      Src: /src/pdns/pdns/recursordist/iputils.hh:1734,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - address
    - nmp
    argTypes:
    - ComboAddress*
    - Netmask*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1742
      start: 1732
    functionDepth: 0
    functionLinenumber: 1732
    functionLinenumberEnd: 1742
    functionName: NetmaskGroup::lookup
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 8
    functionsReached:
    - NetmaskGroup::lookup
    linkageType: ''
    returnType: bool
    signature: bool lookup(const ComboAddress* address, Netmask* nmp) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: NetmaskGroup::lookup
      Src: /src/pdns/pdns/recursordist/iputils.hh:1746,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' address'
    - nmp
    argTypes:
    - ComboAddress
    - Netmask*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1747
      start: 1744
    functionDepth: 0
    functionLinenumber: 1744
    functionLinenumberEnd: 1747
    functionName: NetmaskGroup::lookup
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 9
    functionsReached:
    - NetmaskGroup::lookup
    linkageType: ''
    returnType: bool
    signature: bool lookup(const ComboAddress& address, Netmask* nmp) const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: NetmaskGroup::empty
      Src: /src/pdns/pdns/recursordist/iputils.hh:1752,1
    - Dst: NetmaskGroup::addMask
      Src: /src/pdns/pdns/recursordist/iputils.hh:1753,1
    - Dst: Netmask
      Src: /src/pdns/pdns/recursordist/iputils.hh:1753,1
    - Dst: substr
      Src: /src/pdns/pdns/recursordist/iputils.hh:1753,1
    - Dst: NetmaskGroup::addMask
      Src: /src/pdns/pdns/recursordist/iputils.hh:1756,1
    - Dst: Netmask
      Src: /src/pdns/pdns/recursordist/iputils.hh:1756,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - ' address'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1758
      start: 1750
    functionDepth: 0
    functionLinenumber: 1750
    functionLinenumberEnd: 1758
    functionName: NetmaskGroup::addMask
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 16
    functionsReached:
    - Netmask
    - substr
    - NetmaskGroup::addMask
    - NetmaskGroup::empty
    linkageType: ''
    returnType: void
    signature: void addMask(const string& address, bool positive = true)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: insert
      Src: /src/pdns/pdns/recursordist/iputils.hh:1763,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' netmask'
    argTypes:
    - Netmask
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1764
      start: 1761
    functionDepth: 2
    functionLinenumber: 1761
    functionLinenumberEnd: 1764
    functionName: NetmaskGroup::addMask
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 16
    functionsReached:
    - insert
    linkageType: ''
    returnType: void
    signature: void addMask(const Netmask& netmask, bool positive = true)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: NetmaskGroup::addMask
      Src: /src/pdns/pdns/recursordist/iputils.hh:1769,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - ' group'
    - positive
    argTypes:
    - NetmaskGroup
    - std::optional<bool>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1771
      start: 1766
    functionDepth: 0
    functionLinenumber: 1766
    functionLinenumberEnd: 1771
    functionName: NetmaskGroup::addMasks
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 0
    functionsReached:
    - NetmaskGroup::addMask
    linkageType: ''
    returnType: void
    signature: void addMasks(const NetmaskGroup& group, std::optional<bool> positive)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: erase
      Src: /src/pdns/pdns/recursordist/iputils.hh:1776,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' netmask'
    argTypes:
    - Netmask
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1777
      start: 1774
    functionDepth: 0
    functionLinenumber: 1774
    functionLinenumberEnd: 1777
    functionName: NetmaskGroup::deleteMask
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 4
    functionsReached:
    - erase
    linkageType: ''
    returnType: void
    signature: void deleteMask(const Netmask& netmask)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: NetmaskGroup::deleteMask
      Src: /src/pdns/pdns/recursordist/iputils.hh:1782,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - ' group'
    argTypes:
    - NetmaskGroup
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1784
      start: 1779
    functionDepth: 0
    functionLinenumber: 1779
    functionLinenumberEnd: 1784
    functionName: NetmaskGroup::deleteMasks
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 0
    functionsReached:
    - NetmaskGroup::deleteMask
    linkageType: ''
    returnType: void
    signature: void deleteMasks(const NetmaskGroup& group)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: NetmaskGroup::empty
      Src: /src/pdns/pdns/recursordist/iputils.hh:1788,1
    - Dst: NetmaskGroup::deleteMask
      Src: /src/pdns/pdns/recursordist/iputils.hh:1789,1
    - Dst: Netmask
      Src: /src/pdns/pdns/recursordist/iputils.hh:1789,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ' address'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1791
      start: 1786
    functionDepth: 0
    functionLinenumber: 1786
    functionLinenumberEnd: 1791
    functionName: NetmaskGroup::deleteMask
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 6
    functionsReached:
    - NetmaskGroup::deleteMask
    - Netmask
    - NetmaskGroup::empty
    linkageType: ''
    returnType: void
    signature: void deleteMask(const std::string& address)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: NetmaskGroup::clear
      Src: /src/pdns/pdns/recursordist/iputils.hh:1795,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1796
      start: 1793
    functionDepth: 0
    functionLinenumber: 1793
    functionLinenumberEnd: 1796
    functionName: NetmaskGroup::clear
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 3
    functionsReached:
    - NetmaskGroup::clear
    linkageType: ''
    returnType: void
    signature: void clear()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: NetmaskGroup::empty
      Src: /src/pdns/pdns/recursordist/iputils.hh:1800,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1801
      start: 1798
    functionDepth: 0
    functionLinenumber: 1798
    functionLinenumberEnd: 1801
    functionName: NetmaskGroup::empty
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 13
    functionsReached:
    - NetmaskGroup::empty
    linkageType: ''
    returnType: bool
    signature: bool empty() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: NetmaskGroup::size
      Src: /src/pdns/pdns/recursordist/iputils.hh:1805,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1806
      start: 1803
    functionDepth: 0
    functionLinenumber: 1803
    functionLinenumberEnd: 1806
    functionName: NetmaskGroup::size
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 8
    functionsReached:
    - NetmaskGroup::size
    linkageType: ''
    returnType: size_t
    signature: size_t size() const
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/iputils.hh:1811,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/iputils.hh:1811,1
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/iputils.hh:1812,1
    - Dst: auto::first::toString
      Src: /src/pdns/pdns/recursordist/iputils.hh:1818,1
    - Dst: ostringstream::str
      Src: /src/pdns/pdns/recursordist/iputils.hh:1820,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1821
      start: 1808
    functionDepth: 0
    functionLinenumber: 1808
    functionLinenumberEnd: 1821
    functionName: NetmaskGroup::toString
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 5
    functionsReached:
    - ostringstream::str
    - end
    - auto::first::toString
    - begin
    linkageType: ''
    returnType: string
    signature: string toString() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::vector::reserve
      Src: /src/pdns/pdns/recursordist/iputils.hh:1826,1
    - Dst: NetmaskGroup::size
      Src: /src/pdns/pdns/recursordist/iputils.hh:1826,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/recursordist/iputils.hh:1828,1
    - Dst: first::toString
      Src: /src/pdns/pdns/recursordist/iputils.hh:1828,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1831
      start: 1823
    functionDepth: 0
    functionLinenumber: 1823
    functionLinenumberEnd: 1831
    functionName: NetmaskGroup::toStringVector
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 0
    functionsReached:
    - std::vector::reserve
    - std::vector::push_back
    - first::toString
    - NetmaskGroup::size
    linkageType: ''
    returnType: std::vector<std::string>
    signature: std::vector<std::string> toStringVector() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: stringtok
      Src: /src/pdns/pdns/recursordist/iputils.hh:1836,1
    - Dst: NetmaskGroup::addMask
      Src: /src/pdns/pdns/recursordist/iputils.hh:1839,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ' ips'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1841
      start: 1833
    functionDepth: 0
    functionLinenumber: 1833
    functionLinenumberEnd: 1841
    functionName: NetmaskGroup::toMasks
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 6
    functionsReached:
    - NetmaskGroup::addMask
    - stringtok
    linkageType: ''
    returnType: void
    signature: void toMasks(const string& ips)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' orig'
    argTypes:
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1850
      start: 1849
    functionDepth: 0
    functionLinenumber: 1849
    functionLinenumberEnd: 1850
    functionName: SComboAddress
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void SComboAddress(const ComboAddress& orig)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ComboAddress::addressOnlyLessThan
      Src: /src/pdns/pdns/recursordist/iputils.hh:1854,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - SComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1855
      start: 1852
    functionDepth: 0
    functionLinenumber: 1852
    functionLinenumberEnd: 1855
    functionName: operator<(const SComboAddress& rhs) const
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 0
    functionsReached:
    - ComboAddress::addressOnlyLessThan
    linkageType: ''
    returnType: bool
    signature: bool operator<(const SComboAddress& rhs) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1859
      start: 1856
    functionDepth: 0
    functionLinenumber: 1856
    functionLinenumberEnd: 1859
    functionName: operator const ComboAddress&() const
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void operator const ComboAddress&() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/iputils.hh:1866,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1867
      start: 1865
    functionDepth: 0
    functionLinenumber: 1865
    functionLinenumberEnd: 1867
    functionName: NetworkError::NetworkError
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 0
    functionsReached:
    - c_str
    linkageType: ''
    returnType: void
    signature: void NetworkError(const string& why = "Network Error")
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1870
      start: 1868
    functionDepth: 0
    functionLinenumber: 1868
    functionLinenumberEnd: 1870
    functionName: NetworkError::NetworkError
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void NetworkError(const char* why = "Network Error")
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1881
      start: 1876
    functionDepth: 0
    functionLinenumber: 1876
    functionLinenumberEnd: 1881
    functionName: AddressAndPortRange::AddressAndPortRange
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void AddressAndPortRange()
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: AddressAndPortRange::isIPv4
      Src: /src/pdns/pdns/recursordist/iputils.hh:1886,1
    - Dst: getPort
      Src: /src/pdns/pdns/recursordist/iputils.hh:1890,1
    - Dst: static_cast<uint16_t>
      Src: /src/pdns/pdns/recursordist/iputils.hh:1892,1
    - Dst: AddressAndPortRange::getBits
      Src: /src/pdns/pdns/recursordist/iputils.hh:1896,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/iputils.hh:1898,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/iputils.hh:1898,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/iputils.hh:1898,1
    - Dst: Netmask
      Src: /src/pdns/pdns/recursordist/iputils.hh:1900,1
    - Dst: setPort
      Src: /src/pdns/pdns/recursordist/iputils.hh:1902,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 2
    argNames:
    - address
    - addrMask
    argTypes:
    - ComboAddress
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1903
      start: 1883
    functionDepth: 0
    functionLinenumber: 1883
    functionLinenumberEnd: 1903
    functionName: AddressAndPortRange::AddressAndPortRange
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 0
    functionsReached:
    - Netmask
    - setPort
    - AddressAndPortRange::getBits
    - std::to_string
    - std::runtime_error
    - static_cast<uint16_t>
    - AddressAndPortRange::isIPv4
    - getPort
    linkageType: ''
    returnType: void
    signature: void AddressAndPortRange(ComboAddress address, uint8_t addrMask, uint8_t
      portMask = 0)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: AddressAndPortRange::getBits
      Src: /src/pdns/pdns/recursordist/iputils.hh:1907,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1908
      start: 1905
    functionDepth: 0
    functionLinenumber: 1905
    functionLinenumberEnd: 1908
    functionName: AddressAndPortRange::getFullBits
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 2
    functionsReached:
    - AddressAndPortRange::getBits
    linkageType: ''
    returnType: uint8_t
    signature: uint8_t getFullBits() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: AddressAndPortRange::getBits
      Src: /src/pdns/pdns/recursordist/iputils.hh:1912,1
    - Dst: AddressAndPortRange::getBits
      Src: /src/pdns/pdns/recursordist/iputils.hh:1916,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1917
      start: 1910
    functionDepth: 0
    functionLinenumber: 1910
    functionLinenumberEnd: 1917
    functionName: AddressAndPortRange::getBits
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 11
    functionsReached:
    - AddressAndPortRange::getBits
    linkageType: ''
    returnType: uint8_t
    signature: uint8_t getBits() const
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: AddressAndPortRange::getFullBits
      Src: /src/pdns/pdns/recursordist/iputils.hh:1925,1
    - Dst: AddressAndPortRange::getFullBits
      Src: /src/pdns/pdns/recursordist/iputils.hh:1929,1
    - Dst: getPort
      Src: /src/pdns/pdns/recursordist/iputils.hh:1934,1
    - Dst: AddressAndPortRange::getBit
      Src: /src/pdns/pdns/recursordist/iputils.hh:1940,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - index
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1941
      start: 1923
    functionDepth: 0
    functionLinenumber: 1923
    functionLinenumberEnd: 1941
    functionName: AddressAndPortRange::getBit
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 3
    functionsReached:
    - AddressAndPortRange::getBit
    - AddressAndPortRange::getFullBits
    - getPort
    linkageType: ''
    returnType: bool
    signature: bool getBit(int index) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: AddressAndPortRange::isIPv4
      Src: /src/pdns/pdns/recursordist/iputils.hh:1945,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1946
      start: 1943
    functionDepth: 0
    functionLinenumber: 1943
    functionLinenumberEnd: 1946
    functionName: AddressAndPortRange::isIPv4
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 6
    functionsReached:
    - AddressAndPortRange::isIPv4
    linkageType: ''
    returnType: bool
    signature: bool isIPv4() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: AddressAndPortRange::isIPv6
      Src: /src/pdns/pdns/recursordist/iputils.hh:1950,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1951
      start: 1948
    functionDepth: 0
    functionLinenumber: 1948
    functionLinenumberEnd: 1951
    functionName: AddressAndPortRange::isIPv6
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 3
    functionsReached:
    - AddressAndPortRange::isIPv6
    linkageType: ''
    returnType: bool
    signature: bool isIPv6() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1956
      start: 1953
    functionDepth: 0
    functionLinenumber: 1953
    functionLinenumberEnd: 1956
    functionName: AddressAndPortRange::getNormalized
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: AddressAndPortRange
    signature: AddressAndPortRange getNormalized() const
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/recursordist/iputils.hh:1964,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - bits
    argTypes:
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1968
      start: 1958
    functionDepth: 0
    functionLinenumber: 1958
    functionLinenumberEnd: 1968
    functionName: AddressAndPortRange::getSuper
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 0
    functionsReached:
    - static_cast<uint8_t>
    linkageType: ''
    returnType: AddressAndPortRange
    signature: AddressAndPortRange getSuper(uint8_t bits) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1973
      start: 1970
    functionDepth: 0
    functionLinenumber: 1970
    functionLinenumberEnd: 1973
    functionName: '& getNetwork() const'
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: ComboAddress
    signature: ComboAddress & getNetwork() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: AddressAndPortRange::getBits
      Src: /src/pdns/pdns/recursordist/iputils.hh:1977,1
    - Dst: toStringNoInterface
      Src: /src/pdns/pdns/recursordist/iputils.hh:1978,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/iputils.hh:1978,1
    - Dst: toStringNoInterface
      Src: /src/pdns/pdns/recursordist/iputils.hh:1980,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/iputils.hh:1980,1
    - Dst: getPort
      Src: /src/pdns/pdns/recursordist/iputils.hh:1980,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/iputils.hh:1980,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1981
      start: 1975
    functionDepth: 0
    functionLinenumber: 1975
    functionLinenumberEnd: 1981
    functionName: AddressAndPortRange::toString
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 0
    functionsReached:
    - toStringNoInterface
    - AddressAndPortRange::getBits
    - std::to_string
    - getPort
    linkageType: ''
    returnType: string
    signature: string toString() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1986
      start: 1983
    functionDepth: 0
    functionLinenumber: 1983
    functionLinenumberEnd: 1986
    functionName: AddressAndPortRange::empty
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool empty() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::tie
      Src: /src/pdns/pdns/recursordist/iputils.hh:1990,1
    - Dst: std::tie
      Src: /src/pdns/pdns/recursordist/iputils.hh:1990,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - AddressAndPortRange
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1991
      start: 1988
    functionDepth: 0
    functionLinenumber: 1988
    functionLinenumberEnd: 1991
    functionName: operator==(const AddressAndPortRange& rhs) const
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 0
    functionsReached:
    - std::tie
    linkageType: ''
    returnType: bool
    signature: bool operator==(const AddressAndPortRange& rhs) const
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/iputils.hh:1995,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/iputils.hh:1995,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/iputils.hh:1999,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/iputils.hh:1999,1
    - Dst: getPort
      Src: /src/pdns/pdns/recursordist/iputils.hh:2027,1
    - Dst: d_addr::getPort
      Src: /src/pdns/pdns/recursordist/iputils.hh:2027,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 26
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - AddressAndPortRange
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2028
      start: 1993
    functionDepth: 0
    functionLinenumber: 1993
    functionLinenumberEnd: 2028
    functionName: operator<(const AddressAndPortRange& rhs) const
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 0
    functionsReached:
    - empty
    - d_addr::getPort
    - getPort
    linkageType: ''
    returnType: bool
    signature: bool operator<(const AddressAndPortRange& rhs) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: rhs
      Src: /src/pdns/pdns/recursordist/iputils.hh:2032,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - AddressAndPortRange
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2033
      start: 2030
    functionDepth: 0
    functionLinenumber: 2030
    functionLinenumberEnd: 2033
    functionName: operator>(const AddressAndPortRange& rhs) const
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 0
    functionsReached:
    - rhs
    linkageType: ''
    returnType: bool
    signature: bool operator>(const AddressAndPortRange& rhs) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: d_addr::getPort
      Src: /src/pdns/pdns/recursordist/iputils.hh:2040,1
    - Dst: burtle
      Src: /src/pdns/pdns/recursordist/iputils.hh:2043,1
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/recursordist/iputils.hh:2043,1
    - Dst: hashOp
      Src: /src/pdns/pdns/recursordist/iputils.hh:2043,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' apr'
    argTypes:
    - AddressAndPortRange
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2044
      start: 2037
    functionDepth: 0
    functionLinenumber: 2037
    functionLinenumberEnd: 2044
    functionName: operator()(const AddressAndPortRange& apr) const
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.hh
    functionUses: 0
    functionsReached:
    - d_addr::getPort
    - reinterpret_cast<const unsigned char*>
    - burtle
    - hashOp
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t operator()(const AddressAndPortRange& apr) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: boost::assign::list_of
      Src: /src/pdns/pdns/recursordist/test-base32_cc.cc:21,1
    - Dst: case_t
      Src: /src/pdns/pdns/recursordist/test-base32_cc.cc:22,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-base32_cc.cc:22,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-base32_cc.cc:22,1
    - Dst: case_t
      Src: /src/pdns/pdns/recursordist/test-base32_cc.cc:23,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-base32_cc.cc:23,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-base32_cc.cc:23,1
    - Dst: case_t
      Src: /src/pdns/pdns/recursordist/test-base32_cc.cc:24,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-base32_cc.cc:24,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-base32_cc.cc:24,1
    - Dst: case_t
      Src: /src/pdns/pdns/recursordist/test-base32_cc.cc:25,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-base32_cc.cc:25,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-base32_cc.cc:25,1
    - Dst: case_t
      Src: /src/pdns/pdns/recursordist/test-base32_cc.cc:26,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-base32_cc.cc:26,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-base32_cc.cc:26,1
    - Dst: case_t
      Src: /src/pdns/pdns/recursordist/test-base32_cc.cc:27,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-base32_cc.cc:27,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-base32_cc.cc:27,1
    - Dst: case_t
      Src: /src/pdns/pdns/recursordist/test-base32_cc.cc:28,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-base32_cc.cc:28,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-base32_cc.cc:28,1
    - Dst: toBase32Hex
      Src: /src/pdns/pdns/recursordist/test-base32_cc.cc:33,1
    - Dst: std::get<0>
      Src: /src/pdns/pdns/recursordist/test-base32_cc.cc:33,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-base32_cc.cc:34,1
    - Dst: std::get<1>
      Src: /src/pdns/pdns/recursordist/test-base32_cc.cc:34,1
    - Dst: fromBase32Hex
      Src: /src/pdns/pdns/recursordist/test-base32_cc.cc:35,1
    - Dst: std::get<1>
      Src: /src/pdns/pdns/recursordist/test-base32_cc.cc:35,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-base32_cc.cc:36,1
    - Dst: std::get<0>
      Src: /src/pdns/pdns/recursordist/test-base32_cc.cc:36,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 16
    functionDepth: 0
    functionLinenumber: 16
    functionLinenumberEnd: 38
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-base32_cc.cc
    functionUses: 0
    functionsReached:
    - case_t
    - boost::assign::list_of
    - std::get<0>
    - BOOST_CHECK_EQUAL
    - std::get<1>
    - toBase32Hex
    - std::string
    - fromBase32Hex
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_base32_basic)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sizeEstimate
      Src: /src/pdns/pdns/recursordist/negcache.hh:55,1
    - Dst: sizeEstimate
      Src: /src/pdns/pdns/recursordist/negcache.hh:58,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 51
    functionDepth: 0
    functionLinenumber: 51
    functionLinenumberEnd: 61
    functionName: sizeEstimate
    functionSourceFile: /src/pdns/pdns/recursordist/negcache.hh
    functionUses: 66
    functionsReached:
    - sizeEstimate
    linkageType: ''
    returnType: size_t
    signature: size_t sizeEstimate() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<time_t>
      Src: /src/pdns/pdns/recursordist/negcache.hh:92,1
    - Dst: std::min
      Src: /src/pdns/pdns/recursordist/negcache.hh:92,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - now
    argTypes:
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 88
    functionDepth: 0
    functionLinenumber: 88
    functionLinenumberEnd: 95
    functionName: NegCache::isStale
    functionSourceFile: /src/pdns/pdns/recursordist/negcache.hh
    functionUses: 0
    functionsReached:
    - std::min
    - static_cast<time_t>
    linkageType: ''
    returnType: bool
    signature: bool isStale(time_t now) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 2
    argCount: 2
    argNames:
    - now
    - serveStale
    argTypes:
    - time_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 97
    functionDepth: 0
    functionLinenumber: 97
    functionLinenumberEnd: 101
    functionName: NegCache::isEntryUsable
    functionSourceFile: /src/pdns/pdns/recursordist/negcache.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool isEntryUsable(time_t now, bool serveStale) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 143
      start: 143
    functionDepth: 0
    functionLinenumber: 143
    functionLinenumberEnd: 143
    functionName: NegCache::MapCombo
    functionSourceFile: /src/pdns/pdns/recursordist/negcache.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void MapCombo()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 144
      start: 144
    functionDepth: 0
    functionLinenumber: 144
    functionLinenumberEnd: 144
    functionName: NegCache::MapCombo
    functionSourceFile: /src/pdns/pdns/recursordist/negcache.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void MapCombo(const MapCombo&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 145
      start: 145
    functionDepth: 0
    functionLinenumber: 145
    functionLinenumberEnd: 145
    functionName: '& operator=(const MapCombo&)'
    functionSourceFile: /src/pdns/pdns/recursordist/negcache.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: MapCombo
    signature: MapCombo & operator=(const MapCombo&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 146
      start: 146
    functionDepth: 0
    functionLinenumber: 146
    functionLinenumberEnd: 146
    functionName: ~MapCombo()
    functionSourceFile: /src/pdns/pdns/recursordist/negcache.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~MapCombo()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 147
    functionDepth: 0
    functionLinenumber: 147
    functionLinenumberEnd: 147
    functionName: NegCache::MapCombo
    functionSourceFile: /src/pdns/pdns/recursordist/negcache.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void MapCombo(MapCombo&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 148
      start: 148
    functionDepth: 0
    functionLinenumber: 148
    functionLinenumberEnd: 148
    functionName: '& operator=(MapCombo&&)'
    functionSourceFile: /src/pdns/pdns/recursordist/negcache.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: MapCombo
    signature: MapCombo & operator=(MapCombo&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 154
      start: 154
    functionDepth: 0
    functionLinenumber: 154
    functionLinenumberEnd: 154
    functionName: NegCache::invalidate
    functionSourceFile: /src/pdns/pdns/recursordist/negcache.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void invalidate()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 155
    functionDepth: 0
    functionLinenumber: 155
    functionLinenumberEnd: 155
    functionName: NegCache::preRemoval
    functionSourceFile: /src/pdns/pdns/recursordist/negcache.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void preRemoval(const NegCacheEntry& /* entry */)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: try_lock
      Src: /src/pdns/pdns/recursordist/negcache.hh:160,1
    - Dst: auto::owns_lock
      Src: /src/pdns/pdns/recursordist/negcache.hh:161,1
    - Dst: auto::lock
      Src: /src/pdns/pdns/recursordist/negcache.hh:162,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 167
      start: 158
    functionDepth: 0
    functionLinenumber: 158
    functionLinenumberEnd: 167
    functionName: NegCache::lock
    functionSourceFile: /src/pdns/pdns/recursordist/negcache.hh
    functionUses: 8
    functionsReached:
    - auto::owns_lock
    - try_lock
    - auto::lock
    linkageType: ''
    returnType: LockGuardedTryHolder<MapCombo::LockedContent>
    signature: LockGuardedTryHolder<MapCombo::LockedContent> lock()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: load
      Src: /src/pdns/pdns/recursordist/negcache.hh:171,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 172
      start: 169
    functionDepth: 0
    functionLinenumber: 169
    functionLinenumberEnd: 172
    functionName: NegCache::getEntriesCount
    functionSourceFile: /src/pdns/pdns/recursordist/negcache.hh
    functionUses: 1
    functionsReached:
    - load
    linkageType: ''
    returnType: auto
    signature: auto getEntriesCount() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 177
      start: 174
    functionDepth: 0
    functionLinenumber: 174
    functionLinenumberEnd: 177
    functionName: NegCache::incEntriesCount
    functionSourceFile: /src/pdns/pdns/recursordist/negcache.hh
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void incEntriesCount()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 182
      start: 179
    functionDepth: 0
    functionLinenumber: 179
    functionLinenumberEnd: 182
    functionName: NegCache::decEntriesCount
    functionSourceFile: /src/pdns/pdns/recursordist/negcache.hh
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void decEntriesCount()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 187
      start: 184
    functionDepth: 0
    functionLinenumber: 184
    functionLinenumberEnd: 187
    functionName: NegCache::clearEntriesCount
    functionSourceFile: /src/pdns/pdns/recursordist/negcache.hh
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void clearEntriesCount()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: at
      Src: /src/pdns/pdns/recursordist/negcache.hh:198,1
    - Dst: hash
      Src: /src/pdns/pdns/recursordist/negcache.hh:198,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/negcache.hh:198,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' qname'
    argTypes:
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 199
      start: 196
    functionDepth: 2
    functionLinenumber: 196
    functionLinenumberEnd: 199
    functionName: '& getMap(const DNSName& qname)'
    functionSourceFile: /src/pdns/pdns/recursordist/negcache.hh
    functionUses: 0
    functionsReached:
    - hash
    - at
    - size
    linkageType: ''
    returnType: MapCombo
    signature: MapCombo & getMap(const DNSName& qname)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: at
      Src: /src/pdns/pdns/recursordist/negcache.hh:202,1
    - Dst: hash
      Src: /src/pdns/pdns/recursordist/negcache.hh:202,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/negcache.hh:202,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' qname'
    argTypes:
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 203
      start: 200
    functionDepth: 2
    functionLinenumber: 200
    functionLinenumberEnd: 203
    functionName: '& getMap(const DNSName& qname) const'
    functionSourceFile: /src/pdns/pdns/recursordist/negcache.hh
    functionUses: 0
    functionsReached:
    - hash
    - at
    - size
    linkageType: ''
    returnType: MapCombo
    signature: MapCombo & getMap(const DNSName& qname) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' str'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 39
    functionDepth: 0
    functionLinenumber: 39
    functionLinenumberEnd: 41
    functionName: FDMultiplexerException::FDMultiplexerException
    functionSourceFile: /src/pdns/pdns/recursordist/mplexer.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void FDMultiplexerException(const std::string& str)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 73
    functionDepth: 0
    functionLinenumber: 73
    functionLinenumberEnd: 73
    functionName: ~FDMultiplexer()
    functionSourceFile: /src/pdns/pdns/recursordist/mplexer.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~FDMultiplexer()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 83
    functionDepth: 0
    functionLinenumber: 83
    functionLinenumberEnd: 83
    functionName: FDMultiplexer::InRun
    functionSourceFile: /src/pdns/pdns/recursordist/mplexer.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void InRun(const InRun&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 84
    functionDepth: 0
    functionLinenumber: 84
    functionLinenumberEnd: 84
    functionName: FDMultiplexer::InRun
    functionSourceFile: /src/pdns/pdns/recursordist/mplexer.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void InRun(InRun&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 85
    functionDepth: 0
    functionLinenumber: 85
    functionLinenumberEnd: 85
    functionName: '& operator=(const InRun&)'
    functionSourceFile: /src/pdns/pdns/recursordist/mplexer.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: InRun
    signature: InRun & operator=(const InRun&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 86
    functionDepth: 0
    functionLinenumber: 86
    functionLinenumberEnd: 86
    functionName: '& operator=(InRun&&)'
    functionSourceFile: /src/pdns/pdns/recursordist/mplexer.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: InRun
    signature: InRun & operator=(InRun&&)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: FDMultiplexerException
      Src: /src/pdns/pdns/recursordist/mplexer.hh:91,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - ' ref'
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 87
    functionDepth: 0
    functionLinenumber: 87
    functionLinenumberEnd: 94
    functionName: FDMultiplexer::InRun
    functionSourceFile: /src/pdns/pdns/recursordist/mplexer.hh
    functionUses: 0
    functionsReached:
    - FDMultiplexerException
    linkageType: ''
    returnType: void
    signature: void InRun(bool& ref)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 95
    functionDepth: 0
    functionLinenumber: 95
    functionLinenumberEnd: 98
    functionName: ~InRun()
    functionSourceFile: /src/pdns/pdns/recursordist/mplexer.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~InRun()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: funcparam_t
      Src: /src/pdns/pdns/recursordist/mplexer.hh:114,1
    - Dst: count
      Src: /src/pdns/pdns/recursordist/mplexer.hh:116,1
    - Dst: FDMultiplexer::alterFD
      Src: /src/pdns/pdns/recursordist/mplexer.hh:119,1
    - Dst: FDMultiplexer::addFD
      Src: /src/pdns/pdns/recursordist/mplexer.hh:122,1
    - Dst: FDMultiplexer::accountingAddFD
      Src: /src/pdns/pdns/recursordist/mplexer.hh:126,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/mplexer.hh:126,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - fd
    - toDo
    argTypes:
    - int
    - callbackfunc_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 127
      start: 114
    functionDepth: 0
    functionLinenumber: 114
    functionLinenumberEnd: 127
    functionName: FDMultiplexer::addReadFD
    functionSourceFile: /src/pdns/pdns/recursordist/mplexer.hh
    functionUses: 13
    functionsReached:
    - std::move
    - FDMultiplexer::addFD
    - funcparam_t
    - count
    - FDMultiplexer::alterFD
    - FDMultiplexer::accountingAddFD
    linkageType: ''
    returnType: void
    signature: void addReadFD(int fd, callbackfunc_t toDo, const funcparam_t& parameter
      = funcparam_t(), const struct timeval* ttd = nullptr)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: funcparam_t
      Src: /src/pdns/pdns/recursordist/mplexer.hh:130,1
    - Dst: count
      Src: /src/pdns/pdns/recursordist/mplexer.hh:132,1
    - Dst: FDMultiplexer::alterFD
      Src: /src/pdns/pdns/recursordist/mplexer.hh:135,1
    - Dst: FDMultiplexer::addFD
      Src: /src/pdns/pdns/recursordist/mplexer.hh:138,1
    - Dst: FDMultiplexer::accountingAddFD
      Src: /src/pdns/pdns/recursordist/mplexer.hh:142,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/mplexer.hh:142,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - fd
    - toDo
    argTypes:
    - int
    - callbackfunc_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 143
      start: 130
    functionDepth: 0
    functionLinenumber: 130
    functionLinenumberEnd: 143
    functionName: FDMultiplexer::addWriteFD
    functionSourceFile: /src/pdns/pdns/recursordist/mplexer.hh
    functionUses: 0
    functionsReached:
    - std::move
    - FDMultiplexer::addFD
    - funcparam_t
    - count
    - FDMultiplexer::alterFD
    - FDMultiplexer::accountingAddFD
    linkageType: ''
    returnType: void
    signature: void addWriteFD(int fd, callbackfunc_t toDo, const funcparam_t& parameter
      = funcparam_t(), const struct timeval* ttd = nullptr)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: find
      Src: /src/pdns/pdns/recursordist/mplexer.hh:149,1
    - Dst: FDMultiplexer::accountingRemoveFD
      Src: /src/pdns/pdns/recursordist/mplexer.hh:150,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/mplexer.hh:152,1
    - Dst: FDMultiplexer::alterFD
      Src: /src/pdns/pdns/recursordist/mplexer.hh:153,1
    - Dst: FDMultiplexer::removeFD
      Src: /src/pdns/pdns/recursordist/mplexer.hh:156,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - fd
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 158
      start: 147
    functionDepth: 0
    functionLinenumber: 147
    functionLinenumberEnd: 158
    functionName: FDMultiplexer::removeReadFD
    functionSourceFile: /src/pdns/pdns/recursordist/mplexer.hh
    functionUses: 13
    functionsReached:
    - end
    - FDMultiplexer::removeFD
    - FDMultiplexer::accountingRemoveFD
    - FDMultiplexer::alterFD
    - find
    linkageType: ''
    returnType: void
    signature: void removeReadFD(int fd)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: find
      Src: /src/pdns/pdns/recursordist/mplexer.hh:164,1
    - Dst: FDMultiplexer::accountingRemoveFD
      Src: /src/pdns/pdns/recursordist/mplexer.hh:165,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/mplexer.hh:167,1
    - Dst: FDMultiplexer::alterFD
      Src: /src/pdns/pdns/recursordist/mplexer.hh:168,1
    - Dst: FDMultiplexer::removeFD
      Src: /src/pdns/pdns/recursordist/mplexer.hh:171,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - fd
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 173
      start: 162
    functionDepth: 0
    functionLinenumber: 162
    functionLinenumberEnd: 173
    functionName: FDMultiplexer::removeWriteFD
    functionSourceFile: /src/pdns/pdns/recursordist/mplexer.hh
    functionUses: 0
    functionsReached:
    - end
    - FDMultiplexer::removeFD
    - FDMultiplexer::accountingRemoveFD
    - FDMultiplexer::alterFD
    - find
    linkageType: ''
    returnType: void
    signature: void removeWriteFD(int fd)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: find
      Src: /src/pdns/pdns/recursordist/mplexer.hh:177,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/mplexer.hh:178,1
    - Dst: FDMultiplexerException
      Src: /src/pdns/pdns/recursordist/mplexer.hh:179,1
    - Dst: replace
      Src: /src/pdns/pdns/recursordist/mplexer.hh:185,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - fd
    - tv
    - timeout
    argTypes:
    - int
    - struct timeval
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 186
      start: 175
    functionDepth: 0
    functionLinenumber: 175
    functionLinenumberEnd: 186
    functionName: FDMultiplexer::setReadTTD
    functionSourceFile: /src/pdns/pdns/recursordist/mplexer.hh
    functionUses: 0
    functionsReached:
    - FDMultiplexerException
    - replace
    - end
    - find
    linkageType: ''
    returnType: void
    signature: void setReadTTD(int fd, struct timeval tv, int timeout)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: find
      Src: /src/pdns/pdns/recursordist/mplexer.hh:190,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/mplexer.hh:191,1
    - Dst: FDMultiplexerException
      Src: /src/pdns/pdns/recursordist/mplexer.hh:192,1
    - Dst: replace
      Src: /src/pdns/pdns/recursordist/mplexer.hh:198,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - fd
    - tv
    - timeout
    argTypes:
    - int
    - struct timeval
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 199
      start: 188
    functionDepth: 0
    functionLinenumber: 188
    functionLinenumberEnd: 199
    functionName: FDMultiplexer::setWriteTTD
    functionSourceFile: /src/pdns/pdns/recursordist/mplexer.hh
    functionUses: 0
    functionsReached:
    - FDMultiplexerException
    - replace
    - end
    - find
    linkageType: ''
    returnType: void
    signature: void setWriteTTD(int fd, struct timeval tv, int timeout)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: funcparam_t
      Src: /src/pdns/pdns/recursordist/mplexer.hh:201,1
    - Dst: FDMultiplexer::accountingRemoveFD
      Src: /src/pdns/pdns/recursordist/mplexer.hh:203,1
    - Dst: FDMultiplexer::alterFD
      Src: /src/pdns/pdns/recursordist/mplexer.hh:204,1
    - Dst: FDMultiplexer::accountingAddFD
      Src: /src/pdns/pdns/recursordist/mplexer.hh:205,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/mplexer.hh:205,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - fd
    - toDo
    argTypes:
    - int
    - callbackfunc_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 206
      start: 201
    functionDepth: 0
    functionLinenumber: 201
    functionLinenumberEnd: 206
    functionName: FDMultiplexer::alterFDToRead
    functionSourceFile: /src/pdns/pdns/recursordist/mplexer.hh
    functionUses: 0
    functionsReached:
    - std::move
    - funcparam_t
    - FDMultiplexer::accountingRemoveFD
    - FDMultiplexer::alterFD
    - FDMultiplexer::accountingAddFD
    linkageType: ''
    returnType: void
    signature: void alterFDToRead(int fd, callbackfunc_t toDo, const funcparam_t&
      parameter = funcparam_t(), const struct timeval* ttd = nullptr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: funcparam_t
      Src: /src/pdns/pdns/recursordist/mplexer.hh:208,1
    - Dst: FDMultiplexer::accountingRemoveFD
      Src: /src/pdns/pdns/recursordist/mplexer.hh:210,1
    - Dst: FDMultiplexer::alterFD
      Src: /src/pdns/pdns/recursordist/mplexer.hh:211,1
    - Dst: FDMultiplexer::accountingAddFD
      Src: /src/pdns/pdns/recursordist/mplexer.hh:212,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/mplexer.hh:212,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - fd
    - toDo
    argTypes:
    - int
    - callbackfunc_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 213
      start: 208
    functionDepth: 0
    functionLinenumber: 208
    functionLinenumberEnd: 213
    functionName: FDMultiplexer::alterFDToWrite
    functionSourceFile: /src/pdns/pdns/recursordist/mplexer.hh
    functionUses: 0
    functionsReached:
    - std::move
    - funcparam_t
    - FDMultiplexer::accountingRemoveFD
    - FDMultiplexer::alterFD
    - FDMultiplexer::accountingAddFD
    linkageType: ''
    returnType: void
    signature: void alterFDToWrite(int fd, callbackfunc_t toDo, const funcparam_t&
      parameter = funcparam_t(), const struct timeval* ttd = nullptr)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::tie
      Src: /src/pdns/pdns/recursordist/mplexer.hh:218,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/mplexer.hh:219,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/mplexer.hh:219,1
    - Dst: std::tie
      Src: /src/pdns/pdns/recursordist/mplexer.hh:222,1
    - Dst: std::vector::emplace_back
      Src: /src/pdns/pdns/recursordist/mplexer.hh:225,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 7
    argCount: 1
    argNames:
    - ' tv'
    argTypes:
    - struct timeval
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 229
      start: 215
    functionDepth: 0
    functionLinenumber: 215
    functionLinenumberEnd: 229
    functionName: FDMultiplexer::getTimeouts
    functionSourceFile: /src/pdns/pdns/recursordist/mplexer.hh
    functionUses: 0
    functionsReached:
    - std::vector::emplace_back
    - std::tie
    - get
    linkageType: ''
    returnType: std::vector<std::pair<int, funcparam_t>>
    signature: std::vector<std::pair<int, funcparam_t>> getTimeouts(const struct timeval&
      tv, bool writes = false)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 238
      start: 234
    functionDepth: 0
    functionLinenumber: 234
    functionLinenumberEnd: 238
    functionName: '& getMultiplexerMap()'
    functionSourceFile: /src/pdns/pdns/recursordist/mplexer.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: FDMultiplexermap_t
    signature: FDMultiplexermap_t & getMultiplexerMap()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/recursordist/mplexer.hh:244,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/mplexer.hh:244,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - writeFDs
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 245
      start: 242
    functionDepth: 0
    functionLinenumber: 242
    functionLinenumberEnd: 245
    functionName: FDMultiplexer::getWatchedFDCount
    functionSourceFile: /src/pdns/pdns/recursordist/mplexer.hh
    functionUses: 0
    functionsReached:
    - size
    linkageType: ''
    returnType: size_t
    signature: size_t getWatchedFDCount(bool writeFDs) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: watcher
      Src: /src/pdns/pdns/recursordist/mplexer.hh:250,1
    - Dst: watcher
      Src: /src/pdns/pdns/recursordist/mplexer.hh:253,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 255
      start: 247
    functionDepth: 0
    functionLinenumber: 247
    functionLinenumberEnd: 255
    functionName: FDMultiplexer::runForAllWatchedFDs
    functionSourceFile: /src/pdns/pdns/recursordist/mplexer.hh
    functionUses: 0
    functionsReached:
    - watcher
    linkageType: ''
    returnType: void
    signature: void runForAllWatchedFDs(void (*watcher)(bool isRead, int fd, const
      funcparam_t&, struct timeval))
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: std::tie
      Src: /src/pdns/pdns/recursordist/mplexer.hh:281,1
    - Dst: std::tie
      Src: /src/pdns/pdns/recursordist/mplexer.hh:281,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 11
    argCount: 2
    argNames:
    - ' lhs'
    - ' rhs'
    argTypes:
    - struct timeval
    - struct timeval
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 282
      start: 267
    functionDepth: 0
    functionLinenumber: 267
    functionLinenumberEnd: 282
    functionName: operator()(const struct timeval& lhs, const struct timeval& rhs)
      const
    functionSourceFile: /src/pdns/pdns/recursordist/mplexer.hh
    functionUses: 0
    functionsReached:
    - std::tie
    linkageType: ''
    returnType: bool
    signature: bool operator()(const struct timeval& lhs, const struct timeval& rhs)
      const
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/mplexer.hh:302,1
    - Dst: memset
      Src: /src/pdns/pdns/recursordist/mplexer.hh:304,1
    - Dst: insert
      Src: /src/pdns/pdns/recursordist/mplexer.hh:309,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/mplexer.hh:309,1
    - Dst: FDMultiplexerException
      Src: /src/pdns/pdns/recursordist/mplexer.hh:311,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/mplexer.hh:311,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 5
    argNames:
    - ' cbmap'
    - fd
    - toDo
    - ' parameter'
    - ttd
    argTypes:
    - callbackmap_t
    - int
    - callbackfunc_t
    - funcparam_t
    - struct timeval*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 313
      start: 298
    functionDepth: 2
    functionLinenumber: 298
    functionLinenumberEnd: 313
    functionName: FDMultiplexer::accountingAddFD
    functionSourceFile: /src/pdns/pdns/recursordist/mplexer.hh
    functionUses: 12
    functionsReached:
    - std::move
    - std::to_string
    - memset
    - insert
    - FDMultiplexerException
    linkageType: ''
    returnType: void
    signature: void accountingAddFD(callbackmap_t& cbmap, int fd, callbackfunc_t toDo,
      const funcparam_t& parameter, const struct timeval* ttd)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: erase
      Src: /src/pdns/pdns/recursordist/mplexer.hh:317,1
    - Dst: FDMultiplexerException
      Src: /src/pdns/pdns/recursordist/mplexer.hh:318,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/mplexer.hh:318,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 2
    argNames:
    - ' cbmap'
    - fd
    argTypes:
    - callbackmap_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 320
      start: 315
    functionDepth: 0
    functionLinenumber: 315
    functionLinenumberEnd: 320
    functionName: FDMultiplexer::accountingRemoveFD
    functionSourceFile: /src/pdns/pdns/recursordist/mplexer.hh
    functionUses: 12
    functionsReached:
    - FDMultiplexerException
    - erase
    - std::to_string
    linkageType: ''
    returnType: void
    signature: void accountingRemoveFD(callbackmap_t& cbmap, int fd)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: removeFD
      Src: /src/pdns/pdns/recursordist/mplexer.hh:329,1
    - Dst: addFD
      Src: /src/pdns/pdns/recursordist/mplexer.hh:330,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - fd
    - from
    - to
    argTypes:
    - int
    - EventKind
    - EventKind
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 331
      start: 326
    functionDepth: 0
    functionLinenumber: 326
    functionLinenumberEnd: 331
    functionName: FDMultiplexer::alterFD
    functionSourceFile: /src/pdns/pdns/recursordist/mplexer.hh
    functionUses: 18
    functionsReached:
    - addFD
    - removeFD
    linkageType: ''
    returnType: void
    signature: void alterFD(int fd, EventKind from, EventKind to)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - reason_
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 47
    functionDepth: 0
    functionLinenumber: 47
    functionLinenumberEnd: 47
    functionName: ResolverException::ResolverException
    functionSourceFile: /src/pdns/pdns/recursordist/resolver.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ResolverException(const string &reason_)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/recursordist/mtasker.hh:71,1
    - Dst: MTasker::initMainStackBounds
      Src: /src/pdns/pdns/recursordist/mtasker.hh:74,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 71
    functionDepth: 1
    functionLinenumber: 71
    functionLinenumberEnd: 78
    functionName: MTasker::MTasker
    functionSourceFile: /src/pdns/pdns/recursordist/mtasker.hh
    functionUses: 2
    functionsReached:
    - MTasker::initMainStackBounds
    - static_cast<size_t>
    linkageType: ''
    returnType: void
    signature: void MTasker(size_t stacksize = static_cast<size_t>(16 * 8192), size_t
      stackCacheSize = 0)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 88
    functionDepth: 0
    functionLinenumber: 88
    functionLinenumberEnd: 91
    functionName: '& getWaiters() const'
    functionSourceFile: /src/pdns/pdns/recursordist/mtasker.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: waiters_t
    signature: waiters_t & getWaiters() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: clear
      Src: /src/pdns/pdns/recursordist/mtasker.hh:102,1
    - Dst: emplace_back
      Src: /src/pdns/pdns/recursordist/mtasker.hh:104,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ' events'
    argTypes:
    - std::vector<EventKey>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 100
    functionDepth: 1
    functionLinenumber: 100
    functionLinenumberEnd: 106
    functionName: MTasker::getEvents
    functionSourceFile: /src/pdns/pdns/recursordist/mtasker.hh
    functionUses: 1
    functionsReached:
    - clear
    - emplace_back
    linkageType: ''
    returnType: void
    signature: void getEvents(std::vector<EventKey>& events) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 115
      start: 112
    functionDepth: 0
    functionLinenumber: 112
    functionLinenumberEnd: 115
    functionName: MTasker::noProcesses
    functionSourceFile: /src/pdns/pdns/recursordist/mtasker.hh
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool noProcesses() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 124
      start: 121
    functionDepth: 0
    functionLinenumber: 121
    functionLinenumberEnd: 124
    functionName: MTasker::numProcesses
    functionSourceFile: /src/pdns/pdns/recursordist/mtasker.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int numProcesses() const
  - 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: MTasker::getTid
    functionSourceFile: /src/pdns/pdns/recursordist/mtasker.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int getTid() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: at
      Src: /src/pdns/pdns/recursordist/mtasker.hh:138,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/mtasker.hh:138,1
    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: MTasker::getMaxStackUsage
    functionSourceFile: /src/pdns/pdns/recursordist/mtasker.hh
    functionUses: 0
    functionsReached:
    - at
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t getMaxStackUsage() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: at
      Src: /src/pdns/pdns/recursordist/mtasker.hh:145,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/mtasker.hh:145,1
    - Dst: ndiff
      Src: /src/pdns/pdns/recursordist/mtasker.hh:145,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 149
      start: 142
    functionDepth: 0
    functionLinenumber: 142
    functionLinenumberEnd: 149
    functionName: MTasker::getUsec
    functionSourceFile: /src/pdns/pdns/recursordist/mtasker.hh
    functionUses: 0
    functionsReached:
    - at
    - ndiff
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int getUsec() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pthread_attr_init
      Src: /src/pdns/pdns/recursordist/mtasker.hh:198,1
    - Dst: pthread_getattr_np
      Src: /src/pdns/pdns/recursordist/mtasker.hh:199,1
    - Dst: pthread_self
      Src: /src/pdns/pdns/recursordist/mtasker.hh:199,1
    - Dst: pthread_attr_getstack
      Src: /src/pdns/pdns/recursordist/mtasker.hh:200,1
    - Dst: pthread_attr_destroy
      Src: /src/pdns/pdns/recursordist/mtasker.hh:201,1
    - Dst: pthread_get_stackaddr_np
      Src: /src/pdns/pdns/recursordist/mtasker.hh:203,1
    - Dst: pthread_self
      Src: /src/pdns/pdns/recursordist/mtasker.hh:203,1
    - Dst: pthread_get_stacksize_np
      Src: /src/pdns/pdns/recursordist/mtasker.hh:204,1
    - Dst: pthread_self
      Src: /src/pdns/pdns/recursordist/mtasker.hh:204,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 210
      start: 192
    functionDepth: 0
    functionLinenumber: 192
    functionLinenumberEnd: 210
    functionName: MTasker::initMainStackBounds
    functionSourceFile: /src/pdns/pdns/recursordist/mtasker.hh
    functionUses: 1
    functionsReached:
    - pthread_attr_destroy
    - pthread_get_stackaddr_np
    - pthread_getattr_np
    - pthread_get_stacksize_np
    - pthread_attr_getstack
    - pthread_attr_init
    - pthread_self
    linkageType: ''
    returnType: void
    signature: void initMainStackBounds()
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/mtasker.hh:220,1
    - Dst: boost::multi_index::get<KeyTag>
      Src: /src/pdns/pdns/recursordist/mtasker.hh:224,1
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/mtasker.hh:225,1
    - Dst: gettimeofday
      Src: /src/pdns/pdns/recursordist/mtasker.hh:227,1
    - Dst: std::min
      Src: /src/pdns/pdns/recursordist/mtasker.hh:232,1
    - Dst: uSec
      Src: /src/pdns/pdns/recursordist/mtasker.hh:232,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - defusecs
    argTypes:
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 238
      start: 218
    functionDepth: 0
    functionLinenumber: 218
    functionLinenumberEnd: 238
    functionName: MTasker<EventKey, EventVal, Cmp>::nextWaiterDelayUsec
    functionSourceFile: /src/pdns/pdns/recursordist/mtasker.hh
    functionUses: 0
    functionsReached:
    - std::min
    - boost::multi_index::get<KeyTag>
    - gettimeofday
    - begin
    - empty
    - uSec
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t MTasker<EventKey, EventVal, Cmp>::nextWaiterDelayUsec(uint64_t
      defusecs)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: count
      Src: /src/pdns/pdns/recursordist/mtasker.hh:258,1
    - Dst: std::make_shared<pdns_ucontext_t>
      Src: /src/pdns/pdns/recursordist/mtasker.hh:263,1
    - Dst: static_cast<decltype(increment.tv_usec)>
      Src: /src/pdns/pdns/recursordist/mtasker.hh:269,1
    - Dst: gettimeofday
      Src: /src/pdns/pdns/recursordist/mtasker.hh:275,1
    - Dst: insert
      Src: /src/pdns/pdns/recursordist/mtasker.hh:283,1
    - Dst: dt::ndiff
      Src: /src/pdns/pdns/recursordist/mtasker.hh:285,1
    - Dst: notifyStackSwitchToKernel
      Src: /src/pdns/pdns/recursordist/mtasker.hh:288,1
    - Dst: pdns_swapcontext
      Src: /src/pdns/pdns/recursordist/mtasker.hh:289,1
    - Dst: find
      Src: /src/pdns/pdns/recursordist/mtasker.hh:289,1
    - Dst: notifyStackSwitchDone
      Src: /src/pdns/pdns/recursordist/mtasker.hh:290,1
    - Dst: dt::start
      Src: /src/pdns/pdns/recursordist/mtasker.hh:292,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/mtasker.hh:295,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/recursordist/mtasker.hh:299,1
    - Dst: assert
      Src: /src/pdns/pdns/recursordist/mtasker.hh:302,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/mtasker.hh:303,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 37
    argCount: 4
    argNames:
    - ' key'
    - val
    - timeoutMsec
    - now
    argTypes:
    - EventKey
    - EventVal*
    - unsigned int
    - struct timeval*
    assertStmts:
    - condition: (!d_used)
      pos:
        line_end: 301
        line_start: 301
        source_file: /src/pdns/pdns/recursordist/mtasker.hh
    constantsTouched: []
    func_position:
      end: 306
      start: 256
    functionDepth: 2
    functionLinenumber: 256
    functionLinenumberEnd: 306
    functionName: MTasker<EventKey, EventVal, Cmp>::waitEvent
    functionSourceFile: /src/pdns/pdns/recursordist/mtasker.hh
    functionUses: 0
    functionsReached:
    - reinterpret_cast<char*>
    - dt::start
    - std::move
    - notifyStackSwitchDone
    - count
    - notifyStackSwitchToKernel
    - pdns_swapcontext
    - assert
    - std::make_shared<pdns_ucontext_t>
    - gettimeofday
    - insert
    - dt::ndiff
    - static_cast<decltype(increment.tv_usec)>
    - find
    linkageType: ''
    returnType: int
    signature: int MTasker<EventKey, EventVal, Cmp>::waitEvent(EventKey& key, EventVal*
      val, unsigned int timeoutMsec, const struct timeval* now)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: push
      Src: /src/pdns/pdns/recursordist/mtasker.hh:314,1
    - Dst: notifyStackSwitchToKernel
      Src: /src/pdns/pdns/recursordist/mtasker.hh:315,1
    - Dst: pdns_swapcontext
      Src: /src/pdns/pdns/recursordist/mtasker.hh:316,1
    - Dst: notifyStackSwitchDone
      Src: /src/pdns/pdns/recursordist/mtasker.hh:317,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 318
      start: 312
    functionDepth: 1
    functionLinenumber: 312
    functionLinenumberEnd: 318
    functionName: MTasker<Key, Val, Cmp>::yield
    functionSourceFile: /src/pdns/pdns/recursordist/mtasker.hh
    functionUses: 0
    functionsReached:
    - notifyStackSwitchToKernel
    - pdns_swapcontext
    - notifyStackSwitchDone
    - push
    linkageType: ''
    returnType: void
    signature: void MTasker<Key, Val, Cmp>::yield()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: find
      Src: /src/pdns/pdns/recursordist/mtasker.hh:331,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/mtasker.hh:333,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/mtasker.hh:343,1
    - Dst: erase
      Src: /src/pdns/pdns/recursordist/mtasker.hh:344,1
    - Dst: notifyStackSwitch
      Src: /src/pdns/pdns/recursordist/mtasker.hh:345,1
    - Dst: pdns_swapcontext
      Src: /src/pdns/pdns/recursordist/mtasker.hh:347,1
    - Dst: notifyStackSwitchDone
      Src: /src/pdns/pdns/recursordist/mtasker.hh:350,1
    - Dst: notifyStackSwitchDone
      Src: /src/pdns/pdns/recursordist/mtasker.hh:353,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 21
    argCount: 2
    argNames:
    - ' key'
    - val
    argTypes:
    - EventKey
    - EventVal*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 355
      start: 329
    functionDepth: 1
    functionLinenumber: 329
    functionLinenumberEnd: 355
    functionName: MTasker<EventKey, EventVal, Cmp>::sendEvent
    functionSourceFile: /src/pdns/pdns/recursordist/mtasker.hh
    functionUses: 0
    functionsReached:
    - std::move
    - notifyStackSwitchDone
    - end
    - pdns_swapcontext
    - notifyStackSwitch
    - erase
    - find
    linkageType: ''
    returnType: int
    signature: int MTasker<EventKey, EventVal, Cmp>::sendEvent(const EventKey& key,
      const EventVal* val)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<pdns_ucontext_t>
      Src: /src/pdns/pdns/recursordist/mtasker.hh:360,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/mtasker.hh:361,1
    - Dst: auto::uc_stack::resize
      Src: /src/pdns/pdns/recursordist/mtasker.hh:362,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/mtasker.hh:365,1
    - Dst: top
      Src: /src/pdns/pdns/recursordist/mtasker.hh:365,1
    - Dst: pop
      Src: /src/pdns/pdns/recursordist/mtasker.hh:366,1
    - Dst: VALGRIND_STACK_REGISTER
      Src: /src/pdns/pdns/recursordist/mtasker.hh:372,1
    - Dst: auto::uc_stack::size
      Src: /src/pdns/pdns/recursordist/mtasker.hh:372,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 376
      start: 358
    functionDepth: 1
    functionLinenumber: 358
    functionLinenumberEnd: 376
    functionName: MTasker<Key, Val, Cmp>::getUContext
    functionSourceFile: /src/pdns/pdns/recursordist/mtasker.hh
    functionUses: 0
    functionsReached:
    - std::move
    - auto::uc_stack::resize
    - auto::uc_stack::size
    - top
    - std::make_shared<pdns_ucontext_t>
    - VALGRIND_STACK_REGISTER
    - empty
    - pop
    linkageType: ''
    returnType: std::shared_ptr<pdns_ucontext_t>
    signature: std::shared_ptr<pdns_ucontext_t> MTasker<Key, Val, Cmp>::getUContext()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MTasker<Key, Val, Cmp>::getUContext
      Src: /src/pdns/pdns/recursordist/mtasker.hh:386,1
    - Dst: auto::uc_stack::size
      Src: /src/pdns/pdns/recursordist/mtasker.hh:392,1
    - Dst: start
      Src: /src/pdns/pdns/recursordist/mtasker.hh:397,1
    - Dst: push
      Src: /src/pdns/pdns/recursordist/mtasker.hh:398,1
    - Dst: pdns_makecontext
      Src: /src/pdns/pdns/recursordist/mtasker.hh:400,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/mtasker.hh:402,1
    - Dst: push
      Src: /src/pdns/pdns/recursordist/mtasker.hh:403,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 2
    argNames:
    - start
    - val
    argTypes:
    - tfunc_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 404
      start: 384
    functionDepth: 2
    functionLinenumber: 384
    functionLinenumberEnd: 404
    functionName: MTasker<Key, Val, Cmp>::makeThread
    functionSourceFile: /src/pdns/pdns/recursordist/mtasker.hh
    functionUses: 0
    functionsReached:
    - std::move
    - push
    - auto::uc_stack::size
    - MTasker<Key, Val, Cmp>::getUContext
    - pdns_makecontext
    - start
    linkageType: ''
    returnType: void
    signature: void MTasker<Key, Val, Cmp>::makeThread(tfunc_t* start, void* val)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/mtasker.hh:419,1
    - Dst: front
      Src: /src/pdns/pdns/recursordist/mtasker.hh:420,1
    - Dst: dt::start
      Src: /src/pdns/pdns/recursordist/mtasker.hh:422,1
    - Dst: notifyStackSwitch
      Src: /src/pdns/pdns/recursordist/mtasker.hh:424,1
    - Dst: pdns_swapcontext
      Src: /src/pdns/pdns/recursordist/mtasker.hh:426,1
    - Dst: notifyStackSwitchDone
      Src: /src/pdns/pdns/recursordist/mtasker.hh:429,1
    - Dst: notifyStackSwitchDone
      Src: /src/pdns/pdns/recursordist/mtasker.hh:433,1
    - Dst: pop
      Src: /src/pdns/pdns/recursordist/mtasker.hh:435,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/mtasker.hh:438,1
    - Dst: front
      Src: /src/pdns/pdns/recursordist/mtasker.hh:439,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/mtasker.hh:440,1
    - Dst: find
      Src: /src/pdns/pdns/recursordist/mtasker.hh:441,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/mtasker.hh:442,1
    - Dst: push
      Src: /src/pdns/pdns/recursordist/mtasker.hh:443,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/mtasker.hh:443,1
    - Dst: erase
      Src: /src/pdns/pdns/recursordist/mtasker.hh:445,1
    - Dst: erase
      Src: /src/pdns/pdns/recursordist/mtasker.hh:448,1
    - Dst: pop
      Src: /src/pdns/pdns/recursordist/mtasker.hh:451,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/mtasker.hh:454,1
    - Dst: boost::multi_index::get<KeyTag>
      Src: /src/pdns/pdns/recursordist/mtasker.hh:455,1
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/mtasker.hh:457,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/mtasker.hh:457,1
    - Dst: erase
      Src: /src/pdns/pdns/recursordist/mtasker.hh:464,1
    - Dst: notifyStackSwitch
      Src: /src/pdns/pdns/recursordist/mtasker.hh:466,1
    - Dst: pdns_swapcontext
      Src: /src/pdns/pdns/recursordist/mtasker.hh:468,1
    - Dst: notifyStackSwitchDone
      Src: /src/pdns/pdns/recursordist/mtasker.hh:471,1
    - Dst: notifyStackSwitchDone
      Src: /src/pdns/pdns/recursordist/mtasker.hh:474,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 53
    argCount: 1
    argNames:
    - ' now'
    argTypes:
    - struct timeval
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 485
      start: 417
    functionDepth: 2
    functionLinenumber: 417
    functionLinenumberEnd: 485
    functionName: MTasker<Key, Val, Cmp>::schedule
    functionSourceFile: /src/pdns/pdns/recursordist/mtasker.hh
    functionUses: 0
    functionsReached:
    - dt::start
    - std::move
    - notifyStackSwitchDone
    - push
    - end
    - pdns_swapcontext
    - size
    - notifyStackSwitch
    - boost::multi_index::get<KeyTag>
    - begin
    - empty
    - front
    - erase
    - pop
    - find
    linkageType: ''
    returnType: bool
    signature: bool MTasker<Key, Val, Cmp>::schedule(const struct timeval& now)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/rec-main.hh:50,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 3
    argNames:
    - ' query'
    - ' now'
    - luaContext
    argTypes:
    - std::string
    - struct timeval
    - shared_ptr<RecursorLua4>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 49
    functionDepth: 0
    functionLinenumber: 49
    functionLinenumberEnd: 52
    functionName: DNSComboWriter
    functionSourceFile: /src/pdns/pdns/recursordist/rec-main.hh
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void DNSComboWriter(const std::string& query, const struct timeval&
      now, shared_ptr<RecursorLua4> luaContext)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/rec-main.hh:55,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/rec-main.hh:55,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/rec-main.hh:55,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/rec-main.hh:55,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 1
    argCount: 6
    argNames:
    - ' query'
    - ' now'
    - ' policyTags'
    - luaContext
    - ' data'
    - ' records'
    argTypes:
    - std::string
    - struct timeval
    - std::unordered_set<std::string>
    - shared_ptr<RecursorLua4>
    - LuaContext::LuaObject
    - std::vector<DNSRecord>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 54
    functionDepth: 0
    functionLinenumber: 54
    functionLinenumberEnd: 57
    functionName: DNSComboWriter
    functionSourceFile: /src/pdns/pdns/recursordist/rec-main.hh
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void DNSComboWriter(const std::string& query, const struct timeval&
      now, std::unordered_set<std::string>&& policyTags, shared_ptr<RecursorLua4>
      luaContext, LuaContext::LuaObject&& data, std::vector<DNSRecord>&& records)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' address'
    argTypes:
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 60
    functionDepth: 0
    functionLinenumber: 60
    functionLinenumberEnd: 63
    functionName: setRemote
    functionSourceFile: /src/pdns/pdns/recursordist/rec-main.hh
    functionUses: 15
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setRemote(const ComboAddress& address)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' address'
    argTypes:
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 66
    functionDepth: 0
    functionLinenumber: 66
    functionLinenumberEnd: 69
    functionName: setSource
    functionSourceFile: /src/pdns/pdns/recursordist/rec-main.hh
    functionUses: 49
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setSource(const ComboAddress& address)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' address'
    argTypes:
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 71
    functionDepth: 0
    functionLinenumber: 71
    functionLinenumberEnd: 74
    functionName: setMappedSource
    functionSourceFile: /src/pdns/pdns/recursordist/rec-main.hh
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setMappedSource(const ComboAddress& address)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' address'
    argTypes:
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 76
    functionDepth: 0
    functionLinenumber: 76
    functionLinenumberEnd: 79
    functionName: setLocal
    functionSourceFile: /src/pdns/pdns/recursordist/rec-main.hh
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setLocal(const ComboAddress& address)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' address'
    argTypes:
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 82
    functionDepth: 0
    functionLinenumber: 82
    functionLinenumberEnd: 85
    functionName: setDestination
    functionSourceFile: /src/pdns/pdns/recursordist/rec-main.hh
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setDestination(const ComboAddress& address)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - sock
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 87
    functionDepth: 0
    functionLinenumber: 87
    functionLinenumberEnd: 90
    functionName: setSocket
    functionSourceFile: /src/pdns/pdns/recursordist/rec-main.hh
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setSocket(int sock)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: get
      Src: /src/pdns/pdns/recursordist/rec-main.hh:276,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 277
      start: 274
    functionDepth: 0
    functionLinenumber: 274
    functionLinenumberEnd: 277
    functionName: getMT
    functionSourceFile: /src/pdns/pdns/recursordist/rec-main.hh
    functionUses: 2
    functionsReached:
    - get
    linkageType: ''
    returnType: MT_t
    signature: MT_t * getMT()
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/recursordist/rec-main.hh:284,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/rec-main.hh:285,1
    - Dst: static_cast<void*>
      Src: /src/pdns/pdns/recursordist/rec-main.hh:288,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/recursordist/rec-main.hh:288,1
    - Dst: static_cast<void*>
      Src: /src/pdns/pdns/recursordist/rec-main.hh:290,1
    - Dst: const_cast<typename T::value_type*>
      Src: /src/pdns/pdns/recursordist/rec-main.hh:290,1
    - Dst: data
      Src: /src/pdns/pdns/recursordist/rec-main.hh:290,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/rec-main.hh:291,1
    - Dst: Utility::writev
      Src: /src/pdns/pdns/recursordist/rec-main.hh:293,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/recursordist/rec-main.hh:293,1
    - Dst: std::array::size
      Src: /src/pdns/pdns/recursordist/rec-main.hh:293,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/recursordist/rec-main.hh:297,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-main.hh:297,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-main.hh:297,1
    - Dst: Logr::log_t::error
      Src: /src/pdns/pdns/recursordist/rec-main.hh:301,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-main.hh:301,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-main.hh:301,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/rec-main.hh:303,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/recursordist/rec-main.hh:304,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-main.hh:304,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-main.hh:304,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-main.hh:304,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/rec-main.hh:304,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-main.hh:304,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 3
    argNames:
    - ' comboWriter'
    - ' packet'
    - log
    argTypes:
    - std::unique_ptr<DNSComboWriter>
    - T
    - Logr::log_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 311
      start: 281
    functionDepth: 0
    functionLinenumber: 281
    functionLinenumberEnd: 311
    functionName: sendResponseOverTCP
    functionSourceFile: /src/pdns/pdns/recursordist/rec-main.hh
    functionUses: 3
    functionsReached:
    - Logr::log_t::info
    - Logging::Loggable
    - Logr::log_t::error
    - size
    - const_cast<typename T::value_type*>
    - data
    - Utility::writev
    - std::array::data
    - static_cast<void*>
    - std::array::size
    linkageType: ''
    returnType: bool
    signature: bool sendResponseOverTCP(const std::unique_ptr<DNSComboWriter>& comboWriter,
      const T& packet, Logr::log_t log)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: at
      Src: /src/pdns/pdns/recursordist/rec-main.hh:332,1
    - Dst: assert
      Src: /src/pdns/pdns/recursordist/rec-main.hh:333,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (info.d_myid == t_id)
      pos:
        line_end: 332
        line_start: 332
        source_file: /src/pdns/pdns/recursordist/rec-main.hh
    constantsTouched: []
    func_position:
      end: 335
      start: 330
    functionDepth: 0
    functionLinenumber: 330
    functionLinenumberEnd: 335
    functionName: '& self()'
    functionSourceFile: /src/pdns/pdns/recursordist/rec-main.hh
    functionUses: 0
    functionsReached:
    - at
    - assert
    linkageType: ''
    returnType: RecThreadInfo
    signature: RecThreadInfo & self()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: at
      Src: /src/pdns/pdns/recursordist/rec-main.hh:339,1
    - Dst: assert
      Src: /src/pdns/pdns/recursordist/rec-main.hh:340,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - index
    argTypes:
    - unsigned int
    assertStmts:
    - condition: (info.d_myid == index)
      pos:
        line_end: 339
        line_start: 339
        source_file: /src/pdns/pdns/recursordist/rec-main.hh
    constantsTouched: []
    func_position:
      end: 342
      start: 337
    functionDepth: 0
    functionLinenumber: 337
    functionLinenumberEnd: 342
    functionName: '& info(unsigned int index)'
    functionSourceFile: /src/pdns/pdns/recursordist/rec-main.hh
    functionUses: 0
    functionsReached:
    - at
    - assert
    linkageType: ''
    returnType: RecThreadInfo
    signature: RecThreadInfo & info(unsigned int index)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 347
      start: 344
    functionDepth: 0
    functionLinenumber: 344
    functionLinenumberEnd: 347
    functionName: '& infos()'
    functionSourceFile: /src/pdns/pdns/recursordist/rec-main.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: vector<RecThreadInfo>
    signature: vector<RecThreadInfo> & infos()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 352
      start: 349
    functionDepth: 0
    functionLinenumber: 349
    functionLinenumberEnd: 352
    functionName: isDistributor
    functionSourceFile: /src/pdns/pdns/recursordist/rec-main.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool isDistributor() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 357
      start: 354
    functionDepth: 0
    functionLinenumber: 354
    functionLinenumberEnd: 357
    functionName: isHandler
    functionSourceFile: /src/pdns/pdns/recursordist/rec-main.hh
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool isHandler() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 362
      start: 359
    functionDepth: 0
    functionLinenumber: 359
    functionLinenumberEnd: 362
    functionName: isWorker
    functionSourceFile: /src/pdns/pdns/recursordist/rec-main.hh
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool isWorker() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 368
      start: 365
    functionDepth: 0
    functionLinenumber: 365
    functionLinenumberEnd: 368
    functionName: isListener
    functionSourceFile: /src/pdns/pdns/recursordist/rec-main.hh
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool isListener() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 374
      start: 371
    functionDepth: 0
    functionLinenumber: 371
    functionLinenumberEnd: 374
    functionName: isTCPListener
    functionSourceFile: /src/pdns/pdns/recursordist/rec-main.hh
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool isTCPListener() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 379
      start: 376
    functionDepth: 0
    functionLinenumber: 376
    functionLinenumberEnd: 379
    functionName: isTaskThread
    functionSourceFile: /src/pdns/pdns/recursordist/rec-main.hh
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool isTaskThread() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 384
      start: 381
    functionDepth: 0
    functionLinenumber: 381
    functionLinenumberEnd: 384
    functionName: setHandler
    functionSourceFile: /src/pdns/pdns/recursordist/rec-main.hh
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setHandler()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 389
      start: 386
    functionDepth: 0
    functionLinenumber: 386
    functionLinenumberEnd: 389
    functionName: setWorker
    functionSourceFile: /src/pdns/pdns/recursordist/rec-main.hh
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setWorker()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 394
      start: 391
    functionDepth: 0
    functionLinenumber: 391
    functionLinenumberEnd: 394
    functionName: setListener
    functionSourceFile: /src/pdns/pdns/recursordist/rec-main.hh
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setListener(bool flag = true)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: setListener
      Src: /src/pdns/pdns/recursordist/rec-main.hh:398,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 400
      start: 396
    functionDepth: 1
    functionLinenumber: 396
    functionLinenumberEnd: 400
    functionName: setTCPListener
    functionSourceFile: /src/pdns/pdns/recursordist/rec-main.hh
    functionUses: 1
    functionsReached:
    - setListener
    linkageType: ''
    returnType: void
    signature: void setTCPListener(bool flag = true)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 405
      start: 402
    functionDepth: 0
    functionLinenumber: 402
    functionLinenumberEnd: 405
    functionName: setTaskThread
    functionSourceFile: /src/pdns/pdns/recursordist/rec-main.hh
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setTaskThread()
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 413
      start: 407
    functionDepth: 0
    functionLinenumber: 407
    functionLinenumberEnd: 413
    functionName: thread_local_id
    functionSourceFile: /src/pdns/pdns/recursordist/rec-main.hh
    functionUses: 10
    functionsReached: []
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int thread_local_id()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 418
      start: 415
    functionDepth: 0
    functionLinenumber: 415
    functionLinenumberEnd: 418
    functionName: is_thread_inited
    functionSourceFile: /src/pdns/pdns/recursordist/rec-main.hh
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool is_thread_inited()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 423
      start: 420
    functionDepth: 0
    functionLinenumber: 420
    functionLinenumberEnd: 423
    functionName: id
    functionSourceFile: /src/pdns/pdns/recursordist/rec-main.hh
    functionUses: 161
    functionsReached: []
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int id() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - arg
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 428
      start: 425
    functionDepth: 0
    functionLinenumber: 425
    functionLinenumberEnd: 428
    functionName: setThreadId
    functionSourceFile: /src/pdns/pdns/recursordist/rec-main.hh
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setThreadId(unsigned int arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 433
      start: 430
    functionDepth: 0
    functionLinenumber: 430
    functionLinenumberEnd: 433
    functionName: getName
    functionSourceFile: /src/pdns/pdns/recursordist/rec-main.hh
    functionUses: 196
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string getName() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 438
      start: 435
    functionDepth: 0
    functionLinenumber: 435
    functionLinenumberEnd: 438
    functionName: numHandlers
    functionSourceFile: /src/pdns/pdns/recursordist/rec-main.hh
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int numHandlers()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 443
      start: 440
    functionDepth: 0
    functionLinenumber: 440
    functionLinenumberEnd: 443
    functionName: numTaskThreads
    functionSourceFile: /src/pdns/pdns/recursordist/rec-main.hh
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int numTaskThreads()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 448
      start: 445
    functionDepth: 0
    functionLinenumber: 445
    functionLinenumberEnd: 448
    functionName: numUDPWorkers
    functionSourceFile: /src/pdns/pdns/recursordist/rec-main.hh
    functionUses: 8
    functionsReached: []
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int numUDPWorkers()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 453
      start: 450
    functionDepth: 0
    functionLinenumber: 450
    functionLinenumberEnd: 453
    functionName: numTCPWorkers
    functionSourceFile: /src/pdns/pdns/recursordist/rec-main.hh
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int numTCPWorkers()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 458
      start: 455
    functionDepth: 0
    functionLinenumber: 455
    functionLinenumberEnd: 458
    functionName: numDistributors
    functionSourceFile: /src/pdns/pdns/recursordist/rec-main.hh
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int numDistributors()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 463
      start: 460
    functionDepth: 0
    functionLinenumber: 460
    functionLinenumberEnd: 463
    functionName: weDistributeQueries
    functionSourceFile: /src/pdns/pdns/recursordist/rec-main.hh
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool weDistributeQueries()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - flag
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 468
      start: 465
    functionDepth: 0
    functionLinenumber: 465
    functionLinenumberEnd: 468
    functionName: setWeDistributeQueries
    functionSourceFile: /src/pdns/pdns/recursordist/rec-main.hh
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setWeDistributeQueries(bool flag)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - n
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 473
      start: 470
    functionDepth: 0
    functionLinenumber: 470
    functionLinenumberEnd: 473
    functionName: setNumUDPWorkerThreads
    functionSourceFile: /src/pdns/pdns/recursordist/rec-main.hh
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setNumUDPWorkerThreads(unsigned int n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - n
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 478
      start: 475
    functionDepth: 0
    functionLinenumber: 475
    functionLinenumberEnd: 478
    functionName: setNumTCPWorkerThreads
    functionSourceFile: /src/pdns/pdns/recursordist/rec-main.hh
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setNumTCPWorkerThreads(unsigned int n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - n
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 483
      start: 480
    functionDepth: 0
    functionLinenumber: 480
    functionLinenumberEnd: 483
    functionName: setNumDistributorThreads
    functionSourceFile: /src/pdns/pdns/recursordist/rec-main.hh
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setNumDistributorThreads(unsigned int n)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: numHandlers
      Src: /src/pdns/pdns/recursordist/rec-main.hh:487,1
    - Dst: numDistributors
      Src: /src/pdns/pdns/recursordist/rec-main.hh:487,1
    - Dst: numUDPWorkers
      Src: /src/pdns/pdns/recursordist/rec-main.hh:487,1
    - Dst: numTCPWorkers
      Src: /src/pdns/pdns/recursordist/rec-main.hh:487,1
    - Dst: numTaskThreads
      Src: /src/pdns/pdns/recursordist/rec-main.hh:487,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 488
      start: 485
    functionDepth: 1
    functionLinenumber: 485
    functionLinenumberEnd: 488
    functionName: numRecursorThreads
    functionSourceFile: /src/pdns/pdns/recursordist/rec-main.hh
    functionUses: 5
    functionsReached:
    - numTaskThreads
    - numDistributors
    - numTCPWorkers
    - numHandlers
    - numUDPWorkers
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int numRecursorThreads()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - n
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 496
      start: 493
    functionDepth: 0
    functionLinenumber: 493
    functionLinenumberEnd: 496
    functionName: setExitCode
    functionSourceFile: /src/pdns/pdns/recursordist/rec-main.hh
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setExitCode(int n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 501
      start: 498
    functionDepth: 0
    functionLinenumber: 498
    functionLinenumberEnd: 501
    functionName: '& getTCPSockets()'
    functionSourceFile: /src/pdns/pdns/recursordist/rec-main.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::set<int>
    signature: std::set<int> & getTCPSockets()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' socks'
    argTypes:
    - std::set<int>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 506
      start: 503
    functionDepth: 0
    functionLinenumber: 503
    functionLinenumberEnd: 506
    functionName: setTCPSockets
    functionSourceFile: /src/pdns/pdns/recursordist/rec-main.hh
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setTCPSockets(std::set<int>& socks)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 511
      start: 508
    functionDepth: 0
    functionLinenumber: 508
    functionLinenumberEnd: 511
    functionName: '& getDeferredAdds()'
    functionSourceFile: /src/pdns/pdns/recursordist/rec-main.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: deferredAdd_t
    signature: deferredAdd_t & getDeferredAdds()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 516
      start: 513
    functionDepth: 0
    functionLinenumber: 513
    functionLinenumberEnd: 516
    functionName: '& getPipes() const'
    functionSourceFile: /src/pdns/pdns/recursordist/rec-main.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: ThreadPipeSet
    signature: ThreadPipeSet & getPipes() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 521
      start: 518
    functionDepth: 0
    functionLinenumber: 518
    functionLinenumberEnd: 521
    functionName: getNumberOfDistributedQueries
    functionSourceFile: /src/pdns/pdns/recursordist/rec-main.hh
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t getNumberOfDistributedQueries() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 526
      start: 523
    functionDepth: 0
    functionLinenumber: 523
    functionLinenumberEnd: 526
    functionName: incNumberOfDistributedQueries
    functionSourceFile: /src/pdns/pdns/recursordist/rec-main.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void incNumberOfDistributedQueries()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 531
      start: 528
    functionDepth: 0
    functionLinenumber: 528
    functionLinenumberEnd: 531
    functionName: getMT
    functionSourceFile: /src/pdns/pdns/recursordist/rec-main.hh
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: MT_t
    signature: MT_t * getMT()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - theMT
    argTypes:
    - MT_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 536
      start: 533
    functionDepth: 0
    functionLinenumber: 533
    functionLinenumberEnd: 536
    functionName: setMT
    functionSourceFile: /src/pdns/pdns/recursordist/rec-main.hh
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setMT(MT_t* theMT)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/rec-main.hh:540,1
    - Dst: info
      Src: /src/pdns/pdns/recursordist/rec-main.hh:541,1
    - Dst: join
      Src: /src/pdns/pdns/recursordist/rec-main.hh:541,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 543
      start: 538
    functionDepth: 0
    functionLinenumber: 538
    functionLinenumberEnd: 543
    functionName: joinThread0
    functionSourceFile: /src/pdns/pdns/recursordist/rec-main.hh
    functionUses: 1
    functionsReached:
    - empty
    - join
    - info
    linkageType: ''
    returnType: void
    signature: void joinThread0()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: resize
      Src: /src/pdns/pdns/recursordist/rec-main.hh:547,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/rec-main.hh:549,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - size
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 551
      start: 545
    functionDepth: 1
    functionLinenumber: 545
    functionLinenumberEnd: 551
    functionName: resize
    functionSourceFile: /src/pdns/pdns/recursordist/rec-main.hh
    functionUses: 278
    functionsReached:
    - at
    - resize
    linkageType: ''
    returnType: void
    signature: void resize(size_t size)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: close
      Src: /src/pdns/pdns/recursordist/epollmplexer.cc:43,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 40
    functionDepth: 0
    functionLinenumber: 40
    functionLinenumberEnd: 45
    functionName: ~EpollFDMultiplexer() override
    functionSourceFile: /src/pdns/pdns/recursordist/epollmplexer.cc
    functionUses: 0
    functionsReached:
    - close
    linkageType: ''
    returnType: void
    signature: void ~EpollFDMultiplexer() override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 54
    functionDepth: 0
    functionLinenumber: 54
    functionLinenumberEnd: 57
    functionName: EpollFDMultiplexer::getName
    functionSourceFile: /src/pdns/pdns/recursordist/epollmplexer.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: string
    signature: string getName() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EpollFDMultiplexer::EpollFDMultiplexer
      Src: /src/pdns/pdns/recursordist/epollmplexer.cc:66,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - maxEventsHint
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 64
    functionDepth: 0
    functionLinenumber: 64
    functionLinenumberEnd: 67
    functionName: makeEpoll
    functionSourceFile: /src/pdns/pdns/recursordist/epollmplexer.cc
    functionUses: 0
    functionsReached:
    - EpollFDMultiplexer::EpollFDMultiplexer
    linkageType: ''
    returnType: FDMultiplexer
    signature: FDMultiplexer * makeEpoll(unsigned int maxEventsHint)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: FDMultiplexer::getMultiplexerMap
      Src: /src/pdns/pdns/recursordist/epollmplexer.cc:73,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 71
    functionDepth: 0
    functionLinenumber: 71
    functionLinenumberEnd: 74
    functionName: EpollRegisterOurselves
    functionSourceFile: /src/pdns/pdns/recursordist/epollmplexer.cc
    functionUses: 0
    functionsReached:
    - FDMultiplexer::getMultiplexerMap
    linkageType: ''
    returnType: void
    signature: void EpollRegisterOurselves()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: epoll_create
      Src: /src/pdns/pdns/recursordist/epollmplexer.cc:80,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/recursordist/epollmplexer.cc:80,1
    - Dst: FDMultiplexerException
      Src: /src/pdns/pdns/recursordist/epollmplexer.cc:82,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/epollmplexer.cc:82,1
    - Dst: socket
      Src: /src/pdns/pdns/recursordist/epollmplexer.cc:84,1
    - Dst: addReadFD
      Src: /src/pdns/pdns/recursordist/epollmplexer.cc:91,1
    - Dst: removeReadFD
      Src: /src/pdns/pdns/recursordist/epollmplexer.cc:92,1
    - Dst: close
      Src: /src/pdns/pdns/recursordist/epollmplexer.cc:93,1
    - Dst: close
      Src: /src/pdns/pdns/recursordist/epollmplexer.cc:97,1
    - Dst: close
      Src: /src/pdns/pdns/recursordist/epollmplexer.cc:98,1
    - Dst: FDMultiplexerException
      Src: /src/pdns/pdns/recursordist/epollmplexer.cc:99,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/epollmplexer.cc:99,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/epollmplexer.cc:99,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 1
    argNames:
    - maxEventsHint
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 77
    functionDepth: 0
    functionLinenumber: 77
    functionLinenumberEnd: 101
    functionName: EpollFDMultiplexer::EpollFDMultiplexer
    functionSourceFile: /src/pdns/pdns/recursordist/epollmplexer.cc
    functionUses: 5
    functionsReached:
    - socket
    - addReadFD
    - stringerror
    - what
    - string
    - epoll_create
    - removeReadFD
    - FDMultiplexerException
    - close
    - static_cast<int>
    linkageType: ''
    returnType: void
    signature: void EpollFDMultiplexer::EpollFDMultiplexer(unsigned int maxEventsHint)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/epollmplexer.cc:114,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - kind
    argTypes:
    - FDMultiplexer::EventKind
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 115
      start: 103
    functionDepth: 0
    functionLinenumber: 103
    functionLinenumberEnd: 115
    functionName: convertEventKind
    functionSourceFile: /src/pdns/pdns/recursordist/epollmplexer.cc
    functionUses: 18
    functionsReached:
    - std::runtime_error
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t convertEventKind(FDMultiplexer::EventKind kind)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: convertEventKind
      Src: /src/pdns/pdns/recursordist/epollmplexer.cc:121,1
    - Dst: epoll_ctl
      Src: /src/pdns/pdns/recursordist/epollmplexer.cc:126,1
    - Dst: FDMultiplexerException
      Src: /src/pdns/pdns/recursordist/epollmplexer.cc:127,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/epollmplexer.cc:127,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - fd
    - kind
    argTypes:
    - int
    - FDMultiplexer::EventKind
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 129
      start: 117
    functionDepth: 0
    functionLinenumber: 117
    functionLinenumberEnd: 129
    functionName: EpollFDMultiplexer::addFD
    functionSourceFile: /src/pdns/pdns/recursordist/epollmplexer.cc
    functionUses: 0
    functionsReached:
    - FDMultiplexerException
    - epoll_ctl
    - stringerror
    - convertEventKind
    linkageType: ''
    returnType: void
    signature: void EpollFDMultiplexer::addFD(int fd, FDMultiplexer::EventKind kind)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: epoll_ctl
      Src: /src/pdns/pdns/recursordist/epollmplexer.cc:137,1
    - Dst: FDMultiplexerException
      Src: /src/pdns/pdns/recursordist/epollmplexer.cc:138,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/epollmplexer.cc:138,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - fd
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 131
    functionDepth: 0
    functionLinenumber: 131
    functionLinenumberEnd: 140
    functionName: EpollFDMultiplexer::removeFD
    functionSourceFile: /src/pdns/pdns/recursordist/epollmplexer.cc
    functionUses: 0
    functionsReached:
    - FDMultiplexerException
    - epoll_ctl
    - stringerror
    linkageType: ''
    returnType: void
    signature: void EpollFDMultiplexer::removeFD(int fd, FDMultiplexer::EventKind)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: convertEventKind
      Src: /src/pdns/pdns/recursordist/epollmplexer.cc:145,1
    - Dst: epoll_ctl
      Src: /src/pdns/pdns/recursordist/epollmplexer.cc:149,1
    - Dst: FDMultiplexerException
      Src: /src/pdns/pdns/recursordist/epollmplexer.cc:150,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/epollmplexer.cc:150,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - fd
    - to
    argTypes:
    - int
    - FDMultiplexer::EventKind
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 152
      start: 142
    functionDepth: 0
    functionLinenumber: 142
    functionLinenumberEnd: 152
    functionName: EpollFDMultiplexer::alterFD
    functionSourceFile: /src/pdns/pdns/recursordist/epollmplexer.cc
    functionUses: 0
    functionsReached:
    - FDMultiplexerException
    - epoll_ctl
    - stringerror
    - convertEventKind
    linkageType: ''
    returnType: void
    signature: void EpollFDMultiplexer::alterFD(int fd, FDMultiplexer::EventKind,
      FDMultiplexer::EventKind to)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: epoll_wait
      Src: /src/pdns/pdns/recursordist/epollmplexer.cc:156,1
    - Dst: data
      Src: /src/pdns/pdns/recursordist/epollmplexer.cc:156,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/epollmplexer.cc:156,1
    - Dst: FDMultiplexerException
      Src: /src/pdns/pdns/recursordist/epollmplexer.cc:159,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/epollmplexer.cc:159,1
    - Dst: push_back
      Src: /src/pdns/pdns/recursordist/epollmplexer.cc:163,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 7
    argCount: 2
    argNames:
    - ' fds'
    - timeout
    argTypes:
    - std::vector<int>
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 165
      start: 154
    functionDepth: 0
    functionLinenumber: 154
    functionLinenumberEnd: 165
    functionName: EpollFDMultiplexer::getAvailableFDs
    functionSourceFile: /src/pdns/pdns/recursordist/epollmplexer.cc
    functionUses: 0
    functionsReached:
    - epoll_wait
    - push_back
    - stringerror
    - size
    - data
    - FDMultiplexerException
    linkageType: ''
    returnType: void
    signature: void EpollFDMultiplexer::getAvailableFDs(std::vector<int>& fds, int
      timeout)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: epoll_wait
      Src: /src/pdns/pdns/recursordist/epollmplexer.cc:171,1
    - Dst: data
      Src: /src/pdns/pdns/recursordist/epollmplexer.cc:171,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/epollmplexer.cc:171,1
    - Dst: gettimeofday
      Src: /src/pdns/pdns/recursordist/epollmplexer.cc:172,1
    - Dst: FDMultiplexerException
      Src: /src/pdns/pdns/recursordist/epollmplexer.cc:175,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/epollmplexer.cc:175,1
    - Dst: find
      Src: /src/pdns/pdns/recursordist/epollmplexer.cc:186,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/epollmplexer.cc:187,1
    - Dst: d_callback
      Src: /src/pdns/pdns/recursordist/epollmplexer.cc:188,1
    - Dst: find
      Src: /src/pdns/pdns/recursordist/epollmplexer.cc:194,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/epollmplexer.cc:195,1
    - Dst: d_callback
      Src: /src/pdns/pdns/recursordist/epollmplexer.cc:196,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 23
    argCount: 2
    argNames:
    - now
    - timeout
    argTypes:
    - struct timeval*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 203
      start: 167
    functionDepth: 0
    functionLinenumber: 167
    functionLinenumberEnd: 203
    functionName: EpollFDMultiplexer::run
    functionSourceFile: /src/pdns/pdns/recursordist/epollmplexer.cc
    functionUses: 2
    functionsReached:
    - epoll_wait
    - stringerror
    - end
    - size
    - d_callback
    - gettimeofday
    - data
    - FDMultiplexerException
    - find
    linkageType: ''
    returnType: int
    signature: int EpollFDMultiplexer::run(struct timeval* now, int timeout)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: funcparam_t_cast<Socket*>
      Src: /src/pdns/pdns/recursordist/epollmplexer.cc:209,1
    - Dst: Socket*::recvFrom
      Src: /src/pdns/pdns/recursordist/epollmplexer.cc:212,1
    - Dst: string::size
      Src: /src/pdns/pdns/recursordist/epollmplexer.cc:213,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - fd
    - ' parameter'
    argTypes:
    - int
    - funcparam_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 214
      start: 206
    functionDepth: 0
    functionLinenumber: 206
    functionLinenumberEnd: 214
    functionName: acceptData
    functionSourceFile: /src/pdns/pdns/recursordist/epollmplexer.cc
    functionUses: 0
    functionsReached:
    - string::size
    - funcparam_t_cast<Socket*>
    - Socket*::recvFrom
    linkageType: ''
    returnType: void
    signature: void acceptData(int fd, funcparam_t& parameter)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Socket::bind
      Src: /src/pdns/pdns/recursordist/epollmplexer.cc:222,1
    - Dst: EpollFDMultiplexer::EpollFDMultiplexer
      Src: /src/pdns/pdns/recursordist/epollmplexer.cc:224,1
    - Dst: EpollFDMultiplexer::addReadFD
      Src: /src/pdns/pdns/recursordist/epollmplexer.cc:226,1
    - Dst: Socket::getHandle
      Src: /src/pdns/pdns/recursordist/epollmplexer.cc:226,1
    - Dst: EpollFDMultiplexer::run
      Src: /src/pdns/pdns/recursordist/epollmplexer.cc:229,1
    - Dst: EpollFDMultiplexer::removeReadFD
      Src: /src/pdns/pdns/recursordist/epollmplexer.cc:231,1
    - Dst: Socket::getHandle
      Src: /src/pdns/pdns/recursordist/epollmplexer.cc:231,1
    - Dst: EpollFDMultiplexer::removeReadFD
      Src: /src/pdns/pdns/recursordist/epollmplexer.cc:232,1
    - Dst: Socket::getHandle
      Src: /src/pdns/pdns/recursordist/epollmplexer.cc:232,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 233
      start: 217
    functionDepth: 0
    functionLinenumber: 217
    functionLinenumberEnd: 233
    functionName: main
    functionSourceFile: /src/pdns/pdns/recursordist/epollmplexer.cc
    functionUses: 58
    functionsReached:
    - EpollFDMultiplexer::EpollFDMultiplexer
    - Socket::getHandle
    - EpollFDMultiplexer::removeReadFD
    - EpollFDMultiplexer::addReadFD
    - EpollFDMultiplexer::run
    - Socket::bind
    linkageType: ''
    returnType: int
    signature: int main()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/recursordist/ednsextendederror.cc:28,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/recursordist/ednsextendederror.cc:31,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/ednsextendederror.cc:31,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/recursordist/ednsextendederror.cc:31,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/ednsextendederror.cc:31,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/ednsextendederror.cc:33,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/ednsextendederror.cc:34,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/ednsextendederror.cc:34,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/ednsextendederror.cc:34,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - ' option'
    - ' eee'
    argTypes:
    - std::string_view
    - EDNSExtendedError
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 26
    functionDepth: 0
    functionLinenumber: 26
    functionLinenumberEnd: 38
    functionName: getEDNSExtendedErrorOptFromStringView
    functionSourceFile: /src/pdns/pdns/recursordist/ednsextendederror.cc
    functionUses: 4
    functionsReached:
    - std::string
    - at
    - size
    - static_cast<uint8_t>
    linkageType: ''
    returnType: bool
    signature: bool getEDNSExtendedErrorOptFromStringView(const std::string_view&
      option, EDNSExtendedError& eee)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getEDNSExtendedErrorOptFromStringView
      Src: /src/pdns/pdns/recursordist/ednsextendederror.cc:42,1
    - Dst: std::string_view
      Src: /src/pdns/pdns/recursordist/ednsextendederror.cc:42,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' option'
    - ' eee'
    argTypes:
    - string
    - EDNSExtendedError
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 40
    functionDepth: 0
    functionLinenumber: 40
    functionLinenumberEnd: 43
    functionName: getEDNSExtendedErrorOptFromString
    functionSourceFile: /src/pdns/pdns/recursordist/ednsextendederror.cc
    functionUses: 1
    functionsReached:
    - std::string_view
    - getEDNSExtendedErrorOptFromStringView
    linkageType: ''
    returnType: bool
    signature: bool getEDNSExtendedErrorOptFromString(const string& option, EDNSExtendedError&
      eee)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getEDNSExtendedErrorOptFromStringView
      Src: /src/pdns/pdns/recursordist/ednsextendederror.cc:47,1
    - Dst: std::string_view
      Src: /src/pdns/pdns/recursordist/ednsextendederror.cc:47,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - option
    - len
    - ' eee'
    argTypes:
    - char*
    - unsigned int
    - EDNSExtendedError
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 45
    functionDepth: 0
    functionLinenumber: 45
    functionLinenumberEnd: 48
    functionName: getEDNSExtendedErrorOptFromString
    functionSourceFile: /src/pdns/pdns/recursordist/ednsextendederror.cc
    functionUses: 1
    functionsReached:
    - std::string_view
    - getEDNSExtendedErrorOptFromStringView
    linkageType: ''
    returnType: bool
    signature: bool getEDNSExtendedErrorOptFromString(const char* option, unsigned
      int len, EDNSExtendedError& eee)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: extraText::size
      Src: /src/pdns/pdns/recursordist/ednsextendederror.cc:52,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/recursordist/ednsextendederror.cc:52,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/recursordist/ednsextendederror.cc:52,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/ednsextendederror.cc:53,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/ednsextendederror.cc:53,1
    - Dst: extraText::size
      Src: /src/pdns/pdns/recursordist/ednsextendederror.cc:53,1
    - Dst: string::reserve
      Src: /src/pdns/pdns/recursordist/ednsextendederror.cc:57,1
    - Dst: extraText::size
      Src: /src/pdns/pdns/recursordist/ednsextendederror.cc:57,1
    - Dst: string::resize
      Src: /src/pdns/pdns/recursordist/ednsextendederror.cc:58,1
    - Dst: static_cast<char>
      Src: /src/pdns/pdns/recursordist/ednsextendederror.cc:60,1
    - Dst: static_cast<uint16_t>
      Src: /src/pdns/pdns/recursordist/ednsextendederror.cc:60,1
    - Dst: static_cast<char>
      Src: /src/pdns/pdns/recursordist/ednsextendederror.cc:61,1
    - Dst: static_cast<uint16_t>
      Src: /src/pdns/pdns/recursordist/ednsextendederror.cc:61,1
    - Dst: string::append
      Src: /src/pdns/pdns/recursordist/ednsextendederror.cc:62,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - ' eee'
    argTypes:
    - EDNSExtendedError
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 50
    functionDepth: 2
    functionLinenumber: 50
    functionLinenumberEnd: 65
    functionName: makeEDNSExtendedErrorOptString
    functionSourceFile: /src/pdns/pdns/recursordist/ednsextendederror.cc
    functionUses: 4
    functionsReached:
    - pdns::max
    - string::resize
    - static_cast<size_t>
    - string::reserve
    - std::to_string
    - std::runtime_error
    - extraText::size
    - string::append
    - static_cast<uint16_t>
    - static_cast<char>
    linkageType: ''
    returnType: string
    signature: string makeEDNSExtendedErrorOptString(const EDNSExtendedError& eee)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:14,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:16,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:22,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:23,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:24,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:25,1
    - Dst: std::unique_ptr::getNow
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:30,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:33,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:33,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:34,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:35,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:35,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:36,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:36,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:36,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:36,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:37,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:37,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:37,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:37,1
    - Dst: BOOST_REQUIRE_GT
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:42,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:42,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:42,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:43,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:43,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:44,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:44,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:44,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:44,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:45,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:45,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:45,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:45,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 11
    functionDepth: 1
    functionLinenumber: 11
    functionLinenumberEnd: 46
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc3.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - std::unique_ptr::setAsyncCallback
    - getRR
    - vector::at
    - primeHints
    - QType
    - addRecordToLW
    - std::unique_ptr::getNow
    - initSR
    - BOOST_CHECK_EQUAL
    - get
    - BOOST_REQUIRE_GT
    - std::unique_ptr::beginResolve
    - vector::size
    - BOOST_REQUIRE_EQUAL
    - ComboAddress
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_cache_auth)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:51,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:53,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:57,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:58,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:59,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:60,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:61,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:64,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:66,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:67,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:68,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:72,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:73,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:82,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:82,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:83,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:84,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:84,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:86,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:87,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:87,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:88,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:89,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:89,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:91,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:93,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:93,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:93,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:96,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:97,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:97,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:98,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:99,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:99,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 39
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 48
    functionDepth: 1
    functionLinenumber: 48
    functionLinenumberEnd: 100
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc3.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - std::unique_ptr::setAsyncCallback
    - primeHints
    - QType
    - addRecordToLW
    - BOOST_CHECK_EQUAL
    - initSR
    - BOOST_CHECK_THROW
    - std::unique_ptr::beginResolve
    - isRootServer
    - vector::size
    - vector::clear
    - ComboAddress
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_unauth_any)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:105,1
    - Dst: std::unique_ptr::setQNameMinimization
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:107,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:109,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:113,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:117,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:122,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:122,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:123,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:124,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:124,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - qmin
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 125
      start: 102
    functionDepth: 1
    functionLinenumber: 102
    functionLinenumberEnd: 125
    functionName: test_no_data_f
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc3.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - std::unique_ptr::setAsyncCallback
    - primeHints
    - std::unique_ptr::setQNameMinimization
    - QType
    - BOOST_CHECK_EQUAL
    - initSR
    - std::unique_ptr::beginResolve
    - vector::size
    linkageType: ''
    returnType: void
    signature: void test_no_data_f(bool qmin)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_no_data_f
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:129,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 130
      start: 127
    functionDepth: 2
    functionLinenumber: 127
    functionLinenumberEnd: 130
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc3.cc
    functionUses: 0
    functionsReached:
    - test_no_data_f
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_no_data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test_no_data_f
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:134,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 135
      start: 132
    functionDepth: 2
    functionLinenumber: 132
    functionLinenumberEnd: 135
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc3.cc
    functionUses: 0
    functionsReached:
    - test_no_data_f
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_no_data_qmin)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:141,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:143,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:149,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:150,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:151,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:152,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:153,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:157,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:158,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:159,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:160,1
    - Dst: std::unique_ptr::getNow
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:165,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:169,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:169,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:170,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:171,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:171,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:172,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:172,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:172,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:172,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:173,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:173,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:173,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:173,1
    - Dst: BOOST_REQUIRE_GT
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:178,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:178,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:178,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:179,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:179,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:180,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:180,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:180,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:180,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:181,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:181,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:181,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:181,1
    - Dst: BOOST_REQUIRE_LE
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:184,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:184,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:184,1
    - Dst: BOOST_REQUIRE_LE
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:187,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:187,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:187,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 26
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 188
      start: 137
    functionDepth: 1
    functionLinenumber: 137
    functionLinenumberEnd: 188
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc3.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - std::unique_ptr::setAsyncCallback
    - getRR
    - vector::at
    - primeHints
    - QType
    - addRecordToLW
    - std::unique_ptr::getNow
    - initSR
    - BOOST_CHECK_EQUAL
    - get
    - BOOST_REQUIRE_GT
    - std::unique_ptr::beginResolve
    - isRootServer
    - vector::size
    - BOOST_REQUIRE_LE
    - BOOST_REQUIRE_EQUAL
    - ComboAddress
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_extra_answers)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:194,1
    - Dst: setDNSSECValidation
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:196,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:198,1
    - Dst: getCopy
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:204,1
    - Dst: auto::dsAnchors::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:205,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:206,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:207,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:207,1
    - Dst: setState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:208,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:210,1
    - Dst: genericDSAndDNSKEYHandler
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:212,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:214,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:215,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:216,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:217,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:217,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:218,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:222,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:223,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:224,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:224,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:225,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:226,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:226,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:227,1
    - Dst: std::unique_ptr::getNow
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:232,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:236,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:236,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:237,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:238,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:238,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:239,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:239,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:240,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:240,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:240,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:240,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:241,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:241,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:241,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:241,1
    - Dst: BOOST_REQUIRE_GT
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:246,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:246,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:246,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:247,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:247,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:248,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:248,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:248,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:248,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:249,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:249,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:249,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:249,1
    - Dst: BOOST_REQUIRE_LE
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:252,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:252,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:252,1
    - Dst: BOOST_REQUIRE_LE
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:255,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:255,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:255,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 38
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 256
      start: 190
    functionDepth: 1
    functionLinenumber: 190
    functionLinenumberEnd: 256
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc3.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - genericDSAndDNSKEYHandler
    - primeHints
    - setDNSSECValidation
    - std::unique_ptr::beginResolve
    - isRootServer
    - BOOST_REQUIRE_LE
    - setState
    - vector::at
    - QType
    - generateKeyMaterial
    - addRecordToLW
    - auto::dsAnchors::clear
    - addRRSIG
    - BOOST_REQUIRE_EQUAL
    - std::unique_ptr::setAsyncCallback
    - DNSName
    - initSR
    - std::unique_ptr::getNow
    - std::unique_ptr::getValidationState
    - BOOST_REQUIRE_GT
    - get
    - ComboAddress
    - getRR
    - BOOST_CHECK_EQUAL
    - getCopy
    - vector::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_dnssec_extra_answers)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:261,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:263,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:267,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:268,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:269,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:270,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:271,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:276,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:276,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:277,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:278,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:278,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 279
      start: 258
    functionDepth: 1
    functionLinenumber: 258
    functionLinenumberEnd: 279
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc3.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - std::unique_ptr::setAsyncCallback
    - primeHints
    - QType
    - addRecordToLW
    - BOOST_CHECK_EQUAL
    - initSR
    - std::unique_ptr::beginResolve
    - vector::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_skip_opt_any)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:284,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:286,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:290,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:291,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:292,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:294,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:295,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:296,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:301,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:301,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:302,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:303,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:303,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 304
      start: 281
    functionDepth: 1
    functionLinenumber: 281
    functionLinenumberEnd: 304
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc3.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - std::unique_ptr::setAsyncCallback
    - primeHints
    - QType
    - addRecordToLW
    - BOOST_CHECK_EQUAL
    - initSR
    - std::unique_ptr::beginResolve
    - vector::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_nodata_nsec_nodnssec)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:309,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:311,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:315,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:316,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:317,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:319,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:320,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:321,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:326,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:326,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:327,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:328,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:328,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 329
      start: 306
    functionDepth: 1
    functionLinenumber: 306
    functionLinenumberEnd: 329
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc3.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - std::unique_ptr::setAsyncCallback
    - primeHints
    - QType
    - addRecordToLW
    - BOOST_CHECK_EQUAL
    - initSR
    - std::unique_ptr::beginResolve
    - vector::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_nodata_nsec_dnssec)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:334,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:336,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:340,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:341,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:342,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:344,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:345,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:346,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:351,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:351,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:352,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:353,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:353,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 354
      start: 331
    functionDepth: 1
    functionLinenumber: 331
    functionLinenumberEnd: 354
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc3.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - std::unique_ptr::setAsyncCallback
    - primeHints
    - QType
    - addRecordToLW
    - BOOST_CHECK_EQUAL
    - initSR
    - std::unique_ptr::beginResolve
    - vector::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_nx_nsec_nodnssec)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:359,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:361,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:365,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:366,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:367,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:369,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:370,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:371,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:376,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:376,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:377,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:378,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:378,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 379
      start: 356
    functionDepth: 1
    functionLinenumber: 356
    functionLinenumberEnd: 379
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc3.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - std::unique_ptr::setAsyncCallback
    - primeHints
    - QType
    - addRecordToLW
    - BOOST_CHECK_EQUAL
    - initSR
    - std::unique_ptr::beginResolve
    - vector::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_nx_nsec_dnssec)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:384,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:386,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:391,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:398,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:398,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:399,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:400,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:400,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:401,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 402
      start: 381
    functionDepth: 1
    functionLinenumber: 381
    functionLinenumberEnd: 402
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc3.cc
    functionUses: 0
    functionsReached:
    - std::unique_ptr::setAsyncCallback
    - primeHints
    - QType
    - BOOST_CHECK_EQUAL
    - initSR
    - std::unique_ptr::beginResolve
    - vector::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_qclass_none)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:407,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:409,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:413,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:414,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:415,1
    - Dst: std::unique_ptr::getNow
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:419,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:422,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:422,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:423,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:424,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:424,1
    - Dst: BOOST_REQUIRE_GT
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:430,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:430,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:430,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 431
      start: 404
    functionDepth: 1
    functionLinenumber: 404
    functionLinenumberEnd: 431
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc3.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - std::unique_ptr::setAsyncCallback
    - primeHints
    - QType
    - addRecordToLW
    - std::unique_ptr::getNow
    - initSR
    - BOOST_CHECK_EQUAL
    - get
    - BOOST_REQUIRE_GT
    - std::unique_ptr::beginResolve
    - vector::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_answer_no_aa)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:436,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:438,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:443,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:444,1
    - Dst: toString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:444,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:444,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:451,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:451,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:452,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:453,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:453,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:454,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:456,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:456,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:457,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:458,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:458,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:459,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:461,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:461,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:462,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:463,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:463,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:464,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:466,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:466,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:467,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:468,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:468,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:469,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 23
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 470
      start: 433
    functionDepth: 1
    functionLinenumber: 433
    functionLinenumberEnd: 470
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc3.cc
    functionUses: 0
    functionsReached:
    - std::unique_ptr::setAsyncCallback
    - toString
    - primeHints
    - QType
    - BOOST_CHECK_EQUAL
    - initSR
    - std::unique_ptr::beginResolve
    - vector::size
    - toStringWithPort
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_special_types)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:475,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:477,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:483,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:489,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:489,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:489,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:490,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:491,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:491,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:492,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:493,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:495,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:496,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:496,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:496,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:497,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:498,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:498,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:499,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:500,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:502,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:503,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:503,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:503,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:504,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:505,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:505,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:506,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:507,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:509,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:510,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:510,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:510,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:511,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:512,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:512,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:513,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:514,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:516,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:517,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:517,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:517,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:518,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:519,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:519,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:520,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:521,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:521,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:522,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:524,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:525,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:525,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:525,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:526,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:527,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:527,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:528,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:529,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:529,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:530,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:532,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:533,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:533,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:533,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:534,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:535,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:535,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:537,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:539,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:539,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:542,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:542,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:545,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:547,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:548,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:548,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:548,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:549,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:550,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:550,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:551,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:552,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:552,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:553,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:555,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:556,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:556,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:556,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:557,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:558,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:558,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:559,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:560,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:560,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:561,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:563,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:564,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:564,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:564,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:565,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:566,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:566,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:567,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:568,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:568,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:569,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:571,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:572,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:572,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:572,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:573,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:574,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:574,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:575,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:576,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:576,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:577,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:579,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:580,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:580,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:580,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:581,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:582,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:582,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:583,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:584,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:584,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:585,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:587,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:588,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:588,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:588,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:589,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:590,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:590,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:591,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:592,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:592,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:593,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 97
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 594
      start: 472
    functionDepth: 1
    functionLinenumber: 472
    functionLinenumberEnd: 594
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc3.cc
    functionUses: 0
    functionsReached:
    - std::unique_ptr::setAsyncCallback
    - getRR
    - BOOST_CHECK
    - primeHints
    - QType
    - DNSName
    - initSR
    - BOOST_CHECK_EQUAL
    - std::unique_ptr::beginResolve
    - BOOST_REQUIRE
    - vector::size
    - vector::clear
    - BOOST_REQUIRE_EQUAL
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_special_names)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:599,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:601,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:606,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:607,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:608,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:609,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:610,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:610,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:615,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:616,1
    - Dst: std::make_shared<DNSFilterEngine::Zone>
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:625,1
    - Dst: std::shared_ptr::setName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:626,1
    - Dst: std::shared_ptr::addNSIPTrigger
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:627,1
    - Dst: Netmask
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:627,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:627,1
    - Dst: getCopy
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:628,1
    - Dst: auto::dfe::clearZones
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:629,1
    - Dst: auto::dfe::addZone
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:630,1
    - Dst: setState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:631,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:634,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:634,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:634,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 24
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 635
      start: 596
    functionDepth: 1
    functionLinenumber: 596
    functionLinenumberEnd: 635
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc3.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - primeHints
    - auto::dfe::addZone
    - BOOST_CHECK_THROW
    - std::unique_ptr::beginResolve
    - isRootServer
    - setState
    - QType
    - addRecordToLW
    - auto::dfe::clearZones
    - Netmask
    - std::unique_ptr::setAsyncCallback
    - std::shared_ptr::addNSIPTrigger
    - initSR
    - std::move
    - std::shared_ptr::setName
    - getCopy
    - ComboAddress::toString
    - std::make_shared<DNSFilterEngine::Zone>
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_nameserver_ipv4_rpz)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:640,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:642,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:647,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:648,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:649,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:650,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:651,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:651,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:656,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:657,1
    - Dst: std::make_shared<DNSFilterEngine::Zone>
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:666,1
    - Dst: std::shared_ptr::setName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:667,1
    - Dst: std::shared_ptr::addNSIPTrigger
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:668,1
    - Dst: Netmask
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:668,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:668,1
    - Dst: getCopy
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:669,1
    - Dst: auto::dfe::clearZones
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:670,1
    - Dst: auto::dfe::addZone
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:671,1
    - Dst: setState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:672,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:675,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:675,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:675,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 24
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 676
      start: 637
    functionDepth: 1
    functionLinenumber: 637
    functionLinenumberEnd: 676
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc3.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - primeHints
    - auto::dfe::addZone
    - BOOST_CHECK_THROW
    - std::unique_ptr::beginResolve
    - isRootServer
    - setState
    - QType
    - addRecordToLW
    - auto::dfe::clearZones
    - Netmask
    - std::unique_ptr::setAsyncCallback
    - std::shared_ptr::addNSIPTrigger
    - initSR
    - std::move
    - std::shared_ptr::setName
    - getCopy
    - ComboAddress::toString
    - std::make_shared<DNSFilterEngine::Zone>
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_nameserver_ipv6_rpz)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:681,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:683,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:689,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:690,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:691,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:692,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:692,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:693,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:693,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:698,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:699,1
    - Dst: std::make_shared<DNSFilterEngine::Zone>
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:708,1
    - Dst: std::shared_ptr::setName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:709,1
    - Dst: std::shared_ptr::addNSTrigger
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:710,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:710,1
    - Dst: getCopy
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:711,1
    - Dst: auto::dfe::clearZones
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:712,1
    - Dst: auto::dfe::addZone
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:713,1
    - Dst: setState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:714,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:717,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:717,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:717,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 24
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 718
      start: 678
    functionDepth: 1
    functionLinenumber: 678
    functionLinenumberEnd: 718
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc3.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - primeHints
    - auto::dfe::addZone
    - DNSName::toString
    - BOOST_CHECK_THROW
    - std::unique_ptr::beginResolve
    - isRootServer
    - setState
    - QType
    - addRecordToLW
    - auto::dfe::clearZones
    - std::shared_ptr::addNSTrigger
    - std::unique_ptr::setAsyncCallback
    - initSR
    - std::move
    - std::shared_ptr::setName
    - getCopy
    - ComboAddress::toString
    - std::make_shared<DNSFilterEngine::Zone>
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_nameserver_name_rpz)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:723,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:725,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:731,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:732,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:733,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:734,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:734,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:735,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:735,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:740,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:741,1
    - Dst: std::make_shared<DNSFilterEngine::Zone>
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:750,1
    - Dst: std::shared_ptr::setName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:751,1
    - Dst: std::shared_ptr::addNSIPTrigger
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:752,1
    - Dst: Netmask
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:752,1
    - Dst: DNSFilterEngine::Policy
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:752,1
    - Dst: std::shared_ptr::addNSTrigger
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:753,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:753,1
    - Dst: getCopy
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:754,1
    - Dst: auto::dfe::clearZones
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:755,1
    - Dst: auto::dfe::addZone
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:756,1
    - Dst: setState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:757,1
    - Dst: std::unique_ptr::setWantsRPZ
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:760,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:763,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:763,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:764,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:765,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:765,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 27
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 766
      start: 720
    functionDepth: 1
    functionLinenumber: 720
    functionLinenumberEnd: 766
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc3.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - primeHints
    - auto::dfe::addZone
    - DNSName::toString
    - std::unique_ptr::beginResolve
    - isRootServer
    - setState
    - QType
    - addRecordToLW
    - auto::dfe::clearZones
    - std::shared_ptr::addNSTrigger
    - Netmask
    - std::unique_ptr::setAsyncCallback
    - std::shared_ptr::addNSIPTrigger
    - initSR
    - std::move
    - std::shared_ptr::setName
    - std::unique_ptr::setWantsRPZ
    - DNSFilterEngine::Policy
    - BOOST_CHECK_EQUAL
    - getCopy
    - ComboAddress::toString
    - std::make_shared<DNSFilterEngine::Zone>
    - vector::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_nameserver_name_rpz_disabled)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:771,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:773,1
    - Dst: SyncRes::AuthDomain::d_servers::push_back
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:781,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:786,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:789,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:791,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:792,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:799,1
    - Dst: std::unique_ptr::setCacheOnly
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:801,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:804,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:804,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:805,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:806,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:806,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:807,1
    - Dst: std::unique_ptr::setCacheOnly
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:810,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:812,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:813,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:813,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:814,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:815,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:815,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:816,1
    - Dst: std::unique_ptr::setCacheOnly
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:819,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:821,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:822,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:822,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:823,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:824,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:824,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:825,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 33
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 826
      start: 768
    functionDepth: 1
    functionLinenumber: 768
    functionLinenumberEnd: 826
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc3.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - std::unique_ptr::setAsyncCallback
    - SyncRes::AuthDomain::d_servers::push_back
    - primeHints
    - QType
    - addRecordToLW
    - BOOST_CHECK_EQUAL
    - initSR
    - std::unique_ptr::beginResolve
    - std::unique_ptr::setCacheOnly
    - vector::size
    - vector::clear
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_forward_zone_nord)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:831,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:833,1
    - Dst: SyncRes::AuthDomain::d_servers::push_back
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:842,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:845,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:849,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:852,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:853,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:861,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:861,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:862,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:863,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:863,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:864,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:871,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:872,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:872,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:873,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:874,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:874,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:875,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 24
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 876
      start: 828
    functionDepth: 1
    functionLinenumber: 828
    functionLinenumberEnd: 876
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc3.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - std::unique_ptr::setAsyncCallback
    - SyncRes::AuthDomain::d_servers::push_back
    - primeHints
    - QType
    - addRecordToLW
    - BOOST_CHECK_EQUAL
    - initSR
    - std::unique_ptr::beginResolve
    - vector::size
    - vector::clear
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_forward_zone_rd)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:881,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:883,1
    - Dst: SyncRes::AuthDomain::d_servers::push_back
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:891,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:896,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:899,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:901,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:902,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:909,1
    - Dst: std::unique_ptr::setCacheOnly
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:911,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:914,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:914,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:915,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:916,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:916,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:917,1
    - Dst: std::unique_ptr::setCacheOnly
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:920,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:922,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:923,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:923,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:924,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:925,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:925,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:926,1
    - Dst: std::unique_ptr::setCacheOnly
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:929,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:931,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:932,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:932,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:933,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:934,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:934,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:935,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 33
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 936
      start: 878
    functionDepth: 1
    functionLinenumber: 878
    functionLinenumberEnd: 936
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc3.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - std::unique_ptr::setAsyncCallback
    - SyncRes::AuthDomain::d_servers::push_back
    - primeHints
    - QType
    - addRecordToLW
    - BOOST_CHECK_EQUAL
    - initSR
    - std::unique_ptr::beginResolve
    - std::unique_ptr::setCacheOnly
    - vector::size
    - vector::clear
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_forward_zone_recurse_nord)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:941,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:943,1
    - Dst: SyncRes::AuthDomain::d_servers::push_back
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:951,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:954,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:956,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:958,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:959,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:967,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:967,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:968,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:969,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:969,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 970
      start: 938
    functionDepth: 1
    functionLinenumber: 938
    functionLinenumberEnd: 970
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc3.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - std::unique_ptr::setAsyncCallback
    - SyncRes::AuthDomain::d_servers::push_back
    - primeHints
    - QType
    - addRecordToLW
    - BOOST_CHECK_EQUAL
    - initSR
    - std::unique_ptr::beginResolve
    - vector::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_forward_zone_recurse_rd)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:975,1
    - Dst: setDNSSECValidation
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:977,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:979,1
    - Dst: getCopy
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:986,1
    - Dst: auto::dsAnchors::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:987,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:988,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:989,1
    - Dst: setState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:990,1
    - Dst: SyncRes::AuthDomain::d_servers::push_back
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:997,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1000,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1003,1
    - Dst: genericDSAndDNSKEYHandler
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1010,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1010,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1015,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1016,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1016,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1017,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1018,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1026,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1026,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1027,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1028,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1028,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1029,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1029,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1030,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1033,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1034,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1034,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1035,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1036,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1036,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1037,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1037,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1038,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 39
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1039
      start: 972
    functionDepth: 1
    functionLinenumber: 972
    functionLinenumberEnd: 1039
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc3.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - genericDSAndDNSKEYHandler
    - primeHints
    - setDNSSECValidation
    - DNSName::toString
    - std::unique_ptr::beginResolve
    - setState
    - QType
    - generateKeyMaterial
    - addRecordToLW
    - auto::dsAnchors::clear
    - addRRSIG
    - vector::clear
    - BOOST_REQUIRE_EQUAL
    - std::unique_ptr::setAsyncCallback
    - SyncRes::AuthDomain::d_servers::push_back
    - DNSName
    - initSR
    - std::unique_ptr::getValidationState
    - BOOST_CHECK_EQUAL
    - getCopy
    - vector::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_forward_zone_recurse_rd_dnssec)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1044,1
    - Dst: setDNSSECValidation
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1046,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1048,1
    - Dst: getCopy
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1056,1
    - Dst: auto::dsAnchors::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1057,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1058,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1059,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1059,1
    - Dst: setState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1060,1
    - Dst: SyncRes::AuthDomain::d_servers::push_back
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1068,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1069,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1071,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1074,1
    - Dst: isPartOf
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1080,1
    - Dst: genericDSAndDNSKEYHandler
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1081,1
    - Dst: genericDSAndDNSKEYHandler
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1083,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1086,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1087,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1088,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1089,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1090,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1099,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1100,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1101,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1107,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1108,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1109,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1118,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1118,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1119,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1120,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1120,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1121,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1121,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1122,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1123,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1126,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1127,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1127,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1128,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1129,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1129,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1130,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1130,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1131,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1132,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1135,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1136,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1136,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1137,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1138,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1138,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1139,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1139,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1140,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1141,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 65
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1142
      start: 1041
    functionDepth: 1
    functionLinenumber: 1041
    functionLinenumberEnd: 1142
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc3.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - genericDSAndDNSKEYHandler
    - primeHints
    - setDNSSECValidation
    - std::unique_ptr::beginResolve
    - isRootServer
    - setState
    - QType
    - generateKeyMaterial
    - addRecordToLW
    - auto::dsAnchors::clear
    - addRRSIG
    - vector::clear
    - BOOST_REQUIRE_EQUAL
    - std::unique_ptr::setAsyncCallback
    - isPartOf
    - SyncRes::AuthDomain::d_servers::push_back
    - DNSName
    - initSR
    - std::unique_ptr::getValidationState
    - BOOST_CHECK_EQUAL
    - getCopy
    - vector::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_forward_zone_recurse_nord_dnssec)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1147,1
    - Dst: setDNSSECValidation
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1149,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1151,1
    - Dst: getCopy
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1158,1
    - Dst: auto::dsAnchors::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1159,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1160,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1161,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1162,1
    - Dst: setState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1163,1
    - Dst: SyncRes::AuthDomain::d_servers::push_back
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1170,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1173,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1176,1
    - Dst: genericDSAndDNSKEYHandler
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1183,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1183,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1188,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1189,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1189,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1190,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1191,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1200,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1200,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1201,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1202,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1202,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1203,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1203,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1204,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1207,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1208,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1208,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1209,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1210,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1210,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1211,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1211,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1212,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 40
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1213
      start: 1144
    functionDepth: 1
    functionLinenumber: 1144
    functionLinenumberEnd: 1213
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc3.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - genericDSAndDNSKEYHandler
    - primeHints
    - setDNSSECValidation
    - DNSName::toString
    - std::unique_ptr::beginResolve
    - setState
    - QType
    - generateKeyMaterial
    - addRecordToLW
    - auto::dsAnchors::clear
    - addRRSIG
    - vector::clear
    - BOOST_REQUIRE_EQUAL
    - std::unique_ptr::setAsyncCallback
    - SyncRes::AuthDomain::d_servers::push_back
    - DNSName
    - initSR
    - std::unique_ptr::getValidationState
    - BOOST_CHECK_EQUAL
    - getCopy
    - vector::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_forward_zone_recurse_rd_dnssec_bogus)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1218,1
    - Dst: setDNSSECValidation
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1220,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1222,1
    - Dst: getCopy
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1226,1
    - Dst: auto::dsAnchors::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1227,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1228,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1228,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1229,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1229,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1230,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1230,1
    - Dst: setState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1231,1
    - Dst: SyncRes::AuthDomain::d_servers::push_back
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1236,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1241,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1244,1
    - Dst: genericDSAndDNSKEYHandler
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1251,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1254,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1259,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1259,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1260,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1261,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1261,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1262,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1262,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1264,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1267,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1268,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1268,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1269,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1270,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1270,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1271,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1271,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1273,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 34
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1274
      start: 1215
    functionDepth: 1
    functionLinenumber: 1215
    functionLinenumberEnd: 1274
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc3.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - genericDSAndDNSKEYHandler
    - primeHints
    - setDNSSECValidation
    - std::unique_ptr::beginResolve
    - setState
    - QType
    - generateKeyMaterial
    - auto::dsAnchors::clear
    - vector::clear
    - BOOST_REQUIRE_EQUAL
    - std::unique_ptr::setAsyncCallback
    - SyncRes::AuthDomain::d_servers::push_back
    - DNSName
    - initSR
    - std::unique_ptr::getValidationState
    - BOOST_CHECK_EQUAL
    - getCopy
    - vector::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_forward_zone_recurse_rd_dnssec_nodata_bogus)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1279,1
    - Dst: setDNSSECValidation
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1281,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1283,1
    - Dst: getCopy
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1290,1
    - Dst: auto::dsAnchors::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1291,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1292,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1293,1
    - Dst: setState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1294,1
    - Dst: SyncRes::AuthDomain::d_servers::push_back
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1301,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1304,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1307,1
    - Dst: genericDSAndDNSKEYHandler
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1314,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1314,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1319,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1320,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1320,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1321,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1323,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1323,1
    - Dst: addNSECRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1325,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1325,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1325,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1326,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1334,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1334,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1335,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1336,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1336,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1337,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1337,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1338,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1341,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1342,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1342,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1343,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1344,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1344,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1345,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1345,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1346,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1346,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1347,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 42
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1348
      start: 1276
    functionDepth: 1
    functionLinenumber: 1276
    functionLinenumberEnd: 1348
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc3.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - genericDSAndDNSKEYHandler
    - primeHints
    - setDNSSECValidation
    - DNSName::toString
    - std::unique_ptr::beginResolve
    - setState
    - QType
    - generateKeyMaterial
    - addRecordToLW
    - auto::dsAnchors::clear
    - addRRSIG
    - addNSECRecordToLW
    - empty
    - vector::clear
    - BOOST_REQUIRE_EQUAL
    - std::unique_ptr::setAsyncCallback
    - SyncRes::AuthDomain::d_servers::push_back
    - DNSName
    - initSR
    - std::unique_ptr::getValidationState
    - BOOST_CHECK
    - BOOST_CHECK_EQUAL
    - getCopy
    - vector::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_forward_zone_recurse_rd_dnssec_cname_wildcard_expanded)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1353,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1355,1
    - Dst: DNSRecord::DNSRecord
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1363,1
    - Dst: DNSRecord::setContent
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1369,1
    - Dst: std::make_shared<ARecordContent>
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1369,1
    - Dst: SyncRes::AuthDomain::d_records::insert
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1370,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1374,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1380,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1380,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1381,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1382,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1382,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1383,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1384,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1385,1
    - Dst: std::unique_ptr::wasOutOfBand
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1385,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1386,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1386,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1389,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1390,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1390,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1391,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1392,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1392,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1393,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1394,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1395,1
    - Dst: std::unique_ptr::wasOutOfBand
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1395,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1396,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1396,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1399,1
    - Dst: std::unique_ptr::setDNSSECValidationRequested
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1400,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1401,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1401,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1402,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1403,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1403,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1404,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1405,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1406,1
    - Dst: std::unique_ptr::wasOutOfBand
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1406,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1407,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1407,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 37
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1408
      start: 1350
    functionDepth: 2
    functionLinenumber: 1350
    functionLinenumberEnd: 1408
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc3.cc
    functionUses: 0
    functionsReached:
    - std::unique_ptr::wasOutOfBand
    - std::unique_ptr::setAsyncCallback
    - DNSRecord::DNSRecord
    - SyncRes::AuthDomain::d_records::insert
    - BOOST_CHECK
    - primeHints
    - QType
    - BOOST_CHECK_EQUAL
    - initSR
    - std::unique_ptr::getValidationState
    - std::make_shared<ARecordContent>
    - DNSRecord::setContent
    - std::unique_ptr::beginResolve
    - std::unique_ptr::setDNSSECValidationRequested
    - vector::size
    - vector::clear
    - BOOST_REQUIRE_EQUAL
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_auth_zone_oob)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1413,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1415,1
    - Dst: DNSRecord::DNSRecord
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1424,1
    - Dst: DNSRecord::setContent
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1430,1
    - Dst: std::make_shared<CNAMERecordContent>
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1430,1
    - Dst: SyncRes::AuthDomain::d_records::insert
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1431,1
    - Dst: DNSRecord::setContent
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1437,1
    - Dst: std::make_shared<ARecordContent>
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1437,1
    - Dst: SyncRes::AuthDomain::d_records::insert
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1438,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1442,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1448,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1448,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1449,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1450,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1450,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1451,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1452,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1453,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1454,1
    - Dst: std::unique_ptr::wasOutOfBand
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1454,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1455,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1455,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1458,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1459,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1459,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1460,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1461,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1461,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1462,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1463,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1464,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1465,1
    - Dst: std::unique_ptr::wasOutOfBand
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1465,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1466,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1466,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1469,1
    - Dst: std::unique_ptr::setDNSSECValidationRequested
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1470,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1471,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1471,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1472,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1473,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1473,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1474,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1475,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1476,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1477,1
    - Dst: std::unique_ptr::wasOutOfBand
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1477,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1478,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1478,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 46
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1479
      start: 1410
    functionDepth: 2
    functionLinenumber: 1410
    functionLinenumberEnd: 1479
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc3.cc
    functionUses: 0
    functionsReached:
    - std::unique_ptr::wasOutOfBand
    - std::unique_ptr::setAsyncCallback
    - DNSRecord::DNSRecord
    - SyncRes::AuthDomain::d_records::insert
    - BOOST_CHECK
    - primeHints
    - QType
    - std::make_shared<CNAMERecordContent>
    - BOOST_CHECK_EQUAL
    - initSR
    - std::unique_ptr::getValidationState
    - DNSRecord::setContent
    - std::make_shared<ARecordContent>
    - std::unique_ptr::beginResolve
    - std::unique_ptr::setDNSSECValidationRequested
    - vector::size
    - vector::clear
    - BOOST_REQUIRE_EQUAL
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_auth_zone_oob_cname)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1484,1
    - Dst: std::unique_ptr::setQNameMinimization
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1486,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1487,1
    - Dst: DNSRecord::DNSRecord
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1497,1
    - Dst: DNSRecord::setContent
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1502,1
    - Dst: std::make_shared<ARecordContent>
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1502,1
    - Dst: SyncRes::AuthDomain::d_records::insert
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1503,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1507,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1509,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1509,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1509,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1510,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1511,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1512,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1516,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1517,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1517,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1521,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1522,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1522,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1530,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1530,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1531,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1532,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1532,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1533,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1534,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1535,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1536,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1536,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1539,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1540,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1540,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1541,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1542,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1542,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1543,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1544,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1545,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1546,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1546,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 45
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1547
      start: 1481
    functionDepth: 2
    functionLinenumber: 1481
    functionLinenumberEnd: 1547
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc3.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - DNSRecord::DNSRecord
    - primeHints
    - DNSName::toString
    - DNSRecord::setContent
    - std::unique_ptr::beginResolve
    - isRootServer
    - SyncRes::AuthDomain::d_records::insert
    - QType
    - addRecordToLW
    - std::make_shared<ARecordContent>
    - vector::size
    - vector::clear
    - BOOST_REQUIRE_EQUAL
    - std::unique_ptr::setAsyncCallback
    - DNSName
    - initSR
    - std::unique_ptr::getValidationState
    - std::unique_ptr::setQNameMinimization
    - BOOST_CHECK_EQUAL
    - BOOST_CHECK
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_auth_cname_to_oob_target)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1552,1
    - Dst: std::unique_ptr::setQNameMinimization
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1554,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1555,1
    - Dst: DNSRecord::DNSRecord
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1565,1
    - Dst: DNSRecord::setContent
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1570,1
    - Dst: std::make_shared<ARecordContent>
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1570,1
    - Dst: SyncRes::AuthDomain::d_records::insert
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1571,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1575,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1576,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1576,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1576,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1577,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1578,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1579,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1583,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1584,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1584,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1588,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1589,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1589,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1597,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1597,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1598,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1599,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1599,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1600,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1601,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1602,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1602,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1605,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1606,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1606,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1607,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1608,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1608,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1609,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1610,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1611,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1611,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 42
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1612
      start: 1549
    functionDepth: 2
    functionLinenumber: 1549
    functionLinenumberEnd: 1612
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc3.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - DNSRecord::DNSRecord
    - primeHints
    - DNSName::toString
    - DNSRecord::setContent
    - std::unique_ptr::beginResolve
    - isRootServer
    - SyncRes::AuthDomain::d_records::insert
    - QType
    - addRecordToLW
    - std::make_shared<ARecordContent>
    - vector::size
    - vector::clear
    - BOOST_REQUIRE_EQUAL
    - std::unique_ptr::setAsyncCallback
    - DNSName
    - initSR
    - std::unique_ptr::getValidationState
    - std::unique_ptr::setQNameMinimization
    - BOOST_CHECK_EQUAL
    - BOOST_CHECK
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_auth_cname_to_non_existent_oob_target)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1617,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1619,1
    - Dst: DNSRecord::DNSRecord
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1627,1
    - Dst: DNSRecord::setContent
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1632,1
    - Dst: std::make_shared<SOARecordContent>
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1632,1
    - Dst: SyncRes::AuthDomain::d_records::insert
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1633,1
    - Dst: DNSRecord::setContent
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1639,1
    - Dst: std::make_shared<ARecordContent>
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1639,1
    - Dst: SyncRes::AuthDomain::d_records::insert
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1640,1
    - Dst: std::make_shared<SyncRes::domainmap_t>
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1642,1
    - Dst: SyncRes::setDomainMap
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1644,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1646,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1648,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1649,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1654,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1654,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1655,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1656,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1656,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1657,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1658,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1658,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1658,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1659,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 29
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1660
      start: 1614
    functionDepth: 2
    functionLinenumber: 1614
    functionLinenumberEnd: 1660
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc3.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - DNSRecord::DNSRecord
    - primeHints
    - std::make_shared<SOARecordContent>
    - DNSRecord::setContent
    - std::unique_ptr::beginResolve
    - SyncRes::AuthDomain::d_records::insert
    - QType
    - addRecordToLW
    - std::make_shared<ARecordContent>
    - vector::size
    - std::unique_ptr::setAsyncCallback
    - initSR
    - getRR
    - BOOST_CHECK_EQUAL
    - SyncRes::setDomainMap
    - std::make_shared<SyncRes::domainmap_t>
    - BOOST_CHECK
    - ComboAddress::toString
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_auth_zone)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1665,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1667,1
    - Dst: DNSRecord::DNSRecord
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1676,1
    - Dst: DNSRecord::setContent
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1681,1
    - Dst: std::make_shared<SOARecordContent>
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1681,1
    - Dst: SyncRes::AuthDomain::d_records::insert
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1682,1
    - Dst: DNSRecord::setContent
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1688,1
    - Dst: std::make_shared<ARecordContent>
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1688,1
    - Dst: SyncRes::AuthDomain::d_records::insert
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1689,1
    - Dst: std::make_shared<SyncRes::domainmap_t>
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1691,1
    - Dst: SyncRes::setDomainMap
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1693,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1695,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1699,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1700,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1700,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1708,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1708,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1709,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1710,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1710,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1711,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1712,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1712,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1712,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1713,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1714,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1714,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1714,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1715,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 34
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1716
      start: 1662
    functionDepth: 2
    functionLinenumber: 1662
    functionLinenumberEnd: 1716
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc3.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - DNSRecord::DNSRecord
    - primeHints
    - std::make_shared<SOARecordContent>
    - DNSName::toString
    - DNSRecord::setContent
    - std::unique_ptr::beginResolve
    - SyncRes::AuthDomain::d_records::insert
    - QType
    - addRecordToLW
    - std::make_shared<ARecordContent>
    - vector::size
    - std::unique_ptr::setAsyncCallback
    - initSR
    - getRR
    - BOOST_CHECK_EQUAL
    - SyncRes::setDomainMap
    - std::make_shared<SyncRes::domainmap_t>
    - BOOST_CHECK
    - ComboAddress::toString
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_auth_zone_cname_lead_to_oob)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1721,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1723,1
    - Dst: DNSRecord::DNSRecord
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1732,1
    - Dst: DNSRecord::setContent
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1737,1
    - Dst: std::make_shared<SOARecordContent>
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1737,1
    - Dst: SyncRes::AuthDomain::d_records::insert
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1738,1
    - Dst: DNSRecord::setContent
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1744,1
    - Dst: std::make_shared<CNAMERecordContent>
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1744,1
    - Dst: SyncRes::AuthDomain::d_records::insert
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1745,1
    - Dst: std::make_shared<SyncRes::domainmap_t>
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1747,1
    - Dst: SyncRes::setDomainMap
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1749,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1751,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1755,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1756,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1756,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1764,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1764,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1765,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1766,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1766,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1767,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1768,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1768,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1768,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1769,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1770,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1770,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1770,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1771,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 34
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1772
      start: 1718
    functionDepth: 2
    functionLinenumber: 1718
    functionLinenumberEnd: 1772
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc3.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - DNSRecord::DNSRecord
    - primeHints
    - std::make_shared<CNAMERecordContent>
    - std::make_shared<SOARecordContent>
    - DNSName::toString
    - DNSRecord::setContent
    - std::unique_ptr::beginResolve
    - SyncRes::AuthDomain::d_records::insert
    - QType
    - addRecordToLW
    - vector::size
    - std::unique_ptr::setAsyncCallback
    - initSR
    - getRR
    - BOOST_CHECK_EQUAL
    - SyncRes::setDomainMap
    - std::make_shared<SyncRes::domainmap_t>
    - BOOST_CHECK
    - ComboAddress::toString
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_auth_zone_oob_lead_to_outgoing_queryb)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1778,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1780,1
    - Dst: DNSRecord::DNSRecord
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1788,1
    - Dst: DNSRecord::setContent
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1793,1
    - Dst: std::make_shared<SOARecordContent>
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1793,1
    - Dst: SyncRes::AuthDomain::d_records::insert
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1794,1
    - Dst: DNSRecord::setContent
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1800,1
    - Dst: std::make_shared<ARecordContent>
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1800,1
    - Dst: SyncRes::AuthDomain::d_records::insert
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1801,1
    - Dst: std::make_shared<SyncRes::domainmap_t>
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1803,1
    - Dst: SyncRes::setDomainMap
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1805,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1807,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1810,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1811,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1815,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1816,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1822,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1822,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1823,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1824,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1824,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1825,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1826,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1826,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1826,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1827,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1829,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1830,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1830,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1831,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1832,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1832,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1833,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1834,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1836,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1837,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1837,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1838,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1839,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1839,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1840,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1841,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1841,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1841,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc3.cc:1842,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 48
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1843
      start: 1774
    functionDepth: 2
    functionLinenumber: 1774
    functionLinenumberEnd: 1843
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc3.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - DNSRecord::DNSRecord
    - primeHints
    - std::make_shared<SOARecordContent>
    - DNSRecord::setContent
    - std::unique_ptr::beginResolve
    - SyncRes::AuthDomain::d_records::insert
    - QType
    - addRecordToLW
    - std::make_shared<ARecordContent>
    - BOOST_REQUIRE
    - vector::clear
    - BOOST_REQUIRE_EQUAL
    - std::unique_ptr::setAsyncCallback
    - initSR
    - getRR
    - BOOST_CHECK
    - BOOST_CHECK_EQUAL
    - SyncRes::setDomainMap
    - std::make_shared<SyncRes::domainmap_t>
    - vector::size
    - ComboAddress::toString
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_auth_zone_ds)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - s
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 28
      start: 27
    functionDepth: 0
    functionLinenumber: 27
    functionLinenumberEnd: 28
    functionName: BINARY
    functionSourceFile: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BINARY(s)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 11
    argNames:
    - (
    - type
    - ','
    - inval
    - ','
    - zoneval
    - ','
    - lineval
    - ','
    - broken
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 36
      start: 35
    functionDepth: 0
    functionLinenumber: 35
    functionLinenumberEnd: 36
    functionName: _CASE_L
    functionSourceFile: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: _CASE_L(type, inval, zoneval, lineval, broken)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - type
    - ','
    - inval
    - ','
    - zoneval
    - ','
    - lineval
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 36
    functionDepth: 0
    functionLinenumber: 36
    functionLinenumberEnd: 37
    functionName: CASE_L
    functionSourceFile: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CASE_L(type, inval, zoneval, lineval)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - type
    - ','
    - zoneval
    - ','
    - lineval
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 37
    functionDepth: 0
    functionLinenumber: 37
    functionLinenumberEnd: 38
    functionName: CASE_S
    functionSourceFile: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CASE_S(type, zoneval, lineval)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - type
    - ','
    - inval
    - ','
    - zoneval
    - ','
    - lineval
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 39
      start: 38
    functionDepth: 0
    functionLinenumber: 38
    functionLinenumberEnd: 39
    functionName: BROKEN_CASE_L
    functionSourceFile: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BROKEN_CASE_L(type, inval, zoneval, lineval)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - type
    - ','
    - zoneval
    - ','
    - lineval
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 39
    functionDepth: 0
    functionLinenumber: 39
    functionLinenumberEnd: 40
    functionName: BROKEN_CASE_S
    functionSourceFile: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BROKEN_CASE_S(type, zoneval, lineval)
  - 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: 43
      start: 42
    functionDepth: 0
    functionLinenumber: 42
    functionLinenumberEnd: 43
    functionName: REC_CHECK_EQUAL
    functionSourceFile: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: REC_CHECK_EQUAL(a,b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - cond
    - ','
    - msg
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 44
    functionName: REC_CHECK_MESSAGE
    functionSourceFile: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: REC_CHECK_MESSAGE(cond,msg)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - msg
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 44
    functionDepth: 0
    functionLinenumber: 44
    functionLinenumberEnd: 45
    functionName: REC_FAIL_XSUCCESS
    functionSourceFile: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: REC_FAIL_XSUCCESS(msg)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: boost::assign::list_of
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:56,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:57,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:59,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:61,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:63,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:65,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:67,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:69,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:71,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:73,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:75,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:78,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:80,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:83,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:85,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:86,1
    - Dst: CASE_L
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:87,1
    - Dst: CASE_L
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:88,1
    - Dst: CASE_L
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:89,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:91,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:93,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:95,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:97,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:98,1
    - Dst: CASE_L
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:99,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:100,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:101,1
    - Dst: CASE_L
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:102,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:104,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:106,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:108,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:110,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:111,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:112,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:113,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:114,1
    - Dst: CASE_L
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:115,1
    - Dst: CASE_L
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:116,1
    - Dst: CASE_L
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:117,1
    - Dst: CASE_L
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:118,1
    - Dst: CASE_L
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:119,1
    - Dst: CASE_L
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:120,1
    - Dst: CASE_L
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:122,1
    - Dst: CASE_L
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:123,1
    - Dst: CASE_L
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:124,1
    - Dst: CASE_L
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:125,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:126,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:128,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:130,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:132,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:133,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:134,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:137,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:138,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:139,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:140,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:141,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:142,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:143,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:144,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:145,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:146,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:147,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:148,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:149,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:150,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:151,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:152,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:153,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:154,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:155,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:156,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:157,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:158,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:159,1
    - Dst: CASE_L
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:160,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:161,1
    - Dst: CASE_L
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:162,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:164,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:165,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:166,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:167,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:168,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:169,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:170,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:172,1
    - Dst: CASE_L
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:174,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:175,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:176,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:178,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:179,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:180,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:182,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:183,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:185,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:186,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:187,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:188,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:189,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:190,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:191,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:192,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:194,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:195,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:197,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:198,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:199,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:200,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:201,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:202,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:203,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:204,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:205,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:206,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:208,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:210,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:213,1
    - Dst: CASE_L
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:214,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:217,1
    - Dst: CASE_L
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:218,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:221,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:222,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:223,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:224,1
    - Dst: BROKEN_CASE_S
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:225,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:226,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:227,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:228,1
    - Dst: CASE_L
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:229,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:230,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:232,1
    - Dst: CASE_L
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:233,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:234,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:235,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:237,1
    - Dst: CASE_L
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:238,1
    - Dst: CASE_L
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:241,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:243,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:244,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:246,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:250,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:252,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:253,1
    - Dst: CASE_L
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:254,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:255,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:256,1
    - Dst: CASE_L
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:257,1
    - Dst: CASE_L
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:258,1
    - Dst: CASE_L
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:259,1
    - Dst: CASE_L
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:260,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:263,1
    - Dst: CASE_L
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:264,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:265,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:266,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:267,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:269,1
    - Dst: CASE_L
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:270,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:271,1
    - Dst: CASE_L
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:272,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:274,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:276,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:277,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:278,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:279,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:280,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:282,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:283,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:284,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:285,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:286,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:287,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:288,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:289,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:290,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:291,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:292,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:293,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:294,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:295,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:296,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:297,1
    - Dst: CASE_S
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:298,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:305,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:306,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:307,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:308,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:309,1
    - Dst: QType::getCode
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:311,1
    - Dst: QType::getCode
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:312,1
    - Dst: QType::getCode
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:312,1
    - Dst: BOOST_CHECK_MESSAGE
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:312,1
    - Dst: find
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:312,1
    - Dst: QType::toString
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:312,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:312,1
    - Dst: QType::toString
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:312,1
    - Dst: BOOST_CHECK_MESSAGE
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:313,1
    - Dst: QType::getCode
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:313,1
    - Dst: QType::getCode
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:313,1
    - Dst: QType::getCode
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:314,1
    - Dst: BOOST_TEST_CHECKPOINT
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:316,1
    - Dst: QType::toString
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:316,1
    - Dst: BOOST_TEST_MESSAGE
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:317,1
    - Dst: QType::toString
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:317,1
    - Dst: QType::getCode
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:321,1
    - Dst: QType::getCode
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:321,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:324,1
    - Dst: QType::getCode
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:324,1
    - Dst: BOOST_CHECK_MESSAGE
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:325,1
    - Dst: QType::getCode
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:325,1
    - Dst: QType::getCode
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:329,1
    - Dst: REC_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:337,1
    - Dst: auto::getZoneRepresentation
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:337,1
    - Dst: REC_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:340,1
    - Dst: auto::getZoneRepresentation
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:340,1
    - Dst: auto::serialize
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:342,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:342,1
    - Dst: DNSRecordContent::deserialize
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:344,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:344,1
    - Dst: QType::getCode
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:344,1
    - Dst: BOOST_CHECK_MESSAGE
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:345,1
    - Dst: QType::getCode
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:345,1
    - Dst: REC_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:348,1
    - Dst: auto::getZoneRepresentation
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:348,1
    - Dst: makeHexDump
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:350,1
    - Dst: makeHexDump
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:351,1
    - Dst: REC_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:352,1
    - Dst: REC_CHECK_MESSAGE
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:354,1
    - Dst: QType::toString
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:354,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:354,1
    - Dst: REC_FAIL_XSUCCESS
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:357,1
    - Dst: QType::toString
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:357,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 42
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 359
      start: 46
    functionDepth: 0
    functionLinenumber: 46
    functionLinenumberEnd: 359
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc
    functionUses: 0
    functionsReached:
    - CASE_S
    - boost::assign::list_of
    - makeHexDump
    - find
    - BROKEN_CASE_S
    - DNSRecordContent::make
    - BOOST_TEST_CHECKPOINT
    - REC_CHECK_MESSAGE
    - BOOST_TEST_MESSAGE
    - REC_FAIL_XSUCCESS
    - REC_CHECK_EQUAL
    - QType::toString
    - DNSName
    - get
    - CASE_L
    - auto::serialize
    - what
    - end
    - BOOST_CHECK_MESSAGE
    - auto::getZoneRepresentation
    - QType::getCode
    - DNSRecordContent::deserialize
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_record_types)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 361
      start: 361
    functionDepth: 0
    functionLinenumber: 361
    functionLinenumberEnd: 361
    functionName: test_dnsrecords_cc_predicate
    functionSourceFile: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool test_dnsrecords_cc_predicate(std::exception const& /* ex */)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: boost::assign::list_of
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:376,1
    - Dst: ZONE_CASE
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:377,1
    - Dst: ZONE_CASE
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:378,1
    - Dst: ZONE_CASE
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:379,1
    - Dst: ZONE_CASE
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:380,1
    - Dst: ZONE_CASE
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:381,1
    - Dst: ZONE_CASE
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:382,1
    - Dst: ZONE_CASE
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:383,1
    - Dst: WIRE_CASE
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:384,1
    - Dst: ZONE_CASE
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:385,1
    - Dst: ZONE_CASE
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:386,1
    - Dst: ZONE_CASE
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:387,1
    - Dst: ZONE_CASE
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:388,1
    - Dst: WIRE_CASE
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:389,1
    - Dst: ZONE_CASE
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:391,1
    - Dst: ZONE_CASE
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:393,1
    - Dst: ZONE_CASE
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:395,1
    - Dst: ZONE_CASE
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:397,1
    - Dst: ZONE_CASE
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:398,1
    - Dst: ZONE_CASE
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:399,1
    - Dst: ZONE_CASE
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:400,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:407,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:408,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:409,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:410,1
    - Dst: QType::getCode
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:412,1
    - Dst: QType::getCode
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:413,1
    - Dst: BOOST_TEST_CHECKPOINT
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:415,1
    - Dst: QType::toString
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:415,1
    - Dst: BOOST_TEST_MESSAGE
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:416,1
    - Dst: QType::toString
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:416,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:419,1
    - Dst: QType::getCode
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:419,1
    - Dst: BOOST_WARN_MESSAGE
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:422,1
    - Dst: BOOST_WARN_EXCEPTION
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:428,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:430,1
    - Dst: QType::getCode
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:430,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:431,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:431,1
    - Dst: QType::getCode
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:431,1
    - Dst: auto::toPacket
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:432,1
    - Dst: REC_FAIL_XSUCCESS
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:436,1
    - Dst: QType::toString
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:436,1
    - Dst: BOOST_CHECK_EXCEPTION
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:438,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:440,1
    - Dst: QType::getCode
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:440,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:441,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:441,1
    - Dst: QType::getCode
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:441,1
    - Dst: auto::toPacket
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:442,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 27
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 447
      start: 364
    functionDepth: 0
    functionLinenumber: 364
    functionLinenumberEnd: 447
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc
    functionUses: 0
    functionsReached:
    - BOOST_TEST_MESSAGE
    - ZONE_CASE
    - BOOST_WARN_EXCEPTION
    - BOOST_CHECK_EXCEPTION
    - REC_FAIL_XSUCCESS
    - boost::assign::list_of
    - QType::toString
    - DNSName
    - get
    - BOOST_WARN_MESSAGE
    - QType::getCode
    - DNSRecordContent::make
    - auto::toPacket
    - WIRE_CASE
    - BOOST_TEST_CHECKPOINT
    - DNSPacketWriter::startRecord
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_record_types_bad_values)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - type
    - ','
    - input
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 372
      start: 371
    functionDepth: 0
    functionLinenumber: 371
    functionLinenumberEnd: 372
    functionName: ZONE_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ZONE_CASE(type, input)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - type
    - ','
    - input
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 373
      start: 372
    functionDepth: 0
    functionLinenumber: 372
    functionLinenumberEnd: 373
    functionName: WIRE_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: WIRE_CASE(type, input)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - type
    - ','
    - input
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 374
      start: 373
    functionDepth: 0
    functionLinenumber: 373
    functionLinenumberEnd: 374
    functionName: BROKEN_ZONE_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BROKEN_ZONE_CASE(type, input)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - type
    - ','
    - input
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 375
      start: 374
    functionDepth: 0
    functionLinenumber: 374
    functionLinenumberEnd: 375
    functionName: BROKEN_WIRE_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BROKEN_WIRE_CASE(type, input)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::string::begin
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:456,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:456,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:458,1
    - Dst: getEDNSOpts
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:458,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:461,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:464,1
    - Dst: EDNSOpts::d_options::size
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:464,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:465,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:466,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 467
      start: 450
    functionDepth: 0
    functionLinenumber: 450
    functionLinenumberEnd: 467
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc
    functionUses: 0
    functionsReached:
    - std::string::begin
    - getEDNSOpts
    - BOOST_CHECK_EQUAL
    - std::string::size
    - EDNSOpts::d_options::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_opt_record_in)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:473,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:474,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:474,1
    - Dst: DNSPacketWriter::xfrIP
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:475,1
    - Dst: htonl
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:475,1
    - Dst: vector::emplace_back
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:476,1
    - Dst: DNSPacketWriter::addOpt
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:477,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:478,1
    - Dst: htons
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:478,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:479,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:480,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:485,1
    - Dst: makeHexDump
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:485,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:485,1
    - Dst: vector::begin
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:485,1
    - Dst: vector::end
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:485,1
    - Dst: makeHexDump
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:485,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 486
      start: 469
    functionDepth: 1
    functionLinenumber: 469
    functionLinenumberEnd: 486
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc
    functionUses: 0
    functionsReached:
    - vector::begin
    - DNSPacketWriter::commit
    - htonl
    - DNSName
    - DNSPacketWriter::getHeader
    - DNSPacketWriter::addOpt
    - BOOST_CHECK_EQUAL
    - vector::end
    - vector::emplace_back
    - std::string
    - DNSPacketWriter::startRecord
    - DNSPacketWriter::xfrIP
    - makeHexDump
    - htons
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_opt_record_out)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:491,1
    - Dst: static_cast<QType::typeenum>
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:491,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:494,1
    - Dst: static_cast<QType::typeenum>
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:494,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:497,1
    - Dst: static_cast<QType::typeenum>
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:497,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:498,1
    - Dst: static_cast<QType::typeenum>
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:498,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:501,1
    - Dst: static_cast<QType::typeenum>
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:501,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:504,1
    - Dst: static_cast<QType::typeenum>
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:504,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:507,1
    - Dst: static_cast<QType::typeenum>
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:507,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:511,1
    - Dst: static_cast<QType::typeenum>
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:511,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:513,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:515,1
    - Dst: auto::getZoneRepresentation
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:515,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 521
      start: 489
    functionDepth: 0
    functionLinenumber: 489
    functionLinenumberEnd: 521
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc
    functionUses: 0
    functionsReached:
    - static_cast<QType::typeenum>
    - BOOST_CHECK_EQUAL
    - auto::getZoneRepresentation
    - DNSRecordContent::make
    - BOOST_CHECK
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_unknown_records_in)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:507,1
    - Dst: static_cast<QType::typeenum>
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:507,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:511,1
    - Dst: static_cast<QType::typeenum>
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:511,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:513,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:515,1
    - Dst: auto::getZoneRepresentation
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:515,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 520
      start: 507
    functionDepth: 0
    functionLinenumber: 507
    functionLinenumberEnd: 520
    functionName: BOOST_CHECK_THROW
    functionSourceFile: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc
    functionUses: 107
    functionsReached:
    - static_cast<QType::typeenum>
    - BOOST_CHECK_EQUAL
    - auto::getZoneRepresentation
    - DNSRecordContent::make
    - BOOST_CHECK
    linkageType: ''
    returnType: void
    signature: void BOOST_CHECK_THROW(auto wrongRDATASizeUnknown = DNSRecordContent::make(static_cast<QType::typeenum>(65534),
      QClass::IN, "\\# 2 AA"), MOADNSException)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:526,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 527
      start: 524
    functionDepth: 0
    functionLinenumber: 524
    functionLinenumberEnd: 527
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc
    functionUses: 0
    functionsReached:
    - DNSRecordContent::make
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_svcb_records_in)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:532,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:534,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:536,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:538,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 539
      start: 530
    functionDepth: 0
    functionLinenumber: 530
    functionLinenumberEnd: 539
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc
    functionUses: 0
    functionsReached:
    - DNSRecordContent::make
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_eui_records_in)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:544,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:546,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:549,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:550,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:551,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:551,1
    - Dst: auto::toPacket
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:552,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:553,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:555,1
    - Dst: vector::data
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:555,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:555,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 558
      start: 542
    functionDepth: 1
    functionLinenumber: 542
    functionLinenumberEnd: 558
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc
    functionUses: 0
    functionsReached:
    - DNSPacketWriter::commit
    - DNSPacketWriter::getHeader
    - DNSName
    - reinterpret_cast<const char*>
    - auto::toPacket
    - DNSRecordContent::make
    - vector::data
    - vector::size
    - DNSPacketWriter::startRecord
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_loc_records_in)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:564,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:567,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:568,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:569,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:569,1
    - Dst: auto::toPacket
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:570,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:571,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:573,1
    - Dst: vector::data
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:573,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:573,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:579,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:582,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:583,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:584,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:584,1
    - Dst: auto::toPacket
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:585,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:586,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:588,1
    - Dst: vector::data
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:588,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:588,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:594,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:597,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:598,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:599,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:599,1
    - Dst: auto::toPacket
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:600,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:601,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:603,1
    - Dst: vector::data
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:603,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:603,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:609,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:609,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 20
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 610
      start: 561
    functionDepth: 1
    functionLinenumber: 561
    functionLinenumberEnd: 610
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc
    functionUses: 0
    functionsReached:
    - DNSPacketWriter::commit
    - DNSPacketWriter::getHeader
    - DNSName
    - reinterpret_cast<const char*>
    - auto::toPacket
    - DNSRecordContent::make
    - BOOST_CHECK_THROW
    - vector::data
    - vector::size
    - DNSPacketWriter::startRecord
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_nsec_records_in)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:615,1
    - Dst: std::dynamic_pointer_cast<NSECRecordContent>
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:616,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:617,1
    - Dst: static_cast<QType::typeenum>
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:619,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:620,1
    - Dst: auto::isSet
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:620,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:622,1
    - Dst: auto::isSet
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:622,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:623,1
    - Dst: auto::numberOfTypesSet
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:623,1
    - Dst: std::make_shared<NSECRecordContent>
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:627,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:628,1
    - Dst: auto::numberOfTypesSet
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:628,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:629,1
    - Dst: auto::isSet
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:629,1
    - Dst: auto::set
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:632,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:634,1
    - Dst: auto::isSet
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:634,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:635,1
    - Dst: auto::numberOfTypesSet
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:635,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:637,1
    - Dst: auto::isSet
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:637,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 640
      start: 612
    functionDepth: 0
    functionLinenumber: 612
    functionLinenumberEnd: 640
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc
    functionUses: 0
    functionsReached:
    - std::dynamic_pointer_cast<NSECRecordContent>
    - auto::set
    - static_cast<QType::typeenum>
    - BOOST_CHECK_EQUAL
    - auto::isSet
    - DNSRecordContent::make
    - BOOST_REQUIRE
    - BOOST_CHECK
    - std::make_shared<NSECRecordContent>
    - auto::numberOfTypesSet
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_nsec_records_types)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:643,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:648,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:649,1
    - Dst: auto::toPacket
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:650,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:651,1
    - Dst: DNSName::wirelength
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:653,1
    - Dst: DNSName::wirelength
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:653,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:654,1
    - Dst: auto::at
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:657,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:659,1
    - Dst: vector::data
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:659,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:659,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 661
      start: 642
    functionDepth: 1
    functionLinenumber: 642
    functionLinenumberEnd: 661
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc
    functionUses: 0
    functionsReached:
    - DNSPacketWriter::commit
    - DNSPacketWriter::getHeader
    - DNSName
    - reinterpret_cast<const char*>
    - auto::toPacket
    - DNSRecordContent::make
    - vector::data
    - auto::at
    - vector::size
    - DNSPacketWriter::startRecord
    - DNSName::wirelength
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_nsec_invalid_bitmap_len)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:667,1
    - Dst: std::dynamic_pointer_cast<NSEC3RecordContent>
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:668,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:669,1
    - Dst: static_cast<QType::typeenum>
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:671,1
    - Dst: static_cast<QType::typeenum>
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:671,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:672,1
    - Dst: auto::isSet
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:672,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:674,1
    - Dst: auto::isSet
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:674,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:675,1
    - Dst: auto::numberOfTypesSet
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:675,1
    - Dst: auto::getZoneRepresentation
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:676,1
    - Dst: boost::to_lower
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:677,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:678,1
    - Dst: std::make_shared<NSEC3RecordContent>
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:683,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:684,1
    - Dst: auto::numberOfTypesSet
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:684,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:685,1
    - Dst: auto::isSet
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:685,1
    - Dst: auto::set
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:688,1
    - Dst: toLower
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:689,1
    - Dst: DNSRecordContent::NumberToType
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:689,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:691,1
    - Dst: auto::isSet
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:691,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:692,1
    - Dst: auto::numberOfTypesSet
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:692,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:694,1
    - Dst: auto::isSet
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:694,1
    - Dst: auto::getZoneRepresentation
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:696,1
    - Dst: boost::to_lower
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:697,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:698,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:707,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:711,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:712,1
    - Dst: auto::toPacket
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:713,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:714,1
    - Dst: DNSName::wirelength
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:716,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:718,1
    - Dst: fromBase32Hex
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:719,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:720,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:720,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:722,1
    - Dst: vector::data
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:722,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:722,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:723,1
    - Dst: MOADNSParser::d_answers::size
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:723,1
    - Dst: MOADNSParser::d_answers::at
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:724,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:725,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:726,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:727,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:728,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:729,1
    - Dst: auto::numberOfTypesSet
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:729,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:731,1
    - Dst: auto::isSet
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:731,1
    - Dst: auto::getZoneRepresentation
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:733,1
    - Dst: boost::to_lower
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:734,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:735,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 39
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 737
      start: 663
    functionDepth: 1
    functionLinenumber: 663
    functionLinenumberEnd: 737
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc
    functionUses: 0
    functionsReached:
    - auto::isSet
    - std::string::size
    - DNSName::wirelength
    - std::make_shared<NSEC3RecordContent>
    - std::dynamic_pointer_cast<NSEC3RecordContent>
    - auto::set
    - static_cast<QType::typeenum>
    - DNSPacketWriter::getHeader
    - boost::to_lower
    - DNSRecordContent::make
    - auto::toPacket
    - BOOST_REQUIRE
    - DNSRecordContent::NumberToType
    - vector::data
    - fromBase32Hex
    - vector::size
    - MOADNSParser::d_answers::at
    - DNSPacketWriter::startRecord
    - BOOST_REQUIRE_EQUAL
    - DNSPacketWriter::commit
    - toLower
    - reinterpret_cast<const char*>
    - auto::numberOfTypesSet
    - getRR
    - BOOST_CHECK_EQUAL
    - MOADNSParser::d_answers::size
    - auto::getZoneRepresentation
    - BOOST_CHECK
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_nsec3_records_types)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:741,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:742,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:743,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:744,1
    - Dst: auto::sizeEstimate
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:744,1
    - Dst: auto::sizeEstimate
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:744,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:746,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:747,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:748,1
    - Dst: auto::sizeEstimate
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:748,1
    - Dst: auto::sizeEstimate
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:748,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:749,1
    - Dst: auto::sizeEstimate
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:749,1
    - Dst: auto::sizeEstimate
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:749,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:751,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:752,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:753,1
    - Dst: auto::sizeEstimate
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:753,1
    - Dst: auto::sizeEstimate
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:753,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:754,1
    - Dst: auto::sizeEstimate
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:754,1
    - Dst: auto::sizeEstimate
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:754,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:756,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:757,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:758,1
    - Dst: auto::sizeEstimate
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:758,1
    - Dst: auto::sizeEstimate
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:758,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:759,1
    - Dst: auto::sizeEstimate
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:759,1
    - Dst: auto::sizeEstimate
      Src: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc:759,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 760
      start: 739
    functionDepth: 0
    functionLinenumber: 739
    functionLinenumberEnd: 760
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc
    functionUses: 0
    functionsReached:
    - auto::sizeEstimate
    - BOOST_CHECK
    - DNSRecordContent::make
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_size_estimate)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: load
      Src: /src/pdns/pdns/recursordist/recursor_cache.hh:122,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 120
    functionDepth: 0
    functionLinenumber: 120
    functionLinenumberEnd: 123
    functionName: MemRecursorCache::getCacheHits
    functionSourceFile: /src/pdns/pdns/recursordist/recursor_cache.hh
    functionUses: 0
    functionsReached:
    - load
    linkageType: ''
    returnType: auto
    signature: auto getCacheHits() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: load
      Src: /src/pdns/pdns/recursordist/recursor_cache.hh:126,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 127
      start: 124
    functionDepth: 0
    functionLinenumber: 124
    functionLinenumberEnd: 127
    functionName: MemRecursorCache::getCacheMisses
    functionSourceFile: /src/pdns/pdns/recursordist/recursor_cache.hh
    functionUses: 0
    functionsReached:
    - load
    linkageType: ''
    returnType: auto
    signature: auto getCacheMisses() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 132
      start: 129
    functionDepth: 0
    functionLinenumber: 129
    functionLinenumberEnd: 132
    functionName: MemRecursorCache::incCacheHits
    functionSourceFile: /src/pdns/pdns/recursordist/recursor_cache.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void incCacheHits()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 136
      start: 133
    functionDepth: 0
    functionLinenumber: 133
    functionLinenumberEnd: 136
    functionName: MemRecursorCache::incCacheMisses
    functionSourceFile: /src/pdns/pdns/recursordist/recursor_cache.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void incCacheMisses()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::get<2>
      Src: /src/pdns/pdns/recursordist/recursor_cache.hh:144,1
    - Dst: std::get<3>
      Src: /src/pdns/pdns/recursordist/recursor_cache.hh:145,1
    - Dst: std::get<0>
      Src: /src/pdns/pdns/recursordist/recursor_cache.hh:146,1
    - Dst: std::get<1>
      Src: /src/pdns/pdns/recursordist/recursor_cache.hh:147,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - ' key'
    - auth
    argTypes:
    - std::tuple<DNSName, QType, OptTag, Netmask>
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 150
      start: 143
    functionDepth: 0
    functionLinenumber: 143
    functionLinenumberEnd: 150
    functionName: MemRecursorCache::CacheEntry
    functionSourceFile: /src/pdns/pdns/recursordist/recursor_cache.hh
    functionUses: 1
    functionsReached:
    - std::get<0>
    - std::get<3>
    - std::get<1>
    - std::get<2>
    linkageType: ''
    returnType: void
    signature: void CacheEntry(const std::tuple<DNSName, QType, OptTag, Netmask>&
      key, bool auth)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<time_t>
      Src: /src/pdns/pdns/recursordist/recursor_cache.hh:158,1
    - Dst: std::min
      Src: /src/pdns/pdns/recursordist/recursor_cache.hh:158,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - now
    argTypes:
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 161
      start: 154
    functionDepth: 0
    functionLinenumber: 154
    functionLinenumberEnd: 161
    functionName: MemRecursorCache::isStale
    functionSourceFile: /src/pdns/pdns/recursordist/recursor_cache.hh
    functionUses: 0
    functionsReached:
    - std::min
    - static_cast<time_t>
    linkageType: ''
    returnType: bool
    signature: bool isStale(time_t now) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 2
    argCount: 2
    argNames:
    - now
    - serveStale
    argTypes:
    - time_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 167
      start: 163
    functionDepth: 0
    functionLinenumber: 163
    functionLinenumberEnd: 167
    functionName: MemRecursorCache::isEntryUsable
    functionSourceFile: /src/pdns/pdns/recursordist/recursor_cache.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool isEntryUsable(time_t now, bool serveStale) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/recursor_cache.hh:215,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - qname
    - qtype
    argTypes:
    - DNSName
    - QType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 217
      start: 214
    functionDepth: 0
    functionLinenumber: 214
    functionLinenumberEnd: 217
    functionName: MemRecursorCache::ECSIndexEntry::ECSIndexEntry
    functionSourceFile: /src/pdns/pdns/recursordist/recursor_cache.hh
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void ECSIndexEntry(DNSName qname, QType qtype)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lookup
      Src: /src/pdns/pdns/recursordist/recursor_cache.hh:221,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ' addr'
    argTypes:
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 227
      start: 219
    functionDepth: 0
    functionLinenumber: 219
    functionLinenumberEnd: 227
    functionName: MemRecursorCache::ECSIndexEntry::lookupBestMatch
    functionSourceFile: /src/pdns/pdns/recursordist/recursor_cache.hh
    functionUses: 0
    functionsReached:
    - lookup
    linkageType: ''
    returnType: Netmask
    signature: Netmask lookupBestMatch(const ComboAddress& addr) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: insert
      Src: /src/pdns/pdns/recursordist/recursor_cache.hh:231,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' netmask'
    argTypes:
    - Netmask
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 232
      start: 229
    functionDepth: 2
    functionLinenumber: 229
    functionLinenumberEnd: 232
    functionName: MemRecursorCache::ECSIndexEntry::addMask
    functionSourceFile: /src/pdns/pdns/recursordist/recursor_cache.hh
    functionUses: 0
    functionsReached:
    - insert
    linkageType: ''
    returnType: void
    signature: void addMask(const Netmask& netmask) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: erase
      Src: /src/pdns/pdns/recursordist/recursor_cache.hh:236,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' netmask'
    argTypes:
    - Netmask
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 237
      start: 234
    functionDepth: 0
    functionLinenumber: 234
    functionLinenumberEnd: 237
    functionName: MemRecursorCache::ECSIndexEntry::removeNetmask
    functionSourceFile: /src/pdns/pdns/recursordist/recursor_cache.hh
    functionUses: 0
    functionsReached:
    - erase
    linkageType: ''
    returnType: void
    signature: void removeNetmask(const Netmask& netmask) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/recursor_cache.hh:241,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 242
      start: 239
    functionDepth: 0
    functionLinenumber: 239
    functionLinenumberEnd: 242
    functionName: MemRecursorCache::ECSIndexEntry::isEmpty
    functionSourceFile: /src/pdns/pdns/recursordist/recursor_cache.hh
    functionUses: 0
    functionsReached:
    - empty
    linkageType: ''
    returnType: bool
    signature: bool isEmpty() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 302
      start: 302
    functionDepth: 0
    functionLinenumber: 302
    functionLinenumberEnd: 302
    functionName: MemRecursorCache::MapCombo
    functionSourceFile: /src/pdns/pdns/recursordist/recursor_cache.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void MapCombo()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 303
      start: 303
    functionDepth: 0
    functionLinenumber: 303
    functionLinenumberEnd: 303
    functionName: ~MapCombo()
    functionSourceFile: /src/pdns/pdns/recursordist/recursor_cache.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~MapCombo()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 304
      start: 304
    functionDepth: 0
    functionLinenumber: 304
    functionLinenumberEnd: 304
    functionName: MemRecursorCache::MapCombo
    functionSourceFile: /src/pdns/pdns/recursordist/recursor_cache.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void MapCombo(const MapCombo&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 305
      start: 305
    functionDepth: 0
    functionLinenumber: 305
    functionLinenumberEnd: 305
    functionName: '& operator=(const MapCombo&)'
    functionSourceFile: /src/pdns/pdns/recursordist/recursor_cache.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: MapCombo
    signature: MapCombo & operator=(const MapCombo&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 306
      start: 306
    functionDepth: 0
    functionLinenumber: 306
    functionLinenumberEnd: 306
    functionName: MemRecursorCache::MapCombo
    functionSourceFile: /src/pdns/pdns/recursordist/recursor_cache.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void MapCombo(MapCombo&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 307
      start: 307
    functionDepth: 0
    functionLinenumber: 307
    functionLinenumberEnd: 307
    functionName: '& operator=(MapCombo&&)'
    functionSourceFile: /src/pdns/pdns/recursordist/recursor_cache.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: MapCombo
    signature: MapCombo & operator=(MapCombo&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 323
      start: 320
    functionDepth: 0
    functionLinenumber: 320
    functionLinenumberEnd: 323
    functionName: MemRecursorCache::invalidate
    functionSourceFile: /src/pdns/pdns/recursordist/recursor_cache.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void invalidate()
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: d_netmask::empty
      Src: /src/pdns/pdns/recursordist/recursor_cache.hh:327,1
    - Dst: std::tie
      Src: /src/pdns/pdns/recursordist/recursor_cache.hh:331,1
    - Dst: find
      Src: /src/pdns/pdns/recursordist/recursor_cache.hh:332,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/recursor_cache.hh:333,1
    - Dst: auto::removeNetmask
      Src: /src/pdns/pdns/recursordist/recursor_cache.hh:334,1
    - Dst: auto::isEmpty
      Src: /src/pdns/pdns/recursordist/recursor_cache.hh:335,1
    - Dst: erase
      Src: /src/pdns/pdns/recursordist/recursor_cache.hh:336,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - ' entry'
    argTypes:
    - CacheEntry
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 339
      start: 325
    functionDepth: 0
    functionLinenumber: 325
    functionLinenumberEnd: 339
    functionName: MemRecursorCache::preRemoval
    functionSourceFile: /src/pdns/pdns/recursordist/recursor_cache.hh
    functionUses: 0
    functionsReached:
    - auto::removeNetmask
    - end
    - auto::isEmpty
    - d_netmask::empty
    - std::tie
    - erase
    - find
    linkageType: ''
    returnType: void
    signature: void preRemoval(const CacheEntry& entry)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: try_lock
      Src: /src/pdns/pdns/recursordist/recursor_cache.hh:344,1
    - Dst: auto::owns_lock
      Src: /src/pdns/pdns/recursordist/recursor_cache.hh:345,1
    - Dst: auto::lock
      Src: /src/pdns/pdns/recursordist/recursor_cache.hh:346,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 351
      start: 342
    functionDepth: 0
    functionLinenumber: 342
    functionLinenumberEnd: 351
    functionName: MemRecursorCache::lock
    functionSourceFile: /src/pdns/pdns/recursordist/recursor_cache.hh
    functionUses: 11
    functionsReached:
    - auto::owns_lock
    - try_lock
    - auto::lock
    linkageType: ''
    returnType: LockGuardedTryHolder<LockedContent>
    signature: LockGuardedTryHolder<LockedContent> lock()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: load
      Src: /src/pdns/pdns/recursordist/recursor_cache.hh:355,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 356
      start: 353
    functionDepth: 0
    functionLinenumber: 353
    functionLinenumberEnd: 356
    functionName: MemRecursorCache::getEntriesCount
    functionSourceFile: /src/pdns/pdns/recursordist/recursor_cache.hh
    functionUses: 1
    functionsReached:
    - load
    linkageType: ''
    returnType: auto
    signature: auto getEntriesCount() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 361
      start: 358
    functionDepth: 0
    functionLinenumber: 358
    functionLinenumberEnd: 361
    functionName: MemRecursorCache::incEntriesCount
    functionSourceFile: /src/pdns/pdns/recursordist/recursor_cache.hh
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void incEntriesCount()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 366
      start: 363
    functionDepth: 0
    functionLinenumber: 363
    functionLinenumberEnd: 366
    functionName: MemRecursorCache::decEntriesCount
    functionSourceFile: /src/pdns/pdns/recursordist/recursor_cache.hh
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void decEntriesCount()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 371
      start: 368
    functionDepth: 0
    functionLinenumber: 368
    functionLinenumberEnd: 371
    functionName: MemRecursorCache::clearEntriesCount
    functionSourceFile: /src/pdns/pdns/recursordist/recursor_cache.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void clearEntriesCount()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: at
      Src: /src/pdns/pdns/recursordist/recursor_cache.hh:381,1
    - Dst: hash
      Src: /src/pdns/pdns/recursordist/recursor_cache.hh:381,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/recursor_cache.hh:381,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' qname'
    argTypes:
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 382
      start: 379
    functionDepth: 2
    functionLinenumber: 379
    functionLinenumberEnd: 382
    functionName: '& getMap(const DNSName& qname)'
    functionSourceFile: /src/pdns/pdns/recursordist/recursor_cache.hh
    functionUses: 0
    functionsReached:
    - hash
    - at
    - size
    linkageType: ''
    returnType: MapCombo
    signature: MapCombo & getMap(const DNSName& qname)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: MemRecursorCache::resetStaticsForTests
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:21,1
    - Dst: MemRecursorCache::MemRecursorCache
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:22,1
    - Dst: DNSRecord::DNSRecord
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:31,1
    - Dst: DNSRecord::setContent
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:36,1
    - Dst: std::make_shared<AAAARecordContent>
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:36,1
    - Dst: static_cast<uint32_t>
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:37,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:40,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:42,1
    - Dst: MemRecursorCache::size
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:42,1
    - Dst: MemRecursorCache::replace
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:43,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:43,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:43,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:44,1
    - Dst: MemRecursorCache::size
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:44,1
    - Dst: BOOST_CHECK_GT
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:45,1
    - Dst: MemRecursorCache::bytes
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:45,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:46,1
    - Dst: MemRecursorCache::doWipeCache
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:46,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:46,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:47,1
    - Dst: MemRecursorCache::size
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:47,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:48,1
    - Dst: MemRecursorCache::bytes
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:48,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:53,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:53,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:53,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:54,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:54,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:54,1
    - Dst: MemRecursorCache::replace
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:56,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:56,1
    - Dst: MemRecursorCache::doWipeCache
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:57,1
    - Dst: BOOST_FAIL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:58,1
    - Dst: MemRecursorCache::replace
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:59,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:59,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:62,1
    - Dst: MemRecursorCache::size
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:62,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:66,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:66,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:66,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:67,1
    - Dst: MemRecursorCache::doWipeCache
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:67,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:70,1
    - Dst: MemRecursorCache::size
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:70,1
    - Dst: MemRecursorCache::get
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:78,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:78,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:78,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:78,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:78,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:80,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:80,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:80,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:81,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:81,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:81,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:81,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:84,1
    - Dst: MemRecursorCache::doWipeCache
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:86,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:86,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:87,1
    - Dst: MemRecursorCache::size
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:87,1
    - Dst: DNSRecord::DNSRecord
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:89,1
    - Dst: DNSRecord::setContent
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:94,1
    - Dst: std::make_shared<AAAARecordContent>
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:94,1
    - Dst: static_cast<uint32_t>
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:95,1
    - Dst: DNSRecord::DNSRecord
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:98,1
    - Dst: DNSRecord::setContent
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:103,1
    - Dst: std::make_shared<ARecordContent>
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:103,1
    - Dst: static_cast<uint32_t>
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:104,1
    - Dst: std::vector::clear
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:109,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:110,1
    - Dst: MemRecursorCache::replace
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:111,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:111,1
    - Dst: std::optional<Netmask>
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:111,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:112,1
    - Dst: MemRecursorCache::size
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:112,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:115,1
    - Dst: MemRecursorCache::get
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:115,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:115,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:115,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:116,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:116,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:117,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:117,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:117,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:117,1
    - Dst: BOOST_CHECK_LT
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:120,1
    - Dst: MemRecursorCache::get
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:120,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:120,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:120,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:121,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:121,1
    - Dst: MemRecursorCache::doWipeCache
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:124,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:124,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:125,1
    - Dst: MemRecursorCache::size
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:125,1
    - Dst: std::vector::clear
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:128,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:129,1
    - Dst: MemRecursorCache::replace
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:130,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:130,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:131,1
    - Dst: MemRecursorCache::size
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:131,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:134,1
    - Dst: MemRecursorCache::get
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:134,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:134,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:134,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:135,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:135,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:136,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:136,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:136,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:136,1
    - Dst: std::vector::clear
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:139,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:140,1
    - Dst: MemRecursorCache::replace
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:141,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:141,1
    - Dst: std::optional<Netmask>
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:141,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:143,1
    - Dst: MemRecursorCache::size
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:143,1
    - Dst: std::vector::clear
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:146,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:147,1
    - Dst: MemRecursorCache::replace
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:148,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:148,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:150,1
    - Dst: MemRecursorCache::size
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:150,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:153,1
    - Dst: MemRecursorCache::get
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:153,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:153,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:153,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:154,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:154,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:155,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:155,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:155,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:155,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:158,1
    - Dst: MemRecursorCache::get
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:158,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:158,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:158,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:159,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:159,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:160,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:160,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:160,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:160,1
    - Dst: BOOST_CHECK_LT
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:163,1
    - Dst: MemRecursorCache::get
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:163,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:163,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:163,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:164,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:164,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:168,1
    - Dst: MemRecursorCache::get
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:168,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:168,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:168,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:169,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:169,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:171,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:175,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:179,1
    - Dst: MemRecursorCache::get
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:179,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:179,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:179,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:180,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:180,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:182,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:186,1
    - Dst: MemRecursorCache::get
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:186,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:186,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:186,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:187,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:187,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:191,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:199,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:200,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:203,1
    - Dst: MemRecursorCache::get
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:203,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:203,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:203,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:204,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:204,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:205,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:205,1
    - Dst: BOOST_CHECK_LT
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:208,1
    - Dst: MemRecursorCache::get
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:208,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:208,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:208,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:209,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:209,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:213,1
    - Dst: MemRecursorCache::doAgeCache
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:213,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:216,1
    - Dst: MemRecursorCache::get
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:216,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:216,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:216,1
    - Dst: static_cast<int32_t>
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:216,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:217,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:217,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:218,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:218,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:220,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:220,1
    - Dst: BOOST_CHECK_LT
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:223,1
    - Dst: MemRecursorCache::get
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:223,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:223,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:223,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:224,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:224,1
    - Dst: MemRecursorCache::doWipeCache
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:227,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:227,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:228,1
    - Dst: MemRecursorCache::size
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:228,1
    - Dst: std::vector::clear
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:229,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:232,1
    - Dst: MemRecursorCache::replace
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:233,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:233,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:234,1
    - Dst: MemRecursorCache::size
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:234,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:235,1
    - Dst: MemRecursorCache::get
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:235,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:235,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:235,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:236,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:236,1
    - Dst: DNSRecord::DNSRecord
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:238,1
    - Dst: DNSRecord::setContent
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:243,1
    - Dst: std::make_shared<ARecordContent>
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:243,1
    - Dst: static_cast<uint32_t>
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:244,1
    - Dst: BOOST_REQUIRE_GT
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:249,1
    - Dst: std::vector::clear
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:251,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:252,1
    - Dst: MemRecursorCache::replace
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:255,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:255,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:256,1
    - Dst: MemRecursorCache::size
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:256,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:257,1
    - Dst: MemRecursorCache::get
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:257,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:257,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:257,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:258,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:258,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:259,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:259,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:259,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:259,1
    - Dst: MemRecursorCache::replace
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:262,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:262,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:263,1
    - Dst: MemRecursorCache::size
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:263,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:264,1
    - Dst: MemRecursorCache::get
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:264,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:264,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:264,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:265,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:265,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:266,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:266,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:266,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:266,1
    - Dst: std::vector::clear
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:269,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:270,1
    - Dst: MemRecursorCache::replace
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:271,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:271,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:272,1
    - Dst: MemRecursorCache::size
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:272,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:274,1
    - Dst: MemRecursorCache::get
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:274,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:274,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:274,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:275,1
    - Dst: MemRecursorCache::get
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:275,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:275,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:275,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:276,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:276,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:277,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:277,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:277,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:277,1
    - Dst: MemRecursorCache::doWipeCache
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:280,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:280,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:281,1
    - Dst: MemRecursorCache::size
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:281,1
    - Dst: std::vector::clear
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:282,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:285,1
    - Dst: MemRecursorCache::replace
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:286,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:286,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:287,1
    - Dst: MemRecursorCache::size
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:287,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:290,1
    - Dst: MemRecursorCache::get
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:290,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:290,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:290,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:291,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:291,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:292,1
    - Dst: vStateToString
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:292,1
    - Dst: vStateToString
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:292,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:293,1
    - Dst: MemRecursorCache::replace
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:295,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:295,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:296,1
    - Dst: MemRecursorCache::size
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:296,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:299,1
    - Dst: MemRecursorCache::get
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:299,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:299,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:299,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:300,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:300,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:301,1
    - Dst: vStateToString
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:301,1
    - Dst: vStateToString
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:301,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:302,1
    - Dst: MemRecursorCache::doWipeCache
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:307,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:307,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:308,1
    - Dst: MemRecursorCache::size
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:308,1
    - Dst: std::vector::clear
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:309,1
    - Dst: std::vector::clear
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:312,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:313,1
    - Dst: MemRecursorCache::replace
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:314,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:314,1
    - Dst: std::optional<Netmask>
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:314,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:315,1
    - Dst: MemRecursorCache::size
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:315,1
    - Dst: DNSRecord::DNSRecord
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:318,1
    - Dst: DNSRecord::setContent
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:323,1
    - Dst: std::make_shared<ARecordContent>
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:323,1
    - Dst: static_cast<uint32_t>
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:324,1
    - Dst: std::vector::clear
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:328,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:329,1
    - Dst: MemRecursorCache::replace
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:330,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:330,1
    - Dst: std::optional<Netmask>
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:330,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:332,1
    - Dst: MemRecursorCache::size
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:332,1
    - Dst: std::vector::clear
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:335,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:336,1
    - Dst: MemRecursorCache::replace
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:337,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:337,1
    - Dst: std::optional<Netmask>
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:337,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:339,1
    - Dst: MemRecursorCache::size
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:339,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:342,1
    - Dst: MemRecursorCache::get
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:342,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:342,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:342,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:343,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:343,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:344,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:344,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:344,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:344,1
    - Dst: MemRecursorCache::doWipeCache
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:347,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:347,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:348,1
    - Dst: MemRecursorCache::size
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:348,1
    - Dst: std::vector::clear
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:349,1
    - Dst: std::vector::clear
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:352,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:353,1
    - Dst: MemRecursorCache::replace
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:354,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:354,1
    - Dst: std::optional<Netmask>
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:354,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:355,1
    - Dst: MemRecursorCache::size
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:355,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:358,1
    - Dst: MemRecursorCache::get
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:358,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:358,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:358,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:359,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:359,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:362,1
    - Dst: MemRecursorCache::get
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:362,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:362,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:362,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:363,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:363,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:364,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:364,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:364,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:364,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 213
    argCount: 1
    argNames:
    - now
    argTypes:
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 370
      start: 19
    functionDepth: 2
    functionLinenumber: 19
    functionLinenumberEnd: 370
    functionName: simple
    functionSourceFile: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc
    functionUses: 1
    functionsReached:
    - MemRecursorCache::get
    - DNSRecord::DNSRecord
    - std::to_string
    - static_cast<int32_t>
    - static_cast<uint32_t>
    - DNSName::toString
    - std::vector::at
    - DNSRecord::setContent
    - std::vector::push_back
    - MemRecursorCache::MemRecursorCache
    - std::vector::size
    - MemRecursorCache::bytes
    - QType
    - std::make_shared<ARecordContent>
    - std::make_shared<AAAARecordContent>
    - BOOST_REQUIRE_EQUAL
    - MemRecursorCache::replace
    - BOOST_CHECK_GT
    - BOOST_CHECK_LT
    - std::optional<Netmask>
    - DNSName
    - MemRecursorCache::doAgeCache
    - BOOST_REQUIRE_GT
    - MemRecursorCache::size
    - std::vector::clear
    - MemRecursorCache::doWipeCache
    - ComboAddress
    - getRR
    - BOOST_CHECK_EQUAL
    - BOOST_FAIL
    - vStateToString
    - ComboAddress::toString
    - BOOST_CHECK
    - MemRecursorCache::resetStaticsForTests
    linkageType: ''
    returnType: void
    signature: void simple(time_t now)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: simple
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:374,1
    - Dst: time
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:374,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 375
      start: 372
    functionDepth: 3
    functionLinenumber: 372
    functionLinenumberEnd: 375
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc
    functionUses: 0
    functionsReached:
    - time
    - simple
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_RecursorCacheSimple)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: simple
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:379,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 380
      start: 377
    functionDepth: 3
    functionLinenumber: 377
    functionLinenumberEnd: 380
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc
    functionUses: 0
    functionsReached:
    - simple
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_RecursorCacheSimple2038)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: simple
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:384,1
    - Dst: time_t
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:384,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 385
      start: 382
    functionDepth: 3
    functionLinenumber: 382
    functionLinenumberEnd: 385
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc
    functionUses: 0
    functionsReached:
    - time_t
    - simple
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_RecursorCacheSimple2038bis)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: simple
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:391,1
    - Dst: time_t
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:391,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 392
      start: 388
    functionDepth: 3
    functionLinenumber: 388
    functionLinenumberEnd: 392
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc
    functionUses: 0
    functionsReached:
    - time_t
    - simple
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_RecursorCacheSimpleDistantFuture)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MemRecursorCache::resetStaticsForTests
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:397,1
    - Dst: MemRecursorCache::MemRecursorCache
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:399,1
    - Dst: time
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:405,1
    - Dst: DNSRecord::DNSRecord
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:408,1
    - Dst: static_cast<uint32_t>
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:413,1
    - Dst: DNSRecord::setContent
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:416,1
    - Dst: std::make_shared<AAAARecordContent>
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:416,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:416,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:417,1
    - Dst: MemRecursorCache::replace
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:421,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:422,1
    - Dst: MemRecursorCache::size
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:422,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:423,1
    - Dst: MemRecursorCache::get
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:423,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:423,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:423,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:424,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:424,1
    - Dst: DNSRecord::setContent
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:426,1
    - Dst: std::make_shared<AAAARecordContent>
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:426,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:426,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:427,1
    - Dst: MemRecursorCache::replace
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:429,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:430,1
    - Dst: MemRecursorCache::size
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:430,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:432,1
    - Dst: MemRecursorCache::get
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:432,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:432,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:432,1
    - Dst: std::vector::resize
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:435,1
    - Dst: MemRecursorCache::replace
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:437,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:438,1
    - Dst: MemRecursorCache::size
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:438,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:439,1
    - Dst: MemRecursorCache::get
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:439,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:439,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:439,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:440,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:440,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 26
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 441
      start: 395
    functionDepth: 2
    functionLinenumber: 395
    functionLinenumberEnd: 441
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc
    functionUses: 0
    functionsReached:
    - std::vector::push_back
    - MemRecursorCache::replace
    - MemRecursorCache::MemRecursorCache
    - MemRecursorCache::get
    - DNSRecord::DNSRecord
    - std::to_string
    - std::vector::size
    - std::vector::resize
    - time
    - QType
    - BOOST_CHECK_EQUAL
    - static_cast<uint32_t>
    - BOOST_CHECK_THROW
    - DNSRecord::setContent
    - MemRecursorCache::size
    - std::make_shared<AAAARecordContent>
    - MemRecursorCache::resetStaticsForTests
    - ComboAddress
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_RecursorCacheBig)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MemRecursorCache::resetStaticsForTests
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:445,1
    - Dst: MemRecursorCache::MemRecursorCache
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:446,1
    - Dst: time
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:451,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:453,1
    - Dst: MemRecursorCache::size
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:453,1
    - Dst: DNSRecord::DNSRecord
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:458,1
    - Dst: DNSRecord::setContent
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:463,1
    - Dst: std::make_shared<NSRecordContent>
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:463,1
    - Dst: static_cast<uint32_t>
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:464,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:466,1
    - Dst: MemRecursorCache::replace
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:467,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:467,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:467,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:468,1
    - Dst: MemRecursorCache::size
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:468,1
    - Dst: std::vector::clear
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:472,1
    - Dst: static_cast<uint32_t>
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:473,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:474,1
    - Dst: MemRecursorCache::replace
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:475,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:475,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:475,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:476,1
    - Dst: MemRecursorCache::size
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:476,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:480,1
    - Dst: MemRecursorCache::get
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:480,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:480,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:480,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:481,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:481,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:482,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:482,1
    - Dst: static_cast<uint32_t>
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:482,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 20
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 483
      start: 443
    functionDepth: 2
    functionLinenumber: 443
    functionLinenumberEnd: 483
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc
    functionUses: 0
    functionsReached:
    - MemRecursorCache::get
    - DNSRecord::DNSRecord
    - static_cast<uint32_t>
    - std::make_shared<NSRecordContent>
    - std::vector::at
    - DNSRecord::setContent
    - std::vector::push_back
    - MemRecursorCache::MemRecursorCache
    - std::vector::size
    - time
    - QType
    - BOOST_REQUIRE_EQUAL
    - MemRecursorCache::replace
    - DNSName
    - MemRecursorCache::size
    - std::vector::clear
    - ComboAddress
    - BOOST_CHECK_EQUAL
    - MemRecursorCache::resetStaticsForTests
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_RecursorCacheGhost)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MemRecursorCache::resetStaticsForTests
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:489,1
    - Dst: MemRecursorCache::MemRecursorCache
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:490,1
    - Dst: time
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:495,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:497,1
    - Dst: MemRecursorCache::size
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:497,1
    - Dst: DNSRecord::DNSRecord
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:502,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:503,1
    - Dst: DNSRecord::setContent
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:507,1
    - Dst: std::make_shared<NSRecordContent>
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:507,1
    - Dst: static_cast<uint32_t>
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:508,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:510,1
    - Dst: MemRecursorCache::replace
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:511,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:511,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:511,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:512,1
    - Dst: MemRecursorCache::size
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:512,1
    - Dst: static_cast<uint32_t>
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:517,1
    - Dst: std::vector::clear
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:518,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:519,1
    - Dst: MemRecursorCache::replace
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:521,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:521,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:521,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:522,1
    - Dst: MemRecursorCache::size
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:522,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:528,1
    - Dst: MemRecursorCache::get
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:528,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:528,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:528,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:529,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:529,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:530,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:530,1
    - Dst: static_cast<uint32_t>
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:530,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 23
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 531
      start: 485
    functionDepth: 2
    functionLinenumber: 485
    functionLinenumberEnd: 531
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc
    functionUses: 0
    functionsReached:
    - MemRecursorCache::get
    - DNSRecord::DNSRecord
    - static_cast<uint32_t>
    - std::make_shared<NSRecordContent>
    - std::vector::at
    - DNSRecord::setContent
    - std::vector::push_back
    - MemRecursorCache::MemRecursorCache
    - std::vector::size
    - time
    - QType
    - BOOST_REQUIRE_EQUAL
    - MemRecursorCache::replace
    - DNSName
    - MemRecursorCache::size
    - std::vector::clear
    - ComboAddress
    - BOOST_CHECK_EQUAL
    - MemRecursorCache::resetStaticsForTests
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_RecursorCacheReplaceAuthByNonAuthMargin)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MemRecursorCache::resetStaticsForTests
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:535,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:542,1
    - Dst: MemRecursorCache::size
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:542,1
    - Dst: time
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:543,1
    - Dst: DNSRecord::DNSRecord
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:551,1
    - Dst: DNSRecord::setContent
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:556,1
    - Dst: std::make_shared<AAAARecordContent>
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:556,1
    - Dst: static_cast<uint32_t>
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:557,1
    - Dst: DNSRecord::DNSRecord
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:561,1
    - Dst: DNSRecord::setContent
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:566,1
    - Dst: std::make_shared<AAAARecordContent>
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:566,1
    - Dst: static_cast<uint32_t>
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:567,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:571,1
    - Dst: MemRecursorCache::replace
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:572,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:572,1
    - Dst: std::vector::clear
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:573,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:574,1
    - Dst: MemRecursorCache::replace
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:575,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:575,1
    - Dst: std::vector::clear
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:576,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:577,1
    - Dst: MemRecursorCache::size
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:577,1
    - Dst: MemRecursorCache::doPrune
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:583,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:584,1
    - Dst: MemRecursorCache::size
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:584,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:588,1
    - Dst: MemRecursorCache::get
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:588,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:588,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:589,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:589,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:590,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:590,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:590,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:590,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:592,1
    - Dst: MemRecursorCache::get
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:592,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:592,1
    - Dst: MemRecursorCache::doWipeCache
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:595,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:595,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:596,1
    - Dst: MemRecursorCache::size
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:596,1
    - Dst: std::vector::clear
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:597,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:600,1
    - Dst: MemRecursorCache::replace
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:601,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:601,1
    - Dst: std::vector::clear
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:602,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:603,1
    - Dst: MemRecursorCache::replace
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:604,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:604,1
    - Dst: std::vector::clear
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:605,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:606,1
    - Dst: MemRecursorCache::size
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:606,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:609,1
    - Dst: MemRecursorCache::get
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:609,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:609,1
    - Dst: MemRecursorCache::doPrune
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:616,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:617,1
    - Dst: MemRecursorCache::size
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:617,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:621,1
    - Dst: MemRecursorCache::get
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:621,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:621,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:622,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:622,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:623,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:623,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:623,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:623,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:625,1
    - Dst: MemRecursorCache::get
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:625,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:625,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 45
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 626
      start: 533
    functionDepth: 2
    functionLinenumber: 533
    functionLinenumberEnd: 626
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc
    functionUses: 0
    functionsReached:
    - MemRecursorCache::get
    - DNSRecord::DNSRecord
    - static_cast<uint32_t>
    - std::vector::at
    - DNSRecord::setContent
    - std::vector::push_back
    - std::vector::size
    - time
    - QType
    - std::make_shared<AAAARecordContent>
    - BOOST_REQUIRE_EQUAL
    - MemRecursorCache::replace
    - DNSName
    - MemRecursorCache::doPrune
    - MemRecursorCache::size
    - std::vector::clear
    - MemRecursorCache::doWipeCache
    - getRR
    - BOOST_CHECK_EQUAL
    - ComboAddress::toString
    - MemRecursorCache::resetStaticsForTests
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_RecursorCache_ExpungingExpiredEntries)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: MemRecursorCache::resetStaticsForTests
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:630,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:637,1
    - Dst: MemRecursorCache::size
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:637,1
    - Dst: time
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:638,1
    - Dst: DNSRecord::DNSRecord
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:646,1
    - Dst: DNSRecord::setContent
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:651,1
    - Dst: std::make_shared<AAAARecordContent>
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:651,1
    - Dst: static_cast<uint32_t>
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:652,1
    - Dst: DNSRecord::DNSRecord
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:656,1
    - Dst: DNSRecord::setContent
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:661,1
    - Dst: std::make_shared<AAAARecordContent>
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:661,1
    - Dst: static_cast<uint32_t>
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:662,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:666,1
    - Dst: MemRecursorCache::replace
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:667,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:667,1
    - Dst: std::vector::clear
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:668,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:669,1
    - Dst: MemRecursorCache::replace
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:670,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:670,1
    - Dst: std::vector::clear
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:671,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:672,1
    - Dst: MemRecursorCache::size
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:672,1
    - Dst: MemRecursorCache::doPrune
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:677,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:678,1
    - Dst: MemRecursorCache::size
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:678,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:681,1
    - Dst: MemRecursorCache::get
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:681,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:681,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:682,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:682,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:683,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:683,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:683,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:683,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:685,1
    - Dst: MemRecursorCache::get
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:685,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:685,1
    - Dst: MemRecursorCache::doWipeCache
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:688,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:688,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:689,1
    - Dst: MemRecursorCache::size
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:689,1
    - Dst: std::vector::clear
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:690,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:693,1
    - Dst: MemRecursorCache::replace
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:694,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:694,1
    - Dst: std::vector::clear
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:695,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:696,1
    - Dst: MemRecursorCache::replace
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:697,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:697,1
    - Dst: std::vector::clear
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:698,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:699,1
    - Dst: MemRecursorCache::size
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:699,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:702,1
    - Dst: MemRecursorCache::replace
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:703,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:703,1
    - Dst: std::vector::clear
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:704,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:705,1
    - Dst: MemRecursorCache::size
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:705,1
    - Dst: MemRecursorCache::doPrune
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:711,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:712,1
    - Dst: MemRecursorCache::size
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:712,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:715,1
    - Dst: MemRecursorCache::get
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:715,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:715,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:716,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:716,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:717,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:717,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:717,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:717,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:719,1
    - Dst: MemRecursorCache::get
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:719,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:719,1
    - Dst: MemRecursorCache::doWipeCache
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:722,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:722,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:723,1
    - Dst: MemRecursorCache::size
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:723,1
    - Dst: std::vector::clear
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:724,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:727,1
    - Dst: MemRecursorCache::replace
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:728,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:728,1
    - Dst: std::vector::clear
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:729,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:730,1
    - Dst: MemRecursorCache::replace
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:731,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:731,1
    - Dst: std::vector::clear
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:732,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:733,1
    - Dst: MemRecursorCache::size
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:733,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:736,1
    - Dst: MemRecursorCache::get
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:736,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:736,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:737,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:737,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:738,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:738,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:738,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:738,1
    - Dst: MemRecursorCache::doPrune
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:743,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:744,1
    - Dst: MemRecursorCache::size
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:744,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:747,1
    - Dst: MemRecursorCache::get
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:747,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:747,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:748,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:748,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:749,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:749,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:749,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:749,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:751,1
    - Dst: MemRecursorCache::get
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:751,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:751,1
    - Dst: MemRecursorCache::doPrune
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:753,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:754,1
    - Dst: MemRecursorCache::size
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:754,1
    - Dst: std::vector::clear
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:758,1
    - Dst: DNSRecord::DNSRecord
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:760,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:761,1
    - Dst: DNSRecord::setContent
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:765,1
    - Dst: std::make_shared<ARecordContent>
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:765,1
    - Dst: static_cast<uint32_t>
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:766,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:768,1
    - Dst: MemRecursorCache::replace
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:770,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:770,1
    - Dst: Netmask
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:770,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:773,1
    - Dst: MemRecursorCache::size
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:773,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:774,1
    - Dst: MemRecursorCache::ecsIndexSize
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:774,1
    - Dst: MemRecursorCache::doPrune
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:778,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:779,1
    - Dst: MemRecursorCache::size
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:779,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:780,1
    - Dst: MemRecursorCache::ecsIndexSize
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:780,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:785,1
    - Dst: MemRecursorCache::get
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:787,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:787,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:789,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:789,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:790,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:790,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:790,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:790,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:794,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:795,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:795,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:799,1
    - Dst: MemRecursorCache::doPrune
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:802,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:803,1
    - Dst: MemRecursorCache::size
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:803,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:804,1
    - Dst: MemRecursorCache::ecsIndexSize
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:804,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 99
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 805
      start: 628
    functionDepth: 2
    functionLinenumber: 628
    functionLinenumberEnd: 805
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc
    functionUses: 0
    functionsReached:
    - MemRecursorCache::get
    - DNSRecord::DNSRecord
    - std::to_string
    - static_cast<uint32_t>
    - std::vector::at
    - DNSRecord::setContent
    - std::vector::push_back
    - std::vector::size
    - time
    - QType
    - std::make_shared<ARecordContent>
    - std::make_shared<AAAARecordContent>
    - BOOST_REQUIRE_EQUAL
    - MemRecursorCache::replace
    - Netmask
    - DNSName
    - MemRecursorCache::doPrune
    - MemRecursorCache::size
    - std::vector::clear
    - MemRecursorCache::doWipeCache
    - getRR
    - BOOST_CHECK_EQUAL
    - ComboAddress::toString
    - MemRecursorCache::ecsIndexSize
    - MemRecursorCache::resetStaticsForTests
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_RecursorCache_ExpungingValidEntries)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MemRecursorCache::resetStaticsForTests
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:809,1
    - Dst: time
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:817,1
    - Dst: DNSRecord::DNSRecord
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:823,1
    - Dst: DNSRecord::setContent
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:828,1
    - Dst: std::make_shared<ARecordContent>
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:828,1
    - Dst: static_cast<uint32_t>
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:829,1
    - Dst: DNSRecord::DNSRecord
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:832,1
    - Dst: DNSRecord::setContent
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:837,1
    - Dst: std::make_shared<ARecordContent>
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:837,1
    - Dst: static_cast<uint32_t>
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:838,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:841,1
    - Dst: MemRecursorCache::size
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:841,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:842,1
    - Dst: MemRecursorCache::ecsIndexSize
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:842,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:845,1
    - Dst: MemRecursorCache::get
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:845,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:845,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:848,1
    - Dst: MemRecursorCache::replace
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:849,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:849,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:851,1
    - Dst: MemRecursorCache::size
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:851,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:852,1
    - Dst: MemRecursorCache::ecsIndexSize
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:852,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:855,1
    - Dst: MemRecursorCache::get
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:855,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:855,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:856,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:856,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:857,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:857,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:857,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:857,1
    - Dst: MemRecursorCache::doPrune
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:860,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:861,1
    - Dst: MemRecursorCache::size
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:861,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:862,1
    - Dst: MemRecursorCache::ecsIndexSize
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:862,1
    - Dst: MemRecursorCache::replace
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:865,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:865,1
    - Dst: Netmask
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:865,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:867,1
    - Dst: MemRecursorCache::size
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:867,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:868,1
    - Dst: MemRecursorCache::ecsIndexSize
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:868,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:871,1
    - Dst: MemRecursorCache::get
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:871,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:871,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:871,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:872,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:872,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:875,1
    - Dst: MemRecursorCache::get
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:875,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:875,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:875,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:876,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:876,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:877,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:877,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:877,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:877,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:881,1
    - Dst: MemRecursorCache::get
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:881,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:881,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:881,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:882,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:882,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:885,1
    - Dst: MemRecursorCache::ecsIndexSize
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:885,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:886,1
    - Dst: MemRecursorCache::size
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:886,1
    - Dst: MemRecursorCache::replace
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:890,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:890,1
    - Dst: Netmask
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:890,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:891,1
    - Dst: MemRecursorCache::size
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:891,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:892,1
    - Dst: MemRecursorCache::ecsIndexSize
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:892,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:893,1
    - Dst: MemRecursorCache::get
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:893,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:893,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:893,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:894,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:894,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:895,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:895,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:895,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:895,1
    - Dst: MemRecursorCache::doPrune
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:898,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:899,1
    - Dst: MemRecursorCache::size
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:899,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:900,1
    - Dst: MemRecursorCache::ecsIndexSize
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:900,1
    - Dst: MemRecursorCache::replace
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:903,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:903,1
    - Dst: Netmask
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:903,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:905,1
    - Dst: MemRecursorCache::size
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:905,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:906,1
    - Dst: MemRecursorCache::ecsIndexSize
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:906,1
    - Dst: std::vector::clear
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:909,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:910,1
    - Dst: MemRecursorCache::replace
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:911,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:911,1
    - Dst: Netmask
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:911,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:913,1
    - Dst: MemRecursorCache::size
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:913,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:914,1
    - Dst: MemRecursorCache::ecsIndexSize
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:914,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:917,1
    - Dst: MemRecursorCache::get
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:917,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:917,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:917,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:918,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:918,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:919,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:919,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:919,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:919,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:924,1
    - Dst: MemRecursorCache::get
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:924,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:924,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:924,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:925,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:925,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:926,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:926,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:926,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:926,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:929,1
    - Dst: MemRecursorCache::ecsIndexSize
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:929,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:930,1
    - Dst: MemRecursorCache::size
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:930,1
    - Dst: MemRecursorCache::doPrune
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:933,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:934,1
    - Dst: MemRecursorCache::size
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:934,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:935,1
    - Dst: MemRecursorCache::ecsIndexSize
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:935,1
    - Dst: std::vector::clear
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:938,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:939,1
    - Dst: MemRecursorCache::replace
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:940,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:940,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:942,1
    - Dst: MemRecursorCache::size
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:942,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:943,1
    - Dst: MemRecursorCache::ecsIndexSize
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:943,1
    - Dst: std::vector::clear
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:946,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:947,1
    - Dst: MemRecursorCache::replace
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:948,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:948,1
    - Dst: Netmask
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:948,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:950,1
    - Dst: MemRecursorCache::size
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:950,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:951,1
    - Dst: MemRecursorCache::ecsIndexSize
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:951,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:954,1
    - Dst: MemRecursorCache::get
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:954,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:954,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:954,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:955,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:955,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:956,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:956,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:956,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:956,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:958,1
    - Dst: MemRecursorCache::size
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:958,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:959,1
    - Dst: MemRecursorCache::ecsIndexSize
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:959,1
    - Dst: MemRecursorCache::doPrune
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:962,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:963,1
    - Dst: MemRecursorCache::size
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:963,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:964,1
    - Dst: MemRecursorCache::ecsIndexSize
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:964,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 85
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 965
      start: 807
    functionDepth: 2
    functionLinenumber: 807
    functionLinenumberEnd: 965
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc
    functionUses: 0
    functionsReached:
    - MemRecursorCache::get
    - DNSRecord::DNSRecord
    - static_cast<uint32_t>
    - std::vector::at
    - DNSRecord::setContent
    - std::vector::push_back
    - std::vector::size
    - time
    - QType
    - std::make_shared<ARecordContent>
    - BOOST_REQUIRE_EQUAL
    - MemRecursorCache::replace
    - Netmask
    - MemRecursorCache::doPrune
    - MemRecursorCache::size
    - std::vector::clear
    - ComboAddress
    - getRR
    - BOOST_CHECK_EQUAL
    - ComboAddress::toString
    - MemRecursorCache::ecsIndexSize
    - MemRecursorCache::resetStaticsForTests
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_RecursorCacheECSIndex)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MemRecursorCache::resetStaticsForTests
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:969,1
    - Dst: MemRecursorCache::MemRecursorCache
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:970,1
    - Dst: time
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:977,1
    - Dst: DNSRecord::DNSRecord
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:983,1
    - Dst: DNSRecord::setContent
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:988,1
    - Dst: std::make_shared<ARecordContent>
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:988,1
    - Dst: static_cast<uint32_t>
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:989,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:992,1
    - Dst: MemRecursorCache::size
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:992,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:993,1
    - Dst: MemRecursorCache::ecsIndexSize
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:993,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:996,1
    - Dst: MemRecursorCache::get
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:996,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:996,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:999,1
    - Dst: MemRecursorCache::replace
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1000,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1000,1
    - Dst: Netmask
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1000,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1002,1
    - Dst: MemRecursorCache::size
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1002,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1003,1
    - Dst: MemRecursorCache::ecsIndexSize
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1003,1
    - Dst: std::vector::clear
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1008,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1009,1
    - Dst: MemRecursorCache::replace
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1010,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1010,1
    - Dst: Netmask
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1010,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1012,1
    - Dst: MemRecursorCache::size
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1012,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1013,1
    - Dst: MemRecursorCache::ecsIndexSize
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1013,1
    - Dst: std::vector::clear
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1017,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1018,1
    - Dst: MemRecursorCache::replace
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1019,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1019,1
    - Dst: Netmask
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1019,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1021,1
    - Dst: MemRecursorCache::size
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1021,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1022,1
    - Dst: MemRecursorCache::ecsIndexSize
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1022,1
    - Dst: std::vector::clear
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1027,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1028,1
    - Dst: MemRecursorCache::replace
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1029,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1029,1
    - Dst: Netmask
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1029,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1031,1
    - Dst: MemRecursorCache::size
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1031,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1032,1
    - Dst: MemRecursorCache::ecsIndexSize
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1032,1
    - Dst: std::vector::clear
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1036,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1037,1
    - Dst: MemRecursorCache::replace
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1038,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1038,1
    - Dst: Netmask
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1038,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1040,1
    - Dst: MemRecursorCache::size
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1040,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1041,1
    - Dst: MemRecursorCache::ecsIndexSize
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1041,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1044,1
    - Dst: MemRecursorCache::doWipeCache
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1044,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1045,1
    - Dst: MemRecursorCache::size
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1045,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1046,1
    - Dst: MemRecursorCache::ecsIndexSize
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1046,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1049,1
    - Dst: MemRecursorCache::doWipeCache
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1049,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1050,1
    - Dst: MemRecursorCache::size
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1050,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1051,1
    - Dst: MemRecursorCache::ecsIndexSize
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1051,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1053,1
    - Dst: MemRecursorCache::doWipeCache
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1053,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1054,1
    - Dst: MemRecursorCache::size
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1054,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1055,1
    - Dst: MemRecursorCache::ecsIndexSize
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1055,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 48
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1056
      start: 967
    functionDepth: 2
    functionLinenumber: 967
    functionLinenumberEnd: 1056
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc
    functionUses: 0
    functionsReached:
    - std::vector::push_back
    - MemRecursorCache::replace
    - MemRecursorCache::MemRecursorCache
    - MemRecursorCache::get
    - DNSRecord::DNSRecord
    - Netmask
    - time
    - QType
    - BOOST_CHECK_EQUAL
    - static_cast<uint32_t>
    - DNSRecord::setContent
    - std::make_shared<ARecordContent>
    - MemRecursorCache::size
    - MemRecursorCache::ecsIndexSize
    - std::vector::clear
    - MemRecursorCache::doWipeCache
    - MemRecursorCache::resetStaticsForTests
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_RecursorCache_Wipe)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: MemRecursorCache::resetStaticsForTests
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1060,1
    - Dst: MemRecursorCache::MemRecursorCache
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1061,1
    - Dst: time
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1066,1
    - Dst: DNSRecord::DNSRecord
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1070,1
    - Dst: DNSRecord::setContent
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1075,1
    - Dst: std::make_shared<ARecordContent>
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1075,1
    - Dst: static_cast<uint32_t>
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1076,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1079,1
    - Dst: DNSRecord::DNSRecord
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1081,1
    - Dst: DNSRecord::setContent
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1086,1
    - Dst: std::make_shared<ARecordContent>
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1086,1
    - Dst: static_cast<uint32_t>
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1087,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1090,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1092,1
    - Dst: MemRecursorCache::size
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1092,1
    - Dst: MemRecursorCache::replace
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1094,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1094,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1094,1
    - Dst: MemRecursorCache::replace
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1095,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1095,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1095,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1095,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1096,1
    - Dst: MemRecursorCache::size
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1096,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1097,1
    - Dst: MemRecursorCache::doWipeCache
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1097,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1097,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1098,1
    - Dst: MemRecursorCache::size
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1098,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1099,1
    - Dst: MemRecursorCache::bytes
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1099,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1107,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1107,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1107,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1108,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1108,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1108,1
    - Dst: MemRecursorCache::replace
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1110,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1110,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1110,1
    - Dst: MemRecursorCache::replace
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1111,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1111,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1111,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1115,1
    - Dst: MemRecursorCache::size
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1115,1
    - Dst: MemRecursorCache::get
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1122,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1122,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1122,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1122,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1122,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1124,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1124,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1124,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1125,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1125,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1125,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1125,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1128,1
    - Dst: MemRecursorCache::get
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1132,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1132,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1132,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1132,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1132,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1132,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1134,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1134,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1134,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1135,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1135,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1135,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1135,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1138,1
    - Dst: MemRecursorCache::get
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1142,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1142,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1142,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1142,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1142,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1142,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1144,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1144,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1144,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1145,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1145,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1145,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1145,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1148,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1152,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1152,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1152,1
    - Dst: MemRecursorCache::replace
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1153,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1153,1
    - Dst: std::optional<Netmask>
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1153,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1153,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1155,1
    - Dst: MemRecursorCache::size
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1155,1
    - Dst: MemRecursorCache::get
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1159,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1159,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1159,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1159,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1159,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1161,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1161,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1161,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1162,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1162,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1162,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1162,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1165,1
    - Dst: MemRecursorCache::get
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1169,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1169,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1169,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1169,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1169,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1169,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1172,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1172,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1172,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1173,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1173,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1173,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1173,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1176,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1176,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1176,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1177,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1177,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1177,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1177,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1181,1
    - Dst: MemRecursorCache::get
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1185,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1185,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1185,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1185,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1185,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1185,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1187,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1187,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1187,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1188,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1188,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1188,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1188,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1191,1
    - Dst: MemRecursorCache::doWipeCache
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1193,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1193,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1194,1
    - Dst: MemRecursorCache::size
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1194,1
    - Dst: DNSRecord::DNSRecord
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1196,1
    - Dst: DNSRecord::setContent
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1201,1
    - Dst: std::make_shared<ARecordContent>
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1201,1
    - Dst: static_cast<uint32_t>
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1202,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1205,1
    - Dst: DNSRecord::DNSRecord
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1207,1
    - Dst: DNSRecord::setContent
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1212,1
    - Dst: std::make_shared<ARecordContent>
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1212,1
    - Dst: static_cast<uint32_t>
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1213,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1216,1
    - Dst: DNSRecord::DNSRecord
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1218,1
    - Dst: DNSRecord::setContent
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1223,1
    - Dst: std::make_shared<ARecordContent>
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1223,1
    - Dst: static_cast<uint32_t>
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1224,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1227,1
    - Dst: MemRecursorCache::replace
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1230,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1230,1
    - Dst: std::optional<Netmask>
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1230,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1230,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1231,1
    - Dst: MemRecursorCache::size
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1231,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1234,1
    - Dst: MemRecursorCache::get
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1234,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1234,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1234,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1234,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1235,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1235,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1236,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1236,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1236,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1236,1
    - Dst: BOOST_CHECK_LT
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1239,1
    - Dst: MemRecursorCache::get
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1239,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1239,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1239,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1239,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1240,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1240,1
    - Dst: MemRecursorCache::replace
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1243,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1243,1
    - Dst: std::optional<Netmask>
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1243,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1244,1
    - Dst: MemRecursorCache::size
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1244,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1247,1
    - Dst: MemRecursorCache::get
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1247,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1247,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1247,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1247,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1248,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1248,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1249,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1249,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1249,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1249,1
    - Dst: BOOST_CHECK_LT
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1252,1
    - Dst: MemRecursorCache::get
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1252,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1252,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1252,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1253,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1253,1
    - Dst: BOOST_CHECK_LT
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1256,1
    - Dst: MemRecursorCache::get
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1256,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1256,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1256,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1257,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1257,1
    - Dst: MemRecursorCache::replace
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1260,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1260,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1261,1
    - Dst: MemRecursorCache::size
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1261,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1264,1
    - Dst: MemRecursorCache::get
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1264,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1264,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1264,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1265,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1265,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1265,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1265,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1268,1
    - Dst: MemRecursorCache::get
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1268,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1268,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1268,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1269,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1269,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1270,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1270,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1270,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1270,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1273,1
    - Dst: MemRecursorCache::get
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1273,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1273,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1273,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1274,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1274,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1275,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1275,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1275,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1275,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1278,1
    - Dst: MemRecursorCache::get
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1278,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1278,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1278,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1278,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1279,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1279,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1280,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1280,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1280,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1280,1
    - Dst: MemRecursorCache::doWipeCache
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1283,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1283,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1284,1
    - Dst: MemRecursorCache::size
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1284,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 150
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1290
      start: 1058
    functionDepth: 2
    functionLinenumber: 1058
    functionLinenumberEnd: 1290
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc
    functionUses: 0
    functionsReached:
    - MemRecursorCache::get
    - DNSRecord::DNSRecord
    - std::to_string
    - static_cast<uint32_t>
    - DNSName::toString
    - std::vector::at
    - DNSRecord::setContent
    - std::vector::push_back
    - MemRecursorCache::MemRecursorCache
    - std::vector::size
    - MemRecursorCache::bytes
    - time
    - QType
    - string
    - std::make_shared<ARecordContent>
    - BOOST_REQUIRE_EQUAL
    - MemRecursorCache::replace
    - BOOST_CHECK_LT
    - std::optional<Netmask>
    - DNSName
    - MemRecursorCache::size
    - MemRecursorCache::doWipeCache
    - ComboAddress
    - getRR
    - BOOST_CHECK_EQUAL
    - ComboAddress::toString
    - MemRecursorCache::resetStaticsForTests
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_RecursorCacheTagged)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: MemRecursorCache::resetStaticsForTests
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1294,1
    - Dst: MemRecursorCache::MemRecursorCache
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1295,1
    - Dst: DNSRecord::DNSRecord
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1299,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1301,1
    - Dst: DNSRecord::setContent
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1304,1
    - Dst: std::make_shared<AAAARecordContent>
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1304,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1304,1
    - Dst: MemRecursorCache::AuthRecsVec::emplace_back
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1305,1
    - Dst: std::vector::emplace_back
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1308,1
    - Dst: std::dynamic_pointer_cast<RRSIGRecordContent>
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1308,1
    - Dst: make
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1308,1
    - Dst: time
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1310,1
    - Dst: DNSRecord::DNSRecord
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1314,1
    - Dst: DNSRecord::setContent
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1319,1
    - Dst: std::make_shared<ARecordContent>
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1319,1
    - Dst: static_cast<uint32_t>
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1320,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1323,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1333,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1333,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1333,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1334,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1334,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1334,1
    - Dst: MemRecursorCache::replace
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1336,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1336,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1339,1
    - Dst: MemRecursorCache::size
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1339,1
    - Dst: DNSName::DNSName
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1351,1
    - Dst: MemRecursorCache::get
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1353,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1353,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1353,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1353,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1353,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1355,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1355,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1355,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1356,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1356,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1356,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1356,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1357,1
    - Dst: MemRecursorCache::SigRecs::size
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1357,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1358,1
    - Dst: MemRecursorCache::SigRecs::at
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1358,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1358,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1359,1
    - Dst: MemRecursorCache::AuthRecs::size
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1359,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1361,1
    - Dst: MemRecursorCache::AuthRecs::at
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1361,1
    - Dst: MemRecursorCache::AuthRecsVec::at
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1361,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1362,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1363,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1364,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1365,1
    - Dst: MemRecursorCache::Extra::d_address::toString
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1365,1
    - Dst: MemRecursorCache::Extra::d_address::toString
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1365,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1366,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1369,1
    - Dst: checker
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1372,1
    - Dst: MemRecursorCache::getRecordSets
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1375,1
    - Dst: MemRecursorCache::doWipeCache
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1376,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1376,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1377,1
    - Dst: MemRecursorCache::size
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1377,1
    - Dst: MemRecursorCache::putRecordSets
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1378,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1379,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1380,1
    - Dst: MemRecursorCache::size
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1380,1
    - Dst: checker
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1382,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 51
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1388
      start: 1292
    functionDepth: 4
    functionLinenumber: 1292
    functionLinenumberEnd: 1388
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc
    functionUses: 0
    functionsReached:
    - checker
    - MemRecursorCache::get
    - MemRecursorCache::SigRecs::at
    - DNSRecord::DNSRecord
    - std::to_string
    - static_cast<uint32_t>
    - MemRecursorCache::AuthRecs::size
    - DNSName::toString
    - std::vector::at
    - DNSRecord::setContent
    - MemRecursorCache::AuthRecsVec::at
    - MemRecursorCache::getRecordSets
    - std::vector::push_back
    - MemRecursorCache::MemRecursorCache
    - std::vector::size
    - time
    - QType
    - std::dynamic_pointer_cast<RRSIGRecordContent>
    - MemRecursorCache::AuthRecsVec::emplace_back
    - std::make_shared<ARecordContent>
    - std::make_shared<AAAARecordContent>
    - MemRecursorCache::Extra::d_address::toString
    - MemRecursorCache::replace
    - DNSName
    - MemRecursorCache::size
    - make
    - MemRecursorCache::doWipeCache
    - ComboAddress
    - getRR
    - MemRecursorCache::putRecordSets
    - MemRecursorCache::SigRecs::size
    - std::vector::emplace_back
    - BOOST_CHECK_EQUAL
    - MemRecursorCache::AuthRecs::at
    - ComboAddress::toString
    - DNSName::DNSName
    - BOOST_CHECK
    - MemRecursorCache::resetStaticsForTests
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_RecursorCacheDumpAndRestore)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: MemRecursorCache::resetStaticsForTests
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1392,1
    - Dst: MemRecursorCache::MemRecursorCache
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1393,1
    - Dst: DNSRecord::DNSRecord
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1397,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1399,1
    - Dst: DNSRecord::setContent
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1402,1
    - Dst: std::make_shared<ARecordContent>
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1402,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1402,1
    - Dst: MemRecursorCache::AuthRecsVec::emplace_back
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1403,1
    - Dst: std::vector::emplace_back
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1406,1
    - Dst: std::dynamic_pointer_cast<RRSIGRecordContent>
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1406,1
    - Dst: make
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1406,1
    - Dst: time
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1408,1
    - Dst: DNSRecord::DNSRecord
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1412,1
    - Dst: DNSRecord::setContent
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1417,1
    - Dst: std::make_shared<ARecordContent>
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1417,1
    - Dst: static_cast<uint32_t>
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1418,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1421,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1428,1
    - Dst: MemRecursorCache::replace
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1429,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1429,1
    - Dst: MemRecursorCache::replace
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1430,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1430,1
    - Dst: DNSName::DNSName
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1438,1
    - Dst: MemRecursorCache::get
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1440,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1440,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1441,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1441,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 21
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1443
      start: 1390
    functionDepth: 2
    functionLinenumber: 1390
    functionLinenumberEnd: 1443
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc
    functionUses: 0
    functionsReached:
    - MemRecursorCache::get
    - DNSRecord::DNSRecord
    - static_cast<uint32_t>
    - DNSRecord::setContent
    - std::vector::push_back
    - MemRecursorCache::MemRecursorCache
    - std::vector::size
    - time
    - QType
    - std::dynamic_pointer_cast<RRSIGRecordContent>
    - MemRecursorCache::AuthRecsVec::emplace_back
    - std::make_shared<ARecordContent>
    - MemRecursorCache::replace
    - DNSName
    - make
    - ComboAddress
    - std::vector::emplace_back
    - BOOST_CHECK_EQUAL
    - DNSName::DNSName
    - MemRecursorCache::resetStaticsForTests
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_RecursorAuthRecords)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1453
      start: 1450
    functionDepth: 0
    functionLinenumber: 1450
    functionLinenumberEnd: 1453
    functionName: alarmHandler
    functionSourceFile: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void alarmHandler(int /* unused */)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: signal
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1464,1
    - Dst: setitimer
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1465,1
    - Dst: CPUTime::start
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1470,1
    - Dst: cmd
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1472,1
    - Dst: static_cast<double>
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1474,1
    - Dst: CPUTime::ndiff
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1474,1
    - Dst: getName
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1477,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 1
    argNames:
    - ' cmd'
    argTypes:
    - C
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1479
      start: 1456
    functionDepth: 0
    functionLinenumber: 1456
    functionLinenumberEnd: 1479
    functionName: doRun
    functionSourceFile: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc
    functionUses: 1
    functionsReached:
    - cmd
    - static_cast<double>
    - getName
    - setitimer
    - CPUTime::ndiff
    - CPUTime::start
    - signal
    linkageType: ''
    returnType: void
    signature: void doRun(const C& cmd, int mseconds = 100)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1486
      start: 1483
    functionDepth: 0
    functionLinenumber: 1483
    functionLinenumberEnd: 1486
    functionName: getName
    functionSourceFile: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc
    functionUses: 197
    functionsReached: []
    linkageType: ''
    returnType: string
    signature: string getName()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1490
      start: 1488
    functionDepth: 0
    functionLinenumber: 1488
    functionLinenumberEnd: 1490
    functionName: operator()() const
    functionSourceFile: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void operator()() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1498
      start: 1495
    functionDepth: 0
    functionLinenumber: 1495
    functionLinenumberEnd: 1498
    functionName: getName
    functionSourceFile: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc
    functionUses: 197
    functionsReached: []
    linkageType: ''
    returnType: string
    signature: string getName()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: MemRecursorCache::resetStaticsForTests
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1502,1
    - Dst: MemRecursorCache::MemRecursorCache
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1503,1
    - Dst: DNSRecord::DNSRecord
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1507,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1509,1
    - Dst: DNSRecord::setContent
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1512,1
    - Dst: std::make_shared<ARecordContent>
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1512,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1512,1
    - Dst: MemRecursorCache::AuthRecsVec::emplace_back
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1513,1
    - Dst: time
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1514,1
    - Dst: MemRecursorCache::SigRecsVec::emplace_back
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1518,1
    - Dst: std::dynamic_pointer_cast<RRSIGRecordContent>
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1518,1
    - Dst: make
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1518,1
    - Dst: DNSRecord::DNSRecord
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1521,1
    - Dst: DNSRecord::setContent
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1526,1
    - Dst: std::make_shared<ARecordContent>
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1526,1
    - Dst: static_cast<uint32_t>
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1527,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1530,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1538,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1538,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1538,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1539,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1539,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1539,1
    - Dst: MemRecursorCache::replace
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1541,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1541,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1544,1
    - Dst: MemRecursorCache::size
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1544,1
    - Dst: DNSName::DNSName
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1557,1
    - Dst: MemRecursorCache::get
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1559,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1559,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1559,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1559,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1559,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1560,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1560,1
    - Dst: MemRecursorCache::Extra::d_address::toString
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1560,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1561,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1566,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 31
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1567
      start: 1500
    functionDepth: 2
    functionLinenumber: 1500
    functionLinenumberEnd: 1567
    functionName: operator()() const
    functionSourceFile: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc
    functionUses: 0
    functionsReached:
    - MemRecursorCache::get
    - DNSRecord::DNSRecord
    - std::to_string
    - static_cast<uint32_t>
    - DNSName::toString
    - DNSRecord::setContent
    - std::vector::push_back
    - MemRecursorCache::MemRecursorCache
    - time
    - QType
    - std::dynamic_pointer_cast<RRSIGRecordContent>
    - MemRecursorCache::AuthRecsVec::emplace_back
    - std::make_shared<ARecordContent>
    - MemRecursorCache::Extra::d_address::toString
    - MemRecursorCache::replace
    - DNSName
    - MemRecursorCache::size
    - make
    - ComboAddress
    - BOOST_CHECK_EQUAL
    - MemRecursorCache::SigRecsVec::emplace_back
    - ComboAddress::toString
    - DNSName::DNSName
    - BOOST_CHECK
    - MemRecursorCache::resetStaticsForTests
    linkageType: ''
    returnType: void
    signature: void operator()() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: doRun
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1572,1
    - Dst: NOPTest
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1572,1
    - Dst: doRun
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1573,1
    - Dst: RecordsSpeedTest
      Src: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc:1573,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1574
      start: 1570
    functionDepth: 0
    functionLinenumber: 1570
    functionLinenumberEnd: 1574
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc
    functionUses: 0
    functionsReached:
    - RecordsSpeedTest
    - doRun
    - NOPTest
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_speed)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: reinterpret_cast<const uint8_t*>
      Src: /src/pdns/pdns/recursordist/ednsoptions.cc:34,1
    - Dst: static_cast<uint16_t>
      Src: /src/pdns/pdns/recursordist/ednsoptions.cc:36,1
    - Dst: static_cast<uint16_t>
      Src: /src/pdns/pdns/recursordist/ednsoptions.cc:39,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 4
    argNames:
    - data
    - dataLen
    - ' optionCode'
    - ' optionLen'
    argTypes:
    - char*
    - size_t
    - uint16_t
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 27
    functionDepth: 0
    functionLinenumber: 27
    functionLinenumberEnd: 44
    functionName: getNextEDNSOption
    functionSourceFile: /src/pdns/pdns/recursordist/ednsoptions.cc
    functionUses: 8
    functionsReached:
    - static_cast<uint16_t>
    - reinterpret_cast<const uint8_t*>
    linkageType: ''
    returnType: bool
    signature: bool getNextEDNSOption(const char* data, size_t dataLen, uint16_t&
      optionCode, uint16_t& optionLen)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: getNextEDNSOption
      Src: /src/pdns/pdns/recursordist/ednsoptions.cc:69,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 32
    argCount: 5
    argNames:
    - optRR
    - len
    - wantedOption
    - optionValuePosition
    - optionValueSize
    argTypes:
    - char*
    - size_t
    - uint16_t
    - size_t*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 47
    functionDepth: 0
    functionLinenumber: 47
    functionLinenumberEnd: 95
    functionName: getEDNSOption
    functionSourceFile: /src/pdns/pdns/recursordist/ednsoptions.cc
    functionUses: 3
    functionsReached:
    - getNextEDNSOption
    linkageType: ''
    returnType: int
    signature: int getEDNSOption(const char* optRR, const size_t len, uint16_t wantedOption,
      size_t* optionValuePosition, size_t * optionValueSize)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/recursordist/ednsoptions.cc:99,1
    - Dst: data
      Src: /src/pdns/pdns/recursordist/ednsoptions.cc:103,1
    - Dst: ntohs
      Src: /src/pdns/pdns/recursordist/ednsoptions.cc:105,1
    - Dst: ntohs
      Src: /src/pdns/pdns/recursordist/ednsoptions.cc:109,1
    - Dst: ntohs
      Src: /src/pdns/pdns/recursordist/ednsoptions.cc:114,1
    - Dst: ntohs
      Src: /src/pdns/pdns/recursordist/ednsoptions.cc:114,1
    - Dst: ntohs
      Src: /src/pdns/pdns/recursordist/ednsoptions.cc:114,1
    - Dst: const_cast<char*>
      Src: /src/pdns/pdns/recursordist/ednsoptions.cc:116,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/recursordist/ednsoptions.cc:116,1
    - Dst: data
      Src: /src/pdns/pdns/recursordist/ednsoptions.cc:116,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/ednsoptions.cc:116,1
    - Dst: ntohs
      Src: /src/pdns/pdns/recursordist/ednsoptions.cc:118,1
    - Dst: DNSPacketMangler::skipDomainName
      Src: /src/pdns/pdns/recursordist/ednsoptions.cc:119,1
    - Dst: DNSPacketMangler::skipBytes
      Src: /src/pdns/pdns/recursordist/ednsoptions.cc:121,1
    - Dst: DNSPacketMangler::skipDomainName
      Src: /src/pdns/pdns/recursordist/ednsoptions.cc:125,1
    - Dst: ntohs
      Src: /src/pdns/pdns/recursordist/ednsoptions.cc:127,1
    - Dst: ntohs
      Src: /src/pdns/pdns/recursordist/ednsoptions.cc:127,1
    - Dst: ntohs
      Src: /src/pdns/pdns/recursordist/ednsoptions.cc:127,1
    - Dst: DNSPacketMangler::get16BitInt
      Src: /src/pdns/pdns/recursordist/ednsoptions.cc:128,1
    - Dst: DNSPacketMangler::get16BitInt
      Src: /src/pdns/pdns/recursordist/ednsoptions.cc:129,1
    - Dst: DNSPacketMangler::skipBytes
      Src: /src/pdns/pdns/recursordist/ednsoptions.cc:130,1
    - Dst: DNSPacketMangler::getOffset
      Src: /src/pdns/pdns/recursordist/ednsoptions.cc:133,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/ednsoptions.cc:134,1
    - Dst: DNSPacketMangler::skipRData
      Src: /src/pdns/pdns/recursordist/ednsoptions.cc:138,1
    - Dst: getEDNSOptions
      Src: /src/pdns/pdns/recursordist/ednsoptions.cc:140,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/recursordist/ednsoptions.cc:140,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/ednsoptions.cc:140,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/ednsoptions.cc:140,1
    - Dst: DNSPacketMangler::skipRData
      Src: /src/pdns/pdns/recursordist/ednsoptions.cc:142,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 32
    argCount: 2
    argNames:
    - ' packet'
    - ' options'
    argTypes:
    - PacketBuffer
    - EDNSOptionViewMap
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 150
      start: 97
    functionDepth: 0
    functionLinenumber: 97
    functionLinenumberEnd: 150
    functionName: slowParseEDNSOptions
    functionSourceFile: /src/pdns/pdns/recursordist/ednsoptions.cc
    functionUses: 2
    functionsReached:
    - DNSPacketMangler::skipDomainName
    - const_cast<char*>
    - DNSPacketMangler::skipBytes
    - ntohs
    - at
    - size
    - DNSPacketMangler::skipRData
    - reinterpret_cast<const char*>
    - getEDNSOptions
    - data
    - DNSPacketMangler::getOffset
    - DNSPacketMangler::get16BitInt
    linkageType: ''
    returnType: bool
    signature: bool slowParseEDNSOptions(const PacketBuffer& packet, EDNSOptionViewMap&
      options)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: values::push_back
      Src: /src/pdns/pdns/recursordist/ednsoptions.cc:181,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 22
    argCount: 3
    argNames:
    - optRR
    - len
    - ' options'
    argTypes:
    - char*
    - size_t
    - EDNSOptionViewMap
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 189
      start: 153
    functionDepth: 0
    functionLinenumber: 153
    functionLinenumberEnd: 189
    functionName: getEDNSOptions
    functionSourceFile: /src/pdns/pdns/recursordist/ednsoptions.cc
    functionUses: 5
    functionsReached:
    - values::push_back
    linkageType: ''
    returnType: int
    signature: int getEDNSOptions(const char* optRR, const size_t len, EDNSOptionViewMap&
      options)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/recursordist/ednsoptions.cc:195,1
    - Dst: static_cast<unsigned char>
      Src: /src/pdns/pdns/recursordist/ednsoptions.cc:198,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/ednsoptions.cc:198,1
    - Dst: static_cast<unsigned char>
      Src: /src/pdns/pdns/recursordist/ednsoptions.cc:198,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/ednsoptions.cc:198,1
    - Dst: static_cast<unsigned char>
      Src: /src/pdns/pdns/recursordist/ednsoptions.cc:200,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/ednsoptions.cc:200,1
    - Dst: static_cast<unsigned char>
      Src: /src/pdns/pdns/recursordist/ednsoptions.cc:200,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/ednsoptions.cc:200,1
    - Dst: emplace_back
      Src: /src/pdns/pdns/recursordist/ednsoptions.cc:207,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/ednsoptions.cc:207,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/ednsoptions.cc:207,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 2
    argNames:
    - ' content'
    - ' options'
    argTypes:
    - std::string
    - std::vector<std::pair<uint16_t, std::string>>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 212
      start: 191
    functionDepth: 0
    functionLinenumber: 191
    functionLinenumberEnd: 212
    functionName: getEDNSOptionsFromContent
    functionSourceFile: /src/pdns/pdns/recursordist/ednsoptions.cc
    functionUses: 1
    functionsReached:
    - size
    - emplace_back
    - std::string
    - at
    - static_cast<unsigned char>
    linkageType: ''
    returnType: bool
    signature: bool getEDNSOptionsFromContent(const std::string& content, std::vector<std::pair<uint16_t,
      std::string>>& options)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: htons
      Src: /src/pdns/pdns/recursordist/ednsoptions.cc:216,1
    - Dst: htons
      Src: /src/pdns/pdns/recursordist/ednsoptions.cc:217,1
    - Dst: length
      Src: /src/pdns/pdns/recursordist/ednsoptions.cc:217,1
    - Dst: append
      Src: /src/pdns/pdns/recursordist/ednsoptions.cc:218,1
    - Dst: append
      Src: /src/pdns/pdns/recursordist/ednsoptions.cc:219,1
    - Dst: append
      Src: /src/pdns/pdns/recursordist/ednsoptions.cc:220,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - optionCode
    - ' payload'
    - ' res'
    argTypes:
    - uint16_t
    - std::string
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 221
      start: 214
    functionDepth: 0
    functionLinenumber: 214
    functionLinenumberEnd: 221
    functionName: generateEDNSOption
    functionSourceFile: /src/pdns/pdns/recursordist/ednsoptions.cc
    functionUses: 9
    functionsReached:
    - length
    - append
    - htons
    linkageType: ''
    returnType: void
    signature: void generateEDNSOption(uint16_t optionCode, const std::string& payload,
      std::string& res)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6
      start: 6
    functionDepth: 0
    functionLinenumber: 6
    functionLinenumberEnd: 6
    functionName: pdns::rust::web::rec::A
    functionSourceFile: /src/pdns/pdns/recursordist/rec-web-stubs.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void A(const Request& /* unused */, Response& /* unused */)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6
      start: 6
    functionDepth: 0
    functionLinenumber: 6
    functionLinenumberEnd: 6
    functionName: pdns::rust::web::rec::A
    functionSourceFile: /src/pdns/pdns/recursordist/rec-web-stubs.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void A(const Request& /* unused */, Response& /* unused */)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::unique_ptr<FDMultiplexer>
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:17,1
    - Dst: FDMultiplexer::getMultiplexerSilent
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:17,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:18,1
    - Dst: auto::run
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:21,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:22,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:23,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 24
      start: 15
    functionDepth: 0
    functionLinenumber: 15
    functionLinenumberEnd: 24
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-mplexer.cc
    functionUses: 0
    functionsReached:
    - BOOST_CHECK
    - BOOST_CHECK_EQUAL
    - std::unique_ptr<FDMultiplexer>
    - auto::run
    - BOOST_REQUIRE
    - FDMultiplexer::getMultiplexerSilent
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_getMultiplexerSilent)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: FDMultiplexer::getMultiplexerMap
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:28,1
    - Dst: std::unique_ptr<FDMultiplexer>
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:29,1
    - Dst: second
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:29,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:30,1
    - Dst: auto::run
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:34,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:35,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:36,1
    - Dst: auto::getAvailableFDs
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:39,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:40,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:40,1
    - Dst: auto::getTimeouts
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:42,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:43,1
    - Dst: auto::size
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:43,1
    - Dst: pipe
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:46,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:47,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:48,1
    - Dst: setNonBlocking
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:48,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:49,1
    - Dst: setNonBlocking
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:49,1
    - Dst: boost::any_cast<bool*>
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:57,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:58,1
    - Dst: auto::addWriteFD
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:61,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:66,1
    - Dst: auto::addWriteFD
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:66,1
    - Dst: std::vector::clear
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:72,1
    - Dst: auto::getAvailableFDs
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:73,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:74,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:74,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:75,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:75,1
    - Dst: auto::run
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:78,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:79,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:80,1
    - Dst: auto::getTimeouts
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:83,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:84,1
    - Dst: auto::size
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:84,1
    - Dst: auto::getTimeouts
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:86,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:87,1
    - Dst: auto::size
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:87,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:88,1
    - Dst: auto::at
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:88,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:91,1
    - Dst: auto::removeReadFD
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:91,1
    - Dst: auto::removeWriteFD
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:92,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:94,1
    - Dst: auto::removeWriteFD
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:94,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:95,1
    - Dst: auto::removeWriteFD
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:95,1
    - Dst: std::vector::clear
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:97,1
    - Dst: auto::getAvailableFDs
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:98,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:99,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:99,1
    - Dst: auto::run
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:101,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:102,1
    - Dst: boost::any_cast<bool*>
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:106,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:107,1
    - Dst: auto::addReadFD
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:110,1
    - Dst: std::vector::clear
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:116,1
    - Dst: auto::getAvailableFDs
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:117,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:118,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:118,1
    - Dst: auto::run
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:120,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:121,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:122,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:125,1
    - Dst: write
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:125,1
    - Dst: std::vector::clear
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:127,1
    - Dst: auto::getAvailableFDs
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:128,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:129,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:129,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:130,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:130,1
    - Dst: auto::run
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:132,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:133,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:134,1
    - Dst: auto::addWriteFD
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:137,1
    - Dst: std::vector::clear
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:145,1
    - Dst: auto::getAvailableFDs
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:147,1
    - Dst: BOOST_REQUIRE_GT
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:148,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:148,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:149,1
    - Dst: auto::run
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:150,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:151,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:153,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:159,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:159,1
    - Dst: auto::run
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:160,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:161,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:162,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:163,1
    - Dst: read
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:165,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:166,1
    - Dst: std::vector::clear
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:169,1
    - Dst: auto::getAvailableFDs
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:170,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:171,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:171,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:172,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:172,1
    - Dst: auto::run
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:174,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:175,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:178,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:179,1
    - Dst: auto::getTimeouts
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:182,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:183,1
    - Dst: auto::size
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:183,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:184,1
    - Dst: auto::at
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:184,1
    - Dst: auto::getTimeouts
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:185,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:186,1
    - Dst: auto::size
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:186,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:187,1
    - Dst: auto::at
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:187,1
    - Dst: auto::getTimeouts
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:194,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:195,1
    - Dst: auto::size
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:195,1
    - Dst: auto::getTimeouts
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:197,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:198,1
    - Dst: auto::size
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:198,1
    - Dst: auto::setReadTTD
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:201,1
    - Dst: auto::setWriteTTD
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:202,1
    - Dst: auto::getTimeouts
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:203,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:204,1
    - Dst: auto::size
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:204,1
    - Dst: auto::getTimeouts
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:205,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:206,1
    - Dst: auto::size
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:206,1
    - Dst: auto::setReadTTD
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:209,1
    - Dst: auto::setWriteTTD
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:210,1
    - Dst: auto::getTimeouts
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:211,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:212,1
    - Dst: auto::size
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:212,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:213,1
    - Dst: auto::at
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:213,1
    - Dst: auto::getTimeouts
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:214,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:215,1
    - Dst: auto::size
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:215,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:216,1
    - Dst: auto::at
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:216,1
    - Dst: auto::removeReadFD
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:218,1
    - Dst: auto::removeWriteFD
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:219,1
    - Dst: close
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:222,1
    - Dst: close
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:223,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 111
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 225
      start: 26
    functionDepth: 1
    functionLinenumber: 26
    functionLinenumberEnd: 225
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-mplexer.cc
    functionUses: 0
    functionsReached:
    - FDMultiplexer::getMultiplexerMap
    - auto::getTimeouts
    - auto::run
    - auto::addReadFD
    - std::vector::at
    - auto::setReadTTD
    - BOOST_CHECK_THROW
    - auto::size
    - std::vector::size
    - auto::getAvailableFDs
    - setNonBlocking
    - auto::removeReadFD
    - BOOST_REQUIRE
    - boost::any_cast<bool*>
    - BOOST_REQUIRE_EQUAL
    - second
    - BOOST_REQUIRE_GT
    - write
    - auto::setWriteTTD
    - std::vector::clear
    - read
    - pipe
    - BOOST_CHECK_EQUAL
    - std::unique_ptr<FDMultiplexer>
    - auto::addWriteFD
    - auto::removeWriteFD
    - auto::at
    - BOOST_CHECK
    - close
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_MPlexer)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: FDMultiplexer::getMultiplexerMap
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:229,1
    - Dst: std::unique_ptr<FDMultiplexer>
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:230,1
    - Dst: second
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:230,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:231,1
    - Dst: socketpair
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:235,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:236,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:237,1
    - Dst: setNonBlocking
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:237,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:238,1
    - Dst: setNonBlocking
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:238,1
    - Dst: gettimeofday
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:241,1
    - Dst: boost::any_cast<bool*>
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:249,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:250,1
    - Dst: boost::any_cast<bool*>
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:254,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:255,1
    - Dst: auto::addReadFD
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:258,1
    - Dst: auto::addWriteFD
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:262,1
    - Dst: std::vector::clear
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:268,1
    - Dst: auto::getAvailableFDs
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:269,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:270,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:270,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:271,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:271,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:274,1
    - Dst: write
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:274,1
    - Dst: std::vector::clear
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:276,1
    - Dst: auto::getAvailableFDs
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:277,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:278,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:278,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:279,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:279,1
    - Dst: auto::run
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:281,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:282,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:283,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:284,1
    - Dst: auto::removeReadFD
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:287,1
    - Dst: std::vector::clear
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:291,1
    - Dst: auto::getAvailableFDs
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:292,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:293,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:293,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:294,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:294,1
    - Dst: auto::run
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:295,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:296,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:297,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:298,1
    - Dst: auto::removeWriteFD
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:300,1
    - Dst: close
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:303,1
    - Dst: close
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:304,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 42
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 306
      start: 227
    functionDepth: 1
    functionLinenumber: 227
    functionLinenumberEnd: 306
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-mplexer.cc
    functionUses: 0
    functionsReached:
    - FDMultiplexer::getMultiplexerMap
    - auto::addReadFD
    - auto::run
    - std::vector::at
    - gettimeofday
    - std::vector::size
    - setNonBlocking
    - auto::getAvailableFDs
    - auto::removeReadFD
    - BOOST_REQUIRE
    - boost::any_cast<bool*>
    - BOOST_REQUIRE_EQUAL
    - second
    - write
    - std::vector::clear
    - auto::addWriteFD
    - std::unique_ptr<FDMultiplexer>
    - BOOST_CHECK_EQUAL
    - auto::removeWriteFD
    - socketpair
    - close
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_MPlexer_ReadAndWrite)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: boost::any_cast<bool*>
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:319,1
    - Dst: boost::any_cast<bool*>
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:323,1
    - Dst: gettimeofday
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:329,1
    - Dst: DTime::DTime
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:332,1
    - Dst: std::vector::reserve
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:334,1
    - Dst: FDMultiplexer::getMultiplexerMap
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:336,1
    - Dst: std::unique_ptr<FDMultiplexer>
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:337,1
    - Dst: second
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:337,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:338,1
    - Dst: auto::getName
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:339,1
    - Dst: socketpair
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:342,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:343,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:344,1
    - Dst: setNonBlocking
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:344,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:345,1
    - Dst: setNonBlocking
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:345,1
    - Dst: DTime::set
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:348,1
    - Dst: auto::addReadFD
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:350,1
    - Dst: auto::addWriteFD
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:354,1
    - Dst: DTime::udiff
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:359,1
    - Dst: std::vector::clear
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:361,1
    - Dst: DTime::set
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:362,1
    - Dst: auto::getAvailableFDs
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:363,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:364,1
    - Dst: DTime::udiff
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:364,1
    - Dst: DTime::set
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:366,1
    - Dst: auto::run
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:367,1
    - Dst: DTime::udiff
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:368,1
    - Dst: DTime::set
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:370,1
    - Dst: auto::removeWriteFD
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:373,1
    - Dst: DTime::udiff
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:375,1
    - Dst: write
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:378,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:378,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:378,1
    - Dst: std::vector::clear
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:380,1
    - Dst: DTime::set
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:381,1
    - Dst: auto::getAvailableFDs
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:382,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:383,1
    - Dst: DTime::udiff
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:383,1
    - Dst: DTime::set
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:385,1
    - Dst: auto::run
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:386,1
    - Dst: DTime::udiff
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:387,1
    - Dst: DTime::set
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:389,1
    - Dst: auto::removeReadFD
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:391,1
    - Dst: DTime::udiff
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:393,1
    - Dst: close
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:397,1
    - Dst: close
      Src: /src/pdns/pdns/recursordist/test-mplexer.cc:398,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 45
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 401
      start: 309
    functionDepth: 1
    functionLinenumber: 309
    functionLinenumberEnd: 401
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-mplexer.cc
    functionUses: 0
    functionsReached:
    - FDMultiplexer::getMultiplexerMap
    - auto::addReadFD
    - auto::run
    - std::vector::at
    - gettimeofday
    - DTime::set
    - std::vector::size
    - setNonBlocking
    - auto::getAvailableFDs
    - auto::removeReadFD
    - DTime::DTime
    - BOOST_REQUIRE
    - boost::any_cast<bool*>
    - BOOST_REQUIRE_EQUAL
    - second
    - DTime::udiff
    - auto::getName
    - std::vector::reserve
    - write
    - std::vector::clear
    - auto::addWriteFD
    - std::unique_ptr<FDMultiplexer>
    - auto::removeWriteFD
    - socketpair
    - close
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_MPlexer_Bench)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' buffer'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 154
      start: 151
    functionDepth: 0
    functionLinenumber: 151
    functionLinenumberEnd: 154
    functionName: pdns::ProtoZero::Message::Message
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Message(std::string& buffer)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 155
    functionDepth: 0
    functionLinenumber: 155
    functionLinenumberEnd: 155
    functionName: ~Message()
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~Message()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 156
      start: 156
    functionDepth: 0
    functionLinenumber: 156
    functionLinenumberEnd: 156
    functionName: pdns::ProtoZero::Message::Message
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Message(const Message&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 157
      start: 157
    functionDepth: 0
    functionLinenumber: 157
    functionLinenumberEnd: 157
    functionName: pdns::ProtoZero::Message::Message
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Message(Message&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 158
      start: 158
    functionDepth: 0
    functionLinenumber: 158
    functionLinenumberEnd: 158
    functionName: '& operator=(const Message&)'
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Message
    signature: Message & operator=(const Message&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 159
      start: 159
    functionDepth: 0
    functionLinenumber: 159
    functionLinenumberEnd: 159
    functionName: '& operator=(Message&&)'
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Message
    signature: Message & operator=(Message&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_enum
      Src: /src/pdns/pdns/recursordist/protozero.hh:166,1
    - Dst: static_cast<int32_t>
      Src: /src/pdns/pdns/recursordist/protozero.hh:166,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - mtype
    argTypes:
    - MessageType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 167
      start: 164
    functionDepth: 0
    functionLinenumber: 164
    functionLinenumberEnd: 167
    functionName: pdns::ProtoZero::Message::setType
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 6
    functionsReached:
    - static_cast<int32_t>
    - pdns::ProtoZero::Message::add_enum
    linkageType: ''
    returnType: void
    signature: void setType(MessageType mtype)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_enum
      Src: /src/pdns/pdns/recursordist/protozero.hh:171,1
    - Dst: static_cast<int32_t>
      Src: /src/pdns/pdns/recursordist/protozero.hh:171,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - version
    argTypes:
    - HTTPVersion
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 172
      start: 169
    functionDepth: 0
    functionLinenumber: 169
    functionLinenumberEnd: 172
    functionName: pdns::ProtoZero::Message::setHTTPVersion
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 1
    functionsReached:
    - static_cast<int32_t>
    - pdns::ProtoZero::Message::add_enum
    linkageType: ''
    returnType: void
    signature: void setHTTPVersion(HTTPVersion version)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_bytes
      Src: /src/pdns/pdns/recursordist/protozero.hh:176,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/recursordist/protozero.hh:176,1
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/protozero.hh:176,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/protozero.hh:176,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' uniqueId'
    argTypes:
    - boost::uuids::uuid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 177
      start: 174
    functionDepth: 0
    functionLinenumber: 174
    functionLinenumberEnd: 177
    functionName: pdns::ProtoZero::Message::setMessageIdentity
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 0
    functionsReached:
    - reinterpret_cast<const char*>
    - pdns::ProtoZero::Message::add_bytes
    - size
    - begin
    linkageType: ''
    returnType: void
    signature: void setMessageIdentity(const boost::uuids::uuid& uniqueId)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_bytes
      Src: /src/pdns/pdns/recursordist/protozero.hh:181,1
    - Dst: data
      Src: /src/pdns/pdns/recursordist/protozero.hh:181,1
    - Dst: length
      Src: /src/pdns/pdns/recursordist/protozero.hh:181,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' serverIdentity'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 182
      start: 179
    functionDepth: 0
    functionLinenumber: 179
    functionLinenumberEnd: 182
    functionName: pdns::ProtoZero::Message::setServerIdentity
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 1
    functionsReached:
    - length
    - pdns::ProtoZero::Message::add_bytes
    - data
    linkageType: ''
    returnType: void
    signature: void setServerIdentity(const std::string& serverIdentity)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_enum
      Src: /src/pdns/pdns/recursordist/protozero.hh:186,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - family
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 187
      start: 184
    functionDepth: 0
    functionLinenumber: 184
    functionLinenumberEnd: 187
    functionName: pdns::ProtoZero::Message::setSocketFamily
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 0
    functionsReached:
    - pdns::ProtoZero::Message::add_enum
    linkageType: ''
    returnType: void
    signature: void setSocketFamily(int family)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_enum
      Src: /src/pdns/pdns/recursordist/protozero.hh:191,1
    - Dst: static_cast<int32_t>
      Src: /src/pdns/pdns/recursordist/protozero.hh:191,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - proto
    argTypes:
    - TransportProtocol
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 192
      start: 189
    functionDepth: 0
    functionLinenumber: 189
    functionLinenumberEnd: 192
    functionName: pdns::ProtoZero::Message::setSocketProtocol
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 0
    functionsReached:
    - static_cast<int32_t>
    - pdns::ProtoZero::Message::add_enum
    linkageType: ''
    returnType: void
    signature: void setSocketProtocol(TransportProtocol proto)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: encodeComboAddress
      Src: /src/pdns/pdns/recursordist/protozero.hh:196,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/recursordist/protozero.hh:196,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' address'
    argTypes:
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 197
      start: 194
    functionDepth: 1
    functionLinenumber: 194
    functionLinenumberEnd: 197
    functionName: pdns::ProtoZero::Message::setFrom
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 0
    functionsReached:
    - static_cast<protozero::pbf_tag_type>
    - encodeComboAddress
    linkageType: ''
    returnType: void
    signature: void setFrom(const ComboAddress& address)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: encodeComboAddress
      Src: /src/pdns/pdns/recursordist/protozero.hh:201,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/recursordist/protozero.hh:201,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' address'
    argTypes:
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 202
      start: 199
    functionDepth: 1
    functionLinenumber: 199
    functionLinenumberEnd: 202
    functionName: pdns::ProtoZero::Message::setTo
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 0
    functionsReached:
    - static_cast<protozero::pbf_tag_type>
    - encodeComboAddress
    linkageType: ''
    returnType: void
    signature: void setTo(const ComboAddress& address)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint64
      Src: /src/pdns/pdns/recursordist/protozero.hh:206,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - len
    argTypes:
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 207
      start: 204
    functionDepth: 0
    functionLinenumber: 204
    functionLinenumberEnd: 207
    functionName: pdns::ProtoZero::Message::setInBytes
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 0
    functionsReached:
    - pdns::ProtoZero::Message::add_uint64
    linkageType: ''
    returnType: void
    signature: void setInBytes(uint64_t len)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: gettime
      Src: /src/pdns/pdns/recursordist/protozero.hh:212,1
    - Dst: pdns::ProtoZero::Message::setTime
      Src: /src/pdns/pdns/recursordist/protozero.hh:214,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 215
      start: 209
    functionDepth: 0
    functionLinenumber: 209
    functionLinenumberEnd: 215
    functionName: pdns::ProtoZero::Message::setTime
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 11
    functionsReached:
    - pdns::ProtoZero::Message::setTime
    - gettime
    linkageType: ''
    returnType: void
    signature: void setTime()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint32
      Src: /src/pdns/pdns/recursordist/protozero.hh:220,1
    - Dst: pdns::ProtoZero::Message::add_uint32
      Src: /src/pdns/pdns/recursordist/protozero.hh:221,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - sec
    - usec
    argTypes:
    - time_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 222
      start: 217
    functionDepth: 0
    functionLinenumber: 217
    functionLinenumberEnd: 222
    functionName: pdns::ProtoZero::Message::setTime
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 11
    functionsReached:
    - pdns::ProtoZero::Message::add_uint32
    linkageType: ''
    returnType: void
    signature: void setTime(time_t sec, uint32_t usec)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint32
      Src: /src/pdns/pdns/recursordist/protozero.hh:226,1
    - Dst: ntohs
      Src: /src/pdns/pdns/recursordist/protozero.hh:226,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - qid
    argTypes:
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 227
      start: 224
    functionDepth: 0
    functionLinenumber: 224
    functionLinenumberEnd: 227
    functionName: pdns::ProtoZero::Message::setId
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 0
    functionsReached:
    - ntohs
    - pdns::ProtoZero::Message::add_uint32
    linkageType: ''
    returnType: void
    signature: void setId(uint16_t qid)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/recursordist/protozero.hh:231,1
    - Dst: encodeDNSName
      Src: /src/pdns/pdns/recursordist/protozero.hh:232,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/recursordist/protozero.hh:232,1
    - Dst: protozero::pbf_writer::add_uint32
      Src: /src/pdns/pdns/recursordist/protozero.hh:233,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/recursordist/protozero.hh:233,1
    - Dst: protozero::pbf_writer::add_uint32
      Src: /src/pdns/pdns/recursordist/protozero.hh:234,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/recursordist/protozero.hh:234,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - ' qname'
    - qtype
    - qclass
    argTypes:
    - DNSName
    - uint16_t
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 235
      start: 229
    functionDepth: 0
    functionLinenumber: 229
    functionLinenumberEnd: 235
    functionName: pdns::ProtoZero::Message::setQuestion
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 3
    functionsReached:
    - static_cast<protozero::pbf_tag_type>
    - protozero::pbf_writer::add_uint32
    - encodeDNSName
    linkageType: ''
    returnType: void
    signature: void setQuestion(const DNSName& qname, uint16_t qtype, uint16_t qclass)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/recursordist/protozero.hh:239,1
    - Dst: protozero::pbf_writer::add_string
      Src: /src/pdns/pdns/recursordist/protozero.hh:240,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/recursordist/protozero.hh:240,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/recursordist/protozero.hh:241,1
    - Dst: protozero::pbf_writer::add_string
      Src: /src/pdns/pdns/recursordist/protozero.hh:243,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/recursordist/protozero.hh:243,1
    - Dst: protozero::pbf_writer::add_uint64
      Src: /src/pdns/pdns/recursordist/protozero.hh:246,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/recursordist/protozero.hh:246,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - ' key'
    - ' stringVal'
    - ' intVal'
    argTypes:
    - std::string
    - std::unordered_set<std::string>
    - std::unordered_set<int64_t>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 248
      start: 237
    functionDepth: 0
    functionLinenumber: 237
    functionLinenumberEnd: 248
    functionName: pdns::ProtoZero::Message::setMeta
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 1
    functionsReached:
    - protozero::pbf_writer::add_uint64
    - static_cast<protozero::pbf_tag_type>
    - protozero::pbf_writer::add_string
    linkageType: ''
    returnType: void
    signature: void setMeta(const std::string& key, const std::unordered_set<std::string>&
      stringVal, const std::unordered_set<int64_t>& intVal)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: encodeNetmask
      Src: /src/pdns/pdns/recursordist/protozero.hh:252,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/recursordist/protozero.hh:252,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' netmask'
    - mask
    argTypes:
    - Netmask
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 253
      start: 250
    functionDepth: 1
    functionLinenumber: 250
    functionLinenumberEnd: 253
    functionName: pdns::ProtoZero::Message::setEDNSSubnet
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 1
    functionsReached:
    - static_cast<protozero::pbf_tag_type>
    - encodeNetmask
    linkageType: ''
    returnType: void
    signature: void setEDNSSubnet(const Netmask& netmask, uint8_t mask)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/protozero.hh:257,1
    - Dst: pdns::ProtoZero::Message::add_string
      Src: /src/pdns/pdns/recursordist/protozero.hh:258,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ' req'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 260
      start: 255
    functionDepth: 0
    functionLinenumber: 255
    functionLinenumberEnd: 260
    functionName: pdns::ProtoZero::Message::setRequestorId
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 1
    functionsReached:
    - empty
    - pdns::ProtoZero::Message::add_string
    linkageType: ''
    returnType: void
    signature: void setRequestorId(const std::string& req)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_bytes
      Src: /src/pdns/pdns/recursordist/protozero.hh:264,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/recursordist/protozero.hh:264,1
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/protozero.hh:264,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/protozero.hh:264,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' uniqueId'
    argTypes:
    - boost::uuids::uuid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 265
      start: 262
    functionDepth: 0
    functionLinenumber: 262
    functionLinenumberEnd: 265
    functionName: pdns::ProtoZero::Message::setInitialRequestID
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 0
    functionsReached:
    - reinterpret_cast<const char*>
    - pdns::ProtoZero::Message::add_bytes
    - size
    - begin
    linkageType: ''
    returnType: void
    signature: void setInitialRequestID(const boost::uuids::uuid& uniqueId)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/protozero.hh:269,1
    - Dst: pdns::ProtoZero::Message::add_string
      Src: /src/pdns/pdns/recursordist/protozero.hh:270,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ' deviceId'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 272
      start: 267
    functionDepth: 0
    functionLinenumber: 267
    functionLinenumberEnd: 272
    functionName: pdns::ProtoZero::Message::setDeviceId
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 1
    functionsReached:
    - empty
    - pdns::ProtoZero::Message::add_string
    linkageType: ''
    returnType: void
    signature: void setDeviceId(const std::string& deviceId)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_bool
      Src: /src/pdns/pdns/recursordist/protozero.hh:276,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - nod
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 277
      start: 274
    functionDepth: 0
    functionLinenumber: 274
    functionLinenumberEnd: 277
    functionName: pdns::ProtoZero::Message::setNewlyObservedDomain
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 0
    functionsReached:
    - pdns::ProtoZero::Message::add_bool
    linkageType: ''
    returnType: void
    signature: void setNewlyObservedDomain(bool nod)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/protozero.hh:281,1
    - Dst: pdns::ProtoZero::Message::add_string
      Src: /src/pdns/pdns/recursordist/protozero.hh:282,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ' name'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 284
      start: 279
    functionDepth: 0
    functionLinenumber: 279
    functionLinenumberEnd: 284
    functionName: pdns::ProtoZero::Message::setDeviceName
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 1
    functionsReached:
    - empty
    - pdns::ProtoZero::Message::add_string
    linkageType: ''
    returnType: void
    signature: void setDeviceName(const std::string& name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint32
      Src: /src/pdns/pdns/recursordist/protozero.hh:288,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - port
    argTypes:
    - in_port_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 289
      start: 286
    functionDepth: 0
    functionLinenumber: 286
    functionLinenumberEnd: 289
    functionName: pdns::ProtoZero::Message::setFromPort
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 0
    functionsReached:
    - pdns::ProtoZero::Message::add_uint32
    linkageType: ''
    returnType: void
    signature: void setFromPort(in_port_t port)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint32
      Src: /src/pdns/pdns/recursordist/protozero.hh:293,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - port
    argTypes:
    - in_port_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 294
      start: 291
    functionDepth: 0
    functionLinenumber: 291
    functionLinenumberEnd: 294
    functionName: pdns::ProtoZero::Message::setToPort
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 0
    functionsReached:
    - pdns::ProtoZero::Message::add_uint32
    linkageType: ''
    returnType: void
    signature: void setToPort(in_port_t port)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint64
      Src: /src/pdns/pdns/recursordist/protozero.hh:298,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - wid
    argTypes:
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 299
      start: 296
    functionDepth: 0
    functionLinenumber: 296
    functionLinenumberEnd: 299
    functionName: pdns::ProtoZero::Message::setWorkerId
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 0
    functionsReached:
    - pdns::ProtoZero::Message::add_uint64
    linkageType: ''
    returnType: void
    signature: void setWorkerId(uint64_t wid)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_bool
      Src: /src/pdns/pdns/recursordist/protozero.hh:303,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - hit
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 304
      start: 301
    functionDepth: 0
    functionLinenumber: 301
    functionLinenumberEnd: 304
    functionName: pdns::ProtoZero::Message::setPacketCacheHit
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 1
    functionsReached:
    - pdns::ProtoZero::Message::add_bool
    linkageType: ''
    returnType: void
    signature: void setPacketCacheHit(bool hit)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint32
      Src: /src/pdns/pdns/recursordist/protozero.hh:308,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - num
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 309
      start: 306
    functionDepth: 0
    functionLinenumber: 306
    functionLinenumberEnd: 309
    functionName: pdns::ProtoZero::Message::setOutgoingQueries
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 1
    functionsReached:
    - pdns::ProtoZero::Message::add_uint32
    linkageType: ''
    returnType: void
    signature: void setOutgoingQueries(uint32_t num)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint32
      Src: /src/pdns/pdns/recursordist/protozero.hh:313,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - flags
    argTypes:
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 314
      start: 311
    functionDepth: 0
    functionLinenumber: 311
    functionLinenumberEnd: 314
    functionName: pdns::ProtoZero::Message::setHeaderFlags
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 1
    functionsReached:
    - pdns::ProtoZero::Message::add_uint32
    linkageType: ''
    returnType: void
    signature: void setHeaderFlags(uint16_t flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint32
      Src: /src/pdns/pdns/recursordist/protozero.hh:318,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - version
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 319
      start: 316
    functionDepth: 0
    functionLinenumber: 316
    functionLinenumberEnd: 319
    functionName: pdns::ProtoZero::Message::setEDNSVersion
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 0
    functionsReached:
    - pdns::ProtoZero::Message::add_uint32
    linkageType: ''
    returnType: void
    signature: void setEDNSVersion(uint32_t version)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/protozero.hh:323,1
    - Dst: pdns::ProtoZero::Message::add_string
      Src: /src/pdns/pdns/recursordist/protozero.hh:324,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ' data'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 326
      start: 321
    functionDepth: 0
    functionLinenumber: 321
    functionLinenumberEnd: 326
    functionName: pdns::ProtoZero::Message::setOpenTelemetryData
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 2
    functionsReached:
    - empty
    - pdns::ProtoZero::Message::add_string
    linkageType: ''
    returnType: void
    signature: void setOpenTelemetryData(const std::string& data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint32
      Src: /src/pdns/pdns/recursordist/protozero.hh:330,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ede
    argTypes:
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 331
      start: 328
    functionDepth: 0
    functionLinenumber: 328
    functionLinenumberEnd: 331
    functionName: pdns::ProtoZero::Message::setEDE
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 0
    functionsReached:
    - pdns::ProtoZero::Message::add_uint32
    linkageType: ''
    returnType: void
    signature: void setEDE(const uint16_t ede)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::string::empty
      Src: /src/pdns/pdns/recursordist/protozero.hh:335,1
    - Dst: pdns::ProtoZero::Message::add_string
      Src: /src/pdns/pdns/recursordist/protozero.hh:336,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - edeText
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 338
      start: 333
    functionDepth: 0
    functionLinenumber: 333
    functionLinenumberEnd: 338
    functionName: pdns::ProtoZero::Message::setEDEText
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 0
    functionsReached:
    - pdns::ProtoZero::Message::add_string
    - std::string::empty
    linkageType: ''
    returnType: void
    signature: void setEDEText(const std::string edeText)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_bytes
      Src: /src/pdns/pdns/recursordist/protozero.hh:342,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/recursordist/protozero.hh:342,1
    - Dst: data
      Src: /src/pdns/pdns/recursordist/protozero.hh:342,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/protozero.hh:342,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' traceID'
    argTypes:
    - std::array<uint8_t, 16>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 343
      start: 340
    functionDepth: 0
    functionLinenumber: 340
    functionLinenumberEnd: 343
    functionName: pdns::ProtoZero::Message::setOpenTelemetryTraceID
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 1
    functionsReached:
    - reinterpret_cast<const char*>
    - pdns::ProtoZero::Message::add_bytes
    - size
    - data
    linkageType: ''
    returnType: void
    signature: void setOpenTelemetryTraceID(const std::array<uint8_t, 16>& traceID)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/recursordist/protozero.hh:347,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 348
      start: 345
    functionDepth: 0
    functionLinenumber: 345
    functionLinenumberEnd: 348
    functionName: pdns::ProtoZero::Message::startResponse
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 2
    functionsReached:
    - static_cast<protozero::pbf_tag_type>
    linkageType: ''
    returnType: void
    signature: void startResponse()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: commit
      Src: /src/pdns/pdns/recursordist/protozero.hh:352,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 353
      start: 350
    functionDepth: 0
    functionLinenumber: 350
    functionLinenumberEnd: 353
    functionName: pdns::ProtoZero::Message::commitResponse
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 1
    functionsReached:
    - commit
    linkageType: ''
    returnType: void
    signature: void commitResponse()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint32
      Src: /src/pdns/pdns/recursordist/protozero.hh:357,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/recursordist/protozero.hh:357,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rcode
    argTypes:
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 358
      start: 355
    functionDepth: 0
    functionLinenumber: 355
    functionLinenumberEnd: 358
    functionName: pdns::ProtoZero::Message::setResponseCode
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 2
    functionsReached:
    - static_cast<protozero::pbf_tag_type>
    - pdns::ProtoZero::Message::add_uint32
    linkageType: ''
    returnType: void
    signature: void setResponseCode(uint8_t rcode)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint32
      Src: /src/pdns/pdns/recursordist/protozero.hh:363,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/recursordist/protozero.hh:363,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 364
      start: 360
    functionDepth: 0
    functionLinenumber: 360
    functionLinenumberEnd: 364
    functionName: pdns::ProtoZero::Message::setNetworkErrorResponseCode
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 0
    functionsReached:
    - static_cast<protozero::pbf_tag_type>
    - pdns::ProtoZero::Message::add_uint32
    linkageType: ''
    returnType: void
    signature: void setNetworkErrorResponseCode()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_string
      Src: /src/pdns/pdns/recursordist/protozero.hh:368,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/recursordist/protozero.hh:368,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' policy'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 369
      start: 366
    functionDepth: 0
    functionLinenumber: 366
    functionLinenumberEnd: 369
    functionName: pdns::ProtoZero::Message::setAppliedPolicy
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 0
    functionsReached:
    - pdns::ProtoZero::Message::add_string
    - static_cast<protozero::pbf_tag_type>
    linkageType: ''
    returnType: void
    signature: void setAppliedPolicy(const std::string& policy)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::addPolicyTag
      Src: /src/pdns/pdns/recursordist/protozero.hh:374,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - ' tags'
    argTypes:
    - std::unordered_set<std::string>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 376
      start: 371
    functionDepth: 0
    functionLinenumber: 371
    functionLinenumberEnd: 376
    functionName: pdns::ProtoZero::Message::addPolicyTags
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 0
    functionsReached:
    - pdns::ProtoZero::Message::addPolicyTag
    linkageType: ''
    returnType: void
    signature: void addPolicyTags(const std::unordered_set<std::string>& tags)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_string
      Src: /src/pdns/pdns/recursordist/protozero.hh:380,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/recursordist/protozero.hh:380,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' tag'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 381
      start: 378
    functionDepth: 0
    functionLinenumber: 378
    functionLinenumberEnd: 381
    functionName: pdns::ProtoZero::Message::addPolicyTag
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 10
    functionsReached:
    - pdns::ProtoZero::Message::add_string
    - static_cast<protozero::pbf_tag_type>
    linkageType: ''
    returnType: void
    signature: void addPolicyTag(const string& tag)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint32
      Src: /src/pdns/pdns/recursordist/protozero.hh:385,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/recursordist/protozero.hh:385,1
    - Dst: pdns::ProtoZero::Message::add_uint32
      Src: /src/pdns/pdns/recursordist/protozero.hh:386,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/recursordist/protozero.hh:386,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - sec
    - usec
    argTypes:
    - uint32_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 387
      start: 383
    functionDepth: 0
    functionLinenumber: 383
    functionLinenumberEnd: 387
    functionName: pdns::ProtoZero::Message::setQueryTime
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 2
    functionsReached:
    - static_cast<protozero::pbf_tag_type>
    - pdns::ProtoZero::Message::add_uint32
    linkageType: ''
    returnType: void
    signature: void setQueryTime(uint32_t sec, uint32_t usec)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_enum
      Src: /src/pdns/pdns/recursordist/protozero.hh:399,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/recursordist/protozero.hh:399,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' writer'
    - type
    - value
    argTypes:
    - protozero::pbf_writer
    - Field
    - int32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 400
      start: 397
    functionDepth: 0
    functionLinenumber: 397
    functionLinenumberEnd: 400
    functionName: pdns::ProtoZero::Message::add_enum
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 45
    functionsReached:
    - static_cast<protozero::pbf_tag_type>
    - pdns::ProtoZero::Message::add_enum
    linkageType: ''
    returnType: void
    signature: void add_enum(protozero::pbf_writer& writer, Field type, int32_t value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_bool
      Src: /src/pdns/pdns/recursordist/protozero.hh:404,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/recursordist/protozero.hh:404,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' writer'
    - type
    - value
    argTypes:
    - protozero::pbf_writer
    - Field
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 405
      start: 402
    functionDepth: 0
    functionLinenumber: 402
    functionLinenumberEnd: 405
    functionName: pdns::ProtoZero::Message::add_bool
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 27
    functionsReached:
    - static_cast<protozero::pbf_tag_type>
    - pdns::ProtoZero::Message::add_bool
    linkageType: ''
    returnType: void
    signature: void add_bool(protozero::pbf_writer& writer, Field type, bool value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint32
      Src: /src/pdns/pdns/recursordist/protozero.hh:409,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/recursordist/protozero.hh:409,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' writer'
    - type
    - value
    argTypes:
    - protozero::pbf_writer
    - Field
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 410
      start: 407
    functionDepth: 0
    functionLinenumber: 407
    functionLinenumberEnd: 410
    functionName: pdns::ProtoZero::Message::add_uint32
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 108
    functionsReached:
    - static_cast<protozero::pbf_tag_type>
    - pdns::ProtoZero::Message::add_uint32
    linkageType: ''
    returnType: void
    signature: void add_uint32(protozero::pbf_writer& writer, Field type, uint32_t
      value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint64
      Src: /src/pdns/pdns/recursordist/protozero.hh:414,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/recursordist/protozero.hh:414,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' writer'
    - type
    - value
    argTypes:
    - protozero::pbf_writer
    - Field
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 415
      start: 412
    functionDepth: 0
    functionLinenumber: 412
    functionLinenumberEnd: 415
    functionName: pdns::ProtoZero::Message::add_uint64
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 27
    functionsReached:
    - pdns::ProtoZero::Message::add_uint64
    - static_cast<protozero::pbf_tag_type>
    linkageType: ''
    returnType: void
    signature: void add_uint64(protozero::pbf_writer& writer, Field type, uint64_t
      value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_bytes
      Src: /src/pdns/pdns/recursordist/protozero.hh:419,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/recursordist/protozero.hh:419,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - ' writer'
    - type
    - data
    - len
    argTypes:
    - protozero::pbf_writer
    - Field
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 420
      start: 417
    functionDepth: 0
    functionLinenumber: 417
    functionLinenumberEnd: 420
    functionName: pdns::ProtoZero::Message::add_bytes
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 45
    functionsReached:
    - static_cast<protozero::pbf_tag_type>
    - pdns::ProtoZero::Message::add_bytes
    linkageType: ''
    returnType: void
    signature: void add_bytes(protozero::pbf_writer& writer, Field type, const char*
      data, size_t len)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_string
      Src: /src/pdns/pdns/recursordist/protozero.hh:424,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/recursordist/protozero.hh:424,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' writer'
    - type
    - ' str'
    argTypes:
    - protozero::pbf_writer
    - Field
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 425
      start: 422
    functionDepth: 0
    functionLinenumber: 422
    functionLinenumberEnd: 425
    functionName: pdns::ProtoZero::Message::add_string
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 72
    functionsReached:
    - pdns::ProtoZero::Message::add_string
    - static_cast<protozero::pbf_tag_type>
    linkageType: ''
    returnType: void
    signature: void add_string(protozero::pbf_writer& writer, Field type, const std::string&
      str)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' buffer'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 154
      start: 151
    functionDepth: 0
    functionLinenumber: 151
    functionLinenumberEnd: 154
    functionName: pdns::ProtoZero::Message::Message
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Message(std::string& buffer)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 155
    functionDepth: 0
    functionLinenumber: 155
    functionLinenumberEnd: 155
    functionName: ~Message()
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~Message()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 156
      start: 156
    functionDepth: 0
    functionLinenumber: 156
    functionLinenumberEnd: 156
    functionName: pdns::ProtoZero::Message::Message
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Message(const Message&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 157
      start: 157
    functionDepth: 0
    functionLinenumber: 157
    functionLinenumberEnd: 157
    functionName: pdns::ProtoZero::Message::Message
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Message(Message&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 158
      start: 158
    functionDepth: 0
    functionLinenumber: 158
    functionLinenumberEnd: 158
    functionName: '& operator=(const Message&)'
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Message
    signature: Message & operator=(const Message&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 159
      start: 159
    functionDepth: 0
    functionLinenumber: 159
    functionLinenumberEnd: 159
    functionName: '& operator=(Message&&)'
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Message
    signature: Message & operator=(Message&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_enum
      Src: /src/pdns/pdns/recursordist/protozero.hh:166,1
    - Dst: static_cast<int32_t>
      Src: /src/pdns/pdns/recursordist/protozero.hh:166,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - mtype
    argTypes:
    - MessageType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 167
      start: 164
    functionDepth: 0
    functionLinenumber: 164
    functionLinenumberEnd: 167
    functionName: pdns::ProtoZero::Message::setType
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 6
    functionsReached:
    - static_cast<int32_t>
    - pdns::ProtoZero::Message::add_enum
    linkageType: ''
    returnType: void
    signature: void setType(MessageType mtype)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_enum
      Src: /src/pdns/pdns/recursordist/protozero.hh:171,1
    - Dst: static_cast<int32_t>
      Src: /src/pdns/pdns/recursordist/protozero.hh:171,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - version
    argTypes:
    - HTTPVersion
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 172
      start: 169
    functionDepth: 0
    functionLinenumber: 169
    functionLinenumberEnd: 172
    functionName: pdns::ProtoZero::Message::setHTTPVersion
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 1
    functionsReached:
    - static_cast<int32_t>
    - pdns::ProtoZero::Message::add_enum
    linkageType: ''
    returnType: void
    signature: void setHTTPVersion(HTTPVersion version)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_bytes
      Src: /src/pdns/pdns/recursordist/protozero.hh:176,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/recursordist/protozero.hh:176,1
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/protozero.hh:176,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/protozero.hh:176,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' uniqueId'
    argTypes:
    - boost::uuids::uuid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 177
      start: 174
    functionDepth: 0
    functionLinenumber: 174
    functionLinenumberEnd: 177
    functionName: pdns::ProtoZero::Message::setMessageIdentity
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 0
    functionsReached:
    - reinterpret_cast<const char*>
    - pdns::ProtoZero::Message::add_bytes
    - size
    - begin
    linkageType: ''
    returnType: void
    signature: void setMessageIdentity(const boost::uuids::uuid& uniqueId)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_bytes
      Src: /src/pdns/pdns/recursordist/protozero.hh:181,1
    - Dst: data
      Src: /src/pdns/pdns/recursordist/protozero.hh:181,1
    - Dst: length
      Src: /src/pdns/pdns/recursordist/protozero.hh:181,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' serverIdentity'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 182
      start: 179
    functionDepth: 0
    functionLinenumber: 179
    functionLinenumberEnd: 182
    functionName: pdns::ProtoZero::Message::setServerIdentity
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 1
    functionsReached:
    - length
    - pdns::ProtoZero::Message::add_bytes
    - data
    linkageType: ''
    returnType: void
    signature: void setServerIdentity(const std::string& serverIdentity)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_enum
      Src: /src/pdns/pdns/recursordist/protozero.hh:186,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - family
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 187
      start: 184
    functionDepth: 0
    functionLinenumber: 184
    functionLinenumberEnd: 187
    functionName: pdns::ProtoZero::Message::setSocketFamily
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 0
    functionsReached:
    - pdns::ProtoZero::Message::add_enum
    linkageType: ''
    returnType: void
    signature: void setSocketFamily(int family)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_enum
      Src: /src/pdns/pdns/recursordist/protozero.hh:191,1
    - Dst: static_cast<int32_t>
      Src: /src/pdns/pdns/recursordist/protozero.hh:191,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - proto
    argTypes:
    - TransportProtocol
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 192
      start: 189
    functionDepth: 0
    functionLinenumber: 189
    functionLinenumberEnd: 192
    functionName: pdns::ProtoZero::Message::setSocketProtocol
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 0
    functionsReached:
    - static_cast<int32_t>
    - pdns::ProtoZero::Message::add_enum
    linkageType: ''
    returnType: void
    signature: void setSocketProtocol(TransportProtocol proto)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: encodeComboAddress
      Src: /src/pdns/pdns/recursordist/protozero.hh:196,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/recursordist/protozero.hh:196,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' address'
    argTypes:
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 197
      start: 194
    functionDepth: 1
    functionLinenumber: 194
    functionLinenumberEnd: 197
    functionName: pdns::ProtoZero::Message::setFrom
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 0
    functionsReached:
    - static_cast<protozero::pbf_tag_type>
    - encodeComboAddress
    linkageType: ''
    returnType: void
    signature: void setFrom(const ComboAddress& address)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: encodeComboAddress
      Src: /src/pdns/pdns/recursordist/protozero.hh:201,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/recursordist/protozero.hh:201,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' address'
    argTypes:
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 202
      start: 199
    functionDepth: 1
    functionLinenumber: 199
    functionLinenumberEnd: 202
    functionName: pdns::ProtoZero::Message::setTo
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 0
    functionsReached:
    - static_cast<protozero::pbf_tag_type>
    - encodeComboAddress
    linkageType: ''
    returnType: void
    signature: void setTo(const ComboAddress& address)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint64
      Src: /src/pdns/pdns/recursordist/protozero.hh:206,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - len
    argTypes:
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 207
      start: 204
    functionDepth: 0
    functionLinenumber: 204
    functionLinenumberEnd: 207
    functionName: pdns::ProtoZero::Message::setInBytes
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 0
    functionsReached:
    - pdns::ProtoZero::Message::add_uint64
    linkageType: ''
    returnType: void
    signature: void setInBytes(uint64_t len)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: gettime
      Src: /src/pdns/pdns/recursordist/protozero.hh:212,1
    - Dst: pdns::ProtoZero::Message::setTime
      Src: /src/pdns/pdns/recursordist/protozero.hh:214,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 215
      start: 209
    functionDepth: 0
    functionLinenumber: 209
    functionLinenumberEnd: 215
    functionName: pdns::ProtoZero::Message::setTime
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 12
    functionsReached:
    - pdns::ProtoZero::Message::setTime
    - gettime
    linkageType: ''
    returnType: void
    signature: void setTime()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint32
      Src: /src/pdns/pdns/recursordist/protozero.hh:220,1
    - Dst: pdns::ProtoZero::Message::add_uint32
      Src: /src/pdns/pdns/recursordist/protozero.hh:221,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - sec
    - usec
    argTypes:
    - time_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 222
      start: 217
    functionDepth: 0
    functionLinenumber: 217
    functionLinenumberEnd: 222
    functionName: pdns::ProtoZero::Message::setTime
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 12
    functionsReached:
    - pdns::ProtoZero::Message::add_uint32
    linkageType: ''
    returnType: void
    signature: void setTime(time_t sec, uint32_t usec)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint32
      Src: /src/pdns/pdns/recursordist/protozero.hh:226,1
    - Dst: ntohs
      Src: /src/pdns/pdns/recursordist/protozero.hh:226,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - qid
    argTypes:
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 227
      start: 224
    functionDepth: 0
    functionLinenumber: 224
    functionLinenumberEnd: 227
    functionName: pdns::ProtoZero::Message::setId
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 0
    functionsReached:
    - ntohs
    - pdns::ProtoZero::Message::add_uint32
    linkageType: ''
    returnType: void
    signature: void setId(uint16_t qid)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/recursordist/protozero.hh:231,1
    - Dst: encodeDNSName
      Src: /src/pdns/pdns/recursordist/protozero.hh:232,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/recursordist/protozero.hh:232,1
    - Dst: protozero::pbf_writer::add_uint32
      Src: /src/pdns/pdns/recursordist/protozero.hh:233,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/recursordist/protozero.hh:233,1
    - Dst: protozero::pbf_writer::add_uint32
      Src: /src/pdns/pdns/recursordist/protozero.hh:234,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/recursordist/protozero.hh:234,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - ' qname'
    - qtype
    - qclass
    argTypes:
    - DNSName
    - uint16_t
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 235
      start: 229
    functionDepth: 0
    functionLinenumber: 229
    functionLinenumberEnd: 235
    functionName: pdns::ProtoZero::Message::setQuestion
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 3
    functionsReached:
    - static_cast<protozero::pbf_tag_type>
    - protozero::pbf_writer::add_uint32
    - encodeDNSName
    linkageType: ''
    returnType: void
    signature: void setQuestion(const DNSName& qname, uint16_t qtype, uint16_t qclass)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/recursordist/protozero.hh:239,1
    - Dst: protozero::pbf_writer::add_string
      Src: /src/pdns/pdns/recursordist/protozero.hh:240,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/recursordist/protozero.hh:240,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/recursordist/protozero.hh:241,1
    - Dst: protozero::pbf_writer::add_string
      Src: /src/pdns/pdns/recursordist/protozero.hh:243,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/recursordist/protozero.hh:243,1
    - Dst: protozero::pbf_writer::add_uint64
      Src: /src/pdns/pdns/recursordist/protozero.hh:246,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/recursordist/protozero.hh:246,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - ' key'
    - ' stringVal'
    - ' intVal'
    argTypes:
    - std::string
    - std::unordered_set<std::string>
    - std::unordered_set<int64_t>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 248
      start: 237
    functionDepth: 0
    functionLinenumber: 237
    functionLinenumberEnd: 248
    functionName: pdns::ProtoZero::Message::setMeta
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 1
    functionsReached:
    - protozero::pbf_writer::add_uint64
    - static_cast<protozero::pbf_tag_type>
    - protozero::pbf_writer::add_string
    linkageType: ''
    returnType: void
    signature: void setMeta(const std::string& key, const std::unordered_set<std::string>&
      stringVal, const std::unordered_set<int64_t>& intVal)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: encodeNetmask
      Src: /src/pdns/pdns/recursordist/protozero.hh:252,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/recursordist/protozero.hh:252,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' netmask'
    - mask
    argTypes:
    - Netmask
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 253
      start: 250
    functionDepth: 1
    functionLinenumber: 250
    functionLinenumberEnd: 253
    functionName: pdns::ProtoZero::Message::setEDNSSubnet
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 1
    functionsReached:
    - static_cast<protozero::pbf_tag_type>
    - encodeNetmask
    linkageType: ''
    returnType: void
    signature: void setEDNSSubnet(const Netmask& netmask, uint8_t mask)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/protozero.hh:257,1
    - Dst: pdns::ProtoZero::Message::add_string
      Src: /src/pdns/pdns/recursordist/protozero.hh:258,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ' req'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 260
      start: 255
    functionDepth: 0
    functionLinenumber: 255
    functionLinenumberEnd: 260
    functionName: pdns::ProtoZero::Message::setRequestorId
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 1
    functionsReached:
    - empty
    - pdns::ProtoZero::Message::add_string
    linkageType: ''
    returnType: void
    signature: void setRequestorId(const std::string& req)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_bytes
      Src: /src/pdns/pdns/recursordist/protozero.hh:264,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/recursordist/protozero.hh:264,1
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/protozero.hh:264,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/protozero.hh:264,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' uniqueId'
    argTypes:
    - boost::uuids::uuid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 265
      start: 262
    functionDepth: 0
    functionLinenumber: 262
    functionLinenumberEnd: 265
    functionName: pdns::ProtoZero::Message::setInitialRequestID
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 0
    functionsReached:
    - reinterpret_cast<const char*>
    - pdns::ProtoZero::Message::add_bytes
    - size
    - begin
    linkageType: ''
    returnType: void
    signature: void setInitialRequestID(const boost::uuids::uuid& uniqueId)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/protozero.hh:269,1
    - Dst: pdns::ProtoZero::Message::add_string
      Src: /src/pdns/pdns/recursordist/protozero.hh:270,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ' deviceId'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 272
      start: 267
    functionDepth: 0
    functionLinenumber: 267
    functionLinenumberEnd: 272
    functionName: pdns::ProtoZero::Message::setDeviceId
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 1
    functionsReached:
    - empty
    - pdns::ProtoZero::Message::add_string
    linkageType: ''
    returnType: void
    signature: void setDeviceId(const std::string& deviceId)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_bool
      Src: /src/pdns/pdns/recursordist/protozero.hh:276,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - nod
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 277
      start: 274
    functionDepth: 0
    functionLinenumber: 274
    functionLinenumberEnd: 277
    functionName: pdns::ProtoZero::Message::setNewlyObservedDomain
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 0
    functionsReached:
    - pdns::ProtoZero::Message::add_bool
    linkageType: ''
    returnType: void
    signature: void setNewlyObservedDomain(bool nod)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/protozero.hh:281,1
    - Dst: pdns::ProtoZero::Message::add_string
      Src: /src/pdns/pdns/recursordist/protozero.hh:282,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ' name'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 284
      start: 279
    functionDepth: 0
    functionLinenumber: 279
    functionLinenumberEnd: 284
    functionName: pdns::ProtoZero::Message::setDeviceName
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 1
    functionsReached:
    - empty
    - pdns::ProtoZero::Message::add_string
    linkageType: ''
    returnType: void
    signature: void setDeviceName(const std::string& name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint32
      Src: /src/pdns/pdns/recursordist/protozero.hh:288,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - port
    argTypes:
    - in_port_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 289
      start: 286
    functionDepth: 0
    functionLinenumber: 286
    functionLinenumberEnd: 289
    functionName: pdns::ProtoZero::Message::setFromPort
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 0
    functionsReached:
    - pdns::ProtoZero::Message::add_uint32
    linkageType: ''
    returnType: void
    signature: void setFromPort(in_port_t port)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint32
      Src: /src/pdns/pdns/recursordist/protozero.hh:293,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - port
    argTypes:
    - in_port_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 294
      start: 291
    functionDepth: 0
    functionLinenumber: 291
    functionLinenumberEnd: 294
    functionName: pdns::ProtoZero::Message::setToPort
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 0
    functionsReached:
    - pdns::ProtoZero::Message::add_uint32
    linkageType: ''
    returnType: void
    signature: void setToPort(in_port_t port)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint64
      Src: /src/pdns/pdns/recursordist/protozero.hh:298,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - wid
    argTypes:
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 299
      start: 296
    functionDepth: 0
    functionLinenumber: 296
    functionLinenumberEnd: 299
    functionName: pdns::ProtoZero::Message::setWorkerId
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 0
    functionsReached:
    - pdns::ProtoZero::Message::add_uint64
    linkageType: ''
    returnType: void
    signature: void setWorkerId(uint64_t wid)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_bool
      Src: /src/pdns/pdns/recursordist/protozero.hh:303,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - hit
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 304
      start: 301
    functionDepth: 0
    functionLinenumber: 301
    functionLinenumberEnd: 304
    functionName: pdns::ProtoZero::Message::setPacketCacheHit
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 1
    functionsReached:
    - pdns::ProtoZero::Message::add_bool
    linkageType: ''
    returnType: void
    signature: void setPacketCacheHit(bool hit)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint32
      Src: /src/pdns/pdns/recursordist/protozero.hh:308,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - num
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 309
      start: 306
    functionDepth: 0
    functionLinenumber: 306
    functionLinenumberEnd: 309
    functionName: pdns::ProtoZero::Message::setOutgoingQueries
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 1
    functionsReached:
    - pdns::ProtoZero::Message::add_uint32
    linkageType: ''
    returnType: void
    signature: void setOutgoingQueries(uint32_t num)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint32
      Src: /src/pdns/pdns/recursordist/protozero.hh:313,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - flags
    argTypes:
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 314
      start: 311
    functionDepth: 0
    functionLinenumber: 311
    functionLinenumberEnd: 314
    functionName: pdns::ProtoZero::Message::setHeaderFlags
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 1
    functionsReached:
    - pdns::ProtoZero::Message::add_uint32
    linkageType: ''
    returnType: void
    signature: void setHeaderFlags(uint16_t flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint32
      Src: /src/pdns/pdns/recursordist/protozero.hh:318,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - version
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 319
      start: 316
    functionDepth: 0
    functionLinenumber: 316
    functionLinenumberEnd: 319
    functionName: pdns::ProtoZero::Message::setEDNSVersion
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 0
    functionsReached:
    - pdns::ProtoZero::Message::add_uint32
    linkageType: ''
    returnType: void
    signature: void setEDNSVersion(uint32_t version)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/protozero.hh:323,1
    - Dst: pdns::ProtoZero::Message::add_string
      Src: /src/pdns/pdns/recursordist/protozero.hh:324,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ' data'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 326
      start: 321
    functionDepth: 0
    functionLinenumber: 321
    functionLinenumberEnd: 326
    functionName: pdns::ProtoZero::Message::setOpenTelemetryData
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 2
    functionsReached:
    - empty
    - pdns::ProtoZero::Message::add_string
    linkageType: ''
    returnType: void
    signature: void setOpenTelemetryData(const std::string& data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint32
      Src: /src/pdns/pdns/recursordist/protozero.hh:330,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ede
    argTypes:
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 331
      start: 328
    functionDepth: 0
    functionLinenumber: 328
    functionLinenumberEnd: 331
    functionName: pdns::ProtoZero::Message::setEDE
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 0
    functionsReached:
    - pdns::ProtoZero::Message::add_uint32
    linkageType: ''
    returnType: void
    signature: void setEDE(const uint16_t ede)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::string::empty
      Src: /src/pdns/pdns/recursordist/protozero.hh:335,1
    - Dst: pdns::ProtoZero::Message::add_string
      Src: /src/pdns/pdns/recursordist/protozero.hh:336,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - edeText
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 338
      start: 333
    functionDepth: 0
    functionLinenumber: 333
    functionLinenumberEnd: 338
    functionName: pdns::ProtoZero::Message::setEDEText
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 0
    functionsReached:
    - pdns::ProtoZero::Message::add_string
    - std::string::empty
    linkageType: ''
    returnType: void
    signature: void setEDEText(const std::string edeText)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_bytes
      Src: /src/pdns/pdns/recursordist/protozero.hh:342,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/recursordist/protozero.hh:342,1
    - Dst: data
      Src: /src/pdns/pdns/recursordist/protozero.hh:342,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/protozero.hh:342,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' traceID'
    argTypes:
    - std::array<uint8_t, 16>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 343
      start: 340
    functionDepth: 0
    functionLinenumber: 340
    functionLinenumberEnd: 343
    functionName: pdns::ProtoZero::Message::setOpenTelemetryTraceID
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 1
    functionsReached:
    - reinterpret_cast<const char*>
    - pdns::ProtoZero::Message::add_bytes
    - size
    - data
    linkageType: ''
    returnType: void
    signature: void setOpenTelemetryTraceID(const std::array<uint8_t, 16>& traceID)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/recursordist/protozero.hh:347,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 348
      start: 345
    functionDepth: 0
    functionLinenumber: 345
    functionLinenumberEnd: 348
    functionName: pdns::ProtoZero::Message::startResponse
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 2
    functionsReached:
    - static_cast<protozero::pbf_tag_type>
    linkageType: ''
    returnType: void
    signature: void startResponse()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: commit
      Src: /src/pdns/pdns/recursordist/protozero.hh:352,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 353
      start: 350
    functionDepth: 0
    functionLinenumber: 350
    functionLinenumberEnd: 353
    functionName: pdns::ProtoZero::Message::commitResponse
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 1
    functionsReached:
    - commit
    linkageType: ''
    returnType: void
    signature: void commitResponse()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint32
      Src: /src/pdns/pdns/recursordist/protozero.hh:357,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/recursordist/protozero.hh:357,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rcode
    argTypes:
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 358
      start: 355
    functionDepth: 0
    functionLinenumber: 355
    functionLinenumberEnd: 358
    functionName: pdns::ProtoZero::Message::setResponseCode
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 2
    functionsReached:
    - static_cast<protozero::pbf_tag_type>
    - pdns::ProtoZero::Message::add_uint32
    linkageType: ''
    returnType: void
    signature: void setResponseCode(uint8_t rcode)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint32
      Src: /src/pdns/pdns/recursordist/protozero.hh:363,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/recursordist/protozero.hh:363,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 364
      start: 360
    functionDepth: 0
    functionLinenumber: 360
    functionLinenumberEnd: 364
    functionName: pdns::ProtoZero::Message::setNetworkErrorResponseCode
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 0
    functionsReached:
    - static_cast<protozero::pbf_tag_type>
    - pdns::ProtoZero::Message::add_uint32
    linkageType: ''
    returnType: void
    signature: void setNetworkErrorResponseCode()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_string
      Src: /src/pdns/pdns/recursordist/protozero.hh:368,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/recursordist/protozero.hh:368,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' policy'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 369
      start: 366
    functionDepth: 0
    functionLinenumber: 366
    functionLinenumberEnd: 369
    functionName: pdns::ProtoZero::Message::setAppliedPolicy
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 0
    functionsReached:
    - pdns::ProtoZero::Message::add_string
    - static_cast<protozero::pbf_tag_type>
    linkageType: ''
    returnType: void
    signature: void setAppliedPolicy(const std::string& policy)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::addPolicyTag
      Src: /src/pdns/pdns/recursordist/protozero.hh:374,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - ' tags'
    argTypes:
    - std::unordered_set<std::string>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 376
      start: 371
    functionDepth: 0
    functionLinenumber: 371
    functionLinenumberEnd: 376
    functionName: pdns::ProtoZero::Message::addPolicyTags
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 0
    functionsReached:
    - pdns::ProtoZero::Message::addPolicyTag
    linkageType: ''
    returnType: void
    signature: void addPolicyTags(const std::unordered_set<std::string>& tags)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_string
      Src: /src/pdns/pdns/recursordist/protozero.hh:380,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/recursordist/protozero.hh:380,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' tag'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 381
      start: 378
    functionDepth: 0
    functionLinenumber: 378
    functionLinenumberEnd: 381
    functionName: pdns::ProtoZero::Message::addPolicyTag
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 11
    functionsReached:
    - pdns::ProtoZero::Message::add_string
    - static_cast<protozero::pbf_tag_type>
    linkageType: ''
    returnType: void
    signature: void addPolicyTag(const string& tag)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint32
      Src: /src/pdns/pdns/recursordist/protozero.hh:385,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/recursordist/protozero.hh:385,1
    - Dst: pdns::ProtoZero::Message::add_uint32
      Src: /src/pdns/pdns/recursordist/protozero.hh:386,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/recursordist/protozero.hh:386,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - sec
    - usec
    argTypes:
    - uint32_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 387
      start: 383
    functionDepth: 0
    functionLinenumber: 383
    functionLinenumberEnd: 387
    functionName: pdns::ProtoZero::Message::setQueryTime
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 2
    functionsReached:
    - static_cast<protozero::pbf_tag_type>
    - pdns::ProtoZero::Message::add_uint32
    linkageType: ''
    returnType: void
    signature: void setQueryTime(uint32_t sec, uint32_t usec)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_enum
      Src: /src/pdns/pdns/recursordist/protozero.hh:399,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/recursordist/protozero.hh:399,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' writer'
    - type
    - value
    argTypes:
    - protozero::pbf_writer
    - Field
    - int32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 400
      start: 397
    functionDepth: 0
    functionLinenumber: 397
    functionLinenumberEnd: 400
    functionName: pdns::ProtoZero::Message::add_enum
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 50
    functionsReached:
    - static_cast<protozero::pbf_tag_type>
    - pdns::ProtoZero::Message::add_enum
    linkageType: ''
    returnType: void
    signature: void add_enum(protozero::pbf_writer& writer, Field type, int32_t value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_bool
      Src: /src/pdns/pdns/recursordist/protozero.hh:404,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/recursordist/protozero.hh:404,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' writer'
    - type
    - value
    argTypes:
    - protozero::pbf_writer
    - Field
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 405
      start: 402
    functionDepth: 0
    functionLinenumber: 402
    functionLinenumberEnd: 405
    functionName: pdns::ProtoZero::Message::add_bool
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 30
    functionsReached:
    - static_cast<protozero::pbf_tag_type>
    - pdns::ProtoZero::Message::add_bool
    linkageType: ''
    returnType: void
    signature: void add_bool(protozero::pbf_writer& writer, Field type, bool value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint32
      Src: /src/pdns/pdns/recursordist/protozero.hh:409,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/recursordist/protozero.hh:409,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' writer'
    - type
    - value
    argTypes:
    - protozero::pbf_writer
    - Field
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 410
      start: 407
    functionDepth: 0
    functionLinenumber: 407
    functionLinenumberEnd: 410
    functionName: pdns::ProtoZero::Message::add_uint32
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 120
    functionsReached:
    - static_cast<protozero::pbf_tag_type>
    - pdns::ProtoZero::Message::add_uint32
    linkageType: ''
    returnType: void
    signature: void add_uint32(protozero::pbf_writer& writer, Field type, uint32_t
      value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint64
      Src: /src/pdns/pdns/recursordist/protozero.hh:414,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/recursordist/protozero.hh:414,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' writer'
    - type
    - value
    argTypes:
    - protozero::pbf_writer
    - Field
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 415
      start: 412
    functionDepth: 0
    functionLinenumber: 412
    functionLinenumberEnd: 415
    functionName: pdns::ProtoZero::Message::add_uint64
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 30
    functionsReached:
    - pdns::ProtoZero::Message::add_uint64
    - static_cast<protozero::pbf_tag_type>
    linkageType: ''
    returnType: void
    signature: void add_uint64(protozero::pbf_writer& writer, Field type, uint64_t
      value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_bytes
      Src: /src/pdns/pdns/recursordist/protozero.hh:419,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/recursordist/protozero.hh:419,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - ' writer'
    - type
    - data
    - len
    argTypes:
    - protozero::pbf_writer
    - Field
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 420
      start: 417
    functionDepth: 0
    functionLinenumber: 417
    functionLinenumberEnd: 420
    functionName: pdns::ProtoZero::Message::add_bytes
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 50
    functionsReached:
    - static_cast<protozero::pbf_tag_type>
    - pdns::ProtoZero::Message::add_bytes
    linkageType: ''
    returnType: void
    signature: void add_bytes(protozero::pbf_writer& writer, Field type, const char*
      data, size_t len)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_string
      Src: /src/pdns/pdns/recursordist/protozero.hh:424,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/recursordist/protozero.hh:424,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' writer'
    - type
    - ' str'
    argTypes:
    - protozero::pbf_writer
    - Field
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 425
      start: 422
    functionDepth: 0
    functionLinenumber: 422
    functionLinenumberEnd: 425
    functionName: pdns::ProtoZero::Message::add_string
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 80
    functionsReached:
    - pdns::ProtoZero::Message::add_string
    - static_cast<protozero::pbf_tag_type>
    linkageType: ''
    returnType: void
    signature: void add_string(protozero::pbf_writer& writer, Field type, const std::string&
      str)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' buffer'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 154
      start: 151
    functionDepth: 0
    functionLinenumber: 151
    functionLinenumberEnd: 154
    functionName: pdns::ProtoZero::Message::Message
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Message(std::string& buffer)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 155
    functionDepth: 0
    functionLinenumber: 155
    functionLinenumberEnd: 155
    functionName: ~Message()
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~Message()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 156
      start: 156
    functionDepth: 0
    functionLinenumber: 156
    functionLinenumberEnd: 156
    functionName: pdns::ProtoZero::Message::Message
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Message(const Message&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 157
      start: 157
    functionDepth: 0
    functionLinenumber: 157
    functionLinenumberEnd: 157
    functionName: pdns::ProtoZero::Message::Message
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Message(Message&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 158
      start: 158
    functionDepth: 0
    functionLinenumber: 158
    functionLinenumberEnd: 158
    functionName: '& operator=(const Message&)'
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Message
    signature: Message & operator=(const Message&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 159
      start: 159
    functionDepth: 0
    functionLinenumber: 159
    functionLinenumberEnd: 159
    functionName: '& operator=(Message&&)'
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Message
    signature: Message & operator=(Message&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_enum
      Src: /src/pdns/pdns/recursordist/protozero.hh:166,1
    - Dst: static_cast<int32_t>
      Src: /src/pdns/pdns/recursordist/protozero.hh:166,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - mtype
    argTypes:
    - MessageType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 167
      start: 164
    functionDepth: 0
    functionLinenumber: 164
    functionLinenumberEnd: 167
    functionName: pdns::ProtoZero::Message::setType
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 6
    functionsReached:
    - static_cast<int32_t>
    - pdns::ProtoZero::Message::add_enum
    linkageType: ''
    returnType: void
    signature: void setType(MessageType mtype)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_enum
      Src: /src/pdns/pdns/recursordist/protozero.hh:171,1
    - Dst: static_cast<int32_t>
      Src: /src/pdns/pdns/recursordist/protozero.hh:171,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - version
    argTypes:
    - HTTPVersion
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 172
      start: 169
    functionDepth: 0
    functionLinenumber: 169
    functionLinenumberEnd: 172
    functionName: pdns::ProtoZero::Message::setHTTPVersion
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 1
    functionsReached:
    - static_cast<int32_t>
    - pdns::ProtoZero::Message::add_enum
    linkageType: ''
    returnType: void
    signature: void setHTTPVersion(HTTPVersion version)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_bytes
      Src: /src/pdns/pdns/recursordist/protozero.hh:176,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/recursordist/protozero.hh:176,1
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/protozero.hh:176,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/protozero.hh:176,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' uniqueId'
    argTypes:
    - boost::uuids::uuid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 177
      start: 174
    functionDepth: 0
    functionLinenumber: 174
    functionLinenumberEnd: 177
    functionName: pdns::ProtoZero::Message::setMessageIdentity
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 0
    functionsReached:
    - reinterpret_cast<const char*>
    - pdns::ProtoZero::Message::add_bytes
    - size
    - begin
    linkageType: ''
    returnType: void
    signature: void setMessageIdentity(const boost::uuids::uuid& uniqueId)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_bytes
      Src: /src/pdns/pdns/recursordist/protozero.hh:181,1
    - Dst: data
      Src: /src/pdns/pdns/recursordist/protozero.hh:181,1
    - Dst: length
      Src: /src/pdns/pdns/recursordist/protozero.hh:181,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' serverIdentity'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 182
      start: 179
    functionDepth: 0
    functionLinenumber: 179
    functionLinenumberEnd: 182
    functionName: pdns::ProtoZero::Message::setServerIdentity
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 1
    functionsReached:
    - length
    - pdns::ProtoZero::Message::add_bytes
    - data
    linkageType: ''
    returnType: void
    signature: void setServerIdentity(const std::string& serverIdentity)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_enum
      Src: /src/pdns/pdns/recursordist/protozero.hh:186,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - family
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 187
      start: 184
    functionDepth: 0
    functionLinenumber: 184
    functionLinenumberEnd: 187
    functionName: pdns::ProtoZero::Message::setSocketFamily
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 0
    functionsReached:
    - pdns::ProtoZero::Message::add_enum
    linkageType: ''
    returnType: void
    signature: void setSocketFamily(int family)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_enum
      Src: /src/pdns/pdns/recursordist/protozero.hh:191,1
    - Dst: static_cast<int32_t>
      Src: /src/pdns/pdns/recursordist/protozero.hh:191,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - proto
    argTypes:
    - TransportProtocol
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 192
      start: 189
    functionDepth: 0
    functionLinenumber: 189
    functionLinenumberEnd: 192
    functionName: pdns::ProtoZero::Message::setSocketProtocol
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 0
    functionsReached:
    - static_cast<int32_t>
    - pdns::ProtoZero::Message::add_enum
    linkageType: ''
    returnType: void
    signature: void setSocketProtocol(TransportProtocol proto)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: encodeComboAddress
      Src: /src/pdns/pdns/recursordist/protozero.hh:196,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/recursordist/protozero.hh:196,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' address'
    argTypes:
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 197
      start: 194
    functionDepth: 1
    functionLinenumber: 194
    functionLinenumberEnd: 197
    functionName: pdns::ProtoZero::Message::setFrom
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 0
    functionsReached:
    - static_cast<protozero::pbf_tag_type>
    - encodeComboAddress
    linkageType: ''
    returnType: void
    signature: void setFrom(const ComboAddress& address)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: encodeComboAddress
      Src: /src/pdns/pdns/recursordist/protozero.hh:201,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/recursordist/protozero.hh:201,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' address'
    argTypes:
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 202
      start: 199
    functionDepth: 1
    functionLinenumber: 199
    functionLinenumberEnd: 202
    functionName: pdns::ProtoZero::Message::setTo
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 0
    functionsReached:
    - static_cast<protozero::pbf_tag_type>
    - encodeComboAddress
    linkageType: ''
    returnType: void
    signature: void setTo(const ComboAddress& address)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint64
      Src: /src/pdns/pdns/recursordist/protozero.hh:206,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - len
    argTypes:
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 207
      start: 204
    functionDepth: 0
    functionLinenumber: 204
    functionLinenumberEnd: 207
    functionName: pdns::ProtoZero::Message::setInBytes
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 0
    functionsReached:
    - pdns::ProtoZero::Message::add_uint64
    linkageType: ''
    returnType: void
    signature: void setInBytes(uint64_t len)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: gettime
      Src: /src/pdns/pdns/recursordist/protozero.hh:212,1
    - Dst: pdns::ProtoZero::Message::setTime
      Src: /src/pdns/pdns/recursordist/protozero.hh:214,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 215
      start: 209
    functionDepth: 0
    functionLinenumber: 209
    functionLinenumberEnd: 215
    functionName: pdns::ProtoZero::Message::setTime
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 13
    functionsReached:
    - pdns::ProtoZero::Message::setTime
    - gettime
    linkageType: ''
    returnType: void
    signature: void setTime()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint32
      Src: /src/pdns/pdns/recursordist/protozero.hh:220,1
    - Dst: pdns::ProtoZero::Message::add_uint32
      Src: /src/pdns/pdns/recursordist/protozero.hh:221,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - sec
    - usec
    argTypes:
    - time_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 222
      start: 217
    functionDepth: 0
    functionLinenumber: 217
    functionLinenumberEnd: 222
    functionName: pdns::ProtoZero::Message::setTime
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 13
    functionsReached:
    - pdns::ProtoZero::Message::add_uint32
    linkageType: ''
    returnType: void
    signature: void setTime(time_t sec, uint32_t usec)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint32
      Src: /src/pdns/pdns/recursordist/protozero.hh:226,1
    - Dst: ntohs
      Src: /src/pdns/pdns/recursordist/protozero.hh:226,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - qid
    argTypes:
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 227
      start: 224
    functionDepth: 0
    functionLinenumber: 224
    functionLinenumberEnd: 227
    functionName: pdns::ProtoZero::Message::setId
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 0
    functionsReached:
    - ntohs
    - pdns::ProtoZero::Message::add_uint32
    linkageType: ''
    returnType: void
    signature: void setId(uint16_t qid)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/recursordist/protozero.hh:231,1
    - Dst: encodeDNSName
      Src: /src/pdns/pdns/recursordist/protozero.hh:232,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/recursordist/protozero.hh:232,1
    - Dst: protozero::pbf_writer::add_uint32
      Src: /src/pdns/pdns/recursordist/protozero.hh:233,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/recursordist/protozero.hh:233,1
    - Dst: protozero::pbf_writer::add_uint32
      Src: /src/pdns/pdns/recursordist/protozero.hh:234,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/recursordist/protozero.hh:234,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - ' qname'
    - qtype
    - qclass
    argTypes:
    - DNSName
    - uint16_t
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 235
      start: 229
    functionDepth: 0
    functionLinenumber: 229
    functionLinenumberEnd: 235
    functionName: pdns::ProtoZero::Message::setQuestion
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 3
    functionsReached:
    - static_cast<protozero::pbf_tag_type>
    - protozero::pbf_writer::add_uint32
    - encodeDNSName
    linkageType: ''
    returnType: void
    signature: void setQuestion(const DNSName& qname, uint16_t qtype, uint16_t qclass)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/recursordist/protozero.hh:239,1
    - Dst: protozero::pbf_writer::add_string
      Src: /src/pdns/pdns/recursordist/protozero.hh:240,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/recursordist/protozero.hh:240,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/recursordist/protozero.hh:241,1
    - Dst: protozero::pbf_writer::add_string
      Src: /src/pdns/pdns/recursordist/protozero.hh:243,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/recursordist/protozero.hh:243,1
    - Dst: protozero::pbf_writer::add_uint64
      Src: /src/pdns/pdns/recursordist/protozero.hh:246,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/recursordist/protozero.hh:246,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - ' key'
    - ' stringVal'
    - ' intVal'
    argTypes:
    - std::string
    - std::unordered_set<std::string>
    - std::unordered_set<int64_t>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 248
      start: 237
    functionDepth: 0
    functionLinenumber: 237
    functionLinenumberEnd: 248
    functionName: pdns::ProtoZero::Message::setMeta
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 1
    functionsReached:
    - protozero::pbf_writer::add_uint64
    - static_cast<protozero::pbf_tag_type>
    - protozero::pbf_writer::add_string
    linkageType: ''
    returnType: void
    signature: void setMeta(const std::string& key, const std::unordered_set<std::string>&
      stringVal, const std::unordered_set<int64_t>& intVal)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: encodeNetmask
      Src: /src/pdns/pdns/recursordist/protozero.hh:252,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/recursordist/protozero.hh:252,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' netmask'
    - mask
    argTypes:
    - Netmask
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 253
      start: 250
    functionDepth: 1
    functionLinenumber: 250
    functionLinenumberEnd: 253
    functionName: pdns::ProtoZero::Message::setEDNSSubnet
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 1
    functionsReached:
    - static_cast<protozero::pbf_tag_type>
    - encodeNetmask
    linkageType: ''
    returnType: void
    signature: void setEDNSSubnet(const Netmask& netmask, uint8_t mask)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/protozero.hh:257,1
    - Dst: pdns::ProtoZero::Message::add_string
      Src: /src/pdns/pdns/recursordist/protozero.hh:258,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ' req'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 260
      start: 255
    functionDepth: 0
    functionLinenumber: 255
    functionLinenumberEnd: 260
    functionName: pdns::ProtoZero::Message::setRequestorId
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 1
    functionsReached:
    - empty
    - pdns::ProtoZero::Message::add_string
    linkageType: ''
    returnType: void
    signature: void setRequestorId(const std::string& req)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_bytes
      Src: /src/pdns/pdns/recursordist/protozero.hh:264,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/recursordist/protozero.hh:264,1
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/protozero.hh:264,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/protozero.hh:264,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' uniqueId'
    argTypes:
    - boost::uuids::uuid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 265
      start: 262
    functionDepth: 0
    functionLinenumber: 262
    functionLinenumberEnd: 265
    functionName: pdns::ProtoZero::Message::setInitialRequestID
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 0
    functionsReached:
    - reinterpret_cast<const char*>
    - pdns::ProtoZero::Message::add_bytes
    - size
    - begin
    linkageType: ''
    returnType: void
    signature: void setInitialRequestID(const boost::uuids::uuid& uniqueId)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/protozero.hh:269,1
    - Dst: pdns::ProtoZero::Message::add_string
      Src: /src/pdns/pdns/recursordist/protozero.hh:270,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ' deviceId'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 272
      start: 267
    functionDepth: 0
    functionLinenumber: 267
    functionLinenumberEnd: 272
    functionName: pdns::ProtoZero::Message::setDeviceId
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 1
    functionsReached:
    - empty
    - pdns::ProtoZero::Message::add_string
    linkageType: ''
    returnType: void
    signature: void setDeviceId(const std::string& deviceId)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_bool
      Src: /src/pdns/pdns/recursordist/protozero.hh:276,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - nod
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 277
      start: 274
    functionDepth: 0
    functionLinenumber: 274
    functionLinenumberEnd: 277
    functionName: pdns::ProtoZero::Message::setNewlyObservedDomain
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 0
    functionsReached:
    - pdns::ProtoZero::Message::add_bool
    linkageType: ''
    returnType: void
    signature: void setNewlyObservedDomain(bool nod)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/protozero.hh:281,1
    - Dst: pdns::ProtoZero::Message::add_string
      Src: /src/pdns/pdns/recursordist/protozero.hh:282,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ' name'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 284
      start: 279
    functionDepth: 0
    functionLinenumber: 279
    functionLinenumberEnd: 284
    functionName: pdns::ProtoZero::Message::setDeviceName
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 1
    functionsReached:
    - empty
    - pdns::ProtoZero::Message::add_string
    linkageType: ''
    returnType: void
    signature: void setDeviceName(const std::string& name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint32
      Src: /src/pdns/pdns/recursordist/protozero.hh:288,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - port
    argTypes:
    - in_port_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 289
      start: 286
    functionDepth: 0
    functionLinenumber: 286
    functionLinenumberEnd: 289
    functionName: pdns::ProtoZero::Message::setFromPort
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 0
    functionsReached:
    - pdns::ProtoZero::Message::add_uint32
    linkageType: ''
    returnType: void
    signature: void setFromPort(in_port_t port)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint32
      Src: /src/pdns/pdns/recursordist/protozero.hh:293,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - port
    argTypes:
    - in_port_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 294
      start: 291
    functionDepth: 0
    functionLinenumber: 291
    functionLinenumberEnd: 294
    functionName: pdns::ProtoZero::Message::setToPort
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 0
    functionsReached:
    - pdns::ProtoZero::Message::add_uint32
    linkageType: ''
    returnType: void
    signature: void setToPort(in_port_t port)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint64
      Src: /src/pdns/pdns/recursordist/protozero.hh:298,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - wid
    argTypes:
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 299
      start: 296
    functionDepth: 0
    functionLinenumber: 296
    functionLinenumberEnd: 299
    functionName: pdns::ProtoZero::Message::setWorkerId
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 0
    functionsReached:
    - pdns::ProtoZero::Message::add_uint64
    linkageType: ''
    returnType: void
    signature: void setWorkerId(uint64_t wid)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_bool
      Src: /src/pdns/pdns/recursordist/protozero.hh:303,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - hit
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 304
      start: 301
    functionDepth: 0
    functionLinenumber: 301
    functionLinenumberEnd: 304
    functionName: pdns::ProtoZero::Message::setPacketCacheHit
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 1
    functionsReached:
    - pdns::ProtoZero::Message::add_bool
    linkageType: ''
    returnType: void
    signature: void setPacketCacheHit(bool hit)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint32
      Src: /src/pdns/pdns/recursordist/protozero.hh:308,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - num
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 309
      start: 306
    functionDepth: 0
    functionLinenumber: 306
    functionLinenumberEnd: 309
    functionName: pdns::ProtoZero::Message::setOutgoingQueries
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 1
    functionsReached:
    - pdns::ProtoZero::Message::add_uint32
    linkageType: ''
    returnType: void
    signature: void setOutgoingQueries(uint32_t num)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint32
      Src: /src/pdns/pdns/recursordist/protozero.hh:313,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - flags
    argTypes:
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 314
      start: 311
    functionDepth: 0
    functionLinenumber: 311
    functionLinenumberEnd: 314
    functionName: pdns::ProtoZero::Message::setHeaderFlags
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 1
    functionsReached:
    - pdns::ProtoZero::Message::add_uint32
    linkageType: ''
    returnType: void
    signature: void setHeaderFlags(uint16_t flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint32
      Src: /src/pdns/pdns/recursordist/protozero.hh:318,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - version
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 319
      start: 316
    functionDepth: 0
    functionLinenumber: 316
    functionLinenumberEnd: 319
    functionName: pdns::ProtoZero::Message::setEDNSVersion
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 0
    functionsReached:
    - pdns::ProtoZero::Message::add_uint32
    linkageType: ''
    returnType: void
    signature: void setEDNSVersion(uint32_t version)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/protozero.hh:323,1
    - Dst: pdns::ProtoZero::Message::add_string
      Src: /src/pdns/pdns/recursordist/protozero.hh:324,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ' data'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 326
      start: 321
    functionDepth: 0
    functionLinenumber: 321
    functionLinenumberEnd: 326
    functionName: pdns::ProtoZero::Message::setOpenTelemetryData
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 2
    functionsReached:
    - empty
    - pdns::ProtoZero::Message::add_string
    linkageType: ''
    returnType: void
    signature: void setOpenTelemetryData(const std::string& data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint32
      Src: /src/pdns/pdns/recursordist/protozero.hh:330,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ede
    argTypes:
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 331
      start: 328
    functionDepth: 0
    functionLinenumber: 328
    functionLinenumberEnd: 331
    functionName: pdns::ProtoZero::Message::setEDE
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 0
    functionsReached:
    - pdns::ProtoZero::Message::add_uint32
    linkageType: ''
    returnType: void
    signature: void setEDE(const uint16_t ede)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::string::empty
      Src: /src/pdns/pdns/recursordist/protozero.hh:335,1
    - Dst: pdns::ProtoZero::Message::add_string
      Src: /src/pdns/pdns/recursordist/protozero.hh:336,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - edeText
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 338
      start: 333
    functionDepth: 0
    functionLinenumber: 333
    functionLinenumberEnd: 338
    functionName: pdns::ProtoZero::Message::setEDEText
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 0
    functionsReached:
    - pdns::ProtoZero::Message::add_string
    - std::string::empty
    linkageType: ''
    returnType: void
    signature: void setEDEText(const std::string edeText)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_bytes
      Src: /src/pdns/pdns/recursordist/protozero.hh:342,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/recursordist/protozero.hh:342,1
    - Dst: data
      Src: /src/pdns/pdns/recursordist/protozero.hh:342,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/protozero.hh:342,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' traceID'
    argTypes:
    - std::array<uint8_t, 16>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 343
      start: 340
    functionDepth: 0
    functionLinenumber: 340
    functionLinenumberEnd: 343
    functionName: pdns::ProtoZero::Message::setOpenTelemetryTraceID
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 1
    functionsReached:
    - reinterpret_cast<const char*>
    - pdns::ProtoZero::Message::add_bytes
    - size
    - data
    linkageType: ''
    returnType: void
    signature: void setOpenTelemetryTraceID(const std::array<uint8_t, 16>& traceID)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/recursordist/protozero.hh:347,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 348
      start: 345
    functionDepth: 0
    functionLinenumber: 345
    functionLinenumberEnd: 348
    functionName: pdns::ProtoZero::Message::startResponse
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 2
    functionsReached:
    - static_cast<protozero::pbf_tag_type>
    linkageType: ''
    returnType: void
    signature: void startResponse()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: commit
      Src: /src/pdns/pdns/recursordist/protozero.hh:352,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 353
      start: 350
    functionDepth: 0
    functionLinenumber: 350
    functionLinenumberEnd: 353
    functionName: pdns::ProtoZero::Message::commitResponse
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 1
    functionsReached:
    - commit
    linkageType: ''
    returnType: void
    signature: void commitResponse()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint32
      Src: /src/pdns/pdns/recursordist/protozero.hh:357,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/recursordist/protozero.hh:357,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rcode
    argTypes:
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 358
      start: 355
    functionDepth: 0
    functionLinenumber: 355
    functionLinenumberEnd: 358
    functionName: pdns::ProtoZero::Message::setResponseCode
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 2
    functionsReached:
    - static_cast<protozero::pbf_tag_type>
    - pdns::ProtoZero::Message::add_uint32
    linkageType: ''
    returnType: void
    signature: void setResponseCode(uint8_t rcode)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint32
      Src: /src/pdns/pdns/recursordist/protozero.hh:363,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/recursordist/protozero.hh:363,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 364
      start: 360
    functionDepth: 0
    functionLinenumber: 360
    functionLinenumberEnd: 364
    functionName: pdns::ProtoZero::Message::setNetworkErrorResponseCode
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 0
    functionsReached:
    - static_cast<protozero::pbf_tag_type>
    - pdns::ProtoZero::Message::add_uint32
    linkageType: ''
    returnType: void
    signature: void setNetworkErrorResponseCode()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_string
      Src: /src/pdns/pdns/recursordist/protozero.hh:368,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/recursordist/protozero.hh:368,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' policy'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 369
      start: 366
    functionDepth: 0
    functionLinenumber: 366
    functionLinenumberEnd: 369
    functionName: pdns::ProtoZero::Message::setAppliedPolicy
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 0
    functionsReached:
    - pdns::ProtoZero::Message::add_string
    - static_cast<protozero::pbf_tag_type>
    linkageType: ''
    returnType: void
    signature: void setAppliedPolicy(const std::string& policy)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::addPolicyTag
      Src: /src/pdns/pdns/recursordist/protozero.hh:374,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - ' tags'
    argTypes:
    - std::unordered_set<std::string>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 376
      start: 371
    functionDepth: 0
    functionLinenumber: 371
    functionLinenumberEnd: 376
    functionName: pdns::ProtoZero::Message::addPolicyTags
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 0
    functionsReached:
    - pdns::ProtoZero::Message::addPolicyTag
    linkageType: ''
    returnType: void
    signature: void addPolicyTags(const std::unordered_set<std::string>& tags)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_string
      Src: /src/pdns/pdns/recursordist/protozero.hh:380,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/recursordist/protozero.hh:380,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' tag'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 381
      start: 378
    functionDepth: 0
    functionLinenumber: 378
    functionLinenumberEnd: 381
    functionName: pdns::ProtoZero::Message::addPolicyTag
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 12
    functionsReached:
    - pdns::ProtoZero::Message::add_string
    - static_cast<protozero::pbf_tag_type>
    linkageType: ''
    returnType: void
    signature: void addPolicyTag(const string& tag)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint32
      Src: /src/pdns/pdns/recursordist/protozero.hh:385,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/recursordist/protozero.hh:385,1
    - Dst: pdns::ProtoZero::Message::add_uint32
      Src: /src/pdns/pdns/recursordist/protozero.hh:386,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/recursordist/protozero.hh:386,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - sec
    - usec
    argTypes:
    - uint32_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 387
      start: 383
    functionDepth: 0
    functionLinenumber: 383
    functionLinenumberEnd: 387
    functionName: pdns::ProtoZero::Message::setQueryTime
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 2
    functionsReached:
    - static_cast<protozero::pbf_tag_type>
    - pdns::ProtoZero::Message::add_uint32
    linkageType: ''
    returnType: void
    signature: void setQueryTime(uint32_t sec, uint32_t usec)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_enum
      Src: /src/pdns/pdns/recursordist/protozero.hh:399,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/recursordist/protozero.hh:399,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' writer'
    - type
    - value
    argTypes:
    - protozero::pbf_writer
    - Field
    - int32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 400
      start: 397
    functionDepth: 0
    functionLinenumber: 397
    functionLinenumberEnd: 400
    functionName: pdns::ProtoZero::Message::add_enum
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 55
    functionsReached:
    - static_cast<protozero::pbf_tag_type>
    - pdns::ProtoZero::Message::add_enum
    linkageType: ''
    returnType: void
    signature: void add_enum(protozero::pbf_writer& writer, Field type, int32_t value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_bool
      Src: /src/pdns/pdns/recursordist/protozero.hh:404,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/recursordist/protozero.hh:404,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' writer'
    - type
    - value
    argTypes:
    - protozero::pbf_writer
    - Field
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 405
      start: 402
    functionDepth: 0
    functionLinenumber: 402
    functionLinenumberEnd: 405
    functionName: pdns::ProtoZero::Message::add_bool
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 33
    functionsReached:
    - static_cast<protozero::pbf_tag_type>
    - pdns::ProtoZero::Message::add_bool
    linkageType: ''
    returnType: void
    signature: void add_bool(protozero::pbf_writer& writer, Field type, bool value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint32
      Src: /src/pdns/pdns/recursordist/protozero.hh:409,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/recursordist/protozero.hh:409,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' writer'
    - type
    - value
    argTypes:
    - protozero::pbf_writer
    - Field
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 410
      start: 407
    functionDepth: 0
    functionLinenumber: 407
    functionLinenumberEnd: 410
    functionName: pdns::ProtoZero::Message::add_uint32
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 132
    functionsReached:
    - static_cast<protozero::pbf_tag_type>
    - pdns::ProtoZero::Message::add_uint32
    linkageType: ''
    returnType: void
    signature: void add_uint32(protozero::pbf_writer& writer, Field type, uint32_t
      value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint64
      Src: /src/pdns/pdns/recursordist/protozero.hh:414,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/recursordist/protozero.hh:414,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' writer'
    - type
    - value
    argTypes:
    - protozero::pbf_writer
    - Field
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 415
      start: 412
    functionDepth: 0
    functionLinenumber: 412
    functionLinenumberEnd: 415
    functionName: pdns::ProtoZero::Message::add_uint64
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 33
    functionsReached:
    - pdns::ProtoZero::Message::add_uint64
    - static_cast<protozero::pbf_tag_type>
    linkageType: ''
    returnType: void
    signature: void add_uint64(protozero::pbf_writer& writer, Field type, uint64_t
      value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_bytes
      Src: /src/pdns/pdns/recursordist/protozero.hh:419,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/recursordist/protozero.hh:419,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - ' writer'
    - type
    - data
    - len
    argTypes:
    - protozero::pbf_writer
    - Field
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 420
      start: 417
    functionDepth: 0
    functionLinenumber: 417
    functionLinenumberEnd: 420
    functionName: pdns::ProtoZero::Message::add_bytes
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 55
    functionsReached:
    - static_cast<protozero::pbf_tag_type>
    - pdns::ProtoZero::Message::add_bytes
    linkageType: ''
    returnType: void
    signature: void add_bytes(protozero::pbf_writer& writer, Field type, const char*
      data, size_t len)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_string
      Src: /src/pdns/pdns/recursordist/protozero.hh:424,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/recursordist/protozero.hh:424,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' writer'
    - type
    - ' str'
    argTypes:
    - protozero::pbf_writer
    - Field
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 425
      start: 422
    functionDepth: 0
    functionLinenumber: 422
    functionLinenumberEnd: 425
    functionName: pdns::ProtoZero::Message::add_string
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 88
    functionsReached:
    - pdns::ProtoZero::Message::add_string
    - static_cast<protozero::pbf_tag_type>
    linkageType: ''
    returnType: void
    signature: void add_string(protozero::pbf_writer& writer, Field type, const std::string&
      str)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' buffer'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 154
      start: 151
    functionDepth: 0
    functionLinenumber: 151
    functionLinenumberEnd: 154
    functionName: pdns::ProtoZero::Message::Message
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Message(std::string& buffer)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 155
    functionDepth: 0
    functionLinenumber: 155
    functionLinenumberEnd: 155
    functionName: ~Message()
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~Message()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 156
      start: 156
    functionDepth: 0
    functionLinenumber: 156
    functionLinenumberEnd: 156
    functionName: pdns::ProtoZero::Message::Message
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Message(const Message&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 157
      start: 157
    functionDepth: 0
    functionLinenumber: 157
    functionLinenumberEnd: 157
    functionName: pdns::ProtoZero::Message::Message
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Message(Message&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 158
      start: 158
    functionDepth: 0
    functionLinenumber: 158
    functionLinenumberEnd: 158
    functionName: '& operator=(const Message&)'
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Message
    signature: Message & operator=(const Message&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 159
      start: 159
    functionDepth: 0
    functionLinenumber: 159
    functionLinenumberEnd: 159
    functionName: '& operator=(Message&&)'
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Message
    signature: Message & operator=(Message&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_enum
      Src: /src/pdns/pdns/recursordist/protozero.hh:166,1
    - Dst: static_cast<int32_t>
      Src: /src/pdns/pdns/recursordist/protozero.hh:166,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - mtype
    argTypes:
    - MessageType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 167
      start: 164
    functionDepth: 0
    functionLinenumber: 164
    functionLinenumberEnd: 167
    functionName: pdns::ProtoZero::Message::setType
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 6
    functionsReached:
    - static_cast<int32_t>
    - pdns::ProtoZero::Message::add_enum
    linkageType: ''
    returnType: void
    signature: void setType(MessageType mtype)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_enum
      Src: /src/pdns/pdns/recursordist/protozero.hh:171,1
    - Dst: static_cast<int32_t>
      Src: /src/pdns/pdns/recursordist/protozero.hh:171,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - version
    argTypes:
    - HTTPVersion
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 172
      start: 169
    functionDepth: 0
    functionLinenumber: 169
    functionLinenumberEnd: 172
    functionName: pdns::ProtoZero::Message::setHTTPVersion
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 1
    functionsReached:
    - static_cast<int32_t>
    - pdns::ProtoZero::Message::add_enum
    linkageType: ''
    returnType: void
    signature: void setHTTPVersion(HTTPVersion version)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_bytes
      Src: /src/pdns/pdns/recursordist/protozero.hh:176,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/recursordist/protozero.hh:176,1
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/protozero.hh:176,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/protozero.hh:176,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' uniqueId'
    argTypes:
    - boost::uuids::uuid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 177
      start: 174
    functionDepth: 0
    functionLinenumber: 174
    functionLinenumberEnd: 177
    functionName: pdns::ProtoZero::Message::setMessageIdentity
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 0
    functionsReached:
    - reinterpret_cast<const char*>
    - pdns::ProtoZero::Message::add_bytes
    - size
    - begin
    linkageType: ''
    returnType: void
    signature: void setMessageIdentity(const boost::uuids::uuid& uniqueId)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_bytes
      Src: /src/pdns/pdns/recursordist/protozero.hh:181,1
    - Dst: data
      Src: /src/pdns/pdns/recursordist/protozero.hh:181,1
    - Dst: length
      Src: /src/pdns/pdns/recursordist/protozero.hh:181,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' serverIdentity'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 182
      start: 179
    functionDepth: 0
    functionLinenumber: 179
    functionLinenumberEnd: 182
    functionName: pdns::ProtoZero::Message::setServerIdentity
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 1
    functionsReached:
    - length
    - pdns::ProtoZero::Message::add_bytes
    - data
    linkageType: ''
    returnType: void
    signature: void setServerIdentity(const std::string& serverIdentity)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_enum
      Src: /src/pdns/pdns/recursordist/protozero.hh:186,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - family
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 187
      start: 184
    functionDepth: 0
    functionLinenumber: 184
    functionLinenumberEnd: 187
    functionName: pdns::ProtoZero::Message::setSocketFamily
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 0
    functionsReached:
    - pdns::ProtoZero::Message::add_enum
    linkageType: ''
    returnType: void
    signature: void setSocketFamily(int family)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_enum
      Src: /src/pdns/pdns/recursordist/protozero.hh:191,1
    - Dst: static_cast<int32_t>
      Src: /src/pdns/pdns/recursordist/protozero.hh:191,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - proto
    argTypes:
    - TransportProtocol
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 192
      start: 189
    functionDepth: 0
    functionLinenumber: 189
    functionLinenumberEnd: 192
    functionName: pdns::ProtoZero::Message::setSocketProtocol
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 0
    functionsReached:
    - static_cast<int32_t>
    - pdns::ProtoZero::Message::add_enum
    linkageType: ''
    returnType: void
    signature: void setSocketProtocol(TransportProtocol proto)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: encodeComboAddress
      Src: /src/pdns/pdns/recursordist/protozero.hh:196,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/recursordist/protozero.hh:196,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' address'
    argTypes:
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 197
      start: 194
    functionDepth: 1
    functionLinenumber: 194
    functionLinenumberEnd: 197
    functionName: pdns::ProtoZero::Message::setFrom
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 0
    functionsReached:
    - static_cast<protozero::pbf_tag_type>
    - encodeComboAddress
    linkageType: ''
    returnType: void
    signature: void setFrom(const ComboAddress& address)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: encodeComboAddress
      Src: /src/pdns/pdns/recursordist/protozero.hh:201,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/recursordist/protozero.hh:201,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' address'
    argTypes:
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 202
      start: 199
    functionDepth: 1
    functionLinenumber: 199
    functionLinenumberEnd: 202
    functionName: pdns::ProtoZero::Message::setTo
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 0
    functionsReached:
    - static_cast<protozero::pbf_tag_type>
    - encodeComboAddress
    linkageType: ''
    returnType: void
    signature: void setTo(const ComboAddress& address)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint64
      Src: /src/pdns/pdns/recursordist/protozero.hh:206,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - len
    argTypes:
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 207
      start: 204
    functionDepth: 0
    functionLinenumber: 204
    functionLinenumberEnd: 207
    functionName: pdns::ProtoZero::Message::setInBytes
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 0
    functionsReached:
    - pdns::ProtoZero::Message::add_uint64
    linkageType: ''
    returnType: void
    signature: void setInBytes(uint64_t len)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: gettime
      Src: /src/pdns/pdns/recursordist/protozero.hh:212,1
    - Dst: pdns::ProtoZero::Message::setTime
      Src: /src/pdns/pdns/recursordist/protozero.hh:214,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 215
      start: 209
    functionDepth: 0
    functionLinenumber: 209
    functionLinenumberEnd: 215
    functionName: pdns::ProtoZero::Message::setTime
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 14
    functionsReached:
    - pdns::ProtoZero::Message::setTime
    - gettime
    linkageType: ''
    returnType: void
    signature: void setTime()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint32
      Src: /src/pdns/pdns/recursordist/protozero.hh:220,1
    - Dst: pdns::ProtoZero::Message::add_uint32
      Src: /src/pdns/pdns/recursordist/protozero.hh:221,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - sec
    - usec
    argTypes:
    - time_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 222
      start: 217
    functionDepth: 0
    functionLinenumber: 217
    functionLinenumberEnd: 222
    functionName: pdns::ProtoZero::Message::setTime
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 14
    functionsReached:
    - pdns::ProtoZero::Message::add_uint32
    linkageType: ''
    returnType: void
    signature: void setTime(time_t sec, uint32_t usec)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint32
      Src: /src/pdns/pdns/recursordist/protozero.hh:226,1
    - Dst: ntohs
      Src: /src/pdns/pdns/recursordist/protozero.hh:226,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - qid
    argTypes:
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 227
      start: 224
    functionDepth: 0
    functionLinenumber: 224
    functionLinenumberEnd: 227
    functionName: pdns::ProtoZero::Message::setId
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 0
    functionsReached:
    - ntohs
    - pdns::ProtoZero::Message::add_uint32
    linkageType: ''
    returnType: void
    signature: void setId(uint16_t qid)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/recursordist/protozero.hh:231,1
    - Dst: encodeDNSName
      Src: /src/pdns/pdns/recursordist/protozero.hh:232,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/recursordist/protozero.hh:232,1
    - Dst: protozero::pbf_writer::add_uint32
      Src: /src/pdns/pdns/recursordist/protozero.hh:233,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/recursordist/protozero.hh:233,1
    - Dst: protozero::pbf_writer::add_uint32
      Src: /src/pdns/pdns/recursordist/protozero.hh:234,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/recursordist/protozero.hh:234,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - ' qname'
    - qtype
    - qclass
    argTypes:
    - DNSName
    - uint16_t
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 235
      start: 229
    functionDepth: 0
    functionLinenumber: 229
    functionLinenumberEnd: 235
    functionName: pdns::ProtoZero::Message::setQuestion
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 3
    functionsReached:
    - static_cast<protozero::pbf_tag_type>
    - protozero::pbf_writer::add_uint32
    - encodeDNSName
    linkageType: ''
    returnType: void
    signature: void setQuestion(const DNSName& qname, uint16_t qtype, uint16_t qclass)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/recursordist/protozero.hh:239,1
    - Dst: protozero::pbf_writer::add_string
      Src: /src/pdns/pdns/recursordist/protozero.hh:240,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/recursordist/protozero.hh:240,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/recursordist/protozero.hh:241,1
    - Dst: protozero::pbf_writer::add_string
      Src: /src/pdns/pdns/recursordist/protozero.hh:243,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/recursordist/protozero.hh:243,1
    - Dst: protozero::pbf_writer::add_uint64
      Src: /src/pdns/pdns/recursordist/protozero.hh:246,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/recursordist/protozero.hh:246,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - ' key'
    - ' stringVal'
    - ' intVal'
    argTypes:
    - std::string
    - std::unordered_set<std::string>
    - std::unordered_set<int64_t>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 248
      start: 237
    functionDepth: 0
    functionLinenumber: 237
    functionLinenumberEnd: 248
    functionName: pdns::ProtoZero::Message::setMeta
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 1
    functionsReached:
    - protozero::pbf_writer::add_uint64
    - static_cast<protozero::pbf_tag_type>
    - protozero::pbf_writer::add_string
    linkageType: ''
    returnType: void
    signature: void setMeta(const std::string& key, const std::unordered_set<std::string>&
      stringVal, const std::unordered_set<int64_t>& intVal)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: encodeNetmask
      Src: /src/pdns/pdns/recursordist/protozero.hh:252,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/recursordist/protozero.hh:252,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' netmask'
    - mask
    argTypes:
    - Netmask
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 253
      start: 250
    functionDepth: 1
    functionLinenumber: 250
    functionLinenumberEnd: 253
    functionName: pdns::ProtoZero::Message::setEDNSSubnet
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 1
    functionsReached:
    - static_cast<protozero::pbf_tag_type>
    - encodeNetmask
    linkageType: ''
    returnType: void
    signature: void setEDNSSubnet(const Netmask& netmask, uint8_t mask)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/protozero.hh:257,1
    - Dst: pdns::ProtoZero::Message::add_string
      Src: /src/pdns/pdns/recursordist/protozero.hh:258,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ' req'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 260
      start: 255
    functionDepth: 0
    functionLinenumber: 255
    functionLinenumberEnd: 260
    functionName: pdns::ProtoZero::Message::setRequestorId
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 1
    functionsReached:
    - empty
    - pdns::ProtoZero::Message::add_string
    linkageType: ''
    returnType: void
    signature: void setRequestorId(const std::string& req)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_bytes
      Src: /src/pdns/pdns/recursordist/protozero.hh:264,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/recursordist/protozero.hh:264,1
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/protozero.hh:264,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/protozero.hh:264,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' uniqueId'
    argTypes:
    - boost::uuids::uuid
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 265
      start: 262
    functionDepth: 0
    functionLinenumber: 262
    functionLinenumberEnd: 265
    functionName: pdns::ProtoZero::Message::setInitialRequestID
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 0
    functionsReached:
    - reinterpret_cast<const char*>
    - pdns::ProtoZero::Message::add_bytes
    - size
    - begin
    linkageType: ''
    returnType: void
    signature: void setInitialRequestID(const boost::uuids::uuid& uniqueId)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/protozero.hh:269,1
    - Dst: pdns::ProtoZero::Message::add_string
      Src: /src/pdns/pdns/recursordist/protozero.hh:270,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ' deviceId'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 272
      start: 267
    functionDepth: 0
    functionLinenumber: 267
    functionLinenumberEnd: 272
    functionName: pdns::ProtoZero::Message::setDeviceId
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 1
    functionsReached:
    - empty
    - pdns::ProtoZero::Message::add_string
    linkageType: ''
    returnType: void
    signature: void setDeviceId(const std::string& deviceId)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_bool
      Src: /src/pdns/pdns/recursordist/protozero.hh:276,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - nod
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 277
      start: 274
    functionDepth: 0
    functionLinenumber: 274
    functionLinenumberEnd: 277
    functionName: pdns::ProtoZero::Message::setNewlyObservedDomain
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 0
    functionsReached:
    - pdns::ProtoZero::Message::add_bool
    linkageType: ''
    returnType: void
    signature: void setNewlyObservedDomain(bool nod)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/protozero.hh:281,1
    - Dst: pdns::ProtoZero::Message::add_string
      Src: /src/pdns/pdns/recursordist/protozero.hh:282,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ' name'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 284
      start: 279
    functionDepth: 0
    functionLinenumber: 279
    functionLinenumberEnd: 284
    functionName: pdns::ProtoZero::Message::setDeviceName
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 1
    functionsReached:
    - empty
    - pdns::ProtoZero::Message::add_string
    linkageType: ''
    returnType: void
    signature: void setDeviceName(const std::string& name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint32
      Src: /src/pdns/pdns/recursordist/protozero.hh:288,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - port
    argTypes:
    - in_port_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 289
      start: 286
    functionDepth: 0
    functionLinenumber: 286
    functionLinenumberEnd: 289
    functionName: pdns::ProtoZero::Message::setFromPort
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 0
    functionsReached:
    - pdns::ProtoZero::Message::add_uint32
    linkageType: ''
    returnType: void
    signature: void setFromPort(in_port_t port)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint32
      Src: /src/pdns/pdns/recursordist/protozero.hh:293,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - port
    argTypes:
    - in_port_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 294
      start: 291
    functionDepth: 0
    functionLinenumber: 291
    functionLinenumberEnd: 294
    functionName: pdns::ProtoZero::Message::setToPort
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 0
    functionsReached:
    - pdns::ProtoZero::Message::add_uint32
    linkageType: ''
    returnType: void
    signature: void setToPort(in_port_t port)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint64
      Src: /src/pdns/pdns/recursordist/protozero.hh:298,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - wid
    argTypes:
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 299
      start: 296
    functionDepth: 0
    functionLinenumber: 296
    functionLinenumberEnd: 299
    functionName: pdns::ProtoZero::Message::setWorkerId
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 0
    functionsReached:
    - pdns::ProtoZero::Message::add_uint64
    linkageType: ''
    returnType: void
    signature: void setWorkerId(uint64_t wid)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_bool
      Src: /src/pdns/pdns/recursordist/protozero.hh:303,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - hit
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 304
      start: 301
    functionDepth: 0
    functionLinenumber: 301
    functionLinenumberEnd: 304
    functionName: pdns::ProtoZero::Message::setPacketCacheHit
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 1
    functionsReached:
    - pdns::ProtoZero::Message::add_bool
    linkageType: ''
    returnType: void
    signature: void setPacketCacheHit(bool hit)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint32
      Src: /src/pdns/pdns/recursordist/protozero.hh:308,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - num
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 309
      start: 306
    functionDepth: 0
    functionLinenumber: 306
    functionLinenumberEnd: 309
    functionName: pdns::ProtoZero::Message::setOutgoingQueries
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 1
    functionsReached:
    - pdns::ProtoZero::Message::add_uint32
    linkageType: ''
    returnType: void
    signature: void setOutgoingQueries(uint32_t num)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint32
      Src: /src/pdns/pdns/recursordist/protozero.hh:313,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - flags
    argTypes:
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 314
      start: 311
    functionDepth: 0
    functionLinenumber: 311
    functionLinenumberEnd: 314
    functionName: pdns::ProtoZero::Message::setHeaderFlags
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 1
    functionsReached:
    - pdns::ProtoZero::Message::add_uint32
    linkageType: ''
    returnType: void
    signature: void setHeaderFlags(uint16_t flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint32
      Src: /src/pdns/pdns/recursordist/protozero.hh:318,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - version
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 319
      start: 316
    functionDepth: 0
    functionLinenumber: 316
    functionLinenumberEnd: 319
    functionName: pdns::ProtoZero::Message::setEDNSVersion
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 0
    functionsReached:
    - pdns::ProtoZero::Message::add_uint32
    linkageType: ''
    returnType: void
    signature: void setEDNSVersion(uint32_t version)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/protozero.hh:323,1
    - Dst: pdns::ProtoZero::Message::add_string
      Src: /src/pdns/pdns/recursordist/protozero.hh:324,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ' data'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 326
      start: 321
    functionDepth: 0
    functionLinenumber: 321
    functionLinenumberEnd: 326
    functionName: pdns::ProtoZero::Message::setOpenTelemetryData
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 2
    functionsReached:
    - empty
    - pdns::ProtoZero::Message::add_string
    linkageType: ''
    returnType: void
    signature: void setOpenTelemetryData(const std::string& data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint32
      Src: /src/pdns/pdns/recursordist/protozero.hh:330,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ede
    argTypes:
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 331
      start: 328
    functionDepth: 0
    functionLinenumber: 328
    functionLinenumberEnd: 331
    functionName: pdns::ProtoZero::Message::setEDE
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 0
    functionsReached:
    - pdns::ProtoZero::Message::add_uint32
    linkageType: ''
    returnType: void
    signature: void setEDE(const uint16_t ede)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::string::empty
      Src: /src/pdns/pdns/recursordist/protozero.hh:335,1
    - Dst: pdns::ProtoZero::Message::add_string
      Src: /src/pdns/pdns/recursordist/protozero.hh:336,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - edeText
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 338
      start: 333
    functionDepth: 0
    functionLinenumber: 333
    functionLinenumberEnd: 338
    functionName: pdns::ProtoZero::Message::setEDEText
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 0
    functionsReached:
    - pdns::ProtoZero::Message::add_string
    - std::string::empty
    linkageType: ''
    returnType: void
    signature: void setEDEText(const std::string edeText)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_bytes
      Src: /src/pdns/pdns/recursordist/protozero.hh:342,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/recursordist/protozero.hh:342,1
    - Dst: data
      Src: /src/pdns/pdns/recursordist/protozero.hh:342,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/protozero.hh:342,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' traceID'
    argTypes:
    - std::array<uint8_t, 16>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 343
      start: 340
    functionDepth: 0
    functionLinenumber: 340
    functionLinenumberEnd: 343
    functionName: pdns::ProtoZero::Message::setOpenTelemetryTraceID
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 1
    functionsReached:
    - reinterpret_cast<const char*>
    - pdns::ProtoZero::Message::add_bytes
    - size
    - data
    linkageType: ''
    returnType: void
    signature: void setOpenTelemetryTraceID(const std::array<uint8_t, 16>& traceID)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/recursordist/protozero.hh:347,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 348
      start: 345
    functionDepth: 0
    functionLinenumber: 345
    functionLinenumberEnd: 348
    functionName: pdns::ProtoZero::Message::startResponse
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 2
    functionsReached:
    - static_cast<protozero::pbf_tag_type>
    linkageType: ''
    returnType: void
    signature: void startResponse()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: commit
      Src: /src/pdns/pdns/recursordist/protozero.hh:352,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 353
      start: 350
    functionDepth: 0
    functionLinenumber: 350
    functionLinenumberEnd: 353
    functionName: pdns::ProtoZero::Message::commitResponse
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 1
    functionsReached:
    - commit
    linkageType: ''
    returnType: void
    signature: void commitResponse()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint32
      Src: /src/pdns/pdns/recursordist/protozero.hh:357,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/recursordist/protozero.hh:357,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rcode
    argTypes:
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 358
      start: 355
    functionDepth: 0
    functionLinenumber: 355
    functionLinenumberEnd: 358
    functionName: pdns::ProtoZero::Message::setResponseCode
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 2
    functionsReached:
    - static_cast<protozero::pbf_tag_type>
    - pdns::ProtoZero::Message::add_uint32
    linkageType: ''
    returnType: void
    signature: void setResponseCode(uint8_t rcode)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint32
      Src: /src/pdns/pdns/recursordist/protozero.hh:363,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/recursordist/protozero.hh:363,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 364
      start: 360
    functionDepth: 0
    functionLinenumber: 360
    functionLinenumberEnd: 364
    functionName: pdns::ProtoZero::Message::setNetworkErrorResponseCode
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 0
    functionsReached:
    - static_cast<protozero::pbf_tag_type>
    - pdns::ProtoZero::Message::add_uint32
    linkageType: ''
    returnType: void
    signature: void setNetworkErrorResponseCode()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_string
      Src: /src/pdns/pdns/recursordist/protozero.hh:368,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/recursordist/protozero.hh:368,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' policy'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 369
      start: 366
    functionDepth: 0
    functionLinenumber: 366
    functionLinenumberEnd: 369
    functionName: pdns::ProtoZero::Message::setAppliedPolicy
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 0
    functionsReached:
    - pdns::ProtoZero::Message::add_string
    - static_cast<protozero::pbf_tag_type>
    linkageType: ''
    returnType: void
    signature: void setAppliedPolicy(const std::string& policy)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::addPolicyTag
      Src: /src/pdns/pdns/recursordist/protozero.hh:374,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - ' tags'
    argTypes:
    - std::unordered_set<std::string>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 376
      start: 371
    functionDepth: 0
    functionLinenumber: 371
    functionLinenumberEnd: 376
    functionName: pdns::ProtoZero::Message::addPolicyTags
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 0
    functionsReached:
    - pdns::ProtoZero::Message::addPolicyTag
    linkageType: ''
    returnType: void
    signature: void addPolicyTags(const std::unordered_set<std::string>& tags)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_string
      Src: /src/pdns/pdns/recursordist/protozero.hh:380,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/recursordist/protozero.hh:380,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' tag'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 381
      start: 378
    functionDepth: 0
    functionLinenumber: 378
    functionLinenumberEnd: 381
    functionName: pdns::ProtoZero::Message::addPolicyTag
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 13
    functionsReached:
    - pdns::ProtoZero::Message::add_string
    - static_cast<protozero::pbf_tag_type>
    linkageType: ''
    returnType: void
    signature: void addPolicyTag(const string& tag)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint32
      Src: /src/pdns/pdns/recursordist/protozero.hh:385,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/recursordist/protozero.hh:385,1
    - Dst: pdns::ProtoZero::Message::add_uint32
      Src: /src/pdns/pdns/recursordist/protozero.hh:386,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/recursordist/protozero.hh:386,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - sec
    - usec
    argTypes:
    - uint32_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 387
      start: 383
    functionDepth: 0
    functionLinenumber: 383
    functionLinenumberEnd: 387
    functionName: pdns::ProtoZero::Message::setQueryTime
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 2
    functionsReached:
    - static_cast<protozero::pbf_tag_type>
    - pdns::ProtoZero::Message::add_uint32
    linkageType: ''
    returnType: void
    signature: void setQueryTime(uint32_t sec, uint32_t usec)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_enum
      Src: /src/pdns/pdns/recursordist/protozero.hh:399,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/recursordist/protozero.hh:399,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' writer'
    - type
    - value
    argTypes:
    - protozero::pbf_writer
    - Field
    - int32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 400
      start: 397
    functionDepth: 0
    functionLinenumber: 397
    functionLinenumberEnd: 400
    functionName: pdns::ProtoZero::Message::add_enum
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 60
    functionsReached:
    - static_cast<protozero::pbf_tag_type>
    - pdns::ProtoZero::Message::add_enum
    linkageType: ''
    returnType: void
    signature: void add_enum(protozero::pbf_writer& writer, Field type, int32_t value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_bool
      Src: /src/pdns/pdns/recursordist/protozero.hh:404,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/recursordist/protozero.hh:404,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' writer'
    - type
    - value
    argTypes:
    - protozero::pbf_writer
    - Field
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 405
      start: 402
    functionDepth: 0
    functionLinenumber: 402
    functionLinenumberEnd: 405
    functionName: pdns::ProtoZero::Message::add_bool
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 36
    functionsReached:
    - static_cast<protozero::pbf_tag_type>
    - pdns::ProtoZero::Message::add_bool
    linkageType: ''
    returnType: void
    signature: void add_bool(protozero::pbf_writer& writer, Field type, bool value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint32
      Src: /src/pdns/pdns/recursordist/protozero.hh:409,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/recursordist/protozero.hh:409,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' writer'
    - type
    - value
    argTypes:
    - protozero::pbf_writer
    - Field
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 410
      start: 407
    functionDepth: 0
    functionLinenumber: 407
    functionLinenumberEnd: 410
    functionName: pdns::ProtoZero::Message::add_uint32
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 144
    functionsReached:
    - static_cast<protozero::pbf_tag_type>
    - pdns::ProtoZero::Message::add_uint32
    linkageType: ''
    returnType: void
    signature: void add_uint32(protozero::pbf_writer& writer, Field type, uint32_t
      value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_uint64
      Src: /src/pdns/pdns/recursordist/protozero.hh:414,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/recursordist/protozero.hh:414,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' writer'
    - type
    - value
    argTypes:
    - protozero::pbf_writer
    - Field
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 415
      start: 412
    functionDepth: 0
    functionLinenumber: 412
    functionLinenumberEnd: 415
    functionName: pdns::ProtoZero::Message::add_uint64
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 36
    functionsReached:
    - pdns::ProtoZero::Message::add_uint64
    - static_cast<protozero::pbf_tag_type>
    linkageType: ''
    returnType: void
    signature: void add_uint64(protozero::pbf_writer& writer, Field type, uint64_t
      value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_bytes
      Src: /src/pdns/pdns/recursordist/protozero.hh:419,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/recursordist/protozero.hh:419,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - ' writer'
    - type
    - data
    - len
    argTypes:
    - protozero::pbf_writer
    - Field
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 420
      start: 417
    functionDepth: 0
    functionLinenumber: 417
    functionLinenumberEnd: 420
    functionName: pdns::ProtoZero::Message::add_bytes
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 60
    functionsReached:
    - static_cast<protozero::pbf_tag_type>
    - pdns::ProtoZero::Message::add_bytes
    linkageType: ''
    returnType: void
    signature: void add_bytes(protozero::pbf_writer& writer, Field type, const char*
      data, size_t len)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_string
      Src: /src/pdns/pdns/recursordist/protozero.hh:424,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/recursordist/protozero.hh:424,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' writer'
    - type
    - ' str'
    argTypes:
    - protozero::pbf_writer
    - Field
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 425
      start: 422
    functionDepth: 0
    functionLinenumber: 422
    functionLinenumberEnd: 425
    functionName: pdns::ProtoZero::Message::add_string
    functionSourceFile: /src/pdns/pdns/recursordist/protozero.hh
    functionUses: 96
    functionsReached:
    - pdns::ProtoZero::Message::add_string
    - static_cast<protozero::pbf_tag_type>
    linkageType: ''
    returnType: void
    signature: void add_string(protozero::pbf_writer& writer, Field type, const std::string&
      str)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/recursordist/rec-responsestats.cc:31,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/recursordist/rec-responsestats.cc:32,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/recursordist/rec-responsestats.cc:33,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/recursordist/rec-responsestats.cc:34,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/recursordist/rec-responsestats.cc:35,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/recursordist/rec-responsestats.cc:36,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/recursordist/rec-responsestats.cc:38,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 27
    functionDepth: 0
    functionLinenumber: 27
    functionLinenumberEnd: 41
    functionName: sizeBounds
    functionSourceFile: /src/pdns/pdns/recursordist/rec-responsestats.cc
    functionUses: 1
    functionsReached:
    - std::vector::push_back
    linkageType: ''
    returnType: auto
    signature: auto sizeBounds()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sizeBounds
      Src: /src/pdns/pdns/recursordist/rec-responsestats.cc:44,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 46
    functionName: RecResponseStats::RecResponseStats
    functionSourceFile: /src/pdns/pdns/recursordist/rec-responsestats.cc
    functionUses: 0
    functionsReached:
    - sizeBounds
    linkageType: ''
    returnType: void
    signature: void RecResponseStats::RecResponseStats()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/recursordist/rec-responsestats.cc:50,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/rec-responsestats.cc:51,1
    - Dst: d_qtypecounters::at
      Src: /src/pdns/pdns/recursordist/rec-responsestats.cc:51,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/rec-responsestats.cc:53,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/rec-responsestats.cc:54,1
    - Dst: d_rcodecounters::at
      Src: /src/pdns/pdns/recursordist/rec-responsestats.cc:54,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - RecResponseStats
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 48
    functionDepth: 0
    functionLinenumber: 48
    functionLinenumberEnd: 58
    functionName: '& RecResponseStats::operator+=(const RecResponseStats& rhs)'
    functionSourceFile: /src/pdns/pdns/recursordist/rec-responsestats.cc
    functionUses: 0
    functionsReached:
    - d_rcodecounters::at
    - d_qtypecounters::at
    - at
    - size
    linkageType: ''
    returnType: RecResponseStats
    signature: RecResponseStats & RecResponseStats::operator+=(const RecResponseStats&
      rhs)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/recursordist/rec-responsestats.cc:63,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/rec-responsestats.cc:64,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 60
    functionDepth: 0
    functionLinenumber: 60
    functionLinenumberEnd: 70
    functionName: RecResponseStats::getQTypeResponseCounts
    functionSourceFile: /src/pdns/pdns/recursordist/rec-responsestats.cc
    functionUses: 0
    functionsReached:
    - at
    - size
    linkageType: ''
    returnType: std::map<uint16_t, uint64_t>
    signature: std::map<uint16_t, uint64_t> RecResponseStats::getQTypeResponseCounts()
      const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: getRawData
      Src: /src/pdns/pdns/recursordist/rec-responsestats.cc:75,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 72
    functionDepth: 0
    functionLinenumber: 72
    functionLinenumberEnd: 81
    functionName: RecResponseStats::getSizeResponseCounts
    functionSourceFile: /src/pdns/pdns/recursordist/rec-responsestats.cc
    functionUses: 0
    functionsReached:
    - getRawData
    linkageType: ''
    returnType: std::map<uint16_t, uint64_t>
    signature: std::map<uint16_t, uint64_t> RecResponseStats::getSizeResponseCounts()
      const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/recursordist/rec-responsestats.cc:86,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/rec-responsestats.cc:87,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 83
    functionDepth: 0
    functionLinenumber: 83
    functionLinenumberEnd: 93
    functionName: RecResponseStats::getRCodeResponseCounts
    functionSourceFile: /src/pdns/pdns/recursordist/rec-responsestats.cc
    functionUses: 0
    functionsReached:
    - at
    - size
    linkageType: ''
    returnType: std::map<uint8_t, uint64_t>
    signature: std::map<uint8_t, uint64_t> RecResponseStats::getRCodeResponseCounts()
      const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RecResponseStats::getQTypeResponseCounts
      Src: /src/pdns/pdns/recursordist/rec-responsestats.cc:97,1
    - Dst: DNSRecordContent::NumberToType
      Src: /src/pdns/pdns/recursordist/rec-responsestats.cc:100,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/rec-responsestats.cc:100,1
    - Dst: std::ostringstream::str
      Src: /src/pdns/pdns/recursordist/rec-responsestats.cc:102,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 95
    functionDepth: 1
    functionLinenumber: 95
    functionLinenumberEnd: 103
    functionName: RecResponseStats::getQTypeReport
    functionSourceFile: /src/pdns/pdns/recursordist/rec-responsestats.cc
    functionUses: 0
    functionsReached:
    - std::ostringstream::str
    - RecResponseStats::getQTypeResponseCounts
    - std::to_string
    - DNSRecordContent::NumberToType
    linkageType: ''
    returnType: std::string
    signature: std::string RecResponseStats::getQTypeReport() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: stringtok
      Src: /src/pdns/pdns/recursordist/lwres.cc:43,1
    - Dst: addCookiesUnsupported
      Src: /src/pdns/pdns/recursordist/lwres.cc:45,1
    - Dst: std::vector::begin
      Src: /src/pdns/pdns/recursordist/lwres.cc:45,1
    - Dst: std::vector::end
      Src: /src/pdns/pdns/recursordist/lwres.cc:45,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - flag
    - ' unsupported'
    argTypes:
    - bool
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 38
    functionDepth: 1
    functionLinenumber: 38
    functionLinenumberEnd: 49
    functionName: enableOutgoingCookies
    functionSourceFile: /src/pdns/pdns/recursordist/lwres.cc
    functionUses: 1
    functionsReached:
    - std::vector::begin
    - std::vector::end
    - stringtok
    - addCookiesUnsupported
    linkageType: ''
    returnType: std::string
    signature: std::string enableOutgoingCookies(bool flag, const string& unsupported)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/lwres.cc:60,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/lwres.cc:65,1
    - Dst: CookieEntry::setSupport
      Src: /src/pdns/pdns/recursordist/lwres.cc:66,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/recursordist/lwres.cc:66,1
    - Dst: auto::insert
      Src: /src/pdns/pdns/recursordist/lwres.cc:67,1
    - Dst: auto::replace
      Src: /src/pdns/pdns/recursordist/lwres.cc:69,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/lwres.cc:74,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 3
    argNames:
    - begin
    - end
    - ' errors'
    argTypes:
    - vector<string>::iterator
    - vector<string>::iterator
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 58
    functionDepth: 2
    functionLinenumber: 58
    functionLinenumberEnd: 82
    functionName: addCookiesUnsupported
    functionSourceFile: /src/pdns/pdns/recursordist/lwres.cc
    functionUses: 2
    functionsReached:
    - pdns::max
    - CookieEntry::setSupport
    - lock
    - auto::replace
    - auto::insert
    - empty
    - ComboAddress
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t addCookiesUnsupported(vector<string>::iterator begin, vector<string>::iterator
      end, string& errors)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/lwres.cc:86,1
    - Dst: auto::size
      Src: /src/pdns/pdns/recursordist/lwres.cc:92,1
    - Dst: auto::clear
      Src: /src/pdns/pdns/recursordist/lwres.cc:93,1
    - Dst: auto::erase
      Src: /src/pdns/pdns/recursordist/lwres.cc:98,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/lwres.cc:98,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/lwres.cc:101,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 21
    argCount: 3
    argNames:
    - begin
    - end
    - ' errors'
    argTypes:
    - vector<string>::iterator
    - vector<string>::iterator
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 84
    functionDepth: 1
    functionLinenumber: 84
    functionLinenumberEnd: 110
    functionName: clearCookies
    functionSourceFile: /src/pdns/pdns/recursordist/lwres.cc
    functionUses: 1
    functionsReached:
    - lock
    - auto::clear
    - empty
    - auto::erase
    - auto::size
    - ComboAddress
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t clearCookies(vector<string>::iterator begin, vector<string>::iterator
      end, string& errors)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/lwres.cc:114,1
    - Dst: auto::prune
      Src: /src/pdns/pdns/recursordist/lwres.cc:115,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - cutoff
    argTypes:
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 112
    functionDepth: 1
    functionLinenumber: 112
    functionLinenumberEnd: 116
    functionName: pruneCookies
    functionSourceFile: /src/pdns/pdns/recursordist/lwres.cc
    functionUses: 1
    functionsReached:
    - auto::prune
    - lock
    linkageType: ''
    returnType: void
    signature: void pruneCookies(time_t cutoff)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/lwres.cc:122,1
    - Dst: CookieStore::dump
      Src: /src/pdns/pdns/recursordist/lwres.cc:125,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - fileDesc
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 118
    functionDepth: 1
    functionLinenumber: 118
    functionLinenumberEnd: 126
    functionName: dumpCookies
    functionSourceFile: /src/pdns/pdns/recursordist/lwres.cc
    functionUses: 1
    functionsReached:
    - CookieStore::dump
    - lock
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t dumpCookies(int fileDesc)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: queueData
      Src: /src/pdns/pdns/recursordist/lwres.cc:130,1
    - Dst: RemoteLoggerInterface::toErrorString
      Src: /src/pdns/pdns/recursordist/lwres.cc:137,1
    - Dst: withName
      Src: /src/pdns/pdns/recursordist/lwres.cc:138,1
    - Dst: name
      Src: /src/pdns/pdns/recursordist/lwres.cc:138,1
    - Dst: RemoteLoggerInterface::toErrorString
      Src: /src/pdns/pdns/recursordist/lwres.cc:142,1
    - Dst: withName
      Src: /src/pdns/pdns/recursordist/lwres.cc:143,1
    - Dst: name
      Src: /src/pdns/pdns/recursordist/lwres.cc:143,1
    - Dst: RemoteLoggerInterface::toErrorString
      Src: /src/pdns/pdns/recursordist/lwres.cc:147,1
    - Dst: withName
      Src: /src/pdns/pdns/recursordist/lwres.cc:148,1
    - Dst: name
      Src: /src/pdns/pdns/recursordist/lwres.cc:148,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 3
    argNames:
    - ' rli'
    - ' data'
    - dolog
    argTypes:
    - RemoteLoggerInterface
    - std::string
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 153
      start: 128
    functionDepth: 0
    functionLinenumber: 128
    functionLinenumberEnd: 153
    functionName: remoteLoggerQueueData
    functionSourceFile: /src/pdns/pdns/recursordist/lwres.cc
    functionUses: 8
    functionsReached:
    - withName
    - name
    - queueData
    - RemoteLoggerInterface::toErrorString
    linkageType: ''
    returnType: RemoteLoggerInterface::Result
    signature: RemoteLoggerInterface::Result remoteLoggerQueueData(RemoteLoggerInterface&
      rli, const std::string& data, bool dolog)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: logQueries
      Src: /src/pdns/pdns/recursordist/lwres.cc:166,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - ' fstreamLoggers'
    argTypes:
    - std::shared_ptr<std::vector<std::unique_ptr<FrameStreamLogger>>>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 171
      start: 160
    functionDepth: 0
    functionLinenumber: 160
    functionLinenumberEnd: 171
    functionName: isEnabledForQueries
    functionSourceFile: /src/pdns/pdns/recursordist/lwres.cc
    functionUses: 0
    functionsReached:
    - logQueries
    linkageType: ''
    returnType: bool
    signature: bool isEnabledForQueries(const std::shared_ptr<std::vector<std::unique_ptr<FrameStreamLogger>>>&
      fstreamLoggers)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: TIMEVAL_TO_TIMESPEC
      Src: /src/pdns/pdns/recursordist/lwres.cc:179,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/lwres.cc:182,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/recursordist/lwres.cc:182,1
    - Dst: data
      Src: /src/pdns/pdns/recursordist/lwres.cc:182,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/lwres.cc:182,1
    - Dst: DnstapMessage::getBuffer
      Src: /src/pdns/pdns/recursordist/lwres.cc:183,1
    - Dst: remoteLoggerQueueData
      Src: /src/pdns/pdns/recursordist/lwres.cc:186,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 7
    argNames:
    - ' fstreamLoggers'
    - ' queryTime'
    - ' localip'
    - ' address'
    - protocol
    - ' auth'
    - ' packet'
    argTypes:
    - std::shared_ptr<std::vector<std::unique_ptr<FrameStreamLogger>>>
    - struct timeval
    - ComboAddress
    - ComboAddress
    - DnstapMessage::ProtocolType
    - DNSName
    - vector<uint8_t>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 188
      start: 173
    functionDepth: 1
    functionLinenumber: 173
    functionLinenumberEnd: 188
    functionName: logFstreamQuery
    functionSourceFile: /src/pdns/pdns/recursordist/lwres.cc
    functionUses: 0
    functionsReached:
    - std::move
    - DnstapMessage::getBuffer
    - TIMEVAL_TO_TIMESPEC
    - size
    - reinterpret_cast<const char*>
    - remoteLoggerQueueData
    - data
    linkageType: ''
    returnType: void
    signature: void logFstreamQuery(const std::shared_ptr<std::vector<std::unique_ptr<FrameStreamLogger>>>&
      fstreamLoggers, const struct timeval& queryTime, const ComboAddress& localip,
      const ComboAddress& address, DnstapMessage::ProtocolType protocol, const DNSName&
      auth, const vector<uint8_t>& packet)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: logResponses
      Src: /src/pdns/pdns/recursordist/lwres.cc:196,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - ' fstreamLoggers'
    argTypes:
    - std::shared_ptr<std::vector<std::unique_ptr<FrameStreamLogger>>>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 201
      start: 190
    functionDepth: 0
    functionLinenumber: 190
    functionLinenumberEnd: 201
    functionName: isEnabledForResponses
    functionSourceFile: /src/pdns/pdns/recursordist/lwres.cc
    functionUses: 0
    functionsReached:
    - logResponses
    linkageType: ''
    returnType: bool
    signature: bool isEnabledForResponses(const std::shared_ptr<std::vector<std::unique_ptr<FrameStreamLogger>>>&
      fstreamLoggers)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: TIMEVAL_TO_TIMESPEC
      Src: /src/pdns/pdns/recursordist/lwres.cc:209,1
    - Dst: TIMEVAL_TO_TIMESPEC
      Src: /src/pdns/pdns/recursordist/lwres.cc:210,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/lwres.cc:213,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/recursordist/lwres.cc:213,1
    - Dst: data
      Src: /src/pdns/pdns/recursordist/lwres.cc:213,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/lwres.cc:213,1
    - Dst: DnstapMessage::getBuffer
      Src: /src/pdns/pdns/recursordist/lwres.cc:214,1
    - Dst: remoteLoggerQueueData
      Src: /src/pdns/pdns/recursordist/lwres.cc:217,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 8
    argNames:
    - ' fstreamLoggers'
    - ' localip'
    - ' address'
    - protocol
    - ' auth'
    - ' packet'
    - ' queryTime'
    - ' replyTime'
    argTypes:
    - std::shared_ptr<std::vector<std::unique_ptr<FrameStreamLogger>>>
    - ComboAddress
    - ComboAddress
    - DnstapMessage::ProtocolType
    - DNSName
    - PacketBuffer
    - struct timeval
    - struct timeval
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 219
      start: 203
    functionDepth: 1
    functionLinenumber: 203
    functionLinenumberEnd: 219
    functionName: logFstreamResponse
    functionSourceFile: /src/pdns/pdns/recursordist/lwres.cc
    functionUses: 0
    functionsReached:
    - std::move
    - DnstapMessage::getBuffer
    - TIMEVAL_TO_TIMESPEC
    - size
    - reinterpret_cast<const char*>
    - remoteLoggerQueueData
    - data
    linkageType: ''
    returnType: void
    signature: void logFstreamResponse(const std::shared_ptr<std::vector<std::unique_ptr<FrameStreamLogger>>>&
      fstreamLoggers, const ComboAddress& localip, const ComboAddress& address, DnstapMessage::ProtocolType
      protocol, const DNSName& auth, const PacketBuffer& packet, const struct timeval&
      queryTime, const struct timeval& replyTime)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: logQueries
      Src: /src/pdns/pdns/recursordist/lwres.cc:231,1
    - Dst: std::string::clear
      Src: /src/pdns/pdns/recursordist/lwres.cc:242,1
    - Dst: pdns::ProtoZero::Message::setType
      Src: /src/pdns/pdns/recursordist/lwres.cc:244,1
    - Dst: pdns::ProtoZero::Message::setMessageIdentity
      Src: /src/pdns/pdns/recursordist/lwres.cc:245,1
    - Dst: pdns::ProtoZero::Message::setSocketFamily
      Src: /src/pdns/pdns/recursordist/lwres.cc:246,1
    - Dst: pdns::ProtoZero::Message::setSocketProtocol
      Src: /src/pdns/pdns/recursordist/lwres.cc:248,1
    - Dst: pdns::ProtoZero::Message::setSocketProtocol
      Src: /src/pdns/pdns/recursordist/lwres.cc:251,1
    - Dst: pdns::ProtoZero::Message::setSocketProtocol
      Src: /src/pdns/pdns/recursordist/lwres.cc:254,1
    - Dst: pdns::ProtoZero::Message::setTo
      Src: /src/pdns/pdns/recursordist/lwres.cc:257,1
    - Dst: pdns::ProtoZero::Message::setInBytes
      Src: /src/pdns/pdns/recursordist/lwres.cc:258,1
    - Dst: pdns::ProtoZero::Message::setTime
      Src: /src/pdns/pdns/recursordist/lwres.cc:259,1
    - Dst: pdns::ProtoZero::Message::setId
      Src: /src/pdns/pdns/recursordist/lwres.cc:260,1
    - Dst: pdns::ProtoZero::Message::setQuestion
      Src: /src/pdns/pdns/recursordist/lwres.cc:261,1
    - Dst: pdns::ProtoZero::Message::setToPort
      Src: /src/pdns/pdns/recursordist/lwres.cc:262,1
    - Dst: getPort
      Src: /src/pdns/pdns/recursordist/lwres.cc:262,1
    - Dst: pdns::ProtoZero::Message::setServerIdentity
      Src: /src/pdns/pdns/recursordist/lwres.cc:263,1
    - Dst: pdns::ProtoZero::Message::setInitialRequestID
      Src: /src/pdns/pdns/recursordist/lwres.cc:266,1
    - Dst: pdns::ProtoZero::Message::setEDNSSubnet
      Src: /src/pdns/pdns/recursordist/lwres.cc:270,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/lwres.cc:273,1
    - Dst: pdns::ProtoZero::Message::setMeta
      Src: /src/pdns/pdns/recursordist/lwres.cc:274,1
    - Dst: logQueries
      Src: /src/pdns/pdns/recursordist/lwres.cc:277,1
    - Dst: remoteLoggerQueueData
      Src: /src/pdns/pdns/recursordist/lwres.cc:278,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 44
    argCount: 12
    argNames:
    - ' outgoingLoggers'
    - ' initialRequestId'
    - ' uuid'
    - ' address'
    - ' domain'
    - type
    - qid
    - doTCP
    - tls
    - bytes
    - ' srcmask'
    - ' nsName'
    argTypes:
    - std::shared_ptr<std::vector<std::unique_ptr<RemoteLogger>>>
    - boost::optional<const boost::uuids::uuid&>
    - boost::uuids::uuid
    - ComboAddress
    - DNSName
    - int
    - uint16_t
    - bool
    - bool
    - size_t
    - std::optional<Netmask>
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 281
      start: 223
    functionDepth: 1
    functionLinenumber: 223
    functionLinenumberEnd: 281
    functionName: logOutgoingQuery
    functionSourceFile: /src/pdns/pdns/recursordist/lwres.cc
    functionUses: 0
    functionsReached:
    - pdns::ProtoZero::Message::setMeta
    - pdns::ProtoZero::Message::setSocketProtocol
    - pdns::ProtoZero::Message::setSocketFamily
    - remoteLoggerQueueData
    - getPort
    - logQueries
    - pdns::ProtoZero::Message::setTo
    - empty
    - pdns::ProtoZero::Message::setType
    - pdns::ProtoZero::Message::setMessageIdentity
    - pdns::ProtoZero::Message::setEDNSSubnet
    - pdns::ProtoZero::Message::setTime
    - std::string::clear
    - pdns::ProtoZero::Message::setInBytes
    - pdns::ProtoZero::Message::setQuestion
    - pdns::ProtoZero::Message::setServerIdentity
    - pdns::ProtoZero::Message::setId
    - pdns::ProtoZero::Message::setToPort
    - pdns::ProtoZero::Message::setInitialRequestID
    linkageType: ''
    returnType: void
    signature: void logOutgoingQuery(const std::shared_ptr<std::vector<std::unique_ptr<RemoteLogger>>>&
      outgoingLoggers, const boost::optional<const boost::uuids::uuid&>& initialRequestId,
      const boost::uuids::uuid& uuid, const ComboAddress& address, const DNSName&
      domain, int type, uint16_t qid, bool doTCP, bool tls, size_t bytes, const std::optional<Netmask>&
      srcmask, const std::string& nsName)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: logResponses
      Src: /src/pdns/pdns/recursordist/lwres.cc:291,1
    - Dst: std::string::clear
      Src: /src/pdns/pdns/recursordist/lwres.cc:302,1
    - Dst: pdns::ProtoZero::RecMessage::setType
      Src: /src/pdns/pdns/recursordist/lwres.cc:304,1
    - Dst: pdns::ProtoZero::RecMessage::setMessageIdentity
      Src: /src/pdns/pdns/recursordist/lwres.cc:305,1
    - Dst: pdns::ProtoZero::RecMessage::setSocketFamily
      Src: /src/pdns/pdns/recursordist/lwres.cc:306,1
    - Dst: pdns::ProtoZero::RecMessage::setSocketProtocol
      Src: /src/pdns/pdns/recursordist/lwres.cc:308,1
    - Dst: pdns::ProtoZero::RecMessage::setSocketProtocol
      Src: /src/pdns/pdns/recursordist/lwres.cc:311,1
    - Dst: pdns::ProtoZero::RecMessage::setSocketProtocol
      Src: /src/pdns/pdns/recursordist/lwres.cc:314,1
    - Dst: pdns::ProtoZero::RecMessage::setTo
      Src: /src/pdns/pdns/recursordist/lwres.cc:316,1
    - Dst: pdns::ProtoZero::RecMessage::setInBytes
      Src: /src/pdns/pdns/recursordist/lwres.cc:317,1
    - Dst: pdns::ProtoZero::RecMessage::setTime
      Src: /src/pdns/pdns/recursordist/lwres.cc:318,1
    - Dst: pdns::ProtoZero::RecMessage::setId
      Src: /src/pdns/pdns/recursordist/lwres.cc:319,1
    - Dst: pdns::ProtoZero::RecMessage::setQuestion
      Src: /src/pdns/pdns/recursordist/lwres.cc:320,1
    - Dst: pdns::ProtoZero::RecMessage::setToPort
      Src: /src/pdns/pdns/recursordist/lwres.cc:321,1
    - Dst: getPort
      Src: /src/pdns/pdns/recursordist/lwres.cc:321,1
    - Dst: pdns::ProtoZero::RecMessage::setServerIdentity
      Src: /src/pdns/pdns/recursordist/lwres.cc:322,1
    - Dst: pdns::ProtoZero::RecMessage::setInitialRequestID
      Src: /src/pdns/pdns/recursordist/lwres.cc:325,1
    - Dst: pdns::ProtoZero::RecMessage::setEDNSSubnet
      Src: /src/pdns/pdns/recursordist/lwres.cc:329,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/lwres.cc:331,1
    - Dst: pdns::ProtoZero::RecMessage::setMeta
      Src: /src/pdns/pdns/recursordist/lwres.cc:332,1
    - Dst: pdns::ProtoZero::RecMessage::startResponse
      Src: /src/pdns/pdns/recursordist/lwres.cc:335,1
    - Dst: pdns::ProtoZero::RecMessage::setQueryTime
      Src: /src/pdns/pdns/recursordist/lwres.cc:336,1
    - Dst: pdns::ProtoZero::RecMessage::setNetworkErrorResponseCode
      Src: /src/pdns/pdns/recursordist/lwres.cc:338,1
    - Dst: pdns::ProtoZero::RecMessage::setResponseCode
      Src: /src/pdns/pdns/recursordist/lwres.cc:341,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/lwres.cc:344,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/lwres.cc:344,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/recursordist/lwres.cc:344,1
    - Dst: pdns::ProtoZero::RecMessage::addRR
      Src: /src/pdns/pdns/recursordist/lwres.cc:346,1
    - Dst: pdns::ProtoZero::RecMessage::commitResponse
      Src: /src/pdns/pdns/recursordist/lwres.cc:348,1
    - Dst: logResponses
      Src: /src/pdns/pdns/recursordist/lwres.cc:351,1
    - Dst: remoteLoggerQueueData
      Src: /src/pdns/pdns/recursordist/lwres.cc:352,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 54
    argCount: 16
    argNames:
    - ' outgoingLoggers'
    - ' initialRequestId'
    - ' uuid'
    - ' address'
    - ' domain'
    - type
    - qid
    - doTCP
    - tls
    - ' srcmask'
    - bytes
    - rcode
    - ' records'
    - ' queryTime'
    - ' exportTypes'
    - ' nsName'
    argTypes:
    - std::shared_ptr<std::vector<std::unique_ptr<RemoteLogger>>>
    - boost::optional<const boost::uuids::uuid&>
    - boost::uuids::uuid
    - ComboAddress
    - DNSName
    - int
    - uint16_t
    - bool
    - bool
    - std::optional<Netmask>
    - size_t
    - int
    - std::vector<DNSRecord>
    - struct timeval
    - std::set<uint16_t>
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 355
      start: 283
    functionDepth: 4
    functionLinenumber: 283
    functionLinenumberEnd: 355
    functionName: logIncomingResponse
    functionSourceFile: /src/pdns/pdns/recursordist/lwres.cc
    functionUses: 0
    functionsReached:
    - remoteLoggerQueueData
    - pdns::ProtoZero::RecMessage::setNetworkErrorResponseCode
    - getPort
    - pdns::ProtoZero::RecMessage::setInBytes
    - pdns::ProtoZero::RecMessage::setQueryTime
    - pdns::ProtoZero::RecMessage::setId
    - size
    - pdns::ProtoZero::RecMessage::commitResponse
    - pdns::ProtoZero::RecMessage::setTime
    - pdns::ProtoZero::RecMessage::setMessageIdentity
    - empty
    - at
    - pdns::max
    - logResponses
    - std::string::clear
    - pdns::ProtoZero::RecMessage::setEDNSSubnet
    - pdns::ProtoZero::RecMessage::setSocketFamily
    - pdns::ProtoZero::RecMessage::startResponse
    - pdns::ProtoZero::RecMessage::setTo
    - pdns::ProtoZero::RecMessage::setSocketProtocol
    - pdns::ProtoZero::RecMessage::setToPort
    - pdns::ProtoZero::RecMessage::setQuestion
    - pdns::ProtoZero::RecMessage::setInitialRequestID
    - pdns::ProtoZero::RecMessage::setMeta
    - pdns::ProtoZero::RecMessage::setType
    - pdns::ProtoZero::RecMessage::addRR
    - pdns::ProtoZero::RecMessage::setServerIdentity
    - pdns::ProtoZero::RecMessage::setResponseCode
    linkageType: ''
    returnType: void
    signature: void logIncomingResponse(const std::shared_ptr<std::vector<std::unique_ptr<RemoteLogger>>>&
      outgoingLoggers, const boost::optional<const boost::uuids::uuid&>& initialRequestId,
      const boost::uuids::uuid& uuid, const ComboAddress& address, const DNSName&
      domain, int type, uint16_t qid, bool doTCP, bool tls, const std::optional<Netmask>&
      srcmask, size_t bytes, int rcode, const std::vector<DNSRecord>& records, const
      struct timeval& queryTime, const std::set<uint16_t>& exportTypes, const std::string&
      nsName)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: getPort
      Src: /src/pdns/pdns/recursordist/lwres.cc:363,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/lwres.cc:365,1
    - Dst: static_cast<suseconds_t>
      Src: /src/pdns/pdns/recursordist/lwres.cc:371,1
    - Dst: Socket::setNonBlocking
      Src: /src/pdns/pdns/recursordist/lwres.cc:373,1
    - Dst: setTCPNoDelay
      Src: /src/pdns/pdns/recursordist/lwres.cc:374,1
    - Dst: Socket::getHandle
      Src: /src/pdns/pdns/recursordist/lwres.cc:374,1
    - Dst: pdns::getQueryLocalAddress
      Src: /src/pdns/pdns/recursordist/lwres.cc:376,1
    - Dst: VLOG
      Src: /src/pdns/pdns/recursordist/lwres.cc:378,1
    - Dst: toStringWithPortExcept
      Src: /src/pdns/pdns/recursordist/lwres.cc:378,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/recursordist/lwres.cc:378,1
    - Dst: VLOG
      Src: /src/pdns/pdns/recursordist/lwres.cc:381,1
    - Dst: toStringWithPortExcept
      Src: /src/pdns/pdns/recursordist/lwres.cc:381,1
    - Dst: Socket::bind
      Src: /src/pdns/pdns/recursordist/lwres.cc:385,1
    - Dst: BindError
      Src: /src/pdns/pdns/recursordist/lwres.cc:389,1
    - Dst: TCPOutConnectionManager::getTLSContext
      Src: /src/pdns/pdns/recursordist/lwres.cc:400,1
    - Dst: info
      Src: /src/pdns/pdns/recursordist/lwres.cc:402,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/lwres.cc:402,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/lwres.cc:406,1
    - Dst: std::string::empty
      Src: /src/pdns/pdns/recursordist/lwres.cc:406,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/lwres.cc:407,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/lwres.cc:410,1
    - Dst: toString
      Src: /src/pdns/pdns/recursordist/lwres.cc:411,1
    - Dst: info
      Src: /src/pdns/pdns/recursordist/lwres.cc:416,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/lwres.cc:416,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/lwres.cc:417,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/lwres.cc:418,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/lwres.cc:419,1
    - Dst: std::make_shared<TCPIOHandler>
      Src: /src/pdns/pdns/recursordist/lwres.cc:422,1
    - Dst: Socket::releaseHandle
      Src: /src/pdns/pdns/recursordist/lwres.cc:422,1
    - Dst: d_handler::tryConnect
      Src: /src/pdns/pdns/recursordist/lwres.cc:426,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 45
    argCount: 7
    argNames:
    - ' log'
    - ' remote'
    - localBind
    - ' connection'
    - ' dnsOverTLS'
    - ' nsName'
    - ' subjectName'
    argTypes:
    - OptLog
    - ComboAddress
    - std::optional<ComboAddress>
    - TCPOutConnectionManager::Connection
    - bool
    - std::string
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 428
      start: 361
    functionDepth: 0
    functionLinenumber: 361
    functionLinenumberEnd: 428
    functionName: tcpconnect
    functionSourceFile: /src/pdns/pdns/recursordist/lwres.cc
    functionUses: 0
    functionsReached:
    - toString
    - Socket::releaseHandle
    - d_handler::tryConnect
    - std::make_shared<TCPIOHandler>
    - getPort
    - Socket::setNonBlocking
    - Logging::Loggable
    - TCPOutConnectionManager::getTLSContext
    - std::string::empty
    - empty
    - pdns::getQueryLocalAddress
    - get
    - VLOG
    - std::move
    - Socket::getHandle
    - setTCPNoDelay
    - static_cast<suseconds_t>
    - BindError
    - info
    - ComboAddress::toString
    - toStringWithPortExcept
    - Socket::bind
    linkageType: ''
    returnType: bool
    signature: bool tcpconnect(const OptLog& log, const ComboAddress& remote, const
      std::optional<ComboAddress> localBind, TCPOutConnectionManager::Connection&
      connection, bool& dnsOverTLS, const std::string& nsName, std::string& subjectName)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: getSocklen
      Src: /src/pdns/pdns/recursordist/lwres.cc:434,1
    - Dst: htons
      Src: /src/pdns/pdns/recursordist/lwres.cc:435,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/lwres.cc:435,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/recursordist/lwres.cc:436,1
    - Dst: getsockname
      Src: /src/pdns/pdns/recursordist/lwres.cc:440,1
    - Dst: d_handler::getDescriptor
      Src: /src/pdns/pdns/recursordist/lwres.cc:440,1
    - Dst: reinterpret_cast<sockaddr*>
      Src: /src/pdns/pdns/recursordist/lwres.cc:440,1
    - Dst: PacketBuffer::reserve
      Src: /src/pdns/pdns/recursordist/lwres.cc:445,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/lwres.cc:445,1
    - Dst: PacketBuffer::insert
      Src: /src/pdns/pdns/recursordist/lwres.cc:446,1
    - Dst: PacketBuffer::end
      Src: /src/pdns/pdns/recursordist/lwres.cc:446,1
    - Dst: PacketBuffer::insert
      Src: /src/pdns/pdns/recursordist/lwres.cc:447,1
    - Dst: PacketBuffer::end
      Src: /src/pdns/pdns/recursordist/lwres.cc:447,1
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/lwres.cc:447,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/lwres.cc:447,1
    - Dst: asendtcp
      Src: /src/pdns/pdns/recursordist/lwres.cc:449,1
    - Dst: d_handler::isTLS
      Src: /src/pdns/pdns/recursordist/lwres.cc:451,1
    - Dst: d_handler::getVerifyResult
      Src: /src/pdns/pdns/recursordist/lwres.cc:452,1
    - Dst: info
      Src: /src/pdns/pdns/recursordist/lwres.cc:453,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/lwres.cc:454,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/lwres.cc:455,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/lwres.cc:456,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/lwres.cc:457,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/lwres.cc:458,1
    - Dst: arecvtcp
      Src: /src/pdns/pdns/recursordist/lwres.cc:463,1
    - Dst: memcpy
      Src: /src/pdns/pdns/recursordist/lwres.cc:468,1
    - Dst: PacketBuffer::data
      Src: /src/pdns/pdns/recursordist/lwres.cc:468,1
    - Dst: ntohs
      Src: /src/pdns/pdns/recursordist/lwres.cc:469,1
    - Dst: PacketBuffer::resize
      Src: /src/pdns/pdns/recursordist/lwres.cc:472,1
    - Dst: arecvtcp
      Src: /src/pdns/pdns/recursordist/lwres.cc:473,1
    - Dst: resize
      Src: /src/pdns/pdns/recursordist/lwres.cc:477,1
    - Dst: memcpy
      Src: /src/pdns/pdns/recursordist/lwres.cc:478,1
    - Dst: data
      Src: /src/pdns/pdns/recursordist/lwres.cc:478,1
    - Dst: PacketBuffer::data
      Src: /src/pdns/pdns/recursordist/lwres.cc:478,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 29
    argCount: 8
    argNames:
    - ' ip'
    - ' connection'
    - ' localip'
    - ' vpacket'
    - ' len'
    - ' buf'
    - ' nsName'
    - ' subjectName'
    argTypes:
    - ComboAddress
    - TCPOutConnectionManager::Connection
    - ComboAddress
    - vector<uint8_t>
    - size_t
    - PacketBuffer
    - std::string
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 480
      start: 430
    functionDepth: 3
    functionLinenumber: 430
    functionLinenumberEnd: 480
    functionName: tcpsendrecv
    functionSourceFile: /src/pdns/pdns/recursordist/lwres.cc
    functionUses: 0
    functionsReached:
    - PacketBuffer::end
    - ntohs
    - d_handler::getVerifyResult
    - reinterpret_cast<sockaddr*>
    - d_handler::getDescriptor
    - resize
    - asendtcp
    - Logging::Loggable
    - getsockname
    - size
    - begin
    - data
    - htons
    - reinterpret_cast<const char*>
    - getSocklen
    - memcpy
    - PacketBuffer::data
    - arecvtcp
    - PacketBuffer::insert
    - PacketBuffer::reserve
    - end
    - info
    - PacketBuffer::resize
    - d_handler::isTLS
    linkageType: ''
    returnType: LWResult::Result
    signature: "LWResult::Result tcpsendrecv(const ComboAddress& ip, TCPOutConnectionManager::Connection&
      connection,\n                                    ComboAddress& localip, const
      vector<uint8_t>& vpacket, size_t& len, PacketBuffer& buf,\n                                    const
      std::string& nsName, const std::string& subjectName)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: getSizeWithOpts
      Src: /src/pdns/pdns/recursordist/lwres.cc:484,1
    - Dst: std::min
      Src: /src/pdns/pdns/recursordist/lwres.cc:495,1
    - Dst: emplace_back
      Src: /src/pdns/pdns/recursordist/lwres.cc:497,1
    - Dst: makeEDNSPaddingOptString
      Src: /src/pdns/pdns/recursordist/lwres.cc:497,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - ' pw'
    - bufsize
    - ' opts'
    argTypes:
    - DNSPacketWriter
    - size_t
    - DNSPacketWriter::optvect_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 499
      start: 482
    functionDepth: 0
    functionLinenumber: 482
    functionLinenumberEnd: 499
    functionName: addPadding
    functionSourceFile: /src/pdns/pdns/recursordist/lwres.cc
    functionUses: 0
    functionsReached:
    - std::min
    - makeEDNSPaddingOptString
    - getSizeWithOpts
    - emplace_back
    linkageType: ''
    returnType: void
    signature: void addPadding(const DNSPacketWriter& pw, size_t bufsize, DNSPacketWriter::optvect_t&
      opts)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/lwres.cc:503,1
    - Dst: auto::find
      Src: /src/pdns/pdns/recursordist/lwres.cc:504,1
    - Dst: auto::end
      Src: /src/pdns/pdns/recursordist/lwres.cc:504,1
    - Dst: auto::getSupport
      Src: /src/pdns/pdns/recursordist/lwres.cc:505,1
    - Dst: emplace_back
      Src: /src/pdns/pdns/recursordist/lwres.cc:510,1
    - Dst: makeOptString
      Src: /src/pdns/pdns/recursordist/lwres.cc:510,1
    - Dst: VLOG
      Src: /src/pdns/pdns/recursordist/lwres.cc:512,1
    - Dst: toString
      Src: /src/pdns/pdns/recursordist/lwres.cc:512,1
    - Dst: auto::d_cookie::toDisplayString
      Src: /src/pdns/pdns/recursordist/lwres.cc:512,1
    - Dst: VLOG
      Src: /src/pdns/pdns/recursordist/lwres.cc:515,1
    - Dst: toString
      Src: /src/pdns/pdns/recursordist/lwres.cc:515,1
    - Dst: CookieEntry::d_cookie::makeClientCookie
      Src: /src/pdns/pdns/recursordist/lwres.cc:523,1
    - Dst: CookieEntry::setSupport
      Src: /src/pdns/pdns/recursordist/lwres.cc:525,1
    - Dst: auto::emplace
      Src: /src/pdns/pdns/recursordist/lwres.cc:526,1
    - Dst: emplace_back
      Src: /src/pdns/pdns/recursordist/lwres.cc:527,1
    - Dst: makeOptString
      Src: /src/pdns/pdns/recursordist/lwres.cc:527,1
    - Dst: VLOG
      Src: /src/pdns/pdns/recursordist/lwres.cc:528,1
    - Dst: toString
      Src: /src/pdns/pdns/recursordist/lwres.cc:528,1
    - Dst: CookieEntry::d_cookie::toDisplayString
      Src: /src/pdns/pdns/recursordist/lwres.cc:528,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 25
    argCount: 6
    argNames:
    - ' log'
    - ' address'
    - ' now'
    - ' opts'
    - ' cookieSentOut'
    - ' addressToBindTo'
    argTypes:
    - OptLog
    - ComboAddress
    - timeval
    - DNSPacketWriter::optvect_t
    - std::optional<EDNSCookiesOpt>
    - std::optional<ComboAddress>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 529
      start: 501
    functionDepth: 1
    functionLinenumber: 501
    functionLinenumberEnd: 529
    functionName: outgoingCookie
    functionSourceFile: /src/pdns/pdns/recursordist/lwres.cc
    functionUses: 0
    functionsReached:
    - toString
    - makeOptString
    - auto::d_cookie::toDisplayString
    - CookieEntry::d_cookie::toDisplayString
    - lock
    - CookieEntry::setSupport
    - auto::emplace
    - emplace_back
    - auto::end
    - auto::getSupport
    - VLOG
    - auto::find
    - CookieEntry::d_cookie::makeClientCookie
    linkageType: ''
    returnType: void
    signature: void outgoingCookie(const OptLog& log, const ComboAddress& address,
      const timeval& now, DNSPacketWriter::optvect_t& opts, std::optional<EDNSCookiesOpt>&
      cookieSentOut, std::optional<ComboAddress>& addressToBindTo)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/lwres.cc:533,1
    - Dst: auto::find
      Src: /src/pdns/pdns/recursordist/lwres.cc:534,1
    - Dst: auto::end
      Src: /src/pdns/pdns/recursordist/lwres.cc:536,1
    - Dst: VLOG
      Src: /src/pdns/pdns/recursordist/lwres.cc:539,1
    - Dst: toString
      Src: /src/pdns/pdns/recursordist/lwres.cc:539,1
    - Dst: getFirstOption
      Src: /src/pdns/pdns/recursordist/lwres.cc:546,1
    - Dst: d_options::end
      Src: /src/pdns/pdns/recursordist/lwres.cc:546,1
    - Dst: EDNSCookiesOpt::EDNSCookiesOpt
      Src: /src/pdns/pdns/recursordist/lwres.cc:547,1
    - Dst: EDNSCookiesOpt::makeFromString
      Src: /src/pdns/pdns/recursordist/lwres.cc:547,1
    - Dst: VLOG
      Src: /src/pdns/pdns/recursordist/lwres.cc:549,1
    - Dst: toString
      Src: /src/pdns/pdns/recursordist/lwres.cc:549,1
    - Dst: EDNSCookiesOpt::toDisplayString
      Src: /src/pdns/pdns/recursordist/lwres.cc:549,1
    - Dst: EDNSCookiesOpt::getClient
      Src: /src/pdns/pdns/recursordist/lwres.cc:550,1
    - Dst: getClient
      Src: /src/pdns/pdns/recursordist/lwres.cc:550,1
    - Dst: VLOG
      Src: /src/pdns/pdns/recursordist/lwres.cc:551,1
    - Dst: toString
      Src: /src/pdns/pdns/recursordist/lwres.cc:551,1
    - Dst: toString
      Src: /src/pdns/pdns/recursordist/lwres.cc:551,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/lwres.cc:552,1
    - Dst: auto::d_localaddress::setPort
      Src: /src/pdns/pdns/recursordist/lwres.cc:554,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/lwres.cc:555,1
    - Dst: auto::getSupport
      Src: /src/pdns/pdns/recursordist/lwres.cc:556,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/lwres.cc:557,1
    - Dst: auto::setSupport
      Src: /src/pdns/pdns/recursordist/lwres.cc:559,1
    - Dst: getCombinedERCode
      Src: /src/pdns/pdns/recursordist/lwres.cc:561,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/lwres.cc:564,1
    - Dst: VLOG
      Src: /src/pdns/pdns/recursordist/lwres.cc:565,1
    - Dst: toString
      Src: /src/pdns/pdns/recursordist/lwres.cc:565,1
    - Dst: VLOG
      Src: /src/pdns/pdns/recursordist/lwres.cc:572,1
    - Dst: toString
      Src: /src/pdns/pdns/recursordist/lwres.cc:572,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/lwres.cc:574,1
    - Dst: VLOG
      Src: /src/pdns/pdns/recursordist/lwres.cc:578,1
    - Dst: toString
      Src: /src/pdns/pdns/recursordist/lwres.cc:578,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/lwres.cc:579,1
    - Dst: VLOG
      Src: /src/pdns/pdns/recursordist/lwres.cc:583,1
    - Dst: toString
      Src: /src/pdns/pdns/recursordist/lwres.cc:583,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/lwres.cc:586,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 47
    argCount: 9
    argNames:
    - ' log'
    - ' address'
    - ' localip'
    - ' now'
    - ' cookieSentOut'
    - ' edo'
    - doTCP
    - ' lwr'
    - ' cookieFoundInReply'
    argTypes:
    - OptLog
    - ComboAddress
    - ComboAddress
    - timeval
    - std::optional<EDNSCookiesOpt>
    - EDNSOpts
    - bool
    - LWResult
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 593
      start: 531
    functionDepth: 1
    functionLinenumber: 531
    functionLinenumberEnd: 593
    functionName: incomingCookie
    functionSourceFile: /src/pdns/pdns/recursordist/lwres.cc
    functionUses: 0
    functionsReached:
    - EDNSCookiesOpt::makeFromString
    - toString
    - std::move
    - EDNSCookiesOpt::EDNSCookiesOpt
    - auto::d_localaddress::setPort
    - getCombinedERCode
    - EDNSCookiesOpt::toDisplayString
    - auto::setSupport
    - getFirstOption
    - lock
    - d_options::end
    - EDNSCookiesOpt::getClient
    - auto::end
    - auto::getSupport
    - VLOG
    - at
    - auto::find
    - getClient
    linkageType: ''
    returnType: std::pair<bool, LWResult::Result>
    signature: std::pair<bool, LWResult::Result> incomingCookie(const OptLog& log,
      const ComboAddress& address, const ComboAddress& localip, const timeval& now,
      const std::optional<EDNSCookiesOpt>& cookieSentOut, const EDNSOpts& edo, bool
      doTCP, LWResult& lwr, bool& cookieFoundInReply)
  - BBCount: 48
    BranchProfiles: []
    Callsites:
    - Dst: PacketBuffer::resize
      Src: /src/pdns/pdns/recursordist/lwres.cc:604,1
    - Dst: dns_random_uint16
      Src: /src/pdns/pdns/recursordist/lwres.cc:607,1
    - Dst: getPort
      Src: /src/pdns/pdns/recursordist/lwres.cc:609,1
    - Dst: d_nsName::empty
      Src: /src/pdns/pdns/recursordist/lwres.cc:611,1
    - Dst: d_nsName::toStringNoDot
      Src: /src/pdns/pdns/recursordist/lwres.cc:612,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/recursordist/lwres.cc:615,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/recursordist/lwres.cc:616,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/recursordist/lwres.cc:627,1
    - Dst: std::optional::setSource
      Src: /src/pdns/pdns/recursordist/lwres.cc:637,1
    - Dst: DNSPacketWriter::optvect_t::emplace_back
      Src: /src/pdns/pdns/recursordist/lwres.cc:638,1
    - Dst: std::optional::makeOptString
      Src: /src/pdns/pdns/recursordist/lwres.cc:638,1
    - Dst: outgoingCookie
      Src: /src/pdns/pdns/recursordist/lwres.cc:642,1
    - Dst: addPadding
      Src: /src/pdns/pdns/recursordist/lwres.cc:646,1
    - Dst: DNSPacketWriter::addOpt
      Src: /src/pdns/pdns/recursordist/lwres.cc:649,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/recursordist/lwres.cc:650,1
    - Dst: DTime::DTime
      Src: /src/pdns/pdns/recursordist/lwres.cc:656,1
    - Dst: DTime::set
      Src: /src/pdns/pdns/recursordist/lwres.cc:657,1
    - Dst: DTime::getTimeval
      Src: /src/pdns/pdns/recursordist/lwres.cc:658,1
    - Dst: getUniqueID
      Src: /src/pdns/pdns/recursordist/lwres.cc:664,1
    - Dst: logOutgoingQuery
      Src: /src/pdns/pdns/recursordist/lwres.cc:665,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/lwres.cc:665,1
    - Dst: isEnabledForQueries
      Src: /src/pdns/pdns/recursordist/lwres.cc:676,1
    - Dst: isEnabledForResponses
      Src: /src/pdns/pdns/recursordist/lwres.cc:679,1
    - Dst: asendto
      Src: /src/pdns/pdns/recursordist/lwres.cc:687,1
    - Dst: vector::data
      Src: /src/pdns/pdns/recursordist/lwres.cc:687,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/lwres.cc:687,1
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/lwres.cc:692,1
    - Dst: auto::erase
      Src: /src/pdns/pdns/recursordist/lwres.cc:693,1
    - Dst: getSocklen
      Src: /src/pdns/pdns/recursordist/lwres.cc:709,1
    - Dst: getsockname
      Src: /src/pdns/pdns/recursordist/lwres.cc:710,1
    - Dst: reinterpret_cast<sockaddr*>
      Src: /src/pdns/pdns/recursordist/lwres.cc:710,1
    - Dst: logFstreamQuery
      Src: /src/pdns/pdns/recursordist/lwres.cc:714,1
    - Dst: arecvfrom
      Src: /src/pdns/pdns/recursordist/lwres.cc:720,1
    - Dst: tcpconnect
      Src: /src/pdns/pdns/recursordist/lwres.cc:732,1
    - Dst: tcpsendrecv
      Src: /src/pdns/pdns/recursordist/lwres.cc:733,1
    - Dst: logFstreamQuery
      Src: /src/pdns/pdns/recursordist/lwres.cc:736,1
    - Dst: d_handler::close
      Src: /src/pdns/pdns/recursordist/lwres.cc:742,1
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/lwres.cc:746,1
    - Dst: auto::erase
      Src: /src/pdns/pdns/recursordist/lwres.cc:747,1
    - Dst: VLOG
      Src: /src/pdns/pdns/recursordist/lwres.cc:748,1
    - Dst: toString
      Src: /src/pdns/pdns/recursordist/lwres.cc:748,1
    - Dst: std::optional::toString
      Src: /src/pdns/pdns/recursordist/lwres.cc:748,1
    - Dst: VLOG
      Src: /src/pdns/pdns/recursordist/lwres.cc:752,1
    - Dst: toString
      Src: /src/pdns/pdns/recursordist/lwres.cc:752,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/lwres.cc:752,1
    - Dst: VLOG
      Src: /src/pdns/pdns/recursordist/lwres.cc:756,1
    - Dst: toString
      Src: /src/pdns/pdns/recursordist/lwres.cc:756,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/lwres.cc:756,1
    - Dst: DTime::udiff
      Src: /src/pdns/pdns/recursordist/lwres.cc:762,1
    - Dst: DTime::getTimeval
      Src: /src/pdns/pdns/recursordist/lwres.cc:763,1
    - Dst: logIncomingResponse
      Src: /src/pdns/pdns/recursordist/lwres.cc:767,1
    - Dst: dns_random
      Src: /src/pdns/pdns/recursordist/lwres.cc:777,1
    - Dst: mthreadSleep
      Src: /src/pdns/pdns/recursordist/lwres.cc:779,1
    - Dst: PacketBuffer::resize
      Src: /src/pdns/pdns/recursordist/lwres.cc:784,1
    - Dst: logFstreamResponse
      Src: /src/pdns/pdns/recursordist/lwres.cc:792,1
    - Dst: LWResult*::d_records::clear
      Src: /src/pdns/pdns/recursordist/lwres.cc:796,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/recursordist/lwres.cc:799,1
    - Dst: PacketBuffer::data
      Src: /src/pdns/pdns/recursordist/lwres.cc:799,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/recursordist/lwres.cc:799,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/lwres.cc:805,1
    - Dst: MOADNSParser::d_qname::empty
      Src: /src/pdns/pdns/recursordist/lwres.cc:813,1
    - Dst: logIncomingResponse
      Src: /src/pdns/pdns/recursordist/lwres.cc:815,1
    - Dst: MOADNSParser::d_qname::empty
      Src: /src/pdns/pdns/recursordist/lwres.cc:822,1
    - Dst: toString
      Src: /src/pdns/pdns/recursordist/lwres.cc:822,1
    - Dst: info
      Src: /src/pdns/pdns/recursordist/lwres.cc:823,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/lwres.cc:824,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/lwres.cc:825,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/lwres.cc:826,1
    - Dst: LWResult*::d_records::reserve
      Src: /src/pdns/pdns/recursordist/lwres.cc:835,1
    - Dst: MOADNSParser::d_answers::size
      Src: /src/pdns/pdns/recursordist/lwres.cc:835,1
    - Dst: LWResult*::d_records::push_back
      Src: /src/pdns/pdns/recursordist/lwres.cc:837,1
    - Dst: getEDNSOpts
      Src: /src/pdns/pdns/recursordist/lwres.cc:841,1
    - Dst: EDNSOpts::getFirstOption
      Src: /src/pdns/pdns/recursordist/lwres.cc:852,1
    - Dst: EDNSOpts::d_options::end
      Src: /src/pdns/pdns/recursordist/lwres.cc:852,1
    - Dst: EDNSSubnetOpts::getFromString
      Src: /src/pdns/pdns/recursordist/lwres.cc:854,1
    - Dst: EDNSSubnetOpts::getSource
      Src: /src/pdns/pdns/recursordist/lwres.cc:855,1
    - Dst: std::optional::getSource
      Src: /src/pdns/pdns/recursordist/lwres.cc:855,1
    - Dst: info
      Src: /src/pdns/pdns/recursordist/lwres.cc:856,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/lwres.cc:857,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/lwres.cc:858,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/lwres.cc:859,1
    - Dst: std::optional::getSource
      Src: /src/pdns/pdns/recursordist/lwres.cc:859,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/lwres.cc:860,1
    - Dst: EDNSSubnetOpts::getSource
      Src: /src/pdns/pdns/recursordist/lwres.cc:860,1
    - Dst: EDNSSubnetOpts::getScopePrefixLength
      Src: /src/pdns/pdns/recursordist/lwres.cc:867,1
    - Dst: std::min
      Src: /src/pdns/pdns/recursordist/lwres.cc:868,1
    - Dst: EDNSSubnetOpts::getScopePrefixLength
      Src: /src/pdns/pdns/recursordist/lwres.cc:868,1
    - Dst: std::optional::getSourcePrefixLength
      Src: /src/pdns/pdns/recursordist/lwres.cc:868,1
    - Dst: std::optional::getSource
      Src: /src/pdns/pdns/recursordist/lwres.cc:869,1
    - Dst: auto::truncate
      Src: /src/pdns/pdns/recursordist/lwres.cc:870,1
    - Dst: Netmask
      Src: /src/pdns/pdns/recursordist/lwres.cc:871,1
    - Dst: incomingCookie
      Src: /src/pdns/pdns/recursordist/lwres.cc:877,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/lwres.cc:886,1
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/lwres.cc:887,1
    - Dst: auto::find
      Src: /src/pdns/pdns/recursordist/lwres.cc:888,1
    - Dst: auto::end
      Src: /src/pdns/pdns/recursordist/lwres.cc:889,1
    - Dst: auto::getSupport
      Src: /src/pdns/pdns/recursordist/lwres.cc:890,1
    - Dst: VLOG
      Src: /src/pdns/pdns/recursordist/lwres.cc:892,1
    - Dst: toString
      Src: /src/pdns/pdns/recursordist/lwres.cc:892,1
    - Dst: auto::setSupport
      Src: /src/pdns/pdns/recursordist/lwres.cc:893,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/lwres.cc:894,1
    - Dst: VLOG
      Src: /src/pdns/pdns/recursordist/lwres.cc:898,1
    - Dst: toString
      Src: /src/pdns/pdns/recursordist/lwres.cc:898,1
    - Dst: VLOG
      Src: /src/pdns/pdns/recursordist/lwres.cc:902,1
    - Dst: toString
      Src: /src/pdns/pdns/recursordist/lwres.cc:902,1
    - Dst: VLOG
      Src: /src/pdns/pdns/recursordist/lwres.cc:908,1
    - Dst: toString
      Src: /src/pdns/pdns/recursordist/lwres.cc:908,1
    - Dst: logIncomingResponse
      Src: /src/pdns/pdns/recursordist/lwres.cc:914,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/lwres.cc:921,1
    - Dst: error
      Src: /src/pdns/pdns/recursordist/lwres.cc:922,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/lwres.cc:922,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/lwres.cc:922,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/lwres.cc:923,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/lwres.cc:928,1
    - Dst: logIncomingResponse
      Src: /src/pdns/pdns/recursordist/lwres.cc:931,1
    - Dst: info
      Src: /src/pdns/pdns/recursordist/lwres.cc:937,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/lwres.cc:937,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/lwres.cc:940,1
    CyclomaticComplexity: 72
    EdgeCount: 72
    ICount: 214
    argCount: 16
    argNames:
    - ' log'
    - ' address'
    - ' domain'
    - type
    - doTCP
    - sendRDQuery
    - EDNS0Level
    - now
    - ' srcmask'
    - ' context'
    - ' outgoingLoggers'
    - ' fstrmLoggers'
    - ' exportTypes'
    - lwr
    - chained
    - ' connection'
    argTypes:
    - OptLog
    - ComboAddress
    - DNSName
    - int
    - bool
    - bool
    - int
    - struct timeval*
    - std::optional<Netmask>
    - ResolveContext
    - std::shared_ptr<std::vector<std::unique_ptr<RemoteLogger>>>
    - std::shared_ptr<std::vector<std::unique_ptr<FrameStreamLogger>>>
    - std::set<uint16_t>
    - LWResult*
    - bool*
    - TCPOutConnectionManager::Connection
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 947
      start: 599
    functionDepth: 5
    functionLinenumber: 599
    functionLinenumberEnd: 947
    functionName: asyncresolve
    functionSourceFile: /src/pdns/pdns/recursordist/lwres.cc
    functionUses: 1
    functionsReached:
    - DTime::getTimeval
    - toString
    - isEnabledForQueries
    - getUniqueID
    - std::optional::toString
    - dns_random_uint16
    - LWResult*::d_records::clear
    - PacketBuffer::size
    - logOutgoingQuery
    - logFstreamResponse
    - DTime::set
    - logIncomingResponse
    - error
    - reinterpret_cast<sockaddr*>
    - auto::erase
    - DNSPacketWriter::optvect_t::emplace_back
    - getPort
    - Logging::Loggable
    - d_handler::close
    - arecvfrom
    - LWResult*::d_records::push_back
    - d_nsName::toStringNoDot
    - auto::setSupport
    - DNSPacketWriter::getHeader
    - DTime::DTime
    - lock
    - getsockname
    - logFstreamQuery
    - EDNSSubnetOpts::getFromString
    - std::optional::getSource
    - tcpsendrecv
    - vector::data
    - auto::getSupport
    - at
    - tcpconnect
    - getEDNSOpts
    - EDNSSubnetOpts::getScopePrefixLength
    - Netmask
    - asendto
    - d_nsName::empty
    - DNSPacketWriter::commit
    - EDNSOpts::getFirstOption
    - DTime::udiff
    - std::optional::setSource
    - std::optional::makeOptString
    - reinterpret_cast<const char*>
    - EDNSSubnetOpts::getSource
    - isEnabledForResponses
    - addPadding
    - MOADNSParser::d_qname::empty
    - EDNSOpts::d_options::end
    - getSocklen
    - VLOG
    - auto::find
    - arg
    - std::optional::getSourcePrefixLength
    - PacketBuffer::data
    - dns_random
    - mthreadSleep
    - incomingCookie
    - what
    - std::min
    - info
    - outgoingCookie
    - MOADNSParser::d_answers::size
    - DNSPacketWriter::addOpt
    - auto::truncate
    - LWResult*::d_records::reserve
    - PacketBuffer::resize
    - auto::end
    - vector::size
    linkageType: ''
    returnType: LWResult::Result
    signature: LWResult::Result asyncresolve(const OptLog& log, const ComboAddress&
      address, const DNSName& domain, int type, bool doTCP, bool sendRDQuery, int
      EDNS0Level, struct timeval* now, std::optional<Netmask>& srcmask, const ResolveContext&
      context, const std::shared_ptr<std::vector<std::unique_ptr<RemoteLogger>>>&
      outgoingLoggers, [[maybe_unused]] const std::shared_ptr<std::vector<std::unique_ptr<FrameStreamLogger>>>&
      fstrmLoggers, const std::set<uint16_t>& exportTypes, LWResult* lwr, bool* chained,
      TCPOutConnectionManager::Connection& connection)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: asyncresolve
      Src: /src/pdns/pdns/recursordist/lwres.cc:952,1
    - Dst: store
      Src: /src/pdns/pdns/recursordist/lwres.cc:956,1
    - Dst: std::make_pair
      Src: /src/pdns/pdns/recursordist/lwres.cc:956,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/lwres.cc:956,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 15
    argNames:
    - ' log'
    - ' address'
    - ' domain'
    - type
    - doTCP
    - sendRDQuery
    - EDNS0Level
    - now
    - ' srcmask'
    - ' context'
    - ' outgoingLoggers'
    - ' fstrmLoggers'
    - ' exportTypes'
    - lwr
    - chained
    argTypes:
    - OptLog
    - ComboAddress
    - DNSName
    - int
    - bool
    - bool
    - int
    - struct timeval*
    - std::optional<Netmask>
    - ResolveContext
    - std::shared_ptr<std::vector<std::unique_ptr<RemoteLogger>>>
    - std::shared_ptr<std::vector<std::unique_ptr<FrameStreamLogger>>>
    - std::set<uint16_t>
    - LWResult*
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 960
      start: 949
    functionDepth: 0
    functionLinenumber: 949
    functionLinenumberEnd: 960
    functionName: asyncresolve
    functionSourceFile: /src/pdns/pdns/recursordist/lwres.cc
    functionUses: 2
    functionsReached:
    - std::make_pair
    - std::move
    - asyncresolve
    - store
    linkageType: ''
    returnType: LWResult::Result
    signature: LWResult::Result asyncresolve(const OptLog& log, const ComboAddress&
      address, const DNSName& domain, int type, bool doTCP, bool sendRDQuery, int
      EDNS0Level, struct timeval* now, std::optional<Netmask>& srcmask, const ResolveContext&
      context, const std::shared_ptr<std::vector<std::unique_ptr<RemoteLogger>>>&
      outgoingLoggers, const std::shared_ptr<std::vector<std::unique_ptr<FrameStreamLogger>>>&
      fstrmLoggers, const std::set<uint16_t>& exportTypes, LWResult* lwr, bool* chained)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - value
    argTypes:
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 188
      start: 184
    functionDepth: 0
    functionLinenumber: 184
    functionLinenumberEnd: 188
    functionName: rec::add
    functionSourceFile: /src/pdns/pdns/recursordist/rec-tcounters.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void add(double value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: rec::add
      Src: /src/pdns/pdns/recursordist/rec-tcounters.hh:192,1
    - Dst: static_cast<double>
      Src: /src/pdns/pdns/recursordist/rec-tcounters.hh:192,1
    - Dst: static_cast<double>
      Src: /src/pdns/pdns/recursordist/rec-tcounters.hh:192,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - value
    - rollsize
    argTypes:
    - double
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 193
      start: 190
    functionDepth: 0
    functionLinenumber: 190
    functionLinenumberEnd: 193
    functionName: rec::addToRollingAvg
    functionSourceFile: /src/pdns/pdns/recursordist/rec-tcounters.hh
    functionUses: 0
    functionsReached:
    - static_cast<double>
    - rec::add
    linkageType: ''
    returnType: void
    signature: void addToRollingAvg(double value, uint64_t rollsize)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/recursordist/rec-tcounters.hh:202,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/rec-tcounters.hh:203,1
    - Dst: rcodeCounters::at
      Src: /src/pdns/pdns/recursordist/rec-tcounters.hh:203,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - RCodeCounters
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 206
      start: 200
    functionDepth: 0
    functionLinenumber: 200
    functionLinenumberEnd: 206
    functionName: '& operator+=(const RCodeCounters& rhs)'
    functionSourceFile: /src/pdns/pdns/recursordist/rec-tcounters.hh
    functionUses: 0
    functionsReached:
    - at
    - rcodeCounters::at
    - size
    linkageType: ''
    returnType: RCodeCounters
    signature: RCodeCounters & operator+=(const RCodeCounters& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/recursordist/rec-tcounters.hh:230,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/rec-tcounters.hh:231,1
    - Dst: counts::at
      Src: /src/pdns/pdns/recursordist/rec-tcounters.hh:231,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - DNSSECCounters
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 234
      start: 228
    functionDepth: 0
    functionLinenumber: 228
    functionLinenumberEnd: 234
    functionName: '& operator+=(const DNSSECCounters& rhs)'
    functionSourceFile: /src/pdns/pdns/recursordist/rec-tcounters.hh
    functionUses: 0
    functionsReached:
    - counts::at
    - at
    - size
    linkageType: ''
    returnType: DNSSECCounters
    signature: DNSSECCounters & operator+=(const DNSSECCounters& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: at
      Src: /src/pdns/pdns/recursordist/rec-tcounters.hh:237,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/recursordist/rec-tcounters.hh:237,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - index
    argTypes:
    - vState
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 238
      start: 235
    functionDepth: 0
    functionLinenumber: 235
    functionLinenumberEnd: 238
    functionName: '& at(vState index)'
    functionSourceFile: /src/pdns/pdns/recursordist/rec-tcounters.hh
    functionUses: 0
    functionsReached:
    - static_cast<size_t>
    - at
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t & at(vState index)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/recursordist/rec-tcounters.hh:248,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/rec-tcounters.hh:249,1
    - Dst: counts::at
      Src: /src/pdns/pdns/recursordist/rec-tcounters.hh:249,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - PolicyCounters
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 252
      start: 246
    functionDepth: 0
    functionLinenumber: 246
    functionLinenumberEnd: 252
    functionName: '& operator+=(const PolicyCounters& rhs)'
    functionSourceFile: /src/pdns/pdns/recursordist/rec-tcounters.hh
    functionUses: 0
    functionsReached:
    - counts::at
    - at
    - size
    linkageType: ''
    returnType: PolicyCounters
    signature: PolicyCounters & operator+=(const PolicyCounters& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: at
      Src: /src/pdns/pdns/recursordist/rec-tcounters.hh:255,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/recursordist/rec-tcounters.hh:255,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - index
    argTypes:
    - DNSFilterEngine::PolicyKind
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 256
      start: 253
    functionDepth: 0
    functionLinenumber: 253
    functionLinenumberEnd: 256
    functionName: '& at(DNSFilterEngine::PolicyKind index)'
    functionSourceFile: /src/pdns/pdns/recursordist/rec-tcounters.hh
    functionUses: 0
    functionsReached:
    - static_cast<size_t>
    - at
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t & at(DNSFilterEngine::PolicyKind index)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - PolicyNameCounters
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 270
      start: 264
    functionDepth: 0
    functionLinenumber: 264
    functionLinenumberEnd: 270
    functionName: '& operator+=(const PolicyNameCounters& rhs)'
    functionSourceFile: /src/pdns/pdns/recursordist/rec-tcounters.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: PolicyNameCounters
    signature: PolicyNameCounters & operator+=(const PolicyNameCounters& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 275
      start: 275
    functionDepth: 0
    functionLinenumber: 275
    functionLinenumberEnd: 275
    functionName: rec::Counters
    functionSourceFile: /src/pdns/pdns/recursordist/rec-tcounters.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Counters()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: at
      Src: /src/pdns/pdns/recursordist/rec-tcounters.hh:293,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/recursordist/rec-tcounters.hh:293,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - index
    argTypes:
    - Counter
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 294
      start: 291
    functionDepth: 0
    functionLinenumber: 291
    functionLinenumberEnd: 294
    functionName: '& at(Counter index)'
    functionSourceFile: /src/pdns/pdns/recursordist/rec-tcounters.hh
    functionUses: 0
    functionsReached:
    - static_cast<size_t>
    - at
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t & at(Counter index)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: at
      Src: /src/pdns/pdns/recursordist/rec-tcounters.hh:298,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/recursordist/rec-tcounters.hh:298,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - index
    argTypes:
    - DoubleWAvgCounter
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 299
      start: 296
    functionDepth: 0
    functionLinenumber: 296
    functionLinenumberEnd: 299
    functionName: '& at(DoubleWAvgCounter index)'
    functionSourceFile: /src/pdns/pdns/recursordist/rec-tcounters.hh
    functionUses: 0
    functionsReached:
    - static_cast<size_t>
    - at
    linkageType: ''
    returnType: WeightedAverage
    signature: WeightedAverage & at(DoubleWAvgCounter index)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 305
      start: 301
    functionDepth: 0
    functionLinenumber: 301
    functionLinenumberEnd: 305
    functionName: '& at(RCode /*unused*/)'
    functionSourceFile: /src/pdns/pdns/recursordist/rec-tcounters.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: RCodeCounters
    signature: RCodeCounters & at(RCode /*unused*/)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 311
      start: 307
    functionDepth: 0
    functionLinenumber: 307
    functionLinenumberEnd: 311
    functionName: '& at(ResponseStats /*unused*/)'
    functionSourceFile: /src/pdns/pdns/recursordist/rec-tcounters.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: RecResponseStats
    signature: RecResponseStats & at(ResponseStats /*unused*/)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: at
      Src: /src/pdns/pdns/recursordist/rec-tcounters.hh:315,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/recursordist/rec-tcounters.hh:315,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - index
    argTypes:
    - Histogram
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 316
      start: 313
    functionDepth: 0
    functionLinenumber: 313
    functionLinenumberEnd: 316
    functionName: '& at(Histogram index)'
    functionSourceFile: /src/pdns/pdns/recursordist/rec-tcounters.hh
    functionUses: 0
    functionsReached:
    - static_cast<size_t>
    - at
    linkageType: ''
    returnType: pdns::Histogram
    signature: pdns::Histogram & at(Histogram index)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: at
      Src: /src/pdns/pdns/recursordist/rec-tcounters.hh:320,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/recursordist/rec-tcounters.hh:320,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - index
    argTypes:
    - DNSSECHistogram
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 321
      start: 318
    functionDepth: 0
    functionLinenumber: 318
    functionLinenumberEnd: 321
    functionName: '& at(DNSSECHistogram index)'
    functionSourceFile: /src/pdns/pdns/recursordist/rec-tcounters.hh
    functionUses: 0
    functionsReached:
    - static_cast<size_t>
    - at
    linkageType: ''
    returnType: DNSSECCounters
    signature: DNSSECCounters & at(DNSSECHistogram index)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 327
      start: 324
    functionDepth: 0
    functionLinenumber: 324
    functionLinenumberEnd: 327
    functionName: '& at(PolicyHistogram /* unused */)'
    functionSourceFile: /src/pdns/pdns/recursordist/rec-tcounters.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: PolicyCounters
    signature: PolicyCounters & at(PolicyHistogram /* unused */)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 333
      start: 330
    functionDepth: 0
    functionLinenumber: 330
    functionLinenumberEnd: 333
    functionName: '& at(PolicyNameHits /*unused*/)'
    functionSourceFile: /src/pdns/pdns/recursordist/rec-tcounters.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: PolicyNameCounters
    signature: PolicyNameCounters & at(PolicyNameHits /*unused*/)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - value
    argTypes:
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 188
      start: 184
    functionDepth: 0
    functionLinenumber: 184
    functionLinenumberEnd: 188
    functionName: rec::add
    functionSourceFile: /src/pdns/pdns/recursordist/rec-tcounters.hh
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void add(double value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: rec::add
      Src: /src/pdns/pdns/recursordist/rec-tcounters.hh:192,1
    - Dst: static_cast<double>
      Src: /src/pdns/pdns/recursordist/rec-tcounters.hh:192,1
    - Dst: static_cast<double>
      Src: /src/pdns/pdns/recursordist/rec-tcounters.hh:192,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - value
    - rollsize
    argTypes:
    - double
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 193
      start: 190
    functionDepth: 0
    functionLinenumber: 190
    functionLinenumberEnd: 193
    functionName: rec::addToRollingAvg
    functionSourceFile: /src/pdns/pdns/recursordist/rec-tcounters.hh
    functionUses: 0
    functionsReached:
    - static_cast<double>
    - rec::add
    linkageType: ''
    returnType: void
    signature: void addToRollingAvg(double value, uint64_t rollsize)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/recursordist/rec-tcounters.hh:202,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/rec-tcounters.hh:203,1
    - Dst: rcodeCounters::at
      Src: /src/pdns/pdns/recursordist/rec-tcounters.hh:203,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - RCodeCounters
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 206
      start: 200
    functionDepth: 0
    functionLinenumber: 200
    functionLinenumberEnd: 206
    functionName: '& operator+=(const RCodeCounters& rhs)'
    functionSourceFile: /src/pdns/pdns/recursordist/rec-tcounters.hh
    functionUses: 0
    functionsReached:
    - at
    - rcodeCounters::at
    - size
    linkageType: ''
    returnType: RCodeCounters
    signature: RCodeCounters & operator+=(const RCodeCounters& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/recursordist/rec-tcounters.hh:230,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/rec-tcounters.hh:231,1
    - Dst: counts::at
      Src: /src/pdns/pdns/recursordist/rec-tcounters.hh:231,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - DNSSECCounters
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 234
      start: 228
    functionDepth: 0
    functionLinenumber: 228
    functionLinenumberEnd: 234
    functionName: '& operator+=(const DNSSECCounters& rhs)'
    functionSourceFile: /src/pdns/pdns/recursordist/rec-tcounters.hh
    functionUses: 0
    functionsReached:
    - counts::at
    - at
    - size
    linkageType: ''
    returnType: DNSSECCounters
    signature: DNSSECCounters & operator+=(const DNSSECCounters& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: at
      Src: /src/pdns/pdns/recursordist/rec-tcounters.hh:237,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/recursordist/rec-tcounters.hh:237,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - index
    argTypes:
    - vState
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 238
      start: 235
    functionDepth: 0
    functionLinenumber: 235
    functionLinenumberEnd: 238
    functionName: '& at(vState index)'
    functionSourceFile: /src/pdns/pdns/recursordist/rec-tcounters.hh
    functionUses: 0
    functionsReached:
    - static_cast<size_t>
    - at
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t & at(vState index)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/recursordist/rec-tcounters.hh:248,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/rec-tcounters.hh:249,1
    - Dst: counts::at
      Src: /src/pdns/pdns/recursordist/rec-tcounters.hh:249,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - PolicyCounters
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 252
      start: 246
    functionDepth: 0
    functionLinenumber: 246
    functionLinenumberEnd: 252
    functionName: '& operator+=(const PolicyCounters& rhs)'
    functionSourceFile: /src/pdns/pdns/recursordist/rec-tcounters.hh
    functionUses: 0
    functionsReached:
    - counts::at
    - at
    - size
    linkageType: ''
    returnType: PolicyCounters
    signature: PolicyCounters & operator+=(const PolicyCounters& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: at
      Src: /src/pdns/pdns/recursordist/rec-tcounters.hh:255,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/recursordist/rec-tcounters.hh:255,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - index
    argTypes:
    - DNSFilterEngine::PolicyKind
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 256
      start: 253
    functionDepth: 0
    functionLinenumber: 253
    functionLinenumberEnd: 256
    functionName: '& at(DNSFilterEngine::PolicyKind index)'
    functionSourceFile: /src/pdns/pdns/recursordist/rec-tcounters.hh
    functionUses: 0
    functionsReached:
    - static_cast<size_t>
    - at
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t & at(DNSFilterEngine::PolicyKind index)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - PolicyNameCounters
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 270
      start: 264
    functionDepth: 0
    functionLinenumber: 264
    functionLinenumberEnd: 270
    functionName: '& operator+=(const PolicyNameCounters& rhs)'
    functionSourceFile: /src/pdns/pdns/recursordist/rec-tcounters.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: PolicyNameCounters
    signature: PolicyNameCounters & operator+=(const PolicyNameCounters& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 275
      start: 275
    functionDepth: 0
    functionLinenumber: 275
    functionLinenumberEnd: 275
    functionName: rec::Counters
    functionSourceFile: /src/pdns/pdns/recursordist/rec-tcounters.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Counters()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: at
      Src: /src/pdns/pdns/recursordist/rec-tcounters.hh:293,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/recursordist/rec-tcounters.hh:293,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - index
    argTypes:
    - Counter
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 294
      start: 291
    functionDepth: 0
    functionLinenumber: 291
    functionLinenumberEnd: 294
    functionName: '& at(Counter index)'
    functionSourceFile: /src/pdns/pdns/recursordist/rec-tcounters.hh
    functionUses: 0
    functionsReached:
    - static_cast<size_t>
    - at
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t & at(Counter index)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: at
      Src: /src/pdns/pdns/recursordist/rec-tcounters.hh:298,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/recursordist/rec-tcounters.hh:298,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - index
    argTypes:
    - DoubleWAvgCounter
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 299
      start: 296
    functionDepth: 0
    functionLinenumber: 296
    functionLinenumberEnd: 299
    functionName: '& at(DoubleWAvgCounter index)'
    functionSourceFile: /src/pdns/pdns/recursordist/rec-tcounters.hh
    functionUses: 0
    functionsReached:
    - static_cast<size_t>
    - at
    linkageType: ''
    returnType: WeightedAverage
    signature: WeightedAverage & at(DoubleWAvgCounter index)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 305
      start: 301
    functionDepth: 0
    functionLinenumber: 301
    functionLinenumberEnd: 305
    functionName: '& at(RCode /*unused*/)'
    functionSourceFile: /src/pdns/pdns/recursordist/rec-tcounters.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: RCodeCounters
    signature: RCodeCounters & at(RCode /*unused*/)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 311
      start: 307
    functionDepth: 0
    functionLinenumber: 307
    functionLinenumberEnd: 311
    functionName: '& at(ResponseStats /*unused*/)'
    functionSourceFile: /src/pdns/pdns/recursordist/rec-tcounters.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: RecResponseStats
    signature: RecResponseStats & at(ResponseStats /*unused*/)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: at
      Src: /src/pdns/pdns/recursordist/rec-tcounters.hh:315,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/recursordist/rec-tcounters.hh:315,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - index
    argTypes:
    - Histogram
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 316
      start: 313
    functionDepth: 0
    functionLinenumber: 313
    functionLinenumberEnd: 316
    functionName: '& at(Histogram index)'
    functionSourceFile: /src/pdns/pdns/recursordist/rec-tcounters.hh
    functionUses: 0
    functionsReached:
    - static_cast<size_t>
    - at
    linkageType: ''
    returnType: pdns::Histogram
    signature: pdns::Histogram & at(Histogram index)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: at
      Src: /src/pdns/pdns/recursordist/rec-tcounters.hh:320,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/recursordist/rec-tcounters.hh:320,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - index
    argTypes:
    - DNSSECHistogram
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 321
      start: 318
    functionDepth: 0
    functionLinenumber: 318
    functionLinenumberEnd: 321
    functionName: '& at(DNSSECHistogram index)'
    functionSourceFile: /src/pdns/pdns/recursordist/rec-tcounters.hh
    functionUses: 0
    functionsReached:
    - static_cast<size_t>
    - at
    linkageType: ''
    returnType: DNSSECCounters
    signature: DNSSECCounters & at(DNSSECHistogram index)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 327
      start: 324
    functionDepth: 0
    functionLinenumber: 324
    functionLinenumberEnd: 327
    functionName: '& at(PolicyHistogram /* unused */)'
    functionSourceFile: /src/pdns/pdns/recursordist/rec-tcounters.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: PolicyCounters
    signature: PolicyCounters & at(PolicyHistogram /* unused */)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 333
      start: 330
    functionDepth: 0
    functionLinenumber: 330
    functionLinenumberEnd: 333
    functionName: '& at(PolicyNameHits /*unused*/)'
    functionSourceFile: /src/pdns/pdns/recursordist/rec-tcounters.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: PolicyNameCounters
    signature: PolicyNameCounters & at(PolicyNameHits /*unused*/)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' outputStream'
    - str
    argTypes:
    - O
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 59
    functionDepth: 0
    functionLinenumber: 59
    functionLinenumberEnd: 62
    functionName: dolog
    functionSourceFile: /src/pdns/pdns/recursordist/dolog.hh
    functionUses: 10
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void dolog(O& outputStream, const char* str)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dolog
      Src: /src/pdns/pdns/recursordist/dolog.hh:78,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 3
    argNames:
    - ' outputStream'
    - formatStr
    - value
    argTypes:
    - O
    - char*
    - T
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 65
    functionDepth: 0
    functionLinenumber: 65
    functionLinenumberEnd: 85
    functionName: dolog
    functionSourceFile: /src/pdns/pdns/recursordist/dolog.hh
    functionUses: 11
    functionsReached:
    - dolog
    linkageType: ''
    returnType: void
    signature: void dolog(O& outputStream, const char* formatStr, T value, const Args&...
      args)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 94
    functionDepth: 0
    functionLinenumber: 94
    functionLinenumberEnd: 97
    functionName: dnsdist::logging::LoggingConfiguration::setSyslog
    functionSourceFile: /src/pdns/pdns/recursordist/dolog.hh
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setSyslog(bool value = true)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 98
    functionDepth: 0
    functionLinenumber: 98
    functionLinenumberEnd: 101
    functionName: dnsdist::logging::LoggingConfiguration::setLogTimestamps
    functionSourceFile: /src/pdns/pdns/recursordist/dolog.hh
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setLogTimestamps(bool value = true)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/dolog.hh:104,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - ' stream'
    argTypes:
    - std::ofstream
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 102
    functionDepth: 0
    functionLinenumber: 102
    functionLinenumberEnd: 105
    functionName: dnsdist::logging::LoggingConfiguration::setVerboseStream
    functionSourceFile: /src/pdns/pdns/recursordist/dolog.hh
    functionUses: 3
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void setVerboseStream(std::ofstream&& stream)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 106
    functionDepth: 0
    functionLinenumber: 106
    functionLinenumberEnd: 109
    functionName: dnsdist::logging::LoggingConfiguration::getSyslog
    functionSourceFile: /src/pdns/pdns/recursordist/dolog.hh
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool getSyslog()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 113
      start: 110
    functionDepth: 0
    functionLinenumber: 110
    functionLinenumberEnd: 113
    functionName: dnsdist::logging::LoggingConfiguration::getLogTimestamps
    functionSourceFile: /src/pdns/pdns/recursordist/dolog.hh
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool getLogTimestamps()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 114
    functionDepth: 0
    functionLinenumber: 114
    functionLinenumberEnd: 117
    functionName: '& getVerboseStream()'
    functionSourceFile: /src/pdns/pdns/recursordist/dolog.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::optional<std::ofstream>
    signature: std::optional<std::ofstream> & getVerboseStream()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 94
    functionDepth: 0
    functionLinenumber: 94
    functionLinenumberEnd: 97
    functionName: dnsdist::logging::LoggingConfiguration::setSyslog
    functionSourceFile: /src/pdns/pdns/recursordist/dolog.hh
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setSyslog(bool value = true)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 98
    functionDepth: 0
    functionLinenumber: 98
    functionLinenumberEnd: 101
    functionName: dnsdist::logging::LoggingConfiguration::setLogTimestamps
    functionSourceFile: /src/pdns/pdns/recursordist/dolog.hh
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setLogTimestamps(bool value = true)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/dolog.hh:104,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - ' stream'
    argTypes:
    - std::ofstream
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 102
    functionDepth: 0
    functionLinenumber: 102
    functionLinenumberEnd: 105
    functionName: dnsdist::logging::LoggingConfiguration::setVerboseStream
    functionSourceFile: /src/pdns/pdns/recursordist/dolog.hh
    functionUses: 3
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void setVerboseStream(std::ofstream&& stream)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 106
    functionDepth: 0
    functionLinenumber: 106
    functionLinenumberEnd: 109
    functionName: dnsdist::logging::LoggingConfiguration::getSyslog
    functionSourceFile: /src/pdns/pdns/recursordist/dolog.hh
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool getSyslog()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 113
      start: 110
    functionDepth: 0
    functionLinenumber: 110
    functionLinenumberEnd: 113
    functionName: dnsdist::logging::LoggingConfiguration::getLogTimestamps
    functionSourceFile: /src/pdns/pdns/recursordist/dolog.hh
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool getLogTimestamps()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 114
    functionDepth: 0
    functionLinenumber: 114
    functionLinenumberEnd: 117
    functionName: '& getVerboseStream()'
    functionSourceFile: /src/pdns/pdns/recursordist/dolog.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::optional<std::ofstream>
    signature: std::optional<std::ofstream> & getVerboseStream()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: closelog
      Src: /src/pdns/pdns/recursordist/dolog.hh:132,1
    - Dst: openlog
      Src: /src/pdns/pdns/recursordist/dolog.hh:133,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - facility
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 134
      start: 129
    functionDepth: 0
    functionLinenumber: 129
    functionLinenumberEnd: 134
    functionName: setSyslogFacility
    functionSourceFile: /src/pdns/pdns/recursordist/dolog.hh
    functionUses: 3
    functionsReached:
    - openlog
    - closelog
    linkageType: ''
    returnType: void
    signature: void setSyslogFacility(int facility)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::array::at
      Src: /src/pdns/pdns/recursordist/dolog.hh:149,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - level
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 150
      start: 138
    functionDepth: 0
    functionLinenumber: 138
    functionLinenumberEnd: 150
    functionName: syslogLevelToStr
    functionSourceFile: /src/pdns/pdns/recursordist/dolog.hh
    functionUses: 0
    functionsReached:
    - std::array::at
    linkageType: ''
    returnType: char
    signature: char * syslogLevelToStr(int level)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::array::at
      Src: /src/pdns/pdns/recursordist/dolog.hh:149,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - level
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 150
      start: 138
    functionDepth: 0
    functionLinenumber: 138
    functionLinenumberEnd: 150
    functionName: syslogLevelToStr
    functionSourceFile: /src/pdns/pdns/recursordist/dolog.hh
    functionUses: 0
    functionsReached:
    - std::array::at
    linkageType: ''
    returnType: char
    signature: char * syslogLevelToStr(int level)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dolog
      Src: /src/pdns/pdns/recursordist/dolog.hh:157,1
    - Dst: std::ostringstream::str
      Src: /src/pdns/pdns/recursordist/dolog.hh:159,1
    - Dst: dnsdist::logging::LoggingConfiguration::getSyslog
      Src: /src/pdns/pdns/recursordist/dolog.hh:162,1
    - Dst: syslog
      Src: /src/pdns/pdns/recursordist/dolog.hh:164,1
    - Dst: auto::c_str
      Src: /src/pdns/pdns/recursordist/dolog.hh:164,1
    - Dst: dnsdist::logging::LoggingConfiguration::getLogTimestamps
      Src: /src/pdns/pdns/recursordist/dolog.hh:167,1
    - Dst: dnsdist::logging::logTime
      Src: /src/pdns/pdns/recursordist/dolog.hh:168,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 4
    argNames:
    - ' stream'
    - level
    - skipSyslog
    - formatStr
    argTypes:
    - std::ostream
    - int
    - bool
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 173
      start: 154
    functionDepth: 1
    functionLinenumber: 154
    functionLinenumberEnd: 173
    functionName: genlog
    functionSourceFile: /src/pdns/pdns/recursordist/dolog.hh
    functionUses: 6
    functionsReached:
    - dolog
    - dnsdist::logging::LoggingConfiguration::getSyslog
    - dnsdist::logging::logTime
    - dnsdist::logging::LoggingConfiguration::getLogTimestamps
    - auto::c_str
    - std::ostringstream::str
    - syslog
    linkageType: ''
    returnType: void
    signature: void genlog(std::ostream& stream, [[maybe_unused]] int level, [[maybe_unused]]
      bool skipSyslog, const char* formatStr, const Args&... args)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: genlog
      Src: /src/pdns/pdns/recursordist/dolog.hh:204,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - formatStr
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 205
      start: 202
    functionDepth: 0
    functionLinenumber: 202
    functionLinenumberEnd: 205
    functionName: infolog
    functionSourceFile: /src/pdns/pdns/recursordist/dolog.hh
    functionUses: 248
    functionsReached:
    - genlog
    linkageType: ''
    returnType: void
    signature: void infolog(const char* formatStr, const Args&... args)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: genlog
      Src: /src/pdns/pdns/recursordist/dolog.hh:210,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - formatStr
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 211
      start: 208
    functionDepth: 0
    functionLinenumber: 208
    functionLinenumberEnd: 211
    functionName: warnlog
    functionSourceFile: /src/pdns/pdns/recursordist/dolog.hh
    functionUses: 101
    functionsReached:
    - genlog
    linkageType: ''
    returnType: void
    signature: void warnlog(const char* formatStr, const Args&... args)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: genlog
      Src: /src/pdns/pdns/recursordist/dolog.hh:216,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - formatStr
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 217
      start: 214
    functionDepth: 0
    functionLinenumber: 214
    functionLinenumberEnd: 217
    functionName: errlog
    functionSourceFile: /src/pdns/pdns/recursordist/dolog.hh
    functionUses: 61
    functionsReached:
    - genlog
    linkageType: ''
    returnType: void
    signature: void errlog(const char* formatStr, const Args&... args)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dolog
      Src: /src/pdns/pdns/recursordist/dolog.hh:228,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - formatStr
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 229
      start: 225
    functionDepth: 0
    functionLinenumber: 225
    functionLinenumberEnd: 229
    functionName: infolog
    functionSourceFile: /src/pdns/pdns/recursordist/dolog.hh
    functionUses: 248
    functionsReached:
    - dolog
    linkageType: ''
    returnType: void
    signature: void infolog(const char* formatStr, const Args&... args)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dolog
      Src: /src/pdns/pdns/recursordist/dolog.hh:235,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - formatStr
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 236
      start: 232
    functionDepth: 0
    functionLinenumber: 232
    functionLinenumberEnd: 236
    functionName: warnlog
    functionSourceFile: /src/pdns/pdns/recursordist/dolog.hh
    functionUses: 101
    functionsReached:
    - dolog
    linkageType: ''
    returnType: void
    signature: void warnlog(const char* formatStr, const Args&... args)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dolog
      Src: /src/pdns/pdns/recursordist/dolog.hh:242,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - formatStr
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 243
      start: 239
    functionDepth: 0
    functionLinenumber: 239
    functionLinenumberEnd: 243
    functionName: errlog
    functionSourceFile: /src/pdns/pdns/recursordist/dolog.hh
    functionUses: 61
    functionsReached:
    - dolog
    linkageType: ''
    returnType: void
    signature: void errlog(const char* formatStr, const Args&... args)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 4
    argNames:
    - slog
    - ' tt'
    - ' remote'
    - ' trc'
    argTypes:
    - Logr::log_t
    - TSIGTriplet
    - ComboAddress
    - TSIGRecordContent
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13
      start: 11
    functionDepth: 0
    functionLinenumber: 11
    functionLinenumberEnd: 13
    functionName: TSIGTCPVerifier::TSIGTCPVerifier
    functionSourceFile: /src/pdns/pdns/recursordist/tsigverifier.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void TSIGTCPVerifier(Logr::log_t slog, const TSIGTriplet& tt, const
      ComboAddress& remote, TSIGRecordContent& trc)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mkstemp
      Src: /src/pdns/pdns/recursordist/test-arguments_cc.cc:19,1
    - Dst: BOOST_FAIL
      Src: /src/pdns/pdns/recursordist/test-arguments_cc.cc:21,1
    - Dst: write
      Src: /src/pdns/pdns/recursordist/test-arguments_cc.cc:32,1
    - Dst: string::c_str
      Src: /src/pdns/pdns/recursordist/test-arguments_cc.cc:32,1
    - Dst: string::size
      Src: /src/pdns/pdns/recursordist/test-arguments_cc.cc:32,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-arguments_cc.cc:34,1
    - Dst: static_cast<ssize_t>
      Src: /src/pdns/pdns/recursordist/test-arguments_cc.cc:34,1
    - Dst: string::size
      Src: /src/pdns/pdns/recursordist/test-arguments_cc.cc:34,1
    - Dst: close
      Src: /src/pdns/pdns/recursordist/test-arguments_cc.cc:37,1
    - Dst: ArgvMap::ArgvMap
      Src: /src/pdns/pdns/recursordist/test-arguments_cc.cc:40,1
    - Dst: ArgvMap::set
      Src: /src/pdns/pdns/recursordist/test-arguments_cc.cc:42,1
    - Dst: ArgvMap::set
      Src: /src/pdns/pdns/recursordist/test-arguments_cc.cc:43,1
    - Dst: ArgvMap::file
      Src: /src/pdns/pdns/recursordist/test-arguments_cc.cc:44,1
    - Dst: unlink
      Src: /src/pdns/pdns/recursordist/test-arguments_cc.cc:45,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-arguments_cc.cc:47,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-arguments_cc.cc:48,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-arguments_cc.cc:49,1
    - Dst: ArgvMap::asNum
      Src: /src/pdns/pdns/recursordist/test-arguments_cc.cc:49,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-arguments_cc.cc:50,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-arguments_cc.cc:51,1
    - Dst: ArgvMap::mustDo
      Src: /src/pdns/pdns/recursordist/test-arguments_cc.cc:51,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-arguments_cc.cc:52,1
    - Dst: ArgvMap::mustDo
      Src: /src/pdns/pdns/recursordist/test-arguments_cc.cc:52,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-arguments_cc.cc:53,1
    - Dst: ArgvMap::mustDo
      Src: /src/pdns/pdns/recursordist/test-arguments_cc.cc:53,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-arguments_cc.cc:54,1
    - Dst: unlink
      Src: /src/pdns/pdns/recursordist/test-arguments_cc.cc:58,1
    - Dst: BOOST_FAIL
      Src: /src/pdns/pdns/recursordist/test-arguments_cc.cc:60,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 25
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 17
    functionDepth: 0
    functionLinenumber: 17
    functionLinenumberEnd: 62
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-arguments_cc.cc
    functionUses: 0
    functionsReached:
    - mkstemp
    - string::c_str
    - ArgvMap::asNum
    - string::size
    - static_cast<ssize_t>
    - BOOST_CHECK_EQUAL
    - unlink
    - write
    - ArgvMap::ArgvMap
    - BOOST_FAIL
    - ArgvMap::set
    - ArgvMap::mustDo
    - ArgvMap::file
    - close
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_file_parse)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ArgvMap::ArgvMap
      Src: /src/pdns/pdns/recursordist/rec_control.cc:41,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 39
    functionDepth: 0
    functionLinenumber: 39
    functionLinenumberEnd: 43
    functionName: arg
    functionSourceFile: /src/pdns/pdns/recursordist/rec_control.cc
    functionUses: 178
    functionsReached:
    - ArgvMap::ArgvMap
    linkageType: ''
    returnType: ArgvMap
    signature: ArgvMap & arg()
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec_control.cc:47,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec_control.cc:49,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/rec_control.cc:49,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec_control.cc:50,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec_control.cc:51,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec_control.cc:52,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec_control.cc:53,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec_control.cc:54,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec_control.cc:55,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec_control.cc:57,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec_control.cc:58,1
    - Dst: exit
      Src: /src/pdns/pdns/recursordist/rec_control.cc:60,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec_control.cc:62,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec_control.cc:62,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec_control.cc:65,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec_control.cc:65,1
    - Dst: exit
      Src: /src/pdns/pdns/recursordist/rec_control.cc:67,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec_control.cc:67,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec_control.cc:70,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec_control.cc:71,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/rec_control.cc:71,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec_control.cc:72,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec_control.cc:72,1
    - Dst: cleanSlashes
      Src: /src/pdns/pdns/recursordist/rec_control.cc:75,1
    - Dst: pdns::settings::rec::readYamlSettings
      Src: /src/pdns/pdns/recursordist/rec_control.cc:83,1
    - Dst: Logr::log_t::error
      Src: /src/pdns/pdns/recursordist/rec_control.cc:90,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec_control.cc:90,1
    - Dst: exit
      Src: /src/pdns/pdns/recursordist/rec_control.cc:91,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/recursordist/rec_control.cc:95,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec_control.cc:95,1
    - Dst: pdns::settings::rec::bridgeStructToOldStyleSettings
      Src: /src/pdns/pdns/recursordist/rec_control.cc:96,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec_control.cc:105,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec_control.cc:107,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec_control.cc:108,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/rec_control.cc:108,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec_control.cc:109,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/rec_control.cc:109,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec_control.cc:110,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/rec_control.cc:110,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec_control.cc:113,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec_control.cc:113,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec_control.cc:116,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/rec_control.cc:116,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec_control.cc:117,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec_control.cc:117,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec_control.cc:117,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 58
    argCount: 3
    argNames:
    - argc
    - argv
    - log
    argTypes:
    - int
    - char**
    - Logr::log_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 119
      start: 45
    functionDepth: 0
    functionLinenumber: 45
    functionLinenumberEnd: 119
    functionName: initArguments
    functionSourceFile: /src/pdns/pdns/recursordist/rec_control.cc
    functionUses: 0
    functionsReached:
    - Logr::log_t::info
    - Logging::Loggable
    - string
    - cleanSlashes
    - Logr::log_t::error
    - pdns::settings::rec::readYamlSettings
    - pdns::settings::rec::bridgeStructToOldStyleSettings
    - empty
    - exit
    - arg
    - std::string
    linkageType: ''
    returnType: void
    signature: void initArguments(int argc, char** argv, Logr::log_t log)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/rec_control.cc:124,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/rec_control.cc:128,1
    - Dst: LuaConfigItems::LuaConfigItems
      Src: /src/pdns/pdns/recursordist/rec_control.cc:130,1
    - Dst: loadRecursorLuaConfig
      Src: /src/pdns/pdns/recursordist/rec_control.cc:133,1
    - Dst: pdns::rust::settings::rec::parse_yaml_string
      Src: /src/pdns/pdns/recursordist/rec_control.cc:134,1
    - Dst: pdns::settings::rec::fromLuaConfigToBridgeStruct
      Src: /src/pdns/pdns/recursordist/rec_control.cc:135,1
    - Dst: auto::to_yaml_string
      Src: /src/pdns/pdns/recursordist/rec_control.cc:136,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/rec_control.cc:138,1
    - Dst: auto::validate
      Src: /src/pdns/pdns/recursordist/rec_control.cc:142,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/rec_control.cc:146,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 21
    argCount: 1
    argNames:
    - ' rfile'
    argTypes:
    - ::rust::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 154
      start: 121
    functionDepth: 5
    functionLinenumber: 121
    functionLinenumberEnd: 154
    functionName: showLuaYAML
    functionSourceFile: /src/pdns/pdns/recursordist/rec_control.cc
    functionUses: 0
    functionsReached:
    - pdns::settings::rec::fromLuaConfigToBridgeStruct
    - LuaConfigItems::LuaConfigItems
    - auto::validate
    - what
    - auto::to_yaml_string
    - string
    - empty
    - std::string
    - loadRecursorLuaConfig
    - pdns::rust::settings::rec::parse_yaml_string
    linkageType: ''
    returnType: std::string
    signature: std::string showLuaYAML(const ::rust::string& rfile)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/rec_control.cc:159,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/rec_control.cc:162,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec_control.cc:165,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/rec_control.cc:166,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/recursordist/rec_control.cc:166,1
    - Dst: addS
      Src: /src/pdns/pdns/recursordist/rec_control.cc:166,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/recursordist/rec_control.cc:166,1
    - Dst: pdns::settings::rec::oldStyleSettingsFileToYaml
      Src: /src/pdns/pdns/recursordist/rec_control.cc:168,1
    - Dst: pdns::rust::settings::rec::parse_yaml_string
      Src: /src/pdns/pdns/recursordist/rec_control.cc:174,1
    - Dst: auto::validate
      Src: /src/pdns/pdns/recursordist/rec_control.cc:175,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/rec_control.cc:179,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 1
    argNames:
    - ' rdirname'
    argTypes:
    - ::rust::String
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 184
      start: 156
    functionDepth: 0
    functionLinenumber: 156
    functionLinenumberEnd: 184
    functionName: showIncludeYAML
    functionSourceFile: /src/pdns/pdns/recursordist/rec_control.cc
    functionUses: 0
    functionsReached:
    - std::vector::size
    - std::to_string
    - addS
    - auto::validate
    - what
    - string
    - pdns::settings::rec::oldStyleSettingsFileToYaml
    - empty
    - pdns::rust::settings::rec::parse_yaml_string
    - arg
    linkageType: ''
    returnType: std::string
    signature: std::string showIncludeYAML(::rust::String& rdirname)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/rec_control.cc:189,1
    - Dst: boost::ends_with
      Src: /src/pdns/pdns/recursordist/rec_control.cc:189,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/rec_control.cc:192,1
    - Dst: pdns::settings::rec::oldStyleForwardsFileToBridgeStruct
      Src: /src/pdns/pdns/recursordist/rec_control.cc:196,1
    - Dst: pdns::rust::settings::rec::forward_zones_to_yaml_string
      Src: /src/pdns/pdns/recursordist/rec_control.cc:197,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/rec_control.cc:198,1
    - Dst: pdns::rust::settings::rec::validate_forward_zones
      Src: /src/pdns/pdns/recursordist/rec_control.cc:201,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/rec_control.cc:205,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 1
    argNames:
    - ' rfilename'
    argTypes:
    - ::rust::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 209
      start: 186
    functionDepth: 0
    functionLinenumber: 186
    functionLinenumberEnd: 209
    functionName: showForwardFileYAML
    functionSourceFile: /src/pdns/pdns/recursordist/rec_control.cc
    functionUses: 0
    functionsReached:
    - pdns::rust::settings::rec::forward_zones_to_yaml_string
    - what
    - string
    - pdns::rust::settings::rec::validate_forward_zones
    - empty
    - std::string
    - boost::ends_with
    - pdns::settings::rec::oldStyleForwardsFileToBridgeStruct
    linkageType: ''
    returnType: std::string
    signature: std::string showForwardFileYAML(const ::rust::string& rfilename)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/rec_control.cc:214,1
    - Dst: boost::ends_with
      Src: /src/pdns/pdns/recursordist/rec_control.cc:214,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/rec_control.cc:217,1
    - Dst: pdns::settings::rec::oldStyleAllowFileToBridgeStruct
      Src: /src/pdns/pdns/recursordist/rec_control.cc:221,1
    - Dst: pdns::rust::settings::rec::allow_from_to_yaml_string
      Src: /src/pdns/pdns/recursordist/rec_control.cc:222,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/rec_control.cc:223,1
    - Dst: func
      Src: /src/pdns/pdns/recursordist/rec_control.cc:226,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/rec_control.cc:230,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 4
    argNames:
    - ' rfilename'
    - ' section'
    - ' key'
    - ' func'
    argTypes:
    - ::rust::String
    - string
    - string
    - std::function<void(const ::rust::String&, const ::rust::Vec<::rust::String>&)>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 234
      start: 211
    functionDepth: 0
    functionLinenumber: 211
    functionLinenumberEnd: 234
    functionName: showAllowYAML
    functionSourceFile: /src/pdns/pdns/recursordist/rec_control.cc
    functionUses: 0
    functionsReached:
    - pdns::rust::settings::rec::allow_from_to_yaml_string
    - what
    - func
    - string
    - pdns::settings::rec::oldStyleAllowFileToBridgeStruct
    - empty
    - std::string
    - boost::ends_with
    linkageType: ''
    returnType: std::string
    signature: std::string showAllowYAML(const ::rust::String& rfilename, const string&
      section, const string& key, const std::function<void(const ::rust::String&,
      const ::rust::Vec<::rust::String>&)>& func)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec_control.cc:238,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec_control.cc:239,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/rec_control.cc:239,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec_control.cc:240,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec_control.cc:240,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/rec_control.cc:242,1
    - Dst: cleanSlashes
      Src: /src/pdns/pdns/recursordist/rec_control.cc:245,1
    - Dst: pdns::settings::rec::oldStyleSettingsFileToYaml
      Src: /src/pdns/pdns/recursordist/rec_control.cc:249,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/rec_control.cc:252,1
    - Dst: pdns::rust::settings::rec::parse_yaml_string
      Src: /src/pdns/pdns/recursordist/rec_control.cc:260,1
    - Dst: pdns::rust::settings::rec::Recursorsettings::validate
      Src: /src/pdns/pdns/recursordist/rec_control.cc:261,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/rec_control.cc:265,1
    - Dst: showLuaYAML
      Src: /src/pdns/pdns/recursordist/rec_control.cc:269,1
    - Dst: showIncludeYAML
      Src: /src/pdns/pdns/recursordist/rec_control.cc:270,1
    - Dst: showForwardFileYAML
      Src: /src/pdns/pdns/recursordist/rec_control.cc:271,1
    - Dst: showAllowYAML
      Src: /src/pdns/pdns/recursordist/rec_control.cc:272,1
    - Dst: showAllowYAML
      Src: /src/pdns/pdns/recursordist/rec_control.cc:273,1
    - Dst: showAllowYAML
      Src: /src/pdns/pdns/recursordist/rec_control.cc:274,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/rec_control.cc:275,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/rec_control.cc:278,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/rec_control.cc:278,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/rec_control.cc:281,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/rec_control.cc:284,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/rec_control.cc:284,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 38
    argCount: 1
    argNames:
    - ' path'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 286
      start: 236
    functionDepth: 6
    functionLinenumber: 236
    functionLinenumberEnd: 286
    functionName: showYAML
    functionSourceFile: /src/pdns/pdns/recursordist/rec_control.cc
    functionUses: 0
    functionsReached:
    - std::move
    - showLuaYAML
    - showAllowYAML
    - what
    - showForwardFileYAML
    - cleanSlashes
    - showIncludeYAML
    - pdns::settings::rec::oldStyleSettingsFileToYaml
    - empty
    - std::string
    - pdns::rust::settings::rec::parse_yaml_string
    - arg
    - pdns::rust::settings::rec::Recursorsettings::validate
    linkageType: ''
    returnType: RecursorControlChannel::Answer
    signature: RecursorControlChannel::Answer showYAML(const std::string& path)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Logger::Urgency
      Src: /src/pdns/pdns/recursordist/rec_control.cc:293,1
    - Dst: std::stringstream::str
      Src: /src/pdns/pdns/recursordist/rec_control.cc:299,1
    - Dst: std::quoted
      Src: /src/pdns/pdns/recursordist/rec_control.cc:300,1
    - Dst: std::quoted
      Src: /src/pdns/pdns/recursordist/rec_control.cc:302,1
    - Dst: error::value
      Src: /src/pdns/pdns/recursordist/rec_control.cc:302,1
    - Dst: std::quoted
      Src: /src/pdns/pdns/recursordist/rec_control.cc:306,1
    - Dst: name::value
      Src: /src/pdns/pdns/recursordist/rec_control.cc:306,1
    - Dst: std::quoted
      Src: /src/pdns/pdns/recursordist/rec_control.cc:308,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/rec_control.cc:308,1
    - Dst: std::quoted
      Src: /src/pdns/pdns/recursordist/rec_control.cc:310,1
    - Dst: Logr::Logger::toString
      Src: /src/pdns/pdns/recursordist/rec_control.cc:310,1
    - Dst: std::quoted
      Src: /src/pdns/pdns/recursordist/rec_control.cc:314,1
    - Dst: Logging::toTimestampStringMilli
      Src: /src/pdns/pdns/recursordist/rec_control.cc:314,1
    - Dst: std::quoted
      Src: /src/pdns/pdns/recursordist/rec_control.cc:318,1
    - Dst: std::stringstream::str
      Src: /src/pdns/pdns/recursordist/rec_control.cc:321,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 21
    argCount: 1
    argNames:
    - ' entry'
    argTypes:
    - Logging::Entry
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 322
      start: 288
    functionDepth: 0
    functionLinenumber: 288
    functionLinenumberEnd: 322
    functionName: recControlLoggerBackend
    functionSourceFile: /src/pdns/pdns/recursordist/rec_control.cc
    functionUses: 0
    functionsReached:
    - std::quoted
    - Logger::Urgency
    - std::to_string
    - Logr::Logger::toString
    - std::stringstream::str
    - name::value
    - error::value
    - Logging::toTimestampStringMilli
    linkageType: ''
    returnType: void
    signature: void recControlLoggerBackend(const Logging::Entry& entry)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: Logging::Logger::create
      Src: /src/pdns/pdns/recursordist/rec_control.cc:326,1
    - Dst: withName
      Src: /src/pdns/pdns/recursordist/rec_control.cc:327,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec_control.cc:328,1
    - Dst: initArguments
      Src: /src/pdns/pdns/recursordist/rec_control.cc:345,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/rec_control.cc:348,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec_control.cc:348,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec_control.cc:349,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec_control.cc:351,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/rec_control.cc:351,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec_control.cc:352,1
    - Dst: string::append
      Src: /src/pdns/pdns/recursordist/rec_control.cc:354,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec_control.cc:356,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/rec_control.cc:358,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/rec_control.cc:358,1
    - Dst: showYAML
      Src: /src/pdns/pdns/recursordist/rec_control.cc:359,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/rec_control.cc:359,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/rec_control.cc:359,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/rec_control.cc:364,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/rec_control.cc:364,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/rec_control.cc:366,1
    - Dst: pdns::checked_stoi_into
      Src: /src/pdns/pdns/recursordist/rec_control.cc:368,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/rec_control.cc:368,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/rec_control.cc:371,1
    - Dst: CredentialsHolder::readFromTerminal
      Src: /src/pdns/pdns/recursordist/rec_control.cc:376,1
    - Dst: hashPassword
      Src: /src/pdns/pdns/recursordist/rec_control.cc:379,1
    - Dst: auto::getString
      Src: /src/pdns/pdns/recursordist/rec_control.cc:379,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/rec_control.cc:383,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/rec_control.cc:391,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/rec_control.cc:398,1
    - Dst: set::count
      Src: /src/pdns/pdns/recursordist/rec_control.cc:400,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/rec_control.cc:401,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/rec_control.cc:405,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/recursordist/rec_control.cc:411,1
    - Dst: open
      Src: /src/pdns/pdns/recursordist/rec_control.cc:419,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/rec_control.cc:419,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/recursordist/rec_control.cc:423,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/rec_control.cc:423,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/recursordist/rec_control.cc:427,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec_control.cc:433,1
    - Dst: RecursorControlChannel::RecursorControlChannel
      Src: /src/pdns/pdns/recursordist/rec_control.cc:434,1
    - Dst: RecursorControlChannel::connect
      Src: /src/pdns/pdns/recursordist/rec_control.cc:435,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec_control.cc:435,1
    - Dst: RecursorControlChannel::send
      Src: /src/pdns/pdns/recursordist/rec_control.cc:436,1
    - Dst: RecursorControlChannel::getDescriptor
      Src: /src/pdns/pdns/recursordist/rec_control.cc:436,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/rec_control.cc:436,1
    - Dst: RecursorControlChannel::recv
      Src: /src/pdns/pdns/recursordist/rec_control.cc:438,1
    - Dst: RecursorControlChannel::getDescriptor
      Src: /src/pdns/pdns/recursordist/rec_control.cc:438,1
    - Dst: auto::error
      Src: /src/pdns/pdns/recursordist/rec_control.cc:448,1
    CyclomaticComplexity: 25
    EdgeCount: 25
    ICount: 76
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 451
      start: 324
    functionDepth: 7
    functionLinenumber: 324
    functionLinenumberEnd: 451
    functionName: main
    functionSourceFile: /src/pdns/pdns/recursordist/rec_control.cc
    functionUses: 58
    functionsReached:
    - withName
    - PDNSException
    - stringerror
    - RecursorControlChannel::getDescriptor
    - RecursorControlChannel::send
    - size
    - RecursorControlChannel::RecursorControlChannel
    - auto::error
    - RecursorControlChannel::recv
    - c_str
    - empty
    - pdns::checked_stoi_into
    - initArguments
    - at
    - auto::getString
    - RecursorControlChannel::connect
    - hashPassword
    - showYAML
    - open
    - arg
    - std::move
    - what
    - string::append
    - Logging::Logger::create
    - set::count
    - CredentialsHolder::readFromTerminal
    linkageType: ''
    returnType: int
    signature: int main(int argc, char** argv)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-dnsrecordcontent.cc:20,1
    - Dst: a1
      Src: /src/pdns/pdns/recursordist/test-dnsrecordcontent.cc:20,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-dnsrecordcontent.cc:21,1
    - Dst: a1
      Src: /src/pdns/pdns/recursordist/test-dnsrecordcontent.cc:21,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-dnsrecordcontent.cc:23,1
    - Dst: aaaa
      Src: /src/pdns/pdns/recursordist/test-dnsrecordcontent.cc:23,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/recursordist/test-dnsrecordcontent.cc:25,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/recursordist/test-dnsrecordcontent.cc:26,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/recursordist/test-dnsrecordcontent.cc:27,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/recursordist/test-dnsrecordcontent.cc:28,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/recursordist/test-dnsrecordcontent.cc:29,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/recursordist/test-dnsrecordcontent.cc:30,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-dnsrecordcontent.cc:31,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-dnsrecordcontent.cc:32,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-dnsrecordcontent.cc:33,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-dnsrecordcontent.cc:35,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-dnsrecordcontent.cc:36,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-dnsrecordcontent.cc:37,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-dnsrecordcontent.cc:40,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-dnsrecordcontent.cc:42,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-dnsrecordcontent.cc:42,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-dnsrecordcontent.cc:42,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-dnsrecordcontent.cc:43,1
    - Dst: ns1
      Src: /src/pdns/pdns/recursordist/test-dnsrecordcontent.cc:43,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-dnsrecordcontent.cc:44,1
    - Dst: ns1
      Src: /src/pdns/pdns/recursordist/test-dnsrecordcontent.cc:44,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 15
    functionDepth: 0
    functionLinenumber: 15
    functionLinenumberEnd: 45
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-dnsrecordcontent.cc
    functionUses: 0
    functionsReached:
    - ns1
    - aaaa
    - DNSName
    - DNSRecordContent::make
    - BOOST_CHECK
    - a1
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_equality)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SHA1
      Src: /src/pdns/pdns/recursordist/sha.hh:38,1
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/recursordist/sha.hh:38,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/sha.hh:38,1
    - Dst: length
      Src: /src/pdns/pdns/recursordist/sha.hh:38,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/recursordist/sha.hh:38,1
    - Dst: std::array::begin
      Src: /src/pdns/pdns/recursordist/sha.hh:39,1
    - Dst: std::array::end
      Src: /src/pdns/pdns/recursordist/sha.hh:39,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ' input'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 34
    functionDepth: 0
    functionLinenumber: 34
    functionLinenumberEnd: 40
    functionName: pdns::sha1sum
    functionSourceFile: /src/pdns/pdns/recursordist/sha.hh
    functionUses: 3
    functionsReached:
    - length
    - c_str
    - std::array::begin
    - std::array::end
    - reinterpret_cast<const unsigned char*>
    - SHA1
    - std::array::data
    linkageType: ''
    returnType: std::string
    signature: std::string sha1sum(const std::string& input)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SHA256
      Src: /src/pdns/pdns/recursordist/sha.hh:46,1
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/recursordist/sha.hh:46,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/sha.hh:46,1
    - Dst: length
      Src: /src/pdns/pdns/recursordist/sha.hh:46,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/recursordist/sha.hh:46,1
    - Dst: std::array::begin
      Src: /src/pdns/pdns/recursordist/sha.hh:47,1
    - Dst: std::array::end
      Src: /src/pdns/pdns/recursordist/sha.hh:47,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ' input'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 42
    functionDepth: 0
    functionLinenumber: 42
    functionLinenumberEnd: 48
    functionName: pdns::sha256sum
    functionSourceFile: /src/pdns/pdns/recursordist/sha.hh
    functionUses: 2
    functionsReached:
    - length
    - std::array::begin
    - std::array::end
    - SHA256
    - reinterpret_cast<const unsigned char*>
    - c_str
    - std::array::data
    linkageType: ''
    returnType: std::string
    signature: std::string sha256sum(const std::string& input)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SHA384
      Src: /src/pdns/pdns/recursordist/sha.hh:54,1
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/recursordist/sha.hh:54,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/sha.hh:54,1
    - Dst: length
      Src: /src/pdns/pdns/recursordist/sha.hh:54,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/recursordist/sha.hh:54,1
    - Dst: std::array::begin
      Src: /src/pdns/pdns/recursordist/sha.hh:55,1
    - Dst: std::array::end
      Src: /src/pdns/pdns/recursordist/sha.hh:55,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ' input'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 50
    functionDepth: 0
    functionLinenumber: 50
    functionLinenumberEnd: 56
    functionName: pdns::sha384sum
    functionSourceFile: /src/pdns/pdns/recursordist/sha.hh
    functionUses: 2
    functionsReached:
    - length
    - std::array::begin
    - std::array::end
    - SHA384
    - reinterpret_cast<const unsigned char*>
    - c_str
    - std::array::data
    linkageType: ''
    returnType: std::string
    signature: std::string sha384sum(const std::string& input)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SHA512
      Src: /src/pdns/pdns/recursordist/sha.hh:62,1
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/recursordist/sha.hh:62,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/sha.hh:62,1
    - Dst: length
      Src: /src/pdns/pdns/recursordist/sha.hh:62,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/recursordist/sha.hh:62,1
    - Dst: std::array::begin
      Src: /src/pdns/pdns/recursordist/sha.hh:63,1
    - Dst: std::array::end
      Src: /src/pdns/pdns/recursordist/sha.hh:63,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ' input'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 58
    functionDepth: 0
    functionLinenumber: 58
    functionLinenumberEnd: 64
    functionName: pdns::sha512sum
    functionSourceFile: /src/pdns/pdns/recursordist/sha.hh
    functionUses: 2
    functionsReached:
    - length
    - SHA512
    - std::array::begin
    - std::array::end
    - reinterpret_cast<const unsigned char*>
    - c_str
    - std::array::data
    linkageType: ''
    returnType: std::string
    signature: std::string sha512sum(const std::string& input)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 69
    functionDepth: 0
    functionLinenumber: 69
    functionLinenumberEnd: 70
    functionName: pdns::SHADigest::SHADigest
    functionSourceFile: /src/pdns/pdns/recursordist/sha.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void SHADigest()
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/sha.hh:79,1
    - Dst: EVP_sha256
      Src: /src/pdns/pdns/recursordist/sha.hh:83,1
    - Dst: EVP_sha384
      Src: /src/pdns/pdns/recursordist/sha.hh:86,1
    - Dst: EVP_sha512
      Src: /src/pdns/pdns/recursordist/sha.hh:89,1
    - Dst: std::invalid_argument
      Src: /src/pdns/pdns/recursordist/sha.hh:92,1
    - Dst: EVP_DigestInit_ex
      Src: /src/pdns/pdns/recursordist/sha.hh:94,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/sha.hh:94,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/sha.hh:95,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 20
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 75
    functionDepth: 0
    functionLinenumber: 75
    functionLinenumberEnd: 97
    functionName: pdns::SHADigest::mdctx
    functionSourceFile: /src/pdns/pdns/recursordist/sha.hh
    functionUses: 0
    functionsReached:
    - EVP_sha384
    - std::runtime_error
    - std::invalid_argument
    - EVP_sha256
    - EVP_DigestInit_ex
    - get
    - EVP_sha512
    linkageType: ''
    returnType: void
    signature: void mdctx(std::unique_ptr<EVP_MD_CTX, decltype(&EVP_MD_CTX_destroy)>(EVP_MD_CTX_create(),
      EVP_MD_CTX_destroy))
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 100
    functionDepth: 0
    functionLinenumber: 100
    functionLinenumberEnd: 100
    functionName: ~SHADigest()
    functionSourceFile: /src/pdns/pdns/recursordist/sha.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~SHADigest()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: EVP_DigestUpdate
      Src: /src/pdns/pdns/recursordist/sha.hh:104,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/sha.hh:104,1
    - Dst: data
      Src: /src/pdns/pdns/recursordist/sha.hh:104,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/sha.hh:104,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/sha.hh:105,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - ' msg'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 107
      start: 102
    functionDepth: 0
    functionLinenumber: 102
    functionLinenumberEnd: 107
    functionName: pdns::SHADigest::process
    functionSourceFile: /src/pdns/pdns/recursordist/sha.hh
    functionUses: 0
    functionsReached:
    - std::runtime_error
    - size
    - get
    - EVP_DigestUpdate
    - data
    linkageType: ''
    returnType: void
    signature: void process(const std::string& msg)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: std::string::resize
      Src: /src/pdns/pdns/recursordist/sha.hh:112,1
    - Dst: EVP_MD_size
      Src: /src/pdns/pdns/recursordist/sha.hh:112,1
    - Dst: EVP_DigestFinal_ex
      Src: /src/pdns/pdns/recursordist/sha.hh:114,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/sha.hh:114,1
    - Dst: reinterpret_cast<unsigned char*>
      Src: /src/pdns/pdns/recursordist/sha.hh:114,1
    - Dst: std::string::data
      Src: /src/pdns/pdns/recursordist/sha.hh:114,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/sha.hh:115,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/recursordist/sha.hh:117,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/sha.hh:118,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 109
    functionDepth: 2
    functionLinenumber: 109
    functionLinenumberEnd: 121
    functionName: pdns::SHADigest::digest
    functionSourceFile: /src/pdns/pdns/recursordist/sha.hh
    functionUses: 0
    functionsReached:
    - std::runtime_error
    - std::string::data
    - EVP_DigestFinal_ex
    - get
    - reinterpret_cast<unsigned char*>
    - EVP_MD_size
    - std::string::resize
    - std::string::size
    linkageType: ''
    returnType: std::string
    signature: std::string digest()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SHA1
      Src: /src/pdns/pdns/recursordist/sha.hh:38,1
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/recursordist/sha.hh:38,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/sha.hh:38,1
    - Dst: length
      Src: /src/pdns/pdns/recursordist/sha.hh:38,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/recursordist/sha.hh:38,1
    - Dst: std::array::begin
      Src: /src/pdns/pdns/recursordist/sha.hh:39,1
    - Dst: std::array::end
      Src: /src/pdns/pdns/recursordist/sha.hh:39,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ' input'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 34
    functionDepth: 0
    functionLinenumber: 34
    functionLinenumberEnd: 40
    functionName: pdns::sha1sum
    functionSourceFile: /src/pdns/pdns/recursordist/sha.hh
    functionUses: 3
    functionsReached:
    - length
    - c_str
    - std::array::begin
    - std::array::end
    - reinterpret_cast<const unsigned char*>
    - SHA1
    - std::array::data
    linkageType: ''
    returnType: std::string
    signature: std::string sha1sum(const std::string& input)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SHA256
      Src: /src/pdns/pdns/recursordist/sha.hh:46,1
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/recursordist/sha.hh:46,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/sha.hh:46,1
    - Dst: length
      Src: /src/pdns/pdns/recursordist/sha.hh:46,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/recursordist/sha.hh:46,1
    - Dst: std::array::begin
      Src: /src/pdns/pdns/recursordist/sha.hh:47,1
    - Dst: std::array::end
      Src: /src/pdns/pdns/recursordist/sha.hh:47,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ' input'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 42
    functionDepth: 0
    functionLinenumber: 42
    functionLinenumberEnd: 48
    functionName: pdns::sha256sum
    functionSourceFile: /src/pdns/pdns/recursordist/sha.hh
    functionUses: 2
    functionsReached:
    - length
    - std::array::begin
    - std::array::end
    - SHA256
    - reinterpret_cast<const unsigned char*>
    - c_str
    - std::array::data
    linkageType: ''
    returnType: std::string
    signature: std::string sha256sum(const std::string& input)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SHA384
      Src: /src/pdns/pdns/recursordist/sha.hh:54,1
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/recursordist/sha.hh:54,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/sha.hh:54,1
    - Dst: length
      Src: /src/pdns/pdns/recursordist/sha.hh:54,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/recursordist/sha.hh:54,1
    - Dst: std::array::begin
      Src: /src/pdns/pdns/recursordist/sha.hh:55,1
    - Dst: std::array::end
      Src: /src/pdns/pdns/recursordist/sha.hh:55,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ' input'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 50
    functionDepth: 0
    functionLinenumber: 50
    functionLinenumberEnd: 56
    functionName: pdns::sha384sum
    functionSourceFile: /src/pdns/pdns/recursordist/sha.hh
    functionUses: 2
    functionsReached:
    - length
    - std::array::begin
    - std::array::end
    - SHA384
    - reinterpret_cast<const unsigned char*>
    - c_str
    - std::array::data
    linkageType: ''
    returnType: std::string
    signature: std::string sha384sum(const std::string& input)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SHA512
      Src: /src/pdns/pdns/recursordist/sha.hh:62,1
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/recursordist/sha.hh:62,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/sha.hh:62,1
    - Dst: length
      Src: /src/pdns/pdns/recursordist/sha.hh:62,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/recursordist/sha.hh:62,1
    - Dst: std::array::begin
      Src: /src/pdns/pdns/recursordist/sha.hh:63,1
    - Dst: std::array::end
      Src: /src/pdns/pdns/recursordist/sha.hh:63,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ' input'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 58
    functionDepth: 0
    functionLinenumber: 58
    functionLinenumberEnd: 64
    functionName: pdns::sha512sum
    functionSourceFile: /src/pdns/pdns/recursordist/sha.hh
    functionUses: 2
    functionsReached:
    - length
    - SHA512
    - std::array::begin
    - std::array::end
    - reinterpret_cast<const unsigned char*>
    - c_str
    - std::array::data
    linkageType: ''
    returnType: std::string
    signature: std::string sha512sum(const std::string& input)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 69
    functionDepth: 0
    functionLinenumber: 69
    functionLinenumberEnd: 70
    functionName: pdns::SHADigest::SHADigest
    functionSourceFile: /src/pdns/pdns/recursordist/sha.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void SHADigest()
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/sha.hh:79,1
    - Dst: EVP_sha256
      Src: /src/pdns/pdns/recursordist/sha.hh:83,1
    - Dst: EVP_sha384
      Src: /src/pdns/pdns/recursordist/sha.hh:86,1
    - Dst: EVP_sha512
      Src: /src/pdns/pdns/recursordist/sha.hh:89,1
    - Dst: std::invalid_argument
      Src: /src/pdns/pdns/recursordist/sha.hh:92,1
    - Dst: EVP_DigestInit_ex
      Src: /src/pdns/pdns/recursordist/sha.hh:94,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/sha.hh:94,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/sha.hh:95,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 20
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 75
    functionDepth: 0
    functionLinenumber: 75
    functionLinenumberEnd: 97
    functionName: pdns::SHADigest::mdctx
    functionSourceFile: /src/pdns/pdns/recursordist/sha.hh
    functionUses: 0
    functionsReached:
    - EVP_sha384
    - std::runtime_error
    - std::invalid_argument
    - EVP_sha256
    - EVP_DigestInit_ex
    - get
    - EVP_sha512
    linkageType: ''
    returnType: void
    signature: void mdctx(std::unique_ptr<EVP_MD_CTX, decltype(&EVP_MD_CTX_destroy)>(EVP_MD_CTX_create(),
      EVP_MD_CTX_destroy))
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 100
    functionDepth: 0
    functionLinenumber: 100
    functionLinenumberEnd: 100
    functionName: ~SHADigest()
    functionSourceFile: /src/pdns/pdns/recursordist/sha.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~SHADigest()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: EVP_DigestUpdate
      Src: /src/pdns/pdns/recursordist/sha.hh:104,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/sha.hh:104,1
    - Dst: data
      Src: /src/pdns/pdns/recursordist/sha.hh:104,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/sha.hh:104,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/sha.hh:105,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - ' msg'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 107
      start: 102
    functionDepth: 0
    functionLinenumber: 102
    functionLinenumberEnd: 107
    functionName: pdns::SHADigest::process
    functionSourceFile: /src/pdns/pdns/recursordist/sha.hh
    functionUses: 0
    functionsReached:
    - std::runtime_error
    - size
    - get
    - EVP_DigestUpdate
    - data
    linkageType: ''
    returnType: void
    signature: void process(const std::string& msg)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: std::string::resize
      Src: /src/pdns/pdns/recursordist/sha.hh:112,1
    - Dst: EVP_MD_size
      Src: /src/pdns/pdns/recursordist/sha.hh:112,1
    - Dst: EVP_DigestFinal_ex
      Src: /src/pdns/pdns/recursordist/sha.hh:114,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/sha.hh:114,1
    - Dst: reinterpret_cast<unsigned char*>
      Src: /src/pdns/pdns/recursordist/sha.hh:114,1
    - Dst: std::string::data
      Src: /src/pdns/pdns/recursordist/sha.hh:114,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/sha.hh:115,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/recursordist/sha.hh:117,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/sha.hh:118,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 109
    functionDepth: 2
    functionLinenumber: 109
    functionLinenumberEnd: 121
    functionName: pdns::SHADigest::digest
    functionSourceFile: /src/pdns/pdns/recursordist/sha.hh
    functionUses: 0
    functionsReached:
    - std::runtime_error
    - std::string::data
    - EVP_DigestFinal_ex
    - get
    - reinterpret_cast<unsigned char*>
    - EVP_MD_size
    - std::string::resize
    - std::string::size
    linkageType: ''
    returnType: std::string
    signature: std::string digest()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: close
      Src: /src/pdns/pdns/recursordist/portsmplexer.cc:23,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 24
      start: 21
    functionDepth: 0
    functionLinenumber: 21
    functionLinenumberEnd: 24
    functionName: ~PortsFDMultiplexer()
    functionSourceFile: /src/pdns/pdns/recursordist/portsmplexer.cc
    functionUses: 0
    functionsReached:
    - close
    linkageType: ''
    returnType: void
    signature: void ~PortsFDMultiplexer()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 35
      start: 32
    functionDepth: 0
    functionLinenumber: 32
    functionLinenumberEnd: 35
    functionName: PortsFDMultiplexer::getName
    functionSourceFile: /src/pdns/pdns/recursordist/portsmplexer.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: string
    signature: string getName() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PortsFDMultiplexer::PortsFDMultiplexer
      Src: /src/pdns/pdns/recursordist/portsmplexer.cc:44,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - maxEventsHint
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 42
    functionDepth: 0
    functionLinenumber: 42
    functionLinenumberEnd: 45
    functionName: makePorts
    functionSourceFile: /src/pdns/pdns/recursordist/portsmplexer.cc
    functionUses: 0
    functionsReached:
    - PortsFDMultiplexer::PortsFDMultiplexer
    linkageType: ''
    returnType: FDMultiplexer
    signature: FDMultiplexer * makePorts(unsigned int maxEventsHint)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: FDMultiplexer::getMultiplexerMap
      Src: /src/pdns/pdns/recursordist/portsmplexer.cc:51,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 49
    functionDepth: 0
    functionLinenumber: 49
    functionLinenumberEnd: 52
    functionName: PortsRegisterOurselves
    functionSourceFile: /src/pdns/pdns/recursordist/portsmplexer.cc
    functionUses: 0
    functionsReached:
    - FDMultiplexer::getMultiplexerMap
    linkageType: ''
    returnType: void
    signature: void PortsRegisterOurselves()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: port_create
      Src: /src/pdns/pdns/recursordist/portsmplexer.cc:58,1
    - Dst: FDMultiplexerException
      Src: /src/pdns/pdns/recursordist/portsmplexer.cc:60,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/portsmplexer.cc:60,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - maxEventsHint
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 55
    functionDepth: 0
    functionLinenumber: 55
    functionLinenumberEnd: 62
    functionName: PortsFDMultiplexer::PortsFDMultiplexer
    functionSourceFile: /src/pdns/pdns/recursordist/portsmplexer.cc
    functionUses: 5
    functionsReached:
    - FDMultiplexerException
    - stringerror
    - port_create
    linkageType: ''
    returnType: void
    signature: void PortsFDMultiplexer::PortsFDMultiplexer(unsigned int maxEventsHint)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/portsmplexer.cc:74,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - kind
    argTypes:
    - FDMultiplexer::EventKind
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 64
    functionDepth: 0
    functionLinenumber: 64
    functionLinenumberEnd: 75
    functionName: convertEventKind
    functionSourceFile: /src/pdns/pdns/recursordist/portsmplexer.cc
    functionUses: 20
    functionsReached:
    - std::runtime_error
    linkageType: ''
    returnType: int
    signature: int convertEventKind(FDMultiplexer::EventKind kind)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: port_associate
      Src: /src/pdns/pdns/recursordist/portsmplexer.cc:79,1
    - Dst: convertEventKind
      Src: /src/pdns/pdns/recursordist/portsmplexer.cc:79,1
    - Dst: FDMultiplexerException
      Src: /src/pdns/pdns/recursordist/portsmplexer.cc:80,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/portsmplexer.cc:80,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 2
    argNames:
    - fd
    - kind
    argTypes:
    - int
    - FDMultiplexer::EventKind
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 77
    functionDepth: 0
    functionLinenumber: 77
    functionLinenumberEnd: 82
    functionName: PortsFDMultiplexer::addFD
    functionSourceFile: /src/pdns/pdns/recursordist/portsmplexer.cc
    functionUses: 0
    functionsReached:
    - FDMultiplexerException
    - stringerror
    - port_associate
    - convertEventKind
    linkageType: ''
    returnType: void
    signature: void PortsFDMultiplexer::addFD(int fd, FDMultiplexer::EventKind kind)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: port_dissociate
      Src: /src/pdns/pdns/recursordist/portsmplexer.cc:86,1
    - Dst: FDMultiplexerException
      Src: /src/pdns/pdns/recursordist/portsmplexer.cc:87,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/portsmplexer.cc:87,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 4
    argCount: 1
    argNames:
    - fd
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 84
    functionDepth: 0
    functionLinenumber: 84
    functionLinenumberEnd: 89
    functionName: PortsFDMultiplexer::removeFD
    functionSourceFile: /src/pdns/pdns/recursordist/portsmplexer.cc
    functionUses: 0
    functionsReached:
    - FDMultiplexerException
    - stringerror
    - port_dissociate
    linkageType: ''
    returnType: void
    signature: void PortsFDMultiplexer::removeFD(int fd, FDMultiplexer::EventKind)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: port_getn
      Src: /src/pdns/pdns/recursordist/portsmplexer.cc:97,1
    - Dst: data
      Src: /src/pdns/pdns/recursordist/portsmplexer.cc:97,1
    - Dst: min
      Src: /src/pdns/pdns/recursordist/portsmplexer.cc:97,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/recursordist/portsmplexer.cc:97,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/portsmplexer.cc:97,1
    - Dst: FDMultiplexerException
      Src: /src/pdns/pdns/recursordist/portsmplexer.cc:107,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/portsmplexer.cc:107,1
    - Dst: reserve
      Src: /src/pdns/pdns/recursordist/portsmplexer.cc:119,1
    - Dst: count
      Src: /src/pdns/pdns/recursordist/portsmplexer.cc:126,1
    - Dst: port_associate
      Src: /src/pdns/pdns/recursordist/portsmplexer.cc:127,1
    - Dst: count
      Src: /src/pdns/pdns/recursordist/portsmplexer.cc:127,1
    - Dst: FDMultiplexerException
      Src: /src/pdns/pdns/recursordist/portsmplexer.cc:128,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/portsmplexer.cc:128,1
    - Dst: count
      Src: /src/pdns/pdns/recursordist/portsmplexer.cc:133,1
    - Dst: port_associate
      Src: /src/pdns/pdns/recursordist/portsmplexer.cc:134,1
    - Dst: count
      Src: /src/pdns/pdns/recursordist/portsmplexer.cc:134,1
    - Dst: FDMultiplexerException
      Src: /src/pdns/pdns/recursordist/portsmplexer.cc:135,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/portsmplexer.cc:135,1
    - Dst: push_back
      Src: /src/pdns/pdns/recursordist/portsmplexer.cc:144,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 32
    argCount: 2
    argNames:
    - ' fds'
    - timeout
    argTypes:
    - std::vector<int>
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 146
      start: 91
    functionDepth: 0
    functionLinenumber: 91
    functionLinenumberEnd: 146
    functionName: PortsFDMultiplexer::getAvailableFDs
    functionSourceFile: /src/pdns/pdns/recursordist/portsmplexer.cc
    functionUses: 0
    functionsReached:
    - count
    - port_associate
    - stringerror
    - push_back
    - size
    - port_getn
    - reserve
    - data
    - FDMultiplexerException
    - min
    - static_cast<int>
    linkageType: ''
    returnType: void
    signature: void PortsFDMultiplexer::getAvailableFDs(std::vector<int>& fds, int
      timeout)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: port_getn
      Src: /src/pdns/pdns/recursordist/portsmplexer.cc:156,1
    - Dst: data
      Src: /src/pdns/pdns/recursordist/portsmplexer.cc:156,1
    - Dst: min
      Src: /src/pdns/pdns/recursordist/portsmplexer.cc:156,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/recursordist/portsmplexer.cc:156,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/portsmplexer.cc:156,1
    - Dst: FDMultiplexerException
      Src: /src/pdns/pdns/recursordist/portsmplexer.cc:166,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/portsmplexer.cc:166,1
    - Dst: gettimeofday
      Src: /src/pdns/pdns/recursordist/portsmplexer.cc:169,1
    - Dst: gettimeofday
      Src: /src/pdns/pdns/recursordist/portsmplexer.cc:172,1
    - Dst: find
      Src: /src/pdns/pdns/recursordist/portsmplexer.cc:181,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/portsmplexer.cc:182,1
    - Dst: d_callback
      Src: /src/pdns/pdns/recursordist/portsmplexer.cc:183,1
    - Dst: count
      Src: /src/pdns/pdns/recursordist/portsmplexer.cc:185,1
    - Dst: port_associate
      Src: /src/pdns/pdns/recursordist/portsmplexer.cc:185,1
    - Dst: count
      Src: /src/pdns/pdns/recursordist/portsmplexer.cc:185,1
    - Dst: FDMultiplexerException
      Src: /src/pdns/pdns/recursordist/portsmplexer.cc:186,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/portsmplexer.cc:186,1
    - Dst: find
      Src: /src/pdns/pdns/recursordist/portsmplexer.cc:191,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/portsmplexer.cc:192,1
    - Dst: d_callback
      Src: /src/pdns/pdns/recursordist/portsmplexer.cc:193,1
    - Dst: count
      Src: /src/pdns/pdns/recursordist/portsmplexer.cc:195,1
    - Dst: port_associate
      Src: /src/pdns/pdns/recursordist/portsmplexer.cc:195,1
    - Dst: count
      Src: /src/pdns/pdns/recursordist/portsmplexer.cc:195,1
    - Dst: FDMultiplexerException
      Src: /src/pdns/pdns/recursordist/portsmplexer.cc:196,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/portsmplexer.cc:196,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 35
    argCount: 2
    argNames:
    - now
    - timeout
    argTypes:
    - struct timeval*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 203
      start: 148
    functionDepth: 0
    functionLinenumber: 148
    functionLinenumberEnd: 203
    functionName: PortsFDMultiplexer::run
    functionSourceFile: /src/pdns/pdns/recursordist/portsmplexer.cc
    functionUses: 2
    functionsReached:
    - count
    - port_associate
    - stringerror
    - end
    - size
    - d_callback
    - port_getn
    - gettimeofday
    - data
    - FDMultiplexerException
    - min
    - find
    - static_cast<int>
    linkageType: ''
    returnType: int
    signature: int PortsFDMultiplexer::run(struct timeval* now, int timeout)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: boost::any_cast<Socket*>
      Src: /src/pdns/pdns/recursordist/portsmplexer.cc:209,1
    - Dst: Socket*::recvFrom
      Src: /src/pdns/pdns/recursordist/portsmplexer.cc:212,1
    - Dst: string::size
      Src: /src/pdns/pdns/recursordist/portsmplexer.cc:213,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - fd
    - ' parameter'
    argTypes:
    - int
    - boost::any
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 214
      start: 206
    functionDepth: 0
    functionLinenumber: 206
    functionLinenumberEnd: 214
    functionName: acceptData
    functionSourceFile: /src/pdns/pdns/recursordist/portsmplexer.cc
    functionUses: 0
    functionsReached:
    - string::size
    - boost::any_cast<Socket*>
    - Socket*::recvFrom
    linkageType: ''
    returnType: void
    signature: void acceptData(int fd, boost::any& parameter)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Socket::bind
      Src: /src/pdns/pdns/recursordist/portsmplexer.cc:222,1
    - Dst: PortsFDMultiplexer::PortsFDMultiplexer
      Src: /src/pdns/pdns/recursordist/portsmplexer.cc:224,1
    - Dst: PortsFDMultiplexer::addReadFD
      Src: /src/pdns/pdns/recursordist/portsmplexer.cc:226,1
    - Dst: Socket::getHandle
      Src: /src/pdns/pdns/recursordist/portsmplexer.cc:226,1
    - Dst: PortsFDMultiplexer::run
      Src: /src/pdns/pdns/recursordist/portsmplexer.cc:229,1
    - Dst: PortsFDMultiplexer::removeReadFD
      Src: /src/pdns/pdns/recursordist/portsmplexer.cc:231,1
    - Dst: Socket::getHandle
      Src: /src/pdns/pdns/recursordist/portsmplexer.cc:231,1
    - Dst: PortsFDMultiplexer::removeReadFD
      Src: /src/pdns/pdns/recursordist/portsmplexer.cc:232,1
    - Dst: Socket::getHandle
      Src: /src/pdns/pdns/recursordist/portsmplexer.cc:232,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 233
      start: 217
    functionDepth: 0
    functionLinenumber: 217
    functionLinenumberEnd: 233
    functionName: main
    functionSourceFile: /src/pdns/pdns/recursordist/portsmplexer.cc
    functionUses: 58
    functionsReached:
    - Socket::getHandle
    - PortsFDMultiplexer::removeReadFD
    - PortsFDMultiplexer::addReadFD
    - PortsFDMultiplexer::run
    - Socket::bind
    - PortsFDMultiplexer::PortsFDMultiplexer
    linkageType: ''
    returnType: int
    signature: int main()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: clear
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:45,1
    - Dst: memset
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:48,1
    - Dst: htons
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:50,1
    - Dst: reserve
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:54,1
    - Dst: wirelength
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:54,1
    - Dst: resize
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:55,1
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:56,1
    - Dst: memcpy
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:58,1
    - Dst: reserve
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:59,1
    - Dst: GenericDNSPacketWriter<Container>::xfrName
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:60,1
    - Dst: GenericDNSPacketWriter<Container>::xfr16BitInt
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:61,1
    - Dst: GenericDNSPacketWriter<Container>::xfr16BitInt
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:62,1
    - Dst: GenericDNSPacketWriter<Container>::size
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:64,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:64,1
    - Dst: std::range_error
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:65,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:65,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:65,1
    - Dst: GenericDNSPacketWriter<Container>::size
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:67,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 5
    argNames:
    - ' content'
    - ' qname'
    - qtype
    - qclass
    - opcode
    argTypes:
    - Container
    - DNSName
    - uint16_t
    - uint16_t
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 42
    functionDepth: 2
    functionLinenumber: 42
    functionLinenumberEnd: 68
    functionName: GenericDNSPacketWriter<Container>::GenericDNSPacketWriter
    functionSourceFile: /src/pdns/pdns/recursordist/dnswriter.cc
    functionUses: 0
    functionsReached:
    - memcpy
    - pdns::max
    - resize
    - wirelength
    - std::to_string
    - GenericDNSPacketWriter<Container>::xfrName
    - GenericDNSPacketWriter<Container>::xfr16BitInt
    - memset
    - reserve
    - std::range_error
    - GenericDNSPacketWriter<Container>::size
    - begin
    - clear
    - htons
    linkageType: ''
    returnType: void
    signature: void GenericDNSPacketWriter<Container>::GenericDNSPacketWriter(Container&
      content, const DNSName& qname, uint16_t qtype, uint16_t qclass, uint8_t opcode)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: reinterpret_cast<dnsheader*>
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:72,1
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/dnswriter.cc: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: GenericDNSPacketWriter<Container>::getHeader
    functionSourceFile: /src/pdns/pdns/recursordist/dnswriter.cc
    functionUses: 2
    functionsReached:
    - reinterpret_cast<dnsheader*>
    - begin
    linkageType: ''
    returnType: dnsheader
    signature: dnsheader * GenericDNSPacketWriter<Container>::getHeader()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: GenericDNSPacketWriter<Container>::commit
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:79,1
    - Dst: GenericDNSPacketWriter<Container>::size
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:80,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:80,1
    - Dst: std::range_error
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:81,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:81,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:81,1
    - Dst: GenericDNSPacketWriter<Container>::size
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:83,1
    - Dst: isRoot
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:85,1
    - Dst: insert
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:87,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:87,1
    - Dst: reinterpret_cast<const char *>
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:87,1
    - Dst: std::array::begin
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:87,1
    - Dst: reinterpret_cast<const char *>
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:87,1
    - Dst: std::array::end
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:87,1
    - Dst: GenericDNSPacketWriter<Container>::xfrName
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:90,1
    - Dst: GenericDNSPacketWriter<Container>::xfr16BitInt
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:92,1
    - Dst: GenericDNSPacketWriter<Container>::xfr16BitInt
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:93,1
    - Dst: GenericDNSPacketWriter<Container>::xfr32BitInt
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:94,1
    - Dst: GenericDNSPacketWriter<Container>::xfr16BitInt
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:95,1
    - Dst: GenericDNSPacketWriter<Container>::size
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:98,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 6
    argNames:
    - ' name'
    - qtype
    - ttl
    - qclass
    - place
    - compress
    argTypes:
    - DNSName
    - uint16_t
    - uint32_t
    - uint16_t
    - DNSResourceRecord::Place
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 76
    functionDepth: 2
    functionLinenumber: 76
    functionLinenumberEnd: 99
    functionName: GenericDNSPacketWriter<Container>::startRecord
    functionSourceFile: /src/pdns/pdns/recursordist/dnswriter.cc
    functionUses: 2
    functionsReached:
    - GenericDNSPacketWriter<Container>::commit
    - pdns::max
    - std::to_string
    - end
    - std::array::end
    - GenericDNSPacketWriter<Container>::xfrName
    - GenericDNSPacketWriter<Container>::xfr16BitInt
    - reinterpret_cast<const char *>
    - isRoot
    - GenericDNSPacketWriter<Container>::xfr32BitInt
    - std::range_error
    - GenericDNSPacketWriter<Container>::size
    - insert
    - std::array::begin
    linkageType: ''
    returnType: void
    signature: void GenericDNSPacketWriter<Container>::startRecord(const DNSName&
      name, uint16_t qtype, uint32_t ttl, uint16_t qclass, DNSResourceRecord::Place
      place, bool compress)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: htons
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:108,1
    - Dst: GenericDNSPacketWriter<Container>::getHeader
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:119,1
    - Dst: memcpy
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:123,1
    - Dst: ntohl
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:125,1
    - Dst: GenericDNSPacketWriter<Container>::startRecord
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:127,1
    - Dst: GenericDNSPacketWriter<Container>::xfr16BitInt
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:129,1
    - Dst: GenericDNSPacketWriter<Container>::xfr16BitInt
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:130,1
    - Dst: second::length
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:130,1
    - Dst: GenericDNSPacketWriter<Container>::xfrBlob
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:131,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 5
    argNames:
    - udpsize
    - extRCode
    - ednsFlags
    - ' options'
    - version
    argTypes:
    - uint16_t
    - uint16_t
    - uint16_t
    - optvect_t
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 133
      start: 101
    functionDepth: 0
    functionLinenumber: 101
    functionLinenumberEnd: 133
    functionName: GenericDNSPacketWriter<Container>::addOpt
    functionSourceFile: /src/pdns/pdns/recursordist/dnswriter.cc
    functionUses: 0
    functionsReached:
    - memcpy
    - ntohl
    - GenericDNSPacketWriter<Container>::xfrBlob
    - second::length
    - GenericDNSPacketWriter<Container>::xfr16BitInt
    - GenericDNSPacketWriter<Container>::getHeader
    - GenericDNSPacketWriter<Container>::startRecord
    - htons
    linkageType: ''
    returnType: void
    signature: void GenericDNSPacketWriter<Container>::addOpt(const uint16_t udpsize,
      const uint16_t extRCode, const uint16_t ednsFlags, const optvect_t& options,
      const uint8_t version)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: runtime_error
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:138,1
    - Dst: htons
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:141,1
    - Dst: htonl
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:142,1
    - Dst: memcpy
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:143,1
    - Dst: memcpy
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:144,1
    - Dst: insert
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:146,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:146,1
    - Dst: std::array::begin
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:146,1
    - Dst: std::array::end
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:146,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - val
    argTypes:
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 135
    functionDepth: 2
    functionLinenumber: 135
    functionLinenumberEnd: 147
    functionName: GenericDNSPacketWriter<Container>::xfr48BitInt
    functionSourceFile: /src/pdns/pdns/recursordist/dnswriter.cc
    functionUses: 0
    functionsReached:
    - memcpy
    - htonl
    - runtime_error
    - end
    - std::array::end
    - insert
    - std::array::begin
    - htons
    linkageType: ''
    returnType: void
    signature: void GenericDNSPacketWriter<Container>::xfr48BitInt(uint64_t val)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: insert
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:151,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:151,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' val'
    argTypes:
    - NodeOrLocatorID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 152
      start: 149
    functionDepth: 2
    functionLinenumber: 149
    functionLinenumberEnd: 152
    functionName: GenericDNSPacketWriter<Container>::xfrNodeOrLocatorID
    functionSourceFile: /src/pdns/pdns/recursordist/dnswriter.cc
    functionUses: 0
    functionsReached:
    - end
    - insert
    linkageType: ''
    returnType: void
    signature: void GenericDNSPacketWriter<Container>::xfrNodeOrLocatorID(const NodeOrLocatorID&
      val)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pdns::max
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:156,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:157,1
    - Dst: htonl
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:159,1
    - Dst: static_cast<uint32_t>
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:159,1
    - Dst: reinterpret_cast<uint8_t*>
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:160,1
    - Dst: insert
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:161,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:161,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - val
    argTypes:
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 162
      start: 154
    functionDepth: 2
    functionLinenumber: 154
    functionLinenumberEnd: 162
    functionName: GenericDNSPacketWriter<Container>::xfr32BitInt
    functionSourceFile: /src/pdns/pdns/recursordist/dnswriter.cc
    functionUses: 3
    functionsReached:
    - pdns::max
    - htonl
    - runtime_error
    - end
    - reinterpret_cast<uint8_t*>
    - static_cast<uint32_t>
    - insert
    linkageType: ''
    returnType: void
    signature: void GenericDNSPacketWriter<Container>::xfr32BitInt(uint64_t val)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pdns::max
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:166,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:167,1
    - Dst: htons
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:169,1
    - Dst: static_cast<uint16_t>
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:169,1
    - Dst: reinterpret_cast<uint8_t*>
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:170,1
    - Dst: insert
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:171,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:171,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - val
    argTypes:
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 172
      start: 164
    functionDepth: 2
    functionLinenumber: 164
    functionLinenumberEnd: 172
    functionName: GenericDNSPacketWriter<Container>::xfr16BitInt
    functionSourceFile: /src/pdns/pdns/recursordist/dnswriter.cc
    functionUses: 11
    functionsReached:
    - pdns::max
    - runtime_error
    - end
    - reinterpret_cast<uint8_t*>
    - static_cast<uint16_t>
    - insert
    - htons
    linkageType: ''
    returnType: void
    signature: void GenericDNSPacketWriter<Container>::xfr16BitInt(uint64_t val)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pdns::max
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:176,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:177,1
    - Dst: push_back
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:179,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:179,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - val
    argTypes:
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 180
      start: 174
    functionDepth: 0
    functionLinenumber: 174
    functionLinenumberEnd: 180
    functionName: GenericDNSPacketWriter<Container>::xfr8BitInt
    functionSourceFile: /src/pdns/pdns/recursordist/dnswriter.cc
    functionUses: 0
    functionsReached:
    - push_back
    - pdns::max
    - runtime_error
    - static_cast<uint8_t>
    linkageType: ''
    returnType: void
    signature: void GenericDNSPacketWriter<Container>::xfr8BitInt(uint64_t val)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:198,1
    - Dst: push_back
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:199,1
    - Dst: segmentDNSText
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:202,1
    - Dst: push_back
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:205,1
    - Dst: length
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:205,1
    - Dst: insert
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:206,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:206,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:206,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:206,1
    - Dst: length
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:206,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - ' text'
    - lenField
    argTypes:
    - string
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 208
      start: 196
    functionDepth: 2
    functionLinenumber: 196
    functionLinenumberEnd: 208
    functionName: GenericDNSPacketWriter<Container>::xfrText
    functionSourceFile: /src/pdns/pdns/recursordist/dnswriter.cc
    functionUses: 0
    functionsReached:
    - length
    - c_str
    - push_back
    - end
    - segmentDNSText
    - insert
    - empty
    linkageType: ''
    returnType: void
    signature: void GenericDNSPacketWriter<Container>::xfrText(const string& text,
      bool, bool lenField)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:212,1
    - Dst: push_back
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:213,1
    - Dst: length
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:217,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:218,1
    - Dst: push_back
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:220,1
    - Dst: length
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:220,1
    - Dst: insert
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:222,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:222,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:222,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:222,1
    - Dst: length
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:222,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 2
    argNames:
    - ' text'
    - lenField
    argTypes:
    - string
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 223
      start: 210
    functionDepth: 2
    functionLinenumber: 210
    functionLinenumberEnd: 223
    functionName: GenericDNSPacketWriter<Container>::xfrUnquotedText
    functionSourceFile: /src/pdns/pdns/recursordist/dnswriter.cc
    functionUses: 2
    functionsReached:
    - length
    - c_str
    - push_back
    - runtime_error
    - end
    - insert
    - empty
    linkageType: ''
    returnType: void
    signature: void GenericDNSPacketWriter<Container>::xfrUnquotedText(const string&
      text, bool lenField)
  - BBCount: 22
    BranchProfiles: []
    Callsites:
    - Dst: getStorage
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:231,1
    - Dst: cbegin
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:246,1
    - Dst: cend
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:246,1
    - Dst: boost::container::static_vector<uint16_t, 34>::push_back
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:250,1
    - Dst: cbegin
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:250,1
    - Dst: makeHexDump
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:267,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:267,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:267,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:267,1
    - Dst: GenericDNSPacketWriter<Container>::size
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:267,1
    - Dst: GenericDNSPacketWriter<Container>::size
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:271,1
    - Dst: GenericDNSPacketWriter<Container>::size
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:285,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:286,1
    - Dst: data
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:286,1
    - Dst: GenericDNSPacketWriter<Container>::size
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:286,1
    - Dst: GenericDNSPacketWriter<Container>::size
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:287,1
    - Dst: GenericDNSPacketWriter<Container>::size
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:287,1
    - Dst: boost::container::static_vector<uint16_t, 34>::clear
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:292,1
    - Dst: cbegin
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:294,1
    - Dst: cend
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:294,1
    - Dst: cbegin
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:296,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:298,1
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:309,1
    - Dst: boost::container::static_vector<uint16_t, 34>::push_back
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:331,1
    - Dst: boost::container::static_vector<uint16_t, 34>::crbegin
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:351,1
    - Dst: boost::container::static_vector<uint16_t, 34>::crbegin
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:352,1
    - Dst: boost::container::static_vector<uint16_t, 34>::crend
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:354,1
    - Dst: boost::container::static_vector<uint16_t, 34>::crend
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:354,1
    - Dst: strncasecmp
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:367,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:367,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:369,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:369,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:369,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:369,1
    - Dst: length
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:375,1
    - Dst: boost::container::static_vector<uint16_t, 34>::crbegin
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:384,1
    CyclomaticComplexity: 42
    EdgeCount: 42
    ICount: 100
    argCount: 2
    argNames:
    - ' name'
    - matchLen
    argTypes:
    - DNSName
    - uint16_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 390
      start: 228
    functionDepth: 1
    functionLinenumber: 228
    functionLinenumberEnd: 390
    functionName: GenericDNSPacketWriter<Container>::lookupName
    functionSourceFile: /src/pdns/pdns/recursordist/dnswriter.cc
    functionUses: 2
    functionsReached:
    - boost::container::static_vector<uint16_t, 34>::clear
    - length
    - boost::container::static_vector<uint16_t, 34>::crbegin
    - std::to_string
    - getStorage
    - boost::container::static_vector<uint16_t, 34>::crend
    - string
    - strncasecmp
    - boost::container::static_vector<uint16_t, 34>::push_back
    - begin
    - cbegin
    - reinterpret_cast<const char*>
    - GenericDNSPacketWriter<Container>::size
    - cend
    - data
    - c_str
    - makeHexDump
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t GenericDNSPacketWriter<Container>::lookupName(const DNSName&
      name, uint16_t* matchLen)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:399,1
    - Dst: isRoot
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:399,1
    - Dst: push_back
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:400,1
    - Dst: GenericDNSPacketWriter<Container>::lookupName
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:406,1
    - Dst: getStorage
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:407,1
    - Dst: GenericDNSPacketWriter<Container>::size
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:409,1
    - Dst: GenericDNSPacketWriter<Container>::size
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:412,1
    - Dst: GenericDNSPacketWriter<Container>::size
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:413,1
    - Dst: push_back
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:416,1
    - Dst: makeHexDump
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:420,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:420,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:420,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:420,1
    - Dst: GenericDNSPacketWriter<Container>::size
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:420,1
    - Dst: insert
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:421,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:421,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:421,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:421,1
    - Dst: GenericDNSPacketWriter<Container>::size
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:421,1
    - Dst: push_back
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:425,1
    - Dst: push_back
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:426,1
    - Dst: GenericDNSPacketWriter<Container>::size
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:429,1
    - Dst: push_back
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:435,1
    - Dst: make_unique<DNSName>
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:440,1
    - Dst: makeLowerCase
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:440,1
    - Dst: getStorage
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:442,1
    - Dst: makeHexDump
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:444,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:444,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:444,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:444,1
    - Dst: length
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:444,1
    - Dst: insert
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:445,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:445,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:445,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:445,1
    - Dst: GenericDNSPacketWriter<Container>::size
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:445,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 37
    argCount: 2
    argNames:
    - ' name'
    - compress
    argTypes:
    - DNSName
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 447
      start: 392
    functionDepth: 2
    functionLinenumber: 392
    functionLinenumberEnd: 447
    functionName: GenericDNSPacketWriter<Container>::xfrName
    functionSourceFile: /src/pdns/pdns/recursordist/dnswriter.cc
    functionUses: 6
    functionsReached:
    - makeLowerCase
    - make_unique<DNSName>
    - length
    - c_str
    - getStorage
    - push_back
    - string
    - end
    - isRoot
    - GenericDNSPacketWriter<Container>::size
    - insert
    - empty
    - GenericDNSPacketWriter<Container>::lookupName
    - makeHexDump
    linkageType: ''
    returnType: void
    signature: void GenericDNSPacketWriter<Container>::xfrName(const DNSName& name,
      bool compress)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: reinterpret_cast<const uint8_t*>
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:451,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:451,1
    - Dst: insert
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:452,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:452,1
    - Dst: GenericDNSPacketWriter<Container>::size
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:452,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' blob'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 453
      start: 449
    functionDepth: 2
    functionLinenumber: 449
    functionLinenumberEnd: 453
    functionName: GenericDNSPacketWriter<Container>::xfrBlob
    functionSourceFile: /src/pdns/pdns/recursordist/dnswriter.cc
    functionUses: 9
    functionsReached:
    - reinterpret_cast<const uint8_t*>
    - end
    - GenericDNSPacketWriter<Container>::size
    - insert
    - c_str
    linkageType: ''
    returnType: void
    signature: void GenericDNSPacketWriter<Container>::xfrBlob(const string& blob,
      int  )
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: insert
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:457,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:457,1
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:457,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:457,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' blob'
    argTypes:
    - std::vector<uint8_t>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 458
      start: 455
    functionDepth: 2
    functionLinenumber: 455
    functionLinenumberEnd: 458
    functionName: GenericDNSPacketWriter<Container>::xfrBlob
    functionSourceFile: /src/pdns/pdns/recursordist/dnswriter.cc
    functionUses: 9
    functionsReached:
    - end
    - insert
    - begin
    linkageType: ''
    returnType: void
    signature: void GenericDNSPacketWriter<Container>::xfrBlob(const std::vector<uint8_t>&
      blob)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: GenericDNSPacketWriter<Container>::xfrBlob
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:462,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' blob'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 463
      start: 460
    functionDepth: 0
    functionLinenumber: 460
    functionLinenumberEnd: 463
    functionName: GenericDNSPacketWriter<Container>::xfrBlobNoSpaces
    functionSourceFile: /src/pdns/pdns/recursordist/dnswriter.cc
    functionUses: 2
    functionsReached:
    - GenericDNSPacketWriter<Container>::xfrBlob
    linkageType: ''
    returnType: void
    signature: void GenericDNSPacketWriter<Container>::xfrBlobNoSpaces(const string&
      blob, int  )
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: GenericDNSPacketWriter<Container>::xfrBlob
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:467,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' blob'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 468
      start: 465
    functionDepth: 0
    functionLinenumber: 465
    functionLinenumberEnd: 468
    functionName: GenericDNSPacketWriter<Container>::xfrHexBlob
    functionSourceFile: /src/pdns/pdns/recursordist/dnswriter.cc
    functionUses: 0
    functionsReached:
    - GenericDNSPacketWriter<Container>::xfrBlob
    linkageType: ''
    returnType: void
    signature: void GenericDNSPacketWriter<Container>::xfrHexBlob(const string& blob,
      bool /* keepReading */)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: GenericDNSPacketWriter<Container>::xfr16BitInt
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:474,1
    - Dst: getKey
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:474,1
    - Dst: getKey
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:476,1
    - Dst: GenericDNSPacketWriter<Container>::xfr16BitInt
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:479,1
    - Dst: getMandatory
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:479,1
    - Dst: getMandatory
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:480,1
    - Dst: GenericDNSPacketWriter<Container>::xfr16BitInt
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:481,1
    - Dst: getALPN
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:486,1
    - Dst: getALPN
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:487,1
    - Dst: length
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:488,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:490,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:491,1
    - Dst: GenericDNSPacketWriter<Container>::xfr16BitInt
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:493,1
    - Dst: static_cast<uint16_t>
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:493,1
    - Dst: getALPN
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:494,1
    - Dst: GenericDNSPacketWriter<Container>::xfrUnquotedText
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:495,1
    - Dst: GenericDNSPacketWriter<Container>::xfr16BitInt
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:500,1
    - Dst: GenericDNSPacketWriter<Container>::xfr16BitInt
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:503,1
    - Dst: GenericDNSPacketWriter<Container>::xfr16BitInt
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:504,1
    - Dst: getPort
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:504,1
    - Dst: GenericDNSPacketWriter<Container>::xfr16BitInt
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:507,1
    - Dst: getIPHints
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:507,1
    - Dst: getIPHints
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:508,1
    - Dst: xfrCAWithoutPort
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:509,1
    - Dst: getKey
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:509,1
    - Dst: GenericDNSPacketWriter<Container>::xfr16BitInt
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:513,1
    - Dst: getIPHints
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:513,1
    - Dst: getIPHints
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:514,1
    - Dst: xfrCAWithoutPort
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:515,1
    - Dst: getKey
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:515,1
    - Dst: GenericDNSPacketWriter<Container>::xfr16BitInt
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:519,1
    - Dst: getECH
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:519,1
    - Dst: GenericDNSPacketWriter<Container>::xfrBlobNoSpaces
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:520,1
    - Dst: getECH
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:520,1
    - Dst: GenericDNSPacketWriter<Container>::xfr16BitInt
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:523,1
    - Dst: GenericDNSPacketWriter<Container>::xfr16BitInt
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:526,1
    - Dst: getTLSSupportedGroups
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:526,1
    - Dst: getTLSSupportedGroups
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:527,1
    - Dst: GenericDNSPacketWriter<Container>::xfr16BitInt
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:528,1
    - Dst: GenericDNSPacketWriter<Container>::xfr16BitInt
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:532,1
    - Dst: getValue
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:532,1
    - Dst: GenericDNSPacketWriter<Container>::xfrBlob
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:533,1
    - Dst: getValue
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:533,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 54
    argCount: 1
    argNames:
    - kvs
    argTypes:
    - std::set<SvcParam>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 537
      start: 470
    functionDepth: 0
    functionLinenumber: 470
    functionLinenumberEnd: 537
    functionName: GenericDNSPacketWriter<Container>::xfrSvcParamKeyVals
    functionSourceFile: /src/pdns/pdns/recursordist/dnswriter.cc
    functionUses: 0
    functionsReached:
    - getTLSSupportedGroups
    - length
    - pdns::max
    - xfrCAWithoutPort
    - GenericDNSPacketWriter<Container>::xfrBlob
    - getALPN
    - runtime_error
    - getIPHints
    - GenericDNSPacketWriter<Container>::xfr16BitInt
    - getECH
    - getKey
    - static_cast<uint16_t>
    - getValue
    - getMandatory
    - GenericDNSPacketWriter<Container>::xfrBlobNoSpaces
    - getPort
    - GenericDNSPacketWriter<Container>::xfrUnquotedText
    linkageType: ''
    returnType: void
    signature: void GenericDNSPacketWriter<Container>::xfrSvcParamKeyVals(const std::set<SvcParam>
      &kvs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assign
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:542,1
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:542,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:542,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' records'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 543
      start: 540
    functionDepth: 1
    functionLinenumber: 540
    functionLinenumberEnd: 543
    functionName: GenericDNSPacketWriter<Container>::getRecordPayload
    functionSourceFile: /src/pdns/pdns/recursordist/dnswriter.cc
    functionUses: 0
    functionsReached:
    - assign
    - end
    - begin
    linkageType: ''
    returnType: void
    signature: void GenericDNSPacketWriter<Container>::getRecordPayload(string& records)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assign
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:548,1
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:548,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:548,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' record'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 549
      start: 546
    functionDepth: 1
    functionLinenumber: 546
    functionLinenumberEnd: 549
    functionName: GenericDNSPacketWriter<Container>::getWireFormatContent
    functionSourceFile: /src/pdns/pdns/recursordist/dnswriter.cc
    functionUses: 0
    functionsReached:
    - assign
    - end
    - begin
    linkageType: ''
    returnType: void
    signature: void GenericDNSPacketWriter<Container>::getWireFormatContent(string&
      record)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: GenericDNSPacketWriter<Container>::size
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:553,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 554
      start: 551
    functionDepth: 0
    functionLinenumber: 551
    functionLinenumberEnd: 554
    functionName: GenericDNSPacketWriter<Container>::size
    functionSourceFile: /src/pdns/pdns/recursordist/dnswriter.cc
    functionUses: 22
    functionsReached:
    - GenericDNSPacketWriter<Container>::size
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t GenericDNSPacketWriter<Container>::size() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: resize
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:558,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 560
      start: 556
    functionDepth: 2
    functionLinenumber: 556
    functionLinenumberEnd: 560
    functionName: GenericDNSPacketWriter<Container>::rollback
    functionSourceFile: /src/pdns/pdns/recursordist/dnswriter.cc
    functionUses: 0
    functionsReached:
    - resize
    linkageType: ''
    returnType: void
    signature: void GenericDNSPacketWriter<Container>::rollback()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: resize
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:564,1
    - Dst: reinterpret_cast<dnsheader*>
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:565,1
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:565,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 567
      start: 562
    functionDepth: 2
    functionLinenumber: 562
    functionLinenumberEnd: 567
    functionName: GenericDNSPacketWriter<Container>::truncate
    functionSourceFile: /src/pdns/pdns/recursordist/dnswriter.cc
    functionUses: 0
    functionsReached:
    - reinterpret_cast<dnsheader*>
    - resize
    - begin
    linkageType: ''
    returnType: void
    signature: void GenericDNSPacketWriter<Container>::truncate()
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: GenericDNSPacketWriter<Container>::size
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:575,1
    - Dst: std::range_error
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:576,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:576,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:576,1
    - Dst: GenericDNSPacketWriter<Container>::size
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:576,1
    - Dst: GenericDNSPacketWriter<Container>::size
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:579,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:579,1
    - Dst: std::range_error
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:580,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:580,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:580,1
    - Dst: GenericDNSPacketWriter<Container>::size
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:583,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:584,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:585,1
    - Dst: reinterpret_cast<dnsheader*>
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:587,1
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:587,1
    - Dst: htons
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:590,1
    - Dst: ntohs
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:590,1
    - Dst: htons
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:593,1
    - Dst: ntohs
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:593,1
    - Dst: htons
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:596,1
    - Dst: ntohs
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:596,1
    - Dst: htons
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:599,1
    - Dst: ntohs
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:599,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 27
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 603
      start: 569
    functionDepth: 0
    functionLinenumber: 569
    functionLinenumberEnd: 603
    functionName: GenericDNSPacketWriter<Container>::commit
    functionSourceFile: /src/pdns/pdns/recursordist/dnswriter.cc
    functionUses: 3
    functionsReached:
    - pdns::max
    - std::to_string
    - ntohs
    - std::range_error
    - reinterpret_cast<dnsheader*>
    - GenericDNSPacketWriter<Container>::size
    - begin
    - at
    - htons
    linkageType: ''
    returnType: void
    signature: void GenericDNSPacketWriter<Container>::commit()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: GenericDNSPacketWriter<Container>::size
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:607,1
    - Dst: second::size
      Src: /src/pdns/pdns/recursordist/dnswriter.cc:611,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ' options'
    argTypes:
    - optvect_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 615
      start: 605
    functionDepth: 0
    functionLinenumber: 605
    functionLinenumberEnd: 615
    functionName: GenericDNSPacketWriter<Container>::getSizeWithOpts
    functionSourceFile: /src/pdns/pdns/recursordist/dnswriter.cc
    functionUses: 0
    functionsReached:
    - GenericDNSPacketWriter<Container>::size
    - second::size
    linkageType: ''
    returnType: size_t
    signature: size_t GenericDNSPacketWriter<Container>::getSizeWithOpts(const optvect_t&
      options) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dns_random
      Src: /src/pdns/pdns/recursordist/test-dns_random_hh.cc:35,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-dns_random_hh.cc:38,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-dns_random_hh.cc:39,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-dns_random_hh.cc:40,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-dns_random_hh.cc:41,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-dns_random_hh.cc:42,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-dns_random_hh.cc:43,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-dns_random_hh.cc:44,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-dns_random_hh.cc:45,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-dns_random_hh.cc:46,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-dns_random_hh.cc:47,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-dns_random_hh.cc:48,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 31
    functionDepth: 0
    functionLinenumber: 31
    functionLinenumberEnd: 49
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-dns_random_hh.cc
    functionUses: 0
    functionsReached:
    - dns_random
    - BOOST_CHECK_EQUAL
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_dns_random_upper_bound)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: acc
      Src: /src/pdns/pdns/recursordist/test-dns_random_hh.cc:56,1
    - Dst: dns_random
      Src: /src/pdns/pdns/recursordist/test-dns_random_hh.cc:56,1
    - Dst: BOOST_CHECK_CLOSE
      Src: /src/pdns/pdns/recursordist/test-dns_random_hh.cc:58,1
    - Dst: median
      Src: /src/pdns/pdns/recursordist/test-dns_random_hh.cc:58,1
    - Dst: BOOST_CHECK_CLOSE
      Src: /src/pdns/pdns/recursordist/test-dns_random_hh.cc:59,1
    - Dst: mean
      Src: /src/pdns/pdns/recursordist/test-dns_random_hh.cc:59,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 51
    functionDepth: 0
    functionLinenumber: 51
    functionLinenumberEnd: 62
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-dns_random_hh.cc
    functionUses: 0
    functionsReached:
    - dns_random
    - median
    - mean
    - BOOST_CHECK_CLOSE
    - acc
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_dns_random_average)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: acc
      Src: /src/pdns/pdns/recursordist/test-dns_random_hh.cc:69,1
    - Dst: dns_random_uint32
      Src: /src/pdns/pdns/recursordist/test-dns_random_hh.cc:69,1
    - Dst: static_cast<double>
      Src: /src/pdns/pdns/recursordist/test-dns_random_hh.cc:69,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/recursordist/test-dns_random_hh.cc:69,1
    - Dst: BOOST_CHECK_CLOSE
      Src: /src/pdns/pdns/recursordist/test-dns_random_hh.cc:71,1
    - Dst: median
      Src: /src/pdns/pdns/recursordist/test-dns_random_hh.cc:71,1
    - Dst: BOOST_CHECK_CLOSE
      Src: /src/pdns/pdns/recursordist/test-dns_random_hh.cc:72,1
    - Dst: mean
      Src: /src/pdns/pdns/recursordist/test-dns_random_hh.cc:72,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 64
    functionDepth: 0
    functionLinenumber: 64
    functionLinenumberEnd: 75
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-dns_random_hh.cc
    functionUses: 0
    functionsReached:
    - dns_random_uint32
    - pdns::max
    - static_cast<double>
    - median
    - mean
    - BOOST_CHECK_CLOSE
    - acc
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_dns_random_uint32_average)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/webserver.hh:51,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 50
    functionDepth: 0
    functionLinenumber: 50
    functionLinenumberEnd: 51
    functionName: HttpRequest::HttpRequest
    functionSourceFile: /src/pdns/pdns/recursordist/webserver.hh
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void HttpRequest(string logprefix_ = "")
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - log
    argTypes:
    - Logr::log_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 65
    functionDepth: 0
    functionLinenumber: 65
    functionLinenumberEnd: 68
    functionName: HttpRequest::setSLog
    functionSourceFile: /src/pdns/pdns/recursordist/webserver.hh
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setSLog(Logr::log_t log)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 74
    functionDepth: 0
    functionLinenumber: 74
    functionLinenumberEnd: 74
    functionName: HttpResponse::HttpResponse
    functionSourceFile: /src/pdns/pdns/recursordist/webserver.hh
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void HttpResponse()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - resp
    argTypes:
    - YaHTTP::Response
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 75
    functionDepth: 0
    functionLinenumber: 75
    functionLinenumberEnd: 75
    functionName: HttpResponse::HttpResponse
    functionSourceFile: /src/pdns/pdns/recursordist/webserver.hh
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void HttpResponse(const YaHTTP::Response &resp)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - log
    argTypes:
    - Logr::log_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 84
    functionDepth: 0
    functionLinenumber: 84
    functionLinenumberEnd: 87
    functionName: HttpResponse::setSLog
    functionSourceFile: /src/pdns/pdns/recursordist/webserver.hh
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setSLog(Logr::log_t log)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - status
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 95
    functionDepth: 0
    functionLinenumber: 95
    functionLinenumberEnd: 98
    functionName: HttpException::HttpException
    functionSourceFile: /src/pdns/pdns/recursordist/webserver.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void HttpException(int status)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: setErrorResult
      Src: /src/pdns/pdns/recursordist/webserver.hh:102,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - status
    - ' msg'
    argTypes:
    - int
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 100
    functionDepth: 0
    functionLinenumber: 100
    functionLinenumberEnd: 103
    functionName: HttpException::HttpException
    functionSourceFile: /src/pdns/pdns/recursordist/webserver.hh
    functionUses: 0
    functionsReached:
    - setErrorResult
    linkageType: ''
    returnType: void
    signature: void HttpException(int status, const string& msg)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 105
    functionDepth: 0
    functionLinenumber: 105
    functionLinenumberEnd: 108
    functionName: HttpException::response
    functionSourceFile: /src/pdns/pdns/recursordist/webserver.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: HttpResponse
    signature: HttpResponse response()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 116
    functionDepth: 0
    functionLinenumber: 116
    functionLinenumberEnd: 116
    functionName: HttpBadRequestException::HttpBadRequestException
    functionSourceFile: /src/pdns/pdns/recursordist/webserver.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void HttpBadRequestException()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' msg'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 117
    functionDepth: 0
    functionLinenumber: 117
    functionLinenumberEnd: 117
    functionName: HttpBadRequestException::HttpBadRequestException
    functionSourceFile: /src/pdns/pdns/recursordist/webserver.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void HttpBadRequestException(const string& msg)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - scheme
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 125
      start: 122
    functionDepth: 0
    functionLinenumber: 122
    functionLinenumberEnd: 125
    functionName: HttpUnauthorizedException::HttpUnauthorizedException
    functionSourceFile: /src/pdns/pdns/recursordist/webserver.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void HttpUnauthorizedException(string const &scheme)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 130
      start: 130
    functionDepth: 0
    functionLinenumber: 130
    functionLinenumberEnd: 130
    functionName: HttpForbiddenException::HttpForbiddenException
    functionSourceFile: /src/pdns/pdns/recursordist/webserver.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void HttpForbiddenException()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' msg'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 131
      start: 131
    functionDepth: 0
    functionLinenumber: 131
    functionLinenumberEnd: 131
    functionName: HttpForbiddenException::HttpForbiddenException
    functionSourceFile: /src/pdns/pdns/recursordist/webserver.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void HttpForbiddenException(const string& msg)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 136
      start: 136
    functionDepth: 0
    functionLinenumber: 136
    functionLinenumberEnd: 136
    functionName: HttpNotFoundException::HttpNotFoundException
    functionSourceFile: /src/pdns/pdns/recursordist/webserver.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void HttpNotFoundException()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' msg'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 137
      start: 137
    functionDepth: 0
    functionLinenumber: 137
    functionLinenumberEnd: 137
    functionName: HttpNotFoundException::HttpNotFoundException
    functionSourceFile: /src/pdns/pdns/recursordist/webserver.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void HttpNotFoundException(const string& msg)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 142
      start: 142
    functionDepth: 0
    functionLinenumber: 142
    functionLinenumberEnd: 142
    functionName: HttpMethodNotAllowedException::HttpMethodNotAllowedException
    functionSourceFile: /src/pdns/pdns/recursordist/webserver.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void HttpMethodNotAllowedException()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' msg'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 143
      start: 143
    functionDepth: 0
    functionLinenumber: 143
    functionLinenumberEnd: 143
    functionName: HttpMethodNotAllowedException::HttpMethodNotAllowedException
    functionSourceFile: /src/pdns/pdns/recursordist/webserver.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void HttpMethodNotAllowedException(const string& msg)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 148
      start: 148
    functionDepth: 0
    functionLinenumber: 148
    functionLinenumberEnd: 148
    functionName: HttpConflictException::HttpConflictException
    functionSourceFile: /src/pdns/pdns/recursordist/webserver.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void HttpConflictException()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' msg'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 149
      start: 149
    functionDepth: 0
    functionLinenumber: 149
    functionLinenumberEnd: 149
    functionName: HttpConflictException::HttpConflictException
    functionSourceFile: /src/pdns/pdns/recursordist/webserver.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void HttpConflictException(const string& msg)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 154
      start: 154
    functionDepth: 0
    functionLinenumber: 154
    functionLinenumberEnd: 154
    functionName: HttpInternalServerErrorException::HttpInternalServerErrorException
    functionSourceFile: /src/pdns/pdns/recursordist/webserver.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void HttpInternalServerErrorException()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' msg'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 155
    functionDepth: 0
    functionLinenumber: 155
    functionLinenumberEnd: 155
    functionName: HttpInternalServerErrorException::HttpInternalServerErrorException
    functionSourceFile: /src/pdns/pdns/recursordist/webserver.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void HttpInternalServerErrorException(const string& msg)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' what_arg'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 162
      start: 161
    functionDepth: 0
    functionLinenumber: 161
    functionLinenumberEnd: 162
    functionName: ApiException::ApiException
    functionSourceFile: /src/pdns/pdns/recursordist/webserver.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ApiException(const string& what_arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: string::empty
      Src: /src/pdns/pdns/recursordist/webserver.hh:170,1
    - Dst: setReuseAddr
      Src: /src/pdns/pdns/recursordist/webserver.hh:171,1
    - Dst: bind
      Src: /src/pdns/pdns/recursordist/webserver.hh:172,1
    - Dst: listen
      Src: /src/pdns/pdns/recursordist/webserver.hh:173,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - localaddress
    - port
    argTypes:
    - string
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 174
      start: 170
    functionDepth: 0
    functionLinenumber: 170
    functionLinenumberEnd: 174
    functionName: Server::Server
    functionSourceFile: /src/pdns/pdns/recursordist/webserver.hh
    functionUses: 0
    functionsReached:
    - listen
    - bind
    - setReuseAddr
    - string::empty
    linkageType: ''
    returnType: void
    signature: void Server(const string &localaddress, int port)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 175
      start: 175
    functionDepth: 0
    functionLinenumber: 175
    functionLinenumberEnd: 175
    functionName: ~Server()
    functionSourceFile: /src/pdns/pdns/recursordist/webserver.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~Server()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::shared_ptr<Socket>
      Src: /src/pdns/pdns/recursordist/webserver.hh:180,1
    - Dst: Server::accept
      Src: /src/pdns/pdns/recursordist/webserver.hh:180,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 181
      start: 179
    functionDepth: 0
    functionLinenumber: 179
    functionLinenumberEnd: 181
    functionName: Server::accept
    functionSourceFile: /src/pdns/pdns/recursordist/webserver.hh
    functionUses: 2
    functionsReached:
    - std::shared_ptr<Socket>
    - Server::accept
    linkageType: ''
    returnType: std::shared_ptr<Socket>
    signature: std::shared_ptr<Socket> accept()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 193
      start: 193
    functionDepth: 0
    functionLinenumber: 193
    functionLinenumberEnd: 193
    functionName: ~WebServer()
    functionSourceFile: /src/pdns/pdns/recursordist/webserver.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~WebServer()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - log
    argTypes:
    - Logr::log_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 198
      start: 195
    functionDepth: 0
    functionLinenumber: 195
    functionLinenumberEnd: 198
    functionName: WebServer::setSLog
    functionSourceFile: /src/pdns/pdns/recursordist/webserver.hh
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setSLog(Logr::log_t log)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: string::empty
      Src: /src/pdns/pdns/recursordist/webserver.hh:201,1
    - Dst: make_unique<CredentialsHolder>
      Src: /src/pdns/pdns/recursordist/webserver.hh:202,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/webserver.hh:202,1
    - Dst: reset
      Src: /src/pdns/pdns/recursordist/webserver.hh:205,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - apikey
    - hashPlaintext
    argTypes:
    - string
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 207
      start: 200
    functionDepth: 0
    functionLinenumber: 200
    functionLinenumberEnd: 207
    functionName: WebServer::setApiKey
    functionSourceFile: /src/pdns/pdns/recursordist/webserver.hh
    functionUses: 0
    functionsReached:
    - std::string
    - reset
    - make_unique<CredentialsHolder>
    - string::empty
    linkageType: ''
    returnType: void
    signature: void setApiKey(const string &apikey, bool hashPlaintext)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: string::empty
      Src: /src/pdns/pdns/recursordist/webserver.hh:210,1
    - Dst: make_unique<CredentialsHolder>
      Src: /src/pdns/pdns/recursordist/webserver.hh:211,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/webserver.hh:211,1
    - Dst: reset
      Src: /src/pdns/pdns/recursordist/webserver.hh:214,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - password
    - hashPlaintext
    argTypes:
    - string
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 216
      start: 209
    functionDepth: 0
    functionLinenumber: 209
    functionLinenumberEnd: 216
    functionName: WebServer::setPassword
    functionSourceFile: /src/pdns/pdns/recursordist/webserver.hh
    functionUses: 0
    functionsReached:
    - std::string
    - reset
    - make_unique<CredentialsHolder>
    - string::empty
    linkageType: ''
    returnType: void
    signature: void setPassword(const string &password, bool hashPlaintext)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - s
    argTypes:
    - ssize_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 220
      start: 218
    functionDepth: 0
    functionLinenumber: 218
    functionLinenumberEnd: 220
    functionName: WebServer::setMaxBodySize
    functionSourceFile: /src/pdns/pdns/recursordist/webserver.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setMaxBodySize(ssize_t s)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - t
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 224
      start: 222
    functionDepth: 0
    functionLinenumber: 222
    functionLinenumberEnd: 224
    functionName: WebServer::setConnectionTimeout
    functionSourceFile: /src/pdns/pdns/recursordist/webserver.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setConnectionTimeout(int t)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - nmg
    argTypes:
    - NetmaskGroup
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 228
      start: 226
    functionDepth: 0
    functionLinenumber: 226
    functionLinenumberEnd: 228
    functionName: WebServer::setACL
    functionSourceFile: /src/pdns/pdns/recursordist/webserver.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setACL(const NetmaskGroup &nmg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: WebServer::registerConnection
      Src: /src/pdns/pdns/recursordist/webserver.hh:246,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 247
      start: 242
    functionDepth: 0
    functionLinenumber: 242
    functionLinenumberEnd: 247
    functionName: WebServer::registerConnection
    functionSourceFile: /src/pdns/pdns/recursordist/webserver.hh
    functionUses: 2
    functionsReached:
    - WebServer::registerConnection
    linkageType: ''
    returnType: bool
    signature: bool registerConnection()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: WebServer::releaseConnection
      Src: /src/pdns/pdns/recursordist/webserver.hh:250,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 252
      start: 248
    functionDepth: 0
    functionLinenumber: 248
    functionLinenumberEnd: 252
    functionName: WebServer::releaseConnection
    functionSourceFile: /src/pdns/pdns/recursordist/webserver.hh
    functionUses: 2
    functionsReached:
    - WebServer::releaseConnection
    linkageType: ''
    returnType: void
    signature: void releaseConnection()
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: PDNSException
      Src: /src/pdns/pdns/recursordist/webserver.hh:276,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 1
    argNames:
    - ' level'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 277
      start: 260
    functionDepth: 0
    functionLinenumber: 260
    functionLinenumberEnd: 277
    functionName: WebServer::setLogLevel
    functionSourceFile: /src/pdns/pdns/recursordist/webserver.hh
    functionUses: 0
    functionsReached:
    - PDNSException
    linkageType: ''
    returnType: void
    signature: void setLogLevel(const string& level)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - level
    argTypes:
    - LogLevel
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 281
      start: 279
    functionDepth: 0
    functionLinenumber: 279
    functionLinenumberEnd: 281
    functionName: WebServer::setLogLevel
    functionSourceFile: /src/pdns/pdns/recursordist/webserver.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setLogLevel(const LogLevel level)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 285
      start: 283
    functionDepth: 0
    functionLinenumber: 283
    functionLinenumberEnd: 285
    functionName: WebServer::getLogLevel
    functionSourceFile: /src/pdns/pdns/recursordist/webserver.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: LogLevel
    signature: LogLevel getLogLevel()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' value'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 290
      start: 287
    functionDepth: 0
    functionLinenumber: 287
    functionLinenumberEnd: 290
    functionName: WebServer::setCrossOriginRequestHeader
    functionSourceFile: /src/pdns/pdns/recursordist/webserver.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setCrossOriginRequestHeader(const std::string& value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<Server>
      Src: /src/pdns/pdns/recursordist/webserver.hh:300,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 301
      start: 299
    functionDepth: 0
    functionLinenumber: 299
    functionLinenumberEnd: 301
    functionName: WebServer::createServer
    functionSourceFile: /src/pdns/pdns/recursordist/webserver.hh
    functionUses: 1
    functionsReached:
    - std::make_shared<Server>
    linkageType: ''
    returnType: std::shared_ptr<Server>
    signature: std::shared_ptr<Server> createServer()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:22,1
    - Dst: addRecordToList
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:24,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:24,1
    - Dst: addRecordToList
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:25,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:25,1
    - Dst: addRecordToList
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:26,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:26,1
    - Dst: addRecordToList
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:27,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:27,1
    - Dst: addRecordToList
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:28,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:28,1
    - Dst: addRecordToList
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:29,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:29,1
    - Dst: processIXFRRecords
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:31,1
    - Dst: std::dynamic_pointer_cast<SOARecordContent>
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:31,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:32,1
    - Dst: auto::size
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:32,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:33,1
    - Dst: auto::at
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:33,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:33,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:34,1
    - Dst: auto::at
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:34,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:34,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:34,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:35,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:36,1
    - Dst: auto::at
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:36,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:36,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:36,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 18
    functionDepth: 0
    functionLinenumber: 18
    functionLinenumberEnd: 38
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-ixfr_cc.cc
    functionUses: 0
    functionsReached:
    - addRecordToList
    - vector::at
    - BOOST_CHECK
    - at
    - processIXFRRecords
    - DNSName
    - BOOST_CHECK_EQUAL
    - size
    - DNSRecordContent::make
    - auto::at
    - vector::size
    - std::dynamic_pointer_cast<SOARecordContent>
    - BOOST_REQUIRE_EQUAL
    - auto::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_ixfr_rfc1995_axfr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:44,1
    - Dst: addRecordToList
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:46,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:46,1
    - Dst: addRecordToList
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:47,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:47,1
    - Dst: addRecordToList
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:48,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:48,1
    - Dst: addRecordToList
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:49,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:49,1
    - Dst: addRecordToList
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:50,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:50,1
    - Dst: addRecordToList
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:51,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:51,1
    - Dst: addRecordToList
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:52,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:52,1
    - Dst: addRecordToList
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:53,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:53,1
    - Dst: addRecordToList
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:54,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:54,1
    - Dst: addRecordToList
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:55,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:55,1
    - Dst: addRecordToList
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:56,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:56,1
    - Dst: processIXFRRecords
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:58,1
    - Dst: std::dynamic_pointer_cast<SOARecordContent>
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:58,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:60,1
    - Dst: auto::size
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:60,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:62,1
    - Dst: auto::at
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:62,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:62,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:63,1
    - Dst: auto::at
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:63,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:63,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:66,1
    - Dst: auto::at
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:66,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:66,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:66,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:67,1
    - Dst: auto::at
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:67,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:67,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:67,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:70,1
    - Dst: auto::at
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:70,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:70,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:70,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:71,1
    - Dst: auto::at
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:71,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:71,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:71,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:72,1
    - Dst: auto::at
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:72,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:72,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:72,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:75,1
    - Dst: auto::at
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:75,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:75,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:76,1
    - Dst: auto::at
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:76,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:76,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:79,1
    - Dst: auto::at
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:79,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:79,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:79,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:80,1
    - Dst: auto::at
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:80,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:80,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:80,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:83,1
    - Dst: auto::at
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:83,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:83,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:83,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:84,1
    - Dst: auto::at
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:84,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:84,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:84,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 26
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 40
    functionDepth: 0
    functionLinenumber: 40
    functionLinenumberEnd: 85
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-ixfr_cc.cc
    functionUses: 0
    functionsReached:
    - addRecordToList
    - at
    - processIXFRRecords
    - QType
    - DNSName
    - BOOST_CHECK_EQUAL
    - size
    - DNSRecordContent::make
    - auto::at
    - std::dynamic_pointer_cast<SOARecordContent>
    - auto::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_ixfr_rfc1995_incremental)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:91,1
    - Dst: addRecordToList
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:93,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:93,1
    - Dst: addRecordToList
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:94,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:94,1
    - Dst: addRecordToList
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:95,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:95,1
    - Dst: addRecordToList
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:96,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:96,1
    - Dst: addRecordToList
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:97,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:97,1
    - Dst: addRecordToList
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:98,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:98,1
    - Dst: addRecordToList
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:99,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:99,1
    - Dst: processIXFRRecords
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:101,1
    - Dst: std::dynamic_pointer_cast<SOARecordContent>
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:101,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:103,1
    - Dst: auto::size
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:103,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:105,1
    - Dst: auto::at
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:105,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:105,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:106,1
    - Dst: auto::at
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:106,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:106,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:109,1
    - Dst: auto::at
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:109,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:109,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:109,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:110,1
    - Dst: auto::at
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:110,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:110,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:110,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:113,1
    - Dst: auto::at
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:113,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:113,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:113,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:114,1
    - Dst: auto::at
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:114,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:114,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:114,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:115,1
    - Dst: auto::at
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:115,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:115,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:115,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 87
    functionDepth: 0
    functionLinenumber: 87
    functionLinenumberEnd: 116
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-ixfr_cc.cc
    functionUses: 0
    functionsReached:
    - addRecordToList
    - at
    - processIXFRRecords
    - QType
    - DNSName
    - BOOST_CHECK_EQUAL
    - size
    - DNSRecordContent::make
    - auto::at
    - std::dynamic_pointer_cast<SOARecordContent>
    - auto::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_ixfr_rfc1995_condensed_incremental)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:122,1
    - Dst: addRecordToList
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:124,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:124,1
    - Dst: addRecordToList
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:125,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:125,1
    - Dst: addRecordToList
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:126,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:126,1
    - Dst: addRecordToList
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:127,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:127,1
    - Dst: addRecordToList
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:128,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:128,1
    - Dst: addRecordToList
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:129,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:129,1
    - Dst: addRecordToList
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:130,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:130,1
    - Dst: addRecordToList
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:131,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:131,1
    - Dst: addRecordToList
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:132,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:132,1
    - Dst: processIXFRRecords
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:134,1
    - Dst: std::dynamic_pointer_cast<SOARecordContent>
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:134,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:136,1
    - Dst: auto::size
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:136,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:138,1
    - Dst: auto::at
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:138,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:138,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:139,1
    - Dst: auto::at
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:139,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:139,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:142,1
    - Dst: auto::at
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:142,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:142,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:142,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:143,1
    - Dst: auto::at
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:143,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:143,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:143,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:146,1
    - Dst: auto::at
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:146,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:146,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:146,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:149,1
    - Dst: auto::at
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:149,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:149,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:150,1
    - Dst: auto::at
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:150,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:150,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:153,1
    - Dst: auto::at
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:153,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:153,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:153,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:154,1
    - Dst: auto::at
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:154,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:154,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:154,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:157,1
    - Dst: auto::at
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:157,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:157,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:157,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:158,1
    - Dst: auto::at
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:158,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:158,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:158,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 22
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 159
      start: 118
    functionDepth: 0
    functionLinenumber: 118
    functionLinenumberEnd: 159
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-ixfr_cc.cc
    functionUses: 0
    functionsReached:
    - addRecordToList
    - at
    - processIXFRRecords
    - QType
    - DNSName
    - BOOST_CHECK_EQUAL
    - size
    - DNSRecordContent::make
    - auto::at
    - std::dynamic_pointer_cast<SOARecordContent>
    - auto::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_ixfr_no_additions_in_first_sequence)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:165,1
    - Dst: addRecordToList
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:167,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:167,1
    - Dst: addRecordToList
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:168,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:168,1
    - Dst: addRecordToList
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:169,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:169,1
    - Dst: addRecordToList
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:170,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:170,1
    - Dst: addRecordToList
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:171,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:171,1
    - Dst: addRecordToList
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:172,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:172,1
    - Dst: addRecordToList
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:173,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:173,1
    - Dst: addRecordToList
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:174,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:174,1
    - Dst: addRecordToList
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:175,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:175,1
    - Dst: addRecordToList
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:176,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:176,1
    - Dst: processIXFRRecords
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:178,1
    - Dst: std::dynamic_pointer_cast<SOARecordContent>
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:178,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:180,1
    - Dst: auto::size
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:180,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:182,1
    - Dst: auto::at
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:182,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:182,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:183,1
    - Dst: auto::at
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:183,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:183,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:186,1
    - Dst: auto::at
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:186,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:186,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:186,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:189,1
    - Dst: auto::at
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:189,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:189,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:189,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:190,1
    - Dst: auto::at
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:190,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:190,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:190,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:191,1
    - Dst: auto::at
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:191,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:191,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:191,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:194,1
    - Dst: auto::at
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:194,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:194,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:195,1
    - Dst: auto::at
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:195,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:195,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:198,1
    - Dst: auto::at
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:198,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:198,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:198,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:199,1
    - Dst: auto::at
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:199,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:199,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:199,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:202,1
    - Dst: auto::at
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:202,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:202,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:202,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:203,1
    - Dst: auto::at
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:203,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:203,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:203,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 24
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 204
      start: 161
    functionDepth: 0
    functionLinenumber: 161
    functionLinenumberEnd: 204
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-ixfr_cc.cc
    functionUses: 0
    functionsReached:
    - addRecordToList
    - at
    - processIXFRRecords
    - QType
    - DNSName
    - BOOST_CHECK_EQUAL
    - size
    - DNSRecordContent::make
    - auto::at
    - std::dynamic_pointer_cast<SOARecordContent>
    - auto::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_ixfr_no_removals_in_first_sequence)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:210,1
    - Dst: addRecordToList
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:212,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:212,1
    - Dst: addRecordToList
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:213,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:213,1
    - Dst: processIXFRRecords
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:215,1
    - Dst: std::dynamic_pointer_cast<SOARecordContent>
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:215,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:218,1
    - Dst: auto::size
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:218,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:220,1
    - Dst: auto::at
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:220,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:220,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:222,1
    - Dst: auto::at
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:222,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:222,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:223,1
    - Dst: auto::at
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:223,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:223,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:223,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:224,1
    - Dst: auto::at
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:224,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:224,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:224,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 225
      start: 206
    functionDepth: 0
    functionLinenumber: 206
    functionLinenumberEnd: 225
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-ixfr_cc.cc
    functionUses: 0
    functionsReached:
    - addRecordToList
    - at
    - processIXFRRecords
    - QType
    - DNSName
    - BOOST_CHECK_EQUAL
    - size
    - DNSRecordContent::make
    - auto::at
    - std::dynamic_pointer_cast<SOARecordContent>
    - auto::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_ixfr_same_serial)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:231,1
    - Dst: processIXFRRecords
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:234,1
    - Dst: std::dynamic_pointer_cast<SOARecordContent>
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:234,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:235,1
    - Dst: auto::size
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:235,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 236
      start: 227
    functionDepth: 0
    functionLinenumber: 227
    functionLinenumberEnd: 236
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-ixfr_cc.cc
    functionUses: 0
    functionsReached:
    - processIXFRRecords
    - BOOST_CHECK_EQUAL
    - DNSRecordContent::make
    - std::dynamic_pointer_cast<SOARecordContent>
    - auto::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_ixfr_invalid_no_records)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: addRecordToList
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:244,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:244,1
    - Dst: processIXFRRecords
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:246,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:247,1
    - Dst: auto::size
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:247,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 248
      start: 238
    functionDepth: 0
    functionLinenumber: 238
    functionLinenumberEnd: 248
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-ixfr_cc.cc
    functionUses: 0
    functionsReached:
    - addRecordToList
    - processIXFRRecords
    - BOOST_CHECK_EQUAL
    - DNSName
    - auto::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_ixfr_invalid_no_primary_soa)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:254,1
    - Dst: addRecordToList
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:256,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:256,1
    - Dst: addRecordToList
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:257,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:257,1
    - Dst: addRecordToList
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:258,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:258,1
    - Dst: addRecordToList
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:259,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:259,1
    - Dst: addRecordToList
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:260,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:260,1
    - Dst: addRecordToList
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:261,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:261,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:263,1
    - Dst: processIXFRRecords
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:263,1
    - Dst: std::dynamic_pointer_cast<SOARecordContent>
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:263,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 264
      start: 250
    functionDepth: 0
    functionLinenumber: 250
    functionLinenumberEnd: 264
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-ixfr_cc.cc
    functionUses: 0
    functionsReached:
    - addRecordToList
    - processIXFRRecords
    - DNSName
    - DNSRecordContent::make
    - BOOST_CHECK_THROW
    - std::dynamic_pointer_cast<SOARecordContent>
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_ixfr_invalid_no_trailing_soa)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:270,1
    - Dst: addRecordToList
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:272,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:272,1
    - Dst: addRecordToList
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:273,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:273,1
    - Dst: addRecordToList
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:274,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:274,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:276,1
    - Dst: processIXFRRecords
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:276,1
    - Dst: std::dynamic_pointer_cast<SOARecordContent>
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:276,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 277
      start: 266
    functionDepth: 0
    functionLinenumber: 266
    functionLinenumberEnd: 277
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-ixfr_cc.cc
    functionUses: 0
    functionsReached:
    - addRecordToList
    - processIXFRRecords
    - DNSName
    - DNSRecordContent::make
    - BOOST_CHECK_THROW
    - std::dynamic_pointer_cast<SOARecordContent>
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_ixfr_invalid_no_soa_after_removals)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:283,1
    - Dst: addRecordToList
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:285,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:285,1
    - Dst: addRecordToList
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:286,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:286,1
    - Dst: addRecordToList
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:287,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:287,1
    - Dst: addRecordToList
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:288,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:288,1
    - Dst: addRecordToList
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:289,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:289,1
    - Dst: addRecordToList
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:290,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:290,1
    - Dst: addRecordToList
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:291,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:291,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:293,1
    - Dst: processIXFRRecords
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:293,1
    - Dst: std::dynamic_pointer_cast<SOARecordContent>
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:293,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 294
      start: 279
    functionDepth: 0
    functionLinenumber: 279
    functionLinenumberEnd: 294
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-ixfr_cc.cc
    functionUses: 0
    functionsReached:
    - addRecordToList
    - processIXFRRecords
    - DNSName
    - DNSRecordContent::make
    - BOOST_CHECK_THROW
    - std::dynamic_pointer_cast<SOARecordContent>
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_ixfr_mismatching_serial_before_and_after_additions)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:300,1
    - Dst: addRecordToList
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:302,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:302,1
    - Dst: addRecordToList
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:303,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:303,1
    - Dst: addRecordToList
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:304,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:304,1
    - Dst: addRecordToList
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:305,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:305,1
    - Dst: addRecordToList
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:306,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:306,1
    - Dst: addRecordToList
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:307,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:307,1
    - Dst: addRecordToList
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:308,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:308,1
    - Dst: addRecordToList
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:309,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:309,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:311,1
    - Dst: processIXFRRecords
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:311,1
    - Dst: std::dynamic_pointer_cast<SOARecordContent>
      Src: /src/pdns/pdns/recursordist/test-ixfr_cc.cc:311,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 312
      start: 296
    functionDepth: 0
    functionLinenumber: 296
    functionLinenumberEnd: 312
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-ixfr_cc.cc
    functionUses: 0
    functionsReached:
    - addRecordToList
    - processIXFRRecords
    - DNSName
    - DNSRecordContent::make
    - BOOST_CHECK_THROW
    - std::dynamic_pointer_cast<SOARecordContent>
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_ixfr_trailing_record_after_end)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EDNSSubnetOpts::getFromString
      Src: /src/pdns/pdns/recursordist/ednssubnet.cc:40,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/ednssubnet.cc:40,1
    - Dst: length
      Src: /src/pdns/pdns/recursordist/ednssubnet.cc:40,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' options'
    - eso
    argTypes:
    - std::string
    - EDNSSubnetOpts*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 38
    functionDepth: 0
    functionLinenumber: 38
    functionLinenumberEnd: 41
    functionName: EDNSSubnetOpts::getFromString
    functionSourceFile: /src/pdns/pdns/recursordist/ednssubnet.cc
    functionUses: 11
    functionsReached:
    - EDNSSubnetOpts::getFromString
    - length
    - c_str
    linkageType: ''
    returnType: bool
    signature: bool EDNSSubnetOpts::getFromString(const std::string& options, EDNSSubnetOpts*
      eso)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/pdns/pdns/recursordist/ednssubnet.cc:50,1
    - Dst: ntohs
      Src: /src/pdns/pdns/recursordist/ednssubnet.cc:51,1
    - Dst: ComboAddress::reset
      Src: /src/pdns/pdns/recursordist/ednssubnet.cc:63,1
    - Dst: memcpy
      Src: /src/pdns/pdns/recursordist/ednssubnet.cc:66,1
    - Dst: ComboAddress::reset
      Src: /src/pdns/pdns/recursordist/ednssubnet.cc:77,1
    - Dst: memcpy
      Src: /src/pdns/pdns/recursordist/ednssubnet.cc:80,1
    - Dst: Netmask
      Src: /src/pdns/pdns/recursordist/ednssubnet.cc:86,1
    - Dst: ComboAddress::truncate
      Src: /src/pdns/pdns/recursordist/ednssubnet.cc:90,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 38
    argCount: 3
    argNames:
    - options
    - len
    - eso
    argTypes:
    - char*
    - unsigned int
    - EDNSSubnetOpts*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 94
    functionName: EDNSSubnetOpts::getFromString
    functionSourceFile: /src/pdns/pdns/recursordist/ednssubnet.cc
    functionUses: 11
    functionsReached:
    - Netmask
    - memcpy
    - ntohs
    - ComboAddress::truncate
    - ComboAddress::reset
    linkageType: ''
    returnType: bool
    signature: bool EDNSSubnetOpts::getFromString(const char* options, unsigned int
      len, EDNSSubnetOpts* eso)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: htons
      Src: /src/pdns/pdns/recursordist/ednssubnet.cc:100,1
    - Dst: isIPv4
      Src: /src/pdns/pdns/recursordist/ednssubnet.cc:100,1
    - Dst: getBits
      Src: /src/pdns/pdns/recursordist/ednssubnet.cc:102,1
    - Dst: std::string::assign
      Src: /src/pdns/pdns/recursordist/ednssubnet.cc:105,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/recursordist/ednssubnet.cc:105,1
    - Dst: getNetwork
      Src: /src/pdns/pdns/recursordist/ednssubnet.cc:108,1
    - Dst: ComboAddress::truncate
      Src: /src/pdns/pdns/recursordist/ednssubnet.cc:109,1
    - Dst: isIPv4
      Src: /src/pdns/pdns/recursordist/ednssubnet.cc:111,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/ednssubnet.cc:113,1
    - Dst: std::string::append
      Src: /src/pdns/pdns/recursordist/ednssubnet.cc:115,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/recursordist/ednssubnet.cc:115,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/ednssubnet.cc:119,1
    - Dst: std::string::append
      Src: /src/pdns/pdns/recursordist/ednssubnet.cc:121,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/recursordist/ednssubnet.cc:121,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 125
      start: 96
    functionDepth: 1
    functionLinenumber: 96
    functionLinenumberEnd: 125
    functionName: EDNSSubnetOpts::makeOptString
    functionSourceFile: /src/pdns/pdns/recursordist/ednssubnet.cc
    functionUses: 35
    functionsReached:
    - std::string::append
    - std::runtime_error
    - getBits
    - reinterpret_cast<const char*>
    - isIPv4
    - std::string::assign
    - getNetwork
    - ComboAddress::truncate
    - htons
    linkageType: ''
    returnType: std::string
    signature: std::string EDNSSubnetOpts::makeOptString() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 40
    functionDepth: 0
    functionLinenumber: 40
    functionLinenumberEnd: 53
    functionName: getLogger
    functionSourceFile: /src/pdns/pdns/recursordist/logger.cc
    functionUses: 138
    functionsReached: []
    linkageType: ''
    returnType: Logger
    signature: Logger & getLogger()
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: time
      Src: /src/pdns/pdns/recursordist/logger.cc:66,1
    - Dst: localtime_r
      Src: /src/pdns/pdns/recursordist/logger.cc:67,1
    - Dst: strftime
      Src: /src/pdns/pdns/recursordist/logger.cc:68,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/recursordist/logger.cc:68,1
    - Dst: std::array::size
      Src: /src/pdns/pdns/recursordist/logger.cc:68,1
    - Dst: std::scoped_lock
      Src: /src/pdns/pdns/recursordist/logger.cc:107,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/recursordist/logger.cc:112,1
    - Dst: std::quoted
      Src: /src/pdns/pdns/recursordist/logger.cc:114,1
    - Dst: std::quoted
      Src: /src/pdns/pdns/recursordist/logger.cc:114,1
    - Dst: ostringstream::str
      Src: /src/pdns/pdns/recursordist/logger.cc:119,1
    - Dst: syslog
      Src: /src/pdns/pdns/recursordist/logger.cc:125,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/logger.cc:125,1
    - Dst: ringAccount
      Src: /src/pdns/pdns/recursordist/logger.cc:134,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/logger.cc:137,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 61
    argCount: 2
    argNames:
    - ' msg'
    - u
    argTypes:
    - string
    - Urgency
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 141
      start: 55
    functionDepth: 0
    functionLinenumber: 55
    functionLinenumberEnd: 141
    functionName: Logger::log
    functionSourceFile: /src/pdns/pdns/recursordist/logger.cc
    functionUses: 0
    functionsReached:
    - std::quoted
    - std::scoped_lock
    - localtime_r
    - c_str
    - time
    - what
    - ringAccount
    - syslog
    - ostringstream::str
    - strftime
    - std::array::data
    - std::array::size
    linkageType: ''
    returnType: void
    signature: void Logger::log(const string& msg, Urgency u) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - u
    argTypes:
    - Urgency
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 146
      start: 143
    functionDepth: 0
    functionLinenumber: 143
    functionLinenumberEnd: 146
    functionName: Logger::setLoglevel
    functionSourceFile: /src/pdns/pdns/recursordist/logger.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Logger::setLoglevel(Urgency u)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - u
    argTypes:
    - Urgency
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 151
      start: 148
    functionDepth: 0
    functionLinenumber: 148
    functionLinenumberEnd: 151
    functionName: Logger::toConsole
    functionSourceFile: /src/pdns/pdns/recursordist/logger.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Logger::toConsole(Urgency u)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: closelog
      Src: /src/pdns/pdns/recursordist/logger.cc:156,1
    - Dst: openlog
      Src: /src/pdns/pdns/recursordist/logger.cc:157,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/logger.cc:157,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 159
      start: 153
    functionDepth: 0
    functionLinenumber: 153
    functionLinenumberEnd: 159
    functionName: Logger::open
    functionSourceFile: /src/pdns/pdns/recursordist/logger.cc
    functionUses: 8
    functionsReached:
    - c_str
    - openlog
    - closelog
    linkageType: ''
    returnType: void
    signature: void Logger::open()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Logger::open
      Src: /src/pdns/pdns/recursordist/logger.cc:164,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ' _name'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 165
      start: 161
    functionDepth: 0
    functionLinenumber: 161
    functionLinenumberEnd: 165
    functionName: Logger::setName
    functionSourceFile: /src/pdns/pdns/recursordist/logger.cc
    functionUses: 0
    functionsReached:
    - Logger::open
    linkageType: ''
    returnType: void
    signature: void Logger::setName(const string& _name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/logger.cc:168,1
    - Dst: Logger::open
      Src: /src/pdns/pdns/recursordist/logger.cc:170,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - n
    - facility
    argTypes:
    - string
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 171
      start: 167
    functionDepth: 0
    functionLinenumber: 167
    functionLinenumberEnd: 171
    functionName: Logger::Logger
    functionSourceFile: /src/pdns/pdns/recursordist/logger.cc
    functionUses: 0
    functionsReached:
    - std::move
    - Logger::open
    linkageType: ''
    returnType: void
    signature: void Logger::Logger(string n, int facility)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getPerThread
      Src: /src/pdns/pdns/recursordist/logger.cc:175,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - u
    argTypes:
    - Urgency
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 177
      start: 173
    functionDepth: 0
    functionLinenumber: 173
    functionLinenumberEnd: 177
    functionName: '& Logger::operator<<(Urgency u)'
    functionSourceFile: /src/pdns/pdns/recursordist/logger.cc
    functionUses: 0
    functionsReached:
    - getPerThread
    linkageType: ''
    returnType: Logger
    signature: Logger & Logger::operator<<(Urgency u)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 182
      start: 179
    functionDepth: 0
    functionLinenumber: 179
    functionLinenumberEnd: 182
    functionName: '& Logger::getPerThread()'
    functionSourceFile: /src/pdns/pdns/recursordist/logger.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Logger::PerThread
    signature: Logger::PerThread & Logger::getPerThread()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getPerThread
      Src: /src/pdns/pdns/recursordist/logger.cc:186,1
    - Dst: d_output::append
      Src: /src/pdns/pdns/recursordist/logger.cc:187,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ' s'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 189
      start: 184
    functionDepth: 0
    functionLinenumber: 184
    functionLinenumberEnd: 189
    functionName: '& Logger::operator<<(const string& s)'
    functionSourceFile: /src/pdns/pdns/recursordist/logger.cc
    functionUses: 0
    functionsReached:
    - getPerThread
    - d_output::append
    linkageType: ''
    returnType: Logger
    signature: Logger & Logger::operator<<(const string& s)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: string
      Src: /src/pdns/pdns/recursordist/logger.cc:193,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - s
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 195
      start: 191
    functionDepth: 0
    functionLinenumber: 191
    functionLinenumberEnd: 195
    functionName: '& Logger::operator<<(const char* s)'
    functionSourceFile: /src/pdns/pdns/recursordist/logger.cc
    functionUses: 0
    functionsReached:
    - string
    linkageType: ''
    returnType: Logger
    signature: Logger & Logger::operator<<(const char* s)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getPerThread
      Src: /src/pdns/pdns/recursordist/logger.cc:199,1
    - Dst: log
      Src: /src/pdns/pdns/recursordist/logger.cc:201,1
    - Dst: d_output::clear
      Src: /src/pdns/pdns/recursordist/logger.cc:202,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 205
      start: 197
    functionDepth: 1
    functionLinenumber: 197
    functionLinenumberEnd: 205
    functionName: '& Logger::operator<<(ostream& (&)(ostream&))'
    functionSourceFile: /src/pdns/pdns/recursordist/logger.cc
    functionUses: 0
    functionsReached:
    - getPerThread
    - d_output::clear
    - log
    linkageType: ''
    returnType: Logger
    signature: Logger & Logger::operator<<(ostream& (&)(ostream&))
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: toLogString
      Src: /src/pdns/pdns/recursordist/logger.cc:209,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ' d'
    argTypes:
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 212
      start: 207
    functionDepth: 0
    functionLinenumber: 207
    functionLinenumberEnd: 212
    functionName: '& Logger::operator<<(const DNSName& d)'
    functionSourceFile: /src/pdns/pdns/recursordist/logger.cc
    functionUses: 0
    functionsReached:
    - toLogString
    linkageType: ''
    returnType: Logger
    signature: Logger & Logger::operator<<(const DNSName& d)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: toLogString
      Src: /src/pdns/pdns/recursordist/logger.cc:217,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ' zone'
    argTypes:
    - ZoneName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 220
      start: 215
    functionDepth: 0
    functionLinenumber: 215
    functionLinenumberEnd: 220
    functionName: '& Logger::operator<<(const ZoneName& zone)'
    functionSourceFile: /src/pdns/pdns/recursordist/logger.cc
    functionUses: 0
    functionsReached:
    - toLogString
    linkageType: ''
    returnType: Logger
    signature: Logger & Logger::operator<<(const ZoneName& zone)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: toLogString
      Src: /src/pdns/pdns/recursordist/logger.cc:225,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ' ca'
    argTypes:
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 227
      start: 223
    functionDepth: 0
    functionLinenumber: 223
    functionLinenumberEnd: 227
    functionName: '& Logger::operator<<(const ComboAddress& ca)'
    functionSourceFile: /src/pdns/pdns/recursordist/logger.cc
    functionUses: 0
    functionsReached:
    - toLogString
    linkageType: ''
    returnType: Logger
    signature: Logger & Logger::operator<<(const ComboAddress& ca)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: toString
      Src: /src/pdns/pdns/recursordist/logger.cc:231,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ' sockaddr'
    argTypes:
    - SockaddrWrapper
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 233
      start: 229
    functionDepth: 0
    functionLinenumber: 229
    functionLinenumberEnd: 233
    functionName: '& Logger::operator<<(const SockaddrWrapper& sockaddr)'
    functionSourceFile: /src/pdns/pdns/recursordist/logger.cc
    functionUses: 0
    functionsReached:
    - toString
    linkageType: ''
    returnType: Logger
    signature: Logger & Logger::operator<<(const SockaddrWrapper& sockaddr)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: str
      Src: /src/pdns/pdns/recursordist/logger.cc:237,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/logger.cc:238,1
    - Dst: back
      Src: /src/pdns/pdns/recursordist/logger.cc:238,1
    - Dst: gettimeofday
      Src: /src/pdns/pdns/recursordist/logger.cc:240,1
    - Dst: static_cast<time_t>
      Src: /src/pdns/pdns/recursordist/logger.cc:242,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - ' start'
    - ' str'
    argTypes:
    - timeval
    - ostringstream
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 245
      start: 235
    functionDepth: 0
    functionLinenumber: 235
    functionLinenumberEnd: 245
    functionName: addTraceTS
    functionSourceFile: /src/pdns/pdns/recursordist/logger.cc
    functionUses: 0
    functionsReached:
    - back
    - str
    - gettimeofday
    - empty
    - static_cast<time_t>
    linkageType: ''
    returnType: void
    signature: void addTraceTS(const timeval& start, ostringstream& str)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 56
    functionDepth: 0
    functionLinenumber: 56
    functionLinenumberEnd: 56
    functionName: DomainInfo
    functionSourceFile: /src/pdns/pdns/recursordist/dnsbackend.hh
    functionUses: 53
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void DomainInfo()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - DomainInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 73
    functionDepth: 0
    functionLinenumber: 73
    functionLinenumberEnd: 76
    functionName: operator<(const DomainInfo& rhs) const
    functionSourceFile: /src/pdns/pdns/recursordist/dnsbackend.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool operator<(const DomainInfo& rhs) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getKindString
      Src: /src/pdns/pdns/recursordist/dnsbackend.hh:91,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 89
    functionDepth: 0
    functionLinenumber: 89
    functionLinenumberEnd: 92
    functionName: getKindString
    functionSourceFile: /src/pdns/pdns/recursordist/dnsbackend.hh
    functionUses: 7
    functionsReached:
    - getKindString
    linkageType: ''
    returnType: char
    signature: char * getKindString() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::array::at
      Src: /src/pdns/pdns/recursordist/dnsbackend.hh:97,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - kind
    argTypes:
    - enum DomainKind
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 94
    functionDepth: 0
    functionLinenumber: 94
    functionLinenumberEnd: 98
    functionName: getKindString
    functionSourceFile: /src/pdns/pdns/recursordist/dnsbackend.hh
    functionUses: 7
    functionsReached:
    - std::array::at
    linkageType: ''
    returnType: char
    signature: char * getKindString(enum DomainKind kind)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pdns_iequals
      Src: /src/pdns/pdns/recursordist/dnsbackend.hh:102,1
    - Dst: pdns_iequals
      Src: /src/pdns/pdns/recursordist/dnsbackend.hh:102,1
    - Dst: pdns_iequals
      Src: /src/pdns/pdns/recursordist/dnsbackend.hh:105,1
    - Dst: pdns_iequals
      Src: /src/pdns/pdns/recursordist/dnsbackend.hh:105,1
    - Dst: pdns_iequals
      Src: /src/pdns/pdns/recursordist/dnsbackend.hh:108,1
    - Dst: pdns_iequals
      Src: /src/pdns/pdns/recursordist/dnsbackend.hh:111,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 1
    argNames:
    - ' kind'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 100
    functionDepth: 0
    functionLinenumber: 100
    functionLinenumberEnd: 116
    functionName: stringToKind
    functionSourceFile: /src/pdns/pdns/recursordist/dnsbackend.hh
    functionUses: 4
    functionsReached:
    - pdns_iequals
    linkageType: ''
    returnType: DomainKind
    signature: DomainKind stringToKind(const string& kind)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 118
      start: 118
    functionDepth: 0
    functionLinenumber: 118
    functionLinenumberEnd: 118
    functionName: isPrimaryType
    functionSourceFile: /src/pdns/pdns/recursordist/dnsbackend.hh
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool isPrimaryType() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 119
      start: 119
    functionDepth: 0
    functionLinenumber: 119
    functionLinenumberEnd: 119
    functionName: isSecondaryType
    functionSourceFile: /src/pdns/pdns/recursordist/dnsbackend.hh
    functionUses: 9
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool isSecondaryType() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 120
    functionDepth: 0
    functionLinenumber: 120
    functionLinenumberEnd: 120
    functionName: isCatalogType
    functionSourceFile: /src/pdns/pdns/recursordist/dnsbackend.hh
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool isCatalogType() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::any_of
      Src: /src/pdns/pdns/recursordist/dnsbackend.hh:124,1
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/dnsbackend.hh:124,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/dnsbackend.hh:124,1
    - Dst: ComboAddress::addressOnlyEqual
      Src: /src/pdns/pdns/recursordist/dnsbackend.hh:124,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - ' ipAddress'
    argTypes:
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 125
      start: 122
    functionDepth: 0
    functionLinenumber: 122
    functionLinenumberEnd: 125
    functionName: isPrimary
    functionSourceFile: /src/pdns/pdns/recursordist/dnsbackend.hh
    functionUses: 1
    functionsReached:
    - std::any_of
    - ComboAddress::addressOnlyEqual
    - end
    - begin
    linkageType: ''
    returnType: bool
    signature: bool isPrimary(const ComboAddress& ipAddress) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/dnsbackend.hh:138,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/dnsbackend.hh:138,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/dnsbackend.hh:138,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 3
    argNames:
    - new_ip
    - new_nameserver
    - new_account
    argTypes:
    - string
    - string
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 138
      start: 137
    functionDepth: 0
    functionLinenumber: 137
    functionLinenumberEnd: 138
    functionName: AutoPrimary
    functionSourceFile: /src/pdns/pdns/recursordist/dnsbackend.hh
    functionUses: 3
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void AutoPrimary(string new_ip, string new_nameserver, string new_account)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 188
      start: 188
    functionDepth: 0
    functionLinenumber: 188
    functionLinenumberEnd: 188
    functionName: ~DNSBackend()
    functionSourceFile: /src/pdns/pdns/recursordist/dnsbackend.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~DNSBackend()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 196
      start: 193
    functionDepth: 0
    functionLinenumber: 193
    functionLinenumberEnd: 196
    functionName: DNSBackend::replaceRRSet
    functionSourceFile: /src/pdns/pdns/recursordist/dnsbackend.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool replaceRRSet(domainid_t /* domain_id */, const DNSName& /* qname
      */, const QType& /* qt */, const vector<DNSResourceRecord>& /* rrset */)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 201
      start: 198
    functionDepth: 0
    functionLinenumber: 198
    functionLinenumberEnd: 201
    functionName: DNSBackend::listSubZone
    functionSourceFile: /src/pdns/pdns/recursordist/dnsbackend.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool listSubZone(const ZoneName& /* zone */, domainid_t /* domain_id
      */)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 2
    argCount: 1
    argNames:
    - ' name'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 207
      start: 204
    functionDepth: 0
    functionLinenumber: 204
    functionLinenumberEnd: 207
    functionName: DNSBackend::isDnssecDomainMetadata
    functionSourceFile: /src/pdns/pdns/recursordist/dnsbackend.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool isDnssecDomainMetadata(const string& name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 208
      start: 208
    functionDepth: 0
    functionLinenumber: 208
    functionLinenumberEnd: 208
    functionName: DNSBackend::getAllDomainMetadata
    functionSourceFile: /src/pdns/pdns/recursordist/dnsbackend.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool getAllDomainMetadata(const ZoneName& /* name */, std::map<std::string,
      std::vector<std::string>>& /* meta */)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 209
      start: 209
    functionDepth: 0
    functionLinenumber: 209
    functionLinenumberEnd: 209
    functionName: DNSBackend::getDomainMetadata
    functionSourceFile: /src/pdns/pdns/recursordist/dnsbackend.hh
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool getDomainMetadata(const ZoneName& /* name */, const std::string&
      /* kind */, std::vector<std::string>& /* meta */)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: DNSBackend::getDomainMetadata
      Src: /src/pdns/pdns/recursordist/dnsbackend.hh:213,1
    - Dst: std::vector::empty
      Src: /src/pdns/pdns/recursordist/dnsbackend.hh:214,1
    - Dst: std::vector::begin
      Src: /src/pdns/pdns/recursordist/dnsbackend.hh:215,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - ' name'
    - ' kind'
    - ' value'
    argTypes:
    - ZoneName
    - std::string
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 220
      start: 210
    functionDepth: 0
    functionLinenumber: 210
    functionLinenumberEnd: 220
    functionName: DNSBackend::getDomainMetadataOne
    functionSourceFile: /src/pdns/pdns/recursordist/dnsbackend.hh
    functionUses: 0
    functionsReached:
    - std::vector::begin
    - DNSBackend::getDomainMetadata
    - std::vector::empty
    linkageType: ''
    returnType: bool
    signature: bool getDomainMetadataOne(const ZoneName& name, const std::string&
      kind, std::string& value)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 222
      start: 222
    functionDepth: 0
    functionLinenumber: 222
    functionLinenumberEnd: 222
    functionName: DNSBackend::setDomainMetadata
    functionSourceFile: /src/pdns/pdns/recursordist/dnsbackend.hh
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool setDomainMetadata(const ZoneName& /* name */, const std::string&
      /* kind */, const std::vector<std::string>& /* meta */)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSBackend::setDomainMetadata
      Src: /src/pdns/pdns/recursordist/dnsbackend.hh:226,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' name'
    - ' kind'
    - ' value'
    argTypes:
    - ZoneName
    - std::string
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 227
      start: 223
    functionDepth: 0
    functionLinenumber: 223
    functionLinenumberEnd: 227
    functionName: DNSBackend::setDomainMetadataOne
    functionSourceFile: /src/pdns/pdns/recursordist/dnsbackend.hh
    functionUses: 0
    functionsReached:
    - DNSBackend::setDomainMetadata
    linkageType: ''
    returnType: bool
    signature: bool setDomainMetadataOne(const ZoneName& name, const std::string&
      kind, const std::string& value)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 243
      start: 243
    functionDepth: 0
    functionLinenumber: 243
    functionLinenumberEnd: 243
    functionName: DNSBackend::getDomainKeys
    functionSourceFile: /src/pdns/pdns/recursordist/dnsbackend.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool getDomainKeys(const ZoneName& /* name */, std::vector<KeyData>&
      /* keys */)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 244
      start: 244
    functionDepth: 0
    functionLinenumber: 244
    functionLinenumberEnd: 244
    functionName: DNSBackend::removeDomainKey
    functionSourceFile: /src/pdns/pdns/recursordist/dnsbackend.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool removeDomainKey(const ZoneName& /* name */, unsigned int /* id
      */)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 245
      start: 245
    functionDepth: 0
    functionLinenumber: 245
    functionLinenumberEnd: 245
    functionName: DNSBackend::addDomainKey
    functionSourceFile: /src/pdns/pdns/recursordist/dnsbackend.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool addDomainKey(const ZoneName& /* name */, const KeyData& /* key
      */, int64_t& /* id */)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 246
      start: 246
    functionDepth: 0
    functionLinenumber: 246
    functionLinenumberEnd: 246
    functionName: DNSBackend::activateDomainKey
    functionSourceFile: /src/pdns/pdns/recursordist/dnsbackend.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool activateDomainKey(const ZoneName& /* name */, unsigned int /*
      id */)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 247
      start: 247
    functionDepth: 0
    functionLinenumber: 247
    functionLinenumberEnd: 247
    functionName: DNSBackend::deactivateDomainKey
    functionSourceFile: /src/pdns/pdns/recursordist/dnsbackend.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool deactivateDomainKey(const ZoneName& /* name */, unsigned int /*
      id */)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 248
      start: 248
    functionDepth: 0
    functionLinenumber: 248
    functionLinenumberEnd: 248
    functionName: DNSBackend::publishDomainKey
    functionSourceFile: /src/pdns/pdns/recursordist/dnsbackend.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool publishDomainKey(const ZoneName& /* name */, unsigned int /* id
      */)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 249
      start: 249
    functionDepth: 0
    functionLinenumber: 249
    functionLinenumberEnd: 249
    functionName: DNSBackend::unpublishDomainKey
    functionSourceFile: /src/pdns/pdns/recursordist/dnsbackend.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool unpublishDomainKey(const ZoneName& /* name */, unsigned int /*
      id */)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 251
      start: 251
    functionDepth: 0
    functionLinenumber: 251
    functionLinenumberEnd: 251
    functionName: DNSBackend::setTSIGKey
    functionSourceFile: /src/pdns/pdns/recursordist/dnsbackend.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool setTSIGKey(const DNSName& /* name */, const DNSName& /* algorithm
      */, const string& /* content */)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 252
      start: 252
    functionDepth: 0
    functionLinenumber: 252
    functionLinenumberEnd: 252
    functionName: DNSBackend::getTSIGKey
    functionSourceFile: /src/pdns/pdns/recursordist/dnsbackend.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool getTSIGKey(const DNSName& /* name */, DNSName& /* algorithm */,
      string& /* content */)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 253
      start: 253
    functionDepth: 0
    functionLinenumber: 253
    functionLinenumberEnd: 253
    functionName: DNSBackend::getTSIGKeys
    functionSourceFile: /src/pdns/pdns/recursordist/dnsbackend.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool getTSIGKeys(std::vector<struct TSIGKey>& /* keys */)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 254
      start: 254
    functionDepth: 0
    functionLinenumber: 254
    functionLinenumberEnd: 254
    functionName: DNSBackend::deleteTSIGKey
    functionSourceFile: /src/pdns/pdns/recursordist/dnsbackend.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool deleteTSIGKey(const DNSName& /* name */)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PDNSException
      Src: /src/pdns/pdns/recursordist/dnsbackend.hh:258,1
    - Dst: toLogString
      Src: /src/pdns/pdns/recursordist/dnsbackend.hh:258,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - ' qname'
    argTypes:
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 259
      start: 256
    functionDepth: 0
    functionLinenumber: 256
    functionLinenumberEnd: 259
    functionName: DNSBackend::getBeforeAndAfterNamesAbsolute
    functionSourceFile: /src/pdns/pdns/recursordist/dnsbackend.hh
    functionUses: 1
    functionsReached:
    - PDNSException
    - toLogString
    linkageType: ''
    returnType: bool
    signature: bool getBeforeAndAfterNamesAbsolute(domainid_t /* id */, const DNSName&
      qname, DNSName& /* unhashed */, DNSName& /* before */, DNSName& /* after */)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 266
      start: 263
    functionDepth: 0
    functionLinenumber: 263
    functionLinenumberEnd: 266
    functionName: DNSBackend::updateDNSSECOrderNameAndAuth
    functionSourceFile: /src/pdns/pdns/recursordist/dnsbackend.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool updateDNSSECOrderNameAndAuth(domainid_t /* domain_id */, const
      DNSName& /* qname */, const DNSName& /* ordername */, bool /* auth */, const
      uint16_t /* qtype */, bool /* isNsec3 */)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 271
      start: 268
    functionDepth: 0
    functionLinenumber: 268
    functionLinenumberEnd: 271
    functionName: DNSBackend::updateEmptyNonTerminals
    functionSourceFile: /src/pdns/pdns/recursordist/dnsbackend.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool updateEmptyNonTerminals(domainid_t /* domain_id */, set<DNSName>&
      /* insert */, set<DNSName>& /* erase */, bool /* remove */)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getCapabilities
      Src: /src/pdns/pdns/recursordist/dnsbackend.hh:275,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 276
      start: 273
    functionDepth: 0
    functionLinenumber: 273
    functionLinenumberEnd: 276
    functionName: DNSBackend::doesDNSSEC
    functionSourceFile: /src/pdns/pdns/recursordist/dnsbackend.hh
    functionUses: 0
    functionsReached:
    - getCapabilities
    linkageType: ''
    returnType: bool
    signature: bool doesDNSSEC()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 284
      start: 281
    functionDepth: 0
    functionLinenumber: 281
    functionLinenumberEnd: 284
    functionName: DNSBackend::listComments
    functionSourceFile: /src/pdns/pdns/recursordist/dnsbackend.hh
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool listComments(domainid_t /* domain_id */)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 289
      start: 286
    functionDepth: 0
    functionLinenumber: 286
    functionLinenumberEnd: 289
    functionName: DNSBackend::getComment
    functionSourceFile: /src/pdns/pdns/recursordist/dnsbackend.hh
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool getComment(Comment& /* comment */)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 294
      start: 291
    functionDepth: 0
    functionLinenumber: 291
    functionLinenumberEnd: 294
    functionName: DNSBackend::feedComment
    functionSourceFile: /src/pdns/pdns/recursordist/dnsbackend.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool feedComment(const Comment& /* comment */)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 299
      start: 296
    functionDepth: 0
    functionLinenumber: 296
    functionLinenumberEnd: 299
    functionName: DNSBackend::replaceComments
    functionSourceFile: /src/pdns/pdns/recursordist/dnsbackend.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool replaceComments(const domainid_t /* domain_id */, const DNSName&
      /* qname */, const QType& /* qt */, const vector<Comment>& /* comments */)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 309
      start: 306
    functionDepth: 0
    functionLinenumber: 306
    functionLinenumberEnd: 309
    functionName: DNSBackend::startTransaction
    functionSourceFile: /src/pdns/pdns/recursordist/dnsbackend.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool startTransaction(const ZoneName& /* qname */, domainid_t /* id
      */ = UnknownDomainID)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 315
      start: 312
    functionDepth: 0
    functionLinenumber: 312
    functionLinenumberEnd: 315
    functionName: DNSBackend::commitTransaction
    functionSourceFile: /src/pdns/pdns/recursordist/dnsbackend.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool commitTransaction()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 321
      start: 318
    functionDepth: 0
    functionLinenumber: 318
    functionLinenumberEnd: 321
    functionName: DNSBackend::abortTransaction
    functionSourceFile: /src/pdns/pdns/recursordist/dnsbackend.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool abortTransaction()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 326
      start: 323
    functionDepth: 0
    functionLinenumber: 323
    functionLinenumberEnd: 326
    functionName: DNSBackend::inTransaction
    functionSourceFile: /src/pdns/pdns/recursordist/dnsbackend.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool inTransaction()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 330
      start: 328
    functionDepth: 0
    functionLinenumber: 328
    functionLinenumberEnd: 330
    functionName: DNSBackend::reload
    functionSourceFile: /src/pdns/pdns/recursordist/dnsbackend.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void reload()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 334
      start: 332
    functionDepth: 0
    functionLinenumber: 332
    functionLinenumberEnd: 334
    functionName: DNSBackend::rediscover
    functionSourceFile: /src/pdns/pdns/recursordist/dnsbackend.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void rediscover(string* /* status */ = nullptr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 340
      start: 337
    functionDepth: 0
    functionLinenumber: 337
    functionLinenumberEnd: 340
    functionName: DNSBackend::feedRecord
    functionSourceFile: /src/pdns/pdns/recursordist/dnsbackend.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool feedRecord(const DNSResourceRecord& /* rr */, const DNSName& /*
      ordername */, bool /* ordernameIsNSEC3 */ = false)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 344
      start: 341
    functionDepth: 0
    functionLinenumber: 341
    functionLinenumberEnd: 344
    functionName: DNSBackend::feedEnts
    functionSourceFile: /src/pdns/pdns/recursordist/dnsbackend.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool feedEnts(domainid_t /* domain_id */, map<DNSName, bool>& /* nonterm
      */)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 348
      start: 345
    functionDepth: 0
    functionLinenumber: 345
    functionLinenumberEnd: 348
    functionName: DNSBackend::feedEnts3
    functionSourceFile: /src/pdns/pdns/recursordist/dnsbackend.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool feedEnts3(domainid_t /* domain_id */, const DNSName& /* domain
      */, map<DNSName, bool>& /* nonterm */, const NSEC3PARAMRecordContent& /* ns3prc
      */, bool /* narrow */)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 354
      start: 351
    functionDepth: 0
    functionLinenumber: 351
    functionLinenumberEnd: 354
    functionName: DNSBackend::getDomainInfo
    functionSourceFile: /src/pdns/pdns/recursordist/dnsbackend.hh
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool getDomainInfo(const ZoneName& /* domain */, DomainInfo& /* di
      */, bool /* getSerial */ = true)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 358
      start: 356
    functionDepth: 0
    functionLinenumber: 356
    functionLinenumberEnd: 358
    functionName: DNSBackend::getUnfreshSecondaryInfos
    functionSourceFile: /src/pdns/pdns/recursordist/dnsbackend.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void getUnfreshSecondaryInfos(vector<DomainInfo>* /* domains */)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSBackend::getDomainMetadata
      Src: /src/pdns/pdns/recursordist/dnsbackend.hh:364,1
    - Dst: set<string>*::insert
      Src: /src/pdns/pdns/recursordist/dnsbackend.hh:365,1
    - Dst: std::vector::begin
      Src: /src/pdns/pdns/recursordist/dnsbackend.hh:365,1
    - Dst: std::vector::end
      Src: /src/pdns/pdns/recursordist/dnsbackend.hh:365,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ' domain'
    - ips
    argTypes:
    - ZoneName
    - set<string>*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 366
      start: 361
    functionDepth: 2
    functionLinenumber: 361
    functionLinenumberEnd: 366
    functionName: DNSBackend::alsoNotifies
    functionSourceFile: /src/pdns/pdns/recursordist/dnsbackend.hh
    functionUses: 0
    functionsReached:
    - std::vector::begin
    - DNSBackend::getDomainMetadata
    - std::vector::end
    - set<string>*::insert
    linkageType: ''
    returnType: void
    signature: void alsoNotifies(const ZoneName& domain, set<string>* ips)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 371
      start: 369
    functionDepth: 0
    functionLinenumber: 369
    functionLinenumberEnd: 371
    functionName: DNSBackend::getUpdatedPrimaries
    functionSourceFile: /src/pdns/pdns/recursordist/dnsbackend.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void getUpdatedPrimaries(vector<DomainInfo>& /* domains */, std::unordered_set<DNSName>&
      /* catalogs */, CatalogHashMap& /* catalogHashes */)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 377
      start: 374
    functionDepth: 0
    functionLinenumber: 374
    functionLinenumberEnd: 377
    functionName: DNSBackend::getCatalogMembers
    functionSourceFile: /src/pdns/pdns/recursordist/dnsbackend.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool getCatalogMembers(const ZoneName& /* catalog */, vector<CatalogInfo>&
      /* members */, CatalogInfo::CatalogType /* type */)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 382
      start: 380
    functionDepth: 0
    functionLinenumber: 380
    functionLinenumberEnd: 382
    functionName: DNSBackend::setStale
    functionSourceFile: /src/pdns/pdns/recursordist/dnsbackend.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setStale(domainid_t /* domain_id */)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 387
      start: 385
    functionDepth: 0
    functionLinenumber: 385
    functionLinenumberEnd: 387
    functionName: DNSBackend::setFresh
    functionSourceFile: /src/pdns/pdns/recursordist/dnsbackend.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setFresh(domainid_t /* domain_id */)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 392
      start: 390
    functionDepth: 0
    functionLinenumber: 390
    functionLinenumberEnd: 392
    functionName: DNSBackend::setNotified
    functionSourceFile: /src/pdns/pdns/recursordist/dnsbackend.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setNotified(domainid_t /* id */, uint32_t /* serial */)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 398
      start: 395
    functionDepth: 0
    functionLinenumber: 395
    functionLinenumberEnd: 398
    functionName: DNSBackend::setPrimaries
    functionSourceFile: /src/pdns/pdns/recursordist/dnsbackend.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool setPrimaries(const ZoneName& /* domain */, const vector<ComboAddress>&
      /* primaries */)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 404
      start: 401
    functionDepth: 0
    functionLinenumber: 401
    functionLinenumberEnd: 404
    functionName: DNSBackend::setKind
    functionSourceFile: /src/pdns/pdns/recursordist/dnsbackend.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool setKind(const ZoneName& /* domain */, const DomainInfo::DomainKind
      /* kind */)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 410
      start: 407
    functionDepth: 0
    functionLinenumber: 407
    functionLinenumberEnd: 410
    functionName: DNSBackend::setOptions
    functionSourceFile: /src/pdns/pdns/recursordist/dnsbackend.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool setOptions(const ZoneName& /* domain */, const string& /* options
      */)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 416
      start: 413
    functionDepth: 0
    functionLinenumber: 413
    functionLinenumberEnd: 416
    functionName: DNSBackend::setCatalog
    functionSourceFile: /src/pdns/pdns/recursordist/dnsbackend.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool setCatalog(const ZoneName& /* domain */, const ZoneName& /* catalog
      */)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 422
      start: 419
    functionDepth: 0
    functionLinenumber: 419
    functionLinenumberEnd: 422
    functionName: DNSBackend::setAccount
    functionSourceFile: /src/pdns/pdns/recursordist/dnsbackend.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool setAccount(const ZoneName& /* domain */, const string& /* account
      */)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 431
      start: 428
    functionDepth: 0
    functionLinenumber: 428
    functionLinenumberEnd: 431
    functionName: DNSBackend::autoPrimaryAdd
    functionSourceFile: /src/pdns/pdns/recursordist/dnsbackend.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool autoPrimaryAdd(const struct AutoPrimary& /* primary */)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 437
      start: 434
    functionDepth: 0
    functionLinenumber: 434
    functionLinenumberEnd: 437
    functionName: DNSBackend::autoPrimaryRemove
    functionSourceFile: /src/pdns/pdns/recursordist/dnsbackend.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool autoPrimaryRemove(const struct AutoPrimary& /* primary */)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 443
      start: 440
    functionDepth: 0
    functionLinenumber: 440
    functionLinenumberEnd: 443
    functionName: DNSBackend::autoPrimariesList
    functionSourceFile: /src/pdns/pdns/recursordist/dnsbackend.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool autoPrimariesList(std::vector<AutoPrimary>& /* primaries */)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 449
      start: 446
    functionDepth: 0
    functionLinenumber: 446
    functionLinenumberEnd: 449
    functionName: DNSBackend::autoPrimaryBackend
    functionSourceFile: /src/pdns/pdns/recursordist/dnsbackend.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool autoPrimaryBackend(const string& /* ip */, const ZoneName& /*
      domain */, const vector<DNSResourceRecord>& /* nsset */, string* /* nameserver
      */, string* /* account */, DNSBackend** /* db */)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 455
      start: 452
    functionDepth: 0
    functionLinenumber: 452
    functionLinenumberEnd: 455
    functionName: DNSBackend::createDomain
    functionSourceFile: /src/pdns/pdns/recursordist/dnsbackend.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool createDomain(const ZoneName& /* domain */, const DomainInfo::DomainKind
      /* kind */, const vector<ComboAddress>& /* primaries */, const string& /* account
      */)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 461
      start: 458
    functionDepth: 0
    functionLinenumber: 458
    functionLinenumberEnd: 461
    functionName: DNSBackend::createSecondaryDomain
    functionSourceFile: /src/pdns/pdns/recursordist/dnsbackend.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool createSecondaryDomain(const string& /* ip */, const ZoneName&
      /* domain */, const string& /* nameserver */, const string& /* account */)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 467
      start: 464
    functionDepth: 0
    functionLinenumber: 464
    functionLinenumberEnd: 467
    functionName: DNSBackend::deleteDomain
    functionSourceFile: /src/pdns/pdns/recursordist/dnsbackend.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool deleteDomain(const ZoneName& /* domain */)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 472
      start: 469
    functionDepth: 0
    functionLinenumber: 469
    functionLinenumberEnd: 472
    functionName: DNSBackend::directBackendCmd
    functionSourceFile: /src/pdns/pdns/recursordist/dnsbackend.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: string
    signature: string directBackendCmd(const string& /* query */)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 482
      start: 480
    functionDepth: 0
    functionLinenumber: 480
    functionLinenumberEnd: 482
    functionName: DNSBackend::viewList
    functionSourceFile: /src/pdns/pdns/recursordist/dnsbackend.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void viewList(vector<string>& /* result */)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 486
      start: 484
    functionDepth: 0
    functionLinenumber: 484
    functionLinenumberEnd: 486
    functionName: DNSBackend::viewListZones
    functionSourceFile: /src/pdns/pdns/recursordist/dnsbackend.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void viewListZones(const string& /* view */, vector<ZoneName>& /* result
      */)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 491
      start: 488
    functionDepth: 0
    functionLinenumber: 488
    functionLinenumberEnd: 491
    functionName: DNSBackend::viewAddZone
    functionSourceFile: /src/pdns/pdns/recursordist/dnsbackend.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool viewAddZone(const string& /* view */, const ZoneName& /* zone
      */)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 496
      start: 493
    functionDepth: 0
    functionLinenumber: 493
    functionLinenumberEnd: 496
    functionName: DNSBackend::viewDelZone
    functionSourceFile: /src/pdns/pdns/recursordist/dnsbackend.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool viewDelZone(const string& /* view */, const ZoneName& /* zone
      */)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 501
      start: 498
    functionDepth: 0
    functionLinenumber: 498
    functionLinenumberEnd: 501
    functionName: DNSBackend::networkSet
    functionSourceFile: /src/pdns/pdns/recursordist/dnsbackend.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool networkSet(const Netmask& /* net */, std::string& /* tag */)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 506
      start: 503
    functionDepth: 0
    functionLinenumber: 503
    functionLinenumberEnd: 506
    functionName: DNSBackend::networkList
    functionSourceFile: /src/pdns/pdns/recursordist/dnsbackend.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool networkList(vector<pair<Netmask, string>>& /* networks */)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 512
      start: 509
    functionDepth: 0
    functionLinenumber: 509
    functionLinenumberEnd: 512
    functionName: DNSBackend::hasCreatedLocalFiles
    functionSourceFile: /src/pdns/pdns/recursordist/dnsbackend.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool hasCreatedLocalFiles() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 516
      start: 514
    functionDepth: 0
    functionLinenumber: 514
    functionLinenumberEnd: 516
    functionName: DNSBackend::rectifyZoneHook
    functionSourceFile: /src/pdns/pdns/recursordist/dnsbackend.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void rectifyZoneHook(domainid_t /*domain_id*/, bool /*before*/) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 518
      start: 518
    functionDepth: 0
    functionLinenumber: 518
    functionLinenumberEnd: 518
    functionName: '& getPrefix()'
    functionSourceFile: /src/pdns/pdns/recursordist/dnsbackend.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: string
    signature: string & getPrefix()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: clear
      Src: /src/pdns/pdns/recursordist/dnsbackend.hh:528,1
    - Dst: DNSBackend::get
      Src: /src/pdns/pdns/recursordist/dnsbackend.hh:529,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ' rec'
    - ' invalid'
    argTypes:
    - DNSResourceRecord
    - std::vector<std::pair<std::string, std::string>>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 530
      start: 526
    functionDepth: 1
    functionLinenumber: 526
    functionLinenumberEnd: 530
    functionName: DNSBackend::get_unsafe
    functionSourceFile: /src/pdns/pdns/recursordist/dnsbackend.hh
    functionUses: 0
    functionsReached:
    - clear
    - DNSBackend::get
    linkageType: ''
    returnType: bool
    signature: bool get_unsafe(DNSResourceRecord& rec, std::vector<std::pair<std::string,
      std::string>>& invalid)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 534
      start: 532
    functionDepth: 0
    functionLinenumber: 532
    functionLinenumberEnd: 534
    functionName: DNSBackend::flush
    functionSourceFile: /src/pdns/pdns/recursordist/dnsbackend.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void flush()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/dnsbackend.hh:551,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - name
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 551
      start: 550
    functionDepth: 0
    functionLinenumber: 550
    functionLinenumberEnd: 551
    functionName: BackendFactory::BackendFactory
    functionSourceFile: /src/pdns/pdns/recursordist/dnsbackend.hh
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void BackendFactory(string name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 552
      start: 552
    functionDepth: 0
    functionLinenumber: 552
    functionLinenumberEnd: 552
    functionName: ~BackendFactory()
    functionSourceFile: /src/pdns/pdns/recursordist/dnsbackend.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~BackendFactory()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BackendFactory::make
      Src: /src/pdns/pdns/recursordist/dnsbackend.hh:556,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' suffix'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 557
      start: 554
    functionDepth: 0
    functionLinenumber: 554
    functionLinenumberEnd: 557
    functionName: BackendFactory::makeMetadataOnly
    functionSourceFile: /src/pdns/pdns/recursordist/dnsbackend.hh
    functionUses: 0
    functionsReached:
    - BackendFactory::make
    linkageType: ''
    returnType: DNSBackend
    signature: DNSBackend * makeMetadataOnly(const string& suffix)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 558
      start: 558
    functionDepth: 0
    functionLinenumber: 558
    functionLinenumberEnd: 558
    functionName: BackendFactory::declareArguments
    functionSourceFile: /src/pdns/pdns/recursordist/dnsbackend.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void declareArguments(const string& /* suffix */ = "")
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' reason_'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 595
      start: 594
    functionDepth: 0
    functionLinenumber: 594
    functionLinenumberEnd: 595
    functionName: DBException::DBException
    functionSourceFile: /src/pdns/pdns/recursordist/dnsbackend.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void DBException(const string& reason_)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 601
      start: 600
    functionDepth: 0
    functionLinenumber: 600
    functionLinenumberEnd: 601
    functionName: SOAData
    functionSourceFile: /src/pdns/pdns/recursordist/dnsbackend.hh
    functionUses: 18
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void SOAData()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 604
      start: 604
    functionDepth: 0
    functionLinenumber: 604
    functionLinenumberEnd: 604
    functionName: '& qname() const'
    functionSourceFile: /src/pdns/pdns/recursordist/dnsbackend.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: DNSName
    signature: DNSName & qname() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: min
      Src: /src/pdns/pdns/recursordist/dnsbackend.hh:620,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 620
      start: 620
    functionDepth: 0
    functionLinenumber: 620
    functionLinenumberEnd: 620
    functionName: getNegativeTTL
    functionSourceFile: /src/pdns/pdns/recursordist/dnsbackend.hh
    functionUses: 5
    functionsReached:
    - min
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t getNegativeTTL() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_TEST_MESSAGE
      Src: /src/pdns/pdns/recursordist/test-signers.cc:303,1
    - Dst: DNSCryptoKeyEngine::listAllAlgosWithBackend
      Src: /src/pdns/pdns/recursordist/test-signers.cc:304,1
    - Dst: BOOST_TEST_MESSAGE
      Src: /src/pdns/pdns/recursordist/test-signers.cc:306,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/test-signers.cc:306,1
    - Dst: BOOST_TEST_MESSAGE
      Src: /src/pdns/pdns/recursordist/test-signers.cc:309,1
    - Dst: addSignerParams
      Src: /src/pdns/pdns/recursordist/test-signers.cc:311,1
    - Dst: addSignerParams
      Src: /src/pdns/pdns/recursordist/test-signers.cc:314,1
    - Dst: addSignerParams
      Src: /src/pdns/pdns/recursordist/test-signers.cc:319,1
    - Dst: addSignerParams
      Src: /src/pdns/pdns/recursordist/test-signers.cc:323,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 325
      start: 301
    functionDepth: 0
    functionLinenumber: 301
    functionLinenumberEnd: 325
    functionName: Fixture
    functionSourceFile: /src/pdns/pdns/recursordist/test-signers.cc
    functionUses: 2
    functionsReached:
    - DNSCryptoKeyEngine::listAllAlgosWithBackend
    - BOOST_TEST_MESSAGE
    - addSignerParams
    - std::to_string
    linkageType: ''
    returnType: void
    signature: void Fixture()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_TEST_MESSAGE
      Src: /src/pdns/pdns/recursordist/test-signers.cc:329,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/test-signers.cc:329,1
    - Dst: insert_or_assign
      Src: /src/pdns/pdns/recursordist/test-signers.cc:330,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - algorithm
    - ' name'
    - ' params'
    argTypes:
    - uint8_t
    - std::string
    - SignerParams
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 331
      start: 327
    functionDepth: 0
    functionLinenumber: 327
    functionLinenumberEnd: 331
    functionName: addSignerParams
    functionSourceFile: /src/pdns/pdns/recursordist/test-signers.cc
    functionUses: 2
    functionsReached:
    - insert_or_assign
    - BOOST_TEST_MESSAGE
    - std::to_string
    linkageType: ''
    returnType: void
    signature: void addSignerParams(const uint8_t algorithm, const std::string& name,
      const SignerParams& params)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: DNSKEYRecordContent::DNSKEYRecordContent
      Src: /src/pdns/pdns/recursordist/test-signers.cc:339,1
    - Dst: std::shared_ptr<DNSCryptoKeyEngine>
      Src: /src/pdns/pdns/recursordist/test-signers.cc:340,1
    - Dst: DNSCryptoKeyEngine::makeFromISCString
      Src: /src/pdns/pdns/recursordist/test-signers.cc:340,1
    - Dst: DNSSECPrivateKey::setKey
      Src: /src/pdns/pdns/recursordist/test-signers.cc:342,1
    - Dst: DNSSECPrivateKey::getAlgorithm
      Src: /src/pdns/pdns/recursordist/test-signers.cc:346,1
    - Dst: RRSIGRecordContent::RRSIGRecordContent
      Src: /src/pdns/pdns/recursordist/test-signers.cc:348,1
    - Dst: DNSSECPrivateKey::getAlgorithm
      Src: /src/pdns/pdns/recursordist/test-signers.cc:352,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-signers.cc:353,1
    - Dst: sortedRecords_t::insert
      Src: /src/pdns/pdns/recursordist/test-signers.cc:356,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/recursordist/test-signers.cc:356,1
    - Dst: sortedRecords_t::insert
      Src: /src/pdns/pdns/recursordist/test-signers.cc:360,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/recursordist/test-signers.cc:360,1
    - Dst: sortedRecords_t::cbegin
      Src: /src/pdns/pdns/recursordist/test-signers.cc:366,1
    - Dst: getType
      Src: /src/pdns/pdns/recursordist/test-signers.cc:366,1
    - Dst: DNSName::countLabels
      Src: /src/pdns/pdns/recursordist/test-signers.cc:367,1
    - Dst: DNSSECPrivateKey::getTag
      Src: /src/pdns/pdns/recursordist/test-signers.cc:368,1
    - Dst: DNSSECPrivateKey::getAlgorithm
      Src: /src/pdns/pdns/recursordist/test-signers.cc:369,1
    - Dst: getMessageForRRSET
      Src: /src/pdns/pdns/recursordist/test-signers.cc:371,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-signers.cc:373,1
    - Dst: makeHexDump
      Src: /src/pdns/pdns/recursordist/test-signers.cc:373,1
    - Dst: auto::sign
      Src: /src/pdns/pdns/recursordist/test-signers.cc:375,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-signers.cc:378,1
    - Dst: auto::verify
      Src: /src/pdns/pdns/recursordist/test-signers.cc:378,1
    - Dst: Base64Encode
      Src: /src/pdns/pdns/recursordist/test-signers.cc:381,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-signers.cc:382,1
    - Dst: B64Decode
      Src: /src/pdns/pdns/recursordist/test-signers.cc:386,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-signers.cc:388,1
    - Dst: auto::verify
      Src: /src/pdns/pdns/recursordist/test-signers.cc:388,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 26
    argCount: 1
    argNames:
    - ' signer'
    argTypes:
    - SignerParams
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 390
      start: 337
    functionDepth: 2
    functionLinenumber: 337
    functionLinenumberEnd: 390
    functionName: checkRR
    functionSourceFile: /src/pdns/pdns/recursordist/test-signers.cc
    functionUses: 1
    functionsReached:
    - auto::verify
    - DNSCryptoKeyEngine::makeFromISCString
    - DNSSECPrivateKey::setKey
    - RRSIGRecordContent::RRSIGRecordContent
    - makeHexDump
    - sortedRecords_t::cbegin
    - B64Decode
    - DNSSECPrivateKey::getAlgorithm
    - DNSRecordContent::make
    - getType
    - std::shared_ptr<DNSCryptoKeyEngine>
    - DNSName
    - sortedRecords_t::insert
    - auto::sign
    - DNSSECPrivateKey::getTag
    - DNSKEYRecordContent::DNSKEYRecordContent
    - getMessageForRRSET
    - DNSName::countLabels
    - BOOST_CHECK_EQUAL
    - BOOST_CHECK
    - Base64Encode
    linkageType: ''
    returnType: void
    signature: void checkRR(const SignerParams& signer)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-signers.cc:394,1
    - Dst: std::shared_ptr<DNSCryptoKeyEngine>::getAlgorithm
      Src: /src/pdns/pdns/recursordist/test-signers.cc:394,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-signers.cc:395,1
    - Dst: std::shared_ptr<DNSCryptoKeyEngine>::getBits
      Src: /src/pdns/pdns/recursordist/test-signers.cc:395,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-signers.cc:398,1
    - Dst: std::shared_ptr<DNSCryptoKeyEngine>::checkKey
      Src: /src/pdns/pdns/recursordist/test-signers.cc:398,1
    - Dst: vector::empty
      Src: /src/pdns/pdns/recursordist/test-signers.cc:399,1
    - Dst: BOOST_TEST_MESSAGE
      Src: /src/pdns/pdns/recursordist/test-signers.cc:400,1
    - Dst: std::shared_ptr<DNSCryptoKeyEngine>::getName
      Src: /src/pdns/pdns/recursordist/test-signers.cc:400,1
    - Dst: BOOST_TEST_MESSAGE
      Src: /src/pdns/pdns/recursordist/test-signers.cc:402,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-signers.cc:406,1
    - Dst: DNSSECPrivateKey::setKey
      Src: /src/pdns/pdns/recursordist/test-signers.cc:409,1
    - Dst: DNSSECPrivateKey::getDNSKEY
      Src: /src/pdns/pdns/recursordist/test-signers.cc:410,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-signers.cc:412,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-signers.cc:413,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-signers.cc:414,1
    - Dst: getZoneRepresentation
      Src: /src/pdns/pdns/recursordist/test-signers.cc:414,1
    - Dst: makeDSFromDNSKey
      Src: /src/pdns/pdns/recursordist/test-signers.cc:417,1
    - Dst: dsSHA1::empty
      Src: /src/pdns/pdns/recursordist/test-signers.cc:418,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-signers.cc:419,1
    - Dst: auto::getZoneRepresentation
      Src: /src/pdns/pdns/recursordist/test-signers.cc:419,1
    - Dst: makeDSFromDNSKey
      Src: /src/pdns/pdns/recursordist/test-signers.cc:422,1
    - Dst: dsSHA256::empty
      Src: /src/pdns/pdns/recursordist/test-signers.cc:423,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-signers.cc:424,1
    - Dst: auto::getZoneRepresentation
      Src: /src/pdns/pdns/recursordist/test-signers.cc:424,1
    - Dst: makeDSFromDNSKey
      Src: /src/pdns/pdns/recursordist/test-signers.cc:427,1
    - Dst: dsSHA384::empty
      Src: /src/pdns/pdns/recursordist/test-signers.cc:428,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-signers.cc:429,1
    - Dst: auto::getZoneRepresentation
      Src: /src/pdns/pdns/recursordist/test-signers.cc:429,1
    - Dst: std::shared_ptr<DNSCryptoKeyEngine>::sign
      Src: /src/pdns/pdns/recursordist/test-signers.cc:432,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-signers.cc:434,1
    - Dst: std::shared_ptr<DNSCryptoKeyEngine>::verify
      Src: /src/pdns/pdns/recursordist/test-signers.cc:434,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-signers.cc:436,1
    - Dst: signature::begin
      Src: /src/pdns/pdns/recursordist/test-signers.cc:436,1
    - Dst: signature::end
      Src: /src/pdns/pdns/recursordist/test-signers.cc:436,1
    - Dst: Base64Encode
      Src: /src/pdns/pdns/recursordist/test-signers.cc:438,1
    - Dst: Base64Encode
      Src: /src/pdns/pdns/recursordist/test-signers.cc:439,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-signers.cc:440,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-signers.cc:446,1
    - Dst: std::shared_ptr<DNSCryptoKeyEngine>::verify
      Src: /src/pdns/pdns/recursordist/test-signers.cc:446,1
    - Dst: rfcMsgDump::empty
      Src: /src/pdns/pdns/recursordist/test-signers.cc:449,1
    - Dst: rfcB64Signature::empty
      Src: /src/pdns/pdns/recursordist/test-signers.cc:449,1
    - Dst: checkRR
      Src: /src/pdns/pdns/recursordist/test-signers.cc:450,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 33
    argCount: 4
    argNames:
    - dcke
    - ' drc'
    - ' signer'
    - ' message'
    argTypes:
    - std::shared_ptr<DNSCryptoKeyEngine>
    - DNSKEYRecordContent
    - SignerParams
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 452
      start: 392
    functionDepth: 0
    functionLinenumber: 392
    functionLinenumberEnd: 452
    functionName: test_generic_signer
    functionSourceFile: /src/pdns/pdns/recursordist/test-signers.cc
    functionUses: 1
    functionsReached:
    - getZoneRepresentation
    - std::shared_ptr<DNSCryptoKeyEngine>::getAlgorithm
    - signature::begin
    - DNSSECPrivateKey::setKey
    - std::shared_ptr<DNSCryptoKeyEngine>::verify
    - std::string
    - std::shared_ptr<DNSCryptoKeyEngine>::checkKey
    - checkRR
    - dsSHA384::empty
    - std::shared_ptr<DNSCryptoKeyEngine>::getName
    - dsSHA1::empty
    - BOOST_TEST_MESSAGE
    - std::shared_ptr<DNSCryptoKeyEngine>::getBits
    - dsSHA256::empty
    - std::shared_ptr<DNSCryptoKeyEngine>::sign
    - vector::empty
    - rfcB64Signature::empty
    - makeDSFromDNSKey
    - signature::end
    - rfcMsgDump::empty
    - BOOST_CHECK_EQUAL
    - auto::getZoneRepresentation
    - DNSSECPrivateKey::getDNSKEY
    - BOOST_CHECK
    - Base64Encode
    linkageType: ''
    returnType: void
    signature: void test_generic_signer(std::shared_ptr<DNSCryptoKeyEngine> dcke,
      DNSKEYRecordContent& drc, const SignerParams& signer, const std::string& message)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSKEYRecordContent::DNSKEYRecordContent
      Src: /src/pdns/pdns/recursordist/test-signers.cc:460,1
    - Dst: std::shared_ptr<DNSCryptoKeyEngine>
      Src: /src/pdns/pdns/recursordist/test-signers.cc:461,1
    - Dst: DNSCryptoKeyEngine::makeFromISCString
      Src: /src/pdns/pdns/recursordist/test-signers.cc:461,1
    - Dst: test_generic_signer
      Src: /src/pdns/pdns/recursordist/test-signers.cc:462,1
    - Dst: DNSKEYRecordContent::DNSKEYRecordContent
      Src: /src/pdns/pdns/recursordist/test-signers.cc:464,1
    - Dst: DNSCryptoKeyEngine::makeFromPEMString
      Src: /src/pdns/pdns/recursordist/test-signers.cc:465,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-signers.cc:467,1
    - Dst: shared_ptr::convertToISC
      Src: /src/pdns/pdns/recursordist/test-signers.cc:467,1
    - Dst: auto::convertToISC
      Src: /src/pdns/pdns/recursordist/test-signers.cc:467,1
    - Dst: test_generic_signer
      Src: /src/pdns/pdns/recursordist/test-signers.cc:469,1
    - Dst: auto::convertToPEMString
      Src: /src/pdns/pdns/recursordist/test-signers.cc:471,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-signers.cc:472,1
    - Dst: shared_ptr::convertToPEMString
      Src: /src/pdns/pdns/recursordist/test-signers.cc:474,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-signers.cc:475,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 477
      start: 455
    functionDepth: 0
    functionLinenumber: 455
    functionLinenumberEnd: 477
    functionName: BOOST_FIXTURE_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-signers.cc
    functionUses: 0
    functionsReached:
    - test_generic_signer
    - DNSCryptoKeyEngine::makeFromISCString
    - shared_ptr::convertToPEMString
    - auto::convertToPEMString
    - BOOST_CHECK_EQUAL
    - auto::convertToISC
    - shared_ptr::convertToISC
    - std::shared_ptr<DNSCryptoKeyEngine>
    - DNSCryptoKeyEngine::makeFromPEMString
    - DNSKEYRecordContent::DNSKEYRecordContent
    linkageType: ''
    returnType: void
    signature: void BOOST_FIXTURE_TEST_CASE(test_generic_signers, Fixture)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hashQNameWithSalt
      Src: /src/pdns/pdns/recursordist/test-signers.cc:502,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-signers.cc:502,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/recursordist/test-signers.cc:502,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-signers.cc:502,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-signers.cc:503,1
    - Dst: toBase32Hex
      Src: /src/pdns/pdns/recursordist/test-signers.cc:503,1
    - Dst: hashQNameWithSalt
      Src: /src/pdns/pdns/recursordist/test-signers.cc:516,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-signers.cc:516,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/recursordist/test-signers.cc:516,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-signers.cc:516,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-signers.cc:517,1
    - Dst: toBase32Hex
      Src: /src/pdns/pdns/recursordist/test-signers.cc:517,1
    - Dst: hashQNameWithSalt
      Src: /src/pdns/pdns/recursordist/test-signers.cc:530,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-signers.cc:530,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/recursordist/test-signers.cc:530,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-signers.cc:530,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-signers.cc:531,1
    - Dst: toBase32Hex
      Src: /src/pdns/pdns/recursordist/test-signers.cc:531,1
    - Dst: hashQNameWithSalt
      Src: /src/pdns/pdns/recursordist/test-signers.cc:547,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-signers.cc:547,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/recursordist/test-signers.cc:547,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-signers.cc:547,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-signers.cc:548,1
    - Dst: toBase32Hex
      Src: /src/pdns/pdns/recursordist/test-signers.cc:548,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 551
      start: 480
    functionDepth: 0
    functionLinenumber: 480
    functionLinenumberEnd: 551
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-signers.cc
    functionUses: 0
    functionsReached:
    - BOOST_CHECK_EQUAL
    - DNSName
    - reinterpret_cast<const char*>
    - toBase32Hex
    - std::string
    - hashQNameWithSalt
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_hash_qname_with_salt)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ArgvMap::ArgvMap
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:28,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 30
      start: 26
    functionDepth: 0
    functionLinenumber: 26
    functionLinenumberEnd: 30
    functionName: arg
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc.cc
    functionUses: 182
    functionsReached:
    - ArgvMap::ArgvMap
    linkageType: ''
    returnType: ArgvMap
    signature: ArgvMap & arg()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 32
      start: 32
    functionDepth: 0
    functionLinenumber: 32
    functionLinenumberEnd: 32
    functionName: BaseLua4::~BaseLua4()
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void BaseLua4::~BaseLua4()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 36
      start: 34
    functionDepth: 0
    functionLinenumber: 34
    functionLinenumberEnd: 36
    functionName: BaseLua4::getFeatures
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc.cc
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void BaseLua4::getFeatures(Features& /* features */)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 38
    functionDepth: 0
    functionLinenumber: 38
    functionLinenumberEnd: 40
    functionName: BaseLua4::prepareContext
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void BaseLua4::prepareContext()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 46
    functionName: RecursorLua4::preoutquery
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool RecursorLua4::preoutquery(const ComboAddress& /* ns */, const
      ComboAddress& /* requestor */, const DNSName& /* query */, const QType& /* qtype
      */, bool& /* isTcp */, vector<DNSRecord>& /* res */, int& /* ret */, RecEventTrace&
      /* et */, const struct timeval& /* tv */) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 49
    functionDepth: 0
    functionLinenumber: 49
    functionLinenumberEnd: 52
    functionName: RecursorLua4::policyHitEventFilter
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool RecursorLua4::policyHitEventFilter(const ComboAddress& /* remote
      */, const DNSName& /* qname */, const QType& /* qtype */, bool /* tcp */, DNSFilterEngine::Policy&
      /* policy */, std::unordered_set<std::string>& /* tags */, std::unordered_map<std::string,
      bool>& /* discardedPolicies */) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 54
    functionDepth: 0
    functionLinenumber: 54
    functionLinenumberEnd: 54
    functionName: RecursorLua4::~RecursorLua4()
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void RecursorLua4::~RecursorLua4()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 56
    functionDepth: 0
    functionLinenumber: 56
    functionLinenumberEnd: 58
    functionName: RecursorLua4::postPrepareContext
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void RecursorLua4::postPrepareContext()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 60
    functionDepth: 0
    functionLinenumber: 60
    functionLinenumberEnd: 62
    functionName: RecursorLua4::postLoad
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void RecursorLua4::postLoad()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 64
    functionDepth: 0
    functionLinenumber: 64
    functionLinenumberEnd: 66
    functionName: RecursorLua4::getFeatures
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void RecursorLua4::getFeatures(Features& /* features */)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 68
    functionDepth: 0
    functionLinenumber: 68
    functionLinenumberEnd: 71
    functionName: asyncresolve
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc.cc
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: LWResult::Result
    signature: LWResult::Result asyncresolve(const OptLog& /* log */, const ComboAddress&
      /* ip */, const DNSName& /* domain */, int /* type */, bool /* doTCP */, bool
      /* sendRDQuery */, int /* EDNS0Level */, struct timeval* /* now */, std::optional<Netmask>&
      /* srcmask */, const ResolveContext& /* context */, const std::shared_ptr<std::vector<std::unique_ptr<RemoteLogger>>>&
      /* outgoingLoggers */, const std::shared_ptr<std::vector<std::unique_ptr<FrameStreamLogger>>>&
      /* fstrmLoggers */, const std::set<uint16_t>& /* exportTypes */, LWResult* /*
      res */, bool* /* chained */)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: std::make_unique<MemRecursorCache>
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:85,1
    - Dst: std::make_unique<NegCache>
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:88,1
    - Dst: DNSRecord::DNSRecord
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:91,1
    - Dst: DNSRecord::DNSRecord
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:92,1
    - Dst: DNSRecord::DNSRecord
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:93,1
    - Dst: strncpy
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:102,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:102,1
    - Dst: std::array::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:103,1
    - Dst: std::array::at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:104,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:105,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:105,1
    - Dst: DNSRecord::setContent
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:106,1
    - Dst: std::make_shared<NSRecordContent>
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:106,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:106,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:106,1
    - Dst: DNSRecord::setContent
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:107,1
    - Dst: std::make_shared<ARecordContent>
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:107,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:107,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:107,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:109,1
    - Dst: replace
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:110,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:110,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:110,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:110,1
    - Dst: vector<std::shared_ptr<const RRSIGRecordContent>>
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:110,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:111,1
    - Dst: DNSRecord::setContent
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:112,1
    - Dst: std::make_shared<AAAARecordContent>
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:112,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:112,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:112,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:115,1
    - Dst: replace
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:116,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:116,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:116,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:116,1
    - Dst: vector<std::shared_ptr<const RRSIGRecordContent>>
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:116,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:119,1
    - Dst: replace
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:121,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:121,1
    - Dst: vector<std::shared_ptr<const RRSIGRecordContent>>
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:121,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 30
    argCount: 1
    argNames:
    - now
    argTypes:
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 81
    functionDepth: 0
    functionLinenumber: 81
    functionLinenumberEnd: 123
    functionName: primeHints
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc.cc
    functionUses: 140
    functionsReached:
    - vector::push_back
    - strncpy
    - DNSRecord::DNSRecord
    - at
    - QType
    - std::make_unique<MemRecursorCache>
    - DNSName
    - std::make_unique<NegCache>
    - std::array::at
    - std::make_shared<NSRecordContent>
    - vector<std::shared_ptr<const RRSIGRecordContent>>
    - DNSRecord::setContent
    - std::make_shared<ARecordContent>
    - std::make_shared<AAAARecordContent>
    - replace
    - std::array::data
    - std::array::size
    - ComboAddress
    linkageType: ''
    returnType: bool
    signature: bool primeHints(time_t now)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: setName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:129,1
    - Dst: disableSyslog
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:130,1
    - Dst: setLoglevel
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:133,1
    - Dst: toConsole
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:134,1
    - Dst: setLoglevel
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:137,1
    - Dst: toConsole
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:138,1
    - Dst: MemRecursorCache::resetStaticsForTests
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:142,1
    - Dst: std::make_unique<MemRecursorCache>
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:144,1
    - Dst: std::make_unique<NegCache>
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:145,1
    - Dst: SyncRes::clearEDNSLocalSubnets
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:171,1
    - Dst: SyncRes::addEDNSLocalSubnet
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:172,1
    - Dst: SyncRes::addEDNSLocalSubnet
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:173,1
    - Dst: SyncRes::clearEDNSRemoteSubnets
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:174,1
    - Dst: SyncRes::clearEDNSDomains
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:175,1
    - Dst: SyncRes::clearDontQuery
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:176,1
    - Dst: SyncRes::setECSScopeZeroAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:177,1
    - Dst: Netmask
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:177,1
    - Dst: SyncRes::clearNSSpeeds
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:189,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:190,1
    - Dst: SyncRes::getNSSpeedsSize
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:190,1
    - Dst: SyncRes::clearEDNSStatuses
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:191,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:192,1
    - Dst: SyncRes::getEDNSStatusesSize
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:192,1
    - Dst: SyncRes::clearThrottle
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:193,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:194,1
    - Dst: SyncRes::getThrottledServersSize
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:194,1
    - Dst: SyncRes::clearFailedServers
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:195,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:196,1
    - Dst: SyncRes::getFailedServersSize
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:196,1
    - Dst: SyncRes::clearNonResolvingNS
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:197,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:198,1
    - Dst: SyncRes::getNonResolvingNSSize
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:198,1
    - Dst: SyncRes::clearSaveParentsNSSets
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:199,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:200,1
    - Dst: SyncRes::getSaveParentsNSSetsSize
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:200,1
    - Dst: SyncRes::clearECSStats
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:202,1
    - Dst: getCopy
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:204,1
    - Dst: auto::dfe::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:205,1
    - Dst: auto::dsAnchors::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:206,1
    - Dst: std::dynamic_pointer_cast<DSRecordContent>
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:208,1
    - Dst: make
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:208,1
    - Dst: insert
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:209,1
    - Dst: auto::negAnchors::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:211,1
    - Dst: setState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:212,1
    - Dst: reset
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:218,1
    - Dst: taskQueueClear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:221,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:223,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:224,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:225,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:226,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 85
    argCount: 1
    argNames:
    - debug
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 227
      start: 127
    functionDepth: 2
    functionLinenumber: 127
    functionLinenumberEnd: 227
    functionName: initSR
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc.cc
    functionUses: 141
    functionsReached:
    - toConsole
    - SyncRes::addEDNSLocalSubnet
    - insert
    - SyncRes::clearEDNSLocalSubnets
    - SyncRes::getEDNSStatusesSize
    - SyncRes::clearEDNSStatuses
    - SyncRes::getNonResolvingNSSize
    - setState
    - std::dynamic_pointer_cast<DSRecordContent>
    - reset
    - setLoglevel
    - SyncRes::clearDontQuery
    - auto::dsAnchors::clear
    - SyncRes::getFailedServersSize
    - SyncRes::clearECSStats
    - setName
    - SyncRes::clearNonResolvingNS
    - taskQueueClear
    - Netmask
    - SyncRes::clearEDNSRemoteSubnets
    - SyncRes::getSaveParentsNSSetsSize
    - SyncRes::clearFailedServers
    - auto::negAnchors::clear
    - make
    - disableSyslog
    - SyncRes::getThrottledServersSize
    - SyncRes::clearEDNSDomains
    - arg
    - SyncRes::setECSScopeZeroAddress
    - SyncRes::clearNSSpeeds
    - SyncRes::getNSSpeedsSize
    - SyncRes::clearSaveParentsNSSets
    - SyncRes::clearThrottle
    - std::make_unique<MemRecursorCache>
    - BOOST_CHECK_EQUAL
    - std::make_unique<NegCache>
    - getCopy
    - auto::dfe::clear
    - MemRecursorCache::resetStaticsForTests
    linkageType: ''
    returnType: void
    signature: void initSR(bool debug)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Utility::gettimeofday
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:237,1
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:240,1
    - Dst: std::make_unique<SyncRes>
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:242,1
    - Dst: setDoEDNS0
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:243,1
    - Dst: setDoDNSSEC
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:245,1
    - Dst: setLogMode
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:248,1
    - Dst: SyncRes::setDomainMap
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:250,1
    - Dst: std::make_shared<SyncRes::domainmap_t>
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:250,1
    - Dst: clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:251,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 4
    argNames:
    - ' sr'
    - dnssec
    - debug
    - fakeNow
    argTypes:
    - std::unique_ptr<SyncRes>
    - bool
    - bool
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 252
      start: 229
    functionDepth: 1
    functionLinenumber: 229
    functionLinenumberEnd: 252
    functionName: initSR
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc.cc
    functionUses: 142
    functionsReached:
    - setDoEDNS0
    - setLogMode
    - std::make_unique<SyncRes>
    - Utility::gettimeofday
    - initSR
    - setDoDNSSEC
    - clear
    - SyncRes::setDomainMap
    - std::make_shared<SyncRes::domainmap_t>
    linkageType: ''
    returnType: void
    signature: void initSR(std::unique_ptr<SyncRes>& sr, bool dnssec, bool debug,
      time_t fakeNow)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: setDNSSECValidationRequested
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:256,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ' sr'
    - ' mode'
    argTypes:
    - std::unique_ptr<SyncRes>
    - DNSSECMode
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 258
      start: 254
    functionDepth: 0
    functionLinenumber: 254
    functionLinenumberEnd: 258
    functionName: setDNSSECValidation
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc.cc
    functionUses: 19
    functionsReached:
    - setDNSSECValidationRequested
    linkageType: ''
    returnType: void
    signature: void setDNSSECValidation(std::unique_ptr<SyncRes>& sr, const DNSSECMode&
      mode)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 6
    argNames:
    - res
    - rcode
    - aa
    - tc
    - edns
    - validpacket
    argTypes:
    - LWResult*
    - int
    - bool
    - bool
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 267
      start: 260
    functionDepth: 0
    functionLinenumber: 260
    functionLinenumberEnd: 267
    functionName: setLWResult
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc.cc
    functionUses: 128
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setLWResult(LWResult* res, int rcode, bool aa, bool tc, bool edns,
      bool validpacket)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: addRecordToList
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:271,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 6
    argNames:
    - res
    - ' name'
    - type
    - ' content'
    - place
    - ttl
    argTypes:
    - LWResult*
    - DNSName
    - uint16_t
    - std::string
    - DNSResourceRecord::Place
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 272
      start: 269
    functionDepth: 0
    functionLinenumber: 269
    functionLinenumberEnd: 272
    functionName: addRecordToLW
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc.cc
    functionUses: 124
    functionsReached:
    - addRecordToList
    linkageType: ''
    returnType: void
    signature: void addRecordToLW(LWResult* res, const DNSName& name, uint16_t type,
      const std::string& content, DNSResourceRecord::Place place, uint32_t ttl)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:276,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:276,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 6
    argNames:
    - res
    - ' name'
    - type
    - ' content'
    - place
    - ttl
    argTypes:
    - LWResult*
    - std::string
    - uint16_t
    - std::string
    - DNSResourceRecord::Place
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 277
      start: 274
    functionDepth: 1
    functionLinenumber: 274
    functionLinenumberEnd: 277
    functionName: addRecordToLW
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc.cc
    functionUses: 125
    functionsReached:
    - addRecordToLW
    - DNSName
    linkageType: ''
    returnType: void
    signature: void addRecordToLW(LWResult* res, const std::string& name, uint16_t
      type, const std::string& content, DNSResourceRecord::Place place, uint32_t ttl)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: isIPv4
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:281,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:282,1
    - Dst: toString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:283,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:289,1
    - Dst: toString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:290,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 1
    argNames:
    - ' ip'
    argTypes:
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 297
      start: 279
    functionDepth: 0
    functionLinenumber: 279
    functionLinenumberEnd: 297
    functionName: isRootServer
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc.cc
    functionUses: 92
    functionsReached:
    - isIPv4
    - toString
    - size
    linkageType: ''
    returnType: bool
    signature: bool isRootServer(const ComboAddress& ip)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: time
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:302,1
    - Dst: getDNSKEY
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:304,1
    - Dst: getKey
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:305,1
    - Dst: countLabels
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:308,1
    - Dst: isWildcard
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:308,1
    - Dst: DNSKEYRecordContent::getTag
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:313,1
    - Dst: getMessageForRRSET
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:316,1
    - Dst: sign
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:318,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 11
    argNames:
    - ' dpk'
    - ' signer'
    - ' signQName'
    - signQType
    - signTTL
    - sigValidity
    - ' rrc'
    - ' toSign'
    - algo
    - inception
    - now
    argTypes:
    - DNSSECPrivateKey
    - DNSName
    - DNSName
    - uint16_t
    - uint32_t
    - uint32_t
    - RRSIGRecordContent
    - sortedRecords_t
    - std::optional<uint8_t>
    - std::optional<uint32_t>
    - std::optional<time_t>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 319
      start: 299
    functionDepth: 0
    functionLinenumber: 299
    functionLinenumberEnd: 319
    functionName: computeRRSIG
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc.cc
    functionUses: 0
    functionsReached:
    - countLabels
    - DNSKEYRecordContent::getTag
    - getMessageForRRSET
    - time
    - isWildcard
    - getDNSKEY
    - getKey
    - sign
    linkageType: ''
    returnType: void
    signature: void computeRRSIG(const DNSSECPrivateKey& dpk, const DNSName& signer,
      const DNSName& signQName, uint16_t signQType, uint32_t signTTL, uint32_t sigValidity,
      RRSIGRecordContent& rrc, const sortedRecords_t& toSign, std::optional<uint8_t>
      algo, std::optional<uint32_t> inception, std::optional<time_t> now)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:325,1
    - Dst: find
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:329,1
    - Dst: cend
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:330,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:331,1
    - Dst: toLogString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:331,1
    - Dst: DNSName::DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:334,1
    - Dst: rbegin
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:341,1
    - Dst: rend
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:341,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:353,1
    - Dst: sortedRecords_t::insert
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:359,1
    - Dst: getContent
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:359,1
    - Dst: RRSIGRecordContent::RRSIGRecordContent
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:363,1
    - Dst: computeRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:364,1
    - Dst: std::get_if<bool>
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:365,1
    - Dst: std::get_if<int>
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:368,1
    - Dst: DNSRecord::DNSRecord
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:372,1
    - Dst: DNSRecord::setContent
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:378,1
    - Dst: std::make_shared<RRSIGRecordContent>
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:378,1
    - Dst: push_back
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:379,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 39
    argCount: 8
    argNames:
    - ' keys'
    - ' records'
    - ' signer'
    - sigValidity
    - broken
    - algo
    - wildcard
    - now
    argTypes:
    - testkeysset_t
    - std::vector<DNSRecord>
    - DNSName
    - uint32_t
    - std::variant<bool, int>
    - std::optional<uint8_t>
    - std::optional<DNSName>
    - std::optional<time_t>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 382
      start: 323
    functionDepth: 2
    functionLinenumber: 323
    functionLinenumberEnd: 382
    functionName: addRRSIG
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc.cc
    functionUses: 17
    functionsReached:
    - toLogString
    - computeRRSIG
    - DNSRecord::DNSRecord
    - std::runtime_error
    - DNSName::DNSName
    - rbegin
    - std::get_if<int>
    - push_back
    - getContent
    - RRSIGRecordContent::RRSIGRecordContent
    - sortedRecords_t::insert
    - std::get_if<bool>
    - rend
    - cend
    - DNSRecord::setContent
    - empty
    - std::make_shared<RRSIGRecordContent>
    - find
    linkageType: ''
    returnType: bool
    signature: bool addRRSIG(const testkeysset_t& keys, std::vector<DNSRecord>& records,
      const DNSName& signer, uint32_t sigValidity, std::variant<bool, int> broken,
      std::optional<uint8_t> algo, std::optional<DNSName> wildcard, std::optional<time_t>
      now)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: find
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:386,1
    - Dst: cend
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:387,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:388,1
    - Dst: toLogString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:388,1
    - Dst: DNSRecord::DNSRecord
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:391,1
    - Dst: DNSRecord::setContent
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:397,1
    - Dst: std::make_shared<DNSKEYRecordContent>
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:397,1
    - Dst: auto::second::first::getDNSKEY
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:397,1
    - Dst: push_back
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:398,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 4
    argNames:
    - ' keys'
    - ' signer'
    - ttl
    - ' records'
    argTypes:
    - testkeysset_t
    - DNSName
    - uint32_t
    - std::vector<DNSRecord>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 399
      start: 384
    functionDepth: 0
    functionLinenumber: 384
    functionLinenumberEnd: 399
    functionName: addDNSKEY
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc.cc
    functionUses: 4
    functionsReached:
    - toLogString
    - DNSRecord::DNSRecord
    - std::runtime_error
    - push_back
    - std::make_shared<DNSKEYRecordContent>
    - auto::second::first::getDNSKEY
    - cend
    - DNSRecord::setContent
    - find
    linkageType: ''
    returnType: void
    signature: void addDNSKEY(const testkeysset_t& keys, const DNSName& signer, uint32_t
      ttl, std::vector<DNSRecord>& records)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: find
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:403,1
    - Dst: cend
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:404,1
    - Dst: DNSRecord::DNSRecord
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:408,1
    - Dst: DNSRecord::setContent
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:413,1
    - Dst: std::make_shared<DSRecordContent>
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:413,1
    - Dst: push_back
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:415,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 5
    argNames:
    - ' domain'
    - ttl
    - ' records'
    - ' keys'
    - place
    argTypes:
    - DNSName
    - uint32_t
    - std::vector<DNSRecord>
    - testkeysset_t
    - DNSResourceRecord::Place
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 417
      start: 401
    functionDepth: 0
    functionLinenumber: 401
    functionLinenumberEnd: 417
    functionName: addDS
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc.cc
    functionUses: 12
    functionsReached:
    - DNSRecord::DNSRecord
    - push_back
    - cend
    - DNSRecord::setContent
    - std::make_shared<DSRecordContent>
    - find
    linkageType: ''
    returnType: bool
    signature: bool addDS(const DNSName& domain, uint32_t ttl, std::vector<DNSRecord>&
      records, const testkeysset_t& keys, DNSResourceRecord::Place place)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: NSECRecordContent::NSECRecordContent
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:421,1
    - Dst: NSECRecordContent::set
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:424,1
    - Dst: DNSRecord::DNSRecord
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:427,1
    - Dst: DNSRecord::setContent
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:431,1
    - Dst: std::make_shared<NSECRecordContent>
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:431,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:431,1
    - Dst: push_back
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:434,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 5
    argNames:
    - ' domain'
    - ' next'
    - ' types'
    - ttl
    - ' records'
    argTypes:
    - DNSName
    - DNSName
    - std::set<uint16_t>
    - uint32_t
    - std::vector<DNSRecord>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 435
      start: 419
    functionDepth: 0
    functionLinenumber: 419
    functionLinenumberEnd: 435
    functionName: addNSECRecordToLW
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc.cc
    functionUses: 8
    functionsReached:
    - std::move
    - DNSRecord::DNSRecord
    - push_back
    - DNSRecord::setContent
    - NSECRecordContent::set
    - std::make_shared<NSECRecordContent>
    - NSECRecordContent::NSECRecordContent
    linkageType: ''
    returnType: void
    signature: void addNSECRecordToLW(const DNSName& domain, const DNSName& next,
      const std::set<uint16_t>& types, uint32_t ttl, std::vector<DNSRecord>& records)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: NSEC3RecordContent::NSEC3RecordContent
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:439,1
    - Dst: NSEC3RecordContent::set
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:446,1
    - Dst: DNSRecord::DNSRecord
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:449,1
    - Dst: DNSRecord::setContent
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:453,1
    - Dst: std::make_shared<NSEC3RecordContent>
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:453,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:453,1
    - Dst: push_back
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:456,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 8
    argNames:
    - ' hashedName'
    - ' hashedNext'
    - ' salt'
    - iterations
    - ' types'
    - ttl
    - ' records'
    - optOut
    argTypes:
    - DNSName
    - std::string
    - std::string
    - unsigned int
    - std::set<uint16_t>
    - uint32_t
    - std::vector<DNSRecord>
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 457
      start: 437
    functionDepth: 0
    functionLinenumber: 437
    functionLinenumberEnd: 457
    functionName: addNSEC3RecordToLW
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc.cc
    functionUses: 0
    functionsReached:
    - std::move
    - DNSRecord::DNSRecord
    - NSEC3RecordContent::set
    - push_back
    - NSEC3RecordContent::NSEC3RecordContent
    - DNSRecord::setContent
    - std::make_shared<NSEC3RecordContent>
    linkageType: ''
    returnType: void
    signature: void addNSEC3RecordToLW(const DNSName& hashedName, const std::string&
      hashedNext, const std::string& salt, unsigned int iterations, const std::set<uint16_t>&
      types, uint32_t ttl, std::vector<DNSRecord>& records, bool optOut)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hashQNameWithSalt
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:462,1
    - Dst: addNSEC3RecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:464,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:464,1
    - Dst: toBase32Hex
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:464,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 8
    argNames:
    - ' domain'
    - ' zone'
    - ' next'
    - ' types'
    - ttl
    - ' records'
    - iterations
    - optOut
    argTypes:
    - DNSName
    - DNSName
    - std::string
    - std::set<uint16_t>
    - uint32_t
    - std::vector<DNSRecord>
    - unsigned int
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 465
      start: 459
    functionDepth: 1
    functionLinenumber: 459
    functionLinenumberEnd: 465
    functionName: addNSEC3UnhashedRecordToLW
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc.cc
    functionUses: 0
    functionsReached:
    - toBase32Hex
    - hashQNameWithSalt
    - DNSName
    - addNSEC3RecordToLW
    linkageType: ''
    returnType: void
    signature: void addNSEC3UnhashedRecordToLW(const DNSName& domain, const DNSName&
      zone, const std::string& next, const std::set<uint16_t>& types, uint32_t ttl,
      std::vector<DNSRecord>& records, unsigned int iterations, bool optOut)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hashQNameWithSalt
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:471,1
    - Dst: incrementHash
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:473,1
    - Dst: addNSEC3RecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:475,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:475,1
    - Dst: toBase32Hex
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:475,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 7
    argNames:
    - ' domain'
    - ' zone'
    - ' types'
    - ttl
    - ' records'
    - iterations
    - optOut
    argTypes:
    - DNSName
    - DNSName
    - std::set<uint16_t>
    - uint32_t
    - std::vector<DNSRecord>
    - unsigned int
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 476
      start: 468
    functionDepth: 1
    functionLinenumber: 468
    functionLinenumberEnd: 476
    functionName: addNSEC3NoDataNarrowRecordToLW
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc.cc
    functionUses: 0
    functionsReached:
    - DNSName
    - addNSEC3RecordToLW
    - incrementHash
    - toBase32Hex
    - hashQNameWithSalt
    linkageType: ''
    returnType: void
    signature: void addNSEC3NoDataNarrowRecordToLW(const DNSName& domain, const DNSName&
      zone, const std::set<uint16_t>& types, uint32_t ttl, std::vector<DNSRecord>&
      records, unsigned int iterations, bool optOut)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hashQNameWithSalt
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:481,1
    - Dst: incrementHash
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:483,1
    - Dst: decrementHash
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:484,1
    - Dst: addNSEC3RecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:486,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:486,1
    - Dst: toBase32Hex
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:486,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 7
    argNames:
    - ' domain'
    - ' zone'
    - ' types'
    - ttl
    - ' records'
    - iterations
    - optOut
    argTypes:
    - DNSName
    - DNSName
    - std::set<uint16_t>
    - uint32_t
    - std::vector<DNSRecord>
    - unsigned int
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 487
      start: 478
    functionDepth: 1
    functionLinenumber: 478
    functionLinenumberEnd: 487
    functionName: addNSEC3NarrowRecordToLW
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc.cc
    functionUses: 0
    functionsReached:
    - decrementHash
    - DNSName
    - addNSEC3RecordToLW
    - incrementHash
    - toBase32Hex
    - hashQNameWithSalt
    linkageType: ''
    returnType: void
    signature: void addNSEC3NarrowRecordToLW(const DNSName& domain, const DNSName&
      zone, const std::set<uint16_t>& types, uint32_t ttl, std::vector<DNSRecord>&
      records, unsigned int iterations, bool optOut)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: withName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:491,1
    - Dst: std::shared_ptr<DNSCryptoKeyEngine>
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:492,1
    - Dst: DNSCryptoKeyEngine::make
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:492,1
    - Dst: auto::create
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:493,1
    - Dst: auto::getBits
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:493,1
    - Dst: DNSSECPrivateKey::setKey
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:495,1
    - Dst: makeDSFromDNSKey
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:496,1
    - Dst: DNSSECPrivateKey::getDNSKEY
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:496,1
    - Dst: std::pair<DNSSECPrivateKey, DSRecordContent>
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:497,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 4
    argNames:
    - ' name'
    - algo
    - digest
    - ' keys'
    argTypes:
    - DNSName
    - unsigned int
    - uint8_t
    - testkeysset_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 498
      start: 489
    functionDepth: 1
    functionLinenumber: 489
    functionLinenumberEnd: 498
    functionName: generateKeyMaterial
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc.cc
    functionUses: 18
    functionsReached:
    - std::pair<DNSSECPrivateKey, DSRecordContent>
    - DNSCryptoKeyEngine::make
    - withName
    - auto::getBits
    - auto::create
    - DNSSECPrivateKey::setKey
    - makeDSFromDNSKey
    - DNSSECPrivateKey::getDNSKEY
    - std::shared_ptr<DNSCryptoKeyEngine>
    linkageType: ''
    returnType: void
    signature: void generateKeyMaterial(const DNSName& name, unsigned int algo, uint8_t
      digest, testkeysset_t& keys)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:502,1
    - Dst: insert
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:503,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 5
    argNames:
    - ' name'
    - algo
    - digest
    - ' keys'
    - ' dsAnchors'
    argTypes:
    - DNSName
    - unsigned int
    - uint8_t
    - testkeysset_t
    - map<DNSName, dsset_t>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 504
      start: 500
    functionDepth: 2
    functionLinenumber: 500
    functionLinenumberEnd: 504
    functionName: generateKeyMaterial
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc.cc
    functionUses: 19
    functionsReached:
    - generateKeyMaterial
    - insert
    linkageType: ''
    returnType: void
    signature: void generateKeyMaterial(const DNSName& name, unsigned int algo, uint8_t
      digest, testkeysset_t& keys, map<DNSName, dsset_t>& dsAnchors)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: DNSName::chopOff
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:509,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:511,1
    - Dst: addDS
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:513,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:514,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:517,1
    - Dst: find
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:520,1
    - Dst: cend
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:521,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:523,1
    - Dst: std::set::insert
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:527,1
    - Dst: addNSECRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:531,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:531,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:534,1
    - Dst: DNSName::makeUsRelative
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:535,1
    - Dst: addNSEC3UnhashedRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:536,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:536,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:539,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:547,1
    - Dst: addDNSKEY
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:548,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:549,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 31
    argCount: 9
    argNames:
    - res
    - ' domain'
    - auth
    - type
    - ' keys'
    - proveCut
    - now
    - nsec3
    - optOut
    argTypes:
    - LWResult*
    - DNSName
    - DNSName
    - int
    - testkeysset_t
    - bool
    - std::optional<time_t>
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 554
      start: 506
    functionDepth: 3
    functionLinenumber: 506
    functionLinenumberEnd: 554
    functionName: genericDSAndDNSKEYHandler
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc.cc
    functionUses: 18
    functionsReached:
    - setLWResult
    - addNSEC3UnhashedRecordToLW
    - DNSName::chopOff
    - DNSName::makeUsRelative
    - addRecordToLW
    - DNSName
    - addDS
    - addRRSIG
    - addNSECRecordToLW
    - DNSName::toString
    - std::set::insert
    - cend
    - addDNSKEY
    - find
    linkageType: ''
    returnType: LWResult::Result
    signature: LWResult::Result genericDSAndDNSKEYHandler(LWResult* res, const DNSName&
      domain, DNSName auth, int type, const testkeysset_t& keys, bool proveCut, std::optional<time_t>
      now, bool nsec3, bool optOut)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:558,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:559,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:560,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:560,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:563,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:564,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:565,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:565,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:566,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:566,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:569,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:570,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:571,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:571,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:574,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:575,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:576,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:577,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:577,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:580,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:581,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:582,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:583,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc.cc:583,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 30
    argCount: 3
    argNames:
    - res
    - ' domain'
    - type
    argTypes:
    - LWResult*
    - DNSName
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 587
      start: 556
    functionDepth: 1
    functionLinenumber: 556
    functionLinenumberEnd: 587
    functionName: basicRecordsForQnameMinimization
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc.cc
    functionUses: 1
    functionsReached:
    - setLWResult
    - addRecordToLW
    - DNSName
    linkageType: ''
    returnType: LWResult::Result
    signature: LWResult::Result basicRecordsForQnameMinimization(LWResult* res, const
      DNSName& domain, int type)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pthread_setname_np
      Src: /src/pdns/pdns/recursordist/threadname.cc:47,1
    - Dst: pthread_self
      Src: /src/pdns/pdns/recursordist/threadname.cc:47,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/threadname.cc:47,1
    - Dst: pthread_set_name_np
      Src: /src/pdns/pdns/recursordist/threadname.cc:50,1
    - Dst: pthread_self
      Src: /src/pdns/pdns/recursordist/threadname.cc:50,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/threadname.cc:50,1
    - Dst: pthread_set_name_np
      Src: /src/pdns/pdns/recursordist/threadname.cc:53,1
    - Dst: pthread_self
      Src: /src/pdns/pdns/recursordist/threadname.cc:53,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/threadname.cc:53,1
    - Dst: pthread_setname_np
      Src: /src/pdns/pdns/recursordist/threadname.cc:56,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/threadname.cc:56,1
    - Dst: pthread_setname_np
      Src: /src/pdns/pdns/recursordist/threadname.cc:59,1
    - Dst: pthread_self
      Src: /src/pdns/pdns/recursordist/threadname.cc:59,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/threadname.cc:59,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - ' threadName'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 63
    functionName: trySetThreadName
    functionSourceFile: /src/pdns/pdns/recursordist/threadname.cc
    functionUses: 2
    functionsReached:
    - c_str
    - pthread_setname_np
    - pthread_set_name_np
    - pthread_self
    linkageType: ''
    returnType: int
    signature: int trySetThreadName(const std::string& threadName)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: trySetThreadName
      Src: /src/pdns/pdns/recursordist/threadname.cc:66,1
    - Dst: substr
      Src: /src/pdns/pdns/recursordist/threadname.cc:68,1
    - Dst: trySetThreadName
      Src: /src/pdns/pdns/recursordist/threadname.cc:69,1
    - Dst: SLOG
      Src: /src/pdns/pdns/recursordist/threadname.cc:74,1
    - Dst: warnlog
      Src: /src/pdns/pdns/recursordist/threadname.cc:74,1
    - Dst: strerror
      Src: /src/pdns/pdns/recursordist/threadname.cc:74,1
    - Dst: dnsdist::logging::getTopLogger
      Src: /src/pdns/pdns/recursordist/threadname.cc:75,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/threadname.cc:75,1
    - Dst: SLOG
      Src: /src/pdns/pdns/recursordist/threadname.cc:77,1
    - Dst: strerror
      Src: /src/pdns/pdns/recursordist/threadname.cc:77,1
    - Dst: withName
      Src: /src/pdns/pdns/recursordist/threadname.cc:78,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/threadname.cc:78,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - ' threadName'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 65
    functionDepth: 1
    functionLinenumber: 65
    functionLinenumberEnd: 81
    functionName: setThreadName
    functionSourceFile: /src/pdns/pdns/recursordist/threadname.cc
    functionUses: 71
    functionsReached:
    - SLOG
    - Logging::Loggable
    - withName
    - warnlog
    - substr
    - dnsdist::logging::getTopLogger
    - strerror
    - trySetThreadName
    linkageType: ''
    returnType: void
    signature: void setThreadName(const std::string& threadName)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' netmask'
    argTypes:
    - Netmask
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 32
      start: 29
    functionDepth: 0
    functionLinenumber: 29
    functionLinenumberEnd: 32
    functionName: EDNSSubnetOpts::setSource
    functionSourceFile: /src/pdns/pdns/recursordist/ednssubnet.hh
    functionUses: 45
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setSource(const Netmask& netmask)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 36
      start: 33
    functionDepth: 0
    functionLinenumber: 33
    functionLinenumberEnd: 36
    functionName: '& getSource() const'
    functionSourceFile: /src/pdns/pdns/recursordist/ednssubnet.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Netmask
    signature: Netmask & getSource() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getNetwork
      Src: /src/pdns/pdns/recursordist/ednssubnet.hh:39,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 37
    functionDepth: 0
    functionLinenumber: 37
    functionLinenumberEnd: 40
    functionName: EDNSSubnetOpts::getFamily
    functionSourceFile: /src/pdns/pdns/recursordist/ednssubnet.hh
    functionUses: 2
    functionsReached:
    - getNetwork
    linkageType: ''
    returnType: uint8_t
    signature: uint8_t getFamily() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getBits
      Src: /src/pdns/pdns/recursordist/ednssubnet.hh:43,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 41
    functionDepth: 0
    functionLinenumber: 41
    functionLinenumberEnd: 44
    functionName: EDNSSubnetOpts::getSourcePrefixLength
    functionSourceFile: /src/pdns/pdns/recursordist/ednssubnet.hh
    functionUses: 0
    functionsReached:
    - getBits
    linkageType: ''
    returnType: uint8_t
    signature: uint8_t getSourcePrefixLength() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - scope
    argTypes:
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 45
    functionDepth: 0
    functionLinenumber: 45
    functionLinenumberEnd: 48
    functionName: EDNSSubnetOpts::setScopePrefixLength
    functionSourceFile: /src/pdns/pdns/recursordist/ednssubnet.hh
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setScopePrefixLength(uint8_t scope)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 49
    functionDepth: 0
    functionLinenumber: 49
    functionLinenumberEnd: 52
    functionName: EDNSSubnetOpts::getScopePrefixLength
    functionSourceFile: /src/pdns/pdns/recursordist/ednssubnet.hh
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: uint8_t
    signature: uint8_t getScopePrefixLength() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getNetwork
      Src: /src/pdns/pdns/recursordist/ednssubnet.hh:55,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 53
    functionDepth: 0
    functionLinenumber: 53
    functionLinenumberEnd: 56
    functionName: EDNSSubnetOpts::getScope
    functionSourceFile: /src/pdns/pdns/recursordist/ednssubnet.hh
    functionUses: 1
    functionsReached:
    - getNetwork
    linkageType: ''
    returnType: Netmask
    signature: Netmask getScope() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - prometheusType
    - ' description'
    argTypes:
    - PrometheusMetricType
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 40
    functionDepth: 0
    functionLinenumber: 40
    functionLinenumberEnd: 43
    functionName: MetricDefinition
    functionSourceFile: /src/pdns/pdns/recursordist/rec_metrics.hh
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void MetricDefinition(const PrometheusMetricType prometheusType, const
      std::string& description)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 45
    functionDepth: 0
    functionLinenumber: 45
    functionLinenumberEnd: 45
    functionName: MetricDefinition
    functionSourceFile: /src/pdns/pdns/recursordist/rec_metrics.hh
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void MetricDefinition()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: find
      Src: /src/pdns/pdns/recursordist/rec_metrics.hh:59,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/rec_metrics.hh:61,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - ' metricName'
    - ' metric'
    argTypes:
    - std::string
    - MetricDefinition
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 57
    functionDepth: 0
    functionLinenumber: 57
    functionLinenumberEnd: 67
    functionName: MetricDefinitionStorage::getMetricDetails
    functionSourceFile: /src/pdns/pdns/recursordist/rec_metrics.hh
    functionUses: 0
    functionsReached:
    - end
    - find
    linkageType: ''
    returnType: bool
    signature: bool getMetricDetails(const std::string& metricName, MetricDefinition&
      metric)
  - BBCount: 6
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 1
    argNames:
    - metricType
    argTypes:
    - PrometheusMetricType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 70
    functionDepth: 0
    functionLinenumber: 70
    functionLinenumberEnd: 90
    functionName: MetricDefinitionStorage::getPrometheusStringMetricType
    functionSourceFile: /src/pdns/pdns/recursordist/rec_metrics.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string getPrometheusStringMetricType(const PrometheusMetricType
      metricType)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:32,1
    - Dst: AggressiveNSECCache::isSmallCoveringNSEC3
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:32,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:32,1
    - Dst: fromBase32Hex
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:32,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 34
      start: 12
    functionDepth: 2
    functionLinenumber: 12
    functionLinenumberEnd: 34
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc
    functionUses: 0
    functionsReached:
    - fromBase32Hex
    - AggressiveNSECCache::isSmallCoveringNSEC3
    - DNSName
    - BOOST_CHECK_EQUAL
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_small_covering_nsec3)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:39,1
    - Dst: make_unique<AggressiveNSECCache>
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:40,1
    - Dst: setDNSSECValidation
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:42,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:44,1
    - Dst: getCopy
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:52,1
    - Dst: auto::dsAnchors::clear
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:53,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:54,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:55,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:55,1
    - Dst: setState
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:57,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:62,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:66,1
    - Dst: isPartOf
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:66,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:66,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:68,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:70,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:70,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:71,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:71,1
    - Dst: addNSECRecordToLW
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:73,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:73,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:73,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:74,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:74,1
    - Dst: addNSECRecordToLW
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:76,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:76,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:76,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:77,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:77,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:80,1
    - Dst: genericDSAndDNSKEYHandler
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:82,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:82,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:84,1
    - Dst: genericDSAndDNSKEYHandler
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:85,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:85,1
    - Dst: genericDSAndDNSKEYHandler
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:89,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:93,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:94,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:95,1
    - Dst: addDS
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:96,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:96,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:97,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:97,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:98,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:101,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:103,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:104,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:104,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:105,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:105,1
    - Dst: addNSECRecordToLW
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:107,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:107,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:107,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:108,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:108,1
    - Dst: addNSECRecordToLW
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:110,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:110,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:110,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:111,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:111,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:121,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:121,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:122,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:123,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:123,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:124,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:124,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:125,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:127,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:128,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:128,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:129,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:130,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:130,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:131,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:131,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:132,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 64
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 133
      start: 36
    functionDepth: 4
    functionLinenumber: 36
    functionLinenumberEnd: 133
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - genericDSAndDNSKEYHandler
    - primeHints
    - setDNSSECValidation
    - std::unique_ptr::beginResolve
    - isRootServer
    - setState
    - QType
    - generateKeyMaterial
    - addRecordToLW
    - auto::dsAnchors::clear
    - addRRSIG
    - addNSECRecordToLW
    - vector::clear
    - BOOST_REQUIRE_EQUAL
    - std::unique_ptr::setAsyncCallback
    - isPartOf
    - DNSName
    - initSR
    - addDS
    - std::unique_ptr::getValidationState
    - ComboAddress
    - make_unique<AggressiveNSECCache>
    - BOOST_CHECK_EQUAL
    - getCopy
    - vector::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_aggressive_nsec_nxdomain)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:138,1
    - Dst: make_unique<AggressiveNSECCache>
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:139,1
    - Dst: setDNSSECValidation
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:141,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:143,1
    - Dst: getCopy
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:149,1
    - Dst: auto::dsAnchors::clear
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:150,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:151,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:152,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:152,1
    - Dst: setState
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:154,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:158,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:162,1
    - Dst: isPartOf
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:162,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:162,1
    - Dst: genericDSAndDNSKEYHandler
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:164,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:166,1
    - Dst: genericDSAndDNSKEYHandler
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:168,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:168,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:170,1
    - Dst: genericDSAndDNSKEYHandler
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:171,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:171,1
    - Dst: genericDSAndDNSKEYHandler
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:175,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:179,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:180,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:181,1
    - Dst: addDS
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:182,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:182,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:183,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:183,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:184,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:187,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:189,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:191,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:191,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:192,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:192,1
    - Dst: addNSECRecordToLW
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:195,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:195,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:195,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:196,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:196,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:207,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:207,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:208,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:209,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:209,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:210,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:210,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:211,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:213,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:214,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:214,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:215,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:216,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:216,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:217,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:217,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:218,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 55
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 219
      start: 135
    functionDepth: 4
    functionLinenumber: 135
    functionLinenumberEnd: 219
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - genericDSAndDNSKEYHandler
    - primeHints
    - setDNSSECValidation
    - std::unique_ptr::beginResolve
    - isRootServer
    - setState
    - QType
    - generateKeyMaterial
    - addRecordToLW
    - auto::dsAnchors::clear
    - addRRSIG
    - addNSECRecordToLW
    - vector::clear
    - BOOST_REQUIRE_EQUAL
    - std::unique_ptr::setAsyncCallback
    - isPartOf
    - DNSName
    - initSR
    - addDS
    - std::unique_ptr::getValidationState
    - ComboAddress
    - make_unique<AggressiveNSECCache>
    - BOOST_CHECK_EQUAL
    - getCopy
    - vector::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_aggressive_nsec_nodata)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:224,1
    - Dst: make_unique<AggressiveNSECCache>
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:225,1
    - Dst: setDNSSECValidation
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:227,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:229,1
    - Dst: getCopy
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:235,1
    - Dst: auto::dsAnchors::clear
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:236,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:237,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:238,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:238,1
    - Dst: setState
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:240,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:244,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:248,1
    - Dst: isPartOf
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:248,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:248,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:250,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:252,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:252,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:253,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:253,1
    - Dst: addNSECRecordToLW
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:255,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:255,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:255,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:256,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:256,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:256,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:259,1
    - Dst: genericDSAndDNSKEYHandler
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:261,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:261,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:263,1
    - Dst: genericDSAndDNSKEYHandler
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:264,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:264,1
    - Dst: genericDSAndDNSKEYHandler
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:268,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:272,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:273,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:274,1
    - Dst: addDS
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:275,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:275,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:276,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:276,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:277,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:280,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:282,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:284,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:284,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:285,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:285,1
    - Dst: addNSECRecordToLW
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:287,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:287,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:287,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:288,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:288,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:288,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:298,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:298,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:299,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:300,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:300,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:301,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:301,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:302,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:304,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:305,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:305,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:306,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:307,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:307,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:308,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:308,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:309,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 60
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 310
      start: 221
    functionDepth: 4
    functionLinenumber: 221
    functionLinenumberEnd: 310
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - genericDSAndDNSKEYHandler
    - primeHints
    - setDNSSECValidation
    - std::unique_ptr::beginResolve
    - isRootServer
    - setState
    - QType
    - generateKeyMaterial
    - addRecordToLW
    - auto::dsAnchors::clear
    - addRRSIG
    - addNSECRecordToLW
    - vector::clear
    - BOOST_REQUIRE_EQUAL
    - std::unique_ptr::setAsyncCallback
    - isPartOf
    - DNSName
    - initSR
    - addDS
    - std::unique_ptr::getValidationState
    - ComboAddress
    - make_unique<AggressiveNSECCache>
    - BOOST_CHECK_EQUAL
    - getCopy
    - vector::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_aggressive_nsec_nodata_wildcard)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:315,1
    - Dst: make_unique<AggressiveNSECCache>
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:316,1
    - Dst: setDNSSECValidation
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:318,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:320,1
    - Dst: getCopy
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:328,1
    - Dst: auto::dsAnchors::clear
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:329,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:330,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:331,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:331,1
    - Dst: setState
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:333,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:337,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:341,1
    - Dst: genericDSAndDNSKEYHandler
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:343,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:343,1
    - Dst: genericDSAndDNSKEYHandler
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:347,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:351,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:352,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:353,1
    - Dst: addDS
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:354,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:354,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:355,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:355,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:356,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:359,1
    - Dst: isPartOf
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:360,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:360,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:361,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:362,1
    - Dst: addNSECRecordToLW
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:365,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:365,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:365,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:366,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:366,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:367,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:370,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:371,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:372,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:372,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:373,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:373,1
    - Dst: addNSECRecordToLW
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:374,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:374,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:374,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:375,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:375,1
    - Dst: addNSECRecordToLW
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:379,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:379,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:379,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:380,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:380,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:384,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:386,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:387,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:387,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:390,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:391,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:392,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:392,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:402,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:402,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:403,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:404,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:404,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:405,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:405,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:406,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:409,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:410,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:410,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:410,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:411,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:412,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:412,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:413,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:413,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:414,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:418,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:419,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:419,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:419,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:420,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:421,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:421,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:422,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:422,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:423,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 77
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 424
      start: 312
    functionDepth: 4
    functionLinenumber: 312
    functionLinenumberEnd: 424
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - genericDSAndDNSKEYHandler
    - primeHints
    - setDNSSECValidation
    - std::unique_ptr::beginResolve
    - isRootServer
    - setState
    - QType
    - generateKeyMaterial
    - addRecordToLW
    - auto::dsAnchors::clear
    - addRRSIG
    - addNSECRecordToLW
    - vector::clear
    - BOOST_REQUIRE_EQUAL
    - std::unique_ptr::setAsyncCallback
    - isPartOf
    - DNSName
    - initSR
    - addDS
    - std::unique_ptr::getValidationState
    - ComboAddress
    - make_unique<AggressiveNSECCache>
    - BOOST_CHECK_EQUAL
    - getCopy
    - vector::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_aggressive_nsec_ancestor)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:429,1
    - Dst: make_unique<AggressiveNSECCache>
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:430,1
    - Dst: setDNSSECValidation
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:432,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:434,1
    - Dst: getCopy
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:442,1
    - Dst: auto::dsAnchors::clear
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:443,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:444,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:445,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:445,1
    - Dst: setState
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:447,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:451,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:455,1
    - Dst: isPartOf
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:455,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:455,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:457,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:459,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:459,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:460,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:460,1
    - Dst: addNSECRecordToLW
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:462,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:462,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:462,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:463,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:463,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:463,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:466,1
    - Dst: genericDSAndDNSKEYHandler
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:468,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:468,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:470,1
    - Dst: genericDSAndDNSKEYHandler
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:471,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:471,1
    - Dst: genericDSAndDNSKEYHandler
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:475,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:479,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:480,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:481,1
    - Dst: addDS
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:482,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:482,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:483,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:483,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:484,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:487,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:489,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:490,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:491,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:491,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:491,1
    - Dst: addNSECRecordToLW
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:493,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:493,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:493,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:494,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:494,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:494,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:498,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:500,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:500,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:501,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:501,1
    - Dst: addNSECRecordToLW
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:502,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:502,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:502,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:503,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:503,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:503,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:513,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:513,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:514,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:515,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:515,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:516,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:516,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:517,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:517,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:518,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:518,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:518,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:519,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:522,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:523,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:523,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:524,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:525,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:525,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:526,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:526,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:527,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:527,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:527,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:528,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:528,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:528,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:529,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:531,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:532,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:532,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:532,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:533,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:534,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:534,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:535,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:535,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:536,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:536,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:536,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:537,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:537,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:537,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:538,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 80
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 539
      start: 426
    functionDepth: 4
    functionLinenumber: 426
    functionLinenumberEnd: 539
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - genericDSAndDNSKEYHandler
    - primeHints
    - setDNSSECValidation
    - std::unique_ptr::beginResolve
    - isRootServer
    - setState
    - vector::at
    - QType
    - generateKeyMaterial
    - addRecordToLW
    - auto::dsAnchors::clear
    - addRRSIG
    - addNSECRecordToLW
    - vector::clear
    - BOOST_REQUIRE_EQUAL
    - std::unique_ptr::setAsyncCallback
    - isPartOf
    - DNSName
    - initSR
    - addDS
    - std::unique_ptr::getValidationState
    - ComboAddress
    - make_unique<AggressiveNSECCache>
    - BOOST_CHECK_EQUAL
    - getCopy
    - vector::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_aggressive_nsec_wildcard_synthesis)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:544,1
    - Dst: make_unique<AggressiveNSECCache>
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:546,1
    - Dst: setDNSSECValidation
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:548,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:550,1
    - Dst: getCopy
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:559,1
    - Dst: auto::dsAnchors::clear
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:560,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:561,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:562,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:562,1
    - Dst: setState
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:564,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:568,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:572,1
    - Dst: isPartOf
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:572,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:572,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:574,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:575,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:575,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:576,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:576,1
    - Dst: addNSEC3UnhashedRecordToLW
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:579,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:579,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:579,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:580,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:580,1
    - Dst: addNSEC3UnhashedRecordToLW
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:582,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:582,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:582,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:583,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:583,1
    - Dst: addNSEC3NarrowRecordToLW
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:585,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:585,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:585,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:586,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:586,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:589,1
    - Dst: genericDSAndDNSKEYHandler
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:591,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:591,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:593,1
    - Dst: genericDSAndDNSKEYHandler
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:594,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:594,1
    - Dst: genericDSAndDNSKEYHandler
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:598,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:602,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:603,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:604,1
    - Dst: addDS
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:605,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:605,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:606,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:606,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:607,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:610,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:612,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:613,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:613,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:614,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:614,1
    - Dst: addNSEC3UnhashedRecordToLW
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:617,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:617,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:617,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:618,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:618,1
    - Dst: addNSEC3UnhashedRecordToLW
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:620,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:620,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:620,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:621,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:621,1
    - Dst: addNSEC3NarrowRecordToLW
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:623,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:623,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:623,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:624,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:624,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:634,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:634,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:635,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:636,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:636,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:637,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:637,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:638,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:640,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:641,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:641,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:642,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:643,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:643,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:644,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:644,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:645,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 69
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 646
      start: 541
    functionDepth: 4
    functionLinenumber: 541
    functionLinenumberEnd: 646
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - genericDSAndDNSKEYHandler
    - primeHints
    - setDNSSECValidation
    - std::unique_ptr::beginResolve
    - isRootServer
    - setState
    - QType
    - generateKeyMaterial
    - addRecordToLW
    - auto::dsAnchors::clear
    - addRRSIG
    - vector::clear
    - BOOST_REQUIRE_EQUAL
    - std::unique_ptr::setAsyncCallback
    - isPartOf
    - addNSEC3UnhashedRecordToLW
    - DNSName
    - initSR
    - addDS
    - std::unique_ptr::getValidationState
    - ComboAddress
    - make_unique<AggressiveNSECCache>
    - addNSEC3NarrowRecordToLW
    - BOOST_CHECK_EQUAL
    - getCopy
    - vector::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_aggressive_nsec3_nxdomain)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:651,1
    - Dst: make_unique<AggressiveNSECCache>
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:652,1
    - Dst: setDNSSECValidation
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:654,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:656,1
    - Dst: getCopy
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:662,1
    - Dst: auto::dsAnchors::clear
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:663,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:664,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:665,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:665,1
    - Dst: setState
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:667,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:671,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:675,1
    - Dst: isPartOf
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:675,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:675,1
    - Dst: genericDSAndDNSKEYHandler
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:677,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:679,1
    - Dst: genericDSAndDNSKEYHandler
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:681,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:681,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:683,1
    - Dst: genericDSAndDNSKEYHandler
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:684,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:684,1
    - Dst: genericDSAndDNSKEYHandler
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:688,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:692,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:693,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:694,1
    - Dst: addDS
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:695,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:695,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:696,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:696,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:697,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:700,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:702,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:704,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:704,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:705,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:705,1
    - Dst: addNSEC3UnhashedRecordToLW
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:708,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:708,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:708,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:709,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:709,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:720,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:720,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:721,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:722,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:722,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:723,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:723,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:724,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:726,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:727,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:727,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:728,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:729,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:729,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:730,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:730,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:731,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 55
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 732
      start: 648
    functionDepth: 4
    functionLinenumber: 648
    functionLinenumberEnd: 732
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - genericDSAndDNSKEYHandler
    - primeHints
    - setDNSSECValidation
    - std::unique_ptr::beginResolve
    - isRootServer
    - setState
    - QType
    - generateKeyMaterial
    - addRecordToLW
    - auto::dsAnchors::clear
    - addRRSIG
    - vector::clear
    - BOOST_REQUIRE_EQUAL
    - std::unique_ptr::setAsyncCallback
    - isPartOf
    - addNSEC3UnhashedRecordToLW
    - DNSName
    - initSR
    - addDS
    - std::unique_ptr::getValidationState
    - ComboAddress
    - make_unique<AggressiveNSECCache>
    - BOOST_CHECK_EQUAL
    - getCopy
    - vector::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_aggressive_nsec3_nodata)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:737,1
    - Dst: make_unique<AggressiveNSECCache>
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:739,1
    - Dst: setDNSSECValidation
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:741,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:743,1
    - Dst: getCopy
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:749,1
    - Dst: auto::dsAnchors::clear
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:750,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:751,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:752,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:752,1
    - Dst: setState
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:754,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:758,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:762,1
    - Dst: isPartOf
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:762,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:762,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:764,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:766,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:766,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:767,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:767,1
    - Dst: addNSEC3UnhashedRecordToLW
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:769,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:769,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:769,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:770,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:770,1
    - Dst: addNSEC3UnhashedRecordToLW
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:772,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:772,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:772,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:773,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:773,1
    - Dst: addNSEC3UnhashedRecordToLW
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:775,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:775,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:775,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:776,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:776,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:776,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:779,1
    - Dst: genericDSAndDNSKEYHandler
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:781,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:781,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:783,1
    - Dst: genericDSAndDNSKEYHandler
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:784,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:784,1
    - Dst: genericDSAndDNSKEYHandler
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:788,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:792,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:793,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:794,1
    - Dst: addDS
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:795,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:795,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:796,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:796,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:797,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:800,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:802,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:804,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:804,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:805,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:805,1
    - Dst: addNSEC3NoDataNarrowRecordToLW
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:807,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:807,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:807,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:808,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:808,1
    - Dst: addNSEC3NarrowRecordToLW
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:810,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:810,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:810,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:811,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:811,1
    - Dst: addNSEC3NoDataNarrowRecordToLW
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:813,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:813,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:813,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:814,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:814,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:814,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:824,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:824,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:825,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:826,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:826,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:827,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:827,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:828,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:830,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:831,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:831,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:832,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:833,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:833,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:834,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:834,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:835,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 69
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 836
      start: 734
    functionDepth: 4
    functionLinenumber: 734
    functionLinenumberEnd: 836
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - genericDSAndDNSKEYHandler
    - primeHints
    - setDNSSECValidation
    - std::unique_ptr::beginResolve
    - isRootServer
    - setState
    - QType
    - generateKeyMaterial
    - addRecordToLW
    - auto::dsAnchors::clear
    - addRRSIG
    - vector::clear
    - BOOST_REQUIRE_EQUAL
    - std::unique_ptr::setAsyncCallback
    - isPartOf
    - addNSEC3UnhashedRecordToLW
    - addNSEC3NoDataNarrowRecordToLW
    - DNSName
    - initSR
    - addDS
    - std::unique_ptr::getValidationState
    - ComboAddress
    - make_unique<AggressiveNSECCache>
    - addNSEC3NarrowRecordToLW
    - BOOST_CHECK_EQUAL
    - getCopy
    - vector::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_aggressive_nsec3_nodata_wildcard)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:841,1
    - Dst: make_unique<AggressiveNSECCache>
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:842,1
    - Dst: setDNSSECValidation
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:844,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:846,1
    - Dst: getCopy
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:854,1
    - Dst: auto::dsAnchors::clear
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:855,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:856,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:857,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:857,1
    - Dst: setState
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:859,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:863,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:867,1
    - Dst: genericDSAndDNSKEYHandler
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:869,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:869,1
    - Dst: genericDSAndDNSKEYHandler
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:873,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:877,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:878,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:879,1
    - Dst: addDS
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:880,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:880,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:881,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:881,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:882,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:885,1
    - Dst: isPartOf
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:886,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:886,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:887,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:888,1
    - Dst: addNSEC3RecordToLW
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:892,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:892,1
    - Dst: fromBase32Hex
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:892,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:893,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:893,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:894,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:897,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:898,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:899,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:899,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:900,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:900,1
    - Dst: addNSEC3UnhashedRecordToLW
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:902,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:902,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:902,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:903,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:903,1
    - Dst: addNSEC3NarrowRecordToLW
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:905,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:905,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:905,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:906,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:906,1
    - Dst: addNSEC3RecordToLW
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:910,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:910,1
    - Dst: fromBase32Hex
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:910,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:911,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:911,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:915,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:917,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:918,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:918,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:921,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:922,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:923,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:923,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:933,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:933,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:934,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:935,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:935,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:936,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:936,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:937,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:941,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:942,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:942,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:942,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:943,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:944,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:944,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:945,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:945,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:946,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:950,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:951,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:951,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:951,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:952,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:953,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:953,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:954,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:954,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:955,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 79
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 956
      start: 838
    functionDepth: 4
    functionLinenumber: 838
    functionLinenumberEnd: 956
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - genericDSAndDNSKEYHandler
    - primeHints
    - setDNSSECValidation
    - std::unique_ptr::beginResolve
    - isRootServer
    - setState
    - QType
    - generateKeyMaterial
    - addRecordToLW
    - auto::dsAnchors::clear
    - addRRSIG
    - fromBase32Hex
    - vector::clear
    - BOOST_REQUIRE_EQUAL
    - std::unique_ptr::setAsyncCallback
    - isPartOf
    - addNSEC3UnhashedRecordToLW
    - DNSName
    - initSR
    - addDS
    - addNSEC3RecordToLW
    - std::unique_ptr::getValidationState
    - ComboAddress
    - make_unique<AggressiveNSECCache>
    - addNSEC3NarrowRecordToLW
    - BOOST_CHECK_EQUAL
    - getCopy
    - vector::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_aggressive_nsec3_ancestor)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:961,1
    - Dst: make_unique<AggressiveNSECCache>
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:962,1
    - Dst: setDNSSECValidation
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:964,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:966,1
    - Dst: getCopy
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:974,1
    - Dst: auto::dsAnchors::clear
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:975,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:976,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:977,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:977,1
    - Dst: setState
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:979,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:983,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:987,1
    - Dst: isPartOf
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:987,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:987,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:989,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:991,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:991,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:992,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:992,1
    - Dst: addNSEC3UnhashedRecordToLW
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:994,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:994,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:994,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:995,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:995,1
    - Dst: addNSEC3UnhashedRecordToLW
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:997,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:997,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:997,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:998,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:998,1
    - Dst: addNSEC3UnhashedRecordToLW
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1000,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1000,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1000,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1001,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1001,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1001,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1004,1
    - Dst: genericDSAndDNSKEYHandler
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1006,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1006,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1008,1
    - Dst: genericDSAndDNSKEYHandler
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1009,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1009,1
    - Dst: genericDSAndDNSKEYHandler
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1013,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1017,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1018,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1019,1
    - Dst: addDS
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1020,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1020,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1021,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1021,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1022,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1025,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1027,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1028,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1029,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1029,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1029,1
    - Dst: addNSEC3UnhashedRecordToLW
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1032,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1032,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1032,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1033,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1033,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1038,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1040,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1040,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1041,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1041,1
    - Dst: addNSEC3UnhashedRecordToLW
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1043,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1043,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1043,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1044,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1044,1
    - Dst: addNSEC3UnhashedRecordToLW
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1046,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1046,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1046,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1047,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1047,1
    - Dst: addNSEC3UnhashedRecordToLW
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1049,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1049,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1049,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1050,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1050,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1060,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1060,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1061,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1062,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1062,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1063,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1063,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1064,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1064,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1065,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1065,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1065,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1066,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1068,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1069,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1069,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1070,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1071,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1071,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1072,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1072,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1073,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1073,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1073,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1074,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1074,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1074,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1075,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1077,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1078,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1078,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1078,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1079,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1080,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1080,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1081,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1081,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1082,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1082,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1082,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1083,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1083,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1083,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1084,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 88
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1085
      start: 958
    functionDepth: 4
    functionLinenumber: 958
    functionLinenumberEnd: 1085
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - genericDSAndDNSKEYHandler
    - primeHints
    - setDNSSECValidation
    - std::unique_ptr::beginResolve
    - isRootServer
    - setState
    - vector::at
    - QType
    - generateKeyMaterial
    - addRecordToLW
    - auto::dsAnchors::clear
    - addRRSIG
    - vector::clear
    - BOOST_REQUIRE_EQUAL
    - std::unique_ptr::setAsyncCallback
    - isPartOf
    - addNSEC3UnhashedRecordToLW
    - DNSName
    - initSR
    - addDS
    - std::unique_ptr::getValidationState
    - ComboAddress
    - make_unique<AggressiveNSECCache>
    - BOOST_CHECK_EQUAL
    - getCopy
    - vector::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_aggressive_nsec3_wildcard_synthesis)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: make_unique<AggressiveNSECCache>
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1090,1
    - Dst: Utility::gettimeofday
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1093,1
    - Dst: vector::reserve
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1096,1
    - Dst: vector::emplace_back
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1098,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1098,1
    - Dst: DTime::DTime
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1101,1
    - Dst: DTime::set
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1102,1
    - Dst: DNSRecord::DNSRecord
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1105,1
    - Dst: DNSRecord::setContent
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1109,1
    - Dst: getRecordContent
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1109,1
    - Dst: std::make_shared<RRSIGRecordContent>
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1110,1
    - Dst: auto::insertNSEC
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1111,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1111,1
    - Dst: DTime::udiff
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1113,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1115,1
    - Dst: auto::getEntriesCount
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1115,1
    - Dst: DNSRecord::DNSRecord
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1117,1
    - Dst: DNSRecord::setContent
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1121,1
    - Dst: getRecordContent
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1121,1
    - Dst: std::make_shared<RRSIGRecordContent>
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1122,1
    - Dst: auto::insertNSEC
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1123,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1123,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1126,1
    - Dst: auto::getEntriesCount
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1126,1
    - Dst: DTime::udiff
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1128,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1130,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 22
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1131
      start: 1087
    functionDepth: 0
    functionLinenumber: 1087
    functionLinenumberEnd: 1131
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc
    functionUses: 0
    functionsReached:
    - std::to_string
    - DNSRecord::DNSRecord
    - BOOST_CHECK
    - DTime::udiff
    - make_unique<AggressiveNSECCache>
    - Utility::gettimeofday
    - DTime::DTime
    - DNSName
    - BOOST_CHECK_EQUAL
    - auto::getEntriesCount
    - getRecordContent
    - vector::emplace_back
    - DTime::set
    - vector::reserve
    - DNSRecord::setContent
    - auto::insertNSEC
    - std::make_shared<RRSIGRecordContent>
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_aggressive_nsec_replace)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: make_unique<AggressiveNSECCache>
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1135,1
    - Dst: Utility::gettimeofday
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1138,1
    - Dst: DNSRecord::DNSRecord
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1140,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1141,1
    - Dst: DNSRecord::setContent
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1144,1
    - Dst: getRecordContent
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1144,1
    - Dst: std::make_shared<RRSIGRecordContent>
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1147,1
    - Dst: std::vector::emplace_back
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1148,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1148,1
    - Dst: auto::insertNSEC
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1150,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1150,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1152,1
    - Dst: auto::getEntriesCount
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1152,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1153
      start: 1133
    functionDepth: 0
    functionLinenumber: 1133
    functionLinenumberEnd: 1153
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc
    functionUses: 0
    functionsReached:
    - std::move
    - DNSRecord::DNSRecord
    - auto::getEntriesCount
    - make_unique<AggressiveNSECCache>
    - DNSName
    - Utility::gettimeofday
    - std::vector::emplace_back
    - BOOST_CHECK_EQUAL
    - getRecordContent
    - DNSRecord::setContent
    - auto::insertNSEC
    - std::make_shared<RRSIGRecordContent>
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_aggressive_nsec_very_big_replace)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: make_unique<AggressiveNSECCache>
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1157,1
    - Dst: Utility::gettimeofday
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1160,1
    - Dst: DNSRecord::DNSRecord
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1162,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1163,1
    - Dst: DNSRecord::setContent
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1166,1
    - Dst: getRecordContent
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1166,1
    - Dst: std::make_shared<RRSIGRecordContent>
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1167,1
    - Dst: auto::insertNSEC
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1168,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1168,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1170,1
    - Dst: DNSRecord::setContent
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1171,1
    - Dst: getRecordContent
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1171,1
    - Dst: auto::insertNSEC
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1172,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1172,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1174,1
    - Dst: DNSRecord::setContent
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1177,1
    - Dst: getRecordContent
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1177,1
    - Dst: std::make_shared<RRSIGRecordContent>
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1178,1
    - Dst: auto::insertNSEC
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1179,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1179,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1181,1
    - Dst: auto::getEntriesCount
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1181,1
    - Dst: auto::removeZoneInfo
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1184,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1184,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1185,1
    - Dst: auto::getEntriesCount
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1185,1
    - Dst: auto::insertNSEC
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1188,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1188,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1189,1
    - Dst: auto::getEntriesCount
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1189,1
    - Dst: auto::removeZoneInfo
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1192,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1192,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1193,1
    - Dst: auto::getEntriesCount
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1193,1
    - Dst: auto::insertNSEC
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1196,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1196,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1197,1
    - Dst: auto::getEntriesCount
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1197,1
    - Dst: auto::removeZoneInfo
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1200,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1200,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1201,1
    - Dst: auto::getEntriesCount
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1201,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 27
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1202
      start: 1155
    functionDepth: 0
    functionLinenumber: 1155
    functionLinenumberEnd: 1202
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc
    functionUses: 0
    functionsReached:
    - DNSRecord::DNSRecord
    - auto::removeZoneInfo
    - auto::getEntriesCount
    - make_unique<AggressiveNSECCache>
    - DNSName
    - Utility::gettimeofday
    - BOOST_CHECK_EQUAL
    - getRecordContent
    - DNSRecord::setContent
    - auto::insertNSEC
    - std::make_shared<RRSIGRecordContent>
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_aggressive_nsec_wiping)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: make_unique<AggressiveNSECCache>
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1206,1
    - Dst: Utility::gettimeofday
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1209,1
    - Dst: DNSRecord::DNSRecord
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1211,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1212,1
    - Dst: DNSRecord::setContent
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1215,1
    - Dst: getRecordContent
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1215,1
    - Dst: std::make_shared<RRSIGRecordContent>
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1216,1
    - Dst: auto::insertNSEC
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1217,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1217,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1219,1
    - Dst: DNSRecord::setContent
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1220,1
    - Dst: getRecordContent
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1220,1
    - Dst: auto::insertNSEC
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1221,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1221,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1223,1
    - Dst: auto::getEntriesCount
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1223,1
    - Dst: auto::prune
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1226,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1227,1
    - Dst: auto::getEntriesCount
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1227,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1229,1
    - Dst: DNSRecord::setContent
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1232,1
    - Dst: getRecordContent
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1232,1
    - Dst: std::make_shared<RRSIGRecordContent>
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1233,1
    - Dst: auto::insertNSEC
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1234,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1234,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1236,1
    - Dst: auto::getEntriesCount
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1236,1
    - Dst: auto::prune
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1241,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1242,1
    - Dst: auto::getEntriesCount
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1242,1
    - Dst: auto::prune
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1246,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1247,1
    - Dst: auto::getEntriesCount
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1247,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 24
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1248
      start: 1204
    functionDepth: 1
    functionLinenumber: 1204
    functionLinenumberEnd: 1248
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc
    functionUses: 0
    functionsReached:
    - DNSRecord::DNSRecord
    - auto::getEntriesCount
    - make_unique<AggressiveNSECCache>
    - DNSName
    - Utility::gettimeofday
    - BOOST_CHECK_EQUAL
    - auto::prune
    - getRecordContent
    - DNSRecord::setContent
    - auto::insertNSEC
    - std::make_shared<RRSIGRecordContent>
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_aggressive_nsec_pruning)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: make_unique<AggressiveNSECCache>
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1252,1
    - Dst: std::vector::emplace_back
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1255,1
    - Dst: std::vector::emplace_back
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1256,1
    - Dst: std::vector::emplace_back
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1257,1
    - Dst: std::vector::emplace_back
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1258,1
    - Dst: std::vector::emplace_back
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1259,1
    - Dst: std::vector::emplace_back
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1260,1
    - Dst: std::vector::emplace_back
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1261,1
    - Dst: std::vector::emplace_back
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1262,1
    - Dst: Utility::gettimeofday
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1265,1
    - Dst: DNSRecord::DNSRecord
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1267,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1268,1
    - Dst: DNSRecord::setContent
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1271,1
    - Dst: getRecordContent
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1271,1
    - Dst: std::make_shared<RRSIGRecordContent>
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1272,1
    - Dst: auto::insertNSEC
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1273,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1273,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1275,1
    - Dst: DNSRecord::setContent
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1276,1
    - Dst: getRecordContent
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1276,1
    - Dst: auto::insertNSEC
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1277,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1277,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1279,1
    - Dst: DNSRecord::setContent
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1282,1
    - Dst: getRecordContent
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1282,1
    - Dst: std::make_shared<RRSIGRecordContent>
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1283,1
    - Dst: auto::insertNSEC
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1284,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1284,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1286,1
    - Dst: auto::getEntriesCount
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1286,1
    - Dst: pdns::UniqueFilePtr
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1288,1
    - Dst: tmpfile
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1288,1
    - Dst: BOOST_FAIL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1290,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1293,1
    - Dst: auto::dumpToFile
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1293,1
    - Dst: rewind
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1295,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1295,1
    - Dst: getline
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1300,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1300,1
    - Dst: BOOST_FAIL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1302,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1304,1
    - Dst: std::vector::clear
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1307,1
    - Dst: std::vector::emplace_back
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1308,1
    - Dst: std::vector::emplace_back
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1309,1
    - Dst: std::vector::emplace_back
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1310,1
    - Dst: std::vector::emplace_back
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1311,1
    - Dst: std::vector::emplace_back
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1312,1
    - Dst: std::vector::emplace_back
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1313,1
    - Dst: std::vector::emplace_back
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1314,1
    - Dst: std::vector::emplace_back
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1315,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1317,1
    - Dst: DNSRecord::setContent
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1320,1
    - Dst: getRecordContent
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1320,1
    - Dst: std::make_shared<RRSIGRecordContent>
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1321,1
    - Dst: auto::insertNSEC
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1322,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1322,1
    - Dst: rewind
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1324,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1324,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1325,1
    - Dst: auto::dumpToFile
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1325,1
    - Dst: rewind
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1327,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1327,1
    - Dst: getline
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1330,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1330,1
    - Dst: BOOST_FAIL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1332,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1334,1
    - Dst: free
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1340,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 59
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1341
      start: 1250
    functionDepth: 1
    functionLinenumber: 1250
    functionLinenumberEnd: 1341
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc
    functionUses: 0
    functionsReached:
    - DNSRecord::DNSRecord
    - getline
    - DNSRecord::setContent
    - pdns::UniqueFilePtr
    - std::make_shared<RRSIGRecordContent>
    - free
    - auto::insertNSEC
    - auto::get
    - tmpfile
    - DNSName
    - Utility::gettimeofday
    - getRecordContent
    - std::vector::clear
    - auto::dumpToFile
    - auto::getEntriesCount
    - std::vector::emplace_back
    - make_unique<AggressiveNSECCache>
    - BOOST_CHECK_EQUAL
    - BOOST_FAIL
    - rewind
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_aggressive_nsec_dump)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pdns::max
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1348,1
    - Dst: getDenial
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1349,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1349,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1351,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1354,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1354,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 4
    argNames:
    - ' cache'
    - now
    - ' name'
    - ' qtype'
    argTypes:
    - std::unique_ptr<AggressiveNSECCache>
    - time_t
    - DNSName
    - QType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1357
      start: 1343
    functionDepth: 0
    functionLinenumber: 1343
    functionLinenumberEnd: 1357
    functionName: getDenialWrapper
    functionSourceFile: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc
    functionUses: 0
    functionsReached:
    - pdns::max
    - std::vector::size
    - getDenial
    - BOOST_CHECK_EQUAL
    - ComboAddress
    linkageType: ''
    returnType: bool
    signature: bool getDenialWrapper(std::unique_ptr<AggressiveNSECCache>& cache,
      time_t now, const DNSName& name, const QType& qtype, const std::optional<int>
      expectedResult = std::nullopt, const std::optional<size_t> expectedRecordsCount
      = std::nullopt)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: make_unique<AggressiveNSECCache>
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1364,1
    - Dst: std::make_unique<MemRecursorCache>
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1365,1
    - Dst: time
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1368,1
    - Dst: DNSRecord::DNSRecord
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1373,1
    - Dst: DNSRecord::setContent
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1377,1
    - Dst: std::make_shared<SOARecordContent>
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1377,1
    - Dst: static_cast<uint32_t>
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1378,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1380,1
    - Dst: replace
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1382,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1382,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1383,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1383,1
    - Dst: hashQNameWithSalt
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1390,1
    - Dst: DNSRecord::DNSRecord
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1392,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1393,1
    - Dst: toBase32Hex
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1393,1
    - Dst: NSEC3RecordContent::NSEC3RecordContent
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1397,1
    - Dst: incrementHash
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1403,1
    - Dst: NSEC3RecordContent::set
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1405,1
    - Dst: DNSRecord::setContent
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1408,1
    - Dst: std::make_shared<NSEC3RecordContent>
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1408,1
    - Dst: std::make_shared<RRSIGRecordContent>
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1409,1
    - Dst: auto::insertNSEC
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1410,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1412,1
    - Dst: auto::getEntriesCount
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1412,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1416,1
    - Dst: getDenialWrapper
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1416,1
    - Dst: hashQNameWithSalt
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1420,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1421,1
    - Dst: toBase32Hex
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1421,1
    - Dst: incrementHash
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1429,1
    - Dst: NSEC3RecordContent::set
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1431,1
    - Dst: DNSRecord::setContent
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1434,1
    - Dst: std::make_shared<NSEC3RecordContent>
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1434,1
    - Dst: std::make_shared<RRSIGRecordContent>
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1435,1
    - Dst: auto::insertNSEC
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1436,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1439,1
    - Dst: auto::getEntriesCount
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1439,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1443,1
    - Dst: getDenialWrapper
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1443,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1446,1
    - Dst: getDenialWrapper
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1446,1
    - Dst: hashQNameWithSalt
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1450,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1451,1
    - Dst: toBase32Hex
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1451,1
    - Dst: incrementHash
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1459,1
    - Dst: NSEC3RecordContent::set
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1461,1
    - Dst: DNSRecord::setContent
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1464,1
    - Dst: std::make_shared<NSEC3RecordContent>
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1464,1
    - Dst: std::make_shared<RRSIGRecordContent>
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1465,1
    - Dst: auto::insertNSEC
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1466,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1469,1
    - Dst: auto::getEntriesCount
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1469,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1473,1
    - Dst: getDenialWrapper
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1473,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1476,1
    - Dst: getDenialWrapper
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1476,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 63
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1477
      start: 1359
    functionDepth: 1
    functionLinenumber: 1359
    functionLinenumberEnd: 1477
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc
    functionUses: 0
    functionsReached:
    - DNSRecord::DNSRecord
    - static_cast<uint32_t>
    - std::make_shared<SOARecordContent>
    - DNSRecord::setContent
    - replace
    - std::make_shared<RRSIGRecordContent>
    - hashQNameWithSalt
    - std::make_shared<NSEC3RecordContent>
    - std::vector::push_back
    - time
    - QType
    - size
    - NSEC3RecordContent::NSEC3RecordContent
    - incrementHash
    - auto::insertNSEC
    - DNSName
    - getDenialWrapper
    - NSEC3RecordContent::set
    - std::make_unique<MemRecursorCache>
    - make_unique<AggressiveNSECCache>
    - BOOST_CHECK_EQUAL
    - auto::getEntriesCount
    - toBase32Hex
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_aggressive_nsec3_rollover)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: make_unique<AggressiveNSECCache>
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1482,1
    - Dst: std::make_unique<MemRecursorCache>
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1483,1
    - Dst: time
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1486,1
    - Dst: DNSRecord::DNSRecord
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1491,1
    - Dst: DNSRecord::setContent
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1495,1
    - Dst: std::make_shared<SOARecordContent>
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1495,1
    - Dst: static_cast<uint32_t>
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1496,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1498,1
    - Dst: replace
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1500,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1500,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1501,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1501,1
    - Dst: DNSRecord::DNSRecord
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1504,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1505,1
    - Dst: DNSRecord::setContent
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1508,1
    - Dst: getRecordContent
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1508,1
    - Dst: std::make_shared<RRSIGRecordContent>
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1509,1
    - Dst: auto::insertNSEC
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1510,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1510,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1511,1
    - Dst: auto::getEntriesCount
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1511,1
    - Dst: hashQNameWithSalt
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1516,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1518,1
    - Dst: toBase32Hex
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1518,1
    - Dst: NSEC3RecordContent::NSEC3RecordContent
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1522,1
    - Dst: incrementHash
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1528,1
    - Dst: NSEC3RecordContent::set
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1530,1
    - Dst: DNSRecord::setContent
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1533,1
    - Dst: std::make_shared<NSEC3RecordContent>
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1533,1
    - Dst: std::make_shared<RRSIGRecordContent>
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1534,1
    - Dst: auto::insertNSEC
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1535,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1538,1
    - Dst: auto::getEntriesCount
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1538,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 33
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1539
      start: 1479
    functionDepth: 0
    functionLinenumber: 1479
    functionLinenumberEnd: 1539
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc
    functionUses: 0
    functionsReached:
    - DNSRecord::DNSRecord
    - static_cast<uint32_t>
    - std::make_shared<SOARecordContent>
    - DNSRecord::setContent
    - replace
    - std::make_shared<RRSIGRecordContent>
    - hashQNameWithSalt
    - std::make_shared<NSEC3RecordContent>
    - std::vector::push_back
    - time
    - QType
    - size
    - NSEC3RecordContent::NSEC3RecordContent
    - incrementHash
    - auto::insertNSEC
    - DNSName
    - getRecordContent
    - NSEC3RecordContent::set
    - std::make_unique<MemRecursorCache>
    - make_unique<AggressiveNSECCache>
    - BOOST_CHECK_EQUAL
    - auto::getEntriesCount
    - toBase32Hex
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_aggressive_nsec_to_nsec3_transition)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: make_unique<AggressiveNSECCache>
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1544,1
    - Dst: std::make_unique<MemRecursorCache>
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1545,1
    - Dst: time
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1548,1
    - Dst: DNSRecord::DNSRecord
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1553,1
    - Dst: DNSRecord::setContent
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1557,1
    - Dst: std::make_shared<SOARecordContent>
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1557,1
    - Dst: static_cast<uint32_t>
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1558,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1560,1
    - Dst: replace
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1562,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1562,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1563,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1563,1
    - Dst: hashQNameWithSalt
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1569,1
    - Dst: DNSRecord::DNSRecord
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1571,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1572,1
    - Dst: toBase32Hex
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1572,1
    - Dst: NSEC3RecordContent::NSEC3RecordContent
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1576,1
    - Dst: incrementHash
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1582,1
    - Dst: NSEC3RecordContent::set
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1584,1
    - Dst: DNSRecord::setContent
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1587,1
    - Dst: std::make_shared<NSEC3RecordContent>
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1587,1
    - Dst: std::make_shared<RRSIGRecordContent>
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1588,1
    - Dst: auto::insertNSEC
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1589,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1591,1
    - Dst: auto::getEntriesCount
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1591,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1594,1
    - Dst: DNSRecord::setContent
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1597,1
    - Dst: getRecordContent
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1597,1
    - Dst: std::make_shared<RRSIGRecordContent>
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1598,1
    - Dst: auto::insertNSEC
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1599,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1599,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1602,1
    - Dst: auto::getEntriesCount
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1602,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 33
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1603
      start: 1541
    functionDepth: 0
    functionLinenumber: 1541
    functionLinenumberEnd: 1603
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc
    functionUses: 0
    functionsReached:
    - DNSRecord::DNSRecord
    - static_cast<uint32_t>
    - std::make_shared<SOARecordContent>
    - DNSRecord::setContent
    - replace
    - std::make_shared<RRSIGRecordContent>
    - hashQNameWithSalt
    - std::make_shared<NSEC3RecordContent>
    - std::vector::push_back
    - time
    - QType
    - size
    - NSEC3RecordContent::NSEC3RecordContent
    - incrementHash
    - auto::insertNSEC
    - DNSName
    - getRecordContent
    - NSEC3RecordContent::set
    - std::make_unique<MemRecursorCache>
    - make_unique<AggressiveNSECCache>
    - BOOST_CHECK_EQUAL
    - auto::getEntriesCount
    - toBase32Hex
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_aggressive_nsec3_to_nsec_transition)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: make_unique<AggressiveNSECCache>
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1607,1
    - Dst: std::make_unique<MemRecursorCache>
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1608,1
    - Dst: time
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1611,1
    - Dst: DNSRecord::DNSRecord
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1616,1
    - Dst: DNSRecord::setContent
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1620,1
    - Dst: std::make_shared<SOARecordContent>
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1620,1
    - Dst: static_cast<uint32_t>
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1621,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1623,1
    - Dst: replace
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1625,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1625,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1626,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1626,1
    - Dst: make_unique<AggressiveNSECCache>
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1629,1
    - Dst: DNSRecord::DNSRecord
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1632,1
    - Dst: NSECRecordContent::NSECRecordContent
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1637,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1638,1
    - Dst: NSECRecordContent::set
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1640,1
    - Dst: DNSRecord::setContent
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1643,1
    - Dst: std::make_shared<NSECRecordContent>
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1643,1
    - Dst: std::make_shared<RRSIGRecordContent>
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1644,1
    - Dst: auto::insertNSEC
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1645,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1647,1
    - Dst: auto::getEntriesCount
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1647,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1650,1
    - Dst: getDenialWrapper
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1650,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1652,1
    - Dst: getDenialWrapper
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1652,1
    - Dst: make_unique<AggressiveNSECCache>
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1656,1
    - Dst: DNSRecord::DNSRecord
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1659,1
    - Dst: NSECRecordContent::NSECRecordContent
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1664,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1665,1
    - Dst: NSECRecordContent::set
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1667,1
    - Dst: DNSRecord::setContent
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1670,1
    - Dst: std::make_shared<NSECRecordContent>
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1670,1
    - Dst: std::make_shared<RRSIGRecordContent>
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1671,1
    - Dst: auto::insertNSEC
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1672,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1674,1
    - Dst: auto::getEntriesCount
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1674,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1677,1
    - Dst: getDenialWrapper
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1677,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1679,1
    - Dst: getDenialWrapper
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1679,1
    - Dst: make_unique<AggressiveNSECCache>
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1683,1
    - Dst: DNSRecord::DNSRecord
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1686,1
    - Dst: NSECRecordContent::NSECRecordContent
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1691,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1692,1
    - Dst: NSECRecordContent::set
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1694,1
    - Dst: DNSRecord::setContent
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1697,1
    - Dst: std::make_shared<NSECRecordContent>
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1697,1
    - Dst: std::make_shared<RRSIGRecordContent>
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1698,1
    - Dst: auto::insertNSEC
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1699,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1701,1
    - Dst: auto::getEntriesCount
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1701,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1704,1
    - Dst: getDenialWrapper
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1704,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1706,1
    - Dst: getDenialWrapper
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1706,1
    - Dst: make_unique<AggressiveNSECCache>
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1711,1
    - Dst: DNSRecord::DNSRecord
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1717,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1718,1
    - Dst: NSECRecordContent::NSECRecordContent
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1722,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1723,1
    - Dst: NSECRecordContent::set
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1725,1
    - Dst: DNSRecord::setContent
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1728,1
    - Dst: std::make_shared<NSECRecordContent>
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1728,1
    - Dst: std::make_shared<RRSIGRecordContent>
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1729,1
    - Dst: auto::insertNSEC
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1730,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1732,1
    - Dst: auto::getEntriesCount
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1732,1
    - Dst: DNSRecord::DNSRecord
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1736,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1737,1
    - Dst: NSECRecordContent::NSECRecordContent
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1741,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1742,1
    - Dst: NSECRecordContent::set
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1744,1
    - Dst: DNSRecord::setContent
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1747,1
    - Dst: std::make_shared<NSECRecordContent>
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1747,1
    - Dst: std::make_shared<RRSIGRecordContent>
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1748,1
    - Dst: auto::insertNSEC
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1749,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1751,1
    - Dst: auto::getEntriesCount
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1751,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1755,1
    - Dst: getDenialWrapper
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1755,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1758,1
    - Dst: getDenialWrapper
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1758,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 74
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1760
      start: 1605
    functionDepth: 1
    functionLinenumber: 1605
    functionLinenumberEnd: 1760
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc
    functionUses: 0
    functionsReached:
    - DNSRecord::DNSRecord
    - static_cast<uint32_t>
    - std::make_shared<SOARecordContent>
    - DNSRecord::setContent
    - replace
    - std::make_shared<RRSIGRecordContent>
    - NSECRecordContent::NSECRecordContent
    - std::vector::push_back
    - time
    - QType
    - size
    - auto::insertNSEC
    - std::make_shared<NSECRecordContent>
    - DNSName
    - NSECRecordContent::set
    - getDenialWrapper
    - std::make_unique<MemRecursorCache>
    - make_unique<AggressiveNSECCache>
    - BOOST_CHECK_EQUAL
    - auto::getEntriesCount
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_aggressive_nsec_ancestor_cases)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: make_unique<AggressiveNSECCache>
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1765,1
    - Dst: std::make_unique<MemRecursorCache>
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1766,1
    - Dst: time
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1769,1
    - Dst: DNSRecord::DNSRecord
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1774,1
    - Dst: DNSRecord::setContent
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1778,1
    - Dst: std::make_shared<SOARecordContent>
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1778,1
    - Dst: static_cast<uint32_t>
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1779,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1781,1
    - Dst: replace
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1783,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1783,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1784,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1784,1
    - Dst: make_unique<AggressiveNSECCache>
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1790,1
    - Dst: hashQNameWithSalt
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1793,1
    - Dst: DNSRecord::DNSRecord
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1794,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1795,1
    - Dst: toBase32Hex
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1795,1
    - Dst: NSEC3RecordContent::NSEC3RecordContent
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1799,1
    - Dst: incrementHash
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1805,1
    - Dst: NSEC3RecordContent::set
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1807,1
    - Dst: DNSRecord::setContent
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1810,1
    - Dst: std::make_shared<NSEC3RecordContent>
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1810,1
    - Dst: std::make_shared<RRSIGRecordContent>
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1811,1
    - Dst: auto::insertNSEC
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1812,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1814,1
    - Dst: auto::getEntriesCount
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1814,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1817,1
    - Dst: getDenialWrapper
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1817,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1819,1
    - Dst: getDenialWrapper
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1819,1
    - Dst: make_unique<AggressiveNSECCache>
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1823,1
    - Dst: hashQNameWithSalt
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1826,1
    - Dst: DNSRecord::DNSRecord
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1827,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1828,1
    - Dst: toBase32Hex
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1828,1
    - Dst: NSEC3RecordContent::NSEC3RecordContent
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1832,1
    - Dst: incrementHash
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1838,1
    - Dst: NSEC3RecordContent::set
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1840,1
    - Dst: DNSRecord::setContent
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1843,1
    - Dst: std::make_shared<NSEC3RecordContent>
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1843,1
    - Dst: std::make_shared<RRSIGRecordContent>
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1844,1
    - Dst: auto::insertNSEC
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1845,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1847,1
    - Dst: auto::getEntriesCount
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1847,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1850,1
    - Dst: getDenialWrapper
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1850,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1852,1
    - Dst: getDenialWrapper
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1852,1
    - Dst: make_unique<AggressiveNSECCache>
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1856,1
    - Dst: hashQNameWithSalt
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1859,1
    - Dst: DNSRecord::DNSRecord
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1860,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1861,1
    - Dst: toBase32Hex
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1861,1
    - Dst: NSEC3RecordContent::NSEC3RecordContent
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1865,1
    - Dst: incrementHash
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1871,1
    - Dst: NSEC3RecordContent::set
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1873,1
    - Dst: DNSRecord::setContent
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1876,1
    - Dst: std::make_shared<NSEC3RecordContent>
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1876,1
    - Dst: std::make_shared<RRSIGRecordContent>
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1877,1
    - Dst: auto::insertNSEC
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1878,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1880,1
    - Dst: auto::getEntriesCount
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1880,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1883,1
    - Dst: getDenialWrapper
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1883,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1885,1
    - Dst: getDenialWrapper
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1885,1
    - Dst: make_unique<AggressiveNSECCache>
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1890,1
    - Dst: hashQNameWithSalt
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1899,1
    - Dst: DNSRecord::DNSRecord
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1900,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1901,1
    - Dst: toBase32Hex
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1901,1
    - Dst: NSEC3RecordContent::NSEC3RecordContent
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1905,1
    - Dst: incrementHash
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1911,1
    - Dst: NSEC3RecordContent::set
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1913,1
    - Dst: DNSRecord::setContent
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1916,1
    - Dst: std::make_shared<NSEC3RecordContent>
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1916,1
    - Dst: std::make_shared<RRSIGRecordContent>
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1917,1
    - Dst: auto::insertNSEC
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1918,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1920,1
    - Dst: auto::getEntriesCount
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1920,1
    - Dst: hashQNameWithSalt
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1924,1
    - Dst: decrementHash
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1925,1
    - Dst: DNSRecord::DNSRecord
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1927,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1928,1
    - Dst: toBase32Hex
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1928,1
    - Dst: NSEC3RecordContent::NSEC3RecordContent
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1932,1
    - Dst: incrementHash
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1938,1
    - Dst: incrementHash
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1939,1
    - Dst: NSEC3RecordContent::set
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1941,1
    - Dst: DNSRecord::setContent
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1944,1
    - Dst: std::make_shared<NSEC3RecordContent>
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1944,1
    - Dst: std::make_shared<RRSIGRecordContent>
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1945,1
    - Dst: auto::insertNSEC
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1946,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1948,1
    - Dst: auto::getEntriesCount
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1948,1
    - Dst: hashQNameWithSalt
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1952,1
    - Dst: decrementHash
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1953,1
    - Dst: DNSRecord::DNSRecord
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1955,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1956,1
    - Dst: toBase32Hex
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1956,1
    - Dst: NSEC3RecordContent::NSEC3RecordContent
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1960,1
    - Dst: incrementHash
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1966,1
    - Dst: incrementHash
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1967,1
    - Dst: NSEC3RecordContent::set
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1969,1
    - Dst: DNSRecord::setContent
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1972,1
    - Dst: std::make_shared<NSEC3RecordContent>
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1972,1
    - Dst: std::make_shared<RRSIGRecordContent>
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1973,1
    - Dst: auto::insertNSEC
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1974,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1976,1
    - Dst: auto::getEntriesCount
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1976,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1980,1
    - Dst: getDenialWrapper
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1980,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1982,1
    - Dst: getDenialWrapper
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1982,1
    - Dst: make_unique<AggressiveNSECCache>
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1986,1
    - Dst: hashQNameWithSalt
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1995,1
    - Dst: DNSRecord::DNSRecord
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1996,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1997,1
    - Dst: toBase32Hex
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:1997,1
    - Dst: NSEC3RecordContent::NSEC3RecordContent
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2001,1
    - Dst: incrementHash
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2007,1
    - Dst: NSEC3RecordContent::set
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2010,1
    - Dst: DNSRecord::setContent
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2013,1
    - Dst: std::make_shared<NSEC3RecordContent>
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2013,1
    - Dst: std::make_shared<RRSIGRecordContent>
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2014,1
    - Dst: auto::insertNSEC
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2015,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2017,1
    - Dst: auto::getEntriesCount
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2017,1
    - Dst: hashQNameWithSalt
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2021,1
    - Dst: decrementHash
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2022,1
    - Dst: DNSRecord::DNSRecord
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2024,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2025,1
    - Dst: toBase32Hex
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2025,1
    - Dst: NSEC3RecordContent::NSEC3RecordContent
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2029,1
    - Dst: incrementHash
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2035,1
    - Dst: incrementHash
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2036,1
    - Dst: NSEC3RecordContent::set
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2038,1
    - Dst: DNSRecord::setContent
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2041,1
    - Dst: std::make_shared<NSEC3RecordContent>
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2041,1
    - Dst: std::make_shared<RRSIGRecordContent>
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2042,1
    - Dst: auto::insertNSEC
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2043,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2045,1
    - Dst: auto::getEntriesCount
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2045,1
    - Dst: hashQNameWithSalt
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2049,1
    - Dst: decrementHash
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2050,1
    - Dst: DNSRecord::DNSRecord
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2052,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2053,1
    - Dst: toBase32Hex
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2053,1
    - Dst: NSEC3RecordContent::NSEC3RecordContent
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2057,1
    - Dst: incrementHash
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2063,1
    - Dst: incrementHash
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2064,1
    - Dst: NSEC3RecordContent::set
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2066,1
    - Dst: DNSRecord::setContent
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2069,1
    - Dst: std::make_shared<NSEC3RecordContent>
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2069,1
    - Dst: std::make_shared<RRSIGRecordContent>
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2070,1
    - Dst: auto::insertNSEC
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2071,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2073,1
    - Dst: auto::getEntriesCount
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2073,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2077,1
    - Dst: getDenialWrapper
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2077,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2079,1
    - Dst: getDenialWrapper
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2079,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 172
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2081
      start: 1762
    functionDepth: 1
    functionLinenumber: 1762
    functionLinenumberEnd: 2081
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc
    functionUses: 0
    functionsReached:
    - DNSRecord::DNSRecord
    - static_cast<uint32_t>
    - std::make_shared<SOARecordContent>
    - DNSRecord::setContent
    - replace
    - std::make_shared<RRSIGRecordContent>
    - hashQNameWithSalt
    - std::make_shared<NSEC3RecordContent>
    - std::vector::push_back
    - decrementHash
    - time
    - QType
    - size
    - NSEC3RecordContent::NSEC3RecordContent
    - incrementHash
    - auto::insertNSEC
    - DNSName
    - getDenialWrapper
    - NSEC3RecordContent::set
    - std::make_unique<MemRecursorCache>
    - make_unique<AggressiveNSECCache>
    - BOOST_CHECK_EQUAL
    - auto::getEntriesCount
    - toBase32Hex
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_aggressive_nsec3_ancestor_cases)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::make_unique<MemRecursorCache>
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2086,1
    - Dst: time
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2089,1
    - Dst: DNSRecord::DNSRecord
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2094,1
    - Dst: DNSRecord::setContent
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2098,1
    - Dst: std::make_shared<SOARecordContent>
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2098,1
    - Dst: static_cast<uint32_t>
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2099,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2101,1
    - Dst: replace
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2103,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2103,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2104,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2104,1
    - Dst: hashQNameWithSalt
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2110,1
    - Dst: DNSRecord::DNSRecord
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2111,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2112,1
    - Dst: toBase32Hex
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2112,1
    - Dst: NSEC3RecordContent::NSEC3RecordContent
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2116,1
    - Dst: incrementHash
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2122,1
    - Dst: NSEC3RecordContent::set
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2124,1
    - Dst: DNSRecord::setContent
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2127,1
    - Dst: std::make_shared<NSEC3RecordContent>
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2127,1
    - Dst: std::make_shared<RRSIGRecordContent>
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2128,1
    - Dst: insertNSEC
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2129,1
    - Dst: hashQNameWithSalt
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2134,1
    - Dst: decrementHash
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2136,1
    - Dst: DNSRecord::DNSRecord
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2137,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2138,1
    - Dst: toBase32Hex
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2138,1
    - Dst: NSEC3RecordContent::NSEC3RecordContent
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2142,1
    - Dst: incrementHash
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2148,1
    - Dst: NSEC3RecordContent::set
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2150,1
    - Dst: DNSRecord::setContent
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2153,1
    - Dst: std::make_shared<NSEC3RecordContent>
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2153,1
    - Dst: std::make_shared<RRSIGRecordContent>
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2154,1
    - Dst: insertNSEC
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2155,1
    - Dst: hashQNameWithSalt
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2160,1
    - Dst: decrementHash
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2162,1
    - Dst: DNSRecord::DNSRecord
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2163,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2164,1
    - Dst: toBase32Hex
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2164,1
    - Dst: NSEC3RecordContent::NSEC3RecordContent
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2168,1
    - Dst: incrementHash
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2174,1
    - Dst: NSEC3RecordContent::set
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2176,1
    - Dst: DNSRecord::setContent
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2179,1
    - Dst: std::make_shared<NSEC3RecordContent>
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2179,1
    - Dst: std::make_shared<RRSIGRecordContent>
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2180,1
    - Dst: insertNSEC
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2181,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2183,1
    - Dst: getEntriesCount
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2183,1
    - Dst: make_unique<AggressiveNSECCache>
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2192,1
    - Dst: insertNSEC3s
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2193,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2200,1
    - Dst: DNSName::countLabels
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2200,1
    - Dst: DNSName::countLabels
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2200,1
    - Dst: BOOST_CHECK_LE
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2201,1
    - Dst: getNSEC3DenialProofWorstCaseIterationsCount
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2201,1
    - Dst: DNSName::countLabels
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2201,1
    - Dst: DNSName::countLabels
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2201,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2201,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2202,1
    - Dst: getDenialWrapper
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2202,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2207,1
    - Dst: DNSName::countLabels
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2207,1
    - Dst: DNSName::countLabels
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2207,1
    - Dst: BOOST_CHECK_GT
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2208,1
    - Dst: getNSEC3DenialProofWorstCaseIterationsCount
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2208,1
    - Dst: DNSName::countLabels
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2208,1
    - Dst: DNSName::countLabels
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2208,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2208,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2209,1
    - Dst: getDenialWrapper
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2209,1
    - Dst: make_unique<AggressiveNSECCache>
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2219,1
    - Dst: insertNSEC3s
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2220,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2227,1
    - Dst: DNSName::countLabels
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2227,1
    - Dst: DNSName::countLabels
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2227,1
    - Dst: BOOST_CHECK_LE
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2228,1
    - Dst: getNSEC3DenialProofWorstCaseIterationsCount
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2228,1
    - Dst: DNSName::countLabels
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2228,1
    - Dst: DNSName::countLabels
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2228,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2228,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2229,1
    - Dst: getDenialWrapper
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2229,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2234,1
    - Dst: DNSName::countLabels
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2234,1
    - Dst: DNSName::countLabels
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2234,1
    - Dst: BOOST_CHECK_GT
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2235,1
    - Dst: getNSEC3DenialProofWorstCaseIterationsCount
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2235,1
    - Dst: DNSName::countLabels
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2235,1
    - Dst: DNSName::countLabels
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2235,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2235,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2236,1
    - Dst: getDenialWrapper
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2236,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 80
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2239
      start: 2083
    functionDepth: 1
    functionLinenumber: 2083
    functionLinenumberEnd: 2239
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc
    functionUses: 0
    functionsReached:
    - DNSRecord::DNSRecord
    - static_cast<uint32_t>
    - std::make_shared<SOARecordContent>
    - DNSRecord::setContent
    - std::string::size
    - replace
    - std::make_shared<RRSIGRecordContent>
    - hashQNameWithSalt
    - BOOST_CHECK_LE
    - std::make_shared<NSEC3RecordContent>
    - std::vector::push_back
    - decrementHash
    - time
    - QType
    - getNSEC3DenialProofWorstCaseIterationsCount
    - size
    - NSEC3RecordContent::NSEC3RecordContent
    - incrementHash
    - getEntriesCount
    - BOOST_CHECK_GT
    - insertNSEC
    - DNSName
    - getDenialWrapper
    - NSEC3RecordContent::set
    - insertNSEC3s
    - DNSName::countLabels
    - std::make_unique<MemRecursorCache>
    - make_unique<AggressiveNSECCache>
    - BOOST_CHECK_EQUAL
    - toBase32Hex
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_aggressive_max_nsec3_hash_cost)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: make_unique<AggressiveNSECCache>
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2243,1
    - Dst: std::make_unique<MemRecursorCache>
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2244,1
    - Dst: time
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2247,1
    - Dst: DNSRecord::DNSRecord
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2252,1
    - Dst: DNSRecord::setContent
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2256,1
    - Dst: std::make_shared<SOARecordContent>
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2256,1
    - Dst: static_cast<uint32_t>
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2257,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2259,1
    - Dst: replace
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2261,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2261,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2262,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2262,1
    - Dst: make_unique<AggressiveNSECCache>
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2265,1
    - Dst: DNSRecord::DNSRecord
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2267,1
    - Dst: NSECRecordContent::NSECRecordContent
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2272,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2273,1
    - Dst: NSECRecordContent::set
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2275,1
    - Dst: DNSRecord::setContent
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2278,1
    - Dst: std::make_shared<NSECRecordContent>
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2278,1
    - Dst: std::make_shared<RRSIGRecordContent>
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2279,1
    - Dst: auto::insertNSEC
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2280,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2282,1
    - Dst: auto::getEntriesCount
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2282,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2285,1
    - Dst: getDenialWrapper
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2285,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2285,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 23
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2287
      start: 2241
    functionDepth: 1
    functionLinenumber: 2241
    functionLinenumberEnd: 2287
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc
    functionUses: 0
    functionsReached:
    - DNSRecord::DNSRecord
    - static_cast<uint32_t>
    - std::make_shared<SOARecordContent>
    - DNSRecord::setContent
    - replace
    - std::make_shared<RRSIGRecordContent>
    - NSECRecordContent::NSECRecordContent
    - std::vector::push_back
    - time
    - QType
    - size
    - auto::insertNSEC
    - std::make_shared<NSECRecordContent>
    - DNSName
    - NSECRecordContent::set
    - getDenialWrapper
    - std::make_unique<MemRecursorCache>
    - make_unique<AggressiveNSECCache>
    - BOOST_CHECK_EQUAL
    - auto::getEntriesCount
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_aggressive_nsec_dname)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: make_unique<AggressiveNSECCache>
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2291,1
    - Dst: std::make_unique<MemRecursorCache>
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2292,1
    - Dst: time
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2295,1
    - Dst: DNSRecord::DNSRecord
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2300,1
    - Dst: DNSRecord::setContent
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2304,1
    - Dst: std::make_shared<SOARecordContent>
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2304,1
    - Dst: static_cast<uint32_t>
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2305,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2307,1
    - Dst: replace
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2309,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2309,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2310,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2310,1
    - Dst: make_unique<AggressiveNSECCache>
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2315,1
    - Dst: hashQNameWithSalt
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2322,1
    - Dst: DNSRecord::DNSRecord
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2323,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2324,1
    - Dst: toBase32Hex
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2324,1
    - Dst: NSEC3RecordContent::NSEC3RecordContent
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2328,1
    - Dst: incrementHash
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2334,1
    - Dst: NSEC3RecordContent::set
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2336,1
    - Dst: DNSRecord::setContent
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2339,1
    - Dst: std::make_shared<NSEC3RecordContent>
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2339,1
    - Dst: std::make_shared<RRSIGRecordContent>
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2340,1
    - Dst: auto::insertNSEC
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2341,1
    - Dst: hashQNameWithSalt
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2346,1
    - Dst: decrementHash
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2348,1
    - Dst: DNSRecord::DNSRecord
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2349,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2350,1
    - Dst: toBase32Hex
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2350,1
    - Dst: NSEC3RecordContent::NSEC3RecordContent
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2354,1
    - Dst: incrementHash
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2360,1
    - Dst: NSEC3RecordContent::set
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2362,1
    - Dst: DNSRecord::setContent
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2365,1
    - Dst: std::make_shared<NSEC3RecordContent>
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2365,1
    - Dst: std::make_shared<RRSIGRecordContent>
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2366,1
    - Dst: auto::insertNSEC
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2367,1
    - Dst: hashQNameWithSalt
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2372,1
    - Dst: decrementHash
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2374,1
    - Dst: DNSRecord::DNSRecord
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2375,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2376,1
    - Dst: toBase32Hex
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2376,1
    - Dst: NSEC3RecordContent::NSEC3RecordContent
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2380,1
    - Dst: incrementHash
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2386,1
    - Dst: NSEC3RecordContent::set
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2388,1
    - Dst: DNSRecord::setContent
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2391,1
    - Dst: std::make_shared<NSEC3RecordContent>
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2391,1
    - Dst: std::make_shared<RRSIGRecordContent>
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2392,1
    - Dst: auto::insertNSEC
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2393,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2396,1
    - Dst: auto::getEntriesCount
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2396,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2399,1
    - Dst: getDenialWrapper
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2399,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc:2399,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 59
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2401
      start: 2289
    functionDepth: 1
    functionLinenumber: 2289
    functionLinenumberEnd: 2401
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc
    functionUses: 0
    functionsReached:
    - DNSRecord::DNSRecord
    - static_cast<uint32_t>
    - std::make_shared<SOARecordContent>
    - DNSRecord::setContent
    - replace
    - std::make_shared<RRSIGRecordContent>
    - hashQNameWithSalt
    - std::make_shared<NSEC3RecordContent>
    - std::vector::push_back
    - decrementHash
    - time
    - QType
    - size
    - NSEC3RecordContent::NSEC3RecordContent
    - incrementHash
    - auto::insertNSEC
    - DNSName
    - getDenialWrapper
    - NSEC3RecordContent::set
    - std::make_unique<MemRecursorCache>
    - make_unique<AggressiveNSECCache>
    - BOOST_CHECK_EQUAL
    - auto::getEntriesCount
    - toBase32Hex
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_aggressive_nsec3_dname)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RecordTextReader::xfrIP6
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:22,1
    - Dst: string::append
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:24,1
    - Dst: string::append
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:25,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:26,1
    - Dst: makeHexDump
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:26,1
    - Dst: makeHexDump
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:26,1
    - Dst: RecordTextReader::xfrIP6
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:29,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:31,1
    - Dst: makeHexDump
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:31,1
    - Dst: makeHexDump
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:31,1
    - Dst: RecordTextReader::xfrIP6
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:34,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:36,1
    - Dst: makeHexDump
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:36,1
    - Dst: makeHexDump
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:36,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 19
    functionDepth: 0
    functionLinenumber: 19
    functionLinenumberEnd: 37
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc
    functionUses: 0
    functionsReached:
    - string::append
    - RecordTextReader::xfrIP6
    - makeHexDump
    - BOOST_CHECK_EQUAL
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_xfrIP6)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RecordTextReader::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:43,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:44,1
    - Dst: set::size
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:44,1
    - Dst: set::begin
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:45,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:46,1
    - Dst: auto::size
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:46,1
    - Dst: auto::begin
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:47,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:48,1
    - Dst: RecordTextWriter::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:53,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:54,1
    - Dst: set::clear
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:56,1
    - Dst: RecordTextReader::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:59,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:60,1
    - Dst: set::size
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:60,1
    - Dst: set::begin
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:61,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:62,1
    - Dst: auto::size
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:62,1
    - Dst: auto::begin
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:63,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:64,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:66,1
    - Dst: string::clear
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:69,1
    - Dst: RecordTextWriter::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:71,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:72,1
    - Dst: set::clear
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:75,1
    - Dst: RecordTextReader::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:78,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:79,1
    - Dst: set::size
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:79,1
    - Dst: set::begin
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:80,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:81,1
    - Dst: auto::size
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:81,1
    - Dst: auto::begin
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:82,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:83,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:85,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:90,1
    - Dst: RecordTextReader::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:90,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:94,1
    - Dst: RecordTextReader::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:94,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:98,1
    - Dst: RecordTextReader::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:98,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:102,1
    - Dst: RecordTextReader::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:102,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 38
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 39
    functionDepth: 1
    functionLinenumber: 39
    functionLinenumberEnd: 103
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc
    functionUses: 0
    functionsReached:
    - RecordTextReader::xfrSvcParamKeyVals
    - set::size
    - BOOST_CHECK_EQUAL
    - RecordTextWriter::xfrSvcParamKeyVals
    - set::begin
    - auto::begin
    - BOOST_CHECK_THROW
    - set::clear
    - string::clear
    - auto::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_xfrSvcParamKeyVals_alpn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RecordTextReader
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:108,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:109,1
    - Dst: set::size
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:109,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:110,1
    - Dst: set::begin
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:110,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:111,1
    - Dst: set::begin
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:111,1
    - Dst: RecordTextWriter::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:116,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:117,1
    - Dst: set::clear
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:119,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:120,1
    - Dst: RecordTextReader
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:120,1
    - Dst: set::clear
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:123,1
    - Dst: RecordTextReader
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:124,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:125,1
    - Dst: set::size
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:125,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:126,1
    - Dst: set::begin
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:126,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:127,1
    - Dst: set::begin
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:127,1
    - Dst: set::clear
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:129,1
    - Dst: RecordTextReader
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:130,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:131,1
    - Dst: set::size
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:131,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:132,1
    - Dst: set::begin
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:132,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:133,1
    - Dst: set::begin
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:133,1
    - Dst: set::clear
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:135,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:136,1
    - Dst: RecordTextReader
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:136,1
    - Dst: set::clear
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:138,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:139,1
    - Dst: RecordTextReader
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:139,1
    - Dst: set::clear
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:141,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:142,1
    - Dst: RecordTextReader
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:142,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 25
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 143
      start: 105
    functionDepth: 1
    functionLinenumber: 105
    functionLinenumberEnd: 143
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc
    functionUses: 0
    functionsReached:
    - set::size
    - BOOST_CHECK_EQUAL
    - RecordTextWriter::xfrSvcParamKeyVals
    - set::begin
    - set::clear
    - BOOST_CHECK_THROW
    - RecordTextReader
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_xfrSvcParamKeyVals_dohpath)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RecordTextReader::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:149,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:150,1
    - Dst: set::size
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:150,1
    - Dst: set::begin
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:151,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:152,1
    - Dst: auto::size
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:152,1
    - Dst: auto::begin
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:153,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:154,1
    - Dst: RecordTextWriter::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:159,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:160,1
    - Dst: set::clear
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:162,1
    - Dst: RecordTextReader::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:165,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:166,1
    - Dst: set::size
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:166,1
    - Dst: set::begin
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:167,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:168,1
    - Dst: auto::size
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:168,1
    - Dst: auto::begin
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:169,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:170,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:172,1
    - Dst: string::clear
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:175,1
    - Dst: RecordTextWriter::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:177,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:178,1
    - Dst: set::clear
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:181,1
    - Dst: RecordTextReader::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:184,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:185,1
    - Dst: set::size
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:185,1
    - Dst: set::begin
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:186,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:187,1
    - Dst: auto::size
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:187,1
    - Dst: auto::begin
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:188,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:189,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:191,1
    - Dst: set::clear
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:194,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:197,1
    - Dst: RecordTextReader::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:197,1
    - Dst: set::clear
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:199,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:202,1
    - Dst: RecordTextReader::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:202,1
    - Dst: set::clear
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:204,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:207,1
    - Dst: RecordTextReader::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:207,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 39
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 208
      start: 145
    functionDepth: 1
    functionLinenumber: 145
    functionLinenumberEnd: 208
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc
    functionUses: 0
    functionsReached:
    - RecordTextReader::xfrSvcParamKeyVals
    - set::size
    - BOOST_CHECK_EQUAL
    - RecordTextWriter::xfrSvcParamKeyVals
    - set::begin
    - auto::begin
    - BOOST_CHECK_THROW
    - set::clear
    - BOOST_CHECK
    - string::clear
    - auto::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_xfrSvcParamKeyVals_mandatory)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RecordTextReader::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:214,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:215,1
    - Dst: set::size
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:215,1
    - Dst: set::begin
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:216,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:217,1
    - Dst: RecordTextWriter::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:222,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:223,1
    - Dst: set::clear
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:226,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:227,1
    - Dst: RecordTextReader::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:227,1
    - Dst: set::clear
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:230,1
    - Dst: RecordTextReader::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:232,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:233,1
    - Dst: set::size
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:233,1
    - Dst: set::begin
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:234,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:235,1
    - Dst: set::clear
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:237,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:239,1
    - Dst: RecordTextReader::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:239,1
    - Dst: set::clear
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:241,1
    - Dst: RecordTextReader::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:243,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:244,1
    - Dst: set::size
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:244,1
    - Dst: set::begin
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:245,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:246,1
    - Dst: set::clear
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:248,1
    - Dst: RecordTextReader::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:250,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:251,1
    - Dst: set::size
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:251,1
    - Dst: set::begin
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:252,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:253,1
    - Dst: set::clear
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:255,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:257,1
    - Dst: RecordTextReader::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:257,1
    - Dst: set::clear
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:259,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:261,1
    - Dst: RecordTextReader::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:261,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 29
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 262
      start: 210
    functionDepth: 1
    functionLinenumber: 210
    functionLinenumberEnd: 262
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc
    functionUses: 0
    functionsReached:
    - RecordTextReader::xfrSvcParamKeyVals
    - set::size
    - BOOST_CHECK_EQUAL
    - RecordTextWriter::xfrSvcParamKeyVals
    - set::begin
    - BOOST_CHECK_THROW
    - set::clear
    - BOOST_CHECK
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_xfrSvcParamKeyVals_no_default_alpn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RecordTextReader::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:268,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:269,1
    - Dst: set::size
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:269,1
    - Dst: set::begin
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:270,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:271,1
    - Dst: set::begin
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:272,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:273,1
    - Dst: auto::size
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:273,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:274,1
    - Dst: auto::begin
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:274,1
    - Dst: RecordTextWriter::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:279,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:280,1
    - Dst: set::clear
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:282,1
    - Dst: RecordTextReader::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:285,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:286,1
    - Dst: set::size
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:286,1
    - Dst: set::begin
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:287,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:288,1
    - Dst: set::begin
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:290,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:291,1
    - Dst: auto::size
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:291,1
    - Dst: auto::begin
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:292,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:293,1
    - Dst: auto::toString
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:293,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:295,1
    - Dst: auto::toString
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:295,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:297,1
    - Dst: auto::toString
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:297,1
    - Dst: string::clear
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:300,1
    - Dst: RecordTextWriter::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:302,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:303,1
    - Dst: set::clear
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:305,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:307,1
    - Dst: RecordTextReader::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:307,1
    - Dst: set::clear
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:309,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:311,1
    - Dst: RecordTextReader::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:311,1
    - Dst: set::clear
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:314,1
    - Dst: RecordTextReader::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:317,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:318,1
    - Dst: set::size
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:318,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:319,1
    - Dst: set::begin
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:319,1
    - Dst: set::begin
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:320,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:321,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:322,1
    - Dst: set::begin
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:322,1
    - Dst: set::clear
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:324,1
    - Dst: RecordTextReader::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:327,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:328,1
    - Dst: set::size
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:328,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:329,1
    - Dst: set::begin
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:329,1
    - Dst: set::begin
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:330,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:331,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:332,1
    - Dst: set::begin
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:332,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:333,1
    - Dst: set::begin
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:333,1
    - Dst: set::clear
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:335,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:338,1
    - Dst: RecordTextReader::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:338,1
    - Dst: set::clear
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:340,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:342,1
    - Dst: RecordTextReader::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:342,1
    - Dst: set::clear
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:344,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:346,1
    - Dst: RecordTextReader::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:346,1
    - Dst: set::clear
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:348,1
    - Dst: RecordTextReader::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:350,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:351,1
    - Dst: set::size
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:351,1
    - Dst: set::begin
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:352,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:353,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:354,1
    - Dst: set::begin
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:354,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:355,1
    - Dst: set::begin
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:355,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 59
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 356
      start: 264
    functionDepth: 1
    functionLinenumber: 264
    functionLinenumberEnd: 356
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc
    functionUses: 0
    functionsReached:
    - RecordTextReader::xfrSvcParamKeyVals
    - set::size
    - BOOST_CHECK_EQUAL
    - RecordTextWriter::xfrSvcParamKeyVals
    - set::begin
    - auto::begin
    - auto::toString
    - BOOST_CHECK_THROW
    - set::clear
    - BOOST_CHECK
    - string::clear
    - auto::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_xfrSvcParamKeyVals_ipv4hint)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RecordTextReader::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:362,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:363,1
    - Dst: set::size
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:363,1
    - Dst: set::begin
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:364,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:365,1
    - Dst: set::begin
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:366,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:367,1
    - Dst: auto::size
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:367,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:368,1
    - Dst: auto::begin
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:368,1
    - Dst: RecordTextWriter::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:373,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:374,1
    - Dst: set::clear
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:376,1
    - Dst: RecordTextReader::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:379,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:380,1
    - Dst: set::size
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:380,1
    - Dst: set::begin
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:381,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:382,1
    - Dst: set::begin
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:384,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:385,1
    - Dst: auto::size
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:385,1
    - Dst: auto::begin
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:386,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:387,1
    - Dst: auto::toString
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:387,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:389,1
    - Dst: auto::toString
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:389,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:391,1
    - Dst: auto::toString
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:391,1
    - Dst: string::clear
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:394,1
    - Dst: RecordTextWriter::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:396,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:397,1
    - Dst: set::clear
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:399,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:401,1
    - Dst: RecordTextReader::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:401,1
    - Dst: set::clear
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:403,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:405,1
    - Dst: RecordTextReader::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:405,1
    - Dst: set::clear
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:408,1
    - Dst: RecordTextReader::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:410,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:411,1
    - Dst: set::size
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:411,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:412,1
    - Dst: set::begin
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:412,1
    - Dst: set::begin
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:413,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:414,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:415,1
    - Dst: set::begin
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:415,1
    - Dst: set::clear
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:417,1
    - Dst: RecordTextReader::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:420,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:421,1
    - Dst: set::size
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:421,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:422,1
    - Dst: set::begin
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:422,1
    - Dst: set::begin
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:423,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:424,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:425,1
    - Dst: set::begin
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:425,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:426,1
    - Dst: set::begin
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:426,1
    - Dst: set::clear
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:428,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:431,1
    - Dst: RecordTextReader::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:431,1
    - Dst: set::clear
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:433,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:435,1
    - Dst: RecordTextReader::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:435,1
    - Dst: set::clear
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:437,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:439,1
    - Dst: RecordTextReader::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:439,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 51
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 440
      start: 358
    functionDepth: 1
    functionLinenumber: 358
    functionLinenumberEnd: 440
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc
    functionUses: 0
    functionsReached:
    - RecordTextReader::xfrSvcParamKeyVals
    - set::size
    - BOOST_CHECK_EQUAL
    - RecordTextWriter::xfrSvcParamKeyVals
    - set::begin
    - auto::begin
    - auto::toString
    - BOOST_CHECK_THROW
    - set::clear
    - BOOST_CHECK
    - string::clear
    - auto::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_xfrSvcParamKeyVals_ipv6hint)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RecordTextReader
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:446,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:447,1
    - Dst: set::size
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:447,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:448,1
    - Dst: set::begin
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:448,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:449,1
    - Dst: set::begin
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:449,1
    - Dst: RecordTextWriter
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:453,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:454,1
    - Dst: set::clear
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:456,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:457,1
    - Dst: RecordTextReader
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:457,1
    - Dst: set::clear
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:459,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:460,1
    - Dst: RecordTextReader
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:460,1
    - Dst: set::clear
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:463,1
    - Dst: RecordTextReader
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:464,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:465,1
    - Dst: set::size
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:465,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:466,1
    - Dst: set::begin
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:466,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:467,1
    - Dst: set::begin
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:467,1
    - Dst: set::clear
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:469,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:470,1
    - Dst: RecordTextReader
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:470,1
    - Dst: set::clear
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:472,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:473,1
    - Dst: RecordTextReader
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:473,1
    - Dst: set::clear
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:475,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:476,1
    - Dst: RecordTextReader
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:476,1
    - Dst: set::clear
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:478,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:479,1
    - Dst: RecordTextReader
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:479,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 24
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 480
      start: 442
    functionDepth: 1
    functionLinenumber: 442
    functionLinenumberEnd: 480
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc
    functionUses: 0
    functionsReached:
    - set::size
    - BOOST_CHECK_EQUAL
    - set::begin
    - set::clear
    - BOOST_CHECK_THROW
    - RecordTextReader
    - BOOST_CHECK
    - RecordTextWriter
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_xfrSvcParamKeyVals_tls_supported_groups)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RecordTextReader
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:485,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:486,1
    - Dst: set::size
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:486,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:487,1
    - Dst: set::begin
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:487,1
    - Dst: RecordTextWriter
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:491,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:492,1
    - Dst: set::clear
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:494,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:495,1
    - Dst: RecordTextReader
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:495,1
    - Dst: set::clear
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:498,1
    - Dst: RecordTextReader
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:499,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:500,1
    - Dst: set::size
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:500,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:501,1
    - Dst: set::begin
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:501,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:502,1
    - Dst: set::begin
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:502,1
    - Dst: set::clear
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:504,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:505,1
    - Dst: RecordTextReader
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:505,1
    - Dst: set::clear
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:507,1
    - Dst: RecordTextReader
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:508,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:509,1
    - Dst: set::size
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:509,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:510,1
    - Dst: std::count_if
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:510,1
    - Dst: set::begin
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:510,1
    - Dst: set::end
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:510,1
    - Dst: getKey
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:510,1
    - Dst: set::clear
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:512,1
    - Dst: RecordTextReader
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:513,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:514,1
    - Dst: set::size
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:514,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:515,1
    - Dst: std::count_if
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:515,1
    - Dst: set::begin
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:515,1
    - Dst: set::end
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:515,1
    - Dst: getKey
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:515,1
    - Dst: set::clear
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:517,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:518,1
    - Dst: RecordTextReader
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:518,1
    - Dst: set::clear
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:520,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:521,1
    - Dst: RecordTextReader
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:521,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 31
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 522
      start: 482
    functionDepth: 1
    functionLinenumber: 482
    functionLinenumberEnd: 522
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc
    functionUses: 0
    functionsReached:
    - set::size
    - BOOST_CHECK_EQUAL
    - set::begin
    - set::end
    - set::clear
    - BOOST_CHECK_THROW
    - getKey
    - std::count_if
    - RecordTextReader
    - BOOST_CHECK
    - RecordTextWriter
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_xfrSvcParamKeyVals_ohttp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RecordTextReader::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:528,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:529,1
    - Dst: set::size
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:529,1
    - Dst: set::begin
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:530,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:531,1
    - Dst: set::begin
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:532,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:533,1
    - Dst: RecordTextWriter::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:538,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:539,1
    - Dst: set::clear
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:541,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:543,1
    - Dst: RecordTextReader::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:543,1
    - Dst: set::clear
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:545,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:547,1
    - Dst: RecordTextReader::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:547,1
    - Dst: set::clear
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:549,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:551,1
    - Dst: RecordTextReader::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:551,1
    - Dst: set::clear
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:553,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:555,1
    - Dst: RecordTextReader::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:555,1
    - Dst: set::clear
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:558,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:560,1
    - Dst: RecordTextReader::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:560,1
    - Dst: set::clear
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:562,1
    - Dst: RecordTextReader::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:564,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:565,1
    - Dst: set::size
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:565,1
    - Dst: set::begin
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:566,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:567,1
    - Dst: set::begin
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:568,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:569,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 24
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 570
      start: 524
    functionDepth: 1
    functionLinenumber: 524
    functionLinenumberEnd: 570
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc
    functionUses: 0
    functionsReached:
    - RecordTextReader::xfrSvcParamKeyVals
    - set::size
    - BOOST_CHECK_EQUAL
    - RecordTextWriter::xfrSvcParamKeyVals
    - set::begin
    - BOOST_CHECK_THROW
    - set::clear
    - BOOST_CHECK
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_xfrSvcParamKeyVals_port)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RecordTextReader::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:576,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:577,1
    - Dst: set::size
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:577,1
    - Dst: set::begin
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:578,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:579,1
    - Dst: set::begin
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:580,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:581,1
    - Dst: RecordTextWriter::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:586,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:587,1
    - Dst: set::clear
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:589,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:591,1
    - Dst: RecordTextReader::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:591,1
    - Dst: set::clear
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:593,1
    - Dst: BOOST_CHECK_NO_THROW
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:595,1
    - Dst: RecordTextReader::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:595,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:596,1
    - Dst: set::size
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:596,1
    - Dst: set::begin
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:597,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:598,1
    - Dst: SvcParam::keyFromString
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:598,1
    - Dst: set::clear
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:600,1
    - Dst: RecordTextReader::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:603,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:604,1
    - Dst: set::size
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:604,1
    - Dst: set::begin
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:605,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:606,1
    - Dst: SvcParam::keyFromString
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:606,1
    - Dst: set::begin
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:607,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:608,1
    - Dst: string::clear
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:611,1
    - Dst: RecordTextWriter::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:613,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:614,1
    - Dst: set::clear
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:616,1
    - Dst: RecordTextReader::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:619,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:620,1
    - Dst: set::size
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:620,1
    - Dst: set::begin
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:621,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:622,1
    - Dst: SvcParam::keyFromString
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:622,1
    - Dst: set::begin
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:623,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:624,1
    - Dst: string::clear
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:627,1
    - Dst: RecordTextWriter::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:629,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:630,1
    - Dst: set::clear
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:632,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:634,1
    - Dst: RecordTextReader::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:634,1
    - Dst: set::clear
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:636,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:638,1
    - Dst: RecordTextReader::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:638,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 40
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 639
      start: 572
    functionDepth: 1
    functionLinenumber: 572
    functionLinenumberEnd: 639
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc
    functionUses: 0
    functionsReached:
    - RecordTextReader::xfrSvcParamKeyVals
    - set::size
    - SvcParam::keyFromString
    - BOOST_CHECK_EQUAL
    - RecordTextWriter::xfrSvcParamKeyVals
    - set::begin
    - BOOST_CHECK_THROW
    - BOOST_CHECK_NO_THROW
    - set::clear
    - BOOST_CHECK
    - string::clear
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_xfrSvcParamKeyVals_generic)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: RecordTextReader::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:644,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:645,1
    - Dst: set::size
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:645,1
    - Dst: set::begin
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:646,1
    - Dst: set::size
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:649,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:651,1
    - Dst: auto::getKey
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:651,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:654,1
    - Dst: auto::getKey
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:654,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:657,1
    - Dst: auto::getKey
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:657,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:660,1
    - Dst: auto::getKey
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:660,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:663,1
    - Dst: auto::getKey
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:663,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:666,1
    - Dst: auto::getKey
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:666,1
    - Dst: SvcParam::keyFromString
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:666,1
    - Dst: RecordTextWriter::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:674,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:675,1
    - Dst: set::clear
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:677,1
    - Dst: BOOST_CHECK_NO_THROW
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:679,1
    - Dst: RecordTextReader::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:679,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:680,1
    - Dst: set::size
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:680,1
    - Dst: set::clear
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:682,1
    - Dst: BOOST_CHECK_NO_THROW
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:684,1
    - Dst: RecordTextReader::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:684,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:685,1
    - Dst: set::size
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:685,1
    - Dst: set::clear
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:687,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:689,1
    - Dst: RecordTextReader::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:689,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 34
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 690
      start: 641
    functionDepth: 1
    functionLinenumber: 641
    functionLinenumberEnd: 690
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc
    functionUses: 0
    functionsReached:
    - auto::getKey
    - RecordTextReader::xfrSvcParamKeyVals
    - set::size
    - SvcParam::keyFromString
    - BOOST_CHECK_EQUAL
    - RecordTextWriter::xfrSvcParamKeyVals
    - set::begin
    - BOOST_CHECK_THROW
    - BOOST_CHECK_NO_THROW
    - set::clear
    - BOOST_CHECK
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_xfrSvcParamKeyVals_multiple)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RecordTextReader::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:696,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:697,1
    - Dst: set::size
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:697,1
    - Dst: set::begin
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:698,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:699,1
    - Dst: set::begin
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:700,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:701,1
    - Dst: RecordTextWriter::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:706,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:707,1
    - Dst: set::clear
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:710,1
    - Dst: RecordTextReader::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:713,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:714,1
    - Dst: set::size
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:714,1
    - Dst: set::begin
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:715,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:716,1
    - Dst: set::begin
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:717,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:718,1
    - Dst: set::clear
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:720,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:722,1
    - Dst: RecordTextReader::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:722,1
    - Dst: set::clear
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:724,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:726,1
    - Dst: RecordTextReader::xfrSvcParamKeyVals
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:726,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 19
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 727
      start: 692
    functionDepth: 1
    functionLinenumber: 692
    functionLinenumberEnd: 727
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc
    functionUses: 0
    functionsReached:
    - RecordTextReader::xfrSvcParamKeyVals
    - set::size
    - BOOST_CHECK_EQUAL
    - RecordTextWriter::xfrSvcParamKeyVals
    - set::begin
    - BOOST_CHECK_THROW
    - set::clear
    - BOOST_CHECK
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_xfrSvcParamKeyVals_ech)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RecordTextReader::xfrNodeOrLocatorID
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:733,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:734,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:735,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:736,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:737,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:738,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:739,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:740,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:741,1
    - Dst: RecordTextWriter::xfrNodeOrLocatorID
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:745,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc:746,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 747
      start: 729
    functionDepth: 0
    functionLinenumber: 729
    functionLinenumberEnd: 747
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc
    functionUses: 0
    functionsReached:
    - RecordTextWriter::xfrNodeOrLocatorID
    - BOOST_CHECK_EQUAL
    - RecordTextReader::xfrNodeOrLocatorID
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_xfrNodeOrLocatorID)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ArgvMap::parse
      Src: /src/pdns/pdns/recursordist/arguments.hh:81,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' argc'
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 79
    functionDepth: 0
    functionLinenumber: 79
    functionLinenumberEnd: 82
    functionName: ArgvMap::laxParse
    functionSourceFile: /src/pdns/pdns/recursordist/arguments.hh
    functionUses: 0
    functionsReached:
    - ArgvMap::parse
    linkageType: ''
    returnType: void
    signature: void laxParse(int& argc, char** argv)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ArgvMap::file
      Src: /src/pdns/pdns/recursordist/arguments.hh:90,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' fname'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 88
    functionDepth: 0
    functionLinenumber: 88
    functionLinenumberEnd: 91
    functionName: ArgvMap::laxFile
    functionSourceFile: /src/pdns/pdns/recursordist/arguments.hh
    functionUses: 0
    functionsReached:
    - ArgvMap::file
    linkageType: ''
    returnType: bool
    signature: bool laxFile(const string& fname)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: find
      Src: /src/pdns/pdns/recursordist/arguments.hh:114,1
    - Dst: ArgvMap::end
      Src: /src/pdns/pdns/recursordist/arguments.hh:115,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' item'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 112
    functionDepth: 0
    functionLinenumber: 112
    functionLinenumberEnd: 116
    functionName: ArgvMap::getHelp
    functionSourceFile: /src/pdns/pdns/recursordist/arguments.hh
    functionUses: 0
    functionsReached:
    - ArgvMap::end
    - find
    linkageType: ''
    returnType: string
    signature: string getHelp(const string& item) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: find
      Src: /src/pdns/pdns/recursordist/arguments.hh:119,1
    - Dst: ArgvMap::end
      Src: /src/pdns/pdns/recursordist/arguments.hh:120,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' item'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 117
    functionDepth: 0
    functionLinenumber: 117
    functionLinenumberEnd: 121
    functionName: ArgvMap::getDefault
    functionSourceFile: /src/pdns/pdns/recursordist/arguments.hh
    functionUses: 0
    functionsReached:
    - ArgvMap::end
    - find
    linkageType: ''
    returnType: string
    signature: string getDefault(const string& item) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - log
    argTypes:
    - Logr::log_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 135
      start: 132
    functionDepth: 0
    functionLinenumber: 132
    functionLinenumberEnd: 135
    functionName: ArgvMap::setSLog
    functionSourceFile: /src/pdns/pdns/recursordist/arguments.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setSLog(Logr::log_t log)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' key'
    argTypes:
    - DNSKEYRecordContent
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 34
    functionDepth: 0
    functionLinenumber: 34
    functionLinenumberEnd: 47
    functionName: isAZoneKey
    functionSourceFile: /src/pdns/pdns/recursordist/validate.cc
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool isAZoneKey(const DNSKEYRecordContent& key)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' key'
    argTypes:
    - DNSKEYRecordContent
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 49
    functionDepth: 0
    functionLinenumber: 49
    functionLinenumberEnd: 53
    functionName: isRevokedKey
    functionSourceFile: /src/pdns/pdns/recursordist/validate.cc
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool isRevokedKey(const DNSKEYRecordContent& key)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: isAZoneKey
      Src: /src/pdns/pdns/recursordist/validate.cc:60,1
    - Dst: VLOG
      Src: /src/pdns/pdns/recursordist/validate.cc:61,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/validate.cc:61,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/validate.cc:61,1
    - Dst: isRevokedKey
      Src: /src/pdns/pdns/recursordist/validate.cc:65,1
    - Dst: VLOG
      Src: /src/pdns/pdns/recursordist/validate.cc:66,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/validate.cc:66,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/validate.cc:66,1
    - Dst: getTag
      Src: /src/pdns/pdns/recursordist/validate.cc:70,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/recursordist/validate.cc:71,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 14
    argCount: 4
    argNames:
    - ' keys'
    - tag
    - algorithm
    - ' log'
    argTypes:
    - skeyset_t
    - uint16_t
    - uint8_t
    - OptLog
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 55
    functionDepth: 0
    functionLinenumber: 55
    functionLinenumberEnd: 76
    functionName: getByTag
    functionSourceFile: /src/pdns/pdns/recursordist/validate.cc
    functionUses: 2
    functionsReached:
    - isAZoneKey
    - vector::push_back
    - std::to_string
    - getTag
    - isRevokedKey
    - VLOG
    linkageType: ''
    returnType: vector<shared_ptr<const DNSKEYRecordContent>>
    signature: vector<shared_ptr<const DNSKEYRecordContent>> getByTag(const skeyset_t&
      keys, uint16_t tag, uint8_t algorithm, const OptLog& log)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: compare
      Src: /src/pdns/pdns/recursordist/validate.cc:80,1
    - Dst: compare
      Src: /src/pdns/pdns/recursordist/validate.cc:81,1
    - Dst: compare
      Src: /src/pdns/pdns/recursordist/validate.cc:85,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 14
    argCount: 3
    argNames:
    - ' hash'
    - ' beginHash'
    - ' nextHash'
    argTypes:
    - std::string
    - std::string
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 78
    functionDepth: 0
    functionLinenumber: 78
    functionLinenumberEnd: 96
    functionName: isCoveredByNSEC3Hash
    functionSourceFile: /src/pdns/pdns/recursordist/validate.cc
    functionUses: 4
    functionsReached:
    - compare
    linkageType: ''
    returnType: bool
    signature: bool isCoveredByNSEC3Hash(const std::string& hash, const std::string&
      beginHash, const std::string& nextHash)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: canonCompare_three_way
      Src: /src/pdns/pdns/recursordist/validate.cc:101,1
    - Dst: canonCompare_three_way
      Src: /src/pdns/pdns/recursordist/validate.cc:102,1
    - Dst: canonCompare_three_way
      Src: /src/pdns/pdns/recursordist/validate.cc:106,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 14
    argCount: 3
    argNames:
    - ' name'
    - ' beginHash'
    - ' nextHash'
    argTypes:
    - DNSName
    - DNSName
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 99
    functionDepth: 0
    functionLinenumber: 99
    functionLinenumberEnd: 117
    functionName: isCoveredByNSEC3Hash
    functionSourceFile: /src/pdns/pdns/recursordist/validate.cc
    functionUses: 4
    functionsReached:
    - canonCompare_three_way
    linkageType: ''
    returnType: bool
    signature: bool isCoveredByNSEC3Hash(const DNSName& name, const DNSName& beginHash,
      const DNSName& nextHash)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: canonCompare_three_way
      Src: /src/pdns/pdns/recursordist/validate.cc:122,1
    - Dst: canonCompare_three_way
      Src: /src/pdns/pdns/recursordist/validate.cc:123,1
    - Dst: canonCompare_three_way
      Src: /src/pdns/pdns/recursordist/validate.cc:127,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 14
    argCount: 3
    argNames:
    - ' name'
    - ' begin'
    - ' next'
    argTypes:
    - DNSName
    - DNSName
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 138
      start: 120
    functionDepth: 0
    functionLinenumber: 120
    functionLinenumberEnd: 138
    functionName: isCoveredByNSEC
    functionSourceFile: /src/pdns/pdns/recursordist/validate.cc
    functionUses: 4
    functionsReached:
    - canonCompare_three_way
    linkageType: ''
    returnType: bool
    signature: bool isCoveredByNSEC(const DNSName& name, const DNSName& begin, const
      DNSName& next)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: canonCompare
      Src: /src/pdns/pdns/recursordist/validate.cc:146,1
    - Dst: isPartOf
      Src: /src/pdns/pdns/recursordist/validate.cc:146,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 2
    argCount: 3
    argNames:
    - ' name'
    - ' begin'
    - ' next'
    argTypes:
    - DNSName
    - DNSName
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 140
    functionDepth: 0
    functionLinenumber: 140
    functionLinenumberEnd: 147
    functionName: nsecProvesENT
    functionSourceFile: /src/pdns/pdns/recursordist/validate.cc
    functionUses: 2
    functionsReached:
    - isPartOf
    - canonCompare
    linkageType: ''
    returnType: bool
    signature: bool nsecProvesENT(const DNSName& name, const DNSName& begin, const
      DNSName& next)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: std::tuple
      Src: /src/pdns/pdns/recursordist/validate.cc:157,1
    - Dst: d_nsec3Cache::find
      Src: /src/pdns/pdns/recursordist/validate.cc:158,1
    - Dst: d_nsec3Cache::end
      Src: /src/pdns/pdns/recursordist/validate.cc:159,1
    - Dst: pdns::validation::TooManySEC3IterationsException::TooManySEC3IterationsException
      Src: /src/pdns/pdns/recursordist/validate.cc:167,1
    - Dst: hashQNameWithSalt
      Src: /src/pdns/pdns/recursordist/validate.cc:170,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 4
    argNames:
    - ' qname'
    - iterations
    - ' salt'
    - ' context'
    argTypes:
    - DNSName
    - uint16_t
    - std::string
    - pdns::validation::ValidationContext
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 174
      start: 149
    functionDepth: 0
    functionLinenumber: 149
    functionLinenumberEnd: 174
    functionName: getHashFromNSEC3
    functionSourceFile: /src/pdns/pdns/recursordist/validate.cc
    functionUses: 5
    functionsReached:
    - pdns::validation::TooManySEC3IterationsException::TooManySEC3IterationsException
    - d_nsec3Cache::end
    - d_nsec3Cache::find
    - std::tuple
    - hashQNameWithSalt
    linkageType: ''
    returnType: std::string
    signature: std::string getHashFromNSEC3(const DNSName& qname, uint16_t iterations,
      const std::string& salt, pdns::validation::ValidationContext& context)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getHashFromNSEC3
      Src: /src/pdns/pdns/recursordist/validate.cc:178,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' qname'
    - ' nsec3'
    - ' context'
    argTypes:
    - DNSName
    - NSEC3RecordContent
    - pdns::validation::ValidationContext
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 179
      start: 176
    functionDepth: 0
    functionLinenumber: 176
    functionLinenumberEnd: 179
    functionName: getHashFromNSEC3
    functionSourceFile: /src/pdns/pdns/recursordist/validate.cc
    functionUses: 6
    functionsReached:
    - getHashFromNSEC3
    linkageType: ''
    returnType: std::string
    signature: std::string getHashFromNSEC3(const DNSName& qname, const NSEC3RecordContent&
      nsec3, pdns::validation::ValidationContext& context)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/validate.cc:193,1
    - Dst: auto::isSet
      Src: /src/pdns/pdns/recursordist/validate.cc:199,1
    - Dst: isCoveredByNSEC
      Src: /src/pdns/pdns/recursordist/validate.cc:202,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/validate.cc:207,1
    - Dst: getHashFromNSEC3
      Src: /src/pdns/pdns/recursordist/validate.cc:218,1
    - Dst: string::empty
      Src: /src/pdns/pdns/recursordist/validate.cc:219,1
    - Dst: fromBase32Hex
      Src: /src/pdns/pdns/recursordist/validate.cc:223,1
    - Dst: d_name::getRawLabel
      Src: /src/pdns/pdns/recursordist/validate.cc:223,1
    - Dst: auto::isSet
      Src: /src/pdns/pdns/recursordist/validate.cc:225,1
    - Dst: isCoveredByNSEC3Hash
      Src: /src/pdns/pdns/recursordist/validate.cc:228,1
    - Dst: auto::isOptOut
      Src: /src/pdns/pdns/recursordist/validate.cc:229,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 33
    argCount: 3
    argNames:
    - ' zone'
    - ' dsrecords'
    - ' context'
    argTypes:
    - DNSName
    - std::vector<DNSRecord>
    - pdns::validation::ValidationContext
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 235
      start: 187
    functionDepth: 0
    functionLinenumber: 187
    functionLinenumberEnd: 235
    functionName: denialProvesNoDelegation
    functionSourceFile: /src/pdns/pdns/recursordist/validate.cc
    functionUses: 1
    functionsReached:
    - getRR
    - string::empty
    - isCoveredByNSEC3Hash
    - getHashFromNSEC3
    - isCoveredByNSEC
    - auto::isSet
    - d_name::getRawLabel
    - fromBase32Hex
    - auto::isOptOut
    linkageType: ''
    returnType: bool
    signature: bool denialProvesNoDelegation(const DNSName& zone, const std::vector<DNSRecord>&
      dsrecords, pdns::validation::ValidationContext& context)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - labelCount
    - ' sign'
    argTypes:
    - unsigned int
    - RRSIGRecordContent
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 245
      start: 242
    functionDepth: 0
    functionLinenumber: 242
    functionLinenumberEnd: 245
    functionName: isWildcardExpanded
    functionSourceFile: /src/pdns/pdns/recursordist/validate.cc
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool isWildcardExpanded(unsigned int labelCount, const RRSIGRecordContent&
      sign)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/validate.cc:249,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/validate.cc:253,1
    - Dst: countLabels
      Src: /src/pdns/pdns/recursordist/validate.cc:254,1
    - Dst: isWildcardExpanded
      Src: /src/pdns/pdns/recursordist/validate.cc:255,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - ' owner'
    - ' signatures'
    argTypes:
    - DNSName
    - std::vector<std::shared_ptr<const RRSIGRecordContent>>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 256
      start: 247
    functionDepth: 0
    functionLinenumber: 247
    functionLinenumberEnd: 256
    functionName: isWildcardExpanded
    functionSourceFile: /src/pdns/pdns/recursordist/validate.cc
    functionUses: 5
    functionsReached:
    - empty
    - countLabels
    - at
    - isWildcardExpanded
    linkageType: ''
    returnType: bool
    signature: bool isWildcardExpanded(const DNSName& owner, const std::vector<std::shared_ptr<const
      RRSIGRecordContent>>& signatures)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: isWildcard
      Src: /src/pdns/pdns/recursordist/validate.cc:261,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 3
    argNames:
    - ' owner'
    - labelCount
    - ' sign'
    argTypes:
    - DNSName
    - unsigned int
    - RRSIGRecordContent
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 262
      start: 258
    functionDepth: 0
    functionLinenumber: 258
    functionLinenumberEnd: 262
    functionName: isWildcardExpandedOntoItself
    functionSourceFile: /src/pdns/pdns/recursordist/validate.cc
    functionUses: 11
    functionsReached:
    - isWildcard
    linkageType: ''
    returnType: bool
    signature: bool isWildcardExpandedOntoItself(const DNSName& owner, unsigned int
      labelCount, const RRSIGRecordContent& sign)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/validate.cc:266,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/validate.cc:270,1
    - Dst: countLabels
      Src: /src/pdns/pdns/recursordist/validate.cc:271,1
    - Dst: isWildcardExpandedOntoItself
      Src: /src/pdns/pdns/recursordist/validate.cc:272,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - ' owner'
    - ' signatures'
    argTypes:
    - DNSName
    - std::vector<std::shared_ptr<const RRSIGRecordContent>>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 273
      start: 264
    functionDepth: 0
    functionLinenumber: 264
    functionLinenumberEnd: 273
    functionName: isWildcardExpandedOntoItself
    functionSourceFile: /src/pdns/pdns/recursordist/validate.cc
    functionUses: 12
    functionsReached:
    - empty
    - countLabels
    - at
    - isWildcardExpandedOntoItself
    linkageType: ''
    returnType: bool
    signature: bool isWildcardExpandedOntoItself(const DNSName& owner, const std::vector<std::shared_ptr<const
      RRSIGRecordContent>>& signatures)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/validate.cc:281,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/validate.cc:285,1
    - Dst: countLabels
      Src: /src/pdns/pdns/recursordist/validate.cc:286,1
    - Dst: DNSName::chopOff
      Src: /src/pdns/pdns/recursordist/validate.cc:289,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 2
    argNames:
    - ' initialOwner'
    - ' signatures'
    argTypes:
    - DNSName
    - std::vector<std::shared_ptr<const RRSIGRecordContent>>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 297
      start: 277
    functionDepth: 0
    functionLinenumber: 277
    functionLinenumberEnd: 297
    functionName: getNSECOwnerName
    functionSourceFile: /src/pdns/pdns/recursordist/validate.cc
    functionUses: 6
    functionsReached:
    - empty
    - countLabels
    - at
    - DNSName::chopOff
    linkageType: ''
    returnType: DNSName
    signature: DNSName getNSECOwnerName(const DNSName& initialOwner, const std::vector<std::shared_ptr<const
      RRSIGRecordContent>>& signatures)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: isSet
      Src: /src/pdns/pdns/recursordist/validate.cc:301,1
    - Dst: isSet
      Src: /src/pdns/pdns/recursordist/validate.cc:301,1
    - Dst: countLabels
      Src: /src/pdns/pdns/recursordist/validate.cc:301,1
    - Dst: countLabels
      Src: /src/pdns/pdns/recursordist/validate.cc:301,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 2
    argCount: 3
    argNames:
    - ' signer'
    - ' owner'
    - ' nsec'
    argTypes:
    - DNSName
    - DNSName
    - NSECRecordContent
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 302
      start: 299
    functionDepth: 0
    functionLinenumber: 299
    functionLinenumberEnd: 302
    functionName: isNSECAncestorDelegation
    functionSourceFile: /src/pdns/pdns/recursordist/validate.cc
    functionUses: 2
    functionsReached:
    - countLabels
    - isSet
    linkageType: ''
    returnType: bool
    signature: bool isNSECAncestorDelegation(const DNSName& signer, const DNSName&
      owner, const NSECRecordContent& nsec)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: isSet
      Src: /src/pdns/pdns/recursordist/validate.cc:306,1
    - Dst: isSet
      Src: /src/pdns/pdns/recursordist/validate.cc:306,1
    - Dst: countLabels
      Src: /src/pdns/pdns/recursordist/validate.cc:306,1
    - Dst: countLabels
      Src: /src/pdns/pdns/recursordist/validate.cc:306,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 2
    argCount: 3
    argNames:
    - ' signer'
    - ' owner'
    - ' nsec3'
    argTypes:
    - DNSName
    - DNSName
    - NSEC3RecordContent
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 307
      start: 304
    functionDepth: 0
    functionLinenumber: 304
    functionLinenumberEnd: 307
    functionName: isNSEC3AncestorDelegation
    functionSourceFile: /src/pdns/pdns/recursordist/validate.cc
    functionUses: 3
    functionsReached:
    - countLabels
    - isSet
    linkageType: ''
    returnType: bool
    signature: bool isNSEC3AncestorDelegation(const DNSName& signer, const DNSName&
      owner, const NSEC3RecordContent& nsec3)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: VLOG
      Src: /src/pdns/pdns/recursordist/validate.cc:312,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/validate.cc:312,1
    - Dst: VLOG
      Src: /src/pdns/pdns/recursordist/validate.cc:314,1
    - Dst: DNSRecordContent::NumberToType
      Src: /src/pdns/pdns/recursordist/validate.cc:314,1
    - Dst: VLOG
      Src: /src/pdns/pdns/recursordist/validate.cc:317,1
    - Dst: getZoneRepresentation
      Src: /src/pdns/pdns/recursordist/validate.cc:317,1
    - Dst: std::dynamic_pointer_cast<const NSECRecordContent>
      Src: /src/pdns/pdns/recursordist/validate.cc:318,1
    - Dst: getNSECOwnerName
      Src: /src/pdns/pdns/recursordist/validate.cc:323,1
    - Dst: VLOG
      Src: /src/pdns/pdns/recursordist/validate.cc:328,1
    - Dst: isTypeDenied
      Src: /src/pdns/pdns/recursordist/validate.cc:329,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/validate.cc:329,1
    - Dst: VLOG_NO_PREFIX
      Src: /src/pdns/pdns/recursordist/validate.cc:330,1
    - Dst: VLOG_NO_PREFIX
      Src: /src/pdns/pdns/recursordist/validate.cc:333,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 22
    argCount: 5
    argNames:
    - ' qname'
    - qtype
    - ' closestEncloser'
    - ' validrrsets'
    - ' log'
    argTypes:
    - DNSName
    - uint16_t
    - DNSName
    - cspmap_t
    - OptLog
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 340
      start: 309
    functionDepth: 0
    functionLinenumber: 309
    functionLinenumberEnd: 340
    functionName: provesNoDataWildCard
    functionSourceFile: /src/pdns/pdns/recursordist/validate.cc
    functionUses: 1
    functionsReached:
    - getZoneRepresentation
    - isTypeDenied
    - std::dynamic_pointer_cast<const NSECRecordContent>
    - QType
    - VLOG_NO_PREFIX
    - DNSRecordContent::NumberToType
    - getNSECOwnerName
    - VLOG
    linkageType: ''
    returnType: bool
    signature: bool provesNoDataWildCard(const DNSName& qname, const uint16_t qtype,
      const DNSName& closestEncloser, const cspmap_t& validrrsets, const OptLog& log)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: getCommonLabels
      Src: /src/pdns/pdns/recursordist/validate.cc:344,1
    - Dst: getCommonLabels
      Src: /src/pdns/pdns/recursordist/validate.cc:345,1
    - Dst: DNSName::countLabels
      Src: /src/pdns/pdns/recursordist/validate.cc:346,1
    - Dst: DNSName::countLabels
      Src: /src/pdns/pdns/recursordist/validate.cc:346,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - ' name'
    - ' owner'
    - ' next'
    argTypes:
    - DNSName
    - DNSName
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 350
      start: 342
    functionDepth: 0
    functionLinenumber: 342
    functionLinenumberEnd: 350
    functionName: getClosestEncloserFromNSEC
    functionSourceFile: /src/pdns/pdns/recursordist/validate.cc
    functionUses: 2
    functionsReached:
    - DNSName::countLabels
    - getCommonLabels
    linkageType: ''
    returnType: DNSName
    signature: DNSName getClosestEncloserFromNSEC(const DNSName& name, const DNSName&
      owner, const DNSName& next)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: VLOG
      Src: /src/pdns/pdns/recursordist/validate.cc:358,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/validate.cc:358,1
    - Dst: VLOG
      Src: /src/pdns/pdns/recursordist/validate.cc:361,1
    - Dst: DNSRecordContent::NumberToType
      Src: /src/pdns/pdns/recursordist/validate.cc:361,1
    - Dst: VLOG
      Src: /src/pdns/pdns/recursordist/validate.cc:364,1
    - Dst: getZoneRepresentation
      Src: /src/pdns/pdns/recursordist/validate.cc:364,1
    - Dst: std::dynamic_pointer_cast<const NSECRecordContent>
      Src: /src/pdns/pdns/recursordist/validate.cc:365,1
    - Dst: getNSECOwnerName
      Src: /src/pdns/pdns/recursordist/validate.cc:370,1
    - Dst: VLOG
      Src: /src/pdns/pdns/recursordist/validate.cc:371,1
    - Dst: isPartOf
      Src: /src/pdns/pdns/recursordist/validate.cc:373,1
    - Dst: auto::isSet
      Src: /src/pdns/pdns/recursordist/validate.cc:373,1
    - Dst: VLOG
      Src: /src/pdns/pdns/recursordist/validate.cc:383,1
    - Dst: isCoveredByNSEC
      Src: /src/pdns/pdns/recursordist/validate.cc:387,1
    - Dst: VLOG
      Src: /src/pdns/pdns/recursordist/validate.cc:388,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 21
    argCount: 5
    argNames:
    - ' qname'
    - qtype
    - ' closestEncloser'
    - ' validrrsets'
    - ' log'
    argTypes:
    - DNSName
    - uint16_t
    - DNSName
    - cspmap_t
    - OptLog
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 396
      start: 356
    functionDepth: 0
    functionLinenumber: 356
    functionLinenumberEnd: 396
    functionName: provesNoWildCard
    functionSourceFile: /src/pdns/pdns/recursordist/validate.cc
    functionUses: 1
    functionsReached:
    - getZoneRepresentation
    - isPartOf
    - std::dynamic_pointer_cast<const NSECRecordContent>
    - QType
    - isCoveredByNSEC
    - auto::isSet
    - DNSRecordContent::NumberToType
    - getNSECOwnerName
    - VLOG
    linkageType: ''
    returnType: bool
    signature: bool provesNoWildCard(const DNSName& qname, const uint16_t qtype, const
      DNSName& closestEncloser, const cspmap_t& validrrsets, const OptLog& log)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: VLOG
      Src: /src/pdns/pdns/recursordist/validate.cc:407,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/validate.cc:407,1
    - Dst: VLOG
      Src: /src/pdns/pdns/recursordist/validate.cc:410,1
    - Dst: DNSRecordContent::NumberToType
      Src: /src/pdns/pdns/recursordist/validate.cc:410,1
    - Dst: VLOG
      Src: /src/pdns/pdns/recursordist/validate.cc:413,1
    - Dst: getZoneRepresentation
      Src: /src/pdns/pdns/recursordist/validate.cc:413,1
    - Dst: std::dynamic_pointer_cast<const NSEC3RecordContent>
      Src: /src/pdns/pdns/recursordist/validate.cc:414,1
    - Dst: getSigner
      Src: /src/pdns/pdns/recursordist/validate.cc:419,1
    - Dst: first::first::isPartOf
      Src: /src/pdns/pdns/recursordist/validate.cc:420,1
    - Dst: isPartOf
      Src: /src/pdns/pdns/recursordist/validate.cc:420,1
    - Dst: getHashFromNSEC3
      Src: /src/pdns/pdns/recursordist/validate.cc:424,1
    - Dst: string::empty
      Src: /src/pdns/pdns/recursordist/validate.cc:425,1
    - Dst: VLOG
      Src: /src/pdns/pdns/recursordist/validate.cc:426,1
    - Dst: VLOG
      Src: /src/pdns/pdns/recursordist/validate.cc:429,1
    - Dst: toBase32Hex
      Src: /src/pdns/pdns/recursordist/validate.cc:429,1
    - Dst: fromBase32Hex
      Src: /src/pdns/pdns/recursordist/validate.cc:430,1
    - Dst: first::first::getRawLabel
      Src: /src/pdns/pdns/recursordist/validate.cc:430,1
    - Dst: VLOG
      Src: /src/pdns/pdns/recursordist/validate.cc:431,1
    - Dst: toBase32Hex
      Src: /src/pdns/pdns/recursordist/validate.cc:431,1
    - Dst: toBase32Hex
      Src: /src/pdns/pdns/recursordist/validate.cc:431,1
    - Dst: VLOG
      Src: /src/pdns/pdns/recursordist/validate.cc:434,1
    - Dst: isNSEC3AncestorDelegation
      Src: /src/pdns/pdns/recursordist/validate.cc:445,1
    - Dst: VLOG_NO_PREFIX
      Src: /src/pdns/pdns/recursordist/validate.cc:447,1
    - Dst: isTypeDenied
      Src: /src/pdns/pdns/recursordist/validate.cc:451,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/validate.cc:451,1
    - Dst: VLOG_NO_PREFIX
      Src: /src/pdns/pdns/recursordist/validate.cc:452,1
    - Dst: VLOG_NO_PREFIX
      Src: /src/pdns/pdns/recursordist/validate.cc:455,1
    - Dst: isCoveredByNSEC3Hash
      Src: /src/pdns/pdns/recursordist/validate.cc:459,1
    - Dst: VLOG
      Src: /src/pdns/pdns/recursordist/validate.cc:460,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 41
    argCount: 6
    argNames:
    - ' closestEncloser'
    - qtype
    - ' validrrsets'
    - wildcardExists
    - ' log'
    - ' context'
    argTypes:
    - DNSName
    - uint16_t
    - cspmap_t
    - bool*
    - OptLog
    - pdns::validation::ValidationContext
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 468
      start: 404
    functionDepth: 0
    functionLinenumber: 404
    functionLinenumberEnd: 468
    functionName: provesNSEC3NoWildCard
    functionSourceFile: /src/pdns/pdns/recursordist/validate.cc
    functionUses: 1
    functionsReached:
    - getZoneRepresentation
    - isTypeDenied
    - isPartOf
    - getSigner
    - string::empty
    - std::dynamic_pointer_cast<const NSEC3RecordContent>
    - QType
    - first::first::isPartOf
    - isCoveredByNSEC3Hash
    - getHashFromNSEC3
    - VLOG_NO_PREFIX
    - isNSEC3AncestorDelegation
    - DNSRecordContent::NumberToType
    - toBase32Hex
    - fromBase32Hex
    - first::first::getRawLabel
    - VLOG
    linkageType: ''
    returnType: bool
    signature: bool provesNSEC3NoWildCard(const DNSName& closestEncloser, uint16_t
      const qtype, const cspmap_t& validrrsets, bool* wildcardExists, const OptLog&
      log, pdns::validation::ValidationContext& context)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: getSigner
      Src: /src/pdns/pdns/recursordist/validate.cc:472,1
    - Dst: isPartOf
      Src: /src/pdns/pdns/recursordist/validate.cc:473,1
    - Dst: isPartOf
      Src: /src/pdns/pdns/recursordist/validate.cc:473,1
    - Dst: getNSECOwnerName
      Src: /src/pdns/pdns/recursordist/validate.cc:477,1
    - Dst: isPartOf
      Src: /src/pdns/pdns/recursordist/validate.cc:484,1
    - Dst: isNSECAncestorDelegation
      Src: /src/pdns/pdns/recursordist/validate.cc:484,1
    - Dst: VLOG_NO_PREFIX
      Src: /src/pdns/pdns/recursordist/validate.cc:487,1
    - Dst: isTypeDenied
      Src: /src/pdns/pdns/recursordist/validate.cc:494,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/validate.cc:494,1
    - Dst: VLOG_NO_PREFIX
      Src: /src/pdns/pdns/recursordist/validate.cc:495,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/validate.cc:495,1
    - Dst: VLOG_NO_PREFIX
      Src: /src/pdns/pdns/recursordist/validate.cc:500,1
    - Dst: VLOG_NO_PREFIX
      Src: /src/pdns/pdns/recursordist/validate.cc:504,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/validate.cc:504,1
    - Dst: isPartOf
      Src: /src/pdns/pdns/recursordist/validate.cc:508,1
    - Dst: isSet
      Src: /src/pdns/pdns/recursordist/validate.cc:508,1
    - Dst: VLOG
      Src: /src/pdns/pdns/recursordist/validate.cc:518,1
    - Dst: isCoveredByNSEC
      Src: /src/pdns/pdns/recursordist/validate.cc:522,1
    - Dst: VLOG_NO_PREFIX
      Src: /src/pdns/pdns/recursordist/validate.cc:523,1
    - Dst: nsecProvesENT
      Src: /src/pdns/pdns/recursordist/validate.cc:525,1
    - Dst: VLOG_NO_PREFIX
      Src: /src/pdns/pdns/recursordist/validate.cc:526,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/validate.cc:526,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 35
    argCount: 6
    argNames:
    - ' name'
    - qtype
    - ' nsecOwner'
    - ' nsec'
    - ' signatures'
    - ' log'
    argTypes:
    - DNSName
    - uint16_t
    - DNSName
    - NSECRecordContent
    - std::vector<std::shared_ptr<const RRSIGRecordContent>>
    - OptLog
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 534
      start: 470
    functionDepth: 0
    functionLinenumber: 470
    functionLinenumberEnd: 534
    functionName: matchesNSEC
    functionSourceFile: /src/pdns/pdns/recursordist/validate.cc
    functionUses: 1
    functionsReached:
    - isTypeDenied
    - isPartOf
    - isSet
    - getSigner
    - QType
    - isCoveredByNSEC
    - nsecProvesENT
    - VLOG_NO_PREFIX
    - VLOG
    - getNSECOwnerName
    - isNSECAncestorDelegation
    linkageType: ''
    returnType: dState
    signature: dState matchesNSEC(const DNSName& name, uint16_t qtype, const DNSName&
      nsecOwner, const NSECRecordContent& nsec, const std::vector<std::shared_ptr<const
      RRSIGRecordContent>>& signatures, const OptLog& log)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<uint64_t>
      Src: /src/pdns/pdns/recursordist/validate.cc:538,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - maxLabels
    - iterations
    - saltLength
    argTypes:
    - uint8_t
    - uint16_t
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 539
      start: 536
    functionDepth: 0
    functionLinenumber: 536
    functionLinenumberEnd: 539
    functionName: getNSEC3DenialProofWorstCaseIterationsCount
    functionSourceFile: /src/pdns/pdns/recursordist/validate.cc
    functionUses: 2
    functionsReached:
    - static_cast<uint64_t>
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t getNSEC3DenialProofWorstCaseIterationsCount(uint8_t maxLabels,
      uint16_t iterations, size_t saltLength)
  - BBCount: 68
    BranchProfiles: []
    Callsites:
    - Dst: countLabels
      Src: /src/pdns/pdns/recursordist/validate.cc:555,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/recursordist/validate.cc:556,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/recursordist/validate.cc:559,1
    - Dst: VLOG
      Src: /src/pdns/pdns/recursordist/validate.cc:562,1
    - Dst: DNSRecordContent::NumberToType
      Src: /src/pdns/pdns/recursordist/validate.cc:562,1
    - Dst: VLOG
      Src: /src/pdns/pdns/recursordist/validate.cc:566,1
    - Dst: getZoneRepresentation
      Src: /src/pdns/pdns/recursordist/validate.cc:566,1
    - Dst: second::signatures::empty
      Src: /src/pdns/pdns/recursordist/validate.cc:568,1
    - Dst: std::dynamic_pointer_cast<const NSECRecordContent>
      Src: /src/pdns/pdns/recursordist/validate.cc:572,1
    - Dst: DNSName::DNSName
      Src: /src/pdns/pdns/recursordist/validate.cc:577,1
    - Dst: DNSName::trimToLabels
      Src: /src/pdns/pdns/recursordist/validate.cc:584,1
    - Dst: getNSECOwnerName
      Src: /src/pdns/pdns/recursordist/validate.cc:589,1
    - Dst: getSigner
      Src: /src/pdns/pdns/recursordist/validate.cc:590,1
    - Dst: first::first::isPartOf
      Src: /src/pdns/pdns/recursordist/validate.cc:591,1
    - Dst: DNSName::isPartOf
      Src: /src/pdns/pdns/recursordist/validate.cc:591,1
    - Dst: DNSName::isPartOf
      Src: /src/pdns/pdns/recursordist/validate.cc:591,1
    - Dst: DNSName::countLabels
      Src: /src/pdns/pdns/recursordist/validate.cc:599,1
    - Dst: DNSName::countLabels
      Src: /src/pdns/pdns/recursordist/validate.cc:599,1
    - Dst: auto::isSet
      Src: /src/pdns/pdns/recursordist/validate.cc:600,1
    - Dst: auto::isSet
      Src: /src/pdns/pdns/recursordist/validate.cc:600,1
    - Dst: VLOG
      Src: /src/pdns/pdns/recursordist/validate.cc:601,1
    - Dst: DNSName::isPartOf
      Src: /src/pdns/pdns/recursordist/validate.cc:611,1
    - Dst: isNSECAncestorDelegation
      Src: /src/pdns/pdns/recursordist/validate.cc:611,1
    - Dst: VLOG
      Src: /src/pdns/pdns/recursordist/validate.cc:614,1
    - Dst: DNSName::isRoot
      Src: /src/pdns/pdns/recursordist/validate.cc:619,1
    - Dst: VLOG
      Src: /src/pdns/pdns/recursordist/validate.cc:620,1
    - Dst: isTypeDenied
      Src: /src/pdns/pdns/recursordist/validate.cc:626,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/validate.cc:626,1
    - Dst: VLOG
      Src: /src/pdns/pdns/recursordist/validate.cc:627,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/validate.cc:627,1
    - Dst: VLOG
      Src: /src/pdns/pdns/recursordist/validate.cc:631,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/validate.cc:631,1
    - Dst: auto::isSet
      Src: /src/pdns/pdns/recursordist/validate.cc:640,1
    - Dst: VLOG
      Src: /src/pdns/pdns/recursordist/validate.cc:641,1
    - Dst: isWildcardExpanded
      Src: /src/pdns/pdns/recursordist/validate.cc:649,1
    - Dst: isWildcardExpandedOntoItself
      Src: /src/pdns/pdns/recursordist/validate.cc:649,1
    - Dst: getClosestEncloserFromNSEC
      Src: /src/pdns/pdns/recursordist/validate.cc:657,1
    - Dst: provesNoWildCard
      Src: /src/pdns/pdns/recursordist/validate.cc:658,1
    - Dst: VLOG
      Src: /src/pdns/pdns/recursordist/validate.cc:662,1
    - Dst: DNSName::isPartOf
      Src: /src/pdns/pdns/recursordist/validate.cc:666,1
    - Dst: auto::isSet
      Src: /src/pdns/pdns/recursordist/validate.cc:666,1
    - Dst: VLOG
      Src: /src/pdns/pdns/recursordist/validate.cc:676,1
    - Dst: isCoveredByNSEC
      Src: /src/pdns/pdns/recursordist/validate.cc:681,1
    - Dst: VLOG
      Src: /src/pdns/pdns/recursordist/validate.cc:682,1
    - Dst: nsecProvesENT
      Src: /src/pdns/pdns/recursordist/validate.cc:684,1
    - Dst: VLOG_NO_PREFIX
      Src: /src/pdns/pdns/recursordist/validate.cc:688,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/validate.cc:688,1
    - Dst: VLOG_NO_PREFIX
      Src: /src/pdns/pdns/recursordist/validate.cc:692,1
    - Dst: VLOG_NO_PREFIX
      Src: /src/pdns/pdns/recursordist/validate.cc:697,1
    - Dst: VLOG_NO_PREFIX
      Src: /src/pdns/pdns/recursordist/validate.cc:701,1
    - Dst: getClosestEncloserFromNSEC
      Src: /src/pdns/pdns/recursordist/validate.cc:702,1
    - Dst: VLOG_NO_PREFIX
      Src: /src/pdns/pdns/recursordist/validate.cc:704,1
    - Dst: provesNoDataWildCard
      Src: /src/pdns/pdns/recursordist/validate.cc:705,1
    - Dst: VLOG_NO_PREFIX
      Src: /src/pdns/pdns/recursordist/validate.cc:710,1
    - Dst: provesNoWildCard
      Src: /src/pdns/pdns/recursordist/validate.cc:711,1
    - Dst: VLOG
      Src: /src/pdns/pdns/recursordist/validate.cc:716,1
    - Dst: VLOG
      Src: /src/pdns/pdns/recursordist/validate.cc:720,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/validate.cc:720,1
    - Dst: auto::isSet
      Src: /src/pdns/pdns/recursordist/validate.cc:720,1
    - Dst: VLOG
      Src: /src/pdns/pdns/recursordist/validate.cc:725,1
    - Dst: getZoneRepresentation
      Src: /src/pdns/pdns/recursordist/validate.cc:725,1
    - Dst: std::dynamic_pointer_cast<const NSEC3RecordContent>
      Src: /src/pdns/pdns/recursordist/validate.cc:726,1
    - Dst: second::signatures::empty
      Src: /src/pdns/pdns/recursordist/validate.cc:731,1
    - Dst: getSigner
      Src: /src/pdns/pdns/recursordist/validate.cc:736,1
    - Dst: isPartOf
      Src: /src/pdns/pdns/recursordist/validate.cc:737,1
    - Dst: VLOG
      Src: /src/pdns/pdns/recursordist/validate.cc:738,1
    - Dst: std::min
      Src: /src/pdns/pdns/recursordist/validate.cc:741,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/recursordist/validate.cc:741,1
    - Dst: DNSName::countLabels
      Src: /src/pdns/pdns/recursordist/validate.cc:741,1
    - Dst: isPartOf
      Src: /src/pdns/pdns/recursordist/validate.cc:743,1
    - Dst: isRoot
      Src: /src/pdns/pdns/recursordist/validate.cc:747,1
    - Dst: VLOG
      Src: /src/pdns/pdns/recursordist/validate.cc:748,1
    - Dst: VLOG
      Src: /src/pdns/pdns/recursordist/validate.cc:753,1
    - Dst: getHashFromNSEC3
      Src: /src/pdns/pdns/recursordist/validate.cc:759,1
    - Dst: string::empty
      Src: /src/pdns/pdns/recursordist/validate.cc:760,1
    - Dst: VLOG
      Src: /src/pdns/pdns/recursordist/validate.cc:761,1
    - Dst: VLOG
      Src: /src/pdns/pdns/recursordist/validate.cc:767,1
    - Dst: toBase32Hex
      Src: /src/pdns/pdns/recursordist/validate.cc:767,1
    - Dst: fromBase32Hex
      Src: /src/pdns/pdns/recursordist/validate.cc:768,1
    - Dst: getRawLabel
      Src: /src/pdns/pdns/recursordist/validate.cc:768,1
    - Dst: DNSName::countLabels
      Src: /src/pdns/pdns/recursordist/validate.cc:777,1
    - Dst: countLabels
      Src: /src/pdns/pdns/recursordist/validate.cc:777,1
    - Dst: auto::isSet
      Src: /src/pdns/pdns/recursordist/validate.cc:778,1
    - Dst: auto::isSet
      Src: /src/pdns/pdns/recursordist/validate.cc:778,1
    - Dst: VLOG
      Src: /src/pdns/pdns/recursordist/validate.cc:779,1
    - Dst: isNSEC3AncestorDelegation
      Src: /src/pdns/pdns/recursordist/validate.cc:789,1
    - Dst: VLOG
      Src: /src/pdns/pdns/recursordist/validate.cc:791,1
    - Dst: isTypeDenied
      Src: /src/pdns/pdns/recursordist/validate.cc:795,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/validate.cc:795,1
    - Dst: VLOG
      Src: /src/pdns/pdns/recursordist/validate.cc:796,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/validate.cc:796,1
    - Dst: VLOG
      Src: /src/pdns/pdns/recursordist/validate.cc:800,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/validate.cc:800,1
    - Dst: auto::isSet
      Src: /src/pdns/pdns/recursordist/validate.cc:810,1
    - Dst: VLOG
      Src: /src/pdns/pdns/recursordist/validate.cc:811,1
    - Dst: VLOG
      Src: /src/pdns/pdns/recursordist/validate.cc:834,1
    - Dst: DNSName::chopOff
      Src: /src/pdns/pdns/recursordist/validate.cc:836,1
    - Dst: DNSName::countLabels
      Src: /src/pdns/pdns/recursordist/validate.cc:836,1
    - Dst: VLOG
      Src: /src/pdns/pdns/recursordist/validate.cc:842,1
    - Dst: getZoneRepresentation
      Src: /src/pdns/pdns/recursordist/validate.cc:842,1
    - Dst: std::dynamic_pointer_cast<const NSEC3RecordContent>
      Src: /src/pdns/pdns/recursordist/validate.cc:843,1
    - Dst: getSigner
      Src: /src/pdns/pdns/recursordist/validate.cc:848,1
    - Dst: first::first::isPartOf
      Src: /src/pdns/pdns/recursordist/validate.cc:849,1
    - Dst: VLOG
      Src: /src/pdns/pdns/recursordist/validate.cc:850,1
    - Dst: DNSName::isPartOf
      Src: /src/pdns/pdns/recursordist/validate.cc:854,1
    - Dst: VLOG
      Src: /src/pdns/pdns/recursordist/validate.cc:859,1
    - Dst: getHashFromNSEC3
      Src: /src/pdns/pdns/recursordist/validate.cc:865,1
    - Dst: string::empty
      Src: /src/pdns/pdns/recursordist/validate.cc:866,1
    - Dst: VLOG
      Src: /src/pdns/pdns/recursordist/validate.cc:867,1
    - Dst: fromBase32Hex
      Src: /src/pdns/pdns/recursordist/validate.cc:871,1
    - Dst: first::first::getRawLabel
      Src: /src/pdns/pdns/recursordist/validate.cc:871,1
    - Dst: VLOG
      Src: /src/pdns/pdns/recursordist/validate.cc:873,1
    - Dst: toBase32Hex
      Src: /src/pdns/pdns/recursordist/validate.cc:873,1
    - Dst: toBase32Hex
      Src: /src/pdns/pdns/recursordist/validate.cc:873,1
    - Dst: isNSEC3AncestorDelegation
      Src: /src/pdns/pdns/recursordist/validate.cc:876,1
    - Dst: VLOG
      Src: /src/pdns/pdns/recursordist/validate.cc:877,1
    - Dst: VLOG
      Src: /src/pdns/pdns/recursordist/validate.cc:881,1
    - Dst: auto::isSet
      Src: /src/pdns/pdns/recursordist/validate.cc:884,1
    - Dst: VLOG
      Src: /src/pdns/pdns/recursordist/validate.cc:894,1
    - Dst: DNSName::countLabels
      Src: /src/pdns/pdns/recursordist/validate.cc:915,1
    - Dst: DNSName::chopOff
      Src: /src/pdns/pdns/recursordist/validate.cc:917,1
    - Dst: countLabels
      Src: /src/pdns/pdns/recursordist/validate.cc:929,1
    - Dst: DNSName::countLabels
      Src: /src/pdns/pdns/recursordist/validate.cc:929,1
    - Dst: DNSName::prependRawLabel
      Src: /src/pdns/pdns/recursordist/validate.cc:932,1
    - Dst: getRawLabel
      Src: /src/pdns/pdns/recursordist/validate.cc:932,1
    - Dst: VLOG
      Src: /src/pdns/pdns/recursordist/validate.cc:934,1
    - Dst: VLOG
      Src: /src/pdns/pdns/recursordist/validate.cc:939,1
    - Dst: getZoneRepresentation
      Src: /src/pdns/pdns/recursordist/validate.cc:939,1
    - Dst: std::dynamic_pointer_cast<const NSEC3RecordContent>
      Src: /src/pdns/pdns/recursordist/validate.cc:940,1
    - Dst: VLOG
      Src: /src/pdns/pdns/recursordist/validate.cc:946,1
    - Dst: getHashFromNSEC3
      Src: /src/pdns/pdns/recursordist/validate.cc:952,1
    - Dst: string::empty
      Src: /src/pdns/pdns/recursordist/validate.cc:953,1
    - Dst: VLOG
      Src: /src/pdns/pdns/recursordist/validate.cc:954,1
    - Dst: getSigner
      Src: /src/pdns/pdns/recursordist/validate.cc:958,1
    - Dst: first::first::isPartOf
      Src: /src/pdns/pdns/recursordist/validate.cc:959,1
    - Dst: VLOG
      Src: /src/pdns/pdns/recursordist/validate.cc:960,1
    - Dst: DNSName::isPartOf
      Src: /src/pdns/pdns/recursordist/validate.cc:964,1
    - Dst: fromBase32Hex
      Src: /src/pdns/pdns/recursordist/validate.cc:968,1
    - Dst: first::first::getRawLabel
      Src: /src/pdns/pdns/recursordist/validate.cc:968,1
    - Dst: VLOG
      Src: /src/pdns/pdns/recursordist/validate.cc:970,1
    - Dst: toBase32Hex
      Src: /src/pdns/pdns/recursordist/validate.cc:970,1
    - Dst: toBase32Hex
      Src: /src/pdns/pdns/recursordist/validate.cc:970,1
    - Dst: toBase32Hex
      Src: /src/pdns/pdns/recursordist/validate.cc:970,1
    - Dst: isCoveredByNSEC3Hash
      Src: /src/pdns/pdns/recursordist/validate.cc:971,1
    - Dst: VLOG
      Src: /src/pdns/pdns/recursordist/validate.cc:972,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/validate.cc:972,1
    - Dst: auto::isOptOut
      Src: /src/pdns/pdns/recursordist/validate.cc:975,1
    - Dst: VLOG_NO_PREFIX
      Src: /src/pdns/pdns/recursordist/validate.cc:976,1
    - Dst: VLOG_NO_PREFIX
      Src: /src/pdns/pdns/recursordist/validate.cc:980,1
    - Dst: VLOG
      Src: /src/pdns/pdns/recursordist/validate.cc:983,1
    - Dst: toBase32Hex
      Src: /src/pdns/pdns/recursordist/validate.cc:983,1
    - Dst: toBase32Hex
      Src: /src/pdns/pdns/recursordist/validate.cc:983,1
    - Dst: provesNSEC3NoWildCard
      Src: /src/pdns/pdns/recursordist/validate.cc:996,1
    - Dst: VLOG
      Src: /src/pdns/pdns/recursordist/validate.cc:998,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/validate.cc:998,1
    CyclomaticComplexity: 126
    EdgeCount: 126
    ICount: 273
    argCount: 9
    argNames:
    - ' validrrsets'
    - ' qname'
    - qtype
    - referralToUnsigned
    - wantsNoDataProof
    - ' context'
    - ' log'
    - needWildcardProof
    - wildcardLabelsCount
    argTypes:
    - cspmap_t
    - DNSName
    - uint16_t
    - bool
    - bool
    - pdns::validation::ValidationContext
    - OptLog
    - bool
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1014
      start: 552
    functionDepth: 0
    functionLinenumber: 552
    functionLinenumberEnd: 1014
    functionName: getDenial
    functionSourceFile: /src/pdns/pdns/recursordist/validate.cc
    functionUses: 4
    functionsReached:
    - getZoneRepresentation
    - second::signatures::empty
    - getSigner
    - PDNSException
    - std::dynamic_pointer_cast<const NSECRecordContent>
    - DNSName::trimToLabels
    - isRoot
    - auto::isSet
    - getNSECOwnerName
    - countLabels
    - isTypeDenied
    - DNSName::chopOff
    - string::empty
    - QType
    - first::first::isPartOf
    - DNSName::isRoot
    - isCoveredByNSEC
    - nsecProvesENT
    - DNSRecordContent::NumberToType
    - DNSName::isPartOf
    - fromBase32Hex
    - first::first::getRawLabel
    - auto::isOptOut
    - pdns::max
    - isPartOf
    - std::dynamic_pointer_cast<const NSEC3RecordContent>
    - DNSName::prependRawLabel
    - isWildcardExpandedOntoItself
    - static_cast<uint8_t>
    - getHashFromNSEC3
    - isNSEC3AncestorDelegation
    - provesNSEC3NoWildCard
    - isWildcardExpanded
    - provesNoWildCard
    - isNSECAncestorDelegation
    - VLOG
    - getRawLabel
    - DNSName::countLabels
    - std::min
    - provesNoDataWildCard
    - isCoveredByNSEC3Hash
    - VLOG_NO_PREFIX
    - getClosestEncloserFromNSEC
    - toBase32Hex
    - DNSName::DNSName
    linkageType: ''
    returnType: dState
    signature: dState getDenial(const cspmap_t& validrrsets, const DNSName& qname,
      const uint16_t qtype, bool referralToUnsigned, bool wantsNoDataProof, pdns::validation::ValidationContext&
      context, const OptLog& log, bool needWildcardProof, unsigned int wildcardLabelsCount)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: rfc1982LessThanOrEqual
      Src: /src/pdns/pdns/recursordist/validate.cc:1020,1
    - Dst: static_cast<uint32_t>
      Src: /src/pdns/pdns/recursordist/validate.cc:1020,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - now
    - ' sig'
    argTypes:
    - time_t
    - RRSIGRecordContent
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1021
      start: 1016
    functionDepth: 0
    functionLinenumber: 1016
    functionLinenumberEnd: 1021
    functionName: isRRSIGNotExpired
    functionSourceFile: /src/pdns/pdns/recursordist/validate.cc
    functionUses: 5
    functionsReached:
    - rfc1982LessThanOrEqual
    - static_cast<uint32_t>
    linkageType: ''
    returnType: bool
    signature: bool isRRSIGNotExpired(const time_t now, const RRSIGRecordContent&
      sig)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: rfc1982LessThanOrEqual
      Src: /src/pdns/pdns/recursordist/validate.cc:1027,1
    - Dst: static_cast<uint32_t>
      Src: /src/pdns/pdns/recursordist/validate.cc:1027,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - now
    - ' sig'
    argTypes:
    - time_t
    - RRSIGRecordContent
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1028
      start: 1023
    functionDepth: 0
    functionLinenumber: 1023
    functionLinenumberEnd: 1028
    functionName: isRRSIGIncepted
    functionSourceFile: /src/pdns/pdns/recursordist/validate.cc
    functionUses: 3
    functionsReached:
    - rfc1982LessThanOrEqual
    - static_cast<uint32_t>
    linkageType: ''
    returnType: bool
    signature: bool isRRSIGIncepted(const time_t now, const RRSIGRecordContent& sig)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: isRRSIGIncepted
      Src: /src/pdns/pdns/recursordist/validate.cc:1039,1
    - Dst: isRRSIGNotExpired
      Src: /src/pdns/pdns/recursordist/validate.cc:1042,1
    - Dst: VLOG
      Src: /src/pdns/pdns/recursordist/validate.cc:1049,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 5
    argNames:
    - ' qname'
    - now
    - ' sig'
    - ' ede'
    - ' log'
    argTypes:
    - DNSName
    - time_t
    - RRSIGRecordContent
    - vState
    - OptLog
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1051
      start: 1032
    functionDepth: 0
    functionLinenumber: 1032
    functionLinenumberEnd: 1051
    functionName: checkSignatureInceptionAndExpiry
    functionSourceFile: /src/pdns/pdns/recursordist/validate.cc
    functionUses: 2
    functionsReached:
    - isRRSIGNotExpired
    - isRRSIGIncepted
    - VLOG
    linkageType: ''
    returnType: bool
    signature: bool checkSignatureInceptionAndExpiry(const DNSName& qname, time_t
      now, const RRSIGRecordContent& sig, vState& ede, const OptLog& log)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DNSCryptoKeyEngine::makeFromPublicKeyString
      Src: /src/pdns/pdns/recursordist/validate.cc:1057,1
    - Dst: withName
      Src: /src/pdns/pdns/recursordist/validate.cc:1057,1
    - Dst: auto::verify
      Src: /src/pdns/pdns/recursordist/validate.cc:1058,1
    - Dst: VLOG
      Src: /src/pdns/pdns/recursordist/validate.cc:1059,1
    - Dst: DNSSEC::algorithm2name
      Src: /src/pdns/pdns/recursordist/validate.cc:1059,1
    - Dst: VLOG
      Src: /src/pdns/pdns/recursordist/validate.cc:1065,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/validate.cc:1065,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 6
    argNames:
    - ' qname'
    - ' sig'
    - ' key'
    - ' msg'
    - ' ede'
    - ' log'
    argTypes:
    - DNSName
    - RRSIGRecordContent
    - DNSKEYRecordContent
    - std::string
    - vState
    - OptLog
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1069
      start: 1053
    functionDepth: 0
    functionLinenumber: 1053
    functionLinenumberEnd: 1069
    functionName: checkSignatureWithKey
    functionSourceFile: /src/pdns/pdns/recursordist/validate.cc
    functionUses: 2
    functionsReached:
    - withName
    - what
    - auto::verify
    - DNSSEC::algorithm2name
    - VLOG
    - DNSCryptoKeyEngine::makeFromPublicKeyString
    linkageType: ''
    returnType: bool
    signature: bool checkSignatureWithKey(const DNSName& qname, const RRSIGRecordContent&
      sig, const DNSKEYRecordContent& key, const std::string& msg, vState& ede, const
      OptLog& log)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: isRRSIGIncepted
      Src: /src/pdns/pdns/recursordist/validate.cc:1039,1
    - Dst: isRRSIGNotExpired
      Src: /src/pdns/pdns/recursordist/validate.cc:1042,1
    - Dst: VLOG
      Src: /src/pdns/pdns/recursordist/validate.cc:1049,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 5
    argNames:
    - ' qname'
    - now
    - ' sig'
    - ' ede'
    - ' log'
    argTypes:
    - DNSName
    - time_t
    - RRSIGRecordContent
    - vState
    - OptLog
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1051
      start: 1032
    functionDepth: 0
    functionLinenumber: 1032
    functionLinenumberEnd: 1051
    functionName: checkSignatureInceptionAndExpiry
    functionSourceFile: /src/pdns/pdns/recursordist/validate.cc
    functionUses: 2
    functionsReached:
    - isRRSIGNotExpired
    - isRRSIGIncepted
    - VLOG
    linkageType: ''
    returnType: bool
    signature: bool checkSignatureInceptionAndExpiry(const DNSName& qname, time_t
      now, const RRSIGRecordContent& sig, vState& ede, const OptLog& log)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DNSCryptoKeyEngine::makeFromPublicKeyString
      Src: /src/pdns/pdns/recursordist/validate.cc:1057,1
    - Dst: withName
      Src: /src/pdns/pdns/recursordist/validate.cc:1057,1
    - Dst: auto::verify
      Src: /src/pdns/pdns/recursordist/validate.cc:1058,1
    - Dst: VLOG
      Src: /src/pdns/pdns/recursordist/validate.cc:1059,1
    - Dst: DNSSEC::algorithm2name
      Src: /src/pdns/pdns/recursordist/validate.cc:1059,1
    - Dst: VLOG
      Src: /src/pdns/pdns/recursordist/validate.cc:1065,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/validate.cc:1065,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 6
    argNames:
    - ' qname'
    - ' sig'
    - ' key'
    - ' msg'
    - ' ede'
    - ' log'
    argTypes:
    - DNSName
    - RRSIGRecordContent
    - DNSKEYRecordContent
    - std::string
    - vState
    - OptLog
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1069
      start: 1053
    functionDepth: 0
    functionLinenumber: 1053
    functionLinenumberEnd: 1069
    functionName: checkSignatureWithKey
    functionSourceFile: /src/pdns/pdns/recursordist/validate.cc
    functionUses: 2
    functionsReached:
    - withName
    - what
    - auto::verify
    - DNSSEC::algorithm2name
    - VLOG
    - DNSCryptoKeyEngine::makeFromPublicKeyString
    linkageType: ''
    returnType: bool
    signature: bool checkSignatureWithKey(const DNSName& qname, const RRSIGRecordContent&
      sig, const DNSKEYRecordContent& key, const std::string& msg, vState& ede, const
      OptLog& log)
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: countLabels
      Src: /src/pdns/pdns/recursordist/validate.cc:1082,1
    - Dst: VLOG
      Src: /src/pdns/pdns/recursordist/validate.cc:1084,1
    - Dst: DNSCryptoKeyEngine::isAlgorithmSupported
      Src: /src/pdns/pdns/recursordist/validate.cc:1089,1
    - Dst: checkSignatureInceptionAndExpiry
      Src: /src/pdns/pdns/recursordist/validate.cc:1092,1
    - Dst: isRRSIGIncepted
      Src: /src/pdns/pdns/recursordist/validate.cc:1093,1
    - Dst: isRRSIGNotExpired
      Src: /src/pdns/pdns/recursordist/validate.cc:1096,1
    - Dst: VLOG
      Src: /src/pdns/pdns/recursordist/validate.cc:1103,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/validate.cc:1103,1
    - Dst: addS
      Src: /src/pdns/pdns/recursordist/validate.cc:1103,1
    - Dst: getByTag
      Src: /src/pdns/pdns/recursordist/validate.cc:1111,1
    - Dst: auto::empty
      Src: /src/pdns/pdns/recursordist/validate.cc:1113,1
    - Dst: VLOG
      Src: /src/pdns/pdns/recursordist/validate.cc:1114,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/validate.cc:1114,1
    - Dst: getMessageForRRSET
      Src: /src/pdns/pdns/recursordist/validate.cc:1119,1
    - Dst: VLOG
      Src: /src/pdns/pdns/recursordist/validate.cc:1123,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/validate.cc:1123,1
    - Dst: addS
      Src: /src/pdns/pdns/recursordist/validate.cc:1123,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/validate.cc:1123,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/validate.cc:1123,1
    - Dst: checkSignatureWithKey
      Src: /src/pdns/pdns/recursordist/validate.cc:1131,1
    - Dst: VLOG
      Src: /src/pdns/pdns/recursordist/validate.cc:1135,1
    - Dst: DNSRecordContent::NumberToType
      Src: /src/pdns/pdns/recursordist/validate.cc:1135,1
    - Dst: VLOG
      Src: /src/pdns/pdns/recursordist/validate.cc:1140,1
    - Dst: isRRSIGIncepted
      Src: /src/pdns/pdns/recursordist/validate.cc:1141,1
    - Dst: isRRSIGNotExpired
      Src: /src/pdns/pdns/recursordist/validate.cc:1144,1
    CyclomaticComplexity: 27
    EdgeCount: 27
    ICount: 67
    argCount: 8
    argNames:
    - now
    - ' name'
    - ' toSign'
    - ' signatures'
    - ' keys'
    - ' log'
    - ' context'
    - validateAllSigs
    argTypes:
    - time_t
    - DNSName
    - sortedRecords_t
    - vector<shared_ptr<const RRSIGRecordContent>>
    - skeyset_t
    - OptLog
    - pdns::validation::ValidationContext
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1171
      start: 1073
    functionDepth: 0
    functionLinenumber: 1073
    functionLinenumberEnd: 1171
    functionName: validateWithKeySet
    functionSourceFile: /src/pdns/pdns/recursordist/validate.cc
    functionUses: 1
    functionsReached:
    - DNSCryptoKeyEngine::isAlgorithmSupported
    - countLabels
    - isRRSIGNotExpired
    - addS
    - std::to_string
    - getMessageForRRSET
    - isRRSIGIncepted
    - DNSRecordContent::NumberToType
    - checkSignatureInceptionAndExpiry
    - getByTag
    - VLOG
    - checkSignatureWithKey
    - auto::empty
    linkageType: ''
    returnType: vState
    signature: vState validateWithKeySet(time_t now, const DNSName& name, const sortedRecords_t&
      toSign, const vector<shared_ptr<const RRSIGRecordContent>>& signatures, const
      skeyset_t& keys, const OptLog& log, pdns::validation::ValidationContext& context,
      bool validateAllSigs)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: find
      Src: /src/pdns/pdns/recursordist/validate.cc:1175,1
    - Dst: cend
      Src: /src/pdns/pdns/recursordist/validate.cc:1177,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - ' anchors'
    - ' zone'
    - ' res'
    argTypes:
    - map<DNSName, dsset_t>
    - DNSName
    - dsset_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1183
      start: 1173
    functionDepth: 0
    functionLinenumber: 1173
    functionLinenumberEnd: 1183
    functionName: getTrustAnchor
    functionSourceFile: /src/pdns/pdns/recursordist/validate.cc
    functionUses: 1
    functionsReached:
    - cend
    - find
    linkageType: ''
    returnType: bool
    signature: bool getTrustAnchor(const map<DNSName, dsset_t>& anchors, const DNSName&
      zone, dsset_t& res)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: find
      Src: /src/pdns/pdns/recursordist/validate.cc:1187,1
    - Dst: cend
      Src: /src/pdns/pdns/recursordist/validate.cc:1189,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - ' negAnchors'
    - ' zone'
    - ' reason'
    argTypes:
    - map<DNSName, std::string>
    - DNSName
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1195
      start: 1185
    functionDepth: 0
    functionLinenumber: 1185
    functionLinenumberEnd: 1195
    functionName: haveNegativeTrustAnchor
    functionSourceFile: /src/pdns/pdns/recursordist/validate.cc
    functionUses: 1
    functionsReached:
    - cend
    - find
    linkageType: ''
    returnType: bool
    signature: bool haveNegativeTrustAnchor(const map<DNSName, std::string>& negAnchors,
      const DNSName& zone, std::string& reason)
  - BBCount: 25
    BranchProfiles: []
    Callsites:
    - Dst: VLOG
      Src: /src/pdns/pdns/recursordist/validate.cc:1206,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/validate.cc:1206,1
    - Dst: addS
      Src: /src/pdns/pdns/recursordist/validate.cc:1206,1
    - Dst: getByTag
      Src: /src/pdns/pdns/recursordist/validate.cc:1212,1
    - Dst: withName
      Src: /src/pdns/pdns/recursordist/validate.cc:1215,1
    - Dst: DSRecordContent::DSRecordContent
      Src: /src/pdns/pdns/recursordist/validate.cc:1219,1
    - Dst: VLOG
      Src: /src/pdns/pdns/recursordist/validate.cc:1222,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/validate.cc:1222,1
    - Dst: addS
      Src: /src/pdns/pdns/recursordist/validate.cc:1222,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/validate.cc:1222,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/validate.cc:1222,1
    - Dst: makeDSFromDNSKey
      Src: /src/pdns/pdns/recursordist/validate.cc:1232,1
    - Dst: dsrc
      Src: /src/pdns/pdns/recursordist/validate.cc:1234,1
    - Dst: VLOG
      Src: /src/pdns/pdns/recursordist/validate.cc:1237,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/validate.cc:1237,1
    - Dst: VLOG
      Src: /src/pdns/pdns/recursordist/validate.cc:1241,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/validate.cc:1241,1
    - Dst: insert
      Src: /src/pdns/pdns/recursordist/validate.cc:1243,1
    - Dst: VLOG
      Src: /src/pdns/pdns/recursordist/validate.cc:1247,1
    - Dst: getZoneRepresentation
      Src: /src/pdns/pdns/recursordist/validate.cc:1247,1
    - Dst: DSRecordContent::getZoneRepresentation
      Src: /src/pdns/pdns/recursordist/validate.cc:1247,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/validate.cc:1258,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/validate.cc:1258,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/validate.cc:1258,1
    - Dst: DNSCryptoKeyEngine::isAlgorithmSupported
      Src: /src/pdns/pdns/recursordist/validate.cc:1265,1
    - Dst: checkSignatureInceptionAndExpiry
      Src: /src/pdns/pdns/recursordist/validate.cc:1268,1
    - Dst: getByTag
      Src: /src/pdns/pdns/recursordist/validate.cc:1273,1
    - Dst: auto::empty
      Src: /src/pdns/pdns/recursordist/validate.cc:1275,1
    - Dst: VLOG
      Src: /src/pdns/pdns/recursordist/validate.cc:1280,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/validate.cc:1280,1
    - Dst: addS
      Src: /src/pdns/pdns/recursordist/validate.cc:1280,1
    - Dst: getMessageForRRSET
      Src: /src/pdns/pdns/recursordist/validate.cc:1286,1
    - Dst: VLOG
      Src: /src/pdns/pdns/recursordist/validate.cc:1290,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/validate.cc:1290,1
    - Dst: addS
      Src: /src/pdns/pdns/recursordist/validate.cc:1290,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/validate.cc:1290,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/validate.cc:1290,1
    - Dst: VLOG
      Src: /src/pdns/pdns/recursordist/validate.cc:1297,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/validate.cc:1297,1
    - Dst: addS
      Src: /src/pdns/pdns/recursordist/validate.cc:1297,1
    - Dst: checkSignatureWithKey
      Src: /src/pdns/pdns/recursordist/validate.cc:1303,1
    - Dst: VLOG
      Src: /src/pdns/pdns/recursordist/validate.cc:1308,1
    - Dst: VLOG
      Src: /src/pdns/pdns/recursordist/validate.cc:1312,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/validate.cc:1315,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/validate.cc:1315,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/validate.cc:1323,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/validate.cc:1323,1
    - Dst: DNSCryptoKeyEngine::isAlgorithmSupported
      Src: /src/pdns/pdns/recursordist/validate.cc:1329,1
    - Dst: DNSCryptoKeyEngine::isDigestSupported
      Src: /src/pdns/pdns/recursordist/validate.cc:1331,1
    - Dst: isAZoneKey
      Src: /src/pdns/pdns/recursordist/validate.cc:1349,1
    - Dst: isRevokedKey
      Src: /src/pdns/pdns/recursordist/validate.cc:1354,1
    CyclomaticComplexity: 46
    EdgeCount: 46
    ICount: 108
    argCount: 9
    argNames:
    - now
    - ' zone'
    - ' dsset'
    - ' tkeys'
    - ' toSign'
    - ' sigs'
    - ' validkeys'
    - ' log'
    - ' context'
    argTypes:
    - time_t
    - DNSName
    - dsset_t
    - skeyset_t
    - sortedRecords_t
    - vector<shared_ptr<const RRSIGRecordContent>>
    - skeyset_t
    - OptLog
    - pdns::validation::ValidationContext
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1379
      start: 1197
    functionDepth: 2
    functionLinenumber: 1197
    functionLinenumberEnd: 1379
    functionName: validateDNSKeysAgainstDS
    functionSourceFile: /src/pdns/pdns/recursordist/validate.cc
    functionUses: 1
    functionsReached:
    - getZoneRepresentation
    - addS
    - std::to_string
    - withName
    - DSRecordContent::DSRecordContent
    - insert
    - checkSignatureWithKey
    - DNSCryptoKeyEngine::isAlgorithmSupported
    - size
    - checkSignatureInceptionAndExpiry
    - empty
    - isRevokedKey
    - isAZoneKey
    - dsrc
    - DSRecordContent::getZoneRepresentation
    - makeDSFromDNSKey
    - getByTag
    - VLOG
    - getMessageForRRSET
    - what
    - DNSCryptoKeyEngine::isDigestSupported
    - auto::empty
    linkageType: ''
    returnType: vState
    signature: vState validateDNSKeysAgainstDS(time_t now, const DNSName& zone, const
      dsset_t& dsset, const skeyset_t& tkeys, const sortedRecords_t& toSign, const
      vector<shared_ptr<const RRSIGRecordContent>>& sigs, skeyset_t& validkeys, const
      OptLog& log, pdns::validation::ValidationContext& context)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: DNSCryptoKeyEngine::isAlgorithmSupported
      Src: /src/pdns/pdns/recursordist/validate.cc:1383,1
    - Dst: VLOG
      Src: /src/pdns/pdns/recursordist/validate.cc:1384,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/validate.cc:1384,1
    - Dst: DNSCryptoKeyEngine::isDigestSupported
      Src: /src/pdns/pdns/recursordist/validate.cc:1388,1
    - Dst: VLOG
      Src: /src/pdns/pdns/recursordist/validate.cc:1389,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/validate.cc:1389,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - ' dsrec'
    - ' log'
    argTypes:
    - DSRecordContent
    - OptLog
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1394
      start: 1381
    functionDepth: 0
    functionLinenumber: 1381
    functionLinenumberEnd: 1394
    functionName: isSupportedDS
    functionSourceFile: /src/pdns/pdns/recursordist/validate.cc
    functionUses: 2
    functionsReached:
    - DNSCryptoKeyEngine::isAlgorithmSupported
    - VLOG
    - std::to_string
    - DNSCryptoKeyEngine::isDigestSupported
    linkageType: ''
    returnType: bool
    signature: bool isSupportedDS(const DSRecordContent& dsrec, const OptLog& log)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - ' signatures'
    argTypes:
    - std::vector<std::shared_ptr<const RRSIGRecordContent>>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1405
      start: 1396
    functionDepth: 0
    functionLinenumber: 1396
    functionLinenumberEnd: 1405
    functionName: getSigner
    functionSourceFile: /src/pdns/pdns/recursordist/validate.cc
    functionUses: 12
    functionsReached: []
    linkageType: ''
    returnType: DNSName
    signature: DNSName getSigner(const std::vector<std::shared_ptr<const RRSIGRecordContent>>&
      signatures)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::vector::at
      Src: /src/pdns/pdns/recursordist/validate.cc:1410,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/recursordist/validate.cc:1410,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - state
    argTypes:
    - vState
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1411
      start: 1407
    functionDepth: 0
    functionLinenumber: 1407
    functionLinenumberEnd: 1411
    functionName: vStateToString
    functionSourceFile: /src/pdns/pdns/recursordist/validate.cc
    functionUses: 7
    functionsReached:
    - static_cast<size_t>
    - std::vector::at
    linkageType: ''
    returnType: std::string
    signature: std::string & vStateToString(vState state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vStateToString
      Src: /src/pdns/pdns/recursordist/validate.cc:1415,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ' ostr'
    - dstate
    argTypes:
    - std::ostream
    - vState
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1417
      start: 1413
    functionDepth: 0
    functionLinenumber: 1413
    functionLinenumberEnd: 1417
    functionName: '& operator<<(std::ostream& ostr, const vState dstate)'
    functionSourceFile: /src/pdns/pdns/recursordist/validate.cc
    functionUses: 0
    functionsReached:
    - vStateToString
    linkageType: ''
    returnType: std::ostream
    signature: std::ostream & operator<<(std::ostream& ostr, const vState dstate)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::vector::at
      Src: /src/pdns/pdns/recursordist/validate.cc:1422,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/recursordist/validate.cc:1422,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ' ostr'
    - dstate
    argTypes:
    - std::ostream
    - dState
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1424
      start: 1419
    functionDepth: 0
    functionLinenumber: 1419
    functionLinenumberEnd: 1424
    functionName: '& operator<<(std::ostream& ostr, const dState dstate)'
    functionSourceFile: /src/pdns/pdns/recursordist/validate.cc
    functionUses: 0
    functionsReached:
    - static_cast<size_t>
    - std::vector::at
    linkageType: ''
    returnType: std::ostream
    signature: std::ostream & operator<<(std::ostream& ostr, const dState dstate)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: vStateIsBogus
      Src: /src/pdns/pdns/recursordist/validate.cc:1434,1
    - Dst: vStateIsBogus
      Src: /src/pdns/pdns/recursordist/validate.cc:1438,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 2
    argNames:
    - ' state'
    - stateUpdate
    argTypes:
    - vState
    - vState
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1442
      start: 1426
    functionDepth: 0
    functionLinenumber: 1426
    functionLinenumberEnd: 1442
    functionName: updateDNSSECValidationState
    functionSourceFile: /src/pdns/pdns/recursordist/validate.cc
    functionUses: 2
    functionsReached:
    - vStateIsBogus
    linkageType: ''
    returnType: void
    signature: void updateDNSSECValidationState(vState& state, const vState stateUpdate)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/channel.cc:29,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 1
    argNames:
    - ' descriptor'
    argTypes:
    - FDWrapper
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 31
      start: 28
    functionDepth: 0
    functionLinenumber: 28
    functionLinenumberEnd: 31
    functionName: pdns::channel::Notifier::Notifier
    functionSourceFile: /src/pdns/pdns/recursordist/channel.cc
    functionUses: 4
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void Notifier::Notifier(FDWrapper&& descriptor)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: write
      Src: /src/pdns/pdns/recursordist/channel.cc:37,1
    - Dst: getHandle
      Src: /src/pdns/pdns/recursordist/channel.cc:37,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/channel.cc:39,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/channel.cc:48,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/channel.cc:48,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 33
    functionDepth: 0
    functionLinenumber: 33
    functionLinenumberEnd: 52
    functionName: pdns::channel::Notifier::notify
    functionSourceFile: /src/pdns/pdns/recursordist/channel.cc
    functionUses: 10
    functionsReached:
    - stringerror
    - write
    - getHandle
    - std::runtime_error
    linkageType: ''
    returnType: bool
    signature: bool Notifier::notify() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/channel.cc:55,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - ' descriptor'
    - throwOnEOF
    argTypes:
    - FDWrapper
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 54
    functionDepth: 0
    functionLinenumber: 54
    functionLinenumberEnd: 57
    functionName: pdns::channel::Waiter::Waiter
    functionSourceFile: /src/pdns/pdns/recursordist/channel.cc
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void Waiter::Waiter(FDWrapper&& descriptor, bool throwOnEOF)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: read
      Src: /src/pdns/pdns/recursordist/channel.cc:64,1
    - Dst: getHandle
      Src: /src/pdns/pdns/recursordist/channel.cc:64,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/channel.cc:70,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/channel.cc:79,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/channel.cc:79,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 20
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 59
    functionDepth: 0
    functionLinenumber: 59
    functionLinenumberEnd: 82
    functionName: pdns::channel::Waiter::clear
    functionSourceFile: /src/pdns/pdns/recursordist/channel.cc
    functionUses: 0
    functionsReached:
    - stringerror
    - getHandle
    - read
    - std::runtime_error
    linkageType: ''
    returnType: void
    signature: void Waiter::clear()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getHandle
      Src: /src/pdns/pdns/recursordist/channel.cc:86,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 84
    functionDepth: 0
    functionLinenumber: 84
    functionLinenumberEnd: 87
    functionName: pdns::channel::Waiter::getDescriptor
    functionSourceFile: /src/pdns/pdns/recursordist/channel.cc
    functionUses: 0
    functionsReached:
    - getHandle
    linkageType: ''
    returnType: int
    signature: int Waiter::getDescriptor() const
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pipe
      Src: /src/pdns/pdns/recursordist/channel.cc:92,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/recursordist/channel.cc:92,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/channel.cc:93,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/channel.cc:93,1
    - Dst: setNonBlocking
      Src: /src/pdns/pdns/recursordist/channel.cc:99,1
    - Dst: FDWrapper::getHandle
      Src: /src/pdns/pdns/recursordist/channel.cc:99,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/channel.cc:101,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/channel.cc:101,1
    - Dst: setNonBlocking
      Src: /src/pdns/pdns/recursordist/channel.cc:104,1
    - Dst: FDWrapper::getHandle
      Src: /src/pdns/pdns/recursordist/channel.cc:104,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/channel.cc:106,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/channel.cc:106,1
    - Dst: getPipeBufferSize
      Src: /src/pdns/pdns/recursordist/channel.cc:109,1
    - Dst: FDWrapper::getHandle
      Src: /src/pdns/pdns/recursordist/channel.cc:109,1
    - Dst: setPipeBufferSize
      Src: /src/pdns/pdns/recursordist/channel.cc:110,1
    - Dst: FDWrapper::getHandle
      Src: /src/pdns/pdns/recursordist/channel.cc:110,1
    - Dst: Notifier
      Src: /src/pdns/pdns/recursordist/channel.cc:113,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/channel.cc:113,1
    - Dst: Waiter
      Src: /src/pdns/pdns/recursordist/channel.cc:113,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/channel.cc:113,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 14
    argCount: 3
    argNames:
    - nonBlocking
    - pipeBufferSize
    - throwOnEOF
    argTypes:
    - bool
    - size_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 89
    functionDepth: 0
    functionLinenumber: 89
    functionLinenumberEnd: 114
    functionName: pdns::channel::createNotificationQueue
    functionSourceFile: /src/pdns/pdns/recursordist/channel.cc
    functionUses: 8
    functionsReached:
    - std::move
    - Notifier
    - FDWrapper::getHandle
    - std::runtime_error
    - setNonBlocking
    - stringerror
    - Waiter
    - pipe
    - setPipeBufferSize
    - getPipeBufferSize
    - std::array::data
    linkageType: ''
    returnType: std::pair<Notifier, Waiter>
    signature: std::pair<Notifier, Waiter> createNotificationQueue(bool nonBlocking,
      size_t pipeBufferSize, bool throwOnEOF)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/channel.cc:29,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 1
    argNames:
    - ' descriptor'
    argTypes:
    - FDWrapper
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 31
      start: 28
    functionDepth: 0
    functionLinenumber: 28
    functionLinenumberEnd: 31
    functionName: pdns::channel::Notifier::Notifier
    functionSourceFile: /src/pdns/pdns/recursordist/channel.cc
    functionUses: 4
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void Notifier::Notifier(FDWrapper&& descriptor)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: write
      Src: /src/pdns/pdns/recursordist/channel.cc:37,1
    - Dst: getHandle
      Src: /src/pdns/pdns/recursordist/channel.cc:37,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/channel.cc:39,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/channel.cc:48,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/channel.cc:48,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 33
    functionDepth: 0
    functionLinenumber: 33
    functionLinenumberEnd: 52
    functionName: pdns::channel::Notifier::notify
    functionSourceFile: /src/pdns/pdns/recursordist/channel.cc
    functionUses: 10
    functionsReached:
    - stringerror
    - write
    - getHandle
    - std::runtime_error
    linkageType: ''
    returnType: bool
    signature: bool Notifier::notify() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/channel.cc:55,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - ' descriptor'
    - throwOnEOF
    argTypes:
    - FDWrapper
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 54
    functionDepth: 0
    functionLinenumber: 54
    functionLinenumberEnd: 57
    functionName: pdns::channel::Waiter::Waiter
    functionSourceFile: /src/pdns/pdns/recursordist/channel.cc
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void Waiter::Waiter(FDWrapper&& descriptor, bool throwOnEOF)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: read
      Src: /src/pdns/pdns/recursordist/channel.cc:64,1
    - Dst: getHandle
      Src: /src/pdns/pdns/recursordist/channel.cc:64,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/channel.cc:70,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/channel.cc:79,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/channel.cc:79,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 20
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 59
    functionDepth: 0
    functionLinenumber: 59
    functionLinenumberEnd: 82
    functionName: pdns::channel::Waiter::clear
    functionSourceFile: /src/pdns/pdns/recursordist/channel.cc
    functionUses: 0
    functionsReached:
    - stringerror
    - getHandle
    - read
    - std::runtime_error
    linkageType: ''
    returnType: void
    signature: void Waiter::clear()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getHandle
      Src: /src/pdns/pdns/recursordist/channel.cc:86,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 84
    functionDepth: 0
    functionLinenumber: 84
    functionLinenumberEnd: 87
    functionName: pdns::channel::Waiter::getDescriptor
    functionSourceFile: /src/pdns/pdns/recursordist/channel.cc
    functionUses: 0
    functionsReached:
    - getHandle
    linkageType: ''
    returnType: int
    signature: int Waiter::getDescriptor() const
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pipe
      Src: /src/pdns/pdns/recursordist/channel.cc:92,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/recursordist/channel.cc:92,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/channel.cc:93,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/channel.cc:93,1
    - Dst: setNonBlocking
      Src: /src/pdns/pdns/recursordist/channel.cc:99,1
    - Dst: FDWrapper::getHandle
      Src: /src/pdns/pdns/recursordist/channel.cc:99,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/channel.cc:101,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/channel.cc:101,1
    - Dst: setNonBlocking
      Src: /src/pdns/pdns/recursordist/channel.cc:104,1
    - Dst: FDWrapper::getHandle
      Src: /src/pdns/pdns/recursordist/channel.cc:104,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/channel.cc:106,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/channel.cc:106,1
    - Dst: getPipeBufferSize
      Src: /src/pdns/pdns/recursordist/channel.cc:109,1
    - Dst: FDWrapper::getHandle
      Src: /src/pdns/pdns/recursordist/channel.cc:109,1
    - Dst: setPipeBufferSize
      Src: /src/pdns/pdns/recursordist/channel.cc:110,1
    - Dst: FDWrapper::getHandle
      Src: /src/pdns/pdns/recursordist/channel.cc:110,1
    - Dst: Notifier
      Src: /src/pdns/pdns/recursordist/channel.cc:113,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/channel.cc:113,1
    - Dst: Waiter
      Src: /src/pdns/pdns/recursordist/channel.cc:113,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/channel.cc:113,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 14
    argCount: 3
    argNames:
    - nonBlocking
    - pipeBufferSize
    - throwOnEOF
    argTypes:
    - bool
    - size_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 89
    functionDepth: 0
    functionLinenumber: 89
    functionLinenumberEnd: 114
    functionName: pdns::channel::createNotificationQueue
    functionSourceFile: /src/pdns/pdns/recursordist/channel.cc
    functionUses: 8
    functionsReached:
    - std::move
    - Notifier
    - FDWrapper::getHandle
    - std::runtime_error
    - setNonBlocking
    - stringerror
    - Waiter
    - pipe
    - setPipeBufferSize
    - getPipeBufferSize
    - std::array::data
    linkageType: ''
    returnType: std::pair<Notifier, Waiter>
    signature: std::pair<Notifier, Waiter> createNotificationQueue(bool nonBlocking,
      size_t pipeBufferSize, bool throwOnEOF)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: addRecordToList
      Src: /src/pdns/pdns/recursordist/test-shuffle_cc.cc:41,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-shuffle_cc.cc:41,1
    - Dst: addRecordToList
      Src: /src/pdns/pdns/recursordist/test-shuffle_cc.cc:42,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-shuffle_cc.cc:42,1
    - Dst: pdns::dedupRecords
      Src: /src/pdns/pdns/recursordist/test-shuffle_cc.cc:43,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-shuffle_cc.cc:44,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-shuffle_cc.cc:45,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/recursordist/test-shuffle_cc.cc:45,1
    - Dst: addRecordToList
      Src: /src/pdns/pdns/recursordist/test-shuffle_cc.cc:46,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-shuffle_cc.cc:46,1
    - Dst: pdns::dedupRecords
      Src: /src/pdns/pdns/recursordist/test-shuffle_cc.cc:47,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-shuffle_cc.cc:48,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-shuffle_cc.cc:49,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/recursordist/test-shuffle_cc.cc:49,1
    - Dst: addRecordToList
      Src: /src/pdns/pdns/recursordist/test-shuffle_cc.cc:50,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-shuffle_cc.cc:50,1
    - Dst: addRecordToList
      Src: /src/pdns/pdns/recursordist/test-shuffle_cc.cc:51,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-shuffle_cc.cc:51,1
    - Dst: pdns::dedupRecords
      Src: /src/pdns/pdns/recursordist/test-shuffle_cc.cc:52,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-shuffle_cc.cc:53,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-shuffle_cc.cc:54,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/recursordist/test-shuffle_cc.cc:54,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-shuffle_cc.cc:55,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 37
    functionDepth: 0
    functionLinenumber: 37
    functionLinenumberEnd: 56
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-shuffle_cc.cc
    functionUses: 0
    functionsReached:
    - addRecordToList
    - std::vector::size
    - pdns::dedupRecords
    - BOOST_CHECK_EQUAL
    - DNSName
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_simple)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - slog
    - algo
    argTypes:
    - Logr::log_t
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 18
      start: 16
    functionDepth: 0
    functionLinenumber: 16
    functionLinenumberEnd: 18
    functionName: SodiumED25519DNSCryptoKeyEngine::SodiumED25519DNSCryptoKeyEngine
    functionSourceFile: /src/pdns/pdns/recursordist/sodiumsigners.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void SodiumED25519DNSCryptoKeyEngine(Logr::log_t slog, unsigned int
      algo)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 19
      start: 19
    functionDepth: 0
    functionLinenumber: 19
    functionLinenumberEnd: 19
    functionName: SodiumED25519DNSCryptoKeyEngine::getName
    functionSourceFile: /src/pdns/pdns/recursordist/sodiumsigners.cc
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: string
    signature: string getName() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: make_unique<SodiumED25519DNSCryptoKeyEngine>
      Src: /src/pdns/pdns/recursordist/sodiumsigners.cc:61,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - slog
    - algorithm
    argTypes:
    - Logr::log_t
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 59
    functionDepth: 0
    functionLinenumber: 59
    functionLinenumberEnd: 62
    functionName: SodiumED25519DNSCryptoKeyEngine::maker
    functionSourceFile: /src/pdns/pdns/recursordist/sodiumsigners.cc
    functionUses: 0
    functionsReached:
    - make_unique<SodiumED25519DNSCryptoKeyEngine>
    linkageType: ''
    returnType: std::unique_ptr<DNSCryptoKeyEngine>
    signature: std::unique_ptr<DNSCryptoKeyEngine> maker(Logr::log_t slog, unsigned
      int algorithm)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: runtime_error
      Src: /src/pdns/pdns/recursordist/sodiumsigners.cc:72,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/sodiumsigners.cc:72,1
    - Dst: crypto_sign_ed25519_keypair
      Src: /src/pdns/pdns/recursordist/sodiumsigners.cc:74,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - bits
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 69
    functionDepth: 0
    functionLinenumber: 69
    functionLinenumberEnd: 75
    functionName: SodiumED25519DNSCryptoKeyEngine::create
    functionSourceFile: /src/pdns/pdns/recursordist/sodiumsigners.cc
    functionUses: 0
    functionsReached:
    - runtime_error
    - std::to_string
    - crypto_sign_ed25519_keypair
    linkageType: ''
    returnType: void
    signature: void SodiumED25519DNSCryptoKeyEngine::create(unsigned int bits)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: std::unique_ptr<EVP_PKEY, decltype(&EVP_PKEY_free)>
      Src: /src/pdns/pdns/recursordist/sodiumsigners.cc:81,1
    - Dst: PEM_read_PrivateKey
      Src: /src/pdns/pdns/recursordist/sodiumsigners.cc:81,1
    - Dst: std::optional<std::reference_wrapper<const std::string>>::has_value
      Src: /src/pdns/pdns/recursordist/sodiumsigners.cc:83,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/recursordist/sodiumsigners.cc:84,1
    - Dst: SodiumED25519DNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/sodiumsigners.cc:84,1
    - Dst: std::optional<std::reference_wrapper<const std::string>>::get
      Src: /src/pdns/pdns/recursordist/sodiumsigners.cc:84,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/recursordist/sodiumsigners.cc:87,1
    - Dst: SodiumED25519DNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/sodiumsigners.cc:87,1
    - Dst: EVP_PKEY_get_raw_private_key
      Src: /src/pdns/pdns/recursordist/sodiumsigners.cc:93,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/sodiumsigners.cc:93,1
    - Dst: std::optional<std::reference_wrapper<const std::string>>::has_value
      Src: /src/pdns/pdns/recursordist/sodiumsigners.cc:95,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/recursordist/sodiumsigners.cc:96,1
    - Dst: SodiumED25519DNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/sodiumsigners.cc:96,1
    - Dst: std::optional<std::reference_wrapper<const std::string>>::get
      Src: /src/pdns/pdns/recursordist/sodiumsigners.cc:96,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/recursordist/sodiumsigners.cc:99,1
    - Dst: SodiumED25519DNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/sodiumsigners.cc:99,1
    - Dst: EVP_PKEY_get_raw_public_key
      Src: /src/pdns/pdns/recursordist/sodiumsigners.cc:103,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/sodiumsigners.cc:103,1
    - Dst: std::optional<std::reference_wrapper<const std::string>>::has_value
      Src: /src/pdns/pdns/recursordist/sodiumsigners.cc:105,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/recursordist/sodiumsigners.cc:106,1
    - Dst: SodiumED25519DNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/sodiumsigners.cc:106,1
    - Dst: std::optional<std::reference_wrapper<const std::string>>::get
      Src: /src/pdns/pdns/recursordist/sodiumsigners.cc:106,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/recursordist/sodiumsigners.cc:109,1
    - Dst: SodiumED25519DNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/sodiumsigners.cc:109,1
    - Dst: memcpy
      Src: /src/pdns/pdns/recursordist/sodiumsigners.cc:114,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 22
    argCount: 3
    argNames:
    - ' drc'
    - ' inputFile'
    - filename
    argTypes:
    - DNSKEYRecordContent
    - std::FILE
    - std::optional<std::reference_wrapper<const std::string>>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 115
      start: 78
    functionDepth: 0
    functionLinenumber: 78
    functionLinenumberEnd: 115
    functionName: SodiumED25519DNSCryptoKeyEngine::createFromPEMFile
    functionSourceFile: /src/pdns/pdns/recursordist/sodiumsigners.cc
    functionUses: 0
    functionsReached:
    - std::unique_ptr<EVP_PKEY, decltype(&EVP_PKEY_free)>
    - EVP_PKEY_get_raw_private_key
    - memcpy
    - auto::get
    - runtime_error
    - PEM_read_PrivateKey
    - EVP_PKEY_get_raw_public_key
    - std::optional<std::reference_wrapper<const std::string>>::has_value
    - std::optional<std::reference_wrapper<const std::string>>::get
    - SodiumED25519DNSCryptoKeyEngine::getName
    linkageType: ''
    returnType: void
    signature: void SodiumED25519DNSCryptoKeyEngine::createFromPEMFile(DNSKEYRecordContent&
      drc, std::FILE& inputFile, std::optional<std::reference_wrapper<const std::string>>
      filename)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: std::unique_ptr<EVP_PKEY, void (*)(EVP_PKEY*)>
      Src: /src/pdns/pdns/recursordist/sodiumsigners.cc:119,1
    - Dst: EVP_PKEY_new_raw_private_key
      Src: /src/pdns/pdns/recursordist/sodiumsigners.cc:119,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/recursordist/sodiumsigners.cc:121,1
    - Dst: SodiumED25519DNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/sodiumsigners.cc:121,1
    - Dst: PEM_write_PrivateKey
      Src: /src/pdns/pdns/recursordist/sodiumsigners.cc:124,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/sodiumsigners.cc:124,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/recursordist/sodiumsigners.cc:126,1
    - Dst: SodiumED25519DNSCryptoKeyEngine::getName
      Src: /src/pdns/pdns/recursordist/sodiumsigners.cc:126,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 7
    argCount: 1
    argNames:
    - ' outputFile'
    argTypes:
    - std::FILE
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 117
    functionDepth: 0
    functionLinenumber: 117
    functionLinenumberEnd: 128
    functionName: SodiumED25519DNSCryptoKeyEngine::convertToPEMFile
    functionSourceFile: /src/pdns/pdns/recursordist/sodiumsigners.cc
    functionUses: 0
    functionsReached:
    - auto::get
    - EVP_PKEY_new_raw_private_key
    - std::unique_ptr<EVP_PKEY, void (*)(EVP_PKEY*)>
    - runtime_error
    - SodiumED25519DNSCryptoKeyEngine::getName
    - PEM_write_PrivateKey
    linkageType: ''
    returnType: void
    signature: void SodiumED25519DNSCryptoKeyEngine::convertToPEMFile(std::FILE& outputFile)
      const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 134
      start: 131
    functionDepth: 0
    functionLinenumber: 131
    functionLinenumberEnd: 134
    functionName: SodiumED25519DNSCryptoKeyEngine::getBits
    functionSourceFile: /src/pdns/pdns/recursordist/sodiumsigners.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int SodiumED25519DNSCryptoKeyEngine::getBits() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: storvector_t::emplace_back
      Src: /src/pdns/pdns/recursordist/sodiumsigners.cc:147,1
    - Dst: storvector_t::emplace_back
      Src: /src/pdns/pdns/recursordist/sodiumsigners.cc:149,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/sodiumsigners.cc:149,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 151
      start: 136
    functionDepth: 0
    functionLinenumber: 136
    functionLinenumberEnd: 151
    functionName: SodiumED25519DNSCryptoKeyEngine::convertToISCVector
    functionSourceFile: /src/pdns/pdns/recursordist/sodiumsigners.cc
    functionUses: 0
    functionsReached:
    - string
    - storvector_t::emplace_back
    linkageType: ''
    returnType: DNSCryptoKeyEngine::storvector_t
    signature: DNSCryptoKeyEngine::storvector_t SodiumED25519DNSCryptoKeyEngine::convertToISCVector()
      const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pdns::checked_stoi_into
      Src: /src/pdns/pdns/recursordist/sodiumsigners.cc:161,1
    - Dst: string::length
      Src: /src/pdns/pdns/recursordist/sodiumsigners.cc:164,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/recursordist/sodiumsigners.cc:165,1
    - Dst: std::make_unique<unsigned char[]>
      Src: /src/pdns/pdns/recursordist/sodiumsigners.cc:167,1
    - Dst: memcpy
      Src: /src/pdns/pdns/recursordist/sodiumsigners.cc:169,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/sodiumsigners.cc:169,1
    - Dst: string::c_str
      Src: /src/pdns/pdns/recursordist/sodiumsigners.cc:169,1
    - Dst: crypto_sign_ed25519_seed_keypair
      Src: /src/pdns/pdns/recursordist/sodiumsigners.cc:170,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/sodiumsigners.cc:170,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - ' drc'
    - ' stormap'
    argTypes:
    - DNSKEYRecordContent
    - std::map<std::string, std::string>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 171
      start: 153
    functionDepth: 0
    functionLinenumber: 153
    functionLinenumberEnd: 171
    functionName: SodiumED25519DNSCryptoKeyEngine::fromISCMap
    functionSourceFile: /src/pdns/pdns/recursordist/sodiumsigners.cc
    functionUses: 0
    functionsReached:
    - std::make_unique<unsigned char[]>
    - memcpy
    - string::c_str
    - auto::get
    - runtime_error
    - pdns::checked_stoi_into
    - string::length
    - crypto_sign_ed25519_seed_keypair
    linkageType: ''
    returnType: void
    signature: void SodiumED25519DNSCryptoKeyEngine::fromISCMap(DNSKEYRecordContent&
      drc, std::map<std::string, std::string>& stormap)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: string
      Src: /src/pdns/pdns/recursordist/sodiumsigners.cc:175,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 176
      start: 173
    functionDepth: 0
    functionLinenumber: 173
    functionLinenumberEnd: 176
    functionName: SodiumED25519DNSCryptoKeyEngine::getPublicKeyString
    functionSourceFile: /src/pdns/pdns/recursordist/sodiumsigners.cc
    functionUses: 0
    functionsReached:
    - string
    linkageType: ''
    returnType: std::string
    signature: std::string SodiumED25519DNSCryptoKeyEngine::getPublicKeyString() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: length
      Src: /src/pdns/pdns/recursordist/sodiumsigners.cc:180,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/recursordist/sodiumsigners.cc:181,1
    - Dst: memcpy
      Src: /src/pdns/pdns/recursordist/sodiumsigners.cc:183,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/sodiumsigners.cc:183,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - ' input'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 184
      start: 178
    functionDepth: 0
    functionLinenumber: 178
    functionLinenumberEnd: 184
    functionName: SodiumED25519DNSCryptoKeyEngine::fromPublicKeyString
    functionSourceFile: /src/pdns/pdns/recursordist/sodiumsigners.cc
    functionUses: 0
    functionsReached:
    - c_str
    - length
    - runtime_error
    - memcpy
    linkageType: ''
    returnType: void
    signature: void SodiumED25519DNSCryptoKeyEngine::fromPublicKeyString(const std::string&
      input)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: crypto_sign_ed25519_detached
      Src: /src/pdns/pdns/recursordist/sodiumsigners.cc:193,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/sodiumsigners.cc:193,1
    - Dst: length
      Src: /src/pdns/pdns/recursordist/sodiumsigners.cc:193,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ' msg'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 196
      start: 186
    functionDepth: 0
    functionLinenumber: 186
    functionLinenumberEnd: 196
    functionName: SodiumED25519DNSCryptoKeyEngine::sign
    functionSourceFile: /src/pdns/pdns/recursordist/sodiumsigners.cc
    functionUses: 0
    functionsReached:
    - c_str
    - length
    - crypto_sign_ed25519_detached
    linkageType: ''
    returnType: std::string
    signature: std::string SodiumED25519DNSCryptoKeyEngine::sign(const std::string&
      msg) const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: length
      Src: /src/pdns/pdns/recursordist/sodiumsigners.cc:200,1
    - Dst: crypto_sign_ed25519_verify_detached
      Src: /src/pdns/pdns/recursordist/sodiumsigners.cc:204,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/sodiumsigners.cc:204,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/sodiumsigners.cc:204,1
    - Dst: length
      Src: /src/pdns/pdns/recursordist/sodiumsigners.cc:204,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - ' msg'
    - ' signature'
    argTypes:
    - std::string
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 205
      start: 198
    functionDepth: 0
    functionLinenumber: 198
    functionLinenumberEnd: 205
    functionName: SodiumED25519DNSCryptoKeyEngine::verify
    functionSourceFile: /src/pdns/pdns/recursordist/sodiumsigners.cc
    functionUses: 0
    functionsReached:
    - c_str
    - length
    - crypto_sign_ed25519_verify_detached
    linkageType: ''
    returnType: bool
    signature: bool SodiumED25519DNSCryptoKeyEngine::verify(const std::string& msg,
      const std::string& signature) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSCryptoKeyEngine::report
      Src: /src/pdns/pdns/recursordist/sodiumsigners.cc:213,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 214
      start: 211
    functionDepth: 0
    functionLinenumber: 211
    functionLinenumberEnd: 214
    functionName: LoaderSodiumStruct
    functionSourceFile: /src/pdns/pdns/recursordist/sodiumsigners.cc
    functionUses: 0
    functionsReached:
    - DNSCryptoKeyEngine::report
    linkageType: ''
    returnType: void
    signature: void LoaderSodiumStruct()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSCryptoKeyEngine::report
      Src: /src/pdns/pdns/recursordist/sodiumsigners.cc:213,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 214
      start: 211
    functionDepth: 0
    functionLinenumber: 211
    functionLinenumberEnd: 214
    functionName: LoaderSodiumStruct
    functionSourceFile: /src/pdns/pdns/recursordist/sodiumsigners.cc
    functionUses: 0
    functionsReached:
    - DNSCryptoKeyEngine::report
    linkageType: ''
    returnType: void
    signature: void LoaderSodiumStruct()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Base64Encode
      Src: /src/pdns/pdns/recursordist/test-base64_cc.cc:19,1
    - Dst: B64Decode
      Src: /src/pdns/pdns/recursordist/test-base64_cc.cc:22,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-base64_cc.cc:23,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 24
      start: 17
    functionDepth: 0
    functionLinenumber: 17
    functionLinenumberEnd: 24
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-base64_cc.cc
    functionUses: 0
    functionsReached:
    - B64Decode
    - BOOST_CHECK_EQUAL
    - Base64Encode
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_Base64_Roundtrip)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: AuthPacketCache::insert
      Src: /src/pdns/pdns/recursordist/test-base64_cc.cc:36,1
    - Dst: Base64Encode
      Src: /src/pdns/pdns/recursordist/test-base64_cc.cc:72,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-base64_cc.cc:73,1
    - Dst: B64Decode
      Src: /src/pdns/pdns/recursordist/test-base64_cc.cc:75,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-base64_cc.cc:76,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 33
    functionDepth: 0
    functionLinenumber: 33
    functionLinenumberEnd: 78
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-base64_cc.cc
    functionUses: 0
    functionsReached:
    - B64Decode
    - AuthPacketCache::insert
    - BOOST_CHECK_EQUAL
    - Base64Encode
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_Base64_Encode)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: B64Decode
      Src: /src/pdns/pdns/recursordist/test-base64_cc.cc:84,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-base64_cc.cc:88,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-base64_cc.cc:91,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 80
    functionDepth: 0
    functionLinenumber: 80
    functionLinenumberEnd: 93
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-base64_cc.cc
    functionUses: 0
    functionsReached:
    - BOOST_CHECK
    - B64Decode
    - BOOST_CHECK_EQUAL
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_Base64_Decode_Garbage)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' str'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 61
    functionDepth: 0
    functionLinenumber: 61
    functionLinenumberEnd: 62
    functionName: MOADNSException::MOADNSException
    functionSourceFile: /src/pdns/pdns/recursordist/dnsparser.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void MOADNSException(const string& str)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/recursordist/dnsparser.hh:74,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/recursordist/dnsparser.hh:74,1
    - Dst: std::out_of_range
      Src: /src/pdns/pdns/recursordist/dnsparser.hh:75,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/dnsparser.hh:77,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - ' content'
    argTypes:
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 71
    functionDepth: 0
    functionLinenumber: 71
    functionLinenumberEnd: 79
    functionName: PacketReader::PacketReader
    functionSourceFile: /src/pdns/pdns/recursordist/dnsparser.hh
    functionUses: 0
    functionsReached:
    - pdns::max
    - std::out_of_range
    - size
    linkageType: ''
    returnType: void
    signature: void PacketReader(const std::string_view& content, uint16_t initialPos=sizeof(dnsheader),
      bool internalRepresentation = false)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PacketReader::get32BitInt
      Src: /src/pdns/pdns/recursordist/dnsparser.hh:90,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' val'
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 88
    functionDepth: 0
    functionLinenumber: 88
    functionLinenumberEnd: 91
    functionName: PacketReader::xfr32BitInt
    functionSourceFile: /src/pdns/pdns/recursordist/dnsparser.hh
    functionUses: 6
    functionsReached:
    - PacketReader::get32BitInt
    linkageType: ''
    returnType: void
    signature: void xfr32BitInt(uint32_t& val)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PacketReader::xfr32BitInt
      Src: /src/pdns/pdns/recursordist/dnsparser.hh:95,1
    - Dst: htonl
      Src: /src/pdns/pdns/recursordist/dnsparser.hh:96,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ' val'
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 93
    functionDepth: 0
    functionLinenumber: 93
    functionLinenumberEnd: 97
    functionName: PacketReader::xfrIP
    functionSourceFile: /src/pdns/pdns/recursordist/dnsparser.hh
    functionUses: 0
    functionsReached:
    - PacketReader::xfr32BitInt
    - htonl
    linkageType: ''
    returnType: void
    signature: void xfrIP(uint32_t& val)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PacketReader::xfrBlob
      Src: /src/pdns/pdns/recursordist/dnsparser.hh:100,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - val
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 99
    functionDepth: 0
    functionLinenumber: 99
    functionLinenumberEnd: 101
    functionName: PacketReader::xfrIP6
    functionSourceFile: /src/pdns/pdns/recursordist/dnsparser.hh
    functionUses: 0
    functionsReached:
    - PacketReader::xfrBlob
    linkageType: ''
    returnType: void
    signature: void xfrIP6(std::string &val)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PacketReader::xfrBlob
      Src: /src/pdns/pdns/recursordist/dnsparser.hh:105,1
    - Dst: PacketReader::xfrBlob
      Src: /src/pdns/pdns/recursordist/dnsparser.hh:106,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/recursordist/dnsparser.hh:107,1
    - Dst: makeComboAddressFromRaw
      Src: /src/pdns/pdns/recursordist/dnsparser.hh:108,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 2
    argNames:
    - version
    - val
    argTypes:
    - uint8_t
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 103
    functionDepth: 0
    functionLinenumber: 103
    functionLinenumberEnd: 109
    functionName: PacketReader::xfrCAWithoutPort
    functionSourceFile: /src/pdns/pdns/recursordist/dnsparser.hh
    functionUses: 5
    functionsReached:
    - PacketReader::xfrBlob
    - runtime_error
    - makeComboAddressFromRaw
    linkageType: ''
    returnType: void
    signature: void xfrCAWithoutPort(uint8_t version, ComboAddress &val)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PacketReader::xfr16BitInt
      Src: /src/pdns/pdns/recursordist/dnsparser.hh:113,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - val
    argTypes:
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 115
      start: 111
    functionDepth: 0
    functionLinenumber: 111
    functionLinenumberEnd: 115
    functionName: PacketReader::xfrCAPort
    functionSourceFile: /src/pdns/pdns/recursordist/dnsparser.hh
    functionUses: 0
    functionsReached:
    - PacketReader::xfr16BitInt
    linkageType: ''
    returnType: void
    signature: void xfrCAPort(ComboAddress &val)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PacketReader::xfr32BitInt
      Src: /src/pdns/pdns/recursordist/dnsparser.hh:119,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' val'
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 117
    functionDepth: 0
    functionLinenumber: 117
    functionLinenumberEnd: 120
    functionName: PacketReader::xfrTime
    functionSourceFile: /src/pdns/pdns/recursordist/dnsparser.hh
    functionUses: 0
    functionsReached:
    - PacketReader::xfr32BitInt
    linkageType: ''
    returnType: void
    signature: void xfrTime(uint32_t& val)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PacketReader::get16BitInt
      Src: /src/pdns/pdns/recursordist/dnsparser.hh:125,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' val'
    argTypes:
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 123
    functionDepth: 0
    functionLinenumber: 123
    functionLinenumberEnd: 126
    functionName: PacketReader::xfr16BitInt
    functionSourceFile: /src/pdns/pdns/recursordist/dnsparser.hh
    functionUses: 10
    functionsReached:
    - PacketReader::get16BitInt
    linkageType: ''
    returnType: void
    signature: void xfr16BitInt(uint16_t& val)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PacketReader::xfr16BitInt
      Src: /src/pdns/pdns/recursordist/dnsparser.hh:130,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' val'
    argTypes:
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 131
      start: 128
    functionDepth: 0
    functionLinenumber: 128
    functionLinenumberEnd: 131
    functionName: PacketReader::xfrType
    functionSourceFile: /src/pdns/pdns/recursordist/dnsparser.hh
    functionUses: 2
    functionsReached:
    - PacketReader::xfr16BitInt
    linkageType: ''
    returnType: void
    signature: void xfrType(uint16_t& val)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PacketReader::get8BitInt
      Src: /src/pdns/pdns/recursordist/dnsparser.hh:136,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' val'
    argTypes:
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 137
      start: 134
    functionDepth: 0
    functionLinenumber: 134
    functionLinenumberEnd: 137
    functionName: PacketReader::xfr8BitInt
    functionSourceFile: /src/pdns/pdns/recursordist/dnsparser.hh
    functionUses: 3
    functionsReached:
    - PacketReader::get8BitInt
    linkageType: ''
    returnType: void
    signature: void xfr8BitInt(uint8_t& val)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PacketReader::getName
      Src: /src/pdns/pdns/recursordist/dnsparser.hh:141,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' name'
    argTypes:
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 142
      start: 139
    functionDepth: 0
    functionLinenumber: 139
    functionLinenumberEnd: 142
    functionName: PacketReader::xfrName
    functionSourceFile: /src/pdns/pdns/recursordist/dnsparser.hh
    functionUses: 5
    functionsReached:
    - PacketReader::getName
    linkageType: ''
    returnType: void
    signature: void xfrName(DNSName& name, bool /* compress */ = false)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PacketReader::getText
      Src: /src/pdns/pdns/recursordist/dnsparser.hh:146,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - text
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 144
    functionDepth: 0
    functionLinenumber: 144
    functionLinenumberEnd: 147
    functionName: PacketReader::xfrText
    functionSourceFile: /src/pdns/pdns/recursordist/dnsparser.hh
    functionUses: 1
    functionsReached:
    - PacketReader::getText
    linkageType: ''
    returnType: void
    signature: void xfrText(string &text, bool multi=false, bool lenField=true)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PacketReader::getUnquotedText
      Src: /src/pdns/pdns/recursordist/dnsparser.hh:150,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - text
    - lenField
    argTypes:
    - string
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 151
      start: 149
    functionDepth: 0
    functionLinenumber: 149
    functionLinenumberEnd: 151
    functionName: PacketReader::xfrUnquotedText
    functionSourceFile: /src/pdns/pdns/recursordist/dnsparser.hh
    functionUses: 0
    functionsReached:
    - PacketReader::getUnquotedText
    linkageType: ''
    returnType: void
    signature: void xfrUnquotedText(string &text, bool lenField)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 173
      start: 170
    functionDepth: 0
    functionLinenumber: 170
    functionLinenumberEnd: 173
    functionName: PacketReader::eof
    functionSourceFile: /src/pdns/pdns/recursordist/dnsparser.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool eof() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/dnsparser.hh:178,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/dnsparser.hh:178,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/dnsparser.hh:178,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/dnsparser.hh:178,1
    - Dst: makeHexDump
      Src: /src/pdns/pdns/recursordist/dnsparser.hh:178,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/dnsparser.hh:178,1
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/dnsparser.hh:178,1
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/dnsparser.hh:178,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 179
      start: 177
    functionDepth: 0
    functionLinenumber: 177
    functionLinenumberEnd: 179
    functionName: PacketReader::getRemaining
    functionSourceFile: /src/pdns/pdns/recursordist/dnsparser.hh
    functionUses: 0
    functionsReached:
    - std::to_string
    - size
    - begin
    - std::string
    - makeHexDump
    linkageType: ''
    returnType: std::string
    signature: std::string getRemaining() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 190
      start: 187
    functionDepth: 0
    functionLinenumber: 187
    functionLinenumberEnd: 190
    functionName: PacketReader::consumeRemaining
    functionSourceFile: /src/pdns/pdns/recursordist/dnsparser.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void consumeRemaining()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 196
      start: 193
    functionDepth: 0
    functionLinenumber: 193
    functionLinenumberEnd: 196
    functionName: PacketReader::getPosition
    functionSourceFile: /src/pdns/pdns/recursordist/dnsparser.hh
    functionUses: 10
    functionsReached: []
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t getPosition() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/recursordist/dnsparser.hh:202,1
    - Dst: std::out_of_range
      Src: /src/pdns/pdns/recursordist/dnsparser.hh:203,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/dnsparser.hh:203,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/dnsparser.hh:203,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/dnsparser.hh:203,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/dnsparser.hh:203,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - n
    argTypes:
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 206
      start: 198
    functionDepth: 0
    functionLinenumber: 198
    functionLinenumberEnd: 206
    functionName: PacketReader::skip
    functionSourceFile: /src/pdns/pdns/recursordist/dnsparser.hh
    functionUses: 8
    functionsReached:
    - std::out_of_range
    - std::to_string
    - size
    linkageType: ''
    returnType: void
    signature: void skip(uint16_t n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 228
      start: 228
    functionDepth: 0
    functionLinenumber: 228
    functionLinenumberEnd: 228
    functionName: ~DNSRecordContent()
    functionSourceFile: /src/pdns/pdns/recursordist/dnsparser.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~DNSRecordContent()
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: DNSPacketWriter::setCanonic
      Src: /src/pdns/pdns/recursordist/dnsparser.hh:237,1
    - Dst: DNSPacketWriter::setLowercase
      Src: /src/pdns/pdns/recursordist/dnsparser.hh:240,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/recursordist/dnsparser.hh:243,1
    - Dst: getType
      Src: /src/pdns/pdns/recursordist/dnsparser.hh:243,1
    - Dst: toPacket
      Src: /src/pdns/pdns/recursordist/dnsparser.hh:244,1
    - Dst: DNSPacketWriter::getWireFormatContent
      Src: /src/pdns/pdns/recursordist/dnsparser.hh:248,1
    - Dst: DNSPacketWriter::getRecordPayload
      Src: /src/pdns/pdns/recursordist/dnsparser.hh:250,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 1
    argNames:
    - ' qname'
    argTypes:
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 253
      start: 231
    functionDepth: 2
    functionLinenumber: 231
    functionLinenumberEnd: 253
    functionName: DNSRecordContent::serialize
    functionSourceFile: /src/pdns/pdns/recursordist/dnsparser.hh
    functionUses: 0
    functionsReached:
    - toPacket
    - DNSPacketWriter::getRecordPayload
    - DNSPacketWriter::getWireFormatContent
    - DNSPacketWriter::setCanonic
    - DNSPacketWriter::setLowercase
    - getType
    - DNSPacketWriter::startRecord
    linkageType: ''
    returnType: string
    signature: string serialize(const DNSName& qname, bool canonic = false, bool lowerCase
      = false, bool full = false) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: typeid
      Src: /src/pdns/pdns/recursordist/dnsparser.hh:257,1
    - Dst: typeid
      Src: /src/pdns/pdns/recursordist/dnsparser.hh:257,1
    - Dst: getZoneRepresentation
      Src: /src/pdns/pdns/recursordist/dnsparser.hh:257,1
    - Dst: getZoneRepresentation
      Src: /src/pdns/pdns/recursordist/dnsparser.hh:257,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - DNSRecordContent
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 258
      start: 255
    functionDepth: 0
    functionLinenumber: 255
    functionLinenumberEnd: 258
    functionName: operator==(const DNSRecordContent& rhs) const
    functionSourceFile: /src/pdns/pdns/recursordist/dnsparser.hh
    functionUses: 0
    functionsReached:
    - getZoneRepresentation
    - typeid
    linkageType: ''
    returnType: bool
    signature: bool operator==(const DNSRecordContent& rhs) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 265
      start: 265
    functionDepth: 0
    functionLinenumber: 265
    functionLinenumberEnd: 265
    functionName: DNSRecordContent::doRecordCheck
    functionSourceFile: /src/pdns/pdns/recursordist/dnsparser.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void doRecordCheck(const struct DNSRecord&)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/pdns/pdns/recursordist/dnsparser.hh:272,1
    - Dst: load
      Src: /src/pdns/pdns/recursordist/dnsparser.hh:272,1
    - Dst: getTypemap
      Src: /src/pdns/pdns/recursordist/dnsparser.hh:274,1
    - Dst: pair
      Src: /src/pdns/pdns/recursordist/dnsparser.hh:274,1
    - Dst: getZmakermap
      Src: /src/pdns/pdns/recursordist/dnsparser.hh:276,1
    - Dst: pair
      Src: /src/pdns/pdns/recursordist/dnsparser.hh:276,1
    - Dst: getT2Namemap
      Src: /src/pdns/pdns/recursordist/dnsparser.hh:278,1
    - Dst: pair
      Src: /src/pdns/pdns/recursordist/dnsparser.hh:278,1
    - Dst: getN2Typemap
      Src: /src/pdns/pdns/recursordist/dnsparser.hh:279,1
    - Dst: pair
      Src: /src/pdns/pdns/recursordist/dnsparser.hh:279,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 5
    argNames:
    - cl
    - ty
    - f
    - z
    - name
    argTypes:
    - uint16_t
    - uint16_t
    - makerfunc_t*
    - zmakerfunc_t*
    - char*
    assertStmts:
    - condition: (!d_locked.load())
      pos:
        line_end: 271
        line_start: 271
        source_file: /src/pdns/pdns/recursordist/dnsparser.hh
    constantsTouched: []
    func_position:
      end: 280
      start: 270
    functionDepth: 0
    functionLinenumber: 270
    functionLinenumberEnd: 280
    functionName: DNSRecordContent::regist
    functionSourceFile: /src/pdns/pdns/recursordist/dnsparser.hh
    functionUses: 4
    functionsReached:
    - load
    - getN2Typemap
    - assert
    - getTypemap
    - getT2Namemap
    - getZmakermap
    - pair
    linkageType: ''
    returnType: void
    signature: void regist(uint16_t cl, uint16_t ty, makerfunc_t* f, zmakerfunc_t*
      z, const char* name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: boost::starts_with
      Src: /src/pdns/pdns/recursordist/dnsparser.hh:284,1
    - Dst: boost::starts_with
      Src: /src/pdns/pdns/recursordist/dnsparser.hh:284,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - ' name'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 285
      start: 282
    functionDepth: 0
    functionLinenumber: 282
    functionLinenumberEnd: 285
    functionName: DNSRecordContent::isUnknownType
    functionSourceFile: /src/pdns/pdns/recursordist/dnsparser.hh
    functionUses: 4
    functionsReached:
    - boost::starts_with
    linkageType: ''
    returnType: bool
    signature: bool isUnknownType(const string& name)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: getN2Typemap
      Src: /src/pdns/pdns/recursordist/dnsparser.hh:289,1
    - Dst: toUpper
      Src: /src/pdns/pdns/recursordist/dnsparser.hh:289,1
    - Dst: getN2Typemap
      Src: /src/pdns/pdns/recursordist/dnsparser.hh:290,1
    - Dst: DNSRecordContent::isUnknownType
      Src: /src/pdns/pdns/recursordist/dnsparser.hh:293,1
    - Dst: pdns::checked_stoi<uint16_t>
      Src: /src/pdns/pdns/recursordist/dnsparser.hh:294,1
    - Dst: substr
      Src: /src/pdns/pdns/recursordist/dnsparser.hh:294,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/recursordist/dnsparser.hh:297,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 1
    argNames:
    - ' name'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 298
      start: 287
    functionDepth: 0
    functionLinenumber: 287
    functionLinenumberEnd: 298
    functionName: DNSRecordContent::TypeToNumber
    functionSourceFile: /src/pdns/pdns/recursordist/dnsparser.hh
    functionUses: 13
    functionsReached:
    - getN2Typemap
    - toUpper
    - runtime_error
    - pdns::checked_stoi<uint16_t>
    - substr
    - DNSRecordContent::isUnknownType
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t TypeToNumber(const string& name)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: getT2Namemap
      Src: /src/pdns/pdns/recursordist/dnsparser.hh:302,1
    - Dst: pair
      Src: /src/pdns/pdns/recursordist/dnsparser.hh:302,1
    - Dst: getT2Namemap
      Src: /src/pdns/pdns/recursordist/dnsparser.hh:303,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/dnsparser.hh:304,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - num
    argTypes:
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 307
      start: 300
    functionDepth: 0
    functionLinenumber: 300
    functionLinenumberEnd: 307
    functionName: DNSRecordContent::NumberToType
    functionSourceFile: /src/pdns/pdns/recursordist/dnsparser.hh
    functionUses: 43
    functionsReached:
    - getT2Namemap
    - std::to_string
    - pair
    linkageType: ''
    returnType: string
    signature: string NumberToType(uint16_t num, uint16_t classnum = QClass::IN)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: store
      Src: /src/pdns/pdns/recursordist/dnsparser.hh:318,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 319
      start: 316
    functionDepth: 0
    functionLinenumber: 316
    functionLinenumberEnd: 319
    functionName: DNSRecordContent::lock
    functionSourceFile: /src/pdns/pdns/recursordist/dnsparser.hh
    functionUses: 2
    functionsReached:
    - store
    linkageType: ''
    returnType: void
    signature: void lock()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 339
      start: 337
    functionDepth: 0
    functionLinenumber: 337
    functionLinenumberEnd: 339
    functionName: DNSRecord
    functionSourceFile: /src/pdns/pdns/recursordist/dnsparser.hh
    functionUses: 94
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void DNSRecord()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/dnsparser.hh:348,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/dnsparser.hh:349,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 3
    argNames:
    - ' name'
    - content
    - type
    argTypes:
    - std::string
    - std::shared_ptr<DNSRecordContent>
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 354
      start: 341
    functionDepth: 0
    functionLinenumber: 341
    functionLinenumberEnd: 354
    functionName: DNSRecord
    functionSourceFile: /src/pdns/pdns/recursordist/dnsparser.hh
    functionUses: 94
    functionsReached:
    - std::move
    - DNSName
    linkageType: ''
    returnType: void
    signature: "void DNSRecord(const std::string& name,\n            std::shared_ptr<DNSRecordContent>
      content,\n            const uint16_t type,\n            const uint16_t qclass
      = QClass::IN,\n            const uint32_t ttl = 86400,\n            const uint16_t
      clen = 0,\n            const DNSResourceRecord::Place place = DNSResourceRecord::ANSWER)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getZoneRepresentation
      Src: /src/pdns/pdns/recursordist/dnsparser.hh:369,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/dnsparser.hh:374,1
    - Dst: std::stringstream::str
      Src: /src/pdns/pdns/recursordist/dnsparser.hh:375,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 376
      start: 366
    functionDepth: 0
    functionLinenumber: 366
    functionLinenumberEnd: 376
    functionName: print
    functionSourceFile: /src/pdns/pdns/recursordist/dnsparser.hh
    functionUses: 12
    functionsReached:
    - getZoneRepresentation
    - std::stringstream::str
    - std::to_string
    linkageType: ''
    returnType: std::string
    signature: std::string print(const std::string& indent = "") const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: toLogString
      Src: /src/pdns/pdns/recursordist/dnsparser.hh:380,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/dnsparser.hh:382,1
    - Dst: getContent
      Src: /src/pdns/pdns/recursordist/dnsparser.hh:384,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 386
      start: 378
    functionDepth: 0
    functionLinenumber: 378
    functionLinenumberEnd: 386
    functionName: toString
    functionSourceFile: /src/pdns/pdns/recursordist/dnsparser.hh
    functionUses: 529
    functionsReached:
    - toLogString
    - QType
    - getContent
    linkageType: ''
    returnType: std::string
    signature: std::string toString() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' content'
    argTypes:
    - std::shared_ptr<const DNSRecordContent>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 391
      start: 388
    functionDepth: 0
    functionLinenumber: 388
    functionLinenumberEnd: 391
    functionName: setContent
    functionSourceFile: /src/pdns/pdns/recursordist/dnsparser.hh
    functionUses: 93
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setContent(const std::shared_ptr<const DNSRecordContent>& content)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/dnsparser.hh:395,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - ' content'
    argTypes:
    - std::shared_ptr<const DNSRecordContent>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 396
      start: 393
    functionDepth: 0
    functionLinenumber: 393
    functionLinenumberEnd: 396
    functionName: setContent
    functionSourceFile: /src/pdns/pdns/recursordist/dnsparser.hh
    functionUses: 93
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void setContent(std::shared_ptr<const DNSRecordContent>&& content)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 401
      start: 398
    functionDepth: 0
    functionLinenumber: 398
    functionLinenumberEnd: 401
    functionName: '& getContent() const'
    functionSourceFile: /src/pdns/pdns/recursordist/dnsparser.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::shared_ptr<const DNSRecordContent>
    signature: std::shared_ptr<const DNSRecordContent> & getContent() const
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: std::tie
      Src: /src/pdns/pdns/recursordist/dnsparser.hh:405,1
    - Dst: std::tie
      Src: /src/pdns/pdns/recursordist/dnsparser.hh:405,1
    - Dst: std::tie
      Src: /src/pdns/pdns/recursordist/dnsparser.hh:408,1
    - Dst: std::tie
      Src: /src/pdns/pdns/recursordist/dnsparser.hh:408,1
    - Dst: toLower
      Src: /src/pdns/pdns/recursordist/dnsparser.hh:413,1
    - Dst: getZoneRepresentation
      Src: /src/pdns/pdns/recursordist/dnsparser.hh:413,1
    - Dst: toLower
      Src: /src/pdns/pdns/recursordist/dnsparser.hh:415,1
    - Dst: d_content::getZoneRepresentation
      Src: /src/pdns/pdns/recursordist/dnsparser.hh:415,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - DNSRecord
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 418
      start: 403
    functionDepth: 0
    functionLinenumber: 403
    functionLinenumberEnd: 418
    functionName: operator<(const DNSRecord& rhs) const
    functionSourceFile: /src/pdns/pdns/recursordist/dnsparser.hh
    functionUses: 0
    functionsReached:
    - getZoneRepresentation
    - toLower
    - std::tie
    - d_content::getZoneRepresentation
    linkageType: ''
    returnType: bool
    signature: bool operator<(const DNSRecord& rhs) const
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: d_name::canonCompare_three_way
      Src: /src/pdns/pdns/recursordist/dnsparser.hh:426,1
    - Dst: std::tie
      Src: /src/pdns/pdns/recursordist/dnsparser.hh:434,1
    - Dst: std::tie
      Src: /src/pdns/pdns/recursordist/dnsparser.hh:434,1
    - Dst: std::tie
      Src: /src/pdns/pdns/recursordist/dnsparser.hh:437,1
    - Dst: std::tie
      Src: /src/pdns/pdns/recursordist/dnsparser.hh:437,1
    - Dst: d_content::getZoneRepresentation
      Src: /src/pdns/pdns/recursordist/dnsparser.hh:442,1
    - Dst: d_content::getZoneRepresentation
      Src: /src/pdns/pdns/recursordist/dnsparser.hh:444,1
    - Dst: toLower
      Src: /src/pdns/pdns/recursordist/dnsparser.hh:454,1
    - Dst: toLower
      Src: /src/pdns/pdns/recursordist/dnsparser.hh:454,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 23
    argCount: 2
    argNames:
    - ' a'
    - ' b'
    argTypes:
    - DNSRecord
    - DNSRecord
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 456
      start: 421
    functionDepth: 0
    functionLinenumber: 421
    functionLinenumberEnd: 456
    functionName: prettyCompare
    functionSourceFile: /src/pdns/pdns/recursordist/dnsparser.hh
    functionUses: 0
    functionsReached:
    - d_name::canonCompare_three_way
    - toLower
    - std::tie
    - d_content::getZoneRepresentation
    linkageType: ''
    returnType: bool
    signature: bool prettyCompare(const DNSRecord& a, const DNSRecord& b)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 5
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - DNSRecord
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 465
      start: 458
    functionDepth: 0
    functionLinenumber: 458
    functionLinenumberEnd: 465
    functionName: operator==(const DNSRecord& rhs) const
    functionSourceFile: /src/pdns/pdns/recursordist/dnsparser.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool operator==(const DNSRecord& rhs) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sizeEstimate
      Src: /src/pdns/pdns/recursordist/dnsparser.hh:469,1
    - Dst: sizeEstimate
      Src: /src/pdns/pdns/recursordist/dnsparser.hh:469,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 470
      start: 467
    functionDepth: 0
    functionLinenumber: 467
    functionLinenumberEnd: 470
    functionName: sizeEstimate
    functionSourceFile: /src/pdns/pdns/recursordist/dnsparser.hh
    functionUses: 68
    functionsReached:
    - sizeEstimate
    linkageType: ''
    returnType: size_t
    signature: size_t sizeEstimate() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' other'
    argTypes:
    - DNSZoneRecord
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 485
      start: 483
    functionDepth: 0
    functionLinenumber: 483
    functionLinenumberEnd: 485
    functionName: operator<(const DNSZoneRecord& other) const
    functionSourceFile: /src/pdns/pdns/recursordist/dnsparser.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool operator<(const DNSZoneRecord& other) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: copyRecord
      Src: /src/pdns/pdns/recursordist/dnsparser.hh:494,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' dr'
    - ' pr'
    argTypes:
    - DNSRecord
    - PacketReader
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 495
      start: 491
    functionDepth: 0
    functionLinenumber: 491
    functionLinenumberEnd: 495
    functionName: UnknownRecordContent::UnknownRecordContent
    functionSourceFile: /src/pdns/pdns/recursordist/dnsparser.hh
    functionUses: 0
    functionsReached:
    - copyRecord
    linkageType: ''
    returnType: void
    signature: void UnknownRecordContent(const DNSRecord& dr, PacketReader& pr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 504
      start: 501
    functionDepth: 0
    functionLinenumber: 501
    functionLinenumberEnd: 504
    functionName: UnknownRecordContent::getType
    functionSourceFile: /src/pdns/pdns/recursordist/dnsparser.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t getType() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 509
      start: 506
    functionDepth: 0
    functionLinenumber: 506
    functionLinenumberEnd: 509
    functionName: '& getRawContent() const'
    functionSourceFile: /src/pdns/pdns/recursordist/dnsparser.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: vector<uint8_t>
    signature: vector<uint8_t> & getRawContent() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: UnknownRecordContent::sizeEstimate
      Src: /src/pdns/pdns/recursordist/dnsparser.hh:513,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/dnsparser.hh:513,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 514
      start: 511
    functionDepth: 0
    functionLinenumber: 511
    functionLinenumberEnd: 514
    functionName: UnknownRecordContent::sizeEstimate
    functionSourceFile: /src/pdns/pdns/recursordist/dnsparser.hh
    functionUses: 3
    functionsReached:
    - UnknownRecordContent::sizeEstimate
    - size
    linkageType: ''
    returnType: size_t
    signature: size_t sizeEstimate() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MOADNSParser::init
      Src: /src/pdns/pdns/recursordist/dnsparser.hh:528,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - query
    - ' buffer'
    argTypes:
    - bool
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 529
      start: 526
    functionDepth: 0
    functionLinenumber: 526
    functionLinenumberEnd: 529
    functionName: MOADNSParser::MOADNSParser
    functionSourceFile: /src/pdns/pdns/recursordist/dnsparser.hh
    functionUses: 0
    functionsReached:
    - MOADNSParser::init
    linkageType: ''
    returnType: void
    signature: void MOADNSParser(bool query, const string& buffer)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MOADNSParser::init
      Src: /src/pdns/pdns/recursordist/dnsparser.hh:534,1
    - Dst: std::string_view
      Src: /src/pdns/pdns/recursordist/dnsparser.hh:534,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - query
    - packet
    - len
    argTypes:
    - bool
    - char*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 535
      start: 532
    functionDepth: 0
    functionLinenumber: 532
    functionLinenumberEnd: 535
    functionName: MOADNSParser::MOADNSParser
    functionSourceFile: /src/pdns/pdns/recursordist/dnsparser.hh
    functionUses: 0
    functionsReached:
    - std::string_view
    - MOADNSParser::init
    linkageType: ''
    returnType: void
    signature: void MOADNSParser(bool query, const char *packet, unsigned int len)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 549
      start: 546
    functionDepth: 0
    functionLinenumber: 546
    functionLinenumberEnd: 549
    functionName: MOADNSParser::getTSIGPos
    functionSourceFile: /src/pdns/pdns/recursordist/dnsparser.hh
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t getTSIGPos() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::dynamic_pointer_cast<const T>
      Src: /src/pdns/pdns/recursordist/dnsparser.hh:577,1
    - Dst: getContent
      Src: /src/pdns/pdns/recursordist/dnsparser.hh:577,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' dr'
    argTypes:
    - DNSRecord
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 578
      start: 575
    functionDepth: 0
    functionLinenumber: 575
    functionLinenumberEnd: 578
    functionName: getRR
    functionSourceFile: /src/pdns/pdns/recursordist/dnsparser.hh
    functionUses: 120
    functionsReached:
    - getContent
    - std::dynamic_pointer_cast<const T>
    linkageType: ''
    returnType: std::shared_ptr<const T>
    signature: std::shared_ptr<const T> getRR(const DNSRecord& dr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: data
      Src: /src/pdns/pdns/recursordist/dnsparser.hh:586,1
    - Dst: length
      Src: /src/pdns/pdns/recursordist/dnsparser.hh:586,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' packet'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 587
      start: 585
    functionDepth: 0
    functionLinenumber: 585
    functionLinenumberEnd: 587
    functionName: DNSPacketMangler::DNSPacketMangler
    functionSourceFile: /src/pdns/pdns/recursordist/dnsparser.hh
    functionUses: 0
    functionsReached:
    - length
    - data
    linkageType: ''
    returnType: void
    signature: void DNSPacketMangler(std::string& packet)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - packet
    - length
    argTypes:
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 590
      start: 588
    functionDepth: 0
    functionLinenumber: 588
    functionLinenumberEnd: 590
    functionName: DNSPacketMangler::DNSPacketMangler
    functionSourceFile: /src/pdns/pdns/recursordist/dnsparser.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void DNSPacketMangler(char* packet, size_t length)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DNSPacketMangler::get8BitInt
      Src: /src/pdns/pdns/recursordist/dnsparser.hh:599,1
    - Dst: DNSPacketMangler::get8BitInt
      Src: /src/pdns/pdns/recursordist/dnsparser.hh:601,1
    - Dst: DNSPacketMangler::skipBytes
      Src: /src/pdns/pdns/recursordist/dnsparser.hh:604,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 606
      start: 596
    functionDepth: 0
    functionLinenumber: 596
    functionLinenumberEnd: 606
    functionName: DNSPacketMangler::skipDomainName
    functionSourceFile: /src/pdns/pdns/recursordist/dnsparser.hh
    functionUses: 27
    functionsReached:
    - DNSPacketMangler::get8BitInt
    - DNSPacketMangler::skipBytes
    linkageType: ''
    returnType: void
    signature: void skipDomainName()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSPacketMangler::moveOffset
      Src: /src/pdns/pdns/recursordist/dnsparser.hh:610,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - bytes
    argTypes:
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 611
      start: 608
    functionDepth: 0
    functionLinenumber: 608
    functionLinenumberEnd: 611
    functionName: DNSPacketMangler::skipBytes
    functionSourceFile: /src/pdns/pdns/recursordist/dnsparser.hh
    functionUses: 30
    functionsReached:
    - DNSPacketMangler::moveOffset
    linkageType: ''
    returnType: void
    signature: void skipBytes(uint16_t bytes)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSPacketMangler::rewindOffset
      Src: /src/pdns/pdns/recursordist/dnsparser.hh:614,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - by
    argTypes:
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 615
      start: 612
    functionDepth: 0
    functionLinenumber: 612
    functionLinenumberEnd: 615
    functionName: DNSPacketMangler::rewindBytes
    functionSourceFile: /src/pdns/pdns/recursordist/dnsparser.hh
    functionUses: 3
    functionsReached:
    - DNSPacketMangler::rewindOffset
    linkageType: ''
    returnType: void
    signature: void rewindBytes(uint16_t by)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSPacketMangler::moveOffset
      Src: /src/pdns/pdns/recursordist/dnsparser.hh:619,1
    - Dst: memcpy
      Src: /src/pdns/pdns/recursordist/dnsparser.hh:621,1
    - Dst: ntohl
      Src: /src/pdns/pdns/recursordist/dnsparser.hh:622,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 623
      start: 616
    functionDepth: 0
    functionLinenumber: 616
    functionLinenumberEnd: 623
    functionName: DNSPacketMangler::get32BitInt
    functionSourceFile: /src/pdns/pdns/recursordist/dnsparser.hh
    functionUses: 6
    functionsReached:
    - DNSPacketMangler::moveOffset
    - ntohl
    - memcpy
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t get32BitInt()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSPacketMangler::moveOffset
      Src: /src/pdns/pdns/recursordist/dnsparser.hh:627,1
    - Dst: memcpy
      Src: /src/pdns/pdns/recursordist/dnsparser.hh:629,1
    - Dst: ntohs
      Src: /src/pdns/pdns/recursordist/dnsparser.hh:630,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 631
      start: 624
    functionDepth: 0
    functionLinenumber: 624
    functionLinenumberEnd: 631
    functionName: DNSPacketMangler::get16BitInt
    functionSourceFile: /src/pdns/pdns/recursordist/dnsparser.hh
    functionUses: 28
    functionsReached:
    - DNSPacketMangler::moveOffset
    - ntohs
    - memcpy
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t get16BitInt()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSPacketMangler::moveOffset
      Src: /src/pdns/pdns/recursordist/dnsparser.hh:636,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 638
      start: 633
    functionDepth: 0
    functionLinenumber: 633
    functionLinenumberEnd: 638
    functionName: DNSPacketMangler::get8BitInt
    functionSourceFile: /src/pdns/pdns/recursordist/dnsparser.hh
    functionUses: 3
    functionsReached:
    - DNSPacketMangler::moveOffset
    linkageType: ''
    returnType: uint8_t
    signature: uint8_t get8BitInt()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSPacketMangler::get16BitInt
      Src: /src/pdns/pdns/recursordist/dnsparser.hh:642,1
    - Dst: DNSPacketMangler::moveOffset
      Src: /src/pdns/pdns/recursordist/dnsparser.hh:643,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 644
      start: 640
    functionDepth: 0
    functionLinenumber: 640
    functionLinenumberEnd: 644
    functionName: DNSPacketMangler::skipRData
    functionSourceFile: /src/pdns/pdns/recursordist/dnsparser.hh
    functionUses: 27
    functionsReached:
    - DNSPacketMangler::moveOffset
    - DNSPacketMangler::get16BitInt
    linkageType: ''
    returnType: void
    signature: void skipRData()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSPacketMangler::get16BitInt
      Src: /src/pdns/pdns/recursordist/dnsparser.hh:648,1
    - Dst: DNSPacketMangler::moveOffset
      Src: /src/pdns/pdns/recursordist/dnsparser.hh:650,1
    - Dst: std::pair<uint32_t,uint32_t>
      Src: /src/pdns/pdns/recursordist/dnsparser.hh:652,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 653
      start: 646
    functionDepth: 0
    functionLinenumber: 646
    functionLinenumberEnd: 653
    functionName: DNSPacketMangler::skipRDataAndReturnOffsets
    functionSourceFile: /src/pdns/pdns/recursordist/dnsparser.hh
    functionUses: 3
    functionsReached:
    - DNSPacketMangler::moveOffset
    - std::pair<uint32_t,uint32_t>
    - DNSPacketMangler::get16BitInt
    linkageType: ''
    returnType: std::pair<uint32_t, uint32_t>
    signature: std::pair<uint32_t, uint32_t> skipRDataAndReturnOffsets()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DNSPacketMangler::moveOffset
      Src: /src/pdns/pdns/recursordist/dnsparser.hh:658,1
    - Dst: memcpy
      Src: /src/pdns/pdns/recursordist/dnsparser.hh:661,1
    - Dst: ntohl
      Src: /src/pdns/pdns/recursordist/dnsparser.hh:662,1
    - Dst: htonl
      Src: /src/pdns/pdns/recursordist/dnsparser.hh:668,1
    - Dst: memcpy
      Src: /src/pdns/pdns/recursordist/dnsparser.hh:669,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - decrease
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 670
      start: 655
    functionDepth: 0
    functionLinenumber: 655
    functionLinenumberEnd: 670
    functionName: DNSPacketMangler::decreaseAndSkip32BitInt
    functionSourceFile: /src/pdns/pdns/recursordist/dnsparser.hh
    functionUses: 3
    functionsReached:
    - htonl
    - DNSPacketMangler::moveOffset
    - ntohl
    - memcpy
    linkageType: ''
    returnType: void
    signature: void decreaseAndSkip32BitInt(uint32_t decrease)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSPacketMangler::moveOffset
      Src: /src/pdns/pdns/recursordist/dnsparser.hh:674,1
    - Dst: htonl
      Src: /src/pdns/pdns/recursordist/dnsparser.hh:676,1
    - Dst: memcpy
      Src: /src/pdns/pdns/recursordist/dnsparser.hh:677,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - value
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 678
      start: 672
    functionDepth: 0
    functionLinenumber: 672
    functionLinenumberEnd: 678
    functionName: DNSPacketMangler::setAndSkip32BitInt
    functionSourceFile: /src/pdns/pdns/recursordist/dnsparser.hh
    functionUses: 3
    functionsReached:
    - DNSPacketMangler::moveOffset
    - memcpy
    - htonl
    linkageType: ''
    returnType: void
    signature: void setAndSkip32BitInt(uint32_t value)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 683
      start: 680
    functionDepth: 0
    functionLinenumber: 680
    functionLinenumberEnd: 683
    functionName: DNSPacketMangler::getOffset
    functionSourceFile: /src/pdns/pdns/recursordist/dnsparser.hh
    functionUses: 9
    functionsReached: []
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t getOffset() const
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: std::swap
      Src: /src/pdns/pdns/recursordist/dnsparser.hh:688,1
    - Dst: std::out_of_range
      Src: /src/pdns/pdns/recursordist/dnsparser.hh:691,1
    - Dst: std::out_of_range
      Src: /src/pdns/pdns/recursordist/dnsparser.hh:694,1
    - Dst: std::out_of_range
      Src: /src/pdns/pdns/recursordist/dnsparser.hh:697,1
    - Dst: std::out_of_range
      Src: /src/pdns/pdns/recursordist/dnsparser.hh:700,1
    - Dst: std::out_of_range
      Src: /src/pdns/pdns/recursordist/dnsparser.hh:704,1
    - Dst: std::swap_ranges
      Src: /src/pdns/pdns/recursordist/dnsparser.hh:706,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 20
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - std::pair<uint32_t, uint32_t>
    - std::pair<uint32_t, uint32_t>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 707
      start: 685
    functionDepth: 0
    functionLinenumber: 685
    functionLinenumberEnd: 707
    functionName: DNSPacketMangler::swapInPlace
    functionSourceFile: /src/pdns/pdns/recursordist/dnsparser.hh
    functionUses: 3
    functionsReached:
    - std::swap_ranges
    - std::swap
    - std::out_of_range
    linkageType: ''
    returnType: void
    signature: void swapInPlace(std::pair<uint32_t, uint32_t> a, std::pair<uint32_t,
      uint32_t> b)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::out_of_range
      Src: /src/pdns/pdns/recursordist/dnsparser.hh:714,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/dnsparser.hh:714,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/dnsparser.hh:715,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - by
    argTypes:
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 716
      start: 710
    functionDepth: 0
    functionLinenumber: 710
    functionLinenumberEnd: 716
    functionName: DNSPacketMangler::moveOffset
    functionSourceFile: /src/pdns/pdns/recursordist/dnsparser.hh
    functionUses: 24
    functionsReached:
    - std::out_of_range
    - std::to_string
    linkageType: ''
    returnType: void
    signature: void moveOffset(uint16_t by)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: std::out_of_range
      Src: /src/pdns/pdns/recursordist/dnsparser.hh:721,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/dnsparser.hh:721,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/dnsparser.hh:722,1
    - Dst: std::out_of_range
      Src: /src/pdns/pdns/recursordist/dnsparser.hh:725,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/dnsparser.hh:725,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/dnsparser.hh:726,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 6
    argCount: 1
    argNames:
    - by
    argTypes:
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 727
      start: 718
    functionDepth: 0
    functionLinenumber: 718
    functionLinenumberEnd: 727
    functionName: DNSPacketMangler::rewindOffset
    functionSourceFile: /src/pdns/pdns/recursordist/dnsparser.hh
    functionUses: 3
    functionsReached:
    - std::out_of_range
    - std::to_string
    linkageType: ''
    returnType: void
    signature: void rewindOffset(uint16_t by)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - entries
    argTypes:
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 51
    functionDepth: 0
    functionLinenumber: 51
    functionLinenumberEnd: 54
    functionName: AggressiveNSECCache::AggressiveNSECCache
    functionSourceFile: /src/pdns/pdns/recursordist/aggressive_nsec.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void AggressiveNSECCache(uint64_t entries)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - number
    argTypes:
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 56
    functionDepth: 0
    functionLinenumber: 56
    functionLinenumberEnd: 59
    functionName: AggressiveNSECCache::setMaxEntries
    functionSourceFile: /src/pdns/pdns/recursordist/aggressive_nsec.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setMaxEntries(uint64_t number)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 61
    functionDepth: 0
    functionLinenumber: 61
    functionLinenumberEnd: 64
    functionName: AggressiveNSECCache::nsec3Disabled
    functionSourceFile: /src/pdns/pdns/recursordist/aggressive_nsec.hh
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool nsec3Disabled()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 71
    functionDepth: 0
    functionLinenumber: 71
    functionLinenumberEnd: 74
    functionName: AggressiveNSECCache::getEntriesCount
    functionSourceFile: /src/pdns/pdns/recursordist/aggressive_nsec.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t getEntriesCount() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 76
    functionDepth: 0
    functionLinenumber: 76
    functionLinenumberEnd: 79
    functionName: AggressiveNSECCache::getNSECHits
    functionSourceFile: /src/pdns/pdns/recursordist/aggressive_nsec.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t getNSECHits() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 81
    functionDepth: 0
    functionLinenumber: 81
    functionLinenumberEnd: 84
    functionName: AggressiveNSECCache::getNSEC3Hits
    functionSourceFile: /src/pdns/pdns/recursordist/aggressive_nsec.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t getNSEC3Hits() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 86
    functionDepth: 0
    functionLinenumber: 86
    functionLinenumberEnd: 89
    functionName: AggressiveNSECCache::getNSECWildcardHits
    functionSourceFile: /src/pdns/pdns/recursordist/aggressive_nsec.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t getNSECWildcardHits() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 91
    functionDepth: 0
    functionLinenumber: 91
    functionLinenumberEnd: 94
    functionName: AggressiveNSECCache::getNSEC3WildcardHits
    functionSourceFile: /src/pdns/pdns/recursordist/aggressive_nsec.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t getNSEC3WildcardHits() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' zone'
    argTypes:
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 107
      start: 104
    functionDepth: 0
    functionLinenumber: 104
    functionLinenumberEnd: 107
    functionName: AggressiveNSECCache::ZoneEntry
    functionSourceFile: /src/pdns/pdns/recursordist/aggressive_nsec.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ZoneEntry(const DNSName& zone)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/dnstap.cc:65,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 63
    functionDepth: 0
    functionLinenumber: 63
    functionLinenumberEnd: 66
    functionName: '&& DnstapMessage::getBuffer()'
    functionSourceFile: /src/pdns/pdns/recursordist/dnstap.cc
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: std::string
    signature: std::string && DnstapMessage::getBuffer()
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/dnstap.cc:69,1
    - Dst: protozero::pbf_writer::add_bytes
      Src: /src/pdns/pdns/recursordist/dnstap.cc:73,1
    - Dst: protozero::pbf_writer::add_bytes
      Src: /src/pdns/pdns/recursordist/dnstap.cc:74,1
    - Dst: protozero::pbf_writer::add_enum
      Src: /src/pdns/pdns/recursordist/dnstap.cc:75,1
    - Dst: protozero::pbf_writer::add_enum
      Src: /src/pdns/pdns/recursordist/dnstap.cc:80,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/recursordist/dnstap.cc:80,1
    - Dst: protozero::pbf_writer::add_enum
      Src: /src/pdns/pdns/recursordist/dnstap.cc:82,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/recursordist/dnstap.cc:82,1
    - Dst: protozero::pbf_writer::add_enum
      Src: /src/pdns/pdns/recursordist/dnstap.cc:85,1
    - Dst: protozero::pbf_writer::add_enum
      Src: /src/pdns/pdns/recursordist/dnstap.cc:88,1
    - Dst: protozero::pbf_writer::add_bytes
      Src: /src/pdns/pdns/recursordist/dnstap.cc:94,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/recursordist/dnstap.cc:94,1
    - Dst: protozero::pbf_writer::add_bytes
      Src: /src/pdns/pdns/recursordist/dnstap.cc:98,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/recursordist/dnstap.cc:98,1
    - Dst: protozero::pbf_writer::add_uint32
      Src: /src/pdns/pdns/recursordist/dnstap.cc:100,1
    - Dst: ntohs
      Src: /src/pdns/pdns/recursordist/dnstap.cc:100,1
    - Dst: protozero::pbf_writer::add_bytes
      Src: /src/pdns/pdns/recursordist/dnstap.cc:106,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/recursordist/dnstap.cc:106,1
    - Dst: protozero::pbf_writer::add_bytes
      Src: /src/pdns/pdns/recursordist/dnstap.cc:110,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/recursordist/dnstap.cc:110,1
    - Dst: protozero::pbf_writer::add_uint32
      Src: /src/pdns/pdns/recursordist/dnstap.cc:112,1
    - Dst: ntohs
      Src: /src/pdns/pdns/recursordist/dnstap.cc:112,1
    - Dst: protozero::pbf_writer::add_uint64
      Src: /src/pdns/pdns/recursordist/dnstap.cc:116,1
    - Dst: protozero::pbf_writer::add_fixed32
      Src: /src/pdns/pdns/recursordist/dnstap.cc:117,1
    - Dst: protozero::pbf_writer::add_uint64
      Src: /src/pdns/pdns/recursordist/dnstap.cc:121,1
    - Dst: protozero::pbf_writer::add_fixed32
      Src: /src/pdns/pdns/recursordist/dnstap.cc:122,1
    - Dst: protozero::pbf_writer::add_bytes
      Src: /src/pdns/pdns/recursordist/dnstap.cc:128,1
    - Dst: protozero::pbf_writer::add_bytes
      Src: /src/pdns/pdns/recursordist/dnstap.cc:131,1
    - Dst: protozero::pbf_writer::add_enum
      Src: /src/pdns/pdns/recursordist/dnstap.cc:136,1
    - Dst: static_cast<protozero::pbf_tag_type>
      Src: /src/pdns/pdns/recursordist/dnstap.cc:136,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/dnstap.cc:139,1
    - Dst: protozero::pbf_writer::add_bytes
      Src: /src/pdns/pdns/recursordist/dnstap.cc:140,1
    - Dst: toDNSString
      Src: /src/pdns/pdns/recursordist/dnstap.cc:140,1
    - Dst: protozero::pbf_writer::commit
      Src: /src/pdns/pdns/recursordist/dnstap.cc:143,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 52
    argCount: 12
    argNames:
    - ' buffer'
    - type
    - ' identity'
    - requestor
    - responder
    - protocol
    - packet
    - len
    - queryTime
    - responseTime
    - ' auth'
    - httpProtocol
    argTypes:
    - std::string
    - DnstapMessage::MessageType
    - std::string
    - ComboAddress*
    - ComboAddress*
    - DnstapMessage::ProtocolType
    - char*
    - size_t
    - struct timespec*
    - struct timespec*
    - DNSName
    - std::optional<HttpProtocolType>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 144
      start: 68
    functionDepth: 0
    functionLinenumber: 68
    functionLinenumberEnd: 144
    functionName: DnstapMessage::DnstapMessage
    functionSourceFile: /src/pdns/pdns/recursordist/dnstap.cc
    functionUses: 0
    functionsReached:
    - static_cast<protozero::pbf_tag_type>
    - std::move
    - protozero::pbf_writer::commit
    - ntohs
    - protozero::pbf_writer::add_bytes
    - protozero::pbf_writer::add_uint64
    - protozero::pbf_writer::add_fixed32
    - empty
    - reinterpret_cast<const char*>
    - toDNSString
    - protozero::pbf_writer::add_uint32
    - protozero::pbf_writer::add_enum
    linkageType: ''
    returnType: void
    signature: void DnstapMessage::DnstapMessage(std::string&& buffer, DnstapMessage::MessageType
      type, const std::string& identity, const ComboAddress* requestor, const ComboAddress*
      responder, DnstapMessage::ProtocolType protocol, const char* packet, const size_t
      len, const struct timespec* queryTime, const struct timespec* responseTime,
      const DNSName& auth, const std::optional<HttpProtocolType> httpProtocol)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::pbf_writer::add_bytes
      Src: /src/pdns/pdns/recursordist/dnstap.cc:149,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' extra'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 150
      start: 146
    functionDepth: 0
    functionLinenumber: 146
    functionLinenumberEnd: 150
    functionName: DnstapMessage::setExtra
    functionSourceFile: /src/pdns/pdns/recursordist/dnstap.cc
    functionUses: 0
    functionsReached:
    - protozero::pbf_writer::add_bytes
    linkageType: ''
    returnType: void
    signature: void DnstapMessage::setExtra(const std::string& extra)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: time
      Src: /src/pdns/pdns/recursordist/rec-zonetocache.cc:46,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - ' log'
    - ' zone'
    argTypes:
    - std::shared_ptr<Logr::Logger>
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 46
    functionName: ZoneData
    functionSourceFile: /src/pdns/pdns/recursordist/rec-zonetocache.cc
    functionUses: 2
    functionsReached:
    - time
    linkageType: ''
    returnType: void
    signature: void ZoneData(const std::shared_ptr<Logr::Logger>& log, const std::string&
      zone)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: DNSName::chopOff
      Src: /src/pdns/pdns/recursordist/rec-zonetocache.cc:72,1
    - Dst: count
      Src: /src/pdns/pdns/recursordist/rec-zonetocache.cc:76,1
    - Dst: DNSName::chopOff
      Src: /src/pdns/pdns/recursordist/rec-zonetocache.cc:80,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 15
    argCount: 2
    argNames:
    - ' qname'
    - qtype
    argTypes:
    - DNSName
    - QType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 68
    functionDepth: 0
    functionLinenumber: 68
    functionLinenumberEnd: 86
    functionName: ZoneData::isRRSetAuth
    functionSourceFile: /src/pdns/pdns/recursordist/rec-zonetocache.cc
    functionUses: 0
    functionsReached:
    - DNSName::chopOff
    - count
    linkageType: ''
    returnType: bool
    signature: bool ZoneData::isRRSetAuth(const DNSName& qname, QType qtype) const
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: pair
      Src: /src/pdns/pdns/recursordist/rec-zonetocache.cc:93,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/rec-zonetocache.cc:102,1
    - Dst: pair
      Src: /src/pdns/pdns/recursordist/rec-zonetocache.cc:106,1
    - Dst: find
      Src: /src/pdns/pdns/recursordist/rec-zonetocache.cc:107,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/rec-zonetocache.cc:108,1
    - Dst: auto::second::push_back
      Src: /src/pdns/pdns/recursordist/rec-zonetocache.cc:109,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/rec-zonetocache.cc:109,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/recursordist/rec-zonetocache.cc:113,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/rec-zonetocache.cc:113,1
    - Dst: insert
      Src: /src/pdns/pdns/recursordist/rec-zonetocache.cc:114,1
    - Dst: insert
      Src: /src/pdns/pdns/recursordist/rec-zonetocache.cc:120,1
    - Dst: find
      Src: /src/pdns/pdns/recursordist/rec-zonetocache.cc:127,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/rec-zonetocache.cc:128,1
    - Dst: auto::second::push_back
      Src: /src/pdns/pdns/recursordist/rec-zonetocache.cc:129,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/recursordist/rec-zonetocache.cc:133,1
    - Dst: insert
      Src: /src/pdns/pdns/recursordist/rec-zonetocache.cc:134,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 35
    argCount: 1
    argNames:
    - ' dnsRecord'
    argTypes:
    - DNSRecord
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 136
      start: 88
    functionDepth: 2
    functionLinenumber: 88
    functionLinenumberEnd: 136
    functionName: ZoneData::parseDRForCache
    functionSourceFile: /src/pdns/pdns/recursordist/rec-zonetocache.cc
    functionUses: 0
    functionsReached:
    - getRR
    - auto::second::push_back
    - std::move
    - vector::push_back
    - end
    - insert
    - pair
    - find
    linkageType: ''
    returnType: void
    signature: void ZoneData::parseDRForCache(DNSRecord& dnsRecord)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/rec-zonetocache.cc:140,1
    - Dst: d_sources::at
      Src: /src/pdns/pdns/recursordist/rec-zonetocache.cc:140,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/rec-zonetocache.cc:145,1
    - Dst: pdns::getQueryLocalAddress
      Src: /src/pdns/pdns/recursordist/rec-zonetocache.cc:146,1
    - Dst: time
      Src: /src/pdns/pdns/recursordist/rec-zonetocache.cc:152,1
    - Dst: time
      Src: /src/pdns/pdns/recursordist/rec-zonetocache.cc:153,1
    - Dst: AXFRRetriever::getChunk
      Src: /src/pdns/pdns/recursordist/rec-zonetocache.cc:156,1
    - Dst: readRecord
      Src: /src/pdns/pdns/recursordist/rec-zonetocache.cc:159,1
    - Dst: ZoneData::parseDRForCache
      Src: /src/pdns/pdns/recursordist/rec-zonetocache.cc:161,1
    - Dst: time
      Src: /src/pdns/pdns/recursordist/rec-zonetocache.cc:163,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/rec-zonetocache.cc:165,1
    - Dst: verify
      Src: /src/pdns/pdns/recursordist/rec-zonetocache.cc:171,1
    - Dst: info
      Src: /src/pdns/pdns/recursordist/rec-zonetocache.cc:172,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-zonetocache.cc:172,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-zonetocache.cc:173,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 26
    argCount: 2
    argNames:
    - ' config'
    - ' zonemd'
    argTypes:
    - RecZoneToCache::Config
    - pdns::ZoneMD
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 182
      start: 138
    functionDepth: 3
    functionLinenumber: 138
    functionLinenumberEnd: 182
    functionName: ZoneData::getByAXFR
    functionSourceFile: /src/pdns/pdns/recursordist/rec-zonetocache.cc
    functionUses: 0
    functionsReached:
    - pdns::getQueryLocalAddress
    - d_sources::at
    - AXFRRetriever::getChunk
    - std::runtime_error
    - Logging::Loggable
    - time
    - info
    - ZoneData::parseDRForCache
    - readRecord
    - verify
    - ComboAddress
    linkageType: ''
    returnType: pdns::ZoneMD::Result
    signature: pdns::ZoneMD::Result ZoneData::getByAXFR(const RecZoneToCache::Config&
      config, pdns::ZoneMD& zonemd)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/rec-zonetocache.cc:190,1
    - Dst: std::getline
      Src: /src/pdns/pdns/recursordist/rec-zonetocache.cc:193,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/recursordist/rec-zonetocache.cc:194,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - ' file'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 197
      start: 184
    functionDepth: 0
    functionLinenumber: 184
    functionLinenumberEnd: 197
    functionName: getLinesFromFile
    functionSourceFile: /src/pdns/pdns/recursordist/rec-zonetocache.cc
    functionUses: 0
    functionsReached:
    - std::vector::push_back
    - std::getline
    - std::runtime_error
    linkageType: ''
    returnType: std::vector<std::string>
    signature: std::vector<std::string> getLinesFromFile(const std::string& file)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: MiniCurl::MiniCurl
      Src: /src/pdns/pdns/recursordist/rec-zonetocache.cc:203,1
    - Dst: MiniCurl::getURL
      Src: /src/pdns/pdns/recursordist/rec-zonetocache.cc:205,1
    - Dst: d_sources::at
      Src: /src/pdns/pdns/recursordist/rec-zonetocache.cc:205,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/rec-zonetocache.cc:205,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/recursordist/rec-zonetocache.cc:205,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/recursordist/rec-zonetocache.cc:206,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/rec-zonetocache.cc:208,1
    - Dst: std::getline
      Src: /src/pdns/pdns/recursordist/rec-zonetocache.cc:212,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/recursordist/rec-zonetocache.cc:213,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/rec-zonetocache.cc:216,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 9
    argCount: 1
    argNames:
    - ' config'
    argTypes:
    - RecZoneToCache::Config
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 219
      start: 199
    functionDepth: 0
    functionLinenumber: 199
    functionLinenumberEnd: 219
    functionName: getURL
    functionSourceFile: /src/pdns/pdns/recursordist/rec-zonetocache.cc
    functionUses: 2
    functionsReached:
    - std::vector::push_back
    - MiniCurl::MiniCurl
    - d_sources::at
    - std::runtime_error
    - MiniCurl::getURL
    - ComboAddress
    - std::string::size
    - std::getline
    - static_cast<int>
    linkageType: ''
    returnType: std::vector<std::string>
    signature: std::vector<std::string> getURL([[maybe_unused]] const RecZoneToCache::Config&
      config)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ZoneParserTNG::setMaxGenerateSteps
      Src: /src/pdns/pdns/recursordist/rec-zonetocache.cc:225,1
    - Dst: ZoneParserTNG::setMaxIncludes
      Src: /src/pdns/pdns/recursordist/rec-zonetocache.cc:226,1
    - Dst: ZoneParserTNG::get
      Src: /src/pdns/pdns/recursordist/rec-zonetocache.cc:228,1
    - Dst: readRecord
      Src: /src/pdns/pdns/recursordist/rec-zonetocache.cc:231,1
    - Dst: ZoneData::parseDRForCache
      Src: /src/pdns/pdns/recursordist/rec-zonetocache.cc:233,1
    - Dst: verify
      Src: /src/pdns/pdns/recursordist/rec-zonetocache.cc:238,1
    - Dst: info
      Src: /src/pdns/pdns/recursordist/rec-zonetocache.cc:239,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-zonetocache.cc:239,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-zonetocache.cc:240,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 3
    argNames:
    - ' lines'
    - ' config'
    - ' zonemd'
    argTypes:
    - vector<string>
    - RecZoneToCache::Config
    - pdns::ZoneMD
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 249
      start: 221
    functionDepth: 3
    functionLinenumber: 221
    functionLinenumberEnd: 249
    functionName: ZoneData::processLines
    functionSourceFile: /src/pdns/pdns/recursordist/rec-zonetocache.cc
    functionUses: 0
    functionsReached:
    - ZoneParserTNG::setMaxIncludes
    - ZoneParserTNG::setMaxGenerateSteps
    - Logging::Loggable
    - info
    - ZoneData::parseDRForCache
    - readRecord
    - ZoneParserTNG::get
    - verify
    linkageType: ''
    returnType: pdns::ZoneMD::Result
    signature: pdns::ZoneMD::Result ZoneData::processLines(const vector<string>& lines,
      const RecZoneToCache::Config& config, pdns::ZoneMD& zonemd)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: pdns::max
      Src: /src/pdns/pdns/recursordist/rec-zonetocache.cc:254,1
    - Dst: SyncRes::setDoDNSSEC
      Src: /src/pdns/pdns/recursordist/rec-zonetocache.cc:258,1
    - Dst: SyncRes::setDNSSECValidationRequested
      Src: /src/pdns/pdns/recursordist/rec-zonetocache.cc:259,1
    - Dst: SyncRes::getDSRecords
      Src: /src/pdns/pdns/recursordist/rec-zonetocache.cc:262,1
    - Dst: getDNSKEYs
      Src: /src/pdns/pdns/recursordist/rec-zonetocache.cc:269,1
    - Dst: getDNSKEYs
      Src: /src/pdns/pdns/recursordist/rec-zonetocache.cc:272,1
    - Dst: skeyset_t::emplace
      Src: /src/pdns/pdns/recursordist/rec-zonetocache.cc:273,1
    - Dst: sortedRecords_t::emplace
      Src: /src/pdns/pdns/recursordist/rec-zonetocache.cc:274,1
    - Dst: validateDNSKeysAgainstDS
      Src: /src/pdns/pdns/recursordist/rec-zonetocache.cc:278,1
    - Dst: getRRSIGs
      Src: /src/pdns/pdns/recursordist/rec-zonetocache.cc:278,1
    - Dst: skeyset_t::empty
      Src: /src/pdns/pdns/recursordist/rec-zonetocache.cc:283,1
    - Dst: getZONEMDs
      Src: /src/pdns/pdns/recursordist/rec-zonetocache.cc:287,1
    - Dst: auto::size
      Src: /src/pdns/pdns/recursordist/rec-zonetocache.cc:288,1
    - Dst: getNSECs
      Src: /src/pdns/pdns/recursordist/rec-zonetocache.cc:292,1
    - Dst: getNSEC3s
      Src: /src/pdns/pdns/recursordist/rec-zonetocache.cc:293,1
    - Dst: records::empty
      Src: /src/pdns/pdns/recursordist/rec-zonetocache.cc:298,1
    - Dst: signatures::empty
      Src: /src/pdns/pdns/recursordist/rec-zonetocache.cc:298,1
    - Dst: validateWithKeySet
      Src: /src/pdns/pdns/recursordist/rec-zonetocache.cc:300,1
    - Dst: cspmap_t::emplace
      Src: /src/pdns/pdns/recursordist/rec-zonetocache.cc:301,1
    - Dst: std::pair
      Src: /src/pdns/pdns/recursordist/rec-zonetocache.cc:301,1
    - Dst: records::empty
      Src: /src/pdns/pdns/recursordist/rec-zonetocache.cc:303,1
    - Dst: signatures::empty
      Src: /src/pdns/pdns/recursordist/rec-zonetocache.cc:303,1
    - Dst: sortedRecords_t::clear
      Src: /src/pdns/pdns/recursordist/rec-zonetocache.cc:305,1
    - Dst: getNSEC3Params
      Src: /src/pdns/pdns/recursordist/rec-zonetocache.cc:306,1
    - Dst: sortedRecords_t::emplace
      Src: /src/pdns/pdns/recursordist/rec-zonetocache.cc:307,1
    - Dst: validateWithKeySet
      Src: /src/pdns/pdns/recursordist/rec-zonetocache.cc:309,1
    - Dst: getRRSIGs
      Src: /src/pdns/pdns/recursordist/rec-zonetocache.cc:309,1
    - Dst: info
      Src: /src/pdns/pdns/recursordist/rec-zonetocache.cc:311,1
    - Dst: validateWithKeySet
      Src: /src/pdns/pdns/recursordist/rec-zonetocache.cc:315,1
    - Dst: getNSEC3Label
      Src: /src/pdns/pdns/recursordist/rec-zonetocache.cc:315,1
    - Dst: cspmap_t::emplace
      Src: /src/pdns/pdns/recursordist/rec-zonetocache.cc:316,1
    - Dst: std::pair
      Src: /src/pdns/pdns/recursordist/rec-zonetocache.cc:316,1
    - Dst: getNSEC3Label
      Src: /src/pdns/pdns/recursordist/rec-zonetocache.cc:316,1
    - Dst: info
      Src: /src/pdns/pdns/recursordist/rec-zonetocache.cc:319,1
    - Dst: info
      Src: /src/pdns/pdns/recursordist/rec-zonetocache.cc:324,1
    - Dst: getDenial
      Src: /src/pdns/pdns/recursordist/rec-zonetocache.cc:328,1
    - Dst: info
      Src: /src/pdns/pdns/recursordist/rec-zonetocache.cc:330,1
    - Dst: info
      Src: /src/pdns/pdns/recursordist/rec-zonetocache.cc:333,1
    - Dst: sortedRecords_t::clear
      Src: /src/pdns/pdns/recursordist/rec-zonetocache.cc:338,1
    - Dst: sortedRecords_t::emplace
      Src: /src/pdns/pdns/recursordist/rec-zonetocache.cc:340,1
    - Dst: validateWithKeySet
      Src: /src/pdns/pdns/recursordist/rec-zonetocache.cc:342,1
    - Dst: getRRSIGs
      Src: /src/pdns/pdns/recursordist/rec-zonetocache.cc:342,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 56
    argCount: 2
    argNames:
    - ' zonemd'
    - ' zonemdCount'
    argTypes:
    - pdns::ZoneMD
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 343
      start: 251
    functionDepth: 4
    functionLinenumber: 251
    functionLinenumberEnd: 343
    functionName: ZoneData::dnssecValidate
    functionSourceFile: /src/pdns/pdns/recursordist/rec-zonetocache.cc
    functionUses: 0
    functionsReached:
    - sortedRecords_t::clear
    - SyncRes::setDNSSECValidationRequested
    - SyncRes::getDSRecords
    - cspmap_t::emplace
    - std::pair
    - skeyset_t::empty
    - getNSECs
    - auto::size
    - getNSEC3Params
    - getRRSIGs
    - getDNSKEYs
    - validateWithKeySet
    - sortedRecords_t::emplace
    - pdns::max
    - records::empty
    - getDenial
    - SyncRes::setDoDNSSEC
    - getNSEC3s
    - skeyset_t::emplace
    - getZONEMDs
    - getNSEC3Label
    - signatures::empty
    - info
    - validateDNSKeysAgainstDS
    linkageType: ''
    returnType: vState
    signature: vState ZoneData::dnssecValidate(pdns::ZoneMD& zonemd, size_t& zonemdCount)
      const
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: d_sources::size
      Src: /src/pdns/pdns/recursordist/rec-zonetocache.cc:347,1
    - Dst: info
      Src: /src/pdns/pdns/recursordist/rec-zonetocache.cc:348,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/recursordist/rec-zonetocache.cc:352,1
    - Dst: testZoneMD
      Src: /src/pdns/pdns/recursordist/rec-zonetocache.cc:359,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/rec-zonetocache.cc:359,1
    - Dst: info
      Src: /src/pdns/pdns/recursordist/rec-zonetocache.cc:362,1
    - Dst: ZoneData::getByAXFR
      Src: /src/pdns/pdns/recursordist/rec-zonetocache.cc:363,1
    - Dst: info
      Src: /src/pdns/pdns/recursordist/rec-zonetocache.cc:368,1
    - Dst: getURL
      Src: /src/pdns/pdns/recursordist/rec-zonetocache.cc:369,1
    - Dst: info
      Src: /src/pdns/pdns/recursordist/rec-zonetocache.cc:372,1
    - Dst: getLinesFromFile
      Src: /src/pdns/pdns/recursordist/rec-zonetocache.cc:373,1
    - Dst: d_sources::at
      Src: /src/pdns/pdns/recursordist/rec-zonetocache.cc:373,1
    - Dst: ZoneData::processLines
      Src: /src/pdns/pdns/recursordist/rec-zonetocache.cc:375,1
    - Dst: ZoneData::dnssecValidate
      Src: /src/pdns/pdns/recursordist/rec-zonetocache.cc:381,1
    - Dst: info
      Src: /src/pdns/pdns/recursordist/rec-zonetocache.cc:382,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-zonetocache.cc:382,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-zonetocache.cc:383,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/recursordist/rec-zonetocache.cc:385,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/recursordist/rec-zonetocache.cc:388,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/recursordist/rec-zonetocache.cc:394,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/recursordist/rec-zonetocache.cc:398,1
    - Dst: time
      Src: /src/pdns/pdns/recursordist/rec-zonetocache.cc:403,1
    - Dst: isWildcard
      Src: /src/pdns/pdns/recursordist/rec-zonetocache.cc:406,1
    - Dst: find
      Src: /src/pdns/pdns/recursordist/rec-zonetocache.cc:416,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/rec-zonetocache.cc:417,1
    - Dst: ZoneData::isRRSetAuth
      Src: /src/pdns/pdns/recursordist/rec-zonetocache.cc:420,1
    - Dst: SyncRes::isRecursiveForward
      Src: /src/pdns/pdns/recursordist/rec-zonetocache.cc:423,1
    - Dst: replace
      Src: /src/pdns/pdns/recursordist/rec-zonetocache.cc:425,1
    CyclomaticComplexity: 37
    EdgeCount: 37
    ICount: 58
    argCount: 1
    argNames:
    - ' config'
    argTypes:
    - RecZoneToCache::Config
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 432
      start: 345
    functionDepth: 5
    functionLinenumber: 345
    functionLinenumberEnd: 432
    functionName: ZoneData::ZoneToCache
    functionSourceFile: /src/pdns/pdns/recursordist/rec-zonetocache.cc
    functionUses: 0
    functionsReached:
    - PDNSException
    - replace
    - find
    - Logging::Loggable
    - time
    - testZoneMD
    - ZoneData::processLines
    - SyncRes::isRecursiveForward
    - getURL
    - d_sources::at
    - ZoneData::dnssecValidate
    - isWildcard
    - ZoneData::isRRSetAuth
    - DNSName
    - getLinesFromFile
    - end
    - info
    - ZoneData::getByAXFR
    - d_sources::size
    linkageType: ''
    returnType: void
    signature: void ZoneData::ZoneToCache(const RecZoneToCache::Config& config)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/rec-zonetocache.cc:437,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/rec-zonetocache.cc:437,1
    - Dst: find
      Src: /src/pdns/pdns/recursordist/rec-zonetocache.cc:438,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/rec-zonetocache.cc:438,1
    - Dst: erase
      Src: /src/pdns/pdns/recursordist/rec-zonetocache.cc:439,1
    - Dst: find
      Src: /src/pdns/pdns/recursordist/rec-zonetocache.cc:447,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/rec-zonetocache.cc:448,1
    - Dst: emplace
      Src: /src/pdns/pdns/recursordist/rec-zonetocache.cc:454,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 3
    argNames:
    - ' configs'
    - ' states'
    - mygeneration
    argTypes:
    - map<DNSName, Config>
    - map<DNSName, State>
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 457
      start: 434
    functionDepth: 0
    functionLinenumber: 434
    functionLinenumberEnd: 457
    functionName: RecZoneToCache::maintainStates
    functionSourceFile: /src/pdns/pdns/recursordist/rec-zonetocache.cc
    functionUses: 1
    functionsReached:
    - end
    - begin
    - erase
    - emplace
    - find
    linkageType: ''
    returnType: void
    signature: void RecZoneToCache::maintainStates(const map<DNSName, Config>& configs,
      map<DNSName, State>& states, uint64_t mygeneration)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: time
      Src: /src/pdns/pdns/recursordist/rec-zonetocache.cc:465,1
    - Dst: withName
      Src: /src/pdns/pdns/recursordist/rec-zonetocache.cc:468,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-zonetocache.cc:468,1
    - Dst: ZoneData::ZoneToCache
      Src: /src/pdns/pdns/recursordist/rec-zonetocache.cc:473,1
    - Dst: auto::info
      Src: /src/pdns/pdns/recursordist/rec-zonetocache.cc:475,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-zonetocache.cc:475,1
    - Dst: auto::error
      Src: /src/pdns/pdns/recursordist/rec-zonetocache.cc:478,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-zonetocache.cc:478,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-zonetocache.cc:478,1
    - Dst: auto::error
      Src: /src/pdns/pdns/recursordist/rec-zonetocache.cc:481,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/rec-zonetocache.cc:481,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-zonetocache.cc:481,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-zonetocache.cc:481,1
    - Dst: auto::info
      Src: /src/pdns/pdns/recursordist/rec-zonetocache.cc:484,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-zonetocache.cc:484,1
    - Dst: time
      Src: /src/pdns/pdns/recursordist/rec-zonetocache.cc:486,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 2
    argNames:
    - ' config'
    - ' state'
    argTypes:
    - RecZoneToCache::Config
    - RecZoneToCache::State
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 487
      start: 459
    functionDepth: 6
    functionLinenumber: 459
    functionLinenumberEnd: 487
    functionName: RecZoneToCache::ZoneToCache
    functionSourceFile: /src/pdns/pdns/recursordist/rec-zonetocache.cc
    functionUses: 3
    functionsReached:
    - Logging::Loggable
    - withName
    - time
    - what
    - auto::error
    - ZoneData::ZoneToCache
    - auto::info
    linkageType: ''
    returnType: void
    signature: void RecZoneToCache::ZoneToCache(const RecZoneToCache::Config& config,
      RecZoneToCache::State& state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::array::at
      Src: /src/pdns/pdns/recursordist/auth-catalogzone.hh:46,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - type
    argTypes:
    - enum CatalogType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 47
    functionName: '& getTypeString(enum CatalogType type)'
    functionSourceFile: /src/pdns/pdns/recursordist/auth-catalogzone.hh
    functionUses: 0
    functionsReached:
    - std::array::at
    linkageType: ''
    returnType: string
    signature: string & getTypeString(enum CatalogType type)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 49
    functionDepth: 0
    functionLinenumber: 49
    functionLinenumberEnd: 50
    functionName: CatalogInfo::CatalogInfo
    functionSourceFile: /src/pdns/pdns/recursordist/auth-catalogzone.hh
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void CatalogInfo()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CatalogInfo::fromJson
      Src: /src/pdns/pdns/recursordist/auth-catalogzone.hh:55,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 4
    argNames:
    - id
    - ' zone'
    - ' options'
    - type
    argTypes:
    - uint32_t
    - ZoneName
    - std::string
    - CatalogType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 51
    functionDepth: 2
    functionLinenumber: 51
    functionLinenumberEnd: 56
    functionName: CatalogInfo::CatalogInfo
    functionSourceFile: /src/pdns/pdns/recursordist/auth-catalogzone.hh
    functionUses: 4
    functionsReached:
    - CatalogInfo::fromJson
    linkageType: ''
    returnType: void
    signature: void CatalogInfo(uint32_t id, const ZoneName& zone, const std::string&
      options, CatalogType type)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - type
    argTypes:
    - CatalogType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 60
    functionDepth: 0
    functionLinenumber: 60
    functionLinenumberEnd: 60
    functionName: CatalogInfo::setType
    functionSourceFile: /src/pdns/pdns/recursordist/auth-catalogzone.hh
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setType(CatalogType type)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: insert
      Src: /src/pdns/pdns/recursordist/auth-catalogzone.hh:61,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' group'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 61
    functionDepth: 2
    functionLinenumber: 61
    functionLinenumberEnd: 61
    functionName: CatalogInfo::addGroup
    functionSourceFile: /src/pdns/pdns/recursordist/auth-catalogzone.hh
    functionUses: 0
    functionsReached:
    - insert
    linkageType: ''
    returnType: void
    signature: void addGroup(const std::string& group)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/auth-catalogzone.hh:64,1
    - Dst: toBase32Hex
      Src: /src/pdns/pdns/recursordist/auth-catalogzone.hh:64,1
    - Dst: hashQNameWithSalt
      Src: /src/pdns/pdns/recursordist/auth-catalogzone.hh:64,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/auth-catalogzone.hh:64,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/auth-catalogzone.hh:64,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 64
    functionDepth: 0
    functionLinenumber: 64
    functionLinenumberEnd: 64
    functionName: CatalogInfo::getUnique
    functionSourceFile: /src/pdns/pdns/recursordist/auth-catalogzone.hh
    functionUses: 1
    functionsReached:
    - std::to_string
    - hashQNameWithSalt
    - DNSName
    - toBase32Hex
    linkageType: ''
    returnType: DNSName
    signature: DNSName getUnique() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - CatalogInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 68
    functionDepth: 0
    functionLinenumber: 68
    functionLinenumberEnd: 71
    functionName: operator<(const CatalogInfo& rhs) const
    functionSourceFile: /src/pdns/pdns/recursordist/auth-catalogzone.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool operator<(const CatalogInfo& rhs) const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/recursordist/proxy-protocol.cc:35,1
    - Dst: capacity
      Src: /src/pdns/pdns/recursordist/proxy-protocol.cc:36,1
    - Dst: reserve
      Src: /src/pdns/pdns/recursordist/proxy-protocol.cc:37,1
    - Dst: append
      Src: /src/pdns/pdns/recursordist/proxy-protocol.cc:40,1
    - Dst: append
      Src: /src/pdns/pdns/recursordist/proxy-protocol.cc:42,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/recursordist/proxy-protocol.cc:42,1
    - Dst: append
      Src: /src/pdns/pdns/recursordist/proxy-protocol.cc:43,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/recursordist/proxy-protocol.cc:43,1
    - Dst: append
      Src: /src/pdns/pdns/recursordist/proxy-protocol.cc:45,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/recursordist/proxy-protocol.cc:45,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 5
    argNames:
    - command
    - protocol
    - contentLen
    - additionalSize
    - ' out'
    argTypes:
    - uint8_t
    - uint8_t
    - uint16_t
    - size_t
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 32
    functionDepth: 0
    functionLinenumber: 32
    functionLinenumberEnd: 46
    functionName: makeSimpleHeader
    functionSourceFile: /src/pdns/pdns/recursordist/proxy-protocol.cc
    functionUses: 4
    functionsReached:
    - append
    - size
    - reserve
    - capacity
    - reinterpret_cast<const char*>
    linkageType: ''
    returnType: void
    signature: void makeSimpleHeader(uint8_t command, uint8_t protocol, uint16_t contentLen,
      size_t additionalSize, std::string& out)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeSimpleHeader
      Src: /src/pdns/pdns/recursordist/proxy-protocol.cc:51,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 48
    functionDepth: 0
    functionLinenumber: 48
    functionLinenumberEnd: 53
    functionName: makeLocalProxyHeader
    functionSourceFile: /src/pdns/pdns/recursordist/proxy-protocol.cc
    functionUses: 3
    functionsReached:
    - makeSimpleHeader
    linkageType: ''
    returnType: std::string
    signature: std::string makeLocalProxyHeader()
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/proxy-protocol.cc:58,1
    - Dst: isIPv4
      Src: /src/pdns/pdns/recursordist/proxy-protocol.cc:62,1
    - Dst: isIPv4
      Src: /src/pdns/pdns/recursordist/proxy-protocol.cc:63,1
    - Dst: content::size
      Src: /src/pdns/pdns/recursordist/proxy-protocol.cc:69,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/recursordist/proxy-protocol.cc:69,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/proxy-protocol.cc:70,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/proxy-protocol.cc:70,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/recursordist/proxy-protocol.cc:70,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/proxy-protocol.cc:70,1
    - Dst: content::size
      Src: /src/pdns/pdns/recursordist/proxy-protocol.cc:70,1
    - Dst: content::size
      Src: /src/pdns/pdns/recursordist/proxy-protocol.cc:72,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/recursordist/proxy-protocol.cc:73,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/proxy-protocol.cc:74,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/proxy-protocol.cc:74,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/recursordist/proxy-protocol.cc:74,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/recursordist/proxy-protocol.cc:80,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/proxy-protocol.cc:81,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/proxy-protocol.cc:81,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/recursordist/proxy-protocol.cc:81,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/proxy-protocol.cc:81,1
    - Dst: htons
      Src: /src/pdns/pdns/recursordist/proxy-protocol.cc:84,1
    - Dst: static_cast<uint16_t>
      Src: /src/pdns/pdns/recursordist/proxy-protocol.cc:84,1
    - Dst: makeSimpleHeader
      Src: /src/pdns/pdns/recursordist/proxy-protocol.cc:86,1
    - Dst: isIPv4
      Src: /src/pdns/pdns/recursordist/proxy-protocol.cc:89,1
    - Dst: assert
      Src: /src/pdns/pdns/recursordist/proxy-protocol.cc:90,1
    - Dst: std::string::append
      Src: /src/pdns/pdns/recursordist/proxy-protocol.cc:91,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/recursordist/proxy-protocol.cc:91,1
    - Dst: assert
      Src: /src/pdns/pdns/recursordist/proxy-protocol.cc:92,1
    - Dst: std::string::append
      Src: /src/pdns/pdns/recursordist/proxy-protocol.cc:93,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/recursordist/proxy-protocol.cc:93,1
    - Dst: assert
      Src: /src/pdns/pdns/recursordist/proxy-protocol.cc:96,1
    - Dst: std::string::append
      Src: /src/pdns/pdns/recursordist/proxy-protocol.cc:97,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/recursordist/proxy-protocol.cc:97,1
    - Dst: assert
      Src: /src/pdns/pdns/recursordist/proxy-protocol.cc:98,1
    - Dst: std::string::append
      Src: /src/pdns/pdns/recursordist/proxy-protocol.cc:99,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/recursordist/proxy-protocol.cc:99,1
    - Dst: std::string::append
      Src: /src/pdns/pdns/recursordist/proxy-protocol.cc:102,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/recursordist/proxy-protocol.cc:102,1
    - Dst: std::string::append
      Src: /src/pdns/pdns/recursordist/proxy-protocol.cc:103,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/recursordist/proxy-protocol.cc:103,1
    - Dst: htons
      Src: /src/pdns/pdns/recursordist/proxy-protocol.cc:106,1
    - Dst: static_cast<uint16_t>
      Src: /src/pdns/pdns/recursordist/proxy-protocol.cc:106,1
    - Dst: content::size
      Src: /src/pdns/pdns/recursordist/proxy-protocol.cc:106,1
    - Dst: std::string::append
      Src: /src/pdns/pdns/recursordist/proxy-protocol.cc:107,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/recursordist/proxy-protocol.cc:107,1
    - Dst: std::string::append
      Src: /src/pdns/pdns/recursordist/proxy-protocol.cc:108,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/recursordist/proxy-protocol.cc:108,1
    - Dst: std::string::append
      Src: /src/pdns/pdns/recursordist/proxy-protocol.cc:109,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/recursordist/proxy-protocol.cc:109,1
    - Dst: content::data
      Src: /src/pdns/pdns/recursordist/proxy-protocol.cc:109,1
    - Dst: content::size
      Src: /src/pdns/pdns/recursordist/proxy-protocol.cc:109,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 34
    argCount: 4
    argNames:
    - tcp
    - ' source'
    - ' destination'
    - ' values'
    argTypes:
    - bool
    - ComboAddress
    - ComboAddress
    - std::vector<ProxyProtocolValue>
    assertStmts:
    - condition: (addrSize == sizeof(destination.sin6.sin6_addr.s6_addr))
      pos:
        line_end: 97
        line_start: 97
        source_file: /src/pdns/pdns/recursordist/proxy-protocol.cc
    - condition: (addrSize == sizeof(source.sin6.sin6_addr.s6_addr))
      pos:
        line_end: 95
        line_start: 95
        source_file: /src/pdns/pdns/recursordist/proxy-protocol.cc
    - condition: (addrSize == sizeof(destination.sin4.sin_addr.s_addr))
      pos:
        line_end: 91
        line_start: 91
        source_file: /src/pdns/pdns/recursordist/proxy-protocol.cc
    - condition: (addrSize == sizeof(source.sin4.sin_addr.s_addr))
      pos:
        line_end: 89
        line_start: 89
        source_file: /src/pdns/pdns/recursordist/proxy-protocol.cc
    constantsTouched: []
    func_position:
      end: 113
      start: 55
    functionDepth: 0
    functionLinenumber: 55
    functionLinenumberEnd: 113
    functionName: makeProxyHeader
    functionSourceFile: /src/pdns/pdns/recursordist/proxy-protocol.cc
    functionUses: 20
    functionsReached:
    - pdns::max
    - std::to_string
    - std::string::append
    - std::runtime_error
    - assert
    - makeSimpleHeader
    - isIPv4
    - static_cast<uint16_t>
    - reinterpret_cast<const char*>
    - content::data
    - content::size
    - htons
    linkageType: ''
    returnType: std::string
    signature: std::string makeProxyHeader(bool tcp, const ComboAddress& source, const
      ComboAddress& destination, const std::vector<ProxyProtocolValue>& values)
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/recursordist/proxy-protocol.cc:126,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/proxy-protocol.cc:128,1
    - Dst: std::memcmp
      Src: /src/pdns/pdns/recursordist/proxy-protocol.cc:131,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/proxy-protocol.cc:131,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/proxy-protocol.cc:131,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/proxy-protocol.cc:131,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/proxy-protocol.cc:136,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/proxy-protocol.cc:146,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/recursordist/proxy-protocol.cc:194,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/proxy-protocol.cc:194,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/recursordist/proxy-protocol.cc:194,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/proxy-protocol.cc:194,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/proxy-protocol.cc:204,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/proxy-protocol.cc:205,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 64
    argCount: 5
    argNames:
    - ' header'
    - proxy
    - tcp
    - addrSizeOut
    - protocolOut
    argTypes:
    - Container
    - bool*
    - bool*
    - size_t*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 209
      start: 118
    functionDepth: 0
    functionLinenumber: 118
    functionLinenumberEnd: 209
    functionName: isProxyHeaderComplete
    functionSourceFile: /src/pdns/pdns/recursordist/proxy-protocol.cc
    functionUses: 6
    functionsReached:
    - static_cast<uint8_t>
    - at
    - size
    - std::memcmp
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t isProxyHeaderComplete(const Container& header, bool* proxy,
      bool* tcp, size_t* addrSizeOut, uint8_t* protocolOut)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: isProxyHeaderComplete
      Src: /src/pdns/pdns/recursordist/proxy-protocol.cc:218,1
    - Dst: makeComboAddressFromRaw
      Src: /src/pdns/pdns/recursordist/proxy-protocol.cc:226,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/recursordist/proxy-protocol.cc:226,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/proxy-protocol.cc:226,1
    - Dst: makeComboAddressFromRaw
      Src: /src/pdns/pdns/recursordist/proxy-protocol.cc:228,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/recursordist/proxy-protocol.cc:228,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/proxy-protocol.cc:228,1
    - Dst: setPort
      Src: /src/pdns/pdns/recursordist/proxy-protocol.cc:230,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/recursordist/proxy-protocol.cc:230,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/proxy-protocol.cc:230,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/recursordist/proxy-protocol.cc:230,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/proxy-protocol.cc:230,1
    - Dst: setPort
      Src: /src/pdns/pdns/recursordist/proxy-protocol.cc:232,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/recursordist/proxy-protocol.cc:232,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/proxy-protocol.cc:232,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/recursordist/proxy-protocol.cc:232,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/proxy-protocol.cc:232,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/recursordist/proxy-protocol.cc:239,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/proxy-protocol.cc:239,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/recursordist/proxy-protocol.cc:241,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/proxy-protocol.cc:241,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/recursordist/proxy-protocol.cc:241,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/proxy-protocol.cc:241,1
    - Dst: push_back
      Src: /src/pdns/pdns/recursordist/proxy-protocol.cc:249,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/proxy-protocol.cc:249,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/recursordist/proxy-protocol.cc:249,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/proxy-protocol.cc:249,1
    - Dst: push_back
      Src: /src/pdns/pdns/recursordist/proxy-protocol.cc:253,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 29
    argCount: 6
    argNames:
    - ' header'
    - ' proxy'
    - ' source'
    - ' destination'
    - ' tcp'
    - ' values'
    argTypes:
    - Container
    - bool
    - ComboAddress
    - ComboAddress
    - bool
    - std::vector<ProxyProtocolValue>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 260
      start: 214
    functionDepth: 0
    functionLinenumber: 214
    functionLinenumberEnd: 260
    functionName: parseProxyHeader
    functionSourceFile: /src/pdns/pdns/recursordist/proxy-protocol.cc
    functionUses: 17
    functionsReached:
    - isProxyHeaderComplete
    - setPort
    - push_back
    - makeComboAddressFromRaw
    - static_cast<uint8_t>
    - reinterpret_cast<const char*>
    - std::string
    - at
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t parseProxyHeader(const Container& header, bool& proxy, ComboAddress&
      source, ComboAddress& destination, bool& tcp, std::vector<ProxyProtocolValue>&
      values)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 22
      start: 22
    functionDepth: 0
    functionLinenumber: 22
    functionLinenumberEnd: 22
    functionName: noinit_adaptor
    functionSourceFile: /src/pdns/pdns/recursordist/noinitvector.hh
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void noinit_adaptor()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::forward<U>
      Src: /src/pdns/pdns/recursordist/noinitvector.hh:25,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 1
    argNames:
    - ' u'
    argTypes:
    - U
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 25
      start: 25
    functionDepth: 0
    functionLinenumber: 25
    functionLinenumberEnd: 25
    functionName: noinit_adaptor
    functionSourceFile: /src/pdns/pdns/recursordist/noinitvector.hh
    functionUses: 2
    functionsReached:
    - std::forward<U>
    linkageType: ''
    returnType: void
    signature: void noinit_adaptor(U&& u) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<const U&>
      Src: /src/pdns/pdns/recursordist/noinitvector.hh:28,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' u'
    argTypes:
    - noinit_adaptor<U>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 28
      start: 28
    functionDepth: 0
    functionLinenumber: 28
    functionLinenumberEnd: 28
    functionName: noinit_adaptor
    functionSourceFile: /src/pdns/pdns/recursordist/noinitvector.hh
    functionUses: 2
    functionsReached:
    - static_cast<const U&>
    linkageType: ''
    returnType: void
    signature: void noinit_adaptor(const noinit_adaptor<U>& u) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: U::U
      Src: /src/pdns/pdns/recursordist/noinitvector.hh:32,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - p
    argTypes:
    - U*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 33
      start: 31
    functionDepth: 0
    functionLinenumber: 31
    functionLinenumberEnd: 33
    functionName: construct
    functionSourceFile: /src/pdns/pdns/recursordist/noinitvector.hh
    functionUses: 0
    functionsReached:
    - U::U
    linkageType: ''
    returnType: void
    signature: void construct(U* p)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::forward<V>
      Src: /src/pdns/pdns/recursordist/noinitvector.hh:37,1
    - Dst: std::forward<Args>
      Src: /src/pdns/pdns/recursordist/noinitvector.hh:37,1
    - Dst: U::U
      Src: /src/pdns/pdns/recursordist/noinitvector.hh:37,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 2
    argCount: 2
    argNames:
    - p
    - ' v'
    argTypes:
    - U*
    - V
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 36
    functionDepth: 0
    functionLinenumber: 36
    functionLinenumberEnd: 38
    functionName: construct
    functionSourceFile: /src/pdns/pdns/recursordist/noinitvector.hh
    functionUses: 0
    functionsReached:
    - std::forward<V>
    - U::U
    - std::forward<Args>
    linkageType: ''
    returnType: void
    signature: void construct(U* p, V&& v, Args&&... args)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: U*::~U
      Src: /src/pdns/pdns/recursordist/noinitvector.hh:42,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - p
    argTypes:
    - U*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 41
    functionDepth: 0
    functionLinenumber: 41
    functionLinenumberEnd: 43
    functionName: destroy
    functionSourceFile: /src/pdns/pdns/recursordist/noinitvector.hh
    functionUses: 8
    functionsReached:
    - U*::~U
    linkageType: ''
    returnType: void
    signature: void destroy(U* p)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<const T&>
      Src: /src/pdns/pdns/recursordist/noinitvector.hh:50,1
    - Dst: static_cast<const U&>
      Src: /src/pdns/pdns/recursordist/noinitvector.hh:50,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' lhs'
    - ' rhs'
    argTypes:
    - noinit_adaptor<T>
    - noinit_adaptor<U>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 47
    functionDepth: 0
    functionLinenumber: 47
    functionLinenumberEnd: 51
    functionName: "operator==(const noinit_adaptor<T>& lhs,\n                       const
      noinit_adaptor<U>& rhs) noexcept"
    functionSourceFile: /src/pdns/pdns/recursordist/noinitvector.hh
    functionUses: 0
    functionsReached:
    - static_cast<const U&>
    - static_cast<const T&>
    linkageType: ''
    returnType: bool
    signature: "bool operator==(const noinit_adaptor<T>& lhs,\n                       const
      noinit_adaptor<U>& rhs) noexcept"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' lhs'
    - ' rhs'
    argTypes:
    - noinit_adaptor<T>
    - noinit_adaptor<U>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 54
    functionDepth: 0
    functionLinenumber: 54
    functionLinenumberEnd: 58
    functionName: "operator!=(const noinit_adaptor<T>& lhs,\n                       const
      noinit_adaptor<U>& rhs) noexcept"
    functionSourceFile: /src/pdns/pdns/recursordist/noinitvector.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: "bool operator!=(const noinit_adaptor<T>& lhs,\n                       const
      noinit_adaptor<U>& rhs) noexcept"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: noinit_adaptor
      Src: /src/pdns/pdns/recursordist/noinitvector.hh:63,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' a'
    argTypes:
    - Allocator
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 61
    functionDepth: 0
    functionLinenumber: 61
    functionLinenumberEnd: 64
    functionName: noinit_adapt
    functionSourceFile: /src/pdns/pdns/recursordist/noinitvector.hh
    functionUses: 0
    functionsReached:
    - noinit_adaptor
    linkageType: ''
    returnType: noinit_adaptor<Allocator>
    signature: noinit_adaptor<Allocator> noinit_adapt(const Allocator& a) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: t_uuidGenerator
      Src: /src/pdns/pdns/recursordist/uuid-utils.cc:45,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 41
    functionDepth: 0
    functionLinenumber: 41
    functionLinenumberEnd: 46
    functionName: getUniqueID
    functionSourceFile: /src/pdns/pdns/recursordist/uuid-utils.cc
    functionUses: 22
    functionsReached:
    - t_uuidGenerator
    linkageType: ''
    returnType: boost::uuids::uuid
    signature: boost::uuids::uuid getUniqueID()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: gen
      Src: /src/pdns/pdns/recursordist/uuid-utils.cc:51,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' str'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 48
    functionDepth: 0
    functionLinenumber: 48
    functionLinenumberEnd: 52
    functionName: getUniqueID
    functionSourceFile: /src/pdns/pdns/recursordist/uuid-utils.cc
    functionUses: 22
    functionsReached:
    - gen
    linkageType: ''
    returnType: boost::uuids::uuid
    signature: boost::uuids::uuid getUniqueID(const std::string& str)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - size
    - frame
    argTypes:
    - size_t
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 47
    functionDepth: 0
    functionLinenumber: 47
    functionLinenumberEnd: 50
    functionName: CircularWriteBuffer::CircularWriteBuffer
    functionSourceFile: /src/pdns/pdns/recursordist/remote_logger.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void CircularWriteBuffer(size_t size, uint8_t frame)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 74
    functionDepth: 0
    functionLinenumber: 74
    functionLinenumberEnd: 74
    functionName: RemoteLoggerInterface::RemoteLoggerInterface
    functionSourceFile: /src/pdns/pdns/recursordist/remote_logger.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void RemoteLoggerInterface()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 75
    functionDepth: 0
    functionLinenumber: 75
    functionLinenumberEnd: 75
    functionName: RemoteLoggerInterface::RemoteLoggerInterface
    functionSourceFile: /src/pdns/pdns/recursordist/remote_logger.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void RemoteLoggerInterface(const RemoteLoggerInterface&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 76
    functionDepth: 0
    functionLinenumber: 76
    functionLinenumberEnd: 76
    functionName: RemoteLoggerInterface::RemoteLoggerInterface
    functionSourceFile: /src/pdns/pdns/recursordist/remote_logger.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void RemoteLoggerInterface(RemoteLoggerInterface&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 77
    functionDepth: 0
    functionLinenumber: 77
    functionLinenumberEnd: 77
    functionName: '& operator=(const RemoteLoggerInterface&)'
    functionSourceFile: /src/pdns/pdns/recursordist/remote_logger.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: RemoteLoggerInterface
    signature: RemoteLoggerInterface & operator=(const RemoteLoggerInterface&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 78
    functionDepth: 0
    functionLinenumber: 78
    functionLinenumberEnd: 78
    functionName: '& operator=(RemoteLoggerInterface&&)'
    functionSourceFile: /src/pdns/pdns/recursordist/remote_logger.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: RemoteLoggerInterface
    signature: RemoteLoggerInterface & operator=(RemoteLoggerInterface&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 79
    functionDepth: 0
    functionLinenumber: 79
    functionLinenumberEnd: 79
    functionName: ~RemoteLoggerInterface()
    functionSourceFile: /src/pdns/pdns/recursordist/remote_logger.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~RemoteLoggerInterface()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 85
    functionDepth: 0
    functionLinenumber: 85
    functionLinenumberEnd: 85
    functionName: RemoteLoggerInterface::logQueries
    functionSourceFile: /src/pdns/pdns/recursordist/remote_logger.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool logQueries() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 86
    functionDepth: 0
    functionLinenumber: 86
    functionLinenumberEnd: 86
    functionName: RemoteLoggerInterface::logResponses
    functionSourceFile: /src/pdns/pdns/recursordist/remote_logger.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool logResponses() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 87
    functionDepth: 0
    functionLinenumber: 87
    functionLinenumberEnd: 87
    functionName: RemoteLoggerInterface::logNODs
    functionSourceFile: /src/pdns/pdns/recursordist/remote_logger.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool logNODs() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 88
    functionDepth: 0
    functionLinenumber: 88
    functionLinenumberEnd: 88
    functionName: RemoteLoggerInterface::logUDRs
    functionSourceFile: /src/pdns/pdns/recursordist/remote_logger.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool logUDRs() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - flag
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 89
    functionDepth: 0
    functionLinenumber: 89
    functionLinenumberEnd: 89
    functionName: RemoteLoggerInterface::setLogQueries
    functionSourceFile: /src/pdns/pdns/recursordist/remote_logger.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setLogQueries(bool flag)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - flag
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 90
    functionDepth: 0
    functionLinenumber: 90
    functionLinenumberEnd: 90
    functionName: RemoteLoggerInterface::setLogResponses
    functionSourceFile: /src/pdns/pdns/recursordist/remote_logger.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setLogResponses(bool flag)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - flag
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 91
    functionDepth: 0
    functionLinenumber: 91
    functionLinenumberEnd: 91
    functionName: RemoteLoggerInterface::setLogNODs
    functionSourceFile: /src/pdns/pdns/recursordist/remote_logger.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setLogNODs(bool flag)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - flag
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 92
    functionDepth: 0
    functionLinenumber: 92
    functionLinenumberEnd: 92
    functionName: RemoteLoggerInterface::setLogUDRs
    functionSourceFile: /src/pdns/pdns/recursordist/remote_logger.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setLogUDRs(bool flag)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - Stats
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 101
    functionDepth: 0
    functionLinenumber: 101
    functionLinenumberEnd: 108
    functionName: '& operator+=(const Stats& rhs)'
    functionSourceFile: /src/pdns/pdns/recursordist/remote_logger.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Stats
    signature: Stats & operator+=(const Stats& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 133
      start: 133
    functionDepth: 0
    functionLinenumber: 133
    functionLinenumberEnd: 133
    functionName: RemoteLogger::RemoteLogger
    functionSourceFile: /src/pdns/pdns/recursordist/remote_logger.hh
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void RemoteLogger(const RemoteLogger&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 134
      start: 134
    functionDepth: 0
    functionLinenumber: 134
    functionLinenumberEnd: 134
    functionName: RemoteLogger::RemoteLogger
    functionSourceFile: /src/pdns/pdns/recursordist/remote_logger.hh
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void RemoteLogger(RemoteLogger&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 135
      start: 135
    functionDepth: 0
    functionLinenumber: 135
    functionLinenumberEnd: 135
    functionName: '& operator=(const RemoteLogger&)'
    functionSourceFile: /src/pdns/pdns/recursordist/remote_logger.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: RemoteLogger
    signature: RemoteLogger & operator=(const RemoteLogger&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 136
      start: 136
    functionDepth: 0
    functionLinenumber: 136
    functionLinenumberEnd: 136
    functionName: '& operator=(RemoteLogger&&)'
    functionSourceFile: /src/pdns/pdns/recursordist/remote_logger.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: RemoteLogger
    signature: RemoteLogger & operator=(RemoteLogger&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/recursordist/remote_logger.hh:146,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 144
    functionDepth: 0
    functionLinenumber: 144
    functionLinenumberEnd: 147
    functionName: RemoteLogger::address
    functionSourceFile: /src/pdns/pdns/recursordist/remote_logger.hh
    functionUses: 0
    functionsReached:
    - toStringWithPort
    linkageType: ''
    returnType: std::string
    signature: std::string address() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::max
      Src: /src/pdns/pdns/recursordist/remote_logger.hh:152,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/recursordist/remote_logger.hh:152,1
    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: RemoteLogger::maxSize
    functionSourceFile: /src/pdns/pdns/recursordist/remote_logger.hh
    functionUses: 0
    functionsReached:
    - pdns::max
    linkageType: ''
    returnType: size_t
    signature: size_t maxSize() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 157
      start: 154
    functionDepth: 0
    functionLinenumber: 154
    functionLinenumberEnd: 157
    functionName: RemoteLogger::name
    functionSourceFile: /src/pdns/pdns/recursordist/remote_logger.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string name() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/remote_logger.hh:160,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/recursordist/remote_logger.hh:161,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/remote_logger.hh:161,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/remote_logger.hh:161,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 162
      start: 158
    functionDepth: 0
    functionLinenumber: 158
    functionLinenumberEnd: 162
    functionName: RemoteLogger::toString
    functionSourceFile: /src/pdns/pdns/recursordist/remote_logger.hh
    functionUses: 0
    functionsReached:
    - toStringWithPort
    - std::to_string
    - lock
    linkageType: ''
    returnType: std::string
    signature: std::string toString() override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/remote_logger.hh:166,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 167
      start: 164
    functionDepth: 0
    functionLinenumber: 164
    functionLinenumberEnd: 167
    functionName: RemoteLogger::getStats
    functionSourceFile: /src/pdns/pdns/recursordist/remote_logger.hh
    functionUses: 0
    functionsReached:
    - lock
    linkageType: ''
    returnType: RemoteLoggerInterface::Stats
    signature: RemoteLoggerInterface::Stats getStats() override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 172
      start: 169
    functionDepth: 0
    functionLinenumber: 169
    functionLinenumberEnd: 172
    functionName: RemoteLogger::stop
    functionSourceFile: /src/pdns/pdns/recursordist/remote_logger.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void stop()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sodium_memzero
      Src: /src/pdns/pdns/recursordist/credentials.cc:62,1
    - Dst: explicit_bzero
      Src: /src/pdns/pdns/recursordist/credentials.cc:64,1
    - Dst: explicit_memset
      Src: /src/pdns/pdns/recursordist/credentials.cc:66,1
    - Dst: gnutls_memset
      Src: /src/pdns/pdns/recursordist/credentials.cc:68,1
    - Dst: reinterpret_cast<volatile unsigned char*>
      Src: /src/pdns/pdns/recursordist/credentials.cc:77,1
    - Dst: memset
      Src: /src/pdns/pdns/recursordist/credentials.cc:79,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - data
    - size
    argTypes:
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 59
    functionDepth: 0
    functionLinenumber: 59
    functionLinenumberEnd: 82
    functionName: SensitiveData::reallyClearContent
    functionSourceFile: /src/pdns/pdns/recursordist/credentials.cc
    functionUses: 7
    functionsReached:
    - explicit_memset
    - gnutls_memset
    - memset
    - reinterpret_cast<volatile unsigned char*>
    - sodium_memzero
    - explicit_bzero
    linkageType: ''
    returnType: void
    signature: void SensitiveData::reallyClearContent(void* data, size_t size) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/credentials.cc:85,1
    - Dst: SensitiveData::clear
      Src: /src/pdns/pdns/recursordist/credentials.cc:89,1
    - Dst: SensitiveData::reallyClearContent
      Src: /src/pdns/pdns/recursordist/credentials.cc:92,1
    - Dst: data
      Src: /src/pdns/pdns/recursordist/credentials.cc:92,1
    - Dst: capacity
      Src: /src/pdns/pdns/recursordist/credentials.cc:92,1
    - Dst: sodium_mlock
      Src: /src/pdns/pdns/recursordist/credentials.cc:95,1
    - Dst: data
      Src: /src/pdns/pdns/recursordist/credentials.cc:95,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/credentials.cc:95,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ' data'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 84
    functionDepth: 0
    functionLinenumber: 84
    functionLinenumberEnd: 97
    functionName: SensitiveData::SensitiveData
    functionSourceFile: /src/pdns/pdns/recursordist/credentials.cc
    functionUses: 0
    functionsReached:
    - std::move
    - SensitiveData::clear
    - sodium_mlock
    - size
    - capacity
    - data
    - SensitiveData::reallyClearContent
    linkageType: ''
    returnType: void
    signature: void SensitiveData::SensitiveData(std::string&& data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/credentials.cc:101,1
    - Dst: clear
      Src: /src/pdns/pdns/recursordist/credentials.cc:102,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - SensitiveData
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 104
      start: 99
    functionDepth: 1
    functionLinenumber: 99
    functionLinenumberEnd: 104
    functionName: '& SensitiveData::operator=(SensitiveData&& rhs) noexcept'
    functionSourceFile: /src/pdns/pdns/recursordist/credentials.cc
    functionUses: 0
    functionsReached:
    - clear
    - std::move
    linkageType: ''
    returnType: SensitiveData
    signature: SensitiveData & SensitiveData::operator=(SensitiveData&& rhs) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: resize
      Src: /src/pdns/pdns/recursordist/credentials.cc:108,1
    - Dst: sodium_mlock
      Src: /src/pdns/pdns/recursordist/credentials.cc:110,1
    - Dst: data
      Src: /src/pdns/pdns/recursordist/credentials.cc:110,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/credentials.cc:110,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - bytes
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 112
      start: 106
    functionDepth: 2
    functionLinenumber: 106
    functionLinenumberEnd: 112
    functionName: SensitiveData::SensitiveData
    functionSourceFile: /src/pdns/pdns/recursordist/credentials.cc
    functionUses: 0
    functionsReached:
    - size
    - resize
    - sodium_mlock
    - data
    linkageType: ''
    returnType: void
    signature: void SensitiveData::SensitiveData(size_t bytes)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SensitiveData::clear
      Src: /src/pdns/pdns/recursordist/credentials.cc:116,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 114
    functionDepth: 0
    functionLinenumber: 114
    functionLinenumberEnd: 117
    functionName: SensitiveData::~SensitiveData()
    functionSourceFile: /src/pdns/pdns/recursordist/credentials.cc
    functionUses: 0
    functionsReached:
    - SensitiveData::clear
    linkageType: ''
    returnType: void
    signature: void SensitiveData::~SensitiveData()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SensitiveData::reallyClearContent
      Src: /src/pdns/pdns/recursordist/credentials.cc:124,1
    - Dst: data
      Src: /src/pdns/pdns/recursordist/credentials.cc:124,1
    - Dst: capacity
      Src: /src/pdns/pdns/recursordist/credentials.cc:124,1
    - Dst: sodium_munlock
      Src: /src/pdns/pdns/recursordist/credentials.cc:125,1
    - Dst: data
      Src: /src/pdns/pdns/recursordist/credentials.cc:125,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/credentials.cc:125,1
    - Dst: SensitiveData::clear
      Src: /src/pdns/pdns/recursordist/credentials.cc:127,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 119
    functionDepth: 0
    functionLinenumber: 119
    functionLinenumberEnd: 128
    functionName: SensitiveData::clear
    functionSourceFile: /src/pdns/pdns/recursordist/credentials.cc
    functionUses: 12
    functionsReached:
    - SensitiveData::clear
    - size
    - capacity
    - data
    - SensitiveData::reallyClearContent
    - sodium_munlock
    linkageType: ''
    returnType: void
    signature: void SensitiveData::clear()
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: std::unique_ptr<EVP_PKEY_CTX, void (*)(EVP_PKEY_CTX*)>
      Src: /src/pdns/pdns/recursordist/credentials.cc:133,1
    - Dst: EVP_PKEY_CTX_new_id
      Src: /src/pdns/pdns/recursordist/credentials.cc:133,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/credentials.cc:135,1
    - Dst: EVP_PKEY_derive_init
      Src: /src/pdns/pdns/recursordist/credentials.cc:138,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/credentials.cc:138,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/credentials.cc:139,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/recursordist/credentials.cc:145,1
    - Dst: data
      Src: /src/pdns/pdns/recursordist/credentials.cc:145,1
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/recursordist/credentials.cc:147,1
    - Dst: data
      Src: /src/pdns/pdns/recursordist/credentials.cc:147,1
    - Dst: EVP_PKEY_CTX_set1_pbe_pass
      Src: /src/pdns/pdns/recursordist/credentials.cc:149,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/credentials.cc:149,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/credentials.cc:149,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/credentials.cc:150,1
    - Dst: EVP_PKEY_CTX_set1_scrypt_salt
      Src: /src/pdns/pdns/recursordist/credentials.cc:153,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/credentials.cc:153,1
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/recursordist/credentials.cc:153,1
    - Dst: data
      Src: /src/pdns/pdns/recursordist/credentials.cc:153,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/credentials.cc:153,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/credentials.cc:154,1
    - Dst: EVP_PKEY_CTX_set_scrypt_N
      Src: /src/pdns/pdns/recursordist/credentials.cc:158,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/credentials.cc:158,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/credentials.cc:159,1
    - Dst: EVP_PKEY_CTX_set_scrypt_r
      Src: /src/pdns/pdns/recursordist/credentials.cc:162,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/credentials.cc:162,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/credentials.cc:163,1
    - Dst: EVP_PKEY_CTX_set_scrypt_p
      Src: /src/pdns/pdns/recursordist/credentials.cc:166,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/credentials.cc:166,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/credentials.cc:167,1
    - Dst: std::string::resize
      Src: /src/pdns/pdns/recursordist/credentials.cc:171,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/recursordist/credentials.cc:172,1
    - Dst: EVP_PKEY_derive
      Src: /src/pdns/pdns/recursordist/credentials.cc:175,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/credentials.cc:175,1
    - Dst: reinterpret_cast<unsigned char*>
      Src: /src/pdns/pdns/recursordist/credentials.cc:175,1
    - Dst: std::string::data
      Src: /src/pdns/pdns/recursordist/credentials.cc:175,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/credentials.cc:176,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/credentials.cc:181,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 28
    argCount: 5
    argNames:
    - ' password'
    - ' salt'
    - workFactor
    - parallelFactor
    - blockSize
    argTypes:
    - std::string
    - std::string
    - uint64_t
    - uint64_t
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 183
      start: 130
    functionDepth: 2
    functionLinenumber: 130
    functionLinenumberEnd: 183
    functionName: hashPasswordInternal
    functionSourceFile: /src/pdns/pdns/recursordist/credentials.cc
    functionUses: 8
    functionsReached:
    - EVP_PKEY_CTX_set_scrypt_N
    - EVP_PKEY_CTX_set1_scrypt_salt
    - std::string::size
    - EVP_PKEY_CTX_set_scrypt_p
    - size
    - reinterpret_cast<unsigned char*>
    - std::unique_ptr<EVP_PKEY_CTX, void (*)(EVP_PKEY_CTX*)>
    - reinterpret_cast<const unsigned char*>
    - EVP_PKEY_CTX_new_id
    - EVP_PKEY_CTX_set1_pbe_pass
    - EVP_PKEY_derive
    - auto::get
    - std::runtime_error
    - std::string::data
    - std::string::resize
    - reinterpret_cast<const char*>
    - EVP_PKEY_CTX_set_scrypt_r
    - EVP_PKEY_derive_init
    - data
    linkageType: ''
    returnType: std::string
    signature: std::string hashPasswordInternal([[maybe_unused]] const std::string&
      password, [[maybe_unused]] const std::string& salt, [[maybe_unused]] uint64_t
      workFactor, [[maybe_unused]] uint64_t parallelFactor, [[maybe_unused]] uint64_t
      blockSize)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::string::resize
      Src: /src/pdns/pdns/recursordist/credentials.cc:190,1
    - Dst: RAND_bytes
      Src: /src/pdns/pdns/recursordist/credentials.cc:193,1
    - Dst: reinterpret_cast<unsigned char*>
      Src: /src/pdns/pdns/recursordist/credentials.cc:193,1
    - Dst: std::string::data
      Src: /src/pdns/pdns/recursordist/credentials.cc:193,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/recursordist/credentials.cc:193,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/recursordist/credentials.cc:193,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/credentials.cc:194,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/credentials.cc:199,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 201
      start: 185
    functionDepth: 2
    functionLinenumber: 185
    functionLinenumberEnd: 201
    functionName: generateRandomSalt
    functionSourceFile: /src/pdns/pdns/recursordist/credentials.cc
    functionUses: 4
    functionsReached:
    - RAND_bytes
    - std::runtime_error
    - std::string::data
    - reinterpret_cast<unsigned char*>
    - std::string::resize
    - std::string::size
    - static_cast<int>
    linkageType: ''
    returnType: std::string
    signature: std::string generateRandomSalt()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/credentials.cc:207,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/credentials.cc:207,1
    - Dst: std::string::reserve
      Src: /src/pdns/pdns/recursordist/credentials.cc:211,1
    - Dst: std::string::append
      Src: /src/pdns/pdns/recursordist/credentials.cc:213,1
    - Dst: std::string::append
      Src: /src/pdns/pdns/recursordist/credentials.cc:214,1
    - Dst: std::string::append
      Src: /src/pdns/pdns/recursordist/credentials.cc:215,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/credentials.cc:215,1
    - Dst: static_cast<uint64_t>
      Src: /src/pdns/pdns/recursordist/credentials.cc:215,1
    - Dst: std::log2
      Src: /src/pdns/pdns/recursordist/credentials.cc:215,1
    - Dst: std::string::append
      Src: /src/pdns/pdns/recursordist/credentials.cc:216,1
    - Dst: std::string::append
      Src: /src/pdns/pdns/recursordist/credentials.cc:217,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/credentials.cc:217,1
    - Dst: std::string::append
      Src: /src/pdns/pdns/recursordist/credentials.cc:218,1
    - Dst: std::string::append
      Src: /src/pdns/pdns/recursordist/credentials.cc:219,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/credentials.cc:219,1
    - Dst: std::string::append
      Src: /src/pdns/pdns/recursordist/credentials.cc:220,1
    - Dst: generateRandomSalt
      Src: /src/pdns/pdns/recursordist/credentials.cc:221,1
    - Dst: std::string::append
      Src: /src/pdns/pdns/recursordist/credentials.cc:222,1
    - Dst: Base64Encode
      Src: /src/pdns/pdns/recursordist/credentials.cc:222,1
    - Dst: std::string::append
      Src: /src/pdns/pdns/recursordist/credentials.cc:223,1
    - Dst: hashPasswordInternal
      Src: /src/pdns/pdns/recursordist/credentials.cc:225,1
    - Dst: std::string::append
      Src: /src/pdns/pdns/recursordist/credentials.cc:227,1
    - Dst: Base64Encode
      Src: /src/pdns/pdns/recursordist/credentials.cc:227,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/credentials.cc:231,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 4
    argNames:
    - ' password'
    - workFactor
    - parallelFactor
    - blockSize
    argTypes:
    - std::string
    - uint64_t
    - uint64_t
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 233
      start: 203
    functionDepth: 0
    functionLinenumber: 203
    functionLinenumberEnd: 233
    functionName: hashPassword
    functionSourceFile: /src/pdns/pdns/recursordist/credentials.cc
    functionUses: 10
    functionsReached:
    - std::string::append
    - std::to_string
    - std::string::reserve
    - std::runtime_error
    - std::log2
    - static_cast<uint64_t>
    - generateRandomSalt
    - hashPasswordInternal
    - Base64Encode
    linkageType: ''
    returnType: std::string
    signature: std::string hashPassword([[maybe_unused]] const std::string& password,
      [[maybe_unused]] uint64_t workFactor, [[maybe_unused]] uint64_t parallelFactor,
      [[maybe_unused]] uint64_t blockSize)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hashPassword
      Src: /src/pdns/pdns/recursordist/credentials.cc:238,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/credentials.cc:240,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 3
    argCount: 1
    argNames:
    - ' password'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 242
      start: 235
    functionDepth: 0
    functionLinenumber: 235
    functionLinenumberEnd: 242
    functionName: hashPassword
    functionSourceFile: /src/pdns/pdns/recursordist/credentials.cc
    functionUses: 11
    functionsReached:
    - hashPassword
    - std::runtime_error
    linkageType: ''
    returnType: std::string
    signature: std::string hashPassword([[maybe_unused]] const std::string& password)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hashPasswordInternal
      Src: /src/pdns/pdns/recursordist/credentials.cc:247,1
    - Dst: constantTimeStringEquals
      Src: /src/pdns/pdns/recursordist/credentials.cc:248,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/credentials.cc:250,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 3
    argCount: 6
    argNames:
    - ' binaryHash'
    - ' salt'
    - workFactor
    - parallelFactor
    - blockSize
    - ' binaryPassword'
    argTypes:
    - std::string
    - std::string
    - uint64_t
    - uint64_t
    - uint64_t
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 252
      start: 244
    functionDepth: 0
    functionLinenumber: 244
    functionLinenumberEnd: 252
    functionName: verifyPassword
    functionSourceFile: /src/pdns/pdns/recursordist/credentials.cc
    functionUses: 6
    functionsReached:
    - constantTimeStringEquals
    - hashPasswordInternal
    - std::runtime_error
    linkageType: ''
    returnType: bool
    signature: bool verifyPassword([[maybe_unused]] const std::string& binaryHash,
      [[maybe_unused]] const std::string& salt, [[maybe_unused]] uint64_t workFactor,
      [[maybe_unused]] uint64_t parallelFactor, [[maybe_unused]] uint64_t blockSize,
      [[maybe_unused]] const std::string& binaryPassword)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: find
      Src: /src/pdns/pdns/recursordist/credentials.cc:258,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/credentials.cc:258,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/credentials.cc:259,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/credentials.cc:260,1
    - Dst: substr
      Src: /src/pdns/pdns/recursordist/credentials.cc:263,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/credentials.cc:263,1
    - Dst: std::vector::reserve
      Src: /src/pdns/pdns/recursordist/credentials.cc:265,1
    - Dst: stringtok
      Src: /src/pdns/pdns/recursordist/credentials.cc:266,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/recursordist/credentials.cc:267,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/credentials.cc:268,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/credentials.cc:268,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/recursordist/credentials.cc:268,1
    - Dst: boost::starts_with
      Src: /src/pdns/pdns/recursordist/credentials.cc:271,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/recursordist/credentials.cc:271,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/credentials.cc:272,1
    - Dst: boost::starts_with
      Src: /src/pdns/pdns/recursordist/credentials.cc:275,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/recursordist/credentials.cc:275,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/credentials.cc:276,1
    - Dst: boost::starts_with
      Src: /src/pdns/pdns/recursordist/credentials.cc:279,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/recursordist/credentials.cc:279,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/credentials.cc:280,1
    - Dst: find
      Src: /src/pdns/pdns/recursordist/credentials.cc:284,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/credentials.cc:285,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/credentials.cc:286,1
    - Dst: pdns::checked_stoi<uint64_t>
      Src: /src/pdns/pdns/recursordist/credentials.cc:290,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/recursordist/credentials.cc:290,1
    - Dst: static_cast<uint64_t>
      Src: /src/pdns/pdns/recursordist/credentials.cc:291,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/credentials.cc:293,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/credentials.cc:293,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/credentials.cc:293,1
    - Dst: pdns::checked_stoi<uint64_t>
      Src: /src/pdns/pdns/recursordist/credentials.cc:296,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/recursordist/credentials.cc:296,1
    - Dst: pdns::checked_stoi<uint64_t>
      Src: /src/pdns/pdns/recursordist/credentials.cc:297,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/recursordist/credentials.cc:297,1
    - Dst: substr
      Src: /src/pdns/pdns/recursordist/credentials.cc:299,1
    - Dst: reserve
      Src: /src/pdns/pdns/recursordist/credentials.cc:300,1
    - Dst: B64Decode
      Src: /src/pdns/pdns/recursordist/credentials.cc:301,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/credentials.cc:303,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/credentials.cc:304,1
    - Dst: reserve
      Src: /src/pdns/pdns/recursordist/credentials.cc:307,1
    - Dst: B64Decode
      Src: /src/pdns/pdns/recursordist/credentials.cc:308,1
    - Dst: substr
      Src: /src/pdns/pdns/recursordist/credentials.cc:308,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/credentials.cc:310,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/credentials.cc:311,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/credentials.cc:315,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 42
    argCount: 6
    argNames:
    - ' hash'
    - ' salt'
    - ' hashedPassword'
    - ' workFactor'
    - ' parallelFactor'
    - ' blockSize'
    argTypes:
    - std::string
    - std::string
    - std::string
    - uint64_t
    - uint64_t
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 318
      start: 255
    functionDepth: 0
    functionLinenumber: 255
    functionLinenumberEnd: 318
    functionName: parseHashed
    functionSourceFile: /src/pdns/pdns/recursordist/credentials.cc
    functionUses: 4
    functionsReached:
    - stringtok
    - std::vector::size
    - std::to_string
    - std::runtime_error
    - boost::starts_with
    - static_cast<uint64_t>
    - B64Decode
    - size
    - std::vector::reserve
    - reserve
    - substr
    - std::vector::at
    - pdns::checked_stoi<uint64_t>
    - find
    linkageType: ''
    returnType: void
    signature: void parseHashed([[maybe_unused]] const std::string& hash, [[maybe_unused]]
      std::string& salt, [[maybe_unused]] std::string& hashedPassword, [[maybe_unused]]
      uint64_t& workFactor, [[maybe_unused]] uint64_t& parallelFactor, [[maybe_unused]]
      uint64_t& blockSize)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: isPasswordHashed
      Src: /src/pdns/pdns/recursordist/credentials.cc:322,1
    - Dst: parseHashed
      Src: /src/pdns/pdns/recursordist/credentials.cc:332,1
    - Dst: hashPasswordInternal
      Src: /src/pdns/pdns/recursordist/credentials.cc:334,1
    - Dst: constantTimeStringEquals
      Src: /src/pdns/pdns/recursordist/credentials.cc:336,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/credentials.cc:338,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 2
    argNames:
    - ' hash'
    - ' password'
    argTypes:
    - std::string
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 340
      start: 320
    functionDepth: 0
    functionLinenumber: 320
    functionLinenumberEnd: 340
    functionName: verifyPassword
    functionSourceFile: /src/pdns/pdns/recursordist/credentials.cc
    functionUses: 6
    functionsReached:
    - std::runtime_error
    - parseHashed
    - constantTimeStringEquals
    - isPasswordHashed
    - hashPasswordInternal
    linkageType: ''
    returnType: bool
    signature: bool verifyPassword(const std::string& hash, [[maybe_unused]] const
      std::string& password)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/recursordist/credentials.cc:345,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/credentials.cc:345,1
    - Dst: boost::starts_with
      Src: /src/pdns/pdns/recursordist/credentials.cc:349,1
    - Dst: find
      Src: /src/pdns/pdns/recursordist/credentials.cc:353,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/credentials.cc:353,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/credentials.cc:354,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/credentials.cc:358,1
    - Dst: find
      Src: /src/pdns/pdns/recursordist/credentials.cc:364,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/credentials.cc:365,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/credentials.cc:375,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 24
    argCount: 1
    argNames:
    - ' password'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 383
      start: 342
    functionDepth: 0
    functionLinenumber: 342
    functionLinenumberEnd: 383
    functionName: isPasswordHashed
    functionSourceFile: /src/pdns/pdns/recursordist/credentials.cc
    functionUses: 8
    functionsReached:
    - boost::starts_with
    - size
    - find
    linkageType: ''
    returnType: bool
    signature: bool isPasswordHashed([[maybe_unused]] const std::string& password)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/credentials.cc:388,1
    - Dst: CredentialsHolder::isHashingAvailable
      Src: /src/pdns/pdns/recursordist/credentials.cc:390,1
    - Dst: isPasswordHashed
      Src: /src/pdns/pdns/recursordist/credentials.cc:391,1
    - Dst: getString
      Src: /src/pdns/pdns/recursordist/credentials.cc:391,1
    - Dst: generateRandomSalt
      Src: /src/pdns/pdns/recursordist/credentials.cc:393,1
    - Dst: SensitiveData
      Src: /src/pdns/pdns/recursordist/credentials.cc:397,1
    - Dst: hashPasswordInternal
      Src: /src/pdns/pdns/recursordist/credentials.cc:397,1
    - Dst: getString
      Src: /src/pdns/pdns/recursordist/credentials.cc:397,1
    - Dst: parseHashed
      Src: /src/pdns/pdns/recursordist/credentials.cc:405,1
    - Dst: getString
      Src: /src/pdns/pdns/recursordist/credentials.cc:405,1
    - Dst: SensitiveData
      Src: /src/pdns/pdns/recursordist/credentials.cc:406,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/credentials.cc:406,1
    - Dst: dns_random_uint32
      Src: /src/pdns/pdns/recursordist/credentials.cc:411,1
    - Dst: burtle
      Src: /src/pdns/pdns/recursordist/credentials.cc:413,1
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/recursordist/credentials.cc:413,1
    - Dst: getString
      Src: /src/pdns/pdns/recursordist/credentials.cc:413,1
    - Dst: getString
      Src: /src/pdns/pdns/recursordist/credentials.cc:413,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 22
    argCount: 2
    argNames:
    - ' password'
    - hashPlaintext
    argTypes:
    - std::string
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 415
      start: 387
    functionDepth: 0
    functionLinenumber: 387
    functionLinenumberEnd: 415
    functionName: CredentialsHolder::CredentialsHolder
    functionSourceFile: /src/pdns/pdns/recursordist/credentials.cc
    functionUses: 0
    functionsReached:
    - dns_random_uint32
    - std::move
    - SensitiveData
    - CredentialsHolder::isHashingAvailable
    - generateRandomSalt
    - parseHashed
    - burtle
    - reinterpret_cast<const unsigned char*>
    - getString
    - isPasswordHashed
    - hashPasswordInternal
    linkageType: ''
    returnType: void
    signature: void CredentialsHolder::CredentialsHolder(std::string&& password, bool
      hashPlaintext)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 421
      start: 417
    functionDepth: 0
    functionLinenumber: 417
    functionLinenumberEnd: 421
    functionName: CredentialsHolder::~CredentialsHolder()
    functionSourceFile: /src/pdns/pdns/recursordist/credentials.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void CredentialsHolder::~CredentialsHolder()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: verifyPassword
      Src: /src/pdns/pdns/recursordist/credentials.cc:426,1
    - Dst: getString
      Src: /src/pdns/pdns/recursordist/credentials.cc:426,1
    - Dst: burtle
      Src: /src/pdns/pdns/recursordist/credentials.cc:429,1
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/recursordist/credentials.cc:429,1
    - Dst: data
      Src: /src/pdns/pdns/recursordist/credentials.cc:429,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/credentials.cc:429,1
    - Dst: constantTimeStringEquals
      Src: /src/pdns/pdns/recursordist/credentials.cc:434,1
    - Dst: getString
      Src: /src/pdns/pdns/recursordist/credentials.cc:434,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - ' password'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 435
      start: 423
    functionDepth: 0
    functionLinenumber: 423
    functionLinenumberEnd: 435
    functionName: CredentialsHolder::matches
    functionSourceFile: /src/pdns/pdns/recursordist/credentials.cc
    functionUses: 0
    functionsReached:
    - constantTimeStringEquals
    - size
    - reinterpret_cast<const unsigned char*>
    - burtle
    - data
    - getString
    - verifyPassword
    linkageType: ''
    returnType: bool
    signature: bool CredentialsHolder::matches(const std::string& password) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 444
      start: 437
    functionDepth: 0
    functionLinenumber: 437
    functionLinenumberEnd: 444
    functionName: CredentialsHolder::isHashingAvailable
    functionSourceFile: /src/pdns/pdns/recursordist/credentials.cc
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool CredentialsHolder::isHashingAvailable()
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: open
      Src: /src/pdns/pdns/recursordist/credentials.cc:459,1
    - Dst: tcgetattr
      Src: /src/pdns/pdns/recursordist/credentials.cc:461,1
    - Dst: memcpy
      Src: /src/pdns/pdns/recursordist/credentials.cc:462,1
    - Dst: tcsetattr
      Src: /src/pdns/pdns/recursordist/credentials.cc:464,1
    - Dst: FDWrapper
      Src: /src/pdns/pdns/recursordist/credentials.cc:469,1
    - Dst: dup
      Src: /src/pdns/pdns/recursordist/credentials.cc:469,1
    - Dst: open
      Src: /src/pdns/pdns/recursordist/credentials.cc:473,1
    - Dst: FDWrapper
      Src: /src/pdns/pdns/recursordist/credentials.cc:475,1
    - Dst: dup
      Src: /src/pdns/pdns/recursordist/credentials.cc:475,1
    - Dst: sigemptyset
      Src: /src/pdns/pdns/recursordist/credentials.cc:481,1
    - Dst: sigaction
      Src: /src/pdns/pdns/recursordist/credentials.cc:484,1
    - Dst: sigaction
      Src: /src/pdns/pdns/recursordist/credentials.cc:485,1
    - Dst: sigaction
      Src: /src/pdns/pdns/recursordist/credentials.cc:486,1
    - Dst: sigaction
      Src: /src/pdns/pdns/recursordist/credentials.cc:487,1
    - Dst: sigaction
      Src: /src/pdns/pdns/recursordist/credentials.cc:488,1
    - Dst: sigaction
      Src: /src/pdns/pdns/recursordist/credentials.cc:489,1
    - Dst: sigaction
      Src: /src/pdns/pdns/recursordist/credentials.cc:490,1
    - Dst: sigaction
      Src: /src/pdns/pdns/recursordist/credentials.cc:491,1
    - Dst: sigaction
      Src: /src/pdns/pdns/recursordist/credentials.cc:492,1
    - Dst: std::string::reserve
      Src: /src/pdns/pdns/recursordist/credentials.cc:497,1
    - Dst: read
      Src: /src/pdns/pdns/recursordist/credentials.cc:501,1
    - Dst: std::string::push_back
      Src: /src/pdns/pdns/recursordist/credentials.cc:503,1
    - Dst: tcsetattr
      Src: /src/pdns/pdns/recursordist/credentials.cc:511,1
    - Dst: sigaction
      Src: /src/pdns/pdns/recursordist/credentials.cc:515,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/credentials.cc:518,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 43
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 519
      start: 449
    functionDepth: 0
    functionLinenumber: 449
    functionLinenumberEnd: 519
    functionName: CredentialsHolder::readFromTerminal
    functionSourceFile: /src/pdns/pdns/recursordist/credentials.cc
    functionUses: 2
    functionsReached:
    - memcpy
    - std::move
    - read
    - std::string::reserve
    - tcgetattr
    - open
    - dup
    - tcsetattr
    - FDWrapper
    - sigemptyset
    - std::string::push_back
    - sigaction
    linkageType: ''
    returnType: SensitiveData
    signature: SensitiveData CredentialsHolder::readFromTerminal()
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:14,1
    - Dst: setDNSSECValidation
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:16,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:18,1
    - Dst: getCopy
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:22,1
    - Dst: auto::dsAnchors::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:23,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:24,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:25,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:25,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:26,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:26,1
    - Dst: setState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:28,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:33,1
    - Dst: DNSName::chopOff
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:38,1
    - Dst: genericDSAndDNSKEYHandler
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:42,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:48,1
    - Dst: addDS
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:49,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:50,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:54,1
    - Dst: addDNSKEY
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:55,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:56,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:60,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:61,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:62,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:63,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:67,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:68,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:69,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:70,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:71,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:72,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:73,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:76,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:77,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:78,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:83,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:84,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:86,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:87,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:88,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:88,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:89,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:90,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:90,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:93,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:94,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:94,1
    - Dst: addNSECRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:95,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:95,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:95,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:96,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:96,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:100,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:101,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:101,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:112,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:112,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:113,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:114,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:114,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:115,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:115,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:116,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:117,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:120,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:121,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:121,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:122,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:123,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:123,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:124,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:124,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:125,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:126,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 86
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 127
      start: 11
    functionDepth: 4
    functionLinenumber: 11
    functionLinenumberEnd: 127
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc6.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - genericDSAndDNSKEYHandler
    - primeHints
    - setDNSSECValidation
    - addDNSKEY
    - std::unique_ptr::beginResolve
    - isRootServer
    - setState
    - DNSName::chopOff
    - QType
    - generateKeyMaterial
    - addRecordToLW
    - auto::dsAnchors::clear
    - addRRSIG
    - addNSECRecordToLW
    - vector::clear
    - BOOST_REQUIRE_EQUAL
    - std::unique_ptr::setAsyncCallback
    - DNSName
    - initSR
    - addDS
    - std::unique_ptr::getValidationState
    - ComboAddress
    - BOOST_CHECK_EQUAL
    - getCopy
    - vector::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_dnssec_no_ds_on_referral_secure)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:133,1
    - Dst: setDNSSECValidation
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:135,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:137,1
    - Dst: getCopy
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:141,1
    - Dst: auto::dsAnchors::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:142,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:143,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:144,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:144,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:145,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:145,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:146,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:146,1
    - Dst: setState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:148,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:152,1
    - Dst: DNSName::chopOff
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:157,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:159,1
    - Dst: addDS
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:161,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:162,1
    - Dst: addDS
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:165,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:166,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:171,1
    - Dst: addDNSKEY
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:172,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:173,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:177,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:178,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:179,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:180,1
    - Dst: addDS
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:181,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:181,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:182,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:182,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:185,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:186,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:187,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:188,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:189,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:190,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:191,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:194,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:195,1
    - Dst: addNSECRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:197,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:197,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:198,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:198,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:199,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:203,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:205,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:206,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:209,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:210,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:211,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:212,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:213,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:217,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:218,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:219,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:219,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:230,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:230,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:231,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:232,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:232,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:233,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:233,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:234,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:237,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:238,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:238,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:239,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:240,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:240,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:241,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:241,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:242,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 85
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 243
      start: 129
    functionDepth: 3
    functionLinenumber: 129
    functionLinenumberEnd: 243
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc6.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - primeHints
    - setDNSSECValidation
    - addDNSKEY
    - std::unique_ptr::beginResolve
    - isRootServer
    - setState
    - DNSName::chopOff
    - QType
    - generateKeyMaterial
    - addRecordToLW
    - auto::dsAnchors::clear
    - addRRSIG
    - addNSECRecordToLW
    - vector::clear
    - BOOST_REQUIRE_EQUAL
    - std::unique_ptr::setAsyncCallback
    - DNSName
    - initSR
    - addDS
    - std::unique_ptr::getValidationState
    - ComboAddress
    - BOOST_CHECK_EQUAL
    - getCopy
    - vector::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_dnssec_ds_sign_loop)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:253,1
    - Dst: setDNSSECValidation
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:255,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:257,1
    - Dst: getCopy
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:261,1
    - Dst: auto::dsAnchors::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:262,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:263,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:264,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:264,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:265,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:265,1
    - Dst: setState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:267,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:271,1
    - Dst: genericDSAndDNSKEYHandler
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:276,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:279,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:280,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:281,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:282,1
    - Dst: addDS
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:283,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:283,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:284,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:284,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:287,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:288,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:289,1
    - Dst: addNSECRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:291,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:291,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:292,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:292,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:293,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:296,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:299,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:300,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:300,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:301,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:301,1
    - Dst: addNSECRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:302,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:302,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:303,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:303,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:313,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:313,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:314,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:315,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:315,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:316,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:316,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:317,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:320,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:321,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:321,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:322,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:323,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:323,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:324,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:324,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:325,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 53
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 326
      start: 245
    functionDepth: 4
    functionLinenumber: 245
    functionLinenumberEnd: 326
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc6.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - genericDSAndDNSKEYHandler
    - primeHints
    - setDNSSECValidation
    - std::unique_ptr::beginResolve
    - isRootServer
    - setState
    - QType
    - generateKeyMaterial
    - addRecordToLW
    - auto::dsAnchors::clear
    - addRRSIG
    - addNSECRecordToLW
    - vector::clear
    - BOOST_REQUIRE_EQUAL
    - std::unique_ptr::setAsyncCallback
    - DNSName
    - initSR
    - addDS
    - std::unique_ptr::getValidationState
    - ComboAddress
    - BOOST_CHECK_EQUAL
    - getCopy
    - vector::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_dnssec_ds_denial_loop)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:331,1
    - Dst: setDNSSECValidation
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:333,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:335,1
    - Dst: getCopy
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:339,1
    - Dst: auto::dsAnchors::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:340,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:341,1
    - Dst: setState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:343,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:347,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:351,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:352,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:353,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:353,1
    - Dst: addNSECRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:354,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:354,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:355,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:355,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:359,1
    - Dst: addDNSKEY
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:360,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:361,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:361,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:369,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:369,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:370,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:371,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:371,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:372,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:372,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:373,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:376,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:377,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:377,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:378,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:379,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:379,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:380,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:380,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:381,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 35
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 382
      start: 328
    functionDepth: 3
    functionLinenumber: 328
    functionLinenumberEnd: 382
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc6.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - primeHints
    - setDNSSECValidation
    - addDNSKEY
    - std::unique_ptr::beginResolve
    - setState
    - QType
    - generateKeyMaterial
    - addRecordToLW
    - auto::dsAnchors::clear
    - addRRSIG
    - addNSECRecordToLW
    - vector::clear
    - BOOST_REQUIRE_EQUAL
    - std::unique_ptr::setAsyncCallback
    - DNSName
    - initSR
    - std::unique_ptr::getValidationState
    - BOOST_CHECK_EQUAL
    - getCopy
    - vector::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_dnssec_ds_root)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:388,1
    - Dst: setDNSSECValidation
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:390,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:392,1
    - Dst: getCopy
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:396,1
    - Dst: auto::dsAnchors::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:397,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:398,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:399,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:399,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:400,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:400,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:401,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:401,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:402,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:402,1
    - Dst: setState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:404,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:408,1
    - Dst: DNSName::chopOff
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:413,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:415,1
    - Dst: addDS
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:416,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:417,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:421,1
    - Dst: addDNSKEY
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:422,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:423,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:424,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:424,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:427,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:432,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:433,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:434,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:435,1
    - Dst: addDS
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:436,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:436,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:437,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:437,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:440,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:441,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:442,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:443,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:444,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:445,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:446,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:449,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:450,1
    - Dst: addDS
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:451,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:451,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:452,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:452,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:453,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:457,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:459,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:460,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:461,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:462,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:463,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:466,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:467,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:468,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:479,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:479,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:480,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:481,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:481,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:482,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:482,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:483,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:486,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:487,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:487,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:488,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:489,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:489,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:490,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:490,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:491,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 81
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 492
      start: 384
    functionDepth: 3
    functionLinenumber: 384
    functionLinenumberEnd: 492
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc6.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - primeHints
    - setDNSSECValidation
    - addDNSKEY
    - std::unique_ptr::beginResolve
    - isRootServer
    - setState
    - DNSName::chopOff
    - QType
    - generateKeyMaterial
    - addRecordToLW
    - auto::dsAnchors::clear
    - addRRSIG
    - vector::clear
    - BOOST_REQUIRE_EQUAL
    - std::unique_ptr::setAsyncCallback
    - DNSName
    - initSR
    - addDS
    - std::unique_ptr::getValidationState
    - ComboAddress
    - BOOST_CHECK_EQUAL
    - getCopy
    - vector::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_dnssec_dnskey_signed_child)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:498,1
    - Dst: setDNSSECValidation
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:500,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:502,1
    - Dst: getCopy
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:506,1
    - Dst: auto::dsAnchors::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:507,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:508,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:509,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:509,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:510,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:510,1
    - Dst: setState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:512,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:516,1
    - Dst: auto::chopOff
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:522,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:523,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:524,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:525,1
    - Dst: addNSECRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:528,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:528,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:529,1
    - Dst: genericDSAndDNSKEYHandler
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:532,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:536,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:537,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:538,1
    - Dst: addNSECRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:541,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:541,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:542,1
    - Dst: genericDSAndDNSKEYHandler
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:545,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:548,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:549,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:550,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:551,1
    - Dst: addDS
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:552,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:552,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:553,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:553,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:556,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:557,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:558,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:559,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:569,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:569,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:570,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:571,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:571,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:572,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:572,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:573,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:576,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:577,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:577,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:578,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:579,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:579,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:580,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:580,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:581,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:584,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:585,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:585,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:586,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:587,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:587,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:588,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:588,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:589,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 67
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 590
      start: 494
    functionDepth: 4
    functionLinenumber: 494
    functionLinenumberEnd: 590
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc6.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - genericDSAndDNSKEYHandler
    - primeHints
    - setDNSSECValidation
    - std::unique_ptr::beginResolve
    - isRootServer
    - auto::chopOff
    - setState
    - QType
    - generateKeyMaterial
    - addRecordToLW
    - auto::dsAnchors::clear
    - addRRSIG
    - addNSECRecordToLW
    - vector::clear
    - BOOST_REQUIRE_EQUAL
    - std::unique_ptr::setAsyncCallback
    - DNSName
    - initSR
    - addDS
    - std::unique_ptr::getValidationState
    - ComboAddress
    - BOOST_CHECK_EQUAL
    - getCopy
    - vector::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_dnssec_dnskey_unpublished)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:596,1
    - Dst: setDNSSECValidation
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:598,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:600,1
    - Dst: getCopy
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:604,1
    - Dst: auto::dsAnchors::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:605,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:606,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:607,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:607,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:608,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:608,1
    - Dst: setState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:610,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:614,1
    - Dst: auto::chopOff
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:620,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:621,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:622,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:623,1
    - Dst: addNSEC3UnhashedRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:626,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:626,1
    - Dst: toString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:626,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:627,1
    - Dst: genericDSAndDNSKEYHandler
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:630,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:634,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:635,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:636,1
    - Dst: addNSEC3UnhashedRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:639,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:639,1
    - Dst: toString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:639,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:640,1
    - Dst: genericDSAndDNSKEYHandler
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:643,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:646,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:647,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:648,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:649,1
    - Dst: addDS
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:650,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:650,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:651,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:651,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:654,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:655,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:656,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:657,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:667,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:667,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:668,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:669,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:669,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:670,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:670,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:671,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:674,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:675,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:675,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:676,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:677,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:677,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:678,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:678,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:679,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:682,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:683,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:683,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:684,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:685,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:685,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:686,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:686,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:687,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 67
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 688
      start: 592
    functionDepth: 4
    functionLinenumber: 592
    functionLinenumberEnd: 688
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc6.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - genericDSAndDNSKEYHandler
    - toString
    - primeHints
    - setDNSSECValidation
    - std::unique_ptr::beginResolve
    - isRootServer
    - auto::chopOff
    - setState
    - QType
    - generateKeyMaterial
    - addRecordToLW
    - auto::dsAnchors::clear
    - addRRSIG
    - vector::clear
    - BOOST_REQUIRE_EQUAL
    - std::unique_ptr::setAsyncCallback
    - addNSEC3UnhashedRecordToLW
    - DNSName
    - initSR
    - addDS
    - std::unique_ptr::getValidationState
    - ComboAddress
    - BOOST_CHECK_EQUAL
    - getCopy
    - vector::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_dnssec_dnskey_unpublished_nsec3)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:693,1
    - Dst: setDNSSECValidation
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:695,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:697,1
    - Dst: getCopy
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:701,1
    - Dst: auto::dsAnchors::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:702,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:703,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:704,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:704,1
    - Dst: setState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:706,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:711,1
    - Dst: DNSName::chopOff
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:716,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:719,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:720,1
    - Dst: addDS
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:721,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:724,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:725,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:725,1
    - Dst: addNSECRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:726,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:726,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:728,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:732,1
    - Dst: addDNSKEY
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:733,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:734,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:738,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:739,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:740,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:741,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:745,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:746,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:747,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:748,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:749,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:750,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:751,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:754,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:755,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:756,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:761,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:762,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:764,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:765,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:766,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:769,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:773,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:783,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:783,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:784,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:785,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:785,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:786,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:786,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:787,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:788,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:791,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:792,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:792,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:793,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:794,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:794,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:795,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:795,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:796,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:797,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 79
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 798
      start: 690
    functionDepth: 3
    functionLinenumber: 690
    functionLinenumberEnd: 798
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc6.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - primeHints
    - setDNSSECValidation
    - addDNSKEY
    - std::unique_ptr::beginResolve
    - isRootServer
    - setState
    - DNSName::chopOff
    - QType
    - generateKeyMaterial
    - addRecordToLW
    - auto::dsAnchors::clear
    - addRRSIG
    - addNSECRecordToLW
    - vector::clear
    - BOOST_REQUIRE_EQUAL
    - std::unique_ptr::setAsyncCallback
    - DNSName
    - initSR
    - addDS
    - std::unique_ptr::getValidationState
    - ComboAddress
    - BOOST_CHECK_EQUAL
    - getCopy
    - vector::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_dnssec_no_ds_on_referral_insecure)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:803,1
    - Dst: setDNSSECValidation
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:805,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:807,1
    - Dst: getCopy
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:811,1
    - Dst: auto::dsAnchors::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:812,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:813,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:814,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:814,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:815,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:815,1
    - Dst: setState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:817,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:821,1
    - Dst: genericDSAndDNSKEYHandler
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:825,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:828,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:829,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:830,1
    - Dst: addDS
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:831,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:831,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:832,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:832,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:833,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:836,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:837,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:838,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:839,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:839,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:840,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:840,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:841,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:844,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:845,1
    - Dst: addDS
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:846,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:847,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:847,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:848,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:852,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:853,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:855,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:856,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:859,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:860,1
    - Dst: addNSECRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:861,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:861,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:873,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:873,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:874,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:875,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:875,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:876,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:876,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:877,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:880,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:881,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:881,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:882,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:883,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:883,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:884,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:884,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:885,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 62
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 886
      start: 800
    functionDepth: 4
    functionLinenumber: 800
    functionLinenumberEnd: 886
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc6.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - genericDSAndDNSKEYHandler
    - primeHints
    - setDNSSECValidation
    - std::unique_ptr::beginResolve
    - isRootServer
    - setState
    - QType
    - generateKeyMaterial
    - addRecordToLW
    - auto::dsAnchors::clear
    - addRRSIG
    - addNSECRecordToLW
    - vector::clear
    - BOOST_REQUIRE_EQUAL
    - std::unique_ptr::setAsyncCallback
    - DNSName
    - initSR
    - addDS
    - std::unique_ptr::getValidationState
    - ComboAddress
    - BOOST_CHECK_EQUAL
    - getCopy
    - vector::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_dnssec_validation_bogus_unsigned_nsec)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:891,1
    - Dst: setDNSSECValidation
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:893,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:895,1
    - Dst: getCopy
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:899,1
    - Dst: auto::dsAnchors::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:900,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:901,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:902,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:902,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:903,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:903,1
    - Dst: setState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:905,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:909,1
    - Dst: genericDSAndDNSKEYHandler
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:913,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:916,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:917,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:918,1
    - Dst: addDS
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:919,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:919,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:920,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:920,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:921,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:924,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:925,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:926,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:927,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:927,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:928,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:928,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:929,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:932,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:933,1
    - Dst: addDS
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:934,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:935,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:935,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:936,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:940,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:941,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:943,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:944,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:947,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:948,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:961,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:961,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:962,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:963,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:963,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:964,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:964,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:965,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:968,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:969,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:969,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:970,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:971,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:971,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:972,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:972,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:973,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 61
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 974
      start: 888
    functionDepth: 4
    functionLinenumber: 888
    functionLinenumberEnd: 974
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc6.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - genericDSAndDNSKEYHandler
    - primeHints
    - setDNSSECValidation
    - std::unique_ptr::beginResolve
    - isRootServer
    - setState
    - QType
    - generateKeyMaterial
    - addRecordToLW
    - auto::dsAnchors::clear
    - addRRSIG
    - vector::clear
    - BOOST_REQUIRE_EQUAL
    - std::unique_ptr::setAsyncCallback
    - DNSName
    - initSR
    - addDS
    - std::unique_ptr::getValidationState
    - ComboAddress
    - BOOST_CHECK_EQUAL
    - getCopy
    - vector::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_dnssec_validation_bogus_no_nsec)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:979,1
    - Dst: setDNSSECValidation
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:981,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:983,1
    - Dst: getCopy
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:988,1
    - Dst: auto::dsAnchors::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:989,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:990,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:991,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:991,1
    - Dst: setState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:993,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:997,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1002,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1003,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1004,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1004,1
    - Dst: addNSECRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1005,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1005,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1006,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1006,1
    - Dst: genericDSAndDNSKEYHandler
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1009,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1012,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1013,1
    - Dst: addDNSKEY
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1014,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1015,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1018,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1019,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1023,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1024,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1025,1
    - Dst: addDS
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1026,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1026,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1027,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1027,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1028,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1031,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1032,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1033,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1034,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1034,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1035,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1035,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1036,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1039,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1040,1
    - Dst: addNSECRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1042,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1042,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1043,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1043,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1044,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1048,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1049,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1051,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1054,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1054,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1064,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1064,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1065,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1066,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1066,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1067,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1067,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1068,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1072,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1075,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1076,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1076,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1077,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1078,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1078,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1079,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1079,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1080,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1081,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 79
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1082
      start: 976
    functionDepth: 4
    functionLinenumber: 976
    functionLinenumberEnd: 1082
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc6.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - genericDSAndDNSKEYHandler
    - primeHints
    - setDNSSECValidation
    - addDNSKEY
    - std::unique_ptr::beginResolve
    - isRootServer
    - setState
    - QType
    - generateKeyMaterial
    - addRecordToLW
    - auto::dsAnchors::clear
    - addRRSIG
    - addNSECRecordToLW
    - vector::clear
    - BOOST_REQUIRE_EQUAL
    - std::unique_ptr::setAsyncCallback
    - DNSName
    - initSR
    - addDS
    - std::unique_ptr::getValidationState
    - ComboAddress
    - BOOST_CHECK
    - BOOST_CHECK_EQUAL
    - getCopy
    - ComboAddress::toString
    - vector::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_dnssec_secure_to_insecure)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1087,1
    - Dst: setDNSSECValidation
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1089,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1091,1
    - Dst: getCopy
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1096,1
    - Dst: auto::dsAnchors::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1097,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1098,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1099,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1099,1
    - Dst: setState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1101,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1105,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1110,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1111,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1112,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1112,1
    - Dst: addNSEC3UnhashedRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1114,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1114,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1114,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1114,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1115,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1115,1
    - Dst: addNSEC3UnhashedRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1117,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1117,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1117,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1117,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1118,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1118,1
    - Dst: genericDSAndDNSKEYHandler
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1121,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1124,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1125,1
    - Dst: addDNSKEY
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1126,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1127,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1130,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1131,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1135,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1136,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1137,1
    - Dst: addDS
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1138,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1138,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1139,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1139,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1140,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1143,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1144,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1145,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1146,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1146,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1147,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1147,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1148,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1151,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1152,1
    - Dst: addNSEC3UnhashedRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1155,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1155,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1155,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1155,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1156,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1156,1
    - Dst: addNSEC3UnhashedRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1158,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1158,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1158,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1158,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1159,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1159,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1160,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1164,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1165,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1167,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1170,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1170,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1180,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1180,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1181,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1182,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1182,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1183,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1183,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1184,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1185,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1188,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1189,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1189,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1190,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1191,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1191,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1192,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1192,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1193,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1194,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 83
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1195
      start: 1084
    functionDepth: 4
    functionLinenumber: 1084
    functionLinenumberEnd: 1195
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc6.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - genericDSAndDNSKEYHandler
    - primeHints
    - setDNSSECValidation
    - addDNSKEY
    - std::unique_ptr::beginResolve
    - isRootServer
    - setState
    - QType
    - generateKeyMaterial
    - addRecordToLW
    - auto::dsAnchors::clear
    - addRRSIG
    - vector::clear
    - BOOST_REQUIRE_EQUAL
    - std::unique_ptr::setAsyncCallback
    - addNSEC3UnhashedRecordToLW
    - DNSName
    - initSR
    - addDS
    - std::unique_ptr::getValidationState
    - ComboAddress
    - BOOST_CHECK
    - BOOST_CHECK_EQUAL
    - getCopy
    - ComboAddress::toString
    - vector::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_dnssec_secure_to_insecure_optout)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1200,1
    - Dst: setDNSSECValidation
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1202,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1204,1
    - Dst: getCopy
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1209,1
    - Dst: auto::dsAnchors::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1210,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1211,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1212,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1212,1
    - Dst: setState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1214,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1218,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1223,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1224,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1224,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1225,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1225,1
    - Dst: addNSEC3UnhashedRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1227,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1227,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1227,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1227,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1228,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1228,1
    - Dst: addNSEC3UnhashedRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1230,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1230,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1230,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1230,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1231,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1231,1
    - Dst: genericDSAndDNSKEYHandler
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1234,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1237,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1238,1
    - Dst: addDNSKEY
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1239,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1240,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1243,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1244,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1244,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1248,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1249,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1250,1
    - Dst: addDS
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1251,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1251,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1252,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1252,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1253,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1256,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1257,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1258,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1259,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1259,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1260,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1260,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1261,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1264,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1265,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1265,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1266,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1266,1
    - Dst: addNSEC3UnhashedRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1268,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1268,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1268,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1268,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1269,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1269,1
    - Dst: addNSEC3UnhashedRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1271,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1271,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1271,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1271,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1272,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1272,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1282,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1282,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1283,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1284,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1284,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1285,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1285,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1286,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1287,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1290,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1291,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1291,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1292,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1293,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1293,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1294,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1294,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1295,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1296,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 74
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1297
      start: 1197
    functionDepth: 4
    functionLinenumber: 1197
    functionLinenumberEnd: 1297
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc6.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - genericDSAndDNSKEYHandler
    - primeHints
    - setDNSSECValidation
    - addDNSKEY
    - std::unique_ptr::beginResolve
    - isRootServer
    - setState
    - QType
    - generateKeyMaterial
    - addRecordToLW
    - auto::dsAnchors::clear
    - addRRSIG
    - vector::clear
    - BOOST_REQUIRE_EQUAL
    - std::unique_ptr::setAsyncCallback
    - addNSEC3UnhashedRecordToLW
    - DNSName
    - initSR
    - addDS
    - std::unique_ptr::getValidationState
    - ComboAddress
    - BOOST_CHECK
    - BOOST_CHECK_EQUAL
    - getCopy
    - vector::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_dnssec_secure_to_insecure_nxd_optout)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1306,1
    - Dst: setDNSSECValidation
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1308,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1310,1
    - Dst: getCopy
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1314,1
    - Dst: auto::dsAnchors::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1315,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1316,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1317,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1317,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1318,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1318,1
    - Dst: setState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1320,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1324,1
    - Dst: genericDSAndDNSKEYHandler
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1328,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1331,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1332,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1333,1
    - Dst: addDS
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1334,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1334,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1335,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1335,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1336,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1345,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1345,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1346,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1347,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1347,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1348,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1348,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1350,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1352,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1355,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1356,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1356,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1357,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1358,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1358,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1359,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1359,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1361,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1363,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 39
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1364
      start: 1299
    functionDepth: 4
    functionLinenumber: 1299
    functionLinenumberEnd: 1364
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc6.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - genericDSAndDNSKEYHandler
    - primeHints
    - setDNSSECValidation
    - std::unique_ptr::beginResolve
    - isRootServer
    - setState
    - QType
    - generateKeyMaterial
    - addRecordToLW
    - auto::dsAnchors::clear
    - addRRSIG
    - vector::clear
    - BOOST_REQUIRE_EQUAL
    - std::unique_ptr::setAsyncCallback
    - DNSName
    - initSR
    - addDS
    - std::unique_ptr::getValidationState
    - BOOST_CHECK
    - BOOST_CHECK_EQUAL
    - getCopy
    - vector::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_dnssec_secure_direct_ds)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1373,1
    - Dst: setDNSSECValidation
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1375,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1377,1
    - Dst: getCopy
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1381,1
    - Dst: auto::dsAnchors::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1382,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1383,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1384,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1384,1
    - Dst: setState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1386,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1390,1
    - Dst: genericDSAndDNSKEYHandler
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1394,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1397,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1398,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1399,1
    - Dst: addDS
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1400,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1400,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1401,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1401,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1402,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1411,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1411,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1412,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1413,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1413,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1414,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1414,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1416,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1418,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1421,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1422,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1422,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1423,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1424,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1424,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1425,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1425,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1427,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1429,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 38
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1430
      start: 1366
    functionDepth: 4
    functionLinenumber: 1366
    functionLinenumberEnd: 1430
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc6.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - genericDSAndDNSKEYHandler
    - primeHints
    - setDNSSECValidation
    - std::unique_ptr::beginResolve
    - isRootServer
    - setState
    - QType
    - generateKeyMaterial
    - addRecordToLW
    - auto::dsAnchors::clear
    - addRRSIG
    - vector::clear
    - BOOST_REQUIRE_EQUAL
    - std::unique_ptr::setAsyncCallback
    - DNSName
    - initSR
    - addDS
    - std::unique_ptr::getValidationState
    - BOOST_CHECK
    - BOOST_CHECK_EQUAL
    - getCopy
    - vector::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_dnssec_insecure_direct_ds)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1435,1
    - Dst: setDNSSECValidation
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1437,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1439,1
    - Dst: getCopy
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1444,1
    - Dst: auto::dsAnchors::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1445,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1446,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1447,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1447,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1448,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1448,1
    - Dst: setState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1450,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1454,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1458,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1459,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1460,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1461,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1461,1
    - Dst: addNSECRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1462,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1462,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1463,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1463,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1466,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1467,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1468,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1468,1
    - Dst: genericDSAndDNSKEYHandler
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1471,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1474,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1474,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1475,1
    - Dst: addDNSKEY
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1476,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1477,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1480,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1481,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1485,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1486,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1487,1
    - Dst: addDS
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1488,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1488,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1489,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1489,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1490,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1493,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1494,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1495,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1496,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1496,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1497,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1497,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1498,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1501,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1502,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1502,1
    - Dst: addDS
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1503,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1503,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1504,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1504,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1505,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1509,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1510,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1512,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1513,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1513,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1515,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1516,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1518,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1519,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1520,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1520,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1524,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1524,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1534,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1534,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1535,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1536,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1536,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1537,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1537,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1538,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1539,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1542,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1543,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1543,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1544,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1545,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1545,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1546,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1546,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1547,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1548,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 94
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1549
      start: 1432
    functionDepth: 4
    functionLinenumber: 1432
    functionLinenumberEnd: 1549
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc6.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - genericDSAndDNSKEYHandler
    - primeHints
    - setDNSSECValidation
    - addDNSKEY
    - std::unique_ptr::beginResolve
    - isRootServer
    - setState
    - QType
    - generateKeyMaterial
    - addRecordToLW
    - auto::dsAnchors::clear
    - addRRSIG
    - addNSECRecordToLW
    - vector::clear
    - BOOST_REQUIRE_EQUAL
    - std::unique_ptr::setAsyncCallback
    - DNSName
    - initSR
    - addDS
    - std::unique_ptr::getValidationState
    - ComboAddress
    - BOOST_CHECK
    - BOOST_CHECK_EQUAL
    - getCopy
    - ComboAddress::toString
    - vector::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_dnssec_secure_to_insecure_skipped_cut)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1556,1
    - Dst: setDNSSECValidation
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1558,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1560,1
    - Dst: getCopy
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1565,1
    - Dst: auto::dsAnchors::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1566,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1567,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1568,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1568,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1569,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1569,1
    - Dst: setState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1571,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1575,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1579,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1580,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1581,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1581,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1582,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1582,1
    - Dst: addNSECRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1583,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1583,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1584,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1584,1
    - Dst: genericDSAndDNSKEYHandler
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1587,1
    - Dst: genericDSAndDNSKEYHandler
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1590,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1593,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1594,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1595,1
    - Dst: addDS
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1596,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1596,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1597,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1597,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1598,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1601,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1602,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1603,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1604,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1604,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1605,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1605,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1606,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1609,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1610,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1610,1
    - Dst: addNSECRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1612,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1612,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1612,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1613,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1613,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1614,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1618,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1619,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1620,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1620,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1621,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1621,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1631,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1631,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1632,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1633,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1633,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1634,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1634,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1635,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1636,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1639,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1640,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1640,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1641,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1642,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1642,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1643,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1643,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1644,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1645,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 69
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1646
      start: 1551
    functionDepth: 4
    functionLinenumber: 1551
    functionLinenumberEnd: 1646
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc6.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - genericDSAndDNSKEYHandler
    - primeHints
    - setDNSSECValidation
    - std::unique_ptr::beginResolve
    - isRootServer
    - setState
    - QType
    - generateKeyMaterial
    - addRecordToLW
    - auto::dsAnchors::clear
    - addRRSIG
    - addNSECRecordToLW
    - vector::clear
    - BOOST_REQUIRE_EQUAL
    - std::unique_ptr::setAsyncCallback
    - DNSName
    - initSR
    - addDS
    - std::unique_ptr::getValidationState
    - ComboAddress
    - BOOST_CHECK
    - BOOST_CHECK_EQUAL
    - getCopy
    - ComboAddress::toString
    - vector::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_dnssec_secure_to_secure_without_ds)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1653,1
    - Dst: setDNSSECValidation
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1655,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1657,1
    - Dst: getCopy
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1662,1
    - Dst: auto::dsAnchors::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1663,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1664,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1665,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1665,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1666,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1666,1
    - Dst: setState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1668,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1672,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1676,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1677,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1678,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1678,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1679,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1679,1
    - Dst: addNSECRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1680,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1680,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1681,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1681,1
    - Dst: genericDSAndDNSKEYHandler
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1684,1
    - Dst: genericDSAndDNSKEYHandler
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1687,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1690,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1691,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1692,1
    - Dst: addDS
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1693,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1693,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1694,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1694,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1695,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1698,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1699,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1700,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1701,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1701,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1702,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1702,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1703,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1706,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1707,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1707,1
    - Dst: addNSECRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1709,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1709,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1709,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1710,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1710,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1711,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1715,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1716,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1717,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1717,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1718,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1718,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1728,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1728,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1729,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1730,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1730,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1731,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1731,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1732,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1733,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1736,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1737,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1737,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1738,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1739,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1739,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1740,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1740,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1741,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1742,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 69
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1743
      start: 1648
    functionDepth: 4
    functionLinenumber: 1648
    functionLinenumberEnd: 1743
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc6.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - genericDSAndDNSKEYHandler
    - primeHints
    - setDNSSECValidation
    - std::unique_ptr::beginResolve
    - isRootServer
    - setState
    - QType
    - generateKeyMaterial
    - addRecordToLW
    - auto::dsAnchors::clear
    - addRRSIG
    - addNSECRecordToLW
    - vector::clear
    - BOOST_REQUIRE_EQUAL
    - std::unique_ptr::setAsyncCallback
    - DNSName
    - initSR
    - addDS
    - std::unique_ptr::getValidationState
    - ComboAddress
    - BOOST_CHECK
    - BOOST_CHECK_EQUAL
    - getCopy
    - ComboAddress::toString
    - vector::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_dnssec_secure_to_broken_without_ds)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1749,1
    - Dst: setDNSSECValidation
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1751,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1753,1
    - Dst: getCopy
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1758,1
    - Dst: auto::dsAnchors::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1759,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1762,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1763,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1763,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1765,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1765,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1766,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1766,1
    - Dst: setState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1768,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1772,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1777,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1777,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1778,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1779,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1780,1
    - Dst: genericDSAndDNSKEYHandler
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1783,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1786,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1786,1
    - Dst: genericDSAndDNSKEYHandler
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1787,1
    - Dst: genericDSAndDNSKEYHandler
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1789,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1792,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1793,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1794,1
    - Dst: addDS
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1795,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1795,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1796,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1796,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1797,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1800,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1801,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1802,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1803,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1803,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1804,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1804,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1805,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1808,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1809,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1809,1
    - Dst: addNSECRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1810,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1810,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1810,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1811,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1811,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1812,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1816,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1817,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1818,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1818,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1819,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1819,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1821,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1824,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1825,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1826,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1826,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1827,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1827,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1836,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1836,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1837,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1838,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1838,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1839,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1839,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1840,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1841,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1844,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1845,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1845,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1846,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1847,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1847,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1848,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1848,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1849,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1850,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 78
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1851
      start: 1745
    functionDepth: 4
    functionLinenumber: 1745
    functionLinenumberEnd: 1851
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc6.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - genericDSAndDNSKEYHandler
    - primeHints
    - setDNSSECValidation
    - std::unique_ptr::beginResolve
    - isRootServer
    - setState
    - QType
    - generateKeyMaterial
    - addRecordToLW
    - auto::dsAnchors::clear
    - addRRSIG
    - addNSECRecordToLW
    - vector::clear
    - BOOST_REQUIRE_EQUAL
    - std::unique_ptr::setAsyncCallback
    - DNSName
    - initSR
    - addDS
    - std::unique_ptr::getValidationState
    - ComboAddress
    - BOOST_CHECK
    - BOOST_CHECK_EQUAL
    - getCopy
    - ComboAddress::toString
    - vector::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_dnssec_secure_to_broken_cname_ds)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1857,1
    - Dst: setDNSSECValidation
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1859,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1861,1
    - Dst: getCopy
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1865,1
    - Dst: auto::dsAnchors::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1866,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1868,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1869,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1869,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1871,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1871,1
    - Dst: setState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1873,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1877,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1881,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1883,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1884,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1885,1
    - Dst: genericDSAndDNSKEYHandler
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1888,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1891,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1892,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1893,1
    - Dst: addDS
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1894,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1894,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1895,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1895,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1896,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1899,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1900,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1901,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1902,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1902,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1903,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1903,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1904,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1907,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1908,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1908,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1909,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1913,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1914,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1915,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1915,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1916,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1916,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1926,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1926,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1927,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1928,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1928,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1929,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1929,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1930,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1931,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1934,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1935,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1935,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1936,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1937,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1937,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1938,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1938,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1939,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc6.cc:1940,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 62
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1941
      start: 1853
    functionDepth: 4
    functionLinenumber: 1853
    functionLinenumberEnd: 1941
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc6.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - genericDSAndDNSKEYHandler
    - primeHints
    - setDNSSECValidation
    - std::unique_ptr::beginResolve
    - isRootServer
    - setState
    - QType
    - generateKeyMaterial
    - addRecordToLW
    - auto::dsAnchors::clear
    - addRRSIG
    - vector::clear
    - BOOST_REQUIRE_EQUAL
    - std::unique_ptr::setAsyncCallback
    - DNSName
    - initSR
    - addDS
    - std::unique_ptr::getValidationState
    - ComboAddress
    - BOOST_CHECK
    - BOOST_CHECK_EQUAL
    - getCopy
    - vector::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_dnssec_bogus_cname_for_ds)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 1
    argNames:
    - orig
    argTypes:
    - DNSPacket
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 55
    functionDepth: 0
    functionLinenumber: 55
    functionLinenumberEnd: 55
    functionName: DNSPacket::DNSPacket
    functionSourceFile: /src/pdns/pdns/recursordist/dnspacket.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void DNSPacket(const DNSPacket &orig)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 56
    functionDepth: 0
    functionLinenumber: 56
    functionLinenumberEnd: 56
    functionName: '& operator=(const DNSPacket &)'
    functionSourceFile: /src/pdns/pdns/recursordist/dnspacket.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: DNSPacket
    signature: DNSPacket & operator=(const DNSPacket &)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getsockname
      Src: /src/pdns/pdns/recursordist/dnspacket.hh:72,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 68
    functionDepth: 0
    functionLinenumber: 68
    functionLinenumberEnd: 74
    functionName: DNSPacket::getLocal
    functionSourceFile: /src/pdns/pdns/recursordist/dnspacket.hh
    functionUses: 0
    functionsReached:
    - getsockname
    linkageType: ''
    returnType: ComboAddress
    signature: ComboAddress getLocal() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 82
    functionDepth: 0
    functionLinenumber: 82
    functionLinenumberEnd: 85
    functionName: DNSPacket::getSocket
    functionSourceFile: /src/pdns/pdns/recursordist/dnspacket.hh
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: Utility::sock_t
    signature: Utility::sock_t getSocket() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 130
      start: 130
    functionDepth: 0
    functionLinenumber: 130
    functionLinenumberEnd: 130
    functionName: DNSPacket::getEDNSVersion
    functionSourceFile: /src/pdns/pdns/recursordist/dnspacket.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint8_t
    signature: uint8_t getEDNSVersion() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - extRCode
    argTypes:
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 135
      start: 131
    functionDepth: 0
    functionLinenumber: 131
    functionLinenumberEnd: 135
    functionName: DNSPacket::setEDNSRcode
    functionSourceFile: /src/pdns/pdns/recursordist/dnspacket.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setEDNSRcode(uint16_t extRCode)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 136
      start: 136
    functionDepth: 0
    functionLinenumber: 136
    functionLinenumberEnd: 136
    functionName: DNSPacket::getEDNSRCode
    functionSourceFile: /src/pdns/pdns/recursordist/dnspacket.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint8_t
    signature: uint8_t getEDNSRCode() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 137
      start: 137
    functionDepth: 0
    functionLinenumber: 137
    functionLinenumberEnd: 137
    functionName: DNSPacket::getHash
    functionSourceFile: /src/pdns/pdns/recursordist/dnspacket.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t getHash() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - hash
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 138
      start: 138
    functionDepth: 0
    functionLinenumber: 138
    functionLinenumberEnd: 138
    functionName: DNSPacket::setHash
    functionSourceFile: /src/pdns/pdns/recursordist/dnspacket.hh
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setHash(uint32_t hash)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 170
      start: 170
    functionDepth: 0
    functionLinenumber: 170
    functionLinenumberEnd: 170
    functionName: '& getRRS()'
    functionSourceFile: /src/pdns/pdns/recursordist/dnspacket.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: vector<DNSZoneRecord>
    signature: vector<DNSZoneRecord> & getRRS()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 117
    functionDepth: 0
    functionLinenumber: 117
    functionLinenumberEnd: 117
    functionName: pdns::RecResolve::Refresher::Refresher
    functionSourceFile: /src/pdns/pdns/recursordist/rec-system-resolve.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Refresher(const Refresher&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 118
      start: 118
    functionDepth: 0
    functionLinenumber: 118
    functionLinenumberEnd: 118
    functionName: pdns::RecResolve::Refresher::Refresher
    functionSourceFile: /src/pdns/pdns/recursordist/rec-system-resolve.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Refresher(Refresher&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 119
      start: 119
    functionDepth: 0
    functionLinenumber: 119
    functionLinenumberEnd: 119
    functionName: '& operator=(const Refresher&)'
    functionSourceFile: /src/pdns/pdns/recursordist/rec-system-resolve.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Refresher
    signature: Refresher & operator=(const Refresher&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 120
    functionDepth: 0
    functionLinenumber: 120
    functionLinenumberEnd: 120
    functionName: '& operator=(Refresher&&)'
    functionSourceFile: /src/pdns/pdns/recursordist/rec-system-resolve.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Refresher
    signature: Refresher & operator=(Refresher&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 117
    functionDepth: 0
    functionLinenumber: 117
    functionLinenumberEnd: 117
    functionName: pdns::RecResolve::Refresher::Refresher
    functionSourceFile: /src/pdns/pdns/recursordist/rec-system-resolve.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Refresher(const Refresher&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 118
      start: 118
    functionDepth: 0
    functionLinenumber: 118
    functionLinenumberEnd: 118
    functionName: pdns::RecResolve::Refresher::Refresher
    functionSourceFile: /src/pdns/pdns/recursordist/rec-system-resolve.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Refresher(Refresher&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 119
      start: 119
    functionDepth: 0
    functionLinenumber: 119
    functionLinenumberEnd: 119
    functionName: '& operator=(const Refresher&)'
    functionSourceFile: /src/pdns/pdns/recursordist/rec-system-resolve.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Refresher
    signature: Refresher & operator=(const Refresher&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 120
    functionDepth: 0
    functionLinenumber: 120
    functionLinenumberEnd: 120
    functionName: '& operator=(Refresher&&)'
    functionSourceFile: /src/pdns/pdns/recursordist/rec-system-resolve.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Refresher
    signature: Refresher & operator=(Refresher&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - refresh
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 59
    functionDepth: 0
    functionLinenumber: 59
    functionLinenumberEnd: 62
    functionName: CatalogZone::setRefresh
    functionSourceFile: /src/pdns/pdns/recursordist/rec-xfr.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setRefresh(uint32_t refresh)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 63
    functionDepth: 0
    functionLinenumber: 63
    functionLinenumberEnd: 66
    functionName: CatalogZone::getRefresh
    functionSourceFile: /src/pdns/pdns/recursordist/rec-xfr.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: auto getRefresh() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - serial
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 67
    functionDepth: 0
    functionLinenumber: 67
    functionLinenumberEnd: 70
    functionName: CatalogZone::setSerial
    functionSourceFile: /src/pdns/pdns/recursordist/rec-xfr.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setSerial(uint32_t serial)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' name'
    argTypes:
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 71
    functionDepth: 0
    functionLinenumber: 71
    functionLinenumberEnd: 74
    functionName: CatalogZone::setName
    functionSourceFile: /src/pdns/pdns/recursordist/rec-xfr.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setName(const DNSName& name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 75
    functionDepth: 0
    functionLinenumber: 75
    functionLinenumberEnd: 78
    functionName: '& getName() const'
    functionSourceFile: /src/pdns/pdns/recursordist/rec-xfr.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: DNSName
    signature: DNSName & getName() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CatalogZone::clear
      Src: /src/pdns/pdns/recursordist/rec-xfr.hh:81,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 79
    functionDepth: 0
    functionLinenumber: 79
    functionLinenumberEnd: 82
    functionName: CatalogZone::clear
    functionSourceFile: /src/pdns/pdns/recursordist/rec-xfr.hh
    functionUses: 1
    functionsReached:
    - CatalogZone::clear
    linkageType: ''
    returnType: void
    signature: void clear()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - arg
    argTypes:
    - std::thread::id
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 111
      start: 110
    functionDepth: 0
    functionLinenumber: 110
    functionLinenumberEnd: 111
    functionName: ZoneXFR::ZoneWaiter
    functionSourceFile: /src/pdns/pdns/recursordist/rec-xfr.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ZoneWaiter(std::thread::id arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/rec-xfr.hh:124,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - params
    argTypes:
    - ZoneXFRParams
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 125
      start: 123
    functionDepth: 0
    functionLinenumber: 123
    functionLinenumberEnd: 125
    functionName: ZoneXFR::ZoneXFR
    functionSourceFile: /src/pdns/pdns/recursordist/rec-xfr.hh
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void ZoneXFR(ZoneXFRParams params)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/rec-xfr.hh:139,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - params
    argTypes:
    - ZoneXFRParams
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 138
    functionDepth: 0
    functionLinenumber: 138
    functionLinenumberEnd: 140
    functionName: FWCatZoneXFR::FWCatZoneXFR
    functionSourceFile: /src/pdns/pdns/recursordist/rec-xfr.hh
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void FWCatZoneXFR(ZoneXFRParams params)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:14,1
    - Dst: setDNSSECValidation
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:16,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:18,1
    - Dst: getCopy
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:23,1
    - Dst: auto::dsAnchors::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:24,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:25,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:26,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:26,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:27,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:27,1
    - Dst: setState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:29,1
    - Dst: std::unique_ptr::getNow
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:37,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:39,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:44,1
    - Dst: genericDSAndDNSKEYHandler
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:48,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:51,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:52,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:53,1
    - Dst: addDS
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:54,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:54,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:55,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:55,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:56,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:60,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:61,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:62,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:63,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:64,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:65,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:66,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:69,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:70,1
    - Dst: addDS
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:71,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:72,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:72,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:73,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:78,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:80,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:81,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:82,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:83,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:84,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:87,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:88,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:88,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:89,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:98,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:98,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:99,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:100,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:100,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:101,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:101,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:102,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:105,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:106,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:106,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:107,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:108,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:108,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:109,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:109,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:110,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 67
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 111
      start: 11
    functionDepth: 4
    functionLinenumber: 11
    functionLinenumberEnd: 111
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc5.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - genericDSAndDNSKEYHandler
    - primeHints
    - setDNSSECValidation
    - std::unique_ptr::beginResolve
    - isRootServer
    - setState
    - QType
    - generateKeyMaterial
    - addRecordToLW
    - auto::dsAnchors::clear
    - addRRSIG
    - vector::clear
    - BOOST_REQUIRE_EQUAL
    - std::unique_ptr::setAsyncCallback
    - DNSName
    - initSR
    - std::unique_ptr::getNow
    - addDS
    - std::unique_ptr::getValidationState
    - ComboAddress
    - BOOST_CHECK_EQUAL
    - getCopy
    - ComboAddress::toString
    - vector::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_dnssec_secure_various_algos)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:116,1
    - Dst: setDNSSECValidation
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:118,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:120,1
    - Dst: getCopy
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:125,1
    - Dst: auto::dsAnchors::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:126,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:127,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:128,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:128,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:129,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:129,1
    - Dst: setState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:131,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:135,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:140,1
    - Dst: genericDSAndDNSKEYHandler
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:144,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:147,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:148,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:149,1
    - Dst: addDS
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:150,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:150,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:151,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:151,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:152,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:156,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:157,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:158,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:159,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:160,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:161,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:162,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:165,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:166,1
    - Dst: addDS
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:167,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:168,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:168,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:169,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:174,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:176,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:177,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:178,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:179,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:180,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:183,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:184,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:184,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:185,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:194,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:194,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:195,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:196,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:196,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:197,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:197,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:198,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:200,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:201,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:201,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:202,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:203,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:203,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:204,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:204,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:205,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 67
    argCount: 1
    argNames:
    - fixedNow
    argTypes:
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 206
      start: 113
    functionDepth: 4
    functionLinenumber: 113
    functionLinenumberEnd: 206
    functionName: testFixedPointInTime
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc5.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - genericDSAndDNSKEYHandler
    - primeHints
    - setDNSSECValidation
    - std::unique_ptr::beginResolve
    - isRootServer
    - setState
    - QType
    - generateKeyMaterial
    - addRecordToLW
    - auto::dsAnchors::clear
    - addRRSIG
    - vector::clear
    - BOOST_REQUIRE_EQUAL
    - std::unique_ptr::setAsyncCallback
    - DNSName
    - initSR
    - addDS
    - std::unique_ptr::getValidationState
    - ComboAddress
    - BOOST_CHECK_EQUAL
    - getCopy
    - ComboAddress::toString
    - vector::size
    linkageType: ''
    returnType: void
    signature: void testFixedPointInTime(time_t fixedNow)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: testFixedPointInTime
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:212,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 213
      start: 208
    functionDepth: 5
    functionLinenumber: 208
    functionLinenumberEnd: 213
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc5.cc
    functionUses: 0
    functionsReached:
    - testFixedPointInTime
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_dnssec_secure_various_algos1970)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: testFixedPointInTime
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:219,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 220
      start: 215
    functionDepth: 5
    functionLinenumber: 215
    functionLinenumberEnd: 220
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc5.cc
    functionUses: 0
    functionsReached:
    - testFixedPointInTime
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_dnssec_secure_various_algos2038)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: time_t
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:225,1
    - Dst: testFixedPointInTime
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:226,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 227
      start: 222
    functionDepth: 5
    functionLinenumber: 222
    functionLinenumberEnd: 227
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc5.cc
    functionUses: 0
    functionsReached:
    - testFixedPointInTime
    - time_t
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_dnssec_secure_various_algos2041)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: time_t
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:234,1
    - Dst: testFixedPointInTime
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:235,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 236
      start: 231
    functionDepth: 5
    functionLinenumber: 231
    functionLinenumberEnd: 236
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc5.cc
    functionUses: 0
    functionsReached:
    - testFixedPointInTime
    - time_t
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_dnssec_secure_various_algos2106)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:242,1
    - Dst: setDNSSECValidation
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:244,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:246,1
    - Dst: getCopy
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:251,1
    - Dst: auto::dsAnchors::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:252,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:253,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:254,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:254,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:255,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:255,1
    - Dst: setState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:256,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:260,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:265,1
    - Dst: genericDSAndDNSKEYHandler
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:269,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:272,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:273,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:274,1
    - Dst: addDS
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:275,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:275,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:276,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:276,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:277,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:281,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:282,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:283,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:284,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:285,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:286,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:287,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:290,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:291,1
    - Dst: addDS
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:292,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:293,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:293,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:294,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:299,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:301,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:302,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:303,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:304,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:305,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:308,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:309,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:309,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:310,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:319,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:319,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:320,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:321,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:321,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:322,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:322,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:323,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:326,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:327,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:327,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:328,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:329,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:329,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:330,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:330,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:331,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:335,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:336,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:336,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:337,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:338,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:338,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:339,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:339,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:340,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 73
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 341
      start: 239
    functionDepth: 4
    functionLinenumber: 239
    functionLinenumberEnd: 341
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc5.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - genericDSAndDNSKEYHandler
    - primeHints
    - setDNSSECValidation
    - std::unique_ptr::beginResolve
    - isRootServer
    - setState
    - QType
    - generateKeyMaterial
    - addRecordToLW
    - auto::dsAnchors::clear
    - addRRSIG
    - vector::clear
    - BOOST_REQUIRE_EQUAL
    - std::unique_ptr::setAsyncCallback
    - DNSName
    - initSR
    - addDS
    - std::unique_ptr::getValidationState
    - ComboAddress
    - BOOST_CHECK_EQUAL
    - getCopy
    - ComboAddress::toString
    - vector::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_dnssec_secure_a_then_ns)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:346,1
    - Dst: setDNSSECValidation
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:348,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:350,1
    - Dst: getCopy
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:355,1
    - Dst: auto::dsAnchors::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:356,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:357,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:358,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:358,1
    - Dst: setState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:359,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:363,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:368,1
    - Dst: genericDSAndDNSKEYHandler
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:372,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:375,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:376,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:377,1
    - Dst: addDS
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:378,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:378,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:379,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:379,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:380,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:384,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:385,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:386,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:387,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:388,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:389,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:390,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:393,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:394,1
    - Dst: addNSECRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:396,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:396,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:397,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:397,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:398,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:403,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:405,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:406,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:407,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:410,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:411,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:411,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:420,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:420,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:421,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:422,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:422,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:423,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:423,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:424,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:427,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:428,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:428,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:429,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:430,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:430,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:431,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:431,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:432,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:436,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:437,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:437,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:438,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:439,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:439,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:440,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:440,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:441,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 69
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 442
      start: 343
    functionDepth: 4
    functionLinenumber: 343
    functionLinenumberEnd: 442
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc5.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - genericDSAndDNSKEYHandler
    - primeHints
    - setDNSSECValidation
    - std::unique_ptr::beginResolve
    - isRootServer
    - setState
    - QType
    - generateKeyMaterial
    - addRecordToLW
    - auto::dsAnchors::clear
    - addRRSIG
    - addNSECRecordToLW
    - vector::clear
    - BOOST_REQUIRE_EQUAL
    - std::unique_ptr::setAsyncCallback
    - DNSName
    - initSR
    - addDS
    - std::unique_ptr::getValidationState
    - ComboAddress
    - BOOST_CHECK_EQUAL
    - getCopy
    - ComboAddress::toString
    - vector::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_dnssec_insecure_a_then_ns)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:447,1
    - Dst: setDNSSECValidation
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:449,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:451,1
    - Dst: getCopy
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:456,1
    - Dst: auto::dsAnchors::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:457,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:458,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:459,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:459,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:460,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:460,1
    - Dst: setState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:465,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:469,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:474,1
    - Dst: genericDSAndDNSKEYHandler
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:478,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:481,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:482,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:483,1
    - Dst: addDS
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:484,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:484,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:485,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:485,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:486,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:490,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:491,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:492,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:493,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:494,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:495,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:496,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:499,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:500,1
    - Dst: addDS
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:501,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:502,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:502,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:503,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:508,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:510,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:511,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:512,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:513,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:514,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:517,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:518,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:518,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:519,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:528,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:528,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:529,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:531,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:531,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:532,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:532,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:533,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:536,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:537,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:537,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:538,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:540,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:540,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:541,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:541,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:542,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 68
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 543
      start: 444
    functionDepth: 4
    functionLinenumber: 444
    functionLinenumberEnd: 543
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc5.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - genericDSAndDNSKEYHandler
    - primeHints
    - setDNSSECValidation
    - std::unique_ptr::beginResolve
    - isRootServer
    - setState
    - QType
    - generateKeyMaterial
    - addRecordToLW
    - auto::dsAnchors::clear
    - addRRSIG
    - vector::clear
    - BOOST_REQUIRE_EQUAL
    - std::unique_ptr::setAsyncCallback
    - DNSName
    - initSR
    - addDS
    - std::unique_ptr::getValidationState
    - ComboAddress
    - BOOST_CHECK_EQUAL
    - getCopy
    - ComboAddress::toString
    - vector::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_dnssec_secure_with_nta)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:548,1
    - Dst: setDNSSECValidation
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:550,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:552,1
    - Dst: getCopy
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:557,1
    - Dst: auto::dsAnchors::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:558,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:559,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:560,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:560,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:561,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:561,1
    - Dst: setState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:566,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:570,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:574,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:575,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:579,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:580,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:581,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:582,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:585,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:586,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:587,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:588,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:589,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:592,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:593,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:594,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:598,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:600,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:601,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:602,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:605,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:606,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:606,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:617,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:617,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:618,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:620,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:620,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:621,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:621,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:622,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:625,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:626,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:626,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:627,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:628,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:628,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:629,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:629,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:630,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 59
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 631
      start: 545
    functionDepth: 3
    functionLinenumber: 545
    functionLinenumberEnd: 631
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc5.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - primeHints
    - setDNSSECValidation
    - std::unique_ptr::beginResolve
    - isRootServer
    - setState
    - QType
    - generateKeyMaterial
    - addRecordToLW
    - auto::dsAnchors::clear
    - vector::clear
    - BOOST_REQUIRE_EQUAL
    - std::unique_ptr::setAsyncCallback
    - DNSName
    - initSR
    - std::unique_ptr::getValidationState
    - ComboAddress
    - BOOST_CHECK_EQUAL
    - getCopy
    - ComboAddress::toString
    - vector::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_dnssec_bogus_with_nta)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:636,1
    - Dst: setDNSSECValidation
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:638,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:640,1
    - Dst: getCopy
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:644,1
    - Dst: auto::dsAnchors::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:645,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:646,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:647,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:647,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:648,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:648,1
    - Dst: setState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:650,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:654,1
    - Dst: genericDSAndDNSKEYHandler
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:658,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:661,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:662,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:663,1
    - Dst: addDS
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:664,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:664,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:665,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:665,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:666,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:669,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:670,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:671,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:672,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:673,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:674,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:675,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:678,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:679,1
    - Dst: addDS
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:680,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:681,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:681,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:682,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:686,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:688,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:689,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:690,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:690,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:691,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:692,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:692,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:695,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:696,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:697,1
    - Dst: addNSECRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:698,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:698,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:699,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:709,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:709,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:710,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:711,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:711,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:712,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:712,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:713,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:716,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:717,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:717,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:718,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:719,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:719,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:720,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:720,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:721,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 67
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 722
      start: 633
    functionDepth: 4
    functionLinenumber: 633
    functionLinenumberEnd: 722
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc5.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - genericDSAndDNSKEYHandler
    - primeHints
    - setDNSSECValidation
    - std::unique_ptr::beginResolve
    - isRootServer
    - setState
    - QType
    - generateKeyMaterial
    - addRecordToLW
    - auto::dsAnchors::clear
    - addRRSIG
    - addNSECRecordToLW
    - vector::clear
    - BOOST_REQUIRE_EQUAL
    - std::unique_ptr::setAsyncCallback
    - DNSName
    - initSR
    - addDS
    - std::unique_ptr::getValidationState
    - ComboAddress
    - BOOST_CHECK_EQUAL
    - getCopy
    - vector::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_dnssec_validation_nsec)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:727,1
    - Dst: setDNSSECValidation
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:729,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:731,1
    - Dst: getCopy
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:735,1
    - Dst: auto::dsAnchors::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:736,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:737,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:738,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:738,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:739,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:739,1
    - Dst: setState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:741,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:745,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:750,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:754,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:755,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:755,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:756,1
    - Dst: addNSECRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:757,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:757,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:757,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:758,1
    - Dst: genericDSAndDNSKEYHandler
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:761,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:764,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:765,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:766,1
    - Dst: addDS
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:767,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:767,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:768,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:768,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:769,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:772,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:773,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:774,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:775,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:776,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:777,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:778,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:781,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:782,1
    - Dst: addDS
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:783,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:784,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:784,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:785,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:789,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:791,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:792,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:793,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:794,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:794,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:795,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:796,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:796,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:799,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:800,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:800,1
    - Dst: addNSECRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:801,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:801,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:801,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:802,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:802,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:806,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:807,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:807,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:808,1
    - Dst: addNSECRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:809,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:809,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:809,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:810,1
    - Dst: addNSECRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:812,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:812,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:812,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:813,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:823,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:823,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:824,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:825,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:825,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:826,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:826,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:827,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:830,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:831,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:831,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:832,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:833,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:833,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:834,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:834,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:835,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 87
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 836
      start: 724
    functionDepth: 4
    functionLinenumber: 724
    functionLinenumberEnd: 836
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc5.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - genericDSAndDNSKEYHandler
    - primeHints
    - setDNSSECValidation
    - std::unique_ptr::beginResolve
    - isRootServer
    - setState
    - QType
    - generateKeyMaterial
    - addRecordToLW
    - auto::dsAnchors::clear
    - addRRSIG
    - addNSECRecordToLW
    - vector::clear
    - BOOST_REQUIRE_EQUAL
    - std::unique_ptr::setAsyncCallback
    - DNSName
    - initSR
    - addDS
    - std::unique_ptr::getValidationState
    - ComboAddress
    - BOOST_CHECK_EQUAL
    - getCopy
    - vector::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_dnssec_validation_nxdomain_nsec)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:841,1
    - Dst: setDNSSECValidation
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:843,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:845,1
    - Dst: getCopy
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:849,1
    - Dst: auto::dsAnchors::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:850,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:851,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:852,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:852,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:853,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:853,1
    - Dst: setState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:855,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:859,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:864,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:865,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:865,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:866,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:866,1
    - Dst: addNSECRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:867,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:867,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:867,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:868,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:868,1
    - Dst: genericDSAndDNSKEYHandler
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:871,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:874,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:875,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:876,1
    - Dst: addDS
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:877,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:877,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:878,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:878,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:879,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:882,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:883,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:884,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:885,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:886,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:887,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:888,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:891,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:892,1
    - Dst: addDS
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:893,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:893,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:894,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:894,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:895,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:899,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:900,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:902,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:903,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:904,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:904,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:905,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:906,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:906,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:909,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:910,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:910,1
    - Dst: addNSECRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:911,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:911,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:911,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:912,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:912,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:916,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:917,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:917,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:917,1
    - Dst: addNSECRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:919,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:919,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:919,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:920,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:920,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:930,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:930,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:931,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:932,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:932,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:933,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:933,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:934,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:937,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:938,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:938,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:939,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:940,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:940,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:941,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:941,1
    - Dst: BOOST_CHECK_LE
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:944,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:946,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 83
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 947
      start: 838
    functionDepth: 4
    functionLinenumber: 838
    functionLinenumberEnd: 947
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc5.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - genericDSAndDNSKEYHandler
    - primeHints
    - setDNSSECValidation
    - std::unique_ptr::beginResolve
    - isRootServer
    - BOOST_CHECK_LE
    - setState
    - QType
    - generateKeyMaterial
    - addRecordToLW
    - auto::dsAnchors::clear
    - addRRSIG
    - addNSECRecordToLW
    - vector::clear
    - BOOST_REQUIRE_EQUAL
    - std::unique_ptr::setAsyncCallback
    - DNSName
    - initSR
    - addDS
    - std::unique_ptr::getValidationState
    - ComboAddress
    - BOOST_CHECK_EQUAL
    - getCopy
    - vector::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_dnssec_validation_nsec_wildcard)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:952,1
    - Dst: setDNSSECValidation
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:954,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:956,1
    - Dst: getCopy
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:960,1
    - Dst: auto::dsAnchors::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:961,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:962,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:963,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:963,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:964,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:964,1
    - Dst: setState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:966,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:970,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:975,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:976,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:976,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:977,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:977,1
    - Dst: addNSECRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:978,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:978,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:978,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:979,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:979,1
    - Dst: genericDSAndDNSKEYHandler
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:982,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:985,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:986,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:987,1
    - Dst: addDS
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:988,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:988,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:989,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:989,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:990,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:993,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:994,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:995,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:996,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:997,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:998,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:999,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1002,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1003,1
    - Dst: addDS
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1004,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1004,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1005,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1005,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1006,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1010,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1011,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1013,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1014,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1015,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1015,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1016,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1017,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1017,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1020,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1021,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1021,1
    - Dst: addNSECRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1022,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1022,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1022,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1023,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1023,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1027,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1028,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1028,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1028,1
    - Dst: addNSECRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1030,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1030,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1030,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1031,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1031,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1041,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1041,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1042,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1043,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1043,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1044,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1044,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1045,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1048,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1049,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1049,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1050,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1051,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1051,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1052,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1052,1
    - Dst: BOOST_CHECK_LE
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1055,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1057,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 83
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1058
      start: 949
    functionDepth: 4
    functionLinenumber: 949
    functionLinenumberEnd: 1058
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc5.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - genericDSAndDNSKEYHandler
    - primeHints
    - setDNSSECValidation
    - std::unique_ptr::beginResolve
    - isRootServer
    - BOOST_CHECK_LE
    - setState
    - QType
    - generateKeyMaterial
    - addRecordToLW
    - auto::dsAnchors::clear
    - addRRSIG
    - addNSECRecordToLW
    - vector::clear
    - BOOST_REQUIRE_EQUAL
    - std::unique_ptr::setAsyncCallback
    - DNSName
    - initSR
    - addDS
    - std::unique_ptr::getValidationState
    - ComboAddress
    - BOOST_CHECK_EQUAL
    - getCopy
    - vector::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_dnssec_validation_nsec_wildcard_does_not_deny_next_closer)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1069,1
    - Dst: setDNSSECValidation
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1071,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1073,1
    - Dst: getCopy
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1077,1
    - Dst: auto::dsAnchors::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1078,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1079,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1080,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1080,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1081,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1081,1
    - Dst: setState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1083,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1087,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1092,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1093,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1093,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1094,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1094,1
    - Dst: addNSECRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1095,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1095,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1095,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1096,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1096,1
    - Dst: genericDSAndDNSKEYHandler
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1099,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1102,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1103,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1104,1
    - Dst: addDS
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1105,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1105,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1106,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1106,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1107,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1110,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1111,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1112,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1113,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1114,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1115,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1116,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1119,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1120,1
    - Dst: addDS
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1121,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1121,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1122,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1122,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1123,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1127,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1128,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1130,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1131,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1132,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1132,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1133,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1134,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1134,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1137,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1138,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1138,1
    - Dst: addNSECRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1139,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1139,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1139,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1140,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1140,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1144,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1145,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1145,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1145,1
    - Dst: addNSECRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1147,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1147,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1147,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1148,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1148,1
    - Dst: std::swap
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1151,1
    - Dst: d_records::at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1151,1
    - Dst: d_records::at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1151,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1161,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1161,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1162,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1163,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1163,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1164,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1164,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1165,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1168,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1169,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1169,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1170,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1171,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1171,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1172,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1172,1
    - Dst: BOOST_CHECK_LE
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1175,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1177,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 84
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1178
      start: 1060
    functionDepth: 4
    functionLinenumber: 1060
    functionLinenumberEnd: 1178
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc5.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - genericDSAndDNSKEYHandler
    - std::swap
    - primeHints
    - setDNSSECValidation
    - std::unique_ptr::beginResolve
    - isRootServer
    - BOOST_CHECK_LE
    - setState
    - QType
    - generateKeyMaterial
    - addRecordToLW
    - auto::dsAnchors::clear
    - addRRSIG
    - addNSECRecordToLW
    - vector::clear
    - BOOST_REQUIRE_EQUAL
    - std::unique_ptr::setAsyncCallback
    - DNSName
    - initSR
    - addDS
    - std::unique_ptr::getValidationState
    - d_records::at
    - ComboAddress
    - BOOST_CHECK_EQUAL
    - getCopy
    - vector::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_dnssec_validation_nsec_wildcard_proof_before_rrsig)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1188,1
    - Dst: setDNSSECValidation
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1190,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1192,1
    - Dst: getCopy
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1197,1
    - Dst: auto::dsAnchors::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1198,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1199,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1200,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1200,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1201,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1201,1
    - Dst: setState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1203,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1207,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1212,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1213,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1213,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1214,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1214,1
    - Dst: addNSECRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1215,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1215,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1215,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1216,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1216,1
    - Dst: genericDSAndDNSKEYHandler
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1219,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1221,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1222,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1223,1
    - Dst: addDS
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1224,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1224,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1225,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1225,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1226,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1229,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1230,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1231,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1232,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1233,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1234,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1235,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1238,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1239,1
    - Dst: addDS
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1240,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1240,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1241,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1241,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1242,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1246,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1247,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1249,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1250,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1251,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1251,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1252,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1253,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1253,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1256,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1257,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1257,1
    - Dst: addNSECRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1258,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1258,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1258,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1259,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1259,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1263,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1264,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1264,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1264,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1269,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1270,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1270,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1279,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1279,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1280,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1281,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1281,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1282,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1282,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1283,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1286,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1287,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1287,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1288,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1289,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1289,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1290,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1290,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1291,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 83
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1292
      start: 1180
    functionDepth: 4
    functionLinenumber: 1180
    functionLinenumberEnd: 1292
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc5.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - genericDSAndDNSKEYHandler
    - primeHints
    - setDNSSECValidation
    - std::unique_ptr::beginResolve
    - isRootServer
    - setState
    - QType
    - generateKeyMaterial
    - addRecordToLW
    - auto::dsAnchors::clear
    - addRRSIG
    - addNSECRecordToLW
    - vector::clear
    - BOOST_REQUIRE_EQUAL
    - std::unique_ptr::setAsyncCallback
    - DNSName
    - initSR
    - addDS
    - std::unique_ptr::getValidationState
    - ComboAddress
    - BOOST_CHECK_EQUAL
    - getCopy
    - vector::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_dnssec_validation_nsec_wildcard_proof_cname)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1297,1
    - Dst: setDNSSECValidation
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1299,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1301,1
    - Dst: getCopy
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1305,1
    - Dst: auto::dsAnchors::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1306,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1307,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1308,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1308,1
    - Dst: setState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1310,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1314,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1320,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1322,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1323,1
    - Dst: addNSECRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1325,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1325,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1326,1
    - Dst: genericDSAndDNSKEYHandler
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1329,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1332,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1333,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1334,1
    - Dst: addDS
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1335,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1335,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1336,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1336,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1337,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1340,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1341,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1343,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1343,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1344,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1344,1
    - Dst: addNSECRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1346,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1346,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1346,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1347,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1347,1
    - Dst: addNSECRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1349,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1349,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1349,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1350,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1350,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1350,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1359,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1359,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1360,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1361,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1361,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1362,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1362,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1363,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1366,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1367,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1367,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1368,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1369,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1369,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1370,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1370,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1371,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 52
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1372
      start: 1294
    functionDepth: 4
    functionLinenumber: 1294
    functionLinenumberEnd: 1372
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc5.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - genericDSAndDNSKEYHandler
    - primeHints
    - setDNSSECValidation
    - std::unique_ptr::beginResolve
    - isRootServer
    - setState
    - QType
    - generateKeyMaterial
    - addRecordToLW
    - auto::dsAnchors::clear
    - addRRSIG
    - addNSECRecordToLW
    - vector::clear
    - BOOST_REQUIRE_EQUAL
    - std::unique_ptr::setAsyncCallback
    - DNSName
    - initSR
    - addDS
    - std::unique_ptr::getValidationState
    - ComboAddress
    - BOOST_CHECK_EQUAL
    - getCopy
    - vector::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_dnssec_validation_nsec_nodata_nowildcard)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1377,1
    - Dst: setDNSSECValidation
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1379,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1381,1
    - Dst: getCopy
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1385,1
    - Dst: auto::dsAnchors::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1386,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1387,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1388,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1388,1
    - Dst: setState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1390,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1394,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1400,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1402,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1403,1
    - Dst: addNSEC3UnhashedRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1406,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1406,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1407,1
    - Dst: addNSEC3NarrowRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1409,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1409,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1410,1
    - Dst: addNSEC3UnhashedRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1412,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1412,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1412,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1413,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1413,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1413,1
    - Dst: genericDSAndDNSKEYHandler
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1416,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1419,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1420,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1421,1
    - Dst: addDS
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1422,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1422,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1423,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1423,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1424,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1427,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1428,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1430,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1430,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1431,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1431,1
    - Dst: addNSEC3UnhashedRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1434,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1434,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1434,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1435,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1435,1
    - Dst: addNSEC3NarrowRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1437,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1437,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1438,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1438,1
    - Dst: addNSEC3UnhashedRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1440,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1440,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1440,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1441,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1441,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1441,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1450,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1450,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1451,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1452,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1452,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1453,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1453,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1454,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1457,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1458,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1458,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1459,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1460,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1460,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1461,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1461,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1462,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 58
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1463
      start: 1374
    functionDepth: 4
    functionLinenumber: 1374
    functionLinenumberEnd: 1463
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc5.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - genericDSAndDNSKEYHandler
    - primeHints
    - setDNSSECValidation
    - std::unique_ptr::beginResolve
    - isRootServer
    - setState
    - QType
    - generateKeyMaterial
    - addRecordToLW
    - auto::dsAnchors::clear
    - addRRSIG
    - vector::clear
    - BOOST_REQUIRE_EQUAL
    - std::unique_ptr::setAsyncCallback
    - addNSEC3UnhashedRecordToLW
    - DNSName
    - initSR
    - addDS
    - std::unique_ptr::getValidationState
    - ComboAddress
    - addNSEC3NarrowRecordToLW
    - BOOST_CHECK_EQUAL
    - getCopy
    - vector::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_dnssec_validation_nsec3_nodata_nowildcard)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1468,1
    - Dst: setDNSSECValidation
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1470,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1472,1
    - Dst: getCopy
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1476,1
    - Dst: auto::dsAnchors::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1477,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1478,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1479,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1479,1
    - Dst: setState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1481,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1485,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1491,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1493,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1494,1
    - Dst: addNSEC3UnhashedRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1497,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1497,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1498,1
    - Dst: addNSEC3NarrowRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1500,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1500,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1501,1
    - Dst: addNSEC3UnhashedRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1503,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1503,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1503,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1504,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1504,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1504,1
    - Dst: genericDSAndDNSKEYHandler
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1507,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1510,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1511,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1512,1
    - Dst: addDS
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1513,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1513,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1514,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1514,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1515,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1518,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1519,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1521,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1521,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1522,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1522,1
    - Dst: addNSEC3UnhashedRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1525,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1525,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1525,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1526,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1526,1
    - Dst: addNSEC3NarrowRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1528,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1528,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1529,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1529,1
    - Dst: addNSEC3UnhashedRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1531,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1531,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1531,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1532,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1532,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1532,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1545,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1545,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1546,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1547,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1547,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1548,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1548,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1549,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 54
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1552
      start: 1465
    functionDepth: 4
    functionLinenumber: 1465
    functionLinenumberEnd: 1552
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc5.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - genericDSAndDNSKEYHandler
    - primeHints
    - setDNSSECValidation
    - std::unique_ptr::beginResolve
    - isRootServer
    - setState
    - QType
    - generateKeyMaterial
    - addRecordToLW
    - auto::dsAnchors::clear
    - addRRSIG
    - BOOST_REQUIRE_EQUAL
    - std::unique_ptr::setAsyncCallback
    - addNSEC3UnhashedRecordToLW
    - DNSName
    - initSR
    - addDS
    - std::unique_ptr::getValidationState
    - ComboAddress
    - addNSEC3NarrowRecordToLW
    - BOOST_CHECK_EQUAL
    - getCopy
    - vector::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_dnssec_validation_nsec3_too_many_nsec3s)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1558,1
    - Dst: setDNSSECValidation
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1560,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1562,1
    - Dst: getCopy
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1566,1
    - Dst: auto::dsAnchors::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1567,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1568,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1569,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1569,1
    - Dst: setState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1571,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1575,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1581,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1583,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1584,1
    - Dst: addNSEC3UnhashedRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1587,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1587,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1588,1
    - Dst: addNSEC3NarrowRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1590,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1590,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1591,1
    - Dst: addNSEC3UnhashedRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1593,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1593,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1593,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1594,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1594,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1594,1
    - Dst: genericDSAndDNSKEYHandler
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1597,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1600,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1601,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1602,1
    - Dst: addDS
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1603,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1603,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1604,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1604,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1605,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1608,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1609,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1611,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1611,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1612,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1612,1
    - Dst: addNSEC3UnhashedRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1615,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1615,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1615,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1616,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1616,1
    - Dst: addNSEC3NarrowRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1618,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1618,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1619,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1619,1
    - Dst: addNSEC3UnhashedRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1621,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1621,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1621,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1622,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1622,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1622,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1631,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1631,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1631,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 51
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1634
      start: 1554
    functionDepth: 4
    functionLinenumber: 1554
    functionLinenumberEnd: 1634
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc5.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - genericDSAndDNSKEYHandler
    - primeHints
    - setDNSSECValidation
    - BOOST_CHECK_THROW
    - std::unique_ptr::beginResolve
    - isRootServer
    - setState
    - QType
    - generateKeyMaterial
    - addRecordToLW
    - auto::dsAnchors::clear
    - addRRSIG
    - std::unique_ptr::setAsyncCallback
    - addNSEC3UnhashedRecordToLW
    - DNSName
    - initSR
    - addDS
    - ComboAddress
    - addNSEC3NarrowRecordToLW
    - getCopy
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_dnssec_validation_nsec3_too_many_nsec3s_per_query)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1639,1
    - Dst: setDNSSECValidation
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1641,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1643,1
    - Dst: getCopy
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1647,1
    - Dst: auto::dsAnchors::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1648,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1649,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1650,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1650,1
    - Dst: setState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1652,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1656,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1662,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1664,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1665,1
    - Dst: addNSEC3UnhashedRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1668,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1668,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1669,1
    - Dst: addNSEC3NarrowRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1671,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1671,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1672,1
    - Dst: addNSEC3UnhashedRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1674,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1674,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1674,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1675,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1675,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1675,1
    - Dst: genericDSAndDNSKEYHandler
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1678,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1681,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1682,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1683,1
    - Dst: addDS
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1684,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1684,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1685,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1685,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1686,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1690,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1691,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1693,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1693,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1694,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1694,1
    - Dst: addNSEC3UnhashedRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1697,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1697,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1697,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1698,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1698,1
    - Dst: addNSEC3UnhashedRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1700,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1700,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1700,1
    - Dst: addNSEC3NarrowRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1702,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1702,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1703,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1703,1
    - Dst: addNSEC3UnhashedRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1705,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1705,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1705,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1706,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1706,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1706,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1715,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1715,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1716,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1717,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1717,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1719,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1719,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1720,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1723,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1724,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1724,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1725,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1726,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1726,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1728,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1728,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1729,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 59
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1730
      start: 1636
    functionDepth: 4
    functionLinenumber: 1636
    functionLinenumberEnd: 1730
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc5.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - genericDSAndDNSKEYHandler
    - primeHints
    - setDNSSECValidation
    - std::unique_ptr::beginResolve
    - isRootServer
    - setState
    - QType
    - generateKeyMaterial
    - addRecordToLW
    - auto::dsAnchors::clear
    - addRRSIG
    - vector::clear
    - BOOST_REQUIRE_EQUAL
    - std::unique_ptr::setAsyncCallback
    - addNSEC3UnhashedRecordToLW
    - DNSName
    - initSR
    - addDS
    - std::unique_ptr::getValidationState
    - ComboAddress
    - addNSEC3NarrowRecordToLW
    - BOOST_CHECK_EQUAL
    - getCopy
    - vector::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_dnssec_validation_nsec3_nodata_nowildcard_duplicated_nsec3)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1735,1
    - Dst: setDNSSECValidation
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1737,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1739,1
    - Dst: getCopy
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1743,1
    - Dst: auto::dsAnchors::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1744,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1745,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1746,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1746,1
    - Dst: setState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1748,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1752,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1758,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1760,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1761,1
    - Dst: addNSEC3UnhashedRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1764,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1764,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1765,1
    - Dst: addNSEC3NarrowRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1767,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1767,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1768,1
    - Dst: addNSEC3UnhashedRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1770,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1770,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1770,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1771,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1771,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1771,1
    - Dst: genericDSAndDNSKEYHandler
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1774,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1777,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1778,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1779,1
    - Dst: addDS
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1780,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1780,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1781,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1781,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1782,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1785,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1786,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1788,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1788,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1789,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1789,1
    - Dst: addNSEC3UnhashedRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1792,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1792,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1792,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1793,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1793,1
    - Dst: addNSEC3NarrowRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1795,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1795,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1796,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1796,1
    - Dst: addNSEC3UnhashedRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1798,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1798,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1798,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1799,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1799,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1799,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1809,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1809,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1810,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1811,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1811,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1812,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1812,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1813,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1816,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1817,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1817,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1818,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1819,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1819,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1820,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1820,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1821,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 58
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1822
      start: 1732
    functionDepth: 4
    functionLinenumber: 1732
    functionLinenumberEnd: 1822
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc5.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - genericDSAndDNSKEYHandler
    - primeHints
    - setDNSSECValidation
    - std::unique_ptr::beginResolve
    - isRootServer
    - setState
    - QType
    - generateKeyMaterial
    - addRecordToLW
    - auto::dsAnchors::clear
    - addRRSIG
    - vector::clear
    - BOOST_REQUIRE_EQUAL
    - std::unique_ptr::setAsyncCallback
    - addNSEC3UnhashedRecordToLW
    - DNSName
    - initSR
    - addDS
    - std::unique_ptr::getValidationState
    - ComboAddress
    - addNSEC3NarrowRecordToLW
    - BOOST_CHECK_EQUAL
    - getCopy
    - vector::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_dnssec_validation_nsec3_nodata_nowildcard_too_many_iterations)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1827,1
    - Dst: setDNSSECValidation
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1829,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1831,1
    - Dst: getCopy
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1835,1
    - Dst: auto::dsAnchors::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1836,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1837,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1838,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1838,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1839,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1839,1
    - Dst: setState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1841,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1845,1
    - Dst: isPartOf
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1849,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1849,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1850,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1851,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1851,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1852,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1852,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1853,1
    - Dst: addNSECRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1854,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1854,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1854,1
    - Dst: addNSECRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1857,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1857,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1857,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1859,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1859,1
    - Dst: genericDSAndDNSKEYHandler
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1862,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1865,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1866,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1867,1
    - Dst: addDS
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1868,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1868,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1869,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1869,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1870,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1873,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1874,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1875,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1876,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1877,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1878,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1879,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1882,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1883,1
    - Dst: addDS
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1884,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1884,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1885,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1885,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1886,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1890,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1891,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1893,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1894,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1895,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1895,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1896,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1897,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1897,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1900,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1901,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1901,1
    - Dst: addNSECRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1902,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1902,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1902,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1903,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1903,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1907,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1908,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1908,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1908,1
    - Dst: addNSEC3UnhashedRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1911,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1911,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1911,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1912,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1912,1
    - Dst: addNSEC3NarrowRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1914,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1914,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1914,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1915,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1915,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1925,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1925,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1926,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1927,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1927,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1928,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1928,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1929,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1932,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1933,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1933,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1934,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1935,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1935,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1936,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1936,1
    - Dst: BOOST_CHECK_LE
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1939,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1941,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 90
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1942
      start: 1824
    functionDepth: 4
    functionLinenumber: 1824
    functionLinenumberEnd: 1942
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc5.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - genericDSAndDNSKEYHandler
    - primeHints
    - setDNSSECValidation
    - std::unique_ptr::beginResolve
    - isRootServer
    - BOOST_CHECK_LE
    - setState
    - QType
    - generateKeyMaterial
    - addRecordToLW
    - auto::dsAnchors::clear
    - addRRSIG
    - addNSECRecordToLW
    - vector::clear
    - BOOST_REQUIRE_EQUAL
    - std::unique_ptr::setAsyncCallback
    - isPartOf
    - addNSEC3UnhashedRecordToLW
    - DNSName
    - initSR
    - addDS
    - std::unique_ptr::getValidationState
    - ComboAddress
    - addNSEC3NarrowRecordToLW
    - BOOST_CHECK_EQUAL
    - getCopy
    - vector::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_dnssec_validation_nsec3_wildcard)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1947,1
    - Dst: setDNSSECValidation
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1949,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1951,1
    - Dst: getCopy
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1956,1
    - Dst: auto::dsAnchors::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1957,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1958,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1959,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1959,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1960,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1960,1
    - Dst: setState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1962,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1966,1
    - Dst: genericDSAndDNSKEYHandler
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1970,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1972,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1973,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1974,1
    - Dst: addDS
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1975,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1975,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1976,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1976,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1977,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1980,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1981,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1982,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1983,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1984,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1985,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1986,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1989,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1990,1
    - Dst: addDS
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1991,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1991,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1992,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1992,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1993,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1997,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:1998,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2000,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2001,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2002,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2002,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2003,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2004,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2004,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2007,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2008,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2008,1
    - Dst: addNSECRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2009,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2009,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2009,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2010,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2010,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2015,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2016,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2016,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2016,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2022,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2023,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2023,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2023,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2033,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2033,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2034,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2035,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2035,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2036,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2036,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2037,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2040,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2041,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2041,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2042,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2043,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2043,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2044,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2044,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2045,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 76
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2046
      start: 1944
    functionDepth: 4
    functionLinenumber: 1944
    functionLinenumberEnd: 2046
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc5.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - genericDSAndDNSKEYHandler
    - primeHints
    - setDNSSECValidation
    - std::unique_ptr::beginResolve
    - isRootServer
    - setState
    - QType
    - generateKeyMaterial
    - addRecordToLW
    - auto::dsAnchors::clear
    - addRRSIG
    - addNSECRecordToLW
    - vector::clear
    - BOOST_REQUIRE_EQUAL
    - std::unique_ptr::setAsyncCallback
    - DNSName
    - initSR
    - addDS
    - std::unique_ptr::getValidationState
    - ComboAddress
    - BOOST_CHECK_EQUAL
    - getCopy
    - vector::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_dnssec_validation_nsec3_wildcard_proof_cname)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2051,1
    - Dst: setDNSSECValidation
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2053,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2055,1
    - Dst: getCopy
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2059,1
    - Dst: auto::dsAnchors::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2060,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2061,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2062,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2062,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2063,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2063,1
    - Dst: setState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2065,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2069,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2074,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2075,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2075,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2076,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2076,1
    - Dst: addNSECRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2077,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2077,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2077,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2078,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2078,1
    - Dst: genericDSAndDNSKEYHandler
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2081,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2084,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2085,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2086,1
    - Dst: addDS
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2087,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2087,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2088,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2088,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2089,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2092,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2093,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2094,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2095,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2096,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2097,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2098,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2101,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2102,1
    - Dst: addDS
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2103,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2103,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2104,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2104,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2105,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2109,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2110,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2112,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2113,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2114,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2114,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2115,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2116,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2116,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2119,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2120,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2120,1
    - Dst: addNSECRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2121,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2121,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2121,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2122,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2122,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2126,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2127,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2127,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2127,1
    - Dst: addNSEC3UnhashedRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2130,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2130,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2130,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2131,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2131,1
    - Dst: addNSEC3NarrowRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2133,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2133,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2133,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2134,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2134,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2146,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2146,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2147,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2148,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2148,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2149,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2149,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2150,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2153,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2154,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2154,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2155,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2156,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2156,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2157,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2157,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2158,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 83
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2159
      start: 2048
    functionDepth: 4
    functionLinenumber: 2048
    functionLinenumberEnd: 2159
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc5.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - genericDSAndDNSKEYHandler
    - primeHints
    - setDNSSECValidation
    - std::unique_ptr::beginResolve
    - isRootServer
    - setState
    - QType
    - generateKeyMaterial
    - addRecordToLW
    - auto::dsAnchors::clear
    - addRRSIG
    - addNSECRecordToLW
    - vector::clear
    - BOOST_REQUIRE_EQUAL
    - std::unique_ptr::setAsyncCallback
    - addNSEC3UnhashedRecordToLW
    - DNSName
    - initSR
    - addDS
    - std::unique_ptr::getValidationState
    - ComboAddress
    - addNSEC3NarrowRecordToLW
    - BOOST_CHECK_EQUAL
    - getCopy
    - vector::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_dnssec_validation_nsec3_wildcard_too_many_iterations)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2164,1
    - Dst: setDNSSECValidation
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2166,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2168,1
    - Dst: getCopy
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2172,1
    - Dst: auto::dsAnchors::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2173,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2174,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2175,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2175,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2176,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2176,1
    - Dst: setState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2178,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2182,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2187,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2188,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2188,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2189,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2189,1
    - Dst: addNSECRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2190,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2190,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2190,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2191,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2191,1
    - Dst: genericDSAndDNSKEYHandler
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2194,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2197,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2198,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2199,1
    - Dst: addDS
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2200,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2200,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2201,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2201,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2202,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2205,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2206,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2207,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2208,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2209,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2210,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2211,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2214,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2215,1
    - Dst: addDS
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2216,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2216,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2217,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2217,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2218,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2222,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2223,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2225,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2226,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2227,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2227,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2228,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2229,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2229,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2232,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2233,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2233,1
    - Dst: addNSECRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2234,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2234,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2234,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2235,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2235,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2239,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2240,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2240,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2240,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2250,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2250,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2251,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2252,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2252,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2253,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2253,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2254,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2257,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2258,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2258,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2259,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2260,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2260,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2261,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2261,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2262,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 79
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2263
      start: 2161
    functionDepth: 4
    functionLinenumber: 2161
    functionLinenumberEnd: 2263
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc5.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - genericDSAndDNSKEYHandler
    - primeHints
    - setDNSSECValidation
    - std::unique_ptr::beginResolve
    - isRootServer
    - setState
    - QType
    - generateKeyMaterial
    - addRecordToLW
    - auto::dsAnchors::clear
    - addRRSIG
    - addNSECRecordToLW
    - vector::clear
    - BOOST_REQUIRE_EQUAL
    - std::unique_ptr::setAsyncCallback
    - DNSName
    - initSR
    - addDS
    - std::unique_ptr::getValidationState
    - ComboAddress
    - BOOST_CHECK_EQUAL
    - getCopy
    - vector::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_dnssec_validation_nsec_wildcard_missing)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2268,1
    - Dst: setDNSSECValidation
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2270,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2272,1
    - Dst: getCopy
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2276,1
    - Dst: auto::dsAnchors::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2277,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2278,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2279,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2279,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2280,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2280,1
    - Dst: setState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2282,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2284,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2287,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2289,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2290,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2291,1
    - Dst: addNSECRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2294,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2294,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2295,1
    - Dst: genericDSAndDNSKEYHandler
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2298,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2301,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2302,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2303,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2303,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2303,1
    - Dst: addNSECRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2306,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2306,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2306,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2307,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2307,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2307,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2313,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2313,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2314,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2315,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2315,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2317,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2317,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 32
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2318
      start: 2265
    functionDepth: 4
    functionLinenumber: 2265
    functionLinenumberEnd: 2318
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc5.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - genericDSAndDNSKEYHandler
    - primeHints
    - setDNSSECValidation
    - std::unique_ptr::beginResolve
    - setState
    - QType
    - generateKeyMaterial
    - addRecordToLW
    - auto::dsAnchors::clear
    - addRRSIG
    - addNSECRecordToLW
    - BOOST_REQUIRE_EQUAL
    - std::unique_ptr::setAsyncCallback
    - DNSName
    - initSR
    - std::unique_ptr::getValidationState
    - BOOST_CHECK_EQUAL
    - getCopy
    - vector::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_dnssec_validation_wildcard_expanded_onto_itself)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2323,1
    - Dst: setDNSSECValidation
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2325,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2327,1
    - Dst: getCopy
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2331,1
    - Dst: auto::dsAnchors::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2332,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2333,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2334,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2334,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2335,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2335,1
    - Dst: setState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2337,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2339,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2342,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2344,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2345,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2346,1
    - Dst: addNSECRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2349,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2349,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2350,1
    - Dst: genericDSAndDNSKEYHandler
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2353,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2356,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2357,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2358,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2358,1
    - Dst: addNSECRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2360,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2360,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2360,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2361,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2361,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2361,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2367,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2367,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2368,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2369,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2369,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2371,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2371,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 32
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2372
      start: 2320
    functionDepth: 4
    functionLinenumber: 2320
    functionLinenumberEnd: 2372
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc5.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - genericDSAndDNSKEYHandler
    - primeHints
    - setDNSSECValidation
    - std::unique_ptr::beginResolve
    - setState
    - QType
    - generateKeyMaterial
    - addRecordToLW
    - auto::dsAnchors::clear
    - addRRSIG
    - addNSECRecordToLW
    - BOOST_REQUIRE_EQUAL
    - std::unique_ptr::setAsyncCallback
    - DNSName
    - initSR
    - std::unique_ptr::getValidationState
    - BOOST_CHECK_EQUAL
    - getCopy
    - vector::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_dnssec_validation_wildcard_expanded_onto_itself_nodata)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2377,1
    - Dst: setDNSSECValidation
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2379,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2381,1
    - Dst: getCopy
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2385,1
    - Dst: auto::dsAnchors::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2386,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2387,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2388,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2388,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2389,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2389,1
    - Dst: setState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2391,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2393,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2396,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2398,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2399,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2400,1
    - Dst: addNSECRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2401,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2401,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2401,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2402,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2402,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2402,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2405,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2406,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2408,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2409,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2410,1
    - Dst: addNSECRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2412,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2412,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2412,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2413,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2413,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2413,1
    - Dst: genericDSAndDNSKEYHandler
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2416,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2419,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2420,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2421,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2421,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2421,1
    - Dst: addNSECRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2422,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2422,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2422,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2423,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2423,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2423,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2429,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2429,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2430,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2431,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2431,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2433,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2433,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 40
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2434
      start: 2374
    functionDepth: 4
    functionLinenumber: 2374
    functionLinenumberEnd: 2434
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc5.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - genericDSAndDNSKEYHandler
    - primeHints
    - setDNSSECValidation
    - std::unique_ptr::beginResolve
    - setState
    - QType
    - generateKeyMaterial
    - addRecordToLW
    - auto::dsAnchors::clear
    - addRRSIG
    - addNSECRecordToLW
    - BOOST_REQUIRE_EQUAL
    - std::unique_ptr::setAsyncCallback
    - DNSName
    - initSR
    - std::unique_ptr::getValidationState
    - BOOST_CHECK_EQUAL
    - getCopy
    - vector::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_dnssec_validation_wildcard_like_expanded_from_wildcard)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2440,1
    - Dst: std::unique_ptr::setQNameMinimization
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2441,1
    - Dst: setDNSSECValidation
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2442,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2444,1
    - Dst: getCopy
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2447,1
    - Dst: auto::dsAnchors::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2448,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2449,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2450,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2450,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2451,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2451,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2452,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2452,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2453,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2453,1
    - Dst: setState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2454,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2458,1
    - Dst: genericDSAndDNSKEYHandler
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2470,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2473,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2475,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2476,1
    - Dst: addDS
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2477,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2478,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2479,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2482,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2483,1
    - Dst: addDS
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2484,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2485,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2486,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2489,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2490,1
    - Dst: addNSECRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2491,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2491,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2492,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2493,1
    - Dst: BOOST_ASSERT
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2496,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2501,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2503,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2504,1
    - Dst: addDS
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2505,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2506,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2509,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2510,1
    - Dst: addNSECRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2511,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2511,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2512,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2513,1
    - Dst: BOOST_ASSERT
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2516,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2520,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2525,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2526,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2527,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2530,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2531,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2534,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2535,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2538,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2539,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2542,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2543,1
    - Dst: BOOST_ASSERT
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2546,1
    - Dst: BOOST_ASSERT
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2550,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2555,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2555,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2555,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2556,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2557,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2557,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2558,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2558,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2559,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2561,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2562,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2562,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2562,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2563,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2564,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2564,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2565,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2565,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2566,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 100
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2567
      start: 2437
    functionDepth: 4
    functionLinenumber: 2437
    functionLinenumberEnd: 2567
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc5.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - genericDSAndDNSKEYHandler
    - primeHints
    - setDNSSECValidation
    - std::unique_ptr::beginResolve
    - isRootServer
    - setState
    - QType
    - generateKeyMaterial
    - addRecordToLW
    - auto::dsAnchors::clear
    - addRRSIG
    - addNSECRecordToLW
    - vector::clear
    - BOOST_REQUIRE_EQUAL
    - std::unique_ptr::setAsyncCallback
    - BOOST_ASSERT
    - DNSName
    - initSR
    - addDS
    - std::unique_ptr::getValidationState
    - ComboAddress
    - std::unique_ptr::setQNameMinimization
    - BOOST_CHECK_EQUAL
    - getCopy
    - vector::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_dnssec_incomplete_cache_zonecut_qm)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2572,1
    - Dst: setDNSSECValidation
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2574,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2576,1
    - Dst: getCopy
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2581,1
    - Dst: auto::dsAnchors::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2582,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2583,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2584,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2584,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2585,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2585,1
    - Dst: setState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2587,1
    - Dst: std::unique_ptr::getNow
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2595,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2597,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2602,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2605,1
    - Dst: genericDSAndDNSKEYHandler
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2611,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2614,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2615,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2616,1
    - Dst: addDS
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2617,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2617,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2618,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2618,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2619,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2623,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2624,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2625,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2626,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2627,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2628,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2629,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2632,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2633,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2637,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2642,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2644,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2645,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2646,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2647,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2648,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2651,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2652,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2652,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2653,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2663,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2663,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2664,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2667,1
    - Dst: reason::find
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2667,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2672,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2672,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2673,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2676,1
    - Dst: reason::find
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2676,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 70
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2678
      start: 2569
    functionDepth: 4
    functionLinenumber: 2569
    functionLinenumberEnd: 2678
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc5.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - genericDSAndDNSKEYHandler
    - primeHints
    - reason::find
    - setDNSSECValidation
    - std::unique_ptr::beginResolve
    - isRootServer
    - setState
    - QType
    - generateKeyMaterial
    - addRecordToLW
    - auto::dsAnchors::clear
    - addRRSIG
    - std::unique_ptr::setAsyncCallback
    - DNSName
    - initSR
    - std::unique_ptr::getNow
    - addDS
    - ComboAddress
    - getCopy
    - ComboAddress::toString
    - BOOST_CHECK
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_dnssec_secure_servfail_ds)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2683,1
    - Dst: setDNSSECValidation
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2685,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2687,1
    - Dst: getCopy
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2692,1
    - Dst: auto::dsAnchors::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2693,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2694,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2695,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2695,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2696,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2696,1
    - Dst: setState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2698,1
    - Dst: std::unique_ptr::getNow
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2706,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2708,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2713,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2716,1
    - Dst: genericDSAndDNSKEYHandler
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2722,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2725,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2726,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2727,1
    - Dst: addDS
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2728,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2728,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2729,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2729,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2730,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2734,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2735,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2736,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2737,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2738,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2739,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2740,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2743,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2744,1
    - Dst: addDS
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2745,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2746,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2746,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2747,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2752,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2754,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2755,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2756,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2757,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2758,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2761,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2762,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2762,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2763,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2773,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2773,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2774,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2777,1
    - Dst: reason::find
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2777,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2782,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2782,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2783,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2786,1
    - Dst: reason::find
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2786,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 72
    argCount: 1
    argNames:
    - mode
    argTypes:
    - DNSSECMode
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2788
      start: 2680
    functionDepth: 4
    functionLinenumber: 2680
    functionLinenumberEnd: 2788
    functionName: dnssec_secure_servfail_dnskey
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc5.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - genericDSAndDNSKEYHandler
    - primeHints
    - reason::find
    - setDNSSECValidation
    - std::unique_ptr::beginResolve
    - isRootServer
    - setState
    - QType
    - generateKeyMaterial
    - addRecordToLW
    - auto::dsAnchors::clear
    - addRRSIG
    - std::unique_ptr::setAsyncCallback
    - DNSName
    - initSR
    - std::unique_ptr::getNow
    - addDS
    - ComboAddress
    - getCopy
    - ComboAddress::toString
    - BOOST_CHECK
    linkageType: ''
    returnType: void
    signature: void dnssec_secure_servfail_dnskey(DNSSECMode mode, vState /* expectedValidationResult
      */)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dnssec_secure_servfail_dnskey
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2792,1
    - Dst: dnssec_secure_servfail_dnskey
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2793,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2794
      start: 2790
    functionDepth: 5
    functionLinenumber: 2790
    functionLinenumberEnd: 2794
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc5.cc
    functionUses: 0
    functionsReached:
    - dnssec_secure_servfail_dnskey
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_dnssec_secure_servfail_dnskey)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2801,1
    - Dst: setDNSSECValidation
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2803,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2805,1
    - Dst: getCopy
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2814,1
    - Dst: auto::dsAnchors::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2815,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2816,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2817,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2817,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2818,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2818,1
    - Dst: setState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2820,1
    - Dst: std::unique_ptr::getNow
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2828,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2830,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2835,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2838,1
    - Dst: genericDSAndDNSKEYHandler
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2845,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2848,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2849,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2850,1
    - Dst: addDS
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2851,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2851,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2852,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2852,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2853,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2857,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2858,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2859,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2860,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2861,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2862,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2863,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2866,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2867,1
    - Dst: addDS
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2868,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2869,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2869,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2870,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2875,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2877,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2878,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2879,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2880,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2881,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2884,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2885,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2885,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2886,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2895,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2895,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2896,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2897,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2897,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2898,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2898,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 63
    argCount: 2
    argNames:
    - mode
    - expectedValidationResult
    argTypes:
    - DNSSECMode
    - vState
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2899
      start: 2798
    functionDepth: 4
    functionLinenumber: 2798
    functionLinenumberEnd: 2899
    functionName: dnssec_secure_servfail_dnskey_insecure
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc5.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - genericDSAndDNSKEYHandler
    - primeHints
    - setDNSSECValidation
    - std::unique_ptr::beginResolve
    - isRootServer
    - setState
    - QType
    - generateKeyMaterial
    - addRecordToLW
    - auto::dsAnchors::clear
    - addRRSIG
    - BOOST_REQUIRE_EQUAL
    - std::unique_ptr::setAsyncCallback
    - DNSName
    - initSR
    - std::unique_ptr::getNow
    - addDS
    - std::unique_ptr::getValidationState
    - ComboAddress
    - BOOST_CHECK_EQUAL
    - getCopy
    - ComboAddress::toString
    - vector::size
    linkageType: ''
    returnType: void
    signature: void dnssec_secure_servfail_dnskey_insecure(DNSSECMode mode, vState
      expectedValidationResult)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dnssec_secure_servfail_dnskey_insecure
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2903,1
    - Dst: dnssec_secure_servfail_dnskey_insecure
      Src: /src/pdns/pdns/recursordist/test-syncres_cc5.cc:2904,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2905
      start: 2901
    functionDepth: 5
    functionLinenumber: 2901
    functionLinenumberEnd: 2905
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc5.cc
    functionUses: 0
    functionsReached:
    - dnssec_secure_servfail_dnskey_insecure
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_dnssec_secure_servfail_dnskey_insecure)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/recursordist/ixfr.cc:34,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/ixfr.cc:42,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/ixfr.cc:52,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/ixfr.cc:54,1
    - Dst: toLogString
      Src: /src/pdns/pdns/recursordist/ixfr.cc:54,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/recursordist/ixfr.cc:54,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/ixfr.cc:62,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/recursordist/ixfr.cc:72,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/ixfr.cc:75,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/recursordist/ixfr.cc:76,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/ixfr.cc:79,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/ixfr.cc:80,1
    - Dst: toLogString
      Src: /src/pdns/pdns/recursordist/ixfr.cc:80,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/recursordist/ixfr.cc:80,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/ixfr.cc:83,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/ixfr.cc:85,1
    - Dst: toLogString
      Src: /src/pdns/pdns/recursordist/ixfr.cc:85,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/recursordist/ixfr.cc:85,1
    - Dst: push_back
      Src: /src/pdns/pdns/recursordist/ixfr.cc:92,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/ixfr.cc:95,1
    - Dst: push_back
      Src: /src/pdns/pdns/recursordist/ixfr.cc:96,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/ixfr.cc:99,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/ixfr.cc:100,1
    - Dst: toLogString
      Src: /src/pdns/pdns/recursordist/ixfr.cc:100,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/recursordist/ixfr.cc:100,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/ixfr.cc:103,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/ixfr.cc:105,1
    - Dst: toLogString
      Src: /src/pdns/pdns/recursordist/ixfr.cc:105,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/recursordist/ixfr.cc:105,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/ixfr.cc:109,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/ixfr.cc:109,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/ixfr.cc:109,1
    - Dst: toLogString
      Src: /src/pdns/pdns/recursordist/ixfr.cc:109,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/recursordist/ixfr.cc:109,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/ixfr.cc:114,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/ixfr.cc:115,1
    - Dst: toLogString
      Src: /src/pdns/pdns/recursordist/ixfr.cc:115,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/recursordist/ixfr.cc:115,1
    - Dst: vector::emplace_back
      Src: /src/pdns/pdns/recursordist/ixfr.cc:119,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 50
    argCount: 4
    argNames:
    - ' primary'
    - ' zone'
    - ' records'
    - ' primarySOA'
    argTypes:
    - ComboAddress
    - DNSName
    - vector<DNSRecord>
    - std::shared_ptr<const SOARecordContent>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 29
    functionDepth: 0
    functionLinenumber: 29
    functionLinenumberEnd: 123
    functionName: processIXFRRecords
    functionSourceFile: /src/pdns/pdns/recursordist/ixfr.cc
    functionUses: 25
    functionsReached:
    - getRR
    - toLogString
    - vector::push_back
    - std::to_string
    - std::runtime_error
    - push_back
    - size
    - vector::emplace_back
    - toStringWithPort
    linkageType: ''
    returnType: vector<pair<vector<DNSRecord>, vector<DNSRecord> > >
    signature: "vector<pair<vector<DNSRecord>, vector<DNSRecord> > > processIXFRRecords(const
      ComboAddress& primary, const DNSName& zone,\n                                                                        const
      vector<DNSRecord>& records, const std::shared_ptr<const SOARecordContent>& primarySOA)"
  - BBCount: 29
    BranchProfiles: []
    Callsites:
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/recursordist/ixfr.cc:137,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/recursordist/ixfr.cc:138,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/recursordist/ixfr.cc:139,1
    - Dst: dns_random_uint16
      Src: /src/pdns/pdns/recursordist/ixfr.cc:139,1
    - Dst: DNSPacketWriter::startRecord
      Src: /src/pdns/pdns/recursordist/ixfr.cc:140,1
    - Dst: getContent
      Src: /src/pdns/pdns/recursordist/ixfr.cc:141,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/recursordist/ixfr.cc:143,1
    - Dst: TSIGRecordContent::TSIGRecordContent
      Src: /src/pdns/pdns/recursordist/ixfr.cc:144,1
    - Dst: algo::empty
      Src: /src/pdns/pdns/recursordist/ixfr.cc:146,1
    - Dst: getTSIGHashEnum
      Src: /src/pdns/pdns/recursordist/ixfr.cc:148,1
    - Dst: getTSIGAlgoName
      Src: /src/pdns/pdns/recursordist/ixfr.cc:150,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/ixfr.cc:152,1
    - Dst: algo::toLogString
      Src: /src/pdns/pdns/recursordist/ixfr.cc:152,1
    - Dst: time
      Src: /src/pdns/pdns/recursordist/ixfr.cc:154,1
    - Dst: ntohs
      Src: /src/pdns/pdns/recursordist/ixfr.cc:156,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/recursordist/ixfr.cc:156,1
    - Dst: addTSIG
      Src: /src/pdns/pdns/recursordist/ixfr.cc:158,1
    - Dst: htons
      Src: /src/pdns/pdns/recursordist/ixfr.cc:160,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/ixfr.cc:160,1
    - Dst: string::append
      Src: /src/pdns/pdns/recursordist/ixfr.cc:162,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/ixfr.cc:162,1
    - Dst: Socket::bind
      Src: /src/pdns/pdns/recursordist/ixfr.cc:166,1
    - Dst: Socket::setNonBlocking
      Src: /src/pdns/pdns/recursordist/ixfr.cc:168,1
    - Dst: time
      Src: /src/pdns/pdns/recursordist/ixfr.cc:170,1
    - Dst: time
      Src: /src/pdns/pdns/recursordist/ixfr.cc:177,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/ixfr.cc:179,1
    - Dst: toLogString
      Src: /src/pdns/pdns/recursordist/ixfr.cc:179,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/recursordist/ixfr.cc:179,1
    - Dst: Socket::connect
      Src: /src/pdns/pdns/recursordist/ixfr.cc:185,1
    - Dst: timeoutChecker
      Src: /src/pdns/pdns/recursordist/ixfr.cc:187,1
    - Dst: Socket::writenWithTimeout
      Src: /src/pdns/pdns/recursordist/ixfr.cc:189,1
    - Dst: string::data
      Src: /src/pdns/pdns/recursordist/ixfr.cc:189,1
    - Dst: string::size
      Src: /src/pdns/pdns/recursordist/ixfr.cc:189,1
    - Dst: timeoutChecker
      Src: /src/pdns/pdns/recursordist/ixfr.cc:220,1
    - Dst: readn2WithTimeout
      Src: /src/pdns/pdns/recursordist/ixfr.cc:224,1
    - Dst: Socket::getHandle
      Src: /src/pdns/pdns/recursordist/ixfr.cc:224,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/ixfr.cc:227,1
    - Dst: ntohs
      Src: /src/pdns/pdns/recursordist/ixfr.cc:231,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/ixfr.cc:239,1
    - Dst: toLogString
      Src: /src/pdns/pdns/recursordist/ixfr.cc:239,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/recursordist/ixfr.cc:239,1
    - Dst: std::string::resize
      Src: /src/pdns/pdns/recursordist/ixfr.cc:242,1
    - Dst: timeoutChecker
      Src: /src/pdns/pdns/recursordist/ixfr.cc:244,1
    - Dst: readn2WithTimeout
      Src: /src/pdns/pdns/recursordist/ixfr.cc:247,1
    - Dst: Socket::getHandle
      Src: /src/pdns/pdns/recursordist/ixfr.cc:247,1
    - Dst: std::string::data
      Src: /src/pdns/pdns/recursordist/ixfr.cc:247,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/ixfr.cc:252,1
    - Dst: toLogString
      Src: /src/pdns/pdns/recursordist/ixfr.cc:252,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/recursordist/ixfr.cc:252,1
    - Dst: RCode::to_s
      Src: /src/pdns/pdns/recursordist/ixfr.cc:252,1
    - Dst: algo::empty
      Src: /src/pdns/pdns/recursordist/ixfr.cc:255,1
    - Dst: TSIGTCPVerifier::check
      Src: /src/pdns/pdns/recursordist/ixfr.cc:256,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/ixfr.cc:263,1
    - Dst: toLogString
      Src: /src/pdns/pdns/recursordist/ixfr.cc:263,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/recursordist/ixfr.cc:263,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/ixfr.cc:263,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/ixfr.cc:266,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/ixfr.cc:268,1
    - Dst: toLogString
      Src: /src/pdns/pdns/recursordist/ixfr.cc:268,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/recursordist/ixfr.cc:268,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/ixfr.cc:271,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/ixfr.cc:275,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/ixfr.cc:277,1
    - Dst: toLogString
      Src: /src/pdns/pdns/recursordist/ixfr.cc:277,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/recursordist/ixfr.cc:277,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/ixfr.cc:277,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/ixfr.cc:277,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/ixfr.cc:277,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/ixfr.cc:279,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/ixfr.cc:282,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/ixfr.cc:284,1
    - Dst: toLogString
      Src: /src/pdns/pdns/recursordist/ixfr.cc:284,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/recursordist/ixfr.cc:284,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/ixfr.cc:293,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/ixfr.cc:314,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/ixfr.cc:314,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/ixfr.cc:314,1
    - Dst: toLogString
      Src: /src/pdns/pdns/recursordist/ixfr.cc:314,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/recursordist/ixfr.cc:314,1
    - Dst: d_name::makeUsRelative
      Src: /src/pdns/pdns/recursordist/ixfr.cc:317,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/recursordist/ixfr.cc:318,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/ixfr.cc:325,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/ixfr.cc:325,1
    - Dst: toLogString
      Src: /src/pdns/pdns/recursordist/ixfr.cc:325,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/recursordist/ixfr.cc:325,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/ixfr.cc:330,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/ixfr.cc:330,1
    - Dst: toLogString
      Src: /src/pdns/pdns/recursordist/ixfr.cc:330,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/recursordist/ixfr.cc:330,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/ixfr.cc:334,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/ixfr.cc:334,1
    - Dst: toLogString
      Src: /src/pdns/pdns/recursordist/ixfr.cc:334,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/recursordist/ixfr.cc:334,1
    - Dst: processIXFRRecords
      Src: /src/pdns/pdns/recursordist/ixfr.cc:338,1
    CyclomaticComplexity: 56
    EdgeCount: 56
    ICount: 129
    argCount: 9
    argNames:
    - slog
    - ' primary'
    - ' zone'
    - ' oursr'
    - xfrTimeout
    - totalTimeout
    - ' tt'
    - laddr
    - maxReceivedBytes
    argTypes:
    - Logr::log_t
    - ComboAddress
    - DNSName
    - DNSRecord
    - uint16_t
    - bool
    - TSIGTriplet
    - ComboAddress*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 339
      start: 127
    functionDepth: 2
    functionLinenumber: 127
    functionLinenumberEnd: 339
    functionName: getIXFRDeltas
    functionSourceFile: /src/pdns/pdns/recursordist/ixfr.cc
    functionUses: 3
    functionsReached:
    - toLogString
    - std::to_string
    - ntohs
    - processIXFRRecords
    - dns_random_uint16
    - RCode::to_s
    - TSIGRecordContent::TSIGRecordContent
    - string::data
    - string::size
    - Socket::setNonBlocking
    - time
    - QType
    - TSIGTCPVerifier::check
    - DNSPacketWriter::getHeader
    - Socket::connect
    - DNSPacketWriter::startRecord
    - htons
    - Socket::writenWithTimeout
    - vector::push_back
    - DNSPacketWriter::commit
    - std::runtime_error
    - readn2WithTimeout
    - std::string::data
    - getTSIGHashEnum
    - std::string::resize
    - toStringWithPort
    - d_name::makeUsRelative
    - Socket::bind
    - getRR
    - std::move
    - Socket::getHandle
    - addTSIG
    - getTSIGAlgoName
    - what
    - string::append
    - getContent
    - algo::empty
    - algo::toLogString
    - vector::size
    - timeoutChecker
    linkageType: ''
    returnType: vector<pair<vector<DNSRecord>, vector<DNSRecord>>>
    signature: "vector<pair<vector<DNSRecord>, vector<DNSRecord>>> getIXFRDeltas(Logr::log_t
      slog, const ComboAddress& primary, const DNSName& zone, const DNSRecord& oursr,\n
      \                                                                uint16_t xfrTimeout,
      bool totalTimeout,\n                                                                 const
      TSIGTriplet& tt, const ComboAddress* laddr, size_t maxReceivedBytes)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/pdns/pdns/recursordist/rec_channel.cc:44,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 41
    functionDepth: 0
    functionLinenumber: 41
    functionLinenumberEnd: 45
    functionName: RecursorControlChannel::RecursorControlChannel
    functionSourceFile: /src/pdns/pdns/recursordist/rec_channel.cc
    functionUses: 1
    functionsReached:
    - memset
    linkageType: ''
    returnType: void
    signature: void RecursorControlChannel::RecursorControlChannel()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: close
      Src: /src/pdns/pdns/recursordist/rec_channel.cc:50,1
    - Dst: unlink
      Src: /src/pdns/pdns/recursordist/rec_channel.cc:53,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 47
    functionDepth: 0
    functionLinenumber: 47
    functionLinenumberEnd: 55
    functionName: RecursorControlChannel::~RecursorControlChannel()
    functionSourceFile: /src/pdns/pdns/recursordist/rec_channel.cc
    functionUses: 0
    functionsReached:
    - unlink
    - close
    linkageType: ''
    returnType: void
    signature: void RecursorControlChannel::~RecursorControlChannel()
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: socket
      Src: /src/pdns/pdns/recursordist/rec_channel.cc:59,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/recursordist/rec_channel.cc:62,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/rec_channel.cc:62,1
    - Dst: setCloseOnExec
      Src: /src/pdns/pdns/recursordist/rec_channel.cc:64,1
    - Dst: setsockopt
      Src: /src/pdns/pdns/recursordist/rec_channel.cc:67,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/recursordist/rec_channel.cc:68,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/rec_channel.cc:68,1
    - Dst: unlink
      Src: /src/pdns/pdns/recursordist/rec_channel.cc:71,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/rec_channel.cc:71,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/recursordist/rec_channel.cc:73,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/rec_channel.cc:73,1
    - Dst: makeUNsockaddr
      Src: /src/pdns/pdns/recursordist/rec_channel.cc:76,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/recursordist/rec_channel.cc:77,1
    - Dst: bind
      Src: /src/pdns/pdns/recursordist/rec_channel.cc:80,1
    - Dst: reinterpret_cast<sockaddr*>
      Src: /src/pdns/pdns/recursordist/rec_channel.cc:80,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/recursordist/rec_channel.cc:81,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/rec_channel.cc:81,1
    - Dst: Socket::listen
      Src: /src/pdns/pdns/recursordist/rec_channel.cc:83,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/recursordist/rec_channel.cc:84,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/rec_channel.cc:84,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 22
    argCount: 1
    argNames:
    - ' filename'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 57
    functionDepth: 0
    functionLinenumber: 57
    functionLinenumberEnd: 87
    functionName: RecursorControlChannel::listen
    functionSourceFile: /src/pdns/pdns/recursordist/rec_channel.cc
    functionUses: 0
    functionsReached:
    - socket
    - PDNSException
    - stringerror
    - bind
    - setsockopt
    - setCloseOnExec
    - unlink
    - Socket::listen
    - c_str
    - makeUNsockaddr
    - reinterpret_cast<sockaddr*>
    linkageType: ''
    returnType: int
    signature: int RecursorControlChannel::listen(const string& filename)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: socket
      Src: /src/pdns/pdns/recursordist/rec_channel.cc:93,1
    - Dst: setCloseOnExec
      Src: /src/pdns/pdns/recursordist/rec_channel.cc:94,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/recursordist/rec_channel.cc:97,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/rec_channel.cc:97,1
    - Dst: setsockopt
      Src: /src/pdns/pdns/recursordist/rec_channel.cc:101,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/recursordist/rec_channel.cc:102,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/rec_channel.cc:102,1
    - Dst: makeUNsockaddr
      Src: /src/pdns/pdns/recursordist/rec_channel.cc:106,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/recursordist/rec_channel.cc:107,1
    - Dst: TCPIOHandler::connect
      Src: /src/pdns/pdns/recursordist/rec_channel.cc:110,1
    - Dst: reinterpret_cast<const sockaddr*>
      Src: /src/pdns/pdns/recursordist/rec_channel.cc:110,1
    - Dst: unlink
      Src: /src/pdns/pdns/recursordist/rec_channel.cc:112,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/recursordist/rec_channel.cc:114,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/rec_channel.cc:114,1
    - Dst: close
      Src: /src/pdns/pdns/recursordist/rec_channel.cc:118,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 25
    argCount: 2
    argNames:
    - ' path'
    - ' filename'
    argTypes:
    - string
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 89
    functionDepth: 0
    functionLinenumber: 89
    functionLinenumberEnd: 123
    functionName: RecursorControlChannel::connect
    functionSourceFile: /src/pdns/pdns/recursordist/rec_channel.cc
    functionUses: 1
    functionsReached:
    - socket
    - PDNSException
    - stringerror
    - setsockopt
    - setCloseOnExec
    - TCPIOHandler::connect
    - unlink
    - reinterpret_cast<const sockaddr*>
    - makeUNsockaddr
    - close
    linkageType: ''
    returnType: void
    signature: void RecursorControlChannel::connect(const string& path, const string&
      filename)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/pdns/pdns/recursordist/rec_channel.cc:140,1
    - Dst: "union\n  {\n    struct cmsghdr hdr;\n    std::array<unsigned char, CMSG_SPACE(sizeof(int))>
        buf;\n  }::buf::data"
      Src: /src/pdns/pdns/recursordist/rec_channel.cc:141,1
    - Dst: "union\n  {\n    struct cmsghdr hdr;\n    std::array<unsigned char, CMSG_SPACE(sizeof(int))>
        buf;\n  }::buf::size"
      Src: /src/pdns/pdns/recursordist/rec_channel.cc:142,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/recursordist/rec_channel.cc:143,1
    - Dst: std::array::size
      Src: /src/pdns/pdns/recursordist/rec_channel.cc:144,1
    - Dst: CMSG_FIRSTHDR
      Src: /src/pdns/pdns/recursordist/rec_channel.cc:146,1
    - Dst: CMSG_LEN
      Src: /src/pdns/pdns/recursordist/rec_channel.cc:147,1
    - Dst: reinterpret_cast<int*>
      Src: /src/pdns/pdns/recursordist/rec_channel.cc:150,1
    - Dst: CMSG_DATA
      Src: /src/pdns/pdns/recursordist/rec_channel.cc:150,1
    - Dst: sendmsg
      Src: /src/pdns/pdns/recursordist/rec_channel.cc:152,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/recursordist/rec_channel.cc:153,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/rec_channel.cc:153,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 2
    argNames:
    - socket
    - fd_to_pass
    argTypes:
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 125
    functionDepth: 0
    functionLinenumber: 125
    functionLinenumberEnd: 155
    functionName: sendfd
    functionSourceFile: /src/pdns/pdns/recursordist/rec_channel.cc
    functionUses: 0
    functionsReached:
    - sendmsg
    - CMSG_FIRSTHDR
    - PDNSException
    - stringerror
    - CMSG_DATA
    - memset
    - "union\n  {\n    struct cmsghdr hdr;\n    std::array<unsigned char, CMSG_SPACE(sizeof(int))>
      buf;\n  }::buf::data"
    - reinterpret_cast<int*>
    - "union\n  {\n    struct cmsghdr hdr;\n    std::array<unsigned char, CMSG_SPACE(sizeof(int))>
      buf;\n  }::buf::size"
    - std::array::data
    - CMSG_LEN
    - std::array::size
    linkageType: ''
    returnType: void
    signature: void sendfd(int socket, int fd_to_pass)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: waitForRWData
      Src: /src/pdns/pdns/recursordist/rec_channel.cc:159,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/recursordist/rec_channel.cc:159,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/recursordist/rec_channel.cc:161,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/recursordist/rec_channel.cc:164,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/rec_channel.cc:164,1
    - Dst: Socket::send
      Src: /src/pdns/pdns/recursordist/rec_channel.cc:167,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/recursordist/rec_channel.cc:168,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/rec_channel.cc:168,1
    - Dst: d_str::length
      Src: /src/pdns/pdns/recursordist/rec_channel.cc:170,1
    - Dst: Socket::send
      Src: /src/pdns/pdns/recursordist/rec_channel.cc:171,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/recursordist/rec_channel.cc:172,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/rec_channel.cc:172,1
    - Dst: Socket::send
      Src: /src/pdns/pdns/recursordist/rec_channel.cc:174,1
    - Dst: d_str::c_str
      Src: /src/pdns/pdns/recursordist/rec_channel.cc:174,1
    - Dst: static_cast<ssize_t>
      Src: /src/pdns/pdns/recursordist/rec_channel.cc:174,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/recursordist/rec_channel.cc:175,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/rec_channel.cc:175,1
    - Dst: sendfd
      Src: /src/pdns/pdns/recursordist/rec_channel.cc:179,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 19
    argCount: 4
    argNames:
    - fileDesc
    - ' msg'
    - timeout
    - fd_to_pass
    argTypes:
    - int
    - Answer
    - unsigned int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 181
      start: 157
    functionDepth: 1
    functionLinenumber: 157
    functionLinenumberEnd: 181
    functionName: RecursorControlChannel::send
    functionSourceFile: /src/pdns/pdns/recursordist/rec_channel.cc
    functionUses: 2
    functionsReached:
    - Socket::send
    - d_str::c_str
    - PDNSException
    - stringerror
    - static_cast<ssize_t>
    - d_str::length
    - sendfd
    - waitForRWData
    - static_cast<int>
    linkageType: ''
    returnType: void
    signature: void RecursorControlChannel::send(int fileDesc, const Answer& msg,
      unsigned int timeout, int fd_to_pass)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: time
      Src: /src/pdns/pdns/recursordist/rec_channel.cc:185,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/recursordist/rec_channel.cc:187,1
    - Dst: waitForData
      Src: /src/pdns/pdns/recursordist/rec_channel.cc:190,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/recursordist/rec_channel.cc:190,1
    - Dst: static_cast<unsigned int>
      Src: /src/pdns/pdns/recursordist/rec_channel.cc:190,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/recursordist/rec_channel.cc:192,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 7
    argCount: 3
    argNames:
    - fileDesc
    - timeout
    - start
    argTypes:
    - int
    - unsigned int
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 194
      start: 183
    functionDepth: 0
    functionLinenumber: 183
    functionLinenumberEnd: 194
    functionName: waitForRead
    functionSourceFile: /src/pdns/pdns/recursordist/rec_channel.cc
    functionUses: 0
    functionsReached:
    - PDNSException
    - time
    - waitForData
    - static_cast<unsigned int>
    - static_cast<int>
    linkageType: ''
    returnType: void
    signature: void waitForRead(int fileDesc, unsigned int timeout, time_t start)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sysconf
      Src: /src/pdns/pdns/recursordist/rec_channel.cc:203,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 210
      start: 196
    functionDepth: 0
    functionLinenumber: 196
    functionLinenumberEnd: 210
    functionName: getArgMax
    functionSourceFile: /src/pdns/pdns/recursordist/rec_channel.cc
    functionUses: 0
    functionsReached:
    - sysconf
    linkageType: ''
    returnType: size_t
    signature: size_t getArgMax()
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: time
      Src: /src/pdns/pdns/recursordist/rec_channel.cc:215,1
    - Dst: waitForRead
      Src: /src/pdns/pdns/recursordist/rec_channel.cc:217,1
    - Dst: XskSocket::recv
      Src: /src/pdns/pdns/recursordist/rec_channel.cc:219,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/recursordist/rec_channel.cc:224,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/recursordist/rec_channel.cc:227,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/rec_channel.cc:227,1
    - Dst: waitForRead
      Src: /src/pdns/pdns/recursordist/rec_channel.cc:230,1
    - Dst: XskSocket::recv
      Src: /src/pdns/pdns/recursordist/rec_channel.cc:232,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/recursordist/rec_channel.cc:233,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/rec_channel.cc:233,1
    - Dst: getArgMax
      Src: /src/pdns/pdns/recursordist/rec_channel.cc:236,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/recursordist/rec_channel.cc:237,1
    - Dst: string::reserve
      Src: /src/pdns/pdns/recursordist/rec_channel.cc:241,1
    - Dst: string::length
      Src: /src/pdns/pdns/recursordist/rec_channel.cc:242,1
    - Dst: waitForRead
      Src: /src/pdns/pdns/recursordist/rec_channel.cc:244,1
    - Dst: std::min
      Src: /src/pdns/pdns/recursordist/rec_channel.cc:245,1
    - Dst: string::length
      Src: /src/pdns/pdns/recursordist/rec_channel.cc:245,1
    - Dst: std::array::size
      Src: /src/pdns/pdns/recursordist/rec_channel.cc:245,1
    - Dst: XskSocket::recv
      Src: /src/pdns/pdns/recursordist/rec_channel.cc:246,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/recursordist/rec_channel.cc:246,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/recursordist/rec_channel.cc:249,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/rec_channel.cc:249,1
    - Dst: string::append
      Src: /src/pdns/pdns/recursordist/rec_channel.cc:251,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/recursordist/rec_channel.cc:251,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/rec_channel.cc:254,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 25
    argCount: 2
    argNames:
    - fileDesc
    - timeout
    argTypes:
    - int
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 255
      start: 212
    functionDepth: 2
    functionLinenumber: 212
    functionLinenumberEnd: 255
    functionName: RecursorControlChannel::recv
    functionSourceFile: /src/pdns/pdns/recursordist/rec_channel.cc
    functionUses: 2
    functionsReached:
    - std::move
    - string::reserve
    - XskSocket::recv
    - PDNSException
    - time
    - stringerror
    - std::min
    - string::append
    - waitForRead
    - getArgMax
    - string::length
    - std::array::data
    - std::array::size
    linkageType: ''
    returnType: RecursorControlChannel::Answer
    signature: RecursorControlChannel::Answer RecursorControlChannel::recv(int fileDesc,
      unsigned int timeout)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 64
    functionDepth: 0
    functionLinenumber: 64
    functionLinenumberEnd: 64
    functionName: Semaphore::Semaphore
    functionSourceFile: /src/pdns/pdns/recursordist/utility.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Semaphore(const Semaphore&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 65
    functionDepth: 0
    functionLinenumber: 65
    functionLinenumberEnd: 65
    functionName: operator=(const Semaphore&)
    functionSourceFile: /src/pdns/pdns/recursordist/utility.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void operator=(const Semaphore&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 20
      start: 18
    functionDepth: 0
    functionLinenumber: 18
    functionLinenumberEnd: 20
    functionName: ~SNMPAgent()
    functionSourceFile: /src/pdns/pdns/recursordist/snmp-agent.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~SNMPAgent()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::thread
      Src: /src/pdns/pdns/recursordist/snmp-agent.hh:25,1
    - Dst: detach
      Src: /src/pdns/pdns/recursordist/snmp-agent.hh:26,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 28
      start: 22
    functionDepth: 0
    functionLinenumber: 22
    functionLinenumberEnd: 28
    functionName: SNMPAgent::run
    functionSourceFile: /src/pdns/pdns/recursordist/snmp-agent.hh
    functionUses: 0
    functionsReached:
    - std::thread
    - detach
    linkageType: ''
    returnType: void
    signature: void run()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: add_bool
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:51,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 3
    argNames:
    - ' writer'
    - field
    - value
    argTypes:
    - protozero::pbf_writer
    - uint8_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 48
    functionDepth: 0
    functionLinenumber: 48
    functionLinenumberEnd: 53
    functionName: pdns::trace::encode
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.hh
    functionUses: 92
    functionsReached:
    - add_bool
    linkageType: ''
    returnType: void
    signature: void encode(protozero::pbf_writer& writer, uint8_t field, bool value,
      bool always = false)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: add_uint32
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:58,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 3
    argNames:
    - ' writer'
    - field
    - value
    argTypes:
    - protozero::pbf_writer
    - uint8_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 55
    functionDepth: 0
    functionLinenumber: 55
    functionLinenumberEnd: 60
    functionName: pdns::trace::encode
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.hh
    functionUses: 92
    functionsReached:
    - add_uint32
    linkageType: ''
    returnType: void
    signature: void encode(protozero::pbf_writer& writer, uint8_t field, uint32_t
      value, bool always = false)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: add_fixed32
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:65,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - ' writer'
    - field
    - value
    argTypes:
    - protozero::pbf_writer
    - uint8_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 62
    functionDepth: 0
    functionLinenumber: 62
    functionLinenumberEnd: 67
    functionName: pdns::trace::encodeFixed
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.hh
    functionUses: 18
    functionsReached:
    - add_fixed32
    linkageType: ''
    returnType: void
    signature: void encodeFixed(protozero::pbf_writer& writer, uint8_t field, uint32_t
      value)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: add_int64
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:72,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 3
    argNames:
    - ' writer'
    - field
    - value
    argTypes:
    - protozero::pbf_writer
    - uint8_t
    - int64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 69
    functionDepth: 0
    functionLinenumber: 69
    functionLinenumberEnd: 74
    functionName: pdns::trace::encode
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.hh
    functionUses: 92
    functionsReached:
    - add_int64
    linkageType: ''
    returnType: void
    signature: void encode(protozero::pbf_writer& writer, uint8_t field, int64_t value,
      bool always = false)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: add_uint64
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:79,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 3
    argNames:
    - ' writer'
    - field
    - value
    argTypes:
    - protozero::pbf_writer
    - uint8_t
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 76
    functionDepth: 0
    functionLinenumber: 76
    functionLinenumberEnd: 81
    functionName: pdns::trace::encode
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.hh
    functionUses: 92
    functionsReached:
    - add_uint64
    linkageType: ''
    returnType: void
    signature: void encode(protozero::pbf_writer& writer, uint8_t field, uint64_t
      value, bool always = false)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: add_fixed64
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:86,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - ' writer'
    - field
    - value
    argTypes:
    - protozero::pbf_writer
    - uint8_t
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 83
    functionDepth: 0
    functionLinenumber: 83
    functionLinenumberEnd: 88
    functionName: pdns::trace::encodeFixed
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.hh
    functionUses: 18
    functionsReached:
    - add_fixed64
    linkageType: ''
    returnType: void
    signature: void encodeFixed(protozero::pbf_writer& writer, uint8_t field, uint64_t
      value)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: add_double
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:93,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 3
    argNames:
    - ' writer'
    - field
    - value
    argTypes:
    - protozero::pbf_writer
    - uint8_t
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 90
    functionDepth: 0
    functionLinenumber: 90
    functionLinenumberEnd: 95
    functionName: pdns::trace::encode
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.hh
    functionUses: 92
    functionsReached:
    - add_double
    linkageType: ''
    returnType: void
    signature: void encode(protozero::pbf_writer& writer, uint8_t field, double value,
      bool always = false)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:99,1
    - Dst: add_string
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:100,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 3
    argNames:
    - ' writer'
    - field
    - ' value'
    argTypes:
    - protozero::pbf_writer
    - uint8_t
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 97
    functionDepth: 0
    functionLinenumber: 97
    functionLinenumberEnd: 102
    functionName: pdns::trace::encode
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.hh
    functionUses: 92
    functionsReached:
    - empty
    - add_string
    linkageType: ''
    returnType: void
    signature: void encode(protozero::pbf_writer& writer, uint8_t field, const std::string&
      value, bool always = false)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:106,1
    - Dst: add_bytes
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:107,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:107,1
    - Dst: data
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:107,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:107,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 3
    argNames:
    - ' writer'
    - field
    - ' value'
    argTypes:
    - protozero::pbf_writer
    - uint8_t
    - std::vector<uint8_t>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 104
    functionDepth: 0
    functionLinenumber: 104
    functionLinenumberEnd: 109
    functionName: pdns::trace::encode
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.hh
    functionUses: 92
    functionsReached:
    - size
    - add_bytes
    - reinterpret_cast<const char*>
    - data
    - empty
    linkageType: ''
    returnType: void
    signature: void encode(protozero::pbf_writer& writer, uint8_t field, const std::vector<uint8_t>&
      value, bool always = false)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:115,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - ' writer'
    - ' vec'
    argTypes:
    - protozero::pbf_writer
    - std::vector<T>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 112
    functionDepth: 0
    functionLinenumber: 112
    functionLinenumberEnd: 117
    functionName: pdns::trace::encode
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.hh
    functionUses: 93
    functionsReached:
    - pdns::trace::encode
    linkageType: ''
    returnType: void
    signature: void encode(protozero::pbf_writer& writer, const std::vector<T>& vec)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:124,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 3
    argNames:
    - ' writer'
    - field
    - ' vec'
    argTypes:
    - protozero::pbf_writer
    - uint8_t
    - std::vector<T>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 120
    functionDepth: 0
    functionLinenumber: 120
    functionLinenumberEnd: 126
    functionName: pdns::trace::encode
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.hh
    functionUses: 94
    functionsReached:
    - pdns::trace::encode
    linkageType: ''
    returnType: void
    signature: void encode(protozero::pbf_writer& writer, uint8_t field, const std::vector<T>&
      vec)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: next
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:132,1
    - Dst: tag
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:133,1
    - Dst: get_message
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:134,1
    - Dst: std::vector::emplace_back
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:135,1
    - Dst: YAML::decode
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:135,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:138,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - ' reader'
    argTypes:
    - protozero::pbf_reader
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 139
      start: 129
    functionDepth: 1
    functionLinenumber: 129
    functionLinenumberEnd: 139
    functionName: pdns::trace::decode
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.hh
    functionUses: 0
    functionsReached:
    - next
    - std::move
    - tag
    - YAML::decode
    - std::vector::emplace_back
    - get_message
    linkageType: ''
    returnType: T
    signature: T decode(protozero::pbf_reader& reader)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:147,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' writer'
    argTypes:
    - protozero::pbf_writer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 148
      start: 145
    functionDepth: 0
    functionLinenumber: 145
    functionLinenumberEnd: 148
    functionName: pdns::trace::encode
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.hh
    functionUses: 95
    functionsReached:
    - pdns::trace::encode
    linkageType: ''
    returnType: void
    signature: void encode(protozero::pbf_writer& writer) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:161,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' writer'
    argTypes:
    - protozero::pbf_writer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 162
      start: 159
    functionDepth: 0
    functionLinenumber: 159
    functionLinenumberEnd: 162
    functionName: pdns::trace::encode
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.hh
    functionUses: 96
    functionsReached:
    - pdns::trace::encode
    linkageType: ''
    returnType: void
    signature: void encode(protozero::pbf_writer& writer) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: toLogString
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:177,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' ostrm'
    - ' val'
    argTypes:
    - std::ostream
    - AnyValue
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 178
      start: 175
    functionDepth: 0
    functionLinenumber: 175
    functionLinenumberEnd: 178
    functionName: '& operator<<(std::ostream& ostrm, const AnyValue& val)'
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.hh
    functionUses: 0
    functionsReached:
    - toLogString
    linkageType: ''
    returnType: std::ostream
    signature: std::ostream & operator<<(std::ostream& ostrm, const AnyValue& val)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 226
      start: 225
    functionDepth: 0
    functionLinenumber: 225
    functionLinenumberEnd: 226
    functionName: pdns::trace::TraceID
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void TraceID()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::copy
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:230,1
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:230,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:230,1
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:230,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' arg'
    argTypes:
    - std::initializer_list<uint8_t>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 231
      start: 227
    functionDepth: 0
    functionLinenumber: 227
    functionLinenumberEnd: 231
    functionName: pdns::trace::TraceID
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.hh
    functionUses: 0
    functionsReached:
    - end
    - std::copy
    - begin
    linkageType: ''
    returnType: void
    signature: void TraceID(const std::initializer_list<uint8_t>& arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: toLogString
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:236,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' ostrm'
    - ' val'
    argTypes:
    - std::ostream
    - TraceID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 237
      start: 234
    functionDepth: 0
    functionLinenumber: 234
    functionLinenumberEnd: 237
    functionName: '& operator<<(std::ostream& ostrm, const TraceID& val)'
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.hh
    functionUses: 0
    functionsReached:
    - toLogString
    linkageType: ''
    returnType: std::ostream
    signature: std::ostream & operator<<(std::ostream& ostrm, const TraceID& val)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TraceID::makeRandom
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:242,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 244
      start: 239
    functionDepth: 0
    functionLinenumber: 239
    functionLinenumberEnd: 244
    functionName: pdns::trace::getRandomTraceID
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.hh
    functionUses: 1
    functionsReached:
    - TraceID::makeRandom
    linkageType: ''
    returnType: TraceID
    signature: TraceID getRandomTraceID()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dns_random
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:248,1
    - Dst: pdns::trace::data
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:248,1
    - Dst: pdns::trace::size
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:248,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 249
      start: 246
    functionDepth: 0
    functionLinenumber: 246
    functionLinenumberEnd: 249
    functionName: pdns::trace::makeRandom
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.hh
    functionUses: 4
    functionsReached:
    - pdns::trace::data
    - dns_random
    - pdns::trace::size
    linkageType: ''
    returnType: void
    signature: void makeRandom()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::fill
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:253,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 254
      start: 251
    functionDepth: 0
    functionLinenumber: 251
    functionLinenumberEnd: 254
    functionName: pdns::trace::clear
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.hh
    functionUses: 12
    functionsReached:
    - pdns::trace::fill
    linkageType: ''
    returnType: void
    signature: void clear()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 261
      start: 260
    functionDepth: 0
    functionLinenumber: 260
    functionLinenumberEnd: 261
    functionName: pdns::trace::SpanID
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void SpanID()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::copy
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:265,1
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:265,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:265,1
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:265,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' arg'
    argTypes:
    - std::initializer_list<uint8_t>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 266
      start: 262
    functionDepth: 0
    functionLinenumber: 262
    functionLinenumberEnd: 266
    functionName: pdns::trace::SpanID
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.hh
    functionUses: 0
    functionsReached:
    - end
    - std::copy
    - begin
    linkageType: ''
    returnType: void
    signature: void SpanID(const std::initializer_list<uint8_t>& arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: toLogString
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:271,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' ostrm'
    - ' val'
    argTypes:
    - std::ostream
    - SpanID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 272
      start: 269
    functionDepth: 0
    functionLinenumber: 269
    functionLinenumberEnd: 272
    functionName: '& operator<<(std::ostream& ostrm, const SpanID& val)'
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.hh
    functionUses: 0
    functionsReached:
    - toLogString
    linkageType: ''
    returnType: std::ostream
    signature: std::ostream & operator<<(std::ostream& ostrm, const SpanID& val)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SpanID::makeRandom
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:277,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 279
      start: 274
    functionDepth: 0
    functionLinenumber: 274
    functionLinenumberEnd: 279
    functionName: pdns::trace::getRandomSpanID
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.hh
    functionUses: 3
    functionsReached:
    - SpanID::makeRandom
    linkageType: ''
    returnType: SpanID
    signature: SpanID getRandomSpanID()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dns_random
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:283,1
    - Dst: pdns::trace::data
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:283,1
    - Dst: pdns::trace::size
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:283,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 284
      start: 281
    functionDepth: 0
    functionLinenumber: 281
    functionLinenumberEnd: 284
    functionName: pdns::trace::makeRandom
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.hh
    functionUses: 4
    functionsReached:
    - pdns::trace::data
    - dns_random
    - pdns::trace::size
    linkageType: ''
    returnType: void
    signature: void makeRandom()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::fill
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:288,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 289
      start: 286
    functionDepth: 0
    functionLinenumber: 286
    functionLinenumberEnd: 289
    functionName: pdns::trace::clear
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.hh
    functionUses: 12
    functionsReached:
    - pdns::trace::fill
    linkageType: ''
    returnType: void
    signature: void clear()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:295,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:295,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:296,1
    - Dst: std::copy
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:298,1
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:298,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:298,1
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:298,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - ' trace'
    - ' data'
    argTypes:
    - TraceID
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 299
      start: 293
    functionDepth: 0
    functionLinenumber: 293
    functionLinenumberEnd: 299
    functionName: pdns::trace::fill
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.hh
    functionUses: 19
    functionsReached:
    - std::runtime_error
    - end
    - size
    - begin
    - std::copy
    linkageType: ''
    returnType: void
    signature: void fill(TraceID& trace, const std::string& data)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:303,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:303,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:304,1
    - Dst: std::copy
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:306,1
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:306,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:306,1
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:306,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - ' span'
    - ' data'
    argTypes:
    - SpanID
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 307
      start: 301
    functionDepth: 0
    functionLinenumber: 301
    functionLinenumberEnd: 307
    functionName: pdns::trace::fill
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.hh
    functionUses: 19
    functionsReached:
    - std::runtime_error
    - end
    - size
    - begin
    - std::copy
    linkageType: ''
    returnType: void
    signature: void fill(SpanID& span, const std::string& data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::fill
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:311,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:311,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' trace'
    - data
    - size
    argTypes:
    - TraceID
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 312
      start: 309
    functionDepth: 0
    functionLinenumber: 309
    functionLinenumberEnd: 312
    functionName: pdns::trace::fill
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.hh
    functionUses: 20
    functionsReached:
    - std::string
    - pdns::trace::fill
    linkageType: ''
    returnType: void
    signature: void fill(TraceID& trace, const char* data, size_t size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::fill
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:316,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:316,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' span'
    - data
    - size
    argTypes:
    - SpanID
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 317
      start: 314
    functionDepth: 0
    functionLinenumber: 314
    functionLinenumberEnd: 317
    functionName: pdns::trace::fill
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.hh
    functionUses: 21
    functionsReached:
    - std::string
    - pdns::trace::fill
    linkageType: ''
    returnType: void
    signature: void fill(SpanID& span, const char* data, size_t size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: add_bytes
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:321,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:321,1
    - Dst: data
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:321,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:321,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' writer'
    - field
    - ' value'
    argTypes:
    - protozero::pbf_writer
    - uint8_t
    - TraceID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 322
      start: 319
    functionDepth: 0
    functionLinenumber: 319
    functionLinenumberEnd: 322
    functionName: pdns::trace::encode
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.hh
    functionUses: 96
    functionsReached:
    - add_bytes
    - reinterpret_cast<const char*>
    - size
    - data
    linkageType: ''
    returnType: void
    signature: void encode(protozero::pbf_writer& writer, uint8_t field, const TraceID&
      value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: get_view
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:327,1
    - Dst: std::min
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:328,1
    - Dst: TraceID::size
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:328,1
    - Dst: auto::size
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:328,1
    - Dst: std::copy
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:329,1
    - Dst: auto::data
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:329,1
    - Dst: auto::data
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:329,1
    - Dst: TraceID::begin
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:329,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ' reader'
    argTypes:
    - protozero::pbf_reader
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 331
      start: 324
    functionDepth: 0
    functionLinenumber: 324
    functionLinenumberEnd: 331
    functionName: pdns::trace::decodeTraceID
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.hh
    functionUses: 0
    functionsReached:
    - std::copy
    - std::min
    - auto::data
    - get_view
    - TraceID::begin
    - auto::size
    - TraceID::size
    linkageType: ''
    returnType: TraceID
    signature: TraceID decodeTraceID(protozero::pbf_reader& reader)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: add_bytes
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:335,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:335,1
    - Dst: data
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:335,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:335,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' writer'
    - field
    - ' value'
    argTypes:
    - protozero::pbf_writer
    - uint8_t
    - SpanID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 336
      start: 333
    functionDepth: 0
    functionLinenumber: 333
    functionLinenumberEnd: 336
    functionName: pdns::trace::encode
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.hh
    functionUses: 96
    functionsReached:
    - add_bytes
    - reinterpret_cast<const char*>
    - size
    - data
    linkageType: ''
    returnType: void
    signature: void encode(protozero::pbf_writer& writer, uint8_t field, const SpanID&
      value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: get_view
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:341,1
    - Dst: std::min
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:342,1
    - Dst: SpanID::size
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:342,1
    - Dst: auto::size
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:342,1
    - Dst: std::copy
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:343,1
    - Dst: auto::data
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:343,1
    - Dst: auto::data
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:343,1
    - Dst: SpanID::begin
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:343,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ' reader'
    argTypes:
    - protozero::pbf_reader
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 345
      start: 338
    functionDepth: 0
    functionLinenumber: 338
    functionLinenumberEnd: 345
    functionName: pdns::trace::decodeSpanID
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.hh
    functionUses: 0
    functionsReached:
    - SpanID::size
    - SpanID::begin
    - std::copy
    - std::min
    - auto::data
    - get_view
    - auto::size
    linkageType: ''
    returnType: SpanID
    signature: SpanID decodeSpanID(protozero::pbf_reader& reader)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::clear
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:372,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 374
      start: 370
    functionDepth: 0
    functionLinenumber: 370
    functionLinenumberEnd: 374
    functionName: pdns::trace::clear
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.hh
    functionUses: 13
    functionsReached:
    - pdns::trace::clear
    linkageType: ''
    returnType: void
    signature: void clear()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: clock_gettime
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:382,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 384
      start: 379
    functionDepth: 0
    functionLinenumber: 379
    functionLinenumberEnd: 384
    functionName: pdns::trace::timestamp
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.hh
    functionUses: 10
    functionsReached:
    - clock_gettime
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t timestamp()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::clear
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:397,1
    - Dst: pdns::trace::clear
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:398,1
    - Dst: pdns::trace::clear
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:399,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 401
      start: 395
    functionDepth: 0
    functionLinenumber: 395
    functionLinenumberEnd: 401
    functionName: pdns::trace::clear
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.hh
    functionUses: 14
    functionsReached:
    - pdns::trace::clear
    linkageType: ''
    returnType: void
    signature: void clear()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::makeRandom
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:406,1
    - Dst: pdns::trace::makeRandom
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:409,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 411
      start: 403
    functionDepth: 0
    functionLinenumber: 403
    functionLinenumberEnd: 411
    functionName: pdns::trace::setIDsIfNotSet
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.hh
    functionUses: 0
    functionsReached:
    - pdns::trace::makeRandom
    linkageType: ''
    returnType: void
    signature: void setIDsIfNotSet()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::timestamp
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:608,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 609
      start: 606
    functionDepth: 0
    functionLinenumber: 606
    functionLinenumberEnd: 609
    functionName: pdns::trace::close
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.hh
    functionUses: 12
    functionsReached:
    - pdns::trace::timestamp
    linkageType: ''
    returnType: void
    signature: void close()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::clear
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:613,1
    - Dst: pdns::trace::clear
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:614,1
    - Dst: pdns::trace::clear
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:615,1
    - Dst: pdns::trace::clear
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:616,1
    - Dst: pdns::trace::clear
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:617,1
    - Dst: pdns::trace::clear
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:621,1
    - Dst: pdns::trace::clear
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:623,1
    - Dst: pdns::trace::clear
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:625,1
    - Dst: pdns::trace::clear
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:627,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 629
      start: 611
    functionDepth: 0
    functionLinenumber: 611
    functionLinenumberEnd: 629
    functionName: pdns::trace::clear
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.hh
    functionUses: 15
    functionsReached:
    - pdns::trace::clear
    linkageType: ''
    returnType: void
    signature: void clear()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::close
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:682,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 684
      start: 679
    functionDepth: 0
    functionLinenumber: 679
    functionLinenumberEnd: 684
    functionName: pdns::trace::close
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.hh
    functionUses: 13
    functionsReached:
    - pdns::trace::close
    linkageType: ''
    returnType: void
    signature: void close()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::close
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:708,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 710
      start: 705
    functionDepth: 0
    functionLinenumber: 705
    functionLinenumberEnd: 710
    functionName: pdns::trace::close
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.hh
    functionUses: 14
    functionsReached:
    - pdns::trace::close
    linkageType: ''
    returnType: void
    signature: void close()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::close
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:737,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 739
      start: 734
    functionDepth: 0
    functionLinenumber: 734
    functionLinenumberEnd: 739
    functionName: pdns::trace::close
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.hh
    functionUses: 15
    functionsReached:
    - pdns::trace::close
    linkageType: ''
    returnType: void
    signature: void close()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:747,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 749
      start: 743
    functionDepth: 0
    functionLinenumber: 743
    functionLinenumberEnd: 749
    functionName: pdns::trace::encode
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.hh
    functionUses: 97
    functionsReached:
    - pdns::trace::encode
    linkageType: ''
    returnType: std::string
    signature: std::string encode() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: at
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:753,1
    - Dst: insert
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:754,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:754,1
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:754,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:754,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:761,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:763,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:763,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 3
    argCount: 4
    argNames:
    - ' service'
    - ' spans'
    - ' attributes'
    - ' serverID'
    argTypes:
    - std::string
    - std::vector<Span>
    - std::vector<KeyValue>
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 764
      start: 751
    functionDepth: 2
    functionLinenumber: 751
    functionLinenumberEnd: 764
    functionName: pdns::trace::boilerPlate
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.hh
    functionUses: 2
    functionsReached:
    - std::move
    - end
    - insert
    - begin
    - at
    linkageType: ''
    returnType: TracesData
    signature: TracesData boilerPlate(std::string&& service, std::vector<Span>&& spans,
      const std::vector<KeyValue>& attributes, const std::string& serverID)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::decode<ArrayValue, AnyValue>
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:769,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' reader'
    argTypes:
    - protozero::pbf_reader
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 770
      start: 767
    functionDepth: 0
    functionLinenumber: 767
    functionLinenumberEnd: 770
    functionName: pdns::trace::ArrayValue::decode
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.hh
    functionUses: 6
    functionsReached:
    - pdns::trace::decode<ArrayValue, AnyValue>
    linkageType: ''
    returnType: ArrayValue
    signature: ArrayValue ArrayValue::decode(protozero::pbf_reader& reader)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::decode<KeyValueList, KeyValue>
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:774,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' reader'
    argTypes:
    - protozero::pbf_reader
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 775
      start: 772
    functionDepth: 0
    functionLinenumber: 772
    functionLinenumberEnd: 775
    functionName: pdns::trace::KeyValueList::decode
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.hh
    functionUses: 6
    functionsReached:
    - pdns::trace::decode<KeyValueList, KeyValue>
    linkageType: ''
    returnType: KeyValueList
    signature: KeyValueList KeyValueList::decode(protozero::pbf_reader& reader)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - arg
    argTypes:
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 786
      start: 785
    functionDepth: 0
    functionLinenumber: 785
    functionLinenumberEnd: 786
    functionName: pdns::trace::EDNSOTTraceRecord
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void EDNSOTTraceRecord(uint8_t* arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - version
    argTypes:
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 791
      start: 788
    functionDepth: 0
    functionLinenumber: 788
    functionLinenumberEnd: 791
    functionName: pdns::trace::setVersion
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setVersion(uint8_t version)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - reserved
    argTypes:
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 795
      start: 792
    functionDepth: 0
    functionLinenumber: 792
    functionLinenumberEnd: 795
    functionName: pdns::trace::setReserved
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setReserved(uint8_t reserved)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::copy
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:798,1
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:798,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:798,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' traceid'
    argTypes:
    - TraceID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 799
      start: 796
    functionDepth: 0
    functionLinenumber: 796
    functionLinenumberEnd: 799
    functionName: pdns::trace::setTraceID
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.hh
    functionUses: 0
    functionsReached:
    - end
    - std::copy
    - begin
    linkageType: ''
    returnType: void
    signature: void setTraceID(const TraceID& traceid)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::copy
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:802,1
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:802,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:802,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' spanid'
    argTypes:
    - SpanID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 803
      start: 800
    functionDepth: 0
    functionLinenumber: 800
    functionLinenumberEnd: 803
    functionName: pdns::trace::setSpanID
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.hh
    functionUses: 0
    functionsReached:
    - end
    - std::copy
    - begin
    linkageType: ''
    returnType: void
    signature: void setSpanID(const SpanID& spanid)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - flags
    argTypes:
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 807
      start: 804
    functionDepth: 0
    functionLinenumber: 804
    functionLinenumberEnd: 807
    functionName: pdns::trace::setFlags
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setFlags(const uint8_t flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - arg
    - argsize
    argTypes:
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 816
      start: 815
    functionDepth: 0
    functionLinenumber: 815
    functionLinenumberEnd: 816
    functionName: pdns::trace::EDNSOTTraceRecordView
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void EDNSOTTraceRecordView(const uint8_t* arg, size_t argsize)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - ' version'
    argTypes:
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 826
      start: 819
    functionDepth: 0
    functionLinenumber: 819
    functionLinenumberEnd: 826
    functionName: pdns::trace::getVersion
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool getVersion(uint8_t& version) const
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - ' reserved'
    argTypes:
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 834
      start: 827
    functionDepth: 0
    functionLinenumber: 827
    functionLinenumberEnd: 834
    functionName: pdns::trace::getReserved
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool getReserved(uint8_t& reserved) const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::copy
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:838,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:838,1
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:838,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - ' traceid'
    argTypes:
    - TraceID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 842
      start: 835
    functionDepth: 0
    functionLinenumber: 835
    functionLinenumberEnd: 842
    functionName: pdns::trace::getTraceID
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.hh
    functionUses: 0
    functionsReached:
    - size
    - std::copy
    - begin
    linkageType: ''
    returnType: bool
    signature: bool getTraceID(TraceID& traceid) const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:846,1
    - Dst: std::copy
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:847,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:847,1
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:847,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - ' spanid'
    argTypes:
    - SpanID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 851
      start: 843
    functionDepth: 0
    functionLinenumber: 843
    functionLinenumberEnd: 851
    functionName: pdns::trace::getSpanID
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.hh
    functionUses: 0
    functionsReached:
    - std::copy
    - size
    - begin
    linkageType: ''
    returnType: bool
    signature: bool getSpanID(SpanID& spanid) const
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - ' flags'
    argTypes:
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 859
      start: 852
    functionDepth: 0
    functionLinenumber: 852
    functionLinenumberEnd: 859
    functionName: pdns::trace::getFlags
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool getFlags(uint8_t& flags) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - ArrayValue
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 872
      start: 869
    functionDepth: 0
    functionLinenumber: 869
    functionLinenumberEnd: 872
    functionName: ArrayValue::operator==(const ArrayValue& rhs) const
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool ArrayValue::operator==(const ArrayValue& rhs) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - KeyValueList
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 877
      start: 874
    functionDepth: 0
    functionLinenumber: 874
    functionLinenumberEnd: 877
    functionName: KeyValueList::operator==(const KeyValueList& rhs) const
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool KeyValueList::operator==(const KeyValueList& rhs) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - KeyValue
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 882
      start: 879
    functionDepth: 0
    functionLinenumber: 879
    functionLinenumberEnd: 882
    functionName: KeyValue::operator==(const KeyValue& rhs) const
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool KeyValue::operator==(const KeyValue& rhs) const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: add_bool
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:51,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 3
    argNames:
    - ' writer'
    - field
    - value
    argTypes:
    - protozero::pbf_writer
    - uint8_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 48
    functionDepth: 0
    functionLinenumber: 48
    functionLinenumberEnd: 53
    functionName: pdns::trace::encode
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.hh
    functionUses: 97
    functionsReached:
    - add_bool
    linkageType: ''
    returnType: void
    signature: void encode(protozero::pbf_writer& writer, uint8_t field, bool value,
      bool always = false)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: add_uint32
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:58,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 3
    argNames:
    - ' writer'
    - field
    - value
    argTypes:
    - protozero::pbf_writer
    - uint8_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 55
    functionDepth: 0
    functionLinenumber: 55
    functionLinenumberEnd: 60
    functionName: pdns::trace::encode
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.hh
    functionUses: 97
    functionsReached:
    - add_uint32
    linkageType: ''
    returnType: void
    signature: void encode(protozero::pbf_writer& writer, uint8_t field, uint32_t
      value, bool always = false)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: add_fixed32
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:65,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - ' writer'
    - field
    - value
    argTypes:
    - protozero::pbf_writer
    - uint8_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 62
    functionDepth: 0
    functionLinenumber: 62
    functionLinenumberEnd: 67
    functionName: pdns::trace::encodeFixed
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.hh
    functionUses: 18
    functionsReached:
    - add_fixed32
    linkageType: ''
    returnType: void
    signature: void encodeFixed(protozero::pbf_writer& writer, uint8_t field, uint32_t
      value)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: add_int64
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:72,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 3
    argNames:
    - ' writer'
    - field
    - value
    argTypes:
    - protozero::pbf_writer
    - uint8_t
    - int64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 69
    functionDepth: 0
    functionLinenumber: 69
    functionLinenumberEnd: 74
    functionName: pdns::trace::encode
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.hh
    functionUses: 97
    functionsReached:
    - add_int64
    linkageType: ''
    returnType: void
    signature: void encode(protozero::pbf_writer& writer, uint8_t field, int64_t value,
      bool always = false)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: add_uint64
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:79,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 3
    argNames:
    - ' writer'
    - field
    - value
    argTypes:
    - protozero::pbf_writer
    - uint8_t
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 76
    functionDepth: 0
    functionLinenumber: 76
    functionLinenumberEnd: 81
    functionName: pdns::trace::encode
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.hh
    functionUses: 97
    functionsReached:
    - add_uint64
    linkageType: ''
    returnType: void
    signature: void encode(protozero::pbf_writer& writer, uint8_t field, uint64_t
      value, bool always = false)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: add_fixed64
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:86,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - ' writer'
    - field
    - value
    argTypes:
    - protozero::pbf_writer
    - uint8_t
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 83
    functionDepth: 0
    functionLinenumber: 83
    functionLinenumberEnd: 88
    functionName: pdns::trace::encodeFixed
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.hh
    functionUses: 18
    functionsReached:
    - add_fixed64
    linkageType: ''
    returnType: void
    signature: void encodeFixed(protozero::pbf_writer& writer, uint8_t field, uint64_t
      value)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: add_double
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:93,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 3
    argNames:
    - ' writer'
    - field
    - value
    argTypes:
    - protozero::pbf_writer
    - uint8_t
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 90
    functionDepth: 0
    functionLinenumber: 90
    functionLinenumberEnd: 95
    functionName: pdns::trace::encode
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.hh
    functionUses: 97
    functionsReached:
    - add_double
    linkageType: ''
    returnType: void
    signature: void encode(protozero::pbf_writer& writer, uint8_t field, double value,
      bool always = false)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:99,1
    - Dst: add_string
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:100,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 3
    argNames:
    - ' writer'
    - field
    - ' value'
    argTypes:
    - protozero::pbf_writer
    - uint8_t
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 97
    functionDepth: 0
    functionLinenumber: 97
    functionLinenumberEnd: 102
    functionName: pdns::trace::encode
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.hh
    functionUses: 97
    functionsReached:
    - empty
    - add_string
    linkageType: ''
    returnType: void
    signature: void encode(protozero::pbf_writer& writer, uint8_t field, const std::string&
      value, bool always = false)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:106,1
    - Dst: add_bytes
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:107,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:107,1
    - Dst: data
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:107,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:107,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 3
    argNames:
    - ' writer'
    - field
    - ' value'
    argTypes:
    - protozero::pbf_writer
    - uint8_t
    - std::vector<uint8_t>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 104
    functionDepth: 0
    functionLinenumber: 104
    functionLinenumberEnd: 109
    functionName: pdns::trace::encode
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.hh
    functionUses: 97
    functionsReached:
    - size
    - add_bytes
    - reinterpret_cast<const char*>
    - data
    - empty
    linkageType: ''
    returnType: void
    signature: void encode(protozero::pbf_writer& writer, uint8_t field, const std::vector<uint8_t>&
      value, bool always = false)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:115,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - ' writer'
    - ' vec'
    argTypes:
    - protozero::pbf_writer
    - std::vector<T>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 112
    functionDepth: 0
    functionLinenumber: 112
    functionLinenumberEnd: 117
    functionName: pdns::trace::encode
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.hh
    functionUses: 98
    functionsReached:
    - pdns::trace::encode
    linkageType: ''
    returnType: void
    signature: void encode(protozero::pbf_writer& writer, const std::vector<T>& vec)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:124,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 3
    argNames:
    - ' writer'
    - field
    - ' vec'
    argTypes:
    - protozero::pbf_writer
    - uint8_t
    - std::vector<T>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 120
    functionDepth: 0
    functionLinenumber: 120
    functionLinenumberEnd: 126
    functionName: pdns::trace::encode
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.hh
    functionUses: 99
    functionsReached:
    - pdns::trace::encode
    linkageType: ''
    returnType: void
    signature: void encode(protozero::pbf_writer& writer, uint8_t field, const std::vector<T>&
      vec)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: next
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:132,1
    - Dst: tag
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:133,1
    - Dst: get_message
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:134,1
    - Dst: std::vector::emplace_back
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:135,1
    - Dst: YAML::decode
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:135,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:138,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - ' reader'
    argTypes:
    - protozero::pbf_reader
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 139
      start: 129
    functionDepth: 1
    functionLinenumber: 129
    functionLinenumberEnd: 139
    functionName: pdns::trace::decode
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.hh
    functionUses: 0
    functionsReached:
    - next
    - std::move
    - tag
    - YAML::decode
    - std::vector::emplace_back
    - get_message
    linkageType: ''
    returnType: T
    signature: T decode(protozero::pbf_reader& reader)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:147,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' writer'
    argTypes:
    - protozero::pbf_writer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 148
      start: 145
    functionDepth: 0
    functionLinenumber: 145
    functionLinenumberEnd: 148
    functionName: pdns::trace::encode
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.hh
    functionUses: 100
    functionsReached:
    - pdns::trace::encode
    linkageType: ''
    returnType: void
    signature: void encode(protozero::pbf_writer& writer) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:161,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' writer'
    argTypes:
    - protozero::pbf_writer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 162
      start: 159
    functionDepth: 0
    functionLinenumber: 159
    functionLinenumberEnd: 162
    functionName: pdns::trace::encode
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.hh
    functionUses: 101
    functionsReached:
    - pdns::trace::encode
    linkageType: ''
    returnType: void
    signature: void encode(protozero::pbf_writer& writer) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: toLogString
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:177,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' ostrm'
    - ' val'
    argTypes:
    - std::ostream
    - AnyValue
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 178
      start: 175
    functionDepth: 0
    functionLinenumber: 175
    functionLinenumberEnd: 178
    functionName: '& operator<<(std::ostream& ostrm, const AnyValue& val)'
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.hh
    functionUses: 0
    functionsReached:
    - toLogString
    linkageType: ''
    returnType: std::ostream
    signature: std::ostream & operator<<(std::ostream& ostrm, const AnyValue& val)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 226
      start: 225
    functionDepth: 0
    functionLinenumber: 225
    functionLinenumberEnd: 226
    functionName: pdns::trace::TraceID
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void TraceID()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::copy
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:230,1
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:230,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:230,1
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:230,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' arg'
    argTypes:
    - std::initializer_list<uint8_t>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 231
      start: 227
    functionDepth: 0
    functionLinenumber: 227
    functionLinenumberEnd: 231
    functionName: pdns::trace::TraceID
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.hh
    functionUses: 0
    functionsReached:
    - end
    - std::copy
    - begin
    linkageType: ''
    returnType: void
    signature: void TraceID(const std::initializer_list<uint8_t>& arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: toLogString
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:236,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' ostrm'
    - ' val'
    argTypes:
    - std::ostream
    - TraceID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 237
      start: 234
    functionDepth: 0
    functionLinenumber: 234
    functionLinenumberEnd: 237
    functionName: '& operator<<(std::ostream& ostrm, const TraceID& val)'
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.hh
    functionUses: 0
    functionsReached:
    - toLogString
    linkageType: ''
    returnType: std::ostream
    signature: std::ostream & operator<<(std::ostream& ostrm, const TraceID& val)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TraceID::makeRandom
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:242,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 244
      start: 239
    functionDepth: 0
    functionLinenumber: 239
    functionLinenumberEnd: 244
    functionName: pdns::trace::getRandomTraceID
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.hh
    functionUses: 1
    functionsReached:
    - TraceID::makeRandom
    linkageType: ''
    returnType: TraceID
    signature: TraceID getRandomTraceID()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dns_random
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:248,1
    - Dst: pdns::trace::data
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:248,1
    - Dst: pdns::trace::size
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:248,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 249
      start: 246
    functionDepth: 0
    functionLinenumber: 246
    functionLinenumberEnd: 249
    functionName: pdns::trace::makeRandom
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.hh
    functionUses: 5
    functionsReached:
    - pdns::trace::data
    - dns_random
    - pdns::trace::size
    linkageType: ''
    returnType: void
    signature: void makeRandom()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::fill
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:253,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 254
      start: 251
    functionDepth: 0
    functionLinenumber: 251
    functionLinenumberEnd: 254
    functionName: pdns::trace::clear
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.hh
    functionUses: 15
    functionsReached:
    - pdns::trace::fill
    linkageType: ''
    returnType: void
    signature: void clear()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 261
      start: 260
    functionDepth: 0
    functionLinenumber: 260
    functionLinenumberEnd: 261
    functionName: pdns::trace::SpanID
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void SpanID()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::copy
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:265,1
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:265,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:265,1
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:265,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' arg'
    argTypes:
    - std::initializer_list<uint8_t>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 266
      start: 262
    functionDepth: 0
    functionLinenumber: 262
    functionLinenumberEnd: 266
    functionName: pdns::trace::SpanID
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.hh
    functionUses: 0
    functionsReached:
    - end
    - std::copy
    - begin
    linkageType: ''
    returnType: void
    signature: void SpanID(const std::initializer_list<uint8_t>& arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: toLogString
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:271,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' ostrm'
    - ' val'
    argTypes:
    - std::ostream
    - SpanID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 272
      start: 269
    functionDepth: 0
    functionLinenumber: 269
    functionLinenumberEnd: 272
    functionName: '& operator<<(std::ostream& ostrm, const SpanID& val)'
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.hh
    functionUses: 0
    functionsReached:
    - toLogString
    linkageType: ''
    returnType: std::ostream
    signature: std::ostream & operator<<(std::ostream& ostrm, const SpanID& val)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SpanID::makeRandom
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:277,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 279
      start: 274
    functionDepth: 0
    functionLinenumber: 274
    functionLinenumberEnd: 279
    functionName: pdns::trace::getRandomSpanID
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.hh
    functionUses: 3
    functionsReached:
    - SpanID::makeRandom
    linkageType: ''
    returnType: SpanID
    signature: SpanID getRandomSpanID()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dns_random
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:283,1
    - Dst: pdns::trace::data
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:283,1
    - Dst: pdns::trace::size
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:283,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 284
      start: 281
    functionDepth: 0
    functionLinenumber: 281
    functionLinenumberEnd: 284
    functionName: pdns::trace::makeRandom
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.hh
    functionUses: 5
    functionsReached:
    - pdns::trace::data
    - dns_random
    - pdns::trace::size
    linkageType: ''
    returnType: void
    signature: void makeRandom()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::fill
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:288,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 289
      start: 286
    functionDepth: 0
    functionLinenumber: 286
    functionLinenumberEnd: 289
    functionName: pdns::trace::clear
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.hh
    functionUses: 15
    functionsReached:
    - pdns::trace::fill
    linkageType: ''
    returnType: void
    signature: void clear()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:295,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:295,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:296,1
    - Dst: std::copy
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:298,1
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:298,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:298,1
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:298,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - ' trace'
    - ' data'
    argTypes:
    - TraceID
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 299
      start: 293
    functionDepth: 0
    functionLinenumber: 293
    functionLinenumberEnd: 299
    functionName: pdns::trace::fill
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.hh
    functionUses: 23
    functionsReached:
    - std::runtime_error
    - end
    - size
    - begin
    - std::copy
    linkageType: ''
    returnType: void
    signature: void fill(TraceID& trace, const std::string& data)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:303,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:303,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:304,1
    - Dst: std::copy
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:306,1
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:306,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:306,1
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:306,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - ' span'
    - ' data'
    argTypes:
    - SpanID
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 307
      start: 301
    functionDepth: 0
    functionLinenumber: 301
    functionLinenumberEnd: 307
    functionName: pdns::trace::fill
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.hh
    functionUses: 23
    functionsReached:
    - std::runtime_error
    - end
    - size
    - begin
    - std::copy
    linkageType: ''
    returnType: void
    signature: void fill(SpanID& span, const std::string& data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::fill
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:311,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:311,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' trace'
    - data
    - size
    argTypes:
    - TraceID
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 312
      start: 309
    functionDepth: 0
    functionLinenumber: 309
    functionLinenumberEnd: 312
    functionName: pdns::trace::fill
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.hh
    functionUses: 24
    functionsReached:
    - std::string
    - pdns::trace::fill
    linkageType: ''
    returnType: void
    signature: void fill(TraceID& trace, const char* data, size_t size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::fill
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:316,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:316,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' span'
    - data
    - size
    argTypes:
    - SpanID
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 317
      start: 314
    functionDepth: 0
    functionLinenumber: 314
    functionLinenumberEnd: 317
    functionName: pdns::trace::fill
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.hh
    functionUses: 25
    functionsReached:
    - std::string
    - pdns::trace::fill
    linkageType: ''
    returnType: void
    signature: void fill(SpanID& span, const char* data, size_t size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: add_bytes
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:321,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:321,1
    - Dst: data
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:321,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:321,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' writer'
    - field
    - ' value'
    argTypes:
    - protozero::pbf_writer
    - uint8_t
    - TraceID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 322
      start: 319
    functionDepth: 0
    functionLinenumber: 319
    functionLinenumberEnd: 322
    functionName: pdns::trace::encode
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.hh
    functionUses: 101
    functionsReached:
    - add_bytes
    - reinterpret_cast<const char*>
    - size
    - data
    linkageType: ''
    returnType: void
    signature: void encode(protozero::pbf_writer& writer, uint8_t field, const TraceID&
      value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: get_view
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:327,1
    - Dst: std::min
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:328,1
    - Dst: TraceID::size
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:328,1
    - Dst: auto::size
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:328,1
    - Dst: std::copy
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:329,1
    - Dst: auto::data
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:329,1
    - Dst: auto::data
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:329,1
    - Dst: TraceID::begin
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:329,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ' reader'
    argTypes:
    - protozero::pbf_reader
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 331
      start: 324
    functionDepth: 0
    functionLinenumber: 324
    functionLinenumberEnd: 331
    functionName: pdns::trace::decodeTraceID
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.hh
    functionUses: 0
    functionsReached:
    - std::copy
    - std::min
    - auto::data
    - get_view
    - TraceID::begin
    - auto::size
    - TraceID::size
    linkageType: ''
    returnType: TraceID
    signature: TraceID decodeTraceID(protozero::pbf_reader& reader)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: add_bytes
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:335,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:335,1
    - Dst: data
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:335,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:335,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' writer'
    - field
    - ' value'
    argTypes:
    - protozero::pbf_writer
    - uint8_t
    - SpanID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 336
      start: 333
    functionDepth: 0
    functionLinenumber: 333
    functionLinenumberEnd: 336
    functionName: pdns::trace::encode
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.hh
    functionUses: 101
    functionsReached:
    - add_bytes
    - reinterpret_cast<const char*>
    - size
    - data
    linkageType: ''
    returnType: void
    signature: void encode(protozero::pbf_writer& writer, uint8_t field, const SpanID&
      value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: get_view
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:341,1
    - Dst: std::min
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:342,1
    - Dst: SpanID::size
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:342,1
    - Dst: auto::size
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:342,1
    - Dst: std::copy
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:343,1
    - Dst: auto::data
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:343,1
    - Dst: auto::data
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:343,1
    - Dst: SpanID::begin
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:343,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ' reader'
    argTypes:
    - protozero::pbf_reader
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 345
      start: 338
    functionDepth: 0
    functionLinenumber: 338
    functionLinenumberEnd: 345
    functionName: pdns::trace::decodeSpanID
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.hh
    functionUses: 0
    functionsReached:
    - SpanID::size
    - SpanID::begin
    - std::copy
    - std::min
    - auto::data
    - get_view
    - auto::size
    linkageType: ''
    returnType: SpanID
    signature: SpanID decodeSpanID(protozero::pbf_reader& reader)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::clear
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:372,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 374
      start: 370
    functionDepth: 0
    functionLinenumber: 370
    functionLinenumberEnd: 374
    functionName: pdns::trace::clear
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.hh
    functionUses: 16
    functionsReached:
    - pdns::trace::clear
    linkageType: ''
    returnType: void
    signature: void clear()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: clock_gettime
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:382,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 384
      start: 379
    functionDepth: 0
    functionLinenumber: 379
    functionLinenumberEnd: 384
    functionName: pdns::trace::timestamp
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.hh
    functionUses: 11
    functionsReached:
    - clock_gettime
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t timestamp()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::clear
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:397,1
    - Dst: pdns::trace::clear
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:398,1
    - Dst: pdns::trace::clear
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:399,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 401
      start: 395
    functionDepth: 0
    functionLinenumber: 395
    functionLinenumberEnd: 401
    functionName: pdns::trace::clear
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.hh
    functionUses: 17
    functionsReached:
    - pdns::trace::clear
    linkageType: ''
    returnType: void
    signature: void clear()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::makeRandom
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:406,1
    - Dst: pdns::trace::makeRandom
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:409,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 411
      start: 403
    functionDepth: 0
    functionLinenumber: 403
    functionLinenumberEnd: 411
    functionName: pdns::trace::setIDsIfNotSet
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.hh
    functionUses: 0
    functionsReached:
    - pdns::trace::makeRandom
    linkageType: ''
    returnType: void
    signature: void setIDsIfNotSet()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::timestamp
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:608,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 609
      start: 606
    functionDepth: 0
    functionLinenumber: 606
    functionLinenumberEnd: 609
    functionName: pdns::trace::close
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.hh
    functionUses: 15
    functionsReached:
    - pdns::trace::timestamp
    linkageType: ''
    returnType: void
    signature: void close()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::clear
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:613,1
    - Dst: pdns::trace::clear
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:614,1
    - Dst: pdns::trace::clear
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:615,1
    - Dst: pdns::trace::clear
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:616,1
    - Dst: pdns::trace::clear
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:617,1
    - Dst: pdns::trace::clear
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:621,1
    - Dst: pdns::trace::clear
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:623,1
    - Dst: pdns::trace::clear
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:625,1
    - Dst: pdns::trace::clear
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:627,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 629
      start: 611
    functionDepth: 0
    functionLinenumber: 611
    functionLinenumberEnd: 629
    functionName: pdns::trace::clear
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.hh
    functionUses: 18
    functionsReached:
    - pdns::trace::clear
    linkageType: ''
    returnType: void
    signature: void clear()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::close
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:682,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 684
      start: 679
    functionDepth: 0
    functionLinenumber: 679
    functionLinenumberEnd: 684
    functionName: pdns::trace::close
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.hh
    functionUses: 16
    functionsReached:
    - pdns::trace::close
    linkageType: ''
    returnType: void
    signature: void close()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::close
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:708,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 710
      start: 705
    functionDepth: 0
    functionLinenumber: 705
    functionLinenumberEnd: 710
    functionName: pdns::trace::close
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.hh
    functionUses: 17
    functionsReached:
    - pdns::trace::close
    linkageType: ''
    returnType: void
    signature: void close()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::close
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:737,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 739
      start: 734
    functionDepth: 0
    functionLinenumber: 734
    functionLinenumberEnd: 739
    functionName: pdns::trace::close
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.hh
    functionUses: 18
    functionsReached:
    - pdns::trace::close
    linkageType: ''
    returnType: void
    signature: void close()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::encode
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:747,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 749
      start: 743
    functionDepth: 0
    functionLinenumber: 743
    functionLinenumberEnd: 749
    functionName: pdns::trace::encode
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.hh
    functionUses: 102
    functionsReached:
    - pdns::trace::encode
    linkageType: ''
    returnType: std::string
    signature: std::string encode() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: at
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:753,1
    - Dst: insert
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:754,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:754,1
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:754,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:754,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:761,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:763,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:763,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 3
    argCount: 4
    argNames:
    - ' service'
    - ' spans'
    - ' attributes'
    - ' serverID'
    argTypes:
    - std::string
    - std::vector<Span>
    - std::vector<KeyValue>
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 764
      start: 751
    functionDepth: 2
    functionLinenumber: 751
    functionLinenumberEnd: 764
    functionName: pdns::trace::boilerPlate
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.hh
    functionUses: 2
    functionsReached:
    - std::move
    - end
    - insert
    - begin
    - at
    linkageType: ''
    returnType: TracesData
    signature: TracesData boilerPlate(std::string&& service, std::vector<Span>&& spans,
      const std::vector<KeyValue>& attributes, const std::string& serverID)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::decode<ArrayValue, AnyValue>
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:769,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' reader'
    argTypes:
    - protozero::pbf_reader
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 770
      start: 767
    functionDepth: 0
    functionLinenumber: 767
    functionLinenumberEnd: 770
    functionName: pdns::trace::ArrayValue::decode
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.hh
    functionUses: 6
    functionsReached:
    - pdns::trace::decode<ArrayValue, AnyValue>
    linkageType: ''
    returnType: ArrayValue
    signature: ArrayValue ArrayValue::decode(protozero::pbf_reader& reader)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::trace::decode<KeyValueList, KeyValue>
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:774,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' reader'
    argTypes:
    - protozero::pbf_reader
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 775
      start: 772
    functionDepth: 0
    functionLinenumber: 772
    functionLinenumberEnd: 775
    functionName: pdns::trace::KeyValueList::decode
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.hh
    functionUses: 6
    functionsReached:
    - pdns::trace::decode<KeyValueList, KeyValue>
    linkageType: ''
    returnType: KeyValueList
    signature: KeyValueList KeyValueList::decode(protozero::pbf_reader& reader)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - arg
    argTypes:
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 786
      start: 785
    functionDepth: 0
    functionLinenumber: 785
    functionLinenumberEnd: 786
    functionName: pdns::trace::EDNSOTTraceRecord
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void EDNSOTTraceRecord(uint8_t* arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - version
    argTypes:
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 791
      start: 788
    functionDepth: 0
    functionLinenumber: 788
    functionLinenumberEnd: 791
    functionName: pdns::trace::setVersion
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setVersion(uint8_t version)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - reserved
    argTypes:
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 795
      start: 792
    functionDepth: 0
    functionLinenumber: 792
    functionLinenumberEnd: 795
    functionName: pdns::trace::setReserved
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setReserved(uint8_t reserved)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::copy
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:798,1
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:798,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:798,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' traceid'
    argTypes:
    - TraceID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 799
      start: 796
    functionDepth: 0
    functionLinenumber: 796
    functionLinenumberEnd: 799
    functionName: pdns::trace::setTraceID
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.hh
    functionUses: 0
    functionsReached:
    - end
    - std::copy
    - begin
    linkageType: ''
    returnType: void
    signature: void setTraceID(const TraceID& traceid)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::copy
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:802,1
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:802,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:802,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' spanid'
    argTypes:
    - SpanID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 803
      start: 800
    functionDepth: 0
    functionLinenumber: 800
    functionLinenumberEnd: 803
    functionName: pdns::trace::setSpanID
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.hh
    functionUses: 0
    functionsReached:
    - end
    - std::copy
    - begin
    linkageType: ''
    returnType: void
    signature: void setSpanID(const SpanID& spanid)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - flags
    argTypes:
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 807
      start: 804
    functionDepth: 0
    functionLinenumber: 804
    functionLinenumberEnd: 807
    functionName: pdns::trace::setFlags
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setFlags(const uint8_t flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - arg
    - argsize
    argTypes:
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 816
      start: 815
    functionDepth: 0
    functionLinenumber: 815
    functionLinenumberEnd: 816
    functionName: pdns::trace::EDNSOTTraceRecordView
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void EDNSOTTraceRecordView(const uint8_t* arg, size_t argsize)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - ' version'
    argTypes:
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 826
      start: 819
    functionDepth: 0
    functionLinenumber: 819
    functionLinenumberEnd: 826
    functionName: pdns::trace::getVersion
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool getVersion(uint8_t& version) const
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - ' reserved'
    argTypes:
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 834
      start: 827
    functionDepth: 0
    functionLinenumber: 827
    functionLinenumberEnd: 834
    functionName: pdns::trace::getReserved
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool getReserved(uint8_t& reserved) const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::copy
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:838,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:838,1
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:838,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - ' traceid'
    argTypes:
    - TraceID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 842
      start: 835
    functionDepth: 0
    functionLinenumber: 835
    functionLinenumberEnd: 842
    functionName: pdns::trace::getTraceID
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.hh
    functionUses: 0
    functionsReached:
    - size
    - std::copy
    - begin
    linkageType: ''
    returnType: bool
    signature: bool getTraceID(TraceID& traceid) const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:846,1
    - Dst: std::copy
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:847,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:847,1
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/protozero-trace.hh:847,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - ' spanid'
    argTypes:
    - SpanID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 851
      start: 843
    functionDepth: 0
    functionLinenumber: 843
    functionLinenumberEnd: 851
    functionName: pdns::trace::getSpanID
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.hh
    functionUses: 0
    functionsReached:
    - std::copy
    - size
    - begin
    linkageType: ''
    returnType: bool
    signature: bool getSpanID(SpanID& spanid) const
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - ' flags'
    argTypes:
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 859
      start: 852
    functionDepth: 0
    functionLinenumber: 852
    functionLinenumberEnd: 859
    functionName: pdns::trace::getFlags
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool getFlags(uint8_t& flags) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - ArrayValue
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 872
      start: 869
    functionDepth: 0
    functionLinenumber: 869
    functionLinenumberEnd: 872
    functionName: ArrayValue::operator==(const ArrayValue& rhs) const
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool ArrayValue::operator==(const ArrayValue& rhs) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - KeyValueList
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 877
      start: 874
    functionDepth: 0
    functionLinenumber: 874
    functionLinenumberEnd: 877
    functionName: KeyValueList::operator==(const KeyValueList& rhs) const
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool KeyValueList::operator==(const KeyValueList& rhs) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - KeyValue
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 882
      start: 879
    functionDepth: 0
    functionLinenumber: 879
    functionLinenumberEnd: 882
    functionName: KeyValue::operator==(const KeyValue& rhs) const
    functionSourceFile: /src/pdns/pdns/recursordist/protozero-trace.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool KeyValue::operator==(const KeyValue& rhs) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: toLogString
      Src: /src/pdns/pdns/recursordist/dnsname.cc:57,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - os
    - ' d'
    argTypes:
    - std::ostream
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 55
    functionDepth: 0
    functionLinenumber: 55
    functionLinenumberEnd: 58
    functionName: '& operator<<(std::ostream &os, const DNSName& d)'
    functionSourceFile: /src/pdns/pdns/recursordist/dnsname.cc
    functionUses: 0
    functionsReached:
    - toLogString
    linkageType: ''
    returnType: std::ostream
    signature: std::ostream & operator<<(std::ostream &os, const DNSName& d)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DNSName::appendEscapedLabel
      Src: /src/pdns/pdns/recursordist/dnsname.cc:68,1
    - Dst: std::range_error
      Src: /src/pdns/pdns/recursordist/dnsname.cc:69,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - ' msg'
    - buf
    - length
    argTypes:
    - std::string
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 60
    functionDepth: 0
    functionLinenumber: 60
    functionLinenumberEnd: 70
    functionName: DNSName::throwSafeRangeError
    functionSourceFile: /src/pdns/pdns/recursordist/dnsname.cc
    functionUses: 2
    functionsReached:
    - std::range_error
    - DNSName::appendEscapedLabel
    linkageType: ''
    returnType: void
    signature: void DNSName::throwSafeRangeError(const std::string& msg, const char*
      buf, size_t length)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: std::string_view::data
      Src: /src/pdns/pdns/recursordist/dnsname.cc:74,1
    - Dst: std::string_view::length
      Src: /src/pdns/pdns/recursordist/dnsname.cc:75,1
    - Dst: assign
      Src: /src/pdns/pdns/recursordist/dnsname.cc:78,1
    - Dst: std::memchr
      Src: /src/pdns/pdns/recursordist/dnsname.cc:80,1
    - Dst: reserve
      Src: /src/pdns/pdns/recursordist/dnsname.cc:85,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/dnsname.cc:87,1
    - Dst: DNSName::throwSafeRangeError
      Src: /src/pdns/pdns/recursordist/dnsname.cc:89,1
    - Dst: append
      Src: /src/pdns/pdns/recursordist/dnsname.cc:90,1
    - Dst: append
      Src: /src/pdns/pdns/recursordist/dnsname.cc:96,1
    - Dst: DNSName::throwSafeRangeError
      Src: /src/pdns/pdns/recursordist/dnsname.cc:100,1
    - Dst: static_cast<ptrdiff_t>
      Src: /src/pdns/pdns/recursordist/dnsname.cc:102,1
    - Dst: DNSName::throwSafeRangeError
      Src: /src/pdns/pdns/recursordist/dnsname.cc:103,1
    - Dst: append
      Src: /src/pdns/pdns/recursordist/dnsname.cc:107,1
    - Dst: segmentDNSNameRaw
      Src: /src/pdns/pdns/recursordist/dnsname.cc:110,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/dnsname.cc:111,1
    - Dst: DNSName::throwSafeRangeError
      Src: /src/pdns/pdns/recursordist/dnsname.cc:112,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 32
    argCount: 1
    argNames:
    - sw
    argTypes:
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 72
    functionDepth: 1
    functionLinenumber: 72
    functionLinenumberEnd: 116
    functionName: DNSName::DNSName
    functionSourceFile: /src/pdns/pdns/recursordist/dnsname.cc
    functionUses: 104
    functionsReached:
    - assign
    - std::string_view::length
    - std::string_view::data
    - append
    - segmentDNSNameRaw
    - static_cast<ptrdiff_t>
    - size
    - reserve
    - std::memchr
    - DNSName::throwSafeRangeError
    linkageType: ''
    returnType: void
    signature: void DNSName::DNSName(const std::string_view sw)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: std::range_error
      Src: /src/pdns/pdns/recursordist/dnsname.cc:121,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/dnsname.cc:121,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/dnsname.cc:121,1
    - Dst: memchr
      Src: /src/pdns/pdns/recursordist/dnsname.cc:124,1
    - Dst: reserve
      Src: /src/pdns/pdns/recursordist/dnsname.cc:125,1
    - Dst: DNSName::packetParser
      Src: /src/pdns/pdns/recursordist/dnsname.cc:129,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 8
    argNames:
    - pos
    - len
    - offset
    - uncompress
    - qtype
    - qclass
    - consumed
    - minOffset
    argTypes:
    - char*
    - size_t
    - size_t
    - bool
    - uint16_t*
    - uint16_t*
    - unsigned int*
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 130
      start: 118
    functionDepth: 0
    functionLinenumber: 118
    functionLinenumberEnd: 130
    functionName: DNSName::DNSName
    functionSourceFile: /src/pdns/pdns/recursordist/dnsname.cc
    functionUses: 104
    functionsReached:
    - memchr
    - std::to_string
    - reserve
    - std::range_error
    - DNSName::packetParser
    linkageType: ''
    returnType: void
    signature: void DNSName::DNSName(const char* pos, size_t len, size_t offset, bool
      uncompress, uint16_t* qtype, uint16_t* qclass, unsigned int* consumed, uint16_t
      minOffset)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: std::range_error
      Src: /src/pdns/pdns/recursordist/dnsname.cc:135,1
    - Dst: std::range_error
      Src: /src/pdns/pdns/recursordist/dnsname.cc:138,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 7
    argCount: 1
    argNames:
    - length
    argTypes:
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 132
    functionDepth: 0
    functionLinenumber: 132
    functionLinenumberEnd: 140
    functionName: checkLabelLength
    functionSourceFile: /src/pdns/pdns/recursordist/dnsname.cc
    functionUses: 6
    functionsReached:
    - std::range_error
    linkageType: ''
    returnType: void
    signature: void checkLabelLength(uint8_t length)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: at
      Src: /src/pdns/pdns/recursordist/dnsname.cc:150,1
    - Dst: std::range_error
      Src: /src/pdns/pdns/recursordist/dnsname.cc:160,1
    - Dst: std::range_error
      Src: /src/pdns/pdns/recursordist/dnsname.cc:167,1
    - Dst: checkLabelLength
      Src: /src/pdns/pdns/recursordist/dnsname.cc:169,1
    - Dst: std::range_error
      Src: /src/pdns/pdns/recursordist/dnsname.cc:172,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/dnsname.cc:174,1
    - Dst: std::range_error
      Src: /src/pdns/pdns/recursordist/dnsname.cc:175,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/dnsname.cc:180,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/dnsname.cc:183,1
    - Dst: reserve
      Src: /src/pdns/pdns/recursordist/dnsname.cc:188,1
    - Dst: resize
      Src: /src/pdns/pdns/recursordist/dnsname.cc:189,1
    - Dst: memcpy
      Src: /src/pdns/pdns/recursordist/dnsname.cc:190,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/dnsname.cc:190,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/dnsname.cc:190,1
    - Dst: append
      Src: /src/pdns/pdns/recursordist/dnsname.cc:191,1
    - Dst: static_cast<char>
      Src: /src/pdns/pdns/recursordist/dnsname.cc:191,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 38
    argCount: 3
    argNames:
    - ' view'
    - pos
    - uncompress
    argTypes:
    - pdns::views::UnsignedCharView
    - size_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 194
      start: 143
    functionDepth: 2
    functionLinenumber: 143
    functionLinenumberEnd: 194
    functionName: DNSName::parsePacketUncompressed
    functionSourceFile: /src/pdns/pdns/recursordist/dnsname.cc
    functionUses: 2
    functionsReached:
    - memcpy
    - resize
    - append
    - checkLabelLength
    - size
    - reserve
    - std::range_error
    - at
    - static_cast<char>
    linkageType: ''
    returnType: size_t
    signature: size_t DNSName::parsePacketUncompressed(const pdns::views::UnsignedCharView&
      view, size_t pos, bool uncompress)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: std::range_error
      Src: /src/pdns/pdns/recursordist/dnsname.cc:200,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/dnsname.cc:200,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/dnsname.cc:200,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/recursordist/dnsname.cc:203,1
    - Dst: std::range_error
      Src: /src/pdns/pdns/recursordist/dnsname.cc:204,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/dnsname.cc:204,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/dnsname.cc:204,1
    - Dst: DNSName::parsePacketUncompressed
      Src: /src/pdns/pdns/recursordist/dnsname.cc:209,1
    - Dst: pdns::views::UnsignedCharView::at
      Src: /src/pdns/pdns/recursordist/dnsname.cc:211,1
    - Dst: pdns::views::UnsignedCharView::size
      Src: /src/pdns/pdns/recursordist/dnsname.cc:213,1
    - Dst: abort
      Src: /src/pdns/pdns/recursordist/dnsname.cc:215,1
    - Dst: std::range_error
      Src: /src/pdns/pdns/recursordist/dnsname.cc:219,1
    - Dst: pdns::views::UnsignedCharView::at
      Src: /src/pdns/pdns/recursordist/dnsname.cc:223,1
    - Dst: std::range_error
      Src: /src/pdns/pdns/recursordist/dnsname.cc:226,1
    - Dst: std::range_error
      Src: /src/pdns/pdns/recursordist/dnsname.cc:230,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/dnsname.cc:230,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/dnsname.cc:230,1
    - Dst: std::range_error
      Src: /src/pdns/pdns/recursordist/dnsname.cc:234,1
    - Dst: DNSName::packetParser
      Src: /src/pdns/pdns/recursordist/dnsname.cc:237,1
    - Dst: DNSName::empty
      Src: /src/pdns/pdns/recursordist/dnsname.cc:242,1
    - Dst: append
      Src: /src/pdns/pdns/recursordist/dnsname.cc:243,1
    - Dst: static_cast<char>
      Src: /src/pdns/pdns/recursordist/dnsname.cc:243,1
    - Dst: pdns::views::UnsignedCharView::size
      Src: /src/pdns/pdns/recursordist/dnsname.cc:251,1
    - Dst: std::range_error
      Src: /src/pdns/pdns/recursordist/dnsname.cc:252,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/dnsname.cc:252,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/dnsname.cc:252,1
    - Dst: pdns::views::UnsignedCharView::at
      Src: /src/pdns/pdns/recursordist/dnsname.cc:254,1
    - Dst: pdns::views::UnsignedCharView::at
      Src: /src/pdns/pdns/recursordist/dnsname.cc:254,1
    - Dst: pdns::views::UnsignedCharView::size
      Src: /src/pdns/pdns/recursordist/dnsname.cc:259,1
    - Dst: std::range_error
      Src: /src/pdns/pdns/recursordist/dnsname.cc:260,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/dnsname.cc:260,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/dnsname.cc:260,1
    - Dst: pdns::views::UnsignedCharView::at
      Src: /src/pdns/pdns/recursordist/dnsname.cc:262,1
    - Dst: pdns::views::UnsignedCharView::at
      Src: /src/pdns/pdns/recursordist/dnsname.cc:262,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 48
    argCount: 9
    argNames:
    - qpos
    - len
    - offset
    - uncompress
    - qtype
    - qclass
    - consumed
    - depth
    - minOffset
    argTypes:
    - char*
    - size_t
    - size_t
    - bool
    - uint16_t*
    - uint16_t*
    - unsigned int*
    - int
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 264
      start: 197
    functionDepth: 0
    functionLinenumber: 197
    functionLinenumberEnd: 264
    functionName: DNSName::packetParser
    functionSourceFile: /src/pdns/pdns/recursordist/dnsname.cc
    functionUses: 6
    functionsReached:
    - abort
    - static_cast<size_t>
    - std::to_string
    - append
    - pdns::views::UnsignedCharView::at
    - pdns::views::UnsignedCharView::size
    - std::range_error
    - DNSName::empty
    - DNSName::parsePacketUncompressed
    - DNSName::packetParser
    - static_cast<char>
    linkageType: ''
    returnType: void
    signature: void DNSName::packetParser(const char* qpos, size_t len, size_t offset,
      bool uncompress, uint16_t* qtype, uint16_t* qclass, unsigned int* consumed,
      int depth, uint16_t minOffset)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/recursordist/dnsname.cc:269,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ' separator'
    - trailing
    argTypes:
    - std::string
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 271
      start: 266
    functionDepth: 0
    functionLinenumber: 266
    functionLinenumberEnd: 271
    functionName: DNSName::toString
    functionSourceFile: /src/pdns/pdns/recursordist/dnsname.cc
    functionUses: 92
    functionsReached:
    - DNSName::toString
    linkageType: ''
    returnType: std::string
    signature: std::string DNSName::toString(const std::string& separator, const bool
      trailing) const
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: DNSName::empty
      Src: /src/pdns/pdns/recursordist/dnsname.cc:275,1
    - Dst: std::out_of_range
      Src: /src/pdns/pdns/recursordist/dnsname.cc:276,1
    - Dst: DNSName::isRoot
      Src: /src/pdns/pdns/recursordist/dnsname.cc:279,1
    - Dst: capacity
      Src: /src/pdns/pdns/recursordist/dnsname.cc:284,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/dnsname.cc:284,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/dnsname.cc:284,1
    - Dst: reserve
      Src: /src/pdns/pdns/recursordist/dnsname.cc:285,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/dnsname.cc:285,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/dnsname.cc:285,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/dnsname.cc:290,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/dnsname.cc:291,1
    - Dst: DNSName::appendEscapedLabel
      Src: /src/pdns/pdns/recursordist/dnsname.cc:294,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/recursordist/dnsname.cc:294,1
    - Dst: resize
      Src: /src/pdns/pdns/recursordist/dnsname.cc:301,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/dnsname.cc:301,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/dnsname.cc:301,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 20
    argCount: 3
    argNames:
    - ' output'
    - ' separator'
    - trailing
    argTypes:
    - std::string
    - std::string
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 303
      start: 273
    functionDepth: 2
    functionLinenumber: 273
    functionLinenumberEnd: 303
    functionName: DNSName::toString
    functionSourceFile: /src/pdns/pdns/recursordist/dnsname.cc
    functionUses: 92
    functionsReached:
    - static_cast<size_t>
    - std::out_of_range
    - resize
    - DNSName::isRoot
    - size
    - reserve
    - capacity
    - DNSName::empty
    - c_str
    - DNSName::appendEscapedLabel
    linkageType: ''
    returnType: void
    signature: void DNSName::toString(std::string& output, const std::string& separator,
      const bool trailing) const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DNSName::empty
      Src: /src/pdns/pdns/recursordist/dnsname.cc:307,1
    - Dst: DNSName::toStringRootDot
      Src: /src/pdns/pdns/recursordist/dnsname.cc:311,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 312
      start: 305
    functionDepth: 0
    functionLinenumber: 305
    functionLinenumberEnd: 312
    functionName: DNSName::toLogString
    functionSourceFile: /src/pdns/pdns/recursordist/dnsname.cc
    functionUses: 8
    functionsReached:
    - DNSName::toStringRootDot
    - DNSName::empty
    linkageType: ''
    returnType: std::string
    signature: std::string DNSName::toLogString() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DNSName::empty
      Src: /src/pdns/pdns/recursordist/dnsname.cc:316,1
    - Dst: std::out_of_range
      Src: /src/pdns/pdns/recursordist/dnsname.cc:317,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/dnsname.cc:320,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/dnsname.cc:320,1
    - Dst: length
      Src: /src/pdns/pdns/recursordist/dnsname.cc:320,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 321
      start: 314
    functionDepth: 0
    functionLinenumber: 314
    functionLinenumberEnd: 321
    functionName: DNSName::toDNSString
    functionSourceFile: /src/pdns/pdns/recursordist/dnsname.cc
    functionUses: 6
    functionsReached:
    - length
    - std::out_of_range
    - DNSName::empty
    - c_str
    - std::string
    linkageType: ''
    returnType: std::string
    signature: std::string DNSName::toDNSString() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSName::toDNSString
      Src: /src/pdns/pdns/recursordist/dnsname.cc:325,1
    - Dst: toLowerInPlace
      Src: /src/pdns/pdns/recursordist/dnsname.cc:326,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 328
      start: 323
    functionDepth: 0
    functionLinenumber: 323
    functionLinenumberEnd: 328
    functionName: DNSName::toDNSStringLC
    functionSourceFile: /src/pdns/pdns/recursordist/dnsname.cc
    functionUses: 2
    functionsReached:
    - DNSName::toDNSString
    - toLowerInPlace
    linkageType: ''
    returnType: std::string
    signature: std::string DNSName::toDNSStringLC() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: length
      Src: /src/pdns/pdns/recursordist/dnsname.cc:336,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 337
      start: 335
    functionDepth: 0
    functionLinenumber: 335
    functionLinenumberEnd: 337
    functionName: DNSName::wirelength
    functionSourceFile: /src/pdns/pdns/recursordist/dnsname.cc
    functionUses: 15
    functionsReached:
    - length
    linkageType: ''
    returnType: size_t
    signature: size_t DNSName::wirelength() const
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: DNSName::empty
      Src: /src/pdns/pdns/recursordist/dnsname.cc:342,1
    - Dst: DNSName::empty
      Src: /src/pdns/pdns/recursordist/dnsname.cc:342,1
    - Dst: std::out_of_range
      Src: /src/pdns/pdns/recursordist/dnsname.cc:343,1
    - Dst: d_storage::size
      Src: /src/pdns/pdns/recursordist/dnsname.cc:346,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/dnsname.cc:346,1
    - Dst: cbegin
      Src: /src/pdns/pdns/recursordist/dnsname.cc:351,1
    - Dst: cend
      Src: /src/pdns/pdns/recursordist/dnsname.cc:351,1
    - Dst: std::distance
      Src: /src/pdns/pdns/recursordist/dnsname.cc:352,1
    - Dst: cend
      Src: /src/pdns/pdns/recursordist/dnsname.cc:352,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/recursordist/dnsname.cc:353,1
    - Dst: d_storage::size
      Src: /src/pdns/pdns/recursordist/dnsname.cc:353,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/recursordist/dnsname.cc:356,1
    - Dst: d_storage::size
      Src: /src/pdns/pdns/recursordist/dnsname.cc:356,1
    - Dst: d_storage::cbegin
      Src: /src/pdns/pdns/recursordist/dnsname.cc:357,1
    - Dst: cend
      Src: /src/pdns/pdns/recursordist/dnsname.cc:358,1
    - Dst: dns_tolower
      Src: /src/pdns/pdns/recursordist/dnsname.cc:359,1
    - Dst: dns_tolower
      Src: /src/pdns/pdns/recursordist/dnsname.cc:359,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/recursordist/dnsname.cc:364,1
    - Dst: std::out_of_range
      Src: /src/pdns/pdns/recursordist/dnsname.cc:365,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 23
    argCount: 1
    argNames:
    - ' parent'
    argTypes:
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 369
      start: 340
    functionDepth: 1
    functionLinenumber: 340
    functionLinenumberEnd: 369
    functionName: DNSName::isPartOf
    functionSourceFile: /src/pdns/pdns/recursordist/dnsname.cc
    functionUses: 21
    functionsReached:
    - d_storage::size
    - std::out_of_range
    - std::distance
    - static_cast<size_t>
    - dns_tolower
    - size
    - static_cast<uint8_t>
    - cbegin
    - DNSName::empty
    - cend
    - d_storage::cbegin
    linkageType: ''
    returnType: bool
    signature: bool DNSName::isPartOf(const DNSName& parent) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSName::makeUsRelative
      Src: /src/pdns/pdns/recursordist/dnsname.cc:374,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ' zone'
    argTypes:
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 376
      start: 371
    functionDepth: 0
    functionLinenumber: 371
    functionLinenumberEnd: 376
    functionName: DNSName::makeRelative
    functionSourceFile: /src/pdns/pdns/recursordist/dnsname.cc
    functionUses: 8
    functionsReached:
    - DNSName::makeUsRelative
    linkageType: ''
    returnType: DNSName
    signature: DNSName DNSName::makeRelative(const DNSName& zone) const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DNSName::isPartOf
      Src: /src/pdns/pdns/recursordist/dnsname.cc:380,1
    - Dst: erase
      Src: /src/pdns/pdns/recursordist/dnsname.cc:381,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/dnsname.cc:381,1
    - Dst: d_storage::size
      Src: /src/pdns/pdns/recursordist/dnsname.cc:381,1
    - Dst: append
      Src: /src/pdns/pdns/recursordist/dnsname.cc:382,1
    - Dst: static_cast<char>
      Src: /src/pdns/pdns/recursordist/dnsname.cc:382,1
    - Dst: DNSName::clear
      Src: /src/pdns/pdns/recursordist/dnsname.cc:385,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - ' zone'
    argTypes:
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 387
      start: 378
    functionDepth: 0
    functionLinenumber: 378
    functionLinenumberEnd: 387
    functionName: DNSName::makeUsRelative
    functionSourceFile: /src/pdns/pdns/recursordist/dnsname.cc
    functionUses: 6
    functionsReached:
    - d_storage::size
    - append
    - DNSName::clear
    - size
    - DNSName::isPartOf
    - erase
    - static_cast<char>
    linkageType: ''
    returnType: void
    signature: void DNSName::makeUsRelative(const DNSName& zone)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: DNSName::empty
      Src: /src/pdns/pdns/recursordist/dnsname.cc:391,1
    - Dst: DNSName::empty
      Src: /src/pdns/pdns/recursordist/dnsname.cc:391,1
    - Dst: DNSName::DNSName
      Src: /src/pdns/pdns/recursordist/dnsname.cc:392,1
    - Dst: DNSName::getRawLabels
      Src: /src/pdns/pdns/recursordist/dnsname.cc:397,1
    - Dst: DNSName::getRawLabels
      Src: /src/pdns/pdns/recursordist/dnsname.cc:398,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/recursordist/dnsname.cc:400,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/recursordist/dnsname.cc:400,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/recursordist/dnsname.cc:401,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/recursordist/dnsname.cc:401,1
    - Dst: std::vector::at
      Src: /src/pdns/pdns/recursordist/dnsname.cc:402,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/recursordist/dnsname.cc:402,1
    - Dst: pdns_iequals
      Src: /src/pdns/pdns/recursordist/dnsname.cc:404,1
    - Dst: DNSName::prependRawLabel
      Src: /src/pdns/pdns/recursordist/dnsname.cc:408,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 11
    argCount: 1
    argNames:
    - ' other'
    argTypes:
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 412
      start: 389
    functionDepth: 0
    functionLinenumber: 389
    functionLinenumberEnd: 412
    functionName: DNSName::getCommonLabels
    functionSourceFile: /src/pdns/pdns/recursordist/dnsname.cc
    functionUses: 2
    functionsReached:
    - std::vector::size
    - pdns_iequals
    - DNSName::prependRawLabel
    - DNSName::getRawLabels
    - std::vector::at
    - DNSName::empty
    - DNSName::DNSName
    linkageType: ''
    returnType: DNSName
    signature: DNSName DNSName::getCommonLabels(const DNSName& other) const
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: DNSName::DNSName
      Src: /src/pdns/pdns/recursordist/dnsname.cc:416,1
    - Dst: DNSName::isRoot
      Src: /src/pdns/pdns/recursordist/dnsname.cc:418,1
    - Dst: DNSName::empty
      Src: /src/pdns/pdns/recursordist/dnsname.cc:422,1
    - Dst: DNSName::getRawLabels
      Src: /src/pdns/pdns/recursordist/dnsname.cc:423,1
    - Dst: vector::empty
      Src: /src/pdns/pdns/recursordist/dnsname.cc:424,1
    - Dst: DNSName::appendRawLabel
      Src: /src/pdns/pdns/recursordist/dnsname.cc:425,1
    - Dst: vector::back
      Src: /src/pdns/pdns/recursordist/dnsname.cc:425,1
    - Dst: vector::pop_back
      Src: /src/pdns/pdns/recursordist/dnsname.cc:426,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 430
      start: 414
    functionDepth: 0
    functionLinenumber: 414
    functionLinenumberEnd: 430
    functionName: DNSName::labelReverse
    functionSourceFile: /src/pdns/pdns/recursordist/dnsname.cc
    functionUses: 3
    functionsReached:
    - vector::pop_back
    - vector::back
    - DNSName::isRoot
    - vector::empty
    - DNSName::getRawLabels
    - DNSName::appendRawLabel
    - DNSName::empty
    - DNSName::DNSName
    linkageType: ''
    returnType: DNSName
    signature: DNSName DNSName::labelReverse() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSName::appendRawLabel
      Src: /src/pdns/pdns/recursordist/dnsname.cc:434,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/dnsname.cc:434,1
    - Dst: length
      Src: /src/pdns/pdns/recursordist/dnsname.cc:434,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' label'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 435
      start: 432
    functionDepth: 0
    functionLinenumber: 432
    functionLinenumberEnd: 435
    functionName: DNSName::appendRawLabel
    functionSourceFile: /src/pdns/pdns/recursordist/dnsname.cc
    functionUses: 25
    functionsReached:
    - c_str
    - length
    - DNSName::appendRawLabel
    linkageType: ''
    returnType: void
    signature: void DNSName::appendRawLabel(const std::string& label)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: checkLabelLength
      Src: /src/pdns/pdns/recursordist/dnsname.cc:439,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/dnsname.cc:442,1
    - Dst: std::range_error
      Src: /src/pdns/pdns/recursordist/dnsname.cc:443,1
    - Dst: DNSName::empty
      Src: /src/pdns/pdns/recursordist/dnsname.cc:446,1
    - Dst: reserve
      Src: /src/pdns/pdns/recursordist/dnsname.cc:447,1
    - Dst: append
      Src: /src/pdns/pdns/recursordist/dnsname.cc:448,1
    - Dst: static_cast<char>
      Src: /src/pdns/pdns/recursordist/dnsname.cc:448,1
    - Dst: reserve
      Src: /src/pdns/pdns/recursordist/dnsname.cc:451,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/dnsname.cc:451,1
    - Dst: rbegin
      Src: /src/pdns/pdns/recursordist/dnsname.cc:452,1
    - Dst: static_cast<char>
      Src: /src/pdns/pdns/recursordist/dnsname.cc:452,1
    - Dst: append
      Src: /src/pdns/pdns/recursordist/dnsname.cc:454,1
    - Dst: append
      Src: /src/pdns/pdns/recursordist/dnsname.cc:455,1
    - Dst: static_cast<char>
      Src: /src/pdns/pdns/recursordist/dnsname.cc:455,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 2
    argNames:
    - start
    - length
    argTypes:
    - char*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 456
      start: 437
    functionDepth: 0
    functionLinenumber: 437
    functionLinenumberEnd: 456
    functionName: DNSName::appendRawLabel
    functionSourceFile: /src/pdns/pdns/recursordist/dnsname.cc
    functionUses: 25
    functionsReached:
    - rbegin
    - append
    - checkLabelLength
    - size
    - reserve
    - std::range_error
    - DNSName::empty
    - static_cast<char>
    linkageType: ''
    returnType: void
    signature: void DNSName::appendRawLabel(const char* start, unsigned int length)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: checkLabelLength
      Src: /src/pdns/pdns/recursordist/dnsname.cc:460,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/dnsname.cc:460,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/dnsname.cc:463,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/dnsname.cc:463,1
    - Dst: std::range_error
      Src: /src/pdns/pdns/recursordist/dnsname.cc:464,1
    - Dst: DNSName::empty
      Src: /src/pdns/pdns/recursordist/dnsname.cc:467,1
    - Dst: reserve
      Src: /src/pdns/pdns/recursordist/dnsname.cc:468,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/dnsname.cc:468,1
    - Dst: append
      Src: /src/pdns/pdns/recursordist/dnsname.cc:469,1
    - Dst: static_cast<char>
      Src: /src/pdns/pdns/recursordist/dnsname.cc:469,1
    - Dst: reserve
      Src: /src/pdns/pdns/recursordist/dnsname.cc:472,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/dnsname.cc:472,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/dnsname.cc:472,1
    - Dst: static_cast<char>
      Src: /src/pdns/pdns/recursordist/dnsname.cc:475,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/dnsname.cc:475,1
    - Dst: string_t::append
      Src: /src/pdns/pdns/recursordist/dnsname.cc:476,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/dnsname.cc:476,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/dnsname.cc:476,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 1
    argNames:
    - ' label'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 478
      start: 458
    functionDepth: 0
    functionLinenumber: 458
    functionLinenumberEnd: 478
    functionName: DNSName::prependRawLabel
    functionSourceFile: /src/pdns/pdns/recursordist/dnsname.cc
    functionUses: 29
    functionsReached:
    - append
    - checkLabelLength
    - size
    - reserve
    - std::range_error
    - DNSName::empty
    - string_t::append
    - c_str
    - static_cast<char>
    linkageType: ''
    returnType: void
    signature: void DNSName::prependRawLabel(const std::string& label)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: DNSName::getRawLabels
      Src: /src/pdns/pdns/recursordist/dnsname.cc:484,1
    - Dst: DNSName::getRawLabels
      Src: /src/pdns/pdns/recursordist/dnsname.cc:485,1
    - Dst: auto::rbegin
      Src: /src/pdns/pdns/recursordist/dnsname.cc:486,1
    - Dst: auto::rend
      Src: /src/pdns/pdns/recursordist/dnsname.cc:487,1
    - Dst: auto::rbegin
      Src: /src/pdns/pdns/recursordist/dnsname.cc:488,1
    - Dst: auto::rend
      Src: /src/pdns/pdns/recursordist/dnsname.cc:489,1
    - Dst: pdns_ilexicographical_compare_three_way
      Src: /src/pdns/pdns/recursordist/dnsname.cc:491,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 506
      start: 480
    functionDepth: 0
    functionLinenumber: 480
    functionLinenumberEnd: 506
    functionName: DNSName::slowCanonCompare_three_way
    functionSourceFile: /src/pdns/pdns/recursordist/dnsname.cc
    functionUses: 2
    functionsReached:
    - pdns_ilexicographical_compare_three_way
    - auto::rend
    - DNSName::getRawLabels
    - auto::rbegin
    linkageType: ''
    returnType: int
    signature: int DNSName::slowCanonCompare_three_way(const DNSName& rhs) const
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/dnsname.cc:524,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/dnsname.cc:524,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/dnsname.cc:524,1
    - Dst: std::array::max_size
      Src: /src/pdns/pdns/recursordist/dnsname.cc:524,1
    - Dst: std::array::at
      Src: /src/pdns/pdns/recursordist/dnsname.cc:525,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/dnsname.cc:525,1
    - Dst: d_storage::c_str
      Src: /src/pdns/pdns/recursordist/dnsname.cc:527,1
    - Dst: d_storage::c_str
      Src: /src/pdns/pdns/recursordist/dnsname.cc:527,1
    - Dst: d_storage::size
      Src: /src/pdns/pdns/recursordist/dnsname.cc:527,1
    - Dst: std::array::max_size
      Src: /src/pdns/pdns/recursordist/dnsname.cc:527,1
    - Dst: std::array::at
      Src: /src/pdns/pdns/recursordist/dnsname.cc:528,1
    - Dst: d_storage::c_str
      Src: /src/pdns/pdns/recursordist/dnsname.cc:528,1
    - Dst: std::array::max_size
      Src: /src/pdns/pdns/recursordist/dnsname.cc:532,1
    - Dst: std::array::max_size
      Src: /src/pdns/pdns/recursordist/dnsname.cc:532,1
    - Dst: DNSName::slowCanonCompare_three_way
      Src: /src/pdns/pdns/recursordist/dnsname.cc:533,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/dnsname.cc:547,1
    - Dst: std::array::at
      Src: /src/pdns/pdns/recursordist/dnsname.cc:547,1
    - Dst: d_storage::c_str
      Src: /src/pdns/pdns/recursordist/dnsname.cc:548,1
    - Dst: std::array::at
      Src: /src/pdns/pdns/recursordist/dnsname.cc:548,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/dnsname.cc:549,1
    - Dst: std::array::at
      Src: /src/pdns/pdns/recursordist/dnsname.cc:549,1
    - Dst: d_storage::c_str
      Src: /src/pdns/pdns/recursordist/dnsname.cc:550,1
    - Dst: std::array::at
      Src: /src/pdns/pdns/recursordist/dnsname.cc:550,1
    - Dst: std::isdigit
      Src: /src/pdns/pdns/recursordist/dnsname.cc:563,1
    - Dst: static_cast<unsigned char>
      Src: /src/pdns/pdns/recursordist/dnsname.cc:563,1
    - Dst: std::isdigit
      Src: /src/pdns/pdns/recursordist/dnsname.cc:570,1
    - Dst: static_cast<unsigned char>
      Src: /src/pdns/pdns/recursordist/dnsname.cc:570,1
    - Dst: pdns_ilexicographical_compare_three_way
      Src: /src/pdns/pdns/recursordist/dnsname.cc:582,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 42
    argCount: 2
    argNames:
    - ' rhs'
    - pretty
    argTypes:
    - DNSName
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 587
      start: 508
    functionDepth: 0
    functionLinenumber: 508
    functionLinenumberEnd: 587
    functionName: DNSName::canonCompare_three_way
    functionSourceFile: /src/pdns/pdns/recursordist/dnsname.cc
    functionUses: 8
    functionsReached:
    - DNSName::slowCanonCompare_three_way
    - d_storage::size
    - pdns_ilexicographical_compare_three_way
    - d_storage::c_str
    - size
    - std::array::max_size
    - std::isdigit
    - c_str
    - std::array::at
    - static_cast<unsigned char>
    linkageType: ''
    returnType: int
    signature: int DNSName::canonCompare_three_way(const DNSName& rhs, bool pretty)
      const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vector::reserve
      Src: /src/pdns/pdns/recursordist/dnsname.cc:593,1
    - Dst: DNSName::countLabels
      Src: /src/pdns/pdns/recursordist/dnsname.cc:593,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/dnsname.cc:595,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/dnsname.cc:595,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/dnsname.cc:595,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/recursordist/dnsname.cc:596,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 599
      start: 590
    functionDepth: 0
    functionLinenumber: 590
    functionLinenumberEnd: 599
    functionName: DNSName::getRawLabels
    functionSourceFile: /src/pdns/pdns/recursordist/dnsname.cc
    functionUses: 19
    functionsReached:
    - vector::push_back
    - c_str
    - DNSName::countLabels
    - size
    - vector::reserve
    linkageType: ''
    returnType: vector<std::string>
    signature: vector<std::string> DNSName::getRawLabels() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/dnsname.cc:604,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/dnsname.cc:604,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/dnsname.cc:604,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/dnsname.cc:606,1
    - Dst: std::out_of_range
      Src: /src/pdns/pdns/recursordist/dnsname.cc:610,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/dnsname.cc:610,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/dnsname.cc:610,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 7
    argCount: 1
    argNames:
    - pos
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 611
      start: 601
    functionDepth: 0
    functionLinenumber: 601
    functionLinenumberEnd: 611
    functionName: DNSName::getRawLabel
    functionSourceFile: /src/pdns/pdns/recursordist/dnsname.cc
    functionUses: 4
    functionsReached:
    - std::out_of_range
    - std::to_string
    - size
    - c_str
    - std::string
    linkageType: ''
    returnType: std::string
    signature: std::string DNSName::getRawLabel(unsigned int pos) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSName::trimToLabels
      Src: /src/pdns/pdns/recursordist/dnsname.cc:616,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 618
      start: 613
    functionDepth: 0
    functionLinenumber: 613
    functionLinenumberEnd: 618
    functionName: DNSName::getLastLabel
    functionSourceFile: /src/pdns/pdns/recursordist/dnsname.cc
    functionUses: 2
    functionsReached:
    - DNSName::trimToLabels
    linkageType: ''
    returnType: DNSName
    signature: DNSName DNSName::getLastLabel() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DNSName::empty
      Src: /src/pdns/pdns/recursordist/dnsname.cc:622,1
    - Dst: erase
      Src: /src/pdns/pdns/recursordist/dnsname.cc:625,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 627
      start: 620
    functionDepth: 0
    functionLinenumber: 620
    functionLinenumberEnd: 627
    functionName: DNSName::chopOff
    functionSourceFile: /src/pdns/pdns/recursordist/dnsname.cc
    functionUses: 43
    functionsReached:
    - erase
    - DNSName::empty
    linkageType: ''
    returnType: bool
    signature: bool DNSName::chopOff()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/recursordist/dnsname.cc:631,1
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/dnsname.cc:634,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 636
      start: 629
    functionDepth: 0
    functionLinenumber: 629
    functionLinenumberEnd: 636
    functionName: DNSName::isWildcard
    functionSourceFile: /src/pdns/pdns/recursordist/dnsname.cc
    functionUses: 6
    functionsReached:
    - size
    - begin
    linkageType: ''
    returnType: bool
    signature: bool DNSName::isWildcard() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Regex
      Src: /src/pdns/pdns/recursordist/dnsname.cc:649,1
    - Dst: Regex::match
      Src: /src/pdns/pdns/recursordist/dnsname.cc:650,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/recursordist/dnsname.cc:650,1
    - Dst: Regex
      Src: /src/pdns/pdns/recursordist/dnsname.cc:652,1
    - Dst: Regex::match
      Src: /src/pdns/pdns/recursordist/dnsname.cc:653,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/recursordist/dnsname.cc:653,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - allowUnderscore
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 654
      start: 646
    functionDepth: 0
    functionLinenumber: 646
    functionLinenumberEnd: 654
    functionName: DNSName::isHostname
    functionSourceFile: /src/pdns/pdns/recursordist/dnsname.cc
    functionUses: 2
    functionsReached:
    - Regex
    - Regex::match
    - DNSName::toString
    linkageType: ''
    returnType: bool
    signature: bool DNSName::isHostname(bool allowUnderscore) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/recursordist/dnsname.cc:659,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/dnsname.cc:659,1
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/recursordist/dnsname.cc:660,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/dnsname.cc:660,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 667
      start: 656
    functionDepth: 0
    functionLinenumber: 656
    functionLinenumberEnd: 667
    functionName: DNSName::countLabels
    functionSourceFile: /src/pdns/pdns/recursordist/dnsname.cc
    functionUses: 22
    functionsReached:
    - c_str
    - reinterpret_cast<const unsigned char*>
    - size
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int DNSName::countLabels() const
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: DNSName::countLabels
      Src: /src/pdns/pdns/recursordist/dnsname.cc:672,1
    - Dst: DNSName::chopOff
      Src: /src/pdns/pdns/recursordist/dnsname.cc:673,1
    - Dst: DNSName::empty
      Src: /src/pdns/pdns/recursordist/dnsname.cc:679,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - to
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 683
      start: 669
    functionDepth: 0
    functionLinenumber: 669
    functionLinenumberEnd: 683
    functionName: DNSName::trimToLabels
    functionSourceFile: /src/pdns/pdns/recursordist/dnsname.cc
    functionUses: 9
    functionsReached:
    - DNSName::countLabels
    - DNSName::empty
    - DNSName::chopOff
    linkageType: ''
    returnType: void
    signature: void DNSName::trimToLabels(unsigned int to)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash
      Src: /src/pdns/pdns/recursordist/dnsname.cc:687,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' d'
    argTypes:
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 688
      start: 685
    functionDepth: 2
    functionLinenumber: 685
    functionLinenumberEnd: 688
    functionName: hash_value
    functionSourceFile: /src/pdns/pdns/recursordist/dnsname.cc
    functionUses: 0
    functionsReached:
    - hash
    linkageType: ''
    returnType: size_t
    signature: size_t hash_value(DNSName const& d)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/recursordist/dnsname.cc:695,1
    - Dst: append
      Src: /src/pdns/pdns/recursordist/dnsname.cc:703,1
    - Dst: static_cast<char>
      Src: /src/pdns/pdns/recursordist/dnsname.cc:703,1
    - Dst: snprintf
      Src: /src/pdns/pdns/recursordist/dnsname.cc:707,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/recursordist/dnsname.cc:708,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/dnsname.cc:709,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/dnsname.cc:709,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/dnsname.cc:709,1
    - Dst: append
      Src: /src/pdns/pdns/recursordist/dnsname.cc:711,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 19
    argCount: 3
    argNames:
    - ' appendTo'
    - orig
    - len
    argTypes:
    - std::string
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 716
      start: 690
    functionDepth: 0
    functionLinenumber: 690
    functionLinenumberEnd: 716
    functionName: DNSName::appendEscapedLabel
    functionSourceFile: /src/pdns/pdns/recursordist/dnsname.cc
    functionUses: 6
    functionsReached:
    - static_cast<size_t>
    - snprintf
    - std::to_string
    - std::runtime_error
    - append
    - static_cast<uint8_t>
    - std::string
    - static_cast<char>
    linkageType: ''
    returnType: void
    signature: void DNSName::appendEscapedLabel(std::string& appendTo, const char*
      orig, size_t len)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: at
      Src: /src/pdns/pdns/recursordist/dnsname.cc:722,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/dnsname.cc:726,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/dnsname.cc:735,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 739
      start: 718
    functionDepth: 0
    functionLinenumber: 718
    functionLinenumberEnd: 739
    functionName: DNSName::has8bitBytes
    functionSourceFile: /src/pdns/pdns/recursordist/dnsname.cc
    functionUses: 0
    functionsReached:
    - at
    linkageType: ''
    returnType: bool
    signature: bool DNSName::has8bitBytes() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/recursordist/dnsname.cc:815,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/recursordist/dnsname.cc:816,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/dnsname.cc:816,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/dnsname.cc:820,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - ' storage'
    argTypes:
    - DNSName::string_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 824
      start: 812
    functionDepth: 0
    functionLinenumber: 812
    functionLinenumberEnd: 824
    functionName: DNSName::RawLabelsVisitor::RawLabelsVisitor(const DNSName::string_t&
      storage)
    functionSourceFile: /src/pdns/pdns/recursordist/dnsname.cc
    functionUses: 0
    functionsReached:
    - at
    - size
    - static_cast<uint8_t>
    linkageType: ''
    returnType: void
    signature: void DNSName::RawLabelsVisitor::RawLabelsVisitor(const DNSName::string_t&
      storage)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSName::getRawLabelsVisitor
      Src: /src/pdns/pdns/recursordist/dnsname.cc:828,1
    - Dst: getStorage
      Src: /src/pdns/pdns/recursordist/dnsname.cc:828,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 829
      start: 826
    functionDepth: 0
    functionLinenumber: 826
    functionLinenumberEnd: 829
    functionName: DNSName::getRawLabelsVisitor
    functionSourceFile: /src/pdns/pdns/recursordist/dnsname.cc
    functionUses: 5
    functionsReached:
    - DNSName::getRawLabelsVisitor
    - getStorage
    linkageType: ''
    returnType: DNSName::RawLabelsVisitor
    signature: DNSName::RawLabelsVisitor DNSName::getRawLabelsVisitor() const
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: std::out_of_range
      Src: /src/pdns/pdns/recursordist/dnsname.cc:834,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/dnsname.cc:836,1
    - Dst: std::string_view
      Src: /src/pdns/pdns/recursordist/dnsname.cc:838,1
    - Dst: std::string_view
      Src: /src/pdns/pdns/recursordist/dnsname.cc:840,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/dnsname.cc:840,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 841
      start: 831
    functionDepth: 0
    functionLinenumber: 831
    functionLinenumberEnd: 841
    functionName: DNSName::RawLabelsVisitor::front() const
    functionSourceFile: /src/pdns/pdns/recursordist/dnsname.cc
    functionUses: 0
    functionsReached:
    - std::string_view
    - std::out_of_range
    - at
    linkageType: ''
    returnType: std::string_view
    signature: std::string_view DNSName::RawLabelsVisitor::front() const
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: std::out_of_range
      Src: /src/pdns/pdns/recursordist/dnsname.cc:846,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/dnsname.cc:848,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/dnsname.cc:849,1
    - Dst: std::string_view
      Src: /src/pdns/pdns/recursordist/dnsname.cc:851,1
    - Dst: std::string_view
      Src: /src/pdns/pdns/recursordist/dnsname.cc:853,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/dnsname.cc:853,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 854
      start: 843
    functionDepth: 0
    functionLinenumber: 843
    functionLinenumberEnd: 854
    functionName: DNSName::RawLabelsVisitor::back() const
    functionSourceFile: /src/pdns/pdns/recursordist/dnsname.cc
    functionUses: 0
    functionsReached:
    - std::string_view
    - std::out_of_range
    - at
    linkageType: ''
    returnType: std::string_view
    signature: std::string_view DNSName::RawLabelsVisitor::back() const
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 863
      start: 856
    functionDepth: 0
    functionLinenumber: 856
    functionLinenumberEnd: 863
    functionName: DNSName::RawLabelsVisitor::pop_back()
    functionSourceFile: /src/pdns/pdns/recursordist/dnsname.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool DNSName::RawLabelsVisitor::pop_back()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 868
      start: 865
    functionDepth: 0
    functionLinenumber: 865
    functionLinenumberEnd: 868
    functionName: DNSName::RawLabelsVisitor::empty() const
    functionSourceFile: /src/pdns/pdns/recursordist/dnsname.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool DNSName::RawLabelsVisitor::empty() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DNSName::empty
      Src: /src/pdns/pdns/recursordist/dnsname.cc:872,1
    - Dst: DNSName::empty
      Src: /src/pdns/pdns/recursordist/dnsname.cc:872,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/dnsname.cc:872,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/dnsname.cc:872,1
    - Dst: pdns_ilexicographical_compare_three_way
      Src: /src/pdns/pdns/recursordist/dnsname.cc:876,1
    - Dst: std::string_view
      Src: /src/pdns/pdns/recursordist/dnsname.cc:876,1
    - Dst: data
      Src: /src/pdns/pdns/recursordist/dnsname.cc:876,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/dnsname.cc:876,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - ' wire_uncompressed'
    argTypes:
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 877
      start: 870
    functionDepth: 0
    functionLinenumber: 870
    functionLinenumberEnd: 877
    functionName: DNSName::matchesUncompressedName
    functionSourceFile: /src/pdns/pdns/recursordist/dnsname.cc
    functionUses: 2
    functionsReached:
    - std::string_view
    - pdns_ilexicographical_compare_three_way
    - size
    - DNSName::empty
    - data
    linkageType: ''
    returnType: bool
    signature: bool DNSName::matchesUncompressedName(const std::string_view& wire_uncompressed)
      const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: toLogString
      Src: /src/pdns/pdns/recursordist/dnsname.cc:882,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ostr
    - ' zone'
    argTypes:
    - std::ostream
    - ZoneName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 883
      start: 880
    functionDepth: 0
    functionLinenumber: 880
    functionLinenumberEnd: 883
    functionName: '& operator<<(std::ostream &ostr, const ZoneName& zone)'
    functionSourceFile: /src/pdns/pdns/recursordist/dnsname.cc
    functionUses: 0
    functionsReached:
    - toLogString
    linkageType: ''
    returnType: std::ostream
    signature: std::ostream & operator<<(std::ostream &ostr, const ZoneName& zone)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash
      Src: /src/pdns/pdns/recursordist/dnsname.cc:887,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' zone'
    argTypes:
    - ZoneName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 888
      start: 885
    functionDepth: 2
    functionLinenumber: 885
    functionLinenumberEnd: 888
    functionName: hash_value
    functionSourceFile: /src/pdns/pdns/recursordist/dnsname.cc
    functionUses: 0
    functionsReached:
    - hash
    linkageType: ''
    returnType: size_t
    signature: size_t hash_value(ZoneName const& zone)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSName::isPartOf
      Src: /src/pdns/pdns/recursordist/dnsname.cc:895,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - ZoneName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 896
      start: 893
    functionDepth: 0
    functionLinenumber: 893
    functionLinenumberEnd: 896
    functionName: DNSName::isPartOf
    functionSourceFile: /src/pdns/pdns/recursordist/dnsname.cc
    functionUses: 23
    functionsReached:
    - DNSName::isPartOf
    linkageType: ''
    returnType: bool
    signature: bool DNSName::isPartOf(const ZoneName& rhs) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSName::makeRelative
      Src: /src/pdns/pdns/recursordist/dnsname.cc:899,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' zone'
    argTypes:
    - ZoneName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 900
      start: 897
    functionDepth: 0
    functionLinenumber: 897
    functionLinenumberEnd: 900
    functionName: DNSName::makeRelative
    functionSourceFile: /src/pdns/pdns/recursordist/dnsname.cc
    functionUses: 9
    functionsReached:
    - DNSName::makeRelative
    linkageType: ''
    returnType: DNSName
    signature: DNSName DNSName::makeRelative(const ZoneName& zone) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSName::makeUsRelative
      Src: /src/pdns/pdns/recursordist/dnsname.cc:903,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' zone'
    argTypes:
    - ZoneName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 904
      start: 901
    functionDepth: 0
    functionLinenumber: 901
    functionLinenumberEnd: 904
    functionName: DNSName::makeUsRelative
    functionSourceFile: /src/pdns/pdns/recursordist/dnsname.cc
    functionUses: 7
    functionsReached:
    - DNSName::makeUsRelative
    linkageType: ''
    returnType: void
    signature: void DNSName::makeUsRelative(const ZoneName& zone)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: std::string_view::find
      Src: /src/pdns/pdns/recursordist/dnsname.cc:912,1
    - Dst: std::string_view::length
      Src: /src/pdns/pdns/recursordist/dnsname.cc:914,1
    - Dst: std::string_view::at
      Src: /src/pdns/pdns/recursordist/dnsname.cc:917,1
    - Dst: std::string_view::at
      Src: /src/pdns/pdns/recursordist/dnsname.cc:923,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 16
    argCount: 1
    argNames:
    - name
    argTypes:
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 932
      start: 906
    functionDepth: 0
    functionLinenumber: 906
    functionLinenumberEnd: 932
    functionName: ZoneName::findVariantSeparator
    functionSourceFile: /src/pdns/pdns/recursordist/dnsname.cc
    functionUses: 4
    functionsReached:
    - std::string_view::at
    - std::string_view::length
    - std::string_view::find
    linkageType: ''
    returnType: std::string_view::size_type
    signature: std::string_view::size_type ZoneName::findVariantSeparator(std::string_view
      name)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ZoneName::findVariantSeparator
      Src: /src/pdns/pdns/recursordist/dnsname.cc:936,1
    - Dst: ZoneName::setVariant
      Src: /src/pdns/pdns/recursordist/dnsname.cc:937,1
    - Dst: std::string_view::substr
      Src: /src/pdns/pdns/recursordist/dnsname.cc:937,1
    - Dst: std::string_view::substr
      Src: /src/pdns/pdns/recursordist/dnsname.cc:938,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/dnsname.cc:940,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - name
    argTypes:
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 941
      start: 934
    functionDepth: 0
    functionLinenumber: 934
    functionLinenumberEnd: 941
    functionName: ZoneName::ZoneName
    functionSourceFile: /src/pdns/pdns/recursordist/dnsname.cc
    functionUses: 9
    functionsReached:
    - ZoneName::setVariant
    - ZoneName::findVariantSeparator
    - DNSName
    - std::string_view::substr
    linkageType: ''
    returnType: void
    signature: void ZoneName::ZoneName(std::string_view name)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ZoneName::setVariant
      Src: /src/pdns/pdns/recursordist/dnsname.cc:946,1
    - Dst: std::string_view::substr
      Src: /src/pdns/pdns/recursordist/dnsname.cc:946,1
    - Dst: std::string_view::substr
      Src: /src/pdns/pdns/recursordist/dnsname.cc:947,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/dnsname.cc:949,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - name
    - sep
    argTypes:
    - std::string_view
    - std::string_view::size_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 950
      start: 943
    functionDepth: 0
    functionLinenumber: 943
    functionLinenumberEnd: 950
    functionName: ZoneName::ZoneName
    functionSourceFile: /src/pdns/pdns/recursordist/dnsname.cc
    functionUses: 9
    functionsReached:
    - ZoneName::setVariant
    - std::string_view::substr
    - DNSName
    linkageType: ''
    returnType: void
    signature: void ZoneName::ZoneName(std::string_view name, std::string_view::size_type
      sep)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::string_view::find_first_not_of
      Src: /src/pdns/pdns/recursordist/dnsname.cc:954,1
    - Dst: std::out_of_range
      Src: /src/pdns/pdns/recursordist/dnsname.cc:955,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - variant
    argTypes:
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 958
      start: 952
    functionDepth: 0
    functionLinenumber: 952
    functionLinenumberEnd: 958
    functionName: ZoneName::setVariant
    functionSourceFile: /src/pdns/pdns/recursordist/dnsname.cc
    functionUses: 6
    functionsReached:
    - std::out_of_range
    - std::string_view::find_first_not_of
    linkageType: ''
    returnType: void
    signature: void ZoneName::setVariant(std::string_view variant)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ZoneName::toLogString
      Src: /src/pdns/pdns/recursordist/dnsname.cc:962,1
    - Dst: ZoneName::empty
      Src: /src/pdns/pdns/recursordist/dnsname.cc:963,1
    - Dst: std::string::push_back
      Src: /src/pdns/pdns/recursordist/dnsname.cc:966,1
    - Dst: isRoot
      Src: /src/pdns/pdns/recursordist/dnsname.cc:967,1
    - Dst: std::string::push_back
      Src: /src/pdns/pdns/recursordist/dnsname.cc:968,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 973
      start: 960
    functionDepth: 0
    functionLinenumber: 960
    functionLinenumberEnd: 973
    functionName: ZoneName::toLogString
    functionSourceFile: /src/pdns/pdns/recursordist/dnsname.cc
    functionUses: 7
    functionsReached:
    - std::string::push_back
    - isRoot
    - ZoneName::empty
    - ZoneName::toLogString
    linkageType: ''
    returnType: std::string
    signature: std::string ZoneName::toLogString() const
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ZoneName::toString
      Src: /src/pdns/pdns/recursordist/dnsname.cc:977,1
    - Dst: ZoneName::empty
      Src: /src/pdns/pdns/recursordist/dnsname.cc:978,1
    - Dst: std::string::push_back
      Src: /src/pdns/pdns/recursordist/dnsname.cc:980,1
    - Dst: std::string::push_back
      Src: /src/pdns/pdns/recursordist/dnsname.cc:982,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - ' separator'
    - trailing
    argTypes:
    - std::string
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 986
      start: 975
    functionDepth: 0
    functionLinenumber: 975
    functionLinenumberEnd: 986
    functionName: ZoneName::toString
    functionSourceFile: /src/pdns/pdns/recursordist/dnsname.cc
    functionUses: 13
    functionsReached:
    - std::string::push_back
    - ZoneName::toString
    - ZoneName::empty
    linkageType: ''
    returnType: std::string
    signature: std::string ZoneName::toString(const std::string& separator, const
      bool trailing) const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ZoneName::toStringNoDot
      Src: /src/pdns/pdns/recursordist/dnsname.cc:990,1
    - Dst: ZoneName::empty
      Src: /src/pdns/pdns/recursordist/dnsname.cc:991,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 996
      start: 988
    functionDepth: 0
    functionLinenumber: 988
    functionLinenumberEnd: 996
    functionName: ZoneName::toStringNoDot
    functionSourceFile: /src/pdns/pdns/recursordist/dnsname.cc
    functionUses: 3
    functionsReached:
    - ZoneName::empty
    - ZoneName::toStringNoDot
    linkageType: ''
    returnType: std::string
    signature: std::string ZoneName::toStringNoDot() const
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ZoneName::toStringRootDot
      Src: /src/pdns/pdns/recursordist/dnsname.cc:1000,1
    - Dst: ZoneName::empty
      Src: /src/pdns/pdns/recursordist/dnsname.cc:1001,1
    - Dst: isRoot
      Src: /src/pdns/pdns/recursordist/dnsname.cc:1002,1
    - Dst: std::string::push_back
      Src: /src/pdns/pdns/recursordist/dnsname.cc:1003,1
    - Dst: std::string::push_back
      Src: /src/pdns/pdns/recursordist/dnsname.cc:1005,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1009
      start: 998
    functionDepth: 0
    functionLinenumber: 998
    functionLinenumberEnd: 1009
    functionName: ZoneName::toStringRootDot
    functionSourceFile: /src/pdns/pdns/recursordist/dnsname.cc
    functionUses: 3
    functionsReached:
    - isRoot
    - std::string::push_back
    - ZoneName::empty
    - ZoneName::toStringRootDot
    linkageType: ''
    returnType: std::string
    signature: std::string ZoneName::toStringRootDot() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ZoneName::empty
      Src: /src/pdns/pdns/recursordist/dnsname.cc:1013,1
    - Dst: burtleCI
      Src: /src/pdns/pdns/recursordist/dnsname.cc:1014,1
    - Dst: ZoneName::hash
      Src: /src/pdns/pdns/recursordist/dnsname.cc:1017,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - init
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1018
      start: 1011
    functionDepth: 0
    functionLinenumber: 1011
    functionLinenumberEnd: 1018
    functionName: ZoneName::hash
    functionSourceFile: /src/pdns/pdns/recursordist/dnsname.cc
    functionUses: 3
    functionsReached:
    - burtleCI
    - ZoneName::hash
    - ZoneName::empty
    linkageType: ''
    returnType: size_t
    signature: size_t ZoneName::hash(size_t init) const
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: getStorage
      Src: /src/pdns/pdns/recursordist/dnsname.cc:1025,1
    - Dst: getStorage
      Src: /src/pdns/pdns/recursordist/dnsname.cc:1026,1
    - Dst: d_name::getStorage
      Src: /src/pdns/pdns/recursordist/dnsname.cc:1027,1
    - Dst: d_name::getStorage
      Src: /src/pdns/pdns/recursordist/dnsname.cc:1028,1
    - Dst: dns_tolower
      Src: /src/pdns/pdns/recursordist/dnsname.cc:1030,1
    - Dst: dns_tolower
      Src: /src/pdns/pdns/recursordist/dnsname.cc:1031,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - ZoneName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1052
      start: 1020
    functionDepth: 0
    functionLinenumber: 1020
    functionLinenumberEnd: 1052
    functionName: ZoneName::operator<(const ZoneName& rhs)  const
    functionSourceFile: /src/pdns/pdns/recursordist/dnsname.cc
    functionUses: 0
    functionsReached:
    - d_name::getStorage
    - dns_tolower
    - getStorage
    linkageType: ''
    returnType: bool
    signature: bool ZoneName::operator<(const ZoneName& rhs)  const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ZoneName::canonCompare_three_way
      Src: /src/pdns/pdns/recursordist/dnsname.cc:1058,1
    - Dst: compare
      Src: /src/pdns/pdns/recursordist/dnsname.cc:1062,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - ZoneName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1063
      start: 1054
    functionDepth: 0
    functionLinenumber: 1054
    functionLinenumberEnd: 1063
    functionName: ZoneName::canonCompare_three_way
    functionSourceFile: /src/pdns/pdns/recursordist/dnsname.cc
    functionUses: 5
    functionsReached:
    - compare
    - ZoneName::canonCompare_three_way
    linkageType: ''
    returnType: int
    signature: int ZoneName::canonCompare_three_way(const ZoneName& rhs) const
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: HttpRequest::body::empty
      Src: /src/pdns/pdns/recursordist/webserver.cc:52,1
    - Dst: SLOG
      Src: /src/pdns/pdns/recursordist/webserver.cc:53,1
    - Dst: info
      Src: /src/pdns/pdns/recursordist/webserver.cc:54,1
    - Dst: HttpBadRequestException
      Src: /src/pdns/pdns/recursordist/webserver.cc:55,1
    - Dst: json11::Json::parse
      Src: /src/pdns/pdns/recursordist/webserver.cc:57,1
    - Dst: json11::Json::is_null
      Src: /src/pdns/pdns/recursordist/webserver.cc:58,1
    - Dst: SLOG
      Src: /src/pdns/pdns/recursordist/webserver.cc:59,1
    - Dst: error
      Src: /src/pdns/pdns/recursordist/webserver.cc:60,1
    - Dst: HttpBadRequestException
      Src: /src/pdns/pdns/recursordist/webserver.cc:61,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 49
    functionDepth: 0
    functionLinenumber: 49
    functionLinenumberEnd: 64
    functionName: HttpRequest::json
    functionSourceFile: /src/pdns/pdns/recursordist/webserver.cc
    functionUses: 0
    functionsReached:
    - SLOG
    - json11::Json::is_null
    - json11::Json::parse
    - info
    - HttpRequest::body::empty
    - error
    - HttpBadRequestException
    linkageType: ''
    returnType: json11::Json
    signature: json11::Json HttpRequest::json()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: find
      Src: /src/pdns/pdns/recursordist/webserver.cc:69,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/webserver.cc:71,1
    - Dst: toLower
      Src: /src/pdns/pdns/recursordist/webserver.cc:71,1
    - Dst: auto::second::substr
      Src: /src/pdns/pdns/recursordist/webserver.cc:72,1
    - Dst: B64Decode
      Src: /src/pdns/pdns/recursordist/webserver.cc:75,1
    - Dst: string::find
      Src: /src/pdns/pdns/recursordist/webserver.cc:77,1
    - Dst: matches
      Src: /src/pdns/pdns/recursordist/webserver.cc:78,1
    - Dst: string::substr
      Src: /src/pdns/pdns/recursordist/webserver.cc:78,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - ' credentials'
    argTypes:
    - CredentialsHolder
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 66
    functionDepth: 0
    functionLinenumber: 66
    functionLinenumberEnd: 82
    functionName: HttpRequest::compareAuthorization
    functionSourceFile: /src/pdns/pdns/recursordist/webserver.cc
    functionUses: 0
    functionsReached:
    - matches
    - auto::second::substr
    - toLower
    - B64Decode
    - end
    - string::find
    - string::substr
    - find
    linkageType: ''
    returnType: bool
    signature: bool HttpRequest::compareAuthorization(const CredentialsHolder& credentials)
      const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: find
      Src: /src/pdns/pdns/recursordist/webserver.cc:86,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/webserver.cc:87,1
    - Dst: matches
      Src: /src/pdns/pdns/recursordist/webserver.cc:91,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - header_name
    - ' credentials'
    argTypes:
    - string
    - CredentialsHolder
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 84
    functionDepth: 0
    functionLinenumber: 84
    functionLinenumberEnd: 92
    functionName: HttpRequest::compareHeader
    functionSourceFile: /src/pdns/pdns/recursordist/webserver.cc
    functionUses: 0
    functionsReached:
    - matches
    - end
    - find
    linkageType: ''
    returnType: bool
    signature: bool HttpRequest::compareHeader(const string &header_name, const CredentialsHolder&
      credentials) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ' document'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 94
    functionDepth: 0
    functionLinenumber: 94
    functionLinenumberEnd: 99
    functionName: HttpResponse::setPlainBody
    functionSourceFile: /src/pdns/pdns/recursordist/webserver.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void HttpResponse::setPlainBody(const string& document)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ' document'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 101
    functionDepth: 0
    functionLinenumber: 101
    functionLinenumberEnd: 106
    functionName: HttpResponse::setYamlBody
    functionSourceFile: /src/pdns/pdns/recursordist/webserver.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void HttpResponse::setYamlBody(const string& document)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ' document'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 113
      start: 108
    functionDepth: 0
    functionLinenumber: 108
    functionLinenumberEnd: 113
    functionName: HttpResponse::setJsonBody
    functionSourceFile: /src/pdns/pdns/recursordist/webserver.cc
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void HttpResponse::setJsonBody(const string& document)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dump
      Src: /src/pdns/pdns/recursordist/webserver.cc:119,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ' document'
    argTypes:
    - json11::Json
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 115
    functionDepth: 0
    functionLinenumber: 115
    functionLinenumberEnd: 120
    functionName: HttpResponse::setJsonBody
    functionSourceFile: /src/pdns/pdns/recursordist/webserver.cc
    functionUses: 2
    functionsReached:
    - dump
    linkageType: ''
    returnType: void
    signature: void HttpResponse::setJsonBody(const json11::Json& document)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: HttpResponse::setJsonBody
      Src: /src/pdns/pdns/recursordist/webserver.cc:124,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ' message'
    - status_
    argTypes:
    - std::string
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 122
    functionDepth: 0
    functionLinenumber: 122
    functionLinenumberEnd: 126
    functionName: HttpResponse::setErrorResult
    functionSourceFile: /src/pdns/pdns/recursordist/webserver.cc
    functionUses: 0
    functionsReached:
    - HttpResponse::setJsonBody
    linkageType: ''
    returnType: void
    signature: void HttpResponse::setErrorResult(const std::string& message, const
      int status_)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: HttpResponse::setJsonBody
      Src: /src/pdns/pdns/recursordist/webserver.cc:130,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ' message'
    - status_
    argTypes:
    - std::string
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 132
      start: 128
    functionDepth: 0
    functionLinenumber: 128
    functionLinenumberEnd: 132
    functionName: HttpResponse::setSuccessResult
    functionSourceFile: /src/pdns/pdns/recursordist/webserver.cc
    functionUses: 0
    functionsReached:
    - HttpResponse::setJsonBody
    linkageType: ''
    returnType: void
    signature: void HttpResponse::setSuccessResult(const std::string& message, const
      int status_)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: handler
      Src: /src/pdns/pdns/recursordist/webserver.cc:139,1
    - Dst: static_cast<HttpRequest*>
      Src: /src/pdns/pdns/recursordist/webserver.cc:139,1
    - Dst: static_cast<HttpResponse*>
      Src: /src/pdns/pdns/recursordist/webserver.cc:139,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' handler'
    - req
    - resp
    argTypes:
    - WebServer::HandlerFunction
    - YaHTTP::Request*
    - YaHTTP::Response*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 136
    functionDepth: 0
    functionLinenumber: 136
    functionLinenumberEnd: 140
    functionName: bareHandlerWrapper
    functionSourceFile: /src/pdns/pdns/recursordist/webserver.cc
    functionUses: 1
    functionsReached:
    - static_cast<HttpRequest*>
    - handler
    - static_cast<HttpResponse*>
    linkageType: ''
    returnType: void
    signature: void bareHandlerWrapper(const WebServer::HandlerFunction& handler,
      YaHTTP::Request* req, YaHTTP::Response* resp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: bareHandlerWrapper
      Src: /src/pdns/pdns/recursordist/webserver.cc:144,1
    - Dst: YaHTTP::Router::Map
      Src: /src/pdns/pdns/recursordist/webserver.cc:145,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/webserver.cc:145,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - ' url'
    - ' handler'
    - ' method'
    argTypes:
    - string
    - HandlerFunction
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 146
      start: 142
    functionDepth: 0
    functionLinenumber: 142
    functionLinenumberEnd: 146
    functionName: WebServer::registerBareHandler
    functionSourceFile: /src/pdns/pdns/recursordist/webserver.cc
    functionUses: 2
    functionsReached:
    - bareHandlerWrapper
    - std::move
    - YaHTTP::Router::Map
    linkageType: ''
    returnType: void
    signature: void WebServer::registerBareHandler(const string& url, const HandlerFunction&
      handler, const std::string& method)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/webserver.cc:150,1
    - Dst: SLOG
      Src: /src/pdns/pdns/recursordist/webserver.cc:155,1
    - Dst: info
      Src: /src/pdns/pdns/recursordist/webserver.cc:156,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/webserver.cc:156,1
    - Dst: HttpUnauthorizedException
      Src: /src/pdns/pdns/recursordist/webserver.cc:157,1
    - Dst: HttpRequest*::compareHeader
      Src: /src/pdns/pdns/recursordist/webserver.cc:160,1
    - Dst: HttpRequest*::compareAuthorization
      Src: /src/pdns/pdns/recursordist/webserver.cc:164,1
    - Dst: SLOG
      Src: /src/pdns/pdns/recursordist/webserver.cc:171,1
    - Dst: info
      Src: /src/pdns/pdns/recursordist/webserver.cc:172,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/webserver.cc:172,1
    - Dst: HttpUnauthorizedException
      Src: /src/pdns/pdns/recursordist/webserver.cc:173,1
    - Dst: HttpRequest*::getvars::erase
      Src: /src/pdns/pdns/recursordist/webserver.cc:183,1
    - Dst: handler
      Src: /src/pdns/pdns/recursordist/webserver.cc:187,1
    - Dst: HttpResponse*::setErrorResult
      Src: /src/pdns/pdns/recursordist/webserver.cc:189,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/webserver.cc:189,1
    - Dst: HttpResponse*::setErrorResult
      Src: /src/pdns/pdns/recursordist/webserver.cc:192,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/webserver.cc:192,1
    - Dst: HttpResponse*::headers::erase
      Src: /src/pdns/pdns/recursordist/webserver.cc:198,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 38
    argCount: 4
    argNames:
    - ' handler'
    - req
    - resp
    - allowPassword
    argTypes:
    - WebServer::HandlerFunction
    - HttpRequest*
    - HttpResponse*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 200
      start: 148
    functionDepth: 0
    functionLinenumber: 148
    functionLinenumberEnd: 200
    functionName: WebServer::apiWrapper
    functionSourceFile: /src/pdns/pdns/recursordist/webserver.cc
    functionUses: 1
    functionsReached:
    - HttpUnauthorizedException
    - SLOG
    - Logging::Loggable
    - HttpRequest*::getvars::erase
    - what
    - HttpRequest*::compareAuthorization
    - handler
    - info
    - HttpRequest*::compareHeader
    - HttpResponse*::headers::erase
    - HttpResponse*::setErrorResult
    - empty
    linkageType: ''
    returnType: void
    signature: void WebServer::apiWrapper(const WebServer::HandlerFunction& handler,
      HttpRequest* req, HttpResponse* resp, bool allowPassword)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: WebServer::apiWrapper
      Src: /src/pdns/pdns/recursordist/webserver.cc:203,1
    - Dst: WebServer::registerBareHandler
      Src: /src/pdns/pdns/recursordist/webserver.cc:204,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 4
    argNames:
    - ' url'
    - ' handler'
    - ' method'
    - allowPassword
    argTypes:
    - string
    - HandlerFunction
    - std::string
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 205
      start: 202
    functionDepth: 0
    functionLinenumber: 202
    functionLinenumberEnd: 205
    functionName: WebServer::registerApiHandler
    functionSourceFile: /src/pdns/pdns/recursordist/webserver.cc
    functionUses: 0
    functionsReached:
    - WebServer::apiWrapper
    - WebServer::registerBareHandler
    linkageType: ''
    returnType: void
    signature: void WebServer::registerApiHandler(const string& url, const HandlerFunction&
      handler, const std::string& method, bool allowPassword)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: HttpRequest*::compareAuthorization
      Src: /src/pdns/pdns/recursordist/webserver.cc:209,1
    - Dst: SLOG
      Src: /src/pdns/pdns/recursordist/webserver.cc:211,1
    - Dst: info
      Src: /src/pdns/pdns/recursordist/webserver.cc:212,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/webserver.cc:212,1
    - Dst: HttpUnauthorizedException
      Src: /src/pdns/pdns/recursordist/webserver.cc:213,1
    - Dst: handler
      Src: /src/pdns/pdns/recursordist/webserver.cc:217,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 3
    argNames:
    - ' handler'
    - req
    - resp
    argTypes:
    - WebServer::HandlerFunction
    - HttpRequest*
    - HttpResponse*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 218
      start: 207
    functionDepth: 0
    functionLinenumber: 207
    functionLinenumberEnd: 218
    functionName: WebServer::webWrapper
    functionSourceFile: /src/pdns/pdns/recursordist/webserver.cc
    functionUses: 1
    functionsReached:
    - HttpUnauthorizedException
    - SLOG
    - Logging::Loggable
    - HttpRequest*::compareAuthorization
    - handler
    - info
    linkageType: ''
    returnType: void
    signature: void WebServer::webWrapper(const WebServer::HandlerFunction& handler,
      HttpRequest* req, HttpResponse* resp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: WebServer::webWrapper
      Src: /src/pdns/pdns/recursordist/webserver.cc:221,1
    - Dst: WebServer::registerBareHandler
      Src: /src/pdns/pdns/recursordist/webserver.cc:222,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - ' url'
    - ' handler'
    - ' method'
    argTypes:
    - string
    - HandlerFunction
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 223
      start: 220
    functionDepth: 0
    functionLinenumber: 220
    functionLinenumberEnd: 223
    functionName: WebServer::registerWebHandler
    functionSourceFile: /src/pdns/pdns/recursordist/webserver.cc
    functionUses: 0
    functionsReached:
    - WebServer::webWrapper
    - WebServer::registerBareHandler
    linkageType: ''
    returnType: void
    signature: void WebServer::registerWebHandler(const string& url, const HandlerFunction&
      handler, const std::string& method)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: setThreadName
      Src: /src/pdns/pdns/recursordist/webserver.cc:227,1
    - Dst: WebServer*::registerConnection
      Src: /src/pdns/pdns/recursordist/webserver.cc:229,1
    - Dst: SLOG
      Src: /src/pdns/pdns/recursordist/webserver.cc:230,1
    - Dst: WebServer*::d_slog::info
      Src: /src/pdns/pdns/recursordist/webserver.cc:231,1
    - Dst: WebServer*::serveConnection
      Src: /src/pdns/pdns/recursordist/webserver.cc:237,1
    - Dst: SLOG
      Src: /src/pdns/pdns/recursordist/webserver.cc:240,1
    - Dst: WebServer*::d_slog::error
      Src: /src/pdns/pdns/recursordist/webserver.cc:241,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/webserver.cc:241,1
    - Dst: SLOG
      Src: /src/pdns/pdns/recursordist/webserver.cc:244,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/webserver.cc:244,1
    - Dst: WebServer*::d_slog::error
      Src: /src/pdns/pdns/recursordist/webserver.cc:245,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/webserver.cc:245,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/webserver.cc:245,1
    - Dst: SLOG
      Src: /src/pdns/pdns/recursordist/webserver.cc:248,1
    - Dst: WebServer*::d_slog::info
      Src: /src/pdns/pdns/recursordist/webserver.cc:249,1
    - Dst: WebServer*::releaseConnection
      Src: /src/pdns/pdns/recursordist/webserver.cc:252,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 2
    argNames:
    - webServer
    - ' client'
    argTypes:
    - WebServer*
    - std::shared_ptr<Socket>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 254
      start: 225
    functionDepth: 0
    functionLinenumber: 225
    functionLinenumberEnd: 254
    functionName: WebServerConnectionThreadStart
    functionSourceFile: /src/pdns/pdns/recursordist/webserver.cc
    functionUses: 0
    functionsReached:
    - WebServer*::d_slog::error
    - SLOG
    - WebServer*::d_slog::info
    - Logging::Loggable
    - what
    - WebServer*::serveConnection
    - WebServer*::releaseConnection
    - setThreadName
    - WebServer*::registerConnection
    linkageType: ''
    returnType: void
    signature: void * WebServerConnectionThreadStart(WebServer* webServer, const std::shared_ptr<Socket>&
      client)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: headers::find
      Src: /src/pdns/pdns/recursordist/webserver.cc:261,1
    - Dst: headers::end
      Src: /src/pdns/pdns/recursordist/webserver.cc:262,1
    - Dst: auto::second::find
      Src: /src/pdns/pdns/recursordist/webserver.cc:264,1
    - Dst: headers::find
      Src: /src/pdns/pdns/recursordist/webserver.cc:270,1
    - Dst: headers::end
      Src: /src/pdns/pdns/recursordist/webserver.cc:272,1
    - Dst: auto::second::find
      Src: /src/pdns/pdns/recursordist/webserver.cc:274,1
    - Dst: auto::second::find
      Src: /src/pdns/pdns/recursordist/webserver.cc:274,1
    - Dst: auto::second::find
      Src: /src/pdns/pdns/recursordist/webserver.cc:276,1
    - Dst: auto::second::find
      Src: /src/pdns/pdns/recursordist/webserver.cc:278,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 20
    argCount: 1
    argNames:
    - ' req'
    argTypes:
    - HttpRequest
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 282
      start: 259
    functionDepth: 0
    functionLinenumber: 259
    functionLinenumberEnd: 282
    functionName: setupAllowedContentType
    functionSourceFile: /src/pdns/pdns/recursordist/webserver.cc
    functionUses: 1
    functionsReached:
    - headers::find
    - headers::end
    - auto::second::find
    linkageType: ''
    returnType: void
    signature: void setupAllowedContentType(HttpRequest& req)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: d_slog::withValues
      Src: /src/pdns/pdns/recursordist/webserver.cc:291,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/webserver.cc:291,1
    - Dst: SLOG
      Src: /src/pdns/pdns/recursordist/webserver.cc:296,1
    - Dst: info
      Src: /src/pdns/pdns/recursordist/webserver.cc:297,1
    - Dst: HttpBadRequestException
      Src: /src/pdns/pdns/recursordist/webserver.cc:298,1
    - Dst: SLOG
      Src: /src/pdns/pdns/recursordist/webserver.cc:300,1
    - Dst: std::shared_ptr::info
      Src: /src/pdns/pdns/recursordist/webserver.cc:301,1
    - Dst: setupAllowedContentType
      Src: /src/pdns/pdns/recursordist/webserver.cc:303,1
    - Dst: YaHTTP::Router::Route
      Src: /src/pdns/pdns/recursordist/webserver.cc:306,1
    - Dst: SLOG
      Src: /src/pdns/pdns/recursordist/webserver.cc:309,1
    - Dst: std::shared_ptr::info
      Src: /src/pdns/pdns/recursordist/webserver.cc:310,1
    - Dst: HttpNotFoundException
      Src: /src/pdns/pdns/recursordist/webserver.cc:311,1
    - Dst: HttpMethodNotAllowedException
      Src: /src/pdns/pdns/recursordist/webserver.cc:314,1
    - Dst: handler
      Src: /src/pdns/pdns/recursordist/webserver.cc:319,1
    - Dst: SLOG
      Src: /src/pdns/pdns/recursordist/webserver.cc:320,1
    - Dst: body::size
      Src: /src/pdns/pdns/recursordist/webserver.cc:320,1
    - Dst: std::shared_ptr::info
      Src: /src/pdns/pdns/recursordist/webserver.cc:321,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/webserver.cc:321,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/webserver.cc:321,1
    - Dst: body::size
      Src: /src/pdns/pdns/recursordist/webserver.cc:321,1
    - Dst: SLOG
      Src: /src/pdns/pdns/recursordist/webserver.cc:327,1
    - Dst: std::shared_ptr::error
      Src: /src/pdns/pdns/recursordist/webserver.cc:328,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/webserver.cc:328,1
    - Dst: HttpInternalServerErrorException
      Src: /src/pdns/pdns/recursordist/webserver.cc:329,1
    - Dst: SLOG
      Src: /src/pdns/pdns/recursordist/webserver.cc:332,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/webserver.cc:332,1
    - Dst: std::shared_ptr::error
      Src: /src/pdns/pdns/recursordist/webserver.cc:333,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/webserver.cc:333,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/webserver.cc:333,1
    - Dst: HttpInternalServerErrorException
      Src: /src/pdns/pdns/recursordist/webserver.cc:334,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/webserver.cc:334,1
    - Dst: SLOG
      Src: /src/pdns/pdns/recursordist/webserver.cc:337,1
    - Dst: std::shared_ptr::info
      Src: /src/pdns/pdns/recursordist/webserver.cc:338,1
    - Dst: HttpInternalServerErrorException
      Src: /src/pdns/pdns/recursordist/webserver.cc:339,1
    - Dst: response
      Src: /src/pdns/pdns/recursordist/webserver.cc:343,1
    - Dst: WebServer::setSLog
      Src: /src/pdns/pdns/recursordist/webserver.cc:347,1
    - Dst: SLOG
      Src: /src/pdns/pdns/recursordist/webserver.cc:351,1
    - Dst: error
      Src: /src/pdns/pdns/recursordist/webserver.cc:352,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/webserver.cc:352,1
    - Dst: Utility::status2text
      Src: /src/pdns/pdns/recursordist/webserver.cc:353,1
    - Dst: body::empty
      Src: /src/pdns/pdns/recursordist/webserver.cc:356,1
    - Dst: setErrorResult
      Src: /src/pdns/pdns/recursordist/webserver.cc:357,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/webserver.cc:364,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/webserver.cc:374,1
    - Dst: body::size
      Src: /src/pdns/pdns/recursordist/webserver.cc:374,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 62
    argCount: 2
    argNames:
    - ' req'
    - ' resp'
    argTypes:
    - HttpRequest
    - HttpResponse
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 376
      start: 284
    functionDepth: 0
    functionLinenumber: 284
    functionLinenumberEnd: 376
    functionName: WebServer::handleRequest
    functionSourceFile: /src/pdns/pdns/recursordist/webserver.cc
    functionUses: 1
    functionsReached:
    - std::to_string
    - body::size
    - std::shared_ptr::error
    - error
    - body::empty
    - setErrorResult
    - HttpBadRequestException
    - std::shared_ptr::info
    - HttpNotFoundException
    - SLOG
    - Logging::Loggable
    - d_slog::withValues
    - YaHTTP::Router::Route
    - WebServer::setSLog
    - handler
    - Utility::status2text
    - HttpMethodNotAllowedException
    - std::move
    - what
    - response
    - info
    - HttpInternalServerErrorException
    - setupAllowedContentType
    linkageType: ''
    returnType: void
    signature: void WebServer::handleRequest(HttpRequest& req, HttpResponse& resp)
      const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::ostringstream::str
      Src: /src/pdns/pdns/recursordist/webserver.cc:393,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 394
      start: 380
    functionDepth: 0
    functionLinenumber: 380
    functionLinenumberEnd: 394
    functionName: Logging::IterLoggable<YaHTTP::strstr_map_t::const_iterator>::to_string()
      const
    functionSourceFile: /src/pdns/pdns/recursordist/webserver.cc
    functionUses: 0
    functionsReached:
    - std::ostringstream::str
    linkageType: ''
    returnType: std::string
    signature: std::string Logging::IterLoggable<YaHTTP::strstr_map_t::const_iterator>::to_string()
      const
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: body::empty
      Src: /src/pdns/pdns/recursordist/webserver.cc:429,1
    - Dst: d_slog::info
      Src: /src/pdns/pdns/recursordist/webserver.cc:437,1
    - Dst: Logging::IterLoggable
      Src: /src/pdns/pdns/recursordist/webserver.cc:437,1
    - Dst: getvars::cbegin
      Src: /src/pdns/pdns/recursordist/webserver.cc:437,1
    - Dst: getvars::cend
      Src: /src/pdns/pdns/recursordist/webserver.cc:437,1
    - Dst: Logging::IterLoggable
      Src: /src/pdns/pdns/recursordist/webserver.cc:438,1
    - Dst: postvars::cbegin
      Src: /src/pdns/pdns/recursordist/webserver.cc:438,1
    - Dst: postvars::cend
      Src: /src/pdns/pdns/recursordist/webserver.cc:438,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/webserver.cc:439,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/webserver.cc:440,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 34
    argCount: 2
    argNames:
    - ' req'
    - ' remote'
    argTypes:
    - HttpRequest
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 443
      start: 396
    functionDepth: 0
    functionLinenumber: 396
    functionLinenumberEnd: 443
    functionName: WebServer::logRequest
    functionSourceFile: /src/pdns/pdns/recursordist/webserver.cc
    functionUses: 1
    functionsReached:
    - Logging::Loggable
    - getvars::cend
    - d_slog::info
    - postvars::cend
    - postvars::cbegin
    - Logging::IterLoggable
    - body::empty
    - getvars::cbegin
    linkageType: ''
    returnType: void
    signature: void WebServer::logRequest(const HttpRequest& req, [[maybe_unused]]
      const ComboAddress& remote) const
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: body::empty
      Src: /src/pdns/pdns/recursordist/webserver.cc:457,1
    - Dst: d_slog::info
      Src: /src/pdns/pdns/recursordist/webserver.cc:465,1
    - Dst: Logging::IterLoggable
      Src: /src/pdns/pdns/recursordist/webserver.cc:465,1
    - Dst: headers::cbegin
      Src: /src/pdns/pdns/recursordist/webserver.cc:465,1
    - Dst: headers::cend
      Src: /src/pdns/pdns/recursordist/webserver.cc:465,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/webserver.cc:466,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 2
    argNames:
    - ' resp'
    - ' logprefix'
    argTypes:
    - HttpResponse
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 469
      start: 445
    functionDepth: 0
    functionLinenumber: 445
    functionLinenumberEnd: 469
    functionName: WebServer::logResponse
    functionSourceFile: /src/pdns/pdns/recursordist/webserver.cc
    functionUses: 1
    functionsReached:
    - Logging::Loggable
    - d_slog::info
    - Logging::IterLoggable
    - body::empty
    - headers::cbegin
    - headers::cend
    linkageType: ''
    returnType: void
    signature: void WebServer::logResponse(const HttpResponse& resp, const ComboAddress&
      /* remote */, const string& logprefix) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: set
      Src: /src/pdns/pdns/recursordist/webserver.cc:477,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 479
      start: 473
    functionDepth: 0
    functionLinenumber: 473
    functionLinenumberEnd: 479
    functionName: ValidChars
    functionSourceFile: /src/pdns/pdns/recursordist/webserver.cc
    functionUses: 0
    functionsReached:
    - set
    linkageType: ''
    returnType: void
    signature: void ValidChars()
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/webserver.cc:487,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/webserver.cc:487,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/webserver.cc:490,1
    - Dst: isxdigit
      Src: /src/pdns/pdns/recursordist/webserver.cc:490,1
    - Dst: static_cast<unsigned char>
      Src: /src/pdns/pdns/recursordist/webserver.cc:490,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/webserver.cc:494,1
    - Dst: isxdigit
      Src: /src/pdns/pdns/recursordist/webserver.cc:494,1
    - Dst: static_cast<unsigned char>
      Src: /src/pdns/pdns/recursordist/webserver.cc:494,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/recursordist/webserver.cc:498,1
    - Dst: set::size
      Src: /src/pdns/pdns/recursordist/webserver.cc:498,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 17
    argCount: 1
    argNames:
    - ' str'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 503
      start: 485
    functionDepth: 0
    functionLinenumber: 485
    functionLinenumberEnd: 503
    functionName: validURLChars
    functionSourceFile: /src/pdns/pdns/recursordist/webserver.cc
    functionUses: 1
    functionsReached:
    - static_cast<size_t>
    - isxdigit
    - set::size
    - end
    - begin
    - static_cast<unsigned char>
    linkageType: ''
    returnType: bool
    signature: bool validURLChars(const string& str)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: validURLChars
      Src: /src/pdns/pdns/recursordist/webserver.cc:508,1
    - Dst: validURLChars
      Src: /src/pdns/pdns/recursordist/webserver.cc:509,1
    - Dst: validURLChars
      Src: /src/pdns/pdns/recursordist/webserver.cc:510,1
    - Dst: validURLChars
      Src: /src/pdns/pdns/recursordist/webserver.cc:511,1
    - Dst: validURLChars
      Src: /src/pdns/pdns/recursordist/webserver.cc:512,1
    - Dst: validURLChars
      Src: /src/pdns/pdns/recursordist/webserver.cc:513,1
    - Dst: validURLChars
      Src: /src/pdns/pdns/recursordist/webserver.cc:514,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 9
    argCount: 1
    argNames:
    - ' url'
    argTypes:
    - YaHTTP::URL
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 516
      start: 505
    functionDepth: 0
    functionLinenumber: 505
    functionLinenumberEnd: 516
    functionName: WebServer::validURL
    functionSourceFile: /src/pdns/pdns/recursordist/webserver.cc
    functionUses: 2
    functionsReached:
    - validURLChars
    linkageType: ''
    returnType: bool
    signature: bool WebServer::validURL(const YaHTTP::URL& url)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: getUniqueID
      Src: /src/pdns/pdns/recursordist/webserver.cc:520,1
    - Dst: to_string
      Src: /src/pdns/pdns/recursordist/webserver.cc:521,1
    - Dst: HttpResponse::HttpResponse
      Src: /src/pdns/pdns/recursordist/webserver.cc:525,1
    - Dst: withValues
      Src: /src/pdns/pdns/recursordist/webserver.cc:527,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/webserver.cc:527,1
    - Dst: to_string
      Src: /src/pdns/pdns/recursordist/webserver.cc:527,1
    - Dst: HttpRequest::setSLog
      Src: /src/pdns/pdns/recursordist/webserver.cc:528,1
    - Dst: HttpResponse::setSLog
      Src: /src/pdns/pdns/recursordist/webserver.cc:529,1
    - Dst: YaHTTP::AsyncRequestLoader::initialize
      Src: /src/pdns/pdns/recursordist/webserver.cc:537,1
    - Dst: setNonBlocking
      Src: /src/pdns/pdns/recursordist/webserver.cc:540,1
    - Dst: readWithTimeout
      Src: /src/pdns/pdns/recursordist/webserver.cc:545,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/recursordist/webserver.cc:545,1
    - Dst: std::array::size
      Src: /src/pdns/pdns/recursordist/webserver.cc:545,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/webserver.cc:547,1
    - Dst: std::array::data
      Src: /src/pdns/pdns/recursordist/webserver.cc:547,1
    - Dst: YaHTTP::AsyncRequestLoader::feed
      Src: /src/pdns/pdns/recursordist/webserver.cc:548,1
    - Dst: YaHTTP::AsyncRequestLoader::finalize
      Src: /src/pdns/pdns/recursordist/webserver.cc:554,1
    - Dst: SLOG
      Src: /src/pdns/pdns/recursordist/webserver.cc:557,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/webserver.cc:557,1
    - Dst: error
      Src: /src/pdns/pdns/recursordist/webserver.cc:558,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/webserver.cc:558,1
    - Dst: WebServer::validURL
      Src: /src/pdns/pdns/recursordist/webserver.cc:561,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/recursordist/webserver.cc:562,1
    - Dst: getRemote
      Src: /src/pdns/pdns/recursordist/webserver.cc:566,1
    - Dst: WebServer::logRequest
      Src: /src/pdns/pdns/recursordist/webserver.cc:569,1
    - Dst: WebServer::handleRequest
      Src: /src/pdns/pdns/recursordist/webserver.cc:571,1
    - Dst: HttpResponse::write
      Src: /src/pdns/pdns/recursordist/webserver.cc:573,1
    - Dst: ostringstream::str
      Src: /src/pdns/pdns/recursordist/webserver.cc:574,1
    - Dst: WebServer::logResponse
      Src: /src/pdns/pdns/recursordist/webserver.cc:576,1
    - Dst: writenWithTimeout
      Src: /src/pdns/pdns/recursordist/webserver.cc:578,1
    - Dst: string::c_str
      Src: /src/pdns/pdns/recursordist/webserver.cc:578,1
    - Dst: string::size
      Src: /src/pdns/pdns/recursordist/webserver.cc:578,1
    - Dst: SLOG
      Src: /src/pdns/pdns/recursordist/webserver.cc:581,1
    - Dst: error
      Src: /src/pdns/pdns/recursordist/webserver.cc:582,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/webserver.cc:582,1
    - Dst: strstr
      Src: /src/pdns/pdns/recursordist/webserver.cc:585,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/webserver.cc:585,1
    - Dst: SLOG
      Src: /src/pdns/pdns/recursordist/webserver.cc:586,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/webserver.cc:586,1
    - Dst: error
      Src: /src/pdns/pdns/recursordist/webserver.cc:587,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/webserver.cc:587,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/webserver.cc:587,1
    - Dst: SLOG
      Src: /src/pdns/pdns/recursordist/webserver.cc:590,1
    - Dst: info
      Src: /src/pdns/pdns/recursordist/webserver.cc:591,1
    - Dst: SLOG
      Src: /src/pdns/pdns/recursordist/webserver.cc:595,1
    - Dst: HttpRequest::versionStr
      Src: /src/pdns/pdns/recursordist/webserver.cc:595,1
    - Dst: string::size
      Src: /src/pdns/pdns/recursordist/webserver.cc:595,1
    - Dst: info
      Src: /src/pdns/pdns/recursordist/webserver.cc:596,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/webserver.cc:596,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/webserver.cc:596,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/webserver.cc:597,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/webserver.cc:597,1
    - Dst: HttpRequest::versionStr
      Src: /src/pdns/pdns/recursordist/webserver.cc:597,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/webserver.cc:598,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/webserver.cc:598,1
    - Dst: string::size
      Src: /src/pdns/pdns/recursordist/webserver.cc:598,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 45
    argCount: 1
    argNames:
    - ' client'
    argTypes:
    - std::shared_ptr<Socket>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 600
      start: 518
    functionDepth: 1
    functionLinenumber: 518
    functionLinenumberEnd: 600
    functionName: WebServer::serveConnection
    functionSourceFile: /src/pdns/pdns/recursordist/webserver.cc
    functionUses: 0
    functionsReached:
    - getUniqueID
    - PDNSException
    - error
    - SLOG
    - readWithTimeout
    - string::size
    - Logging::Loggable
    - to_string
    - setNonBlocking
    - string
    - YaHTTP::AsyncRequestLoader::initialize
    - YaHTTP::AsyncRequestLoader::finalize
    - string::c_str
    - HttpResponse::write
    - WebServer::validURL
    - WebServer::handleRequest
    - withValues
    - ostringstream::str
    - HttpRequest::setSLog
    - std::array::data
    - getRemote
    - HttpRequest::versionStr
    - writenWithTimeout
    - strstr
    - HttpResponse::HttpResponse
    - what
    - info
    - YaHTTP::AsyncRequestLoader::feed
    - WebServer::logRequest
    - HttpResponse::setSLog
    - WebServer::logResponse
    - std::array::size
    linkageType: ''
    returnType: void
    signature: void WebServer::serveConnection(const std::shared_ptr<Socket>& client)
      const
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/webserver.cc:604,1
    - Dst: static_cast<ssize_t>
      Src: /src/pdns/pdns/recursordist/webserver.cc:607,1
    - Dst: YaHTTP::Router::Map
      Src: /src/pdns/pdns/recursordist/webserver.cc:610,1
    - Dst: YaHTTP::Router::GetRoutes
      Src: /src/pdns/pdns/recursordist/webserver.cc:614,1
    - Dst: std::get<0>
      Src: /src/pdns/pdns/recursordist/webserver.cc:615,1
    - Dst: std::get<1>
      Src: /src/pdns/pdns/recursordist/webserver.cc:616,1
    - Dst: YaHTTP::Router::Match
      Src: /src/pdns/pdns/recursordist/webserver.cc:621,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/recursordist/webserver.cc:622,1
    - Dst: std::vector::emplace_back
      Src: /src/pdns/pdns/recursordist/webserver.cc:631,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/webserver.cc:632,1
    - Dst: boost::algorithm::join
      Src: /src/pdns/pdns/recursordist/webserver.cc:636,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 26
    argCount: 3
    argNames:
    - ccm
    - listenaddress
    - port
    argTypes:
    - std::shared_ptr<ConcurrentConnectionManager>
    - string
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 642
      start: 602
    functionDepth: 0
    functionLinenumber: 602
    functionLinenumberEnd: 642
    functionName: WebServer::WebServer
    functionSourceFile: /src/pdns/pdns/recursordist/webserver.cc
    functionUses: 0
    functionsReached:
    - YaHTTP::Router::Map
    - std::move
    - std::vector::push_back
    - static_cast<ssize_t>
    - std::get<0>
    - std::get<1>
    - std::vector::emplace_back
    - boost::algorithm::join
    - YaHTTP::Router::GetRoutes
    - empty
    - YaHTTP::Router::Match
    linkageType: ''
    returnType: void
    signature: void WebServer::WebServer(std::shared_ptr<ConcurrentConnectionManager>
      ccm, string listenaddress, int port)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: filesystem::is_socket
      Src: /src/pdns/pdns/recursordist/webserver.cc:646,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/webserver.cc:646,1
    - Dst: unlink
      Src: /src/pdns/pdns/recursordist/webserver.cc:647,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/webserver.cc:647,1
    - Dst: SLOG
      Src: /src/pdns/pdns/recursordist/webserver.cc:649,1
    - Dst: error
      Src: /src/pdns/pdns/recursordist/webserver.cc:650,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/webserver.cc:650,1
    - Dst: WebServer::createServer
      Src: /src/pdns/pdns/recursordist/webserver.cc:657,1
    - Dst: d_local::isUnixSocket
      Src: /src/pdns/pdns/recursordist/webserver.cc:658,1
    - Dst: SLOG
      Src: /src/pdns/pdns/recursordist/webserver.cc:659,1
    - Dst: info
      Src: /src/pdns/pdns/recursordist/webserver.cc:660,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/webserver.cc:660,1
    - Dst: SLOG
      Src: /src/pdns/pdns/recursordist/webserver.cc:662,1
    - Dst: d_local::toStringWithPort
      Src: /src/pdns/pdns/recursordist/webserver.cc:662,1
    - Dst: info
      Src: /src/pdns/pdns/recursordist/webserver.cc:663,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/webserver.cc:663,1
    - Dst: SLOG
      Src: /src/pdns/pdns/recursordist/webserver.cc:667,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/webserver.cc:667,1
    - Dst: error
      Src: /src/pdns/pdns/recursordist/webserver.cc:668,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/webserver.cc:668,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/webserver.cc:668,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 671
      start: 644
    functionDepth: 0
    functionLinenumber: 644
    functionLinenumberEnd: 671
    functionName: WebServer::bind
    functionSourceFile: /src/pdns/pdns/recursordist/webserver.cc
    functionUses: 0
    functionsReached:
    - d_local::isUnixSocket
    - d_local::toStringWithPort
    - SLOG
    - Logging::Loggable
    - what
    - info
    - WebServer::createServer
    - unlink
    - error
    - c_str
    - filesystem::is_socket
    linkageType: ''
    returnType: void
    signature: void WebServer::bind()
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: accept
      Src: /src/pdns/pdns/recursordist/webserver.cc:682,1
    - Dst: d_local::isUnixSocket
      Src: /src/pdns/pdns/recursordist/webserver.cc:686,1
    - Dst: auto::acl
      Src: /src/pdns/pdns/recursordist/webserver.cc:686,1
    - Dst: std::thread::detach
      Src: /src/pdns/pdns/recursordist/webserver.cc:688,1
    - Dst: auto::getRemote
      Src: /src/pdns/pdns/recursordist/webserver.cc:691,1
    - Dst: SLOG
      Src: /src/pdns/pdns/recursordist/webserver.cc:692,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/recursordist/webserver.cc:692,1
    - Dst: toString
      Src: /src/pdns/pdns/recursordist/webserver.cc:692,1
    - Dst: info
      Src: /src/pdns/pdns/recursordist/webserver.cc:693,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/webserver.cc:693,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/webserver.cc:693,1
    - Dst: SLOG
      Src: /src/pdns/pdns/recursordist/webserver.cc:698,1
    - Dst: info
      Src: /src/pdns/pdns/recursordist/webserver.cc:699,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/webserver.cc:699,1
    - Dst: SLOG
      Src: /src/pdns/pdns/recursordist/webserver.cc:702,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/webserver.cc:702,1
    - Dst: info
      Src: /src/pdns/pdns/recursordist/webserver.cc:703,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/webserver.cc:703,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/webserver.cc:703,1
    - Dst: SLOG
      Src: /src/pdns/pdns/recursordist/webserver.cc:706,1
    - Dst: info
      Src: /src/pdns/pdns/recursordist/webserver.cc:707,1
    - Dst: SLOG
      Src: /src/pdns/pdns/recursordist/webserver.cc:712,1
    - Dst: info
      Src: /src/pdns/pdns/recursordist/webserver.cc:713,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/webserver.cc:713,1
    - Dst: SLOG
      Src: /src/pdns/pdns/recursordist/webserver.cc:716,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/webserver.cc:716,1
    - Dst: info
      Src: /src/pdns/pdns/recursordist/webserver.cc:717,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/webserver.cc:717,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/webserver.cc:717,1
    - Dst: SLOG
      Src: /src/pdns/pdns/recursordist/webserver.cc:720,1
    - Dst: info
      Src: /src/pdns/pdns/recursordist/webserver.cc:721,1
    - Dst: _exit
      Src: /src/pdns/pdns/recursordist/webserver.cc:723,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 32
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 724
      start: 673
    functionDepth: 0
    functionLinenumber: 673
    functionLinenumberEnd: 724
    functionName: WebServer::go
    functionSourceFile: /src/pdns/pdns/recursordist/webserver.cc
    functionUses: 3
    functionsReached:
    - d_local::isUnixSocket
    - SLOG
    - toString
    - _exit
    - Logging::Loggable
    - accept
    - what
    - info
    - std::thread::detach
    - ComboAddress::toString
    - auto::acl
    - auto::getRemote
    linkageType: ''
    returnType: void
    signature: void WebServer::go()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getAllStatsMap
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:55,1
    - Dst: map::emplace
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:58,1
    - Dst: swap
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:60,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ' out'
    argTypes:
    - map<string, string>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 53
    functionDepth: 2
    functionLinenumber: 53
    functionLinenumberEnd: 61
    functionName: productServerStatisticsFetch
    functionSourceFile: /src/pdns/pdns/recursordist/ws-recursor.cc
    functionUses: 2
    functionsReached:
    - swap
    - getAllStatsMap
    - map::emplace
    linkageType: ''
    returnType: void
    signature: void productServerStatisticsFetch(map<string, string>& out)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getStatByName
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:65,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' name'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 63
    functionDepth: 1
    functionLinenumber: 63
    functionLinenumberEnd: 66
    functionName: productServerStatisticsFetch
    functionSourceFile: /src/pdns/pdns/recursordist/ws-recursor.cc
    functionUses: 2
    functionsReached:
    - getStatByName
    linkageType: ''
    returnType: std::optional<uint64_t>
    signature: std::optional<uint64_t> productServerStatisticsFetch(const std::string&
      name)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:70,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:70,1
    - Dst: ApiException
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:72,1
    - Dst: ApiException
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:74,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 68
    functionDepth: 0
    functionLinenumber: 68
    functionLinenumberEnd: 76
    functionName: checkApiDirSet
    functionSourceFile: /src/pdns/pdns/recursordist/ws-recursor.cc
    functionUses: 0
    functionsReached:
    - empty
    - arg
    - ApiException
    linkageType: ''
    returnType: void
    signature: void checkApiDirSet()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: checkApiDirSet
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:80,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:82,1
    - Dst: ApiException
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:91,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:91,1
    - Dst: ofstream::close
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:95,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 2
    argNames:
    - ' filebasename'
    - ' content'
    argTypes:
    - string
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 78
    functionDepth: 1
    functionLinenumber: 78
    functionLinenumberEnd: 96
    functionName: apiWriteConfigFile
    functionSourceFile: /src/pdns/pdns/recursordist/ws-recursor.cc
    functionUses: 2
    functionsReached:
    - stringerror
    - ApiException
    - ofstream::close
    - arg
    - checkApiDirSet
    linkageType: ''
    returnType: void
    signature: void apiWriteConfigFile(const string& filebasename, const string& content)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:102,1
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:103,1
    - Dst: toStringVector
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:105,1
    - Dst: toStringVector
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:108,1
    - Dst: HttpResponse*::setJsonBody
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:111,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 2
    argNames:
    - ' aclType'
    - resp
    argTypes:
    - std::string
    - HttpResponse*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 115
      start: 98
    functionDepth: 0
    functionLinenumber: 98
    functionLinenumberEnd: 115
    functionName: apiServerConfigACLGET
    functionSourceFile: /src/pdns/pdns/recursordist/ws-recursor.cc
    functionUses: 0
    functionsReached:
    - HttpResponse*::setJsonBody
    - toStringVector
    - lock
    linkageType: ''
    returnType: void
    signature: void apiServerConfigACLGET(const std::string& aclType, HttpRequest*
      /* req */, HttpResponse* resp)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: HttpRequest*::json
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:119,1
    - Dst: is_array
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:123,1
    - Dst: ApiException
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:124,1
    - Dst: array_items
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:129,1
    - Dst: ::rust::Vec<::rust::String>::emplace_back
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:130,1
    - Dst: string_value
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:130,1
    - Dst: ::pdns::rust::settings::rec::validate_allow_from
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:134,1
    - Dst: ApiException
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:137,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:137,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:137,1
    - Dst: pdns::rust::settings::rec::allow_from_to_yaml_string_incoming
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:141,1
    - Dst: pdns::rust::settings::rec::allow_from_to_yaml_string_incoming
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:144,1
    - Dst: apiWriteConfigFile
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:146,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:146,1
    - Dst: NetmaskGroup::NetmaskGroup
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:149,1
    - Dst: array_items
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:150,1
    - Dst: NetmaskGroup::addMask
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:152,1
    - Dst: string_value
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:152,1
    - Dst: ApiException
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:155,1
    - Dst: NetmaskGroup::toString
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:166,1
    - Dst: apiWriteConfigFile
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:168,1
    - Dst: ostringstream::str
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:168,1
    - Dst: parseACLs
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:171,1
    - Dst: apiServerConfigACLGET
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:173,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 32
    argCount: 3
    argNames:
    - ' aclType'
    - req
    - resp
    argTypes:
    - std::string
    - HttpRequest*
    - HttpResponse*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 174
      start: 117
    functionDepth: 3
    functionLinenumber: 117
    functionLinenumberEnd: 174
    functionName: apiServerConfigACLPUT
    functionSourceFile: /src/pdns/pdns/recursordist/ws-recursor.cc
    functionUses: 0
    functionsReached:
    - string_value
    - NetmaskGroup::NetmaskGroup
    - pdns::rust::settings::rec::allow_from_to_yaml_string_incoming
    - apiServerConfigACLGET
    - apiWriteConfigFile
    - what
    - parseACLs
    - string
    - ApiException
    - is_array
    - ostringstream::str
    - NetmaskGroup::addMask
    - ::rust::Vec<::rust::String>::emplace_back
    - NetmaskGroup::toString
    - HttpRequest*::json
    - array_items
    - ::pdns::rust::settings::rec::validate_allow_from
    linkageType: ''
    returnType: void
    signature: void apiServerConfigACLPUT(const std::string& aclType, HttpRequest*
      req, HttpResponse* resp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: apiServerConfigACLGET
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:178,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - req
    - resp
    argTypes:
    - HttpRequest*
    - HttpResponse*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 179
      start: 176
    functionDepth: 1
    functionLinenumber: 176
    functionLinenumberEnd: 179
    functionName: apiServerConfigAllowFromGET
    functionSourceFile: /src/pdns/pdns/recursordist/ws-recursor.cc
    functionUses: 0
    functionsReached:
    - apiServerConfigACLGET
    linkageType: ''
    returnType: void
    signature: void apiServerConfigAllowFromGET(HttpRequest* req, HttpResponse* resp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: apiServerConfigACLGET
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:183,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - req
    - resp
    argTypes:
    - HttpRequest*
    - HttpResponse*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 184
      start: 181
    functionDepth: 1
    functionLinenumber: 181
    functionLinenumberEnd: 184
    functionName: apiServerConfigAllowNotifyFromGET
    functionSourceFile: /src/pdns/pdns/recursordist/ws-recursor.cc
    functionUses: 0
    functionsReached:
    - apiServerConfigACLGET
    linkageType: ''
    returnType: void
    signature: void apiServerConfigAllowNotifyFromGET(HttpRequest* req, HttpResponse*
      resp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: apiServerConfigACLPUT
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:188,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - req
    - resp
    argTypes:
    - HttpRequest*
    - HttpResponse*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 189
      start: 186
    functionDepth: 4
    functionLinenumber: 186
    functionLinenumberEnd: 189
    functionName: apiServerConfigAllowFromPUT
    functionSourceFile: /src/pdns/pdns/recursordist/ws-recursor.cc
    functionUses: 0
    functionsReached:
    - apiServerConfigACLPUT
    linkageType: ''
    returnType: void
    signature: void apiServerConfigAllowFromPUT(HttpRequest* req, HttpResponse* resp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: apiServerConfigACLPUT
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:193,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - req
    - resp
    argTypes:
    - HttpRequest*
    - HttpResponse*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 194
      start: 191
    functionDepth: 4
    functionLinenumber: 191
    functionLinenumberEnd: 194
    functionName: apiServerConfigAllowNotifyFromPUT
    functionSourceFile: /src/pdns/pdns/recursordist/ws-recursor.cc
    functionUses: 0
    functionsReached:
    - apiServerConfigACLPUT
    linkageType: ''
    returnType: void
    signature: void apiServerConfigAllowNotifyFromPUT(HttpRequest* req, HttpResponse*
      resp)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:198,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:200,1
    - Dst: find
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:205,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:206,1
    - Dst: DNSName::chopOff
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:209,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 1
    argNames:
    - qname
    argTypes:
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 211
      start: 196
    functionDepth: 0
    functionLinenumber: 196
    functionLinenumberEnd: 211
    functionName: isAllowedNotify
    functionSourceFile: /src/pdns/pdns/recursordist/ws-recursor.cc
    functionUses: 0
    functionsReached:
    - DNSName::chopOff
    - end
    - lock
    - empty
    - find
    linkageType: ''
    returnType: bool
    signature: bool isAllowedNotify(DNSName qname)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:215,1
    - Dst: find
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:216,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:217,1
    - Dst: ApiException
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:218,1
    - Dst: toLogString
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:218,1
    - Dst: Json::array::emplace_back
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:225,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:225,1
    - Dst: Json::array::push_back
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:230,1
    - Dst: d_name::toString
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:231,1
    - Dst: DNSRecordContent::NumberToType
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:232,1
    - Dst: getContent
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:234,1
    - Dst: apiZoneNameToId
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:238,1
    - Dst: auto::first::toString
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:242,1
    - Dst: d_servers::empty
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:243,1
    - Dst: d_servers::empty
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:245,1
    - Dst: isAllowedNotify
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:246,1
    - Dst: HttpResponse*::setJsonBody
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:249,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 2
    argNames:
    - ' zonename'
    - resp
    argTypes:
    - DNSName
    - HttpResponse*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 250
      start: 213
    functionDepth: 1
    functionLinenumber: 213
    functionLinenumberEnd: 250
    functionName: fillZone
    functionSourceFile: /src/pdns/pdns/recursordist/ws-recursor.cc
    functionUses: 2
    functionsReached:
    - d_servers::empty
    - toLogString
    - d_name::toString
    - isAllowedNotify
    - end
    - auto::first::toString
    - getContent
    - ApiException
    - lock
    - HttpResponse*::setJsonBody
    - Json::array::emplace_back
    - Json::array::push_back
    - DNSRecordContent::NumberToType
    - apiZoneNameToId
    - toStringWithPort
    - find
    linkageType: ''
    returnType: void
    signature: void fillZone(const DNSName& zonename, HttpResponse* resp)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: checkApiDirSet
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:254,1
    - Dst: apiNameToDNSName
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:256,1
    - Dst: stringFromJson
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:256,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:257,1
    - Dst: apiCheckNameAllowedCharacters
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:258,1
    - Dst: string_value
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:260,1
    - Dst: toUpper
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:261,1
    - Dst: stringFromJson
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:261,1
    - Dst: boolFromJson
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:262,1
    - Dst: boolFromJson
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:263,1
    - Dst: apiZoneNameToId
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:264,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:266,1
    - Dst: ApiException
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:270,1
    - Dst: string::empty
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:272,1
    - Dst: ApiException
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:276,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:278,1
    - Dst: ApiException
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:281,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:284,1
    - Dst: string::c_str
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:285,1
    - Dst: ApiException
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:287,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:287,1
    - Dst: string::empty
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:291,1
    - Dst: ofstream::close
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:295,1
    - Dst: pdns::rust::settings::rec::api_add_auth_zone
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:301,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:301,1
    - Dst: apiWriteConfigFile
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:304,1
    - Dst: array_items
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:313,1
    - Dst: pdns::rust::settings::rec::ForwardZone::forwarders::emplace_back
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:314,1
    - Dst: string_value
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:314,1
    - Dst: pdns::rust::settings::rec::api_add_forward_zone
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:316,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:316,1
    - Dst: array_items
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:320,1
    - Dst: string_value
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:321,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:322,1
    - Dst: ApiException
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:323,1
    - Dst: parseIPAndPort
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:326,1
    - Dst: string::empty
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:327,1
    - Dst: ComboAddress::toStringWithPort
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:330,1
    - Dst: ApiException
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:333,1
    - Dst: string::empty
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:336,1
    - Dst: ApiException
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:337,1
    - Dst: apiWriteConfigFile
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:342,1
    - Dst: apiWriteConfigFile
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:345,1
    - Dst: ApiException
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:350,1
    CyclomaticComplexity: 25
    EdgeCount: 25
    ICount: 68
    argCount: 1
    argNames:
    - ' document'
    argTypes:
    - Json
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 352
      start: 252
    functionDepth: 2
    functionLinenumber: 252
    functionLinenumberEnd: 352
    functionName: doCreateZone
    functionSourceFile: /src/pdns/pdns/recursordist/ws-recursor.cc
    functionUses: 0
    functionsReached:
    - apiWriteConfigFile
    - stringerror
    - apiCheckNameAllowedCharacters
    - ApiException
    - ofstream::close
    - DNSName::toString
    - apiNameToDNSName
    - stringFromJson
    - pdns::rust::settings::rec::api_add_auth_zone
    - string::empty
    - toUpper
    - empty
    - array_items
    - string::c_str
    - pdns::rust::settings::rec::ForwardZone::forwarders::emplace_back
    - string_value
    - arg
    - checkApiDirSet
    - ComboAddress::toStringWithPort
    - pdns::rust::settings::rec::api_add_forward_zone
    - std::move
    - boolFromJson
    - ComboAddress::toString
    - parseIPAndPort
    - apiZoneNameToId
    linkageType: ''
    returnType: void
    signature: void doCreateZone(const Json& document)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: checkApiDirSet
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:356,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:360,1
    - Dst: pdns::rust::settings::rec::api_delete_zone
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:361,1
    - Dst: toString
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:361,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:365,1
    - Dst: apiZoneNameToId
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:365,1
    - Dst: unlink
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:366,1
    - Dst: string::c_str
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:366,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:371,1
    - Dst: apiZoneNameToId
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:371,1
    - Dst: unlink
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:372,1
    - Dst: string::c_str
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:372,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 1
    argNames:
    - ' zonename'
    argTypes:
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 375
      start: 354
    functionDepth: 1
    functionLinenumber: 354
    functionLinenumberEnd: 375
    functionName: doDeleteZone
    functionSourceFile: /src/pdns/pdns/recursordist/ws-recursor.cc
    functionUses: 0
    functionsReached:
    - string::c_str
    - toString
    - pdns::rust::settings::rec::api_delete_zone
    - unlink
    - apiZoneNameToId
    - arg
    - checkApiDirSet
    linkageType: ''
    returnType: bool
    signature: bool doDeleteZone(const DNSName& zonename)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: checkApiDirSet
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:379,1
    - Dst: HttpRequest*::json
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:381,1
    - Dst: apiNameToDNSName
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:383,1
    - Dst: stringFromJson
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:383,1
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:385,1
    - Dst: find
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:386,1
    - Dst: cend
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:387,1
    - Dst: ApiException
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:388,1
    - Dst: doCreateZone
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:390,1
    - Dst: reloadZoneConfiguration
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:392,1
    - Dst: fillZone
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:393,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - req
    - resp
    argTypes:
    - HttpRequest*
    - HttpResponse*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 395
      start: 377
    functionDepth: 4
    functionLinenumber: 377
    functionLinenumberEnd: 395
    functionName: apiServerZonesPOST
    functionSourceFile: /src/pdns/pdns/recursordist/ws-recursor.cc
    functionUses: 0
    functionsReached:
    - stringFromJson
    - doCreateZone
    - lock
    - ApiException
    - reloadZoneConfiguration
    - cend
    - fillZone
    - apiNameToDNSName
    - HttpRequest*::json
    - checkApiDirSet
    - find
    linkageType: ''
    returnType: void
    signature: void apiServerZonesPOST(HttpRequest* req, HttpResponse* resp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:400,1
    - Dst: Json::array::emplace_back
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:405,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:405,1
    - Dst: apiZoneNameToId
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:408,1
    - Dst: Json::array::push_back
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:409,1
    - Dst: first::toString
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:412,1
    - Dst: d_servers::empty
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:413,1
    - Dst: d_servers::empty
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:415,1
    - Dst: HttpResponse*::setJsonBody
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:417,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - resp
    argTypes:
    - HttpResponse*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 418
      start: 397
    functionDepth: 0
    functionLinenumber: 397
    functionLinenumberEnd: 418
    functionName: apiServerZonesGET
    functionSourceFile: /src/pdns/pdns/recursordist/ws-recursor.cc
    functionUses: 0
    functionsReached:
    - d_servers::empty
    - toStringWithPort
    - lock
    - HttpResponse*::setJsonBody
    - Json::array::push_back
    - Json::array::emplace_back
    - first::toString
    - apiZoneNameToId
    linkageType: ''
    returnType: void
    signature: void apiServerZonesGET(HttpRequest* /* req */, HttpResponse* resp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: apiZoneIdToName
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:422,1
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:423,1
    - Dst: find
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:424,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:424,1
    - Dst: ApiException
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:425,1
    - Dst: auto::toLogString
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:425,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - req
    argTypes:
    - HttpRequest*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 428
      start: 420
    functionDepth: 0
    functionLinenumber: 420
    functionLinenumberEnd: 428
    functionName: findZoneById
    functionSourceFile: /src/pdns/pdns/recursordist/ws-recursor.cc
    functionUses: 0
    functionsReached:
    - apiZoneIdToName
    - end
    - ApiException
    - lock
    - auto::toLogString
    - find
    linkageType: ''
    returnType: DNSName
    signature: DNSName findZoneById(HttpRequest* req)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: findZoneById
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:432,1
    - Dst: HttpRequest*::json
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:433,1
    - Dst: doDeleteZone
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:435,1
    - Dst: doCreateZone
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:436,1
    - Dst: reloadZoneConfiguration
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:437,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - req
    - resp
    argTypes:
    - HttpRequest*
    - HttpResponse*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 440
      start: 430
    functionDepth: 4
    functionLinenumber: 430
    functionLinenumberEnd: 440
    functionName: apiServerZoneDetailPUT
    functionSourceFile: /src/pdns/pdns/recursordist/ws-recursor.cc
    functionUses: 0
    functionsReached:
    - doCreateZone
    - doDeleteZone
    - reloadZoneConfiguration
    - findZoneById
    - HttpRequest*::json
    linkageType: ''
    returnType: void
    signature: void apiServerZoneDetailPUT(HttpRequest* req, HttpResponse* resp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: findZoneById
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:444,1
    - Dst: doDeleteZone
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:445,1
    - Dst: ApiException
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:446,1
    - Dst: reloadZoneConfiguration
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:449,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - req
    - resp
    argTypes:
    - HttpRequest*
    - HttpResponse*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 453
      start: 442
    functionDepth: 4
    functionLinenumber: 442
    functionLinenumberEnd: 453
    functionName: apiServerZoneDetailDELETE
    functionSourceFile: /src/pdns/pdns/recursordist/ws-recursor.cc
    functionUses: 0
    functionsReached:
    - doDeleteZone
    - findZoneById
    - reloadZoneConfiguration
    - ApiException
    linkageType: ''
    returnType: void
    signature: void apiServerZoneDetailDELETE(HttpRequest* req, HttpResponse* resp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: findZoneById
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:457,1
    - Dst: fillZone
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:458,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - req
    - resp
    argTypes:
    - HttpRequest*
    - HttpResponse*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 459
      start: 455
    functionDepth: 1
    functionLinenumber: 455
    functionLinenumberEnd: 459
    functionName: apiServerZoneDetailGET
    functionSourceFile: /src/pdns/pdns/recursordist/ws-recursor.cc
    functionUses: 0
    functionsReached:
    - fillZone
    - findZoneById
    linkageType: ''
    returnType: void
    signature: void apiServerZoneDetailGET(HttpRequest* req, HttpResponse* resp)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: string::empty
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:464,1
    - Dst: ApiException
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:465,1
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:468,1
    - Dst: apiZoneNameToId
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:471,1
    - Dst: first::toString
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:472,1
    - Dst: pdns_ci_find
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:473,1
    - Dst: Json::array::push_back
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:474,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:481,1
    - Dst: pdns_ci_find
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:488,1
    - Dst: d_name::toString
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:488,1
    - Dst: pdns_ci_find
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:488,1
    - Dst: getContent
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:488,1
    - Dst: Json::array::push_back
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:492,1
    - Dst: d_name::toString
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:496,1
    - Dst: getContent
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:497,1
    - Dst: HttpResponse*::setJsonBody
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:500,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 17
    argCount: 2
    argNames:
    - req
    - resp
    argTypes:
    - HttpRequest*
    - HttpResponse*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 501
      start: 461
    functionDepth: 0
    functionLinenumber: 461
    functionLinenumberEnd: 501
    functionName: apiServerSearchData
    functionSourceFile: /src/pdns/pdns/recursordist/ws-recursor.cc
    functionUses: 0
    functionsReached:
    - d_name::toString
    - string::empty
    - DNSName
    - ApiException
    - lock
    - getContent
    - Json::array::push_back
    - HttpResponse*::setJsonBody
    - first::toString
    - pdns_ci_find
    - apiZoneNameToId
    linkageType: ''
    returnType: void
    signature: void apiServerSearchData(HttpRequest* req, HttpResponse* resp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: apiNameToDNSName
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:505,1
    - Dst: HttpRequest*::getvars::count
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:506,1
    - Dst: HttpRequest*::getvars::count
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:508,1
    - Dst: QType::chartocode
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:509,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:509,1
    - Dst: wipeCaches
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:512,1
    - Dst: HttpResponse*::setJsonBody
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:513,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - req
    - resp
    argTypes:
    - HttpRequest*
    - HttpResponse*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 516
      start: 503
    functionDepth: 3
    functionLinenumber: 503
    functionLinenumberEnd: 516
    functionName: apiServerCacheFlush
    functionSourceFile: /src/pdns/pdns/recursordist/ws-recursor.cc
    functionUses: 0
    functionsReached:
    - HttpRequest*::getvars::count
    - HttpResponse*::setJsonBody
    - wipeCaches
    - QType::chartocode
    - c_str
    - apiNameToDNSName
    linkageType: ''
    returnType: void
    signature: void apiServerCacheFlush(HttpRequest* req, HttpResponse* resp)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: getLocal
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:520,1
    - Dst: auto::dfe::size
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:521,1
    - Dst: auto::dfe::getZone
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:526,1
    - Dst: auto::getName
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:530,1
    - Dst: getRPZZoneStats
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:531,1
    - Dst: HttpResponse*::setJsonBody
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:545,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 1
    argNames:
    - resp
    argTypes:
    - HttpResponse*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 546
      start: 518
    functionDepth: 1
    functionLinenumber: 518
    functionLinenumberEnd: 546
    functionName: apiServerRPZStats
    functionSourceFile: /src/pdns/pdns/recursordist/ws-recursor.cc
    functionUses: 0
    functionsReached:
    - auto::dfe::getZone
    - getRPZZoneStats
    - auto::getName
    - HttpResponse*::setJsonBody
    - getLocal
    - auto::dfe::size
    linkageType: ''
    returnType: void
    signature: void apiServerRPZStats(HttpRequest* /* req */, HttpResponse* resp)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:551,1
    - Dst: first::toString
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:555,1
    - Dst: Json::object::emplace
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:561,1
    - Dst: second::d_qnames::toVector
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:565,1
    - Dst: Json::array::emplace_back
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:566,1
    - Dst: toString
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:566,1
    - Dst: Json::object::emplace
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:568,1
    - Dst: Json::array::emplace_back
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:573,1
    - Dst: toString
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:573,1
    - Dst: Json::object::emplace
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:575,1
    - Dst: Json::array::emplace_back
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:578,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:578,1
    - Dst: HttpResponse*::setJsonBody
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:581,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 19
    argCount: 1
    argNames:
    - resp
    argTypes:
    - HttpResponse*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 582
      start: 548
    functionDepth: 0
    functionLinenumber: 548
    functionLinenumberEnd: 582
    functionName: apiServerOTConditionsGET
    functionSourceFile: /src/pdns/pdns/recursordist/ws-recursor.cc
    functionUses: 0
    functionsReached:
    - std::move
    - toString
    - Json::object::emplace
    - second::d_qnames::toVector
    - lock
    - HttpResponse*::setJsonBody
    - Json::array::emplace_back
    - first::toString
    linkageType: ''
    returnType: void
    signature: void apiServerOTConditionsGET(HttpRequest* /* req */, HttpResponse*
      resp)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:586,1
    - Dst: lookup
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:588,1
    - Dst: auto::first::toString
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:591,1
    - Dst: Json::object::emplace
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:597,1
    - Dst: auto::second::d_qnames::toVector
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:601,1
    - Dst: Json::array::emplace_back
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:602,1
    - Dst: toString
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:602,1
    - Dst: Json::object::emplace
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:604,1
    - Dst: Json::array::emplace_back
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:609,1
    - Dst: toString
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:609,1
    - Dst: Json::object::emplace
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:611,1
    - Dst: HttpResponse*::setJsonBody
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:613,1
    - Dst: ApiException
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:617,1
    - Dst: toString
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:617,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 21
    argCount: 2
    argNames:
    - ' netmask'
    - resp
    argTypes:
    - Netmask
    - HttpResponse*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 618
      start: 584
    functionDepth: 0
    functionLinenumber: 584
    functionLinenumberEnd: 618
    functionName: fillOTCondition
    functionSourceFile: /src/pdns/pdns/recursordist/ws-recursor.cc
    functionUses: 0
    functionsReached:
    - toString
    - Json::object::emplace
    - lookup
    - auto::first::toString
    - lock
    - HttpResponse*::setJsonBody
    - ApiException
    - Json::array::emplace_back
    - auto::second::d_qnames::toVector
    linkageType: ''
    returnType: void
    signature: void fillOTCondition(const Netmask& netmask, HttpResponse* resp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fillOTCondition
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:624,1
    - Dst: ApiException
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:627,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - req
    - resp
    argTypes:
    - HttpRequest*
    - HttpResponse*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 629
      start: 620
    functionDepth: 1
    functionLinenumber: 620
    functionLinenumberEnd: 629
    functionName: apiServerOTConditionDetailGET
    functionSourceFile: /src/pdns/pdns/recursordist/ws-recursor.cc
    functionUses: 0
    functionsReached:
    - fillOTCondition
    - ApiException
    linkageType: ''
    returnType: void
    signature: void apiServerOTConditionDetailGET(HttpRequest* req, HttpResponse*
      resp)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:635,1
    - Dst: lookup
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:637,1
    - Dst: erase
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:639,1
    - Dst: updateOTConditions
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:640,1
    - Dst: ApiException
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:647,1
    - Dst: Netmask::toString
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:647,1
    - Dst: ApiException
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:650,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 2
    argNames:
    - req
    - resp
    argTypes:
    - HttpRequest*
    - HttpResponse*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 652
      start: 631
    functionDepth: 2
    functionLinenumber: 631
    functionLinenumberEnd: 652
    functionName: apiServerOTConditionDetailDELETE
    functionSourceFile: /src/pdns/pdns/recursordist/ws-recursor.cc
    functionUses: 0
    functionsReached:
    - lookup
    - Netmask::toString
    - ApiException
    - lock
    - updateOTConditions
    - erase
    linkageType: ''
    returnType: void
    signature: void apiServerOTConditionDetailDELETE(HttpRequest* req, HttpResponse*
      resp)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: Netmask::Netmask
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:656,1
    - Dst: HttpRequest*::json
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:658,1
    - Dst: Json
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:659,1
    - Dst: auto::string_value
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:660,1
    - Dst: ApiException
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:663,1
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:665,1
    - Dst: std::make_unique<OpenTelemetryTraceConditions>
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:667,1
    - Dst: lookup
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:669,1
    - Dst: ApiException
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:671,1
    - Dst: auto::is_bool
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:675,1
    - Dst: auto::bool_value
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:676,1
    - Dst: auto::is_bool
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:678,1
    - Dst: auto::bool_value
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:679,1
    - Dst: auto::is_array
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:681,1
    - Dst: auto::array_items
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:681,1
    - Dst: SuffixMatchNode
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:682,1
    - Dst: auto::array_items
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:683,1
    - Dst: OpenTelemetryTraceCondition::d_qnames::add
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:684,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:684,1
    - Dst: string_value
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:684,1
    - Dst: auto::is_array
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:687,1
    - Dst: auto::array_items
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:687,1
    - Dst: std::unordered_set<QType>
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:688,1
    - Dst: auto::array_items
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:689,1
    - Dst: QType::chartocode
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:690,1
    - Dst: string_value
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:690,1
    - Dst: OpenTelemetryTraceCondition::d_qtypes::insert
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:691,1
    - Dst: auto::is_number
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:695,1
    - Dst: auto::int_value
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:696,1
    - Dst: insert
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:698,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:698,1
    - Dst: updateOTConditions
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:699,1
    - Dst: ApiException
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:702,1
    - Dst: fillOTCondition
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:704,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 49
    argCount: 2
    argNames:
    - req
    - resp
    argTypes:
    - HttpRequest*
    - HttpResponse*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 707
      start: 654
    functionDepth: 2
    functionLinenumber: 654
    functionLinenumberEnd: 707
    functionName: apiServerOTConditionDetailPOST
    functionSourceFile: /src/pdns/pdns/recursordist/ws-recursor.cc
    functionUses: 0
    functionsReached:
    - lookup
    - ApiException
    - QType::chartocode
    - insert
    - lock
    - updateOTConditions
    - auto::int_value
    - SuffixMatchNode
    - string_value
    - auto::is_bool
    - auto::bool_value
    - auto::is_number
    - std::make_unique<OpenTelemetryTraceConditions>
    - DNSName
    - auto::is_array
    - HttpRequest*::json
    - Json
    - OpenTelemetryTraceCondition::d_qnames::add
    - auto::array_items
    - std::move
    - fillOTCondition
    - Netmask::Netmask
    - auto::string_value
    - std::unordered_set<QType>
    - OpenTelemetryTraceCondition::d_qtypes::insert
    linkageType: ''
    returnType: void
    signature: void apiServerOTConditionDetailPOST(HttpRequest* req, HttpResponse*
      resp)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: getAllStatsMap
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:717,1
    - Dst: MetricDefinitionStorage::getMetricDetails
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:726,1
    - Dst: MetricDefinitionStorage::getPrometheusStringMetricType
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:727,1
    - Dst: std::string::empty
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:731,1
    - Dst: std::string::substr
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:735,1
    - Dst: std::string::find
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:735,1
    - Dst: std::string::substr
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:738,1
    - Dst: std::string::find
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:738,1
    - Dst: std::string::substr
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:740,1
    - Dst: std::string::length
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:740,1
    - Dst: MetricDefinitionStorage::getPrometheusStringMetricType
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:745,1
    - Dst: std::string::empty
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:753,1
    - Dst: std::string::empty
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:756,1
    - Dst: std::ostringstream::str
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:772,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 36
    argCount: 1
    argNames:
    - resp
    argTypes:
    - HttpResponse*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 775
      start: 709
    functionDepth: 2
    functionLinenumber: 709
    functionLinenumberEnd: 775
    functionName: prometheusMetrics
    functionSourceFile: /src/pdns/pdns/recursordist/ws-recursor.cc
    functionUses: 0
    functionsReached:
    - std::string::length
    - MetricDefinitionStorage::getPrometheusStringMetricType
    - std::string::substr
    - getAllStatsMap
    - MetricDefinitionStorage::getMetricDetails
    - std::ostringstream::str
    - std::string::find
    - std::string::empty
    linkageType: ''
    returnType: void
    signature: void prometheusMetrics(HttpRequest* /* req */, HttpResponse* resp)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: boost::ends_with
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:788,1
    - Dst: boost::ends_with
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:791,1
    - Dst: boost::ends_with
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:794,1
    - Dst: boost::ends_with
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:797,1
    - Dst: HttpRequest*::url::path::empty
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:808,1
    - Dst: count
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:808,1
    - Dst: HttpRequest*::url::path::substr
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:808,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:809,1
    - Dst: HttpRequest*::url::path::substr
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:809,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 27
    argCount: 2
    argNames:
    - req
    - resp
    argTypes:
    - HttpRequest*
    - HttpResponse*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 815
      start: 779
    functionDepth: 0
    functionLinenumber: 779
    functionLinenumberEnd: 815
    functionName: serveStuff
    functionSourceFile: /src/pdns/pdns/recursordist/ws-recursor.cc
    functionUses: 0
    functionsReached:
    - count
    - boost::ends_with
    - HttpRequest*::url::path::substr
    - at
    - HttpRequest*::url::path::empty
    linkageType: ''
    returnType: void
    signature: void serveStuff(HttpRequest* req, HttpResponse* resp)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: getAllStatsMap
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:829,1
    - Dst: std::string::find
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:833,1
    - Dst: std::string::find
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:836,1
    - Dst: std::string::find
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:839,1
    - Dst: std::string::find
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:839,1
    - Dst: std::string::find
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:842,1
    - Dst: MetricDefinitionStorage::getMetricDetails
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:847,1
    - Dst: info
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:848,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 851
      start: 825
    functionDepth: 2
    functionLinenumber: 825
    functionLinenumberEnd: 851
    functionName: validatePrometheusMetrics
    functionSourceFile: /src/pdns/pdns/recursordist/ws-recursor.cc
    functionUses: 0
    functionsReached:
    - getAllStatsMap
    - std::string::find
    - info
    - MetricDefinitionStorage::getMetricDetails
    linkageType: ''
    returnType: void
    signature: void validatePrometheusMetrics()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: validatePrometheusMetrics
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:856,1
    - Dst: make_unique<AsyncWebServer>
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:859,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:859,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:859,1
    - Dst: setSLog
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:860,1
    - Dst: withName
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:860,1
    - Dst: setApiKey
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:862,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:862,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:862,1
    - Dst: setPassword
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:863,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:863,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:863,1
    - Dst: setLogLevel
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:864,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:864,1
    - Dst: NetmaskGroup::NetmaskGroup
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:866,1
    - Dst: NetmaskGroup::toMasks
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:867,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:867,1
    - Dst: setACL
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:868,1
    - Dst: bind
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:870,1
    - Dst: registerApiHandler
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:873,1
    - Dst: jsonstat
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:874,1
    - Dst: registerApiHandler
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:875,1
    - Dst: registerApiHandler
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:876,1
    - Dst: registerApiHandler
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:877,1
    - Dst: registerApiHandler
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:878,1
    - Dst: registerApiHandler
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:879,1
    - Dst: registerApiHandler
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:880,1
    - Dst: registerApiHandler
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:881,1
    - Dst: registerApiHandler
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:882,1
    - Dst: registerApiHandler
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:883,1
    - Dst: registerApiHandler
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:884,1
    - Dst: registerApiHandler
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:885,1
    - Dst: registerApiHandler
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:886,1
    - Dst: registerApiHandler
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:887,1
    - Dst: registerApiHandler
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:888,1
    - Dst: registerApiHandler
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:889,1
    - Dst: registerApiHandler
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:890,1
    - Dst: registerApiHandler
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:891,1
    - Dst: registerApiHandler
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:892,1
    - Dst: registerWebHandler
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:895,1
    - Dst: registerWebHandler
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:898,1
    - Dst: registerWebHandler
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:899,1
    - Dst: go
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:900,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 38
    argCount: 1
    argNames:
    - fdm
    argTypes:
    - FDMultiplexer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 901
      start: 853
    functionDepth: 3
    functionLinenumber: 853
    functionLinenumberEnd: 901
    functionName: RecursorWebServer::RecursorWebServer
    functionSourceFile: /src/pdns/pdns/recursordist/ws-recursor.cc
    functionUses: 0
    functionsReached:
    - registerWebHandler
    - NetmaskGroup::NetmaskGroup
    - validatePrometheusMetrics
    - withName
    - make_unique<AsyncWebServer>
    - setSLog
    - setApiKey
    - bind
    - setACL
    - NetmaskGroup::toMasks
    - registerApiHandler
    - jsonstat
    - go
    - setLogLevel
    - setPassword
    - arg
    linkageType: ''
    returnType: void
    signature: void RecursorWebServer::RecursorWebServer(FDMultiplexer* fdm)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: HttpRequest*::getvars::count
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:908,1
    - Dst: HttpRequest*::getvars::erase
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:910,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:917,1
    - Dst: broadcastAccFunction
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:920,1
    - Dst: broadcastAccFunction
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:923,1
    - Dst: broadcastAccFunction
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:926,1
    - Dst: pair
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:933,1
    - Dst: getRegisteredName
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:933,1
    - Dst: pair
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:936,1
    - Dst: rcounts_t::emplace
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:944,1
    - Dst: Json::array::push_back
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:952,1
    - Dst: second::first::toLogString
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:953,1
    - Dst: DNSRecordContent::NumberToType
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:953,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:958,1
    - Dst: Json::array::push_back
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:959,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:960,1
    - Dst: HttpResponse*::setJsonBody
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:962,1
    - Dst: broadcastAccFunction
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:968,1
    - Dst: broadcastAccFunction
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:971,1
    - Dst: broadcastAccFunction
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:974,1
    - Dst: broadcastAccFunction
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:977,1
    - Dst: broadcastAccFunction
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:980,1
    - Dst: rcounts_t::emplace
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:992,1
    - Dst: Json::array::push_back
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:1000,1
    - Dst: second::toString
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:1001,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:1006,1
    - Dst: Json::array::push_back
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:1007,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:1008,1
    - Dst: HttpResponse*::setJsonBody
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:1011,1
    - Dst: HttpResponse*::setErrorResult
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:1014,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 68
    argCount: 2
    argNames:
    - req
    - resp
    argTypes:
    - HttpRequest*
    - HttpResponse*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1015
      start: 904
    functionDepth: 2
    functionLinenumber: 904
    functionLinenumberEnd: 1015
    functionName: jsonstat
    functionSourceFile: /src/pdns/pdns/recursordist/ws-recursor.cc
    functionUses: 1
    functionsReached:
    - HttpRequest*::getvars::count
    - HttpRequest*::getvars::erase
    - second::toString
    - getRegisteredName
    - HttpResponse*::setJsonBody
    - rcounts_t::emplace
    - Json::array::push_back
    - broadcastAccFunction
    - HttpResponse*::setErrorResult
    - DNSRecordContent::NumberToType
    - empty
    - vector::size
    - pair
    - second::first::toLogString
    linkageType: ''
    returnType: void
    signature: void jsonstat(HttpRequest* req, HttpResponse* resp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<AsyncServer*>
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:1021,1
    - Dst: auto*::accept
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:1024,1
    - Dst: auto*::d_asyncNewConnectionCallback
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:1026,1
    - Dst: withName
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:1031,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:1031,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:1031,1
    - Dst: withName
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:1035,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1038
      start: 1019
    functionDepth: 0
    functionLinenumber: 1019
    functionLinenumberEnd: 1038
    functionName: AsyncServerNewConnectionMT
    functionSourceFile: /src/pdns/pdns/recursordist/ws-recursor.cc
    functionUses: 0
    functionsReached:
    - auto*::accept
    - Logging::Loggable
    - auto*::d_asyncNewConnectionCallback
    - what
    - withName
    - static_cast<AsyncServer*>
    linkageType: ''
    returnType: void
    signature: void AsyncServerNewConnectionMT(void* arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: FDMultiplexer*::addReadFD
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:1043,1
    - Dst: getHandle
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:1043,1
    - Dst: AsyncServer::newConnection
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:1043,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - fdm
    - ' callback'
    argTypes:
    - FDMultiplexer*
    - newconnectioncb_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1044
      start: 1040
    functionDepth: 1
    functionLinenumber: 1040
    functionLinenumberEnd: 1044
    functionName: AsyncServer::asyncWaitForConnections
    functionSourceFile: /src/pdns/pdns/recursordist/ws-recursor.cc
    functionUses: 0
    functionsReached:
    - AsyncServer::newConnection
    - FDMultiplexer*::addReadFD
    - getHandle
    linkageType: ''
    returnType: void
    signature: void AsyncServer::asyncWaitForConnections(FDMultiplexer* fdm, const
      newconnectioncb_t& callback)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getMT
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:1048,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1049
      start: 1046
    functionDepth: 1
    functionLinenumber: 1046
    functionLinenumberEnd: 1049
    functionName: AsyncServer::newConnection
    functionSourceFile: /src/pdns/pdns/recursordist/ws-recursor.cc
    functionUses: 1
    functionsReached:
    - getMT
    linkageType: ''
    returnType: void
    signature: void AsyncServer::newConnection()
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: acl
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:1054,1
    - Dst: getUniqueID
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:1058,1
    - Dst: to_string
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:1059,1
    - Dst: HttpResponse::HttpResponse
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:1062,1
    - Dst: withValues
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:1064,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:1064,1
    - Dst: to_string
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:1064,1
    - Dst: HttpRequest::setSLog
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:1065,1
    - Dst: HttpResponse::setSLog
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:1066,1
    - Dst: YaHTTP::AsyncRequestLoader::initialize
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:1074,1
    - Dst: setNonBlocking
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:1075,1
    - Dst: static_cast<suseconds_t>
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:1078,1
    - Dst: getRemote
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:1081,1
    - Dst: std::make_shared<TCPIOHandler>
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:1083,1
    - Dst: releaseHandle
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:1083,1
    - Dst: arecvtcp
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:1088,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:1090,1
    - Dst: PacketBuffer::data
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:1090,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:1090,1
    - Dst: YaHTTP::AsyncRequestLoader::feed
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:1091,1
    - Dst: YaHTTP::AsyncRequestLoader::finalize
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:1098,1
    - Dst: HttpRequest::d_slog::error
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:1102,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:1102,1
    - Dst: validURL
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:1105,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:1106,1
    - Dst: logRequest
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:1108,1
    - Dst: WebServer::handleRequest
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:1110,1
    - Dst: HttpResponse::write
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:1112,1
    - Dst: ostringstream::str
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:1113,1
    - Dst: PacketBuffer::insert
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:1114,1
    - Dst: PacketBuffer::end
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:1114,1
    - Dst: string::cbegin
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:1114,1
    - Dst: string::cend
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:1114,1
    - Dst: logResponse
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:1116,1
    - Dst: asendtcp
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:1119,1
    - Dst: PacketBuffer::empty
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:1119,1
    - Dst: HttpRequest::d_slog::info
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:1120,1
    - Dst: auto::close
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:1122,1
    - Dst: HttpRequest::d_slog::info
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:1124,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:1124,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:1124,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:1125,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:1125,1
    - Dst: HttpRequest::versionStr
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:1125,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:1126,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:1126,1
    - Dst: PacketBuffer::size
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:1126,1
    - Dst: HttpRequest::d_slog::error
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:1130,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:1130,1
    - Dst: strstr
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:1133,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:1133,1
    - Dst: HttpRequest::d_slog::error
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:1134,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:1134,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:1134,1
    - Dst: HttpRequest::d_slog::error
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:1138,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 47
    argCount: 1
    argNames:
    - ' socket'
    argTypes:
    - std::shared_ptr<Socket>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1140
      start: 1052
    functionDepth: 3
    functionLinenumber: 1052
    functionLinenumberEnd: 1140
    functionName: AsyncWebServer::serveConnection
    functionSourceFile: /src/pdns/pdns/recursordist/ws-recursor.cc
    functionUses: 0
    functionsReached:
    - releaseHandle
    - PacketBuffer::end
    - getUniqueID
    - PDNSException
    - PacketBuffer::size
    - std::make_shared<TCPIOHandler>
    - auto::close
    - HttpRequest::d_slog::error
    - to_string
    - Logging::Loggable
    - setNonBlocking
    - asendtcp
    - YaHTTP::AsyncRequestLoader::initialize
    - YaHTTP::AsyncRequestLoader::finalize
    - PacketBuffer::empty
    - logRequest
    - HttpResponse::write
    - WebServer::handleRequest
    - withValues
    - reinterpret_cast<const char*>
    - ostringstream::str
    - HttpRequest::setSLog
    - getRemote
    - HttpRequest::versionStr
    - strstr
    - PacketBuffer::data
    - arecvtcp
    - HttpResponse::HttpResponse
    - HttpRequest::d_slog::info
    - what
    - PacketBuffer::insert
    - logResponse
    - static_cast<suseconds_t>
    - acl
    - YaHTTP::AsyncRequestLoader::feed
    - validURL
    - string::cend
    - HttpResponse::setSLog
    - string::cbegin
    linkageType: ''
    returnType: void
    signature: void AsyncWebServer::serveConnection(const std::shared_ptr<Socket>&
      socket) const
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: std::dynamic_pointer_cast<AsyncServer>
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:1147,1
    - Dst: auto::asyncWaitForConnections
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:1151,1
    - Dst: AsyncWebServer::serveConnection
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:1151,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1152
      start: 1142
    functionDepth: 4
    functionLinenumber: 1142
    functionLinenumberEnd: 1152
    functionName: AsyncWebServer::go
    functionSourceFile: /src/pdns/pdns/recursordist/ws-recursor.cc
    functionUses: 0
    functionsReached:
    - auto::asyncWaitForConnections
    - AsyncWebServer::serveConnection
    - std::dynamic_pointer_cast<AsyncServer>
    linkageType: ''
    returnType: void
    signature: void AsyncWebServer::go()
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:1160,1
    - Dst: pdns::rust::web::rec::IncomingWSConfig::addresses::emplace_back
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:1164,1
    - Dst: ::rust::Vec<pdns::rust::web::rec::IncomingWSConfig>::emplace_back
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:1167,1
    - Dst: ::rust::Vec<pdns::rust::web::rec::IncomingWSConfig>::empty
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:1170,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:1171,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:1171,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:1171,1
    - Dst: auto::toStringWithPort
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:1172,1
    - Dst: ::rust::Vec<pdns::rust::web::rec::IncomingWSConfig>::emplace_back
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:1173,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:1176,1
    - Dst: auto::empty
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:1178,1
    - Dst: std::make_unique<CredentialsHolder>
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:1179,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:1179,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:1179,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:1181,1
    - Dst: auto::empty
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:1183,1
    - Dst: std::make_unique<CredentialsHolder>
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:1184,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:1184,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:1184,1
    - Dst: NetmaskGroup::NetmaskGroup
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:1186,1
    - Dst: NetmaskGroup::toMasks
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:1187,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:1187,1
    - Dst: std::make_unique<pdns::rust::misc::NetmaskGroup>
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:1188,1
    - Dst: withName
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:1190,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:1192,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:1192,1
    - Dst: auto::info
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:1193,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:1196,1
    - Dst: pdns::rust::web::rec::serveweb
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:1206,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:1206,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:1206,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:1206,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:1206,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:1206,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:1206,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 28
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1207
      start: 1155
    functionDepth: 0
    functionLinenumber: 1155
    functionLinenumberEnd: 1207
    functionName: serveRustWeb
    functionSourceFile: /src/pdns/pdns/recursordist/ws-recursor.cc
    functionUses: 1
    functionsReached:
    - auto::toStringWithPort
    - std::move
    - auto::info
    - std::make_unique<CredentialsHolder>
    - ::rust::Vec<pdns::rust::web::rec::IncomingWSConfig>::empty
    - NetmaskGroup::NetmaskGroup
    - withName
    - pdns::rust::web::rec::serveweb
    - lock
    - NetmaskGroup::toMasks
    - empty
    - std::make_unique<pdns::rust::misc::NetmaskGroup>
    - auto::empty
    - ::rust::Vec<pdns::rust::web::rec::IncomingWSConfig>::emplace_back
    - pdns::rust::web::rec::IncomingWSConfig::addresses::emplace_back
    - arg
    - ComboAddress
    linkageType: ''
    returnType: void
    signature: void serveRustWeb()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ::rust::Vec<::rust::u8>
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:1214,1
    - Dst: body::reserve
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:1215,1
    - Dst: body::size
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:1215,1
    - Dst: std::copy
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:1216,1
    - Dst: body::cbegin
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:1216,1
    - Dst: body::cend
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:1216,1
    - Dst: std::back_inserter
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:1216,1
    - Dst: headers::emplace_back
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:1218,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - ' cxxresp'
    - ' rustResponse'
    argTypes:
    - HttpResponse
    - pdns::rust::web::rec::Response
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1220
      start: 1209
    functionDepth: 0
    functionLinenumber: 1209
    functionLinenumberEnd: 1220
    functionName: fromCxxToRust
    functionSourceFile: /src/pdns/pdns/recursordist/ws-recursor.cc
    functionUses: 0
    functionsReached:
    - body::size
    - body::reserve
    - body::cbegin
    - ::rust::Vec<::rust::u8>
    - body::cend
    - std::back_inserter
    - headers::emplace_back
    - std::copy
    linkageType: ''
    returnType: void
    signature: void fromCxxToRust(const HttpResponse& cxxresp, pdns::rust::web::rec::Response&
      rustResponse)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: HttpRequest::HttpRequest
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:1225,1
    - Dst: HttpResponse::HttpResponse
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:1226,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:1227,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:1227,1
    - Dst: body::data
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:1227,1
    - Dst: body::size
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:1227,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:1228,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:1230,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:1230,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:1233,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:1233,1
    - Dst: func
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:1240,1
    - Dst: response
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:1243,1
    - Dst: response
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:1244,1
    - Dst: HttpResponse::setErrorResult
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:1247,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:1247,1
    - Dst: HttpResponse::setErrorResult
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:1250,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:1250,1
    - Dst: fromCxxToRust
      Src: /src/pdns/pdns/recursordist/ws-recursor.cc:1252,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 20
    argCount: 3
    argNames:
    - ' func'
    - ' rustRequest'
    - ' rustResponse'
    argTypes:
    - std::function<void(HttpRequest*, HttpResponse*)>
    - pdns::rust::web::rec::Request
    - pdns::rust::web::rec::Response
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1253
      start: 1223
    functionDepth: 1
    functionLinenumber: 1223
    functionLinenumberEnd: 1253
    functionName: rustWrapper
    functionSourceFile: /src/pdns/pdns/recursordist/ws-recursor.cc
    functionUses: 0
    functionsReached:
    - HttpRequest::HttpRequest
    - HttpResponse::HttpResponse
    - body::size
    - what
    - func
    - response
    - reinterpret_cast<const char*>
    - fromCxxToRust
    - HttpResponse::setErrorResult
    - std::string
    - body::data
    linkageType: ''
    returnType: void
    signature: void rustWrapper(const std::function<void(HttpRequest*, HttpResponse*)>&
      func, const pdns::rust::web::rec::Request& rustRequest, pdns::rust::web::rec::Response&
      rustResponse)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - A
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1261
      start: 1259
    functionDepth: 0
    functionLinenumber: 1259
    functionLinenumberEnd: 1261
    functionName: WRAPPER
    functionSourceFile: /src/pdns/pdns/recursordist/ws-recursor.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: WRAPPER(A)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - A
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1261
      start: 1259
    functionDepth: 0
    functionLinenumber: 1259
    functionLinenumberEnd: 1261
    functionName: WRAPPER
    functionSourceFile: /src/pdns/pdns/recursordist/ws-recursor.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: WRAPPER(A)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15
      start: 15
    functionDepth: 0
    functionLinenumber: 15
    functionLinenumberEnd: 15
    functionName: pdns_exception
    functionSourceFile: /src/pdns/pdns/recursordist/test-nod_cc.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool pdns_exception(PDNSException const& /* ex */)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_CHECK_EXCEPTION
      Src: /src/pdns/pdns/recursordist/test-nod_cc.cc:24,1
    - Dst: NODDB::setCacheDir
      Src: /src/pdns/pdns/recursordist/test-nod_cc.cc:24,1
    - Dst: NODDB::setCacheDir
      Src: /src/pdns/pdns/recursordist/test-nod_cc.cc:26,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-nod_cc.cc:28,1
    - Dst: NODDB::init
      Src: /src/pdns/pdns/recursordist/test-nod_cc.cc:28,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-nod_cc.cc:30,1
    - Dst: NODDB::isNewDomain
      Src: /src/pdns/pdns/recursordist/test-nod_cc.cc:30,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-nod_cc.cc:31,1
    - Dst: NODDB::isNewDomain
      Src: /src/pdns/pdns/recursordist/test-nod_cc.cc:31,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-nod_cc.cc:32,1
    - Dst: NODDB::isNewDomain
      Src: /src/pdns/pdns/recursordist/test-nod_cc.cc:32,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-nod_cc.cc:33,1
    - Dst: NODDB::isNewDomain
      Src: /src/pdns/pdns/recursordist/test-nod_cc.cc:33,1
    - Dst: NODDB::isNewDomain
      Src: /src/pdns/pdns/recursordist/test-nod_cc.cc:36,1
    - Dst: NODDB::addDomain
      Src: /src/pdns/pdns/recursordist/test-nod_cc.cc:39,1
    - Dst: NODDB::isNewDomainWithParent
      Src: /src/pdns/pdns/recursordist/test-nod_cc.cc:42,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-nod_cc.cc:44,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-nod_cc.cc:45,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/test-nod_cc.cc:45,1
    - Dst: NODDB::setCacheDir
      Src: /src/pdns/pdns/recursordist/test-nod_cc.cc:49,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-nod_cc.cc:50,1
    - Dst: NODDB::init
      Src: /src/pdns/pdns/recursordist/test-nod_cc.cc:50,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-nod_cc.cc:51,1
    - Dst: NODDB::isNewDomain
      Src: /src/pdns/pdns/recursordist/test-nod_cc.cc:51,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-nod_cc.cc:52,1
    - Dst: NODDB::isNewDomain
      Src: /src/pdns/pdns/recursordist/test-nod_cc.cc:52,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-nod_cc.cc:53,1
    - Dst: NODDB::isNewDomain
      Src: /src/pdns/pdns/recursordist/test-nod_cc.cc:53,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-nod_cc.cc:54,1
    - Dst: NODDB::isNewDomain
      Src: /src/pdns/pdns/recursordist/test-nod_cc.cc:54,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-nod_cc.cc:55,1
    - Dst: NODDB::snapshotCurrent
      Src: /src/pdns/pdns/recursordist/test-nod_cc.cc:55,1
    - Dst: dnsdist_ffi_dnsquestion_get_id
      Src: /src/pdns/pdns/recursordist/test-nod_cc.cc:55,1
    - Dst: NODDB::setCacheDir
      Src: /src/pdns/pdns/recursordist/test-nod_cc.cc:59,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-nod_cc.cc:60,1
    - Dst: NODDB::init
      Src: /src/pdns/pdns/recursordist/test-nod_cc.cc:60,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-nod_cc.cc:61,1
    - Dst: NODDB::isNewDomain
      Src: /src/pdns/pdns/recursordist/test-nod_cc.cc:61,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-nod_cc.cc:62,1
    - Dst: NODDB::isNewDomain
      Src: /src/pdns/pdns/recursordist/test-nod_cc.cc:62,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 28
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 17
    functionDepth: 2
    functionLinenumber: 17
    functionLinenumberEnd: 64
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-nod_cc.cc
    functionUses: 0
    functionsReached:
    - NODDB::init
    - NODDB::isNewDomain
    - BOOST_CHECK_EXCEPTION
    - string
    - BOOST_CHECK_EQUAL
    - dnsdist_ffi_dnsquestion_get_id
    - NODDB::addDomain
    - NODDB::snapshotCurrent
    - NODDB::isNewDomainWithParent
    - NODDB::setCacheDir
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_basic)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: set::insert
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:31,1
    - Dst: set::insert
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:32,1
    - Dst: set::insert
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:33,1
    - Dst: set::insert
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:34,1
    - Dst: set::insert
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:35,1
    - Dst: set::insert
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:36,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:37,1
    - Dst: set::size
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:37,1
    - Dst: set::begin
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:40,1
    - Dst: set::end
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:40,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:43,1
    - Dst: ostringstream::str
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:43,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 29
    functionDepth: 2
    functionLinenumber: 29
    functionLinenumberEnd: 44
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-misc_hh.cc
    functionUses: 0
    functionsReached:
    - set::insert
    - set::size
    - BOOST_CHECK_EQUAL
    - set::end
    - set::begin
    - ostringstream::str
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_CIStringCompare)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: set::emplace
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:48,1
    - Dst: set::emplace
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:49,1
    - Dst: set::emplace
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:50,1
    - Dst: set::emplace
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:51,1
    - Dst: set::emplace
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:52,1
    - Dst: set::emplace
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:53,1
    - Dst: set::emplace
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:54,1
    - Dst: set::emplace
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:55,1
    - Dst: set::emplace
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:56,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:57,1
    - Dst: set::size
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:57,1
    - Dst: set::begin
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:60,1
    - Dst: set::end
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:60,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:63,1
    - Dst: ostringstream::str
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:63,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 46
    functionDepth: 0
    functionLinenumber: 46
    functionLinenumberEnd: 64
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-misc_hh.cc
    functionUses: 0
    functionsReached:
    - set::size
    - BOOST_CHECK_EQUAL
    - set::end
    - set::begin
    - ostringstream::str
    - set::emplace
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_CIStringPairCompare)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: boost::assign::list_of
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:70,1
    - Dst: case_t
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:71,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:71,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:71,1
    - Dst: case_t
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:72,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:72,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:72,1
    - Dst: case_t
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:73,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:73,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:73,1
    - Dst: case_t
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:74,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:74,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:74,1
    - Dst: case_t
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:75,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:75,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:75,1
    - Dst: case_t
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:76,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:76,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:76,1
    - Dst: case_t
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:77,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:77,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:77,1
    - Dst: case_t
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:78,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:78,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:78,1
    - Dst: case_t
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:79,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:79,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:79,1
    - Dst: pdns_ilexicographical_compare
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:84,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:84,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:84,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:85,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:85,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 66
    functionDepth: 0
    functionLinenumber: 66
    functionLinenumberEnd: 87
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-misc_hh.cc
    functionUses: 0
    functionsReached:
    - pdns_ilexicographical_compare
    - case_t
    - boost::assign::list_of
    - BOOST_CHECK_EQUAL
    - get
    - std::string
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_pdns_ilexicographical_compare)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: boost::assign::list_of
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:93,1
    - Dst: case_t
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:94,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:94,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:94,1
    - Dst: case_t
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:95,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:95,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:95,1
    - Dst: case_t
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:96,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:96,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:96,1
    - Dst: case_t
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:97,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:97,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:97,1
    - Dst: case_t
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:98,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:98,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:98,1
    - Dst: case_t
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:99,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:99,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:99,1
    - Dst: case_t
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:100,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:100,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:100,1
    - Dst: case_t
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:101,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:101,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:101,1
    - Dst: case_t
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:102,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:102,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:102,1
    - Dst: pdns_iequals
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:107,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:107,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:107,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:108,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:108,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 89
    functionDepth: 0
    functionLinenumber: 89
    functionLinenumberEnd: 110
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-misc_hh.cc
    functionUses: 0
    functionsReached:
    - pdns_iequals
    - case_t
    - boost::assign::list_of
    - BOOST_CHECK_EQUAL
    - get
    - std::string
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_pdns_iequals)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:113,1
    - Dst: stripDot
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:113,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:114,1
    - Dst: stripDot
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:114,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:115,1
    - Dst: stripDot
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:115,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:116,1
    - Dst: stripDot
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:116,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 112
    functionDepth: 0
    functionLinenumber: 112
    functionLinenumberEnd: 117
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-misc_hh.cc
    functionUses: 0
    functionsReached:
    - stripDot
    - BOOST_CHECK_EQUAL
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_stripDot)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:120,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:120,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 119
    functionDepth: 0
    functionLinenumber: 119
    functionLinenumberEnd: 121
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-misc_hh.cc
    functionUses: 0
    functionsReached:
    - DNSName
    - BOOST_CHECK_EQUAL
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_labelReverse)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:128,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 129
      start: 124
    functionDepth: 0
    functionLinenumber: 124
    functionLinenumberEnd: 129
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-misc_hh.cc
    functionUses: 0
    functionsReached:
    - BOOST_CHECK_EQUAL
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_AtomicCounter)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:134,1
    - Dst: htonl
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:134,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:137,1
    - Dst: ntohl
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:137,1
    - Dst: BOOST_FAIL
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:139,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 141
      start: 131
    functionDepth: 0
    functionLinenumber: 131
    functionLinenumberEnd: 141
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-misc_hh.cc
    functionUses: 0
    functionsReached:
    - ntohl
    - BOOST_FAIL
    - BOOST_CHECK_EQUAL
    - htonl
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_endianness)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:145,1
    - Dst: defTer
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:145,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:146,1
    - Dst: defTer
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:146,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:149,1
    - Dst: defTer
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:149,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 150
      start: 143
    functionDepth: 0
    functionLinenumber: 143
    functionLinenumberEnd: 150
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-misc_hh.cc
    functionUses: 0
    functionsReached:
    - BOOST_CHECK_EQUAL
    - defTer
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_ternary)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:153,1
    - Dst: SimpleMatch
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:153,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:153,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:154,1
    - Dst: SimpleMatch
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:154,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:154,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:155,1
    - Dst: SimpleMatch
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:155,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:155,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:157,1
    - Dst: SimpleMatch
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:157,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:157,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:158,1
    - Dst: SimpleMatch
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:158,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:158,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:159,1
    - Dst: SimpleMatch
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:159,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:159,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:161,1
    - Dst: SimpleMatch
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:161,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:161,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:162,1
    - Dst: SimpleMatch
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:162,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:162,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:163,1
    - Dst: SimpleMatch
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:163,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:163,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:164,1
    - Dst: SimpleMatch
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:164,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:164,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:166,1
    - Dst: SimpleMatch
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:166,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:166,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:167,1
    - Dst: SimpleMatch
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:167,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:167,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:168,1
    - Dst: SimpleMatch
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:168,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:168,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:169,1
    - Dst: SimpleMatch
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:169,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:169,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:171,1
    - Dst: SimpleMatch
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:171,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:171,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:172,1
    - Dst: SimpleMatch
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:172,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:172,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:173,1
    - Dst: SimpleMatch
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:173,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:173,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:174,1
    - Dst: SimpleMatch
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:174,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:174,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:175,1
    - Dst: SimpleMatch
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:175,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:175,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 20
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 176
      start: 152
    functionDepth: 0
    functionLinenumber: 152
    functionLinenumberEnd: 176
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-misc_hh.cc
    functionUses: 0
    functionsReached:
    - std::string
    - SimpleMatch
    - BOOST_CHECK_EQUAL
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_SimpleMatch)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: rfc1982LessThan
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:179,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - x
    - y
    argTypes:
    - T
    - T
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 180
      start: 178
    functionDepth: 0
    functionLinenumber: 178
    functionLinenumberEnd: 180
    functionName: rfc1982check
    functionSourceFile: /src/pdns/pdns/recursordist/test-misc_hh.cc
    functionUses: 1
    functionsReached:
    - rfc1982LessThan
    linkageType: ''
    returnType: bool
    signature: bool rfc1982check(T x, T y)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:184,1
    - Dst: rfc1982check
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:184,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:185,1
    - Dst: rfc1982check
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:185,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:186,1
    - Dst: rfc1982check
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:186,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:187,1
    - Dst: rfc1982check
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:187,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:188,1
    - Dst: rfc1982check
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:188,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:189,1
    - Dst: rfc1982check
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:189,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:190,1
    - Dst: rfc1982check
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:190,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:191,1
    - Dst: rfc1982check
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:191,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:192,1
    - Dst: rfc1982check
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:192,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:193,1
    - Dst: rfc1982check
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:193,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:195,1
    - Dst: rfc1982check
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:195,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:196,1
    - Dst: rfc1982check
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:196,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:197,1
    - Dst: rfc1982check
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:197,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:199,1
    - Dst: rfc1982check
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:199,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:200,1
    - Dst: rfc1982check
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:200,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:201,1
    - Dst: rfc1982check
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:201,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 202
      start: 182
    functionDepth: 0
    functionLinenumber: 182
    functionLinenumberEnd: 202
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-misc_hh.cc
    functionUses: 0
    functionsReached:
    - BOOST_CHECK
    - rfc1982check
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_rfc1982LessThan)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:208,1
    - Dst: reverseNameFromIP
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:208,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:209,1
    - Dst: reverseNameFromIP
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:209,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 210
      start: 204
    functionDepth: 0
    functionLinenumber: 204
    functionLinenumberEnd: 210
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-misc_hh.cc
    functionUses: 0
    functionsReached:
    - reverseNameFromIP
    - BOOST_CHECK_EQUAL
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_reverse_name_to_ip)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:216,1
    - Dst: gethostname
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:216,1
    - Dst: std::replace
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:218,1
    - Dst: std::string::begin
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:218,1
    - Dst: std::string::end
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:218,1
    - Dst: getCarbonHostName
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:220,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:222,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:223,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:223,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:223,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 224
      start: 212
    functionDepth: 0
    functionLinenumber: 212
    functionLinenumberEnd: 224
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-misc_hh.cc
    functionUses: 0
    functionsReached:
    - std::string::begin
    - getCarbonHostName
    - std::string::end
    - BOOST_CHECK_EQUAL
    - std::string::size
    - gethostname
    - std::replace
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_getCarbonHostName)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: parseRFC1035CharString
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:234,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:235,1
    - Dst: string::size
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:235,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:236,1
    - Dst: parseRFC1035CharString
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:239,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:240,1
    - Dst: string::size
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:240,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:241,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:243,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:243,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:243,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:244,1
    - Dst: parseRFC1035CharString
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:245,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:246,1
    - Dst: string::size
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:246,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:247,1
    - Dst: parseRFC1035CharString
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:251,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:252,1
    - Dst: string::size
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:252,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:253,1
    - Dst: parseRFC1035CharString
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:257,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:258,1
    - Dst: string::size
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:258,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:259,1
    - Dst: parseRFC1035CharString
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:264,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:265,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:266,1
    - Dst: parseRFC1035CharString
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:271,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:272,1
    - Dst: string::size
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:272,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:273,1
    - Dst: parseRFC1035CharString
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:277,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:278,1
    - Dst: string::size
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:278,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:279,1
    - Dst: parseRFC1035CharString
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:283,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:284,1
    - Dst: string::size
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:284,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:285,1
    - Dst: parseRFC1035CharString
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:290,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:291,1
    - Dst: string::size
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:291,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:292,1
    - Dst: parseRFC1035CharString
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:295,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:296,1
    - Dst: string::size
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:296,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:297,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 53
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 298
      start: 226
    functionDepth: 0
    functionLinenumber: 226
    functionLinenumberEnd: 298
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-misc_hh.cc
    functionUses: 0
    functionsReached:
    - string
    - BOOST_CHECK_EQUAL
    - string::size
    - parseRFC1035CharString
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_parseRFC1035CharString)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: parseRFC1035CharStringRelaxed
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:310,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:311,1
    - Dst: string::size
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:311,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:312,1
    - Dst: parseRFC1035CharStringRelaxed
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:315,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:316,1
    - Dst: string::size
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:316,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:317,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:319,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:319,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:319,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:320,1
    - Dst: parseRFC1035CharStringRelaxed
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:321,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:322,1
    - Dst: string::size
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:322,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:323,1
    - Dst: parseRFC1035CharStringRelaxed
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:327,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:328,1
    - Dst: string::size
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:328,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:329,1
    - Dst: parseRFC1035CharStringRelaxed
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:333,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:334,1
    - Dst: string::size
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:334,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:335,1
    - Dst: parseRFC1035CharStringRelaxed
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:340,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:341,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:342,1
    - Dst: parseRFC1035CharStringRelaxed
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:347,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:348,1
    - Dst: string::size
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:348,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:349,1
    - Dst: parseRFC1035CharStringRelaxed
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:353,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:354,1
    - Dst: string::size
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:354,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:355,1
    - Dst: parseRFC1035CharStringRelaxed
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:359,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:360,1
    - Dst: string::size
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:360,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:361,1
    - Dst: parseRFC1035CharStringRelaxed
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:366,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:367,1
    - Dst: string::size
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:367,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:368,1
    - Dst: parseRFC1035CharStringRelaxed
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:371,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:372,1
    - Dst: string::size
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:372,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:373,1
    - Dst: parseRFC1035CharStringRelaxed
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:379,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:380,1
    - Dst: string::size
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:380,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:381,1
    - Dst: parseRFC1035CharStringRelaxed
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:385,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:386,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:387,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 63
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 388
      start: 300
    functionDepth: 0
    functionLinenumber: 300
    functionLinenumberEnd: 388
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-misc_hh.cc
    functionUses: 0
    functionsReached:
    - parseRFC1035CharStringRelaxed
    - string
    - string::size
    - BOOST_CHECK_EQUAL
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_parseRFC1035CharStringRelaxed)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: parseSVCBValueList
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:396,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:397,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:397,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:397,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:398,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:399,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:400,1
    - Dst: parseSVCBValueList
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:402,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:403,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:403,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:403,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:404,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:405,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:406,1
    - Dst: parseSVCBValueList
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:409,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:410,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:410,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:411,1
    - Dst: parseSVCBValueList
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:413,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:414,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:414,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:415,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:416,1
    - Dst: parseSVCBValueList
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:418,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:419,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:419,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:420,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:421,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:422,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:423,1
    - Dst: parseSVCBValueList
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:425,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:426,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:426,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:427,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:428,1
    - Dst: parseSVCBValueList
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:430,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:431,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:431,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:432,1
    - Dst: parseSVCBValueList
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:434,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:435,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:435,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:436,1
    - Dst: parseSVCBValueList
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:439,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:440,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:440,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:441,1
    - Dst: parseSVCBValueList
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:443,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:444,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:444,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:445,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:446,1
    - Dst: parseSVCBValueList
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:448,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:449,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:449,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:450,1
    - Dst: parseSVCBValueList
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:452,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:453,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:453,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:454,1
    - Dst: parseSVCBValueList
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:457,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:458,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:458,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:459,1
    - Dst: parseSVCBValueList
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:461,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:462,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:462,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:463,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:464,1
    - Dst: parseSVCBValueList
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:466,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:467,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:467,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:468,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:469,1
    - Dst: parseSVCBValueList
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:471,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:472,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:472,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:473,1
    - Dst: parseSVCBValueList
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:475,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:476,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:476,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:477,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 64
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 478
      start: 390
    functionDepth: 0
    functionLinenumber: 390
    functionLinenumberEnd: 478
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-misc_hh.cc
    functionUses: 0
    functionsReached:
    - vector::size
    - BOOST_CHECK_EQUAL
    - parseSVCBValueList
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_parseSVCBValueList)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeBytesFromHex
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:481,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:482,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:484,1
    - Dst: makeBytesFromHex
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:484,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:486,1
    - Dst: makeBytesFromHex
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:486,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 487
      start: 480
    functionDepth: 0
    functionLinenumber: 480
    functionLinenumberEnd: 487
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-misc_hh.cc
    functionUses: 0
    functionsReached:
    - makeBytesFromHex
    - BOOST_CHECK_THROW
    - BOOST_CHECK_EQUAL
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_makeBytesFromHex)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeHexDump
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:490,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:492,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 493
      start: 489
    functionDepth: 0
    functionLinenumber: 489
    functionLinenumberEnd: 493
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-misc_hh.cc
    functionUses: 0
    functionsReached:
    - makeHexDump
    - BOOST_CHECK_EQUAL
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_makeHexDump)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: cleanSlashes
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:498,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:501,1
    - Dst: cleanSlashesWrapper
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:501,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:502,1
    - Dst: cleanSlashesWrapper
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:502,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:503,1
    - Dst: cleanSlashesWrapper
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:503,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:504,1
    - Dst: cleanSlashesWrapper
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:504,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:505,1
    - Dst: cleanSlashesWrapper
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:505,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:506,1
    - Dst: cleanSlashesWrapper
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:506,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:507,1
    - Dst: cleanSlashesWrapper
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:507,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:508,1
    - Dst: cleanSlashesWrapper
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:508,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:509,1
    - Dst: cleanSlashesWrapper
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:509,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:510,1
    - Dst: cleanSlashesWrapper
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:510,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:511,1
    - Dst: cleanSlashesWrapper
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:511,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 512
      start: 495
    functionDepth: 0
    functionLinenumber: 495
    functionLinenumberEnd: 512
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-misc_hh.cc
    functionUses: 0
    functionsReached:
    - cleanSlashesWrapper
    - cleanSlashes
    - BOOST_CHECK_EQUAL
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_CleanSlashes)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:516,1
    - Dst: pdns::checked_stoi<uint8_t>
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:516,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:518,1
    - Dst: pdns::checked_stoi<uint8_t>
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:518,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:519,1
    - Dst: pdns::checked_stoi<uint8_t>
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:519,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:520,1
    - Dst: pdns::checked_stoi<uint8_t>
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:520,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:521,1
    - Dst: pdns::checked_stoi<uint8_t>
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:521,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:523,1
    - Dst: pdns::checked_stoi<int8_t>
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:523,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:524,1
    - Dst: pdns::checked_stoi<int8_t>
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:524,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:525,1
    - Dst: pdns::checked_stoi<int8_t>
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:525,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:526,1
    - Dst: pdns::checked_stoi<int8_t>
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:526,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 527
      start: 514
    functionDepth: 0
    functionLinenumber: 514
    functionLinenumberEnd: 527
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-misc_hh.cc
    functionUses: 0
    functionsReached:
    - pdns::checked_stoi<uint8_t>
    - BOOST_CHECK_THROW
    - BOOST_CHECK_EQUAL
    - pdns::checked_stoi<int8_t>
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_checked_stoi)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:531,1
    - Dst: pdns::checked_stoi_nonzero<int8_t>
      Src: /src/pdns/pdns/recursordist/test-misc_hh.cc:531,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 532
      start: 529
    functionDepth: 0
    functionLinenumber: 529
    functionLinenumberEnd: 532
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-misc_hh.cc
    functionUses: 0
    functionsReached:
    - BOOST_CHECK_THROW
    - pdns::checked_stoi_nonzero<int8_t>
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_checked_stoi_nonzero)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' reason_'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 46
    functionDepth: 0
    functionLinenumber: 46
    functionLinenumberEnd: 47
    functionName: LWResException::LWResException
    functionSourceFile: /src/pdns/pdns/recursordist/lwres.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void LWResException(const string& reason_)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - res
    argTypes:
    - Result
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 67
    functionDepth: 0
    functionLinenumber: 67
    functionLinenumberEnd: 70
    functionName: LWResult::isLimitError
    functionSourceFile: /src/pdns/pdns/recursordist/lwres.hh
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool isLimitError(Result res)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 49
    functionDepth: 0
    functionLinenumber: 49
    functionLinenumberEnd: 49
    functionName: QType::QType
    functionSourceFile: /src/pdns/pdns/recursordist/qtype.hh
    functionUses: 13
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void QType(uint16_t qtype = 0)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 53
    functionDepth: 0
    functionLinenumber: 53
    functionLinenumberEnd: 55
    functionName: operator uint16_t() const
    functionSourceFile: /src/pdns/pdns/recursordist/qtype.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void operator uint16_t() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 58
    functionDepth: 0
    functionLinenumber: 58
    functionLinenumberEnd: 61
    functionName: QType::getCode
    functionSourceFile: /src/pdns/pdns/recursordist/qtype.hh
    functionUses: 33
    functionsReached: []
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t getCode() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: QType::getCode
      Src: /src/pdns/pdns/recursordist/qtype.hh:173,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - qtype
    argTypes:
    - QType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 174
      start: 172
    functionDepth: 0
    functionLinenumber: 172
    functionLinenumberEnd: 174
    functionName: operator()(QType qtype) const noexcept
    functionSourceFile: /src/pdns/pdns/recursordist/qtype.hh
    functionUses: 0
    functionsReached:
    - QType::getCode
    linkageType: ''
    returnType: std::size_t
    signature: std::size_t operator()(QType qtype) const noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: QType::getCode
      Src: /src/pdns/pdns/recursordist/qtype.hh:173,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - qtype
    argTypes:
    - QType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 174
      start: 172
    functionDepth: 0
    functionLinenumber: 172
    functionLinenumberEnd: 174
    functionName: operator()(QType qtype) const noexcept
    functionSourceFile: /src/pdns/pdns/recursordist/qtype.hh
    functionUses: 0
    functionsReached:
    - QType::getCode
    linkageType: ''
    returnType: std::size_t
    signature: std::size_t operator()(QType qtype) const noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: toString
      Src: /src/pdns/pdns/recursordist/qtype.hh:180,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' stream'
    - ' qtype'
    argTypes:
    - std::ostream
    - QType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 181
      start: 178
    functionDepth: 0
    functionLinenumber: 178
    functionLinenumberEnd: 181
    functionName: '& operator<<(std::ostream& stream, const QType& qtype)'
    functionSourceFile: /src/pdns/pdns/recursordist/qtype.hh
    functionUses: 0
    functionsReached:
    - toString
    linkageType: ''
    returnType: std::ostream
    signature: std::ostream & operator<<(std::ostream& stream, const QType& qtype)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: QType::getCode
      Src: /src/pdns/pdns/recursordist/qtype.hh:185,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - qtype
    argTypes:
    - QType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 186
      start: 184
    functionDepth: 0
    functionLinenumber: 184
    functionLinenumberEnd: 186
    functionName: hash_value
    functionSourceFile: /src/pdns/pdns/recursordist/qtype.hh
    functionUses: 0
    functionsReached:
    - QType::getCode
    linkageType: ''
    returnType: size_t
    signature: size_t hash_value(const QType qtype)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 190
      start: 190
    functionDepth: 0
    functionLinenumber: 190
    functionLinenumberEnd: 190
    functionName: QClass
    functionSourceFile: /src/pdns/pdns/recursordist/qtype.hh
    functionUses: 9
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void QClass(uint16_t code = 0)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 195
      start: 193
    functionDepth: 0
    functionLinenumber: 193
    functionLinenumberEnd: 195
    functionName: operator uint16_t() const
    functionSourceFile: /src/pdns/pdns/recursordist/qtype.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void operator uint16_t() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 199
      start: 196
    functionDepth: 0
    functionLinenumber: 196
    functionLinenumberEnd: 199
    functionName: getCode
    functionSourceFile: /src/pdns/pdns/recursordist/qtype.hh
    functionUses: 114
    functionsReached: []
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t getCode() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: QClass::toString
      Src: /src/pdns/pdns/recursordist/qtype.hh:218,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' s'
    - qclass
    argTypes:
    - std::ostream
    - QClass
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 219
      start: 216
    functionDepth: 0
    functionLinenumber: 216
    functionLinenumberEnd: 219
    functionName: '& operator<<(std::ostream& s, QClass qclass)'
    functionSourceFile: /src/pdns/pdns/recursordist/qtype.hh
    functionUses: 0
    functionsReached:
    - QClass::toString
    linkageType: ''
    returnType: std::ostream
    signature: std::ostream & operator<<(std::ostream& s, QClass qclass)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 113
      start: 110
    functionDepth: 0
    functionLinenumber: 110
    functionLinenumberEnd: 113
    functionName: DNSFilterEngine::Policy
    functionSourceFile: /src/pdns/pdns/recursordist/filterpo.hh
    functionUses: 13
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Policy()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/filterpo.hh:116,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/filterpo.hh:118,1
    - Dst: DNSFilterEngine::setCustom
      Src: /src/pdns/pdns/recursordist/filterpo.hh:119,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - kind
    - type
    argTypes:
    - PolicyKind
    - PolicyType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 115
    functionDepth: 1
    functionLinenumber: 115
    functionLinenumberEnd: 121
    functionName: DNSFilterEngine::Policy
    functionSourceFile: /src/pdns/pdns/recursordist/filterpo.hh
    functionUses: 13
    functionsReached:
    - empty
    - DNSFilterEngine::setCustom
    - std::move
    linkageType: ''
    returnType: void
    signature: void Policy(PolicyKind kind, PolicyType type, int32_t ttl = 0, std::shared_ptr<PolicyZoneData>
      data = nullptr, const std::vector<std::shared_ptr<const DNSRecordContent>>&
      custom = {})
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 123
    functionDepth: 0
    functionLinenumber: 123
    functionLinenumberEnd: 123
    functionName: ~Policy()
    functionSourceFile: /src/pdns/pdns/recursordist/filterpo.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~Policy()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: make_unique<CustomData>
      Src: /src/pdns/pdns/recursordist/filterpo.hh:127,1
    - Dst: make_unique<HitData>
      Src: /src/pdns/pdns/recursordist/filterpo.hh:128,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - Policy
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 133
      start: 125
    functionDepth: 0
    functionLinenumber: 125
    functionLinenumberEnd: 133
    functionName: DNSFilterEngine::Policy
    functionSourceFile: /src/pdns/pdns/recursordist/filterpo.hh
    functionUses: 13
    functionsReached:
    - make_unique<HitData>
    - make_unique<CustomData>
    linkageType: ''
    returnType: void
    signature: void Policy(const Policy& rhs)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: make_unique<CustomData>
      Src: /src/pdns/pdns/recursordist/filterpo.hh:139,1
    - Dst: make_unique<HitData>
      Src: /src/pdns/pdns/recursordist/filterpo.hh:143,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - Policy
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 153
      start: 135
    functionDepth: 0
    functionLinenumber: 135
    functionLinenumberEnd: 153
    functionName: '& operator=(const Policy& rhs)'
    functionSourceFile: /src/pdns/pdns/recursordist/filterpo.hh
    functionUses: 0
    functionsReached:
    - make_unique<HitData>
    - make_unique<CustomData>
    linkageType: ''
    returnType: Policy
    signature: Policy & operator=(const Policy& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 155
    functionDepth: 0
    functionLinenumber: 155
    functionLinenumberEnd: 155
    functionName: DNSFilterEngine::Policy
    functionSourceFile: /src/pdns/pdns/recursordist/filterpo.hh
    functionUses: 13
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Policy(Policy&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 156
      start: 156
    functionDepth: 0
    functionLinenumber: 156
    functionLinenumberEnd: 156
    functionName: '& operator=(Policy&&)'
    functionSourceFile: /src/pdns/pdns/recursordist/filterpo.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Policy
    signature: Policy & operator=(Policy&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 2
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - Policy
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 161
      start: 158
    functionDepth: 0
    functionLinenumber: 158
    functionLinenumberEnd: 161
    functionName: operator==(const Policy& rhs) const
    functionSourceFile: /src/pdns/pdns/recursordist/filterpo.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool operator==(const Policy& rhs) const
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 170
      start: 163
    functionDepth: 0
    functionLinenumber: 163
    functionLinenumberEnd: 170
    functionName: '& getName() const'
    functionSourceFile: /src/pdns/pdns/recursordist/filterpo.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string & getName() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<PolicyZoneData>
      Src: /src/pdns/pdns/recursordist/filterpo.hh:178,1
    - Dst: std::make_shared<PolicyZoneData>
      Src: /src/pdns/pdns/recursordist/filterpo.hh:181,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/filterpo.hh:184,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - ' name'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 185
      start: 172
    functionDepth: 0
    functionLinenumber: 172
    functionLinenumberEnd: 185
    functionName: DNSFilterEngine::setName
    functionSourceFile: /src/pdns/pdns/recursordist/filterpo.hh
    functionUses: 0
    functionsReached:
    - std::make_shared<PolicyZoneData>
    - std::move
    linkageType: ''
    returnType: void
    signature: void setName(const std::string& name)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 194
      start: 187
    functionDepth: 0
    functionLinenumber: 187
    functionLinenumberEnd: 194
    functionName: '& getTags() const'
    functionSourceFile: /src/pdns/pdns/recursordist/filterpo.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::unordered_set<std::string>
    signature: std::unordered_set<std::string> & getTags() const
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 203
      start: 196
    functionDepth: 0
    functionLinenumber: 196
    functionLinenumberEnd: 203
    functionName: DNSFilterEngine::getPriority
    functionSourceFile: /src/pdns/pdns/recursordist/filterpo.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Priority
    signature: Priority getPriority() const
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 211
      start: 205
    functionDepth: 0
    functionLinenumber: 205
    functionLinenumberEnd: 211
    functionName: DNSFilterEngine::policyOverridesGettag
    functionSourceFile: /src/pdns/pdns/recursordist/filterpo.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool policyOverridesGettag() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: d_soa::getContent
      Src: /src/pdns/pdns/recursordist/filterpo.hh:215,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - ' rec'
    argTypes:
    - DNSRecord
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 220
      start: 213
    functionDepth: 0
    functionLinenumber: 213
    functionLinenumberEnd: 220
    functionName: DNSFilterEngine::getSOA
    functionSourceFile: /src/pdns/pdns/recursordist/filterpo.hh
    functionUses: 0
    functionsReached:
    - d_soa::getContent
    linkageType: ''
    returnType: bool
    signature: bool getSOA(DNSRecord& rec) const
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 228
      start: 222
    functionDepth: 0
    functionLinenumber: 222
    functionLinenumberEnd: 228
    functionName: DNSFilterEngine::includeSOA
    functionSourceFile: /src/pdns/pdns/recursordist/filterpo.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool includeSOA() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 233
      start: 230
    functionDepth: 0
    functionLinenumber: 230
    functionLinenumberEnd: 233
    functionName: DNSFilterEngine::wasHit
    functionSourceFile: /src/pdns/pdns/recursordist/filterpo.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool wasHit() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DNSFilterEngine::includeSOA
      Src: /src/pdns/pdns/recursordist/filterpo.hh:259,1
    - Dst: DNSFilterEngine::getSOA
      Src: /src/pdns/pdns/recursordist/filterpo.hh:259,1
    - Dst: emplace_back
      Src: /src/pdns/pdns/recursordist/filterpo.hh:261,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - ' ret'
    argTypes:
    - vector<DNSRecord>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 263
      start: 256
    functionDepth: 1
    functionLinenumber: 256
    functionLinenumberEnd: 263
    functionName: DNSFilterEngine::addSOAtoRPZResult
    functionSourceFile: /src/pdns/pdns/recursordist/filterpo.hh
    functionUses: 0
    functionsReached:
    - DNSFilterEngine::getSOA
    - DNSFilterEngine::includeSOA
    - emplace_back
    linkageType: ''
    returnType: void
    signature: void addSOAtoRPZResult(vector<DNSRecord>& ret) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: make_unique<CustomData>
      Src: /src/pdns/pdns/recursordist/filterpo.hh:267,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' custom'
    argTypes:
    - CustomData
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 268
      start: 265
    functionDepth: 0
    functionLinenumber: 265
    functionLinenumberEnd: 268
    functionName: DNSFilterEngine::setCustom
    functionSourceFile: /src/pdns/pdns/recursordist/filterpo.hh
    functionUses: 1
    functionsReached:
    - make_unique<CustomData>
    linkageType: ''
    returnType: void
    signature: void setCustom(const CustomData& custom)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DNSFilterEngine::size
      Src: /src/pdns/pdns/recursordist/filterpo.hh:273,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 276
      start: 270
    functionDepth: 0
    functionLinenumber: 270
    functionLinenumberEnd: 276
    functionName: DNSFilterEngine::customRecordsSize
    functionSourceFile: /src/pdns/pdns/recursordist/filterpo.hh
    functionUses: 0
    functionsReached:
    - DNSFilterEngine::size
    linkageType: ''
    returnType: size_t
    signature: size_t customRecordsSize() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: make_unique<HitData>
      Src: /src/pdns/pdns/recursordist/filterpo.hh:281,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' name'
    - ' hit'
    argTypes:
    - DNSName
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 282
      start: 278
    functionDepth: 0
    functionLinenumber: 278
    functionLinenumberEnd: 282
    functionName: DNSFilterEngine::setHitData
    functionSourceFile: /src/pdns/pdns/recursordist/filterpo.hh
    functionUses: 0
    functionsReached:
    - make_unique<HitData>
    linkageType: ''
    returnType: void
    signature: void setHitData(const DNSName& name, const string& hit)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/filterpo.hh:286,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 287
      start: 284
    functionDepth: 0
    functionLinenumber: 284
    functionLinenumberEnd: 287
    functionName: DNSFilterEngine::getTrigger
    functionSourceFile: /src/pdns/pdns/recursordist/filterpo.hh
    functionUses: 0
    functionsReached:
    - DNSName
    linkageType: ''
    returnType: DNSName
    signature: DNSName getTrigger() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 292
      start: 289
    functionDepth: 0
    functionLinenumber: 289
    functionLinenumberEnd: 292
    functionName: DNSFilterEngine::getHit
    functionSourceFile: /src/pdns/pdns/recursordist/filterpo.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string getHit() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<PolicyZoneData>
      Src: /src/pdns/pdns/recursordist/filterpo.hh:302,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 304
      start: 301
    functionDepth: 0
    functionLinenumber: 301
    functionLinenumberEnd: 304
    functionName: DNSFilterEngine::Zone::Zone
    functionSourceFile: /src/pdns/pdns/recursordist/filterpo.hh
    functionUses: 0
    functionsReached:
    - std::make_shared<PolicyZoneData>
    linkageType: ''
    returnType: void
    signature: void Zone()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<PolicyZoneData>
      Src: /src/pdns/pdns/recursordist/filterpo.hh:314,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' other'
    argTypes:
    - Zone
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 318
      start: 307
    functionDepth: 0
    functionLinenumber: 307
    functionLinenumberEnd: 318
    functionName: DNSFilterEngine::Zone::Zone
    functionSourceFile: /src/pdns/pdns/recursordist/filterpo.hh
    functionUses: 0
    functionsReached:
    - std::make_shared<PolicyZoneData>
    linkageType: ''
    returnType: void
    signature: void Zone(const Zone& other)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 320
      start: 320
    functionDepth: 0
    functionLinenumber: 320
    functionLinenumberEnd: 320
    functionName: '& operator=(const Zone&)'
    functionSourceFile: /src/pdns/pdns/recursordist/filterpo.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Zone
    signature: Zone & operator=(const Zone&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 321
      start: 321
    functionDepth: 0
    functionLinenumber: 321
    functionLinenumberEnd: 321
    functionName: '& operator=(Zone&&)'
    functionSourceFile: /src/pdns/pdns/recursordist/filterpo.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Zone
    signature: Zone & operator=(Zone&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 322
      start: 322
    functionDepth: 0
    functionLinenumber: 322
    functionLinenumberEnd: 322
    functionName: DNSFilterEngine::Zone::Zone
    functionSourceFile: /src/pdns/pdns/recursordist/filterpo.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Zone(Zone&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 323
      start: 323
    functionDepth: 0
    functionLinenumber: 323
    functionLinenumberEnd: 323
    functionName: ~Zone()
    functionSourceFile: /src/pdns/pdns/recursordist/filterpo.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~Zone()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSFilterEngine::Zone::clear
      Src: /src/pdns/pdns/recursordist/filterpo.hh:327,1
    - Dst: DNSFilterEngine::Zone::clear
      Src: /src/pdns/pdns/recursordist/filterpo.hh:328,1
    - Dst: DNSFilterEngine::Zone::clear
      Src: /src/pdns/pdns/recursordist/filterpo.hh:329,1
    - Dst: DNSFilterEngine::Zone::clear
      Src: /src/pdns/pdns/recursordist/filterpo.hh:330,1
    - Dst: DNSFilterEngine::Zone::clear
      Src: /src/pdns/pdns/recursordist/filterpo.hh:331,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 332
      start: 325
    functionDepth: 0
    functionLinenumber: 325
    functionLinenumberEnd: 332
    functionName: DNSFilterEngine::Zone::clear
    functionSourceFile: /src/pdns/pdns/recursordist/filterpo.hh
    functionUses: 1
    functionsReached:
    - DNSFilterEngine::Zone::clear
    linkageType: ''
    returnType: void
    signature: void clear()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSFilterEngine::Zone::reserve
      Src: /src/pdns/pdns/recursordist/filterpo.hh:335,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - entriesCount
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 336
      start: 333
    functionDepth: 1
    functionLinenumber: 333
    functionLinenumberEnd: 336
    functionName: DNSFilterEngine::Zone::reserve
    functionSourceFile: /src/pdns/pdns/recursordist/filterpo.hh
    functionUses: 1
    functionsReached:
    - DNSFilterEngine::Zone::reserve
    linkageType: ''
    returnType: void
    signature: void reserve(size_t entriesCount)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' name'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 340
      start: 337
    functionDepth: 0
    functionLinenumber: 337
    functionLinenumberEnd: 340
    functionName: DNSFilterEngine::Zone::setName
    functionSourceFile: /src/pdns/pdns/recursordist/filterpo.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setName(const std::string& name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' domain'
    argTypes:
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 344
      start: 341
    functionDepth: 0
    functionLinenumber: 341
    functionLinenumberEnd: 344
    functionName: DNSFilterEngine::Zone::setDomain
    functionSourceFile: /src/pdns/pdns/recursordist/filterpo.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setDomain(const DNSName& domain)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - serial
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 348
      start: 345
    functionDepth: 0
    functionLinenumber: 345
    functionLinenumberEnd: 348
    functionName: DNSFilterEngine::Zone::setSerial
    functionSourceFile: /src/pdns/pdns/recursordist/filterpo.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setSerial(uint32_t serial)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - refresh
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 352
      start: 349
    functionDepth: 0
    functionLinenumber: 349
    functionLinenumberEnd: 352
    functionName: DNSFilterEngine::Zone::setRefresh
    functionSourceFile: /src/pdns/pdns/recursordist/filterpo.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setRefresh(uint32_t refresh)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/filterpo.hh:355,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - ' tags'
    argTypes:
    - std::unordered_set<std::string>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 356
      start: 353
    functionDepth: 0
    functionLinenumber: 353
    functionLinenumberEnd: 356
    functionName: DNSFilterEngine::Zone::setTags
    functionSourceFile: /src/pdns/pdns/recursordist/filterpo.hh
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void setTags(std::unordered_set<std::string>&& tags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' tags'
    argTypes:
    - std::unordered_set<std::string>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 360
      start: 357
    functionDepth: 0
    functionLinenumber: 357
    functionLinenumberEnd: 360
    functionName: DNSFilterEngine::Zone::setTags
    functionSourceFile: /src/pdns/pdns/recursordist/filterpo.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setTags(const std::unordered_set<std::string>& tags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - flag
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 364
      start: 361
    functionDepth: 0
    functionLinenumber: 361
    functionLinenumberEnd: 364
    functionName: DNSFilterEngine::Zone::setPolicyOverridesGettag
    functionSourceFile: /src/pdns/pdns/recursordist/filterpo.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setPolicyOverridesGettag(bool flag)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - code
    argTypes:
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 368
      start: 365
    functionDepth: 0
    functionLinenumber: 365
    functionLinenumberEnd: 368
    functionName: DNSFilterEngine::Zone::setExtendedErrorCode
    functionSourceFile: /src/pdns/pdns/recursordist/filterpo.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setExtendedErrorCode(uint16_t code)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' extra'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 372
      start: 369
    functionDepth: 0
    functionLinenumber: 369
    functionLinenumberEnd: 372
    functionName: DNSFilterEngine::Zone::setExtendedErrorExtra
    functionSourceFile: /src/pdns/pdns/recursordist/filterpo.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setExtendedErrorExtra(const std::string& extra)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/filterpo.hh:375,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - soa
    argTypes:
    - DNSRecord
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 376
      start: 373
    functionDepth: 0
    functionLinenumber: 373
    functionLinenumberEnd: 376
    functionName: DNSFilterEngine::Zone::setSOA
    functionSourceFile: /src/pdns/pdns/recursordist/filterpo.hh
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void setSOA(DNSRecord soa)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 380
      start: 377
    functionDepth: 0
    functionLinenumber: 377
    functionLinenumberEnd: 380
    functionName: '& getName() const'
    functionSourceFile: /src/pdns/pdns/recursordist/filterpo.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string & getName() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: emplace
      Src: /src/pdns/pdns/recursordist/filterpo.hh:385,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - ' names'
    argTypes:
    - std::unordered_set<DNSName>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 387
      start: 382
    functionDepth: 0
    functionLinenumber: 382
    functionLinenumberEnd: 387
    functionName: DNSFilterEngine::Zone::getQNames
    functionSourceFile: /src/pdns/pdns/recursordist/filterpo.hh
    functionUses: 0
    functionsReached:
    - emplace
    linkageType: ''
    returnType: void
    signature: void getQNames(std::unordered_set<DNSName>& names) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 392
      start: 389
    functionDepth: 0
    functionLinenumber: 389
    functionLinenumberEnd: 392
    functionName: DNSFilterEngine::Zone::getDomain
    functionSourceFile: /src/pdns/pdns/recursordist/filterpo.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: DNSName
    signature: DNSName getDomain() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 397
      start: 394
    functionDepth: 0
    functionLinenumber: 394
    functionLinenumberEnd: 397
    functionName: DNSFilterEngine::Zone::getRefresh
    functionSourceFile: /src/pdns/pdns/recursordist/filterpo.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t getRefresh() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 402
      start: 399
    functionDepth: 0
    functionLinenumber: 399
    functionLinenumberEnd: 402
    functionName: DNSFilterEngine::Zone::getSerial
    functionSourceFile: /src/pdns/pdns/recursordist/filterpo.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t getSerial() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 406
      start: 403
    functionDepth: 0
    functionLinenumber: 403
    functionLinenumberEnd: 406
    functionName: '& getSOA() const'
    functionSourceFile: /src/pdns/pdns/recursordist/filterpo.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: DNSRecord
    signature: DNSRecord & getSOA() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSFilterEngine::Zone::size
      Src: /src/pdns/pdns/recursordist/filterpo.hh:410,1
    - Dst: DNSFilterEngine::Zone::size
      Src: /src/pdns/pdns/recursordist/filterpo.hh:410,1
    - Dst: DNSFilterEngine::Zone::size
      Src: /src/pdns/pdns/recursordist/filterpo.hh:410,1
    - Dst: DNSFilterEngine::Zone::size
      Src: /src/pdns/pdns/recursordist/filterpo.hh:410,1
    - Dst: DNSFilterEngine::Zone::size
      Src: /src/pdns/pdns/recursordist/filterpo.hh:410,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 411
      start: 408
    functionDepth: 0
    functionLinenumber: 408
    functionLinenumberEnd: 411
    functionName: DNSFilterEngine::Zone::size
    functionSourceFile: /src/pdns/pdns/recursordist/filterpo.hh
    functionUses: 1
    functionsReached:
    - DNSFilterEngine::Zone::size
    linkageType: ''
    returnType: size_t
    signature: size_t size() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - flag
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 416
      start: 413
    functionDepth: 0
    functionLinenumber: 413
    functionLinenumberEnd: 416
    functionName: DNSFilterEngine::Zone::setIncludeSOA
    functionSourceFile: /src/pdns/pdns/recursordist/filterpo.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setIncludeSOA(bool flag)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - flag
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 421
      start: 418
    functionDepth: 0
    functionLinenumber: 418
    functionLinenumberEnd: 421
    functionName: DNSFilterEngine::Zone::setIgnoreDuplicates
    functionSourceFile: /src/pdns/pdns/recursordist/filterpo.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setIgnoreDuplicates(bool flag)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/filterpo.hh:445,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 446
      start: 443
    functionDepth: 0
    functionLinenumber: 443
    functionLinenumberEnd: 446
    functionName: DNSFilterEngine::Zone::hasClientPolicies
    functionSourceFile: /src/pdns/pdns/recursordist/filterpo.hh
    functionUses: 0
    functionsReached:
    - empty
    linkageType: ''
    returnType: bool
    signature: bool hasClientPolicies() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/filterpo.hh:449,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 450
      start: 447
    functionDepth: 0
    functionLinenumber: 447
    functionLinenumberEnd: 450
    functionName: DNSFilterEngine::Zone::hasQNamePolicies
    functionSourceFile: /src/pdns/pdns/recursordist/filterpo.hh
    functionUses: 0
    functionsReached:
    - empty
    linkageType: ''
    returnType: bool
    signature: bool hasQNamePolicies() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/filterpo.hh:453,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 454
      start: 451
    functionDepth: 0
    functionLinenumber: 451
    functionLinenumberEnd: 454
    functionName: DNSFilterEngine::Zone::hasNSPolicies
    functionSourceFile: /src/pdns/pdns/recursordist/filterpo.hh
    functionUses: 0
    functionsReached:
    - empty
    linkageType: ''
    returnType: bool
    signature: bool hasNSPolicies() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/filterpo.hh:457,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 458
      start: 455
    functionDepth: 0
    functionLinenumber: 455
    functionLinenumberEnd: 458
    functionName: DNSFilterEngine::Zone::hasNSIPPolicies
    functionSourceFile: /src/pdns/pdns/recursordist/filterpo.hh
    functionUses: 0
    functionsReached:
    - empty
    linkageType: ''
    returnType: bool
    signature: bool hasNSIPPolicies() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/filterpo.hh:461,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 462
      start: 459
    functionDepth: 0
    functionLinenumber: 459
    functionLinenumberEnd: 462
    functionName: DNSFilterEngine::Zone::hasResponsePolicies
    functionSourceFile: /src/pdns/pdns/recursordist/filterpo.hh
    functionUses: 0
    functionsReached:
    - empty
    linkageType: ''
    returnType: bool
    signature: bool hasResponsePolicies() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 466
      start: 463
    functionDepth: 0
    functionLinenumber: 463
    functionLinenumberEnd: 466
    functionName: DNSFilterEngine::Zone::getPriority
    functionSourceFile: /src/pdns/pdns/recursordist/filterpo.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Priority
    signature: Priority getPriority() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - priority
    argTypes:
    - Priority
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 470
      start: 467
    functionDepth: 0
    functionLinenumber: 467
    functionLinenumberEnd: 470
    functionName: DNSFilterEngine::Zone::setPriority
    functionSourceFile: /src/pdns/pdns/recursordist/filterpo.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setPriority(Priority priority)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSFilterEngine::clear
      Src: /src/pdns/pdns/recursordist/filterpo.hh:500,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 502
      start: 497
    functionDepth: 0
    functionLinenumber: 497
    functionLinenumberEnd: 502
    functionName: DNSFilterEngine::clear
    functionSourceFile: /src/pdns/pdns/recursordist/filterpo.hh
    functionUses: 2
    functionsReached:
    - DNSFilterEngine::clear
    linkageType: ''
    returnType: void
    signature: void clear()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSFilterEngine::clear
      Src: /src/pdns/pdns/recursordist/filterpo.hh:505,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 506
      start: 503
    functionDepth: 0
    functionLinenumber: 503
    functionLinenumberEnd: 506
    functionName: DNSFilterEngine::clearZones
    functionSourceFile: /src/pdns/pdns/recursordist/filterpo.hh
    functionUses: 0
    functionsReached:
    - DNSFilterEngine::clear
    linkageType: ''
    returnType: void
    signature: void clearZones()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DNSFilterEngine::size
      Src: /src/pdns/pdns/recursordist/filterpo.hh:510,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - zoneIdx
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 514
      start: 507
    functionDepth: 0
    functionLinenumber: 507
    functionLinenumberEnd: 514
    functionName: DNSFilterEngine::getZone
    functionSourceFile: /src/pdns/pdns/recursordist/filterpo.hh
    functionUses: 1
    functionsReached:
    - DNSFilterEngine::size
    linkageType: ''
    returnType: std::shared_ptr<Zone>
    signature: std::shared_ptr<Zone> getZone(size_t zoneIdx) const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: getName
      Src: /src/pdns/pdns/recursordist/filterpo.hh:518,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - ' name'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 524
      start: 515
    functionDepth: 0
    functionLinenumber: 515
    functionLinenumberEnd: 524
    functionName: DNSFilterEngine::getZone
    functionSourceFile: /src/pdns/pdns/recursordist/filterpo.hh
    functionUses: 1
    functionsReached:
    - getName
    linkageType: ''
    returnType: std::shared_ptr<Zone>
    signature: std::shared_ptr<Zone> getZone(const std::string& name) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: setPriority
      Src: /src/pdns/pdns/recursordist/filterpo.hh:527,1
    - Dst: DNSFilterEngine::size
      Src: /src/pdns/pdns/recursordist/filterpo.hh:527,1
    - Dst: push_back
      Src: /src/pdns/pdns/recursordist/filterpo.hh:528,1
    - Dst: DNSFilterEngine::size
      Src: /src/pdns/pdns/recursordist/filterpo.hh:529,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - ' newZone'
    argTypes:
    - std::shared_ptr<Zone>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 530
      start: 525
    functionDepth: 0
    functionLinenumber: 525
    functionLinenumberEnd: 530
    functionName: DNSFilterEngine::addZone
    functionSourceFile: /src/pdns/pdns/recursordist/filterpo.hh
    functionUses: 6
    functionsReached:
    - push_back
    - setPriority
    - DNSFilterEngine::size
    linkageType: ''
    returnType: size_t
    signature: size_t addZone(const std::shared_ptr<Zone>& newZone)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DNSFilterEngine::assureZones
      Src: /src/pdns/pdns/recursordist/filterpo.hh:534,1
    - Dst: setPriority
      Src: /src/pdns/pdns/recursordist/filterpo.hh:535,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - zoneIdx
    - ' newZone'
    argTypes:
    - size_t
    - std::shared_ptr<Zone>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 538
      start: 531
    functionDepth: 1
    functionLinenumber: 531
    functionLinenumberEnd: 538
    functionName: DNSFilterEngine::setZone
    functionSourceFile: /src/pdns/pdns/recursordist/filterpo.hh
    functionUses: 1
    functionsReached:
    - DNSFilterEngine::assureZones
    - setPriority
    linkageType: ''
    returnType: void
    signature: void setZone(size_t zoneIdx, const std::shared_ptr<Zone>& newZone)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<PolicyZoneData>
      Src: /src/pdns/pdns/recursordist/filterpo.hh:551,1
    - Dst: DNSFilterEngine::getQueryPolicy
      Src: /src/pdns/pdns/recursordist/filterpo.hh:553,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - ' qname'
    - ' discardedPolicies'
    - priority
    argTypes:
    - DNSName
    - std::unordered_map<std::string, bool>
    - Priority
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 555
      start: 548
    functionDepth: 0
    functionLinenumber: 548
    functionLinenumberEnd: 555
    functionName: DNSFilterEngine::getQueryPolicy
    functionSourceFile: /src/pdns/pdns/recursordist/filterpo.hh
    functionUses: 6
    functionsReached:
    - std::make_shared<PolicyZoneData>
    - DNSFilterEngine::getQueryPolicy
    linkageType: ''
    returnType: Policy
    signature: Policy getQueryPolicy(const DNSName& qname, const std::unordered_map<std::string,
      bool>& discardedPolicies, Priority priority) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<PolicyZoneData>
      Src: /src/pdns/pdns/recursordist/filterpo.hh:560,1
    - Dst: DNSFilterEngine::getClientPolicy
      Src: /src/pdns/pdns/recursordist/filterpo.hh:562,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - ' address'
    - ' discardedPolicies'
    - priority
    argTypes:
    - ComboAddress
    - std::unordered_map<std::string, bool>
    - Priority
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 564
      start: 557
    functionDepth: 0
    functionLinenumber: 557
    functionLinenumberEnd: 564
    functionName: DNSFilterEngine::getClientPolicy
    functionSourceFile: /src/pdns/pdns/recursordist/filterpo.hh
    functionUses: 4
    functionsReached:
    - std::make_shared<PolicyZoneData>
    - DNSFilterEngine::getClientPolicy
    linkageType: ''
    returnType: Policy
    signature: Policy getClientPolicy(const ComboAddress& address, const std::unordered_map<std::string,
      bool>& discardedPolicies, Priority priority) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<PolicyZoneData>
      Src: /src/pdns/pdns/recursordist/filterpo.hh:569,1
    - Dst: DNSFilterEngine::getProcessingPolicy
      Src: /src/pdns/pdns/recursordist/filterpo.hh:571,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - ' qname'
    - ' discardedPolicies'
    - priority
    argTypes:
    - DNSName
    - std::unordered_map<std::string, bool>
    - Priority
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 573
      start: 566
    functionDepth: 0
    functionLinenumber: 566
    functionLinenumberEnd: 573
    functionName: DNSFilterEngine::getProcessingPolicy
    functionSourceFile: /src/pdns/pdns/recursordist/filterpo.hh
    functionUses: 3
    functionsReached:
    - std::make_shared<PolicyZoneData>
    - DNSFilterEngine::getProcessingPolicy
    linkageType: ''
    returnType: Policy
    signature: Policy getProcessingPolicy(const DNSName& qname, const std::unordered_map<std::string,
      bool>& discardedPolicies, Priority priority) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<PolicyZoneData>
      Src: /src/pdns/pdns/recursordist/filterpo.hh:578,1
    - Dst: DNSFilterEngine::getProcessingPolicy
      Src: /src/pdns/pdns/recursordist/filterpo.hh:580,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - ' address'
    - ' discardedPolicies'
    - priority
    argTypes:
    - ComboAddress
    - std::unordered_map<std::string, bool>
    - Priority
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 582
      start: 575
    functionDepth: 0
    functionLinenumber: 575
    functionLinenumberEnd: 582
    functionName: DNSFilterEngine::getProcessingPolicy
    functionSourceFile: /src/pdns/pdns/recursordist/filterpo.hh
    functionUses: 4
    functionsReached:
    - std::make_shared<PolicyZoneData>
    - DNSFilterEngine::getProcessingPolicy
    linkageType: ''
    returnType: Policy
    signature: Policy getProcessingPolicy(const ComboAddress& address, const std::unordered_map<std::string,
      bool>& discardedPolicies, Priority priority) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<PolicyZoneData>
      Src: /src/pdns/pdns/recursordist/filterpo.hh:587,1
    - Dst: DNSFilterEngine::getPostPolicy
      Src: /src/pdns/pdns/recursordist/filterpo.hh:589,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - ' records'
    - ' discardedPolicies'
    - priority
    argTypes:
    - vector<DNSRecord>
    - std::unordered_map<std::string, bool>
    - Priority
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 591
      start: 584
    functionDepth: 0
    functionLinenumber: 584
    functionLinenumberEnd: 591
    functionName: DNSFilterEngine::getPostPolicy
    functionSourceFile: /src/pdns/pdns/recursordist/filterpo.hh
    functionUses: 3
    functionsReached:
    - std::make_shared<PolicyZoneData>
    - DNSFilterEngine::getPostPolicy
    linkageType: ''
    returnType: Policy
    signature: Policy getPostPolicy(const vector<DNSRecord>& records, const std::unordered_map<std::string,
      bool>& discardedPolicies, Priority priority) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSFilterEngine::size
      Src: /src/pdns/pdns/recursordist/filterpo.hh:595,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 596
      start: 593
    functionDepth: 0
    functionLinenumber: 593
    functionLinenumberEnd: 596
    functionName: DNSFilterEngine::size
    functionSourceFile: /src/pdns/pdns/recursordist/filterpo.hh
    functionUses: 5
    functionsReached:
    - DNSFilterEngine::size
    linkageType: ''
    returnType: size_t
    signature: size_t size() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::rust::settings::rec::parse_yaml_string
      Src: /src/pdns/pdns/recursordist/test-settings.cc:19,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:22,1
    - Dst: auto::to_yaml_string
      Src: /src/pdns/pdns/recursordist/test-settings.cc:25,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:27,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-settings.cc:27,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 28
      start: 16
    functionDepth: 0
    functionLinenumber: 16
    functionLinenumberEnd: 28
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-settings.cc
    functionUses: 0
    functionsReached:
    - auto::to_yaml_string
    - std::string
    - pdns::rust::settings::rec::parse_yaml_string
    - BOOST_CHECK_EQUAL
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_rust_empty)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/recursordist/test-settings.cc:33,1
    - Dst: pdns::rust::settings::rec::parse_yaml_string
      Src: /src/pdns/pdns/recursordist/test-settings.cc:33,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 34
      start: 30
    functionDepth: 0
    functionLinenumber: 30
    functionLinenumberEnd: 34
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-settings.cc
    functionUses: 0
    functionsReached:
    - pdns::rust::settings::rec::parse_yaml_string
    - BOOST_CHECK_THROW
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_rust_syntaxerror)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/recursordist/test-settings.cc:39,1
    - Dst: pdns::rust::settings::rec::parse_yaml_string
      Src: /src/pdns/pdns/recursordist/test-settings.cc:39,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 36
    functionDepth: 0
    functionLinenumber: 36
    functionLinenumberEnd: 40
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-settings.cc
    functionUses: 0
    functionsReached:
    - pdns::rust::settings::rec::parse_yaml_string
    - BOOST_CHECK_THROW
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_rust_unknown_section)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/recursordist/test-settings.cc:45,1
    - Dst: pdns::rust::settings::rec::parse_yaml_string
      Src: /src/pdns/pdns/recursordist/test-settings.cc:45,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 42
    functionDepth: 0
    functionLinenumber: 42
    functionLinenumberEnd: 46
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-settings.cc
    functionUses: 0
    functionsReached:
    - pdns::rust::settings::rec::parse_yaml_string
    - BOOST_CHECK_THROW
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_rust_unknown_field)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::rust::settings::rec::parse_yaml_string
      Src: /src/pdns/pdns/recursordist/test-settings.cc:79,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:80,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:81,1
    - Dst: auto::incoming::allow_from::size
      Src: /src/pdns/pdns/recursordist/test-settings.cc:81,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:82,1
    - Dst: auto::recursor::auth_zones::size
      Src: /src/pdns/pdns/recursordist/test-settings.cc:82,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:83,1
    - Dst: auto::recursor::forward_zones::size
      Src: /src/pdns/pdns/recursordist/test-settings.cc:83,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:84,1
    - Dst: forwarders::size
      Src: /src/pdns/pdns/recursordist/test-settings.cc:84,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:85,1
    - Dst: auto::recursor::forward_zones_recurse::size
      Src: /src/pdns/pdns/recursordist/test-settings.cc:85,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:86,1
    - Dst: forwarders::size
      Src: /src/pdns/pdns/recursordist/test-settings.cc:86,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-settings.cc:87,1
    - Dst: auto::to_yaml_string
      Src: /src/pdns/pdns/recursordist/test-settings.cc:88,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:90,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-settings.cc:90,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 48
    functionDepth: 0
    functionLinenumber: 48
    functionLinenumberEnd: 91
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-settings.cc
    functionUses: 0
    functionsReached:
    - auto::recursor::forward_zones::size
    - BOOST_CHECK_EQUAL
    - forwarders::size
    - auto::recursor::forward_zones_recurse::size
    - auto::incoming::allow_from::size
    - auto::to_yaml_string
    - std::string
    - BOOST_CHECK
    - pdns::rust::settings::rec::parse_yaml_string
    - auto::recursor::auth_zones::size
    - BOOST_REQUIRE_EQUAL
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_rust_parse)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/recursordist/test-settings.cc:100,1
    - Dst: pdns::rust::settings::rec::parse_yaml_string
      Src: /src/pdns/pdns/recursordist/test-settings.cc:101,1
    - Dst: auto::to_yaml_string
      Src: /src/pdns/pdns/recursordist/test-settings.cc:102,1
    - Dst: auto::validate
      Src: /src/pdns/pdns/recursordist/test-settings.cc:103,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 104
      start: 93
    functionDepth: 0
    functionLinenumber: 93
    functionLinenumberEnd: 104
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-settings.cc
    functionUses: 0
    functionsReached:
    - auto::to_yaml_string
    - pdns::rust::settings::rec::parse_yaml_string
    - auto::validate
    - BOOST_CHECK_THROW
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_rust_validation_with_error1)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::rust::settings::rec::parse_yaml_string
      Src: /src/pdns/pdns/recursordist/test-settings.cc:117,1
    - Dst: auto::to_yaml_string
      Src: /src/pdns/pdns/recursordist/test-settings.cc:118,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/recursordist/test-settings.cc:119,1
    - Dst: auto::validate
      Src: /src/pdns/pdns/recursordist/test-settings.cc:119,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 106
    functionDepth: 0
    functionLinenumber: 106
    functionLinenumberEnd: 120
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-settings.cc
    functionUses: 0
    functionsReached:
    - auto::to_yaml_string
    - pdns::rust::settings::rec::parse_yaml_string
    - auto::validate
    - BOOST_CHECK_THROW
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_rust_validation_with_error2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/recursordist/test-settings.cc:132,1
    - Dst: pdns::rust::settings::rec::parse_yaml_string
      Src: /src/pdns/pdns/recursordist/test-settings.cc:133,1
    - Dst: auto::to_yaml_string
      Src: /src/pdns/pdns/recursordist/test-settings.cc:134,1
    - Dst: auto::validate
      Src: /src/pdns/pdns/recursordist/test-settings.cc:135,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 136
      start: 122
    functionDepth: 0
    functionLinenumber: 122
    functionLinenumberEnd: 136
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-settings.cc
    functionUses: 0
    functionsReached:
    - auto::to_yaml_string
    - pdns::rust::settings::rec::parse_yaml_string
    - auto::validate
    - BOOST_CHECK_THROW
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_rust_validation_with_error3)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/recursordist/test-settings.cc:146,1
    - Dst: pdns::rust::settings::rec::parse_yaml_string
      Src: /src/pdns/pdns/recursordist/test-settings.cc:147,1
    - Dst: auto::to_yaml_string
      Src: /src/pdns/pdns/recursordist/test-settings.cc:148,1
    - Dst: auto::validate
      Src: /src/pdns/pdns/recursordist/test-settings.cc:149,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 150
      start: 138
    functionDepth: 0
    functionLinenumber: 138
    functionLinenumberEnd: 150
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-settings.cc
    functionUses: 0
    functionsReached:
    - auto::to_yaml_string
    - pdns::rust::settings::rec::parse_yaml_string
    - auto::validate
    - BOOST_CHECK_THROW
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_rust_validation_with_error4)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: boost::format
      Src: /src/pdns/pdns/recursordist/test-settings.cc:169,1
    - Dst: BOOST_CHECK_NO_THROW
      Src: /src/pdns/pdns/recursordist/test-settings.cc:170,1
    - Dst: pdns::rust::settings::rec::parse_yaml_string
      Src: /src/pdns/pdns/recursordist/test-settings.cc:171,1
    - Dst: auto::str
      Src: /src/pdns/pdns/recursordist/test-settings.cc:171,1
    - Dst: auto::validate
      Src: /src/pdns/pdns/recursordist/test-settings.cc:172,1
    - Dst: boost::format
      Src: /src/pdns/pdns/recursordist/test-settings.cc:184,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/recursordist/test-settings.cc:185,1
    - Dst: pdns::rust::settings::rec::parse_yaml_string
      Src: /src/pdns/pdns/recursordist/test-settings.cc:186,1
    - Dst: auto::str
      Src: /src/pdns/pdns/recursordist/test-settings.cc:186,1
    - Dst: auto::to_yaml_string
      Src: /src/pdns/pdns/recursordist/test-settings.cc:187,1
    - Dst: auto::validate
      Src: /src/pdns/pdns/recursordist/test-settings.cc:188,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 190
      start: 152
    functionDepth: 0
    functionLinenumber: 152
    functionLinenumberEnd: 190
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-settings.cc
    functionUses: 0
    functionsReached:
    - auto::validate
    - auto::to_yaml_string
    - auto::str
    - BOOST_CHECK_THROW
    - boost::format
    - BOOST_CHECK_NO_THROW
    - pdns::rust::settings::rec::parse_yaml_string
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_rust_validation_with_error5)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_CHECK_NO_THROW
      Src: /src/pdns/pdns/recursordist/test-settings.cc:197,1
    - Dst: pdns::rust::settings::rec::parse_yaml_string
      Src: /src/pdns/pdns/recursordist/test-settings.cc:198,1
    - Dst: auto::validate
      Src: /src/pdns/pdns/recursordist/test-settings.cc:199,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 201
      start: 192
    functionDepth: 0
    functionLinenumber: 192
    functionLinenumberEnd: 201
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-settings.cc
    functionUses: 0
    functionsReached:
    - BOOST_CHECK_NO_THROW
    - pdns::rust::settings::rec::parse_yaml_string
    - auto::validate
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_rust_validation_no_error)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: rust::Vec::emplace_back
      Src: /src/pdns/pdns/recursordist/test-settings.cc:207,1
    - Dst: rust::Vec::emplace_back
      Src: /src/pdns/pdns/recursordist/test-settings.cc:208,1
    - Dst: pdns::rust::settings::rec::forward_zones_to_yaml_string
      Src: /src/pdns/pdns/recursordist/test-settings.cc:210,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:223,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-settings.cc:223,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 224
      start: 203
    functionDepth: 0
    functionLinenumber: 203
    functionLinenumberEnd: 224
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-settings.cc
    functionUses: 0
    functionsReached:
    - pdns::rust::settings::rec::forward_zones_to_yaml_string
    - rust::Vec::emplace_back
    - std::string
    - BOOST_CHECK_EQUAL
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_rust_forwardzones_to_yaml)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mkstemp
      Src: /src/pdns/pdns/recursordist/test-settings.cc:247,1
    - Dst: std::string::data
      Src: /src/pdns/pdns/recursordist/test-settings.cc:247,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/recursordist/test-settings.cc:248,1
    - Dst: pdns::UniqueFilePtr
      Src: /src/pdns/pdns/recursordist/test-settings.cc:249,1
    - Dst: fdopen
      Src: /src/pdns/pdns/recursordist/test-settings.cc:249,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/recursordist/test-settings.cc:250,1
    - Dst: fwrite
      Src: /src/pdns/pdns/recursordist/test-settings.cc:251,1
    - Dst: std::string::data
      Src: /src/pdns/pdns/recursordist/test-settings.cc:251,1
    - Dst: std::string::length
      Src: /src/pdns/pdns/recursordist/test-settings.cc:251,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/test-settings.cc:251,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/recursordist/test-settings.cc:252,1
    - Dst: std::string::length
      Src: /src/pdns/pdns/recursordist/test-settings.cc:252,1
    - Dst: pdns::settings::rec::oldStyleForwardsFileToBridgeStruct
      Src: /src/pdns/pdns/recursordist/test-settings.cc:256,1
    - Dst: unlink
      Src: /src/pdns/pdns/recursordist/test-settings.cc:257,1
    - Dst: std::string::data
      Src: /src/pdns/pdns/recursordist/test-settings.cc:257,1
    - Dst: pdns::rust::settings::rec::forward_zones_to_yaml_string
      Src: /src/pdns/pdns/recursordist/test-settings.cc:259,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:260,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-settings.cc:260,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 261
      start: 226
    functionDepth: 0
    functionLinenumber: 226
    functionLinenumberEnd: 261
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-settings.cc
    functionUses: 0
    functionsReached:
    - std::string::length
    - mkstemp
    - pdns::rust::settings::rec::forward_zones_to_yaml_string
    - auto::get
    - std::string::data
    - BOOST_CHECK_EQUAL
    - unlink
    - fwrite
    - BOOST_REQUIRE
    - pdns::UniqueFilePtr
    - fdopen
    - std::string
    - pdns::settings::rec::oldStyleForwardsFileToBridgeStruct
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_rust_parse_forwardzones_to_yaml)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::rust::settings::rec::parse_yaml_string
      Src: /src/pdns/pdns/recursordist/test-settings.cc:266,1
    - Dst: dnsdist::crypto::authenticated::Nonce::merge
      Src: /src/pdns/pdns/recursordist/test-settings.cc:268,1
    - Dst: auto::to_yaml_string
      Src: /src/pdns/pdns/recursordist/test-settings.cc:269,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:270,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-settings.cc:270,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 271
      start: 263
    functionDepth: 1
    functionLinenumber: 263
    functionLinenumberEnd: 271
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-settings.cc
    functionUses: 0
    functionsReached:
    - BOOST_CHECK_EQUAL
    - dnsdist::crypto::authenticated::Nonce::merge
    - auto::to_yaml_string
    - std::string
    - pdns::rust::settings::rec::parse_yaml_string
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_rust_merge_defaults)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::rust::settings::rec::parse_yaml_string
      Src: /src/pdns/pdns/recursordist/test-settings.cc:276,1
    - Dst: pdns::rust::settings::rec::parse_yaml_string
      Src: /src/pdns/pdns/recursordist/test-settings.cc:277,1
    - Dst: dnsdist::crypto::authenticated::Nonce::merge
      Src: /src/pdns/pdns/recursordist/test-settings.cc:289,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:291,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-settings.cc:291,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:292,1
    - Dst: auto::recursor::forward_zones::size
      Src: /src/pdns/pdns/recursordist/test-settings.cc:292,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 293
      start: 273
    functionDepth: 1
    functionLinenumber: 273
    functionLinenumberEnd: 293
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-settings.cc
    functionUses: 0
    functionsReached:
    - auto::recursor::forward_zones::size
    - BOOST_CHECK_EQUAL
    - dnsdist::crypto::authenticated::Nonce::merge
    - std::string
    - pdns::rust::settings::rec::parse_yaml_string
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_rust_merge_lhs_default)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::rust::settings::rec::parse_yaml_string
      Src: /src/pdns/pdns/recursordist/test-settings.cc:298,1
    - Dst: pdns::rust::settings::rec::parse_yaml_string
      Src: /src/pdns/pdns/recursordist/test-settings.cc:299,1
    - Dst: auto::recursor::forward_zones::emplace_back
      Src: /src/pdns/pdns/recursordist/test-settings.cc:302,1
    - Dst: auto::recursor::forward_zones::emplace_back
      Src: /src/pdns/pdns/recursordist/test-settings.cc:305,1
    - Dst: auto::to_yaml_string
      Src: /src/pdns/pdns/recursordist/test-settings.cc:307,1
    - Dst: dnsdist::crypto::authenticated::Nonce::merge
      Src: /src/pdns/pdns/recursordist/test-settings.cc:308,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:310,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-settings.cc:310,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:311,1
    - Dst: auto::recursor::forward_zones::size
      Src: /src/pdns/pdns/recursordist/test-settings.cc:311,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 312
      start: 295
    functionDepth: 1
    functionLinenumber: 295
    functionLinenumberEnd: 312
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-settings.cc
    functionUses: 0
    functionsReached:
    - auto::recursor::forward_zones::size
    - BOOST_CHECK_EQUAL
    - auto::recursor::forward_zones::emplace_back
    - dnsdist::crypto::authenticated::Nonce::merge
    - auto::to_yaml_string
    - std::string
    - pdns::rust::settings::rec::parse_yaml_string
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_rust_merge_lhs_nondefault)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::rust::settings::rec::parse_yaml_string
      Src: /src/pdns/pdns/recursordist/test-settings.cc:317,1
    - Dst: pdns::rust::settings::rec::parse_yaml_string
      Src: /src/pdns/pdns/recursordist/test-settings.cc:318,1
    - Dst: auto::recursor::forward_zones::emplace_back
      Src: /src/pdns/pdns/recursordist/test-settings.cc:321,1
    - Dst: auto::recursor::forward_zones::emplace_back
      Src: /src/pdns/pdns/recursordist/test-settings.cc:322,1
    - Dst: auto::to_yaml_string
      Src: /src/pdns/pdns/recursordist/test-settings.cc:324,1
    - Dst: dnsdist::crypto::authenticated::Nonce::merge
      Src: /src/pdns/pdns/recursordist/test-settings.cc:325,1
    - Dst: dnsdist::crypto::authenticated::Nonce::merge
      Src: /src/pdns/pdns/recursordist/test-settings.cc:327,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:329,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-settings.cc:329,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:330,1
    - Dst: auto::recursor::forward_zones::size
      Src: /src/pdns/pdns/recursordist/test-settings.cc:330,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 331
      start: 314
    functionDepth: 1
    functionLinenumber: 314
    functionLinenumberEnd: 331
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-settings.cc
    functionUses: 0
    functionsReached:
    - auto::recursor::forward_zones::size
    - BOOST_CHECK_EQUAL
    - auto::recursor::forward_zones::emplace_back
    - dnsdist::crypto::authenticated::Nonce::merge
    - auto::to_yaml_string
    - std::string
    - pdns::rust::settings::rec::parse_yaml_string
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_rust_merge_rhs_mixed)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::rust::settings::rec::parse_yaml_string
      Src: /src/pdns/pdns/recursordist/test-settings.cc:336,1
    - Dst: pdns::rust::settings::rec::parse_yaml_string
      Src: /src/pdns/pdns/recursordist/test-settings.cc:337,1
    - Dst: auto::to_yaml_string
      Src: /src/pdns/pdns/recursordist/test-settings.cc:342,1
    - Dst: dnsdist::crypto::authenticated::Nonce::merge
      Src: /src/pdns/pdns/recursordist/test-settings.cc:343,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:345,1
    - Dst: auto::outgoing::dont_query::size
      Src: /src/pdns/pdns/recursordist/test-settings.cc:345,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 346
      start: 333
    functionDepth: 1
    functionLinenumber: 333
    functionLinenumberEnd: 346
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-settings.cc
    functionUses: 0
    functionsReached:
    - BOOST_CHECK_EQUAL
    - auto::outgoing::dont_query::size
    - dnsdist::crypto::authenticated::Nonce::merge
    - auto::to_yaml_string
    - pdns::rust::settings::rec::parse_yaml_string
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_rust_merge_list_nonempty_default1)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::rust::settings::rec::parse_yaml_string
      Src: /src/pdns/pdns/recursordist/test-settings.cc:351,1
    - Dst: pdns::rust::settings::rec::parse_yaml_string
      Src: /src/pdns/pdns/recursordist/test-settings.cc:352,1
    - Dst: auto::to_yaml_string
      Src: /src/pdns/pdns/recursordist/test-settings.cc:356,1
    - Dst: dnsdist::crypto::authenticated::Nonce::merge
      Src: /src/pdns/pdns/recursordist/test-settings.cc:357,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:359,1
    - Dst: auto::outgoing::dont_query::size
      Src: /src/pdns/pdns/recursordist/test-settings.cc:359,1
    - Dst: pdns::rust::settings::rec::parse_yaml_string
      Src: /src/pdns/pdns/recursordist/test-settings.cc:361,1
    - Dst: auto::to_yaml_string
      Src: /src/pdns/pdns/recursordist/test-settings.cc:364,1
    - Dst: dnsdist::crypto::authenticated::Nonce::merge
      Src: /src/pdns/pdns/recursordist/test-settings.cc:365,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:367,1
    - Dst: auto::outgoing::dont_query::size
      Src: /src/pdns/pdns/recursordist/test-settings.cc:367,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 368
      start: 348
    functionDepth: 1
    functionLinenumber: 348
    functionLinenumberEnd: 368
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-settings.cc
    functionUses: 0
    functionsReached:
    - BOOST_CHECK_EQUAL
    - auto::outgoing::dont_query::size
    - dnsdist::crypto::authenticated::Nonce::merge
    - auto::to_yaml_string
    - pdns::rust::settings::rec::parse_yaml_string
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_rust_merge_list_nonempty_default2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::rust::settings::rec::parse_yaml_string
      Src: /src/pdns/pdns/recursordist/test-settings.cc:373,1
    - Dst: dnsdist::crypto::authenticated::Nonce::merge
      Src: /src/pdns/pdns/recursordist/test-settings.cc:383,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:385,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:386,1
    - Dst: auto::incoming::allow_from::size
      Src: /src/pdns/pdns/recursordist/test-settings.cc:386,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:387,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 388
      start: 370
    functionDepth: 1
    functionLinenumber: 370
    functionLinenumberEnd: 388
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-settings.cc
    functionUses: 0
    functionsReached:
    - auto::incoming::allow_from::size
    - BOOST_CHECK_EQUAL
    - pdns::rust::settings::rec::parse_yaml_string
    - dnsdist::crypto::authenticated::Nonce::merge
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_rust_merge_nondefault_and_default)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::rust::settings::rec::parse_yaml_string
      Src: /src/pdns/pdns/recursordist/test-settings.cc:397,1
    - Dst: dnsdist::crypto::authenticated::Nonce::merge
      Src: /src/pdns/pdns/recursordist/test-settings.cc:407,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:409,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:410,1
    - Dst: auto::incoming::allow_from::size
      Src: /src/pdns/pdns/recursordist/test-settings.cc:410,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:411,1
    - Dst: auto::incoming::allow_from::at
      Src: /src/pdns/pdns/recursordist/test-settings.cc:411,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:412,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 413
      start: 390
    functionDepth: 1
    functionLinenumber: 390
    functionLinenumberEnd: 413
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-settings.cc
    functionUses: 0
    functionsReached:
    - BOOST_CHECK_EQUAL
    - auto::incoming::allow_from::size
    - dnsdist::crypto::authenticated::Nonce::merge
    - auto::incoming::allow_from::at
    - pdns::rust::settings::rec::parse_yaml_string
    - BOOST_REQUIRE_EQUAL
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_rust_merge_override)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::rust::settings::rec::parse_yaml_string
      Src: /src/pdns/pdns/recursordist/test-settings.cc:421,1
    - Dst: auto::validate
      Src: /src/pdns/pdns/recursordist/test-settings.cc:422,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:423,1
    - Dst: auto::dnssec::trustanchors::size
      Src: /src/pdns/pdns/recursordist/test-settings.cc:423,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:424,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-settings.cc:424,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:425,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-settings.cc:425,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:426,1
    - Dst: auto::dnssec::negative_trustanchors::size
      Src: /src/pdns/pdns/recursordist/test-settings.cc:426,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:427,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-settings.cc:427,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:428,1
    - Dst: pdns::rust::settings::rec::parse_yaml_string
      Src: /src/pdns/pdns/recursordist/test-settings.cc:442,1
    - Dst: auto::validate
      Src: /src/pdns/pdns/recursordist/test-settings.cc:443,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:444,1
    - Dst: auto::dnssec::trustanchors::size
      Src: /src/pdns/pdns/recursordist/test-settings.cc:444,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:445,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-settings.cc:445,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:446,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-settings.cc:446,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:447,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-settings.cc:447,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:448,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-settings.cc:448,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:449,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-settings.cc:449,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:450,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-settings.cc:450,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:451,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 452
      start: 415
    functionDepth: 0
    functionLinenumber: 415
    functionLinenumberEnd: 452
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-settings.cc
    functionUses: 0
    functionsReached:
    - auto::validate
    - auto::dnssec::trustanchors::size
    - BOOST_CHECK_EQUAL
    - std::string
    - pdns::rust::settings::rec::parse_yaml_string
    - auto::dnssec::negative_trustanchors::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_yaml_defaults_ta)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::rust::settings::rec::parse_yaml_string
      Src: /src/pdns/pdns/recursordist/test-settings.cc:465,1
    - Dst: auto::validate
      Src: /src/pdns/pdns/recursordist/test-settings.cc:466,1
    - Dst: LuaConfigItems::LuaConfigItems
      Src: /src/pdns/pdns/recursordist/test-settings.cc:467,1
    - Dst: pdns::settings::rec::fromBridgeStructToLuaConfig
      Src: /src/pdns/pdns/recursordist/test-settings.cc:470,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:471,1
    - Dst: LuaConfigItems::dsAnchors::size
      Src: /src/pdns/pdns/recursordist/test-settings.cc:471,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:472,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-settings.cc:472,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/test-settings.cc:472,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:473,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-settings.cc:473,1
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/test-settings.cc:473,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:474,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-settings.cc:474,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/test-settings.cc:474,1
    - Dst: pdns::rust::settings::rec::parse_yaml_string
      Src: /src/pdns/pdns/recursordist/test-settings.cc:485,1
    - Dst: auto::validate
      Src: /src/pdns/pdns/recursordist/test-settings.cc:486,1
    - Dst: LuaConfigItems::LuaConfigItems
      Src: /src/pdns/pdns/recursordist/test-settings.cc:487,1
    - Dst: pdns::settings::rec::fromBridgeStructToLuaConfig
      Src: /src/pdns/pdns/recursordist/test-settings.cc:488,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:489,1
    - Dst: LuaConfigItems::dsAnchors::size
      Src: /src/pdns/pdns/recursordist/test-settings.cc:489,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:490,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-settings.cc:490,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/test-settings.cc:490,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:491,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-settings.cc:491,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/test-settings.cc:491,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 492
      start: 454
    functionDepth: 1
    functionLinenumber: 454
    functionLinenumberEnd: 492
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-settings.cc
    functionUses: 0
    functionsReached:
    - LuaConfigItems::LuaConfigItems
    - auto::validate
    - BOOST_CHECK_EQUAL
    - DNSName
    - size
    - LuaConfigItems::dsAnchors::size
    - begin
    - pdns::rust::settings::rec::parse_yaml_string
    - pdns::settings::rec::fromBridgeStructToLuaConfig
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_yaml_ta_merge)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::rust::settings::rec::parse_yaml_string
      Src: /src/pdns/pdns/recursordist/test-settings.cc:502,1
    - Dst: auto::validate
      Src: /src/pdns/pdns/recursordist/test-settings.cc:503,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:504,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:505,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:506,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:507,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:508,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:509,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:510,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:514,1
    - Dst: pdns::rust::settings::rec::parse_yaml_string
      Src: /src/pdns/pdns/recursordist/test-settings.cc:528,1
    - Dst: auto::validate
      Src: /src/pdns/pdns/recursordist/test-settings.cc:529,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:530,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:531,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:532,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:533,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:534,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:535,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:536,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:537,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 20
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 538
      start: 494
    functionDepth: 0
    functionLinenumber: 494
    functionLinenumberEnd: 538
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-settings.cc
    functionUses: 0
    functionsReached:
    - auto::validate
    - pdns::rust::settings::rec::parse_yaml_string
    - BOOST_CHECK_EQUAL
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_yaml_defaults_protobuf)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::rust::settings::rec::parse_yaml_string
      Src: /src/pdns/pdns/recursordist/test-settings.cc:548,1
    - Dst: auto::validate
      Src: /src/pdns/pdns/recursordist/test-settings.cc:549,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:550,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:551,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:552,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:553,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:554,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:555,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:556,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:560,1
    - Dst: pdns::rust::settings::rec::parse_yaml_string
      Src: /src/pdns/pdns/recursordist/test-settings.cc:574,1
    - Dst: auto::validate
      Src: /src/pdns/pdns/recursordist/test-settings.cc:575,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:576,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:577,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:578,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:579,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:580,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:581,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:582,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:583,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 20
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 584
      start: 540
    functionDepth: 0
    functionLinenumber: 540
    functionLinenumberEnd: 584
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-settings.cc
    functionUses: 0
    functionsReached:
    - auto::validate
    - pdns::rust::settings::rec::parse_yaml_string
    - BOOST_CHECK_EQUAL
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_yaml_defaults_outgoing_protobuf)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::rust::settings::rec::parse_yaml_string
      Src: /src/pdns/pdns/recursordist/test-settings.cc:594,1
    - Dst: auto::validate
      Src: /src/pdns/pdns/recursordist/test-settings.cc:595,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:596,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:597,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:598,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:599,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:600,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:601,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:602,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:603,1
    - Dst: pdns::rust::settings::rec::parse_yaml_string
      Src: /src/pdns/pdns/recursordist/test-settings.cc:617,1
    - Dst: auto::validate
      Src: /src/pdns/pdns/recursordist/test-settings.cc:618,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:619,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:620,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:621,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:622,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:623,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:624,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:625,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:626,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 20
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 627
      start: 586
    functionDepth: 0
    functionLinenumber: 586
    functionLinenumberEnd: 627
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-settings.cc
    functionUses: 0
    functionsReached:
    - auto::validate
    - pdns::rust::settings::rec::parse_yaml_string
    - BOOST_CHECK_EQUAL
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_yaml_defaults_dnstap)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::rust::settings::rec::parse_yaml_string
      Src: /src/pdns/pdns/recursordist/test-settings.cc:637,1
    - Dst: auto::validate
      Src: /src/pdns/pdns/recursordist/test-settings.cc:638,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:639,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:640,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:641,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:642,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:643,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:644,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:645,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:646,1
    - Dst: pdns::rust::settings::rec::parse_yaml_string
      Src: /src/pdns/pdns/recursordist/test-settings.cc:660,1
    - Dst: auto::validate
      Src: /src/pdns/pdns/recursordist/test-settings.cc:661,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:662,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:663,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:664,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:665,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:666,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:667,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:668,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:669,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 20
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 670
      start: 629
    functionDepth: 0
    functionLinenumber: 629
    functionLinenumberEnd: 670
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-settings.cc
    functionUses: 0
    functionsReached:
    - auto::validate
    - pdns::rust::settings::rec::parse_yaml_string
    - BOOST_CHECK_EQUAL
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_yaml_defaults_dnstapnod)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::rust::settings::rec::parse_yaml_string
      Src: /src/pdns/pdns/recursordist/test-settings.cc:707,1
    - Dst: auto::validate
      Src: /src/pdns/pdns/recursordist/test-settings.cc:708,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:710,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-settings.cc:710,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:711,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-settings.cc:711,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:712,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-settings.cc:712,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:713,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:714,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:715,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:716,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:717,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:718,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:719,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:720,1
    - Dst: tags::size
      Src: /src/pdns/pdns/recursordist/test-settings.cc:720,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:721,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:722,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:724,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-settings.cc:724,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:725,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-settings.cc:725,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:726,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-settings.cc:726,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:727,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-settings.cc:727,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:728,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-settings.cc:728,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:729,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:730,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:731,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-settings.cc:731,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:732,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:733,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-settings.cc:733,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:734,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-settings.cc:734,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:736,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-settings.cc:736,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:737,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-settings.cc:737,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:738,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-settings.cc:738,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:739,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-settings.cc:739,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:740,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:741,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:742,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:743,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:744,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:745,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:746,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:747,1
    - Dst: tags::size
      Src: /src/pdns/pdns/recursordist/test-settings.cc:747,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:748,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:749,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:750,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:751,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:753,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-settings.cc:753,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:754,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-settings.cc:754,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:755,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-settings.cc:755,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:756,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:757,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:758,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-settings.cc:758,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:759,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:760,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-settings.cc:760,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:761,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-settings.cc:761,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 51
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 762
      start: 672
    functionDepth: 0
    functionLinenumber: 672
    functionLinenumberEnd: 762
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-settings.cc
    functionUses: 0
    functionsReached:
    - auto::validate
    - BOOST_CHECK_EQUAL
    - tags::size
    - std::string
    - pdns::rust::settings::rec::parse_yaml_string
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_yaml_defaults_rpz)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::rust::settings::rec::parse_yaml_string
      Src: /src/pdns/pdns/recursordist/test-settings.cc:774,1
    - Dst: auto::validate
      Src: /src/pdns/pdns/recursordist/test-settings.cc:775,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:776,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-settings.cc:776,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:777,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-settings.cc:777,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:778,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 779
      start: 764
    functionDepth: 0
    functionLinenumber: 764
    functionLinenumberEnd: 779
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-settings.cc
    functionUses: 0
    functionsReached:
    - auto::validate
    - std::string
    - pdns::rust::settings::rec::parse_yaml_string
    - BOOST_CHECK_EQUAL
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_yaml_sortlist)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::rust::settings::rec::parse_yaml_string
      Src: /src/pdns/pdns/recursordist/test-settings.cc:804,1
    - Dst: auto::validate
      Src: /src/pdns/pdns/recursordist/test-settings.cc:805,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:806,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-settings.cc:806,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:807,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-settings.cc:807,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:808,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-settings.cc:808,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:809,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:810,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-settings.cc:810,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:811,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-settings.cc:811,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:812,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-settings.cc:812,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:813,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:814,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:815,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:816,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:817,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:818,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:820,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-settings.cc:820,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:821,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-settings.cc:821,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:822,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-settings.cc:822,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:823,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:824,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-settings.cc:824,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:825,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-settings.cc:825,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:826,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-settings.cc:826,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:827,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:828,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:829,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:830,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:831,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:832,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 28
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 833
      start: 781
    functionDepth: 0
    functionLinenumber: 781
    functionLinenumberEnd: 833
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-settings.cc
    functionUses: 0
    functionsReached:
    - auto::validate
    - std::string
    - pdns::rust::settings::rec::parse_yaml_string
    - BOOST_CHECK_EQUAL
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_yaml_ztc)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::rust::settings::rec::parse_yaml_string
      Src: /src/pdns/pdns/recursordist/test-settings.cc:846,1
    - Dst: auto::validate
      Src: /src/pdns/pdns/recursordist/test-settings.cc:847,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:848,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-settings.cc:848,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:849,1
    - Dst: targets::size
      Src: /src/pdns/pdns/recursordist/test-settings.cc:849,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:850,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-settings.cc:850,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:852,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-settings.cc:852,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:853,1
    - Dst: targets::size
      Src: /src/pdns/pdns/recursordist/test-settings.cc:853,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:854,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-settings.cc:854,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 855
      start: 835
    functionDepth: 0
    functionLinenumber: 835
    functionLinenumberEnd: 855
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-settings.cc
    functionUses: 0
    functionsReached:
    - auto::validate
    - BOOST_CHECK_EQUAL
    - targets::size
    - std::string
    - pdns::rust::settings::rec::parse_yaml_string
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_yaml_additionals)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::rust::settings::rec::parse_yaml_string
      Src: /src/pdns/pdns/recursordist/test-settings.cc:868,1
    - Dst: auto::validate
      Src: /src/pdns/pdns/recursordist/test-settings.cc:869,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:870,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-settings.cc:870,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:871,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-settings.cc:871,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:872,1
    - Dst: domains::size
      Src: /src/pdns/pdns/recursordist/test-settings.cc:872,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:874,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-settings.cc:874,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:875,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-settings.cc:875,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:876,1
    - Dst: domains::size
      Src: /src/pdns/pdns/recursordist/test-settings.cc:876,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 877
      start: 857
    functionDepth: 0
    functionLinenumber: 857
    functionLinenumberEnd: 877
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-settings.cc
    functionUses: 0
    functionsReached:
    - auto::validate
    - BOOST_CHECK_EQUAL
    - domains::size
    - std::string
    - pdns::rust::settings::rec::parse_yaml_string
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_yaml_proxymapping)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::rust::settings::rec::parse_yaml_string
      Src: /src/pdns/pdns/recursordist/test-settings.cc:894,1
    - Dst: auto::validate
      Src: /src/pdns/pdns/recursordist/test-settings.cc:895,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:896,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-settings.cc:896,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:897,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-settings.cc:897,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:898,1
    - Dst: forwarders::size
      Src: /src/pdns/pdns/recursordist/test-settings.cc:898,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:899,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-settings.cc:899,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:900,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-settings.cc:900,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:902,1
    - Dst: forwarders::size
      Src: /src/pdns/pdns/recursordist/test-settings.cc:902,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:903,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-settings.cc:903,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:904,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:905,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 906
      start: 879
    functionDepth: 0
    functionLinenumber: 879
    functionLinenumberEnd: 906
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-settings.cc
    functionUses: 0
    functionsReached:
    - auto::validate
    - BOOST_CHECK_EQUAL
    - forwarders::size
    - std::string
    - pdns::rust::settings::rec::parse_yaml_string
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_yaml_forwardingcatalogzones)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::rust::settings::rec::parse_yaml_string
      Src: /src/pdns/pdns/recursordist/test-settings.cc:1052,1
    - Dst: auto::validate
      Src: /src/pdns/pdns/recursordist/test-settings.cc:1053,1
    - Dst: LuaConfigItems::LuaConfigItems
      Src: /src/pdns/pdns/recursordist/test-settings.cc:1056,1
    - Dst: pdns::settings::rec::fromBridgeStructToLuaConfig
      Src: /src/pdns/pdns/recursordist/test-settings.cc:1059,1
    - Dst: pdns::rust::settings::rec::parse_yaml_string
      Src: /src/pdns/pdns/recursordist/test-settings.cc:1062,1
    - Dst: pdns::settings::rec::fromLuaConfigToBridgeStruct
      Src: /src/pdns/pdns/recursordist/test-settings.cc:1064,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/test-settings.cc:1067,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-settings.cc:1068,1
    - Dst: auto::to_yaml_string
      Src: /src/pdns/pdns/recursordist/test-settings.cc:1071,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-settings.cc:1084,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-settings.cc:1084,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1085
      start: 908
    functionDepth: 1
    functionLinenumber: 908
    functionLinenumberEnd: 1085
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-settings.cc
    functionUses: 0
    functionsReached:
    - pdns::settings::rec::fromLuaConfigToBridgeStruct
    - LuaConfigItems::LuaConfigItems
    - auto::validate
    - what
    - BOOST_CHECK_EQUAL
    - auto::to_yaml_string
    - std::string
    - BOOST_CHECK
    - pdns::rust::settings::rec::parse_yaml_string
    - pdns::settings::rec::fromBridgeStructToLuaConfig
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_yaml_to_luaconfigand_back)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/secpoll-recursor.cc:21,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/secpoll-recursor.cc:21,1
    - Dst: Utility::gettimeofday
      Src: /src/pdns/pdns/recursordist/secpoll-recursor.cc:27,1
    - Dst: SyncRes::setDoDNSSEC
      Src: /src/pdns/pdns/recursordist/secpoll-recursor.cc:35,1
    - Dst: SyncRes::setDNSSECValidationRequested
      Src: /src/pdns/pdns/recursordist/secpoll-recursor.cc:36,1
    - Dst: SyncRes::setId
      Src: /src/pdns/pdns/recursordist/secpoll-recursor.cc:38,1
    - Dst: string::substr
      Src: /src/pdns/pdns/recursordist/secpoll-recursor.cc:43,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/secpoll-recursor.cc:43,1
    - Dst: string::rbegin
      Src: /src/pdns/pdns/recursordist/secpoll-recursor.cc:45,1
    - Dst: std::replace
      Src: /src/pdns/pdns/recursordist/secpoll-recursor.cc:49,1
    - Dst: string::begin
      Src: /src/pdns/pdns/recursordist/secpoll-recursor.cc:49,1
    - Dst: string::end
      Src: /src/pdns/pdns/recursordist/secpoll-recursor.cc:49,1
    - Dst: std::replace
      Src: /src/pdns/pdns/recursordist/secpoll-recursor.cc:50,1
    - Dst: string::begin
      Src: /src/pdns/pdns/recursordist/secpoll-recursor.cc:50,1
    - Dst: string::end
      Src: /src/pdns/pdns/recursordist/secpoll-recursor.cc:50,1
    - Dst: SyncRes::beginResolve
      Src: /src/pdns/pdns/recursordist/secpoll-recursor.cc:54,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/secpoll-recursor.cc:54,1
    - Dst: SyncRes::getValidationState
      Src: /src/pdns/pdns/recursordist/secpoll-recursor.cc:57,1
    - Dst: Logr::log_t::withValues
      Src: /src/pdns/pdns/recursordist/secpoll-recursor.cc:60,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/secpoll-recursor.cc:60,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/secpoll-recursor.cc:60,1
    - Dst: vStateIsBogus
      Src: /src/pdns/pdns/recursordist/secpoll-recursor.cc:61,1
    - Dst: auto::info
      Src: /src/pdns/pdns/recursordist/secpoll-recursor.cc:62,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/secpoll-recursor.cc:62,1
    - Dst: vStateToString
      Src: /src/pdns/pdns/recursordist/secpoll-recursor.cc:62,1
    - Dst: isReleaseVersion
      Src: /src/pdns/pdns/recursordist/secpoll-recursor.cc:69,1
    - Dst: auto::info
      Src: /src/pdns/pdns/recursordist/secpoll-recursor.cc:70,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/recursordist/secpoll-recursor.cc:75,1
    - Dst: processSecPoll
      Src: /src/pdns/pdns/recursordist/secpoll-recursor.cc:78,1
    - Dst: auto::error
      Src: /src/pdns/pdns/recursordist/secpoll-recursor.cc:82,1
    - Dst: auto::withValues
      Src: /src/pdns/pdns/recursordist/secpoll-recursor.cc:86,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/secpoll-recursor.cc:86,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/secpoll-recursor.cc:86,1
    - Dst: auto::info
      Src: /src/pdns/pdns/recursordist/secpoll-recursor.cc:88,1
    - Dst: auto::info
      Src: /src/pdns/pdns/recursordist/secpoll-recursor.cc:91,1
    - Dst: auto::info
      Src: /src/pdns/pdns/recursordist/secpoll-recursor.cc:94,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 47
    argCount: 2
    argNames:
    - last_secpoll
    - log
    argTypes:
    - time_t*
    - Logr::log_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 19
    functionDepth: 5
    functionLinenumber: 19
    functionLinenumberEnd: 98
    functionName: doSecPoll
    functionSourceFile: /src/pdns/pdns/recursordist/secpoll-recursor.cc
    functionUses: 3
    functionsReached:
    - SyncRes::setDNSSECValidationRequested
    - vStateIsBogus
    - string::rbegin
    - string::substr
    - auto::withValues
    - processSecPoll
    - std::replace
    - static_cast<int>
    - string::end
    - Logging::Loggable
    - SyncRes::setId
    - QType
    - auto::error
    - Logr::log_t::withValues
    - empty
    - auto::info
    - string::begin
    - isReleaseVersion
    - SyncRes::setDoDNSSEC
    - Utility::gettimeofday
    - SyncRes::beginResolve
    - arg
    - SyncRes::getValidationState
    - vStateToString
    linkageType: ''
    returnType: void
    signature: void doSecPoll(time_t* last_secpoll, Logr::log_t log)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::RecResolve::setInstanceParameters
      Src: /src/pdns/pdns/recursordist/test-rec-system-resolve.cc:14,1
    - Dst: pdns::RecResolve::getInstance
      Src: /src/pdns/pdns/recursordist/test-rec-system-resolve.cc:15,1
    - Dst: lookupAndRegister
      Src: /src/pdns/pdns/recursordist/test-rec-system-resolve.cc:17,1
    - Dst: time
      Src: /src/pdns/pdns/recursordist/test-rec-system-resolve.cc:17,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-rec-system-resolve.cc:18,1
    - Dst: auto::toString
      Src: /src/pdns/pdns/recursordist/test-rec-system-resolve.cc:18,1
    - Dst: auto::toString
      Src: /src/pdns/pdns/recursordist/test-rec-system-resolve.cc:18,1
    - Dst: lookup
      Src: /src/pdns/pdns/recursordist/test-rec-system-resolve.cc:19,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-rec-system-resolve.cc:20,1
    - Dst: auto::toString
      Src: /src/pdns/pdns/recursordist/test-rec-system-resolve.cc:20,1
    - Dst: auto::toString
      Src: /src/pdns/pdns/recursordist/test-rec-system-resolve.cc:20,1
    - Dst: wipe
      Src: /src/pdns/pdns/recursordist/test-rec-system-resolve.cc:21,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/recursordist/test-rec-system-resolve.cc:22,1
    - Dst: lookup
      Src: /src/pdns/pdns/recursordist/test-rec-system-resolve.cc:22,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 23
      start: 11
    functionDepth: 0
    functionLinenumber: 11
    functionLinenumberEnd: 23
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-rec-system-resolve.cc
    functionUses: 0
    functionsReached:
    - pdns::RecResolve::getInstance
    - lookup
    - time
    - auto::toString
    - lookupAndRegister
    - pdns::RecResolve::setInstanceParameters
    - BOOST_CHECK_THROW
    - wipe
    - BOOST_CHECK
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_basic_resolve)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: jump_fcontext
      Src: /src/pdns/pdns/recursordist/mtasker_context.cc:77,1
    - Dst: jump_fcontext
      Src: /src/pdns/pdns/recursordist/mtasker_context.cc:82,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 3
    argNames:
    - ofc
    - nfc
    - arg
    argTypes:
    - fcontext_t*
    - fcontext_t
    - intptr_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 67
    functionDepth: 1
    functionLinenumber: 67
    functionLinenumberEnd: 86
    functionName: jump_fcontext
    functionSourceFile: /src/pdns/pdns/recursordist/mtasker_context.cc
    functionUses: 1
    functionsReached:
    - jump_fcontext
    linkageType: ''
    returnType: intptr_t
    signature: "intptr_t jump_fcontext(fcontext_t* const ofc, fcontext_t const nfc,\n
      \             intptr_t const arg)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: notifyStackSwitchDone
      Src: /src/pdns/pdns/recursordist/mtasker_context.cc:138,1
    - Dst: reinterpret_cast<args_t*>
      Src: /src/pdns/pdns/recursordist/mtasker_context.cc:140,1
    - Dst: static_cast<args_t*>
      Src: /src/pdns/pdns/recursordist/mtasker_context.cc:142,1
    - Dst: notifyStackSwitchToKernel
      Src: /src/pdns/pdns/recursordist/mtasker_context.cc:147,1
    - Dst: jump_fcontext
      Src: /src/pdns/pdns/recursordist/mtasker_context.cc:149,1
    - Dst: reinterpret_cast<fcontext_t*>
      Src: /src/pdns/pdns/recursordist/mtasker_context.cc:149,1
    - Dst: static_cast<fcontext_t>
      Src: /src/pdns/pdns/recursordist/mtasker_context.cc:150,1
    - Dst: jump_fcontext
      Src: /src/pdns/pdns/recursordist/mtasker_context.cc:152,1
    - Dst: static_cast<fcontext_t*>
      Src: /src/pdns/pdns/recursordist/mtasker_context.cc:159,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/mtasker_context.cc:163,1
    - Dst: notifyStackSwitchDone
      Src: /src/pdns/pdns/recursordist/mtasker_context.cc:164,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/mtasker_context.cc:168,1
    - Dst: localstart
      Src: /src/pdns/pdns/recursordist/mtasker_context.cc:169,1
    - Dst: std::current_exception
      Src: /src/pdns/pdns/recursordist/mtasker_context.cc:172,1
    - Dst: notifyStackSwitchToKernel
      Src: /src/pdns/pdns/recursordist/mtasker_context.cc:175,1
    - Dst: jump_fcontext
      Src: /src/pdns/pdns/recursordist/mtasker_context.cc:179,1
    - Dst: reinterpret_cast<fcontext_t*>
      Src: /src/pdns/pdns/recursordist/mtasker_context.cc:179,1
    - Dst: static_cast<fcontext_t>
      Src: /src/pdns/pdns/recursordist/mtasker_context.cc:180,1
    - Dst: reinterpret_cast<intptr_t>
      Src: /src/pdns/pdns/recursordist/mtasker_context.cc:181,1
    - Dst: jump_fcontext
      Src: /src/pdns/pdns/recursordist/mtasker_context.cc:183,1
    - Dst: static_cast<fcontext_t>
      Src: /src/pdns/pdns/recursordist/mtasker_context.cc:183,1
    - Dst: __builtin_unreachable
      Src: /src/pdns/pdns/recursordist/mtasker_context.cc:187,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 20
    argCount: 1
    argNames:
    - xargs
    argTypes:
    - intptr_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 190
      start: 118
    functionDepth: 2
    functionLinenumber: 118
    functionLinenumberEnd: 190
    functionName: threadWrapper
    functionSourceFile: /src/pdns/pdns/recursordist/mtasker_context.cc
    functionUses: 0
    functionsReached:
    - std::move
    - localstart
    - notifyStackSwitchDone
    - notifyStackSwitchToKernel
    - jump_fcontext
    - reinterpret_cast<intptr_t>
    - std::current_exception
    - reinterpret_cast<args_t*>
    - static_cast<fcontext_t>
    - static_cast<args_t*>
    - __builtin_unreachable
    - reinterpret_cast<fcontext_t*>
    - static_cast<fcontext_t*>
    linkageType: ''
    returnType: void
    signature: void threadWrapper(intptr_t const xargs)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: notifyStackSwitchDone
      Src: /src/pdns/pdns/recursordist/mtasker_context.cc:138,1
    - Dst: reinterpret_cast<args_t*>
      Src: /src/pdns/pdns/recursordist/mtasker_context.cc:140,1
    - Dst: static_cast<args_t*>
      Src: /src/pdns/pdns/recursordist/mtasker_context.cc:142,1
    - Dst: notifyStackSwitchToKernel
      Src: /src/pdns/pdns/recursordist/mtasker_context.cc:147,1
    - Dst: jump_fcontext
      Src: /src/pdns/pdns/recursordist/mtasker_context.cc:149,1
    - Dst: reinterpret_cast<fcontext_t*>
      Src: /src/pdns/pdns/recursordist/mtasker_context.cc:149,1
    - Dst: static_cast<fcontext_t>
      Src: /src/pdns/pdns/recursordist/mtasker_context.cc:150,1
    - Dst: jump_fcontext
      Src: /src/pdns/pdns/recursordist/mtasker_context.cc:152,1
    - Dst: static_cast<fcontext_t*>
      Src: /src/pdns/pdns/recursordist/mtasker_context.cc:159,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/mtasker_context.cc:163,1
    - Dst: notifyStackSwitchDone
      Src: /src/pdns/pdns/recursordist/mtasker_context.cc:164,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/mtasker_context.cc:168,1
    - Dst: localstart
      Src: /src/pdns/pdns/recursordist/mtasker_context.cc:169,1
    - Dst: std::current_exception
      Src: /src/pdns/pdns/recursordist/mtasker_context.cc:172,1
    - Dst: notifyStackSwitchToKernel
      Src: /src/pdns/pdns/recursordist/mtasker_context.cc:175,1
    - Dst: jump_fcontext
      Src: /src/pdns/pdns/recursordist/mtasker_context.cc:179,1
    - Dst: reinterpret_cast<fcontext_t*>
      Src: /src/pdns/pdns/recursordist/mtasker_context.cc:179,1
    - Dst: static_cast<fcontext_t>
      Src: /src/pdns/pdns/recursordist/mtasker_context.cc:180,1
    - Dst: reinterpret_cast<intptr_t>
      Src: /src/pdns/pdns/recursordist/mtasker_context.cc:181,1
    - Dst: jump_fcontext
      Src: /src/pdns/pdns/recursordist/mtasker_context.cc:183,1
    - Dst: static_cast<fcontext_t>
      Src: /src/pdns/pdns/recursordist/mtasker_context.cc:183,1
    - Dst: __builtin_unreachable
      Src: /src/pdns/pdns/recursordist/mtasker_context.cc:187,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 19
    argCount: 1
    argNames:
    - theThread
    argTypes:
    - transfer_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 189
      start: 126
    functionDepth: 2
    functionLinenumber: 126
    functionLinenumberEnd: 189
    functionName: threadWrapper
    functionSourceFile: /src/pdns/pdns/recursordist/mtasker_context.cc
    functionUses: 0
    functionsReached:
    - std::move
    - localstart
    - notifyStackSwitchDone
    - notifyStackSwitchToKernel
    - jump_fcontext
    - reinterpret_cast<intptr_t>
    - std::current_exception
    - reinterpret_cast<args_t*>
    - static_cast<fcontext_t>
    - static_cast<args_t*>
    - __builtin_unreachable
    - reinterpret_cast<fcontext_t*>
    - static_cast<fcontext_t*>
    linkageType: ''
    returnType: void
    signature: void threadWrapper(transfer_t const theThread)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 198
      start: 192
    functionDepth: 0
    functionLinenumber: 192
    functionLinenumberEnd: 198
    functionName: pdns_ucontext_t::pdns_ucontext_t
    functionSourceFile: /src/pdns/pdns/recursordist/mtasker_context.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void pdns_ucontext_t::pdns_ucontext_t()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: VALGRIND_STACK_DEREGISTER
      Src: /src/pdns/pdns/recursordist/mtasker_context.cc:207,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 209
      start: 201
    functionDepth: 0
    functionLinenumber: 201
    functionLinenumberEnd: 209
    functionName: pdns_ucontext_t::~pdns_ucontext_t()
    functionSourceFile: /src/pdns/pdns/recursordist/mtasker_context.cc
    functionUses: 0
    functionsReached:
    - VALGRIND_STACK_DEREGISTER
    linkageType: ''
    returnType: void
    signature: void pdns_ucontext_t::~pdns_ucontext_t()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 211
      start: 211
    functionDepth: 0
    functionLinenumber: 211
    functionLinenumberEnd: 211
    functionName: pdns_ucontext_t::~pdns_ucontext_t()
    functionSourceFile: /src/pdns/pdns/recursordist/mtasker_context.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void pdns_ucontext_t::~pdns_ucontext_t()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/pdns/pdns/recursordist/mtasker_context.cc:245,1
    - Dst: assert
      Src: /src/pdns/pdns/recursordist/mtasker_context.cc:246,1
    - Dst: uc_stack::size
      Src: /src/pdns/pdns/recursordist/mtasker_context.cc:246,1
    - Dst: assert
      Src: /src/pdns/pdns/recursordist/mtasker_context.cc:247,1
    - Dst: make_fcontext
      Src: /src/pdns/pdns/recursordist/mtasker_context.cc:249,1
    - Dst: uc_stack::size
      Src: /src/pdns/pdns/recursordist/mtasker_context.cc:249,1
    - Dst: uc_stack::size
      Src: /src/pdns/pdns/recursordist/mtasker_context.cc:250,1
    - Dst: notifyStackSwitch
      Src: /src/pdns/pdns/recursordist/mtasker_context.cc:255,1
    - Dst: uc_stack::size
      Src: /src/pdns/pdns/recursordist/mtasker_context.cc:255,1
    - Dst: uc_stack::size
      Src: /src/pdns/pdns/recursordist/mtasker_context.cc:255,1
    - Dst: jump_fcontext
      Src: /src/pdns/pdns/recursordist/mtasker_context.cc:257,1
    - Dst: reinterpret_cast<fcontext_t*>
      Src: /src/pdns/pdns/recursordist/mtasker_context.cc:257,1
    - Dst: static_cast<fcontext_t>
      Src: /src/pdns/pdns/recursordist/mtasker_context.cc:258,1
    - Dst: reinterpret_cast<intptr_t>
      Src: /src/pdns/pdns/recursordist/mtasker_context.cc:259,1
    - Dst: jump_fcontext
      Src: /src/pdns/pdns/recursordist/mtasker_context.cc:261,1
    - Dst: static_cast<fcontext_t>
      Src: /src/pdns/pdns/recursordist/mtasker_context.cc:261,1
    - Dst: notifyStackSwitchDone
      Src: /src/pdns/pdns/recursordist/mtasker_context.cc:267,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 2
    argNames:
    - ' ctx'
    - ' start'
    argTypes:
    - pdns_ucontext_t
    - std::function<void(void)>
    assertStmts:
    - condition: (ctx.uc_link)
      pos:
        line_end: 244
        line_start: 244
        source_file: /src/pdns/pdns/recursordist/mtasker_context.cc
    - condition: (!ctx.uc_mcontext)
      pos:
        line_end: 246
        line_start: 246
        source_file: /src/pdns/pdns/recursordist/mtasker_context.cc
    - condition: (ctx.uc_stack.size() >= 8192)
      pos:
        line_end: 245
        line_start: 245
        source_file: /src/pdns/pdns/recursordist/mtasker_context.cc
    constantsTouched: []
    func_position:
      end: 268
      start: 242
    functionDepth: 2
    functionLinenumber: 242
    functionLinenumberEnd: 268
    functionName: pdns_makecontext
    functionSourceFile: /src/pdns/pdns/recursordist/mtasker_context.cc
    functionUses: 1
    functionsReached:
    - notifyStackSwitchDone
    - jump_fcontext
    - reinterpret_cast<intptr_t>
    - make_fcontext
    - assert
    - notifyStackSwitch
    - static_cast<fcontext_t>
    - uc_stack::size
    - reinterpret_cast<fcontext_t*>
    linkageType: ''
    returnType: void
    signature: void pdns_makecontext(pdns_ucontext_t& ctx, std::function<void(void)>&
      start)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:14,1
    - Dst: setDNSSECValidation
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:16,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:18,1
    - Dst: getCopy
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:23,1
    - Dst: auto::dsAnchors::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:24,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:25,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:28,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:28,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:29,1
    - Dst: insert
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:29,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:29,1
    - Dst: setState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:30,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:34,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:38,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:39,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:40,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:40,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:41,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:41,1
    - Dst: addNSECRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:42,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:42,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:42,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:43,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:43,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:46,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:48,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:49,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:50,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:50,1
    - Dst: addNSECRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:52,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:52,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:52,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:53,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:53,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:56,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:57,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:63,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:64,1
    - Dst: addDNSKEY
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:65,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:66,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:71,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:72,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:73,1
    - Dst: addNSECRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:75,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:75,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:75,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:76,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:76,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:77,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:80,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:81,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:82,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:83,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:83,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:84,1
    - Dst: isPartOf
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:86,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:86,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:87,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:88,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:88,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:89,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:93,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:94,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:96,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:97,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:97,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:98,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:98,1
    - Dst: addNSECRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:99,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:99,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:99,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:100,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:100,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:102,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:103,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:104,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:104,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:106,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:107,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:110,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:111,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:111,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:112,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:112,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:122,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:122,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:123,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:124,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:124,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:125,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:125,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:126,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:127,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:130,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:131,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:131,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:132,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:133,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:133,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:134,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:134,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:135,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:136,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 99
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 137
      start: 11
    functionDepth: 3
    functionLinenumber: 11
    functionLinenumberEnd: 137
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc7.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - primeHints
    - setDNSSECValidation
    - addDNSKEY
    - insert
    - std::unique_ptr::beginResolve
    - isRootServer
    - setState
    - QType
    - generateKeyMaterial
    - addRecordToLW
    - auto::dsAnchors::clear
    - addRRSIG
    - addNSECRecordToLW
    - vector::clear
    - BOOST_REQUIRE_EQUAL
    - std::unique_ptr::setAsyncCallback
    - isPartOf
    - DNSName
    - initSR
    - std::unique_ptr::getValidationState
    - ComboAddress
    - BOOST_CHECK
    - BOOST_CHECK_EQUAL
    - getCopy
    - ComboAddress::toString
    - vector::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_dnssec_insecure_to_ta_skipped_cut)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:142,1
    - Dst: setDNSSECValidation
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:144,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:146,1
    - Dst: getCopy
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:150,1
    - Dst: auto::dsAnchors::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:151,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:152,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:153,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:153,1
    - Dst: setState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:155,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:159,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:164,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:165,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:166,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:166,1
    - Dst: addNSECRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:167,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:167,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:168,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:168,1
    - Dst: genericDSAndDNSKEYHandler
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:171,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:174,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:175,1
    - Dst: addDNSKEY
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:176,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:177,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:180,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:181,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:185,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:186,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:187,1
    - Dst: addDS
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:188,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:188,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:189,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:189,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:190,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:193,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:194,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:195,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:196,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:197,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:197,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:198,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:199,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:199,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:202,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:203,1
    - Dst: addNSECRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:205,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:205,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:206,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:206,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:207,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:211,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:213,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:214,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:217,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:218,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:228,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:228,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:229,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:230,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:230,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:231,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:231,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:237,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:240,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:241,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:241,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:242,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:243,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:243,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:244,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:244,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:245,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:249,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:250,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:250,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:251,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:252,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:252,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:253,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:253,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:261,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:262,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 91
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 263
      start: 139
    functionDepth: 4
    functionLinenumber: 139
    functionLinenumberEnd: 263
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc7.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - genericDSAndDNSKEYHandler
    - primeHints
    - setDNSSECValidation
    - addDNSKEY
    - std::unique_ptr::beginResolve
    - isRootServer
    - setState
    - QType
    - generateKeyMaterial
    - addRecordToLW
    - auto::dsAnchors::clear
    - addRRSIG
    - addNSECRecordToLW
    - vector::clear
    - BOOST_REQUIRE_EQUAL
    - std::unique_ptr::setAsyncCallback
    - DNSName
    - initSR
    - addDS
    - std::unique_ptr::getValidationState
    - ComboAddress
    - BOOST_CHECK_EQUAL
    - getCopy
    - vector::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_dnssec_secure_to_insecure_nodata)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:268,1
    - Dst: setDNSSECValidation
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:270,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:272,1
    - Dst: getCopy
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:278,1
    - Dst: auto::dsAnchors::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:279,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:280,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:281,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:281,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:282,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:282,1
    - Dst: setState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:283,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:287,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:292,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:293,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:294,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:294,1
    - Dst: addNSECRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:295,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:295,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:296,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:296,1
    - Dst: genericDSAndDNSKEYHandler
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:299,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:302,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:302,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:303,1
    - Dst: addDNSKEY
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:304,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:305,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:308,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:309,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:313,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:314,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:315,1
    - Dst: addDS
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:316,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:316,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:317,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:317,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:318,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:321,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:322,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:323,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:324,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:325,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:326,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:326,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:327,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:328,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:328,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:331,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:332,1
    - Dst: addDS
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:333,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:333,1
    - Dst: addNSECRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:336,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:336,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:338,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:338,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:339,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:344,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:345,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:348,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:349,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:350,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:352,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:353,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:354,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:358,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:359,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:359,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:360,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:363,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:363,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:375,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:375,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:376,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:377,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:377,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:378,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:378,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:379,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:382,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:383,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:383,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:384,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:385,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:385,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:386,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:386,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:387,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 97
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 388
      start: 265
    functionDepth: 4
    functionLinenumber: 265
    functionLinenumberEnd: 388
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc7.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - genericDSAndDNSKEYHandler
    - primeHints
    - setDNSSECValidation
    - DNSName::toString
    - addDNSKEY
    - std::unique_ptr::beginResolve
    - isRootServer
    - setState
    - QType
    - generateKeyMaterial
    - addRecordToLW
    - auto::dsAnchors::clear
    - addRRSIG
    - addNSECRecordToLW
    - vector::clear
    - BOOST_REQUIRE_EQUAL
    - std::unique_ptr::setAsyncCallback
    - DNSName
    - initSR
    - addDS
    - std::unique_ptr::getValidationState
    - ComboAddress
    - BOOST_CHECK_EQUAL
    - getCopy
    - ComboAddress::toString
    - vector::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_dnssec_secure_to_insecure_cname)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:393,1
    - Dst: setDNSSECValidation
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:395,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:397,1
    - Dst: getCopy
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:404,1
    - Dst: auto::dsAnchors::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:405,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:406,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:407,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:407,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:408,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:408,1
    - Dst: setState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:409,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:413,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:417,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:418,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:419,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:420,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:420,1
    - Dst: addNSECRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:421,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:421,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:422,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:422,1
    - Dst: genericDSAndDNSKEYHandler
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:425,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:428,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:429,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:430,1
    - Dst: addDS
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:431,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:431,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:432,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:432,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:433,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:436,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:437,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:438,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:439,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:440,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:441,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:441,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:442,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:443,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:443,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:446,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:447,1
    - Dst: addDS
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:448,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:448,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:450,1
    - Dst: addNSECRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:451,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:451,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:453,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:453,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:454,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:459,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:460,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:463,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:464,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:465,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:467,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:468,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:469,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:473,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:474,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:474,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:475,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:477,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:477,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:478,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:478,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:481,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:481,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:484,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:484,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:496,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:496,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:497,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:498,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:498,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:499,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:499,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:500,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:503,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:504,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:504,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:505,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:506,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:506,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:507,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:507,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:508,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 91
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 509
      start: 390
    functionDepth: 4
    functionLinenumber: 390
    functionLinenumberEnd: 509
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc7.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - genericDSAndDNSKEYHandler
    - primeHints
    - setDNSSECValidation
    - DNSName::toString
    - std::unique_ptr::beginResolve
    - isRootServer
    - setState
    - QType
    - generateKeyMaterial
    - addRecordToLW
    - auto::dsAnchors::clear
    - addRRSIG
    - addNSECRecordToLW
    - vector::clear
    - BOOST_REQUIRE_EQUAL
    - std::unique_ptr::setAsyncCallback
    - DNSName
    - initSR
    - addDS
    - std::unique_ptr::getValidationState
    - ComboAddress
    - BOOST_CHECK_EQUAL
    - getCopy
    - ComboAddress::toString
    - vector::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_dnssec_secure_to_insecure_cname_glue)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:514,1
    - Dst: setDNSSECValidation
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:516,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:518,1
    - Dst: getCopy
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:524,1
    - Dst: auto::dsAnchors::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:525,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:526,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:527,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:527,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:528,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:528,1
    - Dst: setState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:529,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:533,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:537,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:538,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:539,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:540,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:540,1
    - Dst: addNSECRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:541,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:541,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:542,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:542,1
    - Dst: genericDSAndDNSKEYHandler
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:545,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:548,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:548,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:549,1
    - Dst: addDNSKEY
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:550,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:551,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:554,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:555,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:559,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:560,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:561,1
    - Dst: addDS
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:562,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:562,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:563,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:563,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:564,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:567,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:568,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:569,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:570,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:571,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:571,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:572,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:573,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:573,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:575,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:575,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:576,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:577,1
    - Dst: addDS
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:579,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:579,1
    - Dst: addNSECRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:582,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:582,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:584,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:584,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:585,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:589,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:590,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:592,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:593,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:594,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:596,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:597,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:598,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:603,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:603,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:606,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:606,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:607,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:618,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:618,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:619,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:620,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:620,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:621,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:621,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:622,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:625,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:626,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:626,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:627,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:628,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:628,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:629,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:629,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:630,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 98
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 631
      start: 511
    functionDepth: 4
    functionLinenumber: 511
    functionLinenumberEnd: 631
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc7.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - genericDSAndDNSKEYHandler
    - primeHints
    - setDNSSECValidation
    - DNSName::toString
    - addDNSKEY
    - std::unique_ptr::beginResolve
    - isRootServer
    - setState
    - QType
    - generateKeyMaterial
    - addRecordToLW
    - auto::dsAnchors::clear
    - addRRSIG
    - addNSECRecordToLW
    - vector::clear
    - BOOST_REQUIRE_EQUAL
    - std::unique_ptr::setAsyncCallback
    - DNSName
    - initSR
    - addDS
    - std::unique_ptr::getValidationState
    - ComboAddress
    - BOOST_CHECK_EQUAL
    - getCopy
    - ComboAddress::toString
    - vector::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_dnssec_insecure_to_secure_cname)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:636,1
    - Dst: setDNSSECValidation
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:638,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:640,1
    - Dst: getCopy
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:646,1
    - Dst: auto::dsAnchors::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:647,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:648,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:649,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:649,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:650,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:650,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:651,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:651,1
    - Dst: setState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:652,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:656,1
    - Dst: genericDSAndDNSKEYHandler
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:660,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:663,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:664,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:665,1
    - Dst: addDS
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:666,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:666,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:667,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:667,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:668,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:671,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:672,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:673,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:674,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:675,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:675,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:676,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:677,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:677,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:679,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:679,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:680,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:681,1
    - Dst: addDS
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:682,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:682,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:683,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:683,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:684,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:688,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:689,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:691,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:692,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:693,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:694,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:698,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:698,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:702,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:702,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:703,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:714,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:714,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:715,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:716,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:716,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:717,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:717,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:718,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:721,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:722,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:722,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:723,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:724,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:724,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:725,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:725,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:726,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 71
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 727
      start: 633
    functionDepth: 4
    functionLinenumber: 633
    functionLinenumberEnd: 727
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc7.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - genericDSAndDNSKEYHandler
    - primeHints
    - setDNSSECValidation
    - DNSName::toString
    - std::unique_ptr::beginResolve
    - isRootServer
    - setState
    - QType
    - generateKeyMaterial
    - addRecordToLW
    - auto::dsAnchors::clear
    - addRRSIG
    - vector::clear
    - BOOST_REQUIRE_EQUAL
    - std::unique_ptr::setAsyncCallback
    - DNSName
    - initSR
    - addDS
    - std::unique_ptr::getValidationState
    - ComboAddress
    - BOOST_CHECK_EQUAL
    - getCopy
    - ComboAddress::toString
    - vector::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_dnssec_bogus_to_secure_cname)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:732,1
    - Dst: setDNSSECValidation
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:734,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:736,1
    - Dst: getCopy
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:742,1
    - Dst: auto::dsAnchors::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:743,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:744,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:745,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:745,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:746,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:746,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:747,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:747,1
    - Dst: setState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:748,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:752,1
    - Dst: genericDSAndDNSKEYHandler
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:756,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:759,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:760,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:761,1
    - Dst: addDS
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:762,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:762,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:763,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:763,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:764,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:767,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:768,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:769,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:770,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:771,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:771,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:772,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:773,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:773,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:775,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:775,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:776,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:777,1
    - Dst: addDS
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:778,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:778,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:779,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:779,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:780,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:784,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:785,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:787,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:788,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:789,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:790,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:794,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:794,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:795,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:798,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:798,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:810,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:810,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:811,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:812,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:812,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:813,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:813,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:814,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:817,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:818,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:818,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:819,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:820,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:820,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:821,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:821,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:822,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 71
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 823
      start: 729
    functionDepth: 4
    functionLinenumber: 729
    functionLinenumberEnd: 823
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc7.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - genericDSAndDNSKEYHandler
    - primeHints
    - setDNSSECValidation
    - DNSName::toString
    - std::unique_ptr::beginResolve
    - isRootServer
    - setState
    - QType
    - generateKeyMaterial
    - addRecordToLW
    - auto::dsAnchors::clear
    - addRRSIG
    - vector::clear
    - BOOST_REQUIRE_EQUAL
    - std::unique_ptr::setAsyncCallback
    - DNSName
    - initSR
    - addDS
    - std::unique_ptr::getValidationState
    - ComboAddress
    - BOOST_CHECK_EQUAL
    - getCopy
    - ComboAddress::toString
    - vector::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_dnssec_secure_to_bogus_cname)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:828,1
    - Dst: setDNSSECValidation
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:830,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:832,1
    - Dst: getCopy
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:838,1
    - Dst: auto::dsAnchors::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:839,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:840,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:841,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:841,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:842,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:842,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:843,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:843,1
    - Dst: setState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:844,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:848,1
    - Dst: genericDSAndDNSKEYHandler
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:852,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:855,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:856,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:857,1
    - Dst: addDS
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:858,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:858,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:859,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:859,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:860,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:863,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:864,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:865,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:866,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:867,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:867,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:868,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:869,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:869,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:871,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:871,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:872,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:873,1
    - Dst: addDS
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:874,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:874,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:875,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:875,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:876,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:880,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:881,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:883,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:884,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:885,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:886,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:890,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:890,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:891,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:894,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:894,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:895,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:906,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:906,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:907,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:908,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:908,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:909,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:909,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:910,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:913,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:914,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:914,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:915,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:916,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:916,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:917,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:917,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:918,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 72
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 919
      start: 825
    functionDepth: 4
    functionLinenumber: 825
    functionLinenumberEnd: 919
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc7.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - genericDSAndDNSKEYHandler
    - primeHints
    - setDNSSECValidation
    - DNSName::toString
    - std::unique_ptr::beginResolve
    - isRootServer
    - setState
    - QType
    - generateKeyMaterial
    - addRecordToLW
    - auto::dsAnchors::clear
    - addRRSIG
    - vector::clear
    - BOOST_REQUIRE_EQUAL
    - std::unique_ptr::setAsyncCallback
    - DNSName
    - initSR
    - addDS
    - std::unique_ptr::getValidationState
    - ComboAddress
    - BOOST_CHECK_EQUAL
    - getCopy
    - ComboAddress::toString
    - vector::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_dnssec_secure_to_secure_cname)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:924,1
    - Dst: setDNSSECValidation
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:926,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:928,1
    - Dst: getCopy
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:934,1
    - Dst: auto::dsAnchors::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:935,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:936,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:937,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:937,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:938,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:938,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:939,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:939,1
    - Dst: setState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:940,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:944,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:948,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:949,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:950,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:951,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:951,1
    - Dst: addNSECRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:952,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:952,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:953,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:953,1
    - Dst: genericDSAndDNSKEYHandler
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:956,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:959,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:959,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:960,1
    - Dst: addDNSKEY
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:961,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:962,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:965,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:966,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:970,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:971,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:972,1
    - Dst: addDS
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:973,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:973,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:974,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:974,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:975,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:978,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:979,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:980,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:981,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:982,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:982,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:983,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:984,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:984,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:986,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:986,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:987,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:988,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:989,1
    - Dst: addDS
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:990,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:990,1
    - Dst: addNSECRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:993,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:993,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:995,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:995,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:996,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1000,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1001,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1003,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1004,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1007,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1008,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1008,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1012,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1012,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1023,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1023,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1024,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1025,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1025,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1027,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1027,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1028,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1031,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1032,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1032,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1033,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1034,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1034,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1035,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1035,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1036,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 92
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1037
      start: 921
    functionDepth: 4
    functionLinenumber: 921
    functionLinenumberEnd: 1037
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc7.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - genericDSAndDNSKEYHandler
    - primeHints
    - setDNSSECValidation
    - DNSName::toString
    - addDNSKEY
    - std::unique_ptr::beginResolve
    - isRootServer
    - setState
    - QType
    - generateKeyMaterial
    - addRecordToLW
    - auto::dsAnchors::clear
    - addRRSIG
    - addNSECRecordToLW
    - vector::clear
    - std::unique_ptr::setAsyncCallback
    - DNSName
    - initSR
    - addDS
    - std::unique_ptr::getValidationState
    - ComboAddress
    - BOOST_CHECK_EQUAL
    - getCopy
    - ComboAddress::toString
    - vector::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_dnssec_bogus_to_insecure_cname)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1042,1
    - Dst: setDNSSECValidation
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1044,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1046,1
    - Dst: getCopy
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1051,1
    - Dst: auto::dsAnchors::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1052,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1053,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1055,1
    - Dst: insert
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1056,1
    - Dst: setState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1057,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1061,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1065,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1066,1
    - Dst: addDNSKEY
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1067,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1068,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1071,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1072,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1073,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1078,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1079,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1080,1
    - Dst: addNSECRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1081,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1081,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1081,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1082,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1082,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1083,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1086,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1088,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1089,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1090,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1092,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1093,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1094,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1095,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1099,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1100,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1102,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1105,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1105,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1107,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1116,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1116,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1117,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1119,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1119,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1121,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1121,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1122,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1123,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1126,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1127,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1127,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1128,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1129,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1129,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1130,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1130,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1131,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1132,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 70
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1133
      start: 1039
    functionDepth: 3
    functionLinenumber: 1039
    functionLinenumberEnd: 1133
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc7.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - primeHints
    - setDNSSECValidation
    - addDNSKEY
    - insert
    - std::unique_ptr::beginResolve
    - isRootServer
    - setState
    - QType
    - generateKeyMaterial
    - addRecordToLW
    - auto::dsAnchors::clear
    - addRRSIG
    - addNSECRecordToLW
    - vector::clear
    - BOOST_REQUIRE_EQUAL
    - std::unique_ptr::setAsyncCallback
    - DNSName
    - initSR
    - std::unique_ptr::getValidationState
    - ComboAddress
    - BOOST_CHECK
    - BOOST_CHECK_EQUAL
    - getCopy
    - ComboAddress::toString
    - vector::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_dnssec_insecure_ta)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1138,1
    - Dst: setDNSSECValidation
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1140,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1142,1
    - Dst: getCopy
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1147,1
    - Dst: auto::dsAnchors::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1148,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1149,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1151,1
    - Dst: insert
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1152,1
    - Dst: setState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1153,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1157,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1161,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1162,1
    - Dst: addDNSKEY
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1163,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1164,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1167,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1168,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1169,1
    - Dst: DNSName::isPartOf
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1174,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1174,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1175,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1176,1
    - Dst: addNSECRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1177,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1177,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1177,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1178,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1178,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1179,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1182,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1184,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1185,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1186,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1188,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1189,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1190,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1191,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1195,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1196,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1198,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1201,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1201,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1212,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1212,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1213,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1215,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1215,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1217,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1217,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1218,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1219,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1222,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1223,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1223,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1224,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1225,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1225,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1226,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1226,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1227,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1228,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 69
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1229
      start: 1135
    functionDepth: 3
    functionLinenumber: 1135
    functionLinenumberEnd: 1229
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc7.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - primeHints
    - setDNSSECValidation
    - addDNSKEY
    - insert
    - std::unique_ptr::beginResolve
    - isRootServer
    - setState
    - QType
    - generateKeyMaterial
    - addRecordToLW
    - auto::dsAnchors::clear
    - addRRSIG
    - addNSECRecordToLW
    - DNSName::isPartOf
    - vector::clear
    - BOOST_REQUIRE_EQUAL
    - std::unique_ptr::setAsyncCallback
    - DNSName
    - initSR
    - std::unique_ptr::getValidationState
    - ComboAddress
    - BOOST_CHECK
    - BOOST_CHECK_EQUAL
    - getCopy
    - ComboAddress::toString
    - vector::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_dnssec_insecure_ta_norrsig)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1234,1
    - Dst: setDNSSECValidation
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1236,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1238,1
    - Dst: getCopy
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1242,1
    - Dst: auto::dsAnchors::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1243,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1244,1
    - Dst: setState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1247,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1251,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1256,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1260,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1260,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1263,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1265,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1266,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1272,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1283,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1283,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1284,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1285,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1285,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1287,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1287,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1288,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1291,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1292,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1292,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1293,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1294,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1294,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1295,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1295,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1296,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 37
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1297
      start: 1231
    functionDepth: 3
    functionLinenumber: 1231
    functionLinenumberEnd: 1297
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc7.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - primeHints
    - setDNSSECValidation
    - std::unique_ptr::beginResolve
    - std::string
    - setState
    - QType
    - generateKeyMaterial
    - addRecordToLW
    - auto::dsAnchors::clear
    - addRRSIG
    - vector::clear
    - BOOST_REQUIRE_EQUAL
    - std::unique_ptr::setAsyncCallback
    - initSR
    - std::unique_ptr::getValidationState
    - BOOST_CHECK_EQUAL
    - getCopy
    - vector::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_dnssec_nta)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1302,1
    - Dst: setDNSSECValidation
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1304,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1306,1
    - Dst: getCopy
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1311,1
    - Dst: auto::dsAnchors::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1312,1
    - Dst: setState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1313,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1317,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1322,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1326,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1326,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1329,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1330,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1339,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1339,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1340,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1341,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1341,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1343,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1343,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1344,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1347,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1348,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1348,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1349,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1350,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1350,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1351,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1351,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1352,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 30
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1353
      start: 1299
    functionDepth: 3
    functionLinenumber: 1299
    functionLinenumberEnd: 1353
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc7.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - setState
    - std::unique_ptr::setAsyncCallback
    - primeHints
    - QType
    - addRecordToLW
    - BOOST_CHECK_EQUAL
    - initSR
    - std::unique_ptr::getValidationState
    - setDNSSECValidation
    - getCopy
    - auto::dsAnchors::clear
    - std::unique_ptr::beginResolve
    - std::string
    - vector::size
    - vector::clear
    - BOOST_REQUIRE_EQUAL
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_dnssec_no_ta)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1358,1
    - Dst: setDNSSECValidation
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1360,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1362,1
    - Dst: getCopy
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1366,1
    - Dst: auto::dsAnchors::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1367,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1368,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1368,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1369,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1369,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1370,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1370,1
    - Dst: setState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1371,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1375,1
    - Dst: genericDSAndDNSKEYHandler
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1379,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1382,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1383,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1384,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1384,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1385,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1385,1
    - Dst: addNSECRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1386,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1386,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1386,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1387,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1387,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1391,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1400,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1400,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1401,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1402,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1402,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1403,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1403,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1405,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1408,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1409,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1409,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1410,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1411,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1411,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1412,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1412,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1414,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 40
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1415
      start: 1355
    functionDepth: 4
    functionLinenumber: 1355
    functionLinenumberEnd: 1415
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc7.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - genericDSAndDNSKEYHandler
    - primeHints
    - setDNSSECValidation
    - std::unique_ptr::beginResolve
    - setState
    - QType
    - generateKeyMaterial
    - addRecordToLW
    - auto::dsAnchors::clear
    - addRRSIG
    - addNSECRecordToLW
    - vector::clear
    - BOOST_REQUIRE_EQUAL
    - std::unique_ptr::setAsyncCallback
    - DNSName
    - initSR
    - std::unique_ptr::getValidationState
    - BOOST_CHECK_EQUAL
    - getCopy
    - vector::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_dnssec_bogus_nodata)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1420,1
    - Dst: setDNSSECValidation
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1422,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1424,1
    - Dst: getCopy
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1428,1
    - Dst: auto::dsAnchors::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1429,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1430,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1430,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1431,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1431,1
    - Dst: setState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1432,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1436,1
    - Dst: isPartOf
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1440,1
    - Dst: genericDSAndDNSKEYHandler
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1442,1
    - Dst: genericDSAndDNSKEYHandler
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1444,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1446,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1447,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1448,1
    - Dst: addDS
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1449,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1449,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1450,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1450,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1451,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1455,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1456,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1457,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1457,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1458,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1458,1
    - Dst: addNSECRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1459,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1459,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1459,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1460,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1460,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1464,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1473,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1473,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1474,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1475,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1475,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1476,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1476,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1478,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1481,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1482,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1482,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1483,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1484,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1484,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1485,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1485,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1487,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 49
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1488
      start: 1417
    functionDepth: 4
    functionLinenumber: 1417
    functionLinenumberEnd: 1488
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc7.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - genericDSAndDNSKEYHandler
    - primeHints
    - setDNSSECValidation
    - std::unique_ptr::beginResolve
    - isRootServer
    - setState
    - QType
    - generateKeyMaterial
    - addRecordToLW
    - auto::dsAnchors::clear
    - addRRSIG
    - addNSECRecordToLW
    - vector::clear
    - BOOST_REQUIRE_EQUAL
    - std::unique_ptr::setAsyncCallback
    - isPartOf
    - DNSName
    - initSR
    - addDS
    - std::unique_ptr::getValidationState
    - BOOST_CHECK_EQUAL
    - getCopy
    - vector::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_dnssec_insecure_missing_soa_on_nodata)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1493,1
    - Dst: setDNSSECValidation
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1495,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1497,1
    - Dst: getCopy
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1501,1
    - Dst: auto::dsAnchors::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1502,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1503,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1503,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1504,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1504,1
    - Dst: setState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1505,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1509,1
    - Dst: isPartOf
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1513,1
    - Dst: genericDSAndDNSKEYHandler
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1515,1
    - Dst: genericDSAndDNSKEYHandler
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1517,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1519,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1520,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1521,1
    - Dst: addDS
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1522,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1522,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1523,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1523,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1524,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1528,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1529,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1530,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1530,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1531,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1531,1
    - Dst: addNSECRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1532,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1532,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1532,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1533,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1533,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1537,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1546,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1546,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1547,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1548,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1548,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1549,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1549,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1551,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1554,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1555,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1555,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1556,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1557,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1557,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1558,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1558,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1560,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 49
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1561
      start: 1490
    functionDepth: 4
    functionLinenumber: 1490
    functionLinenumberEnd: 1561
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc7.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - genericDSAndDNSKEYHandler
    - primeHints
    - setDNSSECValidation
    - std::unique_ptr::beginResolve
    - isRootServer
    - setState
    - QType
    - generateKeyMaterial
    - addRecordToLW
    - auto::dsAnchors::clear
    - addRRSIG
    - addNSECRecordToLW
    - vector::clear
    - BOOST_REQUIRE_EQUAL
    - std::unique_ptr::setAsyncCallback
    - isPartOf
    - DNSName
    - initSR
    - addDS
    - std::unique_ptr::getValidationState
    - BOOST_CHECK_EQUAL
    - getCopy
    - vector::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_dnssec_insecure_missing_soa_on_nxd)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1566,1
    - Dst: setDNSSECValidation
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1568,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1570,1
    - Dst: getCopy
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1574,1
    - Dst: auto::dsAnchors::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1575,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1576,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1576,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1577,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1577,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1578,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1578,1
    - Dst: setState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1579,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1583,1
    - Dst: genericDSAndDNSKEYHandler
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1587,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1590,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1591,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1592,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1592,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1593,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1593,1
    - Dst: addNSECRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1594,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1594,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1594,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1595,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1595,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1599,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1608,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1608,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1609,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1610,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1610,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1611,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1611,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1614,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1617,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1618,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1618,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1619,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1620,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1620,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1621,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1621,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1623,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 40
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1624
      start: 1563
    functionDepth: 4
    functionLinenumber: 1563
    functionLinenumberEnd: 1624
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc7.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - genericDSAndDNSKEYHandler
    - primeHints
    - setDNSSECValidation
    - std::unique_ptr::beginResolve
    - setState
    - QType
    - generateKeyMaterial
    - addRecordToLW
    - auto::dsAnchors::clear
    - addRRSIG
    - addNSECRecordToLW
    - vector::clear
    - BOOST_REQUIRE_EQUAL
    - std::unique_ptr::setAsyncCallback
    - DNSName
    - initSR
    - std::unique_ptr::getValidationState
    - BOOST_CHECK_EQUAL
    - getCopy
    - vector::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_dnssec_bogus_nxdomain)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1629,1
    - Dst: setDNSSECValidation
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1631,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1633,1
    - Dst: getCopy
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1639,1
    - Dst: auto::dsAnchors::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1640,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1641,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1642,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1642,1
    - Dst: setState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1643,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1647,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1651,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1651,1
    - Dst: genericDSAndDNSKEYHandler
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1652,1
    - Dst: genericDSAndDNSKEYHandler
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1654,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1657,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1658,1
    - Dst: addDNSKEY
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1659,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1660,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1663,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1664,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1668,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1669,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1670,1
    - Dst: addDS
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1671,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1671,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1672,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1672,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1673,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1676,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1677,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1678,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1679,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1680,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1681,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1681,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1682,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1683,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1683,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1686,1
    - Dst: isPartOf
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1687,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1687,1
    - Dst: addNSECRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1688,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1688,1
    - Dst: addNSECRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1691,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1691,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1693,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1693,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1694,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1699,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1700,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1703,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1704,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1707,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1708,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1708,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1710,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1710,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1711,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1714,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1714,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1726,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1726,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1727,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1728,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1728,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1729,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1729,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1730,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1733,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1734,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1734,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1735,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1736,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1736,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1737,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1737,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1738,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1741,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1742,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1742,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1742,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1743,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1744,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1744,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1745,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1745,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1746,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1749,1
    - Dst: wipe
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1749,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1750,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1751,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1751,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1751,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1752,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1753,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1753,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1754,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1754,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1755,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 100
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1756
      start: 1626
    functionDepth: 4
    functionLinenumber: 1626
    functionLinenumberEnd: 1756
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc7.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - genericDSAndDNSKEYHandler
    - primeHints
    - setDNSSECValidation
    - DNSName::toString
    - addDNSKEY
    - std::unique_ptr::beginResolve
    - isRootServer
    - setState
    - QType
    - generateKeyMaterial
    - addRecordToLW
    - auto::dsAnchors::clear
    - addRRSIG
    - addNSECRecordToLW
    - vector::clear
    - BOOST_REQUIRE_EQUAL
    - std::unique_ptr::setAsyncCallback
    - isPartOf
    - DNSName
    - initSR
    - addDS
    - std::unique_ptr::getValidationState
    - wipe
    - ComboAddress
    - BOOST_CHECK_EQUAL
    - getCopy
    - ComboAddress::toString
    - vector::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_dnssec_secure_to_insecure_cut_with_cname_at_apex)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1764,1
    - Dst: setDNSSECValidation
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1766,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1768,1
    - Dst: getCopy
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1774,1
    - Dst: auto::dsAnchors::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1775,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1776,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1777,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1777,1
    - Dst: setState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1778,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1782,1
    - Dst: isPartOf
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1786,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1786,1
    - Dst: isPartOf
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1786,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1786,1
    - Dst: genericDSAndDNSKEYHandler
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1789,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1789,1
    - Dst: genericDSAndDNSKEYHandler
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1791,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1794,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1795,1
    - Dst: addDNSKEY
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1796,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1797,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1800,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1801,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1805,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1806,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1807,1
    - Dst: addDS
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1808,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1808,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1809,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1809,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1810,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1813,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1814,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1816,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1817,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1818,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1818,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1819,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1820,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1820,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1823,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1824,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1824,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1825,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1825,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1827,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1827,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1828,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1829,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1829,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1832,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1832,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1833,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1833,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1845,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1845,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1846,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1847,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1847,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1848,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1848,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1849,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1852,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1853,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1853,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1854,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1855,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1855,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1856,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1856,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1857,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1860,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1861,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1861,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1861,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1862,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1863,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1863,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1864,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1864,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1865,1
    - Dst: wipe
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1868,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1869,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1870,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1870,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1870,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1871,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1872,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1872,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1873,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1873,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc7.cc:1874,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 84
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1875
      start: 1758
    functionDepth: 4
    functionLinenumber: 1758
    functionLinenumberEnd: 1875
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc7.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - genericDSAndDNSKEYHandler
    - primeHints
    - setDNSSECValidation
    - DNSName::toString
    - addDNSKEY
    - std::unique_ptr::beginResolve
    - isRootServer
    - setState
    - QType
    - generateKeyMaterial
    - addRecordToLW
    - auto::dsAnchors::clear
    - addRRSIG
    - vector::clear
    - BOOST_REQUIRE_EQUAL
    - std::unique_ptr::setAsyncCallback
    - isPartOf
    - DNSName
    - initSR
    - addDS
    - std::unique_ptr::getValidationState
    - wipe
    - ComboAddress
    - BOOST_CHECK_EQUAL
    - getCopy
    - ComboAddress::toString
    - vector::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_dnssec_cname_inside_secure_zone)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/recursordist/test-ednsoptions_cc.cc:26,1
    - Dst: EDNSCookiesOpt::makeOptString
      Src: /src/pdns/pdns/recursordist/test-ednsoptions_cc.cc:29,1
    - Dst: EDNSSubnetOpts::setSource
      Src: /src/pdns/pdns/recursordist/test-ednsoptions_cc.cc:31,1
    - Dst: EDNSSubnetOpts::makeOptString
      Src: /src/pdns/pdns/recursordist/test-ednsoptions_cc.cc:32,1
    - Dst: DNSPacketWriter::optvect_t::emplace_back
      Src: /src/pdns/pdns/recursordist/test-ednsoptions_cc.cc:34,1
    - Dst: DNSPacketWriter::optvect_t::emplace_back
      Src: /src/pdns/pdns/recursordist/test-ednsoptions_cc.cc:35,1
    - Dst: DNSPacketWriter::optvect_t::emplace_back
      Src: /src/pdns/pdns/recursordist/test-ednsoptions_cc.cc:36,1
    - Dst: DNSPacketWriter::addOpt
      Src: /src/pdns/pdns/recursordist/test-ednsoptions_cc.cc:37,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/recursordist/test-ednsoptions_cc.cc:38,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 5
    argNames:
    - ' name'
    - ' ecs'
    - ' clientCookie'
    - ' serverCookie'
    - ' query'
    argTypes:
    - DNSName
    - Netmask
    - std::string
    - std::string
    - std::vector<uint8_t>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 39
      start: 23
    functionDepth: 0
    functionLinenumber: 23
    functionLinenumberEnd: 39
    functionName: getRawQueryWithECSAndCookie
    functionSourceFile: /src/pdns/pdns/recursordist/test-ednsoptions_cc.cc
    functionUses: 0
    functionsReached:
    - DNSPacketWriter::commit
    - EDNSSubnetOpts::makeOptString
    - EDNSSubnetOpts::setSource
    - DNSPacketWriter::addOpt
    - EDNSCookiesOpt::makeOptString
    - DNSPacketWriter::optvect_t::emplace_back
    linkageType: ''
    returnType: void
    signature: void getRawQueryWithECSAndCookie(const DNSName& name, const Netmask&
      ecs, const std::string& clientCookie, const std::string& serverCookie, std::vector<uint8_t>&
      query)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getRawQueryWithECSAndCookie
      Src: /src/pdns/pdns/recursordist/test-ednsoptions_cc.cc:47,1
    - Dst: reinterpret_cast<struct dnsheader*>
      Src: /src/pdns/pdns/recursordist/test-ednsoptions_cc.cc:49,1
    - Dst: vector::data
      Src: /src/pdns/pdns/recursordist/test-ednsoptions_cc.cc:49,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-ednsoptions_cc.cc:50,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-ednsoptions_cc.cc:52,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/recursordist/test-ednsoptions_cc.cc:52,1
    - Dst: vector::data
      Src: /src/pdns/pdns/recursordist/test-ednsoptions_cc.cc:52,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-ednsoptions_cc.cc:56,1
    - Dst: ntohs
      Src: /src/pdns/pdns/recursordist/test-ednsoptions_cc.cc:56,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/recursordist/test-ednsoptions_cc.cc:57,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-ednsoptions_cc.cc:59,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-ednsoptions_cc.cc:59,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/recursordist/test-ednsoptions_cc.cc:60,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-ednsoptions_cc.cc:60,1
    - Dst: getEDNSOption
      Src: /src/pdns/pdns/recursordist/test-ednsoptions_cc.cc:64,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/recursordist/test-ednsoptions_cc.cc:64,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-ednsoptions_cc.cc:64,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-ednsoptions_cc.cc:65,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/recursordist/test-ednsoptions_cc.cc:68,1
    - Dst: EDNSSubnetOpts::getFromString
      Src: /src/pdns/pdns/recursordist/test-ednsoptions_cc.cc:68,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/recursordist/test-ednsoptions_cc.cc:68,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-ednsoptions_cc.cc:68,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-ednsoptions_cc.cc:70,1
    - Dst: EDNSSubnetOpts::getSource
      Src: /src/pdns/pdns/recursordist/test-ednsoptions_cc.cc:70,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 41
    functionDepth: 1
    functionLinenumber: 41
    functionLinenumberEnd: 71
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-ednsoptions_cc.cc
    functionUses: 0
    functionsReached:
    - vector::at
    - BOOST_CHECK
    - ntohs
    - getRawQueryWithECSAndCookie
    - DNSName
    - BOOST_CHECK_EQUAL
    - EDNSSubnetOpts::getFromString
    - reinterpret_cast<const char*>
    - EDNSSubnetOpts::getSource
    - BOOST_REQUIRE
    - vector::data
    - vector::size
    - BOOST_REQUIRE_EQUAL
    - getEDNSOption
    - reinterpret_cast<struct dnsheader*>
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_getEDNSOption)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getRawQueryWithECSAndCookie
      Src: /src/pdns/pdns/recursordist/test-ednsoptions_cc.cc:79,1
    - Dst: reinterpret_cast<struct dnsheader*>
      Src: /src/pdns/pdns/recursordist/test-ednsoptions_cc.cc:81,1
    - Dst: vector::data
      Src: /src/pdns/pdns/recursordist/test-ednsoptions_cc.cc:81,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-ednsoptions_cc.cc:82,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-ednsoptions_cc.cc:84,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/pdns/recursordist/test-ednsoptions_cc.cc:84,1
    - Dst: vector::data
      Src: /src/pdns/pdns/recursordist/test-ednsoptions_cc.cc:84,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-ednsoptions_cc.cc:88,1
    - Dst: ntohs
      Src: /src/pdns/pdns/recursordist/test-ednsoptions_cc.cc:88,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/recursordist/test-ednsoptions_cc.cc:89,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-ednsoptions_cc.cc:91,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-ednsoptions_cc.cc:91,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/recursordist/test-ednsoptions_cc.cc:92,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-ednsoptions_cc.cc:92,1
    - Dst: getEDNSOptions
      Src: /src/pdns/pdns/recursordist/test-ednsoptions_cc.cc:95,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/recursordist/test-ednsoptions_cc.cc:95,1
    - Dst: vector::data
      Src: /src/pdns/pdns/recursordist/test-ednsoptions_cc.cc:95,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-ednsoptions_cc.cc:96,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-ednsoptions_cc.cc:99,1
    - Dst: EDNSOptionViewMap::size
      Src: /src/pdns/pdns/recursordist/test-ednsoptions_cc.cc:99,1
    - Dst: EDNSOptionViewMap::find
      Src: /src/pdns/pdns/recursordist/test-ednsoptions_cc.cc:101,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/recursordist/test-ednsoptions_cc.cc:102,1
    - Dst: EDNSOptionViewMap::end
      Src: /src/pdns/pdns/recursordist/test-ednsoptions_cc.cc:102,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-ednsoptions_cc.cc:103,1
    - Dst: auto::second::values::size
      Src: /src/pdns/pdns/recursordist/test-ednsoptions_cc.cc:103,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/recursordist/test-ednsoptions_cc.cc:104,1
    - Dst: auto::second::values::at
      Src: /src/pdns/pdns/recursordist/test-ednsoptions_cc.cc:104,1
    - Dst: BOOST_REQUIRE_GT
      Src: /src/pdns/pdns/recursordist/test-ednsoptions_cc.cc:105,1
    - Dst: auto::second::values::at
      Src: /src/pdns/pdns/recursordist/test-ednsoptions_cc.cc:105,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/recursordist/test-ednsoptions_cc.cc:108,1
    - Dst: EDNSSubnetOpts::getFromString
      Src: /src/pdns/pdns/recursordist/test-ednsoptions_cc.cc:108,1
    - Dst: auto::second::values::at
      Src: /src/pdns/pdns/recursordist/test-ednsoptions_cc.cc:108,1
    - Dst: auto::second::values::at
      Src: /src/pdns/pdns/recursordist/test-ednsoptions_cc.cc:108,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-ednsoptions_cc.cc:109,1
    - Dst: EDNSSubnetOpts::getSource
      Src: /src/pdns/pdns/recursordist/test-ednsoptions_cc.cc:109,1
    - Dst: EDNSOptionViewMap::find
      Src: /src/pdns/pdns/recursordist/test-ednsoptions_cc.cc:111,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/recursordist/test-ednsoptions_cc.cc:112,1
    - Dst: EDNSOptionViewMap::end
      Src: /src/pdns/pdns/recursordist/test-ednsoptions_cc.cc:112,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-ednsoptions_cc.cc:113,1
    - Dst: auto::second::values::size
      Src: /src/pdns/pdns/recursordist/test-ednsoptions_cc.cc:113,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/recursordist/test-ednsoptions_cc.cc:114,1
    - Dst: auto::second::values::at
      Src: /src/pdns/pdns/recursordist/test-ednsoptions_cc.cc:114,1
    - Dst: BOOST_REQUIRE_GT
      Src: /src/pdns/pdns/recursordist/test-ednsoptions_cc.cc:115,1
    - Dst: auto::second::values::at
      Src: /src/pdns/pdns/recursordist/test-ednsoptions_cc.cc:115,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/recursordist/test-ednsoptions_cc.cc:116,1
    - Dst: auto::second::values::at
      Src: /src/pdns/pdns/recursordist/test-ednsoptions_cc.cc:116,1
    - Dst: BOOST_REQUIRE_GT
      Src: /src/pdns/pdns/recursordist/test-ednsoptions_cc.cc:117,1
    - Dst: auto::second::values::at
      Src: /src/pdns/pdns/recursordist/test-ednsoptions_cc.cc:117,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 21
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 118
      start: 73
    functionDepth: 1
    functionLinenumber: 73
    functionLinenumberEnd: 118
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-ednsoptions_cc.cc
    functionUses: 0
    functionsReached:
    - reinterpret_cast<char*>
    - ntohs
    - auto::second::values::size
    - reinterpret_cast<struct dnsheader*>
    - vector::at
    - getRawQueryWithECSAndCookie
    - auto::second::values::at
    - EDNSSubnetOpts::getFromString
    - BOOST_REQUIRE
    - vector::data
    - EDNSOptionViewMap::find
    - BOOST_REQUIRE_EQUAL
    - EDNSOptionViewMap::size
    - DNSName
    - BOOST_REQUIRE_GT
    - reinterpret_cast<const char*>
    - EDNSSubnetOpts::getSource
    - EDNSOptionViewMap::end
    - BOOST_CHECK
    - BOOST_CHECK_EQUAL
    - getEDNSOptions
    - vector::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_getEDNSOptions)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: EDNSSubnetOpts::setSource
      Src: /src/pdns/pdns/recursordist/test-ednsoptions_cc.cc:124,1
    - Dst: Netmask
      Src: /src/pdns/pdns/recursordist/test-ednsoptions_cc.cc:124,1
    - Dst: EDNSSubnetOpts::makeOptString
      Src: /src/pdns/pdns/recursordist/test-ednsoptions_cc.cc:126,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-ednsoptions_cc.cc:131,1
    - Dst: string::size
      Src: /src/pdns/pdns/recursordist/test-ednsoptions_cc.cc:131,1
    - Dst: memcpy
      Src: /src/pdns/pdns/recursordist/test-ednsoptions_cc.cc:134,1
    - Dst: string::c_str
      Src: /src/pdns/pdns/recursordist/test-ednsoptions_cc.cc:134,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-ednsoptions_cc.cc:135,1
    - Dst: ntohs
      Src: /src/pdns/pdns/recursordist/test-ednsoptions_cc.cc:135,1
    - Dst: ComboAddress::isIPv4
      Src: /src/pdns/pdns/recursordist/test-ednsoptions_cc.cc:135,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-ednsoptions_cc.cc:137,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/recursordist/test-ednsoptions_cc.cc:137,1
    - Dst: string::at
      Src: /src/pdns/pdns/recursordist/test-ednsoptions_cc.cc:137,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-ednsoptions_cc.cc:138,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/recursordist/test-ednsoptions_cc.cc:138,1
    - Dst: string::at
      Src: /src/pdns/pdns/recursordist/test-ednsoptions_cc.cc:138,1
    - Dst: ComboAddress::truncate
      Src: /src/pdns/pdns/recursordist/test-ednsoptions_cc.cc:140,1
    - Dst: ComboAddress::isIPv4
      Src: /src/pdns/pdns/recursordist/test-ednsoptions_cc.cc:145,1
    - Dst: memset
      Src: /src/pdns/pdns/recursordist/test-ednsoptions_cc.cc:146,1
    - Dst: memcpy
      Src: /src/pdns/pdns/recursordist/test-ednsoptions_cc.cc:148,1
    - Dst: string::at
      Src: /src/pdns/pdns/recursordist/test-ednsoptions_cc.cc:148,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/recursordist/test-ednsoptions_cc.cc:149,1
    - Dst: memset
      Src: /src/pdns/pdns/recursordist/test-ednsoptions_cc.cc:152,1
    - Dst: memcpy
      Src: /src/pdns/pdns/recursordist/test-ednsoptions_cc.cc:154,1
    - Dst: string::at
      Src: /src/pdns/pdns/recursordist/test-ednsoptions_cc.cc:154,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/recursordist/test-ednsoptions_cc.cc:155,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/recursordist/test-ednsoptions_cc.cc:160,1
    - Dst: EDNSSubnetOpts::getFromString
      Src: /src/pdns/pdns/recursordist/test-ednsoptions_cc.cc:160,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/recursordist/test-ednsoptions_cc.cc:161,1
    - Dst: EDNSSubnetOpts::getSource
      Src: /src/pdns/pdns/recursordist/test-ednsoptions_cc.cc:161,1
    - Dst: Netmask
      Src: /src/pdns/pdns/recursordist/test-ednsoptions_cc.cc:161,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-ednsoptions_cc.cc:162,1
    - Dst: EDNSSubnetOpts::getScopePrefixLength
      Src: /src/pdns/pdns/recursordist/test-ednsoptions_cc.cc:162,1
    - Dst: EDNSSubnetOpts::getScopePrefixLength
      Src: /src/pdns/pdns/recursordist/test-ednsoptions_cc.cc:162,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 24
    argCount: 3
    argNames:
    - ' sourceStr'
    - sourceMask
    - scopeMask
    argTypes:
    - std::string
    - uint8_t
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 163
      start: 120
    functionDepth: 0
    functionLinenumber: 120
    functionLinenumberEnd: 163
    functionName: checkECSOptionValidity
    functionSourceFile: /src/pdns/pdns/recursordist/test-ednsoptions_cc.cc
    functionUses: 0
    functionsReached:
    - EDNSSubnetOpts::getScopePrefixLength
    - Netmask
    - memcpy
    - string::c_str
    - string::size
    - ComboAddress::isIPv4
    - ntohs
    - EDNSSubnetOpts::setSource
    - static_cast<uint8_t>
    - EDNSSubnetOpts::getFromString
    - memset
    - string::at
    - ComboAddress::truncate
    - EDNSSubnetOpts::getSource
    - BOOST_REQUIRE
    - EDNSSubnetOpts::makeOptString
    - BOOST_REQUIRE_EQUAL
    linkageType: ''
    returnType: void
    signature: void checkECSOptionValidity(const std::string& sourceStr, uint8_t sourceMask,
      uint8_t scopeMask)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: checkECSOptionValidity
      Src: /src/pdns/pdns/recursordist/test-ednsoptions_cc.cc:167,1
    - Dst: checkECSOptionValidity
      Src: /src/pdns/pdns/recursordist/test-ednsoptions_cc.cc:168,1
    - Dst: checkECSOptionValidity
      Src: /src/pdns/pdns/recursordist/test-ednsoptions_cc.cc:169,1
    - Dst: checkECSOptionValidity
      Src: /src/pdns/pdns/recursordist/test-ednsoptions_cc.cc:170,1
    - Dst: checkECSOptionValidity
      Src: /src/pdns/pdns/recursordist/test-ednsoptions_cc.cc:171,1
    - Dst: checkECSOptionValidity
      Src: /src/pdns/pdns/recursordist/test-ednsoptions_cc.cc:172,1
    - Dst: checkECSOptionValidity
      Src: /src/pdns/pdns/recursordist/test-ednsoptions_cc.cc:173,1
    - Dst: checkECSOptionValidity
      Src: /src/pdns/pdns/recursordist/test-ednsoptions_cc.cc:174,1
    - Dst: checkECSOptionValidity
      Src: /src/pdns/pdns/recursordist/test-ednsoptions_cc.cc:175,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 176
      start: 165
    functionDepth: 1
    functionLinenumber: 165
    functionLinenumberEnd: 176
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-ednsoptions_cc.cc
    functionUses: 0
    functionsReached:
    - checkECSOptionValidity
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_makeEDNSSubnetOptsString)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<uint16_t>
      Src: /src/pdns/pdns/recursordist/test-ednsoptions_cc.cc:181,1
    - Dst: makeEDNSExtendedErrorOptString
      Src: /src/pdns/pdns/recursordist/test-ednsoptions_cc.cc:184,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-ednsoptions_cc.cc:185,1
    - Dst: auto::size
      Src: /src/pdns/pdns/recursordist/test-ednsoptions_cc.cc:185,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/test-ednsoptions_cc.cc:185,1
    - Dst: memcpy
      Src: /src/pdns/pdns/recursordist/test-ednsoptions_cc.cc:188,1
    - Dst: auto::c_str
      Src: /src/pdns/pdns/recursordist/test-ednsoptions_cc.cc:188,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-ednsoptions_cc.cc:189,1
    - Dst: ntohs
      Src: /src/pdns/pdns/recursordist/test-ednsoptions_cc.cc:189,1
    - Dst: static_cast<uint16_t>
      Src: /src/pdns/pdns/recursordist/test-ednsoptions_cc.cc:189,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-ednsoptions_cc.cc:190,1
    - Dst: auto::substr
      Src: /src/pdns/pdns/recursordist/test-ednsoptions_cc.cc:190,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/recursordist/test-ednsoptions_cc.cc:193,1
    - Dst: getEDNSExtendedErrorOptFromString
      Src: /src/pdns/pdns/recursordist/test-ednsoptions_cc.cc:193,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-ednsoptions_cc.cc:194,1
    - Dst: static_cast<uint16_t>
      Src: /src/pdns/pdns/recursordist/test-ednsoptions_cc.cc:194,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-ednsoptions_cc.cc:195,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 2
    argNames:
    - code
    - ' extra'
    argTypes:
    - EDNSExtendedError::code
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 196
      start: 178
    functionDepth: 0
    functionLinenumber: 178
    functionLinenumberEnd: 196
    functionName: checkExtendedErrorOptionValidity
    functionSourceFile: /src/pdns/pdns/recursordist/test-ednsoptions_cc.cc
    functionUses: 0
    functionsReached:
    - memcpy
    - auto::c_str
    - ntohs
    - getEDNSExtendedErrorOptFromString
    - size
    - BOOST_CHECK_EQUAL
    - makeEDNSExtendedErrorOptString
    - static_cast<uint16_t>
    - auto::substr
    - BOOST_REQUIRE
    - BOOST_REQUIRE_EQUAL
    - auto::size
    linkageType: ''
    returnType: void
    signature: void checkExtendedErrorOptionValidity(EDNSExtendedError::code code,
      const std::string& extra)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: checkExtendedErrorOptionValidity
      Src: /src/pdns/pdns/recursordist/test-ednsoptions_cc.cc:200,1
    - Dst: checkExtendedErrorOptionValidity
      Src: /src/pdns/pdns/recursordist/test-ednsoptions_cc.cc:201,1
    - Dst: static_cast<EDNSExtendedError::code>
      Src: /src/pdns/pdns/recursordist/test-ednsoptions_cc.cc:201,1
    - Dst: checkExtendedErrorOptionValidity
      Src: /src/pdns/pdns/recursordist/test-ednsoptions_cc.cc:203,1
    - Dst: checkExtendedErrorOptionValidity
      Src: /src/pdns/pdns/recursordist/test-ednsoptions_cc.cc:204,1
    - Dst: std::string::resize
      Src: /src/pdns/pdns/recursordist/test-ednsoptions_cc.cc:208,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/recursordist/test-ednsoptions_cc.cc:209,1
    - Dst: checkExtendedErrorOptionValidity
      Src: /src/pdns/pdns/recursordist/test-ednsoptions_cc.cc:209,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-ednsoptions_cc.cc:213,1
    - Dst: getEDNSExtendedErrorOptFromString
      Src: /src/pdns/pdns/recursordist/test-ednsoptions_cc.cc:213,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 214
      start: 198
    functionDepth: 2
    functionLinenumber: 198
    functionLinenumberEnd: 214
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-ednsoptions_cc.cc
    functionUses: 0
    functionsReached:
    - getEDNSExtendedErrorOptFromString
    - static_cast<EDNSExtendedError::code>
    - std::string::resize
    - BOOST_CHECK_THROW
    - checkExtendedErrorOptionValidity
    - BOOST_CHECK
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_makeEDNSExtendedErrorOptString)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::tie
      Src: /src/pdns/pdns/recursordist/taskqueue.hh:68,1
    - Dst: std::tie
      Src: /src/pdns/pdns/recursordist/taskqueue.hh:68,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' task'
    argTypes:
    - ResolveTask
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 66
    functionDepth: 0
    functionLinenumber: 66
    functionLinenumberEnd: 69
    functionName: operator<(const ResolveTask& task) const
    functionSourceFile: /src/pdns/pdns/recursordist/taskqueue.hh
    functionUses: 0
    functionsReached:
    - std::tie
    linkageType: ''
    returnType: bool
    signature: bool operator<(const ResolveTask& task) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::TaskQueue::empty
      Src: /src/pdns/pdns/recursordist/taskqueue.hh:79,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 77
    functionDepth: 1
    functionLinenumber: 77
    functionLinenumberEnd: 80
    functionName: pdns::TaskQueue::empty
    functionSourceFile: /src/pdns/pdns/recursordist/taskqueue.hh
    functionUses: 1
    functionsReached:
    - pdns::TaskQueue::empty
    linkageType: ''
    returnType: bool
    signature: bool empty() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::TaskQueue::size
      Src: /src/pdns/pdns/recursordist/taskqueue.hh:84,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 82
    functionDepth: 0
    functionLinenumber: 82
    functionLinenumberEnd: 85
    functionName: pdns::TaskQueue::size
    functionSourceFile: /src/pdns/pdns/recursordist/taskqueue.hh
    functionUses: 1
    functionsReached:
    - pdns::TaskQueue::size
    linkageType: ''
    returnType: size_t
    signature: size_t size() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 90
    functionDepth: 0
    functionLinenumber: 90
    functionLinenumberEnd: 93
    functionName: pdns::TaskQueue::getPushes
    functionSourceFile: /src/pdns/pdns/recursordist/taskqueue.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t getPushes() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 95
    functionDepth: 0
    functionLinenumber: 95
    functionLinenumberEnd: 98
    functionName: pdns::TaskQueue::getExpired
    functionSourceFile: /src/pdns/pdns/recursordist/taskqueue.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t getExpired() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 100
    functionDepth: 0
    functionLinenumber: 100
    functionLinenumberEnd: 103
    functionName: pdns::TaskQueue::incExpired
    functionSourceFile: /src/pdns/pdns/recursordist/taskqueue.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void incExpired()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::TaskQueue::clear
      Src: /src/pdns/pdns/recursordist/taskqueue.hh:107,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 105
    functionDepth: 0
    functionLinenumber: 105
    functionLinenumberEnd: 108
    functionName: pdns::TaskQueue::clear
    functionSourceFile: /src/pdns/pdns/recursordist/taskqueue.hh
    functionUses: 1
    functionsReached:
    - pdns::TaskQueue::clear
    linkageType: ''
    returnType: void
    signature: void clear()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::tie
      Src: /src/pdns/pdns/recursordist/taskqueue.hh:68,1
    - Dst: std::tie
      Src: /src/pdns/pdns/recursordist/taskqueue.hh:68,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' task'
    argTypes:
    - ResolveTask
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 66
    functionDepth: 0
    functionLinenumber: 66
    functionLinenumberEnd: 69
    functionName: operator<(const ResolveTask& task) const
    functionSourceFile: /src/pdns/pdns/recursordist/taskqueue.hh
    functionUses: 0
    functionsReached:
    - std::tie
    linkageType: ''
    returnType: bool
    signature: bool operator<(const ResolveTask& task) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::TaskQueue::empty
      Src: /src/pdns/pdns/recursordist/taskqueue.hh:79,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 77
    functionDepth: 1
    functionLinenumber: 77
    functionLinenumberEnd: 80
    functionName: pdns::TaskQueue::empty
    functionSourceFile: /src/pdns/pdns/recursordist/taskqueue.hh
    functionUses: 2
    functionsReached:
    - pdns::TaskQueue::empty
    linkageType: ''
    returnType: bool
    signature: bool empty() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::TaskQueue::size
      Src: /src/pdns/pdns/recursordist/taskqueue.hh:84,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 82
    functionDepth: 0
    functionLinenumber: 82
    functionLinenumberEnd: 85
    functionName: pdns::TaskQueue::size
    functionSourceFile: /src/pdns/pdns/recursordist/taskqueue.hh
    functionUses: 2
    functionsReached:
    - pdns::TaskQueue::size
    linkageType: ''
    returnType: size_t
    signature: size_t size() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 90
    functionDepth: 0
    functionLinenumber: 90
    functionLinenumberEnd: 93
    functionName: pdns::TaskQueue::getPushes
    functionSourceFile: /src/pdns/pdns/recursordist/taskqueue.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t getPushes() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 95
    functionDepth: 0
    functionLinenumber: 95
    functionLinenumberEnd: 98
    functionName: pdns::TaskQueue::getExpired
    functionSourceFile: /src/pdns/pdns/recursordist/taskqueue.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t getExpired() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 100
    functionDepth: 0
    functionLinenumber: 100
    functionLinenumberEnd: 103
    functionName: pdns::TaskQueue::incExpired
    functionSourceFile: /src/pdns/pdns/recursordist/taskqueue.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void incExpired()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::TaskQueue::clear
      Src: /src/pdns/pdns/recursordist/taskqueue.hh:107,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 105
    functionDepth: 0
    functionLinenumber: 105
    functionLinenumberEnd: 108
    functionName: pdns::TaskQueue::clear
    functionSourceFile: /src/pdns/pdns/recursordist/taskqueue.hh
    functionUses: 2
    functionsReached:
    - pdns::TaskQueue::clear
    linkageType: ''
    returnType: void
    signature: void clear()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: __llvm_profile_write_file
      Src: /src/pdns/pdns/recursordist/coverage.cc:44,1
    - Dst: __gcov_dump
      Src: /src/pdns/pdns/recursordist/coverage.cc:46,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 40
    functionDepth: 0
    functionLinenumber: 40
    functionLinenumberEnd: 49
    functionName: pdns::coverage::dumpCoverageData
    functionSourceFile: /src/pdns/pdns/recursordist/coverage.cc
    functionUses: 3
    functionsReached:
    - __llvm_profile_write_file
    - __gcov_dump
    linkageType: ''
    returnType: void
    signature: void dumpCoverageData()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: __llvm_profile_write_file
      Src: /src/pdns/pdns/recursordist/coverage.cc:44,1
    - Dst: __gcov_dump
      Src: /src/pdns/pdns/recursordist/coverage.cc:46,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 40
    functionDepth: 0
    functionLinenumber: 40
    functionLinenumberEnd: 49
    functionName: pdns::coverage::dumpCoverageData
    functionSourceFile: /src/pdns/pdns/recursordist/coverage.cc
    functionUses: 3
    functionsReached:
    - __llvm_profile_write_file
    - __gcov_dump
    linkageType: ''
    returnType: void
    signature: void dumpCoverageData()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::tuple<size_t, size_t, size_t>
      Src: /src/pdns/pdns/recursordist/gss_context.cc:29,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 29
      start: 29
    functionDepth: 0
    functionLinenumber: 29
    functionLinenumberEnd: 29
    functionName: GssContext::getCounts
    functionSourceFile: /src/pdns/pdns/recursordist/gss_context.cc
    functionUses: 1
    functionsReached:
    - std::tuple<size_t, size_t, size_t>
    linkageType: ''
    returnType: std::tuple<size_t, size_t, size_t>
    signature: std::tuple<size_t, size_t, size_t> GssContext::getCounts()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 30
      start: 30
    functionDepth: 0
    functionLinenumber: 30
    functionLinenumberEnd: 30
    functionName: GssContext::supported
    functionSourceFile: /src/pdns/pdns/recursordist/gss_context.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool GssContext::supported()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 32
      start: 31
    functionDepth: 0
    functionLinenumber: 31
    functionLinenumberEnd: 32
    functionName: GssContext::GssContext
    functionSourceFile: /src/pdns/pdns/recursordist/gss_context.cc
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void GssContext::GssContext()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 34
      start: 33
    functionDepth: 0
    functionLinenumber: 33
    functionLinenumberEnd: 34
    functionName: GssContext::GssContext
    functionSourceFile: /src/pdns/pdns/recursordist/gss_context.cc
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void GssContext::GssContext(const DNSName& /* label */)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 35
      start: 35
    functionDepth: 0
    functionLinenumber: 35
    functionLinenumberEnd: 35
    functionName: GssContext::setLocalPrincipal
    functionSourceFile: /src/pdns/pdns/recursordist/gss_context.cc
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void GssContext::setLocalPrincipal(const std::string& /* name */)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 36
      start: 36
    functionDepth: 0
    functionLinenumber: 36
    functionLinenumberEnd: 36
    functionName: GssContext::getLocalPrincipal
    functionSourceFile: /src/pdns/pdns/recursordist/gss_context.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool GssContext::getLocalPrincipal(std::string& /* name */)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 37
    functionDepth: 0
    functionLinenumber: 37
    functionLinenumberEnd: 37
    functionName: GssContext::setPeerPrincipal
    functionSourceFile: /src/pdns/pdns/recursordist/gss_context.cc
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void GssContext::setPeerPrincipal(const std::string& /* name */)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 38
    functionDepth: 0
    functionLinenumber: 38
    functionLinenumberEnd: 38
    functionName: GssContext::getPeerPrincipal
    functionSourceFile: /src/pdns/pdns/recursordist/gss_context.cc
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool GssContext::getPeerPrincipal(std::string& /* name */)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 39
      start: 39
    functionDepth: 0
    functionLinenumber: 39
    functionLinenumberEnd: 39
    functionName: GssContext::generateLabel
    functionSourceFile: /src/pdns/pdns/recursordist/gss_context.cc
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void GssContext::generateLabel(const std::string& /* suffix */)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 40
    functionDepth: 0
    functionLinenumber: 40
    functionLinenumberEnd: 40
    functionName: GssContext::setLabel
    functionSourceFile: /src/pdns/pdns/recursordist/gss_context.cc
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void GssContext::setLabel(const DNSName& /* label */)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 41
    functionDepth: 0
    functionLinenumber: 41
    functionLinenumberEnd: 41
    functionName: GssContext::init
    functionSourceFile: /src/pdns/pdns/recursordist/gss_context.cc
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool GssContext::init(const std::string& /* input */, std::string&
      /* output */)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 42
    functionDepth: 0
    functionLinenumber: 42
    functionLinenumberEnd: 42
    functionName: GssContext::accept
    functionSourceFile: /src/pdns/pdns/recursordist/gss_context.cc
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool GssContext::accept(const std::string& /* input */, std::string&
      /* output */)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 43
    functionName: GssContext::destroy
    functionSourceFile: /src/pdns/pdns/recursordist/gss_context.cc
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool GssContext::destroy()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 44
    functionDepth: 0
    functionLinenumber: 44
    functionLinenumberEnd: 44
    functionName: GssContext::expired
    functionSourceFile: /src/pdns/pdns/recursordist/gss_context.cc
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool GssContext::expired()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 45
    functionDepth: 0
    functionLinenumber: 45
    functionLinenumberEnd: 45
    functionName: GssContext::valid
    functionSourceFile: /src/pdns/pdns/recursordist/gss_context.cc
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool GssContext::valid()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 46
    functionDepth: 0
    functionLinenumber: 46
    functionLinenumberEnd: 46
    functionName: GssContext::sign
    functionSourceFile: /src/pdns/pdns/recursordist/gss_context.cc
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool GssContext::sign(const std::string& /* input */, std::string&
      /* output */)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 47
    functionDepth: 0
    functionLinenumber: 47
    functionLinenumberEnd: 47
    functionName: GssContext::verify
    functionSourceFile: /src/pdns/pdns/recursordist/gss_context.cc
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool GssContext::verify(const std::string& /* input */, const std::string&
      /* signature */)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 48
    functionDepth: 0
    functionLinenumber: 48
    functionLinenumberEnd: 48
    functionName: GssContext::getError
    functionSourceFile: /src/pdns/pdns/recursordist/gss_context.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: GssContextError
    signature: GssContextError GssContext::getError()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/gss_context.cc:68,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/gss_context.cc:69,1
    - Dst: const_cast<void*>
      Src: /src/pdns/pdns/recursordist/gss_context.cc:70,1
    - Dst: static_cast<const void*>
      Src: /src/pdns/pdns/recursordist/gss_context.cc:70,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/gss_context.cc:70,1
    - Dst: gss_import_name
      Src: /src/pdns/pdns/recursordist/gss_context.cc:72,1
    - Dst: GssCredential::renew
      Src: /src/pdns/pdns/recursordist/gss_context.cc:80,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - ' name'
    - usage
    argTypes:
    - std::string
    - gss_cred_usage_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 63
    functionDepth: 0
    functionLinenumber: 63
    functionLinenumberEnd: 81
    functionName: GssCredential::GssCredential
    functionSourceFile: /src/pdns/pdns/recursordist/gss_context.cc
    functionUses: 0
    functionsReached:
    - c_str
    - size
    - GssCredential::renew
    - gss_import_name
    - const_cast<void*>
    - empty
    - static_cast<const void*>
    linkageType: ''
    returnType: void
    signature: void GssCredential(const std::string& name, const gss_cred_usage_t
      usage)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: gss_release_cred
      Src: /src/pdns/pdns/recursordist/gss_context.cc:87,1
    - Dst: gss_release_name
      Src: /src/pdns/pdns/recursordist/gss_context.cc:90,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 83
    functionDepth: 0
    functionLinenumber: 83
    functionLinenumberEnd: 92
    functionName: ~GssCredential()
    functionSourceFile: /src/pdns/pdns/recursordist/gss_context.cc
    functionUses: 0
    functionsReached:
    - gss_release_cred
    - gss_release_name
    linkageType: ''
    returnType: void
    signature: void ~GssCredential()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: time
      Src: /src/pdns/pdns/recursordist/gss_context.cc:99,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 94
    functionDepth: 0
    functionLinenumber: 94
    functionLinenumberEnd: 100
    functionName: GssCredential::expired
    functionSourceFile: /src/pdns/pdns/recursordist/gss_context.cc
    functionUses: 1
    functionsReached:
    - time
    linkageType: ''
    returnType: bool
    signature: bool expired() const
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: gss_acquire_cred
      Src: /src/pdns/pdns/recursordist/gss_context.cc:105,1
    - Dst: gss_release_name
      Src: /src/pdns/pdns/recursordist/gss_context.cc:109,1
    - Dst: time
      Src: /src/pdns/pdns/recursordist/gss_context.cc:120,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 102
    functionDepth: 0
    functionLinenumber: 102
    functionLinenumberEnd: 123
    functionName: GssCredential::renew
    functionSourceFile: /src/pdns/pdns/recursordist/gss_context.cc
    functionUses: 2
    functionsReached:
    - gss_release_name
    - time
    - gss_acquire_cred
    linkageType: ''
    returnType: bool
    signature: bool renew()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: GssCredential::expired
      Src: /src/pdns/pdns/recursordist/gss_context.cc:127,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 125
    functionDepth: 0
    functionLinenumber: 125
    functionLinenumberEnd: 128
    functionName: GssCredential::valid
    functionSourceFile: /src/pdns/pdns/recursordist/gss_context.cc
    functionUses: 0
    functionsReached:
    - GssCredential::expired
    linkageType: ''
    returnType: bool
    signature: bool valid()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::shared_ptr<GssCredential>::valid
      Src: /src/pdns/pdns/recursordist/gss_context.cc:146,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/recursordist/gss_context.cc:147,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/gss_context.cc:149,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - cred
    argTypes:
    - std::shared_ptr<GssCredential>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 150
      start: 144
    functionDepth: 0
    functionLinenumber: 144
    functionLinenumberEnd: 150
    functionName: GssSecContext::GssSecContext
    functionSourceFile: /src/pdns/pdns/recursordist/gss_context.cc
    functionUses: 0
    functionsReached:
    - PDNSException
    - std::move
    - std::shared_ptr<GssCredential>::valid
    linkageType: ''
    returnType: void
    signature: void GssSecContext(std::shared_ptr<GssCredential> cred)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: gss_delete_sec_context
      Src: /src/pdns/pdns/recursordist/gss_context.cc:156,1
    - Dst: gss_release_name
      Src: /src/pdns/pdns/recursordist/gss_context.cc:159,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 161
      start: 152
    functionDepth: 0
    functionLinenumber: 152
    functionLinenumberEnd: 161
    functionName: ~GssSecContext()
    functionSourceFile: /src/pdns/pdns/recursordist/gss_context.cc
    functionUses: 0
    functionsReached:
    - gss_delete_sec_context
    - gss_release_name
    linkageType: ''
    returnType: void
    signature: void ~GssSecContext()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/gss_context.cc:183,1
    - Dst: auto::begin
      Src: /src/pdns/pdns/recursordist/gss_context.cc:184,1
    - Dst: auto::end
      Src: /src/pdns/pdns/recursordist/gss_context.cc:184,1
    - Dst: auto::erase
      Src: /src/pdns/pdns/recursordist/gss_context.cc:186,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - ' m'
    - now
    argTypes:
    - T
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 192
      start: 181
    functionDepth: 0
    functionLinenumber: 181
    functionLinenumberEnd: 192
    functionName: doExpire
    functionSourceFile: /src/pdns/pdns/recursordist/gss_context.cc
    functionUses: 1
    functionsReached:
    - auto::end
    - auto::erase
    - auto::begin
    - lock
    linkageType: ''
    returnType: void
    signature: void doExpire(T& m, time_t now)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/gss_context.cc:198,1
    - Dst: auto::begin
      Src: /src/pdns/pdns/recursordist/gss_context.cc:199,1
    - Dst: auto::end
      Src: /src/pdns/pdns/recursordist/gss_context.cc:199,1
    - Dst: auto::second::lock
      Src: /src/pdns/pdns/recursordist/gss_context.cc:202,1
    - Dst: auto::erase
      Src: /src/pdns/pdns/recursordist/gss_context.cc:206,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - ' m'
    - now
    argTypes:
    - T
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 212
      start: 196
    functionDepth: 0
    functionLinenumber: 196
    functionLinenumberEnd: 212
    functionName: doExpireL
    functionSourceFile: /src/pdns/pdns/recursordist/gss_context.cc
    functionUses: 1
    functionsReached:
    - lock
    - auto::begin
    - auto::second::lock
    - auto::end
    - auto::erase
    linkageType: ''
    returnType: void
    signature: void doExpireL(T& m, time_t now)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: time
      Src: /src/pdns/pdns/recursordist/gss_context.cc:217,1
    - Dst: doExpire
      Src: /src/pdns/pdns/recursordist/gss_context.cc:222,1
    - Dst: doExpire
      Src: /src/pdns/pdns/recursordist/gss_context.cc:223,1
    - Dst: doExpireL
      Src: /src/pdns/pdns/recursordist/gss_context.cc:224,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 225
      start: 214
    functionDepth: 0
    functionLinenumber: 214
    functionLinenumberEnd: 225
    functionName: expire
    functionSourceFile: /src/pdns/pdns/recursordist/gss_context.cc
    functionUses: 2
    functionsReached:
    - time
    - doExpire
    - doExpireL
    linkageType: ''
    returnType: void
    signature: void expire()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 227
      start: 227
    functionDepth: 0
    functionLinenumber: 227
    functionLinenumberEnd: 227
    functionName: GssContext::supported
    functionSourceFile: /src/pdns/pdns/recursordist/gss_context.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool GssContext::supported()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 235
      start: 229
    functionDepth: 0
    functionLinenumber: 229
    functionLinenumberEnd: 235
    functionName: GssContext::initialize
    functionSourceFile: /src/pdns/pdns/recursordist/gss_context.cc
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void GssContext::initialize()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: GssContext::initialize
      Src: /src/pdns/pdns/recursordist/gss_context.cc:239,1
    - Dst: GssContext::generateLabel
      Src: /src/pdns/pdns/recursordist/gss_context.cc:240,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 241
      start: 237
    functionDepth: 0
    functionLinenumber: 237
    functionLinenumberEnd: 241
    functionName: GssContext::GssContext
    functionSourceFile: /src/pdns/pdns/recursordist/gss_context.cc
    functionUses: 1
    functionsReached:
    - GssContext::initialize
    - GssContext::generateLabel
    linkageType: ''
    returnType: void
    signature: void GssContext::GssContext()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: GssContext::initialize
      Src: /src/pdns/pdns/recursordist/gss_context.cc:245,1
    - Dst: GssContext::setLabel
      Src: /src/pdns/pdns/recursordist/gss_context.cc:246,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ' label'
    argTypes:
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 247
      start: 243
    functionDepth: 0
    functionLinenumber: 243
    functionLinenumberEnd: 247
    functionName: GssContext::GssContext
    functionSourceFile: /src/pdns/pdns/recursordist/gss_context.cc
    functionUses: 1
    functionsReached:
    - GssContext::initialize
    - GssContext::setLabel
    linkageType: ''
    returnType: void
    signature: void GssContext::GssContext(const DNSName& label)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: time
      Src: /src/pdns/pdns/recursordist/gss_context.cc:252,1
    - Dst: GssContext::setLabel
      Src: /src/pdns/pdns/recursordist/gss_context.cc:253,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/gss_context.cc:253,1
    - Dst: std::ostringstream::str
      Src: /src/pdns/pdns/recursordist/gss_context.cc:253,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ' suffix'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 254
      start: 249
    functionDepth: 0
    functionLinenumber: 249
    functionLinenumberEnd: 254
    functionName: GssContext::generateLabel
    functionSourceFile: /src/pdns/pdns/recursordist/gss_context.cc
    functionUses: 3
    functionsReached:
    - GssContext::setLabel
    - time
    - std::ostringstream::str
    - DNSName
    linkageType: ''
    returnType: void
    signature: void GssContext::generateLabel(const std::string& suffix)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/gss_context.cc:259,1
    - Dst: auto::find
      Src: /src/pdns/pdns/recursordist/gss_context.cc:260,1
    - Dst: auto::end
      Src: /src/pdns/pdns/recursordist/gss_context.cc:261,1
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/gss_context.cc:263,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - ' label'
    argTypes:
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 266
      start: 256
    functionDepth: 0
    functionLinenumber: 256
    functionLinenumberEnd: 266
    functionName: GssContext::setLabel
    functionSourceFile: /src/pdns/pdns/recursordist/gss_context.cc
    functionUses: 4
    functionsReached:
    - auto::end
    - auto::find
    - lock
    linkageType: ''
    returnType: void
    signature: void GssContext::setLabel(const DNSName& label)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/gss_context.cc:273,1
    - Dst: time
      Src: /src/pdns/pdns/recursordist/gss_context.cc:274,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 275
      start: 268
    functionDepth: 0
    functionLinenumber: 268
    functionLinenumberEnd: 275
    functionName: GssContext::expired
    functionSourceFile: /src/pdns/pdns/recursordist/gss_context.cc
    functionUses: 1
    functionsReached:
    - time
    - lock
    linkageType: ''
    returnType: bool
    signature: bool GssContext::expired()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: GssContext::expired
      Src: /src/pdns/pdns/recursordist/gss_context.cc:279,1
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/gss_context.cc:282,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 284
      start: 277
    functionDepth: 0
    functionLinenumber: 277
    functionLinenumberEnd: 284
    functionName: GssContext::valid
    functionSourceFile: /src/pdns/pdns/recursordist/gss_context.cc
    functionUses: 4
    functionsReached:
    - GssContext::expired
    - lock
    linkageType: ''
    returnType: bool
    signature: bool GssContext::valid()
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/gss_context.cc:290,1
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/gss_context.cc:298,1
    - Dst: auto::size
      Src: /src/pdns/pdns/recursordist/gss_context.cc:299,1
    - Dst: push_back
      Src: /src/pdns/pdns/recursordist/gss_context.cc:301,1
    - Dst: std::make_shared<LockGuarded<GssSecContext>>
      Src: /src/pdns/pdns/recursordist/gss_context.cc:304,1
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/gss_context.cc:306,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 1
    argNames:
    - cred
    argTypes:
    - std::shared_ptr<GssCredential>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 313
      start: 286
    functionDepth: 0
    functionLinenumber: 286
    functionLinenumberEnd: 313
    functionName: GssContext::createOrReuseContext
    functionSourceFile: /src/pdns/pdns/recursordist/gss_context.cc
    functionUses: 2
    functionsReached:
    - push_back
    - std::make_shared<LockGuarded<GssSecContext>>
    - auto::size
    - lock
    linkageType: ''
    returnType: bool
    signature: bool GssContext::createOrReuseContext(std::shared_ptr<GssCredential>
      cred)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: expire
      Src: /src/pdns/pdns/recursordist/gss_context.cc:317,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/gss_context.cc:325,1
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/gss_context.cc:333,1
    - Dst: auto::find
      Src: /src/pdns/pdns/recursordist/gss_context.cc:334,1
    - Dst: auto::end
      Src: /src/pdns/pdns/recursordist/gss_context.cc:335,1
    - Dst: auto::emplace
      Src: /src/pdns/pdns/recursordist/gss_context.cc:336,1
    - Dst: std::make_shared<GssCredential>
      Src: /src/pdns/pdns/recursordist/gss_context.cc:336,1
    - Dst: GssContext::createOrReuseContext
      Src: /src/pdns/pdns/recursordist/gss_context.cc:341,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/gss_context.cc:345,1
    - Dst: const_cast<void*>
      Src: /src/pdns/pdns/recursordist/gss_context.cc:346,1
    - Dst: static_cast<const void*>
      Src: /src/pdns/pdns/recursordist/gss_context.cc:346,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/gss_context.cc:346,1
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/gss_context.cc:349,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/gss_context.cc:351,1
    - Dst: const_cast<void*>
      Src: /src/pdns/pdns/recursordist/gss_context.cc:352,1
    - Dst: static_cast<const void*>
      Src: /src/pdns/pdns/recursordist/gss_context.cc:352,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/gss_context.cc:352,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/gss_context.cc:353,1
    - Dst: gss_import_name
      Src: /src/pdns/pdns/recursordist/gss_context.cc:354,1
    - Dst: GssContext::processError
      Src: /src/pdns/pdns/recursordist/gss_context.cc:356,1
    - Dst: gss_init_sec_context
      Src: /src/pdns/pdns/recursordist/gss_context.cc:361,1
    - Dst: assign
      Src: /src/pdns/pdns/recursordist/gss_context.cc:364,1
    - Dst: static_cast<char*>
      Src: /src/pdns/pdns/recursordist/gss_context.cc:364,1
    - Dst: gss_release_buffer
      Src: /src/pdns/pdns/recursordist/gss_context.cc:365,1
    - Dst: time
      Src: /src/pdns/pdns/recursordist/gss_context.cc:373,1
    - Dst: GssContext::processError
      Src: /src/pdns/pdns/recursordist/gss_context.cc:378,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 44
    argCount: 2
    argNames:
    - ' input'
    - ' output'
    argTypes:
    - std::string
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 383
      start: 315
    functionDepth: 1
    functionLinenumber: 315
    functionLinenumberEnd: 383
    functionName: GssContext::init
    functionSourceFile: /src/pdns/pdns/recursordist/gss_context.cc
    functionUses: 1
    functionsReached:
    - GssContext::processError
    - gss_release_buffer
    - static_cast<const void*>
    - static_cast<char*>
    - time
    - expire
    - size
    - lock
    - std::make_shared<GssCredential>
    - c_str
    - gss_import_name
    - empty
    - assign
    - auto::emplace
    - auto::find
    - gss_init_sec_context
    - GssContext::createOrReuseContext
    - const_cast<void*>
    - auto::end
    linkageType: ''
    returnType: bool
    signature: bool GssContext::init(const std::string& input, std::string& output)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: expire
      Src: /src/pdns/pdns/recursordist/gss_context.cc:387,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/gss_context.cc:395,1
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/gss_context.cc:403,1
    - Dst: auto::find
      Src: /src/pdns/pdns/recursordist/gss_context.cc:404,1
    - Dst: auto::end
      Src: /src/pdns/pdns/recursordist/gss_context.cc:405,1
    - Dst: auto::emplace
      Src: /src/pdns/pdns/recursordist/gss_context.cc:406,1
    - Dst: std::make_shared<GssCredential>
      Src: /src/pdns/pdns/recursordist/gss_context.cc:406,1
    - Dst: GssContext::createOrReuseContext
      Src: /src/pdns/pdns/recursordist/gss_context.cc:411,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/gss_context.cc:415,1
    - Dst: const_cast<void*>
      Src: /src/pdns/pdns/recursordist/gss_context.cc:416,1
    - Dst: static_cast<const void*>
      Src: /src/pdns/pdns/recursordist/gss_context.cc:416,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/gss_context.cc:416,1
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/gss_context.cc:419,1
    - Dst: gss_accept_sec_context
      Src: /src/pdns/pdns/recursordist/gss_context.cc:420,1
    - Dst: assign
      Src: /src/pdns/pdns/recursordist/gss_context.cc:423,1
    - Dst: static_cast<char*>
      Src: /src/pdns/pdns/recursordist/gss_context.cc:423,1
    - Dst: gss_release_buffer
      Src: /src/pdns/pdns/recursordist/gss_context.cc:424,1
    - Dst: time
      Src: /src/pdns/pdns/recursordist/gss_context.cc:432,1
    - Dst: GssContext::processError
      Src: /src/pdns/pdns/recursordist/gss_context.cc:437,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 35
    argCount: 2
    argNames:
    - ' input'
    - ' output'
    argTypes:
    - std::string
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 442
      start: 385
    functionDepth: 1
    functionLinenumber: 385
    functionLinenumberEnd: 442
    functionName: GssContext::accept
    functionSourceFile: /src/pdns/pdns/recursordist/gss_context.cc
    functionUses: 1
    functionsReached:
    - assign
    - static_cast<char*>
    - gss_accept_sec_context
    - GssContext::processError
    - c_str
    - auto::end
    - time
    - expire
    - size
    - lock
    - GssContext::createOrReuseContext
    - gss_release_buffer
    - std::make_shared<GssCredential>
    - auto::emplace
    - const_cast<void*>
    - empty
    - static_cast<const void*>
    - auto::find
    linkageType: ''
    returnType: bool
    signature: bool GssContext::accept(const std::string& input, std::string& output)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/recursordist/gss_context.cc:452,1
    - Dst: const_cast<void*>
      Src: /src/pdns/pdns/recursordist/gss_context.cc:453,1
    - Dst: static_cast<const void*>
      Src: /src/pdns/pdns/recursordist/gss_context.cc:453,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/gss_context.cc:453,1
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/gss_context.cc:456,1
    - Dst: gss_get_mic
      Src: /src/pdns/pdns/recursordist/gss_context.cc:457,1
    - Dst: assign
      Src: /src/pdns/pdns/recursordist/gss_context.cc:461,1
    - Dst: static_cast<char*>
      Src: /src/pdns/pdns/recursordist/gss_context.cc:461,1
    - Dst: gss_release_buffer
      Src: /src/pdns/pdns/recursordist/gss_context.cc:462,1
    - Dst: GssContext::processError
      Src: /src/pdns/pdns/recursordist/gss_context.cc:466,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 2
    argNames:
    - ' input'
    - ' output'
    argTypes:
    - std::string
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 470
      start: 444
    functionDepth: 1
    functionLinenumber: 444
    functionLinenumberEnd: 470
    functionName: GssContext::sign
    functionSourceFile: /src/pdns/pdns/recursordist/gss_context.cc
    functionUses: 1
    functionsReached:
    - assign
    - static_cast<char*>
    - GssContext::processError
    - size
    - lock
    - gss_release_buffer
    - gss_get_mic
    - const_cast<void*>
    - c_str
    - static_cast<const void*>
    linkageType: ''
    returnType: bool
    signature: bool GssContext::sign(const std::string& input, std::string& output)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/recursordist/gss_context.cc:479,1
    - Dst: const_cast<void*>
      Src: /src/pdns/pdns/recursordist/gss_context.cc:480,1
    - Dst: static_cast<const void*>
      Src: /src/pdns/pdns/recursordist/gss_context.cc:480,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/gss_context.cc:480,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/gss_context.cc:481,1
    - Dst: const_cast<void*>
      Src: /src/pdns/pdns/recursordist/gss_context.cc:482,1
    - Dst: static_cast<const void*>
      Src: /src/pdns/pdns/recursordist/gss_context.cc:482,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/gss_context.cc:482,1
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/gss_context.cc:485,1
    - Dst: gss_verify_mic
      Src: /src/pdns/pdns/recursordist/gss_context.cc:486,1
    - Dst: GssContext::processError
      Src: /src/pdns/pdns/recursordist/gss_context.cc:490,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 2
    argNames:
    - ' input'
    - ' signature'
    argTypes:
    - std::string
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 494
      start: 472
    functionDepth: 0
    functionLinenumber: 472
    functionLinenumberEnd: 494
    functionName: GssContext::verify
    functionSourceFile: /src/pdns/pdns/recursordist/gss_context.cc
    functionUses: 1
    functionsReached:
    - GssContext::processError
    - size
    - lock
    - gss_verify_mic
    - const_cast<void*>
    - c_str
    - static_cast<const void*>
    linkageType: ''
    returnType: bool
    signature: bool GssContext::verify(const std::string& input, const std::string&
      signature)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/gss_context.cc:498,1
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/gss_context.cc:501,1
    - Dst: auto::erase
      Src: /src/pdns/pdns/recursordist/gss_context.cc:502,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 503
      start: 496
    functionDepth: 0
    functionLinenumber: 496
    functionLinenumberEnd: 503
    functionName: GssContext::destroy
    functionSourceFile: /src/pdns/pdns/recursordist/gss_context.cc
    functionUses: 2
    functionsReached:
    - empty
    - auto::erase
    - lock
    linkageType: ''
    returnType: bool
    signature: bool GssContext::destroy()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' name'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 508
      start: 505
    functionDepth: 0
    functionLinenumber: 505
    functionLinenumberEnd: 508
    functionName: GssContext::setLocalPrincipal
    functionSourceFile: /src/pdns/pdns/recursordist/gss_context.cc
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void GssContext::setLocalPrincipal(const std::string& name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/recursordist/gss_context.cc:513,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ' name'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 514
      start: 510
    functionDepth: 0
    functionLinenumber: 510
    functionLinenumberEnd: 514
    functionName: GssContext::getLocalPrincipal
    functionSourceFile: /src/pdns/pdns/recursordist/gss_context.cc
    functionUses: 0
    functionsReached:
    - size
    linkageType: ''
    returnType: bool
    signature: bool GssContext::getLocalPrincipal(std::string& name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' name'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 519
      start: 516
    functionDepth: 0
    functionLinenumber: 516
    functionLinenumberEnd: 519
    functionName: GssContext::setPeerPrincipal
    functionSourceFile: /src/pdns/pdns/recursordist/gss_context.cc
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void GssContext::setPeerPrincipal(const std::string& name)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/gss_context.cc:527,1
    - Dst: gss_display_name
      Src: /src/pdns/pdns/recursordist/gss_context.cc:529,1
    - Dst: assign
      Src: /src/pdns/pdns/recursordist/gss_context.cc:531,1
    - Dst: static_cast<char*>
      Src: /src/pdns/pdns/recursordist/gss_context.cc:531,1
    - Dst: gss_release_buffer
      Src: /src/pdns/pdns/recursordist/gss_context.cc:532,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 1
    argNames:
    - ' name'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 543
      start: 521
    functionDepth: 1
    functionLinenumber: 521
    functionLinenumberEnd: 543
    functionName: GssContext::getPeerPrincipal
    functionSourceFile: /src/pdns/pdns/recursordist/gss_context.cc
    functionUses: 2
    functionsReached:
    - gss_display_name
    - assign
    - static_cast<char*>
    - gss_release_buffer
    - lock
    linkageType: ''
    returnType: bool
    signature: bool GssContext::getPeerPrincipal(std::string& name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/gss_context.cc:547,1
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/gss_context.cc:547,1
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/gss_context.cc:547,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 548
      start: 545
    functionDepth: 0
    functionLinenumber: 545
    functionLinenumberEnd: 548
    functionName: GssContext::getCounts
    functionSourceFile: /src/pdns/pdns/recursordist/gss_context.cc
    functionUses: 1
    functionsReached:
    - lock
    linkageType: ''
    returnType: std::tuple<size_t, size_t, size_t>
    signature: std::tuple<size_t, size_t, size_t> GssContext::getCounts()
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: gss_display_status
      Src: /src/pdns/pdns/recursordist/gss_context.cc:559,1
    - Dst: gss_release_buffer
      Src: /src/pdns/pdns/recursordist/gss_context.cc:566,1
    - Dst: push_back
      Src: /src/pdns/pdns/recursordist/gss_context.cc:568,1
    - Dst: ostringstream::str
      Src: /src/pdns/pdns/recursordist/gss_context.cc:568,1
    - Dst: gss_display_status
      Src: /src/pdns/pdns/recursordist/gss_context.cc:575,1
    - Dst: gss_release_buffer
      Src: /src/pdns/pdns/recursordist/gss_context.cc:582,1
    - Dst: push_back
      Src: /src/pdns/pdns/recursordist/gss_context.cc:584,1
    - Dst: ostringstream::str
      Src: /src/pdns/pdns/recursordist/gss_context.cc:584,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 29
    argCount: 3
    argNames:
    - ' method'
    - maj
    - min
    argTypes:
    - std::string
    - OM_uint32
    - OM_uint32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 588
      start: 550
    functionDepth: 0
    functionLinenumber: 550
    functionLinenumberEnd: 588
    functionName: GssContext::processError
    functionSourceFile: /src/pdns/pdns/recursordist/gss_context.cc
    functionUses: 8
    functionsReached:
    - push_back
    - ostringstream::str
    - gss_display_status
    - gss_release_buffer
    linkageType: ''
    returnType: void
    signature: void GssContext::processError(const std::string& method, OM_uint32
      maj, OM_uint32 min)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: GssContext::valid
      Src: /src/pdns/pdns/recursordist/gss_context.cc:596,1
    - Dst: GssContext::getErrorStrings
      Src: /src/pdns/pdns/recursordist/gss_context.cc:598,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/recursordist/gss_context.cc:599,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/gss_context.cc:599,1
    - Dst: Logging::IterLoggable
      Src: /src/pdns/pdns/recursordist/gss_context.cc:599,1
    - Dst: auto::cbegin
      Src: /src/pdns/pdns/recursordist/gss_context.cc:599,1
    - Dst: auto::cend
      Src: /src/pdns/pdns/recursordist/gss_context.cc:599,1
    - Dst: GssContext::getErrorStrings
      Src: /src/pdns/pdns/recursordist/gss_context.cc:603,1
    - Dst: GssContext::sign
      Src: /src/pdns/pdns/recursordist/gss_context.cc:610,1
    - Dst: GssContext::getErrorStrings
      Src: /src/pdns/pdns/recursordist/gss_context.cc:612,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/recursordist/gss_context.cc:613,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/gss_context.cc:613,1
    - Dst: Logging::IterLoggable
      Src: /src/pdns/pdns/recursordist/gss_context.cc:613,1
    - Dst: auto::cbegin
      Src: /src/pdns/pdns/recursordist/gss_context.cc:613,1
    - Dst: auto::cend
      Src: /src/pdns/pdns/recursordist/gss_context.cc:613,1
    - Dst: GssContext::getErrorStrings
      Src: /src/pdns/pdns/recursordist/gss_context.cc:617,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/gss_context.cc:623,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 23
    argCount: 4
    argNames:
    - slog
    - ' context'
    - ' message'
    - ' mac'
    argTypes:
    - Logr::log_t
    - DNSName
    - std::string
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 625
      start: 592
    functionDepth: 0
    functionLinenumber: 592
    functionLinenumberEnd: 625
    functionName: gss_add_signature
    functionSourceFile: /src/pdns/pdns/recursordist/gss_context.cc
    functionUses: 2
    functionsReached:
    - std::move
    - Logr::log_t::info
    - Logging::Loggable
    - GssContext::getErrorStrings
    - auto::cbegin
    - Logging::IterLoggable
    - GssContext::sign
    - GssContext::valid
    - auto::cend
    linkageType: ''
    returnType: bool
    signature: bool gss_add_signature(Logr::log_t slog, const DNSName& context, const
      std::string& message, std::string& mac)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: GssContext::valid
      Src: /src/pdns/pdns/recursordist/gss_context.cc:630,1
    - Dst: GssContext::getErrorStrings
      Src: /src/pdns/pdns/recursordist/gss_context.cc:632,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/recursordist/gss_context.cc:633,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/gss_context.cc:633,1
    - Dst: Logging::IterLoggable
      Src: /src/pdns/pdns/recursordist/gss_context.cc:633,1
    - Dst: auto::cbegin
      Src: /src/pdns/pdns/recursordist/gss_context.cc:633,1
    - Dst: auto::cend
      Src: /src/pdns/pdns/recursordist/gss_context.cc:633,1
    - Dst: GssContext::getErrorStrings
      Src: /src/pdns/pdns/recursordist/gss_context.cc:637,1
    - Dst: GssContext::verify
      Src: /src/pdns/pdns/recursordist/gss_context.cc:644,1
    - Dst: GssContext::getErrorStrings
      Src: /src/pdns/pdns/recursordist/gss_context.cc:646,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/recursordist/gss_context.cc:647,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/gss_context.cc:647,1
    - Dst: Logging::IterLoggable
      Src: /src/pdns/pdns/recursordist/gss_context.cc:647,1
    - Dst: auto::cbegin
      Src: /src/pdns/pdns/recursordist/gss_context.cc:647,1
    - Dst: auto::cend
      Src: /src/pdns/pdns/recursordist/gss_context.cc:647,1
    - Dst: GssContext::getErrorStrings
      Src: /src/pdns/pdns/recursordist/gss_context.cc:651,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 22
    argCount: 4
    argNames:
    - slog
    - ' context'
    - ' message'
    - ' mac'
    argTypes:
    - Logr::log_t
    - DNSName
    - std::string
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 658
      start: 627
    functionDepth: 0
    functionLinenumber: 627
    functionLinenumberEnd: 658
    functionName: gss_verify_signature
    functionSourceFile: /src/pdns/pdns/recursordist/gss_context.cc
    functionUses: 2
    functionsReached:
    - Logr::log_t::info
    - Logging::Loggable
    - GssContext::getErrorStrings
    - auto::cbegin
    - GssContext::verify
    - Logging::IterLoggable
    - GssContext::valid
    - auto::cend
    linkageType: ''
    returnType: bool
    signature: bool gss_verify_signature(Logr::log_t slog, const DNSName& context,
      const std::string& message, const std::string& mac)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/rec-tcpout.cc:45,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/rec-tcpout.cc:45,1
    - Dst: erase
      Src: /src/pdns/pdns/recursordist/rec-tcpout.cc:48,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 1
    argNames:
    - ' now'
    argTypes:
    - struct timeval
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 38
    functionDepth: 0
    functionLinenumber: 38
    functionLinenumberEnd: 54
    functionName: TCPOutConnectionManager::cleanup
    functionSourceFile: /src/pdns/pdns/recursordist/rec-tcpout.cc
    functionUses: 0
    functionsReached:
    - erase
    - end
    - begin
    linkageType: ''
    returnType: void
    signature: void TCPOutConnectionManager::cleanup(const struct timeval& now)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: TCPOutConnectionManager::size
      Src: /src/pdns/pdns/recursordist/rec-tcpout.cc:63,1
    - Dst: count
      Src: /src/pdns/pdns/recursordist/rec-tcpout.cc:63,1
    - Dst: TCPOutConnectionManager::cleanup
      Src: /src/pdns/pdns/recursordist/rec-tcpout.cc:64,1
    - Dst: TCPOutConnectionManager::size
      Src: /src/pdns/pdns/recursordist/rec-tcpout.cc:67,1
    - Dst: count
      Src: /src/pdns/pdns/recursordist/rec-tcpout.cc:70,1
    - Dst: gettimeofday
      Src: /src/pdns/pdns/recursordist/rec-tcpout.cc:74,1
    - Dst: emplace
      Src: /src/pdns/pdns/recursordist/rec-tcpout.cc:75,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/rec-tcpout.cc:75,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 16
    argCount: 3
    argNames:
    - ' now'
    - ' endpoints'
    - ' connection'
    argTypes:
    - struct timeval
    - endpoints_t
    - Connection
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 56
    functionDepth: 1
    functionLinenumber: 56
    functionLinenumberEnd: 76
    functionName: TCPOutConnectionManager::store
    functionSourceFile: /src/pdns/pdns/recursordist/rec-tcpout.cc
    functionUses: 0
    functionsReached:
    - std::move
    - count
    - TCPOutConnectionManager::cleanup
    - gettimeofday
    - TCPOutConnectionManager::size
    - emplace
    linkageType: ''
    returnType: void
    signature: void TCPOutConnectionManager::store(const struct timeval& now, const
      endpoints_t& endpoints, Connection&& connection)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: count
      Src: /src/pdns/pdns/recursordist/rec-tcpout.cc:80,1
    - Dst: extract
      Src: /src/pdns/pdns/recursordist/rec-tcpout.cc:81,1
    - Dst: auto::mapped
      Src: /src/pdns/pdns/recursordist/rec-tcpout.cc:82,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ' pair'
    argTypes:
    - endpoints_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 78
    functionDepth: 0
    functionLinenumber: 78
    functionLinenumberEnd: 85
    functionName: TCPOutConnectionManager::get
    functionSourceFile: /src/pdns/pdns/recursordist/rec-tcpout.cc
    functionUses: 0
    functionsReached:
    - auto::mapped
    - extract
    - count
    linkageType: ''
    returnType: TCPOutConnectionManager::Connection
    signature: TCPOutConnectionManager::Connection TCPOutConnectionManager::get(const
      endpoints_t& pair)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/rec-tcpout.cc:99,1
    - Dst: SuffixMatchTree
      Src: /src/pdns/pdns/recursordist/rec-tcpout.cc:100,1
    - Dst: auto::d_netmaskToConfig::clear
      Src: /src/pdns/pdns/recursordist/rec-tcpout.cc:101,1
    - Dst: auto::d_TLSContexts::clear
      Src: /src/pdns/pdns/recursordist/rec-tcpout.cc:102,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/rec-tcpout.cc:105,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/rec-tcpout.cc:105,1
    - Dst: auto::d_suffixToConfig::add
      Src: /src/pdns/pdns/recursordist/rec-tcpout.cc:107,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/rec-tcpout.cc:107,1
    - Dst: auto::d_netmaskToConfig::insert
      Src: /src/pdns/pdns/recursordist/rec-tcpout.cc:110,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/rec-tcpout.cc:110,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - ' settings'
    argTypes:
    - pdns::rust::settings::rec::Recursorsettings
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 113
      start: 96
    functionDepth: 2
    functionLinenumber: 96
    functionLinenumberEnd: 113
    functionName: TCPOutConnectionManager::setupOutgoingTLSConfigTables
    functionSourceFile: /src/pdns/pdns/recursordist/rec-tcpout.cc
    functionUses: 1
    functionsReached:
    - std::move
    - SuffixMatchTree
    - auto::d_suffixToConfig::add
    - DNSName
    - lock
    - auto::d_netmaskToConfig::clear
    - auto::d_TLSContexts::clear
    - auto::d_netmaskToConfig::insert
    - std::string
    linkageType: ''
    returnType: void
    signature: void TCPOutConnectionManager::setupOutgoingTLSConfigTables(pdns::rust::settings::rec::Recursorsettings&
      settings)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: clear
      Src: /src/pdns/pdns/recursordist/rec-tcpout.cc:121,1
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/rec-tcpout.cc:126,1
    - Dst: auto::d_netmaskToConfig::lookup
      Src: /src/pdns/pdns/recursordist/rec-tcpout.cc:127,1
    - Dst: auto::d_suffixToConfig::lookup
      Src: /src/pdns/pdns/recursordist/rec-tcpout.cc:130,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/rec-tcpout.cc:130,1
    - Dst: pdns::rust::settings::rec::OutgoingTLSConfiguration*::subject_name::empty
      Src: /src/pdns/pdns/recursordist/rec-tcpout.cc:136,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/rec-tcpout.cc:137,1
    - Dst: pdns::rust::settings::rec::OutgoingTLSConfiguration*::subject_address::empty
      Src: /src/pdns/pdns/recursordist/rec-tcpout.cc:139,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/rec-tcpout.cc:140,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/rec-tcpout.cc:142,1
    - Dst: auto::d_TLSContexts::find
      Src: /src/pdns/pdns/recursordist/rec-tcpout.cc:145,1
    - Dst: auto::d_TLSContexts::end
      Src: /src/pdns/pdns/recursordist/rec-tcpout.cc:145,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/rec-tcpout.cc:149,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/rec-tcpout.cc:151,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/rec-tcpout.cc:152,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/rec-tcpout.cc:153,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/rec-tcpout.cc:155,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/rec-tcpout.cc:156,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/rec-tcpout.cc:157,1
    - Dst: TCPOutConnectionManager::getTLSContext
      Src: /src/pdns/pdns/recursordist/rec-tcpout.cc:163,1
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/rec-tcpout.cc:167,1
    - Dst: auto::d_TLSContexts::emplace
      Src: /src/pdns/pdns/recursordist/rec-tcpout.cc:168,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 44
    argCount: 6
    argNames:
    - ' name'
    - ' address'
    - ' verboseLogging'
    - ' subjectName'
    - ' subjectAddress'
    - ' configName'
    argTypes:
    - std::string
    - ComboAddress
    - bool
    - std::string
    - std::string
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 173
      start: 115
    functionDepth: 1
    functionLinenumber: 115
    functionLinenumberEnd: 173
    functionName: TCPOutConnectionManager::getTLSContext
    functionSourceFile: /src/pdns/pdns/recursordist/rec-tcpout.cc
    functionUses: 2
    functionsReached:
    - auto::d_TLSContexts::find
    - DNSName
    - lock
    - pdns::rust::settings::rec::OutgoingTLSConfiguration*::subject_address::empty
    - pdns::rust::settings::rec::OutgoingTLSConfiguration*::subject_name::empty
    - auto::d_TLSContexts::emplace
    - auto::d_netmaskToConfig::lookup
    - TCPOutConnectionManager::getTLSContext
    - clear
    - auto::d_suffixToConfig::lookup
    - auto::d_TLSContexts::end
    - std::string
    linkageType: ''
    returnType: std::shared_ptr<TLSCtx>
    signature: std::shared_ptr<TLSCtx> TCPOutConnectionManager::getTLSContext(const
      std::string& name, const ComboAddress& address, bool& verboseLogging, std::string&
      subjectName, std::string& subjectAddress, std::string& configName)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: broadcastAccFunction
      Src: /src/pdns/pdns/recursordist/rec-tcpout.cc:177,1
    - Dst: getSize
      Src: /src/pdns/pdns/recursordist/rec-tcpout.cc:177,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 178
      start: 175
    functionDepth: 2
    functionLinenumber: 175
    functionLinenumberEnd: 178
    functionName: getCurrentIdleTCPConnections
    functionSourceFile: /src/pdns/pdns/recursordist/rec-tcpout.cc
    functionUses: 1
    functionsReached:
    - broadcastAccFunction
    - getSize
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t getCurrentIdleTCPConnections()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DNSRecord::DNSRecord
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:16,1
    - Dst: DNSRecord::setContent
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:21,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:21,1
    - Dst: recordsAndSignatures::records::push_back
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:23,1
    - Dst: DNSRecord::setContent
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:27,1
    - Dst: std::make_shared<RRSIGRecordContent>
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:27,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:27,1
    - Dst: recordsAndSignatures::signatures::push_back
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:28,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 4
    argNames:
    - ' name'
    - qtype
    - ' content'
    - sigs
    argTypes:
    - DNSName
    - uint16_t
    - string
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 32
      start: 12
    functionDepth: 0
    functionLinenumber: 12
    functionLinenumberEnd: 32
    functionName: genRecsAndSigs
    functionSourceFile: /src/pdns/pdns/recursordist/test-negcache_cc.cc
    functionUses: 0
    functionsReached:
    - recordsAndSignatures::records::push_back
    - DNSRecord::DNSRecord
    - QType
    - DNSRecordContent::make
    - DNSRecord::setContent
    - std::make_shared<RRSIGRecordContent>
    - recordsAndSignatures::signatures::push_back
    linkageType: ''
    returnType: recordsAndSignatures
    signature: recordsAndSignatures genRecsAndSigs(const DNSName& name, const uint16_t
      qtype, const string& content, bool sigs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:39,1
    - Dst: genRecsAndSigs
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:43,1
    - Dst: genRecsAndSigs
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:44,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 3
    argNames:
    - ' name'
    - ' auth'
    - ' now'
    argTypes:
    - DNSName
    - DNSName
    - struct timeval
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 34
    functionDepth: 1
    functionLinenumber: 34
    functionLinenumberEnd: 47
    functionName: genNegCacheEntry
    functionSourceFile: /src/pdns/pdns/recursordist/test-negcache_cc.cc
    functionUses: 0
    functionsReached:
    - genRecsAndSigs
    - QType
    linkageType: ''
    returnType: NegCache::NegCacheEntry
    signature: NegCache::NegCacheEntry genNegCacheEntry(const DNSName& name, const
      DNSName& auth, const struct timeval& now, const uint16_t qtype = 0)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Utility::gettimeofday
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:60,1
    - Dst: NegCache::NegCache
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:62,1
    - Dst: NegCache::add
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:63,1
    - Dst: genNegCacheEntry
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:63,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:65,1
    - Dst: NegCache::size
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:65,1
    - Dst: NegCache::get
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:68,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:68,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:70,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:71,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:72,1
    - Dst: NegCache::NegCacheEntry::d_qtype::toString
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:72,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:72,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:73,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 51
    functionDepth: 2
    functionLinenumber: 51
    functionLinenumberEnd: 74
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-negcache_cc.cc
    functionUses: 0
    functionsReached:
    - NegCache::add
    - QType
    - BOOST_CHECK_EQUAL
    - Utility::gettimeofday
    - NegCache::get
    - NegCache::NegCache
    - NegCache::NegCacheEntry::d_qtype::toString
    - genNegCacheEntry
    - BOOST_CHECK
    - NegCache::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_get_entry)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Utility::gettimeofday
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:85,1
    - Dst: NegCache::NegCache
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:87,1
    - Dst: genNegCacheEntry
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:89,1
    - Dst: DNSRecord::DNSRecord
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:91,1
    - Dst: DNSRecord::setContent
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:96,1
    - Dst: std::make_shared<RRSIGRecordContent>
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:96,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:96,1
    - Dst: auto::DNSSECRecords::signatures::emplace_back
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:97,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:97,1
    - Dst: NegCache::add
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:99,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:101,1
    - Dst: NegCache::size
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:101,1
    - Dst: NegCache::get
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:104,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:104,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:106,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 107
      start: 76
    functionDepth: 2
    functionLinenumber: 76
    functionLinenumberEnd: 107
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-negcache_cc.cc
    functionUses: 0
    functionsReached:
    - std::move
    - NegCache::add
    - DNSRecord::DNSRecord
    - QType
    - Utility::gettimeofday
    - BOOST_CHECK_EQUAL
    - auto::DNSSECRecords::signatures::emplace_back
    - NegCache::NegCache
    - NegCache::get
    - genNegCacheEntry
    - DNSRecord::setContent
    - BOOST_CHECK
    - std::make_shared<RRSIGRecordContent>
    - NegCache::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_get_verybig_entry)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: NegCache::NegCache
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:119,1
    - Dst: NegCache::add
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:120,1
    - Dst: genNegCacheEntry
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:120,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:122,1
    - Dst: NegCache::size
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:122,1
    - Dst: NegCache::get
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:125,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:125,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:127,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:128,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:129,1
    - Dst: NegCache::NegCacheEntry::d_qtype::toString
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:129,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:129,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:130,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 131
      start: 109
    functionDepth: 2
    functionLinenumber: 109
    functionLinenumberEnd: 131
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-negcache_cc.cc
    functionUses: 0
    functionsReached:
    - NegCache::add
    - QType
    - BOOST_CHECK_EQUAL
    - NegCache::get
    - NegCache::NegCache
    - NegCache::NegCacheEntry::d_qtype::toString
    - genNegCacheEntry
    - BOOST_CHECK
    - NegCache::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_get_entry2038)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Utility::gettimeofday
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:142,1
    - Dst: NegCache::NegCache
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:144,1
    - Dst: NegCache::add
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:145,1
    - Dst: genNegCacheEntry
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:145,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:147,1
    - Dst: NegCache::size
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:147,1
    - Dst: NegCache::get
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:150,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:150,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:152,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 153
      start: 133
    functionDepth: 2
    functionLinenumber: 133
    functionLinenumberEnd: 153
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-negcache_cc.cc
    functionUses: 0
    functionsReached:
    - NegCache::add
    - QType
    - BOOST_CHECK_EQUAL
    - Utility::gettimeofday
    - NegCache::get
    - NegCache::NegCache
    - genNegCacheEntry
    - NegCache::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_get_entry_exact_type)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Utility::gettimeofday
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:161,1
    - Dst: NegCache::NegCache
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:163,1
    - Dst: NegCache::add
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:164,1
    - Dst: genNegCacheEntry
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:164,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:166,1
    - Dst: NegCache::size
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:166,1
    - Dst: NegCache::get
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:169,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:169,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:171,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:172,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:173,1
    - Dst: NegCache::NegCacheEntry::d_qtype::toString
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:173,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:173,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:174,1
    - Dst: NegCache::get
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:177,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:177,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:178,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 179
      start: 155
    functionDepth: 2
    functionLinenumber: 155
    functionLinenumberEnd: 179
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-negcache_cc.cc
    functionUses: 0
    functionsReached:
    - NegCache::add
    - QType
    - BOOST_CHECK_EQUAL
    - Utility::gettimeofday
    - NegCache::get
    - NegCache::NegCache
    - NegCache::NegCacheEntry::d_qtype::toString
    - genNegCacheEntry
    - BOOST_CHECK
    - NegCache::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_get_NODATA_entry)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Utility::gettimeofday
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:187,1
    - Dst: NegCache::NegCache
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:189,1
    - Dst: NegCache::add
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:190,1
    - Dst: genNegCacheEntry
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:190,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:192,1
    - Dst: NegCache::size
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:192,1
    - Dst: NegCache::getRootNXTrust
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:195,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:197,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:198,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:199,1
    - Dst: NegCache::NegCacheEntry::d_qtype::toString
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:199,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:199,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:200,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 201
      start: 181
    functionDepth: 2
    functionLinenumber: 181
    functionLinenumberEnd: 201
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-negcache_cc.cc
    functionUses: 0
    functionsReached:
    - NegCache::add
    - QType
    - NegCache::getRootNXTrust
    - BOOST_CHECK_EQUAL
    - Utility::gettimeofday
    - NegCache::NegCache
    - NegCache::NegCacheEntry::d_qtype::toString
    - genNegCacheEntry
    - BOOST_CHECK
    - NegCache::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_getRootNXTrust_entry)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Utility::gettimeofday
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:209,1
    - Dst: NegCache::NegCache
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:212,1
    - Dst: NegCache::add
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:213,1
    - Dst: genNegCacheEntry
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:213,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:215,1
    - Dst: NegCache::size
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:215,1
    - Dst: NegCache::get
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:220,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:220,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:222,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 223
      start: 203
    functionDepth: 2
    functionLinenumber: 203
    functionLinenumberEnd: 223
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-negcache_cc.cc
    functionUses: 0
    functionsReached:
    - NegCache::add
    - QType
    - BOOST_CHECK_EQUAL
    - Utility::gettimeofday
    - NegCache::get
    - NegCache::NegCache
    - genNegCacheEntry
    - NegCache::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_add_and_get_expired_entry)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Utility::gettimeofday
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:231,1
    - Dst: NegCache::NegCache
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:234,1
    - Dst: NegCache::add
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:235,1
    - Dst: genNegCacheEntry
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:235,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:237,1
    - Dst: NegCache::size
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:237,1
    - Dst: NegCache::getRootNXTrust
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:242,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:244,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 245
      start: 225
    functionDepth: 2
    functionLinenumber: 225
    functionLinenumberEnd: 245
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-negcache_cc.cc
    functionUses: 0
    functionsReached:
    - NegCache::add
    - NegCache::getRootNXTrust
    - BOOST_CHECK_EQUAL
    - Utility::gettimeofday
    - NegCache::NegCache
    - genNegCacheEntry
    - NegCache::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_getRootNXTrust_expired_entry)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Utility::gettimeofday
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:254,1
    - Dst: NegCache::NegCache
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:256,1
    - Dst: NegCache::add
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:257,1
    - Dst: genNegCacheEntry
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:257,1
    - Dst: NegCache::add
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:259,1
    - Dst: genNegCacheEntry
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:259,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:261,1
    - Dst: NegCache::size
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:261,1
    - Dst: NegCache::get
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:264,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:264,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:266,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:267,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:268,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 269
      start: 247
    functionDepth: 2
    functionLinenumber: 247
    functionLinenumberEnd: 269
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-negcache_cc.cc
    functionUses: 0
    functionsReached:
    - NegCache::add
    - QType
    - BOOST_CHECK_EQUAL
    - Utility::gettimeofday
    - NegCache::get
    - NegCache::NegCache
    - genNegCacheEntry
    - BOOST_CHECK
    - NegCache::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_add_updated_entry)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Utility::gettimeofday
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:279,1
    - Dst: NegCache::NegCache
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:281,1
    - Dst: NegCache::add
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:282,1
    - Dst: genNegCacheEntry
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:282,1
    - Dst: NegCache::add
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:283,1
    - Dst: genNegCacheEntry
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:283,1
    - Dst: NegCache::getRootNXTrust
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:286,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:288,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:289,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:290,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 291
      start: 271
    functionDepth: 2
    functionLinenumber: 271
    functionLinenumberEnd: 291
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-negcache_cc.cc
    functionUses: 0
    functionsReached:
    - NegCache::add
    - NegCache::getRootNXTrust
    - Utility::gettimeofday
    - BOOST_CHECK_EQUAL
    - NegCache::NegCache
    - genNegCacheEntry
    - BOOST_CHECK
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_getRootNXTrust)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Utility::gettimeofday
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:301,1
    - Dst: NegCache::NegCache
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:303,1
    - Dst: NegCache::add
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:304,1
    - Dst: genNegCacheEntry
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:304,1
    - Dst: NegCache::add
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:305,1
    - Dst: genNegCacheEntry
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:305,1
    - Dst: NegCache::getRootNXTrust
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:308,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:310,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 311
      start: 293
    functionDepth: 2
    functionLinenumber: 293
    functionLinenumberEnd: 311
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-negcache_cc.cc
    functionUses: 0
    functionsReached:
    - NegCache::add
    - NegCache::getRootNXTrust
    - Utility::gettimeofday
    - BOOST_CHECK_EQUAL
    - NegCache::NegCache
    - genNegCacheEntry
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_getRootNXTrust_full_domain_only)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Utility::gettimeofday
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:319,1
    - Dst: genNegCacheEntry
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:324,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:324,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:324,1
    - Dst: NegCache::add
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:325,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:328,1
    - Dst: NegCache::size
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:328,1
    - Dst: NegCache::prune
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:330,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:332,1
    - Dst: NegCache::size
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:332,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 333
      start: 313
    functionDepth: 2
    functionLinenumber: 313
    functionLinenumberEnd: 333
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-negcache_cc.cc
    functionUses: 0
    functionsReached:
    - NegCache::add
    - NegCache::prune
    - std::to_string
    - DNSName
    - Utility::gettimeofday
    - BOOST_CHECK_EQUAL
    - genNegCacheEntry
    - NegCache::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_prune)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Utility::gettimeofday
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:341,1
    - Dst: NegCache::NegCache
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:343,1
    - Dst: genNegCacheEntry
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:346,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:346,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:346,1
    - Dst: NegCache::add
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:347,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:350,1
    - Dst: NegCache::size
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:350,1
    - Dst: NegCache::prune
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:352,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:354,1
    - Dst: NegCache::size
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:354,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 355
      start: 335
    functionDepth: 2
    functionLinenumber: 335
    functionLinenumberEnd: 355
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-negcache_cc.cc
    functionUses: 0
    functionsReached:
    - NegCache::add
    - NegCache::prune
    - std::to_string
    - DNSName
    - Utility::gettimeofday
    - BOOST_CHECK_EQUAL
    - NegCache::NegCache
    - genNegCacheEntry
    - NegCache::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_prune_many_shards)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Utility::gettimeofday
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:364,1
    - Dst: NegCache::NegCache
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:366,1
    - Dst: genNegCacheEntry
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:370,1
    - Dst: NegCache::add
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:371,1
    - Dst: genNegCacheEntry
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:372,1
    - Dst: NegCache::add
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:373,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:375,1
    - Dst: NegCache::size
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:375,1
    - Dst: NegCache::prune
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:379,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:380,1
    - Dst: NegCache::size
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:380,1
    - Dst: NegCache::get
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:383,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:383,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:384,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:385,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:386,1
    - Dst: genNegCacheEntry
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:389,1
    - Dst: NegCache::add
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:390,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:391,1
    - Dst: NegCache::size
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:391,1
    - Dst: genNegCacheEntry
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:394,1
    - Dst: NegCache::add
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:395,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:397,1
    - Dst: NegCache::size
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:397,1
    - Dst: NegCache::prune
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:401,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:403,1
    - Dst: NegCache::size
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:403,1
    - Dst: genNegCacheEntry
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:404,1
    - Dst: NegCache::get
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:405,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:405,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:406,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:407,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:408,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 25
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 409
      start: 357
    functionDepth: 2
    functionLinenumber: 357
    functionLinenumberEnd: 409
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-negcache_cc.cc
    functionUses: 0
    functionsReached:
    - NegCache::add
    - NegCache::prune
    - QType
    - BOOST_CHECK_EQUAL
    - Utility::gettimeofday
    - NegCache::get
    - NegCache::NegCache
    - genNegCacheEntry
    - BOOST_REQUIRE
    - NegCache::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_prune_valid_entries)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Utility::gettimeofday
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:417,1
    - Dst: NegCache::NegCache
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:419,1
    - Dst: genNegCacheEntry
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:421,1
    - Dst: NegCache::add
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:422,1
    - Dst: genNegCacheEntry
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:425,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:425,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:425,1
    - Dst: NegCache::add
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:426,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:429,1
    - Dst: NegCache::size
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:429,1
    - Dst: NegCache::wipe
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:432,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:433,1
    - Dst: NegCache::size
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:433,1
    - Dst: NegCache::get
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:436,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:436,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:438,1
    - Dst: NegCache::wipe
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:440,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:440,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:441,1
    - Dst: NegCache::size
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:441,1
    - Dst: NegCache::get
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:444,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:444,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:446,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 447
      start: 411
    functionDepth: 2
    functionLinenumber: 411
    functionLinenumberEnd: 447
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-negcache_cc.cc
    functionUses: 0
    functionsReached:
    - NegCache::add
    - std::to_string
    - NegCache::wipe
    - QType
    - DNSName
    - Utility::gettimeofday
    - BOOST_CHECK_EQUAL
    - NegCache::NegCache
    - NegCache::get
    - genNegCacheEntry
    - NegCache::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_wipe_single)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Utility::gettimeofday
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:456,1
    - Dst: NegCache::NegCache
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:458,1
    - Dst: genNegCacheEntry
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:460,1
    - Dst: NegCache::add
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:461,1
    - Dst: genNegCacheEntry
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:464,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:464,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:464,1
    - Dst: NegCache::add
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:465,1
    - Dst: genNegCacheEntry
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:466,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:466,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:466,1
    - Dst: NegCache::add
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:467,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:470,1
    - Dst: NegCache::size
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:470,1
    - Dst: NegCache::wipe
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:473,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:474,1
    - Dst: NegCache::size
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:474,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 475
      start: 449
    functionDepth: 2
    functionLinenumber: 449
    functionLinenumberEnd: 475
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-negcache_cc.cc
    functionUses: 0
    functionsReached:
    - NegCache::add
    - std::to_string
    - NegCache::wipe
    - DNSName
    - Utility::gettimeofday
    - BOOST_CHECK_EQUAL
    - NegCache::NegCache
    - genNegCacheEntry
    - NegCache::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_wipe_subtree)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Utility::gettimeofday
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:483,1
    - Dst: NegCache::NegCache
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:485,1
    - Dst: genNegCacheEntry
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:487,1
    - Dst: NegCache::add
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:488,1
    - Dst: genNegCacheEntry
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:491,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:491,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:491,1
    - Dst: NegCache::add
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:492,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:495,1
    - Dst: NegCache::size
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:495,1
    - Dst: NegCache::wipeTyped
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:498,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:499,1
    - Dst: NegCache::size
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:499,1
    - Dst: NegCache::get
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:502,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:502,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:504,1
    - Dst: NegCache::wipeTyped
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:506,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:506,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:507,1
    - Dst: NegCache::size
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:507,1
    - Dst: NegCache::get
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:510,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:510,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:512,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 513
      start: 477
    functionDepth: 2
    functionLinenumber: 477
    functionLinenumberEnd: 513
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-negcache_cc.cc
    functionUses: 0
    functionsReached:
    - NegCache::wipeTyped
    - NegCache::add
    - std::to_string
    - QType
    - DNSName
    - Utility::gettimeofday
    - BOOST_CHECK_EQUAL
    - NegCache::NegCache
    - NegCache::get
    - genNegCacheEntry
    - NegCache::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_wipe_typed)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Utility::gettimeofday
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:521,1
    - Dst: NegCache::NegCache
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:523,1
    - Dst: genNegCacheEntry
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:527,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:527,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:527,1
    - Dst: NegCache::add
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:528,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:531,1
    - Dst: NegCache::size
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:531,1
    - Dst: NegCache::clear
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:532,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:533,1
    - Dst: NegCache::size
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:533,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 534
      start: 515
    functionDepth: 2
    functionLinenumber: 515
    functionLinenumberEnd: 534
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-negcache_cc.cc
    functionUses: 0
    functionsReached:
    - NegCache::add
    - std::to_string
    - DNSName
    - Utility::gettimeofday
    - BOOST_CHECK_EQUAL
    - NegCache::NegCache
    - NegCache::clear
    - genNegCacheEntry
    - NegCache::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_clear)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Utility::gettimeofday
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:556,1
    - Dst: NegCache::add
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:558,1
    - Dst: genNegCacheEntry
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:558,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:558,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:558,1
    - Dst: NegCache::add
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:559,1
    - Dst: genNegCacheEntry
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:559,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:559,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:559,1
    - Dst: pdns::UniqueFilePtr
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:561,1
    - Dst: tmpfile
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:561,1
    - Dst: BOOST_FAIL
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:563,1
    - Dst: NegCache::doDump
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:566,1
    - Dst: fileno
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:566,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:566,1
    - Dst: rewind
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:568,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:568,1
    - Dst: getline
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:574,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:574,1
    - Dst: BOOST_FAIL
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:576,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:578,1
    - Dst: free
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:584,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 585
      start: 536
    functionDepth: 2
    functionLinenumber: 536
    functionLinenumberEnd: 585
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-negcache_cc.cc
    functionUses: 0
    functionsReached:
    - NegCache::add
    - fileno
    - tmpfile
    - NegCache::doDump
    - auto::get
    - free
    - DNSName
    - Utility::gettimeofday
    - BOOST_CHECK_EQUAL
    - getline
    - genNegCacheEntry
    - BOOST_FAIL
    - pdns::UniqueFilePtr
    - rewind
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_dumpToFile)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Utility::gettimeofday
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:594,1
    - Dst: NegCache::NegCache
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:596,1
    - Dst: genNegCacheEntry
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:598,1
    - Dst: NegCache::add
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:599,1
    - Dst: genNegCacheEntry
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:602,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:602,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:602,1
    - Dst: NegCache::add
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:603,1
    - Dst: genNegCacheEntry
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:604,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:604,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:604,1
    - Dst: NegCache::add
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:605,1
    - Dst: NegCache::count
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:609,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:610,1
    - Dst: NegCache::count
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:611,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:611,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-negcache_cc.cc:612,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 613
      start: 587
    functionDepth: 2
    functionLinenumber: 587
    functionLinenumberEnd: 613
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-negcache_cc.cc
    functionUses: 0
    functionsReached:
    - NegCache::count
    - NegCache::add
    - std::to_string
    - QType
    - DNSName
    - Utility::gettimeofday
    - BOOST_CHECK_EQUAL
    - NegCache::NegCache
    - genNegCacheEntry
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_count)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/query-local-address.cc:36,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/query-local-address.cc:38,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/query-local-address.cc:39,1
    - Dst: dns_random
      Src: /src/pdns/pdns/recursordist/query-local-address.cc:41,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/query-local-address.cc:41,1
    - Dst: htons
      Src: /src/pdns/pdns/recursordist/query-local-address.cc:43,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/query-local-address.cc:46,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/query-local-address.cc:48,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/query-local-address.cc:49,1
    - Dst: dns_random
      Src: /src/pdns/pdns/recursordist/query-local-address.cc:51,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/query-local-address.cc:51,1
    - Dst: htons
      Src: /src/pdns/pdns/recursordist/query-local-address.cc:53,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 23
    argCount: 2
    argNames:
    - family
    - port
    argTypes:
    - sa_family_t
    - in_port_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 33
    functionDepth: 0
    functionLinenumber: 33
    functionLinenumberEnd: 56
    functionName: pdns::getQueryLocalAddress
    functionSourceFile: /src/pdns/pdns/recursordist/query-local-address.cc
    functionUses: 12
    functionsReached:
    - dns_random
    - size
    - empty
    - at
    - htons
    linkageType: ''
    returnType: ComboAddress
    signature: ComboAddress getQueryLocalAddress(const sa_family_t family, const in_port_t
      port)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: IsAnyAddress
      Src: /src/pdns/pdns/recursordist/query-local-address.cc:61,1
    - Dst: IsAnyAddress
      Src: /src/pdns/pdns/recursordist/query-local-address.cc:68,1
    - Dst: ComboAddress::reset
      Src: /src/pdns/pdns/recursordist/query-local-address.cc:74,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 1
    argNames:
    - family
    argTypes:
    - sa_family_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 58
    functionDepth: 0
    functionLinenumber: 58
    functionLinenumberEnd: 76
    functionName: pdns::getNonAnyQueryLocalAddress
    functionSourceFile: /src/pdns/pdns/recursordist/query-local-address.cc
    functionUses: 1
    functionsReached:
    - IsAnyAddress
    - ComboAddress::reset
    linkageType: ''
    returnType: ComboAddress
    signature: ComboAddress getNonAnyQueryLocalAddress(const sa_family_t family)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: stringtok
      Src: /src/pdns/pdns/recursordist/query-local-address.cc:80,1
    - Dst: ComboAddress::isIPv4
      Src: /src/pdns/pdns/recursordist/query-local-address.cc:83,1
    - Dst: push_back
      Src: /src/pdns/pdns/recursordist/query-local-address.cc:84,1
    - Dst: push_back
      Src: /src/pdns/pdns/recursordist/query-local-address.cc:87,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - qla
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 78
    functionDepth: 0
    functionLinenumber: 78
    functionLinenumberEnd: 89
    functionName: pdns::parseQueryLocalAddress
    functionSourceFile: /src/pdns/pdns/recursordist/query-local-address.cc
    functionUses: 3
    functionsReached:
    - push_back
    - stringtok
    - ComboAddress::isIPv4
    linkageType: ''
    returnType: void
    signature: void parseQueryLocalAddress(const std::string &qla)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/query-local-address.cc:93,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/query-local-address.cc:96,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - family
    argTypes:
    - sa_family_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 91
    functionDepth: 0
    functionLinenumber: 91
    functionLinenumberEnd: 99
    functionName: pdns::isQueryLocalAddressFamilyEnabled
    functionSourceFile: /src/pdns/pdns/recursordist/query-local-address.cc
    functionUses: 7
    functionsReached:
    - empty
    linkageType: ''
    returnType: bool
    signature: bool isQueryLocalAddressFamilyEnabled(const sa_family_t family)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/query-local-address.cc:36,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/query-local-address.cc:38,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/query-local-address.cc:39,1
    - Dst: dns_random
      Src: /src/pdns/pdns/recursordist/query-local-address.cc:41,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/query-local-address.cc:41,1
    - Dst: htons
      Src: /src/pdns/pdns/recursordist/query-local-address.cc:43,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/query-local-address.cc:46,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/query-local-address.cc:48,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/query-local-address.cc:49,1
    - Dst: dns_random
      Src: /src/pdns/pdns/recursordist/query-local-address.cc:51,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/query-local-address.cc:51,1
    - Dst: htons
      Src: /src/pdns/pdns/recursordist/query-local-address.cc:53,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 23
    argCount: 2
    argNames:
    - family
    - port
    argTypes:
    - sa_family_t
    - in_port_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 33
    functionDepth: 0
    functionLinenumber: 33
    functionLinenumberEnd: 56
    functionName: pdns::getQueryLocalAddress
    functionSourceFile: /src/pdns/pdns/recursordist/query-local-address.cc
    functionUses: 12
    functionsReached:
    - dns_random
    - size
    - empty
    - at
    - htons
    linkageType: ''
    returnType: ComboAddress
    signature: ComboAddress getQueryLocalAddress(const sa_family_t family, const in_port_t
      port)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: IsAnyAddress
      Src: /src/pdns/pdns/recursordist/query-local-address.cc:61,1
    - Dst: IsAnyAddress
      Src: /src/pdns/pdns/recursordist/query-local-address.cc:68,1
    - Dst: ComboAddress::reset
      Src: /src/pdns/pdns/recursordist/query-local-address.cc:74,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 1
    argNames:
    - family
    argTypes:
    - sa_family_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 58
    functionDepth: 0
    functionLinenumber: 58
    functionLinenumberEnd: 76
    functionName: pdns::getNonAnyQueryLocalAddress
    functionSourceFile: /src/pdns/pdns/recursordist/query-local-address.cc
    functionUses: 1
    functionsReached:
    - IsAnyAddress
    - ComboAddress::reset
    linkageType: ''
    returnType: ComboAddress
    signature: ComboAddress getNonAnyQueryLocalAddress(const sa_family_t family)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: stringtok
      Src: /src/pdns/pdns/recursordist/query-local-address.cc:80,1
    - Dst: ComboAddress::isIPv4
      Src: /src/pdns/pdns/recursordist/query-local-address.cc:83,1
    - Dst: push_back
      Src: /src/pdns/pdns/recursordist/query-local-address.cc:84,1
    - Dst: push_back
      Src: /src/pdns/pdns/recursordist/query-local-address.cc:87,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - qla
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 78
    functionDepth: 0
    functionLinenumber: 78
    functionLinenumberEnd: 89
    functionName: pdns::parseQueryLocalAddress
    functionSourceFile: /src/pdns/pdns/recursordist/query-local-address.cc
    functionUses: 3
    functionsReached:
    - push_back
    - stringtok
    - ComboAddress::isIPv4
    linkageType: ''
    returnType: void
    signature: void parseQueryLocalAddress(const std::string &qla)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/query-local-address.cc:93,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/query-local-address.cc:96,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - family
    argTypes:
    - sa_family_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 91
    functionDepth: 0
    functionLinenumber: 91
    functionLinenumberEnd: 99
    functionName: pdns::isQueryLocalAddressFamilyEnabled
    functionSourceFile: /src/pdns/pdns/recursordist/query-local-address.cc
    functionUses: 7
    functionsReached:
    - empty
    linkageType: ''
    returnType: bool
    signature: bool isQueryLocalAddressFamilyEnabled(const sa_family_t family)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - time
    argTypes:
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 34
    functionDepth: 0
    functionLinenumber: 34
    functionLinenumberEnd: 37
    functionName: TimedSet::TimedSet
    functionSourceFile: /src/pdns/pdns/recursordist/rec-taskqueue.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void TimedSet(time_t time)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: template get<time_t>
      Src: /src/pdns/pdns/recursordist/rec-taskqueue.cc:43,1
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/rec-taskqueue.cc:44,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/rec-taskqueue.cc:45,1
    - Dst: erase
      Src: /src/pdns/pdns/recursordist/rec-taskqueue.cc:48,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - now
    argTypes:
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 39
    functionDepth: 0
    functionLinenumber: 39
    functionLinenumberEnd: 55
    functionName: TimedSet::purge
    functionSourceFile: /src/pdns/pdns/recursordist/rec-taskqueue.cc
    functionUses: 0
    functionsReached:
    - erase
    - end
    - template get<time_t>
    - begin
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t purge(time_t now)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: TimedSet::purge
      Src: /src/pdns/pdns/recursordist/rec-taskqueue.cc:61,1
    - Dst: emplace
      Src: /src/pdns/pdns/recursordist/rec-taskqueue.cc:64,1
    - Dst: TimedSet::purge
      Src: /src/pdns/pdns/recursordist/rec-taskqueue.cc:66,1
    - Dst: emplace
      Src: /src/pdns/pdns/recursordist/rec-taskqueue.cc:69,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - now
    - ' task'
    argTypes:
    - time_t
    - pdns::ResolveTask
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 57
    functionDepth: 1
    functionLinenumber: 57
    functionLinenumberEnd: 73
    functionName: TimedSet::insert
    functionSourceFile: /src/pdns/pdns/recursordist/rec-taskqueue.cc
    functionUses: 0
    functionsReached:
    - emplace
    - TimedSet::purge
    linkageType: ''
    returnType: bool
    signature: bool insert(time_t now, const pdns::ResolveTask& task)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TimedSet::clear
      Src: /src/pdns/pdns/recursordist/rec-taskqueue.cc:77,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 75
    functionDepth: 0
    functionLinenumber: 75
    functionLinenumberEnd: 78
    functionName: TimedSet::clear
    functionSourceFile: /src/pdns/pdns/recursordist/rec-taskqueue.cc
    functionUses: 1
    functionsReached:
    - TimedSet::clear
    linkageType: ''
    returnType: void
    signature: void clear()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/rec-taskqueue.cc:84,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - task
    - ttd
    argTypes:
    - pdns::ResolveTask
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 83
    functionDepth: 0
    functionLinenumber: 83
    functionLinenumberEnd: 84
    functionName: TimedSet::Entry
    functionSourceFile: /src/pdns/pdns/recursordist/rec-taskqueue.cc
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void Entry(pdns::ResolveTask task, time_t ttd)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: withName
      Src: /src/pdns/pdns/recursordist/rec-taskqueue.cc:120,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-taskqueue.cc:120,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-taskqueue.cc:120,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/rec-taskqueue.cc:120,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-taskqueue.cc:120,1
    - Dst: d_netmask::empty
      Src: /src/pdns/pdns/recursordist/rec-taskqueue.cc:120,1
    - Dst: d_netmask::toString
      Src: /src/pdns/pdns/recursordist/rec-taskqueue.cc:120,1
    - Dst: SyncRes::setRefreshAlmostExpired
      Src: /src/pdns/pdns/recursordist/rec-taskqueue.cc:124,1
    - Dst: SyncRes::setQuerySource
      Src: /src/pdns/pdns/recursordist/rec-taskqueue.cc:125,1
    - Dst: SyncRes::setQNameMinimization
      Src: /src/pdns/pdns/recursordist/rec-taskqueue.cc:127,1
    - Dst: auto::info
      Src: /src/pdns/pdns/recursordist/rec-taskqueue.cc:131,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-taskqueue.cc:131,1
    - Dst: SyncRes::beginResolve
      Src: /src/pdns/pdns/recursordist/rec-taskqueue.cc:132,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/rec-taskqueue.cc:132,1
    - Dst: auto::info
      Src: /src/pdns/pdns/recursordist/rec-taskqueue.cc:134,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-taskqueue.cc:134,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-taskqueue.cc:134,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/rec-taskqueue.cc:134,1
    - Dst: auto::error
      Src: /src/pdns/pdns/recursordist/rec-taskqueue.cc:137,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/rec-taskqueue.cc:137,1
    - Dst: auto::error
      Src: /src/pdns/pdns/recursordist/rec-taskqueue.cc:140,1
    - Dst: auto::error
      Src: /src/pdns/pdns/recursordist/rec-taskqueue.cc:144,1
    - Dst: auto::error
      Src: /src/pdns/pdns/recursordist/rec-taskqueue.cc:149,1
    - Dst: auto::error
      Src: /src/pdns/pdns/recursordist/rec-taskqueue.cc:153,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 38
    argCount: 4
    argNames:
    - ' now'
    - logErrors
    - ' task'
    - forceNoQM
    argTypes:
    - struct timeval
    - bool
    - pdns::ResolveTask
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 171
      start: 118
    functionDepth: 5
    functionLinenumber: 118
    functionLinenumberEnd: 171
    functionName: resolveInternal
    functionSourceFile: /src/pdns/pdns/recursordist/rec-taskqueue.cc
    functionUses: 0
    functionsReached:
    - SyncRes::setRefreshAlmostExpired
    - Logging::Loggable
    - withName
    - what
    - QType
    - SyncRes::setQuerySource
    - d_netmask::empty
    - SyncRes::setQNameMinimization
    - SyncRes::beginResolve
    - auto::error
    - d_netmask::toString
    - vector::size
    - auto::info
    linkageType: ''
    returnType: void
    signature: void resolveInternal(const struct timeval& now, bool logErrors, const
      pdns::ResolveTask& task, bool forceNoQM) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: resolveInternal
      Src: /src/pdns/pdns/recursordist/rec-taskqueue.cc:175,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' now'
    - logErrors
    - ' task'
    argTypes:
    - struct timeval
    - bool
    - pdns::ResolveTask
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 176
      start: 173
    functionDepth: 6
    functionLinenumber: 173
    functionLinenumberEnd: 176
    functionName: resolveForceNoQM
    functionSourceFile: /src/pdns/pdns/recursordist/rec-taskqueue.cc
    functionUses: 0
    functionsReached:
    - resolveInternal
    linkageType: ''
    returnType: void
    signature: void resolveForceNoQM(const struct timeval& now, bool logErrors, const
      pdns::ResolveTask& task) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: resolveInternal
      Src: /src/pdns/pdns/recursordist/rec-taskqueue.cc:180,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' now'
    - logErrors
    - ' task'
    argTypes:
    - struct timeval
    - bool
    - pdns::ResolveTask
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 181
      start: 178
    functionDepth: 6
    functionLinenumber: 178
    functionLinenumberEnd: 181
    functionName: resolve
    functionSourceFile: /src/pdns/pdns/recursordist/rec-taskqueue.cc
    functionUses: 10
    functionsReached:
    - resolveInternal
    linkageType: ''
    returnType: void
    signature: void resolve(const struct timeval& now, bool logErrors, const pdns::ResolveTask&
      task) noexcept
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: withName
      Src: /src/pdns/pdns/recursordist/rec-taskqueue.cc:185,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-taskqueue.cc:185,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-taskqueue.cc:185,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-taskqueue.cc:185,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/rec-taskqueue.cc:185,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-taskqueue.cc:185,1
    - Dst: SyncRes::setRefreshAlmostExpired
      Src: /src/pdns/pdns/recursordist/rec-taskqueue.cc:189,1
    - Dst: auto::info
      Src: /src/pdns/pdns/recursordist/rec-taskqueue.cc:192,1
    - Dst: SyncRes::tryDoT
      Src: /src/pdns/pdns/recursordist/rec-taskqueue.cc:193,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/rec-taskqueue.cc:193,1
    - Dst: auto::info
      Src: /src/pdns/pdns/recursordist/rec-taskqueue.cc:195,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-taskqueue.cc:195,1
    - Dst: auto::error
      Src: /src/pdns/pdns/recursordist/rec-taskqueue.cc:198,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/rec-taskqueue.cc:198,1
    - Dst: auto::error
      Src: /src/pdns/pdns/recursordist/rec-taskqueue.cc:201,1
    - Dst: auto::error
      Src: /src/pdns/pdns/recursordist/rec-taskqueue.cc:205,1
    - Dst: auto::error
      Src: /src/pdns/pdns/recursordist/rec-taskqueue.cc:210,1
    - Dst: auto::error
      Src: /src/pdns/pdns/recursordist/rec-taskqueue.cc:214,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 26
    argCount: 3
    argNames:
    - ' now'
    - logErrors
    - ' task'
    argTypes:
    - struct timeval
    - bool
    - pdns::ResolveTask
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 222
      start: 183
    functionDepth: 1
    functionLinenumber: 183
    functionLinenumberEnd: 222
    functionName: tryDoT
    functionSourceFile: /src/pdns/pdns/recursordist/rec-taskqueue.cc
    functionUses: 1
    functionsReached:
    - SyncRes::setRefreshAlmostExpired
    - Logging::Loggable
    - withName
    - what
    - QType
    - auto::error
    - SyncRes::tryDoT
    - auto::info
    linkageType: ''
    returnType: void
    signature: void tryDoT(const struct timeval& now, bool logErrors, const pdns::ResolveTask&
      task) noexcept
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: runTaskOnce
      Src: /src/pdns/pdns/recursordist/rec-taskqueue.cc:227,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 2
    argNames:
    - max
    - logErrors
    argTypes:
    - size_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 232
      start: 224
    functionDepth: 1
    functionLinenumber: 224
    functionLinenumberEnd: 232
    functionName: runTasks
    functionSourceFile: /src/pdns/pdns/recursordist/rec-taskqueue.cc
    functionUses: 1
    functionsReached:
    - runTaskOnce
    linkageType: ''
    returnType: void
    signature: void runTasks(size_t max, bool logErrors)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/rec-taskqueue.cc:238,1
    - Dst: auto::queue::empty
      Src: /src/pdns/pdns/recursordist/rec-taskqueue.cc:239,1
    - Dst: auto::queue::pop
      Src: /src/pdns/pdns/recursordist/rec-taskqueue.cc:242,1
    - Dst: pdns::ResolveTask::run
      Src: /src/pdns/pdns/recursordist/rec-taskqueue.cc:244,1
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/rec-taskqueue.cc:246,1
    - Dst: incExpired
      Src: /src/pdns/pdns/recursordist/rec-taskqueue.cc:246,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - logErrors
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 249
      start: 234
    functionDepth: 1
    functionLinenumber: 234
    functionLinenumberEnd: 249
    functionName: runTaskOnce
    functionSourceFile: /src/pdns/pdns/recursordist/rec-taskqueue.cc
    functionUses: 2
    functionsReached:
    - incExpired
    - lock
    - auto::queue::empty
    - auto::queue::pop
    - pdns::ResolveTask::run
    linkageType: ''
    returnType: bool
    signature: bool runTaskOnce(bool logErrors)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: SyncRes::isUnsupported
      Src: /src/pdns/pdns/recursordist/rec-taskqueue.cc:253,1
    - Dst: withName
      Src: /src/pdns/pdns/recursordist/rec-taskqueue.cc:254,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-taskqueue.cc:254,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-taskqueue.cc:254,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/rec-taskqueue.cc:254,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-taskqueue.cc:254,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/rec-taskqueue.cc:254,1
    - Dst: toString
      Src: /src/pdns/pdns/recursordist/rec-taskqueue.cc:254,1
    - Dst: auto::error
      Src: /src/pdns/pdns/recursordist/rec-taskqueue.cc:255,1
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/rec-taskqueue.cc:259,1
    - Dst: push
      Src: /src/pdns/pdns/recursordist/rec-taskqueue.cc:259,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/rec-taskqueue.cc:259,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 4
    argNames:
    - ' qname'
    - qtype
    - deadline
    - ' netmask'
    argTypes:
    - DNSName
    - uint16_t
    - time_t
    - Netmask
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 262
      start: 251
    functionDepth: 1
    functionLinenumber: 251
    functionLinenumberEnd: 262
    functionName: pushAlmostExpiredTask
    functionSourceFile: /src/pdns/pdns/recursordist/rec-taskqueue.cc
    functionUses: 4
    functionsReached:
    - std::move
    - toString
    - push
    - Logging::Loggable
    - withName
    - QType
    - SyncRes::isUnsupported
    - lock
    - auto::error
    - empty
    linkageType: ''
    returnType: void
    signature: void pushAlmostExpiredTask(const DNSName& qname, uint16_t qtype, time_t
      deadline, const Netmask& netmask)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: SyncRes::isUnsupported
      Src: /src/pdns/pdns/recursordist/rec-taskqueue.cc:266,1
    - Dst: withName
      Src: /src/pdns/pdns/recursordist/rec-taskqueue.cc:267,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-taskqueue.cc:267,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-taskqueue.cc:267,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/rec-taskqueue.cc:267,1
    - Dst: auto::error
      Src: /src/pdns/pdns/recursordist/rec-taskqueue.cc:268,1
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/rec-taskqueue.cc:273,1
    - Dst: auto::rateLimitSet::insert
      Src: /src/pdns/pdns/recursordist/rec-taskqueue.cc:274,1
    - Dst: auto::queue::push
      Src: /src/pdns/pdns/recursordist/rec-taskqueue.cc:276,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/rec-taskqueue.cc:276,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 5
    argNames:
    - ' qname'
    - qtype
    - now
    - deadline
    - forceQMOff
    argTypes:
    - DNSName
    - uint16_t
    - time_t
    - time_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 280
      start: 264
    functionDepth: 2
    functionLinenumber: 264
    functionLinenumberEnd: 280
    functionName: pushResolveTask
    functionSourceFile: /src/pdns/pdns/recursordist/rec-taskqueue.cc
    functionUses: 2
    functionsReached:
    - std::move
    - Logging::Loggable
    - withName
    - QType
    - SyncRes::isUnsupported
    - auto::rateLimitSet::insert
    - lock
    - auto::error
    - auto::queue::push
    linkageType: ''
    returnType: void
    signature: void pushResolveTask(const DNSName& qname, uint16_t qtype, time_t now,
      time_t deadline, bool forceQMOff)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: SyncRes::isUnsupported
      Src: /src/pdns/pdns/recursordist/rec-taskqueue.cc:284,1
    - Dst: withName
      Src: /src/pdns/pdns/recursordist/rec-taskqueue.cc:285,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-taskqueue.cc:285,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-taskqueue.cc:285,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/rec-taskqueue.cc:285,1
    - Dst: auto::error
      Src: /src/pdns/pdns/recursordist/rec-taskqueue.cc:286,1
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/rec-taskqueue.cc:291,1
    - Dst: push
      Src: /src/pdns/pdns/recursordist/rec-taskqueue.cc:291,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/rec-taskqueue.cc:291,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 5
    argNames:
    - ' qname'
    - qtype
    - ' ipAddress'
    - deadline
    - ' nsname'
    argTypes:
    - DNSName
    - uint16_t
    - ComboAddress
    - time_t
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 296
      start: 282
    functionDepth: 1
    functionLinenumber: 282
    functionLinenumberEnd: 296
    functionName: pushTryDoTTask
    functionSourceFile: /src/pdns/pdns/recursordist/rec-taskqueue.cc
    functionUses: 1
    functionsReached:
    - std::move
    - push
    - Logging::Loggable
    - withName
    - QType
    - SyncRes::isUnsupported
    - lock
    - auto::error
    linkageType: ''
    returnType: bool
    signature: bool pushTryDoTTask(const DNSName& qname, uint16_t qtype, const ComboAddress&
      ipAddress, time_t deadline, const DNSName& nsname)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/rec-taskqueue.cc:300,1
    - Dst: getPushes
      Src: /src/pdns/pdns/recursordist/rec-taskqueue.cc:300,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 301
      start: 298
    functionDepth: 0
    functionLinenumber: 298
    functionLinenumberEnd: 301
    functionName: getTaskPushes
    functionSourceFile: /src/pdns/pdns/recursordist/rec-taskqueue.cc
    functionUses: 1
    functionsReached:
    - getPushes
    - lock
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t getTaskPushes()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/rec-taskqueue.cc:305,1
    - Dst: getExpired
      Src: /src/pdns/pdns/recursordist/rec-taskqueue.cc:305,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 306
      start: 303
    functionDepth: 0
    functionLinenumber: 303
    functionLinenumberEnd: 306
    functionName: getTaskExpired
    functionSourceFile: /src/pdns/pdns/recursordist/rec-taskqueue.cc
    functionUses: 1
    functionsReached:
    - getExpired
    - lock
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t getTaskExpired()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/rec-taskqueue.cc:310,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/rec-taskqueue.cc:310,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 311
      start: 308
    functionDepth: 0
    functionLinenumber: 308
    functionLinenumberEnd: 311
    functionName: getTaskSize
    functionSourceFile: /src/pdns/pdns/recursordist/rec-taskqueue.cc
    functionUses: 12
    functionsReached:
    - size
    - lock
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t getTaskSize()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/rec-taskqueue.cc:315,1
    - Dst: auto::queue::clear
      Src: /src/pdns/pdns/recursordist/rec-taskqueue.cc:316,1
    - Dst: auto::rateLimitSet::clear
      Src: /src/pdns/pdns/recursordist/rec-taskqueue.cc:317,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 318
      start: 313
    functionDepth: 1
    functionLinenumber: 313
    functionLinenumberEnd: 318
    functionName: taskQueueClear
    functionSourceFile: /src/pdns/pdns/recursordist/rec-taskqueue.cc
    functionUses: 4
    functionsReached:
    - auto::rateLimitSet::clear
    - auto::queue::clear
    - lock
    linkageType: ''
    returnType: void
    signature: void taskQueueClear()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/rec-taskqueue.cc:322,1
    - Dst: pop
      Src: /src/pdns/pdns/recursordist/rec-taskqueue.cc:322,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 323
      start: 320
    functionDepth: 0
    functionLinenumber: 320
    functionLinenumberEnd: 323
    functionName: taskQueuePop
    functionSourceFile: /src/pdns/pdns/recursordist/rec-taskqueue.cc
    functionUses: 10
    functionsReached:
    - pop
    - lock
    linkageType: ''
    returnType: pdns::ResolveTask
    signature: pdns::ResolveTask taskQueuePop()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 328
      start: 325
    functionDepth: 0
    functionLinenumber: 325
    functionLinenumberEnd: 328
    functionName: getAlmostExpiredTasksPushed
    functionSourceFile: /src/pdns/pdns/recursordist/rec-taskqueue.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t getAlmostExpiredTasksPushed()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 333
      start: 330
    functionDepth: 0
    functionLinenumber: 330
    functionLinenumberEnd: 333
    functionName: getAlmostExpiredTasksRun
    functionSourceFile: /src/pdns/pdns/recursordist/rec-taskqueue.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t getAlmostExpiredTasksRun()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 338
      start: 335
    functionDepth: 0
    functionLinenumber: 335
    functionLinenumberEnd: 338
    functionName: getAlmostExpiredTaskExceptions
    functionSourceFile: /src/pdns/pdns/recursordist/rec-taskqueue.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t getAlmostExpiredTaskExceptions()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 343
      start: 340
    functionDepth: 0
    functionLinenumber: 340
    functionLinenumberEnd: 343
    functionName: getResolveTasksPushed
    functionSourceFile: /src/pdns/pdns/recursordist/rec-taskqueue.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t getResolveTasksPushed()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 348
      start: 345
    functionDepth: 0
    functionLinenumber: 345
    functionLinenumberEnd: 348
    functionName: getResolveTasksRun
    functionSourceFile: /src/pdns/pdns/recursordist/rec-taskqueue.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t getResolveTasksRun()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 353
      start: 350
    functionDepth: 0
    functionLinenumber: 350
    functionLinenumberEnd: 353
    functionName: getResolveTaskExceptions
    functionSourceFile: /src/pdns/pdns/recursordist/rec-taskqueue.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t getResolveTaskExceptions()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SyncRes::isUnsupported
      Src: /src/pdns/pdns/recursordist/rec-taskqueue.cc:357,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - qtype
    argTypes:
    - QType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 358
      start: 355
    functionDepth: 1
    functionLinenumber: 355
    functionLinenumberEnd: 358
    functionName: taskQTypeIsSupported
    functionSourceFile: /src/pdns/pdns/recursordist/rec-taskqueue.cc
    functionUses: 1
    functionsReached:
    - SyncRes::isUnsupported
    linkageType: ''
    returnType: bool
    signature: bool taskQTypeIsSupported(QType qtype)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: socket
      Src: /src/pdns/pdns/recursordist/resolver.cc:60,1
    - Dst: unixDie
      Src: /src/pdns/pdns/recursordist/resolver.cc:65,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/recursordist/resolver.cc:65,1
    - Dst: setCloseOnExec
      Src: /src/pdns/pdns/recursordist/resolver.cc:68,1
    - Dst: Utility::setBindAny
      Src: /src/pdns/pdns/recursordist/resolver.cc:71,1
    - Dst: htons
      Src: /src/pdns/pdns/recursordist/resolver.cc:77,1
    - Dst: dns_random
      Src: /src/pdns/pdns/recursordist/resolver.cc:77,1
    - Dst: Socket::bind
      Src: /src/pdns/pdns/recursordist/resolver.cc:79,1
    - Dst: ComboAddress::getSocklen
      Src: /src/pdns/pdns/recursordist/resolver.cc:79,1
    - Dst: closesocket
      Src: /src/pdns/pdns/recursordist/resolver.cc:85,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/recursordist/resolver.cc:86,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/recursordist/resolver.cc:86,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/resolver.cc:86,1
    - Dst: Socket::bind
      Src: /src/pdns/pdns/recursordist/resolver.cc:92,1
    - Dst: ComboAddress::getSocklen
      Src: /src/pdns/pdns/recursordist/resolver.cc:92,1
    - Dst: closesocket
      Src: /src/pdns/pdns/recursordist/resolver.cc:93,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/recursordist/resolver.cc:94,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/recursordist/resolver.cc:94,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/resolver.cc:94,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 28
    argCount: 3
    argNames:
    - ' local'
    - udpOrTCP
    - nonLocalBind
    argTypes:
    - ComboAddress
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 56
    functionDepth: 0
    functionLinenumber: 56
    functionLinenumberEnd: 98
    functionName: makeQuerySocket
    functionSourceFile: /src/pdns/pdns/recursordist/resolver.cc
    functionUses: 6
    functionsReached:
    - socket
    - dns_random
    - closesocket
    - unixDie
    - PDNSException
    - stringerror
    - setCloseOnExec
    - Utility::setBindAny
    - ComboAddress::toString
    - Socket::bind
    - ComboAddress::getSocklen
    - htons
    linkageType: ''
    returnType: int
    signature: int makeQuerySocket(const ComboAddress& local, bool udpOrTCP, bool
      nonLocalBind)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pdns::isQueryLocalAddressFamilyEnabled
      Src: /src/pdns/pdns/recursordist/resolver.cc:105,1
    - Dst: makeQuerySocket
      Src: /src/pdns/pdns/recursordist/resolver.cc:106,1
    - Dst: pdns::getQueryLocalAddress
      Src: /src/pdns/pdns/recursordist/resolver.cc:106,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/resolver.cc:106,1
    - Dst: pdns::isQueryLocalAddressFamilyEnabled
      Src: /src/pdns/pdns/recursordist/resolver.cc:108,1
    - Dst: makeQuerySocket
      Src: /src/pdns/pdns/recursordist/resolver.cc:109,1
    - Dst: pdns::getQueryLocalAddress
      Src: /src/pdns/pdns/recursordist/resolver.cc:109,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/resolver.cc:109,1
    - Dst: close
      Src: /src/pdns/pdns/recursordist/resolver.cc:114,1
    - Dst: close
      Src: /src/pdns/pdns/recursordist/resolver.cc:116,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 1
    argNames:
    - slog
    argTypes:
    - Logr::log_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 119
      start: 100
    functionDepth: 0
    functionLinenumber: 100
    functionLinenumberEnd: 119
    functionName: Resolver::Resolver
    functionSourceFile: /src/pdns/pdns/recursordist/resolver.cc
    functionUses: 0
    functionsReached:
    - pdns::getQueryLocalAddress
    - makeQuerySocket
    - pdns::isQueryLocalAddressFamilyEnabled
    - arg
    - close
    linkageType: ''
    returnType: void
    signature: void Resolver::Resolver(Logr::log_t slog)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: close
      Src: /src/pdns/pdns/recursordist/resolver.cc:125,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 127
      start: 121
    functionDepth: 0
    functionLinenumber: 121
    functionLinenumberEnd: 127
    functionName: Resolver::~Resolver()
    functionSourceFile: /src/pdns/pdns/recursordist/resolver.cc
    functionUses: 0
    functionsReached:
    - close
    linkageType: ''
    returnType: void
    signature: void Resolver::~Resolver()
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/recursordist/resolver.cc:137,1
    - Dst: dns_random_uint16
      Src: /src/pdns/pdns/recursordist/resolver.cc:137,1
    - Dst: DNSPacketWriter::addOpt
      Src: /src/pdns/pdns/recursordist/resolver.cc:140,1
    - Dst: DNSPacketWriter::commit
      Src: /src/pdns/pdns/recursordist/resolver.cc:141,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/resolver.cc:144,1
    - Dst: TSIGRecordContent::TSIGRecordContent
      Src: /src/pdns/pdns/recursordist/resolver.cc:146,1
    - Dst: time
      Src: /src/pdns/pdns/recursordist/resolver.cc:153,1
    - Dst: ntohs
      Src: /src/pdns/pdns/recursordist/resolver.cc:155,1
    - Dst: addTSIG
      Src: /src/pdns/pdns/recursordist/resolver.cc:157,1
    - Dst: pdns::isQueryLocalAddressFamilyEnabled
      Src: /src/pdns/pdns/recursordist/resolver.cc:165,1
    - Dst: ResolverException
      Src: /src/pdns/pdns/recursordist/resolver.cc:167,1
    - Dst: toString
      Src: /src/pdns/pdns/recursordist/resolver.cc:171,1
    - Dst: find
      Src: /src/pdns/pdns/recursordist/resolver.cc:175,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/resolver.cc:175,1
    - Dst: makeQuerySocket
      Src: /src/pdns/pdns/recursordist/resolver.cc:179,1
    - Dst: ResolverException
      Src: /src/pdns/pdns/recursordist/resolver.cc:181,1
    - Dst: toLogString
      Src: /src/pdns/pdns/recursordist/resolver.cc:181,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/resolver.cc:181,1
    - Dst: setNonBlocking
      Src: /src/pdns/pdns/recursordist/resolver.cc:182,1
    - Dst: sendto
      Src: /src/pdns/pdns/recursordist/resolver.cc:190,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/resolver.cc:190,1
    - Dst: getSocklen
      Src: /src/pdns/pdns/recursordist/resolver.cc:190,1
    - Dst: ResolverException
      Src: /src/pdns/pdns/recursordist/resolver.cc:191,1
    - Dst: toLogString
      Src: /src/pdns/pdns/recursordist/resolver.cc:191,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/resolver.cc:191,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 41
    argCount: 9
    argNames:
    - ' remote'
    - ' local'
    - domain
    - type
    - localsock
    - dnssecOK
    - ' tsigkeyname'
    - ' tsigalgorithm'
    - ' tsigsecret'
    argTypes:
    - ComboAddress
    - ComboAddress
    - DNSName
    - int
    - int*
    - bool
    - DNSName
    - DNSName
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 194
      start: 129
    functionDepth: 1
    functionLinenumber: 129
    functionLinenumberEnd: 194
    functionName: Resolver::sendResolve
    functionSourceFile: /src/pdns/pdns/recursordist/resolver.cc
    functionUses: 1
    functionsReached:
    - toLogString
    - toString
    - ntohs
    - stringerror
    - dns_random_uint16
    - TSIGRecordContent::TSIGRecordContent
    - find
    - setNonBlocking
    - time
    - DNSPacketWriter::getHeader
    - ResolverException
    - empty
    - DNSPacketWriter::commit
    - getSocklen
    - makeQuerySocket
    - addTSIG
    - end
    - DNSPacketWriter::addOpt
    - sendto
    - vector::size
    - pdns::isQueryLocalAddressFamilyEnabled
    linkageType: ''
    returnType: uint16_t
    signature: "uint16_t Resolver::sendResolve(const ComboAddress& remote, const ComboAddress&
      local,\n                               const DNSName &domain, int type, int
      *localsock, bool dnssecOK,\n                               const DNSName& tsigkeyname,
      const DNSName& tsigalgorithm,\n                               const string&
      tsigsecret)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: Resolver::res_t*::clear
      Src: /src/pdns/pdns/recursordist/resolver.cc:200,1
    - Dst: hasLabels
      Src: /src/pdns/pdns/recursordist/resolver.cc:205,1
    - Dst: ResolverException
      Src: /src/pdns/pdns/recursordist/resolver.cc:207,1
    - Dst: ResolverException
      Src: /src/pdns/pdns/recursordist/resolver.cc:209,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/resolver.cc:209,1
    - Dst: ResolverException
      Src: /src/pdns/pdns/recursordist/resolver.cc:211,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/resolver.cc:211,1
    - Dst: d_qname::toLogString
      Src: /src/pdns/pdns/recursordist/resolver.cc:211,1
    - Dst: toLogString
      Src: /src/pdns/pdns/recursordist/resolver.cc:211,1
    - Dst: Resolver::res_t*::reserve
      Src: /src/pdns/pdns/recursordist/resolver.cc:216,1
    - Dst: d_answers::size
      Src: /src/pdns/pdns/recursordist/resolver.cc:216,1
    - Dst: getContent
      Src: /src/pdns/pdns/recursordist/resolver.cc:222,1
    - Dst: Resolver::res_t*::push_back
      Src: /src/pdns/pdns/recursordist/resolver.cc:223,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 20
    argCount: 4
    argNames:
    - ' mdp'
    - ' origQname'
    - id
    - result
    argTypes:
    - MOADNSParser
    - DNSName
    - uint16_t
    - Resolver::res_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 227
      start: 198
    functionDepth: 1
    functionLinenumber: 198
    functionLinenumberEnd: 227
    functionName: pdns::resolver::parseResult
    functionSourceFile: /src/pdns/pdns/recursordist/resolver.cc
    functionUses: 0
    functionsReached:
    - toLogString
    - d_qname::toLogString
    - std::to_string
    - Resolver::res_t*::clear
    - d_answers::size
    - string
    - Resolver::res_t*::reserve
    - getContent
    - ResolverException
    - Resolver::res_t*::push_back
    - hasLabels
    linkageType: ''
    returnType: int
    signature: int parseResult(MOADNSParser& mdp, const DNSName& origQname, uint16_t
      /* origQtype */, uint16_t id, Resolver::res_t* result)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: Resolver::res_t*::clear
      Src: /src/pdns/pdns/recursordist/resolver.cc:200,1
    - Dst: hasLabels
      Src: /src/pdns/pdns/recursordist/resolver.cc:205,1
    - Dst: ResolverException
      Src: /src/pdns/pdns/recursordist/resolver.cc:207,1
    - Dst: ResolverException
      Src: /src/pdns/pdns/recursordist/resolver.cc:209,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/resolver.cc:209,1
    - Dst: ResolverException
      Src: /src/pdns/pdns/recursordist/resolver.cc:211,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/resolver.cc:211,1
    - Dst: d_qname::toLogString
      Src: /src/pdns/pdns/recursordist/resolver.cc:211,1
    - Dst: toLogString
      Src: /src/pdns/pdns/recursordist/resolver.cc:211,1
    - Dst: Resolver::res_t*::reserve
      Src: /src/pdns/pdns/recursordist/resolver.cc:216,1
    - Dst: d_answers::size
      Src: /src/pdns/pdns/recursordist/resolver.cc:216,1
    - Dst: getContent
      Src: /src/pdns/pdns/recursordist/resolver.cc:222,1
    - Dst: Resolver::res_t*::push_back
      Src: /src/pdns/pdns/recursordist/resolver.cc:223,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 20
    argCount: 4
    argNames:
    - ' mdp'
    - ' origQname'
    - id
    - result
    argTypes:
    - MOADNSParser
    - DNSName
    - uint16_t
    - Resolver::res_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 227
      start: 198
    functionDepth: 1
    functionLinenumber: 198
    functionLinenumberEnd: 227
    functionName: pdns::resolver::parseResult
    functionSourceFile: /src/pdns/pdns/recursordist/resolver.cc
    functionUses: 0
    functionsReached:
    - toLogString
    - d_qname::toLogString
    - std::to_string
    - Resolver::res_t*::clear
    - d_answers::size
    - string
    - Resolver::res_t*::reserve
    - getContent
    - ResolverException
    - Resolver::res_t*::push_back
    - hasLabels
    linkageType: ''
    returnType: int
    signature: int parseResult(MOADNSParser& mdp, const DNSName& origQname, uint16_t
      /* origQtype */, uint16_t id, Resolver::res_t* result)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: Resolver::res_t*::clear
      Src: /src/pdns/pdns/recursordist/resolver.cc:200,1
    - Dst: hasLabels
      Src: /src/pdns/pdns/recursordist/resolver.cc:205,1
    - Dst: ResolverException
      Src: /src/pdns/pdns/recursordist/resolver.cc:207,1
    - Dst: ResolverException
      Src: /src/pdns/pdns/recursordist/resolver.cc:209,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/resolver.cc:209,1
    - Dst: ResolverException
      Src: /src/pdns/pdns/recursordist/resolver.cc:211,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/resolver.cc:211,1
    - Dst: d_qname::toLogString
      Src: /src/pdns/pdns/recursordist/resolver.cc:211,1
    - Dst: toLogString
      Src: /src/pdns/pdns/recursordist/resolver.cc:211,1
    - Dst: Resolver::res_t*::reserve
      Src: /src/pdns/pdns/recursordist/resolver.cc:216,1
    - Dst: d_answers::size
      Src: /src/pdns/pdns/recursordist/resolver.cc:216,1
    - Dst: getContent
      Src: /src/pdns/pdns/recursordist/resolver.cc:222,1
    - Dst: Resolver::res_t*::push_back
      Src: /src/pdns/pdns/recursordist/resolver.cc:223,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 20
    argCount: 4
    argNames:
    - ' mdp'
    - ' origQname'
    - id
    - result
    argTypes:
    - MOADNSParser
    - DNSName
    - uint16_t
    - Resolver::res_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 227
      start: 198
    functionDepth: 1
    functionLinenumber: 198
    functionLinenumberEnd: 227
    functionName: pdns::resolver::parseResult
    functionSourceFile: /src/pdns/pdns/recursordist/resolver.cc
    functionUses: 0
    functionsReached:
    - toLogString
    - d_qname::toLogString
    - std::to_string
    - Resolver::res_t*::clear
    - d_answers::size
    - string
    - Resolver::res_t*::reserve
    - getContent
    - ResolverException
    - Resolver::res_t*::push_back
    - hasLabels
    linkageType: ''
    returnType: int
    signature: int parseResult(MOADNSParser& mdp, const DNSName& origQname, uint16_t
      /* origQtype */, uint16_t id, Resolver::res_t* result)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: Resolver::res_t*::clear
      Src: /src/pdns/pdns/recursordist/resolver.cc:200,1
    - Dst: hasLabels
      Src: /src/pdns/pdns/recursordist/resolver.cc:205,1
    - Dst: ResolverException
      Src: /src/pdns/pdns/recursordist/resolver.cc:207,1
    - Dst: ResolverException
      Src: /src/pdns/pdns/recursordist/resolver.cc:209,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/resolver.cc:209,1
    - Dst: ResolverException
      Src: /src/pdns/pdns/recursordist/resolver.cc:211,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/resolver.cc:211,1
    - Dst: d_qname::toLogString
      Src: /src/pdns/pdns/recursordist/resolver.cc:211,1
    - Dst: toLogString
      Src: /src/pdns/pdns/recursordist/resolver.cc:211,1
    - Dst: Resolver::res_t*::reserve
      Src: /src/pdns/pdns/recursordist/resolver.cc:216,1
    - Dst: d_answers::size
      Src: /src/pdns/pdns/recursordist/resolver.cc:216,1
    - Dst: getContent
      Src: /src/pdns/pdns/recursordist/resolver.cc:222,1
    - Dst: Resolver::res_t*::push_back
      Src: /src/pdns/pdns/recursordist/resolver.cc:223,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 20
    argCount: 4
    argNames:
    - ' mdp'
    - ' origQname'
    - id
    - result
    argTypes:
    - MOADNSParser
    - DNSName
    - uint16_t
    - Resolver::res_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 227
      start: 198
    functionDepth: 1
    functionLinenumber: 198
    functionLinenumberEnd: 227
    functionName: pdns::resolver::parseResult
    functionSourceFile: /src/pdns/pdns/recursordist/resolver.cc
    functionUses: 0
    functionsReached:
    - toLogString
    - d_qname::toLogString
    - std::to_string
    - Resolver::res_t*::clear
    - d_answers::size
    - string
    - Resolver::res_t*::reserve
    - getContent
    - ResolverException
    - Resolver::res_t*::push_back
    - hasLabels
    linkageType: ''
    returnType: int
    signature: int parseResult(MOADNSParser& mdp, const DNSName& origQname, uint16_t
      /* origQtype */, uint16_t id, Resolver::res_t* result)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: std::make_unique<struct pollfd[]>
      Src: /src/pdns/pdns/recursordist/resolver.cc:234,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/resolver.cc:234,1
    - Dst: poll
      Src: /src/pdns/pdns/recursordist/resolver.cc:244,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/resolver.cc:244,1
    - Dst: ComboAddress*::getSocklen
      Src: /src/pdns/pdns/recursordist/resolver.cc:262,1
    - Dst: recvfrom
      Src: /src/pdns/pdns/recursordist/resolver.cc:264,1
    - Dst: ResolverException
      Src: /src/pdns/pdns/recursordist/resolver.cc:269,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/resolver.cc:269,1
    - Dst: DNSName*::empty
      Src: /src/pdns/pdns/recursordist/resolver.cc:278,1
    - Dst: ResolverException
      Src: /src/pdns/pdns/recursordist/resolver.cc:279,1
    - Dst: ComboAddress*::toLogString
      Src: /src/pdns/pdns/recursordist/resolver.cc:279,1
    - Dst: RCode::to_s
      Src: /src/pdns/pdns/recursordist/resolver.cc:279,1
    - Dst: MOADNSParser::d_answers::empty
      Src: /src/pdns/pdns/recursordist/resolver.cc:282,1
    - Dst: ResolverException
      Src: /src/pdns/pdns/recursordist/resolver.cc:283,1
    - Dst: ComboAddress*::toLogString
      Src: /src/pdns/pdns/recursordist/resolver.cc:283,1
    - Dst: DNSName*::toLogString
      Src: /src/pdns/pdns/recursordist/resolver.cc:283,1
    - Dst: RCode::to_s
      Src: /src/pdns/pdns/recursordist/resolver.cc:283,1
    - Dst: ResolverException
      Src: /src/pdns/pdns/recursordist/resolver.cc:287,1
    - Dst: ComboAddress*::toLogString
      Src: /src/pdns/pdns/recursordist/resolver.cc:287,1
    - Dst: DNSName*::toLogString
      Src: /src/pdns/pdns/recursordist/resolver.cc:287,1
    - Dst: ResolverException
      Src: /src/pdns/pdns/recursordist/resolver.cc:291,1
    - Dst: ComboAddress*::toLogString
      Src: /src/pdns/pdns/recursordist/resolver.cc:291,1
    - Dst: DNSName*::toLogString
      Src: /src/pdns/pdns/recursordist/resolver.cc:291,1
    - Dst: RCode::to_s
      Src: /src/pdns/pdns/recursordist/resolver.cc:291,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/resolver.cc:297,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/resolver.cc:304,1
    - Dst: std::max
      Src: /src/pdns/pdns/recursordist/resolver.cc:306,1
    - Dst: std::max
      Src: /src/pdns/pdns/recursordist/resolver.cc:307,1
    - Dst: ResolverException
      Src: /src/pdns/pdns/recursordist/resolver.cc:313,1
    - Dst: ComboAddress*::toLogString
      Src: /src/pdns/pdns/recursordist/resolver.cc:313,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/resolver.cc:313,1
    - Dst: ResolverException
      Src: /src/pdns/pdns/recursordist/resolver.cc:316,1
    - Dst: ComboAddress*::toLogString
      Src: /src/pdns/pdns/recursordist/resolver.cc:316,1
    - Dst: DNSName*::toLogString
      Src: /src/pdns/pdns/recursordist/resolver.cc:316,1
    CyclomaticComplexity: 29
    EdgeCount: 29
    ICount: 60
    argCount: 6
    argNames:
    - domain
    - remote
    - theirSerial
    - theirInception
    - theirExpire
    - id
    argTypes:
    - DNSName*
    - ComboAddress*
    - uint32_t*
    - uint32_t*
    - uint32_t*
    - uint16_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 319
      start: 232
    functionDepth: 0
    functionLinenumber: 232
    functionLinenumberEnd: 319
    functionName: Resolver::tryGetSOASerial
    functionSourceFile: /src/pdns/pdns/recursordist/resolver.cc
    functionUses: 0
    functionsReached:
    - getRR
    - auto::get
    - ComboAddress*::getSocklen
    - stringerror
    - ComboAddress*::toLogString
    - MOADNSParser::d_answers::empty
    - recvfrom
    - what
    - size
    - ResolverException
    - DNSName*::empty
    - DNSName*::toLogString
    - poll
    - RCode::to_s
    - std::max
    - std::make_unique<struct pollfd[]>
    linkageType: ''
    returnType: bool
    signature: bool Resolver::tryGetSOASerial(DNSName *domain, ComboAddress* remote,
      uint32_t *theirSerial, uint32_t *theirInception, uint32_t *theirExpire, uint16_t*
      id)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Resolver::sendResolve
      Src: /src/pdns/pdns/recursordist/resolver.cc:325,1
    - Dst: waitForData
      Src: /src/pdns/pdns/recursordist/resolver.cc:326,1
    - Dst: ResolverException
      Src: /src/pdns/pdns/recursordist/resolver.cc:329,1
    - Dst: ResolverException
      Src: /src/pdns/pdns/recursordist/resolver.cc:332,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/resolver.cc:332,1
    - Dst: recvfrom
      Src: /src/pdns/pdns/recursordist/resolver.cc:339,1
    - Dst: ResolverException
      Src: /src/pdns/pdns/recursordist/resolver.cc:340,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/resolver.cc:340,1
    - Dst: ResolverException
      Src: /src/pdns/pdns/recursordist/resolver.cc:343,1
    - Dst: ComboAddress::toLogString
      Src: /src/pdns/pdns/recursordist/resolver.cc:343,1
    - Dst: toLogString
      Src: /src/pdns/pdns/recursordist/resolver.cc:343,1
    - Dst: parseResult
      Src: /src/pdns/pdns/recursordist/resolver.cc:347,1
    - Dst: ResolverException
      Src: /src/pdns/pdns/recursordist/resolver.cc:350,1
    - Dst: toLogString
      Src: /src/pdns/pdns/recursordist/resolver.cc:350,1
    - Dst: ResolverException
      Src: /src/pdns/pdns/recursordist/resolver.cc:353,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/resolver.cc:353,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/resolver.cc:353,1
    - Dst: toLogString
      Src: /src/pdns/pdns/recursordist/resolver.cc:353,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 18
    argCount: 5
    argNames:
    - ' to'
    - domain
    - type
    - res
    - local
    argTypes:
    - ComboAddress
    - DNSName
    - int
    - Resolver::res_t*
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 355
      start: 321
    functionDepth: 0
    functionLinenumber: 321
    functionLinenumberEnd: 355
    functionName: Resolver::resolve
    functionSourceFile: /src/pdns/pdns/recursordist/resolver.cc
    functionUses: 3
    functionsReached:
    - Resolver::sendResolve
    - toLogString
    - ComboAddress::toLogString
    - parseResult
    - stringerror
    - what
    - recvfrom
    - waitForData
    - ResolverException
    - std::string
    linkageType: ''
    returnType: int
    signature: int Resolver::resolve(const ComboAddress& to, const DNSName &domain,
      int type, Resolver::res_t* res, const ComboAddress &local)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Resolver::resolve
      Src: /src/pdns/pdns/recursordist/resolver.cc:360,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - ' ipport'
    - domain
    - type
    - res
    argTypes:
    - ComboAddress
    - DNSName
    - int
    - Resolver::res_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 361
      start: 357
    functionDepth: 0
    functionLinenumber: 357
    functionLinenumberEnd: 361
    functionName: Resolver::resolve
    functionSourceFile: /src/pdns/pdns/recursordist/resolver.cc
    functionUses: 4
    functionsReached:
    - Resolver::resolve
    linkageType: ''
    returnType: int
    signature: int Resolver::resolve(const ComboAddress& ipport, const DNSName &domain,
      int type, Resolver::res_t* res)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Resolver::resolve
      Src: /src/pdns/pdns/recursordist/resolver.cc:366,1
    - Dst: vector::empty
      Src: /src/pdns/pdns/recursordist/resolver.cc:368,1
    - Dst: ResolverException
      Src: /src/pdns/pdns/recursordist/resolver.cc:369,1
    - Dst: toLogString
      Src: /src/pdns/pdns/recursordist/resolver.cc:369,1
    - Dst: DNSName::toLogString
      Src: /src/pdns/pdns/recursordist/resolver.cc:369,1
    - Dst: qtype::getCode
      Src: /src/pdns/pdns/recursordist/resolver.cc:371,1
    - Dst: ResolverException
      Src: /src/pdns/pdns/recursordist/resolver.cc:372,1
    - Dst: toLogString
      Src: /src/pdns/pdns/recursordist/resolver.cc:372,1
    - Dst: DNSName::toLogString
      Src: /src/pdns/pdns/recursordist/resolver.cc:372,1
    - Dst: qtype::toString
      Src: /src/pdns/pdns/recursordist/resolver.cc:372,1
    - Dst: stringtok
      Src: /src/pdns/pdns/recursordist/resolver.cc:375,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/resolver.cc:376,1
    - Dst: ResolverException
      Src: /src/pdns/pdns/recursordist/resolver.cc:377,1
    - Dst: toLogString
      Src: /src/pdns/pdns/recursordist/resolver.cc:377,1
    - Dst: DNSName::toLogString
      Src: /src/pdns/pdns/recursordist/resolver.cc:377,1
    - Dst: pdns::checked_stoi<uint32_t>
      Src: /src/pdns/pdns/recursordist/resolver.cc:380,1
    - Dst: ResolverException
      Src: /src/pdns/pdns/recursordist/resolver.cc:383,1
    - Dst: toLogString
      Src: /src/pdns/pdns/recursordist/resolver.cc:383,1
    - Dst: DNSName::toLogString
      Src: /src/pdns/pdns/recursordist/resolver.cc:383,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 13
    argCount: 3
    argNames:
    - ' ipport'
    - domain
    - serial
    argTypes:
    - ComboAddress
    - DNSName
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 385
      start: 363
    functionDepth: 0
    functionLinenumber: 363
    functionLinenumberEnd: 385
    functionName: Resolver::getSoaSerial
    functionSourceFile: /src/pdns/pdns/recursordist/resolver.cc
    functionUses: 1
    functionsReached:
    - toLogString
    - qtype::toString
    - stringtok
    - Resolver::resolve
    - ResolverException
    - qtype::getCode
    - vector::empty
    - DNSName::toLogString
    - pdns::checked_stoi<uint32_t>
    - vector::size
    linkageType: ''
    returnType: void
    signature: void Resolver::getSoaSerial(const ComboAddress& ipport, const DNSName
      &domain, uint32_t *serial)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: at
      Src: /src/pdns/pdns/recursordist/rec-responsestats.hh:60,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/rec-responsestats.hh:63,1
    - Dst: d_sizecounters
      Src: /src/pdns/pdns/recursordist/rec-responsestats.hh:65,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - qtype
    - respsize
    - rcode
    argTypes:
    - uint16_t
    - uint16_t
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 57
    functionDepth: 0
    functionLinenumber: 57
    functionLinenumberEnd: 66
    functionName: RecResponseStats::submitResponse
    functionSourceFile: /src/pdns/pdns/recursordist/rec-responsestats.hh
    functionUses: 0
    functionsReached:
    - at
    - d_sizecounters
    linkageType: ''
    returnType: void
    signature: void submitResponse(uint16_t qtype, uint16_t respsize, uint8_t rcode)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: base_t
      Src: /src/pdns/pdns/recursordist/stat_t.hh:36,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 36
    functionDepth: 0
    functionLinenumber: 36
    functionLinenumberEnd: 37
    functionName: pdns::stat_t_trait::stat_t_trait
    functionSourceFile: /src/pdns/pdns/recursordist/stat_t.hh
    functionUses: 0
    functionsReached:
    - base_t
    linkageType: ''
    returnType: void
    signature: void stat_t_trait()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: atomic_t::atomic_t
      Src: /src/pdns/pdns/recursordist/stat_t.hh:40,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - value
    argTypes:
    - base_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 38
    functionDepth: 0
    functionLinenumber: 38
    functionLinenumberEnd: 41
    functionName: pdns::stat_t_trait::stat_t_trait
    functionSourceFile: /src/pdns/pdns/recursordist/stat_t.hh
    functionUses: 0
    functionsReached:
    - atomic_t::atomic_t
    linkageType: ''
    returnType: void
    signature: void stat_t_trait(const base_t value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ref
      Src: /src/pdns/pdns/recursordist/stat_t.hh:43,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ' value'
    argTypes:
    - base_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 42
    functionDepth: 0
    functionLinenumber: 42
    functionLinenumberEnd: 45
    functionName: '& operator=(const base_t& value)'
    functionSourceFile: /src/pdns/pdns/recursordist/stat_t.hh
    functionUses: 0
    functionsReached:
    - ref
    linkageType: ''
    returnType: stat_t_trait
    signature: stat_t_trait & operator=(const base_t& value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ref
      Src: /src/pdns/pdns/recursordist/stat_t.hh:47,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 46
    functionDepth: 0
    functionLinenumber: 46
    functionLinenumberEnd: 48
    functionName: ~stat_t_trait()
    functionSourceFile: /src/pdns/pdns/recursordist/stat_t.hh
    functionUses: 0
    functionsReached:
    - ref
    linkageType: ''
    returnType: void
    signature: void ~stat_t_trait()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 49
    functionDepth: 0
    functionLinenumber: 49
    functionLinenumberEnd: 49
    functionName: pdns::stat_t_trait::stat_t_trait
    functionSourceFile: /src/pdns/pdns/recursordist/stat_t.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void stat_t_trait(stat_t_trait&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 50
    functionDepth: 0
    functionLinenumber: 50
    functionLinenumberEnd: 50
    functionName: '& operator=(const stat_t_trait&)'
    functionSourceFile: /src/pdns/pdns/recursordist/stat_t.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: stat_t_trait
    signature: stat_t_trait & operator=(const stat_t_trait&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 51
    functionDepth: 0
    functionLinenumber: 51
    functionLinenumberEnd: 51
    functionName: '& operator=(stat_t_trait&&)'
    functionSourceFile: /src/pdns/pdns/recursordist/stat_t.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: stat_t_trait
    signature: stat_t_trait & operator=(stat_t_trait&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 52
    functionDepth: 0
    functionLinenumber: 52
    functionLinenumberEnd: 52
    functionName: pdns::stat_t_trait::stat_t_trait
    functionSourceFile: /src/pdns/pdns/recursordist/stat_t.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void stat_t_trait(const stat_t_trait&)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ref
      Src: /src/pdns/pdns/recursordist/stat_t.hh:54,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 53
    functionDepth: 0
    functionLinenumber: 53
    functionLinenumberEnd: 55
    functionName: operator++(int)
    functionSourceFile: /src/pdns/pdns/recursordist/stat_t.hh
    functionUses: 0
    functionsReached:
    - ref
    linkageType: ''
    returnType: base_t
    signature: base_t operator++(int)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ref
      Src: /src/pdns/pdns/recursordist/stat_t.hh:57,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 56
    functionDepth: 0
    functionLinenumber: 56
    functionLinenumberEnd: 58
    functionName: operator++()
    functionSourceFile: /src/pdns/pdns/recursordist/stat_t.hh
    functionUses: 0
    functionsReached:
    - ref
    linkageType: ''
    returnType: base_t
    signature: base_t operator++()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ref
      Src: /src/pdns/pdns/recursordist/stat_t.hh:60,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 59
    functionDepth: 0
    functionLinenumber: 59
    functionLinenumberEnd: 61
    functionName: operator--(int)
    functionSourceFile: /src/pdns/pdns/recursordist/stat_t.hh
    functionUses: 0
    functionsReached:
    - ref
    linkageType: ''
    returnType: base_t
    signature: base_t operator--(int)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ref
      Src: /src/pdns/pdns/recursordist/stat_t.hh:63,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 62
    functionDepth: 0
    functionLinenumber: 62
    functionLinenumberEnd: 64
    functionName: operator--()
    functionSourceFile: /src/pdns/pdns/recursordist/stat_t.hh
    functionUses: 0
    functionsReached:
    - ref
    linkageType: ''
    returnType: base_t
    signature: base_t operator--()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ref
      Src: /src/pdns/pdns/recursordist/stat_t.hh:66,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - arg
    argTypes:
    - base_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 65
    functionDepth: 0
    functionLinenumber: 65
    functionLinenumberEnd: 67
    functionName: operator+=(base_t arg)
    functionSourceFile: /src/pdns/pdns/recursordist/stat_t.hh
    functionUses: 0
    functionsReached:
    - ref
    linkageType: ''
    returnType: base_t
    signature: base_t operator+=(base_t arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ref
      Src: /src/pdns/pdns/recursordist/stat_t.hh:69,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - arg
    argTypes:
    - base_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 68
    functionDepth: 0
    functionLinenumber: 68
    functionLinenumberEnd: 70
    functionName: operator-=(base_t arg)
    functionSourceFile: /src/pdns/pdns/recursordist/stat_t.hh
    functionUses: 0
    functionsReached:
    - ref
    linkageType: ''
    returnType: base_t
    signature: base_t operator-=(base_t arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ref
      Src: /src/pdns/pdns/recursordist/stat_t.hh:72,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 71
    functionDepth: 0
    functionLinenumber: 71
    functionLinenumberEnd: 73
    functionName: pdns::stat_t_trait::load
    functionSourceFile: /src/pdns/pdns/recursordist/stat_t.hh
    functionUses: 0
    functionsReached:
    - ref
    linkageType: ''
    returnType: base_t
    signature: base_t load() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ref
      Src: /src/pdns/pdns/recursordist/stat_t.hh:75,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - value
    argTypes:
    - base_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 74
    functionDepth: 0
    functionLinenumber: 74
    functionLinenumberEnd: 76
    functionName: pdns::stat_t_trait::store
    functionSourceFile: /src/pdns/pdns/recursordist/stat_t.hh
    functionUses: 10
    functionsReached:
    - ref
    linkageType: ''
    returnType: void
    signature: void store(base_t value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ref
      Src: /src/pdns/pdns/recursordist/stat_t.hh:78,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 77
    functionDepth: 0
    functionLinenumber: 77
    functionLinenumberEnd: 79
    functionName: operator base_t() const
    functionSourceFile: /src/pdns/pdns/recursordist/stat_t.hh
    functionUses: 0
    functionsReached:
    - ref
    linkageType: ''
    returnType: void
    signature: void operator base_t() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: reinterpret_cast<atomic_t *>
      Src: /src/pdns/pdns/recursordist/stat_t.hh:83,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 82
    functionDepth: 0
    functionLinenumber: 82
    functionLinenumberEnd: 84
    functionName: '& ref()'
    functionSourceFile: /src/pdns/pdns/recursordist/stat_t.hh
    functionUses: 0
    functionsReached:
    - reinterpret_cast<atomic_t *>
    linkageType: ''
    returnType: atomic_t
    signature: atomic_t & ref()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: reinterpret_cast<const atomic_t *>
      Src: /src/pdns/pdns/recursordist/stat_t.hh:86,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 85
    functionDepth: 0
    functionLinenumber: 85
    functionLinenumberEnd: 87
    functionName: '& ref() const'
    functionSourceFile: /src/pdns/pdns/recursordist/stat_t.hh
    functionUses: 0
    functionsReached:
    - reinterpret_cast<const atomic_t *>
    linkageType: ''
    returnType: atomic_t
    signature: atomic_t & ref() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: base_t
      Src: /src/pdns/pdns/recursordist/stat_t.hh:36,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 36
    functionDepth: 0
    functionLinenumber: 36
    functionLinenumberEnd: 37
    functionName: pdns::stat_t_trait::stat_t_trait
    functionSourceFile: /src/pdns/pdns/recursordist/stat_t.hh
    functionUses: 0
    functionsReached:
    - base_t
    linkageType: ''
    returnType: void
    signature: void stat_t_trait()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: atomic_t::atomic_t
      Src: /src/pdns/pdns/recursordist/stat_t.hh:40,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - value
    argTypes:
    - base_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 38
    functionDepth: 0
    functionLinenumber: 38
    functionLinenumberEnd: 41
    functionName: pdns::stat_t_trait::stat_t_trait
    functionSourceFile: /src/pdns/pdns/recursordist/stat_t.hh
    functionUses: 0
    functionsReached:
    - atomic_t::atomic_t
    linkageType: ''
    returnType: void
    signature: void stat_t_trait(const base_t value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ref
      Src: /src/pdns/pdns/recursordist/stat_t.hh:43,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ' value'
    argTypes:
    - base_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 42
    functionDepth: 0
    functionLinenumber: 42
    functionLinenumberEnd: 45
    functionName: '& operator=(const base_t& value)'
    functionSourceFile: /src/pdns/pdns/recursordist/stat_t.hh
    functionUses: 0
    functionsReached:
    - ref
    linkageType: ''
    returnType: stat_t_trait
    signature: stat_t_trait & operator=(const base_t& value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ref
      Src: /src/pdns/pdns/recursordist/stat_t.hh:47,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 46
    functionDepth: 0
    functionLinenumber: 46
    functionLinenumberEnd: 48
    functionName: ~stat_t_trait()
    functionSourceFile: /src/pdns/pdns/recursordist/stat_t.hh
    functionUses: 0
    functionsReached:
    - ref
    linkageType: ''
    returnType: void
    signature: void ~stat_t_trait()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 49
    functionDepth: 0
    functionLinenumber: 49
    functionLinenumberEnd: 49
    functionName: pdns::stat_t_trait::stat_t_trait
    functionSourceFile: /src/pdns/pdns/recursordist/stat_t.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void stat_t_trait(stat_t_trait&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 50
    functionDepth: 0
    functionLinenumber: 50
    functionLinenumberEnd: 50
    functionName: '& operator=(const stat_t_trait&)'
    functionSourceFile: /src/pdns/pdns/recursordist/stat_t.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: stat_t_trait
    signature: stat_t_trait & operator=(const stat_t_trait&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 51
    functionDepth: 0
    functionLinenumber: 51
    functionLinenumberEnd: 51
    functionName: '& operator=(stat_t_trait&&)'
    functionSourceFile: /src/pdns/pdns/recursordist/stat_t.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: stat_t_trait
    signature: stat_t_trait & operator=(stat_t_trait&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 52
    functionDepth: 0
    functionLinenumber: 52
    functionLinenumberEnd: 52
    functionName: pdns::stat_t_trait::stat_t_trait
    functionSourceFile: /src/pdns/pdns/recursordist/stat_t.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void stat_t_trait(const stat_t_trait&)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ref
      Src: /src/pdns/pdns/recursordist/stat_t.hh:54,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 53
    functionDepth: 0
    functionLinenumber: 53
    functionLinenumberEnd: 55
    functionName: operator++(int)
    functionSourceFile: /src/pdns/pdns/recursordist/stat_t.hh
    functionUses: 0
    functionsReached:
    - ref
    linkageType: ''
    returnType: base_t
    signature: base_t operator++(int)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ref
      Src: /src/pdns/pdns/recursordist/stat_t.hh:57,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 56
    functionDepth: 0
    functionLinenumber: 56
    functionLinenumberEnd: 58
    functionName: operator++()
    functionSourceFile: /src/pdns/pdns/recursordist/stat_t.hh
    functionUses: 0
    functionsReached:
    - ref
    linkageType: ''
    returnType: base_t
    signature: base_t operator++()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ref
      Src: /src/pdns/pdns/recursordist/stat_t.hh:60,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 59
    functionDepth: 0
    functionLinenumber: 59
    functionLinenumberEnd: 61
    functionName: operator--(int)
    functionSourceFile: /src/pdns/pdns/recursordist/stat_t.hh
    functionUses: 0
    functionsReached:
    - ref
    linkageType: ''
    returnType: base_t
    signature: base_t operator--(int)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ref
      Src: /src/pdns/pdns/recursordist/stat_t.hh:63,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 62
    functionDepth: 0
    functionLinenumber: 62
    functionLinenumberEnd: 64
    functionName: operator--()
    functionSourceFile: /src/pdns/pdns/recursordist/stat_t.hh
    functionUses: 0
    functionsReached:
    - ref
    linkageType: ''
    returnType: base_t
    signature: base_t operator--()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ref
      Src: /src/pdns/pdns/recursordist/stat_t.hh:66,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - arg
    argTypes:
    - base_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 65
    functionDepth: 0
    functionLinenumber: 65
    functionLinenumberEnd: 67
    functionName: operator+=(base_t arg)
    functionSourceFile: /src/pdns/pdns/recursordist/stat_t.hh
    functionUses: 0
    functionsReached:
    - ref
    linkageType: ''
    returnType: base_t
    signature: base_t operator+=(base_t arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ref
      Src: /src/pdns/pdns/recursordist/stat_t.hh:69,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - arg
    argTypes:
    - base_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 68
    functionDepth: 0
    functionLinenumber: 68
    functionLinenumberEnd: 70
    functionName: operator-=(base_t arg)
    functionSourceFile: /src/pdns/pdns/recursordist/stat_t.hh
    functionUses: 0
    functionsReached:
    - ref
    linkageType: ''
    returnType: base_t
    signature: base_t operator-=(base_t arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ref
      Src: /src/pdns/pdns/recursordist/stat_t.hh:72,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 71
    functionDepth: 0
    functionLinenumber: 71
    functionLinenumberEnd: 73
    functionName: pdns::stat_t_trait::load
    functionSourceFile: /src/pdns/pdns/recursordist/stat_t.hh
    functionUses: 0
    functionsReached:
    - ref
    linkageType: ''
    returnType: base_t
    signature: base_t load() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ref
      Src: /src/pdns/pdns/recursordist/stat_t.hh:75,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - value
    argTypes:
    - base_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 74
    functionDepth: 0
    functionLinenumber: 74
    functionLinenumberEnd: 76
    functionName: pdns::stat_t_trait::store
    functionSourceFile: /src/pdns/pdns/recursordist/stat_t.hh
    functionUses: 10
    functionsReached:
    - ref
    linkageType: ''
    returnType: void
    signature: void store(base_t value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ref
      Src: /src/pdns/pdns/recursordist/stat_t.hh:78,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 77
    functionDepth: 0
    functionLinenumber: 77
    functionLinenumberEnd: 79
    functionName: operator base_t() const
    functionSourceFile: /src/pdns/pdns/recursordist/stat_t.hh
    functionUses: 0
    functionsReached:
    - ref
    linkageType: ''
    returnType: void
    signature: void operator base_t() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: reinterpret_cast<atomic_t *>
      Src: /src/pdns/pdns/recursordist/stat_t.hh:83,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 82
    functionDepth: 0
    functionLinenumber: 82
    functionLinenumberEnd: 84
    functionName: '& ref()'
    functionSourceFile: /src/pdns/pdns/recursordist/stat_t.hh
    functionUses: 0
    functionsReached:
    - reinterpret_cast<atomic_t *>
    linkageType: ''
    returnType: atomic_t
    signature: atomic_t & ref()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: reinterpret_cast<const atomic_t *>
      Src: /src/pdns/pdns/recursordist/stat_t.hh:86,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 85
    functionDepth: 0
    functionLinenumber: 85
    functionLinenumberEnd: 87
    functionName: '& ref() const'
    functionSourceFile: /src/pdns/pdns/recursordist/stat_t.hh
    functionUses: 0
    functionsReached:
    - reinterpret_cast<const atomic_t *>
    linkageType: ''
    returnType: atomic_t
    signature: atomic_t & ref() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 35
      start: 32
    functionDepth: 0
    functionLinenumber: 32
    functionLinenumberEnd: 35
    functionName: checkDNSSECDisabled
    functionSourceFile: /src/pdns/pdns/recursordist/validate-recursor.cc
    functionUses: 7
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool checkDNSSECDisabled()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/validate-recursor.cc:40,1
    - Dst: withName
      Src: /src/pdns/pdns/recursordist/validate-recursor.cc:41,1
    - Dst: auto::info
      Src: /src/pdns/pdns/recursordist/validate-recursor.cc:42,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - ' msg'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 37
    functionDepth: 0
    functionLinenumber: 37
    functionLinenumberEnd: 47
    functionName: warnIfDNSSECDisabled
    functionSourceFile: /src/pdns/pdns/recursordist/validate-recursor.cc
    functionUses: 1
    functionsReached:
    - empty
    - withName
    - auto::info
    linkageType: ''
    returnType: bool
    signature: bool warnIfDNSSECDisabled(const string& msg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: at
      Src: /src/pdns/pdns/recursordist/validate-recursor.cc:51,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ' state'
    argTypes:
    - vState
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 49
    functionDepth: 0
    functionLinenumber: 49
    functionLinenumberEnd: 53
    functionName: increaseDNSSECStateCounter
    functionSourceFile: /src/pdns/pdns/recursordist/validate-recursor.cc
    functionUses: 1
    functionsReached:
    - at
    linkageType: ''
    returnType: vState
    signature: vState increaseDNSSECStateCounter(const vState& state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: at
      Src: /src/pdns/pdns/recursordist/validate-recursor.cc:57,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ' state'
    argTypes:
    - vState
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 55
    functionDepth: 0
    functionLinenumber: 55
    functionLinenumberEnd: 59
    functionName: increaseXDNSSECStateCounter
    functionSourceFile: /src/pdns/pdns/recursordist/validate-recursor.cc
    functionUses: 1
    functionsReached:
    - at
    linkageType: ''
    returnType: vState
    signature: vState increaseXDNSSECStateCounter(const vState& state)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ZoneParserTNG
      Src: /src/pdns/pdns/recursordist/validate-recursor.cc:66,1
    - Dst: auto::disableGenerate
      Src: /src/pdns/pdns/recursordist/validate-recursor.cc:67,1
    - Dst: DNSRecord::DNSRecord
      Src: /src/pdns/pdns/recursordist/validate-recursor.cc:69,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/validate-recursor.cc:70,1
    - Dst: DNSRecord
      Src: /src/pdns/pdns/recursordist/validate-recursor.cc:71,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/validate-recursor.cc:73,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/recursordist/validate-recursor.cc:75,1
    - Dst: DNSResourceRecord::qname::toString
      Src: /src/pdns/pdns/recursordist/validate-recursor.cc:75,1
    - Dst: DNSResourceRecord::getZoneRepresentation
      Src: /src/pdns/pdns/recursordist/validate-recursor.cc:75,1
    - Dst: insert
      Src: /src/pdns/pdns/recursordist/validate-recursor.cc:77,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/validate-recursor.cc:80,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/recursordist/validate-recursor.cc:82,1
    - Dst: DNSResourceRecord::qname::toString
      Src: /src/pdns/pdns/recursordist/validate-recursor.cc:82,1
    - Dst: DNSResourceRecord::getZoneRepresentation
      Src: /src/pdns/pdns/recursordist/validate-recursor.cc:82,1
    - Dst: makeDSFromDNSKey
      Src: /src/pdns/pdns/recursordist/validate-recursor.cc:84,1
    - Dst: insert
      Src: /src/pdns/pdns/recursordist/validate-recursor.cc:85,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/validate-recursor.cc:85,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/recursordist/validate-recursor.cc:89,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/recursordist/validate-recursor.cc:92,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/validate-recursor.cc:93,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/recursordist/validate-recursor.cc:97,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/validate-recursor.cc:97,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/recursordist/validate-recursor.cc:100,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 30
    argCount: 3
    argNames:
    - ' fname'
    - ' dsAnchors'
    - log
    argTypes:
    - std::string
    - map<DNSName, dsset_t>
    - Logr::log_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 62
    functionDepth: 2
    functionLinenumber: 62
    functionLinenumberEnd: 102
    functionName: updateTrustAnchorsFromFile
    functionSourceFile: /src/pdns/pdns/recursordist/validate-recursor.cc
    functionUses: 2
    functionsReached:
    - getRR
    - std::move
    - auto::get
    - DNSRecord::DNSRecord
    - Logr::log_t::info
    - ZoneParserTNG
    - PDNSException
    - DNSResourceRecord::qname::toString
    - DNSResourceRecord::getZoneRepresentation
    - what
    - DNSRecord
    - makeDSFromDNSKey
    - insert
    - auto::disableGenerate
    linkageType: ''
    returnType: bool
    signature: bool updateTrustAnchorsFromFile(const std::string& fname, map<DNSName,
      dsset_t>& dsAnchors, Logr::log_t log)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 28
    argCount: 3
    argNames:
    - ' a'
    - ' b'
    - ' c'
    argTypes:
    - uint32_t
    - uint32_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 27
    functionDepth: 0
    functionLinenumber: 27
    functionLinenumberEnd: 56
    functionName: burtlemix
    functionSourceFile: /src/pdns/pdns/recursordist/burtle.hh
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void burtlemix(uint32_t& a, uint32_t& b, uint32_t& c)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: burtlemix
      Src: /src/pdns/pdns/recursordist/burtle.hh:72,1
    - Dst: burtlemix
      Src: /src/pdns/pdns/recursordist/burtle.hh:115,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 39
    argCount: 3
    argNames:
    - k
    - length
    - initval
    argTypes:
    - unsigned char*
    - uint32_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 118
      start: 58
    functionDepth: 0
    functionLinenumber: 58
    functionLinenumberEnd: 118
    functionName: burtle
    functionSourceFile: /src/pdns/pdns/recursordist/burtle.hh
    functionUses: 29
    functionsReached:
    - burtlemix
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t burtle(const unsigned char* k, uint32_t length, uint32_t initval)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: dns_tolower
      Src: /src/pdns/pdns/recursordist/burtle.hh:131,1
    - Dst: dns_tolower
      Src: /src/pdns/pdns/recursordist/burtle.hh:131,1
    - Dst: dns_tolower
      Src: /src/pdns/pdns/recursordist/burtle.hh:131,1
    - Dst: dns_tolower
      Src: /src/pdns/pdns/recursordist/burtle.hh:131,1
    - Dst: dns_tolower
      Src: /src/pdns/pdns/recursordist/burtle.hh:132,1
    - Dst: dns_tolower
      Src: /src/pdns/pdns/recursordist/burtle.hh:132,1
    - Dst: dns_tolower
      Src: /src/pdns/pdns/recursordist/burtle.hh:132,1
    - Dst: dns_tolower
      Src: /src/pdns/pdns/recursordist/burtle.hh:132,1
    - Dst: dns_tolower
      Src: /src/pdns/pdns/recursordist/burtle.hh:133,1
    - Dst: dns_tolower
      Src: /src/pdns/pdns/recursordist/burtle.hh:133,1
    - Dst: dns_tolower
      Src: /src/pdns/pdns/recursordist/burtle.hh:133,1
    - Dst: dns_tolower
      Src: /src/pdns/pdns/recursordist/burtle.hh:133,1
    - Dst: burtlemix
      Src: /src/pdns/pdns/recursordist/burtle.hh:134,1
    - Dst: dns_tolower
      Src: /src/pdns/pdns/recursordist/burtle.hh:143,1
    - Dst: dns_tolower
      Src: /src/pdns/pdns/recursordist/burtle.hh:146,1
    - Dst: dns_tolower
      Src: /src/pdns/pdns/recursordist/burtle.hh:149,1
    - Dst: dns_tolower
      Src: /src/pdns/pdns/recursordist/burtle.hh:153,1
    - Dst: dns_tolower
      Src: /src/pdns/pdns/recursordist/burtle.hh:156,1
    - Dst: dns_tolower
      Src: /src/pdns/pdns/recursordist/burtle.hh:159,1
    - Dst: dns_tolower
      Src: /src/pdns/pdns/recursordist/burtle.hh:162,1
    - Dst: dns_tolower
      Src: /src/pdns/pdns/recursordist/burtle.hh:165,1
    - Dst: dns_tolower
      Src: /src/pdns/pdns/recursordist/burtle.hh:168,1
    - Dst: dns_tolower
      Src: /src/pdns/pdns/recursordist/burtle.hh:171,1
    - Dst: dns_tolower
      Src: /src/pdns/pdns/recursordist/burtle.hh:174,1
    - Dst: burtlemix
      Src: /src/pdns/pdns/recursordist/burtle.hh:177,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 39
    argCount: 3
    argNames:
    - k
    - length
    - initval
    argTypes:
    - unsigned char*
    - uint32_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 180
      start: 120
    functionDepth: 0
    functionLinenumber: 120
    functionLinenumberEnd: 180
    functionName: burtleCI
    functionSourceFile: /src/pdns/pdns/recursordist/burtle.hh
    functionUses: 18
    functionsReached:
    - burtlemix
    - dns_tolower
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t burtleCI(const unsigned char* k, uint32_t length, uint32_t
      initval)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: burtleCI
      Src: /src/pdns/pdns/recursordist/burtle.hh:185,1
    - Dst: reinterpret_cast<const unsigned char*>
      Src: /src/pdns/pdns/recursordist/burtle.hh:185,1
    - Dst: data
      Src: /src/pdns/pdns/recursordist/burtle.hh:185,1
    - Dst: length
      Src: /src/pdns/pdns/recursordist/burtle.hh:185,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' k'
    - initval
    argTypes:
    - T
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 186
      start: 183
    functionDepth: 0
    functionLinenumber: 183
    functionLinenumberEnd: 186
    functionName: burtleCI
    functionSourceFile: /src/pdns/pdns/recursordist/burtle.hh
    functionUses: 19
    functionsReached:
    - burtleCI
    - length
    - reinterpret_cast<const unsigned char*>
    - data
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t burtleCI(const T& k, uint32_t initval)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 37
    functionDepth: 0
    functionLinenumber: 37
    functionLinenumberEnd: 37
    functionName: Logr::Loggable
    functionSourceFile: /src/pdns/pdns/recursordist/logr.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Loggable()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 38
    functionDepth: 0
    functionLinenumber: 38
    functionLinenumberEnd: 38
    functionName: Logr::Loggable
    functionSourceFile: /src/pdns/pdns/recursordist/logr.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Loggable(const Loggable&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 39
      start: 39
    functionDepth: 0
    functionLinenumber: 39
    functionLinenumberEnd: 39
    functionName: Logr::Loggable
    functionSourceFile: /src/pdns/pdns/recursordist/logr.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Loggable(Loggable&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 40
    functionDepth: 0
    functionLinenumber: 40
    functionLinenumberEnd: 40
    functionName: '& operator=(const Loggable&)'
    functionSourceFile: /src/pdns/pdns/recursordist/logr.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Loggable
    signature: Loggable & operator=(const Loggable&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 41
    functionDepth: 0
    functionLinenumber: 41
    functionLinenumberEnd: 41
    functionName: '& operator=(Loggable&&)'
    functionSourceFile: /src/pdns/pdns/recursordist/logr.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Loggable
    signature: Loggable & operator=(Loggable&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 42
    functionDepth: 0
    functionLinenumber: 42
    functionLinenumberEnd: 42
    functionName: ~Loggable()
    functionSourceFile: /src/pdns/pdns/recursordist/logr.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~Loggable()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 69
    functionDepth: 0
    functionLinenumber: 69
    functionLinenumberEnd: 69
    functionName: Logr::Logger::Logger
    functionSourceFile: /src/pdns/pdns/recursordist/logr.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Logger()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 70
    functionDepth: 0
    functionLinenumber: 70
    functionLinenumberEnd: 70
    functionName: Logr::Logger::Logger
    functionSourceFile: /src/pdns/pdns/recursordist/logr.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Logger(const Logger&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 71
    functionDepth: 0
    functionLinenumber: 71
    functionLinenumberEnd: 71
    functionName: Logr::Logger::Logger
    functionSourceFile: /src/pdns/pdns/recursordist/logr.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Logger(Logger&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 72
    functionDepth: 0
    functionLinenumber: 72
    functionLinenumberEnd: 72
    functionName: '& operator=(const Logger&)'
    functionSourceFile: /src/pdns/pdns/recursordist/logr.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Logger
    signature: Logger & operator=(const Logger&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 73
    functionDepth: 0
    functionLinenumber: 73
    functionLinenumberEnd: 73
    functionName: '& operator=(Logger&&)'
    functionSourceFile: /src/pdns/pdns/recursordist/logr.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Logger
    signature: Logger & operator=(Logger&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 74
    functionDepth: 0
    functionLinenumber: 74
    functionLinenumberEnd: 74
    functionName: ~Logger()
    functionSourceFile: /src/pdns/pdns/recursordist/logr.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~Logger()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<unsigned int>
      Src: /src/pdns/pdns/recursordist/logr.hh:79,1
    - Dst: std::array::size
      Src: /src/pdns/pdns/recursordist/logr.hh:80,1
    - Dst: std::array::at
      Src: /src/pdns/pdns/recursordist/logr.hh:83,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - arg
    argTypes:
    - Priority
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 76
    functionDepth: 0
    functionLinenumber: 76
    functionLinenumberEnd: 84
    functionName: Logr::Logger::toString
    functionSourceFile: /src/pdns/pdns/recursordist/logr.hh
    functionUses: 7
    functionsReached:
    - static_cast<unsigned int>
    - std::array::at
    - std::array::size
    linkageType: ''
    returnType: std::string
    signature: std::string toString(Priority arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Logr::Logger::withValues
      Src: /src/pdns/pdns/recursordist/logr.hh:96,1
    - Dst: auto::info
      Src: /src/pdns/pdns/recursordist/logr.hh:97,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - prio
    - ' msg'
    - ' key'
    - ' value'
    argTypes:
    - Priority
    - std::string
    - std::string
    - Loggable
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 94
    functionDepth: 0
    functionLinenumber: 94
    functionLinenumberEnd: 98
    functionName: Logr::Logger::info
    functionSourceFile: /src/pdns/pdns/recursordist/logr.hh
    functionUses: 0
    functionsReached:
    - auto::info
    - Logr::Logger::withValues
    linkageType: ''
    returnType: void
    signature: void info(Priority prio, const std::string& msg, const std::string&
      key, const Loggable& value, const Args&... args) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Logr::Logger::withValues
      Src: /src/pdns/pdns/recursordist/logr.hh:114,1
    - Dst: auto::error
      Src: /src/pdns/pdns/recursordist/logr.hh:115,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - prio
    - ' err'
    - ' msg'
    - ' key'
    - ' value'
    argTypes:
    - Priority
    - std::string
    - std::string
    - std::string
    - Loggable
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 112
    functionDepth: 0
    functionLinenumber: 112
    functionLinenumberEnd: 116
    functionName: Logr::Logger::error
    functionSourceFile: /src/pdns/pdns/recursordist/logr.hh
    functionUses: 0
    functionsReached:
    - auto::error
    - Logr::Logger::withValues
    linkageType: ''
    returnType: void
    signature: void error(Priority prio, const std::string& err, const std::string&
      msg, const std::string& key, const Loggable& value, const Args&... args) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Logr::Logger::withValues
      Src: /src/pdns/pdns/recursordist/logr.hh:121,1
    - Dst: auto::error
      Src: /src/pdns/pdns/recursordist/logr.hh:122,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - prio
    - err
    - ' msg'
    - ' key'
    - ' value'
    argTypes:
    - Priority
    - int
    - std::string
    - std::string
    - Loggable
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 119
    functionDepth: 0
    functionLinenumber: 119
    functionLinenumberEnd: 123
    functionName: Logr::Logger::error
    functionSourceFile: /src/pdns/pdns/recursordist/logr.hh
    functionUses: 0
    functionsReached:
    - auto::error
    - Logr::Logger::withValues
    linkageType: ''
    returnType: void
    signature: void error(Priority prio, int err, const std::string& msg, const std::string&
      key, const Loggable& value, const Args&... args) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Logr::Logger::mapArguments
      Src: /src/pdns/pdns/recursordist/logr.hh:135,1
    - Dst: Logr::Logger::withValues
      Src: /src/pdns/pdns/recursordist/logr.hh:136,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ' key'
    - ' value'
    argTypes:
    - std::string
    - Loggable
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 137
      start: 132
    functionDepth: 0
    functionLinenumber: 132
    functionLinenumberEnd: 137
    functionName: Logr::Logger::withValues
    functionSourceFile: /src/pdns/pdns/recursordist/logr.hh
    functionUses: 20
    functionsReached:
    - Logr::Logger::mapArguments
    - Logr::Logger::withValues
    linkageType: ''
    returnType: std::shared_ptr<Logger>
    signature: std::shared_ptr<Logger> withValues(const std::string& key, const Loggable&
      value, const Args&... args) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: emplace
      Src: /src/pdns/pdns/recursordist/logr.hh:154,1
    - Dst: to_string
      Src: /src/pdns/pdns/recursordist/logr.hh:154,1
    - Dst: Logr::Logger::mapArguments
      Src: /src/pdns/pdns/recursordist/logr.hh:155,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - ' map'
    - ' key'
    - ' value'
    argTypes:
    - std::map<std::string, std::string>
    - std::string
    - Loggable
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 156
      start: 152
    functionDepth: 0
    functionLinenumber: 152
    functionLinenumberEnd: 156
    functionName: Logr::Logger::mapArguments
    functionSourceFile: /src/pdns/pdns/recursordist/logr.hh
    functionUses: 10
    functionsReached:
    - Logr::Logger::mapArguments
    - emplace
    - to_string
    linkageType: ''
    returnType: void
    signature: void mapArguments(std::map<std::string, std::string>& map, const std::string&
      key, const Loggable& value, const Args&... args) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 158
      start: 158
    functionDepth: 0
    functionLinenumber: 158
    functionLinenumberEnd: 158
    functionName: Logr::Logger::mapArguments
    functionSourceFile: /src/pdns/pdns/recursordist/logr.hh
    functionUses: 10
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void mapArguments(std::map<std::string, std::string>& /* map */) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 37
    functionDepth: 0
    functionLinenumber: 37
    functionLinenumberEnd: 37
    functionName: Logr::Loggable
    functionSourceFile: /src/pdns/pdns/recursordist/logr.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Loggable()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 38
    functionDepth: 0
    functionLinenumber: 38
    functionLinenumberEnd: 38
    functionName: Logr::Loggable
    functionSourceFile: /src/pdns/pdns/recursordist/logr.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Loggable(const Loggable&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 39
      start: 39
    functionDepth: 0
    functionLinenumber: 39
    functionLinenumberEnd: 39
    functionName: Logr::Loggable
    functionSourceFile: /src/pdns/pdns/recursordist/logr.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Loggable(Loggable&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 40
    functionDepth: 0
    functionLinenumber: 40
    functionLinenumberEnd: 40
    functionName: '& operator=(const Loggable&)'
    functionSourceFile: /src/pdns/pdns/recursordist/logr.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Loggable
    signature: Loggable & operator=(const Loggable&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 41
    functionDepth: 0
    functionLinenumber: 41
    functionLinenumberEnd: 41
    functionName: '& operator=(Loggable&&)'
    functionSourceFile: /src/pdns/pdns/recursordist/logr.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Loggable
    signature: Loggable & operator=(Loggable&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 42
    functionDepth: 0
    functionLinenumber: 42
    functionLinenumberEnd: 42
    functionName: ~Loggable()
    functionSourceFile: /src/pdns/pdns/recursordist/logr.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~Loggable()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 69
    functionDepth: 0
    functionLinenumber: 69
    functionLinenumberEnd: 69
    functionName: Logr::Logger::Logger
    functionSourceFile: /src/pdns/pdns/recursordist/logr.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Logger()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 70
    functionDepth: 0
    functionLinenumber: 70
    functionLinenumberEnd: 70
    functionName: Logr::Logger::Logger
    functionSourceFile: /src/pdns/pdns/recursordist/logr.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Logger(const Logger&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 71
    functionDepth: 0
    functionLinenumber: 71
    functionLinenumberEnd: 71
    functionName: Logr::Logger::Logger
    functionSourceFile: /src/pdns/pdns/recursordist/logr.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Logger(Logger&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 72
    functionDepth: 0
    functionLinenumber: 72
    functionLinenumberEnd: 72
    functionName: '& operator=(const Logger&)'
    functionSourceFile: /src/pdns/pdns/recursordist/logr.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Logger
    signature: Logger & operator=(const Logger&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 73
    functionDepth: 0
    functionLinenumber: 73
    functionLinenumberEnd: 73
    functionName: '& operator=(Logger&&)'
    functionSourceFile: /src/pdns/pdns/recursordist/logr.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Logger
    signature: Logger & operator=(Logger&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 74
    functionDepth: 0
    functionLinenumber: 74
    functionLinenumberEnd: 74
    functionName: ~Logger()
    functionSourceFile: /src/pdns/pdns/recursordist/logr.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~Logger()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<unsigned int>
      Src: /src/pdns/pdns/recursordist/logr.hh:79,1
    - Dst: std::array::size
      Src: /src/pdns/pdns/recursordist/logr.hh:80,1
    - Dst: std::array::at
      Src: /src/pdns/pdns/recursordist/logr.hh:83,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - arg
    argTypes:
    - Priority
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 76
    functionDepth: 0
    functionLinenumber: 76
    functionLinenumberEnd: 84
    functionName: Logr::Logger::toString
    functionSourceFile: /src/pdns/pdns/recursordist/logr.hh
    functionUses: 7
    functionsReached:
    - static_cast<unsigned int>
    - std::array::at
    - std::array::size
    linkageType: ''
    returnType: std::string
    signature: std::string toString(Priority arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Logr::Logger::withValues
      Src: /src/pdns/pdns/recursordist/logr.hh:96,1
    - Dst: auto::info
      Src: /src/pdns/pdns/recursordist/logr.hh:97,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - prio
    - ' msg'
    - ' key'
    - ' value'
    argTypes:
    - Priority
    - std::string
    - std::string
    - Loggable
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 94
    functionDepth: 0
    functionLinenumber: 94
    functionLinenumberEnd: 98
    functionName: Logr::Logger::info
    functionSourceFile: /src/pdns/pdns/recursordist/logr.hh
    functionUses: 0
    functionsReached:
    - auto::info
    - Logr::Logger::withValues
    linkageType: ''
    returnType: void
    signature: void info(Priority prio, const std::string& msg, const std::string&
      key, const Loggable& value, const Args&... args) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Logr::Logger::withValues
      Src: /src/pdns/pdns/recursordist/logr.hh:114,1
    - Dst: auto::error
      Src: /src/pdns/pdns/recursordist/logr.hh:115,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - prio
    - ' err'
    - ' msg'
    - ' key'
    - ' value'
    argTypes:
    - Priority
    - std::string
    - std::string
    - std::string
    - Loggable
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 112
    functionDepth: 0
    functionLinenumber: 112
    functionLinenumberEnd: 116
    functionName: Logr::Logger::error
    functionSourceFile: /src/pdns/pdns/recursordist/logr.hh
    functionUses: 0
    functionsReached:
    - auto::error
    - Logr::Logger::withValues
    linkageType: ''
    returnType: void
    signature: void error(Priority prio, const std::string& err, const std::string&
      msg, const std::string& key, const Loggable& value, const Args&... args) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Logr::Logger::withValues
      Src: /src/pdns/pdns/recursordist/logr.hh:121,1
    - Dst: auto::error
      Src: /src/pdns/pdns/recursordist/logr.hh:122,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - prio
    - err
    - ' msg'
    - ' key'
    - ' value'
    argTypes:
    - Priority
    - int
    - std::string
    - std::string
    - Loggable
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 119
    functionDepth: 0
    functionLinenumber: 119
    functionLinenumberEnd: 123
    functionName: Logr::Logger::error
    functionSourceFile: /src/pdns/pdns/recursordist/logr.hh
    functionUses: 0
    functionsReached:
    - auto::error
    - Logr::Logger::withValues
    linkageType: ''
    returnType: void
    signature: void error(Priority prio, int err, const std::string& msg, const std::string&
      key, const Loggable& value, const Args&... args) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Logr::Logger::mapArguments
      Src: /src/pdns/pdns/recursordist/logr.hh:135,1
    - Dst: Logr::Logger::withValues
      Src: /src/pdns/pdns/recursordist/logr.hh:136,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ' key'
    - ' value'
    argTypes:
    - std::string
    - Loggable
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 137
      start: 132
    functionDepth: 0
    functionLinenumber: 132
    functionLinenumberEnd: 137
    functionName: Logr::Logger::withValues
    functionSourceFile: /src/pdns/pdns/recursordist/logr.hh
    functionUses: 24
    functionsReached:
    - Logr::Logger::mapArguments
    - Logr::Logger::withValues
    linkageType: ''
    returnType: std::shared_ptr<Logger>
    signature: std::shared_ptr<Logger> withValues(const std::string& key, const Loggable&
      value, const Args&... args) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: emplace
      Src: /src/pdns/pdns/recursordist/logr.hh:154,1
    - Dst: to_string
      Src: /src/pdns/pdns/recursordist/logr.hh:154,1
    - Dst: Logr::Logger::mapArguments
      Src: /src/pdns/pdns/recursordist/logr.hh:155,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - ' map'
    - ' key'
    - ' value'
    argTypes:
    - std::map<std::string, std::string>
    - std::string
    - Loggable
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 156
      start: 152
    functionDepth: 0
    functionLinenumber: 152
    functionLinenumberEnd: 156
    functionName: Logr::Logger::mapArguments
    functionSourceFile: /src/pdns/pdns/recursordist/logr.hh
    functionUses: 12
    functionsReached:
    - Logr::Logger::mapArguments
    - emplace
    - to_string
    linkageType: ''
    returnType: void
    signature: void mapArguments(std::map<std::string, std::string>& map, const std::string&
      key, const Loggable& value, const Args&... args) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 158
      start: 158
    functionDepth: 0
    functionLinenumber: 158
    functionLinenumberEnd: 158
    functionName: Logr::Logger::mapArguments
    functionSourceFile: /src/pdns/pdns/recursordist/logr.hh
    functionUses: 12
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void mapArguments(std::map<std::string, std::string>& /* map */) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::max
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:14,1
    - Dst: getDenial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:15,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 5
    argNames:
    - ' validrrsets'
    - ' qname'
    - qtype
    - referralToUnsigned
    - wantsNoDataProof
    argTypes:
    - cspmap_t
    - DNSName
    - uint16_t
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 16
      start: 11
    functionDepth: 0
    functionLinenumber: 11
    functionLinenumberEnd: 16
    functionName: getDenial
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc8.cc
    functionUses: 6
    functionsReached:
    - pdns::max
    - getDenial
    linkageType: ''
    returnType: dState
    signature: dState getDenial(const cspmap_t& validrrsets, const DNSName& qname,
      uint16_t qtype, bool referralToUnsigned, bool wantsNoDataProof, const OptLog&
      log = std::nullopt, bool needWildcardProof = true, unsigned int wildcardLabelsCount
      = 0)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:20,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:23,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:23,1
    - Dst: addNSECRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:34,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:34,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:34,1
    - Dst: sortedRecords_t::insert
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:35,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:35,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:36,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:36,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:37,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:37,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:37,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:38,1
    - Dst: std::pair
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:44,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:44,1
    - Dst: sortedRecords_t::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:47,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:48,1
    - Dst: addNSECRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:49,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:49,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:49,1
    - Dst: sortedRecords_t::insert
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:50,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:50,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:51,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:51,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:52,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:52,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:52,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:53,1
    - Dst: std::pair
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:57,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:57,1
    - Dst: getDenial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:59,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:59,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:60,1
    - Dst: getDenial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:62,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:62,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:64,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 24
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 18
    functionDepth: 3
    functionLinenumber: 18
    functionLinenumberEnd: 65
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc8.cc
    functionUses: 0
    functionsReached:
    - getRR
    - vector::push_back
    - vector::at
    - sortedRecords_t::clear
    - getDenial
    - generateKeyMaterial
    - DNSName
    - initSR
    - BOOST_CHECK_EQUAL
    - sortedRecords_t::insert
    - addNSECRecordToLW
    - addRRSIG
    - std::pair
    - vector::clear
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_nsec_denial_nowrap)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:69,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:72,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:72,1
    - Dst: addNSECRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:83,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:83,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:83,1
    - Dst: sortedRecords_t::insert
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:84,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:84,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:85,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:85,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:86,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:86,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:86,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:87,1
    - Dst: std::pair
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:93,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:93,1
    - Dst: getDenial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:95,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:95,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:96,1
    - Dst: getDenial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:98,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:98,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:100,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 67
    functionDepth: 3
    functionLinenumber: 67
    functionLinenumberEnd: 101
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc8.cc
    functionUses: 0
    functionsReached:
    - getRR
    - vector::push_back
    - vector::at
    - getDenial
    - generateKeyMaterial
    - DNSName
    - initSR
    - BOOST_CHECK_EQUAL
    - sortedRecords_t::insert
    - addNSECRecordToLW
    - addRRSIG
    - std::pair
    - vector::clear
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_nsec_denial_wrap_case_1)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:105,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:108,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:108,1
    - Dst: addNSECRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:119,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:119,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:119,1
    - Dst: sortedRecords_t::insert
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:120,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:120,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:121,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:121,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:122,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:122,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:122,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:123,1
    - Dst: std::pair
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:129,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:129,1
    - Dst: getDenial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:131,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:131,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:132,1
    - Dst: getDenial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:134,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:134,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:136,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 137
      start: 103
    functionDepth: 3
    functionLinenumber: 103
    functionLinenumberEnd: 137
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc8.cc
    functionUses: 0
    functionsReached:
    - getRR
    - vector::push_back
    - vector::at
    - getDenial
    - generateKeyMaterial
    - DNSName
    - initSR
    - BOOST_CHECK_EQUAL
    - sortedRecords_t::insert
    - addNSECRecordToLW
    - addRRSIG
    - std::pair
    - vector::clear
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_nsec_denial_wrap_case_2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:141,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:144,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:144,1
    - Dst: addNSECRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:155,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:155,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:155,1
    - Dst: sortedRecords_t::insert
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:156,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:156,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:157,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:157,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:158,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:158,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:158,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:159,1
    - Dst: std::pair
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:165,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:165,1
    - Dst: getDenial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:167,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:167,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:168,1
    - Dst: getDenial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:170,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:170,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:172,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 173
      start: 139
    functionDepth: 3
    functionLinenumber: 139
    functionLinenumberEnd: 173
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc8.cc
    functionUses: 0
    functionsReached:
    - getRR
    - vector::push_back
    - vector::at
    - getDenial
    - generateKeyMaterial
    - DNSName
    - initSR
    - BOOST_CHECK_EQUAL
    - sortedRecords_t::insert
    - addNSECRecordToLW
    - addRRSIG
    - std::pair
    - vector::clear
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_nsec_denial_only_one_nsec)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:177,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:180,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:180,1
    - Dst: addNSECRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:191,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:191,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:191,1
    - Dst: sortedRecords_t::insert
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:192,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:192,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:193,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:193,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:194,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:194,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:194,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:195,1
    - Dst: std::pair
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:201,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:201,1
    - Dst: sortedRecords_t::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:204,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:205,1
    - Dst: addNSECRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:206,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:206,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:206,1
    - Dst: sortedRecords_t::insert
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:207,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:207,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:208,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:208,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:209,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:209,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:209,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:210,1
    - Dst: std::pair
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:214,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:214,1
    - Dst: getDenial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:216,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:216,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:217,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 22
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 218
      start: 175
    functionDepth: 3
    functionLinenumber: 175
    functionLinenumberEnd: 218
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc8.cc
    functionUses: 0
    functionsReached:
    - getRR
    - vector::push_back
    - vector::at
    - sortedRecords_t::clear
    - getDenial
    - generateKeyMaterial
    - DNSName
    - initSR
    - BOOST_CHECK_EQUAL
    - sortedRecords_t::insert
    - addNSECRecordToLW
    - addRRSIG
    - std::pair
    - vector::clear
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_nsec_root_nxd_denial)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:222,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:225,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:225,1
    - Dst: addNSECRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:239,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:239,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:239,1
    - Dst: sortedRecords_t::insert
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:240,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:240,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:241,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:241,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:242,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:242,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:242,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:243,1
    - Dst: std::pair
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:249,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:249,1
    - Dst: getDenial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:258,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:258,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:261,1
    - Dst: getDenial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:264,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:264,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:265,1
    - Dst: getDenial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:267,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:267,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:268,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 269
      start: 220
    functionDepth: 3
    functionLinenumber: 220
    functionLinenumberEnd: 269
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc8.cc
    functionUses: 0
    functionsReached:
    - getRR
    - vector::push_back
    - vector::at
    - getDenial
    - generateKeyMaterial
    - DNSName
    - initSR
    - BOOST_CHECK_EQUAL
    - sortedRecords_t::insert
    - addNSECRecordToLW
    - addRRSIG
    - std::pair
    - vector::clear
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_nsec_ancestor_nxqtype_denial)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:273,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:276,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:276,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:277,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:277,1
    - Dst: addNSECRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:284,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:284,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:284,1
    - Dst: sortedRecords_t::insert
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:285,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:285,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:286,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:286,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:287,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:287,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:287,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:288,1
    - Dst: std::pair
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:294,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:294,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:297,1
    - Dst: getDenial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:297,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:297,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:300,1
    - Dst: getDenial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:300,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:300,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 301
      start: 271
    functionDepth: 3
    functionLinenumber: 271
    functionLinenumberEnd: 301
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc8.cc
    functionUses: 0
    functionsReached:
    - getRR
    - vector::push_back
    - vector::at
    - getDenial
    - generateKeyMaterial
    - DNSName
    - initSR
    - BOOST_CHECK_EQUAL
    - sortedRecords_t::insert
    - addNSECRecordToLW
    - addRRSIG
    - std::pair
    - vector::clear
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_nsec_ds_denial_from_child)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:305,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:308,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:308,1
    - Dst: addNSECRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:327,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:327,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:327,1
    - Dst: sortedRecords_t::insert
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:328,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:328,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:329,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:329,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:330,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:330,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:330,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:331,1
    - Dst: std::pair
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:337,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:337,1
    - Dst: getDenial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:341,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:341,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:342,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 343
      start: 303
    functionDepth: 3
    functionLinenumber: 303
    functionLinenumberEnd: 343
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc8.cc
    functionUses: 0
    functionsReached:
    - getRR
    - vector::push_back
    - vector::at
    - getDenial
    - generateKeyMaterial
    - DNSName
    - initSR
    - BOOST_CHECK_EQUAL
    - sortedRecords_t::insert
    - addNSECRecordToLW
    - addRRSIG
    - std::pair
    - vector::clear
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_nsec_insecure_delegation_denial)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:347,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:350,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:350,1
    - Dst: addNSECRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:368,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:368,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:368,1
    - Dst: sortedRecords_t::insert
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:369,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:369,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:370,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:370,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:371,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:371,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:371,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:372,1
    - Dst: std::pair
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:378,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:378,1
    - Dst: getDenial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:381,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:381,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:382,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 383
      start: 345
    functionDepth: 3
    functionLinenumber: 345
    functionLinenumberEnd: 383
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc8.cc
    functionUses: 0
    functionsReached:
    - getRR
    - vector::push_back
    - vector::at
    - getDenial
    - generateKeyMaterial
    - DNSName
    - initSR
    - BOOST_CHECK_EQUAL
    - sortedRecords_t::insert
    - addNSECRecordToLW
    - addRRSIG
    - std::pair
    - vector::clear
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_nsec_insecure_delegation_denial_soa)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:387,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:390,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:390,1
    - Dst: addNSECRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:397,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:397,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:397,1
    - Dst: sortedRecords_t::insert
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:398,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:398,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:399,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:399,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:400,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:400,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:400,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:401,1
    - Dst: std::pair
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:407,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:407,1
    - Dst: getDenial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:410,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:410,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:411,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 412
      start: 385
    functionDepth: 3
    functionLinenumber: 385
    functionLinenumberEnd: 412
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc8.cc
    functionUses: 0
    functionsReached:
    - getRR
    - vector::push_back
    - vector::at
    - getDenial
    - generateKeyMaterial
    - DNSName
    - initSR
    - BOOST_CHECK_EQUAL
    - sortedRecords_t::insert
    - addNSECRecordToLW
    - addRRSIG
    - std::pair
    - vector::clear
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_nsec_nxqtype_cname)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:416,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:419,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:419,1
    - Dst: addNSEC3UnhashedRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:426,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:426,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:426,1
    - Dst: sortedRecords_t::insert
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:427,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:427,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:428,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:428,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:429,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:429,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:429,1
    - Dst: std::pair
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:435,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:435,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:435,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:436,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:441,1
    - Dst: getDenial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:441,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:441,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:443,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:445,1
    - Dst: getDenial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:445,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:445,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:446,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 447
      start: 414
    functionDepth: 3
    functionLinenumber: 414
    functionLinenumberEnd: 447
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc8.cc
    functionUses: 0
    functionsReached:
    - getRR
    - vector::push_back
    - vector::at
    - addNSEC3UnhashedRecordToLW
    - getDenial
    - generateKeyMaterial
    - DNSName
    - initSR
    - BOOST_CHECK_EQUAL
    - sortedRecords_t::insert
    - addRRSIG
    - std::pair
    - vector::clear
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_nsec3_nxqtype_ds)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:451,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:454,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:454,1
    - Dst: addNSEC3UnhashedRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:461,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:461,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:461,1
    - Dst: sortedRecords_t::insert
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:462,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:462,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:463,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:463,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:464,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:464,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:464,1
    - Dst: std::pair
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:470,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:470,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:470,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:471,1
    - Dst: getDenial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:474,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:474,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:475,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 476
      start: 449
    functionDepth: 3
    functionLinenumber: 449
    functionLinenumberEnd: 476
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc8.cc
    functionUses: 0
    functionsReached:
    - getRR
    - vector::push_back
    - vector::at
    - addNSEC3UnhashedRecordToLW
    - getDenial
    - generateKeyMaterial
    - DNSName
    - initSR
    - BOOST_CHECK_EQUAL
    - sortedRecords_t::insert
    - addRRSIG
    - std::pair
    - vector::clear
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_nsec3_nxqtype_cname)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:480,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:483,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:483,1
    - Dst: addNSECRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:490,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:490,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:490,1
    - Dst: sortedRecords_t::insert
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:491,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:491,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:492,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:492,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:493,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:493,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:493,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:494,1
    - Dst: std::pair
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:500,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:500,1
    - Dst: getDenial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:502,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:502,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:503,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 504
      start: 478
    functionDepth: 3
    functionLinenumber: 478
    functionLinenumberEnd: 504
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc8.cc
    functionUses: 0
    functionsReached:
    - getRR
    - vector::push_back
    - vector::at
    - getDenial
    - generateKeyMaterial
    - DNSName
    - initSR
    - BOOST_CHECK_EQUAL
    - sortedRecords_t::insert
    - addNSECRecordToLW
    - addRRSIG
    - std::pair
    - vector::clear
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_nsec_nxdomain_denial_missing_wildcard)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:508,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:511,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:511,1
    - Dst: addNSEC3NarrowRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:518,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:518,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:518,1
    - Dst: sortedRecords_t::insert
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:519,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:519,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:520,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:520,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:521,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:521,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:521,1
    - Dst: std::pair
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:527,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:527,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:527,1
    - Dst: sortedRecords_t::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:530,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:531,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:532,1
    - Dst: addNSEC3UnhashedRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:533,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:533,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:533,1
    - Dst: sortedRecords_t::insert
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:534,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:534,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:535,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:535,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:536,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:536,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:536,1
    - Dst: std::pair
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:540,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:540,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:540,1
    - Dst: getDenial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:542,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:542,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:543,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 21
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 544
      start: 506
    functionDepth: 3
    functionLinenumber: 506
    functionLinenumberEnd: 544
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc8.cc
    functionUses: 0
    functionsReached:
    - getRR
    - vector::push_back
    - vector::at
    - sortedRecords_t::clear
    - addNSEC3UnhashedRecordToLW
    - getDenial
    - generateKeyMaterial
    - addNSEC3NarrowRecordToLW
    - DNSName
    - initSR
    - sortedRecords_t::insert
    - addRRSIG
    - BOOST_CHECK_EQUAL
    - std::pair
    - vector::clear
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_nsec3_nxdomain_denial_missing_wildcard)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:548,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:551,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:551,1
    - Dst: addNSECRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:559,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:559,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:559,1
    - Dst: sortedRecords_t::insert
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:560,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:560,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:561,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:561,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:562,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:562,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:562,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:563,1
    - Dst: std::pair
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:569,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:569,1
    - Dst: getDenial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:573,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:573,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:573,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:574,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 575
      start: 546
    functionDepth: 3
    functionLinenumber: 546
    functionLinenumberEnd: 575
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc8.cc
    functionUses: 0
    functionsReached:
    - getRR
    - vector::push_back
    - vector::at
    - getDenial
    - QType
    - generateKeyMaterial
    - DNSName
    - initSR
    - BOOST_CHECK_EQUAL
    - sortedRecords_t::insert
    - addNSECRecordToLW
    - addRRSIG
    - std::pair
    - vector::clear
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_nsec_expanded_wildcard_proof)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:579,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:582,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:582,1
    - Dst: addNSECRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:590,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:590,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:590,1
    - Dst: sortedRecords_t::insert
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:591,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:591,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:592,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:592,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:593,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:593,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:593,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:594,1
    - Dst: std::pair
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:600,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:600,1
    - Dst: getDenial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:604,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:604,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:604,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:605,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 606
      start: 577
    functionDepth: 3
    functionLinenumber: 577
    functionLinenumberEnd: 606
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc8.cc
    functionUses: 0
    functionsReached:
    - getRR
    - vector::push_back
    - vector::at
    - getDenial
    - QType
    - generateKeyMaterial
    - DNSName
    - initSR
    - BOOST_CHECK_EQUAL
    - sortedRecords_t::insert
    - addNSECRecordToLW
    - addRRSIG
    - std::pair
    - vector::clear
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_nsec_expanded_wildcard_proof_missing_next_closer)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:610,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:613,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:613,1
    - Dst: addNSECRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:621,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:621,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:621,1
    - Dst: sortedRecords_t::insert
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:622,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:622,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:623,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:623,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:624,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:624,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:624,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:625,1
    - Dst: std::pair
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:631,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:631,1
    - Dst: sortedRecords_t::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:634,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:635,1
    - Dst: addNSECRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:636,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:636,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:636,1
    - Dst: sortedRecords_t::insert
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:637,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:637,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:638,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:638,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:639,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:639,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:639,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:640,1
    - Dst: std::pair
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:644,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:644,1
    - Dst: getDenial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:647,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:647,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:648,1
    - Dst: getDenial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:650,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:650,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:651,1
    - Dst: sortedRecords_t::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:654,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:655,1
    - Dst: addNSECRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:656,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:656,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:656,1
    - Dst: sortedRecords_t::insert
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:657,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:657,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:658,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:658,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:659,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:659,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:659,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:660,1
    - Dst: std::pair
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:664,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:664,1
    - Dst: getDenial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:667,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:667,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:668,1
    - Dst: getDenial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:670,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:670,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:671,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 38
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 672
      start: 608
    functionDepth: 3
    functionLinenumber: 608
    functionLinenumberEnd: 672
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc8.cc
    functionUses: 0
    functionsReached:
    - getRR
    - vector::push_back
    - vector::at
    - sortedRecords_t::clear
    - getDenial
    - generateKeyMaterial
    - DNSName
    - initSR
    - BOOST_CHECK_EQUAL
    - sortedRecords_t::insert
    - addNSECRecordToLW
    - addRRSIG
    - std::pair
    - vector::clear
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_nsec_wildcard_with_cname)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:676,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:679,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:679,1
    - Dst: addNSEC3NarrowRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:687,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:687,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:687,1
    - Dst: sortedRecords_t::insert
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:688,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:688,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:689,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:689,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:690,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:690,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:690,1
    - Dst: std::pair
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:696,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:696,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:696,1
    - Dst: sortedRecords_t::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:699,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:700,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:701,1
    - Dst: addNSEC3UnhashedRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:702,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:702,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:702,1
    - Dst: sortedRecords_t::insert
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:703,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:703,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:704,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:704,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:705,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:705,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:705,1
    - Dst: std::pair
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:709,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:709,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:709,1
    - Dst: sortedRecords_t::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:712,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:713,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:714,1
    - Dst: addNSEC3UnhashedRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:715,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:715,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:715,1
    - Dst: sortedRecords_t::insert
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:716,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:716,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:717,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:717,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:718,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:718,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:718,1
    - Dst: std::pair
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:722,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:722,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:722,1
    - Dst: getDenial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:725,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:725,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:726,1
    - Dst: getDenial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:728,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:728,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:729,1
    - Dst: sortedRecords_t::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:732,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:733,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:734,1
    - Dst: addNSEC3UnhashedRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:735,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:735,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:735,1
    - Dst: sortedRecords_t::insert
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:736,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:736,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:737,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:737,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:738,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:738,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:738,1
    - Dst: std::pair
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:742,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:742,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:742,1
    - Dst: getDenial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:745,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:745,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:746,1
    - Dst: getDenial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:748,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:748,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:749,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 47
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 750
      start: 674
    functionDepth: 3
    functionLinenumber: 674
    functionLinenumberEnd: 750
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc8.cc
    functionUses: 0
    functionsReached:
    - getRR
    - vector::push_back
    - vector::at
    - sortedRecords_t::clear
    - addNSEC3UnhashedRecordToLW
    - getDenial
    - generateKeyMaterial
    - addNSEC3NarrowRecordToLW
    - DNSName
    - initSR
    - sortedRecords_t::insert
    - addRRSIG
    - BOOST_CHECK_EQUAL
    - std::pair
    - vector::clear
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_nsec3_wildcard_with_cname)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:754,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:757,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:757,1
    - Dst: addNSECRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:764,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:764,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:764,1
    - Dst: sortedRecords_t::insert
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:765,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:765,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:766,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:766,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:767,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:767,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:767,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:768,1
    - Dst: std::pair
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:774,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:774,1
    - Dst: getDenial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:778,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:778,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:779,1
    - Dst: getDenial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:783,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:783,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:784,1
    - Dst: getDenial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:787,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:787,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:788,1
    - Dst: sortedRecords_t::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:791,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:792,1
    - Dst: addNSECRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:793,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:793,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:793,1
    - Dst: sortedRecords_t::insert
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:794,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:794,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:795,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:795,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:796,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:796,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:796,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:797,1
    - Dst: std::pair
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:800,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:800,1
    - Dst: getDenial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:802,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:802,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:803,1
    - Dst: getDenial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:807,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:807,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:808,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 30
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 809
      start: 752
    functionDepth: 3
    functionLinenumber: 752
    functionLinenumberEnd: 809
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc8.cc
    functionUses: 0
    functionsReached:
    - getRR
    - vector::push_back
    - vector::at
    - sortedRecords_t::clear
    - getDenial
    - generateKeyMaterial
    - DNSName
    - initSR
    - BOOST_CHECK_EQUAL
    - sortedRecords_t::insert
    - addNSECRecordToLW
    - addRRSIG
    - std::pair
    - vector::clear
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_nsec_ent_denial)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:813,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:816,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:816,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:817,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:817,1
    - Dst: addNSECRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:824,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:824,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:824,1
    - Dst: sortedRecords_t::insert
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:825,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:825,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:826,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:826,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:827,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:827,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:827,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:828,1
    - Dst: addNSECRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:829,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:829,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:829,1
    - Dst: sortedRecords_t::insert
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:830,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:830,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:831,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:831,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:832,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:832,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:832,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:833,1
    - Dst: std::pair
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:839,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:839,1
    - Dst: getDenial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:844,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:844,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:845,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 846
      start: 811
    functionDepth: 3
    functionLinenumber: 811
    functionLinenumberEnd: 846
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc8.cc
    functionUses: 0
    functionsReached:
    - getRR
    - vector::push_back
    - vector::at
    - getDenial
    - generateKeyMaterial
    - DNSName
    - initSR
    - BOOST_CHECK_EQUAL
    - sortedRecords_t::insert
    - addNSECRecordToLW
    - addRRSIG
    - std::pair
    - vector::clear
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_nsec_denial_invalid_signer)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:850,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:853,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:853,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:854,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:854,1
    - Dst: addNSEC3NarrowRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:862,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:862,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:862,1
    - Dst: sortedRecords_t::insert
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:863,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:863,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:865,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:865,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:866,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:866,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:866,1
    - Dst: std::pair
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:872,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:872,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:872,1
    - Dst: sortedRecords_t::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:875,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:876,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:877,1
    - Dst: addNSEC3UnhashedRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:878,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:878,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:878,1
    - Dst: sortedRecords_t::insert
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:879,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:879,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:880,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:880,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:881,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:881,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:881,1
    - Dst: std::pair
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:885,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:885,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:885,1
    - Dst: sortedRecords_t::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:888,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:889,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:890,1
    - Dst: addNSEC3UnhashedRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:891,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:891,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:891,1
    - Dst: sortedRecords_t::insert
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:892,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:892,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:893,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:893,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:894,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:894,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:894,1
    - Dst: std::pair
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:898,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:898,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:898,1
    - Dst: getDenial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:900,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:900,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:901,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 32
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 902
      start: 848
    functionDepth: 3
    functionLinenumber: 848
    functionLinenumberEnd: 902
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc8.cc
    functionUses: 0
    functionsReached:
    - getRR
    - vector::push_back
    - vector::at
    - sortedRecords_t::clear
    - addNSEC3UnhashedRecordToLW
    - getDenial
    - generateKeyMaterial
    - addNSEC3NarrowRecordToLW
    - DNSName
    - initSR
    - sortedRecords_t::insert
    - addRRSIG
    - BOOST_CHECK_EQUAL
    - std::pair
    - vector::clear
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_nsec3_denial_invalid_signer)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:906,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:909,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:909,1
    - Dst: addNSEC3UnhashedRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:922,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:922,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:922,1
    - Dst: sortedRecords_t::insert
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:923,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:923,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:924,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:924,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:925,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:925,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:925,1
    - Dst: std::pair
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:931,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:931,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:931,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:932,1
    - Dst: getDenial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:941,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:941,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:944,1
    - Dst: getDenial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:946,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:946,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:947,1
    - Dst: sortedRecords_t::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:951,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:952,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:953,1
    - Dst: addNSEC3NarrowRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:954,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:954,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:954,1
    - Dst: sortedRecords_t::insert
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:955,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:955,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:956,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:956,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:957,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:957,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:957,1
    - Dst: std::pair
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:961,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:961,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:961,1
    - Dst: sortedRecords_t::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:964,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:965,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:966,1
    - Dst: addNSEC3NarrowRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:967,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:967,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:967,1
    - Dst: sortedRecords_t::insert
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:968,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:968,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:969,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:969,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:970,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:970,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:970,1
    - Dst: std::pair
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:974,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:974,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:974,1
    - Dst: getDenial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:976,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:976,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:977,1
    - Dst: getDenial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:980,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:980,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:981,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 38
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 982
      start: 904
    functionDepth: 3
    functionLinenumber: 904
    functionLinenumberEnd: 982
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc8.cc
    functionUses: 0
    functionsReached:
    - getRR
    - vector::push_back
    - vector::at
    - addNSEC3UnhashedRecordToLW
    - sortedRecords_t::clear
    - getDenial
    - generateKeyMaterial
    - DNSName
    - initSR
    - BOOST_CHECK_EQUAL
    - sortedRecords_t::insert
    - addRRSIG
    - addNSEC3NarrowRecordToLW
    - std::pair
    - vector::clear
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_nsec3_ancestor_nxqtype_denial)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:986,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:989,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:989,1
    - Dst: addNSEC3UnhashedRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:997,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:997,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:997,1
    - Dst: sortedRecords_t::insert
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:998,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:998,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:999,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:999,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1000,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1000,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1000,1
    - Dst: std::pair
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1006,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1006,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1006,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1007,1
    - Dst: getDenial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1009,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1009,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1011,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1012
      start: 984
    functionDepth: 3
    functionLinenumber: 984
    functionLinenumberEnd: 1012
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc8.cc
    functionUses: 0
    functionsReached:
    - getRR
    - vector::push_back
    - vector::at
    - addNSEC3UnhashedRecordToLW
    - getDenial
    - generateKeyMaterial
    - DNSName
    - initSR
    - BOOST_CHECK_EQUAL
    - sortedRecords_t::insert
    - addRRSIG
    - std::pair
    - vector::clear
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_nsec3_denial_too_many_iterations)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1016,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1019,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1019,1
    - Dst: sortedRecords_t::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1032,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1033,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1034,1
    - Dst: addNSEC3UnhashedRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1035,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1035,1
    - Dst: sortedRecords_t::insert
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1036,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1036,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1037,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1038,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1038,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1038,1
    - Dst: std::pair
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1042,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1042,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1042,1
    - Dst: sortedRecords_t::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1045,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1046,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1047,1
    - Dst: addNSEC3NarrowRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1048,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1048,1
    - Dst: sortedRecords_t::insert
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1049,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1049,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1050,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1051,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1051,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1051,1
    - Dst: std::pair
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1055,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1055,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1055,1
    - Dst: sortedRecords_t::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1058,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1059,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1060,1
    - Dst: addNSEC3NarrowRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1061,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1061,1
    - Dst: sortedRecords_t::insert
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1062,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1062,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1063,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1064,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1064,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1064,1
    - Dst: std::pair
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1068,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1068,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1068,1
    - Dst: getDenial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1071,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1073,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 36
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1074
      start: 1014
    functionDepth: 3
    functionLinenumber: 1014
    functionLinenumberEnd: 1074
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc8.cc
    functionUses: 0
    functionsReached:
    - sortedRecords_t::clear
    - vector::push_back
    - vector::at
    - addNSEC3UnhashedRecordToLW
    - getRR
    - getDenial
    - generateKeyMaterial
    - DNSName
    - initSR
    - addNSEC3NarrowRecordToLW
    - sortedRecords_t::insert
    - addRRSIG
    - BOOST_CHECK_EQUAL
    - std::pair
    - vector::clear
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_nsec3_many_labels_between_name_and_closest_encloser)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1078,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1081,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1081,1
    - Dst: addNSEC3UnhashedRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1100,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1100,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1100,1
    - Dst: sortedRecords_t::insert
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1101,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1101,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1102,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1102,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1103,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1103,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1103,1
    - Dst: std::pair
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1109,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1109,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1109,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1110,1
    - Dst: getDenial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1114,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1114,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1115,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1116
      start: 1076
    functionDepth: 3
    functionLinenumber: 1076
    functionLinenumberEnd: 1116
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc8.cc
    functionUses: 0
    functionsReached:
    - getRR
    - vector::push_back
    - vector::at
    - addNSEC3UnhashedRecordToLW
    - getDenial
    - generateKeyMaterial
    - DNSName
    - initSR
    - BOOST_CHECK_EQUAL
    - sortedRecords_t::insert
    - addRRSIG
    - std::pair
    - vector::clear
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_nsec3_insecure_delegation_denial)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1120,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1123,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1123,1
    - Dst: addNSEC3UnhashedRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1141,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1141,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1141,1
    - Dst: sortedRecords_t::insert
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1142,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1142,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1143,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1143,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1144,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1144,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1144,1
    - Dst: std::pair
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1150,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1150,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1150,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1151,1
    - Dst: getDenial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1154,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1154,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1155,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1156
      start: 1118
    functionDepth: 3
    functionLinenumber: 1118
    functionLinenumberEnd: 1156
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc8.cc
    functionUses: 0
    functionsReached:
    - getRR
    - vector::push_back
    - vector::at
    - addNSEC3UnhashedRecordToLW
    - getDenial
    - generateKeyMaterial
    - DNSName
    - initSR
    - BOOST_CHECK_EQUAL
    - sortedRecords_t::insert
    - addRRSIG
    - std::pair
    - vector::clear
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_nsec3_insecure_delegation_denial_soa)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1160,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1163,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1163,1
    - Dst: addNSEC3UnhashedRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1182,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1182,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1182,1
    - Dst: sortedRecords_t::insert
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1183,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1183,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1184,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1184,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1185,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1185,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1185,1
    - Dst: std::pair
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1191,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1191,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1191,1
    - Dst: sortedRecords_t::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1195,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1196,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1197,1
    - Dst: addNSEC3NarrowRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1198,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1198,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1198,1
    - Dst: sortedRecords_t::insert
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1199,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1199,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1200,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1200,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1201,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1201,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1201,1
    - Dst: std::pair
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1205,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1205,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1205,1
    - Dst: getDenial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1208,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1208,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1209,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 21
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1210
      start: 1158
    functionDepth: 3
    functionLinenumber: 1158
    functionLinenumberEnd: 1210
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc8.cc
    functionUses: 0
    functionsReached:
    - getRR
    - vector::push_back
    - vector::at
    - addNSEC3UnhashedRecordToLW
    - sortedRecords_t::clear
    - getDenial
    - generateKeyMaterial
    - DNSName
    - initSR
    - addNSEC3NarrowRecordToLW
    - sortedRecords_t::insert
    - addRRSIG
    - BOOST_CHECK_EQUAL
    - std::pair
    - vector::clear
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_nsec3_ent_opt_out)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1215,1
    - Dst: setDNSSECValidation
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1217,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1219,1
    - Dst: getCopy
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1223,1
    - Dst: auto::dsAnchors::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1224,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1225,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1226,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1226,1
    - Dst: setState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1227,1
    - Dst: std::unique_ptr::getNow
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1230,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1232,1
    - Dst: DNSName::chopOff
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1236,1
    - Dst: genericDSAndDNSKEYHandler
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1239,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1242,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1243,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1244,1
    - Dst: addNSECRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1245,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1245,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1246,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1254,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1254,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1255,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1256,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1256,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1257,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1257,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1258,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1262,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1262,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1263,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1263,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1263,1
    - Dst: std::unique_ptr::getNow
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1263,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1264,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1265,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1266,1
    - Dst: NegCache::NegCacheEntry::authoritySOA::records::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1266,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1267,1
    - Dst: NegCache::NegCacheEntry::authoritySOA::signatures::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1267,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1268,1
    - Dst: NegCache::NegCacheEntry::DNSSECRecords::records::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1268,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1269,1
    - Dst: NegCache::NegCacheEntry::DNSSECRecords::signatures::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1269,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1272,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1273,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1273,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1274,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1275,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1275,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1276,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1276,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1277,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 41
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1278
      start: 1212
    functionDepth: 4
    functionLinenumber: 1212
    functionLinenumberEnd: 1278
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc8.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - genericDSAndDNSKEYHandler
    - primeHints
    - NegCache::NegCacheEntry::authoritySOA::records::size
    - setDNSSECValidation
    - std::unique_ptr::beginResolve
    - setState
    - DNSName::chopOff
    - QType
    - generateKeyMaterial
    - addRecordToLW
    - size
    - auto::dsAnchors::clear
    - addRRSIG
    - addNSECRecordToLW
    - vector::clear
    - BOOST_REQUIRE_EQUAL
    - NegCache::NegCacheEntry::authoritySOA::signatures::size
    - std::unique_ptr::setAsyncCallback
    - DNSName
    - initSR
    - std::unique_ptr::getNow
    - std::unique_ptr::getValidationState
    - get
    - NegCache::NegCacheEntry::DNSSECRecords::signatures::size
    - BOOST_CHECK_EQUAL
    - getCopy
    - NegCache::NegCacheEntry::DNSSECRecords::records::size
    - vector::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_dnssec_rrsig_negcache_validity)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1283,1
    - Dst: setDNSSECValidation
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1285,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1287,1
    - Dst: getCopy
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1291,1
    - Dst: auto::dsAnchors::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1292,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1293,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1294,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1294,1
    - Dst: setState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1295,1
    - Dst: std::unique_ptr::getNow
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1298,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1300,1
    - Dst: DNSName::chopOff
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1304,1
    - Dst: genericDSAndDNSKEYHandler
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1307,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1310,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1311,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1312,1
    - Dst: addNSECRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1313,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1313,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1325,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1325,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1326,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1327,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1327,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1328,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1328,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1329,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1333,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1333,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1334,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1334,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1334,1
    - Dst: std::unique_ptr::getNow
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1334,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1335,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1336,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1337,1
    - Dst: NegCache::NegCacheEntry::authoritySOA::records::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1337,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1338,1
    - Dst: NegCache::NegCacheEntry::authoritySOA::signatures::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1338,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1339,1
    - Dst: NegCache::NegCacheEntry::DNSSECRecords::records::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1339,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1340,1
    - Dst: NegCache::NegCacheEntry::DNSSECRecords::signatures::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1340,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1343,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1344,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1344,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1345,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1346,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1346,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1347,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1347,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1348,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 42
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1349
      start: 1280
    functionDepth: 4
    functionLinenumber: 1280
    functionLinenumberEnd: 1349
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc8.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - genericDSAndDNSKEYHandler
    - primeHints
    - NegCache::NegCacheEntry::authoritySOA::records::size
    - setDNSSECValidation
    - std::unique_ptr::beginResolve
    - setState
    - DNSName::chopOff
    - QType
    - generateKeyMaterial
    - addRecordToLW
    - size
    - auto::dsAnchors::clear
    - addRRSIG
    - addNSECRecordToLW
    - vector::clear
    - BOOST_REQUIRE_EQUAL
    - NegCache::NegCacheEntry::authoritySOA::signatures::size
    - std::unique_ptr::setAsyncCallback
    - DNSName
    - initSR
    - std::unique_ptr::getNow
    - std::unique_ptr::getValidationState
    - get
    - NegCache::NegCacheEntry::DNSSECRecords::signatures::size
    - BOOST_CHECK_EQUAL
    - getCopy
    - NegCache::NegCacheEntry::DNSSECRecords::records::size
    - vector::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_dnssec_rrsig_negcache_bogus_validity)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1354,1
    - Dst: setDNSSECValidation
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1356,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1358,1
    - Dst: getCopy
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1363,1
    - Dst: auto::dsAnchors::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1364,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1365,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1366,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1366,1
    - Dst: setState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1367,1
    - Dst: std::unique_ptr::getNow
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1370,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1372,1
    - Dst: DNSName::chopOff
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1376,1
    - Dst: genericDSAndDNSKEYHandler
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1379,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1382,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1383,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1383,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1384,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1392,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1392,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1393,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1394,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1394,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1395,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1395,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1396,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1402,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1402,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1402,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1403,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1403,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1404,1
    - Dst: MemRecursorCache::SigRecs::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1404,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1405,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1408,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1409,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1409,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1410,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1411,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1411,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1412,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1412,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1413,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 35
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1414
      start: 1351
    functionDepth: 4
    functionLinenumber: 1351
    functionLinenumberEnd: 1414
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc8.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - genericDSAndDNSKEYHandler
    - primeHints
    - setDNSSECValidation
    - std::unique_ptr::beginResolve
    - setState
    - DNSName::chopOff
    - QType
    - generateKeyMaterial
    - addRecordToLW
    - auto::dsAnchors::clear
    - addRRSIG
    - vector::clear
    - BOOST_REQUIRE_EQUAL
    - std::unique_ptr::setAsyncCallback
    - DNSName
    - initSR
    - std::unique_ptr::getNow
    - std::unique_ptr::getValidationState
    - get
    - MemRecursorCache::SigRecs::size
    - BOOST_CHECK_EQUAL
    - getCopy
    - ComboAddress::toString
    - vector::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_dnssec_rrsig_cache_validity)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1425,1
    - Dst: setDNSSECValidation
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1427,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1429,1
    - Dst: getCopy
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1433,1
    - Dst: auto::dsAnchors::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1434,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1435,1
    - Dst: setState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1436,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1440,1
    - Dst: genericDSAndDNSKEYHandler
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1444,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1448,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1449,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1450,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1450,1
    - Dst: std::unique_ptr::setDNSSECValidationRequested
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1460,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1461,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1461,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1462,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1463,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1463,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1464,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1464,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1466,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1468,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1470,1
    - Dst: std::unique_ptr::setDNSSECValidationRequested
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1472,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1473,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1473,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1474,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1475,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1475,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1476,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1476,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1478,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1480,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 37
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1481
      start: 1416
    functionDepth: 4
    functionLinenumber: 1416
    functionLinenumberEnd: 1481
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc8.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - genericDSAndDNSKEYHandler
    - primeHints
    - setDNSSECValidation
    - std::unique_ptr::beginResolve
    - setState
    - QType
    - generateKeyMaterial
    - addRecordToLW
    - auto::dsAnchors::clear
    - addRRSIG
    - vector::clear
    - BOOST_REQUIRE_EQUAL
    - std::unique_ptr::setAsyncCallback
    - DNSName
    - initSR
    - std::unique_ptr::getValidationState
    - std::unique_ptr::setDNSSECValidationRequested
    - BOOST_CHECK
    - BOOST_CHECK_EQUAL
    - getCopy
    - vector::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_dnssec_validation_from_cache_secure)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1492,1
    - Dst: setDNSSECValidation
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1494,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1496,1
    - Dst: getCopy
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1500,1
    - Dst: auto::dsAnchors::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1501,1
    - Dst: setState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1502,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1506,1
    - Dst: genericDSAndDNSKEYHandler
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1510,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1514,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1515,1
    - Dst: std::unique_ptr::setDNSSECValidationRequested
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1525,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1526,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1526,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1527,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1528,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1528,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1529,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1529,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1531,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1533,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1535,1
    - Dst: std::unique_ptr::setDNSSECValidationRequested
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1537,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1538,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1538,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1539,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1540,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1540,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1541,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1541,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1543,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1545,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 35
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1546
      start: 1483
    functionDepth: 4
    functionLinenumber: 1483
    functionLinenumberEnd: 1546
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc8.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - genericDSAndDNSKEYHandler
    - primeHints
    - setDNSSECValidation
    - std::unique_ptr::beginResolve
    - setState
    - QType
    - addRecordToLW
    - auto::dsAnchors::clear
    - vector::size
    - vector::clear
    - BOOST_REQUIRE_EQUAL
    - std::unique_ptr::setAsyncCallback
    - initSR
    - std::unique_ptr::getValidationState
    - std::unique_ptr::setDNSSECValidationRequested
    - BOOST_CHECK_EQUAL
    - getCopy
    - BOOST_CHECK
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_dnssec_validation_from_cache_insecure)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1557,1
    - Dst: setDNSSECValidation
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1559,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1561,1
    - Dst: getCopy
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1565,1
    - Dst: auto::dsAnchors::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1566,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1567,1
    - Dst: setState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1568,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1572,1
    - Dst: genericDSAndDNSKEYHandler
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1576,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1580,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1581,1
    - Dst: std::unique_ptr::setDNSSECValidationRequested
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1594,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1595,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1595,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1596,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1597,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1597,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1598,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1598,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1600,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1601,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1603,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1605,1
    - Dst: std::unique_ptr::setDNSSECValidationRequested
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1607,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1608,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1608,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1609,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1610,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1610,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1613,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1613,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1615,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1616,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1618,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1620,1
    - Dst: std::unique_ptr::setDNSSECValidationRequested
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1623,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1624,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1624,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1625,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1626,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1626,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1627,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1627,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1629,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1630,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1632,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 49
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1633
      start: 1548
    functionDepth: 4
    functionLinenumber: 1548
    functionLinenumberEnd: 1633
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc8.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - genericDSAndDNSKEYHandler
    - primeHints
    - setDNSSECValidation
    - std::unique_ptr::beginResolve
    - setState
    - QType
    - generateKeyMaterial
    - addRecordToLW
    - auto::dsAnchors::clear
    - vector::size
    - vector::clear
    - BOOST_REQUIRE_EQUAL
    - std::unique_ptr::setAsyncCallback
    - initSR
    - std::unique_ptr::getValidationState
    - std::unique_ptr::setDNSSECValidationRequested
    - BOOST_CHECK_EQUAL
    - getCopy
    - BOOST_CHECK
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_dnssec_validation_from_cache_bogus)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1645,1
    - Dst: setDNSSECValidation
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1647,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1649,1
    - Dst: getCopy
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1653,1
    - Dst: auto::dsAnchors::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1654,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1655,1
    - Dst: setState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1656,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1660,1
    - Dst: genericDSAndDNSKEYHandler
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1664,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1668,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1669,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1670,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1670,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1674,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1675,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1676,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1676,1
    - Dst: std::unique_ptr::setDNSSECValidationRequested
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1686,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1687,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1687,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1688,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1689,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1689,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1690,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1690,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1692,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1694,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1696,1
    - Dst: std::unique_ptr::setDNSSECValidationRequested
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1698,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1699,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1699,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1700,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1701,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1701,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1702,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1702,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1704,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1706,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1708,1
    - Dst: std::unique_ptr::setDNSSECValidationRequested
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1710,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1712,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1712,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1712,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1719,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1721,1
    - Dst: std::unique_ptr::setDNSSECValidationRequested
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1724,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1725,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1725,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1726,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1727,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1727,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1728,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1728,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1730,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1732,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1734,1
    - Dst: std::unique_ptr::setDNSSECValidationRequested
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1736,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1737,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1737,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1738,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1739,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1739,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1740,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1740,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1742,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc8.cc:1744,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 67
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1745
      start: 1635
    functionDepth: 4
    functionLinenumber: 1635
    functionLinenumberEnd: 1745
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc8.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - genericDSAndDNSKEYHandler
    - primeHints
    - setDNSSECValidation
    - BOOST_CHECK_THROW
    - std::unique_ptr::beginResolve
    - setState
    - QType
    - generateKeyMaterial
    - addRecordToLW
    - auto::dsAnchors::clear
    - addRRSIG
    - vector::clear
    - BOOST_REQUIRE_EQUAL
    - std::unique_ptr::setAsyncCallback
    - DNSName
    - initSR
    - std::unique_ptr::getValidationState
    - std::unique_ptr::setDNSSECValidationRequested
    - BOOST_CHECK
    - BOOST_CHECK_EQUAL
    - getCopy
    - vector::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_dnssec_validation_from_cache_secure_any)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: d_name::empty
      Src: /src/pdns/pdns/recursordist/rec-nsspeeds.cc:60,1
    - Dst: add_bytes
      Src: /src/pdns/pdns/recursordist/rec-nsspeeds.cc:61,1
    - Dst: d_name::toString
      Src: /src/pdns/pdns/recursordist/rec-nsspeeds.cc:61,1
    - Dst: add_int64
      Src: /src/pdns/pdns/recursordist/rec-nsspeeds.cc:63,1
    - Dst: add_int64
      Src: /src/pdns/pdns/recursordist/rec-nsspeeds.cc:64,1
    - Dst: encodeComboAddress
      Src: /src/pdns/pdns/recursordist/rec-nsspeeds.cc:67,1
    - Dst: protozero::pbf_builder::add_float
      Src: /src/pdns/pdns/recursordist/rec-nsspeeds.cc:68,1
    - Dst: protozero::pbf_builder::add_int32
      Src: /src/pdns/pdns/recursordist/rec-nsspeeds.cc:69,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - ' message'
    - ' entry'
    argTypes:
    - T
    - U
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 58
    functionDepth: 1
    functionLinenumber: 58
    functionLinenumberEnd: 71
    functionName: nsspeeds_t::getPBEntry
    functionSourceFile: /src/pdns/pdns/recursordist/rec-nsspeeds.cc
    functionUses: 0
    functionsReached:
    - encodeComboAddress
    - d_name::toString
    - protozero::pbf_builder::add_float
    - d_name::empty
    - protozero::pbf_builder::add_int32
    - add_bytes
    - add_int64
    linkageType: ''
    returnType: void
    signature: void nsspeeds_t::getPBEntry(T& message, U& entry)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: withName
      Src: /src/pdns/pdns/recursordist/rec-nsspeeds.cc:75,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-nsspeeds.cc:75,1
    - Dst: auto::info
      Src: /src/pdns/pdns/recursordist/rec-nsspeeds.cc:76,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/rec-nsspeeds.cc:79,1
    - Dst: protozero::pbf_builder::add_string
      Src: /src/pdns/pdns/recursordist/rec-nsspeeds.cc:82,1
    - Dst: getPDNSVersion
      Src: /src/pdns/pdns/recursordist/rec-nsspeeds.cc:82,1
    - Dst: protozero::pbf_builder::add_string
      Src: /src/pdns/pdns/recursordist/rec-nsspeeds.cc:83,1
    - Dst: protozero::pbf_builder::add_uint64
      Src: /src/pdns/pdns/recursordist/rec-nsspeeds.cc:84,1
    - Dst: protozero::pbf_builder::add_int64
      Src: /src/pdns/pdns/recursordist/rec-nsspeeds.cc:85,1
    - Dst: time
      Src: /src/pdns/pdns/recursordist/rec-nsspeeds.cc:85,1
    - Dst: protozero::pbf_builder::add_string
      Src: /src/pdns/pdns/recursordist/rec-nsspeeds.cc:86,1
    - Dst: reserve
      Src: /src/pdns/pdns/recursordist/rec-nsspeeds.cc:89,1
    - Dst: nsspeeds_t::getPBEntry
      Src: /src/pdns/pdns/recursordist/rec-nsspeeds.cc:93,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/rec-nsspeeds.cc:94,1
    - Dst: protozero::pbf_builder::rollback
      Src: /src/pdns/pdns/recursordist/rec-nsspeeds.cc:95,1
    - Dst: auto::info
      Src: /src/pdns/pdns/recursordist/rec-nsspeeds.cc:96,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-nsspeeds.cc:96,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/rec-nsspeeds.cc:96,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-nsspeeds.cc:96,1
    - Dst: auto::info
      Src: /src/pdns/pdns/recursordist/rec-nsspeeds.cc:101,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-nsspeeds.cc:101,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/rec-nsspeeds.cc:101,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-nsspeeds.cc:101,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 3
    argNames:
    - ' serverID'
    - maxSize
    - ' ret'
    argTypes:
    - string
    - size_t
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 73
    functionDepth: 2
    functionLinenumber: 73
    functionLinenumberEnd: 103
    functionName: nsspeeds_t::getPB
    functionSourceFile: /src/pdns/pdns/recursordist/rec-nsspeeds.cc
    functionUses: 0
    functionsReached:
    - Logging::Loggable
    - withName
    - time
    - protozero::pbf_builder::rollback
    - protozero::pbf_builder::add_int64
    - protozero::pbf_builder::add_uint64
    - size
    - reserve
    - protozero::pbf_builder::add_string
    - getPDNSVersion
    - nsspeeds_t::getPBEntry
    - auto::info
    linkageType: ''
    returnType: size_t
    signature: size_t nsspeeds_t::getPB(const string& serverID, size_t maxSize, std::string&
      ret) const
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: next
      Src: /src/pdns/pdns/recursordist/rec-nsspeeds.cc:109,1
    - Dst: tag
      Src: /src/pdns/pdns/recursordist/rec-nsspeeds.cc:110,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/rec-nsspeeds.cc:112,1
    - Dst: get_bytes
      Src: /src/pdns/pdns/recursordist/rec-nsspeeds.cc:112,1
    - Dst: get_int64
      Src: /src/pdns/pdns/recursordist/rec-nsspeeds.cc:115,1
    - Dst: get_int64
      Src: /src/pdns/pdns/recursordist/rec-nsspeeds.cc:118,1
    - Dst: get_message
      Src: /src/pdns/pdns/recursordist/rec-nsspeeds.cc:121,1
    - Dst: protozero::pbf_message::next
      Src: /src/pdns/pdns/recursordist/rec-nsspeeds.cc:125,1
    - Dst: protozero::pbf_message::tag
      Src: /src/pdns/pdns/recursordist/rec-nsspeeds.cc:126,1
    - Dst: decodeComboAddress
      Src: /src/pdns/pdns/recursordist/rec-nsspeeds.cc:128,1
    - Dst: protozero::pbf_message::get_float
      Src: /src/pdns/pdns/recursordist/rec-nsspeeds.cc:131,1
    - Dst: protozero::pbf_message::get_int32
      Src: /src/pdns/pdns/recursordist/rec-nsspeeds.cc:134,1
    - Dst: DecayingEwmaCollection::insert
      Src: /src/pdns/pdns/recursordist/rec-nsspeeds.cc:138,1
    - Dst: DecayingEwmaCollection::stale
      Src: /src/pdns/pdns/recursordist/rec-nsspeeds.cc:143,1
    - Dst: insert
      Src: /src/pdns/pdns/recursordist/rec-nsspeeds.cc:144,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/rec-nsspeeds.cc:144,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 35
    argCount: 2
    argNames:
    - cutoff
    - ' message'
    argTypes:
    - time_t
    - T
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 106
    functionDepth: 2
    functionLinenumber: 106
    functionLinenumberEnd: 147
    functionName: nsspeeds_t::putPBEntry
    functionSourceFile: /src/pdns/pdns/recursordist/rec-nsspeeds.cc
    functionUses: 0
    functionsReached:
    - next
    - std::move
    - get_bytes
    - protozero::pbf_message::get_float
    - tag
    - DNSName
    - get_message
    - get_int64
    - protozero::pbf_message::get_int32
    - protozero::pbf_message::tag
    - decodeComboAddress
    - insert
    - DecayingEwmaCollection::stale
    - protozero::pbf_message::next
    - DecayingEwmaCollection::insert
    linkageType: ''
    returnType: bool
    signature: bool nsspeeds_t::putPBEntry(time_t cutoff, T& message)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: withName
      Src: /src/pdns/pdns/recursordist/rec-nsspeeds.cc:151,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-nsspeeds.cc:151,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/rec-nsspeeds.cc:151,1
    - Dst: auto::info
      Src: /src/pdns/pdns/recursordist/rec-nsspeeds.cc:152,1
    - Dst: protozero::pbf_message::next
      Src: /src/pdns/pdns/recursordist/rec-nsspeeds.cc:160,1
    - Dst: protozero::pbf_message::tag
      Src: /src/pdns/pdns/recursordist/rec-nsspeeds.cc:161,1
    - Dst: protozero::pbf_message::get_string
      Src: /src/pdns/pdns/recursordist/rec-nsspeeds.cc:163,1
    - Dst: auto::withValues
      Src: /src/pdns/pdns/recursordist/rec-nsspeeds.cc:164,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-nsspeeds.cc:164,1
    - Dst: protozero::pbf_message::get_string
      Src: /src/pdns/pdns/recursordist/rec-nsspeeds.cc:168,1
    - Dst: auto::withValues
      Src: /src/pdns/pdns/recursordist/rec-nsspeeds.cc:169,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-nsspeeds.cc:169,1
    - Dst: protozero::pbf_message::get_uint64
      Src: /src/pdns/pdns/recursordist/rec-nsspeeds.cc:173,1
    - Dst: auto::withValues
      Src: /src/pdns/pdns/recursordist/rec-nsspeeds.cc:174,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-nsspeeds.cc:174,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/rec-nsspeeds.cc:176,1
    - Dst: protozero::pbf_message::get_int64
      Src: /src/pdns/pdns/recursordist/rec-nsspeeds.cc:182,1
    - Dst: auto::withValues
      Src: /src/pdns/pdns/recursordist/rec-nsspeeds.cc:183,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-nsspeeds.cc:183,1
    - Dst: protozero::pbf_message::get_string
      Src: /src/pdns/pdns/recursordist/rec-nsspeeds.cc:187,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/rec-nsspeeds.cc:189,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/rec-nsspeeds.cc:196,1
    - Dst: protozero::pbf_message::get_message
      Src: /src/pdns/pdns/recursordist/rec-nsspeeds.cc:198,1
    - Dst: nsspeeds_t::putPBEntry
      Src: /src/pdns/pdns/recursordist/rec-nsspeeds.cc:199,1
    - Dst: auto::info
      Src: /src/pdns/pdns/recursordist/rec-nsspeeds.cc:207,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-nsspeeds.cc:207,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-nsspeeds.cc:207,1
    - Dst: auto::error
      Src: /src/pdns/pdns/recursordist/rec-nsspeeds.cc:211,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/rec-nsspeeds.cc:211,1
    - Dst: auto::error
      Src: /src/pdns/pdns/recursordist/rec-nsspeeds.cc:214,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/rec-nsspeeds.cc:214,1
    - Dst: auto::info
      Src: /src/pdns/pdns/recursordist/rec-nsspeeds.cc:217,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 54
    argCount: 2
    argNames:
    - cutoff
    - ' pbuf'
    argTypes:
    - time_t
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 220
      start: 149
    functionDepth: 3
    functionLinenumber: 149
    functionLinenumberEnd: 220
    functionName: nsspeeds_t::putPB
    functionSourceFile: /src/pdns/pdns/recursordist/rec-nsspeeds.cc
    functionUses: 0
    functionsReached:
    - Logging::Loggable
    - withName
    - std::runtime_error
    - protozero::pbf_message::get_int64
    - nsspeeds_t::putPBEntry
    - what
    - size
    - protozero::pbf_message::get_message
    - auto::error
    - protozero::pbf_message::tag
    - auto::withValues
    - protozero::pbf_message::get_uint64
    - protozero::pbf_message::next
    - protozero::pbf_message::get_string
    - auto::info
    linkageType: ''
    returnType: size_t
    signature: size_t nsspeeds_t::putPB(time_t cutoff, const std::string& pbuf)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: getRawLabels
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:42,1
    - Dst: auto::size
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:48,1
    - Dst: auto::size
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:48,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:49,1
    - Dst: toLogString
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:49,1
    - Dst: stoi
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:52,1
    - Dst: isdigit
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:58,1
    - Dst: pdns_iequals
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:62,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:64,1
    - Dst: toLogString
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:64,1
    - Dst: auto::size
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:72,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:73,1
    - Dst: toLogString
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:73,1
    - Dst: auto::size
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:76,1
    - Dst: auto::size
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:81,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:81,1
    - Dst: auto::size
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:84,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:86,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 34
    argCount: 1
    argNames:
    - ' name'
    argTypes:
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 40
    functionDepth: 0
    functionLinenumber: 40
    functionLinenumberEnd: 93
    functionName: makeNetmaskFromRPZ
    functionSourceFile: /src/pdns/pdns/recursordist/rpzloader.cc
    functionUses: 1
    functionsReached:
    - getRawLabels
    - toLogString
    - isdigit
    - PDNSException
    - pdns_iequals
    - stoi
    - empty
    - auto::size
    linkageType: ''
    returnType: Netmask
    signature: Netmask makeNetmaskFromRPZ(const DNSName& name)
  - BBCount: 24
    BranchProfiles: []
    Callsites:
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:115,1
    - Dst: auto::getTarget
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:119,1
    - Dst: auto::isRoot
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:124,1
    - Dst: auto::empty
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:151,1
    - Dst: auto::isRoot
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:151,1
    - Dst: auto::getRawLabel
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:151,1
    - Dst: auto::countLabels
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:151,1
    - Dst: std::string::length
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:151,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:154,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:154,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:154,1
    - Dst: make_unique<DNSFilterEngine::Policy::CustomData>
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:160,1
    - Dst: DNSFilterEngine::Policy::d_custom::emplace_back
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:162,1
    - Dst: getContent
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:162,1
    - Dst: make_unique<DNSFilterEngine::Policy::CustomData>
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:174,1
    - Dst: DNSFilterEngine::Policy::d_custom::emplace_back
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:176,1
    - Dst: getContent
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:176,1
    - Dst: static_cast<int32_t>
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:182,1
    - Dst: std::min
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:182,1
    - Dst: static_cast<int32_t>
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:185,1
    - Dst: std::min
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:185,1
    - Dst: static_cast<uint32_t>
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:185,1
    - Dst: d_name::isPartOf
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:190,1
    - Dst: d_name::makeRelative
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:191,1
    - Dst: addNSTrigger
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:193,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:193,1
    - Dst: rmNSTrigger
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:196,1
    - Dst: d_name::isPartOf
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:199,1
    - Dst: d_name::makeRelative
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:200,1
    - Dst: makeNetmaskFromRPZ
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:201,1
    - Dst: addClientTrigger
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:203,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:203,1
    - Dst: rmClientTrigger
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:206,1
    - Dst: d_name::isPartOf
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:209,1
    - Dst: d_name::makeRelative
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:211,1
    - Dst: makeNetmaskFromRPZ
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:212,1
    - Dst: addResponseTrigger
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:214,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:214,1
    - Dst: rmResponseTrigger
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:217,1
    - Dst: d_name::isPartOf
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:220,1
    - Dst: d_name::makeRelative
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:221,1
    - Dst: makeNetmaskFromRPZ
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:222,1
    - Dst: addNSIPTrigger
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:224,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:224,1
    - Dst: rmNSIPTrigger
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:227,1
    - Dst: addQNameTrigger
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:236,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:236,1
    - Dst: rmQNameTrigger
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:239,1
    CyclomaticComplexity: 27
    EdgeCount: 27
    ICount: 90
    argCount: 7
    argNames:
    - ' dnsRecord'
    - ' zone'
    - addOrRemove
    - ' defpol'
    - defpolOverrideLocal
    - maxTTL
    - log
    argTypes:
    - DNSRecord
    - std::shared_ptr<DNSFilterEngine::Zone>
    - bool
    - std::optional<DNSFilterEngine::Policy>
    - bool
    - uint32_t
    - Logr::log_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 243
      start: 95
    functionDepth: 1
    functionLinenumber: 95
    functionLinenumberEnd: 243
    functionName: RPZRecordToPolicy
    functionSourceFile: /src/pdns/pdns/recursordist/rpzloader.cc
    functionUses: 0
    functionsReached:
    - std::string::length
    - static_cast<int32_t>
    - static_cast<uint32_t>
    - rmResponseTrigger
    - d_name::makeRelative
    - DNSFilterEngine::Policy::d_custom::emplace_back
    - auto::countLabels
    - addNSIPTrigger
    - addQNameTrigger
    - Logr::log_t::info
    - Logging::Loggable
    - rmNSTrigger
    - addClientTrigger
    - d_name::isPartOf
    - makeNetmaskFromRPZ
    - rmNSIPTrigger
    - rmQNameTrigger
    - rmClientTrigger
    - auto::getTarget
    - make_unique<DNSFilterEngine::Policy::CustomData>
    - getRR
    - std::move
    - addNSTrigger
    - auto::getRawLabel
    - std::min
    - addResponseTrigger
    - getContent
    - auto::isRoot
    - auto::empty
    linkageType: ''
    returnType: std::optional<DNSName>
    signature: std::optional<DNSName> RPZRecordToPolicy(const DNSRecord& dnsRecord,
      const std::shared_ptr<DNSFilterEngine::Zone>& zone, bool addOrRemove, const
      std::optional<DNSFilterEngine::Policy>& defpol, bool defpolOverrideLocal, uint32_t
      maxTTL, Logr::log_t log)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: Logr::log_t::withValues
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:248,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:248,1
    - Dst: auto::info
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:249,1
    - Dst: name::empty
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:250,1
    - Dst: auto::info
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:251,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:251,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:251,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:255,1
    - Dst: pdns::getQueryLocalAddress
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:256,1
    - Dst: time
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:264,1
    - Dst: time
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:265,1
    - Dst: AXFRRetriever::getChunk
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:268,1
    - Dst: setSOA
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:276,1
    - Dst: d_name::makeUsRelative
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:278,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:280,1
    - Dst: RPZRecordToPolicy
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:284,1
    - Dst: emplace
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:286,1
    - Dst: time
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:290,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:292,1
    - Dst: time
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:294,1
    - Dst: auto::info
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:295,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:295,1
    - Dst: time
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:296,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:300,1
    - Dst: auto::info
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:303,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:303,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:303,1
    - Dst: shared_ptr::getZoneRepresentation
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:303,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 39
    argCount: 13
    argNames:
    - plogger
    - ' primary'
    - ' zoneName'
    - ' zone'
    - ' defpol'
    - defpolOverrideLocal
    - maxTTL
    - ' tsigTriplet'
    - maxReceivedBytes
    - ' localAddress'
    - axfrTimeout
    - ' namesAffected'
    - registerAffected
    argTypes:
    - Logr::log_t
    - ComboAddress
    - DNSName
    - std::shared_ptr<DNSFilterEngine::Zone>
    - std::optional<DNSFilterEngine::Policy>
    - bool
    - uint32_t
    - TSIGTriplet
    - size_t
    - ComboAddress
    - uint16_t
    - std::unordered_set<DNSName>
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 305
      start: 245
    functionDepth: 2
    functionLinenumber: 245
    functionLinenumberEnd: 305
    functionName: loadRPZFromServer
    functionSourceFile: /src/pdns/pdns/recursordist/rpzloader.cc
    functionUses: 0
    functionsReached:
    - pdns::getQueryLocalAddress
    - getRR
    - shared_ptr::getZoneRepresentation
    - AXFRRetriever::getChunk
    - Logging::Loggable
    - PDNSException
    - time
    - setSOA
    - RPZRecordToPolicy
    - ComboAddress
    - name::empty
    - Logr::log_t::withValues
    - d_name::makeUsRelative
    - emplace
    - auto::info
    linkageType: ''
    returnType: shared_ptr<const SOARecordContent>
    signature: shared_ptr<const SOARecordContent> loadRPZFromServer(Logr::log_t plogger,
      const ComboAddress& primary, const DNSName& zoneName, const std::shared_ptr<DNSFilterEngine::Zone>&
      zone, const std::optional<DNSFilterEngine::Policy>& defpol, bool defpolOverrideLocal,
      uint32_t maxTTL, const TSIGTriplet& tsigTriplet, size_t maxReceivedBytes, const
      ComboAddress& localAddress, uint16_t axfrTimeout, std::unordered_set<DNSName>&
      namesAffected, bool registerAffected)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:311,1
    - Dst: auto::find
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:312,1
    - Dst: auto::end
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:313,1
    - Dst: std::make_shared<rpzStats>
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:314,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - ' zone'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 319
      start: 309
    functionDepth: 0
    functionLinenumber: 309
    functionLinenumberEnd: 319
    functionName: getRPZZoneStats
    functionSourceFile: /src/pdns/pdns/recursordist/rpzloader.cc
    functionUses: 1
    functionsReached:
    - auto::end
    - std::make_shared<rpzStats>
    - auto::find
    - lock
    linkageType: ''
    returnType: shared_ptr<rpzStats>
    signature: shared_ptr<rpzStats> getRPZZoneStats(const std::string& zone)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: getRPZZoneStats
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:323,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ' zone'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 327
      start: 321
    functionDepth: 1
    functionLinenumber: 321
    functionLinenumberEnd: 327
    functionName: incRPZFailedTransfers
    functionSourceFile: /src/pdns/pdns/recursordist/rpzloader.cc
    functionUses: 0
    functionsReached:
    - getRPZZoneStats
    linkageType: ''
    returnType: void
    signature: void incRPZFailedTransfers(const std::string& zone)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: getRPZZoneStats
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:331,1
    - Dst: time
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:341,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 5
    argNames:
    - ' zone'
    - serial
    - numberOfRecords
    - fromFile
    - wasAXFR
    argTypes:
    - std::string
    - uint32_t
    - uint64_t
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 344
      start: 329
    functionDepth: 1
    functionLinenumber: 329
    functionLinenumberEnd: 344
    functionName: setRPZZoneNewState
    functionSourceFile: /src/pdns/pdns/recursordist/rpzloader.cc
    functionUses: 0
    functionsReached:
    - time
    - getRPZZoneStats
    linkageType: ''
    returnType: void
    signature: void setRPZZoneNewState(const std::string& zone, uint32_t serial, uint64_t
      numberOfRecords, bool fromFile, bool wasAXFR)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ZoneParserTNG::setMaxGenerateSteps
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:351,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:351,1
    - Dst: ZoneParserTNG::setMaxIncludes
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:352,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:352,1
    - Dst: DNSRecord::DNSRecord
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:354,1
    - Dst: DNSName::DNSName
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:355,1
    - Dst: withName
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:356,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:356,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:356,1
    - Dst: getName
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:356,1
    - Dst: ZoneParserTNG::get
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:357,1
    - Dst: DNSResourceRecord::qtype::getCode
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:359,1
    - Dst: DNSResourceRecord::content::empty
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:359,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:364,1
    - Dst: setDomain
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:366,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:367,1
    - Dst: DNSRecord::d_name::makeRelative
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:373,1
    - Dst: RPZRecordToPolicy
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:374,1
    - Dst: emplace
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:376,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:381,1
    - Dst: DNSResourceRecord::qname::toLogString
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:381,1
    - Dst: ZoneParserTNG::getLineOfFile
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:381,1
    - Dst: setRefresh
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:386,1
    - Dst: setSOA
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:387,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:387,1
    - Dst: setRPZZoneNewState
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:388,1
    - Dst: getName
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:388,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:388,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 32
    argCount: 7
    argNames:
    - ' fname'
    - ' zone'
    - ' defpol'
    - defpolOverrideLocal
    - maxTTL
    - ' namesAffected'
    - registerAffected
    argTypes:
    - std::string
    - std::shared_ptr<DNSFilterEngine::Zone>
    - std::optional<DNSFilterEngine::Policy>
    - bool
    - uint32_t
    - std::unordered_set<DNSName>
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 391
      start: 347
    functionDepth: 2
    functionLinenumber: 347
    functionLinenumberEnd: 391
    functionName: loadRPZFromFile
    functionSourceFile: /src/pdns/pdns/recursordist/rpzloader.cc
    functionUses: 5
    functionsReached:
    - ZoneParserTNG::setMaxGenerateSteps
    - DNSRecord::DNSRecord
    - withName
    - PDNSException
    - setRPZZoneNewState
    - DNSResourceRecord::qname::toLogString
    - DNSResourceRecord::content::empty
    - getName
    - Logging::Loggable
    - setDomain
    - setSOA
    - size
    - DNSRecord::d_name::makeRelative
    - ZoneParserTNG::setMaxIncludes
    - DNSResourceRecord::qtype::getCode
    - ZoneParserTNG::getLineOfFile
    - setRefresh
    - arg
    - getRR
    - std::move
    - RPZRecordToPolicy
    - ZoneParserTNG::get
    - DNSName::DNSName
    - emplace
    linkageType: ''
    returnType: std::shared_ptr<const SOARecordContent>
    signature: std::shared_ptr<const SOARecordContent> loadRPZFromFile(const std::string&
      fname, const std::shared_ptr<DNSFilterEngine::Zone>& zone, const std::optional<DNSFilterEngine::Policy>&
      defpol, bool defpolOverrideLocal, uint32_t maxTTL, std::unordered_set<DNSName>&
      namesAffected, bool registerAffected)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: string*::empty
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:398,1
    - Dst: unlink
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:399,1
    - Dst: string*::c_str
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:399,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - name
    argTypes:
    - string*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 403
      start: 395
    functionDepth: 0
    functionLinenumber: 395
    functionLinenumberEnd: 403
    functionName: operator()(const string* name) const noexcept
    functionSourceFile: /src/pdns/pdns/recursordist/rpzloader.cc
    functionUses: 0
    functionsReached:
    - string*::c_str
    - unlink
    - string*::empty
    linkageType: ''
    returnType: void
    signature: void operator()(const string* name) const noexcept
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:410,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:410,1
    - Dst: getSOA
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:411,1
    - Dst: DNSName::DNSName
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:413,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:414,1
    - Dst: getSerial
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:417,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:418,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:418,1
    - Dst: getSerial
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:418,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:418,1
    - Dst: getDomain
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:421,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:422,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:422,1
    - Dst: getDomain
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:422,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:422,1
    - Dst: UniqueFilenameDeleterPtr
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:424,1
    - Dst: string::string
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:424,1
    - Dst: mkstemp
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:425,1
    - Dst: auto::data
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:425,1
    - Dst: Logr::log_t::error
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:427,1
    - Dst: auto::clear
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:428,1
    - Dst: pdns::UniqueFilePtr
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:432,1
    - Dst: fdopen
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:432,1
    - Dst: close
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:435,1
    - Dst: Logr::log_t::error
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:436,1
    - Dst: dump
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:441,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:441,1
    - Dst: Logr::log_t::error
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:444,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:444,1
    - Dst: fflush
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:448,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:448,1
    - Dst: Logr::log_t::error
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:449,1
    - Dst: fsync
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:453,1
    - Dst: fileno
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:453,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:453,1
    - Dst: Logr::log_t::error
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:454,1
    - Dst: fclose
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:458,1
    - Dst: auto::release
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:458,1
    - Dst: Logr::log_t::error
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:459,1
    - Dst: rename
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:463,1
    - Dst: auto::c_str
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:463,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:463,1
    - Dst: Logr::log_t::error
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:464,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:464,1
    - Dst: auto::clear
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:467,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 45
    argCount: 3
    argNames:
    - logger
    - ' newZone'
    - ' dumpZoneFileName'
    argTypes:
    - Logr::log_t
    - std::shared_ptr<DNSFilterEngine::Zone>
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 469
      start: 408
    functionDepth: 1
    functionLinenumber: 408
    functionLinenumberEnd: 469
    functionName: dumpZoneToDisk
    functionSourceFile: /src/pdns/pdns/recursordist/rpzloader.cc
    functionUses: 0
    functionsReached:
    - pdns::UniqueFilePtr
    - fsync
    - getSOA
    - UniqueFilenameDeleterPtr
    - Logr::log_t::info
    - Logging::Loggable
    - Logr::log_t::error
    - c_str
    - auto::clear
    - string::string
    - mkstemp
    - rename
    - auto::get
    - fileno
    - auto::c_str
    - dump
    - auto::data
    - getDomain
    - fdopen
    - getRR
    - what
    - fclose
    - getSerial
    - fflush
    - DNSName::DNSName
    - auto::release
    - close
    linkageType: ''
    returnType: bool
    signature: bool dumpZoneToDisk(Logr::log_t logger, const std::shared_ptr<DNSFilterEngine::Zone>&
      newZone, const std::string& dumpZoneFileName)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<DNSFilterEngine::Zone>
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:477,1
    - Dst: pdns::fromNameOrIP
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:480,1
    - Dst: loadRPZFromServer
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:481,1
    - Dst: std::shared_ptr::setSerial
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:482,1
    - Dst: std::shared_ptr::setRefresh
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:483,1
    - Dst: std::max
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:484,1
    - Dst: std::shared_ptr::getRefresh
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:484,1
    - Dst: setRPZZoneNewState
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:485,1
    - Dst: std::shared_ptr::size
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:485,1
    - Dst: modify
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:487,1
    - Dst: dfe::setZone
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:488,1
    - Dst: dumpZoneFileName::empty
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:491,1
    - Dst: dumpZoneToDisk
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:492,1
    - Dst: Logr::log_t::error
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:499,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:499,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:499,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:499,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:499,1
    - Dst: incRPZFailedTransfers
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:500,1
    - Dst: Logr::log_t::error
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:503,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:503,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:503,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:503,1
    - Dst: incRPZFailedTransfers
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:504,1
    - Dst: condVar::wait_for
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:511,1
    - Dst: std::chrono::seconds
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:511,1
    - Dst: load
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:512,1
    - Dst: getLocal
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:515,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 34
    argCount: 9
    argNames:
    - ' params'
    - ' zoneName'
    - ' oldZone'
    - ' refresh'
    - ' polName'
    - configGeneration
    - ' rpzwaiter'
    - logger
    - ' namesAffected'
    argTypes:
    - RPZTrackerParams
    - DNSName
    - std::shared_ptr<DNSFilterEngine::Zone>
    - uint32_t
    - string
    - uint64_t
    - ZoneXFR::ZoneWaiter
    - Logr::log_t
    - std::unordered_set<DNSName>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 524
      start: 471
    functionDepth: 3
    functionLinenumber: 471
    functionLinenumberEnd: 524
    functionName: preloadRPZFIle
    functionSourceFile: /src/pdns/pdns/recursordist/rpzloader.cc
    functionUses: 0
    functionsReached:
    - modify
    - std::chrono::seconds
    - setRPZZoneNewState
    - dfe::setZone
    - dumpZoneFileName::empty
    - condVar::wait_for
    - std::shared_ptr::setRefresh
    - std::shared_ptr::setSerial
    - Logging::Loggable
    - Logr::log_t::error
    - loadRPZFromServer
    - getLocal
    - std::max
    - load
    - pdns::fromNameOrIP
    - incRPZFailedTransfers
    - std::shared_ptr::size
    - what
    - dumpZoneToDisk
    - std::make_shared<DNSFilterEngine::Zone>
    - std::shared_ptr::getRefresh
    linkageType: ''
    returnType: void
    signature: void preloadRPZFIle(RPZTrackerParams& params, const DNSName& zoneName,
      std::shared_ptr<DNSFilterEngine::Zone>& oldZone, uint32_t& refresh, const string&
      polName, uint64_t configGeneration, ZoneXFR::ZoneWaiter& rpzwaiter, Logr::log_t
      logger, std::unordered_set<DNSName>& namesAffected)
  - BBCount: 22
    BranchProfiles: []
    Callsites:
    - Dst: DNSRecord::DNSRecord
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:530,1
    - Dst: DNSRecord::setContent
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:531,1
    - Dst: std::min
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:537,1
    - Dst: time
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:538,1
    - Dst: condVar::wait_for
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:546,1
    - Dst: std::chrono::seconds
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:546,1
    - Dst: load
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:547,1
    - Dst: time
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:549,1
    - Dst: getLocal
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:552,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:558,1
    - Dst: pdns::fromNameOrIP
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:564,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:565,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:567,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:567,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:567,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:570,1
    - Dst: pdns::getQueryLocalAddress
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:571,1
    - Dst: getIXFRDeltas
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:575,1
    - Dst: Logr::log_t::error
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:581,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:581,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:581,1
    - Dst: incRPZFailedTransfers
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:582,1
    - Dst: vector::empty
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:587,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:592,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:592,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:592,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:595,1
    - Dst: auto::dfe::getZone
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:598,1
    - Dst: getDomain
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:599,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:600,1
    - Dst: std::make_shared<DNSFilterEngine::Zone>
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:604,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:614,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:615,1
    - Dst: std::shared_ptr::hasQNamePolicies
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:616,1
    - Dst: std::shared_ptr::getQNames
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:617,1
    - Dst: std::shared_ptr::clear
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:619,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:627,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:633,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:635,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:635,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:635,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:640,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:640,1
    - Dst: RPZRecordToPolicy
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:641,1
    - Dst: emplace
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:643,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:653,1
    - Dst: std::shared_ptr::getDomain
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:656,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:657,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:662,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:662,1
    - Dst: RPZRecordToPolicy
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:663,1
    - Dst: emplace
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:665,1
    - Dst: std::shared_ptr::setSOA
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:673,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:673,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:674,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:676,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:676,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:676,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:676,1
    - Dst: std::shared_ptr::setSerial
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:677,1
    - Dst: std::shared_ptr::setRefresh
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:678,1
    - Dst: setRPZZoneNewState
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:679,1
    - Dst: std::shared_ptr::size
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:679,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:686,1
    - Dst: modify
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:689,1
    - Dst: dfe::setZone
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:690,1
    - Dst: dumpZoneFileName::empty
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:693,1
    - Dst: dumpZoneToDisk
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:694,1
    - Dst: std::max
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:696,1
    - Dst: std::shared_ptr::getRefresh
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:696,1
    - Dst: Logr::log_t::error
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:699,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:699,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:699,1
    - Dst: Logr::log_t::error
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:702,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:702,1
    CyclomaticComplexity: 41
    EdgeCount: 41
    ICount: 118
    argCount: 11
    argNames:
    - ' params'
    - ' zoneName'
    - ' oldZone'
    - ' refresh'
    - ' polName'
    - ' skipRefreshDelay'
    - configGeneration
    - ' rpzwaiter'
    - logger
    - ' namesAffected'
    - registerAffected
    argTypes:
    - RPZTrackerParams
    - DNSName
    - std::shared_ptr<DNSFilterEngine::Zone>
    - uint32_t
    - string
    - bool
    - uint64_t
    - ZoneXFR::ZoneWaiter
    - Logr::log_t
    - std::unordered_set<DNSName>
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 705
      start: 526
    functionDepth: 2
    functionLinenumber: 526
    functionLinenumberEnd: 705
    functionName: RPZTrackerIteration
    functionSourceFile: /src/pdns/pdns/recursordist/rpzloader.cc
    functionUses: 0
    functionsReached:
    - modify
    - DNSRecord::DNSRecord
    - getIXFRDeltas
    - std::chrono::seconds
    - auto::dfe::getZone
    - std::to_string
    - setRPZZoneNewState
    - dfe::setZone
    - dumpZoneFileName::empty
    - DNSRecord::setContent
    - condVar::wait_for
    - std::shared_ptr::setSerial
    - Logr::log_t::info
    - Logging::Loggable
    - time
    - Logr::log_t::error
    - std::shared_ptr::setSOA
    - getLocal
    - std::shared_ptr::getQNames
    - empty
    - std::max
    - load
    - pdns::fromNameOrIP
    - pdns::getQueryLocalAddress
    - std::runtime_error
    - std::shared_ptr::hasQNamePolicies
    - incRPZFailedTransfers
    - vector::empty
    - getDomain
    - std::shared_ptr::size
    - std::shared_ptr::clear
    - ComboAddress
    - getRR
    - std::move
    - std::min
    - what
    - RPZRecordToPolicy
    - std::shared_ptr::getDomain
    - std::shared_ptr::getRefresh
    - dumpZoneToDisk
    - std::make_shared<DNSFilterEngine::Zone>
    - vector::size
    - std::shared_ptr::setRefresh
    - emplace
    linkageType: ''
    returnType: bool
    signature: bool RPZTrackerIteration(RPZTrackerParams& params, const DNSName& zoneName,
      std::shared_ptr<DNSFilterEngine::Zone>& oldZone, uint32_t& refresh, const string&
      polName, bool& skipRefreshDelay, uint64_t configGeneration, ZoneXFR::ZoneWaiter&
      rpzwaiter, Logr::log_t logger, std::unordered_set<DNSName>& namesAffected, bool
      registerAffected)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: setThreadName
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:710,1
    - Dst: withName
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:712,1
    - Dst: getLocal
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:716,1
    - Dst: getZone
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:716,1
    - Dst: auto::info
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:718,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:718,1
    - Dst: std::max
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:723,1
    - Dst: std::shared_ptr::getRefresh
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:723,1
    - Dst: std::shared_ptr::getDomain
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:724,1
    - Dst: std::shared_ptr::getName
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:725,1
    - Dst: std::shared_ptr::getName
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:725,1
    - Dst: DNSName::toStringNoDot
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:725,1
    - Dst: auto::withValues
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:728,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:728,1
    - Dst: ZoneXFR::insertZoneTracker
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:730,1
    - Dst: preloadRPZFIle
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:733,1
    - Dst: doWipePacketCache
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:735,1
    - Dst: std::unordered_set::clear
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:737,1
    - Dst: RPZTrackerIteration
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:740,1
    - Dst: doWipePacketCache
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:742,1
    - Dst: std::unordered_set::clear
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:744,1
    - Dst: ZoneXFR::clearZoneTracker
      Src: /src/pdns/pdns/recursordist/rpzloader.cc:747,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 2
    argNames:
    - params
    - configGeneration
    argTypes:
    - RPZTrackerParams
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 748
      start: 708
    functionDepth: 4
    functionLinenumber: 708
    functionLinenumberEnd: 748
    functionName: RPZIXFRTracker
    functionSourceFile: /src/pdns/pdns/recursordist/rpzloader.cc
    functionUses: 0
    functionsReached:
    - std::unordered_set::clear
    - ZoneXFR::insertZoneTracker
    - std::shared_ptr::getName
    - Logging::Loggable
    - withName
    - preloadRPZFIle
    - std::shared_ptr::getDomain
    - DNSName::toStringNoDot
    - ZoneXFR::clearZoneTracker
    - getLocal
    - doWipePacketCache
    - getZone
    - auto::withValues
    - RPZTrackerIteration
    - std::max
    - setThreadName
    - std::shared_ptr::getRefresh
    - auto::info
    linkageType: ''
    returnType: void
    signature: void RPZIXFRTracker(RPZTrackerParams params, uint64_t configGeneration)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/axfr-retriever.cc:43,1
    - Dst: pdns::isQueryLocalAddressFamilyEnabled
      Src: /src/pdns/pdns/recursordist/axfr-retriever.cc:45,1
    - Dst: ResolverException
      Src: /src/pdns/pdns/recursordist/axfr-retriever.cc:46,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/recursordist/axfr-retriever.cc:46,1
    - Dst: toLogString
      Src: /src/pdns/pdns/recursordist/axfr-retriever.cc:46,1
    - Dst: pdns::getQueryLocalAddress
      Src: /src/pdns/pdns/recursordist/axfr-retriever.cc:48,1
    - Dst: makeQuerySocket
      Src: /src/pdns/pdns/recursordist/axfr-retriever.cc:52,1
    - Dst: ResolverException
      Src: /src/pdns/pdns/recursordist/axfr-retriever.cc:54,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/recursordist/axfr-retriever.cc:54,1
    - Dst: AXFRRetriever::connect
      Src: /src/pdns/pdns/recursordist/axfr-retriever.cc:57,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/recursordist/axfr-retriever.cc:62,1
    - Dst: dns_random_uint16
      Src: /src/pdns/pdns/recursordist/axfr-retriever.cc:62,1
    - Dst: name::empty
      Src: /src/pdns/pdns/recursordist/axfr-retriever.cc:64,1
    - Dst: time
      Src: /src/pdns/pdns/recursordist/axfr-retriever.cc:71,1
    - Dst: ntohs
      Src: /src/pdns/pdns/recursordist/axfr-retriever.cc:73,1
    - Dst: DNSPacketWriter::getHeader
      Src: /src/pdns/pdns/recursordist/axfr-retriever.cc:73,1
    - Dst: addTSIG
      Src: /src/pdns/pdns/recursordist/axfr-retriever.cc:75,1
    - Dst: htons
      Src: /src/pdns/pdns/recursordist/axfr-retriever.cc:78,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/axfr-retriever.cc:78,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/recursordist/axfr-retriever.cc:80,1
    - Dst: vector::data
      Src: /src/pdns/pdns/recursordist/axfr-retriever.cc:82,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/axfr-retriever.cc:83,1
    - Dst: Utility::writev
      Src: /src/pdns/pdns/recursordist/axfr-retriever.cc:85,1
    - Dst: ResolverException
      Src: /src/pdns/pdns/recursordist/axfr-retriever.cc:87,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/recursordist/axfr-retriever.cc:87,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/axfr-retriever.cc:87,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/axfr-retriever.cc:88,1
    - Dst: ResolverException
      Src: /src/pdns/pdns/recursordist/axfr-retriever.cc:89,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/recursordist/axfr-retriever.cc:89,1
    - Dst: waitForData
      Src: /src/pdns/pdns/recursordist/axfr-retriever.cc:92,1
    - Dst: ResolverException
      Src: /src/pdns/pdns/recursordist/axfr-retriever.cc:95,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/recursordist/axfr-retriever.cc:95,1
    - Dst: ResolverException
      Src: /src/pdns/pdns/recursordist/axfr-retriever.cc:97,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/recursordist/axfr-retriever.cc:97,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/axfr-retriever.cc:97,1
    - Dst: close
      Src: /src/pdns/pdns/recursordist/axfr-retriever.cc:101,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 49
    argCount: 7
    argNames:
    - slog
    - ' remote'
    - ' domain'
    - ' tsigConf'
    - laddr
    - maxReceivedBytes
    - timeout
    argTypes:
    - Logr::log_t
    - ComboAddress
    - ZoneName
    - TSIGTriplet
    - ComboAddress*
    - size_t
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 32
    functionDepth: 1
    functionLinenumber: 32
    functionLinenumberEnd: 105
    functionName: AXFRRetriever::AXFRRetriever
    functionSourceFile: /src/pdns/pdns/recursordist/axfr-retriever.cc
    functionUses: 0
    functionsReached:
    - reinterpret_cast<char*>
    - toLogString
    - ntohs
    - stringerror
    - dns_random_uint16
    - name::empty
    - time
    - DNSPacketWriter::getHeader
    - ResolverException
    - vector::data
    - htons
    - pdns::getQueryLocalAddress
    - Utility::writev
    - toStringWithPort
    - ComboAddress
    - makeQuerySocket
    - addTSIG
    - AXFRRetriever::connect
    - waitForData
    - vector::size
    - pdns::isQueryLocalAddressFamilyEnabled
    - close
    linkageType: ''
    returnType: void
    signature: "void AXFRRetriever::AXFRRetriever(Logr::log_t slog,\n                             const
      ComboAddress& remote,\n                             const ZoneName& domain,\n
      \                            const TSIGTriplet& tsigConf,\n                             const
      ComboAddress* laddr,\n                             size_t maxReceivedBytes,\n
      \                            uint16_t timeout)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: close
      Src: /src/pdns/pdns/recursordist/axfr-retriever.cc:109,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 107
    functionDepth: 0
    functionLinenumber: 107
    functionLinenumberEnd: 110
    functionName: AXFRRetriever::~AXFRRetriever()
    functionSourceFile: /src/pdns/pdns/recursordist/axfr-retriever.cc
    functionUses: 0
    functionsReached:
    - close
    linkageType: ''
    returnType: void
    signature: void AXFRRetriever::~AXFRRetriever()
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: AXFRRetriever::getLength
      Src: /src/pdns/pdns/recursordist/axfr-retriever.cc:120,1
    - Dst: ResolverException
      Src: /src/pdns/pdns/recursordist/axfr-retriever.cc:122,1
    - Dst: ResolverException
      Src: /src/pdns/pdns/recursordist/axfr-retriever.cc:125,1
    - Dst: AXFRRetriever::timeoutReadn
      Src: /src/pdns/pdns/recursordist/axfr-retriever.cc:127,1
    - Dst: data
      Src: /src/pdns/pdns/recursordist/axfr-retriever.cc:132,1
    - Dst: ResolverException
      Src: /src/pdns/pdns/recursordist/axfr-retriever.cc:136,1
    - Dst: RCode::to_s
      Src: /src/pdns/pdns/recursordist/axfr-retriever.cc:136,1
    - Dst: ResolverException
      Src: /src/pdns/pdns/recursordist/axfr-retriever.cc:140,1
    - Dst: check
      Src: /src/pdns/pdns/recursordist/axfr-retriever.cc:143,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/axfr-retriever.cc:143,1
    - Dst: data
      Src: /src/pdns/pdns/recursordist/axfr-retriever.cc:143,1
    - Dst: parseResult
      Src: /src/pdns/pdns/recursordist/axfr-retriever.cc:146,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/axfr-retriever.cc:146,1
    - Dst: vector<DNSRecord>*::clear
      Src: /src/pdns/pdns/recursordist/axfr-retriever.cc:156,1
    - Dst: vector<DNSRecord>*::reserve
      Src: /src/pdns/pdns/recursordist/axfr-retriever.cc:157,1
    - Dst: MOADNSParser::d_answers::size
      Src: /src/pdns/pdns/recursordist/axfr-retriever.cc:157,1
    - Dst: vector<DNSRecord>*::push_back
      Src: /src/pdns/pdns/recursordist/axfr-retriever.cc:164,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/axfr-retriever.cc:164,1
    - Dst: ResolverException
      Src: /src/pdns/pdns/recursordist/axfr-retriever.cc:169,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/axfr-retriever.cc:169,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 38
    argCount: 3
    argNames:
    - res
    - records
    - timeout
    argTypes:
    - Resolver::res_t
    - vector<DNSRecord>*
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 173
      start: 114
    functionDepth: 1
    functionLinenumber: 114
    functionLinenumberEnd: 173
    functionName: AXFRRetriever::getChunk
    functionSourceFile: /src/pdns/pdns/recursordist/axfr-retriever.cc
    functionUses: 7
    functionsReached:
    - std::move
    - parseResult
    - AXFRRetriever::timeoutReadn
    - what
    - vector<DNSRecord>*::push_back
    - DNSName
    - ResolverException
    - AXFRRetriever::getLength
    - MOADNSParser::d_answers::size
    - RCode::to_s
    - data
    - check
    - vector<DNSRecord>*::clear
    - vector<DNSRecord>*::reserve
    - std::string
    linkageType: ''
    returnType: int
    signature: int AXFRRetriever::getChunk(Resolver::res_t &res, vector<DNSRecord>*
      records, uint16_t timeout)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: time
      Src: /src/pdns/pdns/recursordist/axfr-retriever.cc:177,1
    - Dst: time
      Src: /src/pdns/pdns/recursordist/axfr-retriever.cc:182,1
    - Dst: ResolverException
      Src: /src/pdns/pdns/recursordist/axfr-retriever.cc:184,1
    - Dst: waitForData
      Src: /src/pdns/pdns/recursordist/axfr-retriever.cc:186,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/recursordist/axfr-retriever.cc:186,1
    - Dst: ResolverException
      Src: /src/pdns/pdns/recursordist/axfr-retriever.cc:188,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/axfr-retriever.cc:188,1
    - Dst: ResolverException
      Src: /src/pdns/pdns/recursordist/axfr-retriever.cc:191,1
    - Dst: recv
      Src: /src/pdns/pdns/recursordist/axfr-retriever.cc:194,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/axfr-retriever.cc:194,1
    - Dst: ResolverException
      Src: /src/pdns/pdns/recursordist/axfr-retriever.cc:196,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/axfr-retriever.cc:196,1
    - Dst: ResolverException
      Src: /src/pdns/pdns/recursordist/axfr-retriever.cc:199,1
    - Dst: static_cast<uint16_t>
      Src: /src/pdns/pdns/recursordist/axfr-retriever.cc:201,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 19
    argCount: 2
    argNames:
    - bytes
    - timeoutsec
    argTypes:
    - uint16_t
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 203
      start: 175
    functionDepth: 0
    functionLinenumber: 175
    functionLinenumberEnd: 203
    functionName: AXFRRetriever::timeoutReadn
    functionSourceFile: /src/pdns/pdns/recursordist/axfr-retriever.cc
    functionUses: 3
    functionsReached:
    - recv
    - time
    - stringerror
    - waitForData
    - ResolverException
    - static_cast<uint16_t>
    - at
    - static_cast<int>
    linkageType: ''
    returnType: void
    signature: void AXFRRetriever::timeoutReadn(uint16_t bytes, uint16_t timeoutsec)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: setNonBlocking
      Src: /src/pdns/pdns/recursordist/axfr-retriever.cc:207,1
    - Dst: TCPIOHandler::connect
      Src: /src/pdns/pdns/recursordist/axfr-retriever.cc:211,1
    - Dst: getSocklen
      Src: /src/pdns/pdns/recursordist/axfr-retriever.cc:211,1
    - Dst: closesocket
      Src: /src/pdns/pdns/recursordist/axfr-retriever.cc:213,1
    - Dst: ResolverException
      Src: /src/pdns/pdns/recursordist/axfr-retriever.cc:217,1
    - Dst: ResolverException
      Src: /src/pdns/pdns/recursordist/axfr-retriever.cc:220,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/axfr-retriever.cc:220,1
    - Dst: waitForRWData
      Src: /src/pdns/pdns/recursordist/axfr-retriever.cc:226,1
    - Dst: closesocket
      Src: /src/pdns/pdns/recursordist/axfr-retriever.cc:230,1
    - Dst: ResolverException
      Src: /src/pdns/pdns/recursordist/axfr-retriever.cc:234,1
    - Dst: ResolverException
      Src: /src/pdns/pdns/recursordist/axfr-retriever.cc:240,1
    - Dst: ResolverException
      Src: /src/pdns/pdns/recursordist/axfr-retriever.cc:243,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/axfr-retriever.cc:243,1
    - Dst: getsockopt
      Src: /src/pdns/pdns/recursordist/axfr-retriever.cc:247,1
    - Dst: ResolverException
      Src: /src/pdns/pdns/recursordist/axfr-retriever.cc:248,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/axfr-retriever.cc:248,1
    - Dst: ResolverException
      Src: /src/pdns/pdns/recursordist/axfr-retriever.cc:251,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/axfr-retriever.cc:251,1
    - Dst: strerror
      Src: /src/pdns/pdns/recursordist/axfr-retriever.cc:251,1
    - Dst: setBlocking
      Src: /src/pdns/pdns/recursordist/axfr-retriever.cc:255,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 37
    argCount: 1
    argNames:
    - timeout
    argTypes:
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 257
      start: 205
    functionDepth: 0
    functionLinenumber: 205
    functionLinenumberEnd: 257
    functionName: AXFRRetriever::connect
    functionSourceFile: /src/pdns/pdns/recursordist/axfr-retriever.cc
    functionUses: 2
    functionsReached:
    - getsockopt
    - closesocket
    - setNonBlocking
    - stringerror
    - string
    - setBlocking
    - ResolverException
    - TCPIOHandler::connect
    - strerror
    - waitForRWData
    - getSocklen
    linkageType: ''
    returnType: void
    signature: void AXFRRetriever::connect(uint16_t timeout)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: AXFRRetriever::timeoutReadn
      Src: /src/pdns/pdns/recursordist/axfr-retriever.cc:261,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/axfr-retriever.cc:262,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/axfr-retriever.cc:262,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - timeout
    argTypes:
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 263
      start: 259
    functionDepth: 0
    functionLinenumber: 259
    functionLinenumberEnd: 263
    functionName: AXFRRetriever::getLength
    functionSourceFile: /src/pdns/pdns/recursordist/axfr-retriever.cc
    functionUses: 2
    functionsReached:
    - at
    - AXFRRetriever::timeoutReadn
    linkageType: ''
    returnType: int
    signature: int AXFRRetriever::getLength(uint16_t timeout)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: time
      Src: /src/pdns/pdns/recursordist/cachecleaner.hh:36,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/cachecleaner.hh:38,1
    - Dst: template get<S>
      Src: /src/pdns/pdns/recursordist/cachecleaner.hh:44,1
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/cachecleaner.hh:53,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/cachecleaner.hh:53,1
    - Dst: auto::isStale
      Src: /src/pdns/pdns/recursordist/cachecleaner.hh:54,1
    - Dst: erase
      Src: /src/pdns/pdns/recursordist/cachecleaner.hh:55,1
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/cachecleaner.hh:74,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/cachecleaner.hh:75,1
    - Dst: erase
      Src: /src/pdns/pdns/recursordist/cachecleaner.hh:76,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 22
    argCount: 2
    argNames:
    - ' collection'
    - maxCached
    argTypes:
    - T
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 34
    functionDepth: 0
    functionLinenumber: 34
    functionLinenumberEnd: 78
    functionName: pruneCollection
    functionSourceFile: /src/pdns/pdns/recursordist/cachecleaner.hh
    functionUses: 1
    functionsReached:
    - time
    - end
    - size
    - template get<S>
    - begin
    - erase
    - auto::isStale
    linkageType: ''
    returnType: void
    signature: void pruneCollection(T& collection, size_t maxCached, size_t scanFraction
      = 1000)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: template get<S>
      Src: /src/pdns/pdns/recursordist/cachecleaner.hh:84,1
    - Dst: template project<S>
      Src: /src/pdns/pdns/recursordist/cachecleaner.hh:85,1
    - Dst: relocate
      Src: /src/pdns/pdns/recursordist/cachecleaner.hh:87,1
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/cachecleaner.hh:87,1
    - Dst: relocate
      Src: /src/pdns/pdns/recursordist/cachecleaner.hh:90,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/cachecleaner.hh:90,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - ' collection'
    - ' iter'
    - front
    argTypes:
    - T
    - typename T::iterator
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 82
    functionDepth: 0
    functionLinenumber: 82
    functionLinenumberEnd: 92
    functionName: moveCacheItemToFrontOrBack
    functionSourceFile: /src/pdns/pdns/recursordist/cachecleaner.hh
    functionUses: 4
    functionsReached:
    - end
    - template get<S>
    - template project<S>
    - relocate
    - begin
    linkageType: ''
    returnType: void
    signature: void moveCacheItemToFrontOrBack(T& collection, typename T::iterator&
      iter, bool front)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: moveCacheItemToFrontOrBack
      Src: /src/pdns/pdns/recursordist/cachecleaner.hh:97,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' collection'
    - ' iter'
    argTypes:
    - T
    - typename T::iterator
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 95
    functionDepth: 0
    functionLinenumber: 95
    functionLinenumberEnd: 98
    functionName: moveCacheItemToFront
    functionSourceFile: /src/pdns/pdns/recursordist/cachecleaner.hh
    functionUses: 5
    functionsReached:
    - moveCacheItemToFrontOrBack
    linkageType: ''
    returnType: void
    signature: void moveCacheItemToFront(T& collection, typename T::iterator& iter)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: moveCacheItemToFrontOrBack
      Src: /src/pdns/pdns/recursordist/cachecleaner.hh:103,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' collection'
    - ' iter'
    argTypes:
    - T
    - typename T::iterator
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 104
      start: 101
    functionDepth: 0
    functionLinenumber: 101
    functionLinenumberEnd: 104
    functionName: moveCacheItemToBack
    functionSourceFile: /src/pdns/pdns/recursordist/cachecleaner.hh
    functionUses: 12
    functionsReached:
    - moveCacheItemToFrontOrBack
    linkageType: ''
    returnType: void
    signature: void moveCacheItemToBack(T& collection, typename T::iterator& iter)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: time
      Src: /src/pdns/pdns/recursordist/cachecleaner.hh:110,1
    - Dst: d_map::write_lock
      Src: /src/pdns/pdns/recursordist/cachecleaner.hh:113,1
    - Dst: auto::size
      Src: /src/pdns/pdns/recursordist/cachecleaner.hh:115,1
    - Dst: boost::multi_index::get<S>
      Src: /src/pdns/pdns/recursordist/cachecleaner.hh:118,1
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/cachecleaner.hh:119,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/cachecleaner.hh:119,1
    - Dst: erase
      Src: /src/pdns/pdns/recursordist/cachecleaner.hh:121,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 1
    argNames:
    - ' maps'
    argTypes:
    - std::vector<T>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 132
      start: 107
    functionDepth: 0
    functionLinenumber: 107
    functionLinenumberEnd: 132
    functionName: pruneLockedCollectionsVector
    functionSourceFile: /src/pdns/pdns/recursordist/cachecleaner.hh
    functionUses: 2
    functionsReached:
    - d_map::write_lock
    - time
    - end
    - boost::multi_index::get<S>
    - begin
    - erase
    - auto::size
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t pruneLockedCollectionsVector(std::vector<T>& maps)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: std::max
      Src: /src/pdns/pdns/recursordist/cachecleaner.hh:145,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/cachecleaner.hh:151,1
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/cachecleaner.hh:158,1
    - Dst: auto::d_map::size
      Src: /src/pdns/pdns/recursordist/cachecleaner.hh:159,1
    - Dst: std::ceil
      Src: /src/pdns/pdns/recursordist/cachecleaner.hh:160,1
    - Dst: auto::invalidate
      Src: /src/pdns/pdns/recursordist/cachecleaner.hh:161,1
    - Dst: boost::multi_index::get<S>
      Src: /src/pdns/pdns/recursordist/cachecleaner.hh:162,1
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/cachecleaner.hh:165,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/cachecleaner.hh:165,1
    - Dst: auto::isStale
      Src: /src/pdns/pdns/recursordist/cachecleaner.hh:166,1
    - Dst: auto::preRemoval
      Src: /src/pdns/pdns/recursordist/cachecleaner.hh:167,1
    - Dst: erase
      Src: /src/pdns/pdns/recursordist/cachecleaner.hh:168,1
    - Dst: decEntriesCount
      Src: /src/pdns/pdns/recursordist/cachecleaner.hh:170,1
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/cachecleaner.hh:214,1
    - Dst: auto::d_map::size
      Src: /src/pdns/pdns/recursordist/cachecleaner.hh:215,1
    - Dst: std::round
      Src: /src/pdns/pdns/recursordist/cachecleaner.hh:217,1
    - Dst: static_cast<double>
      Src: /src/pdns/pdns/recursordist/cachecleaner.hh:217,1
    - Dst: auto::invalidate
      Src: /src/pdns/pdns/recursordist/cachecleaner.hh:223,1
    - Dst: boost::multi_index::get<S>
      Src: /src/pdns/pdns/recursordist/cachecleaner.hh:224,1
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/cachecleaner.hh:226,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/cachecleaner.hh:226,1
    - Dst: auto::preRemoval
      Src: /src/pdns/pdns/recursordist/cachecleaner.hh:227,1
    - Dst: erase
      Src: /src/pdns/pdns/recursordist/cachecleaner.hh:228,1
    - Dst: decEntriesCount
      Src: /src/pdns/pdns/recursordist/cachecleaner.hh:229,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 47
    argCount: 4
    argNames:
    - now
    - ' maps'
    - maxCached
    - cacheSize
    argTypes:
    - time_t
    - std::vector<T>
    - uint64_t
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 237
      start: 135
    functionDepth: 0
    functionLinenumber: 135
    functionLinenumberEnd: 237
    functionName: pruneMutexCollectionsVector
    functionSourceFile: /src/pdns/pdns/recursordist/cachecleaner.hh
    functionUses: 3
    functionsReached:
    - static_cast<double>
    - std::ceil
    - decEntriesCount
    - auto::d_map::size
    - end
    - size
    - lock
    - auto::preRemoval
    - std::round
    - auto::invalidate
    - boost::multi_index::get<S>
    - begin
    - std::max
    - erase
    - auto::isStale
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t pruneMutexCollectionsVector(time_t now, std::vector<T>& maps,
      uint64_t maxCached, uint64_t cacheSize)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: d_map::write_lock
      Src: /src/pdns/pdns/recursordist/cachecleaner.hh:245,1
    - Dst: auto::size
      Src: /src/pdns/pdns/recursordist/cachecleaner.hh:246,1
    - Dst: auto::clear
      Src: /src/pdns/pdns/recursordist/cachecleaner.hh:247,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ' maps'
    argTypes:
    - std::vector<T>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 251
      start: 240
    functionDepth: 1
    functionLinenumber: 240
    functionLinenumberEnd: 251
    functionName: purgeLockedCollectionsVector
    functionSourceFile: /src/pdns/pdns/recursordist/cachecleaner.hh
    functionUses: 7
    functionsReached:
    - d_map::write_lock
    - auto::clear
    - auto::size
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t purgeLockedCollectionsVector(std::vector<T>& maps)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::string::resize
      Src: /src/pdns/pdns/recursordist/cachecleaner.hh:258,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/recursordist/cachecleaner.hh:258,1
    - Dst: d_map::write_lock
      Src: /src/pdns/pdns/recursordist/cachecleaner.hh:261,1
    - Dst: boost::multi_index::get<N>
      Src: /src/pdns/pdns/recursordist/cachecleaner.hh:262,1
    - Dst: lower_bound
      Src: /src/pdns/pdns/recursordist/cachecleaner.hh:263,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/cachecleaner.hh:266,1
    - Dst: auto::qname::isPartOf
      Src: /src/pdns/pdns/recursordist/cachecleaner.hh:267,1
    - Dst: erase
      Src: /src/pdns/pdns/recursordist/cachecleaner.hh:272,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 2
    argNames:
    - ' maps'
    - ' match'
    argTypes:
    - std::vector<T>
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 276
      start: 254
    functionDepth: 2
    functionLinenumber: 254
    functionLinenumberEnd: 276
    functionName: purgeLockedCollectionsVector
    functionSourceFile: /src/pdns/pdns/recursordist/cachecleaner.hh
    functionUses: 7
    functionsReached:
    - d_map::write_lock
    - lower_bound
    - end
    - auto::qname::isPartOf
    - std::string::resize
    - boost::multi_index::get<N>
    - std::string::size
    - erase
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t purgeLockedCollectionsVector(std::vector<T>& maps, const std::string&
      match)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: d_map::write_lock
      Src: /src/pdns/pdns/recursordist/cachecleaner.hh:282,1
    - Dst: boost::multi_index::get<N>
      Src: /src/pdns/pdns/recursordist/cachecleaner.hh:283,1
    - Dst: equal_range
      Src: /src/pdns/pdns/recursordist/cachecleaner.hh:284,1
    - Dst: distance
      Src: /src/pdns/pdns/recursordist/cachecleaner.hh:286,1
    - Dst: erase
      Src: /src/pdns/pdns/recursordist/cachecleaner.hh:287,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - ' shard'
    - ' qname'
    argTypes:
    - T
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 291
      start: 279
    functionDepth: 0
    functionLinenumber: 279
    functionLinenumberEnd: 291
    functionName: purgeExactLockedCollection
    functionSourceFile: /src/pdns/pdns/recursordist/cachecleaner.hh
    functionUses: 3
    functionsReached:
    - d_map::write_lock
    - distance
    - equal_range
    - boost::multi_index::get<N>
    - erase
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t purgeExactLockedCollection(T& shard, const DNSName& qname)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: insert
      Src: /src/pdns/pdns/recursordist/cachecleaner.hh:296,1
    - Dst: moveCacheItemToBack
      Src: /src/pdns/pdns/recursordist/cachecleaner.hh:298,1
    - Dst: replace
      Src: /src/pdns/pdns/recursordist/cachecleaner.hh:299,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - ' index'
    - ' value'
    argTypes:
    - Index
    - typename Index::value_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 303
      start: 294
    functionDepth: 2
    functionLinenumber: 294
    functionLinenumberEnd: 303
    functionName: lruReplacingInsert
    functionSourceFile: /src/pdns/pdns/recursordist/cachecleaner.hh
    functionUses: 3
    functionsReached:
    - moveCacheItemToBack
    - replace
    - insert
    linkageType: ''
    returnType: bool
    signature: bool lruReplacingInsert(Index& index, const typename Index::value_type&
      value)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' str'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 36
    functionDepth: 0
    functionLinenumber: 36
    functionLinenumberEnd: 37
    functionName: RecordTextException::RecordTextException
    functionSourceFile: /src/pdns/pdns/recursordist/rcpgenerator.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void RecordTextException(const string& str)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: substr
      Src: /src/pdns/pdns/recursordist/rcpgenerator.hh:72,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 71
    functionDepth: 0
    functionLinenumber: 71
    functionLinenumberEnd: 73
    functionName: RecordTextReader::getRemaining
    functionSourceFile: /src/pdns/pdns/recursordist/rcpgenerator.hh
    functionUses: 0
    functionsReached:
    - substr
    linkageType: ''
    returnType: std::string
    signature: std::string getRemaining() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 81
    functionDepth: 0
    functionLinenumber: 81
    functionLinenumberEnd: 83
    functionName: RecordTextReader::consumeRemaining
    functionSourceFile: /src/pdns/pdns/recursordist/rcpgenerator.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void consumeRemaining() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 120
    functionDepth: 0
    functionLinenumber: 120
    functionLinenumberEnd: 120
    functionName: RecordTextWriter::eof
    functionSourceFile: /src/pdns/pdns/recursordist/rcpgenerator.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool eof() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 124
      start: 122
    functionDepth: 0
    functionLinenumber: 122
    functionLinenumberEnd: 124
    functionName: RecordTextWriter::getRemaining
    functionSourceFile: /src/pdns/pdns/recursordist/rcpgenerator.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string getRemaining() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 132
      start: 130
    functionDepth: 0
    functionLinenumber: 130
    functionLinenumberEnd: 132
    functionName: RecordTextWriter::consumeRemaining
    functionSourceFile: /src/pdns/pdns/recursordist/rcpgenerator.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void consumeRemaining() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: reset
      Src: /src/pdns/pdns/recursordist/test-rec-tcounters_cc.cc:25,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/test-rec-tcounters_cc.cc:30,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/test-rec-tcounters_cc.cc:35,1
    - Dst: std::thread::join
      Src: /src/pdns/pdns/recursordist/test-rec-tcounters_cc.cc:38,1
    - Dst: std::thread::join
      Src: /src/pdns/pdns/recursordist/test-rec-tcounters_cc.cc:39,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-rec-tcounters_cc.cc:40,1
    - Dst: sum
      Src: /src/pdns/pdns/recursordist/test-rec-tcounters_cc.cc:40,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-rec-tcounters_cc.cc:41,1
    - Dst: sum
      Src: /src/pdns/pdns/recursordist/test-rec-tcounters_cc.cc:41,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 23
    functionDepth: 0
    functionLinenumber: 23
    functionLinenumberEnd: 42
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-rec-tcounters_cc.cc
    functionUses: 0
    functionsReached:
    - reset
    - std::thread::join
    - BOOST_CHECK_EQUAL
    - at
    - sum
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(destruct)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: reset
      Src: /src/pdns/pdns/recursordist/test-rec-tcounters_cc.cc:46,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/test-rec-tcounters_cc.cc:53,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/test-rec-tcounters_cc.cc:54,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/test-rec-tcounters_cc.cc:55,1
    - Dst: dns_random
      Src: /src/pdns/pdns/recursordist/test-rec-tcounters_cc.cc:56,1
    - Dst: updateSnap
      Src: /src/pdns/pdns/recursordist/test-rec-tcounters_cc.cc:57,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/test-rec-tcounters_cc.cc:64,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/test-rec-tcounters_cc.cc:65,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/test-rec-tcounters_cc.cc:66,1
    - Dst: dns_random
      Src: /src/pdns/pdns/recursordist/test-rec-tcounters_cc.cc:67,1
    - Dst: updateSnap
      Src: /src/pdns/pdns/recursordist/test-rec-tcounters_cc.cc:68,1
    - Dst: aggregatedSnap
      Src: /src/pdns/pdns/recursordist/test-rec-tcounters_cc.cc:75,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-rec-tcounters_cc.cc:76,1
    - Dst: auto::at
      Src: /src/pdns/pdns/recursordist/test-rec-tcounters_cc.cc:77,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-rec-tcounters_cc.cc:78,1
    - Dst: MTasker<Key, Val, Cmp>::yield
      Src: /src/pdns/pdns/recursordist/test-rec-tcounters_cc.cc:79,1
    - Dst: std::thread::join
      Src: /src/pdns/pdns/recursordist/test-rec-tcounters_cc.cc:82,1
    - Dst: std::thread::join
      Src: /src/pdns/pdns/recursordist/test-rec-tcounters_cc.cc:83,1
    - Dst: std::thread::join
      Src: /src/pdns/pdns/recursordist/test-rec-tcounters_cc.cc:84,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-rec-tcounters_cc.cc:85,1
    - Dst: sum
      Src: /src/pdns/pdns/recursordist/test-rec-tcounters_cc.cc:85,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-rec-tcounters_cc.cc:86,1
    - Dst: sum
      Src: /src/pdns/pdns/recursordist/test-rec-tcounters_cc.cc:86,1
    - Dst: avg
      Src: /src/pdns/pdns/recursordist/test-rec-tcounters_cc.cc:87,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-rec-tcounters_cc.cc:88,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 34
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 44
    functionDepth: 2
    functionLinenumber: 44
    functionLinenumberEnd: 89
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-rec-tcounters_cc.cc
    functionUses: 0
    functionsReached:
    - reset
    - dns_random
    - avg
    - MTasker<Key, Val, Cmp>::yield
    - BOOST_CHECK_EQUAL
    - std::thread::join
    - aggregatedSnap
    - updateSnap
    - auto::at
    - BOOST_CHECK
    - at
    - sum
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(update_fast)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: reset
      Src: /src/pdns/pdns/recursordist/test-rec-tcounters_cc.cc:94,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/test-rec-tcounters_cc.cc:101,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/test-rec-tcounters_cc.cc:102,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/test-rec-tcounters_cc.cc:103,1
    - Dst: dns_random
      Src: /src/pdns/pdns/recursordist/test-rec-tcounters_cc.cc:104,1
    - Dst: updateSnap
      Src: /src/pdns/pdns/recursordist/test-rec-tcounters_cc.cc:105,1
    - Dst: dns_random
      Src: /src/pdns/pdns/recursordist/test-rec-tcounters_cc.cc:108,1
    - Dst: nanosleep
      Src: /src/pdns/pdns/recursordist/test-rec-tcounters_cc.cc:109,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/test-rec-tcounters_cc.cc:115,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/test-rec-tcounters_cc.cc:116,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/test-rec-tcounters_cc.cc:117,1
    - Dst: dns_random
      Src: /src/pdns/pdns/recursordist/test-rec-tcounters_cc.cc:118,1
    - Dst: updateSnap
      Src: /src/pdns/pdns/recursordist/test-rec-tcounters_cc.cc:119,1
    - Dst: dns_random
      Src: /src/pdns/pdns/recursordist/test-rec-tcounters_cc.cc:122,1
    - Dst: nanosleep
      Src: /src/pdns/pdns/recursordist/test-rec-tcounters_cc.cc:123,1
    - Dst: aggregatedSnap
      Src: /src/pdns/pdns/recursordist/test-rec-tcounters_cc.cc:129,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-rec-tcounters_cc.cc:130,1
    - Dst: auto::at
      Src: /src/pdns/pdns/recursordist/test-rec-tcounters_cc.cc:131,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-rec-tcounters_cc.cc:133,1
    - Dst: dns_random
      Src: /src/pdns/pdns/recursordist/test-rec-tcounters_cc.cc:135,1
    - Dst: nanosleep
      Src: /src/pdns/pdns/recursordist/test-rec-tcounters_cc.cc:136,1
    - Dst: std::thread::join
      Src: /src/pdns/pdns/recursordist/test-rec-tcounters_cc.cc:139,1
    - Dst: std::thread::join
      Src: /src/pdns/pdns/recursordist/test-rec-tcounters_cc.cc:140,1
    - Dst: std::thread::join
      Src: /src/pdns/pdns/recursordist/test-rec-tcounters_cc.cc:141,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-rec-tcounters_cc.cc:142,1
    - Dst: sum
      Src: /src/pdns/pdns/recursordist/test-rec-tcounters_cc.cc:142,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-rec-tcounters_cc.cc:143,1
    - Dst: sum
      Src: /src/pdns/pdns/recursordist/test-rec-tcounters_cc.cc:143,1
    - Dst: avg
      Src: /src/pdns/pdns/recursordist/test-rec-tcounters_cc.cc:144,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-rec-tcounters_cc.cc:145,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 36
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 146
      start: 91
    functionDepth: 0
    functionLinenumber: 91
    functionLinenumberEnd: 146
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-rec-tcounters_cc.cc
    functionUses: 0
    functionsReached:
    - reset
    - dns_random
    - avg
    - std::thread::join
    - BOOST_CHECK_EQUAL
    - aggregatedSnap
    - updateSnap
    - nanosleep
    - auto::at
    - BOOST_CHECK
    - at
    - sum
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(update_with_sleep)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:40,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:40,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:43,1
    - Dst: dns_isspace
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:43,1
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:43,1
    - Dst: dns_isspace
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:43,1
    - Dst: rbegin
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:43,1
    - Dst: boost::trim_if
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:44,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:45,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 4
    argCount: 2
    argNames:
    - str
    - zone
    argTypes:
    - string
    - ZoneName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 39
    functionDepth: 0
    functionLinenumber: 39
    functionLinenumberEnd: 46
    functionName: RecordTextReader::RecordTextReader
    functionSourceFile: /src/pdns/pdns/recursordist/rcpgenerator.cc
    functionUses: 0
    functionsReached:
    - std::move
    - rbegin
    - boost::trim_if
    - size
    - begin
    - empty
    - dns_isspace
    linkageType: ''
    returnType: void
    signature: void RecordTextReader::RecordTextReader(string str, ZoneName zone)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: RecordTextReader::xfr64BitInt
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:51,1
    - Dst: RecordTextException
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:53,1
    - Dst: substr
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:53,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:53,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - val
    argTypes:
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 48
    functionDepth: 0
    functionLinenumber: 48
    functionLinenumberEnd: 55
    functionName: RecordTextReader::xfr48BitInt
    functionSourceFile: /src/pdns/pdns/recursordist/rcpgenerator.cc
    functionUses: 0
    functionsReached:
    - RecordTextException
    - substr
    - std::to_string
    - RecordTextReader::xfr64BitInt
    linkageType: ''
    returnType: void
    signature: void RecordTextReader::xfr48BitInt(uint64_t &val)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: RecordTextReader::skipSpaces
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:58,1
    - Dst: length
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:61,1
    - Dst: isxdigit
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:61,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:61,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:61,1
    - Dst: substr
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:66,1
    - Dst: inet_pton
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:68,1
    - Dst: string::c_str
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:68,1
    - Dst: RecordTextException
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:69,1
    - Dst: substr
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:69,1
    - Dst: std::memcpy
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:72,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 9
    argCount: 1
    argNames:
    - ' val'
    argTypes:
    - NodeOrLocatorID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 57
    functionDepth: 0
    functionLinenumber: 57
    functionLinenumberEnd: 74
    functionName: RecordTextReader::xfrNodeOrLocatorID
    functionSourceFile: /src/pdns/pdns/recursordist/rcpgenerator.cc
    functionUses: 2
    functionsReached:
    - inet_pton
    - length
    - string::c_str
    - isxdigit
    - std::memcpy
    - RecordTextReader::skipSpaces
    - RecordTextException
    - substr
    - at
    linkageType: ''
    returnType: void
    signature: void RecordTextReader::xfrNodeOrLocatorID(NodeOrLocatorID& val)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: RecordTextReader::skipSpaces
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:78,1
    - Dst: isdigit
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:80,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:80,1
    - Dst: RecordTextException
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:81,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:81,1
    - Dst: std::stoull
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:84,1
    - Dst: substr
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:84,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - val
    argTypes:
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 76
    functionDepth: 0
    functionLinenumber: 76
    functionLinenumberEnd: 87
    functionName: RecordTextReader::xfr64BitInt
    functionSourceFile: /src/pdns/pdns/recursordist/rcpgenerator.cc
    functionUses: 3
    functionsReached:
    - isdigit
    - std::to_string
    - RecordTextReader::skipSpaces
    - RecordTextException
    - substr
    - std::stoull
    - at
    linkageType: ''
    returnType: void
    signature: void RecordTextReader::xfr64BitInt(uint64_t &val)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: RecordTextReader::skipSpaces
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:92,1
    - Dst: isdigit
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:94,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:94,1
    - Dst: RecordTextException
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:95,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:95,1
    - Dst: pdns::checked_stoi<uint32_t>
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:98,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:98,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - val
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 90
    functionDepth: 0
    functionLinenumber: 90
    functionLinenumberEnd: 101
    functionName: RecordTextReader::xfr32BitInt
    functionSourceFile: /src/pdns/pdns/recursordist/rcpgenerator.cc
    functionUses: 4
    functionsReached:
    - isdigit
    - std::to_string
    - c_str
    - RecordTextReader::skipSpaces
    - RecordTextException
    - pdns::checked_stoi<uint32_t>
    - at
    linkageType: ''
    returnType: void
    signature: void RecordTextReader::xfr32BitInt(uint32_t &val)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:106,1
    - Dst: RecordTextReader::xfr64BitInt
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:109,1
    - Dst: sscanf
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:121,1
    - Dst: ostringstream::str
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:121,1
    - Dst: RecordTextException
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:124,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:124,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:124,1
    - Dst: RecordTextException
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:131,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:131,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:131,1
    - Dst: Utility::timegm
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:137,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 17
    argCount: 1
    argNames:
    - val
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 138
      start: 103
    functionDepth: 0
    functionLinenumber: 103
    functionLinenumberEnd: 138
    functionName: RecordTextReader::xfrTime
    functionSourceFile: /src/pdns/pdns/recursordist/rcpgenerator.cc
    functionUses: 0
    functionsReached:
    - std::to_string
    - sscanf
    - memset
    - RecordTextException
    - ostringstream::str
    - Utility::timegm
    - RecordTextReader::xfr64BitInt
    linkageType: ''
    returnType: void
    signature: void RecordTextReader::xfrTime(uint32_t &val)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: RecordTextReader::skipSpaces
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:142,1
    - Dst: isdigit
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:144,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:144,1
    - Dst: RecordTextException
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:145,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:145,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:153,1
    - Dst: RecordTextException
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:155,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:155,1
    - Dst: RecordTextException
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:162,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:162,1
    - Dst: isdigit
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:164,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:164,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:167,1
    - Dst: RecordTextException
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:169,1
    - Dst: dns_isspace
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:171,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:171,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:171,1
    - Dst: RecordTextException
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:174,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:174,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:174,1
    - Dst: length
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:177,1
    - Dst: RecordTextException
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:181,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:181,1
    - Dst: RecordTextException
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:183,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:183,1
    - Dst: ntohl
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:186,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 39
    argCount: 1
    argNames:
    - val
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 187
      start: 140
    functionDepth: 0
    functionLinenumber: 140
    functionLinenumberEnd: 187
    functionName: RecordTextReader::xfrIP
    functionSourceFile: /src/pdns/pdns/recursordist/rcpgenerator.cc
    functionUses: 1
    functionsReached:
    - length
    - ntohl
    - isdigit
    - std::to_string
    - RecordTextReader::skipSpaces
    - string
    - RecordTextException
    - dns_isspace
    - at
    linkageType: ''
    returnType: void
    signature: void RecordTextReader::xfrIP(uint32_t &val)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: RecordTextReader::skipSpaces
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:194,1
    - Dst: length
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:199,1
    - Dst: isxdigit
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:199,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:199,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:199,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:199,1
    - Dst: RecordTextException
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:203,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:203,1
    - Dst: substr
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:206,1
    - Dst: inet_pton
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:208,1
    - Dst: string::c_str
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:208,1
    - Dst: RecordTextException
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:209,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:212,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 11
    argCount: 1
    argNames:
    - val
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 215
      start: 190
    functionDepth: 0
    functionLinenumber: 190
    functionLinenumberEnd: 215
    functionName: RecordTextReader::xfrIP6
    functionSourceFile: /src/pdns/pdns/recursordist/rcpgenerator.cc
    functionUses: 3
    functionsReached:
    - inet_pton
    - length
    - string::c_str
    - isxdigit
    - std::to_string
    - RecordTextReader::skipSpaces
    - RecordTextException
    - substr
    - std::string
    - at
    linkageType: ''
    returnType: void
    signature: void RecordTextReader::xfrIP6(std::string &val)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: RecordTextReader::xfrIP
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:221,1
    - Dst: makeComboAddressFromRaw
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:222,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:222,1
    - Dst: RecordTextReader::xfrIP6
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:226,1
    - Dst: makeComboAddressFromRaw
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:227,1
    - Dst: RecordTextException
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:229,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - version
    - val
    argTypes:
    - uint8_t
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 230
      start: 217
    functionDepth: 0
    functionLinenumber: 217
    functionLinenumberEnd: 230
    functionName: RecordTextReader::xfrCAWithoutPort
    functionSourceFile: /src/pdns/pdns/recursordist/rcpgenerator.cc
    functionUses: 0
    functionsReached:
    - RecordTextReader::xfrIP
    - RecordTextReader::xfrIP6
    - string
    - makeComboAddressFromRaw
    - RecordTextException
    linkageType: ''
    returnType: void
    signature: void RecordTextReader::xfrCAWithoutPort(uint8_t version, ComboAddress
      &val)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RecordTextReader::xfr16BitInt
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:235,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - val
    argTypes:
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 237
      start: 232
    functionDepth: 0
    functionLinenumber: 232
    functionLinenumberEnd: 237
    functionName: RecordTextReader::xfrCAPort
    functionSourceFile: /src/pdns/pdns/recursordist/rcpgenerator.cc
    functionUses: 0
    functionsReached:
    - RecordTextReader::xfr16BitInt
    linkageType: ''
    returnType: void
    signature: void RecordTextReader::xfrCAPort(ComboAddress &val)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 242
      start: 239
    functionDepth: 0
    functionLinenumber: 239
    functionLinenumberEnd: 242
    functionName: RecordTextReader::eof
    functionSourceFile: /src/pdns/pdns/recursordist/rcpgenerator.cc
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool RecordTextReader::eof() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: RecordTextReader::xfr32BitInt
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:248,1
    - Dst: RecordTextException
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:251,1
    - Dst: substr
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:251,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:251,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - val
    argTypes:
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 253
      start: 244
    functionDepth: 0
    functionLinenumber: 244
    functionLinenumberEnd: 253
    functionName: RecordTextReader::xfr16BitInt
    functionSourceFile: /src/pdns/pdns/recursordist/rcpgenerator.cc
    functionUses: 8
    functionsReached:
    - substr
    - RecordTextException
    - RecordTextReader::xfr32BitInt
    - std::to_string
    linkageType: ''
    returnType: void
    signature: void RecordTextReader::xfr16BitInt(uint16_t &val)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: RecordTextReader::xfr32BitInt
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:259,1
    - Dst: RecordTextException
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:262,1
    - Dst: substr
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:262,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:262,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - val
    argTypes:
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 264
      start: 255
    functionDepth: 0
    functionLinenumber: 255
    functionLinenumberEnd: 264
    functionName: RecordTextReader::xfr8BitInt
    functionSourceFile: /src/pdns/pdns/recursordist/rcpgenerator.cc
    functionUses: 4
    functionsReached:
    - substr
    - RecordTextException
    - RecordTextReader::xfr32BitInt
    - std::to_string
    linkageType: ''
    returnType: void
    signature: void RecordTextReader::xfr8BitInt(uint8_t &val)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: RecordTextReader::skipSpaces
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:269,1
    - Dst: DNSName::DNSName
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:270,1
    - Dst: dns_isspace
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:274,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:283,1
    - Dst: std::string_view::substr
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:283,1
    - Dst: DNSName::empty
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:286,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:287,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:289,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:290,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:292,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 2
    argNames:
    - ' val'
    - compress
    argTypes:
    - DNSName
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 293
      start: 267
    functionDepth: 0
    functionLinenumber: 267
    functionLinenumberEnd: 293
    functionName: RecordTextReader::xfrName
    functionSourceFile: /src/pdns/pdns/recursordist/rcpgenerator.cc
    functionUses: 3
    functionsReached:
    - std::move
    - std::string_view::substr
    - RecordTextReader::skipSpaces
    - DNSName
    - empty
    - DNSName::empty
    - DNSName::DNSName
    - dns_isspace
    linkageType: ''
    returnType: void
    signature: void RecordTextReader::xfrName(DNSName& val, [[maybe_unused]] bool
      compress)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: dns_isspace
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:297,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 12
    argCount: 2
    argNames:
    - c
    - acceptspace
    argTypes:
    - char
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 308
      start: 295
    functionDepth: 0
    functionLinenumber: 295
    functionLinenumberEnd: 308
    functionName: isbase64
    functionSourceFile: /src/pdns/pdns/recursordist/rcpgenerator.cc
    functionUses: 2
    functionsReached:
    - dns_isspace
    linkageType: ''
    returnType: bool
    signature: bool isbase64(char c, bool acceptspace)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: RecordTextReader::skipSpaces
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:312,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:314,1
    - Dst: isbase64
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:316,1
    - Dst: string::assign
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:321,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:321,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:321,1
    - Dst: boost::erase_all
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:322,1
    - Dst: clear
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:323,1
    - Dst: B64Decode
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:324,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:326,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:326,1
    - Dst: RecordTextException
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:327,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:327,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:327,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:327,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 2
    argNames:
    - ' val'
    - len
    argTypes:
    - string
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 328
      start: 310
    functionDepth: 1
    functionLinenumber: 310
    functionLinenumberEnd: 328
    functionName: RecordTextReader::xfrBlobNoSpaces
    functionSourceFile: /src/pdns/pdns/recursordist/rcpgenerator.cc
    functionUses: 1
    functionsReached:
    - string::assign
    - static_cast<size_t>
    - std::to_string
    - RecordTextReader::skipSpaces
    - B64Decode
    - size
    - RecordTextException
    - clear
    - c_str
    - boost::erase_all
    - isbase64
    linkageType: ''
    returnType: void
    signature: void RecordTextReader::xfrBlobNoSpaces(string& val, int len)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: RecordTextReader::skipSpaces
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:332,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:334,1
    - Dst: isbase64
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:336,1
    - Dst: string::assign
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:341,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:341,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:341,1
    - Dst: boost::erase_all
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:342,1
    - Dst: clear
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:343,1
    - Dst: B64Decode
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:344,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:346,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:346,1
    - Dst: RecordTextException
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:347,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:347,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:347,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:347,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 2
    argNames:
    - ' val'
    - len
    argTypes:
    - string
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 349
      start: 330
    functionDepth: 1
    functionLinenumber: 330
    functionLinenumberEnd: 349
    functionName: RecordTextReader::xfrBlob
    functionSourceFile: /src/pdns/pdns/recursordist/rcpgenerator.cc
    functionUses: 0
    functionsReached:
    - string::assign
    - static_cast<size_t>
    - std::to_string
    - RecordTextReader::skipSpaces
    - B64Decode
    - size
    - RecordTextException
    - clear
    - c_str
    - boost::erase_all
    - isbase64
    linkageType: ''
    returnType: void
    signature: void RecordTextReader::xfrBlob(string& val, int len)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: parseRFC1035CharString
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:352,1
    - Dst: substr
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:352,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - val
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 354
      start: 351
    functionDepth: 0
    functionLinenumber: 351
    functionLinenumberEnd: 354
    functionName: RecordTextReader::xfrRFC1035CharString
    functionSourceFile: /src/pdns/pdns/recursordist/rcpgenerator.cc
    functionUses: 1
    functionsReached:
    - substr
    - parseRFC1035CharString
    linkageType: ''
    returnType: void
    signature: void RecordTextReader::xfrRFC1035CharString(string &val)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: parseSVCBValueList
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:357,1
    - Dst: substr
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:357,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - val
    argTypes:
    - vector<string>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 359
      start: 356
    functionDepth: 0
    functionLinenumber: 356
    functionLinenumberEnd: 359
    functionName: RecordTextReader::xfrSVCBValueList
    functionSourceFile: /src/pdns/pdns/recursordist/rcpgenerator.cc
    functionUses: 1
    functionsReached:
    - substr
    - parseSVCBValueList
    linkageType: ''
    returnType: void
    signature: void RecordTextReader::xfrSVCBValueList(vector<string> &val)
  - BBCount: 45
    BranchProfiles: []
    Callsites:
    - Dst: RecordTextReader::skipSpaces
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:364,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:371,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:371,1
    - Dst: substr
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:378,1
    - Dst: SvcParam::keyFromString
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:382,1
    - Dst: RecordTextException
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:384,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:384,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:387,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:389,1
    - Dst: RecordTextException
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:390,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:397,1
    - Dst: RecordTextException
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:398,1
    - Dst: insert
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:400,1
    - Dst: SvcParam
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:400,1
    - Dst: RecordTextReader::xfrRFC1035CharString
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:408,1
    - Dst: string::empty
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:410,1
    - Dst: RecordTextException
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:411,1
    - Dst: string::size
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:413,1
    - Dst: RecordTextException
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:414,1
    - Dst: string::size
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:416,1
    - Dst: makeComboAddressFromRaw
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:417,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:417,1
    - Dst: string::at
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:417,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:418,1
    - Dst: RecordTextReader::xfrSVCBValueList
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:422,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:426,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:429,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:429,1
    - Dst: vector::empty
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:432,1
    - Dst: RecordTextException
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:433,1
    - Dst: SvcParam
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:436,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:436,1
    - Dst: auto::setAutoHint
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:437,1
    - Dst: insert
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:438,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:438,1
    - Dst: RecordTextException
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:441,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:441,1
    - Dst: RecordTextReader::xfrRFC1035CharString
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:449,1
    - Dst: string::length
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:451,1
    - Dst: string::at
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:452,1
    - Dst: RecordTextException
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:455,1
    - Dst: RecordTextException
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:458,1
    - Dst: string::length
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:460,1
    - Dst: RecordTextException
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:461,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:463,1
    - Dst: string::substr
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:463,1
    - Dst: RecordTextReader::xfrSVCBValueList
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:467,1
    - Dst: length
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:469,1
    - Dst: RecordTextException
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:470,1
    - Dst: vector::empty
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:474,1
    - Dst: RecordTextException
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:475,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:478,1
    - Dst: RecordTextException
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:479,1
    - Dst: insert
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:482,1
    - Dst: SvcParam
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:482,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:482,1
    - Dst: RecordTextReader::xfrRFC1035CharString
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:488,1
    - Dst: string::empty
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:489,1
    - Dst: RecordTextException
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:490,1
    - Dst: string::length
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:492,1
    - Dst: RecordTextException
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:493,1
    - Dst: string::length
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:496,1
    - Dst: string::at
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:497,1
    - Dst: string::at
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:498,1
    - Dst: std::set::insert
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:499,1
    - Dst: SvcParam::SvcParamKey
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:499,1
    - Dst: insert
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:501,1
    - Dst: SvcParam
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:501,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:501,1
    - Dst: RecordTextReader::xfrSVCBValueList
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:505,1
    - Dst: vector::empty
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:506,1
    - Dst: RecordTextException
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:507,1
    - Dst: vector::begin
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:509,1
    - Dst: vector::end
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:509,1
    - Dst: insert
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:510,1
    - Dst: SvcParam
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:510,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:510,1
    - Dst: RecordTextReader::xfrRFC1035CharString
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:517,1
    - Dst: string::empty
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:518,1
    - Dst: RecordTextException
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:519,1
    - Dst: string::length
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:521,1
    - Dst: RecordTextException
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:522,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:522,1
    - Dst: string::length
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:522,1
    - Dst: string::at
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:524,1
    - Dst: string::at
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:525,1
    - Dst: RecordTextReader::xfrRFC1035CharString
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:528,1
    - Dst: string::empty
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:529,1
    - Dst: RecordTextException
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:530,1
    - Dst: pdns::checked_stoi_into
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:533,1
    - Dst: RecordTextException
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:535,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:535,1
    - Dst: insert
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:538,1
    - Dst: SvcParam
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:538,1
    - Dst: RecordTextReader::xfrRFC1035CharString
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:544,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:546,1
    - Dst: RecordTextReader::xfrBlobNoSpaces
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:550,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:552,1
    - Dst: RecordTextException
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:553,1
    - Dst: string::empty
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:558,1
    - Dst: RecordTextException
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:559,1
    - Dst: insert
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:561,1
    - Dst: SvcParam
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:561,1
    - Dst: RecordTextReader::xfrRFC1035CharString
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:566,1
    - Dst: string::empty
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:567,1
    - Dst: RecordTextException
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:568,1
    - Dst: stringtok
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:572,1
    - Dst: vector::reserve
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:575,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:575,1
    - Dst: pdns::checked_stoi_into
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:579,1
    - Dst: RecordTextException
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:581,1
    - Dst: vector::emplace_back
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:583,1
    - Dst: insert
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:586,1
    - Dst: SvcParam
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:586,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:586,1
    - Dst: RecordTextReader::xfrRFC1035CharString
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:591,1
    - Dst: string::empty
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:592,1
    - Dst: RecordTextException
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:593,1
    - Dst: insert
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:595,1
    - Dst: SvcParam
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:595,1
    - Dst: RecordTextReader::xfrRFC1035CharString
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:600,1
    - Dst: string::empty
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:601,1
    - Dst: RecordTextException
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:604,1
    - Dst: insert
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:606,1
    - Dst: SvcParam
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:606,1
    CyclomaticComplexity: 91
    EdgeCount: 91
    ICount: 203
    argCount: 1
    argNames:
    - ' val'
    argTypes:
    - set<SvcParam>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 611
      start: 361
    functionDepth: 2
    functionLinenumber: 361
    functionLinenumberEnd: 611
    functionName: RecordTextReader::xfrSvcParamKeyVals
    functionSourceFile: /src/pdns/pdns/recursordist/rcpgenerator.cc
    functionUses: 18
    functionsReached:
    - std::to_string
    - auto::setAutoHint
    - SvcParam::SvcParamKey
    - string::at
    - string::substr
    - insert
    - vector::reserve
    - RecordTextReader::xfrSVCBValueList
    - vector::begin
    - RecordTextReader::xfrBlobNoSpaces
    - string::size
    - stringtok
    - SvcParam::keyFromString
    - string::empty
    - substr
    - std::set::insert
    - empty
    - pdns::checked_stoi_into
    - vector::clear
    - at
    - vector::push_back
    - SvcParam
    - static_cast<uint8_t>
    - vector::end
    - vector::empty
    - RecordTextException
    - RecordTextReader::xfrRFC1035CharString
    - string::length
    - ComboAddress
    - length
    - std::move
    - RecordTextReader::skipSpaces
    - what
    - makeComboAddressFromRaw
    - vector::emplace_back
    - vector::size
    linkageType: ''
    returnType: void
    signature: void RecordTextReader::xfrSvcParamKeyVals(set<SvcParam>& val)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: RecordTextException
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:622,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:622,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 8
    argCount: 1
    argNames:
    - val
    argTypes:
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 623
      start: 613
    functionDepth: 0
    functionLinenumber: 613
    functionLinenumberEnd: 623
    functionName: hextodec
    functionSourceFile: /src/pdns/pdns/recursordist/rcpgenerator.cc
    functionUses: 1
    functionsReached:
    - RecordTextException
    - std::to_string
    linkageType: ''
    returnType: uint8_t
    signature: uint8_t hextodec(uint8_t val)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: clear
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:628,1
    - Dst: std::string_view::length
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:629,1
    - Dst: reserve
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:632,1
    - Dst: std::string_view::length
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:632,1
    - Dst: isalnum
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:636,1
    - Dst: hextodec
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:640,1
    - Dst: hextodec
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:643,1
    - Dst: append
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:644,1
    - Dst: RecordTextException
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:650,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:650,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 22
    argCount: 2
    argNames:
    - chunk
    - ' out'
    argTypes:
    - std::string_view
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 652
      start: 626
    functionDepth: 1
    functionLinenumber: 626
    functionLinenumberEnd: 652
    functionName: HEXDecode
    functionSourceFile: /src/pdns/pdns/recursordist/rcpgenerator.cc
    functionUses: 1
    functionsReached:
    - std::string_view::length
    - append
    - reserve
    - RecordTextException
    - hextodec
    - isalnum
    - clear
    - std::string
    linkageType: ''
    returnType: void
    signature: void HEXDecode(std::string_view chunk, string& out)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RecordTextReader::skipSpaces
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:656,1
    - Dst: dns_isspace
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:658,1
    - Dst: HEXDecode
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:662,1
    - Dst: std::string_view
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:662,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 2
    argNames:
    - ' val'
    - keepReading
    argTypes:
    - string
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 663
      start: 654
    functionDepth: 0
    functionLinenumber: 654
    functionLinenumberEnd: 663
    functionName: RecordTextReader::xfrHexBlob
    functionSourceFile: /src/pdns/pdns/recursordist/rcpgenerator.cc
    functionUses: 4
    functionsReached:
    - std::string_view
    - HEXDecode
    - dns_isspace
    - RecordTextReader::skipSpaces
    linkageType: ''
    returnType: void
    signature: void RecordTextReader::xfrHexBlob(string& val, bool keepReading)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RecordTextReader::skipSpaces
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:667,1
    - Dst: dns_isspace
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:669,1
    - Dst: fromBase32Hex
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:673,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:673,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:673,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - ' val'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 674
      start: 665
    functionDepth: 0
    functionLinenumber: 665
    functionLinenumberEnd: 674
    functionName: RecordTextReader::xfrBase32HexBlob
    functionSourceFile: /src/pdns/pdns/recursordist/rcpgenerator.cc
    functionUses: 2
    functionsReached:
    - RecordTextReader::skipSpaces
    - string
    - c_str
    - fromBase32Hex
    - dns_isspace
    linkageType: ''
    returnType: void
    signature: void RecordTextReader::xfrBase32HexBlob(string& val)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:679,1
    - Dst: append
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:680,1
    - Dst: append
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:682,1
    - Dst: toUpper
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:682,1
    - Dst: toBase32Hex
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:682,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ' val'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 683
      start: 677
    functionDepth: 0
    functionLinenumber: 677
    functionLinenumberEnd: 683
    functionName: RecordTextWriter::xfrBase32HexBlob
    functionSourceFile: /src/pdns/pdns/recursordist/rcpgenerator.cc
    functionUses: 2
    functionsReached:
    - empty
    - append
    - toUpper
    - toBase32Hex
    linkageType: ''
    returnType: void
    signature: void RecordTextWriter::xfrBase32HexBlob(const string& val)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: clear
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:688,1
    - Dst: reserve
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:689,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:692,1
    - Dst: append
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:693,1
    - Dst: RecordTextReader::skipSpaces
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:696,1
    - Dst: append
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:701,1
    - Dst: append
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:711,1
    - Dst: RecordTextException
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:724,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:724,1
    - Dst: append
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:736,1
    - Dst: append
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:739,1
    - Dst: RecordTextException
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:743,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 45
    argCount: 2
    argNames:
    - ' val'
    - multi
    argTypes:
    - string
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 752
      start: 686
    functionDepth: 1
    functionLinenumber: 686
    functionLinenumberEnd: 752
    functionName: RecordTextReader::xfrText
    functionSourceFile: /src/pdns/pdns/recursordist/rcpgenerator.cc
    functionUses: 1
    functionsReached:
    - std::to_string
    - RecordTextReader::skipSpaces
    - append
    - reserve
    - empty
    - RecordTextException
    - clear
    linkageType: ''
    returnType: void
    signature: void RecordTextReader::xfrText(string& val, bool multi, bool /* lenField
      */)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: clear
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:756,1
    - Dst: reserve
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:757,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:759,1
    - Dst: append
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:760,1
    - Dst: RecordTextReader::skipSpaces
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:762,1
    - Dst: append
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:763,1
    - Dst: append
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:765,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - ' val'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 767
      start: 754
    functionDepth: 1
    functionLinenumber: 754
    functionLinenumberEnd: 767
    functionName: RecordTextReader::xfrUnquotedText
    functionSourceFile: /src/pdns/pdns/recursordist/rcpgenerator.cc
    functionUses: 0
    functionsReached:
    - RecordTextReader::skipSpaces
    - append
    - reserve
    - empty
    - clear
    linkageType: ''
    returnType: void
    signature: void RecordTextReader::xfrUnquotedText(string& val, bool /* lenField
      */)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RecordTextReader::skipSpaces
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:771,1
    - Dst: dns_isspace
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:773,1
    - Dst: string::assign
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:778,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:778,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:778,1
    - Dst: DNSRecordContent::TypeToNumber
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:780,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - ' val'
    argTypes:
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 781
      start: 769
    functionDepth: 1
    functionLinenumber: 769
    functionLinenumberEnd: 781
    functionName: RecordTextReader::xfrType
    functionSourceFile: /src/pdns/pdns/recursordist/rcpgenerator.cc
    functionUses: 6
    functionsReached:
    - string::assign
    - RecordTextReader::skipSpaces
    - c_str
    - DNSRecordContent::TypeToNumber
    - dns_isspace
    linkageType: ''
    returnType: void
    signature: void RecordTextReader::xfrType(uint16_t& val)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:786,1
    - Dst: dns_isspace
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:787,1
    - Dst: RecordTextException
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:790,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 791
      start: 784
    functionDepth: 0
    functionLinenumber: 784
    functionLinenumberEnd: 791
    functionName: RecordTextReader::skipSpaces
    functionSourceFile: /src/pdns/pdns/recursordist/rcpgenerator.cc
    functionUses: 28
    functionsReached:
    - c_str
    - RecordTextException
    - dns_isspace
    linkageType: ''
    returnType: void
    signature: void RecordTextReader::skipSpaces()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: clear
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:796,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ' str'
    - noDot
    argTypes:
    - string
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 798
      start: 794
    functionDepth: 1
    functionLinenumber: 794
    functionLinenumberEnd: 798
    functionName: RecordTextWriter::RecordTextWriter
    functionSourceFile: /src/pdns/pdns/recursordist/rcpgenerator.cc
    functionUses: 0
    functionsReached:
    - clear
    linkageType: ''
    returnType: void
    signature: void RecordTextWriter::RecordTextWriter(string& str, bool noDot)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:802,1
    - Dst: append
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:803,1
    - Dst: snprintf
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:809,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 1
    argNames:
    - ' val'
    argTypes:
    - NodeOrLocatorID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 816
      start: 800
    functionDepth: 0
    functionLinenumber: 800
    functionLinenumberEnd: 816
    functionName: RecordTextWriter::xfrNodeOrLocatorID
    functionSourceFile: /src/pdns/pdns/recursordist/rcpgenerator.cc
    functionUses: 2
    functionsReached:
    - empty
    - append
    - snprintf
    linkageType: ''
    returnType: void
    signature: void RecordTextWriter::xfrNodeOrLocatorID(const NodeOrLocatorID& val)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:820,1
    - Dst: append
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:821,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:822,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ' val'
    argTypes:
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 823
      start: 818
    functionDepth: 0
    functionLinenumber: 818
    functionLinenumberEnd: 823
    functionName: RecordTextWriter::xfr48BitInt
    functionSourceFile: /src/pdns/pdns/recursordist/rcpgenerator.cc
    functionUses: 0
    functionsReached:
    - empty
    - append
    - std::to_string
    linkageType: ''
    returnType: void
    signature: void RecordTextWriter::xfr48BitInt(const uint64_t& val)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:828,1
    - Dst: append
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:829,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:830,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ' val'
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 831
      start: 826
    functionDepth: 0
    functionLinenumber: 826
    functionLinenumberEnd: 831
    functionName: RecordTextWriter::xfr32BitInt
    functionSourceFile: /src/pdns/pdns/recursordist/rcpgenerator.cc
    functionUses: 4
    functionsReached:
    - empty
    - append
    - std::to_string
    linkageType: ''
    returnType: void
    signature: void RecordTextWriter::xfr32BitInt(const uint32_t& val)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:835,1
    - Dst: append
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:836,1
    - Dst: DNSRecordContent::NumberToType
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:837,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ' val'
    argTypes:
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 838
      start: 833
    functionDepth: 0
    functionLinenumber: 833
    functionLinenumberEnd: 838
    functionName: RecordTextWriter::xfrType
    functionSourceFile: /src/pdns/pdns/recursordist/rcpgenerator.cc
    functionUses: 0
    functionsReached:
    - empty
    - append
    - DNSRecordContent::NumberToType
    linkageType: ''
    returnType: void
    signature: void RecordTextWriter::xfrType(const uint16_t& val)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:843,1
    - Dst: append
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:844,1
    - Dst: memcpy
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:850,1
    - Dst: append
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:870,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 22
    argCount: 1
    argNames:
    - ' val'
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 871
      start: 841
    functionDepth: 0
    functionLinenumber: 841
    functionLinenumberEnd: 871
    functionName: RecordTextWriter::xfrIP
    functionSourceFile: /src/pdns/pdns/recursordist/rcpgenerator.cc
    functionUses: 0
    functionsReached:
    - empty
    - memcpy
    - append
    linkageType: ''
    returnType: void
    signature: void RecordTextWriter::xfrIP(const uint32_t& val)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:878,1
    - Dst: append
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:879,1
    - Dst: copy
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:881,1
    - Dst: inet_ntop
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:883,1
    - Dst: RecordTextException
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:884,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:886,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 1
    argNames:
    - ' val'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 887
      start: 873
    functionDepth: 0
    functionLinenumber: 873
    functionLinenumberEnd: 887
    functionName: RecordTextWriter::xfrIP6
    functionSourceFile: /src/pdns/pdns/recursordist/rcpgenerator.cc
    functionUses: 0
    functionsReached:
    - append
    - copy
    - inet_ntop
    - RecordTextException
    - empty
    - std::string
    linkageType: ''
    returnType: void
    signature: void RecordTextWriter::xfrIP6(const std::string& val)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:891,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:893,1
    - Dst: append
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:894,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - val
    argTypes:
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 897
      start: 889
    functionDepth: 0
    functionLinenumber: 889
    functionLinenumberEnd: 897
    functionName: RecordTextWriter::xfrCAWithoutPort
    functionSourceFile: /src/pdns/pdns/recursordist/rcpgenerator.cc
    functionUses: 0
    functionsReached:
    - empty
    - append
    - ComboAddress::toString
    linkageType: ''
    returnType: void
    signature: void RecordTextWriter::xfrCAWithoutPort(uint8_t /* version */, ComboAddress
      &val)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RecordTextWriter::xfr16BitInt
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:901,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - val
    argTypes:
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 902
      start: 899
    functionDepth: 0
    functionLinenumber: 899
    functionLinenumberEnd: 902
    functionName: RecordTextWriter::xfrCAPort
    functionSourceFile: /src/pdns/pdns/recursordist/rcpgenerator.cc
    functionUses: 0
    functionsReached:
    - RecordTextWriter::xfr16BitInt
    linkageType: ''
    returnType: void
    signature: void RecordTextWriter::xfrCAPort(ComboAddress &val)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:906,1
    - Dst: append
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:907,1
    - Dst: gmtime_r
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:911,1
    - Dst: sqlstr
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:914,1
    - Dst: boost::format
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:914,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ' val'
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 915
      start: 904
    functionDepth: 1
    functionLinenumber: 904
    functionLinenumberEnd: 915
    functionName: RecordTextWriter::xfrTime
    functionSourceFile: /src/pdns/pdns/recursordist/rcpgenerator.cc
    functionUses: 0
    functionsReached:
    - gmtime_r
    - append
    - sqlstr
    - boost::format
    - empty
    linkageType: ''
    returnType: void
    signature: void RecordTextWriter::xfrTime(const uint32_t& val)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RecordTextWriter::xfr32BitInt
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:920,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' val'
    argTypes:
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 921
      start: 918
    functionDepth: 0
    functionLinenumber: 918
    functionLinenumberEnd: 921
    functionName: RecordTextWriter::xfr16BitInt
    functionSourceFile: /src/pdns/pdns/recursordist/rcpgenerator.cc
    functionUses: 9
    functionsReached:
    - RecordTextWriter::xfr32BitInt
    linkageType: ''
    returnType: void
    signature: void RecordTextWriter::xfr16BitInt(const uint16_t& val)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RecordTextWriter::xfr32BitInt
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:925,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' val'
    argTypes:
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 926
      start: 923
    functionDepth: 0
    functionLinenumber: 923
    functionLinenumberEnd: 926
    functionName: RecordTextWriter::xfr8BitInt
    functionSourceFile: /src/pdns/pdns/recursordist/rcpgenerator.cc
    functionUses: 4
    functionsReached:
    - RecordTextWriter::xfr32BitInt
    linkageType: ''
    returnType: void
    signature: void RecordTextWriter::xfr8BitInt(const uint8_t& val)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:931,1
    - Dst: append
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:932,1
    - Dst: toStringRootDot
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:935,1
    - Dst: toString
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:939,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - ' val'
    argTypes:
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 941
      start: 929
    functionDepth: 0
    functionLinenumber: 929
    functionLinenumberEnd: 941
    functionName: RecordTextWriter::xfrName
    functionSourceFile: /src/pdns/pdns/recursordist/rcpgenerator.cc
    functionUses: 3
    functionsReached:
    - empty
    - append
    - toString
    - toStringRootDot
    linkageType: ''
    returnType: void
    signature: void RecordTextWriter::xfrName(const DNSName& val, bool /* unused */)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RecordTextWriter::xfrBlob
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:945,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' val'
    - size
    argTypes:
    - string
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 946
      start: 943
    functionDepth: 0
    functionLinenumber: 943
    functionLinenumberEnd: 946
    functionName: RecordTextWriter::xfrBlobNoSpaces
    functionSourceFile: /src/pdns/pdns/recursordist/rcpgenerator.cc
    functionUses: 1
    functionsReached:
    - RecordTextWriter::xfrBlob
    linkageType: ''
    returnType: void
    signature: void RecordTextWriter::xfrBlobNoSpaces(const string& val, int size)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:950,1
    - Dst: append
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:951,1
    - Dst: Base64Encode
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:953,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ' val'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 954
      start: 948
    functionDepth: 0
    functionLinenumber: 948
    functionLinenumberEnd: 954
    functionName: RecordTextWriter::xfrBlob
    functionSourceFile: /src/pdns/pdns/recursordist/rcpgenerator.cc
    functionUses: 2
    functionsReached:
    - empty
    - append
    - Base64Encode
    linkageType: ''
    returnType: void
    signature: void RecordTextWriter::xfrBlob(const string& val, int)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:958,1
    - Dst: append
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:959,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:961,1
    - Dst: append
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:962,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:966,1
    - Dst: snprintf
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:969,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - ' val'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 972
      start: 956
    functionDepth: 0
    functionLinenumber: 956
    functionLinenumberEnd: 972
    functionName: RecordTextWriter::xfrHexBlob
    functionSourceFile: /src/pdns/pdns/recursordist/rcpgenerator.cc
    functionUses: 4
    functionsReached:
    - empty
    - append
    - snprintf
    - size
    linkageType: ''
    returnType: void
    signature: void RecordTextWriter::xfrHexBlob(const string& val, bool)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: vector::reserve
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:977,1
    - Dst: vector<string>::size
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:977,1
    - Dst: find_first_of
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:979,1
    - Dst: txtEscape
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:982,1
    - Dst: string::reserve
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:984,1
    - Dst: string::size
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:984,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:996,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:996,1
    - Dst: append
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:999,1
    - Dst: append
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:1001,1
    - Dst: boost::join
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:1001,1
    - Dst: append
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:1003,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 25
    argCount: 1
    argNames:
    - val
    argTypes:
    - vector<string>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1005
      start: 974
    functionDepth: 0
    functionLinenumber: 974
    functionLinenumberEnd: 1005
    functionName: RecordTextWriter::xfrSVCBValueList
    functionSourceFile: /src/pdns/pdns/recursordist/rcpgenerator.cc
    functionUses: 1
    functionsReached:
    - std::move
    - string::reserve
    - string::size
    - vector::push_back
    - append
    - vector<string>::size
    - txtEscape
    - find_first_of
    - boost::join
    - vector::reserve
    linkageType: ''
    returnType: void
    signature: void RecordTextWriter::xfrSVCBValueList(const vector<string> &val)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:1009,1
    - Dst: append
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:1010,1
    - Dst: append
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:1012,1
    - Dst: SvcParam::keyToString
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:1012,1
    - Dst: getKey
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:1012,1
    - Dst: getKey
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:1013,1
    - Dst: getKey
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:1013,1
    - Dst: append
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:1014,1
    - Dst: getKey
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:1017,1
    - Dst: getAutoHint
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:1024,1
    - Dst: append
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:1025,1
    - Dst: append
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:1028,1
    - Dst: caContainerToString
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:1028,1
    - Dst: getIPHints
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:1028,1
    - Dst: RecordTextWriter::xfrSVCBValueList
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:1031,1
    - Dst: getALPN
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:1031,1
    - Dst: getMandatory
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:1036,1
    - Dst: append
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:1038,1
    - Dst: append
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:1039,1
    - Dst: SvcParam::keyToString
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:1039,1
    - Dst: clear
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:1046,1
    - Dst: RecordTextWriter::xfr16BitInt
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:1047,1
    - Dst: getPort
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:1047,1
    - Dst: clear
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:1053,1
    - Dst: RecordTextWriter::xfrBlobNoSpaces
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:1054,1
    - Dst: getECH
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:1054,1
    - Dst: clear
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:1063,1
    - Dst: getTLSSupportedGroups
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:1065,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:1069,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:1072,1
    - Dst: clear
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:1078,1
    - Dst: RecordTextWriter::xfrText
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:1079,1
    - Dst: getValue
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:1079,1
    - Dst: txtEscape
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:1080,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 62
    argCount: 1
    argNames:
    - ' val'
    argTypes:
    - set<SvcParam>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1084
      start: 1007
    functionDepth: 1
    functionLinenumber: 1007
    functionLinenumberEnd: 1084
    functionName: RecordTextWriter::xfrSvcParamKeyVals
    functionSourceFile: /src/pdns/pdns/recursordist/rcpgenerator.cc
    functionUses: 20
    functionsReached:
    - RecordTextWriter::xfrBlobNoSpaces
    - std::to_string
    - getALPN
    - caContainerToString
    - RecordTextWriter::xfrSVCBValueList
    - getValue
    - getMandatory
    - getPort
    - RecordTextWriter::xfrText
    - append
    - txtEscape
    - clear
    - empty
    - getTLSSupportedGroups
    - getAutoHint
    - std::move
    - getIPHints
    - getKey
    - SvcParam::keyToString
    - getECH
    - RecordTextWriter::xfr16BitInt
    linkageType: ''
    returnType: void
    signature: void RecordTextWriter::xfrSvcParamKeyVals(const set<SvcParam>& val)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:1088,1
    - Dst: append
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:1089,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:1091,1
    - Dst: append
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:1092,1
    - Dst: append
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:1095,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - ' val'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1097
      start: 1086
    functionDepth: 0
    functionLinenumber: 1086
    functionLinenumberEnd: 1097
    functionName: RecordTextWriter::xfrText
    functionSourceFile: /src/pdns/pdns/recursordist/rcpgenerator.cc
    functionUses: 3
    functionsReached:
    - empty
    - append
    linkageType: ''
    returnType: void
    signature: void RecordTextWriter::xfrText(const string& val, bool /* multi */,
      bool /* lenField */)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:1101,1
    - Dst: append
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:1102,1
    - Dst: append
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:1103,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ' val'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1104
      start: 1099
    functionDepth: 0
    functionLinenumber: 1099
    functionLinenumberEnd: 1104
    functionName: RecordTextWriter::xfrUnquotedText
    functionSourceFile: /src/pdns/pdns/recursordist/rcpgenerator.cc
    functionUses: 0
    functionsReached:
    - empty
    - append
    linkageType: ''
    returnType: void
    signature: void RecordTextWriter::xfrUnquotedText(const string& val, bool /* lenField
      */)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RecordTextReader::xfrInt
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:1117,1
    - Dst: RecordTextReader::xfrInt
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:1118,1
    - Dst: RecordTextReader::xfrText
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:1119,1
    - Dst: RecordTextReader::xfrText
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:1120,1
    - Dst: RecordTextReader::xfrText
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:1121,1
    - Dst: RecordTextReader::xfrName
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:1122,1
    - Dst: RecordTextWriter::xfrInt
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:1130,1
    - Dst: RecordTextWriter::xfrInt
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:1131,1
    - Dst: RecordTextWriter::xfrText
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:1132,1
    - Dst: RecordTextWriter::xfrText
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:1133,1
    - Dst: RecordTextWriter::xfrText
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:1134,1
    - Dst: RecordTextWriter::xfrName
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:1135,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/rcpgenerator.cc:1142,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 19
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1143
      start: 1108
    functionDepth: 0
    functionLinenumber: 1108
    functionLinenumberEnd: 1143
    functionName: main
    functionSourceFile: /src/pdns/pdns/recursordist/rcpgenerator.cc
    functionUses: 63
    functionsReached:
    - RecordTextWriter::xfrText
    - RecordTextReader::xfrName
    - RecordTextWriter::xfrInt
    - what
    - RecordTextReader::xfrInt
    - RecordTextReader::xfrText
    - RecordTextWriter::xfrName
    linkageType: ''
    returnType: int
    signature: int main(int argc, char**argv)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:20,1
    - Dst: setDNSSECValidation
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:22,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:24,1
    - Dst: getCopy
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:29,1
    - Dst: auto::dsAnchors::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:30,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:31,1
    - Dst: setState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:32,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:36,1
    - Dst: genericDSAndDNSKEYHandler
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:40,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:44,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:45,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:45,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:46,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:46,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:47,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:48,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:48,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:52,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:53,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:54,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:54,1
    - Dst: std::unique_ptr::setDNSSECValidationRequested
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:64,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:65,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:65,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:66,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:67,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:67,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:68,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:68,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:70,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:72,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:74,1
    - Dst: std::unique_ptr::setDNSSECValidationRequested
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:76,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:77,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:77,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:78,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:79,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:79,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:80,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:80,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:82,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:84,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 45
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 11
    functionDepth: 4
    functionLinenumber: 11
    functionLinenumberEnd: 85
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc9.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - genericDSAndDNSKEYHandler
    - primeHints
    - setDNSSECValidation
    - DNSName::toString
    - std::unique_ptr::beginResolve
    - setState
    - QType
    - generateKeyMaterial
    - addRecordToLW
    - auto::dsAnchors::clear
    - addRRSIG
    - vector::clear
    - BOOST_REQUIRE_EQUAL
    - std::unique_ptr::setAsyncCallback
    - DNSName
    - initSR
    - std::unique_ptr::getValidationState
    - std::unique_ptr::setDNSSECValidationRequested
    - BOOST_CHECK
    - BOOST_CHECK_EQUAL
    - getCopy
    - vector::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_dnssec_validation_from_cname_cache_secure)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:96,1
    - Dst: setDNSSECValidation
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:98,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:100,1
    - Dst: getCopy
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:105,1
    - Dst: auto::dsAnchors::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:106,1
    - Dst: setState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:107,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:111,1
    - Dst: genericDSAndDNSKEYHandler
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:115,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:119,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:120,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:120,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:121,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:125,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:126,1
    - Dst: std::unique_ptr::setDNSSECValidationRequested
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:136,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:137,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:137,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:138,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:139,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:139,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:140,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:140,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:142,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:144,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:146,1
    - Dst: std::unique_ptr::setDNSSECValidationRequested
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:148,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:149,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:149,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:150,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:151,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:151,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:152,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:152,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:154,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:156,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 41
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 157
      start: 87
    functionDepth: 4
    functionLinenumber: 87
    functionLinenumberEnd: 157
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc9.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - genericDSAndDNSKEYHandler
    - primeHints
    - setDNSSECValidation
    - DNSName::toString
    - std::unique_ptr::beginResolve
    - setState
    - QType
    - addRecordToLW
    - auto::dsAnchors::clear
    - vector::size
    - vector::clear
    - BOOST_REQUIRE_EQUAL
    - std::unique_ptr::setAsyncCallback
    - initSR
    - std::unique_ptr::getValidationState
    - std::unique_ptr::setDNSSECValidationRequested
    - BOOST_CHECK_EQUAL
    - getCopy
    - BOOST_CHECK
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_dnssec_validation_from_cname_cache_insecure)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:168,1
    - Dst: setDNSSECValidation
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:170,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:172,1
    - Dst: getCopy
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:177,1
    - Dst: auto::dsAnchors::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:178,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:179,1
    - Dst: setState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:180,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:184,1
    - Dst: genericDSAndDNSKEYHandler
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:188,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:192,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:193,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:193,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:194,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:199,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:200,1
    - Dst: std::unique_ptr::setDNSSECValidationRequested
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:214,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:215,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:215,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:216,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:217,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:217,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:218,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:218,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:220,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:221,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:223,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:225,1
    - Dst: std::unique_ptr::setDNSSECValidationRequested
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:227,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:228,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:228,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:229,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:230,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:230,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:231,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:231,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:235,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:236,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:238,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:240,1
    - Dst: std::unique_ptr::setDNSSECValidationRequested
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:243,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:244,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:244,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:245,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:246,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:246,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:247,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:247,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:249,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:250,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:252,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 56
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 253
      start: 159
    functionDepth: 4
    functionLinenumber: 159
    functionLinenumberEnd: 253
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc9.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - genericDSAndDNSKEYHandler
    - primeHints
    - setDNSSECValidation
    - DNSName::toString
    - std::unique_ptr::beginResolve
    - setState
    - QType
    - generateKeyMaterial
    - addRecordToLW
    - auto::dsAnchors::clear
    - vector::clear
    - BOOST_REQUIRE_EQUAL
    - std::unique_ptr::setAsyncCallback
    - initSR
    - std::unique_ptr::getValidationState
    - std::unique_ptr::setDNSSECValidationRequested
    - BOOST_CHECK
    - BOOST_CHECK_EQUAL
    - getCopy
    - vector::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_dnssec_validation_from_cname_cache_bogus)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:263,1
    - Dst: setDNSSECValidation
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:265,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:267,1
    - Dst: getCopy
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:272,1
    - Dst: auto::dsAnchors::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:273,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:274,1
    - Dst: setState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:275,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:279,1
    - Dst: DNSName::chopOff
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:286,1
    - Dst: genericDSAndDNSKEYHandler
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:287,1
    - Dst: genericDSAndDNSKEYHandler
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:289,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:293,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:294,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:295,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:295,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:296,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:301,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:302,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:303,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:303,1
    - Dst: std::unique_ptr::setDNSSECValidationRequested
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:313,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:314,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:314,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:315,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:316,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:316,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:317,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:317,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:319,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:321,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:323,1
    - Dst: std::unique_ptr::setDNSSECValidationRequested
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:326,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:327,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:327,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:328,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:329,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:329,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:330,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:330,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:332,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:334,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 48
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 335
      start: 255
    functionDepth: 4
    functionLinenumber: 255
    functionLinenumberEnd: 335
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc9.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - genericDSAndDNSKEYHandler
    - primeHints
    - setDNSSECValidation
    - std::unique_ptr::beginResolve
    - setState
    - DNSName::chopOff
    - QType
    - generateKeyMaterial
    - addRecordToLW
    - auto::dsAnchors::clear
    - addRRSIG
    - vector::clear
    - std::unique_ptr::setAsyncCallback
    - DNSName
    - initSR
    - std::unique_ptr::getValidationState
    - std::unique_ptr::setDNSSECValidationRequested
    - BOOST_CHECK
    - BOOST_CHECK_EQUAL
    - getCopy
    - vector::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_dnssec_validation_additional_without_rrsig)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:346,1
    - Dst: setDNSSECValidation
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:348,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:350,1
    - Dst: getCopy
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:354,1
    - Dst: auto::dsAnchors::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:355,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:356,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:357,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:357,1
    - Dst: setState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:358,1
    - Dst: std::unique_ptr::getNow
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:361,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:363,1
    - Dst: DNSName::chopOff
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:367,1
    - Dst: genericDSAndDNSKEYHandler
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:370,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:373,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:374,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:375,1
    - Dst: addNSECRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:376,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:376,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:377,1
    - Dst: std::unique_ptr::setDNSSECValidationRequested
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:386,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:387,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:387,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:388,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:389,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:389,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:390,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:390,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:391,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:394,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:394,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:395,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:395,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:395,1
    - Dst: std::unique_ptr::getNow
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:395,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:396,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:397,1
    - Dst: NegCache::NegCacheEntry::authoritySOA::records::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:397,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:398,1
    - Dst: NegCache::NegCacheEntry::authoritySOA::signatures::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:398,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:399,1
    - Dst: NegCache::NegCacheEntry::DNSSECRecords::records::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:399,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:400,1
    - Dst: NegCache::NegCacheEntry::DNSSECRecords::signatures::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:400,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:402,1
    - Dst: std::unique_ptr::setDNSSECValidationRequested
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:404,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:405,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:405,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:406,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:407,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:407,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:408,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:408,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:409,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:410,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:410,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:411,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:411,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:411,1
    - Dst: std::unique_ptr::getNow
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:411,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:412,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:413,1
    - Dst: NegCache::NegCacheEntry::authoritySOA::records::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:413,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:414,1
    - Dst: NegCache::NegCacheEntry::authoritySOA::signatures::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:414,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:415,1
    - Dst: NegCache::NegCacheEntry::DNSSECRecords::records::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:415,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:416,1
    - Dst: NegCache::NegCacheEntry::DNSSECRecords::signatures::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:416,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 49
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 417
      start: 337
    functionDepth: 4
    functionLinenumber: 337
    functionLinenumberEnd: 417
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc9.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - genericDSAndDNSKEYHandler
    - primeHints
    - NegCache::NegCacheEntry::authoritySOA::records::size
    - setDNSSECValidation
    - std::unique_ptr::beginResolve
    - setState
    - DNSName::chopOff
    - QType
    - generateKeyMaterial
    - addRecordToLW
    - size
    - auto::dsAnchors::clear
    - addRRSIG
    - addNSECRecordToLW
    - vector::clear
    - BOOST_REQUIRE_EQUAL
    - NegCache::NegCacheEntry::authoritySOA::signatures::size
    - std::unique_ptr::setAsyncCallback
    - DNSName
    - initSR
    - std::unique_ptr::getNow
    - std::unique_ptr::getValidationState
    - get
    - NegCache::NegCacheEntry::DNSSECRecords::signatures::size
    - std::unique_ptr::setDNSSECValidationRequested
    - BOOST_CHECK_EQUAL
    - getCopy
    - NegCache::NegCacheEntry::DNSSECRecords::records::size
    - vector::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_dnssec_validation_from_negcache_secure)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:432,1
    - Dst: setDNSSECValidation
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:434,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:436,1
    - Dst: getCopy
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:440,1
    - Dst: auto::dsAnchors::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:441,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:442,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:443,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:443,1
    - Dst: setState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:444,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:448,1
    - Dst: genericDSAndDNSKEYHandler
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:454,1
    - Dst: genericDSAndDNSKEYHandler
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:456,1
    - Dst: std::unique_ptr::setDNSSECValidationRequested
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:464,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:465,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:465,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:466,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:467,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:467,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:468,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:468,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:469,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:471,1
    - Dst: std::unique_ptr::setDNSSECValidationRequested
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:473,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:474,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:474,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:475,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:476,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:476,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:477,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:477,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:478,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 30
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 479
      start: 419
    functionDepth: 4
    functionLinenumber: 419
    functionLinenumberEnd: 479
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc9.cc
    functionUses: 0
    functionsReached:
    - genericDSAndDNSKEYHandler
    - setState
    - std::unique_ptr::setAsyncCallback
    - vector::clear
    - primeHints
    - QType
    - generateKeyMaterial
    - DNSName
    - initSR
    - BOOST_CHECK_EQUAL
    - setDNSSECValidation
    - getCopy
    - auto::dsAnchors::clear
    - std::unique_ptr::getValidationState
    - std::unique_ptr::beginResolve
    - vector::size
    - std::unique_ptr::setDNSSECValidationRequested
    - BOOST_REQUIRE_EQUAL
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_dnssec_validation_from_negcache_secure_ds)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:490,1
    - Dst: setDNSSECValidation
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:492,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:494,1
    - Dst: getCopy
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:498,1
    - Dst: auto::dsAnchors::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:499,1
    - Dst: setState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:500,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:504,1
    - Dst: DNSName::chopOff
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:508,1
    - Dst: genericDSAndDNSKEYHandler
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:511,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:514,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:515,1
    - Dst: std::unique_ptr::setDNSSECValidationRequested
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:524,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:525,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:525,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:526,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:527,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:527,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:528,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:528,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:529,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:532,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:532,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:533,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:533,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:533,1
    - Dst: std::unique_ptr::getNow
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:533,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:534,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:535,1
    - Dst: NegCache::NegCacheEntry::authoritySOA::records::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:535,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:536,1
    - Dst: NegCache::NegCacheEntry::authoritySOA::signatures::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:536,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:537,1
    - Dst: NegCache::NegCacheEntry::DNSSECRecords::records::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:537,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:538,1
    - Dst: NegCache::NegCacheEntry::DNSSECRecords::signatures::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:538,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:540,1
    - Dst: std::unique_ptr::setDNSSECValidationRequested
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:542,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:543,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:543,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:544,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:545,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:545,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:546,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:546,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:547,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:548,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:548,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:548,1
    - Dst: std::unique_ptr::getNow
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:548,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:549,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:550,1
    - Dst: NegCache::NegCacheEntry::authoritySOA::records::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:550,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:551,1
    - Dst: NegCache::NegCacheEntry::authoritySOA::signatures::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:551,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:552,1
    - Dst: NegCache::NegCacheEntry::DNSSECRecords::records::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:552,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:553,1
    - Dst: NegCache::NegCacheEntry::DNSSECRecords::signatures::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:553,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 43
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 554
      start: 481
    functionDepth: 4
    functionLinenumber: 481
    functionLinenumberEnd: 554
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc9.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - genericDSAndDNSKEYHandler
    - primeHints
    - NegCache::NegCacheEntry::authoritySOA::records::size
    - setDNSSECValidation
    - std::unique_ptr::beginResolve
    - setState
    - DNSName::chopOff
    - QType
    - addRecordToLW
    - size
    - auto::dsAnchors::clear
    - vector::clear
    - BOOST_REQUIRE_EQUAL
    - NegCache::NegCacheEntry::authoritySOA::signatures::size
    - std::unique_ptr::setAsyncCallback
    - std::unique_ptr::getNow
    - initSR
    - std::unique_ptr::getValidationState
    - get
    - NegCache::NegCacheEntry::DNSSECRecords::signatures::size
    - std::unique_ptr::setDNSSECValidationRequested
    - BOOST_CHECK_EQUAL
    - getCopy
    - NegCache::NegCacheEntry::DNSSECRecords::records::size
    - vector::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_dnssec_validation_from_negcache_insecure)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:565,1
    - Dst: setDNSSECValidation
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:567,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:569,1
    - Dst: getCopy
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:573,1
    - Dst: auto::dsAnchors::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:574,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:575,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:576,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:576,1
    - Dst: setState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:577,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:581,1
    - Dst: DNSName::chopOff
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:585,1
    - Dst: genericDSAndDNSKEYHandler
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:588,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:591,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:592,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:593,1
    - Dst: std::unique_ptr::getNow
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:603,1
    - Dst: std::unique_ptr::setDNSSECValidationRequested
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:607,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:608,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:608,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:609,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:610,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:610,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:611,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:611,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:614,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:617,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:619,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:619,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:620,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:620,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:620,1
    - Dst: std::unique_ptr::getNow
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:620,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:621,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:622,1
    - Dst: NegCache::NegCacheEntry::authoritySOA::records::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:622,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:623,1
    - Dst: NegCache::NegCacheEntry::authoritySOA::signatures::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:623,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:624,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:625,1
    - Dst: NegCache::NegCacheEntry::DNSSECRecords::records::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:625,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:626,1
    - Dst: NegCache::NegCacheEntry::DNSSECRecords::signatures::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:626,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:628,1
    - Dst: std::unique_ptr::setDNSSECValidationRequested
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:630,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:631,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:631,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:632,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:633,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:633,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:634,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:634,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:636,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:638,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:639,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:639,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:639,1
    - Dst: std::unique_ptr::getNow
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:639,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:640,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:641,1
    - Dst: NegCache::NegCacheEntry::authoritySOA::records::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:641,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:642,1
    - Dst: NegCache::NegCacheEntry::authoritySOA::signatures::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:642,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:643,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:644,1
    - Dst: NegCache::NegCacheEntry::DNSSECRecords::records::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:644,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:645,1
    - Dst: NegCache::NegCacheEntry::DNSSECRecords::signatures::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:645,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:647,1
    - Dst: std::unique_ptr::setDNSSECValidationRequested
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:650,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:651,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:651,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:652,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:653,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:653,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:654,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:654,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:656,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:658,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:659,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:659,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:659,1
    - Dst: std::unique_ptr::getNow
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:659,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:660,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:661,1
    - Dst: NegCache::NegCacheEntry::authoritySOA::records::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:661,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:662,1
    - Dst: NegCache::NegCacheEntry::authoritySOA::signatures::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:662,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:663,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:664,1
    - Dst: NegCache::NegCacheEntry::DNSSECRecords::records::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:664,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:665,1
    - Dst: NegCache::NegCacheEntry::DNSSECRecords::signatures::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:665,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 72
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 666
      start: 556
    functionDepth: 4
    functionLinenumber: 556
    functionLinenumberEnd: 666
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc9.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - genericDSAndDNSKEYHandler
    - primeHints
    - NegCache::NegCacheEntry::authoritySOA::records::size
    - setDNSSECValidation
    - std::unique_ptr::beginResolve
    - setState
    - DNSName::chopOff
    - QType
    - generateKeyMaterial
    - addRecordToLW
    - size
    - auto::dsAnchors::clear
    - addRRSIG
    - vector::clear
    - BOOST_REQUIRE_EQUAL
    - NegCache::NegCacheEntry::authoritySOA::signatures::size
    - std::unique_ptr::setAsyncCallback
    - DNSName
    - initSR
    - std::unique_ptr::getNow
    - std::unique_ptr::getValidationState
    - get
    - NegCache::NegCacheEntry::DNSSECRecords::signatures::size
    - std::unique_ptr::setDNSSECValidationRequested
    - BOOST_CHECK_EQUAL
    - getCopy
    - NegCache::NegCacheEntry::DNSSECRecords::records::size
    - vector::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_dnssec_validation_from_negcache_bogus)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:672,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:674,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:681,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:682,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:684,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:686,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:687,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:688,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:692,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:693,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:694,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:698,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:700,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:701,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:701,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:705,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:707,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:708,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:716,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:716,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:718,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:720,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:720,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:721,1
    - Dst: getContent
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:721,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:721,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:723,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:723,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:724,1
    - Dst: toString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:724,1
    - Dst: DNSName::makeLowerCase
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:724,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:725,1
    - Dst: toString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:725,1
    - Dst: DNSName::makeLowerCase
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:725,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:726,1
    - Dst: toString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:726,1
    - Dst: DNSName::makeLowerCase
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:726,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:727,1
    - Dst: toString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:727,1
    - Dst: DNSName::makeLowerCase
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:727,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 45
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 730
      start: 668
    functionDepth: 3
    functionLinenumber: 668
    functionLinenumberEnd: 730
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc9.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - std::unique_ptr::setAsyncCallback
    - vector::push_back
    - toString
    - primeHints
    - QType
    - addRecordToLW
    - BOOST_CHECK_EQUAL
    - initSR
    - getContent
    - DNSName::toString
    - std::unique_ptr::beginResolve
    - DNSName::makeLowerCase
    - isRootServer
    - vector::size
    - BOOST_REQUIRE_EQUAL
    - ComboAddress
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_lowercase_outgoing)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:735,1
    - Dst: setDNSSECValidation
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:737,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:739,1
    - Dst: getCopy
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:743,1
    - Dst: auto::dsAnchors::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:744,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:745,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:746,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:746,1
    - Dst: setState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:747,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:750,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:750,1
    - Dst: testkeysset_t::find
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:752,1
    - Dst: insert
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:753,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:755,1
    - Dst: DNSName::chopOff
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:757,1
    - Dst: genericDSAndDNSKEYHandler
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:760,1
    - Dst: genericDSAndDNSKEYHandler
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:764,1
    - Dst: std::unique_ptr::getDSRecords
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:770,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:771,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:772,1
    - Dst: dsset_t::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:772,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:774,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 26
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 776
      start: 732
    functionDepth: 4
    functionLinenumber: 732
    functionLinenumberEnd: 776
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc9.cc
    functionUses: 0
    functionsReached:
    - genericDSAndDNSKEYHandler
    - setState
    - std::unique_ptr::setAsyncCallback
    - DNSName::chopOff
    - primeHints
    - std::unique_ptr::getDSRecords
    - generateKeyMaterial
    - DNSName
    - initSR
    - BOOST_CHECK_EQUAL
    - setDNSSECValidation
    - getCopy
    - auto::dsAnchors::clear
    - testkeysset_t::find
    - dsset_t::size
    - insert
    - BOOST_REQUIRE_EQUAL
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_getDSRecords_multialgo)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:781,1
    - Dst: setDNSSECValidation
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:783,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:785,1
    - Dst: getCopy
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:789,1
    - Dst: auto::dsAnchors::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:790,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:791,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:792,1
    - Dst: setState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:793,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:796,1
    - Dst: testkeysset_t::find
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:798,1
    - Dst: insert
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:799,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:801,1
    - Dst: insert
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:803,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:805,1
    - Dst: DNSName::chopOff
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:807,1
    - Dst: genericDSAndDNSKEYHandler
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:810,1
    - Dst: genericDSAndDNSKEYHandler
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:813,1
    - Dst: genericDSAndDNSKEYHandler
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:817,1
    - Dst: std::unique_ptr::getDSRecords
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:823,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:824,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:825,1
    - Dst: dsset_t::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:825,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:827,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 31
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 829
      start: 778
    functionDepth: 4
    functionLinenumber: 778
    functionLinenumberEnd: 829
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc9.cc
    functionUses: 0
    functionsReached:
    - genericDSAndDNSKEYHandler
    - setState
    - std::unique_ptr::setAsyncCallback
    - DNSName::chopOff
    - primeHints
    - std::unique_ptr::getDSRecords
    - generateKeyMaterial
    - BOOST_CHECK_EQUAL
    - initSR
    - setDNSSECValidation
    - getCopy
    - auto::dsAnchors::clear
    - testkeysset_t::find
    - dsset_t::size
    - insert
    - BOOST_CHECK
    - BOOST_REQUIRE_EQUAL
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_getDSRecords_multialgo_all_sha)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:834,1
    - Dst: setDNSSECValidation
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:836,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:838,1
    - Dst: getCopy
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:842,1
    - Dst: auto::dsAnchors::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:843,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:844,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:845,1
    - Dst: setState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:846,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:849,1
    - Dst: testkeysset_t::find
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:851,1
    - Dst: insert
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:852,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:854,1
    - Dst: insert
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:856,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:858,1
    - Dst: DNSName::chopOff
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:860,1
    - Dst: genericDSAndDNSKEYHandler
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:863,1
    - Dst: genericDSAndDNSKEYHandler
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:866,1
    - Dst: genericDSAndDNSKEYHandler
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:870,1
    - Dst: std::unique_ptr::getDSRecords
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:876,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:877,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:878,1
    - Dst: dsset_t::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:878,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:880,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 31
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 882
      start: 831
    functionDepth: 4
    functionLinenumber: 831
    functionLinenumberEnd: 882
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc9.cc
    functionUses: 0
    functionsReached:
    - genericDSAndDNSKEYHandler
    - setState
    - std::unique_ptr::setAsyncCallback
    - DNSName::chopOff
    - primeHints
    - std::unique_ptr::getDSRecords
    - generateKeyMaterial
    - BOOST_CHECK_EQUAL
    - initSR
    - setDNSSECValidation
    - getCopy
    - auto::dsAnchors::clear
    - testkeysset_t::find
    - dsset_t::size
    - insert
    - BOOST_REQUIRE_EQUAL
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_getDSRecords_multialgo_two_highest)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:887,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:889,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:895,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:898,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:899,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:900,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:900,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:901,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:904,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:906,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:907,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:907,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:908,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:909,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:909,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:910,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:910,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:914,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:915,1
    - Dst: std::unique_ptr::getNow
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:924,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:926,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:926,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:927,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:928,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:928,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:929,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:930,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:931,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:932,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:943,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:943,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:943,1
    - Dst: BOOST_REQUIRE_GE
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:944,1
    - Dst: BOOST_REQUIRE_LE
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:945,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:946,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:946,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:947,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:949,1
    - Dst: BOOST_REQUIRE_GE
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:952,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:952,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:952,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:952,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:953,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:953,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:954,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 42
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 955
      start: 884
    functionDepth: 3
    functionLinenumber: 884
    functionLinenumberEnd: 955
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc9.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - BOOST_REQUIRE_GE
    - primeHints
    - DNSName::toString
    - std::unique_ptr::beginResolve
    - isRootServer
    - BOOST_REQUIRE_LE
    - QType
    - addRecordToLW
    - vector::size
    - vector::clear
    - BOOST_REQUIRE_EQUAL
    - std::unique_ptr::setAsyncCallback
    - DNSName
    - initSR
    - std::unique_ptr::getNow
    - get
    - ComboAddress
    - BOOST_CHECK_EQUAL
    - BOOST_CHECK
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_cname_plus_authority_ns_ttl)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:960,1
    - Dst: setDNSSECValidation
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:962,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:964,1
    - Dst: getCopy
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:967,1
    - Dst: auto::dsAnchors::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:968,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:969,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:970,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:970,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:971,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:971,1
    - Dst: setState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:972,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:974,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:976,1
    - Dst: genericDSAndDNSKEYHandler
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:977,1
    - Dst: genericDSAndDNSKEYHandler
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:979,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:982,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:983,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:984,1
    - Dst: addDS
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:985,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:985,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:986,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:986,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:987,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:991,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:992,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:993,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:994,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:994,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:995,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:996,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:996,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:998,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:999,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1000,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1000,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1001,1
    - Dst: std::unique_ptr::getNow
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1009,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1012,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1012,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1012,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1013,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1014,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1014,1
    - Dst: BOOST_CHECK_GT
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1020,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1020,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1020,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1020,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1021,1
    - Dst: vStateToString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1021,1
    - Dst: vStateToString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1021,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1022,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1024,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1025,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1025,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1025,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1026,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1027,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1027,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1029,1
    - Dst: BOOST_CHECK_GT
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1030,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1030,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1030,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1030,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1031,1
    - Dst: vStateToString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1031,1
    - Dst: vStateToString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1031,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1032,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 52
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1033
      start: 957
    functionDepth: 4
    functionLinenumber: 957
    functionLinenumberEnd: 1033
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc9.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - genericDSAndDNSKEYHandler
    - primeHints
    - setDNSSECValidation
    - std::unique_ptr::beginResolve
    - isRootServer
    - setState
    - QType
    - generateKeyMaterial
    - addRecordToLW
    - auto::dsAnchors::clear
    - addRRSIG
    - vector::clear
    - BOOST_REQUIRE_EQUAL
    - std::unique_ptr::setAsyncCallback
    - BOOST_CHECK_GT
    - DNSName
    - initSR
    - addDS
    - std::unique_ptr::getNow
    - get
    - BOOST_CHECK_EQUAL
    - getCopy
    - vStateToString
    - vector::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_bogus_does_not_replace_secure_in_the_cache)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1038,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1040,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1044,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1045,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1046,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1048,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1050,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1050,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1052,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1054,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1054,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1056,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1058,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1058,1
    - Dst: std::unique_ptr::getNow
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1062,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1065,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1065,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1066,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1067,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1067,1
    - Dst: BOOST_CHECK_GT
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1071,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1071,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1071,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1072,1
    - Dst: BOOST_CHECK_LT
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1073,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1073,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1073,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1074,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1074,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1074,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1074,1
    - Dst: BOOST_CHECK_LT
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1075,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1075,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1075,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1076,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1076,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1076,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1076,1
    - Dst: BOOST_CHECK_LT
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1077,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1077,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1077,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1078,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1078,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1078,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1078,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 24
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1079
      start: 1035
    functionDepth: 3
    functionLinenumber: 1035
    functionLinenumberEnd: 1079
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc9.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - std::unique_ptr::setAsyncCallback
    - BOOST_CHECK_GT
    - BOOST_CHECK_LT
    - primeHints
    - QType
    - addRecordToLW
    - DNSName
    - initSR
    - std::unique_ptr::getNow
    - BOOST_CHECK_EQUAL
    - get
    - std::unique_ptr::beginResolve
    - vector::size
    - vector::clear
    - BOOST_REQUIRE_EQUAL
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_records_sanitization_general)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1084,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1086,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1090,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1091,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1092,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1093,1
    - Dst: std::unique_ptr::getNow
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1097,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1100,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1100,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1101,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1102,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1102,1
    - Dst: BOOST_CHECK_GT
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1106,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1106,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1106,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1107,1
    - Dst: BOOST_CHECK_LT
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1109,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1109,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1109,1
    - Dst: BOOST_CHECK_GT
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1110,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1110,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1110,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1111
      start: 1081
    functionDepth: 3
    functionLinenumber: 1081
    functionLinenumberEnd: 1111
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc9.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - std::unique_ptr::setAsyncCallback
    - BOOST_CHECK_GT
    - BOOST_CHECK_LT
    - primeHints
    - QType
    - addRecordToLW
    - std::unique_ptr::getNow
    - initSR
    - BOOST_CHECK_EQUAL
    - get
    - std::unique_ptr::beginResolve
    - vector::size
    - vector::clear
    - BOOST_REQUIRE_EQUAL
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_records_sanitization_keep_relevant_additional_aaaa)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1116,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1118,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1124,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1127,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1128,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1129,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1130,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1131,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1134,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1134,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1135,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1136,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1137,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1138,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1139,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1140,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1141,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1142,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1145,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1145,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1145,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1145,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1146,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1147,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1148,1
    - Dst: std::unique_ptr::getNow
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1154,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1157,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1157,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1158,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1159,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1159,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1160,1
    - Dst: BOOST_CHECK_GT
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1164,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1164,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1164,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1165,1
    - Dst: BOOST_CHECK_GT
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1167,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1167,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1167,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1167,1
    - Dst: BOOST_CHECK_GT
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1168,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1168,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1168,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1168,1
    - Dst: BOOST_CHECK_GT
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1169,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1169,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1169,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1169,1
    - Dst: BOOST_CHECK_GT
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1170,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1170,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1170,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1170,1
    - Dst: BOOST_CHECK_GT
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1171,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1171,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1171,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1171,1
    - Dst: BOOST_CHECK_GT
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1172,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1172,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1172,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1172,1
    - Dst: BOOST_CHECK_GT
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1173,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1173,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1173,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1173,1
    - Dst: BOOST_CHECK_GT
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1174,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1174,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1174,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1174,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1176,1
    - Dst: BOOST_CHECK_GT
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1178,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1178,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1178,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1178,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1179,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1179,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1180,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1180,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 48
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1181
      start: 1113
    functionDepth: 3
    functionLinenumber: 1113
    functionLinenumberEnd: 1181
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc9.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - std::unique_ptr::setAsyncCallback
    - BOOST_CHECK_GT
    - vector::at
    - primeHints
    - QType
    - addRecordToLW
    - std::unique_ptr::getNow
    - initSR
    - BOOST_CHECK_EQUAL
    - get
    - DNSName
    - std::unique_ptr::beginResolve
    - isRootServer
    - vector::size
    - vector::clear
    - BOOST_REQUIRE_EQUAL
    - ComboAddress
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_records_sanitization_keep_glue)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1186,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1188,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1192,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1193,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1194,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1195,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1196,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1197,1
    - Dst: std::unique_ptr::getNow
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1201,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1204,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1204,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1205,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1206,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1206,1
    - Dst: BOOST_CHECK_GT
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1210,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1210,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1210,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1210,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1211,1
    - Dst: BOOST_CHECK_LT
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1213,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1213,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1213,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1213,1
    - Dst: BOOST_CHECK_LT
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1214,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1214,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1214,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1214,1
    - Dst: BOOST_CHECK_LT
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1215,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1215,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1215,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1215,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1216
      start: 1183
    functionDepth: 3
    functionLinenumber: 1183
    functionLinenumberEnd: 1216
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc9.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - std::unique_ptr::setAsyncCallback
    - BOOST_CHECK_GT
    - BOOST_CHECK_LT
    - primeHints
    - QType
    - addRecordToLW
    - std::unique_ptr::getNow
    - initSR
    - BOOST_CHECK_EQUAL
    - get
    - DNSName
    - std::unique_ptr::beginResolve
    - vector::size
    - vector::clear
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_records_sanitization_scrubs_ns_nxd)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1226,1
    - Dst: setDNSSECValidation
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1228,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1230,1
    - Dst: getCopy
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1234,1
    - Dst: auto::dsAnchors::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1235,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1236,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1237,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1237,1
    - Dst: setState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1238,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1242,1
    - Dst: isPartOf
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1245,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1245,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1245,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1246,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1247,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1248,1
    - Dst: DNSName::chopOff
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1253,1
    - Dst: genericDSAndDNSKEYHandler
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1254,1
    - Dst: isPartOf
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1257,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1257,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1257,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1258,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1259,1
    - Dst: addNSECRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1261,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1261,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1261,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1262,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1262,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1263,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1268,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1269,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1270,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1274,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1275,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1276,1
    - Dst: addNSECRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1277,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1277,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1278,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1288,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1288,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1289,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1290,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1290,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1291,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1291,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1292,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1292,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1293,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1293,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1294,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1296,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1297,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1297,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1298,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1299,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1299,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1300,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1300,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1301,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1301,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1302,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1302,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1303,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 61
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1304
      start: 1218
    functionDepth: 4
    functionLinenumber: 1218
    functionLinenumberEnd: 1304
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc9.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - genericDSAndDNSKEYHandler
    - primeHints
    - setDNSSECValidation
    - std::unique_ptr::beginResolve
    - isRootServer
    - setState
    - vector::at
    - DNSName::chopOff
    - QType
    - generateKeyMaterial
    - addRecordToLW
    - auto::dsAnchors::clear
    - addNSECRecordToLW
    - addRRSIG
    - vector::clear
    - BOOST_REQUIRE_EQUAL
    - std::unique_ptr::setAsyncCallback
    - isPartOf
    - DNSName
    - initSR
    - std::unique_ptr::getValidationState
    - ComboAddress
    - BOOST_CHECK
    - BOOST_CHECK_EQUAL
    - getCopy
    - vector::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_dnssec_validation_referral_on_ds_query_insecure)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1314,1
    - Dst: setDNSSECValidation
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1316,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1318,1
    - Dst: getCopy
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1322,1
    - Dst: auto::dsAnchors::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1323,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1324,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1325,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1325,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1326,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1326,1
    - Dst: setState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1327,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1331,1
    - Dst: isPartOf
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1334,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1334,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1334,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1335,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1336,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1337,1
    - Dst: DNSName::chopOff
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1342,1
    - Dst: genericDSAndDNSKEYHandler
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1343,1
    - Dst: isPartOf
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1346,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1346,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1346,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1347,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1348,1
    - Dst: addDS
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1349,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1349,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1350,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1350,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1351,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1356,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1357,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1358,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1362,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1363,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1364,1
    - Dst: addNSECRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1365,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1365,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1366,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1376,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1376,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1377,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1378,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1378,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1379,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1379,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1380,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1380,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1381,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1381,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1382,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1384,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1385,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1385,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1386,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1387,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1387,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1388,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1388,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1389,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1389,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1390,1
    - Dst: vector::at
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1390,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc9.cc:1391,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 62
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1392
      start: 1306
    functionDepth: 4
    functionLinenumber: 1306
    functionLinenumberEnd: 1392
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc9.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - genericDSAndDNSKEYHandler
    - primeHints
    - setDNSSECValidation
    - std::unique_ptr::beginResolve
    - isRootServer
    - setState
    - vector::at
    - DNSName::chopOff
    - QType
    - generateKeyMaterial
    - addRecordToLW
    - auto::dsAnchors::clear
    - addRRSIG
    - addNSECRecordToLW
    - vector::clear
    - BOOST_REQUIRE_EQUAL
    - std::unique_ptr::setAsyncCallback
    - isPartOf
    - DNSName
    - initSR
    - addDS
    - std::unique_ptr::getValidationState
    - ComboAddress
    - BOOST_CHECK
    - BOOST_CHECK_EQUAL
    - getCopy
    - vector::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_dnssec_validation_referral_on_ds_query_secure)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SortList::clear
      Src: /src/pdns/pdns/recursordist/sortlist.cc:6,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7
      start: 4
    functionDepth: 0
    functionLinenumber: 4
    functionLinenumberEnd: 7
    functionName: SortList::clear
    functionSourceFile: /src/pdns/pdns/recursordist/sortlist.cc
    functionUses: 1
    functionsReached:
    - SortList::clear
    linkageType: ''
    returnType: void
    signature: void SortList::clear()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lookup
      Src: /src/pdns/pdns/recursordist/sortlist.cc:13,1
    - Dst: std::max
      Src: /src/pdns/pdns/recursordist/sortlist.cc:16,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 1
    argNames:
    - ' formask'
    argTypes:
    - Netmask
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 21
      start: 9
    functionDepth: 0
    functionLinenumber: 9
    functionLinenumberEnd: 21
    functionName: SortList::getMaxOrder
    functionSourceFile: /src/pdns/pdns/recursordist/sortlist.cc
    functionUses: 0
    functionsReached:
    - std::max
    - lookup
    linkageType: ''
    returnType: int
    signature: int SortList::getMaxOrder(const Netmask& formask) const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SortList::getMaxOrder
      Src: /src/pdns/pdns/recursordist/sortlist.cc:26,1
    - Dst: insert
      Src: /src/pdns/pdns/recursordist/sortlist.cc:30,1
    - Dst: d_orders::insert
      Src: /src/pdns/pdns/recursordist/sortlist.cc:30,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - ' covers'
    - ' answermask'
    - order
    argTypes:
    - Netmask
    - Netmask
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 31
      start: 23
    functionDepth: 2
    functionLinenumber: 23
    functionLinenumberEnd: 31
    functionName: SortList::addEntry
    functionSourceFile: /src/pdns/pdns/recursordist/sortlist.cc
    functionUses: 0
    functionsReached:
    - SortList::getMaxOrder
    - d_orders::insert
    - insert
    linkageType: ''
    returnType: void
    signature: void SortList::addEntry(const Netmask& covers, const Netmask& answermask,
      int order)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: match
      Src: /src/pdns/pdns/recursordist/sortlist.cc:35,1
    - Dst: lookup
      Src: /src/pdns/pdns/recursordist/sortlist.cc:38,1
    - Dst: make_unique<SortListOrderCmp>
      Src: /src/pdns/pdns/recursordist/sortlist.cc:40,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ' who'
    argTypes:
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 33
    functionDepth: 0
    functionLinenumber: 33
    functionLinenumberEnd: 41
    functionName: SortList::getOrderCmp
    functionSourceFile: /src/pdns/pdns/recursordist/sortlist.cc
    functionUses: 0
    functionsReached:
    - make_unique<SortListOrderCmp>
    - match
    - lookup
    linkageType: ''
    returnType: std::unique_ptr<SortListOrderCmp>
    signature: std::unique_ptr<SortListOrderCmp> SortList::getOrderCmp(const ComboAddress&
      who) const
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: pdns::max
      Src: /src/pdns/pdns/recursordist/sortlist.cc:60,1
    - Dst: getAddr
      Src: /src/pdns/pdns/recursordist/sortlist.cc:63,1
    - Dst: getAddr
      Src: /src/pdns/pdns/recursordist/sortlist.cc:64,1
    - Dst: d_orders::match
      Src: /src/pdns/pdns/recursordist/sortlist.cc:66,1
    - Dst: d_orders::lookup
      Src: /src/pdns/pdns/recursordist/sortlist.cc:67,1
    - Dst: d_orders::match
      Src: /src/pdns/pdns/recursordist/sortlist.cc:69,1
    - Dst: d_orders::lookup
      Src: /src/pdns/pdns/recursordist/sortlist.cc:70,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 17
    argCount: 2
    argNames:
    - ' lhs'
    - ' rhs'
    argTypes:
    - DNSRecord
    - DNSRecord
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 44
    functionDepth: 0
    functionLinenumber: 44
    functionLinenumberEnd: 73
    functionName: SortListOrderCmp::operator()(const DNSRecord& lhs, const DNSRecord&
      rhs) const
    functionSourceFile: /src/pdns/pdns/recursordist/sortlist.cc
    functionUses: 0
    functionsReached:
    - d_orders::match
    - pdns::max
    - getAddr
    - d_orders::lookup
    linkageType: ''
    returnType: bool
    signature: bool SortListOrderCmp::operator()(const DNSRecord& lhs, const DNSRecord&
      rhs) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 2
    argCount: 1
    argNames:
    - chr
    argTypes:
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 46
    functionName: dns_isspace
    functionSourceFile: /src/pdns/pdns/recursordist/dnsname.hh
    functionUses: 18
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool dns_isspace(char chr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - chr
    argTypes:
    - unsigned char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 51
    functionDepth: 0
    functionLinenumber: 51
    functionLinenumberEnd: 54
    functionName: dns_toupper
    functionSourceFile: /src/pdns/pdns/recursordist/dnsname.hh
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: unsigned char
    signature: unsigned char dns_toupper(unsigned char chr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - chr
    argTypes:
    - unsigned char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 57
    functionDepth: 0
    functionLinenumber: 57
    functionLinenumberEnd: 60
    functionName: dns_tolower
    functionSourceFile: /src/pdns/pdns/recursordist/dnsname.hh
    functionUses: 33
    functionsReached: []
    linkageType: ''
    returnType: unsigned char
    signature: unsigned char dns_tolower(unsigned char chr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 93
    functionDepth: 0
    functionLinenumber: 93
    functionLinenumberEnd: 93
    functionName: DNSName::DNSName
    functionSourceFile: /src/pdns/pdns/recursordist/dnsname.hh
    functionUses: 109
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void DNSName()
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 95
    functionDepth: 0
    functionLinenumber: 95
    functionLinenumberEnd: 101
    functionName: '& operator=(const DNSName& rhs)'
    functionSourceFile: /src/pdns/pdns/recursordist/dnsname.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: DNSName
    signature: DNSName & operator=(const DNSName& rhs)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/dnsname.hh:105,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 102
    functionDepth: 0
    functionLinenumber: 102
    functionLinenumberEnd: 108
    functionName: '& operator=(DNSName&& rhs) noexcept'
    functionSourceFile: /src/pdns/pdns/recursordist/dnsname.hh
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: DNSName
    signature: DNSName & operator=(DNSName&& rhs) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 1
    argNames:
    - ' a'
    argTypes:
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 109
    functionDepth: 0
    functionLinenumber: 109
    functionLinenumberEnd: 109
    functionName: DNSName::DNSName
    functionSourceFile: /src/pdns/pdns/recursordist/dnsname.hh
    functionUses: 109
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void DNSName(const DNSName& a)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 1
    argNames:
    - ' a'
    argTypes:
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 110
    functionDepth: 0
    functionLinenumber: 110
    functionLinenumberEnd: 110
    functionName: DNSName::DNSName
    functionSourceFile: /src/pdns/pdns/recursordist/dnsname.hh
    functionUses: 109
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void DNSName(DNSName&& a)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' other'
    argTypes:
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 117
    functionDepth: 0
    functionLinenumber: 117
    functionLinenumberEnd: 117
    functionName: operator!=(const DNSName& other) const
    functionSourceFile: /src/pdns/pdns/recursordist/dnsname.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool operator!=(const DNSName& other) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/recursordist/dnsname.hh:124,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 124
      start: 124
    functionDepth: 0
    functionLinenumber: 124
    functionLinenumberEnd: 124
    functionName: DNSName::toStringNoDot
    functionSourceFile: /src/pdns/pdns/recursordist/dnsname.hh
    functionUses: 7
    functionsReached:
    - DNSName::toString
    linkageType: ''
    returnType: std::string
    signature: std::string toStringNoDot() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DNSName::isRoot
      Src: /src/pdns/pdns/recursordist/dnsname.hh:125,1
    - Dst: DNSName::toString
      Src: /src/pdns/pdns/recursordist/dnsname.hh:125,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 125
      start: 125
    functionDepth: 0
    functionLinenumber: 125
    functionLinenumberEnd: 125
    functionName: DNSName::toStringRootDot
    functionSourceFile: /src/pdns/pdns/recursordist/dnsname.hh
    functionUses: 10
    functionsReached:
    - DNSName::toString
    - DNSName::isRoot
    linkageType: ''
    returnType: std::string
    signature: std::string toStringRootDot() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSName::makeUsLowerCase
      Src: /src/pdns/pdns/recursordist/dnsname.hh:139,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 141
      start: 136
    functionDepth: 0
    functionLinenumber: 136
    functionLinenumberEnd: 141
    functionName: DNSName::makeLowerCase
    functionSourceFile: /src/pdns/pdns/recursordist/dnsname.hh
    functionUses: 7
    functionsReached:
    - DNSName::makeUsLowerCase
    linkageType: ''
    returnType: DNSName
    signature: DNSName makeLowerCase() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dns_tolower
      Src: /src/pdns/pdns/recursordist/dnsname.hh:145,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 142
    functionDepth: 0
    functionLinenumber: 142
    functionLinenumberEnd: 147
    functionName: DNSName::makeUsLowerCase
    functionSourceFile: /src/pdns/pdns/recursordist/dnsname.hh
    functionUses: 6
    functionsReached:
    - dns_tolower
    linkageType: ''
    returnType: void
    signature: void makeUsLowerCase()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSName::empty
      Src: /src/pdns/pdns/recursordist/dnsname.hh:155,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 155
    functionDepth: 0
    functionLinenumber: 155
    functionLinenumberEnd: 155
    functionName: DNSName::empty
    functionSourceFile: /src/pdns/pdns/recursordist/dnsname.hh
    functionUses: 70
    functionsReached:
    - DNSName::empty
    linkageType: ''
    returnType: bool
    signature: bool empty() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/recursordist/dnsname.hh:156,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 156
      start: 156
    functionDepth: 0
    functionLinenumber: 156
    functionLinenumberEnd: 156
    functionName: DNSName::isRoot
    functionSourceFile: /src/pdns/pdns/recursordist/dnsname.hh
    functionUses: 23
    functionsReached:
    - size
    linkageType: ''
    returnType: bool
    signature: bool isRoot() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSName::empty
      Src: /src/pdns/pdns/recursordist/dnsname.hh:157,1
    - Dst: DNSName::isRoot
      Src: /src/pdns/pdns/recursordist/dnsname.hh:157,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 157
      start: 157
    functionDepth: 0
    functionLinenumber: 157
    functionLinenumberEnd: 157
    functionName: DNSName::hasLabels
    functionSourceFile: /src/pdns/pdns/recursordist/dnsname.hh
    functionUses: 4
    functionsReached:
    - DNSName::isRoot
    - DNSName::empty
    linkageType: ''
    returnType: bool
    signature: bool hasLabels() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSName::clear
      Src: /src/pdns/pdns/recursordist/dnsname.hh:158,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 158
      start: 158
    functionDepth: 0
    functionLinenumber: 158
    functionLinenumberEnd: 158
    functionName: DNSName::clear
    functionSourceFile: /src/pdns/pdns/recursordist/dnsname.hh
    functionUses: 11
    functionsReached:
    - DNSName::clear
    linkageType: ''
    returnType: void
    signature: void clear()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: burtleCI
      Src: /src/pdns/pdns/recursordist/dnsname.hh:162,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 163
      start: 160
    functionDepth: 0
    functionLinenumber: 160
    functionLinenumberEnd: 163
    functionName: DNSName::hash
    functionSourceFile: /src/pdns/pdns/recursordist/dnsname.hh
    functionUses: 2
    functionsReached:
    - burtleCI
    linkageType: ''
    returnType: size_t
    signature: size_t hash(size_t init=0) const
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/recursordist/dnsname.hh:166,1
    - Dst: d_storage::size
      Src: /src/pdns/pdns/recursordist/dnsname.hh:166,1
    - Dst: throwSafeRangeError
      Src: /src/pdns/pdns/recursordist/dnsname.hh:167,1
    - Dst: d_storage::data
      Src: /src/pdns/pdns/recursordist/dnsname.hh:167,1
    - Dst: d_storage::size
      Src: /src/pdns/pdns/recursordist/dnsname.hh:167,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/dnsname.hh:168,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/dnsname.hh:171,1
    - Dst: replace
      Src: /src/pdns/pdns/recursordist/dnsname.hh:174,1
    - Dst: length
      Src: /src/pdns/pdns/recursordist/dnsname.hh:174,1
    - Dst: d_storage::length
      Src: /src/pdns/pdns/recursordist/dnsname.hh:174,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 177
      start: 164
    functionDepth: 0
    functionLinenumber: 164
    functionLinenumberEnd: 177
    functionName: '& operator+=(const DNSName& rhs)'
    functionSourceFile: /src/pdns/pdns/recursordist/dnsname.hh
    functionUses: 0
    functionsReached:
    - length
    - d_storage::size
    - d_storage::length
    - d_storage::data
    - size
    - throwSafeRangeError
    - empty
    - replace
    linkageType: ''
    returnType: DNSName
    signature: DNSName & operator+=(const DNSName& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dns_tolower
      Src: /src/pdns/pdns/recursordist/dnsname.hh:185,1
    - Dst: dns_tolower
      Src: /src/pdns/pdns/recursordist/dnsname.hh:185,1
    - Dst: std::lexicographical_compare
      Src: /src/pdns/pdns/recursordist/dnsname.hh:190,1
    - Dst: rbegin
      Src: /src/pdns/pdns/recursordist/dnsname.hh:190,1
    - Dst: rend
      Src: /src/pdns/pdns/recursordist/dnsname.hh:190,1
    - Dst: d_storage::rbegin
      Src: /src/pdns/pdns/recursordist/dnsname.hh:191,1
    - Dst: d_storage::rend
      Src: /src/pdns/pdns/recursordist/dnsname.hh:191,1
    - Dst: DNSNameCompare
      Src: /src/pdns/pdns/recursordist/dnsname.hh:191,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 192
      start: 179
    functionDepth: 0
    functionLinenumber: 179
    functionLinenumberEnd: 192
    functionName: operator<(const DNSName& rhs)  const
    functionSourceFile: /src/pdns/pdns/recursordist/dnsname.hh
    functionUses: 0
    functionsReached:
    - std::lexicographical_compare
    - dns_tolower
    - rbegin
    - rend
    - DNSNameCompare
    - d_storage::rbegin
    - d_storage::rend
    linkageType: ''
    returnType: bool
    signature: bool operator<(const DNSName& rhs)  const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dns_tolower
      Src: /src/pdns/pdns/recursordist/dnsname.hh:185,1
    - Dst: dns_tolower
      Src: /src/pdns/pdns/recursordist/dnsname.hh:185,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' lhs'
    - ' rhs'
    argTypes:
    - unsigned char
    - unsigned char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 186
      start: 183
    functionDepth: 0
    functionLinenumber: 183
    functionLinenumberEnd: 186
    functionName: operator()(const unsigned char& lhs, const unsigned char& rhs) const
    functionSourceFile: /src/pdns/pdns/recursordist/dnsname.hh
    functionUses: 0
    functionsReached:
    - dns_tolower
    linkageType: ''
    returnType: bool
    signature: bool operator()(const unsigned char& lhs, const unsigned char& rhs)
      const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSName::canonCompare_three_way
      Src: /src/pdns/pdns/recursordist/dnsname.hh:196,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 196
      start: 196
    functionDepth: 0
    functionLinenumber: 196
    functionLinenumberEnd: 196
    functionName: DNSName::canonCompare
    functionSourceFile: /src/pdns/pdns/recursordist/dnsname.hh
    functionUses: 3
    functionsReached:
    - DNSName::canonCompare_three_way
    linkageType: ''
    returnType: bool
    signature: bool canonCompare(const DNSName& rhs, bool pretty = false) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 202
      start: 200
    functionDepth: 0
    functionLinenumber: 200
    functionLinenumberEnd: 202
    functionName: '& getStorage() const'
    functionSourceFile: /src/pdns/pdns/recursordist/dnsname.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: string_t
    signature: string_t & getStorage() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/recursordist/dnsname.hh:206,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 209
      start: 204
    functionDepth: 0
    functionLinenumber: 204
    functionLinenumberEnd: 209
    functionName: DNSName::sizeEstimate
    functionSourceFile: /src/pdns/pdns/recursordist/dnsname.hh
    functionUses: 0
    functionsReached:
    - size
    linkageType: ''
    returnType: size_t
    signature: size_t sizeEstimate() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSName::canonCompare
      Src: /src/pdns/pdns/recursordist/dnsname.hh:263,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - a
    - ' b'
    argTypes:
    - DNSName
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 264
      start: 261
    functionDepth: 0
    functionLinenumber: 261
    functionLinenumberEnd: 264
    functionName: operator()(const DNSName&a, const DNSName& b) const
    functionSourceFile: /src/pdns/pdns/recursordist/dnsname.hh
    functionUses: 0
    functionsReached:
    - DNSName::canonCompare
    linkageType: ''
    returnType: bool
    signature: bool operator()(const DNSName&a, const DNSName& b) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ' lhs'
    - ' rhs'
    argTypes:
    - DNSName
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 272
      start: 267
    functionDepth: 0
    functionLinenumber: 267
    functionLinenumberEnd: 272
    functionName: operator+(const DNSName& lhs, const DNSName& rhs)
    functionSourceFile: /src/pdns/pdns/recursordist/dnsname.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: DNSName
    signature: DNSName operator+(const DNSName& lhs, const DNSName& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 302
      start: 302
    functionDepth: 0
    functionLinenumber: 302
    functionLinenumberEnd: 302
    functionName: ZoneName::ZoneName
    functionSourceFile: /src/pdns/pdns/recursordist/dnsname.hh
    functionUses: 9
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ZoneName()
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - ZoneName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 311
      start: 304
    functionDepth: 0
    functionLinenumber: 304
    functionLinenumberEnd: 311
    functionName: '& operator=(const ZoneName& rhs)'
    functionSourceFile: /src/pdns/pdns/recursordist/dnsname.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: ZoneName
    signature: ZoneName & operator=(const ZoneName& rhs)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/dnsname.hh:315,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/dnsname.hh:316,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - ZoneName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 319
      start: 312
    functionDepth: 0
    functionLinenumber: 312
    functionLinenumberEnd: 319
    functionName: '& operator=(ZoneName&& rhs) noexcept'
    functionSourceFile: /src/pdns/pdns/recursordist/dnsname.hh
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: ZoneName
    signature: ZoneName & operator=(ZoneName&& rhs) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 1
    argNames:
    - ' a'
    argTypes:
    - ZoneName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 320
      start: 320
    functionDepth: 0
    functionLinenumber: 320
    functionLinenumberEnd: 320
    functionName: ZoneName::ZoneName
    functionSourceFile: /src/pdns/pdns/recursordist/dnsname.hh
    functionUses: 9
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ZoneName(const ZoneName& a)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 1
    argNames:
    - ' a'
    argTypes:
    - ZoneName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 321
      start: 321
    functionDepth: 0
    functionLinenumber: 321
    functionLinenumberEnd: 321
    functionName: ZoneName::ZoneName
    functionSourceFile: /src/pdns/pdns/recursordist/dnsname.hh
    functionUses: 9
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ZoneName(ZoneName&& a)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - name
    - variant
    argTypes:
    - std::string_view
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 324
      start: 324
    functionDepth: 0
    functionLinenumber: 324
    functionLinenumberEnd: 324
    functionName: ZoneName::ZoneName
    functionSourceFile: /src/pdns/pdns/recursordist/dnsname.hh
    functionUses: 9
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ZoneName(std::string_view name, std::string_view variant)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' name'
    argTypes:
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 325
      start: 325
    functionDepth: 0
    functionLinenumber: 325
    functionLinenumberEnd: 325
    functionName: ZoneName::ZoneName
    functionSourceFile: /src/pdns/pdns/recursordist/dnsname.hh
    functionUses: 9
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ZoneName(const DNSName& name, std::string_view variant = ""sv)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ZoneName::isPartOf
      Src: /src/pdns/pdns/recursordist/dnsname.hh:328,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - ZoneName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 328
      start: 328
    functionDepth: 0
    functionLinenumber: 328
    functionLinenumberEnd: 328
    functionName: ZoneName::isPartOf
    functionSourceFile: /src/pdns/pdns/recursordist/dnsname.hh
    functionUses: 5
    functionsReached:
    - ZoneName::isPartOf
    linkageType: ''
    returnType: bool
    signature: bool isPartOf(const ZoneName& rhs) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ZoneName::isPartOf
      Src: /src/pdns/pdns/recursordist/dnsname.hh:329,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 329
      start: 329
    functionDepth: 0
    functionLinenumber: 329
    functionLinenumberEnd: 329
    functionName: ZoneName::isPartOf
    functionSourceFile: /src/pdns/pdns/recursordist/dnsname.hh
    functionUses: 6
    functionsReached:
    - ZoneName::isPartOf
    linkageType: ''
    returnType: bool
    signature: bool isPartOf(const DNSName& rhs) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - ZoneName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 330
      start: 330
    functionDepth: 0
    functionLinenumber: 330
    functionLinenumberEnd: 330
    functionName: operator==(const ZoneName& rhs) const
    functionSourceFile: /src/pdns/pdns/recursordist/dnsname.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool operator==(const ZoneName& rhs) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - ZoneName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 331
      start: 331
    functionDepth: 0
    functionLinenumber: 331
    functionLinenumberEnd: 331
    functionName: operator!=(const ZoneName& rhs) const
    functionSourceFile: /src/pdns/pdns/recursordist/dnsname.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool operator!=(const ZoneName& rhs) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ZoneName::toString
      Src: /src/pdns/pdns/recursordist/dnsname.hh:334,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' output'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 334
      start: 334
    functionDepth: 0
    functionLinenumber: 334
    functionLinenumberEnd: 334
    functionName: ZoneName::toString
    functionSourceFile: /src/pdns/pdns/recursordist/dnsname.hh
    functionUses: 14
    functionsReached:
    - ZoneName::toString
    linkageType: ''
    returnType: void
    signature: void toString(std::string& output, const std::string& separator=".",
      const bool trailing=true) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ZoneName::chopOff
      Src: /src/pdns/pdns/recursordist/dnsname.hh:339,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 339
      start: 339
    functionDepth: 0
    functionLinenumber: 339
    functionLinenumberEnd: 339
    functionName: ZoneName::chopOff
    functionSourceFile: /src/pdns/pdns/recursordist/dnsname.hh
    functionUses: 9
    functionsReached:
    - ZoneName::chopOff
    linkageType: ''
    returnType: bool
    signature: bool chopOff()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ZoneName::d_name::makeUsLowerCase
      Src: /src/pdns/pdns/recursordist/dnsname.hh:343,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 345
      start: 340
    functionDepth: 0
    functionLinenumber: 340
    functionLinenumberEnd: 345
    functionName: ZoneName::makeLowerCase
    functionSourceFile: /src/pdns/pdns/recursordist/dnsname.hh
    functionUses: 1
    functionsReached:
    - ZoneName::d_name::makeUsLowerCase
    linkageType: ''
    returnType: ZoneName
    signature: ZoneName makeLowerCase() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ZoneName::makeUsLowerCase
      Src: /src/pdns/pdns/recursordist/dnsname.hh:346,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 346
      start: 346
    functionDepth: 0
    functionLinenumber: 346
    functionLinenumberEnd: 346
    functionName: ZoneName::makeUsLowerCase
    functionSourceFile: /src/pdns/pdns/recursordist/dnsname.hh
    functionUses: 5
    functionsReached:
    - ZoneName::makeUsLowerCase
    linkageType: ''
    returnType: void
    signature: void makeUsLowerCase()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ZoneName::empty
      Src: /src/pdns/pdns/recursordist/dnsname.hh:347,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 347
      start: 347
    functionDepth: 0
    functionLinenumber: 347
    functionLinenumberEnd: 347
    functionName: ZoneName::empty
    functionSourceFile: /src/pdns/pdns/recursordist/dnsname.hh
    functionUses: 20
    functionsReached:
    - ZoneName::empty
    linkageType: ''
    returnType: bool
    signature: bool empty() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ZoneName::clear
      Src: /src/pdns/pdns/recursordist/dnsname.hh:348,1
    - Dst: ZoneName::clear
      Src: /src/pdns/pdns/recursordist/dnsname.hh:348,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 348
      start: 348
    functionDepth: 0
    functionLinenumber: 348
    functionLinenumberEnd: 348
    functionName: ZoneName::clear
    functionSourceFile: /src/pdns/pdns/recursordist/dnsname.hh
    functionUses: 3
    functionsReached:
    - ZoneName::clear
    linkageType: ''
    returnType: void
    signature: void clear()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ZoneName::trimToLabels
      Src: /src/pdns/pdns/recursordist/dnsname.hh:349,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - trim
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 349
      start: 349
    functionDepth: 0
    functionLinenumber: 349
    functionLinenumberEnd: 349
    functionName: ZoneName::trimToLabels
    functionSourceFile: /src/pdns/pdns/recursordist/dnsname.hh
    functionUses: 3
    functionsReached:
    - ZoneName::trimToLabels
    linkageType: ''
    returnType: void
    signature: void trimToLabels(unsigned int trim)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ZoneName::canonCompare_three_way
      Src: /src/pdns/pdns/recursordist/dnsname.hh:355,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - ZoneName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 355
      start: 355
    functionDepth: 0
    functionLinenumber: 355
    functionLinenumberEnd: 355
    functionName: ZoneName::canonCompare
    functionSourceFile: /src/pdns/pdns/recursordist/dnsname.hh
    functionUses: 0
    functionsReached:
    - ZoneName::canonCompare_three_way
    linkageType: ''
    returnType: bool
    signature: bool canonCompare(const ZoneName& rhs) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 358
      start: 358
    functionDepth: 0
    functionLinenumber: 358
    functionLinenumberEnd: 358
    functionName: operator const DNSName&() const
    functionSourceFile: /src/pdns/pdns/recursordist/dnsname.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void operator const DNSName&() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 359
      start: 359
    functionDepth: 0
    functionLinenumber: 359
    functionLinenumberEnd: 359
    functionName: operator DNSName&()
    functionSourceFile: /src/pdns/pdns/recursordist/dnsname.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void operator DNSName&()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ZoneName::empty
      Src: /src/pdns/pdns/recursordist/dnsname.hh:361,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 361
      start: 361
    functionDepth: 0
    functionLinenumber: 361
    functionLinenumberEnd: 361
    functionName: ZoneName::hasVariant
    functionSourceFile: /src/pdns/pdns/recursordist/dnsname.hh
    functionUses: 6
    functionsReached:
    - ZoneName::empty
    linkageType: ''
    returnType: bool
    signature: bool hasVariant() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 362
      start: 362
    functionDepth: 0
    functionLinenumber: 362
    functionLinenumberEnd: 362
    functionName: ZoneName::getVariant
    functionSourceFile: /src/pdns/pdns/recursordist/dnsname.hh
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string getVariant() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash
      Src: /src/pdns/pdns/recursordist/dnsname.hh:382,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' dn'
    argTypes:
    - ZoneName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 382
      start: 382
    functionDepth: 2
    functionLinenumber: 382
    functionLinenumberEnd: 382
    functionName: operator () (const ZoneName& dn) const
    functionSourceFile: /src/pdns/pdns/recursordist/dnsname.hh
    functionUses: 0
    functionsReached:
    - hash
    linkageType: ''
    returnType: size_t
    signature: size_t operator () (const ZoneName& dn) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash
      Src: /src/pdns/pdns/recursordist/dnsname.hh:382,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' dn'
    argTypes:
    - ZoneName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 382
      start: 382
    functionDepth: 2
    functionLinenumber: 382
    functionLinenumberEnd: 382
    functionName: operator () (const ZoneName& dn) const
    functionSourceFile: /src/pdns/pdns/recursordist/dnsname.hh
    functionUses: 0
    functionsReached:
    - hash
    linkageType: ''
    returnType: size_t
    signature: size_t operator () (const ZoneName& dn) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: canonCompare
      Src: /src/pdns/pdns/recursordist/dnsname.hh:390,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' a'
    - ' b'
    argTypes:
    - ZoneName
    - ZoneName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 391
      start: 388
    functionDepth: 0
    functionLinenumber: 388
    functionLinenumberEnd: 391
    functionName: operator()(const ZoneName& a, const ZoneName& b) const
    functionSourceFile: /src/pdns/pdns/recursordist/dnsname.hh
    functionUses: 0
    functionsReached:
    - canonCompare
    linkageType: ''
    returnType: bool
    signature: bool operator()(const ZoneName& a, const ZoneName& b) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/dnsname.hh:404,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 405
      start: 403
    functionDepth: 0
    functionLinenumber: 403
    functionLinenumberEnd: 405
    functionName: SuffixMatchTree
    functionSourceFile: /src/pdns/pdns/recursordist/dnsname.hh
    functionUses: 3
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void SuffixMatchTree(std::string name = "", bool endNode_ = false)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - SuffixMatchTree
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 412
      start: 407
    functionDepth: 0
    functionLinenumber: 407
    functionLinenumberEnd: 412
    functionName: SuffixMatchTree
    functionSourceFile: /src/pdns/pdns/recursordist/dnsname.hh
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void SuffixMatchTree(const SuffixMatchTree& rhs)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - rhs
    argTypes:
    - SuffixMatchTree
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 422
      start: 413
    functionDepth: 0
    functionLinenumber: 413
    functionLinenumberEnd: 422
    functionName: '& operator=(const SuffixMatchTree &rhs)'
    functionSourceFile: /src/pdns/pdns/recursordist/dnsname.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: SuffixMatchTree
    signature: SuffixMatchTree & operator=(const SuffixMatchTree &rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strcasecmp
      Src: /src/pdns/pdns/recursordist/dnsname.hh:425,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/dnsname.hh:425,1
    - Dst: d_name::c_str
      Src: /src/pdns/pdns/recursordist/dnsname.hh:425,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - SuffixMatchTree
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 426
      start: 423
    functionDepth: 0
    functionLinenumber: 423
    functionLinenumberEnd: 426
    functionName: operator<(const SuffixMatchTree& rhs) const
    functionSourceFile: /src/pdns/pdns/recursordist/dnsname.hh
    functionUses: 0
    functionsReached:
    - c_str
    - d_name::c_str
    - strcasecmp
    linkageType: ''
    returnType: bool
    signature: bool operator<(const SuffixMatchTree& rhs) const
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: std::min
      Src: /src/pdns/pdns/recursordist/dnsname.hh:441,1
    - Dst: d_name::size
      Src: /src/pdns/pdns/recursordist/dnsname.hh:441,1
    - Dst: d_name::size
      Src: /src/pdns/pdns/recursordist/dnsname.hh:441,1
    - Dst: strncasecmp
      Src: /src/pdns/pdns/recursordist/dnsname.hh:442,1
    - Dst: d_name::data
      Src: /src/pdns/pdns/recursordist/dnsname.hh:442,1
    - Dst: d_name::data
      Src: /src/pdns/pdns/recursordist/dnsname.hh:442,1
    - Dst: d_name::size
      Src: /src/pdns/pdns/recursordist/dnsname.hh:446,1
    - Dst: d_name::size
      Src: /src/pdns/pdns/recursordist/dnsname.hh:446,1
    - Dst: d_name::size
      Src: /src/pdns/pdns/recursordist/dnsname.hh:449,1
    - Dst: d_name::size
      Src: /src/pdns/pdns/recursordist/dnsname.hh:449,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - ' smt'
    argTypes:
    - SuffixMatchTree
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 450
      start: 439
    functionDepth: 0
    functionLinenumber: 439
    functionLinenumberEnd: 450
    functionName: operator<(const SuffixMatchTree& smt) const
    functionSourceFile: /src/pdns/pdns/recursordist/dnsname.hh
    functionUses: 0
    functionsReached:
    - std::min
    - d_name::data
    - d_name::size
    - strncasecmp
    linkageType: ''
    returnType: bool
    signature: bool operator<(const SuffixMatchTree& smt) const
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: std::min
      Src: /src/pdns/pdns/recursordist/dnsname.hh:455,1
    - Dst: d_name::size
      Src: /src/pdns/pdns/recursordist/dnsname.hh:455,1
    - Dst: d_name::size
      Src: /src/pdns/pdns/recursordist/dnsname.hh:455,1
    - Dst: strncasecmp
      Src: /src/pdns/pdns/recursordist/dnsname.hh:456,1
    - Dst: d_name::data
      Src: /src/pdns/pdns/recursordist/dnsname.hh:456,1
    - Dst: d_name::data
      Src: /src/pdns/pdns/recursordist/dnsname.hh:456,1
    - Dst: d_name::size
      Src: /src/pdns/pdns/recursordist/dnsname.hh:460,1
    - Dst: d_name::size
      Src: /src/pdns/pdns/recursordist/dnsname.hh:460,1
    - Dst: d_name::size
      Src: /src/pdns/pdns/recursordist/dnsname.hh:463,1
    - Dst: d_name::size
      Src: /src/pdns/pdns/recursordist/dnsname.hh:463,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - ' lk'
    argTypes:
    - LightKey
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 464
      start: 453
    functionDepth: 0
    functionLinenumber: 453
    functionLinenumberEnd: 464
    functionName: operator<(const LightKey& lk) const
    functionSourceFile: /src/pdns/pdns/recursordist/dnsname.hh
    functionUses: 0
    functionsReached:
    - std::min
    - d_name::data
    - d_name::size
    - strncasecmp
    linkageType: ''
    returnType: bool
    signature: bool operator<(const LightKey& lk) const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: visit
      Src: /src/pdns/pdns/recursordist/dnsname.hh:469,1
    - Dst: v
      Src: /src/pdns/pdns/recursordist/dnsname.hh:473,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - ' v'
    argTypes:
    - V
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 475
      start: 467
    functionDepth: 0
    functionLinenumber: 467
    functionLinenumberEnd: 475
    functionName: visit
    functionSourceFile: /src/pdns/pdns/recursordist/dnsname.hh
    functionUses: 20
    functionsReached:
    - visit
    - v
    linkageType: ''
    returnType: void
    signature: void visit(const V& v) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getRawLabels
      Src: /src/pdns/pdns/recursordist/dnsname.hh:479,1
    - Dst: add
      Src: /src/pdns/pdns/recursordist/dnsname.hh:480,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/dnsname.hh:480,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 2
    argNames:
    - ' name'
    - ' t'
    argTypes:
    - DNSName
    - T
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 481
      start: 477
    functionDepth: 0
    functionLinenumber: 477
    functionLinenumberEnd: 481
    functionName: add
    functionSourceFile: /src/pdns/pdns/recursordist/dnsname.hh
    functionUses: 111
    functionsReached:
    - add
    - getRawLabels
    - std::move
    linkageType: ''
    returnType: void
    signature: void add(const DNSName& name, T&& t)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/dnsname.hh:485,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/dnsname.hh:487,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/dnsname.hh:489,1
    - Dst: emplace
      Src: /src/pdns/pdns/recursordist/dnsname.hh:490,1
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/dnsname.hh:490,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/dnsname.hh:498,1
    - Dst: emplace
      Src: /src/pdns/pdns/recursordist/dnsname.hh:501,1
    - Dst: rbegin
      Src: /src/pdns/pdns/recursordist/dnsname.hh:501,1
    - Dst: pop_back
      Src: /src/pdns/pdns/recursordist/dnsname.hh:502,1
    - Dst: auto::first::add
      Src: /src/pdns/pdns/recursordist/dnsname.hh:503,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/dnsname.hh:503,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 2
    argNames:
    - ' labels'
    - ' value'
    argTypes:
    - std::vector<std::string>
    - T
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 505
      start: 483
    functionDepth: 0
    functionLinenumber: 483
    functionLinenumberEnd: 505
    functionName: add
    functionSourceFile: /src/pdns/pdns/recursordist/dnsname.hh
    functionUses: 112
    functionsReached:
    - std::move
    - pop_back
    - rbegin
    - size
    - begin
    - empty
    - emplace
    - auto::first::add
    linkageType: ''
    returnType: void
    signature: void add(std::vector<std::string>& labels, T&& value) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSName::getRawLabels
      Src: /src/pdns/pdns/recursordist/dnsname.hh:509,1
    - Dst: remove
      Src: /src/pdns/pdns/recursordist/dnsname.hh:510,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - name
    argTypes:
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 511
      start: 507
    functionDepth: 0
    functionLinenumber: 507
    functionLinenumberEnd: 511
    functionName: remove
    functionSourceFile: /src/pdns/pdns/recursordist/dnsname.hh
    functionUses: 32
    functionsReached:
    - DNSName::getRawLabels
    - remove
    linkageType: ''
    returnType: void
    signature: void remove(const DNSName &name, bool subtree=false) const
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/dnsname.hh:518,1
    - Dst: clear
      Src: /src/pdns/pdns/recursordist/dnsname.hh:521,1
    - Dst: rbegin
      Src: /src/pdns/pdns/recursordist/dnsname.hh:526,1
    - Dst: find
      Src: /src/pdns/pdns/recursordist/dnsname.hh:527,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/dnsname.hh:528,1
    - Dst: pop_back
      Src: /src/pdns/pdns/recursordist/dnsname.hh:534,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/dnsname.hh:535,1
    - Dst: auto::children::clear
      Src: /src/pdns/pdns/recursordist/dnsname.hh:540,1
    - Dst: auto::children::empty
      Src: /src/pdns/pdns/recursordist/dnsname.hh:544,1
    - Dst: erase
      Src: /src/pdns/pdns/recursordist/dnsname.hh:545,1
    - Dst: auto::remove
      Src: /src/pdns/pdns/recursordist/dnsname.hh:551,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 23
    argCount: 1
    argNames:
    - ' labels'
    argTypes:
    - std::vector<std::string>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 552
      start: 516
    functionDepth: 1
    functionLinenumber: 516
    functionLinenumberEnd: 552
    functionName: remove
    functionSourceFile: /src/pdns/pdns/recursordist/dnsname.hh
    functionUses: 33
    functionsReached:
    - auto::children::empty
    - auto::children::clear
    - pop_back
    - auto::remove
    - rbegin
    - end
    - clear
    - empty
    - erase
    - find
    linkageType: ''
    returnType: void
    signature: void remove(std::vector<std::string>& labels, bool subtree = false)
      const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: getBestNode
      Src: /src/pdns/pdns/recursordist/dnsname.hh:556,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ' name'
    argTypes:
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 561
      start: 554
    functionDepth: 0
    functionLinenumber: 554
    functionLinenumberEnd: 561
    functionName: lookup
    functionSourceFile: /src/pdns/pdns/recursordist/dnsname.hh
    functionUses: 108
    functionsReached:
    - getBestNode
    linkageType: ''
    returnType: T
    signature: T * lookup(const DNSName& name) const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/dnsname.hh:565,1
    - Dst: std::optional<DNSName>
      Src: /src/pdns/pdns/recursordist/dnsname.hh:566,1
    - Dst: getRawLabelsVisitor
      Src: /src/pdns/pdns/recursordist/dnsname.hh:569,1
    - Dst: getBestMatch
      Src: /src/pdns/pdns/recursordist/dnsname.hh:570,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ' name'
    argTypes:
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 571
      start: 563
    functionDepth: 0
    functionLinenumber: 563
    functionLinenumberEnd: 571
    functionName: getBestMatch
    functionSourceFile: /src/pdns/pdns/recursordist/dnsname.hh
    functionUses: 10
    functionsReached:
    - empty
    - getBestMatch
    - std::optional<DNSName>
    - getRawLabelsVisitor
    linkageType: ''
    returnType: std::optional<DNSName>
    signature: std::optional<DNSName> getBestMatch(const DNSName& name) const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/recursordist/dnsname.hh:577,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/dnsname.hh:577,1
    - Dst: getNodes
      Src: /src/pdns/pdns/recursordist/dnsname.hh:580,1
    - Dst: std::vector::reserve
      Src: /src/pdns/pdns/recursordist/dnsname.hh:581,1
    - Dst: std::vector::size
      Src: /src/pdns/pdns/recursordist/dnsname.hh:581,1
    - Dst: auto::size
      Src: /src/pdns/pdns/recursordist/dnsname.hh:581,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/recursordist/dnsname.hh:583,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/dnsname.hh:583,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 587
      start: 574
    functionDepth: 0
    functionLinenumber: 574
    functionLinenumberEnd: 587
    functionName: getNodes
    functionSourceFile: /src/pdns/pdns/recursordist/dnsname.hh
    functionUses: 3
    functionsReached:
    - std::vector::push_back
    - std::vector::size
    - getNodes
    - DNSName
    - std::vector::reserve
    - auto::size
    linkageType: ''
    returnType: std::vector<DNSName>
    signature: std::vector<DNSName> getNodes() const
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/dnsname.hh:592,1
    - Dst: getRawLabelsVisitor
      Src: /src/pdns/pdns/recursordist/dnsname.hh:599,1
    - Dst: getBestNode
      Src: /src/pdns/pdns/recursordist/dnsname.hh:600,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - ' name'
    argTypes:
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 601
      start: 590
    functionDepth: 0
    functionLinenumber: 590
    functionLinenumberEnd: 601
    functionName: getBestNode
    functionSourceFile: /src/pdns/pdns/recursordist/dnsname.hh
    functionUses: 8
    functionsReached:
    - empty
    - getBestNode
    - getRawLabelsVisitor
    linkageType: ''
    returnType: SuffixMatchTree
    signature: SuffixMatchTree * getBestNode(const DNSName& name)  const
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/dnsname.hh:605,1
    - Dst: back
      Src: /src/pdns/pdns/recursordist/dnsname.hh:612,1
    - Dst: find
      Src: /src/pdns/pdns/recursordist/dnsname.hh:613,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/dnsname.hh:614,1
    - Dst: pop_back
      Src: /src/pdns/pdns/recursordist/dnsname.hh:620,1
    - Dst: auto::getBestNode
      Src: /src/pdns/pdns/recursordist/dnsname.hh:621,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 1
    argNames:
    - ' visitor'
    argTypes:
    - DNSName::RawLabelsVisitor
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 626
      start: 603
    functionDepth: 0
    functionLinenumber: 603
    functionLinenumberEnd: 626
    functionName: getBestNode
    functionSourceFile: /src/pdns/pdns/recursordist/dnsname.hh
    functionUses: 9
    functionsReached:
    - pop_back
    - end
    - back
    - empty
    - find
    - auto::getBestNode
    linkageType: ''
    returnType: SuffixMatchTree
    signature: SuffixMatchTree * getBestNode(DNSName::RawLabelsVisitor& visitor) const
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/dnsname.hh:630,1
    - Dst: std::optional<DNSName>
      Src: /src/pdns/pdns/recursordist/dnsname.hh:632,1
    - Dst: back
      Src: /src/pdns/pdns/recursordist/dnsname.hh:637,1
    - Dst: find
      Src: /src/pdns/pdns/recursordist/dnsname.hh:638,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/dnsname.hh:639,1
    - Dst: std::optional<DNSName>
      Src: /src/pdns/pdns/recursordist/dnsname.hh:641,1
    - Dst: pop_back
      Src: /src/pdns/pdns/recursordist/dnsname.hh:645,1
    - Dst: auto::getBestMatch
      Src: /src/pdns/pdns/recursordist/dnsname.hh:646,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/dnsname.hh:648,1
    - Dst: auto::appendRawLabel
      Src: /src/pdns/pdns/recursordist/dnsname.hh:649,1
    - Dst: std::optional<DNSName>
      Src: /src/pdns/pdns/recursordist/dnsname.hh:653,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 1
    argNames:
    - ' visitor'
    argTypes:
    - DNSName::RawLabelsVisitor
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 654
      start: 628
    functionDepth: 0
    functionLinenumber: 628
    functionLinenumberEnd: 654
    functionName: getBestMatch
    functionSourceFile: /src/pdns/pdns/recursordist/dnsname.hh
    functionUses: 11
    functionsReached:
    - pop_back
    - end
    - std::optional<DNSName>
    - back
    - auto::getBestMatch
    - auto::appendRawLabel
    - empty
    - find
    linkageType: ''
    returnType: std::optional<DNSName>
    signature: std::optional<DNSName> getBestMatch(DNSName::RawLabelsVisitor& visitor)
      const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 662
      start: 662
    functionDepth: 0
    functionLinenumber: 662
    functionLinenumberEnd: 662
    functionName: SuffixMatchNode
    functionSourceFile: /src/pdns/pdns/recursordist/dnsname.hh
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void SuffixMatchNode()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: add
      Src: /src/pdns/pdns/recursordist/dnsname.hh:667,1
    - Dst: insert
      Src: /src/pdns/pdns/recursordist/dnsname.hh:668,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ' dnsname'
    argTypes:
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 669
      start: 665
    functionDepth: 2
    functionLinenumber: 665
    functionLinenumberEnd: 669
    functionName: add
    functionSourceFile: /src/pdns/pdns/recursordist/dnsname.hh
    functionUses: 113
    functionsReached:
    - add
    - insert
    linkageType: ''
    returnType: void
    signature: void add(const DNSName& dnsname)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: add
      Src: /src/pdns/pdns/recursordist/dnsname.hh:673,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/dnsname.hh:673,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' name'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 674
      start: 671
    functionDepth: 0
    functionLinenumber: 671
    functionLinenumberEnd: 674
    functionName: add
    functionSourceFile: /src/pdns/pdns/recursordist/dnsname.hh
    functionUses: 114
    functionsReached:
    - add
    - DNSName
    linkageType: ''
    returnType: void
    signature: void add(const std::string& name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: add
      Src: /src/pdns/pdns/recursordist/dnsname.hh:678,1
    - Dst: DNSName::DNSName
      Src: /src/pdns/pdns/recursordist/dnsname.hh:679,1
    - Dst: std::vector<std::string>::empty
      Src: /src/pdns/pdns/recursordist/dnsname.hh:680,1
    - Dst: DNSName::appendRawLabel
      Src: /src/pdns/pdns/recursordist/dnsname.hh:681,1
    - Dst: std::vector<std::string>::back
      Src: /src/pdns/pdns/recursordist/dnsname.hh:681,1
    - Dst: std::vector<std::string>::pop_back
      Src: /src/pdns/pdns/recursordist/dnsname.hh:682,1
    - Dst: insert
      Src: /src/pdns/pdns/recursordist/dnsname.hh:684,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - labels
    argTypes:
    - std::vector<std::string>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 685
      start: 676
    functionDepth: 2
    functionLinenumber: 676
    functionLinenumberEnd: 685
    functionName: add
    functionSourceFile: /src/pdns/pdns/recursordist/dnsname.hh
    functionUses: 115
    functionsReached:
    - add
    - std::vector<std::string>::empty
    - std::vector<std::string>::pop_back
    - DNSName::appendRawLabel
    - insert
    - DNSName::DNSName
    - std::vector<std::string>::back
    linkageType: ''
    returnType: void
    signature: void add(std::vector<std::string> labels)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: remove
      Src: /src/pdns/pdns/recursordist/dnsname.hh:689,1
    - Dst: erase
      Src: /src/pdns/pdns/recursordist/dnsname.hh:690,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ' name'
    argTypes:
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 691
      start: 687
    functionDepth: 0
    functionLinenumber: 687
    functionLinenumberEnd: 691
    functionName: remove
    functionSourceFile: /src/pdns/pdns/recursordist/dnsname.hh
    functionUses: 34
    functionsReached:
    - erase
    - remove
    linkageType: ''
    returnType: void
    signature: void remove(const DNSName& name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: remove
      Src: /src/pdns/pdns/recursordist/dnsname.hh:695,1
    - Dst: DNSName::DNSName
      Src: /src/pdns/pdns/recursordist/dnsname.hh:696,1
    - Dst: std::vector<std::string>::empty
      Src: /src/pdns/pdns/recursordist/dnsname.hh:697,1
    - Dst: DNSName::appendRawLabel
      Src: /src/pdns/pdns/recursordist/dnsname.hh:698,1
    - Dst: std::vector<std::string>::back
      Src: /src/pdns/pdns/recursordist/dnsname.hh:698,1
    - Dst: std::vector<std::string>::pop_back
      Src: /src/pdns/pdns/recursordist/dnsname.hh:699,1
    - Dst: erase
      Src: /src/pdns/pdns/recursordist/dnsname.hh:701,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - labels
    argTypes:
    - std::vector<std::string>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 702
      start: 693
    functionDepth: 0
    functionLinenumber: 693
    functionLinenumberEnd: 702
    functionName: remove
    functionSourceFile: /src/pdns/pdns/recursordist/dnsname.hh
    functionUses: 35
    functionsReached:
    - std::vector<std::string>::empty
    - std::vector<std::string>::pop_back
    - DNSName::appendRawLabel
    - DNSName::DNSName
    - erase
    - std::vector<std::string>::back
    - remove
    linkageType: ''
    returnType: void
    signature: void remove(std::vector<std::string> labels)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lookup
      Src: /src/pdns/pdns/recursordist/dnsname.hh:706,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' dnsname'
    argTypes:
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 707
      start: 704
    functionDepth: 0
    functionLinenumber: 704
    functionLinenumberEnd: 707
    functionName: check
    functionSourceFile: /src/pdns/pdns/recursordist/dnsname.hh
    functionUses: 30
    functionsReached:
    - lookup
    linkageType: ''
    returnType: bool
    signature: bool check(const DNSName& dnsname) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getBestMatch
      Src: /src/pdns/pdns/recursordist/dnsname.hh:711,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' name'
    argTypes:
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 712
      start: 709
    functionDepth: 0
    functionLinenumber: 709
    functionLinenumberEnd: 712
    functionName: getBestMatch
    functionSourceFile: /src/pdns/pdns/recursordist/dnsname.hh
    functionUses: 12
    functionsReached:
    - getBestMatch
    linkageType: ''
    returnType: std::optional<DNSName>
    signature: std::optional<DNSName> getBestMatch(const DNSName& name) const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: toString
      Src: /src/pdns/pdns/recursordist/dnsname.hh:723,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 726
      start: 714
    functionDepth: 0
    functionLinenumber: 714
    functionLinenumberEnd: 726
    functionName: toString
    functionSourceFile: /src/pdns/pdns/recursordist/dnsname.hh
    functionUses: 597
    functionsReached:
    - toString
    linkageType: ''
    returnType: std::string
    signature: std::string toString() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::vector::reserve
      Src: /src/pdns/pdns/recursordist/dnsname.hh:731,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/dnsname.hh:731,1
    - Dst: std::vector::emplace_back
      Src: /src/pdns/pdns/recursordist/dnsname.hh:733,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 736
      start: 728
    functionDepth: 0
    functionLinenumber: 728
    functionLinenumberEnd: 736
    functionName: toVector
    functionSourceFile: /src/pdns/pdns/recursordist/dnsname.hh
    functionUses: 2
    functionsReached:
    - std::vector::reserve
    - std::vector::emplace_back
    - size
    linkageType: ''
    returnType: std::vector<DNSName>
    signature: std::vector<DNSName> toVector() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash
      Src: /src/pdns/pdns/recursordist/dnsname.hh:746,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' dn'
    argTypes:
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 746
      start: 746
    functionDepth: 2
    functionLinenumber: 746
    functionLinenumberEnd: 746
    functionName: operator () (const DNSName& dn) const
    functionSourceFile: /src/pdns/pdns/recursordist/dnsname.hh
    functionUses: 0
    functionsReached:
    - hash
    linkageType: ''
    returnType: size_t
    signature: size_t operator () (const DNSName& dn) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash
      Src: /src/pdns/pdns/recursordist/dnsname.hh:746,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' dn'
    argTypes:
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 746
      start: 746
    functionDepth: 2
    functionLinenumber: 746
    functionLinenumberEnd: 746
    functionName: operator () (const DNSName& dn) const
    functionSourceFile: /src/pdns/pdns/recursordist/dnsname.hh
    functionUses: 0
    functionsReached:
    - hash
    linkageType: ''
    returnType: size_t
    signature: size_t operator () (const DNSName& dn) const
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: DNSName::empty
      Src: /src/pdns/pdns/recursordist/dnsname.hh:754,1
    - Dst: DNSName::empty
      Src: /src/pdns/pdns/recursordist/dnsname.hh:754,1
    - Dst: d_storage::size
      Src: /src/pdns/pdns/recursordist/dnsname.hh:754,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/dnsname.hh:754,1
    - Dst: cbegin
      Src: /src/pdns/pdns/recursordist/dnsname.hh:758,1
    - Dst: d_storage::cbegin
      Src: /src/pdns/pdns/recursordist/dnsname.hh:759,1
    - Dst: cend
      Src: /src/pdns/pdns/recursordist/dnsname.hh:760,1
    - Dst: d_storage::cend
      Src: /src/pdns/pdns/recursordist/dnsname.hh:760,1
    - Dst: dns_tolower
      Src: /src/pdns/pdns/recursordist/dnsname.hh:761,1
    - Dst: dns_tolower
      Src: /src/pdns/pdns/recursordist/dnsname.hh:761,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 10
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 766
      start: 752
    functionDepth: 0
    functionLinenumber: 752
    functionLinenumberEnd: 766
    functionName: DNSName::operator==(const DNSName& rhs) const
    functionSourceFile: /src/pdns/pdns/recursordist/dnsname.hh
    functionUses: 0
    functionsReached:
    - d_storage::size
    - dns_tolower
    - size
    - cbegin
    - DNSName::empty
    - cend
    - d_storage::cbegin
    - d_storage::cend
    linkageType: ''
    returnType: bool
    signature: bool DNSName::operator==(const DNSName& rhs) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::copy
      Src: /src/pdns/pdns/recursordist/dnsname.hh:771,1
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/dnsname.hh:771,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/dnsname.hh:771,1
    - Dst: std::ostream_iterator<DNSName>
      Src: /src/pdns/pdns/recursordist/dnsname.hh:771,1
    - Dst: std::ostringstream::str
      Src: /src/pdns/pdns/recursordist/dnsname.hh:772,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 773
      start: 769
    functionDepth: 0
    functionLinenumber: 769
    functionLinenumberEnd: 773
    functionName: toString
    functionSourceFile: /src/pdns/pdns/recursordist/dnsname.hh
    functionUses: 597
    functionsReached:
    - std::ostringstream::str
    - end
    - begin
    - std::ostream_iterator<DNSName>
    - std::copy
    linkageType: ''
    returnType: std::string
    signature: std::string toString() const
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: FD_ZERO
      Src: /src/pdns/pdns/recursordist/unix_utility.cc:63,1
    - Dst: FD_SET
      Src: /src/pdns/pdns/recursordist/unix_utility.cc:64,1
    - Dst: setNonBlocking
      Src: /src/pdns/pdns/recursordist/unix_utility.cc:66,1
    - Dst: connect
      Src: /src/pdns/pdns/recursordist/unix_utility.cc:68,1
    - Dst: select
      Src: /src/pdns/pdns/recursordist/unix_utility.cc:73,1
    - Dst: setBlocking
      Src: /src/pdns/pdns/recursordist/unix_utility.cc:74,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 5
    argNames:
    - sock
    - addr
    - sockaddr_size
    - timeout_sec
    - timeout_usec
    argTypes:
    - Utility::sock_t
    - sockaddr*
    - Utility::socklen_t
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 50
    functionDepth: 0
    functionLinenumber: 50
    functionLinenumberEnd: 77
    functionName: Utility::timed_connect
    functionSourceFile: /src/pdns/pdns/recursordist/unix_utility.cc
    functionUses: 2
    functionsReached:
    - select
    - FD_SET
    - setNonBlocking
    - setBlocking
    - FD_ZERO
    - connect
    linkageType: ''
    returnType: int
    signature: "int Utility::timed_connect( Utility::sock_t sock,\n    const sockaddr
      *addr,\n    Utility::socklen_t sockaddr_size,\n    int timeout_sec,\n    int
      timeout_usec )"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: setsockopt
      Src: /src/pdns/pdns/recursordist/unix_utility.cc:87,1
    - Dst: SLOG
      Src: /src/pdns/pdns/recursordist/unix_utility.cc:89,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/unix_utility.cc:89,1
    - Dst: withName
      Src: /src/pdns/pdns/recursordist/unix_utility.cc:90,1
    - Dst: setsockopt
      Src: /src/pdns/pdns/recursordist/unix_utility.cc:96,1
    - Dst: SLOG
      Src: /src/pdns/pdns/recursordist/unix_utility.cc:98,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/unix_utility.cc:98,1
    - Dst: withName
      Src: /src/pdns/pdns/recursordist/unix_utility.cc:99,1
    - Dst: setsockopt
      Src: /src/pdns/pdns/recursordist/unix_utility.cc:104,1
    - Dst: SLOG
      Src: /src/pdns/pdns/recursordist/unix_utility.cc:106,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/unix_utility.cc:106,1
    - Dst: withName
      Src: /src/pdns/pdns/recursordist/unix_utility.cc:107,1
    - Dst: setsockopt
      Src: /src/pdns/pdns/recursordist/unix_utility.cc:112,1
    - Dst: SLOG
      Src: /src/pdns/pdns/recursordist/unix_utility.cc:114,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/unix_utility.cc:114,1
    - Dst: withName
      Src: /src/pdns/pdns/recursordist/unix_utility.cc:115,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 2
    argNames:
    - af
    - sock
    argTypes:
    - int
    - sock_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 118
      start: 81
    functionDepth: 0
    functionLinenumber: 81
    functionLinenumberEnd: 118
    functionName: Utility::setBindAny
    functionSourceFile: /src/pdns/pdns/recursordist/unix_utility.cc
    functionUses: 6
    functionsReached:
    - withName
    - stringerror
    - SLOG
    - setsockopt
    linkageType: ''
    returnType: void
    signature: void Utility::setBindAny([[maybe_unused]] int af, [[maybe_unused]]
      sock_t sock)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Utility::inet_ntop
      Src: /src/pdns/pdns/recursordist/unix_utility.cc:122,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - af
    - src
    - dst
    - size
    argTypes:
    - int
    - char*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 120
    functionDepth: 0
    functionLinenumber: 120
    functionLinenumberEnd: 123
    functionName: Utility::inet_ntop
    functionSourceFile: /src/pdns/pdns/recursordist/unix_utility.cc
    functionUses: 2
    functionsReached:
    - Utility::inet_ntop
    linkageType: ''
    returnType: char
    signature: char *Utility::inet_ntop(int af, const char *src, char *dst, size_t
      size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Utility::sleep
      Src: /src/pdns/pdns/recursordist/unix_utility.cc:127,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - sec
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 125
    functionDepth: 0
    functionLinenumber: 125
    functionLinenumberEnd: 128
    functionName: Utility::sleep
    functionSourceFile: /src/pdns/pdns/recursordist/unix_utility.cc
    functionUses: 4
    functionsReached:
    - Utility::sleep
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int Utility::sleep(unsigned int sec)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ::nanosleep
      Src: /src/pdns/pdns/recursordist/unix_utility.cc:136,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - usec
    argTypes:
    - unsigned long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 137
      start: 130
    functionDepth: 0
    functionLinenumber: 130
    functionLinenumberEnd: 137
    functionName: Utility::usleep
    functionSourceFile: /src/pdns/pdns/recursordist/unix_utility.cc
    functionUses: 2
    functionsReached:
    - ::nanosleep
    linkageType: ''
    returnType: void
    signature: void Utility::usleep(unsigned long usec)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: getegid
      Src: /src/pdns/pdns/recursordist/unix_utility.cc:143,1
    - Dst: setgid
      Src: /src/pdns/pdns/recursordist/unix_utility.cc:144,1
    - Dst: SLOG
      Src: /src/pdns/pdns/recursordist/unix_utility.cc:146,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/unix_utility.cc:146,1
    - Dst: withName
      Src: /src/pdns/pdns/recursordist/unix_utility.cc:147,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/unix_utility.cc:147,1
    - Dst: exit
      Src: /src/pdns/pdns/recursordist/unix_utility.cc:148,1
    - Dst: SLOG
      Src: /src/pdns/pdns/recursordist/unix_utility.cc:151,1
    - Dst: withName
      Src: /src/pdns/pdns/recursordist/unix_utility.cc:152,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/unix_utility.cc:152,1
    - Dst: getpwuid
      Src: /src/pdns/pdns/recursordist/unix_utility.cc:154,1
    - Dst: SLOG
      Src: /src/pdns/pdns/recursordist/unix_utility.cc:156,1
    - Dst: withName
      Src: /src/pdns/pdns/recursordist/unix_utility.cc:157,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/unix_utility.cc:157,1
    - Dst: setgroups
      Src: /src/pdns/pdns/recursordist/unix_utility.cc:158,1
    - Dst: SLOG
      Src: /src/pdns/pdns/recursordist/unix_utility.cc:160,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/unix_utility.cc:160,1
    - Dst: withName
      Src: /src/pdns/pdns/recursordist/unix_utility.cc:161,1
    - Dst: exit
      Src: /src/pdns/pdns/recursordist/unix_utility.cc:162,1
    - Dst: initgroups
      Src: /src/pdns/pdns/recursordist/unix_utility.cc:165,1
    - Dst: SLOG
      Src: /src/pdns/pdns/recursordist/unix_utility.cc:167,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/unix_utility.cc:167,1
    - Dst: withName
      Src: /src/pdns/pdns/recursordist/unix_utility.cc:168,1
    - Dst: exit
      Src: /src/pdns/pdns/recursordist/unix_utility.cc:169,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 2
    argNames:
    - uid
    - gid
    argTypes:
    - uid_t
    - gid_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 173
      start: 141
    functionDepth: 0
    functionLinenumber: 141
    functionLinenumberEnd: 173
    functionName: Utility::dropGroupPrivs
    functionSourceFile: /src/pdns/pdns/recursordist/unix_utility.cc
    functionUses: 2
    functionsReached:
    - SLOG
    - Logging::Loggable
    - withName
    - stringerror
    - initgroups
    - getpwuid
    - setgroups
    - exit
    - getegid
    - setgid
    linkageType: ''
    returnType: void
    signature: void Utility::dropGroupPrivs( uid_t uid, gid_t gid )
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: geteuid
      Src: /src/pdns/pdns/recursordist/unix_utility.cc:179,1
    - Dst: setuid
      Src: /src/pdns/pdns/recursordist/unix_utility.cc:180,1
    - Dst: SLOG
      Src: /src/pdns/pdns/recursordist/unix_utility.cc:182,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/unix_utility.cc:182,1
    - Dst: withName
      Src: /src/pdns/pdns/recursordist/unix_utility.cc:183,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/unix_utility.cc:183,1
    - Dst: exit
      Src: /src/pdns/pdns/recursordist/unix_utility.cc:184,1
    - Dst: SLOG
      Src: /src/pdns/pdns/recursordist/unix_utility.cc:187,1
    - Dst: withName
      Src: /src/pdns/pdns/recursordist/unix_utility.cc:188,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/unix_utility.cc:188,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - uid
    argTypes:
    - uid_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 191
      start: 177
    functionDepth: 0
    functionLinenumber: 177
    functionLinenumberEnd: 191
    functionName: Utility::dropUserPrivs
    functionSourceFile: /src/pdns/pdns/recursordist/unix_utility.cc
    functionUses: 2
    functionsReached:
    - SLOG
    - geteuid
    - Logging::Loggable
    - withName
    - stringerror
    - setuid
    - exit
    linkageType: ''
    returnType: void
    signature: void Utility::dropUserPrivs( uid_t uid )
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Utility::getpid
      Src: /src/pdns/pdns/recursordist/unix_utility.cc:197,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 198
      start: 195
    functionDepth: 0
    functionLinenumber: 195
    functionLinenumberEnd: 198
    functionName: Utility::getpid
    functionSourceFile: /src/pdns/pdns/recursordist/unix_utility.cc
    functionUses: 4
    functionsReached:
    - Utility::getpid
    linkageType: ''
    returnType: Utility::pid_t
    signature: Utility::pid_t Utility::getpid( )
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Utility::gettimeofday
      Src: /src/pdns/pdns/recursordist/unix_utility.cc:204,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - tv
    argTypes:
    - struct timeval*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 205
      start: 202
    functionDepth: 0
    functionLinenumber: 202
    functionLinenumberEnd: 205
    functionName: Utility::gettimeofday
    functionSourceFile: /src/pdns/pdns/recursordist/unix_utility.cc
    functionUses: 48
    functionsReached:
    - Utility::gettimeofday
    linkageType: ''
    returnType: int
    signature: int Utility::gettimeofday( struct timeval *tv, void * /* tz */)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Utility::writev
      Src: /src/pdns/pdns/recursordist/unix_utility.cc:210,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - socket
    - vector
    - count
    argTypes:
    - int
    - iovec*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 211
      start: 208
    functionDepth: 0
    functionLinenumber: 208
    functionLinenumberEnd: 211
    functionName: Utility::writev
    functionSourceFile: /src/pdns/pdns/recursordist/unix_utility.cc
    functionUses: 8
    functionsReached:
    - Utility::writev
    linkageType: ''
    returnType: int
    signature: int Utility::writev(int socket, const iovec *vector, size_t count )
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 2
    argCount: 1
    argNames:
    - year
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 218
      start: 214
    functionDepth: 0
    functionLinenumber: 214
    functionLinenumberEnd: 218
    functionName: isleap
    functionSourceFile: /src/pdns/pdns/recursordist/unix_utility.cc
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int isleap(int year)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: isleap
      Src: /src/pdns/pdns/recursordist/unix_utility.cc:249,1
    - Dst: isleap
      Src: /src/pdns/pdns/recursordist/unix_utility.cc:274,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 47
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct tm*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 285
      start: 220
    functionDepth: 0
    functionLinenumber: 220
    functionLinenumberEnd: 285
    functionName: Utility::timegm
    functionSourceFile: /src/pdns/pdns/recursordist/unix_utility.cc
    functionUses: 2
    functionsReached:
    - isleap
    linkageType: ''
    returnType: time_t
    signature: time_t Utility::timegm(struct tm *const t)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LuaContext::registerFunction
      Src: /src/pdns/pdns/recursordist/test-luawrapper.cc:29,1
    - Dst: LuaContext::writeVariable
      Src: /src/pdns/pdns/recursordist/test-luawrapper.cc:31,1
    - Dst: LuaContext::executeCode
      Src: /src/pdns/pdns/recursordist/test-luawrapper.cc:32,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-luawrapper.cc:34,1
    - Dst: LuaContext::readVariable
      Src: /src/pdns/pdns/recursordist/test-luawrapper.cc:34,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 35
      start: 15
    functionDepth: 0
    functionLinenumber: 15
    functionLinenumberEnd: 35
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-luawrapper.cc
    functionUses: 0
    functionsReached:
    - LuaContext::registerFunction
    - LuaContext::writeVariable
    - LuaContext::executeCode
    - LuaContext::readVariable
    - BOOST_CHECK_EQUAL
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_registerFunction)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 24
      start: 24
    functionDepth: 0
    functionLinenumber: 24
    functionLinenumberEnd: 24
    functionName: increment
    functionSourceFile: /src/pdns/pdns/recursordist/test-luawrapper.cc
    functionUses: 9
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void increment()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LuaContext::writeFunction
      Src: /src/pdns/pdns/recursordist/test-luawrapper.cc:44,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/recursordist/test-luawrapper.cc:48,1
    - Dst: LuaContext::executeCode
      Src: /src/pdns/pdns/recursordist/test-luawrapper.cc:48,1
    - Dst: LuaContext::executeCode
      Src: /src/pdns/pdns/recursordist/test-luawrapper.cc:51,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/recursordist/test-luawrapper.cc:52,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-luawrapper.cc:53,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 41
    functionDepth: 0
    functionLinenumber: 41
    functionLinenumberEnd: 55
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-luawrapper.cc
    functionUses: 0
    functionsReached:
    - LuaContext::writeFunction
    - LuaContext::executeCode
    - BOOST_CHECK_EQUAL
    - BOOST_REQUIRE
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_boost_optional)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LuaContext::writeFunction
      Src: /src/pdns/pdns/recursordist/test-luawrapper.cc:60,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/recursordist/test-luawrapper.cc:64,1
    - Dst: LuaContext::executeCode
      Src: /src/pdns/pdns/recursordist/test-luawrapper.cc:64,1
    - Dst: LuaContext::executeCode
      Src: /src/pdns/pdns/recursordist/test-luawrapper.cc:67,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/recursordist/test-luawrapper.cc:68,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-luawrapper.cc:69,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 57
    functionDepth: 0
    functionLinenumber: 57
    functionLinenumberEnd: 71
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-luawrapper.cc
    functionUses: 0
    functionsReached:
    - LuaContext::writeFunction
    - LuaContext::executeCode
    - BOOST_CHECK_EQUAL
    - BOOST_REQUIRE
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_std_optional)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LuaContext::writeFunction
      Src: /src/pdns/pdns/recursordist/test-luawrapper.cc:78,1
    - Dst: LuaContext::executeCode
      Src: /src/pdns/pdns/recursordist/test-luawrapper.cc:83,1
    - Dst: boost::get<int>
      Src: /src/pdns/pdns/recursordist/test-luawrapper.cc:84,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/recursordist/test-luawrapper.cc:85,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-luawrapper.cc:86,1
    - Dst: LuaContext::executeCode
      Src: /src/pdns/pdns/recursordist/test-luawrapper.cc:90,1
    - Dst: boost::get<const std::string>
      Src: /src/pdns/pdns/recursordist/test-luawrapper.cc:91,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/recursordist/test-luawrapper.cc:92,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-luawrapper.cc:93,1
    - Dst: LuaContext::executeCode
      Src: /src/pdns/pdns/recursordist/test-luawrapper.cc:98,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/recursordist/test-luawrapper.cc:100,1
    - Dst: func
      Src: /src/pdns/pdns/recursordist/test-luawrapper.cc:100,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 73
    functionDepth: 0
    functionLinenumber: 73
    functionLinenumberEnd: 102
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-luawrapper.cc
    functionUses: 0
    functionsReached:
    - LuaContext::writeFunction
    - LuaContext::executeCode
    - func
    - boost::get<int>
    - BOOST_CHECK_EQUAL
    - boost::get<const std::string>
    - BOOST_CHECK_THROW
    - BOOST_REQUIRE
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_boost_variant)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LuaContext::writeFunction
      Src: /src/pdns/pdns/recursordist/test-luawrapper.cc:109,1
    - Dst: LuaContext::executeCode
      Src: /src/pdns/pdns/recursordist/test-luawrapper.cc:114,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/recursordist/test-luawrapper.cc:115,1
    - Dst: std::holds_alternative<int>
      Src: /src/pdns/pdns/recursordist/test-luawrapper.cc:115,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-luawrapper.cc:116,1
    - Dst: std::get<int>
      Src: /src/pdns/pdns/recursordist/test-luawrapper.cc:116,1
    - Dst: LuaContext::executeCode
      Src: /src/pdns/pdns/recursordist/test-luawrapper.cc:120,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/pdns/recursordist/test-luawrapper.cc:121,1
    - Dst: std::holds_alternative<const std::string>
      Src: /src/pdns/pdns/recursordist/test-luawrapper.cc:121,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-luawrapper.cc:122,1
    - Dst: std::get<const std::string>
      Src: /src/pdns/pdns/recursordist/test-luawrapper.cc:122,1
    - Dst: LuaContext::executeCode
      Src: /src/pdns/pdns/recursordist/test-luawrapper.cc:127,1
    - Dst: BOOST_CHECK_THROW
      Src: /src/pdns/pdns/recursordist/test-luawrapper.cc:129,1
    - Dst: func
      Src: /src/pdns/pdns/recursordist/test-luawrapper.cc:129,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 131
      start: 104
    functionDepth: 0
    functionLinenumber: 104
    functionLinenumberEnd: 131
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-luawrapper.cc
    functionUses: 0
    functionsReached:
    - std::holds_alternative<int>
    - std::holds_alternative<const std::string>
    - LuaContext::writeFunction
    - LuaContext::executeCode
    - func
    - BOOST_CHECK_EQUAL
    - BOOST_CHECK_THROW
    - BOOST_REQUIRE
    - std::get<const std::string>
    - std::get<int>
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_std_variant)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 3
    argNames:
    - s
    - start
    - length
    argTypes:
    - char*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 36
    functionDepth: 0
    functionLinenumber: 36
    functionLinenumberEnd: 54
    functionName: extract_bits
    functionSourceFile: /src/pdns/pdns/recursordist/base32.cc
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: unsigned char
    signature: unsigned char extract_bits(const char *s, int start, int length)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 18
    argCount: 4
    argNames:
    - s
    - x
    - start
    - length
    argTypes:
    - char*
    - int
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 57
    functionDepth: 0
    functionLinenumber: 57
    functionLinenumberEnd: 81
    functionName: set_bits
    functionSourceFile: /src/pdns/pdns/recursordist/base32.cc
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void set_bits(char* s, int x, int start, int length)
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 10
    argCount: 1
    argNames:
    - c
    argTypes:
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 84
    functionDepth: 0
    functionLinenumber: 84
    functionLinenumberEnd: 95
    functionName: unbase32hex
    functionSourceFile: /src/pdns/pdns/recursordist/base32.cc
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int unbase32hex(char c)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: string::reserve
      Src: /src/pdns/pdns/recursordist/base32.cc:102,1
    - Dst: length
      Src: /src/pdns/pdns/recursordist/base32.cc:102,1
    - Dst: length
      Src: /src/pdns/pdns/recursordist/base32.cc:104,1
    - Dst: length
      Src: /src/pdns/pdns/recursordist/base32.cc:105,1
    - Dst: string::append
      Src: /src/pdns/pdns/recursordist/base32.cc:122,1
    - Dst: extract_bits
      Src: /src/pdns/pdns/recursordist/base32.cc:122,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/base32.cc:122,1
    - Dst: string::append
      Src: /src/pdns/pdns/recursordist/base32.cc:123,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 25
    argCount: 1
    argNames:
    - ' input'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 127
      start: 98
    functionDepth: 0
    functionLinenumber: 98
    functionLinenumberEnd: 127
    functionName: toBase32Hex
    functionSourceFile: /src/pdns/pdns/recursordist/base32.cc
    functionUses: 38
    functionsReached:
    - length
    - string::reserve
    - string::append
    - extract_bits
    - c_str
    linkageType: ''
    returnType: string
    signature: string toBase32Hex(const std::string& input)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: length
      Src: /src/pdns/pdns/recursordist/base32.cc:135,1
    - Dst: unbase32hex
      Src: /src/pdns/pdns/recursordist/base32.cc:136,1
    - Dst: set_bits
      Src: /src/pdns/pdns/recursordist/base32.cc:139,1
    - Dst: string::append
      Src: /src/pdns/pdns/recursordist/base32.cc:141,1
    - Dst: memset
      Src: /src/pdns/pdns/recursordist/base32.cc:142,1
    - Dst: string::append
      Src: /src/pdns/pdns/recursordist/base32.cc:146,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 1
    argNames:
    - ' input'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 149
      start: 130
    functionDepth: 0
    functionLinenumber: 130
    functionLinenumberEnd: 149
    functionName: fromBase32Hex
    functionSourceFile: /src/pdns/pdns/recursordist/base32.cc
    functionUses: 18
    functionsReached:
    - length
    - unbase32hex
    - set_bits
    - string::append
    - memset
    linkageType: ''
    returnType: string
    signature: string fromBase32Hex(const std::string& input)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/pdns/pdns/recursordist/base32.cc:154,1
    - Dst: strcmp
      Src: /src/pdns/pdns/recursordist/base32.cc:154,1
    - Dst: printf
      Src: /src/pdns/pdns/recursordist/base32.cc:155,1
    - Dst: exit
      Src: /src/pdns/pdns/recursordist/base32.cc:156,1
    - Dst: strcmp
      Src: /src/pdns/pdns/recursordist/base32.cc:158,1
    - Dst: printf
      Src: /src/pdns/pdns/recursordist/base32.cc:159,1
    - Dst: toBase32Hex
      Src: /src/pdns/pdns/recursordist/base32.cc:161,1
    - Dst: fromBase32Hex
      Src: /src/pdns/pdns/recursordist/base32.cc:164,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 10
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 166
      start: 152
    functionDepth: 0
    functionLinenumber: 152
    functionLinenumberEnd: 166
    functionName: main
    functionSourceFile: /src/pdns/pdns/recursordist/base32.cc
    functionUses: 63
    functionsReached:
    - printf
    - strcmp
    - exit
    - toBase32Hex
    - fromBase32Hex
    linkageType: ''
    returnType: int
    signature: int main(int argc, char **argv)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' v'
    argTypes:
    - T
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 106
    functionDepth: 0
    functionLinenumber: 106
    functionLinenumberEnd: 109
    functionName: Logging::Loggable
    functionSourceFile: /src/pdns/pdns/recursordist/logging.hh
    functionUses: 500
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Loggable(const T& v)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: toStructuredLogString
      Src: /src/pdns/pdns/recursordist/logging.hh:116,1
    - Dst: toLogString
      Src: /src/pdns/pdns/recursordist/logging.hh:119,1
    - Dst: toString
      Src: /src/pdns/pdns/recursordist/logging.hh:122,1
    - Dst: Logging::to_string
      Src: /src/pdns/pdns/recursordist/logging.hh:125,1
    - Dst: std::ostringstream::str
      Src: /src/pdns/pdns/recursordist/logging.hh:130,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 132
      start: 110
    functionDepth: 0
    functionLinenumber: 110
    functionLinenumberEnd: 132
    functionName: Logging::to_string
    functionSourceFile: /src/pdns/pdns/recursordist/logging.hh
    functionUses: 9
    functionsReached:
    - toLogString
    - toString
    - toStructuredLogString
    - Logging::to_string
    - std::ostringstream::str
    linkageType: ''
    returnType: std::string
    signature: std::string to_string() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - ' v1'
    - ' v2'
    argTypes:
    - T
    - T
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 143
      start: 140
    functionDepth: 0
    functionLinenumber: 140
    functionLinenumberEnd: 143
    functionName: Logging::IterLoggable
    functionSourceFile: /src/pdns/pdns/recursordist/logging.hh
    functionUses: 17
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void IterLoggable(const T& v1, const T& v2)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: auto::toStructuredLogString
      Src: /src/pdns/pdns/recursordist/logging.hh:159,1
    - Dst: auto::toLogString
      Src: /src/pdns/pdns/recursordist/logging.hh:162,1
    - Dst: auto::toString
      Src: /src/pdns/pdns/recursordist/logging.hh:165,1
    - Dst: Logging::to_string
      Src: /src/pdns/pdns/recursordist/logging.hh:168,1
    - Dst: std::ostringstream::str
      Src: /src/pdns/pdns/recursordist/logging.hh:174,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 26
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 175
      start: 144
    functionDepth: 0
    functionLinenumber: 144
    functionLinenumberEnd: 175
    functionName: Logging::to_string
    functionSourceFile: /src/pdns/pdns/recursordist/logging.hh
    functionUses: 10
    functionsReached:
    - auto::toStructuredLogString
    - Logging::to_string
    - std::ostringstream::str
    - auto::toString
    - auto::toLogString
    linkageType: ''
    returnType: std::string
    signature: std::string to_string() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' v'
    argTypes:
    - T
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 106
    functionDepth: 0
    functionLinenumber: 106
    functionLinenumberEnd: 109
    functionName: Logging::Loggable
    functionSourceFile: /src/pdns/pdns/recursordist/logging.hh
    functionUses: 500
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Loggable(const T& v)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: toStructuredLogString
      Src: /src/pdns/pdns/recursordist/logging.hh:116,1
    - Dst: toLogString
      Src: /src/pdns/pdns/recursordist/logging.hh:119,1
    - Dst: toString
      Src: /src/pdns/pdns/recursordist/logging.hh:122,1
    - Dst: Logging::to_string
      Src: /src/pdns/pdns/recursordist/logging.hh:125,1
    - Dst: std::ostringstream::str
      Src: /src/pdns/pdns/recursordist/logging.hh:130,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 132
      start: 110
    functionDepth: 0
    functionLinenumber: 110
    functionLinenumberEnd: 132
    functionName: Logging::to_string
    functionSourceFile: /src/pdns/pdns/recursordist/logging.hh
    functionUses: 11
    functionsReached:
    - toLogString
    - toString
    - toStructuredLogString
    - Logging::to_string
    - std::ostringstream::str
    linkageType: ''
    returnType: std::string
    signature: std::string to_string() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - ' v1'
    - ' v2'
    argTypes:
    - T
    - T
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 143
      start: 140
    functionDepth: 0
    functionLinenumber: 140
    functionLinenumberEnd: 143
    functionName: Logging::IterLoggable
    functionSourceFile: /src/pdns/pdns/recursordist/logging.hh
    functionUses: 17
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void IterLoggable(const T& v1, const T& v2)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: auto::toStructuredLogString
      Src: /src/pdns/pdns/recursordist/logging.hh:159,1
    - Dst: auto::toLogString
      Src: /src/pdns/pdns/recursordist/logging.hh:162,1
    - Dst: auto::toString
      Src: /src/pdns/pdns/recursordist/logging.hh:165,1
    - Dst: Logging::to_string
      Src: /src/pdns/pdns/recursordist/logging.hh:168,1
    - Dst: std::ostringstream::str
      Src: /src/pdns/pdns/recursordist/logging.hh:174,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 26
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 175
      start: 144
    functionDepth: 0
    functionLinenumber: 144
    functionLinenumberEnd: 175
    functionName: Logging::to_string
    functionSourceFile: /src/pdns/pdns/recursordist/logging.hh
    functionUses: 12
    functionsReached:
    - auto::toStructuredLogString
    - Logging::to_string
    - std::ostringstream::str
    - auto::toString
    - auto::toLogString
    linkageType: ''
    returnType: std::string
    signature: std::string to_string() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - oldStyle
    - ','
    - slogCall
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 232
      start: 228
    functionDepth: 0
    functionLinenumber: 228
    functionLinenumberEnd: 232
    functionName: SLOG
    functionSourceFile: /src/pdns/pdns/recursordist/logging.hh
    functionUses: 532
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SLOG(oldStyle, slogCall)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - nonStructured
    - ','
    - structured
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 250
      start: 241
    functionDepth: 0
    functionLinenumber: 241
    functionLinenumberEnd: 250
    functionName: SLOG
    functionSourceFile: /src/pdns/pdns/recursordist/logging.hh
    functionUses: 532
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SLOG(nonStructured, structured)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - nonStructured
    - ','
    - structured
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 258
      start: 252
    functionDepth: 0
    functionLinenumber: 252
    functionLinenumberEnd: 258
    functionName: VERBOSESLOG
    functionSourceFile: /src/pdns/pdns/recursordist/logging.hh
    functionUses: 222
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: VERBOSESLOG(nonStructured, structured)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - oldStyle
    - ','
    - slogCall
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 274
      start: 265
    functionDepth: 0
    functionLinenumber: 265
    functionLinenumberEnd: 274
    functionName: SLOG
    functionSourceFile: /src/pdns/pdns/recursordist/logging.hh
    functionUses: 532
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SLOG(oldStyle, slogCall)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: insert
      Src: /src/pdns/pdns/recursordist/taskqueue.cc:34,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/taskqueue.cc:34,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - ' task'
    argTypes:
    - ResolveTask
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 39
      start: 31
    functionDepth: 2
    functionLinenumber: 31
    functionLinenumberEnd: 39
    functionName: pdns::TaskQueue::push
    functionSourceFile: /src/pdns/pdns/recursordist/taskqueue.cc
    functionUses: 0
    functionsReached:
    - std::move
    - insert
    linkageType: ''
    returnType: bool
    signature: bool TaskQueue::push(ResolveTask&& task)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: get
      Src: /src/pdns/pdns/recursordist/taskqueue.cc:43,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/taskqueue.cc:44,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 41
    functionDepth: 0
    functionLinenumber: 41
    functionLinenumberEnd: 46
    functionName: pdns::TaskQueue::pop
    functionSourceFile: /src/pdns/pdns/recursordist/taskqueue.cc
    functionUses: 0
    functionsReached:
    - get
    linkageType: ''
    returnType: ResolveTask
    signature: ResolveTask TaskQueue::pop()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: withName
      Src: /src/pdns/pdns/recursordist/taskqueue.cc:51,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/taskqueue.cc:51,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/taskqueue.cc:51,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/taskqueue.cc:51,1
    - Dst: auto::info
      Src: /src/pdns/pdns/recursordist/taskqueue.cc:52,1
    - Dst: Utility::gettimeofday
      Src: /src/pdns/pdns/recursordist/taskqueue.cc:56,1
    - Dst: d_func
      Src: /src/pdns/pdns/recursordist/taskqueue.cc:58,1
    - Dst: withName
      Src: /src/pdns/pdns/recursordist/taskqueue.cc:62,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/taskqueue.cc:62,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/taskqueue.cc:62,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/taskqueue.cc:62,1
    - Dst: auto::info
      Src: /src/pdns/pdns/recursordist/taskqueue.cc:63,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 1
    argNames:
    - logErrors
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 48
    functionDepth: 0
    functionLinenumber: 48
    functionLinenumberEnd: 67
    functionName: pdns::ResolveTask::run
    functionSourceFile: /src/pdns/pdns/recursordist/taskqueue.cc
    functionUses: 1
    functionsReached:
    - d_func
    - Logging::Loggable
    - withName
    - QType
    - Utility::gettimeofday
    - auto::info
    linkageType: ''
    returnType: bool
    signature: bool ResolveTask::run(bool logErrors) const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: insert
      Src: /src/pdns/pdns/recursordist/taskqueue.cc:34,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/taskqueue.cc:34,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - ' task'
    argTypes:
    - ResolveTask
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 39
      start: 31
    functionDepth: 2
    functionLinenumber: 31
    functionLinenumberEnd: 39
    functionName: pdns::TaskQueue::push
    functionSourceFile: /src/pdns/pdns/recursordist/taskqueue.cc
    functionUses: 0
    functionsReached:
    - std::move
    - insert
    linkageType: ''
    returnType: bool
    signature: bool TaskQueue::push(ResolveTask&& task)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: get
      Src: /src/pdns/pdns/recursordist/taskqueue.cc:43,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/taskqueue.cc:44,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 41
    functionDepth: 0
    functionLinenumber: 41
    functionLinenumberEnd: 46
    functionName: pdns::TaskQueue::pop
    functionSourceFile: /src/pdns/pdns/recursordist/taskqueue.cc
    functionUses: 0
    functionsReached:
    - get
    linkageType: ''
    returnType: ResolveTask
    signature: ResolveTask TaskQueue::pop()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: withName
      Src: /src/pdns/pdns/recursordist/taskqueue.cc:51,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/taskqueue.cc:51,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/taskqueue.cc:51,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/taskqueue.cc:51,1
    - Dst: auto::info
      Src: /src/pdns/pdns/recursordist/taskqueue.cc:52,1
    - Dst: Utility::gettimeofday
      Src: /src/pdns/pdns/recursordist/taskqueue.cc:56,1
    - Dst: d_func
      Src: /src/pdns/pdns/recursordist/taskqueue.cc:58,1
    - Dst: withName
      Src: /src/pdns/pdns/recursordist/taskqueue.cc:62,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/taskqueue.cc:62,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/taskqueue.cc:62,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/taskqueue.cc:62,1
    - Dst: auto::info
      Src: /src/pdns/pdns/recursordist/taskqueue.cc:63,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 1
    argNames:
    - logErrors
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 48
    functionDepth: 0
    functionLinenumber: 48
    functionLinenumberEnd: 67
    functionName: pdns::ResolveTask::run
    functionSourceFile: /src/pdns/pdns/recursordist/taskqueue.cc
    functionUses: 1
    functionsReached:
    - d_func
    - Logging::Loggable
    - withName
    - QType
    - Utility::gettimeofday
    - auto::info
    linkageType: ''
    returnType: bool
    signature: bool ResolveTask::run(bool logErrors) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ComboAddress::addressOnlyHash
      Src: /src/pdns/pdns/recursordist/taskqueue.cc:75,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' address'
    argTypes:
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 73
    functionDepth: 0
    functionLinenumber: 73
    functionLinenumberEnd: 76
    functionName: boost::hash_value
    functionSourceFile: /src/pdns/pdns/recursordist/taskqueue.cc
    functionUses: 0
    functionsReached:
    - ComboAddress::addressOnlyHash
    linkageType: ''
    returnType: size_t
    signature: size_t hash_value(const ComboAddress& address)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ComboAddress::addressOnlyHash
      Src: /src/pdns/pdns/recursordist/taskqueue.cc:75,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' address'
    argTypes:
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 73
    functionDepth: 0
    functionLinenumber: 73
    functionLinenumberEnd: 76
    functionName: boost::hash_value
    functionSourceFile: /src/pdns/pdns/recursordist/taskqueue.cc
    functionUses: 0
    functionsReached:
    - ComboAddress::addressOnlyHash
    linkageType: ''
    returnType: size_t
    signature: size_t hash_value(const ComboAddress& address)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: bf::stableBF::stableBF
      Src: /src/pdns/pdns/recursordist/nod.hh:50,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 49
    functionDepth: 2
    functionLinenumber: 49
    functionLinenumberEnd: 50
    functionName: nod::PersistentSBF::PersistentSBF
    functionSourceFile: /src/pdns/pdns/recursordist/nod.hh
    functionUses: 0
    functionsReached:
    - bf::stableBF::stableBF
    linkageType: ''
    returnType: void
    signature: void PersistentSBF()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: bf::stableBF::stableBF
      Src: /src/pdns/pdns/recursordist/nod.hh:52,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - num_cells
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 51
    functionDepth: 2
    functionLinenumber: 51
    functionLinenumberEnd: 52
    functionName: nod::PersistentSBF::PersistentSBF
    functionSourceFile: /src/pdns/pdns/recursordist/nod.hh
    functionUses: 0
    functionsReached:
    - bf::stableBF::stableBF
    linkageType: ''
    returnType: void
    signature: void PersistentSBF(uint32_t num_cells)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' prefix'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 54
    functionDepth: 0
    functionLinenumber: 54
    functionLinenumberEnd: 54
    functionName: nod::PersistentSBF::setPrefix
    functionSourceFile: /src/pdns/pdns/recursordist/nod.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setPrefix(const std::string& prefix)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/nod.hh:59,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' data'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 57
    functionDepth: 0
    functionLinenumber: 57
    functionLinenumberEnd: 60
    functionName: nod::PersistentSBF::add
    functionSourceFile: /src/pdns/pdns/recursordist/nod.hh
    functionUses: 0
    functionsReached:
    - lock
    linkageType: ''
    returnType: void
    signature: void add(const std::string& data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/nod.hh:61,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' data'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 61
    functionDepth: 0
    functionLinenumber: 61
    functionLinenumberEnd: 61
    functionName: nod::PersistentSBF::test
    functionSourceFile: /src/pdns/pdns/recursordist/nod.hh
    functionUses: 0
    functionsReached:
    - lock
    linkageType: ''
    returnType: bool
    signature: bool test(const std::string& data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/nod.hh:64,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' data'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 62
    functionDepth: 0
    functionLinenumber: 62
    functionLinenumberEnd: 65
    functionName: nod::PersistentSBF::testAndAdd
    functionSourceFile: /src/pdns/pdns/recursordist/nod.hh
    functionUses: 0
    functionsReached:
    - lock
    linkageType: ''
    returnType: bool
    signature: bool testAndAdd(const std::string& data)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 82
    functionDepth: 0
    functionLinenumber: 82
    functionLinenumberEnd: 82
    functionName: nod::NODDB::NODDB
    functionSourceFile: /src/pdns/pdns/recursordist/nod.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void NODDB()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - num_cells
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 83
    functionDepth: 0
    functionLinenumber: 83
    functionLinenumberEnd: 84
    functionName: nod::NODDB::NODDB
    functionSourceFile: /src/pdns/pdns/recursordist/nod.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void NODDB(uint32_t num_cells)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: setPrefix
      Src: /src/pdns/pdns/recursordist/nod.hh:89,1
    - Dst: nod::NODDB::init
      Src: /src/pdns/pdns/recursordist/nod.hh:90,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 87
    functionDepth: 0
    functionLinenumber: 87
    functionLinenumberEnd: 91
    functionName: nod::NODDB::init
    functionSourceFile: /src/pdns/pdns/recursordist/nod.hh
    functionUses: 1
    functionsReached:
    - setPrefix
    - nod::NODDB::init
    linkageType: ''
    returnType: bool
    signature: bool init(bool ignore_pid = false)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - secs
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 98
    functionDepth: 0
    functionLinenumber: 98
    functionLinenumberEnd: 98
    functionName: nod::NODDB::setSnapshotInterval
    functionSourceFile: /src/pdns/pdns/recursordist/nod.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setSnapshotInterval(unsigned int secs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: nod::NODDB::setCacheDir
      Src: /src/pdns/pdns/recursordist/nod.hh:99,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' cachedir'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 99
    functionDepth: 1
    functionLinenumber: 99
    functionLinenumberEnd: 99
    functionName: nod::NODDB::setCacheDir
    functionSourceFile: /src/pdns/pdns/recursordist/nod.hh
    functionUses: 1
    functionsReached:
    - nod::NODDB::setCacheDir
    linkageType: ''
    returnType: void
    signature: void setCacheDir(const std::string& cachedir)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: nod::NODDB::snapshotCurrent
      Src: /src/pdns/pdns/recursordist/nod.hh:100,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - tid
    argTypes:
    - std::thread::id
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 100
    functionDepth: 1
    functionLinenumber: 100
    functionLinenumberEnd: 100
    functionName: nod::NODDB::snapshotCurrent
    functionSourceFile: /src/pdns/pdns/recursordist/nod.hh
    functionUses: 1
    functionsReached:
    - nod::NODDB::snapshotCurrent
    linkageType: ''
    returnType: bool
    signature: bool snapshotCurrent(std::thread::id tid)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 111
      start: 111
    functionDepth: 0
    functionLinenumber: 111
    functionLinenumberEnd: 111
    functionName: nod::UniqueResponseDB::UniqueResponseDB
    functionSourceFile: /src/pdns/pdns/recursordist/nod.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void UniqueResponseDB()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - num_cells
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 113
      start: 112
    functionDepth: 0
    functionLinenumber: 112
    functionLinenumberEnd: 113
    functionName: nod::UniqueResponseDB::UniqueResponseDB
    functionSourceFile: /src/pdns/pdns/recursordist/nod.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void UniqueResponseDB(uint32_t num_cells)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: setPrefix
      Src: /src/pdns/pdns/recursordist/nod.hh:116,1
    - Dst: nod::UniqueResponseDB::init
      Src: /src/pdns/pdns/recursordist/nod.hh:117,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 118
      start: 114
    functionDepth: 0
    functionLinenumber: 114
    functionLinenumberEnd: 118
    functionName: nod::UniqueResponseDB::init
    functionSourceFile: /src/pdns/pdns/recursordist/nod.hh
    functionUses: 1
    functionsReached:
    - setPrefix
    - nod::UniqueResponseDB::init
    linkageType: ''
    returnType: bool
    signature: bool init(bool ignore_pid = false)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - secs
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 121
    functionDepth: 0
    functionLinenumber: 121
    functionLinenumberEnd: 121
    functionName: nod::UniqueResponseDB::setSnapshotInterval
    functionSourceFile: /src/pdns/pdns/recursordist/nod.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setSnapshotInterval(unsigned int secs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: nod::UniqueResponseDB::setCacheDir
      Src: /src/pdns/pdns/recursordist/nod.hh:122,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' cachedir'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 122
      start: 122
    functionDepth: 1
    functionLinenumber: 122
    functionLinenumberEnd: 122
    functionName: nod::UniqueResponseDB::setCacheDir
    functionSourceFile: /src/pdns/pdns/recursordist/nod.hh
    functionUses: 1
    functionsReached:
    - nod::UniqueResponseDB::setCacheDir
    linkageType: ''
    returnType: void
    signature: void setCacheDir(const std::string& cachedir)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: nod::UniqueResponseDB::snapshotCurrent
      Src: /src/pdns/pdns/recursordist/nod.hh:123,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - tid
    argTypes:
    - std::thread::id
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 123
    functionDepth: 1
    functionLinenumber: 123
    functionLinenumberEnd: 123
    functionName: nod::UniqueResponseDB::snapshotCurrent
    functionSourceFile: /src/pdns/pdns/recursordist/nod.hh
    functionUses: 1
    functionsReached:
    - nod::UniqueResponseDB::snapshotCurrent
    linkageType: ''
    returnType: bool
    signature: bool snapshotCurrent(std::thread::id tid)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: bf::stableBF::stableBF
      Src: /src/pdns/pdns/recursordist/nod.hh:50,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 49
    functionDepth: 2
    functionLinenumber: 49
    functionLinenumberEnd: 50
    functionName: nod::PersistentSBF::PersistentSBF
    functionSourceFile: /src/pdns/pdns/recursordist/nod.hh
    functionUses: 0
    functionsReached:
    - bf::stableBF::stableBF
    linkageType: ''
    returnType: void
    signature: void PersistentSBF()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: bf::stableBF::stableBF
      Src: /src/pdns/pdns/recursordist/nod.hh:52,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - num_cells
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 51
    functionDepth: 2
    functionLinenumber: 51
    functionLinenumberEnd: 52
    functionName: nod::PersistentSBF::PersistentSBF
    functionSourceFile: /src/pdns/pdns/recursordist/nod.hh
    functionUses: 0
    functionsReached:
    - bf::stableBF::stableBF
    linkageType: ''
    returnType: void
    signature: void PersistentSBF(uint32_t num_cells)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' prefix'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 54
    functionDepth: 0
    functionLinenumber: 54
    functionLinenumberEnd: 54
    functionName: nod::PersistentSBF::setPrefix
    functionSourceFile: /src/pdns/pdns/recursordist/nod.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setPrefix(const std::string& prefix)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/nod.hh:59,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' data'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 57
    functionDepth: 0
    functionLinenumber: 57
    functionLinenumberEnd: 60
    functionName: nod::PersistentSBF::add
    functionSourceFile: /src/pdns/pdns/recursordist/nod.hh
    functionUses: 0
    functionsReached:
    - lock
    linkageType: ''
    returnType: void
    signature: void add(const std::string& data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/nod.hh:61,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' data'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 61
    functionDepth: 0
    functionLinenumber: 61
    functionLinenumberEnd: 61
    functionName: nod::PersistentSBF::test
    functionSourceFile: /src/pdns/pdns/recursordist/nod.hh
    functionUses: 0
    functionsReached:
    - lock
    linkageType: ''
    returnType: bool
    signature: bool test(const std::string& data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/pdns/recursordist/nod.hh:64,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' data'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 62
    functionDepth: 0
    functionLinenumber: 62
    functionLinenumberEnd: 65
    functionName: nod::PersistentSBF::testAndAdd
    functionSourceFile: /src/pdns/pdns/recursordist/nod.hh
    functionUses: 0
    functionsReached:
    - lock
    linkageType: ''
    returnType: bool
    signature: bool testAndAdd(const std::string& data)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 82
    functionDepth: 0
    functionLinenumber: 82
    functionLinenumberEnd: 82
    functionName: nod::NODDB::NODDB
    functionSourceFile: /src/pdns/pdns/recursordist/nod.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void NODDB()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - num_cells
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 83
    functionDepth: 0
    functionLinenumber: 83
    functionLinenumberEnd: 84
    functionName: nod::NODDB::NODDB
    functionSourceFile: /src/pdns/pdns/recursordist/nod.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void NODDB(uint32_t num_cells)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: setPrefix
      Src: /src/pdns/pdns/recursordist/nod.hh:89,1
    - Dst: nod::NODDB::init
      Src: /src/pdns/pdns/recursordist/nod.hh:90,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 87
    functionDepth: 0
    functionLinenumber: 87
    functionLinenumberEnd: 91
    functionName: nod::NODDB::init
    functionSourceFile: /src/pdns/pdns/recursordist/nod.hh
    functionUses: 2
    functionsReached:
    - setPrefix
    - nod::NODDB::init
    linkageType: ''
    returnType: bool
    signature: bool init(bool ignore_pid = false)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - secs
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 98
    functionDepth: 0
    functionLinenumber: 98
    functionLinenumberEnd: 98
    functionName: nod::NODDB::setSnapshotInterval
    functionSourceFile: /src/pdns/pdns/recursordist/nod.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setSnapshotInterval(unsigned int secs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: nod::NODDB::setCacheDir
      Src: /src/pdns/pdns/recursordist/nod.hh:99,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' cachedir'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 99
    functionDepth: 1
    functionLinenumber: 99
    functionLinenumberEnd: 99
    functionName: nod::NODDB::setCacheDir
    functionSourceFile: /src/pdns/pdns/recursordist/nod.hh
    functionUses: 2
    functionsReached:
    - nod::NODDB::setCacheDir
    linkageType: ''
    returnType: void
    signature: void setCacheDir(const std::string& cachedir)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: nod::NODDB::snapshotCurrent
      Src: /src/pdns/pdns/recursordist/nod.hh:100,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - tid
    argTypes:
    - std::thread::id
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 100
    functionDepth: 1
    functionLinenumber: 100
    functionLinenumberEnd: 100
    functionName: nod::NODDB::snapshotCurrent
    functionSourceFile: /src/pdns/pdns/recursordist/nod.hh
    functionUses: 2
    functionsReached:
    - nod::NODDB::snapshotCurrent
    linkageType: ''
    returnType: bool
    signature: bool snapshotCurrent(std::thread::id tid)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 111
      start: 111
    functionDepth: 0
    functionLinenumber: 111
    functionLinenumberEnd: 111
    functionName: nod::UniqueResponseDB::UniqueResponseDB
    functionSourceFile: /src/pdns/pdns/recursordist/nod.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void UniqueResponseDB()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - num_cells
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 113
      start: 112
    functionDepth: 0
    functionLinenumber: 112
    functionLinenumberEnd: 113
    functionName: nod::UniqueResponseDB::UniqueResponseDB
    functionSourceFile: /src/pdns/pdns/recursordist/nod.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void UniqueResponseDB(uint32_t num_cells)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: setPrefix
      Src: /src/pdns/pdns/recursordist/nod.hh:116,1
    - Dst: nod::UniqueResponseDB::init
      Src: /src/pdns/pdns/recursordist/nod.hh:117,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 118
      start: 114
    functionDepth: 0
    functionLinenumber: 114
    functionLinenumberEnd: 118
    functionName: nod::UniqueResponseDB::init
    functionSourceFile: /src/pdns/pdns/recursordist/nod.hh
    functionUses: 2
    functionsReached:
    - setPrefix
    - nod::UniqueResponseDB::init
    linkageType: ''
    returnType: bool
    signature: bool init(bool ignore_pid = false)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - secs
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 121
    functionDepth: 0
    functionLinenumber: 121
    functionLinenumberEnd: 121
    functionName: nod::UniqueResponseDB::setSnapshotInterval
    functionSourceFile: /src/pdns/pdns/recursordist/nod.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setSnapshotInterval(unsigned int secs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: nod::UniqueResponseDB::setCacheDir
      Src: /src/pdns/pdns/recursordist/nod.hh:122,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' cachedir'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 122
      start: 122
    functionDepth: 1
    functionLinenumber: 122
    functionLinenumberEnd: 122
    functionName: nod::UniqueResponseDB::setCacheDir
    functionSourceFile: /src/pdns/pdns/recursordist/nod.hh
    functionUses: 2
    functionsReached:
    - nod::UniqueResponseDB::setCacheDir
    linkageType: ''
    returnType: void
    signature: void setCacheDir(const std::string& cachedir)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: nod::UniqueResponseDB::snapshotCurrent
      Src: /src/pdns/pdns/recursordist/nod.hh:123,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - tid
    argTypes:
    - std::thread::id
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 123
    functionDepth: 1
    functionLinenumber: 123
    functionLinenumberEnd: 123
    functionName: nod::UniqueResponseDB::snapshotCurrent
    functionSourceFile: /src/pdns/pdns/recursordist/nod.hh
    functionUses: 2
    functionsReached:
    - nod::UniqueResponseDB::snapshotCurrent
    linkageType: ''
    returnType: bool
    signature: bool snapshotCurrent(std::thread::id tid)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/base64.cc:37,1
    - Dst: clear
      Src: /src/pdns/pdns/recursordist/base64.cc:38,1
    - Dst: length
      Src: /src/pdns/pdns/recursordist/base64.cc:42,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/recursordist/base64.cc:42,1
    - Dst: length
      Src: /src/pdns/pdns/recursordist/base64.cc:42,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/recursordist/base64.cc:42,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/base64.cc:43,1
    - Dst: length
      Src: /src/pdns/pdns/recursordist/base64.cc:45,1
    - Dst: resize
      Src: /src/pdns/pdns/recursordist/base64.cc:46,1
    - Dst: std::unique_ptr<BIO, void (*)(BIO*)>
      Src: /src/pdns/pdns/recursordist/base64.cc:47,1
    - Dst: BIO_new
      Src: /src/pdns/pdns/recursordist/base64.cc:47,1
    - Dst: BIO_s_mem
      Src: /src/pdns/pdns/recursordist/base64.cc:47,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/base64.cc:49,1
    - Dst: BIO_write
      Src: /src/pdns/pdns/recursordist/base64.cc:51,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/base64.cc:51,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/base64.cc:51,1
    - Dst: length
      Src: /src/pdns/pdns/recursordist/base64.cc:51,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/recursordist/base64.cc:51,1
    - Dst: length
      Src: /src/pdns/pdns/recursordist/base64.cc:51,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/base64.cc:52,1
    - Dst: BIO_new
      Src: /src/pdns/pdns/recursordist/base64.cc:54,1
    - Dst: BIO_f_base64
      Src: /src/pdns/pdns/recursordist/base64.cc:54,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/base64.cc:56,1
    - Dst: std::unique_ptr<BIO, void (*)(BIO*)>
      Src: /src/pdns/pdns/recursordist/base64.cc:58,1
    - Dst: BIO_push
      Src: /src/pdns/pdns/recursordist/base64.cc:58,1
    - Dst: auto::release
      Src: /src/pdns/pdns/recursordist/base64.cc:58,1
    - Dst: BIO_set_flags
      Src: /src/pdns/pdns/recursordist/base64.cc:59,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/base64.cc:59,1
    - Dst: BIO_read
      Src: /src/pdns/pdns/recursordist/base64.cc:60,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/base64.cc:60,1
    - Dst: BIO_should_retry
      Src: /src/pdns/pdns/recursordist/base64.cc:61,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/base64.cc:61,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/base64.cc:62,1
    - Dst: auto::reset
      Src: /src/pdns/pdns/recursordist/base64.cc:64,1
    - Dst: resize
      Src: /src/pdns/pdns/recursordist/base64.cc:66,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 29
    argCount: 2
    argNames:
    - ' src'
    - ' dst'
    argTypes:
    - std::string
    - Container
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 35
    functionDepth: 2
    functionLinenumber: 35
    functionLinenumberEnd: 70
    functionName: B64Decode
    functionSourceFile: /src/pdns/pdns/recursordist/base64.cc
    functionUses: 51
    functionsReached:
    - BIO_read
    - BIO_set_flags
    - BIO_s_mem
    - BIO_should_retry
    - static_cast<int>
    - resize
    - std::unique_ptr<BIO, void (*)(BIO*)>
    - BIO_write
    - c_str
    - clear
    - empty
    - at
    - BIO_push
    - BIO_new
    - pdns::max
    - BIO_f_base64
    - auto::get
    - std::runtime_error
    - length
    - auto::reset
    - auto::release
    linkageType: ''
    returnType: int
    signature: int B64Decode(const std::string& src, Container& dst)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/base64.cc:76,1
    - Dst: std::unique_ptr<BIO, void (*)(BIO*)>
      Src: /src/pdns/pdns/recursordist/base64.cc:77,1
    - Dst: BIO_new
      Src: /src/pdns/pdns/recursordist/base64.cc:77,1
    - Dst: BIO_s_mem
      Src: /src/pdns/pdns/recursordist/base64.cc:77,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/base64.cc:79,1
    - Dst: BIO_new
      Src: /src/pdns/pdns/recursordist/base64.cc:81,1
    - Dst: BIO_f_base64
      Src: /src/pdns/pdns/recursordist/base64.cc:81,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/base64.cc:83,1
    - Dst: std::unique_ptr<BIO, void (*)(BIO*)>
      Src: /src/pdns/pdns/recursordist/base64.cc:85,1
    - Dst: BIO_push
      Src: /src/pdns/pdns/recursordist/base64.cc:85,1
    - Dst: auto::release
      Src: /src/pdns/pdns/recursordist/base64.cc:85,1
    - Dst: BIO_set_flags
      Src: /src/pdns/pdns/recursordist/base64.cc:86,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/base64.cc:86,1
    - Dst: BIO_write
      Src: /src/pdns/pdns/recursordist/base64.cc:87,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/base64.cc:87,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/base64.cc:87,1
    - Dst: length
      Src: /src/pdns/pdns/recursordist/base64.cc:87,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/recursordist/base64.cc:88,1
    - Dst: length
      Src: /src/pdns/pdns/recursordist/base64.cc:88,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/base64.cc:89,1
    - Dst: BIO_flush
      Src: /src/pdns/pdns/recursordist/base64.cc:91,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/base64.cc:91,1
    - Dst: BIO_get_mem_data
      Src: /src/pdns/pdns/recursordist/base64.cc:94,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/base64.cc:94,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/base64.cc:96,1
    - Dst: auto::reset
      Src: /src/pdns/pdns/recursordist/base64.cc:98,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 21
    argCount: 1
    argNames:
    - ' src'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 74
    functionDepth: 0
    functionLinenumber: 74
    functionLinenumberEnd: 102
    functionName: Base64Encode
    functionSourceFile: /src/pdns/pdns/recursordist/base64.cc
    functionUses: 36
    functionsReached:
    - BIO_f_base64
    - auto::release
    - length
    - auto::get
    - BIO_push
    - std::unique_ptr<BIO, void (*)(BIO*)>
    - std::runtime_error
    - c_str
    - static_cast<size_t>
    - BIO_get_mem_data
    - BIO_write
    - auto::reset
    - BIO_set_flags
    - BIO_flush
    - empty
    - std::string
    - BIO_s_mem
    - BIO_new
    linkageType: ''
    returnType: std::string
    signature: std::string Base64Encode(const std::string& src)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Base64Encode
      Src: /src/pdns/pdns/recursordist/base64.cc:108,1
    - Dst: B64Decode
      Src: /src/pdns/pdns/recursordist/base64.cc:114,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 106
    functionDepth: 0
    functionLinenumber: 106
    functionLinenumberEnd: 120
    functionName: main
    functionSourceFile: /src/pdns/pdns/recursordist/base64.cc
    functionUses: 63
    functionsReached:
    - B64Decode
    - Base64Encode
    linkageType: ''
    returnType: int
    signature: int main()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 31
      start: 31
    functionDepth: 0
    functionLinenumber: 31
    functionLinenumberEnd: 31
    functionName: pdns_ucontext_t
    functionSourceFile: /src/pdns/pdns/recursordist/mtasker_context.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void pdns_ucontext_t(pdns_ucontext_t const&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 32
      start: 32
    functionDepth: 0
    functionLinenumber: 32
    functionLinenumberEnd: 32
    functionName: '& operator=(pdns_ucontext_t const&)'
    functionSourceFile: /src/pdns/pdns/recursordist/mtasker_context.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: pdns_ucontext_t
    signature: pdns_ucontext_t & operator=(pdns_ucontext_t const&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 33
      start: 33
    functionDepth: 0
    functionLinenumber: 33
    functionLinenumberEnd: 33
    functionName: pdns_ucontext_t
    functionSourceFile: /src/pdns/pdns/recursordist/mtasker_context.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void pdns_ucontext_t(pdns_ucontext_t&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 34
      start: 34
    functionDepth: 0
    functionLinenumber: 34
    functionLinenumberEnd: 34
    functionName: '& operator=(pdns_ucontext_t&&)'
    functionSourceFile: /src/pdns/pdns/recursordist/mtasker_context.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: pdns_ucontext_t
    signature: pdns_ucontext_t & operator=(pdns_ucontext_t&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: __sanitizer_start_switch_fiber
      Src: /src/pdns/pdns/recursordist/mtasker_context.hh:62,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - startOfStack
    - stackSize
    argTypes:
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 60
    functionDepth: 0
    functionLinenumber: 60
    functionLinenumberEnd: 63
    functionName: notifyStackSwitch
    functionSourceFile: /src/pdns/pdns/recursordist/mtasker_context.hh
    functionUses: 3
    functionsReached:
    - __sanitizer_start_switch_fiber
    linkageType: ''
    returnType: void
    signature: void notifyStackSwitch(const void* startOfStack, size_t stackSize)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 65
    functionDepth: 0
    functionLinenumber: 65
    functionLinenumberEnd: 66
    functionName: notifyStackSwitch
    functionSourceFile: /src/pdns/pdns/recursordist/mtasker_context.hh
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void notifyStackSwitch(const void* /* startOfStack */, size_t /* stackSize
      */)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: notifyStackSwitch
      Src: /src/pdns/pdns/recursordist/mtasker_context.hh:72,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 69
    functionDepth: 1
    functionLinenumber: 69
    functionLinenumberEnd: 74
    functionName: notifyStackSwitchToKernel
    functionSourceFile: /src/pdns/pdns/recursordist/mtasker_context.hh
    functionUses: 4
    functionsReached:
    - notifyStackSwitch
    linkageType: ''
    returnType: void
    signature: void notifyStackSwitchToKernel()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: __sanitizer_finish_switch_fiber
      Src: /src/pdns/pdns/recursordist/mtasker_context.hh:80,1
    - Dst: __sanitizer_finish_switch_fiber
      Src: /src/pdns/pdns/recursordist/mtasker_context.hh:83,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 76
    functionDepth: 0
    functionLinenumber: 76
    functionLinenumberEnd: 87
    functionName: notifyStackSwitchDone
    functionSourceFile: /src/pdns/pdns/recursordist/mtasker_context.hh
    functionUses: 7
    functionsReached:
    - __sanitizer_finish_switch_fiber
    linkageType: ''
    returnType: void
    signature: void notifyStackSwitchDone()
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: is_number
      Src: /src/pdns/pdns/recursordist/json.cc:34,1
    - Dst: int_value
      Src: /src/pdns/pdns/recursordist/json.cc:35,1
    - Dst: is_string
      Src: /src/pdns/pdns/recursordist/json.cc:38,1
    - Dst: pdns::checked_stoi<int>
      Src: /src/pdns/pdns/recursordist/json.cc:40,1
    - Dst: string_value
      Src: /src/pdns/pdns/recursordist/json.cc:40,1
    - Dst: JsonException
      Src: /src/pdns/pdns/recursordist/json.cc:42,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/json.cc:42,1
    - Dst: JsonException
      Src: /src/pdns/pdns/recursordist/json.cc:49,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/json.cc:49,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 4
    argNames:
    - ' container'
    - ' key'
    - have_default
    - default_value
    argTypes:
    - Json
    - std::string
    - bool
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 31
    functionDepth: 0
    functionLinenumber: 31
    functionLinenumberEnd: 50
    functionName: intFromJsonInternal
    functionSourceFile: /src/pdns/pdns/recursordist/json.cc
    functionUses: 5
    functionsReached:
    - is_string
    - string_value
    - is_number
    - pdns::checked_stoi<int>
    - int_value
    - string
    - JsonException
    linkageType: ''
    returnType: int
    signature: int intFromJsonInternal(const Json& container, const std::string& key,
      const bool have_default, const int default_value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: intFromJsonInternal
      Src: /src/pdns/pdns/recursordist/json.cc:54,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' container'
    - ' key'
    argTypes:
    - Json
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 52
    functionDepth: 0
    functionLinenumber: 52
    functionLinenumberEnd: 55
    functionName: intFromJson
    functionSourceFile: /src/pdns/pdns/recursordist/json.cc
    functionUses: 5
    functionsReached:
    - intFromJsonInternal
    linkageType: ''
    returnType: int
    signature: int intFromJson(const Json& container, const std::string& key)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: intFromJsonInternal
      Src: /src/pdns/pdns/recursordist/json.cc:59,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' container'
    - ' key'
    - default_value
    argTypes:
    - Json
    - std::string
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 57
    functionDepth: 0
    functionLinenumber: 57
    functionLinenumberEnd: 60
    functionName: intFromJson
    functionSourceFile: /src/pdns/pdns/recursordist/json.cc
    functionUses: 5
    functionsReached:
    - intFromJsonInternal
    linkageType: ''
    returnType: int
    signature: int intFromJson(const Json& container, const std::string& key, const
      int default_value)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: intFromJsonInternal
      Src: /src/pdns/pdns/recursordist/json.cc:64,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/recursordist/json.cc:64,1
    - Dst: JsonException
      Src: /src/pdns/pdns/recursordist/json.cc:68,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/json.cc:68,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 4
    argNames:
    - ' container'
    - ' key'
    - have_default
    - default_value
    argTypes:
    - Json
    - std::string
    - bool
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 62
    functionDepth: 0
    functionLinenumber: 62
    functionLinenumberEnd: 69
    functionName: uintFromJsonInternal
    functionSourceFile: /src/pdns/pdns/recursordist/json.cc
    functionUses: 2
    functionsReached:
    - intFromJsonInternal
    - JsonException
    - string
    - static_cast<int>
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int uintFromJsonInternal(const Json& container, const std::string&
      key, const bool have_default, const unsigned int default_value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: uintFromJsonInternal
      Src: /src/pdns/pdns/recursordist/json.cc:73,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' container'
    - ' key'
    argTypes:
    - Json
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 71
    functionDepth: 0
    functionLinenumber: 71
    functionLinenumberEnd: 74
    functionName: uintFromJson
    functionSourceFile: /src/pdns/pdns/recursordist/json.cc
    functionUses: 5
    functionsReached:
    - uintFromJsonInternal
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int uintFromJson(const Json& container, const std::string&
      key)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: uintFromJsonInternal
      Src: /src/pdns/pdns/recursordist/json.cc:78,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' container'
    - ' key'
    - default_value
    argTypes:
    - Json
    - std::string
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 76
    functionDepth: 0
    functionLinenumber: 76
    functionLinenumberEnd: 79
    functionName: uintFromJson
    functionSourceFile: /src/pdns/pdns/recursordist/json.cc
    functionUses: 5
    functionsReached:
    - uintFromJsonInternal
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int uintFromJson(const Json& container, const std::string&
      key, const unsigned int default_value)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: is_number
      Src: /src/pdns/pdns/recursordist/json.cc:84,1
    - Dst: number_value
      Src: /src/pdns/pdns/recursordist/json.cc:85,1
    - Dst: is_string
      Src: /src/pdns/pdns/recursordist/json.cc:88,1
    - Dst: std::stod
      Src: /src/pdns/pdns/recursordist/json.cc:90,1
    - Dst: string_value
      Src: /src/pdns/pdns/recursordist/json.cc:90,1
    - Dst: JsonException
      Src: /src/pdns/pdns/recursordist/json.cc:92,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/json.cc:92,1
    - Dst: JsonException
      Src: /src/pdns/pdns/recursordist/json.cc:99,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/json.cc:99,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 4
    argNames:
    - ' container'
    - ' key'
    - have_default
    - default_value
    argTypes:
    - Json
    - std::string
    - bool
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 81
    functionDepth: 0
    functionLinenumber: 81
    functionLinenumberEnd: 100
    functionName: doubleFromJsonInternal
    functionSourceFile: /src/pdns/pdns/recursordist/json.cc
    functionUses: 2
    functionsReached:
    - is_string
    - is_number
    - string_value
    - number_value
    - string
    - std::stod
    - JsonException
    linkageType: ''
    returnType: double
    signature: double doubleFromJsonInternal(const Json& container, const std::string&
      key, const bool have_default, const double default_value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: doubleFromJsonInternal
      Src: /src/pdns/pdns/recursordist/json.cc:104,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' container'
    - ' key'
    argTypes:
    - Json
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 102
    functionDepth: 0
    functionLinenumber: 102
    functionLinenumberEnd: 105
    functionName: doubleFromJson
    functionSourceFile: /src/pdns/pdns/recursordist/json.cc
    functionUses: 0
    functionsReached:
    - doubleFromJsonInternal
    linkageType: ''
    returnType: double
    signature: double doubleFromJson(const Json& container, const std::string& key)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: doubleFromJsonInternal
      Src: /src/pdns/pdns/recursordist/json.cc:109,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' container'
    - ' key'
    - default_value
    argTypes:
    - Json
    - std::string
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 107
    functionDepth: 0
    functionLinenumber: 107
    functionLinenumberEnd: 110
    functionName: doubleFromJson
    functionSourceFile: /src/pdns/pdns/recursordist/json.cc
    functionUses: 0
    functionsReached:
    - doubleFromJsonInternal
    linkageType: ''
    returnType: double
    signature: double doubleFromJson(const Json& container, const std::string& key,
      const double default_value)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: is_string
      Src: /src/pdns/pdns/recursordist/json.cc:115,1
    - Dst: string_value
      Src: /src/pdns/pdns/recursordist/json.cc:116,1
    - Dst: JsonException
      Src: /src/pdns/pdns/recursordist/json.cc:118,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/json.cc:118,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - ' container'
    - key
    argTypes:
    - Json
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 119
      start: 112
    functionDepth: 0
    functionLinenumber: 112
    functionLinenumberEnd: 119
    functionName: stringFromJson
    functionSourceFile: /src/pdns/pdns/recursordist/json.cc
    functionUses: 17
    functionsReached:
    - JsonException
    - is_string
    - string
    - string_value
    linkageType: ''
    returnType: string
    signature: string stringFromJson(const Json& container, const std::string &key)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: is_bool
      Src: /src/pdns/pdns/recursordist/json.cc:124,1
    - Dst: bool_value
      Src: /src/pdns/pdns/recursordist/json.cc:125,1
    - Dst: JsonException
      Src: /src/pdns/pdns/recursordist/json.cc:130,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/json.cc:130,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 4
    argNames:
    - ' container'
    - ' key'
    - have_default
    - default_value
    argTypes:
    - Json
    - std::string
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 131
      start: 121
    functionDepth: 0
    functionLinenumber: 121
    functionLinenumberEnd: 131
    functionName: boolFromJsonInternal
    functionSourceFile: /src/pdns/pdns/recursordist/json.cc
    functionUses: 2
    functionsReached:
    - is_bool
    - JsonException
    - string
    - bool_value
    linkageType: ''
    returnType: bool
    signature: bool boolFromJsonInternal(const Json& container, const std::string&
      key, const bool have_default, const bool default_value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: boolFromJsonInternal
      Src: /src/pdns/pdns/recursordist/json.cc:135,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' container'
    - ' key'
    argTypes:
    - Json
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 136
      start: 133
    functionDepth: 0
    functionLinenumber: 133
    functionLinenumberEnd: 136
    functionName: boolFromJson
    functionSourceFile: /src/pdns/pdns/recursordist/json.cc
    functionUses: 6
    functionsReached:
    - boolFromJsonInternal
    linkageType: ''
    returnType: bool
    signature: bool boolFromJson(const Json& container, const std::string& key)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: boolFromJsonInternal
      Src: /src/pdns/pdns/recursordist/json.cc:140,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' container'
    - ' key'
    - default_value
    argTypes:
    - Json
    - std::string
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 141
      start: 138
    functionDepth: 0
    functionLinenumber: 138
    functionLinenumberEnd: 141
    functionName: boolFromJson
    functionSourceFile: /src/pdns/pdns/recursordist/json.cc
    functionUses: 6
    functionsReached:
    - boolFromJsonInternal
    linkageType: ''
    returnType: bool
    signature: bool boolFromJson(const Json& container, const std::string& key, const
      bool default_value)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 32
      start: 30
    functionDepth: 0
    functionLinenumber: 30
    functionLinenumberEnd: 32
    functionName: getCURLPtr
    functionSourceFile: /src/pdns/pdns/recursordist/minicurl.cc
    functionUses: 7
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: getCURLPtr(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 35
      start: 33
    functionDepth: 0
    functionLinenumber: 33
    functionLinenumberEnd: 35
    functionName: getCURLPtr
    functionSourceFile: /src/pdns/pdns/recursordist/minicurl.cc
    functionUses: 7
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: getCURLPtr(x)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: std::atomic_flag::test_and_set
      Src: /src/pdns/pdns/recursordist/minicurl.cc:41,1
    - Dst: curl_global_init
      Src: /src/pdns/pdns/recursordist/minicurl.cc:44,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/minicurl.cc:46,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 37
    functionDepth: 0
    functionLinenumber: 37
    functionLinenumberEnd: 48
    functionName: MiniCurl::init
    functionSourceFile: /src/pdns/pdns/recursordist/minicurl.cc
    functionUses: 1
    functionsReached:
    - curl_global_init
    - std::atomic_flag::test_and_set
    - std::runtime_error
    linkageType: ''
    returnType: void
    signature: void MiniCurl::init()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::unique_ptr<CURL, decltype(&curl_easy_cleanup)>
      Src: /src/pdns/pdns/recursordist/minicurl.cc:53,1
    - Dst: curl_easy_init
      Src: /src/pdns/pdns/recursordist/minicurl.cc:53,1
    - Dst: curl_easy_init
      Src: /src/pdns/pdns/recursordist/minicurl.cc:55,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/minicurl.cc:58,1
    - Dst: curl_easy_setopt
      Src: /src/pdns/pdns/recursordist/minicurl.cc:60,1
    - Dst: getCURLPtr
      Src: /src/pdns/pdns/recursordist/minicurl.cc:60,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/minicurl.cc:60,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - ' useragent'
    - failonerror
    argTypes:
    - string
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 50
    functionDepth: 0
    functionLinenumber: 50
    functionLinenumberEnd: 61
    functionName: MiniCurl::MiniCurl
    functionSourceFile: /src/pdns/pdns/recursordist/minicurl.cc
    functionUses: 2
    functionsReached:
    - std::unique_ptr<CURL, decltype(&curl_easy_cleanup)>
    - getCURLPtr
    - curl_easy_setopt
    - std::runtime_error
    - curl_easy_init
    - c_str
    linkageType: ''
    returnType: void
    signature: void MiniCurl::MiniCurl(const string& useragent, bool failonerror)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MiniCurl::clearHeaders
      Src: /src/pdns/pdns/recursordist/minicurl.cc:65,1
    - Dst: MiniCurl::clearHostsList
      Src: /src/pdns/pdns/recursordist/minicurl.cc:66,1
    - Dst: curl_easy_cleanup
      Src: /src/pdns/pdns/recursordist/minicurl.cc:68,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 63
    functionDepth: 0
    functionLinenumber: 63
    functionLinenumberEnd: 70
    functionName: MiniCurl::~MiniCurl()
    functionSourceFile: /src/pdns/pdns/recursordist/minicurl.cc
    functionUses: 0
    functionsReached:
    - curl_easy_cleanup
    - MiniCurl::clearHostsList
    - MiniCurl::clearHeaders
    linkageType: ''
    returnType: void
    signature: void MiniCurl::~MiniCurl()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<MiniCurl*>
      Src: /src/pdns/pdns/recursordist/minicurl.cc:75,1
    - Dst: MiniCurl*::d_data::append
      Src: /src/pdns/pdns/recursordist/minicurl.cc:76,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 4
    argNames:
    - ptr
    - size
    - nmemb
    - userdata
    argTypes:
    - char*
    - size_t
    - size_t
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 72
    functionDepth: 0
    functionLinenumber: 72
    functionLinenumberEnd: 80
    functionName: MiniCurl::write_callback
    functionSourceFile: /src/pdns/pdns/recursordist/minicurl.cc
    functionUses: 0
    functionsReached:
    - MiniCurl*::d_data::append
    - static_cast<MiniCurl*>
    linkageType: ''
    returnType: size_t
    signature: size_t MiniCurl::write_callback(char *ptr, size_t size, size_t nmemb,
      void *userdata)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<MiniCurl*>
      Src: /src/pdns/pdns/recursordist/minicurl.cc:86,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/recursordist/minicurl.cc:87,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/recursordist/minicurl.cc:88,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 2
    argNames:
    - clientp
    - dlnow
    argTypes:
    - void*
    - curl_off_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 83
    functionDepth: 0
    functionLinenumber: 83
    functionLinenumberEnd: 92
    functionName: MiniCurl::progress_callback
    functionSourceFile: /src/pdns/pdns/recursordist/minicurl.cc
    functionUses: 0
    functionsReached:
    - static_cast<size_t>
    - static_cast<MiniCurl*>
    linkageType: ''
    returnType: size_t
    signature: size_t MiniCurl::progress_callback(void *clientp, curl_off_t /* dltotal
      */, curl_off_t dlnow, curl_off_t /* ultotal */, curl_off_t /* ulnow */)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<MiniCurl*>
      Src: /src/pdns/pdns/recursordist/minicurl.cc:97,1
    - Dst: static_cast<double>
      Src: /src/pdns/pdns/recursordist/minicurl.cc:98,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/recursordist/minicurl.cc:99,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 5
    argNames:
    - clientp
    - dltotal
    - dlnow
    - ultotal
    - ulnow
    argTypes:
    - void*
    - double
    - double
    - double
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 94
    functionDepth: 0
    functionLinenumber: 94
    functionLinenumberEnd: 103
    functionName: MiniCurl::progress_callback
    functionSourceFile: /src/pdns/pdns/recursordist/minicurl.cc
    functionUses: 0
    functionsReached:
    - static_cast<size_t>
    - static_cast<MiniCurl*>
    - static_cast<double>
    linkageType: ''
    returnType: size_t
    signature: size_t MiniCurl::progress_callback(void *clientp, double dltotal, double
      dlnow, double ultotal, double ulnow)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: find
      Src: /src/pdns/pdns/recursordist/minicurl.cc:108,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/recursordist/minicurl.cc:110,1
    - Dst: find
      Src: /src/pdns/pdns/recursordist/minicurl.cc:112,1
    - Dst: substr
      Src: /src/pdns/pdns/recursordist/minicurl.cc:114,1
    - Dst: substr
      Src: /src/pdns/pdns/recursordist/minicurl.cc:116,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 1
    argNames:
    - ' url'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 106
    functionDepth: 0
    functionLinenumber: 106
    functionLinenumberEnd: 117
    functionName: extractHostFromURL
    functionSourceFile: /src/pdns/pdns/recursordist/minicurl.cc
    functionUses: 1
    functionsReached:
    - substr
    - runtime_error
    - find
    linkageType: ''
    returnType: string
    signature: string extractHostFromURL(const std::string& url)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: curl_easy_reset
      Src: /src/pdns/pdns/recursordist/minicurl.cc:122,1
    - Dst: getCURLPtr
      Src: /src/pdns/pdns/recursordist/minicurl.cc:122,1
    - Dst: MiniCurl::clearHostsList
      Src: /src/pdns/pdns/recursordist/minicurl.cc:128,1
    - Dst: extractHostFromURL
      Src: /src/pdns/pdns/recursordist/minicurl.cc:134,1
    - Dst: string::find
      Src: /src/pdns/pdns/recursordist/minicurl.cc:136,1
    - Dst: pdns::checked_stoi<uint16_t>
      Src: /src/pdns/pdns/recursordist/minicurl.cc:139,1
    - Dst: string::substr
      Src: /src/pdns/pdns/recursordist/minicurl.cc:139,1
    - Dst: string::substr
      Src: /src/pdns/pdns/recursordist/minicurl.cc:141,1
    - Dst: sqlstr
      Src: /src/pdns/pdns/recursordist/minicurl.cc:145,1
    - Dst: boost::format
      Src: /src/pdns/pdns/recursordist/minicurl.cc:145,1
    - Dst: ComboAddress*::toString
      Src: /src/pdns/pdns/recursordist/minicurl.cc:145,1
    - Dst: curl_slist_append
      Src: /src/pdns/pdns/recursordist/minicurl.cc:146,1
    - Dst: string::c_str
      Src: /src/pdns/pdns/recursordist/minicurl.cc:146,1
    - Dst: std::unique_ptr<struct curl_slist, decltype(&curl_slist_free_all)>
      Src: /src/pdns/pdns/recursordist/minicurl.cc:150,1
    - Dst: curl_easy_setopt
      Src: /src/pdns/pdns/recursordist/minicurl.cc:155,1
    - Dst: getCURLPtr
      Src: /src/pdns/pdns/recursordist/minicurl.cc:155,1
    - Dst: getCURLPtr
      Src: /src/pdns/pdns/recursordist/minicurl.cc:155,1
    - Dst: curl_easy_setopt
      Src: /src/pdns/pdns/recursordist/minicurl.cc:158,1
    - Dst: getCURLPtr
      Src: /src/pdns/pdns/recursordist/minicurl.cc:158,1
    - Dst: ComboAddress*::toString
      Src: /src/pdns/pdns/recursordist/minicurl.cc:158,1
    - Dst: curl_easy_setopt
      Src: /src/pdns/pdns/recursordist/minicurl.cc:160,1
    - Dst: getCURLPtr
      Src: /src/pdns/pdns/recursordist/minicurl.cc:160,1
    - Dst: curl_easy_setopt
      Src: /src/pdns/pdns/recursordist/minicurl.cc:164,1
    - Dst: getCURLPtr
      Src: /src/pdns/pdns/recursordist/minicurl.cc:164,1
    - Dst: curl_easy_setopt
      Src: /src/pdns/pdns/recursordist/minicurl.cc:166,1
    - Dst: getCURLPtr
      Src: /src/pdns/pdns/recursordist/minicurl.cc:166,1
    - Dst: curl_easy_setopt
      Src: /src/pdns/pdns/recursordist/minicurl.cc:169,1
    - Dst: getCURLPtr
      Src: /src/pdns/pdns/recursordist/minicurl.cc:169,1
    - Dst: curl_easy_setopt
      Src: /src/pdns/pdns/recursordist/minicurl.cc:170,1
    - Dst: getCURLPtr
      Src: /src/pdns/pdns/recursordist/minicurl.cc:170,1
    - Dst: curl_easy_setopt
      Src: /src/pdns/pdns/recursordist/minicurl.cc:171,1
    - Dst: getCURLPtr
      Src: /src/pdns/pdns/recursordist/minicurl.cc:171,1
    - Dst: curl_easy_setopt
      Src: /src/pdns/pdns/recursordist/minicurl.cc:172,1
    - Dst: getCURLPtr
      Src: /src/pdns/pdns/recursordist/minicurl.cc:172,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/minicurl.cc:172,1
    - Dst: curl_easy_setopt
      Src: /src/pdns/pdns/recursordist/minicurl.cc:173,1
    - Dst: getCURLPtr
      Src: /src/pdns/pdns/recursordist/minicurl.cc:173,1
    - Dst: curl_easy_setopt
      Src: /src/pdns/pdns/recursordist/minicurl.cc:174,1
    - Dst: getCURLPtr
      Src: /src/pdns/pdns/recursordist/minicurl.cc:174,1
    - Dst: curl_easy_setopt
      Src: /src/pdns/pdns/recursordist/minicurl.cc:179,1
    - Dst: getCURLPtr
      Src: /src/pdns/pdns/recursordist/minicurl.cc:179,1
    - Dst: curl_easy_setopt
      Src: /src/pdns/pdns/recursordist/minicurl.cc:181,1
    - Dst: getCURLPtr
      Src: /src/pdns/pdns/recursordist/minicurl.cc:181,1
    - Dst: curl_easy_setopt
      Src: /src/pdns/pdns/recursordist/minicurl.cc:182,1
    - Dst: getCURLPtr
      Src: /src/pdns/pdns/recursordist/minicurl.cc:182,1
    - Dst: curl_easy_setopt
      Src: /src/pdns/pdns/recursordist/minicurl.cc:184,1
    - Dst: getCURLPtr
      Src: /src/pdns/pdns/recursordist/minicurl.cc:184,1
    - Dst: curl_easy_setopt
      Src: /src/pdns/pdns/recursordist/minicurl.cc:185,1
    - Dst: getCURLPtr
      Src: /src/pdns/pdns/recursordist/minicurl.cc:185,1
    - Dst: curl_easy_setopt
      Src: /src/pdns/pdns/recursordist/minicurl.cc:189,1
    - Dst: getCURLPtr
      Src: /src/pdns/pdns/recursordist/minicurl.cc:189,1
    - Dst: static_cast<long>
      Src: /src/pdns/pdns/recursordist/minicurl.cc:189,1
    - Dst: CURL_AT_LEAST_VERSION
      Src: /src/pdns/pdns/recursordist/minicurl.cc:191,1
    - Dst: curl_easy_setopt
      Src: /src/pdns/pdns/recursordist/minicurl.cc:192,1
    - Dst: getCURLPtr
      Src: /src/pdns/pdns/recursordist/minicurl.cc:192,1
    - Dst: MiniCurl::clearHeaders
      Src: /src/pdns/pdns/recursordist/minicurl.cc:195,1
    - Dst: clear
      Src: /src/pdns/pdns/recursordist/minicurl.cc:196,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 42
    argCount: 7
    argNames:
    - ' str'
    - rem
    - src
    - timeout
    - byteslimit
    - fastopen
    - verify
    argTypes:
    - std::string
    - ComboAddress*
    - ComboAddress*
    - int
    - size_t
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 197
      start: 119
    functionDepth: 1
    functionLinenumber: 119
    functionLinenumberEnd: 197
    functionName: MiniCurl::setupURL
    functionSourceFile: /src/pdns/pdns/recursordist/minicurl.cc
    functionUses: 2
    functionsReached:
    - getCURLPtr
    - CURL_AT_LEAST_VERSION
    - string::substr
    - MiniCurl::clearHostsList
    - curl_easy_setopt
    - curl_slist_append
    - extractHostFromURL
    - string::find
    - c_str
    - clear
    - string::c_str
    - MiniCurl::clearHeaders
    - pdns::checked_stoi<uint16_t>
    - std::unique_ptr<struct curl_slist, decltype(&curl_slist_free_all)>
    - curl_easy_reset
    - static_cast<long>
    - sqlstr
    - boost::format
    - ComboAddress*::toString
    linkageType: ''
    returnType: void
    signature: void MiniCurl::setupURL(const std::string& str, const ComboAddress*
      rem, const ComboAddress* src, int timeout, size_t byteslimit, [[maybe_unused]]
      bool fastopen, bool verify)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: MiniCurl::setupURL
      Src: /src/pdns/pdns/recursordist/minicurl.cc:201,1
    - Dst: MiniCurl::setHeaders
      Src: /src/pdns/pdns/recursordist/minicurl.cc:203,1
    - Dst: curl_easy_perform
      Src: /src/pdns/pdns/recursordist/minicurl.cc:205,1
    - Dst: getCURLPtr
      Src: /src/pdns/pdns/recursordist/minicurl.cc:205,1
    - Dst: curl_easy_getinfo
      Src: /src/pdns/pdns/recursordist/minicurl.cc:207,1
    - Dst: getCURLPtr
      Src: /src/pdns/pdns/recursordist/minicurl.cc:207,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/minicurl.cc:210,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/minicurl.cc:210,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/minicurl.cc:210,1
    - Dst: curl_easy_strerror
      Src: /src/pdns/pdns/recursordist/minicurl.cc:210,1
    - Dst: clear
      Src: /src/pdns/pdns/recursordist/minicurl.cc:213,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 9
    argNames:
    - ' str'
    - rem
    - src
    - timeout
    - headers
    - fastopen
    - verify
    - byteslimit
    - http_status
    argTypes:
    - std::string
    - ComboAddress*
    - ComboAddress*
    - int
    - MiniCurlHeaders*
    - bool
    - bool
    - size_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 215
      start: 199
    functionDepth: 1
    functionLinenumber: 199
    functionLinenumberEnd: 215
    functionName: MiniCurl::getURL
    functionSourceFile: /src/pdns/pdns/recursordist/minicurl.cc
    functionUses: 2
    functionsReached:
    - getCURLPtr
    - std::to_string
    - MiniCurl::setupURL
    - std::runtime_error
    - string
    - curl_easy_getinfo
    - curl_easy_perform
    - clear
    - MiniCurl::setHeaders
    - curl_easy_strerror
    linkageType: ''
    returnType: std::string
    signature: std::string MiniCurl::getURL(const std::string& str, const ComboAddress*
      rem, const ComboAddress* src, int timeout, const MiniCurlHeaders* headers, [[maybe_unused]]
      bool fastopen, bool verify, size_t byteslimit, int http_status)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: MiniCurl::setupURL
      Src: /src/pdns/pdns/recursordist/minicurl.cc:219,1
    - Dst: MiniCurl::setHeaders
      Src: /src/pdns/pdns/recursordist/minicurl.cc:220,1
    - Dst: curl_easy_setopt
      Src: /src/pdns/pdns/recursordist/minicurl.cc:221,1
    - Dst: getCURLPtr
      Src: /src/pdns/pdns/recursordist/minicurl.cc:221,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/minicurl.cc:221,1
    - Dst: curl_easy_setopt
      Src: /src/pdns/pdns/recursordist/minicurl.cc:222,1
    - Dst: getCURLPtr
      Src: /src/pdns/pdns/recursordist/minicurl.cc:222,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/minicurl.cc:222,1
    - Dst: curl_easy_perform
      Src: /src/pdns/pdns/recursordist/minicurl.cc:224,1
    - Dst: getCURLPtr
      Src: /src/pdns/pdns/recursordist/minicurl.cc:224,1
    - Dst: curl_easy_getinfo
      Src: /src/pdns/pdns/recursordist/minicurl.cc:227,1
    - Dst: getCURLPtr
      Src: /src/pdns/pdns/recursordist/minicurl.cc:227,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/minicurl.cc:230,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/minicurl.cc:230,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/minicurl.cc:230,1
    - Dst: curl_easy_strerror
      Src: /src/pdns/pdns/recursordist/minicurl.cc:230,1
    - Dst: clear
      Src: /src/pdns/pdns/recursordist/minicurl.cc:234,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 6
    argNames:
    - ' str'
    - ' postdata'
    - ' headers'
    - timeout
    - fastopen
    - verify
    argTypes:
    - std::string
    - std::string
    - MiniCurlHeaders
    - int
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 236
      start: 217
    functionDepth: 1
    functionLinenumber: 217
    functionLinenumberEnd: 236
    functionName: MiniCurl::postURL
    functionSourceFile: /src/pdns/pdns/recursordist/minicurl.cc
    functionUses: 1
    functionsReached:
    - getCURLPtr
    - curl_easy_setopt
    - std::to_string
    - MiniCurl::setupURL
    - std::runtime_error
    - string
    - size
    - curl_easy_getinfo
    - curl_easy_perform
    - clear
    - c_str
    - MiniCurl::setHeaders
    - curl_easy_strerror
    linkageType: ''
    returnType: std::string
    signature: std::string MiniCurl::postURL(const std::string& str, const std::string&
      postdata, MiniCurlHeaders& headers, int timeout, bool fastopen, bool verify)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: curl_easy_setopt
      Src: /src/pdns/pdns/recursordist/minicurl.cc:241,1
    - Dst: getCURLPtr
      Src: /src/pdns/pdns/recursordist/minicurl.cc:241,1
    - Dst: reset
      Src: /src/pdns/pdns/recursordist/minicurl.cc:243,1
    - Dst: curl_slist_free_all
      Src: /src/pdns/pdns/recursordist/minicurl.cc:245,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 249
      start: 238
    functionDepth: 0
    functionLinenumber: 238
    functionLinenumberEnd: 249
    functionName: MiniCurl::clearHeaders
    functionSourceFile: /src/pdns/pdns/recursordist/minicurl.cc
    functionUses: 4
    functionsReached:
    - curl_slist_free_all
    - getCURLPtr
    - reset
    - curl_easy_setopt
    linkageType: ''
    returnType: void
    signature: void MiniCurl::clearHeaders()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: curl_easy_setopt
      Src: /src/pdns/pdns/recursordist/minicurl.cc:254,1
    - Dst: getCURLPtr
      Src: /src/pdns/pdns/recursordist/minicurl.cc:254,1
    - Dst: reset
      Src: /src/pdns/pdns/recursordist/minicurl.cc:256,1
    - Dst: curl_slist_free_all
      Src: /src/pdns/pdns/recursordist/minicurl.cc:258,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 262
      start: 251
    functionDepth: 0
    functionLinenumber: 251
    functionLinenumberEnd: 262
    functionName: MiniCurl::clearHostsList
    functionSourceFile: /src/pdns/pdns/recursordist/minicurl.cc
    functionUses: 4
    functionsReached:
    - curl_slist_free_all
    - getCURLPtr
    - reset
    - curl_easy_setopt
    linkageType: ''
    returnType: void
    signature: void MiniCurl::clearHostsList()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: release
      Src: /src/pdns/pdns/recursordist/minicurl.cc:273,1
    - Dst: std::unique_ptr<struct curl_slist, decltype(&curl_slist_free_all)>
      Src: /src/pdns/pdns/recursordist/minicurl.cc:275,1
    - Dst: curl_slist_append
      Src: /src/pdns/pdns/recursordist/minicurl.cc:275,1
    - Dst: std::stringstream::str
      Src: /src/pdns/pdns/recursordist/minicurl.cc:275,1
    - Dst: curl_slist_append
      Src: /src/pdns/pdns/recursordist/minicurl.cc:277,1
    - Dst: std::stringstream::str
      Src: /src/pdns/pdns/recursordist/minicurl.cc:277,1
    - Dst: curl_easy_setopt
      Src: /src/pdns/pdns/recursordist/minicurl.cc:280,1
    - Dst: getCURLPtr
      Src: /src/pdns/pdns/recursordist/minicurl.cc:280,1
    - Dst: getCURLPtr
      Src: /src/pdns/pdns/recursordist/minicurl.cc:280,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - ' headers'
    argTypes:
    - MiniCurlHeaders
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 282
      start: 264
    functionDepth: 0
    functionLinenumber: 264
    functionLinenumberEnd: 282
    functionName: MiniCurl::setHeaders
    functionSourceFile: /src/pdns/pdns/recursordist/minicurl.cc
    functionUses: 4
    functionsReached:
    - getCURLPtr
    - curl_easy_setopt
    - curl_slist_append
    - release
    - std::stringstream::str
    - std::unique_ptr<struct curl_slist, decltype(&curl_slist_free_all)>
    linkageType: ''
    returnType: void
    signature: void MiniCurl::setHeaders(const MiniCurlHeaders& headers)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 43
    functionName: DNSFilterEngine::DNSFilterEngine
    functionSourceFile: /src/pdns/pdns/recursordist/filterpo.cc
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void DNSFilterEngine::DNSFilterEngine()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: findExactNamedPolicy
      Src: /src/pdns/pdns/recursordist/filterpo.cc:47,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' qname'
    - ' pol'
    argTypes:
    - DNSName
    - DNSFilterEngine::Policy
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 45
    functionDepth: 0
    functionLinenumber: 45
    functionLinenumberEnd: 48
    functionName: DNSFilterEngine::Zone::findExactQNamePolicy(const DNSName& qname,
      DNSFilterEngine::Policy& pol) const
    functionSourceFile: /src/pdns/pdns/recursordist/filterpo.cc
    functionUses: 0
    functionsReached:
    - findExactNamedPolicy
    linkageType: ''
    returnType: bool
    signature: bool DNSFilterEngine::Zone::findExactQNamePolicy(const DNSName& qname,
      DNSFilterEngine::Policy& pol) const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: findExactNamedPolicy
      Src: /src/pdns/pdns/recursordist/filterpo.cc:52,1
    - Dst: d_hitdata::d_trigger::appendRawLabel
      Src: /src/pdns/pdns/recursordist/filterpo.cc:54,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - ' qname'
    - ' pol'
    argTypes:
    - DNSName
    - DNSFilterEngine::Policy
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 50
    functionDepth: 0
    functionLinenumber: 50
    functionLinenumberEnd: 58
    functionName: DNSFilterEngine::Zone::findExactNSPolicy(const DNSName& qname, DNSFilterEngine::Policy&
      pol) const
    functionSourceFile: /src/pdns/pdns/recursordist/filterpo.cc
    functionUses: 0
    functionsReached:
    - findExactNamedPolicy
    - d_hitdata::d_trigger::appendRawLabel
    linkageType: ''
    returnType: bool
    signature: bool DNSFilterEngine::Zone::findExactNSPolicy(const DNSName& qname,
      DNSFilterEngine::Policy& pol) const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lookup
      Src: /src/pdns/pdns/recursordist/filterpo.cc:62,1
    - Dst: setHitData
      Src: /src/pdns/pdns/recursordist/filterpo.cc:64,1
    - Dst: Zone::maskToRPZ
      Src: /src/pdns/pdns/recursordist/filterpo.cc:64,1
    - Dst: toString
      Src: /src/pdns/pdns/recursordist/filterpo.cc:64,1
    - Dst: d_hitdata::d_trigger::appendRawLabel
      Src: /src/pdns/pdns/recursordist/filterpo.cc:65,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - ' addr'
    - ' pol'
    argTypes:
    - ComboAddress
    - DNSFilterEngine::Policy
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 60
    functionDepth: 0
    functionLinenumber: 60
    functionLinenumberEnd: 69
    functionName: DNSFilterEngine::Zone::findNSIPPolicy(const ComboAddress& addr,
      DNSFilterEngine::Policy& pol) const
    functionSourceFile: /src/pdns/pdns/recursordist/filterpo.cc
    functionUses: 0
    functionsReached:
    - toString
    - lookup
    - Zone::maskToRPZ
    - setHitData
    - d_hitdata::d_trigger::appendRawLabel
    linkageType: ''
    returnType: bool
    signature: bool DNSFilterEngine::Zone::findNSIPPolicy(const ComboAddress& addr,
      DNSFilterEngine::Policy& pol) const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lookup
      Src: /src/pdns/pdns/recursordist/filterpo.cc:73,1
    - Dst: setHitData
      Src: /src/pdns/pdns/recursordist/filterpo.cc:75,1
    - Dst: Zone::maskToRPZ
      Src: /src/pdns/pdns/recursordist/filterpo.cc:75,1
    - Dst: toString
      Src: /src/pdns/pdns/recursordist/filterpo.cc:75,1
    - Dst: d_hitdata::d_trigger::appendRawLabel
      Src: /src/pdns/pdns/recursordist/filterpo.cc:76,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - ' addr'
    - ' pol'
    argTypes:
    - ComboAddress
    - DNSFilterEngine::Policy
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 71
    functionDepth: 0
    functionLinenumber: 71
    functionLinenumberEnd: 80
    functionName: DNSFilterEngine::Zone::findResponsePolicy(const ComboAddress& addr,
      DNSFilterEngine::Policy& pol) const
    functionSourceFile: /src/pdns/pdns/recursordist/filterpo.cc
    functionUses: 0
    functionsReached:
    - toString
    - lookup
    - Zone::maskToRPZ
    - setHitData
    - d_hitdata::d_trigger::appendRawLabel
    linkageType: ''
    returnType: bool
    signature: bool DNSFilterEngine::Zone::findResponsePolicy(const ComboAddress&
      addr, DNSFilterEngine::Policy& pol) const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lookup
      Src: /src/pdns/pdns/recursordist/filterpo.cc:84,1
    - Dst: setHitData
      Src: /src/pdns/pdns/recursordist/filterpo.cc:86,1
    - Dst: Zone::maskToRPZ
      Src: /src/pdns/pdns/recursordist/filterpo.cc:86,1
    - Dst: toString
      Src: /src/pdns/pdns/recursordist/filterpo.cc:86,1
    - Dst: d_hitdata::d_trigger::appendRawLabel
      Src: /src/pdns/pdns/recursordist/filterpo.cc:87,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - ' addr'
    - ' pol'
    argTypes:
    - ComboAddress
    - DNSFilterEngine::Policy
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 82
    functionDepth: 0
    functionLinenumber: 82
    functionLinenumberEnd: 91
    functionName: DNSFilterEngine::Zone::findClientPolicy(const ComboAddress& addr,
      DNSFilterEngine::Policy& pol) const
    functionSourceFile: /src/pdns/pdns/recursordist/filterpo.cc
    functionUses: 0
    functionsReached:
    - toString
    - lookup
    - Zone::maskToRPZ
    - setHitData
    - d_hitdata::d_trigger::appendRawLabel
    linkageType: ''
    returnType: bool
    signature: bool DNSFilterEngine::Zone::findClientPolicy(const ComboAddress& addr,
      DNSFilterEngine::Policy& pol) const
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/filterpo.cc:95,1
    - Dst: find
      Src: /src/pdns/pdns/recursordist/filterpo.cc:107,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/filterpo.cc:109,1
    - Dst: DNSName::chopOff
      Src: /src/pdns/pdns/recursordist/filterpo.cc:115,1
    - Dst: find
      Src: /src/pdns/pdns/recursordist/filterpo.cc:116,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/filterpo.cc:117,1
    - Dst: setHitData
      Src: /src/pdns/pdns/recursordist/filterpo.cc:119,1
    - Dst: toStringNoDot
      Src: /src/pdns/pdns/recursordist/filterpo.cc:119,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 3
    argNames:
    - ' polmap'
    - ' qname'
    - ' pol'
    argTypes:
    - std::unordered_map<DNSName, DNSFilterEngine::Policy>
    - DNSName
    - DNSFilterEngine::Policy
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 124
      start: 93
    functionDepth: 0
    functionLinenumber: 93
    functionLinenumberEnd: 124
    functionName: DNSFilterEngine::Zone::findNamedPolicy(const std::unordered_map<DNSName,
      DNSFilterEngine::Policy>& polmap, const DNSName& qname, DNSFilterEngine::Policy&
      pol)
    functionSourceFile: /src/pdns/pdns/recursordist/filterpo.cc
    functionUses: 0
    functionsReached:
    - DNSName::chopOff
    - end
    - toStringNoDot
    - setHitData
    - empty
    - find
    linkageType: ''
    returnType: bool
    signature: bool DNSFilterEngine::Zone::findNamedPolicy(const std::unordered_map<DNSName,
      DNSFilterEngine::Policy>& polmap, const DNSName& qname, DNSFilterEngine::Policy&
      pol)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/filterpo.cc:128,1
    - Dst: find
      Src: /src/pdns/pdns/recursordist/filterpo.cc:132,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/filterpo.cc:133,1
    - Dst: setHitData
      Src: /src/pdns/pdns/recursordist/filterpo.cc:135,1
    - Dst: toStringNoDot
      Src: /src/pdns/pdns/recursordist/filterpo.cc:135,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 3
    argNames:
    - ' polmap'
    - ' qname'
    - ' pol'
    argTypes:
    - std::unordered_map<DNSName, DNSFilterEngine::Policy>
    - DNSName
    - DNSFilterEngine::Policy
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 126
    functionDepth: 0
    functionLinenumber: 126
    functionLinenumberEnd: 140
    functionName: DNSFilterEngine::Zone::findExactNamedPolicy(const std::unordered_map<DNSName,
      DNSFilterEngine::Policy>& polmap, const DNSName& qname, DNSFilterEngine::Policy&
      pol)
    functionSourceFile: /src/pdns/pdns/recursordist/filterpo.cc
    functionUses: 0
    functionsReached:
    - end
    - toStringNoDot
    - setHitData
    - empty
    - find
    linkageType: ''
    returnType: bool
    signature: bool DNSFilterEngine::Zone::findExactNamedPolicy(const std::unordered_map<DNSName,
      DNSFilterEngine::Policy>& polmap, const DNSName& qname, DNSFilterEngine::Policy&
      pol)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: DNSFilterEngine::size
      Src: /src/pdns/pdns/recursordist/filterpo.cc:145,1
    - Dst: getName
      Src: /src/pdns/pdns/recursordist/filterpo.cc:150,1
    - Dst: DNSFilterEngine::getPriority
      Src: /src/pdns/pdns/recursordist/filterpo.cc:151,1
    - Dst: DNSFilterEngine::getPriority
      Src: /src/pdns/pdns/recursordist/filterpo.cc:151,1
    - Dst: find
      Src: /src/pdns/pdns/recursordist/filterpo.cc:151,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/filterpo.cc:151,1
    - Dst: hasNSPolicies
      Src: /src/pdns/pdns/recursordist/filterpo.cc:155,1
    - Dst: std::vector::reserve
      Src: /src/pdns/pdns/recursordist/filterpo.cc:173,1
    - Dst: countLabels
      Src: /src/pdns/pdns/recursordist/filterpo.cc:173,1
    - Dst: DNSName::chopOff
      Src: /src/pdns/pdns/recursordist/filterpo.cc:175,1
    - Dst: std::vector::emplace_back
      Src: /src/pdns/pdns/recursordist/filterpo.cc:176,1
    - Dst: findExactNSPolicy
      Src: /src/pdns/pdns/recursordist/filterpo.cc:185,1
    - Dst: findExactNSPolicy
      Src: /src/pdns/pdns/recursordist/filterpo.cc:191,1
    - Dst: toStringNoDot
      Src: /src/pdns/pdns/recursordist/filterpo.cc:194,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 36
    argCount: 3
    argNames:
    - ' qname'
    - ' discardedPolicies'
    - ' pol'
    argTypes:
    - DNSName
    - std::unordered_map<std::string, bool>
    - Policy
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 202
      start: 142
    functionDepth: 1
    functionLinenumber: 142
    functionLinenumberEnd: 202
    functionName: DNSFilterEngine::getProcessingPolicy
    functionSourceFile: /src/pdns/pdns/recursordist/filterpo.cc
    functionUses: 4
    functionsReached:
    - countLabels
    - DNSFilterEngine::getPriority
    - getName
    - DNSName::chopOff
    - end
    - std::vector::emplace_back
    - toStringNoDot
    - DNSFilterEngine::size
    - std::vector::reserve
    - hasNSPolicies
    - find
    - findExactNSPolicy
    linkageType: ''
    returnType: bool
    signature: bool DNSFilterEngine::getProcessingPolicy(const DNSName& qname, const
      std::unordered_map<std::string, bool>& discardedPolicies, Policy& pol) const
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: DNSFilterEngine::getPriority
      Src: /src/pdns/pdns/recursordist/filterpo.cc:208,1
    - Dst: DNSFilterEngine::getPriority
      Src: /src/pdns/pdns/recursordist/filterpo.cc:208,1
    - Dst: getName
      Src: /src/pdns/pdns/recursordist/filterpo.cc:211,1
    - Dst: find
      Src: /src/pdns/pdns/recursordist/filterpo.cc:212,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/filterpo.cc:212,1
    - Dst: findNSIPPolicy
      Src: /src/pdns/pdns/recursordist/filterpo.cc:216,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 12
    argCount: 3
    argNames:
    - ' address'
    - ' discardedPolicies'
    - ' pol'
    argTypes:
    - ComboAddress
    - std::unordered_map<std::string, bool>
    - Policy
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 222
      start: 204
    functionDepth: 1
    functionLinenumber: 204
    functionLinenumberEnd: 222
    functionName: DNSFilterEngine::getProcessingPolicy
    functionSourceFile: /src/pdns/pdns/recursordist/filterpo.cc
    functionUses: 4
    functionsReached:
    - DNSFilterEngine::getPriority
    - getName
    - end
    - findNSIPPolicy
    - find
    linkageType: ''
    returnType: bool
    signature: bool DNSFilterEngine::getProcessingPolicy(const ComboAddress& address,
      const std::unordered_map<std::string, bool>& discardedPolicies, Policy& pol)
      const
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: DNSFilterEngine::getPriority
      Src: /src/pdns/pdns/recursordist/filterpo.cc:228,1
    - Dst: DNSFilterEngine::getPriority
      Src: /src/pdns/pdns/recursordist/filterpo.cc:228,1
    - Dst: getName
      Src: /src/pdns/pdns/recursordist/filterpo.cc:231,1
    - Dst: find
      Src: /src/pdns/pdns/recursordist/filterpo.cc:232,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/filterpo.cc:232,1
    - Dst: findClientPolicy
      Src: /src/pdns/pdns/recursordist/filterpo.cc:236,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 12
    argCount: 3
    argNames:
    - ' address'
    - ' discardedPolicies'
    - ' pol'
    argTypes:
    - ComboAddress
    - std::unordered_map<std::string, bool>
    - Policy
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 242
      start: 224
    functionDepth: 1
    functionLinenumber: 224
    functionLinenumberEnd: 242
    functionName: DNSFilterEngine::getClientPolicy
    functionSourceFile: /src/pdns/pdns/recursordist/filterpo.cc
    functionUses: 4
    functionsReached:
    - DNSFilterEngine::getPriority
    - getName
    - findClientPolicy
    - end
    - find
    linkageType: ''
    returnType: bool
    signature: bool DNSFilterEngine::getClientPolicy(const ComboAddress& address,
      const std::unordered_map<std::string, bool>& discardedPolicies, Policy& pol)
      const
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: DNSFilterEngine::size
      Src: /src/pdns/pdns/recursordist/filterpo.cc:247,1
    - Dst: DNSFilterEngine::getPriority
      Src: /src/pdns/pdns/recursordist/filterpo.cc:252,1
    - Dst: DNSFilterEngine::getPriority
      Src: /src/pdns/pdns/recursordist/filterpo.cc:252,1
    - Dst: getName
      Src: /src/pdns/pdns/recursordist/filterpo.cc:256,1
    - Dst: find
      Src: /src/pdns/pdns/recursordist/filterpo.cc:257,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/filterpo.cc:257,1
    - Dst: hasQNamePolicies
      Src: /src/pdns/pdns/recursordist/filterpo.cc:261,1
    - Dst: std::vector::reserve
      Src: /src/pdns/pdns/recursordist/filterpo.cc:280,1
    - Dst: countLabels
      Src: /src/pdns/pdns/recursordist/filterpo.cc:280,1
    - Dst: DNSName::chopOff
      Src: /src/pdns/pdns/recursordist/filterpo.cc:282,1
    - Dst: std::vector::emplace_back
      Src: /src/pdns/pdns/recursordist/filterpo.cc:283,1
    - Dst: findExactQNamePolicy
      Src: /src/pdns/pdns/recursordist/filterpo.cc:293,1
    - Dst: findExactQNamePolicy
      Src: /src/pdns/pdns/recursordist/filterpo.cc:299,1
    - Dst: toStringNoDot
      Src: /src/pdns/pdns/recursordist/filterpo.cc:302,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 40
    argCount: 3
    argNames:
    - ' qname'
    - ' discardedPolicies'
    - ' pol'
    argTypes:
    - DNSName
    - std::unordered_map<std::string, bool>
    - Policy
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 311
      start: 244
    functionDepth: 1
    functionLinenumber: 244
    functionLinenumberEnd: 311
    functionName: DNSFilterEngine::getQueryPolicy
    functionSourceFile: /src/pdns/pdns/recursordist/filterpo.cc
    functionUses: 6
    functionsReached:
    - countLabels
    - DNSFilterEngine::getPriority
    - getName
    - DNSName::chopOff
    - end
    - std::vector::emplace_back
    - toStringNoDot
    - DNSFilterEngine::size
    - std::vector::reserve
    - findExactQNamePolicy
    - hasQNamePolicies
    - find
    linkageType: ''
    returnType: bool
    signature: bool DNSFilterEngine::getQueryPolicy(const DNSName& qname, const std::unordered_map<std::string,
      bool>& discardedPolicies, Policy& pol) const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DNSFilterEngine::getPostPolicy
      Src: /src/pdns/pdns/recursordist/filterpo.cc:316,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - ' records'
    - ' discardedPolicies'
    - ' pol'
    argTypes:
    - vector<DNSRecord>
    - std::unordered_map<std::string, bool>
    - Policy
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 322
      start: 313
    functionDepth: 0
    functionLinenumber: 313
    functionLinenumberEnd: 322
    functionName: DNSFilterEngine::getPostPolicy
    functionSourceFile: /src/pdns/pdns/recursordist/filterpo.cc
    functionUses: 4
    functionsReached:
    - DNSFilterEngine::getPostPolicy
    linkageType: ''
    returnType: bool
    signature: bool DNSFilterEngine::getPostPolicy(const vector<DNSRecord>& records,
      const std::unordered_map<std::string, bool>& discardedPolicies, Policy& pol)
      const
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/filterpo.cc:332,1
    - Dst: auto::getCA
      Src: /src/pdns/pdns/recursordist/filterpo.cc:333,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/filterpo.cc:337,1
    - Dst: auto::getCA
      Src: /src/pdns/pdns/recursordist/filterpo.cc:338,1
    - Dst: DNSFilterEngine::getPriority
      Src: /src/pdns/pdns/recursordist/filterpo.cc:346,1
    - Dst: DNSFilterEngine::getPriority
      Src: /src/pdns/pdns/recursordist/filterpo.cc:346,1
    - Dst: getName
      Src: /src/pdns/pdns/recursordist/filterpo.cc:349,1
    - Dst: find
      Src: /src/pdns/pdns/recursordist/filterpo.cc:350,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/filterpo.cc:350,1
    - Dst: findResponsePolicy
      Src: /src/pdns/pdns/recursordist/filterpo.cc:354,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 27
    argCount: 3
    argNames:
    - ' record'
    - ' discardedPolicies'
    - ' pol'
    argTypes:
    - DNSRecord
    - std::unordered_map<std::string, bool>
    - Policy
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 360
      start: 324
    functionDepth: 1
    functionLinenumber: 324
    functionLinenumberEnd: 360
    functionName: DNSFilterEngine::getPostPolicy
    functionSourceFile: /src/pdns/pdns/recursordist/filterpo.cc
    functionUses: 4
    functionsReached:
    - getRR
    - DNSFilterEngine::getPriority
    - getName
    - findResponsePolicy
    - end
    - auto::getCA
    - find
    linkageType: ''
    returnType: bool
    signature: bool DNSFilterEngine::getPostPolicy(const DNSRecord& record, const
      std::unordered_map<std::string, bool>& discardedPolicies, Policy& pol) const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DNSFilterEngine::size
      Src: /src/pdns/pdns/recursordist/filterpo.cc:364,1
    - Dst: resize
      Src: /src/pdns/pdns/recursordist/filterpo.cc:365,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - zone
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 367
      start: 362
    functionDepth: 2
    functionLinenumber: 362
    functionLinenumberEnd: 367
    functionName: DNSFilterEngine::assureZones
    functionSourceFile: /src/pdns/pdns/recursordist/filterpo.cc
    functionUses: 1
    functionsReached:
    - resize
    - DNSFilterEngine::size
    linkageType: ''
    returnType: void
    signature: void DNSFilterEngine::assureZones(size_t zone)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: make_unique<DNSFilterEngine::Policy::CustomData>
      Src: /src/pdns/pdns/recursordist/filterpo.cc:372,1
    - Dst: d_custom::reserve
      Src: /src/pdns/pdns/recursordist/filterpo.cc:375,1
    - Dst: d_custom::size
      Src: /src/pdns/pdns/recursordist/filterpo.cc:375,1
    - Dst: d_custom::size
      Src: /src/pdns/pdns/recursordist/filterpo.cc:375,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/filterpo.cc:376,1
    - Dst: d_custom::begin
      Src: /src/pdns/pdns/recursordist/filterpo.cc:376,1
    - Dst: d_custom::end
      Src: /src/pdns/pdns/recursordist/filterpo.cc:376,1
    - Dst: std::back_inserter
      Src: /src/pdns/pdns/recursordist/filterpo.cc:376,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - ' existingPol'
    - ' pol'
    argTypes:
    - DNSFilterEngine::Policy
    - DNSFilterEngine::Policy
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 378
      start: 369
    functionDepth: 0
    functionLinenumber: 369
    functionLinenumberEnd: 378
    functionName: addCustom
    functionSourceFile: /src/pdns/pdns/recursordist/filterpo.cc
    functionUses: 0
    functionsReached:
    - d_custom::begin
    - make_unique<DNSFilterEngine::Policy::CustomData>
    - std::move
    - d_custom::end
    - d_custom::reserve
    - std::back_inserter
    - d_custom::size
    linkageType: ''
    returnType: void
    signature: void addCustom(DNSFilterEngine::Policy& existingPol, const DNSFilterEngine::Policy&
      pol)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: find
      Src: /src/pdns/pdns/recursordist/filterpo.cc:382,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/filterpo.cc:384,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/filterpo.cc:391,1
    - Dst: getTypeToString
      Src: /src/pdns/pdns/recursordist/filterpo.cc:391,1
    - Dst: getKindToString
      Src: /src/pdns/pdns/recursordist/filterpo.cc:391,1
    - Dst: getKindToString
      Src: /src/pdns/pdns/recursordist/filterpo.cc:391,1
    - Dst: toLogString
      Src: /src/pdns/pdns/recursordist/filterpo.cc:391,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/filterpo.cc:398,1
    - Dst: getTypeToString
      Src: /src/pdns/pdns/recursordist/filterpo.cc:398,1
    - Dst: getKindToString
      Src: /src/pdns/pdns/recursordist/filterpo.cc:398,1
    - Dst: getKindToString
      Src: /src/pdns/pdns/recursordist/filterpo.cc:398,1
    - Dst: toLogString
      Src: /src/pdns/pdns/recursordist/filterpo.cc:398,1
    - Dst: addCustom
      Src: /src/pdns/pdns/recursordist/filterpo.cc:401,1
    - Dst: insert
      Src: /src/pdns/pdns/recursordist/filterpo.cc:404,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/filterpo.cc:404,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 19
    argCount: 5
    argNames:
    - ' map'
    - ' n'
    - ' pol'
    - ignoreDuplicate
    - ptype
    argTypes:
    - std::unordered_map<DNSName, Policy>
    - DNSName
    - Policy
    - bool
    - PolicyType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 408
      start: 380
    functionDepth: 2
    functionLinenumber: 380
    functionLinenumberEnd: 408
    functionName: DNSFilterEngine::Zone::addNameTrigger(std::unordered_map<DNSName,
      Policy>& map, const DNSName& n, Policy&& pol, bool ignoreDuplicate, PolicyType
      ptype)
    functionSourceFile: /src/pdns/pdns/recursordist/filterpo.cc
    functionUses: 0
    functionsReached:
    - toLogString
    - std::move
    - std::runtime_error
    - getKindToString
    - end
    - getTypeToString
    - insert
    - addCustom
    - find
    linkageType: ''
    returnType: void
    signature: void DNSFilterEngine::Zone::addNameTrigger(std::unordered_map<DNSName,
      Policy>& map, const DNSName& n, Policy&& pol, bool ignoreDuplicate, PolicyType
      ptype)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: has_key
      Src: /src/pdns/pdns/recursordist/filterpo.cc:412,1
    - Dst: lookup
      Src: /src/pdns/pdns/recursordist/filterpo.cc:415,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/filterpo.cc:421,1
    - Dst: getTypeToString
      Src: /src/pdns/pdns/recursordist/filterpo.cc:421,1
    - Dst: getKindToString
      Src: /src/pdns/pdns/recursordist/filterpo.cc:421,1
    - Dst: getKindToString
      Src: /src/pdns/pdns/recursordist/filterpo.cc:421,1
    - Dst: toString
      Src: /src/pdns/pdns/recursordist/filterpo.cc:421,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/filterpo.cc:428,1
    - Dst: getTypeToString
      Src: /src/pdns/pdns/recursordist/filterpo.cc:428,1
    - Dst: getKindToString
      Src: /src/pdns/pdns/recursordist/filterpo.cc:428,1
    - Dst: getKindToString
      Src: /src/pdns/pdns/recursordist/filterpo.cc:428,1
    - Dst: toString
      Src: /src/pdns/pdns/recursordist/filterpo.cc:428,1
    - Dst: addCustom
      Src: /src/pdns/pdns/recursordist/filterpo.cc:431,1
    - Dst: insert
      Src: /src/pdns/pdns/recursordist/filterpo.cc:436,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/filterpo.cc:436,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 20
    argCount: 5
    argNames:
    - ' nmt'
    - ' netmask'
    - ' pol'
    - ignoreDuplicate
    - ptype
    argTypes:
    - NetmaskTree<Policy>
    - Netmask
    - Policy
    - bool
    - PolicyType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 438
      start: 410
    functionDepth: 2
    functionLinenumber: 410
    functionLinenumberEnd: 438
    functionName: DNSFilterEngine::Zone::addNetmaskTrigger(NetmaskTree<Policy>& nmt,
      const Netmask& netmask, Policy&& pol, bool ignoreDuplicate, PolicyType ptype)
    functionSourceFile: /src/pdns/pdns/recursordist/filterpo.cc
    functionUses: 0
    functionsReached:
    - std::move
    - toString
    - lookup
    - std::runtime_error
    - getKindToString
    - getTypeToString
    - insert
    - addCustom
    - has_key
    linkageType: ''
    returnType: void
    signature: void DNSFilterEngine::Zone::addNetmaskTrigger(NetmaskTree<Policy>&
      nmt, const Netmask& netmask, Policy&& pol, bool ignoreDuplicate, PolicyType
      ptype)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: find
      Src: /src/pdns/pdns/recursordist/filterpo.cc:442,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/filterpo.cc:443,1
    - Dst: erase
      Src: /src/pdns/pdns/recursordist/filterpo.cc:449,1
    - Dst: d_custom::begin
      Src: /src/pdns/pdns/recursordist/filterpo.cc:458,1
    - Dst: d_custom::end
      Src: /src/pdns/pdns/recursordist/filterpo.cc:458,1
    - Dst: d_custom::erase
      Src: /src/pdns/pdns/recursordist/filterpo.cc:460,1
    - Dst: customRecordsSize
      Src: /src/pdns/pdns/recursordist/filterpo.cc:469,1
    - Dst: erase
      Src: /src/pdns/pdns/recursordist/filterpo.cc:470,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 23
    argCount: 3
    argNames:
    - ' map'
    - ' name'
    - ' pol'
    argTypes:
    - std::unordered_map<DNSName, Policy>
    - DNSName
    - Policy
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 475
      start: 440
    functionDepth: 0
    functionLinenumber: 440
    functionLinenumberEnd: 475
    functionName: DNSFilterEngine::Zone::rmNameTrigger(std::unordered_map<DNSName,
      Policy>& map, const DNSName& name, const Policy& pol)
    functionSourceFile: /src/pdns/pdns/recursordist/filterpo.cc
    functionUses: 0
    functionsReached:
    - d_custom::begin
    - end
    - d_custom::erase
    - customRecordsSize
    - d_custom::end
    - erase
    - find
    linkageType: ''
    returnType: bool
    signature: bool DNSFilterEngine::Zone::rmNameTrigger(std::unordered_map<DNSName,
      Policy>& map, const DNSName& name, const Policy& pol)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: has_key
      Src: /src/pdns/pdns/recursordist/filterpo.cc:479,1
    - Dst: lookup
      Src: /src/pdns/pdns/recursordist/filterpo.cc:484,1
    - Dst: erase
      Src: /src/pdns/pdns/recursordist/filterpo.cc:486,1
    - Dst: d_custom::begin
      Src: /src/pdns/pdns/recursordist/filterpo.cc:496,1
    - Dst: d_custom::end
      Src: /src/pdns/pdns/recursordist/filterpo.cc:496,1
    - Dst: d_custom::erase
      Src: /src/pdns/pdns/recursordist/filterpo.cc:498,1
    - Dst: customRecordsSize
      Src: /src/pdns/pdns/recursordist/filterpo.cc:507,1
    - Dst: erase
      Src: /src/pdns/pdns/recursordist/filterpo.cc:508,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 23
    argCount: 3
    argNames:
    - ' nmt'
    - ' netmask'
    - ' pol'
    argTypes:
    - NetmaskTree<Policy>
    - Netmask
    - Policy
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 513
      start: 477
    functionDepth: 0
    functionLinenumber: 477
    functionLinenumberEnd: 513
    functionName: DNSFilterEngine::Zone::rmNetmaskTrigger(NetmaskTree<Policy>& nmt,
      const Netmask& netmask, const Policy& pol)
    functionSourceFile: /src/pdns/pdns/recursordist/filterpo.cc
    functionUses: 0
    functionsReached:
    - d_custom::begin
    - lookup
    - d_custom::erase
    - customRecordsSize
    - d_custom::end
    - erase
    - has_key
    linkageType: ''
    returnType: bool
    signature: bool DNSFilterEngine::Zone::rmNetmaskTrigger(NetmaskTree<Policy>& nmt,
      const Netmask& netmask, const Policy& pol)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: addNetmaskTrigger
      Src: /src/pdns/pdns/recursordist/filterpo.cc:517,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/filterpo.cc:517,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 3
    argNames:
    - ' netmask'
    - ' pol'
    - ignoreDuplicate
    argTypes:
    - Netmask
    - Policy
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 518
      start: 515
    functionDepth: 0
    functionLinenumber: 515
    functionLinenumberEnd: 518
    functionName: DNSFilterEngine::Zone::addClientTrigger(const Netmask& netmask,
      Policy&& pol, bool ignoreDuplicate)
    functionSourceFile: /src/pdns/pdns/recursordist/filterpo.cc
    functionUses: 0
    functionsReached:
    - addNetmaskTrigger
    - std::move
    linkageType: ''
    returnType: void
    signature: void DNSFilterEngine::Zone::addClientTrigger(const Netmask& netmask,
      Policy&& pol, bool ignoreDuplicate)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: addNetmaskTrigger
      Src: /src/pdns/pdns/recursordist/filterpo.cc:522,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/filterpo.cc:522,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 3
    argNames:
    - ' netmask'
    - ' pol'
    - ignoreDuplicate
    argTypes:
    - Netmask
    - Policy
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 523
      start: 520
    functionDepth: 0
    functionLinenumber: 520
    functionLinenumberEnd: 523
    functionName: DNSFilterEngine::Zone::addResponseTrigger(const Netmask& netmask,
      Policy&& pol, bool ignoreDuplicate)
    functionSourceFile: /src/pdns/pdns/recursordist/filterpo.cc
    functionUses: 0
    functionsReached:
    - addNetmaskTrigger
    - std::move
    linkageType: ''
    returnType: void
    signature: void DNSFilterEngine::Zone::addResponseTrigger(const Netmask& netmask,
      Policy&& pol, bool ignoreDuplicate)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: addNameTrigger
      Src: /src/pdns/pdns/recursordist/filterpo.cc:527,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/filterpo.cc:527,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 3
    argNames:
    - ' dnsname'
    - ' pol'
    - ignoreDuplicate
    argTypes:
    - DNSName
    - Policy
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 528
      start: 525
    functionDepth: 0
    functionLinenumber: 525
    functionLinenumberEnd: 528
    functionName: DNSFilterEngine::Zone::addQNameTrigger(const DNSName& dnsname, Policy&&
      pol, bool ignoreDuplicate)
    functionSourceFile: /src/pdns/pdns/recursordist/filterpo.cc
    functionUses: 0
    functionsReached:
    - addNameTrigger
    - std::move
    linkageType: ''
    returnType: void
    signature: void DNSFilterEngine::Zone::addQNameTrigger(const DNSName& dnsname,
      Policy&& pol, bool ignoreDuplicate)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: addNameTrigger
      Src: /src/pdns/pdns/recursordist/filterpo.cc:532,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/filterpo.cc:532,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 3
    argNames:
    - ' dnsname'
    - ' pol'
    - ignoreDuplicate
    argTypes:
    - DNSName
    - Policy
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 533
      start: 530
    functionDepth: 0
    functionLinenumber: 530
    functionLinenumberEnd: 533
    functionName: DNSFilterEngine::Zone::addNSTrigger(const DNSName& dnsname, Policy&&
      pol, bool ignoreDuplicate)
    functionSourceFile: /src/pdns/pdns/recursordist/filterpo.cc
    functionUses: 0
    functionsReached:
    - addNameTrigger
    - std::move
    linkageType: ''
    returnType: void
    signature: void DNSFilterEngine::Zone::addNSTrigger(const DNSName& dnsname, Policy&&
      pol, bool ignoreDuplicate)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: addNetmaskTrigger
      Src: /src/pdns/pdns/recursordist/filterpo.cc:537,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/filterpo.cc:537,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 3
    argNames:
    - ' netmask'
    - ' pol'
    - ignoreDuplicate
    argTypes:
    - Netmask
    - Policy
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 538
      start: 535
    functionDepth: 0
    functionLinenumber: 535
    functionLinenumberEnd: 538
    functionName: DNSFilterEngine::Zone::addNSIPTrigger(const Netmask& netmask, Policy&&
      pol, bool ignoreDuplicate)
    functionSourceFile: /src/pdns/pdns/recursordist/filterpo.cc
    functionUses: 0
    functionsReached:
    - addNetmaskTrigger
    - std::move
    linkageType: ''
    returnType: void
    signature: void DNSFilterEngine::Zone::addNSIPTrigger(const Netmask& netmask,
      Policy&& pol, bool ignoreDuplicate)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: rmNetmaskTrigger
      Src: /src/pdns/pdns/recursordist/filterpo.cc:542,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' netmask'
    - ' pol'
    argTypes:
    - Netmask
    - Policy
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 543
      start: 540
    functionDepth: 0
    functionLinenumber: 540
    functionLinenumberEnd: 543
    functionName: DNSFilterEngine::Zone::rmClientTrigger(const Netmask& netmask, const
      Policy& pol)
    functionSourceFile: /src/pdns/pdns/recursordist/filterpo.cc
    functionUses: 0
    functionsReached:
    - rmNetmaskTrigger
    linkageType: ''
    returnType: bool
    signature: bool DNSFilterEngine::Zone::rmClientTrigger(const Netmask& netmask,
      const Policy& pol)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: rmNetmaskTrigger
      Src: /src/pdns/pdns/recursordist/filterpo.cc:547,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' netmask'
    - ' pol'
    argTypes:
    - Netmask
    - Policy
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 548
      start: 545
    functionDepth: 0
    functionLinenumber: 545
    functionLinenumberEnd: 548
    functionName: DNSFilterEngine::Zone::rmResponseTrigger(const Netmask& netmask,
      const Policy& pol)
    functionSourceFile: /src/pdns/pdns/recursordist/filterpo.cc
    functionUses: 0
    functionsReached:
    - rmNetmaskTrigger
    linkageType: ''
    returnType: bool
    signature: bool DNSFilterEngine::Zone::rmResponseTrigger(const Netmask& netmask,
      const Policy& pol)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: rmNameTrigger
      Src: /src/pdns/pdns/recursordist/filterpo.cc:552,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' dnsname'
    - ' pol'
    argTypes:
    - DNSName
    - Policy
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 553
      start: 550
    functionDepth: 0
    functionLinenumber: 550
    functionLinenumberEnd: 553
    functionName: DNSFilterEngine::Zone::rmQNameTrigger(const DNSName& dnsname, const
      Policy& pol)
    functionSourceFile: /src/pdns/pdns/recursordist/filterpo.cc
    functionUses: 0
    functionsReached:
    - rmNameTrigger
    linkageType: ''
    returnType: bool
    signature: bool DNSFilterEngine::Zone::rmQNameTrigger(const DNSName& dnsname,
      const Policy& pol)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: rmNameTrigger
      Src: /src/pdns/pdns/recursordist/filterpo.cc:557,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' dnsname'
    - ' pol'
    argTypes:
    - DNSName
    - Policy
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 558
      start: 555
    functionDepth: 0
    functionLinenumber: 555
    functionLinenumberEnd: 558
    functionName: DNSFilterEngine::Zone::rmNSTrigger(const DNSName& dnsname, const
      Policy& pol)
    functionSourceFile: /src/pdns/pdns/recursordist/filterpo.cc
    functionUses: 0
    functionsReached:
    - rmNameTrigger
    linkageType: ''
    returnType: bool
    signature: bool DNSFilterEngine::Zone::rmNSTrigger(const DNSName& dnsname, const
      Policy& pol)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: rmNetmaskTrigger
      Src: /src/pdns/pdns/recursordist/filterpo.cc:562,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' netmask'
    - ' pol'
    argTypes:
    - Netmask
    - Policy
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 563
      start: 560
    functionDepth: 0
    functionLinenumber: 560
    functionLinenumberEnd: 563
    functionName: DNSFilterEngine::Zone::rmNSIPTrigger(const Netmask& netmask, const
      Policy& pol)
    functionSourceFile: /src/pdns/pdns/recursordist/filterpo.cc
    functionUses: 0
    functionsReached:
    - rmNetmaskTrigger
    linkageType: ''
    returnType: bool
    signature: bool DNSFilterEngine::Zone::rmNSIPTrigger(const Netmask& netmask, const
      Policy& pol)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getName
      Src: /src/pdns/pdns/recursordist/filterpo.cc:567,1
    - Dst: getTrigger
      Src: /src/pdns/pdns/recursordist/filterpo.cc:567,1
    - Dst: getHit
      Src: /src/pdns/pdns/recursordist/filterpo.cc:567,1
    - Dst: getTypeToString
      Src: /src/pdns/pdns/recursordist/filterpo.cc:567,1
    - Dst: getKindToString
      Src: /src/pdns/pdns/recursordist/filterpo.cc:567,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 568
      start: 565
    functionDepth: 0
    functionLinenumber: 565
    functionLinenumberEnd: 568
    functionName: DNSFilterEngine::Policy::getLogString() const
    functionSourceFile: /src/pdns/pdns/recursordist/filterpo.cc
    functionUses: 0
    functionsReached:
    - getTrigger
    - getName
    - getKindToString
    - getHit
    - getTypeToString
    linkageType: ''
    returnType: std::string
    signature: std::string DNSFilterEngine::Policy::getLogString() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: info
      Src: /src/pdns/pdns/recursordist/filterpo.cc:572,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/filterpo.cc:572,1
    - Dst: getName
      Src: /src/pdns/pdns/recursordist/filterpo.cc:572,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/filterpo.cc:572,1
    - Dst: getTrigger
      Src: /src/pdns/pdns/recursordist/filterpo.cc:572,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/filterpo.cc:573,1
    - Dst: getHit
      Src: /src/pdns/pdns/recursordist/filterpo.cc:573,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/filterpo.cc:573,1
    - Dst: getTypeToString
      Src: /src/pdns/pdns/recursordist/filterpo.cc:573,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/filterpo.cc:574,1
    - Dst: getKindToString
      Src: /src/pdns/pdns/recursordist/filterpo.cc:574,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - prio
    - ' log'
    argTypes:
    - Logr::Priority
    - std::shared_ptr<Logr::Logger>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 575
      start: 570
    functionDepth: 0
    functionLinenumber: 570
    functionLinenumberEnd: 575
    functionName: DNSFilterEngine::Policy::info(Logr::Priority prio, const std::shared_ptr<Logr::Logger>&
      log) const
    functionSourceFile: /src/pdns/pdns/recursordist/filterpo.cc
    functionUses: 0
    functionsReached:
    - getTrigger
    - getName
    - Logging::Loggable
    - getKindToString
    - info
    - getHit
    - getTypeToString
    linkageType: ''
    returnType: void
    signature: void DNSFilterEngine::Policy::info(Logr::Priority prio, const std::shared_ptr<Logr::Logger>&
      log) const
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: DNSRecord::DNSRecord
      Src: /src/pdns/pdns/recursordist/filterpo.cc:579,1
    - Dst: getType
      Src: /src/pdns/pdns/recursordist/filterpo.cc:581,1
    - Dst: DNSRecord::setContent
      Src: /src/pdns/pdns/recursordist/filterpo.cc:585,1
    - Dst: std::dynamic_pointer_cast<const CNAMERecordContent>
      Src: /src/pdns/pdns/recursordist/filterpo.cc:588,1
    - Dst: auto::getTarget
      Src: /src/pdns/pdns/recursordist/filterpo.cc:590,1
    - Dst: DNSName::isWildcard
      Src: /src/pdns/pdns/recursordist/filterpo.cc:591,1
    - Dst: DNSName::chopOff
      Src: /src/pdns/pdns/recursordist/filterpo.cc:592,1
    - Dst: DNSRecord::setContent
      Src: /src/pdns/pdns/recursordist/filterpo.cc:593,1
    - Dst: std::make_shared<CNAMERecordContent>
      Src: /src/pdns/pdns/recursordist/filterpo.cc:593,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 2
    argNames:
    - ' qname'
    - ' custom'
    argTypes:
    - DNSName
    - std::shared_ptr<const DNSRecordContent>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 599
      start: 577
    functionDepth: 2
    functionLinenumber: 577
    functionLinenumberEnd: 599
    functionName: DNSFilterEngine::Policy::getRecordFromCustom(const DNSName& qname,
      const std::shared_ptr<const DNSRecordContent>& custom) const
    functionSourceFile: /src/pdns/pdns/recursordist/filterpo.cc
    functionUses: 0
    functionsReached:
    - auto::getTarget
    - DNSName::isWildcard
    - DNSRecord::DNSRecord
    - DNSName::chopOff
    - std::dynamic_pointer_cast<const CNAMERecordContent>
    - std::make_shared<CNAMERecordContent>
    - DNSRecord::setContent
    - getType
    linkageType: ''
    returnType: DNSRecord
    signature: DNSRecord DNSFilterEngine::Policy::getRecordFromCustom(const DNSName&
      qname, const std::shared_ptr<const DNSRecordContent>& custom) const
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/filterpo.cc:604,1
    - Dst: customRecordsSize
      Src: /src/pdns/pdns/recursordist/filterpo.cc:608,1
    - Dst: getType
      Src: /src/pdns/pdns/recursordist/filterpo.cc:613,1
    - Dst: getType
      Src: /src/pdns/pdns/recursordist/filterpo.cc:613,1
    - Dst: DNSRecord::DNSRecord
      Src: /src/pdns/pdns/recursordist/filterpo.cc:617,1
    - Dst: getType
      Src: /src/pdns/pdns/recursordist/filterpo.cc:619,1
    - Dst: DNSRecord::setContent
      Src: /src/pdns/pdns/recursordist/filterpo.cc:623,1
    - Dst: std::dynamic_pointer_cast<const CNAMERecordContent>
      Src: /src/pdns/pdns/recursordist/filterpo.cc:626,1
    - Dst: auto::getTarget
      Src: /src/pdns/pdns/recursordist/filterpo.cc:628,1
    - Dst: DNSName::isWildcard
      Src: /src/pdns/pdns/recursordist/filterpo.cc:629,1
    - Dst: DNSName::chopOff
      Src: /src/pdns/pdns/recursordist/filterpo.cc:630,1
    - Dst: DNSRecord::setContent
      Src: /src/pdns/pdns/recursordist/filterpo.cc:631,1
    - Dst: std::make_shared<CNAMERecordContent>
      Src: /src/pdns/pdns/recursordist/filterpo.cc:631,1
    - Dst: std::vector::emplace_back
      Src: /src/pdns/pdns/recursordist/filterpo.cc:636,1
    - Dst: getRecordFromCustom
      Src: /src/pdns/pdns/recursordist/filterpo.cc:636,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 27
    argCount: 2
    argNames:
    - ' qname'
    - qtype
    argTypes:
    - DNSName
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 640
      start: 601
    functionDepth: 2
    functionLinenumber: 601
    functionLinenumberEnd: 640
    functionName: DNSFilterEngine::Policy::getCustomRecords(const DNSName& qname,
      uint16_t qtype) const
    functionSourceFile: /src/pdns/pdns/recursordist/filterpo.cc
    functionUses: 0
    functionsReached:
    - auto::getTarget
    - DNSName::isWildcard
    - DNSRecord::DNSRecord
    - DNSName::chopOff
    - std::runtime_error
    - std::dynamic_pointer_cast<const CNAMERecordContent>
    - getRecordFromCustom
    - customRecordsSize
    - std::make_shared<CNAMERecordContent>
    - std::vector::emplace_back
    - DNSRecord::setContent
    - getType
    linkageType: ''
    returnType: std::vector<DNSRecord>
    signature: std::vector<DNSRecord> DNSFilterEngine::Policy::getCustomRecords(const
      DNSName& qname, uint16_t qtype) const
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: toString
      Src: /src/pdns/pdns/recursordist/filterpo.cc:652,1
    - Dst: toString
      Src: /src/pdns/pdns/recursordist/filterpo.cc:654,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/filterpo.cc:660,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 1
    argNames:
    - kind
    argTypes:
    - DNSFilterEngine::PolicyKind
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 662
      start: 642
    functionDepth: 0
    functionLinenumber: 642
    functionLinenumberEnd: 662
    functionName: DNSFilterEngine::getKindToString
    functionSourceFile: /src/pdns/pdns/recursordist/filterpo.cc
    functionUses: 0
    functionsReached:
    - toString
    - std::runtime_error
    linkageType: ''
    returnType: std::string
    signature: std::string DNSFilterEngine::getKindToString(DNSFilterEngine::PolicyKind
      kind)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/filterpo.cc:680,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 1
    argNames:
    - type
    argTypes:
    - DNSFilterEngine::PolicyType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 682
      start: 664
    functionDepth: 0
    functionLinenumber: 664
    functionLinenumberEnd: 682
    functionName: DNSFilterEngine::getTypeToString
    functionSourceFile: /src/pdns/pdns/recursordist/filterpo.cc
    functionUses: 0
    functionsReached:
    - std::runtime_error
    linkageType: ''
    returnType: std::string
    signature: std::string DNSFilterEngine::getTypeToString(DNSFilterEngine::PolicyType
      type)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: getCustomRecords
      Src: /src/pdns/pdns/recursordist/filterpo.cc:689,1
    - Dst: DNSRecord::DNSRecord
      Src: /src/pdns/pdns/recursordist/filterpo.cc:692,1
    - Dst: static_cast<uint32_t>
      Src: /src/pdns/pdns/recursordist/filterpo.cc:694,1
    - Dst: DNSRecord::setContent
      Src: /src/pdns/pdns/recursordist/filterpo.cc:697,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/recursordist/filterpo.cc:697,1
    - Dst: getKindToString
      Src: /src/pdns/pdns/recursordist/filterpo.cc:697,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/recursordist/filterpo.cc:698,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/filterpo.cc:698,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - ' qname'
    argTypes:
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 702
      start: 684
    functionDepth: 0
    functionLinenumber: 684
    functionLinenumberEnd: 702
    functionName: DNSFilterEngine::Policy::getRecords(const DNSName& qname) const
    functionSourceFile: /src/pdns/pdns/recursordist/filterpo.cc
    functionUses: 0
    functionsReached:
    - std::vector::push_back
    - std::move
    - DNSRecord::DNSRecord
    - getCustomRecords
    - getKindToString
    - static_cast<uint32_t>
    - DNSRecordContent::make
    - DNSRecord::setContent
    linkageType: ''
    returnType: std::vector<DNSRecord>
    signature: std::vector<DNSRecord> DNSFilterEngine::Policy::getRecords(const DNSName&
      qname) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getRecords
      Src: /src/pdns/pdns/recursordist/filterpo.cc:706,1
    - Dst: fprintf
      Src: /src/pdns/pdns/recursordist/filterpo.cc:708,1
    - Dst: d_name::toString
      Src: /src/pdns/pdns/recursordist/filterpo.cc:708,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/filterpo.cc:708,1
    - Dst: getContent
      Src: /src/pdns/pdns/recursordist/filterpo.cc:708,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 3
    argNames:
    - filePtr
    - ' name'
    - ' pol'
    argTypes:
    - FILE*
    - DNSName
    - Policy
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 710
      start: 704
    functionDepth: 1
    functionLinenumber: 704
    functionLinenumberEnd: 710
    functionName: DNSFilterEngine::Zone::dumpNamedPolicy(FILE* filePtr, const DNSName&
      name, const Policy& pol)
    functionSourceFile: /src/pdns/pdns/recursordist/filterpo.cc
    functionUses: 0
    functionsReached:
    - fprintf
    - d_name::toString
    - QType
    - getContent
    - getRecords
    linkageType: ''
    returnType: void
    signature: void DNSFilterEngine::Zone::dumpNamedPolicy(FILE* filePtr, const DNSName&
      name, const Policy& pol)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: getBits
      Src: /src/pdns/pdns/recursordist/filterpo.cc:714,1
    - Dst: getNetwork
      Src: /src/pdns/pdns/recursordist/filterpo.cc:716,1
    - Dst: isIPv4
      Src: /src/pdns/pdns/recursordist/filterpo.cc:718,1
    - Dst: reinterpret_cast<const uint8_t*>
      Src: /src/pdns/pdns/recursordist/filterpo.cc:719,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/filterpo.cc:720,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/filterpo.cc:720,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/filterpo.cc:720,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/filterpo.cc:720,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/filterpo.cc:720,1
    - Dst: DNSName::DNSName
      Src: /src/pdns/pdns/recursordist/filterpo.cc:723,1
    - Dst: reinterpret_cast<const uint16_t*>
      Src: /src/pdns/pdns/recursordist/filterpo.cc:725,1
    - Dst: std::array::size
      Src: /src/pdns/pdns/recursordist/filterpo.cc:744,1
    - Dst: std::array::at
      Src: /src/pdns/pdns/recursordist/filterpo.cc:746,1
    - Dst: ntohs
      Src: /src/pdns/pdns/recursordist/filterpo.cc:746,1
    - Dst: std::array::at
      Src: /src/pdns/pdns/recursordist/filterpo.cc:747,1
    - Dst: std::array::size
      Src: /src/pdns/pdns/recursordist/filterpo.cc:774,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/filterpo.cc:776,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/filterpo.cc:780,1
    - Dst: boost::format
      Src: /src/pdns/pdns/recursordist/filterpo.cc:780,1
    - Dst: std::array::at
      Src: /src/pdns/pdns/recursordist/filterpo.cc:780,1
    - Dst: str
      Src: /src/pdns/pdns/recursordist/filterpo.cc:780,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 40
    argCount: 1
    argNames:
    - ' netmask'
    argTypes:
    - Netmask
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 787
      start: 712
    functionDepth: 0
    functionLinenumber: 712
    functionLinenumberEnd: 787
    functionName: DNSFilterEngine::Zone::maskToRPZ(const Netmask& netmask)
    functionSourceFile: /src/pdns/pdns/recursordist/filterpo.cc
    functionUses: 0
    functionsReached:
    - reinterpret_cast<const uint8_t*>
    - std::to_string
    - ntohs
    - getBits
    - DNSName
    - isIPv4
    - getNetwork
    - str
    - boost::format
    - DNSName::DNSName
    - std::array::at
    - std::array::size
    - reinterpret_cast<const uint16_t*>
    linkageType: ''
    returnType: DNSName
    signature: DNSName DNSFilterEngine::Zone::maskToRPZ(const Netmask& netmask)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: maskToRPZ
      Src: /src/pdns/pdns/recursordist/filterpo.cc:791,1
    - Dst: getRecords
      Src: /src/pdns/pdns/recursordist/filterpo.cc:794,1
    - Dst: fprintf
      Src: /src/pdns/pdns/recursordist/filterpo.cc:796,1
    - Dst: d_name::toString
      Src: /src/pdns/pdns/recursordist/filterpo.cc:796,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/filterpo.cc:796,1
    - Dst: getContent
      Src: /src/pdns/pdns/recursordist/filterpo.cc:796,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 4
    argNames:
    - filePtr
    - ' netmask'
    - ' name'
    - ' pol'
    argTypes:
    - FILE*
    - Netmask
    - DNSName
    - Policy
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 798
      start: 789
    functionDepth: 1
    functionLinenumber: 789
    functionLinenumberEnd: 798
    functionName: DNSFilterEngine::Zone::dumpAddrPolicy(FILE* filePtr, const Netmask&
      netmask, const DNSName& name, const Policy& pol)
    functionSourceFile: /src/pdns/pdns/recursordist/filterpo.cc
    functionUses: 0
    functionsReached:
    - fprintf
    - d_name::toString
    - QType
    - maskToRPZ
    - getContent
    - getRecords
    linkageType: ''
    returnType: void
    signature: void DNSFilterEngine::Zone::dumpAddrPolicy(FILE* filePtr, const Netmask&
      netmask, const DNSName& name, const Policy& pol)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DNSRecord::d_name::empty
      Src: /src/pdns/pdns/recursordist/filterpo.cc:802,1
    - Dst: fprintf
      Src: /src/pdns/pdns/recursordist/filterpo.cc:803,1
    - Dst: DNSRecord::d_name::toString
      Src: /src/pdns/pdns/recursordist/filterpo.cc:803,1
    - Dst: DNSRecord::getContent
      Src: /src/pdns/pdns/recursordist/filterpo.cc:803,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/recursordist/filterpo.cc:807,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/filterpo.cc:807,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/filterpo.cc:807,1
    - Dst: fprintf
      Src: /src/pdns/pdns/recursordist/filterpo.cc:808,1
    - Dst: toString
      Src: /src/pdns/pdns/recursordist/filterpo.cc:808,1
    - Dst: auto::getZoneRepresentation
      Src: /src/pdns/pdns/recursordist/filterpo.cc:808,1
    - Dst: dumpNamedPolicy
      Src: /src/pdns/pdns/recursordist/filterpo.cc:812,1
    - Dst: dumpNamedPolicy
      Src: /src/pdns/pdns/recursordist/filterpo.cc:816,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/filterpo.cc:816,1
    - Dst: dumpAddrPolicy
      Src: /src/pdns/pdns/recursordist/filterpo.cc:820,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/filterpo.cc:820,1
    - Dst: dumpAddrPolicy
      Src: /src/pdns/pdns/recursordist/filterpo.cc:824,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/filterpo.cc:824,1
    - Dst: dumpAddrPolicy
      Src: /src/pdns/pdns/recursordist/filterpo.cc:828,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/filterpo.cc:828,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 1
    argNames:
    - filePtr
    argTypes:
    - FILE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 830
      start: 800
    functionDepth: 0
    functionLinenumber: 800
    functionLinenumberEnd: 830
    functionName: DNSFilterEngine::Zone::dump(FILE* filePtr) const
    functionSourceFile: /src/pdns/pdns/recursordist/filterpo.cc
    functionUses: 0
    functionsReached:
    - fprintf
    - toString
    - std::to_string
    - dumpNamedPolicy
    - dumpAddrPolicy
    - DNSRecord::d_name::toString
    - DNSName
    - auto::getZoneRepresentation
    - DNSRecordContent::make
    - DNSRecord::getContent
    - DNSRecord::d_name::empty
    linkageType: ''
    returnType: void
    signature: void DNSFilterEngine::Zone::dump(FILE* filePtr) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: insert
      Src: /src/pdns/pdns/recursordist/filterpo.cc:835,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - ' tags'
    - ' newTags'
    argTypes:
    - std::unordered_set<std::string>
    - std::unordered_set<std::string>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 837
      start: 832
    functionDepth: 2
    functionLinenumber: 832
    functionLinenumberEnd: 837
    functionName: mergePolicyTags
    functionSourceFile: /src/pdns/pdns/recursordist/filterpo.cc
    functionUses: 6
    functionsReached:
    - insert
    linkageType: ''
    returnType: void
    signature: void mergePolicyTags(std::unordered_set<std::string>& tags, const std::unordered_set<std::string>&
      newTags)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:14,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:16,1
    - Dst: DNSRecord::DNSRecord
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:24,1
    - Dst: DNSRecord::setContent
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:29,1
    - Dst: std::make_shared<ARecordContent>
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:29,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:29,1
    - Dst: SyncRes::AuthDomain::d_records::insert
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:30,1
    - Dst: DNSRecord::setContent
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:36,1
    - Dst: std::make_shared<SOARecordContent>
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:36,1
    - Dst: SyncRes::AuthDomain::d_records::insert
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:37,1
    - Dst: std::make_shared<SyncRes::domainmap_t>
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:39,1
    - Dst: SyncRes::setDomainMap
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:41,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:43,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:50,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:50,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:51,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:52,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:52,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:53,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:54,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 26
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 11
    functionDepth: 3
    functionLinenumber: 11
    functionLinenumberEnd: 55
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc4.cc
    functionUses: 0
    functionsReached:
    - std::unique_ptr::setAsyncCallback
    - DNSRecord::DNSRecord
    - SyncRes::AuthDomain::d_records::insert
    - BOOST_CHECK
    - primeHints
    - QType
    - BOOST_CHECK_EQUAL
    - initSR
    - std::make_shared<SOARecordContent>
    - SyncRes::setDomainMap
    - std::make_shared<ARecordContent>
    - DNSRecord::setContent
    - std::make_shared<SyncRes::domainmap_t>
    - std::unique_ptr::beginResolve
    - vector::size
    - BOOST_REQUIRE_EQUAL
    - ComboAddress
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_auth_zone_nodata)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:60,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:62,1
    - Dst: DNSRecord::DNSRecord
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:70,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:72,1
    - Dst: DNSRecord::setContent
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:75,1
    - Dst: std::make_shared<SOARecordContent>
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:75,1
    - Dst: SyncRes::AuthDomain::d_records::insert
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:76,1
    - Dst: std::make_shared<SyncRes::domainmap_t>
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:78,1
    - Dst: SyncRes::setDomainMap
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:80,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:82,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:89,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:89,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:90,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:91,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:91,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:92,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:93,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 20
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 57
    functionDepth: 3
    functionLinenumber: 57
    functionLinenumberEnd: 94
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc4.cc
    functionUses: 0
    functionsReached:
    - std::unique_ptr::setAsyncCallback
    - DNSRecord::DNSRecord
    - SyncRes::AuthDomain::d_records::insert
    - BOOST_CHECK
    - primeHints
    - QType
    - DNSName
    - initSR
    - BOOST_CHECK_EQUAL
    - std::make_shared<SOARecordContent>
    - DNSRecord::setContent
    - SyncRes::setDomainMap
    - std::make_shared<SyncRes::domainmap_t>
    - std::unique_ptr::beginResolve
    - vector::size
    - BOOST_REQUIRE_EQUAL
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_auth_zone_nx)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:99,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:101,1
    - Dst: DNSRecord::DNSRecord
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:112,1
    - Dst: DNSRecord::setContent
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:117,1
    - Dst: std::make_shared<SOARecordContent>
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:117,1
    - Dst: SyncRes::AuthDomain::d_records::insert
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:118,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:121,1
    - Dst: DNSRecord::setContent
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:124,1
    - Dst: std::make_shared<NSRecordContent>
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:124,1
    - Dst: SyncRes::AuthDomain::d_records::insert
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:125,1
    - Dst: DNSRecord::setContent
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:131,1
    - Dst: std::make_shared<ARecordContent>
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:131,1
    - Dst: SyncRes::AuthDomain::d_records::insert
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:132,1
    - Dst: std::make_shared<SyncRes::domainmap_t>
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:134,1
    - Dst: SyncRes::setDomainMap
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:136,1
    - Dst: getCopy
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:139,1
    - Dst: auto::dsAnchors::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:140,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:141,1
    - Dst: setState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:142,1
    - Dst: std::unique_ptr::getNow
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:147,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:149,1
    - Dst: genericDSAndDNSKEYHandler
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:152,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:152,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:152,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:155,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:155,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:156,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:157,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:157,1
    - Dst: std::unique_ptr::setDNSSECValidationRequested
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:164,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:166,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:166,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:167,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:168,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:168,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:169,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:170,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:171,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:171,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 45
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 172
      start: 96
    functionDepth: 4
    functionLinenumber: 96
    functionLinenumberEnd: 172
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc4.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - genericDSAndDNSKEYHandler
    - DNSRecord::DNSRecord
    - primeHints
    - std::make_shared<SOARecordContent>
    - std::make_shared<NSRecordContent>
    - DNSRecord::setContent
    - std::unique_ptr::beginResolve
    - setState
    - SyncRes::AuthDomain::d_records::insert
    - QType
    - generateKeyMaterial
    - addRecordToLW
    - auto::dsAnchors::clear
    - std::make_shared<ARecordContent>
    - BOOST_REQUIRE_EQUAL
    - std::unique_ptr::setAsyncCallback
    - DNSName
    - initSR
    - std::unique_ptr::getNow
    - std::unique_ptr::getValidationState
    - std::unique_ptr::setDNSSECValidationRequested
    - ComboAddress
    - BOOST_CHECK
    - BOOST_CHECK_EQUAL
    - getCopy
    - SyncRes::setDomainMap
    - std::make_shared<SyncRes::domainmap_t>
    - vector::size
    - ComboAddress::toString
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_auth_zone_delegation)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:177,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:179,1
    - Dst: DNSRecord::DNSRecord
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:190,1
    - Dst: DNSRecord::setContent
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:195,1
    - Dst: std::make_shared<SOARecordContent>
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:195,1
    - Dst: SyncRes::AuthDomain::d_records::insert
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:196,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:199,1
    - Dst: DNSRecord::setContent
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:202,1
    - Dst: std::make_shared<NSRecordContent>
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:202,1
    - Dst: SyncRes::AuthDomain::d_records::insert
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:203,1
    - Dst: DNSRecord::setContent
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:209,1
    - Dst: std::make_shared<ARecordContent>
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:209,1
    - Dst: SyncRes::AuthDomain::d_records::insert
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:210,1
    - Dst: std::make_shared<SyncRes::domainmap_t>
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:212,1
    - Dst: SyncRes::setDomainMap
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:214,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:216,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:219,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:219,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:220,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:221,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:221,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:229,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:229,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:230,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:231,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:231,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:232,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:233,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 37
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 234
      start: 174
    functionDepth: 3
    functionLinenumber: 174
    functionLinenumberEnd: 234
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc4.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - DNSRecord::DNSRecord
    - primeHints
    - std::make_shared<SOARecordContent>
    - std::make_shared<NSRecordContent>
    - DNSRecord::setContent
    - std::unique_ptr::beginResolve
    - SyncRes::AuthDomain::d_records::insert
    - QType
    - addRecordToLW
    - std::make_shared<ARecordContent>
    - BOOST_REQUIRE_EQUAL
    - std::unique_ptr::setAsyncCallback
    - DNSName
    - initSR
    - ComboAddress
    - BOOST_CHECK
    - BOOST_CHECK_EQUAL
    - SyncRes::setDomainMap
    - std::make_shared<SyncRes::domainmap_t>
    - vector::size
    - ComboAddress::toString
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_auth_zone_delegation_point)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:239,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:241,1
    - Dst: DNSRecord::DNSRecord
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:250,1
    - Dst: DNSRecord::setContent
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:255,1
    - Dst: std::make_shared<SOARecordContent>
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:255,1
    - Dst: SyncRes::AuthDomain::d_records::insert
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:256,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:259,1
    - Dst: DNSRecord::setContent
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:262,1
    - Dst: std::make_shared<ARecordContent>
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:262,1
    - Dst: SyncRes::AuthDomain::d_records::insert
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:263,1
    - Dst: std::make_shared<SyncRes::domainmap_t>
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:265,1
    - Dst: SyncRes::setDomainMap
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:267,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:269,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:276,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:276,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:277,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:278,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:278,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:279,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:280,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 26
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 281
      start: 236
    functionDepth: 3
    functionLinenumber: 236
    functionLinenumberEnd: 281
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc4.cc
    functionUses: 0
    functionsReached:
    - std::unique_ptr::setAsyncCallback
    - DNSRecord::DNSRecord
    - SyncRes::AuthDomain::d_records::insert
    - BOOST_CHECK
    - primeHints
    - QType
    - DNSName
    - initSR
    - BOOST_CHECK_EQUAL
    - std::make_shared<SOARecordContent>
    - SyncRes::setDomainMap
    - DNSRecord::setContent
    - std::make_shared<ARecordContent>
    - std::make_shared<SyncRes::domainmap_t>
    - std::unique_ptr::beginResolve
    - vector::size
    - BOOST_REQUIRE_EQUAL
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_auth_zone_wildcard)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:286,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:288,1
    - Dst: DNSRecord::DNSRecord
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:298,1
    - Dst: DNSRecord::setContent
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:303,1
    - Dst: std::make_shared<SOARecordContent>
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:303,1
    - Dst: SyncRes::AuthDomain::d_records::insert
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:304,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:307,1
    - Dst: DNSRecord::setContent
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:310,1
    - Dst: std::make_shared<ARecordContent>
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:310,1
    - Dst: SyncRes::AuthDomain::d_records::insert
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:311,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:314,1
    - Dst: DNSRecord::setContent
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:317,1
    - Dst: std::make_shared<ARecordContent>
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:317,1
    - Dst: SyncRes::AuthDomain::d_records::insert
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:318,1
    - Dst: std::make_shared<SyncRes::domainmap_t>
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:320,1
    - Dst: SyncRes::setDomainMap
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:322,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:324,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:331,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:331,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:332,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:333,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:333,1
    - Dst: BOOST_WARN_MESSAGE
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:337,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:338,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 32
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 339
      start: 283
    functionDepth: 3
    functionLinenumber: 283
    functionLinenumberEnd: 339
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc4.cc
    functionUses: 0
    functionsReached:
    - std::unique_ptr::setAsyncCallback
    - DNSRecord::DNSRecord
    - SyncRes::AuthDomain::d_records::insert
    - primeHints
    - QType
    - DNSName
    - initSR
    - BOOST_CHECK_EQUAL
    - std::make_shared<SOARecordContent>
    - BOOST_WARN_MESSAGE
    - SyncRes::setDomainMap
    - DNSRecord::setContent
    - std::make_shared<ARecordContent>
    - std::make_shared<SyncRes::domainmap_t>
    - std::unique_ptr::beginResolve
    - vector::size
    - BOOST_REQUIRE_EQUAL
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_auth_zone_wildcard_with_ent)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:344,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:346,1
    - Dst: DNSRecord::DNSRecord
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:355,1
    - Dst: DNSRecord::setContent
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:360,1
    - Dst: std::make_shared<SOARecordContent>
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:360,1
    - Dst: SyncRes::AuthDomain::d_records::insert
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:361,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:364,1
    - Dst: DNSRecord::setContent
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:367,1
    - Dst: std::make_shared<ARecordContent>
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:367,1
    - Dst: SyncRes::AuthDomain::d_records::insert
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:368,1
    - Dst: std::make_shared<SyncRes::domainmap_t>
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:370,1
    - Dst: SyncRes::setDomainMap
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:372,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:374,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:381,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:381,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:382,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:383,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:383,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:384,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:385,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 26
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 386
      start: 341
    functionDepth: 3
    functionLinenumber: 341
    functionLinenumberEnd: 386
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc4.cc
    functionUses: 0
    functionsReached:
    - std::unique_ptr::setAsyncCallback
    - DNSRecord::DNSRecord
    - SyncRes::AuthDomain::d_records::insert
    - BOOST_CHECK
    - primeHints
    - QType
    - DNSName
    - initSR
    - BOOST_CHECK_EQUAL
    - std::make_shared<SOARecordContent>
    - SyncRes::setDomainMap
    - DNSRecord::setContent
    - std::make_shared<ARecordContent>
    - std::make_shared<SyncRes::domainmap_t>
    - std::unique_ptr::beginResolve
    - vector::size
    - BOOST_REQUIRE_EQUAL
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_auth_zone_wildcard_nodata)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:391,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:393,1
    - Dst: DNSRecord::DNSRecord
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:401,1
    - Dst: DNSRecord::setContent
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:406,1
    - Dst: std::make_shared<SOARecordContent>
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:406,1
    - Dst: SyncRes::AuthDomain::d_records::insert
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:407,1
    - Dst: DNSRecord::setContent
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:413,1
    - Dst: std::make_shared<ARecordContent>
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:413,1
    - Dst: SyncRes::AuthDomain::d_records::insert
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:414,1
    - Dst: std::make_shared<SyncRes::domainmap_t>
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:416,1
    - Dst: SyncRes::setDomainMap
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:418,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:420,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:422,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:423,1
    - Dst: std::unique_ptr::setCacheOnly
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:428,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:431,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:431,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:432,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:433,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:433,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:434,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:435,1
    - Dst: getRR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:435,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:435,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:436,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 30
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 437
      start: 388
    functionDepth: 3
    functionLinenumber: 388
    functionLinenumberEnd: 437
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc4.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - DNSRecord::DNSRecord
    - primeHints
    - std::make_shared<SOARecordContent>
    - DNSRecord::setContent
    - std::unique_ptr::beginResolve
    - SyncRes::AuthDomain::d_records::insert
    - QType
    - addRecordToLW
    - std::make_shared<ARecordContent>
    - std::unique_ptr::setAsyncCallback
    - initSR
    - getRR
    - BOOST_CHECK
    - BOOST_CHECK_EQUAL
    - SyncRes::setDomainMap
    - std::make_shared<SyncRes::domainmap_t>
    - std::unique_ptr::setCacheOnly
    - vector::size
    - ComboAddress::toString
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_auth_zone_cache_only)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:441,1
    - Dst: withName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:443,1
    - Dst: DNSCryptoKeyEngine::make
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:444,1
    - Dst: auto::create
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:445,1
    - Dst: auto::getBits
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:445,1
    - Dst: DNSSECPrivateKey::setKey
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:447,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:447,1
    - Dst: sortedRecords_t::insert
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:450,1
    - Dst: getRecordContent
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:450,1
    - Dst: time
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:454,1
    - Dst: RRSIGRecordContent::RRSIGRecordContent
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:455,1
    - Dst: computeRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:457,1
    - Dst: skeyset_t::insert
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:460,1
    - Dst: std::make_shared<DNSKEYRecordContent>
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:460,1
    - Dst: DNSSECPrivateKey::getDNSKEY
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:460,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:463,1
    - Dst: std::make_shared<RRSIGRecordContent>
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:463,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:466,1
    - Dst: validateWithKeySet
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:466,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:467,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 468
      start: 439
    functionDepth: 3
    functionLinenumber: 439
    functionLinenumberEnd: 468
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc4.cc
    functionUses: 0
    functionsReached:
    - withName
    - DNSSECPrivateKey::setKey
    - skeyset_t::insert
    - RRSIGRecordContent::RRSIGRecordContent
    - std::make_shared<RRSIGRecordContent>
    - std::vector::push_back
    - time
    - validateWithKeySet
    - DNSCryptoKeyEngine::make
    - computeRRSIG
    - auto::create
    - std::make_shared<DNSKEYRecordContent>
    - initSR
    - sortedRecords_t::insert
    - getRecordContent
    - std::move
    - auto::getBits
    - BOOST_CHECK_EQUAL
    - DNSSECPrivateKey::getDNSKEY
    - BOOST_CHECK
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_dnssec_rrsig)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:472,1
    - Dst: withName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:474,1
    - Dst: DNSCryptoKeyEngine::make
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:475,1
    - Dst: auto::create
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:476,1
    - Dst: auto::getBits
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:476,1
    - Dst: DNSSECPrivateKey::setKey
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:478,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:478,1
    - Dst: sortedRecords_t::insert
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:481,1
    - Dst: getRecordContent
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:481,1
    - Dst: RRSIGRecordContent::RRSIGRecordContent
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:487,1
    - Dst: computeRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:488,1
    - Dst: skeyset_t::insert
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:491,1
    - Dst: std::make_shared<DNSKEYRecordContent>
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:491,1
    - Dst: DNSSECPrivateKey::getDNSKEY
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:491,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:494,1
    - Dst: std::make_shared<RRSIGRecordContent>
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:494,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:499,1
    - Dst: validateWithKeySet
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:499,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:500,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:504,1
    - Dst: validateWithKeySet
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:504,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:505,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:509,1
    - Dst: validateWithKeySet
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:509,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:510,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 511
      start: 470
    functionDepth: 3
    functionLinenumber: 470
    functionLinenumberEnd: 511
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc4.cc
    functionUses: 0
    functionsReached:
    - withName
    - DNSSECPrivateKey::setKey
    - skeyset_t::insert
    - RRSIGRecordContent::RRSIGRecordContent
    - std::make_shared<RRSIGRecordContent>
    - std::vector::push_back
    - validateWithKeySet
    - DNSCryptoKeyEngine::make
    - computeRRSIG
    - auto::create
    - std::make_shared<DNSKEYRecordContent>
    - initSR
    - sortedRecords_t::insert
    - getRecordContent
    - std::move
    - auto::getBits
    - BOOST_CHECK_EQUAL
    - DNSSECPrivateKey::getDNSKEY
    - BOOST_CHECK
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_dnssec_rrsig_future)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:515,1
    - Dst: withName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:517,1
    - Dst: DNSCryptoKeyEngine::make
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:518,1
    - Dst: auto::create
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:519,1
    - Dst: auto::getBits
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:519,1
    - Dst: DNSSECPrivateKey::setKey
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:521,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:521,1
    - Dst: sortedRecords_t::insert
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:524,1
    - Dst: getRecordContent
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:524,1
    - Dst: RRSIGRecordContent::RRSIGRecordContent
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:530,1
    - Dst: computeRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:531,1
    - Dst: skeyset_t::insert
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:534,1
    - Dst: std::make_shared<DNSKEYRecordContent>
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:534,1
    - Dst: DNSSECPrivateKey::getDNSKEY
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:534,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:537,1
    - Dst: std::make_shared<RRSIGRecordContent>
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:537,1
    - Dst: time
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:540,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:542,1
    - Dst: validateWithKeySet
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:542,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:543,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:547,1
    - Dst: validateWithKeySet
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:547,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:548,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:552,1
    - Dst: validateWithKeySet
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:552,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:553,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 554
      start: 513
    functionDepth: 3
    functionLinenumber: 513
    functionLinenumberEnd: 554
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc4.cc
    functionUses: 0
    functionsReached:
    - withName
    - DNSSECPrivateKey::setKey
    - skeyset_t::insert
    - RRSIGRecordContent::RRSIGRecordContent
    - std::make_shared<RRSIGRecordContent>
    - std::vector::push_back
    - time
    - validateWithKeySet
    - DNSCryptoKeyEngine::make
    - computeRRSIG
    - auto::create
    - std::make_shared<DNSKEYRecordContent>
    - initSR
    - sortedRecords_t::insert
    - getRecordContent
    - std::move
    - auto::getBits
    - BOOST_CHECK_EQUAL
    - DNSSECPrivateKey::getDNSKEY
    - BOOST_CHECK
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_dnssec_rrsig_extreme_timestamps)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:559,1
    - Dst: setDNSSECValidation
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:561,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:563,1
    - Dst: getCopy
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:567,1
    - Dst: auto::dsAnchors::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:568,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:569,1
    - Dst: setState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:570,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:574,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:579,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:583,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:583,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:586,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:588,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:589,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:595,1
    - Dst: addDNSKEY
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:597,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:598,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:607,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:607,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:608,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:609,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:609,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:611,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:611,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:612,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:615,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:616,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:616,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:617,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:618,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:618,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:619,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:619,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:620,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 38
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 621
      start: 556
    functionDepth: 3
    functionLinenumber: 556
    functionLinenumberEnd: 621
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc4.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - primeHints
    - setDNSSECValidation
    - addDNSKEY
    - std::unique_ptr::beginResolve
    - std::string
    - setState
    - QType
    - generateKeyMaterial
    - addRecordToLW
    - auto::dsAnchors::clear
    - addRRSIG
    - vector::clear
    - BOOST_REQUIRE_EQUAL
    - std::unique_ptr::setAsyncCallback
    - initSR
    - std::unique_ptr::getValidationState
    - BOOST_CHECK_EQUAL
    - getCopy
    - vector::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_dnssec_root_validation_csk)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:626,1
    - Dst: setDNSSECValidation
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:628,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:630,1
    - Dst: withName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:636,1
    - Dst: DNSCryptoKeyEngine::make
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:637,1
    - Dst: auto::create
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:638,1
    - Dst: auto::getBits
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:638,1
    - Dst: DNSSECPrivateKey::setKey
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:640,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:640,1
    - Dst: makeDSFromDNSKey
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:641,1
    - Dst: DNSSECPrivateKey::getDNSKEY
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:641,1
    - Dst: DNSCryptoKeyEngine::make
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:643,1
    - Dst: auto::create
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:644,1
    - Dst: auto::getBits
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:644,1
    - Dst: DNSSECPrivateKey::setKey
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:646,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:646,1
    - Dst: makeDSFromDNSKey
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:647,1
    - Dst: DNSSECPrivateKey::getDNSKEY
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:647,1
    - Dst: std::pair<DNSSECPrivateKey, DSRecordContent>
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:649,1
    - Dst: std::pair<DNSSECPrivateKey, DSRecordContent>
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:650,1
    - Dst: getCopy
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:653,1
    - Dst: auto::dsAnchors::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:654,1
    - Dst: insert
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:655,1
    - Dst: setState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:656,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:660,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:665,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:669,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:669,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:672,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:674,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:675,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:681,1
    - Dst: addDNSKEY
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:683,1
    - Dst: addDNSKEY
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:684,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:685,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:694,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:694,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:695,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:696,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:696,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:698,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:698,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:699,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:702,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:703,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:703,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:704,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:705,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:705,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:706,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:706,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:707,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 45
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 708
      start: 623
    functionDepth: 3
    functionLinenumber: 623
    functionLinenumberEnd: 708
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc4.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - primeHints
    - withName
    - DNSSECPrivateKey::setKey
    - setDNSSECValidation
    - addDNSKEY
    - insert
    - std::unique_ptr::beginResolve
    - std::string
    - std::pair<DNSSECPrivateKey, DSRecordContent>
    - setState
    - QType
    - addRecordToLW
    - auto::dsAnchors::clear
    - addRRSIG
    - vector::clear
    - BOOST_REQUIRE_EQUAL
    - std::unique_ptr::setAsyncCallback
    - DNSCryptoKeyEngine::make
    - auto::create
    - initSR
    - std::unique_ptr::getValidationState
    - makeDSFromDNSKey
    - std::move
    - auto::getBits
    - BOOST_CHECK_EQUAL
    - getCopy
    - DNSSECPrivateKey::getDNSKEY
    - vector::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_dnssec_root_validation_ksk_zsk)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:713,1
    - Dst: setDNSSECValidation
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:715,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:717,1
    - Dst: getCopy
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:721,1
    - Dst: auto::dsAnchors::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:722,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:723,1
    - Dst: setState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:724,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:728,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:733,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:737,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:737,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:740,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:742,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:743,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:749,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:760,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:760,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:761,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:762,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:762,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:764,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:764,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:765,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:768,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:769,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:769,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:770,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:771,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:771,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:772,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:772,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:773,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 36
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 774
      start: 710
    functionDepth: 3
    functionLinenumber: 710
    functionLinenumberEnd: 774
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc4.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - primeHints
    - setDNSSECValidation
    - std::unique_ptr::beginResolve
    - std::string
    - setState
    - QType
    - generateKeyMaterial
    - addRecordToLW
    - auto::dsAnchors::clear
    - addRRSIG
    - vector::clear
    - BOOST_REQUIRE_EQUAL
    - std::unique_ptr::setAsyncCallback
    - initSR
    - std::unique_ptr::getValidationState
    - BOOST_CHECK_EQUAL
    - getCopy
    - vector::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_dnssec_bogus_no_dnskey)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:779,1
    - Dst: setDNSSECValidation
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:781,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:783,1
    - Dst: withName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:788,1
    - Dst: DNSCryptoKeyEngine::make
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:789,1
    - Dst: auto::create
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:790,1
    - Dst: auto::getBits
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:790,1
    - Dst: DNSSECPrivateKey::setKey
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:792,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:792,1
    - Dst: makeDSFromDNSKey
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:793,1
    - Dst: DNSSECPrivateKey::getDNSKEY
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:793,1
    - Dst: std::pair<DNSSECPrivateKey, DSRecordContent>
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:795,1
    - Dst: getCopy
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:798,1
    - Dst: auto::dsAnchors::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:799,1
    - Dst: insert
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:800,1
    - Dst: setState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:801,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:805,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:810,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:814,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:814,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:817,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:818,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:819,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:825,1
    - Dst: addDNSKEY
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:827,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:828,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:837,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:837,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:838,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:839,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:839,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:841,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:841,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:842,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:845,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:846,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:846,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:847,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:848,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:848,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:849,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:849,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:850,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 41
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 851
      start: 776
    functionDepth: 3
    functionLinenumber: 776
    functionLinenumberEnd: 851
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc4.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - primeHints
    - withName
    - DNSSECPrivateKey::setKey
    - setDNSSECValidation
    - addDNSKEY
    - insert
    - std::unique_ptr::beginResolve
    - std::string
    - std::pair<DNSSECPrivateKey, DSRecordContent>
    - setState
    - QType
    - addRecordToLW
    - auto::dsAnchors::clear
    - addRRSIG
    - vector::clear
    - BOOST_REQUIRE_EQUAL
    - std::unique_ptr::setAsyncCallback
    - DNSCryptoKeyEngine::make
    - auto::create
    - initSR
    - std::unique_ptr::getValidationState
    - makeDSFromDNSKey
    - std::move
    - auto::getBits
    - BOOST_CHECK_EQUAL
    - getCopy
    - DNSSECPrivateKey::getDNSKEY
    - vector::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_dnssec_bogus_dnskey_without_zone_flag)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:856,1
    - Dst: setDNSSECValidation
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:858,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:860,1
    - Dst: withName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:865,1
    - Dst: DNSCryptoKeyEngine::make
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:866,1
    - Dst: auto::create
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:867,1
    - Dst: auto::getBits
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:867,1
    - Dst: DNSSECPrivateKey::setKey
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:869,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:869,1
    - Dst: makeDSFromDNSKey
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:870,1
    - Dst: DNSSECPrivateKey::getDNSKEY
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:870,1
    - Dst: std::pair<DNSSECPrivateKey, DSRecordContent>
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:872,1
    - Dst: getCopy
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:875,1
    - Dst: auto::dsAnchors::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:876,1
    - Dst: insert
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:877,1
    - Dst: setState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:878,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:882,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:887,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:891,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:891,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:894,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:895,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:896,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:902,1
    - Dst: addDNSKEY
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:904,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:905,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:914,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:914,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:915,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:916,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:916,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:918,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:918,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:919,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:922,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:923,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:923,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:924,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:925,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:925,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:926,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:926,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:927,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 41
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 928
      start: 853
    functionDepth: 3
    functionLinenumber: 853
    functionLinenumberEnd: 928
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc4.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - primeHints
    - withName
    - DNSSECPrivateKey::setKey
    - setDNSSECValidation
    - addDNSKEY
    - insert
    - std::unique_ptr::beginResolve
    - std::string
    - std::pair<DNSSECPrivateKey, DSRecordContent>
    - setState
    - QType
    - addRecordToLW
    - auto::dsAnchors::clear
    - addRRSIG
    - vector::clear
    - BOOST_REQUIRE_EQUAL
    - std::unique_ptr::setAsyncCallback
    - DNSCryptoKeyEngine::make
    - auto::create
    - initSR
    - std::unique_ptr::getValidationState
    - makeDSFromDNSKey
    - std::move
    - auto::getBits
    - BOOST_CHECK_EQUAL
    - getCopy
    - DNSSECPrivateKey::getDNSKEY
    - vector::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_dnssec_bogus_dnskey_revoked)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:933,1
    - Dst: setDNSSECValidation
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:935,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:937,1
    - Dst: withName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:943,1
    - Dst: DNSCryptoKeyEngine::make
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:944,1
    - Dst: auto::create
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:945,1
    - Dst: auto::getBits
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:945,1
    - Dst: DNSSECPrivateKey::setKey
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:947,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:947,1
    - Dst: makeDSFromDNSKey
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:948,1
    - Dst: DNSSECPrivateKey::getDNSKEY
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:948,1
    - Dst: DNSCryptoKeyEngine::make
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:950,1
    - Dst: auto::create
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:951,1
    - Dst: auto::getBits
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:951,1
    - Dst: DNSSECPrivateKey::setKey
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:953,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:953,1
    - Dst: makeDSFromDNSKey
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:954,1
    - Dst: DNSSECPrivateKey::getDNSKEY
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:954,1
    - Dst: std::pair<DNSSECPrivateKey, DSRecordContent>
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:956,1
    - Dst: std::pair<DNSSECPrivateKey, DSRecordContent>
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:957,1
    - Dst: getCopy
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:960,1
    - Dst: auto::dsAnchors::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:961,1
    - Dst: insert
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:962,1
    - Dst: setState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:963,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:967,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:972,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:976,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:976,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:979,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:981,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:982,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:988,1
    - Dst: addDNSKEY
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:990,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:991,1
    - Dst: std::unique_ptr::setDNSSECValidationRequested
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1000,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1002,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1002,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1003,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1004,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1004,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1006,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1006,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1007,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1010,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1011,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1011,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1012,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1013,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1013,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1014,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1014,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1015,1
    - Dst: std::make_unique<MemRecursorCache>
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1019,1
    - Dst: std::make_unique<NegCache>
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1020,1
    - Dst: std::unique_ptr::setDNSSECValidationRequested
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1021,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1022,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1024,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1025,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1025,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1026,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1027,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1027,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1029,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1029,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1030,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1033,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1034,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1034,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1035,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1036,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1036,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1038,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1038,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1039,1
    - Dst: std::unique_ptr::setDNSSECValidationRequested
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1042,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1043,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1044,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1044,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1045,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1046,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1046,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1047,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1047,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1048,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 68
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1049
      start: 930
    functionDepth: 3
    functionLinenumber: 930
    functionLinenumberEnd: 1049
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc4.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - primeHints
    - withName
    - DNSSECPrivateKey::setKey
    - setDNSSECValidation
    - addDNSKEY
    - insert
    - std::unique_ptr::beginResolve
    - std::string
    - std::pair<DNSSECPrivateKey, DSRecordContent>
    - setState
    - QType
    - addRecordToLW
    - auto::dsAnchors::clear
    - addRRSIG
    - vector::clear
    - BOOST_REQUIRE_EQUAL
    - std::unique_ptr::setAsyncCallback
    - DNSCryptoKeyEngine::make
    - auto::create
    - initSR
    - std::unique_ptr::getValidationState
    - makeDSFromDNSKey
    - std::unique_ptr::setDNSSECValidationRequested
    - std::move
    - auto::getBits
    - std::make_unique<MemRecursorCache>
    - BOOST_CHECK_EQUAL
    - std::make_unique<NegCache>
    - getCopy
    - DNSSECPrivateKey::getDNSKEY
    - vector::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_dnssec_bogus_dnskey_doesnt_match_ds)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1054,1
    - Dst: setDNSSECValidation
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1056,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1058,1
    - Dst: getCopy
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1064,1
    - Dst: auto::dsAnchors::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1065,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1068,1
    - Dst: setState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1070,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1074,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1079,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1083,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1083,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1086,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1088,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1089,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1095,1
    - Dst: addDNSKEY
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1097,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1098,1
    - Dst: std::unique_ptr::setDNSSECValidationRequested
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1107,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1109,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1109,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1110,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1111,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1111,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1113,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1113,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1114,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1117,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1118,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1118,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1119,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1120,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1120,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1121,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1121,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1122,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 43
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1125
      start: 1051
    functionDepth: 3
    functionLinenumber: 1051
    functionLinenumberEnd: 1125
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc4.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - primeHints
    - setDNSSECValidation
    - addDNSKEY
    - std::unique_ptr::beginResolve
    - std::string
    - setState
    - QType
    - generateKeyMaterial
    - addRecordToLW
    - auto::dsAnchors::clear
    - addRRSIG
    - vector::clear
    - BOOST_REQUIRE_EQUAL
    - std::unique_ptr::setAsyncCallback
    - initSR
    - std::unique_ptr::getValidationState
    - std::unique_ptr::setDNSSECValidationRequested
    - BOOST_CHECK_EQUAL
    - getCopy
    - vector::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_dnssec_bogus_too_many_dss)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1130,1
    - Dst: setDNSSECValidation
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1132,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1134,1
    - Dst: DNSKEYRecordContent::DNSKEYRecordContent
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1139,1
    - Dst: withName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1142,1
    - Dst: DNSCryptoKeyEngine::makeFromISCString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1143,1
    - Dst: DNSSECPrivateKey::setKey
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1147,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1147,1
    - Dst: assert
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1148,1
    - Dst: DNSSECPrivateKey::getTag
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1148,1
    - Dst: makeDSFromDNSKey
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1149,1
    - Dst: DNSSECPrivateKey::getDNSKEY
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1149,1
    - Dst: std::pair<DNSSECPrivateKey, DSRecordContent>
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1150,1
    - Dst: DNSCryptoKeyEngine::makeFromISCString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1153,1
    - Dst: DNSSECPrivateKey::setKey
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1157,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1157,1
    - Dst: assert
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1158,1
    - Dst: DNSSECPrivateKey::getTag
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1158,1
    - Dst: DNSSECPrivateKey::getTag
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1158,1
    - Dst: makeDSFromDNSKey
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1159,1
    - Dst: DNSSECPrivateKey::getDNSKEY
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1159,1
    - Dst: std::pair<DNSSECPrivateKey, DSRecordContent>
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1160,1
    - Dst: getCopy
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1163,1
    - Dst: auto::dsAnchors::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1164,1
    - Dst: insert
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1165,1
    - Dst: setState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1166,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1170,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1175,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1179,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1179,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1182,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1184,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1185,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1191,1
    - Dst: addDNSKEY
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1193,1
    - Dst: addDNSKEY
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1194,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1195,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1196,1
    - Dst: std::unique_ptr::setDNSSECValidationRequested
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1207,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1209,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1209,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1210,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1211,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1211,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1213,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1213,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1214,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1217,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1218,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1218,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1219,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1220,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1220,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1221,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1221,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1222,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 50
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (dpk.getTag() == dskey.getTag())
      pos:
        line_end: 1157
        line_start: 1157
        source_file: /src/pdns/pdns/recursordist/test-syncres_cc4.cc
    - condition: (dskey.getTag() == 31337)
      pos:
        line_end: 1147
        line_start: 1147
        source_file: /src/pdns/pdns/recursordist/test-syncres_cc4.cc
    constantsTouched: []
    func_position:
      end: 1225
      start: 1127
    functionDepth: 3
    functionLinenumber: 1127
    functionLinenumberEnd: 1225
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc4.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - primeHints
    - withName
    - DNSCryptoKeyEngine::makeFromISCString
    - DNSSECPrivateKey::setKey
    - setDNSSECValidation
    - addDNSKEY
    - insert
    - std::unique_ptr::beginResolve
    - std::string
    - std::pair<DNSSECPrivateKey, DSRecordContent>
    - setState
    - QType
    - addRecordToLW
    - assert
    - auto::dsAnchors::clear
    - addRRSIG
    - vector::clear
    - BOOST_REQUIRE_EQUAL
    - std::unique_ptr::setAsyncCallback
    - initSR
    - std::unique_ptr::getValidationState
    - makeDSFromDNSKey
    - std::unique_ptr::setDNSSECValidationRequested
    - DNSSECPrivateKey::getTag
    - DNSKEYRecordContent::DNSKEYRecordContent
    - std::move
    - BOOST_CHECK_EQUAL
    - getCopy
    - DNSSECPrivateKey::getDNSKEY
    - vector::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_dnssec_bogus_too_many_dnskeys)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1230,1
    - Dst: setDNSSECValidation
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1232,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1234,1
    - Dst: DNSKEYRecordContent::DNSKEYRecordContent
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1240,1
    - Dst: withName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1243,1
    - Dst: DNSCryptoKeyEngine::makeFromISCString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1244,1
    - Dst: DNSSECPrivateKey::setKey
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1248,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1248,1
    - Dst: assert
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1249,1
    - Dst: DNSSECPrivateKey::getTag
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1249,1
    - Dst: makeDSFromDNSKey
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1250,1
    - Dst: DNSSECPrivateKey::getDNSKEY
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1250,1
    - Dst: std::pair<DNSSECPrivateKey, DSRecordContent>
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1251,1
    - Dst: DNSCryptoKeyEngine::makeFromISCString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1254,1
    - Dst: DNSSECPrivateKey::setKey
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1260,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1260,1
    - Dst: assert
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1261,1
    - Dst: DNSSECPrivateKey::getTag
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1261,1
    - Dst: DNSSECPrivateKey::getTag
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1261,1
    - Dst: makeDSFromDNSKey
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1262,1
    - Dst: DNSSECPrivateKey::getDNSKEY
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1262,1
    - Dst: std::pair<DNSSECPrivateKey, DSRecordContent>
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1263,1
    - Dst: getCopy
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1266,1
    - Dst: auto::dsAnchors::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1267,1
    - Dst: insert
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1268,1
    - Dst: setState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1269,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1273,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1278,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1282,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1282,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1285,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1286,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1288,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1289,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1295,1
    - Dst: addDNSKEY
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1297,1
    - Dst: addDNSKEY
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1298,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1299,1
    - Dst: std::unique_ptr::setDNSSECValidationRequested
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1310,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1312,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1312,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1313,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1314,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1314,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1316,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1316,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1317,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1320,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1321,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1321,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1322,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1323,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1323,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1324,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1324,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1325,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 50
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (dskey.getTag() == 31337)
      pos:
        line_end: 1248
        line_start: 1248
        source_file: /src/pdns/pdns/recursordist/test-syncres_cc4.cc
    - condition: (dpk.getTag() == dskey.getTag())
      pos:
        line_end: 1260
        line_start: 1260
        source_file: /src/pdns/pdns/recursordist/test-syncres_cc4.cc
    constantsTouched: []
    func_position:
      end: 1328
      start: 1227
    functionDepth: 3
    functionLinenumber: 1227
    functionLinenumberEnd: 1328
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc4.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - primeHints
    - withName
    - DNSCryptoKeyEngine::makeFromISCString
    - DNSSECPrivateKey::setKey
    - setDNSSECValidation
    - addDNSKEY
    - insert
    - std::unique_ptr::beginResolve
    - std::string
    - std::pair<DNSSECPrivateKey, DSRecordContent>
    - setState
    - QType
    - addRecordToLW
    - assert
    - auto::dsAnchors::clear
    - addRRSIG
    - vector::clear
    - BOOST_REQUIRE_EQUAL
    - std::unique_ptr::setAsyncCallback
    - initSR
    - std::unique_ptr::getValidationState
    - makeDSFromDNSKey
    - std::unique_ptr::setDNSSECValidationRequested
    - DNSSECPrivateKey::getTag
    - DNSKEYRecordContent::DNSKEYRecordContent
    - std::move
    - BOOST_CHECK_EQUAL
    - getCopy
    - DNSSECPrivateKey::getDNSKEY
    - vector::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_dnssec_bogus_too_many_dnskeys_while_checking_signature)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1333,1
    - Dst: setDNSSECValidation
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1335,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1337,1
    - Dst: getCopy
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1342,1
    - Dst: auto::dsAnchors::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1343,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1344,1
    - Dst: setState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1345,1
    - Dst: withName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1347,1
    - Dst: DNSCryptoKeyEngine::make
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1348,1
    - Dst: auto::create
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1349,1
    - Dst: auto::getBits
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1349,1
    - Dst: DNSSECPrivateKey::setKey
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1351,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1351,1
    - Dst: makeDSFromDNSKey
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1352,1
    - Dst: DNSSECPrivateKey::getDNSKEY
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1352,1
    - Dst: std::pair<DNSSECPrivateKey, DSRecordContent>
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1354,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1358,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1363,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1367,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1367,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1370,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1372,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1373,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1379,1
    - Dst: addDNSKEY
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1381,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1382,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1391,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1391,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1392,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1393,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1393,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1395,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1395,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1396,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1399,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1400,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1400,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1401,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1402,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1402,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1403,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1403,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1404,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 41
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1405
      start: 1330
    functionDepth: 3
    functionLinenumber: 1330
    functionLinenumberEnd: 1405
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc4.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - primeHints
    - withName
    - DNSSECPrivateKey::setKey
    - setDNSSECValidation
    - addDNSKEY
    - std::unique_ptr::beginResolve
    - std::string
    - std::pair<DNSSECPrivateKey, DSRecordContent>
    - setState
    - QType
    - generateKeyMaterial
    - addRecordToLW
    - auto::dsAnchors::clear
    - addRRSIG
    - vector::clear
    - BOOST_REQUIRE_EQUAL
    - std::unique_ptr::setAsyncCallback
    - DNSCryptoKeyEngine::make
    - auto::create
    - initSR
    - std::unique_ptr::getValidationState
    - makeDSFromDNSKey
    - std::move
    - auto::getBits
    - BOOST_CHECK_EQUAL
    - getCopy
    - DNSSECPrivateKey::getDNSKEY
    - vector::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_dnssec_bogus_rrsig_signed_with_unknown_dnskey)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1410,1
    - Dst: setDNSSECValidation
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1412,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1414,1
    - Dst: getCopy
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1418,1
    - Dst: auto::dsAnchors::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1419,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1420,1
    - Dst: setState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1421,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1425,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1430,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1434,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1434,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1439,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1440,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1446,1
    - Dst: addDNSKEY
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1448,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1449,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1461,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1461,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1462,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1463,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1463,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1465,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1465,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1467,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1470,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1471,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1471,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1472,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1473,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1473,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1474,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1474,1
    - Dst: BOOST_CHECK_LE
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1477,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1479,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 41
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1480
      start: 1407
    functionDepth: 3
    functionLinenumber: 1407
    functionLinenumberEnd: 1480
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc4.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - primeHints
    - setDNSSECValidation
    - addDNSKEY
    - std::unique_ptr::beginResolve
    - std::string
    - BOOST_CHECK_LE
    - setState
    - QType
    - generateKeyMaterial
    - addRecordToLW
    - auto::dsAnchors::clear
    - addRRSIG
    - vector::clear
    - BOOST_REQUIRE_EQUAL
    - std::unique_ptr::setAsyncCallback
    - initSR
    - std::unique_ptr::getValidationState
    - BOOST_CHECK_EQUAL
    - getCopy
    - vector::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_dnssec_bogus_no_rrsig)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1485,1
    - Dst: setDNSSECValidation
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1487,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1489,1
    - Dst: getCopy
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1493,1
    - Dst: auto::dsAnchors::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1494,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1495,1
    - Dst: setState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1496,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1500,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1506,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1510,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1510,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1515,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1516,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1522,1
    - Dst: addDNSKEY
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1524,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1525,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1537,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1537,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1538,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1539,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1539,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1541,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1541,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1543,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1546,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1547,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1547,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1548,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1549,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1549,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1550,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1550,1
    - Dst: BOOST_CHECK_LE
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1553,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1555,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 41
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1556
      start: 1482
    functionDepth: 3
    functionLinenumber: 1482
    functionLinenumberEnd: 1556
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc4.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - primeHints
    - setDNSSECValidation
    - addDNSKEY
    - std::unique_ptr::beginResolve
    - std::string
    - BOOST_CHECK_LE
    - setState
    - QType
    - generateKeyMaterial
    - addRecordToLW
    - auto::dsAnchors::clear
    - addRRSIG
    - vector::clear
    - BOOST_REQUIRE_EQUAL
    - std::unique_ptr::setAsyncCallback
    - initSR
    - std::unique_ptr::getValidationState
    - BOOST_CHECK_EQUAL
    - getCopy
    - vector::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_dnssec_bogus_no_rrsig_noaa)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1561,1
    - Dst: setDNSSECValidation
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1563,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1565,1
    - Dst: withName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1570,1
    - Dst: DNSCryptoKeyEngine::make
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1571,1
    - Dst: auto::create
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1572,1
    - Dst: auto::getBits
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1572,1
    - Dst: DNSSECPrivateKey::setKey
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1575,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1575,1
    - Dst: makeDSFromDNSKey
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1577,1
    - Dst: DNSSECPrivateKey::getDNSKEY
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1577,1
    - Dst: std::pair<DNSSECPrivateKey, DSRecordContent>
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1578,1
    - Dst: getCopy
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1583,1
    - Dst: auto::dsAnchors::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1584,1
    - Dst: insert
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1585,1
    - Dst: setState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1586,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1590,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1595,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1599,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1599,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1602,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1604,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1605,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1611,1
    - Dst: addDNSKEY
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1613,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1614,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1623,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1623,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1624,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1625,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1625,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1627,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1627,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1629,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1632,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1633,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1633,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1634,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1635,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1635,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1636,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1636,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1637,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 42
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1638
      start: 1558
    functionDepth: 3
    functionLinenumber: 1558
    functionLinenumberEnd: 1638
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc4.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - primeHints
    - withName
    - DNSSECPrivateKey::setKey
    - setDNSSECValidation
    - addDNSKEY
    - insert
    - std::unique_ptr::beginResolve
    - std::string
    - std::pair<DNSSECPrivateKey, DSRecordContent>
    - setState
    - QType
    - addRecordToLW
    - auto::dsAnchors::clear
    - addRRSIG
    - vector::clear
    - BOOST_REQUIRE_EQUAL
    - std::unique_ptr::setAsyncCallback
    - DNSCryptoKeyEngine::make
    - auto::create
    - initSR
    - std::unique_ptr::getValidationState
    - makeDSFromDNSKey
    - std::move
    - auto::getBits
    - BOOST_CHECK_EQUAL
    - getCopy
    - DNSSECPrivateKey::getDNSKEY
    - vector::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_dnssec_insecure_unknown_ds_algorithm)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1643,1
    - Dst: setDNSSECValidation
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1645,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1647,1
    - Dst: withName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1652,1
    - Dst: DNSCryptoKeyEngine::make
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1653,1
    - Dst: auto::create
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1654,1
    - Dst: auto::getBits
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1654,1
    - Dst: DNSSECPrivateKey::setKey
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1656,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1656,1
    - Dst: makeDSFromDNSKey
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1657,1
    - Dst: DNSSECPrivateKey::getDNSKEY
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1657,1
    - Dst: std::pair<DNSSECPrivateKey, DSRecordContent>
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1661,1
    - Dst: getCopy
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1664,1
    - Dst: auto::dsAnchors::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1665,1
    - Dst: insert
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1666,1
    - Dst: setState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1667,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1671,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1676,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1680,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1680,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1683,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1685,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1686,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1692,1
    - Dst: addDNSKEY
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1694,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1695,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1704,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1704,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1705,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1706,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1706,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1708,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1708,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1710,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1713,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1714,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1714,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1715,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1716,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1716,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1717,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1717,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1718,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 42
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1719
      start: 1640
    functionDepth: 3
    functionLinenumber: 1640
    functionLinenumberEnd: 1719
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc4.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - primeHints
    - withName
    - DNSSECPrivateKey::setKey
    - setDNSSECValidation
    - addDNSKEY
    - insert
    - std::unique_ptr::beginResolve
    - std::string
    - std::pair<DNSSECPrivateKey, DSRecordContent>
    - setState
    - QType
    - addRecordToLW
    - auto::dsAnchors::clear
    - addRRSIG
    - vector::clear
    - BOOST_REQUIRE_EQUAL
    - std::unique_ptr::setAsyncCallback
    - DNSCryptoKeyEngine::make
    - auto::create
    - initSR
    - std::unique_ptr::getValidationState
    - makeDSFromDNSKey
    - std::move
    - auto::getBits
    - BOOST_CHECK_EQUAL
    - getCopy
    - DNSSECPrivateKey::getDNSKEY
    - vector::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_dnssec_insecure_unknown_ds_digest)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1724,1
    - Dst: setDNSSECValidation
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1726,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1728,1
    - Dst: getCopy
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1732,1
    - Dst: auto::dsAnchors::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1733,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1734,1
    - Dst: setState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1736,1
    - Dst: std::unique_ptr::getNow
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1740,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1744,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1749,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1753,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1753,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1756,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1758,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1759,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1765,1
    - Dst: addDNSKEY
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1767,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1768,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1777,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1777,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1778,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1779,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1779,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1781,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1781,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1782,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1785,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1786,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1786,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1787,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1788,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1788,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1789,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1789,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1790,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 38
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1791
      start: 1721
    functionDepth: 3
    functionLinenumber: 1721
    functionLinenumberEnd: 1791
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc4.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - primeHints
    - setDNSSECValidation
    - addDNSKEY
    - std::unique_ptr::beginResolve
    - std::string
    - setState
    - QType
    - generateKeyMaterial
    - addRecordToLW
    - auto::dsAnchors::clear
    - addRRSIG
    - vector::clear
    - BOOST_REQUIRE_EQUAL
    - std::unique_ptr::setAsyncCallback
    - std::unique_ptr::getNow
    - initSR
    - std::unique_ptr::getValidationState
    - BOOST_CHECK_EQUAL
    - getCopy
    - vector::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_dnssec_bogus_bad_sig)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1796,1
    - Dst: setDNSSECValidation
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1798,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1800,1
    - Dst: getCopy
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1804,1
    - Dst: auto::dsAnchors::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1805,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1806,1
    - Dst: setState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1808,1
    - Dst: std::unique_ptr::getNow
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1812,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1816,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1821,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1825,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1825,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1828,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1829,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1830,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1832,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1833,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1839,1
    - Dst: addDNSKEY
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1841,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1842,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1853,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1853,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1854,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1855,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1855,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1857,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1857,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1858,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1861,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1862,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1862,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1863,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1864,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1864,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1865,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1865,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1866,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 42
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1869
      start: 1793
    functionDepth: 3
    functionLinenumber: 1793
    functionLinenumberEnd: 1869
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc4.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - primeHints
    - setDNSSECValidation
    - addDNSKEY
    - std::unique_ptr::beginResolve
    - std::string
    - setState
    - QType
    - generateKeyMaterial
    - addRecordToLW
    - auto::dsAnchors::clear
    - addRRSIG
    - vector::clear
    - BOOST_REQUIRE_EQUAL
    - std::unique_ptr::setAsyncCallback
    - std::unique_ptr::getNow
    - initSR
    - std::unique_ptr::getValidationState
    - BOOST_CHECK_EQUAL
    - getCopy
    - vector::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_dnssec_bogus_too_many_sigs)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1874,1
    - Dst: setDNSSECValidation
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1876,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1878,1
    - Dst: getCopy
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1882,1
    - Dst: auto::dsAnchors::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1883,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1884,1
    - Dst: setState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1886,1
    - Dst: std::unique_ptr::getNow
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1890,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1894,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1899,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1903,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1903,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1906,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1907,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1909,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1910,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1916,1
    - Dst: addDNSKEY
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1918,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1919,1
    - Dst: BOOST_REQUIRE_THROW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1930,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1930,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1930,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 32
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1933
      start: 1871
    functionDepth: 3
    functionLinenumber: 1871
    functionLinenumberEnd: 1933
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc4.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - BOOST_REQUIRE_THROW
    - setState
    - std::unique_ptr::setAsyncCallback
    - primeHints
    - QType
    - generateKeyMaterial
    - addRecordToLW
    - std::unique_ptr::getNow
    - initSR
    - setDNSSECValidation
    - getCopy
    - auto::dsAnchors::clear
    - addRRSIG
    - addDNSKEY
    - std::unique_ptr::beginResolve
    - std::string
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_dnssec_bogus_too_many_sig_validations)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1938,1
    - Dst: setDNSSECValidation
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1940,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1942,1
    - Dst: getCopy
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1946,1
    - Dst: auto::dsAnchors::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1947,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1948,1
    - Dst: setState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1950,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1954,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1959,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1963,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1963,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1967,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1969,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1970,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1976,1
    - Dst: addDNSKEY
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1978,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1979,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1988,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1988,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1989,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1990,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1990,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1992,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1992,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1993,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1996,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1997,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1997,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1998,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1999,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:1999,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:2000,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:2000,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:2001,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 38
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2002
      start: 1935
    functionDepth: 3
    functionLinenumber: 1935
    functionLinenumberEnd: 2002
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc4.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - primeHints
    - setDNSSECValidation
    - addDNSKEY
    - std::unique_ptr::beginResolve
    - std::string
    - setState
    - QType
    - generateKeyMaterial
    - addRecordToLW
    - auto::dsAnchors::clear
    - addRRSIG
    - vector::clear
    - BOOST_REQUIRE_EQUAL
    - std::unique_ptr::setAsyncCallback
    - initSR
    - std::unique_ptr::getValidationState
    - BOOST_CHECK_EQUAL
    - getCopy
    - vector::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_dnssec_bogus_bad_algo)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:2007,1
    - Dst: setDNSSECValidation
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:2009,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:2011,1
    - Dst: getCopy
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:2016,1
    - Dst: auto::dsAnchors::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:2017,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:2018,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:2019,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:2019,1
    - Dst: setState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:2021,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:2025,1
    - Dst: genericDSAndDNSKEYHandler
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:2031,1
    - Dst: d_records::pop_back
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:2037,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:2043,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:2044,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:2045,1
    - Dst: addDS
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:2047,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:2047,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:2048,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:2052,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:2053,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:2054,1
    - Dst: ComboAddress::toString
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:2054,1
    - Dst: addRRSIG
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:2055,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:2063,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:2063,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:2064,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:2065,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:2065,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:2066,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:2066,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:2067,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:2070,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:2071,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:2071,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:2072,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:2073,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:2073,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:2074,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:2074,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:2075,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:2078,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:2079,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:2079,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:2079,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:2080,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:2081,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:2081,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:2082,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:2082,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:2083,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 50
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2084
      start: 2004
    functionDepth: 4
    functionLinenumber: 2004
    functionLinenumberEnd: 2084
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc4.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - genericDSAndDNSKEYHandler
    - primeHints
    - setDNSSECValidation
    - std::unique_ptr::beginResolve
    - isRootServer
    - setState
    - QType
    - generateKeyMaterial
    - addRecordToLW
    - auto::dsAnchors::clear
    - addRRSIG
    - vector::clear
    - BOOST_REQUIRE_EQUAL
    - std::unique_ptr::setAsyncCallback
    - DNSName
    - initSR
    - d_records::pop_back
    - addDS
    - std::unique_ptr::getValidationState
    - ComboAddress
    - BOOST_CHECK_EQUAL
    - getCopy
    - ComboAddress::toString
    - vector::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_dnssec_bogus_unsigned_ds)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: initSR
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:2089,1
    - Dst: setDNSSECValidation
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:2091,1
    - Dst: primeHints
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:2093,1
    - Dst: getCopy
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:2097,1
    - Dst: auto::dsAnchors::clear
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:2098,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:2099,1
    - Dst: generateKeyMaterial
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:2100,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:2100,1
    - Dst: setState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:2102,1
    - Dst: std::unique_ptr::setAsyncCallback
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:2106,1
    - Dst: genericDSAndDNSKEYHandler
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:2112,1
    - Dst: d_records::pop_back
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:2118,1
    - Dst: isRootServer
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:2124,1
    - Dst: setLWResult
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:2125,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:2126,1
    - Dst: addDS
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:2128,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:2128,1
    - Dst: addRecordToLW
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:2129,1
    - Dst: std::unique_ptr::beginResolve
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:2137,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:2137,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:2137,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:2138,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:2139,1
    - Dst: std::unique_ptr::getValidationState
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:2139,1
    - Dst: BOOST_REQUIRE_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:2140,1
    - Dst: vector::size
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:2140,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/pdns/recursordist/test-syncres_cc4.cc:2141,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 32
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2142
      start: 2086
    functionDepth: 4
    functionLinenumber: 2086
    functionLinenumberEnd: 2142
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/pdns/recursordist/test-syncres_cc4.cc
    functionUses: 0
    functionsReached:
    - setLWResult
    - genericDSAndDNSKEYHandler
    - primeHints
    - setDNSSECValidation
    - std::unique_ptr::beginResolve
    - isRootServer
    - setState
    - QType
    - generateKeyMaterial
    - addRecordToLW
    - auto::dsAnchors::clear
    - BOOST_REQUIRE_EQUAL
    - std::unique_ptr::setAsyncCallback
    - DNSName
    - initSR
    - d_records::pop_back
    - addDS
    - std::unique_ptr::getValidationState
    - BOOST_CHECK_EQUAL
    - getCopy
    - vector::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_dnssec_bogus_unsigned_ds_direct)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: runtime_error
      Src: /src/pdns/pdns/recursordist/iputils.cc:40,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - ' error'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 38
    functionDepth: 0
    functionLinenumber: 38
    functionLinenumberEnd: 41
    functionName: RuntimeError
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.cc
    functionUses: 12
    functionsReached:
    - runtime_error
    linkageType: ''
    returnType: void
    signature: void RuntimeError(const std::string& error)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: NetworkError
      Src: /src/pdns/pdns/recursordist/iputils.cc:45,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - ' error'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 46
    functionName: NetworkErr
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.cc
    functionUses: 2
    functionsReached:
    - NetworkError
    linkageType: ''
    returnType: void
    signature: void NetworkErr(const std::string& error)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: socket
      Src: /src/pdns/pdns/recursordist/iputils.cc:50,1
    - Dst: RuntimeError
      Src: /src/pdns/pdns/recursordist/iputils.cc:52,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/iputils.cc:52,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/iputils.cc:52,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - family
    - type
    - flags
    argTypes:
    - int
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 48
    functionDepth: 0
    functionLinenumber: 48
    functionLinenumberEnd: 55
    functionName: SSocket
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.cc
    functionUses: 5
    functionsReached:
    - socket
    - stringerror
    - RuntimeError
    - std::to_string
    linkageType: ''
    returnType: int
    signature: int SSocket(int family, int type, int flags)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: doConnect
      Src: /src/pdns/pdns/recursordist/iputils.cc:79,1
    - Dst: RuntimeError
      Src: /src/pdns/pdns/recursordist/iputils.cc:82,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/recursordist/iputils.cc:82,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/iputils.cc:82,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - sockfd
    - fastopen
    - ' remote'
    argTypes:
    - int
    - bool
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 77
    functionDepth: 0
    functionLinenumber: 77
    functionLinenumberEnd: 85
    functionName: SConnect
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.cc
    functionUses: 3
    functionsReached:
    - RuntimeError
    - stringerror
    - toStringWithPort
    - doConnect
    linkageType: ''
    returnType: int
    signature: int SConnect(int sockfd, bool fastopen, const ComboAddress& remote)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: doConnect
      Src: /src/pdns/pdns/recursordist/iputils.cc:89,1
    - Dst: waitForRWData
      Src: /src/pdns/pdns/recursordist/iputils.cc:100,1
    - Dst: getsockopt
      Src: /src/pdns/pdns/recursordist/iputils.cc:105,1
    - Dst: NetworkErr
      Src: /src/pdns/pdns/recursordist/iputils.cc:106,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/recursordist/iputils.cc:106,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/iputils.cc:106,1
    - Dst: NetworkErr
      Src: /src/pdns/pdns/recursordist/iputils.cc:109,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/recursordist/iputils.cc:109,1
    - Dst: NetworkErr
      Src: /src/pdns/pdns/recursordist/iputils.cc:113,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/recursordist/iputils.cc:113,1
    - Dst: NetworkErr
      Src: /src/pdns/pdns/recursordist/iputils.cc:118,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/recursordist/iputils.cc:118,1
    - Dst: NetworkErr
      Src: /src/pdns/pdns/recursordist/iputils.cc:122,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/recursordist/iputils.cc:122,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/iputils.cc:122,1
    - Dst: NetworkErr
      Src: /src/pdns/pdns/recursordist/iputils.cc:126,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/recursordist/iputils.cc:126,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/iputils.cc:126,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 32
    argCount: 4
    argNames:
    - sockfd
    - fastopen
    - ' remote'
    - ' timeout'
    argTypes:
    - int
    - bool
    - ComboAddress
    - struct timeval
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 131
      start: 87
    functionDepth: 0
    functionLinenumber: 87
    functionLinenumberEnd: 131
    functionName: SConnectWithTimeout
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.cc
    functionUses: 11
    functionsReached:
    - getsockopt
    - stringerror
    - toStringWithPort
    - waitForRWData
    - NetworkErr
    - doConnect
    linkageType: ''
    returnType: int
    signature: int SConnectWithTimeout(int sockfd, bool fastopen, const ComboAddress&
      remote, const struct timeval& timeout)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: bind
      Src: /src/pdns/pdns/recursordist/iputils.cc:135,1
    - Dst: reinterpret_cast<const struct sockaddr*>
      Src: /src/pdns/pdns/recursordist/iputils.cc:135,1
    - Dst: getSocklen
      Src: /src/pdns/pdns/recursordist/iputils.cc:135,1
    - Dst: RuntimeError
      Src: /src/pdns/pdns/recursordist/iputils.cc:138,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/recursordist/iputils.cc:138,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/iputils.cc:138,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - sockfd
    - ' local'
    argTypes:
    - int
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 141
      start: 133
    functionDepth: 0
    functionLinenumber: 133
    functionLinenumberEnd: 141
    functionName: SBind
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.cc
    functionUses: 4
    functionsReached:
    - stringerror
    - bind
    - reinterpret_cast<const struct sockaddr*>
    - getSocklen
    - RuntimeError
    - toStringWithPort
    linkageType: ''
    returnType: int
    signature: int SBind(int sockfd, const ComboAddress& local)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: getSocklen
      Src: /src/pdns/pdns/recursordist/iputils.cc:145,1
    - Dst: accept
      Src: /src/pdns/pdns/recursordist/iputils.cc:147,1
    - Dst: reinterpret_cast<struct sockaddr*>
      Src: /src/pdns/pdns/recursordist/iputils.cc:147,1
    - Dst: RuntimeError
      Src: /src/pdns/pdns/recursordist/iputils.cc:149,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/iputils.cc:149,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - sockfd
    - ' remote'
    argTypes:
    - int
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 152
      start: 143
    functionDepth: 0
    functionLinenumber: 143
    functionLinenumberEnd: 152
    functionName: SAccept
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.cc
    functionUses: 5
    functionsReached:
    - accept
    - stringerror
    - RuntimeError
    - getSocklen
    - reinterpret_cast<struct sockaddr*>
    linkageType: ''
    returnType: int
    signature: int SAccept(int sockfd, ComboAddress& remote)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: listen
      Src: /src/pdns/pdns/recursordist/iputils.cc:156,1
    - Dst: RuntimeError
      Src: /src/pdns/pdns/recursordist/iputils.cc:158,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/iputils.cc:158,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - sockfd
    - limit
    argTypes:
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 161
      start: 154
    functionDepth: 0
    functionLinenumber: 154
    functionLinenumberEnd: 161
    functionName: SListen
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.cc
    functionUses: 2
    functionsReached:
    - RuntimeError
    - stringerror
    - listen
    linkageType: ''
    returnType: int
    signature: int SListen(int sockfd, int limit)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: setsockopt
      Src: /src/pdns/pdns/recursordist/iputils.cc:165,1
    - Dst: RuntimeError
      Src: /src/pdns/pdns/recursordist/iputils.cc:167,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/iputils.cc:167,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/iputils.cc:167,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/iputils.cc:167,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/iputils.cc:167,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 4
    argNames:
    - sockfd
    - level
    - opname
    - value
    argTypes:
    - int
    - int
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 170
      start: 163
    functionDepth: 0
    functionLinenumber: 163
    functionLinenumberEnd: 170
    functionName: SSetsockopt
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.cc
    functionUses: 18
    functionsReached:
    - RuntimeError
    - stringerror
    - std::to_string
    - setsockopt
    linkageType: ''
    returnType: int
    signature: int SSetsockopt(int sockfd, int level, int opname, int value)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SSetsockopt
      Src: /src/pdns/pdns/recursordist/iputils.cc:182,1
    - Dst: SSetsockopt
      Src: /src/pdns/pdns/recursordist/iputils.cc:191,1
    - Dst: SSetsockopt
      Src: /src/pdns/pdns/recursordist/iputils.cc:202,1
    - Dst: SSetsockopt
      Src: /src/pdns/pdns/recursordist/iputils.cc:211,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 2
    argNames:
    - sockfd
    - family
    argTypes:
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 214
      start: 172
    functionDepth: 0
    functionLinenumber: 172
    functionLinenumberEnd: 214
    functionName: setSocketIgnorePMTU
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.cc
    functionUses: 3
    functionsReached:
    - SSetsockopt
    linkageType: ''
    returnType: void
    signature: void setSocketIgnorePMTU([[maybe_unused]] int sockfd, [[maybe_unused]]
      int family)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SSetsockopt
      Src: /src/pdns/pdns/recursordist/iputils.cc:221,1
    - Dst: SSetsockopt
      Src: /src/pdns/pdns/recursordist/iputils.cc:224,1
    - Dst: SSetsockopt
      Src: /src/pdns/pdns/recursordist/iputils.cc:230,1
    - Dst: SSetsockopt
      Src: /src/pdns/pdns/recursordist/iputils.cc:233,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - sockfd
    - family
    argTypes:
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 236
      start: 216
    functionDepth: 0
    functionLinenumber: 216
    functionLinenumberEnd: 236
    functionName: setSocketForcePMTU
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.cc
    functionUses: 1
    functionsReached:
    - SSetsockopt
    linkageType: ''
    returnType: void
    signature: void setSocketForcePMTU([[maybe_unused]] int sockfd, [[maybe_unused]]
      int family)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SSetsockopt
      Src: /src/pdns/pdns/recursordist/iputils.cc:242,1
    - Dst: SSetsockopt
      Src: /src/pdns/pdns/recursordist/iputils.cc:250,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 1
    argNames:
    - sockfd
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 258
      start: 238
    functionDepth: 0
    functionLinenumber: 238
    functionLinenumberEnd: 258
    functionName: setReusePort
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.cc
    functionUses: 4
    functionsReached:
    - SSetsockopt
    linkageType: ''
    returnType: bool
    signature: bool setReusePort(int sockfd)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: CMSG_FIRSTHDR
      Src: /src/pdns/pdns/recursordist/iputils.cc:265,1
    - Dst: CMSG_NXTHDR
      Src: /src/pdns/pdns/recursordist/iputils.cc:265,1
    - Dst: CMSG_LEN
      Src: /src/pdns/pdns/recursordist/iputils.cc:266,1
    - Dst: memcpy
      Src: /src/pdns/pdns/recursordist/iputils.cc:267,1
    - Dst: CMSG_DATA
      Src: /src/pdns/pdns/recursordist/iputils.cc:267,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 8
    argCount: 2
    argNames:
    - msgh
    - timeval
    argTypes:
    - struct msghdr*
    - struct timeval*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 273
      start: 260
    functionDepth: 0
    functionLinenumber: 260
    functionLinenumberEnd: 273
    functionName: HarvestTimestamp
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.cc
    functionUses: 2
    functionsReached:
    - memcpy
    - CMSG_FIRSTHDR
    - CMSG_DATA
    - CMSG_NXTHDR
    - CMSG_LEN
    linkageType: ''
    returnType: bool
    signature: bool HarvestTimestamp(struct msghdr* msgh, struct timeval* timeval)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ComboAddress*::reset
      Src: /src/pdns/pdns/recursordist/iputils.cc:276,1
    - Dst: CMSG_FIRSTHDR
      Src: /src/pdns/pdns/recursordist/iputils.cc:282,1
    - Dst: CMSG_NXTHDR
      Src: /src/pdns/pdns/recursordist/iputils.cc:282,1
    - Dst: const_cast<struct msghdr*>
      Src: /src/pdns/pdns/recursordist/iputils.cc:282,1
    - Dst: const_cast<struct cmsghdr*>
      Src: /src/pdns/pdns/recursordist/iputils.cc:282,1
    - Dst: reinterpret_cast<const struct in_pktinfo*>
      Src: /src/pdns/pdns/recursordist/iputils.cc:285,1
    - Dst: CMSG_DATA
      Src: /src/pdns/pdns/recursordist/iputils.cc:285,1
    - Dst: reinterpret_cast<const struct in_addr*>
      Src: /src/pdns/pdns/recursordist/iputils.cc:292,1
    - Dst: CMSG_DATA
      Src: /src/pdns/pdns/recursordist/iputils.cc:292,1
    - Dst: reinterpret_cast<const struct in6_pktinfo*>
      Src: /src/pdns/pdns/recursordist/iputils.cc:300,1
    - Dst: CMSG_DATA
      Src: /src/pdns/pdns/recursordist/iputils.cc:300,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 20
    argCount: 2
    argNames:
    - msgh
    - destination
    argTypes:
    - struct msghdr*
    - ComboAddress*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 308
      start: 274
    functionDepth: 0
    functionLinenumber: 274
    functionLinenumberEnd: 308
    functionName: HarvestDestinationAddress
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.cc
    functionUses: 5
    functionsReached:
    - CMSG_FIRSTHDR
    - const_cast<struct msghdr*>
    - ComboAddress*::reset
    - reinterpret_cast<const struct in_pktinfo*>
    - CMSG_DATA
    - reinterpret_cast<const struct in6_pktinfo*>
    - reinterpret_cast<const struct in_addr*>
    - const_cast<struct cmsghdr*>
    - CMSG_NXTHDR
    linkageType: ''
    returnType: bool
    signature: bool HarvestDestinationAddress(const struct msghdr* msgh, ComboAddress*
      destination)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/pdns/pdns/recursordist/iputils.cc:316,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - ' addr'
    argTypes:
    - ComboAddress
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 319
      start: 310
    functionDepth: 0
    functionLinenumber: 310
    functionLinenumberEnd: 319
    functionName: IsAnyAddress
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.cc
    functionUses: 19
    functionsReached:
    - memcmp
    linkageType: ''
    returnType: bool
    signature: bool IsAnyAddress(const ComboAddress& addr)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: sendmsg
      Src: /src/pdns/pdns/recursordist/iputils.cc:327,1
    - Dst: sendmsg
      Src: /src/pdns/pdns/recursordist/iputils.cc:337,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 2
    argNames:
    - fileDesc
    - msgh
    argTypes:
    - int
    - struct msghdr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 342
      start: 321
    functionDepth: 0
    functionLinenumber: 321
    functionLinenumberEnd: 342
    functionName: sendOnNBSocket
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.cc
    functionUses: 3
    functionsReached:
    - sendmsg
    linkageType: ''
    returnType: int
    signature: int sendOnNBSocket(int fileDesc, const struct msghdr* msgh)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/pdns/pdns/recursordist/iputils.cc:352,1
    - Dst: ComboAddress*::getSocklen
      Src: /src/pdns/pdns/recursordist/iputils.cc:357,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 7
    argNames:
    - msgh
    - iov
    - cbuf
    - cbufsize
    - data
    - datalen
    - addr
    argTypes:
    - struct msghdr*
    - struct iovec*
    - cmsgbuf_aligned*
    - size_t
    - char*
    - size_t
    - ComboAddress*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 361
      start: 347
    functionDepth: 0
    functionLinenumber: 347
    functionLinenumberEnd: 361
    functionName: fillMSGHdr
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.cc
    functionUses: 13
    functionsReached:
    - memset
    - ComboAddress*::getSocklen
    linkageType: ''
    returnType: void
    signature: void fillMSGHdr(struct msghdr* msgh, struct iovec* iov, cmsgbuf_aligned*
      cbuf, size_t cbufsize, char* data, size_t datalen, ComboAddress* addr)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: reinterpret_cast<uint8_t*>
      Src: /src/pdns/pdns/recursordist/iputils.cc:372,1
    - Dst: reinterpret_cast<uint8_t*>
      Src: /src/pdns/pdns/recursordist/iputils.cc:379,1
    - Dst: memset
      Src: /src/pdns/pdns/recursordist/iputils.cc:385,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 1
    argNames:
    - bits
    argTypes:
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 393
      start: 364
    functionDepth: 0
    functionLinenumber: 364
    functionLinenumberEnd: 393
    functionName: ComboAddress::truncate
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.cc
    functionUses: 18
    functionsReached:
    - memset
    - reinterpret_cast<uint8_t*>
    linkageType: ''
    returnType: void
    signature: void ComboAddress::truncate(unsigned int bits) noexcept
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/pdns/pdns/recursordist/iputils.cc:402,1
    - Dst: reinterpret_cast<void*>
      Src: /src/pdns/pdns/recursordist/iputils.cc:407,1
    - Dst: const_cast<ComboAddress*>
      Src: /src/pdns/pdns/recursordist/iputils.cc:407,1
    - Dst: ComboAddress*::getSocklen
      Src: /src/pdns/pdns/recursordist/iputils.cc:408,1
    - Dst: addCMsgSrcAddr
      Src: /src/pdns/pdns/recursordist/iputils.cc:418,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/recursordist/iputils.cc:418,1
    - Dst: const_cast<void*>
      Src: /src/pdns/pdns/recursordist/iputils.cc:422,1
    - Dst: sendmsg
      Src: /src/pdns/pdns/recursordist/iputils.cc:441,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/recursordist/iputils.cc:444,1
    - Dst: reinterpret_cast<void*>
      Src: /src/pdns/pdns/recursordist/iputils.cc:457,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/pdns/recursordist/iputils.cc:457,1
    - Dst: unixDie
      Src: /src/pdns/pdns/recursordist/iputils.cc:472,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 47
    argCount: 7
    argNames:
    - socketDesc
    - buffer
    - len
    - dest
    - local
    - localItf
    - flags
    argTypes:
    - int
    - void*
    - size_t
    - ComboAddress*
    - ComboAddress*
    - unsigned int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 477
      start: 395
    functionDepth: 0
    functionLinenumber: 395
    functionLinenumberEnd: 477
    functionName: sendMsgWithOptions
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.cc
    functionUses: 9
    functionsReached:
    - reinterpret_cast<char*>
    - sendmsg
    - const_cast<ComboAddress*>
    - static_cast<size_t>
    - ComboAddress*::getSocklen
    - unixDie
    - memset
    - reinterpret_cast<void*>
    - const_cast<void*>
    - addCMsgSrcAddr
    - static_cast<int>
    linkageType: ''
    returnType: size_t
    signature: size_t sendMsgWithOptions(int socketDesc, const void* buffer, size_t
      len, const ComboAddress* dest, const ComboAddress* local, unsigned int localItf,
      int flags)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: recv
      Src: /src/pdns/pdns/recursordist/iputils.cc:492,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 1
    argNames:
    - sock
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 516
      start: 485
    functionDepth: 0
    functionLinenumber: 485
    functionLinenumberEnd: 516
    functionName: isTCPSocketUsable
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.cc
    functionUses: 6
    functionsReached:
    - recv
    linkageType: ''
    returnType: bool
    signature: bool isTCPSocketUsable(int sock)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: splitField
      Src: /src/pdns/pdns/recursordist/iputils.cc:527,1
    - Dst: substr
      Src: /src/pdns/pdns/recursordist/iputils.cc:527,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/iputils.cc:528,1
    - Dst: auto::second::empty
      Src: /src/pdns/pdns/recursordist/iputils.cc:528,1
    - Dst: pdns::checked_stoi<uint16_t>
      Src: /src/pdns/pdns/recursordist/iputils.cc:528,1
    - Dst: auto::second::substr
      Src: /src/pdns/pdns/recursordist/iputils.cc:528,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/iputils.cc:542,1
    - Dst: rfind
      Src: /src/pdns/pdns/recursordist/iputils.cc:544,1
    - Dst: substr
      Src: /src/pdns/pdns/recursordist/iputils.cc:546,1
    - Dst: substr
      Src: /src/pdns/pdns/recursordist/iputils.cc:547,1
    - Dst: pdns::checked_stoi<uint16_t>
      Src: /src/pdns/pdns/recursordist/iputils.cc:549,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/iputils.cc:550,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/iputils.cc:553,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 22
    argCount: 2
    argNames:
    - ' input'
    - port
    argTypes:
    - std::string
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 555
      start: 524
    functionDepth: 0
    functionLinenumber: 524
    functionLinenumberEnd: 555
    functionName: parseIPAndPort
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.cc
    functionUses: 5
    functionsReached:
    - splitField
    - auto::second::substr
    - auto::second::empty
    - pdns::checked_stoi<uint16_t>
    - substr
    - rfind
    - ComboAddress
    linkageType: ''
    returnType: ComboAddress
    signature: ComboAddress parseIPAndPort(const std::string& input, uint16_t port)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: getsockopt
      Src: /src/pdns/pdns/recursordist/iputils.cc:562,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/iputils.cc:563,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/iputils.cc:563,1
    - Dst: setsockopt
      Src: /src/pdns/pdns/recursordist/iputils.cc:568,1
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/iputils.cc:569,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/iputils.cc:569,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/iputils.cc:569,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 10
    argCount: 3
    argNames:
    - fileDesc
    - optname
    - size
    argTypes:
    - int
    - int
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 571
      start: 557
    functionDepth: 0
    functionLinenumber: 557
    functionLinenumberEnd: 571
    functionName: setSocketBuffer
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.cc
    functionUses: 6
    functionsReached:
    - getsockopt
    - std::to_string
    - std::runtime_error
    - stringerror
    - setsockopt
    linkageType: ''
    returnType: void
    signature: void setSocketBuffer(int fileDesc, int optname, uint32_t size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: setSocketBuffer
      Src: /src/pdns/pdns/recursordist/iputils.cc:575,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - fileDesc
    - size
    argTypes:
    - int
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 576
      start: 573
    functionDepth: 0
    functionLinenumber: 573
    functionLinenumberEnd: 576
    functionName: setSocketReceiveBuffer
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.cc
    functionUses: 6
    functionsReached:
    - setSocketBuffer
    linkageType: ''
    returnType: void
    signature: void setSocketReceiveBuffer(int fileDesc, uint32_t size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: setSocketBuffer
      Src: /src/pdns/pdns/recursordist/iputils.cc:580,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - fileDesc
    - size
    argTypes:
    - int
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 581
      start: 578
    functionDepth: 0
    functionLinenumber: 578
    functionLinenumberEnd: 581
    functionName: setSocketSendBuffer
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.cc
    functionUses: 6
    functionsReached:
    - setSocketBuffer
    linkageType: ''
    returnType: void
    signature: void setSocketSendBuffer(int fileDesc, uint32_t size)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: getline
      Src: /src/pdns/pdns/recursordist/iputils.cc:589,1
    - Dst: pdns::checked_stoi<uint32_t>
      Src: /src/pdns/pdns/recursordist/iputils.cc:590,1
    - Dst: setSocketBuffer
      Src: /src/pdns/pdns/recursordist/iputils.cc:591,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - socket
    - optname
    - ' readMaxFromFile'
    argTypes:
    - int
    - int
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 596
      start: 584
    functionDepth: 0
    functionLinenumber: 584
    functionLinenumberEnd: 596
    functionName: raiseSocketBufferToMax
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.cc
    functionUses: 4
    functionsReached:
    - pdns::checked_stoi<uint32_t>
    - getline
    - setSocketBuffer
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t raiseSocketBufferToMax(int socket, int optname, const std::string&
      readMaxFromFile)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: raiseSocketBufferToMax
      Src: /src/pdns/pdns/recursordist/iputils.cc:602,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - socket
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 606
      start: 599
    functionDepth: 0
    functionLinenumber: 599
    functionLinenumberEnd: 606
    functionName: raiseSocketReceiveBufferToMax
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.cc
    functionUses: 2
    functionsReached:
    - raiseSocketBufferToMax
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t raiseSocketReceiveBufferToMax([[maybe_unused]] int socket)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: raiseSocketBufferToMax
      Src: /src/pdns/pdns/recursordist/iputils.cc:611,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - socket
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 615
      start: 608
    functionDepth: 0
    functionLinenumber: 608
    functionLinenumberEnd: 615
    functionName: raiseSocketSendBufferToMax
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.cc
    functionUses: 2
    functionsReached:
    - raiseSocketBufferToMax
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t raiseSocketSendBufferToMax([[maybe_unused]] int socket)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: getifaddrs
      Src: /src/pdns/pdns/recursordist/iputils.cc:622,1
    - Dst: std::set::insert
      Src: /src/pdns/pdns/recursordist/iputils.cc:630,1
    - Dst: freeifaddrs
      Src: /src/pdns/pdns/recursordist/iputils.cc:633,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 636
      start: 617
    functionDepth: 2
    functionLinenumber: 617
    functionLinenumberEnd: 636
    functionName: getListOfNetworkInterfaces
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.cc
    functionUses: 2
    functionsReached:
    - freeifaddrs
    - getifaddrs
    - std::set::insert
    linkageType: ''
    returnType: std::set<std::string>
    signature: std::set<std::string> getListOfNetworkInterfaces()
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: getifaddrs
      Src: /src/pdns/pdns/recursordist/iputils.cc:643,1
    - Dst: strcmp
      Src: /src/pdns/pdns/recursordist/iputils.cc:648,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/iputils.cc:648,1
    - Dst: ComboAddress::setSockaddr
      Src: /src/pdns/pdns/recursordist/iputils.cc:656,1
    - Dst: std::vector::push_back
      Src: /src/pdns/pdns/recursordist/iputils.cc:662,1
    - Dst: freeifaddrs
      Src: /src/pdns/pdns/recursordist/iputils.cc:665,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 20
    argCount: 1
    argNames:
    - ' itf'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 667
      start: 639
    functionDepth: 0
    functionLinenumber: 639
    functionLinenumberEnd: 667
    functionName: getListOfAddressesOfNetworkInterface
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.cc
    functionUses: 2
    functionsReached:
    - std::vector::push_back
    - getifaddrs
    - freeifaddrs
    - strcmp
    - ComboAddress::setSockaddr
    - c_str
    linkageType: ''
    returnType: std::vector<ComboAddress>
    signature: std::vector<ComboAddress> getListOfAddressesOfNetworkInterface(const
      std::string& itf)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 673
      start: 669
    functionDepth: 0
    functionLinenumber: 669
    functionLinenumberEnd: 673
    functionName: getListOfAddressesOfNetworkInterface
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.cc
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: std::vector<ComboAddress>
    signature: std::vector<ComboAddress> getListOfAddressesOfNetworkInterface(const
      std::string& /* itf */)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::runtime_error
      Src: /src/pdns/pdns/recursordist/iputils.cc:680,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 2
    argNames:
    - mask
    - len
    argTypes:
    - uint8_t*
    - socklen_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 694
      start: 677
    functionDepth: 0
    functionLinenumber: 677
    functionLinenumberEnd: 694
    functionName: convertNetmaskToBits
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.cc
    functionUses: 2
    functionsReached:
    - std::runtime_error
    linkageType: ''
    returnType: uint8_t
    signature: uint8_t convertNetmaskToBits(const uint8_t* mask, socklen_t len)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: getifaddrs
      Src: /src/pdns/pdns/recursordist/iputils.cc:702,1
    - Dst: strcmp
      Src: /src/pdns/pdns/recursordist/iputils.cc:707,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/iputils.cc:707,1
    - Dst: ComboAddress::setSockaddr
      Src: /src/pdns/pdns/recursordist/iputils.cc:719,1
    - Dst: reinterpret_cast<const struct sockaddr_in*>
      Src: /src/pdns/pdns/recursordist/iputils.cc:727,1
    - Dst: convertNetmaskToBits
      Src: /src/pdns/pdns/recursordist/iputils.cc:728,1
    - Dst: reinterpret_cast<const uint8_t*>
      Src: /src/pdns/pdns/recursordist/iputils.cc:728,1
    - Dst: std::vector::emplace_back
      Src: /src/pdns/pdns/recursordist/iputils.cc:729,1
    - Dst: reinterpret_cast<const struct sockaddr_in6*>
      Src: /src/pdns/pdns/recursordist/iputils.cc:732,1
    - Dst: convertNetmaskToBits
      Src: /src/pdns/pdns/recursordist/iputils.cc:733,1
    - Dst: reinterpret_cast<const uint8_t*>
      Src: /src/pdns/pdns/recursordist/iputils.cc:733,1
    - Dst: std::vector::emplace_back
      Src: /src/pdns/pdns/recursordist/iputils.cc:734,1
    - Dst: freeifaddrs
      Src: /src/pdns/pdns/recursordist/iputils.cc:739,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 28
    argCount: 1
    argNames:
    - ' itf'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 741
      start: 698
    functionDepth: 0
    functionLinenumber: 698
    functionLinenumberEnd: 741
    functionName: getListOfRangesOfNetworkInterface
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.cc
    functionUses: 1
    functionsReached:
    - convertNetmaskToBits
    - getifaddrs
    - reinterpret_cast<const uint8_t*>
    - freeifaddrs
    - reinterpret_cast<const struct sockaddr_in*>
    - strcmp
    - std::vector::emplace_back
    - ComboAddress::setSockaddr
    - c_str
    - reinterpret_cast<const struct sockaddr_in6*>
    linkageType: ''
    returnType: std::vector<Netmask>
    signature: std::vector<Netmask> getListOfRangesOfNetworkInterface(const std::string&
      itf)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 747
      start: 743
    functionDepth: 0
    functionLinenumber: 743
    functionLinenumberEnd: 747
    functionName: getListOfRangesOfNetworkInterface
    functionSourceFile: /src/pdns/pdns/recursordist/iputils.cc
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: std::vector<Netmask>
    signature: std::vector<Netmask> getListOfRangesOfNetworkInterface(const std::string&
      /* itf */)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: to_yaml
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:51,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:51,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ' name'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 48
    functionDepth: 0
    functionLinenumber: 48
    functionLinenumberEnd: 53
    functionName: pdns::settings::rec::getStrings(const std::string& name)
    functionSourceFile: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc
    functionUses: 0
    functionsReached:
    - to_yaml
    - arg
    linkageType: ''
    returnType: ::rust::Vec<::rust::String>
    signature: ::rust::Vec<::rust::String> pdns::settings::rec::getStrings(const std::string&
      name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::settings::rec::to_yaml
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:59,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:59,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ' name'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 55
    functionDepth: 1
    functionLinenumber: 55
    functionLinenumberEnd: 61
    functionName: pdns::settings::rec::getForwardZones(const string& name)
    functionSourceFile: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc
    functionUses: 0
    functionsReached:
    - pdns::settings::rec::to_yaml
    - arg
    linkageType: ''
    returnType: ::rust::Vec<ForwardZone>
    signature: ::rust::Vec<ForwardZone> pdns::settings::rec::getForwardZones(const
      string& name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::settings::rec::to_yaml
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:66,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:66,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ' name'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 63
    functionDepth: 1
    functionLinenumber: 63
    functionLinenumberEnd: 68
    functionName: pdns::settings::rec::getAuthZones(const string& name)
    functionSourceFile: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc
    functionUses: 0
    functionsReached:
    - pdns::settings::rec::to_yaml
    - arg
    linkageType: ''
    returnType: ::rust::Vec<AuthZone>
    signature: ::rust::Vec<AuthZone> pdns::settings::rec::getAuthZones(const string&
      name)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: pdns::UniqueFilePtr
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:72,1
    - Dst: fopen
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:72,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:72,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:74,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:74,1
    - Dst: stringfgets
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:79,1
    - Dst: auto::get
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:79,1
    - Dst: Utility::trim
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:80,1
    - Dst: string::length
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:81,1
    - Dst: string::at
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:81,1
    - Dst: splitField
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:84,1
    - Dst: splitField
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:85,1
    - Dst: Utility::trim
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:86,1
    - Dst: Utility::trim
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:87,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:88,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:88,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:89,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:89,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:93,1
    - Dst: erase
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:93,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:104,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:105,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:105,1
    - Dst: stringtok
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:108,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:109,1
    - Dst: push_back
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:110,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:110,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 32
    argCount: 2
    argNames:
    - ' file'
    - ' vec'
    argTypes:
    - std::string
    - ::rust::Vec<ForwardZone>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 112
      start: 70
    functionDepth: 0
    functionLinenumber: 70
    functionLinenumberEnd: 112
    functionName: pdns::settings::rec::oldStyleForwardsFileToBridgeStruct(const std::string&
      file, ::rust::Vec<ForwardZone>& vec)
    functionSourceFile: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc
    functionUses: 0
    functionsReached:
    - Utility::trim
    - std::move
    - auto::get
    - splitField
    - std::to_string
    - stringtok
    - PDNSException
    - stringerror
    - fopen
    - stringfgets
    - push_back
    - empty
    - string::at
    - pdns::UniqueFilePtr
    - c_str
    - string::length
    - erase
    linkageType: ''
    returnType: void
    signature: void pdns::settings::rec::oldStyleForwardsFileToBridgeStruct(const
      std::string& file, ::rust::Vec<ForwardZone>& vec)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: runtime_error
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:120,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:120,1
    - Dst: getline
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:123,1
    - Dst: string::find
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:124,1
    - Dst: string::resize
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:126,1
    - Dst: Utility::trim
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:128,1
    - Dst: string::empty
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:129,1
    - Dst: emplace_back
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:132,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 2
    argNames:
    - ' file'
    - ' vec'
    argTypes:
    - std::string
    - ::rust::Vec<::rust::String>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 134
      start: 114
    functionDepth: 2
    functionLinenumber: 114
    functionLinenumberEnd: 134
    functionName: pdns::settings::rec::oldStyleAllowFileToBridgeStruct(const std::string&
      file, ::rust::Vec<::rust::String>& vec)
    functionSourceFile: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc
    functionUses: 0
    functionsReached:
    - string::resize
    - string::empty
    - stringerror
    - string::find
    - runtime_error
    - getline
    - emplace_back
    - Utility::trim
    linkageType: ''
    returnType: void
    signature: void pdns::settings::rec::oldStyleAllowFileToBridgeStruct(const std::string&
      file, ::rust::Vec<::rust::String>& vec)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ifstream
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:138,1
    - Dst: auto::is_open
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:139,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:143,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:145,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:145,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:146,1
    - Dst: std::istreambuf_iterator<char>
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:146,1
    - Dst: std::istreambuf_iterator<char>
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:146,1
    - Dst: dnsdist::crypto::authenticated::Nonce::merge
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:147,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 4
    argNames:
    - ' configname'
    - ' settings'
    - allowabsent
    - log
    argTypes:
    - std::string
    - Recursorsettings
    - bool
    - Logr::log_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 148
      start: 136
    functionDepth: 1
    functionLinenumber: 136
    functionLinenumberEnd: 148
    functionName: mergeYamlSubFile
    functionSourceFile: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc
    functionUses: 0
    functionsReached:
    - auto::is_open
    - Logr::log_t::info
    - Logging::Loggable
    - runtime_error
    - string
    - std::istreambuf_iterator<char>
    - ifstream
    - dnsdist::crypto::authenticated::Nonce::merge
    linkageType: ''
    returnType: void
    signature: void mergeYamlSubFile(const std::string& configname, Recursorsettings&
      settings, bool allowabsent, Logr::log_t log)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: auto::append
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:153,1
    - Dst: ifstream
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:154,1
    - Dst: auto::is_open
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:155,1
    - Dst: getline
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:161,1
    - Dst: std::string::find
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:162,1
    - Dst: std::string::resize
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:164,1
    - Dst: Utility::trim
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:166,1
    - Dst: std::string::empty
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:167,1
    - Dst: std::string::find
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:170,1
    - Dst: std::string::substr
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:172,1
    - Dst: Utility::trim
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:173,1
    - Dst: stringtok
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:175,1
    - Dst: rust::vec::emplace_back
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:177,1
    - Dst: pdns::rust::settings::rec::allow_from_to_yaml_string_incoming
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:188,1
    - Dst: string::append
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:191,1
    - Dst: Logr::log_t::error
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:196,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:196,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:197,1
    - Dst: ofstream::close
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:201,1
    - Dst: ofstream::bad
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:202,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:203,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:203,1
    - Dst: unlink
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:204,1
    - Dst: string::c_str
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:204,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:205,1
    - Dst: rename
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:207,1
    - Dst: auto::c_str
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:207,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:207,1
    - Dst: Logr::log_t::error
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:209,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:209,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:209,1
    - Dst: unlink
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:210,1
    - Dst: string::c_str
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:210,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:211,1
    - Dst: rename
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:214,1
    - Dst: string::c_str
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:214,1
    - Dst: string::c_str
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:214,1
    - Dst: Logr::log_t::error
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:216,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:216,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:216,1
    - Dst: rename
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:217,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:217,1
    - Dst: auto::c_str
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:217,1
    - Dst: Logr::log_t::error
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:219,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:219,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:219,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:221,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:223,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:223,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:223,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 51
    argCount: 4
    argNames:
    - ' includeDir'
    - ' apiDir'
    - ' filename'
    - log
    argTypes:
    - string
    - string
    - std::string
    - Logr::log_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 224
      start: 150
    functionDepth: 2
    functionLinenumber: 150
    functionLinenumberEnd: 224
    functionName: possiblyConvertACLFile
    functionSourceFile: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc
    functionUses: 0
    functionsReached:
    - ofstream::bad
    - runtime_error
    - ofstream::close
    - getline
    - stringtok
    - Logr::log_t::info
    - Logging::Loggable
    - std::string::substr
    - Logr::log_t::error
    - std::string::find
    - std::string::empty
    - c_str
    - auto::is_open
    - string::c_str
    - rename
    - pdns::rust::settings::rec::allow_from_to_yaml_string_incoming
    - auto::c_str
    - std::string::resize
    - Utility::trim
    - auto::append
    - string::append
    - unlink
    - ifstream
    - rust::vec::emplace_back
    linkageType: ''
    returnType: void
    signature: void possiblyConvertACLFile(const string& includeDir, const string&
      apiDir, const std::string& filename, Logr::log_t log)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:230,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:230,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:231,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:235,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:235,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:236,1
    - Dst: ifstream::get
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:239,1
    - Dst: ifstream::eof
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:240,1
    - Dst: ifstream::bad
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:243,1
    - Dst: Logr::log_t::error
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:245,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:245,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:246,1
    - Dst: ofstream::put
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:248,1
    - Dst: static_cast<char>
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:248,1
    - Dst: ofstream::bad
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:249,1
    - Dst: Logr::log_t::error
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:251,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:251,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:252,1
    - Dst: ifstream::close
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:255,1
    - Dst: ofstream::close
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:256,1
    - Dst: ofstream::bad
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:257,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:258,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:258,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:259,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 29
    argCount: 3
    argNames:
    - ' src'
    - ' dst'
    - log
    argTypes:
    - string
    - string
    - Logr::log_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 261
      start: 226
    functionDepth: 1
    functionLinenumber: 226
    functionLinenumberEnd: 261
    functionName: fileCopy
    functionSourceFile: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc
    functionUses: 0
    functionsReached:
    - ifstream::eof
    - ofstream::bad
    - Logr::log_t::info
    - Logging::Loggable
    - runtime_error
    - Logr::log_t::error
    - ifstream::bad
    - ofstream::close
    - ifstream::get
    - ifstream::close
    - ofstream::put
    - static_cast<char>
    linkageType: ''
    returnType: void
    signature: void fileCopy(const string& src, const string& dst, Logr::log_t log)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:266,1
    - Dst: pdns::settings::rec::oldStyleSettingsFileToYaml
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:269,1
    - Dst: dnsdist::crypto::authenticated::Nonce::merge
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:270,1
    - Dst: std::string::replace
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:277,1
    - Dst: length
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:277,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:278,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:278,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:278,1
    - Dst: fileCopy
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:279,1
    - Dst: makeEDNSPaddingOptString
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:280,1
    - Dst: api_add_auth_zone
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:281,1
    - Dst: api_add_forward_zones
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:283,1
    - Dst: api_add_forward_zones
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:284,1
    - Dst: rename
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:286,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:286,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:286,1
    - Dst: Logr::log_t::error
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:288,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:288,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:288,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 3
    argNames:
    - ' includeDir'
    - ' apiDir'
    - log
    argTypes:
    - std::string
    - std::string
    - Logr::log_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 291
      start: 263
    functionDepth: 2
    functionLinenumber: 263
    functionLinenumberEnd: 291
    functionName: possiblyConvertForwardsAndAuths
    functionSourceFile: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc
    functionUses: 0
    functionsReached:
    - length
    - api_add_auth_zone
    - rename
    - Logr::log_t::info
    - Logging::Loggable
    - c_str
    - Logr::log_t::error
    - makeEDNSPaddingOptString
    - std::string::replace
    - dnsdist::crypto::authenticated::Nonce::merge
    - pdns::settings::rec::oldStyleSettingsFileToYaml
    - api_add_forward_zones
    - arg
    - fileCopy
    linkageType: ''
    returnType: void
    signature: void possiblyConvertForwardsAndAuths(const std::string& includeDir,
      const std::string& apiDir, Logr::log_t log)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:295,1
    - Dst: auto::empty
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:296,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:299,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:300,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:304,1
    - Dst: possiblyConvertACLFile
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:310,1
    - Dst: auto::append
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:312,1
    - Dst: mergeYamlSubFile
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:313,1
    - Dst: possiblyConvertForwardsAndAuths
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:315,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 3
    argNames:
    - ' includeDirOnCommandLine'
    - ' settings'
    - log
    argTypes:
    - string
    - pdns::rust::settings::rec::Recursorsettings
    - Logr::log_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 316
      start: 293
    functionDepth: 3
    functionLinenumber: 293
    functionLinenumberEnd: 316
    functionName: pdns::settings::rec::processAPIDir(const string& includeDirOnCommandLine,
      pdns::rust::settings::rec::Recursorsettings& settings, Logr::log_t log)
    functionSourceFile: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc
    functionUses: 0
    functionsReached:
    - mergeYamlSubFile
    - auto::append
    - runtime_error
    - possiblyConvertACLFile
    - empty
    - std::string
    - possiblyConvertForwardsAndAuths
    - auto::empty
    linkageType: ''
    returnType: void
    signature: void pdns::settings::rec::processAPIDir(const string& includeDirOnCommandLine,
      pdns::rust::settings::rec::Recursorsettings& settings, Logr::log_t log)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: incoming::allow_notify_for::emplace_back
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:323,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - ' settings'
    - ' vec'
    argTypes:
    - Recursorsettings
    - rust::Vec<T>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 326
      start: 319
    functionDepth: 0
    functionLinenumber: 319
    functionLinenumberEnd: 326
    functionName: addToAllowNotifyFor
    functionSourceFile: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc
    functionUses: 0
    functionsReached:
    - incoming::allow_notify_for::emplace_back
    linkageType: ''
    returnType: void
    signature: void addToAllowNotifyFor(Recursorsettings& settings, const rust::Vec<T>&
      vec)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ifstream
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:330,1
    - Dst: auto::is_open
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:331,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:332,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:335,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:335,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:337,1
    - Dst: std::istreambuf_iterator<char>
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:337,1
    - Dst: std::istreambuf_iterator<char>
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:337,1
    - Dst: pdns::rust::settings::rec::parse_yaml_string
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:338,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:340,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:340,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:340,1
    - Dst: mergeYamlSubFile
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:343,1
    - Dst: addToAllowNotifyFor
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:348,1
    - Dst: addToAllowNotifyFor
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:349,1
    - Dst: addToAllowNotifyFor
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:350,1
    - Dst: auto::validate
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:351,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:352,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:356,1
    - Dst: what
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:360,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 26
    argCount: 5
    argNames:
    - ' configname'
    - ' includeDirOnCommandLine'
    - ' settings'
    - ' msg'
    - log
    argTypes:
    - std::string
    - std::string
    - Recursorsettings
    - std::string
    - Logr::log_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 367
      start: 328
    functionDepth: 2
    functionLinenumber: 328
    functionLinenumberEnd: 367
    functionName: pdns::settings::rec::readYamlSettings(const std::string& configname,
      const std::string& includeDirOnCommandLine, Recursorsettings& settings, std::string&
      msg, Logr::log_t log)
    functionSourceFile: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc
    functionUses: 0
    functionsReached:
    - auto::is_open
    - addToAllowNotifyFor
    - std::move
    - Logr::log_t::info
    - Logging::Loggable
    - mergeYamlSubFile
    - stringerror
    - auto::validate
    - what
    - string
    - std::istreambuf_iterator<char>
    - ifstream
    - empty
    - pdns::rust::settings::rec::parse_yaml_string
    - arg
    linkageType: ''
    returnType: pdns::settings::rec::YamlSettingsStatus
    signature: pdns::settings::rec::YamlSettingsStatus pdns::settings::rec::readYamlSettings(const
      std::string& configname, const std::string& includeDirOnCommandLine, Recursorsettings&
      settings, std::string& msg, Logr::log_t log)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:371,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:371,1
    - Dst: ifstream
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:372,1
    - Dst: auto::is_open
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:373,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:374,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:374,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:376,1
    - Dst: std::istreambuf_iterator<char>
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:376,1
    - Dst: std::istreambuf_iterator<char>
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:376,1
    - Dst: pdns::rust::settings::rec::parse_yaml_string_to_allow_from
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:377,1
    - Dst: pdns::rust::settings::rec::validate_allow_from
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:378,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:379,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - ' filename'
    - ' vec'
    - log
    argTypes:
    - std::string
    - ::rust::Vec<::rust::String>
    - Logr::log_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 380
      start: 369
    functionDepth: 0
    functionLinenumber: 369
    functionLinenumberEnd: 380
    functionName: pdns::settings::rec::readYamlAllowFromFile(const std::string& filename,
      ::rust::Vec<::rust::String>& vec, Logr::log_t log)
    functionSourceFile: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc
    functionUses: 0
    functionsReached:
    - auto::is_open
    - std::move
    - Logr::log_t::info
    - Logging::Loggable
    - stringerror
    - runtime_error
    - string
    - pdns::rust::settings::rec::validate_allow_from
    - std::istreambuf_iterator<char>
    - ifstream
    - pdns::rust::settings::rec::parse_yaml_string_to_allow_from
    linkageType: ''
    returnType: void
    signature: void pdns::settings::rec::readYamlAllowFromFile(const std::string&
      filename, ::rust::Vec<::rust::String>& vec, Logr::log_t log)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:384,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:384,1
    - Dst: ifstream
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:385,1
    - Dst: auto::is_open
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:386,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:387,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:387,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:389,1
    - Dst: std::istreambuf_iterator<char>
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:389,1
    - Dst: std::istreambuf_iterator<char>
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:389,1
    - Dst: pdns::rust::settings::rec::parse_yaml_string_to_forward_zones
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:390,1
    - Dst: pdns::rust::settings::rec::validate_forward_zones
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:391,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:392,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - ' filename'
    - ' vec'
    - log
    argTypes:
    - std::string
    - ::rust::Vec<pdns::rust::settings::rec::ForwardZone>
    - Logr::log_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 393
      start: 382
    functionDepth: 0
    functionLinenumber: 382
    functionLinenumberEnd: 393
    functionName: pdns::settings::rec::readYamlForwardZonesFile(const std::string&
      filename, ::rust::Vec<pdns::rust::settings::rec::ForwardZone>& vec, Logr::log_t
      log)
    functionSourceFile: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc
    functionUses: 0
    functionsReached:
    - auto::is_open
    - std::move
    - Logr::log_t::info
    - Logging::Loggable
    - stringerror
    - runtime_error
    - string
    - pdns::rust::settings::rec::parse_yaml_string_to_forward_zones
    - std::istreambuf_iterator<char>
    - pdns::rust::settings::rec::validate_forward_zones
    - ifstream
    linkageType: ''
    returnType: void
    signature: void pdns::settings::rec::readYamlForwardZonesFile(const std::string&
      filename, ::rust::Vec<pdns::rust::settings::rec::ForwardZone>& vec, Logr::log_t
      log)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:397,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:397,1
    - Dst: ifstream
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:398,1
    - Dst: auto::is_open
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:399,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:400,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:400,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:402,1
    - Dst: std::istreambuf_iterator<char>
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:402,1
    - Dst: std::istreambuf_iterator<char>
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:402,1
    - Dst: pdns::rust::settings::rec::parse_yaml_string_to_allow_notify_for
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:403,1
    - Dst: pdns::rust::settings::rec::validate_allow_notify_for
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:404,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:405,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - ' filename'
    - ' vec'
    - log
    argTypes:
    - std::string
    - ::rust::Vec<::rust::String>
    - Logr::log_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 406
      start: 395
    functionDepth: 0
    functionLinenumber: 395
    functionLinenumberEnd: 406
    functionName: pdns::settings::rec::readYamlAllowNotifyForFile(const std::string&
      filename, ::rust::Vec<::rust::String>& vec, Logr::log_t log)
    functionSourceFile: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc
    functionUses: 0
    functionsReached:
    - auto::is_open
    - std::move
    - pdns::rust::settings::rec::parse_yaml_string_to_allow_notify_for
    - Logr::log_t::info
    - Logging::Loggable
    - stringerror
    - pdns::rust::settings::rec::validate_allow_notify_for
    - runtime_error
    - string
    - std::istreambuf_iterator<char>
    - ifstream
    linkageType: ''
    returnType: void
    signature: void pdns::settings::rec::readYamlAllowNotifyForFile(const std::string&
      filename, ::rust::Vec<::rust::String>& vec, Logr::log_t log)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::settings::rec::to_arg
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:411,1
    - Dst: pdns::settings::rec::to_arg
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:411,1
    - Dst: std::ostringstream::str
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:412,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ' authzone'
    argTypes:
    - AuthZone
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 413
      start: 408
    functionDepth: 1
    functionLinenumber: 408
    functionLinenumberEnd: 413
    functionName: pdns::settings::rec::to_arg(const AuthZone& authzone)
    functionSourceFile: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc
    functionUses: 0
    functionsReached:
    - std::ostringstream::str
    - pdns::settings::rec::to_arg
    linkageType: ''
    returnType: std::string
    signature: std::string pdns::settings::rec::to_arg(const AuthZone& authzone)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pdns::settings::rec::to_arg
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:418,1
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:420,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:420,1
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:421,1
    - Dst: pdns::settings::rec::to_arg
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:424,1
    - Dst: std::ostringstream::str
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:426,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - ' forwardzone'
    argTypes:
    - ForwardZone
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 427
      start: 415
    functionDepth: 1
    functionLinenumber: 415
    functionLinenumberEnd: 427
    functionName: pdns::settings::rec::to_arg(const ForwardZone& forwardzone)
    functionSourceFile: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc
    functionUses: 0
    functionsReached:
    - std::ostringstream::str
    - end
    - pdns::settings::rec::to_arg
    - begin
    linkageType: ''
    returnType: std::string
    signature: std::string pdns::settings::rec::to_arg(const ForwardZone& forwardzone)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:431,1
    - Dst: pdns::settings::rec::to_arg
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:431,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:432,1
    - Dst: pdns::settings::rec::to_arg
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:432,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:433,1
    - Dst: pdns::settings::rec::to_arg
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:433,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:434,1
    - Dst: pdns::settings::rec::to_arg
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:434,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:435,1
    - Dst: pdns::settings::rec::to_arg
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:435,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:436,1
    - Dst: pdns::settings::rec::to_arg
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:436,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:437,1
    - Dst: pdns::settings::rec::to_arg
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:437,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:438,1
    - Dst: pdns::settings::rec::to_arg
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:438,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 1
    argNames:
    - ' settings'
    argTypes:
    - Recursorsettings
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 439
      start: 429
    functionDepth: 1
    functionLinenumber: 429
    functionLinenumberEnd: 439
    functionName: pdns::settings::rec::setArgsForZoneRelatedSettings(Recursorsettings&
      settings)
    functionSourceFile: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc
    functionUses: 0
    functionsReached:
    - arg
    - pdns::settings::rec::to_arg
    linkageType: ''
    returnType: void
    signature: void pdns::settings::rec::setArgsForZoneRelatedSettings(Recursorsettings&
      settings)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:443,1
    - Dst: pdns::settings::rec::to_arg
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:443,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:444,1
    - Dst: pdns::settings::rec::to_arg
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:444,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:445,1
    - Dst: pdns::settings::rec::to_arg
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:445,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:446,1
    - Dst: pdns::settings::rec::to_arg
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:446,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:447,1
    - Dst: pdns::settings::rec::to_arg
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:447,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:448,1
    - Dst: pdns::settings::rec::to_arg
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:448,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - ' settings'
    argTypes:
    - Recursorsettings
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 449
      start: 441
    functionDepth: 1
    functionLinenumber: 441
    functionLinenumberEnd: 449
    functionName: pdns::settings::rec::setArgsForACLRelatedSettings(Recursorsettings&
      settings)
    functionSourceFile: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc
    functionUses: 0
    functionsReached:
    - arg
    - pdns::settings::rec::to_arg
    linkageType: ''
    returnType: void
    signature: void pdns::settings::rec::setArgsForACLRelatedSettings(Recursorsettings&
      settings)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:453,1
    - Dst: checked_stoi_into
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:458,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - ' field'
    - ' val'
    argTypes:
    - uint64_t
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 459
      start: 451
    functionDepth: 0
    functionLinenumber: 451
    functionLinenumberEnd: 459
    functionName: pdns::settings::rec::to_yaml(uint64_t& field, const std::string&
      val)
    functionSourceFile: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc
    functionUses: 0
    functionsReached:
    - empty
    - checked_stoi_into
    linkageType: ''
    returnType: void
    signature: void pdns::settings::rec::to_yaml(uint64_t& field, const std::string&
      val)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:463,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:468,1
    - Dst: strtod
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:470,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - ' field'
    - ' val'
    argTypes:
    - double
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 473
      start: 461
    functionDepth: 0
    functionLinenumber: 461
    functionLinenumberEnd: 473
    functionName: pdns::settings::rec::to_yaml(double& field, const std::string& val)
    functionSourceFile: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc
    functionUses: 0
    functionsReached:
    - empty
    - strtod
    - c_str
    linkageType: ''
    returnType: void
    signature: void pdns::settings::rec::to_yaml(double& field, const std::string&
      val)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: stringtok
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:478,1
    - Dst: splitField
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:480,1
    - Dst: Utility::trim
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:481,1
    - Dst: Utility::trim
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:482,1
    - Dst: push_back
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:484,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:484,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - ' field'
    - ' val'
    argTypes:
    - ::rust::Vec<AuthZone>
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 486
      start: 475
    functionDepth: 0
    functionLinenumber: 475
    functionLinenumberEnd: 486
    functionName: pdns::settings::rec::to_yaml(::rust::Vec<AuthZone>& field, const
      std::string& val)
    functionSourceFile: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc
    functionUses: 0
    functionsReached:
    - std::move
    - splitField
    - stringtok
    - push_back
    - Utility::trim
    linkageType: ''
    returnType: void
    signature: void pdns::settings::rec::to_yaml(::rust::Vec<AuthZone>& field, const
      std::string& val)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: stringtok
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:491,1
    - Dst: splitField
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:493,1
    - Dst: Utility::trim
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:494,1
    - Dst: Utility::trim
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:495,1
    - Dst: stringtok
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:497,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:498,1
    - Dst: push_back
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:499,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:499,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - ' field'
    - ' val'
    - recurse
    argTypes:
    - ::rust::Vec<ForwardZone>
    - std::string
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 501
      start: 488
    functionDepth: 0
    functionLinenumber: 488
    functionLinenumberEnd: 501
    functionName: pdns::settings::rec::to_yaml(::rust::Vec<ForwardZone>& field, const
      std::string& val, bool recurse)
    functionSourceFile: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc
    functionUses: 0
    functionsReached:
    - std::move
    - splitField
    - stringtok
    - push_back
    - Utility::trim
    linkageType: ''
    returnType: void
    signature: void pdns::settings::rec::to_yaml(::rust::Vec<ForwardZone>& field,
      const std::string& val, bool recurse)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 2
    argCount: 1
    argNames:
    - ' rname'
    argTypes:
    - ::rust::String
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 508
      start: 505
    functionDepth: 0
    functionLinenumber: 505
    functionLinenumberEnd: 508
    functionName: simpleRustType
    functionSourceFile: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool simpleRustType(const ::rust::String& rname)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: find
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:517,1
    - Dst: find
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:517,1
    - Dst: substr
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:519,1
    - Dst: substr
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:520,1
    - Dst: find
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:523,1
    - Dst: find
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:523,1
    - Dst: substr
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:525,1
    - Dst: substr
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:526,1
    - Dst: find
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:528,1
    - Dst: find
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:528,1
    - Dst: substr
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:530,1
    - Dst: length
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:533,1
    - Dst: substr
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:534,1
    - Dst: Utility::trim
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:537,1
    - Dst: string::empty
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:538,1
    - Dst: string::find_first_not_of
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:541,1
    - Dst: string::substr
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:543,1
    - Dst: pdns::settings::rec::oldKVToBridgeStruct
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:550,1
    - Dst: simpleRustType
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:551,1
    - Dst: emplace
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:552,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:552,1
    - Dst: second::value::vec_string_val::clear
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:561,1
    - Dst: second::value::vec_forwardzone_val::clear
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:562,1
    - Dst: second::value::vec_authzone_val::clear
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:563,1
    - Dst: second::value::vec_string_val::emplace_back
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:566,1
    - Dst: second::value::vec_forwardzone_val::emplace_back
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:569,1
    - Dst: second::value::vec_authzone_val::emplace_back
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:572,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 45
    argCount: 3
    argNames:
    - ' arg'
    - ' map'
    - mainFile
    argTypes:
    - std::string
    - FieldMap
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 576
      start: 510
    functionDepth: 1
    functionLinenumber: 510
    functionLinenumberEnd: 576
    functionName: processLine
    functionSourceFile: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc
    functionUses: 0
    functionsReached:
    - pdns::settings::rec::oldKVToBridgeStruct
    - length
    - std::move
    - second::value::vec_string_val::clear
    - second::value::vec_authzone_val::emplace_back
    - second::value::vec_forwardzone_val::emplace_back
    - emplace
    - string::empty
    - second::value::vec_string_val::emplace_back
    - second::value::vec_forwardzone_val::clear
    - second::value::vec_authzone_val::clear
    - substr
    - string::substr
    - string::find_first_not_of
    - Utility::trim
    - simpleRustType
    - find
    linkageType: ''
    returnType: void
    signature: void processLine(const std::string& arg, FieldMap& map, bool mainFile)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: runtime_error
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:586,1
    - Dst: stringerror
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:586,1
    - Dst: getline
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:592,1
    - Dst: boost::trim_right
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:593,1
    - Dst: string::empty
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:595,1
    - Dst: string::size
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:595,1
    - Dst: string::substr
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:596,1
    - Dst: string::length
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:596,1
    - Dst: string::find
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:603,1
    - Dst: std::isspace
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:607,1
    - Dst: string::substr
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:608,1
    - Dst: boost::trim_right
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:613,1
    - Dst: string::find_first_not_of
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:616,1
    - Dst: string::substr
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:618,1
    - Dst: processLine
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:621,1
    - Dst: ::rust::Vec<pdns::rust::settings::rec::OldStyle>::reserve
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:627,1
    - Dst: FieldMap::size
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:627,1
    - Dst: ::rust::Vec<pdns::rust::settings::rec::OldStyle>::emplace_back
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:629,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:631,1
    - Dst: pdns::rust::settings::rec::map_to_yaml_string
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:631,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 28
    argCount: 2
    argNames:
    - ' fname'
    - mainFile
    argTypes:
    - string
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 632
      start: 578
    functionDepth: 2
    functionLinenumber: 578
    functionLinenumberEnd: 632
    functionName: pdns::settings::rec::oldStyleSettingsFileToYaml(const string& fname,
      bool mainFile)
    functionSourceFile: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc
    functionUses: 0
    functionsReached:
    - string::size
    - string::empty
    - ::rust::Vec<pdns::rust::settings::rec::OldStyle>::reserve
    - stringerror
    - FieldMap::size
    - runtime_error
    - string::find
    - getline
    - string::substr
    - pdns::rust::settings::rec::map_to_yaml_string
    - boost::trim_right
    - std::isspace
    - string::find_first_not_of
    - processLine
    - string::length
    - ::rust::Vec<pdns::rust::settings::rec::OldStyle>::emplace_back
    - std::string
    linkageType: ''
    returnType: std::string
    signature: std::string pdns::settings::rec::oldStyleSettingsFileToYaml(const string&
      fname, bool mainFile)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:642,1
    - Dst: ArgvMap::isDeprecated
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:643,1
    - Dst: auto::empty
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:643,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:651,1
    - Dst: pdns::settings::rec::oldKVToBridgeStruct
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:652,1
    - Dst: FieldMap::emplace
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:653,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:653,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:653,1
    - Dst: FieldMap::emplace
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:664,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:664,1
    - Dst: def
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:666,1
    - Dst: def
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:667,1
    - Dst: def
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:668,1
    - Dst: def
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:669,1
    - Dst: def
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:670,1
    - Dst: def
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:671,1
    - Dst: def
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:672,1
    - Dst: def
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:673,1
    - Dst: def
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:674,1
    - Dst: def
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:675,1
    - Dst: def
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:676,1
    - Dst: def
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:677,1
    - Dst: def
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:678,1
    - Dst: def
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:679,1
    - Dst: def
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:680,1
    - Dst: def
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:681,1
    - Dst: ::rust::Vec<pdns::rust::settings::rec::OldStyle>::reserve
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:686,1
    - Dst: FieldMap::size
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:686,1
    - Dst: ::rust::Vec<pdns::rust::settings::rec::OldStyle>::emplace_back
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:688,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:690,1
    - Dst: pdns::rust::settings::rec::map_to_yaml_string
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:690,1
    - Dst: stringtok
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:698,1
    - Dst: std::regex_search
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:711,1
    - Dst: std::smatch::empty
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:712,1
    - Dst: std::regex_search
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:716,1
    - Dst: std::smatch::empty
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:717,1
    - Dst: FieldMap::find
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:723,1
    - Dst: make_pair
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:723,1
    - Dst: FieldMap::end
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:723,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:724,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:727,1
    - Dst: auto::empty
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:728,1
    - Dst: replace
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:729,1
    - Dst: std::string::begin
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:729,1
    - Dst: std::string::end
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:729,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:730,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 70
    argCount: 1
    argNames:
    - postProcess
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 748
      start: 634
    functionDepth: 0
    functionLinenumber: 634
    functionLinenumberEnd: 748
    functionName: pdns::settings::rec::defaultsToYaml(bool postProcess)
    functionSourceFile: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc
    functionUses: 0
    functionsReached:
    - ::rust::Vec<pdns::rust::settings::rec::OldStyle>::reserve
    - std::string::end
    - std::smatch::empty
    - std::string
    - make_pair
    - replace
    - ::rust::Vec<pdns::rust::settings::rec::OldStyle>::emplace_back
    - pdns::settings::rec::oldKVToBridgeStruct
    - def
    - stringtok
    - std::regex_search
    - FieldMap::size
    - FieldMap::find
    - ArgvMap::isDeprecated
    - std::string::begin
    - FieldMap::end
    - pdns::rust::settings::rec::map_to_yaml_string
    - arg
    - std::move
    - FieldMap::emplace
    - auto::empty
    linkageType: ''
    returnType: std::string
    signature: std::string pdns::settings::rec::defaultsToYaml(bool postProcess)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: trustanchors::clear
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:756,1
    - Dst: getZoneRepresentation
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:760,1
    - Dst: std::find
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:761,1
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:761,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:761,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:761,1
    - Dst: ::rust::Vec<::rust::String>::emplace_back
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:762,1
    - Dst: getZoneRepresentation
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:762,1
    - Dst: ::rust::Vec<::rust::String>::empty
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:765,1
    - Dst: first::toString
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:766,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:766,1
    - Dst: trustanchors::emplace_back
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:767,1
    - Dst: first::toString
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:771,1
    - Dst: negative_trustanchors::emplace_back
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:772,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 2
    argNames:
    - ' luaConfig'
    - ' dnssec'
    argTypes:
    - LuaConfigItems
    - pdns::rust::settings::rec::Dnssec
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 774
      start: 752
    functionDepth: 1
    functionLinenumber: 752
    functionLinenumberEnd: 774
    functionName: fromLuaToRust
    functionSourceFile: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc
    functionUses: 0
    functionsReached:
    - getZoneRepresentation
    - std::move
    - ::rust::Vec<::rust::String>::empty
    - end
    - trustanchors::emplace_back
    - std::find
    - ::rust::Vec<::rust::String>::emplace_back
    - first::toString
    - begin
    - negative_trustanchors::emplace_back
    - trustanchors::clear
    linkageType: ''
    returnType: void
    signature: void fromLuaToRust(const LuaConfigItems& luaConfig, pdns::rust::settings::rec::Dnssec&
      dnssec)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: servers::emplace_back
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:779,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:779,1
    - Dst: exportTypes::emplace_back
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:789,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:789,1
    - Dst: ProtobufExportConfig::toString
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:793,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 2
    argNames:
    - ' pbConfig'
    - ' pbServer'
    argTypes:
    - ProtobufExportConfig
    - pdns::rust::settings::rec::ProtobufServer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 794
      start: 776
    functionDepth: 0
    functionLinenumber: 776
    functionLinenumberEnd: 794
    functionName: fromLuaToRust
    functionSourceFile: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc
    functionUses: 0
    functionsReached:
    - exportTypes::emplace_back
    - servers::emplace_back
    - QType
    - toStringWithPort
    - ProtobufExportConfig::toString
    linkageType: ''
    returnType: void
    signature: void fromLuaToRust(const ProtobufExportConfig& pbConfig, pdns::rust::settings::rec::ProtobufServer&
      pbServer)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: servers::emplace_back
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:799,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 2
    argNames:
    - ' fsc'
    - ' dnstap'
    argTypes:
    - FrameStreamExportConfig
    - pdns::rust::settings::rec::DNSTapFrameStreamServer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 809
      start: 796
    functionDepth: 0
    functionLinenumber: 796
    functionLinenumberEnd: 809
    functionName: fromLuaToRust
    functionSourceFile: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc
    functionUses: 0
    functionsReached:
    - servers::emplace_back
    linkageType: ''
    returnType: void
    signature: void fromLuaToRust(const FrameStreamExportConfig& fsc, pdns::rust::settings::rec::DNSTapFrameStreamServer&
      dnstap)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: servers::emplace_back
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:814,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 2
    argNames:
    - ' fsc'
    - ' dnstap'
    argTypes:
    - FrameStreamExportConfig
    - pdns::rust::settings::rec::DNSTapNODFrameStreamServer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 824
      start: 811
    functionDepth: 0
    functionLinenumber: 811
    functionLinenumberEnd: 824
    functionName: fromLuaToRust
    functionSourceFile: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc
    functionUses: 0
    functionsReached:
    - servers::emplace_back
    linkageType: ''
    returnType: void
    signature: void fromLuaToRust(const FrameStreamExportConfig& fsc, pdns::rust::settings::rec::DNSTapNODFrameStreamServer&
      dnstap)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: name::empty
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:828,1
    - Dst: name::toStringNoDot
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:828,1
    - Dst: algo::empty
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:829,1
    - Dst: algo::toStringNoDot
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:829,1
    - Dst: Base64Encode
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:830,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - ' var'
    - ' tsig'
    argTypes:
    - pdns::rust::settings::rec::TSIGTriplet
    - TSIGTriplet
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 831
      start: 826
    functionDepth: 0
    functionLinenumber: 826
    functionLinenumberEnd: 831
    functionName: assign
    functionSourceFile: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc
    functionUses: 95
    functionsReached:
    - name::toStringNoDot
    - algo::toStringNoDot
    - algo::empty
    - name::empty
    - Base64Encode
    linkageType: ''
    returnType: void
    signature: void assign(pdns::rust::settings::rec::TSIGTriplet& var, const TSIGTriplet&
      tsig)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: name::empty
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:835,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:836,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:836,1
    - Dst: algo::empty
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:838,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:839,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:839,1
    - Dst: B64Decode
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:841,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:841,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - ' var'
    - ' tsig'
    argTypes:
    - TSIGTriplet
    - pdns::rust::settings::rec::TSIGTriplet
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 842
      start: 833
    functionDepth: 0
    functionLinenumber: 833
    functionLinenumberEnd: 842
    functionName: assign
    functionSourceFile: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc
    functionUses: 95
    functionsReached:
    - B64Decode
    - DNSName
    - algo::empty
    - name::empty
    - std::string
    linkageType: ''
    returnType: void
    signature: void assign(TSIGTriplet& var, const pdns::rust::settings::rec::TSIGTriplet&
      tsig)
  - BBCount: 7
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 16
    argCount: 1
    argNames:
    - kind
    argTypes:
    - DNSFilterEngine::PolicyKind
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 861
      start: 844
    functionDepth: 0
    functionLinenumber: 844
    functionLinenumberEnd: 861
    functionName: cvt
    functionSourceFile: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string cvt(DNSFilterEngine::PolicyKind kind)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pdns::max
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:872,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:873,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:877,1
    - Dst: pdns::rust::settings::rec::RPZ::addresses::emplace_back
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:893,1
    - Dst: cvt
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:898,1
    - Dst: pdns::rust::settings::rec::RPZ::tags::emplace_back
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:909,1
    - Dst: assign
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:913,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:916,1
    - Dst: zoneXFRParams::localAddress::toString
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:917,1
    - Dst: rpzs::emplace_back
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:924,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 32
    argCount: 2
    argNames:
    - ' rpzs'
    - ' rec'
    argTypes:
    - vector<RPZTrackerParams>
    - pdns::rust::settings::rec::Recursor
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 926
      start: 863
    functionDepth: 1
    functionLinenumber: 863
    functionLinenumberEnd: 926
    functionName: fromLuaToRust
    functionSourceFile: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc
    functionUses: 0
    functionsReached:
    - pdns::max
    - assign
    - pdns::rust::settings::rec::RPZ::tags::emplace_back
    - pdns::rust::settings::rec::RPZ::addresses::emplace_back
    - zoneXFRParams::localAddress::toString
    - rpzs::emplace_back
    - cvt
    - ComboAddress
    linkageType: ''
    returnType: void
    signature: void fromLuaToRust(const vector<RPZTrackerParams>& rpzs, pdns::rust::settings::rec::Recursor&
      rec)
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - cfg
    argTypes:
    - pdns::ZoneMD::Config
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 939
      start: 928
    functionDepth: 0
    functionLinenumber: 928
    functionLinenumberEnd: 939
    functionName: cvt
    functionSourceFile: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: string
    signature: string cvt(pdns::ZoneMD::Config cfg)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pdns::rust::settings::rec::ZoneToCache::sources::emplace_back
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:948,1
    - Dst: d_tt::name::empty
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:951,1
    - Dst: d_tt::name::toString
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:952,1
    - Dst: d_tt::algo::toString
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:953,1
    - Dst: Base64Encode
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:954,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:959,1
    - Dst: d_local::toString
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:960,1
    - Dst: cvt
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:962,1
    - Dst: cvt
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:963,1
    - Dst: zonetocaches::emplace_back
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:964,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 21
    argCount: 2
    argNames:
    - ' ztcConfigs'
    - ' recordcache'
    argTypes:
    - map<DNSName, RecZoneToCache::Config>
    - pdns::rust::settings::rec::Recordcache
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 966
      start: 941
    functionDepth: 1
    functionLinenumber: 941
    functionLinenumberEnd: 966
    functionName: fromLuaToRust
    functionSourceFile: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc
    functionUses: 0
    functionsReached:
    - zonetocaches::emplace_back
    - d_tt::name::empty
    - cvt
    - ComboAddress
    - d_local::toString
    - d_tt::name::toString
    - d_tt::algo::toString
    - pdns::rust::settings::rec::ZoneToCache::sources::emplace_back
    - Base64Encode
    linkageType: ''
    returnType: void
    signature: void fromLuaToRust(const map<DNSName, RecZoneToCache::Config>& ztcConfigs,
      pdns::rust::settings::rec::Recordcache& recordcache)
  - BBCount: 6
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 1
    argNames:
    - mode
    argTypes:
    - AdditionalMode
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 983
      start: 968
    functionDepth: 0
    functionLinenumber: 968
    functionLinenumberEnd: 983
    functionName: cvt
    functionSourceFile: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string cvt(AdditionalMode mode)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::map::find
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:993,1
    - Dst: std::map::end
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:993,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:996,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - ' mode'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 997
      start: 985
    functionDepth: 0
    functionLinenumber: 985
    functionLinenumberEnd: 997
    functionName: cvtAdditional
    functionSourceFile: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc
    functionUses: 0
    functionsReached:
    - std::map::find
    - std::map::end
    - runtime_error
    linkageType: ''
    returnType: AdditionalMode
    signature: AdditionalMode cvtAdditional(const std::string& mode)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::map::find
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1006,1
    - Dst: std::map::end
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1006,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1009,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - ' mode'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1010
      start: 999
    functionDepth: 0
    functionLinenumber: 999
    functionLinenumberEnd: 1010
    functionName: cvtZoneMDConfig
    functionSourceFile: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc
    functionUses: 0
    functionsReached:
    - std::map::find
    - std::map::end
    - runtime_error
    linkageType: ''
    returnType: pdns::ZoneMD::Config
    signature: pdns::ZoneMD::Config cvtZoneMDConfig(const std::string& mode)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: toString
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1017,1
    - Dst: pdns::rust::settings::rec::AllowedAdditionalQType::targets::emplace_back
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1019,1
    - Dst: toString
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1019,1
    - Dst: cvt
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1021,1
    - Dst: allowed_additional_qtypes::emplace_back
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1022,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - ' allowAdditionalQTypes'
    - ' rec'
    argTypes:
    - std::map<QType, std::pair<std::set<QType>, AdditionalMode>>
    - pdns::rust::settings::rec::Recursor
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1024
      start: 1012
    functionDepth: 1
    functionLinenumber: 1012
    functionLinenumberEnd: 1024
    functionName: fromLuaToRust
    functionSourceFile: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc
    functionUses: 0
    functionsReached:
    - pdns::rust::settings::rec::AllowedAdditionalQType::targets::emplace_back
    - toString
    - cvt
    - allowed_additional_qtypes::emplace_back
    linkageType: ''
    returnType: void
    signature: void fromLuaToRust(const std::map<QType, std::pair<std::set<QType>,
      AdditionalMode>>& allowAdditionalQTypes, pdns::rust::settings::rec::Recursor&
      rec)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: first::toString
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1030,1
    - Dst: second::address::toString
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1031,1
    - Dst: second::suffixMatchNode::d_tree::getNodes
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1033,1
    - Dst: pdns::rust::settings::rec::ProxyMapping::domains::emplace_back
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1034,1
    - Dst: toString
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1034,1
    - Dst: proxymappings::emplace_back
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1037,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - ' proxyMapping'
    - ' incoming'
    argTypes:
    - ProxyMapping
    - pdns::rust::settings::rec::Incoming
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1039
      start: 1026
    functionDepth: 0
    functionLinenumber: 1026
    functionLinenumberEnd: 1039
    functionName: fromLuaToRust
    functionSourceFile: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc
    functionUses: 0
    functionsReached:
    - toString
    - pdns::rust::settings::rec::ProxyMapping::domains::emplace_back
    - second::suffixMatchNode::d_tree::getNodes
    - second::address::toString
    - first::toString
    - proxymappings::emplace_back
    linkageType: ''
    returnType: void
    signature: void fromLuaToRust(const ProxyMapping& proxyMapping, pdns::rust::settings::rec::Incoming&
      incoming)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getTree
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1043,1
    - Dst: first::toString
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1046,1
    - Dst: std::set::emplace
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1052,1
    - Dst: std::multimap::emplace
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1053,1
    - Dst: std::multimap::equal_range
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1056,1
    - Dst: auto::second::toString
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1060,1
    - Dst: pdns::rust::settings::rec::SortList::subnets::emplace_back
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1061,1
    - Dst: sortlists::emplace_back
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1064,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 2
    argNames:
    - ' arg'
    - ' rec'
    argTypes:
    - SortList
    - pdns::rust::settings::rec::Recursor
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1066
      start: 1041
    functionDepth: 0
    functionLinenumber: 1041
    functionLinenumberEnd: 1066
    functionName: fromLuaToRust
    functionSourceFile: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc
    functionUses: 0
    functionsReached:
    - pdns::rust::settings::rec::SortList::subnets::emplace_back
    - getTree
    - std::set::emplace
    - auto::second::toString
    - sortlists::emplace_back
    - first::toString
    - std::multimap::equal_range
    - std::multimap::emplace
    linkageType: ''
    returnType: void
    signature: void fromLuaToRust(const SortList& arg, pdns::rust::settings::rec::Recursor&
      rec)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: trustanchors::clear
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:756,1
    - Dst: getZoneRepresentation
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:760,1
    - Dst: std::find
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:761,1
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:761,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:761,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:761,1
    - Dst: ::rust::Vec<::rust::String>::emplace_back
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:762,1
    - Dst: getZoneRepresentation
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:762,1
    - Dst: ::rust::Vec<::rust::String>::empty
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:765,1
    - Dst: first::toString
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:766,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:766,1
    - Dst: trustanchors::emplace_back
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:767,1
    - Dst: first::toString
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:771,1
    - Dst: negative_trustanchors::emplace_back
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:772,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 2
    argNames:
    - ' luaConfig'
    - ' dnssec'
    argTypes:
    - LuaConfigItems
    - pdns::rust::settings::rec::Dnssec
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 774
      start: 752
    functionDepth: 1
    functionLinenumber: 752
    functionLinenumberEnd: 774
    functionName: fromLuaToRust
    functionSourceFile: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc
    functionUses: 0
    functionsReached:
    - getZoneRepresentation
    - std::move
    - ::rust::Vec<::rust::String>::empty
    - end
    - trustanchors::emplace_back
    - std::find
    - ::rust::Vec<::rust::String>::emplace_back
    - first::toString
    - begin
    - negative_trustanchors::emplace_back
    - trustanchors::clear
    linkageType: ''
    returnType: void
    signature: void fromLuaToRust(const LuaConfigItems& luaConfig, pdns::rust::settings::rec::Dnssec&
      dnssec)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: servers::emplace_back
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:779,1
    - Dst: toStringWithPort
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:779,1
    - Dst: exportTypes::emplace_back
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:789,1
    - Dst: QType
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:789,1
    - Dst: ProtobufExportConfig::toString
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:793,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 2
    argNames:
    - ' pbConfig'
    - ' pbServer'
    argTypes:
    - ProtobufExportConfig
    - pdns::rust::settings::rec::ProtobufServer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 794
      start: 776
    functionDepth: 0
    functionLinenumber: 776
    functionLinenumberEnd: 794
    functionName: fromLuaToRust
    functionSourceFile: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc
    functionUses: 0
    functionsReached:
    - exportTypes::emplace_back
    - servers::emplace_back
    - QType
    - toStringWithPort
    - ProtobufExportConfig::toString
    linkageType: ''
    returnType: void
    signature: void fromLuaToRust(const ProtobufExportConfig& pbConfig, pdns::rust::settings::rec::ProtobufServer&
      pbServer)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: servers::emplace_back
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:799,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 2
    argNames:
    - ' fsc'
    - ' dnstap'
    argTypes:
    - FrameStreamExportConfig
    - pdns::rust::settings::rec::DNSTapFrameStreamServer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 809
      start: 796
    functionDepth: 0
    functionLinenumber: 796
    functionLinenumberEnd: 809
    functionName: fromLuaToRust
    functionSourceFile: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc
    functionUses: 0
    functionsReached:
    - servers::emplace_back
    linkageType: ''
    returnType: void
    signature: void fromLuaToRust(const FrameStreamExportConfig& fsc, pdns::rust::settings::rec::DNSTapFrameStreamServer&
      dnstap)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: servers::emplace_back
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:814,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 2
    argNames:
    - ' fsc'
    - ' dnstap'
    argTypes:
    - FrameStreamExportConfig
    - pdns::rust::settings::rec::DNSTapNODFrameStreamServer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 824
      start: 811
    functionDepth: 0
    functionLinenumber: 811
    functionLinenumberEnd: 824
    functionName: fromLuaToRust
    functionSourceFile: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc
    functionUses: 0
    functionsReached:
    - servers::emplace_back
    linkageType: ''
    returnType: void
    signature: void fromLuaToRust(const FrameStreamExportConfig& fsc, pdns::rust::settings::rec::DNSTapNODFrameStreamServer&
      dnstap)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: name::empty
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:828,1
    - Dst: name::toStringNoDot
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:828,1
    - Dst: algo::empty
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:829,1
    - Dst: algo::toStringNoDot
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:829,1
    - Dst: Base64Encode
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:830,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - ' var'
    - ' tsig'
    argTypes:
    - pdns::rust::settings::rec::TSIGTriplet
    - TSIGTriplet
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 831
      start: 826
    functionDepth: 0
    functionLinenumber: 826
    functionLinenumberEnd: 831
    functionName: assign
    functionSourceFile: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc
    functionUses: 96
    functionsReached:
    - name::toStringNoDot
    - algo::toStringNoDot
    - algo::empty
    - name::empty
    - Base64Encode
    linkageType: ''
    returnType: void
    signature: void assign(pdns::rust::settings::rec::TSIGTriplet& var, const TSIGTriplet&
      tsig)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: name::empty
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:835,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:836,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:836,1
    - Dst: algo::empty
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:838,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:839,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:839,1
    - Dst: B64Decode
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:841,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:841,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - ' var'
    - ' tsig'
    argTypes:
    - TSIGTriplet
    - pdns::rust::settings::rec::TSIGTriplet
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 842
      start: 833
    functionDepth: 0
    functionLinenumber: 833
    functionLinenumberEnd: 842
    functionName: assign
    functionSourceFile: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc
    functionUses: 96
    functionsReached:
    - B64Decode
    - DNSName
    - algo::empty
    - name::empty
    - std::string
    linkageType: ''
    returnType: void
    signature: void assign(TSIGTriplet& var, const pdns::rust::settings::rec::TSIGTriplet&
      tsig)
  - BBCount: 7
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 16
    argCount: 1
    argNames:
    - kind
    argTypes:
    - DNSFilterEngine::PolicyKind
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 861
      start: 844
    functionDepth: 0
    functionLinenumber: 844
    functionLinenumberEnd: 861
    functionName: cvt
    functionSourceFile: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string cvt(DNSFilterEngine::PolicyKind kind)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pdns::max
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:872,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:873,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:877,1
    - Dst: pdns::rust::settings::rec::RPZ::addresses::emplace_back
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:893,1
    - Dst: cvt
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:898,1
    - Dst: pdns::rust::settings::rec::RPZ::tags::emplace_back
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:909,1
    - Dst: assign
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:913,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:916,1
    - Dst: zoneXFRParams::localAddress::toString
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:917,1
    - Dst: rpzs::emplace_back
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:924,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 32
    argCount: 2
    argNames:
    - ' rpzs'
    - ' rec'
    argTypes:
    - vector<RPZTrackerParams>
    - pdns::rust::settings::rec::Recursor
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 926
      start: 863
    functionDepth: 1
    functionLinenumber: 863
    functionLinenumberEnd: 926
    functionName: fromLuaToRust
    functionSourceFile: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc
    functionUses: 0
    functionsReached:
    - pdns::max
    - assign
    - pdns::rust::settings::rec::RPZ::tags::emplace_back
    - pdns::rust::settings::rec::RPZ::addresses::emplace_back
    - zoneXFRParams::localAddress::toString
    - rpzs::emplace_back
    - cvt
    - ComboAddress
    linkageType: ''
    returnType: void
    signature: void fromLuaToRust(const vector<RPZTrackerParams>& rpzs, pdns::rust::settings::rec::Recursor&
      rec)
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - cfg
    argTypes:
    - pdns::ZoneMD::Config
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 939
      start: 928
    functionDepth: 0
    functionLinenumber: 928
    functionLinenumberEnd: 939
    functionName: cvt
    functionSourceFile: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: string
    signature: string cvt(pdns::ZoneMD::Config cfg)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pdns::rust::settings::rec::ZoneToCache::sources::emplace_back
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:948,1
    - Dst: d_tt::name::empty
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:951,1
    - Dst: d_tt::name::toString
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:952,1
    - Dst: d_tt::algo::toString
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:953,1
    - Dst: Base64Encode
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:954,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:959,1
    - Dst: d_local::toString
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:960,1
    - Dst: cvt
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:962,1
    - Dst: cvt
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:963,1
    - Dst: zonetocaches::emplace_back
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:964,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 21
    argCount: 2
    argNames:
    - ' ztcConfigs'
    - ' recordcache'
    argTypes:
    - map<DNSName, RecZoneToCache::Config>
    - pdns::rust::settings::rec::Recordcache
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 966
      start: 941
    functionDepth: 1
    functionLinenumber: 941
    functionLinenumberEnd: 966
    functionName: fromLuaToRust
    functionSourceFile: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc
    functionUses: 0
    functionsReached:
    - zonetocaches::emplace_back
    - d_tt::name::empty
    - cvt
    - ComboAddress
    - d_local::toString
    - d_tt::name::toString
    - d_tt::algo::toString
    - pdns::rust::settings::rec::ZoneToCache::sources::emplace_back
    - Base64Encode
    linkageType: ''
    returnType: void
    signature: void fromLuaToRust(const map<DNSName, RecZoneToCache::Config>& ztcConfigs,
      pdns::rust::settings::rec::Recordcache& recordcache)
  - BBCount: 6
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 1
    argNames:
    - mode
    argTypes:
    - AdditionalMode
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 983
      start: 968
    functionDepth: 0
    functionLinenumber: 968
    functionLinenumberEnd: 983
    functionName: cvt
    functionSourceFile: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string cvt(AdditionalMode mode)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::map::find
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:993,1
    - Dst: std::map::end
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:993,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:996,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - ' mode'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 997
      start: 985
    functionDepth: 0
    functionLinenumber: 985
    functionLinenumberEnd: 997
    functionName: cvtAdditional
    functionSourceFile: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc
    functionUses: 0
    functionsReached:
    - std::map::find
    - std::map::end
    - runtime_error
    linkageType: ''
    returnType: AdditionalMode
    signature: AdditionalMode cvtAdditional(const std::string& mode)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::map::find
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1006,1
    - Dst: std::map::end
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1006,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1009,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - ' mode'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1010
      start: 999
    functionDepth: 0
    functionLinenumber: 999
    functionLinenumberEnd: 1010
    functionName: cvtZoneMDConfig
    functionSourceFile: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc
    functionUses: 0
    functionsReached:
    - std::map::find
    - std::map::end
    - runtime_error
    linkageType: ''
    returnType: pdns::ZoneMD::Config
    signature: pdns::ZoneMD::Config cvtZoneMDConfig(const std::string& mode)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: toString
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1017,1
    - Dst: pdns::rust::settings::rec::AllowedAdditionalQType::targets::emplace_back
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1019,1
    - Dst: toString
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1019,1
    - Dst: cvt
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1021,1
    - Dst: allowed_additional_qtypes::emplace_back
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1022,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - ' allowAdditionalQTypes'
    - ' rec'
    argTypes:
    - std::map<QType, std::pair<std::set<QType>, AdditionalMode>>
    - pdns::rust::settings::rec::Recursor
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1024
      start: 1012
    functionDepth: 1
    functionLinenumber: 1012
    functionLinenumberEnd: 1024
    functionName: fromLuaToRust
    functionSourceFile: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc
    functionUses: 0
    functionsReached:
    - pdns::rust::settings::rec::AllowedAdditionalQType::targets::emplace_back
    - toString
    - cvt
    - allowed_additional_qtypes::emplace_back
    linkageType: ''
    returnType: void
    signature: void fromLuaToRust(const std::map<QType, std::pair<std::set<QType>,
      AdditionalMode>>& allowAdditionalQTypes, pdns::rust::settings::rec::Recursor&
      rec)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: first::toString
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1030,1
    - Dst: second::address::toString
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1031,1
    - Dst: second::suffixMatchNode::d_tree::getNodes
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1033,1
    - Dst: pdns::rust::settings::rec::ProxyMapping::domains::emplace_back
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1034,1
    - Dst: toString
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1034,1
    - Dst: proxymappings::emplace_back
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1037,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - ' proxyMapping'
    - ' incoming'
    argTypes:
    - ProxyMapping
    - pdns::rust::settings::rec::Incoming
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1039
      start: 1026
    functionDepth: 0
    functionLinenumber: 1026
    functionLinenumberEnd: 1039
    functionName: fromLuaToRust
    functionSourceFile: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc
    functionUses: 0
    functionsReached:
    - toString
    - pdns::rust::settings::rec::ProxyMapping::domains::emplace_back
    - second::suffixMatchNode::d_tree::getNodes
    - second::address::toString
    - first::toString
    - proxymappings::emplace_back
    linkageType: ''
    returnType: void
    signature: void fromLuaToRust(const ProxyMapping& proxyMapping, pdns::rust::settings::rec::Incoming&
      incoming)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getTree
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1043,1
    - Dst: first::toString
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1046,1
    - Dst: std::set::emplace
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1052,1
    - Dst: std::multimap::emplace
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1053,1
    - Dst: std::multimap::equal_range
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1056,1
    - Dst: auto::second::toString
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1060,1
    - Dst: pdns::rust::settings::rec::SortList::subnets::emplace_back
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1061,1
    - Dst: sortlists::emplace_back
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1064,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 2
    argNames:
    - ' arg'
    - ' rec'
    argTypes:
    - SortList
    - pdns::rust::settings::rec::Recursor
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1066
      start: 1041
    functionDepth: 0
    functionLinenumber: 1041
    functionLinenumberEnd: 1066
    functionName: fromLuaToRust
    functionSourceFile: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc
    functionUses: 0
    functionsReached:
    - pdns::rust::settings::rec::SortList::subnets::emplace_back
    - getTree
    - std::set::emplace
    - auto::second::toString
    - sortlists::emplace_back
    - first::toString
    - std::multimap::equal_range
    - std::multimap::emplace
    linkageType: ''
    returnType: void
    signature: void fromLuaToRust(const SortList& arg, pdns::rust::settings::rec::Recursor&
      rec)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: fromLuaToRust
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1072,1
    - Dst: fromLuaToRust
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1077,1
    - Dst: logging::protobuf_servers::emplace_back
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1078,1
    - Dst: fromLuaToRust
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1082,1
    - Dst: logging::outgoing_protobuf_servers::emplace_back
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1083,1
    - Dst: fromLuaToRust
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1087,1
    - Dst: logging::dnstap_framestream_servers::emplace_back
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1088,1
    - Dst: fromLuaToRust
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1092,1
    - Dst: logging::dnstap_nod_framestream_servers::emplace_back
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1093,1
    - Dst: fromLuaToRust
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1095,1
    - Dst: fromLuaToRust
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1096,1
    - Dst: fromLuaToRust
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1097,1
    - Dst: fromLuaToRust
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1098,1
    - Dst: fromLuaToRust
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1099,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 25
    argCount: 3
    argNames:
    - ' luaConfig'
    - ' proxyMapping'
    - ' settings'
    argTypes:
    - LuaConfigItems
    - ProxyMapping
    - pdns::rust::settings::rec::Recursorsettings
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1100
      start: 1069
    functionDepth: 2
    functionLinenumber: 1069
    functionLinenumberEnd: 1100
    functionName: pdns::settings::rec::fromLuaConfigToBridgeStruct(LuaConfigItems&
      luaConfig, const ProxyMapping& proxyMapping, pdns::rust::settings::rec::Recursorsettings&
      settings)
    functionSourceFile: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc
    functionUses: 0
    functionsReached:
    - logging::outgoing_protobuf_servers::emplace_back
    - fromLuaToRust
    - logging::protobuf_servers::emplace_back
    - logging::dnstap_nod_framestream_servers::emplace_back
    - logging::dnstap_framestream_servers::emplace_back
    linkageType: ''
    returnType: void
    signature: void pdns::settings::rec::fromLuaConfigToBridgeStruct(LuaConfigItems&
      luaConfig, const ProxyMapping& proxyMapping, pdns::rust::settings::rec::Recursorsettings&
      settings)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1114,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1114,1
    - Dst: dsAnchors::erase
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1115,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1118,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1118,1
    - Dst: std::dynamic_pointer_cast<DSRecordContent>
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1120,1
    - Dst: make
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1120,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1120,1
    - Dst: emplace
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1121,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1125,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1125,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1125,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1127,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 2
    argNames:
    - ' dnssec'
    - ' luaConfig'
    argTypes:
    - pdns::rust::settings::rec::Dnssec
    - LuaConfigItems
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1129
      start: 1104
    functionDepth: 0
    functionLinenumber: 1104
    functionLinenumberEnd: 1129
    functionName: fromRustToLuaConfig
    functionSourceFile: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc
    functionUses: 0
    functionsReached:
    - std::dynamic_pointer_cast<DSRecordContent>
    - dsAnchors::erase
    - DNSName
    - make
    - std::string
    - emplace
    linkageType: ''
    returnType: void
    signature: void fromRustToLuaConfig(const pdns::rust::settings::rec::Dnssec& dnssec,
      LuaConfigItems& luaConfig)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: exportTypes::clear
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1134,1
    - Dst: exportTypes::emplace
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1136,1
    - Dst: QType::chartocode
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1136,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1136,1
    - Dst: servers::emplace_back
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1139,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1139,1
    - Dst: ProtobufExportConfig::strategyFromString
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1150,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1150,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 2
    argNames:
    - ' pbServer'
    - ' exp'
    argTypes:
    - pdns::rust::settings::rec::ProtobufServer
    - ProtobufExportConfig
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1151
      start: 1131
    functionDepth: 1
    functionLinenumber: 1131
    functionLinenumberEnd: 1151
    functionName: fromRustToLuaConfig
    functionSourceFile: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc
    functionUses: 0
    functionsReached:
    - exportTypes::clear
    - servers::emplace_back
    - QType::chartocode
    - exportTypes::emplace
    - ProtobufExportConfig::strategyFromString
    - std::string
    linkageType: ''
    returnType: void
    signature: void fromRustToLuaConfig(const pdns::rust::settings::rec::ProtobufServer&
      pbServer, ProtobufExportConfig& exp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: servers::emplace_back
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1157,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1157,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 2
    argNames:
    - ' dnstap'
    - ' exp'
    argTypes:
    - pdns::rust::settings::rec::DNSTapFrameStreamServer
    - FrameStreamExportConfig
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1167
      start: 1153
    functionDepth: 0
    functionLinenumber: 1153
    functionLinenumberEnd: 1167
    functionName: fromRustToLuaConfig
    functionSourceFile: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc
    functionUses: 0
    functionsReached:
    - std::string
    - servers::emplace_back
    linkageType: ''
    returnType: void
    signature: void fromRustToLuaConfig(const pdns::rust::settings::rec::DNSTapFrameStreamServer&
      dnstap, FrameStreamExportConfig& exp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: servers::emplace_back
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1173,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1173,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 2
    argNames:
    - ' dnstap'
    - ' exp'
    argTypes:
    - pdns::rust::settings::rec::DNSTapNODFrameStreamServer
    - FrameStreamExportConfig
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1183
      start: 1169
    functionDepth: 0
    functionLinenumber: 1169
    functionLinenumberEnd: 1183
    functionName: fromRustToLuaConfig
    functionSourceFile: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc
    functionUses: 0
    functionsReached:
    - std::string
    - servers::emplace_back
    linkageType: ''
    returnType: void
    signature: void fromRustToLuaConfig(const pdns::rust::settings::rec::DNSTapNODFrameStreamServer&
      dnstap, FrameStreamExportConfig& exp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::map::find
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1194,1
    - Dst: std::map::end
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1194,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1197,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - ' kind'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1198
      start: 1185
    functionDepth: 0
    functionLinenumber: 1185
    functionLinenumberEnd: 1198
    functionName: cvtKind
    functionSourceFile: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc
    functionUses: 0
    functionsReached:
    - std::map::find
    - std::map::end
    - runtime_error
    linkageType: ''
    returnType: DNSFilterEngine::PolicyKind
    signature: DNSFilterEngine::PolicyKind cvtKind(const std::string& kind)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: RPZTrackerParams::zoneXFRParams::primaries::emplace_back
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1205,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1207,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1208,1
    - Dst: defpol::empty
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1210,1
    - Dst: DNSFilterEngine::Policy
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1211,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1212,1
    - Dst: cvtKind
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1213,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1213,1
    - Dst: RPZTrackerParams::defpol::setName
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1214,1
    - Dst: make_unique<DNSFilterEngine::Policy::CustomData>
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1217,1
    - Dst: RPZTrackerParams::defpol::d_custom::push_back
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1219,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1219,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1220,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1222,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1223,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1232,1
    - Dst: RPZTrackerParams::tags::emplace
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1238,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1238,1
    - Dst: assign
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1242,1
    - Dst: localAddress::empty
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1245,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1246,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1246,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1249,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1250,1
    - Dst: rpzs::emplace_back
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1252,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 44
    argCount: 2
    argNames:
    - ' rpzs'
    - ' luaConfig'
    argTypes:
    - rust::Vec<pdns::rust::settings::rec::RPZ>
    - LuaConfigItems
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1254
      start: 1200
    functionDepth: 1
    functionLinenumber: 1200
    functionLinenumberEnd: 1254
    functionName: fromRustToLuaConfig
    functionSourceFile: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc
    functionUses: 0
    functionsReached:
    - make_unique<DNSFilterEngine::Policy::CustomData>
    - pdns::max
    - RPZTrackerParams::defpol::d_custom::push_back
    - static_cast<int>
    - assign
    - localAddress::empty
    - DNSFilterEngine::Policy
    - ComboAddress
    - RPZTrackerParams::defpol::setName
    - DNSRecordContent::make
    - rpzs::emplace_back
    - RPZTrackerParams::tags::emplace
    - std::string
    - cvtKind
    - RPZTrackerParams::zoneXFRParams::primaries::emplace_back
    - defpol::empty
    linkageType: ''
    returnType: void
    signature: void fromRustToLuaConfig(const rust::Vec<pdns::rust::settings::rec::RPZ>&
      rpzs, LuaConfigItems& luaConfig)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1259,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1259,1
    - Dst: RecZoneToCache::Config::d_sources::emplace_back
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1262,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1262,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1264,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1265,1
    - Dst: localAddress::empty
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1266,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1267,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1267,1
    - Dst: tsig::name::empty
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1269,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1270,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1270,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1271,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1271,1
    - Dst: B64Decode
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1272,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1272,1
    - Dst: static_cast<time_t>
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1275,1
    - Dst: static_cast<time_t>
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1276,1
    - Dst: cvtZoneMDConfig
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1278,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1278,1
    - Dst: cvtZoneMDConfig
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1279,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1279,1
    - Dst: emplace
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1280,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 21
    argCount: 2
    argNames:
    - ' ztcs'
    - ' lua'
    argTypes:
    - rust::Vec<pdns::rust::settings::rec::ZoneToCache>
    - map<DNSName, RecZoneToCache::Config>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1282
      start: 1256
    functionDepth: 1
    functionLinenumber: 1256
    functionLinenumberEnd: 1282
    functionName: fromRustToLuaConfig
    functionSourceFile: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc
    functionUses: 0
    functionsReached:
    - localAddress::empty
    - tsig::name::empty
    - static_cast<time_t>
    - cvtZoneMDConfig
    - B64Decode
    - DNSName
    - std::string
    - RecZoneToCache::Config::d_sources::emplace_back
    - emplace
    - ComboAddress
    linkageType: ''
    returnType: void
    signature: void fromRustToLuaConfig(const rust::Vec<pdns::rust::settings::rec::ZoneToCache>&
      ztcs, map<DNSName, RecZoneToCache::Config>& lua)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: addEntry
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1288,1
    - Dst: Netmask
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1288,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1288,1
    - Dst: Netmask
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1288,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1288,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1288,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 2
    argNames:
    - ' sortlists'
    - ' lua'
    argTypes:
    - rust::Vec<pdns::rust::settings::rec::SortList>
    - SortList
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1291
      start: 1284
    functionDepth: 0
    functionLinenumber: 1284
    functionLinenumberEnd: 1291
    functionName: fromRustToLuaConfig
    functionSourceFile: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc
    functionUses: 0
    functionsReached:
    - Netmask
    - addEntry
    - std::string
    - static_cast<int>
    linkageType: ''
    returnType: void
    signature: void fromRustToLuaConfig(const rust::Vec<pdns::rust::settings::rec::SortList>&
      sortlists, SortList& lua)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: QType::chartocode
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1296,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1296,1
    - Dst: std::set::emplace
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1299,1
    - Dst: QType::chartocode
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1299,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1299,1
    - Dst: cvtAdditional
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1302,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1302,1
    - Dst: emplace
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1303,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - ' alloweds'
    - ' lua'
    argTypes:
    - rust::Vec<pdns::rust::settings::rec::AllowedAdditionalQType>
    - std::map<QType, std::pair<std::set<QType>, AdditionalMode>>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1305
      start: 1293
    functionDepth: 1
    functionLinenumber: 1293
    functionLinenumberEnd: 1305
    functionName: fromRustToLuaConfig
    functionSourceFile: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc
    functionUses: 0
    functionsReached:
    - std::set::emplace
    - QType::chartocode
    - std::string
    - emplace
    - cvtAdditional
    linkageType: ''
    returnType: void
    signature: void fromRustToLuaConfig(const rust::Vec<pdns::rust::settings::rec::AllowedAdditionalQType>&
      alloweds, std::map<QType, std::pair<std::set<QType>, AdditionalMode>>& lua)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Netmask
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1310,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1310,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1311,1
    - Dst: domains::empty
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1313,1
    - Dst: std::make_optional
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1314,1
    - Dst: std::optional::add
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1316,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1316,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1316,1
    - Dst: insert_or_assign
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1319,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1319,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1319,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - ' pmaps'
    - ' proxyMapping'
    argTypes:
    - rust::Vec<pdns::rust::settings::rec::ProxyMapping>
    - ProxyMapping
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1321
      start: 1307
    functionDepth: 0
    functionLinenumber: 1307
    functionLinenumberEnd: 1321
    functionName: fromRustToLuaConfig
    functionSourceFile: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc
    functionUses: 0
    functionsReached:
    - Netmask
    - insert_or_assign
    - std::move
    - std::optional::add
    - DNSName
    - domains::empty
    - std::string
    - std::make_optional
    linkageType: ''
    returnType: void
    signature: void fromRustToLuaConfig(const rust::Vec<pdns::rust::settings::rec::ProxyMapping>&
      pmaps, ProxyMapping& proxyMapping)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: FWCatalogZone::d_defaults::emplace
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1328,1
    - Dst: std::make_shared<CatalogZone>
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1330,1
    - Dst: FWCatalogZone::d_params::primaries::emplace_back
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1333,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1335,1
    - Dst: assign
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1337,1
    - Dst: xfr::localAddress::empty
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1340,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1341,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1341,1
    - Dst: emplace_back
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1344,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1344,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 2
    argNames:
    - ' catzones'
    - ' lua'
    argTypes:
    - rust::Vec<pdns::rust::settings::rec::ForwardingCatalogZone>
    - std::vector<FWCatalogZone>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1346
      start: 1323
    functionDepth: 1
    functionLinenumber: 1323
    functionLinenumberEnd: 1346
    functionName: fromRustToLuaConfig
    functionSourceFile: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc
    functionUses: 0
    functionsReached:
    - assign
    - std::move
    - xfr::localAddress::empty
    - std::make_shared<CatalogZone>
    - emplace_back
    - FWCatalogZone::d_params::primaries::emplace_back
    - std::string
    - FWCatalogZone::d_defaults::emplace
    - ComboAddress
    linkageType: ''
    returnType: void
    signature: void fromRustToLuaConfig(const rust::Vec<pdns::rust::settings::rec::ForwardingCatalogZone>&
      catzones, std::vector<FWCatalogZone>& lua)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: qnames::empty
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1352,1
    - Dst: SuffixMatchNode
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1353,1
    - Dst: OpenTelemetryTraceCondition::d_qnames::add
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1356,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1356,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1356,1
    - Dst: qtypes::empty
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1358,1
    - Dst: std::unordered_set<QType>
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1359,1
    - Dst: OpenTelemetryTraceCondition::d_qtypes::insert
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1362,1
    - Dst: QType::chartocode
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1362,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1362,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1364,1
    - Dst: insert
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1370,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1370,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 19
    argCount: 2
    argNames:
    - ' settings'
    - ' conditions'
    argTypes:
    - rust::Vec<pdns::rust::settings::rec::OpenTelemetryTraceCondition>
    - OpenTelemetryTraceConditions
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1373
      start: 1348
    functionDepth: 2
    functionLinenumber: 1348
    functionLinenumberEnd: 1373
    functionName: fromRustToOTTraceConditions
    functionSourceFile: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc
    functionUses: 0
    functionsReached:
    - pdns::max
    - qnames::empty
    - DNSName
    - std::unordered_set<QType>
    - OpenTelemetryTraceCondition::d_qtypes::insert
    - QType::chartocode
    - insert
    - std::string
    - SuffixMatchNode
    - OpenTelemetryTraceCondition::d_qnames::add
    - qtypes::empty
    linkageType: ''
    returnType: void
    signature: void fromRustToOTTraceConditions(const rust::Vec<pdns::rust::settings::rec::OpenTelemetryTraceCondition>&
      settings, OpenTelemetryTraceConditions& conditions)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1114,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1114,1
    - Dst: dsAnchors::erase
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1115,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1118,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1118,1
    - Dst: std::dynamic_pointer_cast<DSRecordContent>
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1120,1
    - Dst: make
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1120,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1120,1
    - Dst: emplace
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1121,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1125,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1125,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1125,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1127,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 2
    argNames:
    - ' dnssec'
    - ' luaConfig'
    argTypes:
    - pdns::rust::settings::rec::Dnssec
    - LuaConfigItems
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1129
      start: 1104
    functionDepth: 0
    functionLinenumber: 1104
    functionLinenumberEnd: 1129
    functionName: fromRustToLuaConfig
    functionSourceFile: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc
    functionUses: 0
    functionsReached:
    - std::dynamic_pointer_cast<DSRecordContent>
    - dsAnchors::erase
    - DNSName
    - make
    - std::string
    - emplace
    linkageType: ''
    returnType: void
    signature: void fromRustToLuaConfig(const pdns::rust::settings::rec::Dnssec& dnssec,
      LuaConfigItems& luaConfig)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: exportTypes::clear
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1134,1
    - Dst: exportTypes::emplace
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1136,1
    - Dst: QType::chartocode
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1136,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1136,1
    - Dst: servers::emplace_back
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1139,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1139,1
    - Dst: ProtobufExportConfig::strategyFromString
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1150,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1150,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 2
    argNames:
    - ' pbServer'
    - ' exp'
    argTypes:
    - pdns::rust::settings::rec::ProtobufServer
    - ProtobufExportConfig
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1151
      start: 1131
    functionDepth: 1
    functionLinenumber: 1131
    functionLinenumberEnd: 1151
    functionName: fromRustToLuaConfig
    functionSourceFile: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc
    functionUses: 0
    functionsReached:
    - exportTypes::clear
    - servers::emplace_back
    - QType::chartocode
    - exportTypes::emplace
    - ProtobufExportConfig::strategyFromString
    - std::string
    linkageType: ''
    returnType: void
    signature: void fromRustToLuaConfig(const pdns::rust::settings::rec::ProtobufServer&
      pbServer, ProtobufExportConfig& exp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: servers::emplace_back
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1157,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1157,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 2
    argNames:
    - ' dnstap'
    - ' exp'
    argTypes:
    - pdns::rust::settings::rec::DNSTapFrameStreamServer
    - FrameStreamExportConfig
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1167
      start: 1153
    functionDepth: 0
    functionLinenumber: 1153
    functionLinenumberEnd: 1167
    functionName: fromRustToLuaConfig
    functionSourceFile: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc
    functionUses: 0
    functionsReached:
    - std::string
    - servers::emplace_back
    linkageType: ''
    returnType: void
    signature: void fromRustToLuaConfig(const pdns::rust::settings::rec::DNSTapFrameStreamServer&
      dnstap, FrameStreamExportConfig& exp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: servers::emplace_back
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1173,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1173,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 2
    argNames:
    - ' dnstap'
    - ' exp'
    argTypes:
    - pdns::rust::settings::rec::DNSTapNODFrameStreamServer
    - FrameStreamExportConfig
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1183
      start: 1169
    functionDepth: 0
    functionLinenumber: 1169
    functionLinenumberEnd: 1183
    functionName: fromRustToLuaConfig
    functionSourceFile: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc
    functionUses: 0
    functionsReached:
    - std::string
    - servers::emplace_back
    linkageType: ''
    returnType: void
    signature: void fromRustToLuaConfig(const pdns::rust::settings::rec::DNSTapNODFrameStreamServer&
      dnstap, FrameStreamExportConfig& exp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::map::find
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1194,1
    - Dst: std::map::end
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1194,1
    - Dst: runtime_error
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1197,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - ' kind'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1198
      start: 1185
    functionDepth: 0
    functionLinenumber: 1185
    functionLinenumberEnd: 1198
    functionName: cvtKind
    functionSourceFile: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc
    functionUses: 1
    functionsReached:
    - std::map::find
    - std::map::end
    - runtime_error
    linkageType: ''
    returnType: DNSFilterEngine::PolicyKind
    signature: DNSFilterEngine::PolicyKind cvtKind(const std::string& kind)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: RPZTrackerParams::zoneXFRParams::primaries::emplace_back
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1205,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1207,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1208,1
    - Dst: defpol::empty
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1210,1
    - Dst: DNSFilterEngine::Policy
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1211,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1212,1
    - Dst: cvtKind
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1213,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1213,1
    - Dst: RPZTrackerParams::defpol::setName
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1214,1
    - Dst: make_unique<DNSFilterEngine::Policy::CustomData>
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1217,1
    - Dst: RPZTrackerParams::defpol::d_custom::push_back
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1219,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1219,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1220,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1222,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1223,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1232,1
    - Dst: RPZTrackerParams::tags::emplace
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1238,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1238,1
    - Dst: assign
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1242,1
    - Dst: localAddress::empty
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1245,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1246,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1246,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1249,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1250,1
    - Dst: rpzs::emplace_back
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1252,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 44
    argCount: 2
    argNames:
    - ' rpzs'
    - ' luaConfig'
    argTypes:
    - rust::Vec<pdns::rust::settings::rec::RPZ>
    - LuaConfigItems
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1254
      start: 1200
    functionDepth: 1
    functionLinenumber: 1200
    functionLinenumberEnd: 1254
    functionName: fromRustToLuaConfig
    functionSourceFile: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc
    functionUses: 0
    functionsReached:
    - make_unique<DNSFilterEngine::Policy::CustomData>
    - pdns::max
    - RPZTrackerParams::defpol::d_custom::push_back
    - static_cast<int>
    - assign
    - localAddress::empty
    - DNSFilterEngine::Policy
    - ComboAddress
    - RPZTrackerParams::defpol::setName
    - DNSRecordContent::make
    - rpzs::emplace_back
    - RPZTrackerParams::tags::emplace
    - std::string
    - cvtKind
    - RPZTrackerParams::zoneXFRParams::primaries::emplace_back
    - defpol::empty
    linkageType: ''
    returnType: void
    signature: void fromRustToLuaConfig(const rust::Vec<pdns::rust::settings::rec::RPZ>&
      rpzs, LuaConfigItems& luaConfig)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1259,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1259,1
    - Dst: RecZoneToCache::Config::d_sources::emplace_back
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1262,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1262,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1264,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1265,1
    - Dst: localAddress::empty
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1266,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1267,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1267,1
    - Dst: tsig::name::empty
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1269,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1270,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1270,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1271,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1271,1
    - Dst: B64Decode
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1272,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1272,1
    - Dst: static_cast<time_t>
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1275,1
    - Dst: static_cast<time_t>
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1276,1
    - Dst: cvtZoneMDConfig
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1278,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1278,1
    - Dst: cvtZoneMDConfig
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1279,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1279,1
    - Dst: emplace
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1280,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 21
    argCount: 2
    argNames:
    - ' ztcs'
    - ' lua'
    argTypes:
    - rust::Vec<pdns::rust::settings::rec::ZoneToCache>
    - map<DNSName, RecZoneToCache::Config>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1282
      start: 1256
    functionDepth: 1
    functionLinenumber: 1256
    functionLinenumberEnd: 1282
    functionName: fromRustToLuaConfig
    functionSourceFile: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc
    functionUses: 0
    functionsReached:
    - localAddress::empty
    - tsig::name::empty
    - static_cast<time_t>
    - cvtZoneMDConfig
    - B64Decode
    - DNSName
    - std::string
    - RecZoneToCache::Config::d_sources::emplace_back
    - emplace
    - ComboAddress
    linkageType: ''
    returnType: void
    signature: void fromRustToLuaConfig(const rust::Vec<pdns::rust::settings::rec::ZoneToCache>&
      ztcs, map<DNSName, RecZoneToCache::Config>& lua)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: addEntry
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1288,1
    - Dst: Netmask
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1288,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1288,1
    - Dst: Netmask
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1288,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1288,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1288,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 2
    argNames:
    - ' sortlists'
    - ' lua'
    argTypes:
    - rust::Vec<pdns::rust::settings::rec::SortList>
    - SortList
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1291
      start: 1284
    functionDepth: 0
    functionLinenumber: 1284
    functionLinenumberEnd: 1291
    functionName: fromRustToLuaConfig
    functionSourceFile: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc
    functionUses: 0
    functionsReached:
    - Netmask
    - addEntry
    - std::string
    - static_cast<int>
    linkageType: ''
    returnType: void
    signature: void fromRustToLuaConfig(const rust::Vec<pdns::rust::settings::rec::SortList>&
      sortlists, SortList& lua)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: QType::chartocode
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1296,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1296,1
    - Dst: std::set::emplace
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1299,1
    - Dst: QType::chartocode
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1299,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1299,1
    - Dst: cvtAdditional
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1302,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1302,1
    - Dst: emplace
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1303,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - ' alloweds'
    - ' lua'
    argTypes:
    - rust::Vec<pdns::rust::settings::rec::AllowedAdditionalQType>
    - std::map<QType, std::pair<std::set<QType>, AdditionalMode>>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1305
      start: 1293
    functionDepth: 1
    functionLinenumber: 1293
    functionLinenumberEnd: 1305
    functionName: fromRustToLuaConfig
    functionSourceFile: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc
    functionUses: 0
    functionsReached:
    - std::set::emplace
    - QType::chartocode
    - std::string
    - emplace
    - cvtAdditional
    linkageType: ''
    returnType: void
    signature: void fromRustToLuaConfig(const rust::Vec<pdns::rust::settings::rec::AllowedAdditionalQType>&
      alloweds, std::map<QType, std::pair<std::set<QType>, AdditionalMode>>& lua)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Netmask
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1310,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1310,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1311,1
    - Dst: domains::empty
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1313,1
    - Dst: std::make_optional
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1314,1
    - Dst: std::optional::add
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1316,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1316,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1316,1
    - Dst: insert_or_assign
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1319,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1319,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1319,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - ' pmaps'
    - ' proxyMapping'
    argTypes:
    - rust::Vec<pdns::rust::settings::rec::ProxyMapping>
    - ProxyMapping
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1321
      start: 1307
    functionDepth: 0
    functionLinenumber: 1307
    functionLinenumberEnd: 1321
    functionName: fromRustToLuaConfig
    functionSourceFile: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc
    functionUses: 0
    functionsReached:
    - Netmask
    - insert_or_assign
    - std::move
    - std::optional::add
    - DNSName
    - domains::empty
    - std::string
    - std::make_optional
    linkageType: ''
    returnType: void
    signature: void fromRustToLuaConfig(const rust::Vec<pdns::rust::settings::rec::ProxyMapping>&
      pmaps, ProxyMapping& proxyMapping)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: FWCatalogZone::d_defaults::emplace
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1328,1
    - Dst: std::make_shared<CatalogZone>
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1330,1
    - Dst: FWCatalogZone::d_params::primaries::emplace_back
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1333,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1335,1
    - Dst: assign
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1337,1
    - Dst: xfr::localAddress::empty
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1340,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1341,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1341,1
    - Dst: emplace_back
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1344,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1344,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 2
    argNames:
    - ' catzones'
    - ' lua'
    argTypes:
    - rust::Vec<pdns::rust::settings::rec::ForwardingCatalogZone>
    - std::vector<FWCatalogZone>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1346
      start: 1323
    functionDepth: 1
    functionLinenumber: 1323
    functionLinenumberEnd: 1346
    functionName: fromRustToLuaConfig
    functionSourceFile: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc
    functionUses: 0
    functionsReached:
    - assign
    - std::move
    - xfr::localAddress::empty
    - std::make_shared<CatalogZone>
    - emplace_back
    - FWCatalogZone::d_params::primaries::emplace_back
    - std::string
    - FWCatalogZone::d_defaults::emplace
    - ComboAddress
    linkageType: ''
    returnType: void
    signature: void fromRustToLuaConfig(const rust::Vec<pdns::rust::settings::rec::ForwardingCatalogZone>&
      catzones, std::vector<FWCatalogZone>& lua)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: qnames::empty
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1352,1
    - Dst: SuffixMatchNode
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1353,1
    - Dst: OpenTelemetryTraceCondition::d_qnames::add
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1356,1
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1356,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1356,1
    - Dst: qtypes::empty
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1358,1
    - Dst: std::unordered_set<QType>
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1359,1
    - Dst: OpenTelemetryTraceCondition::d_qtypes::insert
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1362,1
    - Dst: QType::chartocode
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1362,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1362,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1364,1
    - Dst: insert
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1370,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1370,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 19
    argCount: 2
    argNames:
    - ' settings'
    - ' conditions'
    argTypes:
    - rust::Vec<pdns::rust::settings::rec::OpenTelemetryTraceCondition>
    - OpenTelemetryTraceConditions
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1373
      start: 1348
    functionDepth: 2
    functionLinenumber: 1348
    functionLinenumberEnd: 1373
    functionName: fromRustToOTTraceConditions
    functionSourceFile: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc
    functionUses: 0
    functionsReached:
    - pdns::max
    - qnames::empty
    - DNSName
    - std::unordered_set<QType>
    - OpenTelemetryTraceCondition::d_qtypes::insert
    - QType::chartocode
    - insert
    - std::string
    - SuffixMatchNode
    - OpenTelemetryTraceCondition::d_qnames::add
    - qtypes::empty
    linkageType: ''
    returnType: void
    signature: void fromRustToOTTraceConditions(const rust::Vec<pdns::rust::settings::rec::OpenTelemetryTraceCondition>&
      settings, OpenTelemetryTraceConditions& conditions)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: fromRustToLuaConfig
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1378,1
    - Dst: logging::protobuf_servers::empty
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1381,1
    - Dst: fromRustToLuaConfig
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1382,1
    - Dst: logging::protobuf_servers::at
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1382,1
    - Dst: logging::outgoing_protobuf_servers::empty
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1384,1
    - Dst: fromRustToLuaConfig
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1385,1
    - Dst: logging::outgoing_protobuf_servers::at
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1385,1
    - Dst: logging::dnstap_framestream_servers::empty
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1387,1
    - Dst: fromRustToLuaConfig
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1388,1
    - Dst: logging::dnstap_framestream_servers::at
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1388,1
    - Dst: logging::dnstap_nod_framestream_servers::empty
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1390,1
    - Dst: fromRustToLuaConfig
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1391,1
    - Dst: logging::dnstap_nod_framestream_servers::at
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1391,1
    - Dst: fromRustToLuaConfig
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1393,1
    - Dst: fromRustToLuaConfig
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1394,1
    - Dst: fromRustToLuaConfig
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1395,1
    - Dst: fromRustToLuaConfig
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1396,1
    - Dst: fromRustToLuaConfig
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1397,1
    - Dst: fromRustToLuaConfig
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1398,1
    - Dst: fromRustToOTTraceConditions
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1399,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 23
    argCount: 4
    argNames:
    - ' settings'
    - ' luaConfig'
    - ' proxyMapping'
    - ' conditions'
    argTypes:
    - pdns::rust::settings::rec::Recursorsettings
    - LuaConfigItems
    - ProxyMapping
    - OpenTelemetryTraceConditions
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1400
      start: 1376
    functionDepth: 3
    functionLinenumber: 1376
    functionLinenumberEnd: 1400
    functionName: pdns::settings::rec::fromBridgeStructToLuaConfig(const pdns::rust::settings::rec::Recursorsettings&
      settings, LuaConfigItems& luaConfig, ProxyMapping& proxyMapping, OpenTelemetryTraceConditions&
      conditions)
    functionSourceFile: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc
    functionUses: 0
    functionsReached:
    - logging::dnstap_framestream_servers::empty
    - logging::protobuf_servers::empty
    - logging::protobuf_servers::at
    - logging::dnstap_framestream_servers::at
    - logging::outgoing_protobuf_servers::at
    - logging::outgoing_protobuf_servers::empty
    - fromRustToOTTraceConditions
    - fromRustToLuaConfig
    - logging::dnstap_nod_framestream_servers::at
    - logging::dnstap_nod_framestream_servers::empty
    linkageType: ''
    returnType: void
    signature: void pdns::settings::rec::fromBridgeStructToLuaConfig(const pdns::rust::settings::rec::Recursorsettings&
      settings, LuaConfigItems& luaConfig, ProxyMapping& proxyMapping, OpenTelemetryTraceConditions&
      conditions)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: dsrecords::size
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1408,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1408,1
    - Dst: std::find
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1413,1
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1413,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1413,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1413,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1413,1
    - Dst: dnssec::negative_trustanchors::empty
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1424,1
    - Dst: dnssec::trustanchorfile::empty
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1425,1
    - Dst: logging::protobuf_servers::empty
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1429,1
    - Dst: logging::outgoing_protobuf_servers::empty
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1430,1
    - Dst: logging::dnstap_framestream_servers::empty
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1431,1
    - Dst: logging::dnstap_nod_framestream_servers::empty
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1432,1
    - Dst: recursor::sortlists::empty
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1433,1
    - Dst: recursor::rpzs::empty
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1434,1
    - Dst: recursor::forwarding_catalog_zones::empty
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1435,1
    - Dst: recordcache::zonetocaches::empty
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1436,1
    - Dst: recursor::allowed_additional_qtypes::empty
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1437,1
    - Dst: incoming::proxymappings::empty
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1438,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 32
    argCount: 1
    argNames:
    - ' settings'
    argTypes:
    - pdns::rust::settings::rec::Recursorsettings
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1440
      start: 1403
    functionDepth: 0
    functionLinenumber: 1403
    functionLinenumberEnd: 1440
    functionName: pdns::settings::rec::luaItemSet(const pdns::rust::settings::rec::Recursorsettings&
      settings)
    functionSourceFile: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc
    functionUses: 0
    functionsReached:
    - incoming::proxymappings::empty
    - logging::dnstap_framestream_servers::empty
    - recursor::rpzs::empty
    - logging::protobuf_servers::empty
    - dnssec::negative_trustanchors::empty
    - end
    - size
    - logging::outgoing_protobuf_servers::empty
    - recursor::forwarding_catalog_zones::empty
    - dnssec::trustanchorfile::empty
    - std::find
    - logging::dnstap_nod_framestream_servers::empty
    - recursor::sortlists::empty
    - begin
    - recordcache::zonetocaches::empty
    - std::string
    - recursor::allowed_additional_qtypes::empty
    - dsrecords::size
    linkageType: ''
    returnType: bool
    signature: bool pdns::settings::rec::luaItemSet(const pdns::rust::settings::rec::Recursorsettings&
      settings)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: pdns::settings::rec::readYamlSettings
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1446,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1446,1
    - Dst: Logr::log_t::error
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1450,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1450,1
    - Dst: Logr::log_t::error
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1454,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1454,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1459,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1459,1
    - Dst: pdns::settings::rec::processAPIDir
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1460,1
    - Dst: arg
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1460,1
    - Dst: pdns::settings::rec::luaItemSet
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1461,1
    - Dst: recursor::lua_config_file::empty
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1462,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1464,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1464,1
    - Dst: recursor::forwarding_catalog_zones::empty
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1467,1
    - Dst: webservice::api_dir::empty
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1467,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1468,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1468,1
    - Dst: pdns::settings::rec::bridgeStructToOldStyleSettings
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1472,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 27
    argCount: 7
    argNames:
    - ' yamlconfigname'
    - setGlobals
    - ' yamlSettings'
    - ' luaSettingsInYAML'
    - ' settings'
    - startupLog
    - level
    argTypes:
    - string
    - bool
    - bool
    - bool
    - rust::settings::rec::Recursorsettings
    - Logr::log_t
    - Logr::Priority
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1477
      start: 1442
    functionDepth: 0
    functionLinenumber: 1442
    functionLinenumberEnd: 1477
    functionName: pdns::settings::rec::tryReadYAML(const string& yamlconfigname, bool
      setGlobals, bool& yamlSettings, bool& luaSettingsInYAML, rust::settings::rec::Recursorsettings&
      settings, Logr::log_t startupLog, Logr::Priority level)
    functionSourceFile: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc
    functionUses: 0
    functionsReached:
    - pdns::settings::rec::processAPIDir
    - pdns::settings::rec::luaItemSet
    - Logr::log_t::info
    - Logging::Loggable
    - webservice::api_dir::empty
    - Logr::log_t::error
    - pdns::settings::rec::readYamlSettings
    - recursor::lua_config_file::empty
    - recursor::forwarding_catalog_zones::empty
    - pdns::settings::rec::bridgeStructToOldStyleSettings
    - arg
    linkageType: ''
    returnType: pdns::settings::rec::YamlSettingsStatus
    signature: pdns::settings::rec::YamlSettingsStatus pdns::settings::rec::tryReadYAML(const
      string& yamlconfigname, bool setGlobals, bool& yamlSettings, bool& luaSettingsInYAML,
      rust::settings::rec::Recursorsettings& settings, Logr::log_t startupLog, Logr::Priority
      level)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::make_unique<M>
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1484,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' arg'
    argTypes:
    - M
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1486
      start: 1483
    functionDepth: 0
    functionLinenumber: 1483
    functionLinenumberEnd: 1486
    functionName: pdns::rust::misc::Wrapper<M>::Wrapper
    functionSourceFile: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc
    functionUses: 0
    functionsReached:
    - std::make_unique<M>
    linkageType: ''
    returnType: void
    signature: void Wrapper<M>::Wrapper(const M& arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1489
      start: 1489
    functionDepth: 0
    functionLinenumber: 1489
    functionLinenumberEnd: 1489
    functionName: Wrapper<M>::~Wrapper()
    functionSourceFile: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Wrapper<M>::~Wrapper()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1495
      start: 1492
    functionDepth: 0
    functionLinenumber: 1492
    functionLinenumberEnd: 1495
    functionName: '& Wrapper<M>::get() const'
    functionSourceFile: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: M
    signature: M & Wrapper<M>::get() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ::rust::Str::data
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1502,1
    - Dst: ::rust::Str::length
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1502,1
    - Dst: QType::chartocode
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1503,1
    - Dst: std::string::c_str
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1503,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - str
    argTypes:
    - ::rust::Str
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1504
      start: 1500
    functionDepth: 0
    functionLinenumber: 1500
    functionLinenumberEnd: 1504
    functionName: pdns::rust::misc::qTypeStringToCode
    functionSourceFile: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc
    functionUses: 0
    functionsReached:
    - std::string::c_str
    - QType::chartocode
    - ::rust::Str::data
    - ::rust::Str::length
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t qTypeStringToCode(::rust::Str str)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1509,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1509,1
    - Dst: auto::isHostname
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1510,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - str
    argTypes:
    - ::rust::Str
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1515
      start: 1506
    functionDepth: 0
    functionLinenumber: 1506
    functionLinenumberEnd: 1515
    functionName: pdns::rust::misc::isValidHostname
    functionSourceFile: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc
    functionUses: 0
    functionsReached:
    - auto::isHostname
    - string
    - DNSName
    linkageType: ''
    returnType: bool
    signature: bool isValidHostname(::rust::Str str)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::make_unique<ComboAddress>
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1519,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1519,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1519,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - str
    argTypes:
    - ::rust::Str
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1520
      start: 1517
    functionDepth: 0
    functionLinenumber: 1517
    functionLinenumberEnd: 1520
    functionName: pdns::rust::misc::comboaddress
    functionSourceFile: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc
    functionUses: 0
    functionsReached:
    - std::string
    - std::make_unique<ComboAddress>
    - ComboAddress
    linkageType: ''
    returnType: std::unique_ptr<ComboAddress>
    signature: std::unique_ptr<ComboAddress> comboaddress(::rust::Str str)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: get
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1524,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1524,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' nmg'
    - ' address'
    argTypes:
    - std::unique_ptr<NetmaskGroup>
    - std::unique_ptr<ComboAddress>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1525
      start: 1522
    functionDepth: 0
    functionLinenumber: 1522
    functionLinenumberEnd: 1525
    functionName: pdns::rust::misc::matches
    functionSourceFile: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc
    functionUses: 0
    functionsReached:
    - get
    linkageType: ''
    returnType: bool
    signature: bool matches(const std::unique_ptr<NetmaskGroup>& nmg, const std::unique_ptr<ComboAddress>&
      address)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: auto::withValues
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1531,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1531,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1531,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1531,1
    - Dst: auto::info
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1533,1
    - Dst: static_cast<Logr::Priority>
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1533,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1533,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 4
    argNames:
    - ' logger'
    - log_level
    - msg
    - ' values'
    argTypes:
    - std::shared_ptr<Logger>
    - pdns::rust::misc::Priority
    - ::rust::Str
    - ::rust::Vec<KeyValue>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1534
      start: 1527
    functionDepth: 0
    functionLinenumber: 1527
    functionLinenumberEnd: 1534
    functionName: pdns::rust::misc::log
    functionSourceFile: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc
    functionUses: 0
    functionsReached:
    - static_cast<Logr::Priority>
    - Logging::Loggable
    - auto::withValues
    - std::string
    - auto::info
    linkageType: ''
    returnType: void
    signature: void log(const std::shared_ptr<Logger>& logger, pdns::rust::misc::Priority
      log_level, ::rust::Str msg, const ::rust::Vec<KeyValue>& values)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: auto::withValues
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1540,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1540,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1540,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1540,1
    - Dst: auto::error
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1542,1
    - Dst: static_cast<Logr::Priority>
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1542,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1542,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1542,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 5
    argNames:
    - ' logger'
    - log_level
    - error
    - msg
    - ' values'
    argTypes:
    - std::shared_ptr<Logger>
    - pdns::rust::misc::Priority
    - ::rust::Str
    - ::rust::Str
    - ::rust::Vec<KeyValue>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1543
      start: 1536
    functionDepth: 0
    functionLinenumber: 1536
    functionLinenumberEnd: 1543
    functionName: pdns::rust::misc::error
    functionSourceFile: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc
    functionUses: 0
    functionsReached:
    - static_cast<Logr::Priority>
    - Logging::Loggable
    - auto::error
    - auto::withValues
    - std::string
    linkageType: ''
    returnType: void
    signature: void error(const std::shared_ptr<Logger>& logger, pdns::rust::misc::Priority
      log_level, ::rust::Str error, ::rust::Str msg, const ::rust::Vec<KeyValue>&
      values)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: withValues
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1547,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1547,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1547,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1547,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' logger'
    - key
    - val
    argTypes:
    - std::shared_ptr<Logger>
    - ::rust::Str
    - ::rust::Str
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1549
      start: 1545
    functionDepth: 0
    functionLinenumber: 1545
    functionLinenumberEnd: 1549
    functionName: pdns::rust::misc::withValue
    functionSourceFile: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc
    functionUses: 0
    functionsReached:
    - std::string
    - Logging::Loggable
    - withValues
    linkageType: ''
    returnType: std::shared_ptr<Logger>
    signature: std::shared_ptr<Logger> withValue(const std::shared_ptr<Logger>& logger,
      ::rust::Str key, ::rust::Str val)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getUniqueID
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1553,1
    - Dst: to_string
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1554,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1555
      start: 1551
    functionDepth: 0
    functionLinenumber: 1551
    functionLinenumberEnd: 1555
    functionName: pdns::rust::misc::getUUID
    functionSourceFile: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc
    functionUses: 0
    functionsReached:
    - getUniqueID
    - to_string
    linkageType: ''
    returnType: ::rust::String
    signature: ::rust::String getUUID()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::make_unique<M>
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1484,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' arg'
    argTypes:
    - M
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1486
      start: 1483
    functionDepth: 0
    functionLinenumber: 1483
    functionLinenumberEnd: 1486
    functionName: pdns::rust::misc::Wrapper<M>::Wrapper
    functionSourceFile: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc
    functionUses: 0
    functionsReached:
    - std::make_unique<M>
    linkageType: ''
    returnType: void
    signature: void Wrapper<M>::Wrapper(const M& arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1489
      start: 1489
    functionDepth: 0
    functionLinenumber: 1489
    functionLinenumberEnd: 1489
    functionName: Wrapper<M>::~Wrapper()
    functionSourceFile: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Wrapper<M>::~Wrapper()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1495
      start: 1492
    functionDepth: 0
    functionLinenumber: 1492
    functionLinenumberEnd: 1495
    functionName: '& Wrapper<M>::get() const'
    functionSourceFile: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: M
    signature: M & Wrapper<M>::get() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ::rust::Str::data
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1502,1
    - Dst: ::rust::Str::length
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1502,1
    - Dst: QType::chartocode
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1503,1
    - Dst: std::string::c_str
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1503,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - str
    argTypes:
    - ::rust::Str
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1504
      start: 1500
    functionDepth: 0
    functionLinenumber: 1500
    functionLinenumberEnd: 1504
    functionName: pdns::rust::misc::qTypeStringToCode
    functionSourceFile: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc
    functionUses: 0
    functionsReached:
    - std::string::c_str
    - QType::chartocode
    - ::rust::Str::data
    - ::rust::Str::length
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t qTypeStringToCode(::rust::Str str)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSName
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1509,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1509,1
    - Dst: auto::isHostname
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1510,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - str
    argTypes:
    - ::rust::Str
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1515
      start: 1506
    functionDepth: 0
    functionLinenumber: 1506
    functionLinenumberEnd: 1515
    functionName: pdns::rust::misc::isValidHostname
    functionSourceFile: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc
    functionUses: 0
    functionsReached:
    - auto::isHostname
    - string
    - DNSName
    linkageType: ''
    returnType: bool
    signature: bool isValidHostname(::rust::Str str)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::make_unique<ComboAddress>
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1519,1
    - Dst: ComboAddress
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1519,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1519,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - str
    argTypes:
    - ::rust::Str
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1520
      start: 1517
    functionDepth: 0
    functionLinenumber: 1517
    functionLinenumberEnd: 1520
    functionName: pdns::rust::misc::comboaddress
    functionSourceFile: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc
    functionUses: 0
    functionsReached:
    - std::string
    - std::make_unique<ComboAddress>
    - ComboAddress
    linkageType: ''
    returnType: std::unique_ptr<ComboAddress>
    signature: std::unique_ptr<ComboAddress> comboaddress(::rust::Str str)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: get
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1524,1
    - Dst: get
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1524,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' nmg'
    - ' address'
    argTypes:
    - std::unique_ptr<NetmaskGroup>
    - std::unique_ptr<ComboAddress>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1525
      start: 1522
    functionDepth: 0
    functionLinenumber: 1522
    functionLinenumberEnd: 1525
    functionName: pdns::rust::misc::matches
    functionSourceFile: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc
    functionUses: 0
    functionsReached:
    - get
    linkageType: ''
    returnType: bool
    signature: bool matches(const std::unique_ptr<NetmaskGroup>& nmg, const std::unique_ptr<ComboAddress>&
      address)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: auto::withValues
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1531,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1531,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1531,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1531,1
    - Dst: auto::info
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1533,1
    - Dst: static_cast<Logr::Priority>
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1533,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1533,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 4
    argNames:
    - ' logger'
    - log_level
    - msg
    - ' values'
    argTypes:
    - std::shared_ptr<Logger>
    - pdns::rust::misc::Priority
    - ::rust::Str
    - ::rust::Vec<KeyValue>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1534
      start: 1527
    functionDepth: 0
    functionLinenumber: 1527
    functionLinenumberEnd: 1534
    functionName: pdns::rust::misc::log
    functionSourceFile: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc
    functionUses: 0
    functionsReached:
    - static_cast<Logr::Priority>
    - Logging::Loggable
    - auto::withValues
    - std::string
    - auto::info
    linkageType: ''
    returnType: void
    signature: void log(const std::shared_ptr<Logger>& logger, pdns::rust::misc::Priority
      log_level, ::rust::Str msg, const ::rust::Vec<KeyValue>& values)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: auto::withValues
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1540,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1540,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1540,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1540,1
    - Dst: auto::error
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1542,1
    - Dst: static_cast<Logr::Priority>
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1542,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1542,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1542,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 5
    argNames:
    - ' logger'
    - log_level
    - error
    - msg
    - ' values'
    argTypes:
    - std::shared_ptr<Logger>
    - pdns::rust::misc::Priority
    - ::rust::Str
    - ::rust::Str
    - ::rust::Vec<KeyValue>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1543
      start: 1536
    functionDepth: 0
    functionLinenumber: 1536
    functionLinenumberEnd: 1543
    functionName: pdns::rust::misc::error
    functionSourceFile: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc
    functionUses: 0
    functionsReached:
    - static_cast<Logr::Priority>
    - Logging::Loggable
    - auto::error
    - auto::withValues
    - std::string
    linkageType: ''
    returnType: void
    signature: void error(const std::shared_ptr<Logger>& logger, pdns::rust::misc::Priority
      log_level, ::rust::Str error, ::rust::Str msg, const ::rust::Vec<KeyValue>&
      values)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: withValues
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1547,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1547,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1547,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1547,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' logger'
    - key
    - val
    argTypes:
    - std::shared_ptr<Logger>
    - ::rust::Str
    - ::rust::Str
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1549
      start: 1545
    functionDepth: 0
    functionLinenumber: 1545
    functionLinenumberEnd: 1549
    functionName: pdns::rust::misc::withValue
    functionSourceFile: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc
    functionUses: 0
    functionsReached:
    - std::string
    - Logging::Loggable
    - withValues
    linkageType: ''
    returnType: std::shared_ptr<Logger>
    signature: std::shared_ptr<Logger> withValue(const std::shared_ptr<Logger>& logger,
      ::rust::Str key, ::rust::Str val)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getUniqueID
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1553,1
    - Dst: to_string
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc:1554,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1555
      start: 1551
    functionDepth: 0
    functionLinenumber: 1551
    functionLinenumberEnd: 1555
    functionName: pdns::rust::misc::getUUID
    functionSourceFile: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc
    functionUses: 0
    functionsReached:
    - getUniqueID
    - to_string
    linkageType: ''
    returnType: ::rust::String
    signature: ::rust::String getUUID()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - arg
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 42
    functionDepth: 0
    functionLinenumber: 42
    functionLinenumberEnd: 45
    functionName: pdns::settings::rec::to_arg
    functionSourceFile: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsettings-private.hh
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string to_arg(bool arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsettings-private.hh:49,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - arg
    argTypes:
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 47
    functionDepth: 0
    functionLinenumber: 47
    functionLinenumberEnd: 50
    functionName: pdns::settings::rec::to_arg
    functionSourceFile: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsettings-private.hh
    functionUses: 4
    functionsReached:
    - std::to_string
    linkageType: ''
    returnType: std::string
    signature: std::string to_arg(uint64_t arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsettings-private.hh:54,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - arg
    argTypes:
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 52
    functionDepth: 0
    functionLinenumber: 52
    functionLinenumberEnd: 55
    functionName: pdns::settings::rec::to_arg
    functionSourceFile: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsettings-private.hh
    functionUses: 4
    functionsReached:
    - std::to_string
    linkageType: ''
    returnType: std::string
    signature: std::string to_arg(double arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsettings-private.hh:59,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' str'
    argTypes:
    - ::rust::String
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 57
    functionDepth: 0
    functionLinenumber: 57
    functionLinenumberEnd: 60
    functionName: pdns::settings::rec::to_arg
    functionSourceFile: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsettings-private.hh
    functionUses: 4
    functionsReached:
    - std::string
    linkageType: ''
    returnType: std::string
    signature: std::string to_arg(const ::rust::String& str)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsettings-private.hh:69,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsettings-private.hh:69,1
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsettings-private.hh:70,1
    - Dst: pdns::settings::rec::to_arg
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsettings-private.hh:73,1
    - Dst: std::ostringstream::str
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsettings-private.hh:75,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - ' vec'
    argTypes:
    - ::rust::Vec<T>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 66
    functionDepth: 1
    functionLinenumber: 66
    functionLinenumberEnd: 76
    functionName: pdns::settings::rec::to_arg
    functionSourceFile: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsettings-private.hh
    functionUses: 5
    functionsReached:
    - std::ostringstream::str
    - end
    - pdns::settings::rec::to_arg
    - begin
    linkageType: ''
    returnType: std::string
    signature: std::string to_arg(const ::rust::Vec<T>& vec)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 2
    argNames:
    - ' field'
    - ' val'
    argTypes:
    - bool
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 78
    functionDepth: 0
    functionLinenumber: 78
    functionLinenumberEnd: 81
    functionName: pdns::settings::rec::to_yaml
    functionSourceFile: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsettings-private.hh
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void to_yaml(bool& field, const std::string& val)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' field'
    - ' val'
    argTypes:
    - ::rust::String
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 83
    functionDepth: 0
    functionLinenumber: 83
    functionLinenumberEnd: 86
    functionName: pdns::settings::rec::to_yaml
    functionSourceFile: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsettings-private.hh
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void to_yaml(::rust::String& field, const std::string& val)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: stringtok
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsettings-private.hh:90,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' field'
    - ' val'
    argTypes:
    - ::rust::Vec<::rust::String>
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 88
    functionDepth: 0
    functionLinenumber: 88
    functionLinenumberEnd: 91
    functionName: pdns::settings::rec::to_yaml
    functionSourceFile: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsettings-private.hh
    functionUses: 2
    functionsReached:
    - stringtok
    linkageType: ''
    returnType: void
    signature: void to_yaml(::rust::Vec<::rust::String>& field, const std::string&
      val)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - arg
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 42
    functionDepth: 0
    functionLinenumber: 42
    functionLinenumberEnd: 45
    functionName: pdns::settings::rec::to_arg
    functionSourceFile: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsettings-private.hh
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string to_arg(bool arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsettings-private.hh:49,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - arg
    argTypes:
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 47
    functionDepth: 0
    functionLinenumber: 47
    functionLinenumberEnd: 50
    functionName: pdns::settings::rec::to_arg
    functionSourceFile: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsettings-private.hh
    functionUses: 5
    functionsReached:
    - std::to_string
    linkageType: ''
    returnType: std::string
    signature: std::string to_arg(uint64_t arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::to_string
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsettings-private.hh:54,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - arg
    argTypes:
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 52
    functionDepth: 0
    functionLinenumber: 52
    functionLinenumberEnd: 55
    functionName: pdns::settings::rec::to_arg
    functionSourceFile: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsettings-private.hh
    functionUses: 5
    functionsReached:
    - std::to_string
    linkageType: ''
    returnType: std::string
    signature: std::string to_arg(double arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsettings-private.hh:59,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' str'
    argTypes:
    - ::rust::String
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 57
    functionDepth: 0
    functionLinenumber: 57
    functionLinenumberEnd: 60
    functionName: pdns::settings::rec::to_arg
    functionSourceFile: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsettings-private.hh
    functionUses: 5
    functionsReached:
    - std::string
    linkageType: ''
    returnType: std::string
    signature: std::string to_arg(const ::rust::String& str)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsettings-private.hh:69,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsettings-private.hh:69,1
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsettings-private.hh:70,1
    - Dst: pdns::settings::rec::to_arg
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsettings-private.hh:73,1
    - Dst: std::ostringstream::str
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsettings-private.hh:75,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - ' vec'
    argTypes:
    - ::rust::Vec<T>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 66
    functionDepth: 1
    functionLinenumber: 66
    functionLinenumberEnd: 76
    functionName: pdns::settings::rec::to_arg
    functionSourceFile: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsettings-private.hh
    functionUses: 6
    functionsReached:
    - std::ostringstream::str
    - end
    - pdns::settings::rec::to_arg
    - begin
    linkageType: ''
    returnType: std::string
    signature: std::string to_arg(const ::rust::Vec<T>& vec)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 2
    argNames:
    - ' field'
    - ' val'
    argTypes:
    - bool
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 78
    functionDepth: 0
    functionLinenumber: 78
    functionLinenumberEnd: 81
    functionName: pdns::settings::rec::to_yaml
    functionSourceFile: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsettings-private.hh
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void to_yaml(bool& field, const std::string& val)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' field'
    - ' val'
    argTypes:
    - ::rust::String
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 83
    functionDepth: 0
    functionLinenumber: 83
    functionLinenumberEnd: 86
    functionName: pdns::settings::rec::to_yaml
    functionSourceFile: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsettings-private.hh
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void to_yaml(::rust::String& field, const std::string& val)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: stringtok
      Src: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsettings-private.hh:90,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' field'
    - ' val'
    argTypes:
    - ::rust::Vec<::rust::String>
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 88
    functionDepth: 0
    functionLinenumber: 88
    functionLinenumberEnd: 91
    functionName: pdns::settings::rec::to_yaml
    functionSourceFile: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsettings-private.hh
    functionUses: 2
    functionsReached:
    - stringtok
    linkageType: ''
    returnType: void
    signature: void to_yaml(::rust::Vec<::rust::String>& field, const std::string&
      val)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 47
    functionDepth: 0
    functionLinenumber: 47
    functionLinenumberEnd: 47
    functionName: pdns::rust::misc::Wrapper::Wrapper
    functionSourceFile: /src/pdns/pdns/recursordist/rec-rust-lib/rust/src/bridge.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Wrapper()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 48
    functionDepth: 0
    functionLinenumber: 48
    functionLinenumberEnd: 48
    functionName: pdns::rust::misc::Wrapper::Wrapper
    functionSourceFile: /src/pdns/pdns/recursordist/rec-rust-lib/rust/src/bridge.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Wrapper(const Wrapper&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 49
    functionDepth: 0
    functionLinenumber: 49
    functionLinenumberEnd: 49
    functionName: pdns::rust::misc::Wrapper::Wrapper
    functionSourceFile: /src/pdns/pdns/recursordist/rec-rust-lib/rust/src/bridge.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Wrapper(Wrapper&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 50
    functionDepth: 0
    functionLinenumber: 50
    functionLinenumberEnd: 50
    functionName: '& operator=(const Wrapper&)'
    functionSourceFile: /src/pdns/pdns/recursordist/rec-rust-lib/rust/src/bridge.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Wrapper
    signature: Wrapper & operator=(const Wrapper&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 51
    functionDepth: 0
    functionLinenumber: 51
    functionLinenumberEnd: 51
    functionName: '& operator=(Wrapper&&)'
    functionSourceFile: /src/pdns/pdns/recursordist/rec-rust-lib/rust/src/bridge.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Wrapper
    signature: Wrapper & operator=(Wrapper&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 47
    functionDepth: 0
    functionLinenumber: 47
    functionLinenumberEnd: 47
    functionName: pdns::rust::misc::Wrapper::Wrapper
    functionSourceFile: /src/pdns/pdns/recursordist/rec-rust-lib/rust/src/bridge.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Wrapper()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 48
    functionDepth: 0
    functionLinenumber: 48
    functionLinenumberEnd: 48
    functionName: pdns::rust::misc::Wrapper::Wrapper
    functionSourceFile: /src/pdns/pdns/recursordist/rec-rust-lib/rust/src/bridge.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Wrapper(const Wrapper&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 49
    functionDepth: 0
    functionLinenumber: 49
    functionLinenumberEnd: 49
    functionName: pdns::rust::misc::Wrapper::Wrapper
    functionSourceFile: /src/pdns/pdns/recursordist/rec-rust-lib/rust/src/bridge.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Wrapper(Wrapper&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 50
    functionDepth: 0
    functionLinenumber: 50
    functionLinenumberEnd: 50
    functionName: '& operator=(const Wrapper&)'
    functionSourceFile: /src/pdns/pdns/recursordist/rec-rust-lib/rust/src/bridge.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Wrapper
    signature: Wrapper & operator=(const Wrapper&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 51
    functionDepth: 0
    functionLinenumber: 51
    functionLinenumberEnd: 51
    functionName: '& operator=(Wrapper&&)'
    functionSourceFile: /src/pdns/pdns/recursordist/rec-rust-lib/rust/src/bridge.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Wrapper
    signature: Wrapper & operator=(Wrapper&&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2
      start: 1
    functionDepth: 0
    functionLinenumber: 1
    functionLinenumberEnd: 2
    functionName: fatal
    functionSourceFile: /src/pdns/pdns/recursordist/ext/arc4random/log.h
    functionUses: 23
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: fatal(...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - v
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 20
      start: 19
    functionDepth: 0
    functionLinenumber: 19
    functionLinenumberEnd: 20
    functionName: U8C
    functionSourceFile: /src/pdns/pdns/recursordist/ext/arc4random/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: 21
      start: 20
    functionDepth: 0
    functionLinenumber: 20
    functionLinenumberEnd: 21
    functionName: U32C
    functionSourceFile: /src/pdns/pdns/recursordist/ext/arc4random/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: 23
      start: 22
    functionDepth: 0
    functionLinenumber: 22
    functionLinenumberEnd: 23
    functionName: U8V
    functionSourceFile: /src/pdns/pdns/recursordist/ext/arc4random/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: 24
      start: 23
    functionDepth: 0
    functionLinenumber: 23
    functionLinenumberEnd: 24
    functionName: U32V
    functionSourceFile: /src/pdns/pdns/recursordist/ext/arc4random/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: 27
      start: 25
    functionDepth: 0
    functionLinenumber: 25
    functionLinenumberEnd: 27
    functionName: ROTL32
    functionSourceFile: /src/pdns/pdns/recursordist/ext/arc4random/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: 33
      start: 28
    functionDepth: 0
    functionLinenumber: 28
    functionLinenumberEnd: 33
    functionName: U8TO32_LITTLE
    functionSourceFile: /src/pdns/pdns/recursordist/ext/arc4random/chacha_private.h
    functionUses: 3
    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: 41
      start: 34
    functionDepth: 0
    functionLinenumber: 34
    functionLinenumberEnd: 41
    functionName: U32TO8_LITTLE
    functionSourceFile: /src/pdns/pdns/recursordist/ext/arc4random/chacha_private.h
    functionUses: 1
    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: 43
      start: 42
    functionDepth: 0
    functionLinenumber: 42
    functionLinenumberEnd: 43
    functionName: ROTATE
    functionSourceFile: /src/pdns/pdns/recursordist/ext/arc4random/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: 44
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 44
    functionName: XOR
    functionSourceFile: /src/pdns/pdns/recursordist/ext/arc4random/chacha_private.h
    functionUses: 1
    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: 45
      start: 44
    functionDepth: 0
    functionLinenumber: 44
    functionLinenumberEnd: 45
    functionName: PLUS
    functionSourceFile: /src/pdns/pdns/recursordist/ext/arc4random/chacha_private.h
    functionUses: 1
    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: 46
      start: 45
    functionDepth: 0
    functionLinenumber: 45
    functionLinenumberEnd: 46
    functionName: PLUSONE
    functionSourceFile: /src/pdns/pdns/recursordist/ext/arc4random/chacha_private.h
    functionUses: 1
    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: 52
      start: 47
    functionDepth: 0
    functionLinenumber: 47
    functionLinenumberEnd: 52
    functionName: QUARTERROUND
    functionSourceFile: /src/pdns/pdns/recursordist/ext/arc4random/chacha_private.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: QUARTERROUND(a,b,c,d)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: U8TO32_LITTLE
      Src: /src/pdns/pdns/recursordist/ext/arc4random/chacha_private.h:61,1
    - Dst: U8TO32_LITTLE
      Src: /src/pdns/pdns/recursordist/ext/arc4random/chacha_private.h:62,1
    - Dst: U8TO32_LITTLE
      Src: /src/pdns/pdns/recursordist/ext/arc4random/chacha_private.h:63,1
    - Dst: U8TO32_LITTLE
      Src: /src/pdns/pdns/recursordist/ext/arc4random/chacha_private.h:64,1
    - Dst: U8TO32_LITTLE
      Src: /src/pdns/pdns/recursordist/ext/arc4random/chacha_private.h:71,1
    - Dst: U8TO32_LITTLE
      Src: /src/pdns/pdns/recursordist/ext/arc4random/chacha_private.h:72,1
    - Dst: U8TO32_LITTLE
      Src: /src/pdns/pdns/recursordist/ext/arc4random/chacha_private.h:73,1
    - Dst: U8TO32_LITTLE
      Src: /src/pdns/pdns/recursordist/ext/arc4random/chacha_private.h:74,1
    - Dst: U8TO32_LITTLE
      Src: /src/pdns/pdns/recursordist/ext/arc4random/chacha_private.h:75,1
    - Dst: U8TO32_LITTLE
      Src: /src/pdns/pdns/recursordist/ext/arc4random/chacha_private.h:76,1
    - Dst: U8TO32_LITTLE
      Src: /src/pdns/pdns/recursordist/ext/arc4random/chacha_private.h:77,1
    - Dst: U8TO32_LITTLE
      Src: /src/pdns/pdns/recursordist/ext/arc4random/chacha_private.h:78,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 19
    argCount: 3
    argNames:
    - x
    - k
    - kbits
    argTypes:
    - chacha_ctx*
    - u8*
    - u32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 56
    functionDepth: 0
    functionLinenumber: 56
    functionLinenumberEnd: 79
    functionName: chacha_keysetup
    functionSourceFile: /src/pdns/pdns/recursordist/ext/arc4random/chacha_private.h
    functionUses: 1
    functionsReached:
    - U8TO32_LITTLE
    linkageType: ''
    returnType: void
    signature: void chacha_keysetup(chacha_ctx *x,const u8 *k,u32 kbits)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: U8TO32_LITTLE
      Src: /src/pdns/pdns/recursordist/ext/arc4random/chacha_private.h:86,1
    - Dst: U8TO32_LITTLE
      Src: /src/pdns/pdns/recursordist/ext/arc4random/chacha_private.h:87,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - x
    - iv
    argTypes:
    - chacha_ctx*
    - u8*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 81
    functionDepth: 0
    functionLinenumber: 81
    functionLinenumberEnd: 88
    functionName: chacha_ivsetup
    functionSourceFile: /src/pdns/pdns/recursordist/ext/arc4random/chacha_private.h
    functionUses: 1
    functionsReached:
    - U8TO32_LITTLE
    linkageType: ''
    returnType: void
    signature: void chacha_ivsetup(chacha_ctx *x,const u8 *iv)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: QUARTERROUND
      Src: /src/pdns/pdns/recursordist/ext/arc4random/chacha_private.h:142,1
    - Dst: QUARTERROUND
      Src: /src/pdns/pdns/recursordist/ext/arc4random/chacha_private.h:143,1
    - Dst: QUARTERROUND
      Src: /src/pdns/pdns/recursordist/ext/arc4random/chacha_private.h:144,1
    - Dst: QUARTERROUND
      Src: /src/pdns/pdns/recursordist/ext/arc4random/chacha_private.h:145,1
    - Dst: QUARTERROUND
      Src: /src/pdns/pdns/recursordist/ext/arc4random/chacha_private.h:146,1
    - Dst: QUARTERROUND
      Src: /src/pdns/pdns/recursordist/ext/arc4random/chacha_private.h:147,1
    - Dst: QUARTERROUND
      Src: /src/pdns/pdns/recursordist/ext/arc4random/chacha_private.h:148,1
    - Dst: QUARTERROUND
      Src: /src/pdns/pdns/recursordist/ext/arc4random/chacha_private.h:149,1
    - Dst: PLUS
      Src: /src/pdns/pdns/recursordist/ext/arc4random/chacha_private.h:151,1
    - Dst: PLUS
      Src: /src/pdns/pdns/recursordist/ext/arc4random/chacha_private.h:152,1
    - Dst: PLUS
      Src: /src/pdns/pdns/recursordist/ext/arc4random/chacha_private.h:153,1
    - Dst: PLUS
      Src: /src/pdns/pdns/recursordist/ext/arc4random/chacha_private.h:154,1
    - Dst: PLUS
      Src: /src/pdns/pdns/recursordist/ext/arc4random/chacha_private.h:155,1
    - Dst: PLUS
      Src: /src/pdns/pdns/recursordist/ext/arc4random/chacha_private.h:156,1
    - Dst: PLUS
      Src: /src/pdns/pdns/recursordist/ext/arc4random/chacha_private.h:157,1
    - Dst: PLUS
      Src: /src/pdns/pdns/recursordist/ext/arc4random/chacha_private.h:158,1
    - Dst: PLUS
      Src: /src/pdns/pdns/recursordist/ext/arc4random/chacha_private.h:159,1
    - Dst: PLUS
      Src: /src/pdns/pdns/recursordist/ext/arc4random/chacha_private.h:160,1
    - Dst: PLUS
      Src: /src/pdns/pdns/recursordist/ext/arc4random/chacha_private.h:161,1
    - Dst: PLUS
      Src: /src/pdns/pdns/recursordist/ext/arc4random/chacha_private.h:162,1
    - Dst: PLUS
      Src: /src/pdns/pdns/recursordist/ext/arc4random/chacha_private.h:163,1
    - Dst: PLUS
      Src: /src/pdns/pdns/recursordist/ext/arc4random/chacha_private.h:164,1
    - Dst: PLUS
      Src: /src/pdns/pdns/recursordist/ext/arc4random/chacha_private.h:165,1
    - Dst: PLUS
      Src: /src/pdns/pdns/recursordist/ext/arc4random/chacha_private.h:166,1
    - Dst: XOR
      Src: /src/pdns/pdns/recursordist/ext/arc4random/chacha_private.h:169,1
    - Dst: U8TO32_LITTLE
      Src: /src/pdns/pdns/recursordist/ext/arc4random/chacha_private.h:169,1
    - Dst: XOR
      Src: /src/pdns/pdns/recursordist/ext/arc4random/chacha_private.h:170,1
    - Dst: U8TO32_LITTLE
      Src: /src/pdns/pdns/recursordist/ext/arc4random/chacha_private.h:170,1
    - Dst: XOR
      Src: /src/pdns/pdns/recursordist/ext/arc4random/chacha_private.h:171,1
    - Dst: U8TO32_LITTLE
      Src: /src/pdns/pdns/recursordist/ext/arc4random/chacha_private.h:171,1
    - Dst: XOR
      Src: /src/pdns/pdns/recursordist/ext/arc4random/chacha_private.h:172,1
    - Dst: U8TO32_LITTLE
      Src: /src/pdns/pdns/recursordist/ext/arc4random/chacha_private.h:172,1
    - Dst: XOR
      Src: /src/pdns/pdns/recursordist/ext/arc4random/chacha_private.h:173,1
    - Dst: U8TO32_LITTLE
      Src: /src/pdns/pdns/recursordist/ext/arc4random/chacha_private.h:173,1
    - Dst: XOR
      Src: /src/pdns/pdns/recursordist/ext/arc4random/chacha_private.h:174,1
    - Dst: U8TO32_LITTLE
      Src: /src/pdns/pdns/recursordist/ext/arc4random/chacha_private.h:174,1
    - Dst: XOR
      Src: /src/pdns/pdns/recursordist/ext/arc4random/chacha_private.h:175,1
    - Dst: U8TO32_LITTLE
      Src: /src/pdns/pdns/recursordist/ext/arc4random/chacha_private.h:175,1
    - Dst: XOR
      Src: /src/pdns/pdns/recursordist/ext/arc4random/chacha_private.h:176,1
    - Dst: U8TO32_LITTLE
      Src: /src/pdns/pdns/recursordist/ext/arc4random/chacha_private.h:176,1
    - Dst: XOR
      Src: /src/pdns/pdns/recursordist/ext/arc4random/chacha_private.h:177,1
    - Dst: U8TO32_LITTLE
      Src: /src/pdns/pdns/recursordist/ext/arc4random/chacha_private.h:177,1
    - Dst: XOR
      Src: /src/pdns/pdns/recursordist/ext/arc4random/chacha_private.h:178,1
    - Dst: U8TO32_LITTLE
      Src: /src/pdns/pdns/recursordist/ext/arc4random/chacha_private.h:178,1
    - Dst: XOR
      Src: /src/pdns/pdns/recursordist/ext/arc4random/chacha_private.h:179,1
    - Dst: U8TO32_LITTLE
      Src: /src/pdns/pdns/recursordist/ext/arc4random/chacha_private.h:179,1
    - Dst: XOR
      Src: /src/pdns/pdns/recursordist/ext/arc4random/chacha_private.h:180,1
    - Dst: U8TO32_LITTLE
      Src: /src/pdns/pdns/recursordist/ext/arc4random/chacha_private.h:180,1
    - Dst: XOR
      Src: /src/pdns/pdns/recursordist/ext/arc4random/chacha_private.h:181,1
    - Dst: U8TO32_LITTLE
      Src: /src/pdns/pdns/recursordist/ext/arc4random/chacha_private.h:181,1
    - Dst: XOR
      Src: /src/pdns/pdns/recursordist/ext/arc4random/chacha_private.h:182,1
    - Dst: U8TO32_LITTLE
      Src: /src/pdns/pdns/recursordist/ext/arc4random/chacha_private.h:182,1
    - Dst: XOR
      Src: /src/pdns/pdns/recursordist/ext/arc4random/chacha_private.h:183,1
    - Dst: U8TO32_LITTLE
      Src: /src/pdns/pdns/recursordist/ext/arc4random/chacha_private.h:183,1
    - Dst: XOR
      Src: /src/pdns/pdns/recursordist/ext/arc4random/chacha_private.h:184,1
    - Dst: U8TO32_LITTLE
      Src: /src/pdns/pdns/recursordist/ext/arc4random/chacha_private.h:184,1
    - Dst: PLUSONE
      Src: /src/pdns/pdns/recursordist/ext/arc4random/chacha_private.h:187,1
    - Dst: PLUSONE
      Src: /src/pdns/pdns/recursordist/ext/arc4random/chacha_private.h:189,1
    - Dst: U32TO8_LITTLE
      Src: /src/pdns/pdns/recursordist/ext/arc4random/chacha_private.h:193,1
    - Dst: U32TO8_LITTLE
      Src: /src/pdns/pdns/recursordist/ext/arc4random/chacha_private.h:194,1
    - Dst: U32TO8_LITTLE
      Src: /src/pdns/pdns/recursordist/ext/arc4random/chacha_private.h:195,1
    - Dst: U32TO8_LITTLE
      Src: /src/pdns/pdns/recursordist/ext/arc4random/chacha_private.h:196,1
    - Dst: U32TO8_LITTLE
      Src: /src/pdns/pdns/recursordist/ext/arc4random/chacha_private.h:197,1
    - Dst: U32TO8_LITTLE
      Src: /src/pdns/pdns/recursordist/ext/arc4random/chacha_private.h:198,1
    - Dst: U32TO8_LITTLE
      Src: /src/pdns/pdns/recursordist/ext/arc4random/chacha_private.h:199,1
    - Dst: U32TO8_LITTLE
      Src: /src/pdns/pdns/recursordist/ext/arc4random/chacha_private.h:200,1
    - Dst: U32TO8_LITTLE
      Src: /src/pdns/pdns/recursordist/ext/arc4random/chacha_private.h:201,1
    - Dst: U32TO8_LITTLE
      Src: /src/pdns/pdns/recursordist/ext/arc4random/chacha_private.h:202,1
    - Dst: U32TO8_LITTLE
      Src: /src/pdns/pdns/recursordist/ext/arc4random/chacha_private.h:203,1
    - Dst: U32TO8_LITTLE
      Src: /src/pdns/pdns/recursordist/ext/arc4random/chacha_private.h:204,1
    - Dst: U32TO8_LITTLE
      Src: /src/pdns/pdns/recursordist/ext/arc4random/chacha_private.h:205,1
    - Dst: U32TO8_LITTLE
      Src: /src/pdns/pdns/recursordist/ext/arc4random/chacha_private.h:206,1
    - Dst: U32TO8_LITTLE
      Src: /src/pdns/pdns/recursordist/ext/arc4random/chacha_private.h:207,1
    - Dst: U32TO8_LITTLE
      Src: /src/pdns/pdns/recursordist/ext/arc4random/chacha_private.h:208,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: 224
      start: 90
    functionDepth: 0
    functionLinenumber: 90
    functionLinenumberEnd: 224
    functionName: chacha_encrypt_bytes
    functionSourceFile: /src/pdns/pdns/recursordist/ext/arc4random/chacha_private.h
    functionUses: 2
    functionsReached:
    - PLUS
    - U8TO32_LITTLE
    - XOR
    - PLUSONE
    - U32TO8_LITTLE
    - QUARTERROUND
    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:
    - (
    - a
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13
      start: 12
    functionDepth: 0
    functionLinenumber: 12
    functionLinenumberEnd: 13
    functionName: seed_from_prngd
    functionSourceFile: /src/pdns/pdns/recursordist/ext/arc4random/includes.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: seed_from_prngd(a, b)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: arc4random
      Src: /src/pdns/pdns/recursordist/ext/arc4random/arc4random_uniform.c:57,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 1
    argNames:
    - upper_bound
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 39
    functionDepth: 0
    functionLinenumber: 39
    functionLinenumberEnd: 63
    functionName: arc4random_uniform
    functionSourceFile: /src/pdns/pdns/recursordist/ext/arc4random/arc4random_uniform.c
    functionUses: 3
    functionsReached:
    - arc4random
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t arc4random_uniform(uint32_t upper_bound)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: RAND_bytes
      Src: /src/pdns/pdns/recursordist/ext/arc4random/bsd-getentropy.c:45,1
    - Dst: fatal
      Src: /src/pdns/pdns/recursordist/ext/arc4random/bsd-getentropy.c:46,1
    - Dst: ERR_get_error
      Src: /src/pdns/pdns/recursordist/ext/arc4random/bsd-getentropy.c:47,1
    - Dst: getentropy
      Src: /src/pdns/pdns/recursordist/ext/arc4random/bsd-getentropy.c:54,1
    - Dst: getrandom
      Src: /src/pdns/pdns/recursordist/ext/arc4random/bsd-getentropy.c:58,1
    - Dst: open
      Src: /src/pdns/pdns/recursordist/ext/arc4random/bsd-getentropy.c:62,1
    - Dst: seed_from_prngd
      Src: /src/pdns/pdns/recursordist/ext/arc4random/bsd-getentropy.c:65,1
    - Dst: fatal
      Src: /src/pdns/pdns/recursordist/ext/arc4random/bsd-getentropy.c:67,1
    - Dst: strerror
      Src: /src/pdns/pdns/recursordist/ext/arc4random/bsd-getentropy.c:68,1
    - Dst: read
      Src: /src/pdns/pdns/recursordist/ext/arc4random/bsd-getentropy.c:71,1
    - Dst: fatal
      Src: /src/pdns/pdns/recursordist/ext/arc4random/bsd-getentropy.c:76,1
    - Dst: strerror
      Src: /src/pdns/pdns/recursordist/ext/arc4random/bsd-getentropy.c:76,1
    - Dst: close
      Src: /src/pdns/pdns/recursordist/ext/arc4random/bsd-getentropy.c:80,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 24
    argCount: 2
    argNames:
    - s
    - len
    argTypes:
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 41
    functionDepth: 0
    functionLinenumber: 41
    functionLinenumberEnd: 83
    functionName: _ssh_compat_getentropy
    functionSourceFile: /src/pdns/pdns/recursordist/ext/arc4random/bsd-getentropy.c
    functionUses: 0
    functionsReached:
    - fatal
    - ERR_get_error
    - RAND_bytes
    - getrandom
    - read
    - open
    - getentropy
    - seed_from_prngd
    - strerror
    - close
    linkageType: ''
    returnType: int
    signature: int _ssh_compat_getentropy(void *s, size_t len)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: explicit_memset
      Src: /src/pdns/pdns/recursordist/ext/arc4random/explicit_bzero.c:23,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - p
    - n
    argTypes:
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 24
      start: 20
    functionDepth: 0
    functionLinenumber: 20
    functionLinenumberEnd: 24
    functionName: explicit_bzero
    functionSourceFile: /src/pdns/pdns/recursordist/ext/arc4random/explicit_bzero.c
    functionUses: 6
    functionsReached:
    - explicit_memset
    linkageType: ''
    returnType: void
    signature: void explicit_bzero(void *p, size_t n)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memset_s
      Src: /src/pdns/pdns/recursordist/ext/arc4random/explicit_bzero.c:33,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - p
    - n
    argTypes:
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 34
      start: 28
    functionDepth: 0
    functionLinenumber: 28
    functionLinenumberEnd: 34
    functionName: explicit_bzero
    functionSourceFile: /src/pdns/pdns/recursordist/ext/arc4random/explicit_bzero.c
    functionUses: 6
    functionsReached:
    - memset_s
    linkageType: ''
    returnType: void
    signature: void explicit_bzero(void *p, size_t n)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: __has_feature
      Src: /src/pdns/pdns/recursordist/ext/arc4random/explicit_bzero.c:55,1
    - Dst: memset
      Src: /src/pdns/pdns/recursordist/ext/arc4random/explicit_bzero.c:56,1
    - Dst: ssh_bzero
      Src: /src/pdns/pdns/recursordist/ext/arc4random/explicit_bzero.c:60,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - p
    - n
    argTypes:
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 44
    functionDepth: 0
    functionLinenumber: 44
    functionLinenumberEnd: 61
    functionName: explicit_bzero
    functionSourceFile: /src/pdns/pdns/recursordist/ext/arc4random/explicit_bzero.c
    functionUses: 6
    functionsReached:
    - memset
    - __has_feature
    - ssh_bzero
    linkageType: ''
    returnType: void
    signature: void explicit_bzero(void *p, size_t n)
  - 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: 55
      start: 54
    functionDepth: 0
    functionLinenumber: 54
    functionLinenumberEnd: 55
    functionName: getentropy
    functionSourceFile: /src/pdns/pdns/recursordist/ext/arc4random/arc4random.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: getentropy(x, y)
  - 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: 62
      start: 61
    functionDepth: 0
    functionLinenumber: 61
    functionLinenumberEnd: 62
    functionName: minimum
    functionSourceFile: /src/pdns/pdns/recursordist/ext/arc4random/arc4random.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: minimum(a, b)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: _rs_allocate
      Src: /src/pdns/pdns/recursordist/ext/arc4random/arc4random.c:101,1
    - Dst: _exit
      Src: /src/pdns/pdns/recursordist/ext/arc4random/arc4random.c:102,1
    - Dst: chacha_keysetup
      Src: /src/pdns/pdns/recursordist/ext/arc4random/arc4random.c:105,1
    - Dst: chacha_ivsetup
      Src: /src/pdns/pdns/recursordist/ext/arc4random/arc4random.c:106,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - buf
    - n
    argTypes:
    - u_char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 107
      start: 94
    functionDepth: 0
    functionLinenumber: 94
    functionLinenumberEnd: 107
    functionName: _rs_init
    functionSourceFile: /src/pdns/pdns/recursordist/ext/arc4random/arc4random.c
    functionUses: 2
    functionsReached:
    - chacha_keysetup
    - chacha_ivsetup
    - _exit
    - _rs_allocate
    linkageType: ''
    returnType: void
    signature: void _rs_init(u_char *buf, size_t n)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: getentropy
      Src: /src/pdns/pdns/recursordist/ext/arc4random/arc4random.c:115,1
    - Dst: _getentropy_fail
      Src: /src/pdns/pdns/recursordist/ext/arc4random/arc4random.c:116,1
    - Dst: _rs_init
      Src: /src/pdns/pdns/recursordist/ext/arc4random/arc4random.c:119,1
    - Dst: _rs_rekey
      Src: /src/pdns/pdns/recursordist/ext/arc4random/arc4random.c:121,1
    - Dst: explicit_bzero
      Src: /src/pdns/pdns/recursordist/ext/arc4random/arc4random.c:122,1
    - Dst: memset
      Src: /src/pdns/pdns/recursordist/ext/arc4random/arc4random.c:126,1
    - Dst: chacha_encrypt_bytes
      Src: /src/pdns/pdns/recursordist/ext/arc4random/arc4random.c:129,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 132
      start: 109
    functionDepth: 0
    functionLinenumber: 109
    functionLinenumberEnd: 132
    functionName: _rs_stir
    functionSourceFile: /src/pdns/pdns/recursordist/ext/arc4random/arc4random.c
    functionUses: 1
    functionsReached:
    - chacha_encrypt_bytes
    - _rs_rekey
    - _rs_init
    - _getentropy_fail
    - memset
    - getentropy
    - explicit_bzero
    linkageType: ''
    returnType: void
    signature: void _rs_stir(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: _rs_forkdetect
      Src: /src/pdns/pdns/recursordist/ext/arc4random/arc4random.c:137,1
    - Dst: _rs_stir
      Src: /src/pdns/pdns/recursordist/ext/arc4random/arc4random.c:139,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 1
    argNames:
    - len
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 144
      start: 134
    functionDepth: 0
    functionLinenumber: 134
    functionLinenumberEnd: 144
    functionName: _rs_stir_if_needed
    functionSourceFile: /src/pdns/pdns/recursordist/ext/arc4random/arc4random.c
    functionUses: 2
    functionsReached:
    - _rs_stir
    - _rs_forkdetect
    linkageType: ''
    returnType: void
    signature: void _rs_stir_if_needed(size_t len)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/pdns/pdns/recursordist/ext/arc4random/arc4random.c:150,1
    - Dst: chacha_encrypt_bytes
      Src: /src/pdns/pdns/recursordist/ext/arc4random/arc4random.c:153,1
    - Dst: minimum
      Src: /src/pdns/pdns/recursordist/ext/arc4random/arc4random.c:159,1
    - Dst: _rs_init
      Src: /src/pdns/pdns/recursordist/ext/arc4random/arc4random.c:164,1
    - Dst: memset
      Src: /src/pdns/pdns/recursordist/ext/arc4random/arc4random.c:165,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - dat
    - datlen
    argTypes:
    - u_char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 167
      start: 146
    functionDepth: 0
    functionLinenumber: 146
    functionLinenumberEnd: 167
    functionName: _rs_rekey
    functionSourceFile: /src/pdns/pdns/recursordist/ext/arc4random/arc4random.c
    functionUses: 4
    functionsReached:
    - _rs_init
    - memset
    - minimum
    - chacha_encrypt_bytes
    linkageType: ''
    returnType: void
    signature: void _rs_rekey(u_char *dat, size_t datlen)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: _rs_stir_if_needed
      Src: /src/pdns/pdns/recursordist/ext/arc4random/arc4random.c:176,1
    - Dst: minimum
      Src: /src/pdns/pdns/recursordist/ext/arc4random/arc4random.c:179,1
    - Dst: memcpy
      Src: /src/pdns/pdns/recursordist/ext/arc4random/arc4random.c:182,1
    - Dst: memset
      Src: /src/pdns/pdns/recursordist/ext/arc4random/arc4random.c:183,1
    - Dst: _rs_rekey
      Src: /src/pdns/pdns/recursordist/ext/arc4random/arc4random.c:189,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 2
    argNames:
    - _buf
    - n
    argTypes:
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 191
      start: 169
    functionDepth: 0
    functionLinenumber: 169
    functionLinenumberEnd: 191
    functionName: _rs_random_buf
    functionSourceFile: /src/pdns/pdns/recursordist/ext/arc4random/arc4random.c
    functionUses: 1
    functionsReached:
    - memcpy
    - _rs_rekey
    - _rs_stir_if_needed
    - memset
    - minimum
    linkageType: ''
    returnType: void
    signature: void _rs_random_buf(void *_buf, size_t n)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: _rs_stir_if_needed
      Src: /src/pdns/pdns/recursordist/ext/arc4random/arc4random.c:198,1
    - Dst: _rs_rekey
      Src: /src/pdns/pdns/recursordist/ext/arc4random/arc4random.c:200,1
    - Dst: memcpy
      Src: /src/pdns/pdns/recursordist/ext/arc4random/arc4random.c:202,1
    - Dst: memset
      Src: /src/pdns/pdns/recursordist/ext/arc4random/arc4random.c:203,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - val
    argTypes:
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 205
      start: 193
    functionDepth: 0
    functionLinenumber: 193
    functionLinenumberEnd: 205
    functionName: _rs_random_u32
    functionSourceFile: /src/pdns/pdns/recursordist/ext/arc4random/arc4random.c
    functionUses: 1
    functionsReached:
    - _rs_rekey
    - memcpy
    - memset
    - _rs_stir_if_needed
    linkageType: ''
    returnType: void
    signature: void _rs_random_u32(uint32_t *val)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _ARC4_LOCK
      Src: /src/pdns/pdns/recursordist/ext/arc4random/arc4random.c:215,1
    - Dst: _rs_random_u32
      Src: /src/pdns/pdns/recursordist/ext/arc4random/arc4random.c:216,1
    - Dst: _ARC4_UNLOCK
      Src: /src/pdns/pdns/recursordist/ext/arc4random/arc4random.c:217,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 219
      start: 210
    functionDepth: 0
    functionLinenumber: 210
    functionLinenumberEnd: 219
    functionName: arc4random
    functionSourceFile: /src/pdns/pdns/recursordist/ext/arc4random/arc4random.c
    functionUses: 9
    functionsReached:
    - _rs_random_u32
    - _ARC4_UNLOCK
    - _ARC4_LOCK
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t arc4random(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _ARC4_LOCK
      Src: /src/pdns/pdns/recursordist/ext/arc4random/arc4random.c:230,1
    - Dst: _rs_random_buf
      Src: /src/pdns/pdns/recursordist/ext/arc4random/arc4random.c:231,1
    - Dst: _ARC4_UNLOCK
      Src: /src/pdns/pdns/recursordist/ext/arc4random/arc4random.c:232,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - buf
    - n
    argTypes:
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 233
      start: 227
    functionDepth: 0
    functionLinenumber: 227
    functionLinenumberEnd: 233
    functionName: arc4random_buf
    functionSourceFile: /src/pdns/pdns/recursordist/ext/arc4random/arc4random.c
    functionUses: 3
    functionsReached:
    - _rs_random_buf
    - _ARC4_UNLOCK
    - _ARC4_LOCK
    linkageType: ''
    returnType: void
    signature: void arc4random_buf(void *buf, size_t n)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: arc4random
      Src: /src/pdns/pdns/recursordist/ext/arc4random/arc4random.c:249,1
    - Dst: explicit_bzero
      Src: /src/pdns/pdns/recursordist/ext/arc4random/arc4random.c:253,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - _buf
    - n
    argTypes:
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 254
      start: 240
    functionDepth: 0
    functionLinenumber: 240
    functionLinenumberEnd: 254
    functionName: arc4random_buf
    functionSourceFile: /src/pdns/pdns/recursordist/ext/arc4random/arc4random.c
    functionUses: 3
    functionsReached:
    - explicit_bzero
    - arc4random
    linkageType: ''
    returnType: void
    signature: void arc4random_buf(void *_buf, size_t n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 32
      start: 31
    functionDepth: 0
    functionLinenumber: 31
    functionLinenumberEnd: 32
    functionName: _ARC4_LOCK
    functionSourceFile: /src/pdns/pdns/recursordist/ext/arc4random/arc4random.h
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: _ARC4_LOCK()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 33
      start: 32
    functionDepth: 0
    functionLinenumber: 32
    functionLinenumberEnd: 33
    functionName: _ARC4_UNLOCK
    functionSourceFile: /src/pdns/pdns/recursordist/ext/arc4random/arc4random.h
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: _ARC4_UNLOCK()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fatal
      Src: /src/pdns/pdns/recursordist/ext/arc4random/arc4random.h:38,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 39
      start: 35
    functionDepth: 0
    functionLinenumber: 35
    functionLinenumberEnd: 39
    functionName: _getentropy_fail
    functionSourceFile: /src/pdns/pdns/recursordist/ext/arc4random/arc4random.h
    functionUses: 2
    functionsReached:
    - fatal
    linkageType: ''
    returnType: void
    signature: void _getentropy_fail(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 47
    functionName: _rs_forkhandler
    functionSourceFile: /src/pdns/pdns/recursordist/ext/arc4random/arc4random.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void _rs_forkhandler(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: getpid
      Src: /src/pdns/pdns/recursordist/ext/arc4random/arc4random.h:53,1
    - Dst: memset
      Src: /src/pdns/pdns/recursordist/ext/arc4random/arc4random.h:59,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 49
    functionDepth: 0
    functionLinenumber: 49
    functionLinenumberEnd: 61
    functionName: _rs_forkdetect
    functionSourceFile: /src/pdns/pdns/recursordist/ext/arc4random/arc4random.h
    functionUses: 2
    functionsReached:
    - memset
    - getpid
    linkageType: ''
    returnType: void
    signature: void _rs_forkdetect(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: mmap
      Src: /src/pdns/pdns/recursordist/ext/arc4random/arc4random.h:67,1
    - Dst: mmap
      Src: /src/pdns/pdns/recursordist/ext/arc4random/arc4random.h:71,1
    - Dst: munmap
      Src: /src/pdns/pdns/recursordist/ext/arc4random/arc4random.h:73,1
    - Dst: calloc
      Src: /src/pdns/pdns/recursordist/ext/arc4random/arc4random.h:78,1
    - Dst: calloc
      Src: /src/pdns/pdns/recursordist/ext/arc4random/arc4random.h:80,1
    - Dst: free
      Src: /src/pdns/pdns/recursordist/ext/arc4random/arc4random.h:81,1
    - Dst: _ARC4_ATFORK
      Src: /src/pdns/pdns/recursordist/ext/arc4random/arc4random.h:87,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 2
    argNames:
    - rsp
    - rsxp
    argTypes:
    - struct _rs**
    - struct _rsx**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 63
    functionDepth: 0
    functionLinenumber: 63
    functionLinenumberEnd: 89
    functionName: _rs_allocate
    functionSourceFile: /src/pdns/pdns/recursordist/ext/arc4random/arc4random.h
    functionUses: 2
    functionsReached:
    - free
    - mmap
    - munmap
    - _ARC4_ATFORK
    - calloc
    linkageType: ''
    returnType: int
    signature: int _rs_allocate(struct _rs **rsp, struct _rsx **rsxp)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/url.hpp:17,1
    - Dst: find_first_of
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/url.hpp:18,1
    - Dst: substr
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/url.hpp:19,1
    - Dst: compare
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/url.hpp:23,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 2
    argNames:
    - ' url'
    - pos
    argTypes:
    - std::string
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 28
      start: 15
    functionDepth: 0
    functionLinenumber: 15
    functionLinenumberEnd: 28
    functionName: YaHTTP::URL::parseSchema
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/url.hpp
    functionUses: 2
    functionsReached:
    - find_first_of
    - compare
    - substr
    - size
    linkageType: ''
    returnType: bool
    signature: bool parseSchema(const std::string& url, size_t &pos)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/url.hpp:32,1
    - Dst: find_first_of
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/url.hpp:33,1
    - Dst: substr
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/url.hpp:34,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/url.hpp:36,1
    - Dst: substr
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/url.hpp:38,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/url.hpp:41,1
    - Dst: find_first_of
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/url.hpp:42,1
    - Dst: find_first_of
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/url.hpp:47,1
    - Dst: substr
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/url.hpp:48,1
    - Dst: substr
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/url.hpp:51,1
    - Dst: find_first_of
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/url.hpp:52,1
    - Dst: substr
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/url.hpp:53,1
    - Dst: substr
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/url.hpp:55,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 25
    argCount: 2
    argNames:
    - ' url'
    - pos
    argTypes:
    - std::string
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 30
    functionDepth: 0
    functionLinenumber: 30
    functionLinenumberEnd: 58
    functionName: YaHTTP::URL::parseHost
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/url.hpp
    functionUses: 2
    functionsReached:
    - find_first_of
    - substr
    - at
    - size
    linkageType: ''
    returnType: bool
    signature: bool parseHost(const std::string& url, size_t &pos)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/url.hpp:62,1
    - Dst: find_first_of
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/url.hpp:64,1
    - Dst: find_first_of
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/url.hpp:65,1
    - Dst: substr
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/url.hpp:68,1
    - Dst: substr
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/url.hpp:69,1
    - Dst: Utility::decodeURL
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/url.hpp:70,1
    - Dst: substr
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/url.hpp:72,1
    - Dst: Utility::decodeURL
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/url.hpp:75,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 2
    argNames:
    - ' url'
    - pos
    argTypes:
    - std::string
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 60
    functionDepth: 0
    functionLinenumber: 60
    functionLinenumberEnd: 77
    functionName: YaHTTP::URL::parseUserPass
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/url.hpp
    functionUses: 2
    functionsReached:
    - find_first_of
    - substr
    - Utility::decodeURL
    - size
    linkageType: ''
    returnType: bool
    signature: bool parseUserPass(const std::string& url, size_t &pos)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/url.hpp:81,1
    - Dst: find_first_of
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/url.hpp:83,1
    - Dst: substr
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/url.hpp:84,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/url.hpp:85,1
    - Dst: substr
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/url.hpp:87,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 2
    argNames:
    - ' url'
    - pos
    argTypes:
    - std::string
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 79
    functionDepth: 0
    functionLinenumber: 79
    functionLinenumberEnd: 91
    functionName: YaHTTP::URL::parsePath
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/url.hpp
    functionUses: 2
    functionsReached:
    - find_first_of
    - substr
    - size
    linkageType: ''
    returnType: bool
    signature: bool parsePath(const std::string& url, size_t &pos)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/url.hpp:95,1
    - Dst: find_first_of
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/url.hpp:98,1
    - Dst: substr
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/url.hpp:99,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/url.hpp:100,1
    - Dst: substr
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/url.hpp:102,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/url.hpp:105,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/url.hpp:105,1
    - Dst: resize
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/url.hpp:105,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/url.hpp:105,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 2
    argNames:
    - ' url'
    - pos
    argTypes:
    - std::string
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 107
      start: 93
    functionDepth: 2
    functionLinenumber: 93
    functionLinenumberEnd: 107
    functionName: YaHTTP::URL::parseParameters
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/url.hpp
    functionUses: 2
    functionsReached:
    - resize
    - end
    - size
    - find_first_of
    - substr
    linkageType: ''
    returnType: bool
    signature: bool parseParameters(const std::string& url, size_t &pos)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/url.hpp:110,1
    - Dst: substr
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/url.hpp:112,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - ' url'
    - pos
    argTypes:
    - std::string
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 109
    functionDepth: 0
    functionLinenumber: 109
    functionLinenumberEnd: 114
    functionName: YaHTTP::URL::parseAnchor
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/url.hpp
    functionUses: 2
    functionsReached:
    - substr
    - size
    linkageType: ''
    returnType: bool
    signature: bool parseAnchor(const std::string& url, size_t &pos)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 118
      start: 116
    functionDepth: 0
    functionLinenumber: 116
    functionLinenumberEnd: 118
    functionName: YaHTTP::URL::initialize
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/url.hpp
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void initialize()
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/url.hpp:125,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/url.hpp:127,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/url.hpp:132,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/url.hpp:133,1
    - Dst: Utility::encodeURL
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/url.hpp:134,1
    - Dst: Utility::encodeURL
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/url.hpp:134,1
    - Dst: Utility::encodeURL
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/url.hpp:136,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/url.hpp:138,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/url.hpp:146,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/url.hpp:151,1
    - Dst: std::ostringstream::str
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/url.hpp:153,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 25
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 154
      start: 121
    functionDepth: 0
    functionLinenumber: 121
    functionLinenumberEnd: 154
    functionName: YaHTTP::URL::to_string
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/url.hpp
    functionUses: 0
    functionsReached:
    - empty
    - std::ostringstream::str
    - Utility::encodeURL
    linkageType: ''
    returnType: std::string
    signature: std::string to_string() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::URL::initialize
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/url.hpp:166,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 166
      start: 166
    functionDepth: 0
    functionLinenumber: 166
    functionLinenumberEnd: 166
    functionName: YaHTTP::URL::URL
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/url.hpp
    functionUses: 0
    functionsReached:
    - YaHTTP::URL::initialize
    linkageType: ''
    returnType: void
    signature: void URL()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::URL::parse
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/url.hpp:168,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' url'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 169
      start: 167
    functionDepth: 0
    functionLinenumber: 167
    functionLinenumberEnd: 169
    functionName: YaHTTP::URL::URL
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/url.hpp
    functionUses: 0
    functionsReached:
    - YaHTTP::URL::parse
    linkageType: ''
    returnType: void
    signature: void URL(const std::string& url)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::URL::parse
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/url.hpp:172,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/url.hpp:172,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - url
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 173
      start: 171
    functionDepth: 0
    functionLinenumber: 171
    functionLinenumberEnd: 173
    functionName: YaHTTP::URL::URL
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/url.hpp
    functionUses: 0
    functionsReached:
    - std::string
    - YaHTTP::URL::parse
    linkageType: ''
    returnType: void
    signature: void URL(const char *url)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::URL::initialize
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/url.hpp:177,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/url.hpp:179,1
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/url.hpp:181,1
    - Dst: YaHTTP::URL::parseSchema
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/url.hpp:182,1
    - Dst: substr
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/url.hpp:184,1
    - Dst: YaHTTP::URL::parseUserPass
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/url.hpp:187,1
    - Dst: YaHTTP::URL::parseHost
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/url.hpp:188,1
    - Dst: YaHTTP::URL::parsePath
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/url.hpp:190,1
    - Dst: YaHTTP::URL::parseParameters
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/url.hpp:191,1
    - Dst: YaHTTP::URL::parseAnchor
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/url.hpp:192,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 21
    argCount: 1
    argNames:
    - ' url'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 193
      start: 175
    functionDepth: 0
    functionLinenumber: 175
    functionLinenumberEnd: 193
    functionName: YaHTTP::URL::parse
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/url.hpp
    functionUses: 6
    functionsReached:
    - YaHTTP::URL::parseParameters
    - size
    - YaHTTP::URL::initialize
    - YaHTTP::URL::parseAnchor
    - YaHTTP::URL::parseSchema
    - substr
    - YaHTTP::URL::parsePath
    - begin
    - YaHTTP::URL::parseHost
    - YaHTTP::URL::parseUserPass
    linkageType: ''
    returnType: bool
    signature: bool parse(const std::string& url)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: to_string
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/url.hpp:196,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ' os'
    - ' url'
    argTypes:
    - std::ostream
    - URL
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 198
      start: 195
    functionDepth: 0
    functionLinenumber: 195
    functionLinenumberEnd: 198
    functionName: '& operator<<(std::ostream& os, const URL& url)'
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/url.hpp
    functionUses: 0
    functionsReached:
    - to_string
    linkageType: ''
    returnType: std::ostream
    signature: std::ostream & operator<<(std::ostream& os, const URL& url)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/url.hpp:17,1
    - Dst: find_first_of
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/url.hpp:18,1
    - Dst: substr
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/url.hpp:19,1
    - Dst: compare
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/url.hpp:23,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 2
    argNames:
    - ' url'
    - pos
    argTypes:
    - std::string
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 28
      start: 15
    functionDepth: 0
    functionLinenumber: 15
    functionLinenumberEnd: 28
    functionName: YaHTTP::URL::parseSchema
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/url.hpp
    functionUses: 3
    functionsReached:
    - find_first_of
    - compare
    - substr
    - size
    linkageType: ''
    returnType: bool
    signature: bool parseSchema(const std::string& url, size_t &pos)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/url.hpp:32,1
    - Dst: find_first_of
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/url.hpp:33,1
    - Dst: substr
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/url.hpp:34,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/url.hpp:36,1
    - Dst: substr
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/url.hpp:38,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/url.hpp:41,1
    - Dst: find_first_of
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/url.hpp:42,1
    - Dst: find_first_of
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/url.hpp:47,1
    - Dst: substr
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/url.hpp:48,1
    - Dst: substr
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/url.hpp:51,1
    - Dst: find_first_of
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/url.hpp:52,1
    - Dst: substr
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/url.hpp:53,1
    - Dst: substr
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/url.hpp:55,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 25
    argCount: 2
    argNames:
    - ' url'
    - pos
    argTypes:
    - std::string
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 30
    functionDepth: 0
    functionLinenumber: 30
    functionLinenumberEnd: 58
    functionName: YaHTTP::URL::parseHost
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/url.hpp
    functionUses: 3
    functionsReached:
    - find_first_of
    - substr
    - at
    - size
    linkageType: ''
    returnType: bool
    signature: bool parseHost(const std::string& url, size_t &pos)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/url.hpp:62,1
    - Dst: find_first_of
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/url.hpp:64,1
    - Dst: find_first_of
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/url.hpp:65,1
    - Dst: substr
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/url.hpp:68,1
    - Dst: substr
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/url.hpp:69,1
    - Dst: Utility::decodeURL
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/url.hpp:70,1
    - Dst: substr
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/url.hpp:72,1
    - Dst: Utility::decodeURL
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/url.hpp:75,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 2
    argNames:
    - ' url'
    - pos
    argTypes:
    - std::string
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 60
    functionDepth: 0
    functionLinenumber: 60
    functionLinenumberEnd: 77
    functionName: YaHTTP::URL::parseUserPass
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/url.hpp
    functionUses: 3
    functionsReached:
    - find_first_of
    - substr
    - Utility::decodeURL
    - size
    linkageType: ''
    returnType: bool
    signature: bool parseUserPass(const std::string& url, size_t &pos)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/url.hpp:81,1
    - Dst: find_first_of
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/url.hpp:83,1
    - Dst: substr
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/url.hpp:84,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/url.hpp:85,1
    - Dst: substr
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/url.hpp:87,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 2
    argNames:
    - ' url'
    - pos
    argTypes:
    - std::string
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 79
    functionDepth: 0
    functionLinenumber: 79
    functionLinenumberEnd: 91
    functionName: YaHTTP::URL::parsePath
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/url.hpp
    functionUses: 3
    functionsReached:
    - find_first_of
    - substr
    - size
    linkageType: ''
    returnType: bool
    signature: bool parsePath(const std::string& url, size_t &pos)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/url.hpp:95,1
    - Dst: find_first_of
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/url.hpp:98,1
    - Dst: substr
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/url.hpp:99,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/url.hpp:100,1
    - Dst: substr
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/url.hpp:102,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/url.hpp:105,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/url.hpp:105,1
    - Dst: resize
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/url.hpp:105,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/url.hpp:105,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 2
    argNames:
    - ' url'
    - pos
    argTypes:
    - std::string
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 107
      start: 93
    functionDepth: 2
    functionLinenumber: 93
    functionLinenumberEnd: 107
    functionName: YaHTTP::URL::parseParameters
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/url.hpp
    functionUses: 3
    functionsReached:
    - resize
    - end
    - size
    - find_first_of
    - substr
    linkageType: ''
    returnType: bool
    signature: bool parseParameters(const std::string& url, size_t &pos)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/url.hpp:110,1
    - Dst: substr
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/url.hpp:112,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - ' url'
    - pos
    argTypes:
    - std::string
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 109
    functionDepth: 0
    functionLinenumber: 109
    functionLinenumberEnd: 114
    functionName: YaHTTP::URL::parseAnchor
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/url.hpp
    functionUses: 3
    functionsReached:
    - substr
    - size
    linkageType: ''
    returnType: bool
    signature: bool parseAnchor(const std::string& url, size_t &pos)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 118
      start: 116
    functionDepth: 0
    functionLinenumber: 116
    functionLinenumberEnd: 118
    functionName: YaHTTP::URL::initialize
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/url.hpp
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void initialize()
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/url.hpp:125,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/url.hpp:127,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/url.hpp:132,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/url.hpp:133,1
    - Dst: Utility::encodeURL
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/url.hpp:134,1
    - Dst: Utility::encodeURL
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/url.hpp:134,1
    - Dst: Utility::encodeURL
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/url.hpp:136,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/url.hpp:138,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/url.hpp:146,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/url.hpp:151,1
    - Dst: std::ostringstream::str
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/url.hpp:153,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 25
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 154
      start: 121
    functionDepth: 0
    functionLinenumber: 121
    functionLinenumberEnd: 154
    functionName: YaHTTP::URL::to_string
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/url.hpp
    functionUses: 0
    functionsReached:
    - empty
    - std::ostringstream::str
    - Utility::encodeURL
    linkageType: ''
    returnType: std::string
    signature: std::string to_string() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::URL::initialize
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/url.hpp:166,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 166
      start: 166
    functionDepth: 0
    functionLinenumber: 166
    functionLinenumberEnd: 166
    functionName: YaHTTP::URL::URL
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/url.hpp
    functionUses: 0
    functionsReached:
    - YaHTTP::URL::initialize
    linkageType: ''
    returnType: void
    signature: void URL()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::URL::parse
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/url.hpp:168,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' url'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 169
      start: 167
    functionDepth: 0
    functionLinenumber: 167
    functionLinenumberEnd: 169
    functionName: YaHTTP::URL::URL
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/url.hpp
    functionUses: 0
    functionsReached:
    - YaHTTP::URL::parse
    linkageType: ''
    returnType: void
    signature: void URL(const std::string& url)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::URL::parse
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/url.hpp:172,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/url.hpp:172,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - url
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 173
      start: 171
    functionDepth: 0
    functionLinenumber: 171
    functionLinenumberEnd: 173
    functionName: YaHTTP::URL::URL
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/url.hpp
    functionUses: 0
    functionsReached:
    - std::string
    - YaHTTP::URL::parse
    linkageType: ''
    returnType: void
    signature: void URL(const char *url)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::URL::initialize
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/url.hpp:177,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/url.hpp:179,1
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/url.hpp:181,1
    - Dst: YaHTTP::URL::parseSchema
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/url.hpp:182,1
    - Dst: substr
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/url.hpp:184,1
    - Dst: YaHTTP::URL::parseUserPass
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/url.hpp:187,1
    - Dst: YaHTTP::URL::parseHost
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/url.hpp:188,1
    - Dst: YaHTTP::URL::parsePath
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/url.hpp:190,1
    - Dst: YaHTTP::URL::parseParameters
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/url.hpp:191,1
    - Dst: YaHTTP::URL::parseAnchor
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/url.hpp:192,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 21
    argCount: 1
    argNames:
    - ' url'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 193
      start: 175
    functionDepth: 0
    functionLinenumber: 175
    functionLinenumberEnd: 193
    functionName: YaHTTP::URL::parse
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/url.hpp
    functionUses: 8
    functionsReached:
    - YaHTTP::URL::parseParameters
    - size
    - YaHTTP::URL::initialize
    - YaHTTP::URL::parseAnchor
    - YaHTTP::URL::parseSchema
    - substr
    - YaHTTP::URL::parsePath
    - begin
    - YaHTTP::URL::parseHost
    - YaHTTP::URL::parseUserPass
    linkageType: ''
    returnType: bool
    signature: bool parse(const std::string& url)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: to_string
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/url.hpp:196,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ' os'
    - ' url'
    argTypes:
    - std::ostream
    - URL
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 198
      start: 195
    functionDepth: 0
    functionLinenumber: 195
    functionLinenumberEnd: 198
    functionName: '& operator<<(std::ostream& os, const URL& url)'
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/url.hpp
    functionUses: 0
    functionsReached:
    - to_string
    linkageType: ''
    returnType: std::ostream
    signature: std::ostream & operator<<(std::ostream& os, const URL& url)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DateTime
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/cookie.hpp:9,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 10
      start: 5
    functionDepth: 0
    functionLinenumber: 5
    functionLinenumberEnd: 10
    functionName: YaHTTP::Cookie::Cookie
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/cookie.hpp
    functionUses: 0
    functionsReached:
    - DateTime
    linkageType: ''
    returnType: void
    signature: void Cookie()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - rhs
    argTypes:
    - Cookie
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 20
      start: 12
    functionDepth: 0
    functionLinenumber: 12
    functionLinenumberEnd: 20
    functionName: YaHTTP::Cookie::Cookie
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/cookie.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Cookie(const Cookie &rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 1
    argNames:
    - rhs
    argTypes:
    - Cookie
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 31
      start: 22
    functionDepth: 0
    functionLinenumber: 22
    functionLinenumberEnd: 31
    functionName: '& operator=(const Cookie &rhs)'
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/cookie.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Cookie
    signature: Cookie & operator=(const Cookie &rhs)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: Utility::encodeURL
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/cookie.hpp:44,1
    - Dst: Utility::encodeURL
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/cookie.hpp:44,1
    - Dst: cookie_str
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/cookie.hpp:47,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/cookie.hpp:48,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/cookie.hpp:50,1
    - Dst: std::ostringstream::str
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/cookie.hpp:56,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 42
    functionDepth: 0
    functionLinenumber: 42
    functionLinenumberEnd: 57
    functionName: YaHTTP::Cookie::str
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/cookie.hpp
    functionUses: 0
    functionsReached:
    - std::ostringstream::str
    - size
    - Utility::encodeURL
    - cookie_str
    linkageType: ''
    returnType: std::string
    signature: std::string str() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 65
    functionDepth: 0
    functionLinenumber: 65
    functionLinenumberEnd: 65
    functionName: YaHTTP::CookieJar::CookieJar
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/cookie.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void CookieJar()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - CookieJar
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 66
    functionDepth: 0
    functionLinenumber: 66
    functionLinenumberEnd: 68
    functionName: YaHTTP::CookieJar::CookieJar
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/cookie.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void CookieJar(const CookieJar & rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - CookieJar
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 69
    functionDepth: 0
    functionLinenumber: 69
    functionLinenumberEnd: 69
    functionName: '& operator=(const CookieJar & rhs)'
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/cookie.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: CookieJar
    signature: CookieJar & operator=(const CookieJar & rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::CookieJar::cookies::clear
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/cookie.hpp:72,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 71
    functionDepth: 1
    functionLinenumber: 71
    functionLinenumberEnd: 73
    functionName: YaHTTP::CookieJar::clear
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/cookie.hpp
    functionUses: 0
    functionsReached:
    - YaHTTP::CookieJar::cookies::clear
    linkageType: ''
    returnType: void
    signature: void clear()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::string::find
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/cookie.hpp:77,1
    - Dst: ParseError
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/cookie.hpp:78,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/cookie.hpp:79,1
    - Dst: std::string::begin
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/cookie.hpp:79,1
    - Dst: std::string::begin
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/cookie.hpp:79,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/cookie.hpp:80,1
    - Dst: std::string::begin
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/cookie.hpp:80,1
    - Dst: std::string::end
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/cookie.hpp:80,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - keyvalue
    - key
    - value
    argTypes:
    - std::string
    - std::string
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 75
    functionDepth: 0
    functionLinenumber: 75
    functionLinenumberEnd: 81
    functionName: YaHTTP::CookieJar::keyValuePair
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/cookie.hpp
    functionUses: 4
    functionsReached:
    - std::string::begin
    - std::string::end
    - std::string::find
    - ParseError
    - std::string
    linkageType: ''
    returnType: void
    signature: void keyValuePair(const std::string &keyvalue, std::string &key, std::string
      &value)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::string::size
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/cookie.hpp:88,1
    - Dst: std::string::find
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/cookie.hpp:89,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/cookie.hpp:90,1
    - Dst: YaHTTP::CookieJar::keyValuePair
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/cookie.hpp:91,1
    - Dst: std::string::substr
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/cookie.hpp:91,1
    - Dst: Utility::decodeURL
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/cookie.hpp:92,1
    - Dst: Utility::decodeURL
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/cookie.hpp:93,1
    - Dst: std::list::push_back
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/cookie.hpp:94,1
    - Dst: std::list::begin
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/cookie.hpp:97,1
    - Dst: std::list::end
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/cookie.hpp:97,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 1
    argNames:
    - cookiestr
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 83
    functionDepth: 0
    functionLinenumber: 83
    functionLinenumberEnd: 100
    functionName: YaHTTP::CookieJar::parseCookieHeader
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/cookie.hpp
    functionUses: 0
    functionsReached:
    - YaHTTP::CookieJar::keyValuePair
    - std::string::substr
    - std::list::begin
    - std::string::find
    - std::list::push_back
    - std::list::end
    - std::string::size
    - Utility::decodeURL
    linkageType: ''
    returnType: void
    signature: void parseCookieHeader(const std::string &cookiestr)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: std::string::find
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/cookie.hpp:107,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/cookie.hpp:108,1
    - Dst: YaHTTP::CookieJar::keyValuePair
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/cookie.hpp:109,1
    - Dst: std::string::substr
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/cookie.hpp:109,1
    - Dst: Utility::decodeURL
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/cookie.hpp:110,1
    - Dst: Utility::decodeURL
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/cookie.hpp:111,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/cookie.hpp:112,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/cookie.hpp:114,1
    - Dst: std::string::find
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/cookie.hpp:115,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/cookie.hpp:116,1
    - Dst: std::string::substr
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/cookie.hpp:117,1
    - Dst: std::string::find
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/cookie.hpp:118,1
    - Dst: YaHTTP::CookieJar::keyValuePair
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/cookie.hpp:119,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/cookie.hpp:121,1
    - Dst: DateTime::parseCookie
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/cookie.hpp:124,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 35
    argCount: 1
    argNames:
    - cookiestr
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 142
      start: 102
    functionDepth: 0
    functionLinenumber: 102
    functionLinenumberEnd: 142
    functionName: YaHTTP::CookieJar::parseSetCookieHeader
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/cookie.hpp
    functionUses: 0
    functionsReached:
    - std::move
    - YaHTTP::CookieJar::keyValuePair
    - DateTime::parseCookie
    - std::string::substr
    - std::string::find
    - std::string::size
    - Utility::decodeURL
    linkageType: ''
    returnType: void
    signature: void parseSetCookieHeader(const std::string &cookiestr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DateTime
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/cookie.hpp:9,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 10
      start: 5
    functionDepth: 0
    functionLinenumber: 5
    functionLinenumberEnd: 10
    functionName: YaHTTP::Cookie::Cookie
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/cookie.hpp
    functionUses: 0
    functionsReached:
    - DateTime
    linkageType: ''
    returnType: void
    signature: void Cookie()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - rhs
    argTypes:
    - Cookie
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 20
      start: 12
    functionDepth: 0
    functionLinenumber: 12
    functionLinenumberEnd: 20
    functionName: YaHTTP::Cookie::Cookie
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/cookie.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Cookie(const Cookie &rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 1
    argNames:
    - rhs
    argTypes:
    - Cookie
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 31
      start: 22
    functionDepth: 0
    functionLinenumber: 22
    functionLinenumberEnd: 31
    functionName: '& operator=(const Cookie &rhs)'
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/cookie.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Cookie
    signature: Cookie & operator=(const Cookie &rhs)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: Utility::encodeURL
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/cookie.hpp:44,1
    - Dst: Utility::encodeURL
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/cookie.hpp:44,1
    - Dst: cookie_str
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/cookie.hpp:47,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/cookie.hpp:48,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/cookie.hpp:50,1
    - Dst: std::ostringstream::str
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/cookie.hpp:56,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 42
    functionDepth: 0
    functionLinenumber: 42
    functionLinenumberEnd: 57
    functionName: YaHTTP::Cookie::str
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/cookie.hpp
    functionUses: 0
    functionsReached:
    - std::ostringstream::str
    - size
    - Utility::encodeURL
    - cookie_str
    linkageType: ''
    returnType: std::string
    signature: std::string str() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 65
    functionDepth: 0
    functionLinenumber: 65
    functionLinenumberEnd: 65
    functionName: YaHTTP::CookieJar::CookieJar
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/cookie.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void CookieJar()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - CookieJar
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 66
    functionDepth: 0
    functionLinenumber: 66
    functionLinenumberEnd: 68
    functionName: YaHTTP::CookieJar::CookieJar
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/cookie.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void CookieJar(const CookieJar & rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - CookieJar
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 69
    functionDepth: 0
    functionLinenumber: 69
    functionLinenumberEnd: 69
    functionName: '& operator=(const CookieJar & rhs)'
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/cookie.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: CookieJar
    signature: CookieJar & operator=(const CookieJar & rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::CookieJar::cookies::clear
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/cookie.hpp:72,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 71
    functionDepth: 1
    functionLinenumber: 71
    functionLinenumberEnd: 73
    functionName: YaHTTP::CookieJar::clear
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/cookie.hpp
    functionUses: 0
    functionsReached:
    - YaHTTP::CookieJar::cookies::clear
    linkageType: ''
    returnType: void
    signature: void clear()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::string::find
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/cookie.hpp:77,1
    - Dst: ParseError
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/cookie.hpp:78,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/cookie.hpp:79,1
    - Dst: std::string::begin
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/cookie.hpp:79,1
    - Dst: std::string::begin
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/cookie.hpp:79,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/cookie.hpp:80,1
    - Dst: std::string::begin
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/cookie.hpp:80,1
    - Dst: std::string::end
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/cookie.hpp:80,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - keyvalue
    - key
    - value
    argTypes:
    - std::string
    - std::string
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 75
    functionDepth: 0
    functionLinenumber: 75
    functionLinenumberEnd: 81
    functionName: YaHTTP::CookieJar::keyValuePair
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/cookie.hpp
    functionUses: 6
    functionsReached:
    - std::string::begin
    - std::string::end
    - std::string::find
    - ParseError
    - std::string
    linkageType: ''
    returnType: void
    signature: void keyValuePair(const std::string &keyvalue, std::string &key, std::string
      &value)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::string::size
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/cookie.hpp:88,1
    - Dst: std::string::find
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/cookie.hpp:89,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/cookie.hpp:90,1
    - Dst: YaHTTP::CookieJar::keyValuePair
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/cookie.hpp:91,1
    - Dst: std::string::substr
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/cookie.hpp:91,1
    - Dst: Utility::decodeURL
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/cookie.hpp:92,1
    - Dst: Utility::decodeURL
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/cookie.hpp:93,1
    - Dst: std::list::push_back
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/cookie.hpp:94,1
    - Dst: std::list::begin
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/cookie.hpp:97,1
    - Dst: std::list::end
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/cookie.hpp:97,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 1
    argNames:
    - cookiestr
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 83
    functionDepth: 0
    functionLinenumber: 83
    functionLinenumberEnd: 100
    functionName: YaHTTP::CookieJar::parseCookieHeader
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/cookie.hpp
    functionUses: 0
    functionsReached:
    - YaHTTP::CookieJar::keyValuePair
    - std::string::substr
    - std::list::begin
    - std::string::find
    - std::list::push_back
    - std::list::end
    - std::string::size
    - Utility::decodeURL
    linkageType: ''
    returnType: void
    signature: void parseCookieHeader(const std::string &cookiestr)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: std::string::find
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/cookie.hpp:107,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/cookie.hpp:108,1
    - Dst: YaHTTP::CookieJar::keyValuePair
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/cookie.hpp:109,1
    - Dst: std::string::substr
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/cookie.hpp:109,1
    - Dst: Utility::decodeURL
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/cookie.hpp:110,1
    - Dst: Utility::decodeURL
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/cookie.hpp:111,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/cookie.hpp:112,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/cookie.hpp:114,1
    - Dst: std::string::find
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/cookie.hpp:115,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/cookie.hpp:116,1
    - Dst: std::string::substr
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/cookie.hpp:117,1
    - Dst: std::string::find
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/cookie.hpp:118,1
    - Dst: YaHTTP::CookieJar::keyValuePair
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/cookie.hpp:119,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/cookie.hpp:121,1
    - Dst: DateTime::parseCookie
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/cookie.hpp:124,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 35
    argCount: 1
    argNames:
    - cookiestr
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 142
      start: 102
    functionDepth: 0
    functionLinenumber: 102
    functionLinenumberEnd: 142
    functionName: YaHTTP::CookieJar::parseSetCookieHeader
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/cookie.hpp
    functionUses: 0
    functionsReached:
    - std::move
    - YaHTTP::CookieJar::keyValuePair
    - DateTime::parseCookie
    - std::string::substr
    - std::string::find
    - std::string::size
    - Utility::decodeURL
    linkageType: ''
    returnType: void
    signature: void parseSetCookieHeader(const std::string &cookiestr)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp:28,1
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp:29,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp:30,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp:30,1
    - Dst: dns_tolower
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp:31,1
    - Dst: dns_tolower
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp:31,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp:32,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp:32,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp:33,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp:33,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 9
    argCount: 2
    argNames:
    - ' lhs'
    - ' rhs'
    argTypes:
    - std::string
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 35
      start: 26
    functionDepth: 0
    functionLinenumber: 26
    functionLinenumberEnd: 35
    functionName: operator() (const std::string& lhs, const std::string& rhs) const
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp
    functionUses: 0
    functionsReached:
    - end
    - dns_tolower
    - begin
    linkageType: ''
    returnType: bool
    signature: bool operator() (const std::string& lhs, const std::string& rhs) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: initialize
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp:58,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 57
    functionDepth: 0
    functionLinenumber: 57
    functionLinenumberEnd: 59
    functionName: DateTime
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp
    functionUses: 4
    functionsReached:
    - initialize
    linkageType: ''
    returnType: void
    signature: void DateTime()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 61
    functionDepth: 0
    functionLinenumber: 61
    functionLinenumberEnd: 65
    functionName: initialize
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp
    functionUses: 42
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void initialize()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fromLocaltime
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp:68,1
    - Dst: time
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp:68,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 67
    functionDepth: 0
    functionLinenumber: 67
    functionLinenumberEnd: 69
    functionName: setLocal
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp
    functionUses: 2
    functionsReached:
    - time
    - fromLocaltime
    linkageType: ''
    returnType: void
    signature: void setLocal()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fromGmtime
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp:72,1
    - Dst: time
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp:72,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 71
    functionDepth: 0
    functionLinenumber: 71
    functionLinenumberEnd: 73
    functionName: setGm
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp
    functionUses: 0
    functionsReached:
    - time
    - fromGmtime
    linkageType: ''
    returnType: void
    signature: void setGm()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: localtime_r
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp:78,1
    - Dst: fromTm
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp:79,1
    - Dst: localtime
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp:83,1
    - Dst: fromTm
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp:84,1
    - Dst: gmtime_r
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp:89,1
    - Dst: mktime
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp:90,1
    - Dst: gmtime
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp:93,1
    - Dst: mktime
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp:94,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 1
    argNames:
    - t
    argTypes:
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 75
    functionDepth: 0
    functionLinenumber: 75
    functionLinenumberEnd: 98
    functionName: fromLocaltime
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp
    functionUses: 2
    functionsReached:
    - fromTm
    - gmtime_r
    - localtime_r
    - mktime
    - gmtime
    - localtime
    linkageType: ''
    returnType: void
    signature: void fromLocaltime(time_t t)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: gmtime_r
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp:103,1
    - Dst: fromTm
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp:104,1
    - Dst: gmtime
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp:108,1
    - Dst: fromTm
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp:109,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - t
    argTypes:
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 100
    functionDepth: 0
    functionLinenumber: 100
    functionLinenumberEnd: 114
    functionName: fromGmtime
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp
    functionUses: 2
    functionsReached:
    - fromTm
    - gmtime_r
    - gmtime
    linkageType: ''
    returnType: void
    signature: void fromGmtime(time_t t)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 1
    argNames:
    - tm
    argTypes:
    - struct tm*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 116
    functionDepth: 0
    functionLinenumber: 116
    functionLinenumberEnd: 128
    functionName: fromTm
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void fromTm(const struct tm *tm)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: std::range_error
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp:131,1
    - Dst: std::range_error
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp:132,1
    - Dst: std::range_error
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp:133,1
    - Dst: std::range_error
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp:136,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 137
      start: 130
    functionDepth: 0
    functionLinenumber: 130
    functionLinenumberEnd: 137
    functionName: validate
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp
    functionUses: 32
    functionsReached:
    - std::range_error
    linkageType: ''
    returnType: void
    signature: void validate() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: validate
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp:141,1
    - Dst: std::setfill
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp:142,1
    - Dst: std::setw
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp:142,1
    - Dst: std::setfill
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp:143,1
    - Dst: std::setw
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp:143,1
    - Dst: std::setfill
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp:144,1
    - Dst: std::setw
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp:144,1
    - Dst: std::setfill
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp:145,1
    - Dst: std::setw
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp:145,1
    - Dst: std::setfill
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp:146,1
    - Dst: std::setw
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp:146,1
    - Dst: std::setfill
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp:150,1
    - Dst: std::setw
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp:150,1
    - Dst: std::setfill
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp:151,1
    - Dst: std::setw
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp:151,1
    - Dst: std::ostringstream::str
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp:153,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 154
      start: 139
    functionDepth: 0
    functionLinenumber: 139
    functionLinenumberEnd: 154
    functionName: rfc_str
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp
    functionUses: 0
    functionsReached:
    - std::ostringstream::str
    - std::setfill
    - validate
    - std::setw
    linkageType: ''
    returnType: std::string
    signature: std::string rfc_str() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: validate
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp:158,1
    - Dst: std::setfill
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp:159,1
    - Dst: std::setw
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp:159,1
    - Dst: std::setfill
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp:160,1
    - Dst: std::setw
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp:160,1
    - Dst: std::setfill
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp:161,1
    - Dst: std::setw
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp:161,1
    - Dst: std::setfill
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp:162,1
    - Dst: std::setw
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp:162,1
    - Dst: std::ostringstream::str
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp:163,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 164
      start: 156
    functionDepth: 0
    functionLinenumber: 156
    functionLinenumberEnd: 164
    functionName: cookie_str
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp
    functionUses: 4
    functionsReached:
    - std::ostringstream::str
    - std::setfill
    - validate
    - std::setw
    linkageType: ''
    returnType: std::string
    signature: std::string cookie_str() const
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strptime
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp:194,1
    - Dst: std::string::c_str
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp:194,1
    - Dst: strptime
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp:196,1
    - Dst: std::string::c_str
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp:196,1
    - Dst: strptime
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp:197,1
    - Dst: std::string::c_str
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp:197,1
    - Dst: YaHTTP::isspace
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp:200,1
    - Dst: YaHTTP::isalnum
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp:200,1
    - Dst: YaHTTP::ParseError::ParseError
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp:201,1
    - Dst: fromTm
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp:202,1
    - Dst: YaHTTP::ParseError::ParseError
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp:206,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 12
    argCount: 1
    argNames:
    - cookie_date
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 208
      start: 191
    functionDepth: 0
    functionLinenumber: 191
    functionLinenumberEnd: 208
    functionName: parseCookie
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp
    functionUses: 4
    functionsReached:
    - fromTm
    - std::string::c_str
    - strptime
    - YaHTTP::isspace
    - YaHTTP::ParseError::ParseError
    - YaHTTP::isalnum
    linkageType: ''
    returnType: void
    signature: void parseCookie(const std::string &cookie_date)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mktime
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp:222,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 223
      start: 210
    functionDepth: 0
    functionLinenumber: 210
    functionLinenumberEnd: 223
    functionName: unixtime
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp
    functionUses: 0
    functionsReached:
    - mktime
    linkageType: ''
    returnType: time_t
    signature: time_t unixtime() const
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: std::string::find_first_of
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp:233,1
    - Dst: std::string::length
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp:236,1
    - Dst: std::string::substr
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp:237,1
    - Dst: std::tolower
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp:238,1
    - Dst: std::tolower
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp:238,1
    - Dst: std::string::replace
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp:252,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 25
    argCount: 1
    argNames:
    - ' component'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 256
      start: 229
    functionDepth: 0
    functionLinenumber: 229
    functionLinenumberEnd: 256
    functionName: Utility::decodeURL
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp
    functionUses: 15
    functionsReached:
    - std::string::length
    - std::string::substr
    - std::string::replace
    - std::tolower
    - std::string::find_first_of
    linkageType: ''
    returnType: std::string
    signature: std::string decodeURL(const std::string& component)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::string::begin
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp:263,1
    - Dst: std::string::end
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp:263,1
    - Dst: YaHTTP::isalnum
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp:264,1
    - Dst: std::string::find
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp:264,1
    - Dst: std::distance
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp:266,1
    - Dst: std::string::begin
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp:266,1
    - Dst: ::snprintf
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp:267,1
    - Dst: static_cast<unsigned char>
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp:267,1
    - Dst: std::string::replace
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp:268,1
    - Dst: std::string::begin
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp:269,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 1
    argNames:
    - ' component'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 273
      start: 258
    functionDepth: 1
    functionLinenumber: 258
    functionLinenumberEnd: 273
    functionName: Utility::encodeURL
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp
    functionUses: 14
    functionsReached:
    - std::string::begin
    - std::distance
    - std::string::end
    - ::snprintf
    - std::string::find
    - std::string::replace
    - static_cast<unsigned char>
    - YaHTTP::isalnum
    linkageType: ''
    returnType: std::string
    signature: std::string encodeURL(const std::string& component, bool asUrl = true)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: reinterpret_cast<unsigned char const*>
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp:276,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp:277,1
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp:277,1
    - Dst: std::vector::begin
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp:282,1
    - Dst: std::vector::end
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp:282,1
    - Dst: YaHTTP::isalnum
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp:283,1
    - Dst: std::string::find
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp:283,1
    - Dst: std::setw
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp:285,1
    - Dst: std::setfill
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp:285,1
    - Dst: static_cast<unsigned int>
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp:285,1
    - Dst: std::ostringstream::str
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp:288,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 1
    argNames:
    - ' component'
    argTypes:
    - std::wstring
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 289
      start: 275
    functionDepth: 0
    functionLinenumber: 275
    functionLinenumberEnd: 289
    functionName: Utility::encodeURL
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp
    functionUses: 14
    functionsReached:
    - std::vector::end
    - std::vector::begin
    - std::ostringstream::str
    - std::setfill
    - std::setw
    - reinterpret_cast<unsigned char const*>
    - size
    - static_cast<unsigned int>
    - std::string::find
    - begin
    - YaHTTP::isalnum
    linkageType: ''
    returnType: std::string
    signature: std::string encodeURL(const std::wstring& component, bool asUrl = true)
  - BBCount: 41
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 83
    argCount: 1
    argNames:
    - status
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 374
      start: 291
    functionDepth: 0
    functionLinenumber: 291
    functionLinenumberEnd: 374
    functionName: Utility::status2text
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string status2text(int status)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp:377,1
    - Dst: find
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp:384,1
    - Dst: find
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp:385,1
    - Dst: substr
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp:392,1
    - Dst: substr
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp:394,1
    - Dst: substr
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp:396,1
    - Dst: substr
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp:398,1
    - Dst: std::string::empty
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp:401,1
    - Dst: Utility::decodeURL
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp:405,1
    - Dst: Utility::decodeURL
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp:405,1
    - Dst: strstr_map_t::size
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp:410,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 31
    argCount: 1
    argNames:
    - ' parameters'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 417
      start: 376
    functionDepth: 0
    functionLinenumber: 376
    functionLinenumberEnd: 417
    functionName: Utility::parseUrlParameters
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp
    functionUses: 4
    functionsReached:
    - size
    - substr
    - strstr_map_t::size
    - std::string::empty
    - Utility::decodeURL
    - find
    linkageType: ''
    returnType: strstr_map_t
    signature: strstr_map_t parseUrlParameters(const std::string& parameters)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp:422,1
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp:422,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp:422,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp:422,1
    - Dst: dns_toupper
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp:423,1
    - Dst: dns_toupper
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp:423,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp:426,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp:426,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp:427,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp:427,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp:428,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp:428,1
    - Dst: dns_toupper
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp:430,1
    - Dst: dns_toupper
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp:430,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 10
    argCount: 3
    argNames:
    - ' a'
    - ' b'
    - length
    argTypes:
    - std::string
    - std::string
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 431
      start: 419
    functionDepth: 0
    functionLinenumber: 419
    functionLinenumberEnd: 431
    functionName: Utility::iequals
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp
    functionUses: 3
    functionsReached:
    - dns_toupper
    - end
    - begin
    linkageType: ''
    returnType: bool
    signature: bool iequals(const std::string& a, const std::string& b, size_t length)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp:434,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp:434,1
    - Dst: Utility::iequals
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp:435,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp:435,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - ' a'
    - ' b'
    argTypes:
    - std::string
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 436
      start: 433
    functionDepth: 0
    functionLinenumber: 433
    functionLinenumberEnd: 436
    functionName: Utility::iequals
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp
    functionUses: 4
    functionsReached:
    - Utility::iequals
    - size
    linkageType: ''
    returnType: bool
    signature: bool iequals(const std::string& a, const std::string& b)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::locale::classic
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp:439,1
    - Dst: std::string::begin
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp:440,1
    - Dst: std::string::end
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp:441,1
    - Dst: YaHTTP::isspace
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp:441,1
    - Dst: std::string::erase
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp:442,1
    - Dst: std::string::begin
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp:442,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - str
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 443
      start: 438
    functionDepth: 0
    functionLinenumber: 438
    functionLinenumberEnd: 443
    functionName: Utility::trimLeft
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp
    functionUses: 1
    functionsReached:
    - std::string::begin
    - std::string::erase
    - std::string::end
    - YaHTTP::isspace
    - std::locale::classic
    linkageType: ''
    returnType: void
    signature: void trimLeft(std::string &str)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::locale::classic
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp:446,1
    - Dst: std::string::rbegin
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp:447,1
    - Dst: std::string::rend
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp:448,1
    - Dst: YaHTTP::isspace
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp:448,1
    - Dst: std::string::erase
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp:449,1
    - Dst: std::string::reverse_iterator::base
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp:449,1
    - Dst: std::string::end
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp:449,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - str
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 450
      start: 445
    functionDepth: 0
    functionLinenumber: 445
    functionLinenumberEnd: 450
    functionName: Utility::trimRight
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp
    functionUses: 1
    functionsReached:
    - std::string::erase
    - std::string::rend
    - std::string::rbegin
    - std::string::end
    - YaHTTP::isspace
    - std::locale::classic
    - std::string::reverse_iterator::base
    linkageType: ''
    returnType: void
    signature: void trimRight(std::string &str)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Utility::trimLeft
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp:453,1
    - Dst: Utility::trimRight
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp:454,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - str
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 455
      start: 452
    functionDepth: 0
    functionLinenumber: 452
    functionLinenumberEnd: 455
    functionName: Utility::trim
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp
    functionUses: 30
    functionsReached:
    - Utility::trimRight
    - Utility::trimLeft
    linkageType: ''
    returnType: void
    signature: void trim(std::string &str)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::string::begin
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp:458,1
    - Dst: std::locale::classic
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp:460,1
    - Dst: std::string::end
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp:464,1
    - Dst: std::string::insert
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp:466,1
    - Dst: std::string::end
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp:466,1
    - Dst: std::toupper
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp:466,1
    - Dst: std::string::insert
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp:468,1
    - Dst: std::string::end
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp:468,1
    - Dst: std::tolower
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp:468,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - str
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 473
      start: 457
    functionDepth: 2
    functionLinenumber: 457
    functionLinenumberEnd: 473
    functionName: Utility::camelizeHeader
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp
    functionUses: 2
    functionsReached:
    - std::string::begin
    - std::toupper
    - std::string::end
    - std::tolower
    - std::locale::classic
    - std::string::insert
    linkageType: ''
    returnType: std::string
    signature: std::string camelizeHeader(const std::string &str)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 50
    functionDepth: 0
    functionLinenumber: 50
    functionLinenumberEnd: 50
    functionName: YaHTTP::Router::Router
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Router()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::Router::map
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.hpp:62,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.hpp:62,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' method'
    - ' url'
    - handler
    argTypes:
    - std::string
    - std::string
    - THandlerFunction
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 62
    functionDepth: 0
    functionLinenumber: 62
    functionLinenumberEnd: 62
    functionName: YaHTTP::Router::Map
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.hpp
    functionUses: 4
    functionsReached:
    - YaHTTP::Router::map
    - std::move
    linkageType: ''
    returnType: void
    signature: void Map(const std::string& method, const std::string& url, THandlerFunction
      handler, const std::string& name = "")
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::Router::map
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.hpp:63,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.hpp:63,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' url'
    - handler
    argTypes:
    - std::string
    - THandlerFunction
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 63
    functionDepth: 0
    functionLinenumber: 63
    functionLinenumberEnd: 63
    functionName: YaHTTP::Router::Get
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.hpp
    functionUses: 0
    functionsReached:
    - YaHTTP::Router::map
    - std::move
    linkageType: ''
    returnType: void
    signature: void Get(const std::string& url, THandlerFunction handler, const std::string&
      name = "")
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::Router::map
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.hpp:64,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.hpp:64,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' url'
    - handler
    argTypes:
    - std::string
    - THandlerFunction
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 64
    functionDepth: 0
    functionLinenumber: 64
    functionLinenumberEnd: 64
    functionName: YaHTTP::Router::Post
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.hpp
    functionUses: 0
    functionsReached:
    - YaHTTP::Router::map
    - std::move
    linkageType: ''
    returnType: void
    signature: void Post(const std::string& url, THandlerFunction handler, const std::string&
      name = "")
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::Router::map
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.hpp:65,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.hpp:65,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' url'
    - handler
    argTypes:
    - std::string
    - THandlerFunction
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 65
    functionDepth: 0
    functionLinenumber: 65
    functionLinenumberEnd: 65
    functionName: YaHTTP::Router::Put
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.hpp
    functionUses: 0
    functionsReached:
    - YaHTTP::Router::map
    - std::move
    linkageType: ''
    returnType: void
    signature: void Put(const std::string& url, THandlerFunction handler, const std::string&
      name = "")
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::Router::map
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.hpp:66,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.hpp:66,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' url'
    - handler
    argTypes:
    - std::string
    - THandlerFunction
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 66
    functionDepth: 0
    functionLinenumber: 66
    functionLinenumberEnd: 66
    functionName: YaHTTP::Router::Patch
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.hpp
    functionUses: 0
    functionsReached:
    - YaHTTP::Router::map
    - std::move
    linkageType: ''
    returnType: void
    signature: void Patch(const std::string& url, THandlerFunction handler, const
      std::string& name = "")
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::Router::map
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.hpp:67,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.hpp:67,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' url'
    - handler
    argTypes:
    - std::string
    - THandlerFunction
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 67
    functionDepth: 0
    functionLinenumber: 67
    functionLinenumberEnd: 67
    functionName: YaHTTP::Router::Delete
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.hpp
    functionUses: 0
    functionsReached:
    - YaHTTP::Router::map
    - std::move
    linkageType: ''
    returnType: void
    signature: void Delete(const std::string& url, THandlerFunction handler, const
      std::string& name = "")
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::Router::map
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.hpp:68,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.hpp:68,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' url'
    - handler
    argTypes:
    - std::string
    - THandlerFunction
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 68
    functionDepth: 0
    functionLinenumber: 68
    functionLinenumberEnd: 68
    functionName: YaHTTP::Router::Any
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.hpp
    functionUses: 0
    functionsReached:
    - YaHTTP::Router::map
    - std::move
    linkageType: ''
    returnType: void
    signature: void Any(const std::string& url, THandlerFunction handler, const std::string&
      name = "")
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::Router::match
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.hpp:70,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' route'
    - ' requrl'
    - ' params'
    argTypes:
    - std::string
    - URL
    - std::map<std::string, TDelim>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 70
    functionDepth: 0
    functionLinenumber: 70
    functionLinenumberEnd: 70
    functionName: YaHTTP::Router::Match
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.hpp
    functionUses: 2
    functionsReached:
    - YaHTTP::Router::match
    linkageType: ''
    returnType: bool
    signature: bool Match(const std::string& route, const URL& requrl, std::map<std::string,
      TDelim>& params)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::Router::route
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.hpp:71,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - req
    - ' handler'
    argTypes:
    - Request*
    - THandlerFunction
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 71
    functionDepth: 0
    functionLinenumber: 71
    functionLinenumberEnd: 71
    functionName: YaHTTP::Router::Route
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.hpp
    functionUses: 2
    functionsReached:
    - YaHTTP::Router::route
    linkageType: ''
    returnType: RoutingResult
    signature: RoutingResult Route(Request *req, THandlerFunction& handler)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::Router::printRoutes
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.hpp:72,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - os
    argTypes:
    - std::ostream
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 72
    functionDepth: 0
    functionLinenumber: 72
    functionLinenumberEnd: 72
    functionName: YaHTTP::Router::PrintRoutes
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.hpp
    functionUses: 0
    functionsReached:
    - YaHTTP::Router::printRoutes
    linkageType: ''
    returnType: void
    signature: void PrintRoutes(std::ostream &os)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::Router::urlFor
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.hpp:74,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - name
    - ' arguments'
    argTypes:
    - std::string
    - strstr_map_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 74
    functionDepth: 0
    functionLinenumber: 74
    functionLinenumberEnd: 74
    functionName: YaHTTP::Router::URLFor
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.hpp
    functionUses: 0
    functionsReached:
    - YaHTTP::Router::urlFor
    linkageType: ''
    returnType: std::pair<std::string, std::string>
    signature: std::pair<std::string, std::string> URLFor(const std::string &name,
      const strstr_map_t& arguments)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 75
    functionDepth: 0
    functionLinenumber: 75
    functionLinenumberEnd: 75
    functionName: '& GetRoutes()'
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: TRouteList
    signature: TRouteList & GetRoutes()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: routes::clear
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.hpp:76,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 76
    functionDepth: 1
    functionLinenumber: 76
    functionLinenumberEnd: 76
    functionName: YaHTTP::Router::Clear
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.hpp
    functionUses: 0
    functionsReached:
    - routes::clear
    linkageType: ''
    returnType: void
    signature: void Clear()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 50
    functionDepth: 0
    functionLinenumber: 50
    functionLinenumberEnd: 50
    functionName: YaHTTP::Router::Router
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Router()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::Router::map
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.hpp:62,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.hpp:62,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' method'
    - ' url'
    - handler
    argTypes:
    - std::string
    - std::string
    - THandlerFunction
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 62
    functionDepth: 0
    functionLinenumber: 62
    functionLinenumberEnd: 62
    functionName: YaHTTP::Router::Map
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.hpp
    functionUses: 4
    functionsReached:
    - YaHTTP::Router::map
    - std::move
    linkageType: ''
    returnType: void
    signature: void Map(const std::string& method, const std::string& url, THandlerFunction
      handler, const std::string& name = "")
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::Router::map
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.hpp:63,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.hpp:63,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' url'
    - handler
    argTypes:
    - std::string
    - THandlerFunction
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 63
    functionDepth: 0
    functionLinenumber: 63
    functionLinenumberEnd: 63
    functionName: YaHTTP::Router::Get
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.hpp
    functionUses: 0
    functionsReached:
    - YaHTTP::Router::map
    - std::move
    linkageType: ''
    returnType: void
    signature: void Get(const std::string& url, THandlerFunction handler, const std::string&
      name = "")
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::Router::map
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.hpp:64,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.hpp:64,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' url'
    - handler
    argTypes:
    - std::string
    - THandlerFunction
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 64
    functionDepth: 0
    functionLinenumber: 64
    functionLinenumberEnd: 64
    functionName: YaHTTP::Router::Post
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.hpp
    functionUses: 0
    functionsReached:
    - YaHTTP::Router::map
    - std::move
    linkageType: ''
    returnType: void
    signature: void Post(const std::string& url, THandlerFunction handler, const std::string&
      name = "")
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::Router::map
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.hpp:65,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.hpp:65,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' url'
    - handler
    argTypes:
    - std::string
    - THandlerFunction
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 65
    functionDepth: 0
    functionLinenumber: 65
    functionLinenumberEnd: 65
    functionName: YaHTTP::Router::Put
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.hpp
    functionUses: 0
    functionsReached:
    - YaHTTP::Router::map
    - std::move
    linkageType: ''
    returnType: void
    signature: void Put(const std::string& url, THandlerFunction handler, const std::string&
      name = "")
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::Router::map
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.hpp:66,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.hpp:66,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' url'
    - handler
    argTypes:
    - std::string
    - THandlerFunction
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 66
    functionDepth: 0
    functionLinenumber: 66
    functionLinenumberEnd: 66
    functionName: YaHTTP::Router::Patch
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.hpp
    functionUses: 0
    functionsReached:
    - YaHTTP::Router::map
    - std::move
    linkageType: ''
    returnType: void
    signature: void Patch(const std::string& url, THandlerFunction handler, const
      std::string& name = "")
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::Router::map
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.hpp:67,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.hpp:67,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' url'
    - handler
    argTypes:
    - std::string
    - THandlerFunction
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 67
    functionDepth: 0
    functionLinenumber: 67
    functionLinenumberEnd: 67
    functionName: YaHTTP::Router::Delete
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.hpp
    functionUses: 0
    functionsReached:
    - YaHTTP::Router::map
    - std::move
    linkageType: ''
    returnType: void
    signature: void Delete(const std::string& url, THandlerFunction handler, const
      std::string& name = "")
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::Router::map
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.hpp:68,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.hpp:68,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' url'
    - handler
    argTypes:
    - std::string
    - THandlerFunction
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 68
    functionDepth: 0
    functionLinenumber: 68
    functionLinenumberEnd: 68
    functionName: YaHTTP::Router::Any
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.hpp
    functionUses: 0
    functionsReached:
    - YaHTTP::Router::map
    - std::move
    linkageType: ''
    returnType: void
    signature: void Any(const std::string& url, THandlerFunction handler, const std::string&
      name = "")
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::Router::match
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.hpp:70,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' route'
    - ' requrl'
    - ' params'
    argTypes:
    - std::string
    - URL
    - std::map<std::string, TDelim>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 70
    functionDepth: 0
    functionLinenumber: 70
    functionLinenumberEnd: 70
    functionName: YaHTTP::Router::Match
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.hpp
    functionUses: 2
    functionsReached:
    - YaHTTP::Router::match
    linkageType: ''
    returnType: bool
    signature: bool Match(const std::string& route, const URL& requrl, std::map<std::string,
      TDelim>& params)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::Router::route
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.hpp:71,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - req
    - ' handler'
    argTypes:
    - Request*
    - THandlerFunction
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 71
    functionDepth: 0
    functionLinenumber: 71
    functionLinenumberEnd: 71
    functionName: YaHTTP::Router::Route
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.hpp
    functionUses: 2
    functionsReached:
    - YaHTTP::Router::route
    linkageType: ''
    returnType: RoutingResult
    signature: RoutingResult Route(Request *req, THandlerFunction& handler)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::Router::printRoutes
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.hpp:72,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - os
    argTypes:
    - std::ostream
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 72
    functionDepth: 0
    functionLinenumber: 72
    functionLinenumberEnd: 72
    functionName: YaHTTP::Router::PrintRoutes
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.hpp
    functionUses: 0
    functionsReached:
    - YaHTTP::Router::printRoutes
    linkageType: ''
    returnType: void
    signature: void PrintRoutes(std::ostream &os)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::Router::urlFor
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.hpp:74,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - name
    - ' arguments'
    argTypes:
    - std::string
    - strstr_map_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 74
    functionDepth: 0
    functionLinenumber: 74
    functionLinenumberEnd: 74
    functionName: YaHTTP::Router::URLFor
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.hpp
    functionUses: 0
    functionsReached:
    - YaHTTP::Router::urlFor
    linkageType: ''
    returnType: std::pair<std::string, std::string>
    signature: std::pair<std::string, std::string> URLFor(const std::string &name,
      const strstr_map_t& arguments)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 75
    functionDepth: 0
    functionLinenumber: 75
    functionLinenumberEnd: 75
    functionName: '& GetRoutes()'
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: TRouteList
    signature: TRouteList & GetRoutes()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: routes::clear
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.hpp:76,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 76
    functionDepth: 1
    functionLinenumber: 76
    functionLinenumberEnd: 76
    functionName: YaHTTP::Router::Clear
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.hpp
    functionUses: 0
    functionsReached:
    - routes::clear
    linkageType: ''
    returnType: void
    signature: void Clear()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::isspace
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:11,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - c
    argTypes:
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12
      start: 10
    functionDepth: 0
    functionLinenumber: 10
    functionLinenumberEnd: 12
    functionName: YaHTTP::isspace
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp
    functionUses: 13
    functionsReached:
    - YaHTTP::isspace
    linkageType: ''
    returnType: bool
    signature: bool isspace(char c)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::isspace
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:15,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - c
    - ' loc'
    argTypes:
    - char
    - std::locale
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 16
      start: 14
    functionDepth: 0
    functionLinenumber: 14
    functionLinenumberEnd: 16
    functionName: YaHTTP::isspace
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp
    functionUses: 14
    functionsReached:
    - YaHTTP::isspace
    linkageType: ''
    returnType: bool
    signature: bool isspace(char c, const std::locale& loc)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::isxdigit
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:19,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - c
    argTypes:
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 20
      start: 18
    functionDepth: 0
    functionLinenumber: 18
    functionLinenumberEnd: 20
    functionName: YaHTTP::isxdigit
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp
    functionUses: 5
    functionsReached:
    - YaHTTP::isxdigit
    linkageType: ''
    returnType: bool
    signature: bool isxdigit(char c)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::isxdigit
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:23,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - c
    - ' loc'
    argTypes:
    - char
    - std::locale
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 24
      start: 22
    functionDepth: 0
    functionLinenumber: 22
    functionLinenumberEnd: 24
    functionName: YaHTTP::isxdigit
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp
    functionUses: 6
    functionsReached:
    - YaHTTP::isxdigit
    linkageType: ''
    returnType: bool
    signature: bool isxdigit(char c, const std::locale& loc)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::isdigit
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:27,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - c
    argTypes:
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 28
      start: 26
    functionDepth: 0
    functionLinenumber: 26
    functionLinenumberEnd: 28
    functionName: YaHTTP::isdigit
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp
    functionUses: 5
    functionsReached:
    - YaHTTP::isdigit
    linkageType: ''
    returnType: bool
    signature: bool isdigit(char c)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::isdigit
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:31,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - c
    - ' loc'
    argTypes:
    - char
    - std::locale
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 32
      start: 30
    functionDepth: 0
    functionLinenumber: 30
    functionLinenumberEnd: 32
    functionName: YaHTTP::isdigit
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp
    functionUses: 6
    functionsReached:
    - YaHTTP::isdigit
    linkageType: ''
    returnType: bool
    signature: bool isdigit(char c, const std::locale& loc)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::isalnum
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:35,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - c
    argTypes:
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 36
      start: 34
    functionDepth: 0
    functionLinenumber: 34
    functionLinenumberEnd: 36
    functionName: YaHTTP::isalnum
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp
    functionUses: 11
    functionsReached:
    - YaHTTP::isalnum
    linkageType: ''
    returnType: bool
    signature: bool isalnum(char c)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::isalnum
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:39,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - c
    - ' loc'
    argTypes:
    - char
    - std::locale
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 38
    functionDepth: 0
    functionLinenumber: 38
    functionLinenumberEnd: 40
    functionName: YaHTTP::isalnum
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp
    functionUses: 12
    functionsReached:
    - YaHTTP::isalnum
    linkageType: ''
    returnType: bool
    signature: bool isalnum(char c, const std::locale& loc)
  - BBCount: 51
    BranchProfiles: []
    Callsites:
    - Dst: length
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:46,1
    - Dst: ParseError
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:49,1
    - Dst: ParseError
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:52,1
    - Dst: append
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:56,1
    - Dst: find_first_of
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:59,1
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:64,1
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:64,1
    - Dst: erase
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:65,1
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:65,1
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:65,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:73,1
    - Dst: std::string::find
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:75,1
    - Dst: std::string::find
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:77,1
    - Dst: std::string::find
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:79,1
    - Dst: ParseError
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:82,1
    - Dst: std::transform
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:84,1
    - Dst: method::begin
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:84,1
    - Dst: method::end
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:84,1
    - Dst: method::begin
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:84,1
    - Dst: url::parse
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:85,1
    - Dst: Utility::parseUrlParameters
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:86,1
    - Dst: std::getline
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:93,1
    - Dst: statusText::size
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:95,1
    - Dst: YaHTTP::isspace
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:95,1
    - Dst: statusText::at
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:95,1
    - Dst: statusText::substr
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:96,1
    - Dst: statusText::find
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:97,1
    - Dst: statusText::substr
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:98,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:100,1
    - Dst: std::string::find
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:102,1
    - Dst: std::string::find
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:104,1
    - Dst: std::string::find
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:106,1
    - Dst: ParseError
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:109,1
    - Dst: std::string::empty
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:115,1
    - Dst: headers::find
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:116,1
    - Dst: headers::end
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:116,1
    - Dst: std::string::find
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:121,1
    - Dst: ParseError
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:122,1
    - Dst: std::string::substr
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:124,1
    - Dst: std::string::substr
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:125,1
    - Dst: std::string::begin
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:126,1
    - Dst: std::string::end
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:126,1
    - Dst: YaHTTP::isspace
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:127,1
    - Dst: ParseError
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:128,1
    - Dst: Utility::trim
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:130,1
    - Dst: std::transform
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:131,1
    - Dst: std::string::begin
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:131,1
    - Dst: std::string::end
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:131,1
    - Dst: std::string::begin
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:131,1
    - Dst: jar::parseSetCookieHeader
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:135,1
    - Dst: jar::parseCookieHeader
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:137,1
    - Dst: find
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:141,1
    - Dst: substr
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:144,1
    - Dst: ::atoi
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:145,1
    - Dst: substr
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:145,1
    - Dst: headers::find
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:148,1
    - Dst: headers::end
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:148,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:151,1
    - Dst: headers::find
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:164,1
    - Dst: headers::end
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:164,1
    - Dst: ParseError
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:170,1
    - Dst: ParseError
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:171,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:177,1
    - Dst: ready
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:177,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:179,1
    - Dst: find
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:184,1
    - Dst: ParseError
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:186,1
    - Dst: copy
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:187,1
    - Dst: erase
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:189,1
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:189,1
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:189,1
    - Dst: sscanf
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:190,1
    - Dst: ParseError
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:191,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:194,1
    - Dst: ParseError
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:195,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:199,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:200,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:201,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:201,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:203,1
    - Dst: ParseError
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:205,1
    - Dst: substr
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:207,1
    - Dst: erase
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:208,1
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:208,1
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:208,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:212,1
    - Dst: length
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:215,1
    - Dst: substr
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:216,1
    - Dst: str
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:216,1
    - Dst: length
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:221,1
    - Dst: ready
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:229,1
    CyclomaticComplexity: 79
    EdgeCount: 79
    ICount: 174
    argCount: 1
    argNames:
    - ' somedata'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 230
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 230
    functionName: YaHTTP::AsyncLoader<T>::feed
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp
    functionUses: 0
    functionsReached:
    - Utility::parseUrlParameters
    - std::string::end
    - find_first_of
    - YaHTTP::isspace
    - headers::find
    - std::string::size
    - erase
    - std::getline
    - find
    - std::transform
    - ready
    - std::string::substr
    - append
    - size
    - std::string::find
    - substr
    - headers::end
    - begin
    - std::string::empty
    - at
    - std::string::begin
    - pdns::max
    - url::parse
    - statusText::at
    - sscanf
    - copy
    - str
    - jar::parseCookieHeader
    - Utility::trim
    - ::atoi
    - ParseError
    - statusText::find
    - length
    - std::move
    - statusText::substr
    - method::begin
    - statusText::size
    - method::end
    - jar::parseSetCookieHeader
    linkageType: ''
    returnType: bool
    signature: bool AsyncLoader<T>::feed(const std::string& somedata)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:237,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:237,1
    - Dst: Utility::encodeURL
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:238,1
    - Dst: Utility::encodeURL
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:238,1
    - Dst: std::ostringstream::str
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:240,1
    - Dst: std::ostringstream::str
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:241,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:242,1
    - Dst: std::string::begin
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:242,1
    - Dst: std::string::end
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:242,1
    - Dst: YaHTTP::HTTPBase::versionStr
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:246,1
    - Dst: YaHTTP::HTTPBase::versionStr
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:248,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:249,1
    - Dst: Utility::status2text
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:250,1
    - Dst: find
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:260,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:260,1
    - Dst: find
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:263,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:263,1
    - Dst: find
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:263,1
    - Dst: Pkcs11Slot::logError
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:264,1
    - Dst: find
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:266,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:266,1
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:276,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:277,1
    - Dst: Utility::camelizeHeader
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:280,1
    - Dst: Utility::camelizeHeader
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:282,1
    - Dst: cookies::size
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:285,1
    - Dst: cookies::begin
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:289,1
    - Dst: cookies::end
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:289,1
    - Dst: Utility::encodeURL
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:294,1
    - Dst: Utility::encodeURL
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:294,1
    - Dst: cookies::begin
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:297,1
    - Dst: cookies::end
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:297,1
    - Dst: strcookie_map_t::const_iterator::second::str
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:299,1
    - Dst: YaHTTP::HTTPBase::renderer
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:305,1
    - Dst: r
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:308,1
    CyclomaticComplexity: 31
    EdgeCount: 31
    ICount: 66
    argCount: 1
    argNames:
    - ' os'
    argTypes:
    - std::ostream
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 310
      start: 232
    functionDepth: 2
    functionLinenumber: 232
    functionLinenumberEnd: 310
    functionName: YaHTTP::HTTPBase::write
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp
    functionUses: 2
    functionsReached:
    - std::string::end
    - Utility::camelizeHeader
    - std::string
    - YaHTTP::HTTPBase::renderer
    - find
    - std::ostringstream::str
    - YaHTTP::HTTPBase::versionStr
    - cookies::size
    - begin
    - empty
    - Pkcs11Slot::logError
    - Utility::encodeURL
    - std::string::begin
    - cookies::end
    - Utility::status2text
    - r
    - end
    - cookies::begin
    - strcookie_map_t::const_iterator::second::str
    linkageType: ''
    returnType: void
    signature: void HTTPBase::write(std::ostream& os) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Response::write
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:313,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ' os'
    - resp
    argTypes:
    - std::ostream
    - Response
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 315
      start: 312
    functionDepth: 0
    functionLinenumber: 312
    functionLinenumberEnd: 315
    functionName: '& operator<<(std::ostream& os, const Response &resp)'
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp
    functionUses: 0
    functionsReached:
    - Response::write
    linkageType: ''
    returnType: std::ostream
    signature: std::ostream & operator<<(std::ostream& os, const Response &resp)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::AsyncResponseLoader::initialize
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:319,1
    - Dst: good
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:320,1
    - Dst: read
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:322,1
    - Dst: gcount
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:323,1
    - Dst: clear
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:324,1
    - Dst: YaHTTP::AsyncResponseLoader::feed
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:325,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:325,1
    - Dst: gcount
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:325,1
    - Dst: YaHTTP::AsyncResponseLoader::ready
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:329,1
    - Dst: ParseError
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:330,1
    - Dst: YaHTTP::AsyncResponseLoader::finalize
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:331,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 2
    argNames:
    - ' is'
    - resp
    argTypes:
    - std::istream
    - Response
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 333
      start: 317
    functionDepth: 1
    functionLinenumber: 317
    functionLinenumberEnd: 333
    functionName: '& operator>>(std::istream& is, Response &resp)'
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp
    functionUses: 0
    functionsReached:
    - read
    - gcount
    - YaHTTP::AsyncResponseLoader::feed
    - YaHTTP::AsyncResponseLoader::initialize
    - YaHTTP::AsyncResponseLoader::finalize
    - ParseError
    - YaHTTP::AsyncResponseLoader::ready
    - clear
    - std::string
    - good
    linkageType: ''
    returnType: std::istream
    signature: std::istream & operator>>(std::istream& is, Response &resp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Request::write
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:336,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ' os'
    - req
    argTypes:
    - std::ostream
    - Request
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 338
      start: 335
    functionDepth: 0
    functionLinenumber: 335
    functionLinenumberEnd: 338
    functionName: '& operator<<(std::ostream& os, const Request &req)'
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp
    functionUses: 0
    functionsReached:
    - Request::write
    linkageType: ''
    returnType: std::ostream
    signature: std::ostream & operator<<(std::ostream& os, const Request &req)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::AsyncRequestLoader::initialize
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:342,1
    - Dst: good
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:343,1
    - Dst: read
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:345,1
    - Dst: gcount
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:346,1
    - Dst: clear
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:347,1
    - Dst: YaHTTP::AsyncRequestLoader::feed
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:348,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:348,1
    - Dst: gcount
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:348,1
    - Dst: YaHTTP::AsyncRequestLoader::ready
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:351,1
    - Dst: ParseError
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:352,1
    - Dst: YaHTTP::AsyncRequestLoader::finalize
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:353,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 2
    argNames:
    - ' is'
    - req
    argTypes:
    - std::istream
    - Request
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 355
      start: 340
    functionDepth: 1
    functionLinenumber: 340
    functionLinenumberEnd: 355
    functionName: '& operator>>(std::istream& is, Request &req)'
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp
    functionUses: 0
    functionsReached:
    - read
    - gcount
    - YaHTTP::AsyncRequestLoader::ready
    - YaHTTP::AsyncRequestLoader::initialize
    - YaHTTP::AsyncRequestLoader::feed
    - ParseError
    - YaHTTP::AsyncRequestLoader::finalize
    - clear
    - std::string
    - good
    linkageType: ''
    returnType: std::istream
    signature: std::istream & operator>>(std::istream& is, Request &req)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::isspace
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:11,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - c
    argTypes:
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12
      start: 10
    functionDepth: 0
    functionLinenumber: 10
    functionLinenumberEnd: 12
    functionName: YaHTTP::isspace
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp
    functionUses: 16
    functionsReached:
    - YaHTTP::isspace
    linkageType: ''
    returnType: bool
    signature: bool isspace(char c)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::isspace
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:15,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - c
    - ' loc'
    argTypes:
    - char
    - std::locale
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 16
      start: 14
    functionDepth: 0
    functionLinenumber: 14
    functionLinenumberEnd: 16
    functionName: YaHTTP::isspace
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp
    functionUses: 17
    functionsReached:
    - YaHTTP::isspace
    linkageType: ''
    returnType: bool
    signature: bool isspace(char c, const std::locale& loc)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::isxdigit
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:19,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - c
    argTypes:
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 20
      start: 18
    functionDepth: 0
    functionLinenumber: 18
    functionLinenumberEnd: 20
    functionName: YaHTTP::isxdigit
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp
    functionUses: 7
    functionsReached:
    - YaHTTP::isxdigit
    linkageType: ''
    returnType: bool
    signature: bool isxdigit(char c)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::isxdigit
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:23,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - c
    - ' loc'
    argTypes:
    - char
    - std::locale
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 24
      start: 22
    functionDepth: 0
    functionLinenumber: 22
    functionLinenumberEnd: 24
    functionName: YaHTTP::isxdigit
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp
    functionUses: 8
    functionsReached:
    - YaHTTP::isxdigit
    linkageType: ''
    returnType: bool
    signature: bool isxdigit(char c, const std::locale& loc)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::isdigit
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:27,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - c
    argTypes:
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 28
      start: 26
    functionDepth: 0
    functionLinenumber: 26
    functionLinenumberEnd: 28
    functionName: YaHTTP::isdigit
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp
    functionUses: 7
    functionsReached:
    - YaHTTP::isdigit
    linkageType: ''
    returnType: bool
    signature: bool isdigit(char c)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::isdigit
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:31,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - c
    - ' loc'
    argTypes:
    - char
    - std::locale
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 32
      start: 30
    functionDepth: 0
    functionLinenumber: 30
    functionLinenumberEnd: 32
    functionName: YaHTTP::isdigit
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp
    functionUses: 8
    functionsReached:
    - YaHTTP::isdigit
    linkageType: ''
    returnType: bool
    signature: bool isdigit(char c, const std::locale& loc)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::isalnum
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:35,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - c
    argTypes:
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 36
      start: 34
    functionDepth: 0
    functionLinenumber: 34
    functionLinenumberEnd: 36
    functionName: YaHTTP::isalnum
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp
    functionUses: 13
    functionsReached:
    - YaHTTP::isalnum
    linkageType: ''
    returnType: bool
    signature: bool isalnum(char c)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::isalnum
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:39,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - c
    - ' loc'
    argTypes:
    - char
    - std::locale
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 38
    functionDepth: 0
    functionLinenumber: 38
    functionLinenumberEnd: 40
    functionName: YaHTTP::isalnum
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp
    functionUses: 14
    functionsReached:
    - YaHTTP::isalnum
    linkageType: ''
    returnType: bool
    signature: bool isalnum(char c, const std::locale& loc)
  - BBCount: 51
    BranchProfiles: []
    Callsites:
    - Dst: length
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:46,1
    - Dst: ParseError
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:49,1
    - Dst: ParseError
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:52,1
    - Dst: append
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:56,1
    - Dst: find_first_of
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:59,1
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:64,1
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:64,1
    - Dst: erase
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:65,1
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:65,1
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:65,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:73,1
    - Dst: std::string::find
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:75,1
    - Dst: std::string::find
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:77,1
    - Dst: std::string::find
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:79,1
    - Dst: ParseError
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:82,1
    - Dst: std::transform
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:84,1
    - Dst: method::begin
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:84,1
    - Dst: method::end
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:84,1
    - Dst: method::begin
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:84,1
    - Dst: url::parse
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:85,1
    - Dst: Utility::parseUrlParameters
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:86,1
    - Dst: std::getline
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:93,1
    - Dst: statusText::size
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:95,1
    - Dst: YaHTTP::isspace
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:95,1
    - Dst: statusText::at
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:95,1
    - Dst: statusText::substr
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:96,1
    - Dst: statusText::find
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:97,1
    - Dst: statusText::substr
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:98,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:100,1
    - Dst: std::string::find
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:102,1
    - Dst: std::string::find
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:104,1
    - Dst: std::string::find
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:106,1
    - Dst: ParseError
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:109,1
    - Dst: std::string::empty
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:115,1
    - Dst: headers::find
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:116,1
    - Dst: headers::end
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:116,1
    - Dst: std::string::find
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:121,1
    - Dst: ParseError
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:122,1
    - Dst: std::string::substr
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:124,1
    - Dst: std::string::substr
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:125,1
    - Dst: std::string::begin
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:126,1
    - Dst: std::string::end
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:126,1
    - Dst: YaHTTP::isspace
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:127,1
    - Dst: ParseError
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:128,1
    - Dst: Utility::trim
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:130,1
    - Dst: std::transform
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:131,1
    - Dst: std::string::begin
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:131,1
    - Dst: std::string::end
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:131,1
    - Dst: std::string::begin
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:131,1
    - Dst: jar::parseSetCookieHeader
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:135,1
    - Dst: jar::parseCookieHeader
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:137,1
    - Dst: find
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:141,1
    - Dst: substr
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:144,1
    - Dst: ::atoi
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:145,1
    - Dst: substr
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:145,1
    - Dst: headers::find
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:148,1
    - Dst: headers::end
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:148,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:151,1
    - Dst: headers::find
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:164,1
    - Dst: headers::end
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:164,1
    - Dst: ParseError
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:170,1
    - Dst: ParseError
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:171,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:177,1
    - Dst: ready
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:177,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:179,1
    - Dst: find
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:184,1
    - Dst: ParseError
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:186,1
    - Dst: copy
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:187,1
    - Dst: erase
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:189,1
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:189,1
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:189,1
    - Dst: sscanf
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:190,1
    - Dst: ParseError
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:191,1
    - Dst: pdns::max
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:194,1
    - Dst: ParseError
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:195,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:199,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:200,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:201,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:201,1
    - Dst: at
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:203,1
    - Dst: ParseError
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:205,1
    - Dst: substr
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:207,1
    - Dst: erase
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:208,1
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:208,1
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:208,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:212,1
    - Dst: length
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:215,1
    - Dst: substr
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:216,1
    - Dst: str
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:216,1
    - Dst: length
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:221,1
    - Dst: ready
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:229,1
    CyclomaticComplexity: 79
    EdgeCount: 79
    ICount: 174
    argCount: 1
    argNames:
    - ' somedata'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 230
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 230
    functionName: YaHTTP::AsyncLoader<T>::feed
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp
    functionUses: 0
    functionsReached:
    - Utility::parseUrlParameters
    - std::string::end
    - find_first_of
    - YaHTTP::isspace
    - headers::find
    - std::string::size
    - erase
    - std::getline
    - find
    - std::transform
    - ready
    - std::string::substr
    - append
    - size
    - std::string::find
    - substr
    - headers::end
    - begin
    - std::string::empty
    - at
    - std::string::begin
    - pdns::max
    - url::parse
    - statusText::at
    - sscanf
    - copy
    - str
    - jar::parseCookieHeader
    - Utility::trim
    - ::atoi
    - ParseError
    - statusText::find
    - length
    - std::move
    - statusText::substr
    - method::begin
    - statusText::size
    - method::end
    - jar::parseSetCookieHeader
    linkageType: ''
    returnType: bool
    signature: bool AsyncLoader<T>::feed(const std::string& somedata)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:237,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:237,1
    - Dst: Utility::encodeURL
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:238,1
    - Dst: Utility::encodeURL
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:238,1
    - Dst: std::ostringstream::str
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:240,1
    - Dst: std::ostringstream::str
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:241,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:242,1
    - Dst: std::string::begin
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:242,1
    - Dst: std::string::end
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:242,1
    - Dst: YaHTTP::HTTPBase::versionStr
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:246,1
    - Dst: YaHTTP::HTTPBase::versionStr
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:248,1
    - Dst: empty
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:249,1
    - Dst: Utility::status2text
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:250,1
    - Dst: find
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:260,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:260,1
    - Dst: find
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:263,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:263,1
    - Dst: find
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:263,1
    - Dst: Pkcs11Slot::logError
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:264,1
    - Dst: find
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:266,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:266,1
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:276,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:277,1
    - Dst: Utility::camelizeHeader
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:280,1
    - Dst: Utility::camelizeHeader
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:282,1
    - Dst: cookies::size
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:285,1
    - Dst: cookies::begin
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:289,1
    - Dst: cookies::end
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:289,1
    - Dst: Utility::encodeURL
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:294,1
    - Dst: Utility::encodeURL
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:294,1
    - Dst: cookies::begin
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:297,1
    - Dst: cookies::end
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:297,1
    - Dst: strcookie_map_t::const_iterator::second::str
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:299,1
    - Dst: YaHTTP::HTTPBase::renderer
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:305,1
    - Dst: r
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:308,1
    CyclomaticComplexity: 31
    EdgeCount: 31
    ICount: 66
    argCount: 1
    argNames:
    - ' os'
    argTypes:
    - std::ostream
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 310
      start: 232
    functionDepth: 2
    functionLinenumber: 232
    functionLinenumberEnd: 310
    functionName: YaHTTP::HTTPBase::write
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp
    functionUses: 2
    functionsReached:
    - std::string::end
    - Utility::camelizeHeader
    - std::string
    - YaHTTP::HTTPBase::renderer
    - find
    - std::ostringstream::str
    - YaHTTP::HTTPBase::versionStr
    - cookies::size
    - begin
    - empty
    - Pkcs11Slot::logError
    - Utility::encodeURL
    - std::string::begin
    - cookies::end
    - Utility::status2text
    - r
    - end
    - cookies::begin
    - strcookie_map_t::const_iterator::second::str
    linkageType: ''
    returnType: void
    signature: void HTTPBase::write(std::ostream& os) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Response::write
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:313,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ' os'
    - resp
    argTypes:
    - std::ostream
    - Response
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 315
      start: 312
    functionDepth: 0
    functionLinenumber: 312
    functionLinenumberEnd: 315
    functionName: '& operator<<(std::ostream& os, const Response &resp)'
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp
    functionUses: 0
    functionsReached:
    - Response::write
    linkageType: ''
    returnType: std::ostream
    signature: std::ostream & operator<<(std::ostream& os, const Response &resp)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::AsyncResponseLoader::initialize
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:319,1
    - Dst: good
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:320,1
    - Dst: read
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:322,1
    - Dst: gcount
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:323,1
    - Dst: clear
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:324,1
    - Dst: YaHTTP::AsyncResponseLoader::feed
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:325,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:325,1
    - Dst: gcount
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:325,1
    - Dst: YaHTTP::AsyncResponseLoader::ready
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:329,1
    - Dst: ParseError
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:330,1
    - Dst: YaHTTP::AsyncResponseLoader::finalize
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:331,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 2
    argNames:
    - ' is'
    - resp
    argTypes:
    - std::istream
    - Response
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 333
      start: 317
    functionDepth: 1
    functionLinenumber: 317
    functionLinenumberEnd: 333
    functionName: '& operator>>(std::istream& is, Response &resp)'
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp
    functionUses: 0
    functionsReached:
    - read
    - gcount
    - YaHTTP::AsyncResponseLoader::feed
    - YaHTTP::AsyncResponseLoader::initialize
    - YaHTTP::AsyncResponseLoader::finalize
    - ParseError
    - YaHTTP::AsyncResponseLoader::ready
    - clear
    - std::string
    - good
    linkageType: ''
    returnType: std::istream
    signature: std::istream & operator>>(std::istream& is, Response &resp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Request::write
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:336,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ' os'
    - req
    argTypes:
    - std::ostream
    - Request
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 338
      start: 335
    functionDepth: 0
    functionLinenumber: 335
    functionLinenumberEnd: 338
    functionName: '& operator<<(std::ostream& os, const Request &req)'
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp
    functionUses: 0
    functionsReached:
    - Request::write
    linkageType: ''
    returnType: std::ostream
    signature: std::ostream & operator<<(std::ostream& os, const Request &req)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::AsyncRequestLoader::initialize
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:342,1
    - Dst: good
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:343,1
    - Dst: read
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:345,1
    - Dst: gcount
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:346,1
    - Dst: clear
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:347,1
    - Dst: YaHTTP::AsyncRequestLoader::feed
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:348,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:348,1
    - Dst: gcount
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:348,1
    - Dst: YaHTTP::AsyncRequestLoader::ready
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:351,1
    - Dst: ParseError
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:352,1
    - Dst: YaHTTP::AsyncRequestLoader::finalize
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp:353,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 2
    argNames:
    - ' is'
    - req
    argTypes:
    - std::istream
    - Request
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 355
      start: 340
    functionDepth: 1
    functionLinenumber: 340
    functionLinenumberEnd: 355
    functionName: '& operator>>(std::istream& is, Request &req)'
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp
    functionUses: 0
    functionsReached:
    - read
    - gcount
    - YaHTTP::AsyncRequestLoader::ready
    - YaHTTP::AsyncRequestLoader::initialize
    - YaHTTP::AsyncRequestLoader::feed
    - ParseError
    - YaHTTP::AsyncRequestLoader::finalize
    - clear
    - std::string
    - good
    linkageType: ''
    returnType: std::istream
    signature: std::istream & operator>>(std::istream& is, Request &req)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8
      start: 8
    functionDepth: 0
    functionLinenumber: 8
    functionLinenumberEnd: 8
    functionName: YaHTTP::Error::Error
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/exception.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Error()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' reason_'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 9
      start: 9
    functionDepth: 0
    functionLinenumber: 9
    functionLinenumberEnd: 9
    functionName: YaHTTP::Error::Error
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/exception.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Error(const std::string& reason_)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 10
      start: 10
    functionDepth: 0
    functionLinenumber: 10
    functionLinenumberEnd: 10
    functionName: ~Error() throw()
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/exception.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~Error() throw()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/exception.hpp:14,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15
      start: 12
    functionDepth: 0
    functionLinenumber: 12
    functionLinenumberEnd: 15
    functionName: YaHTTP::Error::what
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/exception.hpp
    functionUses: 0
    functionsReached:
    - c_str
    linkageType: ''
    returnType: char
    signature: char * what() const throw()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 21
      start: 21
    functionDepth: 0
    functionLinenumber: 21
    functionLinenumberEnd: 21
    functionName: YaHTTP::ParseError::ParseError
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/exception.hpp
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ParseError()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' reason_'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 22
      start: 22
    functionDepth: 0
    functionLinenumber: 22
    functionLinenumberEnd: 22
    functionName: YaHTTP::ParseError::ParseError
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/exception.hpp
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ParseError(const std::string& reason_)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8
      start: 8
    functionDepth: 0
    functionLinenumber: 8
    functionLinenumberEnd: 8
    functionName: YaHTTP::Error::Error
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/exception.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Error()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' reason_'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 9
      start: 9
    functionDepth: 0
    functionLinenumber: 9
    functionLinenumberEnd: 9
    functionName: YaHTTP::Error::Error
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/exception.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Error(const std::string& reason_)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 10
      start: 10
    functionDepth: 0
    functionLinenumber: 10
    functionLinenumberEnd: 10
    functionName: ~Error() throw()
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/exception.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~Error() throw()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/exception.hpp:14,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15
      start: 12
    functionDepth: 0
    functionLinenumber: 12
    functionLinenumberEnd: 15
    functionName: YaHTTP::Error::what
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/exception.hpp
    functionUses: 0
    functionsReached:
    - c_str
    linkageType: ''
    returnType: char
    signature: char * what() const throw()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 21
      start: 21
    functionDepth: 0
    functionLinenumber: 21
    functionLinenumberEnd: 21
    functionName: YaHTTP::ParseError::ParseError
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/exception.hpp
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ParseError()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' reason_'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 22
      start: 22
    functionDepth: 0
    functionLinenumber: 22
    functionLinenumberEnd: 22
    functionName: YaHTTP::ParseError::ParseError
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/exception.hpp
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ParseError(const std::string& reason_)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.cpp:15,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.cpp:15,1
    - Dst: Error
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.cpp:16,1
    - Dst: Error
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.cpp:18,1
    - Dst: std::transform
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.cpp:21,1
    - Dst: std::string::begin
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.cpp:21,1
    - Dst: std::string::end
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.cpp:21,1
    - Dst: std::string::begin
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.cpp:21,1
    - Dst: push_back
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.cpp:22,1
    - Dst: funcptr::make_tuple
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.cpp:22,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 13
    argCount: 4
    argNames:
    - ' method'
    - ' url'
    - handler
    - ' name'
    argTypes:
    - std::string
    - std::string
    - THandlerFunction
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 23
      start: 11
    functionDepth: 0
    functionLinenumber: 11
    functionLinenumberEnd: 23
    functionName: YaHTTP::Router::map
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.cpp
    functionUses: 28
    functionsReached:
    - std::string::begin
    - std::transform
    - funcptr::make_tuple
    - push_back
    - std::string::end
    - end
    - begin
    - Error
    linkageType: ''
    returnType: void
    signature: void Router::map(const std::string& method, const std::string& url,
      THandlerFunction handler, const std::string& name)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.cpp:32,1
    - Dst: path::size
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.cpp:32,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.cpp:37,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.cpp:40,1
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.cpp:40,1
    - Dst: static_cast<long>
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.cpp:40,1
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.cpp:40,1
    - Dst: static_cast<long>
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.cpp:40,1
    - Dst: std::string::substr
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.cpp:43,1
    - Dst: path::size
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.cpp:45,1
    - Dst: std::string::empty
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.cpp:46,1
    - Dst: funcptr::tie
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.cpp:47,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.cpp:49,1
    - Dst: path::size
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.cpp:50,1
    - Dst: path::size
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.cpp:54,1
    - Dst: funcptr::tie
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.cpp:64,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 44
    argCount: 3
    argNames:
    - ' route'
    - ' requrl'
    - params
    argTypes:
    - std::string
    - URL
    - std::map<std::string, TDelim>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 25
    functionDepth: 0
    functionLinenumber: 25
    functionLinenumberEnd: 82
    functionName: YaHTTP::Router::match
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.cpp
    functionUses: 6
    functionsReached:
    - funcptr::tie
    - std::string::substr
    - path::size
    - std::string::empty
    - size
    - static_cast<long>
    - begin
    - std::string
    linkageType: ''
    returnType: bool
    signature: bool Router::match(const std::string& route, const URL& requrl, std::map<std::string,
      TDelim> &params)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: funcptr::tie
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.cpp:94,1
    - Dst: std::map::clear
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.cpp:97,1
    - Dst: YaHTTP::Router::match
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.cpp:99,1
    - Dst: std::string::empty
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.cpp:101,1
    - Dst: Request*::parameters::clear
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.cpp:126,1
    - Dst: funcptr::tie
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.cpp:131,1
    - Dst: Request*::url::path::begin
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.cpp:132,1
    - Dst: Request*::url::path::begin
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.cpp:132,1
    - Dst: Utility::decodeURL
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.cpp:133,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.cpp:134,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.cpp:137,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 28
    argCount: 2
    argNames:
    - req
    - ' handler'
    argTypes:
    - Request*
    - THandlerFunction
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 84
    functionDepth: 1
    functionLinenumber: 84
    functionLinenumberEnd: 140
    functionName: YaHTTP::Router::route
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.cpp
    functionUses: 4
    functionsReached:
    - std::move
    - funcptr::tie
    - YaHTTP::Router::match
    - Request*::parameters::clear
    - std::map::clear
    - std::string::empty
    - Request*::url::path::begin
    - Utility::decodeURL
    linkageType: ''
    returnType: RoutingResult
    signature: RoutingResult Router::route(Request *req, THandlerFunction& handler)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.cpp:143,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.cpp:143,1
    - Dst: std::ostream::width
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.cpp:145,1
    - Dst: std::ostream::setf
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.cpp:146,1
    - Dst: std::ostream::width
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.cpp:147,1
    - Dst: std::get<0>
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.cpp:148,1
    - Dst: std::ostream::width
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.cpp:149,1
    - Dst: std::get<1>
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.cpp:150,1
    - Dst: std::ostream::width
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.cpp:151,1
    - Dst: std::ostream::setf
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.cpp:152,1
    - Dst: std::get<3>
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.cpp:153,1
    - Dst: TRouteList::iterator::get
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.cpp:156,1
    - Dst: TRouteList::iterator::get
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.cpp:156,1
    - Dst: TRouteList::iterator::get
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.cpp:156,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - os
    argTypes:
    - std::ostream
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 159
      start: 142
    functionDepth: 0
    functionLinenumber: 142
    functionLinenumberEnd: 159
    functionName: YaHTTP::Router::printRoutes
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.cpp
    functionUses: 4
    functionsReached:
    - end
    - std::get<0>
    - std::get<1>
    - TRouteList::iterator::get
    - std::ostream::width
    - begin
    - std::ostream::setf
    - std::get<3>
    linkageType: ''
    returnType: void
    signature: void Router::printRoutes(std::ostream &os)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.cpp:167,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.cpp:167,1
    - Dst: std::get<3>
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.cpp:169,1
    - Dst: std::get<1>
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.cpp:169,1
    - Dst: std::get<0>
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.cpp:169,1
    - Dst: TRouteList::iterator::get
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.cpp:171,1
    - Dst: TRouteList::iterator::get
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.cpp:171,1
    - Dst: TRouteList::iterator::get
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.cpp:171,1
    - Dst: Error
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.cpp:176,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.cpp:178,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.cpp:178,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.cpp:183,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.cpp:183,1
    - Dst: std::string::substr
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.cpp:184,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.cpp:186,1
    - Dst: std::string::begin
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.cpp:186,1
    - Dst: std::string::begin
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.cpp:186,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.cpp:188,1
    - Dst: std::string::begin
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.cpp:188,1
    - Dst: std::string::begin
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.cpp:188,1
    - Dst: find
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.cpp:189,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.cpp:189,1
    - Dst: Utility::encodeURL
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.cpp:190,1
    - Dst: std::string::substr
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.cpp:199,1
    - Dst: std::ostringstream::str
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.cpp:200,1
    - Dst: std::make_pair
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.cpp:201,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 36
    argCount: 2
    argNames:
    - name
    - ' arguments'
    argTypes:
    - std::string
    - strstr_map_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 202
      start: 161
    functionDepth: 0
    functionLinenumber: 161
    functionLinenumberEnd: 202
    functionName: YaHTTP::Router::urlFor
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.cpp
    functionUses: 4
    functionsReached:
    - std::string::begin
    - std::string::substr
    - std::ostringstream::str
    - end
    - std::get<0>
    - std::get<1>
    - TRouteList::iterator::get
    - begin
    - Error
    - std::make_pair
    - std::get<3>
    - Utility::encodeURL
    - std::string
    - std::string::size
    - find
    - static_cast<int>
    linkageType: ''
    returnType: std::pair<std::string,std::string>
    signature: std::pair<std::string,std::string> Router::urlFor(const std::string
      &name, const strstr_map_t& arguments)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.cpp:15,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.cpp:15,1
    - Dst: Error
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.cpp:16,1
    - Dst: Error
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.cpp:18,1
    - Dst: std::transform
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.cpp:21,1
    - Dst: std::string::begin
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.cpp:21,1
    - Dst: std::string::end
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.cpp:21,1
    - Dst: std::string::begin
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.cpp:21,1
    - Dst: push_back
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.cpp:22,1
    - Dst: funcptr::make_tuple
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.cpp:22,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 13
    argCount: 4
    argNames:
    - ' method'
    - ' url'
    - handler
    - ' name'
    argTypes:
    - std::string
    - std::string
    - THandlerFunction
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 23
      start: 11
    functionDepth: 0
    functionLinenumber: 11
    functionLinenumberEnd: 23
    functionName: YaHTTP::Router::map
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.cpp
    functionUses: 28
    functionsReached:
    - std::string::begin
    - std::transform
    - funcptr::make_tuple
    - push_back
    - std::string::end
    - end
    - begin
    - Error
    linkageType: ''
    returnType: void
    signature: void Router::map(const std::string& method, const std::string& url,
      THandlerFunction handler, const std::string& name)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.cpp:32,1
    - Dst: path::size
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.cpp:32,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.cpp:37,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.cpp:40,1
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.cpp:40,1
    - Dst: static_cast<long>
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.cpp:40,1
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.cpp:40,1
    - Dst: static_cast<long>
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.cpp:40,1
    - Dst: std::string::substr
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.cpp:43,1
    - Dst: path::size
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.cpp:45,1
    - Dst: std::string::empty
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.cpp:46,1
    - Dst: funcptr::tie
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.cpp:47,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.cpp:49,1
    - Dst: path::size
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.cpp:50,1
    - Dst: path::size
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.cpp:54,1
    - Dst: funcptr::tie
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.cpp:64,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 44
    argCount: 3
    argNames:
    - ' route'
    - ' requrl'
    - params
    argTypes:
    - std::string
    - URL
    - std::map<std::string, TDelim>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 25
    functionDepth: 0
    functionLinenumber: 25
    functionLinenumberEnd: 82
    functionName: YaHTTP::Router::match
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.cpp
    functionUses: 7
    functionsReached:
    - funcptr::tie
    - std::string::substr
    - path::size
    - std::string::empty
    - size
    - static_cast<long>
    - begin
    - std::string
    linkageType: ''
    returnType: bool
    signature: bool Router::match(const std::string& route, const URL& requrl, std::map<std::string,
      TDelim> &params)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: funcptr::tie
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.cpp:94,1
    - Dst: std::map::clear
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.cpp:97,1
    - Dst: YaHTTP::Router::match
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.cpp:99,1
    - Dst: std::string::empty
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.cpp:101,1
    - Dst: Request*::parameters::clear
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.cpp:126,1
    - Dst: funcptr::tie
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.cpp:131,1
    - Dst: Request*::url::path::begin
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.cpp:132,1
    - Dst: Request*::url::path::begin
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.cpp:132,1
    - Dst: Utility::decodeURL
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.cpp:133,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.cpp:134,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.cpp:137,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 28
    argCount: 2
    argNames:
    - req
    - ' handler'
    argTypes:
    - Request*
    - THandlerFunction
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 84
    functionDepth: 1
    functionLinenumber: 84
    functionLinenumberEnd: 140
    functionName: YaHTTP::Router::route
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.cpp
    functionUses: 4
    functionsReached:
    - std::move
    - funcptr::tie
    - YaHTTP::Router::match
    - Request*::parameters::clear
    - std::map::clear
    - std::string::empty
    - Request*::url::path::begin
    - Utility::decodeURL
    linkageType: ''
    returnType: RoutingResult
    signature: RoutingResult Router::route(Request *req, THandlerFunction& handler)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.cpp:143,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.cpp:143,1
    - Dst: std::ostream::width
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.cpp:145,1
    - Dst: std::ostream::setf
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.cpp:146,1
    - Dst: std::ostream::width
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.cpp:147,1
    - Dst: std::get<0>
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.cpp:148,1
    - Dst: std::ostream::width
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.cpp:149,1
    - Dst: std::get<1>
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.cpp:150,1
    - Dst: std::ostream::width
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.cpp:151,1
    - Dst: std::ostream::setf
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.cpp:152,1
    - Dst: std::get<3>
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.cpp:153,1
    - Dst: TRouteList::iterator::get
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.cpp:156,1
    - Dst: TRouteList::iterator::get
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.cpp:156,1
    - Dst: TRouteList::iterator::get
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.cpp:156,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - os
    argTypes:
    - std::ostream
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 159
      start: 142
    functionDepth: 0
    functionLinenumber: 142
    functionLinenumberEnd: 159
    functionName: YaHTTP::Router::printRoutes
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.cpp
    functionUses: 4
    functionsReached:
    - end
    - std::get<0>
    - std::get<1>
    - TRouteList::iterator::get
    - std::ostream::width
    - begin
    - std::ostream::setf
    - std::get<3>
    linkageType: ''
    returnType: void
    signature: void Router::printRoutes(std::ostream &os)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.cpp:167,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.cpp:167,1
    - Dst: std::get<3>
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.cpp:169,1
    - Dst: std::get<1>
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.cpp:169,1
    - Dst: std::get<0>
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.cpp:169,1
    - Dst: TRouteList::iterator::get
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.cpp:171,1
    - Dst: TRouteList::iterator::get
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.cpp:171,1
    - Dst: TRouteList::iterator::get
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.cpp:171,1
    - Dst: Error
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.cpp:176,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.cpp:178,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.cpp:178,1
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.cpp:183,1
    - Dst: std::string::size
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.cpp:183,1
    - Dst: std::string::substr
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.cpp:184,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.cpp:186,1
    - Dst: std::string::begin
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.cpp:186,1
    - Dst: std::string::begin
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.cpp:186,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.cpp:188,1
    - Dst: std::string::begin
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.cpp:188,1
    - Dst: std::string::begin
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.cpp:188,1
    - Dst: find
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.cpp:189,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.cpp:189,1
    - Dst: Utility::encodeURL
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.cpp:190,1
    - Dst: std::string::substr
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.cpp:199,1
    - Dst: std::ostringstream::str
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.cpp:200,1
    - Dst: std::make_pair
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.cpp:201,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 36
    argCount: 2
    argNames:
    - name
    - ' arguments'
    argTypes:
    - std::string
    - strstr_map_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 202
      start: 161
    functionDepth: 0
    functionLinenumber: 161
    functionLinenumberEnd: 202
    functionName: YaHTTP::Router::urlFor
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.cpp
    functionUses: 4
    functionsReached:
    - std::string::begin
    - std::string::substr
    - std::ostringstream::str
    - end
    - std::get<0>
    - std::get<1>
    - TRouteList::iterator::get
    - begin
    - Error
    - std::make_pair
    - std::get<3>
    - Utility::encodeURL
    - std::string
    - std::string::size
    - find
    - static_cast<int>
    linkageType: ''
    returnType: std::pair<std::string,std::string>
    signature: std::pair<std::string,std::string> Router::urlFor(const std::string
      &name, const strstr_map_t& arguments)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 52
    functionDepth: 0
    functionLinenumber: 52
    functionLinenumberEnd: 52
    functionName: YaHTTP::HTTPBase::SendBodyRender::SendBodyRender
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void SendBodyRender()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: HTTPBase*::body::length
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp:57,1
    - Dst: std::min
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp:58,1
    - Dst: static_cast<std::string::size_type>
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp:58,1
    - Dst: HTTPBase*::body::length
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp:58,1
    - Dst: HTTPBase*::body::substr
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp:60,1
    - Dst: HTTPBase*::body::length
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp:66,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 3
    argNames:
    - doc
    - ' os'
    - chunked
    argTypes:
    - HTTPBase*
    - std::ostream
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 54
    functionDepth: 0
    functionLinenumber: 54
    functionLinenumberEnd: 67
    functionName: operator()(const HTTPBase *doc, std::ostream& os, bool chunked)
      const
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 0
    functionsReached:
    - HTTPBase*::body::length
    - std::min
    - static_cast<std::string::size_type>
    - HTTPBase*::body::substr
    linkageType: ''
    returnType: size_t
    signature: size_t operator()(const HTTPBase *doc, std::ostream& os, bool chunked)
      const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' path_'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 72
    functionDepth: 0
    functionLinenumber: 72
    functionLinenumberEnd: 74
    functionName: YaHTTP::HTTPBase::SendFileRender::SendFileRender
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void SendFileRender(const std::string& path_)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp:82,1
    - Dst: std::ifstream::good
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp:86,1
    - Dst: std::ifstream::read
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp:87,1
    - Dst: std::ifstream::gcount
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp:88,1
    - Dst: write
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp:91,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 3
    argNames:
    - doc
    - ' os'
    - chunked
    argTypes:
    - HTTPBase*
    - std::ostream
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 76
    functionDepth: 0
    functionLinenumber: 76
    functionLinenumberEnd: 97
    functionName: operator()(const HTTPBase *doc __attribute__((unused)), std::ostream&
      os, bool chunked) const
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 0
    functionsReached:
    - write
    - c_str
    - std::ifstream::read
    - std::ifstream::gcount
    - std::ifstream::good
    linkageType: ''
    returnType: size_t
    signature: size_t operator()(const HTTPBase *doc __attribute__((unused)), std::ostream&
      os, bool chunked) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::HTTPBase::initialize
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp:103,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 104
      start: 102
    functionDepth: 0
    functionLinenumber: 102
    functionLinenumberEnd: 104
    functionName: YaHTTP::HTTPBase::HTTPBase
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 0
    functionsReached:
    - YaHTTP::HTTPBase::initialize
    linkageType: ''
    returnType: void
    signature: void HTTPBase()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 105
    functionDepth: 0
    functionLinenumber: 105
    functionLinenumberEnd: 105
    functionName: ~HTTPBase()
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~HTTPBase()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SendBodyRender
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp:111,1
    - Dst: clear
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp:119,1
    - Dst: clear
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp:120,1
    - Dst: clear
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp:121,1
    - Dst: clear
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp:122,1
    - Dst: clear
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp:123,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 19
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 107
    functionDepth: 1
    functionLinenumber: 107
    functionLinenumberEnd: 128
    functionName: YaHTTP::HTTPBase::initialize
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 11
    functionsReached:
    - clear
    - SendBodyRender
    linkageType: ''
    returnType: void
    signature: void initialize()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 18
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - HTTPBase
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 143
      start: 130
    functionDepth: 0
    functionLinenumber: 130
    functionLinenumberEnd: 143
    functionName: YaHTTP::HTTPBase::HTTPBase
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void HTTPBase(const HTTPBase& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 19
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - HTTPBase
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 158
      start: 144
    functionDepth: 0
    functionLinenumber: 144
    functionLinenumberEnd: 158
    functionName: '& operator=(const HTTPBase& rhs)'
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: HTTPBase
    signature: HTTPBase & operator=(const HTTPBase& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 185
      start: 185
    functionDepth: 0
    functionLinenumber: 185
    functionLinenumberEnd: 185
    functionName: '& GET()'
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: strstr_map_t
    signature: strstr_map_t & GET()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 186
      start: 186
    functionDepth: 0
    functionLinenumber: 186
    functionLinenumberEnd: 186
    functionName: '& POST()'
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: strstr_map_t
    signature: strstr_map_t & POST()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 187
      start: 187
    functionDepth: 0
    functionLinenumber: 187
    functionLinenumberEnd: 187
    functionName: '& COOKIES()'
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: strcookie_map_t
    signature: strcookie_map_t & COOKIES()
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Pkcs11Slot::logError
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp:194,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - version_
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 196
      start: 189
    functionDepth: 2
    functionLinenumber: 189
    functionLinenumberEnd: 196
    functionName: YaHTTP::HTTPBase::versionStr
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 4
    functionsReached:
    - Pkcs11Slot::logError
    linkageType: ''
    returnType: std::string
    signature: std::string versionStr(int version_) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::HTTPBase::write
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp:200,1
    - Dst: std::ostringstream::str
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp:201,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 202
      start: 198
    functionDepth: 0
    functionLinenumber: 198
    functionLinenumberEnd: 202
    functionName: YaHTTP::HTTPBase::str
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 0
    functionsReached:
    - YaHTTP::HTTPBase::write
    - std::ostringstream::str
    linkageType: ''
    returnType: std::string
    signature: std::string str() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::Response::initialize
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp:208,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 208
      start: 208
    functionDepth: 0
    functionLinenumber: 208
    functionLinenumberEnd: 208
    functionName: YaHTTP::Response::Response
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 2
    functionsReached:
    - YaHTTP::Response::initialize
    linkageType: ''
    returnType: void
    signature: void Response()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - HTTPBase
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 211
      start: 209
    functionDepth: 0
    functionLinenumber: 209
    functionLinenumberEnd: 211
    functionName: YaHTTP::Response::Response
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Response(const HTTPBase& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: HTTPBase::operator=
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp:213,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - HTTPBase
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 216
      start: 212
    functionDepth: 0
    functionLinenumber: 212
    functionLinenumberEnd: 216
    functionName: '& operator=(const HTTPBase& rhs) override'
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 0
    functionsReached:
    - HTTPBase::operator=
    linkageType: ''
    returnType: Response
    signature: Response & operator=(const HTTPBase& rhs) override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::HTTPBase::initialize
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp:218,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 220
      start: 217
    functionDepth: 0
    functionLinenumber: 217
    functionLinenumberEnd: 220
    functionName: YaHTTP::Response::initialize
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 3
    functionsReached:
    - YaHTTP::HTTPBase::initialize
    linkageType: ''
    returnType: void
    signature: void initialize() override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::HTTPBase::initialize
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp:222,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - HTTPBase
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 229
      start: 221
    functionDepth: 0
    functionLinenumber: 221
    functionLinenumberEnd: 229
    functionName: YaHTTP::Response::initialize
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 3
    functionsReached:
    - YaHTTP::HTTPBase::initialize
    linkageType: ''
    returnType: void
    signature: void initialize(const HTTPBase& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::Request::initialize
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp:237,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 237
      start: 237
    functionDepth: 0
    functionLinenumber: 237
    functionLinenumberEnd: 237
    functionName: YaHTTP::Request::Request
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 3
    functionsReached:
    - YaHTTP::Request::initialize
    linkageType: ''
    returnType: void
    signature: void Request()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - HTTPBase
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 240
      start: 238
    functionDepth: 0
    functionLinenumber: 238
    functionLinenumberEnd: 240
    functionName: YaHTTP::Request::Request
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Request(const HTTPBase& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: HTTPBase::operator=
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp:242,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - HTTPBase
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 245
      start: 241
    functionDepth: 0
    functionLinenumber: 241
    functionLinenumberEnd: 245
    functionName: '& operator=(const HTTPBase& rhs) override'
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 0
    functionsReached:
    - HTTPBase::operator=
    linkageType: ''
    returnType: Request
    signature: Request & operator=(const HTTPBase& rhs) override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::HTTPBase::initialize
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp:247,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 249
      start: 246
    functionDepth: 0
    functionLinenumber: 246
    functionLinenumberEnd: 249
    functionName: YaHTTP::Request::initialize
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 3
    functionsReached:
    - YaHTTP::HTTPBase::initialize
    linkageType: ''
    returnType: void
    signature: void initialize() override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::HTTPBase::initialize
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp:251,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - HTTPBase
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 258
      start: 250
    functionDepth: 0
    functionLinenumber: 250
    functionLinenumberEnd: 258
    functionName: YaHTTP::Request::initialize
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 3
    functionsReached:
    - YaHTTP::HTTPBase::initialize
    linkageType: ''
    returnType: void
    signature: void initialize(const HTTPBase& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::Request::url::parse
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp:260,1
    - Dst: YaHTTP::Request::url::host::find
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp:261,1
    - Dst: std::transform
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp:263,1
    - Dst: YaHTTP::Request::method::begin
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp:263,1
    - Dst: YaHTTP::Request::method::end
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp:263,1
    - Dst: YaHTTP::Request::method::begin
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp:263,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - ' method_'
    - ' url_'
    argTypes:
    - std::string
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 265
      start: 259
    functionDepth: 0
    functionLinenumber: 259
    functionLinenumberEnd: 265
    functionName: YaHTTP::Request::setup
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 0
    functionsReached:
    - std::transform
    - YaHTTP::Request::method::end
    - YaHTTP::Request::url::parse
    - YaHTTP::Request::method::begin
    - YaHTTP::Request::url::host::find
    linkageType: ''
    returnType: void
    signature: void setup(const std::string& method_, const std::string& url_)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: POST
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp:270,1
    - Dst: POST
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp:270,1
    - Dst: Utility::encodeURL
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp:271,1
    - Dst: Utility::encodeURL
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp:271,1
    - Dst: std::ostringstream::str
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp:274,1
    - Dst: std::ostringstream::str
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp:275,1
    - Dst: std::ostringstream::str
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp:275,1
    - Dst: POST
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp:282,1
    - Dst: POST
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp:282,1
    - Dst: Utility::encodeURL
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp:283,1
    - Dst: strstr_map_t::const_iterator::second::size
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp:283,1
    - Dst: Utility::encodeURL
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp:284,1
    - Dst: std::ostringstream::str
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp:287,1
    - Dst: std::ostringstream::str
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp:290,1
    - Dst: length
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp:291,1
    - Dst: std::ostringstream::str
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp:295,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 24
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 296
      start: 267
    functionDepth: 0
    functionLinenumber: 267
    functionLinenumberEnd: 296
    functionName: YaHTTP::Request::preparePost
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 0
    functionsReached:
    - length
    - POST
    - std::ostringstream::str
    - strstr_map_t::const_iterator::second::size
    - Utility::encodeURL
    linkageType: ''
    returnType: void
    signature: void preparePost(postformat_t format = urlencoded)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: str
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp:324,1
    - Dst: YaHTTP::AsyncLoader::target::initialize
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp:330,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 1
    argNames:
    - target_
    argTypes:
    - T*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 331
      start: 322
    functionDepth: 0
    functionLinenumber: 322
    functionLinenumberEnd: 331
    functionName: YaHTTP::AsyncLoader::initialize
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 0
    functionsReached:
    - YaHTTP::AsyncLoader::target::initialize
    - str
    linkageType: ''
    returnType: void
    signature: void initialize(T* target_)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 337
      start: 333
    functionDepth: 0
    functionLinenumber: 333
    functionLinenumberEnd: 337
    functionName: YaHTTP::AsyncLoader::ready
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool ready()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: flush
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp:339,1
    - Dst: YaHTTP::AsyncLoader::ready
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp:340,1
    - Dst: str
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp:341,1
    - Dst: headers::find
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp:342,1
    - Dst: headers::end
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp:343,1
    - Dst: Utility::iequals
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp:343,1
    - Dst: Utility::parseUrlParameters
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp:344,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp:346,1
    - Dst: str
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp:348,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 351
      start: 338
    functionDepth: 0
    functionLinenumber: 338
    functionLinenumberEnd: 351
    functionName: YaHTTP::AsyncLoader::finalize
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 0
    functionsReached:
    - std::move
    - Utility::iequals
    - YaHTTP::AsyncLoader::ready
    - Utility::parseUrlParameters
    - headers::end
    - str
    - headers::find
    - flush
    linkageType: ''
    returnType: void
    signature: void finalize()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 52
    functionDepth: 0
    functionLinenumber: 52
    functionLinenumberEnd: 52
    functionName: YaHTTP::HTTPBase::SendBodyRender::SendBodyRender
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void SendBodyRender()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: HTTPBase*::body::length
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp:57,1
    - Dst: std::min
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp:58,1
    - Dst: static_cast<std::string::size_type>
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp:58,1
    - Dst: HTTPBase*::body::length
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp:58,1
    - Dst: HTTPBase*::body::substr
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp:60,1
    - Dst: HTTPBase*::body::length
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp:66,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 3
    argNames:
    - doc
    - ' os'
    - chunked
    argTypes:
    - HTTPBase*
    - std::ostream
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 54
    functionDepth: 0
    functionLinenumber: 54
    functionLinenumberEnd: 67
    functionName: operator()(const HTTPBase *doc, std::ostream& os, bool chunked)
      const
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 0
    functionsReached:
    - HTTPBase*::body::length
    - std::min
    - static_cast<std::string::size_type>
    - HTTPBase*::body::substr
    linkageType: ''
    returnType: size_t
    signature: size_t operator()(const HTTPBase *doc, std::ostream& os, bool chunked)
      const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' path_'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 72
    functionDepth: 0
    functionLinenumber: 72
    functionLinenumberEnd: 74
    functionName: YaHTTP::HTTPBase::SendFileRender::SendFileRender
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void SendFileRender(const std::string& path_)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp:82,1
    - Dst: std::ifstream::good
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp:86,1
    - Dst: std::ifstream::read
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp:87,1
    - Dst: std::ifstream::gcount
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp:88,1
    - Dst: write
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp:91,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 3
    argNames:
    - doc
    - ' os'
    - chunked
    argTypes:
    - HTTPBase*
    - std::ostream
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 76
    functionDepth: 0
    functionLinenumber: 76
    functionLinenumberEnd: 97
    functionName: operator()(const HTTPBase *doc __attribute__((unused)), std::ostream&
      os, bool chunked) const
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 0
    functionsReached:
    - write
    - c_str
    - std::ifstream::read
    - std::ifstream::gcount
    - std::ifstream::good
    linkageType: ''
    returnType: size_t
    signature: size_t operator()(const HTTPBase *doc __attribute__((unused)), std::ostream&
      os, bool chunked) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::HTTPBase::initialize
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp:103,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 104
      start: 102
    functionDepth: 0
    functionLinenumber: 102
    functionLinenumberEnd: 104
    functionName: YaHTTP::HTTPBase::HTTPBase
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 0
    functionsReached:
    - YaHTTP::HTTPBase::initialize
    linkageType: ''
    returnType: void
    signature: void HTTPBase()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 105
    functionDepth: 0
    functionLinenumber: 105
    functionLinenumberEnd: 105
    functionName: ~HTTPBase()
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~HTTPBase()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SendBodyRender
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp:111,1
    - Dst: clear
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp:119,1
    - Dst: clear
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp:120,1
    - Dst: clear
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp:121,1
    - Dst: clear
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp:122,1
    - Dst: clear
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp:123,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 19
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 107
    functionDepth: 1
    functionLinenumber: 107
    functionLinenumberEnd: 128
    functionName: YaHTTP::HTTPBase::initialize
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 16
    functionsReached:
    - clear
    - SendBodyRender
    linkageType: ''
    returnType: void
    signature: void initialize()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 18
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - HTTPBase
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 143
      start: 130
    functionDepth: 0
    functionLinenumber: 130
    functionLinenumberEnd: 143
    functionName: YaHTTP::HTTPBase::HTTPBase
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void HTTPBase(const HTTPBase& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 19
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - HTTPBase
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 158
      start: 144
    functionDepth: 0
    functionLinenumber: 144
    functionLinenumberEnd: 158
    functionName: '& operator=(const HTTPBase& rhs)'
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: HTTPBase
    signature: HTTPBase & operator=(const HTTPBase& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 185
      start: 185
    functionDepth: 0
    functionLinenumber: 185
    functionLinenumberEnd: 185
    functionName: '& GET()'
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: strstr_map_t
    signature: strstr_map_t & GET()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 186
      start: 186
    functionDepth: 0
    functionLinenumber: 186
    functionLinenumberEnd: 186
    functionName: '& POST()'
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: strstr_map_t
    signature: strstr_map_t & POST()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 187
      start: 187
    functionDepth: 0
    functionLinenumber: 187
    functionLinenumberEnd: 187
    functionName: '& COOKIES()'
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: strcookie_map_t
    signature: strcookie_map_t & COOKIES()
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Pkcs11Slot::logError
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp:194,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - version_
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 196
      start: 189
    functionDepth: 2
    functionLinenumber: 189
    functionLinenumberEnd: 196
    functionName: YaHTTP::HTTPBase::versionStr
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 4
    functionsReached:
    - Pkcs11Slot::logError
    linkageType: ''
    returnType: std::string
    signature: std::string versionStr(int version_) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::HTTPBase::write
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp:200,1
    - Dst: std::ostringstream::str
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp:201,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 202
      start: 198
    functionDepth: 0
    functionLinenumber: 198
    functionLinenumberEnd: 202
    functionName: YaHTTP::HTTPBase::str
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 0
    functionsReached:
    - YaHTTP::HTTPBase::write
    - std::ostringstream::str
    linkageType: ''
    returnType: std::string
    signature: std::string str() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::Response::initialize
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp:208,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 208
      start: 208
    functionDepth: 0
    functionLinenumber: 208
    functionLinenumberEnd: 208
    functionName: YaHTTP::Response::Response
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 2
    functionsReached:
    - YaHTTP::Response::initialize
    linkageType: ''
    returnType: void
    signature: void Response()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - HTTPBase
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 211
      start: 209
    functionDepth: 0
    functionLinenumber: 209
    functionLinenumberEnd: 211
    functionName: YaHTTP::Response::Response
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Response(const HTTPBase& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: HTTPBase::operator=
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp:213,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - HTTPBase
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 216
      start: 212
    functionDepth: 0
    functionLinenumber: 212
    functionLinenumberEnd: 216
    functionName: '& operator=(const HTTPBase& rhs) override'
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 0
    functionsReached:
    - HTTPBase::operator=
    linkageType: ''
    returnType: Response
    signature: Response & operator=(const HTTPBase& rhs) override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::HTTPBase::initialize
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp:218,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 220
      start: 217
    functionDepth: 0
    functionLinenumber: 217
    functionLinenumberEnd: 220
    functionName: YaHTTP::Response::initialize
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 4
    functionsReached:
    - YaHTTP::HTTPBase::initialize
    linkageType: ''
    returnType: void
    signature: void initialize() override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::HTTPBase::initialize
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp:222,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - HTTPBase
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 229
      start: 221
    functionDepth: 0
    functionLinenumber: 221
    functionLinenumberEnd: 229
    functionName: YaHTTP::Response::initialize
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 4
    functionsReached:
    - YaHTTP::HTTPBase::initialize
    linkageType: ''
    returnType: void
    signature: void initialize(const HTTPBase& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::Request::initialize
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp:237,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 237
      start: 237
    functionDepth: 0
    functionLinenumber: 237
    functionLinenumberEnd: 237
    functionName: YaHTTP::Request::Request
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 3
    functionsReached:
    - YaHTTP::Request::initialize
    linkageType: ''
    returnType: void
    signature: void Request()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - HTTPBase
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 240
      start: 238
    functionDepth: 0
    functionLinenumber: 238
    functionLinenumberEnd: 240
    functionName: YaHTTP::Request::Request
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Request(const HTTPBase& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: HTTPBase::operator=
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp:242,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - HTTPBase
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 245
      start: 241
    functionDepth: 0
    functionLinenumber: 241
    functionLinenumberEnd: 245
    functionName: '& operator=(const HTTPBase& rhs) override'
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 0
    functionsReached:
    - HTTPBase::operator=
    linkageType: ''
    returnType: Request
    signature: Request & operator=(const HTTPBase& rhs) override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::HTTPBase::initialize
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp:247,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 249
      start: 246
    functionDepth: 0
    functionLinenumber: 246
    functionLinenumberEnd: 249
    functionName: YaHTTP::Request::initialize
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 4
    functionsReached:
    - YaHTTP::HTTPBase::initialize
    linkageType: ''
    returnType: void
    signature: void initialize() override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::HTTPBase::initialize
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp:251,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - HTTPBase
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 258
      start: 250
    functionDepth: 0
    functionLinenumber: 250
    functionLinenumberEnd: 258
    functionName: YaHTTP::Request::initialize
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 4
    functionsReached:
    - YaHTTP::HTTPBase::initialize
    linkageType: ''
    returnType: void
    signature: void initialize(const HTTPBase& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::Request::url::parse
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp:260,1
    - Dst: YaHTTP::Request::url::host::find
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp:261,1
    - Dst: std::transform
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp:263,1
    - Dst: YaHTTP::Request::method::begin
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp:263,1
    - Dst: YaHTTP::Request::method::end
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp:263,1
    - Dst: YaHTTP::Request::method::begin
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp:263,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - ' method_'
    - ' url_'
    argTypes:
    - std::string
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 265
      start: 259
    functionDepth: 0
    functionLinenumber: 259
    functionLinenumberEnd: 265
    functionName: YaHTTP::Request::setup
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 0
    functionsReached:
    - std::transform
    - YaHTTP::Request::method::end
    - YaHTTP::Request::url::parse
    - YaHTTP::Request::method::begin
    - YaHTTP::Request::url::host::find
    linkageType: ''
    returnType: void
    signature: void setup(const std::string& method_, const std::string& url_)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: POST
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp:270,1
    - Dst: POST
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp:270,1
    - Dst: Utility::encodeURL
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp:271,1
    - Dst: Utility::encodeURL
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp:271,1
    - Dst: std::ostringstream::str
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp:274,1
    - Dst: std::ostringstream::str
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp:275,1
    - Dst: std::ostringstream::str
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp:275,1
    - Dst: POST
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp:282,1
    - Dst: POST
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp:282,1
    - Dst: Utility::encodeURL
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp:283,1
    - Dst: strstr_map_t::const_iterator::second::size
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp:283,1
    - Dst: Utility::encodeURL
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp:284,1
    - Dst: std::ostringstream::str
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp:287,1
    - Dst: std::ostringstream::str
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp:290,1
    - Dst: length
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp:291,1
    - Dst: std::ostringstream::str
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp:295,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 24
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 296
      start: 267
    functionDepth: 0
    functionLinenumber: 267
    functionLinenumberEnd: 296
    functionName: YaHTTP::Request::preparePost
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 0
    functionsReached:
    - length
    - POST
    - std::ostringstream::str
    - strstr_map_t::const_iterator::second::size
    - Utility::encodeURL
    linkageType: ''
    returnType: void
    signature: void preparePost(postformat_t format = urlencoded)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: str
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp:324,1
    - Dst: YaHTTP::AsyncLoader::target::initialize
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp:330,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 1
    argNames:
    - target_
    argTypes:
    - T*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 331
      start: 322
    functionDepth: 0
    functionLinenumber: 322
    functionLinenumberEnd: 331
    functionName: YaHTTP::AsyncLoader::initialize
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 0
    functionsReached:
    - YaHTTP::AsyncLoader::target::initialize
    - str
    linkageType: ''
    returnType: void
    signature: void initialize(T* target_)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 337
      start: 333
    functionDepth: 0
    functionLinenumber: 333
    functionLinenumberEnd: 337
    functionName: YaHTTP::AsyncLoader::ready
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool ready()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: flush
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp:339,1
    - Dst: YaHTTP::AsyncLoader::ready
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp:340,1
    - Dst: str
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp:341,1
    - Dst: headers::find
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp:342,1
    - Dst: headers::end
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp:343,1
    - Dst: Utility::iequals
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp:343,1
    - Dst: Utility::parseUrlParameters
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp:344,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp:346,1
    - Dst: str
      Src: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp:348,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 351
      start: 338
    functionDepth: 0
    functionLinenumber: 338
    functionLinenumberEnd: 351
    functionName: YaHTTP::AsyncLoader::finalize
    functionSourceFile: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 0
    functionsReached:
    - std::move
    - Utility::iequals
    - YaHTTP::AsyncLoader::ready
    - Utility::parseUrlParameters
    - headers::end
    - str
    - headers::find
    - flush
    linkageType: ''
    returnType: void
    signature: void finalize()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 47
    functionDepth: 0
    functionLinenumber: 47
    functionLinenumberEnd: 47
    functionName: operator==(NullStruct /*unused*/) const
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool operator==(NullStruct /*unused*/) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 48
    functionDepth: 0
    functionLinenumber: 48
    functionLinenumberEnd: 48
    functionName: operator<(NullStruct /*unused*/) const
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool operator<(NullStruct /*unused*/) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - out
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 55
    functionDepth: 0
    functionLinenumber: 55
    functionLinenumberEnd: 57
    functionName: json11::dump
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void dump(NullStruct /*unused*/, string &out)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::isfinite
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:60,1
    - Dst: snprintf
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:62,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - value
    - out
    argTypes:
    - double
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 59
    functionDepth: 0
    functionLinenumber: 59
    functionLinenumberEnd: 67
    functionName: json11::dump
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 6
    functionsReached:
    - std::isfinite
    - snprintf
    linkageType: ''
    returnType: void
    signature: void dump(double value, string &out)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:71,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - value
    - out
    argTypes:
    - int
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 69
    functionDepth: 0
    functionLinenumber: 69
    functionLinenumberEnd: 73
    functionName: json11::dump
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 6
    functionsReached:
    - snprintf
    linkageType: ''
    returnType: void
    signature: void dump(int value, string &out)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - value
    - out
    argTypes:
    - bool
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 75
    functionDepth: 0
    functionLinenumber: 75
    functionLinenumberEnd: 77
    functionName: json11::dump
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void dump(bool value, string &out)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: string::length
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:81,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:97,1
    - Dst: snprintf
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:99,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:101,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:101,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:102,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:105,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:105,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:106,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 40
    argCount: 2
    argNames:
    - value
    - out
    argTypes:
    - string
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 79
    functionDepth: 0
    functionLinenumber: 79
    functionLinenumberEnd: 114
    functionName: json11::dump
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 6
    functionsReached:
    - string::length
    - snprintf
    - static_cast<uint8_t>
    linkageType: ''
    returnType: void
    signature: void dump(const string &value, string &out)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: json11::dump
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:122,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - values
    - out
    argTypes:
    - Json::array
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 116
    functionDepth: 0
    functionLinenumber: 116
    functionLinenumberEnd: 126
    functionName: json11::dump
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 7
    functionsReached:
    - json11::dump
    linkageType: ''
    returnType: void
    signature: void dump(const Json::array &values, string &out)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: json11::dump
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:134,1
    - Dst: second::dump
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:136,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - values
    - out
    argTypes:
    - Json::object
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 128
    functionDepth: 0
    functionLinenumber: 128
    functionLinenumberEnd: 140
    functionName: json11::dump
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 8
    functionsReached:
    - json11::dump
    - second::dump
    linkageType: ''
    returnType: void
    signature: void dump(const Json::object &values, string &out)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json11::Json::dump
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:143,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - out
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 144
      start: 142
    functionDepth: 0
    functionLinenumber: 142
    functionLinenumberEnd: 144
    functionName: json11::Json::dump
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 11
    functionsReached:
    - json11::Json::dump
    linkageType: ''
    returnType: void
    signature: void Json::dump(string &out) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - value
    argTypes:
    - T
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 155
    functionDepth: 0
    functionLinenumber: 155
    functionLinenumberEnd: 155
    functionName: json11::Value::Value
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Value(const T &value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:156,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 1
    argNames:
    - value
    argTypes:
    - T
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 156
      start: 156
    functionDepth: 0
    functionLinenumber: 156
    functionLinenumberEnd: 156
    functionName: json11::Value::Value
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void Value(T &&value)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 161
      start: 159
    functionDepth: 0
    functionLinenumber: 159
    functionLinenumberEnd: 161
    functionName: json11::Value::type
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Json::Type
    signature: Json::Type type() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<const Value<tag, T> *>
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:165,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - other
    argTypes:
    - JsonValue*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 166
      start: 164
    functionDepth: 0
    functionLinenumber: 164
    functionLinenumberEnd: 166
    functionName: json11::Value::equals
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - static_cast<const Value<tag, T> *>
    linkageType: ''
    returnType: bool
    signature: bool equals(const JsonValue * other) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<const Value<tag, T> *>
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:168,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - other
    argTypes:
    - JsonValue*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 169
      start: 167
    functionDepth: 0
    functionLinenumber: 167
    functionLinenumberEnd: 169
    functionName: json11::Value::less
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - static_cast<const Value<tag, T> *>
    linkageType: ''
    returnType: bool
    signature: bool less(const JsonValue * other) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json11::dump
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:172,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - out
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 172
      start: 172
    functionDepth: 0
    functionLinenumber: 172
    functionLinenumberEnd: 172
    functionName: json11::Value::dump
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - json11::dump
    linkageType: ''
    returnType: void
    signature: void dump(string &out) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 176
      start: 176
    functionDepth: 0
    functionLinenumber: 176
    functionLinenumberEnd: 176
    functionName: json11::JsonDouble::number_value
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: double
    signature: double number_value() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:177,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 177
      start: 177
    functionDepth: 0
    functionLinenumber: 177
    functionLinenumberEnd: 177
    functionName: json11::JsonDouble::int_value
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - static_cast<int>
    linkageType: ''
    returnType: int
    signature: int int_value() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: JsonValue*::number_value
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:178,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - other
    argTypes:
    - JsonValue*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 178
      start: 178
    functionDepth: 0
    functionLinenumber: 178
    functionLinenumberEnd: 178
    functionName: json11::JsonDouble::equals
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - JsonValue*::number_value
    linkageType: ''
    returnType: bool
    signature: bool equals(const JsonValue * other) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: JsonValue*::number_value
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:179,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - other
    argTypes:
    - JsonValue*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 179
      start: 179
    functionDepth: 0
    functionLinenumber: 179
    functionLinenumberEnd: 179
    functionName: json11::JsonDouble::less
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - JsonValue*::number_value
    linkageType: ''
    returnType: bool
    signature: bool less(const JsonValue * other)   const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - value
    argTypes:
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 181
      start: 181
    functionDepth: 0
    functionLinenumber: 181
    functionLinenumberEnd: 181
    functionName: json11::JsonDouble::JsonDouble
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void JsonDouble(double value)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 185
      start: 185
    functionDepth: 0
    functionLinenumber: 185
    functionLinenumberEnd: 185
    functionName: json11::JsonInt::number_value
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: double
    signature: double number_value() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 186
      start: 186
    functionDepth: 0
    functionLinenumber: 186
    functionLinenumberEnd: 186
    functionName: json11::JsonInt::int_value
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int int_value() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: JsonValue*::number_value
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:187,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - other
    argTypes:
    - JsonValue*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 187
      start: 187
    functionDepth: 0
    functionLinenumber: 187
    functionLinenumberEnd: 187
    functionName: json11::JsonInt::equals
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - JsonValue*::number_value
    linkageType: ''
    returnType: bool
    signature: bool equals(const JsonValue * other) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: JsonValue*::number_value
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:188,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - other
    argTypes:
    - JsonValue*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 188
      start: 188
    functionDepth: 0
    functionLinenumber: 188
    functionLinenumberEnd: 188
    functionName: json11::JsonInt::less
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - JsonValue*::number_value
    linkageType: ''
    returnType: bool
    signature: bool less(const JsonValue * other)   const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - value
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 190
      start: 190
    functionDepth: 0
    functionLinenumber: 190
    functionLinenumberEnd: 190
    functionName: json11::JsonInt::JsonInt
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void JsonInt(int value)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 194
      start: 194
    functionDepth: 0
    functionLinenumber: 194
    functionLinenumberEnd: 194
    functionName: json11::JsonBoolean::bool_value
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool bool_value() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - value
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 196
      start: 196
    functionDepth: 0
    functionLinenumber: 196
    functionLinenumberEnd: 196
    functionName: json11::JsonBoolean::JsonBoolean
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void JsonBoolean(bool value)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 200
      start: 200
    functionDepth: 0
    functionLinenumber: 200
    functionLinenumberEnd: 200
    functionName: '&string_value() const override'
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: string
    signature: string &string_value() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - value
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 202
      start: 202
    functionDepth: 0
    functionLinenumber: 202
    functionLinenumberEnd: 202
    functionName: json11::JsonString::JsonString
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void JsonString(const string &value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:203,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 1
    argNames:
    - value
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 203
      start: 203
    functionDepth: 0
    functionLinenumber: 203
    functionLinenumberEnd: 203
    functionName: json11::JsonString::JsonString
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void JsonString(string &&value)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 207
      start: 207
    functionDepth: 0
    functionLinenumber: 207
    functionLinenumberEnd: 207
    functionName: '&array_items() const override'
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Json::array
    signature: Json::array &array_items() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - value
    argTypes:
    - Json::array
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 210
      start: 210
    functionDepth: 0
    functionLinenumber: 210
    functionLinenumberEnd: 210
    functionName: json11::JsonArray::JsonArray
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void JsonArray(const Json::array &value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:211,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 1
    argNames:
    - value
    argTypes:
    - Json::array
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 211
      start: 211
    functionDepth: 0
    functionLinenumber: 211
    functionLinenumberEnd: 211
    functionName: json11::JsonArray::JsonArray
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void JsonArray(Json::array &&value)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 215
      start: 215
    functionDepth: 0
    functionLinenumber: 215
    functionLinenumberEnd: 215
    functionName: '&object_items() const override'
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Json::object
    signature: Json::object &object_items() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - value
    argTypes:
    - Json::object
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 218
      start: 218
    functionDepth: 0
    functionLinenumber: 218
    functionLinenumberEnd: 218
    functionName: json11::JsonObject::JsonObject
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void JsonObject(const Json::object &value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:219,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 1
    argNames:
    - value
    argTypes:
    - Json::object
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 219
      start: 219
    functionDepth: 0
    functionLinenumber: 219
    functionLinenumberEnd: 219
    functionName: json11::JsonObject::JsonObject
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void JsonObject(Json::object &&value)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 224
      start: 224
    functionDepth: 0
    functionLinenumber: 224
    functionLinenumberEnd: 224
    functionName: json11::JsonNull::JsonNull
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void JsonNull()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 237
      start: 237
    functionDepth: 0
    functionLinenumber: 237
    functionLinenumberEnd: 237
    functionName: json11::Statics
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Statics()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 243
      start: 240
    functionDepth: 0
    functionLinenumber: 240
    functionLinenumberEnd: 243
    functionName: json11::statics
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Statics
    signature: Statics & statics()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 249
      start: 245
    functionDepth: 0
    functionLinenumber: 245
    functionLinenumberEnd: 249
    functionName: json11::static_null
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Json
    signature: Json & static_null()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: statics
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:255,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 255
      start: 255
    functionDepth: 0
    functionLinenumber: 255
    functionLinenumberEnd: 255
    functionName: json11::Json::Json
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - statics
    linkageType: ''
    returnType: void
    signature: void Json::Json() noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: statics
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:256,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 256
      start: 256
    functionDepth: 0
    functionLinenumber: 256
    functionLinenumberEnd: 256
    functionName: json11::Json::Json
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - statics
    linkageType: ''
    returnType: void
    signature: void Json::Json(std::nullptr_t) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: make_shared<JsonDouble>
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:257,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - value
    argTypes:
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 257
      start: 257
    functionDepth: 0
    functionLinenumber: 257
    functionLinenumberEnd: 257
    functionName: json11::Json::Json
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - make_shared<JsonDouble>
    linkageType: ''
    returnType: void
    signature: void Json::Json(double value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: make_shared<JsonInt>
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:258,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - value
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 258
      start: 258
    functionDepth: 0
    functionLinenumber: 258
    functionLinenumberEnd: 258
    functionName: json11::Json::Json
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - make_shared<JsonInt>
    linkageType: ''
    returnType: void
    signature: void Json::Json(int value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: statics
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:259,1
    - Dst: statics
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:259,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - value
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 259
      start: 259
    functionDepth: 0
    functionLinenumber: 259
    functionLinenumberEnd: 259
    functionName: json11::Json::Json
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - statics
    linkageType: ''
    returnType: void
    signature: void Json::Json(bool value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: make_shared<JsonString>
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:260,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - value
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 260
      start: 260
    functionDepth: 0
    functionLinenumber: 260
    functionLinenumberEnd: 260
    functionName: json11::Json::Json
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - make_shared<JsonString>
    linkageType: ''
    returnType: void
    signature: void Json::Json(const string &value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: make_shared<JsonString>
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:261,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:261,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 1
    argNames:
    - value
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 261
      start: 261
    functionDepth: 0
    functionLinenumber: 261
    functionLinenumberEnd: 261
    functionName: json11::Json::Json
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - std::move
    - make_shared<JsonString>
    linkageType: ''
    returnType: void
    signature: void Json::Json(string &&value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: make_shared<JsonString>
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:262,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - value
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 262
      start: 262
    functionDepth: 0
    functionLinenumber: 262
    functionLinenumberEnd: 262
    functionName: json11::Json::Json
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - make_shared<JsonString>
    linkageType: ''
    returnType: void
    signature: void Json::Json(const char * value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: make_shared<JsonArray>
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:263,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - values
    argTypes:
    - Json::array
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 263
      start: 263
    functionDepth: 0
    functionLinenumber: 263
    functionLinenumberEnd: 263
    functionName: json11::Json::Json
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - make_shared<JsonArray>
    linkageType: ''
    returnType: void
    signature: void Json::Json(const Json::array &values)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: make_shared<JsonArray>
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:264,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:264,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 1
    argNames:
    - values
    argTypes:
    - Json::array
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 264
      start: 264
    functionDepth: 0
    functionLinenumber: 264
    functionLinenumberEnd: 264
    functionName: json11::Json::Json
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - std::move
    - make_shared<JsonArray>
    linkageType: ''
    returnType: void
    signature: void Json::Json(Json::array &&values)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: make_shared<JsonObject>
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:265,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - values
    argTypes:
    - Json::object
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 265
      start: 265
    functionDepth: 0
    functionLinenumber: 265
    functionLinenumberEnd: 265
    functionName: json11::Json::Json
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - make_shared<JsonObject>
    linkageType: ''
    returnType: void
    signature: void Json::Json(const Json::object &values)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: make_shared<JsonObject>
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:266,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:266,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 1
    argNames:
    - values
    argTypes:
    - Json::object
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 266
      start: 266
    functionDepth: 0
    functionLinenumber: 266
    functionLinenumberEnd: 266
    functionName: json11::Json::Json
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - make_shared<JsonObject>
    - std::move
    linkageType: ''
    returnType: void
    signature: void Json::Json(Json::object &&values)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json11::Json::type
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:272,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 272
      start: 272
    functionDepth: 0
    functionLinenumber: 272
    functionLinenumberEnd: 272
    functionName: json11::Json::type
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 15
    functionsReached:
    - json11::Json::type
    linkageType: ''
    returnType: Json::Type
    signature: Json::Type Json::type()                           const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json11::Json::number_value
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:273,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 273
      start: 273
    functionDepth: 0
    functionLinenumber: 273
    functionLinenumberEnd: 273
    functionName: json11::Json::number_value
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 3
    functionsReached:
    - json11::Json::number_value
    linkageType: ''
    returnType: double
    signature: double Json::number_value()                       const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json11::Json::int_value
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:274,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 274
      start: 274
    functionDepth: 0
    functionLinenumber: 274
    functionLinenumberEnd: 274
    functionName: json11::Json::int_value
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 3
    functionsReached:
    - json11::Json::int_value
    linkageType: ''
    returnType: int
    signature: int Json::int_value()                             const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json11::Json::bool_value
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:275,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 275
      start: 275
    functionDepth: 0
    functionLinenumber: 275
    functionLinenumberEnd: 275
    functionName: json11::Json::bool_value
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 3
    functionsReached:
    - json11::Json::bool_value
    linkageType: ''
    returnType: bool
    signature: bool Json::bool_value()                           const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: string_value
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:276,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 276
      start: 276
    functionDepth: 0
    functionLinenumber: 276
    functionLinenumberEnd: 276
    functionName: '& Json::string_value()               const'
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - string_value
    linkageType: ''
    returnType: string
    signature: string & Json::string_value()               const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_items
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:277,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 277
      start: 277
    functionDepth: 0
    functionLinenumber: 277
    functionLinenumberEnd: 277
    functionName: '& Json::array_items()          const'
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - array_items
    linkageType: ''
    returnType: vector<Json>
    signature: vector<Json> & Json::array_items()          const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: object_items
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:278,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 278
      start: 278
    functionDepth: 0
    functionLinenumber: 278
    functionLinenumberEnd: 278
    functionName: '& Json::object_items()    const'
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - object_items
    linkageType: ''
    returnType: map<string, Json>
    signature: map<string, Json> & Json::object_items()    const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - i
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 279
      start: 279
    functionDepth: 0
    functionLinenumber: 279
    functionLinenumberEnd: 279
    functionName: '& Json::operator[] (size_t i)          const'
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Json
    signature: Json & Json::operator[] (size_t i)          const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - key
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 280
      start: 280
    functionDepth: 0
    functionLinenumber: 280
    functionLinenumberEnd: 280
    functionName: '& Json::operator[] (const string &key) const'
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Json
    signature: Json & Json::operator[] (const string &key) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 282
      start: 282
    functionDepth: 0
    functionLinenumber: 282
    functionLinenumberEnd: 282
    functionName: json11::JsonValue::number_value
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: double
    signature: double JsonValue::number_value()              const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 283
      start: 283
    functionDepth: 0
    functionLinenumber: 283
    functionLinenumberEnd: 283
    functionName: json11::JsonValue::int_value
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int JsonValue::int_value()                 const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 284
      start: 284
    functionDepth: 0
    functionLinenumber: 284
    functionLinenumberEnd: 284
    functionName: json11::JsonValue::bool_value
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool JsonValue::bool_value()                const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: statics
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:285,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 285
      start: 285
    functionDepth: 0
    functionLinenumber: 285
    functionLinenumberEnd: 285
    functionName: '&            JsonValue::string_value()              const'
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - statics
    linkageType: ''
    returnType: string
    signature: string &            JsonValue::string_value()              const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: statics
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:286,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 286
      start: 286
    functionDepth: 0
    functionLinenumber: 286
    functionLinenumberEnd: 286
    functionName: '&      JsonValue::array_items()               const'
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - statics
    linkageType: ''
    returnType: vector<Json>
    signature: vector<Json> &      JsonValue::array_items()               const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: statics
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:287,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 287
      start: 287
    functionDepth: 0
    functionLinenumber: 287
    functionLinenumberEnd: 287
    functionName: '& JsonValue::object_items()              const'
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - statics
    linkageType: ''
    returnType: map<string, Json>
    signature: map<string, Json> & JsonValue::object_items()              const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_null
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:288,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 288
      start: 288
    functionDepth: 0
    functionLinenumber: 288
    functionLinenumberEnd: 288
    functionName: '&              JsonValue::operator[] (size_t)         const'
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - static_null
    linkageType: ''
    returnType: Json
    signature: Json &              JsonValue::operator[] (size_t)         const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_null
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:289,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 289
      start: 289
    functionDepth: 0
    functionLinenumber: 289
    functionLinenumberEnd: 289
    functionName: '&              JsonValue::operator[] (const string &) const'
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - static_null
    linkageType: ''
    returnType: Json
    signature: Json &              JsonValue::operator[] (const string &) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: find
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:292,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:293,1
    - Dst: static_null
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:293,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - key
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 294
      start: 291
    functionDepth: 0
    functionLinenumber: 291
    functionLinenumberEnd: 294
    functionName: '& JsonObject::operator[] (const string &key) const'
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - static_null
    - end
    - find
    linkageType: ''
    returnType: Json
    signature: Json & JsonObject::operator[] (const string &key) const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:296,1
    - Dst: static_null
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:296,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - i
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 298
      start: 295
    functionDepth: 0
    functionLinenumber: 295
    functionLinenumberEnd: 298
    functionName: '& JsonArray::operator[] (size_t i) const'
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - static_null
    - size
    linkageType: ''
    returnType: Json
    signature: Json & JsonArray::operator[] (size_t i) const
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: type
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:308,1
    - Dst: Json::m_ptr::type
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:308,1
    - Dst: equals
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:312,1
    - Dst: Json::m_ptr::get
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:312,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - other
    argTypes:
    - Json
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 313
      start: 304
    functionDepth: 0
    functionLinenumber: 304
    functionLinenumberEnd: 313
    functionName: Json::operator== (const Json &other) const
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - Json::m_ptr::type
    - equals
    - Json::m_ptr::get
    - type
    linkageType: ''
    returnType: bool
    signature: bool Json::operator== (const Json &other) const
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: type
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:319,1
    - Dst: Json::m_ptr::type
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:319,1
    - Dst: type
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:320,1
    - Dst: Json::m_ptr::type
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:320,1
    - Dst: less
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:323,1
    - Dst: Json::m_ptr::get
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:323,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - other
    argTypes:
    - Json
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 324
      start: 315
    functionDepth: 0
    functionLinenumber: 315
    functionLinenumberEnd: 324
    functionName: Json::operator< (const Json &other) const
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - Json::m_ptr::type
    - less
    - Json::m_ptr::get
    - type
    linkageType: ''
    returnType: bool
    signature: bool Json::operator< (const Json &other) const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:336,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:336,1
    - Dst: snprintf
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:337,1
    - Dst: snprintf
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:339,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:341,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - c
    argTypes:
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 342
      start: 334
    functionDepth: 0
    functionLinenumber: 334
    functionLinenumberEnd: 342
    functionName: json11::esc
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 12
    functionsReached:
    - string
    - snprintf
    - static_cast<uint8_t>
    linkageType: ''
    returnType: string
    signature: string esc(char c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 3
    argNames:
    - x
    - lower
    - upper
    argTypes:
    - long
    - long
    - long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 346
      start: 344
    functionDepth: 0
    functionLinenumber: 344
    functionLinenumberEnd: 346
    functionName: json11::in_range
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 8
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool in_range(long x, long lower, long upper)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json11::fail
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:368,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:368,1
    - Dst: Json
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:368,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - msg
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 369
      start: 367
    functionDepth: 0
    functionLinenumber: 367
    functionLinenumberEnd: 369
    functionName: json11::fail
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 29
    functionsReached:
    - json11::fail
    - std::move
    - Json
    linkageType: ''
    returnType: Json
    signature: Json fail(string &&msg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:374,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - msg
    - err_ret
    argTypes:
    - string
    - T
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 377
      start: 372
    functionDepth: 0
    functionLinenumber: 372
    functionLinenumberEnd: 377
    functionName: json11::fail
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 29
    functionsReached:
    - std::move
    linkageType: ''
    returnType: T
    signature: T fail(string &&msg, const T err_ret)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 386
      start: 383
    functionDepth: 0
    functionLinenumber: 383
    functionLinenumberEnd: 386
    functionName: json11::consume_whitespace
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void consume_whitespace()
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:396,1
    - Dst: json11::fail
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:397,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:401,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:408,1
    - Dst: json11::fail
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:409,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:413,1
    - Dst: json11::fail
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:414,1
    - Dst: json11::fail
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:421,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 27
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 424
      start: 392
    functionDepth: 0
    functionLinenumber: 392
    functionLinenumberEnd: 424
    functionName: json11::consume_comment
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 4
    functionsReached:
    - json11::fail
    - size
    linkageType: ''
    returnType: bool
    signature: bool consume_comment()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: json11::consume_whitespace
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:431,1
    - Dst: json11::consume_comment
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:435,1
    - Dst: json11::consume_whitespace
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:439,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 443
      start: 430
    functionDepth: 0
    functionLinenumber: 430
    functionLinenumberEnd: 443
    functionName: json11::consume_garbage
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 4
    functionsReached:
    - json11::consume_comment
    - json11::consume_whitespace
    linkageType: ''
    returnType: void
    signature: void consume_garbage()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: json11::consume_garbage
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:451,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:455,1
    - Dst: json11::fail
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:456,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 460
      start: 450
    functionDepth: 0
    functionLinenumber: 450
    functionLinenumberEnd: 460
    functionName: json11::get_next_token
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 4
    functionsReached:
    - json11::fail
    - size
    - json11::consume_garbage
    linkageType: ''
    returnType: char
    signature: char get_next_token()
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<char>
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:471,1
    - Dst: static_cast<char>
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:473,1
    - Dst: static_cast<char>
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:474,1
    - Dst: static_cast<char>
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:476,1
    - Dst: static_cast<char>
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:477,1
    - Dst: static_cast<char>
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:478,1
    - Dst: static_cast<char>
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:480,1
    - Dst: static_cast<char>
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:481,1
    - Dst: static_cast<char>
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:482,1
    - Dst: static_cast<char>
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:483,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 2
    argNames:
    - pt
    - ' out'
    argTypes:
    - long
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 485
      start: 466
    functionDepth: 0
    functionLinenumber: 466
    functionLinenumberEnd: 485
    functionName: json11::encode_utf8
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 4
    functionsReached:
    - static_cast<char>
    linkageType: ''
    returnType: void
    signature: void encode_utf8(long pt, string & out)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:495,1
    - Dst: json11::fail
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:496,1
    - Dst: json11::encode_utf8
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:501,1
    - Dst: json11::in_range
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:505,1
    - Dst: json11::fail
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:506,1
    - Dst: json11::esc
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:506,1
    - Dst: json11::encode_utf8
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:510,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:517,1
    - Dst: json11::fail
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:518,1
    - Dst: substr
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:524,1
    - Dst: string::length
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:528,1
    - Dst: json11::fail
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:529,1
    - Dst: json11::in_range
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:532,1
    - Dst: json11::in_range
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:532,1
    - Dst: json11::in_range
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:533,1
    - Dst: json11::fail
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:534,1
    - Dst: strtol
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:537,1
    - Dst: string::data
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:537,1
    - Dst: json11::in_range
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:543,1
    - Dst: json11::in_range
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:544,1
    - Dst: json11::encode_utf8
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:547,1
    - Dst: json11::encode_utf8
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:551,1
    - Dst: json11::encode_utf8
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:559,1
    - Dst: json11::fail
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:575,1
    - Dst: json11::esc
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:575,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 60
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 578
      start: 491
    functionDepth: 0
    functionLinenumber: 491
    functionLinenumberEnd: 578
    functionName: json11::parse_string
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 4
    functionsReached:
    - string::data
    - strtol
    - size
    - substr
    - json11::encode_utf8
    - json11::in_range
    - json11::fail
    - json11::esc
    - string::length
    linkageType: ''
    returnType: string
    signature: string parse_string()
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: json11::in_range
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:593,1
    - Dst: json11::fail
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:594,1
    - Dst: json11::in_range
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:595,1
    - Dst: json11::in_range
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:597,1
    - Dst: json11::fail
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:600,1
    - Dst: json11::esc
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:600,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:604,1
    - Dst: std::atoi
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:605,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:605,1
    - Dst: json11::in_range
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:611,1
    - Dst: json11::fail
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:612,1
    - Dst: json11::in_range
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:614,1
    - Dst: json11::in_range
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:625,1
    - Dst: json11::fail
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:626,1
    - Dst: json11::in_range
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:628,1
    - Dst: std::strtod
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:632,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:632,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 35
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 633
      start: 584
    functionDepth: 0
    functionLinenumber: 584
    functionLinenumberEnd: 633
    functionName: json11::parse_number
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 4
    functionsReached:
    - static_cast<size_t>
    - c_str
    - json11::in_range
    - std::strtod
    - json11::fail
    - json11::esc
    - std::atoi
    linkageType: ''
    returnType: Json
    signature: Json parse_number()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:641,1
    - Dst: compare
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:643,1
    - Dst: string::length
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:643,1
    - Dst: string::length
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:644,1
    - Dst: json11::fail
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:647,1
    - Dst: substr
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:647,1
    - Dst: string::length
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:647,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - expected
    - res
    argTypes:
    - string
    - Json
    assertStmts:
    - condition: (i != 0)
      pos:
        line_end: 640
        line_start: 640
        source_file: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    constantsTouched: []
    func_position:
      end: 649
      start: 640
    functionDepth: 0
    functionLinenumber: 640
    functionLinenumberEnd: 649
    functionName: json11::expect
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 4
    functionsReached:
    - assert
    - compare
    - substr
    - json11::fail
    - string::length
    linkageType: ''
    returnType: Json
    signature: Json expect(const string &expected, Json res)
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: json11::fail
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:657,1
    - Dst: json11::get_next_token
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:660,1
    - Dst: Json
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:662,1
    - Dst: json11::parse_number
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:666,1
    - Dst: json11::expect
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:670,1
    - Dst: json11::expect
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:673,1
    - Dst: json11::expect
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:676,1
    - Dst: Json
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:676,1
    - Dst: json11::parse_string
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:679,1
    - Dst: json11::get_next_token
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:683,1
    - Dst: json11::fail
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:689,1
    - Dst: json11::esc
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:689,1
    - Dst: json11::parse_string
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:691,1
    - Dst: Json
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:693,1
    - Dst: json11::get_next_token
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:695,1
    - Dst: json11::fail
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:697,1
    - Dst: json11::esc
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:697,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:699,1
    - Dst: json11::parse_json
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:699,1
    - Dst: Json
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:701,1
    - Dst: json11::get_next_token
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:703,1
    - Dst: json11::fail
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:707,1
    - Dst: json11::esc
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:707,1
    - Dst: json11::get_next_token
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:709,1
    - Dst: json11::get_next_token
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:716,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:722,1
    - Dst: json11::parse_json
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:722,1
    - Dst: Json
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:724,1
    - Dst: json11::get_next_token
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:726,1
    - Dst: json11::fail
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:730,1
    - Dst: json11::esc
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:730,1
    - Dst: json11::get_next_token
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:732,1
    - Dst: json11::fail
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:738,1
    - Dst: json11::esc
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:738,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 62
    argCount: 1
    argNames:
    - depth
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 739
      start: 655
    functionDepth: 0
    functionLinenumber: 655
    functionLinenumberEnd: 739
    functionName: json11::parse_json
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 5
    functionsReached:
    - std::move
    - json11::parse_number
    - vector::push_back
    - json11::expect
    - json11::get_next_token
    - json11::parse_json
    - json11::parse_string
    - json11::fail
    - json11::esc
    - Json
    linkageType: ''
    returnType: Json
    signature: Json parse_json(int depth)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json11::fail
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:368,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:368,1
    - Dst: Json
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:368,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - msg
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 369
      start: 367
    functionDepth: 0
    functionLinenumber: 367
    functionLinenumberEnd: 369
    functionName: json11::fail
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 36
    functionsReached:
    - json11::fail
    - std::move
    - Json
    linkageType: ''
    returnType: Json
    signature: Json fail(string &&msg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:374,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - msg
    - err_ret
    argTypes:
    - string
    - T
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 377
      start: 372
    functionDepth: 0
    functionLinenumber: 372
    functionLinenumberEnd: 377
    functionName: json11::fail
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 36
    functionsReached:
    - std::move
    linkageType: ''
    returnType: T
    signature: T fail(string &&msg, const T err_ret)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 386
      start: 383
    functionDepth: 0
    functionLinenumber: 383
    functionLinenumberEnd: 386
    functionName: json11::consume_whitespace
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void consume_whitespace()
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:396,1
    - Dst: json11::fail
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:397,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:401,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:408,1
    - Dst: json11::fail
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:409,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:413,1
    - Dst: json11::fail
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:414,1
    - Dst: json11::fail
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:421,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 27
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 424
      start: 392
    functionDepth: 0
    functionLinenumber: 392
    functionLinenumberEnd: 424
    functionName: json11::consume_comment
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 5
    functionsReached:
    - json11::fail
    - size
    linkageType: ''
    returnType: bool
    signature: bool consume_comment()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: json11::consume_whitespace
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:431,1
    - Dst: json11::consume_comment
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:435,1
    - Dst: json11::consume_whitespace
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:439,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 443
      start: 430
    functionDepth: 0
    functionLinenumber: 430
    functionLinenumberEnd: 443
    functionName: json11::consume_garbage
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 5
    functionsReached:
    - json11::consume_comment
    - json11::consume_whitespace
    linkageType: ''
    returnType: void
    signature: void consume_garbage()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: json11::consume_garbage
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:451,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:455,1
    - Dst: json11::fail
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:456,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 460
      start: 450
    functionDepth: 0
    functionLinenumber: 450
    functionLinenumberEnd: 460
    functionName: json11::get_next_token
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 5
    functionsReached:
    - json11::fail
    - size
    - json11::consume_garbage
    linkageType: ''
    returnType: char
    signature: char get_next_token()
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<char>
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:471,1
    - Dst: static_cast<char>
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:473,1
    - Dst: static_cast<char>
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:474,1
    - Dst: static_cast<char>
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:476,1
    - Dst: static_cast<char>
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:477,1
    - Dst: static_cast<char>
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:478,1
    - Dst: static_cast<char>
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:480,1
    - Dst: static_cast<char>
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:481,1
    - Dst: static_cast<char>
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:482,1
    - Dst: static_cast<char>
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:483,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 2
    argNames:
    - pt
    - ' out'
    argTypes:
    - long
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 485
      start: 466
    functionDepth: 0
    functionLinenumber: 466
    functionLinenumberEnd: 485
    functionName: json11::encode_utf8
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 5
    functionsReached:
    - static_cast<char>
    linkageType: ''
    returnType: void
    signature: void encode_utf8(long pt, string & out)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:495,1
    - Dst: json11::fail
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:496,1
    - Dst: json11::encode_utf8
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:501,1
    - Dst: json11::in_range
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:505,1
    - Dst: json11::fail
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:506,1
    - Dst: json11::esc
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:506,1
    - Dst: json11::encode_utf8
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:510,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:517,1
    - Dst: json11::fail
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:518,1
    - Dst: substr
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:524,1
    - Dst: string::length
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:528,1
    - Dst: json11::fail
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:529,1
    - Dst: json11::in_range
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:532,1
    - Dst: json11::in_range
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:532,1
    - Dst: json11::in_range
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:533,1
    - Dst: json11::fail
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:534,1
    - Dst: strtol
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:537,1
    - Dst: string::data
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:537,1
    - Dst: json11::in_range
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:543,1
    - Dst: json11::in_range
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:544,1
    - Dst: json11::encode_utf8
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:547,1
    - Dst: json11::encode_utf8
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:551,1
    - Dst: json11::encode_utf8
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:559,1
    - Dst: json11::fail
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:575,1
    - Dst: json11::esc
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:575,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 60
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 578
      start: 491
    functionDepth: 0
    functionLinenumber: 491
    functionLinenumberEnd: 578
    functionName: json11::parse_string
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 5
    functionsReached:
    - string::data
    - strtol
    - size
    - substr
    - json11::encode_utf8
    - json11::in_range
    - json11::fail
    - json11::esc
    - string::length
    linkageType: ''
    returnType: string
    signature: string parse_string()
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: json11::in_range
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:593,1
    - Dst: json11::fail
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:594,1
    - Dst: json11::in_range
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:595,1
    - Dst: json11::in_range
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:597,1
    - Dst: json11::fail
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:600,1
    - Dst: json11::esc
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:600,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:604,1
    - Dst: std::atoi
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:605,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:605,1
    - Dst: json11::in_range
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:611,1
    - Dst: json11::fail
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:612,1
    - Dst: json11::in_range
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:614,1
    - Dst: json11::in_range
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:625,1
    - Dst: json11::fail
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:626,1
    - Dst: json11::in_range
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:628,1
    - Dst: std::strtod
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:632,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:632,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 35
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 633
      start: 584
    functionDepth: 0
    functionLinenumber: 584
    functionLinenumberEnd: 633
    functionName: json11::parse_number
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 5
    functionsReached:
    - static_cast<size_t>
    - c_str
    - json11::in_range
    - std::strtod
    - json11::fail
    - json11::esc
    - std::atoi
    linkageType: ''
    returnType: Json
    signature: Json parse_number()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:641,1
    - Dst: compare
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:643,1
    - Dst: string::length
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:643,1
    - Dst: string::length
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:644,1
    - Dst: json11::fail
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:647,1
    - Dst: substr
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:647,1
    - Dst: string::length
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:647,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - expected
    - res
    argTypes:
    - string
    - Json
    assertStmts:
    - condition: (i != 0)
      pos:
        line_end: 640
        line_start: 640
        source_file: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    constantsTouched: []
    func_position:
      end: 649
      start: 640
    functionDepth: 0
    functionLinenumber: 640
    functionLinenumberEnd: 649
    functionName: json11::expect
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 5
    functionsReached:
    - assert
    - compare
    - substr
    - json11::fail
    - string::length
    linkageType: ''
    returnType: Json
    signature: Json expect(const string &expected, Json res)
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: json11::fail
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:657,1
    - Dst: json11::get_next_token
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:660,1
    - Dst: Json
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:662,1
    - Dst: json11::parse_number
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:666,1
    - Dst: json11::expect
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:670,1
    - Dst: json11::expect
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:673,1
    - Dst: json11::expect
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:676,1
    - Dst: Json
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:676,1
    - Dst: json11::parse_string
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:679,1
    - Dst: json11::get_next_token
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:683,1
    - Dst: json11::fail
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:689,1
    - Dst: json11::esc
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:689,1
    - Dst: json11::parse_string
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:691,1
    - Dst: Json
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:693,1
    - Dst: json11::get_next_token
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:695,1
    - Dst: json11::fail
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:697,1
    - Dst: json11::esc
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:697,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:699,1
    - Dst: json11::parse_json
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:699,1
    - Dst: Json
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:701,1
    - Dst: json11::get_next_token
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:703,1
    - Dst: json11::fail
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:707,1
    - Dst: json11::esc
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:707,1
    - Dst: json11::get_next_token
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:709,1
    - Dst: json11::get_next_token
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:716,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:722,1
    - Dst: json11::parse_json
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:722,1
    - Dst: Json
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:724,1
    - Dst: json11::get_next_token
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:726,1
    - Dst: json11::fail
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:730,1
    - Dst: json11::esc
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:730,1
    - Dst: json11::get_next_token
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:732,1
    - Dst: json11::fail
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:738,1
    - Dst: json11::esc
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:738,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 62
    argCount: 1
    argNames:
    - depth
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 739
      start: 655
    functionDepth: 0
    functionLinenumber: 655
    functionLinenumberEnd: 739
    functionName: json11::parse_json
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 6
    functionsReached:
    - std::move
    - json11::parse_number
    - vector::push_back
    - json11::expect
    - json11::get_next_token
    - json11::parse_json
    - json11::parse_string
    - json11::fail
    - json11::esc
    - Json
    linkageType: ''
    returnType: Json
    signature: Json parse_json(int depth)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: JsonParser::parse_json
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:745,1
    - Dst: JsonParser::consume_garbage
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:748,1
    - Dst: string::size
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:752,1
    - Dst: JsonParser::fail
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:753,1
    - Dst: esc
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:753,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 3
    argNames:
    - in
    - err
    - strategy
    argTypes:
    - string
    - string
    - JsonParse
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 757
      start: 743
    functionDepth: 0
    functionLinenumber: 743
    functionLinenumberEnd: 757
    functionName: json11::Json::parse
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 9
    functionsReached:
    - string::size
    - esc
    - JsonParser::consume_garbage
    - JsonParser::parse_json
    - JsonParser::fail
    linkageType: ''
    returnType: Json
    signature: Json Json::parse(const string &in, string &err, JsonParse strategy)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: string::size
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:767,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:768,1
    - Dst: JsonParser::parse_json
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:768,1
    - Dst: JsonParser::consume_garbage
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:774,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 4
    argNames:
    - in
    - parser_stop_pos
    - err
    - strategy
    argTypes:
    - string
    - std::string::size_type
    - string
    - JsonParse
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 781
      start: 760
    functionDepth: 0
    functionLinenumber: 760
    functionLinenumberEnd: 781
    functionName: json11::Json::parse_multi
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 2
    functionsReached:
    - JsonParser::consume_garbage
    - JsonParser::parse_json
    - vector::push_back
    - string::size
    linkageType: ''
    returnType: vector<Json>
    signature: "vector<Json> Json::parse_multi(const string &in,\n                               std::string::size_type
      &parser_stop_pos,\n                               string &err,\n                               JsonParse
      strategy)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: json11::Json::is_object
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:788,1
    - Dst: json11::Json::dump
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:789,1
    - Dst: object_items
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:793,1
    - Dst: find
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:795,1
    - Dst: cend
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:796,1
    - Dst: auto::second::type
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:796,1
    - Dst: json11::Json::dump
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:797,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 2
    argNames:
    - ' types'
    - ' err'
    argTypes:
    - shape
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 803
      start: 787
    functionDepth: 0
    functionLinenumber: 787
    functionLinenumberEnd: 803
    functionName: json11::Json::has_shape
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - auto::second::type
    - json11::Json::dump
    - cend
    - object_items
    - find
    - json11::Json::is_object
    linkageType: ''
    returnType: bool
    signature: bool Json::has_shape(const shape & types, string & err) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 47
    functionDepth: 0
    functionLinenumber: 47
    functionLinenumberEnd: 47
    functionName: operator==(NullStruct /*unused*/) const
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool operator==(NullStruct /*unused*/) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 48
    functionDepth: 0
    functionLinenumber: 48
    functionLinenumberEnd: 48
    functionName: operator<(NullStruct /*unused*/) const
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool operator<(NullStruct /*unused*/) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - out
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 55
    functionDepth: 0
    functionLinenumber: 55
    functionLinenumberEnd: 57
    functionName: json11::dump
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 9
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void dump(NullStruct /*unused*/, string &out)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::isfinite
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:60,1
    - Dst: snprintf
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:62,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - value
    - out
    argTypes:
    - double
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 59
    functionDepth: 0
    functionLinenumber: 59
    functionLinenumberEnd: 67
    functionName: json11::dump
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 9
    functionsReached:
    - std::isfinite
    - snprintf
    linkageType: ''
    returnType: void
    signature: void dump(double value, string &out)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:71,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - value
    - out
    argTypes:
    - int
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 69
    functionDepth: 0
    functionLinenumber: 69
    functionLinenumberEnd: 73
    functionName: json11::dump
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 9
    functionsReached:
    - snprintf
    linkageType: ''
    returnType: void
    signature: void dump(int value, string &out)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - value
    - out
    argTypes:
    - bool
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 75
    functionDepth: 0
    functionLinenumber: 75
    functionLinenumberEnd: 77
    functionName: json11::dump
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 9
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void dump(bool value, string &out)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: string::length
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:81,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:97,1
    - Dst: snprintf
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:99,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:101,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:101,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:102,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:105,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:105,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:106,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 40
    argCount: 2
    argNames:
    - value
    - out
    argTypes:
    - string
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 79
    functionDepth: 0
    functionLinenumber: 79
    functionLinenumberEnd: 114
    functionName: json11::dump
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 9
    functionsReached:
    - string::length
    - snprintf
    - static_cast<uint8_t>
    linkageType: ''
    returnType: void
    signature: void dump(const string &value, string &out)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: json11::dump
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:122,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - values
    - out
    argTypes:
    - Json::array
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 116
    functionDepth: 0
    functionLinenumber: 116
    functionLinenumberEnd: 126
    functionName: json11::dump
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 10
    functionsReached:
    - json11::dump
    linkageType: ''
    returnType: void
    signature: void dump(const Json::array &values, string &out)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: json11::dump
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:134,1
    - Dst: second::dump
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:136,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - values
    - out
    argTypes:
    - Json::object
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 128
    functionDepth: 0
    functionLinenumber: 128
    functionLinenumberEnd: 140
    functionName: json11::dump
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 11
    functionsReached:
    - json11::dump
    - second::dump
    linkageType: ''
    returnType: void
    signature: void dump(const Json::object &values, string &out)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json11::Json::dump
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:143,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - out
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 144
      start: 142
    functionDepth: 0
    functionLinenumber: 142
    functionLinenumberEnd: 144
    functionName: json11::Json::dump
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 13
    functionsReached:
    - json11::Json::dump
    linkageType: ''
    returnType: void
    signature: void Json::dump(string &out) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - value
    argTypes:
    - T
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 155
    functionDepth: 0
    functionLinenumber: 155
    functionLinenumberEnd: 155
    functionName: json11::Value::Value
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Value(const T &value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:156,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 1
    argNames:
    - value
    argTypes:
    - T
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 156
      start: 156
    functionDepth: 0
    functionLinenumber: 156
    functionLinenumberEnd: 156
    functionName: json11::Value::Value
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void Value(T &&value)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 161
      start: 159
    functionDepth: 0
    functionLinenumber: 159
    functionLinenumberEnd: 161
    functionName: json11::Value::type
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Json::Type
    signature: Json::Type type() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<const Value<tag, T> *>
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:165,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - other
    argTypes:
    - JsonValue*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 166
      start: 164
    functionDepth: 0
    functionLinenumber: 164
    functionLinenumberEnd: 166
    functionName: json11::Value::equals
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - static_cast<const Value<tag, T> *>
    linkageType: ''
    returnType: bool
    signature: bool equals(const JsonValue * other) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<const Value<tag, T> *>
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:168,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - other
    argTypes:
    - JsonValue*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 169
      start: 167
    functionDepth: 0
    functionLinenumber: 167
    functionLinenumberEnd: 169
    functionName: json11::Value::less
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - static_cast<const Value<tag, T> *>
    linkageType: ''
    returnType: bool
    signature: bool less(const JsonValue * other) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json11::dump
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:172,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - out
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 172
      start: 172
    functionDepth: 0
    functionLinenumber: 172
    functionLinenumberEnd: 172
    functionName: json11::Value::dump
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - json11::dump
    linkageType: ''
    returnType: void
    signature: void dump(string &out) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 176
      start: 176
    functionDepth: 0
    functionLinenumber: 176
    functionLinenumberEnd: 176
    functionName: json11::JsonDouble::number_value
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: double
    signature: double number_value() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<int>
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:177,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 177
      start: 177
    functionDepth: 0
    functionLinenumber: 177
    functionLinenumberEnd: 177
    functionName: json11::JsonDouble::int_value
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - static_cast<int>
    linkageType: ''
    returnType: int
    signature: int int_value() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: JsonValue*::number_value
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:178,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - other
    argTypes:
    - JsonValue*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 178
      start: 178
    functionDepth: 0
    functionLinenumber: 178
    functionLinenumberEnd: 178
    functionName: json11::JsonDouble::equals
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - JsonValue*::number_value
    linkageType: ''
    returnType: bool
    signature: bool equals(const JsonValue * other) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: JsonValue*::number_value
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:179,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - other
    argTypes:
    - JsonValue*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 179
      start: 179
    functionDepth: 0
    functionLinenumber: 179
    functionLinenumberEnd: 179
    functionName: json11::JsonDouble::less
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - JsonValue*::number_value
    linkageType: ''
    returnType: bool
    signature: bool less(const JsonValue * other)   const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - value
    argTypes:
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 181
      start: 181
    functionDepth: 0
    functionLinenumber: 181
    functionLinenumberEnd: 181
    functionName: json11::JsonDouble::JsonDouble
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void JsonDouble(double value)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 185
      start: 185
    functionDepth: 0
    functionLinenumber: 185
    functionLinenumberEnd: 185
    functionName: json11::JsonInt::number_value
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: double
    signature: double number_value() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 186
      start: 186
    functionDepth: 0
    functionLinenumber: 186
    functionLinenumberEnd: 186
    functionName: json11::JsonInt::int_value
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int int_value() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: JsonValue*::number_value
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:187,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - other
    argTypes:
    - JsonValue*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 187
      start: 187
    functionDepth: 0
    functionLinenumber: 187
    functionLinenumberEnd: 187
    functionName: json11::JsonInt::equals
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - JsonValue*::number_value
    linkageType: ''
    returnType: bool
    signature: bool equals(const JsonValue * other) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: JsonValue*::number_value
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:188,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - other
    argTypes:
    - JsonValue*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 188
      start: 188
    functionDepth: 0
    functionLinenumber: 188
    functionLinenumberEnd: 188
    functionName: json11::JsonInt::less
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - JsonValue*::number_value
    linkageType: ''
    returnType: bool
    signature: bool less(const JsonValue * other)   const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - value
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 190
      start: 190
    functionDepth: 0
    functionLinenumber: 190
    functionLinenumberEnd: 190
    functionName: json11::JsonInt::JsonInt
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void JsonInt(int value)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 194
      start: 194
    functionDepth: 0
    functionLinenumber: 194
    functionLinenumberEnd: 194
    functionName: json11::JsonBoolean::bool_value
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool bool_value() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - value
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 196
      start: 196
    functionDepth: 0
    functionLinenumber: 196
    functionLinenumberEnd: 196
    functionName: json11::JsonBoolean::JsonBoolean
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void JsonBoolean(bool value)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 200
      start: 200
    functionDepth: 0
    functionLinenumber: 200
    functionLinenumberEnd: 200
    functionName: '&string_value() const override'
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: string
    signature: string &string_value() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - value
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 202
      start: 202
    functionDepth: 0
    functionLinenumber: 202
    functionLinenumberEnd: 202
    functionName: json11::JsonString::JsonString
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void JsonString(const string &value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:203,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 1
    argNames:
    - value
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 203
      start: 203
    functionDepth: 0
    functionLinenumber: 203
    functionLinenumberEnd: 203
    functionName: json11::JsonString::JsonString
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void JsonString(string &&value)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 207
      start: 207
    functionDepth: 0
    functionLinenumber: 207
    functionLinenumberEnd: 207
    functionName: '&array_items() const override'
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Json::array
    signature: Json::array &array_items() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - value
    argTypes:
    - Json::array
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 210
      start: 210
    functionDepth: 0
    functionLinenumber: 210
    functionLinenumberEnd: 210
    functionName: json11::JsonArray::JsonArray
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void JsonArray(const Json::array &value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:211,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 1
    argNames:
    - value
    argTypes:
    - Json::array
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 211
      start: 211
    functionDepth: 0
    functionLinenumber: 211
    functionLinenumberEnd: 211
    functionName: json11::JsonArray::JsonArray
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void JsonArray(Json::array &&value)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 215
      start: 215
    functionDepth: 0
    functionLinenumber: 215
    functionLinenumberEnd: 215
    functionName: '&object_items() const override'
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Json::object
    signature: Json::object &object_items() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - value
    argTypes:
    - Json::object
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 218
      start: 218
    functionDepth: 0
    functionLinenumber: 218
    functionLinenumberEnd: 218
    functionName: json11::JsonObject::JsonObject
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void JsonObject(const Json::object &value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:219,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 1
    argNames:
    - value
    argTypes:
    - Json::object
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 219
      start: 219
    functionDepth: 0
    functionLinenumber: 219
    functionLinenumberEnd: 219
    functionName: json11::JsonObject::JsonObject
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void JsonObject(Json::object &&value)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 224
      start: 224
    functionDepth: 0
    functionLinenumber: 224
    functionLinenumberEnd: 224
    functionName: json11::JsonNull::JsonNull
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void JsonNull()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 237
      start: 237
    functionDepth: 0
    functionLinenumber: 237
    functionLinenumberEnd: 237
    functionName: json11::Statics
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Statics()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 243
      start: 240
    functionDepth: 0
    functionLinenumber: 240
    functionLinenumberEnd: 243
    functionName: json11::statics
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Statics
    signature: Statics & statics()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 249
      start: 245
    functionDepth: 0
    functionLinenumber: 245
    functionLinenumberEnd: 249
    functionName: json11::static_null
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Json
    signature: Json & static_null()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: statics
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:255,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 255
      start: 255
    functionDepth: 0
    functionLinenumber: 255
    functionLinenumberEnd: 255
    functionName: json11::Json::Json
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - statics
    linkageType: ''
    returnType: void
    signature: void Json::Json() noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: statics
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:256,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 256
      start: 256
    functionDepth: 0
    functionLinenumber: 256
    functionLinenumberEnd: 256
    functionName: json11::Json::Json
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - statics
    linkageType: ''
    returnType: void
    signature: void Json::Json(std::nullptr_t) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: make_shared<JsonDouble>
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:257,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - value
    argTypes:
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 257
      start: 257
    functionDepth: 0
    functionLinenumber: 257
    functionLinenumberEnd: 257
    functionName: json11::Json::Json
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - make_shared<JsonDouble>
    linkageType: ''
    returnType: void
    signature: void Json::Json(double value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: make_shared<JsonInt>
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:258,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - value
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 258
      start: 258
    functionDepth: 0
    functionLinenumber: 258
    functionLinenumberEnd: 258
    functionName: json11::Json::Json
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - make_shared<JsonInt>
    linkageType: ''
    returnType: void
    signature: void Json::Json(int value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: statics
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:259,1
    - Dst: statics
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:259,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - value
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 259
      start: 259
    functionDepth: 0
    functionLinenumber: 259
    functionLinenumberEnd: 259
    functionName: json11::Json::Json
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - statics
    linkageType: ''
    returnType: void
    signature: void Json::Json(bool value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: make_shared<JsonString>
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:260,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - value
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 260
      start: 260
    functionDepth: 0
    functionLinenumber: 260
    functionLinenumberEnd: 260
    functionName: json11::Json::Json
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - make_shared<JsonString>
    linkageType: ''
    returnType: void
    signature: void Json::Json(const string &value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: make_shared<JsonString>
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:261,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:261,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 1
    argNames:
    - value
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 261
      start: 261
    functionDepth: 0
    functionLinenumber: 261
    functionLinenumberEnd: 261
    functionName: json11::Json::Json
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - std::move
    - make_shared<JsonString>
    linkageType: ''
    returnType: void
    signature: void Json::Json(string &&value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: make_shared<JsonString>
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:262,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - value
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 262
      start: 262
    functionDepth: 0
    functionLinenumber: 262
    functionLinenumberEnd: 262
    functionName: json11::Json::Json
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - make_shared<JsonString>
    linkageType: ''
    returnType: void
    signature: void Json::Json(const char * value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: make_shared<JsonArray>
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:263,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - values
    argTypes:
    - Json::array
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 263
      start: 263
    functionDepth: 0
    functionLinenumber: 263
    functionLinenumberEnd: 263
    functionName: json11::Json::Json
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - make_shared<JsonArray>
    linkageType: ''
    returnType: void
    signature: void Json::Json(const Json::array &values)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: make_shared<JsonArray>
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:264,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:264,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 1
    argNames:
    - values
    argTypes:
    - Json::array
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 264
      start: 264
    functionDepth: 0
    functionLinenumber: 264
    functionLinenumberEnd: 264
    functionName: json11::Json::Json
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - std::move
    - make_shared<JsonArray>
    linkageType: ''
    returnType: void
    signature: void Json::Json(Json::array &&values)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: make_shared<JsonObject>
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:265,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - values
    argTypes:
    - Json::object
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 265
      start: 265
    functionDepth: 0
    functionLinenumber: 265
    functionLinenumberEnd: 265
    functionName: json11::Json::Json
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - make_shared<JsonObject>
    linkageType: ''
    returnType: void
    signature: void Json::Json(const Json::object &values)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: make_shared<JsonObject>
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:266,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:266,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 1
    argNames:
    - values
    argTypes:
    - Json::object
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 266
      start: 266
    functionDepth: 0
    functionLinenumber: 266
    functionLinenumberEnd: 266
    functionName: json11::Json::Json
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - make_shared<JsonObject>
    - std::move
    linkageType: ''
    returnType: void
    signature: void Json::Json(Json::object &&values)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json11::Json::type
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:272,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 272
      start: 272
    functionDepth: 0
    functionLinenumber: 272
    functionLinenumberEnd: 272
    functionName: json11::Json::type
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 16
    functionsReached:
    - json11::Json::type
    linkageType: ''
    returnType: Json::Type
    signature: Json::Type Json::type()                           const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json11::Json::number_value
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:273,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 273
      start: 273
    functionDepth: 0
    functionLinenumber: 273
    functionLinenumberEnd: 273
    functionName: json11::Json::number_value
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 4
    functionsReached:
    - json11::Json::number_value
    linkageType: ''
    returnType: double
    signature: double Json::number_value()                       const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json11::Json::int_value
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:274,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 274
      start: 274
    functionDepth: 0
    functionLinenumber: 274
    functionLinenumberEnd: 274
    functionName: json11::Json::int_value
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 4
    functionsReached:
    - json11::Json::int_value
    linkageType: ''
    returnType: int
    signature: int Json::int_value()                             const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json11::Json::bool_value
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:275,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 275
      start: 275
    functionDepth: 0
    functionLinenumber: 275
    functionLinenumberEnd: 275
    functionName: json11::Json::bool_value
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 4
    functionsReached:
    - json11::Json::bool_value
    linkageType: ''
    returnType: bool
    signature: bool Json::bool_value()                           const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: string_value
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:276,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 276
      start: 276
    functionDepth: 0
    functionLinenumber: 276
    functionLinenumberEnd: 276
    functionName: '& Json::string_value()               const'
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - string_value
    linkageType: ''
    returnType: string
    signature: string & Json::string_value()               const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_items
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:277,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 277
      start: 277
    functionDepth: 0
    functionLinenumber: 277
    functionLinenumberEnd: 277
    functionName: '& Json::array_items()          const'
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - array_items
    linkageType: ''
    returnType: vector<Json>
    signature: vector<Json> & Json::array_items()          const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: object_items
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:278,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 278
      start: 278
    functionDepth: 0
    functionLinenumber: 278
    functionLinenumberEnd: 278
    functionName: '& Json::object_items()    const'
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - object_items
    linkageType: ''
    returnType: map<string, Json>
    signature: map<string, Json> & Json::object_items()    const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - i
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 279
      start: 279
    functionDepth: 0
    functionLinenumber: 279
    functionLinenumberEnd: 279
    functionName: '& Json::operator[] (size_t i)          const'
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Json
    signature: Json & Json::operator[] (size_t i)          const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - key
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 280
      start: 280
    functionDepth: 0
    functionLinenumber: 280
    functionLinenumberEnd: 280
    functionName: '& Json::operator[] (const string &key) const'
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Json
    signature: Json & Json::operator[] (const string &key) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 282
      start: 282
    functionDepth: 0
    functionLinenumber: 282
    functionLinenumberEnd: 282
    functionName: json11::JsonValue::number_value
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: double
    signature: double JsonValue::number_value()              const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 283
      start: 283
    functionDepth: 0
    functionLinenumber: 283
    functionLinenumberEnd: 283
    functionName: json11::JsonValue::int_value
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int JsonValue::int_value()                 const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 284
      start: 284
    functionDepth: 0
    functionLinenumber: 284
    functionLinenumberEnd: 284
    functionName: json11::JsonValue::bool_value
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool JsonValue::bool_value()                const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: statics
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:285,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 285
      start: 285
    functionDepth: 0
    functionLinenumber: 285
    functionLinenumberEnd: 285
    functionName: '&            JsonValue::string_value()              const'
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - statics
    linkageType: ''
    returnType: string
    signature: string &            JsonValue::string_value()              const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: statics
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:286,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 286
      start: 286
    functionDepth: 0
    functionLinenumber: 286
    functionLinenumberEnd: 286
    functionName: '&      JsonValue::array_items()               const'
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - statics
    linkageType: ''
    returnType: vector<Json>
    signature: vector<Json> &      JsonValue::array_items()               const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: statics
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:287,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 287
      start: 287
    functionDepth: 0
    functionLinenumber: 287
    functionLinenumberEnd: 287
    functionName: '& JsonValue::object_items()              const'
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - statics
    linkageType: ''
    returnType: map<string, Json>
    signature: map<string, Json> & JsonValue::object_items()              const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_null
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:288,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 288
      start: 288
    functionDepth: 0
    functionLinenumber: 288
    functionLinenumberEnd: 288
    functionName: '&              JsonValue::operator[] (size_t)         const'
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - static_null
    linkageType: ''
    returnType: Json
    signature: Json &              JsonValue::operator[] (size_t)         const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_null
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:289,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 289
      start: 289
    functionDepth: 0
    functionLinenumber: 289
    functionLinenumberEnd: 289
    functionName: '&              JsonValue::operator[] (const string &) const'
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - static_null
    linkageType: ''
    returnType: Json
    signature: Json &              JsonValue::operator[] (const string &) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: find
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:292,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:293,1
    - Dst: static_null
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:293,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - key
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 294
      start: 291
    functionDepth: 0
    functionLinenumber: 291
    functionLinenumberEnd: 294
    functionName: '& JsonObject::operator[] (const string &key) const'
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - static_null
    - end
    - find
    linkageType: ''
    returnType: Json
    signature: Json & JsonObject::operator[] (const string &key) const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:296,1
    - Dst: static_null
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:296,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - i
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 298
      start: 295
    functionDepth: 0
    functionLinenumber: 295
    functionLinenumberEnd: 298
    functionName: '& JsonArray::operator[] (size_t i) const'
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - static_null
    - size
    linkageType: ''
    returnType: Json
    signature: Json & JsonArray::operator[] (size_t i) const
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: type
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:308,1
    - Dst: Json::m_ptr::type
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:308,1
    - Dst: equals
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:312,1
    - Dst: Json::m_ptr::get
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:312,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - other
    argTypes:
    - Json
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 313
      start: 304
    functionDepth: 0
    functionLinenumber: 304
    functionLinenumberEnd: 313
    functionName: Json::operator== (const Json &other) const
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - Json::m_ptr::type
    - equals
    - Json::m_ptr::get
    - type
    linkageType: ''
    returnType: bool
    signature: bool Json::operator== (const Json &other) const
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: type
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:319,1
    - Dst: Json::m_ptr::type
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:319,1
    - Dst: type
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:320,1
    - Dst: Json::m_ptr::type
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:320,1
    - Dst: less
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:323,1
    - Dst: Json::m_ptr::get
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:323,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - other
    argTypes:
    - Json
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 324
      start: 315
    functionDepth: 0
    functionLinenumber: 315
    functionLinenumberEnd: 324
    functionName: Json::operator< (const Json &other) const
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - Json::m_ptr::type
    - less
    - Json::m_ptr::get
    - type
    linkageType: ''
    returnType: bool
    signature: bool Json::operator< (const Json &other) const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:336,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:336,1
    - Dst: snprintf
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:337,1
    - Dst: snprintf
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:339,1
    - Dst: string
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:341,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - c
    argTypes:
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 342
      start: 334
    functionDepth: 0
    functionLinenumber: 334
    functionLinenumberEnd: 342
    functionName: json11::esc
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 18
    functionsReached:
    - string
    - snprintf
    - static_cast<uint8_t>
    linkageType: ''
    returnType: string
    signature: string esc(char c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 3
    argNames:
    - x
    - lower
    - upper
    argTypes:
    - long
    - long
    - long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 346
      start: 344
    functionDepth: 0
    functionLinenumber: 344
    functionLinenumberEnd: 346
    functionName: json11::in_range
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 12
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool in_range(long x, long lower, long upper)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json11::fail
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:368,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:368,1
    - Dst: Json
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:368,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - msg
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 369
      start: 367
    functionDepth: 0
    functionLinenumber: 367
    functionLinenumberEnd: 369
    functionName: json11::fail
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 43
    functionsReached:
    - json11::fail
    - std::move
    - Json
    linkageType: ''
    returnType: Json
    signature: Json fail(string &&msg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:374,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - msg
    - err_ret
    argTypes:
    - string
    - T
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 377
      start: 372
    functionDepth: 0
    functionLinenumber: 372
    functionLinenumberEnd: 377
    functionName: json11::fail
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 43
    functionsReached:
    - std::move
    linkageType: ''
    returnType: T
    signature: T fail(string &&msg, const T err_ret)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 386
      start: 383
    functionDepth: 0
    functionLinenumber: 383
    functionLinenumberEnd: 386
    functionName: json11::consume_whitespace
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void consume_whitespace()
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:396,1
    - Dst: json11::fail
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:397,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:401,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:408,1
    - Dst: json11::fail
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:409,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:413,1
    - Dst: json11::fail
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:414,1
    - Dst: json11::fail
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:421,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 27
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 424
      start: 392
    functionDepth: 0
    functionLinenumber: 392
    functionLinenumberEnd: 424
    functionName: json11::consume_comment
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 6
    functionsReached:
    - json11::fail
    - size
    linkageType: ''
    returnType: bool
    signature: bool consume_comment()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: json11::consume_whitespace
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:431,1
    - Dst: json11::consume_comment
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:435,1
    - Dst: json11::consume_whitespace
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:439,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 443
      start: 430
    functionDepth: 0
    functionLinenumber: 430
    functionLinenumberEnd: 443
    functionName: json11::consume_garbage
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 6
    functionsReached:
    - json11::consume_comment
    - json11::consume_whitespace
    linkageType: ''
    returnType: void
    signature: void consume_garbage()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: json11::consume_garbage
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:451,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:455,1
    - Dst: json11::fail
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:456,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 460
      start: 450
    functionDepth: 0
    functionLinenumber: 450
    functionLinenumberEnd: 460
    functionName: json11::get_next_token
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 6
    functionsReached:
    - json11::fail
    - size
    - json11::consume_garbage
    linkageType: ''
    returnType: char
    signature: char get_next_token()
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<char>
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:471,1
    - Dst: static_cast<char>
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:473,1
    - Dst: static_cast<char>
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:474,1
    - Dst: static_cast<char>
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:476,1
    - Dst: static_cast<char>
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:477,1
    - Dst: static_cast<char>
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:478,1
    - Dst: static_cast<char>
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:480,1
    - Dst: static_cast<char>
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:481,1
    - Dst: static_cast<char>
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:482,1
    - Dst: static_cast<char>
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:483,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 2
    argNames:
    - pt
    - ' out'
    argTypes:
    - long
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 485
      start: 466
    functionDepth: 0
    functionLinenumber: 466
    functionLinenumberEnd: 485
    functionName: json11::encode_utf8
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 6
    functionsReached:
    - static_cast<char>
    linkageType: ''
    returnType: void
    signature: void encode_utf8(long pt, string & out)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:495,1
    - Dst: json11::fail
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:496,1
    - Dst: json11::encode_utf8
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:501,1
    - Dst: json11::in_range
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:505,1
    - Dst: json11::fail
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:506,1
    - Dst: json11::esc
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:506,1
    - Dst: json11::encode_utf8
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:510,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:517,1
    - Dst: json11::fail
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:518,1
    - Dst: substr
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:524,1
    - Dst: string::length
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:528,1
    - Dst: json11::fail
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:529,1
    - Dst: json11::in_range
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:532,1
    - Dst: json11::in_range
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:532,1
    - Dst: json11::in_range
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:533,1
    - Dst: json11::fail
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:534,1
    - Dst: strtol
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:537,1
    - Dst: string::data
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:537,1
    - Dst: json11::in_range
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:543,1
    - Dst: json11::in_range
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:544,1
    - Dst: json11::encode_utf8
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:547,1
    - Dst: json11::encode_utf8
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:551,1
    - Dst: json11::encode_utf8
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:559,1
    - Dst: json11::fail
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:575,1
    - Dst: json11::esc
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:575,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 60
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 578
      start: 491
    functionDepth: 0
    functionLinenumber: 491
    functionLinenumberEnd: 578
    functionName: json11::parse_string
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 6
    functionsReached:
    - string::data
    - strtol
    - size
    - substr
    - json11::encode_utf8
    - json11::in_range
    - json11::fail
    - json11::esc
    - string::length
    linkageType: ''
    returnType: string
    signature: string parse_string()
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: json11::in_range
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:593,1
    - Dst: json11::fail
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:594,1
    - Dst: json11::in_range
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:595,1
    - Dst: json11::in_range
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:597,1
    - Dst: json11::fail
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:600,1
    - Dst: json11::esc
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:600,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:604,1
    - Dst: std::atoi
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:605,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:605,1
    - Dst: json11::in_range
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:611,1
    - Dst: json11::fail
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:612,1
    - Dst: json11::in_range
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:614,1
    - Dst: json11::in_range
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:625,1
    - Dst: json11::fail
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:626,1
    - Dst: json11::in_range
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:628,1
    - Dst: std::strtod
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:632,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:632,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 35
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 633
      start: 584
    functionDepth: 0
    functionLinenumber: 584
    functionLinenumberEnd: 633
    functionName: json11::parse_number
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 6
    functionsReached:
    - static_cast<size_t>
    - c_str
    - json11::in_range
    - std::strtod
    - json11::fail
    - json11::esc
    - std::atoi
    linkageType: ''
    returnType: Json
    signature: Json parse_number()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:641,1
    - Dst: compare
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:643,1
    - Dst: string::length
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:643,1
    - Dst: string::length
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:644,1
    - Dst: json11::fail
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:647,1
    - Dst: substr
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:647,1
    - Dst: string::length
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:647,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - expected
    - res
    argTypes:
    - string
    - Json
    assertStmts:
    - condition: (i != 0)
      pos:
        line_end: 640
        line_start: 640
        source_file: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    constantsTouched: []
    func_position:
      end: 649
      start: 640
    functionDepth: 0
    functionLinenumber: 640
    functionLinenumberEnd: 649
    functionName: json11::expect
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 6
    functionsReached:
    - assert
    - compare
    - substr
    - json11::fail
    - string::length
    linkageType: ''
    returnType: Json
    signature: Json expect(const string &expected, Json res)
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: json11::fail
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:657,1
    - Dst: json11::get_next_token
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:660,1
    - Dst: Json
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:662,1
    - Dst: json11::parse_number
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:666,1
    - Dst: json11::expect
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:670,1
    - Dst: json11::expect
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:673,1
    - Dst: json11::expect
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:676,1
    - Dst: Json
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:676,1
    - Dst: json11::parse_string
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:679,1
    - Dst: json11::get_next_token
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:683,1
    - Dst: json11::fail
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:689,1
    - Dst: json11::esc
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:689,1
    - Dst: json11::parse_string
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:691,1
    - Dst: Json
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:693,1
    - Dst: json11::get_next_token
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:695,1
    - Dst: json11::fail
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:697,1
    - Dst: json11::esc
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:697,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:699,1
    - Dst: json11::parse_json
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:699,1
    - Dst: Json
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:701,1
    - Dst: json11::get_next_token
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:703,1
    - Dst: json11::fail
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:707,1
    - Dst: json11::esc
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:707,1
    - Dst: json11::get_next_token
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:709,1
    - Dst: json11::get_next_token
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:716,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:722,1
    - Dst: json11::parse_json
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:722,1
    - Dst: Json
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:724,1
    - Dst: json11::get_next_token
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:726,1
    - Dst: json11::fail
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:730,1
    - Dst: json11::esc
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:730,1
    - Dst: json11::get_next_token
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:732,1
    - Dst: json11::fail
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:738,1
    - Dst: json11::esc
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:738,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 62
    argCount: 1
    argNames:
    - depth
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 739
      start: 655
    functionDepth: 0
    functionLinenumber: 655
    functionLinenumberEnd: 739
    functionName: json11::parse_json
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 7
    functionsReached:
    - std::move
    - json11::parse_number
    - vector::push_back
    - json11::expect
    - json11::get_next_token
    - json11::parse_json
    - json11::parse_string
    - json11::fail
    - json11::esc
    - Json
    linkageType: ''
    returnType: Json
    signature: Json parse_json(int depth)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json11::fail
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:368,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:368,1
    - Dst: Json
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:368,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - msg
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 369
      start: 367
    functionDepth: 0
    functionLinenumber: 367
    functionLinenumberEnd: 369
    functionName: json11::fail
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 50
    functionsReached:
    - json11::fail
    - std::move
    - Json
    linkageType: ''
    returnType: Json
    signature: Json fail(string &&msg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:374,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - msg
    - err_ret
    argTypes:
    - string
    - T
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 377
      start: 372
    functionDepth: 0
    functionLinenumber: 372
    functionLinenumberEnd: 377
    functionName: json11::fail
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 50
    functionsReached:
    - std::move
    linkageType: ''
    returnType: T
    signature: T fail(string &&msg, const T err_ret)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 386
      start: 383
    functionDepth: 0
    functionLinenumber: 383
    functionLinenumberEnd: 386
    functionName: json11::consume_whitespace
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 7
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void consume_whitespace()
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:396,1
    - Dst: json11::fail
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:397,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:401,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:408,1
    - Dst: json11::fail
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:409,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:413,1
    - Dst: json11::fail
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:414,1
    - Dst: json11::fail
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:421,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 27
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 424
      start: 392
    functionDepth: 0
    functionLinenumber: 392
    functionLinenumberEnd: 424
    functionName: json11::consume_comment
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 7
    functionsReached:
    - json11::fail
    - size
    linkageType: ''
    returnType: bool
    signature: bool consume_comment()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: json11::consume_whitespace
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:431,1
    - Dst: json11::consume_comment
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:435,1
    - Dst: json11::consume_whitespace
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:439,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 443
      start: 430
    functionDepth: 0
    functionLinenumber: 430
    functionLinenumberEnd: 443
    functionName: json11::consume_garbage
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 7
    functionsReached:
    - json11::consume_comment
    - json11::consume_whitespace
    linkageType: ''
    returnType: void
    signature: void consume_garbage()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: json11::consume_garbage
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:451,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:455,1
    - Dst: json11::fail
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:456,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 460
      start: 450
    functionDepth: 0
    functionLinenumber: 450
    functionLinenumberEnd: 460
    functionName: json11::get_next_token
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 7
    functionsReached:
    - json11::fail
    - size
    - json11::consume_garbage
    linkageType: ''
    returnType: char
    signature: char get_next_token()
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<char>
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:471,1
    - Dst: static_cast<char>
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:473,1
    - Dst: static_cast<char>
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:474,1
    - Dst: static_cast<char>
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:476,1
    - Dst: static_cast<char>
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:477,1
    - Dst: static_cast<char>
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:478,1
    - Dst: static_cast<char>
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:480,1
    - Dst: static_cast<char>
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:481,1
    - Dst: static_cast<char>
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:482,1
    - Dst: static_cast<char>
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:483,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 2
    argNames:
    - pt
    - ' out'
    argTypes:
    - long
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 485
      start: 466
    functionDepth: 0
    functionLinenumber: 466
    functionLinenumberEnd: 485
    functionName: json11::encode_utf8
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 7
    functionsReached:
    - static_cast<char>
    linkageType: ''
    returnType: void
    signature: void encode_utf8(long pt, string & out)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:495,1
    - Dst: json11::fail
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:496,1
    - Dst: json11::encode_utf8
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:501,1
    - Dst: json11::in_range
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:505,1
    - Dst: json11::fail
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:506,1
    - Dst: json11::esc
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:506,1
    - Dst: json11::encode_utf8
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:510,1
    - Dst: size
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:517,1
    - Dst: json11::fail
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:518,1
    - Dst: substr
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:524,1
    - Dst: string::length
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:528,1
    - Dst: json11::fail
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:529,1
    - Dst: json11::in_range
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:532,1
    - Dst: json11::in_range
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:532,1
    - Dst: json11::in_range
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:533,1
    - Dst: json11::fail
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:534,1
    - Dst: strtol
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:537,1
    - Dst: string::data
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:537,1
    - Dst: json11::in_range
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:543,1
    - Dst: json11::in_range
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:544,1
    - Dst: json11::encode_utf8
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:547,1
    - Dst: json11::encode_utf8
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:551,1
    - Dst: json11::encode_utf8
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:559,1
    - Dst: json11::fail
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:575,1
    - Dst: json11::esc
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:575,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 60
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 578
      start: 491
    functionDepth: 0
    functionLinenumber: 491
    functionLinenumberEnd: 578
    functionName: json11::parse_string
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 7
    functionsReached:
    - string::data
    - strtol
    - size
    - substr
    - json11::encode_utf8
    - json11::in_range
    - json11::fail
    - json11::esc
    - string::length
    linkageType: ''
    returnType: string
    signature: string parse_string()
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: json11::in_range
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:593,1
    - Dst: json11::fail
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:594,1
    - Dst: json11::in_range
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:595,1
    - Dst: json11::in_range
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:597,1
    - Dst: json11::fail
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:600,1
    - Dst: json11::esc
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:600,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:604,1
    - Dst: std::atoi
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:605,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:605,1
    - Dst: json11::in_range
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:611,1
    - Dst: json11::fail
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:612,1
    - Dst: json11::in_range
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:614,1
    - Dst: json11::in_range
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:625,1
    - Dst: json11::fail
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:626,1
    - Dst: json11::in_range
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:628,1
    - Dst: std::strtod
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:632,1
    - Dst: c_str
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:632,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 35
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 633
      start: 584
    functionDepth: 0
    functionLinenumber: 584
    functionLinenumberEnd: 633
    functionName: json11::parse_number
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 7
    functionsReached:
    - static_cast<size_t>
    - c_str
    - json11::in_range
    - std::strtod
    - json11::fail
    - json11::esc
    - std::atoi
    linkageType: ''
    returnType: Json
    signature: Json parse_number()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:641,1
    - Dst: compare
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:643,1
    - Dst: string::length
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:643,1
    - Dst: string::length
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:644,1
    - Dst: json11::fail
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:647,1
    - Dst: substr
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:647,1
    - Dst: string::length
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:647,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - expected
    - res
    argTypes:
    - string
    - Json
    assertStmts:
    - condition: (i != 0)
      pos:
        line_end: 640
        line_start: 640
        source_file: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    constantsTouched: []
    func_position:
      end: 649
      start: 640
    functionDepth: 0
    functionLinenumber: 640
    functionLinenumberEnd: 649
    functionName: json11::expect
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 7
    functionsReached:
    - assert
    - compare
    - substr
    - json11::fail
    - string::length
    linkageType: ''
    returnType: Json
    signature: Json expect(const string &expected, Json res)
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: json11::fail
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:657,1
    - Dst: json11::get_next_token
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:660,1
    - Dst: Json
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:662,1
    - Dst: json11::parse_number
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:666,1
    - Dst: json11::expect
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:670,1
    - Dst: json11::expect
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:673,1
    - Dst: json11::expect
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:676,1
    - Dst: Json
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:676,1
    - Dst: json11::parse_string
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:679,1
    - Dst: json11::get_next_token
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:683,1
    - Dst: json11::fail
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:689,1
    - Dst: json11::esc
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:689,1
    - Dst: json11::parse_string
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:691,1
    - Dst: Json
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:693,1
    - Dst: json11::get_next_token
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:695,1
    - Dst: json11::fail
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:697,1
    - Dst: json11::esc
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:697,1
    - Dst: std::move
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:699,1
    - Dst: json11::parse_json
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:699,1
    - Dst: Json
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:701,1
    - Dst: json11::get_next_token
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:703,1
    - Dst: json11::fail
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:707,1
    - Dst: json11::esc
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:707,1
    - Dst: json11::get_next_token
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:709,1
    - Dst: json11::get_next_token
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:716,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:722,1
    - Dst: json11::parse_json
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:722,1
    - Dst: Json
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:724,1
    - Dst: json11::get_next_token
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:726,1
    - Dst: json11::fail
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:730,1
    - Dst: json11::esc
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:730,1
    - Dst: json11::get_next_token
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:732,1
    - Dst: json11::fail
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:738,1
    - Dst: json11::esc
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:738,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 62
    argCount: 1
    argNames:
    - depth
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 739
      start: 655
    functionDepth: 0
    functionLinenumber: 655
    functionLinenumberEnd: 739
    functionName: json11::parse_json
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 8
    functionsReached:
    - std::move
    - json11::parse_number
    - vector::push_back
    - json11::expect
    - json11::get_next_token
    - json11::parse_json
    - json11::parse_string
    - json11::fail
    - json11::esc
    - Json
    linkageType: ''
    returnType: Json
    signature: Json parse_json(int depth)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: JsonParser::parse_json
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:745,1
    - Dst: JsonParser::consume_garbage
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:748,1
    - Dst: string::size
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:752,1
    - Dst: JsonParser::fail
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:753,1
    - Dst: esc
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:753,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 3
    argNames:
    - in
    - err
    - strategy
    argTypes:
    - string
    - string
    - JsonParse
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 757
      start: 743
    functionDepth: 0
    functionLinenumber: 743
    functionLinenumberEnd: 757
    functionName: json11::Json::parse
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 9
    functionsReached:
    - string::size
    - esc
    - JsonParser::consume_garbage
    - JsonParser::parse_json
    - JsonParser::fail
    linkageType: ''
    returnType: Json
    signature: Json Json::parse(const string &in, string &err, JsonParse strategy)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: string::size
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:767,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:768,1
    - Dst: JsonParser::parse_json
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:768,1
    - Dst: JsonParser::consume_garbage
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:774,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 4
    argNames:
    - in
    - parser_stop_pos
    - err
    - strategy
    argTypes:
    - string
    - std::string::size_type
    - string
    - JsonParse
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 781
      start: 760
    functionDepth: 0
    functionLinenumber: 760
    functionLinenumberEnd: 781
    functionName: json11::Json::parse_multi
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 2
    functionsReached:
    - JsonParser::consume_garbage
    - JsonParser::parse_json
    - vector::push_back
    - string::size
    linkageType: ''
    returnType: vector<Json>
    signature: "vector<Json> Json::parse_multi(const string &in,\n                               std::string::size_type
      &parser_stop_pos,\n                               string &err,\n                               JsonParse
      strategy)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: json11::Json::is_object
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:788,1
    - Dst: json11::Json::dump
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:789,1
    - Dst: object_items
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:793,1
    - Dst: find
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:795,1
    - Dst: cend
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:796,1
    - Dst: auto::second::type
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:796,1
    - Dst: json11::Json::dump
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.cpp:797,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 2
    argNames:
    - ' types'
    - ' err'
    argTypes:
    - shape
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 803
      start: 787
    functionDepth: 0
    functionLinenumber: 787
    functionLinenumberEnd: 803
    functionName: json11::Json::has_shape
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - auto::second::type
    - json11::Json::dump
    - cend
    - object_items
    - find
    - json11::Json::is_object
    linkageType: ''
    returnType: bool
    signature: bool Json::has_shape(const shape & types, string & err) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: to_json
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.hpp:106,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' t'
    argTypes:
    - T
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 106
    functionDepth: 0
    functionLinenumber: 106
    functionLinenumberEnd: 106
    functionName: json11::Json::Json
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.hpp
    functionUses: 0
    functionsReached:
    - to_json
    linkageType: ''
    returnType: void
    signature: void Json(const T & t)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: object
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.hpp:113,1
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.hpp:113,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.hpp:113,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' m'
    argTypes:
    - M
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 113
      start: 113
    functionDepth: 0
    functionLinenumber: 113
    functionLinenumberEnd: 113
    functionName: json11::Json::Json
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.hpp
    functionUses: 0
    functionsReached:
    - object
    - end
    - begin
    linkageType: ''
    returnType: void
    signature: void Json(const M & m)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.hpp:119,1
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.hpp:119,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.hpp:119,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' v'
    argTypes:
    - V
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 119
      start: 119
    functionDepth: 0
    functionLinenumber: 119
    functionLinenumberEnd: 119
    functionName: json11::Json::Json
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.hpp
    functionUses: 0
    functionsReached:
    - end
    - array
    - begin
    linkageType: ''
    returnType: void
    signature: void Json(const V & v)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 123
    functionDepth: 0
    functionLinenumber: 123
    functionLinenumberEnd: 123
    functionName: json11::Json::Json
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Json(void *)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json11::Json::type
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.hpp:128,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 128
    functionDepth: 0
    functionLinenumber: 128
    functionLinenumberEnd: 128
    functionName: json11::Json::is_null
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.hpp
    functionUses: 3
    functionsReached:
    - json11::Json::type
    linkageType: ''
    returnType: bool
    signature: bool is_null()   const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json11::Json::type
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.hpp:129,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 129
      start: 129
    functionDepth: 0
    functionLinenumber: 129
    functionLinenumberEnd: 129
    functionName: json11::Json::is_number
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.hpp
    functionUses: 0
    functionsReached:
    - json11::Json::type
    linkageType: ''
    returnType: bool
    signature: bool is_number() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json11::Json::type
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.hpp:130,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 130
      start: 130
    functionDepth: 0
    functionLinenumber: 130
    functionLinenumberEnd: 130
    functionName: json11::Json::is_bool
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.hpp
    functionUses: 0
    functionsReached:
    - json11::Json::type
    linkageType: ''
    returnType: bool
    signature: bool is_bool()   const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json11::Json::type
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.hpp:131,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 131
      start: 131
    functionDepth: 0
    functionLinenumber: 131
    functionLinenumberEnd: 131
    functionName: json11::Json::is_string
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.hpp
    functionUses: 0
    functionsReached:
    - json11::Json::type
    linkageType: ''
    returnType: bool
    signature: bool is_string() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json11::Json::type
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.hpp:132,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 132
      start: 132
    functionDepth: 0
    functionLinenumber: 132
    functionLinenumberEnd: 132
    functionName: json11::Json::is_array
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.hpp
    functionUses: 0
    functionsReached:
    - json11::Json::type
    linkageType: ''
    returnType: bool
    signature: bool is_array()  const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json11::Json::type
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.hpp:133,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 133
      start: 133
    functionDepth: 0
    functionLinenumber: 133
    functionLinenumberEnd: 133
    functionName: json11::Json::is_object
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.hpp
    functionUses: 4
    functionsReached:
    - json11::Json::type
    linkageType: ''
    returnType: bool
    signature: bool is_object() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json11::Json::dump
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.hpp:159,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 161
      start: 157
    functionDepth: 0
    functionLinenumber: 157
    functionLinenumberEnd: 161
    functionName: json11::Json::dump
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.hpp
    functionUses: 15
    functionsReached:
    - json11::Json::dump
    linkageType: ''
    returnType: std::string
    signature: std::string dump() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: json11::Json::parse
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.hpp:171,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.hpp:171,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - in
    - ' err'
    argTypes:
    - char*
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 176
      start: 167
    functionDepth: 0
    functionLinenumber: 167
    functionLinenumberEnd: 176
    functionName: json11::Json::parse
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.hpp
    functionUses: 10
    functionsReached:
    - std::string
    - json11::Json::parse
    linkageType: ''
    returnType: Json
    signature: "Json parse(const char * in,\n                      std::string & err,\n
      \                     JsonParse strategy = JsonParse::STANDARD)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json11::Json::parse_multi
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.hpp:189,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' in'
    - ' err'
    argTypes:
    - std::string
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 190
      start: 184
    functionDepth: 0
    functionLinenumber: 184
    functionLinenumberEnd: 190
    functionName: json11::Json::parse_multi
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.hpp
    functionUses: 3
    functionsReached:
    - json11::Json::parse_multi
    linkageType: ''
    returnType: std::vector<Json>
    signature: "std::vector<Json> parse_multi(\n        const std::string & in,\n
      \       std::string & err,\n        JsonParse strategy = JsonParse::STANDARD)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rhs
    argTypes:
    - Json
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 194
      start: 194
    functionDepth: 0
    functionLinenumber: 194
    functionLinenumberEnd: 194
    functionName: operator!= (const Json &rhs) const
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool operator!= (const Json &rhs) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rhs
    argTypes:
    - Json
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 195
      start: 195
    functionDepth: 0
    functionLinenumber: 195
    functionLinenumberEnd: 195
    functionName: operator<= (const Json &rhs) const
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool operator<= (const Json &rhs) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rhs
    argTypes:
    - Json
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 196
      start: 196
    functionDepth: 0
    functionLinenumber: 196
    functionLinenumberEnd: 196
    functionName: operator>  (const Json &rhs) const
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool operator>  (const Json &rhs) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rhs
    argTypes:
    - Json
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 197
      start: 197
    functionDepth: 0
    functionLinenumber: 197
    functionLinenumberEnd: 197
    functionName: operator>= (const Json &rhs) const
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool operator>= (const Json &rhs) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 229
      start: 229
    functionDepth: 0
    functionLinenumber: 229
    functionLinenumberEnd: 229
    functionName: ~JsonValue()
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~JsonValue()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: to_json
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.hpp:106,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' t'
    argTypes:
    - T
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 106
    functionDepth: 0
    functionLinenumber: 106
    functionLinenumberEnd: 106
    functionName: json11::Json::Json
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.hpp
    functionUses: 0
    functionsReached:
    - to_json
    linkageType: ''
    returnType: void
    signature: void Json(const T & t)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: object
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.hpp:113,1
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.hpp:113,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.hpp:113,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' m'
    argTypes:
    - M
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 113
      start: 113
    functionDepth: 0
    functionLinenumber: 113
    functionLinenumberEnd: 113
    functionName: json11::Json::Json
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.hpp
    functionUses: 0
    functionsReached:
    - object
    - end
    - begin
    linkageType: ''
    returnType: void
    signature: void Json(const M & m)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.hpp:119,1
    - Dst: begin
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.hpp:119,1
    - Dst: end
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.hpp:119,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' v'
    argTypes:
    - V
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 119
      start: 119
    functionDepth: 0
    functionLinenumber: 119
    functionLinenumberEnd: 119
    functionName: json11::Json::Json
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.hpp
    functionUses: 0
    functionsReached:
    - end
    - array
    - begin
    linkageType: ''
    returnType: void
    signature: void Json(const V & v)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 123
    functionDepth: 0
    functionLinenumber: 123
    functionLinenumberEnd: 123
    functionName: json11::Json::Json
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Json(void *)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json11::Json::type
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.hpp:128,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 128
    functionDepth: 0
    functionLinenumber: 128
    functionLinenumberEnd: 128
    functionName: json11::Json::is_null
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.hpp
    functionUses: 3
    functionsReached:
    - json11::Json::type
    linkageType: ''
    returnType: bool
    signature: bool is_null()   const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json11::Json::type
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.hpp:129,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 129
      start: 129
    functionDepth: 0
    functionLinenumber: 129
    functionLinenumberEnd: 129
    functionName: json11::Json::is_number
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.hpp
    functionUses: 0
    functionsReached:
    - json11::Json::type
    linkageType: ''
    returnType: bool
    signature: bool is_number() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json11::Json::type
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.hpp:130,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 130
      start: 130
    functionDepth: 0
    functionLinenumber: 130
    functionLinenumberEnd: 130
    functionName: json11::Json::is_bool
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.hpp
    functionUses: 0
    functionsReached:
    - json11::Json::type
    linkageType: ''
    returnType: bool
    signature: bool is_bool()   const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json11::Json::type
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.hpp:131,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 131
      start: 131
    functionDepth: 0
    functionLinenumber: 131
    functionLinenumberEnd: 131
    functionName: json11::Json::is_string
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.hpp
    functionUses: 0
    functionsReached:
    - json11::Json::type
    linkageType: ''
    returnType: bool
    signature: bool is_string() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json11::Json::type
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.hpp:132,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 132
      start: 132
    functionDepth: 0
    functionLinenumber: 132
    functionLinenumberEnd: 132
    functionName: json11::Json::is_array
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.hpp
    functionUses: 0
    functionsReached:
    - json11::Json::type
    linkageType: ''
    returnType: bool
    signature: bool is_array()  const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json11::Json::type
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.hpp:133,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 133
      start: 133
    functionDepth: 0
    functionLinenumber: 133
    functionLinenumberEnd: 133
    functionName: json11::Json::is_object
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.hpp
    functionUses: 4
    functionsReached:
    - json11::Json::type
    linkageType: ''
    returnType: bool
    signature: bool is_object() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json11::Json::dump
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.hpp:159,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 161
      start: 157
    functionDepth: 0
    functionLinenumber: 157
    functionLinenumberEnd: 161
    functionName: json11::Json::dump
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.hpp
    functionUses: 16
    functionsReached:
    - json11::Json::dump
    linkageType: ''
    returnType: std::string
    signature: std::string dump() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: json11::Json::parse
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.hpp:171,1
    - Dst: std::string
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.hpp:171,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - in
    - ' err'
    argTypes:
    - char*
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 176
      start: 167
    functionDepth: 0
    functionLinenumber: 167
    functionLinenumberEnd: 176
    functionName: json11::Json::parse
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.hpp
    functionUses: 11
    functionsReached:
    - std::string
    - json11::Json::parse
    linkageType: ''
    returnType: Json
    signature: "Json parse(const char * in,\n                      std::string & err,\n
      \                     JsonParse strategy = JsonParse::STANDARD)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json11::Json::parse_multi
      Src: /src/pdns/pdns/recursordist/ext/json11/json11.hpp:189,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' in'
    - ' err'
    argTypes:
    - std::string
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 190
      start: 184
    functionDepth: 0
    functionLinenumber: 184
    functionLinenumberEnd: 190
    functionName: json11::Json::parse_multi
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.hpp
    functionUses: 4
    functionsReached:
    - json11::Json::parse_multi
    linkageType: ''
    returnType: std::vector<Json>
    signature: "std::vector<Json> parse_multi(\n        const std::string & in,\n
      \       std::string & err,\n        JsonParse strategy = JsonParse::STANDARD)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rhs
    argTypes:
    - Json
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 194
      start: 194
    functionDepth: 0
    functionLinenumber: 194
    functionLinenumberEnd: 194
    functionName: operator!= (const Json &rhs) const
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool operator!= (const Json &rhs) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rhs
    argTypes:
    - Json
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 195
      start: 195
    functionDepth: 0
    functionLinenumber: 195
    functionLinenumberEnd: 195
    functionName: operator<= (const Json &rhs) const
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool operator<= (const Json &rhs) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rhs
    argTypes:
    - Json
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 196
      start: 196
    functionDepth: 0
    functionLinenumber: 196
    functionLinenumberEnd: 196
    functionName: operator>  (const Json &rhs) const
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool operator>  (const Json &rhs) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rhs
    argTypes:
    - Json
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 197
      start: 197
    functionDepth: 0
    functionLinenumber: 197
    functionLinenumberEnd: 197
    functionName: operator>= (const Json &rhs) const
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool operator>= (const Json &rhs) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 229
      start: 229
    functionDepth: 0
    functionLinenumber: 229
    functionLinenumberEnd: 229
    functionName: ~JsonValue()
    functionSourceFile: /src/pdns/pdns/recursordist/ext/json11/json11.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~JsonValue()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - x
    - r
    argTypes:
    - uint32_t
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 35
    functionDepth: 0
    functionLinenumber: 35
    functionLinenumberEnd: 38
    functionName: rotl32
    functionSourceFile: /src/pdns/pdns/recursordist/ext/probds/murmur3.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t rotl32 ( uint32_t x, uint8_t r )
  - 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: 41
      start: 40
    functionDepth: 0
    functionLinenumber: 40
    functionLinenumberEnd: 41
    functionName: ROTL32
    functionSourceFile: /src/pdns/pdns/recursordist/ext/probds/murmur3.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ROTL32(x,y)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 42
    functionDepth: 0
    functionLinenumber: 42
    functionLinenumberEnd: 43
    functionName: BIG_CONSTANT
    functionSourceFile: /src/pdns/pdns/recursordist/ext/probds/murmur3.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BIG_CONSTANT(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 47
    functionDepth: 0
    functionLinenumber: 47
    functionLinenumberEnd: 48
    functionName: BYTESWAP
    functionSourceFile: /src/pdns/pdns/recursordist/ext/probds/murmur3.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BYTESWAP(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 53
    functionDepth: 0
    functionLinenumber: 53
    functionLinenumberEnd: 54
    functionName: BYTESWAP
    functionSourceFile: /src/pdns/pdns/recursordist/ext/probds/murmur3.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BYTESWAP(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: BYTESWAP
    functionSourceFile: /src/pdns/pdns/recursordist/ext/probds/murmur3.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BYTESWAP(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 64
    functionDepth: 0
    functionLinenumber: 64
    functionLinenumberEnd: 68
    functionName: BYTESWAP
    functionSourceFile: /src/pdns/pdns/recursordist/ext/probds/murmur3.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BYTESWAP(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - p
    - ','
    - i
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 74
    functionDepth: 0
    functionLinenumber: 74
    functionLinenumberEnd: 75
    functionName: getblock
    functionSourceFile: /src/pdns/pdns/recursordist/ext/probds/murmur3.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: getblock(p, i)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - h
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 26
      start: 17
    functionDepth: 0
    functionLinenumber: 17
    functionLinenumberEnd: 26
    functionName: fmix32
    functionSourceFile: /src/pdns/pdns/recursordist/ext/probds/murmur3.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t fmix32( uint32_t h )
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: getblock
      Src: /src/pdns/pdns/recursordist/ext/probds/murmur3.cc:49,1
    - Dst: ROTL32
      Src: /src/pdns/pdns/recursordist/ext/probds/murmur3.cc:52,1
    - Dst: ROTL32
      Src: /src/pdns/pdns/recursordist/ext/probds/murmur3.cc:56,1
    - Dst: ROTL32
      Src: /src/pdns/pdns/recursordist/ext/probds/murmur3.cc:74,1
    - Dst: fmix32
      Src: /src/pdns/pdns/recursordist/ext/probds/murmur3.cc:83,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 26
    argCount: 4
    argNames:
    - key
    - len
    - seed
    - out
    argTypes:
    - void*
    - int
    - uint32_t
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 31
    functionDepth: 0
    functionLinenumber: 31
    functionLinenumberEnd: 86
    functionName: MurmurHash3_x86_32
    functionSourceFile: /src/pdns/pdns/recursordist/ext/probds/murmur3.cc
    functionUses: 2
    functionsReached:
    - getblock
    - ROTL32
    - fmix32
    linkageType: ''
    returnType: void
    signature: void MurmurHash3_x86_32( const void * key, int len, uint32_t seed,
      void * out )
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/pdns/backends/gsql/ssql.hh:36,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - reason
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 35
    functionDepth: 0
    functionLinenumber: 35
    functionLinenumberEnd: 38
    functionName: SSqlException::SSqlException
    functionSourceFile: /src/pdns/pdns/backends/gsql/ssql.hh
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void SSqlException(string reason)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 40
    functionDepth: 0
    functionLinenumber: 40
    functionLinenumberEnd: 43
    functionName: SSqlException::txtReason
    functionSourceFile: /src/pdns/pdns/backends/gsql/ssql.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: string
    signature: string txtReason()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/backends/gsql/ssql.hh:66,1
    - Dst: SSqlStatement::bind
      Src: /src/pdns/pdns/backends/gsql/ssql.hh:67,1
    - Dst: makeLowerCase
      Src: /src/pdns/pdns/backends/gsql/ssql.hh:67,1
    - Dst: SSqlStatement::bind
      Src: /src/pdns/pdns/backends/gsql/ssql.hh:69,1
    - Dst: string
      Src: /src/pdns/pdns/backends/gsql/ssql.hh:69,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - ' name'
    - ' value'
    argTypes:
    - string
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 64
    functionDepth: 1
    functionLinenumber: 64
    functionLinenumberEnd: 70
    functionName: SSqlStatement::bind
    functionSourceFile: /src/pdns/pdns/backends/gsql/ssql.hh
    functionUses: 1
    functionsReached:
    - empty
    - string
    - makeLowerCase
    - SSqlStatement::bind
    linkageType: ''
    returnType: SSqlStatement
    signature: SSqlStatement * bind(const string& name, const DNSName& value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SSqlStatement::bind
      Src: /src/pdns/pdns/backends/gsql/ssql.hh:73,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' name'
    - ' value'
    argTypes:
    - string
    - ZoneName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 71
    functionDepth: 1
    functionLinenumber: 71
    functionLinenumberEnd: 74
    functionName: SSqlStatement::bind
    functionSourceFile: /src/pdns/pdns/backends/gsql/ssql.hh
    functionUses: 2
    functionsReached:
    - SSqlStatement::bind
    linkageType: ''
    returnType: SSqlStatement
    signature: SSqlStatement * bind(const string& name, const ZoneName& value)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 95
    functionDepth: 0
    functionLinenumber: 95
    functionLinenumberEnd: 95
    functionName: SSql::setLog
    functionSourceFile: /src/pdns/pdns/backends/gsql/ssql.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setLog(bool /* state */)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 96
    functionDepth: 0
    functionLinenumber: 96
    functionLinenumberEnd: 99
    functionName: SSql::isConnectionUsable
    functionSourceFile: /src/pdns/pdns/backends/gsql/ssql.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool isConnectionUsable()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 101
    functionDepth: 0
    functionLinenumber: 101
    functionLinenumberEnd: 101
    functionName: ~SSql()
    functionSourceFile: /src/pdns/pdns/backends/gsql/ssql.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~SSql()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: freeStatements
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.hh:41,1
    - Dst: reset
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.hh:42,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 39
    functionDepth: 0
    functionLinenumber: 39
    functionLinenumberEnd: 43
    functionName: ~GSQLBackend() override
    functionSourceFile: /src/pdns/pdns/backends/gsql/gsqlbackend.hh
    functionUses: 0
    functionsReached:
    - reset
    - freeStatements
    linkageType: ''
    returnType: void
    signature: void ~GSQLBackend() override
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: GSQLBackend::freeStatements
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.hh:47,1
    - Dst: std::move
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.hh:48,1
    - Dst: setLog
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.hh:50,1
    - Dst: arg
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.hh:50,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - ' database'
    argTypes:
    - std::unique_ptr<SSql>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 45
    functionDepth: 1
    functionLinenumber: 45
    functionLinenumberEnd: 52
    functionName: GSQLBackend::setDB
    functionSourceFile: /src/pdns/pdns/backends/gsql/gsqlbackend.hh
    functionUses: 0
    functionsReached:
    - std::move
    - GSQLBackend::freeStatements
    - arg
    - setLog
    linkageType: ''
    returnType: void
    signature: void setDB(std::unique_ptr<SSql>&& database)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: prepare
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.hh:58,1
    - Dst: prepare
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.hh:59,1
    - Dst: prepare
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.hh:60,1
    - Dst: prepare
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.hh:61,1
    - Dst: prepare
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.hh:62,1
    - Dst: prepare
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.hh:63,1
    - Dst: prepare
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.hh:64,1
    - Dst: prepare
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.hh:65,1
    - Dst: prepare
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.hh:66,1
    - Dst: prepare
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.hh:67,1
    - Dst: prepare
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.hh:68,1
    - Dst: prepare
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.hh:69,1
    - Dst: prepare
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.hh:70,1
    - Dst: prepare
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.hh:71,1
    - Dst: prepare
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.hh:72,1
    - Dst: prepare
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.hh:73,1
    - Dst: prepare
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.hh:74,1
    - Dst: prepare
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.hh:75,1
    - Dst: prepare
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.hh:76,1
    - Dst: prepare
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.hh:77,1
    - Dst: prepare
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.hh:78,1
    - Dst: prepare
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.hh:79,1
    - Dst: prepare
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.hh:80,1
    - Dst: prepare
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.hh:81,1
    - Dst: prepare
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.hh:82,1
    - Dst: prepare
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.hh:83,1
    - Dst: prepare
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.hh:84,1
    - Dst: prepare
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.hh:85,1
    - Dst: prepare
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.hh:86,1
    - Dst: prepare
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.hh:87,1
    - Dst: prepare
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.hh:88,1
    - Dst: prepare
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.hh:89,1
    - Dst: prepare
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.hh:90,1
    - Dst: prepare
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.hh:91,1
    - Dst: prepare
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.hh:92,1
    - Dst: prepare
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.hh:93,1
    - Dst: prepare
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.hh:94,1
    - Dst: prepare
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.hh:95,1
    - Dst: prepare
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.hh:96,1
    - Dst: prepare
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.hh:97,1
    - Dst: prepare
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.hh:98,1
    - Dst: prepare
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.hh:99,1
    - Dst: prepare
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.hh:100,1
    - Dst: prepare
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.hh:101,1
    - Dst: prepare
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.hh:102,1
    - Dst: prepare
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.hh:103,1
    - Dst: prepare
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.hh:104,1
    - Dst: prepare
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.hh:105,1
    - Dst: prepare
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.hh:106,1
    - Dst: prepare
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.hh:107,1
    - Dst: prepare
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.hh:108,1
    - Dst: prepare
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.hh:109,1
    - Dst: prepare
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.hh:110,1
    - Dst: prepare
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.hh:111,1
    - Dst: prepare
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.hh:112,1
    - Dst: prepare
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.hh:113,1
    - Dst: prepare
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.hh:114,1
    - Dst: prepare
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.hh:115,1
    - Dst: prepare
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.hh:116,1
    - Dst: prepare
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.hh:117,1
    - Dst: prepare
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.hh:118,1
    - Dst: prepare
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.hh:119,1
    - Dst: prepare
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.hh:120,1
    - Dst: prepare
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.hh:121,1
    - Dst: prepare
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.hh:122,1
    - Dst: prepare
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.hh:123,1
    - Dst: prepare
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.hh:124,1
    - Dst: prepare
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.hh:125,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 71
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 127
      start: 55
    functionDepth: 0
    functionLinenumber: 55
    functionLinenumberEnd: 127
    functionName: GSQLBackend::allocateStatements
    functionSourceFile: /src/pdns/pdns/backends/gsql/gsqlbackend.hh
    functionUses: 0
    functionsReached:
    - prepare
    linkageType: ''
    returnType: void
    signature: void allocateStatements()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: reset
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.hh:130,1
    - Dst: reset
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.hh:131,1
    - Dst: reset
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.hh:132,1
    - Dst: reset
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.hh:133,1
    - Dst: reset
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.hh:134,1
    - Dst: reset
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.hh:135,1
    - Dst: reset
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.hh:136,1
    - Dst: reset
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.hh:137,1
    - Dst: reset
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.hh:138,1
    - Dst: reset
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.hh:139,1
    - Dst: reset
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.hh:140,1
    - Dst: reset
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.hh:141,1
    - Dst: reset
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.hh:142,1
    - Dst: reset
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.hh:143,1
    - Dst: reset
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.hh:144,1
    - Dst: reset
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.hh:145,1
    - Dst: reset
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.hh:146,1
    - Dst: reset
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.hh:147,1
    - Dst: reset
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.hh:148,1
    - Dst: reset
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.hh:149,1
    - Dst: reset
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.hh:150,1
    - Dst: reset
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.hh:151,1
    - Dst: reset
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.hh:152,1
    - Dst: reset
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.hh:153,1
    - Dst: reset
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.hh:154,1
    - Dst: reset
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.hh:155,1
    - Dst: reset
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.hh:156,1
    - Dst: reset
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.hh:157,1
    - Dst: reset
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.hh:158,1
    - Dst: reset
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.hh:159,1
    - Dst: reset
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.hh:160,1
    - Dst: reset
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.hh:161,1
    - Dst: reset
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.hh:162,1
    - Dst: reset
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.hh:163,1
    - Dst: reset
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.hh:164,1
    - Dst: reset
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.hh:165,1
    - Dst: reset
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.hh:166,1
    - Dst: reset
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.hh:167,1
    - Dst: reset
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.hh:168,1
    - Dst: reset
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.hh:169,1
    - Dst: reset
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.hh:170,1
    - Dst: reset
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.hh:171,1
    - Dst: reset
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.hh:172,1
    - Dst: reset
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.hh:173,1
    - Dst: reset
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.hh:174,1
    - Dst: reset
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.hh:175,1
    - Dst: reset
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.hh:176,1
    - Dst: reset
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.hh:177,1
    - Dst: reset
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.hh:178,1
    - Dst: reset
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.hh:179,1
    - Dst: reset
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.hh:180,1
    - Dst: reset
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.hh:181,1
    - Dst: reset
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.hh:182,1
    - Dst: reset
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.hh:183,1
    - Dst: reset
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.hh:184,1
    - Dst: reset
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.hh:185,1
    - Dst: reset
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.hh:186,1
    - Dst: reset
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.hh:187,1
    - Dst: reset
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.hh:188,1
    - Dst: reset
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.hh:189,1
    - Dst: reset
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.hh:190,1
    - Dst: reset
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.hh:191,1
    - Dst: reset
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.hh:192,1
    - Dst: reset
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.hh:193,1
    - Dst: reset
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.hh:194,1
    - Dst: reset
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.hh:195,1
    - Dst: reset
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.hh:196,1
    - Dst: reset
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.hh:197,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 69
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 198
      start: 129
    functionDepth: 0
    functionLinenumber: 129
    functionLinenumberEnd: 198
    functionName: GSQLBackend::freeStatements
    functionSourceFile: /src/pdns/pdns/backends/gsql/gsqlbackend.hh
    functionUses: 1
    functionsReached:
    - reset
    linkageType: ''
    returnType: void
    signature: void freeStatements()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: GSQLBackend::isConnectionUsable
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.hh:274,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 277
      start: 272
    functionDepth: 1
    functionLinenumber: 272
    functionLinenumberEnd: 277
    functionName: GSQLBackend::isConnectionUsable
    functionSourceFile: /src/pdns/pdns/backends/gsql/gsqlbackend.hh
    functionUses: 1
    functionsReached:
    - GSQLBackend::isConnectionUsable
    linkageType: ''
    returnType: bool
    signature: bool isConnectionUsable()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: GSQLBackend::inTransaction
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.hh:280,1
    - Dst: GSQLBackend::isConnectionUsable
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.hh:280,1
    - Dst: GSQLBackend::reconnect
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.hh:284,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 285
      start: 278
    functionDepth: 2
    functionLinenumber: 278
    functionLinenumberEnd: 285
    functionName: GSQLBackend::reconnectIfNeeded
    functionSourceFile: /src/pdns/pdns/backends/gsql/gsqlbackend.hh
    functionUses: 0
    functionsReached:
    - GSQLBackend::inTransaction
    - GSQLBackend::reconnect
    - GSQLBackend::isConnectionUsable
    linkageType: ''
    returnType: void
    signature: void reconnectIfNeeded()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 286
      start: 286
    functionDepth: 0
    functionLinenumber: 286
    functionLinenumberEnd: 286
    functionName: GSQLBackend::reconnect
    functionSourceFile: /src/pdns/pdns/backends/gsql/gsqlbackend.hh
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void reconnect()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 290
      start: 287
    functionDepth: 0
    functionLinenumber: 287
    functionLinenumberEnd: 290
    functionName: GSQLBackend::inTransaction
    functionSourceFile: /src/pdns/pdns/backends/gsql/gsqlbackend.hh
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool inTransaction() override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - query
    - ','
    - row
    - ','
    - num
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 39
    functionDepth: 0
    functionLinenumber: 39
    functionLinenumberEnd: 40
    functionName: ASSERT_ROW_COLUMNS
    functionSourceFile: /src/pdns/pdns/backends/gsql/gsqlbackend.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ASSERT_ROW_COLUMNS(query, row, num)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: setArgPrefix
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:43,1
    - Dst: mustDo
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:48,1
    - Dst: arg
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:55,1
    - Dst: getArg
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:61,1
    - Dst: getArg
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:62,1
    - Dst: getArg
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:63,1
    - Dst: getArg
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:64,1
    - Dst: getArg
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:66,1
    - Dst: getArg
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:67,1
    - Dst: getArg
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:69,1
    - Dst: getArg
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:70,1
    - Dst: getArg
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:72,1
    - Dst: getArg
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:73,1
    - Dst: getArg
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:74,1
    - Dst: getArg
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:75,1
    - Dst: getArg
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:76,1
    - Dst: getArg
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:77,1
    - Dst: getArg
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:78,1
    - Dst: getArg
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:79,1
    - Dst: getArg
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:80,1
    - Dst: getArg
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:81,1
    - Dst: getArg
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:82,1
    - Dst: getArg
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:83,1
    - Dst: getArg
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:84,1
    - Dst: getArg
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:85,1
    - Dst: getArg
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:86,1
    - Dst: getArg
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:87,1
    - Dst: getArg
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:88,1
    - Dst: getArg
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:89,1
    - Dst: getArg
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:90,1
    - Dst: getArg
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:91,1
    - Dst: getArg
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:92,1
    - Dst: getArg
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:93,1
    - Dst: getArg
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:94,1
    - Dst: getArg
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:95,1
    - Dst: getArg
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:97,1
    - Dst: getArg
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:98,1
    - Dst: getArg
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:99,1
    - Dst: getArg
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:101,1
    - Dst: getArg
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:102,1
    - Dst: getArg
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:103,1
    - Dst: getArg
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:104,1
    - Dst: getArg
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:106,1
    - Dst: getArg
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:107,1
    - Dst: getArg
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:108,1
    - Dst: getArg
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:109,1
    - Dst: getArg
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:111,1
    - Dst: getArg
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:112,1
    - Dst: getArg
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:113,1
    - Dst: getArg
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:114,1
    - Dst: getArg
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:116,1
    - Dst: getArg
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:117,1
    - Dst: getArg
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:118,1
    - Dst: getArg
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:120,1
    - Dst: getArg
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:121,1
    - Dst: getArg
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:122,1
    - Dst: getArg
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:123,1
    - Dst: getArg
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:124,1
    - Dst: getArg
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:126,1
    - Dst: getArg
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:127,1
    - Dst: getArg
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:128,1
    - Dst: getArg
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:129,1
    - Dst: getArg
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:130,1
    - Dst: getArg
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:131,1
    - Dst: getArg
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:133,1
    - Dst: getArg
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:134,1
    - Dst: getArg
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:135,1
    - Dst: getArg
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:136,1
    - Dst: getArg
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:138,1
    - Dst: getArg
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:139,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 149
    argCount: 2
    argNames:
    - mode
    - suffix
    argTypes:
    - string
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 209
      start: 41
    functionDepth: 0
    functionLinenumber: 41
    functionLinenumberEnd: 209
    functionName: GSQLBackend::GSQLBackend
    functionSourceFile: /src/pdns/pdns/backends/gsql/gsqlbackend.cc
    functionUses: 0
    functionsReached:
    - setArgPrefix
    - mustDo
    - getArg
    - arg
    linkageType: ''
    returnType: void
    signature: void GSQLBackend::GSQLBackend(const string &mode, const string &suffix)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: GSQLBackend::reconnectIfNeeded
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:214,1
    - Dst: bind
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:217,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:225,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:225,1
    - Dst: txtReason
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:225,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - domain_id
    - serial
    argTypes:
    - domainid_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 227
      start: 211
    functionDepth: 3
    functionLinenumber: 211
    functionLinenumberEnd: 227
    functionName: GSQLBackend::setNotified
    functionSourceFile: /src/pdns/pdns/backends/gsql/gsqlbackend.cc
    functionUses: 0
    functionsReached:
    - std::to_string
    - PDNSException
    - GSQLBackend::reconnectIfNeeded
    - bind
    - txtReason
    linkageType: ''
    returnType: void
    signature: void GSQLBackend::setNotified(domainid_t domain_id, uint32_t serial)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: GSQLBackend::reconnectIfNeeded
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:232,1
    - Dst: bind
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:235,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:242,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:242,1
    - Dst: txtReason
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:242,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - domain_id
    - lastcheck
    argTypes:
    - domainid_t
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 244
      start: 229
    functionDepth: 3
    functionLinenumber: 229
    functionLinenumberEnd: 244
    functionName: GSQLBackend::setLastCheck
    functionSourceFile: /src/pdns/pdns/backends/gsql/gsqlbackend.cc
    functionUses: 0
    functionsReached:
    - std::to_string
    - PDNSException
    - GSQLBackend::reconnectIfNeeded
    - bind
    - txtReason
    linkageType: ''
    returnType: void
    signature: void GSQLBackend::setLastCheck(domainid_t domain_id, time_t lastcheck)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: GSQLBackend::setLastCheck
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:248,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - domain_id
    argTypes:
    - domainid_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 249
      start: 246
    functionDepth: 4
    functionLinenumber: 246
    functionLinenumberEnd: 249
    functionName: GSQLBackend::setStale
    functionSourceFile: /src/pdns/pdns/backends/gsql/gsqlbackend.cc
    functionUses: 0
    functionsReached:
    - GSQLBackend::setLastCheck
    linkageType: ''
    returnType: void
    signature: void GSQLBackend::setStale(domainid_t domain_id)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: GSQLBackend::setLastCheck
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:253,1
    - Dst: time
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:253,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - domain_id
    argTypes:
    - domainid_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 254
      start: 251
    functionDepth: 4
    functionLinenumber: 251
    functionLinenumberEnd: 254
    functionName: GSQLBackend::setFresh
    functionSourceFile: /src/pdns/pdns/backends/gsql/gsqlbackend.cc
    functionUses: 0
    functionsReached:
    - time
    - GSQLBackend::setLastCheck
    linkageType: ''
    returnType: void
    signature: void GSQLBackend::setFresh(domainid_t domain_id)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vector::reserve
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:259,1
    - Dst: size
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:259,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:261,1
    - Dst: toStringWithPortExcept
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:261,1
    - Dst: boost::join
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:264,1
    - Dst: GSQLBackend::reconnectIfNeeded
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:267,1
    - Dst: bind
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:270,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:278,1
    - Dst: toLogString
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:278,1
    - Dst: txtReason
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:278,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - ' domain'
    - ' primaries'
    argTypes:
    - ZoneName
    - vector<ComboAddress>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 281
      start: 256
    functionDepth: 3
    functionLinenumber: 256
    functionLinenumberEnd: 281
    functionName: GSQLBackend::setPrimaries
    functionSourceFile: /src/pdns/pdns/backends/gsql/gsqlbackend.cc
    functionUses: 0
    functionsReached:
    - toLogString
    - vector::push_back
    - PDNSException
    - txtReason
    - GSQLBackend::reconnectIfNeeded
    - bind
    - size
    - boost::join
    - vector::reserve
    - toStringWithPortExcept
    linkageType: ''
    returnType: bool
    signature: bool GSQLBackend::setPrimaries(const ZoneName& domain, const vector<ComboAddress>&
      primaries)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: GSQLBackend::reconnectIfNeeded
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:286,1
    - Dst: bind
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:289,1
    - Dst: toUpper
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:290,1
    - Dst: getKindString
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:290,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:297,1
    - Dst: ZoneName::toLogString
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:297,1
    - Dst: toUpper
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:297,1
    - Dst: getKindString
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:297,1
    - Dst: txtReason
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:297,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - domain
    - kind
    argTypes:
    - ZoneName
    - DomainInfo::DomainKind
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 300
      start: 283
    functionDepth: 3
    functionLinenumber: 283
    functionLinenumberEnd: 300
    functionName: GSQLBackend::setKind
    functionSourceFile: /src/pdns/pdns/backends/gsql/gsqlbackend.cc
    functionUses: 0
    functionsReached:
    - PDNSException
    - GSQLBackend::reconnectIfNeeded
    - toUpper
    - bind
    - getKindString
    - ZoneName::toLogString
    - txtReason
    linkageType: ''
    returnType: bool
    signature: bool GSQLBackend::setKind(const ZoneName &domain, const DomainInfo::DomainKind
      kind)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: GSQLBackend::reconnectIfNeeded
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:305,1
    - Dst: bind
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:308,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:316,1
    - Dst: toLogString
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:316,1
    - Dst: txtReason
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:316,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - ' domain'
    - ' options'
    argTypes:
    - ZoneName
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 319
      start: 302
    functionDepth: 3
    functionLinenumber: 302
    functionLinenumberEnd: 319
    functionName: GSQLBackend::setOptions
    functionSourceFile: /src/pdns/pdns/backends/gsql/gsqlbackend.cc
    functionUses: 0
    functionsReached:
    - toLogString
    - PDNSException
    - GSQLBackend::reconnectIfNeeded
    - bind
    - txtReason
    linkageType: ''
    returnType: bool
    signature: bool GSQLBackend::setOptions(const ZoneName& domain, const string&
      options)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: GSQLBackend::reconnectIfNeeded
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:324,1
    - Dst: bind
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:327,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:335,1
    - Dst: toLogString
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:335,1
    - Dst: toLogString
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:335,1
    - Dst: txtReason
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:335,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - ' domain'
    - ' catalog'
    argTypes:
    - ZoneName
    - ZoneName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 338
      start: 321
    functionDepth: 3
    functionLinenumber: 321
    functionLinenumberEnd: 338
    functionName: GSQLBackend::setCatalog
    functionSourceFile: /src/pdns/pdns/backends/gsql/gsqlbackend.cc
    functionUses: 0
    functionsReached:
    - toLogString
    - PDNSException
    - GSQLBackend::reconnectIfNeeded
    - bind
    - txtReason
    linkageType: ''
    returnType: bool
    signature: bool GSQLBackend::setCatalog(const ZoneName& domain, const ZoneName&
      catalog)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: GSQLBackend::reconnectIfNeeded
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:343,1
    - Dst: bind
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:346,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:354,1
    - Dst: ZoneName::toLogString
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:354,1
    - Dst: txtReason
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:354,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - domain
    - account
    argTypes:
    - ZoneName
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 357
      start: 340
    functionDepth: 3
    functionLinenumber: 340
    functionLinenumberEnd: 357
    functionName: GSQLBackend::setAccount
    functionSourceFile: /src/pdns/pdns/backends/gsql/gsqlbackend.cc
    functionUses: 0
    functionsReached:
    - PDNSException
    - GSQLBackend::reconnectIfNeeded
    - bind
    - ZoneName::toLogString
    - txtReason
    linkageType: ''
    returnType: bool
    signature: bool GSQLBackend::setAccount(const ZoneName &domain, const string &account)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: GSQLBackend::reconnectIfNeeded
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:364,1
    - Dst: bind
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:367,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:375,1
    - Dst: ZoneName::toLogString
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:375,1
    - Dst: txtReason
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:375,1
    - Dst: size
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:378,1
    - Dst: ASSERT_ROW_COLUMNS
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:382,1
    - Dst: pdns::checked_stoi_into
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:384,1
    - Dst: ZoneName
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:386,1
    - Dst: empty
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:387,1
    - Dst: ZoneName
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:387,1
    - Dst: ZoneName
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:387,1
    - Dst: stringToKind
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:394,1
    - Dst: stringtok
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:397,1
    - Dst: DomainInfo::primaries::emplace_back
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:399,1
    - Dst: pdns::checked_stoi_into
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:400,1
    - Dst: pdns::checked_stoi_into
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:401,1
    - Dst: getSOA
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:408,1
    - Dst: SLOG
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:409,1
    - Dst: info
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:410,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:410,1
    - Dst: SLOG
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:416,1
    - Dst: error
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:417,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:417,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 37
    argCount: 3
    argNames:
    - domain
    - info
    - getSerial
    argTypes:
    - ZoneName
    - DomainInfo
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 422
      start: 359
    functionDepth: 3
    functionLinenumber: 359
    functionLinenumberEnd: 422
    functionName: GSQLBackend::getDomainInfo
    functionSourceFile: /src/pdns/pdns/backends/gsql/gsqlbackend.cc
    functionUses: 0
    functionsReached:
    - stringToKind
    - stringtok
    - getSOA
    - SLOG
    - Logging::Loggable
    - PDNSException
    - ASSERT_ROW_COLUMNS
    - GSQLBackend::reconnectIfNeeded
    - bind
    - info
    - size
    - DomainInfo::primaries::emplace_back
    - ZoneName
    - ZoneName::toLogString
    - error
    - empty
    - txtReason
    - pdns::checked_stoi_into
    linkageType: ''
    returnType: bool
    signature: bool GSQLBackend::getDomainInfo(const ZoneName &domain, DomainInfo
      &info, bool getSerial)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: GSQLBackend::reconnectIfNeeded
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:432,1
    - Dst: execute
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:435,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:442,1
    - Dst: std::string
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:442,1
    - Dst: txtReason
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:442,1
    - Dst: vector<DomainInfo>*::reserve
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:449,1
    - Dst: size
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:449,1
    - Dst: ASSERT_ROW_COLUMNS
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:451,1
    - Dst: ZoneName
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:454,1
    - Dst: SLOG
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:457,1
    - Dst: what
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:457,1
    - Dst: error
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:458,1
    - Dst: what
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:458,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:458,1
    - Dst: SLOG
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:462,1
    - Dst: error
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:463,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:463,1
    - Dst: empty
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:467,1
    - Dst: fillSOAData
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:469,1
    - Dst: SLOG
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:472,1
    - Dst: what
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:472,1
    - Dst: error
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:473,1
    - Dst: what
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:473,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:473,1
    - Dst: SLOG
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:477,1
    - Dst: info
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:478,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:478,1
    - Dst: pdns::checked_stoi_into
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:484,1
    - Dst: SLOG
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:487,1
    - Dst: what
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:487,1
    - Dst: error
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:488,1
    - Dst: what
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:488,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:488,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:488,1
    - Dst: static_cast<time_t>
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:492,1
    - Dst: time
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:492,1
    - Dst: pdns::checked_stoi_into
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:499,1
    - Dst: SLOG
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:501,1
    - Dst: what
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:501,1
    - Dst: error
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:502,1
    - Dst: what
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:502,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:502,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:502,1
    - Dst: DomainInfo::primaries::clear
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:506,1
    - Dst: vector::clear
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:507,1
    - Dst: stringtok
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:508,1
    - Dst: DomainInfo::primaries::emplace_back
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:511,1
    - Dst: SLOG
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:513,1
    - Dst: error
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:514,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:514,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:514,1
    - Dst: DomainInfo::primaries::empty
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:517,1
    - Dst: SLOG
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:518,1
    - Dst: info
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:519,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:519,1
    - Dst: pdns_iequals
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:523,1
    - Dst: pdns_iequals
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:526,1
    - Dst: SLOG
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:530,1
    - Dst: info
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:531,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:531,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:531,1
    - Dst: vector<DomainInfo>*::emplace_back
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:535,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 69
    argCount: 1
    argNames:
    - unfreshDomains
    argTypes:
    - vector<DomainInfo>*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 537
      start: 424
    functionDepth: 3
    functionLinenumber: 424
    functionLinenumberEnd: 537
    functionName: GSQLBackend::getUnfreshSecondaryInfos
    functionSourceFile: /src/pdns/pdns/backends/gsql/gsqlbackend.cc
    functionUses: 0
    functionsReached:
    - PDNSException
    - vector<DomainInfo>*::reserve
    - error
    - std::string
    - static_cast<time_t>
    - SLOG
    - stringtok
    - Logging::Loggable
    - time
    - GSQLBackend::reconnectIfNeeded
    - DomainInfo::primaries::clear
    - size
    - DomainInfo::primaries::emplace_back
    - empty
    - pdns::checked_stoi_into
    - vector::clear
    - pdns_iequals
    - DomainInfo::primaries::empty
    - execute
    - fillSOAData
    - ASSERT_ROW_COLUMNS
    - what
    - info
    - vector<DomainInfo>*::emplace_back
    - ZoneName
    - txtReason
    linkageType: ''
    returnType: void
    signature: void GSQLBackend::getUnfreshSecondaryInfos(vector<DomainInfo>* unfreshDomains)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: GSQLBackend::reconnectIfNeeded
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:547,1
    - Dst: execute
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:550,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:557,1
    - Dst: std::string
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:557,1
    - Dst: txtReason
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:557,1
    - Dst: CatalogInfo::CatalogInfo
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:562,1
    - Dst: reserve
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:564,1
    - Dst: size
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:564,1
    - Dst: ASSERT_ROW_COLUMNS
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:566,1
    - Dst: ZoneName
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:571,1
    - Dst: SLOG
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:574,1
    - Dst: what
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:574,1
    - Dst: error
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:575,1
    - Dst: what
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:575,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:575,1
    - Dst: SLOG
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:579,1
    - Dst: error
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:580,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:580,1
    - Dst: stringToKind
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:584,1
    - Dst: pdns::checked_stoi_into
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:587,1
    - Dst: SLOG
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:590,1
    - Dst: static_cast<const char *>
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:590,1
    - Dst: what
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:590,1
    - Dst: error
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:591,1
    - Dst: what
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:591,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:591,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:591,1
    - Dst: ZoneName
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:596,1
    - Dst: SLOG
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:599,1
    - Dst: what
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:599,1
    - Dst: error
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:600,1
    - Dst: what
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:600,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:600,1
    - Dst: SLOG
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:604,1
    - Dst: error
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:605,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:605,1
    - Dst: insert
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:610,1
    - Dst: process
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:611,1
    - Dst: DomainInfo::catalog::empty
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:612,1
    - Dst: SLOG
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:617,1
    - Dst: info
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:618,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:618,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:618,1
    - Dst: empty
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:623,1
    - Dst: CatalogInfo::updateCatalogHash
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:625,1
    - Dst: SLOG
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:629,1
    - Dst: what
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:629,1
    - Dst: error
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:630,1
    - Dst: what
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:630,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:630,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:630,1
    - Dst: pdns::checked_stoi_into
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:639,1
    - Dst: SLOG
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:642,1
    - Dst: what
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:642,1
    - Dst: error
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:643,1
    - Dst: what
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:643,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:643,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:643,1
    - Dst: fillSOAData
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:648,1
    - Dst: SLOG
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:651,1
    - Dst: what
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:651,1
    - Dst: error
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:652,1
    - Dst: what
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:652,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:652,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:652,1
    - Dst: SLOG
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:656,1
    - Dst: info
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:657,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:657,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:657,1
    - Dst: DomainInfo::catalog::clear
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:664,1
    - Dst: DomainInfo::options::clear
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:665,1
    - Dst: emplace_back
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:667,1
    CyclomaticComplexity: 27
    EdgeCount: 27
    ICount: 81
    argCount: 3
    argNames:
    - ' updatedDomains'
    - ' catalogs'
    - ' catalogHashes'
    argTypes:
    - vector<DomainInfo>
    - std::unordered_set<DNSName>
    - CatalogHashMap
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 670
      start: 539
    functionDepth: 3
    functionLinenumber: 539
    functionLinenumberEnd: 670
    functionName: GSQLBackend::getUpdatedPrimaries
    functionSourceFile: /src/pdns/pdns/backends/gsql/gsqlbackend.cc
    functionUses: 0
    functionsReached:
    - PDNSException
    - CatalogInfo::updateCatalogHash
    - CatalogInfo::CatalogInfo
    - insert
    - error
    - emplace_back
    - std::string
    - SLOG
    - Logging::Loggable
    - GSQLBackend::reconnectIfNeeded
    - size
    - empty
    - DomainInfo::catalog::empty
    - pdns::checked_stoi_into
    - process
    - stringToKind
    - DomainInfo::catalog::clear
    - reserve
    - execute
    - fillSOAData
    - DomainInfo::options::clear
    - ASSERT_ROW_COLUMNS
    - what
    - static_cast<const char *>
    - info
    - ZoneName
    - txtReason
    linkageType: ''
    returnType: void
    signature: void GSQLBackend::getUpdatedPrimaries(vector<DomainInfo>& updatedDomains,
      std::unordered_set<DNSName>& catalogs, CatalogHashMap& catalogHashes)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: GSQLBackend::reconnectIfNeeded
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:675,1
    - Dst: bind
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:679,1
    - Dst: bind
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:688,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:696,1
    - Dst: std::string
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:696,1
    - Dst: CatalogInfo::getTypeString
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:696,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:700,1
    - Dst: std::string
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:700,1
    - Dst: txtReason
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:700,1
    - Dst: reserve
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:703,1
    - Dst: size
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:703,1
    - Dst: ASSERT_ROW_COLUMNS
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:706,1
    - Dst: ASSERT_ROW_COLUMNS
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:709,1
    - Dst: CatalogInfo::CatalogInfo
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:712,1
    - Dst: ZoneName
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:715,1
    - Dst: SLOG
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:718,1
    - Dst: what
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:718,1
    - Dst: error
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:719,1
    - Dst: what
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:719,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:719,1
    - Dst: clear
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:720,1
    - Dst: SLOG
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:724,1
    - Dst: error
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:725,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:725,1
    - Dst: clear
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:726,1
    - Dst: stringToKind
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:730,1
    - Dst: SLOG
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:734,1
    - Dst: info
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:735,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:735,1
    - Dst: clear
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:736,1
    - Dst: pdns::checked_stoi_into
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:741,1
    - Dst: SLOG
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:744,1
    - Dst: what
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:744,1
    - Dst: error
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:745,1
    - Dst: what
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:745,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:745,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:745,1
    - Dst: clear
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:746,1
    - Dst: CatalogInfo::fromJson
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:751,1
    - Dst: CatalogInfo::addGroup
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:753,1
    - Dst: SLOG
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:757,1
    - Dst: what
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:757,1
    - Dst: error
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:758,1
    - Dst: what
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:758,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:758,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:758,1
    - Dst: clear
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:759,1
    - Dst: stringtok
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:765,1
    - Dst: CatalogInfo::d_primaries::emplace_back
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:768,1
    - Dst: SLOG
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:771,1
    - Dst: error
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:772,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:772,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:772,1
    - Dst: clear
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:773,1
    - Dst: emplace_back
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:779,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 67
    argCount: 3
    argNames:
    - ' catalog'
    - ' members'
    - type
    argTypes:
    - ZoneName
    - vector<CatalogInfo>
    - CatalogInfo::CatalogType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 782
      start: 672
    functionDepth: 3
    functionLinenumber: 672
    functionLinenumberEnd: 782
    functionName: GSQLBackend::getCatalogMembers
    functionSourceFile: /src/pdns/pdns/backends/gsql/gsqlbackend.cc
    functionUses: 0
    functionsReached:
    - CatalogInfo::fromJson
    - PDNSException
    - CatalogInfo::CatalogInfo
    - CatalogInfo::d_primaries::emplace_back
    - emplace_back
    - error
    - std::string
    - SLOG
    - stringtok
    - Logging::Loggable
    - GSQLBackend::reconnectIfNeeded
    - CatalogInfo::addGroup
    - bind
    - size
    - clear
    - pdns::checked_stoi_into
    - stringToKind
    - reserve
    - CatalogInfo::getTypeString
    - ASSERT_ROW_COLUMNS
    - what
    - info
    - ZoneName
    - txtReason
    linkageType: ''
    returnType: bool
    signature: bool GSQLBackend::getCatalogMembers(const ZoneName& catalog, vector<CatalogInfo>&
      members, CatalogInfo::CatalogType type)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:789,1
    - Dst: GSQLBackend::reconnectIfNeeded
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:792,1
    - Dst: bind
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:795,1
    - Dst: labelReverse
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:796,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:805,1
    - Dst: toLogString
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:805,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:805,1
    - Dst: toLogString
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:805,1
    - Dst: txtReason
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:805,1
    - Dst: GSQLBackend::reconnectIfNeeded
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:809,1
    - Dst: bind
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:812,1
    - Dst: labelReverse
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:813,1
    - Dst: QType
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:817,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:823,1
    - Dst: toLogString
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:823,1
    - Dst: QType
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:823,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:823,1
    - Dst: txtReason
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:823,1
    - Dst: GSQLBackend::reconnectIfNeeded
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:828,1
    - Dst: bind
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:832,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:841,1
    - Dst: toLogString
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:841,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:841,1
    - Dst: txtReason
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:841,1
    - Dst: GSQLBackend::reconnectIfNeeded
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:845,1
    - Dst: bind
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:848,1
    - Dst: QType
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:852,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:858,1
    - Dst: toLogString
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:858,1
    - Dst: QType
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:858,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:858,1
    - Dst: txtReason
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:858,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 37
    argCount: 5
    argNames:
    - domain_id
    - ' qname'
    - ' ordername'
    - auth
    - qtype
    argTypes:
    - domainid_t
    - DNSName
    - DNSName
    - bool
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 863
      start: 784
    functionDepth: 3
    functionLinenumber: 784
    functionLinenumberEnd: 863
    functionName: GSQLBackend::updateDNSSECOrderNameAndAuth
    functionSourceFile: /src/pdns/pdns/backends/gsql/gsqlbackend.cc
    functionUses: 0
    functionsReached:
    - toLogString
    - std::to_string
    - PDNSException
    - GSQLBackend::reconnectIfNeeded
    - QType
    - bind
    - labelReverse
    - empty
    - txtReason
    linkageType: ''
    returnType: bool
    signature: bool GSQLBackend::updateDNSSECOrderNameAndAuth(domainid_t domain_id,
      const DNSName& qname, const DNSName& ordername, bool auth, const uint16_t qtype,
      bool /* isNsec3 */)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: GSQLBackend::reconnectIfNeeded
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:869,1
    - Dst: bind
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:872,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:879,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:879,1
    - Dst: txtReason
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:879,1
    - Dst: GSQLBackend::reconnectIfNeeded
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:886,1
    - Dst: bind
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:889,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:897,1
    - Dst: toLogString
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:897,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:897,1
    - Dst: txtReason
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:897,1
    - Dst: GSQLBackend::reconnectIfNeeded
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:904,1
    - Dst: bind
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:907,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:917,1
    - Dst: toLogString
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:917,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:917,1
    - Dst: txtReason
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:917,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 25
    argCount: 4
    argNames:
    - domain_id
    - ' insert'
    - ' erase'
    - remove
    argTypes:
    - domainid_t
    - set<DNSName>
    - set<DNSName>
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 922
      start: 865
    functionDepth: 3
    functionLinenumber: 865
    functionLinenumberEnd: 922
    functionName: GSQLBackend::updateEmptyNonTerminals
    functionSourceFile: /src/pdns/pdns/backends/gsql/gsqlbackend.cc
    functionUses: 0
    functionsReached:
    - toLogString
    - std::to_string
    - PDNSException
    - GSQLBackend::reconnectIfNeeded
    - bind
    - txtReason
    linkageType: ''
    returnType: bool
    signature: bool GSQLBackend::updateEmptyNonTerminals(domainid_t domain_id, set<DNSName>&
      insert, set<DNSName>& erase, bool remove)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 931
      start: 924
    functionDepth: 0
    functionLinenumber: 924
    functionLinenumberEnd: 931
    functionName: GSQLBackend::getCapabilities
    functionSourceFile: /src/pdns/pdns/backends/gsql/gsqlbackend.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int GSQLBackend::getCapabilities()
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: clear
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:938,1
    - Dst: GSQLBackend::reconnectIfNeeded
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:942,1
    - Dst: bind
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:945,1
    - Dst: labelReverse
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:946,1
    - Dst: hasNextRow
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:950,1
    - Dst: nextRow
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:951,1
    - Dst: ASSERT_ROW_COLUMNS
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:952,1
    - Dst: empty
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:953,1
    - Dst: DNSName
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:954,1
    - Dst: boost::replace_all_copy
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:954,1
    - Dst: reset
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:957,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:960,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:960,1
    - Dst: toLogString
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:960,1
    - Dst: txtReason
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:960,1
    - Dst: empty
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:963,1
    - Dst: GSQLBackend::reconnectIfNeeded
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:965,1
    - Dst: bind
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:968,1
    - Dst: hasNextRow
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:972,1
    - Dst: nextRow
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:973,1
    - Dst: ASSERT_ROW_COLUMNS
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:974,1
    - Dst: DNSName
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:975,1
    - Dst: boost::replace_all_copy
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:975,1
    - Dst: reset
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:977,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:980,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:980,1
    - Dst: toLogString
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:980,1
    - Dst: txtReason
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:980,1
    - Dst: empty
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:984,1
    - Dst: clear
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:985,1
    - Dst: GSQLBackend::reconnectIfNeeded
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:988,1
    - Dst: bind
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:991,1
    - Dst: labelReverse
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:992,1
    - Dst: hasNextRow
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:996,1
    - Dst: nextRow
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:997,1
    - Dst: ASSERT_ROW_COLUMNS
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:998,1
    - Dst: DNSName
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:999,1
    - Dst: boost::replace_all_copy
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:999,1
    - Dst: DNSName
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1001,1
    - Dst: reset
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1006,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1009,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1009,1
    - Dst: toLogString
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1009,1
    - Dst: txtReason
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1009,1
    - Dst: empty
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1012,1
    - Dst: GSQLBackend::reconnectIfNeeded
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1019,1
    - Dst: bind
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1022,1
    - Dst: hasNextRow
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1026,1
    - Dst: nextRow
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1027,1
    - Dst: ASSERT_ROW_COLUMNS
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1028,1
    - Dst: DNSName
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1029,1
    - Dst: boost::replace_all_copy
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1029,1
    - Dst: DNSName
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1031,1
    - Dst: reset
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1036,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1039,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1039,1
    - Dst: toLogString
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1039,1
    - Dst: txtReason
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1039,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 75
    argCount: 5
    argNames:
    - id
    - ' qname'
    - ' unhashed'
    - ' before'
    - ' after'
    argTypes:
    - domainid_t
    - DNSName
    - DNSName
    - DNSName
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1046
      start: 934
    functionDepth: 3
    functionLinenumber: 934
    functionLinenumberEnd: 1046
    functionName: GSQLBackend::getBeforeAndAfterNamesAbsolute
    functionSourceFile: /src/pdns/pdns/backends/gsql/gsqlbackend.cc
    functionUses: 0
    functionsReached:
    - reset
    - toLogString
    - boost::replace_all_copy
    - std::to_string
    - nextRow
    - ASSERT_ROW_COLUMNS
    - PDNSException
    - GSQLBackend::reconnectIfNeeded
    - bind
    - DNSName
    - hasNextRow
    - empty
    - labelReverse
    - clear
    - txtReason
    linkageType: ''
    returnType: bool
    signature: bool GSQLBackend::getBeforeAndAfterNamesAbsolute(domainid_t id, const
      DNSName& qname, DNSName& unhashed, DNSName& before, DNSName& after)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: GSQLBackend::reconnectIfNeeded
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1054,1
    - Dst: bind
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1057,1
    - Dst: hasNextRow
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1066,1
    - Dst: nextRow
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1068,1
    - Dst: pdns::checked_stoi_into
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1069,1
    - Dst: reset
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1070,1
    - Dst: reset
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1073,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1077,1
    - Dst: toLogString
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1077,1
    - Dst: txtReason
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1077,1
    - Dst: GSQLBackend::reconnectIfNeeded
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1081,1
    - Dst: execute
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1083,1
    - Dst: hasNextRow
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1084,1
    - Dst: nextRow
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1089,1
    - Dst: ASSERT_ROW_COLUMNS
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1090,1
    - Dst: pdns::checked_stoi_into
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1091,1
    - Dst: reset
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1092,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 36
    argCount: 3
    argNames:
    - ' name'
    - ' key'
    - ' keyId'
    argTypes:
    - ZoneName
    - KeyData
    - int64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1103
      start: 1048
    functionDepth: 3
    functionLinenumber: 1048
    functionLinenumberEnd: 1103
    functionName: GSQLBackend::addDomainKey
    functionSourceFile: /src/pdns/pdns/backends/gsql/gsqlbackend.cc
    functionUses: 0
    functionsReached:
    - reset
    - toLogString
    - nextRow
    - PDNSException
    - ASSERT_ROW_COLUMNS
    - GSQLBackend::reconnectIfNeeded
    - bind
    - hasNextRow
    - execute
    - txtReason
    - pdns::checked_stoi_into
    linkageType: ''
    returnType: bool
    signature: bool GSQLBackend::addDomainKey(const ZoneName& name, const KeyData&
      key, int64_t& keyId)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: GSQLBackend::reconnectIfNeeded
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1111,1
    - Dst: bind
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1114,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1122,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1122,1
    - Dst: toLogString
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1122,1
    - Dst: txtReason
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1122,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - ' name'
    - keyId
    argTypes:
    - ZoneName
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1125
      start: 1105
    functionDepth: 3
    functionLinenumber: 1105
    functionLinenumberEnd: 1125
    functionName: GSQLBackend::activateDomainKey
    functionSourceFile: /src/pdns/pdns/backends/gsql/gsqlbackend.cc
    functionUses: 0
    functionsReached:
    - toLogString
    - std::to_string
    - PDNSException
    - GSQLBackend::reconnectIfNeeded
    - bind
    - txtReason
    linkageType: ''
    returnType: bool
    signature: bool GSQLBackend::activateDomainKey(const ZoneName& name, unsigned
      int keyId)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: GSQLBackend::reconnectIfNeeded
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1133,1
    - Dst: bind
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1136,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1144,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1144,1
    - Dst: toLogString
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1144,1
    - Dst: txtReason
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1144,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - ' name'
    - keyId
    argTypes:
    - ZoneName
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1147
      start: 1127
    functionDepth: 3
    functionLinenumber: 1127
    functionLinenumberEnd: 1147
    functionName: GSQLBackend::deactivateDomainKey
    functionSourceFile: /src/pdns/pdns/backends/gsql/gsqlbackend.cc
    functionUses: 0
    functionsReached:
    - toLogString
    - std::to_string
    - PDNSException
    - GSQLBackend::reconnectIfNeeded
    - bind
    - txtReason
    linkageType: ''
    returnType: bool
    signature: bool GSQLBackend::deactivateDomainKey(const ZoneName& name, unsigned
      int keyId)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: GSQLBackend::reconnectIfNeeded
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1155,1
    - Dst: bind
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1158,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1166,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1166,1
    - Dst: toLogString
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1166,1
    - Dst: txtReason
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1166,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - ' name'
    - keyId
    argTypes:
    - ZoneName
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1169
      start: 1149
    functionDepth: 3
    functionLinenumber: 1149
    functionLinenumberEnd: 1169
    functionName: GSQLBackend::publishDomainKey
    functionSourceFile: /src/pdns/pdns/backends/gsql/gsqlbackend.cc
    functionUses: 0
    functionsReached:
    - toLogString
    - std::to_string
    - PDNSException
    - GSQLBackend::reconnectIfNeeded
    - bind
    - txtReason
    linkageType: ''
    returnType: bool
    signature: bool GSQLBackend::publishDomainKey(const ZoneName& name, unsigned int
      keyId)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: GSQLBackend::reconnectIfNeeded
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1177,1
    - Dst: bind
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1180,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1188,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1188,1
    - Dst: toLogString
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1188,1
    - Dst: txtReason
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1188,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - ' name'
    - keyId
    argTypes:
    - ZoneName
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1191
      start: 1171
    functionDepth: 3
    functionLinenumber: 1171
    functionLinenumberEnd: 1191
    functionName: GSQLBackend::unpublishDomainKey
    functionSourceFile: /src/pdns/pdns/backends/gsql/gsqlbackend.cc
    functionUses: 0
    functionsReached:
    - toLogString
    - std::to_string
    - PDNSException
    - GSQLBackend::reconnectIfNeeded
    - bind
    - txtReason
    linkageType: ''
    returnType: bool
    signature: bool GSQLBackend::unpublishDomainKey(const ZoneName& name, unsigned
      int keyId)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: GSQLBackend::reconnectIfNeeded
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1199,1
    - Dst: bind
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1202,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1210,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1210,1
    - Dst: toLogString
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1210,1
    - Dst: txtReason
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1210,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - ' name'
    - keyId
    argTypes:
    - ZoneName
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1213
      start: 1193
    functionDepth: 3
    functionLinenumber: 1193
    functionLinenumberEnd: 1213
    functionName: GSQLBackend::removeDomainKey
    functionSourceFile: /src/pdns/pdns/backends/gsql/gsqlbackend.cc
    functionUses: 0
    functionsReached:
    - toLogString
    - std::to_string
    - PDNSException
    - GSQLBackend::reconnectIfNeeded
    - bind
    - txtReason
    linkageType: ''
    returnType: bool
    signature: bool GSQLBackend::removeDomainKey(const ZoneName& name, unsigned int
      keyId)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: GSQLBackend::reconnectIfNeeded
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1218,1
    - Dst: bind
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1221,1
    - Dst: hasNextRow
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1228,1
    - Dst: nextRow
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1229,1
    - Dst: ASSERT_ROW_COLUMNS
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1230,1
    - Dst: empty
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1232,1
    - Dst: DNSName
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1232,1
    - Dst: DNSName
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1233,1
    - Dst: reset
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1239,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1242,1
    - Dst: toLogString
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1242,1
    - Dst: txtReason
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1242,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    argCount: 3
    argNames:
    - ' name'
    - ' algorithm'
    - ' content'
    argTypes:
    - DNSName
    - DNSName
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1246
      start: 1215
    functionDepth: 3
    functionLinenumber: 1215
    functionLinenumberEnd: 1246
    functionName: GSQLBackend::getTSIGKey
    functionSourceFile: /src/pdns/pdns/backends/gsql/gsqlbackend.cc
    functionUses: 0
    functionsReached:
    - reset
    - toLogString
    - nextRow
    - ASSERT_ROW_COLUMNS
    - PDNSException
    - GSQLBackend::reconnectIfNeeded
    - bind
    - DNSName
    - hasNextRow
    - empty
    - txtReason
    linkageType: ''
    returnType: bool
    signature: bool GSQLBackend::getTSIGKey(const DNSName& name, DNSName& algorithm,
      string& content)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: GSQLBackend::reconnectIfNeeded
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1251,1
    - Dst: bind
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1254,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1263,1
    - Dst: toLogString
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1263,1
    - Dst: toString
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1263,1
    - Dst: txtReason
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1263,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - ' name'
    - ' algorithm'
    - ' content'
    argTypes:
    - DNSName
    - DNSName
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1266
      start: 1248
    functionDepth: 3
    functionLinenumber: 1248
    functionLinenumberEnd: 1266
    functionName: GSQLBackend::setTSIGKey
    functionSourceFile: /src/pdns/pdns/backends/gsql/gsqlbackend.cc
    functionUses: 0
    functionsReached:
    - toLogString
    - toString
    - PDNSException
    - GSQLBackend::reconnectIfNeeded
    - bind
    - txtReason
    linkageType: ''
    returnType: bool
    signature: bool GSQLBackend::setTSIGKey(const DNSName& name, const DNSName& algorithm,
      const string& content)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: GSQLBackend::reconnectIfNeeded
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1271,1
    - Dst: bind
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1274,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1281,1
    - Dst: toLogString
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1281,1
    - Dst: txtReason
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1281,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - ' name'
    argTypes:
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1284
      start: 1268
    functionDepth: 3
    functionLinenumber: 1268
    functionLinenumberEnd: 1284
    functionName: GSQLBackend::deleteTSIGKey
    functionSourceFile: /src/pdns/pdns/backends/gsql/gsqlbackend.cc
    functionUses: 0
    functionsReached:
    - toLogString
    - PDNSException
    - GSQLBackend::reconnectIfNeeded
    - bind
    - txtReason
    linkageType: ''
    returnType: bool
    signature: bool GSQLBackend::deleteTSIGKey(const DNSName& name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: GSQLBackend::reconnectIfNeeded
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1289,1
    - Dst: execute
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1292,1
    - Dst: hasNextRow
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1298,1
    - Dst: nextRow
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1299,1
    - Dst: ASSERT_ROW_COLUMNS
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1300,1
    - Dst: DNSName
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1303,1
    - Dst: DNSName
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1304,1
    - Dst: std::vector< struct TSIGKey >::push_back
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1309,1
    - Dst: reset
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1312,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1315,1
    - Dst: txtReason
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1315,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 21
    argCount: 1
    argNames:
    - keys
    argTypes:
    - std::vector< struct TSIGKey >
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1319
      start: 1286
    functionDepth: 3
    functionLinenumber: 1286
    functionLinenumberEnd: 1319
    functionName: GSQLBackend::getTSIGKeys
    functionSourceFile: /src/pdns/pdns/backends/gsql/gsqlbackend.cc
    functionUses: 0
    functionsReached:
    - reset
    - nextRow
    - ASSERT_ROW_COLUMNS
    - PDNSException
    - GSQLBackend::reconnectIfNeeded
    - DNSName
    - hasNextRow
    - execute
    - txtReason
    - std::vector< struct TSIGKey >::push_back
    linkageType: ''
    returnType: bool
    signature: bool GSQLBackend::getTSIGKeys(std::vector< struct TSIGKey > &keys)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: GSQLBackend::reconnectIfNeeded
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1327,1
    - Dst: bind
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1330,1
    - Dst: hasNextRow
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1337,1
    - Dst: nextRow
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1338,1
    - Dst: ASSERT_ROW_COLUMNS
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1339,1
    - Dst: pdns::checked_stoi_into
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1343,1
    - Dst: pdns::checked_stoi_into
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1344,1
    - Dst: push_back
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1348,1
    - Dst: reset
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1351,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1354,1
    - Dst: txtReason
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1354,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 21
    argCount: 2
    argNames:
    - ' name'
    - ' keys'
    argTypes:
    - ZoneName
    - std::vector<KeyData>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1358
      start: 1321
    functionDepth: 3
    functionLinenumber: 1321
    functionLinenumberEnd: 1358
    functionName: GSQLBackend::getDomainKeys
    functionSourceFile: /src/pdns/pdns/backends/gsql/gsqlbackend.cc
    functionUses: 0
    functionsReached:
    - reset
    - nextRow
    - ASSERT_ROW_COLUMNS
    - push_back
    - GSQLBackend::reconnectIfNeeded
    - PDNSException
    - bind
    - hasNextRow
    - txtReason
    - pdns::checked_stoi_into
    linkageType: ''
    returnType: bool
    signature: bool GSQLBackend::getDomainKeys(const ZoneName& name, std::vector<KeyData>&
      keys)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: GSQLBackend::reconnectIfNeeded
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1363,1
    - Dst: bind
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1366,1
    - Dst: hasNextRow
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1373,1
    - Dst: nextRow
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1374,1
    - Dst: ASSERT_ROW_COLUMNS
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1375,1
    - Dst: isDnssecDomainMetadata
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1377,1
    - Dst: push_back
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1378,1
    - Dst: reset
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1381,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1384,1
    - Dst: toLogString
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1384,1
    - Dst: txtReason
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1384,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 2
    argNames:
    - ' name'
    - ' meta'
    argTypes:
    - ZoneName
    - std::map<std::string, std::vector<std::string> >
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1388
      start: 1360
    functionDepth: 3
    functionLinenumber: 1360
    functionLinenumberEnd: 1388
    functionName: GSQLBackend::getAllDomainMetadata
    functionSourceFile: /src/pdns/pdns/backends/gsql/gsqlbackend.cc
    functionUses: 0
    functionsReached:
    - reset
    - toLogString
    - nextRow
    - ASSERT_ROW_COLUMNS
    - push_back
    - GSQLBackend::reconnectIfNeeded
    - PDNSException
    - bind
    - hasNextRow
    - txtReason
    - isDnssecDomainMetadata
    linkageType: ''
    returnType: bool
    signature: bool GSQLBackend::getAllDomainMetadata(const ZoneName& name, std::map<std::string,
      std::vector<std::string> >& meta)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: isDnssecDomainMetadata
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1392,1
    - Dst: GSQLBackend::reconnectIfNeeded
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1396,1
    - Dst: bind
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1399,1
    - Dst: hasNextRow
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1407,1
    - Dst: nextRow
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1408,1
    - Dst: ASSERT_ROW_COLUMNS
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1409,1
    - Dst: push_back
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1410,1
    - Dst: reset
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1413,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1416,1
    - Dst: toLogString
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1416,1
    - Dst: txtReason
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1416,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 3
    argNames:
    - ' name'
    - ' kind'
    - ' meta'
    argTypes:
    - ZoneName
    - std::string
    - std::vector<std::string>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1420
      start: 1390
    functionDepth: 3
    functionLinenumber: 1390
    functionLinenumberEnd: 1420
    functionName: GSQLBackend::getDomainMetadata
    functionSourceFile: /src/pdns/pdns/backends/gsql/gsqlbackend.cc
    functionUses: 0
    functionsReached:
    - reset
    - toLogString
    - nextRow
    - ASSERT_ROW_COLUMNS
    - push_back
    - GSQLBackend::reconnectIfNeeded
    - PDNSException
    - bind
    - hasNextRow
    - txtReason
    - isDnssecDomainMetadata
    linkageType: ''
    returnType: bool
    signature: bool GSQLBackend::getDomainMetadata(const ZoneName& name, const std::string&
      kind, std::vector<std::string>& meta)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: isDnssecDomainMetadata
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1424,1
    - Dst: GSQLBackend::reconnectIfNeeded
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1428,1
    - Dst: bind
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1431,1
    - Dst: empty
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1437,1
    - Dst: bind
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1440,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1451,1
    - Dst: toLogString
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1451,1
    - Dst: txtReason
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1451,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 3
    argNames:
    - ' name'
    - ' kind'
    - ' meta'
    argTypes:
    - ZoneName
    - std::string
    - std::vector<std::string>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1455
      start: 1422
    functionDepth: 3
    functionLinenumber: 1422
    functionLinenumberEnd: 1455
    functionName: GSQLBackend::setDomainMetadata
    functionSourceFile: /src/pdns/pdns/backends/gsql/gsqlbackend.cc
    functionUses: 0
    functionsReached:
    - toLogString
    - PDNSException
    - GSQLBackend::reconnectIfNeeded
    - bind
    - empty
    - txtReason
    - isDnssecDomainMetadata
    linkageType: ''
    returnType: bool
    signature: bool GSQLBackend::setDomainMetadata(const ZoneName& name, const std::string&
      kind, const std::vector<std::string>& meta)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: GSQLBackend::reconnectIfNeeded
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1460,1
    - Dst: getCode
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1462,1
    - Dst: bind
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1467,1
    - Dst: toString
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1468,1
    - Dst: bind
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1475,1
    - Dst: toString
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1476,1
    - Dst: bind
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1487,1
    - Dst: bind
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1494,1
    - Dst: execute
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1501,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1505,1
    - Dst: toLogString
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1505,1
    - Dst: toString
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1505,1
    - Dst: txtReason
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1505,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 30
    argCount: 3
    argNames:
    - ' qtype'
    - ' qname'
    - domain_id
    argTypes:
    - QType
    - DNSName
    - domainid_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1510
      start: 1457
    functionDepth: 3
    functionLinenumber: 1457
    functionLinenumberEnd: 1510
    functionName: GSQLBackend::lookup
    functionSourceFile: /src/pdns/pdns/backends/gsql/gsqlbackend.cc
    functionUses: 0
    functionsReached:
    - toLogString
    - toString
    - PDNSException
    - GSQLBackend::reconnectIfNeeded
    - bind
    - execute
    - txtReason
    - getCode
    linkageType: ''
    returnType: void
    signature: void GSQLBackend::lookup(const QType& qtype, const DNSName& qname,
      domainid_t domain_id, DNSPacket* /* pkt_p */)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: GSQLBackend::reconnectIfNeeded
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1515,1
    - Dst: getCode
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1517,1
    - Dst: bind
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1521,1
    - Dst: toString
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1523,1
    - Dst: bind
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1532,1
    - Dst: execute
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1539,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1543,1
    - Dst: toLogString
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1543,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1543,1
    - Dst: toString
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1543,1
    - Dst: txtReason
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1543,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 4
    argNames:
    - ' qtype'
    - ' qname'
    - domain_id
    - include_disabled
    argTypes:
    - QType
    - DNSName
    - domainid_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1548
      start: 1512
    functionDepth: 3
    functionLinenumber: 1512
    functionLinenumberEnd: 1548
    functionName: GSQLBackend::APILookup
    functionSourceFile: /src/pdns/pdns/backends/gsql/gsqlbackend.cc
    functionUses: 0
    functionsReached:
    - toLogString
    - toString
    - std::to_string
    - PDNSException
    - GSQLBackend::reconnectIfNeeded
    - bind
    - execute
    - txtReason
    - getCode
    linkageType: ''
    returnType: void
    signature: void GSQLBackend::APILookup(const QType& qtype, const DNSName& qname,
      domainid_t domain_id, bool include_disabled)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DLOG
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1552,1
    - Dst: SLOG
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1552,1
    - Dst: info
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1553,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1553,1
    - Dst: GSQLBackend::reconnectIfNeeded
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1556,1
    - Dst: bind
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1561,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1568,1
    - Dst: ZoneName::toLogString
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1568,1
    - Dst: txtReason
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1568,1
    - Dst: clear
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1572,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 3
    argNames:
    - target
    - domain_id
    - include_disabled
    argTypes:
    - ZoneName
    - domainid_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1575
      start: 1550
    functionDepth: 3
    functionLinenumber: 1550
    functionLinenumberEnd: 1575
    functionName: GSQLBackend::list
    functionSourceFile: /src/pdns/pdns/backends/gsql/gsqlbackend.cc
    functionUses: 0
    functionsReached:
    - SLOG
    - Logging::Loggable
    - PDNSException
    - GSQLBackend::reconnectIfNeeded
    - bind
    - info
    - ZoneName::toLogString
    - DLOG
    - clear
    - txtReason
    linkageType: ''
    returnType: bool
    signature: bool GSQLBackend::list(const ZoneName &target, domainid_t domain_id,
      bool include_disabled)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ZoneName::makeLowerCase
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1579,1
    - Dst: GSQLBackend::reconnectIfNeeded
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1582,1
    - Dst: bind
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1587,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1595,1
    - Dst: ZoneName::toLogString
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1595,1
    - Dst: txtReason
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1595,1
    - Dst: clear
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1599,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 2
    argNames:
    - zone
    - domain_id
    argTypes:
    - ZoneName
    - domainid_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1602
      start: 1577
    functionDepth: 3
    functionLinenumber: 1577
    functionLinenumberEnd: 1602
    functionName: GSQLBackend::listSubZone
    functionSourceFile: /src/pdns/pdns/backends/gsql/gsqlbackend.cc
    functionUses: 0
    functionsReached:
    - PDNSException
    - GSQLBackend::reconnectIfNeeded
    - bind
    - ZoneName::toLogString
    - clear
    - txtReason
    - ZoneName::makeLowerCase
    linkageType: ''
    returnType: bool
    signature: bool GSQLBackend::listSubZone(const ZoneName &zone, domainid_t domain_id)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: SLOG
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1607,1
    - Dst: toString
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1607,1
    - Dst: info
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1608,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1608,1
    - Dst: hasNextRow
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1613,1
    - Dst: nextRow
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1615,1
    - Dst: ASSERT_ROW_COLUMNS
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1617,1
    - Dst: ASSERT_ROW_COLUMNS
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1620,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1623,1
    - Dst: txtReason
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1623,1
    - Dst: GSQLBackend::extractRecord
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1626,1
    - Dst: reset
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1634,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1636,1
    - Dst: txtReason
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1636,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 30
    argCount: 1
    argNames:
    - r
    argTypes:
    - DNSResourceRecord
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1640
      start: 1604
    functionDepth: 1
    functionLinenumber: 1604
    functionLinenumberEnd: 1640
    functionName: GSQLBackend::get
    functionSourceFile: /src/pdns/pdns/backends/gsql/gsqlbackend.cc
    functionUses: 0
    functionsReached:
    - reset
    - SLOG
    - toString
    - Logging::Loggable
    - nextRow
    - ASSERT_ROW_COLUMNS
    - PDNSException
    - info
    - hasNextRow
    - GSQLBackend::extractRecord
    - txtReason
    linkageType: ''
    returnType: bool
    signature: bool GSQLBackend::get(DNSResourceRecord &r)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: hasNextRow
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1646,1
    - Dst: nextRow
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1648,1
    - Dst: ASSERT_ROW_COLUMNS
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1650,1
    - Dst: ASSERT_ROW_COLUMNS
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1653,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1656,1
    - Dst: txtReason
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1656,1
    - Dst: GSQLBackend::extractRecord_unsafe
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1658,1
    - Dst: reset
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1663,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1665,1
    - Dst: txtReason
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1665,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 22
    argCount: 2
    argNames:
    - ' rec'
    - ' invalid'
    argTypes:
    - DNSResourceRecord
    - std::vector<std::pair<std::string, std::string>>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1669
      start: 1642
    functionDepth: 1
    functionLinenumber: 1642
    functionLinenumberEnd: 1669
    functionName: GSQLBackend::get_unsafe
    functionSourceFile: /src/pdns/pdns/backends/gsql/gsqlbackend.cc
    functionUses: 0
    functionsReached:
    - GSQLBackend::extractRecord_unsafe
    - reset
    - nextRow
    - ASSERT_ROW_COLUMNS
    - PDNSException
    - hasNextRow
    - txtReason
    linkageType: ''
    returnType: bool
    signature: bool GSQLBackend::get_unsafe(DNSResourceRecord& rec, std::vector<std::pair<std::string,
      std::string>>& invalid)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: GSQLBackend::reconnectIfNeeded
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1674,1
    - Dst: bind
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1677,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1686,1
    - Dst: txtReason
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1686,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - ' primary'
    argTypes:
    - AutoPrimary
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1689
      start: 1671
    functionDepth: 3
    functionLinenumber: 1671
    functionLinenumberEnd: 1689
    functionName: GSQLBackend::autoPrimaryAdd
    functionSourceFile: /src/pdns/pdns/backends/gsql/gsqlbackend.cc
    functionUses: 0
    functionsReached:
    - PDNSException
    - txtReason
    - GSQLBackend::reconnectIfNeeded
    - bind
    linkageType: ''
    returnType: bool
    signature: bool GSQLBackend::autoPrimaryAdd(const AutoPrimary& primary)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: GSQLBackend::reconnectIfNeeded
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1694,1
    - Dst: bind
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1697,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1705,1
    - Dst: txtReason
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1705,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - ' primary'
    argTypes:
    - AutoPrimary
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1708
      start: 1691
    functionDepth: 3
    functionLinenumber: 1691
    functionLinenumberEnd: 1708
    functionName: GSQLBackend::autoPrimaryRemove
    functionSourceFile: /src/pdns/pdns/backends/gsql/gsqlbackend.cc
    functionUses: 0
    functionsReached:
    - PDNSException
    - txtReason
    - GSQLBackend::reconnectIfNeeded
    - bind
    linkageType: ''
    returnType: bool
    signature: bool GSQLBackend::autoPrimaryRemove(const AutoPrimary& primary)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: GSQLBackend::reconnectIfNeeded
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1713,1
    - Dst: execute
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1716,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1723,1
    - Dst: txtReason
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1723,1
    - Dst: ASSERT_ROW_COLUMNS
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1727,1
    - Dst: emplace_back
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1728,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - ' primaries'
    argTypes:
    - std::vector<AutoPrimary>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1732
      start: 1710
    functionDepth: 3
    functionLinenumber: 1710
    functionLinenumberEnd: 1732
    functionName: GSQLBackend::autoPrimariesList
    functionSourceFile: /src/pdns/pdns/backends/gsql/gsqlbackend.cc
    functionUses: 0
    functionsReached:
    - PDNSException
    - ASSERT_ROW_COLUMNS
    - GSQLBackend::reconnectIfNeeded
    - execute
    - emplace_back
    - txtReason
    linkageType: ''
    returnType: bool
    signature: bool GSQLBackend::autoPrimariesList(std::vector<AutoPrimary>& primaries)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: GSQLBackend::reconnectIfNeeded
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1739,1
    - Dst: bind
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1742,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1751,1
    - Dst: toLogString
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1751,1
    - Dst: txtReason
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1751,1
    - Dst: empty
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1753,1
    - Dst: ASSERT_ROW_COLUMNS
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1754,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 6
    argNames:
    - ' ipAddress'
    - ' domain'
    - ' nsset'
    - nameserver
    - account
    - ddb
    argTypes:
    - string
    - ZoneName
    - vector<DNSResourceRecord>
    - string*
    - string*
    - DNSBackend**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1762
      start: 1734
    functionDepth: 3
    functionLinenumber: 1734
    functionLinenumberEnd: 1762
    functionName: GSQLBackend::autoPrimaryBackend
    functionSourceFile: /src/pdns/pdns/backends/gsql/gsqlbackend.cc
    functionUses: 0
    functionsReached:
    - toLogString
    - PDNSException
    - ASSERT_ROW_COLUMNS
    - GSQLBackend::reconnectIfNeeded
    - bind
    - empty
    - txtReason
    linkageType: ''
    returnType: bool
    signature: bool GSQLBackend::autoPrimaryBackend(const string& ipAddress, const
      ZoneName& domain, const vector<DNSResourceRecord>& nsset, string* nameserver,
      string* account, DNSBackend** ddb)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vector::reserve
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1767,1
    - Dst: size
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1767,1
    - Dst: vector::push_back
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1769,1
    - Dst: toStringWithPortExcept
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1769,1
    - Dst: GSQLBackend::reconnectIfNeeded
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1773,1
    - Dst: bind
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1776,1
    - Dst: toUpper
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1777,1
    - Dst: getKindString
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1777,1
    - Dst: boost::join
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1779,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1786,1
    - Dst: toLogString
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1786,1
    - Dst: txtReason
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1786,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 4
    argNames:
    - ' domain'
    - kind
    - ' primaries'
    - ' account'
    argTypes:
    - ZoneName
    - DomainInfo::DomainKind
    - vector<ComboAddress>
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1789
      start: 1764
    functionDepth: 3
    functionLinenumber: 1764
    functionLinenumberEnd: 1789
    functionName: GSQLBackend::createDomain
    functionSourceFile: /src/pdns/pdns/backends/gsql/gsqlbackend.cc
    functionUses: 0
    functionsReached:
    - toLogString
    - vector::push_back
    - PDNSException
    - txtReason
    - GSQLBackend::reconnectIfNeeded
    - toUpper
    - bind
    - size
    - getKindString
    - boost::join
    - vector::reserve
    - toStringWithPortExcept
    linkageType: ''
    returnType: bool
    signature: bool GSQLBackend::createDomain(const ZoneName& domain, const DomainInfo::DomainKind
      kind, const vector<ComboAddress>& primaries, const string& account)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ComboAddress
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1794,1
    - Dst: empty
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1796,1
    - Dst: GSQLBackend::reconnectIfNeeded
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1798,1
    - Dst: bind
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1801,1
    - Dst: empty
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1808,1
    - Dst: vector::emplace_back
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1813,1
    - Dst: std::move
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1817,1
    - Dst: GSQLBackend::createDomain
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1820,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1823,1
    - Dst: toLogString
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1823,1
    - Dst: txtReason
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1823,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 4
    argNames:
    - ' ipAddress'
    - ' domain'
    - ' nameserver'
    - ' account'
    argTypes:
    - string
    - ZoneName
    - string
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1826
      start: 1791
    functionDepth: 4
    functionLinenumber: 1791
    functionLinenumberEnd: 1826
    functionName: GSQLBackend::createSecondaryDomain
    functionSourceFile: /src/pdns/pdns/backends/gsql/gsqlbackend.cc
    functionUses: 0
    functionsReached:
    - std::move
    - toLogString
    - PDNSException
    - GSQLBackend::reconnectIfNeeded
    - bind
    - GSQLBackend::createDomain
    - vector::emplace_back
    - empty
    - txtReason
    - ComboAddress
    linkageType: ''
    returnType: bool
    signature: bool GSQLBackend::createSecondaryDomain(const string& ipAddress, const
      ZoneName& domain, const string& nameserver, const string& account)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PDNSException
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1831,1
    - Dst: GSQLBackend::getDomainInfo
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1835,1
    - Dst: GSQLBackend::reconnectIfNeeded
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1840,1
    - Dst: bind
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1843,1
    - Dst: bind
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1847,1
    - Dst: bind
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1851,1
    - Dst: bind
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1855,1
    - Dst: bind
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1859,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1866,1
    - Dst: ZoneName::toLogString
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1866,1
    - Dst: txtReason
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1866,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 1
    argNames:
    - domain
    argTypes:
    - ZoneName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1869
      start: 1828
    functionDepth: 4
    functionLinenumber: 1828
    functionLinenumberEnd: 1869
    functionName: GSQLBackend::deleteDomain
    functionSourceFile: /src/pdns/pdns/backends/gsql/gsqlbackend.cc
    functionUses: 0
    functionsReached:
    - PDNSException
    - GSQLBackend::reconnectIfNeeded
    - bind
    - ZoneName::toLogString
    - txtReason
    - GSQLBackend::getDomainInfo
    linkageType: ''
    returnType: bool
    signature: bool GSQLBackend::deleteDomain(const ZoneName &domain)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: DLOG
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1873,1
    - Dst: SLOG
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1873,1
    - Dst: info
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1874,1
    - Dst: GSQLBackend::reconnectIfNeeded
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1877,1
    - Dst: bind
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1880,1
    - Dst: hasNextRow
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1886,1
    - Dst: nextRow
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1887,1
    - Dst: ASSERT_ROW_COLUMNS
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1888,1
    - Dst: pdns::checked_stoi_into
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1890,1
    - Dst: ZoneName
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1892,1
    - Dst: empty
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1893,1
    - Dst: ZoneName
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1894,1
    - Dst: pdns_iequals
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1900,1
    - Dst: pdns_iequals
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1902,1
    - Dst: pdns_iequals
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1904,1
    - Dst: pdns_iequals
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1907,1
    - Dst: pdns_iequals
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1910,1
    - Dst: SLOG
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1914,1
    - Dst: info
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1915,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1915,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1915,1
    - Dst: empty
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1919,1
    - Dst: stringtok
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1921,1
    - Dst: DomainInfo::primaries::emplace_back
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1924,1
    - Dst: SLOG
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1926,1
    - Dst: error
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1927,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1927,1
    - Dst: Logging::Loggable
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1927,1
    - Dst: empty
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1932,1
    - Dst: fillSOAData
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1935,1
    - Dst: pdns::checked_stoi_into
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1944,1
    - Dst: pdns::checked_stoi_into
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1945,1
    - Dst: vector<DomainInfo>*::push_back
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1954,1
    - Dst: std::move
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1954,1
    - Dst: reset
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1956,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1959,1
    - Dst: txtReason
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1959,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 66
    argCount: 3
    argNames:
    - domains
    - getSerial
    - include_disabled
    argTypes:
    - vector<DomainInfo>*
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1961
      start: 1871
    functionDepth: 3
    functionLinenumber: 1871
    functionLinenumberEnd: 1961
    functionName: GSQLBackend::getAllDomains
    functionSourceFile: /src/pdns/pdns/backends/gsql/gsqlbackend.cc
    functionUses: 0
    functionsReached:
    - nextRow
    - PDNSException
    - error
    - vector<DomainInfo>*::push_back
    - reset
    - SLOG
    - stringtok
    - Logging::Loggable
    - GSQLBackend::reconnectIfNeeded
    - bind
    - DomainInfo::primaries::emplace_back
    - empty
    - pdns::checked_stoi_into
    - pdns_iequals
    - txtReason
    - fillSOAData
    - std::move
    - ASSERT_ROW_COLUMNS
    - info
    - hasNextRow
    - DLOG
    - ZoneName
    linkageType: ''
    returnType: void
    signature: void GSQLBackend::getAllDomains(vector<DomainInfo>* domains, bool getSerial,
      bool include_disabled)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: GSQLBackend::reconnectIfNeeded
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1967,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1970,1
    - Dst: bind
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1976,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1979,1
    - Dst: getCode
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1979,1
    - Dst: bind
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1985,1
    - Dst: toString
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1988,1
    - Dst: bind
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:1994,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2003,1
    - Dst: toLogString
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2003,1
    - Dst: toString
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2003,1
    - Dst: txtReason
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2003,1
    - Dst: empty
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2006,1
    - Dst: GSQLBackend::reconnectIfNeeded
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2008,1
    - Dst: bind
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2011,1
    - Dst: toString
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2014,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2020,1
    - Dst: toLogString
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2020,1
    - Dst: toString
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2020,1
    - Dst: txtReason
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2020,1
    - Dst: GSQLBackend::feedRecord
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2024,1
    - Dst: DNSName
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2024,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 28
    argCount: 4
    argNames:
    - domain_id
    - ' qname'
    - ' qt'
    - ' rrset'
    argTypes:
    - domainid_t
    - DNSName
    - QType
    - vector<DNSResourceRecord>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2028
      start: 1964
    functionDepth: 3
    functionLinenumber: 1964
    functionLinenumberEnd: 2028
    functionName: GSQLBackend::replaceRRSet
    functionSourceFile: /src/pdns/pdns/backends/gsql/gsqlbackend.cc
    functionUses: 0
    functionsReached:
    - toLogString
    - toString
    - std::to_string
    - PDNSException
    - GSQLBackend::reconnectIfNeeded
    - bind
    - DNSName
    - empty
    - txtReason
    - getCode
    - GSQLBackend::feedRecord
    linkageType: ''
    returnType: bool
    signature: bool GSQLBackend::replaceRRSet(domainid_t domain_id, const DNSName&
      qname, const QType& qt, const vector<DNSResourceRecord>& rrset)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: string::find_first_not_of
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2035,1
    - Dst: pdns::checked_stoi_into
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2037,1
    - Dst: string::substr
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2037,1
    - Dst: boost::erase_head
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2038,1
    - Dst: boost::trim_left
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2040,1
    - Dst: GSQLBackend::reconnectIfNeeded
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2044,1
    - Dst: bind
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2047,1
    - Dst: qtype::toString
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2051,1
    - Dst: empty
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2057,1
    - Dst: bind
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2058,1
    - Dst: labelReverse
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2058,1
    - Dst: bindNull
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2060,1
    - Dst: bind
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2063,1
    - Dst: bind
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2065,1
    - Dst: execute
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2067,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2072,1
    - Dst: qname::toLogString
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2072,1
    - Dst: qtype::toString
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2072,1
    - Dst: txtReason
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2072,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 22
    argCount: 2
    argNames:
    - ' r'
    - ' ordername'
    argTypes:
    - DNSResourceRecord
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2075
      start: 2030
    functionDepth: 3
    functionLinenumber: 2030
    functionLinenumberEnd: 2075
    functionName: GSQLBackend::feedRecord
    functionSourceFile: /src/pdns/pdns/backends/gsql/gsqlbackend.cc
    functionUses: 1
    functionsReached:
    - bindNull
    - boost::erase_head
    - boost::trim_left
    - qtype::toString
    - PDNSException
    - qname::toLogString
    - GSQLBackend::reconnectIfNeeded
    - bind
    - string::substr
    - labelReverse
    - execute
    - string::find_first_not_of
    - empty
    - txtReason
    - pdns::checked_stoi_into
    linkageType: ''
    returnType: bool
    signature: bool GSQLBackend::feedRecord(const DNSResourceRecord& r, const DNSName&
      ordername, bool /* ordernameIsNSEC3 */)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: GSQLBackend::reconnectIfNeeded
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2081,1
    - Dst: bind
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2084,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2094,1
    - Dst: first::toLogString
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2094,1
    - Dst: txtReason
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2094,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 2
    argNames:
    - domain_id
    - ' nonterm'
    argTypes:
    - domainid_t
    - map<DNSName,bool>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2098
      start: 2077
    functionDepth: 3
    functionLinenumber: 2077
    functionLinenumberEnd: 2098
    functionName: GSQLBackend::feedEnts
    functionSourceFile: /src/pdns/pdns/backends/gsql/gsqlbackend.cc
    functionUses: 0
    functionsReached:
    - first::toLogString
    - PDNSException
    - GSQLBackend::reconnectIfNeeded
    - bind
    - txtReason
    linkageType: ''
    returnType: bool
    signature: bool GSQLBackend::feedEnts(domainid_t domain_id, map<DNSName,bool>&
      nonterm)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: GSQLBackend::reconnectIfNeeded
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2109,1
    - Dst: bind
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2112,1
    - Dst: bindNull
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2118,1
    - Dst: toBase32Hex
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2122,1
    - Dst: hashQNameWithSalt
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2122,1
    - Dst: bind
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2124,1
    - Dst: bind
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2129,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2136,1
    - Dst: first::toLogString
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2136,1
    - Dst: toBase32Hex
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2136,1
    - Dst: hashQNameWithSalt
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2136,1
    - Dst: txtReason
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2136,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 4
    argNames:
    - domain_id
    - ' nonterm'
    - ' ns3prc'
    - narrow
    argTypes:
    - domainid_t
    - map<DNSName, bool>
    - NSEC3PARAMRecordContent
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2140
      start: 2100
    functionDepth: 3
    functionLinenumber: 2100
    functionLinenumberEnd: 2140
    functionName: GSQLBackend::feedEnts3
    functionSourceFile: /src/pdns/pdns/backends/gsql/gsqlbackend.cc
    functionUses: 0
    functionsReached:
    - bindNull
    - first::toLogString
    - PDNSException
    - GSQLBackend::reconnectIfNeeded
    - bind
    - toBase32Hex
    - txtReason
    - hashQNameWithSalt
    linkageType: ''
    returnType: bool
    signature: bool GSQLBackend::feedEnts3(domainid_t domain_id, const DNSName& /*
      domain */, map<DNSName, bool>& nonterm, const NSEC3PARAMRecordContent& ns3prc,
      bool narrow)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: GSQLBackend::reconnectIfNeeded
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2145,1
    - Dst: GSQLBackend::inTransaction
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2147,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2148,1
    - Dst: ZoneName::toLogString
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2148,1
    - Dst: GSQLBackend::startTransaction
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2150,1
    - Dst: bind
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2154,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2163,1
    - Dst: ZoneName::toLogString
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2163,1
    - Dst: txtReason
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2163,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 2
    argNames:
    - domain
    - domain_id
    argTypes:
    - ZoneName
    - domainid_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2167
      start: 2142
    functionDepth: 3
    functionLinenumber: 2142
    functionLinenumberEnd: 2167
    functionName: GSQLBackend::startTransaction
    functionSourceFile: /src/pdns/pdns/backends/gsql/gsqlbackend.cc
    functionUses: 1
    functionsReached:
    - PDNSException
    - GSQLBackend::reconnectIfNeeded
    - GSQLBackend::startTransaction
    - bind
    - GSQLBackend::inTransaction
    - ZoneName::toLogString
    - txtReason
    linkageType: ''
    returnType: bool
    signature: bool GSQLBackend::startTransaction(const ZoneName &domain, domainid_t
      domain_id)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: commit
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2172,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2177,1
    - Dst: txtReason
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2177,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2180
      start: 2169
    functionDepth: 0
    functionLinenumber: 2169
    functionLinenumberEnd: 2180
    functionName: GSQLBackend::commitTransaction
    functionSourceFile: /src/pdns/pdns/backends/gsql/gsqlbackend.cc
    functionUses: 0
    functionsReached:
    - PDNSException
    - txtReason
    - commit
    linkageType: ''
    returnType: bool
    signature: bool GSQLBackend::commitTransaction()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: rollback
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2185,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2190,1
    - Dst: string
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2190,1
    - Dst: txtReason
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2190,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2193
      start: 2182
    functionDepth: 0
    functionLinenumber: 2182
    functionLinenumberEnd: 2193
    functionName: GSQLBackend::abortTransaction
    functionSourceFile: /src/pdns/pdns/backends/gsql/gsqlbackend.cc
    functionUses: 0
    functionsReached:
    - PDNSException
    - rollback
    - string
    - txtReason
    linkageType: ''
    returnType: bool
    signature: bool GSQLBackend::abortTransaction()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: GSQLBackend::reconnectIfNeeded
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2198,1
    - Dst: bind
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2203,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2209,1
    - Dst: std::to_string
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2209,1
    - Dst: txtReason
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2209,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - domain_id
    argTypes:
    - domainid_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2213
      start: 2195
    functionDepth: 3
    functionLinenumber: 2195
    functionLinenumberEnd: 2213
    functionName: GSQLBackend::listComments
    functionSourceFile: /src/pdns/pdns/backends/gsql/gsqlbackend.cc
    functionUses: 0
    functionsReached:
    - std::to_string
    - PDNSException
    - GSQLBackend::reconnectIfNeeded
    - bind
    - txtReason
    linkageType: ''
    returnType: bool
    signature: bool GSQLBackend::listComments(const domainid_t domain_id)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: hasNextRow
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2220,1
    - Dst: reset
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2222,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2224,1
    - Dst: txtReason
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2224,1
    - Dst: nextRow
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2231,1
    - Dst: ASSERT_ROW_COLUMNS
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2232,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2234,1
    - Dst: txtReason
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2234,1
    - Dst: GSQLBackend::extractComment
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2237,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 24
    argCount: 1
    argNames:
    - ' comment'
    argTypes:
    - Comment
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2243
      start: 2215
    functionDepth: 1
    functionLinenumber: 2215
    functionLinenumberEnd: 2243
    functionName: GSQLBackend::getComment
    functionSourceFile: /src/pdns/pdns/backends/gsql/gsqlbackend.cc
    functionUses: 0
    functionsReached:
    - reset
    - nextRow
    - PDNSException
    - ASSERT_ROW_COLUMNS
    - GSQLBackend::extractComment
    - hasNextRow
    - txtReason
    linkageType: ''
    returnType: bool
    signature: bool GSQLBackend::getComment(Comment& comment)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: GSQLBackend::reconnectIfNeeded
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2248,1
    - Dst: bind
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2251,1
    - Dst: qtype::toString
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2254,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2263,1
    - Dst: qname::toLogString
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2263,1
    - Dst: qtype::toString
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2263,1
    - Dst: txtReason
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2263,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - ' comment'
    argTypes:
    - Comment
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2267
      start: 2245
    functionDepth: 3
    functionLinenumber: 2245
    functionLinenumberEnd: 2267
    functionName: GSQLBackend::feedComment
    functionSourceFile: /src/pdns/pdns/backends/gsql/gsqlbackend.cc
    functionUses: 0
    functionsReached:
    - qtype::toString
    - PDNSException
    - qname::toLogString
    - GSQLBackend::reconnectIfNeeded
    - bind
    - txtReason
    linkageType: ''
    returnType: bool
    signature: bool GSQLBackend::feedComment(const Comment& comment)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: GSQLBackend::reconnectIfNeeded
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2273,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2276,1
    - Dst: bind
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2280,1
    - Dst: toString
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2283,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2289,1
    - Dst: toLogString
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2289,1
    - Dst: toString
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2289,1
    - Dst: txtReason
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2289,1
    - Dst: GSQLBackend::feedComment
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2293,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 4
    argNames:
    - domain_id
    - ' qname'
    - ' qt'
    - ' comments'
    argTypes:
    - domainid_t
    - DNSName
    - QType
    - vector<Comment>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2297
      start: 2270
    functionDepth: 4
    functionLinenumber: 2270
    functionLinenumberEnd: 2297
    functionName: GSQLBackend::replaceComments
    functionSourceFile: /src/pdns/pdns/backends/gsql/gsqlbackend.cc
    functionUses: 0
    functionsReached:
    - toLogString
    - toString
    - GSQLBackend::feedComment
    - PDNSException
    - GSQLBackend::reconnectIfNeeded
    - bind
    - txtReason
    linkageType: ''
    returnType: bool
    signature: bool GSQLBackend::replaceComments(const domainid_t domain_id, const
      DNSName& qname, const QType& qt, const vector<Comment>& comments)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: string::empty
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2301,1
    - Dst: prepare
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2308,1
    - Dst: GSQLBackend::reconnectIfNeeded
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2310,1
    - Dst: auto::execute
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2312,1
    - Dst: auto::hasNextRow
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2316,1
    - Dst: auto::nextRow
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2317,1
    - Dst: ostringstream::str
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2323,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2326,1
    - Dst: txtReason
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2326,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 1
    argNames:
    - query
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2328
      start: 2299
    functionDepth: 3
    functionLinenumber: 2299
    functionLinenumberEnd: 2328
    functionName: GSQLBackend::directBackendCmd
    functionSourceFile: /src/pdns/pdns/backends/gsql/gsqlbackend.cc
    functionUses: 0
    functionsReached:
    - auto::nextRow
    - string::empty
    - PDNSException
    - GSQLBackend::reconnectIfNeeded
    - auto::hasNextRow
    - auto::execute
    - ostringstream::str
    - txtReason
    - prepare
    linkageType: ''
    returnType: string
    signature: string GSQLBackend::directBackendCmd(const string &query)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: boost::replace_all_copy
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2332,1
    - Dst: boost::replace_all
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2333,1
    - Dst: boost::replace_all
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2334,1
    - Dst: boost::replace_all
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2335,1
    - Dst: boost::replace_all
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2336,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - pattern
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2338
      start: 2330
    functionDepth: 0
    functionLinenumber: 2330
    functionLinenumberEnd: 2338
    functionName: GSQLBackend::pattern2SQLPattern
    functionSourceFile: /src/pdns/pdns/backends/gsql/gsqlbackend.cc
    functionUses: 0
    functionsReached:
    - boost::replace_all_copy
    - boost::replace_all
    linkageType: ''
    returnType: string
    signature: string GSQLBackend::pattern2SQLPattern(const string &pattern)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: clear
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2342,1
    - Dst: GSQLBackend::pattern2SQLPattern
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2343,1
    - Dst: GSQLBackend::reconnectIfNeeded
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2345,1
    - Dst: bind
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2348,1
    - Dst: hasNextRow
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2355,1
    - Dst: nextRow
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2359,1
    - Dst: ASSERT_ROW_COLUMNS
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2360,1
    - Dst: GSQLBackend::extractRecord
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2362,1
    - Dst: push_back
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2366,1
    - Dst: std::move
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2366,1
    - Dst: reset
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2369,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2374,1
    - Dst: txtReason
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2374,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 3
    argNames:
    - pattern
    - maxResults
    - ' result'
    argTypes:
    - string
    - size_t
    - vector<DNSResourceRecord>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2376
      start: 2340
    functionDepth: 3
    functionLinenumber: 2340
    functionLinenumberEnd: 2376
    functionName: GSQLBackend::searchRecords
    functionSourceFile: /src/pdns/pdns/backends/gsql/gsqlbackend.cc
    functionUses: 0
    functionsReached:
    - std::move
    - reset
    - nextRow
    - ASSERT_ROW_COLUMNS
    - push_back
    - GSQLBackend::reconnectIfNeeded
    - PDNSException
    - bind
    - hasNextRow
    - GSQLBackend::pattern2SQLPattern
    - GSQLBackend::extractRecord
    - clear
    - txtReason
    linkageType: ''
    returnType: bool
    signature: bool GSQLBackend::searchRecords(const string &pattern, size_t maxResults,
      vector<DNSResourceRecord>& result)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: GSQLBackend::pattern2SQLPattern
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2381,1
    - Dst: GSQLBackend::reconnectIfNeeded
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2383,1
    - Dst: bind
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2386,1
    - Dst: hasNextRow
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2393,1
    - Dst: nextRow
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2395,1
    - Dst: ASSERT_ROW_COLUMNS
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2396,1
    - Dst: GSQLBackend::extractComment
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2398,1
    - Dst: push_back
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2399,1
    - Dst: reset
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2402,1
    - Dst: PDNSException
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2407,1
    - Dst: txtReason
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2407,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 3
    argNames:
    - pattern
    - maxResults
    - ' result'
    argTypes:
    - string
    - size_t
    - vector<Comment>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2409
      start: 2378
    functionDepth: 3
    functionLinenumber: 2378
    functionLinenumberEnd: 2409
    functionName: GSQLBackend::searchComments
    functionSourceFile: /src/pdns/pdns/backends/gsql/gsqlbackend.cc
    functionUses: 0
    functionsReached:
    - reset
    - nextRow
    - ASSERT_ROW_COLUMNS
    - push_back
    - GSQLBackend::reconnectIfNeeded
    - PDNSException
    - bind
    - txtReason
    - hasNextRow
    - GSQLBackend::pattern2SQLPattern
    - GSQLBackend::extractComment
    linkageType: ''
    returnType: bool
    signature: bool GSQLBackend::searchComments(const string &pattern, size_t maxResults,
      vector<Comment>& result)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: arg
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2413,1
    - Dst: empty
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2415,1
    - Dst: pdns::checked_stoi_into
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2418,1
    - Dst: empty
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2420,1
    - Dst: DNSName
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2423,1
    - Dst: DNSRecordContent::isUnknownType
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2427,1
    - Dst: DNSRecordContent::isRegisteredType
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2427,1
    - Dst: DNSRecordContent::upgradeContent
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2428,1
    - Dst: content::reserve
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2431,1
    - Dst: size
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2431,1
    - Dst: size
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2431,1
    - Dst: std::move
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2435,1
    - Dst: empty
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2441,1
    - Dst: empty
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2445,1
    - Dst: pdns::checked_stoi_into
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2447,1
    - Dst: size
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2449,1
    - Dst: at
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2450,1
    - Dst: DNSName
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2451,1
    - Dst: boost::replace_all_copy
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2451,1
    - Dst: at
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2451,1
    - Dst: ordername::clear
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2454,1
    - Dst: ordername::clear
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2458,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 32
    argCount: 2
    argNames:
    - ' row'
    - ' r'
    argTypes:
    - SSqlStatement::row_t
    - DNSResourceRecord
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2460
      start: 2411
    functionDepth: 1
    functionLinenumber: 2411
    functionLinenumberEnd: 2460
    functionName: GSQLBackend::extractRecord
    functionSourceFile: /src/pdns/pdns/backends/gsql/gsqlbackend.cc
    functionUses: 2
    functionsReached:
    - ordername::clear
    - std::move
    - DNSRecordContent::upgradeContent
    - boost::replace_all_copy
    - DNSRecordContent::isRegisteredType
    - content::reserve
    - DNSRecordContent::isUnknownType
    - DNSName
    - size
    - empty
    - pdns::checked_stoi_into
    - at
    - arg
    linkageType: ''
    returnType: void
    signature: void GSQLBackend::extractRecord(SSqlStatement::row_t& row, DNSResourceRecord&
      r)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: clear
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2466,1
    - Dst: arg
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2469,1
    - Dst: empty
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2471,1
    - Dst: pdns::checked_stoi_into
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2475,1
    - Dst: emplace_back
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2479,1
    - Dst: std::make_pair
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2479,1
    - Dst: empty
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2484,1
    - Dst: DNSName
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2488,1
    - Dst: emplace_back
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2492,1
    - Dst: std::make_pair
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2492,1
    - Dst: qname::clear
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2493,1
    - Dst: DNSRecordContent::isUnknownType
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2499,1
    - Dst: DNSRecordContent::isRegisteredType
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2499,1
    - Dst: DNSRecordContent::upgradeContent
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2500,1
    - Dst: content::reserve
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2503,1
    - Dst: size
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2503,1
    - Dst: size
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2503,1
    - Dst: std::move
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2507,1
    - Dst: emplace_back
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2511,1
    - Dst: std::make_pair
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2511,1
    - Dst: content::clear
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2512,1
    - Dst: empty
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2518,1
    - Dst: empty
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2524,1
    - Dst: pdns::checked_stoi_into
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2527,1
    - Dst: emplace_back
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2530,1
    - Dst: std::make_pair
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2530,1
    - Dst: size
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2534,1
    - Dst: at
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2536,1
    - Dst: DNSName
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2537,1
    - Dst: boost::replace_all_copy
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2537,1
    - Dst: at
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2537,1
    - Dst: ordername::clear
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2540,1
    - Dst: emplace_back
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2544,1
    - Dst: std::make_pair
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2544,1
    - Dst: at
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2544,1
    - Dst: ordername::clear
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2545,1
    - Dst: ordername::clear
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2549,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 64
    argCount: 3
    argNames:
    - ' row'
    - ' rec'
    - ' invalid'
    argTypes:
    - SSqlStatement::row_t
    - DNSResourceRecord
    - std::vector<std::pair<std::string, std::string>>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2551
      start: 2464
    functionDepth: 1
    functionLinenumber: 2464
    functionLinenumberEnd: 2551
    functionName: GSQLBackend::extractRecord_unsafe
    functionSourceFile: /src/pdns/pdns/backends/gsql/gsqlbackend.cc
    functionUses: 1
    functionsReached:
    - ordername::clear
    - qname::clear
    - std::move
    - DNSRecordContent::upgradeContent
    - boost::replace_all_copy
    - DNSRecordContent::isRegisteredType
    - content::reserve
    - DNSRecordContent::isUnknownType
    - DNSName
    - size
    - empty
    - content::clear
    - std::make_pair
    - emplace_back
    - clear
    - pdns::checked_stoi_into
    - at
    - arg
    linkageType: ''
    returnType: void
    signature: void GSQLBackend::extractRecord_unsafe(SSqlStatement::row_t& row, DNSResourceRecord&
      rec, std::vector<std::pair<std::string, std::string>>& invalid)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::checked_stoi_into
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2555,1
    - Dst: DNSName
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2556,1
    - Dst: pdns::checked_stoi_into
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2558,1
    - Dst: std::move
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2559,1
    - Dst: std::move
      Src: /src/pdns/pdns/backends/gsql/gsqlbackend.cc:2560,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - ' row'
    - ' comment'
    argTypes:
    - SSqlStatement::row_t
    - Comment
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2561
      start: 2553
    functionDepth: 0
    functionLinenumber: 2553
    functionLinenumberEnd: 2561
    functionName: GSQLBackend::extractComment
    functionSourceFile: /src/pdns/pdns/backends/gsql/gsqlbackend.cc
    functionUses: 2
    functionsReached:
    - pdns::checked_stoi_into
    - std::move
    - DNSName
    linkageType: ''
    returnType: void
    signature: void GSQLBackend::extractComment(SSqlStatement::row_t& row, Comment&
      comment)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2564
      start: 2564
    functionDepth: 0
    functionLinenumber: 2564
    functionLinenumberEnd: 2564
    functionName: SSqlStatement::~SSqlStatement()
    functionSourceFile: /src/pdns/pdns/backends/gsql/gsqlbackend.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void SSqlStatement::~SSqlStatement()
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: withName
      Src: /src/pdns/modules/gsqlite3backend/gsqlite3backend.cc:46,1
    - Dst: std::unique_ptr<SSql>
      Src: /src/pdns/modules/gsqlite3backend/gsqlite3backend.cc:50,1
    - Dst: getArg
      Src: /src/pdns/modules/gsqlite3backend/gsqlite3backend.cc:50,1
    - Dst: getArg
      Src: /src/pdns/modules/gsqlite3backend/gsqlite3backend.cc:50,1
    - Dst: SSQLite3::SSQLite3
      Src: /src/pdns/modules/gsqlite3backend/gsqlite3backend.cc:50,1
    - Dst: getArg
      Src: /src/pdns/modules/gsqlite3backend/gsqlite3backend.cc:51,1
    - Dst: auto::execute
      Src: /src/pdns/modules/gsqlite3backend/gsqlite3backend.cc:52,1
    - Dst: getArg
      Src: /src/pdns/modules/gsqlite3backend/gsqlite3backend.cc:52,1
    - Dst: mustDo
      Src: /src/pdns/modules/gsqlite3backend/gsqlite3backend.cc:54,1
    - Dst: auto::execute
      Src: /src/pdns/modules/gsqlite3backend/gsqlite3backend.cc:55,1
    - Dst: setDB
      Src: /src/pdns/modules/gsqlite3backend/gsqlite3backend.cc:57,1
    - Dst: std::move
      Src: /src/pdns/modules/gsqlite3backend/gsqlite3backend.cc:57,1
    - Dst: allocateStatements
      Src: /src/pdns/modules/gsqlite3backend/gsqlite3backend.cc:58,1
    - Dst: SLOG
      Src: /src/pdns/modules/gsqlite3backend/gsqlite3backend.cc:61,1
    - Dst: txtReason
      Src: /src/pdns/modules/gsqlite3backend/gsqlite3backend.cc:61,1
    - Dst: error
      Src: /src/pdns/modules/gsqlite3backend/gsqlite3backend.cc:62,1
    - Dst: txtReason
      Src: /src/pdns/modules/gsqlite3backend/gsqlite3backend.cc:62,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/gsqlite3backend/gsqlite3backend.cc:62,1
    - Dst: PDNSException
      Src: /src/pdns/modules/gsqlite3backend/gsqlite3backend.cc:63,1
    - Dst: txtReason
      Src: /src/pdns/modules/gsqlite3backend/gsqlite3backend.cc:63,1
    - Dst: SLOG
      Src: /src/pdns/modules/gsqlite3backend/gsqlite3backend.cc:66,1
    - Dst: getArg
      Src: /src/pdns/modules/gsqlite3backend/gsqlite3backend.cc:66,1
    - Dst: info
      Src: /src/pdns/modules/gsqlite3backend/gsqlite3backend.cc:67,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/gsqlite3backend/gsqlite3backend.cc:67,1
    - Dst: getArg
      Src: /src/pdns/modules/gsqlite3backend/gsqlite3backend.cc:67,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 2
    argNames:
    - ' mode'
    - ' suffix'
    argTypes:
    - std::string
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 42
    functionDepth: 2
    functionLinenumber: 42
    functionLinenumberEnd: 68
    functionName: gSQLite3Backend::gSQLite3Backend
    functionSourceFile: /src/pdns/modules/gsqlite3backend/gsqlite3backend.cc
    functionUses: 0
    functionsReached:
    - std::move
    - allocateStatements
    - SLOG
    - Logging::Loggable
    - withName
    - PDNSException
    - getArg
    - auto::execute
    - info
    - setDB
    - mustDo
    - SSQLite3::SSQLite3
    - error
    - txtReason
    - std::unique_ptr<SSql>
    linkageType: ''
    returnType: void
    signature: void gSQLite3Backend::gSQLite3Backend(const std::string& mode, const
      std::string& suffix)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' mode'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 75
    functionDepth: 0
    functionLinenumber: 75
    functionLinenumberEnd: 78
    functionName: gSQLite3Factory::gSQLite3Factory
    functionSourceFile: /src/pdns/modules/gsqlite3backend/gsqlite3backend.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void gSQLite3Factory(const std::string& mode)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: declare
      Src: /src/pdns/modules/gsqlite3backend/gsqlite3backend.cc:83,1
    - Dst: declare
      Src: /src/pdns/modules/gsqlite3backend/gsqlite3backend.cc:84,1
    - Dst: declare
      Src: /src/pdns/modules/gsqlite3backend/gsqlite3backend.cc:85,1
    - Dst: declare
      Src: /src/pdns/modules/gsqlite3backend/gsqlite3backend.cc:86,1
    - Dst: declare
      Src: /src/pdns/modules/gsqlite3backend/gsqlite3backend.cc:88,1
    - Dst: declare
      Src: /src/pdns/modules/gsqlite3backend/gsqlite3backend.cc:92,1
    - Dst: declare
      Src: /src/pdns/modules/gsqlite3backend/gsqlite3backend.cc:93,1
    - Dst: declare
      Src: /src/pdns/modules/gsqlite3backend/gsqlite3backend.cc:94,1
    - Dst: declare
      Src: /src/pdns/modules/gsqlite3backend/gsqlite3backend.cc:95,1
    - Dst: declare
      Src: /src/pdns/modules/gsqlite3backend/gsqlite3backend.cc:97,1
    - Dst: declare
      Src: /src/pdns/modules/gsqlite3backend/gsqlite3backend.cc:98,1
    - Dst: declare
      Src: /src/pdns/modules/gsqlite3backend/gsqlite3backend.cc:100,1
    - Dst: declare
      Src: /src/pdns/modules/gsqlite3backend/gsqlite3backend.cc:101,1
    - Dst: declare
      Src: /src/pdns/modules/gsqlite3backend/gsqlite3backend.cc:103,1
    - Dst: declare
      Src: /src/pdns/modules/gsqlite3backend/gsqlite3backend.cc:104,1
    - Dst: declare
      Src: /src/pdns/modules/gsqlite3backend/gsqlite3backend.cc:106,1
    - Dst: declare
      Src: /src/pdns/modules/gsqlite3backend/gsqlite3backend.cc:108,1
    - Dst: declare
      Src: /src/pdns/modules/gsqlite3backend/gsqlite3backend.cc:109,1
    - Dst: declare
      Src: /src/pdns/modules/gsqlite3backend/gsqlite3backend.cc:110,1
    - Dst: declare
      Src: /src/pdns/modules/gsqlite3backend/gsqlite3backend.cc:111,1
    - Dst: declare
      Src: /src/pdns/modules/gsqlite3backend/gsqlite3backend.cc:112,1
    - Dst: declare
      Src: /src/pdns/modules/gsqlite3backend/gsqlite3backend.cc:113,1
    - Dst: declare
      Src: /src/pdns/modules/gsqlite3backend/gsqlite3backend.cc:115,1
    - Dst: declare
      Src: /src/pdns/modules/gsqlite3backend/gsqlite3backend.cc:117,1
    - Dst: declare
      Src: /src/pdns/modules/gsqlite3backend/gsqlite3backend.cc:118,1
    - Dst: declare
      Src: /src/pdns/modules/gsqlite3backend/gsqlite3backend.cc:120,1
    - Dst: declare
      Src: /src/pdns/modules/gsqlite3backend/gsqlite3backend.cc:121,1
    - Dst: declare
      Src: /src/pdns/modules/gsqlite3backend/gsqlite3backend.cc:122,1
    - Dst: declare
      Src: /src/pdns/modules/gsqlite3backend/gsqlite3backend.cc:123,1
    - Dst: declare
      Src: /src/pdns/modules/gsqlite3backend/gsqlite3backend.cc:125,1
    - Dst: declare
      Src: /src/pdns/modules/gsqlite3backend/gsqlite3backend.cc:126,1
    - Dst: declare
      Src: /src/pdns/modules/gsqlite3backend/gsqlite3backend.cc:127,1
    - Dst: declare
      Src: /src/pdns/modules/gsqlite3backend/gsqlite3backend.cc:128,1
    - Dst: declare
      Src: /src/pdns/modules/gsqlite3backend/gsqlite3backend.cc:130,1
    - Dst: declare
      Src: /src/pdns/modules/gsqlite3backend/gsqlite3backend.cc:131,1
    - Dst: declare
      Src: /src/pdns/modules/gsqlite3backend/gsqlite3backend.cc:132,1
    - Dst: declare
      Src: /src/pdns/modules/gsqlite3backend/gsqlite3backend.cc:133,1
    - Dst: declare
      Src: /src/pdns/modules/gsqlite3backend/gsqlite3backend.cc:134,1
    - Dst: declare
      Src: /src/pdns/modules/gsqlite3backend/gsqlite3backend.cc:135,1
    - Dst: declare
      Src: /src/pdns/modules/gsqlite3backend/gsqlite3backend.cc:136,1
    - Dst: declare
      Src: /src/pdns/modules/gsqlite3backend/gsqlite3backend.cc:137,1
    - Dst: declare
      Src: /src/pdns/modules/gsqlite3backend/gsqlite3backend.cc:138,1
    - Dst: declare
      Src: /src/pdns/modules/gsqlite3backend/gsqlite3backend.cc:139,1
    - Dst: declare
      Src: /src/pdns/modules/gsqlite3backend/gsqlite3backend.cc:140,1
    - Dst: declare
      Src: /src/pdns/modules/gsqlite3backend/gsqlite3backend.cc:141,1
    - Dst: declare
      Src: /src/pdns/modules/gsqlite3backend/gsqlite3backend.cc:142,1
    - Dst: declare
      Src: /src/pdns/modules/gsqlite3backend/gsqlite3backend.cc:143,1
    - Dst: declare
      Src: /src/pdns/modules/gsqlite3backend/gsqlite3backend.cc:145,1
    - Dst: declare
      Src: /src/pdns/modules/gsqlite3backend/gsqlite3backend.cc:146,1
    - Dst: declare
      Src: /src/pdns/modules/gsqlite3backend/gsqlite3backend.cc:147,1
    - Dst: declare
      Src: /src/pdns/modules/gsqlite3backend/gsqlite3backend.cc:148,1
    - Dst: declare
      Src: /src/pdns/modules/gsqlite3backend/gsqlite3backend.cc:149,1
    - Dst: declare
      Src: /src/pdns/modules/gsqlite3backend/gsqlite3backend.cc:150,1
    - Dst: declare
      Src: /src/pdns/modules/gsqlite3backend/gsqlite3backend.cc:151,1
    - Dst: declare
      Src: /src/pdns/modules/gsqlite3backend/gsqlite3backend.cc:152,1
    - Dst: declare
      Src: /src/pdns/modules/gsqlite3backend/gsqlite3backend.cc:153,1
    - Dst: declare
      Src: /src/pdns/modules/gsqlite3backend/gsqlite3backend.cc:154,1
    - Dst: declare
      Src: /src/pdns/modules/gsqlite3backend/gsqlite3backend.cc:155,1
    - Dst: declare
      Src: /src/pdns/modules/gsqlite3backend/gsqlite3backend.cc:156,1
    - Dst: declare
      Src: /src/pdns/modules/gsqlite3backend/gsqlite3backend.cc:157,1
    - Dst: declare
      Src: /src/pdns/modules/gsqlite3backend/gsqlite3backend.cc:158,1
    - Dst: declare
      Src: /src/pdns/modules/gsqlite3backend/gsqlite3backend.cc:159,1
    - Dst: declare
      Src: /src/pdns/modules/gsqlite3backend/gsqlite3backend.cc:160,1
    - Dst: declare
      Src: /src/pdns/modules/gsqlite3backend/gsqlite3backend.cc:161,1
    - Dst: declare
      Src: /src/pdns/modules/gsqlite3backend/gsqlite3backend.cc:162,1
    - Dst: declare
      Src: /src/pdns/modules/gsqlite3backend/gsqlite3backend.cc:164,1
    - Dst: declare
      Src: /src/pdns/modules/gsqlite3backend/gsqlite3backend.cc:166,1
    - Dst: declare
      Src: /src/pdns/modules/gsqlite3backend/gsqlite3backend.cc:167,1
    - Dst: declare
      Src: /src/pdns/modules/gsqlite3backend/gsqlite3backend.cc:168,1
    - Dst: declare
      Src: /src/pdns/modules/gsqlite3backend/gsqlite3backend.cc:169,1
    - Dst: declare
      Src: /src/pdns/modules/gsqlite3backend/gsqlite3backend.cc:170,1
    - Dst: declare
      Src: /src/pdns/modules/gsqlite3backend/gsqlite3backend.cc:171,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 73
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 172
      start: 81
    functionDepth: 0
    functionLinenumber: 81
    functionLinenumberEnd: 172
    functionName: gSQLite3Factory::declareArguments
    functionSourceFile: /src/pdns/modules/gsqlite3backend/gsqlite3backend.cc
    functionUses: 0
    functionsReached:
    - declare
    linkageType: ''
    returnType: void
    signature: void declareArguments(const std::string& suffix = "") override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: gSQLite3Backend::gSQLite3Backend
      Src: /src/pdns/modules/gsqlite3backend/gsqlite3backend.cc:177,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 178
      start: 175
    functionDepth: 3
    functionLinenumber: 175
    functionLinenumberEnd: 178
    functionName: gSQLite3Factory::make
    functionSourceFile: /src/pdns/modules/gsqlite3backend/gsqlite3backend.cc
    functionUses: 0
    functionsReached:
    - gSQLite3Backend::gSQLite3Backend
    linkageType: ''
    returnType: DNSBackend
    signature: DNSBackend * make(const string& suffix = "") override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BackendMakers
      Src: /src/pdns/modules/gsqlite3backend/gsqlite3backend.cc:191,1
    - Dst: std::make_unique<gSQLite3Factory>
      Src: /src/pdns/modules/gsqlite3backend/gsqlite3backend.cc:191,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 200
      start: 189
    functionDepth: 1
    functionLinenumber: 189
    functionLinenumberEnd: 200
    functionName: gSQLite3Loader::gSQLite3Loader
    functionSourceFile: /src/pdns/modules/gsqlite3backend/gsqlite3backend.cc
    functionUses: 0
    functionsReached:
    - BackendMakers
    - std::make_unique<gSQLite3Factory>
    linkageType: ''
    returnType: void
    signature: void gSQLite3Loader()
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.hh:34,1
    - Dst: std::out_of_range
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.hh:35,1
    - Dst: std::string
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.hh:35,1
    - Dst: isRoot
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.hh:38,1
    - Dst: std::string
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.hh:39,1
    - Dst: labelReverse
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.hh:42,1
    - Dst: std::string::reserve
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.hh:44,1
    - Dst: std::string::size
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.hh:44,1
    - Dst: std::string::begin
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.hh:46,1
    - Dst: std::string::end
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.hh:46,1
    - Dst: std::string::begin
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.hh:48,1
    - Dst: std::string::append
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.hh:49,1
    - Dst: std::string::append
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.hh:53,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 17
    argCount: 1
    argNames:
    - ' t'
    argTypes:
    - T
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 28
    functionDepth: 0
    functionLinenumber: 28
    functionLinenumberEnd: 57
    functionName: keyConv
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.hh
    functionUses: 0
    functionsReached:
    - std::string::begin
    - std::out_of_range
    - std::string::append
    - std::string::reserve
    - std::string::end
    - isRoot
    - labelReverse
    - empty
    - std::string
    - std::string::size
    linkageType: ''
    returnType: std::string
    signature: std::string keyConv(const T& t)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: hasVariant
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.hh:62,1
    - Dst: keyConv
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.hh:63,1
    - Dst: string
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.hh:63,1
    - Dst: keyConv
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.hh:63,1
    - Dst: getVariant
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.hh:63,1
    - Dst: keyConv
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.hh:66,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - ' t'
    argTypes:
    - T
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 60
    functionDepth: 0
    functionLinenumber: 60
    functionLinenumberEnd: 68
    functionName: keyConv
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.hh
    functionUses: 1
    functionsReached:
    - getVariant
    - keyConv
    - string
    - hasVariant
    linkageType: ''
    returnType: std::string
    signature: std::string keyConv(const T& t)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LMDBBackend::lookupInternal
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.hh:105,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' type'
    - ' qdomain'
    - zoneId
    argTypes:
    - QType
    - DNSName
    - domainid_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 105
    functionDepth: 1
    functionLinenumber: 105
    functionLinenumberEnd: 105
    functionName: LMDBBackend::lookup
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.hh
    functionUses: 0
    functionsReached:
    - LMDBBackend::lookupInternal
    linkageType: ''
    returnType: void
    signature: void lookup(const QType& type, const DNSName& qdomain, domainid_t zoneId,
      DNSPacket* p = nullptr) override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LMDBBackend::lookupInternal
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.hh:106,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' type'
    - ' qdomain'
    - zoneId
    argTypes:
    - QType
    - DNSName
    - domainid_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 106
    functionDepth: 1
    functionLinenumber: 106
    functionLinenumberEnd: 106
    functionName: LMDBBackend::APILookup
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.hh
    functionUses: 0
    functionsReached:
    - LMDBBackend::lookupInternal
    linkageType: ''
    returnType: void
    signature: void APILookup(const QType& type, const DNSName& qdomain, domainid_t
      zoneId, bool include_disabled = false) override
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: clear
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.hh:131,1
    - Dst: LMDBBackend::getAllDomainMetadata
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.hh:133,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 3
    argNames:
    - ' name'
    - ' kind'
    - ' meta'
    argTypes:
    - ZoneName
    - std::string
    - std::vector<std::string>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 143
      start: 128
    functionDepth: 1
    functionLinenumber: 128
    functionLinenumberEnd: 143
    functionName: LMDBBackend::getDomainMetadata
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.hh
    functionUses: 0
    functionsReached:
    - clear
    - LMDBBackend::getAllDomainMetadata
    linkageType: ''
    returnType: bool
    signature: bool getDomainMetadata(const ZoneName& name, const std::string& kind,
      std::vector<std::string>& meta) override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: operator
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.hh:192,1
    - Dst: htons
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.hh:193,1
    - Dst: std::string::append
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.hh:194,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - id
    - ' t'
    - qtype
    argTypes:
    - uint32_t
    - DNSName
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 196
      start: 190
    functionDepth: 0
    functionLinenumber: 190
    functionLinenumberEnd: 196
    functionName: operator()(uint32_t id, const DNSName& t, uint16_t qtype)
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.hh
    functionUses: 0
    functionsReached:
    - std::string::append
    - operator
    - htons
    linkageType: ''
    returnType: std::string
    signature: std::string operator()(uint32_t id, const DNSName& t, uint16_t qtype)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: operator
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.hh:199,1
    - Dst: keyConv
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.hh:200,1
    - Dst: std::string::append
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.hh:201,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - id
    - ' t'
    argTypes:
    - uint32_t
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 203
      start: 197
    functionDepth: 0
    functionLinenumber: 197
    functionLinenumberEnd: 203
    functionName: operator()(uint32_t id, const DNSName& t)
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.hh
    functionUses: 0
    functionsReached:
    - std::string::append
    - keyConv
    - operator
    linkageType: ''
    returnType: std::string
    signature: std::string operator()(uint32_t id, const DNSName& t)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: htonl
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.hh:207,1
    - Dst: std::string::assign
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.hh:208,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - id
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 210
      start: 204
    functionDepth: 1
    functionLinenumber: 204
    functionLinenumberEnd: 210
    functionName: operator()(uint32_t id)
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.hh
    functionUses: 0
    functionsReached:
    - std::string::assign
    - htonl
    linkageType: ''
    returnType: std::string
    signature: std::string operator()(uint32_t id)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: operator
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.hh:214,1
    - Dst: qtype::getCode
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.hh:214,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' rr'
    argTypes:
    - DNSResourceRecord
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 215
      start: 212
    functionDepth: 0
    functionLinenumber: 212
    functionLinenumberEnd: 215
    functionName: operator()(const DNSResourceRecord& rr)
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.hh
    functionUses: 0
    functionsReached:
    - qtype::getCode
    - operator
    linkageType: ''
    returnType: std::string
    signature: std::string operator()(const DNSResourceRecord& rr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.hh:220,1
    - Dst: static_cast<domainid_t>
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.hh:221,1
    - Dst: ntohl
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.hh:221,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ' key'
    argTypes:
    - string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 222
      start: 217
    functionDepth: 0
    functionLinenumber: 217
    functionLinenumberEnd: 222
    functionName: LMDBBackend::getDomainID
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.hh
    functionUses: 0
    functionsReached:
    - static_cast<domainid_t>
    - memcpy
    - ntohl
    linkageType: ''
    returnType: domainid_t
    signature: domainid_t getDomainID(const string_view& key)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: DNSName::DNSName
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.hh:229,1
    - Dst: cbegin
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.hh:230,1
    - Dst: cend
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.hh:231,1
    - Dst: DNSName::prependRawLabel
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.hh:239,1
    - Dst: DNSName::empty
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.hh:244,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 13
    argCount: 1
    argNames:
    - ' key'
    argTypes:
    - string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 247
      start: 224
    functionDepth: 0
    functionLinenumber: 224
    functionLinenumberEnd: 247
    functionName: LMDBBackend::getQName
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.hh
    functionUses: 0
    functionsReached:
    - DNSName::prependRawLabel
    - cbegin
    - DNSName::empty
    - cend
    - DNSName::DNSName
    linkageType: ''
    returnType: DNSName
    signature: DNSName getQName(const string_view& key)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.hh:252,1
    - Dst: size
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.hh:252,1
    - Dst: QType
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.hh:253,1
    - Dst: ntohs
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.hh:253,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ' key'
    argTypes:
    - string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 254
      start: 249
    functionDepth: 0
    functionLinenumber: 249
    functionLinenumberEnd: 254
    functionName: LMDBBackend::getQType
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.hh
    functionUses: 0
    functionsReached:
    - memcpy
    - QType
    - size
    - ntohs
    linkageType: ''
    returnType: QType
    signature: QType getQType(const string_view& key)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 283
      start: 283
    functionDepth: 0
    functionLinenumber: 283
    functionLinenumberEnd: 283
    functionName: LMDBBackend::LMDBResourceRecord::LMDBResourceRecord
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void LMDBResourceRecord()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' rr'
    argTypes:
    - DNSResourceRecord
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 285
      start: 284
    functionDepth: 0
    functionLinenumber: 284
    functionLinenumberEnd: 285
    functionName: LMDBBackend::LMDBResourceRecord::LMDBResourceRecord
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void LMDBResourceRecord(const DNSResourceRecord& rr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.hh:323,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 1
    argNames:
    - ' intxn'
    argTypes:
    - MDBROTransaction
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 324
      start: 322
    functionDepth: 0
    functionLinenumber: 322
    functionLinenumberEnd: 324
    functionName: LMDBBackend::RecordsROTransaction
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.hh
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void RecordsROTransaction(MDBROTransaction&& intxn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.hh:331,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 1
    argNames:
    - ' intxn'
    argTypes:
    - MDBRWTransaction
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 332
      start: 330
    functionDepth: 0
    functionLinenumber: 330
    functionLinenumberEnd: 332
    functionName: LMDBBackend::RecordsRWTransaction
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.hh
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void RecordsRWTransaction(MDBRWTransaction&& intxn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: clear
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.hh:428,1
    - Dst: clear
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.hh:429,1
    - Dst: clear
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.hh:430,1
    - Dst: LMDBBackend::reset
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.hh:432,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 434
      start: 426
    functionDepth: 1
    functionLinenumber: 426
    functionLinenumberEnd: 434
    functionName: LMDBBackend::reset
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.hh
    functionUses: 1
    functionsReached:
    - clear
    - LMDBBackend::reset
    linkageType: ''
    returnType: void
    signature: void reset()
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: mdb_env_create
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:79,1
    - Dst: std::runtime_error
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:80,1
    - Dst: MDBError
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:80,1
    - Dst: mdb_env_set_mapsize
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:85,1
    - Dst: std::runtime_error
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:86,1
    - Dst: MDBError
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:86,1
    - Dst: mdb_env_set_maxdbs
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:89,1
    - Dst: std::runtime_error
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:90,1
    - Dst: MDBError
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:90,1
    - Dst: mdb_env_open
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:94,1
    - Dst: c_str
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:94,1
    - Dst: std::runtime_error
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:100,1
    - Dst: MDBError
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:100,1
    - Dst: mdb_txn_begin
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:106,1
    - Dst: std::runtime_error
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:107,1
    - Dst: MDBError
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:107,1
    - Dst: MDBDbi::mdb_dbi_open
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:113,1
    - Dst: mdb_txn_abort
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:118,1
    - Dst: mdb_txn_abort
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:121,1
    - Dst: std::runtime_error
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:122,1
    - Dst: MDBError
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:122,1
    - Dst: strlen
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:129,1
    - Dst: mdb_get
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:132,1
    - Dst: mdb_txn_abort
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:137,1
    - Dst: std::runtime_error
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:141,1
    - Dst: MDBError
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:141,1
    - Dst: memcpy
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:148,1
    - Dst: memcpy
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:155,1
    - Dst: ntohl
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:156,1
    - Dst: std::runtime_error
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:159,1
    - Dst: strlen
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:165,1
    - Dst: mdb_get
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:168,1
    - Dst: mdb_txn_abort
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:172,1
    - Dst: exit
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:174,1
    - Dst: std::runtime_error
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:177,1
    - Dst: MDBError
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:177,1
    - Dst: memcpy
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:184,1
    - Dst: memcpy
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:188,1
    - Dst: ntohl
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:189,1
    - Dst: std::runtime_error
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:192,1
    - Dst: mdb_txn_abort
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:195,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 74
    argCount: 1
    argNames:
    - ' filename'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 198
      start: 71
    functionDepth: 0
    functionLinenumber: 71
    functionLinenumberEnd: 198
    functionName: LMDBBackend::getSchemaVersionAndShards
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.cc
    functionUses: 0
    functionsReached:
    - memcpy
    - ntohl
    - MDBDbi::mdb_dbi_open
    - mdb_txn_abort
    - std::runtime_error
    - MDBError
    - mdb_env_set_mapsize
    - mdb_env_create
    - mdb_txn_begin
    - mdb_env_set_maxdbs
    - mdb_env_open
    - strlen
    - c_str
    - exit
    - mdb_get
    linkageType: ''
    returnType: std::pair<uint32_t, uint32_t>
    signature: std::pair<uint32_t, uint32_t> LMDBBackend::getSchemaVersionAndShards(std::string&
      filename)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: mdb_cursor_open
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:212,1
    - Dst: std::runtime_error
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:213,1
    - Dst: MDBError
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:213,1
    - Dst: mdb_cursor_get
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:218,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:221,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:222,1
    - Dst: const_cast<char*>
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:231,1
    - Dst: std::string::c_str
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:231,1
    - Dst: std::string::size
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:232,1
    - Dst: const_cast<char*>
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:233,1
    - Dst: std::string::c_str
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:233,1
    - Dst: std::string::size
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:234,1
    - Dst: mdb_put
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:236,1
    - Dst: std::runtime_error
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:237,1
    - Dst: MDBError
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:237,1
    - Dst: mdb_cursor_get
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:240,1
    - Dst: std::runtime_error
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:243,1
    - Dst: MDBError
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:243,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 18
    argCount: 3
    argNames:
    - txn
    - sdbi
    - tdbi
    argTypes:
    - MDB_txn*
    - MDB_dbi
    - MDB_dbi
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 245
      start: 203
    functionDepth: 0
    functionLinenumber: 203
    functionLinenumberEnd: 245
    functionName: copyDBIAndAddLSHeader
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.cc
    functionUses: 0
    functionsReached:
    - const_cast<char*>
    - std::runtime_error
    - mdb_cursor_open
    - std::string::c_str
    - MDBError
    - mdb_cursor_get
    - reinterpret_cast<const char*>
    - std::string::size
    - mdb_put
    linkageType: ''
    returnType: void
    signature: void copyDBIAndAddLSHeader(MDB_txn* txn, MDB_dbi sdbi, MDB_dbi tdbi)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: mdb_cursor_open
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:259,1
    - Dst: std::runtime_error
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:260,1
    - Dst: MDBError
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:260,1
    - Dst: mdb_cursor_get
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:265,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:269,1
    - Dst: std::runtime_error
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:276,1
    - Dst: memcpy
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:279,1
    - Dst: htonl
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:281,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:288,1
    - Dst: const_cast<char*>
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:290,1
    - Dst: std::string::c_str
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:290,1
    - Dst: std::string::size
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:291,1
    - Dst: mdb_put
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:293,1
    - Dst: std::runtime_error
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:294,1
    - Dst: MDBError
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:294,1
    - Dst: mdb_cursor_get
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:297,1
    - Dst: std::runtime_error
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:300,1
    - Dst: MDBError
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:300,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 23
    argCount: 3
    argNames:
    - txn
    - sdbi
    - tdbi
    argTypes:
    - MDB_txn*
    - MDB_dbi
    - MDB_dbi
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 302
      start: 250
    functionDepth: 0
    functionLinenumber: 250
    functionLinenumberEnd: 302
    functionName: copyTypedDBI
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.cc
    functionUses: 0
    functionsReached:
    - reinterpret_cast<char*>
    - memcpy
    - const_cast<char*>
    - std::runtime_error
    - mdb_cursor_open
    - htonl
    - MDBError
    - std::string::c_str
    - mdb_cursor_get
    - reinterpret_cast<const char*>
    - std::string::size
    - mdb_put
    linkageType: ''
    returnType: void
    signature: void copyTypedDBI(MDB_txn* txn, MDB_dbi sdbi, MDB_dbi tdbi)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: mdb_cursor_open
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:316,1
    - Dst: std::runtime_error
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:317,1
    - Dst: MDBError
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:317,1
    - Dst: mdb_cursor_get
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:322,1
    - Dst: std::runtime_error
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:331,1
    - Dst: memcpy
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:334,1
    - Dst: htonl
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:335,1
    - Dst: htons
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:337,1
    - Dst: std::string::size
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:337,1
    - Dst: memcpy
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:338,1
    - Dst: std::string::data
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:338,1
    - Dst: std::string
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:339,1
    - Dst: std::string::c_str
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:344,1
    - Dst: std::string::size
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:345,1
    - Dst: std::string::c_str
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:346,1
    - Dst: std::string::size
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:347,1
    - Dst: mdb_put
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:349,1
    - Dst: std::runtime_error
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:350,1
    - Dst: MDBError
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:350,1
    - Dst: mdb_cursor_get
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:353,1
    - Dst: std::runtime_error
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:356,1
    - Dst: MDBError
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:356,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 24
    argCount: 3
    argNames:
    - txn
    - sdbi
    - tdbi
    argTypes:
    - MDB_txn*
    - MDB_dbi
    - MDB_dbi
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 358
      start: 307
    functionDepth: 0
    functionLinenumber: 307
    functionLinenumberEnd: 358
    functionName: copyIndexDBI
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.cc
    functionUses: 0
    functionsReached:
    - memcpy
    - std::runtime_error
    - mdb_cursor_open
    - htonl
    - MDBError
    - std::string::c_str
    - std::string::data
    - mdb_cursor_get
    - std::string
    - std::string::size
    - mdb_put
    - htons
    linkageType: ''
    returnType: void
    signature: void copyIndexDBI(MDB_txn* txn, MDB_dbi sdbi, MDB_dbi tdbi)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: mdb_cursor_open
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:212,1
    - Dst: std::runtime_error
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:213,1
    - Dst: MDBError
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:213,1
    - Dst: mdb_cursor_get
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:218,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:221,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:222,1
    - Dst: const_cast<char*>
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:231,1
    - Dst: std::string::c_str
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:231,1
    - Dst: std::string::size
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:232,1
    - Dst: const_cast<char*>
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:233,1
    - Dst: std::string::c_str
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:233,1
    - Dst: std::string::size
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:234,1
    - Dst: mdb_put
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:236,1
    - Dst: std::runtime_error
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:237,1
    - Dst: MDBError
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:237,1
    - Dst: mdb_cursor_get
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:240,1
    - Dst: std::runtime_error
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:243,1
    - Dst: MDBError
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:243,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 18
    argCount: 3
    argNames:
    - txn
    - sdbi
    - tdbi
    argTypes:
    - MDB_txn*
    - MDB_dbi
    - MDB_dbi
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 245
      start: 203
    functionDepth: 0
    functionLinenumber: 203
    functionLinenumberEnd: 245
    functionName: copyDBIAndAddLSHeader
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.cc
    functionUses: 0
    functionsReached:
    - const_cast<char*>
    - std::runtime_error
    - mdb_cursor_open
    - std::string::c_str
    - MDBError
    - mdb_cursor_get
    - reinterpret_cast<const char*>
    - std::string::size
    - mdb_put
    linkageType: ''
    returnType: void
    signature: void copyDBIAndAddLSHeader(MDB_txn* txn, MDB_dbi sdbi, MDB_dbi tdbi)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: mdb_cursor_open
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:259,1
    - Dst: std::runtime_error
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:260,1
    - Dst: MDBError
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:260,1
    - Dst: mdb_cursor_get
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:265,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:269,1
    - Dst: std::runtime_error
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:276,1
    - Dst: memcpy
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:279,1
    - Dst: htonl
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:281,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:288,1
    - Dst: const_cast<char*>
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:290,1
    - Dst: std::string::c_str
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:290,1
    - Dst: std::string::size
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:291,1
    - Dst: mdb_put
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:293,1
    - Dst: std::runtime_error
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:294,1
    - Dst: MDBError
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:294,1
    - Dst: mdb_cursor_get
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:297,1
    - Dst: std::runtime_error
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:300,1
    - Dst: MDBError
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:300,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 23
    argCount: 3
    argNames:
    - txn
    - sdbi
    - tdbi
    argTypes:
    - MDB_txn*
    - MDB_dbi
    - MDB_dbi
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 302
      start: 250
    functionDepth: 0
    functionLinenumber: 250
    functionLinenumberEnd: 302
    functionName: copyTypedDBI
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.cc
    functionUses: 0
    functionsReached:
    - reinterpret_cast<char*>
    - memcpy
    - const_cast<char*>
    - std::runtime_error
    - mdb_cursor_open
    - htonl
    - MDBError
    - std::string::c_str
    - mdb_cursor_get
    - reinterpret_cast<const char*>
    - std::string::size
    - mdb_put
    linkageType: ''
    returnType: void
    signature: void copyTypedDBI(MDB_txn* txn, MDB_dbi sdbi, MDB_dbi tdbi)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: mdb_cursor_open
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:316,1
    - Dst: std::runtime_error
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:317,1
    - Dst: MDBError
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:317,1
    - Dst: mdb_cursor_get
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:322,1
    - Dst: std::runtime_error
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:331,1
    - Dst: memcpy
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:334,1
    - Dst: htonl
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:335,1
    - Dst: htons
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:337,1
    - Dst: std::string::size
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:337,1
    - Dst: memcpy
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:338,1
    - Dst: std::string::data
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:338,1
    - Dst: std::string
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:339,1
    - Dst: std::string::c_str
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:344,1
    - Dst: std::string::size
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:345,1
    - Dst: std::string::c_str
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:346,1
    - Dst: std::string::size
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:347,1
    - Dst: mdb_put
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:349,1
    - Dst: std::runtime_error
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:350,1
    - Dst: MDBError
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:350,1
    - Dst: mdb_cursor_get
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:353,1
    - Dst: std::runtime_error
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:356,1
    - Dst: MDBError
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:356,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 24
    argCount: 3
    argNames:
    - txn
    - sdbi
    - tdbi
    argTypes:
    - MDB_txn*
    - MDB_dbi
    - MDB_dbi
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 358
      start: 307
    functionDepth: 0
    functionLinenumber: 307
    functionLinenumberEnd: 358
    functionName: copyIndexDBI
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.cc
    functionUses: 0
    functionsReached:
    - memcpy
    - std::runtime_error
    - mdb_cursor_open
    - htonl
    - MDBError
    - std::string::c_str
    - std::string::data
    - mdb_cursor_get
    - std::string
    - std::string::size
    - mdb_put
    - htons
    linkageType: ''
    returnType: void
    signature: void copyIndexDBI(MDB_txn* txn, MDB_dbi sdbi, MDB_dbi tdbi)
  - BBCount: 26
    BranchProfiles: []
    Callsites:
    - Dst: LMDBBackend::getSchemaVersionAndShards
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:364,1
    - Dst: std::runtime_error
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:369,1
    - Dst: mdb_env_create
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:374,1
    - Dst: std::runtime_error
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:375,1
    - Dst: MDBError
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:375,1
    - Dst: mdb_env_set_maxdbs
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:380,1
    - Dst: std::runtime_error
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:381,1
    - Dst: MDBError
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:381,1
    - Dst: mdb_env_open
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:384,1
    - Dst: c_str
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:384,1
    - Dst: std::runtime_error
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:385,1
    - Dst: MDBError
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:385,1
    - Dst: mdb_txn_begin
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:390,1
    - Dst: std::runtime_error
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:391,1
    - Dst: MDBError
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:391,1
    - Dst: sd_notify
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:398,1
    - Dst: std::to_string
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:403,1
    - Dst: access
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:404,1
    - Dst: string::c_str
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:404,1
    - Dst: mdb_env_create
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:415,1
    - Dst: std::runtime_error
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:416,1
    - Dst: MDBError
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:416,1
    - Dst: mdb_env_set_maxdbs
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:421,1
    - Dst: std::runtime_error
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:422,1
    - Dst: MDBError
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:422,1
    - Dst: mdb_env_open
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:425,1
    - Dst: string::c_str
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:425,1
    - Dst: std::runtime_error
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:426,1
    - Dst: MDBError
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:426,1
    - Dst: mdb_txn_begin
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:431,1
    - Dst: std::runtime_error
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:432,1
    - Dst: MDBError
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:432,1
    - Dst: MDBDbi::mdb_dbi_open
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:437,1
    - Dst: mdb_txn_abort
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:440,1
    - Dst: mdb_txn_abort
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:443,1
    - Dst: std::runtime_error
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:444,1
    - Dst: MDBError
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:444,1
    - Dst: MDBDbi::mdb_dbi_open
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:449,1
    - Dst: mdb_dbi_close
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:450,1
    - Dst: mdb_txn_abort
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:451,1
    - Dst: std::runtime_error
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:452,1
    - Dst: MDBError
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:452,1
    - Dst: copyDBIAndAddLSHeader
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:456,1
    - Dst: mdb_dbi_close
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:459,1
    - Dst: mdb_dbi_close
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:460,1
    - Dst: mdb_txn_abort
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:461,1
    - Dst: std::runtime_error
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:462,1
    - Dst: mdb_drop
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:465,1
    - Dst: mdb_txn_commit
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:466,1
    - Dst: mdb_dbi_close
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:467,1
    - Dst: MDBDbi::mdb_dbi_open
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:480,1
    - Dst: c_str
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:480,1
    - Dst: mdb_txn_abort
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:481,1
    - Dst: std::runtime_error
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:482,1
    - Dst: MDBError
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:482,1
    - Dst: MDBDbi::mdb_dbi_open
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:486,1
    - Dst: std::string::c_str
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:486,1
    - Dst: mdb_dbi_close
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:488,1
    - Dst: mdb_txn_abort
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:489,1
    - Dst: std::runtime_error
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:490,1
    - Dst: MDBError
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:490,1
    - Dst: copyTypedDBI
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:495,1
    - Dst: mdb_dbi_close
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:499,1
    - Dst: mdb_dbi_close
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:501,1
    - Dst: mdb_txn_abort
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:502,1
    - Dst: std::runtime_error
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:503,1
    - Dst: MDBDbi::mdb_dbi_open
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:524,1
    - Dst: std::string::c_str
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:524,1
    - Dst: mdb_txn_abort
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:525,1
    - Dst: std::runtime_error
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:526,1
    - Dst: MDBError
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:526,1
    - Dst: MDBDbi::mdb_dbi_open
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:530,1
    - Dst: std::string::c_str
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:530,1
    - Dst: mdb_dbi_close
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:532,1
    - Dst: mdb_txn_abort
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:533,1
    - Dst: std::runtime_error
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:534,1
    - Dst: MDBError
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:534,1
    - Dst: copyIndexDBI
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:539,1
    - Dst: mdb_dbi_close
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:543,1
    - Dst: mdb_dbi_close
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:545,1
    - Dst: mdb_txn_abort
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:546,1
    - Dst: std::runtime_error
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:547,1
    - Dst: MDBDbi::mdb_dbi_open
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:560,1
    - Dst: mdb_txn_abort
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:561,1
    - Dst: std::runtime_error
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:562,1
    - Dst: MDBError
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:562,1
    - Dst: c_str
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:573,1
    - Dst: size
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:574,1
    - Dst: mdb_get
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:576,1
    - Dst: std::runtime_error
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:577,1
    - Dst: MDBError
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:577,1
    - Dst: std::runtime_error
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:581,1
    - Dst: memcpy
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:585,1
    - Dst: htonl
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:587,1
    - Dst: htonl
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:589,1
    - Dst: static_cast<char*>
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:592,1
    - Dst: std::string
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:594,1
    - Dst: std::string::c_str
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:598,1
    - Dst: std::string::size
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:599,1
    - Dst: mdb_put
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:601,1
    - Dst: std::runtime_error
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:602,1
    - Dst: MDBError
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:602,1
    - Dst: c_str
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:609,1
    - Dst: size
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:610,1
    - Dst: mdb_get
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:612,1
    - Dst: std::runtime_error
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:613,1
    - Dst: MDBError
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:613,1
    - Dst: std::string::c_str
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:622,1
    - Dst: std::string::size
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:623,1
    - Dst: mdb_put
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:625,1
    - Dst: std::runtime_error
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:626,1
    - Dst: MDBError
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:626,1
    - Dst: mdb_drop
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:632,1
    - Dst: mdb_drop
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:634,1
    - Dst: mdb_txn_commit
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:637,1
    - Dst: mdb_dbi_close
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:641,1
    - Dst: mdb_dbi_close
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:643,1
    CyclomaticComplexity: 62
    EdgeCount: 62
    ICount: 171
    argCount: 1
    argNames:
    - ' filename'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 648
      start: 362
    functionDepth: 1
    functionLinenumber: 362
    functionLinenumberEnd: 648
    functionName: LMDBBackend::upgradeToSchemav5
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.cc
    functionUses: 0
    functionsReached:
    - std::to_string
    - LMDBBackend::getSchemaVersionAndShards
    - sd_notify
    - mdb_txn_begin
    - mdb_env_open
    - std::string
    - std::string::size
    - mdb_txn_commit
    - mdb_put
    - static_cast<char*>
    - copyDBIAndAddLSHeader
    - mdb_env_create
    - size
    - mdb_dbi_close
    - mdb_env_set_maxdbs
    - c_str
    - string::c_str
    - mdb_txn_abort
    - std::runtime_error
    - MDBError
    - access
    - mdb_drop
    - mdb_get
    - memcpy
    - MDBDbi::mdb_dbi_open
    - copyIndexDBI
    - htonl
    - std::string::c_str
    - copyTypedDBI
    linkageType: ''
    returnType: bool
    signature: bool LMDBBackend::upgradeToSchemav5(std::string& filename)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 657
      start: 650
    functionDepth: 0
    functionLinenumber: 650
    functionLinenumberEnd: 657
    functionName: LMDBBackend::upgradeToSchemav6
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool LMDBBackend::upgradeToSchemav6(std::string& /* filename */)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: find
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:664,1
    - Dst: end
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:664,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - domainid
    - ' data'
    argTypes:
    - domainid_t
    - TransientDomainInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 669
      start: 662
    functionDepth: 0
    functionLinenumber: 662
    functionLinenumberEnd: 669
    functionName: LMDBBackend::TransientDomainInfoCache::get(domainid_t domainid,
      TransientDomainInfo& data) const
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.cc
    functionUses: 0
    functionsReached:
    - end
    - find
    linkageType: ''
    returnType: bool
    signature: bool LMDBBackend::TransientDomainInfoCache::get(domainid_t domainid,
      TransientDomainInfo& data) const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: find
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:674,1
    - Dst: end
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:674,1
    - Dst: erase
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:675,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - domainid
    argTypes:
    - domainid_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 677
      start: 672
    functionDepth: 0
    functionLinenumber: 672
    functionLinenumberEnd: 677
    functionName: LMDBBackend::TransientDomainInfoCache::remove(domainid_t domainid)
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.cc
    functionUses: 0
    functionsReached:
    - erase
    - end
    - find
    linkageType: ''
    returnType: void
    signature: void LMDBBackend::TransientDomainInfoCache::remove(domainid_t domainid)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: insert_or_assign
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:682,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - domainid
    - ' data'
    argTypes:
    - domainid_t
    - TransientDomainInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 683
      start: 680
    functionDepth: 0
    functionLinenumber: 680
    functionLinenumberEnd: 683
    functionName: LMDBBackend::TransientDomainInfoCache::update(domainid_t domainid,
      const TransientDomainInfo& data)
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.cc
    functionUses: 0
    functionsReached:
    - insert_or_assign
    linkageType: ''
    returnType: void
    signature: void LMDBBackend::TransientDomainInfoCache::update(domainid_t domainid,
      const TransientDomainInfo& data)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: begin
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:688,1
    - Dst: end
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:689,1
    - Dst: erase
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:694,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - ' domainid'
    - ' data'
    argTypes:
    - domainid_t
    - TransientDomainInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 696
      start: 686
    functionDepth: 0
    functionLinenumber: 686
    functionLinenumberEnd: 696
    functionName: LMDBBackend::TransientDomainInfoCache::pop(domainid_t& domainid,
      TransientDomainInfo& data)
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.cc
    functionUses: 0
    functionsReached:
    - erase
    - end
    - begin
    linkageType: ''
    returnType: bool
    signature: bool LMDBBackend::TransientDomainInfoCache::pop(domainid_t& domainid,
      TransientDomainInfo& data)
  - BBCount: 27
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:703,1
    - Dst: std::runtime_error
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:704,1
    - Dst: withName
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:708,1
    - Dst: arg
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:711,1
    - Dst: setArgPrefix
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:713,1
    - Dst: toLower
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:715,1
    - Dst: getArg
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:715,1
    - Dst: string::empty
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:721,1
    - Dst: std::runtime_error
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:724,1
    - Dst: std::stoll
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:728,1
    - Dst: getArg
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:728,1
    - Dst: std::runtime_error
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:731,1
    - Dst: std::string
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:731,1
    - Dst: what
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:731,1
    - Dst: std::stoll
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:734,1
    - Dst: getArg
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:734,1
    - Dst: std::runtime_error
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:737,1
    - Dst: std::string
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:737,1
    - Dst: what
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:737,1
    - Dst: mustDo
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:744,1
    - Dst: mustDo
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:745,1
    - Dst: mustDo
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:747,1
    - Dst: atoi
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:752,1
    - Dst: getArg
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:752,1
    - Dst: std::runtime_error
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:753,1
    - Dst: std::string
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:753,1
    - Dst: mustDo
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:757,1
    - Dst: mustDo
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:759,1
    - Dst: std::scoped_lock
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:765,1
    - Dst: getArg
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:767,1
    - Dst: LMDBBackend::getSchemaVersionAndShards
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:769,1
    - Dst: getArgAsNum
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:773,1
    - Dst: std::runtime_error
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:774,1
    - Dst: std::runtime_error
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:778,1
    - Dst: LMDBBackend::upgradeToSchemav5
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:787,1
    - Dst: std::runtime_error
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:788,1
    - Dst: LMDBBackend::upgradeToSchemav6
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:794,1
    - Dst: std::runtime_error
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:795,1
    - Dst: std::runtime_error
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:801,1
    - Dst: LMDBBackend::openAllTheDatabases
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:804,1
    - Dst: getEnv
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:806,1
    - Dst: getEnv
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:808,1
    - Dst: atoi
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:810,1
    - Dst: getArg
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:810,1
    - Dst: std::runtime_error
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:812,1
    - Dst: std::runtime_error
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:815,1
    - Dst: static_cast<uint32_t>
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:817,1
    - Dst: auto::get
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:820,1
    - Dst: MDBOutVal::get
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:821,1
    - Dst: mustDo
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:823,1
    - Dst: std::runtime_error
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:824,1
    - Dst: SLOG
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:828,1
    - Dst: info
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:835,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:835,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:835,1
    - Dst: auto::put
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:840,1
    - Dst: auto::get
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:844,1
    - Dst: getUniqueID
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:845,1
    - Dst: auto::begin
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:846,1
    - Dst: auto::end
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:846,1
    - Dst: auto::put
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:847,1
    - Dst: auto::get
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:851,1
    - Dst: MDBOutVal::get
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:851,1
    - Dst: auto::put
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:852,1
    - Dst: auto::commit
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:854,1
    - Dst: LMDBBackend::openAllTheDatabases
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:861,1
    - Dst: resize
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:863,1
    - Dst: arg
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:864,1
    CyclomaticComplexity: 46
    EdgeCount: 46
    ICount: 105
    argCount: 1
    argNames:
    - ' suffix'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 865
      start: 700
    functionDepth: 2
    functionLinenumber: 700
    functionLinenumberEnd: 865
    functionName: LMDBBackend::LMDBBackend
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.cc
    functionUses: 0
    functionsReached:
    - withName
    - getUniqueID
    - LMDBBackend::getSchemaVersionAndShards
    - getArg
    - LMDBBackend::openAllTheDatabases
    - getEnv
    - static_cast<uint32_t>
    - auto::begin
    - std::string
    - SLOG
    - resize
    - string::empty
    - Logging::Loggable
    - mustDo
    - auto::commit
    - LMDBBackend::upgradeToSchemav5
    - empty
    - std::scoped_lock
    - std::stoll
    - auto::get
    - getArgAsNum
    - std::runtime_error
    - toLower
    - LMDBBackend::upgradeToSchemav6
    - auto::put
    - arg
    - MDBOutVal::get
    - atoi
    - what
    - info
    - setArgPrefix
    - auto::end
    linkageType: ''
    returnType: void
    signature: void LMDBBackend::LMDBBackend(const std::string& suffix)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LMDBBackend::reset
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:874,1
    - Dst: LMDBBackend::reset
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:875,1
    - Dst: LMDBBackend::reset
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:879,1
    - Dst: LMDBBackend::reset
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:880,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 882
      start: 867
    functionDepth: 0
    functionLinenumber: 867
    functionLinenumberEnd: 882
    functionName: LMDBBackend::~LMDBBackend()
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.cc
    functionUses: 0
    functionsReached:
    - LMDBBackend::reset
    linkageType: ''
    returnType: void
    signature: void LMDBBackend::~LMDBBackend()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: getArg
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:886,1
    - Dst: std::make_shared<tdomains_t>
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:887,1
    - Dst: getMDBEnv
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:887,1
    - Dst: auto::c_str
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:887,1
    - Dst: std::make_shared<tmeta_t>
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:888,1
    - Dst: getEnv
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:888,1
    - Dst: std::make_shared<tkdb_t>
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:889,1
    - Dst: getEnv
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:889,1
    - Dst: std::make_shared<ttsig_t>
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:890,1
    - Dst: getEnv
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:890,1
    - Dst: getEnv
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:891,1
    - Dst: getEnv
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:892,1
    - Dst: std::make_shared<tdomain_extra_t>
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:894,1
    - Dst: getEnv
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:894,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 896
      start: 884
    functionDepth: 0
    functionLinenumber: 884
    functionLinenumberEnd: 896
    functionName: LMDBBackend::openAllTheDatabases
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.cc
    functionUses: 1
    functionsReached:
    - auto::c_str
    - std::make_shared<tdomain_extra_t>
    - getArg
    - getEnv
    - std::make_shared<tmeta_t>
    - std::make_shared<tkdb_t>
    - std::make_shared<tdomains_t>
    - std::make_shared<ttsig_t>
    - getMDBEnv
    linkageType: ''
    returnType: void
    signature: void LMDBBackend::openAllTheDatabases()
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 905
      start: 898
    functionDepth: 0
    functionLinenumber: 898
    functionLinenumberEnd: 905
    functionName: LMDBBackend::getCapabilities
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int LMDBBackend::getCapabilities()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:915,1
    - Dst: toDNSStringLC
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:919,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - ' ar'
    - ' g'
    argTypes:
    - Archive
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 921
      start: 913
    functionDepth: 0
    functionLinenumber: 913
    functionLinenumberEnd: 921
    functionName: boost::serialization::save
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.cc
    functionUses: 0
    functionsReached:
    - empty
    - toDNSStringLC
    linkageType: ''
    returnType: void
    signature: void save(Archive& ar, const DNSName& g, const unsigned int /* version
      */)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: string::empty
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:928,1
    - Dst: DNSName
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:929,1
    - Dst: DNSName
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:932,1
    - Dst: string::c_str
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:932,1
    - Dst: string::size
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:932,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - ' ar'
    - ' g'
    argTypes:
    - Archive
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 934
      start: 924
    functionDepth: 0
    functionLinenumber: 924
    functionLinenumberEnd: 934
    functionName: boost::serialization::load
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.cc
    functionUses: 0
    functionsReached:
    - string::c_str
    - string::size
    - DNSName
    - string::empty
    linkageType: ''
    returnType: void
    signature: void load(Archive& ar, DNSName& g, const unsigned int /* version */)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getVariant
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:940,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ' arc'
    - ' zone'
    argTypes:
    - Archive
    - ZoneName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 941
      start: 937
    functionDepth: 0
    functionLinenumber: 937
    functionLinenumberEnd: 941
    functionName: boost::serialization::save
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.cc
    functionUses: 0
    functionsReached:
    - getVariant
    linkageType: ''
    returnType: void
    signature: void save(Archive& arc, const ZoneName& zone, const unsigned int /*
      version */)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: std::string::empty
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:949,1
    - Dst: ZoneName
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:950,1
    - Dst: ZoneName
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:953,1
    - Dst: DNSName
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:953,1
    - Dst: std::string::c_str
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:953,1
    - Dst: std::string::size
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:953,1
    - Dst: DNSName::DNSName
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:957,1
    - Dst: ZoneName
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:961,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 3
    argNames:
    - ' arc'
    - ' zone'
    - version
    argTypes:
    - Archive
    - ZoneName
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 962
      start: 944
    functionDepth: 0
    functionLinenumber: 944
    functionLinenumberEnd: 962
    functionName: boost::serialization::load
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.cc
    functionUses: 0
    functionsReached:
    - std::string::c_str
    - DNSName
    - std::string::empty
    - DNSName::DNSName
    - ZoneName
    - std::string::size
    linkageType: ''
    returnType: void
    signature: void load(Archive& arc, ZoneName& zone, const unsigned int version)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<uint32_t>
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:971,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 2
    argNames:
    - ' ar'
    - ' g'
    argTypes:
    - Archive
    - DomainInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 976
      start: 965
    functionDepth: 0
    functionLinenumber: 965
    functionLinenumberEnd: 976
    functionName: boost::serialization::save
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.cc
    functionUses: 0
    functionsReached:
    - static_cast<uint32_t>
    linkageType: ''
    returnType: void
    signature: void save(Archive& ar, const DomainInfo& g, const unsigned int /* version
      */)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: DNSName::DNSName
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:985,1
    - Dst: ZoneName::ZoneName
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:987,1
    - Dst: static_cast<domainid_t>
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:994,1
    - Dst: options::clear
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1000,1
    - Dst: catalog::clear
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1001,1
    - Dst: DNSName::DNSName
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1007,1
    - Dst: ZoneName
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1009,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 27
    argCount: 3
    argNames:
    - ' ar'
    - ' g'
    - version
    argTypes:
    - Archive
    - DomainInfo
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1018
      start: 979
    functionDepth: 1
    functionLinenumber: 979
    functionLinenumberEnd: 1018
    functionName: boost::serialization::load
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.cc
    functionUses: 0
    functionsReached:
    - ZoneName::ZoneName
    - options::clear
    - static_cast<domainid_t>
    - catalog::clear
    - DNSName::DNSName
    - ZoneName
    linkageType: ''
    returnType: void
    signature: void load(Archive& ar, DomainInfo& g, const unsigned int version)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' ar'
    - ' g'
    argTypes:
    - Archive
    - LMDBBackend::TransientDomainInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1024
      start: 1021
    functionDepth: 0
    functionLinenumber: 1021
    functionLinenumberEnd: 1024
    functionName: boost::serialization::serialize
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void serialize(Archive& ar, LMDBBackend::TransientDomainInfo& g, const
      unsigned int /* version */)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' ar'
    - ' g'
    argTypes:
    - Archive
    - LMDBBackend::DomainMeta
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1030
      start: 1027
    functionDepth: 0
    functionLinenumber: 1027
    functionLinenumberEnd: 1030
    functionName: boost::serialization::serialize
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void serialize(Archive& ar, LMDBBackend::DomainMeta& g, const unsigned
      int /* version */)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' ar'
    - ' g'
    argTypes:
    - Archive
    - LMDBBackend::KeyDataDB
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1036
      start: 1033
    functionDepth: 0
    functionLinenumber: 1033
    functionLinenumberEnd: 1036
    functionName: boost::serialization::save
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void save(Archive& ar, const LMDBBackend::KeyDataDB& g, const unsigned
      int /* version */)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - ' ar'
    - ' g'
    - version
    argTypes:
    - Archive
    - LMDBBackend::KeyDataDB
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1048
      start: 1039
    functionDepth: 0
    functionLinenumber: 1039
    functionLinenumberEnd: 1048
    functionName: boost::serialization::load
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void load(Archive& ar, LMDBBackend::KeyDataDB& g, const unsigned int
      version)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - ' ar'
    - ' g'
    argTypes:
    - Archive
    - TSIGKey
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1056
      start: 1051
    functionDepth: 0
    functionLinenumber: 1051
    functionLinenumberEnd: 1056
    functionName: boost::serialization::serialize
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void serialize(Archive& ar, TSIGKey& g, const unsigned int /* version
      */)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:915,1
    - Dst: toDNSStringLC
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:919,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - ' ar'
    - ' g'
    argTypes:
    - Archive
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 921
      start: 913
    functionDepth: 0
    functionLinenumber: 913
    functionLinenumberEnd: 921
    functionName: boost::serialization::save
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.cc
    functionUses: 0
    functionsReached:
    - empty
    - toDNSStringLC
    linkageType: ''
    returnType: void
    signature: void save(Archive& ar, const DNSName& g, const unsigned int /* version
      */)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: string::empty
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:928,1
    - Dst: DNSName
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:929,1
    - Dst: DNSName
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:932,1
    - Dst: string::c_str
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:932,1
    - Dst: string::size
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:932,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - ' ar'
    - ' g'
    argTypes:
    - Archive
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 934
      start: 924
    functionDepth: 0
    functionLinenumber: 924
    functionLinenumberEnd: 934
    functionName: boost::serialization::load
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.cc
    functionUses: 0
    functionsReached:
    - string::c_str
    - string::size
    - DNSName
    - string::empty
    linkageType: ''
    returnType: void
    signature: void load(Archive& ar, DNSName& g, const unsigned int /* version */)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getVariant
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:940,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ' arc'
    - ' zone'
    argTypes:
    - Archive
    - ZoneName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 941
      start: 937
    functionDepth: 0
    functionLinenumber: 937
    functionLinenumberEnd: 941
    functionName: boost::serialization::save
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.cc
    functionUses: 0
    functionsReached:
    - getVariant
    linkageType: ''
    returnType: void
    signature: void save(Archive& arc, const ZoneName& zone, const unsigned int /*
      version */)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: std::string::empty
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:949,1
    - Dst: ZoneName
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:950,1
    - Dst: ZoneName
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:953,1
    - Dst: DNSName
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:953,1
    - Dst: std::string::c_str
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:953,1
    - Dst: std::string::size
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:953,1
    - Dst: DNSName::DNSName
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:957,1
    - Dst: ZoneName
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:961,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 3
    argNames:
    - ' arc'
    - ' zone'
    - version
    argTypes:
    - Archive
    - ZoneName
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 962
      start: 944
    functionDepth: 0
    functionLinenumber: 944
    functionLinenumberEnd: 962
    functionName: boost::serialization::load
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.cc
    functionUses: 0
    functionsReached:
    - std::string::c_str
    - DNSName
    - std::string::empty
    - DNSName::DNSName
    - ZoneName
    - std::string::size
    linkageType: ''
    returnType: void
    signature: void load(Archive& arc, ZoneName& zone, const unsigned int version)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<uint32_t>
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:971,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 2
    argNames:
    - ' ar'
    - ' g'
    argTypes:
    - Archive
    - DomainInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 976
      start: 965
    functionDepth: 0
    functionLinenumber: 965
    functionLinenumberEnd: 976
    functionName: boost::serialization::save
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.cc
    functionUses: 0
    functionsReached:
    - static_cast<uint32_t>
    linkageType: ''
    returnType: void
    signature: void save(Archive& ar, const DomainInfo& g, const unsigned int /* version
      */)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: DNSName::DNSName
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:985,1
    - Dst: ZoneName::ZoneName
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:987,1
    - Dst: static_cast<domainid_t>
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:994,1
    - Dst: options::clear
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1000,1
    - Dst: catalog::clear
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1001,1
    - Dst: DNSName::DNSName
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1007,1
    - Dst: ZoneName
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1009,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 27
    argCount: 3
    argNames:
    - ' ar'
    - ' g'
    - version
    argTypes:
    - Archive
    - DomainInfo
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1018
      start: 979
    functionDepth: 1
    functionLinenumber: 979
    functionLinenumberEnd: 1018
    functionName: boost::serialization::load
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.cc
    functionUses: 0
    functionsReached:
    - ZoneName::ZoneName
    - options::clear
    - static_cast<domainid_t>
    - catalog::clear
    - DNSName::DNSName
    - ZoneName
    linkageType: ''
    returnType: void
    signature: void load(Archive& ar, DomainInfo& g, const unsigned int version)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' ar'
    - ' g'
    argTypes:
    - Archive
    - LMDBBackend::TransientDomainInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1024
      start: 1021
    functionDepth: 0
    functionLinenumber: 1021
    functionLinenumberEnd: 1024
    functionName: boost::serialization::serialize
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void serialize(Archive& ar, LMDBBackend::TransientDomainInfo& g, const
      unsigned int /* version */)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' ar'
    - ' g'
    argTypes:
    - Archive
    - LMDBBackend::DomainMeta
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1030
      start: 1027
    functionDepth: 0
    functionLinenumber: 1027
    functionLinenumberEnd: 1030
    functionName: boost::serialization::serialize
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void serialize(Archive& ar, LMDBBackend::DomainMeta& g, const unsigned
      int /* version */)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' ar'
    - ' g'
    argTypes:
    - Archive
    - LMDBBackend::KeyDataDB
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1036
      start: 1033
    functionDepth: 0
    functionLinenumber: 1033
    functionLinenumberEnd: 1036
    functionName: boost::serialization::save
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void save(Archive& ar, const LMDBBackend::KeyDataDB& g, const unsigned
      int /* version */)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - ' ar'
    - ' g'
    - version
    argTypes:
    - Archive
    - LMDBBackend::KeyDataDB
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1048
      start: 1039
    functionDepth: 0
    functionLinenumber: 1039
    functionLinenumberEnd: 1048
    functionName: boost::serialization::load
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void load(Archive& ar, LMDBBackend::KeyDataDB& g, const unsigned int
      version)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - ' ar'
    - ' g'
    argTypes:
    - Archive
    - TSIGKey
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1056
      start: 1051
    functionDepth: 0
    functionLinenumber: 1051
    functionLinenumberEnd: 1056
    functionName: boost::serialization::serialize
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void serialize(Archive& ar, TSIGKey& g, const unsigned int /* version
      */)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:915,1
    - Dst: toDNSStringLC
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:919,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - ' ar'
    - ' g'
    argTypes:
    - Archive
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 921
      start: 913
    functionDepth: 0
    functionLinenumber: 913
    functionLinenumberEnd: 921
    functionName: boost::serialization::save
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.cc
    functionUses: 0
    functionsReached:
    - empty
    - toDNSStringLC
    linkageType: ''
    returnType: void
    signature: void save(Archive& ar, const DNSName& g, const unsigned int /* version
      */)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: string::empty
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:928,1
    - Dst: DNSName
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:929,1
    - Dst: DNSName
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:932,1
    - Dst: string::c_str
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:932,1
    - Dst: string::size
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:932,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - ' ar'
    - ' g'
    argTypes:
    - Archive
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 934
      start: 924
    functionDepth: 0
    functionLinenumber: 924
    functionLinenumberEnd: 934
    functionName: boost::serialization::load
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.cc
    functionUses: 0
    functionsReached:
    - string::c_str
    - string::size
    - DNSName
    - string::empty
    linkageType: ''
    returnType: void
    signature: void load(Archive& ar, DNSName& g, const unsigned int /* version */)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getVariant
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:940,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ' arc'
    - ' zone'
    argTypes:
    - Archive
    - ZoneName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 941
      start: 937
    functionDepth: 0
    functionLinenumber: 937
    functionLinenumberEnd: 941
    functionName: boost::serialization::save
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.cc
    functionUses: 0
    functionsReached:
    - getVariant
    linkageType: ''
    returnType: void
    signature: void save(Archive& arc, const ZoneName& zone, const unsigned int /*
      version */)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: std::string::empty
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:949,1
    - Dst: ZoneName
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:950,1
    - Dst: ZoneName
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:953,1
    - Dst: DNSName
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:953,1
    - Dst: std::string::c_str
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:953,1
    - Dst: std::string::size
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:953,1
    - Dst: DNSName::DNSName
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:957,1
    - Dst: ZoneName
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:961,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 3
    argNames:
    - ' arc'
    - ' zone'
    - version
    argTypes:
    - Archive
    - ZoneName
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 962
      start: 944
    functionDepth: 0
    functionLinenumber: 944
    functionLinenumberEnd: 962
    functionName: boost::serialization::load
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.cc
    functionUses: 0
    functionsReached:
    - std::string::c_str
    - DNSName
    - std::string::empty
    - DNSName::DNSName
    - ZoneName
    - std::string::size
    linkageType: ''
    returnType: void
    signature: void load(Archive& arc, ZoneName& zone, const unsigned int version)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<uint32_t>
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:971,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 2
    argNames:
    - ' ar'
    - ' g'
    argTypes:
    - Archive
    - DomainInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 976
      start: 965
    functionDepth: 0
    functionLinenumber: 965
    functionLinenumberEnd: 976
    functionName: boost::serialization::save
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.cc
    functionUses: 0
    functionsReached:
    - static_cast<uint32_t>
    linkageType: ''
    returnType: void
    signature: void save(Archive& ar, const DomainInfo& g, const unsigned int /* version
      */)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: DNSName::DNSName
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:985,1
    - Dst: ZoneName::ZoneName
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:987,1
    - Dst: static_cast<domainid_t>
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:994,1
    - Dst: options::clear
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1000,1
    - Dst: catalog::clear
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1001,1
    - Dst: DNSName::DNSName
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1007,1
    - Dst: ZoneName
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1009,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 27
    argCount: 3
    argNames:
    - ' ar'
    - ' g'
    - version
    argTypes:
    - Archive
    - DomainInfo
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1018
      start: 979
    functionDepth: 1
    functionLinenumber: 979
    functionLinenumberEnd: 1018
    functionName: boost::serialization::load
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.cc
    functionUses: 0
    functionsReached:
    - ZoneName::ZoneName
    - options::clear
    - static_cast<domainid_t>
    - catalog::clear
    - DNSName::DNSName
    - ZoneName
    linkageType: ''
    returnType: void
    signature: void load(Archive& ar, DomainInfo& g, const unsigned int version)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' ar'
    - ' g'
    argTypes:
    - Archive
    - LMDBBackend::TransientDomainInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1024
      start: 1021
    functionDepth: 0
    functionLinenumber: 1021
    functionLinenumberEnd: 1024
    functionName: boost::serialization::serialize
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void serialize(Archive& ar, LMDBBackend::TransientDomainInfo& g, const
      unsigned int /* version */)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' ar'
    - ' g'
    argTypes:
    - Archive
    - LMDBBackend::DomainMeta
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1030
      start: 1027
    functionDepth: 0
    functionLinenumber: 1027
    functionLinenumberEnd: 1030
    functionName: boost::serialization::serialize
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void serialize(Archive& ar, LMDBBackend::DomainMeta& g, const unsigned
      int /* version */)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' ar'
    - ' g'
    argTypes:
    - Archive
    - LMDBBackend::KeyDataDB
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1036
      start: 1033
    functionDepth: 0
    functionLinenumber: 1033
    functionLinenumberEnd: 1036
    functionName: boost::serialization::save
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void save(Archive& ar, const LMDBBackend::KeyDataDB& g, const unsigned
      int /* version */)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - ' ar'
    - ' g'
    - version
    argTypes:
    - Archive
    - LMDBBackend::KeyDataDB
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1048
      start: 1039
    functionDepth: 0
    functionLinenumber: 1039
    functionLinenumberEnd: 1048
    functionName: boost::serialization::load
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void load(Archive& ar, LMDBBackend::KeyDataDB& g, const unsigned int
      version)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - ' ar'
    - ' g'
    argTypes:
    - Archive
    - TSIGKey
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1056
      start: 1051
    functionDepth: 0
    functionLinenumber: 1051
    functionLinenumberEnd: 1056
    functionName: boost::serialization::serialize
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void serialize(Archive& ar, TSIGKey& g, const unsigned int /* version
      */)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:915,1
    - Dst: toDNSStringLC
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:919,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - ' ar'
    - ' g'
    argTypes:
    - Archive
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 921
      start: 913
    functionDepth: 0
    functionLinenumber: 913
    functionLinenumberEnd: 921
    functionName: boost::serialization::save
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.cc
    functionUses: 0
    functionsReached:
    - empty
    - toDNSStringLC
    linkageType: ''
    returnType: void
    signature: void save(Archive& ar, const DNSName& g, const unsigned int /* version
      */)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: string::empty
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:928,1
    - Dst: DNSName
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:929,1
    - Dst: DNSName
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:932,1
    - Dst: string::c_str
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:932,1
    - Dst: string::size
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:932,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - ' ar'
    - ' g'
    argTypes:
    - Archive
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 934
      start: 924
    functionDepth: 0
    functionLinenumber: 924
    functionLinenumberEnd: 934
    functionName: boost::serialization::load
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.cc
    functionUses: 0
    functionsReached:
    - string::c_str
    - string::size
    - DNSName
    - string::empty
    linkageType: ''
    returnType: void
    signature: void load(Archive& ar, DNSName& g, const unsigned int /* version */)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getVariant
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:940,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ' arc'
    - ' zone'
    argTypes:
    - Archive
    - ZoneName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 941
      start: 937
    functionDepth: 0
    functionLinenumber: 937
    functionLinenumberEnd: 941
    functionName: boost::serialization::save
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.cc
    functionUses: 0
    functionsReached:
    - getVariant
    linkageType: ''
    returnType: void
    signature: void save(Archive& arc, const ZoneName& zone, const unsigned int /*
      version */)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: std::string::empty
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:949,1
    - Dst: ZoneName
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:950,1
    - Dst: ZoneName
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:953,1
    - Dst: DNSName
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:953,1
    - Dst: std::string::c_str
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:953,1
    - Dst: std::string::size
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:953,1
    - Dst: DNSName::DNSName
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:957,1
    - Dst: ZoneName
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:961,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 3
    argNames:
    - ' arc'
    - ' zone'
    - version
    argTypes:
    - Archive
    - ZoneName
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 962
      start: 944
    functionDepth: 0
    functionLinenumber: 944
    functionLinenumberEnd: 962
    functionName: boost::serialization::load
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.cc
    functionUses: 0
    functionsReached:
    - std::string::c_str
    - DNSName
    - std::string::empty
    - DNSName::DNSName
    - ZoneName
    - std::string::size
    linkageType: ''
    returnType: void
    signature: void load(Archive& arc, ZoneName& zone, const unsigned int version)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<uint32_t>
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:971,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 2
    argNames:
    - ' ar'
    - ' g'
    argTypes:
    - Archive
    - DomainInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 976
      start: 965
    functionDepth: 0
    functionLinenumber: 965
    functionLinenumberEnd: 976
    functionName: boost::serialization::save
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.cc
    functionUses: 0
    functionsReached:
    - static_cast<uint32_t>
    linkageType: ''
    returnType: void
    signature: void save(Archive& ar, const DomainInfo& g, const unsigned int /* version
      */)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: DNSName::DNSName
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:985,1
    - Dst: ZoneName::ZoneName
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:987,1
    - Dst: static_cast<domainid_t>
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:994,1
    - Dst: options::clear
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1000,1
    - Dst: catalog::clear
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1001,1
    - Dst: DNSName::DNSName
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1007,1
    - Dst: ZoneName
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1009,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 27
    argCount: 3
    argNames:
    - ' ar'
    - ' g'
    - version
    argTypes:
    - Archive
    - DomainInfo
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1018
      start: 979
    functionDepth: 1
    functionLinenumber: 979
    functionLinenumberEnd: 1018
    functionName: boost::serialization::load
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.cc
    functionUses: 0
    functionsReached:
    - ZoneName::ZoneName
    - options::clear
    - static_cast<domainid_t>
    - catalog::clear
    - DNSName::DNSName
    - ZoneName
    linkageType: ''
    returnType: void
    signature: void load(Archive& ar, DomainInfo& g, const unsigned int version)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' ar'
    - ' g'
    argTypes:
    - Archive
    - LMDBBackend::TransientDomainInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1024
      start: 1021
    functionDepth: 0
    functionLinenumber: 1021
    functionLinenumberEnd: 1024
    functionName: boost::serialization::serialize
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void serialize(Archive& ar, LMDBBackend::TransientDomainInfo& g, const
      unsigned int /* version */)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' ar'
    - ' g'
    argTypes:
    - Archive
    - LMDBBackend::DomainMeta
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1030
      start: 1027
    functionDepth: 0
    functionLinenumber: 1027
    functionLinenumberEnd: 1030
    functionName: boost::serialization::serialize
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void serialize(Archive& ar, LMDBBackend::DomainMeta& g, const unsigned
      int /* version */)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' ar'
    - ' g'
    argTypes:
    - Archive
    - LMDBBackend::KeyDataDB
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1036
      start: 1033
    functionDepth: 0
    functionLinenumber: 1033
    functionLinenumberEnd: 1036
    functionName: boost::serialization::save
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void save(Archive& ar, const LMDBBackend::KeyDataDB& g, const unsigned
      int /* version */)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - ' ar'
    - ' g'
    - version
    argTypes:
    - Archive
    - LMDBBackend::KeyDataDB
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1048
      start: 1039
    functionDepth: 0
    functionLinenumber: 1039
    functionLinenumberEnd: 1048
    functionName: boost::serialization::load
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void load(Archive& ar, LMDBBackend::KeyDataDB& g, const unsigned int
      version)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - ' ar'
    - ' g'
    argTypes:
    - Archive
    - TSIGKey
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1056
      start: 1051
    functionDepth: 0
    functionLinenumber: 1051
    functionLinenumberEnd: 1056
    functionName: boost::serialization::serialize
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void serialize(Archive& ar, TSIGKey& g, const unsigned int /* version
      */)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: content::length
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1088,1
    - Dst: pdns::max
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1088,1
    - Dst: PDNSException
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1089,1
    - Dst: std::to_string
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1089,1
    - Dst: content::length
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1089,1
    - Dst: content::length
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1093,1
    - Dst: reserve
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1097,1
    - Dst: size
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1097,1
    - Dst: append
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1101,1
    - Dst: append
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1104,1
    - Dst: append
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1108,1
    - Dst: append
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1109,1
    - Dst: append
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1110,1
    - Dst: append
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1111,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - ' buffer'
    - ' value'
    argTypes:
    - std::string
    - LMDBBackend::LMDBResourceRecord
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1112
      start: 1086
    functionDepth: 0
    functionLinenumber: 1086
    functionLinenumberEnd: 1112
    functionName: serializeToBuffer
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.cc
    functionUses: 0
    functionsReached:
    - pdns::max
    - std::to_string
    - PDNSException
    - append
    - content::length
    - size
    - reserve
    linkageType: ''
    returnType: void
    signature: void serializeToBuffer(std::string& buffer, const LMDBBackend::LMDBResourceRecord&
      value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: serializeToBuffer
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1118,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - ' buffer'
    - ' value'
    argTypes:
    - std::string
    - vector<LMDBBackend::LMDBResourceRecord>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1120
      start: 1115
    functionDepth: 0
    functionLinenumber: 1115
    functionLinenumberEnd: 1120
    functionName: serializeToBuffer
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.cc
    functionUses: 1
    functionsReached:
    - serializeToBuffer
    linkageType: ''
    returnType: void
    signature: void serializeToBuffer(std::string& buffer, const vector<LMDBBackend::LMDBResourceRecord>&
      value)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: data
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1127,1
    - Dst: size
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1129,1
    - Dst: memcpy
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1132,1
    - Dst: size
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1133,1
    - Dst: content::assign
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1138,1
    - Dst: memcpy
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1140,1
    - Dst: wildcardname::clear
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1146,1
    - Dst: data
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1148,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 18
    argCount: 2
    argNames:
    - ' str'
    - ' lrr'
    argTypes:
    - string_view
    - LMDBBackend::LMDBResourceRecord
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1149
      start: 1125
    functionDepth: 1
    functionLinenumber: 1125
    functionLinenumberEnd: 1149
    functionName: deserializeRRFromBuffer
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.cc
    functionUses: 0
    functionsReached:
    - wildcardname::clear
    - memcpy
    - size
    - content::assign
    - data
    linkageType: ''
    returnType: size_t
    signature: size_t deserializeRRFromBuffer(const string_view& str, LMDBBackend::LMDBResourceRecord&
      lrr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: deserializeRRFromBuffer
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1155,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' buffer'
    - ' value'
    argTypes:
    - string_view
    - LMDBBackend::LMDBResourceRecord
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1156
      start: 1153
    functionDepth: 2
    functionLinenumber: 1153
    functionLinenumberEnd: 1156
    functionName: deserializeFromBuffer
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.cc
    functionUses: 0
    functionsReached:
    - deserializeRRFromBuffer
    linkageType: ''
    returnType: bool
    signature: bool deserializeFromBuffer(const string_view& buffer, LMDBBackend::LMDBResourceRecord&
      value)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: auto::size
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1165,1
    - Dst: LMDBBackend::LMDBResourceRecord::LMDBResourceRecord
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1166,1
    - Dst: deserializeRRFromBuffer
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1167,1
    - Dst: emplace_back
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1171,1
    - Dst: auto::remove_prefix
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1172,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - ' buffer'
    - ' value'
    argTypes:
    - string_view
    - vector<LMDBBackend::LMDBResourceRecord>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1174
      start: 1162
    functionDepth: 2
    functionLinenumber: 1162
    functionLinenumberEnd: 1174
    functionName: deserializeMultipleFromBuffer
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.cc
    functionUses: 0
    functionsReached:
    - emplace_back
    - deserializeRRFromBuffer
    - LMDBBackend::LMDBResourceRecord::LMDBResourceRecord
    - auto::remove_prefix
    - auto::size
    linkageType: ''
    returnType: void
    signature: void deserializeMultipleFromBuffer(const string_view& buffer, vector<LMDBBackend::LMDBResourceRecord>&
      value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSRecordContent::make
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1178,1
    - Dst: auto::serialize
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1179,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - qtype
    - ' domain'
    - ' content'
    argTypes:
    - uint16_t
    - DNSName
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1180
      start: 1176
    functionDepth: 0
    functionLinenumber: 1176
    functionLinenumberEnd: 1180
    functionName: serializeContent
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.cc
    functionUses: 0
    functionsReached:
    - auto::serialize
    - DNSRecordContent::make
    linkageType: ''
    returnType: std::string
    signature: std::string serializeContent(uint16_t qtype, const DNSName& domain,
      const std::string& content)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: qname::makeRelative
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1186,1
    - Dst: co
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1187,1
    - Dst: protozero::pbf_writer::add_sfixed64
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1195,1
    - Dst: protozero::pbf_writer::add_string
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1196,1
    - Dst: protozero::pbf_writer::add_string
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1197,1
    - Dst: pdns::sha256sum
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1205,1
    - Dst: string::append
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1207,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - ' comment'
    argTypes:
    - Comment
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1210
      start: 1183
    functionDepth: 0
    functionLinenumber: 1183
    functionLinenumberEnd: 1210
    functionName: LMDBBackend::serializeComment
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.cc
    functionUses: 0
    functionsReached:
    - protozero::pbf_writer::add_string
    - protozero::pbf_writer::add_sfixed64
    - string::append
    - qname::makeRelative
    - co
    - pdns::sha256sum
    linkageType: ''
    returnType: std::pair<std::string, std::string>
    signature: std::pair<std::string, std::string> LMDBBackend::serializeComment(const
      Comment& comment)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1214,1
    - Dst: std::make_shared<ARecordContent>
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1215,1
    - Dst: c_str
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1215,1
    - Dst: DNSRecordContent::deserialize
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1217,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 3
    argNames:
    - qtype
    - ' qname'
    - ' content'
    argTypes:
    - uint16_t
    - DNSName
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1218
      start: 1212
    functionDepth: 0
    functionLinenumber: 1212
    functionLinenumberEnd: 1218
    functionName: deserializeContentZR
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.cc
    functionUses: 0
    functionsReached:
    - c_str
    - std::make_shared<ARecordContent>
    - size
    - DNSRecordContent::deserialize
    linkageType: ''
    returnType: std::shared_ptr<DNSRecordContent>
    signature: std::shared_ptr<DNSRecordContent> deserializeContentZR(uint16_t qtype,
      const DNSName& qname, const std::string& content)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: length
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1229,1
    - Dst: memcpy
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1233,1
    - Dst: data
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1233,1
    - Dst: length
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1235,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - ' buffer'
    argTypes:
    - string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1240
      start: 1227
    functionDepth: 0
    functionLinenumber: 1227
    functionLinenumberEnd: 1240
    functionName: peekAtHasOrderName
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.cc
    functionUses: 0
    functionsReached:
    - length
    - data
    - memcpy
    linkageType: ''
    returnType: bool
    signature: bool peekAtHasOrderName(const string_view& buffer)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: length
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1245,1
    - Dst: memcpy
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1249,1
    - Dst: data
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1249,1
    - Dst: length
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1251,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - ' buffer'
    argTypes:
    - string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1256
      start: 1243
    functionDepth: 0
    functionLinenumber: 1243
    functionLinenumberEnd: 1256
    functionName: peekAtAuth
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.cc
    functionUses: 0
    functionsReached:
    - length
    - data
    - memcpy
    linkageType: ''
    returnType: bool
    signature: bool peekAtAuth(const string_view& buffer)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: length
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1261,1
    - Dst: memcpy
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1265,1
    - Dst: data
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1265,1
    - Dst: length
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1267,1
    - Dst: memcpy
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1271,1
    - Dst: data
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1271,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - ' buffer'
    argTypes:
    - string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1273
      start: 1259
    functionDepth: 0
    functionLinenumber: 1259
    functionLinenumberEnd: 1273
    functionName: peekAtTtl
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.cc
    functionUses: 0
    functionsReached:
    - length
    - data
    - memcpy
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t peekAtTtl(const string_view& buffer)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: txn::getCursor
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1295,1
    - Dst: auto::prefix
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1299,1
    - Dst: LMDBBackend::getQType
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1301,1
    - Dst: MDBOutVal::getNoStripHeader
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1301,1
    - Dst: auto::del
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1302,1
    - Dst: auto::next
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1304,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 3
    argNames:
    - ' txn'
    - ' match'
    - qtype
    argTypes:
    - RecordsRWTransaction
    - std::string
    - QType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1306
      start: 1293
    functionDepth: 1
    functionLinenumber: 1293
    functionLinenumberEnd: 1306
    functionName: LMDBBackend::deleteDomainRecords
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.cc
    functionUses: 0
    functionsReached:
    - auto::next
    - auto::del
    - txn::getCursor
    - auto::prefix
    - MDBOutVal::getNoStripHeader
    - LMDBBackend::getQType
    linkageType: ''
    returnType: void
    signature: void LMDBBackend::deleteDomainRecords(RecordsRWTransaction& txn, const
      std::string& match, QType qtype)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: getROTransaction
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1310,1
    - Dst: static_cast<domainid_t>
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1315,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - ' domain'
    - ' info'
    argTypes:
    - ZoneName
    - DomainInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1317
      start: 1308
    functionDepth: 0
    functionLinenumber: 1308
    functionLinenumberEnd: 1317
    functionName: LMDBBackend::findDomain
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.cc
    functionUses: 0
    functionsReached:
    - static_cast<domainid_t>
    - getROTransaction
    linkageType: ''
    returnType: bool
    signature: bool LMDBBackend::findDomain(const ZoneName& domain, DomainInfo& info)
      const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: getROTransaction
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1321,1
    - Dst: auto::get
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1322,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - domainid
    - ' info'
    argTypes:
    - domainid_t
    - DomainInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1327
      start: 1319
    functionDepth: 0
    functionLinenumber: 1319
    functionLinenumberEnd: 1327
    functionName: LMDBBackend::findDomain
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.cc
    functionUses: 0
    functionsReached:
    - getROTransaction
    - auto::get
    linkageType: ''
    returnType: bool
    signature: bool LMDBBackend::findDomain(domainid_t domainid, DomainInfo& info)
      const
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: read_lock
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1336,1
    - Dst: auto::get
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1337,1
    - Dst: getROTransaction
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1345,1
    - Dst: auto::get
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1346,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 1
    argNames:
    - ' info'
    argTypes:
    - DomainInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1355
      start: 1329
    functionDepth: 0
    functionLinenumber: 1329
    functionLinenumberEnd: 1355
    functionName: LMDBBackend::consolidateDomainInfo
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.cc
    functionUses: 0
    functionsReached:
    - getROTransaction
    - read_lock
    - auto::get
    linkageType: ''
    returnType: void
    signature: void LMDBBackend::consolidateDomainInfo(DomainInfo& info) const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: getRWTransaction
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1365,1
    - Dst: auto::put
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1366,1
    - Dst: auto::commit
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1367,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - ' info'
    argTypes:
    - DomainInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1369
      start: 1357
    functionDepth: 1
    functionLinenumber: 1357
    functionLinenumberEnd: 1369
    functionName: LMDBBackend::writeTransientDomainInfo
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.cc
    functionUses: 0
    functionsReached:
    - auto::commit
    - getRWTransaction
    - auto::put
    linkageType: ''
    returnType: void
    signature: void LMDBBackend::writeTransientDomainInfo(const DomainInfo& info)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: write_lock
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1376,1
    - Dst: auto::get
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1377,1
    - Dst: auto::remove
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1381,1
    - Dst: getRWTransaction
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1387,1
    - Dst: auto::put
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1388,1
    - Dst: auto::commit
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1389,1
    - Dst: LMDBBackend::writeTransientDomainInfo
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1390,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 1
    argNames:
    - ' info'
    argTypes:
    - DomainInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1391
      start: 1371
    functionDepth: 2
    functionLinenumber: 1371
    functionLinenumberEnd: 1391
    functionName: LMDBBackend::writeDomainInfo
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.cc
    functionUses: 0
    functionsReached:
    - auto::get
    - getRWTransaction
    - auto::commit
    - auto::put
    - write_lock
    - LMDBBackend::writeTransientDomainInfo
    - auto::remove
    linkageType: ''
    returnType: void
    signature: void LMDBBackend::writeDomainInfo(const DomainInfo& info)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: LMDBBackend::findDomain
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1411,1
    - Dst: DBException
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1417,1
    - Dst: LMDBBackend::getRecordsRWTransaction
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1419,1
    - Dst: order
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1426,1
    - Dst: LMDBBackend::deleteDomainRecords
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1427,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 2
    argNames:
    - ' domain'
    - domain_id
    argTypes:
    - ZoneName
    - domainid_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1431
      start: 1405
    functionDepth: 2
    functionLinenumber: 1405
    functionLinenumberEnd: 1431
    functionName: LMDBBackend::startTransaction
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.cc
    functionUses: 0
    functionsReached:
    - order
    - LMDBBackend::getRecordsRWTransaction
    - DBException
    - LMDBBackend::findDomain
    - LMDBBackend::deleteDomainRecords
    linkageType: ''
    returnType: bool
    signature: bool LMDBBackend::startTransaction(const ZoneName& domain, domainid_t
      domain_id)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DBException
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1437,1
    - Dst: txn::commit
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1440,1
    - Dst: LMDBBackend::reset
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1441,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1443
      start: 1433
    functionDepth: 0
    functionLinenumber: 1433
    functionLinenumberEnd: 1443
    functionName: LMDBBackend::commitTransaction
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.cc
    functionUses: 0
    functionsReached:
    - txn::commit
    - DBException
    - LMDBBackend::reset
    linkageType: ''
    returnType: bool
    signature: bool LMDBBackend::commitTransaction()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DBException
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1449,1
    - Dst: txn::abort
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1452,1
    - Dst: LMDBBackend::reset
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1453,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1456
      start: 1445
    functionDepth: 0
    functionLinenumber: 1445
    functionLinenumberEnd: 1456
    functionName: LMDBBackend::abortTransaction
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.cc
    functionUses: 0
    functionsReached:
    - DBException
    - LMDBBackend::reset
    - txn::abort
    linkageType: ''
    returnType: bool
    signature: bool LMDBBackend::abortTransaction()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: co
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1464,1
    - Dst: txn::get
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1465,1
    - Dst: deserializeFromBuffer
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1467,1
    - Dst: MDBOutVal::get
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1467,1
    - Dst: LMDBResourceRecord::content::c_str
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1468,1
    - Dst: LMDBResourceRecord::content::size
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1468,1
    - Dst: txn::del
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1469,1
    - Dst: co
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1469,1
    - Dst: txn::del
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1471,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - ' txn'
    - domain_id
    - ' qname'
    argTypes:
    - std::shared_ptr<RecordsRWTransaction>
    - domainid_t
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1473
      start: 1459
    functionDepth: 1
    functionLinenumber: 1459
    functionLinenumberEnd: 1473
    functionName: LMDBBackend::deleteNSEC3RecordPair
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.cc
    functionUses: 0
    functionsReached:
    - txn::del
    - LMDBResourceRecord::content::c_str
    - MDBOutVal::get
    - deserializeFromBuffer
    - txn::get
    - co
    - LMDBResourceRecord::content::size
    linkageType: ''
    returnType: void
    signature: void LMDBBackend::deleteNSEC3RecordPair(const std::shared_ptr<RecordsRWTransaction>&
      txn, domainid_t domain_id, const DNSName& qname)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: txn::get
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1492,1
    - Dst: co
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1492,1
    - Dst: deserializeFromBuffer
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1494,1
    - Dst: MDBOutVal::get
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1494,1
    - Dst: LMDBResourceRecord::content::c_str
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1495,1
    - Dst: LMDBResourceRecord::content::size
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1495,1
    - Dst: txn::del
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1499,1
    - Dst: co
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1499,1
    - Dst: toDNSStringLC
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1508,1
    - Dst: MDBRWTransactionImpl::stringWithEmptyHeader
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1509,1
    - Dst: serializeToBuffer
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1510,1
    - Dst: txn::put_header_in_place
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1511,1
    - Dst: co
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1511,1
    - Dst: toDNSString
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1515,1
    - Dst: MDBRWTransactionImpl::stringWithEmptyHeader
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1516,1
    - Dst: serializeToBuffer
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1517,1
    - Dst: txn::put_header_in_place
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1518,1
    - Dst: co
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1518,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 22
    argCount: 4
    argNames:
    - ' txn'
    - domain_id
    - ' qname'
    - ' ordername'
    argTypes:
    - std::shared_ptr<RecordsRWTransaction>
    - domainid_t
    - DNSName
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1519
      start: 1477
    functionDepth: 1
    functionLinenumber: 1477
    functionLinenumberEnd: 1519
    functionName: LMDBBackend::writeNSEC3RecordPair
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.cc
    functionUses: 0
    functionsReached:
    - txn::del
    - LMDBResourceRecord::content::c_str
    - MDBOutVal::get
    - toDNSStringLC
    - txn::put_header_in_place
    - deserializeFromBuffer
    - txn::get
    - co
    - serializeToBuffer
    - toDNSString
    - LMDBResourceRecord::content::size
    - MDBRWTransactionImpl::stringWithEmptyHeader
    linkageType: ''
    returnType: void
    signature: void LMDBBackend::writeNSEC3RecordPair(const std::shared_ptr<RecordsRWTransaction>&
      txn, domainid_t domain_id, const DNSName& qname, const DNSName& ordername)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: prefix
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1532,1
    - Dst: co
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1532,1
    - Dst: LMDBBackend::getQType
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1534,1
    - Dst: MDBOutVal::getNoStripHeader
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1534,1
    - Dst: next
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1543,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 14
    argCount: 3
    argNames:
    - ' cursor'
    - domain_id
    - ' qname'
    argTypes:
    - MDBRWCursor
    - domainid_t
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1546
      start: 1524
    functionDepth: 1
    functionLinenumber: 1524
    functionLinenumberEnd: 1546
    functionName: LMDBBackend::hasOrphanedNSEC3Record
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.cc
    functionUses: 0
    functionsReached:
    - next
    - co
    - LMDBBackend::getQType
    - MDBOutVal::getNoStripHeader
    - prefix
    linkageType: ''
    returnType: bool
    signature: bool LMDBBackend::hasOrphanedNSEC3Record(MDBRWCursor& cursor, domainid_t
      domain_id, const DNSName& qname)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: LMDBResourceRecord::qname::makeUsRelative
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1552,1
    - Dst: serializeContent
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1553,1
    - Dst: LMDBResourceRecord::qtype::getCode
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1553,1
    - Dst: empty
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1556,1
    - Dst: co
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1559,1
    - Dst: LMDBResourceRecord::qtype::getCode
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1559,1
    - Dst: MDBRWTransactionImpl::stringWithEmptyHeader
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1561,1
    - Dst: txn::get
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1563,1
    - Dst: string::append
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1564,1
    - Dst: MDBOutVal::get
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1564,1
    - Dst: serializeToBuffer
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1566,1
    - Dst: txn::put_header_in_place
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1567,1
    - Dst: LMDBBackend::writeNSEC3RecordPair
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1570,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 3
    argNames:
    - ' r'
    - ' ordername'
    - ordernameIsNSEC3
    argTypes:
    - DNSResourceRecord
    - DNSName
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1573
      start: 1549
    functionDepth: 2
    functionLinenumber: 1549
    functionLinenumberEnd: 1573
    functionName: LMDBBackend::feedRecord
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.cc
    functionUses: 0
    functionsReached:
    - MDBOutVal::get
    - txn::put_header_in_place
    - string::append
    - txn::get
    - co
    - serializeToBuffer
    - LMDBBackend::writeNSEC3RecordPair
    - empty
    - serializeContent
    - LMDBResourceRecord::qtype::getCode
    - LMDBResourceRecord::qname::makeUsRelative
    - MDBRWTransactionImpl::stringWithEmptyHeader
    linkageType: ''
    returnType: bool
    signature: bool LMDBBackend::feedRecord(const DNSResourceRecord& r, const DNSName&
      ordername, bool ordernameIsNSEC3)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LMDBBackend::serializeComment
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1578,1
    - Dst: txn::put
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1580,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ' comment'
    argTypes:
    - Comment
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1583
      start: 1576
    functionDepth: 1
    functionLinenumber: 1576
    functionLinenumberEnd: 1583
    functionName: LMDBBackend::feedComment
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.cc
    functionUses: 0
    functionsReached:
    - txn::put
    - LMDBBackend::serializeComment
    linkageType: ''
    returnType: bool
    signature: bool LMDBBackend::feedComment(const Comment& comment)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: first::makeRelative
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1591,1
    - Dst: MDBRWTransactionImpl::stringWithEmptyHeader
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1595,1
    - Dst: serializeToBuffer
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1596,1
    - Dst: txn::put_header_in_place
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1597,1
    - Dst: co
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1597,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - domain_id
    - ' nonterm'
    argTypes:
    - domainid_t
    - map<DNSName, bool>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1600
      start: 1585
    functionDepth: 0
    functionLinenumber: 1585
    functionLinenumberEnd: 1600
    functionName: LMDBBackend::feedEnts
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.cc
    functionUses: 0
    functionsReached:
    - txn::put_header_in_place
    - co
    - serializeToBuffer
    - first::makeRelative
    - MDBRWTransactionImpl::stringWithEmptyHeader
    linkageType: ''
    returnType: bool
    signature: bool LMDBBackend::feedEnts(domainid_t domain_id, map<DNSName, bool>&
      nonterm)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DNSName::DNSName
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1604,1
    - Dst: first::makeRelative
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1608,1
    - Dst: MDBRWTransactionImpl::stringWithEmptyHeader
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1612,1
    - Dst: serializeToBuffer
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1613,1
    - Dst: txn::put_header_in_place
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1614,1
    - Dst: co
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1614,1
    - Dst: DNSName
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1617,1
    - Dst: toBase32Hex
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1617,1
    - Dst: hashQNameWithSalt
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1617,1
    - Dst: LMDBBackend::writeNSEC3RecordPair
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1618,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 5
    argNames:
    - domain_id
    - ' domain'
    - ' nonterm'
    - ' ns3prc'
    - narrow
    argTypes:
    - domainid_t
    - DNSName
    - map<DNSName, bool>
    - NSEC3PARAMRecordContent
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1622
      start: 1602
    functionDepth: 2
    functionLinenumber: 1602
    functionLinenumberEnd: 1622
    functionName: LMDBBackend::feedEnts3
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.cc
    functionUses: 0
    functionsReached:
    - txn::put_header_in_place
    - co
    - serializeToBuffer
    - DNSName
    - LMDBBackend::writeNSEC3RecordPair
    - toBase32Hex
    - DNSName::DNSName
    - first::makeRelative
    - hashQNameWithSalt
    - MDBRWTransactionImpl::stringWithEmptyHeader
    linkageType: ''
    returnType: bool
    signature: bool LMDBBackend::feedEnts3(domainid_t domain_id, const DNSName& domain,
      map<DNSName, bool>& nonterm, const NSEC3PARAMRecordContent& ns3prc, bool narrow)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: LMDBBackend::getRecordsRWTransaction
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1637,1
    - Dst: LMDBBackend::findDomain
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1642,1
    - Dst: makeRelative
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1646,1
    - Dst: getCode
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1649,1
    - Dst: LMDBBackend::deleteNSEC3RecordPair
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1652,1
    - Dst: co
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1653,1
    - Dst: LMDBBackend::deleteDomainRecords
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1654,1
    - Dst: empty
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1656,1
    - Dst: co
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1657,1
    - Dst: front
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1657,1
    - Dst: getCode
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1657,1
    - Dst: getCode
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1661,1
    - Dst: LMDBBackend::deleteNSEC3RecordPair
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1662,1
    - Dst: empty
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1664,1
    - Dst: co
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1665,1
    - Dst: getCode
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1665,1
    - Dst: shared_ptr::txn::getCursor
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1669,1
    - Dst: co
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1673,1
    - Dst: getCode
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1673,1
    - Dst: auto::find
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1675,1
    - Dst: peekAtHasOrderName
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1676,1
    - Dst: MDBOutVal::get
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1676,1
    - Dst: auto::del
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1677,1
    - Dst: empty
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1683,1
    - Dst: LMDBBackend::hasOrphanedNSEC3Record
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1684,1
    - Dst: LMDBBackend::deleteNSEC3RecordPair
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1685,1
    - Dst: empty
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1691,1
    - Dst: vector::reserve
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1693,1
    - Dst: size
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1693,1
    - Dst: serializeContent
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1696,1
    - Dst: LMDBResourceRecord::qtype::getCode
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1696,1
    - Dst: LMDBResourceRecord::qname::makeUsRelative
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1697,1
    - Dst: vector::emplace_back
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1699,1
    - Dst: MDBRWTransactionImpl::stringWithEmptyHeader
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1701,1
    - Dst: serializeToBuffer
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1702,1
    - Dst: shared_ptr::txn::put_header_in_place
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1703,1
    - Dst: shared_ptr::txn::commit
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1707,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 48
    argCount: 4
    argNames:
    - domain_id
    - ' qname'
    - ' qt'
    - ' rrset'
    argTypes:
    - domainid_t
    - DNSName
    - QType
    - vector<DNSResourceRecord>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1710
      start: 1626
    functionDepth: 2
    functionLinenumber: 1626
    functionLinenumberEnd: 1710
    functionName: LMDBBackend::replaceRRSet
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.cc
    functionUses: 0
    functionsReached:
    - makeRelative
    - LMDBBackend::deleteNSEC3RecordPair
    - serializeToBuffer
    - vector::reserve
    - front
    - shared_ptr::txn::getCursor
    - co
    - size
    - empty
    - LMDBResourceRecord::qname::makeUsRelative
    - shared_ptr::txn::commit
    - LMDBBackend::getRecordsRWTransaction
    - peekAtHasOrderName
    - serializeContent
    - shared_ptr::txn::put_header_in_place
    - LMDBResourceRecord::qtype::getCode
    - LMDBBackend::findDomain
    - auto::find
    - MDBRWTransactionImpl::stringWithEmptyHeader
    - MDBOutVal::get
    - auto::del
    - LMDBBackend::hasOrphanedNSEC3Record
    - vector::emplace_back
    - getCode
    - LMDBBackend::deleteDomainRecords
    linkageType: ''
    returnType: bool
    signature: bool LMDBBackend::replaceRRSet(domainid_t domain_id, const DNSName&
      qname, const QType& qt, const vector<DNSResourceRecord>& rrset)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: txn::getCursor
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1716,1
    - Dst: makeRelative
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1722,1
    - Dst: co
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1724,1
    - Dst: auto::prefix
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1726,1
    - Dst: auto::del
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1728,1
    - Dst: auto::next
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1729,1
    - Dst: LMDBBackend::feedComment
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1733,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 4
    argNames:
    - domain_id
    - ' qname'
    - ' qtype'
    - ' comments'
    argTypes:
    - domainid_t
    - DNSName
    - QType
    - vector<Comment>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1737
      start: 1712
    functionDepth: 2
    functionLinenumber: 1712
    functionLinenumberEnd: 1737
    functionName: LMDBBackend::replaceComments
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.cc
    functionUses: 0
    functionsReached:
    - makeRelative
    - auto::next
    - LMDBBackend::feedComment
    - auto::del
    - txn::getCursor
    - co
    - auto::prefix
    linkageType: ''
    returnType: bool
    signature: bool LMDBBackend::replaceComments(const domainid_t domain_id, const
      DNSName& qname, const QType& qtype, const vector<Comment>& comments)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: NetmaskTree::TreeNode::split
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1744,1
    - Dst: vector::resize
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1747,1
    - Dst: vector::size
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1747,1
    - Dst: vector::size
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1749,1
    - Dst: empty
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1749,1
    - Dst: DNSName::DNSName
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1754,1
    - Dst: vector::empty
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1756,1
    - Dst: DNSName::appendRawLabel
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1757,1
    - Dst: vector::back
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1757,1
    - Dst: vector::pop_back
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1758,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 1
    argNames:
    - ' instr'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1761
      start: 1740
    functionDepth: 2
    functionLinenumber: 1740
    functionLinenumberEnd: 1761
    functionName: keyUnconv
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.cc
    functionUses: 0
    functionsReached:
    - vector::pop_back
    - vector::back
    - NetmaskTree::TreeNode::split
    - DNSName::DNSName
    - vector::empty
    - empty
    - DNSName::appendRawLabel
    - vector::resize
    - vector::size
    linkageType: ''
    returnType: DNSName
    signature: DNSName keyUnconv(std::string& instr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: what
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1766,1
    - Dst: makeHexDump
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1767,1
    - Dst: getNoStripHeader
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1767,1
    - Dst: makeHexDump
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1768,1
    - Dst: get
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1768,1
    - Dst: ostringstream::str
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1770,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 4
    argNames:
    - ' where'
    - ' exc'
    - ' key'
    - ' val'
    argTypes:
    - std::string
    - std::exception
    - MDBOutVal
    - MDBOutVal
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1771
      start: 1763
    functionDepth: 0
    functionLinenumber: 1763
    functionLinenumberEnd: 1771
    functionName: makeBadDataExceptionMessage
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.cc
    functionUses: 0
    functionsReached:
    - what
    - get
    - getNoStripHeader
    - ostringstream::str
    - makeHexDump
    linkageType: ''
    returnType: std::string
    signature: std::string makeBadDataExceptionMessage(const std::string& where, std::exception&
      exc, MDBOutVal& key, MDBOutVal& val)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: getEnv
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1775,1
    - Dst: auto::getROCursor
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1777,1
    - Dst: auto::first
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1782,1
    - Dst: std::tie
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1792,1
    - Dst: splitField
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1792,1
    - Dst: MDBOutVal::getNoStripHeader
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1792,1
    - Dst: MDBOutVal::get
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1793,1
    - Dst: push_back
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1794,1
    - Dst: PDNSException
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1797,1
    - Dst: makeBadDataExceptionMessage
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1797,1
    - Dst: string
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1800,1
    - Dst: auto::lower_bound
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1802,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 1
    argNames:
    - ' result'
    argTypes:
    - vector<string>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1804
      start: 1773
    functionDepth: 1
    functionLinenumber: 1773
    functionLinenumberEnd: 1804
    functionName: LMDBBackend::viewList
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.cc
    functionUses: 0
    functionsReached:
    - splitField
    - MDBOutVal::get
    - auto::lower_bound
    - auto::first
    - push_back
    - PDNSException
    - string
    - getEnv
    - MDBOutVal::getNoStripHeader
    - std::tie
    - makeBadDataExceptionMessage
    - auto::getROCursor
    linkageType: ''
    returnType: void
    signature: void LMDBBackend::viewList(vector<string>& result)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: clear
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1808,1
    - Dst: getEnv
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1810,1
    - Dst: auto::getROCursor
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1812,1
    - Dst: string
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1814,1
    - Dst: auto::prefix
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1819,1
    - Dst: splitField
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1827,1
    - Dst: MDBOutVal::getNoStripHeader
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1827,1
    - Dst: MDBOutVal::get
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1828,1
    - Dst: keyUnconv
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1829,1
    - Dst: emplace_back
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1830,1
    - Dst: ZoneName
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1830,1
    - Dst: PDNSException
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1833,1
    - Dst: makeBadDataExceptionMessage
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1833,1
    - Dst: auto::next
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1836,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 2
    argNames:
    - ' inview'
    - ' result'
    argTypes:
    - string
    - vector<ZoneName>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1838
      start: 1806
    functionDepth: 3
    functionLinenumber: 1806
    functionLinenumberEnd: 1838
    functionName: LMDBBackend::viewListZones
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.cc
    functionUses: 0
    functionsReached:
    - keyUnconv
    - auto::next
    - splitField
    - MDBOutVal::get
    - PDNSException
    - string
    - getEnv
    - auto::prefix
    - MDBOutVal::getNoStripHeader
    - emplace_back
    - clear
    - ZoneName
    - makeBadDataExceptionMessage
    - auto::getROCursor
    linkageType: ''
    returnType: void
    signature: void LMDBBackend::viewListZones(const string& inview, vector<ZoneName>&
      result)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getEnv
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1843,1
    - Dst: string
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1845,1
    - Dst: keyConv
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1845,1
    - Dst: MDBRWTransactionImpl::stringWithEmptyHeader
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1846,1
    - Dst: std::string::append
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1847,1
    - Dst: getVariant
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1847,1
    - Dst: auto::put_header_in_place
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1849,1
    - Dst: auto::commit
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1850,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - ' view'
    - ' zone'
    argTypes:
    - string
    - ZoneName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1853
      start: 1841
    functionDepth: 0
    functionLinenumber: 1841
    functionLinenumberEnd: 1853
    functionName: LMDBBackend::viewAddZone
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.cc
    functionUses: 0
    functionsReached:
    - keyConv
    - getVariant
    - std::string::append
    - string
    - getEnv
    - auto::commit
    - auto::put_header_in_place
    - MDBRWTransactionImpl::stringWithEmptyHeader
    linkageType: ''
    returnType: bool
    signature: bool LMDBBackend::viewAddZone(const string& view, const ZoneName& zone)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getEnv
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1857,1
    - Dst: string
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1859,1
    - Dst: keyConv
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1859,1
    - Dst: auto::del
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1862,1
    - Dst: auto::commit
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1863,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - ' view'
    - ' zone'
    argTypes:
    - string
    - ZoneName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1866
      start: 1855
    functionDepth: 1
    functionLinenumber: 1855
    functionLinenumberEnd: 1866
    functionName: LMDBBackend::viewDelZone
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.cc
    functionUses: 0
    functionsReached:
    - keyConv
    - auto::del
    - string
    - getEnv
    - auto::commit
    linkageType: ''
    returnType: bool
    signature: bool LMDBBackend::viewDelZone(const string& view, const ZoneName& zone)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: getEnv
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1870,1
    - Dst: empty
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1872,1
    - Dst: auto::del
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1873,1
    - Dst: toByteString
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1873,1
    - Dst: auto::put
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1876,1
    - Dst: toByteString
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1876,1
    - Dst: auto::commit
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1878,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - ' net'
    - ' view'
    argTypes:
    - Netmask
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1881
      start: 1868
    functionDepth: 1
    functionLinenumber: 1868
    functionLinenumberEnd: 1881
    functionName: LMDBBackend::networkSet
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.cc
    functionUses: 0
    functionsReached:
    - auto::del
    - getEnv
    - toByteString
    - auto::commit
    - auto::put
    - empty
    linkageType: ''
    returnType: bool
    signature: bool LMDBBackend::networkSet(const Netmask& net, std::string& view)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: clear
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1885,1
    - Dst: getEnv
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1887,1
    - Dst: auto::getROCursor
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1889,1
    - Dst: auto::first
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1894,1
    - Dst: Netmask
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1902,1
    - Dst: MDBOutVal::getNoStripHeader
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1902,1
    - Dst: MDBOutVal::get
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1903,1
    - Dst: emplace_back
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1904,1
    - Dst: std::make_pair
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1904,1
    - Dst: PDNSException
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1907,1
    - Dst: makeBadDataExceptionMessage
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1907,1
    - Dst: auto::next
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1910,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 1
    argNames:
    - ' networks'
    argTypes:
    - vector<pair<Netmask, string>>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1914
      start: 1883
    functionDepth: 1
    functionLinenumber: 1883
    functionLinenumberEnd: 1914
    functionName: LMDBBackend::networkList
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.cc
    functionUses: 0
    functionsReached:
    - Netmask
    - auto::next
    - MDBOutVal::get
    - auto::first
    - PDNSException
    - getEnv
    - MDBOutVal::getNoStripHeader
    - std::make_pair
    - emplace_back
    - clear
    - makeBadDataExceptionMessage
    - auto::getROCursor
    linkageType: ''
    returnType: bool
    signature: bool LMDBBackend::networkList(vector<pair<Netmask, string>>& networks)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: getMDBEnv
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1922,1
    - Dst: getArg
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1922,1
    - Dst: std::to_string
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1922,1
    - Dst: c_str
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1922,1
    - Dst: env::openDB
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1924,1
    - Dst: env::openDB
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1925,1
    - Dst: std::make_shared<RecordsRWTransaction>
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1927,1
    - Dst: env::getRWTransaction
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1927,1
    - Dst: std::make_shared<RecordsDB>
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1928,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - id
    argTypes:
    - domainid_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1931
      start: 1918
    functionDepth: 1
    functionLinenumber: 1918
    functionLinenumberEnd: 1931
    functionName: LMDBBackend::getRecordsRWTransaction
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.cc
    functionUses: 2
    functionsReached:
    - std::to_string
    - std::make_shared<RecordsRWTransaction>
    - getArg
    - env::getRWTransaction
    - std::make_shared<RecordsDB>
    - c_str
    - getMDBEnv
    - env::openDB
    linkageType: ''
    returnType: std::shared_ptr<LMDBBackend::RecordsRWTransaction>
    signature: std::shared_ptr<LMDBBackend::RecordsRWTransaction> LMDBBackend::getRecordsRWTransaction(domainid_t
      id)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: DBException
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1939,1
    - Dst: getMDBEnv
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1941,1
    - Dst: getArg
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1941,1
    - Dst: std::to_string
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1941,1
    - Dst: c_str
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1941,1
    - Dst: env::openDB
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1943,1
    - Dst: env::openDB
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1944,1
    - Dst: std::make_shared<RecordsROTransaction>
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1948,1
    - Dst: txn::getROTransaction
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1948,1
    - Dst: std::make_shared<RecordsDB>
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1949,1
    - Dst: std::make_shared<RecordsROTransaction>
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1953,1
    - Dst: env::getROTransaction
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1953,1
    - Dst: std::make_shared<RecordsDB>
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1954,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 2
    argNames:
    - id
    - ' rwtxn'
    argTypes:
    - domainid_t
    - std::shared_ptr<LMDBBackend::RecordsRWTransaction>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1957
      start: 1934
    functionDepth: 1
    functionLinenumber: 1934
    functionLinenumberEnd: 1957
    functionName: LMDBBackend::getRecordsROTransaction
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.cc
    functionUses: 0
    functionsReached:
    - env::getROTransaction
    - std::to_string
    - DBException
    - getArg
    - std::make_shared<RecordsROTransaction>
    - std::make_shared<RecordsDB>
    - txn::getROTransaction
    - c_str
    - getMDBEnv
    - env::openDB
    linkageType: ''
    returnType: std::shared_ptr<LMDBBackend::RecordsROTransaction>
    signature: std::shared_ptr<LMDBBackend::RecordsROTransaction> LMDBBackend::getRecordsROTransaction(domainid_t
      id, const std::shared_ptr<LMDBBackend::RecordsRWTransaction>& rwtxn)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: DBException
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1962,1
    - Dst: std::string
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1962,1
    - Dst: LMDBBackend::abortTransaction
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1968,1
    - Dst: LMDBBackend::findDomain
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1975,1
    - Dst: LmdbIdVec::push_back
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1976,1
    - Dst: getRWTransaction
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1984,1
    - Dst: LMDBBackend::startTransaction
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1991,1
    - Dst: getRWTransaction
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:1994,1
    - Dst: auto::del
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2000,1
    - Dst: auto::commit
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2003,1
    - Dst: getRWTransaction
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2007,1
    - Dst: auto::del
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2012,1
    - Dst: auto::commit
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2015,1
    - Dst: LMDBBackend::commitTransaction
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2019,1
    - Dst: write_lock
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2023,1
    - Dst: auto::remove
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2024,1
    - Dst: static_cast<domainid_t>
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2024,1
    - Dst: getRWTransaction
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2026,1
    - Dst: auto::del
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2027,1
    - Dst: auto::commit
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2028,1
    - Dst: LMDBBackend::startTransaction
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2031,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 31
    argCount: 1
    argNames:
    - ' domain'
    argTypes:
    - ZoneName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2034
      start: 1959
    functionDepth: 3
    functionLinenumber: 1959
    functionLinenumberEnd: 2034
    functionName: LMDBBackend::deleteDomain
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.cc
    functionUses: 0
    functionsReached:
    - LMDBBackend::commitTransaction
    - getRWTransaction
    - auto::del
    - DBException
    - LMDBBackend::abortTransaction
    - LmdbIdVec::push_back
    - static_cast<domainid_t>
    - auto::commit
    - write_lock
    - std::string
    - LMDBBackend::findDomain
    - LMDBBackend::startTransaction
    - auto::remove
    linkageType: ''
    returnType: bool
    signature: bool LMDBBackend::deleteDomain(const ZoneName& domain)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LMDBBackend::findDomain
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2039,1
    - Dst: DBException
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2040,1
    - Dst: std::to_string
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2040,1
    - Dst: submatch::clear
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2044,1
    - Dst: order
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2048,1
    - Dst: LMDBBackend::lookupStart
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2050,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - domain_id
    argTypes:
    - domainid_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2052
      start: 2036
    functionDepth: 1
    functionLinenumber: 2036
    functionLinenumberEnd: 2052
    functionName: LMDBBackend::listComments
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.cc
    functionUses: 0
    functionsReached:
    - submatch::clear
    - order
    - LMDBBackend::lookupStart
    - std::to_string
    - DBException
    - LMDBBackend::findDomain
    linkageType: ''
    returnType: bool
    signature: bool LMDBBackend::listComments(domainid_t domain_id)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: submatch::clear
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2057,1
    - Dst: order
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2062,1
    - Dst: LMDBBackend::lookupStart
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2064,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 3
    argNames:
    - ' target'
    - domain_id
    - include_disabled
    argTypes:
    - ZoneName
    - domainid_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2066
      start: 2054
    functionDepth: 1
    functionLinenumber: 2054
    functionLinenumberEnd: 2066
    functionName: LMDBBackend::list
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.cc
    functionUses: 0
    functionsReached:
    - submatch::clear
    - LMDBBackend::lookupStart
    - order
    linkageType: ''
    returnType: bool
    signature: bool LMDBBackend::list(const ZoneName& target, domainid_t domain_id,
      bool include_disabled)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: LMDBBackend::findDomain
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2072,1
    - Dst: makeRelative
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2077,1
    - Dst: DNSName::empty
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2078,1
    - Dst: std::move
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2084,1
    - Dst: std::move
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2085,1
    - Dst: order
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2090,1
    - Dst: LMDBBackend::lookupStart
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2092,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 2
    argNames:
    - ' target'
    - domain_id
    argTypes:
    - ZoneName
    - domainid_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2094
      start: 2068
    functionDepth: 1
    functionLinenumber: 2068
    functionLinenumberEnd: 2094
    functionName: LMDBBackend::listSubZone
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.cc
    functionUses: 0
    functionsReached:
    - order
    - makeRelative
    - std::move
    - LMDBBackend::lookupStart
    - DNSName::empty
    - LMDBBackend::findDomain
    linkageType: ''
    returnType: bool
    signature: bool LMDBBackend::listSubZone(const ZoneName& target, domainid_t domain_id)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: SLOG
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2099,1
    - Dst: toString
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2099,1
    - Dst: info
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2100,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2100,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2100,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2100,1
    - Dst: set
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2101,1
    - Dst: LMDBBackend::findDomain
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2108,1
    - Dst: ZoneName::chopOff
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2111,1
    - Dst: LMDBBackend::reset
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2114,1
    - Dst: LMDBBackend::findDomain
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2119,1
    - Dst: LMDBBackend::reset
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2121,1
    - Dst: makeRelative
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2126,1
    - Dst: DNSName::empty
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2127,1
    - Dst: std::move
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2132,1
    - Dst: submatch::clear
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2133,1
    - Dst: getCode
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2139,1
    - Dst: order
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2140,1
    - Dst: order
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2143,1
    - Dst: getCode
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2143,1
    - Dst: LMDBBackend::lookupStart
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2146,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 34
    argCount: 4
    argNames:
    - ' type'
    - ' qdomain'
    - zoneId
    - include_disabled
    argTypes:
    - QType
    - DNSName
    - domainid_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2147
      start: 2096
    functionDepth: 1
    functionLinenumber: 2096
    functionLinenumberEnd: 2147
    functionName: LMDBBackend::lookupInternal
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.cc
    functionUses: 2
    functionsReached:
    - submatch::clear
    - makeRelative
    - std::move
    - SLOG
    - toString
    - getCode
    - order
    - Logging::Loggable
    - LMDBBackend::lookupStart
    - info
    - set
    - ZoneName::chopOff
    - DNSName::empty
    - LMDBBackend::findDomain
    - LMDBBackend::reset
    linkageType: ''
    returnType: void
    signature: void LMDBBackend::lookupInternal(const QType& type, const DNSName&
      qdomain, domainid_t zoneId, DNSPacket* /* p */, bool include_disabled)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: LMDBBackend::getRecordsROTransaction
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2151,1
    - Dst: std::make_shared<MDBROCursor>
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2154,1
    - Dst: txn::getCursor
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2154,1
    - Dst: std::make_shared<MDBROCursor>
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2157,1
    - Dst: txn::getCursor
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2157,1
    - Dst: rrset::clear
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2161,1
    - Dst: cursor::prefix
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2164,1
    - Dst: LMDBBackend::reset
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2165,1
    - Dst: SLOG
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2167,1
    - Dst: udiffNoReset
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2167,1
    - Dst: info
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2168,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2168,1
    - Dst: udiffNoReset
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2168,1
    - Dst: SLOG
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2174,1
    - Dst: udiffNoReset
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2174,1
    - Dst: info
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2175,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2175,1
    - Dst: udiffNoReset
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2175,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 3
    argNames:
    - domain_id
    - ' match'
    - dolog
    argTypes:
    - domainid_t
    - std::string
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2177
      start: 2149
    functionDepth: 2
    functionLinenumber: 2149
    functionLinenumberEnd: 2177
    functionName: LMDBBackend::lookupStart
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.cc
    functionUses: 4
    functionsReached:
    - SLOG
    - Logging::Loggable
    - txn::getCursor
    - udiffNoReset
    - cursor::prefix
    - info
    - LMDBBackend::getRecordsROTransaction
    - std::make_shared<MDBROCursor>
    - LMDBBackend::reset
    - rrset::clear
    linkageType: ''
    returnType: void
    signature: void LMDBBackend::lookupStart(domainid_t domain_id, const std::string&
      match, bool dolog)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: LMDBBackend::reset
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2184,1
    - Dst: key::getNoStripHeader
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2188,1
    - Dst: substr
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2190,1
    - Dst: size
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2190,1
    - Dst: size
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2191,1
    - Dst: DBException
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2193,1
    - Dst: LMDBBackend::getQName
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2196,1
    - Dst: val::get
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2198,1
    - Dst: LMDBBackend::getDomainID
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2200,1
    - Dst: LMDBBackend::getQType
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2202,1
    - Dst: protozero::pbf_reader::next
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2205,1
    - Dst: protozero::pbf_reader::get_sfixed64
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2206,1
    - Dst: protozero::pbf_reader::next
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2207,1
    - Dst: protozero::pbf_reader::get_string
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2208,1
    - Dst: protozero::pbf_reader::next
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2209,1
    - Dst: protozero::pbf_reader::get_string
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2210,1
    - Dst: DBException
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2213,1
    - Dst: std::string
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2213,1
    - Dst: what
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2213,1
    - Dst: cursor::next
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2216,1
    - Dst: LMDBBackend::reset
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2217,1
    - Dst: rrset::empty
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2224,1
    - Dst: rrset::size
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2225,1
    - Dst: rrset::clear
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2226,1
    - Dst: cursor::next
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2227,1
    - Dst: LMDBBackend::reset
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2229,1
    - Dst: LMDBBackend::reset
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2236,1
    - Dst: rrset::empty
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2240,1
    - Dst: cursor::current
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2241,1
    - Dst: key::getNoStripHeader
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2243,1
    - Dst: LMDBBackend::getQType
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2244,1
    - Dst: cursor::next
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2248,1
    - Dst: LMDBBackend::reset
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2250,1
    - Dst: deserializeMultipleFromBuffer
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2255,1
    - Dst: val::get
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2255,1
    - Dst: rrset::empty
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2256,1
    - Dst: static_cast<time_t>
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2257,1
    - Dst: LMDBLS::LSgetTimestamp
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2257,1
    - Dst: val::getNoStripHeader
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2257,1
    - Dst: key::getNoStripHeader
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2262,1
    - Dst: rrset::at
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2265,1
    - Dst: LMDBBackend::getQName
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2269,1
    - Dst: submatch::empty
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2270,1
    - Dst: isPartOf
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2271,1
    - Dst: PDNSException
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2280,1
    - Dst: what
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2280,1
    CyclomaticComplexity: 27
    EdgeCount: 27
    ICount: 76
    argCount: 2
    argNames:
    - ' basename'
    - ' key'
    argTypes:
    - DNSName
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2287
      start: 2179
    functionDepth: 3
    functionLinenumber: 2179
    functionLinenumberEnd: 2287
    functionName: LMDBBackend::getInternal
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.cc
    functionUses: 0
    functionsReached:
    - PDNSException
    - DBException
    - val::getNoStripHeader
    - key::getNoStripHeader
    - std::string
    - static_cast<time_t>
    - LMDBBackend::reset
    - LMDBBackend::getDomainID
    - size
    - protozero::pbf_reader::get_string
    - substr
    - LMDBBackend::getQType
    - protozero::pbf_reader::get_sfixed64
    - deserializeMultipleFromBuffer
    - isPartOf
    - LMDBBackend::getQName
    - rrset::size
    - cursor::current
    - val::get
    - submatch::empty
    - what
    - rrset::empty
    - cursor::next
    - protozero::pbf_reader::next
    - LMDBLS::LSgetTimestamp
    - rrset::clear
    - rrset::at
    linkageType: ''
    returnType: bool
    signature: bool LMDBBackend::getInternal(DNSName& basename, std::string_view&
      key)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DNSName::DNSName
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2291,1
    - Dst: LMDBBackend::getInternal
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2294,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - ' comment'
    argTypes:
    - Comment
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2300
      start: 2289
    functionDepth: 4
    functionLinenumber: 2289
    functionLinenumberEnd: 2300
    functionName: LMDBBackend::getComment
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.cc
    functionUses: 0
    functionsReached:
    - DNSName::DNSName
    - LMDBBackend::getInternal
    linkageType: ''
    returnType: bool
    signature: bool LMDBBackend::getComment(Comment& comment)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DNSName::DNSName
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2304,1
    - Dst: LMDBBackend::getInternal
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2307,1
    - Dst: rrset::at
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2310,1
    - Dst: LMDBBackend::getDomainID
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2313,1
    - Dst: LMDBBackend::getQType
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2314,1
    - Dst: dr::setContent
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2316,1
    - Dst: deserializeContentZR
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2316,1
    - Dst: LMDBBackend::lookupEnd
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2321,1
    - Dst: PDNSException
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2322,1
    - Dst: what
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2322,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 1
    argNames:
    - ' zr'
    argTypes:
    - DNSZoneRecord
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2326
      start: 2302
    functionDepth: 4
    functionLinenumber: 2302
    functionLinenumberEnd: 2326
    functionName: LMDBBackend::get
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.cc
    functionUses: 0
    functionsReached:
    - dr::setContent
    - PDNSException
    - what
    - LMDBBackend::getQType
    - LMDBBackend::getInternal
    - rrset::at
    - DNSName::DNSName
    - LMDBBackend::lookupEnd
    - deserializeContentZR
    - LMDBBackend::getDomainID
    linkageType: ''
    returnType: bool
    signature: bool LMDBBackend::get(DNSZoneRecord& zr)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LMDBBackend::get
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2331,1
    - Dst: DNSZoneRecord::dr::getContent
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2338,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 1
    argNames:
    - ' rr'
    argTypes:
    - DNSResourceRecord
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2345
      start: 2328
    functionDepth: 0
    functionLinenumber: 2328
    functionLinenumberEnd: 2345
    functionName: LMDBBackend::get
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.cc
    functionUses: 1
    functionsReached:
    - LMDBBackend::get
    - DNSZoneRecord::dr::getContent
    linkageType: ''
    returnType: bool
    signature: bool LMDBBackend::get(DNSResourceRecord& rr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LMDBBackend::reset
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2349,1
    - Dst: LMDBBackend::reset
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2350,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2351
      start: 2347
    functionDepth: 0
    functionLinenumber: 2347
    functionLinenumberEnd: 2351
    functionName: LMDBBackend::lookupEnd
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.cc
    functionUses: 1
    functionsReached:
    - LMDBBackend::reset
    linkageType: ''
    returnType: void
    signature: void LMDBBackend::lookupEnd()
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: LMDBBackend::getRecordsROTransaction
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2355,1
    - Dst: auto::txn::get
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2358,1
    - Dst: co
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2358,1
    - Dst: deserializeFromBuffer
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2360,1
    - Dst: MDBOutVal::get
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2360,1
    - Dst: LMDBResourceRecord::content::size
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2361,1
    - Dst: memcpy
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2365,1
    - Dst: LMDBResourceRecord::content::size
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2365,1
    - Dst: ntohl
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2366,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - ' di'
    argTypes:
    - DomainInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2372
      start: 2353
    functionDepth: 2
    functionLinenumber: 2353
    functionLinenumberEnd: 2372
    functionName: LMDBBackend::getSerial
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.cc
    functionUses: 0
    functionsReached:
    - memcpy
    - ntohl
    - MDBOutVal::get
    - deserializeFromBuffer
    - co
    - LMDBBackend::getRecordsROTransaction
    - auto::txn::get
    - LMDBResourceRecord::content::size
    linkageType: ''
    returnType: bool
    signature: bool LMDBBackend::getSerial(DomainInfo& di)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: hasVariant
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2378,1
    - Dst: LMDBBackend::findDomain
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2382,1
    - Dst: LMDBBackend::consolidateDomainInfo
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2386,1
    - Dst: LMDBBackend::getSerial
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2389,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 3
    argNames:
    - ' domain'
    - ' info'
    - getserial
    argTypes:
    - ZoneName
    - DomainInfo
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2393
      start: 2374
    functionDepth: 3
    functionLinenumber: 2374
    functionLinenumberEnd: 2393
    functionName: LMDBBackend::getDomainInfo
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.cc
    functionUses: 0
    functionsReached:
    - LMDBBackend::consolidateDomainInfo
    - LMDBBackend::findDomain
    - hasVariant
    - LMDBBackend::getSerial
    linkageType: ''
    returnType: bool
    signature: bool LMDBBackend::getDomainInfo(const ZoneName& domain, DomainInfo&
      info, bool getserial)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LMDBBackend::findDomain
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2398,1
    - Dst: LMDBBackend::consolidateDomainInfo
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2401,1
    - Dst: func
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2402,1
    - Dst: LMDBBackend::writeDomainInfo
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2403,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - ' domain'
    - ' func'
    argTypes:
    - ZoneName
    - std::function<void(DomainInfo&)>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2405
      start: 2395
    functionDepth: 3
    functionLinenumber: 2395
    functionLinenumberEnd: 2405
    functionName: LMDBBackend::genChangeDomain
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.cc
    functionUses: 0
    functionsReached:
    - LMDBBackend::consolidateDomainInfo
    - LMDBBackend::findDomain
    - func
    - LMDBBackend::writeDomainInfo
    linkageType: ''
    returnType: bool
    signature: bool LMDBBackend::genChangeDomain(const ZoneName& domain, const std::function<void(DomainInfo&)>&
      func)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LMDBBackend::findDomain
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2411,1
    - Dst: LMDBBackend::consolidateDomainInfo
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2414,1
    - Dst: func
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2415,1
    - Dst: LMDBBackend::writeDomainInfo
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2416,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - id
    - ' func'
    argTypes:
    - domainid_t
    - std::function<void(DomainInfo&)>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2418
      start: 2408
    functionDepth: 3
    functionLinenumber: 2408
    functionLinenumberEnd: 2418
    functionName: LMDBBackend::genChangeDomain
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.cc
    functionUses: 0
    functionsReached:
    - LMDBBackend::consolidateDomainInfo
    - LMDBBackend::findDomain
    - func
    - LMDBBackend::writeDomainInfo
    linkageType: ''
    returnType: bool
    signature: bool LMDBBackend::genChangeDomain(domainid_t id, const std::function<void(DomainInfo&)>&
      func)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: LMDBBackend::findDomain
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2425,1
    - Dst: LMDBBackend::consolidateDomainInfo
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2428,1
    - Dst: func
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2429,1
    - Dst: LMDBBackend::writeDomainInfo
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2432,1
    - Dst: LMDBBackend::writeTransientDomainInfo
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2436,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 2
    argNames:
    - id
    - ' func'
    argTypes:
    - domainid_t
    - std::function<void(DomainInfo&)>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2439
      start: 2422
    functionDepth: 3
    functionLinenumber: 2422
    functionLinenumberEnd: 2439
    functionName: LMDBBackend::genChangeTransientDomain
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.cc
    functionUses: 0
    functionsReached:
    - LMDBBackend::writeDomainInfo
    - func
    - LMDBBackend::consolidateDomainInfo
    - LMDBBackend::findDomain
    - LMDBBackend::writeTransientDomainInfo
    linkageType: ''
    returnType: bool
    signature: bool LMDBBackend::genChangeTransientDomain(domainid_t id, const std::function<void(DomainInfo&)>&
      func)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LMDBBackend::genChangeDomain
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2443,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - ' domain'
    - kind
    argTypes:
    - ZoneName
    - DomainInfo::DomainKind
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2446
      start: 2441
    functionDepth: 4
    functionLinenumber: 2441
    functionLinenumberEnd: 2446
    functionName: LMDBBackend::setKind
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.cc
    functionUses: 0
    functionsReached:
    - LMDBBackend::genChangeDomain
    linkageType: ''
    returnType: bool
    signature: bool LMDBBackend::setKind(const ZoneName& domain, const DomainInfo::DomainKind
      kind)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LMDBBackend::genChangeDomain
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2450,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - ' domain'
    - ' account'
    argTypes:
    - ZoneName
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2453
      start: 2448
    functionDepth: 4
    functionLinenumber: 2448
    functionLinenumberEnd: 2453
    functionName: LMDBBackend::setAccount
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.cc
    functionUses: 0
    functionsReached:
    - LMDBBackend::genChangeDomain
    linkageType: ''
    returnType: bool
    signature: bool LMDBBackend::setAccount(const ZoneName& domain, const std::string&
      account)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LMDBBackend::genChangeDomain
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2457,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - ' domain'
    - ' primaries'
    argTypes:
    - ZoneName
    - vector<ComboAddress>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2460
      start: 2455
    functionDepth: 4
    functionLinenumber: 2455
    functionLinenumberEnd: 2460
    functionName: LMDBBackend::setPrimaries
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.cc
    functionUses: 0
    functionsReached:
    - LMDBBackend::genChangeDomain
    linkageType: ''
    returnType: bool
    signature: bool LMDBBackend::setPrimaries(const ZoneName& domain, const vector<ComboAddress>&
      primaries)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LMDBBackend::findDomain
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2466,1
    - Dst: DBException
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2467,1
    - Dst: toLogString
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2467,1
    - Dst: getRWTransaction
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2470,1
    - Dst: auto::put
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2477,1
    - Dst: hash
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2477,1
    - Dst: auto::commit
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2478,1
    - Dst: LMDBBackend::writeTransientDomainInfo
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2479,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 4
    argNames:
    - ' domain'
    - kind
    - ' primaries'
    - ' account'
    argTypes:
    - ZoneName
    - DomainInfo::DomainKind
    - vector<ComboAddress>
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2483
      start: 2462
    functionDepth: 2
    functionLinenumber: 2462
    functionLinenumberEnd: 2483
    functionName: LMDBBackend::createDomain
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.cc
    functionUses: 0
    functionsReached:
    - toLogString
    - hash
    - getRWTransaction
    - DBException
    - auto::commit
    - auto::put
    - LMDBBackend::writeTransientDomainInfo
    - LMDBBackend::findDomain
    linkageType: ''
    returnType: bool
    signature: bool LMDBBackend::createDomain(const ZoneName& domain, const DomainInfo::DomainKind
      kind, const vector<ComboAddress>& primaries, const string& account)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: getROTransaction
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2487,1
    - Dst: auto::begin
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2492,1
    - Dst: auto::end
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2492,1
    - Dst: auto::getID
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2494,1
    - Dst: map::emplace
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2497,1
    - Dst: set::insert
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2498,1
    - Dst: LMDBBackend::findDomain
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2505,1
    - Dst: LMDBBackend::consolidateDomainInfo
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2513,1
    - Dst: allow
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2514,1
    - Dst: vector<DomainInfo>*::push_back
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2515,1
    - Dst: std::move
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2515,1
    - Dst: auto::begin
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2520,1
    - Dst: auto::end
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2520,1
    - Dst: auto::getID
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2522,1
    - Dst: LMDBBackend::consolidateDomainInfo
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2525,1
    - Dst: allow
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2526,1
    - Dst: vector<DomainInfo>*::push_back
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2527,1
    - Dst: std::move
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2527,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 30
    argCount: 2
    argNames:
    - domains
    - ' allow'
    argTypes:
    - vector<DomainInfo>*
    - std::function<bool(DomainInfo&)>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2531
      start: 2485
    functionDepth: 2
    functionLinenumber: 2485
    functionLinenumberEnd: 2531
    functionName: LMDBBackend::getAllDomainsFiltered
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.cc
    functionUses: 0
    functionsReached:
    - vector<DomainInfo>*::push_back
    - std::move
    - set::insert
    - getROTransaction
    - map::emplace
    - auto::getID
    - allow
    - auto::begin
    - auto::end
    - LMDBBackend::consolidateDomainInfo
    - LMDBBackend::findDomain
    linkageType: ''
    returnType: void
    signature: void LMDBBackend::getAllDomainsFiltered(vector<DomainInfo>* domains,
      const std::function<bool(DomainInfo&)>& allow)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: LMDBBackend::getAllDomainsFiltered
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2535,1
    - Dst: LMDBBackend::getSerial
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2540,1
    - Dst: zone::hasVariant
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2546,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 12
    argCount: 3
    argNames:
    - domains
    - doSerial
    - include_disabled
    argTypes:
    - vector<DomainInfo>*
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2552
      start: 2533
    functionDepth: 3
    functionLinenumber: 2533
    functionLinenumberEnd: 2552
    functionName: LMDBBackend::getAllDomains
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.cc
    functionUses: 0
    functionsReached:
    - zone::hasVariant
    - LMDBBackend::getAllDomainsFiltered
    - LMDBBackend::getSerial
    linkageType: ''
    returnType: void
    signature: void LMDBBackend::getAllDomains(vector<DomainInfo>* domains, bool doSerial,
      bool include_disabled)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: time
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2556,1
    - Dst: LMDBBackend::getAllDomainsFiltered
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2558,1
    - Dst: isSecondaryType
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2559,1
    - Dst: LMDBBackend::getRecordsROTransaction
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2563,1
    - Dst: auto::txn::get
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2566,1
    - Dst: co
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2566,1
    - Dst: deserializeFromBuffer
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2568,1
    - Dst: MDBOutVal::get
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2568,1
    - Dst: LMDBResourceRecord::content::size
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2569,1
    - Dst: memcpy
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2572,1
    - Dst: LMDBResourceRecord::content::size
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2572,1
    - Dst: ntohl
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2573,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 1
    argNames:
    - domains
    argTypes:
    - vector<DomainInfo>*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2581
      start: 2554
    functionDepth: 3
    functionLinenumber: 2554
    functionLinenumberEnd: 2581
    functionName: LMDBBackend::getUnfreshSecondaryInfos
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.cc
    functionUses: 0
    functionsReached:
    - memcpy
    - ntohl
    - MDBOutVal::get
    - isSecondaryType
    - time
    - deserializeFromBuffer
    - co
    - LMDBBackend::getAllDomainsFiltered
    - LMDBBackend::getRecordsROTransaction
    - auto::txn::get
    - LMDBResourceRecord::content::size
    linkageType: ''
    returnType: void
    signature: void LMDBBackend::getUnfreshSecondaryInfos(vector<DomainInfo>* domains)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LMDBBackend::setLastCheckTime
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2585,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - domain_id
    argTypes:
    - domainid_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2586
      start: 2583
    functionDepth: 1
    functionLinenumber: 2583
    functionLinenumberEnd: 2586
    functionName: LMDBBackend::setStale
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.cc
    functionUses: 0
    functionsReached:
    - LMDBBackend::setLastCheckTime
    linkageType: ''
    returnType: void
    signature: void LMDBBackend::setStale(domainid_t domain_id)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LMDBBackend::setLastCheckTime
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2590,1
    - Dst: time
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2590,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - domain_id
    argTypes:
    - domainid_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2591
      start: 2588
    functionDepth: 1
    functionLinenumber: 2588
    functionLinenumberEnd: 2591
    functionName: LMDBBackend::setFresh
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.cc
    functionUses: 0
    functionsReached:
    - time
    - LMDBBackend::setLastCheckTime
    linkageType: ''
    returnType: void
    signature: void LMDBBackend::setFresh(domainid_t domain_id)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: LMDBBackend::findDomain
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2597,1
    - Dst: write_lock
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2598,1
    - Dst: auto::get
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2600,1
    - Dst: auto::update
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2605,1
    - Dst: LMDBBackend::genChangeTransientDomain
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2610,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 2
    argNames:
    - domain_id
    - last_check
    argTypes:
    - domainid_t
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2613
      start: 2593
    functionDepth: 4
    functionLinenumber: 2593
    functionLinenumberEnd: 2613
    functionName: LMDBBackend::setLastCheckTime
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.cc
    functionUses: 2
    functionsReached:
    - LMDBBackend::genChangeTransientDomain
    - auto::get
    - auto::update
    - write_lock
    - LMDBBackend::findDomain
    linkageType: ''
    returnType: void
    signature: void LMDBBackend::setLastCheckTime(domainid_t domain_id, time_t last_check)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: LMDBBackend::getAllDomainsFiltered
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2617,1
    - Dst: isPrimaryType
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2618,1
    - Dst: insert
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2623,1
    - Dst: process
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2624,1
    - Dst: catalog::empty
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2628,1
    - Dst: CatalogInfo::updateCatalogHash
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2629,1
    - Dst: LMDBBackend::getSerial
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2632,1
    - Dst: catalog::clear
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2634,1
    - Dst: options::clear
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2635,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 21
    argCount: 3
    argNames:
    - ' updatedDomains'
    - ' catalogs'
    - ' catalogHashes'
    argTypes:
    - vector<DomainInfo>
    - std::unordered_set<DNSName>
    - CatalogHashMap
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2641
      start: 2615
    functionDepth: 3
    functionLinenumber: 2615
    functionLinenumberEnd: 2641
    functionName: LMDBBackend::getUpdatedPrimaries
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.cc
    functionUses: 0
    functionsReached:
    - process
    - LMDBBackend::getSerial
    - CatalogInfo::updateCatalogHash
    - LMDBBackend::getAllDomainsFiltered
    - catalog::empty
    - options::clear
    - isPrimaryType
    - catalog::clear
    - insert
    linkageType: ''
    returnType: void
    signature: void LMDBBackend::getUpdatedPrimaries(vector<DomainInfo>& updatedDomains,
      std::unordered_set<DNSName>& catalogs, CatalogHashMap& catalogHashes)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: LMDBBackend::findDomain
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2647,1
    - Dst: write_lock
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2648,1
    - Dst: auto::get
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2650,1
    - Dst: auto::update
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2655,1
    - Dst: LMDBBackend::genChangeTransientDomain
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2660,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 2
    argNames:
    - domain_id
    - serial
    argTypes:
    - domainid_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2663
      start: 2643
    functionDepth: 4
    functionLinenumber: 2643
    functionLinenumberEnd: 2663
    functionName: LMDBBackend::setNotified
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.cc
    functionUses: 0
    functionsReached:
    - LMDBBackend::genChangeTransientDomain
    - auto::get
    - auto::update
    - write_lock
    - LMDBBackend::findDomain
    linkageType: ''
    returnType: void
    signature: void LMDBBackend::setNotified(domainid_t domain_id, uint32_t serial)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2669
      start: 2668
    functionDepth: 0
    functionLinenumber: 2668
    functionLinenumberEnd: 2669
    functionName: getCatalogMembersReturnFalseException::getCatalogMembersReturnFalseException
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void getCatalogMembersReturnFalseException()
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: LMDBBackend::getAllDomainsFiltered
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2677,1
    - Dst: isPrimaryType
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2678,1
    - Dst: isSecondaryType
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2678,1
    - Dst: isCatalogType
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2682,1
    - Dst: SLOG
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2683,1
    - Dst: info
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2684,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2684,1
    - Dst: clear
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2685,1
    - Dst: getCatalogMembersReturnFalseException
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2686,1
    - Dst: CatalogInfo::CatalogInfo
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2689,1
    - Dst: CatalogInfo::fromJson
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2694,1
    - Dst: isCatalogType
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2695,1
    - Dst: CatalogInfo::addGroup
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2696,1
    - Dst: SLOG
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2700,1
    - Dst: what
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2700,1
    - Dst: error
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2701,1
    - Dst: what
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2701,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2701,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2701,1
    - Dst: clear
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2702,1
    - Dst: getCatalogMembersReturnFalseException
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2703,1
    - Dst: emplace_back
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2705,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 31
    argCount: 3
    argNames:
    - ' catalog'
    - ' members'
    - type
    argTypes:
    - ZoneName
    - vector<CatalogInfo>
    - CatalogInfo::CatalogType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2714
      start: 2672
    functionDepth: 3
    functionLinenumber: 2672
    functionLinenumberEnd: 2714
    functionName: LMDBBackend::getCatalogMembers
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.cc
    functionUses: 0
    functionsReached:
    - CatalogInfo::fromJson
    - SLOG
    - isSecondaryType
    - isCatalogType
    - Logging::Loggable
    - what
    - CatalogInfo::addGroup
    - info
    - LMDBBackend::getAllDomainsFiltered
    - CatalogInfo::CatalogInfo
    - isPrimaryType
    - emplace_back
    - error
    - clear
    - getCatalogMembersReturnFalseException
    linkageType: ''
    returnType: bool
    signature: bool LMDBBackend::getCatalogMembers(const ZoneName& catalog, vector<CatalogInfo>&
      members, CatalogInfo::CatalogType type)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LMDBBackend::genChangeDomain
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2718,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - ' domain'
    - ' options'
    argTypes:
    - ZoneName
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2721
      start: 2716
    functionDepth: 4
    functionLinenumber: 2716
    functionLinenumberEnd: 2721
    functionName: LMDBBackend::setOptions
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.cc
    functionUses: 0
    functionsReached:
    - LMDBBackend::genChangeDomain
    linkageType: ''
    returnType: bool
    signature: bool LMDBBackend::setOptions(const ZoneName& domain, const std::string&
      options)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LMDBBackend::genChangeDomain
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2725,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - ' domain'
    - ' catalog'
    argTypes:
    - ZoneName
    - ZoneName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2728
      start: 2723
    functionDepth: 4
    functionLinenumber: 2723
    functionLinenumberEnd: 2728
    functionName: LMDBBackend::setCatalog
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.cc
    functionUses: 0
    functionsReached:
    - LMDBBackend::genChangeDomain
    linkageType: ''
    returnType: bool
    signature: bool LMDBBackend::setCatalog(const ZoneName& domain, const ZoneName&
      catalog)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: clear
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2732,1
    - Dst: getROTransaction
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2733,1
    - Dst: auto::get
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2740,1
    - Dst: push_back
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2741,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - ' name'
    - ' meta'
    argTypes:
    - ZoneName
    - std::map<std::string, std::vector<std::string>>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2745
      start: 2730
    functionDepth: 1
    functionLinenumber: 2730
    functionLinenumberEnd: 2745
    functionName: LMDBBackend::getAllDomainMetadata
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.cc
    functionUses: 1
    functionsReached:
    - clear
    - push_back
    - getROTransaction
    - auto::get
    linkageType: ''
    returnType: bool
    signature: bool LMDBBackend::getAllDomainMetadata(const ZoneName& name, std::map<std::string,
      std::vector<std::string>>& meta)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: getRWTransaction
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2749,1
    - Dst: auto::get
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2756,1
    - Dst: auto::del
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2759,1
    - Dst: auto::put
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2766,1
    - Dst: burtleCI
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2766,1
    - Dst: hash
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2766,1
    - Dst: auto::commit
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2768,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 3
    argNames:
    - ' name'
    - ' kind'
    - ' meta'
    argTypes:
    - ZoneName
    - std::string
    - std::vector<std::string>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2770
      start: 2747
    functionDepth: 2
    functionLinenumber: 2747
    functionLinenumberEnd: 2770
    functionName: LMDBBackend::setDomainMetadata
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.cc
    functionUses: 0
    functionsReached:
    - burtleCI
    - hash
    - getRWTransaction
    - auto::del
    - auto::get
    - auto::commit
    - auto::put
    linkageType: ''
    returnType: bool
    signature: bool LMDBBackend::setDomainMetadata(const ZoneName& name, const std::string&
      kind, const std::vector<std::string>& meta)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: getROTransaction
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2774,1
    - Dst: auto::get
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2781,1
    - Dst: emplace_back
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2783,1
    - Dst: std::move
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2783,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - ' name'
    - ' keys'
    argTypes:
    - ZoneName
    - std::vector<KeyData>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2788
      start: 2772
    functionDepth: 0
    functionLinenumber: 2772
    functionLinenumberEnd: 2788
    functionName: LMDBBackend::getDomainKeys
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.cc
    functionUses: 0
    functionsReached:
    - std::move
    - getROTransaction
    - emplace_back
    - auto::get
    linkageType: ''
    returnType: bool
    signature: bool LMDBBackend::getDomainKeys(const ZoneName& name, std::vector<KeyData>&
      keys)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: getRWTransaction
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2792,1
    - Dst: auto::get
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2794,1
    - Dst: auto::del
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2796,1
    - Dst: auto::commit
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2797,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - ' name'
    - keyId
    argTypes:
    - ZoneName
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2803
      start: 2790
    functionDepth: 1
    functionLinenumber: 2790
    functionLinenumberEnd: 2803
    functionName: LMDBBackend::removeDomainKey
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.cc
    functionUses: 0
    functionsReached:
    - auto::commit
    - getRWTransaction
    - auto::del
    - auto::get
    linkageType: ''
    returnType: bool
    signature: bool LMDBBackend::removeDomainKey(const ZoneName& name, unsigned int
      keyId)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getRWTransaction
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2807,1
    - Dst: DNSKEYRecordContent::DNSKEYRecordContent
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2811,1
    - Dst: shared_ptr<DNSCryptoKeyEngine>
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2812,1
    - Dst: DNSCryptoKeyEngine::makeFromISCString
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2812,1
    - Dst: DNSSECPrivateKey::setKey
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2814,1
    - Dst: DNSSECPrivateKey::getDNSKEY
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2815,1
    - Dst: auto::put
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2817,1
    - Dst: hash
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2817,1
    - Dst: auto::commit
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2818,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - ' name'
    - ' key'
    - ' keyId'
    argTypes:
    - ZoneName
    - KeyData
    - int64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2821
      start: 2805
    functionDepth: 2
    functionLinenumber: 2805
    functionLinenumberEnd: 2821
    functionName: LMDBBackend::addDomainKey
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.cc
    functionUses: 0
    functionsReached:
    - shared_ptr<DNSCryptoKeyEngine>
    - hash
    - getRWTransaction
    - DNSCryptoKeyEngine::makeFromISCString
    - DNSSECPrivateKey::setKey
    - auto::commit
    - auto::put
    - DNSSECPrivateKey::getDNSKEY
    - DNSKEYRecordContent::DNSKEYRecordContent
    linkageType: ''
    returnType: bool
    signature: bool LMDBBackend::addDomainKey(const ZoneName& name, const KeyData&
      key, int64_t& keyId)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: getRWTransaction
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2825,1
    - Dst: auto::get
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2827,1
    - Dst: auto::modify
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2829,1
    - Dst: auto::commit
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2832,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - ' name'
    - keyId
    argTypes:
    - ZoneName
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2839
      start: 2823
    functionDepth: 0
    functionLinenumber: 2823
    functionLinenumberEnd: 2839
    functionName: LMDBBackend::activateDomainKey
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.cc
    functionUses: 0
    functionsReached:
    - auto::commit
    - getRWTransaction
    - auto::modify
    - auto::get
    linkageType: ''
    returnType: bool
    signature: bool LMDBBackend::activateDomainKey(const ZoneName& name, unsigned
      int keyId)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: getRWTransaction
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2843,1
    - Dst: auto::get
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2845,1
    - Dst: auto::modify
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2847,1
    - Dst: auto::commit
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2850,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - ' name'
    - keyId
    argTypes:
    - ZoneName
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2856
      start: 2841
    functionDepth: 0
    functionLinenumber: 2841
    functionLinenumberEnd: 2856
    functionName: LMDBBackend::deactivateDomainKey
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.cc
    functionUses: 0
    functionsReached:
    - auto::commit
    - getRWTransaction
    - auto::modify
    - auto::get
    linkageType: ''
    returnType: bool
    signature: bool LMDBBackend::deactivateDomainKey(const ZoneName& name, unsigned
      int keyId)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: getRWTransaction
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2860,1
    - Dst: auto::get
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2862,1
    - Dst: auto::modify
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2864,1
    - Dst: auto::commit
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2867,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - ' name'
    - keyId
    argTypes:
    - ZoneName
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2874
      start: 2858
    functionDepth: 0
    functionLinenumber: 2858
    functionLinenumberEnd: 2874
    functionName: LMDBBackend::publishDomainKey
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.cc
    functionUses: 0
    functionsReached:
    - auto::commit
    - getRWTransaction
    - auto::modify
    - auto::get
    linkageType: ''
    returnType: bool
    signature: bool LMDBBackend::publishDomainKey(const ZoneName& name, unsigned int
      keyId)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: getRWTransaction
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2878,1
    - Dst: auto::get
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2880,1
    - Dst: auto::modify
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2882,1
    - Dst: auto::commit
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2885,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - ' name'
    - keyId
    argTypes:
    - ZoneName
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2891
      start: 2876
    functionDepth: 0
    functionLinenumber: 2876
    functionLinenumberEnd: 2891
    functionName: LMDBBackend::unpublishDomainKey
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.cc
    functionUses: 0
    functionsReached:
    - auto::commit
    - getRWTransaction
    - auto::modify
    - auto::get
    linkageType: ''
    returnType: bool
    signature: bool LMDBBackend::unpublishDomainKey(const ZoneName& name, unsigned
      int keyId)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: LMDBBackend::getQType
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2896,1
    - Dst: getNoStripHeader
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2896,1
    - Dst: peekAtTtl
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2897,1
    - Dst: LMDBBackend::get
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2897,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - ' key'
    - ' val'
    argTypes:
    - MDBOutVal
    - MDBOutVal
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2902
      start: 2894
    functionDepth: 1
    functionLinenumber: 2894
    functionLinenumberEnd: 2902
    functionName: LMDBBackend::isNSEC3BackRecord
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.cc
    functionUses: 0
    functionsReached:
    - LMDBBackend::getQType
    - getNoStripHeader
    - LMDBBackend::get
    - peekAtTtl
    linkageType: ''
    returnType: bool
    signature: bool LMDBBackend::isNSEC3BackRecord(const MDBOutVal& key, const MDBOutVal&
      val)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LMDBBackend::isNSEC3BackRecord
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2910,1
    - Dst: next
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2911,1
    - Dst: LMDBBackend::getDomainID
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2911,1
    - Dst: getNoStripHeader
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2911,1
    - Dst: LMDBBackend::getQName
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2916,1
    - Dst: getNoStripHeader
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2916,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 5
    argNames:
    - ' cursor'
    - ' key'
    - ' val'
    - id
    - ' after'
    argTypes:
    - MDBROCursor
    - MDBOutVal
    - MDBOutVal
    - domainid_t
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2919
      start: 2908
    functionDepth: 2
    functionLinenumber: 2908
    functionLinenumberEnd: 2919
    functionName: LMDBBackend::getAfterForward
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.cc
    functionUses: 0
    functionsReached:
    - next
    - LMDBBackend::getQName
    - getNoStripHeader
    - LMDBBackend::isNSEC3BackRecord
    - LMDBBackend::getDomainID
    linkageType: ''
    returnType: bool
    signature: bool LMDBBackend::getAfterForward(MDBROCursor& cursor, MDBOutVal& key,
      MDBOutVal& val, domainid_t id, DNSName& after)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lower_bound
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2927,1
    - Dst: co
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2927,1
    - Dst: LMDBBackend::getAfterForward
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2931,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 5
    argNames:
    - ' cursor'
    - ' key'
    - ' val'
    - id
    - ' after'
    argTypes:
    - MDBROCursor
    - MDBOutVal
    - MDBOutVal
    - domainid_t
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2932
      start: 2923
    functionDepth: 3
    functionLinenumber: 2923
    functionLinenumberEnd: 2932
    functionName: LMDBBackend::getAfterForwardFromStart
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.cc
    functionUses: 0
    functionsReached:
    - LMDBBackend::getAfterForward
    - co
    - lower_bound
    linkageType: ''
    returnType: bool
    signature: bool LMDBBackend::getAfterForwardFromStart(MDBROCursor& cursor, MDBOutVal&
      key, MDBOutVal& val, domainid_t id, DNSName& after)
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: LMDBBackend::findDomain
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2940,1
    - Dst: LMDBBackend::getRecordsROTransaction
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2947,1
    - Dst: auto::txn::getCursor
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2949,1
    - Dst: co
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2952,1
    - Dst: auto::lower_bound
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2953,1
    - Dst: auto::last
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2956,1
    - Dst: compoundOrdername::getDomainID
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2959,1
    - Dst: MDBOutVal::getNoStripHeader
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2959,1
    - Dst: LMDBBackend::isNSEC3BackRecord
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2965,1
    - Dst: auto::prev
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2968,1
    - Dst: compoundOrdername::getQName
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2973,1
    - Dst: MDBOutVal::getNoStripHeader
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2973,1
    - Dst: deserializeFromBuffer
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2976,1
    - Dst: LMDBBackend::get
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2976,1
    - Dst: DNSName
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2977,1
    - Dst: LMDBResourceRecord::content::c_str
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2977,1
    - Dst: LMDBResourceRecord::content::size
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2977,1
    - Dst: LMDBBackend::getAfterForwardFromStart
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2981,1
    - Dst: compoundOrdername::getQName
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2986,1
    - Dst: MDBOutVal::getNoStripHeader
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2986,1
    - Dst: auto::next
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2990,1
    - Dst: LMDBBackend::getAfterForwardFromStart
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:2993,1
    - Dst: LMDBBackend::getQName
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3000,1
    - Dst: MDBOutVal::getNoStripHeader
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3000,1
    - Dst: LMDBBackend::isNSEC3BackRecord
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3001,1
    - Dst: auto::prev
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3006,1
    - Dst: compoundOrdername::getDomainID
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3006,1
    - Dst: MDBOutVal::getNoStripHeader
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3006,1
    - Dst: auto::lower_bound
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3011,1
    - Dst: co
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3011,1
    - Dst: auto::last
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3013,1
    - Dst: auto::prev
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3016,1
    - Dst: compoundOrdername::getDomainID
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3019,1
    - Dst: MDBOutVal::getNoStripHeader
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3019,1
    - Dst: LMDBBackend::isNSEC3BackRecord
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3025,1
    - Dst: auto::prev
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3028,1
    - Dst: compoundOrdername::getQName
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3033,1
    - Dst: MDBOutVal::getNoStripHeader
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3033,1
    - Dst: deserializeFromBuffer
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3036,1
    - Dst: LMDBBackend::get
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3036,1
    - Dst: DNSName
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3037,1
    - Dst: LMDBResourceRecord::content::c_str
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3037,1
    - Dst: LMDBResourceRecord::content::size
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3037,1
    - Dst: LMDBBackend::getAfterForwardFromStart
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3043,1
    - Dst: compoundOrdername::getQName
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3047,1
    - Dst: MDBOutVal::getNoStripHeader
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3047,1
    - Dst: deserializeFromBuffer
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3050,1
    - Dst: LMDBBackend::get
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3050,1
    - Dst: DNSName
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3051,1
    - Dst: LMDBResourceRecord::content::c_str
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3051,1
    - Dst: LMDBResourceRecord::content::size
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3051,1
    - Dst: auto::next
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3057,1
    - Dst: LMDBBackend::getAfterForward
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3061,1
    - Dst: LMDBBackend::getAfterForwardFromStart
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3066,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 74
    argCount: 5
    argNames:
    - id
    - ' qname'
    - ' unhashed'
    - ' before'
    - ' after'
    argTypes:
    - domainid_t
    - DNSName
    - DNSName
    - DNSName
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3067
      start: 2935
    functionDepth: 4
    functionLinenumber: 2935
    functionLinenumberEnd: 3067
    functionName: LMDBBackend::getBeforeAndAfterNamesAbsolute
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.cc
    functionUses: 0
    functionsReached:
    - LMDBResourceRecord::content::c_str
    - compoundOrdername::getDomainID
    - auto::lower_bound
    - auto::prev
    - co
    - auto::txn::getCursor
    - MDBOutVal::getNoStripHeader
    - LMDBResourceRecord::content::size
    - auto::last
    - auto::next
    - LMDBBackend::getAfterForward
    - LMDBBackend::getQName
    - deserializeFromBuffer
    - LMDBBackend::get
    - DNSName
    - LMDBBackend::getRecordsROTransaction
    - LMDBBackend::findDomain
    - LMDBBackend::isNSEC3BackRecord
    - compoundOrdername::getQName
    - LMDBBackend::getAfterForwardFromStart
    linkageType: ''
    returnType: bool
    signature: bool LMDBBackend::getBeforeAndAfterNamesAbsolute(domainid_t id, const
      DNSName& qname, DNSName& unhashed, DNSName& before, DNSName& after)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: LMDBBackend::getQType
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3073,1
    - Dst: getNoStripHeader
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3073,1
    - Dst: peekAtAuth
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3080,1
    - Dst: LMDBBackend::get
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3080,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - ' key'
    - ' val'
    argTypes:
    - MDBOutVal
    - MDBOutVal
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3082
      start: 3071
    functionDepth: 1
    functionLinenumber: 3071
    functionLinenumberEnd: 3082
    functionName: LMDBBackend::isValidAuthRecord
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.cc
    functionUses: 0
    functionsReached:
    - LMDBBackend::getQType
    - getNoStripHeader
    - LMDBBackend::get
    - peekAtAuth
    linkageType: ''
    returnType: bool
    signature: bool LMDBBackend::isValidAuthRecord(const MDBOutVal& key, const MDBOutVal&
      val)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: makeLowerCase
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3086,1
    - Dst: LMDBBackend::getRecordsROTransaction
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3090,1
    - Dst: auto::txn::getCursor
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3092,1
    - Dst: makeRelative
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3095,1
    - Dst: co
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3096,1
    - Dst: auto::lower_bound
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3098,1
    - Dst: auto::last
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3100,1
    - Dst: LMDBBackend::getDomainID
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3101,1
    - Dst: MDBOutVal::getNoStripHeader
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3101,1
    - Dst: LMDBBackend::getQName
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3102,1
    - Dst: MDBOutVal::getNoStripHeader
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3102,1
    - Dst: LMDBBackend::getQType
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3111,1
    - Dst: MDBOutVal::getNoStripHeader
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3111,1
    - Dst: LMDBBackend::getDomainID
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3111,1
    - Dst: MDBOutVal::getNoStripHeader
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3111,1
    - Dst: LMDBBackend::getQName
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3111,1
    - Dst: MDBOutVal::getNoStripHeader
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3111,1
    - Dst: auto::next
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3116,1
    - Dst: LMDBBackend::getDomainID
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3120,1
    - Dst: MDBOutVal::getNoStripHeader
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3120,1
    - Dst: MDBOutVal::getNoStripHeader
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3120,1
    - Dst: LMDBBackend::isValidAuthRecord
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3123,1
    - Dst: LMDBBackend::getDomainID
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3127,1
    - Dst: MDBOutVal::getNoStripHeader
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3127,1
    - Dst: LMDBBackend::getQName
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3132,1
    - Dst: MDBOutVal::getNoStripHeader
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3132,1
    - Dst: LMDBBackend::getDomainID
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3136,1
    - Dst: MDBOutVal::getNoStripHeader
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3136,1
    - Dst: auto::prev
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3142,1
    - Dst: LMDBBackend::getDomainID
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3148,1
    - Dst: MDBOutVal::getNoStripHeader
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3148,1
    - Dst: LMDBBackend::isValidAuthRecord
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3153,1
    - Dst: LMDBBackend::getQName
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3158,1
    - Dst: MDBOutVal::getNoStripHeader
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3158,1
    - Dst: LMDBBackend::isValidAuthRecord
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3167,1
    - Dst: LMDBBackend::getQName
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3168,1
    - Dst: MDBOutVal::getNoStripHeader
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3168,1
    - Dst: auto::next
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3176,1
    - Dst: LMDBBackend::getDomainID
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3179,1
    - Dst: MDBOutVal::getNoStripHeader
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3179,1
    - Dst: auto::prev
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3187,1
    - Dst: auto::prev
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3190,1
    - Dst: LMDBBackend::getDomainID
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3191,1
    - Dst: MDBOutVal::getNoStripHeader
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3191,1
    - Dst: LMDBBackend::getQName
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3196,1
    - Dst: MDBOutVal::getNoStripHeader
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3196,1
    - Dst: LMDBBackend::isValidAuthRecord
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3198,1
    CyclomaticComplexity: 34
    EdgeCount: 34
    ICount: 70
    argCount: 5
    argNames:
    - domainId
    - ' zonenameU'
    - ' qname'
    - ' before'
    - ' after'
    argTypes:
    - domainid_t
    - ZoneName
    - DNSName
    - DNSName
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3205
      start: 3084
    functionDepth: 2
    functionLinenumber: 3084
    functionLinenumberEnd: 3205
    functionName: LMDBBackend::getBeforeAndAfterNames
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.cc
    functionUses: 0
    functionsReached:
    - makeLowerCase
    - makeRelative
    - auto::next
    - LMDBBackend::isValidAuthRecord
    - auto::lower_bound
    - LMDBBackend::getQName
    - auto::prev
    - co
    - auto::txn::getCursor
    - LMDBBackend::getRecordsROTransaction
    - MDBOutVal::getNoStripHeader
    - LMDBBackend::getQType
    - auto::last
    - LMDBBackend::getDomainID
    linkageType: ''
    returnType: bool
    signature: bool LMDBBackend::getBeforeAndAfterNames(domainid_t domainId, const
      ZoneName& zonenameU, const DNSName& qname, DNSName& before, DNSName& after)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: LMDBBackend::getRecordsRWTransaction
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3218,1
    - Dst: LMDBBackend::findDomain
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3223,1
    - Dst: makeRelative
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3228,1
    - Dst: co
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3231,1
    - Dst: shared_ptr::txn::getCursor
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3233,1
    - Dst: auto::prefix
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3235,1
    - Dst: empty
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3241,1
    - Dst: LMDBBackend::getQType
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3245,1
    - Dst: MDBOutVal::getNoStripHeader
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3245,1
    - Dst: deserializeMultipleFromBuffer
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3251,1
    - Dst: LMDBBackend::get
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3251,1
    - Dst: vector::reserve
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3254,1
    - Dst: vector::size
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3254,1
    - Dst: LMDBBackend::getQType
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3257,1
    - Dst: MDBOutVal::getNoStripHeader
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3257,1
    - Dst: QType
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3258,1
    - Dst: vector::push_back
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3271,1
    - Dst: std::move
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3271,1
    - Dst: MDBRWTransactionImpl::stringWithEmptyHeader
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3274,1
    - Dst: serializeToBuffer
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3275,1
    - Dst: auto::put_header_in_place
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3276,1
    - Dst: auto::next
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3278,1
    - Dst: LMDBBackend::deleteNSEC3RecordPair
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3283,1
    - Dst: LMDBBackend::writeNSEC3RecordPair
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3288,1
    - Dst: shared_ptr::txn::commit
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3292,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 48
    argCount: 6
    argNames:
    - domain_id
    - ' qname'
    - ' ordername'
    - auth
    - qtype
    - isNsec3
    argTypes:
    - domainid_t
    - DNSName
    - DNSName
    - bool
    - uint16_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3294
      start: 3207
    functionDepth: 3
    functionLinenumber: 3207
    functionLinenumberEnd: 3294
    functionName: LMDBBackend::updateDNSSECOrderNameAndAuth
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.cc
    functionUses: 0
    functionsReached:
    - makeRelative
    - LMDBBackend::deleteNSEC3RecordPair
    - serializeToBuffer
    - vector::reserve
    - shared_ptr::txn::getCursor
    - QType
    - co
    - LMDBBackend::writeNSEC3RecordPair
    - auto::prefix
    - MDBOutVal::getNoStripHeader
    - LMDBBackend::getQType
    - empty
    - deserializeMultipleFromBuffer
    - vector::push_back
    - LMDBBackend::getRecordsRWTransaction
    - auto::next
    - shared_ptr::txn::commit
    - LMDBBackend::get
    - LMDBBackend::findDomain
    - MDBRWTransactionImpl::stringWithEmptyHeader
    - std::move
    - auto::put_header_in_place
    - vector::size
    linkageType: ''
    returnType: bool
    signature: bool LMDBBackend::updateDNSSECOrderNameAndAuth(domainid_t domain_id,
      const DNSName& qname, const DNSName& ordername, bool auth, const uint16_t qtype,
      bool isNsec3)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: LMDBBackend::getRecordsRWTransaction
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3308,1
    - Dst: LMDBBackend::findDomain
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3313,1
    - Dst: order
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3321,1
    - Dst: shared_ptr::txn::getCursor
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3326,1
    - Dst: auto::prefix
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3331,1
    - Dst: LMDBBackend::getQType
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3333,1
    - Dst: MDBOutVal::getNoStripHeader
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3333,1
    - Dst: peekAtHasOrderName
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3338,1
    - Dst: MDBOutVal::get
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3338,1
    - Dst: LMDBBackend::getQName
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3339,1
    - Dst: MDBOutVal::getNoStripHeader
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3339,1
    - Dst: std::vector::emplace_back
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3340,1
    - Dst: auto::del
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3342,1
    - Dst: std::vector::size
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3345,1
    - Dst: auto::next
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3349,1
    - Dst: LMDBBackend::deleteNSEC3RecordPair
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3351,1
    - Dst: std::vector::clear
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3353,1
    - Dst: makeUsRelative
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3360,1
    - Dst: order
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3361,1
    - Dst: shared_ptr::txn::get
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3363,1
    - Dst: peekAtHasOrderName
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3364,1
    - Dst: MDBOutVal::get
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3364,1
    - Dst: shared_ptr::txn::del
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3365,1
    - Dst: LMDBBackend::deleteNSEC3RecordPair
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3367,1
    - Dst: makeRelative
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3374,1
    - Dst: MDBRWTransactionImpl::stringWithEmptyHeader
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3377,1
    - Dst: serializeToBuffer
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3378,1
    - Dst: shared_ptr::txn::put_header_in_place
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3379,1
    - Dst: order
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3379,1
    - Dst: shared_ptr::txn::commit
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3383,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 48
    argCount: 4
    argNames:
    - domain_id
    - ' insert'
    - ' erase'
    - remove
    argTypes:
    - domainid_t
    - set<DNSName>
    - set<DNSName>
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3386
      start: 3296
    functionDepth: 2
    functionLinenumber: 3296
    functionLinenumberEnd: 3386
    functionName: LMDBBackend::updateEmptyNonTerminals
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.cc
    functionUses: 0
    functionsReached:
    - makeRelative
    - LMDBBackend::deleteNSEC3RecordPair
    - serializeToBuffer
    - shared_ptr::txn::getCursor
    - std::vector::size
    - shared_ptr::txn::get
    - auto::prefix
    - MDBOutVal::getNoStripHeader
    - LMDBBackend::getQType
    - order
    - auto::next
    - LMDBBackend::getRecordsRWTransaction
    - shared_ptr::txn::commit
    - LMDBBackend::getQName
    - peekAtHasOrderName
    - shared_ptr::txn::del
    - shared_ptr::txn::put_header_in_place
    - LMDBBackend::findDomain
    - makeUsRelative
    - std::vector::clear
    - MDBRWTransactionImpl::stringWithEmptyHeader
    - MDBOutVal::get
    - auto::del
    - std::vector::emplace_back
    linkageType: ''
    returnType: bool
    signature: bool LMDBBackend::updateEmptyNonTerminals(domainid_t domain_id, set<DNSName>&
      insert, set<DNSName>& erase, bool remove)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: getROTransaction
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3391,1
    - Dst: auto::get
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3397,1
    - Dst: empty
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3398,1
    - Dst: DNSName
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3398,1
    - Dst: DNSName
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3399,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 3
    argNames:
    - ' name'
    - ' algorithm'
    - ' content'
    argTypes:
    - DNSName
    - DNSName
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3406
      start: 3389
    functionDepth: 0
    functionLinenumber: 3389
    functionLinenumberEnd: 3406
    functionName: LMDBBackend::getTSIGKey
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.cc
    functionUses: 0
    functionsReached:
    - empty
    - getROTransaction
    - DNSName
    - auto::get
    linkageType: ''
    returnType: bool
    signature: bool LMDBBackend::getTSIGKey(const DNSName& name, DNSName& algorithm,
      string& content)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: getRWTransaction
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3411,1
    - Dst: auto::get
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3418,1
    - Dst: auto::del
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3420,1
    - Dst: auto::put
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3430,1
    - Dst: hash
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3430,1
    - Dst: auto::commit
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3431,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 3
    argNames:
    - ' name'
    - ' algorithm'
    - ' content'
    argTypes:
    - DNSName
    - DNSName
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3434
      start: 3409
    functionDepth: 2
    functionLinenumber: 3409
    functionLinenumberEnd: 3434
    functionName: LMDBBackend::setTSIGKey
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.cc
    functionUses: 0
    functionsReached:
    - hash
    - getRWTransaction
    - auto::del
    - auto::get
    - auto::commit
    - auto::put
    linkageType: ''
    returnType: bool
    signature: bool LMDBBackend::setTSIGKey(const DNSName& name, const DNSName& algorithm,
      const string& content)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: getRWTransaction
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3437,1
    - Dst: auto::get
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3445,1
    - Dst: auto::del
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3446,1
    - Dst: auto::commit
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3449,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - ' name'
    argTypes:
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3451
      start: 3435
    functionDepth: 1
    functionLinenumber: 3435
    functionLinenumberEnd: 3451
    functionName: LMDBBackend::deleteTSIGKey
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.cc
    functionUses: 0
    functionsReached:
    - auto::commit
    - getRWTransaction
    - auto::del
    - auto::get
    linkageType: ''
    returnType: bool
    signature: bool LMDBBackend::deleteTSIGKey(const DNSName& name)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: getROTransaction
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3454,1
    - Dst: clear
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3456,1
    - Dst: std::unordered_set::insert
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3474,1
    - Dst: auto::get
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3481,1
    - Dst: push_back
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3482,1
    - Dst: std::move
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3482,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 1
    argNames:
    - ' keys'
    argTypes:
    - std::vector<struct TSIGKey>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3487
      start: 3452
    functionDepth: 2
    functionLinenumber: 3452
    functionLinenumberEnd: 3487
    functionName: LMDBBackend::getTSIGKeys
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.cc
    functionUses: 0
    functionsReached:
    - std::move
    - getROTransaction
    - auto::get
    - push_back
    - std::unordered_set::insert
    - clear
    linkageType: ''
    returnType: bool
    signature: bool LMDBBackend::getTSIGKeys(std::vector<struct TSIGKey>& keys)
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: stringtok
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3498,1
    - Dst: vector::empty
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3500,1
    - Dst: str
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3501,1
    - Dst: str
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3507,1
    - Dst: ostringstream::str
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3514,1
    - Dst: vector::size
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3518,1
    - Dst: vector::size
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3531,1
    - Dst: getROTransaction
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3542,1
    - Dst: auto::begin
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3544,1
    - Dst: auto::end
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3544,1
    - Dst: auto::getID
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3547,1
    - Dst: LmdbIdVec::size
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3552,1
    - Dst: LmdbIdVec::empty
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3555,1
    - Dst: vector::push_back
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3558,1
    - Dst: LMDBBackend::genChangeDomain
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3578,1
    - Dst: ostringstream::str
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3586,1
    - Dst: vector::size
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3590,1
    - Dst: pdns::checked_stoi_into
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3601,1
    - Dst: LMDBBackend::genChangeDomain
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3607,1
    - Dst: ostringstream::str
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3613,1
    - Dst: LMDBBackend::directBackendCmd_list
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3618,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 87
    argCount: 1
    argNames:
    - ' query'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3622
      start: 3489
    functionDepth: 4
    functionLinenumber: 3489
    functionLinenumberEnd: 3622
    functionName: LMDBBackend::directBackendCmd
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.cc
    functionUses: 0
    functionsReached:
    - vector::push_back
    - stringtok
    - getROTransaction
    - LmdbIdVec::empty
    - LMDBBackend::directBackendCmd_list
    - LMDBBackend::genChangeDomain
    - pdns::checked_stoi_into
    - auto::getID
    - vector::empty
    - ostringstream::str
    - str
    - auto::begin
    - auto::end
    - LmdbIdVec::size
    - vector::size
    linkageType: ''
    returnType: string
    signature: string LMDBBackend::directBackendCmd(const string& query)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3628,1
    - Dst: ostringstream::str
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3630,1
    - Dst: LMDBBackend::getDomainInfo
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3635,1
    - Dst: ostringstream::str
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3637,1
    - Dst: LMDBBackend::list
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3639,1
    - Dst: DNSName::DNSName
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3641,1
    - Dst: LMDBBackend::getInternal
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3643,1
    - Dst: rrset::at
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3644,1
    - Dst: LMDBBackend::getQType
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3646,1
    - Dst: DNSRecord::DNSRecord
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3647,1
    - Dst: DNSRecord::setContent
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3648,1
    - Dst: deserializeContentZR
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3648,1
    - Dst: DNSRecord::getContent
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3649,1
    - Dst: std::string::find_first_not_of
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3653,1
    - Dst: pdns::checked_stoi_into
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3654,1
    - Dst: std::string::substr
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3654,1
    - Dst: std::string::erase
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3655,1
    - Dst: boost::trim_left
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3656,1
    - Dst: QType::toString
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3659,1
    - Dst: txn::get
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3668,1
    - Dst: order
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3668,1
    - Dst: deserializeFromBuffer
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3670,1
    - Dst: MDBOutVal::get
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3670,1
    - Dst: LMDBResourceRecord::content::c_str
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3671,1
    - Dst: LMDBResourceRecord::content::size
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3671,1
    - Dst: static_cast<int>
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3679,1
    - Dst: ostringstream::str
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3684,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 37
    argCount: 1
    argNames:
    - ' argv'
    argTypes:
    - std::vector<string>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3685
      start: 3624
    functionDepth: 4
    functionLinenumber: 3624
    functionLinenumberEnd: 3685
    functionName: LMDBBackend::directBackendCmd_list
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.cc
    functionUses: 1
    functionsReached:
    - LMDBBackend::list
    - LMDBResourceRecord::content::c_str
    - DNSRecord::DNSRecord
    - txn::get
    - DNSRecord::setContent
    - static_cast<int>
    - std::string::erase
    - LMDBBackend::getDomainInfo
    - std::string::substr
    - std::string::find_first_not_of
    - size
    - LMDBBackend::getQType
    - pdns::checked_stoi_into
    - LMDBResourceRecord::content::size
    - order
    - deserializeFromBuffer
    - QType::toString
    - ostringstream::str
    - DNSRecord::getContent
    - LMDBBackend::getInternal
    - MDBOutVal::get
    - deserializeContentZR
    - DNSName::DNSName
    - boost::trim_left
    - rrset::at
    linkageType: ''
    returnType: string
    signature: string LMDBBackend::directBackendCmd_list(std::vector<string>& argv)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3697
      start: 3687
    functionDepth: 0
    functionLinenumber: 3687
    functionLinenumberEnd: 3697
    functionName: LMDBBackend::hasCreatedLocalFiles
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool LMDBBackend::hasCreatedLocalFiles() const
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: DBException
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3711,1
    - Dst: LMDBBackend::deleteDomainRecords
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3715,1
    - Dst: order
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3715,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - domain_id
    - before
    argTypes:
    - domainid_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3716
      start: 3704
    functionDepth: 2
    functionLinenumber: 3704
    functionLinenumberEnd: 3716
    functionName: LMDBBackend::rectifyZoneHook
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.cc
    functionUses: 0
    functionsReached:
    - order
    - DBException
    - LMDBBackend::deleteDomainRecords
    linkageType: ''
    returnType: void
    signature: void LMDBBackend::rectifyZoneHook(domainid_t domain_id, bool before)
      const
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: write_lock
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3728,1
    - Dst: auto::pop
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3732,1
    - Dst: LMDBBackend::findDomain
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3736,1
    - Dst: LMDBBackend::writeTransientDomainInfo
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3741,1
    - Dst: getRWTransaction
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3744,1
    - Dst: auto::put
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3745,1
    - Dst: auto::commit
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3746,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 25
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3759
      start: 3718
    functionDepth: 2
    functionLinenumber: 3718
    functionLinenumberEnd: 3759
    functionName: LMDBBackend::flush
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.cc
    functionUses: 0
    functionsReached:
    - getRWTransaction
    - auto::pop
    - auto::commit
    - write_lock
    - auto::put
    - LMDBBackend::writeTransientDomainInfo
    - LMDBBackend::findDomain
    linkageType: ''
    returnType: void
    signature: void LMDBBackend::flush()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3765
      start: 3764
    functionDepth: 0
    functionLinenumber: 3764
    functionLinenumberEnd: 3765
    functionName: LMDBFactory::LMDBFactory
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void LMDBFactory()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: declare
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3768,1
    - Dst: declare
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3769,1
    - Dst: declare
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3771,1
    - Dst: declare
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3772,1
    - Dst: std::to_string
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3772,1
    - Dst: declare
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3773,1
    - Dst: declare
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3774,1
    - Dst: declare
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3775,1
    - Dst: declare
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3776,1
    - Dst: declare
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3777,1
    - Dst: declare
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3778,1
    - Dst: declare
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3779,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3780
      start: 3766
    functionDepth: 0
    functionLinenumber: 3766
    functionLinenumberEnd: 3780
    functionName: LMDBFactory::declareArguments
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.cc
    functionUses: 0
    functionsReached:
    - declare
    - std::to_string
    linkageType: ''
    returnType: void
    signature: void declareArguments(const string& suffix = "") override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LMDBBackend::LMDBBackend
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3783,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3784
      start: 3781
    functionDepth: 3
    functionLinenumber: 3781
    functionLinenumberEnd: 3784
    functionName: LMDBFactory::make
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.cc
    functionUses: 0
    functionsReached:
    - LMDBBackend::LMDBBackend
    linkageType: ''
    returnType: DNSBackend
    signature: DNSBackend * make(const string& suffix = "") override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BackendMakers
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3794,1
    - Dst: std::make_unique<LMDBFactory>
      Src: /src/pdns/modules/lmdbbackend/lmdbbackend.cc:3794,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3803
      start: 3792
    functionDepth: 1
    functionLinenumber: 3792
    functionLinenumberEnd: 3803
    functionName: LMDBLoader::LMDBLoader
    functionSourceFile: /src/pdns/modules/lmdbbackend/lmdbbackend.cc
    functionUses: 0
    functionsReached:
    - BackendMakers
    - std::make_unique<LMDBFactory>
    linkageType: ''
    returnType: void
    signature: void LMDBLoader()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' tdi'
    argTypes:
    - TinyDomainInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 45
    functionDepth: 0
    functionLinenumber: 45
    functionLinenumberEnd: 48
    functionName: operator<(const TinyDomainInfo& tdi) const
    functionSourceFile: /src/pdns/modules/tinydnsbackend/tinydnsbackend.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool operator<(const TinyDomainInfo& tdi) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - newSerial
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 53
    functionDepth: 0
    functionLinenumber: 53
    functionLinenumberEnd: 54
    functionName: TDI_SerialModifier
    functionSourceFile: /src/pdns/modules/tinydnsbackend/tinydnsbackend.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void TDI_SerialModifier(const int newSerial)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' tdi'
    argTypes:
    - TinyDomainInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 56
    functionDepth: 0
    functionLinenumber: 56
    functionLinenumberEnd: 59
    functionName: operator()(TinyDomainInfo& tdi)
    functionSourceFile: /src/pdns/modules/tinydnsbackend/tinydnsbackend.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void operator()(TinyDomainInfo& tdi)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 71
    functionDepth: 0
    functionLinenumber: 71
    functionLinenumberEnd: 71
    functionName: TinyDNSBackend::getCapabilities
    functionSourceFile: /src/pdns/modules/tinydnsbackend/tinydnsbackend.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int getCapabilities() override
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: getRealRemote
      Src: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc:44,1
    - Dst: Netmask::getBits
      Src: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc:45,1
    - Dst: Netmask::getNetwork
      Src: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc:49,1
    - Dst: std::make_unique<CDB>
      Src: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc:62,1
    - Dst: getArg
      Src: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc:62,1
    - Dst: auto::findall
      Src: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc:63,1
    - Dst: SLOG
      Src: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc:66,1
    - Dst: what
      Src: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc:66,1
    - Dst: error
      Src: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc:67,1
    - Dst: what
      Src: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc:67,1
    - Dst: PDNSException
      Src: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc:68,1
    - Dst: what
      Src: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc:68,1
    - Dst: vector::size
      Src: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc:72,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 25
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 35
    functionDepth: 0
    functionLinenumber: 35
    functionLinenumberEnd: 78
    functionName: TinyDNSBackend::getLocations
    functionSourceFile: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc
    functionUses: 0
    functionsReached:
    - Netmask::getNetwork
    - auto::findall
    - SLOG
    - getRealRemote
    - what
    - PDNSException
    - getArg
    - Netmask::getBits
    - error
    - vector::size
    - std::make_unique<CDB>
    linkageType: ''
    returnType: vector<string>
    signature: vector<string> TinyDNSBackend::getLocations()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: setArgPrefix
      Src: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc:82,1
    - Dst: mustDo
      Src: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc:84,1
    - Dst: mustDo
      Src: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc:85,1
    - Dst: getArgAsNum
      Src: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc:86,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 1
    argNames:
    - ' suffix'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 80
    functionDepth: 0
    functionLinenumber: 80
    functionLinenumberEnd: 91
    functionName: TinyDNSBackend::TinyDNSBackend
    functionSourceFile: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc
    functionUses: 0
    functionsReached:
    - setArgPrefix
    - mustDo
    - getArgAsNum
    linkageType: ''
    returnType: void
    signature: void TinyDNSBackend::TinyDNSBackend(const string& suffix)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: TDI_t*::get
      Src: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc:95,1
    - Dst: find
      Src: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc:96,1
    - Dst: end
      Src: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc:97,1
    - Dst: TDI_t*::insert
      Src: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc:106,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - ' domain'
    - state
    argTypes:
    - DomainInfo
    - TDI_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 107
      start: 93
    functionDepth: 2
    functionLinenumber: 93
    functionLinenumberEnd: 107
    functionName: TinyDNSBackend::updateState
    functionSourceFile: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc
    functionUses: 0
    functionsReached:
    - TDI_t*::insert
    - end
    - find
    - TDI_t*::get
    linkageType: ''
    returnType: TinyDNSBackend::TDI_t::iterator
    signature: TinyDNSBackend::TDI_t::iterator TinyDNSBackend::updateState(DomainInfo&
      domain, TDI_t* state)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc:112,1
    - Dst: auto::count
      Src: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc:113,1
    - Dst: mustDo
      Src: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc:116,1
    - Dst: auto::emplace
      Src: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc:118,1
    - Dst: TinyDNSBackend::getAllDomains_locked
      Src: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc:124,1
    - Dst: TinyDNSBackend::updateState
      Src: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc:127,1
    - Dst: push_back
      Src: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc:131,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 1
    argNames:
    - ' retDomains'
    argTypes:
    - vector<DomainInfo>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 134
      start: 109
    functionDepth: 3
    functionLinenumber: 109
    functionLinenumberEnd: 134
    functionName: TinyDNSBackend::getUpdatedPrimaries
    functionSourceFile: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc
    functionUses: 0
    functionsReached:
    - TinyDNSBackend::updateState
    - push_back
    - TinyDNSBackend::getAllDomains_locked
    - lock
    - mustDo
    - auto::emplace
    - auto::count
    linkageType: ''
    returnType: void
    signature: void TinyDNSBackend::getUpdatedPrimaries(vector<DomainInfo>& retDomains,
      std::unordered_set<DNSName>& /* catalogs */, CatalogHashMap& /* catalogHashes
      */)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc:139,1
    - Dst: auto::count
      Src: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc:140,1
    - Dst: PDNSException
      Src: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc:141,1
    - Dst: TDI_t*::get
      Src: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc:144,1
    - Dst: find
      Src: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc:145,1
    - Dst: end
      Src: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc:146,1
    - Dst: SLOG
      Src: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc:147,1
    - Dst: info
      Src: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc:148,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc:148,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc:148,1
    - Dst: DLOG
      Src: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc:151,1
    - Dst: SLOG
      Src: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc:151,1
    - Dst: info
      Src: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc:152,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc:152,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc:152,1
    - Dst: modify
      Src: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc:153,1
    - Dst: TDI_SerialModifier
      Src: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc:153,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - id
    - serial
    argTypes:
    - domainid_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 156
      start: 137
    functionDepth: 1
    functionLinenumber: 137
    functionLinenumberEnd: 156
    functionName: TinyDNSBackend::setNotified
    functionSourceFile: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc
    functionUses: 0
    functionsReached:
    - modify
    - SLOG
    - TDI_t*::get
    - PDNSException
    - Logging::Loggable
    - TDI_SerialModifier
    - end
    - info
    - lock
    - DLOG
    - auto::count
    - find
    linkageType: ''
    returnType: void
    signature: void TinyDNSBackend::setNotified(domainid_t id, uint32_t serial)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: std::make_unique<CDB>
      Src: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc:165,1
    - Dst: getArg
      Src: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc:165,1
    - Dst: SLOG
      Src: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc:169,1
    - Dst: what
      Src: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc:169,1
    - Dst: error
      Src: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc:170,1
    - Dst: what
      Src: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc:170,1
    - Dst: PDNSException
      Src: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc:171,1
    - Dst: what
      Src: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc:171,1
    - Dst: searchAll
      Src: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc:174,1
    - Dst: TinyDNSBackend::get
      Src: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc:178,1
    - Dst: DNSResourceRecord::qtype::getCode
      Src: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc:179,1
    - Dst: std::unordered_set::insert
      Src: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc:179,1
    - Dst: ZoneName
      Src: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc:183,1
    - Dst: time
      Src: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc:185,1
    - Dst: fillSOAData
      Src: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc:190,1
    - Dst: vector<DomainInfo>*::push_back
      Src: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc:199,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 31
    argCount: 2
    argNames:
    - domains
    - getSerial
    argTypes:
    - vector<DomainInfo>*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 202
      start: 158
    functionDepth: 2
    functionLinenumber: 158
    functionLinenumberEnd: 202
    functionName: TinyDNSBackend::getAllDomains_locked
    functionSourceFile: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc
    functionUses: 1
    functionsReached:
    - vector<DomainInfo>*::push_back
    - SLOG
    - TinyDNSBackend::get
    - PDNSException
    - what
    - std::unordered_set::insert
    - getArg
    - time
    - fillSOAData
    - DNSResourceRecord::qtype::getCode
    - error
    - ZoneName
    - std::make_unique<CDB>
    - searchAll
    linkageType: ''
    returnType: void
    signature: void TinyDNSBackend::getAllDomains_locked(vector<DomainInfo>* domains,
      bool getSerial)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc:206,1
    - Dst: auto::count
      Src: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc:207,1
    - Dst: auto::emplace
      Src: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc:209,1
    - Dst: TinyDNSBackend::getAllDomains_locked
      Src: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc:214,1
    - Dst: TinyDNSBackend::updateState
      Src: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc:217,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - domains
    - getSerial
    argTypes:
    - vector<DomainInfo>*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 221
      start: 204
    functionDepth: 3
    functionLinenumber: 204
    functionLinenumberEnd: 221
    functionName: TinyDNSBackend::getAllDomains
    functionSourceFile: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc
    functionUses: 0
    functionsReached:
    - TinyDNSBackend::updateState
    - TinyDNSBackend::getAllDomains_locked
    - lock
    - auto::emplace
    - auto::count
    linkageType: ''
    returnType: void
    signature: void TinyDNSBackend::getAllDomains(vector<DomainInfo>* domains, bool
      getSerial, bool /* include_disabled */)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc:226,1
    - Dst: auto::count
      Src: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc:227,1
    - Dst: auto::emplace
      Src: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc:229,1
    - Dst: TinyDNSBackend::getAllDomains_locked
      Src: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc:235,1
    - Dst: TinyDNSBackend::updateState
      Src: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc:239,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 3
    argNames:
    - ' domain'
    - ' di'
    - getSerial
    argTypes:
    - ZoneName
    - DomainInfo
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 248
      start: 224
    functionDepth: 3
    functionLinenumber: 224
    functionLinenumberEnd: 248
    functionName: TinyDNSBackend::getDomainInfo
    functionSourceFile: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc
    functionUses: 0
    functionsReached:
    - TinyDNSBackend::updateState
    - TinyDNSBackend::getAllDomains_locked
    - lock
    - auto::emplace
    - auto::count
    linkageType: ''
    returnType: bool
    signature: bool TinyDNSBackend::getDomainInfo(const ZoneName& domain, DomainInfo&
      di, bool getSerial)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: toDNSStringLC
      Src: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc:254,1
    - Dst: std::make_unique<CDB>
      Src: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc:256,1
    - Dst: getArg
      Src: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc:256,1
    - Dst: SLOG
      Src: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc:260,1
    - Dst: what
      Src: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc:260,1
    - Dst: error
      Src: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc:261,1
    - Dst: what
      Src: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc:261,1
    - Dst: PDNSException
      Src: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc:262,1
    - Dst: what
      Src: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc:262,1
    - Dst: searchSuffix
      Src: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc:265,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - ' target'
    - domain_id
    argTypes:
    - ZoneName
    - domainid_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 266
      start: 250
    functionDepth: 0
    functionLinenumber: 250
    functionLinenumberEnd: 266
    functionName: TinyDNSBackend::list
    functionSourceFile: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc
    functionUses: 0
    functionsReached:
    - toDNSStringLC
    - SLOG
    - searchSuffix
    - PDNSException
    - what
    - getArg
    - error
    - std::make_unique<CDB>
    linkageType: ''
    returnType: bool
    signature: bool TinyDNSBackend::list(const ZoneName& target, domainid_t domain_id,
      bool /* include_disabled */)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: toLowerCanonic
      Src: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc:272,1
    - Dst: toString
      Src: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc:272,1
    - Dst: simpleCompress
      Src: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc:274,1
    - Dst: DLOG
      Src: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc:276,1
    - Dst: SLOG
      Src: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc:276,1
    - Dst: toString
      Src: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc:276,1
    - Dst: info
      Src: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc:277,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc:277,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc:277,1
    - Dst: DLOG
      Src: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc:278,1
    - Dst: SLOG
      Src: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc:278,1
    - Dst: makeHexDump
      Src: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc:278,1
    - Dst: info
      Src: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc:279,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc:279,1
    - Dst: makeHexDump
      Src: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc:279,1
    - Dst: string::erase
      Src: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc:284,1
    - Dst: std::make_unique<CDB>
      Src: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc:290,1
    - Dst: getArg
      Src: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc:290,1
    - Dst: SLOG
      Src: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc:294,1
    - Dst: what
      Src: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc:294,1
    - Dst: error
      Src: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc:295,1
    - Dst: what
      Src: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc:295,1
    - Dst: PDNSException
      Src: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc:296,1
    - Dst: what
      Src: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc:296,1
    - Dst: searchKey
      Src: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc:299,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 4
    argNames:
    - ' qtype'
    - ' qdomain'
    - zoneId
    - pkt_p
    argTypes:
    - QType
    - DNSName
    - domainid_t
    - DNSPacket*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 301
      start: 268
    functionDepth: 0
    functionLinenumber: 268
    functionLinenumberEnd: 301
    functionName: TinyDNSBackend::lookup
    functionSourceFile: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc
    functionUses: 0
    functionsReached:
    - string::erase
    - toLowerCanonic
    - error
    - toString
    - SLOG
    - simpleCompress
    - Logging::Loggable
    - what
    - PDNSException
    - getArg
    - info
    - searchKey
    - DLOG
    - std::make_unique<CDB>
    - makeHexDump
    linkageType: ''
    returnType: void
    signature: void TinyDNSBackend::lookup(const QType& qtype, const DNSName& qdomain,
      domainid_t zoneId, DNSPacket* pkt_p)
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: readNext
      Src: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc:307,1
    - Dst: DLOG
      Src: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc:312,1
    - Dst: SLOG
      Src: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc:312,1
    - Dst: makeHexDump
      Src: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc:312,1
    - Dst: info
      Src: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc:313,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc:313,1
    - Dst: makeHexDump
      Src: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc:313,1
    - Dst: DLOG
      Src: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc:314,1
    - Dst: SLOG
      Src: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc:314,1
    - Dst: makeHexDump
      Src: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc:314,1
    - Dst: info
      Src: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc:315,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc:315,1
    - Dst: makeHexDump
      Src: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc:315,1
    - Dst: QType
      Src: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc:334,1
    - Dst: PacketReader::get16BitInt
      Src: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc:334,1
    - Dst: getCode
      Src: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc:340,1
    - Dst: PacketReader::get8BitInt
      Src: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc:341,1
    - Dst: PacketReader::get8BitInt
      Src: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc:347,1
    - Dst: PacketReader::get8BitInt
      Src: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc:348,1
    - Dst: TinyDNSBackend::getLocations
      Src: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc:352,1
    - Dst: vector::size
      Src: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc:353,1
    - Dst: vector::back
      Src: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc:354,1
    - Dst: vector::pop_back
      Src: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc:355,1
    - Dst: string::insert
      Src: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc:369,1
    - Dst: string::insert
      Src: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc:370,1
    - Dst: DNSName
      Src: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc:373,1
    - Dst: string::c_str
      Src: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc:373,1
    - Dst: string::size
      Src: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc:373,1
    - Dst: PacketReader::get32BitInt
      Src: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc:379,1
    - Dst: PacketReader::get32BitInt
      Src: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc:380,1
    - Dst: PacketReader::get32BitInt
      Src: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc:382,1
    - Dst: time
      Src: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc:384,1
    - Dst: DNSRecord::DNSRecord
      Src: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc:400,1
    - Dst: qtype::getCode
      Src: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc:402,1
    - Dst: string::size
      Src: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc:403,1
    - Dst: PacketReader::getPosition
      Src: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc:403,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc:405,1
    - Dst: auto::getZoneRepresentation
      Src: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc:406,1
    - Dst: DLOG
      Src: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc:407,1
    - Dst: SLOG
      Src: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc:410,1
    - Dst: qtype::toString
      Src: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc:410,1
    - Dst: info
      Src: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc:411,1
    - Dst: std::string
      Src: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc:411,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc:411,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc:411,1
    - Dst: DLOG
      Src: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc:420,1
    - Dst: SLOG
      Src: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc:420,1
    - Dst: qtype::toString
      Src: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc:420,1
    - Dst: info
      Src: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc:421,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc:421,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc:421,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc:421,1
    - Dst: DLOG
      Src: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc:426,1
    - Dst: SLOG
      Src: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc:426,1
    - Dst: info
      Src: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc:427,1
    CyclomaticComplexity: 50
    EdgeCount: 50
    ICount: 86
    argCount: 1
    argNames:
    - ' rr'
    argTypes:
    - DNSResourceRecord
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 432
      start: 303
    functionDepth: 2
    functionLinenumber: 303
    functionLinenumberEnd: 432
    functionName: TinyDNSBackend::get
    functionSourceFile: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc
    functionUses: 1
    functionsReached:
    - DNSRecord::DNSRecord
    - std::string
    - makeHexDump
    - vector::pop_back
    - SLOG
    - string::size
    - Logging::Loggable
    - time
    - QType
    - PacketReader::get16BitInt
    - string::insert
    - DNSRecordContent::make
    - PacketReader::get32BitInt
    - PacketReader::getPosition
    - PacketReader::get8BitInt
    - readNext
    - string::c_str
    - DNSName
    - qtype::getCode
    - TinyDNSBackend::getLocations
    - vector::back
    - qtype::toString
    - info
    - auto::getZoneRepresentation
    - DLOG
    - vector::size
    - getCode
    linkageType: ''
    returnType: bool
    signature: bool TinyDNSBackend::get(DNSResourceRecord& rr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 439
      start: 438
    functionDepth: 0
    functionLinenumber: 438
    functionLinenumberEnd: 439
    functionName: TinyDNSFactory::TinyDNSFactory
    functionSourceFile: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void TinyDNSFactory()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: declare
      Src: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc:443,1
    - Dst: declare
      Src: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc:444,1
    - Dst: declare
      Src: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc:445,1
    - Dst: declare
      Src: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc:446,1
    - Dst: declare
      Src: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc:447,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 448
      start: 441
    functionDepth: 0
    functionLinenumber: 441
    functionLinenumberEnd: 448
    functionName: TinyDNSFactory::declareArguments
    functionSourceFile: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc
    functionUses: 0
    functionsReached:
    - declare
    linkageType: ''
    returnType: void
    signature: void declareArguments(const string& suffix = "") override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TinyDNSBackend::TinyDNSBackend
      Src: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc:452,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 453
      start: 450
    functionDepth: 1
    functionLinenumber: 450
    functionLinenumberEnd: 453
    functionName: TinyDNSFactory::make
    functionSourceFile: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc
    functionUses: 0
    functionsReached:
    - TinyDNSBackend::TinyDNSBackend
    linkageType: ''
    returnType: DNSBackend
    signature: DNSBackend * make(const string& suffix = "") override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BackendMakers
      Src: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc:462,1
    - Dst: std::make_unique<TinyDNSFactory>
      Src: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc:462,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 471
      start: 460
    functionDepth: 1
    functionLinenumber: 460
    functionLinenumberEnd: 471
    functionName: TinyDNSLoader::TinyDNSLoader
    functionSourceFile: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc
    functionUses: 0
    functionsReached:
    - BackendMakers
    - std::make_unique<TinyDNSFactory>
    linkageType: ''
    returnType: void
    signature: void TinyDNSLoader()
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ostringstream::str
      Src: /src/pdns/modules/godbcbackend/sodbc.cc:41,1
    - Dst: SQLGetDiagRec
      Src: /src/pdns/modules/godbcbackend/sodbc.cc:54,1
    - Dst: SQL_SUCCEEDED
      Src: /src/pdns/modules/godbcbackend/sodbc.cc:57,1
    - Dst: ostringstream::str
      Src: /src/pdns/modules/godbcbackend/sodbc.cc:61,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 5
    argNames:
    - result
    - type
    - handle
    - ' message'
    - ' errorMessage'
    argTypes:
    - SQLRETURN
    - SQLSMALLINT
    - SQLHANDLE
    - std::string
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 28
    functionDepth: 0
    functionLinenumber: 28
    functionLinenumberEnd: 63
    functionName: realTestResult
    functionSourceFile: /src/pdns/modules/godbcbackend/sodbc.cc
    functionUses: 0
    functionsReached:
    - SQLGetDiagRec
    - ostringstream::str
    - SQL_SUCCEEDED
    linkageType: ''
    returnType: bool
    signature: bool realTestResult(SQLRETURN result, SQLSMALLINT type, SQLHANDLE handle,
      const std::string& message, std::string& errorMessage)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 5
    argNames:
    - log
    - ' query'
    - dolog
    - nparams
    - connection
    argTypes:
    - Logr::log_t
    - string
    - bool
    - int
    - SQLHDBC
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 68
    functionDepth: 0
    functionLinenumber: 68
    functionLinenumberEnd: 81
    functionName: SODBCStatement::SODBCStatement
    functionSourceFile: /src/pdns/modules/godbcbackend/sodbc.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void SODBCStatement(Logr::log_t log, const string& query, bool dolog,
      int nparams, SQLHDBC connection)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SODBCStatement::prepareStatement
      Src: /src/pdns/modules/godbcbackend/sodbc.cc:95,1
    - Dst: push_back
      Src: /src/pdns/modules/godbcbackend/sodbc.cc:96,1
    - Dst: SQLBindParameter
      Src: /src/pdns/modules/godbcbackend/sodbc.cc:98,1
    - Dst: SODBCStatement::testResult
      Src: /src/pdns/modules/godbcbackend/sodbc.cc:110,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - ' p'
    argTypes:
    - ODBCParam
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 93
    functionDepth: 1
    functionLinenumber: 93
    functionLinenumberEnd: 114
    functionName: SODBCStatement::bind
    functionSourceFile: /src/pdns/modules/godbcbackend/sodbc.cc
    functionUses: 0
    functionsReached:
    - push_back
    - SODBCStatement::testResult
    - SQLBindParameter
    - SODBCStatement::prepareStatement
    linkageType: ''
    returnType: SSqlStatement
    signature: SSqlStatement * bind(const string& /* name */, ODBCParam& p)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SODBCStatement::prepareStatement
      Src: /src/pdns/modules/godbcbackend/sodbc.cc:118,1
    - Dst: SODBCStatement::bind
      Src: /src/pdns/modules/godbcbackend/sodbc.cc:119,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ' name'
    - value
    argTypes:
    - string
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 116
    functionDepth: 1
    functionLinenumber: 116
    functionLinenumberEnd: 120
    functionName: SODBCStatement::bind
    functionSourceFile: /src/pdns/modules/godbcbackend/sodbc.cc
    functionUses: 1
    functionsReached:
    - SODBCStatement::bind
    - SODBCStatement::prepareStatement
    linkageType: ''
    returnType: SSqlStatement
    signature: SSqlStatement * bind(const string& name, bool value) override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SODBCStatement::prepareStatement
      Src: /src/pdns/modules/godbcbackend/sodbc.cc:124,1
    - Dst: SODBCStatement::bind
      Src: /src/pdns/modules/godbcbackend/sodbc.cc:125,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ' name'
    - value
    argTypes:
    - string
    - long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 122
    functionDepth: 1
    functionLinenumber: 122
    functionLinenumberEnd: 126
    functionName: SODBCStatement::bind
    functionSourceFile: /src/pdns/modules/godbcbackend/sodbc.cc
    functionUses: 2
    functionsReached:
    - SODBCStatement::bind
    - SODBCStatement::prepareStatement
    linkageType: ''
    returnType: SSqlStatement
    signature: SSqlStatement * bind(const string& name, long value) override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SODBCStatement::prepareStatement
      Src: /src/pdns/modules/godbcbackend/sodbc.cc:130,1
    - Dst: SODBCStatement::bind
      Src: /src/pdns/modules/godbcbackend/sodbc.cc:131,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ' name'
    - value
    argTypes:
    - string
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 132
      start: 128
    functionDepth: 1
    functionLinenumber: 128
    functionLinenumberEnd: 132
    functionName: SODBCStatement::bind
    functionSourceFile: /src/pdns/modules/godbcbackend/sodbc.cc
    functionUses: 3
    functionsReached:
    - SODBCStatement::bind
    - SODBCStatement::prepareStatement
    linkageType: ''
    returnType: SSqlStatement
    signature: SSqlStatement * bind(const string& name, int value) override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SODBCStatement::prepareStatement
      Src: /src/pdns/modules/godbcbackend/sodbc.cc:136,1
    - Dst: SODBCStatement::bind
      Src: /src/pdns/modules/godbcbackend/sodbc.cc:137,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ' name'
    - value
    argTypes:
    - string
    - long long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 138
      start: 134
    functionDepth: 1
    functionLinenumber: 134
    functionLinenumberEnd: 138
    functionName: SODBCStatement::bind
    functionSourceFile: /src/pdns/modules/godbcbackend/sodbc.cc
    functionUses: 4
    functionsReached:
    - SODBCStatement::bind
    - SODBCStatement::prepareStatement
    linkageType: ''
    returnType: SSqlStatement
    signature: SSqlStatement * bind(const string& name, long long value) override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SODBCStatement::prepareStatement
      Src: /src/pdns/modules/godbcbackend/sodbc.cc:142,1
    - Dst: UDWORD::UDWORD
      Src: /src/pdns/modules/godbcbackend/sodbc.cc:145,1
    - Dst: SQLLEN::SQLLEN
      Src: /src/pdns/modules/godbcbackend/sodbc.cc:146,1
    - Dst: SODBCStatement::bind
      Src: /src/pdns/modules/godbcbackend/sodbc.cc:150,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - ' name'
    - value
    argTypes:
    - string
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 151
      start: 140
    functionDepth: 1
    functionLinenumber: 140
    functionLinenumberEnd: 151
    functionName: SODBCStatement::bind
    functionSourceFile: /src/pdns/modules/godbcbackend/sodbc.cc
    functionUses: 5
    functionsReached:
    - SQLLEN::SQLLEN
    - UDWORD::UDWORD
    - SODBCStatement::bind
    - SODBCStatement::prepareStatement
    linkageType: ''
    returnType: SSqlStatement
    signature: SSqlStatement * bind(const string& name, uint32_t value) override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SODBCStatement::prepareStatement
      Src: /src/pdns/modules/godbcbackend/sodbc.cc:155,1
    - Dst: ULONG::ULONG
      Src: /src/pdns/modules/godbcbackend/sodbc.cc:158,1
    - Dst: SQLLEN::SQLLEN
      Src: /src/pdns/modules/godbcbackend/sodbc.cc:159,1
    - Dst: SODBCStatement::bind
      Src: /src/pdns/modules/godbcbackend/sodbc.cc:163,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - ' name'
    - value
    argTypes:
    - string
    - unsigned long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 164
      start: 153
    functionDepth: 1
    functionLinenumber: 153
    functionLinenumberEnd: 164
    functionName: SODBCStatement::bind
    functionSourceFile: /src/pdns/modules/godbcbackend/sodbc.cc
    functionUses: 6
    functionsReached:
    - SQLLEN::SQLLEN
    - SODBCStatement::bind
    - SODBCStatement::prepareStatement
    - ULONG::ULONG
    linkageType: ''
    returnType: SSqlStatement
    signature: SSqlStatement * bind(const string& name, unsigned long value) override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SODBCStatement::prepareStatement
      Src: /src/pdns/modules/godbcbackend/sodbc.cc:168,1
    - Dst: unsigned long long::unsigned long long
      Src: /src/pdns/modules/godbcbackend/sodbc.cc:171,1
    - Dst: SQLLEN::SQLLEN
      Src: /src/pdns/modules/godbcbackend/sodbc.cc:172,1
    - Dst: SODBCStatement::bind
      Src: /src/pdns/modules/godbcbackend/sodbc.cc:176,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - ' name'
    - value
    argTypes:
    - string
    - unsigned long long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 177
      start: 166
    functionDepth: 1
    functionLinenumber: 166
    functionLinenumberEnd: 177
    functionName: SODBCStatement::bind
    functionSourceFile: /src/pdns/modules/godbcbackend/sodbc.cc
    functionUses: 7
    functionsReached:
    - SQLLEN::SQLLEN
    - SODBCStatement::bind
    - unsigned long long::unsigned long long
    - SODBCStatement::prepareStatement
    linkageType: ''
    returnType: SSqlStatement
    signature: SSqlStatement * bind(const string& name, unsigned long long value)
      override
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/modules/godbcbackend/sodbc.cc:184,1
    - Dst: SSqlException
      Src: /src/pdns/modules/godbcbackend/sodbc.cc:185,1
    - Dst: SODBCStatement::prepareStatement
      Src: /src/pdns/modules/godbcbackend/sodbc.cc:186,1
    - Dst: size
      Src: /src/pdns/modules/godbcbackend/sodbc.cc:190,1
    - Dst: char::char
      Src: /src/pdns/modules/godbcbackend/sodbc.cc:190,1
    - Dst: copy
      Src: /src/pdns/modules/godbcbackend/sodbc.cc:191,1
    - Dst: size
      Src: /src/pdns/modules/godbcbackend/sodbc.cc:191,1
    - Dst: size
      Src: /src/pdns/modules/godbcbackend/sodbc.cc:192,1
    - Dst: static_cast<SQLLEN>
      Src: /src/pdns/modules/godbcbackend/sodbc.cc:193,1
    - Dst: size
      Src: /src/pdns/modules/godbcbackend/sodbc.cc:193,1
    - Dst: SQLLEN::SQLLEN
      Src: /src/pdns/modules/godbcbackend/sodbc.cc:193,1
    - Dst: SODBCStatement::bind
      Src: /src/pdns/modules/godbcbackend/sodbc.cc:198,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - ' name'
    - ' value'
    argTypes:
    - string
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 199
      start: 179
    functionDepth: 1
    functionLinenumber: 179
    functionLinenumberEnd: 199
    functionName: SODBCStatement::bind
    functionSourceFile: /src/pdns/modules/godbcbackend/sodbc.cc
    functionUses: 8
    functionsReached:
    - char::char
    - SODBCStatement::prepareStatement
    - SQLLEN::SQLLEN
    - SODBCStatement::bind
    - copy
    - size
    - static_cast<SQLLEN>
    - SSqlException
    linkageType: ''
    returnType: SSqlStatement
    signature: SSqlStatement * bind(const string& name, const std::string& value)
      override
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/modules/godbcbackend/sodbc.cc:203,1
    - Dst: SSqlException
      Src: /src/pdns/modules/godbcbackend/sodbc.cc:204,1
    - Dst: SODBCStatement::prepareStatement
      Src: /src/pdns/modules/godbcbackend/sodbc.cc:206,1
    - Dst: SQLLEN::SQLLEN
      Src: /src/pdns/modules/godbcbackend/sodbc.cc:211,1
    - Dst: SODBCStatement::bind
      Src: /src/pdns/modules/godbcbackend/sodbc.cc:216,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - ' name'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 217
      start: 201
    functionDepth: 2
    functionLinenumber: 201
    functionLinenumberEnd: 217
    functionName: SODBCStatement::bindNull
    functionSourceFile: /src/pdns/modules/godbcbackend/sodbc.cc
    functionUses: 0
    functionsReached:
    - SODBCStatement::prepareStatement
    - SQLLEN::SQLLEN
    - SODBCStatement::bind
    - size
    - SSqlException
    linkageType: ''
    returnType: SSqlStatement
    signature: SSqlStatement * bindNull(const string& name) override
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: SODBCStatement::prepareStatement
      Src: /src/pdns/modules/godbcbackend/sodbc.cc:221,1
    - Dst: SLOG
      Src: /src/pdns/modules/godbcbackend/sodbc.cc:225,1
    - Dst: info
      Src: /src/pdns/modules/godbcbackend/sodbc.cc:226,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/godbcbackend/sodbc.cc:226,1
    - Dst: SQLExecute
      Src: /src/pdns/modules/godbcbackend/sodbc.cc:229,1
    - Dst: SODBCStatement::testResult
      Src: /src/pdns/modules/godbcbackend/sodbc.cc:231,1
    - Dst: SQLNumResultCols
      Src: /src/pdns/modules/godbcbackend/sodbc.cc:234,1
    - Dst: SODBCStatement::testResult
      Src: /src/pdns/modules/godbcbackend/sodbc.cc:235,1
    - Dst: SQLFetch
      Src: /src/pdns/modules/godbcbackend/sodbc.cc:240,1
    - Dst: SODBCStatement::testResult
      Src: /src/pdns/modules/godbcbackend/sodbc.cc:247,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 249
      start: 219
    functionDepth: 1
    functionLinenumber: 219
    functionLinenumberEnd: 249
    functionName: SODBCStatement::execute
    functionSourceFile: /src/pdns/modules/godbcbackend/sodbc.cc
    functionUses: 0
    functionsReached:
    - SLOG
    - SODBCStatement::prepareStatement
    - Logging::Loggable
    - SQLNumResultCols
    - SODBCStatement::testResult
    - info
    - SQLExecute
    - SQLFetch
    linkageType: ''
    returnType: SSqlStatement
    signature: SSqlStatement * execute() override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 255
      start: 251
    functionDepth: 0
    functionLinenumber: 251
    functionLinenumberEnd: 255
    functionName: SODBCStatement::hasNextRow
    functionSourceFile: /src/pdns/modules/godbcbackend/sodbc.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool hasNextRow() override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: clear
      Src: /src/pdns/modules/godbcbackend/sodbc.cc:260,1
    - Dst: SODBCStatement::hasNextRow
      Src: /src/pdns/modules/godbcbackend/sodbc.cc:263,1
    - Dst: SODBCStatement::nextRow
      Src: /src/pdns/modules/godbcbackend/sodbc.cc:264,1
    - Dst: push_back
      Src: /src/pdns/modules/godbcbackend/sodbc.cc:265,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - ' result'
    argTypes:
    - result_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 268
      start: 258
    functionDepth: 1
    functionLinenumber: 258
    functionLinenumberEnd: 268
    functionName: SODBCStatement::getResult
    functionSourceFile: /src/pdns/modules/godbcbackend/sodbc.cc
    functionUses: 0
    functionsReached:
    - clear
    - push_back
    - SODBCStatement::nextRow
    - SODBCStatement::hasNextRow
    linkageType: ''
    returnType: SSqlStatement
    signature: SSqlStatement * getResult(result_t& result) override
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: SQLCloseCursor
      Src: /src/pdns/modules/godbcbackend/sodbc.cc:272,1
    - Dst: static_cast<char*>
      Src: /src/pdns/modules/godbcbackend/sodbc.cc:277,1
    - Dst: static_cast<UDWORD*>
      Src: /src/pdns/modules/godbcbackend/sodbc.cc:281,1
    - Dst: static_cast<ULONG*>
      Src: /src/pdns/modules/godbcbackend/sodbc.cc:284,1
    - Dst: static_cast<unsigned long long*>
      Src: /src/pdns/modules/godbcbackend/sodbc.cc:288,1
    - Dst: clear
      Src: /src/pdns/modules/godbcbackend/sodbc.cc:294,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 21
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 298
      start: 270
    functionDepth: 1
    functionLinenumber: 270
    functionLinenumberEnd: 298
    functionName: SODBCStatement::reset
    functionSourceFile: /src/pdns/modules/godbcbackend/sodbc.cc
    functionUses: 0
    functionsReached:
    - static_cast<char*>
    - static_cast<unsigned long long*>
    - static_cast<ULONG*>
    - SQLCloseCursor
    - static_cast<UDWORD*>
    - clear
    linkageType: ''
    returnType: SSqlStatement
    signature: SSqlStatement * reset() override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 299
      start: 299
    functionDepth: 0
    functionLinenumber: 299
    functionLinenumberEnd: 299
    functionName: '& getQuery() override'
    functionSourceFile: /src/pdns/modules/godbcbackend/sodbc.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string & getQuery() override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: releaseStatement
      Src: /src/pdns/modules/godbcbackend/sodbc.cc:303,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 304
      start: 301
    functionDepth: 0
    functionLinenumber: 301
    functionLinenumberEnd: 304
    functionName: ~SODBCStatement() override
    functionSourceFile: /src/pdns/modules/godbcbackend/sodbc.cc
    functionUses: 0
    functionsReached:
    - releaseStatement
    linkageType: ''
    returnType: void
    signature: void ~SODBCStatement() override
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: realTestResult
      Src: /src/pdns/modules/godbcbackend/sodbc.cc:310,1
    - Dst: SODBCStatement::releaseStatement
      Src: /src/pdns/modules/godbcbackend/sodbc.cc:311,1
    - Dst: SSqlException
      Src: /src/pdns/modules/godbcbackend/sodbc.cc:312,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 4
    argNames:
    - result
    - type
    - handle
    - ' message'
    argTypes:
    - SQLRETURN
    - SQLSMALLINT
    - SQLHANDLE
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 314
      start: 307
    functionDepth: 1
    functionLinenumber: 307
    functionLinenumberEnd: 314
    functionName: SODBCStatement::testResult
    functionSourceFile: /src/pdns/modules/godbcbackend/sodbc.cc
    functionUses: 2
    functionsReached:
    - SSqlException
    - realTestResult
    - SODBCStatement::releaseStatement
    linkageType: ''
    returnType: void
    signature: void testResult(SQLRETURN result, SQLSMALLINT type, SQLHANDLE handle,
      const std::string& message)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SODBCStatement::reset
      Src: /src/pdns/modules/godbcbackend/sodbc.cc:318,1
    - Dst: SQLFreeHandle
      Src: /src/pdns/modules/godbcbackend/sodbc.cc:320,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 322
      start: 316
    functionDepth: 0
    functionLinenumber: 316
    functionLinenumberEnd: 322
    functionName: SODBCStatement::releaseStatement
    functionSourceFile: /src/pdns/modules/godbcbackend/sodbc.cc
    functionUses: 1
    functionsReached:
    - SQLFreeHandle
    - SODBCStatement::reset
    linkageType: ''
    returnType: void
    signature: void releaseStatement()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: SQLAllocHandle
      Src: /src/pdns/modules/godbcbackend/sodbc.cc:332,1
    - Dst: SODBCStatement::testResult
      Src: /src/pdns/modules/godbcbackend/sodbc.cc:333,1
    - Dst: SQLPrepare
      Src: /src/pdns/modules/godbcbackend/sodbc.cc:335,1
    - Dst: c_str
      Src: /src/pdns/modules/godbcbackend/sodbc.cc:335,1
    - Dst: SODBCStatement::testResult
      Src: /src/pdns/modules/godbcbackend/sodbc.cc:336,1
    - Dst: SQLNumParams
      Src: /src/pdns/modules/godbcbackend/sodbc.cc:339,1
    - Dst: SODBCStatement::testResult
      Src: /src/pdns/modules/godbcbackend/sodbc.cc:340,1
    - Dst: static_cast<SQLSMALLINT>
      Src: /src/pdns/modules/godbcbackend/sodbc.cc:342,1
    - Dst: SODBCStatement::releaseStatement
      Src: /src/pdns/modules/godbcbackend/sodbc.cc:343,1
    - Dst: SSqlException
      Src: /src/pdns/modules/godbcbackend/sodbc.cc:344,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 349
      start: 324
    functionDepth: 2
    functionLinenumber: 324
    functionLinenumberEnd: 349
    functionName: SODBCStatement::prepareStatement
    functionSourceFile: /src/pdns/modules/godbcbackend/sodbc.cc
    functionUses: 11
    functionsReached:
    - static_cast<SQLSMALLINT>
    - SODBCStatement::testResult
    - SODBCStatement::releaseStatement
    - SQLAllocHandle
    - SQLPrepare
    - SQLNumParams
    - c_str
    - SSqlException
    linkageType: ''
    returnType: void
    signature: void prepareStatement()
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: clear
      Src: /src/pdns/modules/godbcbackend/sodbc.cc:379,1
    - Dst: SQLGetData
      Src: /src/pdns/modules/godbcbackend/sodbc.cc:391,1
    - Dst: SODBCStatement::testResult
      Src: /src/pdns/modules/godbcbackend/sodbc.cc:392,1
    - Dst: std::string
      Src: /src/pdns/modules/godbcbackend/sodbc.cc:394,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/modules/godbcbackend/sodbc.cc:394,1
    - Dst: std::min<SQLLEN>
      Src: /src/pdns/modules/godbcbackend/sodbc.cc:394,1
    - Dst: push_back
      Src: /src/pdns/modules/godbcbackend/sodbc.cc:395,1
    - Dst: SQLFetch
      Src: /src/pdns/modules/godbcbackend/sodbc.cc:401,1
    - Dst: SQLMoreResults
      Src: /src/pdns/modules/godbcbackend/sodbc.cc:404,1
    - Dst: SODBCStatement::testResult
      Src: /src/pdns/modules/godbcbackend/sodbc.cc:410,1
    - Dst: SQLFetch
      Src: /src/pdns/modules/godbcbackend/sodbc.cc:411,1
    - Dst: SODBCStatement::testResult
      Src: /src/pdns/modules/godbcbackend/sodbc.cc:414,1
    - Dst: SQLFreeStmt
      Src: /src/pdns/modules/godbcbackend/sodbc.cc:419,1
    - Dst: SSqlException
      Src: /src/pdns/modules/godbcbackend/sodbc.cc:420,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 26
    argCount: 1
    argNames:
    - ' row'
    argTypes:
    - row_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 421
      start: 375
    functionDepth: 2
    functionLinenumber: 375
    functionLinenumberEnd: 421
    functionName: SODBCStatement::nextRow
    functionSourceFile: /src/pdns/modules/godbcbackend/sodbc.cc
    functionUses: 1
    functionsReached:
    - push_back
    - SODBCStatement::testResult
    - SSqlException
    - reinterpret_cast<const char*>
    - SQLFetch
    - SQLMoreResults
    - clear
    - std::string
    - SQLGetData
    - SQLFreeStmt
    - std::min<SQLLEN>
    linkageType: ''
    returnType: SSqlStatement
    signature: SSqlStatement * SODBCStatement::nextRow(row_t& row)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SQLAllocHandle
      Src: /src/pdns/modules/godbcbackend/sodbc.cc:435,1
    - Dst: SODBC::testResult
      Src: /src/pdns/modules/godbcbackend/sodbc.cc:436,1
    - Dst: SQLSetEnvAttr
      Src: /src/pdns/modules/godbcbackend/sodbc.cc:439,1
    - Dst: reinterpret_cast<void*>
      Src: /src/pdns/modules/godbcbackend/sodbc.cc:439,1
    - Dst: SODBC::testResult
      Src: /src/pdns/modules/godbcbackend/sodbc.cc:440,1
    - Dst: SQLAllocHandle
      Src: /src/pdns/modules/godbcbackend/sodbc.cc:443,1
    - Dst: SODBC::testResult
      Src: /src/pdns/modules/godbcbackend/sodbc.cc:444,1
    - Dst: strdup
      Src: /src/pdns/modules/godbcbackend/sodbc.cc:447,1
    - Dst: c_str
      Src: /src/pdns/modules/godbcbackend/sodbc.cc:447,1
    - Dst: strdup
      Src: /src/pdns/modules/godbcbackend/sodbc.cc:448,1
    - Dst: c_str
      Src: /src/pdns/modules/godbcbackend/sodbc.cc:448,1
    - Dst: strdup
      Src: /src/pdns/modules/godbcbackend/sodbc.cc:449,1
    - Dst: c_str
      Src: /src/pdns/modules/godbcbackend/sodbc.cc:449,1
    - Dst: SQLConnect
      Src: /src/pdns/modules/godbcbackend/sodbc.cc:451,1
    - Dst: reinterpret_cast<SQLTCHAR*>
      Src: /src/pdns/modules/godbcbackend/sodbc.cc:452,1
    - Dst: length
      Src: /src/pdns/modules/godbcbackend/sodbc.cc:452,1
    - Dst: reinterpret_cast<SQLTCHAR*>
      Src: /src/pdns/modules/godbcbackend/sodbc.cc:453,1
    - Dst: length
      Src: /src/pdns/modules/godbcbackend/sodbc.cc:453,1
    - Dst: reinterpret_cast<SQLTCHAR*>
      Src: /src/pdns/modules/godbcbackend/sodbc.cc:454,1
    - Dst: length
      Src: /src/pdns/modules/godbcbackend/sodbc.cc:454,1
    - Dst: free
      Src: /src/pdns/modules/godbcbackend/sodbc.cc:456,1
    - Dst: free
      Src: /src/pdns/modules/godbcbackend/sodbc.cc:457,1
    - Dst: free
      Src: /src/pdns/modules/godbcbackend/sodbc.cc:458,1
    - Dst: SODBC::testResult
      Src: /src/pdns/modules/godbcbackend/sodbc.cc:460,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 15
    argCount: 4
    argNames:
    - log
    - ' dsn'
    - ' username'
    - ' password'
    argTypes:
    - Logr::log_t
    - std::string
    - std::string
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 464
      start: 424
    functionDepth: 1
    functionLinenumber: 424
    functionLinenumberEnd: 464
    functionName: SODBC::SODBC
    functionSourceFile: /src/pdns/modules/godbcbackend/sodbc.cc
    functionUses: 0
    functionsReached:
    - length
    - SODBC::testResult
    - SQLConnect
    - free
    - reinterpret_cast<SQLTCHAR*>
    - SQLAllocHandle
    - strdup
    - reinterpret_cast<void*>
    - SQLSetEnvAttr
    - c_str
    linkageType: ''
    returnType: void
    signature: "void SODBC::SODBC(\n  Logr::log_t log,\n  const std::string& dsn,\n
      \ const std::string& username,\n  const std::string& password)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SQLDisconnect
      Src: /src/pdns/modules/godbcbackend/sodbc.cc:472,1
    - Dst: SQLFreeHandle
      Src: /src/pdns/modules/godbcbackend/sodbc.cc:474,1
    - Dst: SQLFreeHandle
      Src: /src/pdns/modules/godbcbackend/sodbc.cc:475,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 483
      start: 467
    functionDepth: 0
    functionLinenumber: 467
    functionLinenumberEnd: 483
    functionName: SODBC::~SODBC()
    functionSourceFile: /src/pdns/modules/godbcbackend/sodbc.cc
    functionUses: 0
    functionsReached:
    - SQLFreeHandle
    - SQLDisconnect
    linkageType: ''
    returnType: void
    signature: void SODBC::~SODBC()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SODBCStatement::execute
      Src: /src/pdns/modules/godbcbackend/sodbc.cc:490,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' command'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 491
      start: 486
    functionDepth: 2
    functionLinenumber: 486
    functionLinenumberEnd: 491
    functionName: SODBC::execute
    functionSourceFile: /src/pdns/modules/godbcbackend/sodbc.cc
    functionUses: 0
    functionsReached:
    - SODBCStatement::execute
    linkageType: ''
    returnType: void
    signature: void SODBC::execute(const std::string& command)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - state
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 497
      start: 494
    functionDepth: 0
    functionLinenumber: 494
    functionLinenumberEnd: 497
    functionName: SODBC::setLog
    functionSourceFile: /src/pdns/modules/godbcbackend/sodbc.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void SODBC::setLog(bool state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SSqlException
      Src: /src/pdns/modules/godbcbackend/sodbc.cc:502,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' reason'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 503
      start: 500
    functionDepth: 0
    functionLinenumber: 500
    functionLinenumberEnd: 503
    functionName: SODBC::sPerrorException
    functionSourceFile: /src/pdns/modules/godbcbackend/sodbc.cc
    functionUses: 0
    functionsReached:
    - SSqlException
    linkageType: ''
    returnType: SSqlException
    signature: SSqlException SODBC::sPerrorException(const std::string& reason)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::make_unique<SODBCStatement>
      Src: /src/pdns/modules/godbcbackend/sodbc.cc:507,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' query'
    - nparams
    argTypes:
    - string
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 508
      start: 505
    functionDepth: 0
    functionLinenumber: 505
    functionLinenumberEnd: 508
    functionName: SODBC::prepare
    functionSourceFile: /src/pdns/modules/godbcbackend/sodbc.cc
    functionUses: 0
    functionsReached:
    - std::make_unique<SODBCStatement>
    linkageType: ''
    returnType: std::unique_ptr<SSqlStatement>
    signature: std::unique_ptr<SSqlStatement> SODBC::prepare(const string& query,
      int nparams)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SQLSetConnectAttr
      Src: /src/pdns/modules/godbcbackend/sodbc.cc:514,1
    - Dst: SODBC::testResult
      Src: /src/pdns/modules/godbcbackend/sodbc.cc:515,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 516
      start: 510
    functionDepth: 1
    functionLinenumber: 510
    functionLinenumberEnd: 516
    functionName: SODBC::startTransaction
    functionSourceFile: /src/pdns/modules/godbcbackend/sodbc.cc
    functionUses: 0
    functionsReached:
    - SQLSetConnectAttr
    - SODBC::testResult
    linkageType: ''
    returnType: void
    signature: void SODBC::startTransaction()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SQLEndTran
      Src: /src/pdns/modules/godbcbackend/sodbc.cc:523,1
    - Dst: SODBC::testResult
      Src: /src/pdns/modules/godbcbackend/sodbc.cc:524,1
    - Dst: SQLSetConnectAttr
      Src: /src/pdns/modules/godbcbackend/sodbc.cc:526,1
    - Dst: SODBC::testResult
      Src: /src/pdns/modules/godbcbackend/sodbc.cc:527,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 528
      start: 518
    functionDepth: 1
    functionLinenumber: 518
    functionLinenumberEnd: 528
    functionName: SODBC::commit
    functionSourceFile: /src/pdns/modules/godbcbackend/sodbc.cc
    functionUses: 0
    functionsReached:
    - SQLSetConnectAttr
    - SODBC::testResult
    - SQLEndTran
    linkageType: ''
    returnType: void
    signature: void SODBC::commit()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SQLEndTran
      Src: /src/pdns/modules/godbcbackend/sodbc.cc:535,1
    - Dst: SODBC::testResult
      Src: /src/pdns/modules/godbcbackend/sodbc.cc:536,1
    - Dst: SQLSetConnectAttr
      Src: /src/pdns/modules/godbcbackend/sodbc.cc:538,1
    - Dst: SODBC::testResult
      Src: /src/pdns/modules/godbcbackend/sodbc.cc:539,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 540
      start: 530
    functionDepth: 1
    functionLinenumber: 530
    functionLinenumberEnd: 540
    functionName: SODBC::rollback
    functionSourceFile: /src/pdns/modules/godbcbackend/sodbc.cc
    functionUses: 0
    functionsReached:
    - SQLSetConnectAttr
    - SODBC::testResult
    - SQLEndTran
    linkageType: ''
    returnType: void
    signature: void SODBC::rollback()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: realTestResult
      Src: /src/pdns/modules/godbcbackend/sodbc.cc:545,1
    - Dst: SSqlException
      Src: /src/pdns/modules/godbcbackend/sodbc.cc:546,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 3
    argCount: 4
    argNames:
    - result
    - type
    - handle
    - ' message'
    argTypes:
    - SQLRETURN
    - SQLSMALLINT
    - SQLHANDLE
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 547
      start: 542
    functionDepth: 1
    functionLinenumber: 542
    functionLinenumberEnd: 547
    functionName: SODBC::testResult
    functionSourceFile: /src/pdns/modules/godbcbackend/sodbc.cc
    functionUses: 4
    functionsReached:
    - SSqlException
    - realTestResult
    linkageType: ''
    returnType: void
    signature: void SODBC::testResult(SQLRETURN result, SQLSMALLINT type, SQLHANDLE
      handle, const std::string& message)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: withName
      Src: /src/pdns/modules/godbcbackend/godbcbackend.cc:41,1
    - Dst: setDB
      Src: /src/pdns/modules/godbcbackend/godbcbackend.cc:45,1
    - Dst: std::unique_ptr<SSql>
      Src: /src/pdns/modules/godbcbackend/godbcbackend.cc:45,1
    - Dst: getArg
      Src: /src/pdns/modules/godbcbackend/godbcbackend.cc:45,1
    - Dst: getArg
      Src: /src/pdns/modules/godbcbackend/godbcbackend.cc:45,1
    - Dst: getArg
      Src: /src/pdns/modules/godbcbackend/godbcbackend.cc:45,1
    - Dst: SODBC::SODBC
      Src: /src/pdns/modules/godbcbackend/godbcbackend.cc:45,1
    - Dst: SLOG
      Src: /src/pdns/modules/godbcbackend/godbcbackend.cc:48,1
    - Dst: txtReason
      Src: /src/pdns/modules/godbcbackend/godbcbackend.cc:48,1
    - Dst: error
      Src: /src/pdns/modules/godbcbackend/godbcbackend.cc:49,1
    - Dst: txtReason
      Src: /src/pdns/modules/godbcbackend/godbcbackend.cc:49,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/godbcbackend/godbcbackend.cc:49,1
    - Dst: PDNSException
      Src: /src/pdns/modules/godbcbackend/godbcbackend.cc:50,1
    - Dst: txtReason
      Src: /src/pdns/modules/godbcbackend/godbcbackend.cc:50,1
    - Dst: allocateStatements
      Src: /src/pdns/modules/godbcbackend/godbcbackend.cc:53,1
    - Dst: SLOG
      Src: /src/pdns/modules/godbcbackend/godbcbackend.cc:55,1
    - Dst: info
      Src: /src/pdns/modules/godbcbackend/godbcbackend.cc:56,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/godbcbackend/godbcbackend.cc:56,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 2
    argNames:
    - ' mode'
    - ' suffix'
    argTypes:
    - std::string
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 37
    functionDepth: 2
    functionLinenumber: 37
    functionLinenumberEnd: 57
    functionName: gODBCBackend::gODBCBackend
    functionSourceFile: /src/pdns/modules/godbcbackend/godbcbackend.cc
    functionUses: 0
    functionsReached:
    - allocateStatements
    - SLOG
    - Logging::Loggable
    - withName
    - PDNSException
    - getArg
    - SODBC::SODBC
    - info
    - setDB
    - error
    - txtReason
    - std::unique_ptr<SSql>
    linkageType: ''
    returnType: void
    signature: void gODBCBackend::gODBCBackend(const std::string& mode, const std::string&
      suffix)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' mode'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 64
    functionDepth: 0
    functionLinenumber: 64
    functionLinenumberEnd: 67
    functionName: gODBCFactory::gODBCFactory
    functionSourceFile: /src/pdns/modules/godbcbackend/godbcbackend.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void gODBCFactory(const std::string& mode)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: declare
      Src: /src/pdns/modules/godbcbackend/godbcbackend.cc:72,1
    - Dst: declare
      Src: /src/pdns/modules/godbcbackend/godbcbackend.cc:73,1
    - Dst: declare
      Src: /src/pdns/modules/godbcbackend/godbcbackend.cc:74,1
    - Dst: declare
      Src: /src/pdns/modules/godbcbackend/godbcbackend.cc:75,1
    - Dst: declare
      Src: /src/pdns/modules/godbcbackend/godbcbackend.cc:79,1
    - Dst: declare
      Src: /src/pdns/modules/godbcbackend/godbcbackend.cc:80,1
    - Dst: declare
      Src: /src/pdns/modules/godbcbackend/godbcbackend.cc:81,1
    - Dst: declare
      Src: /src/pdns/modules/godbcbackend/godbcbackend.cc:82,1
    - Dst: declare
      Src: /src/pdns/modules/godbcbackend/godbcbackend.cc:84,1
    - Dst: declare
      Src: /src/pdns/modules/godbcbackend/godbcbackend.cc:85,1
    - Dst: declare
      Src: /src/pdns/modules/godbcbackend/godbcbackend.cc:87,1
    - Dst: declare
      Src: /src/pdns/modules/godbcbackend/godbcbackend.cc:88,1
    - Dst: declare
      Src: /src/pdns/modules/godbcbackend/godbcbackend.cc:90,1
    - Dst: declare
      Src: /src/pdns/modules/godbcbackend/godbcbackend.cc:91,1
    - Dst: declare
      Src: /src/pdns/modules/godbcbackend/godbcbackend.cc:93,1
    - Dst: declare
      Src: /src/pdns/modules/godbcbackend/godbcbackend.cc:95,1
    - Dst: declare
      Src: /src/pdns/modules/godbcbackend/godbcbackend.cc:96,1
    - Dst: declare
      Src: /src/pdns/modules/godbcbackend/godbcbackend.cc:97,1
    - Dst: declare
      Src: /src/pdns/modules/godbcbackend/godbcbackend.cc:98,1
    - Dst: declare
      Src: /src/pdns/modules/godbcbackend/godbcbackend.cc:99,1
    - Dst: declare
      Src: /src/pdns/modules/godbcbackend/godbcbackend.cc:100,1
    - Dst: declare
      Src: /src/pdns/modules/godbcbackend/godbcbackend.cc:102,1
    - Dst: declare
      Src: /src/pdns/modules/godbcbackend/godbcbackend.cc:104,1
    - Dst: declare
      Src: /src/pdns/modules/godbcbackend/godbcbackend.cc:105,1
    - Dst: declare
      Src: /src/pdns/modules/godbcbackend/godbcbackend.cc:107,1
    - Dst: declare
      Src: /src/pdns/modules/godbcbackend/godbcbackend.cc:108,1
    - Dst: declare
      Src: /src/pdns/modules/godbcbackend/godbcbackend.cc:109,1
    - Dst: declare
      Src: /src/pdns/modules/godbcbackend/godbcbackend.cc:110,1
    - Dst: declare
      Src: /src/pdns/modules/godbcbackend/godbcbackend.cc:112,1
    - Dst: declare
      Src: /src/pdns/modules/godbcbackend/godbcbackend.cc:113,1
    - Dst: declare
      Src: /src/pdns/modules/godbcbackend/godbcbackend.cc:114,1
    - Dst: declare
      Src: /src/pdns/modules/godbcbackend/godbcbackend.cc:115,1
    - Dst: declare
      Src: /src/pdns/modules/godbcbackend/godbcbackend.cc:117,1
    - Dst: declare
      Src: /src/pdns/modules/godbcbackend/godbcbackend.cc:118,1
    - Dst: declare
      Src: /src/pdns/modules/godbcbackend/godbcbackend.cc:119,1
    - Dst: declare
      Src: /src/pdns/modules/godbcbackend/godbcbackend.cc:120,1
    - Dst: declare
      Src: /src/pdns/modules/godbcbackend/godbcbackend.cc:121,1
    - Dst: declare
      Src: /src/pdns/modules/godbcbackend/godbcbackend.cc:122,1
    - Dst: declare
      Src: /src/pdns/modules/godbcbackend/godbcbackend.cc:123,1
    - Dst: declare
      Src: /src/pdns/modules/godbcbackend/godbcbackend.cc:124,1
    - Dst: declare
      Src: /src/pdns/modules/godbcbackend/godbcbackend.cc:125,1
    - Dst: declare
      Src: /src/pdns/modules/godbcbackend/godbcbackend.cc:126,1
    - Dst: declare
      Src: /src/pdns/modules/godbcbackend/godbcbackend.cc:127,1
    - Dst: declare
      Src: /src/pdns/modules/godbcbackend/godbcbackend.cc:128,1
    - Dst: declare
      Src: /src/pdns/modules/godbcbackend/godbcbackend.cc:129,1
    - Dst: declare
      Src: /src/pdns/modules/godbcbackend/godbcbackend.cc:130,1
    - Dst: declare
      Src: /src/pdns/modules/godbcbackend/godbcbackend.cc:132,1
    - Dst: declare
      Src: /src/pdns/modules/godbcbackend/godbcbackend.cc:133,1
    - Dst: declare
      Src: /src/pdns/modules/godbcbackend/godbcbackend.cc:134,1
    - Dst: declare
      Src: /src/pdns/modules/godbcbackend/godbcbackend.cc:135,1
    - Dst: declare
      Src: /src/pdns/modules/godbcbackend/godbcbackend.cc:136,1
    - Dst: declare
      Src: /src/pdns/modules/godbcbackend/godbcbackend.cc:137,1
    - Dst: declare
      Src: /src/pdns/modules/godbcbackend/godbcbackend.cc:138,1
    - Dst: declare
      Src: /src/pdns/modules/godbcbackend/godbcbackend.cc:139,1
    - Dst: declare
      Src: /src/pdns/modules/godbcbackend/godbcbackend.cc:140,1
    - Dst: declare
      Src: /src/pdns/modules/godbcbackend/godbcbackend.cc:141,1
    - Dst: declare
      Src: /src/pdns/modules/godbcbackend/godbcbackend.cc:142,1
    - Dst: declare
      Src: /src/pdns/modules/godbcbackend/godbcbackend.cc:143,1
    - Dst: declare
      Src: /src/pdns/modules/godbcbackend/godbcbackend.cc:144,1
    - Dst: declare
      Src: /src/pdns/modules/godbcbackend/godbcbackend.cc:145,1
    - Dst: declare
      Src: /src/pdns/modules/godbcbackend/godbcbackend.cc:146,1
    - Dst: declare
      Src: /src/pdns/modules/godbcbackend/godbcbackend.cc:150,1
    - Dst: declare
      Src: /src/pdns/modules/godbcbackend/godbcbackend.cc:151,1
    - Dst: declare
      Src: /src/pdns/modules/godbcbackend/godbcbackend.cc:152,1
    - Dst: declare
      Src: /src/pdns/modules/godbcbackend/godbcbackend.cc:154,1
    - Dst: declare
      Src: /src/pdns/modules/godbcbackend/godbcbackend.cc:156,1
    - Dst: declare
      Src: /src/pdns/modules/godbcbackend/godbcbackend.cc:157,1
    - Dst: declare
      Src: /src/pdns/modules/godbcbackend/godbcbackend.cc:158,1
    - Dst: declare
      Src: /src/pdns/modules/godbcbackend/godbcbackend.cc:159,1
    - Dst: declare
      Src: /src/pdns/modules/godbcbackend/godbcbackend.cc:160,1
    - Dst: declare
      Src: /src/pdns/modules/godbcbackend/godbcbackend.cc:161,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 72
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 162
      start: 70
    functionDepth: 0
    functionLinenumber: 70
    functionLinenumberEnd: 162
    functionName: gODBCFactory::declareArguments
    functionSourceFile: /src/pdns/modules/godbcbackend/godbcbackend.cc
    functionUses: 0
    functionsReached:
    - declare
    linkageType: ''
    returnType: void
    signature: void declareArguments(const std::string& suffix = "") override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: gODBCBackend::gODBCBackend
      Src: /src/pdns/modules/godbcbackend/godbcbackend.cc:167,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 168
      start: 165
    functionDepth: 3
    functionLinenumber: 165
    functionLinenumberEnd: 168
    functionName: gODBCFactory::make
    functionSourceFile: /src/pdns/modules/godbcbackend/godbcbackend.cc
    functionUses: 0
    functionsReached:
    - gODBCBackend::gODBCBackend
    linkageType: ''
    returnType: DNSBackend
    signature: DNSBackend * make(const string& suffix = "") override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BackendMakers
      Src: /src/pdns/modules/godbcbackend/godbcbackend.cc:181,1
    - Dst: std::make_unique<gODBCFactory>
      Src: /src/pdns/modules/godbcbackend/godbcbackend.cc:181,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 186
      start: 179
    functionDepth: 1
    functionLinenumber: 179
    functionLinenumberEnd: 186
    functionName: gODBCLoader::gODBCLoader
    functionSourceFile: /src/pdns/modules/godbcbackend/godbcbackend.cc
    functionUses: 0
    functionsReached:
    - BackendMakers
    - std::make_unique<gODBCFactory>
    linkageType: ''
    returnType: void
    signature: void gODBCLoader()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: arg
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:71,1
    - Dst: setArgPrefix
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:72,1
    - Dst: mustDo
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:73,1
    - Dst: prepareContext
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:74,1
    - Dst: loadFile
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:75,1
    - Dst: getArg
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:75,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - slog
    - ' suffix'
    argTypes:
    - Logr::log_t
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 68
    functionDepth: 0
    functionLinenumber: 68
    functionLinenumberEnd: 76
    functionName: Lua2BackendAPIv2::Lua2BackendAPIv2
    functionSourceFile: /src/pdns/modules/lua2backend/lua2api2.hh
    functionUses: 0
    functionsReached:
    - getArg
    - prepareContext
    - loadFile
    - setArgPrefix
    - mustDo
    - arg
    linkageType: ''
    returnType: void
    signature: void Lua2BackendAPIv2(Logr::log_t slog, const string& suffix)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: AuthLua4::postPrepareContext
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:82,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 80
    functionDepth: 2
    functionLinenumber: 80
    functionLinenumberEnd: 83
    functionName: Lua2BackendAPIv2::postPrepareContext
    functionSourceFile: /src/pdns/modules/lua2backend/lua2api2.hh
    functionUses: 0
    functionsReached:
    - AuthLua4::postPrepareContext
    linkageType: ''
    returnType: void
    signature: void postPrepareContext() override
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: readVariable
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:87,1
    - Dst: readVariable
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:88,1
    - Dst: readVariable
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:89,1
    - Dst: readVariable
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:90,1
    - Dst: readVariable
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:91,1
    - Dst: readVariable
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:92,1
    - Dst: readVariable
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:93,1
    - Dst: readVariable
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:94,1
    - Dst: readVariable
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:95,1
    - Dst: readVariable
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:97,1
    - Dst: init
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:99,1
    - Dst: readVariable
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:102,1
    - Dst: PDNSException
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:105,1
    - Dst: readVariable
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:109,1
    - Dst: PDNSException
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:112,1
    - Dst: PDNSException
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:115,1
    - Dst: SLOG
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:119,1
    - Dst: info
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:120,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 29
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 85
    functionDepth: 0
    functionLinenumber: 85
    functionLinenumberEnd: 123
    functionName: Lua2BackendAPIv2::postLoad
    functionSourceFile: /src/pdns/modules/lua2backend/lua2api2.hh
    functionUses: 0
    functionsReached:
    - SLOG
    - init
    - PDNSException
    - info
    - readVariable
    linkageType: ''
    returnType: void
    signature: void postLoad() override
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 135
      start: 125
    functionDepth: 0
    functionLinenumber: 125
    functionLinenumberEnd: 135
    functionName: Lua2BackendAPIv2::getCapabilities
    functionSourceFile: /src/pdns/modules/lua2backend/lua2api2.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int getCapabilities() override
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: second::which
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:143,1
    - Dst: QType
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:144,1
    - Dst: boost::get<int>
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:144,1
    - Dst: second::which
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:146,1
    - Dst: boost::get<string>
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:147,1
    - Dst: second::which
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:149,1
    - Dst: boost::get<QType>
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:150,1
    - Dst: PDNSException
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:153,1
    - Dst: second::which
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:157,1
    - Dst: DNSName
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:158,1
    - Dst: boost::get<string>
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:158,1
    - Dst: second::which
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:160,1
    - Dst: boost::get<DNSName>
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:161,1
    - Dst: PDNSException
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:164,1
    - Dst: boost::get<int>
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:168,1
    - Dst: boost::get<bool>
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:171,1
    - Dst: static_cast<time_t>
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:174,1
    - Dst: boost::get<int>
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:174,1
    - Dst: boost::get<int>
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:177,1
    - Dst: DNSResourceRecord::setContent
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:180,1
    - Dst: boost::get<string>
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:180,1
    - Dst: boost::get<int>
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:183,1
    - Dst: SLOG
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:186,1
    - Dst: info
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:187,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:187,1
    - Dst: SLOG
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:191,1
    - Dst: getPrefix
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:191,1
    - Dst: DNSResourceRecord::qtype::toString
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:191,1
    - Dst: DNSResourceRecord::getZoneRepresentation
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:191,1
    - Dst: info
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:192,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:192,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:192,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:192,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:192,1
    - Dst: DNSResourceRecord::getZoneRepresentation
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:192,1
    - Dst: push_back
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:194,1
    - Dst: empty
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:196,1
    - Dst: SLOG
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:197,1
    - Dst: getPrefix
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:197,1
    - Dst: info
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:198,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 53
    argCount: 1
    argNames:
    - ' result'
    argTypes:
    - lookup_result_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 200
      start: 137
    functionDepth: 0
    functionLinenumber: 137
    functionLinenumberEnd: 200
    functionName: Lua2BackendAPIv2::parseLookup
    functionSourceFile: /src/pdns/modules/lua2backend/lua2api2.hh
    functionUses: 0
    functionsReached:
    - boost::get<QType>
    - PDNSException
    - DNSResourceRecord::getZoneRepresentation
    - static_cast<time_t>
    - getPrefix
    - second::which
    - SLOG
    - boost::get<string>
    - Logging::Loggable
    - DNSResourceRecord::qtype::toString
    - QType
    - empty
    - boost::get<DNSName>
    - push_back
    - boost::get<int>
    - DNSName
    - DNSResourceRecord::setContent
    - info
    - boost::get<bool>
    linkageType: ''
    returnType: void
    signature: void parseLookup(const lookup_result_t& result)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: SLOG
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:205,1
    - Dst: getPrefix
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:205,1
    - Dst: info
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:206,1
    - Dst: size
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:210,1
    - Dst: PDNSException
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:211,1
    - Dst: SLOG
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:215,1
    - Dst: getPrefix
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:215,1
    - Dst: info
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:216,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:216,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:216,1
    - Dst: f_list
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:218,1
    - Dst: list_result_t::which
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:220,1
    - Dst: Lua2BackendAPIv2::parseLookup
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:224,1
    - Dst: boost::get<lookup_result_t>
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:224,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 2
    argNames:
    - ' target'
    - domain_id
    argTypes:
    - ZoneName
    - domainid_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 227
      start: 202
    functionDepth: 1
    functionLinenumber: 202
    functionLinenumberEnd: 227
    functionName: Lua2BackendAPIv2::list
    functionSourceFile: /src/pdns/modules/lua2backend/lua2api2.hh
    functionUses: 0
    functionsReached:
    - SLOG
    - Logging::Loggable
    - PDNSException
    - f_list
    - Lua2BackendAPIv2::parseLookup
    - info
    - size
    - boost::get<lookup_result_t>
    - getPrefix
    - list_result_t::which
    linkageType: ''
    returnType: bool
    signature: bool list(const ZoneName& target, domainid_t domain_id, bool /* include_disabled
      */ = false) override
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:231,1
    - Dst: PDNSException
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:232,1
    - Dst: lookup_context_t::emplace_back
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:237,1
    - Dst: getInnerRemote
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:237,1
    - Dst: lookup_context_t::emplace_back
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:238,1
    - Dst: getRealRemote
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:238,1
    - Dst: SLOG
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:242,1
    - Dst: getPrefix
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:242,1
    - Dst: toString
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:242,1
    - Dst: info
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:243,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:243,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:243,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:243,1
    - Dst: f_lookup
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:245,1
    - Dst: Lua2BackendAPIv2::parseLookup
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:246,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 3
    argNames:
    - ' qtype'
    - ' qname'
    - domain_id
    argTypes:
    - QType
    - DNSName
    - domainid_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 247
      start: 229
    functionDepth: 1
    functionLinenumber: 229
    functionLinenumberEnd: 247
    functionName: Lua2BackendAPIv2::lookup
    functionSourceFile: /src/pdns/modules/lua2backend/lua2api2.hh
    functionUses: 0
    functionsReached:
    - SLOG
    - toString
    - f_lookup
    - Logging::Loggable
    - PDNSException
    - getRealRemote
    - Lua2BackendAPIv2::parseLookup
    - info
    - size
    - getInnerRemote
    - lookup_context_t::emplace_back
    - getPrefix
    linkageType: ''
    returnType: void
    signature: void lookup(const QType& qtype, const DNSName& qname, domainid_t domain_id,
      DNSPacket* p = nullptr) override
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:251,1
    - Dst: std::move
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:254,1
    - Dst: front
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:254,1
    - Dst: pop_front
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:255,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - ' rr'
    argTypes:
    - DNSResourceRecord
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 257
      start: 249
    functionDepth: 0
    functionLinenumber: 249
    functionLinenumberEnd: 257
    functionName: Lua2BackendAPIv2::get
    functionSourceFile: /src/pdns/modules/lua2backend/lua2api2.hh
    functionUses: 0
    functionsReached:
    - front
    - std::move
    - pop_front
    - size
    linkageType: ''
    returnType: bool
    signature: bool get(DNSResourceRecord& rr) override
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: find_first_of
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:261,1
    - Dst: substr
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:265,1
    - Dst: substr
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:266,1
    - Dst: readVariable
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:268,1
    - Dst: SLOG
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:273,1
    - Dst: getPrefix
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:273,1
    - Dst: info
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:274,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:274,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:274,1
    - Dst: f
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:276,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - ' querystr'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 277
      start: 259
    functionDepth: 0
    functionLinenumber: 259
    functionLinenumberEnd: 277
    functionName: Lua2BackendAPIv2::directBackendCmd
    functionSourceFile: /src/pdns/modules/lua2backend/lua2api2.hh
    functionUses: 0
    functionsReached:
    - SLOG
    - Logging::Loggable
    - info
    - find_first_of
    - substr
    - getPrefix
    - readVariable
    - f
    linkageType: ''
    returnType: string
    signature: string directBackendCmd(const string& querystr) override
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: SLOG
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:285,1
    - Dst: getPrefix
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:285,1
    - Dst: info
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:286,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:286,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:286,1
    - Dst: f_set_notified
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:288,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - id
    - serial
    argTypes:
    - domainid_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 289
      start: 279
    functionDepth: 0
    functionLinenumber: 279
    functionLinenumberEnd: 289
    functionName: Lua2BackendAPIv2::setNotified
    functionSourceFile: /src/pdns/modules/lua2backend/lua2api2.hh
    functionUses: 0
    functionsReached:
    - SLOG
    - Logging::Loggable
    - f_set_notified
    - info
    - getPrefix
    linkageType: ''
    returnType: void
    signature: void setNotified(domainid_t id, uint32_t serial) override
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: boost::get<string>
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:296,1
    - Dst: static_cast<time_t>
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:299,1
    - Dst: boost::get<long>
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:299,1
    - Dst: boost::get<vector<string>>
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:302,1
    - Dst: primaries::push_back
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:303,1
    - Dst: ComboAddress
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:303,1
    - Dst: static_cast<domainid_t>
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:307,1
    - Dst: boost::get<long>
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:307,1
    - Dst: static_cast<unsigned int>
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:310,1
    - Dst: boost::get<long>
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:310,1
    - Dst: static_cast<unsigned int>
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:313,1
    - Dst: boost::get<long>
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:313,1
    - Dst: stringToKind
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:316,1
    - Dst: boost::get<string>
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:316,1
    - Dst: SLOG
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:319,1
    - Dst: info
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:320,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:320,1
    - Dst: SLOG
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:325,1
    - Dst: getPrefix
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:325,1
    - Dst: getKindString
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:325,1
    - Dst: info
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:326,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:326,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:326,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:326,1
    - Dst: getKindString
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:326,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 31
    argCount: 2
    argNames:
    - ' row'
    - ' di'
    argTypes:
    - domaininfo_result_t
    - DomainInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 328
      start: 291
    functionDepth: 0
    functionLinenumber: 291
    functionLinenumberEnd: 328
    functionName: Lua2BackendAPIv2::parseDomainInfo
    functionSourceFile: /src/pdns/modules/lua2backend/lua2api2.hh
    functionUses: 0
    functionsReached:
    - stringToKind
    - SLOG
    - boost::get<string>
    - boost::get<vector<string>>
    - Logging::Loggable
    - getPrefix
    - info
    - static_cast<unsigned int>
    - static_cast<domainid_t>
    - getKindString
    - static_cast<time_t>
    - boost::get<long>
    - primaries::push_back
    - ComboAddress
    linkageType: ''
    returnType: void
    signature: void parseDomainInfo(const domaininfo_result_t& row, DomainInfo& di)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: hasVariant
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:336,1
    - Dst: SLOG
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:337,1
    - Dst: toLogString
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:337,1
    - Dst: info
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:338,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:338,1
    - Dst: getAuth
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:342,1
    - Dst: SLOG
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:354,1
    - Dst: getPrefix
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:354,1
    - Dst: info
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:355,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:355,1
    - Dst: f_get_domaininfo
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:357,1
    - Dst: get_domaininfo_result_t::which
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:359,1
    - Dst: Lua2BackendAPIv2::parseDomainInfo
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:364,1
    - Dst: boost::get<domaininfo_result_t>
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:364,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 24
    argCount: 2
    argNames:
    - ' domain'
    - ' di'
    argTypes:
    - ZoneName
    - DomainInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 367
      start: 330
    functionDepth: 2
    functionLinenumber: 330
    functionLinenumberEnd: 367
    functionName: Lua2BackendAPIv2::getDomainInfo
    functionSourceFile: /src/pdns/modules/lua2backend/lua2api2.hh
    functionUses: 0
    functionsReached:
    - toLogString
    - SLOG
    - Logging::Loggable
    - info
    - hasVariant
    - Lua2BackendAPIv2::parseDomainInfo
    - boost::get<domaininfo_result_t>
    - f_get_domaininfo
    - get_domaininfo_result_t::which
    - getPrefix
    - getAuth
    linkageType: ''
    returnType: bool
    signature: bool getDomainInfo(const ZoneName& domain, DomainInfo& di, bool /*
      getSerial */ = true) override
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: SLOG
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:376,1
    - Dst: getPrefix
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:376,1
    - Dst: info
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:377,1
    - Dst: f_get_all_domains
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:379,1
    - Dst: ZoneName
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:381,1
    - Dst: SLOG
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:383,1
    - Dst: getPrefix
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:383,1
    - Dst: info
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:384,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:384,1
    - Dst: Lua2BackendAPIv2::parseDomainInfo
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:386,1
    - Dst: vector<DomainInfo>*::push_back
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:387,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 1
    argNames:
    - domains
    argTypes:
    - vector<DomainInfo>*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 389
      start: 369
    functionDepth: 1
    functionLinenumber: 369
    functionLinenumberEnd: 389
    functionName: Lua2BackendAPIv2::getAllDomains
    functionSourceFile: /src/pdns/modules/lua2backend/lua2api2.hh
    functionUses: 0
    functionsReached:
    - vector<DomainInfo>*::push_back
    - SLOG
    - f_get_all_domains
    - Logging::Loggable
    - info
    - Lua2BackendAPIv2::parseDomainInfo
    - ZoneName
    - getPrefix
    linkageType: ''
    returnType: void
    signature: void getAllDomains(vector<DomainInfo>* domains, bool /* getSerial */,
      bool /* include_disabled */) override
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: SLOG
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:398,1
    - Dst: getPrefix
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:398,1
    - Dst: info
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:399,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:399,1
    - Dst: f_get_all_domain_metadata
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:401,1
    - Dst: get_all_domain_metadata_result_t::which
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:402,1
    - Dst: boost::get<vector<pair<string, domain_metadata_result_t>>>
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:406,1
    - Dst: clear
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:407,1
    - Dst: push_back
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:409,1
    - Dst: SLOG
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:412,1
    - Dst: getPrefix
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:412,1
    - Dst: boost::algorithm::join
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:412,1
    - Dst: info
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:413,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:413,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:413,1
    - Dst: boost::algorithm::join
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:413,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 2
    argNames:
    - ' name'
    - ' meta'
    argTypes:
    - ZoneName
    - std::map<std::string, std::vector<std::string>>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 418
      start: 391
    functionDepth: 1
    functionLinenumber: 391
    functionLinenumberEnd: 418
    functionName: Lua2BackendAPIv2::getAllDomainMetadata
    functionSourceFile: /src/pdns/modules/lua2backend/lua2api2.hh
    functionUses: 0
    functionsReached:
    - SLOG
    - Logging::Loggable
    - push_back
    - boost::get<vector<pair<string, domain_metadata_result_t>>>
    - f_get_all_domain_metadata
    - info
    - get_all_domain_metadata_result_t::which
    - boost::algorithm::join
    - clear
    - getPrefix
    linkageType: ''
    returnType: bool
    signature: bool getAllDomainMetadata(const ZoneName& name, std::map<std::string,
      std::vector<std::string>>& meta) override
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: SLOG
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:427,1
    - Dst: getPrefix
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:427,1
    - Dst: info
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:428,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:428,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:428,1
    - Dst: f_get_domain_metadata
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:430,1
    - Dst: get_domain_metadata_result_t::which
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:431,1
    - Dst: clear
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:435,1
    - Dst: boost::get<domain_metadata_result_t>
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:436,1
    - Dst: push_back
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:437,1
    - Dst: SLOG
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:441,1
    - Dst: getPrefix
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:441,1
    - Dst: boost::algorithm::join
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:441,1
    - Dst: info
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:442,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:442,1
    - Dst: boost::algorithm::join
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:442,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 3
    argNames:
    - ' name'
    - ' kind'
    - ' meta'
    argTypes:
    - ZoneName
    - std::string
    - std::vector<std::string>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 445
      start: 420
    functionDepth: 1
    functionLinenumber: 420
    functionLinenumberEnd: 445
    functionName: Lua2BackendAPIv2::getDomainMetadata
    functionSourceFile: /src/pdns/modules/lua2backend/lua2api2.hh
    functionUses: 0
    functionsReached:
    - boost::get<domain_metadata_result_t>
    - SLOG
    - f_get_domain_metadata
    - Logging::Loggable
    - push_back
    - info
    - boost::algorithm::join
    - clear
    - getPrefix
    - get_domain_metadata_result_t::which
    linkageType: ''
    returnType: bool
    signature: bool getDomainMetadata(const ZoneName& name, const std::string& kind,
      std::vector<std::string>& meta) override
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: SLOG
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:454,1
    - Dst: getPrefix
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:454,1
    - Dst: info
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:455,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:455,1
    - Dst: f_get_domain_keys
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:457,1
    - Dst: get_domain_keys_result_t::which
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:459,1
    - Dst: boost::get<vector<pair<int, keydata_result_t>>>
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:463,1
    - Dst: boost::get<string>
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:468,1
    - Dst: static_cast<unsigned int>
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:471,1
    - Dst: boost::get<int>
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:471,1
    - Dst: static_cast<unsigned int>
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:474,1
    - Dst: boost::get<int>
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:474,1
    - Dst: boost::get<bool>
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:477,1
    - Dst: boost::get<bool>
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:480,1
    - Dst: SLOG
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:483,1
    - Dst: getPrefix
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:483,1
    - Dst: info
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:484,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:484,1
    - Dst: SLOG
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:488,1
    - Dst: getPrefix
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:488,1
    - Dst: info
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:489,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:489,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:489,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:489,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:489,1
    - Dst: emplace_back
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:491,1
    - Dst: std::move
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:491,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 35
    argCount: 2
    argNames:
    - ' name'
    - ' keys'
    argTypes:
    - ZoneName
    - std::vector<DNSBackend::KeyData>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 495
      start: 447
    functionDepth: 0
    functionLinenumber: 447
    functionLinenumberEnd: 495
    functionName: Lua2BackendAPIv2::getDomainKeys
    functionSourceFile: /src/pdns/modules/lua2backend/lua2api2.hh
    functionUses: 0
    functionsReached:
    - std::move
    - SLOG
    - boost::get<string>
    - f_get_domain_keys
    - Logging::Loggable
    - get_domain_keys_result_t::which
    - info
    - boost::get<int>
    - boost::get<bool>
    - static_cast<unsigned int>
    - emplace_back
    - getPrefix
    - boost::get<vector<pair<int, keydata_result_t>>>
    linkageType: ''
    returnType: bool
    signature: bool getDomainKeys(const ZoneName& name, std::vector<DNSBackend::KeyData>&
      keys) override
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: SLOG
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:504,1
    - Dst: getPrefix
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:504,1
    - Dst: info
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:505,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:505,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:505,1
    - Dst: f_get_before_and_after_names_absolute
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:507,1
    - Dst: get_before_and_after_names_absolute_result_t::which
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:509,1
    - Dst: boost::get<before_and_after_names_result_t>
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:513,1
    - Dst: before_and_after_names_result_t::size
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:514,1
    - Dst: SLOG
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:515,1
    - Dst: before_and_after_names_result_t::size
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:515,1
    - Dst: info
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:516,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:516,1
    - Dst: before_and_after_names_result_t::size
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:516,1
    - Dst: DNSName::DNSName
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:520,1
    - Dst: second::which
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:521,1
    - Dst: DNSName
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:522,1
    - Dst: boost::get<string>
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:522,1
    - Dst: DNSName
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:525,1
    - Dst: boost::get<DNSName>
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:525,1
    - Dst: SLOG
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:537,1
    - Dst: info
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:538,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:538,1
    - Dst: SLOG
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:544,1
    - Dst: getPrefix
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:544,1
    - Dst: info
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:545,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:545,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:545,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/lua2backend/lua2api2.hh:545,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 36
    argCount: 5
    argNames:
    - id
    - ' qname'
    - ' unhashed'
    - ' before'
    - ' after'
    argTypes:
    - domainid_t
    - DNSName
    - DNSName
    - DNSName
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 548
      start: 497
    functionDepth: 0
    functionLinenumber: 497
    functionLinenumberEnd: 548
    functionName: Lua2BackendAPIv2::getBeforeAndAfterNamesAbsolute
    functionSourceFile: /src/pdns/modules/lua2backend/lua2api2.hh
    functionUses: 0
    functionsReached:
    - second::which
    - SLOG
    - before_and_after_names_result_t::size
    - boost::get<string>
    - Logging::Loggable
    - f_get_before_and_after_names_absolute
    - boost::get<before_and_after_names_result_t>
    - info
    - DNSName
    - get_before_and_after_names_absolute_result_t::which
    - DNSName::DNSName
    - getPrefix
    - boost::get<DNSName>
    linkageType: ''
    returnType: bool
    signature: bool getBeforeAndAfterNamesAbsolute(domainid_t id, const DNSName& qname,
      DNSName& unhashed, DNSName& before, DNSName& after) override
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: f_deinit
      Src: /src/pdns/modules/lua2backend/lua2api2.cc:30,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 31
      start: 27
    functionDepth: 0
    functionLinenumber: 27
    functionLinenumberEnd: 31
    functionName: Lua2BackendAPIv2::~Lua2BackendAPIv2()
    functionSourceFile: /src/pdns/modules/lua2backend/lua2api2.cc
    functionUses: 0
    functionsReached:
    - f_deinit
    linkageType: ''
    returnType: void
    signature: void Lua2BackendAPIv2::~Lua2BackendAPIv2()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 33
      start: 32
    functionDepth: 0
    functionLinenumber: 32
    functionLinenumberEnd: 33
    functionName: Lua2Factory::Lua2Factory
    functionSourceFile: /src/pdns/modules/lua2backend/lua2backend.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Lua2Factory()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: declare
      Src: /src/pdns/modules/lua2backend/lua2backend.cc:37,1
    - Dst: declare
      Src: /src/pdns/modules/lua2backend/lua2backend.cc:38,1
    - Dst: declare
      Src: /src/pdns/modules/lua2backend/lua2backend.cc:39,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 35
    functionDepth: 0
    functionLinenumber: 35
    functionLinenumberEnd: 40
    functionName: Lua2Factory::declareArguments
    functionSourceFile: /src/pdns/modules/lua2backend/lua2backend.cc
    functionUses: 0
    functionsReached:
    - declare
    linkageType: ''
    returnType: void
    signature: void declareArguments(const string& suffix = "") override
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: arg
      Src: /src/pdns/modules/lua2backend/lua2backend.cc:45,1
    - Dst: PDNSException
      Src: /src/pdns/modules/lua2backend/lua2backend.cc:50,1
    - Dst: withName
      Src: /src/pdns/modules/lua2backend/lua2backend.cc:53,1
    - Dst: Lua2BackendAPIv2::Lua2BackendAPIv2
      Src: /src/pdns/modules/lua2backend/lua2backend.cc:55,1
    - Dst: PDNSException
      Src: /src/pdns/modules/lua2backend/lua2backend.cc:58,1
    - Dst: arg
      Src: /src/pdns/modules/lua2backend/lua2backend.cc:58,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 42
    functionDepth: 1
    functionLinenumber: 42
    functionLinenumberEnd: 61
    functionName: Lua2Factory::make
    functionSourceFile: /src/pdns/modules/lua2backend/lua2backend.cc
    functionUses: 0
    functionsReached:
    - PDNSException
    - Lua2BackendAPIv2::Lua2BackendAPIv2
    - arg
    - withName
    linkageType: ''
    returnType: DNSBackend
    signature: DNSBackend * make(const string& suffix = "") override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BackendMakers
      Src: /src/pdns/modules/lua2backend/lua2backend.cc:69,1
    - Dst: std::make_unique<Lua2Factory>
      Src: /src/pdns/modules/lua2backend/lua2backend.cc:69,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 67
    functionDepth: 1
    functionLinenumber: 67
    functionLinenumberEnd: 79
    functionName: Lua2Loader::Lua2Loader
    functionSourceFile: /src/pdns/modules/lua2backend/lua2backend.cc
    functionUses: 0
    functionsReached:
    - BackendMakers
    - std::make_unique<Lua2Factory>
    linkageType: ''
    returnType: void
    signature: void Lua2Loader()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: string
      Src: /src/pdns/modules/geoipbackend/geoipinterface-mmdb.cc:49,1
    - Dst: memset
      Src: /src/pdns/modules/geoipbackend/geoipinterface-mmdb.cc:50,1
    - Dst: MMDB_open
      Src: /src/pdns/modules/geoipbackend/geoipinterface-mmdb.cc:51,1
    - Dst: c_str
      Src: /src/pdns/modules/geoipbackend/geoipinterface-mmdb.cc:51,1
    - Dst: PDNSException
      Src: /src/pdns/modules/geoipbackend/geoipinterface-mmdb.cc:52,1
    - Dst: string
      Src: /src/pdns/modules/geoipbackend/geoipinterface-mmdb.cc:52,1
    - Dst: string
      Src: /src/pdns/modules/geoipbackend/geoipinterface-mmdb.cc:52,1
    - Dst: string
      Src: /src/pdns/modules/geoipbackend/geoipinterface-mmdb.cc:52,1
    - Dst: MMDB_strerror
      Src: /src/pdns/modules/geoipbackend/geoipinterface-mmdb.cc:52,1
    - Dst: SLOG
      Src: /src/pdns/modules/geoipbackend/geoipinterface-mmdb.cc:54,1
    - Dst: info
      Src: /src/pdns/modules/geoipbackend/geoipinterface-mmdb.cc:55,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/geoipbackend/geoipinterface-mmdb.cc:55,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/geoipbackend/geoipinterface-mmdb.cc:55,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/geoipbackend/geoipinterface-mmdb.cc:55,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/geoipbackend/geoipinterface-mmdb.cc:55,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 4
    argNames:
    - slog
    - ' fname'
    - ' modeStr'
    - ' language'
    argTypes:
    - Logr::log_t
    - string
    - string
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 36
    functionDepth: 0
    functionLinenumber: 36
    functionLinenumberEnd: 56
    functionName: GeoIPInterfaceMMDB::GeoIPInterfaceMMDB
    functionSourceFile: /src/pdns/modules/geoipbackend/geoipinterface-mmdb.cc
    functionUses: 0
    functionsReached:
    - SLOG
    - MMDB_strerror
    - Logging::Loggable
    - PDNSException
    - string
    - info
    - memset
    - c_str
    - MMDB_open
    linkageType: ''
    returnType: void
    signature: void GeoIPInterfaceMMDB(Logr::log_t slog, const string& fname, const
      string& modeStr, const string& language)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: GeoIPInterfaceMMDB::mmdbLookup
      Src: /src/pdns/modules/geoipbackend/geoipinterface-mmdb.cc:62,1
    - Dst: MMDB_get_value
      Src: /src/pdns/modules/geoipbackend/geoipinterface-mmdb.cc:64,1
    - Dst: string
      Src: /src/pdns/modules/geoipbackend/geoipinterface-mmdb.cc:66,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 3
    argNames:
    - ' ret'
    - ' gl'
    - ' ip'
    argTypes:
    - string
    - GeoIPNetmask
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 58
    functionDepth: 1
    functionLinenumber: 58
    functionLinenumberEnd: 68
    functionName: GeoIPInterfaceMMDB::queryCountry
    functionSourceFile: /src/pdns/modules/geoipbackend/geoipinterface-mmdb.cc
    functionUses: 0
    functionsReached:
    - string
    - MMDB_get_value
    - GeoIPInterfaceMMDB::mmdbLookup
    linkageType: ''
    returnType: bool
    signature: bool queryCountry(string& ret, GeoIPNetmask& gl, const string& ip)
      override
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: GeoIPInterfaceMMDB::mmdbLookup
      Src: /src/pdns/modules/geoipbackend/geoipinterface-mmdb.cc:74,1
    - Dst: MMDB_get_value
      Src: /src/pdns/modules/geoipbackend/geoipinterface-mmdb.cc:76,1
    - Dst: string
      Src: /src/pdns/modules/geoipbackend/geoipinterface-mmdb.cc:78,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 3
    argNames:
    - ' ret'
    - ' gl'
    - ' ip'
    argTypes:
    - string
    - GeoIPNetmask
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 70
    functionDepth: 1
    functionLinenumber: 70
    functionLinenumberEnd: 80
    functionName: GeoIPInterfaceMMDB::queryCountryV6
    functionSourceFile: /src/pdns/modules/geoipbackend/geoipinterface-mmdb.cc
    functionUses: 0
    functionsReached:
    - string
    - MMDB_get_value
    - GeoIPInterfaceMMDB::mmdbLookup
    linkageType: ''
    returnType: bool
    signature: bool queryCountryV6(string& ret, GeoIPNetmask& gl, const string& ip)
      override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: GeoIPInterfaceMMDB::queryCountry
      Src: /src/pdns/modules/geoipbackend/geoipinterface-mmdb.cc:84,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' ret'
    - ' gl'
    - ' ip'
    argTypes:
    - string
    - GeoIPNetmask
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 82
    functionDepth: 2
    functionLinenumber: 82
    functionLinenumberEnd: 85
    functionName: GeoIPInterfaceMMDB::queryCountry2
    functionSourceFile: /src/pdns/modules/geoipbackend/geoipinterface-mmdb.cc
    functionUses: 0
    functionsReached:
    - GeoIPInterfaceMMDB::queryCountry
    linkageType: ''
    returnType: bool
    signature: bool queryCountry2(string& ret, GeoIPNetmask& gl, const string& ip)
      override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: GeoIPInterfaceMMDB::queryCountryV6
      Src: /src/pdns/modules/geoipbackend/geoipinterface-mmdb.cc:89,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' ret'
    - ' gl'
    - ' ip'
    argTypes:
    - string
    - GeoIPNetmask
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 87
    functionDepth: 2
    functionLinenumber: 87
    functionLinenumberEnd: 90
    functionName: GeoIPInterfaceMMDB::queryCountry2V6
    functionSourceFile: /src/pdns/modules/geoipbackend/geoipinterface-mmdb.cc
    functionUses: 0
    functionsReached:
    - GeoIPInterfaceMMDB::queryCountryV6
    linkageType: ''
    returnType: bool
    signature: bool queryCountry2V6(string& ret, GeoIPNetmask& gl, const string& ip)
      override
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: GeoIPInterfaceMMDB::mmdbLookup
      Src: /src/pdns/modules/geoipbackend/geoipinterface-mmdb.cc:96,1
    - Dst: MMDB_get_value
      Src: /src/pdns/modules/geoipbackend/geoipinterface-mmdb.cc:98,1
    - Dst: string
      Src: /src/pdns/modules/geoipbackend/geoipinterface-mmdb.cc:100,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 3
    argNames:
    - ' ret'
    - ' gl'
    - ' ip'
    argTypes:
    - string
    - GeoIPNetmask
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 92
    functionDepth: 1
    functionLinenumber: 92
    functionLinenumberEnd: 102
    functionName: GeoIPInterfaceMMDB::queryContinent
    functionSourceFile: /src/pdns/modules/geoipbackend/geoipinterface-mmdb.cc
    functionUses: 0
    functionsReached:
    - string
    - MMDB_get_value
    - GeoIPInterfaceMMDB::mmdbLookup
    linkageType: ''
    returnType: bool
    signature: bool queryContinent(string& ret, GeoIPNetmask& gl, const string& ip)
      override
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: GeoIPInterfaceMMDB::mmdbLookup
      Src: /src/pdns/modules/geoipbackend/geoipinterface-mmdb.cc:108,1
    - Dst: MMDB_get_value
      Src: /src/pdns/modules/geoipbackend/geoipinterface-mmdb.cc:110,1
    - Dst: string
      Src: /src/pdns/modules/geoipbackend/geoipinterface-mmdb.cc:112,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 3
    argNames:
    - ' ret'
    - ' gl'
    - ' ip'
    argTypes:
    - string
    - GeoIPNetmask
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 104
    functionDepth: 1
    functionLinenumber: 104
    functionLinenumberEnd: 114
    functionName: GeoIPInterfaceMMDB::queryContinentV6
    functionSourceFile: /src/pdns/modules/geoipbackend/geoipinterface-mmdb.cc
    functionUses: 0
    functionsReached:
    - string
    - MMDB_get_value
    - GeoIPInterfaceMMDB::mmdbLookup
    linkageType: ''
    returnType: bool
    signature: bool queryContinentV6(string& ret, GeoIPNetmask& gl, const string&
      ip) override
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: GeoIPInterfaceMMDB::mmdbLookup
      Src: /src/pdns/modules/geoipbackend/geoipinterface-mmdb.cc:120,1
    - Dst: MMDB_get_value
      Src: /src/pdns/modules/geoipbackend/geoipinterface-mmdb.cc:122,1
    - Dst: string
      Src: /src/pdns/modules/geoipbackend/geoipinterface-mmdb.cc:124,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 3
    argNames:
    - ' ret'
    - ' gl'
    - ' ip'
    argTypes:
    - string
    - GeoIPNetmask
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 116
    functionDepth: 1
    functionLinenumber: 116
    functionLinenumberEnd: 126
    functionName: GeoIPInterfaceMMDB::queryName
    functionSourceFile: /src/pdns/modules/geoipbackend/geoipinterface-mmdb.cc
    functionUses: 0
    functionsReached:
    - string
    - MMDB_get_value
    - GeoIPInterfaceMMDB::mmdbLookup
    linkageType: ''
    returnType: bool
    signature: bool queryName(string& ret, GeoIPNetmask& gl, const string& ip) override
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: GeoIPInterfaceMMDB::mmdbLookup
      Src: /src/pdns/modules/geoipbackend/geoipinterface-mmdb.cc:132,1
    - Dst: MMDB_get_value
      Src: /src/pdns/modules/geoipbackend/geoipinterface-mmdb.cc:134,1
    - Dst: string
      Src: /src/pdns/modules/geoipbackend/geoipinterface-mmdb.cc:136,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 3
    argNames:
    - ' ret'
    - ' gl'
    - ' ip'
    argTypes:
    - string
    - GeoIPNetmask
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 138
      start: 128
    functionDepth: 1
    functionLinenumber: 128
    functionLinenumberEnd: 138
    functionName: GeoIPInterfaceMMDB::queryNameV6
    functionSourceFile: /src/pdns/modules/geoipbackend/geoipinterface-mmdb.cc
    functionUses: 0
    functionsReached:
    - string
    - MMDB_get_value
    - GeoIPInterfaceMMDB::mmdbLookup
    linkageType: ''
    returnType: bool
    signature: bool queryNameV6(string& ret, GeoIPNetmask& gl, const string& ip) override
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: GeoIPInterfaceMMDB::mmdbLookup
      Src: /src/pdns/modules/geoipbackend/geoipinterface-mmdb.cc:144,1
    - Dst: MMDB_get_value
      Src: /src/pdns/modules/geoipbackend/geoipinterface-mmdb.cc:146,1
    - Dst: std::to_string
      Src: /src/pdns/modules/geoipbackend/geoipinterface-mmdb.cc:148,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 3
    argNames:
    - ' ret'
    - ' gl'
    - ' ip'
    argTypes:
    - string
    - GeoIPNetmask
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 150
      start: 140
    functionDepth: 1
    functionLinenumber: 140
    functionLinenumberEnd: 150
    functionName: GeoIPInterfaceMMDB::queryASnum
    functionSourceFile: /src/pdns/modules/geoipbackend/geoipinterface-mmdb.cc
    functionUses: 0
    functionsReached:
    - MMDB_get_value
    - std::to_string
    - GeoIPInterfaceMMDB::mmdbLookup
    linkageType: ''
    returnType: bool
    signature: bool queryASnum(string& ret, GeoIPNetmask& gl, const string& ip) override
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: GeoIPInterfaceMMDB::mmdbLookup
      Src: /src/pdns/modules/geoipbackend/geoipinterface-mmdb.cc:156,1
    - Dst: MMDB_get_value
      Src: /src/pdns/modules/geoipbackend/geoipinterface-mmdb.cc:158,1
    - Dst: std::to_string
      Src: /src/pdns/modules/geoipbackend/geoipinterface-mmdb.cc:160,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 3
    argNames:
    - ' ret'
    - ' gl'
    - ' ip'
    argTypes:
    - string
    - GeoIPNetmask
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 162
      start: 152
    functionDepth: 1
    functionLinenumber: 152
    functionLinenumberEnd: 162
    functionName: GeoIPInterfaceMMDB::queryASnumV6
    functionSourceFile: /src/pdns/modules/geoipbackend/geoipinterface-mmdb.cc
    functionUses: 0
    functionsReached:
    - MMDB_get_value
    - std::to_string
    - GeoIPInterfaceMMDB::mmdbLookup
    linkageType: ''
    returnType: bool
    signature: bool queryASnumV6(string& ret, GeoIPNetmask& gl, const string& ip)
      override
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: GeoIPInterfaceMMDB::mmdbLookup
      Src: /src/pdns/modules/geoipbackend/geoipinterface-mmdb.cc:168,1
    - Dst: MMDB_get_value
      Src: /src/pdns/modules/geoipbackend/geoipinterface-mmdb.cc:170,1
    - Dst: string
      Src: /src/pdns/modules/geoipbackend/geoipinterface-mmdb.cc:172,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 3
    argNames:
    - ' ret'
    - ' gl'
    - ' ip'
    argTypes:
    - string
    - GeoIPNetmask
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 174
      start: 164
    functionDepth: 1
    functionLinenumber: 164
    functionLinenumberEnd: 174
    functionName: GeoIPInterfaceMMDB::queryRegion
    functionSourceFile: /src/pdns/modules/geoipbackend/geoipinterface-mmdb.cc
    functionUses: 0
    functionsReached:
    - string
    - MMDB_get_value
    - GeoIPInterfaceMMDB::mmdbLookup
    linkageType: ''
    returnType: bool
    signature: bool queryRegion(string& ret, GeoIPNetmask& gl, const string& ip) override
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: GeoIPInterfaceMMDB::mmdbLookup
      Src: /src/pdns/modules/geoipbackend/geoipinterface-mmdb.cc:180,1
    - Dst: MMDB_get_value
      Src: /src/pdns/modules/geoipbackend/geoipinterface-mmdb.cc:182,1
    - Dst: string
      Src: /src/pdns/modules/geoipbackend/geoipinterface-mmdb.cc:184,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 3
    argNames:
    - ' ret'
    - ' gl'
    - ' ip'
    argTypes:
    - string
    - GeoIPNetmask
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 186
      start: 176
    functionDepth: 1
    functionLinenumber: 176
    functionLinenumberEnd: 186
    functionName: GeoIPInterfaceMMDB::queryRegionV6
    functionSourceFile: /src/pdns/modules/geoipbackend/geoipinterface-mmdb.cc
    functionUses: 0
    functionsReached:
    - string
    - MMDB_get_value
    - GeoIPInterfaceMMDB::mmdbLookup
    linkageType: ''
    returnType: bool
    signature: bool queryRegionV6(string& ret, GeoIPNetmask& gl, const string& ip)
      override
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: GeoIPInterfaceMMDB::mmdbLookup
      Src: /src/pdns/modules/geoipbackend/geoipinterface-mmdb.cc:192,1
    - Dst: MMDB_get_value
      Src: /src/pdns/modules/geoipbackend/geoipinterface-mmdb.cc:194,1
    - Dst: MMDB_get_value
      Src: /src/pdns/modules/geoipbackend/geoipinterface-mmdb.cc:194,1
    - Dst: c_str
      Src: /src/pdns/modules/geoipbackend/geoipinterface-mmdb.cc:194,1
    - Dst: string
      Src: /src/pdns/modules/geoipbackend/geoipinterface-mmdb.cc:196,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 7
    argCount: 3
    argNames:
    - ' ret'
    - ' gl'
    - ' ip'
    argTypes:
    - string
    - GeoIPNetmask
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 198
      start: 188
    functionDepth: 1
    functionLinenumber: 188
    functionLinenumberEnd: 198
    functionName: GeoIPInterfaceMMDB::queryCity
    functionSourceFile: /src/pdns/modules/geoipbackend/geoipinterface-mmdb.cc
    functionUses: 0
    functionsReached:
    - c_str
    - string
    - MMDB_get_value
    - GeoIPInterfaceMMDB::mmdbLookup
    linkageType: ''
    returnType: bool
    signature: bool queryCity(string& ret, GeoIPNetmask& gl, const string& ip) override
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: GeoIPInterfaceMMDB::mmdbLookup
      Src: /src/pdns/modules/geoipbackend/geoipinterface-mmdb.cc:204,1
    - Dst: MMDB_get_value
      Src: /src/pdns/modules/geoipbackend/geoipinterface-mmdb.cc:206,1
    - Dst: MMDB_get_value
      Src: /src/pdns/modules/geoipbackend/geoipinterface-mmdb.cc:206,1
    - Dst: c_str
      Src: /src/pdns/modules/geoipbackend/geoipinterface-mmdb.cc:206,1
    - Dst: string
      Src: /src/pdns/modules/geoipbackend/geoipinterface-mmdb.cc:208,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 7
    argCount: 3
    argNames:
    - ' ret'
    - ' gl'
    - ' ip'
    argTypes:
    - string
    - GeoIPNetmask
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 210
      start: 200
    functionDepth: 1
    functionLinenumber: 200
    functionLinenumberEnd: 210
    functionName: GeoIPInterfaceMMDB::queryCityV6
    functionSourceFile: /src/pdns/modules/geoipbackend/geoipinterface-mmdb.cc
    functionUses: 0
    functionsReached:
    - c_str
    - string
    - MMDB_get_value
    - GeoIPInterfaceMMDB::mmdbLookup
    linkageType: ''
    returnType: bool
    signature: bool queryCityV6(string& ret, GeoIPNetmask& gl, const string& ip) override
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: GeoIPInterfaceMMDB::mmdbLookup
      Src: /src/pdns/modules/geoipbackend/geoipinterface-mmdb.cc:218,1
    - Dst: MMDB_get_value
      Src: /src/pdns/modules/geoipbackend/geoipinterface-mmdb.cc:220,1
    - Dst: MMDB_get_value
      Src: /src/pdns/modules/geoipbackend/geoipinterface-mmdb.cc:223,1
    - Dst: MMDB_get_value
      Src: /src/pdns/modules/geoipbackend/geoipinterface-mmdb.cc:226,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 13
    argCount: 5
    argNames:
    - ' gl'
    - ' ip'
    - ' latitude'
    - ' longitude'
    - ' prec'
    argTypes:
    - GeoIPNetmask
    - string
    - double
    - double
    - std::optional<int>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 230
      start: 212
    functionDepth: 1
    functionLinenumber: 212
    functionLinenumberEnd: 230
    functionName: GeoIPInterfaceMMDB::queryLocation
    functionSourceFile: /src/pdns/modules/geoipbackend/geoipinterface-mmdb.cc
    functionUses: 0
    functionsReached:
    - MMDB_get_value
    - GeoIPInterfaceMMDB::mmdbLookup
    linkageType: ''
    returnType: bool
    signature: "bool queryLocation(GeoIPNetmask& gl, const string& ip,\n                     double&
      latitude, double& longitude,\n                     std::optional<int>& /* alt
      */, std::optional<int>& prec) override"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: GeoIPInterfaceMMDB::mmdbLookup
      Src: /src/pdns/modules/geoipbackend/geoipinterface-mmdb.cc:238,1
    - Dst: MMDB_get_value
      Src: /src/pdns/modules/geoipbackend/geoipinterface-mmdb.cc:240,1
    - Dst: MMDB_get_value
      Src: /src/pdns/modules/geoipbackend/geoipinterface-mmdb.cc:243,1
    - Dst: MMDB_get_value
      Src: /src/pdns/modules/geoipbackend/geoipinterface-mmdb.cc:246,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 13
    argCount: 5
    argNames:
    - ' gl'
    - ' ip'
    - ' latitude'
    - ' longitude'
    - ' prec'
    argTypes:
    - GeoIPNetmask
    - string
    - double
    - double
    - std::optional<int>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 250
      start: 232
    functionDepth: 1
    functionLinenumber: 232
    functionLinenumberEnd: 250
    functionName: GeoIPInterfaceMMDB::queryLocationV6
    functionSourceFile: /src/pdns/modules/geoipbackend/geoipinterface-mmdb.cc
    functionUses: 0
    functionsReached:
    - MMDB_get_value
    - GeoIPInterfaceMMDB::mmdbLookup
    linkageType: ''
    returnType: bool
    signature: "bool queryLocationV6(GeoIPNetmask& gl, const string& ip,\n                       double&
      latitude, double& longitude,\n                       std::optional<int>& /*
      alt */, std::optional<int>& prec) override"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MMDB_close
      Src: /src/pdns/modules/geoipbackend/geoipinterface-mmdb.cc:252,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 252
      start: 252
    functionDepth: 0
    functionLinenumber: 252
    functionLinenumberEnd: 252
    functionName: ~GeoIPInterfaceMMDB() override
    functionSourceFile: /src/pdns/modules/geoipbackend/geoipinterface-mmdb.cc
    functionUses: 0
    functionsReached:
    - MMDB_close
    linkageType: ''
    returnType: void
    signature: void ~GeoIPInterfaceMMDB() override
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: MMDB_lookup_string
      Src: /src/pdns/modules/geoipbackend/geoipinterface-mmdb.cc:262,1
    - Dst: c_str
      Src: /src/pdns/modules/geoipbackend/geoipinterface-mmdb.cc:262,1
    - Dst: SLOG
      Src: /src/pdns/modules/geoipbackend/geoipinterface-mmdb.cc:265,1
    - Dst: gai_strerror
      Src: /src/pdns/modules/geoipbackend/geoipinterface-mmdb.cc:265,1
    - Dst: error
      Src: /src/pdns/modules/geoipbackend/geoipinterface-mmdb.cc:266,1
    - Dst: gai_strerror
      Src: /src/pdns/modules/geoipbackend/geoipinterface-mmdb.cc:266,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/geoipbackend/geoipinterface-mmdb.cc:266,1
    - Dst: SLOG
      Src: /src/pdns/modules/geoipbackend/geoipinterface-mmdb.cc:269,1
    - Dst: MMDB_strerror
      Src: /src/pdns/modules/geoipbackend/geoipinterface-mmdb.cc:269,1
    - Dst: error
      Src: /src/pdns/modules/geoipbackend/geoipinterface-mmdb.cc:270,1
    - Dst: MMDB_strerror
      Src: /src/pdns/modules/geoipbackend/geoipinterface-mmdb.cc:270,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/geoipbackend/geoipinterface-mmdb.cc:270,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 4
    argNames:
    - ' ip'
    - v6
    - ' gl'
    - ' res'
    argTypes:
    - string
    - bool
    - GeoIPNetmask
    - MMDB_lookup_result_s
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 281
      start: 259
    functionDepth: 0
    functionLinenumber: 259
    functionLinenumberEnd: 281
    functionName: GeoIPInterfaceMMDB::mmdbLookup
    functionSourceFile: /src/pdns/modules/geoipbackend/geoipinterface-mmdb.cc
    functionUses: 14
    functionsReached:
    - gai_strerror
    - SLOG
    - MMDB_strerror
    - Logging::Loggable
    - MMDB_lookup_string
    - error
    - c_str
    linkageType: ''
    returnType: bool
    signature: bool mmdbLookup(const string& ip, bool v6, GeoIPNetmask& gl, MMDB_lookup_result_s&
      res)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: find
      Src: /src/pdns/modules/geoipbackend/geoipinterface-mmdb.cc:288,1
    - Dst: end
      Src: /src/pdns/modules/geoipbackend/geoipinterface-mmdb.cc:289,1
    - Dst: find
      Src: /src/pdns/modules/geoipbackend/geoipinterface-mmdb.cc:291,1
    - Dst: end
      Src: /src/pdns/modules/geoipbackend/geoipinterface-mmdb.cc:292,1
    - Dst: std::make_unique<GeoIPInterfaceMMDB>
      Src: /src/pdns/modules/geoipbackend/geoipinterface-mmdb.cc:294,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - slog
    - ' fname'
    - ' opts'
    argTypes:
    - Logr::log_t
    - string
    - map<string, string>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 295
      start: 284
    functionDepth: 0
    functionLinenumber: 284
    functionLinenumberEnd: 295
    functionName: GeoIPInterface::makeMMDBInterface
    functionSourceFile: /src/pdns/modules/geoipbackend/geoipinterface-mmdb.cc
    functionUses: 0
    functionsReached:
    - std::make_unique<GeoIPInterfaceMMDB>
    - end
    - find
    linkageType: ''
    returnType: unique_ptr<GeoIPInterface>
    signature: unique_ptr<GeoIPInterface> GeoIPInterface::makeMMDBInterface(Logr::log_t
      slog, const string& fname, const map<string, string>& opts)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PDNSException
      Src: /src/pdns/modules/geoipbackend/geoipinterface-mmdb.cc:301,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 3
    argNames:
    - slog
    - ' fname'
    - ' opts'
    argTypes:
    - Logr::log_t
    - string
    - map<string, string>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 302
      start: 299
    functionDepth: 0
    functionLinenumber: 299
    functionLinenumberEnd: 302
    functionName: GeoIPInterface::makeMMDBInterface
    functionSourceFile: /src/pdns/modules/geoipbackend/geoipinterface-mmdb.cc
    functionUses: 0
    functionsReached:
    - PDNSException
    linkageType: ''
    returnType: unique_ptr<GeoIPInterface>
    signature: unique_ptr<GeoIPInterface> GeoIPInterface::makeMMDBInterface([[maybe_unused]]
      Logr::log_t slog, [[maybe_unused]] const string& fname, [[maybe_unused]] const
      map<string, string>& opts)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: closedir
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:93,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - dirPtr
    argTypes:
    - DIR*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 91
    functionDepth: 0
    functionLinenumber: 91
    functionLinenumberEnd: 94
    functionName: operator()(DIR* dirPtr) const noexcept
    functionSourceFile: /src/pdns/modules/geoipbackend/geoipbackend.cc
    functionUses: 0
    functionsReached:
    - closedir
    linkageType: ''
    returnType: void
    signature: void operator()(DIR* dirPtr) const noexcept
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: write_lock
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:101,1
    - Dst: setArgPrefix
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:102,1
    - Dst: withName
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:104,1
    - Dst: getArg
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:106,1
    - Dst: UniqueDirPtr
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:107,1
    - Dst: opendir
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:107,1
    - Dst: getArg
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:107,1
    - Dst: PDNSException
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:109,1
    - Dst: getArg
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:109,1
    - Dst: GeoIPBackend::initialize
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:114,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 1
    argNames:
    - ' suffix'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 99
    functionDepth: 0
    functionLinenumber: 99
    functionLinenumberEnd: 117
    functionName: GeoIPBackend::GeoIPBackend
    functionSourceFile: /src/pdns/modules/geoipbackend/geoipbackend.cc
    functionUses: 0
    functionsReached:
    - withName
    - PDNSException
    - getArg
    - setArgPrefix
    - opendir
    - GeoIPBackend::initialize
    - UniqueDirPtr
    - write_lock
    linkageType: ''
    returnType: void
    signature: void GeoIPBackend::GeoIPBackend(const string& suffix)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: find
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:132,1
    - Dst: compare
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:133,1
    - Dst: compare
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:137,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 1
    argNames:
    - ' formats'
    argTypes:
    - vector<string>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 145
      start: 125
    functionDepth: 0
    functionLinenumber: 125
    functionLinenumberEnd: 145
    functionName: validateMappingLookupFormats
    functionSourceFile: /src/pdns/modules/geoipbackend/geoipbackend.cc
    functionUses: 0
    functionsReached:
    - compare
    - find
    linkageType: ''
    returnType: bool
    signature: bool validateMappingLookupFormats(const vector<string>& formats)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:152,1
    - Dst: QType
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:153,1
    - Dst: vector::push_back
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:159,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 2
    argNames:
    - ' dom'
    - name
    argTypes:
    - GeoIPDomain
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 161
      start: 147
    functionDepth: 0
    functionLinenumber: 147
    functionLinenumberEnd: 161
    functionName: makeDNSResourceRecord
    functionSourceFile: /src/pdns/modules/geoipbackend/geoipbackend.cc
    functionUses: 0
    functionsReached:
    - std::move
    - vector::push_back
    - QType
    linkageType: ''
    returnType: vector<GeoIPDNSResourceRecord>
    signature: vector<GeoIPDNSResourceRecord> makeDNSResourceRecord(GeoIPDomain& dom,
      DNSName name)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: begin
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:165,1
    - Dst: end
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:165,1
    - Dst: auto::first::as
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:168,1
    - Dst: NetmaskTree::NetmaskTree
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:169,1
    - Dst: auto::second::IsMap
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:172,1
    - Dst: auto::second::begin
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:173,1
    - Dst: auto::second::end
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:173,1
    - Dst: auto::second::IsSequence
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:175,1
    - Dst: auto::second::as
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:176,1
    - Dst: vector::push_back
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:179,1
    - Dst: auto::second::as
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:179,1
    - Dst: auto::first::as
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:181,1
    - Dst: NetmaskTree::insert
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:182,1
    - Dst: Netmask
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:182,1
    - Dst: assign
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:182,1
    - Dst: vector::begin
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:182,1
    - Dst: vector::end
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:182,1
    - Dst: NetmaskTree::insert
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:183,1
    - Dst: Netmask
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:183,1
    - Dst: swap
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:183,1
    - Dst: auto::first::as
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:186,1
    - Dst: NetmaskTree::insert
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:187,1
    - Dst: swap
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:187,1
    - Dst: Netmask::isIPv6
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:188,1
    - Dst: Netmask::getBits
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:188,1
    - Dst: Netmask::getBits
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:189,1
    - Dst: Netmask::isIPv6
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:191,1
    - Dst: Netmask::getBits
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:191,1
    - Dst: Netmask::getBits
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:192,1
    - Dst: auto::second::IsSequence
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:199,1
    - Dst: auto::second::as
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:200,1
    - Dst: vector::push_back
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:203,1
    - Dst: auto::second::as
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:203,1
    - Dst: NetmaskTree::insert
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:205,1
    - Dst: Netmask
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:205,1
    - Dst: assign
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:205,1
    - Dst: vector::begin
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:205,1
    - Dst: vector::end
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:205,1
    - Dst: NetmaskTree::insert
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:206,1
    - Dst: Netmask
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:206,1
    - Dst: swap
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:206,1
    - Dst: YAML::Node::as
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:212,1
    - Dst: validateMappingLookupFormats
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:213,1
    - Dst: PDNSException
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:214,1
    - Dst: string
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:214,1
    - Dst: domain::toLogString
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:214,1
    - Dst: std::move
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:217,1
    - Dst: YAML::Node::as
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:223,1
    - Dst: masks::swap
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:231,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 48
    argCount: 2
    argNames:
    - ' domain'
    - ' dom'
    argTypes:
    - YAML::Node
    - GeoIPDomain
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 233
      start: 163
    functionDepth: 2
    functionLinenumber: 163
    functionLinenumberEnd: 233
    functionName: GeoIPBackend::setupNetmasks
    functionSourceFile: /src/pdns/modules/geoipbackend/geoipbackend.cc
    functionUses: 0
    functionsReached:
    - auto::second::IsSequence
    - PDNSException
    - domain::toLogString
    - vector::begin
    - string
    - auto::second::IsMap
    - auto::second::end
    - begin
    - auto::second::as
    - Netmask
    - assign
    - vector::push_back
    - YAML::Node::as
    - validateMappingLookupFormats
    - vector::end
    - masks::swap
    - std::move
    - swap
    - Netmask::getBits
    - end
    - auto::first::as
    - NetmaskTree::insert
    - NetmaskTree::NetmaskTree
    - auto::second::begin
    - Netmask::isIPv6
    linkageType: ''
    returnType: void
    signature: void GeoIPBackend::setupNetmasks(const YAML::Node& domain, GeoIPDomain&
      dom)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: ZoneName
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:240,1
    - Dst: auto::as
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:240,1
    - Dst: PDNSException
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:243,1
    - Dst: auto::as
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:246,1
    - Dst: PDNSException
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:249,1
    - Dst: begin
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:252,1
    - Dst: end
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:252,1
    - Dst: ZoneName
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:253,1
    - Dst: auto::first::as
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:253,1
    - Dst: auto::second::begin
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:256,1
    - Dst: auto::second::end
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:256,1
    - Dst: auto::begin
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:257,1
    - Dst: auto::first::IsNull
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:262,1
    - Dst: QType
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:263,1
    - Dst: boost::to_upper_copy
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:266,1
    - Dst: auto::first::as
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:266,1
    - Dst: auto::second::IsNull
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:271,1
    - Dst: auto::second::IsMap
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:274,1
    - Dst: auto::second::begin
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:275,1
    - Dst: auto::second::end
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:275,1
    - Dst: YAML::const_iterator::first::as
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:276,1
    - Dst: YAML::const_iterator::second::as
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:278,1
    - Dst: std::move
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:279,1
    - Dst: YAML::const_iterator::second::as
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:282,1
    - Dst: SLOG
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:284,1
    - Dst: info
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:285,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:285,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:285,1
    - Dst: PDNSException
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:286,1
    - Dst: string
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:286,1
    - Dst: GeoIPDNSResourceRecord::qname::toLogString
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:286,1
    - Dst: YAML::const_iterator::second::as
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:291,1
    - Dst: SLOG
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:294,1
    - Dst: info
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:295,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:295,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:295,1
    - Dst: PDNSException
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:296,1
    - Dst: string
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:296,1
    - Dst: string
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:296,1
    - Dst: GeoIPDNSResourceRecord::qname::toLogString
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:296,1
    - Dst: auto::second::as
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:301,1
    - Dst: std::move
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:302,1
    - Dst: vector::push_back
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:306,1
    - Dst: std::move
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:306,1
    - Dst: std::swap
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:308,1
    - Dst: GeoIPBackend::setupNetmasks
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:311,1
    - Dst: DNSName::chopOff
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:317,1
    - Dst: DNSName::isPartOf
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:317,1
    - Dst: records::find
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:318,1
    - Dst: records::end
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:318,1
    - Dst: services::count
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:318,1
    - Dst: makeDNSResourceRecord
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:319,1
    - Dst: std::swap
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:320,1
    - Dst: DNSName::chopOff
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:329,1
    - Dst: DNSName::isPartOf
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:329,1
    - Dst: records::find
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:330,1
    - Dst: records::end
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:330,1
    - Dst: makeDNSResourceRecord
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:331,1
    - Dst: std::swap
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:332,1
    - Dst: qtype::getCode
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:345,1
    - Dst: static_cast<float>
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:345,1
    - Dst: qtype::getCode
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:353,1
    - Dst: static_cast<int>
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:354,1
    - Dst: static_cast<float>
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:354,1
    - Dst: static_cast<float>
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:355,1
    - Dst: SLOG
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:370,1
    - Dst: what
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:370,1
    - Dst: error
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:371,1
    - Dst: what
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:371,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:371,1
    - Dst: SLOG
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:375,1
    - Dst: error
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:376,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:376,1
    CyclomaticComplexity: 33
    EdgeCount: 33
    ICount: 95
    argCount: 4
    argNames:
    - ' origin'
    - ' domain'
    - domainID
    - ' dom'
    argTypes:
    - std::string
    - YAML::Node
    - domainid_t
    - GeoIPDomain
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 380
      start: 235
    functionDepth: 3
    functionLinenumber: 235
    functionLinenumberEnd: 380
    functionName: GeoIPBackend::loadDomain
    functionSourceFile: /src/pdns/modules/geoipbackend/geoipbackend.cc
    functionUses: 0
    functionsReached:
    - std::swap
    - PDNSException
    - makeDNSResourceRecord
    - GeoIPBackend::setupNetmasks
    - auto::begin
    - services::count
    - YAML::const_iterator::first::as
    - error
    - auto::first::IsNull
    - static_cast<int>
    - YAML::const_iterator::second::as
    - SLOG
    - DNSName::chopOff
    - Logging::Loggable
    - records::find
    - QType
    - auto::second::begin
    - string
    - static_cast<float>
    - auto::second::end
    - begin
    - DNSName::isPartOf
    - vector::push_back
    - records::end
    - auto::as
    - qtype::getCode
    - auto::second::IsNull
    - std::move
    - what
    - end
    - info
    - auto::first::as
    - boost::to_upper_copy
    - ZoneName
    - GeoIPDNSResourceRecord::qname::toLogString
    - auto::second::IsMap
    - auto::second::as
    linkageType: ''
    returnType: bool
    signature: bool GeoIPBackend::loadDomain(const std::string& origin, const YAML::Node&
      domain, domainid_t domainID, GeoIPDomain& dom)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: std::filesystem::directory_iterator
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:385,1
    - Dst: dnsdist_ffi_dnsquestion_get_http_path
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:385,1
    - Dst: std::filesystem::is_regular_file
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:386,1
    - Dst: has_extension
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:386,1
    - Dst: extension
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:386,1
    - Dst: extension
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:386,1
    - Dst: vector::push_back
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:387,1
    - Dst: std::sort
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:390,1
    - Dst: vector::begin
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:390,1
    - Dst: vector::end
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:390,1
    - Dst: string
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:392,1
    - Dst: YAML::LoadFile
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:395,1
    - Dst: GeoIPBackend::loadDomain
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:398,1
    - Dst: static_cast<domainid_t>
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:398,1
    - Dst: size
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:398,1
    - Dst: push_back
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:399,1
    - Dst: SLOG
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:403,1
    - Dst: what
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:403,1
    - Dst: error
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:404,1
    - Dst: what
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:404,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:404,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 14
    argCount: 2
    argNames:
    - ' dir'
    - ' domains'
    argTypes:
    - std::string
    - vector<GeoIPDomain>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 407
      start: 382
    functionDepth: 4
    functionLinenumber: 382
    functionLinenumberEnd: 407
    functionName: GeoIPBackend::loadDomainsFromDirectory
    functionSourceFile: /src/pdns/modules/geoipbackend/geoipbackend.cc
    functionUses: 0
    functionsReached:
    - error
    - vector::begin
    - SLOG
    - Logging::Loggable
    - string
    - size
    - YAML::LoadFile
    - std::filesystem::directory_iterator
    - vector::push_back
    - push_back
    - std::filesystem::is_regular_file
    - vector::end
    - static_cast<domainid_t>
    - GeoIPBackend::loadDomain
    - what
    - extension
    - std::sort
    - has_extension
    - dnsdist_ffi_dnsquestion_get_http_path
    linkageType: ''
    returnType: void
    signature: void GeoIPBackend::loadDomainsFromDirectory(const std::string& dir,
      vector<GeoIPDomain>& domains)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: geoip_files::clear
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:414,1
    - Dst: getArg
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:416,1
    - Dst: stringtok
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:418,1
    - Dst: getArg
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:418,1
    - Dst: geoip_files::push_back
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:420,1
    - Dst: GeoIPInterface::makeInterface
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:420,1
    - Dst: geoip_files::empty
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:424,1
    - Dst: SLOG
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:425,1
    - Dst: info
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:426,1
    - Dst: getArg
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:429,1
    - Dst: std::string::empty
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:430,1
    - Dst: YAML::LoadFile
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:432,1
    - Dst: mark::is_null
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:436,1
    - Dst: std::to_string
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:437,1
    - Dst: std::to_string
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:437,1
    - Dst: PDNSException
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:442,1
    - Dst: YAML::Node::as
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:449,1
    - Dst: validateMappingLookupFormats
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:450,1
    - Dst: PDNSException
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:451,1
    - Dst: string
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:451,1
    - Dst: YAML::Node::as
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:455,1
    - Dst: begin
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:459,1
    - Dst: end
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:459,1
    - Dst: std::string::empty
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:461,1
    - Dst: GeoIPBackend::loadDomain
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:464,1
    - Dst: static_cast<domainid_t>
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:464,1
    - Dst: vector::size
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:464,1
    - Dst: vector::push_back
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:465,1
    - Dst: std::move
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:465,1
    - Dst: GeoIPBackend::loadDomainsFromDirectory
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:470,1
    - Dst: YAML::Node::as
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:470,1
    - Dst: domains::clear
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:473,1
    - Dst: std::swap
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:474,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 45
    argCount: 1
    argNames:
    - ' state'
    argTypes:
    - state_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 478
      start: 409
    functionDepth: 5
    functionLinenumber: 409
    functionLinenumberEnd: 478
    functionName: GeoIPBackend::initialize
    functionSourceFile: /src/pdns/modules/geoipbackend/geoipbackend.cc
    functionUses: 1
    functionsReached:
    - std::swap
    - std::to_string
    - PDNSException
    - getArg
    - GeoIPBackend::loadDomainsFromDirectory
    - geoip_files::empty
    - SLOG
    - stringtok
    - string
    - YAML::LoadFile
    - domains::clear
    - begin
    - std::string::empty
    - vector::push_back
    - YAML::Node::as
    - validateMappingLookupFormats
    - static_cast<domainid_t>
    - geoip_files::push_back
    - std::move
    - GeoIPBackend::loadDomain
    - end
    - info
    - GeoIPInterface::makeInterface
    - mark::is_null
    - vector::size
    - geoip_files::clear
    linkageType: ''
    returnType: void
    signature: void GeoIPBackend::initialize(state_t& state)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: write_lock
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:483,1
    - Dst: auto::geoip_files::clear
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:486,1
    - Dst: auto::domains::clear
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:487,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 492
      start: 480
    functionDepth: 1
    functionLinenumber: 480
    functionLinenumberEnd: 492
    functionName: GeoIPBackend::~GeoIPBackend()
    functionSourceFile: /src/pdns/modules/geoipbackend/geoipbackend.cc
    functionUses: 0
    functionsReached:
    - auto::geoip_files::clear
    - auto::domains::clear
    - write_lock
    linkageType: ''
    returnType: void
    signature: void GeoIPBackend::~GeoIPBackend()
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: records::find
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:496,1
    - Dst: dns_random
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:499,1
    - Dst: records::end
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:501,1
    - Dst: qtype::getCode
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:503,1
    - Dst: isIPv6
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:507,1
    - Dst: qtype::getCode
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:508,1
    - Dst: qtype::getCode
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:509,1
    - Dst: probability_rnd < comp || probability_rnd >
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:510,1
    - Dst: GeoIPBackend::format2str
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:513,1
    - Dst: empty
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:514,1
    - Dst: push_back
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:516,1
    - Dst: back
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:517,1
    - Dst: back
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:518,1
    - Dst: qtype::getCode
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:522,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 23
    argCount: 7
    argNames:
    - ' geoip_files'
    - ' dom'
    - ' search'
    - ' qtype'
    - ' qdomain'
    - ' addr'
    - ' gl'
    argTypes:
    - filevec_t
    - GeoIPDomain
    - DNSName
    - QType
    - DNSName
    - Netmask
    - GeoIPNetmask
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 532
      start: 494
    functionDepth: 1
    functionLinenumber: 494
    functionLinenumberEnd: 532
    functionName: GeoIPBackend::lookup_static
    functionSourceFile: /src/pdns/modules/geoipbackend/geoipbackend.cc
    functionUses: 0
    functionsReached:
    - isIPv6
    - dns_random
    - push_back
    - records::find
    - GeoIPBackend::format2str
    - probability_rnd < comp || probability_rnd >
    - qtype::getCode
    - back
    - empty
    - records::end
    linkageType: ''
    returnType: bool
    signature: bool GeoIPBackend::lookup_static(const filevec_t& geoip_files, const
      GeoIPDomain& dom, const DNSName& search, const QType& qtype, const DNSName&
      qdomain, const Netmask& addr, GeoIPNetmask& gl)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: read_lock
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:536,1
    - Dst: size
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:541,1
    - Dst: PDNSException
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:542,1
    - Dst: clear
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:544,1
    - Dst: static_cast<domainid_t>
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:546,1
    - Dst: auto::domains::size
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:546,1
    - Dst: isPartOf
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:551,1
    - Dst: Netmask
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:563,1
    - Dst: DNSPacket*::getRealRemote
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:563,1
    - Dst: GeoIPBackend::lookup_static
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:568,1
    - Dst: services::find
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:570,1
    - Dst: services::end
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:571,1
    - Dst: second::masks::lookup
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:574,1
    - Dst: DNSName::DNSName
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:578,1
    - Dst: NetmaskTree<vector<string>>::node_type*::first::getBits
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:579,1
    - Dst: queryGeoIP
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:585,1
    - Dst: Netmask::isIPv6
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:586,1
    - Dst: Netmask::isIPv6
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:593,1
    - Dst: NetmaskTree<vector<string>>::node_type*::second::begin
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:600,1
    - Dst: NetmaskTree<vector<string>>::node_type*::second::end
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:600,1
    - Dst: DNSName
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:601,1
    - Dst: GeoIPBackend::format2str
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:601,1
    - Dst: GeoIPBackend::lookup_static
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:604,1
    - Dst: empty
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:608,1
    - Dst: SLOG
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:609,1
    - Dst: info
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:612,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:612,1
    - Dst: clear
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:613,1
    - Dst: DNSName::toString
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:625,1
    - Dst: push_back
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:629,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 58
    argCount: 4
    argNames:
    - ' qtype'
    - ' qdomain'
    - zoneId
    - pkt_p
    argTypes:
    - QType
    - DNSName
    - domainid_t
    - DNSPacket*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 630
      start: 534
    functionDepth: 2
    functionLinenumber: 534
    functionLinenumberEnd: 630
    functionName: GeoIPBackend::lookup
    functionSourceFile: /src/pdns/modules/geoipbackend/geoipbackend.cc
    functionUses: 0
    functionsReached:
    - NetmaskTree<vector<string>>::node_type*::second::end
    - NetmaskTree<vector<string>>::node_type*::second::begin
    - PDNSException
    - GeoIPBackend::format2str
    - DNSName::toString
    - SLOG
    - Logging::Loggable
    - NetmaskTree<vector<string>>::node_type*::first::getBits
    - read_lock
    - size
    - clear
    - empty
    - auto::domains::size
    - Netmask
    - isPartOf
    - GeoIPBackend::lookup_static
    - services::find
    - push_back
    - DNSPacket*::getRealRemote
    - DNSName
    - static_cast<domainid_t>
    - services::end
    - info
    - queryGeoIP
    - DNSName::DNSName
    - second::masks::lookup
    - Netmask::isIPv6
    linkageType: ''
    returnType: void
    signature: void GeoIPBackend::lookup(const QType& qtype, const DNSName& qdomain,
      domainid_t zoneId, DNSPacket* pkt_p)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:634,1
    - Dst: back
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:638,1
    - Dst: pop_back
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:639,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - ' r'
    argTypes:
    - DNSResourceRecord
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 642
      start: 632
    functionDepth: 0
    functionLinenumber: 632
    functionLinenumberEnd: 642
    functionName: GeoIPBackend::get
    functionSourceFile: /src/pdns/modules/geoipbackend/geoipbackend.cc
    functionUses: 0
    functionsReached:
    - empty
    - pop_back
    - back
    linkageType: ''
    returnType: bool
    signature: bool GeoIPBackend::get(DNSResourceRecord& r)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: clear
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:646,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 647
      start: 644
    functionDepth: 1
    functionLinenumber: 644
    functionLinenumberEnd: 647
    functionName: GeoIPBackend::lookupEnd
    functionSourceFile: /src/pdns/modules/geoipbackend/geoipbackend.cc
    functionUses: 0
    functionsReached:
    - clear
    linkageType: ''
    returnType: void
    signature: void GeoIPBackend::lookupEnd()
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: toStringNoMask
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:655,1
    - Dst: isIPv6
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:660,1
    - Dst: queryASnumV6
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:661,1
    - Dst: queryASnum
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:663,1
    - Dst: isIPv6
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:666,1
    - Dst: queryNameV6
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:667,1
    - Dst: queryName
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:669,1
    - Dst: isIPv6
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:672,1
    - Dst: queryContinentV6
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:673,1
    - Dst: queryContinent
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:675,1
    - Dst: isIPv6
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:678,1
    - Dst: queryRegionV6
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:679,1
    - Dst: queryRegion
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:681,1
    - Dst: isIPv6
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:684,1
    - Dst: queryCountryV6
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:685,1
    - Dst: queryCountry
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:687,1
    - Dst: isIPv6
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:690,1
    - Dst: queryCountry2V6
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:691,1
    - Dst: queryCountry2
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:693,1
    - Dst: isIPv6
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:696,1
    - Dst: queryCityV6
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:697,1
    - Dst: queryCity
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:699,1
    - Dst: isIPv6
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:705,1
    - Dst: queryLocationV6
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:706,1
    - Dst: queryLocation
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:708,1
    - Dst: std::to_string
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:709,1
    - Dst: std::to_string
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:709,1
    - Dst: string::empty
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:713,1
    - Dst: std::move
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:716,1
    - Dst: std::transform
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:717,1
    - Dst: string::begin
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:717,1
    - Dst: string::end
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:717,1
    - Dst: string::begin
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:717,1
    - Dst: isIPv6
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:722,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 54
    argCount: 4
    argNames:
    - ' geoip_files'
    - ' addr'
    - attribute
    - ' gl'
    argTypes:
    - GeoIPBackend::filevec_t
    - Netmask
    - GeoIPInterface::GeoIPQueryAttribute
    - GeoIPNetmask
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 724
      start: 649
    functionDepth: 0
    functionLinenumber: 649
    functionLinenumberEnd: 724
    functionName: queryGeoIP
    functionSourceFile: /src/pdns/modules/geoipbackend/geoipbackend.cc
    functionUses: 1
    functionsReached:
    - queryNameV6
    - queryCountryV6
    - std::to_string
    - queryCountry2V6
    - queryContinentV6
    - string::end
    - std::transform
    - queryLocation
    - string::empty
    - queryCityV6
    - string::begin
    - isIPv6
    - queryASnumV6
    - queryRegion
    - queryContinent
    - toStringNoMask
    - queryCountry
    - queryCity
    - queryCountry2
    - std::move
    - queryASnum
    - queryName
    - queryRegionV6
    - queryLocationV6
    linkageType: ''
    returnType: string
    signature: string queryGeoIP(const GeoIPBackend::filevec_t& geoip_files, const
      Netmask& addr, GeoIPInterface::GeoIPQueryAttribute attribute, GeoIPNetmask&
      gl)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: read_lock
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:728,1
    - Dst: queryGeoIP
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:733,1
    - Dst: boost::starts_with
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:735,1
    - Dst: string::substr
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:736,1
    - Dst: what
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:740,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - ' ip'
    - qaint
    argTypes:
    - std::string
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 746
      start: 726
    functionDepth: 1
    functionLinenumber: 726
    functionLinenumberEnd: 746
    functionName: getGeoForLua
    functionSourceFile: /src/pdns/modules/geoipbackend/geoipbackend.cc
    functionUses: 0
    functionsReached:
    - boost::starts_with
    - what
    - read_lock
    - string::substr
    - queryGeoIP
    linkageType: ''
    returnType: string
    signature: string getGeoForLua(const std::string& ip, int qaint)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: isIPv6
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:753,1
    - Dst: queryLocationV6
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:754,1
    - Dst: toStringNoMask
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:754,1
    - Dst: queryLocation
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:757,1
    - Dst: toStringNoMask
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:757,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 7
    argNames:
    - ' geoip_files'
    - ' addr'
    - ' gl'
    - ' lat'
    - ' lon'
    - ' alt'
    - ' prec'
    argTypes:
    - GeoIPBackend::filevec_t
    - Netmask
    - GeoIPNetmask
    - double
    - double
    - std::optional<int>
    - std::optional<int>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 761
      start: 748
    functionDepth: 0
    functionLinenumber: 748
    functionLinenumberEnd: 761
    functionName: queryGeoLocation
    functionSourceFile: /src/pdns/modules/geoipbackend/geoipbackend.cc
    functionUses: 0
    functionsReached:
    - queryLocation
    - isIPv6
    - toStringNoMask
    - queryLocationV6
    linkageType: ''
    returnType: bool
    signature: "bool queryGeoLocation(const GeoIPBackend::filevec_t& geoip_files,
      const Netmask& addr, GeoIPNetmask& gl, double& lat, double& lon,\n                             std::optional<int>&
      alt, std::optional<int>& prec)"
  - BBCount: 33
    BranchProfiles: []
    Callsites:
    - Dst: time
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:769,1
    - Dst: gmtime_r
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:772,1
    - Dst: string::find
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:775,1
    - Dst: string::compare
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:779,1
    - Dst: custom_mapping::find
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:782,1
    - Dst: GeoIPBackend::format2str
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:782,1
    - Dst: custom_mapping::end
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:783,1
    - Dst: string::compare
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:789,1
    - Dst: queryGeoIP
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:790,1
    - Dst: string::compare
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:792,1
    - Dst: queryGeoIP
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:793,1
    - Dst: string::compare
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:795,1
    - Dst: queryGeoIP
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:796,1
    - Dst: string::compare
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:798,1
    - Dst: isIPv6
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:799,1
    - Dst: string::compare
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:801,1
    - Dst: queryGeoIP
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:802,1
    - Dst: string::compare
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:804,1
    - Dst: queryGeoIP
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:805,1
    - Dst: string::compare
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:807,1
    - Dst: queryGeoIP
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:808,1
    - Dst: string::compare
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:810,1
    - Dst: queryGeoIP
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:811,1
    - Dst: string::compare
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:813,1
    - Dst: queryGeoLocation
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:817,1
    - Dst: isIPv6
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:819,1
    - Dst: fabs
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:825,1
    - Dst: fabs
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:826,1
    - Dst: static_cast<int>
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:827,1
    - Dst: static_cast<int>
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:828,1
    - Dst: static_cast<int>
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:829,1
    - Dst: static_cast<int>
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:830,1
    - Dst: static_cast<double>
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:831,1
    - Dst: static_cast<double>
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:832,1
    - Dst: str
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:833,1
    - Dst: boost::format
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:833,1
    - Dst: str
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:835,1
    - Dst: boost::format
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:835,1
    - Dst: string
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:837,1
    - Dst: str
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:839,1
    - Dst: boost::format
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:839,1
    - Dst: string::compare
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:843,1
    - Dst: queryGeoLocation
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:844,1
    - Dst: isIPv6
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:846,1
    - Dst: str
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:849,1
    - Dst: boost::format
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:849,1
    - Dst: string::compare
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:853,1
    - Dst: queryGeoLocation
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:854,1
    - Dst: isIPv6
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:856,1
    - Dst: str
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:859,1
    - Dst: boost::format
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:859,1
    - Dst: string::compare
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:863,1
    - Dst: sqlstr
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:864,1
    - Dst: boost::format
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:864,1
    - Dst: isIPv6
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:865,1
    - Dst: string::compare
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:867,1
    - Dst: sqlstr
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:868,1
    - Dst: boost::format
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:868,1
    - Dst: isIPv6
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:869,1
    - Dst: string::compare
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:871,1
    - Dst: sqlstr
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:872,1
    - Dst: boost::format
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:872,1
    - Dst: isIPv6
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:873,1
    - Dst: string::compare
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:875,1
    - Dst: at
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:877,1
    - Dst: isIPv6
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:878,1
    - Dst: string::compare
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:880,1
    - Dst: at
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:882,1
    - Dst: isIPv6
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:883,1
    - Dst: string::compare
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:885,1
    - Dst: sqlstr
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:886,1
    - Dst: boost::format
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:886,1
    - Dst: isIPv6
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:887,1
    - Dst: string::compare
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:889,1
    - Dst: sqlstr
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:890,1
    - Dst: boost::format
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:890,1
    - Dst: isIPv6
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:891,1
    - Dst: string::compare
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:893,1
    - Dst: isIPv6
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:895,1
    - Dst: toStringNoMask
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:896,1
    - Dst: isIPv6
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:899,1
    - Dst: string::compare
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:901,1
    - Dst: isIPv6
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:903,1
    - Dst: toStringNoMask
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:904,1
    - Dst: isIPv6
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:907,1
    - Dst: string::compare
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:909,1
    - Dst: toStringNoMask
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:910,1
    - Dst: isIPv6
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:911,1
    - Dst: string::compare
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:913,1
    - Dst: string::replace
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:923,1
    - Dst: string::size
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:924,1
    CyclomaticComplexity: 37
    EdgeCount: 37
    ICount: 140
    argCount: 5
    argNames:
    - ' geoip_files'
    - sformat
    - ' addr'
    - ' gl'
    - ' dom'
    argTypes:
    - filevec_t
    - string
    - Netmask
    - GeoIPNetmask
    - GeoIPDomain
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 927
      start: 763
    functionDepth: 1
    functionLinenumber: 763
    functionLinenumberEnd: 927
    functionName: GeoIPBackend::format2str
    functionSourceFile: /src/pdns/modules/geoipbackend/geoipbackend.cc
    functionUses: 3
    functionsReached:
    - GeoIPBackend::format2str
    - custom_mapping::end
    - static_cast<int>
    - static_cast<double>
    - string::size
    - time
    - string::find
    - string
    - queryGeoLocation
    - at
    - isIPv6
    - gmtime_r
    - custom_mapping::find
    - str
    - toStringNoMask
    - string::compare
    - fabs
    - queryGeoIP
    - sqlstr
    - boost::format
    - string::replace
    linkageType: ''
    returnType: string
    signature: string GeoIPBackend::format2str(const filevec_t& geoip_files, string
      sformat, const Netmask& addr, GeoIPNetmask& gl, const GeoIPDomain& dom)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: write_lock
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:931,1
    - Dst: GeoIPBackend::initialize
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:934,1
    - Dst: SLOG
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:937,1
    - Dst: error
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:938,1
    - Dst: SLOG
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:941,1
    - Dst: what
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:941,1
    - Dst: error
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:942,1
    - Dst: what
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:942,1
    - Dst: SLOG
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:945,1
    - Dst: info
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:946,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 948
      start: 929
    functionDepth: 0
    functionLinenumber: 929
    functionLinenumberEnd: 948
    functionName: GeoIPBackend::reload
    functionSourceFile: /src/pdns/modules/geoipbackend/geoipbackend.cc
    functionUses: 0
    functionsReached:
    - SLOG
    - what
    - info
    - GeoIPBackend::initialize
    - write_lock
    - error
    linkageType: ''
    returnType: void
    signature: void GeoIPBackend::reload()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: GeoIPBackend::reload
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:952,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 953
      start: 950
    functionDepth: 1
    functionLinenumber: 950
    functionLinenumberEnd: 953
    functionName: GeoIPBackend::rediscover
    functionSourceFile: /src/pdns/modules/geoipbackend/geoipbackend.cc
    functionUses: 0
    functionsReached:
    - GeoIPBackend::reload
    linkageType: ''
    returnType: void
    signature: void GeoIPBackend::rediscover(string* /* status */)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: read_lock
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:957,1
    - Dst: GeoIPBackend::getSOA
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:962,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 2
    argNames:
    - ' domain'
    - ' info'
    argTypes:
    - ZoneName
    - DomainInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 972
      start: 955
    functionDepth: 0
    functionLinenumber: 955
    functionLinenumberEnd: 972
    functionName: GeoIPBackend::getDomainInfo
    functionSourceFile: /src/pdns/modules/geoipbackend/geoipbackend.cc
    functionUses: 0
    functionsReached:
    - GeoIPBackend::getSOA
    - read_lock
    linkageType: ''
    returnType: bool
    signature: bool GeoIPBackend::getDomainInfo(const ZoneName& domain, DomainInfo&
      info, bool /* getSerial */)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: read_lock
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:976,1
    - Dst: GeoIPBackend::getSOA
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:986,1
    - Dst: vector<DomainInfo>*::emplace_back
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:989,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - domains
    - getSerial
    argTypes:
    - vector<DomainInfo>*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 991
      start: 974
    functionDepth: 0
    functionLinenumber: 974
    functionLinenumberEnd: 991
    functionName: GeoIPBackend::getAllDomains
    functionSourceFile: /src/pdns/modules/geoipbackend/geoipbackend.cc
    functionUses: 0
    functionsReached:
    - GeoIPBackend::getSOA
    - read_lock
    - vector<DomainInfo>*::emplace_back
    linkageType: ''
    returnType: void
    signature: void GeoIPBackend::getAllDomains(vector<DomainInfo>* domains, bool
      getSerial, bool /* include_disabled */)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: read_lock
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:998,1
    - Dst: GeoIPBackend::hasDNSSECkey
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:1001,1
    - Dst: string
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:1002,1
    - Dst: push_back
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:1002,1
    - Dst: string
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:1003,1
    - Dst: push_back
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:1003,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 2
    argNames:
    - ' name'
    - ' meta'
    argTypes:
    - ZoneName
    - std::map<std::string, std::vector<std::string>>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1009
      start: 993
    functionDepth: 1
    functionLinenumber: 993
    functionLinenumberEnd: 1009
    functionName: GeoIPBackend::getAllDomainMetadata
    functionSourceFile: /src/pdns/modules/geoipbackend/geoipbackend.cc
    functionUses: 0
    functionsReached:
    - push_back
    - GeoIPBackend::hasDNSSECkey
    - string
    - read_lock
    linkageType: ''
    returnType: bool
    signature: bool GeoIPBackend::getAllDomainMetadata(const ZoneName& name, std::map<std::string,
      std::vector<std::string>>& meta)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: read_lock
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:1016,1
    - Dst: GeoIPBackend::hasDNSSECkey
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:1019,1
    - Dst: push_back
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:1021,1
    - Dst: string
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:1021,1
    - Dst: push_back
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:1023,1
    - Dst: string
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:1023,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 3
    argNames:
    - ' name'
    - ' kind'
    - ' meta'
    argTypes:
    - ZoneName
    - std::string
    - std::vector<std::string>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1029
      start: 1011
    functionDepth: 1
    functionLinenumber: 1011
    functionLinenumberEnd: 1029
    functionName: GeoIPBackend::getDomainMetadata
    functionSourceFile: /src/pdns/modules/geoipbackend/geoipbackend.cc
    functionUses: 0
    functionsReached:
    - push_back
    - GeoIPBackend::hasDNSSECkey
    - string
    - read_lock
    linkageType: ''
    returnType: bool
    signature: bool GeoIPBackend::getDomainMetadata(const ZoneName& name, const std::string&
      kind, std::vector<std::string>& meta)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: read_lock
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:1035,1
    - Dst: regcomp
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:1040,1
    - Dst: getArg
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:1042,1
    - Dst: domain::toStringNoDot
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:1042,1
    - Dst: glob
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:1044,1
    - Dst: ostringstream::str
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:1044,1
    - Dst: regexec
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:1046,1
    - Dst: pdns::checked_stoi_into
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:1048,1
    - Dst: strncmp
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:1049,1
    - Dst: pdns::checked_stoi_into
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:1051,1
    - Dst: ifstream::good
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:1055,1
    - Dst: ifstream::read
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:1056,1
    - Dst: ifstream::gcount
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:1057,1
    - Dst: string
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:1058,1
    - Dst: ifstream::gcount
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:1058,1
    - Dst: ifstream::close
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:1061,1
    - Dst: ostringstream::str
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:1062,1
    - Dst: emplace_back
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:1063,1
    - Dst: std::move
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:1063,1
    - Dst: regfree
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:1067,1
    - Dst: globfree
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:1068,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 31
    argCount: 2
    argNames:
    - ' name'
    - ' keys'
    argTypes:
    - ZoneName
    - std::vector<DNSBackend::KeyData>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1073
      start: 1031
    functionDepth: 0
    functionLinenumber: 1031
    functionLinenumberEnd: 1073
    functionName: GeoIPBackend::getDomainKeys
    functionSourceFile: /src/pdns/modules/geoipbackend/geoipbackend.cc
    functionUses: 0
    functionsReached:
    - ifstream::read
    - std::move
    - domain::toStringNoDot
    - strncmp
    - getArg
    - regcomp
    - read_lock
    - string
    - regfree
    - ostringstream::str
    - ifstream::gcount
    - emplace_back
    - globfree
    - ifstream::close
    - glob
    - pdns::checked_stoi_into
    - regexec
    - ifstream::good
    linkageType: ''
    returnType: bool
    signature: bool GeoIPBackend::getDomainKeys(const ZoneName& name, std::vector<DNSBackend::KeyData>&
      keys)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: write_lock
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:1079,1
    - Dst: regcomp
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:1085,1
    - Dst: getArg
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:1087,1
    - Dst: domain::toStringNoDot
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:1087,1
    - Dst: glob
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:1089,1
    - Dst: ostringstream::str
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:1089,1
    - Dst: regexec
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:1091,1
    - Dst: pdns::checked_stoi<unsigned int>
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:1092,1
    - Dst: unlink
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:1094,1
    - Dst: strerror
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:1095,1
    - Dst: regfree
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:1102,1
    - Dst: globfree
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:1103,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 24
    argCount: 2
    argNames:
    - ' name'
    - keyId
    argTypes:
    - ZoneName
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1108
      start: 1075
    functionDepth: 0
    functionLinenumber: 1075
    functionLinenumberEnd: 1108
    functionName: GeoIPBackend::removeDomainKey
    functionSourceFile: /src/pdns/modules/geoipbackend/geoipbackend.cc
    functionUses: 0
    functionsReached:
    - domain::toStringNoDot
    - regcomp
    - getArg
    - unlink
    - ostringstream::str
    - pdns::checked_stoi<unsigned int>
    - regfree
    - write_lock
    - strerror
    - globfree
    - glob
    - regexec
    linkageType: ''
    returnType: bool
    signature: bool GeoIPBackend::removeDomainKey(const ZoneName& name, unsigned int
      keyId)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: write_lock
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:1114,1
    - Dst: regcomp
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:1121,1
    - Dst: getArg
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:1123,1
    - Dst: domain::toStringNoDot
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:1123,1
    - Dst: glob
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:1125,1
    - Dst: ostringstream::str
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:1125,1
    - Dst: regexec
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:1127,1
    - Dst: pdns::checked_stoi<unsigned int>
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:1128,1
    - Dst: regfree
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:1134,1
    - Dst: globfree
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:1135,1
    - Dst: ostringstream::str
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:1136,1
    - Dst: getArg
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:1137,1
    - Dst: domain::toStringNoDot
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:1137,1
    - Dst: ostringstream::str
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:1138,1
    - Dst: ofstream::write
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:1139,1
    - Dst: content::c_str
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:1139,1
    - Dst: content::size
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:1139,1
    - Dst: ofstream::close
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:1140,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 25
    argCount: 3
    argNames:
    - ' name'
    - ' key'
    - ' keyId'
    argTypes:
    - ZoneName
    - KeyData
    - int64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1146
      start: 1110
    functionDepth: 0
    functionLinenumber: 1110
    functionLinenumberEnd: 1146
    functionName: GeoIPBackend::addDomainKey
    functionSourceFile: /src/pdns/modules/geoipbackend/geoipbackend.cc
    functionUses: 0
    functionsReached:
    - domain::toStringNoDot
    - regcomp
    - getArg
    - ofstream::close
    - regfree
    - ostringstream::str
    - pdns::checked_stoi<unsigned int>
    - globfree
    - write_lock
    - content::c_str
    - ofstream::write
    - glob
    - regexec
    - content::size
    linkageType: ''
    returnType: bool
    signature: bool GeoIPBackend::addDomainKey(const ZoneName& name, const KeyData&
      key, int64_t& keyId)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: write_lock
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:1152,1
    - Dst: regcomp
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:1157,1
    - Dst: getArg
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:1159,1
    - Dst: domain::toStringNoDot
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:1159,1
    - Dst: glob
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:1161,1
    - Dst: ostringstream::str
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:1161,1
    - Dst: regexec
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:1163,1
    - Dst: pdns::checked_stoi<unsigned int>
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:1164,1
    - Dst: strcmp
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:1165,1
    - Dst: getArg
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:1167,1
    - Dst: domain::toStringNoDot
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:1167,1
    - Dst: pdns::checked_stoi<unsigned int>
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:1167,1
    - Dst: rename
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:1168,1
    - Dst: ostringstream::str
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:1168,1
    - Dst: strerror
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:1169,1
    - Dst: globfree
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:1175,1
    - Dst: regfree
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:1176,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 24
    argCount: 2
    argNames:
    - ' name'
    - keyId
    argTypes:
    - ZoneName
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1181
      start: 1148
    functionDepth: 0
    functionLinenumber: 1148
    functionLinenumberEnd: 1181
    functionName: GeoIPBackend::activateDomainKey
    functionSourceFile: /src/pdns/modules/geoipbackend/geoipbackend.cc
    functionUses: 0
    functionsReached:
    - rename
    - domain::toStringNoDot
    - regcomp
    - getArg
    - strcmp
    - regfree
    - ostringstream::str
    - pdns::checked_stoi<unsigned int>
    - globfree
    - write_lock
    - strerror
    - glob
    - regexec
    linkageType: ''
    returnType: bool
    signature: bool GeoIPBackend::activateDomainKey(const ZoneName& name, unsigned
      int keyId)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: write_lock
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:1187,1
    - Dst: regcomp
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:1192,1
    - Dst: getArg
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:1194,1
    - Dst: domain::toStringNoDot
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:1194,1
    - Dst: glob
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:1196,1
    - Dst: ostringstream::str
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:1196,1
    - Dst: regexec
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:1198,1
    - Dst: pdns::checked_stoi<unsigned int>
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:1199,1
    - Dst: strcmp
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:1200,1
    - Dst: getArg
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:1202,1
    - Dst: domain::toStringNoDot
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:1202,1
    - Dst: pdns::checked_stoi<unsigned int>
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:1202,1
    - Dst: rename
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:1203,1
    - Dst: ostringstream::str
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:1203,1
    - Dst: strerror
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:1204,1
    - Dst: globfree
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:1210,1
    - Dst: regfree
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:1211,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 24
    argCount: 2
    argNames:
    - ' name'
    - keyId
    argTypes:
    - ZoneName
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1216
      start: 1183
    functionDepth: 0
    functionLinenumber: 1183
    functionLinenumberEnd: 1216
    functionName: GeoIPBackend::deactivateDomainKey
    functionSourceFile: /src/pdns/modules/geoipbackend/geoipbackend.cc
    functionUses: 0
    functionsReached:
    - rename
    - domain::toStringNoDot
    - regcomp
    - getArg
    - strcmp
    - regfree
    - ostringstream::str
    - pdns::checked_stoi<unsigned int>
    - globfree
    - write_lock
    - strerror
    - glob
    - regexec
    linkageType: ''
    returnType: bool
    signature: bool GeoIPBackend::deactivateDomainKey(const ZoneName& name, unsigned
      int keyId)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1221
      start: 1218
    functionDepth: 0
    functionLinenumber: 1218
    functionLinenumberEnd: 1221
    functionName: GeoIPBackend::publishDomainKey
    functionSourceFile: /src/pdns/modules/geoipbackend/geoipbackend.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool GeoIPBackend::publishDomainKey(const ZoneName& /* name */, unsigned
      int /* id */)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1226
      start: 1223
    functionDepth: 0
    functionLinenumber: 1223
    functionLinenumberEnd: 1226
    functionName: GeoIPBackend::unpublishDomainKey
    functionSourceFile: /src/pdns/modules/geoipbackend/geoipbackend.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool GeoIPBackend::unpublishDomainKey(const ZoneName& /* name */, unsigned
      int /* id */)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: getArg
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:1231,1
    - Dst: toStringNoDot
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:1231,1
    - Dst: glob
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:1233,1
    - Dst: ostringstream::str
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:1233,1
    - Dst: globfree
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:1234,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - ' name'
    argTypes:
    - ZoneName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1238
      start: 1228
    functionDepth: 0
    functionLinenumber: 1228
    functionLinenumberEnd: 1238
    functionName: GeoIPBackend::hasDNSSECkey
    functionSourceFile: /src/pdns/modules/geoipbackend/geoipbackend.cc
    functionUses: 2
    functionsReached:
    - getArg
    - toStringNoDot
    - ostringstream::str
    - globfree
    - glob
    linkageType: ''
    returnType: bool
    signature: bool GeoIPBackend::hasDNSSECkey(const ZoneName& name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1244
      start: 1243
    functionDepth: 0
    functionLinenumber: 1243
    functionLinenumberEnd: 1244
    functionName: GeoIPFactory::GeoIPFactory
    functionSourceFile: /src/pdns/modules/geoipbackend/geoipbackend.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void GeoIPFactory()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: declare
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:1248,1
    - Dst: declare
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:1249,1
    - Dst: declare
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:1250,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1251
      start: 1246
    functionDepth: 0
    functionLinenumber: 1246
    functionLinenumberEnd: 1251
    functionName: GeoIPFactory::declareArguments
    functionSourceFile: /src/pdns/modules/geoipbackend/geoipbackend.cc
    functionUses: 0
    functionsReached:
    - declare
    linkageType: ''
    returnType: void
    signature: void declareArguments(const string& suffix = "") override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: GeoIPBackend::GeoIPBackend
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:1255,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' suffix'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1256
      start: 1253
    functionDepth: 1
    functionLinenumber: 1253
    functionLinenumberEnd: 1256
    functionName: GeoIPFactory::make
    functionSourceFile: /src/pdns/modules/geoipbackend/geoipbackend.cc
    functionUses: 0
    functionsReached:
    - GeoIPBackend::GeoIPBackend
    linkageType: ''
    returnType: DNSBackend
    signature: DNSBackend * make(const string& suffix) override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BackendMakers
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:1264,1
    - Dst: std::make_unique<GeoIPFactory>
      Src: /src/pdns/modules/geoipbackend/geoipbackend.cc:1264,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1273
      start: 1262
    functionDepth: 1
    functionLinenumber: 1262
    functionLinenumberEnd: 1273
    functionName: GeoIPLoader::GeoIPLoader
    functionSourceFile: /src/pdns/modules/geoipbackend/geoipbackend.cc
    functionUses: 0
    functionsReached:
    - BackendMakers
    - std::make_unique<GeoIPFactory>
    linkageType: ''
    returnType: void
    signature: void GeoIPLoader()
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: stringtok
      Src: /src/pdns/modules/geoipbackend/geoipinterface.cc:35,1
    - Dst: vector::size
      Src: /src/pdns/modules/geoipbackend/geoipinterface.cc:37,1
    - Dst: stringtok
      Src: /src/pdns/modules/geoipbackend/geoipinterface.cc:38,1
    - Dst: string::find_last_of
      Src: /src/pdns/modules/geoipbackend/geoipinterface.cc:41,1
    - Dst: string::substr
      Src: /src/pdns/modules/geoipbackend/geoipinterface.cc:43,1
    - Dst: stringtok
      Src: /src/pdns/modules/geoipbackend/geoipinterface.cc:49,1
    - Dst: size
      Src: /src/pdns/modules/geoipbackend/geoipinterface.cc:53,1
    - Dst: erase
      Src: /src/pdns/modules/geoipbackend/geoipinterface.cc:54,1
    - Dst: begin
      Src: /src/pdns/modules/geoipbackend/geoipinterface.cc:54,1
    - Dst: begin
      Src: /src/pdns/modules/geoipbackend/geoipinterface.cc:54,1
    - Dst: stringtok
      Src: /src/pdns/modules/geoipbackend/geoipinterface.cc:57,1
    - Dst: GeoIPInterface::makeDATInterface
      Src: /src/pdns/modules/geoipbackend/geoipinterface.cc:63,1
    - Dst: GeoIPInterface::makeMMDBInterface
      Src: /src/pdns/modules/geoipbackend/geoipinterface.cc:66,1
    - Dst: PDNSException
      Src: /src/pdns/modules/geoipbackend/geoipinterface.cc:69,1
    - Dst: string
      Src: /src/pdns/modules/geoipbackend/geoipinterface.cc:69,1
    - Dst: string
      Src: /src/pdns/modules/geoipbackend/geoipinterface.cc:69,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 27
    argCount: 2
    argNames:
    - slog
    - ' dbStr'
    argTypes:
    - Logr::log_t
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 28
    functionDepth: 1
    functionLinenumber: 28
    functionLinenumberEnd: 71
    functionName: GeoIPInterface::makeInterface
    functionSourceFile: /src/pdns/modules/geoipbackend/geoipinterface.cc
    functionUses: 1
    functionsReached:
    - stringtok
    - PDNSException
    - GeoIPInterface::makeMMDBInterface
    - GeoIPInterface::makeDATInterface
    - string
    - size
    - string::find_last_of
    - string::substr
    - begin
    - vector::size
    - erase
    linkageType: ''
    returnType: unique_ptr<GeoIPInterface>
    signature: unique_ptr<GeoIPInterface> GeoIPInterface::makeInterface(Logr::log_t
      slog, const string& dbStr)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 70
    functionDepth: 0
    functionLinenumber: 70
    functionLinenumberEnd: 77
    functionName: GeoIPBackend::getCapabilities
    functionSourceFile: /src/pdns/modules/geoipbackend/geoipbackend.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int getCapabilities() override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 80
    functionDepth: 0
    functionLinenumber: 80
    functionLinenumberEnd: 80
    functionName: GeoIPBackend::list
    functionSourceFile: /src/pdns/modules/geoipbackend/geoipbackend.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool list(const ZoneName& /* target */, domainid_t /* domain_id */,
      bool /* include_disabled */ = false) override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 65
    functionDepth: 0
    functionLinenumber: 65
    functionLinenumberEnd: 65
    functionName: ~GeoIPInterface()
    functionSourceFile: /src/pdns/modules/geoipbackend/geoipinterface.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~GeoIPInterface()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: GeoIP_delete
      Src: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc:36,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ptr
    argTypes:
    - GeoIP*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 33
    functionDepth: 0
    functionLinenumber: 33
    functionLinenumberEnd: 38
    functionName: operator()(GeoIP* ptr)
    functionSourceFile: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc
    functionUses: 0
    functionsReached:
    - GeoIP_delete
    linkageType: ''
    returnType: void
    signature: void operator()(GeoIP* ptr)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: GeoIPRecord_delete
      Src: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc:46,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ptr
    argTypes:
    - GeoIPRecord*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 48
    functionName: operator()(GeoIPRecord* ptr)
    functionSourceFile: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc
    functionUses: 0
    functionsReached:
    - GeoIPRecord_delete
    linkageType: ''
    returnType: void
    signature: void operator()(GeoIPRecord* ptr)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: GeoIPRegion_delete
      Src: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc:56,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ptr
    argTypes:
    - GeoIPRegion*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 53
    functionDepth: 0
    functionLinenumber: 53
    functionLinenumberEnd: 58
    functionName: operator()(GeoIPRegion* ptr)
    functionSourceFile: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc
    functionUses: 0
    functionsReached:
    - GeoIPRegion_delete
    linkageType: ''
    returnType: void
    signature: void operator()(GeoIPRegion* ptr)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: std::unique_ptr<GeoIP, geoip_deleter>
      Src: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc:80,1
    - Dst: GeoIP_open
      Src: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc:80,1
    - Dst: c_str
      Src: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc:80,1
    - Dst: get
      Src: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc:81,1
    - Dst: PDNSException
      Src: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc:82,1
    - Dst: GeoIP_database_edition
      Src: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc:83,1
    - Dst: get
      Src: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc:83,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 2
    argNames:
    - ' fname'
    - ' modeStr'
    argTypes:
    - string
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 64
    functionDepth: 0
    functionLinenumber: 64
    functionLinenumberEnd: 84
    functionName: GeoIPInterfaceDAT::GeoIPInterfaceDAT
    functionSourceFile: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc
    functionUses: 0
    functionsReached:
    - GeoIP_open
    - PDNSException
    - GeoIP_database_edition
    - std::unique_ptr<GeoIP, geoip_deleter>
    - get
    - c_str
    linkageType: ''
    returnType: void
    signature: void GeoIPInterfaceDAT(const string& fname, const string& modeStr)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: GeoIP_id_by_addr_gl
      Src: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc:93,1
    - Dst: get
      Src: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc:93,1
    - Dst: c_str
      Src: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc:93,1
    - Dst: GeoIP_code3_by_id
      Src: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc:94,1
    - Dst: GeoIP_region_by_addr_gl
      Src: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc:100,1
    - Dst: get
      Src: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc:100,1
    - Dst: c_str
      Src: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc:100,1
    - Dst: GeoIP_code3_by_id
      Src: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc:103,1
    - Dst: GeoIP_id_by_code
      Src: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc:103,1
    - Dst: GeoIP_record_by_addr
      Src: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc:108,1
    - Dst: get
      Src: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc:108,1
    - Dst: c_str
      Src: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc:108,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 23
    argCount: 3
    argNames:
    - ' ret'
    - ' gl'
    - ' ip'
    argTypes:
    - string
    - GeoIPNetmask
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 86
    functionDepth: 0
    functionLinenumber: 86
    functionLinenumberEnd: 116
    functionName: GeoIPInterfaceDAT::queryCountry
    functionSourceFile: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc
    functionUses: 0
    functionsReached:
    - GeoIP_id_by_addr_gl
    - GeoIP_region_by_addr_gl
    - get
    - GeoIP_id_by_code
    - GeoIP_record_by_addr
    - c_str
    - GeoIP_code3_by_id
    linkageType: ''
    returnType: bool
    signature: bool queryCountry(string& ret, GeoIPNetmask& gl, const string& ip)
      override
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: GeoIP_id_by_addr_v6_gl
      Src: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc:125,1
    - Dst: get
      Src: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc:125,1
    - Dst: c_str
      Src: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc:125,1
    - Dst: GeoIP_code3_by_id
      Src: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc:126,1
    - Dst: GeoIP_region_by_addr_v6_gl
      Src: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc:132,1
    - Dst: get
      Src: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc:132,1
    - Dst: c_str
      Src: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc:132,1
    - Dst: GeoIP_code3_by_id
      Src: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc:135,1
    - Dst: GeoIP_id_by_code
      Src: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc:135,1
    - Dst: GeoIP_record_by_addr_v6
      Src: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc:140,1
    - Dst: get
      Src: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc:140,1
    - Dst: c_str
      Src: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc:140,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 23
    argCount: 3
    argNames:
    - ' ret'
    - ' gl'
    - ' ip'
    argTypes:
    - string
    - GeoIPNetmask
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 148
      start: 118
    functionDepth: 0
    functionLinenumber: 118
    functionLinenumberEnd: 148
    functionName: GeoIPInterfaceDAT::queryCountryV6
    functionSourceFile: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc
    functionUses: 0
    functionsReached:
    - GeoIP_record_by_addr_v6
    - GeoIP_region_by_addr_v6_gl
    - get
    - GeoIP_id_by_addr_v6_gl
    - GeoIP_id_by_code
    - c_str
    - GeoIP_code3_by_id
    linkageType: ''
    returnType: bool
    signature: bool queryCountryV6(string& ret, GeoIPNetmask& gl, const string& ip)
      override
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: GeoIP_id_by_addr_gl
      Src: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc:157,1
    - Dst: get
      Src: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc:157,1
    - Dst: c_str
      Src: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc:157,1
    - Dst: GeoIP_code_by_id
      Src: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc:158,1
    - Dst: GeoIP_region_by_addr_gl
      Src: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc:164,1
    - Dst: get
      Src: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc:164,1
    - Dst: c_str
      Src: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc:164,1
    - Dst: GeoIP_code_by_id
      Src: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc:167,1
    - Dst: GeoIP_id_by_code
      Src: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc:167,1
    - Dst: GeoIP_record_by_addr
      Src: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc:172,1
    - Dst: get
      Src: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc:172,1
    - Dst: c_str
      Src: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc:172,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 23
    argCount: 3
    argNames:
    - ' ret'
    - ' gl'
    - ' ip'
    argTypes:
    - string
    - GeoIPNetmask
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 180
      start: 150
    functionDepth: 0
    functionLinenumber: 150
    functionLinenumberEnd: 180
    functionName: GeoIPInterfaceDAT::queryCountry2
    functionSourceFile: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc
    functionUses: 0
    functionsReached:
    - GeoIP_id_by_addr_gl
    - GeoIP_region_by_addr_gl
    - GeoIP_code_by_id
    - get
    - GeoIP_id_by_code
    - GeoIP_record_by_addr
    - c_str
    linkageType: ''
    returnType: bool
    signature: bool queryCountry2(string& ret, GeoIPNetmask& gl, const string& ip)
      override
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: GeoIP_id_by_addr_v6_gl
      Src: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc:189,1
    - Dst: get
      Src: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc:189,1
    - Dst: c_str
      Src: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc:189,1
    - Dst: GeoIP_code_by_id
      Src: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc:190,1
    - Dst: GeoIP_region_by_addr_v6_gl
      Src: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc:196,1
    - Dst: get
      Src: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc:196,1
    - Dst: c_str
      Src: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc:196,1
    - Dst: GeoIP_code_by_id
      Src: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc:199,1
    - Dst: GeoIP_id_by_code
      Src: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc:199,1
    - Dst: GeoIP_record_by_addr_v6
      Src: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc:204,1
    - Dst: get
      Src: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc:204,1
    - Dst: c_str
      Src: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc:204,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 23
    argCount: 3
    argNames:
    - ' ret'
    - ' gl'
    - ' ip'
    argTypes:
    - string
    - GeoIPNetmask
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 212
      start: 182
    functionDepth: 0
    functionLinenumber: 182
    functionLinenumberEnd: 212
    functionName: GeoIPInterfaceDAT::queryCountry2V6
    functionSourceFile: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc
    functionUses: 0
    functionsReached:
    - GeoIP_record_by_addr_v6
    - GeoIP_region_by_addr_v6_gl
    - GeoIP_code_by_id
    - get
    - GeoIP_id_by_addr_v6_gl
    - GeoIP_id_by_code
    - c_str
    linkageType: ''
    returnType: bool
    signature: bool queryCountry2V6(string& ret, GeoIPNetmask& gl, const string& ip)
      override
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: GeoIP_id_by_addr_gl
      Src: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc:221,1
    - Dst: get
      Src: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc:221,1
    - Dst: c_str
      Src: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc:221,1
    - Dst: GeoIP_continent_by_id
      Src: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc:222,1
    - Dst: GeoIP_region_by_addr_gl
      Src: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc:228,1
    - Dst: get
      Src: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc:228,1
    - Dst: c_str
      Src: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc:228,1
    - Dst: GeoIP_continent_by_id
      Src: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc:231,1
    - Dst: GeoIP_id_by_code
      Src: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc:231,1
    - Dst: GeoIP_record_by_addr
      Src: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc:236,1
    - Dst: get
      Src: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc:236,1
    - Dst: c_str
      Src: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc:236,1
    - Dst: GeoIP_continent_by_id
      Src: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc:238,1
    - Dst: GeoIP_id_by_code
      Src: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc:238,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 23
    argCount: 3
    argNames:
    - ' ret'
    - ' gl'
    - ' ip'
    argTypes:
    - string
    - GeoIPNetmask
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 244
      start: 214
    functionDepth: 0
    functionLinenumber: 214
    functionLinenumberEnd: 244
    functionName: GeoIPInterfaceDAT::queryContinent
    functionSourceFile: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc
    functionUses: 0
    functionsReached:
    - GeoIP_id_by_addr_gl
    - GeoIP_region_by_addr_gl
    - get
    - GeoIP_continent_by_id
    - GeoIP_id_by_code
    - GeoIP_record_by_addr
    - c_str
    linkageType: ''
    returnType: bool
    signature: bool queryContinent(string& ret, GeoIPNetmask& gl, const string& ip)
      override
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: GeoIP_id_by_addr_v6_gl
      Src: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc:253,1
    - Dst: get
      Src: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc:253,1
    - Dst: c_str
      Src: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc:253,1
    - Dst: GeoIP_continent_by_id
      Src: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc:254,1
    - Dst: GeoIP_region_by_addr_v6_gl
      Src: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc:260,1
    - Dst: get
      Src: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc:260,1
    - Dst: c_str
      Src: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc:260,1
    - Dst: GeoIP_continent_by_id
      Src: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc:263,1
    - Dst: GeoIP_id_by_code
      Src: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc:263,1
    - Dst: GeoIP_record_by_addr_v6
      Src: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc:268,1
    - Dst: get
      Src: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc:268,1
    - Dst: c_str
      Src: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc:268,1
    - Dst: GeoIP_continent_by_id
      Src: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc:270,1
    - Dst: GeoIP_id_by_code
      Src: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc:270,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 23
    argCount: 3
    argNames:
    - ' ret'
    - ' gl'
    - ' ip'
    argTypes:
    - string
    - GeoIPNetmask
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 276
      start: 246
    functionDepth: 0
    functionLinenumber: 246
    functionLinenumberEnd: 276
    functionName: GeoIPInterfaceDAT::queryContinentV6
    functionSourceFile: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc
    functionUses: 0
    functionsReached:
    - GeoIP_record_by_addr_v6
    - GeoIP_region_by_addr_v6_gl
    - get
    - GeoIP_id_by_addr_v6_gl
    - GeoIP_continent_by_id
    - GeoIP_id_by_code
    - c_str
    linkageType: ''
    returnType: bool
    signature: bool queryContinentV6(string& ret, GeoIPNetmask& gl, const string&
      ip) override
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: GeoIP_name_by_addr_gl
      Src: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc:284,1
    - Dst: get
      Src: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc:284,1
    - Dst: c_str
      Src: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc:284,1
    - Dst: free
      Src: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc:287,1
    - Dst: std::replace
      Src: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc:290,1
    - Dst: begin
      Src: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc:290,1
    - Dst: end
      Src: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc:290,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 3
    argNames:
    - ' ret'
    - ' gl'
    - ' ip'
    argTypes:
    - string
    - GeoIPNetmask
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 295
      start: 278
    functionDepth: 0
    functionLinenumber: 278
    functionLinenumberEnd: 295
    functionName: GeoIPInterfaceDAT::queryName
    functionSourceFile: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc
    functionUses: 0
    functionsReached:
    - free
    - GeoIP_name_by_addr_gl
    - end
    - get
    - begin
    - c_str
    - std::replace
    linkageType: ''
    returnType: bool
    signature: bool queryName(string& ret, GeoIPNetmask& gl, const string& ip) override
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: GeoIP_name_by_addr_v6_gl
      Src: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc:303,1
    - Dst: get
      Src: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc:303,1
    - Dst: c_str
      Src: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc:303,1
    - Dst: free
      Src: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc:306,1
    - Dst: std::replace
      Src: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc:309,1
    - Dst: begin
      Src: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc:309,1
    - Dst: end
      Src: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc:309,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 3
    argNames:
    - ' ret'
    - ' gl'
    - ' ip'
    argTypes:
    - string
    - GeoIPNetmask
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 314
      start: 297
    functionDepth: 0
    functionLinenumber: 297
    functionLinenumberEnd: 314
    functionName: GeoIPInterfaceDAT::queryNameV6
    functionSourceFile: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc
    functionUses: 0
    functionsReached:
    - free
    - end
    - GeoIP_name_by_addr_v6_gl
    - get
    - begin
    - c_str
    - std::replace
    linkageType: ''
    returnType: bool
    signature: bool queryNameV6(string& ret, GeoIPNetmask& gl, const string& ip) override
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: GeoIP_name_by_addr_gl
      Src: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc:322,1
    - Dst: get
      Src: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc:322,1
    - Dst: c_str
      Src: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc:322,1
    - Dst: free
      Src: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc:326,1
    - Dst: stringtok
      Src: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc:327,1
    - Dst: vector::size
      Src: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc:328,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 3
    argNames:
    - ' ret'
    - ' gl'
    - ' ip'
    argTypes:
    - string
    - GeoIPNetmask
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 336
      start: 316
    functionDepth: 0
    functionLinenumber: 316
    functionLinenumberEnd: 336
    functionName: GeoIPInterfaceDAT::queryASnum
    functionSourceFile: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc
    functionUses: 0
    functionsReached:
    - stringtok
    - free
    - GeoIP_name_by_addr_gl
    - get
    - c_str
    - vector::size
    linkageType: ''
    returnType: bool
    signature: bool queryASnum(string& ret, GeoIPNetmask& gl, const string& ip) override
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: GeoIP_name_by_addr_v6_gl
      Src: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc:344,1
    - Dst: get
      Src: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc:344,1
    - Dst: c_str
      Src: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc:344,1
    - Dst: free
      Src: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc:348,1
    - Dst: stringtok
      Src: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc:349,1
    - Dst: vector::size
      Src: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc:350,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 3
    argNames:
    - ' ret'
    - ' gl'
    - ' ip'
    argTypes:
    - string
    - GeoIPNetmask
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 358
      start: 338
    functionDepth: 0
    functionLinenumber: 338
    functionLinenumberEnd: 358
    functionName: GeoIPInterfaceDAT::queryASnumV6
    functionSourceFile: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc
    functionUses: 0
    functionsReached:
    - stringtok
    - free
    - GeoIP_name_by_addr_v6_gl
    - get
    - c_str
    - vector::size
    linkageType: ''
    returnType: bool
    signature: bool queryASnumV6(string& ret, GeoIPNetmask& gl, const string& ip)
      override
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: GeoIP_region_by_addr_gl
      Src: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc:366,1
    - Dst: get
      Src: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc:366,1
    - Dst: c_str
      Src: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc:366,1
    - Dst: valueOrEmpty
      Src: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc:369,1
    - Dst: GeoIP_record_by_addr
      Src: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc:374,1
    - Dst: get
      Src: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc:374,1
    - Dst: c_str
      Src: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc:374,1
    - Dst: valueOrEmpty
      Src: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc:376,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 16
    argCount: 3
    argNames:
    - ' ret'
    - ' gl'
    - ' ip'
    argTypes:
    - string
    - GeoIPNetmask
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 382
      start: 360
    functionDepth: 0
    functionLinenumber: 360
    functionLinenumberEnd: 382
    functionName: GeoIPInterfaceDAT::queryRegion
    functionSourceFile: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc
    functionUses: 0
    functionsReached:
    - valueOrEmpty
    - GeoIP_region_by_addr_gl
    - get
    - GeoIP_record_by_addr
    - c_str
    linkageType: ''
    returnType: bool
    signature: bool queryRegion(string& ret, GeoIPNetmask& gl, const string& ip) override
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: GeoIP_region_by_addr_v6_gl
      Src: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc:390,1
    - Dst: get
      Src: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc:390,1
    - Dst: c_str
      Src: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc:390,1
    - Dst: valueOrEmpty
      Src: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc:393,1
    - Dst: GeoIP_record_by_addr_v6
      Src: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc:398,1
    - Dst: get
      Src: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc:398,1
    - Dst: c_str
      Src: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc:398,1
    - Dst: valueOrEmpty
      Src: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc:400,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 16
    argCount: 3
    argNames:
    - ' ret'
    - ' gl'
    - ' ip'
    argTypes:
    - string
    - GeoIPNetmask
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 406
      start: 384
    functionDepth: 0
    functionLinenumber: 384
    functionLinenumberEnd: 406
    functionName: GeoIPInterfaceDAT::queryRegionV6
    functionSourceFile: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc
    functionUses: 0
    functionsReached:
    - valueOrEmpty
    - GeoIP_record_by_addr_v6
    - GeoIP_region_by_addr_v6_gl
    - get
    - c_str
    linkageType: ''
    returnType: bool
    signature: bool queryRegionV6(string& ret, GeoIPNetmask& gl, const string& ip)
      override
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: GeoIP_record_by_addr
      Src: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc:411,1
    - Dst: get
      Src: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc:411,1
    - Dst: c_str
      Src: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc:411,1
    - Dst: valueOrEmpty
      Src: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc:413,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 3
    argNames:
    - ' ret'
    - ' gl'
    - ' ip'
    argTypes:
    - string
    - GeoIPNetmask
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 419
      start: 408
    functionDepth: 0
    functionLinenumber: 408
    functionLinenumberEnd: 419
    functionName: GeoIPInterfaceDAT::queryCity
    functionSourceFile: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc
    functionUses: 0
    functionsReached:
    - c_str
    - valueOrEmpty
    - GeoIP_record_by_addr
    - get
    linkageType: ''
    returnType: bool
    signature: bool queryCity(string& ret, GeoIPNetmask& gl, const string& ip) override
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: GeoIP_record_by_addr_v6
      Src: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc:424,1
    - Dst: get
      Src: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc:424,1
    - Dst: c_str
      Src: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc:424,1
    - Dst: valueOrEmpty
      Src: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc:426,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 3
    argNames:
    - ' ret'
    - ' gl'
    - ' ip'
    argTypes:
    - string
    - GeoIPNetmask
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 432
      start: 421
    functionDepth: 0
    functionLinenumber: 421
    functionLinenumberEnd: 432
    functionName: GeoIPInterfaceDAT::queryCityV6
    functionSourceFile: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc
    functionUses: 0
    functionsReached:
    - c_str
    - GeoIP_record_by_addr_v6
    - valueOrEmpty
    - get
    linkageType: ''
    returnType: bool
    signature: bool queryCityV6(string& ret, GeoIPNetmask& gl, const string& ip) override
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: GeoIP_record_by_addr_v6
      Src: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc:439,1
    - Dst: get
      Src: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc:439,1
    - Dst: c_str
      Src: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc:439,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 10
    argCount: 4
    argNames:
    - ' gl'
    - ' ip'
    - ' latitude'
    - ' longitude'
    argTypes:
    - GeoIPNetmask
    - string
    - double
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 448
      start: 434
    functionDepth: 0
    functionLinenumber: 434
    functionLinenumberEnd: 448
    functionName: GeoIPInterfaceDAT::queryLocationV6
    functionSourceFile: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc
    functionUses: 0
    functionsReached:
    - c_str
    - GeoIP_record_by_addr_v6
    - get
    linkageType: ''
    returnType: bool
    signature: "bool queryLocationV6(GeoIPNetmask& gl, const string& ip,\n                       double&
      latitude, double& longitude,\n                       std::optional<int>& /*
      alt */, std::optional<int>& /* prec */) override"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: GeoIP_record_by_addr
      Src: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc:455,1
    - Dst: get
      Src: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc:455,1
    - Dst: c_str
      Src: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc:455,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 10
    argCount: 4
    argNames:
    - ' gl'
    - ' ip'
    - ' latitude'
    - ' longitude'
    argTypes:
    - GeoIPNetmask
    - string
    - double
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 464
      start: 450
    functionDepth: 0
    functionLinenumber: 450
    functionLinenumberEnd: 464
    functionName: GeoIPInterfaceDAT::queryLocation
    functionSourceFile: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc
    functionUses: 0
    functionsReached:
    - c_str
    - GeoIP_record_by_addr
    - get
    linkageType: ''
    returnType: bool
    signature: "bool queryLocation(GeoIPNetmask& gl, const string& ip,\n                     double&
      latitude, double& longitude,\n                     std::optional<int>& /* alt
      */, std::optional<int>& /* prec */) override"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 466
      start: 466
    functionDepth: 0
    functionLinenumber: 466
    functionLinenumberEnd: 466
    functionName: ~GeoIPInterfaceDAT() override
    functionSourceFile: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~GeoIPInterfaceDAT() override
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: find
      Src: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc:476,1
    - Dst: end
      Src: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc:477,1
    - Dst: std::make_unique<GeoIPInterfaceDAT>
      Src: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc:479,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - ' fname'
    - ' opts'
    argTypes:
    - string
    - map<string, string>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 480
      start: 473
    functionDepth: 0
    functionLinenumber: 473
    functionLinenumberEnd: 480
    functionName: GeoIPInterface::makeDATInterface
    functionSourceFile: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc
    functionUses: 1
    functionsReached:
    - std::make_unique<GeoIPInterfaceDAT>
    - end
    - find
    linkageType: ''
    returnType: unique_ptr<GeoIPInterface>
    signature: unique_ptr<GeoIPInterface> GeoIPInterface::makeDATInterface(const string&
      fname, const map<string, string>& opts)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PDNSException
      Src: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc:486,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 2
    argNames:
    - ' fname'
    - ' opts'
    argTypes:
    - string
    - map<string, string>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 487
      start: 484
    functionDepth: 0
    functionLinenumber: 484
    functionLinenumberEnd: 487
    functionName: GeoIPInterface::makeDATInterface
    functionSourceFile: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc
    functionUses: 1
    functionsReached:
    - PDNSException
    linkageType: ''
    returnType: unique_ptr<GeoIPInterface>
    signature: unique_ptr<GeoIPInterface> GeoIPInterface::makeDATInterface([[maybe_unused]]
      const string& fname, [[maybe_unused]] const map<string, string>& opts)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: withName
      Src: /src/pdns/modules/gmysqlbackend/gmysqlbackend.cc:43,1
    - Dst: gMySQLBackend::reconnect
      Src: /src/pdns/modules/gmysqlbackend/gmysqlbackend.cc:48,1
    - Dst: SLOG
      Src: /src/pdns/modules/gmysqlbackend/gmysqlbackend.cc:52,1
    - Dst: txtReason
      Src: /src/pdns/modules/gmysqlbackend/gmysqlbackend.cc:52,1
    - Dst: error
      Src: /src/pdns/modules/gmysqlbackend/gmysqlbackend.cc:53,1
    - Dst: txtReason
      Src: /src/pdns/modules/gmysqlbackend/gmysqlbackend.cc:53,1
    - Dst: PDNSException
      Src: /src/pdns/modules/gmysqlbackend/gmysqlbackend.cc:54,1
    - Dst: txtReason
      Src: /src/pdns/modules/gmysqlbackend/gmysqlbackend.cc:54,1
    - Dst: SLOG
      Src: /src/pdns/modules/gmysqlbackend/gmysqlbackend.cc:56,1
    - Dst: getArg
      Src: /src/pdns/modules/gmysqlbackend/gmysqlbackend.cc:56,1
    - Dst: getArg
      Src: /src/pdns/modules/gmysqlbackend/gmysqlbackend.cc:56,1
    - Dst: getArg
      Src: /src/pdns/modules/gmysqlbackend/gmysqlbackend.cc:56,1
    - Dst: getArg
      Src: /src/pdns/modules/gmysqlbackend/gmysqlbackend.cc:56,1
    - Dst: info
      Src: /src/pdns/modules/gmysqlbackend/gmysqlbackend.cc:57,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/gmysqlbackend/gmysqlbackend.cc:57,1
    - Dst: getArg
      Src: /src/pdns/modules/gmysqlbackend/gmysqlbackend.cc:57,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/gmysqlbackend/gmysqlbackend.cc:57,1
    - Dst: getArg
      Src: /src/pdns/modules/gmysqlbackend/gmysqlbackend.cc:57,1
    - Dst: getArg
      Src: /src/pdns/modules/gmysqlbackend/gmysqlbackend.cc:57,1
    - Dst: getArg
      Src: /src/pdns/modules/gmysqlbackend/gmysqlbackend.cc:57,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - ' mode'
    - ' suffix'
    argTypes:
    - string
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 39
    functionDepth: 1
    functionLinenumber: 39
    functionLinenumberEnd: 58
    functionName: gMySQLBackend::gMySQLBackend
    functionSourceFile: /src/pdns/modules/gmysqlbackend/gmysqlbackend.cc
    functionUses: 0
    functionsReached:
    - SLOG
    - Logging::Loggable
    - withName
    - gMySQLBackend::reconnect
    - PDNSException
    - getArg
    - info
    - error
    - txtReason
    linkageType: ''
    returnType: void
    signature: void gMySQLBackend::gMySQLBackend(const string& mode, const string&
      suffix)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: setDB
      Src: /src/pdns/modules/gmysqlbackend/gmysqlbackend.cc:62,1
    - Dst: std::unique_ptr<SSql>
      Src: /src/pdns/modules/gmysqlbackend/gmysqlbackend.cc:62,1
    - Dst: getArg
      Src: /src/pdns/modules/gmysqlbackend/gmysqlbackend.cc:63,1
    - Dst: getArg
      Src: /src/pdns/modules/gmysqlbackend/gmysqlbackend.cc:64,1
    - Dst: getArgAsNum
      Src: /src/pdns/modules/gmysqlbackend/gmysqlbackend.cc:65,1
    - Dst: getArg
      Src: /src/pdns/modules/gmysqlbackend/gmysqlbackend.cc:66,1
    - Dst: getArg
      Src: /src/pdns/modules/gmysqlbackend/gmysqlbackend.cc:67,1
    - Dst: getArg
      Src: /src/pdns/modules/gmysqlbackend/gmysqlbackend.cc:68,1
    - Dst: getArg
      Src: /src/pdns/modules/gmysqlbackend/gmysqlbackend.cc:69,1
    - Dst: mustDo
      Src: /src/pdns/modules/gmysqlbackend/gmysqlbackend.cc:70,1
    - Dst: getArgAsNum
      Src: /src/pdns/modules/gmysqlbackend/gmysqlbackend.cc:71,1
    - Dst: mustDo
      Src: /src/pdns/modules/gmysqlbackend/gmysqlbackend.cc:72,1
    - Dst: SMySQL::SMySQL
      Src: /src/pdns/modules/gmysqlbackend/gmysqlbackend.cc:62,1
    - Dst: allocateStatements
      Src: /src/pdns/modules/gmysqlbackend/gmysqlbackend.cc:73,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 60
    functionDepth: 1
    functionLinenumber: 60
    functionLinenumberEnd: 74
    functionName: gMySQLBackend::reconnect
    functionSourceFile: /src/pdns/modules/gmysqlbackend/gmysqlbackend.cc
    functionUses: 1
    functionsReached:
    - allocateStatements
    - getArgAsNum
    - getArg
    - setDB
    - mustDo
    - SMySQL::SMySQL
    - std::unique_ptr<SSql>
    linkageType: ''
    returnType: void
    signature: void gMySQLBackend::reconnect()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' mode'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 79
    functionDepth: 0
    functionLinenumber: 79
    functionLinenumberEnd: 80
    functionName: gMySQLFactory::gMySQLFactory
    functionSourceFile: /src/pdns/modules/gmysqlbackend/gmysqlbackend.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void gMySQLFactory(const string& mode)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: declare
      Src: /src/pdns/modules/gmysqlbackend/gmysqlbackend.cc:84,1
    - Dst: declare
      Src: /src/pdns/modules/gmysqlbackend/gmysqlbackend.cc:85,1
    - Dst: declare
      Src: /src/pdns/modules/gmysqlbackend/gmysqlbackend.cc:86,1
    - Dst: declare
      Src: /src/pdns/modules/gmysqlbackend/gmysqlbackend.cc:87,1
    - Dst: declare
      Src: /src/pdns/modules/gmysqlbackend/gmysqlbackend.cc:88,1
    - Dst: declare
      Src: /src/pdns/modules/gmysqlbackend/gmysqlbackend.cc:89,1
    - Dst: declare
      Src: /src/pdns/modules/gmysqlbackend/gmysqlbackend.cc:90,1
    - Dst: declare
      Src: /src/pdns/modules/gmysqlbackend/gmysqlbackend.cc:91,1
    - Dst: declare
      Src: /src/pdns/modules/gmysqlbackend/gmysqlbackend.cc:92,1
    - Dst: declare
      Src: /src/pdns/modules/gmysqlbackend/gmysqlbackend.cc:93,1
    - Dst: declare
      Src: /src/pdns/modules/gmysqlbackend/gmysqlbackend.cc:94,1
    - Dst: declare
      Src: /src/pdns/modules/gmysqlbackend/gmysqlbackend.cc:96,1
    - Dst: declare
      Src: /src/pdns/modules/gmysqlbackend/gmysqlbackend.cc:100,1
    - Dst: declare
      Src: /src/pdns/modules/gmysqlbackend/gmysqlbackend.cc:101,1
    - Dst: declare
      Src: /src/pdns/modules/gmysqlbackend/gmysqlbackend.cc:102,1
    - Dst: declare
      Src: /src/pdns/modules/gmysqlbackend/gmysqlbackend.cc:103,1
    - Dst: declare
      Src: /src/pdns/modules/gmysqlbackend/gmysqlbackend.cc:105,1
    - Dst: declare
      Src: /src/pdns/modules/gmysqlbackend/gmysqlbackend.cc:106,1
    - Dst: declare
      Src: /src/pdns/modules/gmysqlbackend/gmysqlbackend.cc:108,1
    - Dst: declare
      Src: /src/pdns/modules/gmysqlbackend/gmysqlbackend.cc:109,1
    - Dst: declare
      Src: /src/pdns/modules/gmysqlbackend/gmysqlbackend.cc:111,1
    - Dst: declare
      Src: /src/pdns/modules/gmysqlbackend/gmysqlbackend.cc:112,1
    - Dst: declare
      Src: /src/pdns/modules/gmysqlbackend/gmysqlbackend.cc:114,1
    - Dst: declare
      Src: /src/pdns/modules/gmysqlbackend/gmysqlbackend.cc:116,1
    - Dst: declare
      Src: /src/pdns/modules/gmysqlbackend/gmysqlbackend.cc:117,1
    - Dst: declare
      Src: /src/pdns/modules/gmysqlbackend/gmysqlbackend.cc:118,1
    - Dst: declare
      Src: /src/pdns/modules/gmysqlbackend/gmysqlbackend.cc:119,1
    - Dst: declare
      Src: /src/pdns/modules/gmysqlbackend/gmysqlbackend.cc:120,1
    - Dst: declare
      Src: /src/pdns/modules/gmysqlbackend/gmysqlbackend.cc:121,1
    - Dst: declare
      Src: /src/pdns/modules/gmysqlbackend/gmysqlbackend.cc:123,1
    - Dst: declare
      Src: /src/pdns/modules/gmysqlbackend/gmysqlbackend.cc:125,1
    - Dst: declare
      Src: /src/pdns/modules/gmysqlbackend/gmysqlbackend.cc:126,1
    - Dst: declare
      Src: /src/pdns/modules/gmysqlbackend/gmysqlbackend.cc:128,1
    - Dst: declare
      Src: /src/pdns/modules/gmysqlbackend/gmysqlbackend.cc:129,1
    - Dst: declare
      Src: /src/pdns/modules/gmysqlbackend/gmysqlbackend.cc:130,1
    - Dst: declare
      Src: /src/pdns/modules/gmysqlbackend/gmysqlbackend.cc:131,1
    - Dst: declare
      Src: /src/pdns/modules/gmysqlbackend/gmysqlbackend.cc:133,1
    - Dst: declare
      Src: /src/pdns/modules/gmysqlbackend/gmysqlbackend.cc:134,1
    - Dst: declare
      Src: /src/pdns/modules/gmysqlbackend/gmysqlbackend.cc:135,1
    - Dst: declare
      Src: /src/pdns/modules/gmysqlbackend/gmysqlbackend.cc:136,1
    - Dst: declare
      Src: /src/pdns/modules/gmysqlbackend/gmysqlbackend.cc:138,1
    - Dst: declare
      Src: /src/pdns/modules/gmysqlbackend/gmysqlbackend.cc:139,1
    - Dst: declare
      Src: /src/pdns/modules/gmysqlbackend/gmysqlbackend.cc:140,1
    - Dst: declare
      Src: /src/pdns/modules/gmysqlbackend/gmysqlbackend.cc:141,1
    - Dst: declare
      Src: /src/pdns/modules/gmysqlbackend/gmysqlbackend.cc:142,1
    - Dst: declare
      Src: /src/pdns/modules/gmysqlbackend/gmysqlbackend.cc:143,1
    - Dst: declare
      Src: /src/pdns/modules/gmysqlbackend/gmysqlbackend.cc:144,1
    - Dst: declare
      Src: /src/pdns/modules/gmysqlbackend/gmysqlbackend.cc:145,1
    - Dst: declare
      Src: /src/pdns/modules/gmysqlbackend/gmysqlbackend.cc:146,1
    - Dst: declare
      Src: /src/pdns/modules/gmysqlbackend/gmysqlbackend.cc:147,1
    - Dst: declare
      Src: /src/pdns/modules/gmysqlbackend/gmysqlbackend.cc:148,1
    - Dst: declare
      Src: /src/pdns/modules/gmysqlbackend/gmysqlbackend.cc:149,1
    - Dst: declare
      Src: /src/pdns/modules/gmysqlbackend/gmysqlbackend.cc:150,1
    - Dst: declare
      Src: /src/pdns/modules/gmysqlbackend/gmysqlbackend.cc:151,1
    - Dst: declare
      Src: /src/pdns/modules/gmysqlbackend/gmysqlbackend.cc:153,1
    - Dst: declare
      Src: /src/pdns/modules/gmysqlbackend/gmysqlbackend.cc:154,1
    - Dst: declare
      Src: /src/pdns/modules/gmysqlbackend/gmysqlbackend.cc:155,1
    - Dst: declare
      Src: /src/pdns/modules/gmysqlbackend/gmysqlbackend.cc:156,1
    - Dst: declare
      Src: /src/pdns/modules/gmysqlbackend/gmysqlbackend.cc:157,1
    - Dst: declare
      Src: /src/pdns/modules/gmysqlbackend/gmysqlbackend.cc:158,1
    - Dst: declare
      Src: /src/pdns/modules/gmysqlbackend/gmysqlbackend.cc:159,1
    - Dst: declare
      Src: /src/pdns/modules/gmysqlbackend/gmysqlbackend.cc:160,1
    - Dst: declare
      Src: /src/pdns/modules/gmysqlbackend/gmysqlbackend.cc:161,1
    - Dst: declare
      Src: /src/pdns/modules/gmysqlbackend/gmysqlbackend.cc:162,1
    - Dst: declare
      Src: /src/pdns/modules/gmysqlbackend/gmysqlbackend.cc:163,1
    - Dst: declare
      Src: /src/pdns/modules/gmysqlbackend/gmysqlbackend.cc:164,1
    - Dst: declare
      Src: /src/pdns/modules/gmysqlbackend/gmysqlbackend.cc:165,1
    - Dst: declare
      Src: /src/pdns/modules/gmysqlbackend/gmysqlbackend.cc:166,1
    - Dst: declare
      Src: /src/pdns/modules/gmysqlbackend/gmysqlbackend.cc:167,1
    - Dst: declare
      Src: /src/pdns/modules/gmysqlbackend/gmysqlbackend.cc:168,1
    - Dst: declare
      Src: /src/pdns/modules/gmysqlbackend/gmysqlbackend.cc:169,1
    - Dst: declare
      Src: /src/pdns/modules/gmysqlbackend/gmysqlbackend.cc:170,1
    - Dst: declare
      Src: /src/pdns/modules/gmysqlbackend/gmysqlbackend.cc:172,1
    - Dst: declare
      Src: /src/pdns/modules/gmysqlbackend/gmysqlbackend.cc:174,1
    - Dst: declare
      Src: /src/pdns/modules/gmysqlbackend/gmysqlbackend.cc:175,1
    - Dst: declare
      Src: /src/pdns/modules/gmysqlbackend/gmysqlbackend.cc:176,1
    - Dst: declare
      Src: /src/pdns/modules/gmysqlbackend/gmysqlbackend.cc:177,1
    - Dst: declare
      Src: /src/pdns/modules/gmysqlbackend/gmysqlbackend.cc:178,1
    - Dst: declare
      Src: /src/pdns/modules/gmysqlbackend/gmysqlbackend.cc:179,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 80
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 180
      start: 82
    functionDepth: 0
    functionLinenumber: 82
    functionLinenumberEnd: 180
    functionName: gMySQLFactory::declareArguments
    functionSourceFile: /src/pdns/modules/gmysqlbackend/gmysqlbackend.cc
    functionUses: 0
    functionsReached:
    - declare
    linkageType: ''
    returnType: void
    signature: void declareArguments(const string& suffix = "") override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: gMySQLBackend::gMySQLBackend
      Src: /src/pdns/modules/gmysqlbackend/gmysqlbackend.cc:184,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 185
      start: 182
    functionDepth: 2
    functionLinenumber: 182
    functionLinenumberEnd: 185
    functionName: gMySQLFactory::make
    functionSourceFile: /src/pdns/modules/gmysqlbackend/gmysqlbackend.cc
    functionUses: 0
    functionsReached:
    - gMySQLBackend::gMySQLBackend
    linkageType: ''
    returnType: DNSBackend
    signature: DNSBackend * make(const string& suffix = "") override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BackendMakers
      Src: /src/pdns/modules/gmysqlbackend/gmysqlbackend.cc:198,1
    - Dst: std::make_unique<gMySQLFactory>
      Src: /src/pdns/modules/gmysqlbackend/gmysqlbackend.cc:198,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 207
      start: 196
    functionDepth: 1
    functionLinenumber: 196
    functionLinenumberEnd: 207
    functionName: gMySQLLoader::gMySQLLoader
    functionSourceFile: /src/pdns/modules/gmysqlbackend/gmysqlbackend.cc
    functionUses: 0
    functionsReached:
    - BackendMakers
    - std::make_unique<gMySQLFactory>
    linkageType: ''
    returnType: void
    signature: void gMySQLLoader()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mysql_thread_end
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:55,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 52
    functionDepth: 0
    functionLinenumber: 52
    functionLinenumberEnd: 57
    functionName: ~MySQLThreadCloser()
    functionSourceFile: /src/pdns/modules/gmysqlbackend/smysql.cc
    functionUses: 0
    functionsReached:
    - mysql_thread_end
    linkageType: ''
    returnType: void
    signature: void ~MySQLThreadCloser()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 58
    functionDepth: 0
    functionLinenumber: 58
    functionLinenumberEnd: 61
    functionName: MySQLThreadCloser::enable
    functionSourceFile: /src/pdns/modules/gmysqlbackend/smysql.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void enable()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:87,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 5
    argNames:
    - log
    - ' query'
    - dolog
    - nparams
    - db
    argTypes:
    - Logr::log_t
    - string
    - bool
    - int
    - MYSQL*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 75
    functionDepth: 0
    functionLinenumber: 75
    functionLinenumberEnd: 90
    functionName: SMySQLStatement::SMySQLStatement
    functionSourceFile: /src/pdns/modules/gmysqlbackend/smysql.cc
    functionUses: 0
    functionsReached:
    - empty
    linkageType: ''
    returnType: void
    signature: void SMySQLStatement(Logr::log_t log, const string& query, bool dolog,
      int nparams, MYSQL* db)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SMySQLStatement::prepareStatement
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:94,1
    - Dst: SMySQLStatement::releaseStatement
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:96,1
    - Dst: SSqlException
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:97,1
    - Dst: char::char
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:100,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - value
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 104
      start: 92
    functionDepth: 1
    functionLinenumber: 92
    functionLinenumberEnd: 104
    functionName: SMySQLStatement::bind
    functionSourceFile: /src/pdns/modules/gmysqlbackend/smysql.cc
    functionUses: 0
    functionsReached:
    - SMySQLStatement::prepareStatement
    - SSqlException
    - char::char
    - SMySQLStatement::releaseStatement
    linkageType: ''
    returnType: SSqlStatement
    signature: SSqlStatement * bind(const string& /* name */, bool value) override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SMySQLStatement::bind
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:107,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' name'
    - value
    argTypes:
    - string
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 105
    functionDepth: 1
    functionLinenumber: 105
    functionLinenumberEnd: 108
    functionName: SMySQLStatement::bind
    functionSourceFile: /src/pdns/modules/gmysqlbackend/smysql.cc
    functionUses: 1
    functionsReached:
    - SMySQLStatement::bind
    linkageType: ''
    returnType: SSqlStatement
    signature: SSqlStatement * bind(const string& name, int value) override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SMySQLStatement::bind
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:111,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' name'
    - value
    argTypes:
    - string
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 112
      start: 109
    functionDepth: 1
    functionLinenumber: 109
    functionLinenumberEnd: 112
    functionName: SMySQLStatement::bind
    functionSourceFile: /src/pdns/modules/gmysqlbackend/smysql.cc
    functionUses: 2
    functionsReached:
    - SMySQLStatement::bind
    linkageType: ''
    returnType: SSqlStatement
    signature: SSqlStatement * bind(const string& name, uint32_t value) override
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: SMySQLStatement::prepareStatement
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:115,1
    - Dst: SMySQLStatement::releaseStatement
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:117,1
    - Dst: SSqlException
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:118,1
    - Dst: long::long
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:126,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 1
    argNames:
    - value
    argTypes:
    - long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 130
      start: 113
    functionDepth: 1
    functionLinenumber: 113
    functionLinenumberEnd: 130
    functionName: SMySQLStatement::bind
    functionSourceFile: /src/pdns/modules/gmysqlbackend/smysql.cc
    functionUses: 2
    functionsReached:
    - SMySQLStatement::prepareStatement
    - SSqlException
    - long::long
    - SMySQLStatement::releaseStatement
    linkageType: ''
    returnType: SSqlStatement
    signature: SSqlStatement * bind(const string& /* name */, long value) override
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: SMySQLStatement::prepareStatement
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:133,1
    - Dst: SMySQLStatement::releaseStatement
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:135,1
    - Dst: SSqlException
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:136,1
    - Dst: unsigned long::unsigned long
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:144,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 1
    argNames:
    - value
    argTypes:
    - unsigned long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 149
      start: 131
    functionDepth: 1
    functionLinenumber: 131
    functionLinenumberEnd: 149
    functionName: SMySQLStatement::bind
    functionSourceFile: /src/pdns/modules/gmysqlbackend/smysql.cc
    functionUses: 2
    functionsReached:
    - SMySQLStatement::prepareStatement
    - SSqlException
    - unsigned long::unsigned long
    - SMySQLStatement::releaseStatement
    linkageType: ''
    returnType: SSqlStatement
    signature: SSqlStatement * bind(const string& /* name */, unsigned long value)
      override
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SMySQLStatement::prepareStatement
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:152,1
    - Dst: SMySQLStatement::releaseStatement
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:154,1
    - Dst: SSqlException
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:155,1
    - Dst: long long::long long
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:158,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - value
    argTypes:
    - long long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 162
      start: 150
    functionDepth: 1
    functionLinenumber: 150
    functionLinenumberEnd: 162
    functionName: SMySQLStatement::bind
    functionSourceFile: /src/pdns/modules/gmysqlbackend/smysql.cc
    functionUses: 2
    functionsReached:
    - SMySQLStatement::prepareStatement
    - SSqlException
    - long long::long long
    - SMySQLStatement::releaseStatement
    linkageType: ''
    returnType: SSqlStatement
    signature: SSqlStatement * bind(const string& /* name */, long long value) override
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SMySQLStatement::prepareStatement
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:165,1
    - Dst: SMySQLStatement::releaseStatement
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:167,1
    - Dst: SSqlException
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:168,1
    - Dst: unsigned long long::unsigned long long
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:171,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 1
    argNames:
    - value
    argTypes:
    - unsigned long long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 176
      start: 163
    functionDepth: 1
    functionLinenumber: 163
    functionLinenumberEnd: 176
    functionName: SMySQLStatement::bind
    functionSourceFile: /src/pdns/modules/gmysqlbackend/smysql.cc
    functionUses: 2
    functionsReached:
    - SMySQLStatement::prepareStatement
    - SSqlException
    - unsigned long long::unsigned long long
    - SMySQLStatement::releaseStatement
    linkageType: ''
    returnType: SSqlStatement
    signature: SSqlStatement * bind(const string& /* name */, unsigned long long value)
      override
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SMySQLStatement::prepareStatement
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:179,1
    - Dst: SMySQLStatement::releaseStatement
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:181,1
    - Dst: SSqlException
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:182,1
    - Dst: size
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:185,1
    - Dst: char::char
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:185,1
    - Dst: unsigned long::unsigned long
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:186,1
    - Dst: size
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:187,1
    - Dst: memset
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:189,1
    - Dst: size
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:189,1
    - Dst: copy
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:190,1
    - Dst: size
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:190,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 1
    argNames:
    - ' value'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 193
      start: 177
    functionDepth: 1
    functionLinenumber: 177
    functionLinenumberEnd: 193
    functionName: SMySQLStatement::bind
    functionSourceFile: /src/pdns/modules/gmysqlbackend/smysql.cc
    functionUses: 2
    functionsReached:
    - SMySQLStatement::releaseStatement
    - char::char
    - SMySQLStatement::prepareStatement
    - unsigned long::unsigned long
    - copy
    - size
    - memset
    - SSqlException
    linkageType: ''
    returnType: SSqlStatement
    signature: SSqlStatement * bind(const string& /* name */, const std::string& value)
      override
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SMySQLStatement::prepareStatement
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:196,1
    - Dst: SMySQLStatement::releaseStatement
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:198,1
    - Dst: SSqlException
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:199,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 204
      start: 194
    functionDepth: 1
    functionLinenumber: 194
    functionLinenumberEnd: 204
    functionName: SMySQLStatement::bindNull
    functionSourceFile: /src/pdns/modules/gmysqlbackend/smysql.cc
    functionUses: 0
    functionsReached:
    - SMySQLStatement::prepareStatement
    - SSqlException
    - SMySQLStatement::releaseStatement
    linkageType: ''
    returnType: SSqlStatement
    signature: SSqlStatement * bindNull(const string& /* name */) override
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: SMySQLStatement::prepareStatement
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:208,1
    - Dst: SLOG
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:214,1
    - Dst: info
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:215,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:215,1
    - Dst: set
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:216,1
    - Dst: mysql_stmt_bind_param
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:219,1
    - Dst: SMySQLStatement::releaseStatement
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:221,1
    - Dst: SSqlException
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:222,1
    - Dst: string
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:222,1
    - Dst: mysql_stmt_execute
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:225,1
    - Dst: SMySQLStatement::releaseStatement
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:227,1
    - Dst: SSqlException
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:228,1
    - Dst: string
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:228,1
    - Dst: mysql_stmt_store_result
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:232,1
    - Dst: SMySQLStatement::releaseStatement
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:234,1
    - Dst: SSqlException
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:235,1
    - Dst: string
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:235,1
    - Dst: static_cast<int>
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:238,1
    - Dst: mysql_stmt_field_count
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:238,1
    - Dst: mysql_stmt_num_rows
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:240,1
    - Dst: mysql_stmt_result_metadata
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:243,1
    - Dst: static_cast<int>
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:244,1
    - Dst: mysql_num_fields
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:244,1
    - Dst: MYSQL_BIND::MYSQL_BIND
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:245,1
    - Dst: memset
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:246,1
    - Dst: mysql_fetch_fields
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:247,1
    - Dst: std::max
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:250,1
    - Dst: my_bool::my_bool
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:253,1
    - Dst: my_bool::my_bool
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:254,1
    - Dst: unsigned long::unsigned long
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:255,1
    - Dst: char::char
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:256,1
    - Dst: mysql_free_result
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:261,1
    - Dst: mysql_stmt_bind_result
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:269,1
    - Dst: SMySQLStatement::releaseStatement
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:271,1
    - Dst: SSqlException
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:272,1
    - Dst: string
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:272,1
    - Dst: SLOG
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:277,1
    - Dst: udiffNoReset
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:277,1
    - Dst: info
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:278,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:278,1
    - Dst: udiffNoReset
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:278,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 47
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 282
      start: 206
    functionDepth: 1
    functionLinenumber: 206
    functionLinenumberEnd: 282
    functionName: SMySQLStatement::execute
    functionSourceFile: /src/pdns/modules/gmysqlbackend/smysql.cc
    functionUses: 0
    functionsReached:
    - mysql_fetch_fields
    - mysql_free_result
    - set
    - mysql_stmt_execute
    - mysql_stmt_bind_param
    - SSqlException
    - mysql_stmt_result_metadata
    - udiffNoReset
    - MYSQL_BIND::MYSQL_BIND
    - static_cast<int>
    - char::char
    - SLOG
    - Logging::Loggable
    - SMySQLStatement::prepareStatement
    - unsigned long::unsigned long
    - string
    - memset
    - std::max
    - mysql_num_fields
    - my_bool::my_bool
    - mysql_stmt_field_count
    - mysql_stmt_num_rows
    - SMySQLStatement::releaseStatement
    - mysql_stmt_bind_result
    - mysql_stmt_store_result
    - info
    linkageType: ''
    returnType: SSqlStatement
    signature: SSqlStatement * execute() override
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SLOG
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:287,1
    - Dst: udiffNoReset
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:287,1
    - Dst: info
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:288,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:288,1
    - Dst: udiffNoReset
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:288,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 291
      start: 284
    functionDepth: 0
    functionLinenumber: 284
    functionLinenumberEnd: 291
    functionName: SMySQLStatement::hasNextRow
    functionSourceFile: /src/pdns/modules/gmysqlbackend/smysql.cc
    functionUses: 0
    functionsReached:
    - SLOG
    - udiffNoReset
    - info
    - Logging::Loggable
    linkageType: ''
    returnType: bool
    signature: bool hasNextRow() override
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: clear
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:296,1
    - Dst: SMySQLStatement::hasNextRow
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:297,1
    - Dst: mysql_stmt_fetch
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:301,1
    - Dst: SMySQLStatement::releaseStatement
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:304,1
    - Dst: SSqlException
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:305,1
    - Dst: string
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:305,1
    - Dst: reserve
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:309,1
    - Dst: SLOG
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:313,1
    - Dst: info
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:314,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:314,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:314,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:314,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:314,1
    - Dst: emplace_back
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:317,1
    - Dst: emplace_back
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:321,1
    - Dst: std::min
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:321,1
    - Dst: mysql_stmt_free_result
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:328,1
    - Dst: mysql_stmt_next_result
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:329,1
    - Dst: mysql_stmt_store_result
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:330,1
    - Dst: SMySQLStatement::releaseStatement
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:332,1
    - Dst: SSqlException
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:333,1
    - Dst: string
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:333,1
    - Dst: mysql_stmt_num_rows
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:335,1
    - Dst: mysql_stmt_field_count
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:341,1
    - Dst: mysql_stmt_bind_result
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:342,1
    - Dst: SMySQLStatement::releaseStatement
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:344,1
    - Dst: SSqlException
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:345,1
    - Dst: string
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:345,1
    - Dst: mysql_stmt_free_result
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:350,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 44
    argCount: 1
    argNames:
    - ' row'
    argTypes:
    - row_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 355
      start: 293
    functionDepth: 1
    functionLinenumber: 293
    functionLinenumberEnd: 355
    functionName: SMySQLStatement::nextRow
    functionSourceFile: /src/pdns/modules/gmysqlbackend/smysql.cc
    functionUses: 0
    functionsReached:
    - SMySQLStatement::releaseStatement
    - mysql_stmt_bind_result
    - SLOG
    - Logging::Loggable
    - mysql_stmt_store_result
    - std::min
    - mysql_stmt_fetch
    - mysql_stmt_free_result
    - string
    - SMySQLStatement::hasNextRow
    - info
    - reserve
    - mysql_stmt_next_result
    - mysql_stmt_field_count
    - emplace_back
    - clear
    - SSqlException
    - mysql_stmt_num_rows
    linkageType: ''
    returnType: SSqlStatement
    signature: SSqlStatement * nextRow(row_t& row) override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: clear
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:359,1
    - Dst: reserve
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:360,1
    - Dst: SMySQLStatement::hasNextRow
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:363,1
    - Dst: SMySQLStatement::nextRow
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:364,1
    - Dst: push_back
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:365,1
    - Dst: std::move
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:365,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - ' result'
    argTypes:
    - result_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 369
      start: 357
    functionDepth: 2
    functionLinenumber: 357
    functionLinenumberEnd: 369
    functionName: SMySQLStatement::getResult
    functionSourceFile: /src/pdns/modules/gmysqlbackend/smysql.cc
    functionUses: 0
    functionsReached:
    - std::move
    - push_back
    - SMySQLStatement::hasNextRow
    - reserve
    - SMySQLStatement::nextRow
    - clear
    linkageType: ''
    returnType: SSqlStatement
    signature: SSqlStatement * getResult(result_t& result) override
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: mysql_stmt_free_result
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:376,1
    - Dst: mysql_stmt_next_result
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:378,1
    - Dst: mysql_stmt_free_result
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:379,1
    - Dst: SMySQLStatement::releaseStatement
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:384,1
    - Dst: SSqlException
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:385,1
    - Dst: string
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:385,1
    - Dst: mysql_stmt_reset
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:387,1
    - Dst: memset
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:395,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 24
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 400
      start: 371
    functionDepth: 1
    functionLinenumber: 371
    functionLinenumberEnd: 400
    functionName: SMySQLStatement::reset
    functionSourceFile: /src/pdns/modules/gmysqlbackend/smysql.cc
    functionUses: 0
    functionsReached:
    - SMySQLStatement::releaseStatement
    - mysql_stmt_reset
    - mysql_stmt_free_result
    - string
    - memset
    - mysql_stmt_next_result
    - SSqlException
    linkageType: ''
    returnType: SSqlStatement
    signature: SSqlStatement * reset() override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 402
      start: 402
    functionDepth: 0
    functionLinenumber: 402
    functionLinenumberEnd: 402
    functionName: '& getQuery() override'
    functionSourceFile: /src/pdns/modules/gmysqlbackend/smysql.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string & getQuery() override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: releaseStatement
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:406,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 407
      start: 404
    functionDepth: 0
    functionLinenumber: 404
    functionLinenumberEnd: 407
    functionName: ~SMySQLStatement() override
    functionSourceFile: /src/pdns/modules/gmysqlbackend/smysql.cc
    functionUses: 0
    functionsReached:
    - releaseStatement
    linkageType: ''
    returnType: void
    signature: void ~SMySQLStatement() override
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:414,1
    - Dst: mysql_stmt_init
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:419,1
    - Dst: SSqlException
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:420,1
    - Dst: mysql_stmt_prepare
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:422,1
    - Dst: c_str
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:422,1
    - Dst: size
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:422,1
    - Dst: SMySQLStatement::releaseStatement
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:424,1
    - Dst: SSqlException
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:425,1
    - Dst: string
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:425,1
    - Dst: static_cast<int>
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:428,1
    - Dst: mysql_stmt_param_count
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:428,1
    - Dst: SMySQLStatement::releaseStatement
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:429,1
    - Dst: SSqlException
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:430,1
    - Dst: MYSQL_BIND::MYSQL_BIND
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:434,1
    - Dst: memset
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:435,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 22
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 439
      start: 410
    functionDepth: 1
    functionLinenumber: 410
    functionLinenumberEnd: 439
    functionName: SMySQLStatement::prepareStatement
    functionSourceFile: /src/pdns/modules/gmysqlbackend/smysql.cc
    functionUses: 8
    functionsReached:
    - SMySQLStatement::releaseStatement
    - c_str
    - string
    - MYSQL_BIND::MYSQL_BIND
    - size
    - mysql_stmt_param_count
    - memset
    - mysql_stmt_prepare
    - empty
    - SSqlException
    - mysql_stmt_init
    - static_cast<int>
    linkageType: ''
    returnType: void
    signature: void prepareStatement()
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: mysql_stmt_close
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:445,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 30
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 472
      start: 441
    functionDepth: 0
    functionLinenumber: 441
    functionLinenumberEnd: 472
    functionName: SMySQLStatement::releaseStatement
    functionSourceFile: /src/pdns/modules/gmysqlbackend/smysql.cc
    functionUses: 11
    functionsReached:
    - mysql_stmt_close
    linkageType: ''
    returnType: void
    signature: void releaseStatement()
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: std::scoped_lock
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:497,1
    - Dst: enable
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:499,1
    - Dst: mysql_init
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:502,1
    - Dst: SMySQL::sPerrorException
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:503,1
    - Dst: mysql_options
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:511,1
    - Dst: mysql_options
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:512,1
    - Dst: mysql_options
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:513,1
    - Dst: mysql_options
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:518,1
    - Dst: mysql_options
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:520,1
    - Dst: c_str
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:520,1
    - Dst: mysql_real_connect
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:522,1
    - Dst: empty
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:522,1
    - Dst: c_str
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:522,1
    - Dst: empty
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:523,1
    - Dst: c_str
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:523,1
    - Dst: empty
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:524,1
    - Dst: c_str
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:524,1
    - Dst: empty
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:525,1
    - Dst: c_str
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:525,1
    - Dst: empty
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:527,1
    - Dst: c_str
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:527,1
    - Dst: SMySQL::sPerrorException
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:531,1
    - Dst: mysql_close
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:536,1
    - Dst: SMySQL::sPerrorException
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:537,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 29
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 542
      start: 492
    functionDepth: 1
    functionLinenumber: 492
    functionLinenumberEnd: 542
    functionName: SMySQL::connect
    functionSourceFile: /src/pdns/modules/gmysqlbackend/smysql.cc
    functionUses: 0
    functionsReached:
    - c_str
    - SMySQL::sPerrorException
    - mysql_init
    - mysql_options
    - empty
    - std::scoped_lock
    - enable
    - mysql_real_connect
    - mysql_close
    linkageType: ''
    returnType: void
    signature: void SMySQL::connect()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:546,1
    - Dst: std::move
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:546,1
    - Dst: std::move
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:546,1
    - Dst: std::move
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:546,1
    - Dst: std::move
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:546,1
    - Dst: std::move
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:546,1
    - Dst: SMySQL::connect
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:549,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 11
    argNames:
    - log
    - database
    - host
    - port
    - msocket
    - user
    - password
    - group
    - setIsolation
    - timeout
    - threadCleanup
    argTypes:
    - Logr::log_t
    - string
    - string
    - uint16_t
    - string
    - string
    - string
    - string
    - bool
    - unsigned int
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 550
      start: 544
    functionDepth: 0
    functionLinenumber: 544
    functionLinenumberEnd: 550
    functionName: SMySQL::SMySQL
    functionSourceFile: /src/pdns/modules/gmysqlbackend/smysql.cc
    functionUses: 1
    functionsReached:
    - SMySQL::connect
    - std::move
    linkageType: ''
    returnType: void
    signature: "void SMySQL::SMySQL(Logr::log_t log, string database, string host,
      uint16_t port, string msocket, string user,\n               string password,
      string group, bool setIsolation, unsigned int timeout, bool threadCleanup)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - state
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 555
      start: 552
    functionDepth: 0
    functionLinenumber: 552
    functionLinenumberEnd: 555
    functionName: SMySQL::setLog
    functionSourceFile: /src/pdns/modules/gmysqlbackend/smysql.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void SMySQL::setLog(bool state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mysql_close
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:559,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 560
      start: 557
    functionDepth: 0
    functionLinenumber: 557
    functionLinenumberEnd: 560
    functionName: SMySQL::~SMySQL()
    functionSourceFile: /src/pdns/modules/gmysqlbackend/smysql.cc
    functionUses: 0
    functionsReached:
    - mysql_close
    linkageType: ''
    returnType: void
    signature: void SMySQL::~SMySQL()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SSqlException
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:564,1
    - Dst: string
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:564,1
    - Dst: std::to_string
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:564,1
    - Dst: mysql_errno
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:564,1
    - Dst: string
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:564,1
    - Dst: mysql_sqlstate
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:564,1
    - Dst: mysql_error
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:564,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' reason'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 565
      start: 562
    functionDepth: 0
    functionLinenumber: 562
    functionLinenumberEnd: 565
    functionName: SMySQL::sPerrorException
    functionSourceFile: /src/pdns/modules/gmysqlbackend/smysql.cc
    functionUses: 1
    functionsReached:
    - std::to_string
    - mysql_error
    - string
    - mysql_errno
    - SSqlException
    - mysql_sqlstate
    linkageType: ''
    returnType: SSqlException
    signature: SSqlException SMySQL::sPerrorException(const string& reason)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::make_unique<SMySQLStatement>
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:569,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' query'
    - nparams
    argTypes:
    - string
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 570
      start: 567
    functionDepth: 0
    functionLinenumber: 567
    functionLinenumberEnd: 570
    functionName: SMySQL::prepare
    functionSourceFile: /src/pdns/modules/gmysqlbackend/smysql.cc
    functionUses: 0
    functionsReached:
    - std::make_unique<SMySQLStatement>
    linkageType: ''
    returnType: std::unique_ptr<SSqlStatement>
    signature: std::unique_ptr<SSqlStatement> SMySQL::prepare(const string& query,
      int nparams)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: SLOG
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:575,1
    - Dst: info
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:576,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:576,1
    - Dst: mysql_query
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:580,1
    - Dst: c_str
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:580,1
    - Dst: SMySQL::sPerrorException
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:581,1
    - Dst: std::to_string
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:581,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 1
    argNames:
    - ' query'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 582
      start: 572
    functionDepth: 1
    functionLinenumber: 572
    functionLinenumberEnd: 582
    functionName: SMySQL::execute
    functionSourceFile: /src/pdns/modules/gmysqlbackend/smysql.cc
    functionUses: 0
    functionsReached:
    - SLOG
    - std::to_string
    - Logging::Loggable
    - SMySQL::sPerrorException
    - mysql_query
    - info
    - c_str
    linkageType: ''
    returnType: void
    signature: void SMySQL::execute(const string& query)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SMySQL::execute
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:586,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 587
      start: 584
    functionDepth: 2
    functionLinenumber: 584
    functionLinenumberEnd: 587
    functionName: SMySQL::startTransaction
    functionSourceFile: /src/pdns/modules/gmysqlbackend/smysql.cc
    functionUses: 0
    functionsReached:
    - SMySQL::execute
    linkageType: ''
    returnType: void
    signature: void SMySQL::startTransaction()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SMySQL::execute
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:591,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 592
      start: 589
    functionDepth: 2
    functionLinenumber: 589
    functionLinenumberEnd: 592
    functionName: SMySQL::commit
    functionSourceFile: /src/pdns/modules/gmysqlbackend/smysql.cc
    functionUses: 0
    functionsReached:
    - SMySQL::execute
    linkageType: ''
    returnType: void
    signature: void SMySQL::commit()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SMySQL::execute
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:596,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 597
      start: 594
    functionDepth: 2
    functionLinenumber: 594
    functionLinenumberEnd: 597
    functionName: SMySQL::rollback
    functionSourceFile: /src/pdns/modules/gmysqlbackend/smysql.cc
    functionUses: 0
    functionsReached:
    - SMySQL::execute
    linkageType: ''
    returnType: void
    signature: void SMySQL::rollback()
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: isNonBlocking
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:603,1
    - Dst: setNonBlocking
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:606,1
    - Dst: isTCPSocketUsable
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:611,1
    - Dst: setBlocking
      Src: /src/pdns/modules/gmysqlbackend/smysql.cc:614,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 620
      start: 599
    functionDepth: 0
    functionLinenumber: 599
    functionLinenumberEnd: 620
    functionName: SMySQL::isConnectionUsable
    functionSourceFile: /src/pdns/modules/gmysqlbackend/smysql.cc
    functionUses: 0
    functionsReached:
    - setNonBlocking
    - isNonBlocking
    - setBlocking
    - isTCPSocketUsable
    linkageType: ''
    returnType: bool
    signature: bool SMySQL::isConnectionUsable()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ArgvMap::ArgvMap
      Src: /src/pdns/modules/remotebackend/test-remotebackend-unix.cc:56,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 54
    functionDepth: 0
    functionLinenumber: 54
    functionLinenumberEnd: 58
    functionName: arg
    functionSourceFile: /src/pdns/modules/remotebackend/test-remotebackend-unix.cc
    functionUses: 212
    functionsReached:
    - ArgvMap::ArgvMap
    linkageType: ''
    returnType: ArgvMap
    signature: ArgvMap & arg()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: arg
      Src: /src/pdns/modules/remotebackend/test-remotebackend-unix.cc:75,1
    - Dst: std::make_unique<RemoteLoader>
      Src: /src/pdns/modules/remotebackend/test-remotebackend-unix.cc:76,1
    - Dst: BackendMakers
      Src: /src/pdns/modules/remotebackend/test-remotebackend-unix.cc:77,1
    - Dst: arg
      Src: /src/pdns/modules/remotebackend/test-remotebackend-unix.cc:79,1
    - Dst: arg
      Src: /src/pdns/modules/remotebackend/test-remotebackend-unix.cc:80,1
    - Dst: std::move
      Src: /src/pdns/modules/remotebackend/test-remotebackend-unix.cc:81,1
    - Dst: BackendMakers
      Src: /src/pdns/modules/remotebackend/test-remotebackend-unix.cc:81,1
    - Dst: reportAllTypes
      Src: /src/pdns/modules/remotebackend/test-remotebackend-unix.cc:82,1
    - Dst: BOOST_TEST_MESSAGE
      Src: /src/pdns/modules/remotebackend/test-remotebackend-unix.cc:85,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 70
    functionDepth: 1
    functionLinenumber: 70
    functionLinenumberEnd: 87
    functionName: RemotebackendSetup
    functionSourceFile: /src/pdns/modules/remotebackend/test-remotebackend-unix.cc
    functionUses: 0
    functionsReached:
    - BackendMakers
    - std::move
    - BOOST_TEST_MESSAGE
    - reportAllTypes
    - std::make_unique<RemoteLoader>
    - arg
    linkageType: ''
    returnType: void
    signature: void RemotebackendSetup()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 88
    functionDepth: 0
    functionLinenumber: 88
    functionLinenumberEnd: 88
    functionName: ~RemotebackendSetup()
    functionSourceFile: /src/pdns/modules/remotebackend/test-remotebackend-unix.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~RemotebackendSetup()
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: std::unique_ptr<void, int (*)(void*)>
      Src: /src/pdns/modules/remotebackend/zmqconnector.cc:29,1
    - Dst: zmq_init
      Src: /src/pdns/modules/remotebackend/zmqconnector.cc:29,1
    - Dst: std::unique_ptr<void, int (*)(void*)>
      Src: /src/pdns/modules/remotebackend/zmqconnector.cc:29,1
    - Dst: zmq_socket
      Src: /src/pdns/modules/remotebackend/zmqconnector.cc:29,1
    - Dst: get
      Src: /src/pdns/modules/remotebackend/zmqconnector.cc:29,1
    - Dst: std::map<std::string, std::string>::count
      Src: /src/pdns/modules/remotebackend/zmqconnector.cc:36,1
    - Dst: SLOG
      Src: /src/pdns/modules/remotebackend/zmqconnector.cc:37,1
    - Dst: info
      Src: /src/pdns/modules/remotebackend/zmqconnector.cc:38,1
    - Dst: PDNSException
      Src: /src/pdns/modules/remotebackend/zmqconnector.cc:39,1
    - Dst: std::map<std::string, std::string>::find
      Src: /src/pdns/modules/remotebackend/zmqconnector.cc:41,1
    - Dst: std::map<std::string, std::string>::find
      Src: /src/pdns/modules/remotebackend/zmqconnector.cc:45,1
    - Dst: std::map<std::string, std::string>::end
      Src: /src/pdns/modules/remotebackend/zmqconnector.cc:45,1
    - Dst: std::stoi
      Src: /src/pdns/modules/remotebackend/zmqconnector.cc:46,1
    - Dst: std::map<std::string, std::string>::find
      Src: /src/pdns/modules/remotebackend/zmqconnector.cc:46,1
    - Dst: zmq_setsockopt
      Src: /src/pdns/modules/remotebackend/zmqconnector.cc:49,1
    - Dst: get
      Src: /src/pdns/modules/remotebackend/zmqconnector.cc:49,1
    - Dst: zmq_connect
      Src: /src/pdns/modules/remotebackend/zmqconnector.cc:51,1
    - Dst: ZeroMQConnector::d_sock::get
      Src: /src/pdns/modules/remotebackend/zmqconnector.cc:51,1
    - Dst: ZeroMQConnector::d_endpoint::c_str
      Src: /src/pdns/modules/remotebackend/zmqconnector.cc:51,1
    - Dst: SLOG
      Src: /src/pdns/modules/remotebackend/zmqconnector.cc:52,1
    - Dst: zmq_strerror
      Src: /src/pdns/modules/remotebackend/zmqconnector.cc:52,1
    - Dst: error
      Src: /src/pdns/modules/remotebackend/zmqconnector.cc:53,1
    - Dst: zmq_strerror
      Src: /src/pdns/modules/remotebackend/zmqconnector.cc:53,1
    - Dst: PDNSException
      Src: /src/pdns/modules/remotebackend/zmqconnector.cc:55,1
    - Dst: Json
      Src: /src/pdns/modules/remotebackend/zmqconnector.cc:59,1
    - Dst: Json
      Src: /src/pdns/modules/remotebackend/zmqconnector.cc:61,1
    - Dst: ZeroMQConnector::send
      Src: /src/pdns/modules/remotebackend/zmqconnector.cc:64,1
    - Dst: ZeroMQConnector::recv
      Src: /src/pdns/modules/remotebackend/zmqconnector.cc:66,1
    - Dst: SLOG
      Src: /src/pdns/modules/remotebackend/zmqconnector.cc:67,1
    - Dst: info
      Src: /src/pdns/modules/remotebackend/zmqconnector.cc:68,1
    - Dst: PDNSException
      Src: /src/pdns/modules/remotebackend/zmqconnector.cc:69,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 24
    argCount: 2
    argNames:
    - log
    - options
    argTypes:
    - Logr::log_t
    - std::map<std::string, std::string>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 28
    functionDepth: 0
    functionLinenumber: 28
    functionLinenumberEnd: 71
    functionName: ZeroMQConnector::ZeroMQConnector
    functionSourceFile: /src/pdns/modules/remotebackend/zmqconnector.cc
    functionUses: 0
    functionsReached:
    - PDNSException
    - ZeroMQConnector::d_sock::get
    - zmq_socket
    - error
    - std::map<std::string, std::string>::count
    - zmq_init
    - SLOG
    - zmq_connect
    - std::map<std::string, std::string>::find
    - ZeroMQConnector::send
    - ZeroMQConnector::recv
    - std::unique_ptr<void, int (*)(void*)>
    - get
    - std::map<std::string, std::string>::end
    - Json
    - zmq_setsockopt
    - ZeroMQConnector::d_endpoint::c_str
    - info
    - std::stoi
    - zmq_strerror
    linkageType: ''
    returnType: void
    signature: void ZeroMQConnector::ZeroMQConnector(Logr::log_t log, std::map<std::string,
      std::string> options)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 73
    functionDepth: 0
    functionLinenumber: 73
    functionLinenumberEnd: 73
    functionName: ZeroMQConnector::~ZeroMQConnector()
    functionSourceFile: /src/pdns/modules/remotebackend/zmqconnector.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ZeroMQConnector::~ZeroMQConnector()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dump
      Src: /src/pdns/modules/remotebackend/zmqconnector.cc:77,1
    - Dst: zmq_msg_init_size
      Src: /src/pdns/modules/remotebackend/zmqconnector.cc:80,1
    - Dst: auto::size
      Src: /src/pdns/modules/remotebackend/zmqconnector.cc:80,1
    - Dst: auto::copy
      Src: /src/pdns/modules/remotebackend/zmqconnector.cc:81,1
    - Dst: reinterpret_cast<char*>
      Src: /src/pdns/modules/remotebackend/zmqconnector.cc:81,1
    - Dst: zmq_msg_data
      Src: /src/pdns/modules/remotebackend/zmqconnector.cc:81,1
    - Dst: auto::size
      Src: /src/pdns/modules/remotebackend/zmqconnector.cc:81,1
    - Dst: get
      Src: /src/pdns/modules/remotebackend/zmqconnector.cc:85,1
    - Dst: zmq_poll
      Src: /src/pdns/modules/remotebackend/zmqconnector.cc:90,1
    - Dst: zmq_msg_send
      Src: /src/pdns/modules/remotebackend/zmqconnector.cc:91,1
    - Dst: ZeroMQConnector::d_sock::get
      Src: /src/pdns/modules/remotebackend/zmqconnector.cc:91,1
    - Dst: SLOG
      Src: /src/pdns/modules/remotebackend/zmqconnector.cc:93,1
    - Dst: zmq_strerror
      Src: /src/pdns/modules/remotebackend/zmqconnector.cc:93,1
    - Dst: error
      Src: /src/pdns/modules/remotebackend/zmqconnector.cc:94,1
    - Dst: zmq_strerror
      Src: /src/pdns/modules/remotebackend/zmqconnector.cc:94,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/remotebackend/zmqconnector.cc:94,1
    - Dst: auto::size
      Src: /src/pdns/modules/remotebackend/zmqconnector.cc:97,1
    - Dst: SLOG
      Src: /src/pdns/modules/remotebackend/zmqconnector.cc:103,1
    - Dst: what
      Src: /src/pdns/modules/remotebackend/zmqconnector.cc:103,1
    - Dst: error
      Src: /src/pdns/modules/remotebackend/zmqconnector.cc:104,1
    - Dst: what
      Src: /src/pdns/modules/remotebackend/zmqconnector.cc:104,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/remotebackend/zmqconnector.cc:104,1
    - Dst: PDNSException
      Src: /src/pdns/modules/remotebackend/zmqconnector.cc:105,1
    - Dst: what
      Src: /src/pdns/modules/remotebackend/zmqconnector.cc:105,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 1
    argNames:
    - ' input'
    argTypes:
    - Json
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 75
    functionDepth: 1
    functionLinenumber: 75
    functionLinenumberEnd: 109
    functionName: ZeroMQConnector::send_message
    functionSourceFile: /src/pdns/modules/remotebackend/zmqconnector.cc
    functionUses: 0
    functionsReached:
    - reinterpret_cast<char*>
    - zmq_msg_send
    - zmq_msg_data
    - SLOG
    - Logging::Loggable
    - PDNSException
    - what
    - dump
    - get
    - ZeroMQConnector::d_sock::get
    - zmq_msg_init_size
    - error
    - zmq_poll
    - auto::copy
    - auto::size
    - zmq_strerror
    linkageType: ''
    returnType: int
    signature: int ZeroMQConnector::send_message(const Json& input)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: get
      Src: /src/pdns/modules/remotebackend/zmqconnector.cc:118,1
    - Dst: zmq_poll
      Src: /src/pdns/modules/remotebackend/zmqconnector.cc:126,1
    - Dst: zmq_msg_init
      Src: /src/pdns/modules/remotebackend/zmqconnector.cc:131,1
    - Dst: zmq_msg_recv
      Src: /src/pdns/modules/remotebackend/zmqconnector.cc:133,1
    - Dst: ZeroMQConnector::d_sock::get
      Src: /src/pdns/modules/remotebackend/zmqconnector.cc:133,1
    - Dst: zmq_msg_size
      Src: /src/pdns/modules/remotebackend/zmqconnector.cc:135,1
    - Dst: string::assign
      Src: /src/pdns/modules/remotebackend/zmqconnector.cc:136,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/modules/remotebackend/zmqconnector.cc:136,1
    - Dst: zmq_msg_data
      Src: /src/pdns/modules/remotebackend/zmqconnector.cc:136,1
    - Dst: zmq_msg_close
      Src: /src/pdns/modules/remotebackend/zmqconnector.cc:137,1
    - Dst: json11::Json::parse
      Src: /src/pdns/modules/remotebackend/zmqconnector.cc:138,1
    - Dst: SLOG
      Src: /src/pdns/modules/remotebackend/zmqconnector.cc:143,1
    - Dst: error
      Src: /src/pdns/modules/remotebackend/zmqconnector.cc:144,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/remotebackend/zmqconnector.cc:144,1
    - Dst: SLOG
      Src: /src/pdns/modules/remotebackend/zmqconnector.cc:157,1
    - Dst: what
      Src: /src/pdns/modules/remotebackend/zmqconnector.cc:157,1
    - Dst: error
      Src: /src/pdns/modules/remotebackend/zmqconnector.cc:158,1
    - Dst: what
      Src: /src/pdns/modules/remotebackend/zmqconnector.cc:158,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/remotebackend/zmqconnector.cc:158,1
    - Dst: PDNSException
      Src: /src/pdns/modules/remotebackend/zmqconnector.cc:159,1
    - Dst: what
      Src: /src/pdns/modules/remotebackend/zmqconnector.cc:159,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 32
    argCount: 1
    argNames:
    - ' output'
    argTypes:
    - Json
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 163
      start: 111
    functionDepth: 1
    functionLinenumber: 111
    functionLinenumberEnd: 163
    functionName: ZeroMQConnector::recv_message
    functionSourceFile: /src/pdns/modules/remotebackend/zmqconnector.cc
    functionUses: 0
    functionsReached:
    - string::assign
    - zmq_msg_data
    - SLOG
    - json11::Json::parse
    - Logging::Loggable
    - what
    - PDNSException
    - zmq_msg_recv
    - zmq_msg_init
    - ZeroMQConnector::d_sock::get
    - get
    - reinterpret_cast<const char*>
    - zmq_msg_size
    - error
    - zmq_msg_close
    - zmq_poll
    linkageType: ''
    returnType: int
    signature: int ZeroMQConnector::recv_message(Json& output)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ArgvMap::ArgvMap
      Src: /src/pdns/modules/remotebackend/test-remotebackend-pipe.cc:56,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 54
    functionDepth: 0
    functionLinenumber: 54
    functionLinenumberEnd: 58
    functionName: arg
    functionSourceFile: /src/pdns/modules/remotebackend/test-remotebackend-pipe.cc
    functionUses: 213
    functionsReached:
    - ArgvMap::ArgvMap
    linkageType: ''
    returnType: ArgvMap
    signature: ArgvMap & arg()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: arg
      Src: /src/pdns/modules/remotebackend/test-remotebackend-pipe.cc:75,1
    - Dst: std::make_unique<RemoteLoader>
      Src: /src/pdns/modules/remotebackend/test-remotebackend-pipe.cc:76,1
    - Dst: BackendMakers
      Src: /src/pdns/modules/remotebackend/test-remotebackend-pipe.cc:77,1
    - Dst: arg
      Src: /src/pdns/modules/remotebackend/test-remotebackend-pipe.cc:79,1
    - Dst: arg
      Src: /src/pdns/modules/remotebackend/test-remotebackend-pipe.cc:80,1
    - Dst: std::move
      Src: /src/pdns/modules/remotebackend/test-remotebackend-pipe.cc:81,1
    - Dst: BackendMakers
      Src: /src/pdns/modules/remotebackend/test-remotebackend-pipe.cc:81,1
    - Dst: reportAllTypes
      Src: /src/pdns/modules/remotebackend/test-remotebackend-pipe.cc:82,1
    - Dst: BOOST_TEST_MESSAGE
      Src: /src/pdns/modules/remotebackend/test-remotebackend-pipe.cc:85,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 70
    functionDepth: 1
    functionLinenumber: 70
    functionLinenumberEnd: 87
    functionName: RemotebackendSetup
    functionSourceFile: /src/pdns/modules/remotebackend/test-remotebackend-pipe.cc
    functionUses: 0
    functionsReached:
    - BackendMakers
    - std::move
    - BOOST_TEST_MESSAGE
    - reportAllTypes
    - std::make_unique<RemoteLoader>
    - arg
    linkageType: ''
    returnType: void
    signature: void RemotebackendSetup()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 88
    functionDepth: 0
    functionLinenumber: 88
    functionLinenumberEnd: 88
    functionName: ~RemotebackendSetup()
    functionSourceFile: /src/pdns/modules/remotebackend/test-remotebackend-pipe.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~RemotebackendSetup()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ArgvMap::ArgvMap
      Src: /src/pdns/modules/remotebackend/test-remotebackend-http.cc:46,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 44
    functionDepth: 0
    functionLinenumber: 44
    functionLinenumberEnd: 48
    functionName: arg
    functionSourceFile: /src/pdns/modules/remotebackend/test-remotebackend-http.cc
    functionUses: 214
    functionsReached:
    - ArgvMap::ArgvMap
    linkageType: ''
    returnType: ArgvMap
    signature: ArgvMap & arg()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: arg
      Src: /src/pdns/modules/remotebackend/test-remotebackend-http.cc:77,1
    - Dst: std::make_unique<RemoteLoader>
      Src: /src/pdns/modules/remotebackend/test-remotebackend-http.cc:78,1
    - Dst: BackendMakers
      Src: /src/pdns/modules/remotebackend/test-remotebackend-http.cc:79,1
    - Dst: arg
      Src: /src/pdns/modules/remotebackend/test-remotebackend-http.cc:81,1
    - Dst: arg
      Src: /src/pdns/modules/remotebackend/test-remotebackend-http.cc:82,1
    - Dst: std::move
      Src: /src/pdns/modules/remotebackend/test-remotebackend-http.cc:83,1
    - Dst: BackendMakers
      Src: /src/pdns/modules/remotebackend/test-remotebackend-http.cc:83,1
    - Dst: BOOST_TEST_MESSAGE
      Src: /src/pdns/modules/remotebackend/test-remotebackend-http.cc:86,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 72
    functionDepth: 1
    functionLinenumber: 72
    functionLinenumberEnd: 88
    functionName: RemotebackendSetup
    functionSourceFile: /src/pdns/modules/remotebackend/test-remotebackend-http.cc
    functionUses: 0
    functionsReached:
    - BackendMakers
    - BOOST_TEST_MESSAGE
    - std::move
    - std::make_unique<RemoteLoader>
    - arg
    linkageType: ''
    returnType: void
    signature: void RemotebackendSetup()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 89
    functionDepth: 0
    functionLinenumber: 89
    functionLinenumberEnd: 89
    functionName: ~RemotebackendSetup()
    functionSourceFile: /src/pdns/modules/remotebackend/test-remotebackend-http.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~RemotebackendSetup()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: send_message
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:45,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' value'
    argTypes:
    - Json
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 46
    functionName: Connector::send
    functionSourceFile: /src/pdns/modules/remotebackend/remotebackend.cc
    functionUses: 1
    functionsReached:
    - send_message
    linkageType: ''
    returnType: bool
    signature: bool Connector::send(Json& value)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: recv_message
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:56,1
    - Dst: Json
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:58,1
    - Dst: PDNSException
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:59,1
    - Dst: is_bool
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:61,1
    - Dst: boolFromJson
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:61,1
    - Dst: array_items
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:64,1
    - Dst: SLOG
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:65,1
    - Dst: string_value
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:65,1
    - Dst: info
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:66,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:66,1
    - Dst: string_value
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:66,1
    - Dst: PDNSException
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:70,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 13
    argCount: 1
    argNames:
    - ' value'
    argTypes:
    - Json
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 54
    functionDepth: 0
    functionLinenumber: 54
    functionLinenumberEnd: 71
    functionName: Connector::recv
    functionSourceFile: /src/pdns/modules/remotebackend/remotebackend.cc
    functionUses: 1
    functionsReached:
    - recv_message
    - SLOG
    - string_value
    - Logging::Loggable
    - PDNSException
    - is_bool
    - info
    - boolFromJson
    - Json
    - array_items
    linkageType: ''
    returnType: bool
    signature: bool Connector::recv(Json& value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: setArgPrefix
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:78,1
    - Dst: getArg
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:80,1
    - Dst: mustDo
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:81,1
    - Dst: RemoteBackend::build
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:83,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - ' suffix'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 76
    functionDepth: 1
    functionLinenumber: 76
    functionLinenumberEnd: 84
    functionName: RemoteBackend::RemoteBackend
    functionSourceFile: /src/pdns/modules/remotebackend/remotebackend.cc
    functionUses: 0
    functionsReached:
    - setArgPrefix
    - RemoteBackend::build
    - getArg
    - mustDo
    linkageType: ''
    returnType: void
    signature: void RemoteBackend::RemoteBackend(const std::string& suffix)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 86
    functionDepth: 0
    functionLinenumber: 86
    functionLinenumberEnd: 86
    functionName: RemoteBackend::~RemoteBackend()
    functionSourceFile: /src/pdns/modules/remotebackend/remotebackend.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void RemoteBackend::~RemoteBackend()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: RemoteBackend::send
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:91,1
    - Dst: RemoteBackend::connector::reset
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:93,1
    - Dst: RemoteBackend::build
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:94,1
    - Dst: DBException
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:95,1
    - Dst: DBException
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:99,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 1
    argNames:
    - ' value'
    argTypes:
    - Json
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 88
    functionDepth: 1
    functionLinenumber: 88
    functionLinenumberEnd: 102
    functionName: RemoteBackend::send
    functionSourceFile: /src/pdns/modules/remotebackend/remotebackend.cc
    functionUses: 1
    functionsReached:
    - DBException
    - RemoteBackend::build
    - RemoteBackend::send
    - RemoteBackend::connector::reset
    linkageType: ''
    returnType: bool
    signature: bool RemoteBackend::send(Json& value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RemoteBackend::recv
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:107,1
    - Dst: RemoteBackend::connector::reset
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:110,1
    - Dst: RemoteBackend::build
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:111,1
    - Dst: DBException
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:112,1
    - Dst: RemoteBackend::connector::reset
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:115,1
    - Dst: RemoteBackend::build
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:116,1
    - Dst: DBException
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:117,1
    - Dst: std::string
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:117,1
    - Dst: what
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:117,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - ' value'
    argTypes:
    - Json
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 119
      start: 104
    functionDepth: 1
    functionLinenumber: 104
    functionLinenumberEnd: 119
    functionName: RemoteBackend::recv
    functionSourceFile: /src/pdns/modules/remotebackend/remotebackend.cc
    functionUses: 1
    functionsReached:
    - RemoteBackend::connector::reset
    - what
    - RemoteBackend::build
    - DBException
    - RemoteBackend::recv
    - std::string
    linkageType: ''
    returnType: bool
    signature: bool RemoteBackend::recv(Json& value)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: find_first_of
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:134,1
    - Dst: PDNSException
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:136,1
    - Dst: substr
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:139,1
    - Dst: substr
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:140,1
    - Dst: stringtok
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:143,1
    - Dst: find_first_not_of
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:150,1
    - Dst: find_first_of
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:155,1
    - Dst: substr
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:162,1
    - Dst: substr
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:163,1
    - Dst: std::move
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:165,1
    - Dst: std::make_unique<UnixsocketConnector>
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:170,1
    - Dst: std::make_unique<HTTPConnector>
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:173,1
    - Dst: std::make_unique<ZeroMQConnector>
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:177,1
    - Dst: PDNSException
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:179,1
    - Dst: std::make_unique<PipeConnector>
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:183,1
    - Dst: PDNSException
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:186,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 37
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 190
      start: 125
    functionDepth: 0
    functionLinenumber: 125
    functionLinenumberEnd: 190
    functionName: RemoteBackend::build
    functionSourceFile: /src/pdns/modules/remotebackend/remotebackend.cc
    functionUses: 3
    functionsReached:
    - std::make_unique<ZeroMQConnector>
    - std::move
    - stringtok
    - PDNSException
    - find_first_not_of
    - find_first_of
    - substr
    - std::make_unique<HTTPConnector>
    - std::make_unique<UnixsocketConnector>
    - std::make_unique<PipeConnector>
    linkageType: ''
    returnType: int
    signature: int RemoteBackend::build()
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: PDNSException
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:199,1
    - Dst: DNSPacket*::getLocal
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:207,1
    - Dst: DNSPacket*::getRealRemote
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:208,1
    - Dst: DNSPacket*::getInnerRemote
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:209,1
    - Dst: toString
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:214,1
    - Dst: toString
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:214,1
    - Dst: RemoteBackend::send
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:216,1
    - Dst: RemoteBackend::recv
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:216,1
    - Dst: is_array
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:221,1
    - Dst: array_items
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:221,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 16
    argCount: 4
    argNames:
    - ' qtype'
    - ' qdomain'
    - zoneId
    - pkt_p
    argTypes:
    - QType
    - DNSName
    - domainid_t
    - DNSPacket*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 226
      start: 196
    functionDepth: 2
    functionLinenumber: 196
    functionLinenumberEnd: 226
    functionName: RemoteBackend::lookup
    functionSourceFile: /src/pdns/modules/remotebackend/remotebackend.cc
    functionUses: 0
    functionsReached:
    - toString
    - PDNSException
    - DNSPacket*::getLocal
    - DNSPacket*::getInnerRemote
    - RemoteBackend::send
    - RemoteBackend::recv
    - is_array
    - array_items
    - DNSPacket*::getRealRemote
    linkageType: ''
    returnType: void
    signature: void RemoteBackend::lookup(const QType& qtype, const DNSName& qdomain,
      domainid_t zoneId, DNSPacket* pkt_p)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: PDNSException
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:232,1
    - Dst: toString
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:241,1
    - Dst: toString
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:241,1
    - Dst: RemoteBackend::send
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:243,1
    - Dst: RemoteBackend::recv
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:243,1
    - Dst: is_array
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:248,1
    - Dst: array_items
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:248,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 11
    argCount: 4
    argNames:
    - ' qtype'
    - ' qdomain'
    - zoneId
    - include_disabled
    argTypes:
    - QType
    - DNSName
    - domainid_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 253
      start: 229
    functionDepth: 2
    functionLinenumber: 229
    functionLinenumberEnd: 253
    functionName: RemoteBackend::APILookup
    functionSourceFile: /src/pdns/modules/remotebackend/remotebackend.cc
    functionUses: 0
    functionsReached:
    - toString
    - PDNSException
    - RemoteBackend::send
    - RemoteBackend::recv
    - is_array
    - array_items
    linkageType: ''
    returnType: void
    signature: void RemoteBackend::APILookup(const QType& qtype, const DNSName& qdomain,
      domainid_t zoneId, bool include_disabled)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: PDNSException
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:258,1
    - Dst: toString
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:263,1
    - Dst: RemoteBackend::send
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:265,1
    - Dst: RemoteBackend::recv
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:265,1
    - Dst: is_array
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:268,1
    - Dst: array_items
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:268,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 12
    argCount: 3
    argNames:
    - ' target'
    - domain_id
    - include_disabled
    argTypes:
    - ZoneName
    - domainid_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 274
      start: 255
    functionDepth: 2
    functionLinenumber: 255
    functionLinenumberEnd: 274
    functionName: RemoteBackend::list
    functionSourceFile: /src/pdns/modules/remotebackend/remotebackend.cc
    functionUses: 0
    functionsReached:
    - toString
    - PDNSException
    - RemoteBackend::send
    - RemoteBackend::recv
    - is_array
    - array_items
    linkageType: ''
    returnType: bool
    signature: bool RemoteBackend::list(const ZoneName& target, domainid_t domain_id,
      bool include_disabled)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: stringFromJson
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:282,1
    - Dst: DNSName
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:283,1
    - Dst: stringFromJson
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:283,1
    - Dst: stringFromJson
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:285,1
    - Dst: int_value
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:286,1
    - Dst: static_cast<domainid_t>
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:287,1
    - Dst: intFromJson
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:287,1
    - Dst: intFromJson
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:289,1
    - Dst: int_value
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:294,1
    - Dst: static_cast<int>
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:298,1
    - Dst: array_items
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:298,1
    - Dst: Json
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:299,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 22
    argCount: 1
    argNames:
    - ' rr'
    argTypes:
    - DNSResourceRecord
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 303
      start: 276
    functionDepth: 0
    functionLinenumber: 276
    functionLinenumberEnd: 303
    functionName: RemoteBackend::get
    functionSourceFile: /src/pdns/modules/remotebackend/remotebackend.cc
    functionUses: 0
    functionsReached:
    - intFromJson
    - stringFromJson
    - int_value
    - DNSName
    - static_cast<domainid_t>
    - Json
    - array_items
    - static_cast<int>
    linkageType: ''
    returnType: bool
    signature: bool RemoteBackend::get(DNSResourceRecord& rr)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Json
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:315,1
    - Dst: toString
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:315,1
    - Dst: RemoteBackend::send
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:318,1
    - Dst: RemoteBackend::recv
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:318,1
    - Dst: DNSName
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:322,1
    - Dst: stringFromJson
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:322,1
    - Dst: clear
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:323,1
    - Dst: clear
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:324,1
    - Dst: Json
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:325,1
    - Dst: DNSName
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:326,1
    - Dst: stringFromJson
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:326,1
    - Dst: Json
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:328,1
    - Dst: DNSName
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:329,1
    - Dst: stringFromJson
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:329,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 5
    argNames:
    - id
    - ' qname'
    - ' unhashed'
    - ' before'
    - ' after'
    argTypes:
    - domainid_t
    - DNSName
    - DNSName
    - DNSName
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 333
      start: 306
    functionDepth: 2
    functionLinenumber: 306
    functionLinenumberEnd: 333
    functionName: RemoteBackend::getBeforeAndAfterNamesAbsolute
    functionSourceFile: /src/pdns/modules/remotebackend/remotebackend.cc
    functionUses: 0
    functionsReached:
    - toString
    - stringFromJson
    - RemoteBackend::send
    - DNSName
    - RemoteBackend::recv
    - clear
    - Json
    linkageType: ''
    returnType: bool
    signature: bool RemoteBackend::getBeforeAndAfterNamesAbsolute(domainid_t id, const
      DNSName& qname, DNSName& unhashed, DNSName& before, DNSName& after)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: toString
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:339,1
    - Dst: RemoteBackend::send
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:341,1
    - Dst: clear
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:345,1
    - Dst: RemoteBackend::recv
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:349,1
    - Dst: object_items
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:353,1
    - Dst: second::is_array
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:354,1
    - Dst: second::array_items
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:355,1
    - Dst: push_back
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:356,1
    - Dst: RemoteBackend::asString
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:356,1
    - Dst: push_back
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:360,1
    - Dst: RemoteBackend::asString
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:360,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 2
    argNames:
    - ' name'
    - ' meta'
    argTypes:
    - ZoneName
    - std::map<std::string, std::vector<std::string>>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 365
      start: 335
    functionDepth: 2
    functionLinenumber: 335
    functionLinenumberEnd: 365
    functionName: RemoteBackend::getAllDomainMetadata
    functionSourceFile: /src/pdns/modules/remotebackend/remotebackend.cc
    functionUses: 0
    functionsReached:
    - toString
    - push_back
    - RemoteBackend::send
    - RemoteBackend::recv
    - RemoteBackend::asString
    - second::is_array
    - clear
    - second::array_items
    - object_items
    linkageType: ''
    returnType: bool
    signature: bool RemoteBackend::getAllDomainMetadata(const ZoneName& name, std::map<std::string,
      std::vector<std::string>>& meta)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: toString
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:371,1
    - Dst: RemoteBackend::send
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:373,1
    - Dst: clear
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:377,1
    - Dst: RemoteBackend::recv
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:381,1
    - Dst: is_array
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:385,1
    - Dst: array_items
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:386,1
    - Dst: push_back
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:387,1
    - Dst: string_value
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:387,1
    - Dst: is_string
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:390,1
    - Dst: push_back
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:391,1
    - Dst: string_value
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:391,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 3
    argNames:
    - ' name'
    - ' kind'
    - ' meta'
    argTypes:
    - ZoneName
    - std::string
    - std::vector<std::string>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 395
      start: 367
    functionDepth: 2
    functionLinenumber: 367
    functionLinenumberEnd: 395
    functionName: RemoteBackend::getDomainMetadata
    functionSourceFile: /src/pdns/modules/remotebackend/remotebackend.cc
    functionUses: 0
    functionsReached:
    - is_string
    - toString
    - string_value
    - push_back
    - RemoteBackend::send
    - RemoteBackend::recv
    - is_array
    - clear
    - array_items
    linkageType: ''
    returnType: bool
    signature: bool RemoteBackend::getDomainMetadata(const ZoneName& name, const std::string&
      kind, std::vector<std::string>& meta)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: toString
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:401,1
    - Dst: RemoteBackend::send
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:404,1
    - Dst: RemoteBackend::recv
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:404,1
    - Dst: boolFromJson
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:408,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 3
    argNames:
    - ' name'
    - ' kind'
    - ' meta'
    argTypes:
    - ZoneName
    - std::string
    - std::vector<std::string>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 409
      start: 397
    functionDepth: 2
    functionLinenumber: 397
    functionLinenumberEnd: 409
    functionName: RemoteBackend::setDomainMetadata
    functionSourceFile: /src/pdns/modules/remotebackend/remotebackend.cc
    functionUses: 0
    functionsReached:
    - RemoteBackend::send
    - boolFromJson
    - toString
    - RemoteBackend::recv
    linkageType: ''
    returnType: bool
    signature: bool RemoteBackend::setDomainMetadata(const ZoneName& name, const std::string&
      kind, const std::vector<std::string>& meta)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: toString
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:420,1
    - Dst: RemoteBackend::send
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:423,1
    - Dst: RemoteBackend::recv
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:423,1
    - Dst: clear
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:427,1
    - Dst: array_items
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:429,1
    - Dst: intFromJson
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:431,1
    - Dst: intFromJson
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:432,1
    - Dst: RemoteBackend::asBool
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:433,1
    - Dst: boolFromJson
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:434,1
    - Dst: stringFromJson
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:435,1
    - Dst: emplace_back
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:436,1
    - Dst: std::move
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:436,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 2
    argNames:
    - ' name'
    - ' keys'
    argTypes:
    - ZoneName
    - std::vector<DNSBackend::KeyData>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 440
      start: 411
    functionDepth: 2
    functionLinenumber: 411
    functionLinenumberEnd: 440
    functionName: RemoteBackend::getDomainKeys
    functionSourceFile: /src/pdns/modules/remotebackend/remotebackend.cc
    functionUses: 0
    functionsReached:
    - intFromJson
    - toString
    - RemoteBackend::asBool
    - stringFromJson
    - std::move
    - RemoteBackend::send
    - RemoteBackend::recv
    - boolFromJson
    - emplace_back
    - clear
    - array_items
    linkageType: ''
    returnType: bool
    signature: bool RemoteBackend::getDomainKeys(const ZoneName& name, std::vector<DNSBackend::KeyData>&
      keys)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: toString
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:451,1
    - Dst: static_cast<int>
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:451,1
    - Dst: RemoteBackend::send
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:454,1
    - Dst: RemoteBackend::recv
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:454,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - ' name'
    - keyId
    argTypes:
    - ZoneName
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 455
      start: 442
    functionDepth: 2
    functionLinenumber: 442
    functionLinenumberEnd: 455
    functionName: RemoteBackend::removeDomainKey
    functionSourceFile: /src/pdns/modules/remotebackend/remotebackend.cc
    functionUses: 0
    functionsReached:
    - RemoteBackend::send
    - toString
    - RemoteBackend::recv
    - static_cast<int>
    linkageType: ''
    returnType: bool
    signature: bool RemoteBackend::removeDomainKey(const ZoneName& name, unsigned
      int keyId)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: toString
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:466,1
    - Dst: static_cast<int>
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:466,1
    - Dst: RemoteBackend::send
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:469,1
    - Dst: RemoteBackend::recv
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:469,1
    - Dst: int_value
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:473,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 3
    argNames:
    - ' name'
    - ' key'
    - ' keyId'
    argTypes:
    - ZoneName
    - KeyData
    - int64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 475
      start: 457
    functionDepth: 2
    functionLinenumber: 457
    functionLinenumberEnd: 475
    functionName: RemoteBackend::addDomainKey
    functionSourceFile: /src/pdns/modules/remotebackend/remotebackend.cc
    functionUses: 0
    functionsReached:
    - toString
    - int_value
    - RemoteBackend::send
    - RemoteBackend::recv
    - static_cast<int>
    linkageType: ''
    returnType: bool
    signature: bool RemoteBackend::addDomainKey(const ZoneName& name, const KeyData&
      key, int64_t& keyId)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: toString
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:486,1
    - Dst: static_cast<int>
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:486,1
    - Dst: RemoteBackend::send
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:489,1
    - Dst: RemoteBackend::recv
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:489,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - ' name'
    - keyId
    argTypes:
    - ZoneName
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 490
      start: 477
    functionDepth: 2
    functionLinenumber: 477
    functionLinenumberEnd: 490
    functionName: RemoteBackend::activateDomainKey
    functionSourceFile: /src/pdns/modules/remotebackend/remotebackend.cc
    functionUses: 0
    functionsReached:
    - RemoteBackend::send
    - toString
    - RemoteBackend::recv
    - static_cast<int>
    linkageType: ''
    returnType: bool
    signature: bool RemoteBackend::activateDomainKey(const ZoneName& name, unsigned
      int keyId)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: toString
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:501,1
    - Dst: static_cast<int>
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:501,1
    - Dst: RemoteBackend::send
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:504,1
    - Dst: RemoteBackend::recv
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:504,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - ' name'
    - keyId
    argTypes:
    - ZoneName
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 505
      start: 492
    functionDepth: 2
    functionLinenumber: 492
    functionLinenumberEnd: 505
    functionName: RemoteBackend::deactivateDomainKey
    functionSourceFile: /src/pdns/modules/remotebackend/remotebackend.cc
    functionUses: 0
    functionsReached:
    - RemoteBackend::send
    - toString
    - RemoteBackend::recv
    - static_cast<int>
    linkageType: ''
    returnType: bool
    signature: bool RemoteBackend::deactivateDomainKey(const ZoneName& name, unsigned
      int keyId)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: toString
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:516,1
    - Dst: static_cast<int>
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:516,1
    - Dst: RemoteBackend::send
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:519,1
    - Dst: RemoteBackend::recv
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:519,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - ' name'
    - keyId
    argTypes:
    - ZoneName
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 520
      start: 507
    functionDepth: 2
    functionLinenumber: 507
    functionLinenumberEnd: 520
    functionName: RemoteBackend::publishDomainKey
    functionSourceFile: /src/pdns/modules/remotebackend/remotebackend.cc
    functionUses: 0
    functionsReached:
    - RemoteBackend::send
    - toString
    - RemoteBackend::recv
    - static_cast<int>
    linkageType: ''
    returnType: bool
    signature: bool RemoteBackend::publishDomainKey(const ZoneName& name, unsigned
      int keyId)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: toString
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:531,1
    - Dst: static_cast<int>
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:531,1
    - Dst: RemoteBackend::send
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:534,1
    - Dst: RemoteBackend::recv
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:534,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - ' name'
    - keyId
    argTypes:
    - ZoneName
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 535
      start: 522
    functionDepth: 2
    functionLinenumber: 522
    functionLinenumberEnd: 535
    functionName: RemoteBackend::unpublishDomainKey
    functionSourceFile: /src/pdns/modules/remotebackend/remotebackend.cc
    functionUses: 0
    functionsReached:
    - RemoteBackend::send
    - toString
    - RemoteBackend::recv
    - static_cast<int>
    linkageType: ''
    returnType: bool
    signature: bool RemoteBackend::unpublishDomainKey(const ZoneName& name, unsigned
      int keyId)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 544
      start: 537
    functionDepth: 0
    functionLinenumber: 537
    functionLinenumberEnd: 544
    functionName: RemoteBackend::getCapabilities
    functionSourceFile: /src/pdns/modules/remotebackend/remotebackend.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int RemoteBackend::getCapabilities()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: toString
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:555,1
    - Dst: RemoteBackend::send
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:558,1
    - Dst: RemoteBackend::recv
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:558,1
    - Dst: DNSName
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:562,1
    - Dst: stringFromJson
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:562,1
    - Dst: stringFromJson
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:563,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 3
    argNames:
    - ' name'
    - ' algorithm'
    - ' content'
    argTypes:
    - DNSName
    - DNSName
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 566
      start: 546
    functionDepth: 2
    functionLinenumber: 546
    functionLinenumberEnd: 566
    functionName: RemoteBackend::getTSIGKey
    functionSourceFile: /src/pdns/modules/remotebackend/remotebackend.cc
    functionUses: 0
    functionsReached:
    - toString
    - stringFromJson
    - RemoteBackend::send
    - DNSName
    - RemoteBackend::recv
    linkageType: ''
    returnType: bool
    signature: bool RemoteBackend::getTSIGKey(const DNSName& name, DNSName& algorithm,
      std::string& content)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: toString
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:577,1
    - Dst: toString
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:577,1
    - Dst: RemoteBackend::send
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:580,1
    - Dst: RemoteBackend::recv
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:580,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 3
    argNames:
    - ' name'
    - ' algorithm'
    - ' content'
    argTypes:
    - DNSName
    - DNSName
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 581
      start: 568
    functionDepth: 2
    functionLinenumber: 568
    functionLinenumberEnd: 581
    functionName: RemoteBackend::setTSIGKey
    functionSourceFile: /src/pdns/modules/remotebackend/remotebackend.cc
    functionUses: 0
    functionsReached:
    - RemoteBackend::send
    - toString
    - RemoteBackend::recv
    linkageType: ''
    returnType: bool
    signature: bool RemoteBackend::setTSIGKey(const DNSName& name, const DNSName&
      algorithm, const std::string& content)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: toString
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:591,1
    - Dst: RemoteBackend::send
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:594,1
    - Dst: RemoteBackend::recv
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:594,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - ' name'
    argTypes:
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 595
      start: 583
    functionDepth: 2
    functionLinenumber: 583
    functionLinenumberEnd: 595
    functionName: RemoteBackend::deleteTSIGKey
    functionSourceFile: /src/pdns/modules/remotebackend/remotebackend.cc
    functionUses: 0
    functionsReached:
    - RemoteBackend::send
    - toString
    - RemoteBackend::recv
    linkageType: ''
    returnType: bool
    signature: bool RemoteBackend::deleteTSIGKey(const DNSName& name)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: RemoteBackend::send
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:608,1
    - Dst: RemoteBackend::recv
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:608,1
    - Dst: array_items
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:612,1
    - Dst: DNSName
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:614,1
    - Dst: stringFromJson
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:614,1
    - Dst: DNSName
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:615,1
    - Dst: stringFromJson
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:615,1
    - Dst: stringFromJson
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:616,1
    - Dst: push_back
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:617,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 1
    argNames:
    - ' keys'
    argTypes:
    - std::vector<struct TSIGKey>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 621
      start: 597
    functionDepth: 2
    functionLinenumber: 597
    functionLinenumberEnd: 621
    functionName: RemoteBackend::getTSIGKeys
    functionSourceFile: /src/pdns/modules/remotebackend/remotebackend.cc
    functionUses: 0
    functionsReached:
    - stringFromJson
    - push_back
    - RemoteBackend::send
    - DNSName
    - RemoteBackend::recv
    - array_items
    linkageType: ''
    returnType: bool
    signature: bool RemoteBackend::getTSIGKeys(std::vector<struct TSIGKey>& keys)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<domainid_t>
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:625,1
    - Dst: intFromJson
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:625,1
    - Dst: ZoneName
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:626,1
    - Dst: stringFromJson
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:626,1
    - Dst: array_items
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:627,1
    - Dst: primaries::emplace_back
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:628,1
    - Dst: string_value
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:628,1
    - Dst: static_cast<unsigned int>
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:631,1
    - Dst: doubleFromJson
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:631,1
    - Dst: static_cast<unsigned int>
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:632,1
    - Dst: number_value
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:632,1
    - Dst: static_cast<time_t>
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:633,1
    - Dst: number_value
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:633,1
    - Dst: is_string
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:636,1
    - Dst: stringFromJson
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:637,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 2
    argNames:
    - ' obj'
    - ' di'
    argTypes:
    - Json
    - DomainInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 649
      start: 623
    functionDepth: 0
    functionLinenumber: 623
    functionLinenumberEnd: 649
    functionName: RemoteBackend::parseDomainInfo
    functionSourceFile: /src/pdns/modules/remotebackend/remotebackend.cc
    functionUses: 0
    functionsReached:
    - doubleFromJson
    - intFromJson
    - is_string
    - string_value
    - stringFromJson
    - number_value
    - static_cast<time_t>
    - static_cast<unsigned int>
    - static_cast<domainid_t>
    - ZoneName
    - primaries::emplace_back
    - array_items
    linkageType: ''
    returnType: void
    signature: void RemoteBackend::parseDomainInfo(const Json& obj, DomainInfo& di)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:653,1
    - Dst: toString
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:659,1
    - Dst: RemoteBackend::send
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:662,1
    - Dst: RemoteBackend::recv
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:662,1
    - Dst: RemoteBackend::parseDomainInfo
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:666,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - ' domain'
    - ' info'
    argTypes:
    - ZoneName
    - DomainInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 668
      start: 651
    functionDepth: 2
    functionLinenumber: 651
    functionLinenumberEnd: 668
    functionName: RemoteBackend::getDomainInfo
    functionSourceFile: /src/pdns/modules/remotebackend/remotebackend.cc
    functionUses: 0
    functionsReached:
    - toString
    - RemoteBackend::send
    - RemoteBackend::recv
    - empty
    - RemoteBackend::parseDomainInfo
    linkageType: ''
    returnType: bool
    signature: bool RemoteBackend::getDomainInfo(const ZoneName& domain, DomainInfo&
      info, bool /* getSerial */)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<double>
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:675,1
    - Dst: RemoteBackend::send
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:678,1
    - Dst: RemoteBackend::recv
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:678,1
    - Dst: SLOG
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:679,1
    - Dst: info
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:680,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:680,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:680,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 2
    argNames:
    - id
    - serial
    argTypes:
    - domainid_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 682
      start: 671
    functionDepth: 2
    functionLinenumber: 671
    functionLinenumberEnd: 682
    functionName: RemoteBackend::setNotified
    functionSourceFile: /src/pdns/modules/remotebackend/remotebackend.cc
    functionUses: 0
    functionsReached:
    - SLOG
    - static_cast<double>
    - Logging::Loggable
    - RemoteBackend::send
    - info
    - RemoteBackend::recv
    linkageType: ''
    returnType: void
    signature: void RemoteBackend::setNotified(domainid_t id, uint32_t serial)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: Json::array::push_back
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:689,1
    - Dst: qtype::toString
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:690,1
    - Dst: qname::toString
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:691,1
    - Dst: getCode
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:692,1
    - Dst: static_cast<int>
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:694,1
    - Dst: toString
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:700,1
    - Dst: RemoteBackend::send
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:705,1
    - Dst: RemoteBackend::recv
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:705,1
    - Dst: is_object
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:713,1
    - Dst: stringFromJson
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:714,1
    - Dst: stringFromJson
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:715,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 6
    argNames:
    - ' ipAddress'
    - ' domain'
    - ' nsset'
    - nameserver
    - account
    - ddb
    argTypes:
    - string
    - ZoneName
    - vector<DNSResourceRecord>
    - string*
    - string*
    - DNSBackend**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 719
      start: 684
    functionDepth: 2
    functionLinenumber: 684
    functionLinenumberEnd: 719
    functionName: RemoteBackend::autoPrimaryBackend
    functionSourceFile: /src/pdns/modules/remotebackend/remotebackend.cc
    functionUses: 0
    functionsReached:
    - toString
    - qtype::toString
    - stringFromJson
    - qname::toString
    - RemoteBackend::send
    - RemoteBackend::recv
    - Json::array::push_back
    - is_object
    - getCode
    - static_cast<int>
    linkageType: ''
    returnType: bool
    signature: bool RemoteBackend::autoPrimaryBackend(const string& ipAddress, const
      ZoneName& domain, const vector<DNSResourceRecord>& nsset, string* nameserver,
      string* account, DNSBackend** ddb)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: toString
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:727,1
    - Dst: RemoteBackend::send
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:733,1
    - Dst: RemoteBackend::recv
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:733,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 4
    argNames:
    - ' ipAddress'
    - ' domain'
    - ' nameserver'
    - ' account'
    argTypes:
    - string
    - ZoneName
    - string
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 734
      start: 721
    functionDepth: 2
    functionLinenumber: 721
    functionLinenumberEnd: 734
    functionName: RemoteBackend::createSecondaryDomain
    functionSourceFile: /src/pdns/modules/remotebackend/remotebackend.cc
    functionUses: 0
    functionsReached:
    - RemoteBackend::send
    - toString
    - RemoteBackend::recv
    linkageType: ''
    returnType: bool
    signature: bool RemoteBackend::createSecondaryDomain(const string& ipAddress,
      const ZoneName& domain, const string& nameserver, const string& account)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Json::array::push_back
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:740,1
    - Dst: qtype::toString
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:741,1
    - Dst: qname::toString
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:742,1
    - Dst: getCode
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:743,1
    - Dst: static_cast<int>
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:745,1
    - Dst: toString
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:751,1
    - Dst: toString
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:751,1
    - Dst: static_cast<double>
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:751,1
    - Dst: RemoteBackend::send
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:754,1
    - Dst: RemoteBackend::recv
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:754,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 4
    argNames:
    - domain_id
    - ' qname'
    - ' qtype'
    - ' rrset'
    argTypes:
    - domainid_t
    - DNSName
    - QType
    - vector<DNSResourceRecord>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 755
      start: 736
    functionDepth: 2
    functionLinenumber: 736
    functionLinenumberEnd: 755
    functionName: RemoteBackend::replaceRRSet
    functionSourceFile: /src/pdns/modules/remotebackend/remotebackend.cc
    functionUses: 0
    functionsReached:
    - toString
    - qtype::toString
    - static_cast<double>
    - qname::toString
    - RemoteBackend::send
    - RemoteBackend::recv
    - Json::array::push_back
    - getCode
    - static_cast<int>
    linkageType: ''
    returnType: bool
    signature: bool RemoteBackend::replaceRRSet(domainid_t domain_id, const DNSName&
      qname, const QType& qtype, const vector<DNSResourceRecord>& rrset)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: qtype::toString
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:762,1
    - Dst: qname::toString
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:762,1
    - Dst: getCode
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:762,1
    - Dst: static_cast<int>
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:762,1
    - Dst: empty
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:762,1
    - Dst: Json
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:762,1
    - Dst: toString
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:762,1
    - Dst: static_cast<double>
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:763,1
    - Dst: RemoteBackend::send
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:767,1
    - Dst: RemoteBackend::recv
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:767,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 2
    argNames:
    - ' rr'
    - ' ordername'
    argTypes:
    - DNSResourceRecord
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 768
      start: 757
    functionDepth: 2
    functionLinenumber: 757
    functionLinenumberEnd: 768
    functionName: RemoteBackend::feedRecord
    functionSourceFile: /src/pdns/modules/remotebackend/remotebackend.cc
    functionUses: 0
    functionsReached:
    - toString
    - qtype::toString
    - static_cast<double>
    - qname::toString
    - RemoteBackend::send
    - RemoteBackend::recv
    - empty
    - Json
    - getCode
    - static_cast<int>
    linkageType: ''
    returnType: bool
    signature: bool RemoteBackend::feedRecord(const DNSResourceRecord& rr, const DNSName&
      ordername, bool /* ordernameIsNSEC3 */)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Json::array::push_back
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:775,1
    - Dst: first::toString
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:776,1
    - Dst: static_cast<double>
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:782,1
    - Dst: RemoteBackend::send
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:786,1
    - Dst: RemoteBackend::recv
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:786,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 2
    argNames:
    - domain_id
    - ' nonterm'
    argTypes:
    - domainid_t
    - map<DNSName, bool>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 787
      start: 770
    functionDepth: 2
    functionLinenumber: 770
    functionLinenumberEnd: 787
    functionName: RemoteBackend::feedEnts
    functionSourceFile: /src/pdns/modules/remotebackend/remotebackend.cc
    functionUses: 0
    functionsReached:
    - static_cast<double>
    - RemoteBackend::send
    - RemoteBackend::recv
    - Json::array::push_back
    - first::toString
    linkageType: ''
    returnType: bool
    signature: bool RemoteBackend::feedEnts(domainid_t domain_id, map<DNSName, bool>&
      nonterm)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Json::array::push_back
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:794,1
    - Dst: first::toString
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:795,1
    - Dst: toString
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:801,1
    - Dst: static_cast<double>
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:801,1
    - Dst: RemoteBackend::send
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:805,1
    - Dst: RemoteBackend::recv
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:805,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 5
    argNames:
    - domain_id
    - ' domain'
    - ' nonterm'
    - ' ns3prc'
    - narrow
    argTypes:
    - domainid_t
    - DNSName
    - map<DNSName, bool>
    - NSEC3PARAMRecordContent
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 806
      start: 789
    functionDepth: 2
    functionLinenumber: 789
    functionLinenumberEnd: 806
    functionName: RemoteBackend::feedEnts3
    functionSourceFile: /src/pdns/modules/remotebackend/remotebackend.cc
    functionUses: 0
    functionsReached:
    - toString
    - static_cast<double>
    - RemoteBackend::send
    - RemoteBackend::recv
    - Json::array::push_back
    - first::toString
    linkageType: ''
    returnType: bool
    signature: bool RemoteBackend::feedEnts3(domainid_t domain_id, const DNSName&
      domain, map<DNSName, bool>& nonterm, const NSEC3PARAMRecordContent& ns3prc,
      bool narrow)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: time
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:810,1
    - Dst: toString
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:814,1
    - Dst: static_cast<double>
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:814,1
    - Dst: RemoteBackend::send
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:817,1
    - Dst: RemoteBackend::recv
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:817,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - ' domain'
    - domain_id
    argTypes:
    - ZoneName
    - domainid_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 822
      start: 808
    functionDepth: 2
    functionLinenumber: 808
    functionLinenumberEnd: 822
    functionName: RemoteBackend::startTransaction
    functionSourceFile: /src/pdns/modules/remotebackend/remotebackend.cc
    functionUses: 0
    functionsReached:
    - toString
    - static_cast<double>
    - time
    - RemoteBackend::send
    - RemoteBackend::recv
    linkageType: ''
    returnType: bool
    signature: bool RemoteBackend::startTransaction(const ZoneName& domain, domainid_t
      domain_id)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<double>
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:832,1
    - Dst: RemoteBackend::send
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:836,1
    - Dst: RemoteBackend::recv
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:836,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 837
      start: 824
    functionDepth: 2
    functionLinenumber: 824
    functionLinenumberEnd: 837
    functionName: RemoteBackend::commitTransaction
    functionSourceFile: /src/pdns/modules/remotebackend/remotebackend.cc
    functionUses: 0
    functionsReached:
    - RemoteBackend::recv
    - RemoteBackend::send
    - static_cast<double>
    linkageType: ''
    returnType: bool
    signature: bool RemoteBackend::commitTransaction()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<double>
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:847,1
    - Dst: RemoteBackend::send
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:851,1
    - Dst: RemoteBackend::recv
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:851,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 852
      start: 839
    functionDepth: 2
    functionLinenumber: 839
    functionLinenumberEnd: 852
    functionName: RemoteBackend::abortTransaction
    functionSourceFile: /src/pdns/modules/remotebackend/remotebackend.cc
    functionUses: 0
    functionsReached:
    - RemoteBackend::recv
    - RemoteBackend::send
    - static_cast<double>
    linkageType: ''
    returnType: bool
    signature: bool RemoteBackend::abortTransaction()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: RemoteBackend::send
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:861,1
    - Dst: RemoteBackend::recv
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:861,1
    - Dst: RemoteBackend::asString
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:865,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - ' querystr'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 866
      start: 854
    functionDepth: 2
    functionLinenumber: 854
    functionLinenumberEnd: 866
    functionName: RemoteBackend::directBackendCmd
    functionSourceFile: /src/pdns/modules/remotebackend/remotebackend.cc
    functionUses: 0
    functionsReached:
    - RemoteBackend::recv
    - RemoteBackend::asString
    - RemoteBackend::send
    linkageType: ''
    returnType: string
    signature: string RemoteBackend::directBackendCmd(const string& querystr)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<decltype(maxResults)>
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:870,1
    - Dst: pdns::max
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:870,1
    - Dst: std::out_of_range
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:872,1
    - Dst: std::to_string
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:872,1
    - Dst: std::to_string
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:872,1
    - Dst: static_cast<int>
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:877,1
    - Dst: RemoteBackend::send
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:880,1
    - Dst: RemoteBackend::recv
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:880,1
    - Dst: is_array
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:884,1
    - Dst: array_items
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:888,1
    - Dst: stringFromJson
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:890,1
    - Dst: DNSName
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:891,1
    - Dst: stringFromJson
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:891,1
    - Dst: stringFromJson
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:893,1
    - Dst: int_value
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:894,1
    - Dst: static_cast<domainid_t>
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:895,1
    - Dst: intFromJson
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:895,1
    - Dst: intFromJson
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:897,1
    - Dst: int_value
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:902,1
    - Dst: push_back
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:903,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 25
    argCount: 3
    argNames:
    - ' pattern'
    - maxResults
    - ' result'
    argTypes:
    - string
    - size_t
    - vector<DNSResourceRecord>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 907
      start: 868
    functionDepth: 2
    functionLinenumber: 868
    functionLinenumberEnd: 907
    functionName: RemoteBackend::searchRecords
    functionSourceFile: /src/pdns/modules/remotebackend/remotebackend.cc
    functionUses: 0
    functionsReached:
    - pdns::max
    - intFromJson
    - std::out_of_range
    - std::to_string
    - stringFromJson
    - push_back
    - int_value
    - RemoteBackend::send
    - DNSName
    - RemoteBackend::recv
    - static_cast<decltype(maxResults)>
    - is_array
    - static_cast<domainid_t>
    - array_items
    - static_cast<int>
    linkageType: ''
    returnType: bool
    signature: bool RemoteBackend::searchRecords(const string& pattern, size_t maxResults,
      vector<DNSResourceRecord>& result)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 913
      start: 909
    functionDepth: 0
    functionLinenumber: 909
    functionLinenumberEnd: 913
    functionName: RemoteBackend::searchComments
    functionSourceFile: /src/pdns/modules/remotebackend/remotebackend.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool RemoteBackend::searchComments(const string& /* pattern */, size_t
      /* maxResults */, vector<Comment>& /* result */)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: RemoteBackend::send
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:922,1
    - Dst: RemoteBackend::recv
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:922,1
    - Dst: is_array
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:926,1
    - Dst: array_items
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:930,1
    - Dst: RemoteBackend::parseDomainInfo
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:932,1
    - Dst: vector<DomainInfo>*::push_back
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:933,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 2
    argNames:
    - domains
    - include_disabled
    argTypes:
    - vector<DomainInfo>*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 935
      start: 915
    functionDepth: 2
    functionLinenumber: 915
    functionLinenumberEnd: 935
    functionName: RemoteBackend::getAllDomains
    functionSourceFile: /src/pdns/modules/remotebackend/remotebackend.cc
    functionUses: 0
    functionsReached:
    - vector<DomainInfo>*::push_back
    - RemoteBackend::send
    - RemoteBackend::recv
    - is_array
    - array_items
    - RemoteBackend::parseDomainInfo
    linkageType: ''
    returnType: void
    signature: void RemoteBackend::getAllDomains(vector<DomainInfo>* domains, bool
      /* getSerial */, bool include_disabled)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: RemoteBackend::send
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:945,1
    - Dst: RemoteBackend::recv
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:945,1
    - Dst: is_array
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:949,1
    - Dst: array_items
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:953,1
    - Dst: RemoteBackend::parseDomainInfo
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:955,1
    - Dst: push_back
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:956,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 1
    argNames:
    - ' domains'
    argTypes:
    - vector<DomainInfo>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 958
      start: 937
    functionDepth: 2
    functionLinenumber: 937
    functionLinenumberEnd: 958
    functionName: RemoteBackend::getUpdatedPrimaries
    functionSourceFile: /src/pdns/modules/remotebackend/remotebackend.cc
    functionUses: 0
    functionsReached:
    - push_back
    - RemoteBackend::send
    - RemoteBackend::recv
    - is_array
    - array_items
    - RemoteBackend::parseDomainInfo
    linkageType: ''
    returnType: void
    signature: void RemoteBackend::getUpdatedPrimaries(vector<DomainInfo>& domains,
      std::unordered_set<DNSName>& /* catalogs */, CatalogHashMap& /* catalogHashes
      */)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: RemoteBackend::send
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:968,1
    - Dst: RemoteBackend::recv
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:968,1
    - Dst: is_array
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:972,1
    - Dst: array_items
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:976,1
    - Dst: RemoteBackend::parseDomainInfo
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:978,1
    - Dst: vector<DomainInfo>*::push_back
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:979,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 1
    argNames:
    - domains
    argTypes:
    - vector<DomainInfo>*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 981
      start: 960
    functionDepth: 2
    functionLinenumber: 960
    functionLinenumberEnd: 981
    functionName: RemoteBackend::getUnfreshSecondaryInfos
    functionSourceFile: /src/pdns/modules/remotebackend/remotebackend.cc
    functionUses: 0
    functionsReached:
    - vector<DomainInfo>*::push_back
    - RemoteBackend::send
    - RemoteBackend::recv
    - is_array
    - array_items
    - RemoteBackend::parseDomainInfo
    linkageType: ''
    returnType: void
    signature: void RemoteBackend::getUnfreshSecondaryInfos(vector<DomainInfo>* domains)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: RemoteBackend::send
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:990,1
    - Dst: RemoteBackend::recv
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:990,1
    - Dst: SLOG
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:991,1
    - Dst: info
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:992,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:992,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - domain_id
    argTypes:
    - domainid_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 994
      start: 983
    functionDepth: 2
    functionLinenumber: 983
    functionLinenumberEnd: 994
    functionName: RemoteBackend::setStale
    functionSourceFile: /src/pdns/modules/remotebackend/remotebackend.cc
    functionUses: 0
    functionsReached:
    - SLOG
    - Logging::Loggable
    - RemoteBackend::send
    - info
    - RemoteBackend::recv
    linkageType: ''
    returnType: void
    signature: void RemoteBackend::setStale(domainid_t domain_id)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: RemoteBackend::send
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:1003,1
    - Dst: RemoteBackend::recv
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:1003,1
    - Dst: SLOG
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:1004,1
    - Dst: info
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:1005,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:1005,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - domain_id
    argTypes:
    - domainid_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1007
      start: 996
    functionDepth: 2
    functionLinenumber: 996
    functionLinenumberEnd: 1007
    functionName: RemoteBackend::setFresh
    functionSourceFile: /src/pdns/modules/remotebackend/remotebackend.cc
    functionUses: 0
    functionsReached:
    - SLOG
    - Logging::Loggable
    - RemoteBackend::send
    - info
    - RemoteBackend::recv
    linkageType: ''
    returnType: void
    signature: void RemoteBackend::setFresh(domainid_t domain_id)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1013
      start: 1012
    functionDepth: 0
    functionLinenumber: 1012
    functionLinenumberEnd: 1013
    functionName: RemoteBackendFactory::RemoteBackendFactory
    functionSourceFile: /src/pdns/modules/remotebackend/remotebackend.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void RemoteBackendFactory()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: declare
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:1017,1
    - Dst: declare
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:1018,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1019
      start: 1015
    functionDepth: 0
    functionLinenumber: 1015
    functionLinenumberEnd: 1019
    functionName: RemoteBackendFactory::declareArguments
    functionSourceFile: /src/pdns/modules/remotebackend/remotebackend.cc
    functionUses: 0
    functionsReached:
    - declare
    linkageType: ''
    returnType: void
    signature: void declareArguments(const std::string& suffix = "") override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RemoteBackend::RemoteBackend
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:1023,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1024
      start: 1021
    functionDepth: 2
    functionLinenumber: 1021
    functionLinenumberEnd: 1024
    functionName: RemoteBackendFactory::make
    functionSourceFile: /src/pdns/modules/remotebackend/remotebackend.cc
    functionUses: 0
    functionsReached:
    - RemoteBackend::RemoteBackend
    linkageType: ''
    returnType: DNSBackend
    signature: DNSBackend * make(const std::string& suffix = "") override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BackendMakers
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:1035,1
    - Dst: std::make_unique<RemoteBackendFactory>
      Src: /src/pdns/modules/remotebackend/remotebackend.cc:1035,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1044
      start: 1033
    functionDepth: 1
    functionLinenumber: 1033
    functionLinenumberEnd: 1044
    functionName: RemoteLoader::RemoteLoader
    functionSourceFile: /src/pdns/modules/remotebackend/remotebackend.cc
    functionUses: 0
    functionsReached:
    - BackendMakers
    - std::make_unique<RemoteBackendFactory>
    linkageType: ''
    returnType: void
    signature: void RemoteLoader::RemoteLoader()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ArgvMap::ArgvMap
      Src: /src/pdns/modules/remotebackend/test-remotebackend-json.cc:44,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 42
    functionDepth: 0
    functionLinenumber: 42
    functionLinenumberEnd: 46
    functionName: arg
    functionSourceFile: /src/pdns/modules/remotebackend/test-remotebackend-json.cc
    functionUses: 215
    functionsReached:
    - ArgvMap::ArgvMap
    linkageType: ''
    returnType: ArgvMap
    signature: ArgvMap & arg()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: arg
      Src: /src/pdns/modules/remotebackend/test-remotebackend-json.cc:75,1
    - Dst: std::make_unique<RemoteLoader>
      Src: /src/pdns/modules/remotebackend/test-remotebackend-json.cc:76,1
    - Dst: BackendMakers
      Src: /src/pdns/modules/remotebackend/test-remotebackend-json.cc:77,1
    - Dst: arg
      Src: /src/pdns/modules/remotebackend/test-remotebackend-json.cc:79,1
    - Dst: arg
      Src: /src/pdns/modules/remotebackend/test-remotebackend-json.cc:80,1
    - Dst: std::move
      Src: /src/pdns/modules/remotebackend/test-remotebackend-json.cc:81,1
    - Dst: BackendMakers
      Src: /src/pdns/modules/remotebackend/test-remotebackend-json.cc:81,1
    - Dst: BOOST_TEST_MESSAGE
      Src: /src/pdns/modules/remotebackend/test-remotebackend-json.cc:84,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 70
    functionDepth: 1
    functionLinenumber: 70
    functionLinenumberEnd: 86
    functionName: RemotebackendSetup
    functionSourceFile: /src/pdns/modules/remotebackend/test-remotebackend-json.cc
    functionUses: 0
    functionsReached:
    - BackendMakers
    - BOOST_TEST_MESSAGE
    - std::move
    - std::make_unique<RemoteLoader>
    - arg
    linkageType: ''
    returnType: void
    signature: void RemotebackendSetup()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 87
    functionDepth: 0
    functionLinenumber: 87
    functionLinenumberEnd: 87
    functionName: ~RemotebackendSetup()
    functionSourceFile: /src/pdns/modules/remotebackend/test-remotebackend-json.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~RemotebackendSetup()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - msg
    - ','
    - socket
    - ','
    - flags
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 44
    functionDepth: 0
    functionLinenumber: 44
    functionLinenumberEnd: 45
    functionName: zmq_msg_send
    functionSourceFile: /src/pdns/modules/remotebackend/remotebackend.hh
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: zmq_msg_send(msg, socket, flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - msg
    - ','
    - socket
    - ','
    - flags
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 45
    functionDepth: 0
    functionLinenumber: 45
    functionLinenumberEnd: 46
    functionName: zmq_msg_recv
    functionSourceFile: /src/pdns/modules/remotebackend/remotebackend.hh
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: zmq_msg_recv(msg, socket, flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 54
    functionDepth: 0
    functionLinenumber: 54
    functionLinenumberEnd: 54
    functionName: ~Connector()
    functionSourceFile: /src/pdns/modules/remotebackend/remotebackend.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~Connector()
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: is_number
      Src: /src/pdns/modules/remotebackend/remotebackend.hh:63,1
    - Dst: std::to_string
      Src: /src/pdns/modules/remotebackend/remotebackend.hh:64,1
    - Dst: int_value
      Src: /src/pdns/modules/remotebackend/remotebackend.hh:64,1
    - Dst: is_bool
      Src: /src/pdns/modules/remotebackend/remotebackend.hh:66,1
    - Dst: bool_value
      Src: /src/pdns/modules/remotebackend/remotebackend.hh:67,1
    - Dst: is_string
      Src: /src/pdns/modules/remotebackend/remotebackend.hh:69,1
    - Dst: string_value
      Src: /src/pdns/modules/remotebackend/remotebackend.hh:70,1
    - Dst: JsonException
      Src: /src/pdns/modules/remotebackend/remotebackend.hh:72,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 1
    argNames:
    - ' value'
    argTypes:
    - Json
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 61
    functionDepth: 0
    functionLinenumber: 61
    functionLinenumberEnd: 73
    functionName: Connector::asString
    functionSourceFile: /src/pdns/modules/remotebackend/remotebackend.hh
    functionUses: 0
    functionsReached:
    - is_string
    - is_number
    - std::to_string
    - string_value
    - bool_value
    - int_value
    - is_bool
    - JsonException
    linkageType: ''
    returnType: string
    signature: string asString(const Json& value)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: is_number
      Src: /src/pdns/modules/remotebackend/remotebackend.hh:227,1
    - Dst: std::to_string
      Src: /src/pdns/modules/remotebackend/remotebackend.hh:228,1
    - Dst: int_value
      Src: /src/pdns/modules/remotebackend/remotebackend.hh:228,1
    - Dst: is_bool
      Src: /src/pdns/modules/remotebackend/remotebackend.hh:230,1
    - Dst: bool_value
      Src: /src/pdns/modules/remotebackend/remotebackend.hh:231,1
    - Dst: is_string
      Src: /src/pdns/modules/remotebackend/remotebackend.hh:233,1
    - Dst: string_value
      Src: /src/pdns/modules/remotebackend/remotebackend.hh:234,1
    - Dst: JsonException
      Src: /src/pdns/modules/remotebackend/remotebackend.hh:236,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 1
    argNames:
    - ' value'
    argTypes:
    - Json
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 237
      start: 225
    functionDepth: 0
    functionLinenumber: 225
    functionLinenumberEnd: 237
    functionName: RemoteBackend::asString
    functionSourceFile: /src/pdns/modules/remotebackend/remotebackend.hh
    functionUses: 2
    functionsReached:
    - is_string
    - is_number
    - std::to_string
    - string_value
    - bool_value
    - int_value
    - is_bool
    - JsonException
    linkageType: ''
    returnType: string
    signature: string asString(const Json& value)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: is_bool
      Src: /src/pdns/modules/remotebackend/remotebackend.hh:241,1
    - Dst: bool_value
      Src: /src/pdns/modules/remotebackend/remotebackend.hh:242,1
    - Dst: RemoteBackend::asString
      Src: /src/pdns/modules/remotebackend/remotebackend.hh:245,1
    - Dst: JsonException
      Src: /src/pdns/modules/remotebackend/remotebackend.hh:255,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 1
    argNames:
    - ' value'
    argTypes:
    - Json
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 256
      start: 239
    functionDepth: 1
    functionLinenumber: 239
    functionLinenumberEnd: 256
    functionName: RemoteBackend::asBool
    functionSourceFile: /src/pdns/modules/remotebackend/remotebackend.hh
    functionUses: 1
    functionsReached:
    - RemoteBackend::asString
    - is_bool
    - JsonException
    - bool_value
    linkageType: ''
    returnType: bool
    signature: bool asBool(const Json& value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_TEST_MESSAGE
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:56,1
    - Dst: lookup
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:58,1
    - Dst: QType
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:58,1
    - Dst: DNSName
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:58,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:60,1
    - Dst: get
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:60,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:62,1
    - Dst: DNSResourceRecord::qname::toString
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:62,1
    - Dst: BOOST_CHECK_MESSAGE
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:63,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:64,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:65,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 54
    functionDepth: 0
    functionLinenumber: 54
    functionLinenumberEnd: 66
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/modules/remotebackend/test-remotebackend.cc
    functionUses: 0
    functionsReached:
    - BOOST_TEST_MESSAGE
    - lookup
    - DNSResourceRecord::qname::toString
    - QType
    - DNSName
    - get
    - BOOST_CHECK_EQUAL
    - BOOST_CHECK_MESSAGE
    - BOOST_CHECK
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_method_lookup)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_TEST_MESSAGE
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:70,1
    - Dst: lookup
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:72,1
    - Dst: QType
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:72,1
    - Dst: DNSName
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:72,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:74,1
    - Dst: get
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:74,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 68
    functionDepth: 0
    functionLinenumber: 68
    functionLinenumberEnd: 75
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/modules/remotebackend/test-remotebackend.cc
    functionUses: 0
    functionsReached:
    - BOOST_TEST_MESSAGE
    - lookup
    - QType
    - DNSName
    - get
    - BOOST_CHECK
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_method_lookup_empty)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_TEST_MESSAGE
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:82,1
    - Dst: list
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:83,1
    - Dst: ZoneName
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:83,1
    - Dst: get
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:84,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:88,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 77
    functionDepth: 0
    functionLinenumber: 77
    functionLinenumberEnd: 89
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/modules/remotebackend/test-remotebackend.cc
    functionUses: 0
    functionsReached:
    - BOOST_TEST_MESSAGE
    - BOOST_CHECK_EQUAL
    - get
    - ZoneName
    - list
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_method_list)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_TEST_MESSAGE
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:93,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:94,1
    - Dst: doesDNSSEC
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:94,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 91
    functionDepth: 0
    functionLinenumber: 91
    functionLinenumberEnd: 95
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/modules/remotebackend/test-remotebackend.cc
    functionUses: 0
    functionsReached:
    - BOOST_TEST_MESSAGE
    - doesDNSSEC
    - BOOST_CHECK
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_method_doesDNSSEC)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::vector::emplace_back
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:100,1
    - Dst: BOOST_TEST_MESSAGE
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:101,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:102,1
    - Dst: setDomainMetadata
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:102,1
    - Dst: ZoneName
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:102,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 97
    functionDepth: 0
    functionLinenumber: 97
    functionLinenumberEnd: 103
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/modules/remotebackend/test-remotebackend.cc
    functionUses: 0
    functionsReached:
    - BOOST_TEST_MESSAGE
    - std::vector::emplace_back
    - setDomainMetadata
    - ZoneName
    - BOOST_CHECK
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_method_setDomainMetadata)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_CHECK
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:107,1
    - Dst: setDomainMetadata
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:107,1
    - Dst: ZoneName
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:107,1
    - Dst: BOOST_TEST_MESSAGE
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:109,1
    - Dst: alsoNotifies
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:110,1
    - Dst: ZoneName
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:110,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:111,1
    - Dst: std::set::size
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:111,1
    - Dst: std::set::empty
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:112,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:113,1
    - Dst: std::set::count
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:113,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:115,1
    - Dst: setDomainMetadata
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:115,1
    - Dst: ZoneName
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:115,1
    - Dst: std::vector<std::string>
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:115,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 105
    functionDepth: 0
    functionLinenumber: 105
    functionLinenumberEnd: 116
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/modules/remotebackend/test-remotebackend.cc
    functionUses: 0
    functionsReached:
    - alsoNotifies
    - BOOST_TEST_MESSAGE
    - std::set::size
    - std::set::count
    - std::vector<std::string>
    - BOOST_CHECK_EQUAL
    - std::set::empty
    - setDomainMetadata
    - ZoneName
    - BOOST_CHECK
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_method_alsoNotifies)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_TEST_MESSAGE
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:121,1
    - Dst: getDomainMetadata
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:122,1
    - Dst: ZoneName
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:122,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:123,1
    - Dst: std::vector::size
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:123,1
    - Dst: std::vector::empty
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:126,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:127,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 129
      start: 118
    functionDepth: 0
    functionLinenumber: 118
    functionLinenumberEnd: 129
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/modules/remotebackend/test-remotebackend.cc
    functionUses: 0
    functionsReached:
    - getDomainMetadata
    - BOOST_TEST_MESSAGE
    - std::vector::size
    - BOOST_CHECK_EQUAL
    - std::vector::empty
    - ZoneName
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_method_getDomainMetadata)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_TEST_MESSAGE
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:134,1
    - Dst: getAllDomainMetadata
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:135,1
    - Dst: ZoneName
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:135,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:136,1
    - Dst: std::map::size
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:136,1
    - Dst: std::map::empty
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:139,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:140,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 142
      start: 131
    functionDepth: 0
    functionLinenumber: 131
    functionLinenumberEnd: 142
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/modules/remotebackend/test-remotebackend.cc
    functionUses: 0
    functionsReached:
    - BOOST_TEST_MESSAGE
    - std::map::empty
    - getAllDomainMetadata
    - BOOST_CHECK_EQUAL
    - ZoneName
    - std::map::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_method_getAllDomainMetadata)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_TEST_MESSAGE
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:146,1
    - Dst: addDomainKey
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:148,1
    - Dst: ZoneName
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:148,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:149,1
    - Dst: addDomainKey
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:150,1
    - Dst: ZoneName
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:150,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:151,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 152
      start: 144
    functionDepth: 0
    functionLinenumber: 144
    functionLinenumberEnd: 152
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/modules/remotebackend/test-remotebackend.cc
    functionUses: 0
    functionsReached:
    - ZoneName
    - BOOST_TEST_MESSAGE
    - addDomainKey
    - BOOST_CHECK_EQUAL
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_method_addDomainKey)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_TEST_MESSAGE
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:157,1
    - Dst: getDomainKeys
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:159,1
    - Dst: ZoneName
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:159,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:160,1
    - Dst: std::vector::size
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:160,1
    - Dst: std::vector::size
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:163,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:166,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:167,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:168,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:169,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:170,1
    - Dst: content::size
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:170,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 173
      start: 154
    functionDepth: 0
    functionLinenumber: 154
    functionLinenumberEnd: 173
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/modules/remotebackend/test-remotebackend.cc
    functionUses: 0
    functionsReached:
    - getDomainKeys
    - BOOST_TEST_MESSAGE
    - std::vector::size
    - BOOST_CHECK_EQUAL
    - ZoneName
    - BOOST_CHECK
    - content::size
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_method_getDomainKeys)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_TEST_MESSAGE
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:177,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:178,1
    - Dst: deactivateDomainKey
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:178,1
    - Dst: ZoneName
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:178,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 179
      start: 175
    functionDepth: 0
    functionLinenumber: 175
    functionLinenumberEnd: 179
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/modules/remotebackend/test-remotebackend.cc
    functionUses: 0
    functionsReached:
    - ZoneName
    - BOOST_TEST_MESSAGE
    - deactivateDomainKey
    - BOOST_CHECK
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_method_deactivateDomainKey)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_TEST_MESSAGE
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:183,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:184,1
    - Dst: activateDomainKey
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:184,1
    - Dst: ZoneName
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:184,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 185
      start: 181
    functionDepth: 0
    functionLinenumber: 181
    functionLinenumberEnd: 185
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/modules/remotebackend/test-remotebackend.cc
    functionUses: 0
    functionsReached:
    - ZoneName
    - BOOST_TEST_MESSAGE
    - activateDomainKey
    - BOOST_CHECK
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_method_activateDomainKey)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_CHECK
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:189,1
    - Dst: removeDomainKey
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:189,1
    - Dst: ZoneName
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:189,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:190,1
    - Dst: removeDomainKey
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:190,1
    - Dst: ZoneName
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:190,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 191
      start: 187
    functionDepth: 0
    functionLinenumber: 187
    functionLinenumberEnd: 191
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/modules/remotebackend/test-remotebackend.cc
    functionUses: 0
    functionsReached:
    - ZoneName
    - BOOST_CHECK
    - removeDomainKey
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_method_removeDomainKey)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSName::DNSName
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:195,1
    - Dst: DNSName::DNSName
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:196,1
    - Dst: DNSName::DNSName
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:197,1
    - Dst: BOOST_TEST_MESSAGE
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:198,1
    - Dst: getBeforeAndAfterNamesAbsolute
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:200,1
    - Dst: DNSName
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:200,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:201,1
    - Dst: DNSName::toString
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:201,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:202,1
    - Dst: DNSName::toString
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:202,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:203,1
    - Dst: DNSName::toString
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:203,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 204
      start: 193
    functionDepth: 0
    functionLinenumber: 193
    functionLinenumberEnd: 204
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/modules/remotebackend/test-remotebackend.cc
    functionUses: 0
    functionsReached:
    - BOOST_TEST_MESSAGE
    - getBeforeAndAfterNamesAbsolute
    - BOOST_CHECK_EQUAL
    - DNSName
    - DNSName::toString
    - DNSName::DNSName
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_method_getBeforeAndAfterNamesAbsolute)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_TEST_MESSAGE
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:210,1
    - Dst: BOOST_CHECK_MESSAGE
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:211,1
    - Dst: setTSIGKey
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:211,1
    - Dst: DNSName
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:211,1
    - Dst: DNSName
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:211,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 212
      start: 206
    functionDepth: 0
    functionLinenumber: 206
    functionLinenumberEnd: 212
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/modules/remotebackend/test-remotebackend.cc
    functionUses: 0
    functionsReached:
    - BOOST_TEST_MESSAGE
    - setTSIGKey
    - DNSName
    - BOOST_CHECK_MESSAGE
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_method_setTSIGKey)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DNSName::DNSName
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:216,1
    - Dst: BOOST_TEST_MESSAGE
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:218,1
    - Dst: getTSIGKey
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:219,1
    - Dst: DNSName
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:219,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:220,1
    - Dst: DNSName::toString
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:220,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:221,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 222
      start: 214
    functionDepth: 0
    functionLinenumber: 214
    functionLinenumberEnd: 222
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/modules/remotebackend/test-remotebackend.cc
    functionUses: 0
    functionsReached:
    - BOOST_TEST_MESSAGE
    - getTSIGKey
    - DNSName
    - BOOST_CHECK_EQUAL
    - DNSName::toString
    - DNSName::DNSName
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_method_getTSIGKey)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_TEST_MESSAGE
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:228,1
    - Dst: BOOST_CHECK_MESSAGE
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:229,1
    - Dst: deleteTSIGKey
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:229,1
    - Dst: DNSName
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:229,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 230
      start: 224
    functionDepth: 2
    functionLinenumber: 224
    functionLinenumberEnd: 230
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/modules/remotebackend/test-remotebackend.cc
    functionUses: 0
    functionsReached:
    - BOOST_TEST_MESSAGE
    - deleteTSIGKey
    - DNSName
    - BOOST_CHECK_MESSAGE
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_method_deleteTSIGKey)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_TEST_MESSAGE
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:235,1
    - Dst: getTSIGKeys
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:236,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:237,1
    - Dst: std::vector::empty
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:237,1
    - Dst: std::vector::empty
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:238,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:239,1
    - Dst: name::toString
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:239,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:240,1
    - Dst: algorithm::toString
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:240,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:241,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 243
      start: 232
    functionDepth: 0
    functionLinenumber: 232
    functionLinenumberEnd: 243
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/modules/remotebackend/test-remotebackend.cc
    functionUses: 0
    functionsReached:
    - BOOST_TEST_MESSAGE
    - name::toString
    - BOOST_CHECK_EQUAL
    - algorithm::toString
    - std::vector::empty
    - BOOST_CHECK
    - getTSIGKeys
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_method_getTSIGKeys)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_TEST_MESSAGE
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:247,1
    - Dst: setNotified
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:248,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:249,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 250
      start: 245
    functionDepth: 0
    functionLinenumber: 245
    functionLinenumberEnd: 250
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/modules/remotebackend/test-remotebackend.cc
    functionUses: 0
    functionsReached:
    - BOOST_TEST_MESSAGE
    - setNotified
    - BOOST_CHECK
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_method_setNotified)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_TEST_MESSAGE
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:255,1
    - Dst: getDomainInfo
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:256,1
    - Dst: ZoneName
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:256,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:257,1
    - Dst: DomainInfo::zone::toString
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:257,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:258,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:259,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:260,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:261,1
    - Dst: get
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:261,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 262
      start: 252
    functionDepth: 0
    functionLinenumber: 252
    functionLinenumberEnd: 262
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/modules/remotebackend/test-remotebackend.cc
    functionUses: 0
    functionsReached:
    - BOOST_TEST_MESSAGE
    - DomainInfo::zone::toString
    - BOOST_CHECK_EQUAL
    - get
    - getDomainInfo
    - ZoneName
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_method_getDomainInfo)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_TEST_MESSAGE
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:267,1
    - Dst: getAllDomains
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:270,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:272,1
    - Dst: vector::empty
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:272,1
    - Dst: vector::at
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:273,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:274,1
    - Dst: DomainInfo::zone::toString
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:274,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:275,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:276,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:277,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:278,1
    - Dst: get
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:278,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 279
      start: 264
    functionDepth: 0
    functionLinenumber: 264
    functionLinenumberEnd: 279
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/modules/remotebackend/test-remotebackend.cc
    functionUses: 0
    functionsReached:
    - BOOST_TEST_MESSAGE
    - vector::at
    - DomainInfo::zone::toString
    - getAllDomains
    - BOOST_CHECK_EQUAL
    - get
    - vector::empty
    - BOOST_REQUIRE
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_method_getAllDomains)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_TEST_MESSAGE
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:286,1
    - Dst: DNSName
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:288,1
    - Dst: std::vector::push_back
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:293,1
    - Dst: DNSName
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:294,1
    - Dst: std::vector::push_back
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:299,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:301,1
    - Dst: autoPrimaryBackend
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:301,1
    - Dst: ZoneName
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:301,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:304,1
    - Dst: get
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:304,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 305
      start: 281
    functionDepth: 0
    functionLinenumber: 281
    functionLinenumberEnd: 305
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/modules/remotebackend/test-remotebackend.cc
    functionUses: 0
    functionsReached:
    - std::vector::push_back
    - BOOST_TEST_MESSAGE
    - BOOST_CHECK
    - DNSName
    - BOOST_CHECK_EQUAL
    - get
    - ZoneName
    - autoPrimaryBackend
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_method_autoPrimaryBackend)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_TEST_MESSAGE
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:309,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:310,1
    - Dst: createSecondaryDomain
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:310,1
    - Dst: ZoneName
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:310,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 311
      start: 307
    functionDepth: 0
    functionLinenumber: 307
    functionLinenumberEnd: 311
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/modules/remotebackend/test-remotebackend.cc
    functionUses: 0
    functionsReached:
    - ZoneName
    - BOOST_TEST_MESSAGE
    - BOOST_CHECK
    - createSecondaryDomain
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_method_createSecondaryDomain)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_TEST_MESSAGE
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:316,1
    - Dst: startTransaction
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:317,1
    - Dst: ZoneName
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:317,1
    - Dst: DNSName
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:318,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:323,1
    - Dst: feedRecord
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:323,1
    - Dst: DNSName
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:323,1
    - Dst: DNSName
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:324,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:329,1
    - Dst: feedRecord
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:329,1
    - Dst: DNSName
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:329,1
    - Dst: commitTransaction
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:330,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 331
      start: 313
    functionDepth: 0
    functionLinenumber: 313
    functionLinenumberEnd: 331
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/modules/remotebackend/test-remotebackend.cc
    functionUses: 0
    functionsReached:
    - BOOST_TEST_MESSAGE
    - commitTransaction
    - DNSName
    - feedRecord
    - startTransaction
    - ZoneName
    - BOOST_CHECK
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_method_feedRecord)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: startTransaction
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:335,1
    - Dst: ZoneName
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:335,1
    - Dst: BOOST_TEST_MESSAGE
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:338,1
    - Dst: DNSName
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:339,1
    - Dst: std::vector::push_back
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:344,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:345,1
    - Dst: replaceRRSet
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:345,1
    - Dst: DNSName
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:345,1
    - Dst: QType
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:345,1
    - Dst: commitTransaction
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:346,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 347
      start: 333
    functionDepth: 3
    functionLinenumber: 333
    functionLinenumberEnd: 347
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/modules/remotebackend/test-remotebackend.cc
    functionUses: 0
    functionsReached:
    - std::vector::push_back
    - BOOST_TEST_MESSAGE
    - commitTransaction
    - replaceRRSet
    - QType
    - DNSName
    - startTransaction
    - ZoneName
    - BOOST_CHECK
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_method_replaceRRSet)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_TEST_MESSAGE
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:351,1
    - Dst: startTransaction
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:352,1
    - Dst: ZoneName
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:352,1
    - Dst: boost::assign::map_list_of
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:353,1
    - Dst: DNSName
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:353,1
    - Dst: DNSName
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:353,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:354,1
    - Dst: feedEnts
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:354,1
    - Dst: commitTransaction
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:355,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 356
      start: 349
    functionDepth: 0
    functionLinenumber: 349
    functionLinenumberEnd: 356
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/modules/remotebackend/test-remotebackend.cc
    functionUses: 0
    functionsReached:
    - BOOST_TEST_MESSAGE
    - commitTransaction
    - feedEnts
    - boost::assign::map_list_of
    - DNSName
    - startTransaction
    - ZoneName
    - BOOST_CHECK
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_method_feedEnts)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_TEST_MESSAGE
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:360,1
    - Dst: startTransaction
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:361,1
    - Dst: ZoneName
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:361,1
    - Dst: NSEC3PARAMRecordContent::NSEC3PARAMRecordContent
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:362,1
    - Dst: boost::assign::map_list_of
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:365,1
    - Dst: DNSName
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:365,1
    - Dst: DNSName
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:365,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:366,1
    - Dst: feedEnts3
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:366,1
    - Dst: DNSName
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:366,1
    - Dst: commitTransaction
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:367,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 368
      start: 358
    functionDepth: 0
    functionLinenumber: 358
    functionLinenumberEnd: 368
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/modules/remotebackend/test-remotebackend.cc
    functionUses: 0
    functionsReached:
    - BOOST_TEST_MESSAGE
    - feedEnts3
    - commitTransaction
    - boost::assign::map_list_of
    - DNSName
    - NSEC3PARAMRecordContent::NSEC3PARAMRecordContent
    - startTransaction
    - ZoneName
    - BOOST_CHECK
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_method_feedEnts3)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_TEST_MESSAGE
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:372,1
    - Dst: startTransaction
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:373,1
    - Dst: ZoneName
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:373,1
    - Dst: BOOST_CHECK
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:374,1
    - Dst: abortTransaction
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:374,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 375
      start: 370
    functionDepth: 0
    functionLinenumber: 370
    functionLinenumberEnd: 375
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/modules/remotebackend/test-remotebackend.cc
    functionUses: 0
    functionsReached:
    - BOOST_TEST_MESSAGE
    - abortTransaction
    - startTransaction
    - ZoneName
    - BOOST_CHECK
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_method_abortTransaction)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_TEST_MESSAGE
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:379,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:380,1
    - Dst: directBackendCmd
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:380,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 381
      start: 377
    functionDepth: 0
    functionLinenumber: 377
    functionLinenumberEnd: 381
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/modules/remotebackend/test-remotebackend.cc
    functionUses: 0
    functionsReached:
    - BOOST_TEST_MESSAGE
    - directBackendCmd
    - BOOST_CHECK_EQUAL
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_method_directBackendCmd)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BOOST_TEST_MESSAGE
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:386,1
    - Dst: getUpdatedPrimaries
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:391,1
    - Dst: BOOST_REQUIRE
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:393,1
    - Dst: vector::empty
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:393,1
    - Dst: vector::at
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:395,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:396,1
    - Dst: DomainInfo::zone::toString
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:396,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:397,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:398,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:399,1
    - Dst: BOOST_CHECK_EQUAL
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:400,1
    - Dst: get
      Src: /src/pdns/modules/remotebackend/test-remotebackend.cc:400,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 401
      start: 383
    functionDepth: 0
    functionLinenumber: 383
    functionLinenumberEnd: 401
    functionName: BOOST_AUTO_TEST_CASE
    functionSourceFile: /src/pdns/modules/remotebackend/test-remotebackend.cc
    functionUses: 0
    functionsReached:
    - BOOST_TEST_MESSAGE
    - vector::at
    - DomainInfo::zone::toString
    - getUpdatedPrimaries
    - BOOST_CHECK_EQUAL
    - get
    - vector::empty
    - BOOST_REQUIRE
    linkageType: ''
    returnType: void
    signature: void BOOST_AUTO_TEST_CASE(test_method_getUpdatedPrimaries)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ArgvMap::ArgvMap
      Src: /src/pdns/modules/remotebackend/test-remotebackend-zeromq.cc:55,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 53
    functionDepth: 0
    functionLinenumber: 53
    functionLinenumberEnd: 57
    functionName: arg
    functionSourceFile: /src/pdns/modules/remotebackend/test-remotebackend-zeromq.cc
    functionUses: 216
    functionsReached:
    - ArgvMap::ArgvMap
    linkageType: ''
    returnType: ArgvMap
    signature: ArgvMap & arg()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: arg
      Src: /src/pdns/modules/remotebackend/test-remotebackend-zeromq.cc:77,1
    - Dst: std::make_unique<RemoteLoader>
      Src: /src/pdns/modules/remotebackend/test-remotebackend-zeromq.cc:78,1
    - Dst: BackendMakers
      Src: /src/pdns/modules/remotebackend/test-remotebackend-zeromq.cc:79,1
    - Dst: arg
      Src: /src/pdns/modules/remotebackend/test-remotebackend-zeromq.cc:81,1
    - Dst: arg
      Src: /src/pdns/modules/remotebackend/test-remotebackend-zeromq.cc:82,1
    - Dst: std::move
      Src: /src/pdns/modules/remotebackend/test-remotebackend-zeromq.cc:83,1
    - Dst: BackendMakers
      Src: /src/pdns/modules/remotebackend/test-remotebackend-zeromq.cc:83,1
    - Dst: reportAllTypes
      Src: /src/pdns/modules/remotebackend/test-remotebackend-zeromq.cc:84,1
    - Dst: BOOST_TEST_MESSAGE
      Src: /src/pdns/modules/remotebackend/test-remotebackend-zeromq.cc:87,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 72
    functionDepth: 1
    functionLinenumber: 72
    functionLinenumberEnd: 89
    functionName: RemotebackendSetup
    functionSourceFile: /src/pdns/modules/remotebackend/test-remotebackend-zeromq.cc
    functionUses: 0
    functionsReached:
    - BackendMakers
    - std::move
    - BOOST_TEST_MESSAGE
    - reportAllTypes
    - std::make_unique<RemoteLoader>
    - arg
    linkageType: ''
    returnType: void
    signature: void RemotebackendSetup()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 90
    functionDepth: 0
    functionLinenumber: 90
    functionLinenumberEnd: 90
    functionName: ~RemotebackendSetup()
    functionSourceFile: /src/pdns/modules/remotebackend/test-remotebackend-zeromq.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~RemotebackendSetup()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 99
    functionDepth: 0
    functionLinenumber: 99
    functionLinenumberEnd: 103
    functionName: main
    functionSourceFile: /src/pdns/modules/remotebackend/test-remotebackend-zeromq.cc
    functionUses: 91
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: std::map<std::string, std::string>::count
      Src: /src/pdns/modules/remotebackend/pipeconnector.cc:32,1
    - Dst: SLOG
      Src: /src/pdns/modules/remotebackend/pipeconnector.cc:33,1
    - Dst: info
      Src: /src/pdns/modules/remotebackend/pipeconnector.cc:34,1
    - Dst: PDNSException
      Src: /src/pdns/modules/remotebackend/pipeconnector.cc:35,1
    - Dst: std::map<std::string, std::string>::find
      Src: /src/pdns/modules/remotebackend/pipeconnector.cc:37,1
    - Dst: std::map<std::string, std::string>::find
      Src: /src/pdns/modules/remotebackend/pipeconnector.cc:41,1
    - Dst: std::map<std::string, std::string>::end
      Src: /src/pdns/modules/remotebackend/pipeconnector.cc:41,1
    - Dst: std::stoi
      Src: /src/pdns/modules/remotebackend/pipeconnector.cc:42,1
    - Dst: std::map<std::string, std::string>::find
      Src: /src/pdns/modules/remotebackend/pipeconnector.cc:42,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 2
    argNames:
    - log
    - optionsMap
    argTypes:
    - Logr::log_t
    - std::map<std::string, std::string>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 27
    functionDepth: 0
    functionLinenumber: 27
    functionLinenumberEnd: 47
    functionName: PipeConnector::PipeConnector
    functionSourceFile: /src/pdns/modules/remotebackend/pipeconnector.cc
    functionUses: 0
    functionsReached:
    - SLOG
    - PDNSException
    - std::stoi
    - info
    - std::map<std::string, std::string>::end
    - std::map<std::string, std::string>::find
    - std::map<std::string, std::string>::count
    linkageType: ''
    returnType: void
    signature: void PipeConnector::PipeConnector(Logr::log_t log, std::map<std::string,
      std::string> optionsMap)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: waitpid
      Src: /src/pdns/modules/remotebackend/pipeconnector.cc:57,1
    - Dst: kill
      Src: /src/pdns/modules/remotebackend/pipeconnector.cc:58,1
    - Dst: waitpid
      Src: /src/pdns/modules/remotebackend/pipeconnector.cc:59,1
    - Dst: close
      Src: /src/pdns/modules/remotebackend/pipeconnector.cc:63,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 49
    functionDepth: 0
    functionLinenumber: 49
    functionLinenumberEnd: 65
    functionName: PipeConnector::~PipeConnector()
    functionSourceFile: /src/pdns/modules/remotebackend/pipeconnector.cc
    functionUses: 0
    functionsReached:
    - waitpid
    - close
    - kill
    linkageType: ''
    returnType: void
    signature: void PipeConnector::~PipeConnector()
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: PipeConnector::checkStatus
      Src: /src/pdns/modules/remotebackend/pipeconnector.cc:70,1
    - Dst: split
      Src: /src/pdns/modules/remotebackend/pipeconnector.cc:75,1
    - Dst: boost::is_any_of
      Src: /src/pdns/modules/remotebackend/pipeconnector.cc:75,1
    - Dst: std::vector::size
      Src: /src/pdns/modules/remotebackend/pipeconnector.cc:77,1
    - Dst: std::vector::size
      Src: /src/pdns/modules/remotebackend/pipeconnector.cc:78,1
    - Dst: std::vector::size
      Src: /src/pdns/modules/remotebackend/pipeconnector.cc:80,1
    - Dst: c_str
      Src: /src/pdns/modules/remotebackend/pipeconnector.cc:81,1
    - Dst: signal
      Src: /src/pdns/modules/remotebackend/pipeconnector.cc:84,1
    - Dst: access
      Src: /src/pdns/modules/remotebackend/pipeconnector.cc:86,1
    - Dst: PDNSException
      Src: /src/pdns/modules/remotebackend/pipeconnector.cc:87,1
    - Dst: string
      Src: /src/pdns/modules/remotebackend/pipeconnector.cc:87,1
    - Dst: stringerror
      Src: /src/pdns/modules/remotebackend/pipeconnector.cc:87,1
    - Dst: pipe
      Src: /src/pdns/modules/remotebackend/pipeconnector.cc:90,1
    - Dst: pipe
      Src: /src/pdns/modules/remotebackend/pipeconnector.cc:90,1
    - Dst: PDNSException
      Src: /src/pdns/modules/remotebackend/pipeconnector.cc:91,1
    - Dst: string
      Src: /src/pdns/modules/remotebackend/pipeconnector.cc:91,1
    - Dst: strerror
      Src: /src/pdns/modules/remotebackend/pipeconnector.cc:91,1
    - Dst: fork
      Src: /src/pdns/modules/remotebackend/pipeconnector.cc:94,1
    - Dst: PDNSException
      Src: /src/pdns/modules/remotebackend/pipeconnector.cc:95,1
    - Dst: stringerror
      Src: /src/pdns/modules/remotebackend/pipeconnector.cc:95,1
    - Dst: close
      Src: /src/pdns/modules/remotebackend/pipeconnector.cc:98,1
    - Dst: setCloseOnExec
      Src: /src/pdns/modules/remotebackend/pipeconnector.cc:99,1
    - Dst: close
      Src: /src/pdns/modules/remotebackend/pipeconnector.cc:100,1
    - Dst: setCloseOnExec
      Src: /src/pdns/modules/remotebackend/pipeconnector.cc:101,1
    - Dst: pdns::UniqueFilePtr
      Src: /src/pdns/modules/remotebackend/pipeconnector.cc:102,1
    - Dst: fdopen
      Src: /src/pdns/modules/remotebackend/pipeconnector.cc:102,1
    - Dst: PDNSException
      Src: /src/pdns/modules/remotebackend/pipeconnector.cc:103,1
    - Dst: stringerror
      Src: /src/pdns/modules/remotebackend/pipeconnector.cc:103,1
    - Dst: setbuf
      Src: /src/pdns/modules/remotebackend/pipeconnector.cc:106,1
    - Dst: get
      Src: /src/pdns/modules/remotebackend/pipeconnector.cc:106,1
    - Dst: signal
      Src: /src/pdns/modules/remotebackend/pipeconnector.cc:110,1
    - Dst: close
      Src: /src/pdns/modules/remotebackend/pipeconnector.cc:111,1
    - Dst: close
      Src: /src/pdns/modules/remotebackend/pipeconnector.cc:112,1
    - Dst: dup2
      Src: /src/pdns/modules/remotebackend/pipeconnector.cc:115,1
    - Dst: close
      Src: /src/pdns/modules/remotebackend/pipeconnector.cc:116,1
    - Dst: dup2
      Src: /src/pdns/modules/remotebackend/pipeconnector.cc:120,1
    - Dst: close
      Src: /src/pdns/modules/remotebackend/pipeconnector.cc:121,1
    - Dst: execv
      Src: /src/pdns/modules/remotebackend/pipeconnector.cc:126,1
    - Dst: const_cast<char* const*>
      Src: /src/pdns/modules/remotebackend/pipeconnector.cc:126,1
    - Dst: std::vector::data
      Src: /src/pdns/modules/remotebackend/pipeconnector.cc:126,1
    - Dst: exit
      Src: /src/pdns/modules/remotebackend/pipeconnector.cc:127,1
    - Dst: Json
      Src: /src/pdns/modules/remotebackend/pipeconnector.cc:135,1
    - Dst: Json
      Src: /src/pdns/modules/remotebackend/pipeconnector.cc:137,1
    - Dst: PipeConnector::send
      Src: /src/pdns/modules/remotebackend/pipeconnector.cc:140,1
    - Dst: PipeConnector::recv
      Src: /src/pdns/modules/remotebackend/pipeconnector.cc:142,1
    - Dst: SLOG
      Src: /src/pdns/modules/remotebackend/pipeconnector.cc:143,1
    - Dst: info
      Src: /src/pdns/modules/remotebackend/pipeconnector.cc:144,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 52
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 146
      start: 67
    functionDepth: 1
    functionLinenumber: 67
    functionLinenumberEnd: 146
    functionName: PipeConnector::launch
    functionSourceFile: /src/pdns/modules/remotebackend/pipeconnector.cc
    functionUses: 0
    functionsReached:
    - PipeConnector::checkStatus
    - PDNSException
    - stringerror
    - const_cast<char* const*>
    - pdns::UniqueFilePtr
    - setbuf
    - std::vector::data
    - execv
    - std::vector::size
    - SLOG
    - PipeConnector::recv
    - string
    - PipeConnector::send
    - strerror
    - c_str
    - access
    - fork
    - get
    - setCloseOnExec
    - fdopen
    - exit
    - split
    - Json
    - pipe
    - signal
    - info
    - dup2
    - boost::is_any_of
    - close
    linkageType: ''
    returnType: void
    signature: void PipeConnector::launch()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dump
      Src: /src/pdns/modules/remotebackend/pipeconnector.cc:150,1
    - Dst: PipeConnector::launch
      Src: /src/pdns/modules/remotebackend/pipeconnector.cc:151,1
    - Dst: auto::append
      Src: /src/pdns/modules/remotebackend/pipeconnector.cc:153,1
    - Dst: auto::size
      Src: /src/pdns/modules/remotebackend/pipeconnector.cc:159,1
    - Dst: write
      Src: /src/pdns/modules/remotebackend/pipeconnector.cc:160,1
    - Dst: auto::c_str
      Src: /src/pdns/modules/remotebackend/pipeconnector.cc:160,1
    - Dst: auto::length
      Src: /src/pdns/modules/remotebackend/pipeconnector.cc:160,1
    - Dst: PDNSException
      Src: /src/pdns/modules/remotebackend/pipeconnector.cc:162,1
    - Dst: std::string
      Src: /src/pdns/modules/remotebackend/pipeconnector.cc:162,1
    - Dst: strerror
      Src: /src/pdns/modules/remotebackend/pipeconnector.cc:162,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - ' input'
    argTypes:
    - Json
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 168
      start: 148
    functionDepth: 2
    functionLinenumber: 148
    functionLinenumberEnd: 168
    functionName: PipeConnector::send_message
    functionSourceFile: /src/pdns/modules/remotebackend/pipeconnector.cc
    functionUses: 0
    functionsReached:
    - auto::append
    - auto::c_str
    - PDNSException
    - dump
    - write
    - PipeConnector::launch
    - strerror
    - std::string
    - auto::length
    - auto::size
    linkageType: ''
    returnType: int
    signature: int PipeConnector::send_message(const Json& input)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: PipeConnector::launch
      Src: /src/pdns/modules/remotebackend/pipeconnector.cc:175,1
    - Dst: std::string::clear
      Src: /src/pdns/modules/remotebackend/pipeconnector.cc:178,1
    - Dst: waitForData
      Src: /src/pdns/modules/remotebackend/pipeconnector.cc:180,1
    - Dst: fileno
      Src: /src/pdns/modules/remotebackend/pipeconnector.cc:180,1
    - Dst: get
      Src: /src/pdns/modules/remotebackend/pipeconnector.cc:180,1
    - Dst: PDNSException
      Src: /src/pdns/modules/remotebackend/pipeconnector.cc:182,1
    - Dst: stringerror
      Src: /src/pdns/modules/remotebackend/pipeconnector.cc:182,1
    - Dst: PDNSException
      Src: /src/pdns/modules/remotebackend/pipeconnector.cc:185,1
    - Dst: stringfgets
      Src: /src/pdns/modules/remotebackend/pipeconnector.cc:189,1
    - Dst: get
      Src: /src/pdns/modules/remotebackend/pipeconnector.cc:189,1
    - Dst: PDNSException
      Src: /src/pdns/modules/remotebackend/pipeconnector.cc:190,1
    - Dst: std::string::append
      Src: /src/pdns/modules/remotebackend/pipeconnector.cc:193,1
    - Dst: json11::Json::parse
      Src: /src/pdns/modules/remotebackend/pipeconnector.cc:195,1
    - Dst: std::string::size
      Src: /src/pdns/modules/remotebackend/pipeconnector.cc:197,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 22
    argCount: 1
    argNames:
    - ' output'
    argTypes:
    - Json
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 201
      start: 170
    functionDepth: 2
    functionLinenumber: 170
    functionLinenumberEnd: 201
    functionName: PipeConnector::recv_message
    functionSourceFile: /src/pdns/modules/remotebackend/pipeconnector.cc
    functionUses: 0
    functionsReached:
    - fileno
    - std::string::append
    - json11::Json::parse
    - PDNSException
    - stringerror
    - stringfgets
    - waitForData
    - std::string::clear
    - get
    - PipeConnector::launch
    - std::string::size
    linkageType: ''
    returnType: int
    signature: int PipeConnector::recv_message(Json& output)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: waitpid
      Src: /src/pdns/modules/remotebackend/pipeconnector.cc:206,1
    - Dst: PDNSException
      Src: /src/pdns/modules/remotebackend/pipeconnector.cc:208,1
    - Dst: std::to_string
      Src: /src/pdns/modules/remotebackend/pipeconnector.cc:208,1
    - Dst: std::to_string
      Src: /src/pdns/modules/remotebackend/pipeconnector.cc:208,1
    - Dst: getpid
      Src: /src/pdns/modules/remotebackend/pipeconnector.cc:208,1
    - Dst: string
      Src: /src/pdns/modules/remotebackend/pipeconnector.cc:208,1
    - Dst: strerror
      Src: /src/pdns/modules/remotebackend/pipeconnector.cc:208,1
    - Dst: WIFEXITED
      Src: /src/pdns/modules/remotebackend/pipeconnector.cc:211,1
    - Dst: WEXITSTATUS
      Src: /src/pdns/modules/remotebackend/pipeconnector.cc:212,1
    - Dst: PDNSException
      Src: /src/pdns/modules/remotebackend/pipeconnector.cc:213,1
    - Dst: std::to_string
      Src: /src/pdns/modules/remotebackend/pipeconnector.cc:213,1
    - Dst: WIFSIGNALED
      Src: /src/pdns/modules/remotebackend/pipeconnector.cc:215,1
    - Dst: WTERMSIG
      Src: /src/pdns/modules/remotebackend/pipeconnector.cc:216,1
    - Dst: std::to_string
      Src: /src/pdns/modules/remotebackend/pipeconnector.cc:217,1
    - Dst: WCOREDUMP
      Src: /src/pdns/modules/remotebackend/pipeconnector.cc:219,1
    - Dst: PDNSException
      Src: /src/pdns/modules/remotebackend/pipeconnector.cc:224,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 228
      start: 203
    functionDepth: 0
    functionLinenumber: 203
    functionLinenumberEnd: 228
    functionName: PipeConnector::checkStatus
    functionSourceFile: /src/pdns/modules/remotebackend/pipeconnector.cc
    functionUses: 1
    functionsReached:
    - WIFSIGNALED
    - WIFEXITED
    - WTERMSIG
    - std::to_string
    - PDNSException
    - string
    - waitpid
    - WEXITSTATUS
    - strerror
    - getpid
    - WCOREDUMP
    linkageType: ''
    returnType: bool
    signature: bool PipeConnector::checkStatus() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ArgvMap::ArgvMap
      Src: /src/pdns/modules/remotebackend/test-remotebackend-post.cc:44,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 42
    functionDepth: 0
    functionLinenumber: 42
    functionLinenumberEnd: 46
    functionName: arg
    functionSourceFile: /src/pdns/modules/remotebackend/test-remotebackend-post.cc
    functionUses: 217
    functionsReached:
    - ArgvMap::ArgvMap
    linkageType: ''
    returnType: ArgvMap
    signature: ArgvMap & arg()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: arg
      Src: /src/pdns/modules/remotebackend/test-remotebackend-post.cc:75,1
    - Dst: std::make_unique<RemoteLoader>
      Src: /src/pdns/modules/remotebackend/test-remotebackend-post.cc:76,1
    - Dst: BackendMakers
      Src: /src/pdns/modules/remotebackend/test-remotebackend-post.cc:77,1
    - Dst: arg
      Src: /src/pdns/modules/remotebackend/test-remotebackend-post.cc:79,1
    - Dst: arg
      Src: /src/pdns/modules/remotebackend/test-remotebackend-post.cc:80,1
    - Dst: std::move
      Src: /src/pdns/modules/remotebackend/test-remotebackend-post.cc:81,1
    - Dst: BackendMakers
      Src: /src/pdns/modules/remotebackend/test-remotebackend-post.cc:81,1
    - Dst: BOOST_TEST_MESSAGE
      Src: /src/pdns/modules/remotebackend/test-remotebackend-post.cc:84,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 70
    functionDepth: 1
    functionLinenumber: 70
    functionLinenumberEnd: 86
    functionName: RemotebackendSetup
    functionSourceFile: /src/pdns/modules/remotebackend/test-remotebackend-post.cc
    functionUses: 0
    functionsReached:
    - BackendMakers
    - BOOST_TEST_MESSAGE
    - std::move
    - std::make_unique<RemoteLoader>
    - arg
    linkageType: ''
    returnType: void
    signature: void RemotebackendSetup()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 87
    functionDepth: 0
    functionLinenumber: 87
    functionLinenumberEnd: 87
    functionName: ~RemotebackendSetup()
    functionSourceFile: /src/pdns/modules/remotebackend/test-remotebackend-post.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~RemotebackendSetup()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: std::map<std::string, std::string>::count
      Src: /src/pdns/modules/remotebackend/unixconnector.cc:37,1
    - Dst: SLOG
      Src: /src/pdns/modules/remotebackend/unixconnector.cc:38,1
    - Dst: info
      Src: /src/pdns/modules/remotebackend/unixconnector.cc:39,1
    - Dst: PDNSException
      Src: /src/pdns/modules/remotebackend/unixconnector.cc:40,1
    - Dst: std::map<std::string, std::string>::find
      Src: /src/pdns/modules/remotebackend/unixconnector.cc:43,1
    - Dst: std::map<std::string, std::string>::end
      Src: /src/pdns/modules/remotebackend/unixconnector.cc:43,1
    - Dst: std::stoi
      Src: /src/pdns/modules/remotebackend/unixconnector.cc:44,1
    - Dst: std::map<std::string, std::string>::find
      Src: /src/pdns/modules/remotebackend/unixconnector.cc:44,1
    - Dst: std::map<std::string, std::string>::find
      Src: /src/pdns/modules/remotebackend/unixconnector.cc:46,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 2
    argNames:
    - log
    - optionsMap
    argTypes:
    - Logr::log_t
    - std::map<std::string, std::string>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 33
    functionDepth: 0
    functionLinenumber: 33
    functionLinenumberEnd: 50
    functionName: UnixsocketConnector::UnixsocketConnector
    functionSourceFile: /src/pdns/modules/remotebackend/unixconnector.cc
    functionUses: 0
    functionsReached:
    - SLOG
    - PDNSException
    - std::stoi
    - info
    - std::map<std::string, std::string>::end
    - std::map<std::string, std::string>::find
    - std::map<std::string, std::string>::count
    linkageType: ''
    returnType: void
    signature: void UnixsocketConnector::UnixsocketConnector(Logr::log_t log, std::map<std::string,
      std::string> optionsMap)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: close
      Src: /src/pdns/modules/remotebackend/unixconnector.cc:55,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 52
    functionDepth: 0
    functionLinenumber: 52
    functionLinenumberEnd: 57
    functionName: UnixsocketConnector::~UnixsocketConnector()
    functionSourceFile: /src/pdns/modules/remotebackend/unixconnector.cc
    functionUses: 0
    functionsReached:
    - close
    linkageType: ''
    returnType: void
    signature: void UnixsocketConnector::~UnixsocketConnector()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dump
      Src: /src/pdns/modules/remotebackend/unixconnector.cc:61,1
    - Dst: UnixsocketConnector::write
      Src: /src/pdns/modules/remotebackend/unixconnector.cc:62,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ' input'
    argTypes:
    - Json
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 59
    functionDepth: 0
    functionLinenumber: 59
    functionLinenumberEnd: 67
    functionName: UnixsocketConnector::send_message
    functionSourceFile: /src/pdns/modules/remotebackend/unixconnector.cc
    functionUses: 0
    functionsReached:
    - dump
    - UnixsocketConnector::write
    linkageType: ''
    returnType: int
    signature: int UnixsocketConnector::send_message(const Json& input)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: gettimeofday
      Src: /src/pdns/modules/remotebackend/unixconnector.cc:78,1
    - Dst: memcpy
      Src: /src/pdns/modules/remotebackend/unixconnector.cc:79,1
    - Dst: waitForData
      Src: /src/pdns/modules/remotebackend/unixconnector.cc:83,1
    - Dst: gettimeofday
      Src: /src/pdns/modules/remotebackend/unixconnector.cc:88,1
    - Dst: UnixsocketConnector::read
      Src: /src/pdns/modules/remotebackend/unixconnector.cc:92,1
    - Dst: json11::Json::parse
      Src: /src/pdns/modules/remotebackend/unixconnector.cc:99,1
    - Dst: std::string::size
      Src: /src/pdns/modules/remotebackend/unixconnector.cc:101,1
    - Dst: gettimeofday
      Src: /src/pdns/modules/remotebackend/unixconnector.cc:104,1
    - Dst: close
      Src: /src/pdns/modules/remotebackend/unixconnector.cc:107,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 27
    argCount: 1
    argNames:
    - ' output'
    argTypes:
    - Json
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 69
    functionDepth: 0
    functionLinenumber: 69
    functionLinenumberEnd: 110
    functionName: UnixsocketConnector::recv_message
    functionSourceFile: /src/pdns/modules/remotebackend/unixconnector.cc
    functionUses: 0
    functionsReached:
    - memcpy
    - json11::Json::parse
    - UnixsocketConnector::read
    - waitForData
    - gettimeofday
    - std::string::size
    - close
    linkageType: ''
    returnType: int
    signature: int UnixsocketConnector::recv_message(Json& output)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: UnixsocketConnector::reconnect
      Src: /src/pdns/modules/remotebackend/unixconnector.cc:117,1
    - Dst: TCPIOHandler::read
      Src: /src/pdns/modules/remotebackend/unixconnector.cc:121,1
    - Dst: close
      Src: /src/pdns/modules/remotebackend/unixconnector.cc:130,1
    - Dst: append
      Src: /src/pdns/modules/remotebackend/unixconnector.cc:134,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 1
    argNames:
    - ' data'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 136
      start: 112
    functionDepth: 1
    functionLinenumber: 112
    functionLinenumberEnd: 136
    functionName: UnixsocketConnector::read
    functionSourceFile: /src/pdns/modules/remotebackend/unixconnector.cc
    functionUses: 1
    functionsReached:
    - TCPIOHandler::read
    - append
    - close
    - UnixsocketConnector::reconnect
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t UnixsocketConnector::read(std::string& data)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: UnixsocketConnector::reconnect
      Src: /src/pdns/modules/remotebackend/unixconnector.cc:142,1
    - Dst: size
      Src: /src/pdns/modules/remotebackend/unixconnector.cc:147,1
    - Dst: TCPIOHandler::write
      Src: /src/pdns/modules/remotebackend/unixconnector.cc:148,1
    - Dst: at
      Src: /src/pdns/modules/remotebackend/unixconnector.cc:148,1
    - Dst: size
      Src: /src/pdns/modules/remotebackend/unixconnector.cc:148,1
    - Dst: close
      Src: /src/pdns/modules/remotebackend/unixconnector.cc:151,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/modules/remotebackend/unixconnector.cc:154,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 1
    argNames:
    - ' data'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 157
      start: 138
    functionDepth: 1
    functionLinenumber: 138
    functionLinenumberEnd: 157
    functionName: UnixsocketConnector::write
    functionSourceFile: /src/pdns/modules/remotebackend/unixconnector.cc
    functionUses: 1
    functionsReached:
    - TCPIOHandler::write
    - static_cast<size_t>
    - UnixsocketConnector::reconnect
    - size
    - at
    - close
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t UnixsocketConnector::write(const std::string& data)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: SLOG
      Src: /src/pdns/modules/remotebackend/unixconnector.cc:169,1
    - Dst: info
      Src: /src/pdns/modules/remotebackend/unixconnector.cc:170,1
    - Dst: socket
      Src: /src/pdns/modules/remotebackend/unixconnector.cc:171,1
    - Dst: SLOG
      Src: /src/pdns/modules/remotebackend/unixconnector.cc:174,1
    - Dst: strerror
      Src: /src/pdns/modules/remotebackend/unixconnector.cc:174,1
    - Dst: error
      Src: /src/pdns/modules/remotebackend/unixconnector.cc:175,1
    - Dst: makeUNsockaddr
      Src: /src/pdns/modules/remotebackend/unixconnector.cc:180,1
    - Dst: SLOG
      Src: /src/pdns/modules/remotebackend/unixconnector.cc:181,1
    - Dst: info
      Src: /src/pdns/modules/remotebackend/unixconnector.cc:182,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/remotebackend/unixconnector.cc:182,1
    - Dst: connect
      Src: /src/pdns/modules/remotebackend/unixconnector.cc:186,1
    - Dst: reinterpret_cast<struct sockaddr*>
      Src: /src/pdns/modules/remotebackend/unixconnector.cc:186,1
    - Dst: SLOG
      Src: /src/pdns/modules/remotebackend/unixconnector.cc:189,1
    - Dst: strerror
      Src: /src/pdns/modules/remotebackend/unixconnector.cc:189,1
    - Dst: error
      Src: /src/pdns/modules/remotebackend/unixconnector.cc:190,1
    - Dst: close
      Src: /src/pdns/modules/remotebackend/unixconnector.cc:191,1
    - Dst: Json
      Src: /src/pdns/modules/remotebackend/unixconnector.cc:198,1
    - Dst: Json
      Src: /src/pdns/modules/remotebackend/unixconnector.cc:200,1
    - Dst: UnixsocketConnector::send
      Src: /src/pdns/modules/remotebackend/unixconnector.cc:203,1
    - Dst: UnixsocketConnector::recv
      Src: /src/pdns/modules/remotebackend/unixconnector.cc:205,1
    - Dst: SLOG
      Src: /src/pdns/modules/remotebackend/unixconnector.cc:206,1
    - Dst: info
      Src: /src/pdns/modules/remotebackend/unixconnector.cc:207,1
    - Dst: close
      Src: /src/pdns/modules/remotebackend/unixconnector.cc:208,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 31
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 211
      start: 159
    functionDepth: 0
    functionLinenumber: 159
    functionLinenumberEnd: 211
    functionName: UnixsocketConnector::reconnect
    functionSourceFile: /src/pdns/modules/remotebackend/unixconnector.cc
    functionUses: 2
    functionsReached:
    - socket
    - UnixsocketConnector::send
    - SLOG
    - UnixsocketConnector::recv
    - Logging::Loggable
    - info
    - error
    - makeUNsockaddr
    - Json
    - connect
    - strerror
    - close
    - reinterpret_cast<struct sockaddr*>
    linkageType: ''
    returnType: void
    signature: void UnixsocketConnector::reconnect()
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: std::map<std::string, std::string>::find
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:42,1
    - Dst: std::map<std::string, std::string>::end
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:42,1
    - Dst: PDNSException
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:43,1
    - Dst: std::map<std::string, std::string>::find
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:46,1
    - Dst: PDNSException
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:54,1
    - Dst: std::string
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:54,1
    - Dst: what
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:54,1
    - Dst: std::map<std::string, std::string>::find
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:57,1
    - Dst: std::map<std::string, std::string>::end
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:57,1
    - Dst: std::map<std::string, std::string>::find
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:58,1
    - Dst: std::map<std::string, std::string>::find
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:67,1
    - Dst: std::map<std::string, std::string>::end
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:67,1
    - Dst: std::stoi
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:68,1
    - Dst: std::map<std::string, std::string>::find
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:68,1
    - Dst: std::map<std::string, std::string>::find
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:70,1
    - Dst: std::map<std::string, std::string>::end
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:70,1
    - Dst: std::map<std::string, std::string>::find
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:71,1
    - Dst: std::map<std::string, std::string>::find
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:76,1
    - Dst: std::map<std::string, std::string>::end
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:76,1
    - Dst: std::map<std::string, std::string>::find
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:77,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 33
    argCount: 2
    argNames:
    - log
    - options
    argTypes:
    - Logr::log_t
    - std::map<std::string, std::string>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 37
    functionDepth: 0
    functionLinenumber: 37
    functionLinenumberEnd: 82
    functionName: HTTPConnector::HTTPConnector
    functionSourceFile: /src/pdns/modules/remotebackend/httpconnector.cc
    functionUses: 0
    functionsReached:
    - PDNSException
    - what
    - std::map<std::string, std::string>::end
    - std::map<std::string, std::string>::find
    - std::stoi
    - std::string
    linkageType: ''
    returnType: void
    signature: void HTTPConnector::HTTPConnector(Logr::log_t log, std::map<std::string,
      std::string> options)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 84
    functionDepth: 0
    functionLinenumber: 84
    functionLinenumberEnd: 84
    functionName: HTTPConnector::~HTTPConnector()
    functionSourceFile: /src/pdns/modules/remotebackend/httpconnector.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void HTTPConnector::~HTTPConnector()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: Json
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:89,1
    - Dst: Utility::encodeURL
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:90,1
    - Dst: asString
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:90,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - ' parameters'
    - ' element'
    - ' ss'
    argTypes:
    - Json
    - string
    - std::stringstream
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 86
    functionDepth: 0
    functionLinenumber: 86
    functionLinenumberEnd: 92
    functionName: HTTPConnector::addUrlComponent
    functionSourceFile: /src/pdns/modules/remotebackend/httpconnector.cc
    functionUses: 0
    functionsReached:
    - asString
    - Json
    - Utility::encodeURL
    linkageType: ''
    returnType: void
    signature: void HTTPConnector::addUrlComponent(const Json& parameters, const string&
      element, std::stringstream& ss)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: object_items
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:98,1
    - Dst: Utility::encodeURL
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:99,1
    - Dst: second::is_bool
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:100,1
    - Dst: second::bool_value
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:101,1
    - Dst: second::is_null
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:103,1
    - Dst: Utility::encodeURL
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:104,1
    - Dst: Connector::asString
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:104,1
    - Dst: std::stringstream::str
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:109,1
    - Dst: std::stringstream::str
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:109,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - ' prefix'
    - ' args'
    argTypes:
    - std::string
    - Json
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 94
    functionDepth: 1
    functionLinenumber: 94
    functionLinenumberEnd: 110
    functionName: HTTPConnector::buildMemberListArgs
    functionSourceFile: /src/pdns/modules/remotebackend/httpconnector.cc
    functionUses: 0
    functionsReached:
    - Connector::asString
    - second::bool_value
    - second::is_null
    - std::stringstream::str
    - second::is_bool
    - object_items
    - Utility::encodeURL
    linkageType: ''
    returnType: std::string
    signature: std::string HTTPConnector::buildMemberListArgs(const std::string& prefix,
      const Json& args)
  - BBCount: 24
    BranchProfiles: []
    Callsites:
    - Dst: HTTPConnector::addUrlComponent
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:128,1
    - Dst: HTTPConnector::addUrlComponent
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:129,1
    - Dst: HTTPConnector::addUrlComponent
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:130,1
    - Dst: HTTPConnector::addUrlComponent
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:131,1
    - Dst: HTTPConnector::addUrlComponent
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:132,1
    - Dst: HTTPConnector::addUrlComponent
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:133,1
    - Dst: HTTPConnector::addUrlComponent
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:134,1
    - Dst: preparePost
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:139,1
    - Dst: POST
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:143,1
    - Dst: string_value
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:143,1
    - Dst: POST
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:144,1
    - Dst: string_value
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:144,1
    - Dst: preparePost
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:145,1
    - Dst: POST
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:153,1
    - Dst: asString
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:153,1
    - Dst: POST
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:154,1
    - Dst: bool_value
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:154,1
    - Dst: POST
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:155,1
    - Dst: bool_value
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:155,1
    - Dst: POST
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:156,1
    - Dst: string_value
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:156,1
    - Dst: preparePost
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:157,1
    - Dst: HTTPConnector::addUrlComponent
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:162,1
    - Dst: HTTPConnector::addUrlComponent
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:163,1
    - Dst: array_items
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:165,1
    - Dst: HTTPConnector::buildMemberListArgs
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:166,1
    - Dst: std::to_string
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:166,1
    - Dst: std::stringstream::str
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:168,1
    - Dst: std::stringstream::str
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:168,1
    - Dst: std::to_string
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:170,1
    - Dst: body::size
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:170,1
    - Dst: HTTPConnector::addUrlComponent
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:174,1
    - Dst: HTTPConnector::addUrlComponent
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:175,1
    - Dst: is_null
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:176,1
    - Dst: is_string
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:176,1
    - Dst: POST
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:177,1
    - Dst: string_value
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:177,1
    - Dst: preparePost
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:179,1
    - Dst: array_items
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:184,1
    - Dst: HTTPConnector::buildMemberListArgs
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:185,1
    - Dst: std::to_string
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:185,1
    - Dst: std::stringstream::str
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:187,1
    - Dst: std::stringstream::str
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:187,1
    - Dst: std::to_string
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:189,1
    - Dst: body::size
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:189,1
    - Dst: HTTPConnector::addUrlComponent
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:193,1
    - Dst: HTTPConnector::buildMemberListArgs
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:194,1
    - Dst: std::to_string
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:196,1
    - Dst: body::size
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:196,1
    - Dst: HTTPConnector::addUrlComponent
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:201,1
    - Dst: array_items
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:202,1
    - Dst: Utility::encodeURL
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:203,1
    - Dst: string_value
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:203,1
    - Dst: array_items
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:205,1
    - Dst: bool_value
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:206,1
    - Dst: std::stringstream::str
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:208,1
    - Dst: std::stringstream::str
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:208,1
    - Dst: std::to_string
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:210,1
    - Dst: body::size
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:210,1
    - Dst: HTTPConnector::addUrlComponent
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:215,1
    - Dst: HTTPConnector::addUrlComponent
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:216,1
    - Dst: int_value
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:217,1
    - Dst: Utility::encodeURL
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:217,1
    - Dst: string_value
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:217,1
    - Dst: bool_value
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:217,1
    - Dst: array_items
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:218,1
    - Dst: Utility::encodeURL
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:219,1
    - Dst: string_value
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:219,1
    - Dst: array_items
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:221,1
    - Dst: bool_value
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:222,1
    - Dst: std::stringstream::str
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:224,1
    - Dst: std::stringstream::str
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:224,1
    - Dst: std::to_string
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:226,1
    - Dst: body::size
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:226,1
    - Dst: HTTPConnector::addUrlComponent
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:230,1
    - Dst: HTTPConnector::addUrlComponent
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:231,1
    - Dst: preparePost
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:232,1
    - Dst: HTTPConnector::addUrlComponent
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:236,1
    - Dst: preparePost
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:237,1
    - Dst: is_array
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:244,1
    - Dst: array_items
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:245,1
    - Dst: Utility::encodeURL
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:246,1
    - Dst: string_value
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:246,1
    - Dst: std::stringstream::str
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:249,1
    - Dst: std::stringstream::str
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:249,1
    - Dst: std::to_string
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:251,1
    - Dst: body::size
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:251,1
    - Dst: POST
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:259,1
    - Dst: asString
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:259,1
    - Dst: preparePost
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:260,1
    - Dst: preparePost
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:264,1
    - Dst: preparePost
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:268,1
    - Dst: POST
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:272,1
    - Dst: string_value
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:272,1
    - Dst: preparePost
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:273,1
    - Dst: GET
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:277,1
    - Dst: string_value
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:277,1
    - Dst: GET
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:278,1
    - Dst: std::to_string
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:278,1
    - Dst: int_value
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:278,1
    - Dst: GET
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:282,1
    - Dst: bool_value
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:282,1
    - Dst: object_items
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:291,1
    - Dst: asString
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:296,1
    - Dst: setup
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:303,1
    - Dst: std::stringstream::str
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:303,1
    CyclomaticComplexity: 41
    EdgeCount: 41
    ICount: 152
    argCount: 3
    argNames:
    - ' method'
    - ' parameters'
    - ' req'
    argTypes:
    - std::string
    - Json
    - YaHTTP::Request
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 305
      start: 113
    functionDepth: 2
    functionLinenumber: 113
    functionLinenumberEnd: 305
    functionName: HTTPConnector::restful_requestbuilder
    functionSourceFile: /src/pdns/modules/remotebackend/httpconnector.cc
    functionUses: 0
    functionsReached:
    - std::to_string
    - POST
    - body::size
    - std::stringstream::str
    - HTTPConnector::buildMemberListArgs
    - is_string
    - HTTPConnector::addUrlComponent
    - int_value
    - preparePost
    - setup
    - array_items
    - Utility::encodeURL
    - string_value
    - bool_value
    - object_items
    - is_null
    - asString
    - is_array
    - GET
    linkageType: ''
    returnType: void
    signature: void HTTPConnector::restful_requestbuilder(const std::string& method,
      const Json& parameters, YaHTTP::Request& req)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dump
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:310,1
    - Dst: setup
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:311,1
    - Dst: std::to_string
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:314,1
    - Dst: std::string::size
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:314,1
    - Dst: string_value
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:322,1
    - Dst: setup
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:323,1
    - Dst: std::stringstream::str
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:323,1
    - Dst: POST
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:325,1
    - Dst: dump
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:325,1
    - Dst: preparePost
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:326,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 2
    argNames:
    - ' input'
    - ' req'
    argTypes:
    - Json
    - YaHTTP::Request
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 329
      start: 307
    functionDepth: 0
    functionLinenumber: 307
    functionLinenumberEnd: 329
    functionName: HTTPConnector::post_requestbuilder
    functionSourceFile: /src/pdns/modules/remotebackend/httpconnector.cc
    functionUses: 0
    functionsReached:
    - string_value
    - std::to_string
    - POST
    - dump
    - std::stringstream::str
    - preparePost
    - setup
    - std::string::size
    linkageType: ''
    returnType: void
    signature: void HTTPConnector::post_requestbuilder(const Json& input, YaHTTP::Request&
      req)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::Request::Request
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:342,1
    - Dst: HTTPConnector::post_requestbuilder
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:345,1
    - Dst: HTTPConnector::restful_requestbuilder
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:348,1
    - Dst: string_value
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:348,1
    - Dst: HTTPConnector::d_socket::getHandle
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:358,1
    - Dst: waitForRWData
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:360,1
    - Dst: writenWithTimeout
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:362,1
    - Dst: std::ostringstream::str
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:362,1
    - Dst: std::ostringstream::str
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:362,1
    - Dst: SLOG
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:366,1
    - Dst: toStringWithPort
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:366,1
    - Dst: what
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:366,1
    - Dst: error
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:367,1
    - Dst: what
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:367,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:367,1
    - Dst: toStringWithPort
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:367,1
    - Dst: SLOG
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:370,1
    - Dst: toStringWithPort
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:370,1
    - Dst: info
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:371,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:371,1
    - Dst: toStringWithPort
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:371,1
    - Dst: HTTPConnector::d_socket::reset
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:380,1
    - Dst: std::to_string
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:386,1
    - Dst: memset
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:387,1
    - Dst: getaddrinfo
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:392,1
    - Dst: c_str
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:392,1
    - Dst: std::string::c_str
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:392,1
    - Dst: std::make_unique<Socket>
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:398,1
    - Dst: setSockaddr
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:399,1
    - Dst: connect
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:400,1
    - Dst: setNonBlocking
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:401,1
    - Dst: writenWithTimeout
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:402,1
    - Dst: std::ostringstream::str
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:402,1
    - Dst: std::ostringstream::str
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:402,1
    - Dst: SLOG
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:406,1
    - Dst: toStringWithPort
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:406,1
    - Dst: what
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:406,1
    - Dst: error
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:407,1
    - Dst: what
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:407,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:407,1
    - Dst: toStringWithPort
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:407,1
    - Dst: SLOG
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:410,1
    - Dst: toStringWithPort
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:410,1
    - Dst: info
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:411,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:411,1
    - Dst: toStringWithPort
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:411,1
    - Dst: reset
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:417,1
    - Dst: freeaddrinfo
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:420,1
    - Dst: SLOG
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:423,1
    - Dst: gai_strerror
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:423,1
    - Dst: error
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:424,1
    - Dst: gai_strerror
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:424,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:424,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 57
    argCount: 1
    argNames:
    - ' input'
    argTypes:
    - Json
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 428
      start: 331
    functionDepth: 3
    functionLinenumber: 331
    functionLinenumberEnd: 428
    functionName: HTTPConnector::send_message
    functionSourceFile: /src/pdns/modules/remotebackend/httpconnector.cc
    functionUses: 0
    functionsReached:
    - std::to_string
    - HTTPConnector::post_requestbuilder
    - YaHTTP::Request::Request
    - error
    - reset
    - SLOG
    - Logging::Loggable
    - setNonBlocking
    - std::ostringstream::str
    - memset
    - c_str
    - getaddrinfo
    - HTTPConnector::d_socket::reset
    - connect
    - gai_strerror
    - string_value
    - setSockaddr
    - HTTPConnector::restful_requestbuilder
    - waitForRWData
    - toStringWithPort
    - HTTPConnector::d_socket::getHandle
    - writenWithTimeout
    - what
    - std::string::c_str
    - info
    - std::make_unique<Socket>
    - freeaddrinfo
    linkageType: ''
    returnType: int
    signature: int HTTPConnector::send_message(const Json& input)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::Response::Response
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:433,1
    - Dst: YaHTTP::AsyncResponseLoader::initialize
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:441,1
    - Dst: time
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:444,1
    - Dst: YaHTTP::AsyncResponseLoader::ready
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:445,1
    - Dst: labs
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:445,1
    - Dst: time
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:445,1
    - Dst: readWithTimeout
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:446,1
    - Dst: std::array::data
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:446,1
    - Dst: std::array::size
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:446,1
    - Dst: NetworkError
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:448,1
    - Dst: YaHTTP::AsyncResponseLoader::feed
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:450,1
    - Dst: std::string
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:450,1
    - Dst: std::array::data
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:450,1
    - Dst: YaHTTP::AsyncResponseLoader::ready
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:453,1
    - Dst: NetworkError
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:454,1
    - Dst: reset
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:458,1
    - Dst: PDNSException
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:459,1
    - Dst: toStringWithPort
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:459,1
    - Dst: what
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:459,1
    - Dst: reset
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:462,1
    - Dst: PDNSException
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:463,1
    - Dst: toStringWithPort
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:463,1
    - Dst: YaHTTP::AsyncResponseLoader::finalize
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:466,1
    - Dst: PDNSException
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:470,1
    - Dst: std::to_string
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:470,1
    - Dst: toStringWithPort
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:470,1
    - Dst: json11::Json::parse
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:474,1
    - Dst: static_cast<int>
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:476,1
    - Dst: YaHTTP::Response::body::size
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:476,1
    - Dst: SLOG
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:478,1
    - Dst: error
      Src: /src/pdns/modules/remotebackend/httpconnector.cc:479,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 33
    argCount: 1
    argNames:
    - ' output'
    argTypes:
    - Json
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 482
      start: 430
    functionDepth: 0
    functionLinenumber: 430
    functionLinenumberEnd: 482
    functionName: HTTPConnector::recv_message
    functionSourceFile: /src/pdns/modules/remotebackend/httpconnector.cc
    functionUses: 0
    functionsReached:
    - YaHTTP::Response::body::size
    - std::to_string
    - json11::Json::parse
    - PDNSException
    - YaHTTP::AsyncResponseLoader::finalize
    - error
    - std::string
    - static_cast<int>
    - reset
    - SLOG
    - readWithTimeout
    - time
    - NetworkError
    - YaHTTP::Response::Response
    - YaHTTP::AsyncResponseLoader::ready
    - labs
    - toStringWithPort
    - std::array::data
    - YaHTTP::AsyncResponseLoader::feed
    - YaHTTP::AsyncResponseLoader::initialize
    - what
    - std::array::size
    linkageType: ''
    returnType: int
    signature: int HTTPConnector::recv_message(Json& output)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: withName
      Src: /src/pdns/modules/gpgsqlbackend/gpgsqlbackend.cc:43,1
    - Dst: setDB
      Src: /src/pdns/modules/gpgsqlbackend/gpgsqlbackend.cc:47,1
    - Dst: std::unique_ptr<SSql>
      Src: /src/pdns/modules/gpgsqlbackend/gpgsqlbackend.cc:47,1
    - Dst: getArg
      Src: /src/pdns/modules/gpgsqlbackend/gpgsqlbackend.cc:48,1
    - Dst: getArg
      Src: /src/pdns/modules/gpgsqlbackend/gpgsqlbackend.cc:49,1
    - Dst: getArg
      Src: /src/pdns/modules/gpgsqlbackend/gpgsqlbackend.cc:50,1
    - Dst: getArg
      Src: /src/pdns/modules/gpgsqlbackend/gpgsqlbackend.cc:51,1
    - Dst: getArg
      Src: /src/pdns/modules/gpgsqlbackend/gpgsqlbackend.cc:52,1
    - Dst: getArg
      Src: /src/pdns/modules/gpgsqlbackend/gpgsqlbackend.cc:53,1
    - Dst: mustDo
      Src: /src/pdns/modules/gpgsqlbackend/gpgsqlbackend.cc:54,1
    - Dst: SPgSQL::SPgSQL
      Src: /src/pdns/modules/gpgsqlbackend/gpgsqlbackend.cc:47,1
    - Dst: SLOG
      Src: /src/pdns/modules/gpgsqlbackend/gpgsqlbackend.cc:58,1
    - Dst: txtReason
      Src: /src/pdns/modules/gpgsqlbackend/gpgsqlbackend.cc:58,1
    - Dst: error
      Src: /src/pdns/modules/gpgsqlbackend/gpgsqlbackend.cc:59,1
    - Dst: txtReason
      Src: /src/pdns/modules/gpgsqlbackend/gpgsqlbackend.cc:59,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/gpgsqlbackend/gpgsqlbackend.cc:59,1
    - Dst: PDNSException
      Src: /src/pdns/modules/gpgsqlbackend/gpgsqlbackend.cc:60,1
    - Dst: txtReason
      Src: /src/pdns/modules/gpgsqlbackend/gpgsqlbackend.cc:60,1
    - Dst: allocateStatements
      Src: /src/pdns/modules/gpgsqlbackend/gpgsqlbackend.cc:62,1
    - Dst: SLOG
      Src: /src/pdns/modules/gpgsqlbackend/gpgsqlbackend.cc:63,1
    - Dst: getArg
      Src: /src/pdns/modules/gpgsqlbackend/gpgsqlbackend.cc:63,1
    - Dst: getArg
      Src: /src/pdns/modules/gpgsqlbackend/gpgsqlbackend.cc:63,1
    - Dst: info
      Src: /src/pdns/modules/gpgsqlbackend/gpgsqlbackend.cc:64,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/gpgsqlbackend/gpgsqlbackend.cc:64,1
    - Dst: getArg
      Src: /src/pdns/modules/gpgsqlbackend/gpgsqlbackend.cc:64,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/gpgsqlbackend/gpgsqlbackend.cc:64,1
    - Dst: getArg
      Src: /src/pdns/modules/gpgsqlbackend/gpgsqlbackend.cc:64,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 2
    argNames:
    - ' mode'
    - ' suffix'
    argTypes:
    - string
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 39
    functionDepth: 1
    functionLinenumber: 39
    functionLinenumberEnd: 65
    functionName: gPgSQLBackend::gPgSQLBackend
    functionSourceFile: /src/pdns/modules/gpgsqlbackend/gpgsqlbackend.cc
    functionUses: 0
    functionsReached:
    - allocateStatements
    - SLOG
    - Logging::Loggable
    - withName
    - PDNSException
    - getArg
    - info
    - setDB
    - mustDo
    - SPgSQL::SPgSQL
    - error
    - txtReason
    - std::unique_ptr<SSql>
    linkageType: ''
    returnType: void
    signature: void gPgSQLBackend::gPgSQLBackend(const string& mode, const string&
      suffix)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: freeStatements
      Src: /src/pdns/modules/gpgsqlbackend/gpgsqlbackend.cc:69,1
    - Dst: gPgSQLBackend::reconnect
      Src: /src/pdns/modules/gpgsqlbackend/gpgsqlbackend.cc:72,1
    - Dst: allocateStatements
      Src: /src/pdns/modules/gpgsqlbackend/gpgsqlbackend.cc:74,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 67
    functionDepth: 1
    functionLinenumber: 67
    functionLinenumberEnd: 76
    functionName: gPgSQLBackend::reconnect
    functionSourceFile: /src/pdns/modules/gpgsqlbackend/gpgsqlbackend.cc
    functionUses: 1
    functionsReached:
    - allocateStatements
    - gPgSQLBackend::reconnect
    - freeStatements
    linkageType: ''
    returnType: void
    signature: void gPgSQLBackend::reconnect()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dynamic_cast<SPgSQL*>
      Src: /src/pdns/modules/gpgsqlbackend/gpgsqlbackend.cc:80,1
    - Dst: get
      Src: /src/pdns/modules/gpgsqlbackend/gpgsqlbackend.cc:80,1
    - Dst: auto*::in_trx
      Src: /src/pdns/modules/gpgsqlbackend/gpgsqlbackend.cc:82,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 78
    functionDepth: 0
    functionLinenumber: 78
    functionLinenumberEnd: 85
    functionName: gPgSQLBackend::inTransaction
    functionSourceFile: /src/pdns/modules/gpgsqlbackend/gpgsqlbackend.cc
    functionUses: 0
    functionsReached:
    - auto*::in_trx
    - dynamic_cast<SPgSQL*>
    - get
    linkageType: ''
    returnType: bool
    signature: bool gPgSQLBackend::inTransaction()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' mode'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 90
    functionDepth: 0
    functionLinenumber: 90
    functionLinenumberEnd: 91
    functionName: gPgSQLFactory::gPgSQLFactory
    functionSourceFile: /src/pdns/modules/gpgsqlbackend/gpgsqlbackend.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void gPgSQLFactory(const string& mode)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: declare
      Src: /src/pdns/modules/gpgsqlbackend/gpgsqlbackend.cc:95,1
    - Dst: declare
      Src: /src/pdns/modules/gpgsqlbackend/gpgsqlbackend.cc:96,1
    - Dst: declare
      Src: /src/pdns/modules/gpgsqlbackend/gpgsqlbackend.cc:97,1
    - Dst: declare
      Src: /src/pdns/modules/gpgsqlbackend/gpgsqlbackend.cc:98,1
    - Dst: declare
      Src: /src/pdns/modules/gpgsqlbackend/gpgsqlbackend.cc:99,1
    - Dst: declare
      Src: /src/pdns/modules/gpgsqlbackend/gpgsqlbackend.cc:100,1
    - Dst: declare
      Src: /src/pdns/modules/gpgsqlbackend/gpgsqlbackend.cc:101,1
    - Dst: declare
      Src: /src/pdns/modules/gpgsqlbackend/gpgsqlbackend.cc:103,1
    - Dst: declare
      Src: /src/pdns/modules/gpgsqlbackend/gpgsqlbackend.cc:107,1
    - Dst: declare
      Src: /src/pdns/modules/gpgsqlbackend/gpgsqlbackend.cc:108,1
    - Dst: declare
      Src: /src/pdns/modules/gpgsqlbackend/gpgsqlbackend.cc:109,1
    - Dst: declare
      Src: /src/pdns/modules/gpgsqlbackend/gpgsqlbackend.cc:110,1
    - Dst: declare
      Src: /src/pdns/modules/gpgsqlbackend/gpgsqlbackend.cc:112,1
    - Dst: declare
      Src: /src/pdns/modules/gpgsqlbackend/gpgsqlbackend.cc:113,1
    - Dst: declare
      Src: /src/pdns/modules/gpgsqlbackend/gpgsqlbackend.cc:115,1
    - Dst: declare
      Src: /src/pdns/modules/gpgsqlbackend/gpgsqlbackend.cc:116,1
    - Dst: declare
      Src: /src/pdns/modules/gpgsqlbackend/gpgsqlbackend.cc:118,1
    - Dst: declare
      Src: /src/pdns/modules/gpgsqlbackend/gpgsqlbackend.cc:119,1
    - Dst: declare
      Src: /src/pdns/modules/gpgsqlbackend/gpgsqlbackend.cc:121,1
    - Dst: declare
      Src: /src/pdns/modules/gpgsqlbackend/gpgsqlbackend.cc:123,1
    - Dst: declare
      Src: /src/pdns/modules/gpgsqlbackend/gpgsqlbackend.cc:124,1
    - Dst: declare
      Src: /src/pdns/modules/gpgsqlbackend/gpgsqlbackend.cc:125,1
    - Dst: declare
      Src: /src/pdns/modules/gpgsqlbackend/gpgsqlbackend.cc:126,1
    - Dst: declare
      Src: /src/pdns/modules/gpgsqlbackend/gpgsqlbackend.cc:127,1
    - Dst: declare
      Src: /src/pdns/modules/gpgsqlbackend/gpgsqlbackend.cc:128,1
    - Dst: declare
      Src: /src/pdns/modules/gpgsqlbackend/gpgsqlbackend.cc:130,1
    - Dst: declare
      Src: /src/pdns/modules/gpgsqlbackend/gpgsqlbackend.cc:132,1
    - Dst: declare
      Src: /src/pdns/modules/gpgsqlbackend/gpgsqlbackend.cc:133,1
    - Dst: declare
      Src: /src/pdns/modules/gpgsqlbackend/gpgsqlbackend.cc:135,1
    - Dst: declare
      Src: /src/pdns/modules/gpgsqlbackend/gpgsqlbackend.cc:136,1
    - Dst: declare
      Src: /src/pdns/modules/gpgsqlbackend/gpgsqlbackend.cc:137,1
    - Dst: declare
      Src: /src/pdns/modules/gpgsqlbackend/gpgsqlbackend.cc:138,1
    - Dst: declare
      Src: /src/pdns/modules/gpgsqlbackend/gpgsqlbackend.cc:140,1
    - Dst: declare
      Src: /src/pdns/modules/gpgsqlbackend/gpgsqlbackend.cc:141,1
    - Dst: declare
      Src: /src/pdns/modules/gpgsqlbackend/gpgsqlbackend.cc:142,1
    - Dst: declare
      Src: /src/pdns/modules/gpgsqlbackend/gpgsqlbackend.cc:143,1
    - Dst: declare
      Src: /src/pdns/modules/gpgsqlbackend/gpgsqlbackend.cc:145,1
    - Dst: declare
      Src: /src/pdns/modules/gpgsqlbackend/gpgsqlbackend.cc:146,1
    - Dst: declare
      Src: /src/pdns/modules/gpgsqlbackend/gpgsqlbackend.cc:147,1
    - Dst: declare
      Src: /src/pdns/modules/gpgsqlbackend/gpgsqlbackend.cc:148,1
    - Dst: declare
      Src: /src/pdns/modules/gpgsqlbackend/gpgsqlbackend.cc:149,1
    - Dst: declare
      Src: /src/pdns/modules/gpgsqlbackend/gpgsqlbackend.cc:150,1
    - Dst: declare
      Src: /src/pdns/modules/gpgsqlbackend/gpgsqlbackend.cc:151,1
    - Dst: declare
      Src: /src/pdns/modules/gpgsqlbackend/gpgsqlbackend.cc:152,1
    - Dst: declare
      Src: /src/pdns/modules/gpgsqlbackend/gpgsqlbackend.cc:153,1
    - Dst: declare
      Src: /src/pdns/modules/gpgsqlbackend/gpgsqlbackend.cc:154,1
    - Dst: declare
      Src: /src/pdns/modules/gpgsqlbackend/gpgsqlbackend.cc:155,1
    - Dst: declare
      Src: /src/pdns/modules/gpgsqlbackend/gpgsqlbackend.cc:156,1
    - Dst: declare
      Src: /src/pdns/modules/gpgsqlbackend/gpgsqlbackend.cc:157,1
    - Dst: declare
      Src: /src/pdns/modules/gpgsqlbackend/gpgsqlbackend.cc:158,1
    - Dst: declare
      Src: /src/pdns/modules/gpgsqlbackend/gpgsqlbackend.cc:160,1
    - Dst: declare
      Src: /src/pdns/modules/gpgsqlbackend/gpgsqlbackend.cc:161,1
    - Dst: declare
      Src: /src/pdns/modules/gpgsqlbackend/gpgsqlbackend.cc:162,1
    - Dst: declare
      Src: /src/pdns/modules/gpgsqlbackend/gpgsqlbackend.cc:163,1
    - Dst: declare
      Src: /src/pdns/modules/gpgsqlbackend/gpgsqlbackend.cc:164,1
    - Dst: declare
      Src: /src/pdns/modules/gpgsqlbackend/gpgsqlbackend.cc:165,1
    - Dst: declare
      Src: /src/pdns/modules/gpgsqlbackend/gpgsqlbackend.cc:166,1
    - Dst: declare
      Src: /src/pdns/modules/gpgsqlbackend/gpgsqlbackend.cc:167,1
    - Dst: declare
      Src: /src/pdns/modules/gpgsqlbackend/gpgsqlbackend.cc:168,1
    - Dst: declare
      Src: /src/pdns/modules/gpgsqlbackend/gpgsqlbackend.cc:169,1
    - Dst: declare
      Src: /src/pdns/modules/gpgsqlbackend/gpgsqlbackend.cc:170,1
    - Dst: declare
      Src: /src/pdns/modules/gpgsqlbackend/gpgsqlbackend.cc:171,1
    - Dst: declare
      Src: /src/pdns/modules/gpgsqlbackend/gpgsqlbackend.cc:172,1
    - Dst: declare
      Src: /src/pdns/modules/gpgsqlbackend/gpgsqlbackend.cc:173,1
    - Dst: declare
      Src: /src/pdns/modules/gpgsqlbackend/gpgsqlbackend.cc:174,1
    - Dst: declare
      Src: /src/pdns/modules/gpgsqlbackend/gpgsqlbackend.cc:175,1
    - Dst: declare
      Src: /src/pdns/modules/gpgsqlbackend/gpgsqlbackend.cc:176,1
    - Dst: declare
      Src: /src/pdns/modules/gpgsqlbackend/gpgsqlbackend.cc:177,1
    - Dst: declare
      Src: /src/pdns/modules/gpgsqlbackend/gpgsqlbackend.cc:179,1
    - Dst: declare
      Src: /src/pdns/modules/gpgsqlbackend/gpgsqlbackend.cc:181,1
    - Dst: declare
      Src: /src/pdns/modules/gpgsqlbackend/gpgsqlbackend.cc:182,1
    - Dst: declare
      Src: /src/pdns/modules/gpgsqlbackend/gpgsqlbackend.cc:183,1
    - Dst: declare
      Src: /src/pdns/modules/gpgsqlbackend/gpgsqlbackend.cc:184,1
    - Dst: declare
      Src: /src/pdns/modules/gpgsqlbackend/gpgsqlbackend.cc:185,1
    - Dst: declare
      Src: /src/pdns/modules/gpgsqlbackend/gpgsqlbackend.cc:186,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 76
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 187
      start: 93
    functionDepth: 0
    functionLinenumber: 93
    functionLinenumberEnd: 187
    functionName: gPgSQLFactory::declareArguments
    functionSourceFile: /src/pdns/modules/gpgsqlbackend/gpgsqlbackend.cc
    functionUses: 0
    functionsReached:
    - declare
    linkageType: ''
    returnType: void
    signature: void declareArguments(const string& suffix = "") override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: gPgSQLBackend::gPgSQLBackend
      Src: /src/pdns/modules/gpgsqlbackend/gpgsqlbackend.cc: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: gPgSQLFactory::make
    functionSourceFile: /src/pdns/modules/gpgsqlbackend/gpgsqlbackend.cc
    functionUses: 0
    functionsReached:
    - gPgSQLBackend::gPgSQLBackend
    linkageType: ''
    returnType: DNSBackend
    signature: DNSBackend * make(const string& suffix = "") override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BackendMakers
      Src: /src/pdns/modules/gpgsqlbackend/gpgsqlbackend.cc:205,1
    - Dst: std::make_unique<gPgSQLFactory>
      Src: /src/pdns/modules/gpgsqlbackend/gpgsqlbackend.cc:205,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 214
      start: 203
    functionDepth: 1
    functionLinenumber: 203
    functionLinenumberEnd: 214
    functionName: gPgSQLLoader::gPgSQLLoader
    functionSourceFile: /src/pdns/modules/gpgsqlbackend/gpgsqlbackend.cc
    functionUses: 0
    functionsReached:
    - BackendMakers
    - std::make_unique<gPgSQLFactory>
    linkageType: ''
    returnType: void
    signature: void gPgSQLLoader()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 6
    argNames:
    - log
    - ' query'
    - dolog
    - nparams
    - db
    - nstatement
    argTypes:
    - Logr::log_t
    - string
    - bool
    - int
    - SPgSQL*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 38
    functionDepth: 0
    functionLinenumber: 38
    functionLinenumberEnd: 46
    functionName: SPgSQLStatement::SPgSQLStatement
    functionSourceFile: /src/pdns/modules/gpgsqlbackend/spgsql.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void SPgSQLStatement(Logr::log_t log, const string& query, bool dolog,
      int nparams, SPgSQL* db, unsigned int nstatement)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SPgSQLStatement::bind
      Src: /src/pdns/modules/gpgsqlbackend/spgsql.cc:48,1
    - Dst: string
      Src: /src/pdns/modules/gpgsqlbackend/spgsql.cc:48,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' name'
    - value
    argTypes:
    - string
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 48
    functionDepth: 1
    functionLinenumber: 48
    functionLinenumberEnd: 48
    functionName: SPgSQLStatement::bind
    functionSourceFile: /src/pdns/modules/gpgsqlbackend/spgsql.cc
    functionUses: 1
    functionsReached:
    - SPgSQLStatement::bind
    - string
    linkageType: ''
    returnType: SSqlStatement
    signature: SSqlStatement * bind(const string& name, bool value) override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SPgSQLStatement::bind
      Src: /src/pdns/modules/gpgsqlbackend/spgsql.cc:49,1
    - Dst: std::to_string
      Src: /src/pdns/modules/gpgsqlbackend/spgsql.cc:49,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' name'
    - value
    argTypes:
    - string
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 49
    functionDepth: 1
    functionLinenumber: 49
    functionLinenumberEnd: 49
    functionName: SPgSQLStatement::bind
    functionSourceFile: /src/pdns/modules/gpgsqlbackend/spgsql.cc
    functionUses: 2
    functionsReached:
    - SPgSQLStatement::bind
    - std::to_string
    linkageType: ''
    returnType: SSqlStatement
    signature: SSqlStatement * bind(const string& name, int value) override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SPgSQLStatement::bind
      Src: /src/pdns/modules/gpgsqlbackend/spgsql.cc:50,1
    - Dst: std::to_string
      Src: /src/pdns/modules/gpgsqlbackend/spgsql.cc:50,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' name'
    - value
    argTypes:
    - string
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 50
    functionDepth: 1
    functionLinenumber: 50
    functionLinenumberEnd: 50
    functionName: SPgSQLStatement::bind
    functionSourceFile: /src/pdns/modules/gpgsqlbackend/spgsql.cc
    functionUses: 3
    functionsReached:
    - SPgSQLStatement::bind
    - std::to_string
    linkageType: ''
    returnType: SSqlStatement
    signature: SSqlStatement * bind(const string& name, uint32_t value) override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SPgSQLStatement::bind
      Src: /src/pdns/modules/gpgsqlbackend/spgsql.cc:51,1
    - Dst: std::to_string
      Src: /src/pdns/modules/gpgsqlbackend/spgsql.cc:51,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' name'
    - value
    argTypes:
    - string
    - long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 51
    functionDepth: 1
    functionLinenumber: 51
    functionLinenumberEnd: 51
    functionName: SPgSQLStatement::bind
    functionSourceFile: /src/pdns/modules/gpgsqlbackend/spgsql.cc
    functionUses: 4
    functionsReached:
    - SPgSQLStatement::bind
    - std::to_string
    linkageType: ''
    returnType: SSqlStatement
    signature: SSqlStatement * bind(const string& name, long value) override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SPgSQLStatement::bind
      Src: /src/pdns/modules/gpgsqlbackend/spgsql.cc:52,1
    - Dst: std::to_string
      Src: /src/pdns/modules/gpgsqlbackend/spgsql.cc:52,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' name'
    - value
    argTypes:
    - string
    - unsigned long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 52
    functionDepth: 1
    functionLinenumber: 52
    functionLinenumberEnd: 52
    functionName: SPgSQLStatement::bind
    functionSourceFile: /src/pdns/modules/gpgsqlbackend/spgsql.cc
    functionUses: 5
    functionsReached:
    - SPgSQLStatement::bind
    - std::to_string
    linkageType: ''
    returnType: SSqlStatement
    signature: SSqlStatement * bind(const string& name, unsigned long value) override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SPgSQLStatement::bind
      Src: /src/pdns/modules/gpgsqlbackend/spgsql.cc:53,1
    - Dst: std::to_string
      Src: /src/pdns/modules/gpgsqlbackend/spgsql.cc:53,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' name'
    - value
    argTypes:
    - string
    - long long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 53
    functionDepth: 1
    functionLinenumber: 53
    functionLinenumberEnd: 53
    functionName: SPgSQLStatement::bind
    functionSourceFile: /src/pdns/modules/gpgsqlbackend/spgsql.cc
    functionUses: 6
    functionsReached:
    - SPgSQLStatement::bind
    - std::to_string
    linkageType: ''
    returnType: SSqlStatement
    signature: SSqlStatement * bind(const string& name, long long value) override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SPgSQLStatement::bind
      Src: /src/pdns/modules/gpgsqlbackend/spgsql.cc:54,1
    - Dst: std::to_string
      Src: /src/pdns/modules/gpgsqlbackend/spgsql.cc:54,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' name'
    - value
    argTypes:
    - string
    - unsigned long long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 54
    functionDepth: 1
    functionLinenumber: 54
    functionLinenumberEnd: 54
    functionName: SPgSQLStatement::bind
    functionSourceFile: /src/pdns/modules/gpgsqlbackend/spgsql.cc
    functionUses: 7
    functionsReached:
    - SPgSQLStatement::bind
    - std::to_string
    linkageType: ''
    returnType: SSqlStatement
    signature: SSqlStatement * bind(const string& name, unsigned long long value)
      override
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SPgSQLStatement::prepareStatement
      Src: /src/pdns/modules/gpgsqlbackend/spgsql.cc:57,1
    - Dst: SPgSQLStatement::allocate
      Src: /src/pdns/modules/gpgsqlbackend/spgsql.cc:58,1
    - Dst: SPgSQLStatement::releaseStatement
      Src: /src/pdns/modules/gpgsqlbackend/spgsql.cc:60,1
    - Dst: SSqlException
      Src: /src/pdns/modules/gpgsqlbackend/spgsql.cc:61,1
    - Dst: size
      Src: /src/pdns/modules/gpgsqlbackend/spgsql.cc:63,1
    - Dst: char::char
      Src: /src/pdns/modules/gpgsqlbackend/spgsql.cc:63,1
    - Dst: memset
      Src: /src/pdns/modules/gpgsqlbackend/spgsql.cc:64,1
    - Dst: size
      Src: /src/pdns/modules/gpgsqlbackend/spgsql.cc:64,1
    - Dst: copy
      Src: /src/pdns/modules/gpgsqlbackend/spgsql.cc:65,1
    - Dst: size
      Src: /src/pdns/modules/gpgsqlbackend/spgsql.cc:65,1
    - Dst: size
      Src: /src/pdns/modules/gpgsqlbackend/spgsql.cc:66,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 1
    argNames:
    - ' value'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 55
    functionDepth: 1
    functionLinenumber: 55
    functionLinenumberEnd: 69
    functionName: SPgSQLStatement::bind
    functionSourceFile: /src/pdns/modules/gpgsqlbackend/spgsql.cc
    functionUses: 7
    functionsReached:
    - SPgSQLStatement::allocate
    - SPgSQLStatement::releaseStatement
    - char::char
    - copy
    - size
    - memset
    - SSqlException
    - SPgSQLStatement::prepareStatement
    linkageType: ''
    returnType: SSqlStatement
    signature: SSqlStatement * bind(const string& /* name */, const std::string& value)
      override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SPgSQLStatement::prepareStatement
      Src: /src/pdns/modules/gpgsqlbackend/spgsql.cc:72,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 70
    functionDepth: 1
    functionLinenumber: 70
    functionLinenumberEnd: 75
    functionName: SPgSQLStatement::bindNull
    functionSourceFile: /src/pdns/modules/gpgsqlbackend/spgsql.cc
    functionUses: 0
    functionsReached:
    - SPgSQLStatement::prepareStatement
    linkageType: ''
    returnType: SSqlStatement
    signature: SSqlStatement * bindNull(const string& /* name */) override
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: SPgSQLStatement::prepareStatement
      Src: /src/pdns/modules/gpgsqlbackend/spgsql.cc:78,1
    - Dst: std::vector::reserve
      Src: /src/pdns/modules/gpgsqlbackend/spgsql.cc:85,1
    - Dst: info
      Src: /src/pdns/modules/gpgsqlbackend/spgsql.cc:89,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/gpgsqlbackend/spgsql.cc:89,1
    - Dst: Logging::IterLoggable
      Src: /src/pdns/modules/gpgsqlbackend/spgsql.cc:89,1
    - Dst: std::vector::cbegin
      Src: /src/pdns/modules/gpgsqlbackend/spgsql.cc:89,1
    - Dst: std::vector::cend
      Src: /src/pdns/modules/gpgsqlbackend/spgsql.cc:89,1
    - Dst: info
      Src: /src/pdns/modules/gpgsqlbackend/spgsql.cc:92,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/gpgsqlbackend/spgsql.cc:92,1
    - Dst: std::stringstream::str
      Src: /src/pdns/modules/gpgsqlbackend/spgsql.cc:113,1
    - Dst: set
      Src: /src/pdns/modules/gpgsqlbackend/spgsql.cc:116,1
    - Dst: empty
      Src: /src/pdns/modules/gpgsqlbackend/spgsql.cc:118,1
    - Dst: PQexecPrepared
      Src: /src/pdns/modules/gpgsqlbackend/spgsql.cc:119,1
    - Dst: SPgSQLStatement::d_db
      Src: /src/pdns/modules/gpgsqlbackend/spgsql.cc:119,1
    - Dst: c_str
      Src: /src/pdns/modules/gpgsqlbackend/spgsql.cc:119,1
    - Dst: PQexecParams
      Src: /src/pdns/modules/gpgsqlbackend/spgsql.cc:122,1
    - Dst: SPgSQLStatement::d_db
      Src: /src/pdns/modules/gpgsqlbackend/spgsql.cc:122,1
    - Dst: c_str
      Src: /src/pdns/modules/gpgsqlbackend/spgsql.cc:122,1
    - Dst: PQresultStatus
      Src: /src/pdns/modules/gpgsqlbackend/spgsql.cc:124,1
    - Dst: SPgSQLStatement::releaseStatement
      Src: /src/pdns/modules/gpgsqlbackend/spgsql.cc:127,1
    - Dst: SSqlException
      Src: /src/pdns/modules/gpgsqlbackend/spgsql.cc:128,1
    - Dst: string
      Src: /src/pdns/modules/gpgsqlbackend/spgsql.cc:128,1
    - Dst: udiffNoReset
      Src: /src/pdns/modules/gpgsqlbackend/spgsql.cc:132,1
    - Dst: SLOG
      Src: /src/pdns/modules/gpgsqlbackend/spgsql.cc:133,1
    - Dst: info
      Src: /src/pdns/modules/gpgsqlbackend/spgsql.cc:134,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/gpgsqlbackend/spgsql.cc:134,1
    - Dst: SPgSQLStatement::nextResult
      Src: /src/pdns/modules/gpgsqlbackend/spgsql.cc:137,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 48
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 139
      start: 76
    functionDepth: 1
    functionLinenumber: 76
    functionLinenumberEnd: 139
    functionName: SPgSQLStatement::execute
    functionSourceFile: /src/pdns/modules/gpgsqlbackend/spgsql.cc
    functionUses: 0
    functionsReached:
    - set
    - std::stringstream::str
    - SSqlException
    - udiffNoReset
    - SPgSQLStatement::prepareStatement
    - SPgSQLStatement::releaseStatement
    - SLOG
    - Logging::Loggable
    - PQexecParams
    - string
    - Logging::IterLoggable
    - c_str
    - PQresultStatus
    - empty
    - std::vector::cend
    - std::vector::reserve
    - SPgSQLStatement::nextResult
    - PQexecPrepared
    - SPgSQLStatement::d_db
    - info
    - std::vector::cbegin
    linkageType: ''
    returnType: SSqlStatement
    signature: SSqlStatement * execute() override
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: PQntuples
      Src: /src/pdns/modules/gpgsqlbackend/spgsql.cc:145,1
    - Dst: PQclear
      Src: /src/pdns/modules/gpgsqlbackend/spgsql.cc:146,1
    - Dst: PQftype
      Src: /src/pdns/modules/gpgsqlbackend/spgsql.cc:150,1
    - Dst: SLOG
      Src: /src/pdns/modules/gpgsqlbackend/spgsql.cc:151,1
    - Dst: info
      Src: /src/pdns/modules/gpgsqlbackend/spgsql.cc:152,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/gpgsqlbackend/spgsql.cc:152,1
    - Dst: PQclear
      Src: /src/pdns/modules/gpgsqlbackend/spgsql.cc:153,1
    - Dst: PQntuples
      Src: /src/pdns/modules/gpgsqlbackend/spgsql.cc:159,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 161
      start: 141
    functionDepth: 0
    functionLinenumber: 141
    functionLinenumberEnd: 161
    functionName: SPgSQLStatement::nextResult
    functionSourceFile: /src/pdns/modules/gpgsqlbackend/spgsql.cc
    functionUses: 1
    functionsReached:
    - SLOG
    - PQntuples
    - PQclear
    - Logging::Loggable
    - PQftype
    - info
    linkageType: ''
    returnType: void
    signature: void nextResult()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SLOG
      Src: /src/pdns/modules/gpgsqlbackend/spgsql.cc:166,1
    - Dst: udiff
      Src: /src/pdns/modules/gpgsqlbackend/spgsql.cc:166,1
    - Dst: info
      Src: /src/pdns/modules/gpgsqlbackend/spgsql.cc:167,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/gpgsqlbackend/spgsql.cc:167,1
    - Dst: udiff
      Src: /src/pdns/modules/gpgsqlbackend/spgsql.cc:167,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 171
      start: 163
    functionDepth: 2
    functionLinenumber: 163
    functionLinenumberEnd: 171
    functionName: SPgSQLStatement::hasNextRow
    functionSourceFile: /src/pdns/modules/gpgsqlbackend/spgsql.cc
    functionUses: 0
    functionsReached:
    - udiff
    - SLOG
    - info
    - Logging::Loggable
    linkageType: ''
    returnType: bool
    signature: bool hasNextRow() override
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: clear
      Src: /src/pdns/modules/gpgsqlbackend/spgsql.cc:176,1
    - Dst: reserve
      Src: /src/pdns/modules/gpgsqlbackend/spgsql.cc:179,1
    - Dst: PQnfields
      Src: /src/pdns/modules/gpgsqlbackend/spgsql.cc:179,1
    - Dst: PQnfields
      Src: /src/pdns/modules/gpgsqlbackend/spgsql.cc:180,1
    - Dst: PQgetisnull
      Src: /src/pdns/modules/gpgsqlbackend/spgsql.cc:181,1
    - Dst: emplace_back
      Src: /src/pdns/modules/gpgsqlbackend/spgsql.cc:182,1
    - Dst: PQftype
      Src: /src/pdns/modules/gpgsqlbackend/spgsql.cc:184,1
    - Dst: PQgetvalue
      Src: /src/pdns/modules/gpgsqlbackend/spgsql.cc:185,1
    - Dst: emplace_back
      Src: /src/pdns/modules/gpgsqlbackend/spgsql.cc:186,1
    - Dst: emplace_back
      Src: /src/pdns/modules/gpgsqlbackend/spgsql.cc:189,1
    - Dst: PQgetvalue
      Src: /src/pdns/modules/gpgsqlbackend/spgsql.cc:189,1
    - Dst: PQclear
      Src: /src/pdns/modules/gpgsqlbackend/spgsql.cc:194,1
    - Dst: SPgSQLStatement::nextResult
      Src: /src/pdns/modules/gpgsqlbackend/spgsql.cc:196,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 22
    argCount: 1
    argNames:
    - ' row'
    argTypes:
    - row_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 199
      start: 173
    functionDepth: 1
    functionLinenumber: 173
    functionLinenumberEnd: 199
    functionName: SPgSQLStatement::nextRow
    functionSourceFile: /src/pdns/modules/gpgsqlbackend/spgsql.cc
    functionUses: 0
    functionsReached:
    - PQclear
    - PQgetvalue
    - PQftype
    - reserve
    - SPgSQLStatement::nextResult
    - emplace_back
    - PQgetisnull
    - clear
    - PQnfields
    linkageType: ''
    returnType: SSqlStatement
    signature: SSqlStatement * nextRow(row_t& row) override
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: clear
      Src: /src/pdns/modules/gpgsqlbackend/spgsql.cc:203,1
    - Dst: reserve
      Src: /src/pdns/modules/gpgsqlbackend/spgsql.cc:206,1
    - Dst: SPgSQLStatement::hasNextRow
      Src: /src/pdns/modules/gpgsqlbackend/spgsql.cc:208,1
    - Dst: SPgSQLStatement::nextRow
      Src: /src/pdns/modules/gpgsqlbackend/spgsql.cc:209,1
    - Dst: push_back
      Src: /src/pdns/modules/gpgsqlbackend/spgsql.cc:210,1
    - Dst: std::move
      Src: /src/pdns/modules/gpgsqlbackend/spgsql.cc:210,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - ' result'
    argTypes:
    - result_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 213
      start: 201
    functionDepth: 3
    functionLinenumber: 201
    functionLinenumberEnd: 213
    functionName: SPgSQLStatement::getResult
    functionSourceFile: /src/pdns/modules/gpgsqlbackend/spgsql.cc
    functionUses: 0
    functionsReached:
    - std::move
    - SPgSQLStatement::hasNextRow
    - push_back
    - reserve
    - SPgSQLStatement::nextRow
    - clear
    linkageType: ''
    returnType: SSqlStatement
    signature: SSqlStatement * getResult(result_t& result) override
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: PQclear
      Src: /src/pdns/modules/gpgsqlbackend/spgsql.cc:219,1
    - Dst: PQclear
      Src: /src/pdns/modules/gpgsqlbackend/spgsql.cc:222,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 22
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 239
      start: 215
    functionDepth: 0
    functionLinenumber: 215
    functionLinenumberEnd: 239
    functionName: SPgSQLStatement::reset
    functionSourceFile: /src/pdns/modules/gpgsqlbackend/spgsql.cc
    functionUses: 0
    functionsReached:
    - PQclear
    linkageType: ''
    returnType: SSqlStatement
    signature: SSqlStatement * reset() override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 241
      start: 241
    functionDepth: 0
    functionLinenumber: 241
    functionLinenumberEnd: 241
    functionName: '& getQuery() override'
    functionSourceFile: /src/pdns/modules/gpgsqlbackend/spgsql.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string & getQuery() override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: releaseStatement
      Src: /src/pdns/modules/gpgsqlbackend/spgsql.cc:245,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 246
      start: 243
    functionDepth: 0
    functionLinenumber: 243
    functionLinenumberEnd: 246
    functionName: ~SPgSQLStatement() override
    functionSourceFile: /src/pdns/modules/gpgsqlbackend/spgsql.cc
    functionUses: 0
    functionsReached:
    - releaseStatement
    linkageType: ''
    returnType: void
    signature: void ~SPgSQLStatement() override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: db
      Src: /src/pdns/modules/gpgsqlbackend/spgsql.cc:251,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 252
      start: 249
    functionDepth: 0
    functionLinenumber: 249
    functionLinenumberEnd: 252
    functionName: SPgSQLStatement::d_db
    functionSourceFile: /src/pdns/modules/gpgsqlbackend/spgsql.cc
    functionUses: 1
    functionsReached:
    - db
    linkageType: ''
    returnType: PGconn
    signature: PGconn * d_db()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SPgSQLStatement::reset
      Src: /src/pdns/modules/gpgsqlbackend/spgsql.cc:257,1
    - Dst: empty
      Src: /src/pdns/modules/gpgsqlbackend/spgsql.cc:258,1
    - Dst: string
      Src: /src/pdns/modules/gpgsqlbackend/spgsql.cc:259,1
    - Dst: PQexec
      Src: /src/pdns/modules/gpgsqlbackend/spgsql.cc:260,1
    - Dst: SPgSQLStatement::d_db
      Src: /src/pdns/modules/gpgsqlbackend/spgsql.cc:260,1
    - Dst: string::c_str
      Src: /src/pdns/modules/gpgsqlbackend/spgsql.cc:260,1
    - Dst: PQclear
      Src: /src/pdns/modules/gpgsqlbackend/spgsql.cc:261,1
    - Dst: clear
      Src: /src/pdns/modules/gpgsqlbackend/spgsql.cc:262,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 264
      start: 254
    functionDepth: 1
    functionLinenumber: 254
    functionLinenumberEnd: 264
    functionName: SPgSQLStatement::releaseStatement
    functionSourceFile: /src/pdns/modules/gpgsqlbackend/spgsql.cc
    functionUses: 2
    functionsReached:
    - string::c_str
    - PQclear
    - SPgSQLStatement::d_db
    - string
    - clear
    - empty
    - SPgSQLStatement::reset
    - PQexec
    linkageType: ''
    returnType: void
    signature: void releaseStatement()
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: usePrepared
      Src: /src/pdns/modules/gpgsqlbackend/spgsql.cc:270,1
    - Dst: string
      Src: /src/pdns/modules/gpgsqlbackend/spgsql.cc:272,1
    - Dst: std::to_string
      Src: /src/pdns/modules/gpgsqlbackend/spgsql.cc:272,1
    - Dst: PQprepare
      Src: /src/pdns/modules/gpgsqlbackend/spgsql.cc:273,1
    - Dst: SPgSQLStatement::d_db
      Src: /src/pdns/modules/gpgsqlbackend/spgsql.cc:273,1
    - Dst: c_str
      Src: /src/pdns/modules/gpgsqlbackend/spgsql.cc:273,1
    - Dst: c_str
      Src: /src/pdns/modules/gpgsqlbackend/spgsql.cc:273,1
    - Dst: PQresultStatus
      Src: /src/pdns/modules/gpgsqlbackend/spgsql.cc:274,1
    - Dst: PQclear
      Src: /src/pdns/modules/gpgsqlbackend/spgsql.cc:276,1
    - Dst: SPgSQLStatement::releaseStatement
      Src: /src/pdns/modules/gpgsqlbackend/spgsql.cc:278,1
    - Dst: SSqlException
      Src: /src/pdns/modules/gpgsqlbackend/spgsql.cc:279,1
    - Dst: string
      Src: /src/pdns/modules/gpgsqlbackend/spgsql.cc:279,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 288
      start: 266
    functionDepth: 2
    functionLinenumber: 266
    functionLinenumberEnd: 288
    functionName: SPgSQLStatement::prepareStatement
    functionSourceFile: /src/pdns/modules/gpgsqlbackend/spgsql.cc
    functionUses: 3
    functionsReached:
    - SPgSQLStatement::releaseStatement
    - std::to_string
    - usePrepared
    - PQresultStatus
    - PQclear
    - SPgSQLStatement::d_db
    - string
    - c_str
    - SSqlException
    - PQprepare
    linkageType: ''
    returnType: void
    signature: void prepareStatement()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: char::char
      Src: /src/pdns/modules/gpgsqlbackend/spgsql.cc:294,1
    - Dst: int::int
      Src: /src/pdns/modules/gpgsqlbackend/spgsql.cc:295,1
    - Dst: memset
      Src: /src/pdns/modules/gpgsqlbackend/spgsql.cc:296,1
    - Dst: memset
      Src: /src/pdns/modules/gpgsqlbackend/spgsql.cc:297,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 298
      start: 290
    functionDepth: 0
    functionLinenumber: 290
    functionLinenumberEnd: 298
    functionName: SPgSQLStatement::allocate
    functionSourceFile: /src/pdns/modules/gpgsqlbackend/spgsql.cc
    functionUses: 1
    functionsReached:
    - char::char
    - int::int
    - memset
    linkageType: ''
    returnType: void
    signature: void allocate()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: boost::replace_all
      Src: /src/pdns/modules/gpgsqlbackend/spgsql.cc:324,1
    - Dst: boost::replace_all
      Src: /src/pdns/modules/gpgsqlbackend/spgsql.cc:325,1
    - Dst: string
      Src: /src/pdns/modules/gpgsqlbackend/spgsql.cc:327,1
    - Dst: string
      Src: /src/pdns/modules/gpgsqlbackend/spgsql.cc:327,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - ' v'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 328
      start: 321
    functionDepth: 0
    functionLinenumber: 321
    functionLinenumberEnd: 328
    functionName: escapeForPQparam
    functionSourceFile: /src/pdns/modules/gpgsqlbackend/spgsql.cc
    functionUses: 0
    functionsReached:
    - string
    - boost::replace_all
    linkageType: ''
    returnType: string
    signature: string escapeForPQparam(const string& v)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/modules/gpgsqlbackend/spgsql.cc:339,1
    - Dst: escapeForPQparam
      Src: /src/pdns/modules/gpgsqlbackend/spgsql.cc:340,1
    - Dst: empty
      Src: /src/pdns/modules/gpgsqlbackend/spgsql.cc:342,1
    - Dst: escapeForPQparam
      Src: /src/pdns/modules/gpgsqlbackend/spgsql.cc:343,1
    - Dst: empty
      Src: /src/pdns/modules/gpgsqlbackend/spgsql.cc:345,1
    - Dst: escapeForPQparam
      Src: /src/pdns/modules/gpgsqlbackend/spgsql.cc:346,1
    - Dst: empty
      Src: /src/pdns/modules/gpgsqlbackend/spgsql.cc:348,1
    - Dst: escapeForPQparam
      Src: /src/pdns/modules/gpgsqlbackend/spgsql.cc:349,1
    - Dst: empty
      Src: /src/pdns/modules/gpgsqlbackend/spgsql.cc:351,1
    - Dst: empty
      Src: /src/pdns/modules/gpgsqlbackend/spgsql.cc:356,1
    - Dst: escapeForPQparam
      Src: /src/pdns/modules/gpgsqlbackend/spgsql.cc:358,1
    - Dst: PQconnectdb
      Src: /src/pdns/modules/gpgsqlbackend/spgsql.cc:363,1
    - Dst: c_str
      Src: /src/pdns/modules/gpgsqlbackend/spgsql.cc:363,1
    - Dst: PQstatus
      Src: /src/pdns/modules/gpgsqlbackend/spgsql.cc:365,1
    - Dst: SPgSQL::sPerrorException
      Src: /src/pdns/modules/gpgsqlbackend/spgsql.cc:367,1
    - Dst: PQfinish
      Src: /src/pdns/modules/gpgsqlbackend/spgsql.cc:371,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 33
    argCount: 8
    argNames:
    - log
    - ' database'
    - ' host'
    - ' port'
    - ' user'
    - ' password'
    - ' extra_connection_parameters'
    - use_prepared
    argTypes:
    - Logr::log_t
    - string
    - string
    - string
    - string
    - string
    - string
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 376
      start: 330
    functionDepth: 1
    functionLinenumber: 330
    functionLinenumberEnd: 376
    functionName: SPgSQL::SPgSQL
    functionSourceFile: /src/pdns/modules/gpgsqlbackend/spgsql.cc
    functionUses: 1
    functionsReached:
    - SPgSQL::sPerrorException
    - escapeForPQparam
    - c_str
    - PQfinish
    - PQstatus
    - empty
    - PQconnectdb
    linkageType: ''
    returnType: void
    signature: "void SPgSQL::SPgSQL(Logr::log_t log, const string& database, const
      string& host, const string& port, const string& user,\n               const
      string& password, const string& extra_connection_parameters, const bool use_prepared)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - state
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 381
      start: 378
    functionDepth: 0
    functionLinenumber: 378
    functionLinenumberEnd: 381
    functionName: SPgSQL::setLog
    functionSourceFile: /src/pdns/modules/gpgsqlbackend/spgsql.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void SPgSQL::setLog(bool state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PQfinish
      Src: /src/pdns/modules/gpgsqlbackend/spgsql.cc:385,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 386
      start: 383
    functionDepth: 0
    functionLinenumber: 383
    functionLinenumberEnd: 386
    functionName: SPgSQL::~SPgSQL()
    functionSourceFile: /src/pdns/modules/gpgsqlbackend/spgsql.cc
    functionUses: 0
    functionsReached:
    - PQfinish
    linkageType: ''
    returnType: void
    signature: void SPgSQL::~SPgSQL()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SSqlException
      Src: /src/pdns/modules/gpgsqlbackend/spgsql.cc:390,1
    - Dst: string
      Src: /src/pdns/modules/gpgsqlbackend/spgsql.cc:390,1
    - Dst: PQerrorMessage
      Src: /src/pdns/modules/gpgsqlbackend/spgsql.cc:390,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' reason'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 391
      start: 388
    functionDepth: 0
    functionLinenumber: 388
    functionLinenumberEnd: 391
    functionName: SPgSQL::sPerrorException
    functionSourceFile: /src/pdns/modules/gpgsqlbackend/spgsql.cc
    functionUses: 1
    functionsReached:
    - SSqlException
    - PQerrorMessage
    - string
    linkageType: ''
    returnType: SSqlException
    signature: SSqlException SPgSQL::sPerrorException(const string& reason)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PQexec
      Src: /src/pdns/modules/gpgsqlbackend/spgsql.cc:395,1
    - Dst: c_str
      Src: /src/pdns/modules/gpgsqlbackend/spgsql.cc:395,1
    - Dst: PQresultStatus
      Src: /src/pdns/modules/gpgsqlbackend/spgsql.cc:396,1
    - Dst: PQclear
      Src: /src/pdns/modules/gpgsqlbackend/spgsql.cc:398,1
    - Dst: SPgSQL::sPerrorException
      Src: /src/pdns/modules/gpgsqlbackend/spgsql.cc:400,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 5
    argCount: 1
    argNames:
    - ' query'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 402
      start: 393
    functionDepth: 1
    functionLinenumber: 393
    functionLinenumberEnd: 402
    functionName: SPgSQL::execute
    functionSourceFile: /src/pdns/modules/gpgsqlbackend/spgsql.cc
    functionUses: 0
    functionsReached:
    - SPgSQL::sPerrorException
    - PQclear
    - PQresultStatus
    - c_str
    - PQexec
    linkageType: ''
    returnType: void
    signature: void SPgSQL::execute(const string& query)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::make_unique<SPgSQLStatement>
      Src: /src/pdns/modules/gpgsqlbackend/spgsql.cc:407,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ' query'
    - nparams
    argTypes:
    - string
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 408
      start: 404
    functionDepth: 0
    functionLinenumber: 404
    functionLinenumberEnd: 408
    functionName: SPgSQL::prepare
    functionSourceFile: /src/pdns/modules/gpgsqlbackend/spgsql.cc
    functionUses: 0
    functionsReached:
    - std::make_unique<SPgSQLStatement>
    linkageType: ''
    returnType: std::unique_ptr<SSqlStatement>
    signature: std::unique_ptr<SSqlStatement> SPgSQL::prepare(const string& query,
      int nparams)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SPgSQL::execute
      Src: /src/pdns/modules/gpgsqlbackend/spgsql.cc:412,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 414
      start: 410
    functionDepth: 2
    functionLinenumber: 410
    functionLinenumberEnd: 414
    functionName: SPgSQL::startTransaction
    functionSourceFile: /src/pdns/modules/gpgsqlbackend/spgsql.cc
    functionUses: 0
    functionsReached:
    - SPgSQL::execute
    linkageType: ''
    returnType: void
    signature: void SPgSQL::startTransaction()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SPgSQL::execute
      Src: /src/pdns/modules/gpgsqlbackend/spgsql.cc:418,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 420
      start: 416
    functionDepth: 2
    functionLinenumber: 416
    functionLinenumberEnd: 420
    functionName: SPgSQL::commit
    functionSourceFile: /src/pdns/modules/gpgsqlbackend/spgsql.cc
    functionUses: 0
    functionsReached:
    - SPgSQL::execute
    linkageType: ''
    returnType: void
    signature: void SPgSQL::commit()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SPgSQL::execute
      Src: /src/pdns/modules/gpgsqlbackend/spgsql.cc:424,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 426
      start: 422
    functionDepth: 2
    functionLinenumber: 422
    functionLinenumberEnd: 426
    functionName: SPgSQL::rollback
    functionSourceFile: /src/pdns/modules/gpgsqlbackend/spgsql.cc
    functionUses: 0
    functionsReached:
    - SPgSQL::execute
    linkageType: ''
    returnType: void
    signature: void SPgSQL::rollback()
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: PQstatus
      Src: /src/pdns/modules/gpgsqlbackend/spgsql.cc:430,1
    - Dst: PQsocket
      Src: /src/pdns/modules/gpgsqlbackend/spgsql.cc:435,1
    - Dst: isNonBlocking
      Src: /src/pdns/modules/gpgsqlbackend/spgsql.cc:436,1
    - Dst: setNonBlocking
      Src: /src/pdns/modules/gpgsqlbackend/spgsql.cc:439,1
    - Dst: isTCPSocketUsable
      Src: /src/pdns/modules/gpgsqlbackend/spgsql.cc:444,1
    - Dst: setBlocking
      Src: /src/pdns/modules/gpgsqlbackend/spgsql.cc:447,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 453
      start: 428
    functionDepth: 0
    functionLinenumber: 428
    functionLinenumberEnd: 453
    functionName: SPgSQL::isConnectionUsable
    functionSourceFile: /src/pdns/modules/gpgsqlbackend/spgsql.cc
    functionUses: 0
    functionsReached:
    - setNonBlocking
    - PQsocket
    - isTCPSocketUsable
    - PQstatus
    - setBlocking
    - isNonBlocking
    linkageType: ''
    returnType: bool
    signature: bool SPgSQL::isConnectionUsable()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PQreset
      Src: /src/pdns/modules/gpgsqlbackend/spgsql.cc:457,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 458
      start: 455
    functionDepth: 0
    functionLinenumber: 455
    functionLinenumberEnd: 458
    functionName: SPgSQL::reconnect
    functionSourceFile: /src/pdns/modules/gpgsqlbackend/spgsql.cc
    functionUses: 0
    functionsReached:
    - PQreset
    linkageType: ''
    returnType: void
    signature: void SPgSQL::reconnect()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 48
    functionDepth: 0
    functionLinenumber: 48
    functionLinenumberEnd: 48
    functionName: SPgSQL::db
    functionSourceFile: /src/pdns/modules/gpgsqlbackend/spgsql.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: PGconn
    signature: PGconn * db()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 49
    functionDepth: 0
    functionLinenumber: 49
    functionLinenumberEnd: 49
    functionName: SPgSQL::in_trx
    functionSourceFile: /src/pdns/modules/gpgsqlbackend/spgsql.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool in_trx() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 50
    functionDepth: 0
    functionLinenumber: 50
    functionLinenumberEnd: 50
    functionName: SPgSQL::usePrepared
    functionSourceFile: /src/pdns/modules/gpgsqlbackend/spgsql.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool usePrepared()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 33
      start: 33
    functionDepth: 0
    functionLinenumber: 33
    functionLinenumberEnd: 33
    functionName: ~LdapAuthenticator()
    functionSourceFile: /src/pdns/modules/ldapbackend/ldapauthenticator.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~LdapAuthenticator()
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: strbind
      Src: /src/pdns/modules/ldapbackend/primary.cc:38,1
    - Dst: getArg
      Src: /src/pdns/modules/ldapbackend/primary.cc:38,1
    - Dst: search
      Src: /src/pdns/modules/ldapbackend/primary.cc:39,1
    - Dst: getArg
      Src: /src/pdns/modules/ldapbackend/primary.cc:39,1
    - Dst: SLOG
      Src: /src/pdns/modules/ldapbackend/primary.cc:42,1
    - Dst: what
      Src: /src/pdns/modules/ldapbackend/primary.cc:42,1
    - Dst: error
      Src: /src/pdns/modules/ldapbackend/primary.cc:43,1
    - Dst: what
      Src: /src/pdns/modules/ldapbackend/primary.cc:43,1
    - Dst: DBException
      Src: /src/pdns/modules/ldapbackend/primary.cc:44,1
    - Dst: SLOG
      Src: /src/pdns/modules/ldapbackend/primary.cc:47,1
    - Dst: error
      Src: /src/pdns/modules/ldapbackend/primary.cc:48,1
    - Dst: what
      Src: /src/pdns/modules/ldapbackend/primary.cc:48,1
    - Dst: LdapBackend::reconnect
      Src: /src/pdns/modules/ldapbackend/primary.cc:49,1
    - Dst: LdapBackend::getUpdatedPrimaries
      Src: /src/pdns/modules/ldapbackend/primary.cc:50,1
    - Dst: PDNSException
      Src: /src/pdns/modules/ldapbackend/primary.cc:52,1
    - Dst: SLOG
      Src: /src/pdns/modules/ldapbackend/primary.cc:55,1
    - Dst: what
      Src: /src/pdns/modules/ldapbackend/primary.cc:55,1
    - Dst: error
      Src: /src/pdns/modules/ldapbackend/primary.cc:56,1
    - Dst: what
      Src: /src/pdns/modules/ldapbackend/primary.cc:56,1
    - Dst: PDNSException
      Src: /src/pdns/modules/ldapbackend/primary.cc:57,1
    - Dst: DBException
      Src: /src/pdns/modules/ldapbackend/primary.cc:60,1
    - Dst: PowerLDAP::SearchResult::Ptr::getNext
      Src: /src/pdns/modules/ldapbackend/primary.cc:63,1
    - Dst: PowerLDAP::sentry_t::count
      Src: /src/pdns/modules/ldapbackend/primary.cc:64,1
    - Dst: empty
      Src: /src/pdns/modules/ldapbackend/primary.cc:64,1
    - Dst: LdapBackend::getDomainInfo
      Src: /src/pdns/modules/ldapbackend/primary.cc:68,1
    - Dst: ZoneName
      Src: /src/pdns/modules/ldapbackend/primary.cc:68,1
    - Dst: push_back
      Src: /src/pdns/modules/ldapbackend/primary.cc:73,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 28
    argCount: 3
    argNames:
    - ' domains'
    - ' catalogs'
    - ' catalogHashes'
    argTypes:
    - vector<DomainInfo>
    - std::unordered_set<DNSName>
    - CatalogHashMap
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 27
    functionDepth: 1
    functionLinenumber: 27
    functionLinenumberEnd: 75
    functionName: LdapBackend::getUpdatedPrimaries
    functionSourceFile: /src/pdns/modules/ldapbackend/primary.cc
    functionUses: 1
    functionsReached:
    - error
    - SLOG
    - PDNSException
    - what
    - push_back
    - getArg
    - DBException
    - PowerLDAP::SearchResult::Ptr::getNext
    - strbind
    - LdapBackend::getDomainInfo
    - LdapBackend::reconnect
    - search
    - empty
    - ZoneName
    - PowerLDAP::sentry_t::count
    - LdapBackend::getUpdatedPrimaries
    linkageType: ''
    returnType: void
    signature: void LdapBackend::getUpdatedPrimaries(vector<DomainInfo>& domains,
      std::unordered_set<DNSName>& catalogs, CatalogHashMap& catalogHashes)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strbind
      Src: /src/pdns/modules/ldapbackend/primary.cc:88,1
    - Dst: std::to_string
      Src: /src/pdns/modules/ldapbackend/primary.cc:88,1
    - Dst: getArg
      Src: /src/pdns/modules/ldapbackend/primary.cc:88,1
    - Dst: search
      Src: /src/pdns/modules/ldapbackend/primary.cc:89,1
    - Dst: getArg
      Src: /src/pdns/modules/ldapbackend/primary.cc:89,1
    - Dst: PowerLDAP::SearchResult::Ptr::getAll
      Src: /src/pdns/modules/ldapbackend/primary.cc:90,1
    - Dst: SLOG
      Src: /src/pdns/modules/ldapbackend/primary.cc:93,1
    - Dst: what
      Src: /src/pdns/modules/ldapbackend/primary.cc:93,1
    - Dst: error
      Src: /src/pdns/modules/ldapbackend/primary.cc:94,1
    - Dst: what
      Src: /src/pdns/modules/ldapbackend/primary.cc:94,1
    - Dst: DBException
      Src: /src/pdns/modules/ldapbackend/primary.cc:95,1
    - Dst: SLOG
      Src: /src/pdns/modules/ldapbackend/primary.cc:98,1
    - Dst: error
      Src: /src/pdns/modules/ldapbackend/primary.cc:99,1
    - Dst: what
      Src: /src/pdns/modules/ldapbackend/primary.cc:99,1
    - Dst: LdapBackend::reconnect
      Src: /src/pdns/modules/ldapbackend/primary.cc:100,1
    - Dst: LdapBackend::setNotified
      Src: /src/pdns/modules/ldapbackend/primary.cc:101,1
    - Dst: PDNSException
      Src: /src/pdns/modules/ldapbackend/primary.cc:104,1
    - Dst: SLOG
      Src: /src/pdns/modules/ldapbackend/primary.cc:107,1
    - Dst: what
      Src: /src/pdns/modules/ldapbackend/primary.cc:107,1
    - Dst: error
      Src: /src/pdns/modules/ldapbackend/primary.cc:108,1
    - Dst: what
      Src: /src/pdns/modules/ldapbackend/primary.cc:108,1
    - Dst: PDNSException
      Src: /src/pdns/modules/ldapbackend/primary.cc:109,1
    - Dst: DBException
      Src: /src/pdns/modules/ldapbackend/primary.cc:112,1
    - Dst: PowerLDAP::sresult_t::empty
      Src: /src/pdns/modules/ldapbackend/primary.cc:115,1
    - Dst: PDNSException
      Src: /src/pdns/modules/ldapbackend/primary.cc:116,1
    - Dst: std::to_string
      Src: /src/pdns/modules/ldapbackend/primary.cc:116,1
    - Dst: PowerLDAP::sresult_t::front
      Src: /src/pdns/modules/ldapbackend/primary.cc:118,1
    - Dst: std::to_string
      Src: /src/pdns/modules/ldapbackend/primary.cc:120,1
    - Dst: const_cast<char*>
      Src: /src/pdns/modules/ldapbackend/primary.cc:127,1
    - Dst: string::c_str
      Src: /src/pdns/modules/ldapbackend/primary.cc:127,1
    - Dst: modify
      Src: /src/pdns/modules/ldapbackend/primary.cc:135,1
    - Dst: SLOG
      Src: /src/pdns/modules/ldapbackend/primary.cc:138,1
    - Dst: error
      Src: /src/pdns/modules/ldapbackend/primary.cc:139,1
    - Dst: what
      Src: /src/pdns/modules/ldapbackend/primary.cc:139,1
    - Dst: LdapBackend::reconnect
      Src: /src/pdns/modules/ldapbackend/primary.cc:140,1
    - Dst: LdapBackend::setNotified
      Src: /src/pdns/modules/ldapbackend/primary.cc:141,1
    - Dst: PDNSException
      Src: /src/pdns/modules/ldapbackend/primary.cc:144,1
    - Dst: SLOG
      Src: /src/pdns/modules/ldapbackend/primary.cc:147,1
    - Dst: what
      Src: /src/pdns/modules/ldapbackend/primary.cc:147,1
    - Dst: error
      Src: /src/pdns/modules/ldapbackend/primary.cc:148,1
    - Dst: what
      Src: /src/pdns/modules/ldapbackend/primary.cc:148,1
    - Dst: PDNSException
      Src: /src/pdns/modules/ldapbackend/primary.cc:149,1
    - Dst: DBException
      Src: /src/pdns/modules/ldapbackend/primary.cc:152,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 46
    argCount: 2
    argNames:
    - id
    - serial
    argTypes:
    - domainid_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 154
      start: 78
    functionDepth: 1
    functionLinenumber: 78
    functionLinenumberEnd: 154
    functionName: LdapBackend::setNotified
    functionSourceFile: /src/pdns/modules/ldapbackend/primary.cc
    functionUses: 1
    functionsReached:
    - error
    - LdapBackend::setNotified
    - string::c_str
    - SLOG
    - const_cast<char*>
    - std::to_string
    - modify
    - PDNSException
    - what
    - getArg
    - DBException
    - strbind
    - LdapBackend::reconnect
    - PowerLDAP::sresult_t::front
    - search
    - PowerLDAP::SearchResult::Ptr::getAll
    - PowerLDAP::sresult_t::empty
    linkageType: ''
    returnType: void
    signature: void LdapBackend::setNotified(domainid_t id, uint32_t serial)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' str'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 30
      start: 29
    functionDepth: 0
    functionLinenumber: 29
    functionLinenumberEnd: 30
    functionName: LDAPException::LDAPException
    functionSourceFile: /src/pdns/modules/ldapbackend/exceptions.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void LDAPException(const std::string& str)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 36
    functionDepth: 0
    functionLinenumber: 36
    functionLinenumberEnd: 37
    functionName: LDAPTimeout::LDAPTimeout
    functionSourceFile: /src/pdns/modules/ldapbackend/exceptions.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void LDAPTimeout()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 44
    functionName: LDAPNoConnection::LDAPNoConnection
    functionSourceFile: /src/pdns/modules/ldapbackend/exceptions.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void LDAPNoConnection()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 50
    functionDepth: 0
    functionLinenumber: 50
    functionLinenumberEnd: 51
    functionName: LDAPNoSuchObject::LDAPNoSuchObject
    functionSourceFile: /src/pdns/modules/ldapbackend/exceptions.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void LDAPNoSuchObject()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 72
    functionDepth: 0
    functionLinenumber: 72
    functionLinenumberEnd: 75
    functionName: LdapBackend::DNSResult
    functionSourceFile: /src/pdns/modules/ldapbackend/ldapbackend.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void DNSResult()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 113
      start: 113
    functionDepth: 0
    functionLinenumber: 113
    functionLinenumberEnd: 113
    functionName: LdapBackend::getCapabilities
    functionSourceFile: /src/pdns/modules/ldapbackend/ldapbackend.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int getCapabilities() override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 3
    argNames:
    - ' dn'
    - ' pw'
    - tmout
    argTypes:
    - std::string
    - std::string
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 33
      start: 30
    functionDepth: 0
    functionLinenumber: 30
    functionLinenumberEnd: 33
    functionName: LdapSimpleAuthenticator::LdapSimpleAuthenticator
    functionSourceFile: /src/pdns/modules/ldapbackend/ldapauthenticator.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void LdapSimpleAuthenticator::LdapSimpleAuthenticator(const std::string&
      dn, const std::string& pw, int tmout)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: c_str
      Src: /src/pdns/modules/ldapbackend/ldapauthenticator.cc:43,1
    - Dst: strlen
      Src: /src/pdns/modules/ldapbackend/ldapauthenticator.cc:44,1
    - Dst: ldap_sasl_bind
      Src: /src/pdns/modules/ldapbackend/ldapauthenticator.cc:46,1
    - Dst: c_str
      Src: /src/pdns/modules/ldapbackend/ldapauthenticator.cc:46,1
    - Dst: LdapSimpleAuthenticator::fillLastError
      Src: /src/pdns/modules/ldapbackend/ldapauthenticator.cc:47,1
    - Dst: ldap_bind
      Src: /src/pdns/modules/ldapbackend/ldapauthenticator.cc:51,1
    - Dst: c_str
      Src: /src/pdns/modules/ldapbackend/ldapauthenticator.cc:51,1
    - Dst: c_str
      Src: /src/pdns/modules/ldapbackend/ldapauthenticator.cc:51,1
    - Dst: LdapSimpleAuthenticator::fillLastError
      Src: /src/pdns/modules/ldapbackend/ldapauthenticator.cc:52,1
    - Dst: ldapWaitResult
      Src: /src/pdns/modules/ldapbackend/ldapauthenticator.cc:57,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 2
    argNames:
    - log
    - conn
    argTypes:
    - Logr::log_t
    - LDAP*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 35
    functionDepth: 1
    functionLinenumber: 35
    functionLinenumberEnd: 59
    functionName: LdapSimpleAuthenticator::authenticate
    functionSourceFile: /src/pdns/modules/ldapbackend/ldapauthenticator.cc
    functionUses: 0
    functionsReached:
    - ldapWaitResult
    - strlen
    - ldap_sasl_bind
    - c_str
    - LdapSimpleAuthenticator::fillLastError
    - ldap_bind
    linkageType: ''
    returnType: bool
    signature: bool LdapSimpleAuthenticator::authenticate([[maybe_unused]] Logr::log_t
      log, LDAP* conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 61
    functionDepth: 0
    functionLinenumber: 61
    functionLinenumberEnd: 64
    functionName: LdapSimpleAuthenticator::getError
    functionSourceFile: /src/pdns/modules/ldapbackend/ldapauthenticator.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string LdapSimpleAuthenticator::getError() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ldapGetError
      Src: /src/pdns/modules/ldapbackend/ldapauthenticator.cc:68,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - conn
    - code
    argTypes:
    - LDAP*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 66
    functionDepth: 1
    functionLinenumber: 66
    functionLinenumberEnd: 69
    functionName: LdapSimpleAuthenticator::fillLastError
    functionSourceFile: /src/pdns/modules/ldapbackend/ldapauthenticator.cc
    functionUses: 1
    functionsReached:
    - ldapGetError
    linkageType: ''
    returnType: void
    signature: void LdapSimpleAuthenticator::fillLastError(LDAP* conn, int code)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 77
    functionDepth: 0
    functionLinenumber: 77
    functionLinenumberEnd: 80
    functionName: ldapGssapiAuthenticatorSaslInteractCallback
    functionSourceFile: /src/pdns/modules/ldapbackend/ldapauthenticator.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int ldapGssapiAuthenticatorSaslInteractCallback(LDAP* /* conn */, unsigned
      /* flags */, void* /* defaults */, void* /* in */)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: krb5_init_context
      Src: /src/pdns/modules/ldapbackend/ldapauthenticator.cc:87,1
    - Dst: PDNSException
      Src: /src/pdns/modules/ldapbackend/ldapauthenticator.cc:88,1
    - Dst: std::string
      Src: /src/pdns/modules/ldapbackend/ldapauthenticator.cc:88,1
    - Dst: empty
      Src: /src/pdns/modules/ldapbackend/ldapauthenticator.cc:91,1
    - Dst: krb5_cc_resolve
      Src: /src/pdns/modules/ldapbackend/ldapauthenticator.cc:93,1
    - Dst: std::string::c_str
      Src: /src/pdns/modules/ldapbackend/ldapauthenticator.cc:93,1
    - Dst: krb5_cc_default
      Src: /src/pdns/modules/ldapbackend/ldapauthenticator.cc:96,1
    - Dst: PDNSException
      Src: /src/pdns/modules/ldapbackend/ldapauthenticator.cc:100,1
    - Dst: std::string
      Src: /src/pdns/modules/ldapbackend/ldapauthenticator.cc:100,1
    - Dst: std::string
      Src: /src/pdns/modules/ldapbackend/ldapauthenticator.cc:100,1
    - Dst: krb5_get_error_message
      Src: /src/pdns/modules/ldapbackend/ldapauthenticator.cc:100,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 10
    argCount: 2
    argNames:
    - ' kt'
    - ' ccache'
    argTypes:
    - std::string
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 82
    functionDepth: 0
    functionLinenumber: 82
    functionLinenumberEnd: 101
    functionName: LdapGssapiAuthenticator::LdapGssapiAuthenticator
    functionSourceFile: /src/pdns/modules/ldapbackend/ldapauthenticator.cc
    functionUses: 0
    functionsReached:
    - krb5_cc_resolve
    - krb5_get_error_message
    - krb5_init_context
    - PDNSException
    - std::string::c_str
    - empty
    - std::string
    - krb5_cc_default
    linkageType: ''
    returnType: void
    signature: void LdapGssapiAuthenticator::LdapGssapiAuthenticator(const std::string&
      kt, const std::string& ccache, int /* tmout */)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: krb5_cc_close
      Src: /src/pdns/modules/ldapbackend/ldapauthenticator.cc:105,1
    - Dst: krb5_free_context
      Src: /src/pdns/modules/ldapbackend/ldapauthenticator.cc:106,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 107
      start: 103
    functionDepth: 0
    functionLinenumber: 103
    functionLinenumberEnd: 107
    functionName: LdapGssapiAuthenticator::~LdapGssapiAuthenticator()
    functionSourceFile: /src/pdns/modules/ldapbackend/ldapauthenticator.cc
    functionUses: 0
    functionsReached:
    - krb5_free_context
    - krb5_cc_close
    linkageType: ''
    returnType: void
    signature: void LdapGssapiAuthenticator::~LdapGssapiAuthenticator()
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: LdapGssapiAuthenticator::attemptAuth
      Src: /src/pdns/modules/ldapbackend/ldapauthenticator.cc:111,1
    - Dst: SLOG
      Src: /src/pdns/modules/ldapbackend/ldapauthenticator.cc:118,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/modules/ldapbackend/ldapauthenticator.cc:119,1
    - Dst: LdapGssapiAuthenticator::updateTgt
      Src: /src/pdns/modules/ldapbackend/ldapauthenticator.cc:120,1
    - Dst: LdapGssapiAuthenticator::attemptAuth
      Src: /src/pdns/modules/ldapbackend/ldapauthenticator.cc:122,1
    - Dst: SLOG
      Src: /src/pdns/modules/ldapbackend/ldapauthenticator.cc:123,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/modules/ldapbackend/ldapauthenticator.cc:124,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 2
    argNames:
    - log
    - conn
    argTypes:
    - Logr::log_t
    - LDAP*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 130
      start: 109
    functionDepth: 1
    functionLinenumber: 109
    functionLinenumberEnd: 130
    functionName: LdapGssapiAuthenticator::authenticate
    functionSourceFile: /src/pdns/modules/ldapbackend/ldapauthenticator.cc
    functionUses: 0
    functionsReached:
    - LdapGssapiAuthenticator::updateTgt
    - SLOG
    - Logr::log_t::info
    - LdapGssapiAuthenticator::attemptAuth
    linkageType: ''
    returnType: bool
    signature: bool LdapGssapiAuthenticator::authenticate(Logr::log_t log, LDAP* conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 135
      start: 132
    functionDepth: 0
    functionLinenumber: 132
    functionLinenumberEnd: 135
    functionName: LdapGssapiAuthenticator::getError
    functionSourceFile: /src/pdns/modules/ldapbackend/ldapauthenticator.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string LdapGssapiAuthenticator::getError() const
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: ldap_get_option
      Src: /src/pdns/modules/ldapbackend/ldapauthenticator.cc:143,1
    - Dst: std::string
      Src: /src/pdns/modules/ldapbackend/ldapauthenticator.cc:145,1
    - Dst: std::string
      Src: /src/pdns/modules/ldapbackend/ldapauthenticator.cc:147,1
    - Dst: ldap_memfree
      Src: /src/pdns/modules/ldapbackend/ldapauthenticator.cc:148,1
    - Dst: ldap_get_option
      Src: /src/pdns/modules/ldapbackend/ldapauthenticator.cc:151,1
    - Dst: std::string
      Src: /src/pdns/modules/ldapbackend/ldapauthenticator.cc:153,1
    - Dst: ldap_memfree
      Src: /src/pdns/modules/ldapbackend/ldapauthenticator.cc:154,1
    - Dst: ldap_get_option
      Src: /src/pdns/modules/ldapbackend/ldapauthenticator.cc:157,1
    - Dst: std::string
      Src: /src/pdns/modules/ldapbackend/ldapauthenticator.cc:159,1
    - Dst: ldap_memfree
      Src: /src/pdns/modules/ldapbackend/ldapauthenticator.cc:160,1
    - Dst: ldap_get_option
      Src: /src/pdns/modules/ldapbackend/ldapauthenticator.cc:163,1
    - Dst: std::string
      Src: /src/pdns/modules/ldapbackend/ldapauthenticator.cc:165,1
    - Dst: ldap_memfree
      Src: /src/pdns/modules/ldapbackend/ldapauthenticator.cc:166,1
    - Dst: ldap_sasl_interactive_bind_s
      Src: /src/pdns/modules/ldapbackend/ldapauthenticator.cc:170,1
    - Dst: SaslDefaults::mech::c_str
      Src: /src/pdns/modules/ldapbackend/ldapauthenticator.cc:170,1
    - Dst: SLOG
      Src: /src/pdns/modules/ldapbackend/ldapauthenticator.cc:173,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/modules/ldapbackend/ldapauthenticator.cc:174,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/ldapbackend/ldapauthenticator.cc:174,1
    - Dst: ldapGetError
      Src: /src/pdns/modules/ldapbackend/ldapauthenticator.cc:178,1
    - Dst: ldapGetError
      Src: /src/pdns/modules/ldapbackend/ldapauthenticator.cc:182,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 31
    argCount: 2
    argNames:
    - log
    - conn
    argTypes:
    - Logr::log_t
    - LDAP*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 187
      start: 137
    functionDepth: 1
    functionLinenumber: 137
    functionLinenumberEnd: 187
    functionName: LdapGssapiAuthenticator::attemptAuth
    functionSourceFile: /src/pdns/modules/ldapbackend/ldapauthenticator.cc
    functionUses: 1
    functionsReached:
    - ldap_sasl_interactive_bind_s
    - SLOG
    - Logr::log_t::info
    - Logging::Loggable
    - ldap_get_option
    - ldap_memfree
    - ldapGetError
    - std::string
    - SaslDefaults::mech::c_str
    linkageType: ''
    returnType: int
    signature: int LdapGssapiAuthenticator::attemptAuth(Logr::log_t log, LDAP* conn)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/modules/ldapbackend/ldapauthenticator.cc:197,1
    - Dst: krb5_kt_resolve
      Src: /src/pdns/modules/ldapbackend/ldapauthenticator.cc:199,1
    - Dst: std::string::c_str
      Src: /src/pdns/modules/ldapbackend/ldapauthenticator.cc:199,1
    - Dst: krb5_kt_default
      Src: /src/pdns/modules/ldapbackend/ldapauthenticator.cc:202,1
    - Dst: SLOG
      Src: /src/pdns/modules/ldapbackend/ldapauthenticator.cc:206,1
    - Dst: std::string
      Src: /src/pdns/modules/ldapbackend/ldapauthenticator.cc:206,1
    - Dst: krb5_get_error_message
      Src: /src/pdns/modules/ldapbackend/ldapauthenticator.cc:206,1
    - Dst: Logr::log_t::error
      Src: /src/pdns/modules/ldapbackend/ldapauthenticator.cc:207,1
    - Dst: krb5_get_error_message
      Src: /src/pdns/modules/ldapbackend/ldapauthenticator.cc:207,1
    - Dst: krb5_kt_start_seq_get
      Src: /src/pdns/modules/ldapbackend/ldapauthenticator.cc:213,1
    - Dst: SLOG
      Src: /src/pdns/modules/ldapbackend/ldapauthenticator.cc:214,1
    - Dst: std::string
      Src: /src/pdns/modules/ldapbackend/ldapauthenticator.cc:214,1
    - Dst: krb5_get_error_message
      Src: /src/pdns/modules/ldapbackend/ldapauthenticator.cc:214,1
    - Dst: Logr::log_t::error
      Src: /src/pdns/modules/ldapbackend/ldapauthenticator.cc:215,1
    - Dst: krb5_get_error_message
      Src: /src/pdns/modules/ldapbackend/ldapauthenticator.cc:215,1
    - Dst: krb5_kt_close
      Src: /src/pdns/modules/ldapbackend/ldapauthenticator.cc:216,1
    - Dst: krb5_kt_next_entry
      Src: /src/pdns/modules/ldapbackend/ldapauthenticator.cc:221,1
    - Dst: SLOG
      Src: /src/pdns/modules/ldapbackend/ldapauthenticator.cc:222,1
    - Dst: std::string
      Src: /src/pdns/modules/ldapbackend/ldapauthenticator.cc:222,1
    - Dst: krb5_get_error_message
      Src: /src/pdns/modules/ldapbackend/ldapauthenticator.cc:222,1
    - Dst: Logr::log_t::error
      Src: /src/pdns/modules/ldapbackend/ldapauthenticator.cc:223,1
    - Dst: krb5_get_error_message
      Src: /src/pdns/modules/ldapbackend/ldapauthenticator.cc:223,1
    - Dst: krb5_kt_close
      Src: /src/pdns/modules/ldapbackend/ldapauthenticator.cc:224,1
    - Dst: krb5_copy_principal
      Src: /src/pdns/modules/ldapbackend/ldapauthenticator.cc:228,1
    - Dst: SLOG
      Src: /src/pdns/modules/ldapbackend/ldapauthenticator.cc:229,1
    - Dst: std::string
      Src: /src/pdns/modules/ldapbackend/ldapauthenticator.cc:229,1
    - Dst: krb5_get_error_message
      Src: /src/pdns/modules/ldapbackend/ldapauthenticator.cc:229,1
    - Dst: Logr::log_t::error
      Src: /src/pdns/modules/ldapbackend/ldapauthenticator.cc:230,1
    - Dst: krb5_get_error_message
      Src: /src/pdns/modules/ldapbackend/ldapauthenticator.cc:230,1
    - Dst: krb5_kt_close
      Src: /src/pdns/modules/ldapbackend/ldapauthenticator.cc:231,1
    - Dst: krb5_kt_free_entry
      Src: /src/pdns/modules/ldapbackend/ldapauthenticator.cc:232,1
    - Dst: krb5_kt_free_entry
      Src: /src/pdns/modules/ldapbackend/ldapauthenticator.cc:236,1
    - Dst: krb5_kt_end_seq_get
      Src: /src/pdns/modules/ldapbackend/ldapauthenticator.cc:237,1
    - Dst: krb5_get_init_creds_opt_alloc
      Src: /src/pdns/modules/ldapbackend/ldapauthenticator.cc:239,1
    - Dst: SLOG
      Src: /src/pdns/modules/ldapbackend/ldapauthenticator.cc:240,1
    - Dst: std::string
      Src: /src/pdns/modules/ldapbackend/ldapauthenticator.cc:240,1
    - Dst: krb5_get_error_message
      Src: /src/pdns/modules/ldapbackend/ldapauthenticator.cc:240,1
    - Dst: Logr::log_t::error
      Src: /src/pdns/modules/ldapbackend/ldapauthenticator.cc:241,1
    - Dst: krb5_get_error_message
      Src: /src/pdns/modules/ldapbackend/ldapauthenticator.cc:241,1
    - Dst: krb5_kt_close
      Src: /src/pdns/modules/ldapbackend/ldapauthenticator.cc:242,1
    - Dst: krb5_free_principal
      Src: /src/pdns/modules/ldapbackend/ldapauthenticator.cc:243,1
    - Dst: krb5_get_init_creds_opt_set_default_flags
      Src: /src/pdns/modules/ldapbackend/ldapauthenticator.cc:246,1
    - Dst: krb5_principal_get_realm
      Src: /src/pdns/modules/ldapbackend/ldapauthenticator.cc:246,1
    - Dst: krb5_get_init_creds_keytab
      Src: /src/pdns/modules/ldapbackend/ldapauthenticator.cc:249,1
    - Dst: SLOG
      Src: /src/pdns/modules/ldapbackend/ldapauthenticator.cc:251,1
    - Dst: std::string
      Src: /src/pdns/modules/ldapbackend/ldapauthenticator.cc:251,1
    - Dst: krb5_get_error_message
      Src: /src/pdns/modules/ldapbackend/ldapauthenticator.cc:251,1
    - Dst: Logr::log_t::error
      Src: /src/pdns/modules/ldapbackend/ldapauthenticator.cc:252,1
    - Dst: krb5_get_error_message
      Src: /src/pdns/modules/ldapbackend/ldapauthenticator.cc:252,1
    - Dst: krb5_get_init_creds_opt_free
      Src: /src/pdns/modules/ldapbackend/ldapauthenticator.cc:253,1
    - Dst: krb5_free_cred_contents
      Src: /src/pdns/modules/ldapbackend/ldapauthenticator.cc:254,1
    - Dst: krb5_kt_close
      Src: /src/pdns/modules/ldapbackend/ldapauthenticator.cc:255,1
    - Dst: krb5_free_principal
      Src: /src/pdns/modules/ldapbackend/ldapauthenticator.cc:256,1
    - Dst: krb5_get_init_creds_opt_free
      Src: /src/pdns/modules/ldapbackend/ldapauthenticator.cc:260,1
    - Dst: krb5_kt_close
      Src: /src/pdns/modules/ldapbackend/ldapauthenticator.cc:261,1
    - Dst: krb5_cc_new_unique
      Src: /src/pdns/modules/ldapbackend/ldapauthenticator.cc:266,1
    - Dst: krb5_cc_get_type
      Src: /src/pdns/modules/ldapbackend/ldapauthenticator.cc:266,1
    - Dst: SLOG
      Src: /src/pdns/modules/ldapbackend/ldapauthenticator.cc:268,1
    - Dst: std::string
      Src: /src/pdns/modules/ldapbackend/ldapauthenticator.cc:268,1
    - Dst: krb5_get_error_message
      Src: /src/pdns/modules/ldapbackend/ldapauthenticator.cc:268,1
    - Dst: Logr::log_t::error
      Src: /src/pdns/modules/ldapbackend/ldapauthenticator.cc:269,1
    - Dst: krb5_get_error_message
      Src: /src/pdns/modules/ldapbackend/ldapauthenticator.cc:269,1
    - Dst: krb5_free_cred_contents
      Src: /src/pdns/modules/ldapbackend/ldapauthenticator.cc:270,1
    - Dst: krb5_free_principal
      Src: /src/pdns/modules/ldapbackend/ldapauthenticator.cc:271,1
    - Dst: krb5_cc_initialize
      Src: /src/pdns/modules/ldapbackend/ldapauthenticator.cc:275,1
    - Dst: SLOG
      Src: /src/pdns/modules/ldapbackend/ldapauthenticator.cc:277,1
    - Dst: std::string
      Src: /src/pdns/modules/ldapbackend/ldapauthenticator.cc:277,1
    - Dst: krb5_get_error_message
      Src: /src/pdns/modules/ldapbackend/ldapauthenticator.cc:277,1
    - Dst: Logr::log_t::error
      Src: /src/pdns/modules/ldapbackend/ldapauthenticator.cc:278,1
    - Dst: krb5_get_error_message
      Src: /src/pdns/modules/ldapbackend/ldapauthenticator.cc:278,1
    - Dst: krb5_free_cred_contents
      Src: /src/pdns/modules/ldapbackend/ldapauthenticator.cc:279,1
    - Dst: krb5_free_principal
      Src: /src/pdns/modules/ldapbackend/ldapauthenticator.cc:280,1
    - Dst: krb5_cc_store_cred
      Src: /src/pdns/modules/ldapbackend/ldapauthenticator.cc:284,1
    - Dst: SLOG
      Src: /src/pdns/modules/ldapbackend/ldapauthenticator.cc:286,1
    - Dst: std::string
      Src: /src/pdns/modules/ldapbackend/ldapauthenticator.cc:286,1
    - Dst: krb5_get_error_message
      Src: /src/pdns/modules/ldapbackend/ldapauthenticator.cc:286,1
    - Dst: Logr::log_t::error
      Src: /src/pdns/modules/ldapbackend/ldapauthenticator.cc:287,1
    - Dst: krb5_get_error_message
      Src: /src/pdns/modules/ldapbackend/ldapauthenticator.cc:287,1
    - Dst: krb5_cc_close
      Src: /src/pdns/modules/ldapbackend/ldapauthenticator.cc:288,1
    - Dst: krb5_free_cred_contents
      Src: /src/pdns/modules/ldapbackend/ldapauthenticator.cc:289,1
    - Dst: krb5_free_principal
      Src: /src/pdns/modules/ldapbackend/ldapauthenticator.cc:290,1
    - Dst: krb5_cc_move
      Src: /src/pdns/modules/ldapbackend/ldapauthenticator.cc:294,1
    - Dst: SLOG
      Src: /src/pdns/modules/ldapbackend/ldapauthenticator.cc:296,1
    - Dst: std::string
      Src: /src/pdns/modules/ldapbackend/ldapauthenticator.cc:296,1
    - Dst: krb5_get_error_message
      Src: /src/pdns/modules/ldapbackend/ldapauthenticator.cc:296,1
    - Dst: Logr::log_t::error
      Src: /src/pdns/modules/ldapbackend/ldapauthenticator.cc:297,1
    - Dst: krb5_get_error_message
      Src: /src/pdns/modules/ldapbackend/ldapauthenticator.cc:297,1
    - Dst: krb5_free_cred_contents
      Src: /src/pdns/modules/ldapbackend/ldapauthenticator.cc:298,1
    - Dst: krb5_free_principal
      Src: /src/pdns/modules/ldapbackend/ldapauthenticator.cc:299,1
    - Dst: krb5_free_cred_contents
      Src: /src/pdns/modules/ldapbackend/ldapauthenticator.cc:303,1
    - Dst: krb5_free_principal
      Src: /src/pdns/modules/ldapbackend/ldapauthenticator.cc:304,1
    - Dst: SLOG
      Src: /src/pdns/modules/ldapbackend/ldapauthenticator.cc:306,1
    - Dst: Logr::log_t::info
      Src: /src/pdns/modules/ldapbackend/ldapauthenticator.cc:307,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/ldapbackend/ldapauthenticator.cc:307,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 79
    argCount: 1
    argNames:
    - log
    argTypes:
    - Logr::log_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 309
      start: 189
    functionDepth: 0
    functionLinenumber: 189
    functionLinenumberEnd: 309
    functionName: LdapGssapiAuthenticator::updateTgt
    functionSourceFile: /src/pdns/modules/ldapbackend/ldapauthenticator.cc
    functionUses: 1
    functionsReached:
    - krb5_free_principal
    - krb5_principal_get_realm
    - std::string
    - krb5_free_cred_contents
    - SLOG
    - Logr::log_t::info
    - Logging::Loggable
    - krb5_kt_resolve
    - Logr::log_t::error
    - krb5_kt_start_seq_get
    - krb5_cc_get_type
    - krb5_kt_close
    - krb5_get_error_message
    - empty
    - krb5_kt_free_entry
    - krb5_cc_new_unique
    - krb5_cc_initialize
    - krb5_get_init_creds_opt_set_default_flags
    - krb5_get_init_creds_opt_free
    - krb5_cc_store_cred
    - krb5_kt_end_seq_get
    - krb5_get_init_creds_keytab
    - krb5_kt_next_entry
    - krb5_copy_principal
    - krb5_get_init_creds_opt_alloc
    - krb5_cc_move
    - std::string::c_str
    - krb5_cc_close
    - krb5_kt_default
    linkageType: ''
    returnType: int
    signature: int LdapGssapiAuthenticator::updateTgt(Logr::log_t log)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ldap_set_option
      Src: /src/pdns/modules/ldapbackend/ldaputils.cc:6,1
    - Dst: LDAPException
      Src: /src/pdns/modules/ldapbackend/ldaputils.cc:7,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 3
    argNames:
    - conn
    - option
    - value
    argTypes:
    - LDAP*
    - int
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 9
      start: 4
    functionDepth: 0
    functionLinenumber: 4
    functionLinenumberEnd: 9
    functionName: ldapSetOption
    functionSourceFile: /src/pdns/modules/ldapbackend/ldaputils.cc
    functionUses: 0
    functionsReached:
    - LDAPException
    - ldap_set_option
    linkageType: ''
    returnType: void
    signature: void ldapSetOption(LDAP* conn, int option, void* value)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ldap_get_option
      Src: /src/pdns/modules/ldapbackend/ldaputils.cc:13,1
    - Dst: LDAPException
      Src: /src/pdns/modules/ldapbackend/ldaputils.cc:14,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 3
    argNames:
    - conn
    - option
    - value
    argTypes:
    - LDAP*
    - int
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 16
      start: 11
    functionDepth: 0
    functionLinenumber: 11
    functionLinenumberEnd: 16
    functionName: ldapGetOption
    functionSourceFile: /src/pdns/modules/ldapbackend/ldaputils.cc
    functionUses: 0
    functionsReached:
    - LDAPException
    - ldap_get_option
    linkageType: ''
    returnType: void
    signature: void ldapGetOption(LDAP* conn, int option, void* value)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ldapGetOption
      Src: /src/pdns/modules/ldapbackend/ldaputils.cc:21,1
    - Dst: std::string
      Src: /src/pdns/modules/ldapbackend/ldaputils.cc:22,1
    - Dst: ldap_err2string
      Src: /src/pdns/modules/ldapbackend/ldaputils.cc:22,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - conn
    - code
    argTypes:
    - LDAP*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 23
      start: 18
    functionDepth: 1
    functionLinenumber: 18
    functionLinenumberEnd: 23
    functionName: ldapGetError
    functionSourceFile: /src/pdns/modules/ldapbackend/ldaputils.cc
    functionUses: 2
    functionsReached:
    - std::string
    - ldapGetOption
    - ldap_err2string
    linkageType: ''
    returnType: std::string
    signature: std::string ldapGetError(LDAP* conn, int code)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ldap_result
      Src: /src/pdns/modules/ldapbackend/ldaputils.cc:33,1
    - Dst: ldap_msgfree
      Src: /src/pdns/modules/ldapbackend/ldaputils.cc:39,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 4
    argNames:
    - conn
    - msgid
    - timeout
    - result
    argTypes:
    - LDAP*
    - int
    - int
    - LDAPMessage**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 25
    functionDepth: 0
    functionLinenumber: 25
    functionLinenumberEnd: 45
    functionName: ldapWaitResult
    functionSourceFile: /src/pdns/modules/ldapbackend/ldaputils.cc
    functionUses: 1
    functionsReached:
    - ldap_msgfree
    - ldap_result
    linkageType: ''
    returnType: int
    signature: int ldapWaitResult(LDAP* conn, int msgid, int timeout, LDAPMessage**
      result)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - msgid
    - ld
    argTypes:
    - int
    - LDAP*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 36
      start: 33
    functionDepth: 0
    functionLinenumber: 33
    functionLinenumberEnd: 36
    functionName: PowerLDAP::SearchResult::SearchResult(int msgid, LDAP* ld)
    functionSourceFile: /src/pdns/modules/ldapbackend/powerldap.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void PowerLDAP::SearchResult::SearchResult(int msgid, LDAP* ld)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ldap_abandon_ext
      Src: /src/pdns/modules/ldapbackend/powerldap.cc:41,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 38
    functionDepth: 0
    functionLinenumber: 38
    functionLinenumberEnd: 43
    functionName: PowerLDAP::SearchResult::~SearchResult()
    functionSourceFile: /src/pdns/modules/ldapbackend/powerldap.cc
    functionUses: 0
    functionsReached:
    - ldap_abandon_ext
    linkageType: ''
    returnType: void
    signature: void PowerLDAP::SearchResult::~SearchResult()
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: ldapWaitResult
      Src: /src/pdns/modules/ldapbackend/powerldap.cc:56,1
    - Dst: ldapGetOption
      Src: /src/pdns/modules/ldapbackend/powerldap.cc:60,1
    - Dst: LDAPNoConnection
      Src: /src/pdns/modules/ldapbackend/powerldap.cc:62,1
    - Dst: LDAPException
      Src: /src/pdns/modules/ldapbackend/powerldap.cc:64,1
    - Dst: ldapGetError
      Src: /src/pdns/modules/ldapbackend/powerldap.cc:64,1
    - Dst: LDAPTimeout
      Src: /src/pdns/modules/ldapbackend/powerldap.cc:67,1
    - Dst: ldap_msgfree
      Src: /src/pdns/modules/ldapbackend/powerldap.cc:72,1
    - Dst: ldap_msgfree
      Src: /src/pdns/modules/ldapbackend/powerldap.cc:77,1
    - Dst: ldap_first_entry
      Src: /src/pdns/modules/ldapbackend/powerldap.cc:88,1
    - Dst: ldap_msgfree
      Src: /src/pdns/modules/ldapbackend/powerldap.cc:89,1
    - Dst: LDAPException
      Src: /src/pdns/modules/ldapbackend/powerldap.cc:90,1
    - Dst: ldapGetError
      Src: /src/pdns/modules/ldapbackend/powerldap.cc:90,1
    - Dst: clear
      Src: /src/pdns/modules/ldapbackend/powerldap.cc:93,1
    - Dst: ldap_get_dn
      Src: /src/pdns/modules/ldapbackend/powerldap.cc:96,1
    - Dst: vector::push_back
      Src: /src/pdns/modules/ldapbackend/powerldap.cc:97,1
    - Dst: string
      Src: /src/pdns/modules/ldapbackend/powerldap.cc:97,1
    - Dst: ldap_memfree
      Src: /src/pdns/modules/ldapbackend/powerldap.cc:98,1
    - Dst: ldap_first_attribute
      Src: /src/pdns/modules/ldapbackend/powerldap.cc:102,1
    - Dst: ldap_get_values_len
      Src: /src/pdns/modules/ldapbackend/powerldap.cc:104,1
    - Dst: vector::clear
      Src: /src/pdns/modules/ldapbackend/powerldap.cc:105,1
    - Dst: ldap_count_values_len
      Src: /src/pdns/modules/ldapbackend/powerldap.cc:106,1
    - Dst: vector::push_back
      Src: /src/pdns/modules/ldapbackend/powerldap.cc:107,1
    - Dst: ldap_value_free_len
      Src: /src/pdns/modules/ldapbackend/powerldap.cc:111,1
    - Dst: ldap_memfree
      Src: /src/pdns/modules/ldapbackend/powerldap.cc:113,1
    - Dst: ldap_next_attribute
      Src: /src/pdns/modules/ldapbackend/powerldap.cc:114,1
    - Dst: ber_free
      Src: /src/pdns/modules/ldapbackend/powerldap.cc:116,1
    - Dst: ldap_msgfree
      Src: /src/pdns/modules/ldapbackend/powerldap.cc:119,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 56
    argCount: 2
    argNames:
    - ' entry'
    - dn
    argTypes:
    - PowerLDAP::sentry_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 45
    functionDepth: 2
    functionLinenumber: 45
    functionLinenumberEnd: 121
    functionName: PowerLDAP::SearchResult::getNext(PowerLDAP::sentry_t& entry, bool
      dn, int /* timeout */)
    functionSourceFile: /src/pdns/modules/ldapbackend/powerldap.cc
    functionUses: 0
    functionsReached:
    - ldap_count_values_len
    - ldapWaitResult
    - ldap_get_values_len
    - ldap_get_dn
    - ber_free
    - LDAPNoConnection
    - string
    - ldap_first_entry
    - ldap_next_attribute
    - clear
    - vector::clear
    - ldapGetOption
    - ldap_msgfree
    - vector::push_back
    - LDAPTimeout
    - ldap_first_attribute
    - ldap_value_free_len
    - LDAPException
    - ldapGetError
    - ldap_memfree
    linkageType: ''
    returnType: bool
    signature: bool PowerLDAP::SearchResult::getNext(PowerLDAP::sentry_t& entry, bool
      dn, int /* timeout */)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getNext
      Src: /src/pdns/modules/ldapbackend/powerldap.cc:127,1
    - Dst: push_back
      Src: /src/pdns/modules/ldapbackend/powerldap.cc:128,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - ' results'
    - dn
    - timeout
    argTypes:
    - PowerLDAP::sresult_t
    - bool
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 130
      start: 123
    functionDepth: 0
    functionLinenumber: 123
    functionLinenumberEnd: 130
    functionName: PowerLDAP::SearchResult::getAll(PowerLDAP::sresult_t& results, bool
      dn, int timeout)
    functionSourceFile: /src/pdns/modules/ldapbackend/powerldap.cc
    functionUses: 0
    functionsReached:
    - push_back
    - getNext
    linkageType: ''
    returnType: void
    signature: void PowerLDAP::SearchResult::getAll(PowerLDAP::sresult_t& results,
      bool dn, int timeout)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PowerLDAP::ensureConnect
      Src: /src/pdns/modules/ldapbackend/powerldap.cc:139,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 4
    argNames:
    - ' hosts'
    - port
    - tls
    - timeout
    argTypes:
    - string
    - uint16_t
    - bool
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 132
    functionDepth: 1
    functionLinenumber: 132
    functionLinenumberEnd: 140
    functionName: PowerLDAP::PowerLDAP
    functionSourceFile: /src/pdns/modules/ldapbackend/powerldap.cc
    functionUses: 0
    functionsReached:
    - PowerLDAP::ensureConnect
    linkageType: ''
    returnType: void
    signature: void PowerLDAP::PowerLDAP(const string& hosts, uint16_t port, bool
      tls, int timeout)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: ldap_unbind_ext
      Src: /src/pdns/modules/ldapbackend/powerldap.cc:147,1
    - Dst: ldap_initialize
      Src: /src/pdns/modules/ldapbackend/powerldap.cc:151,1
    - Dst: c_str
      Src: /src/pdns/modules/ldapbackend/powerldap.cc:151,1
    - Dst: stringtok
      Src: /src/pdns/modules/ldapbackend/powerldap.cc:154,1
    - Dst: vector::size
      Src: /src/pdns/modules/ldapbackend/powerldap.cc:156,1
    - Dst: ldap_initialize
      Src: /src/pdns/modules/ldapbackend/powerldap.cc:160,1
    - Dst: string::c_str
      Src: /src/pdns/modules/ldapbackend/powerldap.cc:160,1
    - Dst: LDAPException
      Src: /src/pdns/modules/ldapbackend/powerldap.cc:161,1
    - Dst: PowerLDAP::getError
      Src: /src/pdns/modules/ldapbackend/powerldap.cc:161,1
    - Dst: ldap_init
      Src: /src/pdns/modules/ldapbackend/powerldap.cc:165,1
    - Dst: c_str
      Src: /src/pdns/modules/ldapbackend/powerldap.cc:165,1
    - Dst: LDAPException
      Src: /src/pdns/modules/ldapbackend/powerldap.cc:166,1
    - Dst: string
      Src: /src/pdns/modules/ldapbackend/powerldap.cc:166,1
    - Dst: strerror
      Src: /src/pdns/modules/ldapbackend/powerldap.cc:166,1
    - Dst: ldap_set_option
      Src: /src/pdns/modules/ldapbackend/powerldap.cc:171,1
    - Dst: ldap_set_option
      Src: /src/pdns/modules/ldapbackend/powerldap.cc:173,1
    - Dst: ldap_unbind_ext
      Src: /src/pdns/modules/ldapbackend/powerldap.cc:174,1
    - Dst: LDAPException
      Src: /src/pdns/modules/ldapbackend/powerldap.cc:175,1
    - Dst: ldap_start_tls_s
      Src: /src/pdns/modules/ldapbackend/powerldap.cc:179,1
    - Dst: ldap_unbind_ext
      Src: /src/pdns/modules/ldapbackend/powerldap.cc:180,1
    - Dst: LDAPException
      Src: /src/pdns/modules/ldapbackend/powerldap.cc:181,1
    - Dst: PowerLDAP::getError
      Src: /src/pdns/modules/ldapbackend/powerldap.cc:181,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 27
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 183
      start: 142
    functionDepth: 1
    functionLinenumber: 142
    functionLinenumberEnd: 183
    functionName: PowerLDAP::ensureConnect
    functionSourceFile: /src/pdns/modules/ldapbackend/powerldap.cc
    functionUses: 1
    functionsReached:
    - string::c_str
    - ldap_init
    - stringtok
    - ldap_initialize
    - ldap_unbind_ext
    - LDAPException
    - string
    - ldap_start_tls_s
    - strerror
    - c_str
    - vector::size
    - PowerLDAP::getError
    - ldap_set_option
    linkageType: ''
    returnType: void
    signature: void PowerLDAP::ensureConnect()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ldap_unbind_ext
      Src: /src/pdns/modules/ldapbackend/powerldap.cc:187,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 188
      start: 185
    functionDepth: 0
    functionLinenumber: 185
    functionLinenumberEnd: 188
    functionName: PowerLDAP::~PowerLDAP()
    functionSourceFile: /src/pdns/modules/ldapbackend/powerldap.cc
    functionUses: 0
    functionsReached:
    - ldap_unbind_ext
    linkageType: ''
    returnType: void
    signature: void PowerLDAP::~PowerLDAP()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PowerLDAP::ensureConnect
      Src: /src/pdns/modules/ldapbackend/powerldap.cc:193,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 199
      start: 190
    functionDepth: 2
    functionLinenumber: 190
    functionLinenumberEnd: 199
    functionName: PowerLDAP::connect
    functionSourceFile: /src/pdns/modules/ldapbackend/powerldap.cc
    functionUses: 0
    functionsReached:
    - PowerLDAP::ensureConnect
    linkageType: ''
    returnType: bool
    signature: bool PowerLDAP::connect()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ldapSetOption
      Src: /src/pdns/modules/ldapbackend/powerldap.cc:203,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - option
    - value
    argTypes:
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 204
      start: 201
    functionDepth: 1
    functionLinenumber: 201
    functionLinenumberEnd: 204
    functionName: PowerLDAP::setOption
    functionSourceFile: /src/pdns/modules/ldapbackend/powerldap.cc
    functionUses: 0
    functionsReached:
    - ldapSetOption
    linkageType: ''
    returnType: void
    signature: void PowerLDAP::setOption(int option, int value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ldapGetOption
      Src: /src/pdns/modules/ldapbackend/powerldap.cc:208,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - option
    - value
    argTypes:
    - int
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 209
      start: 206
    functionDepth: 1
    functionLinenumber: 206
    functionLinenumberEnd: 209
    functionName: PowerLDAP::getOption
    functionSourceFile: /src/pdns/modules/ldapbackend/powerldap.cc
    functionUses: 0
    functionsReached:
    - ldapGetOption
    linkageType: ''
    returnType: void
    signature: void PowerLDAP::getOption(int option, int* value)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LdapAuthenticator*::authenticate
      Src: /src/pdns/modules/ldapbackend/powerldap.cc:213,1
    - Dst: LDAPException
      Src: /src/pdns/modules/ldapbackend/powerldap.cc:214,1
    - Dst: LdapAuthenticator*::getError
      Src: /src/pdns/modules/ldapbackend/powerldap.cc:214,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 3
    argCount: 2
    argNames:
    - log
    - authenticator
    argTypes:
    - Logr::log_t
    - LdapAuthenticator*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 215
      start: 211
    functionDepth: 0
    functionLinenumber: 211
    functionLinenumberEnd: 215
    functionName: PowerLDAP::bind
    functionSourceFile: /src/pdns/modules/ldapbackend/powerldap.cc
    functionUses: 0
    functionsReached:
    - LDAPException
    - LdapAuthenticator*::authenticate
    - LdapAuthenticator*::getError
    linkageType: ''
    returnType: void
    signature: void PowerLDAP::bind(Logr::log_t log, LdapAuthenticator* authenticator)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ldap_modify_ext_s
      Src: /src/pdns/modules/ldapbackend/powerldap.cc:221,1
    - Dst: c_str
      Src: /src/pdns/modules/ldapbackend/powerldap.cc:221,1
    - Dst: LDAPNoConnection
      Src: /src/pdns/modules/ldapbackend/powerldap.cc:223,1
    - Dst: LDAPException
      Src: /src/pdns/modules/ldapbackend/powerldap.cc:225,1
    - Dst: PowerLDAP::getError
      Src: /src/pdns/modules/ldapbackend/powerldap.cc:225,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 6
    argCount: 4
    argNames:
    - ' dn'
    - mods
    - scontrols
    - ccontrols
    argTypes:
    - string
    - LDAPMod*[]
    - LDAPControl**
    - LDAPControl**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 226
      start: 217
    functionDepth: 1
    functionLinenumber: 217
    functionLinenumberEnd: 226
    functionName: PowerLDAP::modify
    functionSourceFile: /src/pdns/modules/ldapbackend/powerldap.cc
    functionUses: 0
    functionsReached:
    - LDAPNoConnection
    - LDAPException
    - ldap_modify_ext_s
    - c_str
    - PowerLDAP::getError
    linkageType: ''
    returnType: void
    signature: void PowerLDAP::modify(const string& dn, LDAPMod* mods[], LDAPControl**
      scontrols, LDAPControl** ccontrols)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ldap_search_ext
      Src: /src/pdns/modules/ldapbackend/powerldap.cc:232,1
    - Dst: c_str
      Src: /src/pdns/modules/ldapbackend/powerldap.cc:232,1
    - Dst: c_str
      Src: /src/pdns/modules/ldapbackend/powerldap.cc:232,1
    - Dst: const_cast<char**>
      Src: /src/pdns/modules/ldapbackend/powerldap.cc:232,1
    - Dst: LDAPException
      Src: /src/pdns/modules/ldapbackend/powerldap.cc:233,1
    - Dst: PowerLDAP::getError
      Src: /src/pdns/modules/ldapbackend/powerldap.cc:233,1
    - Dst: std::make_unique<SearchResult>
      Src: /src/pdns/modules/ldapbackend/powerldap.cc:236,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 4
    argNames:
    - ' base'
    - scope
    - ' filter'
    - attr
    argTypes:
    - string
    - int
    - string
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 237
      start: 228
    functionDepth: 1
    functionLinenumber: 228
    functionLinenumberEnd: 237
    functionName: PowerLDAP::search
    functionSourceFile: /src/pdns/modules/ldapbackend/powerldap.cc
    functionUses: 0
    functionsReached:
    - const_cast<char**>
    - std::make_unique<SearchResult>
    - LDAPException
    - c_str
    - PowerLDAP::getError
    - ldap_search_ext
    linkageType: ''
    returnType: PowerLDAP::SearchResult::Ptr
    signature: PowerLDAP::SearchResult::Ptr PowerLDAP::search(const string& base,
      int scope, const string& filter, const char** attr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ldapWaitResult
      Src: /src/pdns/modules/ldapbackend/powerldap.cc:247,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - msgid
    - result
    argTypes:
    - int
    - LDAPMessage**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 248
      start: 245
    functionDepth: 1
    functionLinenumber: 245
    functionLinenumberEnd: 248
    functionName: PowerLDAP::waitResult
    functionSourceFile: /src/pdns/modules/ldapbackend/powerldap.cc
    functionUses: 0
    functionsReached:
    - ldapWaitResult
    linkageType: ''
    returnType: int
    signature: int PowerLDAP::waitResult(int msgid, LDAPMessage** result)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: PowerLDAP::waitResult
      Src: /src/pdns/modules/ldapbackend/powerldap.cc:262,1
    - Dst: ldapGetOption
      Src: /src/pdns/modules/ldapbackend/powerldap.cc:273,1
    - Dst: LDAPNoConnection
      Src: /src/pdns/modules/ldapbackend/powerldap.cc:275,1
    - Dst: LDAPException
      Src: /src/pdns/modules/ldapbackend/powerldap.cc:277,1
    - Dst: PowerLDAP::getError
      Src: /src/pdns/modules/ldapbackend/powerldap.cc:277,1
    - Dst: LDAPTimeout
      Src: /src/pdns/modules/ldapbackend/powerldap.cc:282,1
    - Dst: ldap_msgfree
      Src: /src/pdns/modules/ldapbackend/powerldap.cc:287,1
    - Dst: ldap_first_entry
      Src: /src/pdns/modules/ldapbackend/powerldap.cc:291,1
    - Dst: ldap_msgfree
      Src: /src/pdns/modules/ldapbackend/powerldap.cc:292,1
    - Dst: LDAPException
      Src: /src/pdns/modules/ldapbackend/powerldap.cc:293,1
    - Dst: PowerLDAP::getError
      Src: /src/pdns/modules/ldapbackend/powerldap.cc:293,1
    - Dst: clear
      Src: /src/pdns/modules/ldapbackend/powerldap.cc:296,1
    - Dst: ldap_get_dn
      Src: /src/pdns/modules/ldapbackend/powerldap.cc:299,1
    - Dst: vector::push_back
      Src: /src/pdns/modules/ldapbackend/powerldap.cc:300,1
    - Dst: string
      Src: /src/pdns/modules/ldapbackend/powerldap.cc:300,1
    - Dst: ldap_memfree
      Src: /src/pdns/modules/ldapbackend/powerldap.cc:301,1
    - Dst: ldap_first_attribute
      Src: /src/pdns/modules/ldapbackend/powerldap.cc:305,1
    - Dst: ldap_get_values_len
      Src: /src/pdns/modules/ldapbackend/powerldap.cc:307,1
    - Dst: vector::clear
      Src: /src/pdns/modules/ldapbackend/powerldap.cc:308,1
    - Dst: ldap_count_values_len
      Src: /src/pdns/modules/ldapbackend/powerldap.cc:309,1
    - Dst: vector::push_back
      Src: /src/pdns/modules/ldapbackend/powerldap.cc:310,1
    - Dst: ldap_value_free_len
      Src: /src/pdns/modules/ldapbackend/powerldap.cc:314,1
    - Dst: ldap_memfree
      Src: /src/pdns/modules/ldapbackend/powerldap.cc:316,1
    - Dst: ldap_next_attribute
      Src: /src/pdns/modules/ldapbackend/powerldap.cc:317,1
    - Dst: ber_free
      Src: /src/pdns/modules/ldapbackend/powerldap.cc:319,1
    - Dst: ldap_msgfree
      Src: /src/pdns/modules/ldapbackend/powerldap.cc:322,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 46
    argCount: 3
    argNames:
    - msgid
    - ' entry'
    - dn
    argTypes:
    - int
    - sentry_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 324
      start: 250
    functionDepth: 2
    functionLinenumber: 250
    functionLinenumberEnd: 324
    functionName: PowerLDAP::getSearchEntry
    functionSourceFile: /src/pdns/modules/ldapbackend/powerldap.cc
    functionUses: 0
    functionsReached:
    - ldap_count_values_len
    - PowerLDAP::waitResult
    - ldap_get_values_len
    - ldap_get_dn
    - ber_free
    - LDAPNoConnection
    - string
    - ldap_first_entry
    - ldap_next_attribute
    - clear
    - vector::clear
    - ldapGetOption
    - ldap_msgfree
    - vector::push_back
    - LDAPTimeout
    - ldap_first_attribute
    - PowerLDAP::getError
    - ldap_value_free_len
    - LDAPException
    - ldap_memfree
    linkageType: ''
    returnType: bool
    signature: bool PowerLDAP::getSearchEntry(int msgid, sentry_t& entry, bool dn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ldapGetError
      Src: /src/pdns/modules/ldapbackend/powerldap.cc:328,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rc
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 329
      start: 326
    functionDepth: 2
    functionLinenumber: 326
    functionLinenumberEnd: 329
    functionName: PowerLDAP::getError
    functionSourceFile: /src/pdns/modules/ldapbackend/powerldap.cc
    functionUses: 4
    functionsReached:
    - ldapGetError
    linkageType: ''
    returnType: string
    signature: string PowerLDAP::getError(int rc)
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: length
      Src: /src/pdns/modules/ldapbackend/powerldap.cc:337,1
    - Dst: std::string::reserve
      Src: /src/pdns/modules/ldapbackend/powerldap.cc:339,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/modules/ldapbackend/powerldap.cc:341,1
    - Dst: ::snprintf
      Src: /src/pdns/modules/ldapbackend/powerldap.cc:344,1
    - Dst: std::array::data
      Src: /src/pdns/modules/ldapbackend/powerldap.cc:344,1
    - Dst: std::array::size
      Src: /src/pdns/modules/ldapbackend/powerldap.cc:344,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/modules/ldapbackend/powerldap.cc:345,1
    - Dst: std::string::append
      Src: /src/pdns/modules/ldapbackend/powerldap.cc:346,1
    - Dst: std::array::data
      Src: /src/pdns/modules/ldapbackend/powerldap.cc:346,1
    - Dst: ::snprintf
      Src: /src/pdns/modules/ldapbackend/powerldap.cc:347,1
    - Dst: std::array::data
      Src: /src/pdns/modules/ldapbackend/powerldap.cc:347,1
    - Dst: std::array::size
      Src: /src/pdns/modules/ldapbackend/powerldap.cc:347,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/modules/ldapbackend/powerldap.cc:348,1
    - Dst: std::string::append
      Src: /src/pdns/modules/ldapbackend/powerldap.cc:349,1
    - Dst: std::array::data
      Src: /src/pdns/modules/ldapbackend/powerldap.cc:349,1
    - Dst: ::snprintf
      Src: /src/pdns/modules/ldapbackend/powerldap.cc:383,1
    - Dst: std::array::data
      Src: /src/pdns/modules/ldapbackend/powerldap.cc:383,1
    - Dst: std::array::size
      Src: /src/pdns/modules/ldapbackend/powerldap.cc:383,1
    - Dst: std::string::append
      Src: /src/pdns/modules/ldapbackend/powerldap.cc:384,1
    - Dst: std::array::data
      Src: /src/pdns/modules/ldapbackend/powerldap.cc:384,1
    - Dst: std::string::append
      Src: /src/pdns/modules/ldapbackend/powerldap.cc:388,1
    - Dst: std::string::append
      Src: /src/pdns/modules/ldapbackend/powerldap.cc:390,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 46
    argCount: 1
    argNames:
    - ' input'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 395
      start: 333
    functionDepth: 0
    functionLinenumber: 333
    functionLinenumberEnd: 395
    functionName: PowerLDAP::escape
    functionSourceFile: /src/pdns/modules/ldapbackend/powerldap.cc
    functionUses: 0
    functionsReached:
    - length
    - std::string::append
    - std::string::reserve
    - static_cast<uint8_t>
    - ::snprintf
    - std::array::data
    - std::array::size
    linkageType: ''
    returnType: std::string
    signature: std::string PowerLDAP::escape(const string& input)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pop_back
      Src: /src/pdns/modules/ldapbackend/utils.hh:38,1
    - Dst: pop_back
      Src: /src/pdns/modules/ldapbackend/utils.hh:39,1
    - Dst: back
      Src: /src/pdns/modules/ldapbackend/utils.hh:41,1
    - Dst: pop_back
      Src: /src/pdns/modules/ldapbackend/utils.hh:42,1
    - Dst: empty
      Src: /src/pdns/modules/ldapbackend/utils.hh:44,1
    - Dst: back
      Src: /src/pdns/modules/ldapbackend/utils.hh:45,1
    - Dst: pop_back
      Src: /src/pdns/modules/ldapbackend/utils.hh:46,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - ' parts'
    argTypes:
    - vector<string>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 35
    functionDepth: 0
    functionLinenumber: 35
    functionLinenumberEnd: 50
    functionName: ptr2ip4
    functionSourceFile: /src/pdns/modules/ldapbackend/utils.hh
    functionUses: 0
    functionsReached:
    - pop_back
    - empty
    - back
    linkageType: ''
    returnType: string
    signature: string ptr2ip4(vector<string>& parts)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pop_back
      Src: /src/pdns/modules/ldapbackend/utils.hh:57,1
    - Dst: pop_back
      Src: /src/pdns/modules/ldapbackend/utils.hh:58,1
    - Dst: size
      Src: /src/pdns/modules/ldapbackend/utils.hh:60,1
    - Dst: back
      Src: /src/pdns/modules/ldapbackend/utils.hh:60,1
    - Dst: pop_back
      Src: /src/pdns/modules/ldapbackend/utils.hh:61,1
    - Dst: empty
      Src: /src/pdns/modules/ldapbackend/utils.hh:65,1
    - Dst: back
      Src: /src/pdns/modules/ldapbackend/utils.hh:66,1
    - Dst: pop_back
      Src: /src/pdns/modules/ldapbackend/utils.hh:67,1
    - Dst: empty
      Src: /src/pdns/modules/ldapbackend/utils.hh:70,1
    - Dst: size
      Src: /src/pdns/modules/ldapbackend/utils.hh:74,1
    - Dst: back
      Src: /src/pdns/modules/ldapbackend/utils.hh:74,1
    - Dst: pop_back
      Src: /src/pdns/modules/ldapbackend/utils.hh:75,1
    - Dst: empty
      Src: /src/pdns/modules/ldapbackend/utils.hh:79,1
    - Dst: back
      Src: /src/pdns/modules/ldapbackend/utils.hh:80,1
    - Dst: pop_back
      Src: /src/pdns/modules/ldapbackend/utils.hh:81,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 24
    argCount: 1
    argNames:
    - ' parts'
    argTypes:
    - vector<string>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 52
    functionDepth: 0
    functionLinenumber: 52
    functionLinenumberEnd: 86
    functionName: ptr2ip6
    functionSourceFile: /src/pdns/modules/ldapbackend/utils.hh
    functionUses: 0
    functionsReached:
    - pop_back
    - empty
    - size
    - back
    linkageType: ''
    returnType: string
    signature: string ptr2ip6(vector<string>& parts)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: stringtok
      Src: /src/pdns/modules/ldapbackend/utils.hh:93,1
    - Dst: vector::empty
      Src: /src/pdns/modules/ldapbackend/utils.hh:94,1
    - Dst: vector::back
      Src: /src/pdns/modules/ldapbackend/utils.hh:95,1
    - Dst: vector::pop_back
      Src: /src/pdns/modules/ldapbackend/utils.hh:96,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - ' ip'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 88
    functionDepth: 0
    functionLinenumber: 88
    functionLinenumberEnd: 100
    functionName: ip2ptr4
    functionSourceFile: /src/pdns/modules/ldapbackend/utils.hh
    functionUses: 0
    functionsReached:
    - vector::empty
    - vector::pop_back
    - vector::back
    - stringtok
    linkageType: ''
    returnType: string
    signature: string ip2ptr4(const string& ip)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: stringtok
      Src: /src/pdns/modules/ldapbackend/utils.hh:107,1
    - Dst: vector::empty
      Src: /src/pdns/modules/ldapbackend/utils.hh:108,1
    - Dst: vector::back
      Src: /src/pdns/modules/ldapbackend/utils.hh:110,1
    - Dst: length
      Src: /src/pdns/modules/ldapbackend/utils.hh:112,1
    - Dst: vector::pop_back
      Src: /src/pdns/modules/ldapbackend/utils.hh:121,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 1
    argNames:
    - ' ip'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 125
      start: 102
    functionDepth: 0
    functionLinenumber: 102
    functionLinenumberEnd: 125
    functionName: ip2ptr6
    functionSourceFile: /src/pdns/modules/ldapbackend/utils.hh
    functionUses: 0
    functionsReached:
    - length
    - vector::pop_back
    - vector::back
    - stringtok
    - vector::empty
    linkageType: ''
    returnType: string
    signature: string ip2ptr6(const string& ip)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: string::find
      Src: /src/pdns/modules/ldapbackend/utils.hh:131,1
    - Dst: string::replace
      Src: /src/pdns/modules/ldapbackend/utils.hh:132,1
    - Dst: size
      Src: /src/pdns/modules/ldapbackend/utils.hh:132,1
    - Dst: size
      Src: /src/pdns/modules/ldapbackend/utils.hh:133,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - ' search'
    - ' replace'
    - subject
    argTypes:
    - string
    - string
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 137
      start: 127
    functionDepth: 0
    functionLinenumber: 127
    functionLinenumberEnd: 137
    functionName: strbind
    functionSourceFile: /src/pdns/modules/ldapbackend/utils.hh
    functionUses: 2
    functionsReached:
    - string::find
    - string::replace
    - size
    linkageType: ''
    returnType: string
    signature: string strbind(const string& search, const string& replace, string
      subject)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strptime
      Src: /src/pdns/modules/ldapbackend/utils.hh:148,1
    - Dst: c_str
      Src: /src/pdns/modules/ldapbackend/utils.hh:148,1
    - Dst: Utility::timegm
      Src: /src/pdns/modules/ldapbackend/utils.hh:151,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - ' str'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 143
    functionDepth: 0
    functionLinenumber: 143
    functionLinenumberEnd: 155
    functionName: str2tstamp
    functionSourceFile: /src/pdns/modules/ldapbackend/utils.hh
    functionUses: 0
    functionsReached:
    - c_str
    - strptime
    - Utility::timegm
    linkageType: ''
    returnType: time_t
    signature: time_t str2tstamp(const string& str)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: withName
      Src: /src/pdns/modules/ldapbackend/ldapbackend.cc:40,1
    - Dst: clear
      Src: /src/pdns/modules/ldapbackend/ldapbackend.cc:44,1
    - Dst: arg
      Src: /src/pdns/modules/ldapbackend/ldapbackend.cc:47,1
    - Dst: arg
      Src: /src/pdns/modules/ldapbackend/ldapbackend.cc:48,1
    - Dst: setArgPrefix
      Src: /src/pdns/modules/ldapbackend/ldapbackend.cc:52,1
    - Dst: getArgAsNum
      Src: /src/pdns/modules/ldapbackend/ldapbackend.cc:55,1
    - Dst: getArg
      Src: /src/pdns/modules/ldapbackend/ldapbackend.cc:59,1
    - Dst: getArg
      Src: /src/pdns/modules/ldapbackend/ldapbackend.cc:63,1
    - Dst: mustDo
      Src: /src/pdns/modules/ldapbackend/ldapbackend.cc:63,1
    - Dst: stringtok
      Src: /src/pdns/modules/ldapbackend/ldapbackend.cc:68,1
    - Dst: getArg
      Src: /src/pdns/modules/ldapbackend/ldapbackend.cc:68,1
    - Dst: vector::size
      Src: /src/pdns/modules/ldapbackend/ldapbackend.cc:69,1
    - Dst: vector::size
      Src: /src/pdns/modules/ldapbackend/ldapbackend.cc:72,1
    - Dst: vector::size
      Src: /src/pdns/modules/ldapbackend/ldapbackend.cc:73,1
    - Dst: SLOG
      Src: /src/pdns/modules/ldapbackend/ldapbackend.cc:76,1
    - Dst: info
      Src: /src/pdns/modules/ldapbackend/ldapbackend.cc:77,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/ldapbackend/ldapbackend.cc:77,1
    - Dst: string::c_str
      Src: /src/pdns/modules/ldapbackend/ldapbackend.cc:79,1
    - Dst: mustDo
      Src: /src/pdns/modules/ldapbackend/ldapbackend.cc:79,1
    - Dst: getArgAsNum
      Src: /src/pdns/modules/ldapbackend/ldapbackend.cc:79,1
    - Dst: PowerLDAP::PowerLDAP
      Src: /src/pdns/modules/ldapbackend/ldapbackend.cc:79,1
    - Dst: setOption
      Src: /src/pdns/modules/ldapbackend/ldapbackend.cc:80,1
    - Dst: getArg
      Src: /src/pdns/modules/ldapbackend/ldapbackend.cc:82,1
    - Dst: setenv
      Src: /src/pdns/modules/ldapbackend/ldapbackend.cc:84,1
    - Dst: getArg
      Src: /src/pdns/modules/ldapbackend/ldapbackend.cc:84,1
    - Dst: getArg
      Src: /src/pdns/modules/ldapbackend/ldapbackend.cc:85,1
    - Dst: getArg
      Src: /src/pdns/modules/ldapbackend/ldapbackend.cc:85,1
    - Dst: getArgAsNum
      Src: /src/pdns/modules/ldapbackend/ldapbackend.cc:85,1
    - Dst: LdapGssapiAuthenticator::LdapGssapiAuthenticator
      Src: /src/pdns/modules/ldapbackend/ldapbackend.cc:85,1
    - Dst: getArg
      Src: /src/pdns/modules/ldapbackend/ldapbackend.cc:88,1
    - Dst: getArg
      Src: /src/pdns/modules/ldapbackend/ldapbackend.cc:88,1
    - Dst: getArgAsNum
      Src: /src/pdns/modules/ldapbackend/ldapbackend.cc:88,1
    - Dst: LdapSimpleAuthenticator::LdapSimpleAuthenticator
      Src: /src/pdns/modules/ldapbackend/ldapbackend.cc:88,1
    - Dst: bind
      Src: /src/pdns/modules/ldapbackend/ldapbackend.cc:90,1
    - Dst: SLOG
      Src: /src/pdns/modules/ldapbackend/ldapbackend.cc:92,1
    - Dst: info
      Src: /src/pdns/modules/ldapbackend/ldapbackend.cc:93,1
    - Dst: SLOG
      Src: /src/pdns/modules/ldapbackend/ldapbackend.cc:97,1
    - Dst: error
      Src: /src/pdns/modules/ldapbackend/ldapbackend.cc:98,1
    - Dst: SLOG
      Src: /src/pdns/modules/ldapbackend/ldapbackend.cc:101,1
    - Dst: what
      Src: /src/pdns/modules/ldapbackend/ldapbackend.cc:101,1
    - Dst: error
      Src: /src/pdns/modules/ldapbackend/ldapbackend.cc:102,1
    - Dst: what
      Src: /src/pdns/modules/ldapbackend/ldapbackend.cc:102,1
    - Dst: SLOG
      Src: /src/pdns/modules/ldapbackend/ldapbackend.cc:105,1
    - Dst: what
      Src: /src/pdns/modules/ldapbackend/ldapbackend.cc:105,1
    - Dst: error
      Src: /src/pdns/modules/ldapbackend/ldapbackend.cc:106,1
    - Dst: what
      Src: /src/pdns/modules/ldapbackend/ldapbackend.cc:106,1
    - Dst: PDNSException
      Src: /src/pdns/modules/ldapbackend/ldapbackend.cc:112,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 53
    argCount: 1
    argNames:
    - ' suffix'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 113
      start: 33
    functionDepth: 3
    functionLinenumber: 33
    functionLinenumberEnd: 113
    functionName: LdapBackend::LdapBackend
    functionSourceFile: /src/pdns/modules/ldapbackend/ldapbackend.cc
    functionUses: 0
    functionsReached:
    - withName
    - PDNSException
    - getArg
    - error
    - SLOG
    - stringtok
    - Logging::Loggable
    - bind
    - mustDo
    - PowerLDAP::PowerLDAP
    - clear
    - string::c_str
    - getArgAsNum
    - arg
    - setOption
    - what
    - LdapGssapiAuthenticator::LdapGssapiAuthenticator
    - info
    - setArgPrefix
    - setenv
    - LdapSimpleAuthenticator::LdapSimpleAuthenticator
    - vector::size
    linkageType: ''
    returnType: void
    signature: void LdapBackend::LdapBackend(const string& suffix)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: reset
      Src: /src/pdns/modules/ldapbackend/ldapbackend.cc:117,1
    - Dst: SLOG
      Src: /src/pdns/modules/ldapbackend/ldapbackend.cc:122,1
    - Dst: info
      Src: /src/pdns/modules/ldapbackend/ldapbackend.cc:123,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 124
      start: 115
    functionDepth: 0
    functionLinenumber: 115
    functionLinenumberEnd: 124
    functionName: LdapBackend::~LdapBackend()
    functionSourceFile: /src/pdns/modules/ldapbackend/ldapbackend.cc
    functionUses: 0
    functionsReached:
    - reset
    - SLOG
    - info
    linkageType: ''
    returnType: void
    signature: void LdapBackend::~LdapBackend()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: SLOG
      Src: /src/pdns/modules/ldapbackend/ldapbackend.cc:131,1
    - Dst: info
      Src: /src/pdns/modules/ldapbackend/ldapbackend.cc:132,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/ldapbackend/ldapbackend.cc:132,1
    - Dst: connect
      Src: /src/pdns/modules/ldapbackend/ldapbackend.cc:133,1
    - Dst: Utility::usleep
      Src: /src/pdns/modules/ldapbackend/ldapbackend.cc:135,1
    - Dst: bind
      Src: /src/pdns/modules/ldapbackend/ldapbackend.cc:140,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 143
      start: 126
    functionDepth: 0
    functionLinenumber: 126
    functionLinenumberEnd: 143
    functionName: LdapBackend::reconnect
    functionSourceFile: /src/pdns/modules/ldapbackend/ldapbackend.cc
    functionUses: 2
    functionsReached:
    - SLOG
    - Logging::Loggable
    - bind
    - info
    - Utility::usleep
    - connect
    linkageType: ''
    returnType: bool
    signature: bool LdapBackend::reconnect()
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: count
      Src: /src/pdns/modules/ldapbackend/ldapbackend.cc:147,1
    - Dst: empty
      Src: /src/pdns/modules/ldapbackend/ldapbackend.cc:147,1
    - Dst: strtol
      Src: /src/pdns/modules/ldapbackend/ldapbackend.cc:149,1
    - Dst: c_str
      Src: /src/pdns/modules/ldapbackend/ldapbackend.cc:149,1
    - Dst: SLOG
      Src: /src/pdns/modules/ldapbackend/ldapbackend.cc:156,1
    - Dst: info
      Src: /src/pdns/modules/ldapbackend/ldapbackend.cc:157,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/ldapbackend/ldapbackend.cc:157,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/ldapbackend/ldapbackend.cc:157,1
    - Dst: erase
      Src: /src/pdns/modules/ldapbackend/ldapbackend.cc:164,1
    - Dst: count
      Src: /src/pdns/modules/ldapbackend/ldapbackend.cc:167,1
    - Dst: empty
      Src: /src/pdns/modules/ldapbackend/ldapbackend.cc:167,1
    - Dst: str2tstamp
      Src: /src/pdns/modules/ldapbackend/ldapbackend.cc:169,1
    - Dst: SLOG
      Src: /src/pdns/modules/ldapbackend/ldapbackend.cc:171,1
    - Dst: info
      Src: /src/pdns/modules/ldapbackend/ldapbackend.cc:172,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/ldapbackend/ldapbackend.cc:172,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/ldapbackend/ldapbackend.cc:172,1
    - Dst: erase
      Src: /src/pdns/modules/ldapbackend/ldapbackend.cc:179,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 1
    argNames:
    - ' result'
    argTypes:
    - DNSResult
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 181
      start: 145
    functionDepth: 1
    functionLinenumber: 145
    functionLinenumberEnd: 181
    functionName: LdapBackend::extract_common_attributes
    functionSourceFile: /src/pdns/modules/ldapbackend/ldapbackend.cc
    functionUses: 0
    functionsReached:
    - strtol
    - SLOG
    - c_str
    - count
    - Logging::Loggable
    - info
    - str2tstamp
    - empty
    - erase
    linkageType: ''
    returnType: void
    signature: void LdapBackend::extract_common_attributes(DNSResult& result)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: QType::QType
      Src: /src/pdns/modules/ldapbackend/ldapbackend.cc:186,1
    - Dst: first::length
      Src: /src/pdns/modules/ldapbackend/ldapbackend.cc:191,1
    - Dst: first::compare
      Src: /src/pdns/modules/ldapbackend/ldapbackend.cc:191,1
    - Dst: first::length
      Src: /src/pdns/modules/ldapbackend/ldapbackend.cc:191,1
    - Dst: std::string::substr
      Src: /src/pdns/modules/ldapbackend/ldapbackend.cc:195,1
    - Dst: std::string::length
      Src: /src/pdns/modules/ldapbackend/ldapbackend.cc:195,1
    - Dst: toUpper
      Src: /src/pdns/modules/ldapbackend/ldapbackend.cc:196,1
    - Dst: count
      Src: /src/pdns/modules/ldapbackend/ldapbackend.cc:212,1
    - Dst: empty
      Src: /src/pdns/modules/ldapbackend/ldapbackend.cc:212,1
    - Dst: find_first_of
      Src: /src/pdns/modules/ldapbackend/ldapbackend.cc:215,1
    - Dst: substr
      Src: /src/pdns/modules/ldapbackend/ldapbackend.cc:219,1
    - Dst: QType
      Src: /src/pdns/modules/ldapbackend/ldapbackend.cc:220,1
    - Dst: pdns::checked_stoi_into
      Src: /src/pdns/modules/ldapbackend/ldapbackend.cc:223,1
    - Dst: substr
      Src: /src/pdns/modules/ldapbackend/ldapbackend.cc:223,1
    - Dst: count
      Src: /src/pdns/modules/ldapbackend/ldapbackend.cc:228,1
    - Dst: empty
      Src: /src/pdns/modules/ldapbackend/ldapbackend.cc:228,1
    - Dst: QType
      Src: /src/pdns/modules/ldapbackend/ldapbackend.cc:230,1
    - Dst: count
      Src: /src/pdns/modules/ldapbackend/ldapbackend.cc:236,1
    - Dst: empty
      Src: /src/pdns/modules/ldapbackend/ldapbackend.cc:236,1
    - Dst: find_first_of
      Src: /src/pdns/modules/ldapbackend/ldapbackend.cc:241,1
    - Dst: substr
      Src: /src/pdns/modules/ldapbackend/ldapbackend.cc:248,1
    - Dst: QType
      Src: /src/pdns/modules/ldapbackend/ldapbackend.cc:249,1
    - Dst: substr
      Src: /src/pdns/modules/ldapbackend/ldapbackend.cc:252,1
    - Dst: DNSResult::ordername::empty
      Src: /src/pdns/modules/ldapbackend/ldapbackend.cc:255,1
    - Dst: std::string::empty
      Src: /src/pdns/modules/ldapbackend/ldapbackend.cc:255,1
    - Dst: push_back
      Src: /src/pdns/modules/ldapbackend/ldapbackend.cc:259,1
    - Dst: count
      Src: /src/pdns/modules/ldapbackend/ldapbackend.cc:268,1
    - Dst: empty
      Src: /src/pdns/modules/ldapbackend/ldapbackend.cc:268,1
    - Dst: push_back
      Src: /src/pdns/modules/ldapbackend/ldapbackend.cc:272,1
    CyclomaticComplexity: 30
    EdgeCount: 30
    ICount: 51
    argCount: 3
    argNames:
    - ' domain'
    - ' result_template'
    - qtype
    argTypes:
    - DNSName
    - DNSResult
    - QType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 274
      start: 183
    functionDepth: 0
    functionLinenumber: 183
    functionLinenumberEnd: 274
    functionName: LdapBackend::extract_entry_results
    functionSourceFile: /src/pdns/modules/ldapbackend/ldapbackend.cc
    functionUses: 0
    functionsReached:
    - std::string::length
    - QType::QType
    - count
    - std::string::substr
    - push_back
    - QType
    - toUpper
    - first::compare
    - find_first_of
    - substr
    - std::string::empty
    - empty
    - DNSResult::ordername::empty
    - pdns::checked_stoi_into
    - first::length
    linkageType: ''
    returnType: void
    signature: void LdapBackend::extract_entry_results(const DNSName& domain, const
      DNSResult& result_template, QType qtype)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 280
      start: 279
    functionDepth: 0
    functionLinenumber: 279
    functionLinenumberEnd: 280
    functionName: LdapFactory::LdapFactory
    functionSourceFile: /src/pdns/modules/ldapbackend/ldapbackend.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void LdapFactory()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: declare
      Src: /src/pdns/modules/ldapbackend/ldapbackend.cc:284,1
    - Dst: declare
      Src: /src/pdns/modules/ldapbackend/ldapbackend.cc:285,1
    - Dst: declare
      Src: /src/pdns/modules/ldapbackend/ldapbackend.cc:286,1
    - Dst: declare
      Src: /src/pdns/modules/ldapbackend/ldapbackend.cc:287,1
    - Dst: declare
      Src: /src/pdns/modules/ldapbackend/ldapbackend.cc:288,1
    - Dst: declare
      Src: /src/pdns/modules/ldapbackend/ldapbackend.cc:289,1
    - Dst: declare
      Src: /src/pdns/modules/ldapbackend/ldapbackend.cc:290,1
    - Dst: declare
      Src: /src/pdns/modules/ldapbackend/ldapbackend.cc:291,1
    - Dst: declare
      Src: /src/pdns/modules/ldapbackend/ldapbackend.cc:292,1
    - Dst: declare
      Src: /src/pdns/modules/ldapbackend/ldapbackend.cc:293,1
    - Dst: declare
      Src: /src/pdns/modules/ldapbackend/ldapbackend.cc:294,1
    - Dst: declare
      Src: /src/pdns/modules/ldapbackend/ldapbackend.cc:295,1
    - Dst: declare
      Src: /src/pdns/modules/ldapbackend/ldapbackend.cc:296,1
    - Dst: declare
      Src: /src/pdns/modules/ldapbackend/ldapbackend.cc:297,1
    - Dst: declare
      Src: /src/pdns/modules/ldapbackend/ldapbackend.cc:298,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 299
      start: 282
    functionDepth: 0
    functionLinenumber: 282
    functionLinenumberEnd: 299
    functionName: LdapFactory::declareArguments
    functionSourceFile: /src/pdns/modules/ldapbackend/ldapbackend.cc
    functionUses: 0
    functionsReached:
    - declare
    linkageType: ''
    returnType: void
    signature: void declareArguments(const string& suffix = "") override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LdapBackend::LdapBackend
      Src: /src/pdns/modules/ldapbackend/ldapbackend.cc:303,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 304
      start: 301
    functionDepth: 4
    functionLinenumber: 301
    functionLinenumberEnd: 304
    functionName: LdapFactory::make
    functionSourceFile: /src/pdns/modules/ldapbackend/ldapbackend.cc
    functionUses: 0
    functionsReached:
    - LdapBackend::LdapBackend
    linkageType: ''
    returnType: DNSBackend
    signature: DNSBackend * make(const string& suffix = "") override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BackendMakers
      Src: /src/pdns/modules/ldapbackend/ldapbackend.cc:312,1
    - Dst: std::make_unique<LdapFactory>
      Src: /src/pdns/modules/ldapbackend/ldapbackend.cc:312,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 321
      start: 310
    functionDepth: 1
    functionLinenumber: 310
    functionLinenumberEnd: 321
    functionName: LdapLoader::LdapLoader
    functionSourceFile: /src/pdns/modules/ldapbackend/ldapbackend.cc
    functionUses: 0
    functionsReached:
    - BackendMakers
    - std::make_unique<LdapFactory>
    linkageType: ''
    returnType: void
    signature: void LdapLoader()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: clear
      Src: /src/pdns/modules/ldapbackend/native.cc:93,1
    - Dst: SLOG
      Src: /src/pdns/modules/ldapbackend/native.cc:98,1
    - Dst: what
      Src: /src/pdns/modules/ldapbackend/native.cc:98,1
    - Dst: error
      Src: /src/pdns/modules/ldapbackend/native.cc:99,1
    - Dst: what
      Src: /src/pdns/modules/ldapbackend/native.cc:99,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/ldapbackend/native.cc:99,1
    - Dst: DBException
      Src: /src/pdns/modules/ldapbackend/native.cc:100,1
    - Dst: SLOG
      Src: /src/pdns/modules/ldapbackend/native.cc:103,1
    - Dst: info
      Src: /src/pdns/modules/ldapbackend/native.cc:104,1
    - Dst: LdapBackend::reconnect
      Src: /src/pdns/modules/ldapbackend/native.cc:105,1
    - Dst: LdapBackend::list
      Src: /src/pdns/modules/ldapbackend/native.cc:106,1
    - Dst: PDNSException
      Src: /src/pdns/modules/ldapbackend/native.cc:108,1
    - Dst: SLOG
      Src: /src/pdns/modules/ldapbackend/native.cc:111,1
    - Dst: what
      Src: /src/pdns/modules/ldapbackend/native.cc:111,1
    - Dst: error
      Src: /src/pdns/modules/ldapbackend/native.cc:112,1
    - Dst: what
      Src: /src/pdns/modules/ldapbackend/native.cc:112,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/ldapbackend/native.cc:112,1
    - Dst: PDNSException
      Src: /src/pdns/modules/ldapbackend/native.cc:113,1
    - Dst: SLOG
      Src: /src/pdns/modules/ldapbackend/native.cc:116,1
    - Dst: what
      Src: /src/pdns/modules/ldapbackend/native.cc:116,1
    - Dst: error
      Src: /src/pdns/modules/ldapbackend/native.cc:117,1
    - Dst: what
      Src: /src/pdns/modules/ldapbackend/native.cc:117,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/ldapbackend/native.cc:117,1
    - Dst: DBException
      Src: /src/pdns/modules/ldapbackend/native.cc:118,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 24
    argCount: 2
    argNames:
    - ' target'
    - domain_id
    argTypes:
    - ZoneName
    - domainid_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 122
      start: 87
    functionDepth: 1
    functionLinenumber: 87
    functionLinenumberEnd: 122
    functionName: LdapBackend::list
    functionSourceFile: /src/pdns/modules/ldapbackend/native.cc
    functionUses: 1
    functionsReached:
    - SLOG
    - Logging::Loggable
    - PDNSException
    - what
    - DBException
    - LdapBackend::list
    - info
    - LdapBackend::reconnect
    - error
    - clear
    linkageType: ''
    returnType: bool
    signature: bool LdapBackend::list(const ZoneName& target, domainid_t domain_id,
      bool /* include_disabled */)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: getArg
      Src: /src/pdns/modules/ldapbackend/native.cc:130,1
    - Dst: toLower
      Src: /src/pdns/modules/ldapbackend/native.cc:131,1
    - Dst: escape
      Src: /src/pdns/modules/ldapbackend/native.cc:131,1
    - Dst: toStringRootDot
      Src: /src/pdns/modules/ldapbackend/native.cc:131,1
    - Dst: strbind
      Src: /src/pdns/modules/ldapbackend/native.cc:134,1
    - Dst: getArg
      Src: /src/pdns/modules/ldapbackend/native.cc:134,1
    - Dst: search
      Src: /src/pdns/modules/ldapbackend/native.cc:135,1
    - Dst: PowerLDAP::SearchResult::Ptr::getNext
      Src: /src/pdns/modules/ldapbackend/native.cc:136,1
    - Dst: count
      Src: /src/pdns/modules/ldapbackend/native.cc:139,1
    - Dst: empty
      Src: /src/pdns/modules/ldapbackend/native.cc:139,1
    - Dst: mustDo
      Src: /src/pdns/modules/ldapbackend/native.cc:140,1
    - Dst: LdapBackend::extract_common_attributes
      Src: /src/pdns/modules/ldapbackend/native.cc:149,1
    - Dst: LdapBackend::extract_entry_results
      Src: /src/pdns/modules/ldapbackend/native.cc:150,1
    - Dst: QType
      Src: /src/pdns/modules/ldapbackend/native.cc:150,1
    - Dst: strbind
      Src: /src/pdns/modules/ldapbackend/native.cc:152,1
    - Dst: getArg
      Src: /src/pdns/modules/ldapbackend/native.cc:152,1
    - Dst: SLOG
      Src: /src/pdns/modules/ldapbackend/native.cc:153,1
    - Dst: info
      Src: /src/pdns/modules/ldapbackend/native.cc:154,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/ldapbackend/native.cc:154,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/ldapbackend/native.cc:154,1
    - Dst: search
      Src: /src/pdns/modules/ldapbackend/native.cc:155,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 1
    argNames:
    - ' target'
    argTypes:
    - ZoneName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 158
      start: 124
    functionDepth: 2
    functionLinenumber: 124
    functionLinenumberEnd: 158
    functionName: LdapBackend::list_simple
    functionSourceFile: /src/pdns/modules/ldapbackend/native.cc
    functionUses: 0
    functionsReached:
    - escape
    - SLOG
    - count
    - Logging::Loggable
    - QType
    - getArg
    - toLower
    - info
    - PowerLDAP::SearchResult::Ptr::getNext
    - toStringRootDot
    - strbind
    - mustDo
    - LdapBackend::extract_common_attributes
    - LdapBackend::extract_entry_results
    - search
    - empty
    linkageType: ''
    returnType: bool
    signature: bool LdapBackend::list_simple(const ZoneName& target, domainid_t /*
      domain_id */)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: isPartOf
      Src: /src/pdns/modules/ldapbackend/native.cc:164,1
    - Dst: isPartOf
      Src: /src/pdns/modules/ldapbackend/native.cc:164,1
    - Dst: SLOG
      Src: /src/pdns/modules/ldapbackend/native.cc:165,1
    - Dst: info
      Src: /src/pdns/modules/ldapbackend/native.cc:166,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/ldapbackend/native.cc:166,1
    - Dst: LdapBackend::list_simple
      Src: /src/pdns/modules/ldapbackend/native.cc:170,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - ' target'
    - domain_id
    argTypes:
    - ZoneName
    - domainid_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 171
      start: 160
    functionDepth: 3
    functionLinenumber: 160
    functionLinenumberEnd: 171
    functionName: LdapBackend::list_strict
    functionSourceFile: /src/pdns/modules/ldapbackend/native.cc
    functionUses: 0
    functionsReached:
    - LdapBackend::list_simple
    - isPartOf
    - SLOG
    - Logging::Loggable
    - info
    linkageType: ''
    returnType: bool
    signature: bool LdapBackend::list_strict(const ZoneName& target, domainid_t domain_id)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: clear
      Src: /src/pdns/modules/ldapbackend/native.cc:179,1
    - Dst: SLOG
      Src: /src/pdns/modules/ldapbackend/native.cc:182,1
    - Dst: log
      Src: /src/pdns/modules/ldapbackend/native.cc:182,1
    - Dst: toStringRootDot
      Src: /src/pdns/modules/ldapbackend/native.cc:182,1
    - Dst: toString
      Src: /src/pdns/modules/ldapbackend/native.cc:182,1
    - Dst: info
      Src: /src/pdns/modules/ldapbackend/native.cc:183,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/ldapbackend/native.cc:183,1
    - Dst: toStringRootDot
      Src: /src/pdns/modules/ldapbackend/native.cc:183,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/ldapbackend/native.cc:183,1
    - Dst: SLOG
      Src: /src/pdns/modules/ldapbackend/native.cc:188,1
    - Dst: what
      Src: /src/pdns/modules/ldapbackend/native.cc:188,1
    - Dst: error
      Src: /src/pdns/modules/ldapbackend/native.cc:189,1
    - Dst: what
      Src: /src/pdns/modules/ldapbackend/native.cc:189,1
    - Dst: DBException
      Src: /src/pdns/modules/ldapbackend/native.cc:190,1
    - Dst: SLOG
      Src: /src/pdns/modules/ldapbackend/native.cc:193,1
    - Dst: error
      Src: /src/pdns/modules/ldapbackend/native.cc:194,1
    - Dst: what
      Src: /src/pdns/modules/ldapbackend/native.cc:194,1
    - Dst: LdapBackend::reconnect
      Src: /src/pdns/modules/ldapbackend/native.cc:195,1
    - Dst: LdapBackend::lookup
      Src: /src/pdns/modules/ldapbackend/native.cc:196,1
    - Dst: PDNSException
      Src: /src/pdns/modules/ldapbackend/native.cc:199,1
    - Dst: SLOG
      Src: /src/pdns/modules/ldapbackend/native.cc:202,1
    - Dst: what
      Src: /src/pdns/modules/ldapbackend/native.cc:202,1
    - Dst: error
      Src: /src/pdns/modules/ldapbackend/native.cc:203,1
    - Dst: what
      Src: /src/pdns/modules/ldapbackend/native.cc:203,1
    - Dst: PDNSException
      Src: /src/pdns/modules/ldapbackend/native.cc:204,1
    - Dst: SLOG
      Src: /src/pdns/modules/ldapbackend/native.cc:207,1
    - Dst: what
      Src: /src/pdns/modules/ldapbackend/native.cc:207,1
    - Dst: error
      Src: /src/pdns/modules/ldapbackend/native.cc:208,1
    - Dst: what
      Src: /src/pdns/modules/ldapbackend/native.cc:208,1
    - Dst: DBException
      Src: /src/pdns/modules/ldapbackend/native.cc:209,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 27
    argCount: 4
    argNames:
    - ' qtype'
    - ' qname'
    - zoneid
    - dnspkt
    argTypes:
    - QType
    - DNSName
    - domainid_t
    - DNSPacket*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 211
      start: 173
    functionDepth: 1
    functionLinenumber: 173
    functionLinenumberEnd: 211
    functionName: LdapBackend::lookup
    functionSourceFile: /src/pdns/modules/ldapbackend/native.cc
    functionUses: 1
    functionsReached:
    - toString
    - SLOG
    - log
    - Logging::Loggable
    - LdapBackend::lookup
    - what
    - PDNSException
    - DBException
    - info
    - toStringRootDot
    - LdapBackend::reconnect
    - error
    - clear
    linkageType: ''
    returnType: void
    signature: void LdapBackend::lookup(const QType& qtype, const DNSName& qname,
      domainid_t zoneid, DNSPacket* dnspkt)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: toLower
      Src: /src/pdns/modules/ldapbackend/native.cc:219,1
    - Dst: escape
      Src: /src/pdns/modules/ldapbackend/native.cc:219,1
    - Dst: toStringRootDot
      Src: /src/pdns/modules/ldapbackend/native.cc:219,1
    - Dst: getCode
      Src: /src/pdns/modules/ldapbackend/native.cc:222,1
    - Dst: toString
      Src: /src/pdns/modules/ldapbackend/native.cc:223,1
    - Dst: c_str
      Src: /src/pdns/modules/ldapbackend/native.cc:225,1
    - Dst: strbind
      Src: /src/pdns/modules/ldapbackend/native.cc:229,1
    - Dst: getArg
      Src: /src/pdns/modules/ldapbackend/native.cc:229,1
    - Dst: SLOG
      Src: /src/pdns/modules/ldapbackend/native.cc:231,1
    - Dst: getArg
      Src: /src/pdns/modules/ldapbackend/native.cc:231,1
    - Dst: toString
      Src: /src/pdns/modules/ldapbackend/native.cc:231,1
    - Dst: info
      Src: /src/pdns/modules/ldapbackend/native.cc:232,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/ldapbackend/native.cc:232,1
    - Dst: getArg
      Src: /src/pdns/modules/ldapbackend/native.cc:232,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/ldapbackend/native.cc:232,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/ldapbackend/native.cc:232,1
    - Dst: search
      Src: /src/pdns/modules/ldapbackend/native.cc:233,1
    - Dst: getArg
      Src: /src/pdns/modules/ldapbackend/native.cc:233,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 2
    argNames:
    - ' qtype'
    - ' qname'
    argTypes:
    - QType
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 234
      start: 213
    functionDepth: 1
    functionLinenumber: 213
    functionLinenumberEnd: 234
    functionName: LdapBackend::lookup_simple
    functionSourceFile: /src/pdns/modules/ldapbackend/native.cc
    functionUses: 0
    functionsReached:
    - toString
    - escape
    - SLOG
    - Logging::Loggable
    - toLower
    - getArg
    - info
    - toStringRootDot
    - strbind
    - search
    - c_str
    - getCode
    linkageType: ''
    returnType: void
    signature: void LdapBackend::lookup_simple(const QType& qtype, const DNSName&
      qname, DNSPacket* /* dnspkt */, domainid_t /* zoneid */)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: toLower
      Src: /src/pdns/modules/ldapbackend/native.cc:244,1
    - Dst: escape
      Src: /src/pdns/modules/ldapbackend/native.cc:244,1
    - Dst: toStringRootDot
      Src: /src/pdns/modules/ldapbackend/native.cc:244,1
    - Dst: stringtok
      Src: /src/pdns/modules/ldapbackend/native.cc:245,1
    - Dst: length
      Src: /src/pdns/modules/ldapbackend/native.cc:246,1
    - Dst: vector::size
      Src: /src/pdns/modules/ldapbackend/native.cc:248,1
    - Dst: substr
      Src: /src/pdns/modules/ldapbackend/native.cc:248,1
    - Dst: ptr2ip4
      Src: /src/pdns/modules/ldapbackend/native.cc:250,1
    - Dst: vector::size
      Src: /src/pdns/modules/ldapbackend/native.cc:254,1
    - Dst: substr
      Src: /src/pdns/modules/ldapbackend/native.cc:254,1
    - Dst: ptr2ip6
      Src: /src/pdns/modules/ldapbackend/native.cc:256,1
    - Dst: getCode
      Src: /src/pdns/modules/ldapbackend/native.cc:265,1
    - Dst: toString
      Src: /src/pdns/modules/ldapbackend/native.cc:266,1
    - Dst: c_str
      Src: /src/pdns/modules/ldapbackend/native.cc:268,1
    - Dst: strbind
      Src: /src/pdns/modules/ldapbackend/native.cc:272,1
    - Dst: getArg
      Src: /src/pdns/modules/ldapbackend/native.cc:272,1
    - Dst: SLOG
      Src: /src/pdns/modules/ldapbackend/native.cc:274,1
    - Dst: getArg
      Src: /src/pdns/modules/ldapbackend/native.cc:274,1
    - Dst: toString
      Src: /src/pdns/modules/ldapbackend/native.cc:274,1
    - Dst: info
      Src: /src/pdns/modules/ldapbackend/native.cc:275,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/ldapbackend/native.cc:275,1
    - Dst: getArg
      Src: /src/pdns/modules/ldapbackend/native.cc:275,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/ldapbackend/native.cc:275,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/ldapbackend/native.cc:275,1
    - Dst: search
      Src: /src/pdns/modules/ldapbackend/native.cc:276,1
    - Dst: getArg
      Src: /src/pdns/modules/ldapbackend/native.cc:276,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 25
    argCount: 2
    argNames:
    - ' qtype'
    - ' qname'
    argTypes:
    - QType
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 277
      start: 236
    functionDepth: 1
    functionLinenumber: 236
    functionLinenumberEnd: 277
    functionName: LdapBackend::lookup_strict
    functionSourceFile: /src/pdns/modules/ldapbackend/native.cc
    functionUses: 0
    functionsReached:
    - length
    - escape
    - stringtok
    - toString
    - ptr2ip4
    - SLOG
    - Logging::Loggable
    - toLower
    - getArg
    - info
    - toStringRootDot
    - strbind
    - substr
    - search
    - c_str
    - vector::size
    - ptr2ip6
    - getCode
    linkageType: ''
    returnType: void
    signature: void LdapBackend::lookup_strict(const QType& qtype, const DNSName&
      qname, DNSPacket* /* dnspkt */, domainid_t /* zoneid */)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: toLower
      Src: /src/pdns/modules/ldapbackend/native.cc:286,1
    - Dst: escape
      Src: /src/pdns/modules/ldapbackend/native.cc:286,1
    - Dst: toStringRootDot
      Src: /src/pdns/modules/ldapbackend/native.cc:286,1
    - Dst: getCode
      Src: /src/pdns/modules/ldapbackend/native.cc:289,1
    - Dst: toString
      Src: /src/pdns/modules/ldapbackend/native.cc:290,1
    - Dst: c_str
      Src: /src/pdns/modules/ldapbackend/native.cc:292,1
    - Dst: strbind
      Src: /src/pdns/modules/ldapbackend/native.cc:296,1
    - Dst: getArg
      Src: /src/pdns/modules/ldapbackend/native.cc:296,1
    - Dst: stringtok
      Src: /src/pdns/modules/ldapbackend/native.cc:298,1
    - Dst: toLower
      Src: /src/pdns/modules/ldapbackend/native.cc:298,1
    - Dst: toString
      Src: /src/pdns/modules/ldapbackend/native.cc:298,1
    - Dst: vector::crbegin
      Src: /src/pdns/modules/ldapbackend/native.cc:299,1
    - Dst: vector::crend
      Src: /src/pdns/modules/ldapbackend/native.cc:299,1
    - Dst: escape
      Src: /src/pdns/modules/ldapbackend/native.cc:300,1
    - Dst: SLOG
      Src: /src/pdns/modules/ldapbackend/native.cc:303,1
    - Dst: getArg
      Src: /src/pdns/modules/ldapbackend/native.cc:303,1
    - Dst: toString
      Src: /src/pdns/modules/ldapbackend/native.cc:303,1
    - Dst: info
      Src: /src/pdns/modules/ldapbackend/native.cc:304,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/ldapbackend/native.cc:304,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/ldapbackend/native.cc:304,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/ldapbackend/native.cc:304,1
    - Dst: search
      Src: /src/pdns/modules/ldapbackend/native.cc:305,1
    - Dst: getArg
      Src: /src/pdns/modules/ldapbackend/native.cc:305,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 2
    argNames:
    - ' qtype'
    - ' qname'
    argTypes:
    - QType
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 306
      start: 279
    functionDepth: 1
    functionLinenumber: 279
    functionLinenumberEnd: 306
    functionName: LdapBackend::lookup_tree
    functionSourceFile: /src/pdns/modules/ldapbackend/native.cc
    functionUses: 0
    functionsReached:
    - toString
    - escape
    - stringtok
    - SLOG
    - Logging::Loggable
    - vector::crbegin
    - toLower
    - getArg
    - info
    - toStringRootDot
    - strbind
    - vector::crend
    - search
    - c_str
    - getCode
    linkageType: ''
    returnType: void
    signature: void LdapBackend::lookup_tree(const QType& qtype, const DNSName& qname,
      DNSPacket* /* dnspkt */, domainid_t /* zoneid */)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/modules/ldapbackend/native.cc:310,1
    - Dst: empty
      Src: /src/pdns/modules/ldapbackend/native.cc:311,1
    - Dst: getNext
      Src: /src/pdns/modules/ldapbackend/native.cc:317,1
    - Dst: SLOG
      Src: /src/pdns/modules/ldapbackend/native.cc:320,1
    - Dst: what
      Src: /src/pdns/modules/ldapbackend/native.cc:320,1
    - Dst: error
      Src: /src/pdns/modules/ldapbackend/native.cc:321,1
    - Dst: what
      Src: /src/pdns/modules/ldapbackend/native.cc:321,1
    - Dst: PDNSException
      Src: /src/pdns/modules/ldapbackend/native.cc:322,1
    - Dst: count
      Src: /src/pdns/modules/ldapbackend/native.cc:333,1
    - Dst: LdapBackend::extract_common_attributes
      Src: /src/pdns/modules/ldapbackend/native.cc:346,1
    - Dst: count
      Src: /src/pdns/modules/ldapbackend/native.cc:350,1
    - Dst: toStringRootDot
      Src: /src/pdns/modules/ldapbackend/native.cc:359,1
    - Dst: begin
      Src: /src/pdns/modules/ldapbackend/native.cc:360,1
    - Dst: end
      Src: /src/pdns/modules/ldapbackend/native.cc:360,1
    - Dst: auto::size
      Src: /src/pdns/modules/ldapbackend/native.cc:362,1
    - Dst: auto::substr
      Src: /src/pdns/modules/ldapbackend/native.cc:362,1
    - Dst: auto::size
      Src: /src/pdns/modules/ldapbackend/native.cc:362,1
    - Dst: toStringRootDot
      Src: /src/pdns/modules/ldapbackend/native.cc:362,1
    - Dst: std::vector::push_back
      Src: /src/pdns/modules/ldapbackend/native.cc:363,1
    - Dst: LdapBackend::extract_entry_results
      Src: /src/pdns/modules/ldapbackend/native.cc:375,1
    - Dst: DNSName
      Src: /src/pdns/modules/ldapbackend/native.cc:375,1
    - Dst: QType
      Src: /src/pdns/modules/ldapbackend/native.cc:375,1
    - Dst: LdapBackend::extract_entry_results
      Src: /src/pdns/modules/ldapbackend/native.cc:378,1
    - Dst: QType
      Src: /src/pdns/modules/ldapbackend/native.cc:378,1
    - Dst: empty
      Src: /src/pdns/modules/ldapbackend/native.cc:382,1
    - Dst: back
      Src: /src/pdns/modules/ldapbackend/native.cc:386,1
    - Dst: pop_back
      Src: /src/pdns/modules/ldapbackend/native.cc:387,1
    - Dst: SLOG
      Src: /src/pdns/modules/ldapbackend/native.cc:395,1
    - Dst: toString
      Src: /src/pdns/modules/ldapbackend/native.cc:395,1
    - Dst: info
      Src: /src/pdns/modules/ldapbackend/native.cc:396,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/ldapbackend/native.cc:396,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/ldapbackend/native.cc:396,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/ldapbackend/native.cc:396,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/ldapbackend/native.cc:396,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 53
    argCount: 1
    argNames:
    - ' rr'
    argTypes:
    - DNSResourceRecord
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 398
      start: 308
    functionDepth: 2
    functionLinenumber: 308
    functionLinenumberEnd: 398
    functionName: LdapBackend::get
    functionSourceFile: /src/pdns/modules/ldapbackend/native.cc
    functionUses: 0
    functionsReached:
    - toString
    - PDNSException
    - error
    - pop_back
    - auto::size
    - std::vector::push_back
    - SLOG
    - Logging::Loggable
    - QType
    - back
    - toStringRootDot
    - LdapBackend::extract_entry_results
    - getNext
    - begin
    - empty
    - DNSName
    - auto::substr
    - count
    - what
    - end
    - info
    - LdapBackend::extract_common_attributes
    linkageType: ''
    returnType: bool
    signature: bool LdapBackend::get(DNSResourceRecord& rr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: clear
      Src: /src/pdns/modules/ldapbackend/native.cc:402,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 403
      start: 400
    functionDepth: 1
    functionLinenumber: 400
    functionLinenumberEnd: 403
    functionName: LdapBackend::lookupEnd
    functionSourceFile: /src/pdns/modules/ldapbackend/native.cc
    functionUses: 0
    functionsReached:
    - clear
    linkageType: ''
    returnType: void
    signature: void LdapBackend::lookupEnd()
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: toLower
      Src: /src/pdns/modules/ldapbackend/native.cc:421,1
    - Dst: escape
      Src: /src/pdns/modules/ldapbackend/native.cc:421,1
    - Dst: toStringRootDot
      Src: /src/pdns/modules/ldapbackend/native.cc:421,1
    - Dst: search
      Src: /src/pdns/modules/ldapbackend/native.cc:422,1
    - Dst: getArg
      Src: /src/pdns/modules/ldapbackend/native.cc:422,1
    - Dst: getNext
      Src: /src/pdns/modules/ldapbackend/native.cc:423,1
    - Dst: SLOG
      Src: /src/pdns/modules/ldapbackend/native.cc:428,1
    - Dst: what
      Src: /src/pdns/modules/ldapbackend/native.cc:428,1
    - Dst: error
      Src: /src/pdns/modules/ldapbackend/native.cc:429,1
    - Dst: what
      Src: /src/pdns/modules/ldapbackend/native.cc:429,1
    - Dst: DBException
      Src: /src/pdns/modules/ldapbackend/native.cc:430,1
    - Dst: SLOG
      Src: /src/pdns/modules/ldapbackend/native.cc:433,1
    - Dst: error
      Src: /src/pdns/modules/ldapbackend/native.cc:434,1
    - Dst: what
      Src: /src/pdns/modules/ldapbackend/native.cc:434,1
    - Dst: LdapBackend::reconnect
      Src: /src/pdns/modules/ldapbackend/native.cc:435,1
    - Dst: LdapBackend::getDomainInfo
      Src: /src/pdns/modules/ldapbackend/native.cc:436,1
    - Dst: PDNSException
      Src: /src/pdns/modules/ldapbackend/native.cc:438,1
    - Dst: SLOG
      Src: /src/pdns/modules/ldapbackend/native.cc:441,1
    - Dst: what
      Src: /src/pdns/modules/ldapbackend/native.cc:441,1
    - Dst: error
      Src: /src/pdns/modules/ldapbackend/native.cc:442,1
    - Dst: what
      Src: /src/pdns/modules/ldapbackend/native.cc:442,1
    - Dst: PDNSException
      Src: /src/pdns/modules/ldapbackend/native.cc:443,1
    - Dst: SLOG
      Src: /src/pdns/modules/ldapbackend/native.cc:446,1
    - Dst: what
      Src: /src/pdns/modules/ldapbackend/native.cc:446,1
    - Dst: error
      Src: /src/pdns/modules/ldapbackend/native.cc:447,1
    - Dst: what
      Src: /src/pdns/modules/ldapbackend/native.cc:447,1
    - Dst: DBException
      Src: /src/pdns/modules/ldapbackend/native.cc:448,1
    - Dst: PowerLDAP::sentry_t::count
      Src: /src/pdns/modules/ldapbackend/native.cc:451,1
    - Dst: empty
      Src: /src/pdns/modules/ldapbackend/native.cc:451,1
    - Dst: fillSOAData
      Src: /src/pdns/modules/ldapbackend/native.cc:453,1
    - Dst: PowerLDAP::sentry_t::count
      Src: /src/pdns/modules/ldapbackend/native.cc:455,1
    - Dst: empty
      Src: /src/pdns/modules/ldapbackend/native.cc:455,1
    - Dst: static_cast<domainid_t>
      Src: /src/pdns/modules/ldapbackend/native.cc:456,1
    - Dst: std::stoll
      Src: /src/pdns/modules/ldapbackend/native.cc:456,1
    - Dst: PowerLDAP::sentry_t::count
      Src: /src/pdns/modules/ldapbackend/native.cc:463,1
    - Dst: empty
      Src: /src/pdns/modules/ldapbackend/native.cc:463,1
    - Dst: pdns::checked_stoi_into
      Src: /src/pdns/modules/ldapbackend/native.cc:464,1
    - Dst: PowerLDAP::sentry_t::count
      Src: /src/pdns/modules/ldapbackend/native.cc:468,1
    - Dst: empty
      Src: /src/pdns/modules/ldapbackend/native.cc:468,1
    - Dst: pdns::checked_stoi_into
      Src: /src/pdns/modules/ldapbackend/native.cc:469,1
    - Dst: PowerLDAP::sentry_t::count
      Src: /src/pdns/modules/ldapbackend/native.cc:473,1
    - Dst: empty
      Src: /src/pdns/modules/ldapbackend/native.cc:473,1
    - Dst: primaries::emplace_back
      Src: /src/pdns/modules/ldapbackend/native.cc:475,1
    - Dst: PowerLDAP::sentry_t::count
      Src: /src/pdns/modules/ldapbackend/native.cc:478,1
    - Dst: empty
      Src: /src/pdns/modules/ldapbackend/native.cc:478,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 53
    argCount: 2
    argNames:
    - ' domain'
    - ' info'
    argTypes:
    - ZoneName
    - DomainInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 496
      start: 405
    functionDepth: 1
    functionLinenumber: 405
    functionLinenumberEnd: 496
    functionName: LdapBackend::getDomainInfo
    functionSourceFile: /src/pdns/modules/ldapbackend/native.cc
    functionUses: 2
    functionsReached:
    - PDNSException
    - getArg
    - DBException
    - error
    - search
    - SLOG
    - toStringRootDot
    - getNext
    - empty
    - pdns::checked_stoi_into
    - escape
    - std::stoll
    - toLower
    - LdapBackend::getDomainInfo
    - static_cast<domainid_t>
    - primaries::emplace_back
    - fillSOAData
    - what
    - LdapBackend::reconnect
    - PowerLDAP::sentry_t::count
    linkageType: ''
    returnType: bool
    signature: bool LdapBackend::getDomainInfo(const ZoneName& domain, DomainInfo&
      info, bool /* getSerial */)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 1
    argNames:
    - ' other'
    argTypes:
    - SearchResult
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 68
    functionDepth: 0
    functionLinenumber: 68
    functionLinenumberEnd: 68
    functionName: PowerLDAP::SearchResult::SearchResult
    functionSourceFile: /src/pdns/modules/ldapbackend/powerldap.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void SearchResult(const SearchResult& other)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 1
    argNames:
    - ' other'
    argTypes:
    - SearchResult
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 69
    functionDepth: 0
    functionLinenumber: 69
    functionLinenumberEnd: 69
    functionName: '& operator=(const SearchResult& other)'
    functionSourceFile: /src/pdns/modules/ldapbackend/powerldap.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: SearchResult
    signature: SearchResult & operator=(const SearchResult& other)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: canonCompare_three_way
      Src: /src/pdns/modules/bindbackend/bindbackend2.hh:65,1
    - Dst: std::tie
      Src: /src/pdns/modules/bindbackend/bindbackend2.hh:70,1
    - Dst: std::tie
      Src: /src/pdns/modules/bindbackend/bindbackend2.hh:70,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - Bind2DNSRecord
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 63
    functionDepth: 0
    functionLinenumber: 63
    functionLinenumberEnd: 71
    functionName: operator<(const Bind2DNSRecord& rhs) const
    functionSourceFile: /src/pdns/modules/bindbackend/bindbackend2.hh
    functionUses: 0
    functionsReached:
    - canonCompare_three_way
    - std::tie
    linkageType: ''
    returnType: bool
    signature: bool operator<(const Bind2DNSRecord& rhs) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: canonCompare
      Src: /src/pdns/modules/bindbackend/bindbackend2.hh:80,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' a'
    - ' b'
    argTypes:
    - DNSName
    - Bind2DNSRecord
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 78
    functionDepth: 0
    functionLinenumber: 78
    functionLinenumberEnd: 81
    functionName: operator()(const DNSName& a, const Bind2DNSRecord& b) const
    functionSourceFile: /src/pdns/modules/bindbackend/bindbackend2.hh
    functionUses: 0
    functionsReached:
    - canonCompare
    linkageType: ''
    returnType: bool
    signature: bool operator()(const DNSName& a, const Bind2DNSRecord& b) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: qname::canonCompare
      Src: /src/pdns/modules/bindbackend/bindbackend2.hh:84,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' a'
    - ' b'
    argTypes:
    - Bind2DNSRecord
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 82
    functionDepth: 0
    functionLinenumber: 82
    functionLinenumberEnd: 85
    functionName: operator()(const Bind2DNSRecord& a, const DNSName& b) const
    functionSourceFile: /src/pdns/modules/bindbackend/bindbackend2.hh
    functionUses: 0
    functionsReached:
    - qname::canonCompare
    linkageType: ''
    returnType: bool
    signature: bool operator()(const Bind2DNSRecord& a, const DNSName& b) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: qname::canonCompare
      Src: /src/pdns/modules/bindbackend/bindbackend2.hh:88,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' a'
    - ' b'
    argTypes:
    - Bind2DNSRecord
    - Bind2DNSRecord
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 86
    functionDepth: 0
    functionLinenumber: 86
    functionLinenumberEnd: 89
    functionName: operator()(const Bind2DNSRecord& a, const Bind2DNSRecord& b) const
    functionSourceFile: /src/pdns/modules/bindbackend/bindbackend2.hh
    functionUses: 0
    functionsReached:
    - qname::canonCompare
    linkageType: ''
    returnType: bool
    signature: bool operator()(const Bind2DNSRecord& a, const Bind2DNSRecord& b) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 111
      start: 111
    functionDepth: 0
    functionLinenumber: 111
    functionLinenumberEnd: 111
    functionName: LookButDontTouch::LookButDontTouch
    functionSourceFile: /src/pdns/modules/bindbackend/bindbackend2.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void LookButDontTouch()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/modules/bindbackend/bindbackend2.hh:113,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 1
    argNames:
    - ' records'
    argTypes:
    - shared_ptr<T>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 115
      start: 112
    functionDepth: 0
    functionLinenumber: 112
    functionLinenumberEnd: 115
    functionName: LookButDontTouch::LookButDontTouch
    functionSourceFile: /src/pdns/modules/bindbackend/bindbackend2.hh
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void LookButDontTouch(shared_ptr<T>&& records)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 117
    functionDepth: 0
    functionLinenumber: 117
    functionLinenumberEnd: 120
    functionName: LookButDontTouch::get
    functionSourceFile: /src/pdns/modules/bindbackend/bindbackend2.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: shared_ptr<const T>
    signature: shared_ptr<const T> get()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/modules/bindbackend/bindbackend2.hh:127,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 122
    functionDepth: 0
    functionLinenumber: 122
    functionLinenumberEnd: 128
    functionName: LookButDontTouch::getEntriesCount
    functionSourceFile: /src/pdns/modules/bindbackend/bindbackend2.hh
    functionUses: 0
    functionsReached:
    - size
    linkageType: ''
    returnType: size_t
    signature: size_t getEntriesCount() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 148
      start: 145
    functionDepth: 0
    functionLinenumber: 145
    functionLinenumberEnd: 148
    functionName: BB2DomainInfo::getCheckInterval
    functionSourceFile: /src/pdns/modules/bindbackend/bindbackend2.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: time_t
    signature: time_t getCheckInterval() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: front
      Src: /src/pdns/modules/bindbackend/bindbackend2.hh:167,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 167
      start: 167
    functionDepth: 0
    functionLinenumber: 167
    functionLinenumberEnd: 167
    functionName: '& main_filename() const'
    functionSourceFile: /src/pdns/modules/bindbackend/bindbackend2.hh
    functionUses: 0
    functionsReached:
    - front
    linkageType: ''
    returnType: std::string
    signature: std::string & main_filename() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 260
      start: 260
    functionDepth: 0
    functionLinenumber: 260
    functionLinenumberEnd: 260
    functionName: Bind2Backend::handle::handle
    functionSourceFile: /src/pdns/modules/bindbackend/bindbackend2.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void handle()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 261
      start: 261
    functionDepth: 0
    functionLinenumber: 261
    functionLinenumberEnd: 261
    functionName: Bind2Backend::handle::handle
    functionSourceFile: /src/pdns/modules/bindbackend/bindbackend2.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void handle(const handle&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 262
      start: 262
    functionDepth: 0
    functionLinenumber: 262
    functionLinenumberEnd: 262
    functionName: '& operator=(const handle&)'
    functionSourceFile: /src/pdns/modules/bindbackend/bindbackend2.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: handle
    signature: handle & operator=(const handle&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - log
    argTypes:
    - Logr::log_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 264
      start: 264
    functionDepth: 0
    functionLinenumber: 264
    functionLinenumberEnd: 264
    functionName: Bind2Backend::handle::setSLog
    functionSourceFile: /src/pdns/modules/bindbackend/bindbackend2.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void setSLog(Logr::log_t log)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: getArg
      Src: /src/pdns/modules/bindbackend/binddnssec.cc:34,1
    - Dst: runtime_error
      Src: /src/pdns/modules/bindbackend/binddnssec.cc:35,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 32
    functionDepth: 0
    functionLinenumber: 32
    functionLinenumberEnd: 37
    functionName: Bind2Backend::setupDNSSEC
    functionSourceFile: /src/pdns/modules/bindbackend/binddnssec.cc
    functionUses: 0
    functionsReached:
    - getArg
    - runtime_error
    linkageType: ''
    returnType: void
    signature: void Bind2Backend::setupDNSSEC()
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 39
    functionDepth: 0
    functionLinenumber: 39
    functionLinenumberEnd: 46
    functionName: Bind2Backend::getCapabilities
    functionSourceFile: /src/pdns/modules/bindbackend/binddnssec.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int Bind2Backend::getCapabilities()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 48
    functionDepth: 0
    functionLinenumber: 48
    functionLinenumberEnd: 51
    functionName: Bind2Backend::getNSEC3PARAM
    functionSourceFile: /src/pdns/modules/bindbackend/binddnssec.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool Bind2Backend::getNSEC3PARAM(const ZoneName& /* name */, NSEC3PARAMRecordContent*
      /* ns3p */)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 53
    functionDepth: 0
    functionLinenumber: 53
    functionLinenumberEnd: 56
    functionName: Bind2Backend::getNSEC3PARAMuncached
    functionSourceFile: /src/pdns/modules/bindbackend/binddnssec.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool Bind2Backend::getNSEC3PARAMuncached(const ZoneName& /* name */,
      NSEC3PARAMRecordContent* /* ns3p */)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 58
    functionDepth: 0
    functionLinenumber: 58
    functionLinenumberEnd: 61
    functionName: Bind2Backend::getAllDomainMetadata
    functionSourceFile: /src/pdns/modules/bindbackend/binddnssec.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool Bind2Backend::getAllDomainMetadata(const ZoneName& /* name */,
      std::map<std::string, std::vector<std::string>>& /* meta */)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 63
    functionDepth: 0
    functionLinenumber: 63
    functionLinenumberEnd: 66
    functionName: Bind2Backend::getDomainMetadata
    functionSourceFile: /src/pdns/modules/bindbackend/binddnssec.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool Bind2Backend::getDomainMetadata(const ZoneName& /* name */, const
      std::string& /* kind */, std::vector<std::string>& /* meta */)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 68
    functionDepth: 0
    functionLinenumber: 68
    functionLinenumberEnd: 71
    functionName: Bind2Backend::setDomainMetadata
    functionSourceFile: /src/pdns/modules/bindbackend/binddnssec.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool Bind2Backend::setDomainMetadata(const ZoneName& /* name */, const
      std::string& /* kind */, const std::vector<std::string>& /* meta */)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 73
    functionDepth: 0
    functionLinenumber: 73
    functionLinenumberEnd: 76
    functionName: Bind2Backend::getDomainKeys
    functionSourceFile: /src/pdns/modules/bindbackend/binddnssec.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool Bind2Backend::getDomainKeys(const ZoneName& /* name */, std::vector<KeyData>&
      /* keys */)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 78
    functionDepth: 0
    functionLinenumber: 78
    functionLinenumberEnd: 81
    functionName: Bind2Backend::removeDomainKey
    functionSourceFile: /src/pdns/modules/bindbackend/binddnssec.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool Bind2Backend::removeDomainKey(const ZoneName& /* name */, unsigned
      int /* id */)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 83
    functionDepth: 0
    functionLinenumber: 83
    functionLinenumberEnd: 86
    functionName: Bind2Backend::addDomainKey
    functionSourceFile: /src/pdns/modules/bindbackend/binddnssec.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool Bind2Backend::addDomainKey(const ZoneName& /* name */, const KeyData&
      /* key */, int64_t& /* id */)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 88
    functionDepth: 0
    functionLinenumber: 88
    functionLinenumberEnd: 91
    functionName: Bind2Backend::activateDomainKey
    functionSourceFile: /src/pdns/modules/bindbackend/binddnssec.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool Bind2Backend::activateDomainKey(const ZoneName& /* name */, unsigned
      int /* id */)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 93
    functionDepth: 0
    functionLinenumber: 93
    functionLinenumberEnd: 96
    functionName: Bind2Backend::deactivateDomainKey
    functionSourceFile: /src/pdns/modules/bindbackend/binddnssec.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool Bind2Backend::deactivateDomainKey(const ZoneName& /* name */,
      unsigned int /* id */)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 98
    functionDepth: 0
    functionLinenumber: 98
    functionLinenumberEnd: 101
    functionName: Bind2Backend::publishDomainKey
    functionSourceFile: /src/pdns/modules/bindbackend/binddnssec.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool Bind2Backend::publishDomainKey(const ZoneName& /* name */, unsigned
      int /* id */)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 103
    functionDepth: 0
    functionLinenumber: 103
    functionLinenumberEnd: 106
    functionName: Bind2Backend::unpublishDomainKey
    functionSourceFile: /src/pdns/modules/bindbackend/binddnssec.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool Bind2Backend::unpublishDomainKey(const ZoneName& /* name */, unsigned
      int /* id */)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 111
      start: 108
    functionDepth: 0
    functionLinenumber: 108
    functionLinenumberEnd: 111
    functionName: Bind2Backend::getTSIGKey
    functionSourceFile: /src/pdns/modules/bindbackend/binddnssec.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool Bind2Backend::getTSIGKey(const DNSName& /* name */, DNSName& /*
      algorithm */, string& /* content */)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 113
    functionDepth: 0
    functionLinenumber: 113
    functionLinenumberEnd: 116
    functionName: Bind2Backend::setTSIGKey
    functionSourceFile: /src/pdns/modules/bindbackend/binddnssec.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool Bind2Backend::setTSIGKey(const DNSName& /* name */, const DNSName&
      /* algorithm */, const string& /* content */)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 118
    functionDepth: 0
    functionLinenumber: 118
    functionLinenumberEnd: 121
    functionName: Bind2Backend::deleteTSIGKey
    functionSourceFile: /src/pdns/modules/bindbackend/binddnssec.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool Bind2Backend::deleteTSIGKey(const DNSName& /* name */)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 123
    functionDepth: 0
    functionLinenumber: 123
    functionLinenumberEnd: 126
    functionName: Bind2Backend::getTSIGKeys
    functionSourceFile: /src/pdns/modules/bindbackend/binddnssec.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool Bind2Backend::getTSIGKeys(std::vector<struct TSIGKey>& /* keys
      */)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 130
      start: 128
    functionDepth: 0
    functionLinenumber: 128
    functionLinenumberEnd: 130
    functionName: Bind2Backend::setupStatements
    functionSourceFile: /src/pdns/modules/bindbackend/binddnssec.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Bind2Backend::setupStatements()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 134
      start: 132
    functionDepth: 0
    functionLinenumber: 132
    functionLinenumberEnd: 134
    functionName: Bind2Backend::freeStatements
    functionSourceFile: /src/pdns/modules/bindbackend/binddnssec.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Bind2Backend::freeStatements()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - query
    - ','
    - row
    - ','
    - num
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 141
    functionDepth: 0
    functionLinenumber: 141
    functionLinenumberEnd: 147
    functionName: ASSERT_ROW_COLUMNS
    functionSourceFile: /src/pdns/modules/bindbackend/binddnssec.cc
    functionUses: 19
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ASSERT_ROW_COLUMNS(query, row, num)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: getArg
      Src: /src/pdns/modules/bindbackend/binddnssec.cc:150,1
    - Dst: std::make_shared<SSQLite3>
      Src: /src/pdns/modules/bindbackend/binddnssec.cc:153,1
    - Dst: getArg
      Src: /src/pdns/modules/bindbackend/binddnssec.cc:153,1
    - Dst: getArg
      Src: /src/pdns/modules/bindbackend/binddnssec.cc:153,1
    - Dst: Bind2Backend::setupStatements
      Src: /src/pdns/modules/bindbackend/binddnssec.cc:154,1
    - Dst: runtime_error
      Src: /src/pdns/modules/bindbackend/binddnssec.cc:158,1
    - Dst: txtReason
      Src: /src/pdns/modules/bindbackend/binddnssec.cc:158,1
    - Dst: setLog
      Src: /src/pdns/modules/bindbackend/binddnssec.cc:161,1
    - Dst: arg
      Src: /src/pdns/modules/bindbackend/binddnssec.cc:161,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 162
      start: 148
    functionDepth: 1
    functionLinenumber: 148
    functionLinenumberEnd: 162
    functionName: Bind2Backend::setupDNSSEC
    functionSourceFile: /src/pdns/modules/bindbackend/binddnssec.cc
    functionUses: 0
    functionsReached:
    - Bind2Backend::setupStatements
    - getArg
    - runtime_error
    - std::make_shared<SSQLite3>
    - setLog
    - txtReason
    - arg
    linkageType: ''
    returnType: void
    signature: void Bind2Backend::setupDNSSEC()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: prepare
      Src: /src/pdns/modules/bindbackend/binddnssec.cc:166,1
    - Dst: prepare
      Src: /src/pdns/modules/bindbackend/binddnssec.cc:167,1
    - Dst: prepare
      Src: /src/pdns/modules/bindbackend/binddnssec.cc:168,1
    - Dst: prepare
      Src: /src/pdns/modules/bindbackend/binddnssec.cc:169,1
    - Dst: prepare
      Src: /src/pdns/modules/bindbackend/binddnssec.cc:170,1
    - Dst: prepare
      Src: /src/pdns/modules/bindbackend/binddnssec.cc:171,1
    - Dst: prepare
      Src: /src/pdns/modules/bindbackend/binddnssec.cc:172,1
    - Dst: prepare
      Src: /src/pdns/modules/bindbackend/binddnssec.cc:173,1
    - Dst: prepare
      Src: /src/pdns/modules/bindbackend/binddnssec.cc:174,1
    - Dst: prepare
      Src: /src/pdns/modules/bindbackend/binddnssec.cc:175,1
    - Dst: prepare
      Src: /src/pdns/modules/bindbackend/binddnssec.cc:176,1
    - Dst: prepare
      Src: /src/pdns/modules/bindbackend/binddnssec.cc:177,1
    - Dst: prepare
      Src: /src/pdns/modules/bindbackend/binddnssec.cc:178,1
    - Dst: prepare
      Src: /src/pdns/modules/bindbackend/binddnssec.cc:179,1
    - Dst: prepare
      Src: /src/pdns/modules/bindbackend/binddnssec.cc:180,1
    - Dst: prepare
      Src: /src/pdns/modules/bindbackend/binddnssec.cc:181,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 182
      start: 164
    functionDepth: 0
    functionLinenumber: 164
    functionLinenumberEnd: 182
    functionName: Bind2Backend::setupStatements
    functionSourceFile: /src/pdns/modules/bindbackend/binddnssec.cc
    functionUses: 1
    functionsReached:
    - prepare
    linkageType: ''
    returnType: void
    signature: void Bind2Backend::setupStatements()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: reset
      Src: /src/pdns/modules/bindbackend/binddnssec.cc:186,1
    - Dst: reset
      Src: /src/pdns/modules/bindbackend/binddnssec.cc:187,1
    - Dst: reset
      Src: /src/pdns/modules/bindbackend/binddnssec.cc:188,1
    - Dst: reset
      Src: /src/pdns/modules/bindbackend/binddnssec.cc:189,1
    - Dst: reset
      Src: /src/pdns/modules/bindbackend/binddnssec.cc:190,1
    - Dst: reset
      Src: /src/pdns/modules/bindbackend/binddnssec.cc:191,1
    - Dst: reset
      Src: /src/pdns/modules/bindbackend/binddnssec.cc:192,1
    - Dst: reset
      Src: /src/pdns/modules/bindbackend/binddnssec.cc:193,1
    - Dst: reset
      Src: /src/pdns/modules/bindbackend/binddnssec.cc:194,1
    - Dst: reset
      Src: /src/pdns/modules/bindbackend/binddnssec.cc:195,1
    - Dst: reset
      Src: /src/pdns/modules/bindbackend/binddnssec.cc:196,1
    - Dst: reset
      Src: /src/pdns/modules/bindbackend/binddnssec.cc:197,1
    - Dst: reset
      Src: /src/pdns/modules/bindbackend/binddnssec.cc:198,1
    - Dst: reset
      Src: /src/pdns/modules/bindbackend/binddnssec.cc:199,1
    - Dst: reset
      Src: /src/pdns/modules/bindbackend/binddnssec.cc:200,1
    - Dst: reset
      Src: /src/pdns/modules/bindbackend/binddnssec.cc:201,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 202
      start: 184
    functionDepth: 0
    functionLinenumber: 184
    functionLinenumberEnd: 202
    functionName: Bind2Backend::freeStatements
    functionSourceFile: /src/pdns/modules/bindbackend/binddnssec.cc
    functionUses: 0
    functionsReached:
    - reset
    linkageType: ''
    returnType: void
    signature: void Bind2Backend::freeStatements()
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 211
      start: 204
    functionDepth: 0
    functionLinenumber: 204
    functionLinenumberEnd: 211
    functionName: Bind2Backend::getCapabilities
    functionSourceFile: /src/pdns/modules/bindbackend/binddnssec.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int Bind2Backend::getCapabilities()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: BB2DomainInfo::BB2DomainInfo
      Src: /src/pdns/modules/bindbackend/binddnssec.cc:216,1
    - Dst: Bind2Backend::safeGetBBDomainInfo
      Src: /src/pdns/modules/bindbackend/binddnssec.cc:217,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - ' name'
    - ns3p
    argTypes:
    - ZoneName
    - NSEC3PARAMRecordContent*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 225
      start: 214
    functionDepth: 1
    functionLinenumber: 214
    functionLinenumberEnd: 225
    functionName: Bind2Backend::getNSEC3PARAM
    functionSourceFile: /src/pdns/modules/bindbackend/binddnssec.cc
    functionUses: 0
    functionsReached:
    - Bind2Backend::safeGetBBDomainInfo
    - BB2DomainInfo::BB2DomainInfo
    linkageType: ''
    returnType: bool
    signature: bool Bind2Backend::getNSEC3PARAM(const ZoneName& name, NSEC3PARAMRecordContent*
      ns3p)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: Bind2Backend::getDomainMetadata
      Src: /src/pdns/modules/bindbackend/binddnssec.cc:234,1
    - Dst: vector::empty
      Src: /src/pdns/modules/bindbackend/binddnssec.cc:235,1
    - Dst: vector::begin
      Src: /src/pdns/modules/bindbackend/binddnssec.cc:236,1
    - Dst: arg
      Src: /src/pdns/modules/bindbackend/binddnssec.cc:240,1
    - Dst: std::dynamic_pointer_cast<NSEC3PARAMRecordContent>
      Src: /src/pdns/modules/bindbackend/binddnssec.cc:242,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/modules/bindbackend/binddnssec.cc:242,1
    - Dst: SLOG
      Src: /src/pdns/modules/bindbackend/binddnssec.cc:247,1
    - Dst: info
      Src: /src/pdns/modules/bindbackend/binddnssec.cc:248,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/bindbackend/binddnssec.cc:248,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/bindbackend/binddnssec.cc:248,1
    - Dst: SLOG
      Src: /src/pdns/modules/bindbackend/binddnssec.cc:252,1
    - Dst: std::to_string
      Src: /src/pdns/modules/bindbackend/binddnssec.cc:252,1
    - Dst: info
      Src: /src/pdns/modules/bindbackend/binddnssec.cc:253,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/bindbackend/binddnssec.cc:253,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/bindbackend/binddnssec.cc:253,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 2
    argNames:
    - ' name'
    - ns3p
    argTypes:
    - ZoneName
    - NSEC3PARAMRecordContent*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 259
      start: 227
    functionDepth: 1
    functionLinenumber: 227
    functionLinenumberEnd: 259
    functionName: Bind2Backend::getNSEC3PARAMuncached
    functionSourceFile: /src/pdns/modules/bindbackend/binddnssec.cc
    functionUses: 0
    functionsReached:
    - Bind2Backend::getDomainMetadata
    - vector::begin
    - std::dynamic_pointer_cast<NSEC3PARAMRecordContent>
    - SLOG
    - std::to_string
    - Logging::Loggable
    - info
    - vector::empty
    - DNSRecordContent::make
    - arg
    linkageType: ''
    returnType: bool
    signature: bool Bind2Backend::getNSEC3PARAMuncached(const ZoneName& name, NSEC3PARAMRecordContent*
      ns3p)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: bind
      Src: /src/pdns/modules/bindbackend/binddnssec.cc:267,1
    - Dst: hasNextRow
      Src: /src/pdns/modules/bindbackend/binddnssec.cc:270,1
    - Dst: nextRow
      Src: /src/pdns/modules/bindbackend/binddnssec.cc:271,1
    - Dst: push_back
      Src: /src/pdns/modules/bindbackend/binddnssec.cc:272,1
    - Dst: reset
      Src: /src/pdns/modules/bindbackend/binddnssec.cc:275,1
    - Dst: PDNSException
      Src: /src/pdns/modules/bindbackend/binddnssec.cc:278,1
    - Dst: txtReason
      Src: /src/pdns/modules/bindbackend/binddnssec.cc:278,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 2
    argNames:
    - ' name'
    - ' meta'
    argTypes:
    - ZoneName
    - std::map<std::string, std::vector<std::string>>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 281
      start: 261
    functionDepth: 0
    functionLinenumber: 261
    functionLinenumberEnd: 281
    functionName: Bind2Backend::getAllDomainMetadata
    functionSourceFile: /src/pdns/modules/bindbackend/binddnssec.cc
    functionUses: 0
    functionsReached:
    - reset
    - nextRow
    - push_back
    - PDNSException
    - bind
    - hasNextRow
    - txtReason
    linkageType: ''
    returnType: bool
    signature: bool Bind2Backend::getAllDomainMetadata(const ZoneName& name, std::map<std::string,
      std::vector<std::string>>& meta)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: bind
      Src: /src/pdns/modules/bindbackend/binddnssec.cc:289,1
    - Dst: hasNextRow
      Src: /src/pdns/modules/bindbackend/binddnssec.cc:292,1
    - Dst: nextRow
      Src: /src/pdns/modules/bindbackend/binddnssec.cc:293,1
    - Dst: push_back
      Src: /src/pdns/modules/bindbackend/binddnssec.cc:294,1
    - Dst: reset
      Src: /src/pdns/modules/bindbackend/binddnssec.cc:297,1
    - Dst: PDNSException
      Src: /src/pdns/modules/bindbackend/binddnssec.cc:300,1
    - Dst: txtReason
      Src: /src/pdns/modules/bindbackend/binddnssec.cc:300,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 3
    argNames:
    - ' name'
    - ' kind'
    - ' meta'
    argTypes:
    - ZoneName
    - std::string
    - std::vector<std::string>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 303
      start: 283
    functionDepth: 0
    functionLinenumber: 283
    functionLinenumberEnd: 303
    functionName: Bind2Backend::getDomainMetadata
    functionSourceFile: /src/pdns/modules/bindbackend/binddnssec.cc
    functionUses: 1
    functionsReached:
    - reset
    - nextRow
    - push_back
    - PDNSException
    - bind
    - hasNextRow
    - txtReason
    linkageType: ''
    returnType: bool
    signature: bool Bind2Backend::getDomainMetadata(const ZoneName& name, const std::string&
      kind, std::vector<std::string>& meta)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: bind
      Src: /src/pdns/modules/bindbackend/binddnssec.cc:311,1
    - Dst: empty
      Src: /src/pdns/modules/bindbackend/binddnssec.cc:312,1
    - Dst: bind
      Src: /src/pdns/modules/bindbackend/binddnssec.cc:314,1
    - Dst: PDNSException
      Src: /src/pdns/modules/bindbackend/binddnssec.cc:319,1
    - Dst: txtReason
      Src: /src/pdns/modules/bindbackend/binddnssec.cc:319,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 13
    argCount: 3
    argNames:
    - ' name'
    - ' kind'
    - ' meta'
    argTypes:
    - ZoneName
    - std::string
    - std::vector<std::string>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 322
      start: 305
    functionDepth: 0
    functionLinenumber: 305
    functionLinenumberEnd: 322
    functionName: Bind2Backend::setDomainMetadata
    functionSourceFile: /src/pdns/modules/bindbackend/binddnssec.cc
    functionUses: 0
    functionsReached:
    - empty
    - PDNSException
    - bind
    - txtReason
    linkageType: ''
    returnType: bool
    signature: bool Bind2Backend::setDomainMetadata(const ZoneName& name, const std::string&
      kind, const std::vector<std::string>& meta)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: bind
      Src: /src/pdns/modules/bindbackend/binddnssec.cc:330,1
    - Dst: hasNextRow
      Src: /src/pdns/modules/bindbackend/binddnssec.cc:334,1
    - Dst: nextRow
      Src: /src/pdns/modules/bindbackend/binddnssec.cc:335,1
    - Dst: pdns::checked_stoi_into
      Src: /src/pdns/modules/bindbackend/binddnssec.cc:336,1
    - Dst: pdns::checked_stoi_into
      Src: /src/pdns/modules/bindbackend/binddnssec.cc:337,1
    - Dst: push_back
      Src: /src/pdns/modules/bindbackend/binddnssec.cc:341,1
    - Dst: reset
      Src: /src/pdns/modules/bindbackend/binddnssec.cc:344,1
    - Dst: PDNSException
      Src: /src/pdns/modules/bindbackend/binddnssec.cc:347,1
    - Dst: txtReason
      Src: /src/pdns/modules/bindbackend/binddnssec.cc:347,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 2
    argNames:
    - ' name'
    - ' keys'
    argTypes:
    - ZoneName
    - std::vector<KeyData>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 350
      start: 324
    functionDepth: 0
    functionLinenumber: 324
    functionLinenumberEnd: 350
    functionName: Bind2Backend::getDomainKeys
    functionSourceFile: /src/pdns/modules/bindbackend/binddnssec.cc
    functionUses: 0
    functionsReached:
    - reset
    - nextRow
    - push_back
    - PDNSException
    - bind
    - hasNextRow
    - txtReason
    - pdns::checked_stoi_into
    linkageType: ''
    returnType: bool
    signature: bool Bind2Backend::getDomainKeys(const ZoneName& name, std::vector<KeyData>&
      keys)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: bind
      Src: /src/pdns/modules/bindbackend/binddnssec.cc:358,1
    - Dst: PDNSException
      Src: /src/pdns/modules/bindbackend/binddnssec.cc:361,1
    - Dst: txtReason
      Src: /src/pdns/modules/bindbackend/binddnssec.cc:361,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 2
    argNames:
    - ' name'
    - keyId
    argTypes:
    - ZoneName
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 364
      start: 352
    functionDepth: 0
    functionLinenumber: 352
    functionLinenumberEnd: 364
    functionName: Bind2Backend::removeDomainKey
    functionSourceFile: /src/pdns/modules/bindbackend/binddnssec.cc
    functionUses: 0
    functionsReached:
    - PDNSException
    - txtReason
    - bind
    linkageType: ''
    returnType: bool
    signature: bool Bind2Backend::removeDomainKey(const ZoneName& name, unsigned int
      keyId)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: bind
      Src: /src/pdns/modules/bindbackend/binddnssec.cc:372,1
    - Dst: PDNSException
      Src: /src/pdns/modules/bindbackend/binddnssec.cc:375,1
    - Dst: txtReason
      Src: /src/pdns/modules/bindbackend/binddnssec.cc:375,1
    - Dst: execute
      Src: /src/pdns/modules/bindbackend/binddnssec.cc:379,1
    - Dst: hasNextRow
      Src: /src/pdns/modules/bindbackend/binddnssec.cc:380,1
    - Dst: nextRow
      Src: /src/pdns/modules/bindbackend/binddnssec.cc:385,1
    - Dst: ASSERT_ROW_COLUMNS
      Src: /src/pdns/modules/bindbackend/binddnssec.cc:386,1
    - Dst: pdns::checked_stoi_into
      Src: /src/pdns/modules/bindbackend/binddnssec.cc:387,1
    - Dst: reset
      Src: /src/pdns/modules/bindbackend/binddnssec.cc:388,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 26
    argCount: 3
    argNames:
    - ' name'
    - ' key'
    - ' keyId'
    argTypes:
    - ZoneName
    - KeyData
    - int64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 399
      start: 366
    functionDepth: 0
    functionLinenumber: 366
    functionLinenumberEnd: 399
    functionName: Bind2Backend::addDomainKey
    functionSourceFile: /src/pdns/modules/bindbackend/binddnssec.cc
    functionUses: 0
    functionsReached:
    - reset
    - nextRow
    - PDNSException
    - ASSERT_ROW_COLUMNS
    - bind
    - hasNextRow
    - execute
    - txtReason
    - pdns::checked_stoi_into
    linkageType: ''
    returnType: bool
    signature: bool Bind2Backend::addDomainKey(const ZoneName& name, const KeyData&
      key, int64_t& keyId)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: bind
      Src: /src/pdns/modules/bindbackend/binddnssec.cc:407,1
    - Dst: PDNSException
      Src: /src/pdns/modules/bindbackend/binddnssec.cc:410,1
    - Dst: txtReason
      Src: /src/pdns/modules/bindbackend/binddnssec.cc:410,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 2
    argNames:
    - ' name'
    - keyId
    argTypes:
    - ZoneName
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 413
      start: 401
    functionDepth: 0
    functionLinenumber: 401
    functionLinenumberEnd: 413
    functionName: Bind2Backend::activateDomainKey
    functionSourceFile: /src/pdns/modules/bindbackend/binddnssec.cc
    functionUses: 0
    functionsReached:
    - PDNSException
    - txtReason
    - bind
    linkageType: ''
    returnType: bool
    signature: bool Bind2Backend::activateDomainKey(const ZoneName& name, unsigned
      int keyId)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: bind
      Src: /src/pdns/modules/bindbackend/binddnssec.cc:421,1
    - Dst: PDNSException
      Src: /src/pdns/modules/bindbackend/binddnssec.cc:424,1
    - Dst: txtReason
      Src: /src/pdns/modules/bindbackend/binddnssec.cc:424,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 2
    argNames:
    - ' name'
    - keyId
    argTypes:
    - ZoneName
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 427
      start: 415
    functionDepth: 0
    functionLinenumber: 415
    functionLinenumberEnd: 427
    functionName: Bind2Backend::deactivateDomainKey
    functionSourceFile: /src/pdns/modules/bindbackend/binddnssec.cc
    functionUses: 0
    functionsReached:
    - PDNSException
    - txtReason
    - bind
    linkageType: ''
    returnType: bool
    signature: bool Bind2Backend::deactivateDomainKey(const ZoneName& name, unsigned
      int keyId)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: bind
      Src: /src/pdns/modules/bindbackend/binddnssec.cc:435,1
    - Dst: PDNSException
      Src: /src/pdns/modules/bindbackend/binddnssec.cc:438,1
    - Dst: txtReason
      Src: /src/pdns/modules/bindbackend/binddnssec.cc:438,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 2
    argNames:
    - ' name'
    - keyId
    argTypes:
    - ZoneName
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 441
      start: 429
    functionDepth: 0
    functionLinenumber: 429
    functionLinenumberEnd: 441
    functionName: Bind2Backend::publishDomainKey
    functionSourceFile: /src/pdns/modules/bindbackend/binddnssec.cc
    functionUses: 0
    functionsReached:
    - PDNSException
    - txtReason
    - bind
    linkageType: ''
    returnType: bool
    signature: bool Bind2Backend::publishDomainKey(const ZoneName& name, unsigned
      int keyId)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: bind
      Src: /src/pdns/modules/bindbackend/binddnssec.cc:449,1
    - Dst: PDNSException
      Src: /src/pdns/modules/bindbackend/binddnssec.cc:452,1
    - Dst: txtReason
      Src: /src/pdns/modules/bindbackend/binddnssec.cc:452,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 2
    argNames:
    - ' name'
    - keyId
    argTypes:
    - ZoneName
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 455
      start: 443
    functionDepth: 0
    functionLinenumber: 443
    functionLinenumberEnd: 455
    functionName: Bind2Backend::unpublishDomainKey
    functionSourceFile: /src/pdns/modules/bindbackend/binddnssec.cc
    functionUses: 0
    functionsReached:
    - PDNSException
    - txtReason
    - bind
    linkageType: ''
    returnType: bool
    signature: bool Bind2Backend::unpublishDomainKey(const ZoneName& name, unsigned
      int keyId)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: bind
      Src: /src/pdns/modules/bindbackend/binddnssec.cc:463,1
    - Dst: hasNextRow
      Src: /src/pdns/modules/bindbackend/binddnssec.cc:466,1
    - Dst: nextRow
      Src: /src/pdns/modules/bindbackend/binddnssec.cc:467,1
    - Dst: SSqlStatement::row_t::size
      Src: /src/pdns/modules/bindbackend/binddnssec.cc:468,1
    - Dst: empty
      Src: /src/pdns/modules/bindbackend/binddnssec.cc:468,1
    - Dst: DNSName
      Src: /src/pdns/modules/bindbackend/binddnssec.cc:468,1
    - Dst: DNSName
      Src: /src/pdns/modules/bindbackend/binddnssec.cc:469,1
    - Dst: reset
      Src: /src/pdns/modules/bindbackend/binddnssec.cc:474,1
    - Dst: PDNSException
      Src: /src/pdns/modules/bindbackend/binddnssec.cc:477,1
    - Dst: txtReason
      Src: /src/pdns/modules/bindbackend/binddnssec.cc:477,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 17
    argCount: 3
    argNames:
    - ' name'
    - ' algorithm'
    - ' content'
    argTypes:
    - DNSName
    - DNSName
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 480
      start: 457
    functionDepth: 0
    functionLinenumber: 457
    functionLinenumberEnd: 480
    functionName: Bind2Backend::getTSIGKey
    functionSourceFile: /src/pdns/modules/bindbackend/binddnssec.cc
    functionUses: 0
    functionsReached:
    - reset
    - nextRow
    - PDNSException
    - bind
    - DNSName
    - hasNextRow
    - SSqlStatement::row_t::size
    - empty
    - txtReason
    linkageType: ''
    returnType: bool
    signature: bool Bind2Backend::getTSIGKey(const DNSName& name, DNSName& algorithm,
      string& content)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: bind
      Src: /src/pdns/modules/bindbackend/binddnssec.cc:488,1
    - Dst: PDNSException
      Src: /src/pdns/modules/bindbackend/binddnssec.cc:491,1
    - Dst: txtReason
      Src: /src/pdns/modules/bindbackend/binddnssec.cc:491,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 3
    argNames:
    - ' name'
    - ' algorithm'
    - ' content'
    argTypes:
    - DNSName
    - DNSName
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 494
      start: 482
    functionDepth: 0
    functionLinenumber: 482
    functionLinenumberEnd: 494
    functionName: Bind2Backend::setTSIGKey
    functionSourceFile: /src/pdns/modules/bindbackend/binddnssec.cc
    functionUses: 0
    functionsReached:
    - PDNSException
    - txtReason
    - bind
    linkageType: ''
    returnType: bool
    signature: bool Bind2Backend::setTSIGKey(const DNSName& name, const DNSName& algorithm,
      const string& content)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: bind
      Src: /src/pdns/modules/bindbackend/binddnssec.cc:502,1
    - Dst: PDNSException
      Src: /src/pdns/modules/bindbackend/binddnssec.cc:505,1
    - Dst: txtReason
      Src: /src/pdns/modules/bindbackend/binddnssec.cc:505,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 1
    argNames:
    - ' name'
    argTypes:
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 508
      start: 496
    functionDepth: 0
    functionLinenumber: 496
    functionLinenumberEnd: 508
    functionName: Bind2Backend::deleteTSIGKey
    functionSourceFile: /src/pdns/modules/bindbackend/binddnssec.cc
    functionUses: 0
    functionsReached:
    - PDNSException
    - txtReason
    - bind
    linkageType: ''
    returnType: bool
    signature: bool Bind2Backend::deleteTSIGKey(const DNSName& name)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: execute
      Src: /src/pdns/modules/bindbackend/binddnssec.cc:516,1
    - Dst: hasNextRow
      Src: /src/pdns/modules/bindbackend/binddnssec.cc:519,1
    - Dst: nextRow
      Src: /src/pdns/modules/bindbackend/binddnssec.cc:520,1
    - Dst: DNSName
      Src: /src/pdns/modules/bindbackend/binddnssec.cc:522,1
    - Dst: DNSName
      Src: /src/pdns/modules/bindbackend/binddnssec.cc:523,1
    - Dst: push_back
      Src: /src/pdns/modules/bindbackend/binddnssec.cc:525,1
    - Dst: reset
      Src: /src/pdns/modules/bindbackend/binddnssec.cc:528,1
    - Dst: PDNSException
      Src: /src/pdns/modules/bindbackend/binddnssec.cc:531,1
    - Dst: txtReason
      Src: /src/pdns/modules/bindbackend/binddnssec.cc:531,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 1
    argNames:
    - ' keys'
    argTypes:
    - std::vector<struct TSIGKey>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 534
      start: 510
    functionDepth: 0
    functionLinenumber: 510
    functionLinenumberEnd: 534
    functionName: Bind2Backend::getTSIGKeys
    functionSourceFile: /src/pdns/modules/bindbackend/binddnssec.cc
    functionUses: 0
    functionsReached:
    - reset
    - nextRow
    - push_back
    - PDNSException
    - DNSName
    - hasNextRow
    - execute
    - txtReason
    linkageType: ''
    returnType: bool
    signature: bool Bind2Backend::getTSIGKeys(std::vector<struct TSIGKey>& keys)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 85
    functionDepth: 0
    functionLinenumber: 85
    functionLinenumberEnd: 91
    functionName: BB2DomainInfo::BB2DomainInfo
    functionSourceFile: /src/pdns/modules/bindbackend/bindbackend2.cc
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void BB2DomainInfo::BB2DomainInfo()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - seconds
    argTypes:
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 93
    functionDepth: 0
    functionLinenumber: 93
    functionLinenumberEnd: 96
    functionName: BB2DomainInfo::setCheckInterval
    functionSourceFile: /src/pdns/modules/bindbackend/bindbackend2.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void BB2DomainInfo::setCheckInterval(time_t seconds)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: time
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:107,1
    - Dst: time
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:110,1
    - Dst: std::all_of
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:113,1
    - Dst: cbegin
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:113,1
    - Dst: cend
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:113,1
    - Dst: BB2DomainInfo::getCtime
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:114,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 115
      start: 98
    functionDepth: 1
    functionLinenumber: 98
    functionLinenumberEnd: 115
    functionName: BB2DomainInfo::current
    functionSourceFile: /src/pdns/modules/bindbackend/bindbackend2.cc
    functionUses: 0
    functionsReached:
    - BB2DomainInfo::getCtime
    - time
    - cbegin
    - cend
    - std::all_of
    linkageType: ''
    returnType: bool
    signature: bool BB2DomainInfo::current()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:121,1
    - Dst: stat
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:121,1
    - Dst: c_str
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:121,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - ' filename'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 125
      start: 117
    functionDepth: 0
    functionLinenumber: 117
    functionLinenumberEnd: 125
    functionName: BB2DomainInfo::getCtime
    functionSourceFile: /src/pdns/modules/bindbackend/bindbackend2.cc
    functionUses: 1
    functionsReached:
    - empty
    - stat
    - c_str
    linkageType: ''
    returnType: time_t
    signature: time_t BB2DomainInfo::getCtime(const std::string& filename)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: stat
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:132,1
    - Dst: first::c_str
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:132,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 137
      start: 127
    functionDepth: 0
    functionLinenumber: 127
    functionLinenumberEnd: 137
    functionName: BB2DomainInfo::updateCtime
    functionSourceFile: /src/pdns/modules/bindbackend/bindbackend2.cc
    functionUses: 0
    functionsReached:
    - first::c_str
    - stat
    linkageType: ''
    returnType: void
    signature: void BB2DomainInfo::updateCtime()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: read_lock
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:142,1
    - Dst: auto::find
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:143,1
    - Dst: auto::end
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:144,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - id
    - bbd
    argTypes:
    - domainid_t
    - BB2DomainInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 149
      start: 140
    functionDepth: 0
    functionLinenumber: 140
    functionLinenumberEnd: 149
    functionName: Bind2Backend::safeGetBBDomainInfo
    functionSourceFile: /src/pdns/modules/bindbackend/bindbackend2.cc
    functionUses: 1
    functionsReached:
    - auto::end
    - read_lock
    - auto::find
    linkageType: ''
    returnType: bool
    signature: bool Bind2Backend::safeGetBBDomainInfo(domainid_t id, BB2DomainInfo*
      bbd)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: read_lock
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:153,1
    - Dst: boost::multi_index::get<NameTag>
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:154,1
    - Dst: find
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:155,1
    - Dst: end
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:156,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - ' name'
    - bbd
    argTypes:
    - ZoneName
    - BB2DomainInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 161
      start: 151
    functionDepth: 0
    functionLinenumber: 151
    functionLinenumberEnd: 161
    functionName: Bind2Backend::safeGetBBDomainInfo
    functionSourceFile: /src/pdns/modules/bindbackend/bindbackend2.cc
    functionUses: 1
    functionsReached:
    - end
    - read_lock
    - boost::multi_index::get<NameTag>
    - find
    linkageType: ''
    returnType: bool
    signature: bool Bind2Backend::safeGetBBDomainInfo(const ZoneName& name, BB2DomainInfo*
      bbd)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: write_lock
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:165,1
    - Dst: boost::multi_index::get<NameTag>
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:167,1
    - Dst: find
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:169,1
    - Dst: end
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:170,1
    - Dst: erase
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:173,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - ' name'
    argTypes:
    - ZoneName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 175
      start: 163
    functionDepth: 0
    functionLinenumber: 163
    functionLinenumberEnd: 175
    functionName: Bind2Backend::safeRemoveBBDomainInfo
    functionSourceFile: /src/pdns/modules/bindbackend/bindbackend2.cc
    functionUses: 0
    functionsReached:
    - end
    - write_lock
    - erase
    - boost::multi_index::get<NameTag>
    - find
    linkageType: ''
    returnType: bool
    signature: bool Bind2Backend::safeRemoveBBDomainInfo(const ZoneName& name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: write_lock
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:179,1
    - Dst: replacing_insert
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:180,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' bbd'
    argTypes:
    - BB2DomainInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 181
      start: 177
    functionDepth: 0
    functionLinenumber: 177
    functionLinenumberEnd: 181
    functionName: Bind2Backend::safePutBBDomainInfo
    functionSourceFile: /src/pdns/modules/bindbackend/bindbackend2.cc
    functionUses: 0
    functionsReached:
    - replacing_insert
    - write_lock
    linkageType: ''
    returnType: void
    signature: void Bind2Backend::safePutBBDomainInfo(const BB2DomainInfo& bbd)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: BB2DomainInfo::BB2DomainInfo
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:186,1
    - Dst: Bind2Backend::safeGetBBDomainInfo
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:187,1
    - Dst: Bind2Backend::safePutBBDomainInfo
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:190,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - id
    - serial
    argTypes:
    - domainid_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 191
      start: 184
    functionDepth: 1
    functionLinenumber: 184
    functionLinenumberEnd: 191
    functionName: Bind2Backend::setNotified
    functionSourceFile: /src/pdns/modules/bindbackend/bindbackend2.cc
    functionUses: 0
    functionsReached:
    - Bind2Backend::safeGetBBDomainInfo
    - Bind2Backend::safePutBBDomainInfo
    - BB2DomainInfo::BB2DomainInfo
    linkageType: ''
    returnType: void
    signature: void Bind2Backend::setNotified(domainid_t id, uint32_t serial)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: BB2DomainInfo::BB2DomainInfo
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:196,1
    - Dst: Bind2Backend::safeGetBBDomainInfo
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:197,1
    - Dst: Bind2Backend::safePutBBDomainInfo
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:199,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - domain_id
    - lastcheck
    argTypes:
    - domainid_t
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 201
      start: 194
    functionDepth: 1
    functionLinenumber: 194
    functionLinenumberEnd: 201
    functionName: Bind2Backend::setLastCheck
    functionSourceFile: /src/pdns/modules/bindbackend/bindbackend2.cc
    functionUses: 0
    functionsReached:
    - Bind2Backend::safeGetBBDomainInfo
    - Bind2Backend::safePutBBDomainInfo
    - BB2DomainInfo::BB2DomainInfo
    linkageType: ''
    returnType: void
    signature: void Bind2Backend::setLastCheck(domainid_t domain_id, time_t lastcheck)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Bind2Backend::setLastCheck
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:205,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - domain_id
    argTypes:
    - domainid_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 206
      start: 203
    functionDepth: 2
    functionLinenumber: 203
    functionLinenumberEnd: 206
    functionName: Bind2Backend::setStale
    functionSourceFile: /src/pdns/modules/bindbackend/bindbackend2.cc
    functionUses: 0
    functionsReached:
    - Bind2Backend::setLastCheck
    linkageType: ''
    returnType: void
    signature: void Bind2Backend::setStale(domainid_t domain_id)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Bind2Backend::setLastCheck
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:210,1
    - Dst: time
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:210,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - domain_id
    argTypes:
    - domainid_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 211
      start: 208
    functionDepth: 2
    functionLinenumber: 208
    functionLinenumberEnd: 211
    functionName: Bind2Backend::setFresh
    functionSourceFile: /src/pdns/modules/bindbackend/bindbackend2.cc
    functionUses: 0
    functionsReached:
    - time
    - Bind2Backend::setLastCheck
    linkageType: ''
    returnType: void
    signature: void Bind2Backend::setFresh(domainid_t domain_id)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: clear
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:216,1
    - Dst: DBException
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:222,1
    - Dst: BB2DomainInfo::BB2DomainInfo
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:227,1
    - Dst: Bind2Backend::safeGetBBDomainInfo
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:228,1
    - Dst: BB2DomainInfo::main_filename
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:229,1
    - Dst: mkstemp
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:230,1
    - Dst: at
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:230,1
    - Dst: DBException
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:232,1
    - Dst: stringerror
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:232,1
    - Dst: std::make_unique<ofstream>
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:235,1
    - Dst: unlink
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:237,1
    - Dst: c_str
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:237,1
    - Dst: close
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:238,1
    - Dst: reset
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:240,1
    - Dst: DBException
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:241,1
    - Dst: stringerror
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:241,1
    - Dst: close
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:243,1
    - Dst: nowTime
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:248,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 31
    argCount: 2
    argNames:
    - ' qname'
    - domainId
    argTypes:
    - ZoneName
    - domainid_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 253
      start: 213
    functionDepth: 1
    functionLinenumber: 213
    functionLinenumberEnd: 253
    functionName: Bind2Backend::startTransaction
    functionSourceFile: /src/pdns/modules/bindbackend/bindbackend2.cc
    functionUses: 0
    functionsReached:
    - mkstemp
    - reset
    - nowTime
    - std::make_unique<ofstream>
    - c_str
    - BB2DomainInfo::main_filename
    - stringerror
    - DBException
    - unlink
    - BB2DomainInfo::BB2DomainInfo
    - clear
    - Bind2Backend::safeGetBBDomainInfo
    - at
    - close
    linkageType: ''
    returnType: bool
    signature: bool Bind2Backend::startTransaction(const ZoneName& qname, domainid_t
      domainId)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: reset
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:262,1
    - Dst: BB2DomainInfo::BB2DomainInfo
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:264,1
    - Dst: Bind2Backend::safeGetBBDomainInfo
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:265,1
    - Dst: rename
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:266,1
    - Dst: c_str
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:266,1
    - Dst: BB2DomainInfo::main_filename
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:266,1
    - Dst: DBException
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:267,1
    - Dst: BB2DomainInfo::main_filename
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:267,1
    - Dst: stringerror
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:267,1
    - Dst: Bind2Backend::queueReloadAndStore
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:269,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 275
      start: 255
    functionDepth: 1
    functionLinenumber: 255
    functionLinenumberEnd: 275
    functionName: Bind2Backend::commitTransaction
    functionSourceFile: /src/pdns/modules/bindbackend/bindbackend2.cc
    functionUses: 0
    functionsReached:
    - rename
    - reset
    - BB2DomainInfo::main_filename
    - stringerror
    - DBException
    - BB2DomainInfo::BB2DomainInfo
    - c_str
    - Bind2Backend::safeGetBBDomainInfo
    - Bind2Backend::queueReloadAndStore
    linkageType: ''
    returnType: bool
    signature: bool Bind2Backend::commitTransaction()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: unlink
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:282,1
    - Dst: c_str
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:282,1
    - Dst: reset
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:283,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 288
      start: 277
    functionDepth: 0
    functionLinenumber: 277
    functionLinenumberEnd: 288
    functionName: Bind2Backend::abortTransaction
    functionSourceFile: /src/pdns/modules/bindbackend/bindbackend2.cc
    functionUses: 0
    functionsReached:
    - c_str
    - unlink
    - reset
    linkageType: ''
    returnType: bool
    signature: bool Bind2Backend::abortTransaction()
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:293,1
    - Dst: size
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:293,1
    - Dst: size
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:297,1
    - Dst: size
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:297,1
    - Dst: at
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:305,1
    - Dst: size
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:313,1
    - Dst: pdns_iequals_ch
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:314,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 19
    argCount: 2
    argNames:
    - ' domain'
    - ' suffix'
    argTypes:
    - string
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 320
      start: 291
    functionDepth: 0
    functionLinenumber: 291
    functionLinenumberEnd: 320
    functionName: endsOn
    functionSourceFile: /src/pdns/modules/bindbackend/bindbackend2.cc
    functionUses: 0
    functionsReached:
    - pdns_iequals_ch
    - at
    - size
    linkageType: ''
    returnType: bool
    signature: bool endsOn(const string& domain, const string& suffix)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: toString
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:325,1
    - Dst: std::string::empty
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:327,1
    - Dst: pdns_iequals
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:330,1
    - Dst: endsOn
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:334,1
    - Dst: string*::size
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:335,1
    - Dst: std::string::size
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:335,1
    - Dst: string*::resize
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:336,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - qname
    - ' zonename'
    argTypes:
    - string*
    - ZoneName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 338
      start: 323
    functionDepth: 2
    functionLinenumber: 323
    functionLinenumberEnd: 338
    functionName: stripDomainSuffix
    functionSourceFile: /src/pdns/modules/bindbackend/bindbackend2.cc
    functionUses: 0
    functionsReached:
    - toString
    - string*::resize
    - pdns_iequals
    - string*::size
    - std::string::empty
    - std::string::size
    - endsOn
    linkageType: ''
    returnType: void
    signature: void stripDomainSuffix(string* qname, const ZoneName& zonename)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:358,1
    - Dst: std::array::data
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:358,1
    - Dst: std::array::size
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:358,1
    - Dst: static_cast<unsigned char>
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:358,1
    - Dst: std::array::data
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:359,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 1
    argNames:
    - ' name'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 367
      start: 345
    functionDepth: 0
    functionLinenumber: 345
    functionLinenumberEnd: 367
    functionName: bindEscape
    functionSourceFile: /src/pdns/modules/bindbackend/bindbackend2.cc
    functionUses: 0
    functionsReached:
    - static_cast<unsigned char>
    - std::array::data
    - snprintf
    - std::array::size
    linkageType: ''
    returnType: std::string
    signature: std::string bindEscape(const std::string& name)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: DBException
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:372,1
    - Dst: empty
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:376,1
    - Dst: bindEscape
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:377,1
    - Dst: qname::toString
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:377,1
    - Dst: qname::isPartOf
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:379,1
    - Dst: qname::makeRelative
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:384,1
    - Dst: bindEscape
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:385,1
    - Dst: DNSName::toStringNoDot
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:385,1
    - Dst: DBException
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:389,1
    - Dst: qname::toLogString
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:389,1
    - Dst: toLogString
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:389,1
    - Dst: DNSRecordContent::make
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:392,1
    - Dst: qtype::getCode
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:392,1
    - Dst: shared_ptr::getZoneRepresentation
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:393,1
    - Dst: qtype::getCode
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:396,1
    - Dst: stripDomainSuffix
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:402,1
    - Dst: qtype::toString
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:406,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 31
    argCount: 1
    argNames:
    - ' rr'
    argTypes:
    - DNSResourceRecord
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 410
      start: 369
    functionDepth: 3
    functionLinenumber: 369
    functionLinenumberEnd: 410
    functionName: Bind2Backend::feedRecord
    functionSourceFile: /src/pdns/modules/bindbackend/bindbackend2.cc
    functionUses: 0
    functionsReached:
    - toLogString
    - bindEscape
    - qtype::toString
    - qname::toLogString
    - qname::toString
    - DBException
    - qname::makeRelative
    - DNSName::toStringNoDot
    - qname::isPartOf
    - qtype::getCode
    - DNSRecordContent::make
    - stripDomainSuffix
    - empty
    - shared_ptr::getZoneRepresentation
    linkageType: ''
    returnType: bool
    signature: bool Bind2Backend::feedRecord(const DNSResourceRecord& rr, const DNSName&
      /* ordername */, bool /* ordernameIsNSEC3 */)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: read_lock
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:416,1
    - Dst: Bind2Backend::alsoNotify::empty
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:419,1
    - Dst: d_also_notify::empty
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:419,1
    - Dst: vector::push_back
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:429,1
    - Dst: std::move
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:429,1
    - Dst: Bind2Backend::getSOA
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:437,1
    - Dst: BB2DomainInfo::BB2DomainInfo
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:443,1
    - Dst: Bind2Backend::safeGetBBDomainInfo
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:444,1
    - Dst: Bind2Backend::safePutBBDomainInfo
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:446,1
    - Dst: push_back
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:450,1
    - Dst: std::move
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:450,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 29
    argCount: 1
    argNames:
    - ' changedDomains'
    argTypes:
    - vector<DomainInfo>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 454
      start: 412
    functionDepth: 1
    functionLinenumber: 412
    functionLinenumberEnd: 454
    functionName: Bind2Backend::getUpdatedPrimaries
    functionSourceFile: /src/pdns/modules/bindbackend/bindbackend2.cc
    functionUses: 0
    functionsReached:
    - Bind2Backend::safePutBBDomainInfo
    - std::move
    - vector::push_back
    - push_back
    - read_lock
    - d_also_notify::empty
    - BB2DomainInfo::BB2DomainInfo
    - Bind2Backend::alsoNotify::empty
    - Bind2Backend::safeGetBBDomainInfo
    - Bind2Backend::getSOA
    linkageType: ''
    returnType: void
    signature: void Bind2Backend::getUpdatedPrimaries(vector<DomainInfo>& changedDomains,
      std::unordered_set<DNSName>& /* catalogs */, CatalogHashMap& /* catalogHashes
      */)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: read_lock
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:462,1
    - Dst: vector<DomainInfo>*::reserve
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:463,1
    - Dst: auto::size
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:463,1
    - Dst: vector<DomainInfo>*::push_back
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:473,1
    - Dst: std::move
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:473,1
    - Dst: Bind2Backend::getSOA
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:483,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 23
    argCount: 2
    argNames:
    - domains
    - getSerial
    argTypes:
    - vector<DomainInfo>*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 491
      start: 456
    functionDepth: 0
    functionLinenumber: 456
    functionLinenumberEnd: 491
    functionName: Bind2Backend::getAllDomains
    functionSourceFile: /src/pdns/modules/bindbackend/bindbackend2.cc
    functionUses: 0
    functionsReached:
    - vector<DomainInfo>*::push_back
    - std::move
    - Bind2Backend::getSOA
    - read_lock
    - vector<DomainInfo>*::reserve
    - auto::size
    linkageType: ''
    returnType: void
    signature: void Bind2Backend::getAllDomains(vector<DomainInfo>* domains, bool
      getSerial, bool /* include_disabled */)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: read_lock
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:497,1
    - Dst: vector::reserve
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:498,1
    - Dst: auto::size
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:498,1
    - Dst: vector::push_back
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:509,1
    - Dst: std::move
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:509,1
    - Dst: vector<DomainInfo>*::reserve
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:512,1
    - Dst: vector::size
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:512,1
    - Dst: getSOA
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:519,1
    - Dst: time
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:524,1
    - Dst: vector<DomainInfo>*::push_back
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:525,1
    - Dst: std::move
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:525,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 24
    argCount: 1
    argNames:
    - unfreshDomains
    argTypes:
    - vector<DomainInfo>*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 527
      start: 493
    functionDepth: 0
    functionLinenumber: 493
    functionLinenumberEnd: 527
    functionName: Bind2Backend::getUnfreshSecondaryInfos
    functionSourceFile: /src/pdns/modules/bindbackend/bindbackend2.cc
    functionUses: 0
    functionsReached:
    - vector<DomainInfo>*::push_back
    - std::move
    - vector::push_back
    - getSOA
    - time
    - read_lock
    - vector<DomainInfo>*::reserve
    - vector::reserve
    - vector::size
    - auto::size
    linkageType: ''
    returnType: void
    signature: void Bind2Backend::getUnfreshSecondaryInfos(vector<DomainInfo>* unfreshDomains)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: BB2DomainInfo::BB2DomainInfo
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:531,1
    - Dst: Bind2Backend::safeGetBBDomainInfo
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:532,1
    - Dst: getSOA
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:547,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 3
    argNames:
    - ' domain'
    - ' info'
    - getSerial
    argTypes:
    - ZoneName
    - DomainInfo
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 555
      start: 529
    functionDepth: 1
    functionLinenumber: 529
    functionLinenumberEnd: 555
    functionName: Bind2Backend::getDomainInfo
    functionSourceFile: /src/pdns/modules/bindbackend/bindbackend2.cc
    functionUses: 0
    functionsReached:
    - Bind2Backend::safeGetBBDomainInfo
    - BB2DomainInfo::BB2DomainInfo
    - getSOA
    linkageType: ''
    returnType: bool
    signature: bool Bind2Backend::getDomainInfo(const ZoneName& domain, DomainInfo&
      info, bool getSerial)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: insert
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:561,1
    - Dst: Bind2Backend::getDomainMetadata
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:565,1
    - Dst: insert
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:567,1
    - Dst: read_lock
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:570,1
    - Dst: insert
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:574,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 13
    argCount: 2
    argNames:
    - ' domain'
    - ips
    argTypes:
    - ZoneName
    - set<string>*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 579
      start: 557
    functionDepth: 2
    functionLinenumber: 557
    functionLinenumberEnd: 579
    functionName: Bind2Backend::alsoNotifies
    functionSourceFile: /src/pdns/modules/bindbackend/bindbackend2.cc
    functionUses: 0
    functionsReached:
    - Bind2Backend::getDomainMetadata
    - read_lock
    - insert
    linkageType: ''
    returnType: void
    signature: void Bind2Backend::alsoNotifies(const ZoneName& domain, set<string>*
      ips)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: NSEC3PARAMRecordContent::NSEC3PARAMRecordContent
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:584,1
    - Dst: DNSSECKeeper::getNSEC3PARAM
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:588,1
    - Dst: Bind2Backend::getNSEC3PARAMuncached
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:591,1
    - Dst: std::make_shared<recordstorage_t>
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:593,1
    - Dst: BB2DomainInfo*::main_filename
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:594,1
    - Dst: ZoneParserTNG::setMaxGenerateSteps
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:595,1
    - Dst: arg
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:595,1
    - Dst: ZoneParserTNG::setMaxIncludes
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:596,1
    - Dst: arg
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:596,1
    - Dst: ZoneParserTNG::get
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:599,1
    - Dst: DNSResourceRecord::qtype::getCode
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:600,1
    - Dst: DNSResourceRecord::qtype::getCode
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:600,1
    - Dst: DNSResourceRecord::qtype::getCode
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:600,1
    - Dst: Bind2Backend::insertRecord
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:603,1
    - Dst: Bind2Backend::fixupOrderAndAuth
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:605,1
    - Dst: Bind2Backend::doEmptyNonTerminals
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:606,1
    - Dst: ZoneParserTNG::getFileset
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:607,1
    - Dst: nowTime
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:610,1
    - Dst: LookButDontTouch<recordstorage_t>
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:611,1
    - Dst: std::move
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:611,1
    - Dst: std::move
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:613,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 1
    argNames:
    - bbd
    argTypes:
    - BB2DomainInfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 614
      start: 582
    functionDepth: 4
    functionLinenumber: 582
    functionLinenumberEnd: 614
    functionName: Bind2Backend::parseZoneFile
    functionSourceFile: /src/pdns/modules/bindbackend/bindbackend2.cc
    functionUses: 0
    functionsReached:
    - ZoneParserTNG::setMaxIncludes
    - std::move
    - arg
    - ZoneParserTNG::setMaxGenerateSteps
    - Bind2Backend::doEmptyNonTerminals
    - ZoneParserTNG::getFileset
    - nowTime
    - LookButDontTouch<recordstorage_t>
    - NSEC3PARAMRecordContent::NSEC3PARAMRecordContent
    - BB2DomainInfo*::main_filename
    - DNSResourceRecord::qtype::getCode
    - Bind2Backend::insertRecord
    - ZoneParserTNG::get
    - Bind2Backend::getNSEC3PARAMuncached
    - Bind2Backend::fixupOrderAndAuth
    - DNSSECKeeper::getNSEC3PARAM
    - std::make_shared<recordstorage_t>
    linkageType: ''
    returnType: void
    signature: void Bind2Backend::parseZoneFile(BB2DomainInfo* bbd)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:623,1
    - Dst: Bind2DNSRecord::qname::isPartOf
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:625,1
    - Dst: Bind2DNSRecord::qname::makeUsRelative
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:626,1
    - Dst: Bind2DNSRecord::qname::toLogString
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:628,1
    - Dst: toString
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:628,1
    - Dst: toLogString
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:628,1
    - Dst: SLOG
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:630,1
    - Dst: info
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:631,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:631,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:631,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:631,1
    - Dst: PDNSException
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:634,1
    - Dst: std::move
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:634,1
    - Dst: empty
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:639,1
    - Dst: boost::prior
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:639,1
    - Dst: end
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:639,1
    - Dst: boost::prior
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:640,1
    - Dst: end
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:640,1
    - Dst: getCode
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:643,1
    - Dst: insert
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:653,1
    - Dst: std::move
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:653,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 23
    argCount: 8
    argNames:
    - ' records'
    - ' zoneName'
    - ' qname'
    - ' qtype'
    - ' content'
    - ttl
    - ' hashed'
    - auth
    argTypes:
    - std::shared_ptr<recordstorage_t>
    - ZoneName
    - DNSName
    - QType
    - string
    - int
    - std::string
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 654
      start: 618
    functionDepth: 2
    functionLinenumber: 618
    functionLinenumberEnd: 654
    functionName: Bind2Backend::insertRecord
    functionSourceFile: /src/pdns/modules/bindbackend/bindbackend2.cc
    functionUses: 1
    functionsReached:
    - Bind2DNSRecord::qname::isPartOf
    - Bind2DNSRecord::qname::toLogString
    - toString
    - toLogString
    - SLOG
    - std::move
    - Logging::Loggable
    - PDNSException
    - end
    - info
    - insert
    - Bind2DNSRecord::qname::makeUsRelative
    - empty
    - getCode
    - boost::prior
    linkageType: ''
    returnType: void
    signature: void Bind2Backend::insertRecord(std::shared_ptr<recordstorage_t>& records,
      const ZoneName& zoneName, const DNSName& qname, const QType& qtype, const string&
      content, int ttl, const std::string& hashed, const bool* auth)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: begin
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:660,1
    - Dst: end
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:660,1
    - Dst: BB2DomainInfo::BB2DomainInfo
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:661,1
    - Dst: Bind2Backend::safeGetBBDomainInfo
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:663,1
    - Dst: Bind2Backend::Bind2Backend
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:664,1
    - Dst: Bind2Backend::queueReloadAndStore
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:665,1
    - Dst: Bind2Backend::safeGetBBDomainInfo
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:666,1
    - Dst: purgeAuthCaches
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:670,1
    - Dst: toString
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:670,1
    - Dst: DNSSECKeeper::clearMetaCache
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:671,1
    - Dst: ostringstream::str
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:676,1
    - Dst: ostringstream::str
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:678,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 1
    argNames:
    - ' parts'
    argTypes:
    - vector<string>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 679
      start: 656
    functionDepth: 1
    functionLinenumber: 656
    functionLinenumberEnd: 679
    functionName: Bind2Backend::DLReloadNowHandler
    functionSourceFile: /src/pdns/modules/bindbackend/bindbackend2.cc
    functionUses: 0
    functionsReached:
    - toString
    - DNSSECKeeper::clearMetaCache
    - end
    - purgeAuthCaches
    - BB2DomainInfo::BB2DomainInfo
    - ostringstream::str
    - Bind2Backend::Bind2Backend
    - begin
    - Bind2Backend::safeGetBBDomainInfo
    - Bind2Backend::queueReloadAndStore
    linkageType: ''
    returnType: string
    signature: string Bind2Backend::DLReloadNowHandler(const vector<string>& parts,
      Utility::pid_t /* ppid */, Logr::log_t /* slog */)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:685,1
    - Dst: begin
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:686,1
    - Dst: end
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:686,1
    - Dst: BB2DomainInfo::BB2DomainInfo
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:687,1
    - Dst: Bind2Backend::safeGetBBDomainInfo
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:688,1
    - Dst: ZoneName
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:688,1
    - Dst: read_lock
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:697,1
    - Dst: ostringstream::str
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:703,1
    - Dst: ostringstream::str
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:706,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 1
    argNames:
    - ' parts'
    argTypes:
    - vector<string>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 707
      start: 681
    functionDepth: 1
    functionLinenumber: 681
    functionLinenumberEnd: 707
    functionName: Bind2Backend::DLDomStatusHandler
    functionSourceFile: /src/pdns/modules/bindbackend/bindbackend2.cc
    functionUses: 0
    functionsReached:
    - end
    - read_lock
    - size
    - BB2DomainInfo::BB2DomainInfo
    - ostringstream::str
    - ZoneName
    - begin
    - Bind2Backend::safeGetBBDomainInfo
    linkageType: ''
    returnType: string
    signature: string Bind2Backend::DLDomStatusHandler(const vector<string>& parts,
      Utility::pid_t /* ppid */, Logr::log_t /* slog */)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: main_filename
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:714,1
    - Dst: d_fileinfo::front
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:714,1
    - Dst: toStringWithPort
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:729,1
    - Dst: d_records::getEntriesCount
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:735,1
    - Dst: getCheckInterval
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:738,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 29
    argCount: 2
    argNames:
    - ' ret'
    - ' info'
    argTypes:
    - ostringstream
    - BB2DomainInfo
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 741
      start: 709
    functionDepth: 0
    functionLinenumber: 709
    functionLinenumberEnd: 741
    functionName: printDomainExtendedStatus
    functionSourceFile: /src/pdns/modules/bindbackend/bindbackend2.cc
    functionUses: 0
    functionsReached:
    - d_records::getEntriesCount
    - main_filename
    - getCheckInterval
    - d_fileinfo::front
    - toStringWithPort
    linkageType: ''
    returnType: void
    signature: void printDomainExtendedStatus(ostringstream& ret, const BB2DomainInfo&
      info)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:747,1
    - Dst: begin
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:748,1
    - Dst: end
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:748,1
    - Dst: BB2DomainInfo::BB2DomainInfo
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:749,1
    - Dst: Bind2Backend::safeGetBBDomainInfo
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:750,1
    - Dst: ZoneName
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:750,1
    - Dst: printDomainExtendedStatus
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:751,1
    - Dst: read_lock
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:759,1
    - Dst: printDomainExtendedStatus
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:761,1
    - Dst: ostringstream::str
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:765,1
    - Dst: ostringstream::str
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:769,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 1
    argNames:
    - ' parts'
    argTypes:
    - vector<string>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 770
      start: 743
    functionDepth: 1
    functionLinenumber: 743
    functionLinenumberEnd: 770
    functionName: Bind2Backend::DLDomExtendedStatusHandler
    functionSourceFile: /src/pdns/modules/bindbackend/bindbackend2.cc
    functionUses: 0
    functionsReached:
    - end
    - printDomainExtendedStatus
    - size
    - read_lock
    - BB2DomainInfo::BB2DomainInfo
    - ostringstream::str
    - ZoneName
    - begin
    - Bind2Backend::safeGetBBDomainInfo
    linkageType: ''
    returnType: string
    signature: string Bind2Backend::DLDomExtendedStatusHandler(const vector<string>&
      parts, Utility::pid_t /* ppid */, Logr::log_t /* slog */)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: read_lock
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:775,1
    - Dst: ostringstream::str
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:780,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 781
      start: 772
    functionDepth: 0
    functionLinenumber: 772
    functionLinenumberEnd: 781
    functionName: Bind2Backend::DLListRejectsHandler
    functionSourceFile: /src/pdns/modules/bindbackend/bindbackend2.cc
    functionUses: 0
    functionsReached:
    - ostringstream::str
    - read_lock
    linkageType: ''
    returnType: string
    signature: string Bind2Backend::DLListRejectsHandler(const vector<string>& /*
      parts */, Utility::pid_t /* ppid */, Logr::log_t /* slog */)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:785,1
    - Dst: BB2DomainInfo::BB2DomainInfo
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:790,1
    - Dst: Bind2Backend::safeGetBBDomainInfo
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:791,1
    - Dst: boost::starts_with
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:794,1
    - Dst: arg
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:794,1
    - Dst: empty
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:794,1
    - Dst: ZoneName::toLogString
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:795,1
    - Dst: stat
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:798,1
    - Dst: c_str
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:798,1
    - Dst: ZoneName::toLogString
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:799,1
    - Dst: strerror
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:799,1
    - Dst: Bind2Backend::Bind2Backend
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:801,1
    - Dst: Bind2Backend::createDomainEntry
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:802,1
    - Dst: BB2DomainInfo::d_fileinfo::emplace_back
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:803,1
    - Dst: std::make_pair
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:803,1
    - Dst: Bind2Backend::safePutBBDomainInfo
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:809,1
    - Dst: add
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:811,1
    - Dst: SLOG
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:813,1
    - Dst: Bind2Backend::d_slog::info
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:814,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:814,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:814,1
    - Dst: ZoneName::toLogString
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:815,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 1
    argNames:
    - ' parts'
    argTypes:
    - vector<string>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 816
      start: 783
    functionDepth: 1
    functionLinenumber: 783
    functionLinenumberEnd: 816
    functionName: Bind2Backend::DLAddDomainHandler
    functionSourceFile: /src/pdns/modules/bindbackend/bindbackend2.cc
    functionUses: 0
    functionsReached:
    - add
    - Bind2Backend::safePutBBDomainInfo
    - SLOG
    - Logging::Loggable
    - boost::starts_with
    - size
    - BB2DomainInfo::BB2DomainInfo
    - ZoneName::toLogString
    - strerror
    - c_str
    - empty
    - stat
    - Bind2Backend::d_slog::info
    - Bind2Backend::createDomainEntry
    - Bind2Backend::safeGetBBDomainInfo
    - arg
    - BB2DomainInfo::d_fileinfo::emplace_back
    - Bind2Backend::Bind2Backend
    - std::make_pair
    linkageType: ''
    returnType: string
    signature: string Bind2Backend::DLAddDomainHandler(const vector<string>& parts,
      Utility::pid_t /* ppid */, Logr::log_t /* slog */)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: setArgPrefix
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:835,1
    - Dst: withName
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:838,1
    - Dst: setSLog
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:839,1
    - Dst: mustDo
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:841,1
    - Dst: isEnabled
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:842,1
    - Dst: PDNSException
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:843,1
    - Dst: mustDo
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:847,1
    - Dst: arg
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:848,1
    - Dst: std::scoped_lock
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:853,1
    - Dst: Bind2Backend::setupDNSSEC
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:855,1
    - Dst: Bind2Backend::loadConfig
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:861,1
    - Dst: DynListener::registerFunc
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:865,1
    - Dst: DynListener::registerFunc
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:866,1
    - Dst: DynListener::registerFunc
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:867,1
    - Dst: DynListener::registerFunc
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:868,1
    - Dst: DynListener::registerFunc
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:869,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 43
    argCount: 2
    argNames:
    - ' suffix'
    - loadZones
    argTypes:
    - string
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 870
      start: 818
    functionDepth: 1
    functionLinenumber: 818
    functionLinenumberEnd: 870
    functionName: Bind2Backend::Bind2Backend
    functionSourceFile: /src/pdns/modules/bindbackend/bindbackend2.cc
    functionUses: 2
    functionsReached:
    - Bind2Backend::loadConfig
    - withName
    - setSLog
    - PDNSException
    - setArgPrefix
    - mustDo
    - DynListener::registerFunc
    - isEnabled
    - std::scoped_lock
    - Bind2Backend::setupDNSSEC
    - arg
    linkageType: ''
    returnType: void
    signature: void Bind2Backend::Bind2Backend(const string& suffix, bool loadZones)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Bind2Backend::freeStatements
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:874,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 875
      start: 872
    functionDepth: 1
    functionLinenumber: 872
    functionLinenumberEnd: 875
    functionName: Bind2Backend::~Bind2Backend()
    functionSourceFile: /src/pdns/modules/bindbackend/bindbackend2.cc
    functionUses: 0
    functionsReached:
    - Bind2Backend::freeStatements
    linkageType: ''
    returnType: void
    signature: void Bind2Backend::~Bind2Backend()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Bind2Backend::loadConfig
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:879,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - status
    argTypes:
    - string*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 880
      start: 877
    functionDepth: 1
    functionLinenumber: 877
    functionLinenumberEnd: 880
    functionName: Bind2Backend::rediscover
    functionSourceFile: /src/pdns/modules/bindbackend/bindbackend2.cc
    functionUses: 0
    functionsReached:
    - Bind2Backend::loadConfig
    linkageType: ''
    returnType: void
    signature: void Bind2Backend::rediscover(string* status)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: write_lock
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:884,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 888
      start: 882
    functionDepth: 0
    functionLinenumber: 882
    functionLinenumberEnd: 888
    functionName: Bind2Backend::reload
    functionSourceFile: /src/pdns/modules/bindbackend/bindbackend2.cc
    functionUses: 0
    functionsReached:
    - write_lock
    linkageType: ''
    returnType: void
    signature: void Bind2Backend::reload()
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: DNSName::DNSName
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:893,1
    - Dst: qname::isRoot
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:897,1
    - Dst: set::insert
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:898,1
    - Dst: insert
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:900,1
    - Dst: begin
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:903,1
    - Dst: end
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:903,1
    - Dst: auto::qname::isRoot
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:907,1
    - Dst: DNSName::chopOff
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:907,1
    - Dst: auto::qname::isRoot
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:907,1
    - Dst: set::count
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:909,1
    - Dst: DNSName::chopOff
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:913,1
    - Dst: auto::qname::isRoot
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:913,1
    - Dst: set::count
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:916,1
    - Dst: count
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:918,1
    - Dst: toBase32Hex
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:920,1
    - Dst: hashQNameWithSalt
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:920,1
    - Dst: replace
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:921,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 23
    argCount: 4
    argNames:
    - ' records'
    - ' zoneName'
    - nsec3zone
    - ' ns3pr'
    argTypes:
    - std::shared_ptr<recordstorage_t>
    - ZoneName
    - bool
    - NSEC3PARAMRecordContent
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 926
      start: 890
    functionDepth: 2
    functionLinenumber: 890
    functionLinenumberEnd: 926
    functionName: Bind2Backend::fixupOrderAndAuth
    functionSourceFile: /src/pdns/modules/bindbackend/bindbackend2.cc
    functionUses: 1
    functionsReached:
    - set::insert
    - DNSName::chopOff
    - count
    - toBase32Hex
    - qname::isRoot
    - end
    - auto::qname::isRoot
    - set::count
    - insert
    - begin
    - DNSName::DNSName
    - replace
    - hashQNameWithSalt
    linkageType: ''
    returnType: void
    signature: void Bind2Backend::fixupOrderAndAuth(std::shared_ptr<recordstorage_t>&
      records, const ZoneName& zoneName, bool nsec3zone, const NSEC3PARAMRecordContent&
      ns3pr)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: DNSName::DNSName
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:931,1
    - Dst: arg
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:935,1
    - Dst: std::unordered_set::insert
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:938,1
    - Dst: DNSName::chopOff
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:948,1
    - Dst: std::unordered_set::count
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:949,1
    - Dst: SLOG
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:951,1
    - Dst: info
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:952,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:952,1
    - Dst: std::unordered_map::count
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:956,1
    - Dst: std::unordered_map::emplace
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:957,1
    - Dst: toBase32Hex
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:974,1
    - Dst: hashQNameWithSalt
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:974,1
    - Dst: Bind2Backend::insertRecord
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:975,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 29
    argCount: 4
    argNames:
    - ' records'
    - ' zoneName'
    - nsec3zone
    - ' ns3pr'
    argTypes:
    - std::shared_ptr<recordstorage_t>
    - ZoneName
    - bool
    - NSEC3PARAMRecordContent
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 979
      start: 928
    functionDepth: 3
    functionLinenumber: 928
    functionLinenumberEnd: 979
    functionName: Bind2Backend::doEmptyNonTerminals
    functionSourceFile: /src/pdns/modules/bindbackend/bindbackend2.cc
    functionUses: 1
    functionsReached:
    - std::unordered_map::count
    - SLOG
    - DNSName::chopOff
    - Logging::Loggable
    - std::unordered_set::insert
    - hashQNameWithSalt
    - info
    - std::unordered_set::count
    - toBase32Hex
    - DNSName::DNSName
    - Bind2Backend::insertRecord
    - std::unordered_map::emplace
    - arg
    linkageType: ''
    returnType: void
    signature: void Bind2Backend::doEmptyNonTerminals(std::shared_ptr<recordstorage_t>&
      records, const ZoneName& zoneName, bool nsec3zone, const NSEC3PARAMRecordContent&
      ns3pr)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: getArg
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:985,1
    - Dst: BindParser::BindParser
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:986,1
    - Dst: BindParser::parse
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:988,1
    - Dst: getArg
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:988,1
    - Dst: SLOG
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:991,1
    - Dst: error
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:992,1
    - Dst: BindParser::getDomains
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:996,1
    - Dst: BindParser::getAlsoNotify
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:997,1
    - Dst: BindParser::getDirectory
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:999,1
    - Dst: SLOG
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1002,1
    - Dst: vector::size
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1002,1
    - Dst: info
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1003,1
    - Dst: std::to_string
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1003,1
    - Dst: vector::size
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1003,1
    - Dst: read_lock
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1008,1
    - Dst: set::insert
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1010,1
    - Dst: stat
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1019,1
    - Dst: filename::c_str
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1019,1
    - Dst: sort
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1025,1
    - Dst: vector::begin
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1025,1
    - Dst: vector::end
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1025,1
    - Dst: SLOG
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1028,1
    - Dst: getArg
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1028,1
    - Dst: info
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1029,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1029,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1029,1
    - Dst: getArg
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1029,1
    - Dst: type::empty
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1034,1
    - Dst: SLOG
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1035,1
    - Dst: info
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1036,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1036,1
    - Dst: type::empty
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1038,1
    - Dst: SLOG
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1039,1
    - Dst: info
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1040,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1040,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1040,1
    - Dst: BB2DomainInfo::BB2DomainInfo
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1045,1
    - Dst: Bind2Backend::safeGetBBDomainInfo
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1048,1
    - Dst: BB2DomainInfo::setCheckInterval
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1051,1
    - Dst: getArgAsNum
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1051,1
    - Dst: BB2DomainInfo::d_fileinfo::empty
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1058,1
    - Dst: BB2DomainInfo::main_filename
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1058,1
    - Dst: BB2DomainInfo::d_fileinfo::clear
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1062,1
    - Dst: BB2DomainInfo::d_fileinfo::emplace_back
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1063,1
    - Dst: std::make_pair
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1063,1
    - Dst: set::insert
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1079,1
    - Dst: BB2DomainInfo::current
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1080,1
    - Dst: SLOG
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1081,1
    - Dst: info
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1082,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1082,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1082,1
    - Dst: Bind2Backend::parseZoneFile
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1085,1
    - Dst: nowTime
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1089,1
    - Dst: ostringstream::str
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1092,1
    - Dst: ostringstream::str
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1093,1
    - Dst: SLOG
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1095,1
    - Dst: ostringstream::str
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1095,1
    - Dst: error
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1096,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1096,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1096,1
    - Dst: code
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1101,1
    - Dst: nowTime
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1103,1
    - Dst: nowTime
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1106,1
    - Dst: what
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1106,1
    - Dst: ostringstream::str
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1110,1
    - Dst: ostringstream::str
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1111,1
    - Dst: SLOG
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1112,1
    - Dst: ostringstream::str
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1113,1
    - Dst: if
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1114,1
    - Dst: error
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1115,1
    - Dst: what
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1115,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1115,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1115,1
    - Dst: error
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1117,1
    - Dst: what
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1117,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1117,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1117,1
    - Dst: nowTime
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1123,1
    - Dst: what
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1123,1
    - Dst: ostringstream::str
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1126,1
    - Dst: ostringstream::str
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1127,1
    - Dst: SLOG
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1129,1
    - Dst: ostringstream::str
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1129,1
    - Dst: error
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1130,1
    - Dst: what
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1130,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1130,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1130,1
    - Dst: Bind2Backend::safePutBBDomainInfo
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1133,1
    - Dst: Bind2Backend::safePutBBDomainInfo
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1136,1
    - Dst: set_difference
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1141,1
    - Dst: set::begin
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1141,1
    - Dst: set::end
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1141,1
    - Dst: set::begin
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1141,1
    - Dst: set::end
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1141,1
    - Dst: back_inserter
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1141,1
    - Dst: vector::size
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1142,1
    - Dst: Bind2Backend::safeRemoveBBDomainInfo
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1145,1
    - Dst: vector::clear
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1149,1
    - Dst: set_difference
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1150,1
    - Dst: set::begin
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1150,1
    - Dst: set::end
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1150,1
    - Dst: set::begin
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1150,1
    - Dst: set::end
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1150,1
    - Dst: back_inserter
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1150,1
    - Dst: vector::size
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1151,1
    - Dst: ostringstream::str
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1156,1
    - Dst: SLOG
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1158,1
    - Dst: ostringstream::str
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1159,1
    - Dst: if
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1160,1
    - Dst: info
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1161,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1161,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1161,1
    - Dst: info
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1163,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1163,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1163,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1163,1
    CyclomaticComplexity: 39
    EdgeCount: 39
    ICount: 110
    argCount: 1
    argNames:
    - status
    argTypes:
    - string*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1166
      start: 981
    functionDepth: 2
    functionLinenumber: 981
    functionLinenumberEnd: 1166
    functionName: Bind2Backend::loadConfig
    functionSourceFile: /src/pdns/modules/bindbackend/bindbackend2.cc
    functionUses: 2
    functionsReached:
    - BB2DomainInfo::d_fileinfo::empty
    - type::empty
    - std::to_string
    - code
    - getArg
    - BindParser::getDomains
    - sort
    - error
    - vector::begin
    - Bind2Backend::safePutBBDomainInfo
    - SLOG
    - set::insert
    - BindParser::parse
    - nowTime
    - Logging::Loggable
    - BindParser::getDirectory
    - read_lock
    - BB2DomainInfo::setCheckInterval
    - BB2DomainInfo::BB2DomainInfo
    - set::end
    - stat
    - BindParser::getAlsoNotify
    - back_inserter
    - vector::clear
    - getArgAsNum
    - vector::end
    - ostringstream::str
    - set::begin
    - Bind2Backend::safeGetBBDomainInfo
    - BindParser::BindParser
    - BB2DomainInfo::d_fileinfo::clear
    - BB2DomainInfo::d_fileinfo::emplace_back
    - BB2DomainInfo::main_filename
    - what
    - info
    - if
    - set_difference
    - std::make_pair
    - filename::c_str
    - Bind2Backend::safeRemoveBBDomainInfo
    - vector::size
    - BB2DomainInfo::current
    - Bind2Backend::parseZoneFile
    linkageType: ''
    returnType: void
    signature: void Bind2Backend::loadConfig(string* status)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: BB2DomainInfo::BB2DomainInfo
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1171,1
    - Dst: Bind2Backend::safeGetBBDomainInfo
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1173,1
    - Dst: LookButDontTouch<recordstorage_t>
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1179,1
    - Dst: Bind2Backend::parseZoneFile
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1180,1
    - Dst: Bind2Backend::safePutBBDomainInfo
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1182,1
    - Dst: SLOG
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1183,1
    - Dst: BB2DomainInfo::main_filename
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1183,1
    - Dst: info
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1184,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1184,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1184,1
    - Dst: BB2DomainInfo::main_filename
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1184,1
    - Dst: nowTime
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1188,1
    - Dst: BB2DomainInfo::main_filename
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1188,1
    - Dst: SLOG
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1189,1
    - Dst: BB2DomainInfo::main_filename
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1189,1
    - Dst: error
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1190,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1190,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1190,1
    - Dst: BB2DomainInfo::main_filename
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1190,1
    - Dst: ostringstream::str
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1191,1
    - Dst: time
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1192,1
    - Dst: Bind2Backend::safePutBBDomainInfo
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1194,1
    - Dst: nowTime
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1198,1
    - Dst: BB2DomainInfo::main_filename
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1198,1
    - Dst: what
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1198,1
    - Dst: SLOG
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1199,1
    - Dst: BB2DomainInfo::main_filename
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1199,1
    - Dst: what
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1199,1
    - Dst: error
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1200,1
    - Dst: what
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1200,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1200,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1200,1
    - Dst: BB2DomainInfo::main_filename
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1200,1
    - Dst: ostringstream::str
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1201,1
    - Dst: time
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1202,1
    - Dst: Bind2Backend::safePutBBDomainInfo
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1204,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 25
    argCount: 1
    argNames:
    - id
    argTypes:
    - domainid_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1206
      start: 1169
    functionDepth: 1
    functionLinenumber: 1169
    functionLinenumberEnd: 1206
    functionName: Bind2Backend::queueReloadAndStore
    functionSourceFile: /src/pdns/modules/bindbackend/bindbackend2.cc
    functionUses: 2
    functionsReached:
    - Bind2Backend::safePutBBDomainInfo
    - SLOG
    - nowTime
    - Logging::Loggable
    - BB2DomainInfo::main_filename
    - time
    - what
    - info
    - LookButDontTouch<recordstorage_t>
    - BB2DomainInfo::BB2DomainInfo
    - ostringstream::str
    - error
    - Bind2Backend::safeGetBBDomainInfo
    - Bind2Backend::parseZoneFile
    linkageType: ''
    returnType: void
    signature: void Bind2Backend::queueReloadAndStore(domainid_t id)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: upper_bound
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1215,1
    - Dst: makeLowerCase
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1215,1
    - Dst: begin
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1217,1
    - Dst: end
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1223,1
    - Dst: begin
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1224,1
    - Dst: end
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1229,1
    - Dst: begin
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1230,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 20
    argCount: 4
    argNames:
    - ' records'
    - ' qname'
    - ' before'
    - ' after'
    argTypes:
    - std::shared_ptr<const recordstorage_t>
    - DNSName
    - DNSName
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1238
      start: 1208
    functionDepth: 0
    functionLinenumber: 1208
    functionLinenumberEnd: 1238
    functionName: Bind2Backend::findBeforeAndAfterUnhashed
    functionSourceFile: /src/pdns/modules/bindbackend/bindbackend2.cc
    functionUses: 0
    functionsReached:
    - makeLowerCase
    - upper_bound
    - end
    - begin
    linkageType: ''
    returnType: bool
    signature: bool Bind2Backend::findBeforeAndAfterUnhashed(std::shared_ptr<const
      recordstorage_t>& records, const DNSName& qname, DNSName& /* unhashed */, DNSName&
      before, DNSName& after)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: BB2DomainInfo::BB2DomainInfo
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1243,1
    - Dst: Bind2Backend::safeGetBBDomainInfo
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1244,1
    - Dst: BB2DomainInfo::d_records::get
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1247,1
    - Dst: Bind2Backend::findBeforeAndAfterUnhashed
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1249,1
    - Dst: boost::multi_index::get<NSEC3Tag>
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1252,1
    - Dst: upper_bound
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1257,1
    - Dst: upper_bound
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1258,1
    - Dst: toStringNoDot
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1258,1
    - Dst: end
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1260,1
    - Dst: DNSName
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1262,1
    - Dst: DNSName
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1263,1
    - Dst: DNSName
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1266,1
    - Dst: end
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1270,1
    - Dst: DNSName
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1271,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 5
    argNames:
    - id
    - ' qname'
    - ' unhashed'
    - ' before'
    - ' after'
    argTypes:
    - domainid_t
    - DNSName
    - DNSName
    - DNSName
    - DNSName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1277
      start: 1241
    functionDepth: 1
    functionLinenumber: 1241
    functionLinenumberEnd: 1277
    functionName: Bind2Backend::getBeforeAndAfterNamesAbsolute
    functionSourceFile: /src/pdns/modules/bindbackend/bindbackend2.cc
    functionUses: 0
    functionsReached:
    - boost::multi_index::get<NSEC3Tag>
    - end
    - toStringNoDot
    - DNSName
    - BB2DomainInfo::BB2DomainInfo
    - Bind2Backend::safeGetBBDomainInfo
    - BB2DomainInfo::d_records::get
    - upper_bound
    - Bind2Backend::findBeforeAndAfterUnhashed
    linkageType: ''
    returnType: bool
    signature: bool Bind2Backend::getBeforeAndAfterNamesAbsolute(domainid_t id, const
      DNSName& qname, DNSName& unhashed, DNSName& before, DNSName& after)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: reset
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1281,1
    - Dst: arg
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1283,1
    - Dst: ZoneName::ZoneName
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1286,1
    - Dst: BB2DomainInfo::BB2DomainInfo
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1287,1
    - Dst: SLOG
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1290,1
    - Dst: toString
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1290,1
    - Dst: info
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1291,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1291,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1291,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1291,1
    - Dst: Bind2Backend::safeGetBBDomainInfo
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1295,1
    - Dst: isPartOf
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1295,1
    - Dst: std::move
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1296,1
    - Dst: ZoneName
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1300,1
    - Dst: Bind2Backend::safeGetBBDomainInfo
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1302,1
    - Dst: ZoneName::chopOff
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1303,1
    - Dst: SLOG
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1308,1
    - Dst: info
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1309,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1309,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1309,1
    - Dst: SLOG
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1316,1
    - Dst: info
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1317,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1317,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1317,1
    - Dst: makeRelative
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1321,1
    - Dst: std::move
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1323,1
    - Dst: BB2DomainInfo::current
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1325,1
    - Dst: SLOG
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1326,1
    - Dst: BB2DomainInfo::main_filename
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1326,1
    - Dst: info
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1327,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1327,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1327,1
    - Dst: BB2DomainInfo::main_filename
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1327,1
    - Dst: Bind2Backend::queueReloadAndStore
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1328,1
    - Dst: Bind2Backend::safeGetBBDomainInfo
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1329,1
    - Dst: DBException
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1330,1
    - Dst: BB2DomainInfo::d_name::toLogString
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1330,1
    - Dst: BB2DomainInfo::main_filename
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1330,1
    - Dst: reset
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1334,1
    - Dst: DBException
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1335,1
    - Dst: domain::toLogString
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1335,1
    - Dst: BB2DomainInfo::main_filename
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1335,1
    - Dst: BB2DomainInfo::d_records::get
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1338,1
    - Dst: d_records::empty
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1340,1
    - Dst: DLOG
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1341,1
    - Dst: SLOG
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1341,1
    - Dst: info
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1342,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1342,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1342,1
    - Dst: boost::multi_index::get<UnorderedNameTag>
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1347,1
    - Dst: equal_range
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1348,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 47
    argCount: 3
    argNames:
    - ' qtype'
    - ' qname'
    - zoneId
    argTypes:
    - QType
    - DNSName
    - domainid_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1353
      start: 1279
    functionDepth: 2
    functionLinenumber: 1279
    functionLinenumberEnd: 1353
    functionName: Bind2Backend::lookup
    functionSourceFile: /src/pdns/modules/bindbackend/bindbackend2.cc
    functionUses: 0
    functionsReached:
    - makeRelative
    - boost::multi_index::get<UnorderedNameTag>
    - toString
    - DBException
    - domain::toLogString
    - BB2DomainInfo::d_records::get
    - d_records::empty
    - reset
    - SLOG
    - Logging::Loggable
    - BB2DomainInfo::BB2DomainInfo
    - isPartOf
    - BB2DomainInfo::d_name::toLogString
    - Bind2Backend::safeGetBBDomainInfo
    - Bind2Backend::queueReloadAndStore
    - arg
    - std::move
    - BB2DomainInfo::main_filename
    - equal_range
    - ZoneName::ZoneName
    - info
    - ZoneName::chopOff
    - DLOG
    - ZoneName
    - BB2DomainInfo::current
    linkageType: ''
    returnType: void
    signature: void Bind2Backend::lookup(const QType& qtype, const DNSName& qname,
      domainid_t zoneId, DNSPacket* /* pkt_p */)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: SLOG
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1359,1
    - Dst: info
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1360,1
    - Dst: Bind2Backend::get
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1365,1
    - Dst: SLOG
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1367,1
    - Dst: info
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1368,1
    - Dst: reset
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1371,1
    - Dst: SLOG
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1376,1
    - Dst: qtype::toString
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1376,1
    - Dst: info
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1377,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1377,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1377,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1377,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 1
    argNames:
    - ' r'
    argTypes:
    - DNSResourceRecord
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1380
      start: 1355
    functionDepth: 0
    functionLinenumber: 1355
    functionLinenumberEnd: 1380
    functionName: Bind2Backend::get
    functionSourceFile: /src/pdns/modules/bindbackend/bindbackend2.cc
    functionUses: 1
    functionsReached:
    - reset
    - SLOG
    - qtype::toString
    - Logging::Loggable
    - Bind2Backend::get
    - info
    linkageType: ''
    returnType: bool
    signature: bool Bind2Backend::get(DNSResourceRecord& r)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: reset
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1384,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1385
      start: 1382
    functionDepth: 0
    functionLinenumber: 1382
    functionLinenumberEnd: 1385
    functionName: Bind2Backend::lookupEnd
    functionSourceFile: /src/pdns/modules/bindbackend/bindbackend2.cc
    functionUses: 0
    functionsReached:
    - reset
    linkageType: ''
    returnType: void
    signature: void Bind2Backend::lookupEnd()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: get_list
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1390,1
    - Dst: get_normal
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1392,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ' r'
    argTypes:
    - DNSResourceRecord
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1393
      start: 1387
    functionDepth: 0
    functionLinenumber: 1387
    functionLinenumberEnd: 1393
    functionName: Bind2Backend::handle::get(DNSResourceRecord& r)
    functionSourceFile: /src/pdns/modules/bindbackend/bindbackend2.cc
    functionUses: 0
    functionsReached:
    - get_normal
    - get_list
    linkageType: ''
    returnType: bool
    signature: bool Bind2Backend::handle::get(DNSResourceRecord& r)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: reset
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1397,1
    - Dst: clear
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1398,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1400
      start: 1395
    functionDepth: 1
    functionLinenumber: 1395
    functionLinenumberEnd: 1400
    functionName: Bind2Backend::handle::reset()
    functionSourceFile: /src/pdns/modules/bindbackend/bindbackend2.cc
    functionUses: 0
    functionsReached:
    - clear
    - reset
    linkageType: ''
    returnType: void
    signature: void Bind2Backend::handle::reset()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: DLOG
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1404,1
    - Dst: SLOG
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1404,1
    - Dst: toString
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1404,1
    - Dst: size
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1404,1
    - Dst: info
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1405,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1405,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1405,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1405,1
    - Dst: size
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1405,1
    - Dst: getCode
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1411,1
    - Dst: getCode
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1411,1
    - Dst: DLOG
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1412,1
    - Dst: SLOG
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1412,1
    - Dst: QType
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1412,1
    - Dst: info
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1413,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1413,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1413,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1413,1
    - Dst: DLOG
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1419,1
    - Dst: SLOG
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1419,1
    - Dst: QType
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1419,1
    - Dst: info
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1420,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1420,1
    - Dst: empty
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1423,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 21
    argCount: 1
    argNames:
    - ' r'
    argTypes:
    - DNSResourceRecord
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1437
      start: 1402
    functionDepth: 0
    functionLinenumber: 1402
    functionLinenumberEnd: 1437
    functionName: Bind2Backend::handle::get_normal(DNSResourceRecord& r)
    functionSourceFile: /src/pdns/modules/bindbackend/bindbackend2.cc
    functionUses: 0
    functionsReached:
    - SLOG
    - toString
    - Logging::Loggable
    - QType
    - info
    - size
    - DLOG
    - empty
    - getCode
    linkageType: ''
    returnType: bool
    signature: bool Bind2Backend::handle::get_normal(DNSResourceRecord& r)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: BB2DomainInfo::BB2DomainInfo
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1441,1
    - Dst: Bind2Backend::safeGetBBDomainInfo
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1443,1
    - Dst: reset
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1447,1
    - Dst: DLOG
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1448,1
    - Dst: SLOG
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1448,1
    - Dst: info
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1449,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1449,1
    - Dst: PDNSException
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1452,1
    - Dst: BB2DomainInfo::d_records::get
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1455,1
    - Dst: d_records::begin
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1456,1
    - Dst: d_records::end
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1457,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 1
    argNames:
    - domainId
    argTypes:
    - domainid_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1463
      start: 1439
    functionDepth: 1
    functionLinenumber: 1439
    functionLinenumberEnd: 1463
    functionName: Bind2Backend::list
    functionSourceFile: /src/pdns/modules/bindbackend/bindbackend2.cc
    functionUses: 0
    functionsReached:
    - reset
    - SLOG
    - Logging::Loggable
    - PDNSException
    - info
    - BB2DomainInfo::BB2DomainInfo
    - d_records::begin
    - d_records::end
    - DLOG
    - Bind2Backend::safeGetBBDomainInfo
    - BB2DomainInfo::d_records::get
    linkageType: ''
    returnType: bool
    signature: bool Bind2Backend::list(const ZoneName& /* target */, domainid_t domainId,
      bool /* include_disabled */)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: qname::empty
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1469,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - ' r'
    argTypes:
    - DNSResourceRecord
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1479
      start: 1465
    functionDepth: 0
    functionLinenumber: 1465
    functionLinenumberEnd: 1479
    functionName: Bind2Backend::handle::get_list(DNSResourceRecord& r)
    functionSourceFile: /src/pdns/modules/bindbackend/bindbackend2.cc
    functionUses: 0
    functionsReached:
    - qname::empty
    linkageType: ''
    returnType: bool
    signature: bool Bind2Backend::handle::get_list(DNSResourceRecord& r)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: getArg
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1483,1
    - Dst: getArg
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1486,1
    - Dst: SLOG
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1489,1
    - Dst: stringerror
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1489,1
    - Dst: error
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1490,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1490,1
    - Dst: getline
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1495,1
    - Dst: empty
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1498,1
    - Dst: emplace_back
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1500,1
    - Dst: ifstream::close
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1504,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 1
    argNames:
    - ' primaries'
    argTypes:
    - std::vector<AutoPrimary>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1506
      start: 1481
    functionDepth: 0
    functionLinenumber: 1481
    functionLinenumberEnd: 1506
    functionName: Bind2Backend::autoPrimariesList
    functionSourceFile: /src/pdns/modules/bindbackend/bindbackend2.cc
    functionUses: 0
    functionsReached:
    - SLOG
    - Logging::Loggable
    - stringerror
    - getArg
    - getline
    - ifstream::close
    - emplace_back
    - error
    - empty
    linkageType: ''
    returnType: bool
    signature: bool Bind2Backend::autoPrimariesList(std::vector<AutoPrimary>& primaries)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: getArg
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1511,1
    - Dst: getArg
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1514,1
    - Dst: std::string::c_str
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1515,1
    - Dst: SLOG
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1517,1
    - Dst: stringerror
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1517,1
    - Dst: error
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1518,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1518,1
    - Dst: getline
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1525,1
    - Dst: ifstream::close
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1533,1
    - Dst: length
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1541,1
    - Dst: c_str
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1542,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 22
    argCount: 3
    argNames:
    - ' ipAddress'
    - account
    - backend
    argTypes:
    - string
    - string*
    - DNSBackend**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1545
      start: 1508
    functionDepth: 0
    functionLinenumber: 1508
    functionLinenumberEnd: 1545
    functionName: Bind2Backend::autoPrimaryBackend
    functionSourceFile: /src/pdns/modules/bindbackend/bindbackend2.cc
    functionUses: 0
    functionsReached:
    - length
    - SLOG
    - c_str
    - Logging::Loggable
    - std::string::c_str
    - stringerror
    - getArg
    - getline
    - error
    - ifstream::close
    linkageType: ''
    returnType: bool
    signature: bool Bind2Backend::autoPrimaryBackend(const string& ipAddress, const
      ZoneName& /* domain */, const vector<DNSResourceRecord>& /* nsset */, string*
      /* nameserver */, string* account, DNSBackend** backend)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: read_lock
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1551,1
    - Dst: auto::empty
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1552,1
    - Dst: auto::rbegin
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1553,1
    - Dst: BB2DomainInfo::BB2DomainInfo
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1557,1
    - Dst: std::make_shared<recordstorage_t>
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1560,1
    - Dst: BB2DomainInfo::setCheckInterval
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1562,1
    - Dst: getArgAsNum
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1562,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - ' domain'
    argTypes:
    - ZoneName
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1565
      start: 1547
    functionDepth: 1
    functionLinenumber: 1547
    functionLinenumberEnd: 1565
    functionName: Bind2Backend::createDomainEntry
    functionSourceFile: /src/pdns/modules/bindbackend/bindbackend2.cc
    functionUses: 1
    functionsReached:
    - auto::rbegin
    - getArgAsNum
    - read_lock
    - BB2DomainInfo::setCheckInterval
    - BB2DomainInfo::BB2DomainInfo
    - std::make_shared<recordstorage_t>
    - auto::empty
    linkageType: ''
    returnType: BB2DomainInfo
    signature: BB2DomainInfo Bind2Backend::createDomainEntry(const ZoneName& domain)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: toStringNoDot
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1569,1
    - Dst: std::string::find_first_of
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1574,1
    - Dst: SLOG
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1575,1
    - Dst: error
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1580,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1580,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1580,1
    - Dst: PDNSException
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1581,1
    - Dst: getArg
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1584,1
    - Dst: std::string::empty
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1585,1
    - Dst: string::append
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1586,1
    - Dst: string::append
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1590,1
    - Dst: boost::replace_all_copy
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1590,1
    - Dst: SLOG
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1593,1
    - Dst: info
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1596,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1596,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1596,1
    - Dst: std::scoped_lock
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1599,1
    - Dst: getArg
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1601,1
    - Dst: std::string::c_str
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1602,1
    - Dst: stringerror
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1605,1
    - Dst: SLOG
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1606,1
    - Dst: error
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1607,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1607,1
    - Dst: DBException
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1608,1
    - Dst: nowTime
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1612,1
    - Dst: ofstream::close
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1618,1
    - Dst: Bind2Backend::createDomainEntry
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1621,1
    - Dst: BB2DomainInfo::d_primaries::emplace_back
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1623,1
    - Dst: ComboAddress
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1623,1
    - Dst: BB2DomainInfo::d_fileinfo::emplace_back
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1624,1
    - Dst: std::make_pair
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1624,1
    - Dst: BB2DomainInfo::updateCtime
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1625,1
    - Dst: Bind2Backend::safePutBBDomainInfo
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1626,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 30
    argCount: 3
    argNames:
    - ' ipAddress'
    - ' domain'
    - ' account'
    argTypes:
    - string
    - ZoneName
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1629
      start: 1567
    functionDepth: 2
    functionLinenumber: 1567
    functionLinenumberEnd: 1629
    functionName: Bind2Backend::createSecondaryDomain
    functionSourceFile: /src/pdns/modules/bindbackend/bindbackend2.cc
    functionUses: 0
    functionsReached:
    - PDNSException
    - stringerror
    - getArg
    - DBException
    - toStringNoDot
    - ofstream::close
    - error
    - Bind2Backend::safePutBBDomainInfo
    - SLOG
    - boost::replace_all_copy
    - nowTime
    - Logging::Loggable
    - BB2DomainInfo::d_primaries::emplace_back
    - std::string::empty
    - std::scoped_lock
    - BB2DomainInfo::updateCtime
    - Bind2Backend::createDomainEntry
    - std::string::find_first_of
    - ComboAddress
    - BB2DomainInfo::d_fileinfo::emplace_back
    - std::string::c_str
    - string::append
    - info
    - std::make_pair
    linkageType: ''
    returnType: bool
    signature: bool Bind2Backend::createSecondaryDomain(const string& ipAddress, const
      ZoneName& domain, const string& /* nameserver */, const string& account)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: arg
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1634,1
    - Dst: SLOG
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1636,1
    - Dst: info
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1637,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1637,1
    - Dst: read_lock
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1641,1
    - Dst: BB2DomainInfo::BB2DomainInfo
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1644,1
    - Dst: Bind2Backend::safeGetBBDomainInfo
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1645,1
    - Dst: BB2DomainInfo::d_records::get
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1653,1
    - Dst: shared_ptr::begin
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1655,1
    - Dst: size
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1655,1
    - Dst: shared_ptr::end
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1655,1
    - Dst: recordstorage_t::const_iterator::qname::empty
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1657,1
    - Dst: SimpleMatch::match
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1658,1
    - Dst: SimpleMatch::match
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1658,1
    - Dst: std::move
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1660,1
    - Dst: push_back
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1666,1
    - Dst: std::move
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1666,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 24
    argCount: 3
    argNames:
    - ' pattern'
    - maxResults
    - ' result'
    argTypes:
    - string
    - size_t
    - vector<DNSResourceRecord>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1673
      start: 1631
    functionDepth: 1
    functionLinenumber: 1631
    functionLinenumberEnd: 1673
    functionName: Bind2Backend::searchRecords
    functionSourceFile: /src/pdns/modules/bindbackend/bindbackend2.cc
    functionUses: 0
    functionsReached:
    - std::move
    - SLOG
    - Logging::Loggable
    - push_back
    - shared_ptr::end
    - read_lock
    - info
    - size
    - SimpleMatch::match
    - BB2DomainInfo::BB2DomainInfo
    - shared_ptr::begin
    - recordstorage_t::const_iterator::qname::empty
    - Bind2Backend::safeGetBBDomainInfo
    - BB2DomainInfo::d_records::get
    - arg
    linkageType: ''
    returnType: bool
    signature: bool Bind2Backend::searchRecords(const string& pattern, size_t maxResults,
      vector<DNSResourceRecord>& result)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1679
      start: 1678
    functionDepth: 0
    functionLinenumber: 1678
    functionLinenumberEnd: 1679
    functionName: Bind2Factory::Bind2Factory
    functionSourceFile: /src/pdns/modules/bindbackend/bindbackend2.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Bind2Factory()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: declare
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1683,1
    - Dst: declare
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1684,1
    - Dst: declare
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1685,1
    - Dst: declare
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1686,1
    - Dst: declare
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1687,1
    - Dst: declare
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1688,1
    - Dst: arg
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1688,1
    - Dst: declare
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1689,1
    - Dst: declare
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1690,1
    - Dst: declare
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1691,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1692
      start: 1681
    functionDepth: 0
    functionLinenumber: 1681
    functionLinenumberEnd: 1692
    functionName: Bind2Factory::declareArguments
    functionSourceFile: /src/pdns/modules/bindbackend/bindbackend2.cc
    functionUses: 0
    functionsReached:
    - declare
    - arg
    linkageType: ''
    returnType: void
    signature: void declareArguments(const string& suffix = "") override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Bind2Factory::assertEmptySuffix
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1696,1
    - Dst: Bind2Backend::Bind2Backend
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1697,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1698
      start: 1694
    functionDepth: 2
    functionLinenumber: 1694
    functionLinenumberEnd: 1698
    functionName: Bind2Factory::make
    functionSourceFile: /src/pdns/modules/bindbackend/bindbackend2.cc
    functionUses: 0
    functionsReached:
    - Bind2Backend::Bind2Backend
    - Bind2Factory::assertEmptySuffix
    linkageType: ''
    returnType: DNSBackend
    signature: DNSBackend * make(const string& suffix = "") override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Bind2Factory::assertEmptySuffix
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1702,1
    - Dst: Bind2Backend::Bind2Backend
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1703,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1704
      start: 1700
    functionDepth: 2
    functionLinenumber: 1700
    functionLinenumberEnd: 1704
    functionName: Bind2Factory::makeMetadataOnly
    functionSourceFile: /src/pdns/modules/bindbackend/bindbackend2.cc
    functionUses: 0
    functionsReached:
    - Bind2Backend::Bind2Backend
    - Bind2Factory::assertEmptySuffix
    linkageType: ''
    returnType: DNSBackend
    signature: DNSBackend * makeMetadataOnly(const string& suffix = "") override
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1709,1
    - Dst: PDNSException
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1710,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 3
    argCount: 1
    argNames:
    - ' suffix'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1711
      start: 1707
    functionDepth: 0
    functionLinenumber: 1707
    functionLinenumberEnd: 1711
    functionName: Bind2Factory::assertEmptySuffix
    functionSourceFile: /src/pdns/modules/bindbackend/bindbackend2.cc
    functionUses: 2
    functionsReached:
    - empty
    - PDNSException
    linkageType: ''
    returnType: void
    signature: void assertEmptySuffix(const string& suffix)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BackendMakers
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1720,1
    - Dst: std::make_unique<Bind2Factory>
      Src: /src/pdns/modules/bindbackend/bindbackend2.cc:1720,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1732
      start: 1718
    functionDepth: 1
    functionLinenumber: 1718
    functionLinenumberEnd: 1732
    functionName: Bind2Loader::Bind2Loader
    functionSourceFile: /src/pdns/modules/bindbackend/bindbackend2.cc
    functionUses: 0
    functionsReached:
    - BackendMakers
    - std::make_unique<Bind2Factory>
    linkageType: ''
    returnType: void
    signature: void Bind2Loader()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CoWrapper::launch
      Src: /src/pdns/modules/pipebackend/pipebackend.cc:57,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 4
    argNames:
    - log
    - ' command'
    - timeout
    - abiVersion
    argTypes:
    - Logr::log_t
    - string
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 51
    functionDepth: 1
    functionLinenumber: 51
    functionLinenumberEnd: 59
    functionName: CoWrapper::CoWrapper
    functionSourceFile: /src/pdns/modules/pipebackend/pipebackend.cc
    functionUses: 0
    functionsReached:
    - CoWrapper::launch
    linkageType: ''
    returnType: void
    signature: void CoWrapper::CoWrapper(Logr::log_t log, const string& command, int
      timeout, int abiVersion)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 61
    functionDepth: 0
    functionLinenumber: 61
    functionLinenumberEnd: 61
    functionName: CoWrapper::~CoWrapper()
    functionSourceFile: /src/pdns/modules/pipebackend/pipebackend.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void CoWrapper::~CoWrapper()
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/modules/pipebackend/pipebackend.cc:68,1
    - Dst: ArgException
      Src: /src/pdns/modules/pipebackend/pipebackend.cc:69,1
    - Dst: isUnixSocket
      Src: /src/pdns/modules/pipebackend/pipebackend.cc:71,1
    - Dst: std::make_unique<UnixRemote>
      Src: /src/pdns/modules/pipebackend/pipebackend.cc:72,1
    - Dst: std::make_unique<CoProcess>
      Src: /src/pdns/modules/pipebackend/pipebackend.cc:75,1
    - Dst: auto::launch
      Src: /src/pdns/modules/pipebackend/pipebackend.cc:76,1
    - Dst: std::move
      Src: /src/pdns/modules/pipebackend/pipebackend.cc:77,1
    - Dst: CoWrapper::send
      Src: /src/pdns/modules/pipebackend/pipebackend.cc:80,1
    - Dst: std::to_string
      Src: /src/pdns/modules/pipebackend/pipebackend.cc:80,1
    - Dst: CoWrapper::receive
      Src: /src/pdns/modules/pipebackend/pipebackend.cc:82,1
    - Dst: SLOG
      Src: /src/pdns/modules/pipebackend/pipebackend.cc:83,1
    - Dst: info
      Src: /src/pdns/modules/pipebackend/pipebackend.cc:84,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/pipebackend/pipebackend.cc:84,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 63
    functionDepth: 0
    functionLinenumber: 63
    functionLinenumberEnd: 85
    functionName: CoWrapper::launch
    functionSourceFile: /src/pdns/modules/pipebackend/pipebackend.cc
    functionUses: 1
    functionsReached:
    - std::move
    - auto::launch
    - SLOG
    - std::to_string
    - Logging::Loggable
    - info
    - ArgException
    - CoWrapper::send
    - std::make_unique<UnixRemote>
    - CoWrapper::receive
    - empty
    - std::make_unique<CoProcess>
    - isUnixSocket
    linkageType: ''
    returnType: void
    signature: void CoWrapper::launch()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CoWrapper::launch
      Src: /src/pdns/modules/pipebackend/pipebackend.cc:89,1
    - Dst: CoWrapper::send
      Src: /src/pdns/modules/pipebackend/pipebackend.cc:91,1
    - Dst: reset
      Src: /src/pdns/modules/pipebackend/pipebackend.cc:95,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - ' line'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 87
    functionDepth: 1
    functionLinenumber: 87
    functionLinenumberEnd: 98
    functionName: CoWrapper::send
    functionSourceFile: /src/pdns/modules/pipebackend/pipebackend.cc
    functionUses: 2
    functionsReached:
    - CoWrapper::launch
    - reset
    - CoWrapper::send
    linkageType: ''
    returnType: void
    signature: void CoWrapper::send(const string& line)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CoWrapper::launch
      Src: /src/pdns/modules/pipebackend/pipebackend.cc:101,1
    - Dst: CoWrapper::receive
      Src: /src/pdns/modules/pipebackend/pipebackend.cc:103,1
    - Dst: SLOG
      Src: /src/pdns/modules/pipebackend/pipebackend.cc:107,1
    - Dst: error
      Src: /src/pdns/modules/pipebackend/pipebackend.cc:108,1
    - Dst: reset
      Src: /src/pdns/modules/pipebackend/pipebackend.cc:109,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - ' line'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 112
      start: 99
    functionDepth: 1
    functionLinenumber: 99
    functionLinenumberEnd: 112
    functionName: CoWrapper::receive
    functionSourceFile: /src/pdns/modules/pipebackend/pipebackend.cc
    functionUses: 2
    functionsReached:
    - reset
    - SLOG
    - CoWrapper::launch
    - CoWrapper::receive
    - error
    linkageType: ''
    returnType: void
    signature: void CoWrapper::receive(string& line)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: withName
      Src: /src/pdns/modules/pipebackend/pipebackend.cc:117,1
    - Dst: setArgPrefix
      Src: /src/pdns/modules/pipebackend/pipebackend.cc:120,1
    - Dst: PipeBackend::launch
      Src: /src/pdns/modules/pipebackend/pipebackend.cc:122,1
    - Dst: SLOG
      Src: /src/pdns/modules/pipebackend/pipebackend.cc:125,1
    - Dst: error
      Src: /src/pdns/modules/pipebackend/pipebackend.cc:126,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 1
    argNames:
    - ' suffix'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 132
      start: 114
    functionDepth: 1
    functionLinenumber: 114
    functionLinenumberEnd: 132
    functionName: PipeBackend::PipeBackend
    functionSourceFile: /src/pdns/modules/pipebackend/pipebackend.cc
    functionUses: 0
    functionsReached:
    - SLOG
    - withName
    - PipeBackend::launch
    - setArgPrefix
    - error
    linkageType: ''
    returnType: void
    signature: void PipeBackend::PipeBackend(const string& suffix)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: getArg
      Src: /src/pdns/modules/pipebackend/pipebackend.cc:140,1
    - Dst: std::make_unique<Regex>
      Src: /src/pdns/modules/pipebackend/pipebackend.cc:141,1
    - Dst: getArg
      Src: /src/pdns/modules/pipebackend/pipebackend.cc:141,1
    - Dst: getArg
      Src: /src/pdns/modules/pipebackend/pipebackend.cc:143,1
    - Dst: getArgAsNum
      Src: /src/pdns/modules/pipebackend/pipebackend.cc:144,1
    - Dst: std::make_unique<CoWrapper>
      Src: /src/pdns/modules/pipebackend/pipebackend.cc:145,1
    - Dst: getArg
      Src: /src/pdns/modules/pipebackend/pipebackend.cc:145,1
    - Dst: getArgAsNum
      Src: /src/pdns/modules/pipebackend/pipebackend.cc:145,1
    - Dst: getArgAsNum
      Src: /src/pdns/modules/pipebackend/pipebackend.cc:145,1
    - Dst: PipeBackend::cleanup
      Src: /src/pdns/modules/pipebackend/pipebackend.cc:149,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 152
      start: 134
    functionDepth: 1
    functionLinenumber: 134
    functionLinenumberEnd: 152
    functionName: PipeBackend::launch
    functionSourceFile: /src/pdns/modules/pipebackend/pipebackend.cc
    functionUses: 1
    functionsReached:
    - std::make_unique<Regex>
    - getArgAsNum
    - getArg
    - PipeBackend::cleanup
    - std::make_unique<CoWrapper>
    linkageType: ''
    returnType: void
    signature: void PipeBackend::launch()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: reset
      Src: /src/pdns/modules/pipebackend/pipebackend.cc:159,1
    - Dst: reset
      Src: /src/pdns/modules/pipebackend/pipebackend.cc:160,1
    - Dst: string
      Src: /src/pdns/modules/pipebackend/pipebackend.cc:161,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 163
      start: 157
    functionDepth: 0
    functionLinenumber: 157
    functionLinenumberEnd: 163
    functionName: PipeBackend::cleanup
    functionSourceFile: /src/pdns/modules/pipebackend/pipebackend.cc
    functionUses: 1
    functionsReached:
    - reset
    - string
    linkageType: ''
    returnType: void
    signature: void PipeBackend::cleanup()
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: PipeBackend::launch
      Src: /src/pdns/modules/pipebackend/pipebackend.cc:168,1
    - Dst: match
      Src: /src/pdns/modules/pipebackend/pipebackend.cc:170,1
    - Dst: toStringRootDot
      Src: /src/pdns/modules/pipebackend/pipebackend.cc:170,1
    - Dst: arg
      Src: /src/pdns/modules/pipebackend/pipebackend.cc:171,1
    - Dst: SLOG
      Src: /src/pdns/modules/pipebackend/pipebackend.cc:172,1
    - Dst: info
      Src: /src/pdns/modules/pipebackend/pipebackend.cc:173,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/pipebackend/pipebackend.cc:173,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/pipebackend/pipebackend.cc:173,1
    - Dst: DNSPacket*::getLocal
      Src: /src/pdns/modules/pipebackend/pipebackend.cc:183,1
    - Dst: DNSPacket*::getRealRemote
      Src: /src/pdns/modules/pipebackend/pipebackend.cc:184,1
    - Dst: DNSPacket*::getInnerRemote
      Src: /src/pdns/modules/pipebackend/pipebackend.cc:185,1
    - Dst: toStringRootDot
      Src: /src/pdns/modules/pipebackend/pipebackend.cc:189,1
    - Dst: toString
      Src: /src/pdns/modules/pipebackend/pipebackend.cc:189,1
    - Dst: Netmask::toString
      Src: /src/pdns/modules/pipebackend/pipebackend.cc:195,1
    - Dst: arg
      Src: /src/pdns/modules/pipebackend/pipebackend.cc:197,1
    - Dst: SLOG
      Src: /src/pdns/modules/pipebackend/pipebackend.cc:198,1
    - Dst: ostringstream::str
      Src: /src/pdns/modules/pipebackend/pipebackend.cc:198,1
    - Dst: info
      Src: /src/pdns/modules/pipebackend/pipebackend.cc:199,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/pipebackend/pipebackend.cc:199,1
    - Dst: ostringstream::str
      Src: /src/pdns/modules/pipebackend/pipebackend.cc:199,1
    - Dst: send
      Src: /src/pdns/modules/pipebackend/pipebackend.cc:201,1
    - Dst: ostringstream::str
      Src: /src/pdns/modules/pipebackend/pipebackend.cc:201,1
    - Dst: SLOG
      Src: /src/pdns/modules/pipebackend/pipebackend.cc:205,1
    - Dst: error
      Src: /src/pdns/modules/pipebackend/pipebackend.cc:206,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 31
    argCount: 4
    argNames:
    - ' qtype'
    - ' qname'
    - zoneId
    - pkt_p
    argTypes:
    - QType
    - DNSName
    - domainid_t
    - DNSPacket*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 211
      start: 165
    functionDepth: 2
    functionLinenumber: 165
    functionLinenumberEnd: 211
    functionName: PipeBackend::lookup
    functionSourceFile: /src/pdns/modules/pipebackend/pipebackend.cc
    functionUses: 0
    functionsReached:
    - error
    - SLOG
    - toString
    - Logging::Loggable
    - DNSPacket*::getRealRemote
    - DNSPacket*::getLocal
    - DNSPacket*::getInnerRemote
    - Netmask::toString
    - info
    - toStringRootDot
    - match
    - ostringstream::str
    - send
    - PipeBackend::launch
    - arg
    linkageType: ''
    returnType: void
    signature: void PipeBackend::lookup(const QType& qtype, const DNSName& qname,
      domainid_t zoneId, DNSPacket* pkt_p)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PipeBackend::launch
      Src: /src/pdns/modules/pipebackend/pipebackend.cc:216,1
    - Dst: toStringRootDot
      Src: /src/pdns/modules/pipebackend/pipebackend.cc:223,1
    - Dst: send
      Src: /src/pdns/modules/pipebackend/pipebackend.cc:227,1
    - Dst: ostringstream::str
      Src: /src/pdns/modules/pipebackend/pipebackend.cc:227,1
    - Dst: SLOG
      Src: /src/pdns/modules/pipebackend/pipebackend.cc:230,1
    - Dst: error
      Src: /src/pdns/modules/pipebackend/pipebackend.cc:231,1
    - Dst: DNSName
      Src: /src/pdns/modules/pipebackend/pipebackend.cc:233,1
    - Dst: std::to_string
      Src: /src/pdns/modules/pipebackend/pipebackend.cc:233,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 2
    argNames:
    - ' target'
    - domain_id
    argTypes:
    - ZoneName
    - domainid_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 235
      start: 213
    functionDepth: 2
    functionLinenumber: 213
    functionLinenumberEnd: 235
    functionName: PipeBackend::list
    functionSourceFile: /src/pdns/modules/pipebackend/pipebackend.cc
    functionUses: 0
    functionsReached:
    - error
    - SLOG
    - std::to_string
    - DNSName
    - toStringRootDot
    - ostringstream::str
    - send
    - PipeBackend::launch
    linkageType: ''
    returnType: bool
    signature: bool PipeBackend::list(const ZoneName& target, domainid_t domain_id,
      bool /* include_disabled */)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: std::to_string
      Src: /src/pdns/modules/pipebackend/pipebackend.cc:240,1
    - Dst: empty
      Src: /src/pdns/modules/pipebackend/pipebackend.cc:242,1
    - Dst: PipeBackend::launch
      Src: /src/pdns/modules/pipebackend/pipebackend.cc:247,1
    - Dst: send
      Src: /src/pdns/modules/pipebackend/pipebackend.cc:250,1
    - Dst: ostringstream::str
      Src: /src/pdns/modules/pipebackend/pipebackend.cc:250,1
    - Dst: SLOG
      Src: /src/pdns/modules/pipebackend/pipebackend.cc:253,1
    - Dst: error
      Src: /src/pdns/modules/pipebackend/pipebackend.cc:254,1
    - Dst: PipeBackend::cleanup
      Src: /src/pdns/modules/pipebackend/pipebackend.cc:255,1
    - Dst: receive
      Src: /src/pdns/modules/pipebackend/pipebackend.cc:261,1
    - Dst: ostringstream::str
      Src: /src/pdns/modules/pipebackend/pipebackend.cc:267,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 22
    argCount: 1
    argNames:
    - ' query'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 268
      start: 237
    functionDepth: 2
    functionLinenumber: 237
    functionLinenumberEnd: 268
    functionName: PipeBackend::directBackendCmd
    functionSourceFile: /src/pdns/modules/pipebackend/pipebackend.cc
    functionUses: 0
    functionsReached:
    - error
    - SLOG
    - std::to_string
    - PipeBackend::cleanup
    - receive
    - ostringstream::str
    - send
    - PipeBackend::launch
    - empty
    linkageType: ''
    returnType: string
    signature: string PipeBackend::directBackendCmd(const string& query)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PipeBackend::cleanup
      Src: /src/pdns/modules/pipebackend/pipebackend.cc:272,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 273
      start: 270
    functionDepth: 1
    functionLinenumber: 270
    functionLinenumberEnd: 273
    functionName: PipeBackend::~PipeBackend()
    functionSourceFile: /src/pdns/modules/pipebackend/pipebackend.cc
    functionUses: 0
    functionsReached:
    - PipeBackend::cleanup
    linkageType: ''
    returnType: void
    signature: void PipeBackend::~PipeBackend()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SLOG
      Src: /src/pdns/modules/pipebackend/pipebackend.cc:277,1
    - Dst: info
      Src: /src/pdns/modules/pipebackend/pipebackend.cc:278,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/pipebackend/pipebackend.cc:278,1
    - Dst: PDNSException
      Src: /src/pdns/modules/pipebackend/pipebackend.cc:279,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - ' what'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 280
      start: 275
    functionDepth: 0
    functionLinenumber: 275
    functionLinenumberEnd: 280
    functionName: PipeBackend::throwTooShortDataError
    functionSourceFile: /src/pdns/modules/pipebackend/pipebackend.cc
    functionUses: 0
    functionsReached:
    - PDNSException
    - SLOG
    - info
    - Logging::Loggable
    linkageType: ''
    returnType: void
    signature: void PipeBackend::throwTooShortDataError(const std::string& what)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: PipeBackend::launch
      Src: /src/pdns/modules/pipebackend/pipebackend.cc:293,1
    - Dst: receive
      Src: /src/pdns/modules/pipebackend/pipebackend.cc:295,1
    - Dst: stringtok
      Src: /src/pdns/modules/pipebackend/pipebackend.cc:297,1
    - Dst: vector::empty
      Src: /src/pdns/modules/pipebackend/pipebackend.cc:298,1
    - Dst: SLOG
      Src: /src/pdns/modules/pipebackend/pipebackend.cc:299,1
    - Dst: info
      Src: /src/pdns/modules/pipebackend/pipebackend.cc:300,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/pipebackend/pipebackend.cc:300,1
    - Dst: PDNSException
      Src: /src/pdns/modules/pipebackend/pipebackend.cc:301,1
    - Dst: DBException
      Src: /src/pdns/modules/pipebackend/pipebackend.cc:304,1
    - Dst: SLOG
      Src: /src/pdns/modules/pipebackend/pipebackend.cc:310,1
    - Dst: string::substr
      Src: /src/pdns/modules/pipebackend/pipebackend.cc:310,1
    - Dst: info
      Src: /src/pdns/modules/pipebackend/pipebackend.cc:311,1
    - Dst: Logging::Loggable
      Src: /src/pdns/modules/pipebackend/pipebackend.cc:311,1
    - Dst: string::substr
      Src: /src/pdns/modules/pipebackend/pipebackend.cc:311,1
    - Dst: vector::size
      Src: /src/pdns/modules/pipebackend/pipebackend.cc:318,1
    - Dst: PipeBackend::throwTooShortDataError
      Src: /src/pdns/modules/pipebackend/pipebackend.cc:319,1
    - Dst: pdns::checked_stoi_into
      Src: /src/pdns/modules/pipebackend/pipebackend.cc:323,1
    - Dst: vector::erase
      Src: /src/pdns/modules/pipebackend/pipebackend.cc:325,1
    - Dst: vector::begin
      Src: /src/pdns/modules/pipebackend/pipebackend.cc:325,1
    - Dst: vector::begin
      Src: /src/pdns/modules/pipebackend/pipebackend.cc:325,1
    - Dst: DNSName
      Src: /src/pdns/modules/pipebackend/pipebackend.cc:331,1
    - Dst: pdns::checked_stoi_into
      Src: /src/pdns/modules/pipebackend/pipebackend.cc:333,1
    - Dst: pdns::checked_stoi_into
      Src: /src/pdns/modules/pipebackend/pipebackend.cc:334,1
    - Dst: qtype::getCode
      Src: /src/pdns/modules/pipebackend/pipebackend.cc:336,1
    - Dst: content::clear
      Src: /src/pdns/modules/pipebackend/pipebackend.cc:339,1
    - Dst: vector::size
      Src: /src/pdns/modules/pipebackend/pipebackend.cc:343,1
    - Dst: PipeBackend::throwTooShortDataError
      Src: /src/pdns/modules/pipebackend/pipebackend.cc:344,1
    - Dst: vector::size
      Src: /src/pdns/modules/pipebackend/pipebackend.cc:349,1
    - Dst: PipeBackend::throwTooShortDataError
      Src: /src/pdns/modules/pipebackend/pipebackend.cc:350,1
    - Dst: vector::size
      Src: /src/pdns/modules/pipebackend/pipebackend.cc:353,1
    - Dst: content::append
      Src: /src/pdns/modules/pipebackend/pipebackend.cc:354,1
    - Dst: content::append
      Src: /src/pdns/modules/pipebackend/pipebackend.cc:355,1
    - Dst: PDNSException
      Src: /src/pdns/modules/pipebackend/pipebackend.cc:362,1
    - Dst: SLOG
      Src: /src/pdns/modules/pipebackend/pipebackend.cc:366,1
    - Dst: error
      Src: /src/pdns/modules/pipebackend/pipebackend.cc:367,1
    - Dst: SLOG
      Src: /src/pdns/modules/pipebackend/pipebackend.cc:371,1
    - Dst: error
      Src: /src/pdns/modules/pipebackend/pipebackend.cc:372,1
    - Dst: PipeBackend::cleanup
      Src: /src/pdns/modules/pipebackend/pipebackend.cc:373,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 73
    argCount: 1
    argNames:
    - ' r'
    argTypes:
    - DNSResourceRecord
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 377
      start: 282
    functionDepth: 2
    functionLinenumber: 282
    functionLinenumberEnd: 377
    functionName: PipeBackend::get
    functionSourceFile: /src/pdns/modules/pipebackend/pipebackend.cc
    functionUses: 0
    functionsReached:
    - PDNSException
    - DBException
    - receive
    - string::substr
    - content::clear
    - error
    - vector::begin
    - SLOG
    - stringtok
    - Logging::Loggable
    - content::append
    - PipeBackend::cleanup
    - PipeBackend::throwTooShortDataError
    - vector::erase
    - pdns::checked_stoi_into
    - DNSName
    - qtype::getCode
    - vector::empty
    - PipeBackend::launch
    - info
    - vector::size
    linkageType: ''
    returnType: bool
    signature: bool PipeBackend::get(DNSResourceRecord& r)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 387
      start: 386
    functionDepth: 0
    functionLinenumber: 386
    functionLinenumberEnd: 387
    functionName: PipeFactory::PipeFactory
    functionSourceFile: /src/pdns/modules/pipebackend/pipebackend.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void PipeFactory()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: declare
      Src: /src/pdns/modules/pipebackend/pipebackend.cc:391,1
    - Dst: declare
      Src: /src/pdns/modules/pipebackend/pipebackend.cc:392,1
    - Dst: declare
      Src: /src/pdns/modules/pipebackend/pipebackend.cc:393,1
    - Dst: declare
      Src: /src/pdns/modules/pipebackend/pipebackend.cc:394,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 395
      start: 389
    functionDepth: 0
    functionLinenumber: 389
    functionLinenumberEnd: 395
    functionName: PipeFactory::declareArguments
    functionSourceFile: /src/pdns/modules/pipebackend/pipebackend.cc
    functionUses: 0
    functionsReached:
    - declare
    linkageType: ''
    returnType: void
    signature: void declareArguments(const string& suffix = "") override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PipeBackend::PipeBackend
      Src: /src/pdns/modules/pipebackend/pipebackend.cc:399,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 400
      start: 397
    functionDepth: 2
    functionLinenumber: 397
    functionLinenumberEnd: 400
    functionName: PipeFactory::make
    functionSourceFile: /src/pdns/modules/pipebackend/pipebackend.cc
    functionUses: 0
    functionsReached:
    - PipeBackend::PipeBackend
    linkageType: ''
    returnType: DNSBackend
    signature: DNSBackend * make(const string& suffix = "") override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BackendMakers
      Src: /src/pdns/modules/pipebackend/pipebackend.cc:408,1
    - Dst: std::make_unique<PipeFactory>
      Src: /src/pdns/modules/pipebackend/pipebackend.cc:408,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 417
      start: 406
    functionDepth: 1
    functionLinenumber: 406
    functionLinenumberEnd: 417
    functionName: PipeLoader::PipeLoader
    functionSourceFile: /src/pdns/modules/pipebackend/pipebackend.cc
    functionUses: 0
    functionsReached:
    - BackendMakers
    - std::make_unique<PipeFactory>
    linkageType: ''
    returnType: void
    signature: void PipeLoader()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 55
    functionDepth: 0
    functionLinenumber: 55
    functionLinenumberEnd: 55
    functionName: PipeBackend::getCapabilities
    functionSourceFile: /src/pdns/modules/pipebackend/pipebackend.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int getCapabilities() override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 33
      start: 33
    functionDepth: 0
    functionLinenumber: 33
    functionLinenumberEnd: 33
    functionName: ~CoRemote()
    functionSourceFile: /src/pdns/modules/pipebackend/coprocess.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~CoRemote()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: split
      Src: /src/pdns/modules/pipebackend/coprocess.cc:46,1
    - Dst: boost::is_any_of
      Src: /src/pdns/modules/pipebackend/coprocess.cc:46,1
    - Dst: resize
      Src: /src/pdns/modules/pipebackend/coprocess.cc:48,1
    - Dst: size
      Src: /src/pdns/modules/pipebackend/coprocess.cc:48,1
    - Dst: size
      Src: /src/pdns/modules/pipebackend/coprocess.cc:49,1
    - Dst: size
      Src: /src/pdns/modules/pipebackend/coprocess.cc:51,1
    - Dst: c_str
      Src: /src/pdns/modules/pipebackend/coprocess.cc:52,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 4
    argNames:
    - ' command'
    - timeout
    - infd
    - outfd
    argTypes:
    - string
    - int
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 43
    functionDepth: 2
    functionLinenumber: 43
    functionLinenumberEnd: 55
    functionName: CoProcess::CoProcess
    functionSourceFile: /src/pdns/modules/pipebackend/coprocess.cc
    functionUses: 0
    functionsReached:
    - resize
    - size
    - boost::is_any_of
    - c_str
    - split
    linkageType: ''
    returnType: void
    signature: void CoProcess::CoProcess(const string& command, int timeout, int infd,
      int outfd)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: signal
      Src: /src/pdns/modules/pipebackend/coprocess.cc:59,1
    - Dst: access
      Src: /src/pdns/modules/pipebackend/coprocess.cc:61,1
    - Dst: PDNSException
      Src: /src/pdns/modules/pipebackend/coprocess.cc:62,1
    - Dst: string
      Src: /src/pdns/modules/pipebackend/coprocess.cc:62,1
    - Dst: stringerror
      Src: /src/pdns/modules/pipebackend/coprocess.cc:62,1
    - Dst: pipe
      Src: /src/pdns/modules/pipebackend/coprocess.cc:64,1
    - Dst: pipe
      Src: /src/pdns/modules/pipebackend/coprocess.cc:64,1
    - Dst: PDNSException
      Src: /src/pdns/modules/pipebackend/coprocess.cc:65,1
    - Dst: string
      Src: /src/pdns/modules/pipebackend/coprocess.cc:65,1
    - Dst: strerror
      Src: /src/pdns/modules/pipebackend/coprocess.cc:65,1
    - Dst: fork
      Src: /src/pdns/modules/pipebackend/coprocess.cc:67,1
    - Dst: PDNSException
      Src: /src/pdns/modules/pipebackend/coprocess.cc:68,1
    - Dst: stringerror
      Src: /src/pdns/modules/pipebackend/coprocess.cc:68,1
    - Dst: clear
      Src: /src/pdns/modules/pipebackend/coprocess.cc:71,1
    - Dst: close
      Src: /src/pdns/modules/pipebackend/coprocess.cc:72,1
    - Dst: setCloseOnExec
      Src: /src/pdns/modules/pipebackend/coprocess.cc:73,1
    - Dst: close
      Src: /src/pdns/modules/pipebackend/coprocess.cc:74,1
    - Dst: setCloseOnExec
      Src: /src/pdns/modules/pipebackend/coprocess.cc:75,1
    - Dst: setNonBlocking
      Src: /src/pdns/modules/pipebackend/coprocess.cc:78,1
    - Dst: signal
      Src: /src/pdns/modules/pipebackend/coprocess.cc:82,1
    - Dst: close
      Src: /src/pdns/modules/pipebackend/coprocess.cc:83,1
    - Dst: close
      Src: /src/pdns/modules/pipebackend/coprocess.cc:84,1
    - Dst: dup2
      Src: /src/pdns/modules/pipebackend/coprocess.cc:87,1
    - Dst: close
      Src: /src/pdns/modules/pipebackend/coprocess.cc:88,1
    - Dst: dup2
      Src: /src/pdns/modules/pipebackend/coprocess.cc:92,1
    - Dst: close
      Src: /src/pdns/modules/pipebackend/coprocess.cc:93,1
    - Dst: execv
      Src: /src/pdns/modules/pipebackend/coprocess.cc:97,1
    - Dst: const_cast<char* const*>
      Src: /src/pdns/modules/pipebackend/coprocess.cc:97,1
    - Dst: data
      Src: /src/pdns/modules/pipebackend/coprocess.cc:97,1
    - Dst: exit
      Src: /src/pdns/modules/pipebackend/coprocess.cc:98,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 33
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 57
    functionDepth: 1
    functionLinenumber: 57
    functionLinenumberEnd: 103
    functionName: CoProcess::launch
    functionSourceFile: /src/pdns/modules/pipebackend/coprocess.cc
    functionUses: 0
    functionsReached:
    - execv
    - PDNSException
    - stringerror
    - setNonBlocking
    - access
    - string
    - pipe
    - fork
    - const_cast<char* const*>
    - data
    - setCloseOnExec
    - dup2
    - strerror
    - clear
    - exit
    - close
    - signal
    linkageType: ''
    returnType: void
    signature: void CoProcess::launch()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: waitpid
      Src: /src/pdns/modules/pipebackend/coprocess.cc:109,1
    - Dst: kill
      Src: /src/pdns/modules/pipebackend/coprocess.cc:110,1
    - Dst: waitpid
      Src: /src/pdns/modules/pipebackend/coprocess.cc:111,1
    - Dst: close
      Src: /src/pdns/modules/pipebackend/coprocess.cc:115,1
    - Dst: close
      Src: /src/pdns/modules/pipebackend/coprocess.cc:116,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 105
    functionDepth: 0
    functionLinenumber: 105
    functionLinenumberEnd: 117
    functionName: CoProcess::~CoProcess()
    functionSourceFile: /src/pdns/modules/pipebackend/coprocess.cc
    functionUses: 0
    functionsReached:
    - waitpid
    - close
    - kill
    linkageType: ''
    returnType: void
    signature: void CoProcess::~CoProcess()
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: waitpid
      Src: /src/pdns/modules/pipebackend/coprocess.cc:122,1
    - Dst: PDNSException
      Src: /src/pdns/modules/pipebackend/coprocess.cc:124,1
    - Dst: std::to_string
      Src: /src/pdns/modules/pipebackend/coprocess.cc:124,1
    - Dst: std::to_string
      Src: /src/pdns/modules/pipebackend/coprocess.cc:124,1
    - Dst: getpid
      Src: /src/pdns/modules/pipebackend/coprocess.cc:124,1
    - Dst: string
      Src: /src/pdns/modules/pipebackend/coprocess.cc:124,1
    - Dst: strerror
      Src: /src/pdns/modules/pipebackend/coprocess.cc:124,1
    - Dst: WIFEXITED
      Src: /src/pdns/modules/pipebackend/coprocess.cc:126,1
    - Dst: WEXITSTATUS
      Src: /src/pdns/modules/pipebackend/coprocess.cc:127,1
    - Dst: PDNSException
      Src: /src/pdns/modules/pipebackend/coprocess.cc:128,1
    - Dst: std::to_string
      Src: /src/pdns/modules/pipebackend/coprocess.cc:128,1
    - Dst: WIFSIGNALED
      Src: /src/pdns/modules/pipebackend/coprocess.cc:130,1
    - Dst: WTERMSIG
      Src: /src/pdns/modules/pipebackend/coprocess.cc:131,1
    - Dst: std::to_string
      Src: /src/pdns/modules/pipebackend/coprocess.cc:132,1
    - Dst: WCOREDUMP
      Src: /src/pdns/modules/pipebackend/coprocess.cc:134,1
    - Dst: PDNSException
      Src: /src/pdns/modules/pipebackend/coprocess.cc:138,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 141
      start: 119
    functionDepth: 0
    functionLinenumber: 119
    functionLinenumberEnd: 141
    functionName: CoProcess::checkStatus
    functionSourceFile: /src/pdns/modules/pipebackend/coprocess.cc
    functionUses: 0
    functionsReached:
    - WIFSIGNALED
    - WIFEXITED
    - WTERMSIG
    - std::to_string
    - PDNSException
    - string
    - waitpid
    - WEXITSTATUS
    - strerror
    - getpid
    - WCOREDUMP
    linkageType: ''
    returnType: void
    signature: void CoProcess::checkStatus()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: CoProcess::checkStatus
      Src: /src/pdns/modules/pipebackend/coprocess.cc:145,1
    - Dst: string::append
      Src: /src/pdns/modules/pipebackend/coprocess.cc:147,1
    - Dst: string::size
      Src: /src/pdns/modules/pipebackend/coprocess.cc:153,1
    - Dst: write
      Src: /src/pdns/modules/pipebackend/coprocess.cc:154,1
    - Dst: string::c_str
      Src: /src/pdns/modules/pipebackend/coprocess.cc:154,1
    - Dst: string::length
      Src: /src/pdns/modules/pipebackend/coprocess.cc:154,1
    - Dst: PDNSException
      Src: /src/pdns/modules/pipebackend/coprocess.cc:156,1
    - Dst: string
      Src: /src/pdns/modules/pipebackend/coprocess.cc:156,1
    - Dst: strerror
      Src: /src/pdns/modules/pipebackend/coprocess.cc:156,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - ' snd'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 160
      start: 143
    functionDepth: 1
    functionLinenumber: 143
    functionLinenumberEnd: 160
    functionName: CoProcess::send
    functionSourceFile: /src/pdns/modules/pipebackend/coprocess.cc
    functionUses: 0
    functionsReached:
    - string::c_str
    - CoProcess::checkStatus
    - string::size
    - PDNSException
    - string::append
    - string
    - write
    - strerror
    - string::length
    linkageType: ''
    returnType: void
    signature: void CoProcess::send(const string& snd)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: clear
      Src: /src/pdns/modules/pipebackend/coprocess.cc:164,1
    - Dst: empty
      Src: /src/pdns/modules/pipebackend/coprocess.cc:167,1
    - Dst: std::move
      Src: /src/pdns/modules/pipebackend/coprocess.cc:168,1
    - Dst: find
      Src: /src/pdns/modules/pipebackend/coprocess.cc:173,1
    - Dst: size
      Src: /src/pdns/modules/pipebackend/coprocess.cc:174,1
    - Dst: resize
      Src: /src/pdns/modules/pipebackend/coprocess.cc:176,1
    - Dst: read
      Src: /src/pdns/modules/pipebackend/coprocess.cc:177,1
    - Dst: at
      Src: /src/pdns/modules/pipebackend/coprocess.cc:177,1
    - Dst: PDNSException
      Src: /src/pdns/modules/pipebackend/coprocess.cc:179,1
    - Dst: resize
      Src: /src/pdns/modules/pipebackend/coprocess.cc:182,1
    - Dst: waitForData
      Src: /src/pdns/modules/pipebackend/coprocess.cc:189,1
    - Dst: PDNSException
      Src: /src/pdns/modules/pipebackend/coprocess.cc:191,1
    - Dst: string
      Src: /src/pdns/modules/pipebackend/coprocess.cc:191,1
    - Dst: strerror
      Src: /src/pdns/modules/pipebackend/coprocess.cc:191,1
    - Dst: PDNSException
      Src: /src/pdns/modules/pipebackend/coprocess.cc:193,1
    - Dst: PDNSException
      Src: /src/pdns/modules/pipebackend/coprocess.cc:197,1
    - Dst: string
      Src: /src/pdns/modules/pipebackend/coprocess.cc:197,1
    - Dst: strerror
      Src: /src/pdns/modules/pipebackend/coprocess.cc:197,1
    - Dst: resize
      Src: /src/pdns/modules/pipebackend/coprocess.cc:201,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/modules/pipebackend/coprocess.cc:201,1
    - Dst: size
      Src: /src/pdns/modules/pipebackend/coprocess.cc:205,1
    - Dst: std::string
      Src: /src/pdns/modules/pipebackend/coprocess.cc:207,1
    - Dst: size
      Src: /src/pdns/modules/pipebackend/coprocess.cc:207,1
    - Dst: resize
      Src: /src/pdns/modules/pipebackend/coprocess.cc:210,1
    - Dst: boost::trim_right
      Src: /src/pdns/modules/pipebackend/coprocess.cc:211,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 35
    argCount: 1
    argNames:
    - ' received'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 212
      start: 162
    functionDepth: 2
    functionLinenumber: 162
    functionLinenumberEnd: 212
    functionName: CoProcess::receive
    functionSourceFile: /src/pdns/modules/pipebackend/coprocess.cc
    functionUses: 0
    functionsReached:
    - std::move
    - static_cast<size_t>
    - resize
    - read
    - PDNSException
    - string
    - waitForData
    - size
    - empty
    - boost::trim_right
    - strerror
    - clear
    - std::string
    - at
    - find
    linkageType: ''
    returnType: void
    signature: void CoProcess::receive(string& received)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CoProcess::checkStatus
      Src: /src/pdns/modules/pipebackend/coprocess.cc:216,1
    - Dst: CoProcess::send
      Src: /src/pdns/modules/pipebackend/coprocess.cc:217,1
    - Dst: CoProcess::receive
      Src: /src/pdns/modules/pipebackend/coprocess.cc:218,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - ' snd'
    - ' rcv'
    argTypes:
    - string
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 219
      start: 214
    functionDepth: 1
    functionLinenumber: 214
    functionLinenumberEnd: 219
    functionName: CoProcess::sendReceive
    functionSourceFile: /src/pdns/modules/pipebackend/coprocess.cc
    functionUses: 0
    functionsReached:
    - CoProcess::checkStatus
    - CoProcess::send
    - CoProcess::receive
    linkageType: ''
    returnType: void
    signature: void CoProcess::sendReceive(const string& snd, string& rcv)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: socket
      Src: /src/pdns/modules/pipebackend/coprocess.cc:223,1
    - Dst: PDNSException
      Src: /src/pdns/modules/pipebackend/coprocess.cc:225,1
    - Dst: string
      Src: /src/pdns/modules/pipebackend/coprocess.cc:225,1
    - Dst: strerror
      Src: /src/pdns/modules/pipebackend/coprocess.cc:225,1
    - Dst: makeUNsockaddr
      Src: /src/pdns/modules/pipebackend/coprocess.cc:228,1
    - Dst: PDNSException
      Src: /src/pdns/modules/pipebackend/coprocess.cc:229,1
    - Dst: connect
      Src: /src/pdns/modules/pipebackend/coprocess.cc:233,1
    - Dst: unixDie
      Src: /src/pdns/modules/pipebackend/coprocess.cc:234,1
    - Dst: pdns::UniqueFilePtr
      Src: /src/pdns/modules/pipebackend/coprocess.cc:236,1
    - Dst: fdopen
      Src: /src/pdns/modules/pipebackend/coprocess.cc:236,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 9
    argCount: 1
    argNames:
    - ' path'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 237
      start: 221
    functionDepth: 0
    functionLinenumber: 221
    functionLinenumberEnd: 237
    functionName: UnixRemote::UnixRemote
    functionSourceFile: /src/pdns/modules/pipebackend/coprocess.cc
    functionUses: 0
    functionsReached:
    - socket
    - PDNSException
    - unixDie
    - string
    - strerror
    - pdns::UniqueFilePtr
    - makeUNsockaddr
    - connect
    - fdopen
    linkageType: ''
    returnType: void
    signature: void UnixRemote::UnixRemote(const string& path)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: string::append
      Src: /src/pdns/modules/pipebackend/coprocess.cc:242,1
    - Dst: writen2
      Src: /src/pdns/modules/pipebackend/coprocess.cc:243,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ' line'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 244
      start: 239
    functionDepth: 0
    functionLinenumber: 239
    functionLinenumberEnd: 244
    functionName: UnixRemote::send
    functionSourceFile: /src/pdns/modules/pipebackend/coprocess.cc
    functionUses: 0
    functionsReached:
    - string::append
    - writen2
    linkageType: ''
    returnType: void
    signature: void UnixRemote::send(const string& line)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: clear
      Src: /src/pdns/modules/pipebackend/coprocess.cc:248,1
    - Dst: stringfgets
      Src: /src/pdns/modules/pipebackend/coprocess.cc:249,1
    - Dst: get
      Src: /src/pdns/modules/pipebackend/coprocess.cc:249,1
    - Dst: boost::trim_right
      Src: /src/pdns/modules/pipebackend/coprocess.cc:250,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - ' line'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 251
      start: 246
    functionDepth: 1
    functionLinenumber: 246
    functionLinenumberEnd: 251
    functionName: UnixRemote::receive
    functionSourceFile: /src/pdns/modules/pipebackend/coprocess.cc
    functionUses: 0
    functionsReached:
    - clear
    - stringfgets
    - boost::trim_right
    - get
    linkageType: ''
    returnType: void
    signature: void UnixRemote::receive(string& line)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: UnixRemote::send
      Src: /src/pdns/modules/pipebackend/coprocess.cc:256,1
    - Dst: UnixRemote::receive
      Src: /src/pdns/modules/pipebackend/coprocess.cc:257,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ' snd'
    - ' rcv'
    argTypes:
    - string
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 258
      start: 253
    functionDepth: 0
    functionLinenumber: 253
    functionLinenumberEnd: 258
    functionName: UnixRemote::sendReceive
    functionSourceFile: /src/pdns/modules/pipebackend/coprocess.cc
    functionUses: 0
    functionsReached:
    - UnixRemote::send
    - UnixRemote::receive
    linkageType: ''
    returnType: void
    signature: void UnixRemote::sendReceive(const string& snd, string& rcv)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: stat
      Src: /src/pdns/modules/pipebackend/coprocess.cc:263,1
    - Dst: c_str
      Src: /src/pdns/modules/pipebackend/coprocess.cc:263,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ' fname'
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 267
      start: 260
    functionDepth: 0
    functionLinenumber: 260
    functionLinenumberEnd: 267
    functionName: isUnixSocket
    functionSourceFile: /src/pdns/modules/pipebackend/coprocess.cc
    functionUses: 5
    functionsReached:
    - c_str
    - stat
    linkageType: ''
    returnType: bool
    signature: bool isUnixSocket(const string& fname)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CoProcess::sendReceive
      Src: /src/pdns/modules/pipebackend/coprocess.cc:275,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 281
      start: 270
    functionDepth: 2
    functionLinenumber: 270
    functionLinenumberEnd: 281
    functionName: main
    functionSourceFile: /src/pdns/modules/pipebackend/coprocess.cc
    functionUses: 91
    functionsReached:
    - CoProcess::sendReceive
    linkageType: ''
    returnType: void
    signature: void main()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - OP
    - ','
    - DST
    - ','
    - SRC
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 24
      start: 17
    functionDepth: 0
    functionLinenumber: 17
    functionLinenumberEnd: 24
    functionName: BPF_ALU64_REG
    functionSourceFile: /src/pdns/ext/libbpf/libbpf.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BPF_ALU64_REG(OP, DST, SRC)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - OP
    - ','
    - DST
    - ','
    - SRC
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 32
      start: 25
    functionDepth: 0
    functionLinenumber: 25
    functionLinenumberEnd: 32
    functionName: BPF_ALU32_REG
    functionSourceFile: /src/pdns/ext/libbpf/libbpf.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BPF_ALU32_REG(OP, DST, SRC)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - OP
    - ','
    - DST
    - ','
    - IMM
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 35
    functionDepth: 0
    functionLinenumber: 35
    functionLinenumberEnd: 42
    functionName: BPF_ALU64_IMM
    functionSourceFile: /src/pdns/ext/libbpf/libbpf.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BPF_ALU64_IMM(OP, DST, IMM)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - OP
    - ','
    - DST
    - ','
    - IMM
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 50
    functionName: BPF_ALU32_IMM
    functionSourceFile: /src/pdns/ext/libbpf/libbpf.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BPF_ALU32_IMM(OP, DST, IMM)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - DST
    - ','
    - SRC
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 53
    functionDepth: 0
    functionLinenumber: 53
    functionLinenumberEnd: 60
    functionName: BPF_MOV64_REG
    functionSourceFile: /src/pdns/ext/libbpf/libbpf.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BPF_MOV64_REG(DST, SRC)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - DST
    - ','
    - SRC
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 61
    functionDepth: 0
    functionLinenumber: 61
    functionLinenumberEnd: 68
    functionName: BPF_MOV32_REG
    functionSourceFile: /src/pdns/ext/libbpf/libbpf.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BPF_MOV32_REG(DST, SRC)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - DST
    - ','
    - IMM
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 71
    functionDepth: 0
    functionLinenumber: 71
    functionLinenumberEnd: 78
    functionName: BPF_MOV64_IMM
    functionSourceFile: /src/pdns/ext/libbpf/libbpf.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BPF_MOV64_IMM(DST, IMM)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - DST
    - ','
    - IMM
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 80
    functionDepth: 0
    functionLinenumber: 80
    functionLinenumberEnd: 82
    functionName: BPF_LD_IMM64
    functionSourceFile: /src/pdns/ext/libbpf/libbpf.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BPF_LD_IMM64(DST, IMM)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - DST
    - ','
    - MAP_FD
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 104
      start: 102
    functionDepth: 0
    functionLinenumber: 102
    functionLinenumberEnd: 104
    functionName: BPF_LD_MAP_FD
    functionSourceFile: /src/pdns/ext/libbpf/libbpf.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BPF_LD_MAP_FD(DST, MAP_FD)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - SIZE
    - ','
    - IMM
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 115
      start: 108
    functionDepth: 0
    functionLinenumber: 108
    functionLinenumberEnd: 115
    functionName: BPF_LD_ABS
    functionSourceFile: /src/pdns/ext/libbpf/libbpf.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BPF_LD_ABS(SIZE, IMM)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - SIZE
    - ','
    - DST
    - ','
    - SRC
    - ','
    - 'OFF'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 125
      start: 118
    functionDepth: 0
    functionLinenumber: 118
    functionLinenumberEnd: 125
    functionName: BPF_LDX_MEM
    functionSourceFile: /src/pdns/ext/libbpf/libbpf.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BPF_LDX_MEM(SIZE, DST, SRC, OFF)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - SIZE
    - ','
    - DST
    - ','
    - SRC
    - ','
    - 'OFF'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 135
      start: 128
    functionDepth: 0
    functionLinenumber: 128
    functionLinenumberEnd: 135
    functionName: BPF_STX_MEM
    functionSourceFile: /src/pdns/ext/libbpf/libbpf.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BPF_STX_MEM(SIZE, DST, SRC, OFF)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - SIZE
    - ','
    - DST
    - ','
    - 'OFF'
    - ','
    - IMM
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 145
      start: 138
    functionDepth: 0
    functionLinenumber: 138
    functionLinenumberEnd: 145
    functionName: BPF_ST_MEM
    functionSourceFile: /src/pdns/ext/libbpf/libbpf.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BPF_ST_MEM(SIZE, DST, OFF, IMM)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - OP
    - ','
    - DST
    - ','
    - SRC
    - ','
    - 'OFF'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 148
    functionDepth: 0
    functionLinenumber: 148
    functionLinenumberEnd: 155
    functionName: BPF_JMP_REG
    functionSourceFile: /src/pdns/ext/libbpf/libbpf.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BPF_JMP_REG(OP, DST, SRC, OFF)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - OP
    - ','
    - DST
    - ','
    - IMM
    - ','
    - 'OFF'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 165
      start: 158
    functionDepth: 0
    functionLinenumber: 158
    functionLinenumberEnd: 165
    functionName: BPF_JMP_IMM
    functionSourceFile: /src/pdns/ext/libbpf/libbpf.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BPF_JMP_IMM(OP, DST, IMM, OFF)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 11
    argNames:
    - (
    - CODE
    - ','
    - DST
    - ','
    - SRC
    - ','
    - 'OFF'
    - ','
    - IMM
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 175
      start: 168
    functionDepth: 0
    functionLinenumber: 168
    functionLinenumberEnd: 175
    functionName: BPF_RAW_INSN
    functionSourceFile: /src/pdns/ext/libbpf/libbpf.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BPF_RAW_INSN(CODE, DST, SRC, OFF, IMM)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 185
      start: 178
    functionDepth: 0
    functionLinenumber: 178
    functionLinenumberEnd: 185
    functionName: BPF_EXIT_INSN
    functionSourceFile: /src/pdns/ext/libbpf/libbpf.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BPF_EXIT_INSN()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2
      start: 1
    functionDepth: 0
    functionLinenumber: 1
    functionLinenumberEnd: 2
    functionName: fatal
    functionSourceFile: /src/pdns/ext/arc4random/log.h
    functionUses: 25
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: fatal(...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - v
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 20
      start: 19
    functionDepth: 0
    functionLinenumber: 19
    functionLinenumberEnd: 20
    functionName: U8C
    functionSourceFile: /src/pdns/ext/arc4random/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: 21
      start: 20
    functionDepth: 0
    functionLinenumber: 20
    functionLinenumberEnd: 21
    functionName: U32C
    functionSourceFile: /src/pdns/ext/arc4random/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: 23
      start: 22
    functionDepth: 0
    functionLinenumber: 22
    functionLinenumberEnd: 23
    functionName: U8V
    functionSourceFile: /src/pdns/ext/arc4random/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: 24
      start: 23
    functionDepth: 0
    functionLinenumber: 23
    functionLinenumberEnd: 24
    functionName: U32V
    functionSourceFile: /src/pdns/ext/arc4random/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: 27
      start: 25
    functionDepth: 0
    functionLinenumber: 25
    functionLinenumberEnd: 27
    functionName: ROTL32
    functionSourceFile: /src/pdns/ext/arc4random/chacha_private.h
    functionUses: 1
    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: 33
      start: 28
    functionDepth: 0
    functionLinenumber: 28
    functionLinenumberEnd: 33
    functionName: U8TO32_LITTLE
    functionSourceFile: /src/pdns/ext/arc4random/chacha_private.h
    functionUses: 6
    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: 41
      start: 34
    functionDepth: 0
    functionLinenumber: 34
    functionLinenumberEnd: 41
    functionName: U32TO8_LITTLE
    functionSourceFile: /src/pdns/ext/arc4random/chacha_private.h
    functionUses: 2
    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: 43
      start: 42
    functionDepth: 0
    functionLinenumber: 42
    functionLinenumberEnd: 43
    functionName: ROTATE
    functionSourceFile: /src/pdns/ext/arc4random/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: 44
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 44
    functionName: XOR
    functionSourceFile: /src/pdns/ext/arc4random/chacha_private.h
    functionUses: 2
    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: 45
      start: 44
    functionDepth: 0
    functionLinenumber: 44
    functionLinenumberEnd: 45
    functionName: PLUS
    functionSourceFile: /src/pdns/ext/arc4random/chacha_private.h
    functionUses: 2
    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: 46
      start: 45
    functionDepth: 0
    functionLinenumber: 45
    functionLinenumberEnd: 46
    functionName: PLUSONE
    functionSourceFile: /src/pdns/ext/arc4random/chacha_private.h
    functionUses: 2
    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: 52
      start: 47
    functionDepth: 0
    functionLinenumber: 47
    functionLinenumberEnd: 52
    functionName: QUARTERROUND
    functionSourceFile: /src/pdns/ext/arc4random/chacha_private.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: QUARTERROUND(a,b,c,d)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: U8TO32_LITTLE
      Src: /src/pdns/ext/arc4random/chacha_private.h:61,1
    - Dst: U8TO32_LITTLE
      Src: /src/pdns/ext/arc4random/chacha_private.h:62,1
    - Dst: U8TO32_LITTLE
      Src: /src/pdns/ext/arc4random/chacha_private.h:63,1
    - Dst: U8TO32_LITTLE
      Src: /src/pdns/ext/arc4random/chacha_private.h:64,1
    - Dst: U8TO32_LITTLE
      Src: /src/pdns/ext/arc4random/chacha_private.h:71,1
    - Dst: U8TO32_LITTLE
      Src: /src/pdns/ext/arc4random/chacha_private.h:72,1
    - Dst: U8TO32_LITTLE
      Src: /src/pdns/ext/arc4random/chacha_private.h:73,1
    - Dst: U8TO32_LITTLE
      Src: /src/pdns/ext/arc4random/chacha_private.h:74,1
    - Dst: U8TO32_LITTLE
      Src: /src/pdns/ext/arc4random/chacha_private.h:75,1
    - Dst: U8TO32_LITTLE
      Src: /src/pdns/ext/arc4random/chacha_private.h:76,1
    - Dst: U8TO32_LITTLE
      Src: /src/pdns/ext/arc4random/chacha_private.h:77,1
    - Dst: U8TO32_LITTLE
      Src: /src/pdns/ext/arc4random/chacha_private.h:78,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 19
    argCount: 3
    argNames:
    - x
    - k
    - kbits
    argTypes:
    - chacha_ctx*
    - u8*
    - u32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 56
    functionDepth: 0
    functionLinenumber: 56
    functionLinenumberEnd: 79
    functionName: chacha_keysetup
    functionSourceFile: /src/pdns/ext/arc4random/chacha_private.h
    functionUses: 2
    functionsReached:
    - U8TO32_LITTLE
    linkageType: ''
    returnType: void
    signature: void chacha_keysetup(chacha_ctx *x,const u8 *k,u32 kbits)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: U8TO32_LITTLE
      Src: /src/pdns/ext/arc4random/chacha_private.h:86,1
    - Dst: U8TO32_LITTLE
      Src: /src/pdns/ext/arc4random/chacha_private.h:87,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - x
    - iv
    argTypes:
    - chacha_ctx*
    - u8*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 81
    functionDepth: 0
    functionLinenumber: 81
    functionLinenumberEnd: 88
    functionName: chacha_ivsetup
    functionSourceFile: /src/pdns/ext/arc4random/chacha_private.h
    functionUses: 2
    functionsReached:
    - U8TO32_LITTLE
    linkageType: ''
    returnType: void
    signature: void chacha_ivsetup(chacha_ctx *x,const u8 *iv)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: QUARTERROUND
      Src: /src/pdns/ext/arc4random/chacha_private.h:142,1
    - Dst: QUARTERROUND
      Src: /src/pdns/ext/arc4random/chacha_private.h:143,1
    - Dst: QUARTERROUND
      Src: /src/pdns/ext/arc4random/chacha_private.h:144,1
    - Dst: QUARTERROUND
      Src: /src/pdns/ext/arc4random/chacha_private.h:145,1
    - Dst: QUARTERROUND
      Src: /src/pdns/ext/arc4random/chacha_private.h:146,1
    - Dst: QUARTERROUND
      Src: /src/pdns/ext/arc4random/chacha_private.h:147,1
    - Dst: QUARTERROUND
      Src: /src/pdns/ext/arc4random/chacha_private.h:148,1
    - Dst: QUARTERROUND
      Src: /src/pdns/ext/arc4random/chacha_private.h:149,1
    - Dst: PLUS
      Src: /src/pdns/ext/arc4random/chacha_private.h:151,1
    - Dst: PLUS
      Src: /src/pdns/ext/arc4random/chacha_private.h:152,1
    - Dst: PLUS
      Src: /src/pdns/ext/arc4random/chacha_private.h:153,1
    - Dst: PLUS
      Src: /src/pdns/ext/arc4random/chacha_private.h:154,1
    - Dst: PLUS
      Src: /src/pdns/ext/arc4random/chacha_private.h:155,1
    - Dst: PLUS
      Src: /src/pdns/ext/arc4random/chacha_private.h:156,1
    - Dst: PLUS
      Src: /src/pdns/ext/arc4random/chacha_private.h:157,1
    - Dst: PLUS
      Src: /src/pdns/ext/arc4random/chacha_private.h:158,1
    - Dst: PLUS
      Src: /src/pdns/ext/arc4random/chacha_private.h:159,1
    - Dst: PLUS
      Src: /src/pdns/ext/arc4random/chacha_private.h:160,1
    - Dst: PLUS
      Src: /src/pdns/ext/arc4random/chacha_private.h:161,1
    - Dst: PLUS
      Src: /src/pdns/ext/arc4random/chacha_private.h:162,1
    - Dst: PLUS
      Src: /src/pdns/ext/arc4random/chacha_private.h:163,1
    - Dst: PLUS
      Src: /src/pdns/ext/arc4random/chacha_private.h:164,1
    - Dst: PLUS
      Src: /src/pdns/ext/arc4random/chacha_private.h:165,1
    - Dst: PLUS
      Src: /src/pdns/ext/arc4random/chacha_private.h:166,1
    - Dst: XOR
      Src: /src/pdns/ext/arc4random/chacha_private.h:169,1
    - Dst: U8TO32_LITTLE
      Src: /src/pdns/ext/arc4random/chacha_private.h:169,1
    - Dst: XOR
      Src: /src/pdns/ext/arc4random/chacha_private.h:170,1
    - Dst: U8TO32_LITTLE
      Src: /src/pdns/ext/arc4random/chacha_private.h:170,1
    - Dst: XOR
      Src: /src/pdns/ext/arc4random/chacha_private.h:171,1
    - Dst: U8TO32_LITTLE
      Src: /src/pdns/ext/arc4random/chacha_private.h:171,1
    - Dst: XOR
      Src: /src/pdns/ext/arc4random/chacha_private.h:172,1
    - Dst: U8TO32_LITTLE
      Src: /src/pdns/ext/arc4random/chacha_private.h:172,1
    - Dst: XOR
      Src: /src/pdns/ext/arc4random/chacha_private.h:173,1
    - Dst: U8TO32_LITTLE
      Src: /src/pdns/ext/arc4random/chacha_private.h:173,1
    - Dst: XOR
      Src: /src/pdns/ext/arc4random/chacha_private.h:174,1
    - Dst: U8TO32_LITTLE
      Src: /src/pdns/ext/arc4random/chacha_private.h:174,1
    - Dst: XOR
      Src: /src/pdns/ext/arc4random/chacha_private.h:175,1
    - Dst: U8TO32_LITTLE
      Src: /src/pdns/ext/arc4random/chacha_private.h:175,1
    - Dst: XOR
      Src: /src/pdns/ext/arc4random/chacha_private.h:176,1
    - Dst: U8TO32_LITTLE
      Src: /src/pdns/ext/arc4random/chacha_private.h:176,1
    - Dst: XOR
      Src: /src/pdns/ext/arc4random/chacha_private.h:177,1
    - Dst: U8TO32_LITTLE
      Src: /src/pdns/ext/arc4random/chacha_private.h:177,1
    - Dst: XOR
      Src: /src/pdns/ext/arc4random/chacha_private.h:178,1
    - Dst: U8TO32_LITTLE
      Src: /src/pdns/ext/arc4random/chacha_private.h:178,1
    - Dst: XOR
      Src: /src/pdns/ext/arc4random/chacha_private.h:179,1
    - Dst: U8TO32_LITTLE
      Src: /src/pdns/ext/arc4random/chacha_private.h:179,1
    - Dst: XOR
      Src: /src/pdns/ext/arc4random/chacha_private.h:180,1
    - Dst: U8TO32_LITTLE
      Src: /src/pdns/ext/arc4random/chacha_private.h:180,1
    - Dst: XOR
      Src: /src/pdns/ext/arc4random/chacha_private.h:181,1
    - Dst: U8TO32_LITTLE
      Src: /src/pdns/ext/arc4random/chacha_private.h:181,1
    - Dst: XOR
      Src: /src/pdns/ext/arc4random/chacha_private.h:182,1
    - Dst: U8TO32_LITTLE
      Src: /src/pdns/ext/arc4random/chacha_private.h:182,1
    - Dst: XOR
      Src: /src/pdns/ext/arc4random/chacha_private.h:183,1
    - Dst: U8TO32_LITTLE
      Src: /src/pdns/ext/arc4random/chacha_private.h:183,1
    - Dst: XOR
      Src: /src/pdns/ext/arc4random/chacha_private.h:184,1
    - Dst: U8TO32_LITTLE
      Src: /src/pdns/ext/arc4random/chacha_private.h:184,1
    - Dst: PLUSONE
      Src: /src/pdns/ext/arc4random/chacha_private.h:187,1
    - Dst: PLUSONE
      Src: /src/pdns/ext/arc4random/chacha_private.h:189,1
    - Dst: U32TO8_LITTLE
      Src: /src/pdns/ext/arc4random/chacha_private.h:193,1
    - Dst: U32TO8_LITTLE
      Src: /src/pdns/ext/arc4random/chacha_private.h:194,1
    - Dst: U32TO8_LITTLE
      Src: /src/pdns/ext/arc4random/chacha_private.h:195,1
    - Dst: U32TO8_LITTLE
      Src: /src/pdns/ext/arc4random/chacha_private.h:196,1
    - Dst: U32TO8_LITTLE
      Src: /src/pdns/ext/arc4random/chacha_private.h:197,1
    - Dst: U32TO8_LITTLE
      Src: /src/pdns/ext/arc4random/chacha_private.h:198,1
    - Dst: U32TO8_LITTLE
      Src: /src/pdns/ext/arc4random/chacha_private.h:199,1
    - Dst: U32TO8_LITTLE
      Src: /src/pdns/ext/arc4random/chacha_private.h:200,1
    - Dst: U32TO8_LITTLE
      Src: /src/pdns/ext/arc4random/chacha_private.h:201,1
    - Dst: U32TO8_LITTLE
      Src: /src/pdns/ext/arc4random/chacha_private.h:202,1
    - Dst: U32TO8_LITTLE
      Src: /src/pdns/ext/arc4random/chacha_private.h:203,1
    - Dst: U32TO8_LITTLE
      Src: /src/pdns/ext/arc4random/chacha_private.h:204,1
    - Dst: U32TO8_LITTLE
      Src: /src/pdns/ext/arc4random/chacha_private.h:205,1
    - Dst: U32TO8_LITTLE
      Src: /src/pdns/ext/arc4random/chacha_private.h:206,1
    - Dst: U32TO8_LITTLE
      Src: /src/pdns/ext/arc4random/chacha_private.h:207,1
    - Dst: U32TO8_LITTLE
      Src: /src/pdns/ext/arc4random/chacha_private.h:208,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: 224
      start: 90
    functionDepth: 0
    functionLinenumber: 90
    functionLinenumberEnd: 224
    functionName: chacha_encrypt_bytes
    functionSourceFile: /src/pdns/ext/arc4random/chacha_private.h
    functionUses: 4
    functionsReached:
    - PLUS
    - U8TO32_LITTLE
    - XOR
    - PLUSONE
    - U32TO8_LITTLE
    - QUARTERROUND
    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:
    - (
    - a
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 13
      start: 12
    functionDepth: 0
    functionLinenumber: 12
    functionLinenumberEnd: 13
    functionName: seed_from_prngd
    functionSourceFile: /src/pdns/ext/arc4random/includes.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: seed_from_prngd(a, b)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: arc4random
      Src: /src/pdns/ext/arc4random/arc4random_uniform.c:57,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 1
    argNames:
    - upper_bound
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 39
    functionDepth: 0
    functionLinenumber: 39
    functionLinenumberEnd: 63
    functionName: arc4random_uniform
    functionSourceFile: /src/pdns/ext/arc4random/arc4random_uniform.c
    functionUses: 3
    functionsReached:
    - arc4random
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t arc4random_uniform(uint32_t upper_bound)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: RAND_bytes
      Src: /src/pdns/ext/arc4random/bsd-getentropy.c:45,1
    - Dst: fatal
      Src: /src/pdns/ext/arc4random/bsd-getentropy.c:46,1
    - Dst: ERR_get_error
      Src: /src/pdns/ext/arc4random/bsd-getentropy.c:47,1
    - Dst: getentropy
      Src: /src/pdns/ext/arc4random/bsd-getentropy.c:54,1
    - Dst: getrandom
      Src: /src/pdns/ext/arc4random/bsd-getentropy.c:58,1
    - Dst: open
      Src: /src/pdns/ext/arc4random/bsd-getentropy.c:62,1
    - Dst: seed_from_prngd
      Src: /src/pdns/ext/arc4random/bsd-getentropy.c:65,1
    - Dst: fatal
      Src: /src/pdns/ext/arc4random/bsd-getentropy.c:67,1
    - Dst: strerror
      Src: /src/pdns/ext/arc4random/bsd-getentropy.c:68,1
    - Dst: read
      Src: /src/pdns/ext/arc4random/bsd-getentropy.c:71,1
    - Dst: fatal
      Src: /src/pdns/ext/arc4random/bsd-getentropy.c:76,1
    - Dst: strerror
      Src: /src/pdns/ext/arc4random/bsd-getentropy.c:76,1
    - Dst: close
      Src: /src/pdns/ext/arc4random/bsd-getentropy.c:80,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 24
    argCount: 2
    argNames:
    - s
    - len
    argTypes:
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 41
    functionDepth: 0
    functionLinenumber: 41
    functionLinenumberEnd: 83
    functionName: _ssh_compat_getentropy
    functionSourceFile: /src/pdns/ext/arc4random/bsd-getentropy.c
    functionUses: 0
    functionsReached:
    - fatal
    - ERR_get_error
    - RAND_bytes
    - getrandom
    - read
    - open
    - getentropy
    - seed_from_prngd
    - strerror
    - close
    linkageType: ''
    returnType: int
    signature: int _ssh_compat_getentropy(void *s, size_t len)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: explicit_memset
      Src: /src/pdns/ext/arc4random/explicit_bzero.c:23,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - p
    - n
    argTypes:
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 24
      start: 20
    functionDepth: 0
    functionLinenumber: 20
    functionLinenumberEnd: 24
    functionName: explicit_bzero
    functionSourceFile: /src/pdns/ext/arc4random/explicit_bzero.c
    functionUses: 8
    functionsReached:
    - explicit_memset
    linkageType: ''
    returnType: void
    signature: void explicit_bzero(void *p, size_t n)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memset_s
      Src: /src/pdns/ext/arc4random/explicit_bzero.c:33,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - p
    - n
    argTypes:
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 34
      start: 28
    functionDepth: 0
    functionLinenumber: 28
    functionLinenumberEnd: 34
    functionName: explicit_bzero
    functionSourceFile: /src/pdns/ext/arc4random/explicit_bzero.c
    functionUses: 8
    functionsReached:
    - memset_s
    linkageType: ''
    returnType: void
    signature: void explicit_bzero(void *p, size_t n)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: __has_feature
      Src: /src/pdns/ext/arc4random/explicit_bzero.c:55,1
    - Dst: memset
      Src: /src/pdns/ext/arc4random/explicit_bzero.c:56,1
    - Dst: ssh_bzero
      Src: /src/pdns/ext/arc4random/explicit_bzero.c:60,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - p
    - n
    argTypes:
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 44
    functionDepth: 0
    functionLinenumber: 44
    functionLinenumberEnd: 61
    functionName: explicit_bzero
    functionSourceFile: /src/pdns/ext/arc4random/explicit_bzero.c
    functionUses: 8
    functionsReached:
    - memset
    - __has_feature
    - ssh_bzero
    linkageType: ''
    returnType: void
    signature: void explicit_bzero(void *p, size_t n)
  - 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: 55
      start: 54
    functionDepth: 0
    functionLinenumber: 54
    functionLinenumberEnd: 55
    functionName: getentropy
    functionSourceFile: /src/pdns/ext/arc4random/arc4random.c
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: getentropy(x, y)
  - 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: 62
      start: 61
    functionDepth: 0
    functionLinenumber: 61
    functionLinenumberEnd: 62
    functionName: minimum
    functionSourceFile: /src/pdns/ext/arc4random/arc4random.c
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: minimum(a, b)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: _rs_allocate
      Src: /src/pdns/ext/arc4random/arc4random.c:101,1
    - Dst: _exit
      Src: /src/pdns/ext/arc4random/arc4random.c:102,1
    - Dst: chacha_keysetup
      Src: /src/pdns/ext/arc4random/arc4random.c:105,1
    - Dst: chacha_ivsetup
      Src: /src/pdns/ext/arc4random/arc4random.c:106,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - buf
    - n
    argTypes:
    - u_char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 107
      start: 94
    functionDepth: 0
    functionLinenumber: 94
    functionLinenumberEnd: 107
    functionName: _rs_init
    functionSourceFile: /src/pdns/ext/arc4random/arc4random.c
    functionUses: 4
    functionsReached:
    - chacha_keysetup
    - chacha_ivsetup
    - _exit
    - _rs_allocate
    linkageType: ''
    returnType: void
    signature: void _rs_init(u_char *buf, size_t n)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: getentropy
      Src: /src/pdns/ext/arc4random/arc4random.c:115,1
    - Dst: _getentropy_fail
      Src: /src/pdns/ext/arc4random/arc4random.c:116,1
    - Dst: _rs_init
      Src: /src/pdns/ext/arc4random/arc4random.c:119,1
    - Dst: _rs_rekey
      Src: /src/pdns/ext/arc4random/arc4random.c:121,1
    - Dst: explicit_bzero
      Src: /src/pdns/ext/arc4random/arc4random.c:122,1
    - Dst: memset
      Src: /src/pdns/ext/arc4random/arc4random.c:126,1
    - Dst: chacha_encrypt_bytes
      Src: /src/pdns/ext/arc4random/arc4random.c:129,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 132
      start: 109
    functionDepth: 0
    functionLinenumber: 109
    functionLinenumberEnd: 132
    functionName: _rs_stir
    functionSourceFile: /src/pdns/ext/arc4random/arc4random.c
    functionUses: 2
    functionsReached:
    - chacha_encrypt_bytes
    - _rs_rekey
    - _rs_init
    - _getentropy_fail
    - memset
    - getentropy
    - explicit_bzero
    linkageType: ''
    returnType: void
    signature: void _rs_stir(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: _rs_forkdetect
      Src: /src/pdns/ext/arc4random/arc4random.c:137,1
    - Dst: _rs_stir
      Src: /src/pdns/ext/arc4random/arc4random.c:139,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 1
    argNames:
    - len
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 144
      start: 134
    functionDepth: 0
    functionLinenumber: 134
    functionLinenumberEnd: 144
    functionName: _rs_stir_if_needed
    functionSourceFile: /src/pdns/ext/arc4random/arc4random.c
    functionUses: 4
    functionsReached:
    - _rs_stir
    - _rs_forkdetect
    linkageType: ''
    returnType: void
    signature: void _rs_stir_if_needed(size_t len)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/pdns/ext/arc4random/arc4random.c:150,1
    - Dst: chacha_encrypt_bytes
      Src: /src/pdns/ext/arc4random/arc4random.c:153,1
    - Dst: minimum
      Src: /src/pdns/ext/arc4random/arc4random.c:159,1
    - Dst: _rs_init
      Src: /src/pdns/ext/arc4random/arc4random.c:164,1
    - Dst: memset
      Src: /src/pdns/ext/arc4random/arc4random.c:165,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - dat
    - datlen
    argTypes:
    - u_char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 167
      start: 146
    functionDepth: 0
    functionLinenumber: 146
    functionLinenumberEnd: 167
    functionName: _rs_rekey
    functionSourceFile: /src/pdns/ext/arc4random/arc4random.c
    functionUses: 7
    functionsReached:
    - _rs_init
    - memset
    - minimum
    - chacha_encrypt_bytes
    linkageType: ''
    returnType: void
    signature: void _rs_rekey(u_char *dat, size_t datlen)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: _rs_stir_if_needed
      Src: /src/pdns/ext/arc4random/arc4random.c:176,1
    - Dst: minimum
      Src: /src/pdns/ext/arc4random/arc4random.c:179,1
    - Dst: memcpy
      Src: /src/pdns/ext/arc4random/arc4random.c:182,1
    - Dst: memset
      Src: /src/pdns/ext/arc4random/arc4random.c:183,1
    - Dst: _rs_rekey
      Src: /src/pdns/ext/arc4random/arc4random.c:189,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 2
    argNames:
    - _buf
    - n
    argTypes:
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 191
      start: 169
    functionDepth: 0
    functionLinenumber: 169
    functionLinenumberEnd: 191
    functionName: _rs_random_buf
    functionSourceFile: /src/pdns/ext/arc4random/arc4random.c
    functionUses: 2
    functionsReached:
    - memcpy
    - _rs_rekey
    - _rs_stir_if_needed
    - memset
    - minimum
    linkageType: ''
    returnType: void
    signature: void _rs_random_buf(void *_buf, size_t n)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: _rs_stir_if_needed
      Src: /src/pdns/ext/arc4random/arc4random.c:198,1
    - Dst: _rs_rekey
      Src: /src/pdns/ext/arc4random/arc4random.c:200,1
    - Dst: memcpy
      Src: /src/pdns/ext/arc4random/arc4random.c:202,1
    - Dst: memset
      Src: /src/pdns/ext/arc4random/arc4random.c:203,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - val
    argTypes:
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 205
      start: 193
    functionDepth: 0
    functionLinenumber: 193
    functionLinenumberEnd: 205
    functionName: _rs_random_u32
    functionSourceFile: /src/pdns/ext/arc4random/arc4random.c
    functionUses: 2
    functionsReached:
    - _rs_rekey
    - memcpy
    - memset
    - _rs_stir_if_needed
    linkageType: ''
    returnType: void
    signature: void _rs_random_u32(uint32_t *val)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _ARC4_LOCK
      Src: /src/pdns/ext/arc4random/arc4random.c:215,1
    - Dst: _rs_random_u32
      Src: /src/pdns/ext/arc4random/arc4random.c:216,1
    - Dst: _ARC4_UNLOCK
      Src: /src/pdns/ext/arc4random/arc4random.c:217,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 219
      start: 210
    functionDepth: 0
    functionLinenumber: 210
    functionLinenumberEnd: 219
    functionName: arc4random
    functionSourceFile: /src/pdns/ext/arc4random/arc4random.c
    functionUses: 11
    functionsReached:
    - _rs_random_u32
    - _ARC4_UNLOCK
    - _ARC4_LOCK
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t arc4random(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _ARC4_LOCK
      Src: /src/pdns/ext/arc4random/arc4random.c:230,1
    - Dst: _rs_random_buf
      Src: /src/pdns/ext/arc4random/arc4random.c:231,1
    - Dst: _ARC4_UNLOCK
      Src: /src/pdns/ext/arc4random/arc4random.c:232,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - buf
    - n
    argTypes:
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 233
      start: 227
    functionDepth: 0
    functionLinenumber: 227
    functionLinenumberEnd: 233
    functionName: arc4random_buf
    functionSourceFile: /src/pdns/ext/arc4random/arc4random.c
    functionUses: 3
    functionsReached:
    - _rs_random_buf
    - _ARC4_UNLOCK
    - _ARC4_LOCK
    linkageType: ''
    returnType: void
    signature: void arc4random_buf(void *buf, size_t n)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: arc4random
      Src: /src/pdns/ext/arc4random/arc4random.c:249,1
    - Dst: explicit_bzero
      Src: /src/pdns/ext/arc4random/arc4random.c:253,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - _buf
    - n
    argTypes:
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 254
      start: 240
    functionDepth: 0
    functionLinenumber: 240
    functionLinenumberEnd: 254
    functionName: arc4random_buf
    functionSourceFile: /src/pdns/ext/arc4random/arc4random.c
    functionUses: 3
    functionsReached:
    - explicit_bzero
    - arc4random
    linkageType: ''
    returnType: void
    signature: void arc4random_buf(void *_buf, size_t n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 32
      start: 31
    functionDepth: 0
    functionLinenumber: 31
    functionLinenumberEnd: 32
    functionName: _ARC4_LOCK
    functionSourceFile: /src/pdns/ext/arc4random/arc4random.h
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: _ARC4_LOCK()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 33
      start: 32
    functionDepth: 0
    functionLinenumber: 32
    functionLinenumberEnd: 33
    functionName: _ARC4_UNLOCK
    functionSourceFile: /src/pdns/ext/arc4random/arc4random.h
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: _ARC4_UNLOCK()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fatal
      Src: /src/pdns/ext/arc4random/arc4random.h:38,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 39
      start: 35
    functionDepth: 0
    functionLinenumber: 35
    functionLinenumberEnd: 39
    functionName: _getentropy_fail
    functionSourceFile: /src/pdns/ext/arc4random/arc4random.h
    functionUses: 3
    functionsReached:
    - fatal
    linkageType: ''
    returnType: void
    signature: void _getentropy_fail(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 47
    functionName: _rs_forkhandler
    functionSourceFile: /src/pdns/ext/arc4random/arc4random.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void _rs_forkhandler(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: getpid
      Src: /src/pdns/ext/arc4random/arc4random.h:53,1
    - Dst: memset
      Src: /src/pdns/ext/arc4random/arc4random.h:59,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 49
    functionDepth: 0
    functionLinenumber: 49
    functionLinenumberEnd: 61
    functionName: _rs_forkdetect
    functionSourceFile: /src/pdns/ext/arc4random/arc4random.h
    functionUses: 3
    functionsReached:
    - memset
    - getpid
    linkageType: ''
    returnType: void
    signature: void _rs_forkdetect(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: mmap
      Src: /src/pdns/ext/arc4random/arc4random.h:67,1
    - Dst: mmap
      Src: /src/pdns/ext/arc4random/arc4random.h:71,1
    - Dst: munmap
      Src: /src/pdns/ext/arc4random/arc4random.h:73,1
    - Dst: calloc
      Src: /src/pdns/ext/arc4random/arc4random.h:78,1
    - Dst: calloc
      Src: /src/pdns/ext/arc4random/arc4random.h:80,1
    - Dst: free
      Src: /src/pdns/ext/arc4random/arc4random.h:81,1
    - Dst: _ARC4_ATFORK
      Src: /src/pdns/ext/arc4random/arc4random.h:87,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 2
    argNames:
    - rsp
    - rsxp
    argTypes:
    - struct _rs**
    - struct _rsx**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 63
    functionDepth: 0
    functionLinenumber: 63
    functionLinenumberEnd: 89
    functionName: _rs_allocate
    functionSourceFile: /src/pdns/ext/arc4random/arc4random.h
    functionUses: 3
    functionsReached:
    - free
    - mmap
    - munmap
    - _ARC4_ATFORK
    - calloc
    linkageType: ''
    returnType: int
    signature: int _rs_allocate(struct _rs **rsp, struct _rsx **rsxp)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/ext/yahttp/yahttp/url.hpp:17,1
    - Dst: find_first_of
      Src: /src/pdns/ext/yahttp/yahttp/url.hpp:18,1
    - Dst: substr
      Src: /src/pdns/ext/yahttp/yahttp/url.hpp:19,1
    - Dst: compare
      Src: /src/pdns/ext/yahttp/yahttp/url.hpp:23,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 2
    argNames:
    - ' url'
    - pos
    argTypes:
    - std::string
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 28
      start: 15
    functionDepth: 0
    functionLinenumber: 15
    functionLinenumberEnd: 28
    functionName: YaHTTP::URL::parseSchema
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/url.hpp
    functionUses: 4
    functionsReached:
    - find_first_of
    - compare
    - substr
    - size
    linkageType: ''
    returnType: bool
    signature: bool parseSchema(const std::string& url, size_t &pos)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/ext/yahttp/yahttp/url.hpp:32,1
    - Dst: find_first_of
      Src: /src/pdns/ext/yahttp/yahttp/url.hpp:33,1
    - Dst: substr
      Src: /src/pdns/ext/yahttp/yahttp/url.hpp:34,1
    - Dst: size
      Src: /src/pdns/ext/yahttp/yahttp/url.hpp:36,1
    - Dst: substr
      Src: /src/pdns/ext/yahttp/yahttp/url.hpp:38,1
    - Dst: at
      Src: /src/pdns/ext/yahttp/yahttp/url.hpp:41,1
    - Dst: find_first_of
      Src: /src/pdns/ext/yahttp/yahttp/url.hpp:42,1
    - Dst: find_first_of
      Src: /src/pdns/ext/yahttp/yahttp/url.hpp:47,1
    - Dst: substr
      Src: /src/pdns/ext/yahttp/yahttp/url.hpp:48,1
    - Dst: substr
      Src: /src/pdns/ext/yahttp/yahttp/url.hpp:51,1
    - Dst: find_first_of
      Src: /src/pdns/ext/yahttp/yahttp/url.hpp:52,1
    - Dst: substr
      Src: /src/pdns/ext/yahttp/yahttp/url.hpp:53,1
    - Dst: substr
      Src: /src/pdns/ext/yahttp/yahttp/url.hpp:55,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 25
    argCount: 2
    argNames:
    - ' url'
    - pos
    argTypes:
    - std::string
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 30
    functionDepth: 0
    functionLinenumber: 30
    functionLinenumberEnd: 58
    functionName: YaHTTP::URL::parseHost
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/url.hpp
    functionUses: 4
    functionsReached:
    - find_first_of
    - substr
    - at
    - size
    linkageType: ''
    returnType: bool
    signature: bool parseHost(const std::string& url, size_t &pos)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/ext/yahttp/yahttp/url.hpp:62,1
    - Dst: find_first_of
      Src: /src/pdns/ext/yahttp/yahttp/url.hpp:64,1
    - Dst: find_first_of
      Src: /src/pdns/ext/yahttp/yahttp/url.hpp:65,1
    - Dst: substr
      Src: /src/pdns/ext/yahttp/yahttp/url.hpp:68,1
    - Dst: substr
      Src: /src/pdns/ext/yahttp/yahttp/url.hpp:69,1
    - Dst: Utility::decodeURL
      Src: /src/pdns/ext/yahttp/yahttp/url.hpp:70,1
    - Dst: substr
      Src: /src/pdns/ext/yahttp/yahttp/url.hpp:72,1
    - Dst: Utility::decodeURL
      Src: /src/pdns/ext/yahttp/yahttp/url.hpp:75,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 2
    argNames:
    - ' url'
    - pos
    argTypes:
    - std::string
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 60
    functionDepth: 0
    functionLinenumber: 60
    functionLinenumberEnd: 77
    functionName: YaHTTP::URL::parseUserPass
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/url.hpp
    functionUses: 4
    functionsReached:
    - find_first_of
    - substr
    - Utility::decodeURL
    - size
    linkageType: ''
    returnType: bool
    signature: bool parseUserPass(const std::string& url, size_t &pos)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/ext/yahttp/yahttp/url.hpp:81,1
    - Dst: find_first_of
      Src: /src/pdns/ext/yahttp/yahttp/url.hpp:83,1
    - Dst: substr
      Src: /src/pdns/ext/yahttp/yahttp/url.hpp:84,1
    - Dst: size
      Src: /src/pdns/ext/yahttp/yahttp/url.hpp:85,1
    - Dst: substr
      Src: /src/pdns/ext/yahttp/yahttp/url.hpp:87,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 2
    argNames:
    - ' url'
    - pos
    argTypes:
    - std::string
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 79
    functionDepth: 0
    functionLinenumber: 79
    functionLinenumberEnd: 91
    functionName: YaHTTP::URL::parsePath
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/url.hpp
    functionUses: 4
    functionsReached:
    - find_first_of
    - substr
    - size
    linkageType: ''
    returnType: bool
    signature: bool parsePath(const std::string& url, size_t &pos)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/ext/yahttp/yahttp/url.hpp:95,1
    - Dst: find_first_of
      Src: /src/pdns/ext/yahttp/yahttp/url.hpp:98,1
    - Dst: substr
      Src: /src/pdns/ext/yahttp/yahttp/url.hpp:99,1
    - Dst: size
      Src: /src/pdns/ext/yahttp/yahttp/url.hpp:100,1
    - Dst: substr
      Src: /src/pdns/ext/yahttp/yahttp/url.hpp:102,1
    - Dst: size
      Src: /src/pdns/ext/yahttp/yahttp/url.hpp:105,1
    - Dst: end
      Src: /src/pdns/ext/yahttp/yahttp/url.hpp:105,1
    - Dst: resize
      Src: /src/pdns/ext/yahttp/yahttp/url.hpp:105,1
    - Dst: size
      Src: /src/pdns/ext/yahttp/yahttp/url.hpp:105,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 2
    argNames:
    - ' url'
    - pos
    argTypes:
    - std::string
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 107
      start: 93
    functionDepth: 2
    functionLinenumber: 93
    functionLinenumberEnd: 107
    functionName: YaHTTP::URL::parseParameters
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/url.hpp
    functionUses: 4
    functionsReached:
    - resize
    - end
    - size
    - find_first_of
    - substr
    linkageType: ''
    returnType: bool
    signature: bool parseParameters(const std::string& url, size_t &pos)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/ext/yahttp/yahttp/url.hpp:110,1
    - Dst: substr
      Src: /src/pdns/ext/yahttp/yahttp/url.hpp:112,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - ' url'
    - pos
    argTypes:
    - std::string
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 109
    functionDepth: 0
    functionLinenumber: 109
    functionLinenumberEnd: 114
    functionName: YaHTTP::URL::parseAnchor
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/url.hpp
    functionUses: 4
    functionsReached:
    - substr
    - size
    linkageType: ''
    returnType: bool
    signature: bool parseAnchor(const std::string& url, size_t &pos)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 118
      start: 116
    functionDepth: 0
    functionLinenumber: 116
    functionLinenumberEnd: 118
    functionName: YaHTTP::URL::initialize
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/url.hpp
    functionUses: 8
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void initialize()
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/ext/yahttp/yahttp/url.hpp:125,1
    - Dst: empty
      Src: /src/pdns/ext/yahttp/yahttp/url.hpp:127,1
    - Dst: empty
      Src: /src/pdns/ext/yahttp/yahttp/url.hpp:132,1
    - Dst: empty
      Src: /src/pdns/ext/yahttp/yahttp/url.hpp:133,1
    - Dst: Utility::encodeURL
      Src: /src/pdns/ext/yahttp/yahttp/url.hpp:134,1
    - Dst: Utility::encodeURL
      Src: /src/pdns/ext/yahttp/yahttp/url.hpp:134,1
    - Dst: Utility::encodeURL
      Src: /src/pdns/ext/yahttp/yahttp/url.hpp:136,1
    - Dst: empty
      Src: /src/pdns/ext/yahttp/yahttp/url.hpp:138,1
    - Dst: empty
      Src: /src/pdns/ext/yahttp/yahttp/url.hpp:146,1
    - Dst: empty
      Src: /src/pdns/ext/yahttp/yahttp/url.hpp:151,1
    - Dst: std::ostringstream::str
      Src: /src/pdns/ext/yahttp/yahttp/url.hpp:153,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 25
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 154
      start: 121
    functionDepth: 0
    functionLinenumber: 121
    functionLinenumberEnd: 154
    functionName: YaHTTP::URL::to_string
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/url.hpp
    functionUses: 0
    functionsReached:
    - empty
    - std::ostringstream::str
    - Utility::encodeURL
    linkageType: ''
    returnType: std::string
    signature: std::string to_string() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::URL::initialize
      Src: /src/pdns/ext/yahttp/yahttp/url.hpp:166,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 166
      start: 166
    functionDepth: 0
    functionLinenumber: 166
    functionLinenumberEnd: 166
    functionName: YaHTTP::URL::URL
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/url.hpp
    functionUses: 0
    functionsReached:
    - YaHTTP::URL::initialize
    linkageType: ''
    returnType: void
    signature: void URL()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::URL::parse
      Src: /src/pdns/ext/yahttp/yahttp/url.hpp:168,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' url'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 169
      start: 167
    functionDepth: 0
    functionLinenumber: 167
    functionLinenumberEnd: 169
    functionName: YaHTTP::URL::URL
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/url.hpp
    functionUses: 0
    functionsReached:
    - YaHTTP::URL::parse
    linkageType: ''
    returnType: void
    signature: void URL(const std::string& url)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::URL::parse
      Src: /src/pdns/ext/yahttp/yahttp/url.hpp:172,1
    - Dst: std::string
      Src: /src/pdns/ext/yahttp/yahttp/url.hpp:172,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - url
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 173
      start: 171
    functionDepth: 0
    functionLinenumber: 171
    functionLinenumberEnd: 173
    functionName: YaHTTP::URL::URL
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/url.hpp
    functionUses: 0
    functionsReached:
    - std::string
    - YaHTTP::URL::parse
    linkageType: ''
    returnType: void
    signature: void URL(const char *url)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::URL::initialize
      Src: /src/pdns/ext/yahttp/yahttp/url.hpp:177,1
    - Dst: size
      Src: /src/pdns/ext/yahttp/yahttp/url.hpp:179,1
    - Dst: begin
      Src: /src/pdns/ext/yahttp/yahttp/url.hpp:181,1
    - Dst: YaHTTP::URL::parseSchema
      Src: /src/pdns/ext/yahttp/yahttp/url.hpp:182,1
    - Dst: substr
      Src: /src/pdns/ext/yahttp/yahttp/url.hpp:184,1
    - Dst: YaHTTP::URL::parseUserPass
      Src: /src/pdns/ext/yahttp/yahttp/url.hpp:187,1
    - Dst: YaHTTP::URL::parseHost
      Src: /src/pdns/ext/yahttp/yahttp/url.hpp:188,1
    - Dst: YaHTTP::URL::parsePath
      Src: /src/pdns/ext/yahttp/yahttp/url.hpp:190,1
    - Dst: YaHTTP::URL::parseParameters
      Src: /src/pdns/ext/yahttp/yahttp/url.hpp:191,1
    - Dst: YaHTTP::URL::parseAnchor
      Src: /src/pdns/ext/yahttp/yahttp/url.hpp:192,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 21
    argCount: 1
    argNames:
    - ' url'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 193
      start: 175
    functionDepth: 0
    functionLinenumber: 175
    functionLinenumberEnd: 193
    functionName: YaHTTP::URL::parse
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/url.hpp
    functionUses: 10
    functionsReached:
    - YaHTTP::URL::parseParameters
    - size
    - YaHTTP::URL::initialize
    - YaHTTP::URL::parseAnchor
    - YaHTTP::URL::parseSchema
    - substr
    - YaHTTP::URL::parsePath
    - begin
    - YaHTTP::URL::parseHost
    - YaHTTP::URL::parseUserPass
    linkageType: ''
    returnType: bool
    signature: bool parse(const std::string& url)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: to_string
      Src: /src/pdns/ext/yahttp/yahttp/url.hpp:196,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ' os'
    - ' url'
    argTypes:
    - std::ostream
    - URL
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 198
      start: 195
    functionDepth: 0
    functionLinenumber: 195
    functionLinenumberEnd: 198
    functionName: '& operator<<(std::ostream& os, const URL& url)'
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/url.hpp
    functionUses: 0
    functionsReached:
    - to_string
    linkageType: ''
    returnType: std::ostream
    signature: std::ostream & operator<<(std::ostream& os, const URL& url)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/ext/yahttp/yahttp/url.hpp:17,1
    - Dst: find_first_of
      Src: /src/pdns/ext/yahttp/yahttp/url.hpp:18,1
    - Dst: substr
      Src: /src/pdns/ext/yahttp/yahttp/url.hpp:19,1
    - Dst: compare
      Src: /src/pdns/ext/yahttp/yahttp/url.hpp:23,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 2
    argNames:
    - ' url'
    - pos
    argTypes:
    - std::string
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 28
      start: 15
    functionDepth: 0
    functionLinenumber: 15
    functionLinenumberEnd: 28
    functionName: YaHTTP::URL::parseSchema
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/url.hpp
    functionUses: 5
    functionsReached:
    - find_first_of
    - compare
    - substr
    - size
    linkageType: ''
    returnType: bool
    signature: bool parseSchema(const std::string& url, size_t &pos)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/ext/yahttp/yahttp/url.hpp:32,1
    - Dst: find_first_of
      Src: /src/pdns/ext/yahttp/yahttp/url.hpp:33,1
    - Dst: substr
      Src: /src/pdns/ext/yahttp/yahttp/url.hpp:34,1
    - Dst: size
      Src: /src/pdns/ext/yahttp/yahttp/url.hpp:36,1
    - Dst: substr
      Src: /src/pdns/ext/yahttp/yahttp/url.hpp:38,1
    - Dst: at
      Src: /src/pdns/ext/yahttp/yahttp/url.hpp:41,1
    - Dst: find_first_of
      Src: /src/pdns/ext/yahttp/yahttp/url.hpp:42,1
    - Dst: find_first_of
      Src: /src/pdns/ext/yahttp/yahttp/url.hpp:47,1
    - Dst: substr
      Src: /src/pdns/ext/yahttp/yahttp/url.hpp:48,1
    - Dst: substr
      Src: /src/pdns/ext/yahttp/yahttp/url.hpp:51,1
    - Dst: find_first_of
      Src: /src/pdns/ext/yahttp/yahttp/url.hpp:52,1
    - Dst: substr
      Src: /src/pdns/ext/yahttp/yahttp/url.hpp:53,1
    - Dst: substr
      Src: /src/pdns/ext/yahttp/yahttp/url.hpp:55,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 25
    argCount: 2
    argNames:
    - ' url'
    - pos
    argTypes:
    - std::string
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 30
    functionDepth: 0
    functionLinenumber: 30
    functionLinenumberEnd: 58
    functionName: YaHTTP::URL::parseHost
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/url.hpp
    functionUses: 5
    functionsReached:
    - find_first_of
    - substr
    - at
    - size
    linkageType: ''
    returnType: bool
    signature: bool parseHost(const std::string& url, size_t &pos)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/ext/yahttp/yahttp/url.hpp:62,1
    - Dst: find_first_of
      Src: /src/pdns/ext/yahttp/yahttp/url.hpp:64,1
    - Dst: find_first_of
      Src: /src/pdns/ext/yahttp/yahttp/url.hpp:65,1
    - Dst: substr
      Src: /src/pdns/ext/yahttp/yahttp/url.hpp:68,1
    - Dst: substr
      Src: /src/pdns/ext/yahttp/yahttp/url.hpp:69,1
    - Dst: Utility::decodeURL
      Src: /src/pdns/ext/yahttp/yahttp/url.hpp:70,1
    - Dst: substr
      Src: /src/pdns/ext/yahttp/yahttp/url.hpp:72,1
    - Dst: Utility::decodeURL
      Src: /src/pdns/ext/yahttp/yahttp/url.hpp:75,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 2
    argNames:
    - ' url'
    - pos
    argTypes:
    - std::string
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 60
    functionDepth: 0
    functionLinenumber: 60
    functionLinenumberEnd: 77
    functionName: YaHTTP::URL::parseUserPass
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/url.hpp
    functionUses: 5
    functionsReached:
    - find_first_of
    - substr
    - Utility::decodeURL
    - size
    linkageType: ''
    returnType: bool
    signature: bool parseUserPass(const std::string& url, size_t &pos)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/ext/yahttp/yahttp/url.hpp:81,1
    - Dst: find_first_of
      Src: /src/pdns/ext/yahttp/yahttp/url.hpp:83,1
    - Dst: substr
      Src: /src/pdns/ext/yahttp/yahttp/url.hpp:84,1
    - Dst: size
      Src: /src/pdns/ext/yahttp/yahttp/url.hpp:85,1
    - Dst: substr
      Src: /src/pdns/ext/yahttp/yahttp/url.hpp:87,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 2
    argNames:
    - ' url'
    - pos
    argTypes:
    - std::string
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 79
    functionDepth: 0
    functionLinenumber: 79
    functionLinenumberEnd: 91
    functionName: YaHTTP::URL::parsePath
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/url.hpp
    functionUses: 5
    functionsReached:
    - find_first_of
    - substr
    - size
    linkageType: ''
    returnType: bool
    signature: bool parsePath(const std::string& url, size_t &pos)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/ext/yahttp/yahttp/url.hpp:95,1
    - Dst: find_first_of
      Src: /src/pdns/ext/yahttp/yahttp/url.hpp:98,1
    - Dst: substr
      Src: /src/pdns/ext/yahttp/yahttp/url.hpp:99,1
    - Dst: size
      Src: /src/pdns/ext/yahttp/yahttp/url.hpp:100,1
    - Dst: substr
      Src: /src/pdns/ext/yahttp/yahttp/url.hpp:102,1
    - Dst: size
      Src: /src/pdns/ext/yahttp/yahttp/url.hpp:105,1
    - Dst: end
      Src: /src/pdns/ext/yahttp/yahttp/url.hpp:105,1
    - Dst: resize
      Src: /src/pdns/ext/yahttp/yahttp/url.hpp:105,1
    - Dst: size
      Src: /src/pdns/ext/yahttp/yahttp/url.hpp:105,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 2
    argNames:
    - ' url'
    - pos
    argTypes:
    - std::string
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 107
      start: 93
    functionDepth: 2
    functionLinenumber: 93
    functionLinenumberEnd: 107
    functionName: YaHTTP::URL::parseParameters
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/url.hpp
    functionUses: 5
    functionsReached:
    - resize
    - end
    - size
    - find_first_of
    - substr
    linkageType: ''
    returnType: bool
    signature: bool parseParameters(const std::string& url, size_t &pos)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/ext/yahttp/yahttp/url.hpp:110,1
    - Dst: substr
      Src: /src/pdns/ext/yahttp/yahttp/url.hpp:112,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - ' url'
    - pos
    argTypes:
    - std::string
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 109
    functionDepth: 0
    functionLinenumber: 109
    functionLinenumberEnd: 114
    functionName: YaHTTP::URL::parseAnchor
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/url.hpp
    functionUses: 5
    functionsReached:
    - substr
    - size
    linkageType: ''
    returnType: bool
    signature: bool parseAnchor(const std::string& url, size_t &pos)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 118
      start: 116
    functionDepth: 0
    functionLinenumber: 116
    functionLinenumberEnd: 118
    functionName: YaHTTP::URL::initialize
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/url.hpp
    functionUses: 10
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void initialize()
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: empty
      Src: /src/pdns/ext/yahttp/yahttp/url.hpp:125,1
    - Dst: empty
      Src: /src/pdns/ext/yahttp/yahttp/url.hpp:127,1
    - Dst: empty
      Src: /src/pdns/ext/yahttp/yahttp/url.hpp:132,1
    - Dst: empty
      Src: /src/pdns/ext/yahttp/yahttp/url.hpp:133,1
    - Dst: Utility::encodeURL
      Src: /src/pdns/ext/yahttp/yahttp/url.hpp:134,1
    - Dst: Utility::encodeURL
      Src: /src/pdns/ext/yahttp/yahttp/url.hpp:134,1
    - Dst: Utility::encodeURL
      Src: /src/pdns/ext/yahttp/yahttp/url.hpp:136,1
    - Dst: empty
      Src: /src/pdns/ext/yahttp/yahttp/url.hpp:138,1
    - Dst: empty
      Src: /src/pdns/ext/yahttp/yahttp/url.hpp:146,1
    - Dst: empty
      Src: /src/pdns/ext/yahttp/yahttp/url.hpp:151,1
    - Dst: std::ostringstream::str
      Src: /src/pdns/ext/yahttp/yahttp/url.hpp:153,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 25
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 154
      start: 121
    functionDepth: 0
    functionLinenumber: 121
    functionLinenumberEnd: 154
    functionName: YaHTTP::URL::to_string
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/url.hpp
    functionUses: 0
    functionsReached:
    - empty
    - std::ostringstream::str
    - Utility::encodeURL
    linkageType: ''
    returnType: std::string
    signature: std::string to_string() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::URL::initialize
      Src: /src/pdns/ext/yahttp/yahttp/url.hpp:166,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 166
      start: 166
    functionDepth: 0
    functionLinenumber: 166
    functionLinenumberEnd: 166
    functionName: YaHTTP::URL::URL
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/url.hpp
    functionUses: 0
    functionsReached:
    - YaHTTP::URL::initialize
    linkageType: ''
    returnType: void
    signature: void URL()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::URL::parse
      Src: /src/pdns/ext/yahttp/yahttp/url.hpp:168,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' url'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 169
      start: 167
    functionDepth: 0
    functionLinenumber: 167
    functionLinenumberEnd: 169
    functionName: YaHTTP::URL::URL
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/url.hpp
    functionUses: 0
    functionsReached:
    - YaHTTP::URL::parse
    linkageType: ''
    returnType: void
    signature: void URL(const std::string& url)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::URL::parse
      Src: /src/pdns/ext/yahttp/yahttp/url.hpp:172,1
    - Dst: std::string
      Src: /src/pdns/ext/yahttp/yahttp/url.hpp:172,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - url
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 173
      start: 171
    functionDepth: 0
    functionLinenumber: 171
    functionLinenumberEnd: 173
    functionName: YaHTTP::URL::URL
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/url.hpp
    functionUses: 0
    functionsReached:
    - std::string
    - YaHTTP::URL::parse
    linkageType: ''
    returnType: void
    signature: void URL(const char *url)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::URL::initialize
      Src: /src/pdns/ext/yahttp/yahttp/url.hpp:177,1
    - Dst: size
      Src: /src/pdns/ext/yahttp/yahttp/url.hpp:179,1
    - Dst: begin
      Src: /src/pdns/ext/yahttp/yahttp/url.hpp:181,1
    - Dst: YaHTTP::URL::parseSchema
      Src: /src/pdns/ext/yahttp/yahttp/url.hpp:182,1
    - Dst: substr
      Src: /src/pdns/ext/yahttp/yahttp/url.hpp:184,1
    - Dst: YaHTTP::URL::parseUserPass
      Src: /src/pdns/ext/yahttp/yahttp/url.hpp:187,1
    - Dst: YaHTTP::URL::parseHost
      Src: /src/pdns/ext/yahttp/yahttp/url.hpp:188,1
    - Dst: YaHTTP::URL::parsePath
      Src: /src/pdns/ext/yahttp/yahttp/url.hpp:190,1
    - Dst: YaHTTP::URL::parseParameters
      Src: /src/pdns/ext/yahttp/yahttp/url.hpp:191,1
    - Dst: YaHTTP::URL::parseAnchor
      Src: /src/pdns/ext/yahttp/yahttp/url.hpp:192,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 21
    argCount: 1
    argNames:
    - ' url'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 193
      start: 175
    functionDepth: 0
    functionLinenumber: 175
    functionLinenumberEnd: 193
    functionName: YaHTTP::URL::parse
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/url.hpp
    functionUses: 12
    functionsReached:
    - YaHTTP::URL::parseParameters
    - size
    - YaHTTP::URL::initialize
    - YaHTTP::URL::parseAnchor
    - YaHTTP::URL::parseSchema
    - substr
    - YaHTTP::URL::parsePath
    - begin
    - YaHTTP::URL::parseHost
    - YaHTTP::URL::parseUserPass
    linkageType: ''
    returnType: bool
    signature: bool parse(const std::string& url)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: to_string
      Src: /src/pdns/ext/yahttp/yahttp/url.hpp:196,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ' os'
    - ' url'
    argTypes:
    - std::ostream
    - URL
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 198
      start: 195
    functionDepth: 0
    functionLinenumber: 195
    functionLinenumberEnd: 198
    functionName: '& operator<<(std::ostream& os, const URL& url)'
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/url.hpp
    functionUses: 0
    functionsReached:
    - to_string
    linkageType: ''
    returnType: std::ostream
    signature: std::ostream & operator<<(std::ostream& os, const URL& url)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DateTime
      Src: /src/pdns/ext/yahttp/yahttp/cookie.hpp:9,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 10
      start: 5
    functionDepth: 0
    functionLinenumber: 5
    functionLinenumberEnd: 10
    functionName: YaHTTP::Cookie::Cookie
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/cookie.hpp
    functionUses: 0
    functionsReached:
    - DateTime
    linkageType: ''
    returnType: void
    signature: void Cookie()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - rhs
    argTypes:
    - Cookie
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 20
      start: 12
    functionDepth: 0
    functionLinenumber: 12
    functionLinenumberEnd: 20
    functionName: YaHTTP::Cookie::Cookie
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/cookie.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Cookie(const Cookie &rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 1
    argNames:
    - rhs
    argTypes:
    - Cookie
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 31
      start: 22
    functionDepth: 0
    functionLinenumber: 22
    functionLinenumberEnd: 31
    functionName: '& operator=(const Cookie &rhs)'
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/cookie.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Cookie
    signature: Cookie & operator=(const Cookie &rhs)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: Utility::encodeURL
      Src: /src/pdns/ext/yahttp/yahttp/cookie.hpp:44,1
    - Dst: Utility::encodeURL
      Src: /src/pdns/ext/yahttp/yahttp/cookie.hpp:44,1
    - Dst: cookie_str
      Src: /src/pdns/ext/yahttp/yahttp/cookie.hpp:47,1
    - Dst: size
      Src: /src/pdns/ext/yahttp/yahttp/cookie.hpp:48,1
    - Dst: size
      Src: /src/pdns/ext/yahttp/yahttp/cookie.hpp:50,1
    - Dst: std::ostringstream::str
      Src: /src/pdns/ext/yahttp/yahttp/cookie.hpp:56,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 42
    functionDepth: 0
    functionLinenumber: 42
    functionLinenumberEnd: 57
    functionName: YaHTTP::Cookie::str
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/cookie.hpp
    functionUses: 0
    functionsReached:
    - std::ostringstream::str
    - size
    - Utility::encodeURL
    - cookie_str
    linkageType: ''
    returnType: std::string
    signature: std::string str() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 65
    functionDepth: 0
    functionLinenumber: 65
    functionLinenumberEnd: 65
    functionName: YaHTTP::CookieJar::CookieJar
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/cookie.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void CookieJar()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - CookieJar
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 66
    functionDepth: 0
    functionLinenumber: 66
    functionLinenumberEnd: 68
    functionName: YaHTTP::CookieJar::CookieJar
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/cookie.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void CookieJar(const CookieJar & rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - CookieJar
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 69
    functionDepth: 0
    functionLinenumber: 69
    functionLinenumberEnd: 69
    functionName: '& operator=(const CookieJar & rhs)'
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/cookie.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: CookieJar
    signature: CookieJar & operator=(const CookieJar & rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::CookieJar::cookies::clear
      Src: /src/pdns/ext/yahttp/yahttp/cookie.hpp:72,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 71
    functionDepth: 1
    functionLinenumber: 71
    functionLinenumberEnd: 73
    functionName: YaHTTP::CookieJar::clear
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/cookie.hpp
    functionUses: 0
    functionsReached:
    - YaHTTP::CookieJar::cookies::clear
    linkageType: ''
    returnType: void
    signature: void clear()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::string::find
      Src: /src/pdns/ext/yahttp/yahttp/cookie.hpp:77,1
    - Dst: ParseError
      Src: /src/pdns/ext/yahttp/yahttp/cookie.hpp:78,1
    - Dst: std::string
      Src: /src/pdns/ext/yahttp/yahttp/cookie.hpp:79,1
    - Dst: std::string::begin
      Src: /src/pdns/ext/yahttp/yahttp/cookie.hpp:79,1
    - Dst: std::string::begin
      Src: /src/pdns/ext/yahttp/yahttp/cookie.hpp:79,1
    - Dst: std::string
      Src: /src/pdns/ext/yahttp/yahttp/cookie.hpp:80,1
    - Dst: std::string::begin
      Src: /src/pdns/ext/yahttp/yahttp/cookie.hpp:80,1
    - Dst: std::string::end
      Src: /src/pdns/ext/yahttp/yahttp/cookie.hpp:80,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - keyvalue
    - key
    - value
    argTypes:
    - std::string
    - std::string
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 75
    functionDepth: 0
    functionLinenumber: 75
    functionLinenumberEnd: 81
    functionName: YaHTTP::CookieJar::keyValuePair
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/cookie.hpp
    functionUses: 8
    functionsReached:
    - std::string::begin
    - std::string::end
    - std::string::find
    - ParseError
    - std::string
    linkageType: ''
    returnType: void
    signature: void keyValuePair(const std::string &keyvalue, std::string &key, std::string
      &value)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::string::size
      Src: /src/pdns/ext/yahttp/yahttp/cookie.hpp:88,1
    - Dst: std::string::find
      Src: /src/pdns/ext/yahttp/yahttp/cookie.hpp:89,1
    - Dst: std::string::size
      Src: /src/pdns/ext/yahttp/yahttp/cookie.hpp:90,1
    - Dst: YaHTTP::CookieJar::keyValuePair
      Src: /src/pdns/ext/yahttp/yahttp/cookie.hpp:91,1
    - Dst: std::string::substr
      Src: /src/pdns/ext/yahttp/yahttp/cookie.hpp:91,1
    - Dst: Utility::decodeURL
      Src: /src/pdns/ext/yahttp/yahttp/cookie.hpp:92,1
    - Dst: Utility::decodeURL
      Src: /src/pdns/ext/yahttp/yahttp/cookie.hpp:93,1
    - Dst: std::list::push_back
      Src: /src/pdns/ext/yahttp/yahttp/cookie.hpp:94,1
    - Dst: std::list::begin
      Src: /src/pdns/ext/yahttp/yahttp/cookie.hpp:97,1
    - Dst: std::list::end
      Src: /src/pdns/ext/yahttp/yahttp/cookie.hpp:97,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 1
    argNames:
    - cookiestr
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 83
    functionDepth: 0
    functionLinenumber: 83
    functionLinenumberEnd: 100
    functionName: YaHTTP::CookieJar::parseCookieHeader
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/cookie.hpp
    functionUses: 0
    functionsReached:
    - YaHTTP::CookieJar::keyValuePair
    - std::string::substr
    - std::list::begin
    - std::string::find
    - std::list::push_back
    - std::list::end
    - std::string::size
    - Utility::decodeURL
    linkageType: ''
    returnType: void
    signature: void parseCookieHeader(const std::string &cookiestr)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: std::string::find
      Src: /src/pdns/ext/yahttp/yahttp/cookie.hpp:107,1
    - Dst: std::string::size
      Src: /src/pdns/ext/yahttp/yahttp/cookie.hpp:108,1
    - Dst: YaHTTP::CookieJar::keyValuePair
      Src: /src/pdns/ext/yahttp/yahttp/cookie.hpp:109,1
    - Dst: std::string::substr
      Src: /src/pdns/ext/yahttp/yahttp/cookie.hpp:109,1
    - Dst: Utility::decodeURL
      Src: /src/pdns/ext/yahttp/yahttp/cookie.hpp:110,1
    - Dst: Utility::decodeURL
      Src: /src/pdns/ext/yahttp/yahttp/cookie.hpp:111,1
    - Dst: std::string::size
      Src: /src/pdns/ext/yahttp/yahttp/cookie.hpp:112,1
    - Dst: std::string::size
      Src: /src/pdns/ext/yahttp/yahttp/cookie.hpp:114,1
    - Dst: std::string::find
      Src: /src/pdns/ext/yahttp/yahttp/cookie.hpp:115,1
    - Dst: std::string::size
      Src: /src/pdns/ext/yahttp/yahttp/cookie.hpp:116,1
    - Dst: std::string::substr
      Src: /src/pdns/ext/yahttp/yahttp/cookie.hpp:117,1
    - Dst: std::string::find
      Src: /src/pdns/ext/yahttp/yahttp/cookie.hpp:118,1
    - Dst: YaHTTP::CookieJar::keyValuePair
      Src: /src/pdns/ext/yahttp/yahttp/cookie.hpp:119,1
    - Dst: std::move
      Src: /src/pdns/ext/yahttp/yahttp/cookie.hpp:121,1
    - Dst: DateTime::parseCookie
      Src: /src/pdns/ext/yahttp/yahttp/cookie.hpp:124,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 35
    argCount: 1
    argNames:
    - cookiestr
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 142
      start: 102
    functionDepth: 0
    functionLinenumber: 102
    functionLinenumberEnd: 142
    functionName: YaHTTP::CookieJar::parseSetCookieHeader
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/cookie.hpp
    functionUses: 0
    functionsReached:
    - std::move
    - YaHTTP::CookieJar::keyValuePair
    - DateTime::parseCookie
    - std::string::substr
    - std::string::find
    - std::string::size
    - Utility::decodeURL
    linkageType: ''
    returnType: void
    signature: void parseSetCookieHeader(const std::string &cookiestr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: DateTime
      Src: /src/pdns/ext/yahttp/yahttp/cookie.hpp:9,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 10
      start: 5
    functionDepth: 0
    functionLinenumber: 5
    functionLinenumberEnd: 10
    functionName: YaHTTP::Cookie::Cookie
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/cookie.hpp
    functionUses: 0
    functionsReached:
    - DateTime
    linkageType: ''
    returnType: void
    signature: void Cookie()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - rhs
    argTypes:
    - Cookie
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 20
      start: 12
    functionDepth: 0
    functionLinenumber: 12
    functionLinenumberEnd: 20
    functionName: YaHTTP::Cookie::Cookie
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/cookie.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Cookie(const Cookie &rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 1
    argNames:
    - rhs
    argTypes:
    - Cookie
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 31
      start: 22
    functionDepth: 0
    functionLinenumber: 22
    functionLinenumberEnd: 31
    functionName: '& operator=(const Cookie &rhs)'
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/cookie.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Cookie
    signature: Cookie & operator=(const Cookie &rhs)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: Utility::encodeURL
      Src: /src/pdns/ext/yahttp/yahttp/cookie.hpp:44,1
    - Dst: Utility::encodeURL
      Src: /src/pdns/ext/yahttp/yahttp/cookie.hpp:44,1
    - Dst: cookie_str
      Src: /src/pdns/ext/yahttp/yahttp/cookie.hpp:47,1
    - Dst: size
      Src: /src/pdns/ext/yahttp/yahttp/cookie.hpp:48,1
    - Dst: size
      Src: /src/pdns/ext/yahttp/yahttp/cookie.hpp:50,1
    - Dst: std::ostringstream::str
      Src: /src/pdns/ext/yahttp/yahttp/cookie.hpp:56,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 42
    functionDepth: 0
    functionLinenumber: 42
    functionLinenumberEnd: 57
    functionName: YaHTTP::Cookie::str
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/cookie.hpp
    functionUses: 0
    functionsReached:
    - std::ostringstream::str
    - size
    - Utility::encodeURL
    - cookie_str
    linkageType: ''
    returnType: std::string
    signature: std::string str() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 65
    functionDepth: 0
    functionLinenumber: 65
    functionLinenumberEnd: 65
    functionName: YaHTTP::CookieJar::CookieJar
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/cookie.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void CookieJar()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - CookieJar
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 66
    functionDepth: 0
    functionLinenumber: 66
    functionLinenumberEnd: 68
    functionName: YaHTTP::CookieJar::CookieJar
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/cookie.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void CookieJar(const CookieJar & rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - CookieJar
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 69
    functionDepth: 0
    functionLinenumber: 69
    functionLinenumberEnd: 69
    functionName: '& operator=(const CookieJar & rhs)'
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/cookie.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: CookieJar
    signature: CookieJar & operator=(const CookieJar & rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::CookieJar::cookies::clear
      Src: /src/pdns/ext/yahttp/yahttp/cookie.hpp:72,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 71
    functionDepth: 1
    functionLinenumber: 71
    functionLinenumberEnd: 73
    functionName: YaHTTP::CookieJar::clear
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/cookie.hpp
    functionUses: 0
    functionsReached:
    - YaHTTP::CookieJar::cookies::clear
    linkageType: ''
    returnType: void
    signature: void clear()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::string::find
      Src: /src/pdns/ext/yahttp/yahttp/cookie.hpp:77,1
    - Dst: ParseError
      Src: /src/pdns/ext/yahttp/yahttp/cookie.hpp:78,1
    - Dst: std::string
      Src: /src/pdns/ext/yahttp/yahttp/cookie.hpp:79,1
    - Dst: std::string::begin
      Src: /src/pdns/ext/yahttp/yahttp/cookie.hpp:79,1
    - Dst: std::string::begin
      Src: /src/pdns/ext/yahttp/yahttp/cookie.hpp:79,1
    - Dst: std::string
      Src: /src/pdns/ext/yahttp/yahttp/cookie.hpp:80,1
    - Dst: std::string::begin
      Src: /src/pdns/ext/yahttp/yahttp/cookie.hpp:80,1
    - Dst: std::string::end
      Src: /src/pdns/ext/yahttp/yahttp/cookie.hpp:80,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - keyvalue
    - key
    - value
    argTypes:
    - std::string
    - std::string
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 75
    functionDepth: 0
    functionLinenumber: 75
    functionLinenumberEnd: 81
    functionName: YaHTTP::CookieJar::keyValuePair
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/cookie.hpp
    functionUses: 10
    functionsReached:
    - std::string::begin
    - std::string::end
    - std::string::find
    - ParseError
    - std::string
    linkageType: ''
    returnType: void
    signature: void keyValuePair(const std::string &keyvalue, std::string &key, std::string
      &value)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::string::size
      Src: /src/pdns/ext/yahttp/yahttp/cookie.hpp:88,1
    - Dst: std::string::find
      Src: /src/pdns/ext/yahttp/yahttp/cookie.hpp:89,1
    - Dst: std::string::size
      Src: /src/pdns/ext/yahttp/yahttp/cookie.hpp:90,1
    - Dst: YaHTTP::CookieJar::keyValuePair
      Src: /src/pdns/ext/yahttp/yahttp/cookie.hpp:91,1
    - Dst: std::string::substr
      Src: /src/pdns/ext/yahttp/yahttp/cookie.hpp:91,1
    - Dst: Utility::decodeURL
      Src: /src/pdns/ext/yahttp/yahttp/cookie.hpp:92,1
    - Dst: Utility::decodeURL
      Src: /src/pdns/ext/yahttp/yahttp/cookie.hpp:93,1
    - Dst: std::list::push_back
      Src: /src/pdns/ext/yahttp/yahttp/cookie.hpp:94,1
    - Dst: std::list::begin
      Src: /src/pdns/ext/yahttp/yahttp/cookie.hpp:97,1
    - Dst: std::list::end
      Src: /src/pdns/ext/yahttp/yahttp/cookie.hpp:97,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 1
    argNames:
    - cookiestr
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 83
    functionDepth: 0
    functionLinenumber: 83
    functionLinenumberEnd: 100
    functionName: YaHTTP::CookieJar::parseCookieHeader
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/cookie.hpp
    functionUses: 0
    functionsReached:
    - YaHTTP::CookieJar::keyValuePair
    - std::string::substr
    - std::list::begin
    - std::string::find
    - std::list::push_back
    - std::list::end
    - std::string::size
    - Utility::decodeURL
    linkageType: ''
    returnType: void
    signature: void parseCookieHeader(const std::string &cookiestr)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: std::string::find
      Src: /src/pdns/ext/yahttp/yahttp/cookie.hpp:107,1
    - Dst: std::string::size
      Src: /src/pdns/ext/yahttp/yahttp/cookie.hpp:108,1
    - Dst: YaHTTP::CookieJar::keyValuePair
      Src: /src/pdns/ext/yahttp/yahttp/cookie.hpp:109,1
    - Dst: std::string::substr
      Src: /src/pdns/ext/yahttp/yahttp/cookie.hpp:109,1
    - Dst: Utility::decodeURL
      Src: /src/pdns/ext/yahttp/yahttp/cookie.hpp:110,1
    - Dst: Utility::decodeURL
      Src: /src/pdns/ext/yahttp/yahttp/cookie.hpp:111,1
    - Dst: std::string::size
      Src: /src/pdns/ext/yahttp/yahttp/cookie.hpp:112,1
    - Dst: std::string::size
      Src: /src/pdns/ext/yahttp/yahttp/cookie.hpp:114,1
    - Dst: std::string::find
      Src: /src/pdns/ext/yahttp/yahttp/cookie.hpp:115,1
    - Dst: std::string::size
      Src: /src/pdns/ext/yahttp/yahttp/cookie.hpp:116,1
    - Dst: std::string::substr
      Src: /src/pdns/ext/yahttp/yahttp/cookie.hpp:117,1
    - Dst: std::string::find
      Src: /src/pdns/ext/yahttp/yahttp/cookie.hpp:118,1
    - Dst: YaHTTP::CookieJar::keyValuePair
      Src: /src/pdns/ext/yahttp/yahttp/cookie.hpp:119,1
    - Dst: std::move
      Src: /src/pdns/ext/yahttp/yahttp/cookie.hpp:121,1
    - Dst: DateTime::parseCookie
      Src: /src/pdns/ext/yahttp/yahttp/cookie.hpp:124,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 35
    argCount: 1
    argNames:
    - cookiestr
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 142
      start: 102
    functionDepth: 0
    functionLinenumber: 102
    functionLinenumberEnd: 142
    functionName: YaHTTP::CookieJar::parseSetCookieHeader
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/cookie.hpp
    functionUses: 0
    functionsReached:
    - std::move
    - YaHTTP::CookieJar::keyValuePair
    - DateTime::parseCookie
    - std::string::substr
    - std::string::find
    - std::string::size
    - Utility::decodeURL
    linkageType: ''
    returnType: void
    signature: void parseSetCookieHeader(const std::string &cookiestr)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: begin
      Src: /src/pdns/ext/yahttp/yahttp/utility.hpp:28,1
    - Dst: begin
      Src: /src/pdns/ext/yahttp/yahttp/utility.hpp:29,1
    - Dst: end
      Src: /src/pdns/ext/yahttp/yahttp/utility.hpp:30,1
    - Dst: end
      Src: /src/pdns/ext/yahttp/yahttp/utility.hpp:30,1
    - Dst: dns_tolower
      Src: /src/pdns/ext/yahttp/yahttp/utility.hpp:31,1
    - Dst: dns_tolower
      Src: /src/pdns/ext/yahttp/yahttp/utility.hpp:31,1
    - Dst: end
      Src: /src/pdns/ext/yahttp/yahttp/utility.hpp:32,1
    - Dst: end
      Src: /src/pdns/ext/yahttp/yahttp/utility.hpp:32,1
    - Dst: end
      Src: /src/pdns/ext/yahttp/yahttp/utility.hpp:33,1
    - Dst: end
      Src: /src/pdns/ext/yahttp/yahttp/utility.hpp:33,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 9
    argCount: 2
    argNames:
    - ' lhs'
    - ' rhs'
    argTypes:
    - std::string
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 35
      start: 26
    functionDepth: 0
    functionLinenumber: 26
    functionLinenumberEnd: 35
    functionName: operator() (const std::string& lhs, const std::string& rhs) const
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/utility.hpp
    functionUses: 0
    functionsReached:
    - end
    - dns_tolower
    - begin
    linkageType: ''
    returnType: bool
    signature: bool operator() (const std::string& lhs, const std::string& rhs) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: initialize
      Src: /src/pdns/ext/yahttp/yahttp/utility.hpp:58,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 57
    functionDepth: 0
    functionLinenumber: 57
    functionLinenumberEnd: 59
    functionName: DateTime
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/utility.hpp
    functionUses: 6
    functionsReached:
    - initialize
    linkageType: ''
    returnType: void
    signature: void DateTime()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 61
    functionDepth: 0
    functionLinenumber: 61
    functionLinenumberEnd: 65
    functionName: initialize
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/utility.hpp
    functionUses: 72
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void initialize()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fromLocaltime
      Src: /src/pdns/ext/yahttp/yahttp/utility.hpp:68,1
    - Dst: time
      Src: /src/pdns/ext/yahttp/yahttp/utility.hpp:68,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 67
    functionDepth: 0
    functionLinenumber: 67
    functionLinenumberEnd: 69
    functionName: setLocal
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/utility.hpp
    functionUses: 2
    functionsReached:
    - time
    - fromLocaltime
    linkageType: ''
    returnType: void
    signature: void setLocal()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fromGmtime
      Src: /src/pdns/ext/yahttp/yahttp/utility.hpp:72,1
    - Dst: time
      Src: /src/pdns/ext/yahttp/yahttp/utility.hpp:72,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 71
    functionDepth: 0
    functionLinenumber: 71
    functionLinenumberEnd: 73
    functionName: setGm
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/utility.hpp
    functionUses: 0
    functionsReached:
    - time
    - fromGmtime
    linkageType: ''
    returnType: void
    signature: void setGm()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: localtime_r
      Src: /src/pdns/ext/yahttp/yahttp/utility.hpp:78,1
    - Dst: fromTm
      Src: /src/pdns/ext/yahttp/yahttp/utility.hpp:79,1
    - Dst: localtime
      Src: /src/pdns/ext/yahttp/yahttp/utility.hpp:83,1
    - Dst: fromTm
      Src: /src/pdns/ext/yahttp/yahttp/utility.hpp:84,1
    - Dst: gmtime_r
      Src: /src/pdns/ext/yahttp/yahttp/utility.hpp:89,1
    - Dst: mktime
      Src: /src/pdns/ext/yahttp/yahttp/utility.hpp:90,1
    - Dst: gmtime
      Src: /src/pdns/ext/yahttp/yahttp/utility.hpp:93,1
    - Dst: mktime
      Src: /src/pdns/ext/yahttp/yahttp/utility.hpp:94,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 1
    argNames:
    - t
    argTypes:
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 75
    functionDepth: 0
    functionLinenumber: 75
    functionLinenumberEnd: 98
    functionName: fromLocaltime
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/utility.hpp
    functionUses: 3
    functionsReached:
    - fromTm
    - gmtime_r
    - localtime_r
    - mktime
    - gmtime
    - localtime
    linkageType: ''
    returnType: void
    signature: void fromLocaltime(time_t t)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: gmtime_r
      Src: /src/pdns/ext/yahttp/yahttp/utility.hpp:103,1
    - Dst: fromTm
      Src: /src/pdns/ext/yahttp/yahttp/utility.hpp:104,1
    - Dst: gmtime
      Src: /src/pdns/ext/yahttp/yahttp/utility.hpp:108,1
    - Dst: fromTm
      Src: /src/pdns/ext/yahttp/yahttp/utility.hpp:109,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - t
    argTypes:
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 100
    functionDepth: 0
    functionLinenumber: 100
    functionLinenumberEnd: 114
    functionName: fromGmtime
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/utility.hpp
    functionUses: 3
    functionsReached:
    - fromTm
    - gmtime_r
    - gmtime
    linkageType: ''
    returnType: void
    signature: void fromGmtime(time_t t)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 1
    argNames:
    - tm
    argTypes:
    - struct tm*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 116
    functionDepth: 0
    functionLinenumber: 116
    functionLinenumberEnd: 128
    functionName: fromTm
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/utility.hpp
    functionUses: 8
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void fromTm(const struct tm *tm)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: std::range_error
      Src: /src/pdns/ext/yahttp/yahttp/utility.hpp:131,1
    - Dst: std::range_error
      Src: /src/pdns/ext/yahttp/yahttp/utility.hpp:132,1
    - Dst: std::range_error
      Src: /src/pdns/ext/yahttp/yahttp/utility.hpp:133,1
    - Dst: std::range_error
      Src: /src/pdns/ext/yahttp/yahttp/utility.hpp:136,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 137
      start: 130
    functionDepth: 0
    functionLinenumber: 130
    functionLinenumberEnd: 137
    functionName: validate
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/utility.hpp
    functionUses: 34
    functionsReached:
    - std::range_error
    linkageType: ''
    returnType: void
    signature: void validate() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: validate
      Src: /src/pdns/ext/yahttp/yahttp/utility.hpp:141,1
    - Dst: std::setfill
      Src: /src/pdns/ext/yahttp/yahttp/utility.hpp:142,1
    - Dst: std::setw
      Src: /src/pdns/ext/yahttp/yahttp/utility.hpp:142,1
    - Dst: std::setfill
      Src: /src/pdns/ext/yahttp/yahttp/utility.hpp:143,1
    - Dst: std::setw
      Src: /src/pdns/ext/yahttp/yahttp/utility.hpp:143,1
    - Dst: std::setfill
      Src: /src/pdns/ext/yahttp/yahttp/utility.hpp:144,1
    - Dst: std::setw
      Src: /src/pdns/ext/yahttp/yahttp/utility.hpp:144,1
    - Dst: std::setfill
      Src: /src/pdns/ext/yahttp/yahttp/utility.hpp:145,1
    - Dst: std::setw
      Src: /src/pdns/ext/yahttp/yahttp/utility.hpp:145,1
    - Dst: std::setfill
      Src: /src/pdns/ext/yahttp/yahttp/utility.hpp:146,1
    - Dst: std::setw
      Src: /src/pdns/ext/yahttp/yahttp/utility.hpp:146,1
    - Dst: std::setfill
      Src: /src/pdns/ext/yahttp/yahttp/utility.hpp:150,1
    - Dst: std::setw
      Src: /src/pdns/ext/yahttp/yahttp/utility.hpp:150,1
    - Dst: std::setfill
      Src: /src/pdns/ext/yahttp/yahttp/utility.hpp:151,1
    - Dst: std::setw
      Src: /src/pdns/ext/yahttp/yahttp/utility.hpp:151,1
    - Dst: std::ostringstream::str
      Src: /src/pdns/ext/yahttp/yahttp/utility.hpp:153,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 154
      start: 139
    functionDepth: 0
    functionLinenumber: 139
    functionLinenumberEnd: 154
    functionName: rfc_str
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/utility.hpp
    functionUses: 0
    functionsReached:
    - std::ostringstream::str
    - std::setfill
    - validate
    - std::setw
    linkageType: ''
    returnType: std::string
    signature: std::string rfc_str() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: validate
      Src: /src/pdns/ext/yahttp/yahttp/utility.hpp:158,1
    - Dst: std::setfill
      Src: /src/pdns/ext/yahttp/yahttp/utility.hpp:159,1
    - Dst: std::setw
      Src: /src/pdns/ext/yahttp/yahttp/utility.hpp:159,1
    - Dst: std::setfill
      Src: /src/pdns/ext/yahttp/yahttp/utility.hpp:160,1
    - Dst: std::setw
      Src: /src/pdns/ext/yahttp/yahttp/utility.hpp:160,1
    - Dst: std::setfill
      Src: /src/pdns/ext/yahttp/yahttp/utility.hpp:161,1
    - Dst: std::setw
      Src: /src/pdns/ext/yahttp/yahttp/utility.hpp:161,1
    - Dst: std::setfill
      Src: /src/pdns/ext/yahttp/yahttp/utility.hpp:162,1
    - Dst: std::setw
      Src: /src/pdns/ext/yahttp/yahttp/utility.hpp:162,1
    - Dst: std::ostringstream::str
      Src: /src/pdns/ext/yahttp/yahttp/utility.hpp:163,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 164
      start: 156
    functionDepth: 0
    functionLinenumber: 156
    functionLinenumberEnd: 164
    functionName: cookie_str
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/utility.hpp
    functionUses: 6
    functionsReached:
    - std::ostringstream::str
    - std::setfill
    - validate
    - std::setw
    linkageType: ''
    returnType: std::string
    signature: std::string cookie_str() const
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strptime
      Src: /src/pdns/ext/yahttp/yahttp/utility.hpp:194,1
    - Dst: std::string::c_str
      Src: /src/pdns/ext/yahttp/yahttp/utility.hpp:194,1
    - Dst: strptime
      Src: /src/pdns/ext/yahttp/yahttp/utility.hpp:196,1
    - Dst: std::string::c_str
      Src: /src/pdns/ext/yahttp/yahttp/utility.hpp:196,1
    - Dst: strptime
      Src: /src/pdns/ext/yahttp/yahttp/utility.hpp:197,1
    - Dst: std::string::c_str
      Src: /src/pdns/ext/yahttp/yahttp/utility.hpp:197,1
    - Dst: YaHTTP::isspace
      Src: /src/pdns/ext/yahttp/yahttp/utility.hpp:200,1
    - Dst: YaHTTP::isalnum
      Src: /src/pdns/ext/yahttp/yahttp/utility.hpp:200,1
    - Dst: YaHTTP::ParseError::ParseError
      Src: /src/pdns/ext/yahttp/yahttp/utility.hpp:201,1
    - Dst: fromTm
      Src: /src/pdns/ext/yahttp/yahttp/utility.hpp:202,1
    - Dst: YaHTTP::ParseError::ParseError
      Src: /src/pdns/ext/yahttp/yahttp/utility.hpp:206,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 12
    argCount: 1
    argNames:
    - cookie_date
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 208
      start: 191
    functionDepth: 0
    functionLinenumber: 191
    functionLinenumberEnd: 208
    functionName: parseCookie
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/utility.hpp
    functionUses: 6
    functionsReached:
    - fromTm
    - std::string::c_str
    - strptime
    - YaHTTP::isspace
    - YaHTTP::ParseError::ParseError
    - YaHTTP::isalnum
    linkageType: ''
    returnType: void
    signature: void parseCookie(const std::string &cookie_date)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mktime
      Src: /src/pdns/ext/yahttp/yahttp/utility.hpp:222,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 223
      start: 210
    functionDepth: 0
    functionLinenumber: 210
    functionLinenumberEnd: 223
    functionName: unixtime
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/utility.hpp
    functionUses: 0
    functionsReached:
    - mktime
    linkageType: ''
    returnType: time_t
    signature: time_t unixtime() const
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: std::string::find_first_of
      Src: /src/pdns/ext/yahttp/yahttp/utility.hpp:233,1
    - Dst: std::string::length
      Src: /src/pdns/ext/yahttp/yahttp/utility.hpp:236,1
    - Dst: std::string::substr
      Src: /src/pdns/ext/yahttp/yahttp/utility.hpp:237,1
    - Dst: std::tolower
      Src: /src/pdns/ext/yahttp/yahttp/utility.hpp:238,1
    - Dst: std::tolower
      Src: /src/pdns/ext/yahttp/yahttp/utility.hpp:238,1
    - Dst: std::string::replace
      Src: /src/pdns/ext/yahttp/yahttp/utility.hpp:252,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 25
    argCount: 1
    argNames:
    - ' component'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 256
      start: 229
    functionDepth: 0
    functionLinenumber: 229
    functionLinenumberEnd: 256
    functionName: Utility::decodeURL
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/utility.hpp
    functionUses: 24
    functionsReached:
    - std::string::length
    - std::string::substr
    - std::string::replace
    - std::tolower
    - std::string::find_first_of
    linkageType: ''
    returnType: std::string
    signature: std::string decodeURL(const std::string& component)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::string::begin
      Src: /src/pdns/ext/yahttp/yahttp/utility.hpp:263,1
    - Dst: std::string::end
      Src: /src/pdns/ext/yahttp/yahttp/utility.hpp:263,1
    - Dst: YaHTTP::isalnum
      Src: /src/pdns/ext/yahttp/yahttp/utility.hpp:264,1
    - Dst: std::string::find
      Src: /src/pdns/ext/yahttp/yahttp/utility.hpp:264,1
    - Dst: std::distance
      Src: /src/pdns/ext/yahttp/yahttp/utility.hpp:266,1
    - Dst: std::string::begin
      Src: /src/pdns/ext/yahttp/yahttp/utility.hpp:266,1
    - Dst: ::snprintf
      Src: /src/pdns/ext/yahttp/yahttp/utility.hpp:267,1
    - Dst: static_cast<unsigned char>
      Src: /src/pdns/ext/yahttp/yahttp/utility.hpp:267,1
    - Dst: std::string::replace
      Src: /src/pdns/ext/yahttp/yahttp/utility.hpp:268,1
    - Dst: std::string::begin
      Src: /src/pdns/ext/yahttp/yahttp/utility.hpp:269,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 1
    argNames:
    - ' component'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 273
      start: 258
    functionDepth: 1
    functionLinenumber: 258
    functionLinenumberEnd: 273
    functionName: Utility::encodeURL
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/utility.hpp
    functionUses: 27
    functionsReached:
    - std::string::begin
    - std::distance
    - std::string::end
    - ::snprintf
    - std::string::find
    - std::string::replace
    - static_cast<unsigned char>
    - YaHTTP::isalnum
    linkageType: ''
    returnType: std::string
    signature: std::string encodeURL(const std::string& component, bool asUrl = true)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: reinterpret_cast<unsigned char const*>
      Src: /src/pdns/ext/yahttp/yahttp/utility.hpp:276,1
    - Dst: size
      Src: /src/pdns/ext/yahttp/yahttp/utility.hpp:277,1
    - Dst: begin
      Src: /src/pdns/ext/yahttp/yahttp/utility.hpp:277,1
    - Dst: std::vector::begin
      Src: /src/pdns/ext/yahttp/yahttp/utility.hpp:282,1
    - Dst: std::vector::end
      Src: /src/pdns/ext/yahttp/yahttp/utility.hpp:282,1
    - Dst: YaHTTP::isalnum
      Src: /src/pdns/ext/yahttp/yahttp/utility.hpp:283,1
    - Dst: std::string::find
      Src: /src/pdns/ext/yahttp/yahttp/utility.hpp:283,1
    - Dst: std::setw
      Src: /src/pdns/ext/yahttp/yahttp/utility.hpp:285,1
    - Dst: std::setfill
      Src: /src/pdns/ext/yahttp/yahttp/utility.hpp:285,1
    - Dst: static_cast<unsigned int>
      Src: /src/pdns/ext/yahttp/yahttp/utility.hpp:285,1
    - Dst: std::ostringstream::str
      Src: /src/pdns/ext/yahttp/yahttp/utility.hpp:288,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 1
    argNames:
    - ' component'
    argTypes:
    - std::wstring
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 289
      start: 275
    functionDepth: 0
    functionLinenumber: 275
    functionLinenumberEnd: 289
    functionName: Utility::encodeURL
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/utility.hpp
    functionUses: 27
    functionsReached:
    - std::vector::end
    - std::vector::begin
    - std::ostringstream::str
    - std::setfill
    - std::setw
    - reinterpret_cast<unsigned char const*>
    - size
    - static_cast<unsigned int>
    - std::string::find
    - begin
    - YaHTTP::isalnum
    linkageType: ''
    returnType: std::string
    signature: std::string encodeURL(const std::wstring& component, bool asUrl = true)
  - BBCount: 41
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 83
    argCount: 1
    argNames:
    - status
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 374
      start: 291
    functionDepth: 0
    functionLinenumber: 291
    functionLinenumberEnd: 374
    functionName: Utility::status2text
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/utility.hpp
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string status2text(int status)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/ext/yahttp/yahttp/utility.hpp:377,1
    - Dst: find
      Src: /src/pdns/ext/yahttp/yahttp/utility.hpp:384,1
    - Dst: find
      Src: /src/pdns/ext/yahttp/yahttp/utility.hpp:385,1
    - Dst: substr
      Src: /src/pdns/ext/yahttp/yahttp/utility.hpp:392,1
    - Dst: substr
      Src: /src/pdns/ext/yahttp/yahttp/utility.hpp:394,1
    - Dst: substr
      Src: /src/pdns/ext/yahttp/yahttp/utility.hpp:396,1
    - Dst: substr
      Src: /src/pdns/ext/yahttp/yahttp/utility.hpp:398,1
    - Dst: std::string::empty
      Src: /src/pdns/ext/yahttp/yahttp/utility.hpp:401,1
    - Dst: Utility::decodeURL
      Src: /src/pdns/ext/yahttp/yahttp/utility.hpp:405,1
    - Dst: Utility::decodeURL
      Src: /src/pdns/ext/yahttp/yahttp/utility.hpp:405,1
    - Dst: strstr_map_t::size
      Src: /src/pdns/ext/yahttp/yahttp/utility.hpp:410,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 31
    argCount: 1
    argNames:
    - ' parameters'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 417
      start: 376
    functionDepth: 0
    functionLinenumber: 376
    functionLinenumberEnd: 417
    functionName: Utility::parseUrlParameters
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/utility.hpp
    functionUses: 8
    functionsReached:
    - size
    - substr
    - strstr_map_t::size
    - std::string::empty
    - Utility::decodeURL
    - find
    linkageType: ''
    returnType: strstr_map_t
    signature: strstr_map_t parseUrlParameters(const std::string& parameters)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: begin
      Src: /src/pdns/ext/yahttp/yahttp/utility.hpp:422,1
    - Dst: begin
      Src: /src/pdns/ext/yahttp/yahttp/utility.hpp:422,1
    - Dst: end
      Src: /src/pdns/ext/yahttp/yahttp/utility.hpp:422,1
    - Dst: end
      Src: /src/pdns/ext/yahttp/yahttp/utility.hpp:422,1
    - Dst: dns_toupper
      Src: /src/pdns/ext/yahttp/yahttp/utility.hpp:423,1
    - Dst: dns_toupper
      Src: /src/pdns/ext/yahttp/yahttp/utility.hpp:423,1
    - Dst: end
      Src: /src/pdns/ext/yahttp/yahttp/utility.hpp:426,1
    - Dst: end
      Src: /src/pdns/ext/yahttp/yahttp/utility.hpp:426,1
    - Dst: end
      Src: /src/pdns/ext/yahttp/yahttp/utility.hpp:427,1
    - Dst: end
      Src: /src/pdns/ext/yahttp/yahttp/utility.hpp:427,1
    - Dst: end
      Src: /src/pdns/ext/yahttp/yahttp/utility.hpp:428,1
    - Dst: end
      Src: /src/pdns/ext/yahttp/yahttp/utility.hpp:428,1
    - Dst: dns_toupper
      Src: /src/pdns/ext/yahttp/yahttp/utility.hpp:430,1
    - Dst: dns_toupper
      Src: /src/pdns/ext/yahttp/yahttp/utility.hpp:430,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 10
    argCount: 3
    argNames:
    - ' a'
    - ' b'
    - length
    argTypes:
    - std::string
    - std::string
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 431
      start: 419
    functionDepth: 0
    functionLinenumber: 419
    functionLinenumberEnd: 431
    functionName: Utility::iequals
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/utility.hpp
    functionUses: 6
    functionsReached:
    - dns_toupper
    - end
    - begin
    linkageType: ''
    returnType: bool
    signature: bool iequals(const std::string& a, const std::string& b, size_t length)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/ext/yahttp/yahttp/utility.hpp:434,1
    - Dst: size
      Src: /src/pdns/ext/yahttp/yahttp/utility.hpp:434,1
    - Dst: Utility::iequals
      Src: /src/pdns/ext/yahttp/yahttp/utility.hpp:435,1
    - Dst: size
      Src: /src/pdns/ext/yahttp/yahttp/utility.hpp:435,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - ' a'
    - ' b'
    argTypes:
    - std::string
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 436
      start: 433
    functionDepth: 0
    functionLinenumber: 433
    functionLinenumberEnd: 436
    functionName: Utility::iequals
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/utility.hpp
    functionUses: 7
    functionsReached:
    - Utility::iequals
    - size
    linkageType: ''
    returnType: bool
    signature: bool iequals(const std::string& a, const std::string& b)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::locale::classic
      Src: /src/pdns/ext/yahttp/yahttp/utility.hpp:439,1
    - Dst: std::string::begin
      Src: /src/pdns/ext/yahttp/yahttp/utility.hpp:440,1
    - Dst: std::string::end
      Src: /src/pdns/ext/yahttp/yahttp/utility.hpp:441,1
    - Dst: YaHTTP::isspace
      Src: /src/pdns/ext/yahttp/yahttp/utility.hpp:441,1
    - Dst: std::string::erase
      Src: /src/pdns/ext/yahttp/yahttp/utility.hpp:442,1
    - Dst: std::string::begin
      Src: /src/pdns/ext/yahttp/yahttp/utility.hpp:442,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - str
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 443
      start: 438
    functionDepth: 0
    functionLinenumber: 438
    functionLinenumberEnd: 443
    functionName: Utility::trimLeft
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/utility.hpp
    functionUses: 2
    functionsReached:
    - std::string::begin
    - std::string::erase
    - std::string::end
    - YaHTTP::isspace
    - std::locale::classic
    linkageType: ''
    returnType: void
    signature: void trimLeft(std::string &str)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::locale::classic
      Src: /src/pdns/ext/yahttp/yahttp/utility.hpp:446,1
    - Dst: std::string::rbegin
      Src: /src/pdns/ext/yahttp/yahttp/utility.hpp:447,1
    - Dst: std::string::rend
      Src: /src/pdns/ext/yahttp/yahttp/utility.hpp:448,1
    - Dst: YaHTTP::isspace
      Src: /src/pdns/ext/yahttp/yahttp/utility.hpp:448,1
    - Dst: std::string::erase
      Src: /src/pdns/ext/yahttp/yahttp/utility.hpp:449,1
    - Dst: std::string::reverse_iterator::base
      Src: /src/pdns/ext/yahttp/yahttp/utility.hpp:449,1
    - Dst: std::string::end
      Src: /src/pdns/ext/yahttp/yahttp/utility.hpp:449,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - str
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 450
      start: 445
    functionDepth: 0
    functionLinenumber: 445
    functionLinenumberEnd: 450
    functionName: Utility::trimRight
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/utility.hpp
    functionUses: 2
    functionsReached:
    - std::string::erase
    - std::string::rend
    - std::string::rbegin
    - std::string::end
    - YaHTTP::isspace
    - std::locale::classic
    - std::string::reverse_iterator::base
    linkageType: ''
    returnType: void
    signature: void trimRight(std::string &str)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Utility::trimLeft
      Src: /src/pdns/ext/yahttp/yahttp/utility.hpp:453,1
    - Dst: Utility::trimRight
      Src: /src/pdns/ext/yahttp/yahttp/utility.hpp:454,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - str
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 455
      start: 452
    functionDepth: 0
    functionLinenumber: 452
    functionLinenumberEnd: 455
    functionName: Utility::trim
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/utility.hpp
    functionUses: 32
    functionsReached:
    - Utility::trimRight
    - Utility::trimLeft
    linkageType: ''
    returnType: void
    signature: void trim(std::string &str)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::string::begin
      Src: /src/pdns/ext/yahttp/yahttp/utility.hpp:458,1
    - Dst: std::locale::classic
      Src: /src/pdns/ext/yahttp/yahttp/utility.hpp:460,1
    - Dst: std::string::end
      Src: /src/pdns/ext/yahttp/yahttp/utility.hpp:464,1
    - Dst: std::string::insert
      Src: /src/pdns/ext/yahttp/yahttp/utility.hpp:466,1
    - Dst: std::string::end
      Src: /src/pdns/ext/yahttp/yahttp/utility.hpp:466,1
    - Dst: std::toupper
      Src: /src/pdns/ext/yahttp/yahttp/utility.hpp:466,1
    - Dst: std::string::insert
      Src: /src/pdns/ext/yahttp/yahttp/utility.hpp:468,1
    - Dst: std::string::end
      Src: /src/pdns/ext/yahttp/yahttp/utility.hpp:468,1
    - Dst: std::tolower
      Src: /src/pdns/ext/yahttp/yahttp/utility.hpp:468,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - str
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 473
      start: 457
    functionDepth: 2
    functionLinenumber: 457
    functionLinenumberEnd: 473
    functionName: Utility::camelizeHeader
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/utility.hpp
    functionUses: 4
    functionsReached:
    - std::string::begin
    - std::toupper
    - std::string::end
    - std::tolower
    - std::locale::classic
    - std::string::insert
    linkageType: ''
    returnType: std::string
    signature: std::string camelizeHeader(const std::string &str)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 50
    functionDepth: 0
    functionLinenumber: 50
    functionLinenumberEnd: 50
    functionName: YaHTTP::Router::Router
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/router.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Router()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::Router::map
      Src: /src/pdns/ext/yahttp/yahttp/router.hpp:62,1
    - Dst: std::move
      Src: /src/pdns/ext/yahttp/yahttp/router.hpp:62,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' method'
    - ' url'
    - handler
    argTypes:
    - std::string
    - std::string
    - THandlerFunction
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 62
    functionDepth: 0
    functionLinenumber: 62
    functionLinenumberEnd: 62
    functionName: YaHTTP::Router::Map
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/router.hpp
    functionUses: 4
    functionsReached:
    - YaHTTP::Router::map
    - std::move
    linkageType: ''
    returnType: void
    signature: void Map(const std::string& method, const std::string& url, THandlerFunction
      handler, const std::string& name = "")
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::Router::map
      Src: /src/pdns/ext/yahttp/yahttp/router.hpp:63,1
    - Dst: std::move
      Src: /src/pdns/ext/yahttp/yahttp/router.hpp:63,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' url'
    - handler
    argTypes:
    - std::string
    - THandlerFunction
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 63
    functionDepth: 0
    functionLinenumber: 63
    functionLinenumberEnd: 63
    functionName: YaHTTP::Router::Get
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/router.hpp
    functionUses: 0
    functionsReached:
    - YaHTTP::Router::map
    - std::move
    linkageType: ''
    returnType: void
    signature: void Get(const std::string& url, THandlerFunction handler, const std::string&
      name = "")
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::Router::map
      Src: /src/pdns/ext/yahttp/yahttp/router.hpp:64,1
    - Dst: std::move
      Src: /src/pdns/ext/yahttp/yahttp/router.hpp:64,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' url'
    - handler
    argTypes:
    - std::string
    - THandlerFunction
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 64
    functionDepth: 0
    functionLinenumber: 64
    functionLinenumberEnd: 64
    functionName: YaHTTP::Router::Post
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/router.hpp
    functionUses: 0
    functionsReached:
    - YaHTTP::Router::map
    - std::move
    linkageType: ''
    returnType: void
    signature: void Post(const std::string& url, THandlerFunction handler, const std::string&
      name = "")
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::Router::map
      Src: /src/pdns/ext/yahttp/yahttp/router.hpp:65,1
    - Dst: std::move
      Src: /src/pdns/ext/yahttp/yahttp/router.hpp:65,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' url'
    - handler
    argTypes:
    - std::string
    - THandlerFunction
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 65
    functionDepth: 0
    functionLinenumber: 65
    functionLinenumberEnd: 65
    functionName: YaHTTP::Router::Put
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/router.hpp
    functionUses: 0
    functionsReached:
    - YaHTTP::Router::map
    - std::move
    linkageType: ''
    returnType: void
    signature: void Put(const std::string& url, THandlerFunction handler, const std::string&
      name = "")
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::Router::map
      Src: /src/pdns/ext/yahttp/yahttp/router.hpp:66,1
    - Dst: std::move
      Src: /src/pdns/ext/yahttp/yahttp/router.hpp:66,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' url'
    - handler
    argTypes:
    - std::string
    - THandlerFunction
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 66
    functionDepth: 0
    functionLinenumber: 66
    functionLinenumberEnd: 66
    functionName: YaHTTP::Router::Patch
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/router.hpp
    functionUses: 0
    functionsReached:
    - YaHTTP::Router::map
    - std::move
    linkageType: ''
    returnType: void
    signature: void Patch(const std::string& url, THandlerFunction handler, const
      std::string& name = "")
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::Router::map
      Src: /src/pdns/ext/yahttp/yahttp/router.hpp:67,1
    - Dst: std::move
      Src: /src/pdns/ext/yahttp/yahttp/router.hpp:67,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' url'
    - handler
    argTypes:
    - std::string
    - THandlerFunction
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 67
    functionDepth: 0
    functionLinenumber: 67
    functionLinenumberEnd: 67
    functionName: YaHTTP::Router::Delete
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/router.hpp
    functionUses: 0
    functionsReached:
    - YaHTTP::Router::map
    - std::move
    linkageType: ''
    returnType: void
    signature: void Delete(const std::string& url, THandlerFunction handler, const
      std::string& name = "")
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::Router::map
      Src: /src/pdns/ext/yahttp/yahttp/router.hpp:68,1
    - Dst: std::move
      Src: /src/pdns/ext/yahttp/yahttp/router.hpp:68,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' url'
    - handler
    argTypes:
    - std::string
    - THandlerFunction
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 68
    functionDepth: 0
    functionLinenumber: 68
    functionLinenumberEnd: 68
    functionName: YaHTTP::Router::Any
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/router.hpp
    functionUses: 0
    functionsReached:
    - YaHTTP::Router::map
    - std::move
    linkageType: ''
    returnType: void
    signature: void Any(const std::string& url, THandlerFunction handler, const std::string&
      name = "")
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::Router::match
      Src: /src/pdns/ext/yahttp/yahttp/router.hpp:70,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' route'
    - ' requrl'
    - ' params'
    argTypes:
    - std::string
    - URL
    - std::map<std::string, TDelim>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 70
    functionDepth: 0
    functionLinenumber: 70
    functionLinenumberEnd: 70
    functionName: YaHTTP::Router::Match
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/router.hpp
    functionUses: 2
    functionsReached:
    - YaHTTP::Router::match
    linkageType: ''
    returnType: bool
    signature: bool Match(const std::string& route, const URL& requrl, std::map<std::string,
      TDelim>& params)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::Router::route
      Src: /src/pdns/ext/yahttp/yahttp/router.hpp:71,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - req
    - ' handler'
    argTypes:
    - Request*
    - THandlerFunction
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 71
    functionDepth: 0
    functionLinenumber: 71
    functionLinenumberEnd: 71
    functionName: YaHTTP::Router::Route
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/router.hpp
    functionUses: 2
    functionsReached:
    - YaHTTP::Router::route
    linkageType: ''
    returnType: RoutingResult
    signature: RoutingResult Route(Request *req, THandlerFunction& handler)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::Router::printRoutes
      Src: /src/pdns/ext/yahttp/yahttp/router.hpp:72,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - os
    argTypes:
    - std::ostream
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 72
    functionDepth: 0
    functionLinenumber: 72
    functionLinenumberEnd: 72
    functionName: YaHTTP::Router::PrintRoutes
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/router.hpp
    functionUses: 0
    functionsReached:
    - YaHTTP::Router::printRoutes
    linkageType: ''
    returnType: void
    signature: void PrintRoutes(std::ostream &os)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::Router::urlFor
      Src: /src/pdns/ext/yahttp/yahttp/router.hpp:74,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - name
    - ' arguments'
    argTypes:
    - std::string
    - strstr_map_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 74
    functionDepth: 0
    functionLinenumber: 74
    functionLinenumberEnd: 74
    functionName: YaHTTP::Router::URLFor
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/router.hpp
    functionUses: 0
    functionsReached:
    - YaHTTP::Router::urlFor
    linkageType: ''
    returnType: std::pair<std::string, std::string>
    signature: std::pair<std::string, std::string> URLFor(const std::string &name,
      const strstr_map_t& arguments)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 75
    functionDepth: 0
    functionLinenumber: 75
    functionLinenumberEnd: 75
    functionName: '& GetRoutes()'
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/router.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: TRouteList
    signature: TRouteList & GetRoutes()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: routes::clear
      Src: /src/pdns/ext/yahttp/yahttp/router.hpp:76,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 76
    functionDepth: 1
    functionLinenumber: 76
    functionLinenumberEnd: 76
    functionName: YaHTTP::Router::Clear
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/router.hpp
    functionUses: 0
    functionsReached:
    - routes::clear
    linkageType: ''
    returnType: void
    signature: void Clear()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 50
    functionDepth: 0
    functionLinenumber: 50
    functionLinenumberEnd: 50
    functionName: YaHTTP::Router::Router
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/router.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Router()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::Router::map
      Src: /src/pdns/ext/yahttp/yahttp/router.hpp:62,1
    - Dst: std::move
      Src: /src/pdns/ext/yahttp/yahttp/router.hpp:62,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' method'
    - ' url'
    - handler
    argTypes:
    - std::string
    - std::string
    - THandlerFunction
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 62
    functionDepth: 0
    functionLinenumber: 62
    functionLinenumberEnd: 62
    functionName: YaHTTP::Router::Map
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/router.hpp
    functionUses: 4
    functionsReached:
    - YaHTTP::Router::map
    - std::move
    linkageType: ''
    returnType: void
    signature: void Map(const std::string& method, const std::string& url, THandlerFunction
      handler, const std::string& name = "")
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::Router::map
      Src: /src/pdns/ext/yahttp/yahttp/router.hpp:63,1
    - Dst: std::move
      Src: /src/pdns/ext/yahttp/yahttp/router.hpp:63,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' url'
    - handler
    argTypes:
    - std::string
    - THandlerFunction
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 63
    functionDepth: 0
    functionLinenumber: 63
    functionLinenumberEnd: 63
    functionName: YaHTTP::Router::Get
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/router.hpp
    functionUses: 0
    functionsReached:
    - YaHTTP::Router::map
    - std::move
    linkageType: ''
    returnType: void
    signature: void Get(const std::string& url, THandlerFunction handler, const std::string&
      name = "")
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::Router::map
      Src: /src/pdns/ext/yahttp/yahttp/router.hpp:64,1
    - Dst: std::move
      Src: /src/pdns/ext/yahttp/yahttp/router.hpp:64,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' url'
    - handler
    argTypes:
    - std::string
    - THandlerFunction
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 64
    functionDepth: 0
    functionLinenumber: 64
    functionLinenumberEnd: 64
    functionName: YaHTTP::Router::Post
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/router.hpp
    functionUses: 0
    functionsReached:
    - YaHTTP::Router::map
    - std::move
    linkageType: ''
    returnType: void
    signature: void Post(const std::string& url, THandlerFunction handler, const std::string&
      name = "")
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::Router::map
      Src: /src/pdns/ext/yahttp/yahttp/router.hpp:65,1
    - Dst: std::move
      Src: /src/pdns/ext/yahttp/yahttp/router.hpp:65,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' url'
    - handler
    argTypes:
    - std::string
    - THandlerFunction
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 65
    functionDepth: 0
    functionLinenumber: 65
    functionLinenumberEnd: 65
    functionName: YaHTTP::Router::Put
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/router.hpp
    functionUses: 0
    functionsReached:
    - YaHTTP::Router::map
    - std::move
    linkageType: ''
    returnType: void
    signature: void Put(const std::string& url, THandlerFunction handler, const std::string&
      name = "")
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::Router::map
      Src: /src/pdns/ext/yahttp/yahttp/router.hpp:66,1
    - Dst: std::move
      Src: /src/pdns/ext/yahttp/yahttp/router.hpp:66,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' url'
    - handler
    argTypes:
    - std::string
    - THandlerFunction
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 66
    functionDepth: 0
    functionLinenumber: 66
    functionLinenumberEnd: 66
    functionName: YaHTTP::Router::Patch
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/router.hpp
    functionUses: 0
    functionsReached:
    - YaHTTP::Router::map
    - std::move
    linkageType: ''
    returnType: void
    signature: void Patch(const std::string& url, THandlerFunction handler, const
      std::string& name = "")
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::Router::map
      Src: /src/pdns/ext/yahttp/yahttp/router.hpp:67,1
    - Dst: std::move
      Src: /src/pdns/ext/yahttp/yahttp/router.hpp:67,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' url'
    - handler
    argTypes:
    - std::string
    - THandlerFunction
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 67
    functionDepth: 0
    functionLinenumber: 67
    functionLinenumberEnd: 67
    functionName: YaHTTP::Router::Delete
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/router.hpp
    functionUses: 0
    functionsReached:
    - YaHTTP::Router::map
    - std::move
    linkageType: ''
    returnType: void
    signature: void Delete(const std::string& url, THandlerFunction handler, const
      std::string& name = "")
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::Router::map
      Src: /src/pdns/ext/yahttp/yahttp/router.hpp:68,1
    - Dst: std::move
      Src: /src/pdns/ext/yahttp/yahttp/router.hpp:68,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' url'
    - handler
    argTypes:
    - std::string
    - THandlerFunction
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 68
    functionDepth: 0
    functionLinenumber: 68
    functionLinenumberEnd: 68
    functionName: YaHTTP::Router::Any
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/router.hpp
    functionUses: 0
    functionsReached:
    - YaHTTP::Router::map
    - std::move
    linkageType: ''
    returnType: void
    signature: void Any(const std::string& url, THandlerFunction handler, const std::string&
      name = "")
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::Router::match
      Src: /src/pdns/ext/yahttp/yahttp/router.hpp:70,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' route'
    - ' requrl'
    - ' params'
    argTypes:
    - std::string
    - URL
    - std::map<std::string, TDelim>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 70
    functionDepth: 0
    functionLinenumber: 70
    functionLinenumberEnd: 70
    functionName: YaHTTP::Router::Match
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/router.hpp
    functionUses: 2
    functionsReached:
    - YaHTTP::Router::match
    linkageType: ''
    returnType: bool
    signature: bool Match(const std::string& route, const URL& requrl, std::map<std::string,
      TDelim>& params)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::Router::route
      Src: /src/pdns/ext/yahttp/yahttp/router.hpp:71,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - req
    - ' handler'
    argTypes:
    - Request*
    - THandlerFunction
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 71
    functionDepth: 0
    functionLinenumber: 71
    functionLinenumberEnd: 71
    functionName: YaHTTP::Router::Route
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/router.hpp
    functionUses: 2
    functionsReached:
    - YaHTTP::Router::route
    linkageType: ''
    returnType: RoutingResult
    signature: RoutingResult Route(Request *req, THandlerFunction& handler)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::Router::printRoutes
      Src: /src/pdns/ext/yahttp/yahttp/router.hpp:72,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - os
    argTypes:
    - std::ostream
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 72
    functionDepth: 0
    functionLinenumber: 72
    functionLinenumberEnd: 72
    functionName: YaHTTP::Router::PrintRoutes
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/router.hpp
    functionUses: 0
    functionsReached:
    - YaHTTP::Router::printRoutes
    linkageType: ''
    returnType: void
    signature: void PrintRoutes(std::ostream &os)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::Router::urlFor
      Src: /src/pdns/ext/yahttp/yahttp/router.hpp:74,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - name
    - ' arguments'
    argTypes:
    - std::string
    - strstr_map_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 74
    functionDepth: 0
    functionLinenumber: 74
    functionLinenumberEnd: 74
    functionName: YaHTTP::Router::URLFor
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/router.hpp
    functionUses: 0
    functionsReached:
    - YaHTTP::Router::urlFor
    linkageType: ''
    returnType: std::pair<std::string, std::string>
    signature: std::pair<std::string, std::string> URLFor(const std::string &name,
      const strstr_map_t& arguments)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 75
    functionDepth: 0
    functionLinenumber: 75
    functionLinenumberEnd: 75
    functionName: '& GetRoutes()'
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/router.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: TRouteList
    signature: TRouteList & GetRoutes()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: routes::clear
      Src: /src/pdns/ext/yahttp/yahttp/router.hpp:76,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 76
    functionDepth: 1
    functionLinenumber: 76
    functionLinenumberEnd: 76
    functionName: YaHTTP::Router::Clear
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/router.hpp
    functionUses: 0
    functionsReached:
    - routes::clear
    linkageType: ''
    returnType: void
    signature: void Clear()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::isspace
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:11,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - c
    argTypes:
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12
      start: 10
    functionDepth: 0
    functionLinenumber: 10
    functionLinenumberEnd: 12
    functionName: YaHTTP::isspace
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/reqresp.cpp
    functionUses: 22
    functionsReached:
    - YaHTTP::isspace
    linkageType: ''
    returnType: bool
    signature: bool isspace(char c)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::isspace
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:15,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - c
    - ' loc'
    argTypes:
    - char
    - std::locale
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 16
      start: 14
    functionDepth: 0
    functionLinenumber: 14
    functionLinenumberEnd: 16
    functionName: YaHTTP::isspace
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/reqresp.cpp
    functionUses: 23
    functionsReached:
    - YaHTTP::isspace
    linkageType: ''
    returnType: bool
    signature: bool isspace(char c, const std::locale& loc)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::isxdigit
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:19,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - c
    argTypes:
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 20
      start: 18
    functionDepth: 0
    functionLinenumber: 18
    functionLinenumberEnd: 20
    functionName: YaHTTP::isxdigit
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/reqresp.cpp
    functionUses: 9
    functionsReached:
    - YaHTTP::isxdigit
    linkageType: ''
    returnType: bool
    signature: bool isxdigit(char c)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::isxdigit
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:23,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - c
    - ' loc'
    argTypes:
    - char
    - std::locale
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 24
      start: 22
    functionDepth: 0
    functionLinenumber: 22
    functionLinenumberEnd: 24
    functionName: YaHTTP::isxdigit
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/reqresp.cpp
    functionUses: 10
    functionsReached:
    - YaHTTP::isxdigit
    linkageType: ''
    returnType: bool
    signature: bool isxdigit(char c, const std::locale& loc)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::isdigit
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:27,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - c
    argTypes:
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 28
      start: 26
    functionDepth: 0
    functionLinenumber: 26
    functionLinenumberEnd: 28
    functionName: YaHTTP::isdigit
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/reqresp.cpp
    functionUses: 9
    functionsReached:
    - YaHTTP::isdigit
    linkageType: ''
    returnType: bool
    signature: bool isdigit(char c)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::isdigit
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:31,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - c
    - ' loc'
    argTypes:
    - char
    - std::locale
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 32
      start: 30
    functionDepth: 0
    functionLinenumber: 30
    functionLinenumberEnd: 32
    functionName: YaHTTP::isdigit
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/reqresp.cpp
    functionUses: 10
    functionsReached:
    - YaHTTP::isdigit
    linkageType: ''
    returnType: bool
    signature: bool isdigit(char c, const std::locale& loc)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::isalnum
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:35,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - c
    argTypes:
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 36
      start: 34
    functionDepth: 0
    functionLinenumber: 34
    functionLinenumberEnd: 36
    functionName: YaHTTP::isalnum
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/reqresp.cpp
    functionUses: 18
    functionsReached:
    - YaHTTP::isalnum
    linkageType: ''
    returnType: bool
    signature: bool isalnum(char c)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::isalnum
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:39,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - c
    - ' loc'
    argTypes:
    - char
    - std::locale
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 38
    functionDepth: 0
    functionLinenumber: 38
    functionLinenumberEnd: 40
    functionName: YaHTTP::isalnum
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/reqresp.cpp
    functionUses: 19
    functionsReached:
    - YaHTTP::isalnum
    linkageType: ''
    returnType: bool
    signature: bool isalnum(char c, const std::locale& loc)
  - BBCount: 51
    BranchProfiles: []
    Callsites:
    - Dst: length
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:46,1
    - Dst: ParseError
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:49,1
    - Dst: ParseError
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:52,1
    - Dst: append
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:56,1
    - Dst: find_first_of
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:59,1
    - Dst: begin
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:64,1
    - Dst: begin
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:64,1
    - Dst: erase
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:65,1
    - Dst: begin
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:65,1
    - Dst: begin
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:65,1
    - Dst: std::string::size
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:73,1
    - Dst: std::string::find
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:75,1
    - Dst: std::string::find
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:77,1
    - Dst: std::string::find
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:79,1
    - Dst: ParseError
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:82,1
    - Dst: std::transform
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:84,1
    - Dst: method::begin
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:84,1
    - Dst: method::end
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:84,1
    - Dst: method::begin
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:84,1
    - Dst: url::parse
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:85,1
    - Dst: Utility::parseUrlParameters
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:86,1
    - Dst: std::getline
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:93,1
    - Dst: statusText::size
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:95,1
    - Dst: YaHTTP::isspace
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:95,1
    - Dst: statusText::at
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:95,1
    - Dst: statusText::substr
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:96,1
    - Dst: statusText::find
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:97,1
    - Dst: statusText::substr
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:98,1
    - Dst: std::string::size
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:100,1
    - Dst: std::string::find
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:102,1
    - Dst: std::string::find
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:104,1
    - Dst: std::string::find
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:106,1
    - Dst: ParseError
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:109,1
    - Dst: std::string::empty
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:115,1
    - Dst: headers::find
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:116,1
    - Dst: headers::end
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:116,1
    - Dst: std::string::find
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:121,1
    - Dst: ParseError
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:122,1
    - Dst: std::string::substr
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:124,1
    - Dst: std::string::substr
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:125,1
    - Dst: std::string::begin
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:126,1
    - Dst: std::string::end
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:126,1
    - Dst: YaHTTP::isspace
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:127,1
    - Dst: ParseError
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:128,1
    - Dst: Utility::trim
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:130,1
    - Dst: std::transform
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:131,1
    - Dst: std::string::begin
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:131,1
    - Dst: std::string::end
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:131,1
    - Dst: std::string::begin
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:131,1
    - Dst: jar::parseSetCookieHeader
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:135,1
    - Dst: jar::parseCookieHeader
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:137,1
    - Dst: find
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:141,1
    - Dst: substr
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:144,1
    - Dst: ::atoi
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:145,1
    - Dst: substr
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:145,1
    - Dst: headers::find
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:148,1
    - Dst: headers::end
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:148,1
    - Dst: std::move
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:151,1
    - Dst: headers::find
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:164,1
    - Dst: headers::end
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:164,1
    - Dst: ParseError
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:170,1
    - Dst: ParseError
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:171,1
    - Dst: size
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:177,1
    - Dst: ready
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:177,1
    - Dst: size
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:179,1
    - Dst: find
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:184,1
    - Dst: ParseError
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:186,1
    - Dst: copy
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:187,1
    - Dst: erase
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:189,1
    - Dst: begin
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:189,1
    - Dst: begin
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:189,1
    - Dst: sscanf
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:190,1
    - Dst: ParseError
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:191,1
    - Dst: pdns::max
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:194,1
    - Dst: ParseError
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:195,1
    - Dst: size
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:199,1
    - Dst: at
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:200,1
    - Dst: size
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:201,1
    - Dst: at
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:201,1
    - Dst: at
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:203,1
    - Dst: ParseError
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:205,1
    - Dst: substr
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:207,1
    - Dst: erase
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:208,1
    - Dst: begin
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:208,1
    - Dst: begin
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:208,1
    - Dst: size
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:212,1
    - Dst: length
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:215,1
    - Dst: substr
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:216,1
    - Dst: str
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:216,1
    - Dst: length
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:221,1
    - Dst: ready
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:229,1
    CyclomaticComplexity: 79
    EdgeCount: 79
    ICount: 174
    argCount: 1
    argNames:
    - ' somedata'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 230
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 230
    functionName: YaHTTP::AsyncLoader<T>::feed
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/reqresp.cpp
    functionUses: 0
    functionsReached:
    - Utility::parseUrlParameters
    - std::string::end
    - find_first_of
    - YaHTTP::isspace
    - headers::find
    - std::string::size
    - erase
    - std::getline
    - find
    - std::transform
    - ready
    - std::string::substr
    - append
    - size
    - std::string::find
    - substr
    - headers::end
    - begin
    - std::string::empty
    - at
    - std::string::begin
    - pdns::max
    - url::parse
    - statusText::at
    - sscanf
    - copy
    - str
    - jar::parseCookieHeader
    - Utility::trim
    - ::atoi
    - ParseError
    - statusText::find
    - length
    - std::move
    - statusText::substr
    - method::begin
    - statusText::size
    - method::end
    - jar::parseSetCookieHeader
    linkageType: ''
    returnType: bool
    signature: bool AsyncLoader<T>::feed(const std::string& somedata)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: begin
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:237,1
    - Dst: end
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:237,1
    - Dst: Utility::encodeURL
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:238,1
    - Dst: Utility::encodeURL
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:238,1
    - Dst: std::ostringstream::str
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:240,1
    - Dst: std::ostringstream::str
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:241,1
    - Dst: std::string
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:242,1
    - Dst: std::string::begin
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:242,1
    - Dst: std::string::end
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:242,1
    - Dst: YaHTTP::HTTPBase::versionStr
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:246,1
    - Dst: YaHTTP::HTTPBase::versionStr
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:248,1
    - Dst: empty
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:249,1
    - Dst: Utility::status2text
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:250,1
    - Dst: find
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:260,1
    - Dst: end
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:260,1
    - Dst: find
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:263,1
    - Dst: end
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:263,1
    - Dst: find
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:263,1
    - Dst: Pkcs11Slot::logError
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:264,1
    - Dst: find
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:266,1
    - Dst: end
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:266,1
    - Dst: begin
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:276,1
    - Dst: end
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:277,1
    - Dst: Utility::camelizeHeader
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:280,1
    - Dst: Utility::camelizeHeader
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:282,1
    - Dst: cookies::size
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:285,1
    - Dst: cookies::begin
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:289,1
    - Dst: cookies::end
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:289,1
    - Dst: Utility::encodeURL
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:294,1
    - Dst: Utility::encodeURL
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:294,1
    - Dst: cookies::begin
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:297,1
    - Dst: cookies::end
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:297,1
    - Dst: strcookie_map_t::const_iterator::second::str
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:299,1
    - Dst: YaHTTP::HTTPBase::renderer
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:305,1
    - Dst: r
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:308,1
    CyclomaticComplexity: 31
    EdgeCount: 31
    ICount: 66
    argCount: 1
    argNames:
    - ' os'
    argTypes:
    - std::ostream
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 310
      start: 232
    functionDepth: 2
    functionLinenumber: 232
    functionLinenumberEnd: 310
    functionName: YaHTTP::HTTPBase::write
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/reqresp.cpp
    functionUses: 4
    functionsReached:
    - std::string::end
    - Utility::camelizeHeader
    - std::string
    - YaHTTP::HTTPBase::renderer
    - find
    - std::ostringstream::str
    - YaHTTP::HTTPBase::versionStr
    - cookies::size
    - begin
    - empty
    - Pkcs11Slot::logError
    - Utility::encodeURL
    - std::string::begin
    - cookies::end
    - Utility::status2text
    - r
    - end
    - cookies::begin
    - strcookie_map_t::const_iterator::second::str
    linkageType: ''
    returnType: void
    signature: void HTTPBase::write(std::ostream& os) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Response::write
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:313,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ' os'
    - resp
    argTypes:
    - std::ostream
    - Response
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 315
      start: 312
    functionDepth: 0
    functionLinenumber: 312
    functionLinenumberEnd: 315
    functionName: '& operator<<(std::ostream& os, const Response &resp)'
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/reqresp.cpp
    functionUses: 0
    functionsReached:
    - Response::write
    linkageType: ''
    returnType: std::ostream
    signature: std::ostream & operator<<(std::ostream& os, const Response &resp)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::AsyncResponseLoader::initialize
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:319,1
    - Dst: good
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:320,1
    - Dst: read
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:322,1
    - Dst: gcount
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:323,1
    - Dst: clear
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:324,1
    - Dst: YaHTTP::AsyncResponseLoader::feed
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:325,1
    - Dst: std::string
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:325,1
    - Dst: gcount
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:325,1
    - Dst: YaHTTP::AsyncResponseLoader::ready
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:329,1
    - Dst: ParseError
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:330,1
    - Dst: YaHTTP::AsyncResponseLoader::finalize
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:331,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 2
    argNames:
    - ' is'
    - resp
    argTypes:
    - std::istream
    - Response
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 333
      start: 317
    functionDepth: 1
    functionLinenumber: 317
    functionLinenumberEnd: 333
    functionName: '& operator>>(std::istream& is, Response &resp)'
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/reqresp.cpp
    functionUses: 0
    functionsReached:
    - read
    - gcount
    - YaHTTP::AsyncResponseLoader::feed
    - YaHTTP::AsyncResponseLoader::initialize
    - YaHTTP::AsyncResponseLoader::finalize
    - ParseError
    - YaHTTP::AsyncResponseLoader::ready
    - clear
    - std::string
    - good
    linkageType: ''
    returnType: std::istream
    signature: std::istream & operator>>(std::istream& is, Response &resp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Request::write
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:336,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ' os'
    - req
    argTypes:
    - std::ostream
    - Request
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 338
      start: 335
    functionDepth: 0
    functionLinenumber: 335
    functionLinenumberEnd: 338
    functionName: '& operator<<(std::ostream& os, const Request &req)'
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/reqresp.cpp
    functionUses: 0
    functionsReached:
    - Request::write
    linkageType: ''
    returnType: std::ostream
    signature: std::ostream & operator<<(std::ostream& os, const Request &req)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::AsyncRequestLoader::initialize
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:342,1
    - Dst: good
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:343,1
    - Dst: read
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:345,1
    - Dst: gcount
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:346,1
    - Dst: clear
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:347,1
    - Dst: YaHTTP::AsyncRequestLoader::feed
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:348,1
    - Dst: std::string
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:348,1
    - Dst: gcount
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:348,1
    - Dst: YaHTTP::AsyncRequestLoader::ready
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:351,1
    - Dst: ParseError
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:352,1
    - Dst: YaHTTP::AsyncRequestLoader::finalize
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:353,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 2
    argNames:
    - ' is'
    - req
    argTypes:
    - std::istream
    - Request
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 355
      start: 340
    functionDepth: 1
    functionLinenumber: 340
    functionLinenumberEnd: 355
    functionName: '& operator>>(std::istream& is, Request &req)'
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/reqresp.cpp
    functionUses: 0
    functionsReached:
    - read
    - gcount
    - YaHTTP::AsyncRequestLoader::ready
    - YaHTTP::AsyncRequestLoader::initialize
    - YaHTTP::AsyncRequestLoader::feed
    - ParseError
    - YaHTTP::AsyncRequestLoader::finalize
    - clear
    - std::string
    - good
    linkageType: ''
    returnType: std::istream
    signature: std::istream & operator>>(std::istream& is, Request &req)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::isspace
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:11,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - c
    argTypes:
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12
      start: 10
    functionDepth: 0
    functionLinenumber: 10
    functionLinenumberEnd: 12
    functionName: YaHTTP::isspace
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/reqresp.cpp
    functionUses: 25
    functionsReached:
    - YaHTTP::isspace
    linkageType: ''
    returnType: bool
    signature: bool isspace(char c)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::isspace
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:15,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - c
    - ' loc'
    argTypes:
    - char
    - std::locale
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 16
      start: 14
    functionDepth: 0
    functionLinenumber: 14
    functionLinenumberEnd: 16
    functionName: YaHTTP::isspace
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/reqresp.cpp
    functionUses: 26
    functionsReached:
    - YaHTTP::isspace
    linkageType: ''
    returnType: bool
    signature: bool isspace(char c, const std::locale& loc)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::isxdigit
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:19,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - c
    argTypes:
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 20
      start: 18
    functionDepth: 0
    functionLinenumber: 18
    functionLinenumberEnd: 20
    functionName: YaHTTP::isxdigit
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/reqresp.cpp
    functionUses: 11
    functionsReached:
    - YaHTTP::isxdigit
    linkageType: ''
    returnType: bool
    signature: bool isxdigit(char c)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::isxdigit
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:23,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - c
    - ' loc'
    argTypes:
    - char
    - std::locale
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 24
      start: 22
    functionDepth: 0
    functionLinenumber: 22
    functionLinenumberEnd: 24
    functionName: YaHTTP::isxdigit
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/reqresp.cpp
    functionUses: 12
    functionsReached:
    - YaHTTP::isxdigit
    linkageType: ''
    returnType: bool
    signature: bool isxdigit(char c, const std::locale& loc)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::isdigit
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:27,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - c
    argTypes:
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 28
      start: 26
    functionDepth: 0
    functionLinenumber: 26
    functionLinenumberEnd: 28
    functionName: YaHTTP::isdigit
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/reqresp.cpp
    functionUses: 11
    functionsReached:
    - YaHTTP::isdigit
    linkageType: ''
    returnType: bool
    signature: bool isdigit(char c)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::isdigit
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:31,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - c
    - ' loc'
    argTypes:
    - char
    - std::locale
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 32
      start: 30
    functionDepth: 0
    functionLinenumber: 30
    functionLinenumberEnd: 32
    functionName: YaHTTP::isdigit
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/reqresp.cpp
    functionUses: 12
    functionsReached:
    - YaHTTP::isdigit
    linkageType: ''
    returnType: bool
    signature: bool isdigit(char c, const std::locale& loc)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::isalnum
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:35,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - c
    argTypes:
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 36
      start: 34
    functionDepth: 0
    functionLinenumber: 34
    functionLinenumberEnd: 36
    functionName: YaHTTP::isalnum
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/reqresp.cpp
    functionUses: 20
    functionsReached:
    - YaHTTP::isalnum
    linkageType: ''
    returnType: bool
    signature: bool isalnum(char c)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::isalnum
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:39,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - c
    - ' loc'
    argTypes:
    - char
    - std::locale
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 38
    functionDepth: 0
    functionLinenumber: 38
    functionLinenumberEnd: 40
    functionName: YaHTTP::isalnum
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/reqresp.cpp
    functionUses: 21
    functionsReached:
    - YaHTTP::isalnum
    linkageType: ''
    returnType: bool
    signature: bool isalnum(char c, const std::locale& loc)
  - BBCount: 51
    BranchProfiles: []
    Callsites:
    - Dst: length
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:46,1
    - Dst: ParseError
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:49,1
    - Dst: ParseError
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:52,1
    - Dst: append
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:56,1
    - Dst: find_first_of
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:59,1
    - Dst: begin
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:64,1
    - Dst: begin
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:64,1
    - Dst: erase
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:65,1
    - Dst: begin
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:65,1
    - Dst: begin
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:65,1
    - Dst: std::string::size
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:73,1
    - Dst: std::string::find
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:75,1
    - Dst: std::string::find
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:77,1
    - Dst: std::string::find
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:79,1
    - Dst: ParseError
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:82,1
    - Dst: std::transform
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:84,1
    - Dst: method::begin
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:84,1
    - Dst: method::end
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:84,1
    - Dst: method::begin
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:84,1
    - Dst: url::parse
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:85,1
    - Dst: Utility::parseUrlParameters
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:86,1
    - Dst: std::getline
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:93,1
    - Dst: statusText::size
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:95,1
    - Dst: YaHTTP::isspace
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:95,1
    - Dst: statusText::at
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:95,1
    - Dst: statusText::substr
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:96,1
    - Dst: statusText::find
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:97,1
    - Dst: statusText::substr
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:98,1
    - Dst: std::string::size
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:100,1
    - Dst: std::string::find
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:102,1
    - Dst: std::string::find
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:104,1
    - Dst: std::string::find
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:106,1
    - Dst: ParseError
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:109,1
    - Dst: std::string::empty
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:115,1
    - Dst: headers::find
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:116,1
    - Dst: headers::end
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:116,1
    - Dst: std::string::find
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:121,1
    - Dst: ParseError
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:122,1
    - Dst: std::string::substr
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:124,1
    - Dst: std::string::substr
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:125,1
    - Dst: std::string::begin
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:126,1
    - Dst: std::string::end
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:126,1
    - Dst: YaHTTP::isspace
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:127,1
    - Dst: ParseError
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:128,1
    - Dst: Utility::trim
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:130,1
    - Dst: std::transform
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:131,1
    - Dst: std::string::begin
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:131,1
    - Dst: std::string::end
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:131,1
    - Dst: std::string::begin
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:131,1
    - Dst: jar::parseSetCookieHeader
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:135,1
    - Dst: jar::parseCookieHeader
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:137,1
    - Dst: find
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:141,1
    - Dst: substr
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:144,1
    - Dst: ::atoi
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:145,1
    - Dst: substr
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:145,1
    - Dst: headers::find
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:148,1
    - Dst: headers::end
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:148,1
    - Dst: std::move
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:151,1
    - Dst: headers::find
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:164,1
    - Dst: headers::end
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:164,1
    - Dst: ParseError
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:170,1
    - Dst: ParseError
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:171,1
    - Dst: size
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:177,1
    - Dst: ready
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:177,1
    - Dst: size
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:179,1
    - Dst: find
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:184,1
    - Dst: ParseError
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:186,1
    - Dst: copy
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:187,1
    - Dst: erase
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:189,1
    - Dst: begin
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:189,1
    - Dst: begin
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:189,1
    - Dst: sscanf
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:190,1
    - Dst: ParseError
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:191,1
    - Dst: pdns::max
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:194,1
    - Dst: ParseError
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:195,1
    - Dst: size
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:199,1
    - Dst: at
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:200,1
    - Dst: size
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:201,1
    - Dst: at
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:201,1
    - Dst: at
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:203,1
    - Dst: ParseError
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:205,1
    - Dst: substr
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:207,1
    - Dst: erase
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:208,1
    - Dst: begin
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:208,1
    - Dst: begin
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:208,1
    - Dst: size
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:212,1
    - Dst: length
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:215,1
    - Dst: substr
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:216,1
    - Dst: str
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:216,1
    - Dst: length
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:221,1
    - Dst: ready
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:229,1
    CyclomaticComplexity: 79
    EdgeCount: 79
    ICount: 174
    argCount: 1
    argNames:
    - ' somedata'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 230
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 230
    functionName: YaHTTP::AsyncLoader<T>::feed
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/reqresp.cpp
    functionUses: 0
    functionsReached:
    - Utility::parseUrlParameters
    - std::string::end
    - find_first_of
    - YaHTTP::isspace
    - headers::find
    - std::string::size
    - erase
    - std::getline
    - find
    - std::transform
    - ready
    - std::string::substr
    - append
    - size
    - std::string::find
    - substr
    - headers::end
    - begin
    - std::string::empty
    - at
    - std::string::begin
    - pdns::max
    - url::parse
    - statusText::at
    - sscanf
    - copy
    - str
    - jar::parseCookieHeader
    - Utility::trim
    - ::atoi
    - ParseError
    - statusText::find
    - length
    - std::move
    - statusText::substr
    - method::begin
    - statusText::size
    - method::end
    - jar::parseSetCookieHeader
    linkageType: ''
    returnType: bool
    signature: bool AsyncLoader<T>::feed(const std::string& somedata)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: begin
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:237,1
    - Dst: end
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:237,1
    - Dst: Utility::encodeURL
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:238,1
    - Dst: Utility::encodeURL
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:238,1
    - Dst: std::ostringstream::str
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:240,1
    - Dst: std::ostringstream::str
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:241,1
    - Dst: std::string
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:242,1
    - Dst: std::string::begin
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:242,1
    - Dst: std::string::end
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:242,1
    - Dst: YaHTTP::HTTPBase::versionStr
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:246,1
    - Dst: YaHTTP::HTTPBase::versionStr
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:248,1
    - Dst: empty
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:249,1
    - Dst: Utility::status2text
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:250,1
    - Dst: find
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:260,1
    - Dst: end
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:260,1
    - Dst: find
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:263,1
    - Dst: end
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:263,1
    - Dst: find
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:263,1
    - Dst: Pkcs11Slot::logError
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:264,1
    - Dst: find
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:266,1
    - Dst: end
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:266,1
    - Dst: begin
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:276,1
    - Dst: end
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:277,1
    - Dst: Utility::camelizeHeader
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:280,1
    - Dst: Utility::camelizeHeader
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:282,1
    - Dst: cookies::size
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:285,1
    - Dst: cookies::begin
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:289,1
    - Dst: cookies::end
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:289,1
    - Dst: Utility::encodeURL
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:294,1
    - Dst: Utility::encodeURL
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:294,1
    - Dst: cookies::begin
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:297,1
    - Dst: cookies::end
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:297,1
    - Dst: strcookie_map_t::const_iterator::second::str
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:299,1
    - Dst: YaHTTP::HTTPBase::renderer
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:305,1
    - Dst: r
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:308,1
    CyclomaticComplexity: 31
    EdgeCount: 31
    ICount: 66
    argCount: 1
    argNames:
    - ' os'
    argTypes:
    - std::ostream
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 310
      start: 232
    functionDepth: 2
    functionLinenumber: 232
    functionLinenumberEnd: 310
    functionName: YaHTTP::HTTPBase::write
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/reqresp.cpp
    functionUses: 4
    functionsReached:
    - std::string::end
    - Utility::camelizeHeader
    - std::string
    - YaHTTP::HTTPBase::renderer
    - find
    - std::ostringstream::str
    - YaHTTP::HTTPBase::versionStr
    - cookies::size
    - begin
    - empty
    - Pkcs11Slot::logError
    - Utility::encodeURL
    - std::string::begin
    - cookies::end
    - Utility::status2text
    - r
    - end
    - cookies::begin
    - strcookie_map_t::const_iterator::second::str
    linkageType: ''
    returnType: void
    signature: void HTTPBase::write(std::ostream& os) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Response::write
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:313,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ' os'
    - resp
    argTypes:
    - std::ostream
    - Response
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 315
      start: 312
    functionDepth: 0
    functionLinenumber: 312
    functionLinenumberEnd: 315
    functionName: '& operator<<(std::ostream& os, const Response &resp)'
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/reqresp.cpp
    functionUses: 0
    functionsReached:
    - Response::write
    linkageType: ''
    returnType: std::ostream
    signature: std::ostream & operator<<(std::ostream& os, const Response &resp)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::AsyncResponseLoader::initialize
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:319,1
    - Dst: good
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:320,1
    - Dst: read
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:322,1
    - Dst: gcount
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:323,1
    - Dst: clear
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:324,1
    - Dst: YaHTTP::AsyncResponseLoader::feed
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:325,1
    - Dst: std::string
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:325,1
    - Dst: gcount
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:325,1
    - Dst: YaHTTP::AsyncResponseLoader::ready
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:329,1
    - Dst: ParseError
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:330,1
    - Dst: YaHTTP::AsyncResponseLoader::finalize
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:331,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 2
    argNames:
    - ' is'
    - resp
    argTypes:
    - std::istream
    - Response
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 333
      start: 317
    functionDepth: 1
    functionLinenumber: 317
    functionLinenumberEnd: 333
    functionName: '& operator>>(std::istream& is, Response &resp)'
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/reqresp.cpp
    functionUses: 0
    functionsReached:
    - read
    - gcount
    - YaHTTP::AsyncResponseLoader::feed
    - YaHTTP::AsyncResponseLoader::initialize
    - YaHTTP::AsyncResponseLoader::finalize
    - ParseError
    - YaHTTP::AsyncResponseLoader::ready
    - clear
    - std::string
    - good
    linkageType: ''
    returnType: std::istream
    signature: std::istream & operator>>(std::istream& is, Response &resp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Request::write
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:336,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ' os'
    - req
    argTypes:
    - std::ostream
    - Request
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 338
      start: 335
    functionDepth: 0
    functionLinenumber: 335
    functionLinenumberEnd: 338
    functionName: '& operator<<(std::ostream& os, const Request &req)'
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/reqresp.cpp
    functionUses: 0
    functionsReached:
    - Request::write
    linkageType: ''
    returnType: std::ostream
    signature: std::ostream & operator<<(std::ostream& os, const Request &req)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::AsyncRequestLoader::initialize
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:342,1
    - Dst: good
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:343,1
    - Dst: read
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:345,1
    - Dst: gcount
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:346,1
    - Dst: clear
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:347,1
    - Dst: YaHTTP::AsyncRequestLoader::feed
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:348,1
    - Dst: std::string
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:348,1
    - Dst: gcount
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:348,1
    - Dst: YaHTTP::AsyncRequestLoader::ready
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:351,1
    - Dst: ParseError
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:352,1
    - Dst: YaHTTP::AsyncRequestLoader::finalize
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.cpp:353,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 2
    argNames:
    - ' is'
    - req
    argTypes:
    - std::istream
    - Request
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 355
      start: 340
    functionDepth: 1
    functionLinenumber: 340
    functionLinenumberEnd: 355
    functionName: '& operator>>(std::istream& is, Request &req)'
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/reqresp.cpp
    functionUses: 0
    functionsReached:
    - read
    - gcount
    - YaHTTP::AsyncRequestLoader::ready
    - YaHTTP::AsyncRequestLoader::initialize
    - YaHTTP::AsyncRequestLoader::feed
    - ParseError
    - YaHTTP::AsyncRequestLoader::finalize
    - clear
    - std::string
    - good
    linkageType: ''
    returnType: std::istream
    signature: std::istream & operator>>(std::istream& is, Request &req)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8
      start: 8
    functionDepth: 0
    functionLinenumber: 8
    functionLinenumberEnd: 8
    functionName: YaHTTP::Error::Error
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/exception.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Error()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' reason_'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 9
      start: 9
    functionDepth: 0
    functionLinenumber: 9
    functionLinenumberEnd: 9
    functionName: YaHTTP::Error::Error
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/exception.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Error(const std::string& reason_)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 10
      start: 10
    functionDepth: 0
    functionLinenumber: 10
    functionLinenumberEnd: 10
    functionName: ~Error() throw()
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/exception.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~Error() throw()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: c_str
      Src: /src/pdns/ext/yahttp/yahttp/exception.hpp:14,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15
      start: 12
    functionDepth: 0
    functionLinenumber: 12
    functionLinenumberEnd: 15
    functionName: YaHTTP::Error::what
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/exception.hpp
    functionUses: 0
    functionsReached:
    - c_str
    linkageType: ''
    returnType: char
    signature: char * what() const throw()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 21
      start: 21
    functionDepth: 0
    functionLinenumber: 21
    functionLinenumberEnd: 21
    functionName: YaHTTP::ParseError::ParseError
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/exception.hpp
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ParseError()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' reason_'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 22
      start: 22
    functionDepth: 0
    functionLinenumber: 22
    functionLinenumberEnd: 22
    functionName: YaHTTP::ParseError::ParseError
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/exception.hpp
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ParseError(const std::string& reason_)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8
      start: 8
    functionDepth: 0
    functionLinenumber: 8
    functionLinenumberEnd: 8
    functionName: YaHTTP::Error::Error
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/exception.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Error()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' reason_'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 9
      start: 9
    functionDepth: 0
    functionLinenumber: 9
    functionLinenumberEnd: 9
    functionName: YaHTTP::Error::Error
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/exception.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Error(const std::string& reason_)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 10
      start: 10
    functionDepth: 0
    functionLinenumber: 10
    functionLinenumberEnd: 10
    functionName: ~Error() throw()
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/exception.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~Error() throw()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: c_str
      Src: /src/pdns/ext/yahttp/yahttp/exception.hpp:14,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15
      start: 12
    functionDepth: 0
    functionLinenumber: 12
    functionLinenumberEnd: 15
    functionName: YaHTTP::Error::what
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/exception.hpp
    functionUses: 0
    functionsReached:
    - c_str
    linkageType: ''
    returnType: char
    signature: char * what() const throw()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 21
      start: 21
    functionDepth: 0
    functionLinenumber: 21
    functionLinenumberEnd: 21
    functionName: YaHTTP::ParseError::ParseError
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/exception.hpp
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ParseError()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' reason_'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 22
      start: 22
    functionDepth: 0
    functionLinenumber: 22
    functionLinenumberEnd: 22
    functionName: YaHTTP::ParseError::ParseError
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/exception.hpp
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ParseError(const std::string& reason_)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: begin
      Src: /src/pdns/ext/yahttp/yahttp/router.cpp:15,1
    - Dst: end
      Src: /src/pdns/ext/yahttp/yahttp/router.cpp:15,1
    - Dst: Error
      Src: /src/pdns/ext/yahttp/yahttp/router.cpp:16,1
    - Dst: Error
      Src: /src/pdns/ext/yahttp/yahttp/router.cpp:18,1
    - Dst: std::transform
      Src: /src/pdns/ext/yahttp/yahttp/router.cpp:21,1
    - Dst: std::string::begin
      Src: /src/pdns/ext/yahttp/yahttp/router.cpp:21,1
    - Dst: std::string::end
      Src: /src/pdns/ext/yahttp/yahttp/router.cpp:21,1
    - Dst: std::string::begin
      Src: /src/pdns/ext/yahttp/yahttp/router.cpp:21,1
    - Dst: push_back
      Src: /src/pdns/ext/yahttp/yahttp/router.cpp:22,1
    - Dst: funcptr::make_tuple
      Src: /src/pdns/ext/yahttp/yahttp/router.cpp:22,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 13
    argCount: 4
    argNames:
    - ' method'
    - ' url'
    - handler
    - ' name'
    argTypes:
    - std::string
    - std::string
    - THandlerFunction
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 23
      start: 11
    functionDepth: 0
    functionLinenumber: 11
    functionLinenumberEnd: 23
    functionName: YaHTTP::Router::map
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/router.cpp
    functionUses: 42
    functionsReached:
    - std::string::begin
    - std::transform
    - funcptr::make_tuple
    - push_back
    - std::string::end
    - end
    - begin
    - Error
    linkageType: ''
    returnType: void
    signature: void Router::map(const std::string& method, const std::string& url,
      THandlerFunction handler, const std::string& name)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/ext/yahttp/yahttp/router.cpp:32,1
    - Dst: path::size
      Src: /src/pdns/ext/yahttp/yahttp/router.cpp:32,1
    - Dst: size
      Src: /src/pdns/ext/yahttp/yahttp/router.cpp:37,1
    - Dst: std::string
      Src: /src/pdns/ext/yahttp/yahttp/router.cpp:40,1
    - Dst: begin
      Src: /src/pdns/ext/yahttp/yahttp/router.cpp:40,1
    - Dst: static_cast<long>
      Src: /src/pdns/ext/yahttp/yahttp/router.cpp:40,1
    - Dst: begin
      Src: /src/pdns/ext/yahttp/yahttp/router.cpp:40,1
    - Dst: static_cast<long>
      Src: /src/pdns/ext/yahttp/yahttp/router.cpp:40,1
    - Dst: std::string::substr
      Src: /src/pdns/ext/yahttp/yahttp/router.cpp:43,1
    - Dst: path::size
      Src: /src/pdns/ext/yahttp/yahttp/router.cpp:45,1
    - Dst: std::string::empty
      Src: /src/pdns/ext/yahttp/yahttp/router.cpp:46,1
    - Dst: funcptr::tie
      Src: /src/pdns/ext/yahttp/yahttp/router.cpp:47,1
    - Dst: size
      Src: /src/pdns/ext/yahttp/yahttp/router.cpp:49,1
    - Dst: path::size
      Src: /src/pdns/ext/yahttp/yahttp/router.cpp:50,1
    - Dst: path::size
      Src: /src/pdns/ext/yahttp/yahttp/router.cpp:54,1
    - Dst: funcptr::tie
      Src: /src/pdns/ext/yahttp/yahttp/router.cpp:64,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 44
    argCount: 3
    argNames:
    - ' route'
    - ' requrl'
    - params
    argTypes:
    - std::string
    - URL
    - std::map<std::string, TDelim>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 25
    functionDepth: 0
    functionLinenumber: 25
    functionLinenumberEnd: 82
    functionName: YaHTTP::Router::match
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/router.cpp
    functionUses: 10
    functionsReached:
    - funcptr::tie
    - std::string::substr
    - path::size
    - std::string::empty
    - size
    - static_cast<long>
    - begin
    - std::string
    linkageType: ''
    returnType: bool
    signature: bool Router::match(const std::string& route, const URL& requrl, std::map<std::string,
      TDelim> &params)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: funcptr::tie
      Src: /src/pdns/ext/yahttp/yahttp/router.cpp:94,1
    - Dst: std::map::clear
      Src: /src/pdns/ext/yahttp/yahttp/router.cpp:97,1
    - Dst: YaHTTP::Router::match
      Src: /src/pdns/ext/yahttp/yahttp/router.cpp:99,1
    - Dst: std::string::empty
      Src: /src/pdns/ext/yahttp/yahttp/router.cpp:101,1
    - Dst: Request*::parameters::clear
      Src: /src/pdns/ext/yahttp/yahttp/router.cpp:126,1
    - Dst: funcptr::tie
      Src: /src/pdns/ext/yahttp/yahttp/router.cpp:131,1
    - Dst: Request*::url::path::begin
      Src: /src/pdns/ext/yahttp/yahttp/router.cpp:132,1
    - Dst: Request*::url::path::begin
      Src: /src/pdns/ext/yahttp/yahttp/router.cpp:132,1
    - Dst: Utility::decodeURL
      Src: /src/pdns/ext/yahttp/yahttp/router.cpp:133,1
    - Dst: std::move
      Src: /src/pdns/ext/yahttp/yahttp/router.cpp:134,1
    - Dst: std::move
      Src: /src/pdns/ext/yahttp/yahttp/router.cpp:137,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 28
    argCount: 2
    argNames:
    - req
    - ' handler'
    argTypes:
    - Request*
    - THandlerFunction
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 84
    functionDepth: 1
    functionLinenumber: 84
    functionLinenumberEnd: 140
    functionName: YaHTTP::Router::route
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/router.cpp
    functionUses: 6
    functionsReached:
    - std::move
    - funcptr::tie
    - YaHTTP::Router::match
    - Request*::parameters::clear
    - std::map::clear
    - std::string::empty
    - Request*::url::path::begin
    - Utility::decodeURL
    linkageType: ''
    returnType: RoutingResult
    signature: RoutingResult Router::route(Request *req, THandlerFunction& handler)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: begin
      Src: /src/pdns/ext/yahttp/yahttp/router.cpp:143,1
    - Dst: end
      Src: /src/pdns/ext/yahttp/yahttp/router.cpp:143,1
    - Dst: std::ostream::width
      Src: /src/pdns/ext/yahttp/yahttp/router.cpp:145,1
    - Dst: std::ostream::setf
      Src: /src/pdns/ext/yahttp/yahttp/router.cpp:146,1
    - Dst: std::ostream::width
      Src: /src/pdns/ext/yahttp/yahttp/router.cpp:147,1
    - Dst: std::get<0>
      Src: /src/pdns/ext/yahttp/yahttp/router.cpp:148,1
    - Dst: std::ostream::width
      Src: /src/pdns/ext/yahttp/yahttp/router.cpp:149,1
    - Dst: std::get<1>
      Src: /src/pdns/ext/yahttp/yahttp/router.cpp:150,1
    - Dst: std::ostream::width
      Src: /src/pdns/ext/yahttp/yahttp/router.cpp:151,1
    - Dst: std::ostream::setf
      Src: /src/pdns/ext/yahttp/yahttp/router.cpp:152,1
    - Dst: std::get<3>
      Src: /src/pdns/ext/yahttp/yahttp/router.cpp:153,1
    - Dst: TRouteList::iterator::get
      Src: /src/pdns/ext/yahttp/yahttp/router.cpp:156,1
    - Dst: TRouteList::iterator::get
      Src: /src/pdns/ext/yahttp/yahttp/router.cpp:156,1
    - Dst: TRouteList::iterator::get
      Src: /src/pdns/ext/yahttp/yahttp/router.cpp:156,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - os
    argTypes:
    - std::ostream
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 159
      start: 142
    functionDepth: 0
    functionLinenumber: 142
    functionLinenumberEnd: 159
    functionName: YaHTTP::Router::printRoutes
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/router.cpp
    functionUses: 6
    functionsReached:
    - end
    - std::get<0>
    - std::get<1>
    - TRouteList::iterator::get
    - std::ostream::width
    - begin
    - std::ostream::setf
    - std::get<3>
    linkageType: ''
    returnType: void
    signature: void Router::printRoutes(std::ostream &os)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: begin
      Src: /src/pdns/ext/yahttp/yahttp/router.cpp:167,1
    - Dst: end
      Src: /src/pdns/ext/yahttp/yahttp/router.cpp:167,1
    - Dst: std::get<3>
      Src: /src/pdns/ext/yahttp/yahttp/router.cpp:169,1
    - Dst: std::get<1>
      Src: /src/pdns/ext/yahttp/yahttp/router.cpp:169,1
    - Dst: std::get<0>
      Src: /src/pdns/ext/yahttp/yahttp/router.cpp:169,1
    - Dst: TRouteList::iterator::get
      Src: /src/pdns/ext/yahttp/yahttp/router.cpp:171,1
    - Dst: TRouteList::iterator::get
      Src: /src/pdns/ext/yahttp/yahttp/router.cpp:171,1
    - Dst: TRouteList::iterator::get
      Src: /src/pdns/ext/yahttp/yahttp/router.cpp:171,1
    - Dst: Error
      Src: /src/pdns/ext/yahttp/yahttp/router.cpp:176,1
    - Dst: static_cast<int>
      Src: /src/pdns/ext/yahttp/yahttp/router.cpp:178,1
    - Dst: std::string::size
      Src: /src/pdns/ext/yahttp/yahttp/router.cpp:178,1
    - Dst: static_cast<int>
      Src: /src/pdns/ext/yahttp/yahttp/router.cpp:183,1
    - Dst: std::string::size
      Src: /src/pdns/ext/yahttp/yahttp/router.cpp:183,1
    - Dst: std::string::substr
      Src: /src/pdns/ext/yahttp/yahttp/router.cpp:184,1
    - Dst: std::string
      Src: /src/pdns/ext/yahttp/yahttp/router.cpp:186,1
    - Dst: std::string::begin
      Src: /src/pdns/ext/yahttp/yahttp/router.cpp:186,1
    - Dst: std::string::begin
      Src: /src/pdns/ext/yahttp/yahttp/router.cpp:186,1
    - Dst: std::string
      Src: /src/pdns/ext/yahttp/yahttp/router.cpp:188,1
    - Dst: std::string::begin
      Src: /src/pdns/ext/yahttp/yahttp/router.cpp:188,1
    - Dst: std::string::begin
      Src: /src/pdns/ext/yahttp/yahttp/router.cpp:188,1
    - Dst: find
      Src: /src/pdns/ext/yahttp/yahttp/router.cpp:189,1
    - Dst: end
      Src: /src/pdns/ext/yahttp/yahttp/router.cpp:189,1
    - Dst: Utility::encodeURL
      Src: /src/pdns/ext/yahttp/yahttp/router.cpp:190,1
    - Dst: std::string::substr
      Src: /src/pdns/ext/yahttp/yahttp/router.cpp:199,1
    - Dst: std::ostringstream::str
      Src: /src/pdns/ext/yahttp/yahttp/router.cpp:200,1
    - Dst: std::make_pair
      Src: /src/pdns/ext/yahttp/yahttp/router.cpp:201,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 36
    argCount: 2
    argNames:
    - name
    - ' arguments'
    argTypes:
    - std::string
    - strstr_map_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 202
      start: 161
    functionDepth: 0
    functionLinenumber: 161
    functionLinenumberEnd: 202
    functionName: YaHTTP::Router::urlFor
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/router.cpp
    functionUses: 6
    functionsReached:
    - std::string::begin
    - std::string::substr
    - std::ostringstream::str
    - end
    - std::get<0>
    - std::get<1>
    - TRouteList::iterator::get
    - begin
    - Error
    - std::make_pair
    - std::get<3>
    - Utility::encodeURL
    - std::string
    - std::string::size
    - find
    - static_cast<int>
    linkageType: ''
    returnType: std::pair<std::string,std::string>
    signature: std::pair<std::string,std::string> Router::urlFor(const std::string
      &name, const strstr_map_t& arguments)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: begin
      Src: /src/pdns/ext/yahttp/yahttp/router.cpp:15,1
    - Dst: end
      Src: /src/pdns/ext/yahttp/yahttp/router.cpp:15,1
    - Dst: Error
      Src: /src/pdns/ext/yahttp/yahttp/router.cpp:16,1
    - Dst: Error
      Src: /src/pdns/ext/yahttp/yahttp/router.cpp:18,1
    - Dst: std::transform
      Src: /src/pdns/ext/yahttp/yahttp/router.cpp:21,1
    - Dst: std::string::begin
      Src: /src/pdns/ext/yahttp/yahttp/router.cpp:21,1
    - Dst: std::string::end
      Src: /src/pdns/ext/yahttp/yahttp/router.cpp:21,1
    - Dst: std::string::begin
      Src: /src/pdns/ext/yahttp/yahttp/router.cpp:21,1
    - Dst: push_back
      Src: /src/pdns/ext/yahttp/yahttp/router.cpp:22,1
    - Dst: funcptr::make_tuple
      Src: /src/pdns/ext/yahttp/yahttp/router.cpp:22,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 13
    argCount: 4
    argNames:
    - ' method'
    - ' url'
    - handler
    - ' name'
    argTypes:
    - std::string
    - std::string
    - THandlerFunction
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 23
      start: 11
    functionDepth: 0
    functionLinenumber: 11
    functionLinenumberEnd: 23
    functionName: YaHTTP::Router::map
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/router.cpp
    functionUses: 42
    functionsReached:
    - std::string::begin
    - std::transform
    - funcptr::make_tuple
    - push_back
    - std::string::end
    - end
    - begin
    - Error
    linkageType: ''
    returnType: void
    signature: void Router::map(const std::string& method, const std::string& url,
      THandlerFunction handler, const std::string& name)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/ext/yahttp/yahttp/router.cpp:32,1
    - Dst: path::size
      Src: /src/pdns/ext/yahttp/yahttp/router.cpp:32,1
    - Dst: size
      Src: /src/pdns/ext/yahttp/yahttp/router.cpp:37,1
    - Dst: std::string
      Src: /src/pdns/ext/yahttp/yahttp/router.cpp:40,1
    - Dst: begin
      Src: /src/pdns/ext/yahttp/yahttp/router.cpp:40,1
    - Dst: static_cast<long>
      Src: /src/pdns/ext/yahttp/yahttp/router.cpp:40,1
    - Dst: begin
      Src: /src/pdns/ext/yahttp/yahttp/router.cpp:40,1
    - Dst: static_cast<long>
      Src: /src/pdns/ext/yahttp/yahttp/router.cpp:40,1
    - Dst: std::string::substr
      Src: /src/pdns/ext/yahttp/yahttp/router.cpp:43,1
    - Dst: path::size
      Src: /src/pdns/ext/yahttp/yahttp/router.cpp:45,1
    - Dst: std::string::empty
      Src: /src/pdns/ext/yahttp/yahttp/router.cpp:46,1
    - Dst: funcptr::tie
      Src: /src/pdns/ext/yahttp/yahttp/router.cpp:47,1
    - Dst: size
      Src: /src/pdns/ext/yahttp/yahttp/router.cpp:49,1
    - Dst: path::size
      Src: /src/pdns/ext/yahttp/yahttp/router.cpp:50,1
    - Dst: path::size
      Src: /src/pdns/ext/yahttp/yahttp/router.cpp:54,1
    - Dst: funcptr::tie
      Src: /src/pdns/ext/yahttp/yahttp/router.cpp:64,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 44
    argCount: 3
    argNames:
    - ' route'
    - ' requrl'
    - params
    argTypes:
    - std::string
    - URL
    - std::map<std::string, TDelim>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 25
    functionDepth: 0
    functionLinenumber: 25
    functionLinenumberEnd: 82
    functionName: YaHTTP::Router::match
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/router.cpp
    functionUses: 11
    functionsReached:
    - funcptr::tie
    - std::string::substr
    - path::size
    - std::string::empty
    - size
    - static_cast<long>
    - begin
    - std::string
    linkageType: ''
    returnType: bool
    signature: bool Router::match(const std::string& route, const URL& requrl, std::map<std::string,
      TDelim> &params)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: funcptr::tie
      Src: /src/pdns/ext/yahttp/yahttp/router.cpp:94,1
    - Dst: std::map::clear
      Src: /src/pdns/ext/yahttp/yahttp/router.cpp:97,1
    - Dst: YaHTTP::Router::match
      Src: /src/pdns/ext/yahttp/yahttp/router.cpp:99,1
    - Dst: std::string::empty
      Src: /src/pdns/ext/yahttp/yahttp/router.cpp:101,1
    - Dst: Request*::parameters::clear
      Src: /src/pdns/ext/yahttp/yahttp/router.cpp:126,1
    - Dst: funcptr::tie
      Src: /src/pdns/ext/yahttp/yahttp/router.cpp:131,1
    - Dst: Request*::url::path::begin
      Src: /src/pdns/ext/yahttp/yahttp/router.cpp:132,1
    - Dst: Request*::url::path::begin
      Src: /src/pdns/ext/yahttp/yahttp/router.cpp:132,1
    - Dst: Utility::decodeURL
      Src: /src/pdns/ext/yahttp/yahttp/router.cpp:133,1
    - Dst: std::move
      Src: /src/pdns/ext/yahttp/yahttp/router.cpp:134,1
    - Dst: std::move
      Src: /src/pdns/ext/yahttp/yahttp/router.cpp:137,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 28
    argCount: 2
    argNames:
    - req
    - ' handler'
    argTypes:
    - Request*
    - THandlerFunction
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 84
    functionDepth: 1
    functionLinenumber: 84
    functionLinenumberEnd: 140
    functionName: YaHTTP::Router::route
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/router.cpp
    functionUses: 6
    functionsReached:
    - std::move
    - funcptr::tie
    - YaHTTP::Router::match
    - Request*::parameters::clear
    - std::map::clear
    - std::string::empty
    - Request*::url::path::begin
    - Utility::decodeURL
    linkageType: ''
    returnType: RoutingResult
    signature: RoutingResult Router::route(Request *req, THandlerFunction& handler)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: begin
      Src: /src/pdns/ext/yahttp/yahttp/router.cpp:143,1
    - Dst: end
      Src: /src/pdns/ext/yahttp/yahttp/router.cpp:143,1
    - Dst: std::ostream::width
      Src: /src/pdns/ext/yahttp/yahttp/router.cpp:145,1
    - Dst: std::ostream::setf
      Src: /src/pdns/ext/yahttp/yahttp/router.cpp:146,1
    - Dst: std::ostream::width
      Src: /src/pdns/ext/yahttp/yahttp/router.cpp:147,1
    - Dst: std::get<0>
      Src: /src/pdns/ext/yahttp/yahttp/router.cpp:148,1
    - Dst: std::ostream::width
      Src: /src/pdns/ext/yahttp/yahttp/router.cpp:149,1
    - Dst: std::get<1>
      Src: /src/pdns/ext/yahttp/yahttp/router.cpp:150,1
    - Dst: std::ostream::width
      Src: /src/pdns/ext/yahttp/yahttp/router.cpp:151,1
    - Dst: std::ostream::setf
      Src: /src/pdns/ext/yahttp/yahttp/router.cpp:152,1
    - Dst: std::get<3>
      Src: /src/pdns/ext/yahttp/yahttp/router.cpp:153,1
    - Dst: TRouteList::iterator::get
      Src: /src/pdns/ext/yahttp/yahttp/router.cpp:156,1
    - Dst: TRouteList::iterator::get
      Src: /src/pdns/ext/yahttp/yahttp/router.cpp:156,1
    - Dst: TRouteList::iterator::get
      Src: /src/pdns/ext/yahttp/yahttp/router.cpp:156,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - os
    argTypes:
    - std::ostream
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 159
      start: 142
    functionDepth: 0
    functionLinenumber: 142
    functionLinenumberEnd: 159
    functionName: YaHTTP::Router::printRoutes
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/router.cpp
    functionUses: 6
    functionsReached:
    - end
    - std::get<0>
    - std::get<1>
    - TRouteList::iterator::get
    - std::ostream::width
    - begin
    - std::ostream::setf
    - std::get<3>
    linkageType: ''
    returnType: void
    signature: void Router::printRoutes(std::ostream &os)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: begin
      Src: /src/pdns/ext/yahttp/yahttp/router.cpp:167,1
    - Dst: end
      Src: /src/pdns/ext/yahttp/yahttp/router.cpp:167,1
    - Dst: std::get<3>
      Src: /src/pdns/ext/yahttp/yahttp/router.cpp:169,1
    - Dst: std::get<1>
      Src: /src/pdns/ext/yahttp/yahttp/router.cpp:169,1
    - Dst: std::get<0>
      Src: /src/pdns/ext/yahttp/yahttp/router.cpp:169,1
    - Dst: TRouteList::iterator::get
      Src: /src/pdns/ext/yahttp/yahttp/router.cpp:171,1
    - Dst: TRouteList::iterator::get
      Src: /src/pdns/ext/yahttp/yahttp/router.cpp:171,1
    - Dst: TRouteList::iterator::get
      Src: /src/pdns/ext/yahttp/yahttp/router.cpp:171,1
    - Dst: Error
      Src: /src/pdns/ext/yahttp/yahttp/router.cpp:176,1
    - Dst: static_cast<int>
      Src: /src/pdns/ext/yahttp/yahttp/router.cpp:178,1
    - Dst: std::string::size
      Src: /src/pdns/ext/yahttp/yahttp/router.cpp:178,1
    - Dst: static_cast<int>
      Src: /src/pdns/ext/yahttp/yahttp/router.cpp:183,1
    - Dst: std::string::size
      Src: /src/pdns/ext/yahttp/yahttp/router.cpp:183,1
    - Dst: std::string::substr
      Src: /src/pdns/ext/yahttp/yahttp/router.cpp:184,1
    - Dst: std::string
      Src: /src/pdns/ext/yahttp/yahttp/router.cpp:186,1
    - Dst: std::string::begin
      Src: /src/pdns/ext/yahttp/yahttp/router.cpp:186,1
    - Dst: std::string::begin
      Src: /src/pdns/ext/yahttp/yahttp/router.cpp:186,1
    - Dst: std::string
      Src: /src/pdns/ext/yahttp/yahttp/router.cpp:188,1
    - Dst: std::string::begin
      Src: /src/pdns/ext/yahttp/yahttp/router.cpp:188,1
    - Dst: std::string::begin
      Src: /src/pdns/ext/yahttp/yahttp/router.cpp:188,1
    - Dst: find
      Src: /src/pdns/ext/yahttp/yahttp/router.cpp:189,1
    - Dst: end
      Src: /src/pdns/ext/yahttp/yahttp/router.cpp:189,1
    - Dst: Utility::encodeURL
      Src: /src/pdns/ext/yahttp/yahttp/router.cpp:190,1
    - Dst: std::string::substr
      Src: /src/pdns/ext/yahttp/yahttp/router.cpp:199,1
    - Dst: std::ostringstream::str
      Src: /src/pdns/ext/yahttp/yahttp/router.cpp:200,1
    - Dst: std::make_pair
      Src: /src/pdns/ext/yahttp/yahttp/router.cpp:201,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 36
    argCount: 2
    argNames:
    - name
    - ' arguments'
    argTypes:
    - std::string
    - strstr_map_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 202
      start: 161
    functionDepth: 0
    functionLinenumber: 161
    functionLinenumberEnd: 202
    functionName: YaHTTP::Router::urlFor
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/router.cpp
    functionUses: 6
    functionsReached:
    - std::string::begin
    - std::string::substr
    - std::ostringstream::str
    - end
    - std::get<0>
    - std::get<1>
    - TRouteList::iterator::get
    - begin
    - Error
    - std::make_pair
    - std::get<3>
    - Utility::encodeURL
    - std::string
    - std::string::size
    - find
    - static_cast<int>
    linkageType: ''
    returnType: std::pair<std::string,std::string>
    signature: std::pair<std::string,std::string> Router::urlFor(const std::string
      &name, const strstr_map_t& arguments)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 52
    functionDepth: 0
    functionLinenumber: 52
    functionLinenumberEnd: 52
    functionName: YaHTTP::HTTPBase::SendBodyRender::SendBodyRender
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void SendBodyRender()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: HTTPBase*::body::length
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.hpp:57,1
    - Dst: std::min
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.hpp:58,1
    - Dst: static_cast<std::string::size_type>
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.hpp:58,1
    - Dst: HTTPBase*::body::length
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.hpp:58,1
    - Dst: HTTPBase*::body::substr
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.hpp:60,1
    - Dst: HTTPBase*::body::length
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.hpp:66,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 3
    argNames:
    - doc
    - ' os'
    - chunked
    argTypes:
    - HTTPBase*
    - std::ostream
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 54
    functionDepth: 0
    functionLinenumber: 54
    functionLinenumberEnd: 67
    functionName: operator()(const HTTPBase *doc, std::ostream& os, bool chunked)
      const
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 0
    functionsReached:
    - HTTPBase*::body::length
    - std::min
    - static_cast<std::string::size_type>
    - HTTPBase*::body::substr
    linkageType: ''
    returnType: size_t
    signature: size_t operator()(const HTTPBase *doc, std::ostream& os, bool chunked)
      const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' path_'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 72
    functionDepth: 0
    functionLinenumber: 72
    functionLinenumberEnd: 74
    functionName: YaHTTP::HTTPBase::SendFileRender::SendFileRender
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void SendFileRender(const std::string& path_)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: c_str
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.hpp:82,1
    - Dst: std::ifstream::good
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.hpp:86,1
    - Dst: std::ifstream::read
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.hpp:87,1
    - Dst: std::ifstream::gcount
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.hpp:88,1
    - Dst: write
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.hpp:91,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 3
    argNames:
    - doc
    - ' os'
    - chunked
    argTypes:
    - HTTPBase*
    - std::ostream
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 76
    functionDepth: 0
    functionLinenumber: 76
    functionLinenumberEnd: 97
    functionName: operator()(const HTTPBase *doc __attribute__((unused)), std::ostream&
      os, bool chunked) const
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 0
    functionsReached:
    - write
    - c_str
    - std::ifstream::read
    - std::ifstream::gcount
    - std::ifstream::good
    linkageType: ''
    returnType: size_t
    signature: size_t operator()(const HTTPBase *doc __attribute__((unused)), std::ostream&
      os, bool chunked) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::HTTPBase::initialize
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.hpp:103,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 104
      start: 102
    functionDepth: 0
    functionLinenumber: 102
    functionLinenumberEnd: 104
    functionName: YaHTTP::HTTPBase::HTTPBase
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 0
    functionsReached:
    - YaHTTP::HTTPBase::initialize
    linkageType: ''
    returnType: void
    signature: void HTTPBase()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 105
    functionDepth: 0
    functionLinenumber: 105
    functionLinenumberEnd: 105
    functionName: ~HTTPBase()
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~HTTPBase()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SendBodyRender
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.hpp:111,1
    - Dst: clear
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.hpp:119,1
    - Dst: clear
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.hpp:120,1
    - Dst: clear
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.hpp:121,1
    - Dst: clear
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.hpp:122,1
    - Dst: clear
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.hpp:123,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 19
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 107
    functionDepth: 1
    functionLinenumber: 107
    functionLinenumberEnd: 128
    functionName: YaHTTP::HTTPBase::initialize
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 21
    functionsReached:
    - clear
    - SendBodyRender
    linkageType: ''
    returnType: void
    signature: void initialize()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 18
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - HTTPBase
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 143
      start: 130
    functionDepth: 0
    functionLinenumber: 130
    functionLinenumberEnd: 143
    functionName: YaHTTP::HTTPBase::HTTPBase
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void HTTPBase(const HTTPBase& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 19
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - HTTPBase
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 158
      start: 144
    functionDepth: 0
    functionLinenumber: 144
    functionLinenumberEnd: 158
    functionName: '& operator=(const HTTPBase& rhs)'
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: HTTPBase
    signature: HTTPBase & operator=(const HTTPBase& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 185
      start: 185
    functionDepth: 0
    functionLinenumber: 185
    functionLinenumberEnd: 185
    functionName: '& GET()'
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: strstr_map_t
    signature: strstr_map_t & GET()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 186
      start: 186
    functionDepth: 0
    functionLinenumber: 186
    functionLinenumberEnd: 186
    functionName: '& POST()'
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: strstr_map_t
    signature: strstr_map_t & POST()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 187
      start: 187
    functionDepth: 0
    functionLinenumber: 187
    functionLinenumberEnd: 187
    functionName: '& COOKIES()'
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: strcookie_map_t
    signature: strcookie_map_t & COOKIES()
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Pkcs11Slot::logError
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.hpp:194,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - version_
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 196
      start: 189
    functionDepth: 2
    functionLinenumber: 189
    functionLinenumberEnd: 196
    functionName: YaHTTP::HTTPBase::versionStr
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 6
    functionsReached:
    - Pkcs11Slot::logError
    linkageType: ''
    returnType: std::string
    signature: std::string versionStr(int version_) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::HTTPBase::write
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.hpp:200,1
    - Dst: std::ostringstream::str
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.hpp:201,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 202
      start: 198
    functionDepth: 0
    functionLinenumber: 198
    functionLinenumberEnd: 202
    functionName: YaHTTP::HTTPBase::str
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 0
    functionsReached:
    - YaHTTP::HTTPBase::write
    - std::ostringstream::str
    linkageType: ''
    returnType: std::string
    signature: std::string str() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::Response::initialize
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.hpp:208,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 208
      start: 208
    functionDepth: 0
    functionLinenumber: 208
    functionLinenumberEnd: 208
    functionName: YaHTTP::Response::Response
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 3
    functionsReached:
    - YaHTTP::Response::initialize
    linkageType: ''
    returnType: void
    signature: void Response()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - HTTPBase
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 211
      start: 209
    functionDepth: 0
    functionLinenumber: 209
    functionLinenumberEnd: 211
    functionName: YaHTTP::Response::Response
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Response(const HTTPBase& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: HTTPBase::operator=
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.hpp:213,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - HTTPBase
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 216
      start: 212
    functionDepth: 0
    functionLinenumber: 212
    functionLinenumberEnd: 216
    functionName: '& operator=(const HTTPBase& rhs) override'
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 0
    functionsReached:
    - HTTPBase::operator=
    linkageType: ''
    returnType: Response
    signature: Response & operator=(const HTTPBase& rhs) override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::HTTPBase::initialize
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.hpp:218,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 220
      start: 217
    functionDepth: 0
    functionLinenumber: 217
    functionLinenumberEnd: 220
    functionName: YaHTTP::Response::initialize
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 5
    functionsReached:
    - YaHTTP::HTTPBase::initialize
    linkageType: ''
    returnType: void
    signature: void initialize() override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::HTTPBase::initialize
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.hpp:222,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - HTTPBase
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 229
      start: 221
    functionDepth: 0
    functionLinenumber: 221
    functionLinenumberEnd: 229
    functionName: YaHTTP::Response::initialize
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 5
    functionsReached:
    - YaHTTP::HTTPBase::initialize
    linkageType: ''
    returnType: void
    signature: void initialize(const HTTPBase& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::Request::initialize
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.hpp:237,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 237
      start: 237
    functionDepth: 0
    functionLinenumber: 237
    functionLinenumberEnd: 237
    functionName: YaHTTP::Request::Request
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 4
    functionsReached:
    - YaHTTP::Request::initialize
    linkageType: ''
    returnType: void
    signature: void Request()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - HTTPBase
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 240
      start: 238
    functionDepth: 0
    functionLinenumber: 238
    functionLinenumberEnd: 240
    functionName: YaHTTP::Request::Request
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Request(const HTTPBase& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: HTTPBase::operator=
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.hpp:242,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - HTTPBase
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 245
      start: 241
    functionDepth: 0
    functionLinenumber: 241
    functionLinenumberEnd: 245
    functionName: '& operator=(const HTTPBase& rhs) override'
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 0
    functionsReached:
    - HTTPBase::operator=
    linkageType: ''
    returnType: Request
    signature: Request & operator=(const HTTPBase& rhs) override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::HTTPBase::initialize
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.hpp:247,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 249
      start: 246
    functionDepth: 0
    functionLinenumber: 246
    functionLinenumberEnd: 249
    functionName: YaHTTP::Request::initialize
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 5
    functionsReached:
    - YaHTTP::HTTPBase::initialize
    linkageType: ''
    returnType: void
    signature: void initialize() override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::HTTPBase::initialize
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.hpp:251,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - HTTPBase
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 258
      start: 250
    functionDepth: 0
    functionLinenumber: 250
    functionLinenumberEnd: 258
    functionName: YaHTTP::Request::initialize
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 5
    functionsReached:
    - YaHTTP::HTTPBase::initialize
    linkageType: ''
    returnType: void
    signature: void initialize(const HTTPBase& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::Request::url::parse
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.hpp:260,1
    - Dst: YaHTTP::Request::url::host::find
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.hpp:261,1
    - Dst: std::transform
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.hpp:263,1
    - Dst: YaHTTP::Request::method::begin
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.hpp:263,1
    - Dst: YaHTTP::Request::method::end
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.hpp:263,1
    - Dst: YaHTTP::Request::method::begin
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.hpp:263,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - ' method_'
    - ' url_'
    argTypes:
    - std::string
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 265
      start: 259
    functionDepth: 0
    functionLinenumber: 259
    functionLinenumberEnd: 265
    functionName: YaHTTP::Request::setup
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 0
    functionsReached:
    - std::transform
    - YaHTTP::Request::method::end
    - YaHTTP::Request::url::parse
    - YaHTTP::Request::method::begin
    - YaHTTP::Request::url::host::find
    linkageType: ''
    returnType: void
    signature: void setup(const std::string& method_, const std::string& url_)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: POST
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.hpp:270,1
    - Dst: POST
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.hpp:270,1
    - Dst: Utility::encodeURL
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.hpp:271,1
    - Dst: Utility::encodeURL
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.hpp:271,1
    - Dst: std::ostringstream::str
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.hpp:274,1
    - Dst: std::ostringstream::str
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.hpp:275,1
    - Dst: std::ostringstream::str
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.hpp:275,1
    - Dst: POST
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.hpp:282,1
    - Dst: POST
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.hpp:282,1
    - Dst: Utility::encodeURL
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.hpp:283,1
    - Dst: strstr_map_t::const_iterator::second::size
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.hpp:283,1
    - Dst: Utility::encodeURL
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.hpp:284,1
    - Dst: std::ostringstream::str
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.hpp:287,1
    - Dst: std::ostringstream::str
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.hpp:290,1
    - Dst: length
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.hpp:291,1
    - Dst: std::ostringstream::str
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.hpp:295,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 24
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 296
      start: 267
    functionDepth: 0
    functionLinenumber: 267
    functionLinenumberEnd: 296
    functionName: YaHTTP::Request::preparePost
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 0
    functionsReached:
    - length
    - POST
    - std::ostringstream::str
    - strstr_map_t::const_iterator::second::size
    - Utility::encodeURL
    linkageType: ''
    returnType: void
    signature: void preparePost(postformat_t format = urlencoded)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: str
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.hpp:324,1
    - Dst: YaHTTP::AsyncLoader::target::initialize
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.hpp:330,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 1
    argNames:
    - target_
    argTypes:
    - T*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 331
      start: 322
    functionDepth: 0
    functionLinenumber: 322
    functionLinenumberEnd: 331
    functionName: YaHTTP::AsyncLoader::initialize
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 0
    functionsReached:
    - YaHTTP::AsyncLoader::target::initialize
    - str
    linkageType: ''
    returnType: void
    signature: void initialize(T* target_)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 337
      start: 333
    functionDepth: 0
    functionLinenumber: 333
    functionLinenumberEnd: 337
    functionName: YaHTTP::AsyncLoader::ready
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool ready()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: flush
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.hpp:339,1
    - Dst: YaHTTP::AsyncLoader::ready
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.hpp:340,1
    - Dst: str
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.hpp:341,1
    - Dst: headers::find
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.hpp:342,1
    - Dst: headers::end
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.hpp:343,1
    - Dst: Utility::iequals
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.hpp:343,1
    - Dst: Utility::parseUrlParameters
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.hpp:344,1
    - Dst: std::move
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.hpp:346,1
    - Dst: str
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.hpp:348,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 351
      start: 338
    functionDepth: 0
    functionLinenumber: 338
    functionLinenumberEnd: 351
    functionName: YaHTTP::AsyncLoader::finalize
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 0
    functionsReached:
    - std::move
    - Utility::iequals
    - YaHTTP::AsyncLoader::ready
    - Utility::parseUrlParameters
    - headers::end
    - str
    - headers::find
    - flush
    linkageType: ''
    returnType: void
    signature: void finalize()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 52
    functionDepth: 0
    functionLinenumber: 52
    functionLinenumberEnd: 52
    functionName: YaHTTP::HTTPBase::SendBodyRender::SendBodyRender
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void SendBodyRender()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: HTTPBase*::body::length
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.hpp:57,1
    - Dst: std::min
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.hpp:58,1
    - Dst: static_cast<std::string::size_type>
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.hpp:58,1
    - Dst: HTTPBase*::body::length
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.hpp:58,1
    - Dst: HTTPBase*::body::substr
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.hpp:60,1
    - Dst: HTTPBase*::body::length
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.hpp:66,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 3
    argNames:
    - doc
    - ' os'
    - chunked
    argTypes:
    - HTTPBase*
    - std::ostream
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 54
    functionDepth: 0
    functionLinenumber: 54
    functionLinenumberEnd: 67
    functionName: operator()(const HTTPBase *doc, std::ostream& os, bool chunked)
      const
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 0
    functionsReached:
    - HTTPBase*::body::length
    - std::min
    - static_cast<std::string::size_type>
    - HTTPBase*::body::substr
    linkageType: ''
    returnType: size_t
    signature: size_t operator()(const HTTPBase *doc, std::ostream& os, bool chunked)
      const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' path_'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 72
    functionDepth: 0
    functionLinenumber: 72
    functionLinenumberEnd: 74
    functionName: YaHTTP::HTTPBase::SendFileRender::SendFileRender
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void SendFileRender(const std::string& path_)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: c_str
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.hpp:82,1
    - Dst: std::ifstream::good
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.hpp:86,1
    - Dst: std::ifstream::read
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.hpp:87,1
    - Dst: std::ifstream::gcount
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.hpp:88,1
    - Dst: write
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.hpp:91,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 3
    argNames:
    - doc
    - ' os'
    - chunked
    argTypes:
    - HTTPBase*
    - std::ostream
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 76
    functionDepth: 0
    functionLinenumber: 76
    functionLinenumberEnd: 97
    functionName: operator()(const HTTPBase *doc __attribute__((unused)), std::ostream&
      os, bool chunked) const
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 0
    functionsReached:
    - write
    - c_str
    - std::ifstream::read
    - std::ifstream::gcount
    - std::ifstream::good
    linkageType: ''
    returnType: size_t
    signature: size_t operator()(const HTTPBase *doc __attribute__((unused)), std::ostream&
      os, bool chunked) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::HTTPBase::initialize
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.hpp:103,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 104
      start: 102
    functionDepth: 0
    functionLinenumber: 102
    functionLinenumberEnd: 104
    functionName: YaHTTP::HTTPBase::HTTPBase
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 0
    functionsReached:
    - YaHTTP::HTTPBase::initialize
    linkageType: ''
    returnType: void
    signature: void HTTPBase()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 105
    functionDepth: 0
    functionLinenumber: 105
    functionLinenumberEnd: 105
    functionName: ~HTTPBase()
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~HTTPBase()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SendBodyRender
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.hpp:111,1
    - Dst: clear
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.hpp:119,1
    - Dst: clear
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.hpp:120,1
    - Dst: clear
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.hpp:121,1
    - Dst: clear
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.hpp:122,1
    - Dst: clear
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.hpp:123,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 19
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 107
    functionDepth: 1
    functionLinenumber: 107
    functionLinenumberEnd: 128
    functionName: YaHTTP::HTTPBase::initialize
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 26
    functionsReached:
    - clear
    - SendBodyRender
    linkageType: ''
    returnType: void
    signature: void initialize()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 18
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - HTTPBase
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 143
      start: 130
    functionDepth: 0
    functionLinenumber: 130
    functionLinenumberEnd: 143
    functionName: YaHTTP::HTTPBase::HTTPBase
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void HTTPBase(const HTTPBase& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 19
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - HTTPBase
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 158
      start: 144
    functionDepth: 0
    functionLinenumber: 144
    functionLinenumberEnd: 158
    functionName: '& operator=(const HTTPBase& rhs)'
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: HTTPBase
    signature: HTTPBase & operator=(const HTTPBase& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 185
      start: 185
    functionDepth: 0
    functionLinenumber: 185
    functionLinenumberEnd: 185
    functionName: '& GET()'
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: strstr_map_t
    signature: strstr_map_t & GET()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 186
      start: 186
    functionDepth: 0
    functionLinenumber: 186
    functionLinenumberEnd: 186
    functionName: '& POST()'
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: strstr_map_t
    signature: strstr_map_t & POST()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 187
      start: 187
    functionDepth: 0
    functionLinenumber: 187
    functionLinenumberEnd: 187
    functionName: '& COOKIES()'
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: strcookie_map_t
    signature: strcookie_map_t & COOKIES()
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: Pkcs11Slot::logError
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.hpp:194,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - version_
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 196
      start: 189
    functionDepth: 2
    functionLinenumber: 189
    functionLinenumberEnd: 196
    functionName: YaHTTP::HTTPBase::versionStr
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 6
    functionsReached:
    - Pkcs11Slot::logError
    linkageType: ''
    returnType: std::string
    signature: std::string versionStr(int version_) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::HTTPBase::write
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.hpp:200,1
    - Dst: std::ostringstream::str
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.hpp:201,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 202
      start: 198
    functionDepth: 0
    functionLinenumber: 198
    functionLinenumberEnd: 202
    functionName: YaHTTP::HTTPBase::str
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 0
    functionsReached:
    - YaHTTP::HTTPBase::write
    - std::ostringstream::str
    linkageType: ''
    returnType: std::string
    signature: std::string str() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::Response::initialize
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.hpp:208,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 208
      start: 208
    functionDepth: 0
    functionLinenumber: 208
    functionLinenumberEnd: 208
    functionName: YaHTTP::Response::Response
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 3
    functionsReached:
    - YaHTTP::Response::initialize
    linkageType: ''
    returnType: void
    signature: void Response()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - HTTPBase
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 211
      start: 209
    functionDepth: 0
    functionLinenumber: 209
    functionLinenumberEnd: 211
    functionName: YaHTTP::Response::Response
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Response(const HTTPBase& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: HTTPBase::operator=
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.hpp:213,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - HTTPBase
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 216
      start: 212
    functionDepth: 0
    functionLinenumber: 212
    functionLinenumberEnd: 216
    functionName: '& operator=(const HTTPBase& rhs) override'
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 0
    functionsReached:
    - HTTPBase::operator=
    linkageType: ''
    returnType: Response
    signature: Response & operator=(const HTTPBase& rhs) override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::HTTPBase::initialize
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.hpp:218,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 220
      start: 217
    functionDepth: 0
    functionLinenumber: 217
    functionLinenumberEnd: 220
    functionName: YaHTTP::Response::initialize
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 6
    functionsReached:
    - YaHTTP::HTTPBase::initialize
    linkageType: ''
    returnType: void
    signature: void initialize() override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::HTTPBase::initialize
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.hpp:222,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - HTTPBase
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 229
      start: 221
    functionDepth: 0
    functionLinenumber: 221
    functionLinenumberEnd: 229
    functionName: YaHTTP::Response::initialize
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 6
    functionsReached:
    - YaHTTP::HTTPBase::initialize
    linkageType: ''
    returnType: void
    signature: void initialize(const HTTPBase& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::Request::initialize
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.hpp:237,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 237
      start: 237
    functionDepth: 0
    functionLinenumber: 237
    functionLinenumberEnd: 237
    functionName: YaHTTP::Request::Request
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 4
    functionsReached:
    - YaHTTP::Request::initialize
    linkageType: ''
    returnType: void
    signature: void Request()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - HTTPBase
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 240
      start: 238
    functionDepth: 0
    functionLinenumber: 238
    functionLinenumberEnd: 240
    functionName: YaHTTP::Request::Request
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Request(const HTTPBase& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: HTTPBase::operator=
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.hpp:242,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - HTTPBase
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 245
      start: 241
    functionDepth: 0
    functionLinenumber: 241
    functionLinenumberEnd: 245
    functionName: '& operator=(const HTTPBase& rhs) override'
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 0
    functionsReached:
    - HTTPBase::operator=
    linkageType: ''
    returnType: Request
    signature: Request & operator=(const HTTPBase& rhs) override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::HTTPBase::initialize
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.hpp:247,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 249
      start: 246
    functionDepth: 0
    functionLinenumber: 246
    functionLinenumberEnd: 249
    functionName: YaHTTP::Request::initialize
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 6
    functionsReached:
    - YaHTTP::HTTPBase::initialize
    linkageType: ''
    returnType: void
    signature: void initialize() override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::HTTPBase::initialize
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.hpp:251,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - HTTPBase
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 258
      start: 250
    functionDepth: 0
    functionLinenumber: 250
    functionLinenumberEnd: 258
    functionName: YaHTTP::Request::initialize
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 6
    functionsReached:
    - YaHTTP::HTTPBase::initialize
    linkageType: ''
    returnType: void
    signature: void initialize(const HTTPBase& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: YaHTTP::Request::url::parse
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.hpp:260,1
    - Dst: YaHTTP::Request::url::host::find
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.hpp:261,1
    - Dst: std::transform
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.hpp:263,1
    - Dst: YaHTTP::Request::method::begin
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.hpp:263,1
    - Dst: YaHTTP::Request::method::end
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.hpp:263,1
    - Dst: YaHTTP::Request::method::begin
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.hpp:263,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - ' method_'
    - ' url_'
    argTypes:
    - std::string
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 265
      start: 259
    functionDepth: 0
    functionLinenumber: 259
    functionLinenumberEnd: 265
    functionName: YaHTTP::Request::setup
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 0
    functionsReached:
    - std::transform
    - YaHTTP::Request::method::end
    - YaHTTP::Request::url::parse
    - YaHTTP::Request::method::begin
    - YaHTTP::Request::url::host::find
    linkageType: ''
    returnType: void
    signature: void setup(const std::string& method_, const std::string& url_)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: POST
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.hpp:270,1
    - Dst: POST
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.hpp:270,1
    - Dst: Utility::encodeURL
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.hpp:271,1
    - Dst: Utility::encodeURL
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.hpp:271,1
    - Dst: std::ostringstream::str
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.hpp:274,1
    - Dst: std::ostringstream::str
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.hpp:275,1
    - Dst: std::ostringstream::str
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.hpp:275,1
    - Dst: POST
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.hpp:282,1
    - Dst: POST
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.hpp:282,1
    - Dst: Utility::encodeURL
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.hpp:283,1
    - Dst: strstr_map_t::const_iterator::second::size
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.hpp:283,1
    - Dst: Utility::encodeURL
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.hpp:284,1
    - Dst: std::ostringstream::str
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.hpp:287,1
    - Dst: std::ostringstream::str
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.hpp:290,1
    - Dst: length
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.hpp:291,1
    - Dst: std::ostringstream::str
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.hpp:295,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 24
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 296
      start: 267
    functionDepth: 0
    functionLinenumber: 267
    functionLinenumberEnd: 296
    functionName: YaHTTP::Request::preparePost
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 0
    functionsReached:
    - length
    - POST
    - std::ostringstream::str
    - strstr_map_t::const_iterator::second::size
    - Utility::encodeURL
    linkageType: ''
    returnType: void
    signature: void preparePost(postformat_t format = urlencoded)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: str
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.hpp:324,1
    - Dst: YaHTTP::AsyncLoader::target::initialize
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.hpp:330,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 1
    argNames:
    - target_
    argTypes:
    - T*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 331
      start: 322
    functionDepth: 0
    functionLinenumber: 322
    functionLinenumberEnd: 331
    functionName: YaHTTP::AsyncLoader::initialize
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 0
    functionsReached:
    - YaHTTP::AsyncLoader::target::initialize
    - str
    linkageType: ''
    returnType: void
    signature: void initialize(T* target_)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 337
      start: 333
    functionDepth: 0
    functionLinenumber: 333
    functionLinenumberEnd: 337
    functionName: YaHTTP::AsyncLoader::ready
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool ready()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: flush
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.hpp:339,1
    - Dst: YaHTTP::AsyncLoader::ready
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.hpp:340,1
    - Dst: str
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.hpp:341,1
    - Dst: headers::find
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.hpp:342,1
    - Dst: headers::end
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.hpp:343,1
    - Dst: Utility::iequals
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.hpp:343,1
    - Dst: Utility::parseUrlParameters
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.hpp:344,1
    - Dst: std::move
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.hpp:346,1
    - Dst: str
      Src: /src/pdns/ext/yahttp/yahttp/reqresp.hpp:348,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 351
      start: 338
    functionDepth: 0
    functionLinenumber: 338
    functionLinenumberEnd: 351
    functionName: YaHTTP::AsyncLoader::finalize
    functionSourceFile: /src/pdns/ext/yahttp/yahttp/reqresp.hpp
    functionUses: 0
    functionsReached:
    - std::move
    - Utility::iequals
    - YaHTTP::AsyncLoader::ready
    - Utility::parseUrlParameters
    - headers::end
    - str
    - headers::find
    - flush
    linkageType: ''
    returnType: void
    signature: void finalize()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - X
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 53
    functionDepth: 0
    functionLinenumber: 53
    functionLinenumberEnd: 54
    functionName: COMPILER_ASSERT
    functionSourceFile: /src/pdns/ext/ipcrypt2/ipcrypt2.c
    functionUses: 12
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: COMPILER_ASSERT(X)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - a
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 107
      start: 106
    functionDepth: 0
    functionLinenumber: 106
    functionLinenumberEnd: 107
    functionName: LOAD128
    functionSourceFile: /src/pdns/ext/ipcrypt2/ipcrypt2.c
    functionUses: 11
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LOAD128(a)
  - 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: 111
      start: 110
    functionDepth: 0
    functionLinenumber: 110
    functionLinenumberEnd: 111
    functionName: STORE128
    functionSourceFile: /src/pdns/ext/ipcrypt2/ipcrypt2.c
    functionUses: 11
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: STORE128(a, b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - block_vec
    - ','
    - rkey
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 114
    functionDepth: 0
    functionLinenumber: 114
    functionLinenumberEnd: 116
    functionName: AES_XENCRYPT
    functionSourceFile: /src/pdns/ext/ipcrypt2/ipcrypt2.c
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: AES_XENCRYPT(block_vec, rkey)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - block_vec
    - ','
    - rkey
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 122
      start: 120
    functionDepth: 0
    functionLinenumber: 120
    functionLinenumberEnd: 122
    functionName: AES_XENCRYPTLAST
    functionSourceFile: /src/pdns/ext/ipcrypt2/ipcrypt2.c
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: AES_XENCRYPTLAST(block_vec, rkey)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - block_vec
    - ','
    - rkey
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 127
      start: 125
    functionDepth: 0
    functionLinenumber: 125
    functionLinenumberEnd: 127
    functionName: AES_XDECRYPT
    functionSourceFile: /src/pdns/ext/ipcrypt2/ipcrypt2.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: AES_XDECRYPT(block_vec, rkey)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - block_vec
    - ','
    - rkey
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 133
      start: 131
    functionDepth: 0
    functionLinenumber: 131
    functionLinenumberEnd: 133
    functionName: AES_XDECRYPTLAST
    functionSourceFile: /src/pdns/ext/ipcrypt2/ipcrypt2.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: AES_XDECRYPTLAST(block_vec, rkey)
  - 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: 137
      start: 136
    functionDepth: 0
    functionLinenumber: 136
    functionLinenumberEnd: 137
    functionName: XOR128
    functionSourceFile: /src/pdns/ext/ipcrypt2/ipcrypt2.c
    functionUses: 12
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: XOR128(a, b)
  - 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: 141
      start: 140
    functionDepth: 0
    functionLinenumber: 140
    functionLinenumberEnd: 141
    functionName: XOR128_3
    functionSourceFile: /src/pdns/ext/ipcrypt2/ipcrypt2.c
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: XOR128_3(a, b, 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: 145
      start: 144
    functionDepth: 0
    functionLinenumber: 144
    functionLinenumberEnd: 145
    functionName: SET64x2
    functionSourceFile: /src/pdns/ext/ipcrypt2/ipcrypt2.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SET64x2(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: 149
      start: 148
    functionDepth: 0
    functionLinenumber: 148
    functionLinenumberEnd: 149
    functionName: BYTESHL128
    functionSourceFile: /src/pdns/ext/ipcrypt2/ipcrypt2.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BYTESHL128(a, b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 153
      start: 152
    functionDepth: 0
    functionLinenumber: 152
    functionLinenumberEnd: 153
    functionName: SHUFFLE32x4_3333
    functionSourceFile: /src/pdns/ext/ipcrypt2/ipcrypt2.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SHUFFLE32x4_3333(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - rkey
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 157
      start: 156
    functionDepth: 0
    functionLinenumber: 156
    functionLinenumberEnd: 157
    functionName: RKINVERT
    functionSourceFile: /src/pdns/ext/ipcrypt2/ipcrypt2.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RKINVERT(rkey)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - tweak
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 162
      start: 160
    functionDepth: 0
    functionLinenumber: 160
    functionLinenumberEnd: 162
    functionName: TWEAK_EXPAND
    functionSourceFile: /src/pdns/ext/ipcrypt2/ipcrypt2.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TWEAK_EXPAND(tweak)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vshlq_n_u8
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:169,1
    - Dst: vreinterpretq_u8_u64
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:169,1
    - Dst: vshrq_n_u8
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:170,1
    - Dst: vreinterpretq_u8_u64
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:170,1
    - Dst: vdupq_n_u8
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:171,1
    - Dst: vextq_u8
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:172,1
    - Dst: vreinterpretq_u64_u8
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:173,1
    - Dst: vorrq_u8
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:173,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - a
    argTypes:
    - BlockVec
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 174
      start: 166
    functionDepth: 0
    functionLinenumber: 166
    functionLinenumberEnd: 174
    functionName: SHL1_128
    functionSourceFile: /src/pdns/ext/ipcrypt2/ipcrypt2.c
    functionUses: 1
    functionsReached:
    - vdupq_n_u8
    - vshlq_n_u8
    - vreinterpretq_u8_u64
    - vextq_u8
    - vshrq_n_u8
    - vorrq_u8
    - vreinterpretq_u64_u8
    linkageType: ''
    returnType: BlockVec
    signature: BlockVec SHL1_128(const BlockVec a)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vaeseq_u8
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:186,1
    - Dst: vreinterpretq_u8_u64
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:186,1
    - Dst: vmovq_n_u8
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:186,1
    - Dst: vreinterpretq_u64_u8
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:191,1
    - Dst: vqtbl1q_u8
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:191,1
    - Dst: vld1q_u8
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:191,1
    - Dst: SET64x2
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:193,1
    - Dst: XOR128
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:194,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - block_vec
    - rc
    argTypes:
    - BlockVec
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 195
      start: 181
    functionDepth: 0
    functionLinenumber: 181
    functionLinenumberEnd: 195
    functionName: AES_KEYGEN
    functionSourceFile: /src/pdns/ext/ipcrypt2/ipcrypt2.c
    functionUses: 0
    functionsReached:
    - XOR128
    - SET64x2
    - vreinterpretq_u8_u64
    - vaeseq_u8
    - vreinterpretq_u64_u8
    - vmovq_n_u8
    - vld1q_u8
    - vqtbl1q_u8
    linkageType: ''
    returnType: BlockVec
    signature: BlockVec AES_KEYGEN(BlockVec block_vec, const int rc)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - a
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 243
      start: 242
    functionDepth: 0
    functionLinenumber: 242
    functionLinenumberEnd: 243
    functionName: LOAD128
    functionSourceFile: /src/pdns/ext/ipcrypt2/ipcrypt2.c
    functionUses: 11
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LOAD128(a)
  - 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: 247
      start: 246
    functionDepth: 0
    functionLinenumber: 246
    functionLinenumberEnd: 247
    functionName: STORE128
    functionSourceFile: /src/pdns/ext/ipcrypt2/ipcrypt2.c
    functionUses: 11
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: STORE128(a, b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - block_vec
    - ','
    - rkey
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 251
      start: 250
    functionDepth: 0
    functionLinenumber: 250
    functionLinenumberEnd: 251
    functionName: AES_ENCRYPT
    functionSourceFile: /src/pdns/ext/ipcrypt2/ipcrypt2.c
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: AES_ENCRYPT(block_vec, rkey)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - block_vec
    - ','
    - rkey
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 255
      start: 254
    functionDepth: 0
    functionLinenumber: 254
    functionLinenumberEnd: 255
    functionName: AES_ENCRYPTLAST
    functionSourceFile: /src/pdns/ext/ipcrypt2/ipcrypt2.c
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: AES_ENCRYPTLAST(block_vec, rkey)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - block_vec
    - ','
    - rkey
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 259
      start: 258
    functionDepth: 0
    functionLinenumber: 258
    functionLinenumberEnd: 259
    functionName: AES_DECRYPT
    functionSourceFile: /src/pdns/ext/ipcrypt2/ipcrypt2.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: AES_DECRYPT(block_vec, rkey)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - block_vec
    - ','
    - rkey
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 263
      start: 262
    functionDepth: 0
    functionLinenumber: 262
    functionLinenumberEnd: 263
    functionName: AES_DECRYPTLAST
    functionSourceFile: /src/pdns/ext/ipcrypt2/ipcrypt2.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: AES_DECRYPTLAST(block_vec, rkey)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - block_vec
    - ','
    - rc
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 267
      start: 266
    functionDepth: 0
    functionLinenumber: 266
    functionLinenumberEnd: 267
    functionName: AES_KEYGEN
    functionSourceFile: /src/pdns/ext/ipcrypt2/ipcrypt2.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: AES_KEYGEN(block_vec, rc)
  - 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: 271
      start: 270
    functionDepth: 0
    functionLinenumber: 270
    functionLinenumberEnd: 271
    functionName: XOR128
    functionSourceFile: /src/pdns/ext/ipcrypt2/ipcrypt2.c
    functionUses: 13
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: XOR128(a, b)
  - 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: 275
      start: 274
    functionDepth: 0
    functionLinenumber: 274
    functionLinenumberEnd: 275
    functionName: XOR128_3
    functionSourceFile: /src/pdns/ext/ipcrypt2/ipcrypt2.c
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: XOR128_3(a, b, 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: 279
      start: 278
    functionDepth: 0
    functionLinenumber: 278
    functionLinenumberEnd: 279
    functionName: SET64x2
    functionSourceFile: /src/pdns/ext/ipcrypt2/ipcrypt2.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SET64x2(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: 283
      start: 282
    functionDepth: 0
    functionLinenumber: 282
    functionLinenumberEnd: 283
    functionName: BYTESHL128
    functionSourceFile: /src/pdns/ext/ipcrypt2/ipcrypt2.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BYTESHL128(a, b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 287
      start: 286
    functionDepth: 0
    functionLinenumber: 286
    functionLinenumberEnd: 287
    functionName: SHUFFLE32x4_3333
    functionSourceFile: /src/pdns/ext/ipcrypt2/ipcrypt2.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SHUFFLE32x4_3333(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - rkey
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 291
      start: 290
    functionDepth: 0
    functionLinenumber: 290
    functionLinenumberEnd: 291
    functionName: RKINVERT
    functionSourceFile: /src/pdns/ext/ipcrypt2/ipcrypt2.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RKINVERT(rkey)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - tweak
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 298
      start: 294
    functionDepth: 0
    functionLinenumber: 294
    functionLinenumberEnd: 298
    functionName: TWEAK_EXPAND
    functionSourceFile: /src/pdns/ext/ipcrypt2/ipcrypt2.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TWEAK_EXPAND(tweak)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _mm_add_epi8
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:305,1
    - Dst: _mm_and_si128
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:306,1
    - Dst: _mm_srli_epi16
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:306,1
    - Dst: _mm_set1_epi8
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:306,1
    - Dst: _mm_srli_si128
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:307,1
    - Dst: _mm_or_si128
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:308,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - a
    argTypes:
    - BlockVec
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 309
      start: 302
    functionDepth: 0
    functionLinenumber: 302
    functionLinenumberEnd: 309
    functionName: SHL1_128
    functionSourceFile: /src/pdns/ext/ipcrypt2/ipcrypt2.c
    functionUses: 1
    functionsReached:
    - _mm_srli_si128
    - _mm_set1_epi8
    - _mm_or_si128
    - _mm_add_epi8
    - _mm_srli_epi16
    - _mm_and_si128
    linkageType: ''
    returnType: BlockVec
    signature: BlockVec SHL1_128(const BlockVec a)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LOAD128
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:365,1
    - Dst: EXPAND_KEY
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:367,1
    - Dst: EXPAND_KEY
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:368,1
    - Dst: EXPAND_KEY
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:369,1
    - Dst: EXPAND_KEY
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:370,1
    - Dst: EXPAND_KEY
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:371,1
    - Dst: EXPAND_KEY
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:372,1
    - Dst: EXPAND_KEY
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:373,1
    - Dst: EXPAND_KEY
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:374,1
    - Dst: EXPAND_KEY
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:375,1
    - Dst: EXPAND_KEY
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:376,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 2
    argNames:
    - rkeys
    - key
    argTypes:
    - KeySchedule
    - unsigned char[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 379
      start: 351
    functionDepth: 0
    functionLinenumber: 351
    functionLinenumberEnd: 379
    functionName: expand_key
    functionSourceFile: /src/pdns/ext/ipcrypt2/ipcrypt2.c
    functionUses: 3
    functionsReached:
    - EXPAND_KEY
    - LOAD128
    linkageType: ''
    returnType: void
    signature: void expand_key(KeySchedule rkeys, const unsigned char key[IPCRYPT_KEYBYTES])
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - RC
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 363
      start: 357
    functionDepth: 0
    functionLinenumber: 357
    functionLinenumberEnd: 363
    functionName: EXPAND_KEY
    functionSourceFile: /src/pdns/ext/ipcrypt2/ipcrypt2.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: EXPAND_KEY(RC)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: AES_XENCRYPT
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:393,1
    - Dst: LOAD128
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:393,1
    - Dst: AES_XENCRYPT
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:395,1
    - Dst: AES_XENCRYPTLAST
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:397,1
    - Dst: XOR128
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:398,1
    - Dst: XOR128
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:401,1
    - Dst: LOAD128
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:401,1
    - Dst: AES_ENCRYPT
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:403,1
    - Dst: AES_ENCRYPTLAST
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:405,1
    - Dst: STORE128
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:407,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 2
    argNames:
    - x
    - st
    argTypes:
    - uint8_t[]
    - AesState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 408
      start: 384
    functionDepth: 0
    functionLinenumber: 384
    functionLinenumberEnd: 408
    functionName: aes_encrypt
    functionSourceFile: /src/pdns/ext/ipcrypt2/ipcrypt2.c
    functionUses: 1
    functionsReached:
    - AES_XENCRYPTLAST
    - XOR128
    - LOAD128
    - AES_XENCRYPT
    - STORE128
    - AES_ENCRYPT
    - AES_ENCRYPTLAST
    linkageType: ''
    returnType: void
    signature: void aes_encrypt(uint8_t x[16], const AesState *st)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RKINVERT
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:423,1
    - Dst: AES_XDECRYPT
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:427,1
    - Dst: LOAD128
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:427,1
    - Dst: AES_XDECRYPT
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:429,1
    - Dst: AES_XDECRYPTLAST
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:431,1
    - Dst: XOR128
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:432,1
    - Dst: XOR128
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:435,1
    - Dst: LOAD128
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:435,1
    - Dst: AES_DECRYPT
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:437,1
    - Dst: AES_DECRYPTLAST
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:439,1
    - Dst: STORE128
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:441,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 2
    argNames:
    - x
    - st
    argTypes:
    - uint8_t[]
    - AesState*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 442
      start: 413
    functionDepth: 0
    functionLinenumber: 413
    functionLinenumberEnd: 442
    functionName: aes_decrypt
    functionSourceFile: /src/pdns/ext/ipcrypt2/ipcrypt2.c
    functionUses: 1
    functionsReached:
    - AES_XDECRYPT
    - AES_XDECRYPTLAST
    - XOR128
    - AES_DECRYPTLAST
    - LOAD128
    - RKINVERT
    - AES_DECRYPT
    - STORE128
    linkageType: ''
    returnType: void
    signature: void aes_decrypt(uint8_t x[16], const AesState *st)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TWEAK_EXPAND
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:452,1
    - Dst: AES_XENCRYPT
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:458,1
    - Dst: LOAD128
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:458,1
    - Dst: XOR128
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:458,1
    - Dst: AES_XENCRYPT
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:460,1
    - Dst: XOR128
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:460,1
    - Dst: AES_XENCRYPTLAST
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:462,1
    - Dst: XOR128
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:462,1
    - Dst: XOR128
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:463,1
    - Dst: XOR128
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:463,1
    - Dst: XOR128_3
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:466,1
    - Dst: LOAD128
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:466,1
    - Dst: AES_ENCRYPT
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:468,1
    - Dst: XOR128
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:468,1
    - Dst: AES_ENCRYPTLAST
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:470,1
    - Dst: XOR128
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:470,1
    - Dst: STORE128
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:472,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 3
    argNames:
    - x
    - st
    - tweak
    argTypes:
    - uint8_t[]
    - AesState*
    - uint8_t[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 473
      start: 448
    functionDepth: 0
    functionLinenumber: 448
    functionLinenumberEnd: 473
    functionName: aes_encrypt_with_tweak
    functionSourceFile: /src/pdns/ext/ipcrypt2/ipcrypt2.c
    functionUses: 1
    functionsReached:
    - AES_XENCRYPTLAST
    - XOR128
    - XOR128_3
    - LOAD128
    - STORE128
    - AES_XENCRYPT
    - TWEAK_EXPAND
    - AES_ENCRYPT
    - AES_ENCRYPTLAST
    linkageType: ''
    returnType: void
    signature: void aes_encrypt_with_tweak(uint8_t x[16], const AesState *st, const
      uint8_t tweak[IPCRYPT_TWEAKBYTES])
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TWEAK_EXPAND
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:484,1
    - Dst: RKINVERT
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:485,1
    - Dst: RKINVERT
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:491,1
    - Dst: AES_XDECRYPT
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:494,1
    - Dst: LOAD128
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:494,1
    - Dst: XOR128
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:494,1
    - Dst: AES_XDECRYPT
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:496,1
    - Dst: XOR128
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:496,1
    - Dst: AES_XDECRYPTLAST
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:498,1
    - Dst: XOR128
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:498,1
    - Dst: XOR128
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:499,1
    - Dst: XOR128
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:499,1
    - Dst: XOR128_3
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:501,1
    - Dst: LOAD128
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:501,1
    - Dst: AES_DECRYPT
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:503,1
    - Dst: XOR128
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:503,1
    - Dst: AES_DECRYPTLAST
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:505,1
    - Dst: XOR128
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:505,1
    - Dst: STORE128
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:507,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 3
    argNames:
    - x
    - st
    - tweak
    argTypes:
    - uint8_t[]
    - AesState*
    - uint8_t[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 508
      start: 479
    functionDepth: 0
    functionLinenumber: 479
    functionLinenumberEnd: 508
    functionName: aes_decrypt_with_tweak
    functionSourceFile: /src/pdns/ext/ipcrypt2/ipcrypt2.c
    functionUses: 1
    functionsReached:
    - AES_XDECRYPT
    - AES_XDECRYPTLAST
    - XOR128
    - XOR128_3
    - LOAD128
    - RKINVERT
    - AES_DECRYPT
    - AES_DECRYPTLAST
    - STORE128
    - TWEAK_EXPAND
    linkageType: ''
    returnType: void
    signature: void aes_decrypt_with_tweak(uint8_t x[16], const AesState *st, const
      uint8_t tweak[IPCRYPT_TWEAKBYTES])
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: COMPILER_ASSERT
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:517,1
    - Dst: AES_XENCRYPT
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:521,1
    - Dst: LOAD128
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:521,1
    - Dst: AES_XENCRYPT
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:523,1
    - Dst: AES_XENCRYPTLAST
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:525,1
    - Dst: XOR128
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:526,1
    - Dst: XOR128
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:529,1
    - Dst: LOAD128
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:529,1
    - Dst: AES_ENCRYPT
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:531,1
    - Dst: AES_ENCRYPTLAST
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:533,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 2
    argNames:
    - st
    - tweak
    argTypes:
    - NDXState*
    - uint8_t[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 536
      start: 510
    functionDepth: 0
    functionLinenumber: 510
    functionLinenumberEnd: 536
    functionName: aes_xex_tweak
    functionSourceFile: /src/pdns/ext/ipcrypt2/ipcrypt2.c
    functionUses: 2
    functionsReached:
    - AES_XENCRYPTLAST
    - XOR128
    - LOAD128
    - COMPILER_ASSERT
    - AES_XENCRYPT
    - AES_ENCRYPT
    - AES_ENCRYPTLAST
    linkageType: ''
    returnType: BlockVec
    signature: BlockVec aes_xex_tweak(const NDXState *st, const uint8_t tweak[IPCRYPT_NDX_TWEAKBYTES])
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: aes_xex_tweak
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:541,1
    - Dst: COMPILER_ASSERT
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:546,1
    - Dst: AES_XENCRYPT
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:550,1
    - Dst: XOR128
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:550,1
    - Dst: LOAD128
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:550,1
    - Dst: AES_XENCRYPT
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:552,1
    - Dst: AES_XENCRYPTLAST
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:554,1
    - Dst: XOR128_3
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:555,1
    - Dst: XOR128
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:558,1
    - Dst: XOR128
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:558,1
    - Dst: LOAD128
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:558,1
    - Dst: AES_ENCRYPT
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:560,1
    - Dst: AES_ENCRYPTLAST
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:562,1
    - Dst: XOR128
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:562,1
    - Dst: STORE128
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:564,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 3
    argNames:
    - x
    - st
    - tweak
    argTypes:
    - uint8_t[]
    - NDXState*
    - uint8_t[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 565
      start: 538
    functionDepth: 0
    functionLinenumber: 538
    functionLinenumberEnd: 565
    functionName: aes_xex_encrypt
    functionSourceFile: /src/pdns/ext/ipcrypt2/ipcrypt2.c
    functionUses: 1
    functionsReached:
    - AES_XENCRYPTLAST
    - XOR128
    - XOR128_3
    - LOAD128
    - COMPILER_ASSERT
    - aes_xex_tweak
    - AES_XENCRYPT
    - STORE128
    - AES_ENCRYPT
    - AES_ENCRYPTLAST
    linkageType: ''
    returnType: void
    signature: void aes_xex_encrypt(uint8_t x[16], const NDXState *st, const uint8_t
      tweak[IPCRYPT_NDX_TWEAKBYTES])
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: aes_xex_tweak
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:571,1
    - Dst: AES_XDECRYPT
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:578,1
    - Dst: XOR128
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:578,1
    - Dst: LOAD128
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:578,1
    - Dst: AES_XDECRYPT
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:580,1
    - Dst: RKINVERT
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:580,1
    - Dst: AES_XDECRYPTLAST
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:582,1
    - Dst: RKINVERT
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:582,1
    - Dst: XOR128_3
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:583,1
    - Dst: XOR128
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:586,1
    - Dst: XOR128
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:586,1
    - Dst: LOAD128
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:586,1
    - Dst: AES_DECRYPT
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:588,1
    - Dst: RKINVERT
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:588,1
    - Dst: AES_DECRYPTLAST
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:590,1
    - Dst: XOR128
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:590,1
    - Dst: STORE128
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:592,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 3
    argNames:
    - x
    - st
    - tweak
    argTypes:
    - uint8_t[]
    - NDXState*
    - uint8_t[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 593
      start: 567
    functionDepth: 0
    functionLinenumber: 567
    functionLinenumberEnd: 593
    functionName: aes_ndx_decrypt
    functionSourceFile: /src/pdns/ext/ipcrypt2/ipcrypt2.c
    functionUses: 1
    functionsReached:
    - AES_XDECRYPT
    - AES_XDECRYPTLAST
    - XOR128
    - XOR128_3
    - LOAD128
    - RKINVERT
    - AES_DECRYPT
    - AES_DECRYPTLAST
    - aes_xex_tweak
    - STORE128
    linkageType: ''
    returnType: void
    signature: void aes_ndx_decrypt(uint8_t x[16], const NDXState *st, const uint8_t
      tweak[IPCRYPT_NDX_TWEAKBYTES])
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 4
    argNames:
    - hex
    - hex_maxlen
    - bin
    - bin_len
    argTypes:
    - char*
    - size_t
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 630
      start: 603
    functionDepth: 0
    functionLinenumber: 603
    functionLinenumberEnd: 630
    functionName: bin2hex
    functionSourceFile: /src/pdns/ext/ipcrypt2/ipcrypt2.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: 'char *

      bin2hex(char *hex, size_t hex_maxlen, const uint8_t *bin, size_t bin_len)'
  - BBCount: 6
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 24
    argCount: 4
    argNames:
    - bin
    - bin_maxlen
    - hex
    - hex_len
    argTypes:
    - uint8_t*
    - size_t
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 671
      start: 640
    functionDepth: 0
    functionLinenumber: 640
    functionLinenumberEnd: 671
    functionName: hex2bin
    functionSourceFile: /src/pdns/ext/ipcrypt2/ipcrypt2.c
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: size_t hex2bin(uint8_t *bin, size_t bin_maxlen, const char *hex, size_t
      hex_len)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: explicit_bzero
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:681,1
    - Dst: SecureZeroMemory
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:683,1
    - Dst: memset_s
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:685,1
    - Dst: memset
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:687,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - pnt
    - len
    argTypes:
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 697
      start: 677
    functionDepth: 0
    functionLinenumber: 677
    functionLinenumberEnd: 697
    functionName: ipcrypt_zeroize
    functionSourceFile: /src/pdns/ext/ipcrypt2/ipcrypt2.c
    functionUses: 3
    functionsReached:
    - memset
    - memset_s
    - SecureZeroMemory
    - explicit_bzero
    linkageType: ''
    returnType: void
    signature: void ipcrypt_zeroize(void *pnt, size_t len)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: hex2bin
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:712,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 4
    argNames:
    - key
    - key_len
    - hex
    - hex_len
    argTypes:
    - uint8_t*
    - size_t
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 716
      start: 706
    functionDepth: 0
    functionLinenumber: 706
    functionLinenumberEnd: 716
    functionName: ipcrypt_key_from_hex
    functionSourceFile: /src/pdns/ext/ipcrypt2/ipcrypt2.c
    functionUses: 0
    functionsReached:
    - hex2bin
    linkageType: ''
    returnType: int
    signature: int ipcrypt_key_from_hex(uint8_t *key, size_t key_len, const char *hex,
      size_t hex_len)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: hex2bin
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:730,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - ndip
    - hex
    - hex_len
    argTypes:
    - uint8_t[]
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 734
      start: 724
    functionDepth: 0
    functionLinenumber: 724
    functionLinenumberEnd: 734
    functionName: ipcrypt_ndip_from_hex
    functionSourceFile: /src/pdns/ext/ipcrypt2/ipcrypt2.c
    functionUses: 0
    functionsReached:
    - hex2bin
    linkageType: ''
    returnType: int
    signature: int ipcrypt_ndip_from_hex(uint8_t ndip[IPCRYPT_NDIP_BYTES], const char
      *hex, size_t hex_len)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: hex2bin
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:748,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - ndip
    - hex
    - hex_len
    argTypes:
    - uint8_t[]
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 752
      start: 742
    functionDepth: 0
    functionLinenumber: 742
    functionLinenumberEnd: 752
    functionName: ipcrypt_ndx_ndip_from_hex
    functionSourceFile: /src/pdns/ext/ipcrypt2/ipcrypt2.c
    functionUses: 0
    functionsReached:
    - hex2bin
    linkageType: ''
    returnType: int
    signature: int ipcrypt_ndx_ndip_from_hex(uint8_t ndip[IPCRYPT_NDX_NDIP_BYTES],
      const char *hex, size_t hex_len)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: inet_pton
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:766,1
    - Dst: memcpy
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:767,1
    - Dst: inet_pton
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:771,1
    - Dst: memset
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:772,1
    - Dst: memcpy
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:775,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 2
    argNames:
    - ip16
    - ip_str
    argTypes:
    - uint8_t[]
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 779
      start: 759
    functionDepth: 0
    functionLinenumber: 759
    functionLinenumberEnd: 779
    functionName: ipcrypt_str_to_ip16
    functionSourceFile: /src/pdns/ext/ipcrypt2/ipcrypt2.c
    functionUses: 6
    functionsReached:
    - inet_pton
    - memcpy
    - memset
    linkageType: ''
    returnType: int
    signature: int ipcrypt_str_to_ip16(uint8_t ip16[16], const char *ip_str)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: COMPILER_ASSERT
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:792,1
    - Dst: memcpy
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:807,1
    - Dst: inet_ntop
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:808,1
    - Dst: memcpy
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:814,1
    - Dst: inet_ntop
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:815,1
    - Dst: strlen
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:819,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 23
    argCount: 2
    argNames:
    - ip_str
    - ip16
    argTypes:
    - char[]
    - uint8_t[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 820
      start: 786
    functionDepth: 0
    functionLinenumber: 786
    functionLinenumberEnd: 820
    functionName: ipcrypt_ip16_to_str
    functionSourceFile: /src/pdns/ext/ipcrypt2/ipcrypt2.c
    functionUses: 6
    functionsReached:
    - memcpy
    - strlen
    - inet_ntop
    - COMPILER_ASSERT
    linkageType: ''
    returnType: size_t
    signature: size_t ipcrypt_ip16_to_str(char ip_str[IPCRYPT_MAX_IP_STR_BYTES], const
      uint8_t ip16[16])
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:835,1
    - Dst: memcpy
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:838,1
    - Dst: memcpy
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:842,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 2
    argNames:
    - ip16
    - sa
    argTypes:
    - uint8_t[]
    - struct sockaddr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 846
      start: 830
    functionDepth: 0
    functionLinenumber: 830
    functionLinenumberEnd: 846
    functionName: ipcrypt_sockaddr_to_ip16
    functionSourceFile: /src/pdns/ext/ipcrypt2/ipcrypt2.c
    functionUses: 2
    functionsReached:
    - memset
    - memcpy
    linkageType: ''
    returnType: int
    signature: int ipcrypt_sockaddr_to_ip16(uint8_t ip16[16], const struct sockaddr
      *sa)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:863,1
    - Dst: memcmp
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:864,1
    - Dst: memcpy
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:867,1
    - Dst: memcpy
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:875,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 11
    argCount: 2
    argNames:
    - sa
    - ip16
    argTypes:
    - struct sockaddr_storage*
    - uint8_t[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 881
      start: 858
    functionDepth: 0
    functionLinenumber: 858
    functionLinenumberEnd: 881
    functionName: ipcrypt_ip16_to_sockaddr
    functionSourceFile: /src/pdns/ext/ipcrypt2/ipcrypt2.c
    functionUses: 2
    functionsReached:
    - memset
    - memcpy
    - memcmp
    linkageType: ''
    returnType: void
    signature: void ipcrypt_ip16_to_sockaddr(struct sockaddr_storage *sa, const uint8_t
      ip16[16])
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: expand_key
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:892,1
    - Dst: COMPILER_ASSERT
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:893,1
    - Dst: memcpy
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:894,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - ipcrypt
    - key
    argTypes:
    - IPCrypt*
    - uint8_t[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 895
      start: 887
    functionDepth: 0
    functionLinenumber: 887
    functionLinenumberEnd: 895
    functionName: ipcrypt_init
    functionSourceFile: /src/pdns/ext/ipcrypt2/ipcrypt2.c
    functionUses: 0
    functionsReached:
    - expand_key
    - memcpy
    - COMPILER_ASSERT
    linkageType: ''
    returnType: void
    signature: void ipcrypt_init(IPCrypt *ipcrypt, const uint8_t key[IPCRYPT_KEYBYTES])
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ipcrypt_zeroize
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:903,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ipcrypt
    argTypes:
    - IPCrypt*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 904
      start: 900
    functionDepth: 0
    functionLinenumber: 900
    functionLinenumberEnd: 904
    functionName: ipcrypt_deinit
    functionSourceFile: /src/pdns/ext/ipcrypt2/ipcrypt2.c
    functionUses: 0
    functionsReached:
    - ipcrypt_zeroize
    linkageType: ''
    returnType: void
    signature: void ipcrypt_deinit(IPCrypt *ipcrypt)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: expand_key
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:919,1
    - Dst: expand_key
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:920,1
    - Dst: STORE128
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:925,1
    - Dst: XOR128
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:925,1
    - Dst: expand_key
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:934,1
    - Dst: COMPILER_ASSERT
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:937,1
    - Dst: memcpy
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:938,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 2
    argNames:
    - ipcrypt
    - key
    argTypes:
    - IPCryptPFX*
    - uint8_t[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 941
      start: 911
    functionDepth: 0
    functionLinenumber: 911
    functionLinenumberEnd: 941
    functionName: ipcrypt_pfx_init
    functionSourceFile: /src/pdns/ext/ipcrypt2/ipcrypt2.c
    functionUses: 2
    functionsReached:
    - memcpy
    - XOR128
    - COMPILER_ASSERT
    - expand_key
    - STORE128
    linkageType: ''
    returnType: int
    signature: int ipcrypt_pfx_init(IPCryptPFX *ipcrypt, const uint8_t key[IPCRYPT_PFX_KEYBYTES])
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ipcrypt_zeroize
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:950,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ipcrypt
    argTypes:
    - IPCryptPFX*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 951
      start: 947
    functionDepth: 0
    functionLinenumber: 947
    functionLinenumberEnd: 951
    functionName: ipcrypt_pfx_deinit
    functionSourceFile: /src/pdns/ext/ipcrypt2/ipcrypt2.c
    functionUses: 2
    functionsReached:
    - ipcrypt_zeroize
    linkageType: ''
    returnType: void
    signature: void ipcrypt_pfx_deinit(IPCryptPFX *ipcrypt)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:957,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ip16
    argTypes:
    - uint8_t[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 958
      start: 953
    functionDepth: 0
    functionLinenumber: 953
    functionLinenumberEnd: 958
    functionName: ipcrypt_is_mapped_ipv4
    functionSourceFile: /src/pdns/ext/ipcrypt2/ipcrypt2.c
    functionUses: 2
    functionsReached:
    - memcmp
    linkageType: ''
    returnType: int
    signature: int ipcrypt_is_mapped_ipv4(const uint8_t ip16[16])
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:963,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - padded_prefix
    - prefix_len_bits
    argTypes:
    - uint8_t[]
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 971
      start: 960
    functionDepth: 0
    functionLinenumber: 960
    functionLinenumberEnd: 971
    functionName: ipcrypt_pfx_pad_prefix
    functionSourceFile: /src/pdns/ext/ipcrypt2/ipcrypt2.c
    functionUses: 2
    functionsReached:
    - memset
    linkageType: ''
    returnType: void
    signature: void ipcrypt_pfx_pad_prefix(uint8_t padded_prefix[16], unsigned int
      prefix_len_bits)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ip16
    - bit_index
    argTypes:
    - uint8_t[]
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 977
      start: 973
    functionDepth: 0
    functionLinenumber: 973
    functionLinenumberEnd: 977
    functionName: ipcrypt_pfx_get_bit
    functionSourceFile: /src/pdns/ext/ipcrypt2/ipcrypt2.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: uint8_t
    signature: uint8_t ipcrypt_pfx_get_bit(const uint8_t ip16[16], const unsigned
      int bit_index)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 3
    argNames:
    - ip16
    - bit_index
    - bit_value
    argTypes:
    - uint8_t[]
    - unsigned int
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 990
      start: 979
    functionDepth: 0
    functionLinenumber: 979
    functionLinenumberEnd: 990
    functionName: ipcrypt_pfx_set_bit
    functionSourceFile: /src/pdns/ext/ipcrypt2/ipcrypt2.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ipcrypt_pfx_set_bit(uint8_t ip16[16], const unsigned int bit_index,
      const uint8_t bit_value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LOAD128
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:1003,1
    - Dst: SHL1_128
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:1004,1
    - Dst: STORE128
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:1005,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - ip16
    argTypes:
    - uint8_t[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1007
      start: 992
    functionDepth: 0
    functionLinenumber: 992
    functionLinenumberEnd: 1007
    functionName: ipcrypt_pfx_shift_left
    functionSourceFile: /src/pdns/ext/ipcrypt2/ipcrypt2.c
    functionUses: 2
    functionsReached:
    - SHL1_128
    - LOAD128
    - STORE128
    linkageType: ''
    returnType: void
    signature: void ipcrypt_pfx_shift_left(uint8_t ip16[16])
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:1030,1
    - Dst: ipcrypt_is_mapped_ipv4
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:1031,1
    - Dst: ipcrypt_pfx_pad_prefix
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:1035,1
    - Dst: memset
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:1037,1
    - Dst: memcpy
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:1046,1
    - Dst: ipcrypt_pfx_get_bit
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:1048,1
    - Dst: ipcrypt_pfx_shift_left
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:1049,1
    - Dst: ipcrypt_pfx_set_bit
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:1050,1
    - Dst: AES_XENCRYPT
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:1054,1
    - Dst: LOAD128
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:1054,1
    - Dst: AES_XENCRYPT
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:1055,1
    - Dst: LOAD128
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:1055,1
    - Dst: AES_XENCRYPT
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:1056,1
    - Dst: LOAD128
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:1056,1
    - Dst: AES_XENCRYPT
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:1057,1
    - Dst: LOAD128
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:1057,1
    - Dst: AES_XENCRYPT
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:1060,1
    - Dst: AES_XENCRYPT
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:1061,1
    - Dst: AES_XENCRYPT
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:1062,1
    - Dst: AES_XENCRYPT
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:1063,1
    - Dst: AES_XENCRYPTLAST
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:1066,1
    - Dst: AES_XENCRYPTLAST
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:1067,1
    - Dst: AES_XENCRYPTLAST
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:1068,1
    - Dst: AES_XENCRYPTLAST
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:1069,1
    - Dst: XOR128
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:1071,1
    - Dst: XOR128
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:1072,1
    - Dst: XOR128
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:1073,1
    - Dst: XOR128
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:1074,1
    - Dst: XOR128
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:1077,1
    - Dst: LOAD128
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:1077,1
    - Dst: XOR128
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:1078,1
    - Dst: LOAD128
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:1078,1
    - Dst: XOR128
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:1079,1
    - Dst: LOAD128
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:1079,1
    - Dst: XOR128
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:1080,1
    - Dst: LOAD128
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:1080,1
    - Dst: AES_ENCRYPT
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:1083,1
    - Dst: AES_ENCRYPT
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:1084,1
    - Dst: AES_ENCRYPT
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:1085,1
    - Dst: AES_ENCRYPT
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:1086,1
    - Dst: AES_ENCRYPTLAST
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:1089,1
    - Dst: AES_ENCRYPTLAST
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:1090,1
    - Dst: AES_ENCRYPTLAST
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:1091,1
    - Dst: AES_ENCRYPTLAST
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:1092,1
    - Dst: XOR128
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:1096,1
    - Dst: STORE128
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:1097,1
    - Dst: XOR128
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:1101,1
    - Dst: STORE128
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:1102,1
    - Dst: ipcrypt_pfx_get_bit
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:1105,1
    - Dst: ipcrypt_pfx_set_bit
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:1107,1
    - Dst: ipcrypt_pfx_set_bit
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:1108,1
    - Dst: ipcrypt_pfx_shift_left
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:1111,1
    - Dst: ipcrypt_pfx_set_bit
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:1112,1
    - Dst: memcpy
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:1113,1
    - Dst: memcpy
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:1115,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 64
    argCount: 2
    argNames:
    - ipcrypt
    - ip16
    argTypes:
    - IPCryptPFX*
    - uint8_t[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1116
      start: 1015
    functionDepth: 0
    functionLinenumber: 1015
    functionLinenumberEnd: 1116
    functionName: ipcrypt_pfx_encrypt_ip16
    functionSourceFile: /src/pdns/ext/ipcrypt2/ipcrypt2.c
    functionUses: 3
    functionsReached:
    - memcpy
    - ipcrypt_is_mapped_ipv4
    - AES_XENCRYPTLAST
    - XOR128
    - ipcrypt_pfx_get_bit
    - LOAD128
    - memset
    - AES_ENCRYPTLAST
    - AES_XENCRYPT
    - ipcrypt_pfx_pad_prefix
    - STORE128
    - AES_ENCRYPT
    - ipcrypt_pfx_shift_left
    - ipcrypt_pfx_set_bit
    linkageType: ''
    returnType: void
    signature: void ipcrypt_pfx_encrypt_ip16(const IPCryptPFX *ipcrypt, uint8_t ip16[16])
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:1139,1
    - Dst: ipcrypt_is_mapped_ipv4
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:1140,1
    - Dst: ipcrypt_pfx_pad_prefix
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:1144,1
    - Dst: memset
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:1146,1
    - Dst: AES_XENCRYPT
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:1155,1
    - Dst: LOAD128
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:1155,1
    - Dst: AES_XENCRYPT
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:1156,1
    - Dst: LOAD128
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:1156,1
    - Dst: AES_XENCRYPT
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:1158,1
    - Dst: AES_XENCRYPT
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:1159,1
    - Dst: AES_XENCRYPTLAST
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:1161,1
    - Dst: AES_XENCRYPTLAST
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:1162,1
    - Dst: XOR128
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:1163,1
    - Dst: XOR128
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:1164,1
    - Dst: XOR128
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:1167,1
    - Dst: LOAD128
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:1167,1
    - Dst: XOR128
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:1168,1
    - Dst: LOAD128
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:1168,1
    - Dst: AES_ENCRYPT
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:1170,1
    - Dst: AES_ENCRYPT
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:1171,1
    - Dst: AES_ENCRYPTLAST
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:1173,1
    - Dst: AES_ENCRYPTLAST
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:1174,1
    - Dst: XOR128
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:1176,1
    - Dst: STORE128
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:1177,1
    - Dst: ipcrypt_pfx_get_bit
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:1180,1
    - Dst: ipcrypt_pfx_set_bit
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:1182,1
    - Dst: ipcrypt_pfx_shift_left
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:1183,1
    - Dst: ipcrypt_pfx_set_bit
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:1184,1
    - Dst: memcpy
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:1186,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 41
    argCount: 2
    argNames:
    - ipcrypt
    - ip16
    argTypes:
    - IPCryptPFX*
    - uint8_t[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1187
      start: 1123
    functionDepth: 0
    functionLinenumber: 1123
    functionLinenumberEnd: 1187
    functionName: ipcrypt_pfx_decrypt_ip16
    functionSourceFile: /src/pdns/ext/ipcrypt2/ipcrypt2.c
    functionUses: 1
    functionsReached:
    - memcpy
    - ipcrypt_is_mapped_ipv4
    - AES_XENCRYPTLAST
    - XOR128
    - LOAD128
    - ipcrypt_pfx_get_bit
    - ipcrypt_pfx_set_bit
    - memset
    - AES_XENCRYPT
    - ipcrypt_pfx_pad_prefix
    - STORE128
    - AES_ENCRYPT
    - ipcrypt_pfx_shift_left
    - AES_ENCRYPTLAST
    linkageType: ''
    returnType: void
    signature: void ipcrypt_pfx_decrypt_ip16(const IPCryptPFX *ipcrypt, uint8_t ip16[16])
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ipcrypt_str_to_ip16
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:1201,1
    - Dst: ipcrypt_pfx_encrypt_ip16
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:1204,1
    - Dst: ipcrypt_ip16_to_str
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:1205,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - ipcrypt
    - encrypted_ip_str
    - ip_str
    argTypes:
    - IPCryptPFX*
    - char[]
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1206
      start: 1194
    functionDepth: 0
    functionLinenumber: 1194
    functionLinenumberEnd: 1206
    functionName: ipcrypt_pfx_encrypt_ip_str
    functionSourceFile: /src/pdns/ext/ipcrypt2/ipcrypt2.c
    functionUses: 0
    functionsReached:
    - ipcrypt_str_to_ip16
    - ipcrypt_ip16_to_str
    - ipcrypt_pfx_encrypt_ip16
    linkageType: ''
    returnType: size_t
    signature: "size_t ipcrypt_pfx_encrypt_ip_str(const IPCryptPFX *ipcrypt,\n                           char
      \             encrypted_ip_str[IPCRYPT_MAX_IP_STR_BYTES],\n                           const
      char       *ip_str)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:1219,1
    - Dst: ipcrypt_str_to_ip16
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:1220,1
    - Dst: ipcrypt_pfx_decrypt_ip16
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:1223,1
    - Dst: ipcrypt_ip16_to_str
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:1224,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - ipcrypt
    - ip_str
    - encrypted_ip_str
    argTypes:
    - IPCryptPFX*
    - char[]
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1225
      start: 1212
    functionDepth: 0
    functionLinenumber: 1212
    functionLinenumberEnd: 1225
    functionName: ipcrypt_pfx_decrypt_ip_str
    functionSourceFile: /src/pdns/ext/ipcrypt2/ipcrypt2.c
    functionUses: 0
    functionsReached:
    - memset
    - ipcrypt_ip16_to_str
    - ipcrypt_str_to_ip16
    - ipcrypt_pfx_decrypt_ip16
    linkageType: ''
    returnType: size_t
    signature: "size_t ipcrypt_pfx_decrypt_ip_str(const IPCryptPFX *ipcrypt,\n                           char
      \             ip_str[IPCRYPT_MAX_IP_STR_BYTES],\n                           const
      char       *encrypted_ip_str)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: expand_key
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:1240,1
    - Dst: expand_key
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:1241,1
    - Dst: STORE128
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:1246,1
    - Dst: XOR128
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:1246,1
    - Dst: expand_key
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:1255,1
    - Dst: COMPILER_ASSERT
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:1258,1
    - Dst: memcpy
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:1259,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 2
    argNames:
    - ipcrypt
    - key
    argTypes:
    - IPCryptNDX*
    - uint8_t[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1262
      start: 1232
    functionDepth: 0
    functionLinenumber: 1232
    functionLinenumberEnd: 1262
    functionName: ipcrypt_ndx_init
    functionSourceFile: /src/pdns/ext/ipcrypt2/ipcrypt2.c
    functionUses: 0
    functionsReached:
    - memcpy
    - XOR128
    - COMPILER_ASSERT
    - expand_key
    - STORE128
    linkageType: ''
    returnType: int
    signature: int ipcrypt_ndx_init(IPCryptNDX *ipcrypt, const uint8_t key[IPCRYPT_NDX_KEYBYTES])
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ipcrypt_zeroize
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:1270,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ipcrypt
    argTypes:
    - IPCryptNDX*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1271
      start: 1267
    functionDepth: 0
    functionLinenumber: 1267
    functionLinenumberEnd: 1271
    functionName: ipcrypt_ndx_deinit
    functionSourceFile: /src/pdns/ext/ipcrypt2/ipcrypt2.c
    functionUses: 0
    functionsReached:
    - ipcrypt_zeroize
    linkageType: ''
    returnType: void
    signature: void ipcrypt_ndx_deinit(IPCryptNDX *ipcrypt)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:1281,1
    - Dst: aes_encrypt
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:1282,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ipcrypt
    - ip16
    argTypes:
    - IPCrypt*
    - uint8_t[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1283
      start: 1277
    functionDepth: 0
    functionLinenumber: 1277
    functionLinenumberEnd: 1283
    functionName: ipcrypt_encrypt_ip16
    functionSourceFile: /src/pdns/ext/ipcrypt2/ipcrypt2.c
    functionUses: 1
    functionsReached:
    - memcpy
    - aes_encrypt
    linkageType: ''
    returnType: void
    signature: void ipcrypt_encrypt_ip16(const IPCrypt *ipcrypt, uint8_t ip16[16])
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:1293,1
    - Dst: aes_decrypt
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:1294,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ipcrypt
    - ip16
    argTypes:
    - IPCrypt*
    - uint8_t[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1295
      start: 1289
    functionDepth: 0
    functionLinenumber: 1289
    functionLinenumberEnd: 1295
    functionName: ipcrypt_decrypt_ip16
    functionSourceFile: /src/pdns/ext/ipcrypt2/ipcrypt2.c
    functionUses: 1
    functionsReached:
    - memcpy
    - aes_decrypt
    linkageType: ''
    returnType: void
    signature: void ipcrypt_decrypt_ip16(const IPCrypt *ipcrypt, uint8_t ip16[16])
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ipcrypt_str_to_ip16
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:1308,1
    - Dst: ipcrypt_encrypt_ip16
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:1311,1
    - Dst: ipcrypt_ip16_to_str
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:1312,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - ipcrypt
    - encrypted_ip_str
    - ip_str
    argTypes:
    - IPCrypt*
    - char[]
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1313
      start: 1302
    functionDepth: 0
    functionLinenumber: 1302
    functionLinenumberEnd: 1313
    functionName: ipcrypt_encrypt_ip_str
    functionSourceFile: /src/pdns/ext/ipcrypt2/ipcrypt2.c
    functionUses: 0
    functionsReached:
    - ipcrypt_str_to_ip16
    - ipcrypt_ip16_to_str
    - ipcrypt_encrypt_ip16
    linkageType: ''
    returnType: size_t
    signature: "size_t ipcrypt_encrypt_ip_str(const IPCrypt *ipcrypt, char encrypted_ip_str[IPCRYPT_MAX_IP_STR_BYTES],\n
      \                      const char *ip_str)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:1325,1
    - Dst: ipcrypt_str_to_ip16
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:1326,1
    - Dst: ipcrypt_decrypt_ip16
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:1329,1
    - Dst: ipcrypt_ip16_to_str
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:1330,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - ipcrypt
    - ip_str
    - encrypted_ip_str
    argTypes:
    - IPCrypt*
    - char[]
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1331
      start: 1319
    functionDepth: 0
    functionLinenumber: 1319
    functionLinenumberEnd: 1331
    functionName: ipcrypt_decrypt_ip_str
    functionSourceFile: /src/pdns/ext/ipcrypt2/ipcrypt2.c
    functionUses: 0
    functionsReached:
    - memset
    - ipcrypt_ip16_to_str
    - ipcrypt_str_to_ip16
    - ipcrypt_decrypt_ip16
    linkageType: ''
    returnType: size_t
    signature: "size_t ipcrypt_decrypt_ip_str(const IPCrypt *ipcrypt, char ip_str[IPCRYPT_MAX_IP_STR_BYTES],\n
      \                      const char *encrypted_ip_str)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: COMPILER_ASSERT
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:1344,1
    - Dst: memcpy
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:1345,1
    - Dst: memcpy
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:1347,1
    - Dst: memcpy
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:1349,1
    - Dst: aes_encrypt_with_tweak
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:1351,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 4
    argNames:
    - ipcrypt
    - ndip
    - ip16
    - random
    argTypes:
    - IPCrypt*
    - uint8_t[]
    - uint8_t[]
    - uint8_t[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1352
      start: 1338
    functionDepth: 0
    functionLinenumber: 1338
    functionLinenumberEnd: 1352
    functionName: ipcrypt_nd_encrypt_ip16
    functionSourceFile: /src/pdns/ext/ipcrypt2/ipcrypt2.c
    functionUses: 1
    functionsReached:
    - memcpy
    - aes_encrypt_with_tweak
    - COMPILER_ASSERT
    linkageType: ''
    returnType: void
    signature: "void ipcrypt_nd_encrypt_ip16(const IPCrypt *ipcrypt, uint8_t ndip[IPCRYPT_NDIP_BYTES],\n
      \                       const uint8_t ip16[16], const uint8_t random[IPCRYPT_TWEAKBYTES])"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: COMPILER_ASSERT
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:1364,1
    - Dst: memcpy
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:1365,1
    - Dst: memcpy
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:1367,1
    - Dst: aes_decrypt_with_tweak
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:1369,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - ipcrypt
    - ip16
    - ndip
    argTypes:
    - IPCrypt*
    - uint8_t[]
    - uint8_t[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1370
      start: 1358
    functionDepth: 0
    functionLinenumber: 1358
    functionLinenumberEnd: 1370
    functionName: ipcrypt_nd_decrypt_ip16
    functionSourceFile: /src/pdns/ext/ipcrypt2/ipcrypt2.c
    functionUses: 1
    functionsReached:
    - memcpy
    - aes_decrypt_with_tweak
    - COMPILER_ASSERT
    linkageType: ''
    returnType: void
    signature: "void ipcrypt_nd_decrypt_ip16(const IPCrypt *ipcrypt, uint8_t ip16[16],\n
      \                       const uint8_t ndip[IPCRYPT_NDIP_BYTES])"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: COMPILER_ASSERT
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:1384,1
    - Dst: ipcrypt_str_to_ip16
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:1386,1
    - Dst: ipcrypt_nd_encrypt_ip16
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:1388,1
    - Dst: bin2hex
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:1390,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 4
    argNames:
    - ipcrypt
    - encrypted_ip_str
    - ip_str
    - random
    argTypes:
    - IPCrypt*
    - char[]
    - char*
    - uint8_t[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1393
      start: 1377
    functionDepth: 0
    functionLinenumber: 1377
    functionLinenumberEnd: 1393
    functionName: ipcrypt_nd_encrypt_ip_str
    functionSourceFile: /src/pdns/ext/ipcrypt2/ipcrypt2.c
    functionUses: 0
    functionsReached:
    - ipcrypt_str_to_ip16
    - bin2hex
    - ipcrypt_nd_encrypt_ip16
    - COMPILER_ASSERT
    linkageType: ''
    returnType: size_t
    signature: "size_t ipcrypt_nd_encrypt_ip_str(const IPCrypt *ipcrypt, char encrypted_ip_str[IPCRYPT_NDIP_STR_BYTES],\n
      \                         const char *ip_str, const uint8_t random[IPCRYPT_TWEAKBYTES])"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:1406,1
    - Dst: hex2bin
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:1408,1
    - Dst: strlen
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:1408,1
    - Dst: ipcrypt_nd_decrypt_ip16
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:1412,1
    - Dst: ipcrypt_ip16_to_str
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:1414,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - ipcrypt
    - ip_str
    - encrypted_ip_str
    argTypes:
    - IPCrypt*
    - char[]
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1415
      start: 1400
    functionDepth: 0
    functionLinenumber: 1400
    functionLinenumberEnd: 1415
    functionName: ipcrypt_nd_decrypt_ip_str
    functionSourceFile: /src/pdns/ext/ipcrypt2/ipcrypt2.c
    functionUses: 0
    functionsReached:
    - ipcrypt_ip16_to_str
    - hex2bin
    - memset
    - ipcrypt_nd_decrypt_ip16
    - strlen
    linkageType: ''
    returnType: size_t
    signature: "size_t ipcrypt_nd_decrypt_ip_str(const IPCrypt *ipcrypt, char ip_str[IPCRYPT_MAX_IP_STR_BYTES],\n
      \                         const char *encrypted_ip_str)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: COMPILER_ASSERT
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:1428,1
    - Dst: memcpy
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:1429,1
    - Dst: memcpy
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:1431,1
    - Dst: memcpy
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:1433,1
    - Dst: aes_xex_encrypt
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:1435,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 4
    argNames:
    - ipcrypt
    - ndip
    - ip16
    - random
    argTypes:
    - IPCryptNDX*
    - uint8_t[]
    - uint8_t[]
    - uint8_t[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1436
      start: 1422
    functionDepth: 0
    functionLinenumber: 1422
    functionLinenumberEnd: 1436
    functionName: ipcrypt_ndx_encrypt_ip16
    functionSourceFile: /src/pdns/ext/ipcrypt2/ipcrypt2.c
    functionUses: 1
    functionsReached:
    - memcpy
    - aes_xex_encrypt
    - COMPILER_ASSERT
    linkageType: ''
    returnType: void
    signature: "void ipcrypt_ndx_encrypt_ip16(const IPCryptNDX *ipcrypt, uint8_t ndip[IPCRYPT_NDX_NDIP_BYTES],\n
      \                        const uint8_t ip16[16], const uint8_t random[IPCRYPT_NDX_TWEAKBYTES])"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: COMPILER_ASSERT
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:1448,1
    - Dst: memcpy
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:1449,1
    - Dst: memcpy
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:1451,1
    - Dst: aes_ndx_decrypt
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:1453,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - ipcrypt
    - ip16
    - ndip
    argTypes:
    - IPCryptNDX*
    - uint8_t[]
    - uint8_t[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1454
      start: 1442
    functionDepth: 0
    functionLinenumber: 1442
    functionLinenumberEnd: 1454
    functionName: ipcrypt_ndx_decrypt_ip16
    functionSourceFile: /src/pdns/ext/ipcrypt2/ipcrypt2.c
    functionUses: 1
    functionsReached:
    - memcpy
    - COMPILER_ASSERT
    - aes_ndx_decrypt
    linkageType: ''
    returnType: void
    signature: "void ipcrypt_ndx_decrypt_ip16(const IPCryptNDX *ipcrypt, uint8_t ip16[16],\n
      \                        const uint8_t ndip[IPCRYPT_NDX_NDIP_BYTES])"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: COMPILER_ASSERT
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:1469,1
    - Dst: ipcrypt_str_to_ip16
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:1471,1
    - Dst: ipcrypt_ndx_encrypt_ip16
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:1473,1
    - Dst: bin2hex
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:1475,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 4
    argNames:
    - ipcrypt
    - encrypted_ip_str
    - ip_str
    - random
    argTypes:
    - IPCryptNDX*
    - char[]
    - char*
    - uint8_t[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1478
      start: 1461
    functionDepth: 0
    functionLinenumber: 1461
    functionLinenumberEnd: 1478
    functionName: ipcrypt_ndx_encrypt_ip_str
    functionSourceFile: /src/pdns/ext/ipcrypt2/ipcrypt2.c
    functionUses: 0
    functionsReached:
    - ipcrypt_str_to_ip16
    - bin2hex
    - ipcrypt_ndx_encrypt_ip16
    - COMPILER_ASSERT
    linkageType: ''
    returnType: size_t
    signature: "size_t ipcrypt_ndx_encrypt_ip_str(const IPCryptNDX *ipcrypt,\n                           char
      encrypted_ip_str[IPCRYPT_NDX_NDIP_STR_BYTES], const char *ip_str,\n                           const
      uint8_t random[IPCRYPT_NDX_TWEAKBYTES])"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:1491,1
    - Dst: hex2bin
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:1493,1
    - Dst: strlen
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:1493,1
    - Dst: ipcrypt_ndx_decrypt_ip16
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:1497,1
    - Dst: ipcrypt_ip16_to_str
      Src: /src/pdns/ext/ipcrypt2/ipcrypt2.c:1499,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - ipcrypt
    - ip_str
    - encrypted_ip_str
    argTypes:
    - IPCryptNDX*
    - char[]
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1500
      start: 1485
    functionDepth: 0
    functionLinenumber: 1485
    functionLinenumberEnd: 1500
    functionName: ipcrypt_ndx_decrypt_ip_str
    functionSourceFile: /src/pdns/ext/ipcrypt2/ipcrypt2.c
    functionUses: 0
    functionsReached:
    - ipcrypt_ndx_decrypt_ip16
    - ipcrypt_ip16_to_str
    - hex2bin
    - memset
    - strlen
    linkageType: ''
    returnType: size_t
    signature: "size_t ipcrypt_ndx_decrypt_ip_str(const IPCryptNDX *ipcrypt, char
      ip_str[IPCRYPT_MAX_IP_STR_BYTES],\n                           const char *encrypted_ip_str)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 18
      start: 17
    functionDepth: 0
    functionLinenumber: 17
    functionLinenumberEnd: 18
    functionName: __has_attribute
    functionSourceFile: /src/pdns/ext/ipcrypt2/softaes/untrinsics.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: __has_attribute(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - x
    argTypes:
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 76
    functionDepth: 0
    functionLinenumber: 76
    functionLinenumberEnd: 88
    functionName: untrinsics_sbox
    functionSourceFile: /src/pdns/ext/ipcrypt2/softaes/untrinsics.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: uint8_t
    signature: uint8_t untrinsics_sbox(const uint8_t x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - x
    argTypes:
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 90
    functionDepth: 0
    functionLinenumber: 90
    functionLinenumberEnd: 102
    functionName: untrinsics_inv_sbox
    functionSourceFile: /src/pdns/ext/ipcrypt2/softaes/untrinsics.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: uint8_t
    signature: uint8_t untrinsics_inv_sbox(const uint8_t x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 104
    functionDepth: 0
    functionLinenumber: 104
    functionLinenumberEnd: 105
    functionName: untrinsics_sbox
    functionSourceFile: /src/pdns/ext/ipcrypt2/softaes/untrinsics.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: untrinsics_sbox(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 105
    functionDepth: 0
    functionLinenumber: 105
    functionLinenumberEnd: 106
    functionName: untrinsics_inv_sbox
    functionSourceFile: /src/pdns/ext/ipcrypt2/softaes/untrinsics.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: untrinsics_inv_sbox(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - x
    argTypes:
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 113
      start: 109
    functionDepth: 0
    functionLinenumber: 109
    functionLinenumberEnd: 113
    functionName: untrinsics_xtime
    functionSourceFile: /src/pdns/ext/ipcrypt2/softaes/untrinsics.h
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: uint8_t
    signature: uint8_t untrinsics_xtime(uint8_t x)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: untrinsics_xtime
      Src: /src/pdns/ext/ipcrypt2/softaes/untrinsics.h:119,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - x
    argTypes:
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 116
    functionDepth: 0
    functionLinenumber: 116
    functionLinenumberEnd: 120
    functionName: untrinsics_mul2
    functionSourceFile: /src/pdns/ext/ipcrypt2/softaes/untrinsics.h
    functionUses: 1
    functionsReached:
    - untrinsics_xtime
    linkageType: ''
    returnType: uint8_t
    signature: uint8_t untrinsics_mul2(uint8_t x)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: untrinsics_xtime
      Src: /src/pdns/ext/ipcrypt2/softaes/untrinsics.h:126,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - x
    argTypes:
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 127
      start: 123
    functionDepth: 0
    functionLinenumber: 123
    functionLinenumberEnd: 127
    functionName: untrinsics_mul3
    functionSourceFile: /src/pdns/ext/ipcrypt2/softaes/untrinsics.h
    functionUses: 1
    functionsReached:
    - untrinsics_xtime
    linkageType: ''
    returnType: uint8_t
    signature: uint8_t untrinsics_mul3(uint8_t x)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: untrinsics_xtime
      Src: /src/pdns/ext/ipcrypt2/softaes/untrinsics.h:133,1
    - Dst: untrinsics_xtime
      Src: /src/pdns/ext/ipcrypt2/softaes/untrinsics.h:134,1
    - Dst: untrinsics_xtime
      Src: /src/pdns/ext/ipcrypt2/softaes/untrinsics.h:135,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - x
    argTypes:
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 137
      start: 130
    functionDepth: 0
    functionLinenumber: 130
    functionLinenumberEnd: 137
    functionName: untrinsics_mul9
    functionSourceFile: /src/pdns/ext/ipcrypt2/softaes/untrinsics.h
    functionUses: 1
    functionsReached:
    - untrinsics_xtime
    linkageType: ''
    returnType: uint8_t
    signature: uint8_t untrinsics_mul9(uint8_t x)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: untrinsics_xtime
      Src: /src/pdns/ext/ipcrypt2/softaes/untrinsics.h:143,1
    - Dst: untrinsics_xtime
      Src: /src/pdns/ext/ipcrypt2/softaes/untrinsics.h:144,1
    - Dst: untrinsics_xtime
      Src: /src/pdns/ext/ipcrypt2/softaes/untrinsics.h:145,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - x
    argTypes:
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 140
    functionDepth: 0
    functionLinenumber: 140
    functionLinenumberEnd: 147
    functionName: untrinsics_mul0b
    functionSourceFile: /src/pdns/ext/ipcrypt2/softaes/untrinsics.h
    functionUses: 1
    functionsReached:
    - untrinsics_xtime
    linkageType: ''
    returnType: uint8_t
    signature: uint8_t untrinsics_mul0b(uint8_t x)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: untrinsics_xtime
      Src: /src/pdns/ext/ipcrypt2/softaes/untrinsics.h:153,1
    - Dst: untrinsics_xtime
      Src: /src/pdns/ext/ipcrypt2/softaes/untrinsics.h:154,1
    - Dst: untrinsics_xtime
      Src: /src/pdns/ext/ipcrypt2/softaes/untrinsics.h:155,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - x
    argTypes:
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 157
      start: 150
    functionDepth: 0
    functionLinenumber: 150
    functionLinenumberEnd: 157
    functionName: untrinsics_mul0d
    functionSourceFile: /src/pdns/ext/ipcrypt2/softaes/untrinsics.h
    functionUses: 1
    functionsReached:
    - untrinsics_xtime
    linkageType: ''
    returnType: uint8_t
    signature: uint8_t untrinsics_mul0d(uint8_t x)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: untrinsics_xtime
      Src: /src/pdns/ext/ipcrypt2/softaes/untrinsics.h:163,1
    - Dst: untrinsics_xtime
      Src: /src/pdns/ext/ipcrypt2/softaes/untrinsics.h:164,1
    - Dst: untrinsics_xtime
      Src: /src/pdns/ext/ipcrypt2/softaes/untrinsics.h:165,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - x
    argTypes:
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 167
      start: 160
    functionDepth: 0
    functionLinenumber: 160
    functionLinenumberEnd: 167
    functionName: untrinsics_mul0e
    functionSourceFile: /src/pdns/ext/ipcrypt2/softaes/untrinsics.h
    functionUses: 1
    functionsReached:
    - untrinsics_xtime
    linkageType: ''
    returnType: uint8_t
    signature: uint8_t untrinsics_mul0e(uint8_t x)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: untrinsics_sbox
      Src: /src/pdns/ext/ipcrypt2/softaes/untrinsics.h:174,1
    - Dst: untrinsics_sbox
      Src: /src/pdns/ext/ipcrypt2/softaes/untrinsics.h:175,1
    - Dst: untrinsics_sbox
      Src: /src/pdns/ext/ipcrypt2/softaes/untrinsics.h:176,1
    - Dst: untrinsics_sbox
      Src: /src/pdns/ext/ipcrypt2/softaes/untrinsics.h:177,1
    - Dst: untrinsics_sbox
      Src: /src/pdns/ext/ipcrypt2/softaes/untrinsics.h:178,1
    - Dst: untrinsics_sbox
      Src: /src/pdns/ext/ipcrypt2/softaes/untrinsics.h:179,1
    - Dst: untrinsics_sbox
      Src: /src/pdns/ext/ipcrypt2/softaes/untrinsics.h:180,1
    - Dst: untrinsics_sbox
      Src: /src/pdns/ext/ipcrypt2/softaes/untrinsics.h:181,1
    - Dst: untrinsics_sbox
      Src: /src/pdns/ext/ipcrypt2/softaes/untrinsics.h:182,1
    - Dst: untrinsics_sbox
      Src: /src/pdns/ext/ipcrypt2/softaes/untrinsics.h:183,1
    - Dst: untrinsics_sbox
      Src: /src/pdns/ext/ipcrypt2/softaes/untrinsics.h:184,1
    - Dst: untrinsics_sbox
      Src: /src/pdns/ext/ipcrypt2/softaes/untrinsics.h:185,1
    - Dst: untrinsics_sbox
      Src: /src/pdns/ext/ipcrypt2/softaes/untrinsics.h:186,1
    - Dst: untrinsics_sbox
      Src: /src/pdns/ext/ipcrypt2/softaes/untrinsics.h:187,1
    - Dst: untrinsics_sbox
      Src: /src/pdns/ext/ipcrypt2/softaes/untrinsics.h:188,1
    - Dst: untrinsics_sbox
      Src: /src/pdns/ext/ipcrypt2/softaes/untrinsics.h:189,1
    - Dst: memcpy
      Src: /src/pdns/ext/ipcrypt2/softaes/untrinsics.h:190,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 18
    argCount: 1
    argNames:
    - s
    argTypes:
    - uint8_t[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 191
      start: 170
    functionDepth: 0
    functionLinenumber: 170
    functionLinenumberEnd: 191
    functionName: untrinsics_sub_shiftrows
    functionSourceFile: /src/pdns/ext/ipcrypt2/softaes/untrinsics.h
    functionUses: 2
    functionsReached:
    - memcpy
    - untrinsics_sbox
    linkageType: ''
    returnType: void
    signature: void untrinsics_sub_shiftrows(uint8_t s[16])
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: untrinsics_inv_sbox
      Src: /src/pdns/ext/ipcrypt2/softaes/untrinsics.h:198,1
    - Dst: untrinsics_inv_sbox
      Src: /src/pdns/ext/ipcrypt2/softaes/untrinsics.h:199,1
    - Dst: untrinsics_inv_sbox
      Src: /src/pdns/ext/ipcrypt2/softaes/untrinsics.h:200,1
    - Dst: untrinsics_inv_sbox
      Src: /src/pdns/ext/ipcrypt2/softaes/untrinsics.h:201,1
    - Dst: untrinsics_inv_sbox
      Src: /src/pdns/ext/ipcrypt2/softaes/untrinsics.h:202,1
    - Dst: untrinsics_inv_sbox
      Src: /src/pdns/ext/ipcrypt2/softaes/untrinsics.h:203,1
    - Dst: untrinsics_inv_sbox
      Src: /src/pdns/ext/ipcrypt2/softaes/untrinsics.h:204,1
    - Dst: untrinsics_inv_sbox
      Src: /src/pdns/ext/ipcrypt2/softaes/untrinsics.h:205,1
    - Dst: untrinsics_inv_sbox
      Src: /src/pdns/ext/ipcrypt2/softaes/untrinsics.h:206,1
    - Dst: untrinsics_inv_sbox
      Src: /src/pdns/ext/ipcrypt2/softaes/untrinsics.h:207,1
    - Dst: untrinsics_inv_sbox
      Src: /src/pdns/ext/ipcrypt2/softaes/untrinsics.h:208,1
    - Dst: untrinsics_inv_sbox
      Src: /src/pdns/ext/ipcrypt2/softaes/untrinsics.h:209,1
    - Dst: untrinsics_inv_sbox
      Src: /src/pdns/ext/ipcrypt2/softaes/untrinsics.h:210,1
    - Dst: untrinsics_inv_sbox
      Src: /src/pdns/ext/ipcrypt2/softaes/untrinsics.h:211,1
    - Dst: untrinsics_inv_sbox
      Src: /src/pdns/ext/ipcrypt2/softaes/untrinsics.h:212,1
    - Dst: untrinsics_inv_sbox
      Src: /src/pdns/ext/ipcrypt2/softaes/untrinsics.h:213,1
    - Dst: memcpy
      Src: /src/pdns/ext/ipcrypt2/softaes/untrinsics.h:214,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 18
    argCount: 1
    argNames:
    - s
    argTypes:
    - uint8_t[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 215
      start: 194
    functionDepth: 0
    functionLinenumber: 194
    functionLinenumberEnd: 215
    functionName: untrinsics_invsub_shiftrows
    functionSourceFile: /src/pdns/ext/ipcrypt2/softaes/untrinsics.h
    functionUses: 2
    functionsReached:
    - memcpy
    - untrinsics_inv_sbox
    linkageType: ''
    returnType: void
    signature: void untrinsics_invsub_shiftrows(uint8_t s[16])
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: untrinsics_mul2
      Src: /src/pdns/ext/ipcrypt2/softaes/untrinsics.h:224,1
    - Dst: untrinsics_mul3
      Src: /src/pdns/ext/ipcrypt2/softaes/untrinsics.h:224,1
    - Dst: untrinsics_mul2
      Src: /src/pdns/ext/ipcrypt2/softaes/untrinsics.h:225,1
    - Dst: untrinsics_mul3
      Src: /src/pdns/ext/ipcrypt2/softaes/untrinsics.h:225,1
    - Dst: untrinsics_mul2
      Src: /src/pdns/ext/ipcrypt2/softaes/untrinsics.h:226,1
    - Dst: untrinsics_mul3
      Src: /src/pdns/ext/ipcrypt2/softaes/untrinsics.h:226,1
    - Dst: untrinsics_mul3
      Src: /src/pdns/ext/ipcrypt2/softaes/untrinsics.h:227,1
    - Dst: untrinsics_mul2
      Src: /src/pdns/ext/ipcrypt2/softaes/untrinsics.h:227,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - s
    argTypes:
    - uint8_t[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 229
      start: 218
    functionDepth: 0
    functionLinenumber: 218
    functionLinenumberEnd: 229
    functionName: untrinsics_mixcolumns
    functionSourceFile: /src/pdns/ext/ipcrypt2/softaes/untrinsics.h
    functionUses: 1
    functionsReached:
    - untrinsics_mul2
    - untrinsics_mul3
    linkageType: ''
    returnType: void
    signature: void untrinsics_mixcolumns(uint8_t s[16])
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: untrinsics_mul0e
      Src: /src/pdns/ext/ipcrypt2/softaes/untrinsics.h:238,1
    - Dst: untrinsics_mul0b
      Src: /src/pdns/ext/ipcrypt2/softaes/untrinsics.h:238,1
    - Dst: untrinsics_mul0d
      Src: /src/pdns/ext/ipcrypt2/softaes/untrinsics.h:238,1
    - Dst: untrinsics_mul9
      Src: /src/pdns/ext/ipcrypt2/softaes/untrinsics.h:239,1
    - Dst: untrinsics_mul9
      Src: /src/pdns/ext/ipcrypt2/softaes/untrinsics.h:240,1
    - Dst: untrinsics_mul0e
      Src: /src/pdns/ext/ipcrypt2/softaes/untrinsics.h:240,1
    - Dst: untrinsics_mul0b
      Src: /src/pdns/ext/ipcrypt2/softaes/untrinsics.h:240,1
    - Dst: untrinsics_mul0d
      Src: /src/pdns/ext/ipcrypt2/softaes/untrinsics.h:241,1
    - Dst: untrinsics_mul0d
      Src: /src/pdns/ext/ipcrypt2/softaes/untrinsics.h:242,1
    - Dst: untrinsics_mul9
      Src: /src/pdns/ext/ipcrypt2/softaes/untrinsics.h:242,1
    - Dst: untrinsics_mul0e
      Src: /src/pdns/ext/ipcrypt2/softaes/untrinsics.h:242,1
    - Dst: untrinsics_mul0b
      Src: /src/pdns/ext/ipcrypt2/softaes/untrinsics.h:243,1
    - Dst: untrinsics_mul0b
      Src: /src/pdns/ext/ipcrypt2/softaes/untrinsics.h:244,1
    - Dst: untrinsics_mul0d
      Src: /src/pdns/ext/ipcrypt2/softaes/untrinsics.h:244,1
    - Dst: untrinsics_mul9
      Src: /src/pdns/ext/ipcrypt2/softaes/untrinsics.h:244,1
    - Dst: untrinsics_mul0e
      Src: /src/pdns/ext/ipcrypt2/softaes/untrinsics.h:245,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - s
    argTypes:
    - uint8_t[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 247
      start: 232
    functionDepth: 0
    functionLinenumber: 232
    functionLinenumberEnd: 247
    functionName: untrinsics_inv_mixcolumns
    functionSourceFile: /src/pdns/ext/ipcrypt2/softaes/untrinsics.h
    functionUses: 2
    functionsReached:
    - untrinsics_mul0b
    - untrinsics_mul9
    - untrinsics_mul0e
    - untrinsics_mul0d
    linkageType: ''
    returnType: void
    signature: void untrinsics_inv_mixcolumns(uint8_t s[16])
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - x
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 254
      start: 250
    functionDepth: 0
    functionLinenumber: 250
    functionLinenumberEnd: 254
    functionName: untrinsics_rot_word
    functionSourceFile: /src/pdns/ext/ipcrypt2/softaes/untrinsics.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t untrinsics_rot_word(const uint32_t x)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: untrinsics_sbox
      Src: /src/pdns/ext/ipcrypt2/softaes/untrinsics.h:260,1
    - Dst: untrinsics_sbox
      Src: /src/pdns/ext/ipcrypt2/softaes/untrinsics.h:261,1
    - Dst: untrinsics_sbox
      Src: /src/pdns/ext/ipcrypt2/softaes/untrinsics.h:262,1
    - Dst: untrinsics_sbox
      Src: /src/pdns/ext/ipcrypt2/softaes/untrinsics.h:263,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - x
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 264
      start: 257
    functionDepth: 0
    functionLinenumber: 257
    functionLinenumberEnd: 264
    functionName: untrinsics_sub_word
    functionSourceFile: /src/pdns/ext/ipcrypt2/softaes/untrinsics.h
    functionUses: 1
    functionsReached:
    - untrinsics_sbox
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t untrinsics_sub_word(const uint32_t x)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/pdns/ext/ipcrypt2/softaes/untrinsics.h:271,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - a
    argTypes:
    - __m128i
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 273
      start: 267
    functionDepth: 0
    functionLinenumber: 267
    functionLinenumberEnd: 273
    functionName: untrinsics_copy
    functionSourceFile: /src/pdns/ext/ipcrypt2/softaes/untrinsics.h
    functionUses: 5
    functionsReached:
    - memcpy
    linkageType: ''
    returnType: __m128i
    signature: __m128i untrinsics_copy(const __m128i a)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: untrinsics_copy
      Src: /src/pdns/ext/ipcrypt2/softaes/untrinsics.h:279,1
    - Dst: untrinsics_sub_shiftrows
      Src: /src/pdns/ext/ipcrypt2/softaes/untrinsics.h:280,1
    - Dst: untrinsics_mixcolumns
      Src: /src/pdns/ext/ipcrypt2/softaes/untrinsics.h:281,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - a_
    - rk
    argTypes:
    - __m128i
    - __m128i
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 285
      start: 276
    functionDepth: 0
    functionLinenumber: 276
    functionLinenumberEnd: 285
    functionName: _mm_aesenc_si128
    functionSourceFile: /src/pdns/ext/ipcrypt2/softaes/untrinsics.h
    functionUses: 0
    functionsReached:
    - untrinsics_sub_shiftrows
    - untrinsics_copy
    - untrinsics_mixcolumns
    linkageType: ''
    returnType: __m128i
    signature: __m128i _mm_aesenc_si128(const __m128i a_, const __m128i rk)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: untrinsics_copy
      Src: /src/pdns/ext/ipcrypt2/softaes/untrinsics.h:291,1
    - Dst: untrinsics_sub_shiftrows
      Src: /src/pdns/ext/ipcrypt2/softaes/untrinsics.h:292,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - a_
    - rk
    argTypes:
    - __m128i
    - __m128i
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 296
      start: 288
    functionDepth: 0
    functionLinenumber: 288
    functionLinenumberEnd: 296
    functionName: _mm_aesenclast_si128
    functionSourceFile: /src/pdns/ext/ipcrypt2/softaes/untrinsics.h
    functionUses: 0
    functionsReached:
    - untrinsics_sub_shiftrows
    - untrinsics_copy
    linkageType: ''
    returnType: __m128i
    signature: __m128i _mm_aesenclast_si128(const __m128i a_, const __m128i rk)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: untrinsics_copy
      Src: /src/pdns/ext/ipcrypt2/softaes/untrinsics.h:302,1
    - Dst: untrinsics_invsub_shiftrows
      Src: /src/pdns/ext/ipcrypt2/softaes/untrinsics.h:303,1
    - Dst: untrinsics_inv_mixcolumns
      Src: /src/pdns/ext/ipcrypt2/softaes/untrinsics.h:304,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - a_
    - rk
    argTypes:
    - __m128i
    - __m128i
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 308
      start: 299
    functionDepth: 0
    functionLinenumber: 299
    functionLinenumberEnd: 308
    functionName: _mm_aesdec_si128
    functionSourceFile: /src/pdns/ext/ipcrypt2/softaes/untrinsics.h
    functionUses: 0
    functionsReached:
    - untrinsics_inv_mixcolumns
    - untrinsics_copy
    - untrinsics_invsub_shiftrows
    linkageType: ''
    returnType: __m128i
    signature: __m128i _mm_aesdec_si128(const __m128i a_, const __m128i rk)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: untrinsics_copy
      Src: /src/pdns/ext/ipcrypt2/softaes/untrinsics.h:314,1
    - Dst: untrinsics_invsub_shiftrows
      Src: /src/pdns/ext/ipcrypt2/softaes/untrinsics.h:315,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - a_
    - rk
    argTypes:
    - __m128i
    - __m128i
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 319
      start: 311
    functionDepth: 0
    functionLinenumber: 311
    functionLinenumberEnd: 319
    functionName: _mm_aesdeclast_si128
    functionSourceFile: /src/pdns/ext/ipcrypt2/softaes/untrinsics.h
    functionUses: 0
    functionsReached:
    - untrinsics_copy
    - untrinsics_invsub_shiftrows
    linkageType: ''
    returnType: __m128i
    signature: __m128i _mm_aesdeclast_si128(const __m128i a_, const __m128i rk)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: untrinsics_copy
      Src: /src/pdns/ext/ipcrypt2/softaes/untrinsics.h:325,1
    - Dst: untrinsics_inv_mixcolumns
      Src: /src/pdns/ext/ipcrypt2/softaes/untrinsics.h:326,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - a_
    argTypes:
    - __m128i
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 328
      start: 322
    functionDepth: 0
    functionLinenumber: 322
    functionLinenumberEnd: 328
    functionName: _mm_aesimc_si128
    functionSourceFile: /src/pdns/ext/ipcrypt2/softaes/untrinsics.h
    functionUses: 0
    functionsReached:
    - untrinsics_inv_mixcolumns
    - untrinsics_copy
    linkageType: ''
    returnType: __m128i
    signature: __m128i _mm_aesimc_si128(const __m128i a_)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: untrinsics_sub_word
      Src: /src/pdns/ext/ipcrypt2/softaes/untrinsics.h:337,1
    - Dst: untrinsics_sub_word
      Src: /src/pdns/ext/ipcrypt2/softaes/untrinsics.h:338,1
    - Dst: untrinsics_rot_word
      Src: /src/pdns/ext/ipcrypt2/softaes/untrinsics.h:341,1
    - Dst: untrinsics_rot_word
      Src: /src/pdns/ext/ipcrypt2/softaes/untrinsics.h:343,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - a
    - rcon
    argTypes:
    - __m128i
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 345
      start: 331
    functionDepth: 0
    functionLinenumber: 331
    functionLinenumberEnd: 345
    functionName: _mm_aeskeygenassist_si128
    functionSourceFile: /src/pdns/ext/ipcrypt2/softaes/untrinsics.h
    functionUses: 0
    functionsReached:
    - untrinsics_sub_word
    - untrinsics_rot_word
    linkageType: ''
    returnType: __m128i
    signature: __m128i _mm_aeskeygenassist_si128(const __m128i a, const uint8_t rcon)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 3
    argNames:
    - a
    - b
    - imm
    argTypes:
    - __m128i
    - __m128i
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 371
      start: 350
    functionDepth: 0
    functionLinenumber: 350
    functionLinenumberEnd: 371
    functionName: _mm_clmulepi64_si128
    functionSourceFile: /src/pdns/ext/ipcrypt2/softaes/untrinsics.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: __m128i
    signature: __m128i _mm_clmulepi64_si128(const __m128i a, const __m128i b, const
      int imm)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/pdns/ext/ipcrypt2/softaes/untrinsics.h:378,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - p
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 380
      start: 374
    functionDepth: 0
    functionLinenumber: 374
    functionLinenumberEnd: 380
    functionName: _mm_loadu_si128
    functionSourceFile: /src/pdns/ext/ipcrypt2/softaes/untrinsics.h
    functionUses: 0
    functionsReached:
    - memcpy
    linkageType: ''
    returnType: __m128i
    signature: __m128i _mm_loadu_si128(const void* const p)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/pdns/ext/ipcrypt2/softaes/untrinsics.h:386,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - p
    - a
    argTypes:
    - void*
    - __m128i
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 387
      start: 383
    functionDepth: 0
    functionLinenumber: 383
    functionLinenumberEnd: 387
    functionName: _mm_storeu_si128
    functionSourceFile: /src/pdns/ext/ipcrypt2/softaes/untrinsics.h
    functionUses: 0
    functionsReached:
    - memcpy
    linkageType: ''
    returnType: void
    signature: void _mm_storeu_si128(void* const p, const __m128i a)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - __m128i
    - __m128i
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 397
      start: 390
    functionDepth: 0
    functionLinenumber: 390
    functionLinenumberEnd: 397
    functionName: _mm_xor_si128
    functionSourceFile: /src/pdns/ext/ipcrypt2/softaes/untrinsics.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: __m128i
    signature: __m128i _mm_xor_si128(const __m128i a, const __m128i b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - __m128i
    - __m128i
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 407
      start: 400
    functionDepth: 0
    functionLinenumber: 400
    functionLinenumberEnd: 407
    functionName: _mm_or_si128
    functionSourceFile: /src/pdns/ext/ipcrypt2/softaes/untrinsics.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: __m128i
    signature: __m128i _mm_or_si128(const __m128i a, const __m128i b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - __m128i
    - __m128i
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 417
      start: 410
    functionDepth: 0
    functionLinenumber: 410
    functionLinenumberEnd: 417
    functionName: _mm_and_si128
    functionSourceFile: /src/pdns/ext/ipcrypt2/softaes/untrinsics.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: __m128i
    signature: __m128i _mm_and_si128(const __m128i a, const __m128i b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - high
    - low
    argTypes:
    - long long
    - long long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 427
      start: 420
    functionDepth: 0
    functionLinenumber: 420
    functionLinenumberEnd: 427
    functionName: _mm_set_epi64x
    functionSourceFile: /src/pdns/ext/ipcrypt2/softaes/untrinsics.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: __m128i
    signature: __m128i _mm_set_epi64x(const long long high, const long long low)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/pdns/ext/ipcrypt2/softaes/untrinsics.h:437,1
    - Dst: memset
      Src: /src/pdns/ext/ipcrypt2/softaes/untrinsics.h:440,1
    - Dst: memcpy
      Src: /src/pdns/ext/ipcrypt2/softaes/untrinsics.h:441,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - a
    - imm
    argTypes:
    - __m128i
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 443
      start: 430
    functionDepth: 0
    functionLinenumber: 430
    functionLinenumberEnd: 443
    functionName: _mm_slli_si128
    functionSourceFile: /src/pdns/ext/ipcrypt2/softaes/untrinsics.h
    functionUses: 0
    functionsReached:
    - memset
    - memcpy
    linkageType: ''
    returnType: __m128i
    signature: __m128i _mm_slli_si128(const __m128i a, const int imm)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/pdns/ext/ipcrypt2/softaes/untrinsics.h:453,1
    - Dst: memcpy
      Src: /src/pdns/ext/ipcrypt2/softaes/untrinsics.h:456,1
    - Dst: memset
      Src: /src/pdns/ext/ipcrypt2/softaes/untrinsics.h:457,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - a
    - imm
    argTypes:
    - __m128i
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 459
      start: 446
    functionDepth: 0
    functionLinenumber: 446
    functionLinenumberEnd: 459
    functionName: _mm_srli_si128
    functionSourceFile: /src/pdns/ext/ipcrypt2/softaes/untrinsics.h
    functionUses: 2
    functionsReached:
    - memset
    - memcpy
    linkageType: ''
    returnType: __m128i
    signature: __m128i _mm_srli_si128(const __m128i a, const int imm)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - z
    - ','
    - y
    - ','
    - x
    - ','
    - w
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 463
      start: 462
    functionDepth: 0
    functionLinenumber: 462
    functionLinenumberEnd: 463
    functionName: _MM_SHUFFLE
    functionSourceFile: /src/pdns/ext/ipcrypt2/softaes/untrinsics.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: _MM_SHUFFLE(z, y, x, w)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - a
    - imm
    argTypes:
    - __m128i
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 479
      start: 466
    functionDepth: 0
    functionLinenumber: 466
    functionLinenumberEnd: 479
    functionName: _mm_shuffle_epi32
    functionSourceFile: /src/pdns/ext/ipcrypt2/softaes/untrinsics.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: __m128i
    signature: __m128i _mm_shuffle_epi32(const __m128i a, const int imm)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - __m128i
    - __m128i
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 492
      start: 482
    functionDepth: 0
    functionLinenumber: 482
    functionLinenumberEnd: 492
    functionName: _mm_shuffle_epi8
    functionSourceFile: /src/pdns/ext/ipcrypt2/softaes/untrinsics.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: __m128i
    signature: __m128i _mm_shuffle_epi8(const __m128i a, const __m128i b)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/pdns/ext/ipcrypt2/softaes/untrinsics.h:500,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - mem_addr
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 504
      start: 495
    functionDepth: 0
    functionLinenumber: 495
    functionLinenumberEnd: 504
    functionName: _mm_loadu_si64
    functionSourceFile: /src/pdns/ext/ipcrypt2/softaes/untrinsics.h
    functionUses: 0
    functionsReached:
    - memcpy
    linkageType: ''
    returnType: __m128i
    signature: __m128i _mm_loadu_si64(const void* const mem_addr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 18
    argCount: 16
    argNames:
    - b0
    - b1
    - b2
    - b3
    - b4
    - b5
    - b6
    - b7
    - b8
    - b9
    - b10
    - b11
    - b12
    - b13
    - b14
    - b15
    argTypes:
    - int8_t
    - int8_t
    - int8_t
    - int8_t
    - int8_t
    - int8_t
    - int8_t
    - int8_t
    - int8_t
    - int8_t
    - int8_t
    - int8_t
    - int8_t
    - int8_t
    - int8_t
    - int8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 531
      start: 507
    functionDepth: 0
    functionLinenumber: 507
    functionLinenumberEnd: 531
    functionName: _mm_setr_epi8
    functionSourceFile: /src/pdns/ext/ipcrypt2/softaes/untrinsics.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: __m128i
    signature: "__m128i _mm_setr_epi8(const int8_t b0, const int8_t b1, const int8_t
      b2, const int8_t b3, const int8_t b4,\n              const int8_t b5, const
      int8_t b6, const int8_t b7, const int8_t b8, const int8_t b9,\n              const
      int8_t b10, const int8_t b11, const int8_t b12, const int8_t b13,\n              const
      int8_t b14, const int8_t b15)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 4
    argNames:
    - e0
    - e1
    - e2
    - e3
    argTypes:
    - int
    - int
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 543
      start: 534
    functionDepth: 0
    functionLinenumber: 534
    functionLinenumberEnd: 543
    functionName: _mm_setr_epi32
    functionSourceFile: /src/pdns/ext/ipcrypt2/softaes/untrinsics.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: __m128i
    signature: __m128i _mm_setr_epi32(const int e0, const int e1, const int e2, const
      int e3)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - v
    - imm8
    argTypes:
    - __m128i
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 555
      start: 546
    functionDepth: 0
    functionLinenumber: 546
    functionLinenumberEnd: 555
    functionName: _mm_srli_epi32
    functionSourceFile: /src/pdns/ext/ipcrypt2/softaes/untrinsics.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: __m128i
    signature: __m128i _mm_srli_epi32(const __m128i v, const int imm8)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - v
    - imm8
    argTypes:
    - __m128i
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 567
      start: 558
    functionDepth: 0
    functionLinenumber: 558
    functionLinenumberEnd: 567
    functionName: _mm_slli_epi32
    functionSourceFile: /src/pdns/ext/ipcrypt2/softaes/untrinsics.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: __m128i
    signature: __m128i _mm_slli_epi32(const __m128i v, const int imm8)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - v
    - imm8
    argTypes:
    - __m128i
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 581
      start: 570
    functionDepth: 0
    functionLinenumber: 570
    functionLinenumberEnd: 581
    functionName: _mm_srli_epi16
    functionSourceFile: /src/pdns/ext/ipcrypt2/softaes/untrinsics.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: __m128i
    signature: __m128i _mm_srli_epi16(const __m128i v, const int imm8)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - v
    - imm8
    argTypes:
    - __m128i
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 595
      start: 584
    functionDepth: 0
    functionLinenumber: 584
    functionLinenumberEnd: 595
    functionName: _mm_slli_epi16
    functionSourceFile: /src/pdns/ext/ipcrypt2/softaes/untrinsics.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: __m128i
    signature: __m128i _mm_slli_epi16(const __m128i v, const int imm8)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - v
    - imm8
    argTypes:
    - __m128i
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 605
      start: 598
    functionDepth: 0
    functionLinenumber: 598
    functionLinenumberEnd: 605
    functionName: _mm_srli_epi64
    functionSourceFile: /src/pdns/ext/ipcrypt2/softaes/untrinsics.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: __m128i
    signature: __m128i _mm_srli_epi64(const __m128i v, const int imm8)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - v
    - imm8
    argTypes:
    - __m128i
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 615
      start: 608
    functionDepth: 0
    functionLinenumber: 608
    functionLinenumberEnd: 615
    functionName: _mm_slli_epi64
    functionSourceFile: /src/pdns/ext/ipcrypt2/softaes/untrinsics.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: __m128i
    signature: __m128i _mm_slli_epi64(const __m128i v, const int imm8)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/pdns/ext/ipcrypt2/softaes/untrinsics.h:622,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 624
      start: 618
    functionDepth: 0
    functionLinenumber: 618
    functionLinenumberEnd: 624
    functionName: _mm_setzero_si128
    functionSourceFile: /src/pdns/ext/ipcrypt2/softaes/untrinsics.h
    functionUses: 0
    functionsReached:
    - memset
    linkageType: ''
    returnType: __m128i
    signature: __m128i _mm_setzero_si128(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - a
    argTypes:
    - int8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 634
      start: 627
    functionDepth: 0
    functionLinenumber: 627
    functionLinenumberEnd: 634
    functionName: _mm_set1_epi8
    functionSourceFile: /src/pdns/ext/ipcrypt2/softaes/untrinsics.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: __m128i
    signature: __m128i _mm_set1_epi8(const int8_t a)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - __m128i
    - __m128i
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 644
      start: 637
    functionDepth: 0
    functionLinenumber: 637
    functionLinenumberEnd: 644
    functionName: _mm_add_epi8
    functionSourceFile: /src/pdns/ext/ipcrypt2/softaes/untrinsics.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: __m128i
    signature: __m128i _mm_add_epi8(const __m128i a, const __m128i b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - __m128i
    - __m128i
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 654
      start: 647
    functionDepth: 0
    functionLinenumber: 647
    functionLinenumberEnd: 654
    functionName: _mm_sub_epi8
    functionSourceFile: /src/pdns/ext/ipcrypt2/softaes/untrinsics.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: __m128i
    signature: __m128i _mm_sub_epi8(const __m128i a, const __m128i b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - __m128i
    - __m128i
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 664
      start: 657
    functionDepth: 0
    functionLinenumber: 657
    functionLinenumberEnd: 664
    functionName: _mm_add_epi64
    functionSourceFile: /src/pdns/ext/ipcrypt2/softaes/untrinsics.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: __m128i
    signature: __m128i _mm_add_epi64(const __m128i a, const __m128i b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - __m128i
    - __m128i
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 674
      start: 667
    functionDepth: 0
    functionLinenumber: 667
    functionLinenumberEnd: 674
    functionName: _mm_sub_epi64
    functionSourceFile: /src/pdns/ext/ipcrypt2/softaes/untrinsics.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: __m128i
    signature: __m128i _mm_sub_epi64(const __m128i a, const __m128i b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - __m128i
    - __m128i
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 688
      start: 677
    functionDepth: 0
    functionLinenumber: 677
    functionLinenumberEnd: 688
    functionName: _mm_cmpeq_epi8
    functionSourceFile: /src/pdns/ext/ipcrypt2/softaes/untrinsics.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: __m128i
    signature: __m128i _mm_cmpeq_epi8(const __m128i a, const __m128i b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - M
    - ','
    - V
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 692
      start: 691
    functionDepth: 0
    functionLinenumber: 691
    functionLinenumberEnd: 692
    functionName: _mm_test_all_zeros
    functionSourceFile: /src/pdns/ext/ipcrypt2/softaes/untrinsics.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: _mm_test_all_zeros(M, V)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - __m128i
    - __m128i
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 700
      start: 694
    functionDepth: 0
    functionLinenumber: 694
    functionLinenumberEnd: 700
    functionName: _mm_testz_si128
    functionSourceFile: /src/pdns/ext/ipcrypt2/softaes/untrinsics.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int _mm_testz_si128(const __m128i a, const __m128i b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - a
    argTypes:
    - __m128i
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 709
      start: 703
    functionDepth: 0
    functionLinenumber: 703
    functionLinenumberEnd: 709
    functionName: _mm_test_all_ones
    functionSourceFile: /src/pdns/ext/ipcrypt2/softaes/untrinsics.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int _mm_test_all_ones(const __m128i a)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 47
    functionDepth: 0
    functionLinenumber: 47
    functionLinenumberEnd: 47
    functionName: operator==(NullStruct /*unused*/) const
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool operator==(NullStruct /*unused*/) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 48
    functionDepth: 0
    functionLinenumber: 48
    functionLinenumberEnd: 48
    functionName: operator<(NullStruct /*unused*/) const
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool operator<(NullStruct /*unused*/) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - out
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 55
    functionDepth: 0
    functionLinenumber: 55
    functionLinenumberEnd: 57
    functionName: json11::dump
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 12
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void dump(NullStruct /*unused*/, string &out)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::isfinite
      Src: /src/pdns/ext/json11/json11.cpp:60,1
    - Dst: snprintf
      Src: /src/pdns/ext/json11/json11.cpp:62,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - value
    - out
    argTypes:
    - double
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 59
    functionDepth: 0
    functionLinenumber: 59
    functionLinenumberEnd: 67
    functionName: json11::dump
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 12
    functionsReached:
    - std::isfinite
    - snprintf
    linkageType: ''
    returnType: void
    signature: void dump(double value, string &out)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/pdns/ext/json11/json11.cpp:71,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - value
    - out
    argTypes:
    - int
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 69
    functionDepth: 0
    functionLinenumber: 69
    functionLinenumberEnd: 73
    functionName: json11::dump
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 12
    functionsReached:
    - snprintf
    linkageType: ''
    returnType: void
    signature: void dump(int value, string &out)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - value
    - out
    argTypes:
    - bool
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 75
    functionDepth: 0
    functionLinenumber: 75
    functionLinenumberEnd: 77
    functionName: json11::dump
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 12
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void dump(bool value, string &out)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: string::length
      Src: /src/pdns/ext/json11/json11.cpp:81,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/ext/json11/json11.cpp:97,1
    - Dst: snprintf
      Src: /src/pdns/ext/json11/json11.cpp:99,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/ext/json11/json11.cpp:101,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/ext/json11/json11.cpp:101,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/ext/json11/json11.cpp:102,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/ext/json11/json11.cpp:105,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/ext/json11/json11.cpp:105,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/ext/json11/json11.cpp:106,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 40
    argCount: 2
    argNames:
    - value
    - out
    argTypes:
    - string
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 79
    functionDepth: 0
    functionLinenumber: 79
    functionLinenumberEnd: 114
    functionName: json11::dump
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 12
    functionsReached:
    - string::length
    - snprintf
    - static_cast<uint8_t>
    linkageType: ''
    returnType: void
    signature: void dump(const string &value, string &out)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: json11::dump
      Src: /src/pdns/ext/json11/json11.cpp:122,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - values
    - out
    argTypes:
    - Json::array
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 116
    functionDepth: 0
    functionLinenumber: 116
    functionLinenumberEnd: 126
    functionName: json11::dump
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 13
    functionsReached:
    - json11::dump
    linkageType: ''
    returnType: void
    signature: void dump(const Json::array &values, string &out)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: json11::dump
      Src: /src/pdns/ext/json11/json11.cpp:134,1
    - Dst: second::dump
      Src: /src/pdns/ext/json11/json11.cpp:136,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - values
    - out
    argTypes:
    - Json::object
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 128
    functionDepth: 0
    functionLinenumber: 128
    functionLinenumberEnd: 140
    functionName: json11::dump
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 14
    functionsReached:
    - json11::dump
    - second::dump
    linkageType: ''
    returnType: void
    signature: void dump(const Json::object &values, string &out)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json11::Json::dump
      Src: /src/pdns/ext/json11/json11.cpp:143,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - out
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 144
      start: 142
    functionDepth: 0
    functionLinenumber: 142
    functionLinenumberEnd: 144
    functionName: json11::Json::dump
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 17
    functionsReached:
    - json11::Json::dump
    linkageType: ''
    returnType: void
    signature: void Json::dump(string &out) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - value
    argTypes:
    - T
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 155
    functionDepth: 0
    functionLinenumber: 155
    functionLinenumberEnd: 155
    functionName: json11::Value::Value
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Value(const T &value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/ext/json11/json11.cpp:156,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 1
    argNames:
    - value
    argTypes:
    - T
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 156
      start: 156
    functionDepth: 0
    functionLinenumber: 156
    functionLinenumberEnd: 156
    functionName: json11::Value::Value
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void Value(T &&value)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 161
      start: 159
    functionDepth: 0
    functionLinenumber: 159
    functionLinenumberEnd: 161
    functionName: json11::Value::type
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Json::Type
    signature: Json::Type type() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<const Value<tag, T> *>
      Src: /src/pdns/ext/json11/json11.cpp:165,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - other
    argTypes:
    - JsonValue*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 166
      start: 164
    functionDepth: 0
    functionLinenumber: 164
    functionLinenumberEnd: 166
    functionName: json11::Value::equals
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - static_cast<const Value<tag, T> *>
    linkageType: ''
    returnType: bool
    signature: bool equals(const JsonValue * other) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<const Value<tag, T> *>
      Src: /src/pdns/ext/json11/json11.cpp:168,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - other
    argTypes:
    - JsonValue*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 169
      start: 167
    functionDepth: 0
    functionLinenumber: 167
    functionLinenumberEnd: 169
    functionName: json11::Value::less
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - static_cast<const Value<tag, T> *>
    linkageType: ''
    returnType: bool
    signature: bool less(const JsonValue * other) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json11::dump
      Src: /src/pdns/ext/json11/json11.cpp:172,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - out
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 172
      start: 172
    functionDepth: 0
    functionLinenumber: 172
    functionLinenumberEnd: 172
    functionName: json11::Value::dump
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - json11::dump
    linkageType: ''
    returnType: void
    signature: void dump(string &out) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 176
      start: 176
    functionDepth: 0
    functionLinenumber: 176
    functionLinenumberEnd: 176
    functionName: json11::JsonDouble::number_value
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: double
    signature: double number_value() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<int>
      Src: /src/pdns/ext/json11/json11.cpp:177,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 177
      start: 177
    functionDepth: 0
    functionLinenumber: 177
    functionLinenumberEnd: 177
    functionName: json11::JsonDouble::int_value
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - static_cast<int>
    linkageType: ''
    returnType: int
    signature: int int_value() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: JsonValue*::number_value
      Src: /src/pdns/ext/json11/json11.cpp:178,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - other
    argTypes:
    - JsonValue*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 178
      start: 178
    functionDepth: 0
    functionLinenumber: 178
    functionLinenumberEnd: 178
    functionName: json11::JsonDouble::equals
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - JsonValue*::number_value
    linkageType: ''
    returnType: bool
    signature: bool equals(const JsonValue * other) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: JsonValue*::number_value
      Src: /src/pdns/ext/json11/json11.cpp:179,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - other
    argTypes:
    - JsonValue*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 179
      start: 179
    functionDepth: 0
    functionLinenumber: 179
    functionLinenumberEnd: 179
    functionName: json11::JsonDouble::less
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - JsonValue*::number_value
    linkageType: ''
    returnType: bool
    signature: bool less(const JsonValue * other)   const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - value
    argTypes:
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 181
      start: 181
    functionDepth: 0
    functionLinenumber: 181
    functionLinenumberEnd: 181
    functionName: json11::JsonDouble::JsonDouble
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void JsonDouble(double value)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 185
      start: 185
    functionDepth: 0
    functionLinenumber: 185
    functionLinenumberEnd: 185
    functionName: json11::JsonInt::number_value
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: double
    signature: double number_value() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 186
      start: 186
    functionDepth: 0
    functionLinenumber: 186
    functionLinenumberEnd: 186
    functionName: json11::JsonInt::int_value
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int int_value() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: JsonValue*::number_value
      Src: /src/pdns/ext/json11/json11.cpp:187,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - other
    argTypes:
    - JsonValue*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 187
      start: 187
    functionDepth: 0
    functionLinenumber: 187
    functionLinenumberEnd: 187
    functionName: json11::JsonInt::equals
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - JsonValue*::number_value
    linkageType: ''
    returnType: bool
    signature: bool equals(const JsonValue * other) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: JsonValue*::number_value
      Src: /src/pdns/ext/json11/json11.cpp:188,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - other
    argTypes:
    - JsonValue*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 188
      start: 188
    functionDepth: 0
    functionLinenumber: 188
    functionLinenumberEnd: 188
    functionName: json11::JsonInt::less
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - JsonValue*::number_value
    linkageType: ''
    returnType: bool
    signature: bool less(const JsonValue * other)   const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - value
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 190
      start: 190
    functionDepth: 0
    functionLinenumber: 190
    functionLinenumberEnd: 190
    functionName: json11::JsonInt::JsonInt
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void JsonInt(int value)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 194
      start: 194
    functionDepth: 0
    functionLinenumber: 194
    functionLinenumberEnd: 194
    functionName: json11::JsonBoolean::bool_value
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool bool_value() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - value
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 196
      start: 196
    functionDepth: 0
    functionLinenumber: 196
    functionLinenumberEnd: 196
    functionName: json11::JsonBoolean::JsonBoolean
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void JsonBoolean(bool value)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 200
      start: 200
    functionDepth: 0
    functionLinenumber: 200
    functionLinenumberEnd: 200
    functionName: '&string_value() const override'
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: string
    signature: string &string_value() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - value
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 202
      start: 202
    functionDepth: 0
    functionLinenumber: 202
    functionLinenumberEnd: 202
    functionName: json11::JsonString::JsonString
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void JsonString(const string &value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/ext/json11/json11.cpp:203,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 1
    argNames:
    - value
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 203
      start: 203
    functionDepth: 0
    functionLinenumber: 203
    functionLinenumberEnd: 203
    functionName: json11::JsonString::JsonString
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void JsonString(string &&value)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 207
      start: 207
    functionDepth: 0
    functionLinenumber: 207
    functionLinenumberEnd: 207
    functionName: '&array_items() const override'
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Json::array
    signature: Json::array &array_items() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - value
    argTypes:
    - Json::array
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 210
      start: 210
    functionDepth: 0
    functionLinenumber: 210
    functionLinenumberEnd: 210
    functionName: json11::JsonArray::JsonArray
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void JsonArray(const Json::array &value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/ext/json11/json11.cpp:211,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 1
    argNames:
    - value
    argTypes:
    - Json::array
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 211
      start: 211
    functionDepth: 0
    functionLinenumber: 211
    functionLinenumberEnd: 211
    functionName: json11::JsonArray::JsonArray
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void JsonArray(Json::array &&value)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 215
      start: 215
    functionDepth: 0
    functionLinenumber: 215
    functionLinenumberEnd: 215
    functionName: '&object_items() const override'
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Json::object
    signature: Json::object &object_items() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - value
    argTypes:
    - Json::object
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 218
      start: 218
    functionDepth: 0
    functionLinenumber: 218
    functionLinenumberEnd: 218
    functionName: json11::JsonObject::JsonObject
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void JsonObject(const Json::object &value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/ext/json11/json11.cpp:219,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 1
    argNames:
    - value
    argTypes:
    - Json::object
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 219
      start: 219
    functionDepth: 0
    functionLinenumber: 219
    functionLinenumberEnd: 219
    functionName: json11::JsonObject::JsonObject
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void JsonObject(Json::object &&value)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 224
      start: 224
    functionDepth: 0
    functionLinenumber: 224
    functionLinenumberEnd: 224
    functionName: json11::JsonNull::JsonNull
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void JsonNull()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 237
      start: 237
    functionDepth: 0
    functionLinenumber: 237
    functionLinenumberEnd: 237
    functionName: json11::Statics
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Statics()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 243
      start: 240
    functionDepth: 0
    functionLinenumber: 240
    functionLinenumberEnd: 243
    functionName: json11::statics
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Statics
    signature: Statics & statics()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 249
      start: 245
    functionDepth: 0
    functionLinenumber: 245
    functionLinenumberEnd: 249
    functionName: json11::static_null
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Json
    signature: Json & static_null()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: statics
      Src: /src/pdns/ext/json11/json11.cpp:255,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 255
      start: 255
    functionDepth: 0
    functionLinenumber: 255
    functionLinenumberEnd: 255
    functionName: json11::Json::Json
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - statics
    linkageType: ''
    returnType: void
    signature: void Json::Json() noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: statics
      Src: /src/pdns/ext/json11/json11.cpp:256,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 256
      start: 256
    functionDepth: 0
    functionLinenumber: 256
    functionLinenumberEnd: 256
    functionName: json11::Json::Json
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - statics
    linkageType: ''
    returnType: void
    signature: void Json::Json(std::nullptr_t) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: make_shared<JsonDouble>
      Src: /src/pdns/ext/json11/json11.cpp:257,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - value
    argTypes:
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 257
      start: 257
    functionDepth: 0
    functionLinenumber: 257
    functionLinenumberEnd: 257
    functionName: json11::Json::Json
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - make_shared<JsonDouble>
    linkageType: ''
    returnType: void
    signature: void Json::Json(double value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: make_shared<JsonInt>
      Src: /src/pdns/ext/json11/json11.cpp:258,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - value
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 258
      start: 258
    functionDepth: 0
    functionLinenumber: 258
    functionLinenumberEnd: 258
    functionName: json11::Json::Json
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - make_shared<JsonInt>
    linkageType: ''
    returnType: void
    signature: void Json::Json(int value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: statics
      Src: /src/pdns/ext/json11/json11.cpp:259,1
    - Dst: statics
      Src: /src/pdns/ext/json11/json11.cpp:259,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - value
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 259
      start: 259
    functionDepth: 0
    functionLinenumber: 259
    functionLinenumberEnd: 259
    functionName: json11::Json::Json
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - statics
    linkageType: ''
    returnType: void
    signature: void Json::Json(bool value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: make_shared<JsonString>
      Src: /src/pdns/ext/json11/json11.cpp:260,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - value
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 260
      start: 260
    functionDepth: 0
    functionLinenumber: 260
    functionLinenumberEnd: 260
    functionName: json11::Json::Json
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - make_shared<JsonString>
    linkageType: ''
    returnType: void
    signature: void Json::Json(const string &value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: make_shared<JsonString>
      Src: /src/pdns/ext/json11/json11.cpp:261,1
    - Dst: std::move
      Src: /src/pdns/ext/json11/json11.cpp:261,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 1
    argNames:
    - value
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 261
      start: 261
    functionDepth: 0
    functionLinenumber: 261
    functionLinenumberEnd: 261
    functionName: json11::Json::Json
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - std::move
    - make_shared<JsonString>
    linkageType: ''
    returnType: void
    signature: void Json::Json(string &&value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: make_shared<JsonString>
      Src: /src/pdns/ext/json11/json11.cpp:262,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - value
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 262
      start: 262
    functionDepth: 0
    functionLinenumber: 262
    functionLinenumberEnd: 262
    functionName: json11::Json::Json
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - make_shared<JsonString>
    linkageType: ''
    returnType: void
    signature: void Json::Json(const char * value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: make_shared<JsonArray>
      Src: /src/pdns/ext/json11/json11.cpp:263,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - values
    argTypes:
    - Json::array
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 263
      start: 263
    functionDepth: 0
    functionLinenumber: 263
    functionLinenumberEnd: 263
    functionName: json11::Json::Json
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - make_shared<JsonArray>
    linkageType: ''
    returnType: void
    signature: void Json::Json(const Json::array &values)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: make_shared<JsonArray>
      Src: /src/pdns/ext/json11/json11.cpp:264,1
    - Dst: std::move
      Src: /src/pdns/ext/json11/json11.cpp:264,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 1
    argNames:
    - values
    argTypes:
    - Json::array
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 264
      start: 264
    functionDepth: 0
    functionLinenumber: 264
    functionLinenumberEnd: 264
    functionName: json11::Json::Json
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - std::move
    - make_shared<JsonArray>
    linkageType: ''
    returnType: void
    signature: void Json::Json(Json::array &&values)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: make_shared<JsonObject>
      Src: /src/pdns/ext/json11/json11.cpp:265,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - values
    argTypes:
    - Json::object
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 265
      start: 265
    functionDepth: 0
    functionLinenumber: 265
    functionLinenumberEnd: 265
    functionName: json11::Json::Json
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - make_shared<JsonObject>
    linkageType: ''
    returnType: void
    signature: void Json::Json(const Json::object &values)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: make_shared<JsonObject>
      Src: /src/pdns/ext/json11/json11.cpp:266,1
    - Dst: std::move
      Src: /src/pdns/ext/json11/json11.cpp:266,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 1
    argNames:
    - values
    argTypes:
    - Json::object
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 266
      start: 266
    functionDepth: 0
    functionLinenumber: 266
    functionLinenumberEnd: 266
    functionName: json11::Json::Json
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - make_shared<JsonObject>
    - std::move
    linkageType: ''
    returnType: void
    signature: void Json::Json(Json::object &&values)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json11::Json::type
      Src: /src/pdns/ext/json11/json11.cpp:272,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 272
      start: 272
    functionDepth: 0
    functionLinenumber: 272
    functionLinenumberEnd: 272
    functionName: json11::Json::type
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 29
    functionsReached:
    - json11::Json::type
    linkageType: ''
    returnType: Json::Type
    signature: Json::Type Json::type()                           const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json11::Json::number_value
      Src: /src/pdns/ext/json11/json11.cpp:273,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 273
      start: 273
    functionDepth: 0
    functionLinenumber: 273
    functionLinenumberEnd: 273
    functionName: json11::Json::number_value
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 5
    functionsReached:
    - json11::Json::number_value
    linkageType: ''
    returnType: double
    signature: double Json::number_value()                       const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json11::Json::int_value
      Src: /src/pdns/ext/json11/json11.cpp:274,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 274
      start: 274
    functionDepth: 0
    functionLinenumber: 274
    functionLinenumberEnd: 274
    functionName: json11::Json::int_value
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 5
    functionsReached:
    - json11::Json::int_value
    linkageType: ''
    returnType: int
    signature: int Json::int_value()                             const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json11::Json::bool_value
      Src: /src/pdns/ext/json11/json11.cpp:275,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 275
      start: 275
    functionDepth: 0
    functionLinenumber: 275
    functionLinenumberEnd: 275
    functionName: json11::Json::bool_value
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 5
    functionsReached:
    - json11::Json::bool_value
    linkageType: ''
    returnType: bool
    signature: bool Json::bool_value()                           const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: string_value
      Src: /src/pdns/ext/json11/json11.cpp:276,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 276
      start: 276
    functionDepth: 0
    functionLinenumber: 276
    functionLinenumberEnd: 276
    functionName: '& Json::string_value()               const'
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - string_value
    linkageType: ''
    returnType: string
    signature: string & Json::string_value()               const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_items
      Src: /src/pdns/ext/json11/json11.cpp:277,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 277
      start: 277
    functionDepth: 0
    functionLinenumber: 277
    functionLinenumberEnd: 277
    functionName: '& Json::array_items()          const'
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - array_items
    linkageType: ''
    returnType: vector<Json>
    signature: vector<Json> & Json::array_items()          const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: object_items
      Src: /src/pdns/ext/json11/json11.cpp:278,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 278
      start: 278
    functionDepth: 0
    functionLinenumber: 278
    functionLinenumberEnd: 278
    functionName: '& Json::object_items()    const'
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - object_items
    linkageType: ''
    returnType: map<string, Json>
    signature: map<string, Json> & Json::object_items()    const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - i
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 279
      start: 279
    functionDepth: 0
    functionLinenumber: 279
    functionLinenumberEnd: 279
    functionName: '& Json::operator[] (size_t i)          const'
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Json
    signature: Json & Json::operator[] (size_t i)          const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - key
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 280
      start: 280
    functionDepth: 0
    functionLinenumber: 280
    functionLinenumberEnd: 280
    functionName: '& Json::operator[] (const string &key) const'
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Json
    signature: Json & Json::operator[] (const string &key) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 282
      start: 282
    functionDepth: 0
    functionLinenumber: 282
    functionLinenumberEnd: 282
    functionName: json11::JsonValue::number_value
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: double
    signature: double JsonValue::number_value()              const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 283
      start: 283
    functionDepth: 0
    functionLinenumber: 283
    functionLinenumberEnd: 283
    functionName: json11::JsonValue::int_value
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int JsonValue::int_value()                 const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 284
      start: 284
    functionDepth: 0
    functionLinenumber: 284
    functionLinenumberEnd: 284
    functionName: json11::JsonValue::bool_value
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool JsonValue::bool_value()                const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: statics
      Src: /src/pdns/ext/json11/json11.cpp:285,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 285
      start: 285
    functionDepth: 0
    functionLinenumber: 285
    functionLinenumberEnd: 285
    functionName: '&            JsonValue::string_value()              const'
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - statics
    linkageType: ''
    returnType: string
    signature: string &            JsonValue::string_value()              const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: statics
      Src: /src/pdns/ext/json11/json11.cpp:286,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 286
      start: 286
    functionDepth: 0
    functionLinenumber: 286
    functionLinenumberEnd: 286
    functionName: '&      JsonValue::array_items()               const'
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - statics
    linkageType: ''
    returnType: vector<Json>
    signature: vector<Json> &      JsonValue::array_items()               const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: statics
      Src: /src/pdns/ext/json11/json11.cpp:287,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 287
      start: 287
    functionDepth: 0
    functionLinenumber: 287
    functionLinenumberEnd: 287
    functionName: '& JsonValue::object_items()              const'
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - statics
    linkageType: ''
    returnType: map<string, Json>
    signature: map<string, Json> & JsonValue::object_items()              const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_null
      Src: /src/pdns/ext/json11/json11.cpp:288,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 288
      start: 288
    functionDepth: 0
    functionLinenumber: 288
    functionLinenumberEnd: 288
    functionName: '&              JsonValue::operator[] (size_t)         const'
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - static_null
    linkageType: ''
    returnType: Json
    signature: Json &              JsonValue::operator[] (size_t)         const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_null
      Src: /src/pdns/ext/json11/json11.cpp:289,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 289
      start: 289
    functionDepth: 0
    functionLinenumber: 289
    functionLinenumberEnd: 289
    functionName: '&              JsonValue::operator[] (const string &) const'
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - static_null
    linkageType: ''
    returnType: Json
    signature: Json &              JsonValue::operator[] (const string &) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: find
      Src: /src/pdns/ext/json11/json11.cpp:292,1
    - Dst: end
      Src: /src/pdns/ext/json11/json11.cpp:293,1
    - Dst: static_null
      Src: /src/pdns/ext/json11/json11.cpp:293,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - key
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 294
      start: 291
    functionDepth: 0
    functionLinenumber: 291
    functionLinenumberEnd: 294
    functionName: '& JsonObject::operator[] (const string &key) const'
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - static_null
    - end
    - find
    linkageType: ''
    returnType: Json
    signature: Json & JsonObject::operator[] (const string &key) const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/ext/json11/json11.cpp:296,1
    - Dst: static_null
      Src: /src/pdns/ext/json11/json11.cpp:296,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - i
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 298
      start: 295
    functionDepth: 0
    functionLinenumber: 295
    functionLinenumberEnd: 298
    functionName: '& JsonArray::operator[] (size_t i) const'
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - static_null
    - size
    linkageType: ''
    returnType: Json
    signature: Json & JsonArray::operator[] (size_t i) const
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: type
      Src: /src/pdns/ext/json11/json11.cpp:308,1
    - Dst: Json::m_ptr::type
      Src: /src/pdns/ext/json11/json11.cpp:308,1
    - Dst: equals
      Src: /src/pdns/ext/json11/json11.cpp:312,1
    - Dst: Json::m_ptr::get
      Src: /src/pdns/ext/json11/json11.cpp:312,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - other
    argTypes:
    - Json
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 313
      start: 304
    functionDepth: 0
    functionLinenumber: 304
    functionLinenumberEnd: 313
    functionName: Json::operator== (const Json &other) const
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - Json::m_ptr::type
    - equals
    - Json::m_ptr::get
    - type
    linkageType: ''
    returnType: bool
    signature: bool Json::operator== (const Json &other) const
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: type
      Src: /src/pdns/ext/json11/json11.cpp:319,1
    - Dst: Json::m_ptr::type
      Src: /src/pdns/ext/json11/json11.cpp:319,1
    - Dst: type
      Src: /src/pdns/ext/json11/json11.cpp:320,1
    - Dst: Json::m_ptr::type
      Src: /src/pdns/ext/json11/json11.cpp:320,1
    - Dst: less
      Src: /src/pdns/ext/json11/json11.cpp:323,1
    - Dst: Json::m_ptr::get
      Src: /src/pdns/ext/json11/json11.cpp:323,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - other
    argTypes:
    - Json
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 324
      start: 315
    functionDepth: 0
    functionLinenumber: 315
    functionLinenumberEnd: 324
    functionName: Json::operator< (const Json &other) const
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - Json::m_ptr::type
    - less
    - Json::m_ptr::get
    - type
    linkageType: ''
    returnType: bool
    signature: bool Json::operator< (const Json &other) const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/ext/json11/json11.cpp:336,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/ext/json11/json11.cpp:336,1
    - Dst: snprintf
      Src: /src/pdns/ext/json11/json11.cpp:337,1
    - Dst: snprintf
      Src: /src/pdns/ext/json11/json11.cpp:339,1
    - Dst: string
      Src: /src/pdns/ext/json11/json11.cpp:341,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - c
    argTypes:
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 342
      start: 334
    functionDepth: 0
    functionLinenumber: 334
    functionLinenumberEnd: 342
    functionName: json11::esc
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 24
    functionsReached:
    - string
    - snprintf
    - static_cast<uint8_t>
    linkageType: ''
    returnType: string
    signature: string esc(char c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 3
    argNames:
    - x
    - lower
    - upper
    argTypes:
    - long
    - long
    - long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 346
      start: 344
    functionDepth: 0
    functionLinenumber: 344
    functionLinenumberEnd: 346
    functionName: json11::in_range
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 16
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool in_range(long x, long lower, long upper)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json11::fail
      Src: /src/pdns/ext/json11/json11.cpp:368,1
    - Dst: std::move
      Src: /src/pdns/ext/json11/json11.cpp:368,1
    - Dst: Json
      Src: /src/pdns/ext/json11/json11.cpp:368,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - msg
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 369
      start: 367
    functionDepth: 0
    functionLinenumber: 367
    functionLinenumberEnd: 369
    functionName: json11::fail
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 57
    functionsReached:
    - json11::fail
    - std::move
    - Json
    linkageType: ''
    returnType: Json
    signature: Json fail(string &&msg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/ext/json11/json11.cpp:374,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - msg
    - err_ret
    argTypes:
    - string
    - T
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 377
      start: 372
    functionDepth: 0
    functionLinenumber: 372
    functionLinenumberEnd: 377
    functionName: json11::fail
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 57
    functionsReached:
    - std::move
    linkageType: ''
    returnType: T
    signature: T fail(string &&msg, const T err_ret)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 386
      start: 383
    functionDepth: 0
    functionLinenumber: 383
    functionLinenumberEnd: 386
    functionName: json11::consume_whitespace
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 8
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void consume_whitespace()
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/ext/json11/json11.cpp:396,1
    - Dst: json11::fail
      Src: /src/pdns/ext/json11/json11.cpp:397,1
    - Dst: size
      Src: /src/pdns/ext/json11/json11.cpp:401,1
    - Dst: size
      Src: /src/pdns/ext/json11/json11.cpp:408,1
    - Dst: json11::fail
      Src: /src/pdns/ext/json11/json11.cpp:409,1
    - Dst: size
      Src: /src/pdns/ext/json11/json11.cpp:413,1
    - Dst: json11::fail
      Src: /src/pdns/ext/json11/json11.cpp:414,1
    - Dst: json11::fail
      Src: /src/pdns/ext/json11/json11.cpp:421,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 27
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 424
      start: 392
    functionDepth: 0
    functionLinenumber: 392
    functionLinenumberEnd: 424
    functionName: json11::consume_comment
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 8
    functionsReached:
    - json11::fail
    - size
    linkageType: ''
    returnType: bool
    signature: bool consume_comment()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: json11::consume_whitespace
      Src: /src/pdns/ext/json11/json11.cpp:431,1
    - Dst: json11::consume_comment
      Src: /src/pdns/ext/json11/json11.cpp:435,1
    - Dst: json11::consume_whitespace
      Src: /src/pdns/ext/json11/json11.cpp:439,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 443
      start: 430
    functionDepth: 0
    functionLinenumber: 430
    functionLinenumberEnd: 443
    functionName: json11::consume_garbage
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 8
    functionsReached:
    - json11::consume_comment
    - json11::consume_whitespace
    linkageType: ''
    returnType: void
    signature: void consume_garbage()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: json11::consume_garbage
      Src: /src/pdns/ext/json11/json11.cpp:451,1
    - Dst: size
      Src: /src/pdns/ext/json11/json11.cpp:455,1
    - Dst: json11::fail
      Src: /src/pdns/ext/json11/json11.cpp:456,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 460
      start: 450
    functionDepth: 0
    functionLinenumber: 450
    functionLinenumberEnd: 460
    functionName: json11::get_next_token
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 8
    functionsReached:
    - json11::fail
    - size
    - json11::consume_garbage
    linkageType: ''
    returnType: char
    signature: char get_next_token()
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<char>
      Src: /src/pdns/ext/json11/json11.cpp:471,1
    - Dst: static_cast<char>
      Src: /src/pdns/ext/json11/json11.cpp:473,1
    - Dst: static_cast<char>
      Src: /src/pdns/ext/json11/json11.cpp:474,1
    - Dst: static_cast<char>
      Src: /src/pdns/ext/json11/json11.cpp:476,1
    - Dst: static_cast<char>
      Src: /src/pdns/ext/json11/json11.cpp:477,1
    - Dst: static_cast<char>
      Src: /src/pdns/ext/json11/json11.cpp:478,1
    - Dst: static_cast<char>
      Src: /src/pdns/ext/json11/json11.cpp:480,1
    - Dst: static_cast<char>
      Src: /src/pdns/ext/json11/json11.cpp:481,1
    - Dst: static_cast<char>
      Src: /src/pdns/ext/json11/json11.cpp:482,1
    - Dst: static_cast<char>
      Src: /src/pdns/ext/json11/json11.cpp:483,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 2
    argNames:
    - pt
    - ' out'
    argTypes:
    - long
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 485
      start: 466
    functionDepth: 0
    functionLinenumber: 466
    functionLinenumberEnd: 485
    functionName: json11::encode_utf8
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 8
    functionsReached:
    - static_cast<char>
    linkageType: ''
    returnType: void
    signature: void encode_utf8(long pt, string & out)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/ext/json11/json11.cpp:495,1
    - Dst: json11::fail
      Src: /src/pdns/ext/json11/json11.cpp:496,1
    - Dst: json11::encode_utf8
      Src: /src/pdns/ext/json11/json11.cpp:501,1
    - Dst: json11::in_range
      Src: /src/pdns/ext/json11/json11.cpp:505,1
    - Dst: json11::fail
      Src: /src/pdns/ext/json11/json11.cpp:506,1
    - Dst: json11::esc
      Src: /src/pdns/ext/json11/json11.cpp:506,1
    - Dst: json11::encode_utf8
      Src: /src/pdns/ext/json11/json11.cpp:510,1
    - Dst: size
      Src: /src/pdns/ext/json11/json11.cpp:517,1
    - Dst: json11::fail
      Src: /src/pdns/ext/json11/json11.cpp:518,1
    - Dst: substr
      Src: /src/pdns/ext/json11/json11.cpp:524,1
    - Dst: string::length
      Src: /src/pdns/ext/json11/json11.cpp:528,1
    - Dst: json11::fail
      Src: /src/pdns/ext/json11/json11.cpp:529,1
    - Dst: json11::in_range
      Src: /src/pdns/ext/json11/json11.cpp:532,1
    - Dst: json11::in_range
      Src: /src/pdns/ext/json11/json11.cpp:532,1
    - Dst: json11::in_range
      Src: /src/pdns/ext/json11/json11.cpp:533,1
    - Dst: json11::fail
      Src: /src/pdns/ext/json11/json11.cpp:534,1
    - Dst: strtol
      Src: /src/pdns/ext/json11/json11.cpp:537,1
    - Dst: string::data
      Src: /src/pdns/ext/json11/json11.cpp:537,1
    - Dst: json11::in_range
      Src: /src/pdns/ext/json11/json11.cpp:543,1
    - Dst: json11::in_range
      Src: /src/pdns/ext/json11/json11.cpp:544,1
    - Dst: json11::encode_utf8
      Src: /src/pdns/ext/json11/json11.cpp:547,1
    - Dst: json11::encode_utf8
      Src: /src/pdns/ext/json11/json11.cpp:551,1
    - Dst: json11::encode_utf8
      Src: /src/pdns/ext/json11/json11.cpp:559,1
    - Dst: json11::fail
      Src: /src/pdns/ext/json11/json11.cpp:575,1
    - Dst: json11::esc
      Src: /src/pdns/ext/json11/json11.cpp:575,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 60
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 578
      start: 491
    functionDepth: 0
    functionLinenumber: 491
    functionLinenumberEnd: 578
    functionName: json11::parse_string
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 8
    functionsReached:
    - string::data
    - strtol
    - size
    - substr
    - json11::encode_utf8
    - json11::in_range
    - json11::fail
    - json11::esc
    - string::length
    linkageType: ''
    returnType: string
    signature: string parse_string()
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: json11::in_range
      Src: /src/pdns/ext/json11/json11.cpp:593,1
    - Dst: json11::fail
      Src: /src/pdns/ext/json11/json11.cpp:594,1
    - Dst: json11::in_range
      Src: /src/pdns/ext/json11/json11.cpp:595,1
    - Dst: json11::in_range
      Src: /src/pdns/ext/json11/json11.cpp:597,1
    - Dst: json11::fail
      Src: /src/pdns/ext/json11/json11.cpp:600,1
    - Dst: json11::esc
      Src: /src/pdns/ext/json11/json11.cpp:600,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/ext/json11/json11.cpp:604,1
    - Dst: std::atoi
      Src: /src/pdns/ext/json11/json11.cpp:605,1
    - Dst: c_str
      Src: /src/pdns/ext/json11/json11.cpp:605,1
    - Dst: json11::in_range
      Src: /src/pdns/ext/json11/json11.cpp:611,1
    - Dst: json11::fail
      Src: /src/pdns/ext/json11/json11.cpp:612,1
    - Dst: json11::in_range
      Src: /src/pdns/ext/json11/json11.cpp:614,1
    - Dst: json11::in_range
      Src: /src/pdns/ext/json11/json11.cpp:625,1
    - Dst: json11::fail
      Src: /src/pdns/ext/json11/json11.cpp:626,1
    - Dst: json11::in_range
      Src: /src/pdns/ext/json11/json11.cpp:628,1
    - Dst: std::strtod
      Src: /src/pdns/ext/json11/json11.cpp:632,1
    - Dst: c_str
      Src: /src/pdns/ext/json11/json11.cpp:632,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 35
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 633
      start: 584
    functionDepth: 0
    functionLinenumber: 584
    functionLinenumberEnd: 633
    functionName: json11::parse_number
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 8
    functionsReached:
    - static_cast<size_t>
    - c_str
    - json11::in_range
    - std::strtod
    - json11::fail
    - json11::esc
    - std::atoi
    linkageType: ''
    returnType: Json
    signature: Json parse_number()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/pdns/ext/json11/json11.cpp:641,1
    - Dst: compare
      Src: /src/pdns/ext/json11/json11.cpp:643,1
    - Dst: string::length
      Src: /src/pdns/ext/json11/json11.cpp:643,1
    - Dst: string::length
      Src: /src/pdns/ext/json11/json11.cpp:644,1
    - Dst: json11::fail
      Src: /src/pdns/ext/json11/json11.cpp:647,1
    - Dst: substr
      Src: /src/pdns/ext/json11/json11.cpp:647,1
    - Dst: string::length
      Src: /src/pdns/ext/json11/json11.cpp:647,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - expected
    - res
    argTypes:
    - string
    - Json
    assertStmts:
    - condition: (i != 0)
      pos:
        line_end: 640
        line_start: 640
        source_file: /src/pdns/ext/json11/json11.cpp
    constantsTouched: []
    func_position:
      end: 649
      start: 640
    functionDepth: 0
    functionLinenumber: 640
    functionLinenumberEnd: 649
    functionName: json11::expect
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 8
    functionsReached:
    - assert
    - compare
    - substr
    - json11::fail
    - string::length
    linkageType: ''
    returnType: Json
    signature: Json expect(const string &expected, Json res)
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: json11::fail
      Src: /src/pdns/ext/json11/json11.cpp:657,1
    - Dst: json11::get_next_token
      Src: /src/pdns/ext/json11/json11.cpp:660,1
    - Dst: Json
      Src: /src/pdns/ext/json11/json11.cpp:662,1
    - Dst: json11::parse_number
      Src: /src/pdns/ext/json11/json11.cpp:666,1
    - Dst: json11::expect
      Src: /src/pdns/ext/json11/json11.cpp:670,1
    - Dst: json11::expect
      Src: /src/pdns/ext/json11/json11.cpp:673,1
    - Dst: json11::expect
      Src: /src/pdns/ext/json11/json11.cpp:676,1
    - Dst: Json
      Src: /src/pdns/ext/json11/json11.cpp:676,1
    - Dst: json11::parse_string
      Src: /src/pdns/ext/json11/json11.cpp:679,1
    - Dst: json11::get_next_token
      Src: /src/pdns/ext/json11/json11.cpp:683,1
    - Dst: json11::fail
      Src: /src/pdns/ext/json11/json11.cpp:689,1
    - Dst: json11::esc
      Src: /src/pdns/ext/json11/json11.cpp:689,1
    - Dst: json11::parse_string
      Src: /src/pdns/ext/json11/json11.cpp:691,1
    - Dst: Json
      Src: /src/pdns/ext/json11/json11.cpp:693,1
    - Dst: json11::get_next_token
      Src: /src/pdns/ext/json11/json11.cpp:695,1
    - Dst: json11::fail
      Src: /src/pdns/ext/json11/json11.cpp:697,1
    - Dst: json11::esc
      Src: /src/pdns/ext/json11/json11.cpp:697,1
    - Dst: std::move
      Src: /src/pdns/ext/json11/json11.cpp:699,1
    - Dst: json11::parse_json
      Src: /src/pdns/ext/json11/json11.cpp:699,1
    - Dst: Json
      Src: /src/pdns/ext/json11/json11.cpp:701,1
    - Dst: json11::get_next_token
      Src: /src/pdns/ext/json11/json11.cpp:703,1
    - Dst: json11::fail
      Src: /src/pdns/ext/json11/json11.cpp:707,1
    - Dst: json11::esc
      Src: /src/pdns/ext/json11/json11.cpp:707,1
    - Dst: json11::get_next_token
      Src: /src/pdns/ext/json11/json11.cpp:709,1
    - Dst: json11::get_next_token
      Src: /src/pdns/ext/json11/json11.cpp:716,1
    - Dst: vector::push_back
      Src: /src/pdns/ext/json11/json11.cpp:722,1
    - Dst: json11::parse_json
      Src: /src/pdns/ext/json11/json11.cpp:722,1
    - Dst: Json
      Src: /src/pdns/ext/json11/json11.cpp:724,1
    - Dst: json11::get_next_token
      Src: /src/pdns/ext/json11/json11.cpp:726,1
    - Dst: json11::fail
      Src: /src/pdns/ext/json11/json11.cpp:730,1
    - Dst: json11::esc
      Src: /src/pdns/ext/json11/json11.cpp:730,1
    - Dst: json11::get_next_token
      Src: /src/pdns/ext/json11/json11.cpp:732,1
    - Dst: json11::fail
      Src: /src/pdns/ext/json11/json11.cpp:738,1
    - Dst: json11::esc
      Src: /src/pdns/ext/json11/json11.cpp:738,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 62
    argCount: 1
    argNames:
    - depth
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 739
      start: 655
    functionDepth: 0
    functionLinenumber: 655
    functionLinenumberEnd: 739
    functionName: json11::parse_json
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 9
    functionsReached:
    - std::move
    - json11::parse_number
    - vector::push_back
    - json11::expect
    - json11::get_next_token
    - json11::parse_json
    - json11::parse_string
    - json11::fail
    - json11::esc
    - Json
    linkageType: ''
    returnType: Json
    signature: Json parse_json(int depth)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json11::fail
      Src: /src/pdns/ext/json11/json11.cpp:368,1
    - Dst: std::move
      Src: /src/pdns/ext/json11/json11.cpp:368,1
    - Dst: Json
      Src: /src/pdns/ext/json11/json11.cpp:368,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - msg
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 369
      start: 367
    functionDepth: 0
    functionLinenumber: 367
    functionLinenumberEnd: 369
    functionName: json11::fail
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 64
    functionsReached:
    - json11::fail
    - std::move
    - Json
    linkageType: ''
    returnType: Json
    signature: Json fail(string &&msg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/ext/json11/json11.cpp:374,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - msg
    - err_ret
    argTypes:
    - string
    - T
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 377
      start: 372
    functionDepth: 0
    functionLinenumber: 372
    functionLinenumberEnd: 377
    functionName: json11::fail
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 64
    functionsReached:
    - std::move
    linkageType: ''
    returnType: T
    signature: T fail(string &&msg, const T err_ret)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 386
      start: 383
    functionDepth: 0
    functionLinenumber: 383
    functionLinenumberEnd: 386
    functionName: json11::consume_whitespace
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 9
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void consume_whitespace()
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/ext/json11/json11.cpp:396,1
    - Dst: json11::fail
      Src: /src/pdns/ext/json11/json11.cpp:397,1
    - Dst: size
      Src: /src/pdns/ext/json11/json11.cpp:401,1
    - Dst: size
      Src: /src/pdns/ext/json11/json11.cpp:408,1
    - Dst: json11::fail
      Src: /src/pdns/ext/json11/json11.cpp:409,1
    - Dst: size
      Src: /src/pdns/ext/json11/json11.cpp:413,1
    - Dst: json11::fail
      Src: /src/pdns/ext/json11/json11.cpp:414,1
    - Dst: json11::fail
      Src: /src/pdns/ext/json11/json11.cpp:421,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 27
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 424
      start: 392
    functionDepth: 0
    functionLinenumber: 392
    functionLinenumberEnd: 424
    functionName: json11::consume_comment
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 9
    functionsReached:
    - json11::fail
    - size
    linkageType: ''
    returnType: bool
    signature: bool consume_comment()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: json11::consume_whitespace
      Src: /src/pdns/ext/json11/json11.cpp:431,1
    - Dst: json11::consume_comment
      Src: /src/pdns/ext/json11/json11.cpp:435,1
    - Dst: json11::consume_whitespace
      Src: /src/pdns/ext/json11/json11.cpp:439,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 443
      start: 430
    functionDepth: 0
    functionLinenumber: 430
    functionLinenumberEnd: 443
    functionName: json11::consume_garbage
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 9
    functionsReached:
    - json11::consume_comment
    - json11::consume_whitespace
    linkageType: ''
    returnType: void
    signature: void consume_garbage()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: json11::consume_garbage
      Src: /src/pdns/ext/json11/json11.cpp:451,1
    - Dst: size
      Src: /src/pdns/ext/json11/json11.cpp:455,1
    - Dst: json11::fail
      Src: /src/pdns/ext/json11/json11.cpp:456,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 460
      start: 450
    functionDepth: 0
    functionLinenumber: 450
    functionLinenumberEnd: 460
    functionName: json11::get_next_token
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 9
    functionsReached:
    - json11::fail
    - size
    - json11::consume_garbage
    linkageType: ''
    returnType: char
    signature: char get_next_token()
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<char>
      Src: /src/pdns/ext/json11/json11.cpp:471,1
    - Dst: static_cast<char>
      Src: /src/pdns/ext/json11/json11.cpp:473,1
    - Dst: static_cast<char>
      Src: /src/pdns/ext/json11/json11.cpp:474,1
    - Dst: static_cast<char>
      Src: /src/pdns/ext/json11/json11.cpp:476,1
    - Dst: static_cast<char>
      Src: /src/pdns/ext/json11/json11.cpp:477,1
    - Dst: static_cast<char>
      Src: /src/pdns/ext/json11/json11.cpp:478,1
    - Dst: static_cast<char>
      Src: /src/pdns/ext/json11/json11.cpp:480,1
    - Dst: static_cast<char>
      Src: /src/pdns/ext/json11/json11.cpp:481,1
    - Dst: static_cast<char>
      Src: /src/pdns/ext/json11/json11.cpp:482,1
    - Dst: static_cast<char>
      Src: /src/pdns/ext/json11/json11.cpp:483,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 2
    argNames:
    - pt
    - ' out'
    argTypes:
    - long
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 485
      start: 466
    functionDepth: 0
    functionLinenumber: 466
    functionLinenumberEnd: 485
    functionName: json11::encode_utf8
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 9
    functionsReached:
    - static_cast<char>
    linkageType: ''
    returnType: void
    signature: void encode_utf8(long pt, string & out)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/ext/json11/json11.cpp:495,1
    - Dst: json11::fail
      Src: /src/pdns/ext/json11/json11.cpp:496,1
    - Dst: json11::encode_utf8
      Src: /src/pdns/ext/json11/json11.cpp:501,1
    - Dst: json11::in_range
      Src: /src/pdns/ext/json11/json11.cpp:505,1
    - Dst: json11::fail
      Src: /src/pdns/ext/json11/json11.cpp:506,1
    - Dst: json11::esc
      Src: /src/pdns/ext/json11/json11.cpp:506,1
    - Dst: json11::encode_utf8
      Src: /src/pdns/ext/json11/json11.cpp:510,1
    - Dst: size
      Src: /src/pdns/ext/json11/json11.cpp:517,1
    - Dst: json11::fail
      Src: /src/pdns/ext/json11/json11.cpp:518,1
    - Dst: substr
      Src: /src/pdns/ext/json11/json11.cpp:524,1
    - Dst: string::length
      Src: /src/pdns/ext/json11/json11.cpp:528,1
    - Dst: json11::fail
      Src: /src/pdns/ext/json11/json11.cpp:529,1
    - Dst: json11::in_range
      Src: /src/pdns/ext/json11/json11.cpp:532,1
    - Dst: json11::in_range
      Src: /src/pdns/ext/json11/json11.cpp:532,1
    - Dst: json11::in_range
      Src: /src/pdns/ext/json11/json11.cpp:533,1
    - Dst: json11::fail
      Src: /src/pdns/ext/json11/json11.cpp:534,1
    - Dst: strtol
      Src: /src/pdns/ext/json11/json11.cpp:537,1
    - Dst: string::data
      Src: /src/pdns/ext/json11/json11.cpp:537,1
    - Dst: json11::in_range
      Src: /src/pdns/ext/json11/json11.cpp:543,1
    - Dst: json11::in_range
      Src: /src/pdns/ext/json11/json11.cpp:544,1
    - Dst: json11::encode_utf8
      Src: /src/pdns/ext/json11/json11.cpp:547,1
    - Dst: json11::encode_utf8
      Src: /src/pdns/ext/json11/json11.cpp:551,1
    - Dst: json11::encode_utf8
      Src: /src/pdns/ext/json11/json11.cpp:559,1
    - Dst: json11::fail
      Src: /src/pdns/ext/json11/json11.cpp:575,1
    - Dst: json11::esc
      Src: /src/pdns/ext/json11/json11.cpp:575,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 60
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 578
      start: 491
    functionDepth: 0
    functionLinenumber: 491
    functionLinenumberEnd: 578
    functionName: json11::parse_string
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 9
    functionsReached:
    - string::data
    - strtol
    - size
    - substr
    - json11::encode_utf8
    - json11::in_range
    - json11::fail
    - json11::esc
    - string::length
    linkageType: ''
    returnType: string
    signature: string parse_string()
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: json11::in_range
      Src: /src/pdns/ext/json11/json11.cpp:593,1
    - Dst: json11::fail
      Src: /src/pdns/ext/json11/json11.cpp:594,1
    - Dst: json11::in_range
      Src: /src/pdns/ext/json11/json11.cpp:595,1
    - Dst: json11::in_range
      Src: /src/pdns/ext/json11/json11.cpp:597,1
    - Dst: json11::fail
      Src: /src/pdns/ext/json11/json11.cpp:600,1
    - Dst: json11::esc
      Src: /src/pdns/ext/json11/json11.cpp:600,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/ext/json11/json11.cpp:604,1
    - Dst: std::atoi
      Src: /src/pdns/ext/json11/json11.cpp:605,1
    - Dst: c_str
      Src: /src/pdns/ext/json11/json11.cpp:605,1
    - Dst: json11::in_range
      Src: /src/pdns/ext/json11/json11.cpp:611,1
    - Dst: json11::fail
      Src: /src/pdns/ext/json11/json11.cpp:612,1
    - Dst: json11::in_range
      Src: /src/pdns/ext/json11/json11.cpp:614,1
    - Dst: json11::in_range
      Src: /src/pdns/ext/json11/json11.cpp:625,1
    - Dst: json11::fail
      Src: /src/pdns/ext/json11/json11.cpp:626,1
    - Dst: json11::in_range
      Src: /src/pdns/ext/json11/json11.cpp:628,1
    - Dst: std::strtod
      Src: /src/pdns/ext/json11/json11.cpp:632,1
    - Dst: c_str
      Src: /src/pdns/ext/json11/json11.cpp:632,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 35
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 633
      start: 584
    functionDepth: 0
    functionLinenumber: 584
    functionLinenumberEnd: 633
    functionName: json11::parse_number
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 9
    functionsReached:
    - static_cast<size_t>
    - c_str
    - json11::in_range
    - std::strtod
    - json11::fail
    - json11::esc
    - std::atoi
    linkageType: ''
    returnType: Json
    signature: Json parse_number()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/pdns/ext/json11/json11.cpp:641,1
    - Dst: compare
      Src: /src/pdns/ext/json11/json11.cpp:643,1
    - Dst: string::length
      Src: /src/pdns/ext/json11/json11.cpp:643,1
    - Dst: string::length
      Src: /src/pdns/ext/json11/json11.cpp:644,1
    - Dst: json11::fail
      Src: /src/pdns/ext/json11/json11.cpp:647,1
    - Dst: substr
      Src: /src/pdns/ext/json11/json11.cpp:647,1
    - Dst: string::length
      Src: /src/pdns/ext/json11/json11.cpp:647,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - expected
    - res
    argTypes:
    - string
    - Json
    assertStmts:
    - condition: (i != 0)
      pos:
        line_end: 640
        line_start: 640
        source_file: /src/pdns/ext/json11/json11.cpp
    constantsTouched: []
    func_position:
      end: 649
      start: 640
    functionDepth: 0
    functionLinenumber: 640
    functionLinenumberEnd: 649
    functionName: json11::expect
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 9
    functionsReached:
    - assert
    - compare
    - substr
    - json11::fail
    - string::length
    linkageType: ''
    returnType: Json
    signature: Json expect(const string &expected, Json res)
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: json11::fail
      Src: /src/pdns/ext/json11/json11.cpp:657,1
    - Dst: json11::get_next_token
      Src: /src/pdns/ext/json11/json11.cpp:660,1
    - Dst: Json
      Src: /src/pdns/ext/json11/json11.cpp:662,1
    - Dst: json11::parse_number
      Src: /src/pdns/ext/json11/json11.cpp:666,1
    - Dst: json11::expect
      Src: /src/pdns/ext/json11/json11.cpp:670,1
    - Dst: json11::expect
      Src: /src/pdns/ext/json11/json11.cpp:673,1
    - Dst: json11::expect
      Src: /src/pdns/ext/json11/json11.cpp:676,1
    - Dst: Json
      Src: /src/pdns/ext/json11/json11.cpp:676,1
    - Dst: json11::parse_string
      Src: /src/pdns/ext/json11/json11.cpp:679,1
    - Dst: json11::get_next_token
      Src: /src/pdns/ext/json11/json11.cpp:683,1
    - Dst: json11::fail
      Src: /src/pdns/ext/json11/json11.cpp:689,1
    - Dst: json11::esc
      Src: /src/pdns/ext/json11/json11.cpp:689,1
    - Dst: json11::parse_string
      Src: /src/pdns/ext/json11/json11.cpp:691,1
    - Dst: Json
      Src: /src/pdns/ext/json11/json11.cpp:693,1
    - Dst: json11::get_next_token
      Src: /src/pdns/ext/json11/json11.cpp:695,1
    - Dst: json11::fail
      Src: /src/pdns/ext/json11/json11.cpp:697,1
    - Dst: json11::esc
      Src: /src/pdns/ext/json11/json11.cpp:697,1
    - Dst: std::move
      Src: /src/pdns/ext/json11/json11.cpp:699,1
    - Dst: json11::parse_json
      Src: /src/pdns/ext/json11/json11.cpp:699,1
    - Dst: Json
      Src: /src/pdns/ext/json11/json11.cpp:701,1
    - Dst: json11::get_next_token
      Src: /src/pdns/ext/json11/json11.cpp:703,1
    - Dst: json11::fail
      Src: /src/pdns/ext/json11/json11.cpp:707,1
    - Dst: json11::esc
      Src: /src/pdns/ext/json11/json11.cpp:707,1
    - Dst: json11::get_next_token
      Src: /src/pdns/ext/json11/json11.cpp:709,1
    - Dst: json11::get_next_token
      Src: /src/pdns/ext/json11/json11.cpp:716,1
    - Dst: vector::push_back
      Src: /src/pdns/ext/json11/json11.cpp:722,1
    - Dst: json11::parse_json
      Src: /src/pdns/ext/json11/json11.cpp:722,1
    - Dst: Json
      Src: /src/pdns/ext/json11/json11.cpp:724,1
    - Dst: json11::get_next_token
      Src: /src/pdns/ext/json11/json11.cpp:726,1
    - Dst: json11::fail
      Src: /src/pdns/ext/json11/json11.cpp:730,1
    - Dst: json11::esc
      Src: /src/pdns/ext/json11/json11.cpp:730,1
    - Dst: json11::get_next_token
      Src: /src/pdns/ext/json11/json11.cpp:732,1
    - Dst: json11::fail
      Src: /src/pdns/ext/json11/json11.cpp:738,1
    - Dst: json11::esc
      Src: /src/pdns/ext/json11/json11.cpp:738,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 62
    argCount: 1
    argNames:
    - depth
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 739
      start: 655
    functionDepth: 0
    functionLinenumber: 655
    functionLinenumberEnd: 739
    functionName: json11::parse_json
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 10
    functionsReached:
    - std::move
    - json11::parse_number
    - vector::push_back
    - json11::expect
    - json11::get_next_token
    - json11::parse_json
    - json11::parse_string
    - json11::fail
    - json11::esc
    - Json
    linkageType: ''
    returnType: Json
    signature: Json parse_json(int depth)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: JsonParser::parse_json
      Src: /src/pdns/ext/json11/json11.cpp:745,1
    - Dst: JsonParser::consume_garbage
      Src: /src/pdns/ext/json11/json11.cpp:748,1
    - Dst: string::size
      Src: /src/pdns/ext/json11/json11.cpp:752,1
    - Dst: JsonParser::fail
      Src: /src/pdns/ext/json11/json11.cpp:753,1
    - Dst: esc
      Src: /src/pdns/ext/json11/json11.cpp:753,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 3
    argNames:
    - in
    - err
    - strategy
    argTypes:
    - string
    - string
    - JsonParse
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 757
      start: 743
    functionDepth: 0
    functionLinenumber: 743
    functionLinenumberEnd: 757
    functionName: json11::Json::parse
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 15
    functionsReached:
    - string::size
    - esc
    - JsonParser::consume_garbage
    - JsonParser::parse_json
    - JsonParser::fail
    linkageType: ''
    returnType: Json
    signature: Json Json::parse(const string &in, string &err, JsonParse strategy)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: string::size
      Src: /src/pdns/ext/json11/json11.cpp:767,1
    - Dst: vector::push_back
      Src: /src/pdns/ext/json11/json11.cpp:768,1
    - Dst: JsonParser::parse_json
      Src: /src/pdns/ext/json11/json11.cpp:768,1
    - Dst: JsonParser::consume_garbage
      Src: /src/pdns/ext/json11/json11.cpp:774,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 4
    argNames:
    - in
    - parser_stop_pos
    - err
    - strategy
    argTypes:
    - string
    - std::string::size_type
    - string
    - JsonParse
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 781
      start: 760
    functionDepth: 0
    functionLinenumber: 760
    functionLinenumberEnd: 781
    functionName: json11::Json::parse_multi
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 4
    functionsReached:
    - JsonParser::consume_garbage
    - JsonParser::parse_json
    - vector::push_back
    - string::size
    linkageType: ''
    returnType: vector<Json>
    signature: "vector<Json> Json::parse_multi(const string &in,\n                               std::string::size_type
      &parser_stop_pos,\n                               string &err,\n                               JsonParse
      strategy)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: json11::Json::is_object
      Src: /src/pdns/ext/json11/json11.cpp:788,1
    - Dst: json11::Json::dump
      Src: /src/pdns/ext/json11/json11.cpp:789,1
    - Dst: object_items
      Src: /src/pdns/ext/json11/json11.cpp:793,1
    - Dst: find
      Src: /src/pdns/ext/json11/json11.cpp:795,1
    - Dst: cend
      Src: /src/pdns/ext/json11/json11.cpp:796,1
    - Dst: auto::second::type
      Src: /src/pdns/ext/json11/json11.cpp:796,1
    - Dst: json11::Json::dump
      Src: /src/pdns/ext/json11/json11.cpp:797,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 2
    argNames:
    - ' types'
    - ' err'
    argTypes:
    - shape
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 803
      start: 787
    functionDepth: 0
    functionLinenumber: 787
    functionLinenumberEnd: 803
    functionName: json11::Json::has_shape
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - auto::second::type
    - json11::Json::dump
    - cend
    - object_items
    - find
    - json11::Json::is_object
    linkageType: ''
    returnType: bool
    signature: bool Json::has_shape(const shape & types, string & err) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 47
    functionDepth: 0
    functionLinenumber: 47
    functionLinenumberEnd: 47
    functionName: operator==(NullStruct /*unused*/) const
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool operator==(NullStruct /*unused*/) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 48
    functionDepth: 0
    functionLinenumber: 48
    functionLinenumberEnd: 48
    functionName: operator<(NullStruct /*unused*/) const
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool operator<(NullStruct /*unused*/) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - out
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 55
    functionDepth: 0
    functionLinenumber: 55
    functionLinenumberEnd: 57
    functionName: json11::dump
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 15
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void dump(NullStruct /*unused*/, string &out)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::isfinite
      Src: /src/pdns/ext/json11/json11.cpp:60,1
    - Dst: snprintf
      Src: /src/pdns/ext/json11/json11.cpp:62,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - value
    - out
    argTypes:
    - double
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 59
    functionDepth: 0
    functionLinenumber: 59
    functionLinenumberEnd: 67
    functionName: json11::dump
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 15
    functionsReached:
    - std::isfinite
    - snprintf
    linkageType: ''
    returnType: void
    signature: void dump(double value, string &out)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/pdns/ext/json11/json11.cpp:71,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - value
    - out
    argTypes:
    - int
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 69
    functionDepth: 0
    functionLinenumber: 69
    functionLinenumberEnd: 73
    functionName: json11::dump
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 15
    functionsReached:
    - snprintf
    linkageType: ''
    returnType: void
    signature: void dump(int value, string &out)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - value
    - out
    argTypes:
    - bool
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 75
    functionDepth: 0
    functionLinenumber: 75
    functionLinenumberEnd: 77
    functionName: json11::dump
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 15
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void dump(bool value, string &out)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: string::length
      Src: /src/pdns/ext/json11/json11.cpp:81,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/ext/json11/json11.cpp:97,1
    - Dst: snprintf
      Src: /src/pdns/ext/json11/json11.cpp:99,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/ext/json11/json11.cpp:101,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/ext/json11/json11.cpp:101,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/ext/json11/json11.cpp:102,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/ext/json11/json11.cpp:105,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/ext/json11/json11.cpp:105,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/ext/json11/json11.cpp:106,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 40
    argCount: 2
    argNames:
    - value
    - out
    argTypes:
    - string
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 79
    functionDepth: 0
    functionLinenumber: 79
    functionLinenumberEnd: 114
    functionName: json11::dump
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 15
    functionsReached:
    - string::length
    - snprintf
    - static_cast<uint8_t>
    linkageType: ''
    returnType: void
    signature: void dump(const string &value, string &out)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: json11::dump
      Src: /src/pdns/ext/json11/json11.cpp:122,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - values
    - out
    argTypes:
    - Json::array
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 116
    functionDepth: 0
    functionLinenumber: 116
    functionLinenumberEnd: 126
    functionName: json11::dump
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 16
    functionsReached:
    - json11::dump
    linkageType: ''
    returnType: void
    signature: void dump(const Json::array &values, string &out)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: json11::dump
      Src: /src/pdns/ext/json11/json11.cpp:134,1
    - Dst: second::dump
      Src: /src/pdns/ext/json11/json11.cpp:136,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - values
    - out
    argTypes:
    - Json::object
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 128
    functionDepth: 0
    functionLinenumber: 128
    functionLinenumberEnd: 140
    functionName: json11::dump
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 17
    functionsReached:
    - json11::dump
    - second::dump
    linkageType: ''
    returnType: void
    signature: void dump(const Json::object &values, string &out)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json11::Json::dump
      Src: /src/pdns/ext/json11/json11.cpp:143,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - out
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 144
      start: 142
    functionDepth: 0
    functionLinenumber: 142
    functionLinenumberEnd: 144
    functionName: json11::Json::dump
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 19
    functionsReached:
    - json11::Json::dump
    linkageType: ''
    returnType: void
    signature: void Json::dump(string &out) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - value
    argTypes:
    - T
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 155
    functionDepth: 0
    functionLinenumber: 155
    functionLinenumberEnd: 155
    functionName: json11::Value::Value
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Value(const T &value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/ext/json11/json11.cpp:156,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 1
    argNames:
    - value
    argTypes:
    - T
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 156
      start: 156
    functionDepth: 0
    functionLinenumber: 156
    functionLinenumberEnd: 156
    functionName: json11::Value::Value
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void Value(T &&value)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 161
      start: 159
    functionDepth: 0
    functionLinenumber: 159
    functionLinenumberEnd: 161
    functionName: json11::Value::type
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Json::Type
    signature: Json::Type type() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<const Value<tag, T> *>
      Src: /src/pdns/ext/json11/json11.cpp:165,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - other
    argTypes:
    - JsonValue*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 166
      start: 164
    functionDepth: 0
    functionLinenumber: 164
    functionLinenumberEnd: 166
    functionName: json11::Value::equals
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - static_cast<const Value<tag, T> *>
    linkageType: ''
    returnType: bool
    signature: bool equals(const JsonValue * other) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<const Value<tag, T> *>
      Src: /src/pdns/ext/json11/json11.cpp:168,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - other
    argTypes:
    - JsonValue*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 169
      start: 167
    functionDepth: 0
    functionLinenumber: 167
    functionLinenumberEnd: 169
    functionName: json11::Value::less
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - static_cast<const Value<tag, T> *>
    linkageType: ''
    returnType: bool
    signature: bool less(const JsonValue * other) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json11::dump
      Src: /src/pdns/ext/json11/json11.cpp:172,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - out
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 172
      start: 172
    functionDepth: 0
    functionLinenumber: 172
    functionLinenumberEnd: 172
    functionName: json11::Value::dump
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - json11::dump
    linkageType: ''
    returnType: void
    signature: void dump(string &out) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 176
      start: 176
    functionDepth: 0
    functionLinenumber: 176
    functionLinenumberEnd: 176
    functionName: json11::JsonDouble::number_value
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: double
    signature: double number_value() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<int>
      Src: /src/pdns/ext/json11/json11.cpp:177,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 177
      start: 177
    functionDepth: 0
    functionLinenumber: 177
    functionLinenumberEnd: 177
    functionName: json11::JsonDouble::int_value
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - static_cast<int>
    linkageType: ''
    returnType: int
    signature: int int_value() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: JsonValue*::number_value
      Src: /src/pdns/ext/json11/json11.cpp:178,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - other
    argTypes:
    - JsonValue*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 178
      start: 178
    functionDepth: 0
    functionLinenumber: 178
    functionLinenumberEnd: 178
    functionName: json11::JsonDouble::equals
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - JsonValue*::number_value
    linkageType: ''
    returnType: bool
    signature: bool equals(const JsonValue * other) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: JsonValue*::number_value
      Src: /src/pdns/ext/json11/json11.cpp:179,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - other
    argTypes:
    - JsonValue*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 179
      start: 179
    functionDepth: 0
    functionLinenumber: 179
    functionLinenumberEnd: 179
    functionName: json11::JsonDouble::less
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - JsonValue*::number_value
    linkageType: ''
    returnType: bool
    signature: bool less(const JsonValue * other)   const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - value
    argTypes:
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 181
      start: 181
    functionDepth: 0
    functionLinenumber: 181
    functionLinenumberEnd: 181
    functionName: json11::JsonDouble::JsonDouble
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void JsonDouble(double value)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 185
      start: 185
    functionDepth: 0
    functionLinenumber: 185
    functionLinenumberEnd: 185
    functionName: json11::JsonInt::number_value
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: double
    signature: double number_value() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 186
      start: 186
    functionDepth: 0
    functionLinenumber: 186
    functionLinenumberEnd: 186
    functionName: json11::JsonInt::int_value
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int int_value() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: JsonValue*::number_value
      Src: /src/pdns/ext/json11/json11.cpp:187,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - other
    argTypes:
    - JsonValue*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 187
      start: 187
    functionDepth: 0
    functionLinenumber: 187
    functionLinenumberEnd: 187
    functionName: json11::JsonInt::equals
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - JsonValue*::number_value
    linkageType: ''
    returnType: bool
    signature: bool equals(const JsonValue * other) const override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: JsonValue*::number_value
      Src: /src/pdns/ext/json11/json11.cpp:188,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - other
    argTypes:
    - JsonValue*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 188
      start: 188
    functionDepth: 0
    functionLinenumber: 188
    functionLinenumberEnd: 188
    functionName: json11::JsonInt::less
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - JsonValue*::number_value
    linkageType: ''
    returnType: bool
    signature: bool less(const JsonValue * other)   const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - value
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 190
      start: 190
    functionDepth: 0
    functionLinenumber: 190
    functionLinenumberEnd: 190
    functionName: json11::JsonInt::JsonInt
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void JsonInt(int value)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 194
      start: 194
    functionDepth: 0
    functionLinenumber: 194
    functionLinenumberEnd: 194
    functionName: json11::JsonBoolean::bool_value
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool bool_value() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - value
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 196
      start: 196
    functionDepth: 0
    functionLinenumber: 196
    functionLinenumberEnd: 196
    functionName: json11::JsonBoolean::JsonBoolean
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void JsonBoolean(bool value)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 200
      start: 200
    functionDepth: 0
    functionLinenumber: 200
    functionLinenumberEnd: 200
    functionName: '&string_value() const override'
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: string
    signature: string &string_value() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - value
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 202
      start: 202
    functionDepth: 0
    functionLinenumber: 202
    functionLinenumberEnd: 202
    functionName: json11::JsonString::JsonString
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void JsonString(const string &value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/ext/json11/json11.cpp:203,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 1
    argNames:
    - value
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 203
      start: 203
    functionDepth: 0
    functionLinenumber: 203
    functionLinenumberEnd: 203
    functionName: json11::JsonString::JsonString
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void JsonString(string &&value)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 207
      start: 207
    functionDepth: 0
    functionLinenumber: 207
    functionLinenumberEnd: 207
    functionName: '&array_items() const override'
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Json::array
    signature: Json::array &array_items() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - value
    argTypes:
    - Json::array
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 210
      start: 210
    functionDepth: 0
    functionLinenumber: 210
    functionLinenumberEnd: 210
    functionName: json11::JsonArray::JsonArray
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void JsonArray(const Json::array &value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/ext/json11/json11.cpp:211,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 1
    argNames:
    - value
    argTypes:
    - Json::array
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 211
      start: 211
    functionDepth: 0
    functionLinenumber: 211
    functionLinenumberEnd: 211
    functionName: json11::JsonArray::JsonArray
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void JsonArray(Json::array &&value)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 215
      start: 215
    functionDepth: 0
    functionLinenumber: 215
    functionLinenumberEnd: 215
    functionName: '&object_items() const override'
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Json::object
    signature: Json::object &object_items() const override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - value
    argTypes:
    - Json::object
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 218
      start: 218
    functionDepth: 0
    functionLinenumber: 218
    functionLinenumberEnd: 218
    functionName: json11::JsonObject::JsonObject
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void JsonObject(const Json::object &value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/ext/json11/json11.cpp:219,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 1
    argNames:
    - value
    argTypes:
    - Json::object
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 219
      start: 219
    functionDepth: 0
    functionLinenumber: 219
    functionLinenumberEnd: 219
    functionName: json11::JsonObject::JsonObject
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void JsonObject(Json::object &&value)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 224
      start: 224
    functionDepth: 0
    functionLinenumber: 224
    functionLinenumberEnd: 224
    functionName: json11::JsonNull::JsonNull
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void JsonNull()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 237
      start: 237
    functionDepth: 0
    functionLinenumber: 237
    functionLinenumberEnd: 237
    functionName: json11::Statics
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Statics()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 243
      start: 240
    functionDepth: 0
    functionLinenumber: 240
    functionLinenumberEnd: 243
    functionName: json11::statics
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Statics
    signature: Statics & statics()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 249
      start: 245
    functionDepth: 0
    functionLinenumber: 245
    functionLinenumberEnd: 249
    functionName: json11::static_null
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Json
    signature: Json & static_null()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: statics
      Src: /src/pdns/ext/json11/json11.cpp:255,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 255
      start: 255
    functionDepth: 0
    functionLinenumber: 255
    functionLinenumberEnd: 255
    functionName: json11::Json::Json
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - statics
    linkageType: ''
    returnType: void
    signature: void Json::Json() noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: statics
      Src: /src/pdns/ext/json11/json11.cpp:256,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 256
      start: 256
    functionDepth: 0
    functionLinenumber: 256
    functionLinenumberEnd: 256
    functionName: json11::Json::Json
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - statics
    linkageType: ''
    returnType: void
    signature: void Json::Json(std::nullptr_t) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: make_shared<JsonDouble>
      Src: /src/pdns/ext/json11/json11.cpp:257,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - value
    argTypes:
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 257
      start: 257
    functionDepth: 0
    functionLinenumber: 257
    functionLinenumberEnd: 257
    functionName: json11::Json::Json
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - make_shared<JsonDouble>
    linkageType: ''
    returnType: void
    signature: void Json::Json(double value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: make_shared<JsonInt>
      Src: /src/pdns/ext/json11/json11.cpp:258,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - value
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 258
      start: 258
    functionDepth: 0
    functionLinenumber: 258
    functionLinenumberEnd: 258
    functionName: json11::Json::Json
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - make_shared<JsonInt>
    linkageType: ''
    returnType: void
    signature: void Json::Json(int value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: statics
      Src: /src/pdns/ext/json11/json11.cpp:259,1
    - Dst: statics
      Src: /src/pdns/ext/json11/json11.cpp:259,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - value
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 259
      start: 259
    functionDepth: 0
    functionLinenumber: 259
    functionLinenumberEnd: 259
    functionName: json11::Json::Json
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - statics
    linkageType: ''
    returnType: void
    signature: void Json::Json(bool value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: make_shared<JsonString>
      Src: /src/pdns/ext/json11/json11.cpp:260,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - value
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 260
      start: 260
    functionDepth: 0
    functionLinenumber: 260
    functionLinenumberEnd: 260
    functionName: json11::Json::Json
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - make_shared<JsonString>
    linkageType: ''
    returnType: void
    signature: void Json::Json(const string &value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: make_shared<JsonString>
      Src: /src/pdns/ext/json11/json11.cpp:261,1
    - Dst: std::move
      Src: /src/pdns/ext/json11/json11.cpp:261,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 1
    argNames:
    - value
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 261
      start: 261
    functionDepth: 0
    functionLinenumber: 261
    functionLinenumberEnd: 261
    functionName: json11::Json::Json
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - std::move
    - make_shared<JsonString>
    linkageType: ''
    returnType: void
    signature: void Json::Json(string &&value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: make_shared<JsonString>
      Src: /src/pdns/ext/json11/json11.cpp:262,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - value
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 262
      start: 262
    functionDepth: 0
    functionLinenumber: 262
    functionLinenumberEnd: 262
    functionName: json11::Json::Json
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - make_shared<JsonString>
    linkageType: ''
    returnType: void
    signature: void Json::Json(const char * value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: make_shared<JsonArray>
      Src: /src/pdns/ext/json11/json11.cpp:263,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - values
    argTypes:
    - Json::array
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 263
      start: 263
    functionDepth: 0
    functionLinenumber: 263
    functionLinenumberEnd: 263
    functionName: json11::Json::Json
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - make_shared<JsonArray>
    linkageType: ''
    returnType: void
    signature: void Json::Json(const Json::array &values)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: make_shared<JsonArray>
      Src: /src/pdns/ext/json11/json11.cpp:264,1
    - Dst: std::move
      Src: /src/pdns/ext/json11/json11.cpp:264,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 1
    argNames:
    - values
    argTypes:
    - Json::array
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 264
      start: 264
    functionDepth: 0
    functionLinenumber: 264
    functionLinenumberEnd: 264
    functionName: json11::Json::Json
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - std::move
    - make_shared<JsonArray>
    linkageType: ''
    returnType: void
    signature: void Json::Json(Json::array &&values)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: make_shared<JsonObject>
      Src: /src/pdns/ext/json11/json11.cpp:265,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - values
    argTypes:
    - Json::object
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 265
      start: 265
    functionDepth: 0
    functionLinenumber: 265
    functionLinenumberEnd: 265
    functionName: json11::Json::Json
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - make_shared<JsonObject>
    linkageType: ''
    returnType: void
    signature: void Json::Json(const Json::object &values)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: make_shared<JsonObject>
      Src: /src/pdns/ext/json11/json11.cpp:266,1
    - Dst: std::move
      Src: /src/pdns/ext/json11/json11.cpp:266,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 1
    argNames:
    - values
    argTypes:
    - Json::object
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 266
      start: 266
    functionDepth: 0
    functionLinenumber: 266
    functionLinenumberEnd: 266
    functionName: json11::Json::Json
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - make_shared<JsonObject>
    - std::move
    linkageType: ''
    returnType: void
    signature: void Json::Json(Json::object &&values)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json11::Json::type
      Src: /src/pdns/ext/json11/json11.cpp:272,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 272
      start: 272
    functionDepth: 0
    functionLinenumber: 272
    functionLinenumberEnd: 272
    functionName: json11::Json::type
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 30
    functionsReached:
    - json11::Json::type
    linkageType: ''
    returnType: Json::Type
    signature: Json::Type Json::type()                           const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json11::Json::number_value
      Src: /src/pdns/ext/json11/json11.cpp:273,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 273
      start: 273
    functionDepth: 0
    functionLinenumber: 273
    functionLinenumberEnd: 273
    functionName: json11::Json::number_value
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 6
    functionsReached:
    - json11::Json::number_value
    linkageType: ''
    returnType: double
    signature: double Json::number_value()                       const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json11::Json::int_value
      Src: /src/pdns/ext/json11/json11.cpp:274,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 274
      start: 274
    functionDepth: 0
    functionLinenumber: 274
    functionLinenumberEnd: 274
    functionName: json11::Json::int_value
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 6
    functionsReached:
    - json11::Json::int_value
    linkageType: ''
    returnType: int
    signature: int Json::int_value()                             const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json11::Json::bool_value
      Src: /src/pdns/ext/json11/json11.cpp:275,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 275
      start: 275
    functionDepth: 0
    functionLinenumber: 275
    functionLinenumberEnd: 275
    functionName: json11::Json::bool_value
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 6
    functionsReached:
    - json11::Json::bool_value
    linkageType: ''
    returnType: bool
    signature: bool Json::bool_value()                           const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: string_value
      Src: /src/pdns/ext/json11/json11.cpp:276,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 276
      start: 276
    functionDepth: 0
    functionLinenumber: 276
    functionLinenumberEnd: 276
    functionName: '& Json::string_value()               const'
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - string_value
    linkageType: ''
    returnType: string
    signature: string & Json::string_value()               const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array_items
      Src: /src/pdns/ext/json11/json11.cpp:277,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 277
      start: 277
    functionDepth: 0
    functionLinenumber: 277
    functionLinenumberEnd: 277
    functionName: '& Json::array_items()          const'
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - array_items
    linkageType: ''
    returnType: vector<Json>
    signature: vector<Json> & Json::array_items()          const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: object_items
      Src: /src/pdns/ext/json11/json11.cpp:278,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 278
      start: 278
    functionDepth: 0
    functionLinenumber: 278
    functionLinenumberEnd: 278
    functionName: '& Json::object_items()    const'
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - object_items
    linkageType: ''
    returnType: map<string, Json>
    signature: map<string, Json> & Json::object_items()    const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - i
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 279
      start: 279
    functionDepth: 0
    functionLinenumber: 279
    functionLinenumberEnd: 279
    functionName: '& Json::operator[] (size_t i)          const'
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Json
    signature: Json & Json::operator[] (size_t i)          const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - key
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 280
      start: 280
    functionDepth: 0
    functionLinenumber: 280
    functionLinenumberEnd: 280
    functionName: '& Json::operator[] (const string &key) const'
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Json
    signature: Json & Json::operator[] (const string &key) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 282
      start: 282
    functionDepth: 0
    functionLinenumber: 282
    functionLinenumberEnd: 282
    functionName: json11::JsonValue::number_value
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: double
    signature: double JsonValue::number_value()              const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 283
      start: 283
    functionDepth: 0
    functionLinenumber: 283
    functionLinenumberEnd: 283
    functionName: json11::JsonValue::int_value
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int JsonValue::int_value()                 const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 284
      start: 284
    functionDepth: 0
    functionLinenumber: 284
    functionLinenumberEnd: 284
    functionName: json11::JsonValue::bool_value
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool JsonValue::bool_value()                const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: statics
      Src: /src/pdns/ext/json11/json11.cpp:285,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 285
      start: 285
    functionDepth: 0
    functionLinenumber: 285
    functionLinenumberEnd: 285
    functionName: '&            JsonValue::string_value()              const'
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - statics
    linkageType: ''
    returnType: string
    signature: string &            JsonValue::string_value()              const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: statics
      Src: /src/pdns/ext/json11/json11.cpp:286,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 286
      start: 286
    functionDepth: 0
    functionLinenumber: 286
    functionLinenumberEnd: 286
    functionName: '&      JsonValue::array_items()               const'
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - statics
    linkageType: ''
    returnType: vector<Json>
    signature: vector<Json> &      JsonValue::array_items()               const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: statics
      Src: /src/pdns/ext/json11/json11.cpp:287,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 287
      start: 287
    functionDepth: 0
    functionLinenumber: 287
    functionLinenumberEnd: 287
    functionName: '& JsonValue::object_items()              const'
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - statics
    linkageType: ''
    returnType: map<string, Json>
    signature: map<string, Json> & JsonValue::object_items()              const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_null
      Src: /src/pdns/ext/json11/json11.cpp:288,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 288
      start: 288
    functionDepth: 0
    functionLinenumber: 288
    functionLinenumberEnd: 288
    functionName: '&              JsonValue::operator[] (size_t)         const'
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - static_null
    linkageType: ''
    returnType: Json
    signature: Json &              JsonValue::operator[] (size_t)         const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_null
      Src: /src/pdns/ext/json11/json11.cpp:289,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 289
      start: 289
    functionDepth: 0
    functionLinenumber: 289
    functionLinenumberEnd: 289
    functionName: '&              JsonValue::operator[] (const string &) const'
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - static_null
    linkageType: ''
    returnType: Json
    signature: Json &              JsonValue::operator[] (const string &) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: find
      Src: /src/pdns/ext/json11/json11.cpp:292,1
    - Dst: end
      Src: /src/pdns/ext/json11/json11.cpp:293,1
    - Dst: static_null
      Src: /src/pdns/ext/json11/json11.cpp:293,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - key
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 294
      start: 291
    functionDepth: 0
    functionLinenumber: 291
    functionLinenumberEnd: 294
    functionName: '& JsonObject::operator[] (const string &key) const'
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - static_null
    - end
    - find
    linkageType: ''
    returnType: Json
    signature: Json & JsonObject::operator[] (const string &key) const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/ext/json11/json11.cpp:296,1
    - Dst: static_null
      Src: /src/pdns/ext/json11/json11.cpp:296,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - i
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 298
      start: 295
    functionDepth: 0
    functionLinenumber: 295
    functionLinenumberEnd: 298
    functionName: '& JsonArray::operator[] (size_t i) const'
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - static_null
    - size
    linkageType: ''
    returnType: Json
    signature: Json & JsonArray::operator[] (size_t i) const
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: type
      Src: /src/pdns/ext/json11/json11.cpp:308,1
    - Dst: Json::m_ptr::type
      Src: /src/pdns/ext/json11/json11.cpp:308,1
    - Dst: equals
      Src: /src/pdns/ext/json11/json11.cpp:312,1
    - Dst: Json::m_ptr::get
      Src: /src/pdns/ext/json11/json11.cpp:312,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - other
    argTypes:
    - Json
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 313
      start: 304
    functionDepth: 0
    functionLinenumber: 304
    functionLinenumberEnd: 313
    functionName: Json::operator== (const Json &other) const
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - Json::m_ptr::type
    - equals
    - Json::m_ptr::get
    - type
    linkageType: ''
    returnType: bool
    signature: bool Json::operator== (const Json &other) const
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: type
      Src: /src/pdns/ext/json11/json11.cpp:319,1
    - Dst: Json::m_ptr::type
      Src: /src/pdns/ext/json11/json11.cpp:319,1
    - Dst: type
      Src: /src/pdns/ext/json11/json11.cpp:320,1
    - Dst: Json::m_ptr::type
      Src: /src/pdns/ext/json11/json11.cpp:320,1
    - Dst: less
      Src: /src/pdns/ext/json11/json11.cpp:323,1
    - Dst: Json::m_ptr::get
      Src: /src/pdns/ext/json11/json11.cpp:323,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - other
    argTypes:
    - Json
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 324
      start: 315
    functionDepth: 0
    functionLinenumber: 315
    functionLinenumberEnd: 324
    functionName: Json::operator< (const Json &other) const
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - Json::m_ptr::type
    - less
    - Json::m_ptr::get
    - type
    linkageType: ''
    returnType: bool
    signature: bool Json::operator< (const Json &other) const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/ext/json11/json11.cpp:336,1
    - Dst: static_cast<uint8_t>
      Src: /src/pdns/ext/json11/json11.cpp:336,1
    - Dst: snprintf
      Src: /src/pdns/ext/json11/json11.cpp:337,1
    - Dst: snprintf
      Src: /src/pdns/ext/json11/json11.cpp:339,1
    - Dst: string
      Src: /src/pdns/ext/json11/json11.cpp:341,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - c
    argTypes:
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 342
      start: 334
    functionDepth: 0
    functionLinenumber: 334
    functionLinenumberEnd: 342
    functionName: json11::esc
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 30
    functionsReached:
    - string
    - snprintf
    - static_cast<uint8_t>
    linkageType: ''
    returnType: string
    signature: string esc(char c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 3
    argNames:
    - x
    - lower
    - upper
    argTypes:
    - long
    - long
    - long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 346
      start: 344
    functionDepth: 0
    functionLinenumber: 344
    functionLinenumberEnd: 346
    functionName: json11::in_range
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 20
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool in_range(long x, long lower, long upper)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json11::fail
      Src: /src/pdns/ext/json11/json11.cpp:368,1
    - Dst: std::move
      Src: /src/pdns/ext/json11/json11.cpp:368,1
    - Dst: Json
      Src: /src/pdns/ext/json11/json11.cpp:368,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - msg
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 369
      start: 367
    functionDepth: 0
    functionLinenumber: 367
    functionLinenumberEnd: 369
    functionName: json11::fail
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 71
    functionsReached:
    - json11::fail
    - std::move
    - Json
    linkageType: ''
    returnType: Json
    signature: Json fail(string &&msg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/ext/json11/json11.cpp:374,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - msg
    - err_ret
    argTypes:
    - string
    - T
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 377
      start: 372
    functionDepth: 0
    functionLinenumber: 372
    functionLinenumberEnd: 377
    functionName: json11::fail
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 71
    functionsReached:
    - std::move
    linkageType: ''
    returnType: T
    signature: T fail(string &&msg, const T err_ret)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 386
      start: 383
    functionDepth: 0
    functionLinenumber: 383
    functionLinenumberEnd: 386
    functionName: json11::consume_whitespace
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 10
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void consume_whitespace()
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/ext/json11/json11.cpp:396,1
    - Dst: json11::fail
      Src: /src/pdns/ext/json11/json11.cpp:397,1
    - Dst: size
      Src: /src/pdns/ext/json11/json11.cpp:401,1
    - Dst: size
      Src: /src/pdns/ext/json11/json11.cpp:408,1
    - Dst: json11::fail
      Src: /src/pdns/ext/json11/json11.cpp:409,1
    - Dst: size
      Src: /src/pdns/ext/json11/json11.cpp:413,1
    - Dst: json11::fail
      Src: /src/pdns/ext/json11/json11.cpp:414,1
    - Dst: json11::fail
      Src: /src/pdns/ext/json11/json11.cpp:421,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 27
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 424
      start: 392
    functionDepth: 0
    functionLinenumber: 392
    functionLinenumberEnd: 424
    functionName: json11::consume_comment
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 10
    functionsReached:
    - json11::fail
    - size
    linkageType: ''
    returnType: bool
    signature: bool consume_comment()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: json11::consume_whitespace
      Src: /src/pdns/ext/json11/json11.cpp:431,1
    - Dst: json11::consume_comment
      Src: /src/pdns/ext/json11/json11.cpp:435,1
    - Dst: json11::consume_whitespace
      Src: /src/pdns/ext/json11/json11.cpp:439,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 443
      start: 430
    functionDepth: 0
    functionLinenumber: 430
    functionLinenumberEnd: 443
    functionName: json11::consume_garbage
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 10
    functionsReached:
    - json11::consume_comment
    - json11::consume_whitespace
    linkageType: ''
    returnType: void
    signature: void consume_garbage()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: json11::consume_garbage
      Src: /src/pdns/ext/json11/json11.cpp:451,1
    - Dst: size
      Src: /src/pdns/ext/json11/json11.cpp:455,1
    - Dst: json11::fail
      Src: /src/pdns/ext/json11/json11.cpp:456,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 460
      start: 450
    functionDepth: 0
    functionLinenumber: 450
    functionLinenumberEnd: 460
    functionName: json11::get_next_token
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 10
    functionsReached:
    - json11::fail
    - size
    - json11::consume_garbage
    linkageType: ''
    returnType: char
    signature: char get_next_token()
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<char>
      Src: /src/pdns/ext/json11/json11.cpp:471,1
    - Dst: static_cast<char>
      Src: /src/pdns/ext/json11/json11.cpp:473,1
    - Dst: static_cast<char>
      Src: /src/pdns/ext/json11/json11.cpp:474,1
    - Dst: static_cast<char>
      Src: /src/pdns/ext/json11/json11.cpp:476,1
    - Dst: static_cast<char>
      Src: /src/pdns/ext/json11/json11.cpp:477,1
    - Dst: static_cast<char>
      Src: /src/pdns/ext/json11/json11.cpp:478,1
    - Dst: static_cast<char>
      Src: /src/pdns/ext/json11/json11.cpp:480,1
    - Dst: static_cast<char>
      Src: /src/pdns/ext/json11/json11.cpp:481,1
    - Dst: static_cast<char>
      Src: /src/pdns/ext/json11/json11.cpp:482,1
    - Dst: static_cast<char>
      Src: /src/pdns/ext/json11/json11.cpp:483,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 2
    argNames:
    - pt
    - ' out'
    argTypes:
    - long
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 485
      start: 466
    functionDepth: 0
    functionLinenumber: 466
    functionLinenumberEnd: 485
    functionName: json11::encode_utf8
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 10
    functionsReached:
    - static_cast<char>
    linkageType: ''
    returnType: void
    signature: void encode_utf8(long pt, string & out)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/ext/json11/json11.cpp:495,1
    - Dst: json11::fail
      Src: /src/pdns/ext/json11/json11.cpp:496,1
    - Dst: json11::encode_utf8
      Src: /src/pdns/ext/json11/json11.cpp:501,1
    - Dst: json11::in_range
      Src: /src/pdns/ext/json11/json11.cpp:505,1
    - Dst: json11::fail
      Src: /src/pdns/ext/json11/json11.cpp:506,1
    - Dst: json11::esc
      Src: /src/pdns/ext/json11/json11.cpp:506,1
    - Dst: json11::encode_utf8
      Src: /src/pdns/ext/json11/json11.cpp:510,1
    - Dst: size
      Src: /src/pdns/ext/json11/json11.cpp:517,1
    - Dst: json11::fail
      Src: /src/pdns/ext/json11/json11.cpp:518,1
    - Dst: substr
      Src: /src/pdns/ext/json11/json11.cpp:524,1
    - Dst: string::length
      Src: /src/pdns/ext/json11/json11.cpp:528,1
    - Dst: json11::fail
      Src: /src/pdns/ext/json11/json11.cpp:529,1
    - Dst: json11::in_range
      Src: /src/pdns/ext/json11/json11.cpp:532,1
    - Dst: json11::in_range
      Src: /src/pdns/ext/json11/json11.cpp:532,1
    - Dst: json11::in_range
      Src: /src/pdns/ext/json11/json11.cpp:533,1
    - Dst: json11::fail
      Src: /src/pdns/ext/json11/json11.cpp:534,1
    - Dst: strtol
      Src: /src/pdns/ext/json11/json11.cpp:537,1
    - Dst: string::data
      Src: /src/pdns/ext/json11/json11.cpp:537,1
    - Dst: json11::in_range
      Src: /src/pdns/ext/json11/json11.cpp:543,1
    - Dst: json11::in_range
      Src: /src/pdns/ext/json11/json11.cpp:544,1
    - Dst: json11::encode_utf8
      Src: /src/pdns/ext/json11/json11.cpp:547,1
    - Dst: json11::encode_utf8
      Src: /src/pdns/ext/json11/json11.cpp:551,1
    - Dst: json11::encode_utf8
      Src: /src/pdns/ext/json11/json11.cpp:559,1
    - Dst: json11::fail
      Src: /src/pdns/ext/json11/json11.cpp:575,1
    - Dst: json11::esc
      Src: /src/pdns/ext/json11/json11.cpp:575,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 60
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 578
      start: 491
    functionDepth: 0
    functionLinenumber: 491
    functionLinenumberEnd: 578
    functionName: json11::parse_string
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 10
    functionsReached:
    - string::data
    - strtol
    - size
    - substr
    - json11::encode_utf8
    - json11::in_range
    - json11::fail
    - json11::esc
    - string::length
    linkageType: ''
    returnType: string
    signature: string parse_string()
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: json11::in_range
      Src: /src/pdns/ext/json11/json11.cpp:593,1
    - Dst: json11::fail
      Src: /src/pdns/ext/json11/json11.cpp:594,1
    - Dst: json11::in_range
      Src: /src/pdns/ext/json11/json11.cpp:595,1
    - Dst: json11::in_range
      Src: /src/pdns/ext/json11/json11.cpp:597,1
    - Dst: json11::fail
      Src: /src/pdns/ext/json11/json11.cpp:600,1
    - Dst: json11::esc
      Src: /src/pdns/ext/json11/json11.cpp:600,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/ext/json11/json11.cpp:604,1
    - Dst: std::atoi
      Src: /src/pdns/ext/json11/json11.cpp:605,1
    - Dst: c_str
      Src: /src/pdns/ext/json11/json11.cpp:605,1
    - Dst: json11::in_range
      Src: /src/pdns/ext/json11/json11.cpp:611,1
    - Dst: json11::fail
      Src: /src/pdns/ext/json11/json11.cpp:612,1
    - Dst: json11::in_range
      Src: /src/pdns/ext/json11/json11.cpp:614,1
    - Dst: json11::in_range
      Src: /src/pdns/ext/json11/json11.cpp:625,1
    - Dst: json11::fail
      Src: /src/pdns/ext/json11/json11.cpp:626,1
    - Dst: json11::in_range
      Src: /src/pdns/ext/json11/json11.cpp:628,1
    - Dst: std::strtod
      Src: /src/pdns/ext/json11/json11.cpp:632,1
    - Dst: c_str
      Src: /src/pdns/ext/json11/json11.cpp:632,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 35
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 633
      start: 584
    functionDepth: 0
    functionLinenumber: 584
    functionLinenumberEnd: 633
    functionName: json11::parse_number
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 10
    functionsReached:
    - static_cast<size_t>
    - c_str
    - json11::in_range
    - std::strtod
    - json11::fail
    - json11::esc
    - std::atoi
    linkageType: ''
    returnType: Json
    signature: Json parse_number()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/pdns/ext/json11/json11.cpp:641,1
    - Dst: compare
      Src: /src/pdns/ext/json11/json11.cpp:643,1
    - Dst: string::length
      Src: /src/pdns/ext/json11/json11.cpp:643,1
    - Dst: string::length
      Src: /src/pdns/ext/json11/json11.cpp:644,1
    - Dst: json11::fail
      Src: /src/pdns/ext/json11/json11.cpp:647,1
    - Dst: substr
      Src: /src/pdns/ext/json11/json11.cpp:647,1
    - Dst: string::length
      Src: /src/pdns/ext/json11/json11.cpp:647,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - expected
    - res
    argTypes:
    - string
    - Json
    assertStmts:
    - condition: (i != 0)
      pos:
        line_end: 640
        line_start: 640
        source_file: /src/pdns/ext/json11/json11.cpp
    constantsTouched: []
    func_position:
      end: 649
      start: 640
    functionDepth: 0
    functionLinenumber: 640
    functionLinenumberEnd: 649
    functionName: json11::expect
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 10
    functionsReached:
    - assert
    - compare
    - substr
    - json11::fail
    - string::length
    linkageType: ''
    returnType: Json
    signature: Json expect(const string &expected, Json res)
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: json11::fail
      Src: /src/pdns/ext/json11/json11.cpp:657,1
    - Dst: json11::get_next_token
      Src: /src/pdns/ext/json11/json11.cpp:660,1
    - Dst: Json
      Src: /src/pdns/ext/json11/json11.cpp:662,1
    - Dst: json11::parse_number
      Src: /src/pdns/ext/json11/json11.cpp:666,1
    - Dst: json11::expect
      Src: /src/pdns/ext/json11/json11.cpp:670,1
    - Dst: json11::expect
      Src: /src/pdns/ext/json11/json11.cpp:673,1
    - Dst: json11::expect
      Src: /src/pdns/ext/json11/json11.cpp:676,1
    - Dst: Json
      Src: /src/pdns/ext/json11/json11.cpp:676,1
    - Dst: json11::parse_string
      Src: /src/pdns/ext/json11/json11.cpp:679,1
    - Dst: json11::get_next_token
      Src: /src/pdns/ext/json11/json11.cpp:683,1
    - Dst: json11::fail
      Src: /src/pdns/ext/json11/json11.cpp:689,1
    - Dst: json11::esc
      Src: /src/pdns/ext/json11/json11.cpp:689,1
    - Dst: json11::parse_string
      Src: /src/pdns/ext/json11/json11.cpp:691,1
    - Dst: Json
      Src: /src/pdns/ext/json11/json11.cpp:693,1
    - Dst: json11::get_next_token
      Src: /src/pdns/ext/json11/json11.cpp:695,1
    - Dst: json11::fail
      Src: /src/pdns/ext/json11/json11.cpp:697,1
    - Dst: json11::esc
      Src: /src/pdns/ext/json11/json11.cpp:697,1
    - Dst: std::move
      Src: /src/pdns/ext/json11/json11.cpp:699,1
    - Dst: json11::parse_json
      Src: /src/pdns/ext/json11/json11.cpp:699,1
    - Dst: Json
      Src: /src/pdns/ext/json11/json11.cpp:701,1
    - Dst: json11::get_next_token
      Src: /src/pdns/ext/json11/json11.cpp:703,1
    - Dst: json11::fail
      Src: /src/pdns/ext/json11/json11.cpp:707,1
    - Dst: json11::esc
      Src: /src/pdns/ext/json11/json11.cpp:707,1
    - Dst: json11::get_next_token
      Src: /src/pdns/ext/json11/json11.cpp:709,1
    - Dst: json11::get_next_token
      Src: /src/pdns/ext/json11/json11.cpp:716,1
    - Dst: vector::push_back
      Src: /src/pdns/ext/json11/json11.cpp:722,1
    - Dst: json11::parse_json
      Src: /src/pdns/ext/json11/json11.cpp:722,1
    - Dst: Json
      Src: /src/pdns/ext/json11/json11.cpp:724,1
    - Dst: json11::get_next_token
      Src: /src/pdns/ext/json11/json11.cpp:726,1
    - Dst: json11::fail
      Src: /src/pdns/ext/json11/json11.cpp:730,1
    - Dst: json11::esc
      Src: /src/pdns/ext/json11/json11.cpp:730,1
    - Dst: json11::get_next_token
      Src: /src/pdns/ext/json11/json11.cpp:732,1
    - Dst: json11::fail
      Src: /src/pdns/ext/json11/json11.cpp:738,1
    - Dst: json11::esc
      Src: /src/pdns/ext/json11/json11.cpp:738,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 62
    argCount: 1
    argNames:
    - depth
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 739
      start: 655
    functionDepth: 0
    functionLinenumber: 655
    functionLinenumberEnd: 739
    functionName: json11::parse_json
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 11
    functionsReached:
    - std::move
    - json11::parse_number
    - vector::push_back
    - json11::expect
    - json11::get_next_token
    - json11::parse_json
    - json11::parse_string
    - json11::fail
    - json11::esc
    - Json
    linkageType: ''
    returnType: Json
    signature: Json parse_json(int depth)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json11::fail
      Src: /src/pdns/ext/json11/json11.cpp:368,1
    - Dst: std::move
      Src: /src/pdns/ext/json11/json11.cpp:368,1
    - Dst: Json
      Src: /src/pdns/ext/json11/json11.cpp:368,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - msg
    argTypes:
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 369
      start: 367
    functionDepth: 0
    functionLinenumber: 367
    functionLinenumberEnd: 369
    functionName: json11::fail
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 78
    functionsReached:
    - json11::fail
    - std::move
    - Json
    linkageType: ''
    returnType: Json
    signature: Json fail(string &&msg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/ext/json11/json11.cpp:374,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - msg
    - err_ret
    argTypes:
    - string
    - T
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 377
      start: 372
    functionDepth: 0
    functionLinenumber: 372
    functionLinenumberEnd: 377
    functionName: json11::fail
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 78
    functionsReached:
    - std::move
    linkageType: ''
    returnType: T
    signature: T fail(string &&msg, const T err_ret)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 386
      start: 383
    functionDepth: 0
    functionLinenumber: 383
    functionLinenumberEnd: 386
    functionName: json11::consume_whitespace
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 11
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void consume_whitespace()
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/ext/json11/json11.cpp:396,1
    - Dst: json11::fail
      Src: /src/pdns/ext/json11/json11.cpp:397,1
    - Dst: size
      Src: /src/pdns/ext/json11/json11.cpp:401,1
    - Dst: size
      Src: /src/pdns/ext/json11/json11.cpp:408,1
    - Dst: json11::fail
      Src: /src/pdns/ext/json11/json11.cpp:409,1
    - Dst: size
      Src: /src/pdns/ext/json11/json11.cpp:413,1
    - Dst: json11::fail
      Src: /src/pdns/ext/json11/json11.cpp:414,1
    - Dst: json11::fail
      Src: /src/pdns/ext/json11/json11.cpp:421,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 27
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 424
      start: 392
    functionDepth: 0
    functionLinenumber: 392
    functionLinenumberEnd: 424
    functionName: json11::consume_comment
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 11
    functionsReached:
    - json11::fail
    - size
    linkageType: ''
    returnType: bool
    signature: bool consume_comment()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: json11::consume_whitespace
      Src: /src/pdns/ext/json11/json11.cpp:431,1
    - Dst: json11::consume_comment
      Src: /src/pdns/ext/json11/json11.cpp:435,1
    - Dst: json11::consume_whitespace
      Src: /src/pdns/ext/json11/json11.cpp:439,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 443
      start: 430
    functionDepth: 0
    functionLinenumber: 430
    functionLinenumberEnd: 443
    functionName: json11::consume_garbage
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 11
    functionsReached:
    - json11::consume_comment
    - json11::consume_whitespace
    linkageType: ''
    returnType: void
    signature: void consume_garbage()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: json11::consume_garbage
      Src: /src/pdns/ext/json11/json11.cpp:451,1
    - Dst: size
      Src: /src/pdns/ext/json11/json11.cpp:455,1
    - Dst: json11::fail
      Src: /src/pdns/ext/json11/json11.cpp:456,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 460
      start: 450
    functionDepth: 0
    functionLinenumber: 450
    functionLinenumberEnd: 460
    functionName: json11::get_next_token
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 11
    functionsReached:
    - json11::fail
    - size
    - json11::consume_garbage
    linkageType: ''
    returnType: char
    signature: char get_next_token()
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<char>
      Src: /src/pdns/ext/json11/json11.cpp:471,1
    - Dst: static_cast<char>
      Src: /src/pdns/ext/json11/json11.cpp:473,1
    - Dst: static_cast<char>
      Src: /src/pdns/ext/json11/json11.cpp:474,1
    - Dst: static_cast<char>
      Src: /src/pdns/ext/json11/json11.cpp:476,1
    - Dst: static_cast<char>
      Src: /src/pdns/ext/json11/json11.cpp:477,1
    - Dst: static_cast<char>
      Src: /src/pdns/ext/json11/json11.cpp:478,1
    - Dst: static_cast<char>
      Src: /src/pdns/ext/json11/json11.cpp:480,1
    - Dst: static_cast<char>
      Src: /src/pdns/ext/json11/json11.cpp:481,1
    - Dst: static_cast<char>
      Src: /src/pdns/ext/json11/json11.cpp:482,1
    - Dst: static_cast<char>
      Src: /src/pdns/ext/json11/json11.cpp:483,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 2
    argNames:
    - pt
    - ' out'
    argTypes:
    - long
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 485
      start: 466
    functionDepth: 0
    functionLinenumber: 466
    functionLinenumberEnd: 485
    functionName: json11::encode_utf8
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 11
    functionsReached:
    - static_cast<char>
    linkageType: ''
    returnType: void
    signature: void encode_utf8(long pt, string & out)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/ext/json11/json11.cpp:495,1
    - Dst: json11::fail
      Src: /src/pdns/ext/json11/json11.cpp:496,1
    - Dst: json11::encode_utf8
      Src: /src/pdns/ext/json11/json11.cpp:501,1
    - Dst: json11::in_range
      Src: /src/pdns/ext/json11/json11.cpp:505,1
    - Dst: json11::fail
      Src: /src/pdns/ext/json11/json11.cpp:506,1
    - Dst: json11::esc
      Src: /src/pdns/ext/json11/json11.cpp:506,1
    - Dst: json11::encode_utf8
      Src: /src/pdns/ext/json11/json11.cpp:510,1
    - Dst: size
      Src: /src/pdns/ext/json11/json11.cpp:517,1
    - Dst: json11::fail
      Src: /src/pdns/ext/json11/json11.cpp:518,1
    - Dst: substr
      Src: /src/pdns/ext/json11/json11.cpp:524,1
    - Dst: string::length
      Src: /src/pdns/ext/json11/json11.cpp:528,1
    - Dst: json11::fail
      Src: /src/pdns/ext/json11/json11.cpp:529,1
    - Dst: json11::in_range
      Src: /src/pdns/ext/json11/json11.cpp:532,1
    - Dst: json11::in_range
      Src: /src/pdns/ext/json11/json11.cpp:532,1
    - Dst: json11::in_range
      Src: /src/pdns/ext/json11/json11.cpp:533,1
    - Dst: json11::fail
      Src: /src/pdns/ext/json11/json11.cpp:534,1
    - Dst: strtol
      Src: /src/pdns/ext/json11/json11.cpp:537,1
    - Dst: string::data
      Src: /src/pdns/ext/json11/json11.cpp:537,1
    - Dst: json11::in_range
      Src: /src/pdns/ext/json11/json11.cpp:543,1
    - Dst: json11::in_range
      Src: /src/pdns/ext/json11/json11.cpp:544,1
    - Dst: json11::encode_utf8
      Src: /src/pdns/ext/json11/json11.cpp:547,1
    - Dst: json11::encode_utf8
      Src: /src/pdns/ext/json11/json11.cpp:551,1
    - Dst: json11::encode_utf8
      Src: /src/pdns/ext/json11/json11.cpp:559,1
    - Dst: json11::fail
      Src: /src/pdns/ext/json11/json11.cpp:575,1
    - Dst: json11::esc
      Src: /src/pdns/ext/json11/json11.cpp:575,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 60
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 578
      start: 491
    functionDepth: 0
    functionLinenumber: 491
    functionLinenumberEnd: 578
    functionName: json11::parse_string
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 11
    functionsReached:
    - string::data
    - strtol
    - size
    - substr
    - json11::encode_utf8
    - json11::in_range
    - json11::fail
    - json11::esc
    - string::length
    linkageType: ''
    returnType: string
    signature: string parse_string()
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: json11::in_range
      Src: /src/pdns/ext/json11/json11.cpp:593,1
    - Dst: json11::fail
      Src: /src/pdns/ext/json11/json11.cpp:594,1
    - Dst: json11::in_range
      Src: /src/pdns/ext/json11/json11.cpp:595,1
    - Dst: json11::in_range
      Src: /src/pdns/ext/json11/json11.cpp:597,1
    - Dst: json11::fail
      Src: /src/pdns/ext/json11/json11.cpp:600,1
    - Dst: json11::esc
      Src: /src/pdns/ext/json11/json11.cpp:600,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/ext/json11/json11.cpp:604,1
    - Dst: std::atoi
      Src: /src/pdns/ext/json11/json11.cpp:605,1
    - Dst: c_str
      Src: /src/pdns/ext/json11/json11.cpp:605,1
    - Dst: json11::in_range
      Src: /src/pdns/ext/json11/json11.cpp:611,1
    - Dst: json11::fail
      Src: /src/pdns/ext/json11/json11.cpp:612,1
    - Dst: json11::in_range
      Src: /src/pdns/ext/json11/json11.cpp:614,1
    - Dst: json11::in_range
      Src: /src/pdns/ext/json11/json11.cpp:625,1
    - Dst: json11::fail
      Src: /src/pdns/ext/json11/json11.cpp:626,1
    - Dst: json11::in_range
      Src: /src/pdns/ext/json11/json11.cpp:628,1
    - Dst: std::strtod
      Src: /src/pdns/ext/json11/json11.cpp:632,1
    - Dst: c_str
      Src: /src/pdns/ext/json11/json11.cpp:632,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 35
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 633
      start: 584
    functionDepth: 0
    functionLinenumber: 584
    functionLinenumberEnd: 633
    functionName: json11::parse_number
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 11
    functionsReached:
    - static_cast<size_t>
    - c_str
    - json11::in_range
    - std::strtod
    - json11::fail
    - json11::esc
    - std::atoi
    linkageType: ''
    returnType: Json
    signature: Json parse_number()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/pdns/ext/json11/json11.cpp:641,1
    - Dst: compare
      Src: /src/pdns/ext/json11/json11.cpp:643,1
    - Dst: string::length
      Src: /src/pdns/ext/json11/json11.cpp:643,1
    - Dst: string::length
      Src: /src/pdns/ext/json11/json11.cpp:644,1
    - Dst: json11::fail
      Src: /src/pdns/ext/json11/json11.cpp:647,1
    - Dst: substr
      Src: /src/pdns/ext/json11/json11.cpp:647,1
    - Dst: string::length
      Src: /src/pdns/ext/json11/json11.cpp:647,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - expected
    - res
    argTypes:
    - string
    - Json
    assertStmts:
    - condition: (i != 0)
      pos:
        line_end: 640
        line_start: 640
        source_file: /src/pdns/ext/json11/json11.cpp
    constantsTouched: []
    func_position:
      end: 649
      start: 640
    functionDepth: 0
    functionLinenumber: 640
    functionLinenumberEnd: 649
    functionName: json11::expect
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 11
    functionsReached:
    - assert
    - compare
    - substr
    - json11::fail
    - string::length
    linkageType: ''
    returnType: Json
    signature: Json expect(const string &expected, Json res)
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: json11::fail
      Src: /src/pdns/ext/json11/json11.cpp:657,1
    - Dst: json11::get_next_token
      Src: /src/pdns/ext/json11/json11.cpp:660,1
    - Dst: Json
      Src: /src/pdns/ext/json11/json11.cpp:662,1
    - Dst: json11::parse_number
      Src: /src/pdns/ext/json11/json11.cpp:666,1
    - Dst: json11::expect
      Src: /src/pdns/ext/json11/json11.cpp:670,1
    - Dst: json11::expect
      Src: /src/pdns/ext/json11/json11.cpp:673,1
    - Dst: json11::expect
      Src: /src/pdns/ext/json11/json11.cpp:676,1
    - Dst: Json
      Src: /src/pdns/ext/json11/json11.cpp:676,1
    - Dst: json11::parse_string
      Src: /src/pdns/ext/json11/json11.cpp:679,1
    - Dst: json11::get_next_token
      Src: /src/pdns/ext/json11/json11.cpp:683,1
    - Dst: json11::fail
      Src: /src/pdns/ext/json11/json11.cpp:689,1
    - Dst: json11::esc
      Src: /src/pdns/ext/json11/json11.cpp:689,1
    - Dst: json11::parse_string
      Src: /src/pdns/ext/json11/json11.cpp:691,1
    - Dst: Json
      Src: /src/pdns/ext/json11/json11.cpp:693,1
    - Dst: json11::get_next_token
      Src: /src/pdns/ext/json11/json11.cpp:695,1
    - Dst: json11::fail
      Src: /src/pdns/ext/json11/json11.cpp:697,1
    - Dst: json11::esc
      Src: /src/pdns/ext/json11/json11.cpp:697,1
    - Dst: std::move
      Src: /src/pdns/ext/json11/json11.cpp:699,1
    - Dst: json11::parse_json
      Src: /src/pdns/ext/json11/json11.cpp:699,1
    - Dst: Json
      Src: /src/pdns/ext/json11/json11.cpp:701,1
    - Dst: json11::get_next_token
      Src: /src/pdns/ext/json11/json11.cpp:703,1
    - Dst: json11::fail
      Src: /src/pdns/ext/json11/json11.cpp:707,1
    - Dst: json11::esc
      Src: /src/pdns/ext/json11/json11.cpp:707,1
    - Dst: json11::get_next_token
      Src: /src/pdns/ext/json11/json11.cpp:709,1
    - Dst: json11::get_next_token
      Src: /src/pdns/ext/json11/json11.cpp:716,1
    - Dst: vector::push_back
      Src: /src/pdns/ext/json11/json11.cpp:722,1
    - Dst: json11::parse_json
      Src: /src/pdns/ext/json11/json11.cpp:722,1
    - Dst: Json
      Src: /src/pdns/ext/json11/json11.cpp:724,1
    - Dst: json11::get_next_token
      Src: /src/pdns/ext/json11/json11.cpp:726,1
    - Dst: json11::fail
      Src: /src/pdns/ext/json11/json11.cpp:730,1
    - Dst: json11::esc
      Src: /src/pdns/ext/json11/json11.cpp:730,1
    - Dst: json11::get_next_token
      Src: /src/pdns/ext/json11/json11.cpp:732,1
    - Dst: json11::fail
      Src: /src/pdns/ext/json11/json11.cpp:738,1
    - Dst: json11::esc
      Src: /src/pdns/ext/json11/json11.cpp:738,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 62
    argCount: 1
    argNames:
    - depth
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 739
      start: 655
    functionDepth: 0
    functionLinenumber: 655
    functionLinenumberEnd: 739
    functionName: json11::parse_json
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 12
    functionsReached:
    - std::move
    - json11::parse_number
    - vector::push_back
    - json11::expect
    - json11::get_next_token
    - json11::parse_json
    - json11::parse_string
    - json11::fail
    - json11::esc
    - Json
    linkageType: ''
    returnType: Json
    signature: Json parse_json(int depth)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: JsonParser::parse_json
      Src: /src/pdns/ext/json11/json11.cpp:745,1
    - Dst: JsonParser::consume_garbage
      Src: /src/pdns/ext/json11/json11.cpp:748,1
    - Dst: string::size
      Src: /src/pdns/ext/json11/json11.cpp:752,1
    - Dst: JsonParser::fail
      Src: /src/pdns/ext/json11/json11.cpp:753,1
    - Dst: esc
      Src: /src/pdns/ext/json11/json11.cpp:753,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 3
    argNames:
    - in
    - err
    - strategy
    argTypes:
    - string
    - string
    - JsonParse
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 757
      start: 743
    functionDepth: 0
    functionLinenumber: 743
    functionLinenumberEnd: 757
    functionName: json11::Json::parse
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 15
    functionsReached:
    - string::size
    - esc
    - JsonParser::consume_garbage
    - JsonParser::parse_json
    - JsonParser::fail
    linkageType: ''
    returnType: Json
    signature: Json Json::parse(const string &in, string &err, JsonParse strategy)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: string::size
      Src: /src/pdns/ext/json11/json11.cpp:767,1
    - Dst: vector::push_back
      Src: /src/pdns/ext/json11/json11.cpp:768,1
    - Dst: JsonParser::parse_json
      Src: /src/pdns/ext/json11/json11.cpp:768,1
    - Dst: JsonParser::consume_garbage
      Src: /src/pdns/ext/json11/json11.cpp:774,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 4
    argNames:
    - in
    - parser_stop_pos
    - err
    - strategy
    argTypes:
    - string
    - std::string::size_type
    - string
    - JsonParse
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 781
      start: 760
    functionDepth: 0
    functionLinenumber: 760
    functionLinenumberEnd: 781
    functionName: json11::Json::parse_multi
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 4
    functionsReached:
    - JsonParser::consume_garbage
    - JsonParser::parse_json
    - vector::push_back
    - string::size
    linkageType: ''
    returnType: vector<Json>
    signature: "vector<Json> Json::parse_multi(const string &in,\n                               std::string::size_type
      &parser_stop_pos,\n                               string &err,\n                               JsonParse
      strategy)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: json11::Json::is_object
      Src: /src/pdns/ext/json11/json11.cpp:788,1
    - Dst: json11::Json::dump
      Src: /src/pdns/ext/json11/json11.cpp:789,1
    - Dst: object_items
      Src: /src/pdns/ext/json11/json11.cpp:793,1
    - Dst: find
      Src: /src/pdns/ext/json11/json11.cpp:795,1
    - Dst: cend
      Src: /src/pdns/ext/json11/json11.cpp:796,1
    - Dst: auto::second::type
      Src: /src/pdns/ext/json11/json11.cpp:796,1
    - Dst: json11::Json::dump
      Src: /src/pdns/ext/json11/json11.cpp:797,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 2
    argNames:
    - ' types'
    - ' err'
    argTypes:
    - shape
    - string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 803
      start: 787
    functionDepth: 0
    functionLinenumber: 787
    functionLinenumberEnd: 803
    functionName: json11::Json::has_shape
    functionSourceFile: /src/pdns/ext/json11/json11.cpp
    functionUses: 0
    functionsReached:
    - auto::second::type
    - json11::Json::dump
    - cend
    - object_items
    - find
    - json11::Json::is_object
    linkageType: ''
    returnType: bool
    signature: bool Json::has_shape(const shape & types, string & err) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: to_json
      Src: /src/pdns/ext/json11/json11.hpp:106,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' t'
    argTypes:
    - T
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 106
    functionDepth: 0
    functionLinenumber: 106
    functionLinenumberEnd: 106
    functionName: json11::Json::Json
    functionSourceFile: /src/pdns/ext/json11/json11.hpp
    functionUses: 0
    functionsReached:
    - to_json
    linkageType: ''
    returnType: void
    signature: void Json(const T & t)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: object
      Src: /src/pdns/ext/json11/json11.hpp:113,1
    - Dst: begin
      Src: /src/pdns/ext/json11/json11.hpp:113,1
    - Dst: end
      Src: /src/pdns/ext/json11/json11.hpp:113,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' m'
    argTypes:
    - M
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 113
      start: 113
    functionDepth: 0
    functionLinenumber: 113
    functionLinenumberEnd: 113
    functionName: json11::Json::Json
    functionSourceFile: /src/pdns/ext/json11/json11.hpp
    functionUses: 0
    functionsReached:
    - object
    - end
    - begin
    linkageType: ''
    returnType: void
    signature: void Json(const M & m)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array
      Src: /src/pdns/ext/json11/json11.hpp:119,1
    - Dst: begin
      Src: /src/pdns/ext/json11/json11.hpp:119,1
    - Dst: end
      Src: /src/pdns/ext/json11/json11.hpp:119,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' v'
    argTypes:
    - V
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 119
      start: 119
    functionDepth: 0
    functionLinenumber: 119
    functionLinenumberEnd: 119
    functionName: json11::Json::Json
    functionSourceFile: /src/pdns/ext/json11/json11.hpp
    functionUses: 0
    functionsReached:
    - end
    - array
    - begin
    linkageType: ''
    returnType: void
    signature: void Json(const V & v)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 123
    functionDepth: 0
    functionLinenumber: 123
    functionLinenumberEnd: 123
    functionName: json11::Json::Json
    functionSourceFile: /src/pdns/ext/json11/json11.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Json(void *)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json11::Json::type
      Src: /src/pdns/ext/json11/json11.hpp:128,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 128
    functionDepth: 0
    functionLinenumber: 128
    functionLinenumberEnd: 128
    functionName: json11::Json::is_null
    functionSourceFile: /src/pdns/ext/json11/json11.hpp
    functionUses: 3
    functionsReached:
    - json11::Json::type
    linkageType: ''
    returnType: bool
    signature: bool is_null()   const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json11::Json::type
      Src: /src/pdns/ext/json11/json11.hpp:129,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 129
      start: 129
    functionDepth: 0
    functionLinenumber: 129
    functionLinenumberEnd: 129
    functionName: json11::Json::is_number
    functionSourceFile: /src/pdns/ext/json11/json11.hpp
    functionUses: 0
    functionsReached:
    - json11::Json::type
    linkageType: ''
    returnType: bool
    signature: bool is_number() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json11::Json::type
      Src: /src/pdns/ext/json11/json11.hpp:130,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 130
      start: 130
    functionDepth: 0
    functionLinenumber: 130
    functionLinenumberEnd: 130
    functionName: json11::Json::is_bool
    functionSourceFile: /src/pdns/ext/json11/json11.hpp
    functionUses: 0
    functionsReached:
    - json11::Json::type
    linkageType: ''
    returnType: bool
    signature: bool is_bool()   const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json11::Json::type
      Src: /src/pdns/ext/json11/json11.hpp:131,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 131
      start: 131
    functionDepth: 0
    functionLinenumber: 131
    functionLinenumberEnd: 131
    functionName: json11::Json::is_string
    functionSourceFile: /src/pdns/ext/json11/json11.hpp
    functionUses: 0
    functionsReached:
    - json11::Json::type
    linkageType: ''
    returnType: bool
    signature: bool is_string() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json11::Json::type
      Src: /src/pdns/ext/json11/json11.hpp:132,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 132
      start: 132
    functionDepth: 0
    functionLinenumber: 132
    functionLinenumberEnd: 132
    functionName: json11::Json::is_array
    functionSourceFile: /src/pdns/ext/json11/json11.hpp
    functionUses: 0
    functionsReached:
    - json11::Json::type
    linkageType: ''
    returnType: bool
    signature: bool is_array()  const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json11::Json::type
      Src: /src/pdns/ext/json11/json11.hpp:133,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 133
      start: 133
    functionDepth: 0
    functionLinenumber: 133
    functionLinenumberEnd: 133
    functionName: json11::Json::is_object
    functionSourceFile: /src/pdns/ext/json11/json11.hpp
    functionUses: 6
    functionsReached:
    - json11::Json::type
    linkageType: ''
    returnType: bool
    signature: bool is_object() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json11::Json::dump
      Src: /src/pdns/ext/json11/json11.hpp:159,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 161
      start: 157
    functionDepth: 0
    functionLinenumber: 157
    functionLinenumberEnd: 161
    functionName: json11::Json::dump
    functionSourceFile: /src/pdns/ext/json11/json11.hpp
    functionUses: 21
    functionsReached:
    - json11::Json::dump
    linkageType: ''
    returnType: std::string
    signature: std::string dump() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: json11::Json::parse
      Src: /src/pdns/ext/json11/json11.hpp:171,1
    - Dst: std::string
      Src: /src/pdns/ext/json11/json11.hpp:171,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - in
    - ' err'
    argTypes:
    - char*
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 176
      start: 167
    functionDepth: 0
    functionLinenumber: 167
    functionLinenumberEnd: 176
    functionName: json11::Json::parse
    functionSourceFile: /src/pdns/ext/json11/json11.hpp
    functionUses: 16
    functionsReached:
    - std::string
    - json11::Json::parse
    linkageType: ''
    returnType: Json
    signature: "Json parse(const char * in,\n                      std::string & err,\n
      \                     JsonParse strategy = JsonParse::STANDARD)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json11::Json::parse_multi
      Src: /src/pdns/ext/json11/json11.hpp:189,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' in'
    - ' err'
    argTypes:
    - std::string
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 190
      start: 184
    functionDepth: 0
    functionLinenumber: 184
    functionLinenumberEnd: 190
    functionName: json11::Json::parse_multi
    functionSourceFile: /src/pdns/ext/json11/json11.hpp
    functionUses: 5
    functionsReached:
    - json11::Json::parse_multi
    linkageType: ''
    returnType: std::vector<Json>
    signature: "std::vector<Json> parse_multi(\n        const std::string & in,\n
      \       std::string & err,\n        JsonParse strategy = JsonParse::STANDARD)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rhs
    argTypes:
    - Json
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 194
      start: 194
    functionDepth: 0
    functionLinenumber: 194
    functionLinenumberEnd: 194
    functionName: operator!= (const Json &rhs) const
    functionSourceFile: /src/pdns/ext/json11/json11.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool operator!= (const Json &rhs) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rhs
    argTypes:
    - Json
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 195
      start: 195
    functionDepth: 0
    functionLinenumber: 195
    functionLinenumberEnd: 195
    functionName: operator<= (const Json &rhs) const
    functionSourceFile: /src/pdns/ext/json11/json11.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool operator<= (const Json &rhs) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rhs
    argTypes:
    - Json
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 196
      start: 196
    functionDepth: 0
    functionLinenumber: 196
    functionLinenumberEnd: 196
    functionName: operator>  (const Json &rhs) const
    functionSourceFile: /src/pdns/ext/json11/json11.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool operator>  (const Json &rhs) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rhs
    argTypes:
    - Json
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 197
      start: 197
    functionDepth: 0
    functionLinenumber: 197
    functionLinenumberEnd: 197
    functionName: operator>= (const Json &rhs) const
    functionSourceFile: /src/pdns/ext/json11/json11.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool operator>= (const Json &rhs) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 229
      start: 229
    functionDepth: 0
    functionLinenumber: 229
    functionLinenumberEnd: 229
    functionName: ~JsonValue()
    functionSourceFile: /src/pdns/ext/json11/json11.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~JsonValue()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: to_json
      Src: /src/pdns/ext/json11/json11.hpp:106,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' t'
    argTypes:
    - T
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 106
    functionDepth: 0
    functionLinenumber: 106
    functionLinenumberEnd: 106
    functionName: json11::Json::Json
    functionSourceFile: /src/pdns/ext/json11/json11.hpp
    functionUses: 0
    functionsReached:
    - to_json
    linkageType: ''
    returnType: void
    signature: void Json(const T & t)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: object
      Src: /src/pdns/ext/json11/json11.hpp:113,1
    - Dst: begin
      Src: /src/pdns/ext/json11/json11.hpp:113,1
    - Dst: end
      Src: /src/pdns/ext/json11/json11.hpp:113,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' m'
    argTypes:
    - M
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 113
      start: 113
    functionDepth: 0
    functionLinenumber: 113
    functionLinenumberEnd: 113
    functionName: json11::Json::Json
    functionSourceFile: /src/pdns/ext/json11/json11.hpp
    functionUses: 0
    functionsReached:
    - object
    - end
    - begin
    linkageType: ''
    returnType: void
    signature: void Json(const M & m)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: array
      Src: /src/pdns/ext/json11/json11.hpp:119,1
    - Dst: begin
      Src: /src/pdns/ext/json11/json11.hpp:119,1
    - Dst: end
      Src: /src/pdns/ext/json11/json11.hpp:119,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' v'
    argTypes:
    - V
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 119
      start: 119
    functionDepth: 0
    functionLinenumber: 119
    functionLinenumberEnd: 119
    functionName: json11::Json::Json
    functionSourceFile: /src/pdns/ext/json11/json11.hpp
    functionUses: 0
    functionsReached:
    - end
    - array
    - begin
    linkageType: ''
    returnType: void
    signature: void Json(const V & v)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 123
    functionDepth: 0
    functionLinenumber: 123
    functionLinenumberEnd: 123
    functionName: json11::Json::Json
    functionSourceFile: /src/pdns/ext/json11/json11.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Json(void *)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json11::Json::type
      Src: /src/pdns/ext/json11/json11.hpp:128,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 128
    functionDepth: 0
    functionLinenumber: 128
    functionLinenumberEnd: 128
    functionName: json11::Json::is_null
    functionSourceFile: /src/pdns/ext/json11/json11.hpp
    functionUses: 3
    functionsReached:
    - json11::Json::type
    linkageType: ''
    returnType: bool
    signature: bool is_null()   const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json11::Json::type
      Src: /src/pdns/ext/json11/json11.hpp:129,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 129
      start: 129
    functionDepth: 0
    functionLinenumber: 129
    functionLinenumberEnd: 129
    functionName: json11::Json::is_number
    functionSourceFile: /src/pdns/ext/json11/json11.hpp
    functionUses: 0
    functionsReached:
    - json11::Json::type
    linkageType: ''
    returnType: bool
    signature: bool is_number() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json11::Json::type
      Src: /src/pdns/ext/json11/json11.hpp:130,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 130
      start: 130
    functionDepth: 0
    functionLinenumber: 130
    functionLinenumberEnd: 130
    functionName: json11::Json::is_bool
    functionSourceFile: /src/pdns/ext/json11/json11.hpp
    functionUses: 0
    functionsReached:
    - json11::Json::type
    linkageType: ''
    returnType: bool
    signature: bool is_bool()   const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json11::Json::type
      Src: /src/pdns/ext/json11/json11.hpp:131,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 131
      start: 131
    functionDepth: 0
    functionLinenumber: 131
    functionLinenumberEnd: 131
    functionName: json11::Json::is_string
    functionSourceFile: /src/pdns/ext/json11/json11.hpp
    functionUses: 0
    functionsReached:
    - json11::Json::type
    linkageType: ''
    returnType: bool
    signature: bool is_string() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json11::Json::type
      Src: /src/pdns/ext/json11/json11.hpp:132,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 132
      start: 132
    functionDepth: 0
    functionLinenumber: 132
    functionLinenumberEnd: 132
    functionName: json11::Json::is_array
    functionSourceFile: /src/pdns/ext/json11/json11.hpp
    functionUses: 0
    functionsReached:
    - json11::Json::type
    linkageType: ''
    returnType: bool
    signature: bool is_array()  const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json11::Json::type
      Src: /src/pdns/ext/json11/json11.hpp:133,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 133
      start: 133
    functionDepth: 0
    functionLinenumber: 133
    functionLinenumberEnd: 133
    functionName: json11::Json::is_object
    functionSourceFile: /src/pdns/ext/json11/json11.hpp
    functionUses: 6
    functionsReached:
    - json11::Json::type
    linkageType: ''
    returnType: bool
    signature: bool is_object() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json11::Json::dump
      Src: /src/pdns/ext/json11/json11.hpp:159,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 161
      start: 157
    functionDepth: 0
    functionLinenumber: 157
    functionLinenumberEnd: 161
    functionName: json11::Json::dump
    functionSourceFile: /src/pdns/ext/json11/json11.hpp
    functionUses: 22
    functionsReached:
    - json11::Json::dump
    linkageType: ''
    returnType: std::string
    signature: std::string dump() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: json11::Json::parse
      Src: /src/pdns/ext/json11/json11.hpp:171,1
    - Dst: std::string
      Src: /src/pdns/ext/json11/json11.hpp:171,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - in
    - ' err'
    argTypes:
    - char*
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 176
      start: 167
    functionDepth: 0
    functionLinenumber: 167
    functionLinenumberEnd: 176
    functionName: json11::Json::parse
    functionSourceFile: /src/pdns/ext/json11/json11.hpp
    functionUses: 17
    functionsReached:
    - std::string
    - json11::Json::parse
    linkageType: ''
    returnType: Json
    signature: "Json parse(const char * in,\n                      std::string & err,\n
      \                     JsonParse strategy = JsonParse::STANDARD)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json11::Json::parse_multi
      Src: /src/pdns/ext/json11/json11.hpp:189,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' in'
    - ' err'
    argTypes:
    - std::string
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 190
      start: 184
    functionDepth: 0
    functionLinenumber: 184
    functionLinenumberEnd: 190
    functionName: json11::Json::parse_multi
    functionSourceFile: /src/pdns/ext/json11/json11.hpp
    functionUses: 6
    functionsReached:
    - json11::Json::parse_multi
    linkageType: ''
    returnType: std::vector<Json>
    signature: "std::vector<Json> parse_multi(\n        const std::string & in,\n
      \       std::string & err,\n        JsonParse strategy = JsonParse::STANDARD)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rhs
    argTypes:
    - Json
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 194
      start: 194
    functionDepth: 0
    functionLinenumber: 194
    functionLinenumberEnd: 194
    functionName: operator!= (const Json &rhs) const
    functionSourceFile: /src/pdns/ext/json11/json11.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool operator!= (const Json &rhs) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rhs
    argTypes:
    - Json
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 195
      start: 195
    functionDepth: 0
    functionLinenumber: 195
    functionLinenumberEnd: 195
    functionName: operator<= (const Json &rhs) const
    functionSourceFile: /src/pdns/ext/json11/json11.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool operator<= (const Json &rhs) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rhs
    argTypes:
    - Json
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 196
      start: 196
    functionDepth: 0
    functionLinenumber: 196
    functionLinenumberEnd: 196
    functionName: operator>  (const Json &rhs) const
    functionSourceFile: /src/pdns/ext/json11/json11.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool operator>  (const Json &rhs) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rhs
    argTypes:
    - Json
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 197
      start: 197
    functionDepth: 0
    functionLinenumber: 197
    functionLinenumberEnd: 197
    functionName: operator>= (const Json &rhs) const
    functionSourceFile: /src/pdns/ext/json11/json11.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool operator>= (const Json &rhs) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 229
      start: 229
    functionDepth: 0
    functionLinenumber: 229
    functionLinenumberEnd: 229
    functionName: ~JsonValue()
    functionSourceFile: /src/pdns/ext/json11/json11.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~JsonValue()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - x
    - r
    argTypes:
    - uint32_t
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 35
    functionDepth: 0
    functionLinenumber: 35
    functionLinenumberEnd: 38
    functionName: rotl32
    functionSourceFile: /src/pdns/ext/probds/murmur3.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t rotl32 ( uint32_t x, uint8_t r )
  - 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: 41
      start: 40
    functionDepth: 0
    functionLinenumber: 40
    functionLinenumberEnd: 41
    functionName: ROTL32
    functionSourceFile: /src/pdns/ext/probds/murmur3.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ROTL32(x,y)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 42
    functionDepth: 0
    functionLinenumber: 42
    functionLinenumberEnd: 43
    functionName: BIG_CONSTANT
    functionSourceFile: /src/pdns/ext/probds/murmur3.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BIG_CONSTANT(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 47
    functionDepth: 0
    functionLinenumber: 47
    functionLinenumberEnd: 48
    functionName: BYTESWAP
    functionSourceFile: /src/pdns/ext/probds/murmur3.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BYTESWAP(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 53
    functionDepth: 0
    functionLinenumber: 53
    functionLinenumberEnd: 54
    functionName: BYTESWAP
    functionSourceFile: /src/pdns/ext/probds/murmur3.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BYTESWAP(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: BYTESWAP
    functionSourceFile: /src/pdns/ext/probds/murmur3.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BYTESWAP(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 64
    functionDepth: 0
    functionLinenumber: 64
    functionLinenumberEnd: 68
    functionName: BYTESWAP
    functionSourceFile: /src/pdns/ext/probds/murmur3.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BYTESWAP(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - p
    - ','
    - i
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 74
    functionDepth: 0
    functionLinenumber: 74
    functionLinenumberEnd: 75
    functionName: getblock
    functionSourceFile: /src/pdns/ext/probds/murmur3.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: getblock(p, i)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - h
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 26
      start: 17
    functionDepth: 0
    functionLinenumber: 17
    functionLinenumberEnd: 26
    functionName: fmix32
    functionSourceFile: /src/pdns/ext/probds/murmur3.cc
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t fmix32( uint32_t h )
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: getblock
      Src: /src/pdns/ext/probds/murmur3.cc:49,1
    - Dst: ROTL32
      Src: /src/pdns/ext/probds/murmur3.cc:52,1
    - Dst: ROTL32
      Src: /src/pdns/ext/probds/murmur3.cc:56,1
    - Dst: ROTL32
      Src: /src/pdns/ext/probds/murmur3.cc:74,1
    - Dst: fmix32
      Src: /src/pdns/ext/probds/murmur3.cc:83,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 26
    argCount: 4
    argNames:
    - key
    - len
    - seed
    - out
    argTypes:
    - void*
    - int
    - uint32_t
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 31
    functionDepth: 0
    functionLinenumber: 31
    functionLinenumberEnd: 86
    functionName: MurmurHash3_x86_32
    functionSourceFile: /src/pdns/ext/probds/murmur3.cc
    functionUses: 2
    functionsReached:
    - getblock
    - ROTL32
    - fmix32
    linkageType: ''
    returnType: void
    signature: void MurmurHash3_x86_32( const void * key, int len, uint32_t seed,
      void * out )
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: luaL_newstate
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:119,1
    - Dst: std::bad_alloc
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:124,1
    - Dst: lua_atpanic
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:127,1
    - Dst: lua_tostring
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:128,1
    - Dst: lua_pop
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:129,1
    - Dst: assert
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:130,1
    - Dst: exit
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:131,1
    - Dst: luaL_openlibs
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:136,1
    - Dst: writeGlobalEq
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:138,1
    - Dst: lua_pushliteral
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:139,1
    - Dst: lua_getglobal
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:140,1
    - Dst: lua_getfield
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:141,1
    - Dst: lua_remove
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:142,1
    - Dst: lua_settable
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:143,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 22
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (false && "lua_atpanic triggered")
      pos:
        line_end: 129
        line_start: 129
        source_file: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    constantsTouched: []
    func_position:
      end: 144
      start: 109
    functionDepth: 0
    functionLinenumber: 109
    functionLinenumberEnd: 144
    functionName: LuaContext
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 8
    functionsReached:
    - lua_settable
    - std::bad_alloc
    - lua_remove
    - luaL_newstate
    - writeGlobalEq
    - luaL_openlibs
    - lua_atpanic
    - assert
    - lua_tostring
    - lua_getglobal
    - lua_getfield
    - lua_pushliteral
    - exit
    - lua_pop
    linkageType: ''
    returnType: void
    signature: void LuaContext(bool openDefaultLibs = true)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lua_pushstring
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:149,1
    - Dst: lua_gettable
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:150,1
    - Dst: lua_isnil
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:152,1
    - Dst: lua_pop
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:153,1
    - Dst: lua_pushboolean
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:154,1
    - Dst: lua_insert
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:157,1
    - Dst: lua_gettop
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:157,1
    - Dst: callRaw
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:158,1
    - Dst: push
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:160,1
    - Dst: std::current_exception
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:160,1
    - Dst: luaError
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:161,1
    - Dst: lua_pushcfunction
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:164,1
    - Dst: lua_setglobal
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:165,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 166
      start: 146
    functionDepth: 0
    functionLinenumber: 146
    functionLinenumberEnd: 166
    functionName: writeGlobalEq
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 2
    functionsReached:
    - lua_insert
    - luaError
    - push
    - std::current_exception
    - lua_setglobal
    - lua_pushcfunction
    - lua_gettable
    - lua_isnil
    - lua_gettop
    - lua_pushboolean
    - lua_pushstring
    - callRaw
    - lua_pop
    linkageType: ''
    returnType: void
    signature: void writeGlobalEq()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: luaL_newstate
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:174,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - ' s'
    argTypes:
    - LuaContext
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 175
      start: 171
    functionDepth: 0
    functionLinenumber: 171
    functionLinenumberEnd: 175
    functionName: LuaContext
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 8
    functionsReached:
    - luaL_newstate
    linkageType: ''
    returnType: void
    signature: void LuaContext(LuaContext&& s)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::swap
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:182,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - ' s'
    argTypes:
    - LuaContext
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 184
      start: 180
    functionDepth: 0
    functionLinenumber: 180
    functionLinenumberEnd: 184
    functionName: '& operator=(LuaContext&& s) noexcept'
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 0
    functionsReached:
    - std::swap
    linkageType: ''
    returnType: LuaContext
    signature: LuaContext & operator=(LuaContext&& s) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 189
      start: 189
    functionDepth: 0
    functionLinenumber: 189
    functionLinenumberEnd: 189
    functionName: LuaContext
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 8
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void LuaContext(const LuaContext&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 194
      start: 194
    functionDepth: 0
    functionLinenumber: 194
    functionLinenumberEnd: 194
    functionName: '& operator=(const LuaContext&)'
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: LuaContext
    signature: LuaContext & operator=(const LuaContext&)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:201,1
    - Dst: lua_close
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:202,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (mState)
      pos:
        line_end: 200
        line_start: 200
        source_file: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    constantsTouched: []
    func_position:
      end: 203
      start: 199
    functionDepth: 0
    functionLinenumber: 199
    functionLinenumberEnd: 203
    functionName: ~LuaContext() noexcept
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 0
    functionsReached:
    - lua_close
    - assert
    linkageType: ''
    returnType: void
    signature: void ~LuaContext() noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' msg'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 214
      start: 211
    functionDepth: 0
    functionLinenumber: 211
    functionLinenumberEnd: 214
    functionName: ExecutionErrorException::ExecutionErrorException
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ExecutionErrorException(const std::string& msg)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' msg'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 226
      start: 223
    functionDepth: 0
    functionLinenumber: 223
    functionLinenumberEnd: 226
    functionName: SyntaxErrorException::SyntaxErrorException
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void SyntaxErrorException(const std::string& msg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: name
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:236,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - ' luaType_'
    - ' destination_'
    argTypes:
    - std::string
    - std::type_info
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 240
      start: 235
    functionDepth: 0
    functionLinenumber: 235
    functionLinenumberEnd: 240
    functionName: WrongTypeException::WrongTypeException
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 0
    functionsReached:
    - name
    linkageType: ''
    returnType: void
    signature: void WrongTypeException(const std::string& luaType_, const std::type_info&
      destination_)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 258
      start: 258
    functionDepth: 0
    functionLinenumber: 258
    functionLinenumberEnd: 258
    functionName: LuaObject
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void LuaObject()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<LuaContext::ValueInRegistry>
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:260,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - state
    argTypes:
    - lua_State*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 261
      start: 259
    functionDepth: 0
    functionLinenumber: 259
    functionLinenumberEnd: 261
    functionName: LuaObject
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 0
    functionsReached:
    - std::make_shared<LuaContext::ValueInRegistry>
    linkageType: ''
    returnType: void
    signature: void LuaObject(lua_State* state, int index=-1)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 269
      start: 269
    functionDepth: 0
    functionLinenumber: 269
    functionLinenumberEnd: 269
    functionName: ThreadID
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ThreadID()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:270,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 1
    argNames:
    - ' o'
    argTypes:
    - ThreadID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 270
      start: 270
    functionDepth: 0
    functionLinenumber: 270
    functionLinenumberEnd: 270
    functionName: ThreadID
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void ThreadID(ThreadID&& o)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::swap
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:271,1
    - Dst: std::swap
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:271,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ' o'
    argTypes:
    - ThreadID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 271
      start: 271
    functionDepth: 0
    functionLinenumber: 271
    functionLinenumberEnd: 271
    functionName: '& operator=(ThreadID&& o)'
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 0
    functionsReached:
    - std::swap
    linkageType: ''
    returnType: ThreadID
    signature: ThreadID & operator=(ThreadID&& o)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: load
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:294,1
    - Dst: call
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:295,1
    - Dst: std::move
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:295,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' code'
    argTypes:
    - std::istream
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 296
      start: 292
    functionDepth: 0
    functionLinenumber: 292
    functionLinenumberEnd: 296
    functionName: executeCode
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 40
    functionsReached:
    - call
    - load
    - std::move
    linkageType: ''
    returnType: void
    signature: void executeCode(std::istream& code)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: load
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:307,1
    - Dst: call
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:308,1
    - Dst: std::move
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:308,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' code'
    argTypes:
    - std::istream
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 309
      start: 304
    functionDepth: 0
    functionLinenumber: 304
    functionLinenumberEnd: 309
    functionName: executeCode
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 40
    functionsReached:
    - call
    - load
    - std::move
    linkageType: ''
    returnType: auto
    signature: "auto executeCode(std::istream& code)\n        -> TType"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: executeCode
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:317,1
    - Dst: c_str
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:317,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' code'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 318
      start: 315
    functionDepth: 0
    functionLinenumber: 315
    functionLinenumberEnd: 318
    functionName: executeCode
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 41
    functionsReached:
    - c_str
    - executeCode
    linkageType: ''
    returnType: void
    signature: void executeCode(const std::string& code)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: executeCode
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:329,1
    - Dst: c_str
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:329,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' code'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 330
      start: 326
    functionDepth: 0
    functionLinenumber: 326
    functionLinenumberEnd: 330
    functionName: executeCode
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 42
    functionsReached:
    - c_str
    - executeCode
    linkageType: ''
    returnType: auto
    signature: "auto executeCode(const std::string& code)\n        -> TType"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: load
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:338,1
    - Dst: call
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:339,1
    - Dst: std::move
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:339,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - code
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 340
      start: 336
    functionDepth: 0
    functionLinenumber: 336
    functionLinenumberEnd: 340
    functionName: executeCode
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 42
    functionsReached:
    - call
    - load
    - std::move
    linkageType: ''
    returnType: void
    signature: void executeCode(const char* code)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: load
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:351,1
    - Dst: call
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:352,1
    - Dst: std::move
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:352,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - code
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 353
      start: 348
    functionDepth: 0
    functionLinenumber: 348
    functionLinenumberEnd: 353
    functionName: executeCode
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 42
    functionsReached:
    - call
    - load
    - std::move
    linkageType: ''
    returnType: auto
    signature: "auto executeCode(const char* code)\n        -> TType"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: load
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:361,1
    - Dst: call
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:362,1
    - Dst: std::move
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:362,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' thread'
    - ' code'
    argTypes:
    - ThreadID
    - std::istream
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 363
      start: 359
    functionDepth: 0
    functionLinenumber: 359
    functionLinenumberEnd: 363
    functionName: executeCode
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 42
    functionsReached:
    - call
    - load
    - std::move
    linkageType: ''
    returnType: void
    signature: void executeCode(const ThreadID& thread, std::istream& code)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: load
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:374,1
    - Dst: call
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:375,1
    - Dst: std::move
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:375,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' thread'
    - ' code'
    argTypes:
    - ThreadID
    - std::istream
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 376
      start: 371
    functionDepth: 0
    functionLinenumber: 371
    functionLinenumberEnd: 376
    functionName: executeCode
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 42
    functionsReached:
    - call
    - load
    - std::move
    linkageType: ''
    returnType: auto
    signature: "auto executeCode(const ThreadID& thread, std::istream& code)\n        ->
      TType"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: executeCode
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:384,1
    - Dst: c_str
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:384,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' thread'
    - ' code'
    argTypes:
    - ThreadID
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 385
      start: 382
    functionDepth: 0
    functionLinenumber: 382
    functionLinenumberEnd: 385
    functionName: executeCode
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 43
    functionsReached:
    - c_str
    - executeCode
    linkageType: ''
    returnType: void
    signature: void executeCode(const ThreadID& thread, const std::string& code)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: executeCode
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:396,1
    - Dst: c_str
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:396,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' thread'
    - ' code'
    argTypes:
    - ThreadID
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 397
      start: 393
    functionDepth: 0
    functionLinenumber: 393
    functionLinenumberEnd: 397
    functionName: executeCode
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 44
    functionsReached:
    - c_str
    - executeCode
    linkageType: ''
    returnType: auto
    signature: "auto executeCode(const ThreadID& thread, const std::string& code)\n
      \       -> TType"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: load
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:405,1
    - Dst: call
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:406,1
    - Dst: std::move
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:406,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' thread'
    - code
    argTypes:
    - ThreadID
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 407
      start: 403
    functionDepth: 0
    functionLinenumber: 403
    functionLinenumberEnd: 407
    functionName: executeCode
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 44
    functionsReached:
    - call
    - load
    - std::move
    linkageType: ''
    returnType: void
    signature: void executeCode(const ThreadID& thread, const char* code)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: load
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:418,1
    - Dst: call
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:419,1
    - Dst: std::move
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:419,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' thread'
    - code
    argTypes:
    - ThreadID
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 420
      start: 415
    functionDepth: 0
    functionLinenumber: 415
    functionLinenumberEnd: 420
    functionName: executeCode
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 44
    functionsReached:
    - call
    - load
    - std::move
    linkageType: ''
    returnType: auto
    signature: "auto executeCode(const ThreadID& thread, const char* code)\n        ->
      TType"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: registerFunctionImpl
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:430,1
    - Dst: std::mem_fn
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:430,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' name'
    - pointer
    argTypes:
    - std::string
    - TPointerToMemberFunction
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 431
      start: 427
    functionDepth: 0
    functionLinenumber: 427
    functionLinenumberEnd: 431
    functionName: registerFunction
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 13
    functionsReached:
    - std::mem_fn
    - registerFunctionImpl
    linkageType: ''
    returnType: auto
    signature: "auto registerFunction(const std::string& name, TPointerToMemberFunction
      pointer)\n        -> typename std::enable_if<std::is_member_function_pointer<TPointerToMemberFunction>::value>::type"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: registerFunctionImpl
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:443,1
    - Dst: std::move
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:443,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' functionName'
    - fn
    argTypes:
    - std::string
    - TType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 444
      start: 440
    functionDepth: 0
    functionLinenumber: 440
    functionLinenumberEnd: 444
    functionName: registerFunction
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 13
    functionsReached:
    - std::move
    - registerFunctionImpl
    linkageType: ''
    returnType: void
    signature: void registerFunction(const std::string& functionName, TType fn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: registerFunctionImpl
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:457,1
    - Dst: std::move
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:457,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' functionName'
    - fn
    argTypes:
    - std::string
    - TType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 458
      start: 454
    functionDepth: 0
    functionLinenumber: 454
    functionLinenumberEnd: 458
    functionName: registerFunction
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 13
    functionsReached:
    - std::move
    - registerFunctionImpl
    linkageType: ''
    returnType: void
    signature: void registerFunction(const std::string& functionName, TType fn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: registerFunctionImpl
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:468,1
    - Dst: std::mem_fn
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:468,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - pointer
    argTypes:
    - TPointerToMemberFunction
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 469
      start: 465
    functionDepth: 0
    functionLinenumber: 465
    functionLinenumberEnd: 469
    functionName: registerEqFunction
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 3
    functionsReached:
    - std::mem_fn
    - registerFunctionImpl
    linkageType: ''
    returnType: auto
    signature: "auto registerEqFunction(TPointerToMemberFunction pointer)\n        ->
      typename std::enable_if<std::is_member_function_pointer<TPointerToMemberFunction>::value>::type"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: registerFunctionImpl
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:475,1
    - Dst: std::move
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:475,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - fn
    argTypes:
    - TType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 476
      start: 472
    functionDepth: 0
    functionLinenumber: 472
    functionLinenumberEnd: 476
    functionName: registerEqFunction
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 3
    functionsReached:
    - std::move
    - registerFunctionImpl
    linkageType: ''
    returnType: void
    signature: void registerEqFunction(TType fn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: registerFunctionImpl
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:482,1
    - Dst: std::move
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:482,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - fn
    argTypes:
    - TType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 483
      start: 479
    functionDepth: 0
    functionLinenumber: 479
    functionLinenumberEnd: 483
    functionName: registerEqFunction
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 3
    functionsReached:
    - std::move
    - registerFunctionImpl
    linkageType: ''
    returnType: void
    signature: void registerEqFunction(TType fn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: registerFunctionImpl
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:493,1
    - Dst: std::mem_fn
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:493,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - pointer
    argTypes:
    - TPointerToMemberFunction
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 494
      start: 490
    functionDepth: 0
    functionLinenumber: 490
    functionLinenumberEnd: 494
    functionName: registerToStringFunction
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 3
    functionsReached:
    - std::mem_fn
    - registerFunctionImpl
    linkageType: ''
    returnType: auto
    signature: "auto registerToStringFunction(TPointerToMemberFunction pointer)\n
      \       -> typename std::enable_if<std::is_member_function_pointer<TPointerToMemberFunction>::value>::type"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: registerFunctionImpl
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:500,1
    - Dst: std::move
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:500,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - fn
    argTypes:
    - TType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 501
      start: 497
    functionDepth: 0
    functionLinenumber: 497
    functionLinenumberEnd: 501
    functionName: registerToStringFunction
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 3
    functionsReached:
    - std::move
    - registerFunctionImpl
    linkageType: ''
    returnType: void
    signature: void registerToStringFunction(TType fn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: registerFunctionImpl
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:507,1
    - Dst: std::move
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:507,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - fn
    argTypes:
    - TType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 508
      start: 504
    functionDepth: 0
    functionLinenumber: 504
    functionLinenumberEnd: 508
    functionName: registerToStringFunction
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 3
    functionsReached:
    - std::move
    - registerFunctionImpl
    linkageType: ''
    returnType: void
    signature: void registerToStringFunction(TType fn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lua_pushlightuserdata
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:517,1
    - Dst: const_cast<std::type_info*>
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:517,1
    - Dst: typeid
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:517,1
    - Dst: lua_pushnil
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:518,1
    - Dst: lua_settable
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:519,1
    - Dst: checkTypeRegistration
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:520,1
    - Dst: typeid
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:520,1
    - Dst: lua_pushnil
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:523,1
    - Dst: lua_settable
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:524,1
    - Dst: checkTypeRegistration
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:525,1
    - Dst: typeid
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:525,1
    - Dst: lua_pushlightuserdata
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:527,1
    - Dst: const_cast<std::type_info*>
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:527,1
    - Dst: typeid
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:527,1
    - Dst: lua_pushnil
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:528,1
    - Dst: lua_settable
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:529,1
    - Dst: checkTypeRegistration
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:530,1
    - Dst: typeid
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:530,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 531
      start: 515
    functionDepth: 0
    functionLinenumber: 515
    functionLinenumberEnd: 531
    functionName: unregisterFunction
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 0
    functionsReached:
    - const_cast<std::type_info*>
    - typeid
    - checkTypeRegistration
    - lua_pushlightuserdata
    - lua_pushnil
    - lua_settable
    linkageType: ''
    returnType: void
    signature: void unregisterFunction(const std::string& /*functionName*/)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TVarType
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:543,1
    - Dst: registerMember
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:543,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - ' name'
    - TObject::*member
    argTypes:
    - std::string
    - TVarType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 544
      start: 538
    functionDepth: 0
    functionLinenumber: 538
    functionLinenumberEnd: 544
    functionName: registerMember
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 11
    functionsReached:
    - registerMember
    - TVarType
    linkageType: ''
    returnType: void
    signature: void registerMember(const std::string& name, TVarType TObject::*member)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: registerMemberImpl
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:558,1
    - Dst: std::move
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:558,1
    - Dst: std::move
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:558,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' name'
    - readFunction
    - writeFunction_
    argTypes:
    - std::string
    - TReadFunction
    - TWriteFunction
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 559
      start: 556
    functionDepth: 0
    functionLinenumber: 556
    functionLinenumberEnd: 559
    functionName: registerMember
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 11
    functionsReached:
    - std::move
    - registerMemberImpl
    linkageType: ''
    returnType: void
    signature: void registerMember(const std::string& name, TReadFunction readFunction,
      TWriteFunction writeFunction_)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: registerMemberImpl
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:573,1
    - Dst: std::move
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:573,1
    - Dst: std::move
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:573,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' name'
    - readFunction
    - writeFunction_
    argTypes:
    - std::string
    - TReadFunction
    - TWriteFunction
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 574
      start: 570
    functionDepth: 0
    functionLinenumber: 570
    functionLinenumberEnd: 574
    functionName: registerMember
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 11
    functionsReached:
    - std::move
    - registerMemberImpl
    linkageType: ''
    returnType: void
    signature: void registerMember(const std::string& name, TReadFunction readFunction,
      TWriteFunction writeFunction_)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: registerMemberImpl
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:587,1
    - Dst: std::move
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:587,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' name'
    - readFunction
    argTypes:
    - std::string
    - TReadFunction
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 588
      start: 585
    functionDepth: 0
    functionLinenumber: 585
    functionLinenumberEnd: 588
    functionName: registerMember
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 11
    functionsReached:
    - std::move
    - registerMemberImpl
    linkageType: ''
    returnType: void
    signature: void registerMember(const std::string& name, TReadFunction readFunction)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: registerMemberImpl
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:601,1
    - Dst: std::move
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:601,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' name'
    - readFunction
    argTypes:
    - std::string
    - TReadFunction
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 602
      start: 598
    functionDepth: 0
    functionLinenumber: 598
    functionLinenumberEnd: 602
    functionName: registerMember
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 11
    functionsReached:
    - std::move
    - registerMemberImpl
    linkageType: ''
    returnType: void
    signature: void registerMember(const std::string& name, TReadFunction readFunction)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: registerMemberImpl
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:615,1
    - Dst: std::move
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:615,1
    - Dst: std::move
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:615,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - readFunction
    - writeFunction_
    argTypes:
    - TReadFunction
    - TWriteFunction
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 616
      start: 613
    functionDepth: 0
    functionLinenumber: 613
    functionLinenumberEnd: 616
    functionName: registerMember
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 11
    functionsReached:
    - std::move
    - registerMemberImpl
    linkageType: ''
    returnType: void
    signature: void registerMember(TReadFunction readFunction, TWriteFunction writeFunction_)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: registerMemberImpl
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:629,1
    - Dst: std::move
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:629,1
    - Dst: std::move
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:629,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - readFunction
    - writeFunction_
    argTypes:
    - TReadFunction
    - TWriteFunction
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 630
      start: 626
    functionDepth: 0
    functionLinenumber: 626
    functionLinenumberEnd: 630
    functionName: registerMember
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 11
    functionsReached:
    - std::move
    - registerMemberImpl
    linkageType: ''
    returnType: void
    signature: void registerMember(TReadFunction readFunction, TWriteFunction writeFunction_)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: registerMemberImpl
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:642,1
    - Dst: std::move
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:642,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - readFunction
    argTypes:
    - TReadFunction
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 643
      start: 640
    functionDepth: 0
    functionLinenumber: 640
    functionLinenumberEnd: 643
    functionName: registerMember
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 11
    functionsReached:
    - std::move
    - registerMemberImpl
    linkageType: ''
    returnType: void
    signature: void registerMember(TReadFunction readFunction)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: registerMemberImpl
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:655,1
    - Dst: std::move
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:655,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - readFunction
    argTypes:
    - TReadFunction
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 656
      start: 652
    functionDepth: 0
    functionLinenumber: 652
    functionLinenumberEnd: 656
    functionName: registerMember
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 11
    functionsReached:
    - std::move
    - registerMemberImpl
    linkageType: ''
    returnType: void
    signature: void registerMember(TReadFunction readFunction)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lua_newthread
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:669,1
    - Dst: std::unique_ptr<ValueInRegistry>
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:670,1
    - Dst: ValueInRegistry::ValueInRegistry
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:670,1
    - Dst: lua_pop
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:671,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 674
      start: 664
    functionDepth: 0
    functionLinenumber: 664
    functionLinenumberEnd: 674
    functionName: createThread
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 0
    functionsReached:
    - std::unique_ptr<ValueInRegistry>
    - lua_newthread
    - ValueInRegistry::ValueInRegistry
    - lua_pop
    linkageType: ''
    returnType: auto
    signature: "auto createThread()\n        -> ThreadID"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: threadInRegistry::reset
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:682,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' id'
    argTypes:
    - ThreadID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 683
      start: 680
    functionDepth: 0
    functionLinenumber: 680
    functionLinenumberEnd: 683
    functionName: destroyThread
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 0
    functionsReached:
    - threadInRegistry::reset
    linkageType: ''
    returnType: void
    signature: void destroyThread(ThreadID& id)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lua_getglobal
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:704,1
    - Dst: c_str
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:704,1
    - Dst: lookIntoStackTop
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:705,1
    - Dst: std::forward<TTypes>
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:705,1
    - Dst: readTopAndPop
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:706,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ' name'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 707
      start: 702
    functionDepth: 0
    functionLinenumber: 702
    functionLinenumberEnd: 707
    functionName: readVariable
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 12
    functionsReached:
    - lookIntoStackTop
    - lua_getglobal
    - c_str
    - readTopAndPop
    - std::forward<TTypes>
    linkageType: ''
    returnType: TType
    signature: TType readVariable(const std::string& name, TTypes&&... elements) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lua_getglobal
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:715,1
    - Dst: lookIntoStackTop
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:716,1
    - Dst: std::forward<TTypes>
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:716,1
    - Dst: readTopAndPop
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:717,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 718
      start: 713
    functionDepth: 0
    functionLinenumber: 713
    functionLinenumberEnd: 718
    functionName: readVariable
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 12
    functionsReached:
    - lua_getglobal
    - readTopAndPop
    - lookIntoStackTop
    - std::forward<TTypes>
    linkageType: ''
    returnType: TType
    signature: TType readVariable(const char* name, TTypes&&... elements) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lua_getglobal
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:726,1
    - Dst: c_str
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:726,1
    - Dst: lookIntoStackTop
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:727,1
    - Dst: std::forward<TTypes>
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:727,1
    - Dst: readTopAndPop
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:728,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - ' thread'
    - ' name'
    argTypes:
    - ThreadID
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 729
      start: 724
    functionDepth: 0
    functionLinenumber: 724
    functionLinenumberEnd: 729
    functionName: readVariable
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 12
    functionsReached:
    - lookIntoStackTop
    - lua_getglobal
    - c_str
    - readTopAndPop
    - std::forward<TTypes>
    linkageType: ''
    returnType: TType
    signature: TType readVariable(const ThreadID& thread, const std::string& name,
      TTypes&&... elements) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lua_getglobal
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:737,1
    - Dst: lookIntoStackTop
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:738,1
    - Dst: std::forward<TTypes>
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:738,1
    - Dst: readTopAndPop
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:739,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - ' thread'
    - name
    argTypes:
    - ThreadID
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 740
      start: 735
    functionDepth: 0
    functionLinenumber: 735
    functionLinenumberEnd: 740
    functionName: readVariable
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 12
    functionsReached:
    - lua_getglobal
    - readTopAndPop
    - lookIntoStackTop
    - std::forward<TTypes>
    linkageType: ''
    returnType: TType
    signature: TType readVariable(const ThreadID& thread, const char* name, TTypes&&...
      elements) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: setTable
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:765,1
    - Dst: std::forward<TData>
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:765,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 766
      start: 759
    functionDepth: 0
    functionLinenumber: 759
    functionLinenumberEnd: 766
    functionName: writeVariable
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 10
    functionsReached:
    - std::forward<TData>
    - setTable
    linkageType: ''
    returnType: void
    signature: void writeVariable(TData&&... data) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: setTable
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:776,1
    - Dst: std::forward<TData>
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:776,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 777
      start: 773
    functionDepth: 0
    functionLinenumber: 773
    functionLinenumberEnd: 777
    functionName: writeFunction
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 43
    functionsReached:
    - std::forward<TData>
    - setTable
    linkageType: ''
    returnType: void
    signature: void writeFunction(TData&&... data) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: writeFunction
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:791,1
    - Dst: std::forward<TData>
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:791,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 792
      start: 784
    functionDepth: 0
    functionLinenumber: 784
    functionLinenumberEnd: 792
    functionName: writeFunction
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 44
    functionsReached:
    - std::forward<TData>
    - writeFunction
    linkageType: ''
    returnType: void
    signature: void writeFunction(TData&&... data) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - state_
    argTypes:
    - lua_State*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 807
      start: 807
    functionDepth: 0
    functionLinenumber: 807
    functionLinenumberEnd: 807
    functionName: PushedObject
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void PushedObject(lua_State* state_, int num_ = 1)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:808,1
    - Dst: lua_gettop
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:808,1
    - Dst: lua_pop
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:808,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (lua_gettop(state) >= num)
      pos:
        line_end: 807
        line_start: 807
        source_file: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    constantsTouched: []
    func_position:
      end: 808
      start: 808
    functionDepth: 0
    functionLinenumber: 808
    functionLinenumberEnd: 808
    functionName: ~PushedObject()
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 0
    functionsReached:
    - lua_pop
    - assert
    - lua_gettop
    linkageType: ''
    returnType: void
    signature: void ~PushedObject()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 810
      start: 810
    functionDepth: 0
    functionLinenumber: 810
    functionLinenumberEnd: 810
    functionName: '& operator=(const PushedObject&)'
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: PushedObject
    signature: PushedObject & operator=(const PushedObject&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 811
      start: 811
    functionDepth: 0
    functionLinenumber: 811
    functionLinenumberEnd: 811
    functionName: PushedObject
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void PushedObject(const PushedObject&)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::swap
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:812,1
    - Dst: std::swap
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:812,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ' other'
    argTypes:
    - PushedObject
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 812
      start: 812
    functionDepth: 0
    functionLinenumber: 812
    functionLinenumberEnd: 812
    functionName: '& operator=(PushedObject&& other)'
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 0
    functionsReached:
    - std::swap
    linkageType: ''
    returnType: PushedObject
    signature: PushedObject & operator=(PushedObject&& other)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - ' other'
    argTypes:
    - PushedObject
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 813
      start: 813
    functionDepth: 0
    functionLinenumber: 813
    functionLinenumberEnd: 813
    functionName: PushedObject
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void PushedObject(PushedObject&& other)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - ' other'
    argTypes:
    - PushedObject
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 815
      start: 815
    functionDepth: 0
    functionLinenumber: 815
    functionLinenumberEnd: 815
    functionName: operator+(PushedObject&& other) &&
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: PushedObject
    signature: PushedObject operator+(PushedObject&& other) &&
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:816,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ' other'
    argTypes:
    - PushedObject
    assertStmts:
    - condition: (state == other.state)
      pos:
        line_end: 815
        line_start: 815
        source_file: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    constantsTouched: []
    func_position:
      end: 816
      start: 816
    functionDepth: 0
    functionLinenumber: 816
    functionLinenumberEnd: 816
    functionName: operator+=(PushedObject&& other)
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 0
    functionsReached:
    - assert
    linkageType: ''
    returnType: void
    signature: void operator+=(PushedObject&& other)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 818
      start: 818
    functionDepth: 0
    functionLinenumber: 818
    functionLinenumberEnd: 818
    functionName: getState
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 12
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: auto getState() const -> lua_State*
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 819
      start: 819
    functionDepth: 0
    functionLinenumber: 819
    functionLinenumberEnd: 819
    functionName: getNum
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: auto getNum() const -> int
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 821
      start: 821
    functionDepth: 0
    functionLinenumber: 821
    functionLinenumberEnd: 821
    functionName: release
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 98
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int release()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lua_pop
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:822,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 822
      start: 822
    functionDepth: 0
    functionLinenumber: 822
    functionLinenumberEnd: 822
    functionName: pop
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 33
    functionsReached:
    - lua_pop
    linkageType: ''
    returnType: void
    signature: void pop()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:823,1
    - Dst: lua_pop
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:823,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - n
    argTypes:
    - int
    assertStmts:
    - condition: (num >= n)
      pos:
        line_end: 822
        line_start: 822
        source_file: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    constantsTouched: []
    func_position:
      end: 823
      start: 823
    functionDepth: 0
    functionLinenumber: 823
    functionLinenumberEnd: 823
    functionName: pop
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 34
    functionsReached:
    - assert
    - lua_pop
    linkageType: ''
    returnType: void
    signature: void pop(int n)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: push
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:846,1
    - Dst: lua_gettable
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:847,1
    - Dst: lua_remove
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:848,1
    - Dst: auto::release
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:849,1
    - Dst: lookIntoStackTop
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:851,1
    - Dst: std::forward<OffsetTypeOthers>
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:851,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 5
    argCount: 2
    argNames:
    - state
    - ' offset1'
    argTypes:
    - lua_State*
    - OffsetType1
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 852
      start: 844
    functionDepth: 0
    functionLinenumber: 844
    functionLinenumberEnd: 852
    functionName: lookIntoStackTop
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 11
    functionsReached:
    - lookIntoStackTop
    - lua_remove
    - push
    - lua_gettable
    - std::forward<OffsetTypeOthers>
    - auto::release
    linkageType: ''
    returnType: void
    signature: void lookIntoStackTop(lua_State* state, OffsetType1&& offset1, OffsetTypeOthers&&...
      offsetOthers)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lua_getmetatable
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:856,1
    - Dst: lua_remove
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:857,1
    - Dst: lookIntoStackTop
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:859,1
    - Dst: std::forward<OffsetTypeOthers>
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:859,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - state
    argTypes:
    - lua_State*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 860
      start: 855
    functionDepth: 0
    functionLinenumber: 855
    functionLinenumberEnd: 860
    functionName: lookIntoStackTop
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 12
    functionsReached:
    - lookIntoStackTop
    - lua_remove
    - std::forward<OffsetTypeOthers>
    - lua_getmetatable
    linkageType: ''
    returnType: void
    signature: void lookIntoStackTop(lua_State* state, Metatable_t, OffsetTypeOthers&&...
      offsetOthers)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 863
      start: 862
    functionDepth: 0
    functionLinenumber: 862
    functionLinenumberEnd: 863
    functionName: lookIntoStackTop
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 12
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void lookIntoStackTop(lua_State*)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: push
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:875,1
    - Dst: push
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:876,1
    - Dst: std::forward<TData>
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:876,1
    - Dst: lua_settable
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:878,1
    - Dst: auto::release
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:879,1
    - Dst: auto::release
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:880,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 4
    argCount: 3
    argNames:
    - state
    - ' index'
    - ' data'
    argTypes:
    - lua_State*
    - TIndex
    - TData
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 881
      start: 870
    functionDepth: 0
    functionLinenumber: 870
    functionLinenumberEnd: 881
    functionName: setTable
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 20
    functionsReached:
    - std::forward<TData>
    - auto::release
    - push
    - lua_settable
    linkageType: ''
    returnType: void
    signature: void setTable(lua_State* state, const PushedObject&, TIndex&& index,
      TData&& data) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: push
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:888,1
    - Dst: std::forward<TData>
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:888,1
    - Dst: lua_setfield
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:889,1
    - Dst: c_str
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:889,1
    - Dst: auto::release
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:890,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 3
    argCount: 3
    argNames:
    - state
    - ' index'
    - ' data'
    argTypes:
    - lua_State*
    - std::string
    - TData
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 891
      start: 884
    functionDepth: 0
    functionLinenumber: 884
    functionLinenumberEnd: 891
    functionName: setTable
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 20
    functionsReached:
    - push
    - std::forward<TData>
    - lua_setfield
    - c_str
    - auto::release
    linkageType: ''
    returnType: void
    signature: void setTable(lua_State* state, const PushedObject&, const std::string&
      index, TData&& data) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: push
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:898,1
    - Dst: std::forward<TData>
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:898,1
    - Dst: lua_setfield
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:899,1
    - Dst: auto::release
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:900,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 3
    argCount: 3
    argNames:
    - state
    - index
    - ' data'
    argTypes:
    - lua_State*
    - char*
    - TData
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 901
      start: 894
    functionDepth: 0
    functionLinenumber: 894
    functionLinenumberEnd: 901
    functionName: setTable
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 20
    functionsReached:
    - std::forward<TData>
    - auto::release
    - lua_setfield
    - push
    linkageType: ''
    returnType: void
    signature: void setTable(lua_State* state, const PushedObject&, const char* index,
      TData&& data) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: push
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:908,1
    - Dst: std::forward<TData>
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:908,1
    - Dst: lua_setmetatable
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:909,1
    - Dst: auto::release
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:910,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 3
    argCount: 2
    argNames:
    - state
    - ' data'
    argTypes:
    - lua_State*
    - TData
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 911
      start: 904
    functionDepth: 0
    functionLinenumber: 904
    functionLinenumberEnd: 911
    functionName: setTable
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 20
    functionsReached:
    - std::forward<TData>
    - auto::release
    - lua_setmetatable
    - push
    linkageType: ''
    returnType: void
    signature: void setTable(lua_State* state, const PushedObject&, Metatable_t, TData&&
      data) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: push
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:919,1
    - Dst: std::forward<TIndex1>
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:919,1
    - Dst: lua_gettable
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:920,1
    - Dst: setTable
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:922,1
    - Dst: std::move
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:922,1
    - Dst: std::forward<TIndex2>
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:922,1
    - Dst: std::forward<TIndex3>
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:922,1
    - Dst: std::forward<TIndices>
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:922,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 3
    argCount: 4
    argNames:
    - state
    - ' index1'
    - ' index2'
    - ' index3'
    argTypes:
    - lua_State*
    - TIndex1
    - TIndex2
    - TIndex3
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 923
      start: 914
    functionDepth: 0
    functionLinenumber: 914
    functionLinenumberEnd: 923
    functionName: setTable
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 21
    functionsReached:
    - std::move
    - push
    - std::forward<TIndex2>
    - std::forward<TIndex3>
    - lua_gettable
    - std::forward<TIndex1>
    - std::forward<TIndices>
    - setTable
    linkageType: ''
    returnType: auto
    signature: "auto setTable(lua_State* state, PushedObject&, TIndex1&& index1, TIndex2&&
      index2, TIndex3&& index3, TIndices&&... indices) noexcept\n        -> typename
      std::enable_if<!std::is_same<typename std::decay<TIndex1>::type, Metatable_t>::value>::type"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: push
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:931,1
    - Dst: std::forward<TIndex1>
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:931,1
    - Dst: std::move
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:931,1
    - Dst: lua_gettable
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:932,1
    - Dst: setTable
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:934,1
    - Dst: std::move
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:934,1
    - Dst: std::forward<TIndex2>
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:934,1
    - Dst: std::forward<TIndex3>
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:934,1
    - Dst: std::forward<TIndices>
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:934,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 3
    argCount: 5
    argNames:
    - state
    - ' pushedTable'
    - ' index1'
    - ' index2'
    - ' index3'
    argTypes:
    - lua_State*
    - PushedObject
    - TIndex1
    - TIndex2
    - TIndex3
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 935
      start: 926
    functionDepth: 0
    functionLinenumber: 926
    functionLinenumberEnd: 935
    functionName: setTable
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 22
    functionsReached:
    - std::move
    - push
    - std::forward<TIndex2>
    - std::forward<TIndex3>
    - lua_gettable
    - std::forward<TIndex1>
    - std::forward<TIndices>
    - setTable
    linkageType: ''
    returnType: auto
    signature: "auto setTable(lua_State* state, PushedObject&& pushedTable, TIndex1&&
      index1, TIndex2&& index2, TIndex3&& index3, TIndices&&... indices) noexcept\n
      \       -> typename std::enable_if<!std::is_same<typename std::decay<TIndex1>::type,
      Metatable_t>::value>::type"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lua_getmetatable
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:940,1
    - Dst: lua_newtable
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:942,1
    - Dst: setTable
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:945,1
    - Dst: std::forward<TIndex2>
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:945,1
    - Dst: std::forward<TIndex3>
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:945,1
    - Dst: std::forward<TIndices>
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:945,1
    - Dst: lua_setmetatable
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:947,1
    - Dst: PushedObject::release
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:948,1
    - Dst: setTable
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:952,1
    - Dst: std::forward<TIndex2>
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:952,1
    - Dst: std::forward<TIndex3>
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:952,1
    - Dst: std::forward<TIndices>
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:952,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 4
    argNames:
    - state
    - ' pushedObject'
    - ' index2'
    - ' index3'
    argTypes:
    - lua_State*
    - PushedObject
    - TIndex2
    - TIndex3
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 954
      start: 938
    functionDepth: 0
    functionLinenumber: 938
    functionLinenumberEnd: 954
    functionName: setTable
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 23
    functionsReached:
    - lua_setmetatable
    - std::forward<TIndex2>
    - std::forward<TIndex3>
    - lua_getmetatable
    - PushedObject::release
    - lua_newtable
    - std::forward<TIndices>
    - setTable
    linkageType: ''
    returnType: void
    signature: void setTable(lua_State* state, PushedObject& pushedObject, Metatable_t,
      TIndex2&& index2, TIndex3&& index3, TIndices&&... indices) noexcept
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lua_getmetatable
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:959,1
    - Dst: lua_newtable
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:961,1
    - Dst: setTable
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:964,1
    - Dst: std::forward<TIndex2>
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:964,1
    - Dst: std::forward<TIndex3>
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:964,1
    - Dst: std::forward<TIndices>
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:964,1
    - Dst: lua_setmetatable
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:966,1
    - Dst: PushedObject::release
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:967,1
    - Dst: setTable
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:971,1
    - Dst: std::move
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:971,1
    - Dst: std::forward<TIndex2>
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:971,1
    - Dst: std::forward<TIndex3>
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:971,1
    - Dst: std::forward<TIndices>
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:971,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 9
    argCount: 4
    argNames:
    - state
    - ' pushedObject'
    - ' index2'
    - ' index3'
    argTypes:
    - lua_State*
    - PushedObject
    - TIndex2
    - TIndex3
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 973
      start: 957
    functionDepth: 0
    functionLinenumber: 957
    functionLinenumberEnd: 973
    functionName: setTable
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 24
    functionsReached:
    - lua_setmetatable
    - std::move
    - std::forward<TIndex2>
    - std::forward<TIndex3>
    - lua_getmetatable
    - PushedObject::release
    - lua_newtable
    - std::forward<TIndices>
    - setTable
    linkageType: ''
    returnType: void
    signature: void setTable(lua_State* state, PushedObject&& pushedObject, Metatable_t,
      TIndex2&& index2, TIndex3&& index3, TIndices&&... indices) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: push
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:981,1
    - Dst: push
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:982,1
    - Dst: std::forward<TData>
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:982,1
    - Dst: lua_settable
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:984,1
    - Dst: auto::release
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:985,1
    - Dst: auto::release
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:986,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 4
    argCount: 3
    argNames:
    - state
    - ' index'
    - ' data'
    argTypes:
    - lua_State*
    - TIndex
    - TData
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 987
      start: 976
    functionDepth: 0
    functionLinenumber: 976
    functionLinenumberEnd: 987
    functionName: setTable
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 24
    functionsReached:
    - std::forward<TData>
    - auto::release
    - push
    - lua_settable
    linkageType: ''
    returnType: void
    signature: void setTable(lua_State* state, RegistryTag, TIndex&& index, TData&&
      data) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: push
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:994,1
    - Dst: std::forward<TData>
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:994,1
    - Dst: lua_setfield
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:995,1
    - Dst: c_str
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:995,1
    - Dst: auto::release
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:996,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 3
    argCount: 3
    argNames:
    - state
    - ' index'
    - ' data'
    argTypes:
    - lua_State*
    - std::string
    - TData
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 997
      start: 990
    functionDepth: 0
    functionLinenumber: 990
    functionLinenumberEnd: 997
    functionName: setTable
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 24
    functionsReached:
    - push
    - std::forward<TData>
    - lua_setfield
    - c_str
    - auto::release
    linkageType: ''
    returnType: void
    signature: void setTable(lua_State* state, RegistryTag, const std::string& index,
      TData&& data) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: push
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1004,1
    - Dst: std::forward<TData>
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1004,1
    - Dst: lua_setfield
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1005,1
    - Dst: auto::release
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1006,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 3
    argCount: 3
    argNames:
    - state
    - index
    - ' data'
    argTypes:
    - lua_State*
    - char*
    - TData
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1007
      start: 1000
    functionDepth: 0
    functionLinenumber: 1000
    functionLinenumberEnd: 1007
    functionName: setTable
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 24
    functionsReached:
    - std::forward<TData>
    - auto::release
    - lua_setfield
    - push
    linkageType: ''
    returnType: void
    signature: void setTable(lua_State* state, RegistryTag, const char* index, TData&&
      data) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: push
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1014,1
    - Dst: std::forward<TIndex1>
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1014,1
    - Dst: lua_gettable
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1015,1
    - Dst: setTable
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1017,1
    - Dst: std::move
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1017,1
    - Dst: std::forward<TIndex2>
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1017,1
    - Dst: std::forward<TIndex3>
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1017,1
    - Dst: std::forward<TIndices>
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1017,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 3
    argCount: 4
    argNames:
    - state
    - ' index1'
    - ' index2'
    - ' index3'
    argTypes:
    - lua_State*
    - TIndex1
    - TIndex2
    - TIndex3
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1018
      start: 1010
    functionDepth: 0
    functionLinenumber: 1010
    functionLinenumberEnd: 1018
    functionName: setTable
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 25
    functionsReached:
    - std::move
    - push
    - std::forward<TIndex2>
    - std::forward<TIndex3>
    - lua_gettable
    - std::forward<TIndex1>
    - std::forward<TIndices>
    - setTable
    linkageType: ''
    returnType: void
    signature: void setTable(lua_State* state, RegistryTag, TIndex1&& index1, TIndex2&&
      index2, TIndex3&& index3, TIndices&&... indices) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lua_pushglobaltable
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1029,1
    - Dst: push
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1031,1
    - Dst: push
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1032,1
    - Dst: std::forward<TData>
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1032,1
    - Dst: lua_settable
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1033,1
    - Dst: push
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1037,1
    - Dst: push
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1038,1
    - Dst: std::forward<TData>
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1038,1
    - Dst: lua_settable
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1039,1
    - Dst: auto::release
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1043,1
    - Dst: auto::release
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1044,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 6
    argCount: 3
    argNames:
    - state
    - ' index'
    - ' data'
    argTypes:
    - lua_State*
    - TIndex
    - TData
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1045
      start: 1021
    functionDepth: 0
    functionLinenumber: 1021
    functionLinenumberEnd: 1045
    functionName: setTable
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 25
    functionsReached:
    - push
    - lua_pushglobaltable
    - std::forward<TData>
    - lua_settable
    - auto::release
    linkageType: ''
    returnType: void
    signature: void setTable(lua_State* state, Globals_t, TIndex&& index, TData&&
      data) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: push
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1052,1
    - Dst: std::forward<TData>
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1052,1
    - Dst: lua_setglobal
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1053,1
    - Dst: c_str
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1053,1
    - Dst: auto::release
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1054,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 3
    argCount: 3
    argNames:
    - state
    - ' index'
    - ' data'
    argTypes:
    - lua_State*
    - std::string
    - TData
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1055
      start: 1048
    functionDepth: 0
    functionLinenumber: 1048
    functionLinenumberEnd: 1055
    functionName: setTable
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 25
    functionsReached:
    - push
    - lua_setglobal
    - std::forward<TData>
    - c_str
    - auto::release
    linkageType: ''
    returnType: void
    signature: void setTable(lua_State* state, Globals_t, const std::string& index,
      TData&& data) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: push
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1062,1
    - Dst: std::forward<TData>
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1062,1
    - Dst: lua_setglobal
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1063,1
    - Dst: auto::release
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1064,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 3
    argCount: 3
    argNames:
    - state
    - index
    - ' data'
    argTypes:
    - lua_State*
    - char*
    - TData
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1065
      start: 1058
    functionDepth: 0
    functionLinenumber: 1058
    functionLinenumberEnd: 1065
    functionName: setTable
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 25
    functionsReached:
    - std::forward<TData>
    - auto::release
    - lua_setglobal
    - push
    linkageType: ''
    returnType: void
    signature: void setTable(lua_State* state, Globals_t, const char* index, TData&&
      data) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lua_pushglobaltable
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1074,1
    - Dst: push
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1075,1
    - Dst: std::forward<TIndex1>
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1075,1
    - Dst: lua_gettable
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1076,1
    - Dst: push
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1080,1
    - Dst: std::forward<TIndex1>
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1080,1
    - Dst: lua_gettable
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1081,1
    - Dst: setTable
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1085,1
    - Dst: std::move
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1085,1
    - Dst: std::forward<TIndex2>
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1085,1
    - Dst: std::forward<TIndex3>
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1085,1
    - Dst: std::forward<TIndices>
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1085,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 5
    argCount: 4
    argNames:
    - state
    - ' index1'
    - ' index2'
    - ' index3'
    argTypes:
    - lua_State*
    - TIndex1
    - TIndex2
    - TIndex3
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1086
      start: 1068
    functionDepth: 0
    functionLinenumber: 1068
    functionLinenumberEnd: 1086
    functionName: setTable
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 26
    functionsReached:
    - std::move
    - push
    - std::forward<TIndex2>
    - std::forward<TIndex3>
    - lua_gettable
    - std::forward<TIndex1>
    - lua_pushglobaltable
    - std::forward<TIndices>
    - setTable
    linkageType: ''
    returnType: void
    signature: void setTable(lua_State* state, Globals_t, TIndex1&& index1, TIndex2&&
      index2, TIndex3&& index3, TIndices&&... indices) noexcept
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: qthread
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1114,1
    - Dst: PushedObject::getNum
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1114,1
    - Dst: auto::is_initialized
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1115,1
    - Dst: lua_typename
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1116,1
    - Dst: lua_type
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1116,1
    - Dst: PushedObject::getNum
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1116,1
    - Dst: typeid
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1116,1
    - Dst: auto::get
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1117,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 2
    argNames:
    - state
    - object
    argTypes:
    - lua_State*
    - PushedObject
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1118
      start: 1111
    functionDepth: 2
    functionLinenumber: 1111
    functionLinenumberEnd: 1118
    functionName: readTopAndPop
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 10
    functionsReached:
    - qthread
    - lua_typename
    - auto::get
    - typeid
    - auto::is_initialized
    - lua_type
    - PushedObject::getNum
    linkageType: ''
    returnType: auto
    signature: "auto readTopAndPop(lua_State* state, PushedObject object)\n        ->
      TReturnType"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lua_pushlightuserdata
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1123,1
    - Dst: const_cast<std::type_info*>
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1123,1
    - Dst: lua_gettable
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1124,1
    - Dst: lua_isnil
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1125,1
    - Dst: lua_pop
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1126,1
    - Dst: lua_pop
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1129,1
    - Dst: lua_pushlightuserdata
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1131,1
    - Dst: const_cast<std::type_info*>
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1131,1
    - Dst: lua_newtable
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1132,1
    - Dst: lua_pushinteger
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1134,1
    - Dst: lua_newtable
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1135,1
    - Dst: lua_settable
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1136,1
    - Dst: lua_pushinteger
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1138,1
    - Dst: lua_newtable
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1139,1
    - Dst: lua_settable
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1140,1
    - Dst: lua_pushinteger
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1142,1
    - Dst: lua_newtable
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1143,1
    - Dst: lua_settable
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1144,1
    - Dst: lua_pushinteger
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1146,1
    - Dst: lua_newtable
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1147,1
    - Dst: lua_settable
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1148,1
    - Dst: lua_settable
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1150,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 23
    argCount: 2
    argNames:
    - state
    - type
    argTypes:
    - lua_State*
    - std::type_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1151
      start: 1121
    functionDepth: 0
    functionLinenumber: 1121
    functionLinenumberEnd: 1151
    functionName: checkTypeRegistration
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 7
    functionsReached:
    - const_cast<std::type_info*>
    - lua_pushinteger
    - lua_pushlightuserdata
    - lua_gettable
    - lua_isnil
    - lua_settable
    - lua_newtable
    - lua_pop
    linkageType: ''
    returnType: void
    signature: void checkTypeRegistration(lua_State* state, const std::type_info*
      type)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lua_error
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1161,1
    - Dst: assert
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1162,1
    - Dst: std::terminate
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1163,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - state
    argTypes:
    - lua_State*
    assertStmts:
    - condition: (false)
      pos:
        line_end: 1161
        line_start: 1161
        source_file: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    constantsTouched: []
    func_position:
      end: 1164
      start: 1155
    functionDepth: 0
    functionLinenumber: 1155
    functionLinenumberEnd: 1164
    functionName: luaError
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 4
    functionsReached:
    - lua_error
    - assert
    - std::terminate
    linkageType: ''
    returnType: void
    signature: void luaError(lua_State* state)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: checkTypeRegistration
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1176,1
    - Dst: typeid
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1176,1
    - Dst: setTable
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1177,1
    - Dst: typeid
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1177,1
    - Dst: checkTypeRegistration
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1179,1
    - Dst: typeid
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1179,1
    - Dst: setTable
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1180,1
    - Dst: typeid
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1180,1
    - Dst: assert
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1180,1
    - Dst: function
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1180,1
    - Dst: std::forward<TOtherParams>
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1180,1
    - Dst: checkTypeRegistration
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1182,1
    - Dst: typeid
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1182,1
    - Dst: setTable
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1183,1
    - Dst: typeid
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1183,1
    - Dst: assert
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1183,1
    - Dst: function
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1183,1
    - Dst: std::forward<TOtherParams>
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1183,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 2
    argNames:
    - ' functionName'
    - function
    argTypes:
    - std::string
    - TFunctionType
    assertStmts:
    - condition: (obj)
      pos:
        line_end: 1179
        line_start: 1179
        source_file: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    - condition: (obj)
      pos:
        line_end: 1182
        line_start: 1182
        source_file: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    constantsTouched: []
    func_position:
      end: 1184
      start: 1172
    functionDepth: 0
    functionLinenumber: 1172
    functionLinenumberEnd: 1184
    functionName: registerFunctionImpl
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 23
    functionsReached:
    - std::forward<TOtherParams>
    - typeid
    - assert
    - checkTypeRegistration
    - function
    - setTable
    linkageType: ''
    returnType: void
    signature: void registerFunctionImpl(const std::string& functionName, TFunctionType
      function, tag<TObject>, tag<TRetValue (TOtherParams...)>)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: registerFunctionImpl
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1189,1
    - Dst: checkTypeRegistration
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1191,1
    - Dst: typeid
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1191,1
    - Dst: setTable
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1192,1
    - Dst: typeid
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1192,1
    - Dst: assert
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1192,1
    - Dst: function
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1192,1
    - Dst: std::forward<TOtherParams>
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1192,1
    - Dst: checkTypeRegistration
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1194,1
    - Dst: typeid
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1194,1
    - Dst: setTable
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1195,1
    - Dst: typeid
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1195,1
    - Dst: assert
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1195,1
    - Dst: function
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1195,1
    - Dst: std::forward<TOtherParams>
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1195,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 3
    argNames:
    - ' functionName'
    - function
    - fTypeTag
    argTypes:
    - std::string
    - TFunctionType
    - tag<TRetValue (TOtherParams...)>
    assertStmts:
    - condition: (obj)
      pos:
        line_end: 1191
        line_start: 1191
        source_file: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    - condition: (obj)
      pos:
        line_end: 1194
        line_start: 1194
        source_file: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    constantsTouched: []
    func_position:
      end: 1196
      start: 1187
    functionDepth: 0
    functionLinenumber: 1187
    functionLinenumberEnd: 1196
    functionName: registerFunctionImpl
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 24
    functionsReached:
    - std::forward<TOtherParams>
    - registerFunctionImpl
    - typeid
    - assert
    - checkTypeRegistration
    - function
    - setTable
    linkageType: ''
    returnType: void
    signature: void registerFunctionImpl(const std::string& functionName, TFunctionType
      function, tag<const TObject>, tag<TRetValue (TOtherParams...)> fTypeTag)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TRetValue
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1199,1
    - Dst: registerFunctionImpl
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1201,1
    - Dst: std::move
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1201,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' functionName'
    - function
    argTypes:
    - std::string
    - TFunctionType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1202
      start: 1199
    functionDepth: 0
    functionLinenumber: 1199
    functionLinenumberEnd: 1202
    functionName: registerFunctionImpl
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 25
    functionsReached:
    - std::move
    - TRetValue
    - registerFunctionImpl
    linkageType: ''
    returnType: void
    signature: void registerFunctionImpl(const std::string& functionName, TFunctionType
      function, tag<TRetValue (TObject::*)(TOtherParams...)>)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TRetValue
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1205,1
    - Dst: registerFunctionImpl
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1207,1
    - Dst: std::move
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1207,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' functionName'
    - function
    argTypes:
    - std::string
    - TFunctionType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1208
      start: 1205
    functionDepth: 0
    functionLinenumber: 1205
    functionLinenumberEnd: 1208
    functionName: registerFunctionImpl
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 26
    functionsReached:
    - std::move
    - TRetValue
    - registerFunctionImpl
    linkageType: ''
    returnType: void
    signature: void registerFunctionImpl(const std::string& functionName, TFunctionType
      function, tag<TRetValue (TObject::*)(TOtherParams...) const>)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TRetValue
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1211,1
    - Dst: registerFunctionImpl
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1213,1
    - Dst: std::move
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1213,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' functionName'
    - function
    argTypes:
    - std::string
    - TFunctionType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1214
      start: 1211
    functionDepth: 0
    functionLinenumber: 1211
    functionLinenumberEnd: 1214
    functionName: registerFunctionImpl
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 27
    functionsReached:
    - std::move
    - TRetValue
    - registerFunctionImpl
    linkageType: ''
    returnType: void
    signature: void registerFunctionImpl(const std::string& functionName, TFunctionType
      function, tag<TRetValue (TObject::*)(TOtherParams...) volatile>)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TRetValue
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1217,1
    - Dst: registerFunctionImpl
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1219,1
    - Dst: std::move
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1219,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' functionName'
    - function
    argTypes:
    - std::string
    - TFunctionType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1220
      start: 1217
    functionDepth: 0
    functionLinenumber: 1217
    functionLinenumberEnd: 1220
    functionName: registerFunctionImpl
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 28
    functionsReached:
    - std::move
    - TRetValue
    - registerFunctionImpl
    linkageType: ''
    returnType: void
    signature: void registerFunctionImpl(const std::string& functionName, TFunctionType
      function, tag<TRetValue (TObject::*)(TOtherParams...) const volatile>)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: checkTypeRegistration
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1228,1
    - Dst: typeid
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1228,1
    - Dst: setTable
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1229,1
    - Dst: typeid
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1229,1
    - Dst: readFunction
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1230,1
    - Dst: checkTypeRegistration
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1233,1
    - Dst: typeid
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1233,1
    - Dst: setTable
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1234,1
    - Dst: typeid
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1234,1
    - Dst: assert
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1235,1
    - Dst: readFunction
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1236,1
    - Dst: checkTypeRegistration
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1239,1
    - Dst: typeid
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1239,1
    - Dst: setTable
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1240,1
    - Dst: typeid
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1240,1
    - Dst: assert
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1241,1
    - Dst: readFunction
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1242,1
    - Dst: checkTypeRegistration
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1245,1
    - Dst: typeid
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1245,1
    - Dst: setTable
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1246,1
    - Dst: typeid
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1246,1
    - Dst: assert
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1247,1
    - Dst: readFunction
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1248,1
    - Dst: checkTypeRegistration
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1251,1
    - Dst: typeid
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1251,1
    - Dst: setTable
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1252,1
    - Dst: typeid
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1252,1
    - Dst: assert
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1253,1
    - Dst: readFunction
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1254,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 25
    argCount: 2
    argNames:
    - ' name'
    - readFunction
    argTypes:
    - std::string
    - TReadFunction
    assertStmts:
    - condition: (object)
      pos:
        line_end: 1240
        line_start: 1240
        source_file: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    - condition: (object)
      pos:
        line_end: 1246
        line_start: 1246
        source_file: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    - condition: (object)
      pos:
        line_end: 1234
        line_start: 1234
        source_file: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    - condition: (object)
      pos:
        line_end: 1252
        line_start: 1252
        source_file: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    constantsTouched: []
    func_position:
      end: 1256
      start: 1224
    functionDepth: 0
    functionLinenumber: 1224
    functionLinenumberEnd: 1256
    functionName: registerMemberImpl
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 22
    functionsReached:
    - typeid
    - readFunction
    - assert
    - checkTypeRegistration
    - setTable
    linkageType: ''
    returnType: void
    signature: void registerMemberImpl(const std::string& name, TReadFunction readFunction)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: registerMemberImpl
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1261,1
    - Dst: setTable
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1263,1
    - Dst: typeid
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1263,1
    - Dst: writeFunction_
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1264,1
    - Dst: setTable
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1267,1
    - Dst: typeid
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1267,1
    - Dst: assert
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1268,1
    - Dst: writeFunction_
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1269,1
    - Dst: setTable
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1272,1
    - Dst: typeid
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1272,1
    - Dst: assert
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1273,1
    - Dst: writeFunction_
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1274,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 3
    argNames:
    - ' name'
    - readFunction
    - writeFunction_
    argTypes:
    - std::string
    - TReadFunction
    - TWriteFunction
    assertStmts:
    - condition: (object)
      pos:
        line_end: 1267
        line_start: 1267
        source_file: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    - condition: (object)
      pos:
        line_end: 1272
        line_start: 1272
        source_file: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    constantsTouched: []
    func_position:
      end: 1276
      start: 1259
    functionDepth: 0
    functionLinenumber: 1259
    functionLinenumberEnd: 1276
    functionName: registerMemberImpl
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 23
    functionsReached:
    - typeid
    - writeFunction_
    - assert
    - setTable
    - registerMemberImpl
    linkageType: ''
    returnType: void
    signature: void registerMemberImpl(const std::string& name, TReadFunction readFunction,
      TWriteFunction writeFunction_)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TVarType
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1279,1
    - Dst: registerMemberImpl
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1281,1
    - Dst: std::move
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1281,1
    - Dst: std::move
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1281,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' name'
    - readFunction
    - writeFunction_
    argTypes:
    - std::string
    - TReadFunction
    - TWriteFunction
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1282
      start: 1279
    functionDepth: 0
    functionLinenumber: 1279
    functionLinenumberEnd: 1282
    functionName: registerMemberImpl
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 24
    functionsReached:
    - std::move
    - TVarType
    - registerMemberImpl
    linkageType: ''
    returnType: void
    signature: void registerMemberImpl(tag<TVarType (TObject::*)>, const std::string&
      name, TReadFunction readFunction, TWriteFunction writeFunction_)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TVarType
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1285,1
    - Dst: registerMemberImpl
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1287,1
    - Dst: std::move
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1287,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' name'
    - readFunction
    argTypes:
    - std::string
    - TReadFunction
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1288
      start: 1285
    functionDepth: 0
    functionLinenumber: 1285
    functionLinenumberEnd: 1288
    functionName: registerMemberImpl
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 25
    functionsReached:
    - std::move
    - TVarType
    - registerMemberImpl
    linkageType: ''
    returnType: void
    signature: void registerMemberImpl(tag<TVarType(TObject::*)>, const std::string&
      name, TReadFunction readFunction)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: checkTypeRegistration
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1294,1
    - Dst: typeid
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1294,1
    - Dst: setTable
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1295,1
    - Dst: typeid
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1295,1
    - Dst: readFunction
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1296,1
    - Dst: checkTypeRegistration
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1299,1
    - Dst: typeid
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1299,1
    - Dst: setTable
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1300,1
    - Dst: typeid
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1300,1
    - Dst: assert
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1301,1
    - Dst: readFunction
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1302,1
    - Dst: checkTypeRegistration
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1305,1
    - Dst: typeid
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1305,1
    - Dst: setTable
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1306,1
    - Dst: typeid
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1306,1
    - Dst: assert
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1307,1
    - Dst: readFunction
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1308,1
    - Dst: checkTypeRegistration
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1311,1
    - Dst: typeid
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1311,1
    - Dst: setTable
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1312,1
    - Dst: typeid
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1312,1
    - Dst: assert
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1313,1
    - Dst: readFunction
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1314,1
    - Dst: checkTypeRegistration
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1317,1
    - Dst: typeid
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1317,1
    - Dst: setTable
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1318,1
    - Dst: typeid
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1318,1
    - Dst: assert
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1319,1
    - Dst: readFunction
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1320,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 25
    argCount: 1
    argNames:
    - readFunction
    argTypes:
    - TReadFunction
    assertStmts:
    - condition: (object)
      pos:
        line_end: 1300
        line_start: 1300
        source_file: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    - condition: (object)
      pos:
        line_end: 1306
        line_start: 1306
        source_file: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    - condition: (object)
      pos:
        line_end: 1312
        line_start: 1312
        source_file: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    - condition: (object)
      pos:
        line_end: 1318
        line_start: 1318
        source_file: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    constantsTouched: []
    func_position:
      end: 1322
      start: 1292
    functionDepth: 0
    functionLinenumber: 1292
    functionLinenumberEnd: 1322
    functionName: registerMemberImpl
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 25
    functionsReached:
    - typeid
    - readFunction
    - assert
    - checkTypeRegistration
    - setTable
    linkageType: ''
    returnType: void
    signature: void registerMemberImpl(TReadFunction readFunction)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: registerMemberImpl
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1327,1
    - Dst: setTable
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1329,1
    - Dst: typeid
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1329,1
    - Dst: writeFunction_
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1330,1
    - Dst: setTable
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1333,1
    - Dst: typeid
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1333,1
    - Dst: assert
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1334,1
    - Dst: writeFunction_
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1335,1
    - Dst: setTable
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1338,1
    - Dst: typeid
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1338,1
    - Dst: assert
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1339,1
    - Dst: writeFunction_
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1340,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 2
    argNames:
    - readFunction
    - writeFunction_
    argTypes:
    - TReadFunction
    - TWriteFunction
    assertStmts:
    - condition: (object)
      pos:
        line_end: 1333
        line_start: 1333
        source_file: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    - condition: (object)
      pos:
        line_end: 1338
        line_start: 1338
        source_file: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    constantsTouched: []
    func_position:
      end: 1342
      start: 1325
    functionDepth: 0
    functionLinenumber: 1325
    functionLinenumberEnd: 1342
    functionName: registerMemberImpl
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 26
    functionsReached:
    - typeid
    - writeFunction_
    - assert
    - setTable
    - registerMemberImpl
    linkageType: ''
    returnType: void
    signature: void registerMemberImpl(TReadFunction readFunction, TWriteFunction
      writeFunction_)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TVarType
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1345,1
    - Dst: registerMemberImpl
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1347,1
    - Dst: std::move
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1347,1
    - Dst: std::move
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1347,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - readFunction
    - writeFunction_
    argTypes:
    - TReadFunction
    - TWriteFunction
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1348
      start: 1345
    functionDepth: 0
    functionLinenumber: 1345
    functionLinenumberEnd: 1348
    functionName: registerMemberImpl
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 27
    functionsReached:
    - std::move
    - TVarType
    - registerMemberImpl
    linkageType: ''
    returnType: void
    signature: void registerMemberImpl(tag<TVarType (TObject::*)>, TReadFunction readFunction,
      TWriteFunction writeFunction_)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TVarType
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1351,1
    - Dst: registerMemberImpl
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1353,1
    - Dst: std::move
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1353,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - readFunction
    argTypes:
    - TReadFunction
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1354
      start: 1351
    functionDepth: 0
    functionLinenumber: 1351
    functionLinenumberEnd: 1354
    functionName: registerMemberImpl
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 28
    functionsReached:
    - std::move
    - TVarType
    - registerMemberImpl
    linkageType: ''
    returnType: void
    signature: void registerMemberImpl(tag<TVarType(TObject::*)>, TReadFunction readFunction)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1373,1
    - Dst: assert
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1374,1
    - Dst: static_cast<Reader*>
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1375,1
    - Dst: stream::eof
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1376,1
    - Dst: stream::read
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1378,1
    - Dst: buffer::data
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1378,1
    - Dst: buffer::size
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1378,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1379,1
    - Dst: stream::gcount
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1379,1
    - Dst: buffer::data
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1380,1
    - Dst: lua_load
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1386,1
    - Dst: lua_tostring
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1395,1
    - Dst: lua_pop
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1396,1
    - Dst: std::bad_alloc
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1398,1
    - Dst: std::runtime_error
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1401,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 21
    argCount: 2
    argNames:
    - state
    - ' code'
    argTypes:
    - lua_State*
    - std::istream
    assertStmts:
    - condition: (size != nullptr)
      pos:
        line_end: 1372
        line_start: 1372
        source_file: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    - condition: (data != nullptr)
      pos:
        line_end: 1373
        line_start: 1373
        source_file: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    constantsTouched: []
    func_position:
      end: 1405
      start: 1362
    functionDepth: 0
    functionLinenumber: 1362
    functionLinenumberEnd: 1405
    functionName: load
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 170
    functionsReached:
    - std::bad_alloc
    - static_cast<size_t>
    - buffer::size
    - stream::read
    - lua_load
    - std::runtime_error
    - buffer::data
    - stream::gcount
    - assert
    - lua_tostring
    - static_cast<Reader*>
    - stream::eof
    - lua_pop
    linkageType: ''
    returnType: PushedObject
    signature: PushedObject load(lua_State* state, std::istream& code)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' str'
    argTypes:
    - std::istream
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1367
      start: 1367
    functionDepth: 0
    functionLinenumber: 1367
    functionLinenumberEnd: 1367
    functionName: Reader
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void Reader(std::istream& str)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1373,1
    - Dst: assert
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1374,1
    - Dst: static_cast<Reader*>
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1375,1
    - Dst: stream::eof
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1376,1
    - Dst: stream::read
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1378,1
    - Dst: buffer::data
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1378,1
    - Dst: buffer::size
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1378,1
    - Dst: static_cast<size_t>
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1379,1
    - Dst: stream::gcount
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1379,1
    - Dst: buffer::data
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1380,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - data
    - size
    argTypes:
    - void*
    - size_t*
    assertStmts:
    - condition: (size != nullptr)
      pos:
        line_end: 1372
        line_start: 1372
        source_file: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    - condition: (data != nullptr)
      pos:
        line_end: 1373
        line_start: 1373
        source_file: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    constantsTouched: []
    func_position:
      end: 1381
      start: 1372
    functionDepth: 0
    functionLinenumber: 1372
    functionLinenumberEnd: 1381
    functionName: read
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 204
    functionsReached:
    - static_cast<size_t>
    - buffer::size
    - stream::read
    - buffer::data
    - stream::gcount
    - assert
    - static_cast<Reader*>
    - stream::eof
    linkageType: ''
    returnType: char
    signature: char * read(lua_State* /*l*/, void* data, size_t* size)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: luaL_loadstring
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1410,1
    - Dst: lua_tostring
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1415,1
    - Dst: lua_pop
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1416,1
    - Dst: std::bad_alloc
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1418,1
    - Dst: std::runtime_error
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1421,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 10
    argCount: 2
    argNames:
    - state
    - code
    argTypes:
    - lua_State*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1425
      start: 1409
    functionDepth: 0
    functionLinenumber: 1409
    functionLinenumberEnd: 1425
    functionName: load
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 170
    functionsReached:
    - std::bad_alloc
    - std::runtime_error
    - lua_tostring
    - luaL_loadstring
    - lua_pop
    linkageType: ''
    returnType: PushedObject
    signature: PushedObject load(lua_State* state, const char* code)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: push
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1437,1
    - Dst: std::forward_as_tuple
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1437,1
    - Dst: std::forward<TParameters>
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1437,1
    - Dst: callRaw
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1441,1
    - Dst: std::move
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1441,1
    - Dst: std::move
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1441,1
    - Dst: readTopAndPop
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1444,1
    - Dst: std::move
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1444,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 2
    argCount: 2
    argNames:
    - state
    - toCall
    argTypes:
    - lua_State*
    - PushedObject
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1445
      start: 1430
    functionDepth: 0
    functionLinenumber: 1430
    functionLinenumberEnd: 1445
    functionName: call
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 29
    functionsReached:
    - std::move
    - std::forward<TParameters>
    - push
    - std::forward_as_tuple
    - readTopAndPop
    - callRaw
    linkageType: ''
    returnType: auto
    signature: "auto call(lua_State* state, PushedObject toCall, TParameters&&...
      input)\n        -> TReturnType"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lua_pushliteral
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1448,1
    - Dst: lua_rawget
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1449,1
    - Dst: lua_pushstring
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1450,1
    - Dst: lua_pushinteger
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1451,1
    - Dst: lua_call
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1452,1
    - Dst: lua_createtable
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1453,1
    - Dst: lua_insert
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1454,1
    - Dst: lua_rawseti
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1455,1
    - Dst: lua_rawseti
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1456,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 1
    argNames:
    - L
    argTypes:
    - lua_State*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1458
      start: 1447
    functionDepth: 0
    functionLinenumber: 1447
    functionLinenumberEnd: 1458
    functionName: gettraceback
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 0
    functionsReached:
    - lua_insert
    - lua_pushinteger
    - lua_call
    - lua_createtable
    - lua_rawseti
    - lua_pushliteral
    - lua_pushstring
    - lua_rawget
    linkageType: ''
    returnType: int
    signature: int gettraceback(lua_State* L)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: lua_gettop
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1464,1
    - Dst: PushedObject::getNum
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1464,1
    - Dst: lua_pushcfunction
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1465,1
    - Dst: lua_insert
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1468,1
    - Dst: lua_pcall
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1471,1
    - Dst: PushedObject::getNum
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1471,1
    - Dst: PushedObject::release
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1472,1
    - Dst: lua_remove
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1474,1
    - Dst: ExecutionErrorException
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1483,1
    - Dst: lua_gettop
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1488,1
    - Dst: lua_type
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1488,1
    - Dst: lua_rawgeti
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1490,1
    - Dst: lua_rawgeti
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1491,1
    - Dst: lua_remove
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1492,1
    - Dst: readTopAndPop
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1495,1
    - Dst: std::move
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1495,1
    - Dst: lua_isstring
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1499,1
    - Dst: readTopAndPop
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1501,1
    - Dst: std::move
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1501,1
    - Dst: readTopAndPop
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1508,1
    - Dst: std::move
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1508,1
    - Dst: std::rethrow_exception
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1509,1
    - Dst: std::throw_with_nested
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1512,1
    - Dst: what
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1512,1
    - Dst: std::throw_with_nested
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1514,1
    - Dst: ExecutionErrorException
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1520,1
    - Dst: std::to_string
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1520,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 35
    argCount: 3
    argNames:
    - state
    - functionAndArguments
    - outArguments
    argTypes:
    - lua_State*
    - PushedObject
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1525
      start: 1461
    functionDepth: 0
    functionLinenumber: 1461
    functionLinenumberEnd: 1525
    functionName: callRaw
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 5
    functionsReached:
    - lua_insert
    - lua_isstring
    - std::move
    - lua_rawgeti
    - lua_remove
    - std::rethrow_exception
    - std::to_string
    - what
    - lua_pushcfunction
    - lua_pcall
    - lua_type
    - ExecutionErrorException
    - PushedObject::getNum
    - std::throw_with_nested
    - lua_gettop
    - readTopAndPop
    - PushedObject::release
    linkageType: ''
    returnType: PushedObject
    signature: PushedObject callRaw(lua_State* state, PushedObject functionAndArguments,
      const int outArguments)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: push
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1534,1
    - Dst: std::forward<T>
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1534,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 2
    argNames:
    - state
    - ' value'
    argTypes:
    - lua_State*
    - T
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1535
      start: 1532
    functionDepth: 0
    functionLinenumber: 1532
    functionLinenumberEnd: 1535
    functionName: push
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 79
    functionsReached:
    - std::forward<T>
    - push
    linkageType: ''
    returnType: PushedObject
    signature: PushedObject push(lua_State* state, T&& value)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1553,1
    - Dst: lua_gettop
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1553,1
    - Dst: static_cast<TType*>
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1554,1
    - Dst: lua_touserdata
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1554,1
    - Dst: assert
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1555,1
    - Dst: TType*::~TType
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1556,1
    - Dst: assert
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1563,1
    - Dst: lua_gettop
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1563,1
    - Dst: assert
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1564,1
    - Dst: lua_isuserdata
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1564,1
    - Dst: lua_pushlightuserdata
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1567,1
    - Dst: const_cast<std::type_info*>
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1567,1
    - Dst: typeid
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1567,1
    - Dst: lua_gettable
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1568,1
    - Dst: assert
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1569,1
    - Dst: lua_isnil
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1569,1
    - Dst: lua_pushinteger
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1572,1
    - Dst: lua_gettable
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1573,1
    - Dst: lua_pushvalue
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1574,1
    - Dst: lua_gettable
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1575,1
    - Dst: lua_isnil
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1576,1
    - Dst: lua_pop
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1578,1
    - Dst: lua_pushinteger
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1581,1
    - Dst: lua_gettable
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1582,1
    - Dst: lua_pushvalue
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1583,1
    - Dst: lua_gettable
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1584,1
    - Dst: lua_isnil
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1585,1
    - Dst: lua_pushvalue
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1586,1
    - Dst: callRaw
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1587,1
    - Dst: lua_pop
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1589,1
    - Dst: lua_pushinteger
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1592,1
    - Dst: lua_gettable
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1593,1
    - Dst: lua_isnil
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1594,1
    - Dst: lua_pushvalue
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1596,1
    - Dst: lua_pushvalue
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1597,1
    - Dst: callRaw
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1598,1
    - Dst: push
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1601,1
    - Dst: std::current_exception
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1601,1
    - Dst: luaError
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1602,1
    - Dst: assert
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1609,1
    - Dst: lua_gettop
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1609,1
    - Dst: assert
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1610,1
    - Dst: lua_isuserdata
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1610,1
    - Dst: lua_pushlightuserdata
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1613,1
    - Dst: const_cast<std::type_info*>
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1613,1
    - Dst: typeid
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1613,1
    - Dst: lua_rawget
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1614,1
    - Dst: assert
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1615,1
    - Dst: lua_isnil
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1615,1
    - Dst: lua_pushinteger
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1618,1
    - Dst: lua_rawget
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1619,1
    - Dst: lua_pushvalue
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1620,1
    - Dst: lua_rawget
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1621,1
    - Dst: lua_isnil
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1622,1
    - Dst: lua_pushvalue
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1623,1
    - Dst: lua_pushvalue
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1624,1
    - Dst: callRaw
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1625,1
    - Dst: lua_pop
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1626,1
    - Dst: lua_pop
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1629,1
    - Dst: lua_pushinteger
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1632,1
    - Dst: lua_rawget
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1633,1
    - Dst: lua_isnil
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1634,1
    - Dst: lua_pop
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1636,1
    - Dst: lua_pushstring
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1637,1
    - Dst: luaError
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1638,1
    - Dst: lua_pushvalue
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1640,1
    - Dst: lua_pushvalue
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1641,1
    - Dst: lua_pushvalue
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1642,1
    - Dst: callRaw
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1643,1
    - Dst: lua_pop
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1644,1
    - Dst: push
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1648,1
    - Dst: std::current_exception
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1648,1
    - Dst: luaError
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1649,1
    - Dst: assert
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1655,1
    - Dst: lua_gettop
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1655,1
    - Dst: assert
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1656,1
    - Dst: lua_isuserdata
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1656,1
    - Dst: lua_pushstring
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1657,1
    - Dst: lua_gettable
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1658,1
    - Dst: lua_isnil
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1659,1
    - Dst: lua_topointer
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1661,1
    - Dst: lua_pop
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1662,1
    - Dst: lua_pushstring
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1663,1
    - Dst: boost::format
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1663,1
    - Dst: reinterpret_cast<intptr_t>
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1663,1
    - Dst: str
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1663,1
    - Dst: lua_pushvalue
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1666,1
    - Dst: callRaw
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1667,1
    - Dst: push
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1669,1
    - Dst: std::current_exception
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1669,1
    - Dst: luaError
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1670,1
    - Dst: checkTypeRegistration
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1676,1
    - Dst: typeid
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1676,1
    - Dst: static_cast<TType*>
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1682,1
    - Dst: lua_newuserdata
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1682,1
    - Dst: std::forward<TType2>
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1683,1
    - Dst: TType::TType
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1683,1
    - Dst: push
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1686,1
    - Dst: std::current_exception
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1686,1
    - Dst: luaError
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1687,1
    - Dst: lua_newtable
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1695,1
    - Dst: lua_pushstring
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1701,1
    - Dst: lua_pushcfunction
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1702,1
    - Dst: lua_settable
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1703,1
    - Dst: lua_pushstring
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1707,1
    - Dst: lua_pushlightuserdata
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1708,1
    - Dst: const_cast<std::type_info*>
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1708,1
    - Dst: typeid
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1708,1
    - Dst: lua_settable
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1709,1
    - Dst: lua_pushstring
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1712,1
    - Dst: lua_pushcfunction
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1713,1
    - Dst: lua_settable
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1714,1
    - Dst: lua_pushstring
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1717,1
    - Dst: lua_pushcfunction
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1718,1
    - Dst: lua_settable
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1719,1
    - Dst: lua_pushstring
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1721,1
    - Dst: lua_pushcfunction
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1722,1
    - Dst: lua_settable
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1723,1
    - Dst: lua_pushstring
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1725,1
    - Dst: lua_getglobal
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1726,1
    - Dst: lua_settable
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1727,1
    - Dst: lua_setmetatable
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1733,1
    - Dst: PushedObject::release
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1734,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 124
    argCount: 2
    argNames:
    - state
    - ' value'
    argTypes:
    - lua_State*
    - TType2
    assertStmts:
    - condition: (ptr)
      pos:
        line_end: 1554
        line_start: 1554
        source_file: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    - condition: (lua_isuserdata(lua, 1))
      pos:
        line_end: 1655
        line_start: 1655
        source_file: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    - condition: (!lua_isnil(lua, -1))
      pos:
        line_end: 1568
        line_start: 1568
        source_file: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    - condition: (!lua_isnil(lua, -1))
      pos:
        line_end: 1614
        line_start: 1614
        source_file: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    - condition: (lua_isuserdata(lua, 1))
      pos:
        line_end: 1609
        line_start: 1609
        source_file: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    - condition: (lua_isuserdata(lua, 1))
      pos:
        line_end: 1563
        line_start: 1563
        source_file: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    - condition: (lua_gettop(lua) == 1)
      pos:
        line_end: 1654
        line_start: 1654
        source_file: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    - condition: (lua_gettop(lua) == 1)
      pos:
        line_end: 1552
        line_start: 1552
        source_file: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    - condition: (lua_gettop(lua) == 3)
      pos:
        line_end: 1608
        line_start: 1608
        source_file: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    - condition: (lua_gettop(lua) == 2)
      pos:
        line_end: 1562
        line_start: 1562
        source_file: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    constantsTouched: []
    func_position:
      end: 1737
      start: 1549
    functionDepth: 0
    functionLinenumber: 1549
    functionLinenumberEnd: 1737
    functionName: push
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 80
    functionsReached:
    - boost::format
    - push
    - lua_gettop
    - lua_pushstring
    - callRaw
    - lua_rawget
    - const_cast<std::type_info*>
    - lua_topointer
    - lua_pushinteger
    - reinterpret_cast<intptr_t>
    - std::current_exception
    - assert
    - lua_isnil
    - lua_settable
    - lua_setmetatable
    - lua_isuserdata
    - std::forward<TType2>
    - lua_newuserdata
    - lua_pushcfunction
    - str
    - lua_newtable
    - static_cast<TType*>
    - PushedObject::release
    - luaError
    - typeid
    - lua_touserdata
    - lua_pushvalue
    - checkTypeRegistration
    - lua_pushlightuserdata
    - lua_gettable
    - lua_getglobal
    - TType::TType
    - TType*::~TType
    - lua_pop
    linkageType: ''
    returnType: PushedObject
    signature: PushedObject push(lua_State* state, TType2&& value) noexcept
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: test
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1772,1
    - Dst: boost::optional<ReturnType>
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1774,1
    - Dst: static_cast<TType*>
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1774,1
    - Dst: lua_touserdata
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1774,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - state
    - index
    argTypes:
    - lua_State*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1775
      start: 1769
    functionDepth: 0
    functionLinenumber: 1769
    functionLinenumberEnd: 1775
    functionName: read
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 204
    functionsReached:
    - static_cast<TType*>
    - lua_touserdata
    - boost::optional<ReturnType>
    - test
    linkageType: ''
    returnType: auto
    signature: "auto read(lua_State* state, int index)\n            -> boost::optional<ReturnType>"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lua_isuserdata
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1780,1
    - Dst: lua_getmetatable
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1782,1
    - Dst: lua_pushstring
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1787,1
    - Dst: lua_gettable
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1788,1
    - Dst: static_cast<const std::type_info*>
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1789,1
    - Dst: lua_touserdata
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1789,1
    - Dst: typeid
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1790,1
    - Dst: lua_pop
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1793,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - state
    - index
    argTypes:
    - lua_State*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1798
      start: 1778
    functionDepth: 0
    functionLinenumber: 1778
    functionLinenumberEnd: 1798
    functionName: test
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 12
    functionsReached:
    - lua_isuserdata
    - typeid
    - lua_touserdata
    - lua_getmetatable
    - lua_gettable
    - lua_pushstring
    - static_cast<const std::type_info*>
    - lua_pop
    linkageType: ''
    returnType: bool
    signature: bool test(lua_State* state, int index)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: callback
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1808,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - ' callback'
    argTypes:
    - TCallback
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1809
      start: 1805
    functionDepth: 0
    functionLinenumber: 1805
    functionLinenumberEnd: 1809
    functionName: readIntoFunction
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 4
    functionsReached:
    - callback
    linkageType: ''
    returnType: auto
    signature: "auto readIntoFunction(lua_State* /*state*/, tag<TRetValue>, TCallback&&
      callback, int /*index*/)\n        -> TRetValue"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: readIntoFunction
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1817,1
    - Dst: qthread
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1820,1
    - Dst: WrongTypeException
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1822,1
    - Dst: lua_typename
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1822,1
    - Dst: lua_type
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1822,1
    - Dst: typeid
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1822,1
    - Dst: readIntoFunction
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1825,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 7
    argCount: 4
    argNames:
    - state
    - retValueTag
    - ' callback'
    - index
    argTypes:
    - lua_State*
    - tag<TRetValue>
    - TCallback
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1826
      start: 1811
    functionDepth: 2
    functionLinenumber: 1811
    functionLinenumberEnd: 1826
    functionName: readIntoFunction
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 5
    functionsReached:
    - qthread
    - lua_typename
    - typeid
    - WrongTypeException
    - readIntoFunction
    - lua_type
    linkageType: ''
    returnType: auto
    signature: "auto readIntoFunction(lua_State* state, tag<TRetValue> retValueTag,
      TCallback&& callback, int index, tag<TFirstType>, tag<TTypes>... othersTags)\n
      \       -> typename std::enable_if<IsOptional<TFirstType>::value, TRetValue>::type"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: std::logic_error
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1832,1
    - Dst: qthread
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1834,1
    - Dst: WrongTypeException
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1836,1
    - Dst: lua_typename
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1836,1
    - Dst: lua_type
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1836,1
    - Dst: typeid
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1836,1
    - Dst: readIntoFunction
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1839,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 6
    argCount: 4
    argNames:
    - state
    - retValueTag
    - ' callback'
    - index
    argTypes:
    - lua_State*
    - tag<TRetValue>
    - TCallback
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1840
      start: 1828
    functionDepth: 2
    functionLinenumber: 1828
    functionLinenumberEnd: 1840
    functionName: readIntoFunction
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 6
    functionsReached:
    - qthread
    - lua_typename
    - typeid
    - WrongTypeException
    - readIntoFunction
    - lua_type
    - std::logic_error
    linkageType: ''
    returnType: auto
    signature: "auto readIntoFunction(lua_State* state, tag<TRetValue> retValueTag,
      TCallback&& callback, int index, tag<TFirstType>, tag<TTypes>... othersTags)\n
      \       -> typename std::enable_if<!IsOptional<TFirstType>::value, TRetValue>::type"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lua_pushlightuserdata
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1851,1
    - Dst: lua_pushvalue
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1852,1
    - Dst: lua_settable
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1853,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - lua_
    argTypes:
    - lua_State*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1854
      start: 1849
    functionDepth: 0
    functionLinenumber: 1849
    functionLinenumberEnd: 1854
    functionName: ValueInRegistry
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 2
    functionsReached:
    - lua_pushlightuserdata
    - lua_pushvalue
    - lua_settable
    linkageType: ''
    returnType: void
    signature: void ValueInRegistry(lua_State* lua_, int index=-1)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lua_pushlightuserdata
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1859,1
    - Dst: lua_pushnil
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1860,1
    - Dst: lua_settable
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1861,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1862
      start: 1857
    functionDepth: 0
    functionLinenumber: 1857
    functionLinenumberEnd: 1862
    functionName: ~ValueInRegistry()
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 0
    functionsReached:
    - lua_pushlightuserdata
    - lua_pushnil
    - lua_settable
    linkageType: ''
    returnType: void
    signature: void ~ValueInRegistry()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lua_pushlightuserdata
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1867,1
    - Dst: lua_gettable
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1868,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1870
      start: 1865
    functionDepth: 0
    functionLinenumber: 1865
    functionLinenumberEnd: 1870
    functionName: pop
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 39
    functionsReached:
    - lua_pushlightuserdata
    - lua_gettable
    linkageType: ''
    returnType: PushedObject
    signature: PushedObject pop()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1872
      start: 1872
    functionDepth: 0
    functionLinenumber: 1872
    functionLinenumberEnd: 1872
    functionName: ValueInRegistry
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ValueInRegistry(const ValueInRegistry&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1873
      start: 1873
    functionDepth: 0
    functionLinenumber: 1873
    functionLinenumberEnd: 1873
    functionName: '& operator=(const ValueInRegistry&)'
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: ValueInRegistry
    signature: ValueInRegistry & operator=(const ValueInRegistry&)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: function
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1887,1
    - Dst: std::forward<TParams>
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1887,1
    - Dst: function
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1889,1
    - Dst: std::forward<TParams>
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:1889,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1890
      start: 1886
    functionDepth: 0
    functionLinenumber: 1886
    functionLinenumberEnd: 1890
    functionName: "operator()(TParams&&... params)\n            -> decltype(function(param,
      std::forward<TParams>(params)...))"
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 0
    functionsReached:
    - std::forward<TParams>
    - function
    linkageType: ''
    returnType: auto
    signature: "auto operator()(TParams&&... params)\n            -> decltype(function(param,
      std::forward<TParams>(params)...))"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1931
      start: 1928
    functionDepth: 0
    functionLinenumber: 1928
    functionLinenumberEnd: 1931
    functionName: "LuaContext::readTopAndPop<void>(lua_State* /*state*/, PushedObject
      /*obj*/)\n    -> void"
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: "auto LuaContext::readTopAndPop<void>(lua_State* /*state*/, PushedObject
      /*obj*/)\n    -> void"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pop
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2022,1
    - Dst: call
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2023,1
    - Dst: std::move
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2023,1
    - Dst: std::forward<TParams>
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2023,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2024
      start: 2020
    functionDepth: 0
    functionLinenumber: 2020
    functionLinenumberEnd: 2024
    functionName: operator()(TParams&&... params) const
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 0
    functionsReached:
    - call
    - std::move
    - std::forward<TParams>
    - pop
    linkageType: ''
    returnType: TRetValue
    signature: TRetValue operator()(TParams&&... params) const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<ValueInRegistry>
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2033,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - state_
    - index
    argTypes:
    - lua_State*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2035
      start: 2032
    functionDepth: 0
    functionLinenumber: 2032
    functionLinenumberEnd: 2035
    functionName: LuaContext::LuaFunctionCaller<TRetValue (TParams...)>::LuaFunctionCaller
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 0
    functionsReached:
    - std::make_shared<ValueInRegistry>
    linkageType: ''
    returnType: void
    signature: void LuaFunctionCaller(lua_State* state_, int index)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: objectInRegistry::get
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2051,1
    - Dst: objectInRegistry::pop
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2052,1
    - Dst: lua_pushnil
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2055,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - state
    - ' value'
    argTypes:
    - lua_State*
    - LuaContext::LuaObject
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2058
      start: 2050
    functionDepth: 0
    functionLinenumber: 2050
    functionLinenumberEnd: 2058
    functionName: push
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 80
    functionsReached:
    - objectInRegistry::get
    - lua_pushnil
    - objectInRegistry::pop
    linkageType: ''
    returnType: PushedObject
    signature: PushedObject push(lua_State* state, const LuaContext::LuaObject& value)
      noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lua_pushboolean
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2068,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - state
    - value
    argTypes:
    - lua_State*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2070
      start: 2067
    functionDepth: 0
    functionLinenumber: 2067
    functionLinenumberEnd: 2070
    functionName: push
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 80
    functionsReached:
    - lua_pushboolean
    linkageType: ''
    returnType: PushedObject
    signature: PushedObject push(lua_State* state, bool value) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lua_pushlstring
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2080,1
    - Dst: c_str
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2080,1
    - Dst: length
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2080,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - state
    - ' value'
    argTypes:
    - lua_State*
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2082
      start: 2079
    functionDepth: 0
    functionLinenumber: 2079
    functionLinenumberEnd: 2082
    functionName: push
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 80
    functionsReached:
    - c_str
    - length
    - lua_pushlstring
    linkageType: ''
    returnType: PushedObject
    signature: PushedObject push(lua_State* state, const std::string& value) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lua_pushstring
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2092,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - state
    - value
    argTypes:
    - lua_State*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2094
      start: 2091
    functionDepth: 0
    functionLinenumber: 2091
    functionLinenumberEnd: 2094
    functionName: push
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 80
    functionsReached:
    - lua_pushstring
    linkageType: ''
    returnType: PushedObject
    signature: PushedObject push(lua_State* state, const char* value) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lua_pushstring
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2104,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - state
    - value
    argTypes:
    - lua_State*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2106
      start: 2103
    functionDepth: 0
    functionLinenumber: 2103
    functionLinenumberEnd: 2106
    functionName: push
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 80
    functionsReached:
    - lua_pushstring
    linkageType: ''
    returnType: PushedObject
    signature: PushedObject push(lua_State* state, const char* value) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lua_pushnumber
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2116,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - state
    - value
    argTypes:
    - lua_State*
    - T
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2118
      start: 2115
    functionDepth: 0
    functionLinenumber: 2115
    functionLinenumberEnd: 2118
    functionName: push
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 80
    functionsReached:
    - lua_pushnumber
    linkageType: ''
    returnType: PushedObject
    signature: PushedObject push(lua_State* state, T value) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lua_pushinteger
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2128,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - state
    - value
    argTypes:
    - lua_State*
    - T
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2130
      start: 2127
    functionDepth: 0
    functionLinenumber: 2127
    functionLinenumberEnd: 2130
    functionName: push
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 80
    functionsReached:
    - lua_pushinteger
    linkageType: ''
    returnType: PushedObject
    signature: PushedObject push(lua_State* state, T value) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lua_pushnil
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2140,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - state
    argTypes:
    - lua_State*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2142
      start: 2139
    functionDepth: 0
    functionLinenumber: 2139
    functionLinenumberEnd: 2142
    functionName: push
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 80
    functionsReached:
    - lua_pushnil
    linkageType: ''
    returnType: PushedObject
    signature: PushedObject push(lua_State* state, std::nullptr_t) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lua_newtable
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2152,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - state
    argTypes:
    - lua_State*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2154
      start: 2151
    functionDepth: 0
    functionLinenumber: 2151
    functionLinenumberEnd: 2154
    functionName: push
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 80
    functionsReached:
    - lua_newtable
    linkageType: ''
    returnType: PushedObject
    signature: PushedObject push(lua_State* state, EmptyArray_t) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lua_pushlightuserdata
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2164,1
    - Dst: const_cast<std::type_info*>
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2164,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - state
    - ptr
    argTypes:
    - lua_State*
    - std::type_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2166
      start: 2163
    functionDepth: 0
    functionLinenumber: 2163
    functionLinenumberEnd: 2166
    functionName: push
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 80
    functionsReached:
    - lua_pushlightuserdata
    - const_cast<std::type_info*>
    linkageType: ''
    returnType: PushedObject
    signature: PushedObject push(lua_State* state, const std::type_info* ptr) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lua_pushthread
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2176,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - state
    - ' value'
    argTypes:
    - lua_State*
    - LuaContext::ThreadID
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2178
      start: 2175
    functionDepth: 0
    functionLinenumber: 2175
    functionLinenumberEnd: 2178
    functionName: push
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 80
    functionsReached:
    - lua_pushthread
    linkageType: ''
    returnType: PushedObject
    signature: PushedObject push(lua_State* state, const LuaContext::ThreadID& value)
      noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: push
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2191,1
    - Dst: begin
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2193,1
    - Dst: end
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2193,1
    - Dst: setTable
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2194,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 4
    argCount: 2
    argNames:
    - state
    - ' value'
    argTypes:
    - lua_State*
    - std::map<TKey,TValue>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2197
      start: 2187
    functionDepth: 0
    functionLinenumber: 2187
    functionLinenumberEnd: 2197
    functionName: push
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 81
    functionsReached:
    - end
    - setTable
    - push
    - begin
    linkageType: ''
    returnType: PushedObject
    signature: PushedObject push(lua_State* state, const std::map<TKey,TValue>& value)
      noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: push
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2210,1
    - Dst: begin
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2212,1
    - Dst: end
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2212,1
    - Dst: setTable
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2213,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 4
    argCount: 2
    argNames:
    - state
    - ' value'
    argTypes:
    - lua_State*
    - std::unordered_map<TKey,TValue,THash,TKeyEqual>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2216
      start: 2206
    functionDepth: 0
    functionLinenumber: 2206
    functionLinenumberEnd: 2216
    functionName: push
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 82
    functionsReached:
    - end
    - setTable
    - push
    - begin
    linkageType: ''
    returnType: PushedObject
    signature: PushedObject push(lua_State* state, const std::unordered_map<TKey,TValue,THash,TKeyEqual>&
      value) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: push
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2229,1
    - Dst: begin
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2231,1
    - Dst: end
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2231,1
    - Dst: setTable
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2232,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 4
    argCount: 2
    argNames:
    - state
    - ' value'
    argTypes:
    - lua_State*
    - std::vector<std::pair<TType1,TType2>>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2235
      start: 2225
    functionDepth: 0
    functionLinenumber: 2225
    functionLinenumberEnd: 2235
    functionName: push
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 83
    functionsReached:
    - end
    - setTable
    - push
    - begin
    linkageType: ''
    returnType: PushedObject
    signature: PushedObject push(lua_State* state, const std::vector<std::pair<TType1,TType2>>&
      value) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: push
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2247,1
    - Dst: size
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2249,1
    - Dst: setTable
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2250,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 2
    argNames:
    - state
    - ' value'
    argTypes:
    - lua_State*
    - std::vector<TType>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2253
      start: 2244
    functionDepth: 0
    functionLinenumber: 2244
    functionLinenumberEnd: 2253
    functionName: push
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 84
    functionsReached:
    - size
    - setTable
    - push
    linkageType: ''
    returnType: PushedObject
    signature: PushedObject push(lua_State* state, const std::vector<TType>& value)
      noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: push
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2263,1
    - Dst: std::move
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2263,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - state
    - value
    argTypes:
    - lua_State*
    - std::unique_ptr<TType>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2264
      start: 2262
    functionDepth: 0
    functionLinenumber: 2262
    functionLinenumberEnd: 2264
    functionName: push
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 85
    functionsReached:
    - std::move
    - push
    linkageType: ''
    returnType: PushedObject
    signature: PushedObject push(lua_State* state, std::unique_ptr<TType> value) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: push
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2283,1
    - Dst: static_cast<RealType>
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2283,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - state
    - value
    argTypes:
    - lua_State*
    - TEnum
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2284
      start: 2282
    functionDepth: 0
    functionLinenumber: 2282
    functionLinenumberEnd: 2284
    functionName: push
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 86
    functionsReached:
    - static_cast<RealType>
    - push
    linkageType: ''
    returnType: PushedObject
    signature: PushedObject push(lua_State* state, TEnum value) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2314,1
    - Dst: lua_gettop
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2314,1
    - Dst: assert
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2315,1
    - Dst: lua_isuserdata
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2315,1
    - Dst: static_cast<TFunctionObject*>
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2316,1
    - Dst: lua_touserdata
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2316,1
    - Dst: assert
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2317,1
    - Dst: callback
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2319,1
    - Dst: lua_gettop
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2319,1
    - Dst: assert
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2325,1
    - Dst: lua_gettop
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2325,1
    - Dst: static_cast<TFunctionObject*>
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2326,1
    - Dst: lua_touserdata
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2326,1
    - Dst: assert
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2327,1
    - Dst: auto::~TFunctionObject
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2328,1
    - Dst: static_cast<TFunctionObject*>
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2336,1
    - Dst: lua_newuserdata
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2336,1
    - Dst: std::move
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2337,1
    - Dst: TFunctionObject::TFunctionObject
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2337,1
    - Dst: lua_newtable
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2342,1
    - Dst: lua_pushstring
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2343,1
    - Dst: lua_pushcfunction
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2344,1
    - Dst: lua_settable
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2345,1
    - Dst: lua_pushstring
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2347,1
    - Dst: lua_pushcfunction
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2348,1
    - Dst: lua_settable
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2349,1
    - Dst: lua_setmetatable
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2354,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 21
    argCount: 2
    argNames:
    - state
    - fn
    argTypes:
    - lua_State*
    - TFunctionObject
    assertStmts:
    - condition: (lua_isuserdata(lua, 1))
      pos:
        line_end: 2314
        line_start: 2314
        source_file: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    - condition: (lua_gettop(lua) >= 1)
      pos:
        line_end: 2313
        line_start: 2313
        source_file: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    - condition: (lua_gettop(lua) == 1)
      pos:
        line_end: 2324
        line_start: 2324
        source_file: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    - condition: (function)
      pos:
        line_end: 2316
        line_start: 2316
        source_file: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    - condition: (function)
      pos:
        line_end: 2326
        line_start: 2326
        source_file: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    constantsTouched: []
    func_position:
      end: 2357
      start: 2301
    functionDepth: 0
    functionLinenumber: 2301
    functionLinenumberEnd: 2357
    functionName: push
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 86
    functionsReached:
    - callback
    - lua_settable
    - std::move
    - lua_isuserdata
    - auto::~TFunctionObject
    - lua_newtable
    - lua_setmetatable
    - lua_touserdata
    - lua_newuserdata
    - assert
    - lua_pushcfunction
    - lua_gettop
    - TFunctionObject::TFunctionObject
    - lua_pushstring
    - static_cast<TFunctionObject*>
    linkageType: ''
    returnType: auto
    signature: "auto push(lua_State* state, TFunctionObject fn) noexcept\n        ->
      typename std::enable_if<!boost::has_trivial_destructor<TFunctionObject>::value,
      PushedObject>::type"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<TFunctionObject*>
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2374,1
    - Dst: lua_touserdata
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2374,1
    - Dst: lua_upvalueindex
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2374,1
    - Dst: callback
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2375,1
    - Dst: lua_gettop
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2375,1
    - Dst: static_cast<TFunctionObject*>
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2380,1
    - Dst: lua_newuserdata
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2380,1
    - Dst: std::move
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2381,1
    - Dst: TFunctionObject::TFunctionObject
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2381,1
    - Dst: lua_pushcclosure
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2384,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - state
    - fn
    argTypes:
    - lua_State*
    - TFunctionObject
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2386
      start: 2361
    functionDepth: 0
    functionLinenumber: 2361
    functionLinenumberEnd: 2386
    functionName: push
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 86
    functionsReached:
    - callback
    - std::move
    - lua_pushcclosure
    - lua_touserdata
    - lua_newuserdata
    - lua_upvalueindex
    - lua_gettop
    - TFunctionObject::TFunctionObject
    - static_cast<TFunctionObject*>
    linkageType: ''
    returnType: auto
    signature: "auto push(lua_State* state, TFunctionObject fn) noexcept\n        ->
      typename std::enable_if<boost::has_trivial_destructor<TFunctionObject>::value,
      PushedObject>::type"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: reinterpret_cast<TReturnType (*)(TParameters...)>
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2399,1
    - Dst: lua_touserdata
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2399,1
    - Dst: lua_upvalueindex
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2399,1
    - Dst: callback
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2400,1
    - Dst: lua_gettop
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2400,1
    - Dst: lua_pushlightuserdata
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2404,1
    - Dst: reinterpret_cast<void*>
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2404,1
    - Dst: lua_pushcclosure
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2407,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - state
    argTypes:
    - lua_State*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2409
      start: 2389
    functionDepth: 0
    functionLinenumber: 2389
    functionLinenumberEnd: 2409
    functionName: push
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 86
    functionsReached:
    - callback
    - lua_pushcclosure
    - lua_touserdata
    - reinterpret_cast<TReturnType (*)(TParameters...)>
    - lua_upvalueindex
    - lua_pushlightuserdata
    - reinterpret_cast<void*>
    - lua_gettop
    linkageType: ''
    returnType: auto
    signature: "auto push(lua_State* state, TReturnType (*fn)(TParameters...)) noexcept\n
      \       -> PushedObject"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: push
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2415,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - state
    argTypes:
    - lua_State*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2416
      start: 2412
    functionDepth: 0
    functionLinenumber: 2412
    functionLinenumberEnd: 2416
    functionName: push
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 87
    functionsReached:
    - push
    linkageType: ''
    returnType: auto
    signature: "auto push(lua_State* state, TReturnType (&fn)(TParameters...)) noexcept\n
      \       -> PushedObject"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: luaL_where
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2428,1
    - Dst: lua_pushstring
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2429,1
    - Dst: lua_pushnumber
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2430,1
    - Dst: lua_pushstring
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2431,1
    - Dst: lua_concat
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2432,1
    - Dst: luaError
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2433,1
    - Dst: luaL_where
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2437,1
    - Dst: lua_pushstring
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2438,1
    - Dst: lua_pushnumber
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2439,1
    - Dst: lua_pushstring
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2440,1
    - Dst: lua_concat
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2441,1
    - Dst: luaError
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2442,1
    - Dst: callback2
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2447,1
    - Dst: luaL_where
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2451,1
    - Dst: lua_pushstring
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2452,1
    - Dst: lua_pushstring
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2453,1
    - Dst: luaType::c_str
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2453,1
    - Dst: lua_pushstring
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2454,1
    - Dst: lua_pushstring
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2455,1
    - Dst: destination::name
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2455,1
    - Dst: lua_concat
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2456,1
    - Dst: luaError
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2457,1
    - Dst: luaL_where
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2460,1
    - Dst: lua_pushstring
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2461,1
    - Dst: lua_pushstring
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2462,1
    - Dst: what
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2462,1
    - Dst: lua_concat
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2463,1
    - Dst: luaError
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2464,1
    - Dst: push
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2466,1
    - Dst: std::current_exception
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2466,1
    - Dst: luaError
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2467,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 37
    argCount: 3
    argNames:
    - state
    - toCall
    - argumentsCount
    argTypes:
    - lua_State*
    - TFunctionObject*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2469
      start: 2422
    functionDepth: 0
    functionLinenumber: 2422
    functionLinenumberEnd: 2469
    functionName: callback
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 83
    functionsReached:
    - luaError
    - lua_pushnumber
    - callback2
    - luaL_where
    - push
    - what
    - luaType::c_str
    - std::current_exception
    - destination::name
    - lua_concat
    - lua_pushstring
    linkageType: ''
    returnType: auto
    signature: "auto callback(lua_State* state, TFunctionObject* toCall, int argumentsCount)\n
      \       -> PushedObject"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: push
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2478,1
    - Dst: readIntoFunction
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2478,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 2
    argCount: 3
    argNames:
    - state
    - ' toCall'
    - argumentsCount
    argTypes:
    - lua_State*
    - TFunctionObject
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2479
      start: 2472
    functionDepth: 0
    functionLinenumber: 2472
    functionLinenumberEnd: 2479
    functionName: callback2
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 4
    functionsReached:
    - readIntoFunction
    - push
    linkageType: ''
    returnType: auto
    signature: "auto callback2(lua_State* state, TFunctionObject&& toCall, int argumentsCount)\n
      \       -> typename std::enable_if<!std::is_void<TReturnType>::value && !std::is_void<TFunctionObject>::value,
      PushedObject>::type"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: readIntoFunction
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2485,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 3
    argCount: 3
    argNames:
    - state
    - ' toCall'
    - argumentsCount
    argTypes:
    - lua_State*
    - TFunctionObject
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2487
      start: 2482
    functionDepth: 0
    functionLinenumber: 2482
    functionLinenumberEnd: 2487
    functionName: callback2
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 4
    functionsReached:
    - readIntoFunction
    linkageType: ''
    returnType: auto
    signature: "auto callback2(lua_State* state, TFunctionObject&& toCall, int argumentsCount)\n
      \       -> typename std::enable_if<std::is_void<TReturnType>::value && !std::is_void<TFunctionObject>::value,
      PushedObject>::type"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: push
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2502,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - state
    - value
    argTypes:
    - lua_State*
    - TType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2503
      start: 2501
    functionDepth: 0
    functionLinenumber: 2501
    functionLinenumberEnd: 2503
    functionName: push
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 90
    functionsReached:
    - push
    linkageType: ''
    returnType: PushedObject
    signature: PushedObject push(lua_State* state, TType value) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: push
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2518,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - state
    - value
    argTypes:
    - lua_State*
    - TType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2519
      start: 2517
    functionDepth: 0
    functionLinenumber: 2517
    functionLinenumberEnd: 2519
    functionName: push
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 91
    functionsReached:
    - push
    linkageType: ''
    returnType: PushedObject
    signature: PushedObject push(lua_State* state, TType value) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: push
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2533,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - state
    - ' value'
    argTypes:
    - lua_State*
    - std::function<TReturnType (TParameters...)>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2534
      start: 2532
    functionDepth: 0
    functionLinenumber: 2532
    functionLinenumberEnd: 2534
    functionName: push
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 92
    functionsReached:
    - push
    linkageType: ''
    returnType: PushedObject
    signature: PushedObject push(lua_State* state, const std::function<TReturnType
      (TParameters...)>& value) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: apply_visitor
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2547,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - state
    - ' value'
    argTypes:
    - lua_State*
    - boost::variant<TTypes...>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2549
      start: 2544
    functionDepth: 0
    functionLinenumber: 2544
    functionLinenumberEnd: 2549
    functionName: push
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 92
    functionsReached:
    - apply_visitor
    linkageType: ''
    returnType: PushedObject
    signature: PushedObject push(lua_State* state, const boost::variant<TTypes...>&
      value) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: push
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2556,1
    - Dst: std::move
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2556,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - value
    argTypes:
    - TType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2557
      start: 2554
    functionDepth: 0
    functionLinenumber: 2554
    functionLinenumberEnd: 2557
    functionName: operator()(TType value) noexcept
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 0
    functionsReached:
    - std::move
    - push
    linkageType: ''
    returnType: void
    signature: void operator()(TType value) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - state_
    - ' obj_'
    argTypes:
    - lua_State*
    - PushedObject
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2559
      start: 2559
    functionDepth: 0
    functionLinenumber: 2559
    functionLinenumberEnd: 2559
    functionName: VariantWriter
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void VariantWriter(lua_State* state_, PushedObject& obj_)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: visit
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2575,1
    - Dst: push
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2577,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - state
    - ' value'
    argTypes:
    - lua_State*
    - std::variant<TTypes...>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2580
      start: 2573
    functionDepth: 0
    functionLinenumber: 2573
    functionLinenumberEnd: 2580
    functionName: push
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 94
    functionsReached:
    - visit
    - push
    linkageType: ''
    returnType: PushedObject
    signature: PushedObject push(lua_State* state, const std::variant<TTypes...>&
      value) noexcept
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: push
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2595,1
    - Dst: get
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2595,1
    - Dst: lua_pushnil
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2597,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - state
    - ' value'
    argTypes:
    - lua_State*
    - boost::optional<TType>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2600
      start: 2593
    functionDepth: 0
    functionLinenumber: 2593
    functionLinenumberEnd: 2600
    functionName: push
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 95
    functionsReached:
    - lua_pushnil
    - push
    - get
    linkageType: ''
    returnType: PushedObject
    signature: PushedObject push(lua_State* state, const boost::optional<TType>& value)
      noexcept
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: has_value
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2614,1
    - Dst: push
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2615,1
    - Dst: value
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2615,1
    - Dst: lua_pushnil
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2617,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - state
    - ' value'
    argTypes:
    - lua_State*
    - std::optional<TType>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2620
      start: 2613
    functionDepth: 0
    functionLinenumber: 2613
    functionLinenumberEnd: 2620
    functionName: push
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 96
    functionsReached:
    - has_value
    - value
    - push
    - lua_pushnil
    linkageType: ''
    returnType: PushedObject
    signature: PushedObject push(lua_State* state, const std::optional<TType>& value)
      noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: push2
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2632,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - state
    - ' value'
    argTypes:
    - lua_State*
    - std::tuple<TTypes...>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2633
      start: 2631
    functionDepth: 0
    functionLinenumber: 2631
    functionLinenumberEnd: 2633
    functionName: push
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 96
    functionsReached:
    - push2
    linkageType: ''
    returnType: PushedObject
    signature: PushedObject push(lua_State* state, const std::tuple<TTypes...>& value)
      noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: push2
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2636,1
    - Dst: std::move
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2636,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 2
    argNames:
    - state
    - ' value'
    argTypes:
    - lua_State*
    - std::tuple<TTypes...>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2637
      start: 2635
    functionDepth: 0
    functionLinenumber: 2635
    functionLinenumberEnd: 2637
    functionName: push
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 96
    functionsReached:
    - push2
    - std::move
    linkageType: ''
    returnType: PushedObject
    signature: PushedObject push(lua_State* state, std::tuple<TTypes...>&& value)
      noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: push
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2644,1
    - Dst: std::get<N>
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2644,1
    - Dst: push2
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2645,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - state
    - ' value'
    argTypes:
    - lua_State*
    - std::tuple<TTypes...>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2646
      start: 2641
    functionDepth: 0
    functionLinenumber: 2641
    functionLinenumberEnd: 2646
    functionName: push2
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 7
    functionsReached:
    - push2
    - std::get<N>
    - push
    linkageType: ''
    returnType: int
    signature: int push2(lua_State* state, const std::tuple<TTypes...>& value, std::integral_constant<int,N>)
      noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: push
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2652,1
    - Dst: std::move
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2652,1
    - Dst: std::get<N>
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2652,1
    - Dst: push2
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2653,1
    - Dst: std::move
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2653,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 2
    argNames:
    - state
    - ' value'
    argTypes:
    - lua_State*
    - std::tuple<TTypes...>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2654
      start: 2649
    functionDepth: 0
    functionLinenumber: 2649
    functionLinenumberEnd: 2654
    functionName: push2
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 8
    functionsReached:
    - push2
    - std::move
    - std::get<N>
    - push
    linkageType: ''
    returnType: int
    signature: int push2(lua_State* state, std::tuple<TTypes...>&& value, std::integral_constant<int,N>)
      noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2658
      start: 2656
    functionDepth: 0
    functionLinenumber: 2656
    functionLinenumberEnd: 2658
    functionName: push2
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 8
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int push2(lua_State* /*state*/, const std::tuple<TTypes...>&, std::integral_constant<int,sizeof...(TTypes)>)
      noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2662
      start: 2660
    functionDepth: 0
    functionLinenumber: 2660
    functionLinenumberEnd: 2662
    functionName: push2
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 8
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int push2(lua_State* /*state*/, std::tuple<TTypes...>&&, std::integral_constant<int,sizeof...(TTypes)>)
      noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - state
    - index
    argTypes:
    - lua_State*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2679
      start: 2674
    functionDepth: 0
    functionLinenumber: 2674
    functionLinenumberEnd: 2679
    functionName: read
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 207
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: "auto read(lua_State* state, int index)\n        -> boost::optional<LuaContext::LuaObject>"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lua_isnil
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2689,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - state
    - index
    argTypes:
    - lua_State*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2692
      start: 2686
    functionDepth: 0
    functionLinenumber: 2686
    functionLinenumberEnd: 2692
    functionName: read
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 207
    functionsReached:
    - lua_isnil
    linkageType: ''
    returnType: auto
    signature: "auto read(lua_State* state, int index)\n        -> boost::optional<std::nullptr_t>"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lua_tointegerx
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2708,1
    - Dst: static_cast<TType>
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2711,1
    - Dst: lua_isnumber
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2715,1
    - Dst: static_cast<TType>
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2717,1
    - Dst: lua_tointeger
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2717,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - state
    - index
    argTypes:
    - lua_State*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2720
      start: 2702
    functionDepth: 0
    functionLinenumber: 2702
    functionLinenumberEnd: 2720
    functionName: read
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 207
    functionsReached:
    - lua_tointeger
    - lua_tointegerx
    - lua_isnumber
    - static_cast<TType>
    linkageType: ''
    returnType: auto
    signature: "auto read(lua_State* state, int index)\n        -> boost::optional<TType>"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lua_tonumberx
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2736,1
    - Dst: static_cast<TType>
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2739,1
    - Dst: lua_isnumber
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2743,1
    - Dst: static_cast<TType>
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2745,1
    - Dst: lua_tonumber
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2745,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - state
    - index
    argTypes:
    - lua_State*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2748
      start: 2730
    functionDepth: 0
    functionLinenumber: 2730
    functionLinenumberEnd: 2748
    functionName: read
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 207
    functionsReached:
    - lua_tonumberx
    - lua_tonumber
    - lua_isnumber
    - static_cast<TType>
    linkageType: ''
    returnType: auto
    signature: "auto read(lua_State* state, int index)\n        -> boost::optional<TType>"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lua_isboolean
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2758,1
    - Dst: lua_toboolean
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2760,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - state
    - index
    argTypes:
    - lua_State*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2761
      start: 2755
    functionDepth: 0
    functionLinenumber: 2755
    functionLinenumberEnd: 2761
    functionName: read
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 207
    functionsReached:
    - lua_toboolean
    - lua_isboolean
    linkageType: ''
    returnType: auto
    signature: "auto read(lua_State* state, int index)\n        -> boost::optional<bool>"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lua_pushvalue
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2777,1
    - Dst: lua_tolstring
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2780,1
    - Dst: std::string::assign
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2783,1
    - Dst: lua_pop
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2785,1
    - Dst: std::move
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2787,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - state
    - index
    argTypes:
    - lua_State*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2788
      start: 2770
    functionDepth: 1
    functionLinenumber: 2770
    functionLinenumberEnd: 2788
    functionName: read
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 207
    functionsReached:
    - std::move
    - lua_pushvalue
    - std::string::assign
    - lua_tolstring
    - lua_pop
    linkageType: ''
    returnType: auto
    signature: "auto read(lua_State* state, int index)\n        -> boost::optional<std::string>"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lua_isnumber
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2801,1
    - Dst: fmod
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2801,1
    - Dst: lua_tonumber
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2801,1
    - Dst: static_cast<TType>
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2803,1
    - Dst: lua_tointeger
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2803,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 2
    argNames:
    - state
    - index
    argTypes:
    - lua_State*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2804
      start: 2798
    functionDepth: 0
    functionLinenumber: 2798
    functionLinenumberEnd: 2804
    functionName: read
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 207
    functionsReached:
    - lua_tonumber
    - static_cast<TType>
    - fmod
    - lua_tointeger
    - lua_isnumber
    linkageType: ''
    returnType: auto
    signature: "auto read(lua_State* state, int index)\n        -> boost::optional<TType>"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lua_isfunction
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2817,1
    - Dst: lua_isuserdata
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2817,1
    - Dst: ReturnType
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2819,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 2
    argNames:
    - state
    - index
    argTypes:
    - lua_State*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2820
      start: 2814
    functionDepth: 0
    functionLinenumber: 2814
    functionLinenumberEnd: 2820
    functionName: read
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 207
    functionsReached:
    - ReturnType
    - lua_isfunction
    - lua_isuserdata
    linkageType: ''
    returnType: auto
    signature: "auto read(lua_State* state, int index)\n        -> boost::optional<ReturnType>"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: qthread
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2830,1
    - Dst: std::move
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2833,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - state
    - index
    argTypes:
    - lua_State*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2837
      start: 2827
    functionDepth: 2
    functionLinenumber: 2827
    functionLinenumberEnd: 2837
    functionName: read
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 208
    functionsReached:
    - qthread
    - std::move
    linkageType: ''
    returnType: auto
    signature: "auto read(lua_State* state, int index)\n        -> boost::optional<std::function<TRetValue
      (TParameters...)>>"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lua_istable
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2847,1
    - Dst: lua_pushnil
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2853,1
    - Dst: lua_next
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2854,1
    - Dst: qthread
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2857,1
    - Dst: qthread
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2858,1
    - Dst: auto::is_initialized
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2860,1
    - Dst: auto::is_initialized
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2860,1
    - Dst: lua_pop
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2861,1
    - Dst: std::vector::push_back
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2865,1
    - Dst: auto::get
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2865,1
    - Dst: auto::get
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2865,1
    - Dst: lua_pop
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2866,1
    - Dst: lua_pop
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2869,1
    - Dst: std::move
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2874,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 2
    argNames:
    - state
    - index
    argTypes:
    - lua_State*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2875
      start: 2844
    functionDepth: 2
    functionLinenumber: 2844
    functionLinenumberEnd: 2875
    functionName: read
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 209
    functionsReached:
    - qthread
    - std::vector::push_back
    - std::move
    - auto::get
    - auto::is_initialized
    - lua_next
    - lua_pushnil
    - lua_istable
    - lua_pop
    linkageType: ''
    returnType: auto
    signature: "auto read(lua_State* state, int index)\n        -> boost::optional<std::vector<std::pair<TType1,
      TType2>>>"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lua_istable
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2885,1
    - Dst: lua_pushnil
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2891,1
    - Dst: lua_next
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2892,1
    - Dst: qthread
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2895,1
    - Dst: qthread
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2896,1
    - Dst: auto::is_initialized
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2898,1
    - Dst: auto::is_initialized
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2898,1
    - Dst: lua_pop
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2899,1
    - Dst: std::map::insert
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2903,1
    - Dst: auto::get
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2903,1
    - Dst: auto::get
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2903,1
    - Dst: lua_pop
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2904,1
    - Dst: lua_pop
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2907,1
    - Dst: std::move
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2912,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 2
    argNames:
    - state
    - index
    argTypes:
    - lua_State*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2913
      start: 2882
    functionDepth: 2
    functionLinenumber: 2882
    functionLinenumberEnd: 2913
    functionName: read
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 210
    functionsReached:
    - qthread
    - std::move
    - auto::get
    - std::map::insert
    - auto::is_initialized
    - lua_next
    - lua_pushnil
    - lua_istable
    - lua_pop
    linkageType: ''
    returnType: auto
    signature: "auto read(lua_State* state, int index)\n        -> boost::optional<std::map<TKey,TValue>>"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lua_istable
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2923,1
    - Dst: lua_pushnil
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2929,1
    - Dst: lua_next
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2930,1
    - Dst: qthread
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2933,1
    - Dst: qthread
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2934,1
    - Dst: auto::is_initialized
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2936,1
    - Dst: auto::is_initialized
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2936,1
    - Dst: lua_pop
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2937,1
    - Dst: std::unordered_map::insert
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2941,1
    - Dst: auto::get
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2941,1
    - Dst: auto::get
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2941,1
    - Dst: lua_pop
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2942,1
    - Dst: lua_pop
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2945,1
    - Dst: std::move
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2950,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 2
    argNames:
    - state
    - index
    argTypes:
    - lua_State*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2951
      start: 2920
    functionDepth: 2
    functionLinenumber: 2920
    functionLinenumberEnd: 2951
    functionName: read
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 211
    functionsReached:
    - qthread
    - std::move
    - auto::get
    - auto::is_initialized
    - lua_next
    - std::unordered_map::insert
    - lua_pushnil
    - lua_istable
    - lua_pop
    linkageType: ''
    returnType: auto
    signature: "auto read(lua_State* state, int index)\n        -> boost::optional<std::unordered_map<TKey,TValue,THash,TKeyEqual>>"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lua_isnil
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2965,1
    - Dst: qthread
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2967,1
    - Dst: std::move
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2968,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 2
    argNames:
    - state
    - index
    argTypes:
    - lua_State*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2970
      start: 2962
    functionDepth: 2
    functionLinenumber: 2962
    functionLinenumberEnd: 2970
    functionName: read
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 212
    functionsReached:
    - qthread
    - std::move
    - lua_isnil
    linkageType: ''
    returnType: auto
    signature: "auto read(lua_State* state, int index)\n        -> boost::optional<boost::optional<TType>>"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lua_isnil
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2981,1
    - Dst: std::optional<TType>
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2982,1
    - Dst: qthread
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2984,1
    - Dst: std::move
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2985,1
    - Dst: std::optional<TType>
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:2985,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - state
    - index
    argTypes:
    - lua_State*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2988
      start: 2978
    functionDepth: 2
    functionLinenumber: 2978
    functionLinenumberEnd: 2988
    functionName: read
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 213
    functionsReached:
    - qthread
    - std::optional<TType>
    - std::move
    - lua_isnil
    linkageType: ''
    returnType: auto
    signature: "auto read(lua_State* state, int index)\n        -> boost::optional<std::optional<TType>>"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: qthread
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:3011,1
    - Dst: qthread
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:3013,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - state
    - index
    argTypes:
    - lua_State*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3014
      start: 3007
    functionDepth: 2
    functionLinenumber: 3007
    functionLinenumberEnd: 3014
    functionName: read
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 214
    functionsReached:
    - qthread
    linkageType: ''
    returnType: auto
    signature: "auto read(lua_State* state, int index)\n            -> boost::optional<ReturnType>"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3025
      start: 3021
    functionDepth: 0
    functionLinenumber: 3021
    functionLinenumberEnd: 3025
    functionName: read
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 214
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: "auto read(lua_State* /*state*/, int /*index*/)\n            -> boost::optional<ReturnType>"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: qthread
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:3036,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - state
    - index
    argTypes:
    - lua_State*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3037
      start: 3033
    functionDepth: 2
    functionLinenumber: 3033
    functionLinenumberEnd: 3037
    functionName: read
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 215
    functionsReached:
    - qthread
    linkageType: ''
    returnType: auto
    signature: "auto read(lua_State* state, int index)\n        -> boost::optional<ReturnType>"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: qthread
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:3056,1
    - Dst: variantRead
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:3062,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - state
    - index
    argTypes:
    - lua_State*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3065
      start: 3048
    functionDepth: 2
    functionLinenumber: 3048
    functionLinenumberEnd: 3065
    functionName: variantRead
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 3
    functionsReached:
    - qthread
    - variantRead
    linkageType: ''
    returnType: boost::optional<ReturnType>
    signature: boost::optional<ReturnType> variantRead(lua_State* state, int index)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: variantRead
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:3071,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - state
    - index
    argTypes:
    - lua_State*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3072
      start: 3068
    functionDepth: 0
    functionLinenumber: 3068
    functionLinenumberEnd: 3072
    functionName: read
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 216
    functionsReached:
    - variantRead
    linkageType: ''
    returnType: auto
    signature: "auto read(lua_State* state, int index)\n        -> boost::optional<ReturnType>"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3086
      start: 3082
    functionDepth: 0
    functionLinenumber: 3082
    functionLinenumberEnd: 3086
    functionName: read
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 216
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: "auto read(lua_State* /*state*/, int /*index*/, int /*maxSize*/ = 0)\n
      \       -> boost::optional<std::tuple<>>"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: qthread
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:3105,1
    - Dst: qthread
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:3106,1
    - Dst: std::tuple_cat
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:3111,1
    - Dst: std::tuple<TFirst>
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:3111,1
    - Dst: std::move
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:3111,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 2
    argNames:
    - state
    - index
    argTypes:
    - lua_State*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3112
      start: 3099
    functionDepth: 2
    functionLinenumber: 3099
    functionLinenumberEnd: 3112
    functionName: read
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 217
    functionsReached:
    - qthread
    - std::move
    - std::tuple<TFirst>
    - std::tuple_cat
    linkageType: ''
    returnType: auto
    signature: "auto read(lua_State* state, int index, int maxSize = std::tuple_size<ReturnType>::value)\n
      \       -> boost::optional<ReturnType>"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: qthread
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:3128,1
    - Dst: std::tuple_cat
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:3133,1
    - Dst: std::tuple<TFirst>
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:3133,1
    - Dst: std::move
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:3133,1
    - Dst: qthread
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:3135,1
    - Dst: std::tuple_cat
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:3139,1
    - Dst: std::tuple<TFirst>
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:3139,1
    - Dst: std::move
      Src: /src/pdns/ext/luawrapper/include/LuaContext.hpp:3139,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - state
    - index
    argTypes:
    - lua_State*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3140
      start: 3125
    functionDepth: 2
    functionLinenumber: 3125
    functionLinenumberEnd: 3140
    functionName: read
    functionSourceFile: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    functionUses: 218
    functionsReached:
    - qthread
    - std::move
    - std::tuple<TFirst>
    - std::tuple_cat
    linkageType: ''
    returnType: auto
    signature: "auto read(lua_State* state, int index, int maxSize = std::tuple_size<ReturnType>::value)\n
      \       -> boost::optional<ReturnType>"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::string_view::size
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.cc:26,1
    - Dst: std::runtime_error
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.cc:27,1
    - Dst: reinterpret_cast<const LSheader*>
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.cc:30,1
    - Dst: std::string_view::data
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.cc:30,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - val
    argTypes:
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 31
      start: 24
    functionDepth: 0
    functionLinenumber: 24
    functionLinenumberEnd: 31
    functionName: LMDBLS::LSassertFixedHeaderSize
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-safe.cc
    functionUses: 6
    functionsReached:
    - std::string_view::size
    - std::string_view::data
    - reinterpret_cast<const LSheader*>
    - std::runtime_error
    linkageType: ''
    returnType: LSheader
    signature: LSheader * LSassertFixedHeaderSize(std::string_view val)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: LMDBLS::LSassertFixedHeaderSize
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.cc:34,1
    - Dst: std::runtime_error
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.cc:37,1
    - Dst: std::string_view::data
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.cc:42,1
    - Dst: std::string_view::size
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.cc:47,1
    - Dst: std::runtime_error
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.cc:48,1
    - Dst: std::string_view::size
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.cc:51,1
    - Dst: std::runtime_error
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.cc:52,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 12
    argCount: 2
    argNames:
    - val
    - datasize
    argTypes:
    - std::string_view
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 33
    functionDepth: 0
    functionLinenumber: 33
    functionLinenumberEnd: 56
    functionName: LMDBLS::LScheckHeaderAndGetSize
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-safe.cc
    functionUses: 5
    functionsReached:
    - std::string_view::size
    - std::string_view::data
    - LMDBLS::LSassertFixedHeaderSize
    - std::runtime_error
    linkageType: ''
    returnType: size_t
    signature: size_t LScheckHeaderAndGetSize(std::string_view val, size_t datasize)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LMDBLS::LScheckHeaderAndGetSize
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.cc:59,1
    - Dst: MDBOutVal*::getNoStripHeader
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.cc:59,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - val
    - datasize
    argTypes:
    - MDBOutVal*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 58
    functionDepth: 0
    functionLinenumber: 58
    functionLinenumberEnd: 60
    functionName: LMDBLS::LScheckHeaderAndGetSize
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-safe.cc
    functionUses: 6
    functionsReached:
    - LMDBLS::LScheckHeaderAndGetSize
    - MDBOutVal*::getNoStripHeader
    linkageType: ''
    returnType: size_t
    signature: size_t LScheckHeaderAndGetSize(const MDBOutVal *val, size_t datasize)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LMDBLS::LSassertFixedHeaderSize
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.cc:63,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - val
    argTypes:
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 62
    functionDepth: 0
    functionLinenumber: 62
    functionLinenumberEnd: 66
    functionName: LMDBLS::LSisDeleted
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-safe.cc
    functionUses: 3
    functionsReached:
    - LMDBLS::LSassertFixedHeaderSize
    linkageType: ''
    returnType: bool
    signature: bool LSisDeleted(std::string_view val)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LMDBLS::LSassertFixedHeaderSize
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.cc:69,1
    - Dst: LSheader*::getTimestamp
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.cc:71,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - val
    argTypes:
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 68
    functionDepth: 0
    functionLinenumber: 68
    functionLinenumberEnd: 72
    functionName: LMDBLS::LSgetTimestamp
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-safe.cc
    functionUses: 1
    functionsReached:
    - LMDBLS::LSassertFixedHeaderSize
    - LSheader*::getTimestamp
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t LSgetTimestamp(std::string_view val)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::string_view::size
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.cc:26,1
    - Dst: std::runtime_error
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.cc:27,1
    - Dst: reinterpret_cast<const LSheader*>
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.cc:30,1
    - Dst: std::string_view::data
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.cc:30,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - val
    argTypes:
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 31
      start: 24
    functionDepth: 0
    functionLinenumber: 24
    functionLinenumberEnd: 31
    functionName: LMDBLS::LSassertFixedHeaderSize
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-safe.cc
    functionUses: 9
    functionsReached:
    - std::string_view::size
    - std::string_view::data
    - reinterpret_cast<const LSheader*>
    - std::runtime_error
    linkageType: ''
    returnType: LSheader
    signature: LSheader * LSassertFixedHeaderSize(std::string_view val)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: LMDBLS::LSassertFixedHeaderSize
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.cc:34,1
    - Dst: std::runtime_error
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.cc:37,1
    - Dst: std::string_view::data
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.cc:42,1
    - Dst: std::string_view::size
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.cc:47,1
    - Dst: std::runtime_error
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.cc:48,1
    - Dst: std::string_view::size
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.cc:51,1
    - Dst: std::runtime_error
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.cc:52,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 12
    argCount: 2
    argNames:
    - val
    - datasize
    argTypes:
    - std::string_view
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 33
    functionDepth: 0
    functionLinenumber: 33
    functionLinenumberEnd: 56
    functionName: LMDBLS::LScheckHeaderAndGetSize
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-safe.cc
    functionUses: 6
    functionsReached:
    - std::string_view::size
    - std::string_view::data
    - LMDBLS::LSassertFixedHeaderSize
    - std::runtime_error
    linkageType: ''
    returnType: size_t
    signature: size_t LScheckHeaderAndGetSize(std::string_view val, size_t datasize)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LMDBLS::LScheckHeaderAndGetSize
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.cc:59,1
    - Dst: MDBOutVal*::getNoStripHeader
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.cc:59,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - val
    - datasize
    argTypes:
    - MDBOutVal*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 58
    functionDepth: 0
    functionLinenumber: 58
    functionLinenumberEnd: 60
    functionName: LMDBLS::LScheckHeaderAndGetSize
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-safe.cc
    functionUses: 7
    functionsReached:
    - LMDBLS::LScheckHeaderAndGetSize
    - MDBOutVal*::getNoStripHeader
    linkageType: ''
    returnType: size_t
    signature: size_t LScheckHeaderAndGetSize(const MDBOutVal *val, size_t datasize)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LMDBLS::LSassertFixedHeaderSize
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.cc:63,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - val
    argTypes:
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 62
    functionDepth: 0
    functionLinenumber: 62
    functionLinenumberEnd: 66
    functionName: LMDBLS::LSisDeleted
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-safe.cc
    functionUses: 3
    functionsReached:
    - LMDBLS::LSassertFixedHeaderSize
    linkageType: ''
    returnType: bool
    signature: bool LSisDeleted(std::string_view val)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LMDBLS::LSassertFixedHeaderSize
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.cc:69,1
    - Dst: LSheader*::getTimestamp
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.cc:71,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - val
    argTypes:
    - std::string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 68
    functionDepth: 0
    functionLinenumber: 68
    functionLinenumberEnd: 72
    functionName: LMDBLS::LSgetTimestamp
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-safe.cc
    functionUses: 1
    functionsReached:
    - LMDBLS::LSassertFixedHeaderSize
    - LSheader*::getTimestamp
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t LSgetTimestamp(std::string_view val)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: MDBDbi::mdb_dbi_open
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.cc:84,1
    - Dst: string_view::empty
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.cc:84,1
    - Dst: string_view::data
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.cc:84,1
    - Dst: std::runtime_error
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.cc:86,1
    - Dst: MDBError
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.cc:86,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 3
    argNames:
    - txn
    - dbname
    - flags
    argTypes:
    - MDB_txn*
    - string_view
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 80
    functionDepth: 0
    functionLinenumber: 80
    functionLinenumberEnd: 90
    functionName: MDBDbi::MDBDbi
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-safe.cc
    functionUses: 1
    functionsReached:
    - MDBDbi::mdb_dbi_open
    - std::runtime_error
    - string_view::data
    - MDBError
    - string_view::empty
    linkageType: ''
    returnType: void
    signature: void MDBDbi::MDBDbi(MDB_env* /* env */, MDB_txn* txn, const string_view
      dbname, int flags)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: MDBDbi::mdb_dbi_open
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.cc:98,1
    - Dst: MDBDbi::mdb_dbi_open
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.cc:101,1
    - Dst: MDBDbi::mdb_dbi_open
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.cc:108,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 4
    argNames:
    - txn
    - name
    - flags
    - dbi
    argTypes:
    - MDB_txn*
    - char*
    - unsigned int
    - MDB_dbi*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 94
    functionDepth: 0
    functionLinenumber: 94
    functionLinenumberEnd: 109
    functionName: MDBDbi::mdb_dbi_open
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-safe.cc
    functionUses: 6
    functionsReached:
    - MDBDbi::mdb_dbi_open
    linkageType: ''
    returnType: int
    signature: int MDBDbi::mdb_dbi_open(MDB_txn* txn, const char* name, unsigned int
      flags, MDB_dbi* dbi)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: mdb_env_create
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.cc:113,1
    - Dst: mdb_env_set_mapsize
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.cc:114,1
    - Dst: std::runtime_error
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.cc:115,1
    - Dst: mdb_env_set_maxdbs
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.cc:120,1
    - Dst: mdb_env_open
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.cc:123,1
    - Dst: mdb_env_close
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.cc:125,1
    - Dst: std::runtime_error
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.cc:126,1
    - Dst: std::string
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.cc:126,1
    - Dst: MDBError
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.cc:126,1
    - Dst: mdb_reader_check
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.cc:132,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 4
    argNames:
    - fname
    - flags
    - mode
    - mapsizeMB
    argTypes:
    - char*
    - int
    - int
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 134
      start: 111
    functionDepth: 0
    functionLinenumber: 111
    functionLinenumberEnd: 134
    functionName: MDBEnv::MDBEnv
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-safe.cc
    functionUses: 0
    functionsReached:
    - mdb_reader_check
    - std::runtime_error
    - mdb_env_set_mapsize
    - MDBError
    - mdb_env_create
    - mdb_env_set_maxdbs
    - mdb_env_open
    - mdb_env_close
    - std::string
    linkageType: ''
    returnType: void
    signature: void MDBEnv::MDBEnv(const char* fname, int flags, int mode, uint64_t
      mapsizeMB)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist_ffi_dnsquestion_get_id
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.cc:138,1
    - Dst: find
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.cc:141,1
    - Dst: end
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.cc:141,1
    - Dst: emplace
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.cc:149,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 154
      start: 136
    functionDepth: 2
    functionLinenumber: 136
    functionLinenumberEnd: 154
    functionName: MDBEnv::incRWTX
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-safe.cc
    functionUses: 0
    functionsReached:
    - end
    - emplace
    - dnsdist_ffi_dnsquestion_get_id
    - find
    linkageType: ''
    returnType: void
    signature: void MDBEnv::incRWTX()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist_ffi_dnsquestion_get_id
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.cc:158,1
    - Dst: at
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.cc:161,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 163
      start: 156
    functionDepth: 2
    functionLinenumber: 156
    functionLinenumberEnd: 163
    functionName: MDBEnv::decRWTX
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-safe.cc
    functionUses: 0
    functionsReached:
    - at
    - dnsdist_ffi_dnsquestion_get_id
    linkageType: ''
    returnType: void
    signature: void MDBEnv::decRWTX()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dnsdist_ffi_dnsquestion_get_id
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.cc:167,1
    - Dst: find
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.cc:170,1
    - Dst: end
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.cc:170,1
    - Dst: auto::second::load
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.cc:171,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 175
      start: 165
    functionDepth: 2
    functionLinenumber: 165
    functionLinenumberEnd: 175
    functionName: MDBEnv::getRWTX
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-safe.cc
    functionUses: 0
    functionsReached:
    - end
    - auto::second::load
    - dnsdist_ffi_dnsquestion_get_id
    - find
    linkageType: ''
    returnType: int
    signature: int MDBEnv::getRWTX()
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: stat
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.cc:190,1
    - Dst: std::runtime_error
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.cc:192,1
    - Dst: MDBError
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.cc:192,1
    - Dst: stat
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.cc:197,1
    - Dst: std::runtime_error
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.cc:199,1
    - Dst: MDBError
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.cc:199,1
    - Dst: std::make_shared<MDBEnv>
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.cc:201,1
    - Dst: stat
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.cc:202,1
    - Dst: std::runtime_error
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.cc:203,1
    - Dst: MDBError
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.cc:203,1
    - Dst: std::tie
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.cc:205,1
    - Dst: std::map::emplace
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.cc:206,1
    - Dst: std::tie
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.cc:212,1
    - Dst: std::map::find
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.cc:213,1
    - Dst: std::map::end
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.cc:214,1
    - Dst: auto::second::wp::lock
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.cc:215,1
    - Dst: std::runtime_error
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.cc:218,1
    - Dst: std::map::erase
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.cc:223,1
    - Dst: std::make_shared<MDBEnv>
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.cc:226,1
    - Dst: std::map::emplace
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.cc:227,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 27
    argCount: 4
    argNames:
    - fname
    - flags
    - mode
    - mapsizeMB
    argTypes:
    - char*
    - int
    - int
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 230
      start: 178
    functionDepth: 0
    functionLinenumber: 178
    functionLinenumberEnd: 230
    functionName: getMDBEnv
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-safe.cc
    functionUses: 4
    functionsReached:
    - std::runtime_error
    - auto::second::wp::lock
    - MDBError
    - std::map::erase
    - std::map::emplace
    - std::tie
    - std::map::find
    - stat
    - std::map::end
    - std::make_shared<MDBEnv>
    linkageType: ''
    returnType: std::shared_ptr<MDBEnv>
    signature: std::shared_ptr<MDBEnv> getMDBEnv(const char* fname, int flags, int
      mode, uint64_t mapsizeMB)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mdb_env_get_flags
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.cc:236,1
    - Dst: MDBEnv::getRWTransaction
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.cc:243,1
    - Dst: auto::openDB
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.cc:244,1
    - Dst: auto::commit
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.cc:245,1
    - Dst: MDBDbi::MDBDbi
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.cc:249,1
    - Dst: MDBEnv::getROTransaction
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.cc:251,1
    - Dst: auto::openDB
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.cc:252,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - dbname
    - flags
    argTypes:
    - string_view
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 255
      start: 233
    functionDepth: 1
    functionLinenumber: 233
    functionLinenumberEnd: 255
    functionName: MDBEnv::openDB
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-safe.cc
    functionUses: 0
    functionsReached:
    - MDBDbi::MDBDbi
    - MDBEnv::getROTransaction
    - mdb_env_get_flags
    - MDBEnv::getRWTransaction
    - auto::commit
    - auto::openDB
    linkageType: ''
    returnType: MDBDbi
    signature: MDBDbi MDBEnv::openDB(const string_view dbname, int flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - parent
    - txn
    argTypes:
    - MDBEnv*
    - MDB_txn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 262
      start: 257
    functionDepth: 0
    functionLinenumber: 257
    functionLinenumberEnd: 262
    functionName: MDBRWTransactionImpl::MDBRWTransactionImpl
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-safe.cc
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void MDBRWTransactionImpl::MDBRWTransactionImpl(MDBEnv *parent, MDB_txn
      *txn)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: MDBEnv*::getRWTX
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.cc:267,1
    - Dst: std::runtime_error
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.cc:268,1
    - Dst: mdb_txn_begin
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.cc:271,1
    - Dst: std::runtime_error
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.cc:272,1
    - Dst: MDBError
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.cc:272,1
    - Dst: MDBEnv*::incRWTX
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.cc:275,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 3
    argNames:
    - env
    - parent
    - flags
    argTypes:
    - MDBEnv*
    - MDB_txn*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 277
      start: 264
    functionDepth: 0
    functionLinenumber: 264
    functionLinenumberEnd: 277
    functionName: MDBRWTransactionImpl::openRWTransaction
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-safe.cc
    functionUses: 1
    functionsReached:
    - MDBEnv*::getRWTX
    - MDBEnv*::incRWTX
    - std::runtime_error
    - MDBError
    - mdb_txn_begin
    linkageType: ''
    returnType: MDB_txn
    signature: MDB_txn *MDBRWTransactionImpl::openRWTransaction(MDBEnv *env, MDB_txn
      *parent, int flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MDBRWTransactionImpl::openRWTransaction
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.cc:280,1
    - Dst: gettime
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.cc:285,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - parent
    - flags
    argTypes:
    - MDBEnv*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 289
      start: 279
    functionDepth: 0
    functionLinenumber: 279
    functionLinenumberEnd: 289
    functionName: MDBRWTransactionImpl::MDBRWTransactionImpl
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-safe.cc
    functionUses: 2
    functionsReached:
    - MDBRWTransactionImpl::openRWTransaction
    - gettime
    linkageType: ''
    returnType: void
    signature: void MDBRWTransactionImpl::MDBRWTransactionImpl(MDBEnv* parent, int
      flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MDBRWTransactionImpl::abort
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.cc:293,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 294
      start: 291
    functionDepth: 0
    functionLinenumber: 291
    functionLinenumberEnd: 294
    functionName: MDBRWTransactionImpl::~MDBRWTransactionImpl()
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-safe.cc
    functionUses: 0
    functionsReached:
    - MDBRWTransactionImpl::abort
    linkageType: ''
    returnType: void
    signature: void MDBRWTransactionImpl::~MDBRWTransactionImpl()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: MDBRWTransactionImpl::closeRORWCursors
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.cc:298,1
    - Dst: mdb_txn_commit
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.cc:303,1
    - Dst: std::runtime_error
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.cc:304,1
    - Dst: MDBError
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.cc:304,1
    - Dst: environment
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.cc:306,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 308
      start: 296
    functionDepth: 0
    functionLinenumber: 296
    functionLinenumberEnd: 308
    functionName: MDBRWTransactionImpl::commit
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-safe.cc
    functionUses: 0
    functionsReached:
    - std::runtime_error
    - MDBError
    - MDBRWTransactionImpl::closeRORWCursors
    - environment
    - mdb_txn_commit
    linkageType: ''
    returnType: void
    signature: void MDBRWTransactionImpl::commit()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: MDBRWTransactionImpl::closeRORWCursors
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.cc:312,1
    - Dst: mdb_txn_abort
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.cc:317,1
    - Dst: environment
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.cc:319,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 321
      start: 310
    functionDepth: 0
    functionLinenumber: 310
    functionLinenumberEnd: 321
    functionName: MDBRWTransactionImpl::abort
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-safe.cc
    functionUses: 2
    functionsReached:
    - environment
    - mdb_txn_abort
    - MDBRWTransactionImpl::closeRORWCursors
    linkageType: ''
    returnType: void
    signature: void MDBRWTransactionImpl::abort()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - parent
    - txn
    argTypes:
    - MDBEnv*
    - MDB_txn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 329
      start: 323
    functionDepth: 0
    functionLinenumber: 323
    functionLinenumberEnd: 329
    functionName: MDBROTransactionImpl::MDBROTransactionImpl
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-safe.cc
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void MDBROTransactionImpl::MDBROTransactionImpl(MDBEnv *parent, MDB_txn
      *txn)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: MDBEnv*::getRWTX
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.cc:333,1
    - Dst: std::runtime_error
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.cc:334,1
    - Dst: mdb_txn_begin
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.cc:340,1
    - Dst: std::runtime_error
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.cc:341,1
    - Dst: MDBError
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.cc:341,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 3
    argNames:
    - env
    - parent
    - flags
    argTypes:
    - MDBEnv*
    - MDB_txn*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 345
      start: 331
    functionDepth: 0
    functionLinenumber: 331
    functionLinenumberEnd: 345
    functionName: MDBROTransactionImpl::openROTransaction
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-safe.cc
    functionUses: 1
    functionsReached:
    - MDBEnv*::getRWTX
    - MDBError
    - mdb_txn_begin
    - std::runtime_error
    linkageType: ''
    returnType: MDB_txn
    signature: MDB_txn *MDBROTransactionImpl::openROTransaction(MDBEnv *env, MDB_txn
      *parent, int flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::swap
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.cc:351,1
    - Dst: close
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.cc:353,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 355
      start: 347
    functionDepth: 0
    functionLinenumber: 347
    functionLinenumberEnd: 355
    functionName: MDBROTransactionImpl::closeROCursors
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-safe.cc
    functionUses: 2
    functionsReached:
    - std::swap
    - close
    linkageType: ''
    returnType: void
    signature: void MDBROTransactionImpl::closeROCursors()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MDBROTransactionImpl::openROTransaction
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.cc:358,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - parent
    - flags
    argTypes:
    - MDBEnv*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 361
      start: 357
    functionDepth: 0
    functionLinenumber: 357
    functionLinenumberEnd: 361
    functionName: MDBROTransactionImpl::MDBROTransactionImpl
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-safe.cc
    functionUses: 1
    functionsReached:
    - MDBROTransactionImpl::openROTransaction
    linkageType: ''
    returnType: void
    signature: void MDBROTransactionImpl::MDBROTransactionImpl(MDBEnv *parent, int
      flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MDBROTransactionImpl::commit
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.cc:366,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 367
      start: 363
    functionDepth: 0
    functionLinenumber: 363
    functionLinenumberEnd: 367
    functionName: MDBROTransactionImpl::~MDBROTransactionImpl()
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-safe.cc
    functionUses: 0
    functionsReached:
    - MDBROTransactionImpl::commit
    linkageType: ''
    returnType: void
    signature: void MDBROTransactionImpl::~MDBROTransactionImpl()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: MDBROTransactionImpl::closeROCursors
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.cc:371,1
    - Dst: mdb_txn_abort
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.cc:374,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 377
      start: 369
    functionDepth: 0
    functionLinenumber: 369
    functionLinenumberEnd: 377
    functionName: MDBROTransactionImpl::abort
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-safe.cc
    functionUses: 0
    functionsReached:
    - mdb_txn_abort
    - MDBROTransactionImpl::closeROCursors
    linkageType: ''
    returnType: void
    signature: void MDBROTransactionImpl::abort()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: MDBROTransactionImpl::closeROCursors
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.cc:381,1
    - Dst: mdb_txn_commit
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.cc:384,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 387
      start: 379
    functionDepth: 0
    functionLinenumber: 379
    functionLinenumberEnd: 387
    functionName: MDBROTransactionImpl::commit
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-safe.cc
    functionUses: 2
    functionsReached:
    - mdb_txn_commit
    - MDBROTransactionImpl::closeROCursors
    linkageType: ''
    returnType: void
    signature: void MDBROTransactionImpl::commit()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mdb_drop
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.cc:393,1
    - Dst: runtime_error
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.cc:394,1
    - Dst: MDBError
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.cc:394,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - dbi
    argTypes:
    - MDB_dbi
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 396
      start: 391
    functionDepth: 0
    functionLinenumber: 391
    functionLinenumberEnd: 396
    functionName: MDBRWTransactionImpl::clear
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-safe.cc
    functionUses: 0
    functionsReached:
    - MDBError
    - mdb_drop
    - runtime_error
    linkageType: ''
    returnType: void
    signature: void MDBRWTransactionImpl::clear(MDB_dbi dbi)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mdb_cursor_open
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.cc:401,1
    - Dst: std::runtime_error
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.cc:403,1
    - Dst: MDBError
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.cc:403,1
    - Dst: MDBRWCursor
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.cc:406,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - ' dbi'
    argTypes:
    - MDBDbi
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 407
      start: 398
    functionDepth: 0
    functionLinenumber: 398
    functionLinenumberEnd: 407
    functionName: MDBRWTransactionImpl::getRWCursor
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-safe.cc
    functionUses: 1
    functionsReached:
    - mdb_cursor_open
    - MDBError
    - MDBRWCursor
    - std::runtime_error
    linkageType: ''
    returnType: MDBRWCursor
    signature: MDBRWCursor MDBRWTransactionImpl::getRWCursor(const MDBDbi& dbi)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MDBRWTransactionImpl::getRWCursor
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.cc:411,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - dbi
    argTypes:
    - MDBDbi
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 412
      start: 409
    functionDepth: 0
    functionLinenumber: 409
    functionLinenumberEnd: 412
    functionName: MDBRWTransactionImpl::getCursor
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-safe.cc
    functionUses: 0
    functionsReached:
    - MDBRWTransactionImpl::getRWCursor
    linkageType: ''
    returnType: MDBRWCursor
    signature: MDBRWCursor MDBRWTransactionImpl::getCursor(const MDBDbi &dbi)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mdb_txn_begin
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.cc:417,1
    - Dst: environment
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.cc:417,1
    - Dst: std::runtime_error
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.cc:418,1
    - Dst: std::string
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.cc:418,1
    - Dst: MDBError
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.cc:418,1
    - Dst: environment
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.cc:421,1
    - Dst: MDBRWTransaction
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.cc:422,1
    - Dst: environment
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.cc:422,1
    - Dst: MDBRWTransactionImpl::MDBRWTransactionImpl
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.cc:422,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 423
      start: 414
    functionDepth: 0
    functionLinenumber: 414
    functionLinenumberEnd: 423
    functionName: MDBRWTransactionImpl::getRWTransaction
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-safe.cc
    functionUses: 1
    functionsReached:
    - std::runtime_error
    - MDBRWTransactionImpl::MDBRWTransactionImpl
    - MDBError
    - mdb_txn_begin
    - environment
    - std::string
    - MDBRWTransaction
    linkageType: ''
    returnType: MDBRWTransaction
    signature: MDBRWTransaction MDBRWTransactionImpl::getRWTransaction()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MDBRWTransactionImpl::getRWTransaction
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.cc:427,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 428
      start: 425
    functionDepth: 0
    functionLinenumber: 425
    functionLinenumberEnd: 428
    functionName: MDBRWTransactionImpl::getROTransaction
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-safe.cc
    functionUses: 0
    functionsReached:
    - MDBRWTransactionImpl::getRWTransaction
    linkageType: ''
    returnType: MDBROTransaction
    signature: MDBROTransaction MDBRWTransactionImpl::getROTransaction()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MDBROTransaction
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.cc:432,1
    - Dst: MDBROTransactionImpl::MDBROTransactionImpl
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.cc:432,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 433
      start: 430
    functionDepth: 0
    functionLinenumber: 430
    functionLinenumberEnd: 433
    functionName: MDBEnv::getROTransaction
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-safe.cc
    functionUses: 2
    functionsReached:
    - MDBROTransactionImpl::MDBROTransactionImpl
    - MDBROTransaction
    linkageType: ''
    returnType: MDBROTransaction
    signature: MDBROTransaction MDBEnv::getROTransaction()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MDBRWTransaction
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.cc:436,1
    - Dst: MDBRWTransactionImpl::MDBRWTransactionImpl
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.cc:436,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 437
      start: 434
    functionDepth: 0
    functionLinenumber: 434
    functionLinenumberEnd: 437
    functionName: MDBEnv::getRWTransaction
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-safe.cc
    functionUses: 3
    functionsReached:
    - MDBRWTransactionImpl::MDBRWTransactionImpl
    - MDBRWTransaction
    linkageType: ''
    returnType: MDBRWTransaction
    signature: MDBRWTransaction MDBEnv::getRWTransaction()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::swap
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.cc:443,1
    - Dst: close
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.cc:445,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 447
      start: 440
    functionDepth: 0
    functionLinenumber: 440
    functionLinenumberEnd: 447
    functionName: MDBRWTransactionImpl::closeRWCursors
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-safe.cc
    functionUses: 1
    functionsReached:
    - std::swap
    - close
    linkageType: ''
    returnType: void
    signature: void MDBRWTransactionImpl::closeRWCursors()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MDBROTransactionImpl::getROCursor
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.cc:451,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' dbi'
    argTypes:
    - MDBDbi
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 452
      start: 449
    functionDepth: 0
    functionLinenumber: 449
    functionLinenumberEnd: 452
    functionName: MDBROTransactionImpl::getCursor
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-safe.cc
    functionUses: 0
    functionsReached:
    - MDBROTransactionImpl::getROCursor
    linkageType: ''
    returnType: MDBROCursor
    signature: MDBROCursor MDBROTransactionImpl::getCursor(const MDBDbi& dbi)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mdb_cursor_open
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.cc:457,1
    - Dst: std::runtime_error
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.cc:459,1
    - Dst: MDBError
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.cc:459,1
    - Dst: MDBROCursor
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.cc:461,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - dbi
    argTypes:
    - MDBDbi
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 462
      start: 454
    functionDepth: 0
    functionLinenumber: 454
    functionLinenumberEnd: 462
    functionName: MDBROTransactionImpl::getROCursor
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-safe.cc
    functionUses: 2
    functionsReached:
    - mdb_cursor_open
    - MDBError
    - MDBROCursor
    - std::runtime_error
    linkageType: ''
    returnType: MDBROCursor
    signature: MDBROCursor MDBROTransactionImpl::getROCursor(const MDBDbi &dbi)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mdb_strerror
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:39,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ret
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 37
    functionDepth: 0
    functionLinenumber: 37
    functionLinenumberEnd: 40
    functionName: MDBError
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 42
    functionsReached:
    - mdb_strerror
    linkageType: ''
    returnType: string
    signature: string MDBError(int ret)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 64
    functionDepth: 0
    functionLinenumber: 64
    functionLinenumberEnd: 66
    functionName: MDBDbi::MDBDbi
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void MDBDbi()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 69
    functionDepth: 0
    functionLinenumber: 69
    functionLinenumberEnd: 72
    functionName: operator const MDB_dbi&() const
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void operator const MDB_dbi&() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mdb_env_close
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:95,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 91
    functionDepth: 0
    functionLinenumber: 91
    functionLinenumberEnd: 97
    functionName: ~MDBEnv()
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 0
    functionsReached:
    - mdb_env_close
    linkageType: ''
    returnType: void
    signature: void ~MDBEnv()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 107
      start: 104
    functionDepth: 0
    functionLinenumber: 104
    functionLinenumberEnd: 107
    functionName: operator MDB_env*& ()
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void operator MDB_env*& ()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: __builtin_bswap64
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:138,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 3
    argCount: 1
    argNames:
    - value
    argTypes:
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 142
      start: 130
    functionDepth: 0
    functionLinenumber: 130
    functionLinenumberEnd: 142
    functionName: LMDBLS::LSheader::pdns_bswap64
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 4
    functionsReached:
    - __builtin_bswap64
    linkageType: ''
    returnType: auto
    signature: auto pdns_bswap64(uint64_t value) -> uint64_t
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LMDBLS::LSheader::pdns_bswap64
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:154,1
    - Dst: LMDBLS::LSheader::pdns_bswap64
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:155,1
    - Dst: htons
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:158,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - timestamp
    - txnid
    argTypes:
    - uint64_t
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 160
      start: 153
    functionDepth: 0
    functionLinenumber: 153
    functionLinenumberEnd: 160
    functionName: LMDBLS::LSheader::LSheader
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 6
    functionsReached:
    - LMDBLS::LSheader::pdns_bswap64
    - htons
    linkageType: ''
    returnType: void
    signature: void LSheader(uint64_t timestamp, uint64_t txnid, uint8_t flags = 0,
      uint8_t version = 0, uint8_t numextra = 0)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::string
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:163,1
    - Dst: std::string
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:163,1
    - Dst: ntohs
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:163,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 164
      start: 162
    functionDepth: 0
    functionLinenumber: 162
    functionLinenumberEnd: 164
    functionName: LMDBLS::LSheader::toString
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 0
    functionsReached:
    - std::string
    - ntohs
    linkageType: ''
    returnType: std::string
    signature: std::string toString()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LMDBLS::LSheader::pdns_bswap64
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:167,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 168
      start: 166
    functionDepth: 0
    functionLinenumber: 166
    functionLinenumberEnd: 168
    functionName: LMDBLS::LSheader::getTimestamp
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 0
    functionsReached:
    - LMDBLS::LSheader::pdns_bswap64
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t getTimestamp() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: __builtin_bswap64
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:138,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 3
    argCount: 1
    argNames:
    - value
    argTypes:
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 142
      start: 130
    functionDepth: 0
    functionLinenumber: 130
    functionLinenumberEnd: 142
    functionName: LMDBLS::LSheader::pdns_bswap64
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 6
    functionsReached:
    - __builtin_bswap64
    linkageType: ''
    returnType: auto
    signature: auto pdns_bswap64(uint64_t value) -> uint64_t
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LMDBLS::LSheader::pdns_bswap64
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:154,1
    - Dst: LMDBLS::LSheader::pdns_bswap64
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:155,1
    - Dst: htons
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:158,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - timestamp
    - txnid
    argTypes:
    - uint64_t
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 160
      start: 153
    functionDepth: 0
    functionLinenumber: 153
    functionLinenumberEnd: 160
    functionName: LMDBLS::LSheader::LSheader
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 6
    functionsReached:
    - LMDBLS::LSheader::pdns_bswap64
    - htons
    linkageType: ''
    returnType: void
    signature: void LSheader(uint64_t timestamp, uint64_t txnid, uint8_t flags = 0,
      uint8_t version = 0, uint8_t numextra = 0)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::string
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:163,1
    - Dst: std::string
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:163,1
    - Dst: ntohs
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:163,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 164
      start: 162
    functionDepth: 0
    functionLinenumber: 162
    functionLinenumberEnd: 164
    functionName: LMDBLS::LSheader::toString
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 0
    functionsReached:
    - std::string
    - ntohs
    linkageType: ''
    returnType: std::string
    signature: std::string toString()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LMDBLS::LSheader::pdns_bswap64
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:167,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 168
      start: 166
    functionDepth: 0
    functionLinenumber: 166
    functionLinenumberEnd: 168
    functionName: LMDBLS::LSheader::getTimestamp
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 0
    functionsReached:
    - LMDBLS::LSheader::pdns_bswap64
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t getTimestamp() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: htonl
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:198,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - value
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 199
      start: 196
    functionDepth: 0
    functionLinenumber: 196
    functionLinenumberEnd: 199
    functionName: hostToNetworkByteOrder
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 1
    functionsReached:
    - htonl
    linkageType: ''
    returnType: auto
    signature: auto hostToNetworkByteOrder(uint32_t value) -> uint32_t
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ntohl
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:204,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - value
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 205
      start: 202
    functionDepth: 0
    functionLinenumber: 202
    functionLinenumberEnd: 205
    functionName: networkToHostByteOrder
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 2
    functionsReached:
    - ntohl
    linkageType: ''
    returnType: auto
    signature: auto networkToHostByteOrder(uint32_t value) -> uint32_t
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 212
      start: 209
    functionDepth: 0
    functionLinenumber: 209
    functionLinenumberEnd: 212
    functionName: operator MDB_val&()
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void operator MDB_val&()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LMDBLS::LScheckHeaderAndGetSize
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:230,1
    - Dst: memcpy
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:232,1
    - Dst: static_cast<const char*>
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:232,1
    - Dst: networkToHostByteOrder
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:233,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 235
      start: 227
    functionDepth: 0
    functionLinenumber: 227
    functionLinenumberEnd: 235
    functionName: MDBOutVal::get
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 15
    functionsReached:
    - networkToHostByteOrder
    - memcpy
    - LMDBLS::LScheckHeaderAndGetSize
    - static_cast<const char*>
    linkageType: ''
    returnType: T
    signature: T MDBOutVal::get() const
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::runtime_error
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:242,1
    - Dst: memcpy
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:245,1
    - Dst: networkToHostByteOrder
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:246,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 248
      start: 238
    functionDepth: 0
    functionLinenumber: 238
    functionLinenumberEnd: 248
    functionName: MDBOutVal::getNoStripHeader
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 9
    functionsReached:
    - networkToHostByteOrder
    - memcpy
    - std::runtime_error
    linkageType: ''
    returnType: T
    signature: T MDBOutVal::getNoStripHeader() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<char*>
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:256,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 257
      start: 254
    functionDepth: 0
    functionLinenumber: 254
    functionLinenumberEnd: 257
    functionName: MDBOutVal::get<std::string>() const
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 0
    functionsReached:
    - static_cast<char*>
    linkageType: ''
    returnType: std::string
    signature: std::string MDBOutVal::get<std::string>() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<char*>
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:262,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 263
      start: 260
    functionDepth: 0
    functionLinenumber: 260
    functionLinenumberEnd: 263
    functionName: MDBOutVal::get<std::string_view>() const
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 0
    functionsReached:
    - static_cast<char*>
    linkageType: ''
    returnType: std::string_view
    signature: std::string_view MDBOutVal::get<std::string_view>() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LMDBLS::LScheckHeaderAndGetSize
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:270,1
    - Dst: static_cast<char*>
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:272,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 273
      start: 268
    functionDepth: 0
    functionLinenumber: 268
    functionLinenumberEnd: 273
    functionName: MDBOutVal::get<std::string>() const
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 0
    functionsReached:
    - static_cast<char*>
    - LMDBLS::LScheckHeaderAndGetSize
    linkageType: ''
    returnType: std::string
    signature: std::string MDBOutVal::get<std::string>() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LMDBLS::LScheckHeaderAndGetSize
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:278,1
    - Dst: static_cast<char*>
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:280,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 281
      start: 276
    functionDepth: 0
    functionLinenumber: 276
    functionLinenumberEnd: 281
    functionName: MDBOutVal::get<std::string_view>() const
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 0
    functionsReached:
    - static_cast<char*>
    - LMDBLS::LScheckHeaderAndGetSize
    linkageType: ''
    returnType: std::string_view
    signature: std::string_view MDBOutVal::get<std::string_view>() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<char*>
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:286,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 287
      start: 284
    functionDepth: 0
    functionLinenumber: 284
    functionLinenumberEnd: 287
    functionName: MDBOutVal::getNoStripHeader<std::string>() const
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 0
    functionsReached:
    - static_cast<char*>
    linkageType: ''
    returnType: std::string
    signature: std::string MDBOutVal::getNoStripHeader<std::string>() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<char*>
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:292,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 293
      start: 290
    functionDepth: 0
    functionLinenumber: 290
    functionLinenumberEnd: 293
    functionName: MDBOutVal::getNoStripHeader<std::string_view>() const
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 0
    functionsReached:
    - static_cast<char*>
    linkageType: ''
    returnType: std::string_view
    signature: std::string_view MDBOutVal::getNoStripHeader<std::string_view>() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - MDBOutVal
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 303
      start: 300
    functionDepth: 0
    functionLinenumber: 300
    functionLinenumberEnd: 303
    functionName: MDBInVal::MDBInVal
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void MDBInVal(const MDBOutVal& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hostToNetworkByteOrder
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:309,1
    - Dst: memcpy
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:311,1
    - Dst: static_cast<void*>
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:313,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - rhs
    argTypes:
    - T
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 314
      start: 307
    functionDepth: 0
    functionLinenumber: 307
    functionLinenumberEnd: 314
    functionName: MDBInVal::MDBInVal
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 1
    functionsReached:
    - hostToNetworkByteOrder
    - static_cast<void*>
    - memcpy
    linkageType: ''
    returnType: void
    signature: void MDBInVal(T rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:319,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - rhs
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 321
      start: 317
    functionDepth: 0
    functionLinenumber: 317
    functionLinenumberEnd: 321
    functionName: MDBInVal::MDBInVal
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 1
    functionsReached:
    - strlen
    linkageType: ''
    returnType: void
    signature: void MDBInVal(const char* rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:325,1
    - Dst: data
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:326,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 327
      start: 323
    functionDepth: 0
    functionLinenumber: 323
    functionLinenumberEnd: 327
    functionName: MDBInVal::MDBInVal
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 1
    functionsReached:
    - size
    - data
    linkageType: ''
    returnType: void
    signature: void MDBInVal(const string_view& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:331,1
    - Dst: data
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:332,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 333
      start: 329
    functionDepth: 0
    functionLinenumber: 329
    functionLinenumberEnd: 333
    functionName: MDBInVal::MDBInVal
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 1
    functionsReached:
    - size
    - data
    linkageType: ''
    returnType: void
    signature: void MDBInVal(const std::string& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MDBInVal::MDBInVal
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:338,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - T
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 342
      start: 336
    functionDepth: 0
    functionLinenumber: 336
    functionLinenumberEnd: 342
    functionName: MDBInVal::fromStruct
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 0
    functionsReached:
    - MDBInVal::MDBInVal
    linkageType: ''
    returnType: MDBInVal
    signature: MDBInVal fromStruct(const T& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 350
      start: 347
    functionDepth: 0
    functionLinenumber: 347
    functionLinenumberEnd: 350
    functionName: operator MDB_val&()
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void operator MDB_val&()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 356
      start: 356
    functionDepth: 0
    functionLinenumber: 356
    functionLinenumberEnd: 356
    functionName: MDBInVal::MDBInVal
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void MDBInVal()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<char*>
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:366,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 367
      start: 364
    functionDepth: 0
    functionLinenumber: 364
    functionLinenumberEnd: 367
    functionName: MDBInVal::get<std::string>() const
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 0
    functionsReached:
    - static_cast<char*>
    linkageType: ''
    returnType: std::string
    signature: std::string MDBInVal::get<std::string>() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 1
    argNames:
    - ' src'
    argTypes:
    - MDBROTransactionImpl
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 390
      start: 390
    functionDepth: 0
    functionLinenumber: 390
    functionLinenumberEnd: 390
    functionName: MDBROTransactionImpl::MDBROTransactionImpl
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void MDBROTransactionImpl(const MDBROTransactionImpl& src)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 1
    argNames:
    - ' src'
    argTypes:
    - MDBROTransactionImpl
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 391
      start: 391
    functionDepth: 0
    functionLinenumber: 391
    functionLinenumberEnd: 391
    functionName: '&operator=(const MDBROTransactionImpl& src)'
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: MDBROTransactionImpl
    signature: MDBROTransactionImpl &operator=(const MDBROTransactionImpl& src)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - MDBROTransactionImpl
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 394
      start: 394
    functionDepth: 0
    functionLinenumber: 394
    functionLinenumberEnd: 394
    functionName: MDBROTransactionImpl::MDBROTransactionImpl
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void MDBROTransactionImpl(MDBROTransactionImpl&& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 1
    argNames:
    - rhs
    argTypes:
    - MDBROTransactionImpl
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 395
      start: 395
    functionDepth: 0
    functionLinenumber: 395
    functionLinenumberEnd: 395
    functionName: '&operator=(MDBROTransactionImpl &&rhs)'
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: MDBROTransactionImpl
    signature: MDBROTransactionImpl &operator=(MDBROTransactionImpl &&rhs)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: std::runtime_error
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:405,1
    - Dst: mdb_get
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:407,1
    - Dst: const_cast<MDB_val*>
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:407,1
    - Dst: const_cast<MDB_val*>
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:408,1
    - Dst: std::runtime_error
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:411,1
    - Dst: MDBError
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:411,1
    - Dst: getNoStripHeader
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:416,1
    - Dst: LMDBLS::LSisDeleted
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:417,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 12
    argCount: 3
    argNames:
    - dbi
    - ' key'
    - ' val'
    argTypes:
    - MDB_dbi
    - MDBInVal
    - MDBOutVal
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 424
      start: 402
    functionDepth: 0
    functionLinenumber: 402
    functionLinenumberEnd: 424
    functionName: MDBROTransactionImpl::get
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 1
    functionsReached:
    - std::runtime_error
    - MDBError
    - getNoStripHeader
    - const_cast<MDB_val*>
    - LMDBLS::LSisDeleted
    - mdb_get
    linkageType: ''
    returnType: int
    signature: int get(MDB_dbi dbi, const MDBInVal& key, MDBOutVal& val)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: MDBROTransactionImpl::get
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:429,1
    - Dst: MDBOutVal::get
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:431,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - dbi
    - ' key'
    - ' val'
    argTypes:
    - MDB_dbi
    - MDBInVal
    - string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 433
      start: 426
    functionDepth: 0
    functionLinenumber: 426
    functionLinenumberEnd: 433
    functionName: MDBROTransactionImpl::get
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 2
    functionsReached:
    - MDBROTransactionImpl::get
    - MDBOutVal::get
    linkageType: ''
    returnType: int
    signature: int get(MDB_dbi dbi, const MDBInVal& key, string_view& val)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MDBDbi
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:439,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - dbname
    - flags
    argTypes:
    - string_view
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 440
      start: 437
    functionDepth: 0
    functionLinenumber: 437
    functionLinenumberEnd: 440
    functionName: MDBROTransactionImpl::openDB
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 0
    functionsReached:
    - MDBDbi
    linkageType: ''
    returnType: MDBDbi
    signature: MDBDbi openDB(string_view dbname, int flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 448
      start: 445
    functionDepth: 0
    functionLinenumber: 445
    functionLinenumberEnd: 448
    functionName: operator MDB_txn*()
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void operator MDB_txn*()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 452
      start: 450
    functionDepth: 0
    functionLinenumber: 450
    functionLinenumberEnd: 452
    functionName: operator bool() const
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void operator bool() const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 457
      start: 454
    functionDepth: 0
    functionLinenumber: 454
    functionLinenumberEnd: 457
    functionName: '&environment()'
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: MDBEnv
    signature: MDBEnv &environment()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 483
      start: 477
    functionDepth: 0
    functionLinenumber: 477
    functionLinenumberEnd: 483
    functionName: MDBGenCursor::MDBGenCursor
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void MDBGenCursor()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::vector<T*>::emplace_back
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:491,1
    - Dst: static_cast<T*>
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:491,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - registry
    - cursor
    argTypes:
    - std::vector<T*>
    - MDB_cursor*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 492
      start: 485
    functionDepth: 0
    functionLinenumber: 485
    functionLinenumberEnd: 492
    functionName: MDBGenCursor::MDBGenCursor
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 0
    functionsReached:
    - static_cast<T*>
    - std::vector<T*>::emplace_back
    linkageType: ''
    returnType: void
    signature: void MDBGenCursor(std::vector<T*> &registry, MDB_cursor *cursor, MDB_txn
      *txn=nullptr, uint64_t txtime=0)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: MDBGenCursor::find
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:501,1
    - Dst: begin
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:501,1
    - Dst: end
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:502,1
    - Dst: end
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:504,1
    - Dst: static_cast<T*>
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:505,1
    - Dst: emplace_back
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:507,1
    - Dst: static_cast<T*>
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:507,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - src
    argTypes:
    - MDBGenCursor*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 509
      start: 495
    functionDepth: 0
    functionLinenumber: 495
    functionLinenumberEnd: 509
    functionName: MDBGenCursor::move_from
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 1
    functionsReached:
    - end
    - static_cast<T*>
    - emplace_back
    - begin
    - MDBGenCursor::find
    linkageType: ''
    returnType: void
    signature: void move_from(MDBGenCursor *src)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 1
    argNames:
    - src
    argTypes:
    - MDBGenCursor
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 512
      start: 512
    functionDepth: 0
    functionLinenumber: 512
    functionLinenumberEnd: 512
    functionName: MDBGenCursor::MDBGenCursor
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void MDBGenCursor(const MDBGenCursor &src)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MDBGenCursor::move_from
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:518,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - src
    argTypes:
    - MDBGenCursor
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 521
      start: 514
    functionDepth: 0
    functionLinenumber: 514
    functionLinenumberEnd: 521
    functionName: MDBGenCursor::MDBGenCursor
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 0
    functionsReached:
    - MDBGenCursor::move_from
    linkageType: ''
    returnType: void
    signature: void MDBGenCursor(MDBGenCursor &&src) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 1
    argNames:
    - src
    argTypes:
    - MDBGenCursor
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 523
      start: 523
    functionDepth: 0
    functionLinenumber: 523
    functionLinenumberEnd: 523
    functionName: '&operator=(const MDBGenCursor &src)'
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: MDBGenCursor
    signature: MDBGenCursor &operator=(const MDBGenCursor &src)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: move_from
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:529,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - src
    argTypes:
    - MDBGenCursor
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 533
      start: 525
    functionDepth: 0
    functionLinenumber: 525
    functionLinenumberEnd: 533
    functionName: '&operator=(MDBGenCursor &&src) noexcept'
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 0
    functionsReached:
    - move_from
    linkageType: ''
    returnType: MDBGenCursor
    signature: MDBGenCursor &operator=(MDBGenCursor &&src) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: close
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:537,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 538
      start: 535
    functionDepth: 0
    functionLinenumber: 535
    functionLinenumberEnd: 538
    functionName: ~MDBGenCursor()
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 0
    functionsReached:
    - close
    linkageType: ''
    returnType: void
    signature: void ~MDBGenCursor()
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: getNoStripHeader
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:580,1
    - Dst: length
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:581,1
    - Dst: getNoStripHeader
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:581,1
    - Dst: LMDBLS::LSisDeleted
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:585,1
    - Dst: std::runtime_error
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:608,1
    - Dst: mdb_cursor_get
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:611,1
    - Dst: std::runtime_error
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:613,1
    - Dst: MDBError
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:613,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 34
    argCount: 4
    argNames:
    - ' key'
    - ' data'
    - op
    - rc
    argTypes:
    - MDBOutVal
    - MDBOutVal
    - MDB_cursor_op
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 632
      start: 561
    functionDepth: 0
    functionLinenumber: 561
    functionLinenumberEnd: 632
    functionName: MDBGenCursor::skipDeleted
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 5
    functionsReached:
    - length
    - std::runtime_error
    - MDBError
    - getNoStripHeader
    - mdb_cursor_get
    - LMDBLS::LSisDeleted
    linkageType: ''
    returnType: int
    signature: int skipDeleted(MDBOutVal& key, MDBOutVal& data, MDB_cursor_op op,
      int rc)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: clear
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:637,1
    - Dst: mdb_cursor_get
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:638,1
    - Dst: std::runtime_error
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:640,1
    - Dst: MDBError
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:640,1
    - Dst: MDBGenCursor::skipDeleted
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:642,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 3
    argNames:
    - ' key'
    - ' data'
    - op
    argTypes:
    - MDBOutVal
    - MDBOutVal
    - MDB_cursor_op
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 643
      start: 635
    functionDepth: 1
    functionLinenumber: 635
    functionLinenumberEnd: 643
    functionName: MDBGenCursor::get
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 1
    functionsReached:
    - std::runtime_error
    - MDBError
    - mdb_cursor_get
    - clear
    - MDBGenCursor::skipDeleted
    linkageType: ''
    returnType: int
    signature: int get(MDBOutVal& key, MDBOutVal& data, MDB_cursor_op op)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: clear
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:647,1
    - Dst: mdb_cursor_get
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:649,1
    - Dst: const_cast<MDB_val*>
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:649,1
    - Dst: std::runtime_error
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:651,1
    - Dst: MDBError
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:651,1
    - Dst: MDBGenCursor::skipDeleted
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:653,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 3
    argNames:
    - ' in'
    - ' key'
    - ' data'
    argTypes:
    - MDBInVal
    - MDBOutVal
    - MDBOutVal
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 654
      start: 645
    functionDepth: 1
    functionLinenumber: 645
    functionLinenumberEnd: 654
    functionName: MDBGenCursor::find
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 3
    functionsReached:
    - std::runtime_error
    - MDBError
    - mdb_cursor_get
    - const_cast<MDB_val*>
    - clear
    - MDBGenCursor::skipDeleted
    linkageType: ''
    returnType: int
    signature: int find(const MDBInVal& in, MDBOutVal& key, MDBOutVal& data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MDBGenCursor::get
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:658,1
    - Dst: MDBGenCursor::_lower_bound
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:659,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - ' in'
    - ' key'
    - ' data'
    argTypes:
    - MDBInVal
    - MDBOutVal
    - MDBOutVal
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 660
      start: 656
    functionDepth: 0
    functionLinenumber: 656
    functionLinenumberEnd: 660
    functionName: MDBGenCursor::prefix
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 0
    functionsReached:
    - MDBGenCursor::get
    - MDBGenCursor::_lower_bound
    linkageType: ''
    returnType: int
    signature: int prefix(const MDBInVal& in, MDBOutVal& key, MDBOutVal& data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: clear
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:664,1
    - Dst: MDBGenCursor::_lower_bound
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:665,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - ' in'
    - ' key'
    - ' data'
    argTypes:
    - MDBInVal
    - MDBOutVal
    - MDBOutVal
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 666
      start: 662
    functionDepth: 1
    functionLinenumber: 662
    functionLinenumberEnd: 666
    functionName: MDBGenCursor::lower_bound
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 0
    functionsReached:
    - clear
    - MDBGenCursor::_lower_bound
    linkageType: ''
    returnType: int
    signature: int lower_bound(const MDBInVal& in, MDBOutVal& key, MDBOutVal& data)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mdb_cursor_get
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:672,1
    - Dst: const_cast<MDB_val*>
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:672,1
    - Dst: std::runtime_error
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:674,1
    - Dst: MDBError
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:674,1
    - Dst: MDBGenCursor::skipDeleted
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:676,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 3
    argNames:
    - ' in'
    - ' key'
    - ' data'
    argTypes:
    - MDBInVal
    - MDBOutVal
    - MDBOutVal
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 677
      start: 668
    functionDepth: 0
    functionLinenumber: 668
    functionLinenumberEnd: 677
    functionName: MDBGenCursor::_lower_bound
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 4
    functionsReached:
    - std::runtime_error
    - MDBError
    - mdb_cursor_get
    - const_cast<MDB_val*>
    - MDBGenCursor::skipDeleted
    linkageType: ''
    returnType: int
    signature: int _lower_bound(const MDBInVal& in, MDBOutVal& key, MDBOutVal& data)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mdb_cursor_get
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:682,1
    - Dst: const_cast<MDB_val*>
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:682,1
    - Dst: std::runtime_error
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:684,1
    - Dst: MDBError
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:684,1
    - Dst: MDBGenCursor::skipDeleted
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:686,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 5
    argCount: 3
    argNames:
    - ' key'
    - ' data'
    - op
    argTypes:
    - MDBOutVal
    - MDBOutVal
    - MDB_cursor_op
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 687
      start: 680
    functionDepth: 0
    functionLinenumber: 680
    functionLinenumberEnd: 687
    functionName: MDBGenCursor::nextprev
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 2
    functionsReached:
    - std::runtime_error
    - MDBError
    - mdb_cursor_get
    - const_cast<MDB_val*>
    - MDBGenCursor::skipDeleted
    linkageType: ''
    returnType: int
    signature: int nextprev(MDBOutVal& key, MDBOutVal& data, MDB_cursor_op op)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MDBGenCursor::nextprev
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:691,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' key'
    - ' data'
    argTypes:
    - MDBOutVal
    - MDBOutVal
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 692
      start: 689
    functionDepth: 0
    functionLinenumber: 689
    functionLinenumberEnd: 692
    functionName: MDBGenCursor::next
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 1
    functionsReached:
    - MDBGenCursor::nextprev
    linkageType: ''
    returnType: int
    signature: int next(MDBOutVal& key, MDBOutVal& data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MDBGenCursor::nextprev
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:696,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' key'
    - ' data'
    argTypes:
    - MDBOutVal
    - MDBOutVal
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 697
      start: 694
    functionDepth: 0
    functionLinenumber: 694
    functionLinenumberEnd: 697
    functionName: MDBGenCursor::prev
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 0
    functionsReached:
    - MDBGenCursor::nextprev
    linkageType: ''
    returnType: int
    signature: int prev(MDBOutVal& key, MDBOutVal& data)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mdb_cursor_get
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:701,1
    - Dst: const_cast<MDB_val*>
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:701,1
    - Dst: std::runtime_error
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:703,1
    - Dst: MDBError
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:703,1
    - Dst: MDBGenCursor::skipDeleted
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:705,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 5
    argCount: 3
    argNames:
    - ' key'
    - ' data'
    - op
    argTypes:
    - MDBOutVal
    - MDBOutVal
    - MDB_cursor_op
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 706
      start: 699
    functionDepth: 0
    functionLinenumber: 699
    functionLinenumberEnd: 706
    functionName: MDBGenCursor::currentlast
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 3
    functionsReached:
    - std::runtime_error
    - MDBError
    - mdb_cursor_get
    - const_cast<MDB_val*>
    - MDBGenCursor::skipDeleted
    linkageType: ''
    returnType: int
    signature: int currentlast(MDBOutVal& key, MDBOutVal& data, MDB_cursor_op op)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MDBGenCursor::currentlast
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:710,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' key'
    - ' data'
    argTypes:
    - MDBOutVal
    - MDBOutVal
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 711
      start: 708
    functionDepth: 0
    functionLinenumber: 708
    functionLinenumberEnd: 711
    functionName: MDBGenCursor::current
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 0
    functionsReached:
    - MDBGenCursor::currentlast
    linkageType: ''
    returnType: int
    signature: int current(MDBOutVal& key, MDBOutVal& data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MDBGenCursor::currentlast
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:714,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' key'
    - ' data'
    argTypes:
    - MDBOutVal
    - MDBOutVal
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 715
      start: 712
    functionDepth: 0
    functionLinenumber: 712
    functionLinenumberEnd: 715
    functionName: MDBGenCursor::last
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 0
    functionsReached:
    - MDBGenCursor::currentlast
    linkageType: ''
    returnType: int
    signature: int last(MDBOutVal& key, MDBOutVal& data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MDBGenCursor::currentlast
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:718,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' key'
    - ' data'
    argTypes:
    - MDBOutVal
    - MDBOutVal
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 719
      start: 716
    functionDepth: 0
    functionLinenumber: 716
    functionLinenumberEnd: 719
    functionName: MDBGenCursor::first
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 0
    functionsReached:
    - MDBGenCursor::currentlast
    linkageType: ''
    returnType: int
    signature: int first(MDBOutVal& key, MDBOutVal& data)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 724
      start: 721
    functionDepth: 0
    functionLinenumber: 721
    functionLinenumberEnd: 724
    functionName: operator MDB_cursor*()
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void operator MDB_cursor*()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 729
      start: 726
    functionDepth: 0
    functionLinenumber: 726
    functionLinenumberEnd: 729
    functionName: operator bool() const
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void operator bool() const
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: MDBGenCursor::find
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:734,1
    - Dst: begin
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:734,1
    - Dst: end
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:735,1
    - Dst: static_cast<T*>
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:736,1
    - Dst: end
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:737,1
    - Dst: erase
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:738,1
    - Dst: mdb_cursor_close
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:743,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 746
      start: 731
    functionDepth: 0
    functionLinenumber: 731
    functionLinenumberEnd: 746
    functionName: MDBGenCursor::close
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 0
    functionsReached:
    - mdb_cursor_close
    - end
    - static_cast<T*>
    - begin
    - MDBGenCursor::find
    - erase
    linkageType: ''
    returnType: void
    signature: void close()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 752
      start: 752
    functionDepth: 0
    functionLinenumber: 752
    functionLinenumberEnd: 752
    functionName: MDBROCursor::MDBROCursor
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void MDBROCursor()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 1
    argNames:
    - ' src'
    argTypes:
    - MDBROCursor
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 754
      start: 754
    functionDepth: 0
    functionLinenumber: 754
    functionLinenumberEnd: 754
    functionName: MDBROCursor::MDBROCursor
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void MDBROCursor(const MDBROCursor& src)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 1
    argNames:
    - ' src'
    argTypes:
    - MDBROCursor
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 755
      start: 755
    functionDepth: 0
    functionLinenumber: 755
    functionLinenumberEnd: 755
    functionName: MDBROCursor::MDBROCursor
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void MDBROCursor(MDBROCursor&& src)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 1
    argNames:
    - ' src'
    argTypes:
    - MDBROCursor
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 756
      start: 756
    functionDepth: 0
    functionLinenumber: 756
    functionLinenumberEnd: 756
    functionName: '& operator=(const MDBROCursor& src)'
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: MDBROCursor
    signature: MDBROCursor & operator=(const MDBROCursor& src)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 1
    argNames:
    - ' src'
    argTypes:
    - MDBROCursor
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 757
      start: 757
    functionDepth: 0
    functionLinenumber: 757
    functionLinenumberEnd: 757
    functionName: '& operator=(MDBROCursor&& src)'
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: MDBROCursor
    signature: MDBROCursor & operator=(MDBROCursor&& src)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 758
      start: 758
    functionDepth: 0
    functionLinenumber: 758
    functionLinenumberEnd: 758
    functionName: ~MDBROCursor()
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~MDBROCursor()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: closeROCursors
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:778,1
    - Dst: MDBRWTransactionImpl::closeRWCursors
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:779,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 780
      start: 776
    functionDepth: 0
    functionLinenumber: 776
    functionLinenumberEnd: 780
    functionName: MDBRWTransactionImpl::closeRORWCursors
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 4
    functionsReached:
    - closeROCursors
    - MDBRWTransactionImpl::closeRWCursors
    linkageType: ''
    returnType: void
    signature: void closeRORWCursors()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - MDBRWTransactionImpl
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 785
      start: 785
    functionDepth: 0
    functionLinenumber: 785
    functionLinenumberEnd: 785
    functionName: MDBRWTransactionImpl::MDBRWTransactionImpl
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void MDBRWTransactionImpl(const MDBRWTransactionImpl& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - MDBRWTransactionImpl
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 786
      start: 786
    functionDepth: 0
    functionLinenumber: 786
    functionLinenumberEnd: 786
    functionName: MDBRWTransactionImpl::MDBRWTransactionImpl
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void MDBRWTransactionImpl(MDBRWTransactionImpl&& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - MDBRWTransactionImpl
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 787
      start: 787
    functionDepth: 0
    functionLinenumber: 787
    functionLinenumberEnd: 787
    functionName: '& operator=(const MDBRWTransactionImpl& rhs)'
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: MDBRWTransactionImpl
    signature: MDBRWTransactionImpl & operator=(const MDBRWTransactionImpl& rhs)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - MDBRWTransactionImpl
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 788
      start: 788
    functionDepth: 0
    functionLinenumber: 788
    functionLinenumberEnd: 788
    functionName: '& operator=(MDBRWTransactionImpl&& rhs)'
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: MDBRWTransactionImpl
    signature: MDBRWTransactionImpl & operator=(MDBRWTransactionImpl&& rhs)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: std::runtime_error
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:802,1
    - Dst: mdb_put
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:805,1
    - Dst: const_cast<MDB_val*>
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:807,1
    - Dst: const_cast<MDB_val*>
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:808,1
    - Dst: std::runtime_error
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:810,1
    - Dst: MDBError
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:810,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 7
    argCount: 3
    argNames:
    - dbi
    - ' key'
    - ' val'
    argTypes:
    - MDB_dbi
    - MDBInVal
    - MDBInVal
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 812
      start: 799
    functionDepth: 0
    functionLinenumber: 799
    functionLinenumberEnd: 812
    functionName: MDBRWTransactionImpl::put_raw
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 2
    functionsReached:
    - MDBError
    - const_cast<MDB_val*>
    - mdb_put
    - std::runtime_error
    linkageType: ''
    returnType: void
    signature: void put_raw(MDB_dbi dbi, const MDBInVal& key, const MDBInVal& val,
      int flags = 0)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: std::runtime_error
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:817,1
    - Dst: mdb_txn_id
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:820,1
    - Dst: std::runtime_error
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:822,1
    - Dst: LMDBLS::LSheader::LSheader
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:826,1
    - Dst: std::string
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:826,1
    - Dst: MDBRWTransactionImpl::put_raw
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:829,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 3
    argNames:
    - dbi
    - ' key'
    - ' val'
    argTypes:
    - MDB_dbi
    - MDBInVal
    - MDBInVal
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 830
      start: 814
    functionDepth: 0
    functionLinenumber: 814
    functionLinenumberEnd: 830
    functionName: MDBRWTransactionImpl::put
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 0
    functionsReached:
    - mdb_txn_id
    - std::runtime_error
    - MDBRWTransactionImpl::put_raw
    - LMDBLS::LSheader::LSheader
    - std::string
    linkageType: ''
    returnType: void
    signature: void put(MDB_dbi dbi, const MDBInVal& key, const MDBInVal& val, int
      flags = 0)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: std::runtime_error
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:836,1
    - Dst: mdb_txn_id
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:839,1
    - Dst: std::runtime_error
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:841,1
    - Dst: LMDBLS::LSheader::LSheader
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:844,1
    - Dst: std::string::length
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:846,1
    - Dst: std::runtime_error
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:847,1
    - Dst: memcpy
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:849,1
    - Dst: std::string::c_str
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:849,1
    - Dst: std::string::length
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:849,1
    - Dst: MDBRWTransactionImpl::put_raw
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:851,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 12
    argCount: 3
    argNames:
    - dbi
    - ' key'
    - ' val'
    argTypes:
    - MDB_dbi
    - MDBInVal
    - MDBInVal
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 852
      start: 833
    functionDepth: 0
    functionLinenumber: 833
    functionLinenumberEnd: 852
    functionName: MDBRWTransactionImpl::put_header_in_place
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 0
    functionsReached:
    - std::string::length
    - memcpy
    - mdb_txn_id
    - std::runtime_error
    - std::string::c_str
    - MDBRWTransactionImpl::put_raw
    - LMDBLS::LSheader::LSheader
    linkageType: ''
    returnType: void
    signature: void put_header_in_place(MDB_dbi dbi, const MDBInVal& key, const MDBInVal&
      val, int flags = 0)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 860
      start: 856
    functionDepth: 0
    functionLinenumber: 856
    functionLinenumberEnd: 860
    functionName: MDBRWTransactionImpl::stringWithEmptyHeader
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 8
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string stringWithEmptyHeader()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: std::runtime_error
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:865,1
    - Dst: mdb_put
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:867,1
    - Dst: const_cast<MDB_val*>
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:868,1
    - Dst: const_cast<MDB_val*>
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:869,1
    - Dst: std::runtime_error
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:870,1
    - Dst: MDBError
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:870,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 6
    argCount: 3
    argNames:
    - dbi
    - ' key'
    - ' val'
    argTypes:
    - MDB_dbi
    - MDBInVal
    - MDBInVal
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 872
      start: 862
    functionDepth: 0
    functionLinenumber: 862
    functionLinenumberEnd: 872
    functionName: MDBRWTransactionImpl::put
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 0
    functionsReached:
    - MDBError
    - const_cast<MDB_val*>
    - mdb_put
    - std::runtime_error
    linkageType: ''
    returnType: void
    signature: void put(MDB_dbi dbi, const MDBInVal& key, const MDBInVal& val, int
      flags = 0)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: mdb_txn_id
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:881,1
    - Dst: std::runtime_error
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:883,1
    - Dst: LMDBLS::LSheader::LSheader
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:887,1
    - Dst: mdb_put
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:890,1
    - Dst: const_cast<MDB_val*>
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:892,1
    - Dst: const_cast<MDB_val*>
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:893,1
    - Dst: std::runtime_error
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:895,1
    - Dst: MDBError
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:895,1
    - Dst: mdb_del
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:901,1
    - Dst: std::runtime_error
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:903,1
    - Dst: MDBError
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:903,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 13
    argCount: 2
    argNames:
    - ' dbi'
    - ' key'
    argTypes:
    - MDBDbi
    - MDBInVal
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 905
      start: 875
    functionDepth: 0
    functionLinenumber: 875
    functionLinenumberEnd: 905
    functionName: MDBRWTransactionImpl::del
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 0
    functionsReached:
    - mdb_txn_id
    - std::runtime_error
    - MDBError
    - LMDBLS::LSheader::LSheader
    - const_cast<MDB_val*>
    - mdb_put
    - mdb_del
    linkageType: ''
    returnType: void
    signature: void del(MDBDbi& dbi, const MDBInVal& key)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: std::runtime_error
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:910,1
    - Dst: mdb_get
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:913,1
    - Dst: const_cast<MDB_val*>
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:915,1
    - Dst: const_cast<MDB_val*>
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:916,1
    - Dst: std::runtime_error
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:918,1
    - Dst: MDBError
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:918,1
    - Dst: getNoStripHeader
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:923,1
    - Dst: LMDBLS::LSisDeleted
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:924,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 13
    argCount: 3
    argNames:
    - ' dbi'
    - ' key'
    - ' val'
    argTypes:
    - MDBDbi
    - MDBInVal
    - MDBOutVal
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 931
      start: 907
    functionDepth: 0
    functionLinenumber: 907
    functionLinenumberEnd: 931
    functionName: MDBRWTransactionImpl::get
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 0
    functionsReached:
    - std::runtime_error
    - MDBError
    - getNoStripHeader
    - const_cast<MDB_val*>
    - LMDBLS::LSisDeleted
    - mdb_get
    linkageType: ''
    returnType: int
    signature: int get(MDBDbi& dbi, const MDBInVal& key, MDBOutVal& val)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: MDBDbi
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:935,1
    - Dst: environment
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:935,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - dbname
    - flags
    argTypes:
    - string_view
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 936
      start: 933
    functionDepth: 0
    functionLinenumber: 933
    functionLinenumberEnd: 936
    functionName: MDBRWTransactionImpl::openDB
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 0
    functionsReached:
    - environment
    - MDBDbi
    linkageType: ''
    returnType: MDBDbi
    signature: MDBDbi openDB(string_view dbname, int flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 952
      start: 952
    functionDepth: 0
    functionLinenumber: 952
    functionLinenumberEnd: 952
    functionName: MDBRWCursor::MDBRWCursor
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void MDBRWCursor()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 1
    argNames:
    - src
    argTypes:
    - MDBRWCursor
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 954
      start: 954
    functionDepth: 0
    functionLinenumber: 954
    functionLinenumberEnd: 954
    functionName: MDBRWCursor::MDBRWCursor
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void MDBRWCursor(const MDBRWCursor &src)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 1
    argNames:
    - src
    argTypes:
    - MDBRWCursor
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 955
      start: 955
    functionDepth: 0
    functionLinenumber: 955
    functionLinenumberEnd: 955
    functionName: MDBRWCursor::MDBRWCursor
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void MDBRWCursor(MDBRWCursor &&src)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 1
    argNames:
    - src
    argTypes:
    - MDBRWCursor
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 956
      start: 956
    functionDepth: 0
    functionLinenumber: 956
    functionLinenumberEnd: 956
    functionName: '&operator=(const MDBRWCursor &src)'
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: MDBRWCursor
    signature: MDBRWCursor &operator=(const MDBRWCursor &src)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 1
    argNames:
    - src
    argTypes:
    - MDBRWCursor
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 957
      start: 957
    functionDepth: 0
    functionLinenumber: 957
    functionLinenumberEnd: 957
    functionName: '&operator=(MDBRWCursor &&src)'
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: MDBRWCursor
    signature: MDBRWCursor &operator=(MDBRWCursor &&src)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 958
      start: 958
    functionDepth: 0
    functionLinenumber: 958
    functionLinenumberEnd: 958
    functionName: ~MDBRWCursor()
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~MDBRWCursor()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mdb_cursor_put
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:964,1
    - Dst: const_cast<MDB_val*>
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:965,1
    - Dst: const_cast<MDB_val*>
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:966,1
    - Dst: std::runtime_error
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:968,1
    - Dst: MDBError
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:968,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 2
    argNames:
    - ' key'
    - ' data'
    argTypes:
    - MDBOutVal
    - MDBInVal
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 970
      start: 962
    functionDepth: 0
    functionLinenumber: 962
    functionLinenumberEnd: 970
    functionName: MDBRWCursor::put_raw
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 2
    functionsReached:
    - const_cast<MDB_val*>
    - MDBError
    - mdb_cursor_put
    - std::runtime_error
    linkageType: ''
    returnType: void
    signature: void put_raw(const MDBOutVal& key, const MDBInVal& data)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mdb_txn_id
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:974,1
    - Dst: std::runtime_error
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:976,1
    - Dst: LMDBLS::LSheader::LSheader
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:979,1
    - Dst: std::string
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:980,1
    - Dst: MDBRWCursor::put_raw
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:983,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - ' key'
    - ' data'
    argTypes:
    - MDBOutVal
    - MDBInVal
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 984
      start: 972
    functionDepth: 0
    functionLinenumber: 972
    functionLinenumberEnd: 984
    functionName: MDBRWCursor::put
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 0
    functionsReached:
    - mdb_txn_id
    - std::runtime_error
    - LMDBLS::LSheader::LSheader
    - MDBRWCursor::put_raw
    - std::string
    linkageType: ''
    returnType: void
    signature: void put(const MDBOutVal& key, const MDBInVal& data)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mdb_txn_id
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:989,1
    - Dst: std::runtime_error
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:991,1
    - Dst: LMDBLS::LSheader::LSheader
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:993,1
    - Dst: std::string::length
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:995,1
    - Dst: std::runtime_error
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:996,1
    - Dst: memcpy
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:998,1
    - Dst: std::string::c_str
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:998,1
    - Dst: std::string::length
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:998,1
    - Dst: MDBRWCursor::put_raw
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:999,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 2
    argNames:
    - ' key'
    - ' val'
    argTypes:
    - MDBOutVal
    - MDBInVal
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1000
      start: 987
    functionDepth: 0
    functionLinenumber: 987
    functionLinenumberEnd: 1000
    functionName: MDBRWCursor::put_header_in_place
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 0
    functionsReached:
    - std::string::length
    - memcpy
    - mdb_txn_id
    - std::runtime_error
    - std::string::c_str
    - LMDBLS::LSheader::LSheader
    - MDBRWCursor::put_raw
    linkageType: ''
    returnType: void
    signature: void put_header_in_place(const MDBOutVal& key, const MDBInVal& val)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mdb_cursor_put
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:1004,1
    - Dst: const_cast<MDB_val*>
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:1005,1
    - Dst: const_cast<MDB_val*>
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:1006,1
    - Dst: std::runtime_error
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:1008,1
    - Dst: MDBError
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:1008,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 2
    argNames:
    - ' key'
    - ' data'
    argTypes:
    - MDBOutVal
    - MDBInVal
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1010
      start: 1002
    functionDepth: 0
    functionLinenumber: 1002
    functionLinenumberEnd: 1010
    functionName: MDBRWCursor::put
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 0
    functionsReached:
    - const_cast<MDB_val*>
    - MDBError
    - mdb_cursor_put
    - std::runtime_error
    linkageType: ''
    returnType: void
    signature: void put(const MDBOutVal& key, const MDBInVal& data)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: mdb_txn_id
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:1017,1
    - Dst: std::runtime_error
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:1018,1
    - Dst: LMDBLS::LSheader::LSheader
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:1021,1
    - Dst: MDBInVal
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:1025,1
    - Dst: mdb_cursor_put
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:1028,1
    - Dst: const_cast<MDB_val*>
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:1029,1
    - Dst: const_cast<MDB_val*>
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:1030,1
    - Dst: std::runtime_error
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:1032,1
    - Dst: MDBError
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:1032,1
    - Dst: mdb_cursor_del
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:1037,1
    - Dst: std::runtime_error
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:1038,1
    - Dst: MDBError
      Src: /src/pdns/ext/lmdb-safe/lmdb-safe.hh:1038,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 14
    argCount: 1
    argNames:
    - ' key'
    argTypes:
    - MDBInVal
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1041
      start: 1014
    functionDepth: 0
    functionLinenumber: 1014
    functionLinenumberEnd: 1041
    functionName: MDBRWCursor::del
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-safe.hh
    functionUses: 0
    functionsReached:
    - mdb_txn_id
    - std::runtime_error
    - MDBError
    - mdb_cursor_put
    - mdb_cursor_del
    - LMDBLS::LSheader::LSheader
    - const_cast<MDB_val*>
    - MDBInVal
    linkageType: ''
    returnType: void
    signature: void del(const MDBInVal& key)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' buffer'
    - ' value'
    argTypes:
    - std::string
    - T
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 50
    functionDepth: 0
    functionLinenumber: 50
    functionLinenumberEnd: 56
    functionName: serializeToBuffer
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-typed.hh
    functionUses: 8
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void serializeToBuffer(std::string& buffer, const T& value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: T
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:61,1
    - Dst: data
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:62,1
    - Dst: size
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:62,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ' buffer'
    - ' value'
    argTypes:
    - string_view
    - T
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 59
    functionDepth: 0
    functionLinenumber: 59
    functionLinenumberEnd: 66
    functionName: deserializeFromBuffer
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-typed.hh
    functionUses: 6
    functionsReached:
    - T
    - size
    - data
    linkageType: ''
    returnType: void
    signature: void deserializeFromBuffer(const string_view& buffer, T& value)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' value'
    argTypes:
    - T
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 72
    functionDepth: 0
    functionLinenumber: 72
    functionLinenumberEnd: 75
    functionName: keyConv
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-typed.hh
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string keyConv(const T& value)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' value'
    argTypes:
    - T
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 81
    functionDepth: 0
    functionLinenumber: 81
    functionLinenumberEnd: 84
    functionName: keyConv
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-typed.hh
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: std::string
    signature: std::string keyConv(const T& value)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::runtime_error
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:89,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - combined
    argTypes:
    - MDBInVal
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 87
    functionDepth: 0
    functionLinenumber: 87
    functionLinenumberEnd: 96
    functionName: getKeyFromCombinedKey
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-typed.hh
    functionUses: 0
    functionsReached:
    - std::runtime_error
    linkageType: ''
    returnType: MDBOutVal
    signature: MDBOutVal getKeyFromCombinedKey(MDBInVal combined)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::runtime_error
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:100,1
    - Dst: static_cast<char*>
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:105,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - combined
    argTypes:
    - MDBInVal
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 98
    functionDepth: 0
    functionLinenumber: 98
    functionLinenumberEnd: 108
    functionName: getIDFromCombinedKey
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-typed.hh
    functionUses: 0
    functionsReached:
    - static_cast<char*>
    - std::runtime_error
    linkageType: ''
    returnType: MDBOutVal
    signature: MDBOutVal getIDFromCombinedKey(MDBInVal combined)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<char*>
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:113,1
    - Dst: static_cast<char*>
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:114,1
    - Dst: std::runtime_error
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:118,1
    - Dst: htons
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:121,1
    - Dst: std::string::size
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:121,1
    - Dst: memcpy
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:122,1
    - Dst: std::string::data
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:122,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 2
    argNames:
    - key
    - val
    argTypes:
    - MDBInVal
    - MDBInVal
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 110
    functionDepth: 0
    functionLinenumber: 110
    functionLinenumberEnd: 126
    functionName: makeCombinedKey
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-typed.hh
    functionUses: 0
    functionsReached:
    - static_cast<char*>
    - memcpy
    - std::runtime_error
    - std::string::data
    - std::string::size
    - htons
    linkageType: ''
    returnType: std::string
    signature: std::string makeCombinedKey(MDBInVal key, MDBInVal val)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::runtime_error
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:89,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - combined
    argTypes:
    - MDBInVal
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 87
    functionDepth: 0
    functionLinenumber: 87
    functionLinenumberEnd: 96
    functionName: getKeyFromCombinedKey
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-typed.hh
    functionUses: 0
    functionsReached:
    - std::runtime_error
    linkageType: ''
    returnType: MDBOutVal
    signature: MDBOutVal getKeyFromCombinedKey(MDBInVal combined)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::runtime_error
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:100,1
    - Dst: static_cast<char*>
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:105,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - combined
    argTypes:
    - MDBInVal
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 98
    functionDepth: 0
    functionLinenumber: 98
    functionLinenumberEnd: 108
    functionName: getIDFromCombinedKey
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-typed.hh
    functionUses: 0
    functionsReached:
    - static_cast<char*>
    - std::runtime_error
    linkageType: ''
    returnType: MDBOutVal
    signature: MDBOutVal getIDFromCombinedKey(MDBInVal combined)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<char*>
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:113,1
    - Dst: static_cast<char*>
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:114,1
    - Dst: std::runtime_error
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:118,1
    - Dst: htons
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:121,1
    - Dst: std::string::size
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:121,1
    - Dst: memcpy
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:122,1
    - Dst: std::string::data
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:122,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 2
    argNames:
    - key
    - val
    argTypes:
    - MDBInVal
    - MDBInVal
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 110
    functionDepth: 0
    functionLinenumber: 110
    functionLinenumberEnd: 126
    functionName: makeCombinedKey
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-typed.hh
    functionUses: 0
    functionsReached:
    - static_cast<char*>
    - memcpy
    - std::runtime_error
    - std::string::data
    - std::string::size
    - htons
    linkageType: ''
    returnType: std::string
    signature: std::string makeCombinedKey(MDBInVal key, MDBInVal val)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - parent
    argTypes:
    - Parent*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 143
      start: 143
    functionDepth: 0
    functionLinenumber: 143
    functionLinenumberEnd: 143
    functionName: LMDBIndexOps
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-typed.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void LMDBIndexOps(Parent* parent)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeCombinedKey
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:147,1
    - Dst: keyConv
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:147,1
    - Dst: getMember
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:147,1
    - Dst: put
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:151,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' txn'
    - ' type'
    - idVal
    argTypes:
    - MDBRWTransaction
    - Class
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 152
      start: 145
    functionDepth: 1
    functionLinenumber: 145
    functionLinenumberEnd: 152
    functionName: put
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-typed.hh
    functionUses: 36
    functionsReached:
    - getMember
    - makeCombinedKey
    - put
    - keyConv
    linkageType: ''
    returnType: void
    signature: void put(MDBRWTransaction& txn, const Class& type, uint32_t idVal,
      int flags = 0)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: makeCombinedKey
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:156,1
    - Dst: keyConv
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:156,1
    - Dst: getMember
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:156,1
    - Dst: del
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:159,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' txn'
    - ' type'
    - idVal
    argTypes:
    - MDBRWTransaction
    - Class
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 160
      start: 154
    functionDepth: 1
    functionLinenumber: 154
    functionLinenumberEnd: 160
    functionName: del
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-typed.hh
    functionUses: 21
    functionsReached:
    - del
    - getMember
    - makeCombinedKey
    - keyConv
    linkageType: ''
    returnType: void
    signature: void del(MDBRWTransaction& txn, const Class& type, uint32_t idVal)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: openDB
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:164,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ' env'
    - str
    - flags
    argTypes:
    - std::shared_ptr<MDBEnv>
    - string_view
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 165
      start: 162
    functionDepth: 1
    functionLinenumber: 162
    functionLinenumberEnd: 165
    functionName: openDB
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-typed.hh
    functionUses: 7
    functionsReached:
    - openDB
    linkageType: ''
    returnType: void
    signature: void openDB(std::shared_ptr<MDBEnv>& env, string_view str, int flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 178
      start: 176
    functionDepth: 0
    functionLinenumber: 176
    functionLinenumberEnd: 178
    functionName: index_on
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-typed.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void index_on()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' klass'
    argTypes:
    - Class
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 182
      start: 179
    functionDepth: 0
    functionLinenumber: 179
    functionLinenumberEnd: 182
    functionName: getMember
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-typed.hh
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: Type
    signature: Type getMember(const Class& klass)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 193
      start: 191
    functionDepth: 0
    functionLinenumber: 191
    functionLinenumberEnd: 193
    functionName: index_on_function
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-typed.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void index_on_function()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: function
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:197,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' klass'
    argTypes:
    - Class
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 198
      start: 194
    functionDepth: 0
    functionLinenumber: 194
    functionLinenumberEnd: 198
    functionName: getMember
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-typed.hh
    functionUses: 2
    functionsReached:
    - function
    linkageType: ''
    returnType: Type
    signature: Type getMember(const Class& klass)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 208
      start: 207
    functionDepth: 0
    functionLinenumber: 207
    functionLinenumberEnd: 208
    functionName: put
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-typed.hh
    functionUses: 36
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void put(MDBRWTransaction& /* txn */, const Class& /* t */, uint32_t
      /* id */, int /* flags */ = 0)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 211
      start: 210
    functionDepth: 0
    functionLinenumber: 210
    functionLinenumberEnd: 211
    functionName: del
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-typed.hh
    functionUses: 21
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void del(MDBRWTransaction& /* txn */, const Class& /* t */, uint32_t
      /* id */)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 215
      start: 213
    functionDepth: 0
    functionLinenumber: 213
    functionLinenumberEnd: 215
    functionName: openDB
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-typed.hh
    functionUses: 7
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void openDB(std::shared_ptr<MDBEnv>& /* env */, string_view /* str
      */, int /* flags */)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::get<N>
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:232,1
    - Dst: std::string
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:232,1
    - Dst: std::to_string
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:232,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' name'
    argTypes:
    - string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 233
      start: 230
    functionDepth: 0
    functionLinenumber: 230
    functionLinenumberEnd: 233
    functionName: TypedDBI::openDB
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-typed.hh
    functionUses: 0
    functionsReached:
    - std::string
    - std::get<N>
    - std::to_string
    linkageType: ''
    returnType: auto
    signature: auto openDB(string_view& name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:237,1
    - Dst: TypedDBI::openDB
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:239,1
    - Dst: TypedDBI::openDB
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:240,1
    - Dst: TypedDBI::openDB
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:241,1
    - Dst: TypedDBI::openDB
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:242,1
    - Dst: TypedDBI::openDB
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:243,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - env
    - name
    argTypes:
    - std::shared_ptr<MDBEnv>
    - string_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 244
      start: 236
    functionDepth: 1
    functionLinenumber: 236
    functionLinenumberEnd: 244
    functionName: TypedDBI::TypedDBI
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-typed.hh
    functionUses: 0
    functionsReached:
    - std::move
    - TypedDBI::openDB
    linkageType: ''
    returnType: void
    signature: void TypedDBI(std::shared_ptr<MDBEnv> env, string_view name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' parent'
    argTypes:
    - Parent
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 253
      start: 251
    functionDepth: 0
    functionLinenumber: 251
    functionLinenumberEnd: 253
    functionName: TypedDBI::ReadonlyOperations
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-typed.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ReadonlyOperations(Parent& parent)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: TypedDBI::get
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:277,1
    - Dst: deserializeFromBuffer
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:279,1
    - Dst: MDBOutVal::get
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:279,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - itemId
    - ' value'
    argTypes:
    - uint32_t
    - T
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 282
      start: 273
    functionDepth: 0
    functionLinenumber: 273
    functionLinenumberEnd: 282
    functionName: TypedDBI::get2
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-typed.hh
    functionUses: 0
    functionsReached:
    - deserializeFromBuffer
    - MDBOutVal::get
    - TypedDBI::get
    linkageType: ''
    returnType: int
    signature: int get2(uint32_t itemId, T& value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TypedDBI::get2
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:285,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - itemId
    - ' value'
    argTypes:
    - uint32_t
    - T
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 286
      start: 283
    functionDepth: 1
    functionLinenumber: 283
    functionLinenumberEnd: 286
    functionName: TypedDBI::get
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-typed.hh
    functionUses: 1
    functionsReached:
    - TypedDBI::get2
    linkageType: ''
    returnType: bool
    signature: bool get(uint32_t itemId, T& value)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: TypedDBI::get_multi
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:301,1
    - Dst: LmdbIdVec::size
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:303,1
    - Dst: TypedDBI::get2
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:307,1
    - Dst: std::runtime_error
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:315,1
    - Dst: std::to_string
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:315,1
    - Dst: std::runtime_error
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:319,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 2
    argNames:
    - ' key'
    - ' out'
    argTypes:
    - typename std::tuple_element<N, tuple_t>::type::type
    - T
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 321
      start: 290
    functionDepth: 1
    functionLinenumber: 290
    functionLinenumberEnd: 321
    functionName: TypedDBI::get
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-typed.hh
    functionUses: 1
    functionsReached:
    - TypedDBI::get_multi
    - std::to_string
    - std::runtime_error
    - TypedDBI::get2
    - LmdbIdVec::size
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t get(const typename std::tuple_element<N, tuple_t>::type::type&
      key, T& out)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:351,1
    - Dst: clear
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:359,1
    - Dst: TypedDBI::get
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:361,1
    - Dst: std::runtime_error
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:367,1
    - Dst: TypedDBI::get
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:376,1
    - Dst: std::runtime_error
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:377,1
    - Dst: deserializeFromBuffer
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:379,1
    - Dst: TypedDBI::get
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:379,1
    - Dst: deserializeFromBuffer
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:382,1
    - Dst: TypedDBI::get
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:382,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 20
    argCount: 4
    argNames:
    - parent
    - ' cursor'
    - on_index
    - one_key
    argTypes:
    - Parent*
    - typename Parent::cursor_t
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 384
      start: 349
    functionDepth: 1
    functionLinenumber: 349
    functionLinenumberEnd: 384
    functionName: TypedDBI::iter_t
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-typed.hh
    functionUses: 0
    functionsReached:
    - std::move
    - std::runtime_error
    - deserializeFromBuffer
    - TypedDBI::get
    - clear
    linkageType: ''
    returnType: void
    signature: void iter_t(Parent* parent, typename Parent::cursor_t&& cursor, bool
      on_index, bool one_key, bool end=false)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:388,1
    - Dst: std::move
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:391,1
    - Dst: TypedDBI::get
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:397,1
    - Dst: getIDFromCombinedKey
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:402,1
    - Dst: TypedDBI::get
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:405,1
    - Dst: std::runtime_error
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:406,1
    - Dst: deserializeFromBuffer
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:408,1
    - Dst: TypedDBI::get
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:408,1
    - Dst: deserializeFromBuffer
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:411,1
    - Dst: TypedDBI::get
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:411,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 3
    argNames:
    - parent
    - ' cursor'
    - prefix
    argTypes:
    - Parent*
    - typename Parent::cursor_t
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 413
      start: 386
    functionDepth: 1
    functionLinenumber: 386
    functionLinenumberEnd: 413
    functionName: TypedDBI::iter_t
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-typed.hh
    functionUses: 0
    functionsReached:
    - std::move
    - getIDFromCombinedKey
    - std::runtime_error
    - deserializeFromBuffer
    - TypedDBI::get
    linkageType: ''
    returnType: void
    signature: void iter_t(Parent* parent, typename Parent::cursor_t&& cursor, std::string
      prefix)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TypedDBI::del
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:418,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 419
      start: 416
    functionDepth: 1
    functionLinenumber: 416
    functionLinenumberEnd: 419
    functionName: TypedDBI::del
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-typed.hh
    functionUses: 1
    functionsReached:
    - TypedDBI::del
    linkageType: ''
    returnType: void
    signature: void del()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 424
      start: 421
    functionDepth: 0
    functionLinenumber: 421
    functionLinenumberEnd: 424
    functionName: operator!=(const eiter_t& /* rhs */) const
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-typed.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool operator!=(const eiter_t& /* rhs */) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 429
      start: 426
    functionDepth: 0
    functionLinenumber: 426
    functionLinenumberEnd: 429
    functionName: operator==(const eiter_t& /* rhs */) const
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-typed.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool operator==(const eiter_t& /* rhs */) const
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 434
      start: 431
    functionDepth: 0
    functionLinenumber: 431
    functionLinenumberEnd: 434
    functionName: '& operator*()'
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-typed.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: T
    signature: T & operator*()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 439
      start: 436
    functionDepth: 0
    functionLinenumber: 436
    functionLinenumberEnd: 439
    functionName: '* operator->()'
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-typed.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: T
    signature: T * operator->()
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: get
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:448,1
    - Dst: std::runtime_error
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:454,1
    - Dst: MDBError
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:454,1
    - Dst: empty
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:456,1
    - Dst: getKeyFromCombinedKey
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:458,1
    - Dst: getIDFromCombinedKey
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:470,1
    - Dst: get
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:471,1
    - Dst: std::runtime_error
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:472,1
    - Dst: deserializeFromBuffer
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:477,1
    - Dst: MDBOutVal::get
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:477,1
    - Dst: deserializeFromBuffer
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:483,1
    - Dst: get
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:483,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 24
    argCount: 1
    argNames:
    - operation
    argTypes:
    - MDB_cursor_op
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 487
      start: 442
    functionDepth: 1
    functionLinenumber: 442
    functionLinenumberEnd: 487
    functionName: '& genoperator(MDB_cursor_op operation)'
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-typed.hh
    functionUses: 0
    functionsReached:
    - MDBOutVal::get
    - getIDFromCombinedKey
    - std::runtime_error
    - getKeyFromCombinedKey
    - deserializeFromBuffer
    - MDBError
    - get
    - empty
    linkageType: ''
    returnType: iter_t
    signature: iter_t & genoperator(MDB_cursor_op operation)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: genoperator
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:491,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 492
      start: 489
    functionDepth: 0
    functionLinenumber: 489
    functionLinenumberEnd: 492
    functionName: '& operator++()'
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-typed.hh
    functionUses: 0
    functionsReached:
    - genoperator
    linkageType: ''
    returnType: iter_t
    signature: iter_t & operator++()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: getNoStripHeader
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:503,1
    - Dst: getNoStripHeader
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:505,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 506
      start: 499
    functionDepth: 0
    functionLinenumber: 499
    functionLinenumberEnd: 506
    functionName: TypedDBI::getID
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-typed.hh
    functionUses: 0
    functionsReached:
    - getNoStripHeader
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t getID()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 511
      start: 508
    functionDepth: 0
    functionLinenumber: 508
    functionLinenumberEnd: 511
    functionName: '& getKey()'
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-typed.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: MDBOutVal
    signature: MDBOutVal & getKey()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: getCursor
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:531,1
    - Dst: std::get<N>
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:531,1
    - Dst: typename Parent::cursor_t::get
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:536,1
    - Dst: std::move
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:538,1
    - Dst: std::move
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:541,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - operation
    argTypes:
    - MDB_cursor_op
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 542
      start: 529
    functionDepth: 0
    functionLinenumber: 529
    functionLinenumberEnd: 542
    functionName: TypedDBI::genbegin
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-typed.hh
    functionUses: 0
    functionsReached:
    - typename Parent::cursor_t::get
    - std::move
    - std::get<N>
    - getCursor
    linkageType: ''
    returnType: iter_t
    signature: iter_t genbegin(MDB_cursor_op operation)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TypedDBI::genbegin
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:547,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 548
      start: 545
    functionDepth: 1
    functionLinenumber: 545
    functionLinenumberEnd: 548
    functionName: TypedDBI::begin
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-typed.hh
    functionUses: 0
    functionsReached:
    - TypedDBI::genbegin
    linkageType: ''
    returnType: iter_t
    signature: iter_t begin()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TypedDBI::genbegin
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:553,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 554
      start: 551
    functionDepth: 1
    functionLinenumber: 551
    functionLinenumberEnd: 554
    functionName: TypedDBI::rbegin
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-typed.hh
    functionUses: 0
    functionsReached:
    - TypedDBI::genbegin
    linkageType: ''
    returnType: iter_t
    signature: iter_t rbegin()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: getCursor
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:558,1
    - Dst: typename Parent::cursor_t::get
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:563,1
    - Dst: std::move
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:565,1
    - Dst: std::move
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:568,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 569
      start: 556
    functionDepth: 0
    functionLinenumber: 556
    functionLinenumberEnd: 569
    functionName: TypedDBI::begin
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-typed.hh
    functionUses: 0
    functionsReached:
    - typename Parent::cursor_t::get
    - std::move
    - getCursor
    linkageType: ''
    returnType: iter_t
    signature: iter_t begin()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: eiter_t
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:573,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 574
      start: 571
    functionDepth: 0
    functionLinenumber: 571
    functionLinenumberEnd: 574
    functionName: TypedDBI::end
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-typed.hh
    functionUses: 0
    functionsReached:
    - eiter_t
    linkageType: ''
    returnType: eiter_t
    signature: eiter_t end()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: getCursor
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:580,1
    - Dst: std::get<N>
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:580,1
    - Dst: makeCombinedKey
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:582,1
    - Dst: keyConv
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:582,1
    - Dst: MDBInVal
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:582,1
    - Dst: typename Parent::cursor_t::get
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:588,1
    - Dst: std::move
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:590,1
    - Dst: std::move
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:593,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - ' key'
    - operation
    argTypes:
    - typename std::tuple_element<N, tuple_t>::type::type
    - MDB_cursor_op
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 594
      start: 578
    functionDepth: 1
    functionLinenumber: 578
    functionLinenumberEnd: 594
    functionName: TypedDBI::genfind
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-typed.hh
    functionUses: 0
    functionsReached:
    - std::move
    - makeCombinedKey
    - keyConv
    - typename Parent::cursor_t::get
    - getCursor
    - std::get<N>
    - MDBInVal
    linkageType: ''
    returnType: iter_t
    signature: iter_t genfind(const typename std::tuple_element<N, tuple_t>::type::type&
      key, MDB_cursor_op operation)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TypedDBI::genfind
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:599,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' key'
    argTypes:
    - typename std::tuple_element<N, tuple_t>::type::type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 600
      start: 597
    functionDepth: 2
    functionLinenumber: 597
    functionLinenumberEnd: 600
    functionName: TypedDBI::find
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-typed.hh
    functionUses: 0
    functionsReached:
    - TypedDBI::genfind
    linkageType: ''
    returnType: iter_t
    signature: iter_t find(const typename std::tuple_element<N, tuple_t>::type::type&
      key)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TypedDBI::genfind
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:605,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' key'
    argTypes:
    - typename std::tuple_element<N, tuple_t>::type::type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 606
      start: 603
    functionDepth: 2
    functionLinenumber: 603
    functionLinenumberEnd: 606
    functionName: TypedDBI::lower_bound
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-typed.hh
    functionUses: 0
    functionsReached:
    - TypedDBI::genfind
    linkageType: ''
    returnType: iter_t
    signature: iter_t lower_bound(const typename std::tuple_element<N, tuple_t>::type::type&
      key)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: getCursor
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:613,1
    - Dst: std::get<N>
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:613,1
    - Dst: makeCombinedKey
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:615,1
    - Dst: keyConv
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:615,1
    - Dst: MDBInVal
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:615,1
    - Dst: typename Parent::cursor_t::get
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:621,1
    - Dst: std::move
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:623,1
    - Dst: eiter_t
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:623,1
    - Dst: std::move
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:626,1
    - Dst: eiter_t
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:626,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - ' key'
    argTypes:
    - typename std::tuple_element<N, tuple_t>::type::type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 627
      start: 611
    functionDepth: 1
    functionLinenumber: 611
    functionLinenumberEnd: 627
    functionName: TypedDBI::equal_range
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-typed.hh
    functionUses: 0
    functionsReached:
    - std::move
    - makeCombinedKey
    - keyConv
    - typename Parent::cursor_t::get
    - eiter_t
    - getCursor
    - std::get<N>
    - MDBInVal
    linkageType: ''
    returnType: std::pair<iter_t,eiter_t>
    signature: std::pair<iter_t,eiter_t> equal_range(const typename std::tuple_element<N,
      tuple_t>::type::type& key)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: getCursor
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:633,1
    - Dst: std::get<N>
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:633,1
    - Dst: makeCombined
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:635,1
    - Dst: keyConv
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:635,1
    - Dst: MDBInVal
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:635,1
    - Dst: typename Parent::cursor_t::get
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:641,1
    - Dst: getKeyFromCombinedKey
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:642,1
    - Dst: std::move
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:644,1
    - Dst: eiter_t
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:644,1
    - Dst: TypedDBI::iter_t
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:647,1
    - Dst: std::move
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:647,1
    - Dst: eiter_t
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:647,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - ' key'
    argTypes:
    - typename std::tuple_element<N, tuple_t>::type::type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 648
      start: 631
    functionDepth: 2
    functionLinenumber: 631
    functionLinenumberEnd: 648
    functionName: TypedDBI::prefix_range
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-typed.hh
    functionUses: 0
    functionsReached:
    - std::move
    - keyConv
    - TypedDBI::iter_t
    - typename Parent::cursor_t::get
    - getKeyFromCombinedKey
    - eiter_t
    - makeCombined
    - getCursor
    - std::get<N>
    - MDBInVal
    linkageType: ''
    returnType: std::pair<iter_t,eiter_t>
    signature: std::pair<iter_t,eiter_t> prefix_range(const typename std::tuple_element<N,
      tuple_t>::type::type& key)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: getCursor
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:654,1
    - Dst: std::get<N>
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:654,1
    - Dst: makeCombinedKey
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:656,1
    - Dst: keyConv
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:656,1
    - Dst: MDBInVal
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:656,1
    - Dst: typename Parent::cursor_t::get
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:662,1
    - Dst: MDBOutVal::getNoStripHeader
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:668,1
    - Dst: getKeyFromCombinedKey
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:669,1
    - Dst: auto::getNoStripHeader
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:670,1
    - Dst: auto::find
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:672,1
    - Dst: getIDFromCombinedKey
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:678,1
    - Dst: LMDBLS::LSgetTimestamp
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:679,1
    - Dst: MDBOutVal::getNoStripHeader
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:679,1
    - Dst: auto::getNoStripHeader
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:680,1
    - Dst: clear
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:687,1
    - Dst: push_back
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:688,1
    - Dst: push_back
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:691,1
    - Dst: typename Parent::cursor_t::get
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:695,1
    - Dst: std::runtime_error
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:699,1
    - Dst: MDBError
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:699,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 23
    argCount: 2
    argNames:
    - ' key'
    - ' ids'
    argTypes:
    - typename std::tuple_element<N, tuple_t>::type::type
    - LmdbIdVec
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 701
      start: 651
    functionDepth: 1
    functionLinenumber: 651
    functionLinenumberEnd: 701
    functionName: TypedDBI::get_multi
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-typed.hh
    functionUses: 1
    functionsReached:
    - makeCombinedKey
    - keyConv
    - getIDFromCombinedKey
    - std::runtime_error
    - typename Parent::cursor_t::get
    - getKeyFromCombinedKey
    - push_back
    - MDBError
    - LMDBLS::LSgetTimestamp
    - auto::getNoStripHeader
    - getCursor
    - MDBOutVal::getNoStripHeader
    - clear
    - std::get<N>
    - auto::find
    - MDBInVal
    linkageType: ''
    returnType: void
    signature: void get_multi(const typename std::tuple_element<N, tuple_t>::type::type&
      key, LmdbIdVec& ids, bool onlyOldest=false)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<MDBROTransaction>
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:710,1
    - Dst: d_env::getROTransaction
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:710,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - parent
    argTypes:
    - TypedDBI*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 712
      start: 710
    functionDepth: 0
    functionLinenumber: 710
    functionLinenumberEnd: 712
    functionName: TypedDBI::ROTransaction::ROTransaction
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-typed.hh
    functionUses: 0
    functionsReached:
    - std::make_shared<MDBROTransaction>
    - d_env::getROTransaction
    linkageType: ''
    returnType: void
    signature: void ROTransaction(TypedDBI* parent)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - parent
    - txn
    argTypes:
    - TypedDBI*
    - std::shared_ptr<MDBROTransaction>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 716
      start: 714
    functionDepth: 0
    functionLinenumber: 714
    functionLinenumberEnd: 716
    functionName: TypedDBI::ROTransaction::ROTransaction
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-typed.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ROTransaction(TypedDBI* parent, std::shared_ptr<MDBROTransaction>
      txn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:719,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - ROTransaction
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 722
      start: 718
    functionDepth: 0
    functionLinenumber: 718
    functionLinenumberEnd: 722
    functionName: TypedDBI::ROTransaction::ROTransaction
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-typed.hh
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void ROTransaction(ROTransaction&& rhs) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 727
      start: 724
    functionDepth: 0
    functionLinenumber: 724
    functionLinenumberEnd: 727
    functionName: TypedDBI::ROTransaction::getTransactionHandle
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-typed.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::shared_ptr<MDBROTransaction>
    signature: std::shared_ptr<MDBROTransaction> getTransactionHandle()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::get<N>
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:741,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' value'
    - itemId
    argTypes:
    - T
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 742
      start: 739
    functionDepth: 0
    functionLinenumber: 739
    functionLinenumberEnd: 742
    functionName: TypedDBI::RWTransaction::insert
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-typed.hh
    functionUses: 0
    functionsReached:
    - std::get<N>
    linkageType: ''
    returnType: auto
    signature: auto insert(const T& value, uint32_t itemId)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::make_shared<MDBRWTransaction>
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:746,1
    - Dst: d_env::getRWTransaction
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:746,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - parent
    argTypes:
    - TypedDBI*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 748
      start: 745
    functionDepth: 0
    functionLinenumber: 745
    functionLinenumberEnd: 748
    functionName: TypedDBI::RWTransaction::RWTransaction
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-typed.hh
    functionUses: 0
    functionsReached:
    - d_env::getRWTransaction
    - std::make_shared<MDBRWTransaction>
    linkageType: ''
    returnType: void
    signature: void RWTransaction(TypedDBI* parent)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - parent
    - txn
    argTypes:
    - TypedDBI*
    - std::shared_ptr<MDBRWTransaction>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 752
      start: 750
    functionDepth: 0
    functionLinenumber: 750
    functionLinenumberEnd: 752
    functionName: TypedDBI::RWTransaction::RWTransaction
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-typed.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void RWTransaction(TypedDBI* parent, std::shared_ptr<MDBRWTransaction>
      txn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::move
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:757,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - RWTransaction
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 760
      start: 754
    functionDepth: 0
    functionLinenumber: 754
    functionLinenumberEnd: 760
    functionName: TypedDBI::RWTransaction::RWTransaction
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-typed.hh
    functionUses: 0
    functionsReached:
    - std::move
    linkageType: ''
    returnType: void
    signature: void RWTransaction(RWTransaction&& rhs) noexcept
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: MDBGetRandomID
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:768,1
    - Dst: MDBGetMaxID
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:771,1
    - Dst: MDBRWTransactionImpl::stringWithEmptyHeader
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:777,1
    - Dst: serializeToBuffer
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:778,1
    - Dst: put_header_in_place
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:779,1
    - Dst: serializeToBuffer
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:782,1
    - Dst: TypedDBI::RWTransaction::put
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:783,1
    - Dst: TypedDBI::RWTransaction::insert
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:786,1
    - Dst: TypedDBI::RWTransaction::insert
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:787,1
    - Dst: TypedDBI::RWTransaction::insert
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:788,1
    - Dst: TypedDBI::RWTransaction::insert
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:789,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 2
    argNames:
    - ' value'
    - itemId
    argTypes:
    - T
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 792
      start: 763
    functionDepth: 1
    functionLinenumber: 763
    functionLinenumberEnd: 792
    functionName: TypedDBI::RWTransaction::put
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-typed.hh
    functionUses: 1
    functionsReached:
    - MDBGetMaxID
    - MDBGetRandomID
    - put_header_in_place
    - serializeToBuffer
    - TypedDBI::RWTransaction::put
    - TypedDBI::RWTransaction::insert
    - MDBRWTransactionImpl::stringWithEmptyHeader
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t put(const T& value, uint32_t itemId, bool random_ids=false,
      uint32_t seed=0)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: TypedDBI::RWTransaction::get
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:798,1
    - Dst: std::runtime_error
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:799,1
    - Dst: std::to_string
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:799,1
    - Dst: func
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:801,1
    - Dst: TypedDBI::RWTransaction::del
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:803,1
    - Dst: TypedDBI::RWTransaction::put
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:804,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - itemId
    - func
    argTypes:
    - uint32_t
    - std::function<void(T&)>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 805
      start: 795
    functionDepth: 2
    functionLinenumber: 795
    functionLinenumberEnd: 805
    functionName: TypedDBI::RWTransaction::modify
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-typed.hh
    functionUses: 0
    functionsReached:
    - TypedDBI::RWTransaction::del
    - std::to_string
    - std::runtime_error
    - func
    - TypedDBI::RWTransaction::put
    - TypedDBI::RWTransaction::get
    linkageType: ''
    returnType: void
    signature: void modify(uint32_t itemId, std::function<void(T&)> func)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: TypedDBI::RWTransaction::get
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:811,1
    - Dst: TypedDBI::RWTransaction::del
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:815,1
    - Dst: TypedDBI::RWTransaction::clearIndex
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:816,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - itemId
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 817
      start: 808
    functionDepth: 1
    functionLinenumber: 808
    functionLinenumberEnd: 817
    functionName: TypedDBI::RWTransaction::del
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-typed.hh
    functionUses: 2
    functionsReached:
    - TypedDBI::RWTransaction::clearIndex
    - TypedDBI::RWTransaction::del
    - TypedDBI::RWTransaction::get
    linkageType: ''
    returnType: void
    signature: void del(uint32_t itemId)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getRWCursor
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:822,1
    - Dst: auto::get
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:826,1
    - Dst: deserializeFromBuffer
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:829,1
    - Dst: MDBOutVal::get
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:829,1
    - Dst: TypedDBI::RWTransaction::clearIndex
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:830,1
    - Dst: MDBOutVal::get
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:830,1
    - Dst: auto::del
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:831,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 833
      start: 820
    functionDepth: 2
    functionLinenumber: 820
    functionLinenumberEnd: 833
    functionName: TypedDBI::RWTransaction::clear
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-typed.hh
    functionUses: 0
    functionsReached:
    - MDBOutVal::get
    - auto::get
    - auto::del
    - deserializeFromBuffer
    - getRWCursor
    - TypedDBI::RWTransaction::clearIndex
    linkageType: ''
    returnType: void
    signature: void clear()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TypedDBI::RWTransaction::commit
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:838,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 839
      start: 836
    functionDepth: 1
    functionLinenumber: 836
    functionLinenumberEnd: 839
    functionName: TypedDBI::RWTransaction::commit
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-typed.hh
    functionUses: 1
    functionsReached:
    - TypedDBI::RWTransaction::commit
    linkageType: ''
    returnType: void
    signature: void commit()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TypedDBI::RWTransaction::abort
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:844,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 845
      start: 842
    functionDepth: 1
    functionLinenumber: 842
    functionLinenumberEnd: 845
    functionName: TypedDBI::RWTransaction::abort
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-typed.hh
    functionUses: 1
    functionsReached:
    - TypedDBI::RWTransaction::abort
    linkageType: ''
    returnType: void
    signature: void abort()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 852
      start: 849
    functionDepth: 0
    functionLinenumber: 849
    functionLinenumberEnd: 852
    functionName: TypedDBI::RWTransaction::getTransactionHandle
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-typed.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::shared_ptr<MDBRWTransaction>
    signature: std::shared_ptr<MDBRWTransaction> getTransactionHandle()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::get<N>
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:858,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' value'
    - itemId
    argTypes:
    - T
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 859
      start: 856
    functionDepth: 0
    functionLinenumber: 856
    functionLinenumberEnd: 859
    functionName: TypedDBI::RWTransaction::clear
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-typed.hh
    functionUses: 0
    functionsReached:
    - std::get<N>
    linkageType: ''
    returnType: auto
    signature: auto clear(const T& value, uint32_t itemId)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: TypedDBI::RWTransaction::clear
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:864,1
    - Dst: TypedDBI::RWTransaction::clear
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:865,1
    - Dst: TypedDBI::RWTransaction::clear
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:866,1
    - Dst: TypedDBI::RWTransaction::clear
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:867,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - itemId
    - ' value'
    argTypes:
    - uint32_t
    - T
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 868
      start: 862
    functionDepth: 0
    functionLinenumber: 862
    functionLinenumberEnd: 868
    functionName: TypedDBI::RWTransaction::clearIndex
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-typed.hh
    functionUses: 2
    functionsReached:
    - TypedDBI::RWTransaction::clear
    linkageType: ''
    returnType: void
    signature: void clearIndex(uint32_t itemId, const T& value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RWTransaction
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:878,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 879
      start: 876
    functionDepth: 0
    functionLinenumber: 876
    functionLinenumberEnd: 879
    functionName: TypedDBI::getRWTransaction
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-typed.hh
    functionUses: 0
    functionsReached:
    - RWTransaction
    linkageType: ''
    returnType: RWTransaction
    signature: RWTransaction getRWTransaction()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ROTransaction
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:884,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 885
      start: 882
    functionDepth: 0
    functionLinenumber: 882
    functionLinenumberEnd: 885
    functionName: TypedDBI::getROTransaction
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-typed.hh
    functionUses: 0
    functionsReached:
    - ROTransaction
    linkageType: ''
    returnType: ROTransaction
    signature: ROTransaction getROTransaction()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RWTransaction
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:890,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - txn
    argTypes:
    - std::shared_ptr<MDBRWTransaction>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 891
      start: 888
    functionDepth: 0
    functionLinenumber: 888
    functionLinenumberEnd: 891
    functionName: TypedDBI::getRWTransaction
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-typed.hh
    functionUses: 0
    functionsReached:
    - RWTransaction
    linkageType: ''
    returnType: RWTransaction
    signature: RWTransaction getRWTransaction(std::shared_ptr<MDBRWTransaction> txn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ROTransaction
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.hh:896,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - txn
    argTypes:
    - std::shared_ptr<MDBROTransaction>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 897
      start: 894
    functionDepth: 0
    functionLinenumber: 894
    functionLinenumberEnd: 897
    functionName: TypedDBI::getROTransaction
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-typed.hh
    functionUses: 0
    functionsReached:
    - ROTransaction
    linkageType: ''
    returnType: ROTransaction
    signature: ROTransaction getROTransaction(std::shared_ptr<MDBROTransaction> txn)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 902
      start: 899
    functionDepth: 0
    functionLinenumber: 899
    functionLinenumberEnd: 902
    functionName: TypedDBI::getEnv
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-typed.hh
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::shared_ptr<MDBEnv>
    signature: std::shared_ptr<MDBEnv> getEnv()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: getRWCursor
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.cc:6,1
    - Dst: auto::get
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.cc:10,1
    - Dst: MDBOutVal::getNoStripHeader
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.cc:11,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - ' txn'
    - ' dbi'
    argTypes:
    - MDBRWTransaction
    - MDBDbi
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14
      start: 4
    functionDepth: 0
    functionLinenumber: 4
    functionLinenumberEnd: 14
    functionName: MDBGetMaxID
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-typed.cc
    functionUses: 1
    functionsReached:
    - getRWCursor
    - MDBOutVal::getNoStripHeader
    - auto::get
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t MDBGetMaxID(MDBRWTransaction& txn, MDBDbi& dbi)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: getRWCursor
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.cc:18,1
    - Dst: dns_random
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.cc:28,1
    - Dst: pdns::max
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.cc:28,1
    - Dst: auto::find
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.cc:30,1
    - Dst: MDBInVal
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.cc:30,1
    - Dst: std::runtime_error
      Src: /src/pdns/ext/lmdb-safe/lmdb-typed.cc:34,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 10
    argCount: 3
    argNames:
    - ' txn'
    - ' dbi'
    - seed
    argTypes:
    - MDBRWTransaction
    - MDBDbi
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 35
      start: 16
    functionDepth: 0
    functionLinenumber: 16
    functionLinenumberEnd: 35
    functionName: MDBGetRandomID
    functionSourceFile: /src/pdns/ext/lmdb-safe/lmdb-typed.cc
    functionUses: 1
    functionsReached:
    - pdns::max
    - dns_random
    - std::runtime_error
    - getRWCursor
    - auto::find
    - MDBInVal
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t MDBGetRandomID(MDBRWTransaction& txn, MDBDbi& dbi, uint32_t
      seed)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::vector<char>*::size
      Src: /src/pdns/ext/protozero/include/protozero/buffer_vector.hpp:36,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - buffer
    argTypes:
    - std::vector<char>*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 35
    functionDepth: 0
    functionLinenumber: 35
    functionLinenumberEnd: 37
    functionName: protozero::size
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/buffer_vector.hpp
    functionUses: 0
    functionsReached:
    - std::vector<char>*::size
    linkageType: ''
    returnType: std::size_t
    signature: std::size_t size(const std::vector<char>* buffer) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::vector<char>*::insert
      Src: /src/pdns/ext/protozero/include/protozero/buffer_vector.hpp:40,1
    - Dst: std::vector<char>*::end
      Src: /src/pdns/ext/protozero/include/protozero/buffer_vector.hpp:40,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - buffer
    - data
    - count
    argTypes:
    - std::vector<char>*
    - char*
    - std::size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 39
    functionDepth: 2
    functionLinenumber: 39
    functionLinenumberEnd: 41
    functionName: protozero::append
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/buffer_vector.hpp
    functionUses: 0
    functionsReached:
    - std::vector<char>*::insert
    - std::vector<char>*::end
    linkageType: ''
    returnType: void
    signature: void append(std::vector<char>* buffer, const char* data, std::size_t
      count)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::vector<char>*::insert
      Src: /src/pdns/ext/protozero/include/protozero/buffer_vector.hpp:44,1
    - Dst: std::vector<char>*::end
      Src: /src/pdns/ext/protozero/include/protozero/buffer_vector.hpp:44,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - buffer
    - count
    argTypes:
    - std::vector<char>*
    - std::size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 43
    functionDepth: 2
    functionLinenumber: 43
    functionLinenumberEnd: 45
    functionName: protozero::append_zeros
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/buffer_vector.hpp
    functionUses: 0
    functionsReached:
    - std::vector<char>*::insert
    - std::vector<char>*::end
    linkageType: ''
    returnType: void
    signature: void append_zeros(std::vector<char>* buffer, std::size_t count)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero_assert
      Src: /src/pdns/ext/protozero/include/protozero/buffer_vector.hpp:48,1
    - Dst: std::vector<char>*::size
      Src: /src/pdns/ext/protozero/include/protozero/buffer_vector.hpp:48,1
    - Dst: std::vector<char>*::resize
      Src: /src/pdns/ext/protozero/include/protozero/buffer_vector.hpp:49,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - buffer
    - size
    argTypes:
    - std::vector<char>*
    - std::size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 47
    functionDepth: 2
    functionLinenumber: 47
    functionLinenumberEnd: 50
    functionName: protozero::resize
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/buffer_vector.hpp
    functionUses: 0
    functionsReached:
    - std::vector<char>*::resize
    - std::vector<char>*::size
    - protozero_assert
    linkageType: ''
    returnType: void
    signature: void resize(std::vector<char>* buffer, std::size_t size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::vector<char>*::reserve
      Src: /src/pdns/ext/protozero/include/protozero/buffer_vector.hpp:53,1
    - Dst: std::vector<char>*::size
      Src: /src/pdns/ext/protozero/include/protozero/buffer_vector.hpp:53,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - buffer
    - size
    argTypes:
    - std::vector<char>*
    - std::size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 52
    functionDepth: 0
    functionLinenumber: 52
    functionLinenumberEnd: 54
    functionName: protozero::reserve_additional
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/buffer_vector.hpp
    functionUses: 0
    functionsReached:
    - std::vector<char>*::size
    - std::vector<char>*::reserve
    linkageType: ''
    returnType: void
    signature: void reserve_additional(std::vector<char>* buffer, std::size_t size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero_assert
      Src: /src/pdns/ext/protozero/include/protozero/buffer_vector.hpp:57,1
    - Dst: std::vector<char>*::size
      Src: /src/pdns/ext/protozero/include/protozero/buffer_vector.hpp:57,1
    - Dst: protozero_assert
      Src: /src/pdns/ext/protozero/include/protozero/buffer_vector.hpp:58,1
    - Dst: std::vector<char>*::size
      Src: /src/pdns/ext/protozero/include/protozero/buffer_vector.hpp:58,1
    - Dst: protozero_assert
      Src: /src/pdns/ext/protozero/include/protozero/buffer_vector.hpp:59,1
    - Dst: std::vector<char>*::erase
      Src: /src/pdns/ext/protozero/include/protozero/buffer_vector.hpp:60,1
    - Dst: std::next
      Src: /src/pdns/ext/protozero/include/protozero/buffer_vector.hpp:60,1
    - Dst: std::vector<char>*::begin
      Src: /src/pdns/ext/protozero/include/protozero/buffer_vector.hpp:60,1
    - Dst: static_cast<std::string::iterator::difference_type>
      Src: /src/pdns/ext/protozero/include/protozero/buffer_vector.hpp:60,1
    - Dst: std::next
      Src: /src/pdns/ext/protozero/include/protozero/buffer_vector.hpp:61,1
    - Dst: std::vector<char>*::begin
      Src: /src/pdns/ext/protozero/include/protozero/buffer_vector.hpp:61,1
    - Dst: static_cast<std::string::iterator::difference_type>
      Src: /src/pdns/ext/protozero/include/protozero/buffer_vector.hpp:61,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - buffer
    - from
    - to
    argTypes:
    - std::vector<char>*
    - std::size_t
    - std::size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 56
    functionDepth: 1
    functionLinenumber: 56
    functionLinenumberEnd: 62
    functionName: protozero::erase_range
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/buffer_vector.hpp
    functionUses: 0
    functionsReached:
    - std::vector<char>*::begin
    - std::vector<char>*::size
    - protozero_assert
    - std::next
    - static_cast<std::string::iterator::difference_type>
    - std::vector<char>*::erase
    linkageType: ''
    returnType: void
    signature: void erase_range(std::vector<char>* buffer, std::size_t from, std::size_t
      to)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero_assert
      Src: /src/pdns/ext/protozero/include/protozero/buffer_vector.hpp:65,1
    - Dst: std::vector<char>*::size
      Src: /src/pdns/ext/protozero/include/protozero/buffer_vector.hpp:65,1
    - Dst: std::vector<char>*::begin
      Src: /src/pdns/ext/protozero/include/protozero/buffer_vector.hpp:66,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - buffer
    - pos
    argTypes:
    - std::vector<char>*
    - std::size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 64
    functionDepth: 1
    functionLinenumber: 64
    functionLinenumberEnd: 67
    functionName: protozero::at_pos
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/buffer_vector.hpp
    functionUses: 0
    functionsReached:
    - std::vector<char>*::begin
    - std::vector<char>*::size
    - protozero_assert
    linkageType: ''
    returnType: char
    signature: char * at_pos(std::vector<char>* buffer, std::size_t pos)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::vector<char>*::push_back
      Src: /src/pdns/ext/protozero/include/protozero/buffer_vector.hpp:70,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - buffer
    - ch
    argTypes:
    - std::vector<char>*
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 69
    functionDepth: 0
    functionLinenumber: 69
    functionLinenumberEnd: 71
    functionName: protozero::push_back
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/buffer_vector.hpp
    functionUses: 0
    functionsReached:
    - std::vector<char>*::push_back
    linkageType: ''
    returnType: void
    signature: void push_back(std::vector<char>* buffer, char ch)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::vector<char>*::size
      Src: /src/pdns/ext/protozero/include/protozero/buffer_vector.hpp:36,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - buffer
    argTypes:
    - std::vector<char>*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 35
    functionDepth: 0
    functionLinenumber: 35
    functionLinenumberEnd: 37
    functionName: protozero::size
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/buffer_vector.hpp
    functionUses: 0
    functionsReached:
    - std::vector<char>*::size
    linkageType: ''
    returnType: std::size_t
    signature: std::size_t size(const std::vector<char>* buffer) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::vector<char>*::insert
      Src: /src/pdns/ext/protozero/include/protozero/buffer_vector.hpp:40,1
    - Dst: std::vector<char>*::end
      Src: /src/pdns/ext/protozero/include/protozero/buffer_vector.hpp:40,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - buffer
    - data
    - count
    argTypes:
    - std::vector<char>*
    - char*
    - std::size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 39
    functionDepth: 2
    functionLinenumber: 39
    functionLinenumberEnd: 41
    functionName: protozero::append
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/buffer_vector.hpp
    functionUses: 0
    functionsReached:
    - std::vector<char>*::insert
    - std::vector<char>*::end
    linkageType: ''
    returnType: void
    signature: void append(std::vector<char>* buffer, const char* data, std::size_t
      count)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::vector<char>*::insert
      Src: /src/pdns/ext/protozero/include/protozero/buffer_vector.hpp:44,1
    - Dst: std::vector<char>*::end
      Src: /src/pdns/ext/protozero/include/protozero/buffer_vector.hpp:44,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - buffer
    - count
    argTypes:
    - std::vector<char>*
    - std::size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 43
    functionDepth: 2
    functionLinenumber: 43
    functionLinenumberEnd: 45
    functionName: protozero::append_zeros
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/buffer_vector.hpp
    functionUses: 0
    functionsReached:
    - std::vector<char>*::insert
    - std::vector<char>*::end
    linkageType: ''
    returnType: void
    signature: void append_zeros(std::vector<char>* buffer, std::size_t count)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero_assert
      Src: /src/pdns/ext/protozero/include/protozero/buffer_vector.hpp:48,1
    - Dst: std::vector<char>*::size
      Src: /src/pdns/ext/protozero/include/protozero/buffer_vector.hpp:48,1
    - Dst: std::vector<char>*::resize
      Src: /src/pdns/ext/protozero/include/protozero/buffer_vector.hpp:49,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - buffer
    - size
    argTypes:
    - std::vector<char>*
    - std::size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 47
    functionDepth: 2
    functionLinenumber: 47
    functionLinenumberEnd: 50
    functionName: protozero::resize
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/buffer_vector.hpp
    functionUses: 0
    functionsReached:
    - std::vector<char>*::resize
    - std::vector<char>*::size
    - protozero_assert
    linkageType: ''
    returnType: void
    signature: void resize(std::vector<char>* buffer, std::size_t size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::vector<char>*::reserve
      Src: /src/pdns/ext/protozero/include/protozero/buffer_vector.hpp:53,1
    - Dst: std::vector<char>*::size
      Src: /src/pdns/ext/protozero/include/protozero/buffer_vector.hpp:53,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - buffer
    - size
    argTypes:
    - std::vector<char>*
    - std::size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 52
    functionDepth: 0
    functionLinenumber: 52
    functionLinenumberEnd: 54
    functionName: protozero::reserve_additional
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/buffer_vector.hpp
    functionUses: 0
    functionsReached:
    - std::vector<char>*::size
    - std::vector<char>*::reserve
    linkageType: ''
    returnType: void
    signature: void reserve_additional(std::vector<char>* buffer, std::size_t size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero_assert
      Src: /src/pdns/ext/protozero/include/protozero/buffer_vector.hpp:57,1
    - Dst: std::vector<char>*::size
      Src: /src/pdns/ext/protozero/include/protozero/buffer_vector.hpp:57,1
    - Dst: protozero_assert
      Src: /src/pdns/ext/protozero/include/protozero/buffer_vector.hpp:58,1
    - Dst: std::vector<char>*::size
      Src: /src/pdns/ext/protozero/include/protozero/buffer_vector.hpp:58,1
    - Dst: protozero_assert
      Src: /src/pdns/ext/protozero/include/protozero/buffer_vector.hpp:59,1
    - Dst: std::vector<char>*::erase
      Src: /src/pdns/ext/protozero/include/protozero/buffer_vector.hpp:60,1
    - Dst: std::next
      Src: /src/pdns/ext/protozero/include/protozero/buffer_vector.hpp:60,1
    - Dst: std::vector<char>*::begin
      Src: /src/pdns/ext/protozero/include/protozero/buffer_vector.hpp:60,1
    - Dst: static_cast<std::string::iterator::difference_type>
      Src: /src/pdns/ext/protozero/include/protozero/buffer_vector.hpp:60,1
    - Dst: std::next
      Src: /src/pdns/ext/protozero/include/protozero/buffer_vector.hpp:61,1
    - Dst: std::vector<char>*::begin
      Src: /src/pdns/ext/protozero/include/protozero/buffer_vector.hpp:61,1
    - Dst: static_cast<std::string::iterator::difference_type>
      Src: /src/pdns/ext/protozero/include/protozero/buffer_vector.hpp:61,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - buffer
    - from
    - to
    argTypes:
    - std::vector<char>*
    - std::size_t
    - std::size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 56
    functionDepth: 1
    functionLinenumber: 56
    functionLinenumberEnd: 62
    functionName: protozero::erase_range
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/buffer_vector.hpp
    functionUses: 0
    functionsReached:
    - std::vector<char>*::begin
    - std::vector<char>*::size
    - protozero_assert
    - std::next
    - static_cast<std::string::iterator::difference_type>
    - std::vector<char>*::erase
    linkageType: ''
    returnType: void
    signature: void erase_range(std::vector<char>* buffer, std::size_t from, std::size_t
      to)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero_assert
      Src: /src/pdns/ext/protozero/include/protozero/buffer_vector.hpp:65,1
    - Dst: std::vector<char>*::size
      Src: /src/pdns/ext/protozero/include/protozero/buffer_vector.hpp:65,1
    - Dst: std::vector<char>*::begin
      Src: /src/pdns/ext/protozero/include/protozero/buffer_vector.hpp:66,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - buffer
    - pos
    argTypes:
    - std::vector<char>*
    - std::size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 64
    functionDepth: 1
    functionLinenumber: 64
    functionLinenumberEnd: 67
    functionName: protozero::at_pos
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/buffer_vector.hpp
    functionUses: 0
    functionsReached:
    - std::vector<char>*::begin
    - std::vector<char>*::size
    - protozero_assert
    linkageType: ''
    returnType: char
    signature: char * at_pos(std::vector<char>* buffer, std::size_t pos)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::vector<char>*::push_back
      Src: /src/pdns/ext/protozero/include/protozero/buffer_vector.hpp:70,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - buffer
    - ch
    argTypes:
    - std::vector<char>*
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 69
    functionDepth: 0
    functionLinenumber: 69
    functionLinenumberEnd: 71
    functionName: protozero::push_back
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/buffer_vector.hpp
    functionUses: 0
    functionsReached:
    - std::vector<char>*::push_back
    linkageType: ''
    returnType: void
    signature: void push_back(std::vector<char>* buffer, char ch)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 58
    functionDepth: 0
    functionLinenumber: 58
    functionLinenumberEnd: 60
    functionName: protozero::iterator_range::iterator_range
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/iterators.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void iterator_range()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::forward<iterator>
      Src: /src/pdns/ext/protozero/include/protozero/iterators.hpp:69,1
    - Dst: std::forward<iterator>
      Src: /src/pdns/ext/protozero/include/protozero/iterators.hpp:70,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 1
    argCount: 2
    argNames:
    - ' first_iterator'
    - ' last_iterator'
    argTypes:
    - iterator
    - iterator
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 68
    functionDepth: 0
    functionLinenumber: 68
    functionLinenumberEnd: 71
    functionName: protozero::iterator_range::iterator_range
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/iterators.hpp
    functionUses: 0
    functionsReached:
    - std::forward<iterator>
    linkageType: ''
    returnType: void
    signature: void iterator_range(iterator&& first_iterator, iterator&& last_iterator)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 74
    functionDepth: 0
    functionLinenumber: 74
    functionLinenumberEnd: 76
    functionName: protozero::iterator_range::begin
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/iterators.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: iterator
    signature: iterator begin() const noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 79
    functionDepth: 0
    functionLinenumber: 79
    functionLinenumberEnd: 81
    functionName: protozero::iterator_range::end
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/iterators.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: iterator
    signature: iterator end() const noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 84
    functionDepth: 0
    functionLinenumber: 84
    functionLinenumberEnd: 86
    functionName: protozero::iterator_range::cbegin
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/iterators.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: iterator
    signature: iterator cbegin() const noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 89
    functionDepth: 0
    functionLinenumber: 89
    functionLinenumberEnd: 91
    functionName: protozero::iterator_range::cend
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/iterators.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: iterator
    signature: iterator cend() const noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::iterator_range::begin
      Src: /src/pdns/ext/protozero/include/protozero/iterators.hpp:99,1
    - Dst: protozero::iterator_range::end
      Src: /src/pdns/ext/protozero/include/protozero/iterators.hpp:99,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 98
    functionDepth: 1
    functionLinenumber: 98
    functionLinenumberEnd: 100
    functionName: protozero::iterator_range::empty
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/iterators.hpp
    functionUses: 0
    functionsReached:
    - protozero::iterator_range::end
    - protozero::iterator_range::begin
    linkageType: ''
    returnType: bool
    signature: bool empty() const noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<size_t>
      Src: /src/pdns/ext/protozero/include/protozero/iterators.hpp:108,1
    - Dst: std::distance
      Src: /src/pdns/ext/protozero/include/protozero/iterators.hpp:108,1
    - Dst: protozero::iterator_range::begin
      Src: /src/pdns/ext/protozero/include/protozero/iterators.hpp:108,1
    - Dst: protozero::iterator_range::end
      Src: /src/pdns/ext/protozero/include/protozero/iterators.hpp:108,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 107
    functionDepth: 1
    functionLinenumber: 107
    functionLinenumberEnd: 109
    functionName: protozero::iterator_range::size
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/iterators.hpp
    functionUses: 0
    functionsReached:
    - static_cast<size_t>
    - std::distance
    - protozero::iterator_range::end
    - protozero::iterator_range::begin
    linkageType: ''
    returnType: std::size_t
    signature: std::size_t size() const noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero_assert
      Src: /src/pdns/ext/protozero/include/protozero/iterators.hpp:117,1
    - Dst: protozero::iterator_range::empty
      Src: /src/pdns/ext/protozero/include/protozero/iterators.hpp:117,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 119
      start: 116
    functionDepth: 2
    functionLinenumber: 116
    functionLinenumberEnd: 119
    functionName: protozero::iterator_range::front
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/iterators.hpp
    functionUses: 0
    functionsReached:
    - protozero_assert
    - protozero::iterator_range::empty
    linkageType: ''
    returnType: value_type
    signature: value_type front() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero_assert
      Src: /src/pdns/ext/protozero/include/protozero/iterators.hpp:127,1
    - Dst: protozero::iterator_range::empty
      Src: /src/pdns/ext/protozero/include/protozero/iterators.hpp:127,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 129
      start: 126
    functionDepth: 2
    functionLinenumber: 126
    functionLinenumberEnd: 129
    functionName: protozero::iterator_range::drop_front
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/iterators.hpp
    functionUses: 0
    functionsReached:
    - protozero_assert
    - protozero::iterator_range::empty
    linkageType: ''
    returnType: void
    signature: void drop_front()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::iterator_range::swap
      Src: /src/pdns/ext/protozero/include/protozero/iterators.hpp:138,1
    - Dst: protozero::iterator_range::swap
      Src: /src/pdns/ext/protozero/include/protozero/iterators.hpp:139,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ' other'
    argTypes:
    - iterator_range
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 136
    functionDepth: 1
    functionLinenumber: 136
    functionLinenumberEnd: 140
    functionName: protozero::iterator_range::swap
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/iterators.hpp
    functionUses: 1
    functionsReached:
    - protozero::iterator_range::swap
    linkageType: ''
    returnType: void
    signature: void swap(iterator_range& other) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::swap
      Src: /src/pdns/ext/protozero/include/protozero/iterators.hpp:152,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' lhs'
    - ' rhs'
    argTypes:
    - iterator_range<T>
    - iterator_range<T>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 153
      start: 151
    functionDepth: 0
    functionLinenumber: 151
    functionLinenumberEnd: 153
    functionName: protozero::swap
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/iterators.hpp
    functionUses: 1
    functionsReached:
    - protozero::swap
    linkageType: ''
    returnType: void
    signature: void swap(iterator_range<T>& lhs, iterator_range<T>& rhs) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 175
      start: 175
    functionDepth: 0
    functionLinenumber: 175
    functionLinenumberEnd: 175
    functionName: protozero::const_fixed_iterator::const_fixed_iterator
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/iterators.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void const_fixed_iterator() noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - data
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 179
      start: 177
    functionDepth: 0
    functionLinenumber: 177
    functionLinenumberEnd: 179
    functionName: protozero::const_fixed_iterator::const_fixed_iterator
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/iterators.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void const_fixed_iterator(const char* data) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 181
      start: 181
    functionDepth: 0
    functionLinenumber: 181
    functionLinenumberEnd: 181
    functionName: protozero::const_fixed_iterator::const_fixed_iterator
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/iterators.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void const_fixed_iterator(const const_fixed_iterator&) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 182
      start: 182
    functionDepth: 0
    functionLinenumber: 182
    functionLinenumberEnd: 182
    functionName: protozero::const_fixed_iterator::const_fixed_iterator
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/iterators.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void const_fixed_iterator(const_fixed_iterator&&) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 184
      start: 184
    functionDepth: 0
    functionLinenumber: 184
    functionLinenumberEnd: 184
    functionName: '& operator=(const const_fixed_iterator&) noexcept'
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/iterators.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: const_fixed_iterator
    signature: const_fixed_iterator & operator=(const const_fixed_iterator&) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 185
      start: 185
    functionDepth: 0
    functionLinenumber: 185
    functionLinenumberEnd: 185
    functionName: '& operator=(const_fixed_iterator&&) noexcept'
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/iterators.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: const_fixed_iterator
    signature: const_fixed_iterator & operator=(const_fixed_iterator&&) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 187
      start: 187
    functionDepth: 0
    functionLinenumber: 187
    functionLinenumberEnd: 187
    functionName: ~const_fixed_iterator() noexcept
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/iterators.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~const_fixed_iterator() noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::memcpy
      Src: /src/pdns/ext/protozero/include/protozero/iterators.hpp:191,1
    - Dst: protozero::byteswap_inplace
      Src: /src/pdns/ext/protozero/include/protozero/iterators.hpp:193,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 196
      start: 189
    functionDepth: 1
    functionLinenumber: 189
    functionLinenumberEnd: 196
    functionName: operator*() const noexcept
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/iterators.hpp
    functionUses: 0
    functionsReached:
    - std::memcpy
    - protozero::byteswap_inplace
    linkageType: ''
    returnType: value_type
    signature: value_type operator*() const noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 201
      start: 198
    functionDepth: 0
    functionLinenumber: 198
    functionLinenumberEnd: 201
    functionName: '& operator++() noexcept'
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/iterators.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: const_fixed_iterator
    signature: const_fixed_iterator & operator++() noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 207
      start: 203
    functionDepth: 0
    functionLinenumber: 203
    functionLinenumberEnd: 207
    functionName: operator++(int) noexcept
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/iterators.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: const_fixed_iterator
    signature: const_fixed_iterator operator++(int) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 212
      start: 209
    functionDepth: 0
    functionLinenumber: 209
    functionLinenumberEnd: 212
    functionName: '& operator--() noexcept'
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/iterators.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: const_fixed_iterator
    signature: const_fixed_iterator & operator--() noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 218
      start: 214
    functionDepth: 0
    functionLinenumber: 214
    functionLinenumberEnd: 218
    functionName: operator--(int) noexcept
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/iterators.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: const_fixed_iterator
    signature: const_fixed_iterator operator--(int) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - lhs
    - rhs
    argTypes:
    - const_fixed_iterator
    - const_fixed_iterator
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 222
      start: 220
    functionDepth: 0
    functionLinenumber: 220
    functionLinenumberEnd: 222
    functionName: operator==(const_fixed_iterator lhs, const_fixed_iterator rhs) noexcept
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/iterators.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool operator==(const_fixed_iterator lhs, const_fixed_iterator rhs)
      noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - lhs
    - rhs
    argTypes:
    - const_fixed_iterator
    - const_fixed_iterator
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 226
      start: 224
    functionDepth: 0
    functionLinenumber: 224
    functionLinenumberEnd: 226
    functionName: operator!=(const_fixed_iterator lhs, const_fixed_iterator rhs) noexcept
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/iterators.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool operator!=(const_fixed_iterator lhs, const_fixed_iterator rhs)
      noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - lhs
    - rhs
    argTypes:
    - const_fixed_iterator
    - const_fixed_iterator
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 230
      start: 228
    functionDepth: 0
    functionLinenumber: 228
    functionLinenumberEnd: 230
    functionName: operator<(const_fixed_iterator lhs, const_fixed_iterator rhs) noexcept
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/iterators.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool operator<(const_fixed_iterator lhs, const_fixed_iterator rhs)
      noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - lhs
    - rhs
    argTypes:
    - const_fixed_iterator
    - const_fixed_iterator
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 234
      start: 232
    functionDepth: 0
    functionLinenumber: 232
    functionLinenumberEnd: 234
    functionName: operator>(const_fixed_iterator lhs, const_fixed_iterator rhs) noexcept
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/iterators.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool operator>(const_fixed_iterator lhs, const_fixed_iterator rhs)
      noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - lhs
    - rhs
    argTypes:
    - const_fixed_iterator
    - const_fixed_iterator
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 238
      start: 236
    functionDepth: 0
    functionLinenumber: 236
    functionLinenumberEnd: 238
    functionName: operator<=(const_fixed_iterator lhs, const_fixed_iterator rhs) noexcept
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/iterators.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool operator<=(const_fixed_iterator lhs, const_fixed_iterator rhs)
      noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - lhs
    - rhs
    argTypes:
    - const_fixed_iterator
    - const_fixed_iterator
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 242
      start: 240
    functionDepth: 0
    functionLinenumber: 240
    functionLinenumberEnd: 242
    functionName: operator>=(const_fixed_iterator lhs, const_fixed_iterator rhs) noexcept
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/iterators.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool operator>=(const_fixed_iterator lhs, const_fixed_iterator rhs)
      noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - val
    argTypes:
    - difference_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 247
      start: 244
    functionDepth: 0
    functionLinenumber: 244
    functionLinenumberEnd: 247
    functionName: '& operator+=(difference_type val) noexcept'
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/iterators.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: const_fixed_iterator
    signature: const_fixed_iterator & operator+=(difference_type val) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - lhs
    - rhs
    argTypes:
    - const_fixed_iterator
    - difference_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 253
      start: 249
    functionDepth: 0
    functionLinenumber: 249
    functionLinenumberEnd: 253
    functionName: operator+(const_fixed_iterator lhs, difference_type rhs) noexcept
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/iterators.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: const_fixed_iterator
    signature: const_fixed_iterator operator+(const_fixed_iterator lhs, difference_type
      rhs) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - lhs
    - rhs
    argTypes:
    - difference_type
    - const_fixed_iterator
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 259
      start: 255
    functionDepth: 0
    functionLinenumber: 255
    functionLinenumberEnd: 259
    functionName: operator+(difference_type lhs, const_fixed_iterator rhs) noexcept
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/iterators.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: const_fixed_iterator
    signature: const_fixed_iterator operator+(difference_type lhs, const_fixed_iterator
      rhs) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - val
    argTypes:
    - difference_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 264
      start: 261
    functionDepth: 0
    functionLinenumber: 261
    functionLinenumberEnd: 264
    functionName: '& operator-=(difference_type val) noexcept'
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/iterators.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: const_fixed_iterator
    signature: const_fixed_iterator & operator-=(difference_type val) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - lhs
    - rhs
    argTypes:
    - const_fixed_iterator
    - difference_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 270
      start: 266
    functionDepth: 0
    functionLinenumber: 266
    functionLinenumberEnd: 270
    functionName: operator-(const_fixed_iterator lhs, difference_type rhs) noexcept
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/iterators.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: const_fixed_iterator
    signature: const_fixed_iterator operator-(const_fixed_iterator lhs, difference_type
      rhs) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<difference_type>
      Src: /src/pdns/ext/protozero/include/protozero/iterators.hpp:273,1
    - Dst: static_cast<difference_type>
      Src: /src/pdns/ext/protozero/include/protozero/iterators.hpp:273,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - lhs
    - rhs
    argTypes:
    - const_fixed_iterator
    - const_fixed_iterator
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 274
      start: 272
    functionDepth: 0
    functionLinenumber: 272
    functionLinenumberEnd: 274
    functionName: operator-(const_fixed_iterator lhs, const_fixed_iterator rhs) noexcept
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/iterators.hpp
    functionUses: 0
    functionsReached:
    - static_cast<difference_type>
    linkageType: ''
    returnType: difference_type
    signature: difference_type operator-(const_fixed_iterator lhs, const_fixed_iterator
      rhs) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - n
    argTypes:
    - difference_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 278
      start: 276
    functionDepth: 0
    functionLinenumber: 276
    functionLinenumberEnd: 278
    functionName: operator[](difference_type n) const noexcept
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/iterators.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: value_type
    signature: value_type operator[](difference_type n) const noexcept
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::count_if
      Src: /src/pdns/ext/protozero/include/protozero/iterators.hpp:318,1
    - Dst: static_cast<unsigned char>
      Src: /src/pdns/ext/protozero/include/protozero/iterators.hpp:319,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - begin
    - end
    argTypes:
    - const_varint_iterator
    - const_varint_iterator
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 321
      start: 309
    functionDepth: 0
    functionLinenumber: 309
    functionLinenumberEnd: 321
    functionName: protozero::const_varint_iterator::distance
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/iterators.hpp
    functionUses: 0
    functionsReached:
    - std::count_if
    - static_cast<unsigned char>
    linkageType: ''
    returnType: difference_type
    signature: difference_type distance(const_varint_iterator begin, const_varint_iterator
      end) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 323
      start: 323
    functionDepth: 0
    functionLinenumber: 323
    functionLinenumberEnd: 323
    functionName: protozero::const_varint_iterator::const_varint_iterator
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/iterators.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void const_varint_iterator() noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - data
    - end
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 328
      start: 325
    functionDepth: 0
    functionLinenumber: 325
    functionLinenumberEnd: 328
    functionName: protozero::const_varint_iterator::const_varint_iterator
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/iterators.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void const_varint_iterator(const char* data, const char* end) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 330
      start: 330
    functionDepth: 0
    functionLinenumber: 330
    functionLinenumberEnd: 330
    functionName: protozero::const_varint_iterator::const_varint_iterator
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/iterators.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void const_varint_iterator(const const_varint_iterator&) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 331
      start: 331
    functionDepth: 0
    functionLinenumber: 331
    functionLinenumberEnd: 331
    functionName: protozero::const_varint_iterator::const_varint_iterator
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/iterators.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void const_varint_iterator(const_varint_iterator&&) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 333
      start: 333
    functionDepth: 0
    functionLinenumber: 333
    functionLinenumberEnd: 333
    functionName: '& operator=(const const_varint_iterator&) noexcept'
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/iterators.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: const_varint_iterator
    signature: const_varint_iterator & operator=(const const_varint_iterator&) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 334
      start: 334
    functionDepth: 0
    functionLinenumber: 334
    functionLinenumberEnd: 334
    functionName: '& operator=(const_varint_iterator&&) noexcept'
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/iterators.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: const_varint_iterator
    signature: const_varint_iterator & operator=(const_varint_iterator&&) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 336
      start: 336
    functionDepth: 0
    functionLinenumber: 336
    functionLinenumberEnd: 336
    functionName: ~const_varint_iterator() noexcept
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/iterators.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~const_varint_iterator() noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero_assert
      Src: /src/pdns/ext/protozero/include/protozero/iterators.hpp:339,1
    - Dst: static_cast<value_type>
      Src: /src/pdns/ext/protozero/include/protozero/iterators.hpp:341,1
    - Dst: protozero::decode_varint
      Src: /src/pdns/ext/protozero/include/protozero/iterators.hpp:341,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 342
      start: 338
    functionDepth: 1
    functionLinenumber: 338
    functionLinenumberEnd: 342
    functionName: operator*() const
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/iterators.hpp
    functionUses: 0
    functionsReached:
    - protozero_assert
    - static_cast<value_type>
    - protozero::decode_varint
    linkageType: ''
    returnType: value_type
    signature: value_type operator*() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero_assert
      Src: /src/pdns/ext/protozero/include/protozero/iterators.hpp:345,1
    - Dst: protozero::skip_varint
      Src: /src/pdns/ext/protozero/include/protozero/iterators.hpp:346,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 348
      start: 344
    functionDepth: 1
    functionLinenumber: 344
    functionLinenumberEnd: 348
    functionName: '& operator++()'
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/iterators.hpp
    functionUses: 0
    functionsReached:
    - protozero_assert
    - protozero::skip_varint
    linkageType: ''
    returnType: const_varint_iterator
    signature: const_varint_iterator & operator++()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero_assert
      Src: /src/pdns/ext/protozero/include/protozero/iterators.hpp:351,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 355
      start: 350
    functionDepth: 1
    functionLinenumber: 350
    functionLinenumberEnd: 355
    functionName: operator++(int)
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/iterators.hpp
    functionUses: 0
    functionsReached:
    - protozero_assert
    linkageType: ''
    returnType: const_varint_iterator
    signature: const_varint_iterator operator++(int)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - const_varint_iterator
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 359
      start: 357
    functionDepth: 0
    functionLinenumber: 357
    functionLinenumberEnd: 359
    functionName: operator==(const const_varint_iterator& rhs) const noexcept
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/iterators.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool operator==(const const_varint_iterator& rhs) const noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - const_varint_iterator
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 363
      start: 361
    functionDepth: 0
    functionLinenumber: 361
    functionLinenumberEnd: 363
    functionName: operator!=(const const_varint_iterator& rhs) const noexcept
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/iterators.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool operator!=(const const_varint_iterator& rhs) const noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 388
      start: 386
    functionDepth: 0
    functionLinenumber: 386
    functionLinenumberEnd: 388
    functionName: protozero::const_svarint_iterator::const_svarint_iterator
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/iterators.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void const_svarint_iterator() noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - data
    - end
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 392
      start: 390
    functionDepth: 0
    functionLinenumber: 390
    functionLinenumberEnd: 392
    functionName: protozero::const_svarint_iterator::const_svarint_iterator
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/iterators.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void const_svarint_iterator(const char* data, const char* end) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 394
      start: 394
    functionDepth: 0
    functionLinenumber: 394
    functionLinenumberEnd: 394
    functionName: protozero::const_svarint_iterator::const_svarint_iterator
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/iterators.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void const_svarint_iterator(const const_svarint_iterator&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 395
      start: 395
    functionDepth: 0
    functionLinenumber: 395
    functionLinenumberEnd: 395
    functionName: protozero::const_svarint_iterator::const_svarint_iterator
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/iterators.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void const_svarint_iterator(const_svarint_iterator&&) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 397
      start: 397
    functionDepth: 0
    functionLinenumber: 397
    functionLinenumberEnd: 397
    functionName: '& operator=(const const_svarint_iterator&)'
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/iterators.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: const_svarint_iterator
    signature: const_svarint_iterator & operator=(const const_svarint_iterator&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 398
      start: 398
    functionDepth: 0
    functionLinenumber: 398
    functionLinenumberEnd: 398
    functionName: '& operator=(const_svarint_iterator&&) noexcept'
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/iterators.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: const_svarint_iterator
    signature: const_svarint_iterator & operator=(const_svarint_iterator&&) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 400
      start: 400
    functionDepth: 0
    functionLinenumber: 400
    functionLinenumberEnd: 400
    functionName: ~const_svarint_iterator()
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/iterators.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~const_svarint_iterator()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero_assert
      Src: /src/pdns/ext/protozero/include/protozero/iterators.hpp:403,1
    - Dst: static_cast<value_type>
      Src: /src/pdns/ext/protozero/include/protozero/iterators.hpp:405,1
    - Dst: protozero::decode_zigzag64
      Src: /src/pdns/ext/protozero/include/protozero/iterators.hpp:405,1
    - Dst: protozero::decode_varint
      Src: /src/pdns/ext/protozero/include/protozero/iterators.hpp:405,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 406
      start: 402
    functionDepth: 1
    functionLinenumber: 402
    functionLinenumberEnd: 406
    functionName: operator*() const
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/iterators.hpp
    functionUses: 0
    functionsReached:
    - protozero_assert
    - static_cast<value_type>
    - protozero::decode_zigzag64
    - protozero::decode_varint
    linkageType: ''
    returnType: value_type
    signature: value_type operator*() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero_assert
      Src: /src/pdns/ext/protozero/include/protozero/iterators.hpp:409,1
    - Dst: protozero::skip_varint
      Src: /src/pdns/ext/protozero/include/protozero/iterators.hpp:410,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 412
      start: 408
    functionDepth: 1
    functionLinenumber: 408
    functionLinenumberEnd: 412
    functionName: '& operator++()'
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/iterators.hpp
    functionUses: 0
    functionsReached:
    - protozero_assert
    - protozero::skip_varint
    linkageType: ''
    returnType: const_svarint_iterator
    signature: const_svarint_iterator & operator++()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero_assert
      Src: /src/pdns/ext/protozero/include/protozero/iterators.hpp:415,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 419
      start: 414
    functionDepth: 1
    functionLinenumber: 414
    functionLinenumberEnd: 419
    functionName: operator++(int)
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/iterators.hpp
    functionUses: 0
    functionsReached:
    - protozero_assert
    linkageType: ''
    returnType: const_svarint_iterator
    signature: const_svarint_iterator operator++(int)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 58
    functionDepth: 0
    functionLinenumber: 58
    functionLinenumberEnd: 60
    functionName: protozero::iterator_range::iterator_range
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/iterators.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void iterator_range()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::forward<iterator>
      Src: /src/pdns/ext/protozero/include/protozero/iterators.hpp:69,1
    - Dst: std::forward<iterator>
      Src: /src/pdns/ext/protozero/include/protozero/iterators.hpp:70,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 1
    argCount: 2
    argNames:
    - ' first_iterator'
    - ' last_iterator'
    argTypes:
    - iterator
    - iterator
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 68
    functionDepth: 0
    functionLinenumber: 68
    functionLinenumberEnd: 71
    functionName: protozero::iterator_range::iterator_range
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/iterators.hpp
    functionUses: 0
    functionsReached:
    - std::forward<iterator>
    linkageType: ''
    returnType: void
    signature: void iterator_range(iterator&& first_iterator, iterator&& last_iterator)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 74
    functionDepth: 0
    functionLinenumber: 74
    functionLinenumberEnd: 76
    functionName: protozero::iterator_range::begin
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/iterators.hpp
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: iterator
    signature: iterator begin() const noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 79
    functionDepth: 0
    functionLinenumber: 79
    functionLinenumberEnd: 81
    functionName: protozero::iterator_range::end
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/iterators.hpp
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: iterator
    signature: iterator end() const noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 84
    functionDepth: 0
    functionLinenumber: 84
    functionLinenumberEnd: 86
    functionName: protozero::iterator_range::cbegin
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/iterators.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: iterator
    signature: iterator cbegin() const noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 89
    functionDepth: 0
    functionLinenumber: 89
    functionLinenumberEnd: 91
    functionName: protozero::iterator_range::cend
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/iterators.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: iterator
    signature: iterator cend() const noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::iterator_range::begin
      Src: /src/pdns/ext/protozero/include/protozero/iterators.hpp:99,1
    - Dst: protozero::iterator_range::end
      Src: /src/pdns/ext/protozero/include/protozero/iterators.hpp:99,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 98
    functionDepth: 1
    functionLinenumber: 98
    functionLinenumberEnd: 100
    functionName: protozero::iterator_range::empty
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/iterators.hpp
    functionUses: 2
    functionsReached:
    - protozero::iterator_range::end
    - protozero::iterator_range::begin
    linkageType: ''
    returnType: bool
    signature: bool empty() const noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<size_t>
      Src: /src/pdns/ext/protozero/include/protozero/iterators.hpp:108,1
    - Dst: std::distance
      Src: /src/pdns/ext/protozero/include/protozero/iterators.hpp:108,1
    - Dst: protozero::iterator_range::begin
      Src: /src/pdns/ext/protozero/include/protozero/iterators.hpp:108,1
    - Dst: protozero::iterator_range::end
      Src: /src/pdns/ext/protozero/include/protozero/iterators.hpp:108,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 107
    functionDepth: 1
    functionLinenumber: 107
    functionLinenumberEnd: 109
    functionName: protozero::iterator_range::size
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/iterators.hpp
    functionUses: 0
    functionsReached:
    - static_cast<size_t>
    - std::distance
    - protozero::iterator_range::end
    - protozero::iterator_range::begin
    linkageType: ''
    returnType: std::size_t
    signature: std::size_t size() const noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero_assert
      Src: /src/pdns/ext/protozero/include/protozero/iterators.hpp:117,1
    - Dst: protozero::iterator_range::empty
      Src: /src/pdns/ext/protozero/include/protozero/iterators.hpp:117,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 119
      start: 116
    functionDepth: 2
    functionLinenumber: 116
    functionLinenumberEnd: 119
    functionName: protozero::iterator_range::front
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/iterators.hpp
    functionUses: 0
    functionsReached:
    - protozero_assert
    - protozero::iterator_range::empty
    linkageType: ''
    returnType: value_type
    signature: value_type front() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero_assert
      Src: /src/pdns/ext/protozero/include/protozero/iterators.hpp:127,1
    - Dst: protozero::iterator_range::empty
      Src: /src/pdns/ext/protozero/include/protozero/iterators.hpp:127,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 129
      start: 126
    functionDepth: 2
    functionLinenumber: 126
    functionLinenumberEnd: 129
    functionName: protozero::iterator_range::drop_front
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/iterators.hpp
    functionUses: 0
    functionsReached:
    - protozero_assert
    - protozero::iterator_range::empty
    linkageType: ''
    returnType: void
    signature: void drop_front()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::iterator_range::swap
      Src: /src/pdns/ext/protozero/include/protozero/iterators.hpp:138,1
    - Dst: protozero::iterator_range::swap
      Src: /src/pdns/ext/protozero/include/protozero/iterators.hpp:139,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ' other'
    argTypes:
    - iterator_range
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 136
    functionDepth: 1
    functionLinenumber: 136
    functionLinenumberEnd: 140
    functionName: protozero::iterator_range::swap
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/iterators.hpp
    functionUses: 2
    functionsReached:
    - protozero::iterator_range::swap
    linkageType: ''
    returnType: void
    signature: void swap(iterator_range& other) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::swap
      Src: /src/pdns/ext/protozero/include/protozero/iterators.hpp:152,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' lhs'
    - ' rhs'
    argTypes:
    - iterator_range<T>
    - iterator_range<T>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 153
      start: 151
    functionDepth: 0
    functionLinenumber: 151
    functionLinenumberEnd: 153
    functionName: protozero::swap
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/iterators.hpp
    functionUses: 2
    functionsReached:
    - protozero::swap
    linkageType: ''
    returnType: void
    signature: void swap(iterator_range<T>& lhs, iterator_range<T>& rhs) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 175
      start: 175
    functionDepth: 0
    functionLinenumber: 175
    functionLinenumberEnd: 175
    functionName: protozero::const_fixed_iterator::const_fixed_iterator
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/iterators.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void const_fixed_iterator() noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - data
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 179
      start: 177
    functionDepth: 0
    functionLinenumber: 177
    functionLinenumberEnd: 179
    functionName: protozero::const_fixed_iterator::const_fixed_iterator
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/iterators.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void const_fixed_iterator(const char* data) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 181
      start: 181
    functionDepth: 0
    functionLinenumber: 181
    functionLinenumberEnd: 181
    functionName: protozero::const_fixed_iterator::const_fixed_iterator
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/iterators.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void const_fixed_iterator(const const_fixed_iterator&) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 182
      start: 182
    functionDepth: 0
    functionLinenumber: 182
    functionLinenumberEnd: 182
    functionName: protozero::const_fixed_iterator::const_fixed_iterator
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/iterators.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void const_fixed_iterator(const_fixed_iterator&&) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 184
      start: 184
    functionDepth: 0
    functionLinenumber: 184
    functionLinenumberEnd: 184
    functionName: '& operator=(const const_fixed_iterator&) noexcept'
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/iterators.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: const_fixed_iterator
    signature: const_fixed_iterator & operator=(const const_fixed_iterator&) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 185
      start: 185
    functionDepth: 0
    functionLinenumber: 185
    functionLinenumberEnd: 185
    functionName: '& operator=(const_fixed_iterator&&) noexcept'
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/iterators.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: const_fixed_iterator
    signature: const_fixed_iterator & operator=(const_fixed_iterator&&) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 187
      start: 187
    functionDepth: 0
    functionLinenumber: 187
    functionLinenumberEnd: 187
    functionName: ~const_fixed_iterator() noexcept
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/iterators.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~const_fixed_iterator() noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::memcpy
      Src: /src/pdns/ext/protozero/include/protozero/iterators.hpp:191,1
    - Dst: byteswap_inplace
      Src: /src/pdns/ext/protozero/include/protozero/iterators.hpp:193,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 196
      start: 189
    functionDepth: 0
    functionLinenumber: 189
    functionLinenumberEnd: 196
    functionName: operator*() const noexcept
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/iterators.hpp
    functionUses: 0
    functionsReached:
    - std::memcpy
    - byteswap_inplace
    linkageType: ''
    returnType: value_type
    signature: value_type operator*() const noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 201
      start: 198
    functionDepth: 0
    functionLinenumber: 198
    functionLinenumberEnd: 201
    functionName: '& operator++() noexcept'
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/iterators.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: const_fixed_iterator
    signature: const_fixed_iterator & operator++() noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 207
      start: 203
    functionDepth: 0
    functionLinenumber: 203
    functionLinenumberEnd: 207
    functionName: operator++(int) noexcept
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/iterators.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: const_fixed_iterator
    signature: const_fixed_iterator operator++(int) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 212
      start: 209
    functionDepth: 0
    functionLinenumber: 209
    functionLinenumberEnd: 212
    functionName: '& operator--() noexcept'
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/iterators.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: const_fixed_iterator
    signature: const_fixed_iterator & operator--() noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 218
      start: 214
    functionDepth: 0
    functionLinenumber: 214
    functionLinenumberEnd: 218
    functionName: operator--(int) noexcept
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/iterators.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: const_fixed_iterator
    signature: const_fixed_iterator operator--(int) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - lhs
    - rhs
    argTypes:
    - const_fixed_iterator
    - const_fixed_iterator
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 222
      start: 220
    functionDepth: 0
    functionLinenumber: 220
    functionLinenumberEnd: 222
    functionName: operator==(const_fixed_iterator lhs, const_fixed_iterator rhs) noexcept
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/iterators.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool operator==(const_fixed_iterator lhs, const_fixed_iterator rhs)
      noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - lhs
    - rhs
    argTypes:
    - const_fixed_iterator
    - const_fixed_iterator
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 226
      start: 224
    functionDepth: 0
    functionLinenumber: 224
    functionLinenumberEnd: 226
    functionName: operator!=(const_fixed_iterator lhs, const_fixed_iterator rhs) noexcept
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/iterators.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool operator!=(const_fixed_iterator lhs, const_fixed_iterator rhs)
      noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - lhs
    - rhs
    argTypes:
    - const_fixed_iterator
    - const_fixed_iterator
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 230
      start: 228
    functionDepth: 0
    functionLinenumber: 228
    functionLinenumberEnd: 230
    functionName: operator<(const_fixed_iterator lhs, const_fixed_iterator rhs) noexcept
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/iterators.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool operator<(const_fixed_iterator lhs, const_fixed_iterator rhs)
      noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - lhs
    - rhs
    argTypes:
    - const_fixed_iterator
    - const_fixed_iterator
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 234
      start: 232
    functionDepth: 0
    functionLinenumber: 232
    functionLinenumberEnd: 234
    functionName: operator>(const_fixed_iterator lhs, const_fixed_iterator rhs) noexcept
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/iterators.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool operator>(const_fixed_iterator lhs, const_fixed_iterator rhs)
      noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - lhs
    - rhs
    argTypes:
    - const_fixed_iterator
    - const_fixed_iterator
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 238
      start: 236
    functionDepth: 0
    functionLinenumber: 236
    functionLinenumberEnd: 238
    functionName: operator<=(const_fixed_iterator lhs, const_fixed_iterator rhs) noexcept
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/iterators.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool operator<=(const_fixed_iterator lhs, const_fixed_iterator rhs)
      noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - lhs
    - rhs
    argTypes:
    - const_fixed_iterator
    - const_fixed_iterator
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 242
      start: 240
    functionDepth: 0
    functionLinenumber: 240
    functionLinenumberEnd: 242
    functionName: operator>=(const_fixed_iterator lhs, const_fixed_iterator rhs) noexcept
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/iterators.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool operator>=(const_fixed_iterator lhs, const_fixed_iterator rhs)
      noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - val
    argTypes:
    - difference_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 247
      start: 244
    functionDepth: 0
    functionLinenumber: 244
    functionLinenumberEnd: 247
    functionName: '& operator+=(difference_type val) noexcept'
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/iterators.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: const_fixed_iterator
    signature: const_fixed_iterator & operator+=(difference_type val) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - lhs
    - rhs
    argTypes:
    - const_fixed_iterator
    - difference_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 253
      start: 249
    functionDepth: 0
    functionLinenumber: 249
    functionLinenumberEnd: 253
    functionName: operator+(const_fixed_iterator lhs, difference_type rhs) noexcept
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/iterators.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: const_fixed_iterator
    signature: const_fixed_iterator operator+(const_fixed_iterator lhs, difference_type
      rhs) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - lhs
    - rhs
    argTypes:
    - difference_type
    - const_fixed_iterator
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 259
      start: 255
    functionDepth: 0
    functionLinenumber: 255
    functionLinenumberEnd: 259
    functionName: operator+(difference_type lhs, const_fixed_iterator rhs) noexcept
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/iterators.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: const_fixed_iterator
    signature: const_fixed_iterator operator+(difference_type lhs, const_fixed_iterator
      rhs) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - val
    argTypes:
    - difference_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 264
      start: 261
    functionDepth: 0
    functionLinenumber: 261
    functionLinenumberEnd: 264
    functionName: '& operator-=(difference_type val) noexcept'
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/iterators.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: const_fixed_iterator
    signature: const_fixed_iterator & operator-=(difference_type val) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - lhs
    - rhs
    argTypes:
    - const_fixed_iterator
    - difference_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 270
      start: 266
    functionDepth: 0
    functionLinenumber: 266
    functionLinenumberEnd: 270
    functionName: operator-(const_fixed_iterator lhs, difference_type rhs) noexcept
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/iterators.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: const_fixed_iterator
    signature: const_fixed_iterator operator-(const_fixed_iterator lhs, difference_type
      rhs) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<difference_type>
      Src: /src/pdns/ext/protozero/include/protozero/iterators.hpp:273,1
    - Dst: static_cast<difference_type>
      Src: /src/pdns/ext/protozero/include/protozero/iterators.hpp:273,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - lhs
    - rhs
    argTypes:
    - const_fixed_iterator
    - const_fixed_iterator
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 274
      start: 272
    functionDepth: 0
    functionLinenumber: 272
    functionLinenumberEnd: 274
    functionName: operator-(const_fixed_iterator lhs, const_fixed_iterator rhs) noexcept
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/iterators.hpp
    functionUses: 0
    functionsReached:
    - static_cast<difference_type>
    linkageType: ''
    returnType: difference_type
    signature: difference_type operator-(const_fixed_iterator lhs, const_fixed_iterator
      rhs) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - n
    argTypes:
    - difference_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 278
      start: 276
    functionDepth: 0
    functionLinenumber: 276
    functionLinenumberEnd: 278
    functionName: operator[](difference_type n) const noexcept
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/iterators.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: value_type
    signature: value_type operator[](difference_type n) const noexcept
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::count_if
      Src: /src/pdns/ext/protozero/include/protozero/iterators.hpp:318,1
    - Dst: static_cast<unsigned char>
      Src: /src/pdns/ext/protozero/include/protozero/iterators.hpp:319,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - begin
    - end
    argTypes:
    - const_varint_iterator
    - const_varint_iterator
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 321
      start: 309
    functionDepth: 0
    functionLinenumber: 309
    functionLinenumberEnd: 321
    functionName: protozero::const_varint_iterator::distance
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/iterators.hpp
    functionUses: 0
    functionsReached:
    - std::count_if
    - static_cast<unsigned char>
    linkageType: ''
    returnType: difference_type
    signature: difference_type distance(const_varint_iterator begin, const_varint_iterator
      end) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 323
      start: 323
    functionDepth: 0
    functionLinenumber: 323
    functionLinenumberEnd: 323
    functionName: protozero::const_varint_iterator::const_varint_iterator
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/iterators.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void const_varint_iterator() noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - data
    - end
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 328
      start: 325
    functionDepth: 0
    functionLinenumber: 325
    functionLinenumberEnd: 328
    functionName: protozero::const_varint_iterator::const_varint_iterator
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/iterators.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void const_varint_iterator(const char* data, const char* end) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 330
      start: 330
    functionDepth: 0
    functionLinenumber: 330
    functionLinenumberEnd: 330
    functionName: protozero::const_varint_iterator::const_varint_iterator
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/iterators.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void const_varint_iterator(const const_varint_iterator&) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 331
      start: 331
    functionDepth: 0
    functionLinenumber: 331
    functionLinenumberEnd: 331
    functionName: protozero::const_varint_iterator::const_varint_iterator
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/iterators.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void const_varint_iterator(const_varint_iterator&&) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 333
      start: 333
    functionDepth: 0
    functionLinenumber: 333
    functionLinenumberEnd: 333
    functionName: '& operator=(const const_varint_iterator&) noexcept'
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/iterators.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: const_varint_iterator
    signature: const_varint_iterator & operator=(const const_varint_iterator&) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 334
      start: 334
    functionDepth: 0
    functionLinenumber: 334
    functionLinenumberEnd: 334
    functionName: '& operator=(const_varint_iterator&&) noexcept'
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/iterators.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: const_varint_iterator
    signature: const_varint_iterator & operator=(const_varint_iterator&&) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 336
      start: 336
    functionDepth: 0
    functionLinenumber: 336
    functionLinenumberEnd: 336
    functionName: ~const_varint_iterator() noexcept
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/iterators.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~const_varint_iterator() noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero_assert
      Src: /src/pdns/ext/protozero/include/protozero/iterators.hpp:339,1
    - Dst: static_cast<value_type>
      Src: /src/pdns/ext/protozero/include/protozero/iterators.hpp:341,1
    - Dst: decode_varint
      Src: /src/pdns/ext/protozero/include/protozero/iterators.hpp:341,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 342
      start: 338
    functionDepth: 1
    functionLinenumber: 338
    functionLinenumberEnd: 342
    functionName: operator*() const
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/iterators.hpp
    functionUses: 0
    functionsReached:
    - protozero_assert
    - static_cast<value_type>
    - decode_varint
    linkageType: ''
    returnType: value_type
    signature: value_type operator*() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero_assert
      Src: /src/pdns/ext/protozero/include/protozero/iterators.hpp:345,1
    - Dst: skip_varint
      Src: /src/pdns/ext/protozero/include/protozero/iterators.hpp:346,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 348
      start: 344
    functionDepth: 1
    functionLinenumber: 344
    functionLinenumberEnd: 348
    functionName: '& operator++()'
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/iterators.hpp
    functionUses: 0
    functionsReached:
    - protozero_assert
    - skip_varint
    linkageType: ''
    returnType: const_varint_iterator
    signature: const_varint_iterator & operator++()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero_assert
      Src: /src/pdns/ext/protozero/include/protozero/iterators.hpp:351,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 355
      start: 350
    functionDepth: 1
    functionLinenumber: 350
    functionLinenumberEnd: 355
    functionName: operator++(int)
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/iterators.hpp
    functionUses: 0
    functionsReached:
    - protozero_assert
    linkageType: ''
    returnType: const_varint_iterator
    signature: const_varint_iterator operator++(int)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - const_varint_iterator
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 359
      start: 357
    functionDepth: 0
    functionLinenumber: 357
    functionLinenumberEnd: 359
    functionName: operator==(const const_varint_iterator& rhs) const noexcept
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/iterators.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool operator==(const const_varint_iterator& rhs) const noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ' rhs'
    argTypes:
    - const_varint_iterator
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 363
      start: 361
    functionDepth: 0
    functionLinenumber: 361
    functionLinenumberEnd: 363
    functionName: operator!=(const const_varint_iterator& rhs) const noexcept
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/iterators.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool operator!=(const const_varint_iterator& rhs) const noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 388
      start: 386
    functionDepth: 0
    functionLinenumber: 386
    functionLinenumberEnd: 388
    functionName: protozero::const_svarint_iterator::const_svarint_iterator
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/iterators.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void const_svarint_iterator() noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - data
    - end
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 392
      start: 390
    functionDepth: 0
    functionLinenumber: 390
    functionLinenumberEnd: 392
    functionName: protozero::const_svarint_iterator::const_svarint_iterator
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/iterators.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void const_svarint_iterator(const char* data, const char* end) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 394
      start: 394
    functionDepth: 0
    functionLinenumber: 394
    functionLinenumberEnd: 394
    functionName: protozero::const_svarint_iterator::const_svarint_iterator
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/iterators.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void const_svarint_iterator(const const_svarint_iterator&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 395
      start: 395
    functionDepth: 0
    functionLinenumber: 395
    functionLinenumberEnd: 395
    functionName: protozero::const_svarint_iterator::const_svarint_iterator
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/iterators.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void const_svarint_iterator(const_svarint_iterator&&) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 397
      start: 397
    functionDepth: 0
    functionLinenumber: 397
    functionLinenumberEnd: 397
    functionName: '& operator=(const const_svarint_iterator&)'
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/iterators.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: const_svarint_iterator
    signature: const_svarint_iterator & operator=(const const_svarint_iterator&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 398
      start: 398
    functionDepth: 0
    functionLinenumber: 398
    functionLinenumberEnd: 398
    functionName: '& operator=(const_svarint_iterator&&) noexcept'
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/iterators.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: const_svarint_iterator
    signature: const_svarint_iterator & operator=(const_svarint_iterator&&) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 400
      start: 400
    functionDepth: 0
    functionLinenumber: 400
    functionLinenumberEnd: 400
    functionName: ~const_svarint_iterator()
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/iterators.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~const_svarint_iterator()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero_assert
      Src: /src/pdns/ext/protozero/include/protozero/iterators.hpp:403,1
    - Dst: static_cast<value_type>
      Src: /src/pdns/ext/protozero/include/protozero/iterators.hpp:405,1
    - Dst: decode_zigzag64
      Src: /src/pdns/ext/protozero/include/protozero/iterators.hpp:405,1
    - Dst: decode_varint
      Src: /src/pdns/ext/protozero/include/protozero/iterators.hpp:405,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 406
      start: 402
    functionDepth: 1
    functionLinenumber: 402
    functionLinenumberEnd: 406
    functionName: operator*() const
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/iterators.hpp
    functionUses: 0
    functionsReached:
    - protozero_assert
    - decode_zigzag64
    - static_cast<value_type>
    - decode_varint
    linkageType: ''
    returnType: value_type
    signature: value_type operator*() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero_assert
      Src: /src/pdns/ext/protozero/include/protozero/iterators.hpp:409,1
    - Dst: skip_varint
      Src: /src/pdns/ext/protozero/include/protozero/iterators.hpp:410,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 412
      start: 408
    functionDepth: 1
    functionLinenumber: 408
    functionLinenumberEnd: 412
    functionName: '& operator++()'
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/iterators.hpp
    functionUses: 0
    functionsReached:
    - protozero_assert
    - skip_varint
    linkageType: ''
    returnType: const_svarint_iterator
    signature: const_svarint_iterator & operator++()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero_assert
      Src: /src/pdns/ext/protozero/include/protozero/iterators.hpp:415,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 419
      start: 414
    functionDepth: 1
    functionLinenumber: 414
    functionLinenumberEnd: 419
    functionName: operator++(int)
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/iterators.hpp
    functionUses: 0
    functionsReached:
    - protozero_assert
    linkageType: ''
    returnType: const_svarint_iterator
    signature: const_svarint_iterator operator++(int)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::const_varint_iterator::distance
      Src: /src/pdns/ext/protozero/include/protozero/iterators.hpp:439,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - first
    - last
    argTypes:
    - protozero::const_varint_iterator<int32_t>
    - protozero::const_varint_iterator<int32_t>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 440
      start: 436
    functionDepth: 1
    functionLinenumber: 436
    functionLinenumberEnd: 440
    functionName: std::distance
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/iterators.hpp
    functionUses: 26
    functionsReached:
    - protozero::const_varint_iterator::distance
    linkageType: ''
    returnType: typename protozero::const_varint_iterator<int32_t>::difference_type
    signature: "typename protozero::const_varint_iterator<int32_t>::difference_type
      distance<protozero::const_varint_iterator<int32_t>>(protozero::const_varint_iterator<int32_t>
      first, // NOLINT(readability-inconsistent-declaration-parameter-name)\n                                                        protozero::const_varint_iterator<int32_t>
      last)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::const_varint_iterator::distance
      Src: /src/pdns/ext/protozero/include/protozero/iterators.hpp:446,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - first
    - last
    argTypes:
    - protozero::const_varint_iterator<int64_t>
    - protozero::const_varint_iterator<int64_t>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 447
      start: 443
    functionDepth: 1
    functionLinenumber: 443
    functionLinenumberEnd: 447
    functionName: std::distance
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/iterators.hpp
    functionUses: 26
    functionsReached:
    - protozero::const_varint_iterator::distance
    linkageType: ''
    returnType: typename protozero::const_varint_iterator<int64_t>::difference_type
    signature: "typename protozero::const_varint_iterator<int64_t>::difference_type
      distance<protozero::const_varint_iterator<int64_t>>(protozero::const_varint_iterator<int64_t>
      first, // NOLINT(readability-inconsistent-declaration-parameter-name)\n                                                        protozero::const_varint_iterator<int64_t>
      last)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::const_varint_iterator::distance
      Src: /src/pdns/ext/protozero/include/protozero/iterators.hpp:453,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - first
    - last
    argTypes:
    - protozero::const_varint_iterator<uint32_t>
    - protozero::const_varint_iterator<uint32_t>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 454
      start: 450
    functionDepth: 1
    functionLinenumber: 450
    functionLinenumberEnd: 454
    functionName: std::distance
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/iterators.hpp
    functionUses: 26
    functionsReached:
    - protozero::const_varint_iterator::distance
    linkageType: ''
    returnType: typename protozero::const_varint_iterator<uint32_t>::difference_type
    signature: "typename protozero::const_varint_iterator<uint32_t>::difference_type
      distance<protozero::const_varint_iterator<uint32_t>>(protozero::const_varint_iterator<uint32_t>
      first, // NOLINT(readability-inconsistent-declaration-parameter-name)\n                                                         protozero::const_varint_iterator<uint32_t>
      last)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::const_varint_iterator::distance
      Src: /src/pdns/ext/protozero/include/protozero/iterators.hpp:460,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - first
    - last
    argTypes:
    - protozero::const_varint_iterator<uint64_t>
    - protozero::const_varint_iterator<uint64_t>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 461
      start: 457
    functionDepth: 1
    functionLinenumber: 457
    functionLinenumberEnd: 461
    functionName: std::distance
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/iterators.hpp
    functionUses: 26
    functionsReached:
    - protozero::const_varint_iterator::distance
    linkageType: ''
    returnType: typename protozero::const_varint_iterator<uint64_t>::difference_type
    signature: "typename protozero::const_varint_iterator<uint64_t>::difference_type
      distance<protozero::const_varint_iterator<uint64_t>>(protozero::const_varint_iterator<uint64_t>
      first, // NOLINT(readability-inconsistent-declaration-parameter-name)\n                                                         protozero::const_varint_iterator<uint64_t>
      last)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::const_varint_iterator::distance
      Src: /src/pdns/ext/protozero/include/protozero/iterators.hpp:467,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - first
    - last
    argTypes:
    - protozero::const_svarint_iterator<int32_t>
    - protozero::const_svarint_iterator<int32_t>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 468
      start: 464
    functionDepth: 1
    functionLinenumber: 464
    functionLinenumberEnd: 468
    functionName: std::distance
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/iterators.hpp
    functionUses: 26
    functionsReached:
    - protozero::const_varint_iterator::distance
    linkageType: ''
    returnType: typename protozero::const_svarint_iterator<int32_t>::difference_type
    signature: "typename protozero::const_svarint_iterator<int32_t>::difference_type
      distance<protozero::const_svarint_iterator<int32_t>>(protozero::const_svarint_iterator<int32_t>
      first, // NOLINT(readability-inconsistent-declaration-parameter-name)\n                                                         protozero::const_svarint_iterator<int32_t>
      last)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::const_varint_iterator::distance
      Src: /src/pdns/ext/protozero/include/protozero/iterators.hpp:474,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - first
    - last
    argTypes:
    - protozero::const_svarint_iterator<int64_t>
    - protozero::const_svarint_iterator<int64_t>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 475
      start: 471
    functionDepth: 1
    functionLinenumber: 471
    functionLinenumberEnd: 475
    functionName: std::distance
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/iterators.hpp
    functionUses: 26
    functionsReached:
    - protozero::const_varint_iterator::distance
    linkageType: ''
    returnType: typename protozero::const_svarint_iterator<int64_t>::difference_type
    signature: "typename protozero::const_svarint_iterator<int64_t>::difference_type
      distance<protozero::const_svarint_iterator<int64_t>>(protozero::const_svarint_iterator<int64_t>
      first, // NOLINT(readability-inconsistent-declaration-parameter-name)\n                                                         protozero::const_svarint_iterator<int64_t>
      last)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::const_varint_iterator::distance
      Src: /src/pdns/ext/protozero/include/protozero/iterators.hpp:439,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - first
    - last
    argTypes:
    - protozero::const_varint_iterator<int32_t>
    - protozero::const_varint_iterator<int32_t>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 440
      start: 436
    functionDepth: 1
    functionLinenumber: 436
    functionLinenumberEnd: 440
    functionName: std::distance
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/iterators.hpp
    functionUses: 26
    functionsReached:
    - protozero::const_varint_iterator::distance
    linkageType: ''
    returnType: typename protozero::const_varint_iterator<int32_t>::difference_type
    signature: "typename protozero::const_varint_iterator<int32_t>::difference_type
      distance<protozero::const_varint_iterator<int32_t>>(protozero::const_varint_iterator<int32_t>
      first, // NOLINT(readability-inconsistent-declaration-parameter-name)\n                                                        protozero::const_varint_iterator<int32_t>
      last)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::const_varint_iterator::distance
      Src: /src/pdns/ext/protozero/include/protozero/iterators.hpp:446,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - first
    - last
    argTypes:
    - protozero::const_varint_iterator<int64_t>
    - protozero::const_varint_iterator<int64_t>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 447
      start: 443
    functionDepth: 1
    functionLinenumber: 443
    functionLinenumberEnd: 447
    functionName: std::distance
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/iterators.hpp
    functionUses: 26
    functionsReached:
    - protozero::const_varint_iterator::distance
    linkageType: ''
    returnType: typename protozero::const_varint_iterator<int64_t>::difference_type
    signature: "typename protozero::const_varint_iterator<int64_t>::difference_type
      distance<protozero::const_varint_iterator<int64_t>>(protozero::const_varint_iterator<int64_t>
      first, // NOLINT(readability-inconsistent-declaration-parameter-name)\n                                                        protozero::const_varint_iterator<int64_t>
      last)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::const_varint_iterator::distance
      Src: /src/pdns/ext/protozero/include/protozero/iterators.hpp:453,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - first
    - last
    argTypes:
    - protozero::const_varint_iterator<uint32_t>
    - protozero::const_varint_iterator<uint32_t>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 454
      start: 450
    functionDepth: 1
    functionLinenumber: 450
    functionLinenumberEnd: 454
    functionName: std::distance
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/iterators.hpp
    functionUses: 26
    functionsReached:
    - protozero::const_varint_iterator::distance
    linkageType: ''
    returnType: typename protozero::const_varint_iterator<uint32_t>::difference_type
    signature: "typename protozero::const_varint_iterator<uint32_t>::difference_type
      distance<protozero::const_varint_iterator<uint32_t>>(protozero::const_varint_iterator<uint32_t>
      first, // NOLINT(readability-inconsistent-declaration-parameter-name)\n                                                         protozero::const_varint_iterator<uint32_t>
      last)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::const_varint_iterator::distance
      Src: /src/pdns/ext/protozero/include/protozero/iterators.hpp:460,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - first
    - last
    argTypes:
    - protozero::const_varint_iterator<uint64_t>
    - protozero::const_varint_iterator<uint64_t>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 461
      start: 457
    functionDepth: 1
    functionLinenumber: 457
    functionLinenumberEnd: 461
    functionName: std::distance
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/iterators.hpp
    functionUses: 26
    functionsReached:
    - protozero::const_varint_iterator::distance
    linkageType: ''
    returnType: typename protozero::const_varint_iterator<uint64_t>::difference_type
    signature: "typename protozero::const_varint_iterator<uint64_t>::difference_type
      distance<protozero::const_varint_iterator<uint64_t>>(protozero::const_varint_iterator<uint64_t>
      first, // NOLINT(readability-inconsistent-declaration-parameter-name)\n                                                         protozero::const_varint_iterator<uint64_t>
      last)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::const_varint_iterator::distance
      Src: /src/pdns/ext/protozero/include/protozero/iterators.hpp:467,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - first
    - last
    argTypes:
    - protozero::const_svarint_iterator<int32_t>
    - protozero::const_svarint_iterator<int32_t>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 468
      start: 464
    functionDepth: 1
    functionLinenumber: 464
    functionLinenumberEnd: 468
    functionName: std::distance
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/iterators.hpp
    functionUses: 26
    functionsReached:
    - protozero::const_varint_iterator::distance
    linkageType: ''
    returnType: typename protozero::const_svarint_iterator<int32_t>::difference_type
    signature: "typename protozero::const_svarint_iterator<int32_t>::difference_type
      distance<protozero::const_svarint_iterator<int32_t>>(protozero::const_svarint_iterator<int32_t>
      first, // NOLINT(readability-inconsistent-declaration-parameter-name)\n                                                         protozero::const_svarint_iterator<int32_t>
      last)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::const_varint_iterator::distance
      Src: /src/pdns/ext/protozero/include/protozero/iterators.hpp:474,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - first
    - last
    argTypes:
    - protozero::const_svarint_iterator<int64_t>
    - protozero::const_svarint_iterator<int64_t>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 475
      start: 471
    functionDepth: 1
    functionLinenumber: 471
    functionLinenumberEnd: 475
    functionName: std::distance
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/iterators.hpp
    functionUses: 26
    functionsReached:
    - protozero::const_varint_iterator::distance
    linkageType: ''
    returnType: typename protozero::const_svarint_iterator<int64_t>::difference_type
    signature: "typename protozero::const_svarint_iterator<int64_t>::difference_type
      distance<protozero::const_svarint_iterator<int64_t>>(protozero::const_svarint_iterator<int64_t>
      first, // NOLINT(readability-inconsistent-declaration-parameter-name)\n                                                         protozero::const_svarint_iterator<int64_t>
      last)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::string*::size
      Src: /src/pdns/ext/protozero/include/protozero/buffer_string.hpp:36,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - buffer
    argTypes:
    - std::string*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 35
    functionDepth: 0
    functionLinenumber: 35
    functionLinenumberEnd: 37
    functionName: protozero::size
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/buffer_string.hpp
    functionUses: 0
    functionsReached:
    - std::string*::size
    linkageType: ''
    returnType: std::size_t
    signature: std::size_t size(const std::string* buffer) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::string*::append
      Src: /src/pdns/ext/protozero/include/protozero/buffer_string.hpp:40,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - buffer
    - data
    - count
    argTypes:
    - std::string*
    - char*
    - std::size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 39
    functionDepth: 0
    functionLinenumber: 39
    functionLinenumberEnd: 41
    functionName: protozero::append
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/buffer_string.hpp
    functionUses: 0
    functionsReached:
    - std::string*::append
    linkageType: ''
    returnType: void
    signature: void append(std::string* buffer, const char* data, std::size_t count)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::string*::append
      Src: /src/pdns/ext/protozero/include/protozero/buffer_string.hpp:44,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - buffer
    - count
    argTypes:
    - std::string*
    - std::size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 45
    functionName: protozero::append_zeros
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/buffer_string.hpp
    functionUses: 0
    functionsReached:
    - std::string*::append
    linkageType: ''
    returnType: void
    signature: void append_zeros(std::string* buffer, std::size_t count)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero_assert
      Src: /src/pdns/ext/protozero/include/protozero/buffer_string.hpp:48,1
    - Dst: std::string*::size
      Src: /src/pdns/ext/protozero/include/protozero/buffer_string.hpp:48,1
    - Dst: std::string*::resize
      Src: /src/pdns/ext/protozero/include/protozero/buffer_string.hpp:49,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - buffer
    - size
    argTypes:
    - std::string*
    - std::size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 47
    functionDepth: 2
    functionLinenumber: 47
    functionLinenumberEnd: 50
    functionName: protozero::resize
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/buffer_string.hpp
    functionUses: 0
    functionsReached:
    - std::string*::resize
    - protozero_assert
    - std::string*::size
    linkageType: ''
    returnType: void
    signature: void resize(std::string* buffer, std::size_t size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::string*::reserve
      Src: /src/pdns/ext/protozero/include/protozero/buffer_string.hpp:53,1
    - Dst: std::string*::size
      Src: /src/pdns/ext/protozero/include/protozero/buffer_string.hpp:53,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - buffer
    - size
    argTypes:
    - std::string*
    - std::size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 52
    functionDepth: 0
    functionLinenumber: 52
    functionLinenumberEnd: 54
    functionName: protozero::reserve_additional
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/buffer_string.hpp
    functionUses: 0
    functionsReached:
    - std::string*::size
    - std::string*::reserve
    linkageType: ''
    returnType: void
    signature: void reserve_additional(std::string* buffer, std::size_t size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero_assert
      Src: /src/pdns/ext/protozero/include/protozero/buffer_string.hpp:57,1
    - Dst: std::string*::size
      Src: /src/pdns/ext/protozero/include/protozero/buffer_string.hpp:57,1
    - Dst: protozero_assert
      Src: /src/pdns/ext/protozero/include/protozero/buffer_string.hpp:58,1
    - Dst: std::string*::size
      Src: /src/pdns/ext/protozero/include/protozero/buffer_string.hpp:58,1
    - Dst: protozero_assert
      Src: /src/pdns/ext/protozero/include/protozero/buffer_string.hpp:59,1
    - Dst: std::string*::erase
      Src: /src/pdns/ext/protozero/include/protozero/buffer_string.hpp:60,1
    - Dst: std::string*::begin
      Src: /src/pdns/ext/protozero/include/protozero/buffer_string.hpp:60,1
    - Dst: static_cast<std::string::difference_type>
      Src: /src/pdns/ext/protozero/include/protozero/buffer_string.hpp:60,1
    - Dst: std::string*::begin
      Src: /src/pdns/ext/protozero/include/protozero/buffer_string.hpp:61,1
    - Dst: static_cast<std::string::difference_type>
      Src: /src/pdns/ext/protozero/include/protozero/buffer_string.hpp:61,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - buffer
    - from
    - to
    argTypes:
    - std::string*
    - std::size_t
    - std::size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 56
    functionDepth: 1
    functionLinenumber: 56
    functionLinenumberEnd: 62
    functionName: protozero::erase_range
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/buffer_string.hpp
    functionUses: 0
    functionsReached:
    - protozero_assert
    - static_cast<std::string::difference_type>
    - std::string*::erase
    - std::string*::begin
    - std::string*::size
    linkageType: ''
    returnType: void
    signature: void erase_range(std::string* buffer, std::size_t from, std::size_t
      to)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero_assert
      Src: /src/pdns/ext/protozero/include/protozero/buffer_string.hpp:65,1
    - Dst: std::string*::size
      Src: /src/pdns/ext/protozero/include/protozero/buffer_string.hpp:65,1
    - Dst: std::string*::begin
      Src: /src/pdns/ext/protozero/include/protozero/buffer_string.hpp:66,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - buffer
    - pos
    argTypes:
    - std::string*
    - std::size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 64
    functionDepth: 1
    functionLinenumber: 64
    functionLinenumberEnd: 67
    functionName: protozero::at_pos
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/buffer_string.hpp
    functionUses: 0
    functionsReached:
    - std::string*::begin
    - protozero_assert
    - std::string*::size
    linkageType: ''
    returnType: char
    signature: char * at_pos(std::string* buffer, std::size_t pos)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::string*::push_back
      Src: /src/pdns/ext/protozero/include/protozero/buffer_string.hpp:70,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - buffer
    - ch
    argTypes:
    - std::string*
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 69
    functionDepth: 0
    functionLinenumber: 69
    functionLinenumberEnd: 71
    functionName: protozero::push_back
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/buffer_string.hpp
    functionUses: 0
    functionsReached:
    - std::string*::push_back
    linkageType: ''
    returnType: void
    signature: void push_back(std::string* buffer, char ch)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::string*::size
      Src: /src/pdns/ext/protozero/include/protozero/buffer_string.hpp:36,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - buffer
    argTypes:
    - std::string*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 35
    functionDepth: 0
    functionLinenumber: 35
    functionLinenumberEnd: 37
    functionName: protozero::size
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/buffer_string.hpp
    functionUses: 0
    functionsReached:
    - std::string*::size
    linkageType: ''
    returnType: std::size_t
    signature: std::size_t size(const std::string* buffer) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::string*::append
      Src: /src/pdns/ext/protozero/include/protozero/buffer_string.hpp:40,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - buffer
    - data
    - count
    argTypes:
    - std::string*
    - char*
    - std::size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 39
    functionDepth: 0
    functionLinenumber: 39
    functionLinenumberEnd: 41
    functionName: protozero::append
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/buffer_string.hpp
    functionUses: 0
    functionsReached:
    - std::string*::append
    linkageType: ''
    returnType: void
    signature: void append(std::string* buffer, const char* data, std::size_t count)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::string*::append
      Src: /src/pdns/ext/protozero/include/protozero/buffer_string.hpp:44,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - buffer
    - count
    argTypes:
    - std::string*
    - std::size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 45
    functionName: protozero::append_zeros
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/buffer_string.hpp
    functionUses: 0
    functionsReached:
    - std::string*::append
    linkageType: ''
    returnType: void
    signature: void append_zeros(std::string* buffer, std::size_t count)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero_assert
      Src: /src/pdns/ext/protozero/include/protozero/buffer_string.hpp:48,1
    - Dst: std::string*::size
      Src: /src/pdns/ext/protozero/include/protozero/buffer_string.hpp:48,1
    - Dst: std::string*::resize
      Src: /src/pdns/ext/protozero/include/protozero/buffer_string.hpp:49,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - buffer
    - size
    argTypes:
    - std::string*
    - std::size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 47
    functionDepth: 2
    functionLinenumber: 47
    functionLinenumberEnd: 50
    functionName: protozero::resize
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/buffer_string.hpp
    functionUses: 0
    functionsReached:
    - std::string*::resize
    - protozero_assert
    - std::string*::size
    linkageType: ''
    returnType: void
    signature: void resize(std::string* buffer, std::size_t size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::string*::reserve
      Src: /src/pdns/ext/protozero/include/protozero/buffer_string.hpp:53,1
    - Dst: std::string*::size
      Src: /src/pdns/ext/protozero/include/protozero/buffer_string.hpp:53,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - buffer
    - size
    argTypes:
    - std::string*
    - std::size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 52
    functionDepth: 0
    functionLinenumber: 52
    functionLinenumberEnd: 54
    functionName: protozero::reserve_additional
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/buffer_string.hpp
    functionUses: 0
    functionsReached:
    - std::string*::size
    - std::string*::reserve
    linkageType: ''
    returnType: void
    signature: void reserve_additional(std::string* buffer, std::size_t size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero_assert
      Src: /src/pdns/ext/protozero/include/protozero/buffer_string.hpp:57,1
    - Dst: std::string*::size
      Src: /src/pdns/ext/protozero/include/protozero/buffer_string.hpp:57,1
    - Dst: protozero_assert
      Src: /src/pdns/ext/protozero/include/protozero/buffer_string.hpp:58,1
    - Dst: std::string*::size
      Src: /src/pdns/ext/protozero/include/protozero/buffer_string.hpp:58,1
    - Dst: protozero_assert
      Src: /src/pdns/ext/protozero/include/protozero/buffer_string.hpp:59,1
    - Dst: std::string*::erase
      Src: /src/pdns/ext/protozero/include/protozero/buffer_string.hpp:60,1
    - Dst: std::string*::begin
      Src: /src/pdns/ext/protozero/include/protozero/buffer_string.hpp:60,1
    - Dst: static_cast<std::string::difference_type>
      Src: /src/pdns/ext/protozero/include/protozero/buffer_string.hpp:60,1
    - Dst: std::string*::begin
      Src: /src/pdns/ext/protozero/include/protozero/buffer_string.hpp:61,1
    - Dst: static_cast<std::string::difference_type>
      Src: /src/pdns/ext/protozero/include/protozero/buffer_string.hpp:61,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - buffer
    - from
    - to
    argTypes:
    - std::string*
    - std::size_t
    - std::size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 56
    functionDepth: 1
    functionLinenumber: 56
    functionLinenumberEnd: 62
    functionName: protozero::erase_range
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/buffer_string.hpp
    functionUses: 0
    functionsReached:
    - protozero_assert
    - static_cast<std::string::difference_type>
    - std::string*::erase
    - std::string*::begin
    - std::string*::size
    linkageType: ''
    returnType: void
    signature: void erase_range(std::string* buffer, std::size_t from, std::size_t
      to)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero_assert
      Src: /src/pdns/ext/protozero/include/protozero/buffer_string.hpp:65,1
    - Dst: std::string*::size
      Src: /src/pdns/ext/protozero/include/protozero/buffer_string.hpp:65,1
    - Dst: std::string*::begin
      Src: /src/pdns/ext/protozero/include/protozero/buffer_string.hpp:66,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - buffer
    - pos
    argTypes:
    - std::string*
    - std::size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 64
    functionDepth: 1
    functionLinenumber: 64
    functionLinenumberEnd: 67
    functionName: protozero::at_pos
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/buffer_string.hpp
    functionUses: 0
    functionsReached:
    - std::string*::begin
    - protozero_assert
    - std::string*::size
    linkageType: ''
    returnType: char
    signature: char * at_pos(std::string* buffer, std::size_t pos)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::string*::push_back
      Src: /src/pdns/ext/protozero/include/protozero/buffer_string.hpp:70,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - buffer
    - ch
    argTypes:
    - std::string*
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 69
    functionDepth: 0
    functionLinenumber: 69
    functionLinenumberEnd: 71
    functionName: protozero::push_back
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/buffer_string.hpp
    functionUses: 0
    functionsReached:
    - std::string*::push_back
    linkageType: ''
    returnType: void
    signature: void push_back(std::string* buffer, char ch)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 51
    functionDepth: 0
    functionLinenumber: 51
    functionLinenumberEnd: 51
    functionName: protozero::basic_pbf_builder::basic_pbf_builder
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_builder.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void basic_pbf_builder()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' data'
    argTypes:
    - TBuffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 58
    functionDepth: 0
    functionLinenumber: 58
    functionLinenumberEnd: 60
    functionName: protozero::basic_pbf_builder::basic_pbf_builder
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_builder.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void basic_pbf_builder(TBuffer& data) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pbf_tag_type
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_builder.hpp:71,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - ' parent_writer'
    - tag
    argTypes:
    - basic_pbf_writer<TBuffer>
    - P
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 70
    functionDepth: 0
    functionLinenumber: 70
    functionLinenumberEnd: 72
    functionName: protozero::basic_pbf_builder::basic_pbf_builder
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_builder.hpp
    functionUses: 0
    functionsReached:
    - pbf_tag_type
    linkageType: ''
    returnType: void
    signature: void basic_pbf_builder(basic_pbf_writer<TBuffer>& parent_writer, P
      tag)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - name
    - ','
    - type
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 75
    functionDepth: 0
    functionLinenumber: 75
    functionLinenumberEnd: 79
    functionName: PROTOZERO_WRITER_WRAP_ADD_SCALAR
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_builder.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PROTOZERO_WRITER_WRAP_ADD_SCALAR(name, type)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_bytes
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_builder.hpp:106,1
    - Dst: pbf_tag_type
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_builder.hpp:106,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - tag
    - value
    - size
    argTypes:
    - T
    - char*
    - std::size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 107
      start: 105
    functionDepth: 0
    functionLinenumber: 105
    functionLinenumberEnd: 107
    functionName: protozero::basic_pbf_builder::add_bytes
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_builder.hpp
    functionUses: 0
    functionsReached:
    - pdns::ProtoZero::Message::add_bytes
    - pbf_tag_type
    linkageType: ''
    returnType: void
    signature: void add_bytes(T tag, const char* value, std::size_t size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_bytes
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_builder.hpp:116,1
    - Dst: pbf_tag_type
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_builder.hpp:116,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - tag
    - ' value'
    argTypes:
    - T
    - data_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 115
    functionDepth: 0
    functionLinenumber: 115
    functionLinenumberEnd: 117
    functionName: protozero::basic_pbf_builder::add_bytes
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_builder.hpp
    functionUses: 0
    functionsReached:
    - pdns::ProtoZero::Message::add_bytes
    - pbf_tag_type
    linkageType: ''
    returnType: void
    signature: void add_bytes(T tag, const data_view& value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_bytes
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_builder.hpp:126,1
    - Dst: pbf_tag_type
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_builder.hpp:126,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - tag
    - ' value'
    argTypes:
    - T
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 127
      start: 125
    functionDepth: 0
    functionLinenumber: 125
    functionLinenumberEnd: 127
    functionName: protozero::basic_pbf_builder::add_bytes
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_builder.hpp
    functionUses: 0
    functionsReached:
    - pdns::ProtoZero::Message::add_bytes
    - pbf_tag_type
    linkageType: ''
    returnType: void
    signature: void add_bytes(T tag, const std::string& value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_bytes
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_builder.hpp:137,1
    - Dst: pbf_tag_type
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_builder.hpp:137,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - tag
    - value
    argTypes:
    - T
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 138
      start: 136
    functionDepth: 0
    functionLinenumber: 136
    functionLinenumberEnd: 138
    functionName: protozero::basic_pbf_builder::add_bytes
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_builder.hpp
    functionUses: 0
    functionsReached:
    - pdns::ProtoZero::Message::add_bytes
    - pbf_tag_type
    linkageType: ''
    returnType: void
    signature: void add_bytes(T tag, const char* value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::basic_pbf_builder::add_bytes_vectored
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_builder.hpp:161,1
    - Dst: pbf_tag_type
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_builder.hpp:161,1
    - Dst: std::forward<Ts>
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_builder.hpp:161,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - tag
    argTypes:
    - T
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 162
      start: 160
    functionDepth: 1
    functionLinenumber: 160
    functionLinenumberEnd: 162
    functionName: protozero::basic_pbf_builder::add_bytes_vectored
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_builder.hpp
    functionUses: 1
    functionsReached:
    - protozero::basic_pbf_builder::add_bytes_vectored
    - std::forward<Ts>
    - pbf_tag_type
    linkageType: ''
    returnType: void
    signature: void add_bytes_vectored(T tag, Ts&&... values)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_string
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_builder.hpp:172,1
    - Dst: pbf_tag_type
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_builder.hpp:172,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - tag
    - value
    - size
    argTypes:
    - T
    - char*
    - std::size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 173
      start: 171
    functionDepth: 0
    functionLinenumber: 171
    functionLinenumberEnd: 173
    functionName: protozero::basic_pbf_builder::add_string
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_builder.hpp
    functionUses: 0
    functionsReached:
    - pdns::ProtoZero::Message::add_string
    - pbf_tag_type
    linkageType: ''
    returnType: void
    signature: void add_string(T tag, const char* value, std::size_t size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_string
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_builder.hpp:182,1
    - Dst: pbf_tag_type
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_builder.hpp:182,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - tag
    - ' value'
    argTypes:
    - T
    - data_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 183
      start: 181
    functionDepth: 0
    functionLinenumber: 181
    functionLinenumberEnd: 183
    functionName: protozero::basic_pbf_builder::add_string
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_builder.hpp
    functionUses: 0
    functionsReached:
    - pdns::ProtoZero::Message::add_string
    - pbf_tag_type
    linkageType: ''
    returnType: void
    signature: void add_string(T tag, const data_view& value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_string
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_builder.hpp:192,1
    - Dst: pbf_tag_type
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_builder.hpp:192,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - tag
    - ' value'
    argTypes:
    - T
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 193
      start: 191
    functionDepth: 0
    functionLinenumber: 191
    functionLinenumberEnd: 193
    functionName: protozero::basic_pbf_builder::add_string
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_builder.hpp
    functionUses: 0
    functionsReached:
    - pdns::ProtoZero::Message::add_string
    - pbf_tag_type
    linkageType: ''
    returnType: void
    signature: void add_string(T tag, const std::string& value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_string
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_builder.hpp:203,1
    - Dst: pbf_tag_type
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_builder.hpp:203,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - tag
    - value
    argTypes:
    - T
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 204
      start: 202
    functionDepth: 0
    functionLinenumber: 202
    functionLinenumberEnd: 204
    functionName: protozero::basic_pbf_builder::add_string
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_builder.hpp
    functionUses: 0
    functionsReached:
    - pdns::ProtoZero::Message::add_string
    - pbf_tag_type
    linkageType: ''
    returnType: void
    signature: void add_string(T tag, const char* value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::basic_pbf_builder::add_message
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_builder.hpp:214,1
    - Dst: pbf_tag_type
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_builder.hpp:214,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - tag
    - value
    - size
    argTypes:
    - T
    - char*
    - std::size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 215
      start: 213
    functionDepth: 1
    functionLinenumber: 213
    functionLinenumberEnd: 215
    functionName: protozero::basic_pbf_builder::add_message
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_builder.hpp
    functionUses: 1
    functionsReached:
    - protozero::basic_pbf_builder::add_message
    - pbf_tag_type
    linkageType: ''
    returnType: void
    signature: void add_message(T tag, const char* value, std::size_t size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::basic_pbf_builder::add_message
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_builder.hpp:224,1
    - Dst: pbf_tag_type
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_builder.hpp:224,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - tag
    - ' value'
    argTypes:
    - T
    - data_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 225
      start: 223
    functionDepth: 1
    functionLinenumber: 223
    functionLinenumberEnd: 225
    functionName: protozero::basic_pbf_builder::add_message
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_builder.hpp
    functionUses: 2
    functionsReached:
    - protozero::basic_pbf_builder::add_message
    - pbf_tag_type
    linkageType: ''
    returnType: void
    signature: void add_message(T tag, const data_view& value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::basic_pbf_builder::add_message
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_builder.hpp:234,1
    - Dst: pbf_tag_type
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_builder.hpp:234,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - tag
    - ' value'
    argTypes:
    - T
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 235
      start: 233
    functionDepth: 1
    functionLinenumber: 233
    functionLinenumberEnd: 235
    functionName: protozero::basic_pbf_builder::add_message
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_builder.hpp
    functionUses: 3
    functionsReached:
    - protozero::basic_pbf_builder::add_message
    - pbf_tag_type
    linkageType: ''
    returnType: void
    signature: void add_message(T tag, const std::string& value)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 243
      start: 238
    functionDepth: 0
    functionLinenumber: 238
    functionLinenumberEnd: 243
    functionName: PROTOZERO_WRITER_WRAP_ADD_PACKED
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_builder.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PROTOZERO_WRITER_WRAP_ADD_PACKED(name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 51
    functionDepth: 0
    functionLinenumber: 51
    functionLinenumberEnd: 51
    functionName: protozero::basic_pbf_builder::basic_pbf_builder
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_builder.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void basic_pbf_builder()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' data'
    argTypes:
    - TBuffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 58
    functionDepth: 0
    functionLinenumber: 58
    functionLinenumberEnd: 60
    functionName: protozero::basic_pbf_builder::basic_pbf_builder
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_builder.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void basic_pbf_builder(TBuffer& data) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pbf_tag_type
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_builder.hpp:71,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - ' parent_writer'
    - tag
    argTypes:
    - basic_pbf_writer<TBuffer>
    - P
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 70
    functionDepth: 0
    functionLinenumber: 70
    functionLinenumberEnd: 72
    functionName: protozero::basic_pbf_builder::basic_pbf_builder
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_builder.hpp
    functionUses: 0
    functionsReached:
    - pbf_tag_type
    linkageType: ''
    returnType: void
    signature: void basic_pbf_builder(basic_pbf_writer<TBuffer>& parent_writer, P
      tag)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - name
    - ','
    - type
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 75
    functionDepth: 0
    functionLinenumber: 75
    functionLinenumberEnd: 79
    functionName: PROTOZERO_WRITER_WRAP_ADD_SCALAR
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_builder.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PROTOZERO_WRITER_WRAP_ADD_SCALAR(name, type)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_bytes
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_builder.hpp:106,1
    - Dst: pbf_tag_type
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_builder.hpp:106,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - tag
    - value
    - size
    argTypes:
    - T
    - char*
    - std::size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 107
      start: 105
    functionDepth: 0
    functionLinenumber: 105
    functionLinenumberEnd: 107
    functionName: protozero::basic_pbf_builder::add_bytes
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_builder.hpp
    functionUses: 0
    functionsReached:
    - pdns::ProtoZero::Message::add_bytes
    - pbf_tag_type
    linkageType: ''
    returnType: void
    signature: void add_bytes(T tag, const char* value, std::size_t size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_bytes
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_builder.hpp:116,1
    - Dst: pbf_tag_type
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_builder.hpp:116,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - tag
    - ' value'
    argTypes:
    - T
    - data_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 115
    functionDepth: 0
    functionLinenumber: 115
    functionLinenumberEnd: 117
    functionName: protozero::basic_pbf_builder::add_bytes
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_builder.hpp
    functionUses: 0
    functionsReached:
    - pdns::ProtoZero::Message::add_bytes
    - pbf_tag_type
    linkageType: ''
    returnType: void
    signature: void add_bytes(T tag, const data_view& value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_bytes
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_builder.hpp:126,1
    - Dst: pbf_tag_type
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_builder.hpp:126,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - tag
    - ' value'
    argTypes:
    - T
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 127
      start: 125
    functionDepth: 0
    functionLinenumber: 125
    functionLinenumberEnd: 127
    functionName: protozero::basic_pbf_builder::add_bytes
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_builder.hpp
    functionUses: 0
    functionsReached:
    - pdns::ProtoZero::Message::add_bytes
    - pbf_tag_type
    linkageType: ''
    returnType: void
    signature: void add_bytes(T tag, const std::string& value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_bytes
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_builder.hpp:137,1
    - Dst: pbf_tag_type
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_builder.hpp:137,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - tag
    - value
    argTypes:
    - T
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 138
      start: 136
    functionDepth: 0
    functionLinenumber: 136
    functionLinenumberEnd: 138
    functionName: protozero::basic_pbf_builder::add_bytes
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_builder.hpp
    functionUses: 0
    functionsReached:
    - pdns::ProtoZero::Message::add_bytes
    - pbf_tag_type
    linkageType: ''
    returnType: void
    signature: void add_bytes(T tag, const char* value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::basic_pbf_builder::add_bytes_vectored
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_builder.hpp:161,1
    - Dst: pbf_tag_type
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_builder.hpp:161,1
    - Dst: std::forward<Ts>
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_builder.hpp:161,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - tag
    argTypes:
    - T
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 162
      start: 160
    functionDepth: 1
    functionLinenumber: 160
    functionLinenumberEnd: 162
    functionName: protozero::basic_pbf_builder::add_bytes_vectored
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_builder.hpp
    functionUses: 2
    functionsReached:
    - protozero::basic_pbf_builder::add_bytes_vectored
    - std::forward<Ts>
    - pbf_tag_type
    linkageType: ''
    returnType: void
    signature: void add_bytes_vectored(T tag, Ts&&... values)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_string
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_builder.hpp:172,1
    - Dst: pbf_tag_type
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_builder.hpp:172,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - tag
    - value
    - size
    argTypes:
    - T
    - char*
    - std::size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 173
      start: 171
    functionDepth: 0
    functionLinenumber: 171
    functionLinenumberEnd: 173
    functionName: protozero::basic_pbf_builder::add_string
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_builder.hpp
    functionUses: 0
    functionsReached:
    - pdns::ProtoZero::Message::add_string
    - pbf_tag_type
    linkageType: ''
    returnType: void
    signature: void add_string(T tag, const char* value, std::size_t size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_string
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_builder.hpp:182,1
    - Dst: pbf_tag_type
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_builder.hpp:182,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - tag
    - ' value'
    argTypes:
    - T
    - data_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 183
      start: 181
    functionDepth: 0
    functionLinenumber: 181
    functionLinenumberEnd: 183
    functionName: protozero::basic_pbf_builder::add_string
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_builder.hpp
    functionUses: 0
    functionsReached:
    - pdns::ProtoZero::Message::add_string
    - pbf_tag_type
    linkageType: ''
    returnType: void
    signature: void add_string(T tag, const data_view& value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_string
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_builder.hpp:192,1
    - Dst: pbf_tag_type
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_builder.hpp:192,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - tag
    - ' value'
    argTypes:
    - T
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 193
      start: 191
    functionDepth: 0
    functionLinenumber: 191
    functionLinenumberEnd: 193
    functionName: protozero::basic_pbf_builder::add_string
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_builder.hpp
    functionUses: 0
    functionsReached:
    - pdns::ProtoZero::Message::add_string
    - pbf_tag_type
    linkageType: ''
    returnType: void
    signature: void add_string(T tag, const std::string& value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pdns::ProtoZero::Message::add_string
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_builder.hpp:203,1
    - Dst: pbf_tag_type
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_builder.hpp:203,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - tag
    - value
    argTypes:
    - T
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 204
      start: 202
    functionDepth: 0
    functionLinenumber: 202
    functionLinenumberEnd: 204
    functionName: protozero::basic_pbf_builder::add_string
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_builder.hpp
    functionUses: 0
    functionsReached:
    - pdns::ProtoZero::Message::add_string
    - pbf_tag_type
    linkageType: ''
    returnType: void
    signature: void add_string(T tag, const char* value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::basic_pbf_builder::add_message
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_builder.hpp:214,1
    - Dst: pbf_tag_type
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_builder.hpp:214,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - tag
    - value
    - size
    argTypes:
    - T
    - char*
    - std::size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 215
      start: 213
    functionDepth: 1
    functionLinenumber: 213
    functionLinenumberEnd: 215
    functionName: protozero::basic_pbf_builder::add_message
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_builder.hpp
    functionUses: 4
    functionsReached:
    - protozero::basic_pbf_builder::add_message
    - pbf_tag_type
    linkageType: ''
    returnType: void
    signature: void add_message(T tag, const char* value, std::size_t size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::basic_pbf_builder::add_message
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_builder.hpp:224,1
    - Dst: pbf_tag_type
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_builder.hpp:224,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - tag
    - ' value'
    argTypes:
    - T
    - data_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 225
      start: 223
    functionDepth: 1
    functionLinenumber: 223
    functionLinenumberEnd: 225
    functionName: protozero::basic_pbf_builder::add_message
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_builder.hpp
    functionUses: 5
    functionsReached:
    - protozero::basic_pbf_builder::add_message
    - pbf_tag_type
    linkageType: ''
    returnType: void
    signature: void add_message(T tag, const data_view& value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::basic_pbf_builder::add_message
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_builder.hpp:234,1
    - Dst: pbf_tag_type
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_builder.hpp:234,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - tag
    - ' value'
    argTypes:
    - T
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 235
      start: 233
    functionDepth: 1
    functionLinenumber: 233
    functionLinenumberEnd: 235
    functionName: protozero::basic_pbf_builder::add_message
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_builder.hpp
    functionUses: 6
    functionsReached:
    - protozero::basic_pbf_builder::add_message
    - pbf_tag_type
    linkageType: ''
    returnType: void
    signature: void add_message(T tag, const std::string& value)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 243
      start: 238
    functionDepth: 0
    functionLinenumber: 238
    functionLinenumberEnd: 243
    functionName: PROTOZERO_WRITER_WRAP_ADD_PACKED
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_builder.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PROTOZERO_WRITER_WRAP_ADD_PACKED(name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - data
    - capacity
    argTypes:
    - char*
    - std::size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 63
    functionDepth: 0
    functionLinenumber: 63
    functionLinenumberEnd: 66
    functionName: protozero::fixed_size_buffer_adaptor::fixed_size_buffer_adaptor
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/buffer_fixed.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void fixed_size_buffer_adaptor(char* data, std::size_t capacity) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::fixed_size_buffer_adaptor::data
      Src: /src/pdns/ext/protozero/include/protozero/buffer_fixed.hpp:76,1
    - Dst: protozero::fixed_size_buffer_adaptor::size
      Src: /src/pdns/ext/protozero/include/protozero/buffer_fixed.hpp:77,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' container'
    argTypes:
    - T
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 75
    functionDepth: 1
    functionLinenumber: 75
    functionLinenumberEnd: 78
    functionName: protozero::fixed_size_buffer_adaptor::fixed_size_buffer_adaptor
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/buffer_fixed.hpp
    functionUses: 0
    functionsReached:
    - protozero::fixed_size_buffer_adaptor::data
    - protozero::fixed_size_buffer_adaptor::size
    linkageType: ''
    returnType: void
    signature: void fixed_size_buffer_adaptor(T& container)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 81
    functionDepth: 0
    functionLinenumber: 81
    functionLinenumberEnd: 83
    functionName: protozero::fixed_size_buffer_adaptor::data
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/buffer_fixed.hpp
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char * data() const noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 86
    functionDepth: 0
    functionLinenumber: 86
    functionLinenumberEnd: 88
    functionName: protozero::fixed_size_buffer_adaptor::data
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/buffer_fixed.hpp
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char * data() noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 91
    functionDepth: 0
    functionLinenumber: 91
    functionLinenumberEnd: 93
    functionName: protozero::fixed_size_buffer_adaptor::capacity
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/buffer_fixed.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::size_t
    signature: std::size_t capacity() const noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 96
    functionDepth: 0
    functionLinenumber: 96
    functionLinenumberEnd: 98
    functionName: protozero::fixed_size_buffer_adaptor::size
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/buffer_fixed.hpp
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: std::size_t
    signature: std::size_t size() const noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 101
    functionDepth: 0
    functionLinenumber: 101
    functionLinenumberEnd: 103
    functionName: protozero::fixed_size_buffer_adaptor::begin
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/buffer_fixed.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char * begin() noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 106
    functionDepth: 0
    functionLinenumber: 106
    functionLinenumberEnd: 108
    functionName: protozero::fixed_size_buffer_adaptor::begin
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/buffer_fixed.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char * begin() const noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 113
      start: 111
    functionDepth: 0
    functionLinenumber: 111
    functionLinenumberEnd: 113
    functionName: protozero::fixed_size_buffer_adaptor::cbegin
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/buffer_fixed.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char * cbegin() const noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 118
      start: 116
    functionDepth: 0
    functionLinenumber: 116
    functionLinenumberEnd: 118
    functionName: protozero::fixed_size_buffer_adaptor::end
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/buffer_fixed.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char * end() noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 121
    functionDepth: 0
    functionLinenumber: 121
    functionLinenumberEnd: 123
    functionName: protozero::fixed_size_buffer_adaptor::end
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/buffer_fixed.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char * end() const noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 126
    functionDepth: 0
    functionLinenumber: 126
    functionLinenumberEnd: 128
    functionName: protozero::fixed_size_buffer_adaptor::cend
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/buffer_fixed.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char * cend() const noexcept
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::copy_n
      Src: /src/pdns/ext/protozero/include/protozero/buffer_fixed.hpp:138,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - data
    - count
    argTypes:
    - char*
    - std::size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 134
    functionDepth: 0
    functionLinenumber: 134
    functionLinenumberEnd: 140
    functionName: protozero::fixed_size_buffer_adaptor::append
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/buffer_fixed.hpp
    functionUses: 0
    functionsReached:
    - std::copy_n
    linkageType: ''
    returnType: void
    signature: void append(const char* data, std::size_t count)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::fill_n
      Src: /src/pdns/ext/protozero/include/protozero/buffer_fixed.hpp:146,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - count
    argTypes:
    - std::size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 148
      start: 142
    functionDepth: 0
    functionLinenumber: 142
    functionLinenumberEnd: 148
    functionName: protozero::fixed_size_buffer_adaptor::append_zeros
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/buffer_fixed.hpp
    functionUses: 0
    functionsReached:
    - std::fill_n
    linkageType: ''
    returnType: void
    signature: void append_zeros(std::size_t count)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: protozero_assert
      Src: /src/pdns/ext/protozero/include/protozero/buffer_fixed.hpp:151,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - size
    argTypes:
    - std::size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 156
      start: 150
    functionDepth: 1
    functionLinenumber: 150
    functionLinenumberEnd: 156
    functionName: protozero::fixed_size_buffer_adaptor::resize
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/buffer_fixed.hpp
    functionUses: 0
    functionsReached:
    - protozero_assert
    linkageType: ''
    returnType: void
    signature: void resize(std::size_t size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero_assert
      Src: /src/pdns/ext/protozero/include/protozero/buffer_fixed.hpp:159,1
    - Dst: protozero_assert
      Src: /src/pdns/ext/protozero/include/protozero/buffer_fixed.hpp:160,1
    - Dst: protozero_assert
      Src: /src/pdns/ext/protozero/include/protozero/buffer_fixed.hpp:161,1
    - Dst: std::copy
      Src: /src/pdns/ext/protozero/include/protozero/buffer_fixed.hpp:162,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - from
    - to
    argTypes:
    - std::size_t
    - std::size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 164
      start: 158
    functionDepth: 1
    functionLinenumber: 158
    functionLinenumberEnd: 164
    functionName: protozero::fixed_size_buffer_adaptor::erase_range
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/buffer_fixed.hpp
    functionUses: 0
    functionsReached:
    - protozero_assert
    - std::copy
    linkageType: ''
    returnType: void
    signature: void erase_range(std::size_t from, std::size_t to)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero_assert
      Src: /src/pdns/ext/protozero/include/protozero/buffer_fixed.hpp:167,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - pos
    argTypes:
    - std::size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 169
      start: 166
    functionDepth: 1
    functionLinenumber: 166
    functionLinenumberEnd: 169
    functionName: protozero::fixed_size_buffer_adaptor::at_pos
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/buffer_fixed.hpp
    functionUses: 0
    functionsReached:
    - protozero_assert
    linkageType: ''
    returnType: char
    signature: char * at_pos(std::size_t pos)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - ch
    argTypes:
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 176
      start: 171
    functionDepth: 0
    functionLinenumber: 171
    functionLinenumberEnd: 176
    functionName: protozero::fixed_size_buffer_adaptor::push_back
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/buffer_fixed.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void push_back(char ch)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fixed_size_buffer_adaptor*::size
      Src: /src/pdns/ext/protozero/include/protozero/buffer_fixed.hpp:186,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - buffer
    argTypes:
    - fixed_size_buffer_adaptor*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 187
      start: 185
    functionDepth: 0
    functionLinenumber: 185
    functionLinenumberEnd: 187
    functionName: protozero::size
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/buffer_fixed.hpp
    functionUses: 0
    functionsReached:
    - fixed_size_buffer_adaptor*::size
    linkageType: ''
    returnType: std::size_t
    signature: std::size_t size(const fixed_size_buffer_adaptor* buffer) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fixed_size_buffer_adaptor*::append
      Src: /src/pdns/ext/protozero/include/protozero/buffer_fixed.hpp:190,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - buffer
    - data
    - count
    argTypes:
    - fixed_size_buffer_adaptor*
    - char*
    - std::size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 191
      start: 189
    functionDepth: 0
    functionLinenumber: 189
    functionLinenumberEnd: 191
    functionName: protozero::append
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/buffer_fixed.hpp
    functionUses: 0
    functionsReached:
    - fixed_size_buffer_adaptor*::append
    linkageType: ''
    returnType: void
    signature: void append(fixed_size_buffer_adaptor* buffer, const char* data, std::size_t
      count)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fixed_size_buffer_adaptor*::append_zeros
      Src: /src/pdns/ext/protozero/include/protozero/buffer_fixed.hpp:194,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - buffer
    - count
    argTypes:
    - fixed_size_buffer_adaptor*
    - std::size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 195
      start: 193
    functionDepth: 0
    functionLinenumber: 193
    functionLinenumberEnd: 195
    functionName: protozero::append_zeros
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/buffer_fixed.hpp
    functionUses: 0
    functionsReached:
    - fixed_size_buffer_adaptor*::append_zeros
    linkageType: ''
    returnType: void
    signature: void append_zeros(fixed_size_buffer_adaptor* buffer, std::size_t count)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fixed_size_buffer_adaptor*::resize
      Src: /src/pdns/ext/protozero/include/protozero/buffer_fixed.hpp:198,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - buffer
    - size
    argTypes:
    - fixed_size_buffer_adaptor*
    - std::size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 199
      start: 197
    functionDepth: 2
    functionLinenumber: 197
    functionLinenumberEnd: 199
    functionName: protozero::resize
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/buffer_fixed.hpp
    functionUses: 0
    functionsReached:
    - fixed_size_buffer_adaptor*::resize
    linkageType: ''
    returnType: void
    signature: void resize(fixed_size_buffer_adaptor* buffer, std::size_t size)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 203
      start: 201
    functionDepth: 0
    functionLinenumber: 201
    functionLinenumberEnd: 203
    functionName: protozero::reserve_additional
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/buffer_fixed.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void reserve_additional(fixed_size_buffer_adaptor* /*buffer*/, std::size_t
      /*size*/)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fixed_size_buffer_adaptor*::erase_range
      Src: /src/pdns/ext/protozero/include/protozero/buffer_fixed.hpp:206,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - buffer
    - from
    - to
    argTypes:
    - fixed_size_buffer_adaptor*
    - std::size_t
    - std::size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 207
      start: 205
    functionDepth: 0
    functionLinenumber: 205
    functionLinenumberEnd: 207
    functionName: protozero::erase_range
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/buffer_fixed.hpp
    functionUses: 0
    functionsReached:
    - fixed_size_buffer_adaptor*::erase_range
    linkageType: ''
    returnType: void
    signature: void erase_range(fixed_size_buffer_adaptor* buffer, std::size_t from,
      std::size_t to)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fixed_size_buffer_adaptor*::at_pos
      Src: /src/pdns/ext/protozero/include/protozero/buffer_fixed.hpp:210,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - buffer
    - pos
    argTypes:
    - fixed_size_buffer_adaptor*
    - std::size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 211
      start: 209
    functionDepth: 0
    functionLinenumber: 209
    functionLinenumberEnd: 211
    functionName: protozero::at_pos
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/buffer_fixed.hpp
    functionUses: 0
    functionsReached:
    - fixed_size_buffer_adaptor*::at_pos
    linkageType: ''
    returnType: char
    signature: char * at_pos(fixed_size_buffer_adaptor* buffer, std::size_t pos)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fixed_size_buffer_adaptor*::push_back
      Src: /src/pdns/ext/protozero/include/protozero/buffer_fixed.hpp:214,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - buffer
    - ch
    argTypes:
    - fixed_size_buffer_adaptor*
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 215
      start: 213
    functionDepth: 0
    functionLinenumber: 213
    functionLinenumberEnd: 215
    functionName: protozero::push_back
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/buffer_fixed.hpp
    functionUses: 0
    functionsReached:
    - fixed_size_buffer_adaptor*::push_back
    linkageType: ''
    returnType: void
    signature: void push_back(fixed_size_buffer_adaptor* buffer, char ch)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - data
    - capacity
    argTypes:
    - char*
    - std::size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 63
    functionDepth: 0
    functionLinenumber: 63
    functionLinenumberEnd: 66
    functionName: protozero::fixed_size_buffer_adaptor::fixed_size_buffer_adaptor
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/buffer_fixed.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void fixed_size_buffer_adaptor(char* data, std::size_t capacity) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::fixed_size_buffer_adaptor::data
      Src: /src/pdns/ext/protozero/include/protozero/buffer_fixed.hpp:76,1
    - Dst: protozero::fixed_size_buffer_adaptor::size
      Src: /src/pdns/ext/protozero/include/protozero/buffer_fixed.hpp:77,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' container'
    argTypes:
    - T
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 75
    functionDepth: 1
    functionLinenumber: 75
    functionLinenumberEnd: 78
    functionName: protozero::fixed_size_buffer_adaptor::fixed_size_buffer_adaptor
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/buffer_fixed.hpp
    functionUses: 0
    functionsReached:
    - protozero::fixed_size_buffer_adaptor::data
    - protozero::fixed_size_buffer_adaptor::size
    linkageType: ''
    returnType: void
    signature: void fixed_size_buffer_adaptor(T& container)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 81
    functionDepth: 0
    functionLinenumber: 81
    functionLinenumberEnd: 83
    functionName: protozero::fixed_size_buffer_adaptor::data
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/buffer_fixed.hpp
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char * data() const noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 86
    functionDepth: 0
    functionLinenumber: 86
    functionLinenumberEnd: 88
    functionName: protozero::fixed_size_buffer_adaptor::data
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/buffer_fixed.hpp
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char * data() noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 91
    functionDepth: 0
    functionLinenumber: 91
    functionLinenumberEnd: 93
    functionName: protozero::fixed_size_buffer_adaptor::capacity
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/buffer_fixed.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::size_t
    signature: std::size_t capacity() const noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 96
    functionDepth: 0
    functionLinenumber: 96
    functionLinenumberEnd: 98
    functionName: protozero::fixed_size_buffer_adaptor::size
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/buffer_fixed.hpp
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: std::size_t
    signature: std::size_t size() const noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 101
    functionDepth: 0
    functionLinenumber: 101
    functionLinenumberEnd: 103
    functionName: protozero::fixed_size_buffer_adaptor::begin
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/buffer_fixed.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char * begin() noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 106
    functionDepth: 0
    functionLinenumber: 106
    functionLinenumberEnd: 108
    functionName: protozero::fixed_size_buffer_adaptor::begin
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/buffer_fixed.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char * begin() const noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 113
      start: 111
    functionDepth: 0
    functionLinenumber: 111
    functionLinenumberEnd: 113
    functionName: protozero::fixed_size_buffer_adaptor::cbegin
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/buffer_fixed.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char * cbegin() const noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 118
      start: 116
    functionDepth: 0
    functionLinenumber: 116
    functionLinenumberEnd: 118
    functionName: protozero::fixed_size_buffer_adaptor::end
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/buffer_fixed.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char * end() noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 121
    functionDepth: 0
    functionLinenumber: 121
    functionLinenumberEnd: 123
    functionName: protozero::fixed_size_buffer_adaptor::end
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/buffer_fixed.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char * end() const noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 126
    functionDepth: 0
    functionLinenumber: 126
    functionLinenumberEnd: 128
    functionName: protozero::fixed_size_buffer_adaptor::cend
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/buffer_fixed.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char * cend() const noexcept
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::copy_n
      Src: /src/pdns/ext/protozero/include/protozero/buffer_fixed.hpp:138,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - data
    - count
    argTypes:
    - char*
    - std::size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 134
    functionDepth: 0
    functionLinenumber: 134
    functionLinenumberEnd: 140
    functionName: protozero::fixed_size_buffer_adaptor::append
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/buffer_fixed.hpp
    functionUses: 0
    functionsReached:
    - std::copy_n
    linkageType: ''
    returnType: void
    signature: void append(const char* data, std::size_t count)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::fill_n
      Src: /src/pdns/ext/protozero/include/protozero/buffer_fixed.hpp:146,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - count
    argTypes:
    - std::size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 148
      start: 142
    functionDepth: 0
    functionLinenumber: 142
    functionLinenumberEnd: 148
    functionName: protozero::fixed_size_buffer_adaptor::append_zeros
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/buffer_fixed.hpp
    functionUses: 0
    functionsReached:
    - std::fill_n
    linkageType: ''
    returnType: void
    signature: void append_zeros(std::size_t count)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: protozero_assert
      Src: /src/pdns/ext/protozero/include/protozero/buffer_fixed.hpp:151,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - size
    argTypes:
    - std::size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 156
      start: 150
    functionDepth: 1
    functionLinenumber: 150
    functionLinenumberEnd: 156
    functionName: protozero::fixed_size_buffer_adaptor::resize
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/buffer_fixed.hpp
    functionUses: 0
    functionsReached:
    - protozero_assert
    linkageType: ''
    returnType: void
    signature: void resize(std::size_t size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero_assert
      Src: /src/pdns/ext/protozero/include/protozero/buffer_fixed.hpp:159,1
    - Dst: protozero_assert
      Src: /src/pdns/ext/protozero/include/protozero/buffer_fixed.hpp:160,1
    - Dst: protozero_assert
      Src: /src/pdns/ext/protozero/include/protozero/buffer_fixed.hpp:161,1
    - Dst: std::copy
      Src: /src/pdns/ext/protozero/include/protozero/buffer_fixed.hpp:162,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - from
    - to
    argTypes:
    - std::size_t
    - std::size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 164
      start: 158
    functionDepth: 1
    functionLinenumber: 158
    functionLinenumberEnd: 164
    functionName: protozero::fixed_size_buffer_adaptor::erase_range
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/buffer_fixed.hpp
    functionUses: 0
    functionsReached:
    - protozero_assert
    - std::copy
    linkageType: ''
    returnType: void
    signature: void erase_range(std::size_t from, std::size_t to)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero_assert
      Src: /src/pdns/ext/protozero/include/protozero/buffer_fixed.hpp:167,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - pos
    argTypes:
    - std::size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 169
      start: 166
    functionDepth: 1
    functionLinenumber: 166
    functionLinenumberEnd: 169
    functionName: protozero::fixed_size_buffer_adaptor::at_pos
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/buffer_fixed.hpp
    functionUses: 0
    functionsReached:
    - protozero_assert
    linkageType: ''
    returnType: char
    signature: char * at_pos(std::size_t pos)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - ch
    argTypes:
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 176
      start: 171
    functionDepth: 0
    functionLinenumber: 171
    functionLinenumberEnd: 176
    functionName: protozero::fixed_size_buffer_adaptor::push_back
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/buffer_fixed.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void push_back(char ch)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fixed_size_buffer_adaptor*::size
      Src: /src/pdns/ext/protozero/include/protozero/buffer_fixed.hpp:186,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - buffer
    argTypes:
    - fixed_size_buffer_adaptor*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 187
      start: 185
    functionDepth: 0
    functionLinenumber: 185
    functionLinenumberEnd: 187
    functionName: protozero::size
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/buffer_fixed.hpp
    functionUses: 0
    functionsReached:
    - fixed_size_buffer_adaptor*::size
    linkageType: ''
    returnType: std::size_t
    signature: std::size_t size(const fixed_size_buffer_adaptor* buffer) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fixed_size_buffer_adaptor*::append
      Src: /src/pdns/ext/protozero/include/protozero/buffer_fixed.hpp:190,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - buffer
    - data
    - count
    argTypes:
    - fixed_size_buffer_adaptor*
    - char*
    - std::size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 191
      start: 189
    functionDepth: 0
    functionLinenumber: 189
    functionLinenumberEnd: 191
    functionName: protozero::append
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/buffer_fixed.hpp
    functionUses: 0
    functionsReached:
    - fixed_size_buffer_adaptor*::append
    linkageType: ''
    returnType: void
    signature: void append(fixed_size_buffer_adaptor* buffer, const char* data, std::size_t
      count)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fixed_size_buffer_adaptor*::append_zeros
      Src: /src/pdns/ext/protozero/include/protozero/buffer_fixed.hpp:194,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - buffer
    - count
    argTypes:
    - fixed_size_buffer_adaptor*
    - std::size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 195
      start: 193
    functionDepth: 0
    functionLinenumber: 193
    functionLinenumberEnd: 195
    functionName: protozero::append_zeros
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/buffer_fixed.hpp
    functionUses: 0
    functionsReached:
    - fixed_size_buffer_adaptor*::append_zeros
    linkageType: ''
    returnType: void
    signature: void append_zeros(fixed_size_buffer_adaptor* buffer, std::size_t count)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fixed_size_buffer_adaptor*::resize
      Src: /src/pdns/ext/protozero/include/protozero/buffer_fixed.hpp:198,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - buffer
    - size
    argTypes:
    - fixed_size_buffer_adaptor*
    - std::size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 199
      start: 197
    functionDepth: 2
    functionLinenumber: 197
    functionLinenumberEnd: 199
    functionName: protozero::resize
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/buffer_fixed.hpp
    functionUses: 0
    functionsReached:
    - fixed_size_buffer_adaptor*::resize
    linkageType: ''
    returnType: void
    signature: void resize(fixed_size_buffer_adaptor* buffer, std::size_t size)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 203
      start: 201
    functionDepth: 0
    functionLinenumber: 201
    functionLinenumberEnd: 203
    functionName: protozero::reserve_additional
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/buffer_fixed.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void reserve_additional(fixed_size_buffer_adaptor* /*buffer*/, std::size_t
      /*size*/)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fixed_size_buffer_adaptor*::erase_range
      Src: /src/pdns/ext/protozero/include/protozero/buffer_fixed.hpp:206,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - buffer
    - from
    - to
    argTypes:
    - fixed_size_buffer_adaptor*
    - std::size_t
    - std::size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 207
      start: 205
    functionDepth: 0
    functionLinenumber: 205
    functionLinenumberEnd: 207
    functionName: protozero::erase_range
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/buffer_fixed.hpp
    functionUses: 0
    functionsReached:
    - fixed_size_buffer_adaptor*::erase_range
    linkageType: ''
    returnType: void
    signature: void erase_range(fixed_size_buffer_adaptor* buffer, std::size_t from,
      std::size_t to)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fixed_size_buffer_adaptor*::at_pos
      Src: /src/pdns/ext/protozero/include/protozero/buffer_fixed.hpp:210,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - buffer
    - pos
    argTypes:
    - fixed_size_buffer_adaptor*
    - std::size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 211
      start: 209
    functionDepth: 0
    functionLinenumber: 209
    functionLinenumberEnd: 211
    functionName: protozero::at_pos
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/buffer_fixed.hpp
    functionUses: 0
    functionsReached:
    - fixed_size_buffer_adaptor*::at_pos
    linkageType: ''
    returnType: char
    signature: char * at_pos(fixed_size_buffer_adaptor* buffer, std::size_t pos)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fixed_size_buffer_adaptor*::push_back
      Src: /src/pdns/ext/protozero/include/protozero/buffer_fixed.hpp:214,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - buffer
    - ch
    argTypes:
    - fixed_size_buffer_adaptor*
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 215
      start: 213
    functionDepth: 0
    functionLinenumber: 213
    functionLinenumberEnd: 215
    functionName: protozero::push_back
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/buffer_fixed.hpp
    functionUses: 0
    functionsReached:
    - fixed_size_buffer_adaptor*::push_back
    linkageType: ''
    returnType: void
    signature: void push_back(fixed_size_buffer_adaptor* buffer, char ch)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero_assert
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:81,1
    - Dst: protozero_assert
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:82,1
    - Dst: add_varint_to_buffer
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:83,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - value
    argTypes:
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 80
    functionDepth: 1
    functionLinenumber: 80
    functionLinenumberEnd: 84
    functionName: protozero::basic_pbf_writer::add_varint
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached:
    - protozero_assert
    - add_varint_to_buffer
    linkageType: ''
    returnType: void
    signature: void add_varint(uint64_t value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero_assert
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:87,1
    - Dst: static_cast<uint32_t>
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:88,1
    - Dst: protozero::basic_pbf_writer::add_varint
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:89,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 3
    argCount: 2
    argNames:
    - tag
    - type
    argTypes:
    - pbf_tag_type
    - pbf_wire_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 86
    functionDepth: 2
    functionLinenumber: 86
    functionLinenumberEnd: 90
    functionName: protozero::basic_pbf_writer::add_field
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached:
    - protozero::basic_pbf_writer::add_varint
    - protozero_assert
    - static_cast<uint32_t>
    linkageType: ''
    returnType: void
    signature: void add_field(pbf_tag_type tag, pbf_wire_type type)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::basic_pbf_writer::add_field
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:93,1
    - Dst: protozero::basic_pbf_writer::add_varint
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:94,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - tag
    - value
    argTypes:
    - pbf_tag_type
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 92
    functionDepth: 3
    functionLinenumber: 92
    functionLinenumberEnd: 95
    functionName: protozero::basic_pbf_writer::add_tagged_varint
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached:
    - protozero::basic_pbf_writer::add_varint
    - protozero::basic_pbf_writer::add_field
    linkageType: ''
    returnType: void
    signature: void add_tagged_varint(pbf_tag_type tag, uint64_t value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero_assert
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:99,1
    - Dst: protozero_assert
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:100,1
    - Dst: byteswap_inplace
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:102,1
    - Dst: protozero::append
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:104,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:104,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - value
    argTypes:
    - T
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 98
    functionDepth: 1
    functionLinenumber: 98
    functionLinenumberEnd: 105
    functionName: protozero::basic_pbf_writer::add_fixed
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached:
    - protozero_assert
    - reinterpret_cast<const char*>
    - protozero::append
    - byteswap_inplace
    linkageType: ''
    returnType: void
    signature: void add_fixed(T value)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: basic_pbf_writer::add_fixed
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:116,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - tag
    - first
    - last
    argTypes:
    - pbf_tag_type
    - It
    - It
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 118
      start: 108
    functionDepth: 0
    functionLinenumber: 108
    functionLinenumberEnd: 118
    functionName: protozero::basic_pbf_writer::add_packed_fixed
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached:
    - basic_pbf_writer::add_fixed
    linkageType: ''
    returnType: void
    signature: void add_packed_fixed(pbf_tag_type tag, It first, It last, std::input_iterator_tag
      /*unused*/)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::distance
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:126,1
    - Dst: protozero::basic_pbf_writer::add_length_varint
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:127,1
    - Dst: pbf_length_type
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:127,1
    - Dst: protozero::basic_pbf_writer::reserve
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:128,1
    - Dst: std::size_t
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:128,1
    - Dst: protozero::basic_pbf_writer::add_fixed
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:131,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 3
    argNames:
    - tag
    - first
    - last
    argTypes:
    - pbf_tag_type
    - It
    - It
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 133
      start: 121
    functionDepth: 2
    functionLinenumber: 121
    functionLinenumberEnd: 133
    functionName: protozero::basic_pbf_writer::add_packed_fixed
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached:
    - std::distance
    - protozero::basic_pbf_writer::add_length_varint
    - protozero::basic_pbf_writer::reserve
    - pbf_length_type
    - std::size_t
    - protozero::basic_pbf_writer::add_fixed
    linkageType: ''
    returnType: void
    signature: void add_packed_fixed(pbf_tag_type tag, It first, It last, std::forward_iterator_tag
      /*unused*/)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: basic_pbf_writer::add_varint
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:144,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - tag
    - first
    - last
    argTypes:
    - pbf_tag_type
    - It
    - It
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 146
      start: 136
    functionDepth: 0
    functionLinenumber: 136
    functionLinenumberEnd: 146
    functionName: protozero::basic_pbf_writer::add_packed_varint
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached:
    - basic_pbf_writer::add_varint
    linkageType: ''
    returnType: void
    signature: void add_packed_varint(pbf_tag_type tag, It first, It last)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: basic_pbf_writer::add_varint
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:157,1
    - Dst: encode_zigzag64
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:157,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - tag
    - first
    - last
    argTypes:
    - pbf_tag_type
    - It
    - It
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 159
      start: 149
    functionDepth: 0
    functionLinenumber: 149
    functionLinenumberEnd: 159
    functionName: protozero::basic_pbf_writer::add_packed_svarint
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached:
    - basic_pbf_writer::add_varint
    - encode_zigzag64
    linkageType: ''
    returnType: void
    signature: void add_packed_svarint(pbf_tag_type tag, It first, It last)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: protozero_assert
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:176,1
    - Dst: protozero_assert
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:177,1
    - Dst: size
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:179,1
    - Dst: protozero::basic_pbf_writer::add_field
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:180,1
    - Dst: protozero::append_zeros
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:181,1
    - Dst: std::size_t
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:181,1
    - Dst: protozero::basic_pbf_writer::add_length_varint
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:184,1
    - Dst: static_cast<pbf_length_type>
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:184,1
    - Dst: protozero::basic_pbf_writer::reserve
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:185,1
    - Dst: size
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:187,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 2
    argNames:
    - tag
    - size
    argTypes:
    - pbf_tag_type
    - std::size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 188
      start: 175
    functionDepth: 3
    functionLinenumber: 175
    functionLinenumberEnd: 188
    functionName: protozero::basic_pbf_writer::open_submessage
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached:
    - protozero::basic_pbf_writer::add_length_varint
    - protozero_assert
    - static_cast<pbf_length_type>
    - size
    - protozero::basic_pbf_writer::reserve
    - protozero::append_zeros
    - std::size_t
    - protozero::basic_pbf_writer::add_field
    linkageType: ''
    returnType: void
    signature: void open_submessage(pbf_tag_type tag, std::size_t size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero_assert
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:191,1
    - Dst: protozero_assert
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:192,1
    - Dst: protozero_assert
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:193,1
    - Dst: StatRing<T,Comp>::resize
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:194,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 196
      start: 190
    functionDepth: 1
    functionLinenumber: 190
    functionLinenumberEnd: 196
    functionName: protozero::basic_pbf_writer::rollback_submessage
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached:
    - protozero_assert
    - StatRing<T,Comp>::resize
    linkageType: ''
    returnType: void
    signature: void rollback_submessage()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero_assert
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:199,1
    - Dst: protozero_assert
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:200,1
    - Dst: protozero_assert
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:201,1
    - Dst: pbf_length_type
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:202,1
    - Dst: size
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:202,1
    - Dst: protozero_assert
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:204,1
    - Dst: size
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:204,1
    - Dst: add_varint_to_buffer
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:205,1
    - Dst: protozero::at_pos
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:205,1
    - Dst: protozero::erase_range
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:207,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 209
      start: 198
    functionDepth: 1
    functionLinenumber: 198
    functionLinenumberEnd: 209
    functionName: protozero::basic_pbf_writer::commit_submessage
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached:
    - protozero_assert
    - add_varint_to_buffer
    - size
    - protozero::at_pos
    - pbf_length_type
    - protozero::erase_range
    linkageType: ''
    returnType: void
    signature: void commit_submessage()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: protozero_assert
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:212,1
    - Dst: size
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:216,1
    - Dst: protozero::basic_pbf_writer::rollback_submessage
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:217,1
    - Dst: protozero::basic_pbf_writer::commit_submessage
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:219,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 221
      start: 211
    functionDepth: 2
    functionLinenumber: 211
    functionLinenumberEnd: 221
    functionName: protozero::basic_pbf_writer::close_submessage
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached:
    - protozero::basic_pbf_writer::commit_submessage
    - protozero_assert
    - protozero::basic_pbf_writer::rollback_submessage
    - size
    linkageType: ''
    returnType: void
    signature: void close_submessage()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::basic_pbf_writer::add_field
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:224,1
    - Dst: protozero::basic_pbf_writer::add_varint
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:225,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - tag
    - length
    argTypes:
    - pbf_tag_type
    - pbf_length_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 226
      start: 223
    functionDepth: 3
    functionLinenumber: 223
    functionLinenumberEnd: 226
    functionName: protozero::basic_pbf_writer::add_length_varint
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 2
    functionsReached:
    - protozero::basic_pbf_writer::add_varint
    - protozero::basic_pbf_writer::add_field
    linkageType: ''
    returnType: void
    signature: void add_length_varint(pbf_tag_type tag, pbf_length_type length)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' buffer'
    argTypes:
    - TBuffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 238
      start: 236
    functionDepth: 0
    functionLinenumber: 236
    functionLinenumberEnd: 238
    functionName: protozero::basic_pbf_writer::basic_pbf_writer
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 14
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void basic_pbf_writer(TBuffer& buffer) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 244
      start: 244
    functionDepth: 0
    functionLinenumber: 244
    functionLinenumberEnd: 244
    functionName: protozero::basic_pbf_writer::basic_pbf_writer
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 14
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void basic_pbf_writer() noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::basic_pbf_writer::open_submessage
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:259,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' parent_writer'
    - tag
    argTypes:
    - basic_pbf_writer
    - pbf_tag_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 260
      start: 256
    functionDepth: 4
    functionLinenumber: 256
    functionLinenumberEnd: 260
    functionName: protozero::basic_pbf_writer::basic_pbf_writer
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 14
    functionsReached:
    - protozero::basic_pbf_writer::open_submessage
    linkageType: ''
    returnType: void
    signature: void basic_pbf_writer(basic_pbf_writer& parent_writer, pbf_tag_type
      tag, std::size_t size = 0)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 263
      start: 263
    functionDepth: 0
    functionLinenumber: 263
    functionLinenumberEnd: 263
    functionName: protozero::basic_pbf_writer::basic_pbf_writer
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 14
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void basic_pbf_writer(const basic_pbf_writer&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 266
      start: 266
    functionDepth: 0
    functionLinenumber: 266
    functionLinenumberEnd: 266
    functionName: '& operator=(const basic_pbf_writer&)'
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: basic_pbf_writer
    signature: basic_pbf_writer & operator=(const basic_pbf_writer&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ' other'
    argTypes:
    - basic_pbf_writer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 281
      start: 272
    functionDepth: 0
    functionLinenumber: 272
    functionLinenumberEnd: 281
    functionName: protozero::basic_pbf_writer::basic_pbf_writer
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 14
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void basic_pbf_writer(basic_pbf_writer&& other) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - ' other'
    argTypes:
    - basic_pbf_writer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 297
      start: 287
    functionDepth: 0
    functionLinenumber: 287
    functionLinenumberEnd: 297
    functionName: '& operator=(basic_pbf_writer&& other) noexcept'
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: basic_pbf_writer
    signature: basic_pbf_writer & operator=(basic_pbf_writer&& other) noexcept
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: close_submessage
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:302,1
    - Dst: std::terminate
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:308,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 310
      start: 299
    functionDepth: 0
    functionLinenumber: 299
    functionLinenumberEnd: 310
    functionName: ~basic_pbf_writer() noexcept
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached:
    - close_submessage
    - std::terminate
    linkageType: ''
    returnType: void
    signature: void ~basic_pbf_writer() noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 319
      start: 317
    functionDepth: 0
    functionLinenumber: 317
    functionLinenumberEnd: 319
    functionName: protozero::basic_pbf_writer::valid
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool valid() const noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::basic_pbf_writer::swap
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:328,1
    - Dst: protozero::basic_pbf_writer::swap
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:329,1
    - Dst: protozero::basic_pbf_writer::swap
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:330,1
    - Dst: protozero::basic_pbf_writer::swap
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:331,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - ' other'
    argTypes:
    - basic_pbf_writer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 332
      start: 326
    functionDepth: 1
    functionLinenumber: 326
    functionLinenumberEnd: 332
    functionName: protozero::basic_pbf_writer::swap
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 1
    functionsReached:
    - protozero::basic_pbf_writer::swap
    linkageType: ''
    returnType: void
    signature: void swap(basic_pbf_writer& other) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero_assert
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:343,1
    - Dst: protozero::reserve_additional
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:344,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - size
    argTypes:
    - std::size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 345
      start: 342
    functionDepth: 1
    functionLinenumber: 342
    functionLinenumberEnd: 345
    functionName: protozero::basic_pbf_writer::reserve
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 2
    functionsReached:
    - protozero_assert
    - protozero::reserve_additional
    linkageType: ''
    returnType: void
    signature: void reserve(std::size_t size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero_assert
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:356,1
    - Dst: protozero_assert
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:357,1
    - Dst: protozero::basic_pbf_writer::close_submessage
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:358,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 361
      start: 355
    functionDepth: 3
    functionLinenumber: 355
    functionLinenumberEnd: 361
    functionName: protozero::basic_pbf_writer::commit
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached:
    - protozero::basic_pbf_writer::close_submessage
    - protozero_assert
    linkageType: ''
    returnType: void
    signature: void commit()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero_assert
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:372,1
    - Dst: protozero_assert
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:373,1
    - Dst: protozero::basic_pbf_writer::rollback_submessage
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:374,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 377
      start: 371
    functionDepth: 2
    functionLinenumber: 371
    functionLinenumberEnd: 377
    functionName: protozero::basic_pbf_writer::rollback
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached:
    - protozero_assert
    - protozero::basic_pbf_writer::rollback_submessage
    linkageType: ''
    returnType: void
    signature: void rollback()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::basic_pbf_writer::add_field
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:391,1
    - Dst: protozero_assert
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:392,1
    - Dst: protozero_assert
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:393,1
    - Dst: push_back
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:394,1
    - Dst: static_cast<char>
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:394,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - tag
    - value
    argTypes:
    - pbf_tag_type
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 395
      start: 390
    functionDepth: 3
    functionLinenumber: 390
    functionLinenumberEnd: 395
    functionName: protozero::basic_pbf_writer::add_bool
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached:
    - push_back
    - protozero_assert
    - protozero::basic_pbf_writer::add_field
    - static_cast<char>
    linkageType: ''
    returnType: void
    signature: void add_bool(pbf_tag_type tag, bool value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::basic_pbf_writer::add_tagged_varint
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:404,1
    - Dst: static_cast<uint64_t>
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:404,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - tag
    - value
    argTypes:
    - pbf_tag_type
    - int32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 405
      start: 403
    functionDepth: 4
    functionLinenumber: 403
    functionLinenumberEnd: 405
    functionName: protozero::basic_pbf_writer::add_enum
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached:
    - protozero::basic_pbf_writer::add_tagged_varint
    - static_cast<uint64_t>
    linkageType: ''
    returnType: void
    signature: void add_enum(pbf_tag_type tag, int32_t value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::basic_pbf_writer::add_tagged_varint
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:414,1
    - Dst: static_cast<uint64_t>
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:414,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - tag
    - value
    argTypes:
    - pbf_tag_type
    - int32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 415
      start: 413
    functionDepth: 4
    functionLinenumber: 413
    functionLinenumberEnd: 415
    functionName: protozero::basic_pbf_writer::add_int32
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached:
    - protozero::basic_pbf_writer::add_tagged_varint
    - static_cast<uint64_t>
    linkageType: ''
    returnType: void
    signature: void add_int32(pbf_tag_type tag, int32_t value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::basic_pbf_writer::add_tagged_varint
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:424,1
    - Dst: encode_zigzag32
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:424,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - tag
    - value
    argTypes:
    - pbf_tag_type
    - int32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 425
      start: 423
    functionDepth: 4
    functionLinenumber: 423
    functionLinenumberEnd: 425
    functionName: protozero::basic_pbf_writer::add_sint32
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached:
    - encode_zigzag32
    - protozero::basic_pbf_writer::add_tagged_varint
    linkageType: ''
    returnType: void
    signature: void add_sint32(pbf_tag_type tag, int32_t value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::basic_pbf_writer::add_tagged_varint
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:434,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - tag
    - value
    argTypes:
    - pbf_tag_type
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 435
      start: 433
    functionDepth: 4
    functionLinenumber: 433
    functionLinenumberEnd: 435
    functionName: protozero::basic_pbf_writer::add_uint32
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached:
    - protozero::basic_pbf_writer::add_tagged_varint
    linkageType: ''
    returnType: void
    signature: void add_uint32(pbf_tag_type tag, uint32_t value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::basic_pbf_writer::add_tagged_varint
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:444,1
    - Dst: static_cast<uint64_t>
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:444,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - tag
    - value
    argTypes:
    - pbf_tag_type
    - int64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 445
      start: 443
    functionDepth: 4
    functionLinenumber: 443
    functionLinenumberEnd: 445
    functionName: protozero::basic_pbf_writer::add_int64
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached:
    - protozero::basic_pbf_writer::add_tagged_varint
    - static_cast<uint64_t>
    linkageType: ''
    returnType: void
    signature: void add_int64(pbf_tag_type tag, int64_t value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::basic_pbf_writer::add_tagged_varint
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:454,1
    - Dst: encode_zigzag64
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:454,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - tag
    - value
    argTypes:
    - pbf_tag_type
    - int64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 455
      start: 453
    functionDepth: 4
    functionLinenumber: 453
    functionLinenumberEnd: 455
    functionName: protozero::basic_pbf_writer::add_sint64
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached:
    - protozero::basic_pbf_writer::add_tagged_varint
    - encode_zigzag64
    linkageType: ''
    returnType: void
    signature: void add_sint64(pbf_tag_type tag, int64_t value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::basic_pbf_writer::add_tagged_varint
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:464,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - tag
    - value
    argTypes:
    - pbf_tag_type
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 465
      start: 463
    functionDepth: 4
    functionLinenumber: 463
    functionLinenumberEnd: 465
    functionName: protozero::basic_pbf_writer::add_uint64
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached:
    - protozero::basic_pbf_writer::add_tagged_varint
    linkageType: ''
    returnType: void
    signature: void add_uint64(pbf_tag_type tag, uint64_t value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::basic_pbf_writer::add_field
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:474,1
    - Dst: protozero::basic_pbf_writer::add_fixed
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:475,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - tag
    - value
    argTypes:
    - pbf_tag_type
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 476
      start: 473
    functionDepth: 3
    functionLinenumber: 473
    functionLinenumberEnd: 476
    functionName: protozero::basic_pbf_writer::add_fixed32
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached:
    - protozero::basic_pbf_writer::add_field
    - protozero::basic_pbf_writer::add_fixed
    linkageType: ''
    returnType: void
    signature: void add_fixed32(pbf_tag_type tag, uint32_t value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::basic_pbf_writer::add_field
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:485,1
    - Dst: protozero::basic_pbf_writer::add_fixed
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:486,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - tag
    - value
    argTypes:
    - pbf_tag_type
    - int32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 487
      start: 484
    functionDepth: 3
    functionLinenumber: 484
    functionLinenumberEnd: 487
    functionName: protozero::basic_pbf_writer::add_sfixed32
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached:
    - protozero::basic_pbf_writer::add_field
    - protozero::basic_pbf_writer::add_fixed
    linkageType: ''
    returnType: void
    signature: void add_sfixed32(pbf_tag_type tag, int32_t value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::basic_pbf_writer::add_field
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:496,1
    - Dst: protozero::basic_pbf_writer::add_fixed
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:497,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - tag
    - value
    argTypes:
    - pbf_tag_type
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 498
      start: 495
    functionDepth: 3
    functionLinenumber: 495
    functionLinenumberEnd: 498
    functionName: protozero::basic_pbf_writer::add_fixed64
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached:
    - protozero::basic_pbf_writer::add_field
    - protozero::basic_pbf_writer::add_fixed
    linkageType: ''
    returnType: void
    signature: void add_fixed64(pbf_tag_type tag, uint64_t value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::basic_pbf_writer::add_field
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:507,1
    - Dst: protozero::basic_pbf_writer::add_fixed
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:508,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - tag
    - value
    argTypes:
    - pbf_tag_type
    - int64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 509
      start: 506
    functionDepth: 3
    functionLinenumber: 506
    functionLinenumberEnd: 509
    functionName: protozero::basic_pbf_writer::add_sfixed64
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached:
    - protozero::basic_pbf_writer::add_field
    - protozero::basic_pbf_writer::add_fixed
    linkageType: ''
    returnType: void
    signature: void add_sfixed64(pbf_tag_type tag, int64_t value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::basic_pbf_writer::add_field
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:518,1
    - Dst: protozero::basic_pbf_writer::add_fixed
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:519,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - tag
    - value
    argTypes:
    - pbf_tag_type
    - float
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 520
      start: 517
    functionDepth: 3
    functionLinenumber: 517
    functionLinenumberEnd: 520
    functionName: protozero::basic_pbf_writer::add_float
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached:
    - protozero::basic_pbf_writer::add_field
    - protozero::basic_pbf_writer::add_fixed
    linkageType: ''
    returnType: void
    signature: void add_float(pbf_tag_type tag, float value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::basic_pbf_writer::add_field
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:529,1
    - Dst: protozero::basic_pbf_writer::add_fixed
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:530,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - tag
    - value
    argTypes:
    - pbf_tag_type
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 531
      start: 528
    functionDepth: 3
    functionLinenumber: 528
    functionLinenumberEnd: 531
    functionName: protozero::basic_pbf_writer::add_double
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached:
    - protozero::basic_pbf_writer::add_field
    - protozero::basic_pbf_writer::add_fixed
    linkageType: ''
    returnType: void
    signature: void add_double(pbf_tag_type tag, double value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero_assert
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:541,1
    - Dst: protozero_assert
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:542,1
    - Dst: protozero_assert
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:543,1
    - Dst: pdns::max
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:543,1
    - Dst: protozero::basic_pbf_writer::add_length_varint
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:544,1
    - Dst: static_cast<pbf_length_type>
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:544,1
    - Dst: protozero::append
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:545,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - tag
    - value
    - size
    argTypes:
    - pbf_tag_type
    - char*
    - std::size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 546
      start: 540
    functionDepth: 4
    functionLinenumber: 540
    functionLinenumberEnd: 546
    functionName: protozero::basic_pbf_writer::add_bytes
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached:
    - pdns::max
    - protozero::append
    - protozero::basic_pbf_writer::add_length_varint
    - protozero_assert
    - static_cast<pbf_length_type>
    linkageType: ''
    returnType: void
    signature: void add_bytes(pbf_tag_type tag, const char* value, std::size_t size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::basic_pbf_writer::add_bytes
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:555,1
    - Dst: data
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:555,1
    - Dst: size
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:555,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - tag
    - ' value'
    argTypes:
    - pbf_tag_type
    - data_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 556
      start: 554
    functionDepth: 1
    functionLinenumber: 554
    functionLinenumberEnd: 556
    functionName: protozero::basic_pbf_writer::add_bytes
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 1
    functionsReached:
    - protozero::basic_pbf_writer::add_bytes
    - size
    - data
    linkageType: ''
    returnType: void
    signature: void add_bytes(pbf_tag_type tag, const data_view& value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::basic_pbf_writer::add_bytes
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:565,1
    - Dst: data
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:565,1
    - Dst: size
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:565,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - tag
    - ' value'
    argTypes:
    - pbf_tag_type
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 566
      start: 564
    functionDepth: 1
    functionLinenumber: 564
    functionLinenumberEnd: 566
    functionName: protozero::basic_pbf_writer::add_bytes
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 2
    functionsReached:
    - protozero::basic_pbf_writer::add_bytes
    - size
    - data
    linkageType: ''
    returnType: void
    signature: void add_bytes(pbf_tag_type tag, const std::string& value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::basic_pbf_writer::add_bytes
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:576,1
    - Dst: std::strlen
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:576,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - tag
    - value
    argTypes:
    - pbf_tag_type
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 577
      start: 575
    functionDepth: 1
    functionLinenumber: 575
    functionLinenumberEnd: 577
    functionName: protozero::basic_pbf_writer::add_bytes
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 3
    functionsReached:
    - protozero::basic_pbf_writer::add_bytes
    - std::strlen
    linkageType: ''
    returnType: void
    signature: void add_bytes(pbf_tag_type tag, const char* value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero_assert
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:600,1
    - Dst: protozero_assert
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:601,1
    - Dst: size
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:603,1
    - Dst: protozero_assert
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:604,1
    - Dst: pdns::max
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:604,1
    - Dst: protozero::basic_pbf_writer::add_length_varint
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:605,1
    - Dst: static_cast<pbf_length_type>
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:605,1
    - Dst: protozero::reserve_additional
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:606,1
    - Dst: protozero::append
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:607,1
    - Dst: data
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:607,1
    - Dst: size
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:607,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - tag
    argTypes:
    - pbf_tag_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 608
      start: 599
    functionDepth: 4
    functionLinenumber: 599
    functionLinenumberEnd: 608
    functionName: protozero::basic_pbf_writer::add_bytes_vectored
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached:
    - pdns::max
    - protozero::append
    - protozero::basic_pbf_writer::add_length_varint
    - protozero_assert
    - static_cast<pbf_length_type>
    - size
    - protozero::reserve_additional
    - data
    linkageType: ''
    returnType: void
    signature: void add_bytes_vectored(pbf_tag_type tag, Ts&&... values)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::basic_pbf_writer::add_bytes
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:618,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - tag
    - value
    - size
    argTypes:
    - pbf_tag_type
    - char*
    - std::size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 619
      start: 617
    functionDepth: 5
    functionLinenumber: 617
    functionLinenumberEnd: 619
    functionName: protozero::basic_pbf_writer::add_string
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached:
    - protozero::basic_pbf_writer::add_bytes
    linkageType: ''
    returnType: void
    signature: void add_string(pbf_tag_type tag, const char* value, std::size_t size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::basic_pbf_writer::add_bytes
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:628,1
    - Dst: data
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:628,1
    - Dst: size
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:628,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - tag
    - ' value'
    argTypes:
    - pbf_tag_type
    - data_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 629
      start: 627
    functionDepth: 5
    functionLinenumber: 627
    functionLinenumberEnd: 629
    functionName: protozero::basic_pbf_writer::add_string
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached:
    - protozero::basic_pbf_writer::add_bytes
    - size
    - data
    linkageType: ''
    returnType: void
    signature: void add_string(pbf_tag_type tag, const data_view& value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::basic_pbf_writer::add_bytes
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:638,1
    - Dst: data
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:638,1
    - Dst: size
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:638,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - tag
    - ' value'
    argTypes:
    - pbf_tag_type
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 639
      start: 637
    functionDepth: 5
    functionLinenumber: 637
    functionLinenumberEnd: 639
    functionName: protozero::basic_pbf_writer::add_string
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached:
    - protozero::basic_pbf_writer::add_bytes
    - size
    - data
    linkageType: ''
    returnType: void
    signature: void add_string(pbf_tag_type tag, const std::string& value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::basic_pbf_writer::add_bytes
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:649,1
    - Dst: std::strlen
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:649,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - tag
    - value
    argTypes:
    - pbf_tag_type
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 650
      start: 648
    functionDepth: 5
    functionLinenumber: 648
    functionLinenumberEnd: 650
    functionName: protozero::basic_pbf_writer::add_string
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached:
    - protozero::basic_pbf_writer::add_bytes
    - std::strlen
    linkageType: ''
    returnType: void
    signature: void add_string(pbf_tag_type tag, const char* value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::basic_pbf_writer::add_bytes
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:660,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - tag
    - value
    - size
    argTypes:
    - pbf_tag_type
    - char*
    - std::size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 661
      start: 659
    functionDepth: 5
    functionLinenumber: 659
    functionLinenumberEnd: 661
    functionName: protozero::basic_pbf_writer::add_message
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached:
    - protozero::basic_pbf_writer::add_bytes
    linkageType: ''
    returnType: void
    signature: void add_message(pbf_tag_type tag, const char* value, std::size_t size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::basic_pbf_writer::add_bytes
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:670,1
    - Dst: data
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:670,1
    - Dst: size
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:670,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - tag
    - ' value'
    argTypes:
    - pbf_tag_type
    - data_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 671
      start: 669
    functionDepth: 5
    functionLinenumber: 669
    functionLinenumberEnd: 671
    functionName: protozero::basic_pbf_writer::add_message
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached:
    - protozero::basic_pbf_writer::add_bytes
    - size
    - data
    linkageType: ''
    returnType: void
    signature: void add_message(pbf_tag_type tag, const data_view& value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::basic_pbf_writer::add_bytes
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:680,1
    - Dst: data
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:680,1
    - Dst: size
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:680,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - tag
    - ' value'
    argTypes:
    - pbf_tag_type
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 681
      start: 679
    functionDepth: 5
    functionLinenumber: 679
    functionLinenumberEnd: 681
    functionName: protozero::basic_pbf_writer::add_message
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached:
    - protozero::basic_pbf_writer::add_bytes
    - size
    - data
    linkageType: ''
    returnType: void
    signature: void add_message(pbf_tag_type tag, const std::string& value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::basic_pbf_writer::add_packed_varint
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:701,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - tag
    - first
    - last
    argTypes:
    - pbf_tag_type
    - InputIterator
    - InputIterator
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 702
      start: 700
    functionDepth: 1
    functionLinenumber: 700
    functionLinenumberEnd: 702
    functionName: protozero::basic_pbf_writer::add_packed_bool
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached:
    - protozero::basic_pbf_writer::add_packed_varint
    linkageType: ''
    returnType: void
    signature: void add_packed_bool(pbf_tag_type tag, InputIterator first, InputIterator
      last)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::basic_pbf_writer::add_packed_varint
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:715,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - tag
    - first
    - last
    argTypes:
    - pbf_tag_type
    - InputIterator
    - InputIterator
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 716
      start: 714
    functionDepth: 1
    functionLinenumber: 714
    functionLinenumberEnd: 716
    functionName: protozero::basic_pbf_writer::add_packed_enum
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached:
    - protozero::basic_pbf_writer::add_packed_varint
    linkageType: ''
    returnType: void
    signature: void add_packed_enum(pbf_tag_type tag, InputIterator first, InputIterator
      last)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::basic_pbf_writer::add_packed_varint
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:729,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - tag
    - first
    - last
    argTypes:
    - pbf_tag_type
    - InputIterator
    - InputIterator
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 730
      start: 728
    functionDepth: 1
    functionLinenumber: 728
    functionLinenumberEnd: 730
    functionName: protozero::basic_pbf_writer::add_packed_int32
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached:
    - protozero::basic_pbf_writer::add_packed_varint
    linkageType: ''
    returnType: void
    signature: void add_packed_int32(pbf_tag_type tag, InputIterator first, InputIterator
      last)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::basic_pbf_writer::add_packed_svarint
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:743,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - tag
    - first
    - last
    argTypes:
    - pbf_tag_type
    - InputIterator
    - InputIterator
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 744
      start: 742
    functionDepth: 1
    functionLinenumber: 742
    functionLinenumberEnd: 744
    functionName: protozero::basic_pbf_writer::add_packed_sint32
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached:
    - protozero::basic_pbf_writer::add_packed_svarint
    linkageType: ''
    returnType: void
    signature: void add_packed_sint32(pbf_tag_type tag, InputIterator first, InputIterator
      last)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::basic_pbf_writer::add_packed_varint
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:757,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - tag
    - first
    - last
    argTypes:
    - pbf_tag_type
    - InputIterator
    - InputIterator
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 758
      start: 756
    functionDepth: 1
    functionLinenumber: 756
    functionLinenumberEnd: 758
    functionName: protozero::basic_pbf_writer::add_packed_uint32
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached:
    - protozero::basic_pbf_writer::add_packed_varint
    linkageType: ''
    returnType: void
    signature: void add_packed_uint32(pbf_tag_type tag, InputIterator first, InputIterator
      last)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::basic_pbf_writer::add_packed_varint
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:771,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - tag
    - first
    - last
    argTypes:
    - pbf_tag_type
    - InputIterator
    - InputIterator
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 772
      start: 770
    functionDepth: 1
    functionLinenumber: 770
    functionLinenumberEnd: 772
    functionName: protozero::basic_pbf_writer::add_packed_int64
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached:
    - protozero::basic_pbf_writer::add_packed_varint
    linkageType: ''
    returnType: void
    signature: void add_packed_int64(pbf_tag_type tag, InputIterator first, InputIterator
      last)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::basic_pbf_writer::add_packed_svarint
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:785,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - tag
    - first
    - last
    argTypes:
    - pbf_tag_type
    - InputIterator
    - InputIterator
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 786
      start: 784
    functionDepth: 1
    functionLinenumber: 784
    functionLinenumberEnd: 786
    functionName: protozero::basic_pbf_writer::add_packed_sint64
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached:
    - protozero::basic_pbf_writer::add_packed_svarint
    linkageType: ''
    returnType: void
    signature: void add_packed_sint64(pbf_tag_type tag, InputIterator first, InputIterator
      last)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::basic_pbf_writer::add_packed_varint
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:799,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - tag
    - first
    - last
    argTypes:
    - pbf_tag_type
    - InputIterator
    - InputIterator
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 800
      start: 798
    functionDepth: 1
    functionLinenumber: 798
    functionLinenumberEnd: 800
    functionName: protozero::basic_pbf_writer::add_packed_uint64
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached:
    - protozero::basic_pbf_writer::add_packed_varint
    linkageType: ''
    returnType: void
    signature: void add_packed_uint64(pbf_tag_type tag, InputIterator first, InputIterator
      last)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 3
    argCount: 3
    argNames:
    - tag
    - first
    - last
    argTypes:
    - pbf_tag_type
    - InputIterator
    - InputIterator
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 829
      start: 820
    functionDepth: 0
    functionLinenumber: 820
    functionLinenumberEnd: 829
    functionName: protozero::basic_pbf_writer::add_packed_fixed
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void add_packed_fixed(pbf_tag_type tag, InputIterator first, InputIterator
      last)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 828
      start: 827
    functionDepth: 0
    functionLinenumber: 827
    functionLinenumberEnd: 828
    functionName: protozero::basic_pbf_writer::add_packed_fixed
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void add_packed_fixed<ValueType, InputIterator>(tag, first, last,\n
      \           typename std::iterator_traits<InputIterator>::iterator_category"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - tag
    - first
    - last
    argTypes:
    - pbf_tag_type
    - InputIterator
    - InputIterator
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 844
      start: 841
    functionDepth: 0
    functionLinenumber: 841
    functionLinenumberEnd: 844
    functionName: protozero::basic_pbf_writer::add_packed_fixed32
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void add_packed_fixed32(pbf_tag_type tag, InputIterator first, InputIterator
      last)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 843
      start: 842
    functionDepth: 0
    functionLinenumber: 842
    functionLinenumberEnd: 843
    functionName: protozero::basic_pbf_writer::add_packed_fixed
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void add_packed_fixed<uint32_t, InputIterator>(tag, first, last,\n
      \           typename std::iterator_traits<InputIterator>::iterator_category"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - tag
    - first
    - last
    argTypes:
    - pbf_tag_type
    - InputIterator
    - InputIterator
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 859
      start: 856
    functionDepth: 0
    functionLinenumber: 856
    functionLinenumberEnd: 859
    functionName: protozero::basic_pbf_writer::add_packed_sfixed32
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void add_packed_sfixed32(pbf_tag_type tag, InputIterator first, InputIterator
      last)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 858
      start: 857
    functionDepth: 0
    functionLinenumber: 857
    functionLinenumberEnd: 858
    functionName: protozero::basic_pbf_writer::add_packed_fixed
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void add_packed_fixed<int32_t, InputIterator>(tag, first, last,\n
      \           typename std::iterator_traits<InputIterator>::iterator_category"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - tag
    - first
    - last
    argTypes:
    - pbf_tag_type
    - InputIterator
    - InputIterator
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 874
      start: 871
    functionDepth: 0
    functionLinenumber: 871
    functionLinenumberEnd: 874
    functionName: protozero::basic_pbf_writer::add_packed_fixed64
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void add_packed_fixed64(pbf_tag_type tag, InputIterator first, InputIterator
      last)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 873
      start: 872
    functionDepth: 0
    functionLinenumber: 872
    functionLinenumberEnd: 873
    functionName: protozero::basic_pbf_writer::add_packed_fixed
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void add_packed_fixed<uint64_t, InputIterator>(tag, first, last,\n
      \           typename std::iterator_traits<InputIterator>::iterator_category"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - tag
    - first
    - last
    argTypes:
    - pbf_tag_type
    - InputIterator
    - InputIterator
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 889
      start: 886
    functionDepth: 0
    functionLinenumber: 886
    functionLinenumberEnd: 889
    functionName: protozero::basic_pbf_writer::add_packed_sfixed64
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void add_packed_sfixed64(pbf_tag_type tag, InputIterator first, InputIterator
      last)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 888
      start: 887
    functionDepth: 0
    functionLinenumber: 887
    functionLinenumberEnd: 888
    functionName: protozero::basic_pbf_writer::add_packed_fixed
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void add_packed_fixed<int64_t, InputIterator>(tag, first, last,\n
      \           typename std::iterator_traits<InputIterator>::iterator_category"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - tag
    - first
    - last
    argTypes:
    - pbf_tag_type
    - InputIterator
    - InputIterator
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 904
      start: 901
    functionDepth: 0
    functionLinenumber: 901
    functionLinenumberEnd: 904
    functionName: protozero::basic_pbf_writer::add_packed_float
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void add_packed_float(pbf_tag_type tag, InputIterator first, InputIterator
      last)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 903
      start: 902
    functionDepth: 0
    functionLinenumber: 902
    functionLinenumberEnd: 903
    functionName: protozero::basic_pbf_writer::add_packed_fixed
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void add_packed_fixed<float, InputIterator>(tag, first, last,\n            typename
      std::iterator_traits<InputIterator>::iterator_category"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - tag
    - first
    - last
    argTypes:
    - pbf_tag_type
    - InputIterator
    - InputIterator
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 919
      start: 916
    functionDepth: 0
    functionLinenumber: 916
    functionLinenumberEnd: 919
    functionName: protozero::basic_pbf_writer::add_packed_double
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void add_packed_double(pbf_tag_type tag, InputIterator first, InputIterator
      last)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 918
      start: 917
    functionDepth: 0
    functionLinenumber: 917
    functionLinenumberEnd: 918
    functionName: protozero::basic_pbf_writer::add_packed_fixed
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void add_packed_fixed<double, InputIterator>(tag, first, last,\n            typename
      std::iterator_traits<InputIterator>::iterator_category"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::swap
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:937,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' lhs'
    - ' rhs'
    argTypes:
    - basic_pbf_writer<TBuffer>
    - basic_pbf_writer<TBuffer>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 938
      start: 936
    functionDepth: 0
    functionLinenumber: 936
    functionLinenumberEnd: 938
    functionName: protozero::swap
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 3
    functionsReached:
    - protozero::swap
    linkageType: ''
    returnType: void
    signature: void swap(basic_pbf_writer<TBuffer>& lhs, basic_pbf_writer<TBuffer>&
      rhs) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 949
      start: 949
    functionDepth: 0
    functionLinenumber: 949
    functionLinenumberEnd: 949
    functionName: protozero::detail::packed_field::packed_field
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void packed_field(const packed_field&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 950
      start: 950
    functionDepth: 0
    functionLinenumber: 950
    functionLinenumberEnd: 950
    functionName: '& operator=(const packed_field&)'
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: packed_field
    signature: packed_field & operator=(const packed_field&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 952
      start: 952
    functionDepth: 0
    functionLinenumber: 952
    functionLinenumberEnd: 952
    functionName: protozero::detail::packed_field::packed_field
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void packed_field(packed_field&&) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 953
      start: 953
    functionDepth: 0
    functionLinenumber: 953
    functionLinenumberEnd: 953
    functionName: '& operator=(packed_field&&) noexcept'
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: packed_field
    signature: packed_field & operator=(packed_field&&) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 955
      start: 955
    functionDepth: 0
    functionLinenumber: 955
    functionLinenumberEnd: 955
    functionName: protozero::detail::packed_field::packed_field
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void packed_field()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - ' parent_writer'
    - tag
    argTypes:
    - basic_pbf_writer<TBuffer>
    - pbf_tag_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 959
      start: 957
    functionDepth: 0
    functionLinenumber: 957
    functionLinenumberEnd: 959
    functionName: protozero::detail::packed_field::packed_field
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void packed_field(basic_pbf_writer<TBuffer>& parent_writer, pbf_tag_type
      tag)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 3
    argNames:
    - ' parent_writer'
    - tag
    - size
    argTypes:
    - basic_pbf_writer<TBuffer>
    - pbf_tag_type
    - std::size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 963
      start: 961
    functionDepth: 0
    functionLinenumber: 961
    functionLinenumberEnd: 963
    functionName: protozero::detail::packed_field::packed_field
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void packed_field(basic_pbf_writer<TBuffer>& parent_writer, pbf_tag_type
      tag, std::size_t size)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 965
      start: 965
    functionDepth: 0
    functionLinenumber: 965
    functionLinenumberEnd: 965
    functionName: ~packed_field() noexcept
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~packed_field() noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::detail::packed_field::valid
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:968,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 969
      start: 967
    functionDepth: 1
    functionLinenumber: 967
    functionLinenumberEnd: 969
    functionName: protozero::detail::packed_field::valid
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 1
    functionsReached:
    - protozero::detail::packed_field::valid
    linkageType: ''
    returnType: bool
    signature: bool valid() const noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::detail::packed_field::commit
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:972,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 973
      start: 971
    functionDepth: 1
    functionLinenumber: 971
    functionLinenumberEnd: 973
    functionName: protozero::detail::packed_field::commit
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 1
    functionsReached:
    - protozero::detail::packed_field::commit
    linkageType: ''
    returnType: void
    signature: void commit()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::detail::packed_field::rollback
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:976,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 977
      start: 975
    functionDepth: 1
    functionLinenumber: 975
    functionLinenumberEnd: 977
    functionName: protozero::detail::packed_field::rollback
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 1
    functionsReached:
    - protozero::detail::packed_field::rollback
    linkageType: ''
    returnType: void
    signature: void rollback()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 981
      start: 979
    functionDepth: 0
    functionLinenumber: 979
    functionLinenumberEnd: 981
    functionName: '& writer() noexcept'
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: basic_pbf_writer<TBuffer>
    signature: basic_pbf_writer<TBuffer> & writer() noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 992
      start: 990
    functionDepth: 0
    functionLinenumber: 990
    functionLinenumberEnd: 992
    functionName: protozero::detail::packed_field_fixed::packed_field_fixed
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void packed_field_fixed()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<pbf_tag_type>
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:996,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - ' parent_writer'
    - tag
    argTypes:
    - basic_pbf_writer<TBuffer>
    - P
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 997
      start: 995
    functionDepth: 0
    functionLinenumber: 995
    functionLinenumberEnd: 997
    functionName: protozero::detail::packed_field_fixed::packed_field_fixed
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached:
    - static_cast<pbf_tag_type>
    linkageType: ''
    returnType: void
    signature: void packed_field_fixed(basic_pbf_writer<TBuffer>& parent_writer, P
      tag)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<pbf_tag_type>
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:1001,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 3
    argNames:
    - ' parent_writer'
    - tag
    - size
    argTypes:
    - basic_pbf_writer<TBuffer>
    - P
    - std::size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1002
      start: 1000
    functionDepth: 0
    functionLinenumber: 1000
    functionLinenumberEnd: 1002
    functionName: protozero::detail::packed_field_fixed::packed_field_fixed
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached:
    - static_cast<pbf_tag_type>
    linkageType: ''
    returnType: void
    signature: void packed_field_fixed(basic_pbf_writer<TBuffer>& parent_writer, P
      tag, std::size_t size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::detail::packed_field_fixed::writer
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:1005,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - value
    argTypes:
    - T
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1006
      start: 1004
    functionDepth: 0
    functionLinenumber: 1004
    functionLinenumberEnd: 1006
    functionName: protozero::detail::packed_field_fixed::add_element
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached:
    - protozero::detail::packed_field_fixed::writer
    linkageType: ''
    returnType: void
    signature: void add_element(T value)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1017
      start: 1015
    functionDepth: 0
    functionLinenumber: 1015
    functionLinenumberEnd: 1017
    functionName: protozero::detail::packed_field_varint::packed_field_varint
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void packed_field_varint()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<pbf_tag_type>
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:1021,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - ' parent_writer'
    - tag
    argTypes:
    - basic_pbf_writer<TBuffer>
    - P
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1022
      start: 1020
    functionDepth: 0
    functionLinenumber: 1020
    functionLinenumberEnd: 1022
    functionName: protozero::detail::packed_field_varint::packed_field_varint
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached:
    - static_cast<pbf_tag_type>
    linkageType: ''
    returnType: void
    signature: void packed_field_varint(basic_pbf_writer<TBuffer>& parent_writer,
      P tag)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::detail::packed_field_varint::writer
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:1025,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - value
    argTypes:
    - T
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1026
      start: 1024
    functionDepth: 0
    functionLinenumber: 1024
    functionLinenumberEnd: 1026
    functionName: protozero::detail::packed_field_varint::add_element
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached:
    - protozero::detail::packed_field_varint::writer
    linkageType: ''
    returnType: void
    signature: void add_element(T value)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1037
      start: 1035
    functionDepth: 0
    functionLinenumber: 1035
    functionLinenumberEnd: 1037
    functionName: protozero::detail::packed_field_svarint::packed_field_svarint
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void packed_field_svarint()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<pbf_tag_type>
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:1041,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - ' parent_writer'
    - tag
    argTypes:
    - basic_pbf_writer<TBuffer>
    - P
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1042
      start: 1040
    functionDepth: 0
    functionLinenumber: 1040
    functionLinenumberEnd: 1042
    functionName: protozero::detail::packed_field_svarint::packed_field_svarint
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached:
    - static_cast<pbf_tag_type>
    linkageType: ''
    returnType: void
    signature: void packed_field_svarint(basic_pbf_writer<TBuffer>& parent_writer,
      P tag)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::detail::packed_field_svarint::writer
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:1045,1
    - Dst: encode_zigzag64
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:1045,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - value
    argTypes:
    - T
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1046
      start: 1044
    functionDepth: 0
    functionLinenumber: 1044
    functionLinenumberEnd: 1046
    functionName: protozero::detail::packed_field_svarint::add_element
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached:
    - encode_zigzag64
    - protozero::detail::packed_field_svarint::writer
    linkageType: ''
    returnType: void
    signature: void add_element(T value)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 949
      start: 949
    functionDepth: 0
    functionLinenumber: 949
    functionLinenumberEnd: 949
    functionName: protozero::detail::packed_field::packed_field
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void packed_field(const packed_field&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 950
      start: 950
    functionDepth: 0
    functionLinenumber: 950
    functionLinenumberEnd: 950
    functionName: '& operator=(const packed_field&)'
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: packed_field
    signature: packed_field & operator=(const packed_field&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 952
      start: 952
    functionDepth: 0
    functionLinenumber: 952
    functionLinenumberEnd: 952
    functionName: protozero::detail::packed_field::packed_field
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void packed_field(packed_field&&) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 953
      start: 953
    functionDepth: 0
    functionLinenumber: 953
    functionLinenumberEnd: 953
    functionName: '& operator=(packed_field&&) noexcept'
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: packed_field
    signature: packed_field & operator=(packed_field&&) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 955
      start: 955
    functionDepth: 0
    functionLinenumber: 955
    functionLinenumberEnd: 955
    functionName: protozero::detail::packed_field::packed_field
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void packed_field()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - ' parent_writer'
    - tag
    argTypes:
    - basic_pbf_writer<TBuffer>
    - pbf_tag_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 959
      start: 957
    functionDepth: 0
    functionLinenumber: 957
    functionLinenumberEnd: 959
    functionName: protozero::detail::packed_field::packed_field
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void packed_field(basic_pbf_writer<TBuffer>& parent_writer, pbf_tag_type
      tag)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 3
    argNames:
    - ' parent_writer'
    - tag
    - size
    argTypes:
    - basic_pbf_writer<TBuffer>
    - pbf_tag_type
    - std::size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 963
      start: 961
    functionDepth: 0
    functionLinenumber: 961
    functionLinenumberEnd: 963
    functionName: protozero::detail::packed_field::packed_field
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void packed_field(basic_pbf_writer<TBuffer>& parent_writer, pbf_tag_type
      tag, std::size_t size)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 965
      start: 965
    functionDepth: 0
    functionLinenumber: 965
    functionLinenumberEnd: 965
    functionName: ~packed_field() noexcept
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~packed_field() noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::detail::packed_field::valid
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:968,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 969
      start: 967
    functionDepth: 1
    functionLinenumber: 967
    functionLinenumberEnd: 969
    functionName: protozero::detail::packed_field::valid
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 2
    functionsReached:
    - protozero::detail::packed_field::valid
    linkageType: ''
    returnType: bool
    signature: bool valid() const noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::detail::packed_field::commit
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:972,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 973
      start: 971
    functionDepth: 1
    functionLinenumber: 971
    functionLinenumberEnd: 973
    functionName: protozero::detail::packed_field::commit
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 2
    functionsReached:
    - protozero::detail::packed_field::commit
    linkageType: ''
    returnType: void
    signature: void commit()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::detail::packed_field::rollback
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:976,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 977
      start: 975
    functionDepth: 1
    functionLinenumber: 975
    functionLinenumberEnd: 977
    functionName: protozero::detail::packed_field::rollback
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 2
    functionsReached:
    - protozero::detail::packed_field::rollback
    linkageType: ''
    returnType: void
    signature: void rollback()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 981
      start: 979
    functionDepth: 0
    functionLinenumber: 979
    functionLinenumberEnd: 981
    functionName: '& writer() noexcept'
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: basic_pbf_writer<TBuffer>
    signature: basic_pbf_writer<TBuffer> & writer() noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 992
      start: 990
    functionDepth: 0
    functionLinenumber: 990
    functionLinenumberEnd: 992
    functionName: protozero::detail::packed_field_fixed::packed_field_fixed
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void packed_field_fixed()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<pbf_tag_type>
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:996,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - ' parent_writer'
    - tag
    argTypes:
    - basic_pbf_writer<TBuffer>
    - P
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 997
      start: 995
    functionDepth: 0
    functionLinenumber: 995
    functionLinenumberEnd: 997
    functionName: protozero::detail::packed_field_fixed::packed_field_fixed
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached:
    - static_cast<pbf_tag_type>
    linkageType: ''
    returnType: void
    signature: void packed_field_fixed(basic_pbf_writer<TBuffer>& parent_writer, P
      tag)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<pbf_tag_type>
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:1001,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 3
    argNames:
    - ' parent_writer'
    - tag
    - size
    argTypes:
    - basic_pbf_writer<TBuffer>
    - P
    - std::size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1002
      start: 1000
    functionDepth: 0
    functionLinenumber: 1000
    functionLinenumberEnd: 1002
    functionName: protozero::detail::packed_field_fixed::packed_field_fixed
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached:
    - static_cast<pbf_tag_type>
    linkageType: ''
    returnType: void
    signature: void packed_field_fixed(basic_pbf_writer<TBuffer>& parent_writer, P
      tag, std::size_t size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::detail::packed_field_fixed::writer
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:1005,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - value
    argTypes:
    - T
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1006
      start: 1004
    functionDepth: 0
    functionLinenumber: 1004
    functionLinenumberEnd: 1006
    functionName: protozero::detail::packed_field_fixed::add_element
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached:
    - protozero::detail::packed_field_fixed::writer
    linkageType: ''
    returnType: void
    signature: void add_element(T value)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1017
      start: 1015
    functionDepth: 0
    functionLinenumber: 1015
    functionLinenumberEnd: 1017
    functionName: protozero::detail::packed_field_varint::packed_field_varint
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void packed_field_varint()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<pbf_tag_type>
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:1021,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - ' parent_writer'
    - tag
    argTypes:
    - basic_pbf_writer<TBuffer>
    - P
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1022
      start: 1020
    functionDepth: 0
    functionLinenumber: 1020
    functionLinenumberEnd: 1022
    functionName: protozero::detail::packed_field_varint::packed_field_varint
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached:
    - static_cast<pbf_tag_type>
    linkageType: ''
    returnType: void
    signature: void packed_field_varint(basic_pbf_writer<TBuffer>& parent_writer,
      P tag)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::detail::packed_field_varint::writer
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:1025,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - value
    argTypes:
    - T
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1026
      start: 1024
    functionDepth: 0
    functionLinenumber: 1024
    functionLinenumberEnd: 1026
    functionName: protozero::detail::packed_field_varint::add_element
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached:
    - protozero::detail::packed_field_varint::writer
    linkageType: ''
    returnType: void
    signature: void add_element(T value)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1037
      start: 1035
    functionDepth: 0
    functionLinenumber: 1035
    functionLinenumberEnd: 1037
    functionName: protozero::detail::packed_field_svarint::packed_field_svarint
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void packed_field_svarint()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<pbf_tag_type>
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:1041,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - ' parent_writer'
    - tag
    argTypes:
    - basic_pbf_writer<TBuffer>
    - P
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1042
      start: 1040
    functionDepth: 0
    functionLinenumber: 1040
    functionLinenumberEnd: 1042
    functionName: protozero::detail::packed_field_svarint::packed_field_svarint
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached:
    - static_cast<pbf_tag_type>
    linkageType: ''
    returnType: void
    signature: void packed_field_svarint(basic_pbf_writer<TBuffer>& parent_writer,
      P tag)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::detail::packed_field_svarint::writer
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:1045,1
    - Dst: encode_zigzag64
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:1045,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - value
    argTypes:
    - T
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1046
      start: 1044
    functionDepth: 0
    functionLinenumber: 1044
    functionLinenumberEnd: 1046
    functionName: protozero::detail::packed_field_svarint::add_element
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached:
    - encode_zigzag64
    - protozero::detail::packed_field_svarint::writer
    linkageType: ''
    returnType: void
    signature: void add_element(T value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero_assert
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:81,1
    - Dst: protozero_assert
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:82,1
    - Dst: add_varint_to_buffer
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:83,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - value
    argTypes:
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 80
    functionDepth: 1
    functionLinenumber: 80
    functionLinenumberEnd: 84
    functionName: protozero::basic_pbf_writer::add_varint
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 3
    functionsReached:
    - protozero_assert
    - add_varint_to_buffer
    linkageType: ''
    returnType: void
    signature: void add_varint(uint64_t value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero_assert
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:87,1
    - Dst: static_cast<uint32_t>
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:88,1
    - Dst: protozero::basic_pbf_writer::add_varint
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:89,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 3
    argCount: 2
    argNames:
    - tag
    - type
    argTypes:
    - pbf_tag_type
    - pbf_wire_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 86
    functionDepth: 2
    functionLinenumber: 86
    functionLinenumberEnd: 90
    functionName: protozero::basic_pbf_writer::add_field
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 10
    functionsReached:
    - protozero::basic_pbf_writer::add_varint
    - protozero_assert
    - static_cast<uint32_t>
    linkageType: ''
    returnType: void
    signature: void add_field(pbf_tag_type tag, pbf_wire_type type)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::basic_pbf_writer::add_field
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:93,1
    - Dst: protozero::basic_pbf_writer::add_varint
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:94,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - tag
    - value
    argTypes:
    - pbf_tag_type
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 92
    functionDepth: 3
    functionLinenumber: 92
    functionLinenumberEnd: 95
    functionName: protozero::basic_pbf_writer::add_tagged_varint
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 7
    functionsReached:
    - protozero::basic_pbf_writer::add_varint
    - protozero::basic_pbf_writer::add_field
    linkageType: ''
    returnType: void
    signature: void add_tagged_varint(pbf_tag_type tag, uint64_t value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero_assert
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:99,1
    - Dst: protozero_assert
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:100,1
    - Dst: byteswap_inplace
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:102,1
    - Dst: protozero::append
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:104,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:104,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - value
    argTypes:
    - T
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 98
    functionDepth: 1
    functionLinenumber: 98
    functionLinenumberEnd: 105
    functionName: protozero::basic_pbf_writer::add_fixed
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 7
    functionsReached:
    - protozero_assert
    - reinterpret_cast<const char*>
    - protozero::append
    - byteswap_inplace
    linkageType: ''
    returnType: void
    signature: void add_fixed(T value)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: basic_pbf_writer::add_fixed
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:116,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - tag
    - first
    - last
    argTypes:
    - pbf_tag_type
    - It
    - It
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 118
      start: 108
    functionDepth: 0
    functionLinenumber: 108
    functionLinenumberEnd: 118
    functionName: protozero::basic_pbf_writer::add_packed_fixed
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached:
    - basic_pbf_writer::add_fixed
    linkageType: ''
    returnType: void
    signature: void add_packed_fixed(pbf_tag_type tag, It first, It last, std::input_iterator_tag
      /*unused*/)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: std::distance
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:126,1
    - Dst: protozero::basic_pbf_writer::add_length_varint
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:127,1
    - Dst: pbf_length_type
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:127,1
    - Dst: protozero::basic_pbf_writer::reserve
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:128,1
    - Dst: std::size_t
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:128,1
    - Dst: protozero::basic_pbf_writer::add_fixed
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:131,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 3
    argNames:
    - tag
    - first
    - last
    argTypes:
    - pbf_tag_type
    - It
    - It
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 133
      start: 121
    functionDepth: 4
    functionLinenumber: 121
    functionLinenumberEnd: 133
    functionName: protozero::basic_pbf_writer::add_packed_fixed
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached:
    - std::distance
    - protozero::basic_pbf_writer::add_length_varint
    - protozero::basic_pbf_writer::reserve
    - pbf_length_type
    - std::size_t
    - protozero::basic_pbf_writer::add_fixed
    linkageType: ''
    returnType: void
    signature: void add_packed_fixed(pbf_tag_type tag, It first, It last, std::forward_iterator_tag
      /*unused*/)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: basic_pbf_writer::add_varint
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:144,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - tag
    - first
    - last
    argTypes:
    - pbf_tag_type
    - It
    - It
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 146
      start: 136
    functionDepth: 0
    functionLinenumber: 136
    functionLinenumberEnd: 146
    functionName: protozero::basic_pbf_writer::add_packed_varint
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 6
    functionsReached:
    - basic_pbf_writer::add_varint
    linkageType: ''
    returnType: void
    signature: void add_packed_varint(pbf_tag_type tag, It first, It last)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: basic_pbf_writer::add_varint
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:157,1
    - Dst: encode_zigzag64
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:157,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - tag
    - first
    - last
    argTypes:
    - pbf_tag_type
    - It
    - It
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 159
      start: 149
    functionDepth: 0
    functionLinenumber: 149
    functionLinenumberEnd: 159
    functionName: protozero::basic_pbf_writer::add_packed_svarint
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 2
    functionsReached:
    - basic_pbf_writer::add_varint
    - encode_zigzag64
    linkageType: ''
    returnType: void
    signature: void add_packed_svarint(pbf_tag_type tag, It first, It last)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: protozero_assert
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:176,1
    - Dst: protozero_assert
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:177,1
    - Dst: size
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:179,1
    - Dst: protozero::basic_pbf_writer::add_field
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:180,1
    - Dst: protozero::append_zeros
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:181,1
    - Dst: std::size_t
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:181,1
    - Dst: protozero::basic_pbf_writer::add_length_varint
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:184,1
    - Dst: static_cast<pbf_length_type>
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:184,1
    - Dst: protozero::basic_pbf_writer::reserve
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:185,1
    - Dst: size
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:187,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 2
    argNames:
    - tag
    - size
    argTypes:
    - pbf_tag_type
    - std::size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 188
      start: 175
    functionDepth: 4
    functionLinenumber: 175
    functionLinenumberEnd: 188
    functionName: protozero::basic_pbf_writer::open_submessage
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 1
    functionsReached:
    - protozero::basic_pbf_writer::add_length_varint
    - protozero_assert
    - static_cast<pbf_length_type>
    - size
    - protozero::basic_pbf_writer::reserve
    - protozero::append_zeros
    - std::size_t
    - protozero::basic_pbf_writer::add_field
    linkageType: ''
    returnType: void
    signature: void open_submessage(pbf_tag_type tag, std::size_t size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero_assert
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:191,1
    - Dst: protozero_assert
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:192,1
    - Dst: protozero_assert
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:193,1
    - Dst: StatRing<T,Comp>::resize
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:194,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 196
      start: 190
    functionDepth: 1
    functionLinenumber: 190
    functionLinenumberEnd: 196
    functionName: protozero::basic_pbf_writer::rollback_submessage
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 2
    functionsReached:
    - protozero_assert
    - StatRing<T,Comp>::resize
    linkageType: ''
    returnType: void
    signature: void rollback_submessage()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero_assert
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:199,1
    - Dst: protozero_assert
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:200,1
    - Dst: protozero_assert
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:201,1
    - Dst: pbf_length_type
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:202,1
    - Dst: size
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:202,1
    - Dst: protozero_assert
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:204,1
    - Dst: size
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:204,1
    - Dst: add_varint_to_buffer
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:205,1
    - Dst: protozero::at_pos
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:205,1
    - Dst: protozero::erase_range
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:207,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 209
      start: 198
    functionDepth: 1
    functionLinenumber: 198
    functionLinenumberEnd: 209
    functionName: protozero::basic_pbf_writer::commit_submessage
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 1
    functionsReached:
    - protozero_assert
    - add_varint_to_buffer
    - size
    - protozero::at_pos
    - pbf_length_type
    - protozero::erase_range
    linkageType: ''
    returnType: void
    signature: void commit_submessage()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: protozero_assert
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:212,1
    - Dst: size
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:216,1
    - Dst: protozero::basic_pbf_writer::rollback_submessage
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:217,1
    - Dst: protozero::basic_pbf_writer::commit_submessage
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:219,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 221
      start: 211
    functionDepth: 2
    functionLinenumber: 211
    functionLinenumberEnd: 221
    functionName: protozero::basic_pbf_writer::close_submessage
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 1
    functionsReached:
    - protozero::basic_pbf_writer::commit_submessage
    - protozero_assert
    - protozero::basic_pbf_writer::rollback_submessage
    - size
    linkageType: ''
    returnType: void
    signature: void close_submessage()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::basic_pbf_writer::add_field
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:224,1
    - Dst: protozero::basic_pbf_writer::add_varint
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:225,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - tag
    - length
    argTypes:
    - pbf_tag_type
    - pbf_length_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 226
      start: 223
    functionDepth: 3
    functionLinenumber: 223
    functionLinenumberEnd: 226
    functionName: protozero::basic_pbf_writer::add_length_varint
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 6
    functionsReached:
    - protozero::basic_pbf_writer::add_varint
    - protozero::basic_pbf_writer::add_field
    linkageType: ''
    returnType: void
    signature: void add_length_varint(pbf_tag_type tag, pbf_length_type length)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' buffer'
    argTypes:
    - TBuffer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 238
      start: 236
    functionDepth: 0
    functionLinenumber: 236
    functionLinenumberEnd: 238
    functionName: protozero::basic_pbf_writer::basic_pbf_writer
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 14
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void basic_pbf_writer(TBuffer& buffer) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 244
      start: 244
    functionDepth: 0
    functionLinenumber: 244
    functionLinenumberEnd: 244
    functionName: protozero::basic_pbf_writer::basic_pbf_writer
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 14
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void basic_pbf_writer() noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::basic_pbf_writer::open_submessage
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:259,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' parent_writer'
    - tag
    argTypes:
    - basic_pbf_writer
    - pbf_tag_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 260
      start: 256
    functionDepth: 4
    functionLinenumber: 256
    functionLinenumberEnd: 260
    functionName: protozero::basic_pbf_writer::basic_pbf_writer
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 14
    functionsReached:
    - protozero::basic_pbf_writer::open_submessage
    linkageType: ''
    returnType: void
    signature: void basic_pbf_writer(basic_pbf_writer& parent_writer, pbf_tag_type
      tag, std::size_t size = 0)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 263
      start: 263
    functionDepth: 0
    functionLinenumber: 263
    functionLinenumberEnd: 263
    functionName: protozero::basic_pbf_writer::basic_pbf_writer
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 14
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void basic_pbf_writer(const basic_pbf_writer&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 266
      start: 266
    functionDepth: 0
    functionLinenumber: 266
    functionLinenumberEnd: 266
    functionName: '& operator=(const basic_pbf_writer&)'
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: basic_pbf_writer
    signature: basic_pbf_writer & operator=(const basic_pbf_writer&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ' other'
    argTypes:
    - basic_pbf_writer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 281
      start: 272
    functionDepth: 0
    functionLinenumber: 272
    functionLinenumberEnd: 281
    functionName: protozero::basic_pbf_writer::basic_pbf_writer
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 14
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void basic_pbf_writer(basic_pbf_writer&& other) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - ' other'
    argTypes:
    - basic_pbf_writer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 297
      start: 287
    functionDepth: 0
    functionLinenumber: 287
    functionLinenumberEnd: 297
    functionName: '& operator=(basic_pbf_writer&& other) noexcept'
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: basic_pbf_writer
    signature: basic_pbf_writer & operator=(basic_pbf_writer&& other) noexcept
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: close_submessage
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:302,1
    - Dst: std::terminate
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:308,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 310
      start: 299
    functionDepth: 0
    functionLinenumber: 299
    functionLinenumberEnd: 310
    functionName: ~basic_pbf_writer() noexcept
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached:
    - close_submessage
    - std::terminate
    linkageType: ''
    returnType: void
    signature: void ~basic_pbf_writer() noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 319
      start: 317
    functionDepth: 0
    functionLinenumber: 317
    functionLinenumberEnd: 319
    functionName: protozero::basic_pbf_writer::valid
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool valid() const noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::basic_pbf_writer::swap
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:328,1
    - Dst: protozero::basic_pbf_writer::swap
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:329,1
    - Dst: protozero::basic_pbf_writer::swap
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:330,1
    - Dst: protozero::basic_pbf_writer::swap
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:331,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - ' other'
    argTypes:
    - basic_pbf_writer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 332
      start: 326
    functionDepth: 1
    functionLinenumber: 326
    functionLinenumberEnd: 332
    functionName: protozero::basic_pbf_writer::swap
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 2
    functionsReached:
    - protozero::basic_pbf_writer::swap
    linkageType: ''
    returnType: void
    signature: void swap(basic_pbf_writer& other) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero_assert
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:343,1
    - Dst: protozero::reserve_additional
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:344,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - size
    argTypes:
    - std::size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 345
      start: 342
    functionDepth: 1
    functionLinenumber: 342
    functionLinenumberEnd: 345
    functionName: protozero::basic_pbf_writer::reserve
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 4
    functionsReached:
    - protozero_assert
    - protozero::reserve_additional
    linkageType: ''
    returnType: void
    signature: void reserve(std::size_t size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero_assert
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:356,1
    - Dst: protozero_assert
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:357,1
    - Dst: protozero::basic_pbf_writer::close_submessage
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:358,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 361
      start: 355
    functionDepth: 3
    functionLinenumber: 355
    functionLinenumberEnd: 361
    functionName: protozero::basic_pbf_writer::commit
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached:
    - protozero::basic_pbf_writer::close_submessage
    - protozero_assert
    linkageType: ''
    returnType: void
    signature: void commit()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero_assert
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:372,1
    - Dst: protozero_assert
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:373,1
    - Dst: protozero::basic_pbf_writer::rollback_submessage
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:374,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 377
      start: 371
    functionDepth: 2
    functionLinenumber: 371
    functionLinenumberEnd: 377
    functionName: protozero::basic_pbf_writer::rollback
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached:
    - protozero_assert
    - protozero::basic_pbf_writer::rollback_submessage
    linkageType: ''
    returnType: void
    signature: void rollback()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::basic_pbf_writer::add_field
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:391,1
    - Dst: protozero_assert
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:392,1
    - Dst: protozero_assert
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:393,1
    - Dst: push_back
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:394,1
    - Dst: static_cast<char>
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:394,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - tag
    - value
    argTypes:
    - pbf_tag_type
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 395
      start: 390
    functionDepth: 3
    functionLinenumber: 390
    functionLinenumberEnd: 395
    functionName: protozero::basic_pbf_writer::add_bool
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached:
    - push_back
    - protozero_assert
    - protozero::basic_pbf_writer::add_field
    - static_cast<char>
    linkageType: ''
    returnType: void
    signature: void add_bool(pbf_tag_type tag, bool value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::basic_pbf_writer::add_tagged_varint
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:404,1
    - Dst: static_cast<uint64_t>
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:404,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - tag
    - value
    argTypes:
    - pbf_tag_type
    - int32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 405
      start: 403
    functionDepth: 4
    functionLinenumber: 403
    functionLinenumberEnd: 405
    functionName: protozero::basic_pbf_writer::add_enum
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached:
    - protozero::basic_pbf_writer::add_tagged_varint
    - static_cast<uint64_t>
    linkageType: ''
    returnType: void
    signature: void add_enum(pbf_tag_type tag, int32_t value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::basic_pbf_writer::add_tagged_varint
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:414,1
    - Dst: static_cast<uint64_t>
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:414,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - tag
    - value
    argTypes:
    - pbf_tag_type
    - int32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 415
      start: 413
    functionDepth: 4
    functionLinenumber: 413
    functionLinenumberEnd: 415
    functionName: protozero::basic_pbf_writer::add_int32
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached:
    - protozero::basic_pbf_writer::add_tagged_varint
    - static_cast<uint64_t>
    linkageType: ''
    returnType: void
    signature: void add_int32(pbf_tag_type tag, int32_t value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::basic_pbf_writer::add_tagged_varint
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:424,1
    - Dst: encode_zigzag32
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:424,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - tag
    - value
    argTypes:
    - pbf_tag_type
    - int32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 425
      start: 423
    functionDepth: 4
    functionLinenumber: 423
    functionLinenumberEnd: 425
    functionName: protozero::basic_pbf_writer::add_sint32
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached:
    - encode_zigzag32
    - protozero::basic_pbf_writer::add_tagged_varint
    linkageType: ''
    returnType: void
    signature: void add_sint32(pbf_tag_type tag, int32_t value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::basic_pbf_writer::add_tagged_varint
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:434,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - tag
    - value
    argTypes:
    - pbf_tag_type
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 435
      start: 433
    functionDepth: 4
    functionLinenumber: 433
    functionLinenumberEnd: 435
    functionName: protozero::basic_pbf_writer::add_uint32
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached:
    - protozero::basic_pbf_writer::add_tagged_varint
    linkageType: ''
    returnType: void
    signature: void add_uint32(pbf_tag_type tag, uint32_t value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::basic_pbf_writer::add_tagged_varint
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:444,1
    - Dst: static_cast<uint64_t>
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:444,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - tag
    - value
    argTypes:
    - pbf_tag_type
    - int64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 445
      start: 443
    functionDepth: 4
    functionLinenumber: 443
    functionLinenumberEnd: 445
    functionName: protozero::basic_pbf_writer::add_int64
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached:
    - protozero::basic_pbf_writer::add_tagged_varint
    - static_cast<uint64_t>
    linkageType: ''
    returnType: void
    signature: void add_int64(pbf_tag_type tag, int64_t value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::basic_pbf_writer::add_tagged_varint
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:454,1
    - Dst: encode_zigzag64
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:454,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - tag
    - value
    argTypes:
    - pbf_tag_type
    - int64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 455
      start: 453
    functionDepth: 4
    functionLinenumber: 453
    functionLinenumberEnd: 455
    functionName: protozero::basic_pbf_writer::add_sint64
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached:
    - protozero::basic_pbf_writer::add_tagged_varint
    - encode_zigzag64
    linkageType: ''
    returnType: void
    signature: void add_sint64(pbf_tag_type tag, int64_t value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::basic_pbf_writer::add_tagged_varint
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:464,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - tag
    - value
    argTypes:
    - pbf_tag_type
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 465
      start: 463
    functionDepth: 4
    functionLinenumber: 463
    functionLinenumberEnd: 465
    functionName: protozero::basic_pbf_writer::add_uint64
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached:
    - protozero::basic_pbf_writer::add_tagged_varint
    linkageType: ''
    returnType: void
    signature: void add_uint64(pbf_tag_type tag, uint64_t value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::basic_pbf_writer::add_field
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:474,1
    - Dst: protozero::basic_pbf_writer::add_fixed
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:475,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - tag
    - value
    argTypes:
    - pbf_tag_type
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 476
      start: 473
    functionDepth: 3
    functionLinenumber: 473
    functionLinenumberEnd: 476
    functionName: protozero::basic_pbf_writer::add_fixed32
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached:
    - protozero::basic_pbf_writer::add_field
    - protozero::basic_pbf_writer::add_fixed
    linkageType: ''
    returnType: void
    signature: void add_fixed32(pbf_tag_type tag, uint32_t value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::basic_pbf_writer::add_field
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:485,1
    - Dst: protozero::basic_pbf_writer::add_fixed
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:486,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - tag
    - value
    argTypes:
    - pbf_tag_type
    - int32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 487
      start: 484
    functionDepth: 3
    functionLinenumber: 484
    functionLinenumberEnd: 487
    functionName: protozero::basic_pbf_writer::add_sfixed32
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached:
    - protozero::basic_pbf_writer::add_field
    - protozero::basic_pbf_writer::add_fixed
    linkageType: ''
    returnType: void
    signature: void add_sfixed32(pbf_tag_type tag, int32_t value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::basic_pbf_writer::add_field
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:496,1
    - Dst: protozero::basic_pbf_writer::add_fixed
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:497,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - tag
    - value
    argTypes:
    - pbf_tag_type
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 498
      start: 495
    functionDepth: 3
    functionLinenumber: 495
    functionLinenumberEnd: 498
    functionName: protozero::basic_pbf_writer::add_fixed64
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached:
    - protozero::basic_pbf_writer::add_field
    - protozero::basic_pbf_writer::add_fixed
    linkageType: ''
    returnType: void
    signature: void add_fixed64(pbf_tag_type tag, uint64_t value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::basic_pbf_writer::add_field
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:507,1
    - Dst: protozero::basic_pbf_writer::add_fixed
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:508,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - tag
    - value
    argTypes:
    - pbf_tag_type
    - int64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 509
      start: 506
    functionDepth: 3
    functionLinenumber: 506
    functionLinenumberEnd: 509
    functionName: protozero::basic_pbf_writer::add_sfixed64
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached:
    - protozero::basic_pbf_writer::add_field
    - protozero::basic_pbf_writer::add_fixed
    linkageType: ''
    returnType: void
    signature: void add_sfixed64(pbf_tag_type tag, int64_t value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::basic_pbf_writer::add_field
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:518,1
    - Dst: protozero::basic_pbf_writer::add_fixed
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:519,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - tag
    - value
    argTypes:
    - pbf_tag_type
    - float
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 520
      start: 517
    functionDepth: 3
    functionLinenumber: 517
    functionLinenumberEnd: 520
    functionName: protozero::basic_pbf_writer::add_float
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached:
    - protozero::basic_pbf_writer::add_field
    - protozero::basic_pbf_writer::add_fixed
    linkageType: ''
    returnType: void
    signature: void add_float(pbf_tag_type tag, float value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::basic_pbf_writer::add_field
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:529,1
    - Dst: protozero::basic_pbf_writer::add_fixed
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:530,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - tag
    - value
    argTypes:
    - pbf_tag_type
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 531
      start: 528
    functionDepth: 3
    functionLinenumber: 528
    functionLinenumberEnd: 531
    functionName: protozero::basic_pbf_writer::add_double
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached:
    - protozero::basic_pbf_writer::add_field
    - protozero::basic_pbf_writer::add_fixed
    linkageType: ''
    returnType: void
    signature: void add_double(pbf_tag_type tag, double value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero_assert
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:541,1
    - Dst: protozero_assert
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:542,1
    - Dst: protozero_assert
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:543,1
    - Dst: pdns::max
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:543,1
    - Dst: protozero::basic_pbf_writer::add_length_varint
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:544,1
    - Dst: static_cast<pbf_length_type>
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:544,1
    - Dst: protozero::append
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:545,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - tag
    - value
    - size
    argTypes:
    - pbf_tag_type
    - char*
    - std::size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 546
      start: 540
    functionDepth: 4
    functionLinenumber: 540
    functionLinenumberEnd: 546
    functionName: protozero::basic_pbf_writer::add_bytes
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 10
    functionsReached:
    - pdns::max
    - protozero::append
    - protozero::basic_pbf_writer::add_length_varint
    - protozero_assert
    - static_cast<pbf_length_type>
    linkageType: ''
    returnType: void
    signature: void add_bytes(pbf_tag_type tag, const char* value, std::size_t size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::basic_pbf_writer::add_bytes
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:555,1
    - Dst: data
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:555,1
    - Dst: size
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:555,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - tag
    - ' value'
    argTypes:
    - pbf_tag_type
    - data_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 556
      start: 554
    functionDepth: 1
    functionLinenumber: 554
    functionLinenumberEnd: 556
    functionName: protozero::basic_pbf_writer::add_bytes
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 11
    functionsReached:
    - protozero::basic_pbf_writer::add_bytes
    - size
    - data
    linkageType: ''
    returnType: void
    signature: void add_bytes(pbf_tag_type tag, const data_view& value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::basic_pbf_writer::add_bytes
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:565,1
    - Dst: data
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:565,1
    - Dst: size
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:565,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - tag
    - ' value'
    argTypes:
    - pbf_tag_type
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 566
      start: 564
    functionDepth: 1
    functionLinenumber: 564
    functionLinenumberEnd: 566
    functionName: protozero::basic_pbf_writer::add_bytes
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 12
    functionsReached:
    - protozero::basic_pbf_writer::add_bytes
    - size
    - data
    linkageType: ''
    returnType: void
    signature: void add_bytes(pbf_tag_type tag, const std::string& value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::basic_pbf_writer::add_bytes
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:576,1
    - Dst: std::strlen
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:576,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - tag
    - value
    argTypes:
    - pbf_tag_type
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 577
      start: 575
    functionDepth: 1
    functionLinenumber: 575
    functionLinenumberEnd: 577
    functionName: protozero::basic_pbf_writer::add_bytes
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 13
    functionsReached:
    - protozero::basic_pbf_writer::add_bytes
    - std::strlen
    linkageType: ''
    returnType: void
    signature: void add_bytes(pbf_tag_type tag, const char* value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero_assert
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:600,1
    - Dst: protozero_assert
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:601,1
    - Dst: size
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:603,1
    - Dst: protozero_assert
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:604,1
    - Dst: pdns::max
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:604,1
    - Dst: protozero::basic_pbf_writer::add_length_varint
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:605,1
    - Dst: static_cast<pbf_length_type>
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:605,1
    - Dst: protozero::reserve_additional
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:606,1
    - Dst: protozero::append
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:607,1
    - Dst: data
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:607,1
    - Dst: size
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:607,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - tag
    argTypes:
    - pbf_tag_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 608
      start: 599
    functionDepth: 4
    functionLinenumber: 599
    functionLinenumberEnd: 608
    functionName: protozero::basic_pbf_writer::add_bytes_vectored
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached:
    - pdns::max
    - protozero::append
    - protozero::basic_pbf_writer::add_length_varint
    - protozero_assert
    - static_cast<pbf_length_type>
    - size
    - protozero::reserve_additional
    - data
    linkageType: ''
    returnType: void
    signature: void add_bytes_vectored(pbf_tag_type tag, Ts&&... values)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::basic_pbf_writer::add_bytes
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:618,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - tag
    - value
    - size
    argTypes:
    - pbf_tag_type
    - char*
    - std::size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 619
      start: 617
    functionDepth: 5
    functionLinenumber: 617
    functionLinenumberEnd: 619
    functionName: protozero::basic_pbf_writer::add_string
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached:
    - protozero::basic_pbf_writer::add_bytes
    linkageType: ''
    returnType: void
    signature: void add_string(pbf_tag_type tag, const char* value, std::size_t size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::basic_pbf_writer::add_bytes
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:628,1
    - Dst: data
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:628,1
    - Dst: size
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:628,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - tag
    - ' value'
    argTypes:
    - pbf_tag_type
    - data_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 629
      start: 627
    functionDepth: 5
    functionLinenumber: 627
    functionLinenumberEnd: 629
    functionName: protozero::basic_pbf_writer::add_string
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached:
    - protozero::basic_pbf_writer::add_bytes
    - size
    - data
    linkageType: ''
    returnType: void
    signature: void add_string(pbf_tag_type tag, const data_view& value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::basic_pbf_writer::add_bytes
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:638,1
    - Dst: data
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:638,1
    - Dst: size
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:638,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - tag
    - ' value'
    argTypes:
    - pbf_tag_type
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 639
      start: 637
    functionDepth: 5
    functionLinenumber: 637
    functionLinenumberEnd: 639
    functionName: protozero::basic_pbf_writer::add_string
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached:
    - protozero::basic_pbf_writer::add_bytes
    - size
    - data
    linkageType: ''
    returnType: void
    signature: void add_string(pbf_tag_type tag, const std::string& value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::basic_pbf_writer::add_bytes
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:649,1
    - Dst: std::strlen
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:649,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - tag
    - value
    argTypes:
    - pbf_tag_type
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 650
      start: 648
    functionDepth: 5
    functionLinenumber: 648
    functionLinenumberEnd: 650
    functionName: protozero::basic_pbf_writer::add_string
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached:
    - protozero::basic_pbf_writer::add_bytes
    - std::strlen
    linkageType: ''
    returnType: void
    signature: void add_string(pbf_tag_type tag, const char* value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::basic_pbf_writer::add_bytes
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:660,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - tag
    - value
    - size
    argTypes:
    - pbf_tag_type
    - char*
    - std::size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 661
      start: 659
    functionDepth: 5
    functionLinenumber: 659
    functionLinenumberEnd: 661
    functionName: protozero::basic_pbf_writer::add_message
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached:
    - protozero::basic_pbf_writer::add_bytes
    linkageType: ''
    returnType: void
    signature: void add_message(pbf_tag_type tag, const char* value, std::size_t size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::basic_pbf_writer::add_bytes
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:670,1
    - Dst: data
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:670,1
    - Dst: size
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:670,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - tag
    - ' value'
    argTypes:
    - pbf_tag_type
    - data_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 671
      start: 669
    functionDepth: 5
    functionLinenumber: 669
    functionLinenumberEnd: 671
    functionName: protozero::basic_pbf_writer::add_message
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached:
    - protozero::basic_pbf_writer::add_bytes
    - size
    - data
    linkageType: ''
    returnType: void
    signature: void add_message(pbf_tag_type tag, const data_view& value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::basic_pbf_writer::add_bytes
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:680,1
    - Dst: data
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:680,1
    - Dst: size
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:680,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - tag
    - ' value'
    argTypes:
    - pbf_tag_type
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 681
      start: 679
    functionDepth: 5
    functionLinenumber: 679
    functionLinenumberEnd: 681
    functionName: protozero::basic_pbf_writer::add_message
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached:
    - protozero::basic_pbf_writer::add_bytes
    - size
    - data
    linkageType: ''
    returnType: void
    signature: void add_message(pbf_tag_type tag, const std::string& value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::basic_pbf_writer::add_packed_varint
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:701,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - tag
    - first
    - last
    argTypes:
    - pbf_tag_type
    - InputIterator
    - InputIterator
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 702
      start: 700
    functionDepth: 1
    functionLinenumber: 700
    functionLinenumberEnd: 702
    functionName: protozero::basic_pbf_writer::add_packed_bool
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached:
    - protozero::basic_pbf_writer::add_packed_varint
    linkageType: ''
    returnType: void
    signature: void add_packed_bool(pbf_tag_type tag, InputIterator first, InputIterator
      last)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::basic_pbf_writer::add_packed_varint
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:715,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - tag
    - first
    - last
    argTypes:
    - pbf_tag_type
    - InputIterator
    - InputIterator
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 716
      start: 714
    functionDepth: 1
    functionLinenumber: 714
    functionLinenumberEnd: 716
    functionName: protozero::basic_pbf_writer::add_packed_enum
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached:
    - protozero::basic_pbf_writer::add_packed_varint
    linkageType: ''
    returnType: void
    signature: void add_packed_enum(pbf_tag_type tag, InputIterator first, InputIterator
      last)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::basic_pbf_writer::add_packed_varint
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:729,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - tag
    - first
    - last
    argTypes:
    - pbf_tag_type
    - InputIterator
    - InputIterator
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 730
      start: 728
    functionDepth: 1
    functionLinenumber: 728
    functionLinenumberEnd: 730
    functionName: protozero::basic_pbf_writer::add_packed_int32
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached:
    - protozero::basic_pbf_writer::add_packed_varint
    linkageType: ''
    returnType: void
    signature: void add_packed_int32(pbf_tag_type tag, InputIterator first, InputIterator
      last)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::basic_pbf_writer::add_packed_svarint
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:743,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - tag
    - first
    - last
    argTypes:
    - pbf_tag_type
    - InputIterator
    - InputIterator
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 744
      start: 742
    functionDepth: 1
    functionLinenumber: 742
    functionLinenumberEnd: 744
    functionName: protozero::basic_pbf_writer::add_packed_sint32
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached:
    - protozero::basic_pbf_writer::add_packed_svarint
    linkageType: ''
    returnType: void
    signature: void add_packed_sint32(pbf_tag_type tag, InputIterator first, InputIterator
      last)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::basic_pbf_writer::add_packed_varint
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:757,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - tag
    - first
    - last
    argTypes:
    - pbf_tag_type
    - InputIterator
    - InputIterator
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 758
      start: 756
    functionDepth: 1
    functionLinenumber: 756
    functionLinenumberEnd: 758
    functionName: protozero::basic_pbf_writer::add_packed_uint32
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached:
    - protozero::basic_pbf_writer::add_packed_varint
    linkageType: ''
    returnType: void
    signature: void add_packed_uint32(pbf_tag_type tag, InputIterator first, InputIterator
      last)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::basic_pbf_writer::add_packed_varint
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:771,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - tag
    - first
    - last
    argTypes:
    - pbf_tag_type
    - InputIterator
    - InputIterator
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 772
      start: 770
    functionDepth: 1
    functionLinenumber: 770
    functionLinenumberEnd: 772
    functionName: protozero::basic_pbf_writer::add_packed_int64
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached:
    - protozero::basic_pbf_writer::add_packed_varint
    linkageType: ''
    returnType: void
    signature: void add_packed_int64(pbf_tag_type tag, InputIterator first, InputIterator
      last)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::basic_pbf_writer::add_packed_svarint
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:785,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - tag
    - first
    - last
    argTypes:
    - pbf_tag_type
    - InputIterator
    - InputIterator
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 786
      start: 784
    functionDepth: 1
    functionLinenumber: 784
    functionLinenumberEnd: 786
    functionName: protozero::basic_pbf_writer::add_packed_sint64
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached:
    - protozero::basic_pbf_writer::add_packed_svarint
    linkageType: ''
    returnType: void
    signature: void add_packed_sint64(pbf_tag_type tag, InputIterator first, InputIterator
      last)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::basic_pbf_writer::add_packed_varint
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:799,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - tag
    - first
    - last
    argTypes:
    - pbf_tag_type
    - InputIterator
    - InputIterator
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 800
      start: 798
    functionDepth: 1
    functionLinenumber: 798
    functionLinenumberEnd: 800
    functionName: protozero::basic_pbf_writer::add_packed_uint64
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached:
    - protozero::basic_pbf_writer::add_packed_varint
    linkageType: ''
    returnType: void
    signature: void add_packed_uint64(pbf_tag_type tag, InputIterator first, InputIterator
      last)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 3
    argCount: 3
    argNames:
    - tag
    - first
    - last
    argTypes:
    - pbf_tag_type
    - InputIterator
    - InputIterator
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 829
      start: 820
    functionDepth: 0
    functionLinenumber: 820
    functionLinenumberEnd: 829
    functionName: protozero::basic_pbf_writer::add_packed_fixed
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void add_packed_fixed(pbf_tag_type tag, InputIterator first, InputIterator
      last)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 828
      start: 827
    functionDepth: 0
    functionLinenumber: 827
    functionLinenumberEnd: 828
    functionName: protozero::basic_pbf_writer::add_packed_fixed
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void add_packed_fixed<ValueType, InputIterator>(tag, first, last,\n
      \           typename std::iterator_traits<InputIterator>::iterator_category"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - tag
    - first
    - last
    argTypes:
    - pbf_tag_type
    - InputIterator
    - InputIterator
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 844
      start: 841
    functionDepth: 0
    functionLinenumber: 841
    functionLinenumberEnd: 844
    functionName: protozero::basic_pbf_writer::add_packed_fixed32
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void add_packed_fixed32(pbf_tag_type tag, InputIterator first, InputIterator
      last)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 843
      start: 842
    functionDepth: 0
    functionLinenumber: 842
    functionLinenumberEnd: 843
    functionName: protozero::basic_pbf_writer::add_packed_fixed
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void add_packed_fixed<uint32_t, InputIterator>(tag, first, last,\n
      \           typename std::iterator_traits<InputIterator>::iterator_category"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - tag
    - first
    - last
    argTypes:
    - pbf_tag_type
    - InputIterator
    - InputIterator
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 859
      start: 856
    functionDepth: 0
    functionLinenumber: 856
    functionLinenumberEnd: 859
    functionName: protozero::basic_pbf_writer::add_packed_sfixed32
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void add_packed_sfixed32(pbf_tag_type tag, InputIterator first, InputIterator
      last)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 858
      start: 857
    functionDepth: 0
    functionLinenumber: 857
    functionLinenumberEnd: 858
    functionName: protozero::basic_pbf_writer::add_packed_fixed
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void add_packed_fixed<int32_t, InputIterator>(tag, first, last,\n
      \           typename std::iterator_traits<InputIterator>::iterator_category"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - tag
    - first
    - last
    argTypes:
    - pbf_tag_type
    - InputIterator
    - InputIterator
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 874
      start: 871
    functionDepth: 0
    functionLinenumber: 871
    functionLinenumberEnd: 874
    functionName: protozero::basic_pbf_writer::add_packed_fixed64
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void add_packed_fixed64(pbf_tag_type tag, InputIterator first, InputIterator
      last)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 873
      start: 872
    functionDepth: 0
    functionLinenumber: 872
    functionLinenumberEnd: 873
    functionName: protozero::basic_pbf_writer::add_packed_fixed
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void add_packed_fixed<uint64_t, InputIterator>(tag, first, last,\n
      \           typename std::iterator_traits<InputIterator>::iterator_category"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - tag
    - first
    - last
    argTypes:
    - pbf_tag_type
    - InputIterator
    - InputIterator
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 889
      start: 886
    functionDepth: 0
    functionLinenumber: 886
    functionLinenumberEnd: 889
    functionName: protozero::basic_pbf_writer::add_packed_sfixed64
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void add_packed_sfixed64(pbf_tag_type tag, InputIterator first, InputIterator
      last)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 888
      start: 887
    functionDepth: 0
    functionLinenumber: 887
    functionLinenumberEnd: 888
    functionName: protozero::basic_pbf_writer::add_packed_fixed
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void add_packed_fixed<int64_t, InputIterator>(tag, first, last,\n
      \           typename std::iterator_traits<InputIterator>::iterator_category"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - tag
    - first
    - last
    argTypes:
    - pbf_tag_type
    - InputIterator
    - InputIterator
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 904
      start: 901
    functionDepth: 0
    functionLinenumber: 901
    functionLinenumberEnd: 904
    functionName: protozero::basic_pbf_writer::add_packed_float
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void add_packed_float(pbf_tag_type tag, InputIterator first, InputIterator
      last)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 903
      start: 902
    functionDepth: 0
    functionLinenumber: 902
    functionLinenumberEnd: 903
    functionName: protozero::basic_pbf_writer::add_packed_fixed
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void add_packed_fixed<float, InputIterator>(tag, first, last,\n            typename
      std::iterator_traits<InputIterator>::iterator_category"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - tag
    - first
    - last
    argTypes:
    - pbf_tag_type
    - InputIterator
    - InputIterator
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 919
      start: 916
    functionDepth: 0
    functionLinenumber: 916
    functionLinenumberEnd: 919
    functionName: protozero::basic_pbf_writer::add_packed_double
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void add_packed_double(pbf_tag_type tag, InputIterator first, InputIterator
      last)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 918
      start: 917
    functionDepth: 0
    functionLinenumber: 917
    functionLinenumberEnd: 918
    functionName: protozero::basic_pbf_writer::add_packed_fixed
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void add_packed_fixed<double, InputIterator>(tag, first, last,\n            typename
      std::iterator_traits<InputIterator>::iterator_category"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::swap
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:937,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' lhs'
    - ' rhs'
    argTypes:
    - basic_pbf_writer<TBuffer>
    - basic_pbf_writer<TBuffer>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 938
      start: 936
    functionDepth: 0
    functionLinenumber: 936
    functionLinenumberEnd: 938
    functionName: protozero::swap
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 4
    functionsReached:
    - protozero::swap
    linkageType: ''
    returnType: void
    signature: void swap(basic_pbf_writer<TBuffer>& lhs, basic_pbf_writer<TBuffer>&
      rhs) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 949
      start: 949
    functionDepth: 0
    functionLinenumber: 949
    functionLinenumberEnd: 949
    functionName: protozero::detail::packed_field::packed_field
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void packed_field(const packed_field&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 950
      start: 950
    functionDepth: 0
    functionLinenumber: 950
    functionLinenumberEnd: 950
    functionName: '& operator=(const packed_field&)'
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: packed_field
    signature: packed_field & operator=(const packed_field&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 952
      start: 952
    functionDepth: 0
    functionLinenumber: 952
    functionLinenumberEnd: 952
    functionName: protozero::detail::packed_field::packed_field
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void packed_field(packed_field&&) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 953
      start: 953
    functionDepth: 0
    functionLinenumber: 953
    functionLinenumberEnd: 953
    functionName: '& operator=(packed_field&&) noexcept'
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: packed_field
    signature: packed_field & operator=(packed_field&&) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 955
      start: 955
    functionDepth: 0
    functionLinenumber: 955
    functionLinenumberEnd: 955
    functionName: protozero::detail::packed_field::packed_field
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void packed_field()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - ' parent_writer'
    - tag
    argTypes:
    - basic_pbf_writer<TBuffer>
    - pbf_tag_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 959
      start: 957
    functionDepth: 0
    functionLinenumber: 957
    functionLinenumberEnd: 959
    functionName: protozero::detail::packed_field::packed_field
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void packed_field(basic_pbf_writer<TBuffer>& parent_writer, pbf_tag_type
      tag)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 3
    argNames:
    - ' parent_writer'
    - tag
    - size
    argTypes:
    - basic_pbf_writer<TBuffer>
    - pbf_tag_type
    - std::size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 963
      start: 961
    functionDepth: 0
    functionLinenumber: 961
    functionLinenumberEnd: 963
    functionName: protozero::detail::packed_field::packed_field
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void packed_field(basic_pbf_writer<TBuffer>& parent_writer, pbf_tag_type
      tag, std::size_t size)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 965
      start: 965
    functionDepth: 0
    functionLinenumber: 965
    functionLinenumberEnd: 965
    functionName: ~packed_field() noexcept
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~packed_field() noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::detail::packed_field::valid
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:968,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 969
      start: 967
    functionDepth: 1
    functionLinenumber: 967
    functionLinenumberEnd: 969
    functionName: protozero::detail::packed_field::valid
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 3
    functionsReached:
    - protozero::detail::packed_field::valid
    linkageType: ''
    returnType: bool
    signature: bool valid() const noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::detail::packed_field::commit
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:972,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 973
      start: 971
    functionDepth: 1
    functionLinenumber: 971
    functionLinenumberEnd: 973
    functionName: protozero::detail::packed_field::commit
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 3
    functionsReached:
    - protozero::detail::packed_field::commit
    linkageType: ''
    returnType: void
    signature: void commit()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::detail::packed_field::rollback
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:976,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 977
      start: 975
    functionDepth: 1
    functionLinenumber: 975
    functionLinenumberEnd: 977
    functionName: protozero::detail::packed_field::rollback
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 3
    functionsReached:
    - protozero::detail::packed_field::rollback
    linkageType: ''
    returnType: void
    signature: void rollback()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 981
      start: 979
    functionDepth: 0
    functionLinenumber: 979
    functionLinenumberEnd: 981
    functionName: '& writer() noexcept'
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: basic_pbf_writer<TBuffer>
    signature: basic_pbf_writer<TBuffer> & writer() noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 992
      start: 990
    functionDepth: 0
    functionLinenumber: 990
    functionLinenumberEnd: 992
    functionName: protozero::detail::packed_field_fixed::packed_field_fixed
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void packed_field_fixed()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<pbf_tag_type>
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:996,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - ' parent_writer'
    - tag
    argTypes:
    - basic_pbf_writer<TBuffer>
    - P
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 997
      start: 995
    functionDepth: 0
    functionLinenumber: 995
    functionLinenumberEnd: 997
    functionName: protozero::detail::packed_field_fixed::packed_field_fixed
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached:
    - static_cast<pbf_tag_type>
    linkageType: ''
    returnType: void
    signature: void packed_field_fixed(basic_pbf_writer<TBuffer>& parent_writer, P
      tag)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<pbf_tag_type>
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:1001,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 3
    argNames:
    - ' parent_writer'
    - tag
    - size
    argTypes:
    - basic_pbf_writer<TBuffer>
    - P
    - std::size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1002
      start: 1000
    functionDepth: 0
    functionLinenumber: 1000
    functionLinenumberEnd: 1002
    functionName: protozero::detail::packed_field_fixed::packed_field_fixed
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached:
    - static_cast<pbf_tag_type>
    linkageType: ''
    returnType: void
    signature: void packed_field_fixed(basic_pbf_writer<TBuffer>& parent_writer, P
      tag, std::size_t size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::detail::packed_field_fixed::writer
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:1005,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - value
    argTypes:
    - T
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1006
      start: 1004
    functionDepth: 0
    functionLinenumber: 1004
    functionLinenumberEnd: 1006
    functionName: protozero::detail::packed_field_fixed::add_element
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached:
    - protozero::detail::packed_field_fixed::writer
    linkageType: ''
    returnType: void
    signature: void add_element(T value)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1017
      start: 1015
    functionDepth: 0
    functionLinenumber: 1015
    functionLinenumberEnd: 1017
    functionName: protozero::detail::packed_field_varint::packed_field_varint
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void packed_field_varint()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<pbf_tag_type>
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:1021,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - ' parent_writer'
    - tag
    argTypes:
    - basic_pbf_writer<TBuffer>
    - P
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1022
      start: 1020
    functionDepth: 0
    functionLinenumber: 1020
    functionLinenumberEnd: 1022
    functionName: protozero::detail::packed_field_varint::packed_field_varint
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached:
    - static_cast<pbf_tag_type>
    linkageType: ''
    returnType: void
    signature: void packed_field_varint(basic_pbf_writer<TBuffer>& parent_writer,
      P tag)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::detail::packed_field_varint::writer
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:1025,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - value
    argTypes:
    - T
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1026
      start: 1024
    functionDepth: 0
    functionLinenumber: 1024
    functionLinenumberEnd: 1026
    functionName: protozero::detail::packed_field_varint::add_element
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached:
    - protozero::detail::packed_field_varint::writer
    linkageType: ''
    returnType: void
    signature: void add_element(T value)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1037
      start: 1035
    functionDepth: 0
    functionLinenumber: 1035
    functionLinenumberEnd: 1037
    functionName: protozero::detail::packed_field_svarint::packed_field_svarint
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void packed_field_svarint()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<pbf_tag_type>
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:1041,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - ' parent_writer'
    - tag
    argTypes:
    - basic_pbf_writer<TBuffer>
    - P
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1042
      start: 1040
    functionDepth: 0
    functionLinenumber: 1040
    functionLinenumberEnd: 1042
    functionName: protozero::detail::packed_field_svarint::packed_field_svarint
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached:
    - static_cast<pbf_tag_type>
    linkageType: ''
    returnType: void
    signature: void packed_field_svarint(basic_pbf_writer<TBuffer>& parent_writer,
      P tag)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::detail::packed_field_svarint::writer
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:1045,1
    - Dst: encode_zigzag64
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:1045,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - value
    argTypes:
    - T
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1046
      start: 1044
    functionDepth: 0
    functionLinenumber: 1044
    functionLinenumberEnd: 1046
    functionName: protozero::detail::packed_field_svarint::add_element
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached:
    - encode_zigzag64
    - protozero::detail::packed_field_svarint::writer
    linkageType: ''
    returnType: void
    signature: void add_element(T value)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 949
      start: 949
    functionDepth: 0
    functionLinenumber: 949
    functionLinenumberEnd: 949
    functionName: protozero::detail::packed_field::packed_field
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void packed_field(const packed_field&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 950
      start: 950
    functionDepth: 0
    functionLinenumber: 950
    functionLinenumberEnd: 950
    functionName: '& operator=(const packed_field&)'
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: packed_field
    signature: packed_field & operator=(const packed_field&)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 952
      start: 952
    functionDepth: 0
    functionLinenumber: 952
    functionLinenumberEnd: 952
    functionName: protozero::detail::packed_field::packed_field
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void packed_field(packed_field&&) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 953
      start: 953
    functionDepth: 0
    functionLinenumber: 953
    functionLinenumberEnd: 953
    functionName: '& operator=(packed_field&&) noexcept'
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: packed_field
    signature: packed_field & operator=(packed_field&&) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 955
      start: 955
    functionDepth: 0
    functionLinenumber: 955
    functionLinenumberEnd: 955
    functionName: protozero::detail::packed_field::packed_field
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void packed_field()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - ' parent_writer'
    - tag
    argTypes:
    - basic_pbf_writer<TBuffer>
    - pbf_tag_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 959
      start: 957
    functionDepth: 0
    functionLinenumber: 957
    functionLinenumberEnd: 959
    functionName: protozero::detail::packed_field::packed_field
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void packed_field(basic_pbf_writer<TBuffer>& parent_writer, pbf_tag_type
      tag)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 3
    argNames:
    - ' parent_writer'
    - tag
    - size
    argTypes:
    - basic_pbf_writer<TBuffer>
    - pbf_tag_type
    - std::size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 963
      start: 961
    functionDepth: 0
    functionLinenumber: 961
    functionLinenumberEnd: 963
    functionName: protozero::detail::packed_field::packed_field
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void packed_field(basic_pbf_writer<TBuffer>& parent_writer, pbf_tag_type
      tag, std::size_t size)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 965
      start: 965
    functionDepth: 0
    functionLinenumber: 965
    functionLinenumberEnd: 965
    functionName: ~packed_field() noexcept
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~packed_field() noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::detail::packed_field::valid
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:968,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 969
      start: 967
    functionDepth: 1
    functionLinenumber: 967
    functionLinenumberEnd: 969
    functionName: protozero::detail::packed_field::valid
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 4
    functionsReached:
    - protozero::detail::packed_field::valid
    linkageType: ''
    returnType: bool
    signature: bool valid() const noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::detail::packed_field::commit
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:972,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 973
      start: 971
    functionDepth: 1
    functionLinenumber: 971
    functionLinenumberEnd: 973
    functionName: protozero::detail::packed_field::commit
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 4
    functionsReached:
    - protozero::detail::packed_field::commit
    linkageType: ''
    returnType: void
    signature: void commit()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::detail::packed_field::rollback
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:976,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 977
      start: 975
    functionDepth: 1
    functionLinenumber: 975
    functionLinenumberEnd: 977
    functionName: protozero::detail::packed_field::rollback
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 4
    functionsReached:
    - protozero::detail::packed_field::rollback
    linkageType: ''
    returnType: void
    signature: void rollback()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 981
      start: 979
    functionDepth: 0
    functionLinenumber: 979
    functionLinenumberEnd: 981
    functionName: '& writer() noexcept'
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: basic_pbf_writer<TBuffer>
    signature: basic_pbf_writer<TBuffer> & writer() noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 992
      start: 990
    functionDepth: 0
    functionLinenumber: 990
    functionLinenumberEnd: 992
    functionName: protozero::detail::packed_field_fixed::packed_field_fixed
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void packed_field_fixed()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<pbf_tag_type>
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:996,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - ' parent_writer'
    - tag
    argTypes:
    - basic_pbf_writer<TBuffer>
    - P
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 997
      start: 995
    functionDepth: 0
    functionLinenumber: 995
    functionLinenumberEnd: 997
    functionName: protozero::detail::packed_field_fixed::packed_field_fixed
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached:
    - static_cast<pbf_tag_type>
    linkageType: ''
    returnType: void
    signature: void packed_field_fixed(basic_pbf_writer<TBuffer>& parent_writer, P
      tag)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<pbf_tag_type>
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:1001,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 3
    argNames:
    - ' parent_writer'
    - tag
    - size
    argTypes:
    - basic_pbf_writer<TBuffer>
    - P
    - std::size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1002
      start: 1000
    functionDepth: 0
    functionLinenumber: 1000
    functionLinenumberEnd: 1002
    functionName: protozero::detail::packed_field_fixed::packed_field_fixed
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached:
    - static_cast<pbf_tag_type>
    linkageType: ''
    returnType: void
    signature: void packed_field_fixed(basic_pbf_writer<TBuffer>& parent_writer, P
      tag, std::size_t size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::detail::packed_field_fixed::writer
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:1005,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - value
    argTypes:
    - T
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1006
      start: 1004
    functionDepth: 0
    functionLinenumber: 1004
    functionLinenumberEnd: 1006
    functionName: protozero::detail::packed_field_fixed::add_element
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached:
    - protozero::detail::packed_field_fixed::writer
    linkageType: ''
    returnType: void
    signature: void add_element(T value)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1017
      start: 1015
    functionDepth: 0
    functionLinenumber: 1015
    functionLinenumberEnd: 1017
    functionName: protozero::detail::packed_field_varint::packed_field_varint
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void packed_field_varint()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<pbf_tag_type>
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:1021,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - ' parent_writer'
    - tag
    argTypes:
    - basic_pbf_writer<TBuffer>
    - P
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1022
      start: 1020
    functionDepth: 0
    functionLinenumber: 1020
    functionLinenumberEnd: 1022
    functionName: protozero::detail::packed_field_varint::packed_field_varint
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached:
    - static_cast<pbf_tag_type>
    linkageType: ''
    returnType: void
    signature: void packed_field_varint(basic_pbf_writer<TBuffer>& parent_writer,
      P tag)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::detail::packed_field_varint::writer
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:1025,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - value
    argTypes:
    - T
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1026
      start: 1024
    functionDepth: 0
    functionLinenumber: 1024
    functionLinenumberEnd: 1026
    functionName: protozero::detail::packed_field_varint::add_element
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached:
    - protozero::detail::packed_field_varint::writer
    linkageType: ''
    returnType: void
    signature: void add_element(T value)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1037
      start: 1035
    functionDepth: 0
    functionLinenumber: 1035
    functionLinenumberEnd: 1037
    functionName: protozero::detail::packed_field_svarint::packed_field_svarint
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void packed_field_svarint()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<pbf_tag_type>
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:1041,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - ' parent_writer'
    - tag
    argTypes:
    - basic_pbf_writer<TBuffer>
    - P
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1042
      start: 1040
    functionDepth: 0
    functionLinenumber: 1040
    functionLinenumberEnd: 1042
    functionName: protozero::detail::packed_field_svarint::packed_field_svarint
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached:
    - static_cast<pbf_tag_type>
    linkageType: ''
    returnType: void
    signature: void packed_field_svarint(basic_pbf_writer<TBuffer>& parent_writer,
      P tag)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::detail::packed_field_svarint::writer
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:1045,1
    - Dst: encode_zigzag64
      Src: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp:1045,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - value
    argTypes:
    - T
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1046
      start: 1044
    functionDepth: 0
    functionLinenumber: 1044
    functionLinenumberEnd: 1046
    functionName: protozero::detail::packed_field_svarint::add_element
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    functionUses: 0
    functionsReached:
    - encode_zigzag64
    - protozero::detail::packed_field_svarint::writer
    linkageType: ''
    returnType: void
    signature: void add_element(T value)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: reinterpret_cast<const int8_t*>
      Src: /src/pdns/ext/protozero/include/protozero/varint.hpp:35,1
    - Dst: reinterpret_cast<const int8_t*>
      Src: /src/pdns/ext/protozero/include/protozero/varint.hpp:36,1
    - Dst: static_cast<uint64_t>
      Src: /src/pdns/ext/protozero/include/protozero/varint.hpp:43,1
    - Dst: static_cast<uint64_t>
      Src: /src/pdns/ext/protozero/include/protozero/varint.hpp:44,1
    - Dst: static_cast<uint64_t>
      Src: /src/pdns/ext/protozero/include/protozero/varint.hpp:45,1
    - Dst: static_cast<uint64_t>
      Src: /src/pdns/ext/protozero/include/protozero/varint.hpp:46,1
    - Dst: static_cast<uint64_t>
      Src: /src/pdns/ext/protozero/include/protozero/varint.hpp:47,1
    - Dst: static_cast<uint64_t>
      Src: /src/pdns/ext/protozero/include/protozero/varint.hpp:48,1
    - Dst: static_cast<uint64_t>
      Src: /src/pdns/ext/protozero/include/protozero/varint.hpp:49,1
    - Dst: static_cast<uint64_t>
      Src: /src/pdns/ext/protozero/include/protozero/varint.hpp:50,1
    - Dst: static_cast<uint64_t>
      Src: /src/pdns/ext/protozero/include/protozero/varint.hpp:51,1
    - Dst: static_cast<uint64_t>
      Src: /src/pdns/ext/protozero/include/protozero/varint.hpp:52,1
    - Dst: static_cast<uint64_t>
      Src: /src/pdns/ext/protozero/include/protozero/varint.hpp:58,1
    - Dst: static_cast<uint64_t>
      Src: /src/pdns/ext/protozero/include/protozero/varint.hpp:64,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/ext/protozero/include/protozero/varint.hpp:67,1
    CyclomaticComplexity: 27
    EdgeCount: 27
    ICount: 66
    argCount: 2
    argNames:
    - data
    - end
    argTypes:
    - char**
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 34
    functionDepth: 0
    functionLinenumber: 34
    functionLinenumberEnd: 69
    functionName: protozero::detail::decode_varint_impl
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/varint.hpp
    functionUses: 0
    functionsReached:
    - reinterpret_cast<const char*>
    - static_cast<uint64_t>
    - reinterpret_cast<const int8_t*>
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t decode_varint_impl(const char** data, const char* end)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: reinterpret_cast<const int8_t*>
      Src: /src/pdns/ext/protozero/include/protozero/varint.hpp:35,1
    - Dst: reinterpret_cast<const int8_t*>
      Src: /src/pdns/ext/protozero/include/protozero/varint.hpp:36,1
    - Dst: static_cast<uint64_t>
      Src: /src/pdns/ext/protozero/include/protozero/varint.hpp:43,1
    - Dst: static_cast<uint64_t>
      Src: /src/pdns/ext/protozero/include/protozero/varint.hpp:44,1
    - Dst: static_cast<uint64_t>
      Src: /src/pdns/ext/protozero/include/protozero/varint.hpp:45,1
    - Dst: static_cast<uint64_t>
      Src: /src/pdns/ext/protozero/include/protozero/varint.hpp:46,1
    - Dst: static_cast<uint64_t>
      Src: /src/pdns/ext/protozero/include/protozero/varint.hpp:47,1
    - Dst: static_cast<uint64_t>
      Src: /src/pdns/ext/protozero/include/protozero/varint.hpp:48,1
    - Dst: static_cast<uint64_t>
      Src: /src/pdns/ext/protozero/include/protozero/varint.hpp:49,1
    - Dst: static_cast<uint64_t>
      Src: /src/pdns/ext/protozero/include/protozero/varint.hpp:50,1
    - Dst: static_cast<uint64_t>
      Src: /src/pdns/ext/protozero/include/protozero/varint.hpp:51,1
    - Dst: static_cast<uint64_t>
      Src: /src/pdns/ext/protozero/include/protozero/varint.hpp:52,1
    - Dst: static_cast<uint64_t>
      Src: /src/pdns/ext/protozero/include/protozero/varint.hpp:58,1
    - Dst: static_cast<uint64_t>
      Src: /src/pdns/ext/protozero/include/protozero/varint.hpp:64,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/ext/protozero/include/protozero/varint.hpp:67,1
    CyclomaticComplexity: 27
    EdgeCount: 27
    ICount: 66
    argCount: 2
    argNames:
    - data
    - end
    argTypes:
    - char**
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 34
    functionDepth: 0
    functionLinenumber: 34
    functionLinenumberEnd: 69
    functionName: protozero::detail::decode_varint_impl
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/varint.hpp
    functionUses: 0
    functionsReached:
    - reinterpret_cast<const char*>
    - static_cast<uint64_t>
    - reinterpret_cast<const int8_t*>
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t decode_varint_impl(const char** data, const char* end)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<uint64_t>
      Src: /src/pdns/ext/protozero/include/protozero/varint.hpp:92,1
    - Dst: static_cast<uint64_t>
      Src: /src/pdns/ext/protozero/include/protozero/varint.hpp:93,1
    - Dst: protozero::detail::decode_varint_impl
      Src: /src/pdns/ext/protozero/include/protozero/varint.hpp:98,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - data
    - end
    argTypes:
    - char**
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 90
    functionDepth: 1
    functionLinenumber: 90
    functionLinenumberEnd: 99
    functionName: protozero::decode_varint
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/varint.hpp
    functionUses: 2
    functionsReached:
    - protozero::detail::decode_varint_impl
    - static_cast<uint64_t>
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t decode_varint(const char** data, const char* end)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: reinterpret_cast<const int8_t*>
      Src: /src/pdns/ext/protozero/include/protozero/varint.hpp:114,1
    - Dst: reinterpret_cast<const int8_t*>
      Src: /src/pdns/ext/protozero/include/protozero/varint.hpp:115,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/ext/protozero/include/protozero/varint.hpp:132,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 12
    argCount: 2
    argNames:
    - data
    - end
    argTypes:
    - char**
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 133
      start: 113
    functionDepth: 0
    functionLinenumber: 113
    functionLinenumberEnd: 133
    functionName: protozero::skip_varint
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/varint.hpp
    functionUses: 2
    functionsReached:
    - reinterpret_cast<const char*>
    - reinterpret_cast<const int8_t*>
    linkageType: ''
    returnType: void
    signature: void skip_varint(const char** data, const char* end)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<char>
      Src: /src/pdns/ext/protozero/include/protozero/varint.hpp:151,1
    - Dst: static_cast<char>
      Src: /src/pdns/ext/protozero/include/protozero/varint.hpp:155,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - data
    - value
    argTypes:
    - T
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 158
      start: 147
    functionDepth: 0
    functionLinenumber: 147
    functionLinenumberEnd: 158
    functionName: protozero::write_varint
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/varint.hpp
    functionUses: 0
    functionsReached:
    - static_cast<char>
    linkageType: ''
    returnType: int
    signature: int write_varint(T data, uint64_t value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::push_back
      Src: /src/pdns/ext/protozero/include/protozero/varint.hpp:171,1
    - Dst: static_cast<char>
      Src: /src/pdns/ext/protozero/include/protozero/varint.hpp:171,1
    - Dst: protozero::push_back
      Src: /src/pdns/ext/protozero/include/protozero/varint.hpp:174,1
    - Dst: static_cast<char>
      Src: /src/pdns/ext/protozero/include/protozero/varint.hpp:174,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - buffer
    - value
    argTypes:
    - TBuffer*
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 175
      start: 169
    functionDepth: 0
    functionLinenumber: 169
    functionLinenumberEnd: 175
    functionName: protozero::add_varint_to_buffer
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/varint.hpp
    functionUses: 0
    functionsReached:
    - protozero::push_back
    - static_cast<char>
    linkageType: ''
    returnType: void
    signature: void add_varint_to_buffer(TBuffer* buffer, uint64_t value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<char>
      Src: /src/pdns/ext/protozero/include/protozero/varint.hpp:188,1
    - Dst: static_cast<char>
      Src: /src/pdns/ext/protozero/include/protozero/varint.hpp:192,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - data
    - value
    argTypes:
    - char*
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 195
      start: 184
    functionDepth: 0
    functionLinenumber: 184
    functionLinenumberEnd: 195
    functionName: protozero::add_varint_to_buffer
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/varint.hpp
    functionUses: 0
    functionsReached:
    - static_cast<char>
    linkageType: ''
    returnType: int
    signature: int add_varint_to_buffer(char* data, uint64_t value) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - value
    argTypes:
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 212
      start: 203
    functionDepth: 0
    functionLinenumber: 203
    functionLinenumberEnd: 212
    functionName: protozero::length_of_varint
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/varint.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int length_of_varint(uint64_t value) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<uint32_t>
      Src: /src/pdns/ext/protozero/include/protozero/varint.hpp:218,1
    - Dst: static_cast<uint32_t>
      Src: /src/pdns/ext/protozero/include/protozero/varint.hpp:218,1
    - Dst: static_cast<int32_t>
      Src: /src/pdns/ext/protozero/include/protozero/varint.hpp:218,1
    - Dst: static_cast<uint32_t>
      Src: /src/pdns/ext/protozero/include/protozero/varint.hpp:218,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - value
    argTypes:
    - int32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 219
      start: 217
    functionDepth: 0
    functionLinenumber: 217
    functionLinenumberEnd: 219
    functionName: protozero::encode_zigzag32
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/varint.hpp
    functionUses: 0
    functionsReached:
    - static_cast<int32_t>
    - static_cast<uint32_t>
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t encode_zigzag32(int32_t value) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<uint64_t>
      Src: /src/pdns/ext/protozero/include/protozero/varint.hpp:225,1
    - Dst: static_cast<uint64_t>
      Src: /src/pdns/ext/protozero/include/protozero/varint.hpp:225,1
    - Dst: static_cast<int64_t>
      Src: /src/pdns/ext/protozero/include/protozero/varint.hpp:225,1
    - Dst: static_cast<uint64_t>
      Src: /src/pdns/ext/protozero/include/protozero/varint.hpp:225,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - value
    argTypes:
    - int64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 226
      start: 224
    functionDepth: 0
    functionLinenumber: 224
    functionLinenumberEnd: 226
    functionName: protozero::encode_zigzag64
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/varint.hpp
    functionUses: 0
    functionsReached:
    - static_cast<int64_t>
    - static_cast<uint64_t>
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t encode_zigzag64(int64_t value) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<int32_t>
      Src: /src/pdns/ext/protozero/include/protozero/varint.hpp:232,1
    - Dst: static_cast<uint32_t>
      Src: /src/pdns/ext/protozero/include/protozero/varint.hpp:232,1
    - Dst: static_cast<int32_t>
      Src: /src/pdns/ext/protozero/include/protozero/varint.hpp:232,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - value
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 233
      start: 231
    functionDepth: 0
    functionLinenumber: 231
    functionLinenumberEnd: 233
    functionName: protozero::decode_zigzag32
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/varint.hpp
    functionUses: 0
    functionsReached:
    - static_cast<int32_t>
    - static_cast<uint32_t>
    linkageType: ''
    returnType: int32_t
    signature: int32_t decode_zigzag32(uint32_t value) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<int64_t>
      Src: /src/pdns/ext/protozero/include/protozero/varint.hpp:239,1
    - Dst: static_cast<uint64_t>
      Src: /src/pdns/ext/protozero/include/protozero/varint.hpp:239,1
    - Dst: static_cast<int64_t>
      Src: /src/pdns/ext/protozero/include/protozero/varint.hpp:239,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - value
    argTypes:
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 240
      start: 238
    functionDepth: 0
    functionLinenumber: 238
    functionLinenumberEnd: 240
    functionName: protozero::decode_zigzag64
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/varint.hpp
    functionUses: 1
    functionsReached:
    - static_cast<int64_t>
    - static_cast<uint64_t>
    linkageType: ''
    returnType: int64_t
    signature: int64_t decode_zigzag64(uint64_t value) noexcept
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: reinterpret_cast<const int8_t*>
      Src: /src/pdns/ext/protozero/include/protozero/varint.hpp:35,1
    - Dst: reinterpret_cast<const int8_t*>
      Src: /src/pdns/ext/protozero/include/protozero/varint.hpp:36,1
    - Dst: static_cast<uint64_t>
      Src: /src/pdns/ext/protozero/include/protozero/varint.hpp:43,1
    - Dst: static_cast<uint64_t>
      Src: /src/pdns/ext/protozero/include/protozero/varint.hpp:44,1
    - Dst: static_cast<uint64_t>
      Src: /src/pdns/ext/protozero/include/protozero/varint.hpp:45,1
    - Dst: static_cast<uint64_t>
      Src: /src/pdns/ext/protozero/include/protozero/varint.hpp:46,1
    - Dst: static_cast<uint64_t>
      Src: /src/pdns/ext/protozero/include/protozero/varint.hpp:47,1
    - Dst: static_cast<uint64_t>
      Src: /src/pdns/ext/protozero/include/protozero/varint.hpp:48,1
    - Dst: static_cast<uint64_t>
      Src: /src/pdns/ext/protozero/include/protozero/varint.hpp:49,1
    - Dst: static_cast<uint64_t>
      Src: /src/pdns/ext/protozero/include/protozero/varint.hpp:50,1
    - Dst: static_cast<uint64_t>
      Src: /src/pdns/ext/protozero/include/protozero/varint.hpp:51,1
    - Dst: static_cast<uint64_t>
      Src: /src/pdns/ext/protozero/include/protozero/varint.hpp:52,1
    - Dst: static_cast<uint64_t>
      Src: /src/pdns/ext/protozero/include/protozero/varint.hpp:58,1
    - Dst: static_cast<uint64_t>
      Src: /src/pdns/ext/protozero/include/protozero/varint.hpp:64,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/ext/protozero/include/protozero/varint.hpp:67,1
    CyclomaticComplexity: 27
    EdgeCount: 27
    ICount: 66
    argCount: 2
    argNames:
    - data
    - end
    argTypes:
    - char**
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 34
    functionDepth: 0
    functionLinenumber: 34
    functionLinenumberEnd: 69
    functionName: protozero::detail::decode_varint_impl
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/varint.hpp
    functionUses: 1
    functionsReached:
    - reinterpret_cast<const char*>
    - static_cast<uint64_t>
    - reinterpret_cast<const int8_t*>
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t decode_varint_impl(const char** data, const char* end)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: reinterpret_cast<const int8_t*>
      Src: /src/pdns/ext/protozero/include/protozero/varint.hpp:35,1
    - Dst: reinterpret_cast<const int8_t*>
      Src: /src/pdns/ext/protozero/include/protozero/varint.hpp:36,1
    - Dst: static_cast<uint64_t>
      Src: /src/pdns/ext/protozero/include/protozero/varint.hpp:43,1
    - Dst: static_cast<uint64_t>
      Src: /src/pdns/ext/protozero/include/protozero/varint.hpp:44,1
    - Dst: static_cast<uint64_t>
      Src: /src/pdns/ext/protozero/include/protozero/varint.hpp:45,1
    - Dst: static_cast<uint64_t>
      Src: /src/pdns/ext/protozero/include/protozero/varint.hpp:46,1
    - Dst: static_cast<uint64_t>
      Src: /src/pdns/ext/protozero/include/protozero/varint.hpp:47,1
    - Dst: static_cast<uint64_t>
      Src: /src/pdns/ext/protozero/include/protozero/varint.hpp:48,1
    - Dst: static_cast<uint64_t>
      Src: /src/pdns/ext/protozero/include/protozero/varint.hpp:49,1
    - Dst: static_cast<uint64_t>
      Src: /src/pdns/ext/protozero/include/protozero/varint.hpp:50,1
    - Dst: static_cast<uint64_t>
      Src: /src/pdns/ext/protozero/include/protozero/varint.hpp:51,1
    - Dst: static_cast<uint64_t>
      Src: /src/pdns/ext/protozero/include/protozero/varint.hpp:52,1
    - Dst: static_cast<uint64_t>
      Src: /src/pdns/ext/protozero/include/protozero/varint.hpp:58,1
    - Dst: static_cast<uint64_t>
      Src: /src/pdns/ext/protozero/include/protozero/varint.hpp:64,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/ext/protozero/include/protozero/varint.hpp:67,1
    CyclomaticComplexity: 27
    EdgeCount: 27
    ICount: 66
    argCount: 2
    argNames:
    - data
    - end
    argTypes:
    - char**
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 34
    functionDepth: 0
    functionLinenumber: 34
    functionLinenumberEnd: 69
    functionName: protozero::detail::decode_varint_impl
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/varint.hpp
    functionUses: 1
    functionsReached:
    - reinterpret_cast<const char*>
    - static_cast<uint64_t>
    - reinterpret_cast<const int8_t*>
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t decode_varint_impl(const char** data, const char* end)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<uint64_t>
      Src: /src/pdns/ext/protozero/include/protozero/varint.hpp:92,1
    - Dst: static_cast<uint64_t>
      Src: /src/pdns/ext/protozero/include/protozero/varint.hpp:93,1
    - Dst: protozero::detail::decode_varint_impl
      Src: /src/pdns/ext/protozero/include/protozero/varint.hpp:98,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - data
    - end
    argTypes:
    - char**
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 90
    functionDepth: 1
    functionLinenumber: 90
    functionLinenumberEnd: 99
    functionName: protozero::decode_varint
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/varint.hpp
    functionUses: 2
    functionsReached:
    - protozero::detail::decode_varint_impl
    - static_cast<uint64_t>
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t decode_varint(const char** data, const char* end)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: reinterpret_cast<const int8_t*>
      Src: /src/pdns/ext/protozero/include/protozero/varint.hpp:114,1
    - Dst: reinterpret_cast<const int8_t*>
      Src: /src/pdns/ext/protozero/include/protozero/varint.hpp:115,1
    - Dst: reinterpret_cast<const char*>
      Src: /src/pdns/ext/protozero/include/protozero/varint.hpp:132,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 12
    argCount: 2
    argNames:
    - data
    - end
    argTypes:
    - char**
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 133
      start: 113
    functionDepth: 0
    functionLinenumber: 113
    functionLinenumberEnd: 133
    functionName: protozero::skip_varint
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/varint.hpp
    functionUses: 2
    functionsReached:
    - reinterpret_cast<const char*>
    - reinterpret_cast<const int8_t*>
    linkageType: ''
    returnType: void
    signature: void skip_varint(const char** data, const char* end)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<char>
      Src: /src/pdns/ext/protozero/include/protozero/varint.hpp:151,1
    - Dst: static_cast<char>
      Src: /src/pdns/ext/protozero/include/protozero/varint.hpp:155,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - data
    - value
    argTypes:
    - T
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 158
      start: 147
    functionDepth: 0
    functionLinenumber: 147
    functionLinenumberEnd: 158
    functionName: protozero::write_varint
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/varint.hpp
    functionUses: 0
    functionsReached:
    - static_cast<char>
    linkageType: ''
    returnType: int
    signature: int write_varint(T data, uint64_t value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::push_back
      Src: /src/pdns/ext/protozero/include/protozero/varint.hpp:171,1
    - Dst: static_cast<char>
      Src: /src/pdns/ext/protozero/include/protozero/varint.hpp:171,1
    - Dst: protozero::push_back
      Src: /src/pdns/ext/protozero/include/protozero/varint.hpp:174,1
    - Dst: static_cast<char>
      Src: /src/pdns/ext/protozero/include/protozero/varint.hpp:174,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - buffer
    - value
    argTypes:
    - TBuffer*
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 175
      start: 169
    functionDepth: 0
    functionLinenumber: 169
    functionLinenumberEnd: 175
    functionName: protozero::add_varint_to_buffer
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/varint.hpp
    functionUses: 0
    functionsReached:
    - protozero::push_back
    - static_cast<char>
    linkageType: ''
    returnType: void
    signature: void add_varint_to_buffer(TBuffer* buffer, uint64_t value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<char>
      Src: /src/pdns/ext/protozero/include/protozero/varint.hpp:188,1
    - Dst: static_cast<char>
      Src: /src/pdns/ext/protozero/include/protozero/varint.hpp:192,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - data
    - value
    argTypes:
    - char*
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 195
      start: 184
    functionDepth: 0
    functionLinenumber: 184
    functionLinenumberEnd: 195
    functionName: protozero::add_varint_to_buffer
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/varint.hpp
    functionUses: 0
    functionsReached:
    - static_cast<char>
    linkageType: ''
    returnType: int
    signature: int add_varint_to_buffer(char* data, uint64_t value) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - value
    argTypes:
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 212
      start: 203
    functionDepth: 0
    functionLinenumber: 203
    functionLinenumberEnd: 212
    functionName: protozero::length_of_varint
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/varint.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int length_of_varint(uint64_t value) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<uint32_t>
      Src: /src/pdns/ext/protozero/include/protozero/varint.hpp:218,1
    - Dst: static_cast<uint32_t>
      Src: /src/pdns/ext/protozero/include/protozero/varint.hpp:218,1
    - Dst: static_cast<int32_t>
      Src: /src/pdns/ext/protozero/include/protozero/varint.hpp:218,1
    - Dst: static_cast<uint32_t>
      Src: /src/pdns/ext/protozero/include/protozero/varint.hpp:218,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - value
    argTypes:
    - int32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 219
      start: 217
    functionDepth: 0
    functionLinenumber: 217
    functionLinenumberEnd: 219
    functionName: protozero::encode_zigzag32
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/varint.hpp
    functionUses: 0
    functionsReached:
    - static_cast<int32_t>
    - static_cast<uint32_t>
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t encode_zigzag32(int32_t value) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<uint64_t>
      Src: /src/pdns/ext/protozero/include/protozero/varint.hpp:225,1
    - Dst: static_cast<uint64_t>
      Src: /src/pdns/ext/protozero/include/protozero/varint.hpp:225,1
    - Dst: static_cast<int64_t>
      Src: /src/pdns/ext/protozero/include/protozero/varint.hpp:225,1
    - Dst: static_cast<uint64_t>
      Src: /src/pdns/ext/protozero/include/protozero/varint.hpp:225,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - value
    argTypes:
    - int64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 226
      start: 224
    functionDepth: 0
    functionLinenumber: 224
    functionLinenumberEnd: 226
    functionName: protozero::encode_zigzag64
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/varint.hpp
    functionUses: 0
    functionsReached:
    - static_cast<int64_t>
    - static_cast<uint64_t>
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t encode_zigzag64(int64_t value) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<int32_t>
      Src: /src/pdns/ext/protozero/include/protozero/varint.hpp:232,1
    - Dst: static_cast<uint32_t>
      Src: /src/pdns/ext/protozero/include/protozero/varint.hpp:232,1
    - Dst: static_cast<int32_t>
      Src: /src/pdns/ext/protozero/include/protozero/varint.hpp:232,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - value
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 233
      start: 231
    functionDepth: 0
    functionLinenumber: 231
    functionLinenumberEnd: 233
    functionName: protozero::decode_zigzag32
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/varint.hpp
    functionUses: 0
    functionsReached:
    - static_cast<int32_t>
    - static_cast<uint32_t>
    linkageType: ''
    returnType: int32_t
    signature: int32_t decode_zigzag32(uint32_t value) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<int64_t>
      Src: /src/pdns/ext/protozero/include/protozero/varint.hpp:239,1
    - Dst: static_cast<uint64_t>
      Src: /src/pdns/ext/protozero/include/protozero/varint.hpp:239,1
    - Dst: static_cast<int64_t>
      Src: /src/pdns/ext/protozero/include/protozero/varint.hpp:239,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - value
    argTypes:
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 240
      start: 238
    functionDepth: 0
    functionLinenumber: 238
    functionLinenumberEnd: 240
    functionName: protozero::decode_zigzag64
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/varint.hpp
    functionUses: 1
    functionsReached:
    - static_cast<int64_t>
    - static_cast<uint64_t>
    linkageType: ''
    returnType: int64_t
    signature: int64_t decode_zigzag64(uint64_t value) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 49
    functionDepth: 0
    functionLinenumber: 49
    functionLinenumberEnd: 49
    functionName: protozero::data_view::data_view
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/data_view.hpp
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void data_view() noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - ptr
    - length
    argTypes:
    - char*
    - std::size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 57
    functionDepth: 0
    functionLinenumber: 57
    functionLinenumberEnd: 60
    functionName: protozero::data_view::data_view
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/data_view.hpp
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void data_view(const char* ptr, std::size_t length) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::data_view::data
      Src: /src/pdns/ext/protozero/include/protozero/data_view.hpp:68,1
    - Dst: protozero::data_view::size
      Src: /src/pdns/ext/protozero/include/protozero/data_view.hpp:69,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' str'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 67
    functionDepth: 1
    functionLinenumber: 67
    functionLinenumberEnd: 70
    functionName: protozero::data_view::data_view
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/data_view.hpp
    functionUses: 4
    functionsReached:
    - protozero::data_view::data
    - protozero::data_view::size
    linkageType: ''
    returnType: void
    signature: void data_view(const std::string& str) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::strlen
      Src: /src/pdns/ext/protozero/include/protozero/data_view.hpp:79,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ptr
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 77
    functionDepth: 0
    functionLinenumber: 77
    functionLinenumberEnd: 80
    functionName: protozero::data_view::data_view
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/data_view.hpp
    functionUses: 4
    functionsReached:
    - std::strlen
    linkageType: ''
    returnType: void
    signature: void data_view(const char* ptr) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::data_view::swap
      Src: /src/pdns/ext/protozero/include/protozero/data_view.hpp:89,1
    - Dst: protozero::data_view::swap
      Src: /src/pdns/ext/protozero/include/protozero/data_view.hpp:90,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ' other'
    argTypes:
    - data_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 87
    functionDepth: 1
    functionLinenumber: 87
    functionLinenumberEnd: 91
    functionName: protozero::data_view::swap
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/data_view.hpp
    functionUses: 1
    functionsReached:
    - protozero::data_view::swap
    linkageType: ''
    returnType: void
    signature: void swap(data_view& other) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 94
    functionDepth: 0
    functionLinenumber: 94
    functionLinenumberEnd: 96
    functionName: protozero::data_view::data
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/data_view.hpp
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char * data() const noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 99
    functionDepth: 0
    functionLinenumber: 99
    functionLinenumberEnd: 101
    functionName: protozero::data_view::size
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/data_view.hpp
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: std::size_t
    signature: std::size_t size() const noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 104
    functionDepth: 0
    functionLinenumber: 104
    functionLinenumberEnd: 106
    functionName: protozero::data_view::empty
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/data_view.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool empty() const noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero_assert
      Src: /src/pdns/ext/protozero/include/protozero/data_view.hpp:119,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 118
    functionDepth: 1
    functionLinenumber: 118
    functionLinenumberEnd: 121
    functionName: protozero::data_view::to_string
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/data_view.hpp
    functionUses: 0
    functionsReached:
    - protozero_assert
    linkageType: ''
    returnType: std::string
    signature: std::string to_string() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero_assert
      Src: /src/pdns/ext/protozero/include/protozero/data_view.hpp:130,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 132
      start: 129
    functionDepth: 1
    functionLinenumber: 129
    functionLinenumberEnd: 132
    functionName: operator std::string() const
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/data_view.hpp
    functionUses: 0
    functionsReached:
    - protozero_assert
    linkageType: ''
    returnType: void
    signature: void operator std::string() const
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/pdns/ext/protozero/include/protozero/data_view.hpp:145,1
    - Dst: std::memcmp
      Src: /src/pdns/ext/protozero/include/protozero/data_view.hpp:146,1
    - Dst: protozero::data_view::data
      Src: /src/pdns/ext/protozero/include/protozero/data_view.hpp:146,1
    - Dst: data_view::data
      Src: /src/pdns/ext/protozero/include/protozero/data_view.hpp:146,1
    - Dst: std::min
      Src: /src/pdns/ext/protozero/include/protozero/data_view.hpp:147,1
    - Dst: protozero::data_view::size
      Src: /src/pdns/ext/protozero/include/protozero/data_view.hpp:147,1
    - Dst: data_view::size
      Src: /src/pdns/ext/protozero/include/protozero/data_view.hpp:147,1
    - Dst: protozero::data_view::size
      Src: /src/pdns/ext/protozero/include/protozero/data_view.hpp:149,1
    - Dst: data_view::size
      Src: /src/pdns/ext/protozero/include/protozero/data_view.hpp:149,1
    - Dst: protozero::data_view::size
      Src: /src/pdns/ext/protozero/include/protozero/data_view.hpp:152,1
    - Dst: data_view::size
      Src: /src/pdns/ext/protozero/include/protozero/data_view.hpp:152,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - other
    argTypes:
    - data_view
    assertStmts:
    - condition: (m_data && other.m_data)
      pos:
        line_end: 144
        line_start: 144
        source_file: /src/pdns/ext/protozero/include/protozero/data_view.hpp
    constantsTouched: []
    func_position:
      end: 155
      start: 144
    functionDepth: 1
    functionLinenumber: 144
    functionLinenumberEnd: 155
    functionName: protozero::data_view::compare
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/data_view.hpp
    functionUses: 0
    functionsReached:
    - data_view::data
    - std::min
    - data_view::size
    - assert
    - protozero::data_view::size
    - protozero::data_view::data
    - std::memcmp
    linkageType: ''
    returnType: int
    signature: int compare(data_view other) const noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::swap
      Src: /src/pdns/ext/protozero/include/protozero/data_view.hpp:166,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' lhs'
    - ' rhs'
    argTypes:
    - data_view
    - data_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 167
      start: 165
    functionDepth: 0
    functionLinenumber: 165
    functionLinenumberEnd: 167
    functionName: protozero::swap
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/data_view.hpp
    functionUses: 5
    functionsReached:
    - protozero::swap
    linkageType: ''
    returnType: void
    signature: void swap(data_view& lhs, data_view& rhs) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: data_view::size
      Src: /src/pdns/ext/protozero/include/protozero/data_view.hpp:177,1
    - Dst: data_view::size
      Src: /src/pdns/ext/protozero/include/protozero/data_view.hpp:177,1
    - Dst: std::equal
      Src: /src/pdns/ext/protozero/include/protozero/data_view.hpp:178,1
    - Dst: data_view::data
      Src: /src/pdns/ext/protozero/include/protozero/data_view.hpp:178,1
    - Dst: data_view::data
      Src: /src/pdns/ext/protozero/include/protozero/data_view.hpp:178,1
    - Dst: data_view::size
      Src: /src/pdns/ext/protozero/include/protozero/data_view.hpp:178,1
    - Dst: data_view::data
      Src: /src/pdns/ext/protozero/include/protozero/data_view.hpp:178,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 2
    argNames:
    - lhs
    - rhs
    argTypes:
    - data_view
    - data_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 179
      start: 176
    functionDepth: 0
    functionLinenumber: 176
    functionLinenumberEnd: 179
    functionName: operator==(const data_view lhs, const data_view rhs) noexcept
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/data_view.hpp
    functionUses: 0
    functionsReached:
    - data_view::data
    - data_view::size
    - std::equal
    linkageType: ''
    returnType: bool
    signature: bool operator==(const data_view lhs, const data_view rhs) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - lhs
    - rhs
    argTypes:
    - data_view
    - data_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 190
      start: 188
    functionDepth: 0
    functionLinenumber: 188
    functionLinenumberEnd: 190
    functionName: operator!=(const data_view lhs, const data_view rhs) noexcept
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/data_view.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool operator!=(const data_view lhs, const data_view rhs) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: data_view::compare
      Src: /src/pdns/ext/protozero/include/protozero/data_view.hpp:199,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - lhs
    - rhs
    argTypes:
    - data_view
    - data_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 200
      start: 198
    functionDepth: 0
    functionLinenumber: 198
    functionLinenumberEnd: 200
    functionName: operator<(const data_view lhs, const data_view rhs) noexcept
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/data_view.hpp
    functionUses: 0
    functionsReached:
    - data_view::compare
    linkageType: ''
    returnType: bool
    signature: bool operator<(const data_view lhs, const data_view rhs) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: data_view::compare
      Src: /src/pdns/ext/protozero/include/protozero/data_view.hpp:209,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - lhs
    - rhs
    argTypes:
    - data_view
    - data_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 210
      start: 208
    functionDepth: 0
    functionLinenumber: 208
    functionLinenumberEnd: 210
    functionName: operator<=(const data_view lhs, const data_view rhs) noexcept
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/data_view.hpp
    functionUses: 0
    functionsReached:
    - data_view::compare
    linkageType: ''
    returnType: bool
    signature: bool operator<=(const data_view lhs, const data_view rhs) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: data_view::compare
      Src: /src/pdns/ext/protozero/include/protozero/data_view.hpp:219,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - lhs
    - rhs
    argTypes:
    - data_view
    - data_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 220
      start: 218
    functionDepth: 0
    functionLinenumber: 218
    functionLinenumberEnd: 220
    functionName: operator>(const data_view lhs, const data_view rhs) noexcept
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/data_view.hpp
    functionUses: 0
    functionsReached:
    - data_view::compare
    linkageType: ''
    returnType: bool
    signature: bool operator>(const data_view lhs, const data_view rhs) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: data_view::compare
      Src: /src/pdns/ext/protozero/include/protozero/data_view.hpp:229,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - lhs
    - rhs
    argTypes:
    - data_view
    - data_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 230
      start: 228
    functionDepth: 0
    functionLinenumber: 228
    functionLinenumberEnd: 230
    functionName: operator>=(const data_view lhs, const data_view rhs) noexcept
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/data_view.hpp
    functionUses: 0
    functionsReached:
    - data_view::compare
    linkageType: ''
    returnType: bool
    signature: bool operator>=(const data_view lhs, const data_view rhs) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 49
    functionDepth: 0
    functionLinenumber: 49
    functionLinenumberEnd: 49
    functionName: protozero::data_view::data_view
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/data_view.hpp
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void data_view() noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - ptr
    - length
    argTypes:
    - char*
    - std::size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 57
    functionDepth: 0
    functionLinenumber: 57
    functionLinenumberEnd: 60
    functionName: protozero::data_view::data_view
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/data_view.hpp
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void data_view(const char* ptr, std::size_t length) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::data_view::data
      Src: /src/pdns/ext/protozero/include/protozero/data_view.hpp:68,1
    - Dst: protozero::data_view::size
      Src: /src/pdns/ext/protozero/include/protozero/data_view.hpp:69,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' str'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 67
    functionDepth: 1
    functionLinenumber: 67
    functionLinenumberEnd: 70
    functionName: protozero::data_view::data_view
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/data_view.hpp
    functionUses: 4
    functionsReached:
    - protozero::data_view::data
    - protozero::data_view::size
    linkageType: ''
    returnType: void
    signature: void data_view(const std::string& str) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::strlen
      Src: /src/pdns/ext/protozero/include/protozero/data_view.hpp:79,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ptr
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 77
    functionDepth: 0
    functionLinenumber: 77
    functionLinenumberEnd: 80
    functionName: protozero::data_view::data_view
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/data_view.hpp
    functionUses: 4
    functionsReached:
    - std::strlen
    linkageType: ''
    returnType: void
    signature: void data_view(const char* ptr) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::data_view::swap
      Src: /src/pdns/ext/protozero/include/protozero/data_view.hpp:89,1
    - Dst: protozero::data_view::swap
      Src: /src/pdns/ext/protozero/include/protozero/data_view.hpp:90,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ' other'
    argTypes:
    - data_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 87
    functionDepth: 1
    functionLinenumber: 87
    functionLinenumberEnd: 91
    functionName: protozero::data_view::swap
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/data_view.hpp
    functionUses: 2
    functionsReached:
    - protozero::data_view::swap
    linkageType: ''
    returnType: void
    signature: void swap(data_view& other) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 94
    functionDepth: 0
    functionLinenumber: 94
    functionLinenumberEnd: 96
    functionName: protozero::data_view::data
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/data_view.hpp
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char * data() const noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 99
    functionDepth: 0
    functionLinenumber: 99
    functionLinenumberEnd: 101
    functionName: protozero::data_view::size
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/data_view.hpp
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: std::size_t
    signature: std::size_t size() const noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 104
    functionDepth: 0
    functionLinenumber: 104
    functionLinenumberEnd: 106
    functionName: protozero::data_view::empty
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/data_view.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool empty() const noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero_assert
      Src: /src/pdns/ext/protozero/include/protozero/data_view.hpp:119,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 118
    functionDepth: 1
    functionLinenumber: 118
    functionLinenumberEnd: 121
    functionName: protozero::data_view::to_string
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/data_view.hpp
    functionUses: 0
    functionsReached:
    - protozero_assert
    linkageType: ''
    returnType: std::string
    signature: std::string to_string() const
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero_assert
      Src: /src/pdns/ext/protozero/include/protozero/data_view.hpp:130,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 132
      start: 129
    functionDepth: 1
    functionLinenumber: 129
    functionLinenumberEnd: 132
    functionName: operator std::string() const
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/data_view.hpp
    functionUses: 0
    functionsReached:
    - protozero_assert
    linkageType: ''
    returnType: void
    signature: void operator std::string() const
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/pdns/ext/protozero/include/protozero/data_view.hpp:145,1
    - Dst: std::memcmp
      Src: /src/pdns/ext/protozero/include/protozero/data_view.hpp:146,1
    - Dst: protozero::data_view::data
      Src: /src/pdns/ext/protozero/include/protozero/data_view.hpp:146,1
    - Dst: data_view::data
      Src: /src/pdns/ext/protozero/include/protozero/data_view.hpp:146,1
    - Dst: std::min
      Src: /src/pdns/ext/protozero/include/protozero/data_view.hpp:147,1
    - Dst: protozero::data_view::size
      Src: /src/pdns/ext/protozero/include/protozero/data_view.hpp:147,1
    - Dst: data_view::size
      Src: /src/pdns/ext/protozero/include/protozero/data_view.hpp:147,1
    - Dst: protozero::data_view::size
      Src: /src/pdns/ext/protozero/include/protozero/data_view.hpp:149,1
    - Dst: data_view::size
      Src: /src/pdns/ext/protozero/include/protozero/data_view.hpp:149,1
    - Dst: protozero::data_view::size
      Src: /src/pdns/ext/protozero/include/protozero/data_view.hpp:152,1
    - Dst: data_view::size
      Src: /src/pdns/ext/protozero/include/protozero/data_view.hpp:152,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - other
    argTypes:
    - data_view
    assertStmts:
    - condition: (m_data && other.m_data)
      pos:
        line_end: 144
        line_start: 144
        source_file: /src/pdns/ext/protozero/include/protozero/data_view.hpp
    constantsTouched: []
    func_position:
      end: 155
      start: 144
    functionDepth: 1
    functionLinenumber: 144
    functionLinenumberEnd: 155
    functionName: protozero::data_view::compare
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/data_view.hpp
    functionUses: 0
    functionsReached:
    - data_view::data
    - std::min
    - data_view::size
    - assert
    - protozero::data_view::size
    - protozero::data_view::data
    - std::memcmp
    linkageType: ''
    returnType: int
    signature: int compare(data_view other) const noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::swap
      Src: /src/pdns/ext/protozero/include/protozero/data_view.hpp:166,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' lhs'
    - ' rhs'
    argTypes:
    - data_view
    - data_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 167
      start: 165
    functionDepth: 0
    functionLinenumber: 165
    functionLinenumberEnd: 167
    functionName: protozero::swap
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/data_view.hpp
    functionUses: 6
    functionsReached:
    - protozero::swap
    linkageType: ''
    returnType: void
    signature: void swap(data_view& lhs, data_view& rhs) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: data_view::size
      Src: /src/pdns/ext/protozero/include/protozero/data_view.hpp:177,1
    - Dst: data_view::size
      Src: /src/pdns/ext/protozero/include/protozero/data_view.hpp:177,1
    - Dst: std::equal
      Src: /src/pdns/ext/protozero/include/protozero/data_view.hpp:178,1
    - Dst: data_view::data
      Src: /src/pdns/ext/protozero/include/protozero/data_view.hpp:178,1
    - Dst: data_view::data
      Src: /src/pdns/ext/protozero/include/protozero/data_view.hpp:178,1
    - Dst: data_view::size
      Src: /src/pdns/ext/protozero/include/protozero/data_view.hpp:178,1
    - Dst: data_view::data
      Src: /src/pdns/ext/protozero/include/protozero/data_view.hpp:178,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 2
    argNames:
    - lhs
    - rhs
    argTypes:
    - data_view
    - data_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 179
      start: 176
    functionDepth: 0
    functionLinenumber: 176
    functionLinenumberEnd: 179
    functionName: operator==(const data_view lhs, const data_view rhs) noexcept
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/data_view.hpp
    functionUses: 0
    functionsReached:
    - data_view::data
    - data_view::size
    - std::equal
    linkageType: ''
    returnType: bool
    signature: bool operator==(const data_view lhs, const data_view rhs) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - lhs
    - rhs
    argTypes:
    - data_view
    - data_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 190
      start: 188
    functionDepth: 0
    functionLinenumber: 188
    functionLinenumberEnd: 190
    functionName: operator!=(const data_view lhs, const data_view rhs) noexcept
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/data_view.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool operator!=(const data_view lhs, const data_view rhs) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: data_view::compare
      Src: /src/pdns/ext/protozero/include/protozero/data_view.hpp:199,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - lhs
    - rhs
    argTypes:
    - data_view
    - data_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 200
      start: 198
    functionDepth: 0
    functionLinenumber: 198
    functionLinenumberEnd: 200
    functionName: operator<(const data_view lhs, const data_view rhs) noexcept
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/data_view.hpp
    functionUses: 0
    functionsReached:
    - data_view::compare
    linkageType: ''
    returnType: bool
    signature: bool operator<(const data_view lhs, const data_view rhs) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: data_view::compare
      Src: /src/pdns/ext/protozero/include/protozero/data_view.hpp:209,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - lhs
    - rhs
    argTypes:
    - data_view
    - data_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 210
      start: 208
    functionDepth: 0
    functionLinenumber: 208
    functionLinenumberEnd: 210
    functionName: operator<=(const data_view lhs, const data_view rhs) noexcept
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/data_view.hpp
    functionUses: 0
    functionsReached:
    - data_view::compare
    linkageType: ''
    returnType: bool
    signature: bool operator<=(const data_view lhs, const data_view rhs) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: data_view::compare
      Src: /src/pdns/ext/protozero/include/protozero/data_view.hpp:219,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - lhs
    - rhs
    argTypes:
    - data_view
    - data_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 220
      start: 218
    functionDepth: 0
    functionLinenumber: 218
    functionLinenumberEnd: 220
    functionName: operator>(const data_view lhs, const data_view rhs) noexcept
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/data_view.hpp
    functionUses: 0
    functionsReached:
    - data_view::compare
    linkageType: ''
    returnType: bool
    signature: bool operator>(const data_view lhs, const data_view rhs) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: data_view::compare
      Src: /src/pdns/ext/protozero/include/protozero/data_view.hpp:229,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - lhs
    - rhs
    argTypes:
    - data_view
    - data_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 230
      start: 228
    functionDepth: 0
    functionLinenumber: 228
    functionLinenumberEnd: 230
    functionName: operator>=(const data_view lhs, const data_view rhs) noexcept
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/data_view.hpp
    functionUses: 0
    functionsReached:
    - data_view::compare
    linkageType: ''
    returnType: bool
    signature: bool operator>=(const data_view lhs, const data_view rhs) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: __builtin_bswap32
      Src: /src/pdns/ext/protozero/include/protozero/byteswap.hpp:29,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - value
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 36
      start: 27
    functionDepth: 0
    functionLinenumber: 27
    functionLinenumberEnd: 36
    functionName: protozero::detail::byteswap_impl
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/byteswap.hpp
    functionUses: 0
    functionsReached:
    - __builtin_bswap32
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t byteswap_impl(uint32_t value) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: __builtin_bswap64
      Src: /src/pdns/ext/protozero/include/protozero/byteswap.hpp:40,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - value
    argTypes:
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 38
    functionDepth: 0
    functionLinenumber: 38
    functionLinenumberEnd: 51
    functionName: protozero::detail::byteswap_impl
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/byteswap.hpp
    functionUses: 0
    functionsReached:
    - __builtin_bswap64
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t byteswap_impl(uint64_t value) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: __builtin_bswap32
      Src: /src/pdns/ext/protozero/include/protozero/byteswap.hpp:29,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - value
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 36
      start: 27
    functionDepth: 0
    functionLinenumber: 27
    functionLinenumberEnd: 36
    functionName: protozero::detail::byteswap_impl
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/byteswap.hpp
    functionUses: 0
    functionsReached:
    - __builtin_bswap32
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t byteswap_impl(uint32_t value) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: __builtin_bswap64
      Src: /src/pdns/ext/protozero/include/protozero/byteswap.hpp:40,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - value
    argTypes:
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 38
    functionDepth: 0
    functionLinenumber: 38
    functionLinenumberEnd: 51
    functionName: protozero::detail::byteswap_impl
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/byteswap.hpp
    functionUses: 0
    functionsReached:
    - __builtin_bswap64
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t byteswap_impl(uint64_t value) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::detail::byteswap_impl
      Src: /src/pdns/ext/protozero/include/protozero/byteswap.hpp:57,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ptr
    argTypes:
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 56
    functionDepth: 1
    functionLinenumber: 56
    functionLinenumberEnd: 58
    functionName: protozero::byteswap_inplace
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/byteswap.hpp
    functionUses: 1
    functionsReached:
    - protozero::detail::byteswap_impl
    linkageType: ''
    returnType: void
    signature: void byteswap_inplace(uint32_t* ptr) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::detail::byteswap_impl
      Src: /src/pdns/ext/protozero/include/protozero/byteswap.hpp:62,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ptr
    argTypes:
    - uint64_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 61
    functionDepth: 1
    functionLinenumber: 61
    functionLinenumberEnd: 63
    functionName: protozero::byteswap_inplace
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/byteswap.hpp
    functionUses: 1
    functionsReached:
    - protozero::detail::byteswap_impl
    linkageType: ''
    returnType: void
    signature: void byteswap_inplace(uint64_t* ptr) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: reinterpret_cast<uint32_t*>
      Src: /src/pdns/ext/protozero/include/protozero/byteswap.hpp:67,1
    - Dst: protozero::detail::byteswap_impl
      Src: /src/pdns/ext/protozero/include/protozero/byteswap.hpp:68,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ptr
    argTypes:
    - int32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 66
    functionDepth: 1
    functionLinenumber: 66
    functionLinenumberEnd: 69
    functionName: protozero::byteswap_inplace
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/byteswap.hpp
    functionUses: 1
    functionsReached:
    - protozero::detail::byteswap_impl
    - reinterpret_cast<uint32_t*>
    linkageType: ''
    returnType: void
    signature: void byteswap_inplace(int32_t* ptr) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: reinterpret_cast<uint64_t*>
      Src: /src/pdns/ext/protozero/include/protozero/byteswap.hpp:73,1
    - Dst: protozero::detail::byteswap_impl
      Src: /src/pdns/ext/protozero/include/protozero/byteswap.hpp:74,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ptr
    argTypes:
    - int64_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 72
    functionDepth: 1
    functionLinenumber: 72
    functionLinenumberEnd: 75
    functionName: protozero::byteswap_inplace
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/byteswap.hpp
    functionUses: 1
    functionsReached:
    - protozero::detail::byteswap_impl
    - reinterpret_cast<uint64_t*>
    linkageType: ''
    returnType: void
    signature: void byteswap_inplace(int64_t* ptr) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::memcpy
      Src: /src/pdns/ext/protozero/include/protozero/byteswap.hpp:82,1
    - Dst: protozero::detail::byteswap_impl
      Src: /src/pdns/ext/protozero/include/protozero/byteswap.hpp:83,1
    - Dst: std::memcpy
      Src: /src/pdns/ext/protozero/include/protozero/byteswap.hpp:84,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - ptr
    argTypes:
    - float*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 78
    functionDepth: 1
    functionLinenumber: 78
    functionLinenumberEnd: 85
    functionName: protozero::byteswap_inplace
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/byteswap.hpp
    functionUses: 1
    functionsReached:
    - protozero::detail::byteswap_impl
    - std::memcpy
    linkageType: ''
    returnType: void
    signature: void byteswap_inplace(float* ptr) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::memcpy
      Src: /src/pdns/ext/protozero/include/protozero/byteswap.hpp:92,1
    - Dst: protozero::detail::byteswap_impl
      Src: /src/pdns/ext/protozero/include/protozero/byteswap.hpp:93,1
    - Dst: std::memcpy
      Src: /src/pdns/ext/protozero/include/protozero/byteswap.hpp:94,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - ptr
    argTypes:
    - double*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 88
    functionDepth: 1
    functionLinenumber: 88
    functionLinenumberEnd: 95
    functionName: protozero::byteswap_inplace
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/byteswap.hpp
    functionUses: 1
    functionsReached:
    - protozero::detail::byteswap_impl
    - std::memcpy
    linkageType: ''
    returnType: void
    signature: void byteswap_inplace(double* ptr) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: __builtin_bswap32
      Src: /src/pdns/ext/protozero/include/protozero/byteswap.hpp:29,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - value
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 36
      start: 27
    functionDepth: 0
    functionLinenumber: 27
    functionLinenumberEnd: 36
    functionName: protozero::detail::byteswap_impl
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/byteswap.hpp
    functionUses: 6
    functionsReached:
    - __builtin_bswap32
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t byteswap_impl(uint32_t value) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: __builtin_bswap64
      Src: /src/pdns/ext/protozero/include/protozero/byteswap.hpp:40,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - value
    argTypes:
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 38
    functionDepth: 0
    functionLinenumber: 38
    functionLinenumberEnd: 51
    functionName: protozero::detail::byteswap_impl
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/byteswap.hpp
    functionUses: 6
    functionsReached:
    - __builtin_bswap64
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t byteswap_impl(uint64_t value) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: __builtin_bswap32
      Src: /src/pdns/ext/protozero/include/protozero/byteswap.hpp:29,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - value
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 36
      start: 27
    functionDepth: 0
    functionLinenumber: 27
    functionLinenumberEnd: 36
    functionName: protozero::detail::byteswap_impl
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/byteswap.hpp
    functionUses: 6
    functionsReached:
    - __builtin_bswap32
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t byteswap_impl(uint32_t value) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: __builtin_bswap64
      Src: /src/pdns/ext/protozero/include/protozero/byteswap.hpp:40,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - value
    argTypes:
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 38
    functionDepth: 0
    functionLinenumber: 38
    functionLinenumberEnd: 51
    functionName: protozero::detail::byteswap_impl
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/byteswap.hpp
    functionUses: 6
    functionsReached:
    - __builtin_bswap64
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t byteswap_impl(uint64_t value) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::detail::byteswap_impl
      Src: /src/pdns/ext/protozero/include/protozero/byteswap.hpp:57,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ptr
    argTypes:
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 56
    functionDepth: 1
    functionLinenumber: 56
    functionLinenumberEnd: 58
    functionName: protozero::byteswap_inplace
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/byteswap.hpp
    functionUses: 1
    functionsReached:
    - protozero::detail::byteswap_impl
    linkageType: ''
    returnType: void
    signature: void byteswap_inplace(uint32_t* ptr) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::detail::byteswap_impl
      Src: /src/pdns/ext/protozero/include/protozero/byteswap.hpp:62,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ptr
    argTypes:
    - uint64_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 61
    functionDepth: 1
    functionLinenumber: 61
    functionLinenumberEnd: 63
    functionName: protozero::byteswap_inplace
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/byteswap.hpp
    functionUses: 1
    functionsReached:
    - protozero::detail::byteswap_impl
    linkageType: ''
    returnType: void
    signature: void byteswap_inplace(uint64_t* ptr) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: reinterpret_cast<uint32_t*>
      Src: /src/pdns/ext/protozero/include/protozero/byteswap.hpp:67,1
    - Dst: protozero::detail::byteswap_impl
      Src: /src/pdns/ext/protozero/include/protozero/byteswap.hpp:68,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ptr
    argTypes:
    - int32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 66
    functionDepth: 1
    functionLinenumber: 66
    functionLinenumberEnd: 69
    functionName: protozero::byteswap_inplace
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/byteswap.hpp
    functionUses: 1
    functionsReached:
    - protozero::detail::byteswap_impl
    - reinterpret_cast<uint32_t*>
    linkageType: ''
    returnType: void
    signature: void byteswap_inplace(int32_t* ptr) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: reinterpret_cast<uint64_t*>
      Src: /src/pdns/ext/protozero/include/protozero/byteswap.hpp:73,1
    - Dst: protozero::detail::byteswap_impl
      Src: /src/pdns/ext/protozero/include/protozero/byteswap.hpp:74,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ptr
    argTypes:
    - int64_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 72
    functionDepth: 1
    functionLinenumber: 72
    functionLinenumberEnd: 75
    functionName: protozero::byteswap_inplace
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/byteswap.hpp
    functionUses: 1
    functionsReached:
    - protozero::detail::byteswap_impl
    - reinterpret_cast<uint64_t*>
    linkageType: ''
    returnType: void
    signature: void byteswap_inplace(int64_t* ptr) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::memcpy
      Src: /src/pdns/ext/protozero/include/protozero/byteswap.hpp:82,1
    - Dst: protozero::detail::byteswap_impl
      Src: /src/pdns/ext/protozero/include/protozero/byteswap.hpp:83,1
    - Dst: std::memcpy
      Src: /src/pdns/ext/protozero/include/protozero/byteswap.hpp:84,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - ptr
    argTypes:
    - float*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 78
    functionDepth: 1
    functionLinenumber: 78
    functionLinenumberEnd: 85
    functionName: protozero::byteswap_inplace
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/byteswap.hpp
    functionUses: 1
    functionsReached:
    - protozero::detail::byteswap_impl
    - std::memcpy
    linkageType: ''
    returnType: void
    signature: void byteswap_inplace(float* ptr) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::memcpy
      Src: /src/pdns/ext/protozero/include/protozero/byteswap.hpp:92,1
    - Dst: protozero::detail::byteswap_impl
      Src: /src/pdns/ext/protozero/include/protozero/byteswap.hpp:93,1
    - Dst: std::memcpy
      Src: /src/pdns/ext/protozero/include/protozero/byteswap.hpp:94,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - ptr
    argTypes:
    - double*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 88
    functionDepth: 1
    functionLinenumber: 88
    functionLinenumberEnd: 95
    functionName: protozero::byteswap_inplace
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/byteswap.hpp
    functionUses: 1
    functionsReached:
    - protozero::detail::byteswap_impl
    - std::memcpy
    linkageType: ''
    returnType: void
    signature: void byteswap_inplace(double* ptr) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<uint32_t>
      Src: /src/pdns/ext/protozero/include/protozero/types.hpp:56,1
    - Dst: static_cast<pbf_tag_type>
      Src: /src/pdns/ext/protozero/include/protozero/types.hpp:56,1
    - Dst: static_cast<uint32_t>
      Src: /src/pdns/ext/protozero/include/protozero/types.hpp:56,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - tag
    - wire_type
    argTypes:
    - T
    - pbf_wire_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 55
    functionDepth: 0
    functionLinenumber: 55
    functionLinenumberEnd: 57
    functionName: protozero::tag_and_type
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/types.hpp
    functionUses: 0
    functionsReached:
    - static_cast<pbf_tag_type>
    - static_cast<uint32_t>
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t tag_and_type(T tag, pbf_wire_type wire_type) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<uint32_t>
      Src: /src/pdns/ext/protozero/include/protozero/types.hpp:56,1
    - Dst: static_cast<pbf_tag_type>
      Src: /src/pdns/ext/protozero/include/protozero/types.hpp:56,1
    - Dst: static_cast<uint32_t>
      Src: /src/pdns/ext/protozero/include/protozero/types.hpp:56,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - tag
    - wire_type
    argTypes:
    - T
    - pbf_wire_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 55
    functionDepth: 0
    functionLinenumber: 55
    functionLinenumberEnd: 57
    functionName: protozero::tag_and_type
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/types.hpp
    functionUses: 0
    functionsReached:
    - static_cast<pbf_tag_type>
    - static_cast<uint32_t>
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t tag_and_type(T tag, pbf_wire_type wire_type) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::pbf_reader::skip_bytes
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:80,1
    - Dst: std::memcpy
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:81,1
    - Dst: byteswap_inplace
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:83,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 77
    functionDepth: 1
    functionLinenumber: 77
    functionLinenumberEnd: 86
    functionName: protozero::pbf_reader::get_fixed
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp
    functionUses: 0
    functionsReached:
    - protozero::pbf_reader::skip_bytes
    - std::memcpy
    - byteswap_inplace
    linkageType: ''
    returnType: T
    signature: T get_fixed()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: protozero_assert
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:90,1
    - Dst: protozero::pbf_reader::tag
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:90,1
    - Dst: protozero::pbf_reader::get_len_and_skip
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:91,1
    - Dst: const_fixed_iterator<T>
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:95,1
    - Dst: const_fixed_iterator<T>
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:96,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 89
    functionDepth: 1
    functionLinenumber: 89
    functionLinenumberEnd: 97
    functionName: protozero::pbf_reader::packed_fixed
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp
    functionUses: 0
    functionsReached:
    - protozero::pbf_reader::tag
    - protozero_assert
    - protozero::pbf_reader::get_len_and_skip
    - const_fixed_iterator<T>
    linkageType: ''
    returnType: iterator_range<const_fixed_iterator<T>>
    signature: iterator_range<const_fixed_iterator<T>> packed_fixed()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<T>
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:101,1
    - Dst: decode_varint
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:101,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 100
    functionDepth: 0
    functionLinenumber: 100
    functionLinenumberEnd: 103
    functionName: protozero::pbf_reader::get_varint
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp
    functionUses: 0
    functionsReached:
    - static_cast<T>
    - decode_varint
    linkageType: ''
    returnType: T
    signature: T get_varint()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero_assert
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:107,1
    - Dst: protozero::pbf_reader::has_wire_type
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:107,1
    - Dst: protozero::pbf_reader::has_wire_type
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:107,1
    - Dst: static_cast<T>
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:108,1
    - Dst: decode_zigzag64
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:108,1
    - Dst: decode_varint
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:108,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 106
    functionDepth: 1
    functionLinenumber: 106
    functionLinenumberEnd: 109
    functionName: protozero::pbf_reader::get_svarint
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp
    functionUses: 0
    functionsReached:
    - decode_zigzag64
    - decode_varint
    - protozero::pbf_reader::has_wire_type
    - protozero_assert
    - static_cast<T>
    linkageType: ''
    returnType: T
    signature: T get_svarint()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::pbf_reader::get_varint
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:112,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 113
      start: 111
    functionDepth: 1
    functionLinenumber: 111
    functionLinenumberEnd: 113
    functionName: protozero::pbf_reader::get_length
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp
    functionUses: 0
    functionsReached:
    - protozero::pbf_reader::get_varint
    linkageType: ''
    returnType: pbf_length_type
    signature: pbf_length_type get_length()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<ptrdiff_t>
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:116,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - len
    argTypes:
    - pbf_length_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 115
    functionDepth: 0
    functionLinenumber: 115
    functionLinenumberEnd: 126
    functionName: protozero::pbf_reader::skip_bytes
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp
    functionUses: 1
    functionsReached:
    - static_cast<ptrdiff_t>
    linkageType: ''
    returnType: void
    signature: void skip_bytes(pbf_length_type len)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::pbf_reader::get_length
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:129,1
    - Dst: protozero::pbf_reader::skip_bytes
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:130,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 132
      start: 128
    functionDepth: 2
    functionLinenumber: 128
    functionLinenumberEnd: 132
    functionName: protozero::pbf_reader::get_len_and_skip
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp
    functionUses: 1
    functionsReached:
    - protozero::pbf_reader::skip_bytes
    - protozero::pbf_reader::get_length
    linkageType: ''
    returnType: pbf_length_type
    signature: pbf_length_type get_len_and_skip()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero_assert
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:136,1
    - Dst: protozero::pbf_reader::tag
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:136,1
    - Dst: protozero::pbf_reader::get_len_and_skip
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:137,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 135
    functionDepth: 3
    functionLinenumber: 135
    functionLinenumberEnd: 140
    functionName: protozero::pbf_reader::get_packed
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp
    functionUses: 0
    functionsReached:
    - protozero::pbf_reader::tag
    - protozero_assert
    - protozero::pbf_reader::get_len_and_skip
    linkageType: ''
    returnType: iterator_range<T>
    signature: iterator_range<T> get_packed()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::pbf_reader::data
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:155,1
    - Dst: protozero::pbf_reader::data
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:156,1
    - Dst: size
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:156,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' view'
    argTypes:
    - data_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 157
      start: 154
    functionDepth: 1
    functionLinenumber: 154
    functionLinenumberEnd: 157
    functionName: protozero::pbf_reader::pbf_reader
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp
    functionUses: 0
    functionsReached:
    - protozero::pbf_reader::data
    - size
    linkageType: ''
    returnType: void
    signature: void pbf_reader(const data_view& view) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - data
    - size
    argTypes:
    - char*
    - std::size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 172
      start: 169
    functionDepth: 0
    functionLinenumber: 169
    functionLinenumberEnd: 172
    functionName: protozero::pbf_reader::pbf_reader
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void pbf_reader(const char* data, std::size_t size) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' data'
    argTypes:
    - std::pair<const char*, std::size_t>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 189
      start: 186
    functionDepth: 0
    functionLinenumber: 186
    functionLinenumberEnd: 189
    functionName: protozero::pbf_reader::pbf_reader
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void pbf_reader(const std::pair<const char*, std::size_t>& data) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::pbf_reader::data
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:203,1
    - Dst: protozero::pbf_reader::data
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:204,1
    - Dst: size
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:204,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' data'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 205
      start: 202
    functionDepth: 1
    functionLinenumber: 202
    functionLinenumberEnd: 205
    functionName: protozero::pbf_reader::pbf_reader
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp
    functionUses: 0
    functionsReached:
    - protozero::pbf_reader::data
    - size
    linkageType: ''
    returnType: void
    signature: void pbf_reader(const std::string& data) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 211
      start: 211
    functionDepth: 0
    functionLinenumber: 211
    functionLinenumberEnd: 211
    functionName: protozero::pbf_reader::pbf_reader
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void pbf_reader() noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 214
      start: 214
    functionDepth: 0
    functionLinenumber: 214
    functionLinenumberEnd: 214
    functionName: protozero::pbf_reader::pbf_reader
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void pbf_reader(const pbf_reader&) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 217
      start: 217
    functionDepth: 0
    functionLinenumber: 217
    functionLinenumberEnd: 217
    functionName: protozero::pbf_reader::pbf_reader
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void pbf_reader(pbf_reader&&) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 1
    argNames:
    - ' other'
    argTypes:
    - pbf_reader
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 220
      start: 220
    functionDepth: 0
    functionLinenumber: 220
    functionLinenumberEnd: 220
    functionName: '& operator=(const pbf_reader& other) noexcept'
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: pbf_reader
    signature: pbf_reader & operator=(const pbf_reader& other) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 1
    argNames:
    - ' other'
    argTypes:
    - pbf_reader
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 223
      start: 223
    functionDepth: 0
    functionLinenumber: 223
    functionLinenumberEnd: 223
    functionName: '& operator=(pbf_reader&& other) noexcept'
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: pbf_reader
    signature: pbf_reader & operator=(pbf_reader&& other) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 225
      start: 225
    functionDepth: 0
    functionLinenumber: 225
    functionLinenumberEnd: 225
    functionName: ~pbf_reader()
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~pbf_reader()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::pbf_reader::swap
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:234,1
    - Dst: protozero::pbf_reader::swap
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:235,1
    - Dst: protozero::pbf_reader::swap
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:236,1
    - Dst: protozero::pbf_reader::swap
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:237,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - ' other'
    argTypes:
    - pbf_reader
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 238
      start: 232
    functionDepth: 1
    functionLinenumber: 232
    functionLinenumberEnd: 238
    functionName: protozero::pbf_reader::swap
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp
    functionUses: 1
    functionsReached:
    - protozero::pbf_reader::swap
    linkageType: ''
    returnType: void
    signature: void swap(pbf_reader& other) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 247
      start: 245
    functionDepth: 0
    functionLinenumber: 245
    functionLinenumberEnd: 247
    functionName: operator bool() const noexcept
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void operator bool() const noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<std::size_t>
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:253,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 254
      start: 252
    functionDepth: 0
    functionLinenumber: 252
    functionLinenumberEnd: 254
    functionName: protozero::pbf_reader::data
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp
    functionUses: 2
    functionsReached:
    - static_cast<std::size_t>
    linkageType: ''
    returnType: data_view
    signature: data_view data() const noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<std::size_t>
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:266,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 267
      start: 265
    functionDepth: 0
    functionLinenumber: 265
    functionLinenumberEnd: 267
    functionName: protozero::pbf_reader::length
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp
    functionUses: 0
    functionsReached:
    - static_cast<std::size_t>
    linkageType: ''
    returnType: std::size_t
    signature: std::size_t length() const noexcept
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: protozero::pbf_reader::get_varint
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:289,1
    - Dst: static_cast<pbf_tag_type>
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:290,1
    - Dst: pbf_wire_type
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:298,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 19
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 310
      start: 284
    functionDepth: 1
    functionLinenumber: 284
    functionLinenumberEnd: 310
    functionName: protozero::pbf_reader::next
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp
    functionUses: 1
    functionsReached:
    - protozero::pbf_reader::get_varint
    - pbf_wire_type
    - static_cast<pbf_tag_type>
    linkageType: ''
    returnType: bool
    signature: bool next()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: protozero::pbf_reader::next
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:341,1
    - Dst: protozero::pbf_reader::skip
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:345,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - next_tag
    argTypes:
    - pbf_tag_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 348
      start: 340
    functionDepth: 1
    functionLinenumber: 340
    functionLinenumberEnd: 348
    functionName: protozero::pbf_reader::next
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp
    functionUses: 2
    functionsReached:
    - protozero::pbf_reader::skip
    - protozero::pbf_reader::next
    linkageType: ''
    returnType: bool
    signature: bool next(pbf_tag_type next_tag)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: protozero::pbf_reader::next
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:379,1
    - Dst: protozero::pbf_reader::skip
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:383,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - next_tag
    - type
    argTypes:
    - pbf_tag_type
    - pbf_wire_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 386
      start: 378
    functionDepth: 1
    functionLinenumber: 378
    functionLinenumberEnd: 386
    functionName: protozero::pbf_reader::next
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp
    functionUses: 3
    functionsReached:
    - protozero::pbf_reader::skip
    - protozero::pbf_reader::next
    linkageType: ''
    returnType: bool
    signature: bool next(pbf_tag_type next_tag, pbf_wire_type type)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 399
      start: 397
    functionDepth: 0
    functionLinenumber: 397
    functionLinenumberEnd: 399
    functionName: protozero::pbf_reader::tag
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: pbf_tag_type
    signature: pbf_tag_type tag() const noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 418
      start: 416
    functionDepth: 0
    functionLinenumber: 416
    functionLinenumberEnd: 418
    functionName: protozero::pbf_reader::wire_type
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: pbf_wire_type
    signature: pbf_wire_type wire_type() const noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::tag_and_type
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:443,1
    - Dst: protozero::pbf_reader::tag
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:443,1
    - Dst: protozero::pbf_reader::wire_type
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:443,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 444
      start: 442
    functionDepth: 1
    functionLinenumber: 442
    functionLinenumberEnd: 444
    functionName: protozero::pbf_reader::tag_and_type
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp
    functionUses: 0
    functionsReached:
    - protozero::pbf_reader::tag
    - protozero::tag_and_type
    - protozero::pbf_reader::wire_type
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t tag_and_type() const noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::pbf_reader::wire_type
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:453,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - type
    argTypes:
    - pbf_wire_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 454
      start: 452
    functionDepth: 1
    functionLinenumber: 452
    functionLinenumberEnd: 454
    functionName: protozero::pbf_reader::has_wire_type
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp
    functionUses: 1
    functionsReached:
    - protozero::pbf_reader::wire_type
    linkageType: ''
    returnType: bool
    signature: bool has_wire_type(pbf_wire_type type) const noexcept
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: protozero_assert
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:463,1
    - Dst: protozero::pbf_reader::tag
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:463,1
    - Dst: protozero::pbf_reader::wire_type
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:464,1
    - Dst: skip_varint
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:466,1
    - Dst: protozero::pbf_reader::skip_bytes
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:469,1
    - Dst: protozero::pbf_reader::skip_bytes
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:472,1
    - Dst: protozero::pbf_reader::get_length
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:472,1
    - Dst: protozero::pbf_reader::skip_bytes
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:475,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 480
      start: 462
    functionDepth: 2
    functionLinenumber: 462
    functionLinenumberEnd: 480
    functionName: protozero::pbf_reader::skip
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp
    functionUses: 2
    functionsReached:
    - protozero::pbf_reader::skip_bytes
    - protozero::pbf_reader::get_length
    - protozero_assert
    - skip_varint
    - protozero::pbf_reader::wire_type
    - protozero::pbf_reader::tag
    linkageType: ''
    returnType: void
    signature: void skip()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero_assert
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:495,1
    - Dst: protozero::pbf_reader::tag
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:495,1
    - Dst: protozero_assert
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:496,1
    - Dst: protozero::pbf_reader::has_wire_type
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:496,1
    - Dst: skip_varint
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:498,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 500
      start: 494
    functionDepth: 2
    functionLinenumber: 494
    functionLinenumberEnd: 500
    functionName: protozero::pbf_reader::get_bool
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp
    functionUses: 0
    functionsReached:
    - protozero::pbf_reader::tag
    - skip_varint
    - protozero_assert
    - protozero::pbf_reader::has_wire_type
    linkageType: ''
    returnType: bool
    signature: bool get_bool()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero_assert
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:510,1
    - Dst: protozero::pbf_reader::has_wire_type
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:510,1
    - Dst: protozero::pbf_reader::get_varint
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:511,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 512
      start: 509
    functionDepth: 2
    functionLinenumber: 509
    functionLinenumberEnd: 512
    functionName: protozero::pbf_reader::get_enum
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp
    functionUses: 0
    functionsReached:
    - protozero_assert
    - protozero::pbf_reader::get_varint
    - protozero::pbf_reader::has_wire_type
    linkageType: ''
    returnType: int32_t
    signature: int32_t get_enum()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero_assert
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:522,1
    - Dst: protozero::pbf_reader::has_wire_type
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:522,1
    - Dst: protozero::pbf_reader::get_varint
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:523,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 524
      start: 521
    functionDepth: 2
    functionLinenumber: 521
    functionLinenumberEnd: 524
    functionName: protozero::pbf_reader::get_int32
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp
    functionUses: 0
    functionsReached:
    - protozero_assert
    - protozero::pbf_reader::get_varint
    - protozero::pbf_reader::has_wire_type
    linkageType: ''
    returnType: int32_t
    signature: int32_t get_int32()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero_assert
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:534,1
    - Dst: protozero::pbf_reader::has_wire_type
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:534,1
    - Dst: protozero::pbf_reader::get_svarint
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:535,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 536
      start: 533
    functionDepth: 2
    functionLinenumber: 533
    functionLinenumberEnd: 536
    functionName: protozero::pbf_reader::get_sint32
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp
    functionUses: 0
    functionsReached:
    - protozero_assert
    - protozero::pbf_reader::get_svarint
    - protozero::pbf_reader::has_wire_type
    linkageType: ''
    returnType: int32_t
    signature: int32_t get_sint32()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero_assert
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:546,1
    - Dst: protozero::pbf_reader::has_wire_type
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:546,1
    - Dst: protozero::pbf_reader::get_varint
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:547,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 548
      start: 545
    functionDepth: 2
    functionLinenumber: 545
    functionLinenumberEnd: 548
    functionName: protozero::pbf_reader::get_uint32
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp
    functionUses: 0
    functionsReached:
    - protozero_assert
    - protozero::pbf_reader::get_varint
    - protozero::pbf_reader::has_wire_type
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t get_uint32()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero_assert
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:558,1
    - Dst: protozero::pbf_reader::has_wire_type
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:558,1
    - Dst: protozero::pbf_reader::get_varint
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:559,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 560
      start: 557
    functionDepth: 2
    functionLinenumber: 557
    functionLinenumberEnd: 560
    functionName: protozero::pbf_reader::get_int64
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp
    functionUses: 0
    functionsReached:
    - protozero_assert
    - protozero::pbf_reader::get_varint
    - protozero::pbf_reader::has_wire_type
    linkageType: ''
    returnType: int64_t
    signature: int64_t get_int64()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero_assert
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:570,1
    - Dst: protozero::pbf_reader::has_wire_type
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:570,1
    - Dst: protozero::pbf_reader::get_svarint
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:571,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 572
      start: 569
    functionDepth: 2
    functionLinenumber: 569
    functionLinenumberEnd: 572
    functionName: protozero::pbf_reader::get_sint64
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp
    functionUses: 0
    functionsReached:
    - protozero_assert
    - protozero::pbf_reader::get_svarint
    - protozero::pbf_reader::has_wire_type
    linkageType: ''
    returnType: int64_t
    signature: int64_t get_sint64()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero_assert
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:582,1
    - Dst: protozero::pbf_reader::has_wire_type
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:582,1
    - Dst: protozero::pbf_reader::get_varint
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:583,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 584
      start: 581
    functionDepth: 2
    functionLinenumber: 581
    functionLinenumberEnd: 584
    functionName: protozero::pbf_reader::get_uint64
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp
    functionUses: 0
    functionsReached:
    - protozero_assert
    - protozero::pbf_reader::get_varint
    - protozero::pbf_reader::has_wire_type
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t get_uint64()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero_assert
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:594,1
    - Dst: protozero::pbf_reader::tag
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:594,1
    - Dst: protozero_assert
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:595,1
    - Dst: protozero::pbf_reader::has_wire_type
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:595,1
    - Dst: protozero::pbf_reader::get_fixed
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:596,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 597
      start: 593
    functionDepth: 2
    functionLinenumber: 593
    functionLinenumberEnd: 597
    functionName: protozero::pbf_reader::get_fixed32
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp
    functionUses: 0
    functionsReached:
    - protozero::pbf_reader::tag
    - protozero::pbf_reader::get_fixed
    - protozero_assert
    - protozero::pbf_reader::has_wire_type
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t get_fixed32()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero_assert
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:607,1
    - Dst: protozero::pbf_reader::tag
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:607,1
    - Dst: protozero_assert
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:608,1
    - Dst: protozero::pbf_reader::has_wire_type
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:608,1
    - Dst: protozero::pbf_reader::get_fixed
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:609,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 610
      start: 606
    functionDepth: 2
    functionLinenumber: 606
    functionLinenumberEnd: 610
    functionName: protozero::pbf_reader::get_sfixed32
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp
    functionUses: 0
    functionsReached:
    - protozero::pbf_reader::tag
    - protozero::pbf_reader::get_fixed
    - protozero_assert
    - protozero::pbf_reader::has_wire_type
    linkageType: ''
    returnType: int32_t
    signature: int32_t get_sfixed32()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero_assert
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:620,1
    - Dst: protozero::pbf_reader::tag
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:620,1
    - Dst: protozero_assert
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:621,1
    - Dst: protozero::pbf_reader::has_wire_type
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:621,1
    - Dst: protozero::pbf_reader::get_fixed
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:622,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 623
      start: 619
    functionDepth: 2
    functionLinenumber: 619
    functionLinenumberEnd: 623
    functionName: protozero::pbf_reader::get_fixed64
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp
    functionUses: 0
    functionsReached:
    - protozero::pbf_reader::tag
    - protozero::pbf_reader::get_fixed
    - protozero_assert
    - protozero::pbf_reader::has_wire_type
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t get_fixed64()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero_assert
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:633,1
    - Dst: protozero::pbf_reader::tag
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:633,1
    - Dst: protozero_assert
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:634,1
    - Dst: protozero::pbf_reader::has_wire_type
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:634,1
    - Dst: protozero::pbf_reader::get_fixed
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:635,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 636
      start: 632
    functionDepth: 2
    functionLinenumber: 632
    functionLinenumberEnd: 636
    functionName: protozero::pbf_reader::get_sfixed64
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp
    functionUses: 1
    functionsReached:
    - protozero::pbf_reader::tag
    - protozero::pbf_reader::get_fixed
    - protozero_assert
    - protozero::pbf_reader::has_wire_type
    linkageType: ''
    returnType: int64_t
    signature: int64_t get_sfixed64()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero_assert
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:646,1
    - Dst: protozero::pbf_reader::tag
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:646,1
    - Dst: protozero_assert
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:647,1
    - Dst: protozero::pbf_reader::has_wire_type
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:647,1
    - Dst: protozero::pbf_reader::get_fixed
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:648,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 649
      start: 645
    functionDepth: 2
    functionLinenumber: 645
    functionLinenumberEnd: 649
    functionName: protozero::pbf_reader::get_float
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp
    functionUses: 0
    functionsReached:
    - protozero::pbf_reader::tag
    - protozero::pbf_reader::get_fixed
    - protozero_assert
    - protozero::pbf_reader::has_wire_type
    linkageType: ''
    returnType: float
    signature: float get_float()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero_assert
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:659,1
    - Dst: protozero::pbf_reader::tag
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:659,1
    - Dst: protozero_assert
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:660,1
    - Dst: protozero::pbf_reader::has_wire_type
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:660,1
    - Dst: protozero::pbf_reader::get_fixed
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:661,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 662
      start: 658
    functionDepth: 2
    functionLinenumber: 658
    functionLinenumberEnd: 662
    functionName: protozero::pbf_reader::get_double
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp
    functionUses: 0
    functionsReached:
    - protozero::pbf_reader::tag
    - protozero::pbf_reader::get_fixed
    - protozero_assert
    - protozero::pbf_reader::has_wire_type
    linkageType: ''
    returnType: double
    signature: double get_double()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero_assert
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:674,1
    - Dst: protozero::pbf_reader::tag
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:674,1
    - Dst: protozero_assert
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:675,1
    - Dst: protozero::pbf_reader::has_wire_type
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:675,1
    - Dst: protozero::pbf_reader::get_len_and_skip
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:676,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 678
      start: 673
    functionDepth: 3
    functionLinenumber: 673
    functionLinenumberEnd: 678
    functionName: protozero::pbf_reader::get_view
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp
    functionUses: 0
    functionsReached:
    - protozero::pbf_reader::tag
    - protozero_assert
    - protozero::pbf_reader::get_len_and_skip
    - protozero::pbf_reader::has_wire_type
    linkageType: ''
    returnType: data_view
    signature: data_view get_view()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero_assert
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:690,1
    - Dst: protozero::pbf_reader::tag
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:690,1
    - Dst: protozero_assert
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:691,1
    - Dst: protozero::pbf_reader::has_wire_type
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:691,1
    - Dst: protozero::pbf_reader::get_len_and_skip
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:692,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 694
      start: 689
    functionDepth: 3
    functionLinenumber: 689
    functionLinenumberEnd: 694
    functionName: protozero::pbf_reader::get_data
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp
    functionUses: 0
    functionsReached:
    - protozero::pbf_reader::tag
    - protozero_assert
    - protozero::pbf_reader::get_len_and_skip
    - protozero::pbf_reader::has_wire_type
    linkageType: ''
    returnType: std::pair<const char*, pbf_length_type>
    signature: std::pair<const char*, pbf_length_type> get_data()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::string
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:705,1
    - Dst: protozero::pbf_reader::get_view
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:705,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 706
      start: 704
    functionDepth: 4
    functionLinenumber: 704
    functionLinenumberEnd: 706
    functionName: protozero::pbf_reader::get_bytes
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp
    functionUses: 0
    functionsReached:
    - protozero::pbf_reader::get_view
    - std::string
    linkageType: ''
    returnType: std::string
    signature: std::string get_bytes()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::string
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:716,1
    - Dst: protozero::pbf_reader::get_view
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:716,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 717
      start: 715
    functionDepth: 4
    functionLinenumber: 715
    functionLinenumberEnd: 717
    functionName: protozero::pbf_reader::get_string
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp
    functionUses: 1
    functionsReached:
    - protozero::pbf_reader::get_view
    - std::string
    linkageType: ''
    returnType: std::string
    signature: std::string get_string()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::pbf_reader::get_view
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:727,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 728
      start: 726
    functionDepth: 4
    functionLinenumber: 726
    functionLinenumberEnd: 728
    functionName: protozero::pbf_reader::get_message
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp
    functionUses: 0
    functionsReached:
    - protozero::pbf_reader::get_view
    linkageType: ''
    returnType: pbf_reader
    signature: pbf_reader get_message()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::pbf_reader::get_packed
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:789,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 790
      start: 788
    functionDepth: 4
    functionLinenumber: 788
    functionLinenumberEnd: 790
    functionName: protozero::pbf_reader::get_packed_bool
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp
    functionUses: 0
    functionsReached:
    - protozero::pbf_reader::get_packed
    linkageType: ''
    returnType: iterator_range<pbf_reader::const_bool_iterator>
    signature: iterator_range<pbf_reader::const_bool_iterator> get_packed_bool()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::pbf_reader::get_packed
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:802,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 803
      start: 801
    functionDepth: 4
    functionLinenumber: 801
    functionLinenumberEnd: 803
    functionName: protozero::pbf_reader::get_packed_enum
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp
    functionUses: 0
    functionsReached:
    - protozero::pbf_reader::get_packed
    linkageType: ''
    returnType: iterator_range<pbf_reader::const_enum_iterator>
    signature: iterator_range<pbf_reader::const_enum_iterator> get_packed_enum()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::pbf_reader::get_packed
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:815,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 816
      start: 814
    functionDepth: 4
    functionLinenumber: 814
    functionLinenumberEnd: 816
    functionName: protozero::pbf_reader::get_packed_int32
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp
    functionUses: 0
    functionsReached:
    - protozero::pbf_reader::get_packed
    linkageType: ''
    returnType: iterator_range<pbf_reader::const_int32_iterator>
    signature: iterator_range<pbf_reader::const_int32_iterator> get_packed_int32()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::pbf_reader::get_packed
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:828,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 829
      start: 827
    functionDepth: 4
    functionLinenumber: 827
    functionLinenumberEnd: 829
    functionName: protozero::pbf_reader::get_packed_sint32
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp
    functionUses: 0
    functionsReached:
    - protozero::pbf_reader::get_packed
    linkageType: ''
    returnType: iterator_range<pbf_reader::const_sint32_iterator>
    signature: iterator_range<pbf_reader::const_sint32_iterator> get_packed_sint32()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::pbf_reader::get_packed
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:841,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 842
      start: 840
    functionDepth: 4
    functionLinenumber: 840
    functionLinenumberEnd: 842
    functionName: protozero::pbf_reader::get_packed_uint32
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp
    functionUses: 0
    functionsReached:
    - protozero::pbf_reader::get_packed
    linkageType: ''
    returnType: iterator_range<pbf_reader::const_uint32_iterator>
    signature: iterator_range<pbf_reader::const_uint32_iterator> get_packed_uint32()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::pbf_reader::get_packed
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:854,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 855
      start: 853
    functionDepth: 4
    functionLinenumber: 853
    functionLinenumberEnd: 855
    functionName: protozero::pbf_reader::get_packed_int64
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp
    functionUses: 0
    functionsReached:
    - protozero::pbf_reader::get_packed
    linkageType: ''
    returnType: iterator_range<pbf_reader::const_int64_iterator>
    signature: iterator_range<pbf_reader::const_int64_iterator> get_packed_int64()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::pbf_reader::get_packed
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:867,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 868
      start: 866
    functionDepth: 4
    functionLinenumber: 866
    functionLinenumberEnd: 868
    functionName: protozero::pbf_reader::get_packed_sint64
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp
    functionUses: 0
    functionsReached:
    - protozero::pbf_reader::get_packed
    linkageType: ''
    returnType: iterator_range<pbf_reader::const_sint64_iterator>
    signature: iterator_range<pbf_reader::const_sint64_iterator> get_packed_sint64()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::pbf_reader::get_packed
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:880,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 881
      start: 879
    functionDepth: 4
    functionLinenumber: 879
    functionLinenumberEnd: 881
    functionName: protozero::pbf_reader::get_packed_uint64
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp
    functionUses: 0
    functionsReached:
    - protozero::pbf_reader::get_packed
    linkageType: ''
    returnType: iterator_range<pbf_reader::const_uint64_iterator>
    signature: iterator_range<pbf_reader::const_uint64_iterator> get_packed_uint64()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::pbf_reader::packed_fixed
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:893,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 894
      start: 892
    functionDepth: 2
    functionLinenumber: 892
    functionLinenumberEnd: 894
    functionName: protozero::pbf_reader::get_packed_fixed32
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp
    functionUses: 0
    functionsReached:
    - protozero::pbf_reader::packed_fixed
    linkageType: ''
    returnType: iterator_range<pbf_reader::const_fixed32_iterator>
    signature: iterator_range<pbf_reader::const_fixed32_iterator> get_packed_fixed32()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::pbf_reader::packed_fixed
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:906,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 907
      start: 905
    functionDepth: 2
    functionLinenumber: 905
    functionLinenumberEnd: 907
    functionName: protozero::pbf_reader::get_packed_sfixed32
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp
    functionUses: 0
    functionsReached:
    - protozero::pbf_reader::packed_fixed
    linkageType: ''
    returnType: iterator_range<pbf_reader::const_sfixed32_iterator>
    signature: iterator_range<pbf_reader::const_sfixed32_iterator> get_packed_sfixed32()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::pbf_reader::packed_fixed
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:919,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 920
      start: 918
    functionDepth: 2
    functionLinenumber: 918
    functionLinenumberEnd: 920
    functionName: protozero::pbf_reader::get_packed_fixed64
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp
    functionUses: 0
    functionsReached:
    - protozero::pbf_reader::packed_fixed
    linkageType: ''
    returnType: iterator_range<pbf_reader::const_fixed64_iterator>
    signature: iterator_range<pbf_reader::const_fixed64_iterator> get_packed_fixed64()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::pbf_reader::packed_fixed
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:932,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 933
      start: 931
    functionDepth: 2
    functionLinenumber: 931
    functionLinenumberEnd: 933
    functionName: protozero::pbf_reader::get_packed_sfixed64
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp
    functionUses: 0
    functionsReached:
    - protozero::pbf_reader::packed_fixed
    linkageType: ''
    returnType: iterator_range<pbf_reader::const_sfixed64_iterator>
    signature: iterator_range<pbf_reader::const_sfixed64_iterator> get_packed_sfixed64()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::pbf_reader::packed_fixed
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:945,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 946
      start: 944
    functionDepth: 2
    functionLinenumber: 944
    functionLinenumberEnd: 946
    functionName: protozero::pbf_reader::get_packed_float
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp
    functionUses: 0
    functionsReached:
    - protozero::pbf_reader::packed_fixed
    linkageType: ''
    returnType: iterator_range<pbf_reader::const_float_iterator>
    signature: iterator_range<pbf_reader::const_float_iterator> get_packed_float()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::pbf_reader::packed_fixed
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:958,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 959
      start: 957
    functionDepth: 2
    functionLinenumber: 957
    functionLinenumberEnd: 959
    functionName: protozero::pbf_reader::get_packed_double
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp
    functionUses: 0
    functionsReached:
    - protozero::pbf_reader::packed_fixed
    linkageType: ''
    returnType: iterator_range<pbf_reader::const_double_iterator>
    signature: iterator_range<pbf_reader::const_double_iterator> get_packed_double()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::swap
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:972,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' lhs'
    - ' rhs'
    argTypes:
    - pbf_reader
    - pbf_reader
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 973
      start: 971
    functionDepth: 0
    functionLinenumber: 971
    functionLinenumberEnd: 973
    functionName: protozero::swap
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp
    functionUses: 7
    functionsReached:
    - protozero::swap
    linkageType: ''
    returnType: void
    signature: void swap(pbf_reader& lhs, pbf_reader& rhs) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::pbf_reader::skip_bytes
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:80,1
    - Dst: std::memcpy
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:81,1
    - Dst: byteswap_inplace
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:83,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 77
    functionDepth: 1
    functionLinenumber: 77
    functionLinenumberEnd: 86
    functionName: protozero::pbf_reader::get_fixed
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp
    functionUses: 6
    functionsReached:
    - protozero::pbf_reader::skip_bytes
    - std::memcpy
    - byteswap_inplace
    linkageType: ''
    returnType: T
    signature: T get_fixed()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: protozero_assert
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:90,1
    - Dst: protozero::pbf_reader::tag
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:90,1
    - Dst: protozero::pbf_reader::get_len_and_skip
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:91,1
    - Dst: const_fixed_iterator<T>
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:95,1
    - Dst: const_fixed_iterator<T>
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:96,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 89
    functionDepth: 3
    functionLinenumber: 89
    functionLinenumberEnd: 97
    functionName: protozero::pbf_reader::packed_fixed
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp
    functionUses: 6
    functionsReached:
    - protozero::pbf_reader::tag
    - protozero_assert
    - protozero::pbf_reader::get_len_and_skip
    - const_fixed_iterator<T>
    linkageType: ''
    returnType: iterator_range<const_fixed_iterator<T>>
    signature: iterator_range<const_fixed_iterator<T>> packed_fixed()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<T>
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:101,1
    - Dst: decode_varint
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:101,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 100
    functionDepth: 0
    functionLinenumber: 100
    functionLinenumberEnd: 103
    functionName: protozero::pbf_reader::get_varint
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp
    functionUses: 7
    functionsReached:
    - static_cast<T>
    - decode_varint
    linkageType: ''
    returnType: T
    signature: T get_varint()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero_assert
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:107,1
    - Dst: protozero::pbf_reader::has_wire_type
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:107,1
    - Dst: protozero::pbf_reader::has_wire_type
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:107,1
    - Dst: static_cast<T>
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:108,1
    - Dst: decode_zigzag64
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:108,1
    - Dst: decode_varint
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:108,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 106
    functionDepth: 2
    functionLinenumber: 106
    functionLinenumberEnd: 109
    functionName: protozero::pbf_reader::get_svarint
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp
    functionUses: 2
    functionsReached:
    - decode_zigzag64
    - decode_varint
    - protozero::pbf_reader::has_wire_type
    - protozero_assert
    - static_cast<T>
    linkageType: ''
    returnType: T
    signature: T get_svarint()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::pbf_reader::get_varint
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:112,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 113
      start: 111
    functionDepth: 1
    functionLinenumber: 111
    functionLinenumberEnd: 113
    functionName: protozero::pbf_reader::get_length
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp
    functionUses: 2
    functionsReached:
    - protozero::pbf_reader::get_varint
    linkageType: ''
    returnType: pbf_length_type
    signature: pbf_length_type get_length()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<ptrdiff_t>
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:116,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - len
    argTypes:
    - pbf_length_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 115
    functionDepth: 0
    functionLinenumber: 115
    functionLinenumberEnd: 126
    functionName: protozero::pbf_reader::skip_bytes
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp
    functionUses: 4
    functionsReached:
    - static_cast<ptrdiff_t>
    linkageType: ''
    returnType: void
    signature: void skip_bytes(pbf_length_type len)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::pbf_reader::get_length
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:129,1
    - Dst: protozero::pbf_reader::skip_bytes
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:130,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 132
      start: 128
    functionDepth: 2
    functionLinenumber: 128
    functionLinenumberEnd: 132
    functionName: protozero::pbf_reader::get_len_and_skip
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp
    functionUses: 5
    functionsReached:
    - protozero::pbf_reader::skip_bytes
    - protozero::pbf_reader::get_length
    linkageType: ''
    returnType: pbf_length_type
    signature: pbf_length_type get_len_and_skip()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero_assert
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:136,1
    - Dst: protozero::pbf_reader::tag
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:136,1
    - Dst: protozero::pbf_reader::get_len_and_skip
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:137,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 135
    functionDepth: 3
    functionLinenumber: 135
    functionLinenumberEnd: 140
    functionName: protozero::pbf_reader::get_packed
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp
    functionUses: 8
    functionsReached:
    - protozero::pbf_reader::tag
    - protozero_assert
    - protozero::pbf_reader::get_len_and_skip
    linkageType: ''
    returnType: iterator_range<T>
    signature: iterator_range<T> get_packed()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::pbf_reader::data
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:155,1
    - Dst: protozero::pbf_reader::data
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:156,1
    - Dst: size
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:156,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' view'
    argTypes:
    - data_view
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 157
      start: 154
    functionDepth: 1
    functionLinenumber: 154
    functionLinenumberEnd: 157
    functionName: protozero::pbf_reader::pbf_reader
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp
    functionUses: 0
    functionsReached:
    - protozero::pbf_reader::data
    - size
    linkageType: ''
    returnType: void
    signature: void pbf_reader(const data_view& view) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - data
    - size
    argTypes:
    - char*
    - std::size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 172
      start: 169
    functionDepth: 0
    functionLinenumber: 169
    functionLinenumberEnd: 172
    functionName: protozero::pbf_reader::pbf_reader
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void pbf_reader(const char* data, std::size_t size) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' data'
    argTypes:
    - std::pair<const char*, std::size_t>
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 189
      start: 186
    functionDepth: 0
    functionLinenumber: 186
    functionLinenumberEnd: 189
    functionName: protozero::pbf_reader::pbf_reader
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void pbf_reader(const std::pair<const char*, std::size_t>& data) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::pbf_reader::data
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:203,1
    - Dst: protozero::pbf_reader::data
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:204,1
    - Dst: size
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:204,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ' data'
    argTypes:
    - std::string
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 205
      start: 202
    functionDepth: 1
    functionLinenumber: 202
    functionLinenumberEnd: 205
    functionName: protozero::pbf_reader::pbf_reader
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp
    functionUses: 0
    functionsReached:
    - protozero::pbf_reader::data
    - size
    linkageType: ''
    returnType: void
    signature: void pbf_reader(const std::string& data) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 211
      start: 211
    functionDepth: 0
    functionLinenumber: 211
    functionLinenumberEnd: 211
    functionName: protozero::pbf_reader::pbf_reader
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void pbf_reader() noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 214
      start: 214
    functionDepth: 0
    functionLinenumber: 214
    functionLinenumberEnd: 214
    functionName: protozero::pbf_reader::pbf_reader
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void pbf_reader(const pbf_reader&) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 217
      start: 217
    functionDepth: 0
    functionLinenumber: 217
    functionLinenumberEnd: 217
    functionName: protozero::pbf_reader::pbf_reader
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void pbf_reader(pbf_reader&&) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 1
    argNames:
    - ' other'
    argTypes:
    - pbf_reader
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 220
      start: 220
    functionDepth: 0
    functionLinenumber: 220
    functionLinenumberEnd: 220
    functionName: '& operator=(const pbf_reader& other) noexcept'
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: pbf_reader
    signature: pbf_reader & operator=(const pbf_reader& other) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 0
    argCount: 1
    argNames:
    - ' other'
    argTypes:
    - pbf_reader
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 223
      start: 223
    functionDepth: 0
    functionLinenumber: 223
    functionLinenumberEnd: 223
    functionName: '& operator=(pbf_reader&& other) noexcept'
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: pbf_reader
    signature: pbf_reader & operator=(pbf_reader&& other) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 225
      start: 225
    functionDepth: 0
    functionLinenumber: 225
    functionLinenumberEnd: 225
    functionName: ~pbf_reader()
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~pbf_reader()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::pbf_reader::swap
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:234,1
    - Dst: protozero::pbf_reader::swap
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:235,1
    - Dst: protozero::pbf_reader::swap
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:236,1
    - Dst: protozero::pbf_reader::swap
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:237,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - ' other'
    argTypes:
    - pbf_reader
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 238
      start: 232
    functionDepth: 1
    functionLinenumber: 232
    functionLinenumberEnd: 238
    functionName: protozero::pbf_reader::swap
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp
    functionUses: 2
    functionsReached:
    - protozero::pbf_reader::swap
    linkageType: ''
    returnType: void
    signature: void swap(pbf_reader& other) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 247
      start: 245
    functionDepth: 0
    functionLinenumber: 245
    functionLinenumberEnd: 247
    functionName: operator bool() const noexcept
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void operator bool() const noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<std::size_t>
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:253,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 254
      start: 252
    functionDepth: 0
    functionLinenumber: 252
    functionLinenumberEnd: 254
    functionName: protozero::pbf_reader::data
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp
    functionUses: 4
    functionsReached:
    - static_cast<std::size_t>
    linkageType: ''
    returnType: data_view
    signature: data_view data() const noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<std::size_t>
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:266,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 267
      start: 265
    functionDepth: 0
    functionLinenumber: 265
    functionLinenumberEnd: 267
    functionName: protozero::pbf_reader::length
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp
    functionUses: 0
    functionsReached:
    - static_cast<std::size_t>
    linkageType: ''
    returnType: std::size_t
    signature: std::size_t length() const noexcept
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: protozero::pbf_reader::get_varint
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:289,1
    - Dst: static_cast<pbf_tag_type>
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:290,1
    - Dst: pbf_wire_type
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:298,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 19
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 310
      start: 284
    functionDepth: 1
    functionLinenumber: 284
    functionLinenumberEnd: 310
    functionName: protozero::pbf_reader::next
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp
    functionUses: 3
    functionsReached:
    - protozero::pbf_reader::get_varint
    - pbf_wire_type
    - static_cast<pbf_tag_type>
    linkageType: ''
    returnType: bool
    signature: bool next()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: protozero::pbf_reader::next
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:341,1
    - Dst: protozero::pbf_reader::skip
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:345,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - next_tag
    argTypes:
    - pbf_tag_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 348
      start: 340
    functionDepth: 3
    functionLinenumber: 340
    functionLinenumberEnd: 348
    functionName: protozero::pbf_reader::next
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp
    functionUses: 4
    functionsReached:
    - protozero::pbf_reader::skip
    - protozero::pbf_reader::next
    linkageType: ''
    returnType: bool
    signature: bool next(pbf_tag_type next_tag)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: protozero::pbf_reader::next
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:379,1
    - Dst: protozero::pbf_reader::skip
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:383,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - next_tag
    - type
    argTypes:
    - pbf_tag_type
    - pbf_wire_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 386
      start: 378
    functionDepth: 3
    functionLinenumber: 378
    functionLinenumberEnd: 386
    functionName: protozero::pbf_reader::next
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp
    functionUses: 5
    functionsReached:
    - protozero::pbf_reader::skip
    - protozero::pbf_reader::next
    linkageType: ''
    returnType: bool
    signature: bool next(pbf_tag_type next_tag, pbf_wire_type type)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 399
      start: 397
    functionDepth: 0
    functionLinenumber: 397
    functionLinenumberEnd: 399
    functionName: protozero::pbf_reader::tag
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp
    functionUses: 15
    functionsReached: []
    linkageType: ''
    returnType: pbf_tag_type
    signature: pbf_tag_type tag() const noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 418
      start: 416
    functionDepth: 0
    functionLinenumber: 416
    functionLinenumberEnd: 418
    functionName: protozero::pbf_reader::wire_type
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: pbf_wire_type
    signature: pbf_wire_type wire_type() const noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::tag_and_type
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:443,1
    - Dst: protozero::pbf_reader::tag
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:443,1
    - Dst: protozero::pbf_reader::wire_type
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:443,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 444
      start: 442
    functionDepth: 1
    functionLinenumber: 442
    functionLinenumberEnd: 444
    functionName: protozero::pbf_reader::tag_and_type
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp
    functionUses: 0
    functionsReached:
    - protozero::pbf_reader::tag
    - protozero::tag_and_type
    - protozero::pbf_reader::wire_type
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t tag_and_type() const noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::pbf_reader::wire_type
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:453,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - type
    argTypes:
    - pbf_wire_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 454
      start: 452
    functionDepth: 1
    functionLinenumber: 452
    functionLinenumberEnd: 454
    functionName: protozero::pbf_reader::has_wire_type
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp
    functionUses: 18
    functionsReached:
    - protozero::pbf_reader::wire_type
    linkageType: ''
    returnType: bool
    signature: bool has_wire_type(pbf_wire_type type) const noexcept
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: protozero_assert
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:463,1
    - Dst: protozero::pbf_reader::tag
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:463,1
    - Dst: protozero::pbf_reader::wire_type
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:464,1
    - Dst: skip_varint
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:466,1
    - Dst: protozero::pbf_reader::skip_bytes
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:469,1
    - Dst: protozero::pbf_reader::skip_bytes
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:472,1
    - Dst: protozero::pbf_reader::get_length
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:472,1
    - Dst: protozero::pbf_reader::skip_bytes
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:475,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 480
      start: 462
    functionDepth: 2
    functionLinenumber: 462
    functionLinenumberEnd: 480
    functionName: protozero::pbf_reader::skip
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp
    functionUses: 4
    functionsReached:
    - protozero::pbf_reader::skip_bytes
    - protozero::pbf_reader::get_length
    - protozero_assert
    - skip_varint
    - protozero::pbf_reader::wire_type
    - protozero::pbf_reader::tag
    linkageType: ''
    returnType: void
    signature: void skip()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero_assert
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:495,1
    - Dst: protozero::pbf_reader::tag
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:495,1
    - Dst: protozero_assert
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:496,1
    - Dst: protozero::pbf_reader::has_wire_type
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:496,1
    - Dst: skip_varint
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:498,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 500
      start: 494
    functionDepth: 2
    functionLinenumber: 494
    functionLinenumberEnd: 500
    functionName: protozero::pbf_reader::get_bool
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp
    functionUses: 0
    functionsReached:
    - protozero::pbf_reader::tag
    - skip_varint
    - protozero_assert
    - protozero::pbf_reader::has_wire_type
    linkageType: ''
    returnType: bool
    signature: bool get_bool()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero_assert
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:510,1
    - Dst: protozero::pbf_reader::has_wire_type
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:510,1
    - Dst: protozero::pbf_reader::get_varint
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:511,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 512
      start: 509
    functionDepth: 2
    functionLinenumber: 509
    functionLinenumberEnd: 512
    functionName: protozero::pbf_reader::get_enum
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp
    functionUses: 0
    functionsReached:
    - protozero_assert
    - protozero::pbf_reader::get_varint
    - protozero::pbf_reader::has_wire_type
    linkageType: ''
    returnType: int32_t
    signature: int32_t get_enum()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero_assert
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:522,1
    - Dst: protozero::pbf_reader::has_wire_type
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:522,1
    - Dst: protozero::pbf_reader::get_varint
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:523,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 524
      start: 521
    functionDepth: 2
    functionLinenumber: 521
    functionLinenumberEnd: 524
    functionName: protozero::pbf_reader::get_int32
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp
    functionUses: 0
    functionsReached:
    - protozero_assert
    - protozero::pbf_reader::get_varint
    - protozero::pbf_reader::has_wire_type
    linkageType: ''
    returnType: int32_t
    signature: int32_t get_int32()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero_assert
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:534,1
    - Dst: protozero::pbf_reader::has_wire_type
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:534,1
    - Dst: protozero::pbf_reader::get_svarint
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:535,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 536
      start: 533
    functionDepth: 2
    functionLinenumber: 533
    functionLinenumberEnd: 536
    functionName: protozero::pbf_reader::get_sint32
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp
    functionUses: 0
    functionsReached:
    - protozero_assert
    - protozero::pbf_reader::get_svarint
    - protozero::pbf_reader::has_wire_type
    linkageType: ''
    returnType: int32_t
    signature: int32_t get_sint32()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero_assert
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:546,1
    - Dst: protozero::pbf_reader::has_wire_type
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:546,1
    - Dst: protozero::pbf_reader::get_varint
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:547,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 548
      start: 545
    functionDepth: 2
    functionLinenumber: 545
    functionLinenumberEnd: 548
    functionName: protozero::pbf_reader::get_uint32
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp
    functionUses: 0
    functionsReached:
    - protozero_assert
    - protozero::pbf_reader::get_varint
    - protozero::pbf_reader::has_wire_type
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t get_uint32()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero_assert
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:558,1
    - Dst: protozero::pbf_reader::has_wire_type
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:558,1
    - Dst: protozero::pbf_reader::get_varint
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:559,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 560
      start: 557
    functionDepth: 2
    functionLinenumber: 557
    functionLinenumberEnd: 560
    functionName: protozero::pbf_reader::get_int64
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp
    functionUses: 0
    functionsReached:
    - protozero_assert
    - protozero::pbf_reader::get_varint
    - protozero::pbf_reader::has_wire_type
    linkageType: ''
    returnType: int64_t
    signature: int64_t get_int64()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero_assert
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:570,1
    - Dst: protozero::pbf_reader::has_wire_type
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:570,1
    - Dst: protozero::pbf_reader::get_svarint
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:571,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 572
      start: 569
    functionDepth: 2
    functionLinenumber: 569
    functionLinenumberEnd: 572
    functionName: protozero::pbf_reader::get_sint64
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp
    functionUses: 0
    functionsReached:
    - protozero_assert
    - protozero::pbf_reader::get_svarint
    - protozero::pbf_reader::has_wire_type
    linkageType: ''
    returnType: int64_t
    signature: int64_t get_sint64()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero_assert
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:582,1
    - Dst: protozero::pbf_reader::has_wire_type
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:582,1
    - Dst: protozero::pbf_reader::get_varint
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:583,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 584
      start: 581
    functionDepth: 2
    functionLinenumber: 581
    functionLinenumberEnd: 584
    functionName: protozero::pbf_reader::get_uint64
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp
    functionUses: 0
    functionsReached:
    - protozero_assert
    - protozero::pbf_reader::get_varint
    - protozero::pbf_reader::has_wire_type
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t get_uint64()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero_assert
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:594,1
    - Dst: protozero::pbf_reader::tag
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:594,1
    - Dst: protozero_assert
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:595,1
    - Dst: protozero::pbf_reader::has_wire_type
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:595,1
    - Dst: protozero::pbf_reader::get_fixed
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:596,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 597
      start: 593
    functionDepth: 2
    functionLinenumber: 593
    functionLinenumberEnd: 597
    functionName: protozero::pbf_reader::get_fixed32
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp
    functionUses: 0
    functionsReached:
    - protozero::pbf_reader::tag
    - protozero::pbf_reader::get_fixed
    - protozero_assert
    - protozero::pbf_reader::has_wire_type
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t get_fixed32()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero_assert
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:607,1
    - Dst: protozero::pbf_reader::tag
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:607,1
    - Dst: protozero_assert
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:608,1
    - Dst: protozero::pbf_reader::has_wire_type
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:608,1
    - Dst: protozero::pbf_reader::get_fixed
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:609,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 610
      start: 606
    functionDepth: 2
    functionLinenumber: 606
    functionLinenumberEnd: 610
    functionName: protozero::pbf_reader::get_sfixed32
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp
    functionUses: 0
    functionsReached:
    - protozero::pbf_reader::tag
    - protozero::pbf_reader::get_fixed
    - protozero_assert
    - protozero::pbf_reader::has_wire_type
    linkageType: ''
    returnType: int32_t
    signature: int32_t get_sfixed32()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero_assert
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:620,1
    - Dst: protozero::pbf_reader::tag
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:620,1
    - Dst: protozero_assert
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:621,1
    - Dst: protozero::pbf_reader::has_wire_type
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:621,1
    - Dst: protozero::pbf_reader::get_fixed
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:622,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 623
      start: 619
    functionDepth: 2
    functionLinenumber: 619
    functionLinenumberEnd: 623
    functionName: protozero::pbf_reader::get_fixed64
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp
    functionUses: 0
    functionsReached:
    - protozero::pbf_reader::tag
    - protozero::pbf_reader::get_fixed
    - protozero_assert
    - protozero::pbf_reader::has_wire_type
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t get_fixed64()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero_assert
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:633,1
    - Dst: protozero::pbf_reader::tag
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:633,1
    - Dst: protozero_assert
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:634,1
    - Dst: protozero::pbf_reader::has_wire_type
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:634,1
    - Dst: protozero::pbf_reader::get_fixed
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:635,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 636
      start: 632
    functionDepth: 2
    functionLinenumber: 632
    functionLinenumberEnd: 636
    functionName: protozero::pbf_reader::get_sfixed64
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp
    functionUses: 1
    functionsReached:
    - protozero::pbf_reader::tag
    - protozero::pbf_reader::get_fixed
    - protozero_assert
    - protozero::pbf_reader::has_wire_type
    linkageType: ''
    returnType: int64_t
    signature: int64_t get_sfixed64()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero_assert
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:646,1
    - Dst: protozero::pbf_reader::tag
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:646,1
    - Dst: protozero_assert
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:647,1
    - Dst: protozero::pbf_reader::has_wire_type
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:647,1
    - Dst: protozero::pbf_reader::get_fixed
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:648,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 649
      start: 645
    functionDepth: 2
    functionLinenumber: 645
    functionLinenumberEnd: 649
    functionName: protozero::pbf_reader::get_float
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp
    functionUses: 0
    functionsReached:
    - protozero::pbf_reader::tag
    - protozero::pbf_reader::get_fixed
    - protozero_assert
    - protozero::pbf_reader::has_wire_type
    linkageType: ''
    returnType: float
    signature: float get_float()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero_assert
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:659,1
    - Dst: protozero::pbf_reader::tag
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:659,1
    - Dst: protozero_assert
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:660,1
    - Dst: protozero::pbf_reader::has_wire_type
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:660,1
    - Dst: protozero::pbf_reader::get_fixed
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:661,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 662
      start: 658
    functionDepth: 2
    functionLinenumber: 658
    functionLinenumberEnd: 662
    functionName: protozero::pbf_reader::get_double
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp
    functionUses: 0
    functionsReached:
    - protozero::pbf_reader::tag
    - protozero::pbf_reader::get_fixed
    - protozero_assert
    - protozero::pbf_reader::has_wire_type
    linkageType: ''
    returnType: double
    signature: double get_double()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero_assert
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:674,1
    - Dst: protozero::pbf_reader::tag
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:674,1
    - Dst: protozero_assert
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:675,1
    - Dst: protozero::pbf_reader::has_wire_type
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:675,1
    - Dst: protozero::pbf_reader::get_len_and_skip
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:676,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 678
      start: 673
    functionDepth: 3
    functionLinenumber: 673
    functionLinenumberEnd: 678
    functionName: protozero::pbf_reader::get_view
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp
    functionUses: 3
    functionsReached:
    - protozero::pbf_reader::tag
    - protozero_assert
    - protozero::pbf_reader::get_len_and_skip
    - protozero::pbf_reader::has_wire_type
    linkageType: ''
    returnType: data_view
    signature: data_view get_view()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero_assert
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:690,1
    - Dst: protozero::pbf_reader::tag
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:690,1
    - Dst: protozero_assert
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:691,1
    - Dst: protozero::pbf_reader::has_wire_type
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:691,1
    - Dst: protozero::pbf_reader::get_len_and_skip
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:692,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 694
      start: 689
    functionDepth: 3
    functionLinenumber: 689
    functionLinenumberEnd: 694
    functionName: protozero::pbf_reader::get_data
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp
    functionUses: 0
    functionsReached:
    - protozero::pbf_reader::tag
    - protozero_assert
    - protozero::pbf_reader::get_len_and_skip
    - protozero::pbf_reader::has_wire_type
    linkageType: ''
    returnType: std::pair<const char*, pbf_length_type>
    signature: std::pair<const char*, pbf_length_type> get_data()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::string
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:705,1
    - Dst: protozero::pbf_reader::get_view
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:705,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 706
      start: 704
    functionDepth: 4
    functionLinenumber: 704
    functionLinenumberEnd: 706
    functionName: protozero::pbf_reader::get_bytes
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp
    functionUses: 0
    functionsReached:
    - protozero::pbf_reader::get_view
    - std::string
    linkageType: ''
    returnType: std::string
    signature: std::string get_bytes()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::string
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:716,1
    - Dst: protozero::pbf_reader::get_view
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:716,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 717
      start: 715
    functionDepth: 4
    functionLinenumber: 715
    functionLinenumberEnd: 717
    functionName: protozero::pbf_reader::get_string
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp
    functionUses: 1
    functionsReached:
    - protozero::pbf_reader::get_view
    - std::string
    linkageType: ''
    returnType: std::string
    signature: std::string get_string()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::pbf_reader::get_view
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:727,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 728
      start: 726
    functionDepth: 4
    functionLinenumber: 726
    functionLinenumberEnd: 728
    functionName: protozero::pbf_reader::get_message
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp
    functionUses: 0
    functionsReached:
    - protozero::pbf_reader::get_view
    linkageType: ''
    returnType: pbf_reader
    signature: pbf_reader get_message()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::pbf_reader::get_packed
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:789,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 790
      start: 788
    functionDepth: 4
    functionLinenumber: 788
    functionLinenumberEnd: 790
    functionName: protozero::pbf_reader::get_packed_bool
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp
    functionUses: 0
    functionsReached:
    - protozero::pbf_reader::get_packed
    linkageType: ''
    returnType: iterator_range<pbf_reader::const_bool_iterator>
    signature: iterator_range<pbf_reader::const_bool_iterator> get_packed_bool()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::pbf_reader::get_packed
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:802,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 803
      start: 801
    functionDepth: 4
    functionLinenumber: 801
    functionLinenumberEnd: 803
    functionName: protozero::pbf_reader::get_packed_enum
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp
    functionUses: 0
    functionsReached:
    - protozero::pbf_reader::get_packed
    linkageType: ''
    returnType: iterator_range<pbf_reader::const_enum_iterator>
    signature: iterator_range<pbf_reader::const_enum_iterator> get_packed_enum()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::pbf_reader::get_packed
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:815,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 816
      start: 814
    functionDepth: 4
    functionLinenumber: 814
    functionLinenumberEnd: 816
    functionName: protozero::pbf_reader::get_packed_int32
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp
    functionUses: 0
    functionsReached:
    - protozero::pbf_reader::get_packed
    linkageType: ''
    returnType: iterator_range<pbf_reader::const_int32_iterator>
    signature: iterator_range<pbf_reader::const_int32_iterator> get_packed_int32()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::pbf_reader::get_packed
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:828,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 829
      start: 827
    functionDepth: 4
    functionLinenumber: 827
    functionLinenumberEnd: 829
    functionName: protozero::pbf_reader::get_packed_sint32
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp
    functionUses: 0
    functionsReached:
    - protozero::pbf_reader::get_packed
    linkageType: ''
    returnType: iterator_range<pbf_reader::const_sint32_iterator>
    signature: iterator_range<pbf_reader::const_sint32_iterator> get_packed_sint32()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::pbf_reader::get_packed
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:841,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 842
      start: 840
    functionDepth: 4
    functionLinenumber: 840
    functionLinenumberEnd: 842
    functionName: protozero::pbf_reader::get_packed_uint32
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp
    functionUses: 0
    functionsReached:
    - protozero::pbf_reader::get_packed
    linkageType: ''
    returnType: iterator_range<pbf_reader::const_uint32_iterator>
    signature: iterator_range<pbf_reader::const_uint32_iterator> get_packed_uint32()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::pbf_reader::get_packed
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:854,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 855
      start: 853
    functionDepth: 4
    functionLinenumber: 853
    functionLinenumberEnd: 855
    functionName: protozero::pbf_reader::get_packed_int64
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp
    functionUses: 0
    functionsReached:
    - protozero::pbf_reader::get_packed
    linkageType: ''
    returnType: iterator_range<pbf_reader::const_int64_iterator>
    signature: iterator_range<pbf_reader::const_int64_iterator> get_packed_int64()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::pbf_reader::get_packed
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:867,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 868
      start: 866
    functionDepth: 4
    functionLinenumber: 866
    functionLinenumberEnd: 868
    functionName: protozero::pbf_reader::get_packed_sint64
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp
    functionUses: 0
    functionsReached:
    - protozero::pbf_reader::get_packed
    linkageType: ''
    returnType: iterator_range<pbf_reader::const_sint64_iterator>
    signature: iterator_range<pbf_reader::const_sint64_iterator> get_packed_sint64()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::pbf_reader::get_packed
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:880,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 881
      start: 879
    functionDepth: 4
    functionLinenumber: 879
    functionLinenumberEnd: 881
    functionName: protozero::pbf_reader::get_packed_uint64
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp
    functionUses: 0
    functionsReached:
    - protozero::pbf_reader::get_packed
    linkageType: ''
    returnType: iterator_range<pbf_reader::const_uint64_iterator>
    signature: iterator_range<pbf_reader::const_uint64_iterator> get_packed_uint64()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::pbf_reader::packed_fixed
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:893,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 894
      start: 892
    functionDepth: 2
    functionLinenumber: 892
    functionLinenumberEnd: 894
    functionName: protozero::pbf_reader::get_packed_fixed32
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp
    functionUses: 0
    functionsReached:
    - protozero::pbf_reader::packed_fixed
    linkageType: ''
    returnType: iterator_range<pbf_reader::const_fixed32_iterator>
    signature: iterator_range<pbf_reader::const_fixed32_iterator> get_packed_fixed32()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::pbf_reader::packed_fixed
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:906,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 907
      start: 905
    functionDepth: 2
    functionLinenumber: 905
    functionLinenumberEnd: 907
    functionName: protozero::pbf_reader::get_packed_sfixed32
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp
    functionUses: 0
    functionsReached:
    - protozero::pbf_reader::packed_fixed
    linkageType: ''
    returnType: iterator_range<pbf_reader::const_sfixed32_iterator>
    signature: iterator_range<pbf_reader::const_sfixed32_iterator> get_packed_sfixed32()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::pbf_reader::packed_fixed
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:919,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 920
      start: 918
    functionDepth: 2
    functionLinenumber: 918
    functionLinenumberEnd: 920
    functionName: protozero::pbf_reader::get_packed_fixed64
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp
    functionUses: 0
    functionsReached:
    - protozero::pbf_reader::packed_fixed
    linkageType: ''
    returnType: iterator_range<pbf_reader::const_fixed64_iterator>
    signature: iterator_range<pbf_reader::const_fixed64_iterator> get_packed_fixed64()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::pbf_reader::packed_fixed
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:932,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 933
      start: 931
    functionDepth: 2
    functionLinenumber: 931
    functionLinenumberEnd: 933
    functionName: protozero::pbf_reader::get_packed_sfixed64
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp
    functionUses: 0
    functionsReached:
    - protozero::pbf_reader::packed_fixed
    linkageType: ''
    returnType: iterator_range<pbf_reader::const_sfixed64_iterator>
    signature: iterator_range<pbf_reader::const_sfixed64_iterator> get_packed_sfixed64()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::pbf_reader::packed_fixed
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:945,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 946
      start: 944
    functionDepth: 2
    functionLinenumber: 944
    functionLinenumberEnd: 946
    functionName: protozero::pbf_reader::get_packed_float
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp
    functionUses: 0
    functionsReached:
    - protozero::pbf_reader::packed_fixed
    linkageType: ''
    returnType: iterator_range<pbf_reader::const_float_iterator>
    signature: iterator_range<pbf_reader::const_float_iterator> get_packed_float()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::pbf_reader::packed_fixed
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:958,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 959
      start: 957
    functionDepth: 2
    functionLinenumber: 957
    functionLinenumberEnd: 959
    functionName: protozero::pbf_reader::get_packed_double
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp
    functionUses: 0
    functionsReached:
    - protozero::pbf_reader::packed_fixed
    linkageType: ''
    returnType: iterator_range<pbf_reader::const_double_iterator>
    signature: iterator_range<pbf_reader::const_double_iterator> get_packed_double()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::swap
      Src: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp:972,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ' lhs'
    - ' rhs'
    argTypes:
    - pbf_reader
    - pbf_reader
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 973
      start: 971
    functionDepth: 0
    functionLinenumber: 971
    functionLinenumberEnd: 973
    functionName: protozero::swap
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp
    functionUses: 8
    functionsReached:
    - protozero::swap
    linkageType: ''
    returnType: void
    signature: void swap(pbf_reader& lhs, pbf_reader& rhs) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 56
    functionDepth: 0
    functionLinenumber: 56
    functionLinenumberEnd: 57
    functionName: protozero_assert
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/config.hpp
    functionUses: 104
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: protozero_assert(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 34
      start: 32
    functionDepth: 0
    functionLinenumber: 32
    functionLinenumberEnd: 34
    functionName: protozero::what
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/exception.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char * what() const noexcept override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 45
    functionName: protozero::what
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/exception.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char * what() const noexcept override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 54
    functionDepth: 0
    functionLinenumber: 54
    functionLinenumberEnd: 56
    functionName: protozero::what
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/exception.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char * what() const noexcept override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 69
    functionDepth: 0
    functionLinenumber: 69
    functionLinenumberEnd: 71
    functionName: protozero::what
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/exception.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char * what() const noexcept override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 82
    functionDepth: 0
    functionLinenumber: 82
    functionLinenumberEnd: 84
    functionName: protozero::what
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/exception.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char * what() const noexcept override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 94
    functionDepth: 0
    functionLinenumber: 94
    functionLinenumberEnd: 96
    functionName: protozero::what
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/exception.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char * what() const noexcept override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 34
      start: 32
    functionDepth: 0
    functionLinenumber: 32
    functionLinenumberEnd: 34
    functionName: protozero::what
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/exception.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char * what() const noexcept override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 45
    functionName: protozero::what
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/exception.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char * what() const noexcept override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 54
    functionDepth: 0
    functionLinenumber: 54
    functionLinenumberEnd: 56
    functionName: protozero::what
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/exception.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char * what() const noexcept override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 69
    functionDepth: 0
    functionLinenumber: 69
    functionLinenumberEnd: 71
    functionName: protozero::what
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/exception.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char * what() const noexcept override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 82
    functionDepth: 0
    functionLinenumber: 82
    functionLinenumberEnd: 84
    functionName: protozero::what
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/exception.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char * what() const noexcept override
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 94
    functionDepth: 0
    functionLinenumber: 94
    functionLinenumberEnd: 96
    functionName: protozero::what
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/exception.hpp
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char * what() const noexcept override
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::forward<Args>
      Src: /src/pdns/ext/protozero/include/protozero/pbf_message.hpp:81,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 80
    functionDepth: 0
    functionLinenumber: 80
    functionLinenumberEnd: 82
    functionName: protozero::pbf_message::pbf_message
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/pbf_message.hpp
    functionUses: 0
    functionsReached:
    - std::forward<Args>
    linkageType: ''
    returnType: void
    signature: void pbf_message(Args&&... args) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::pbf_reader::next
      Src: /src/pdns/ext/protozero/include/protozero/pbf_message.hpp:100,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 99
    functionDepth: 2
    functionLinenumber: 99
    functionLinenumberEnd: 101
    functionName: protozero::pbf_message::next
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/pbf_message.hpp
    functionUses: 5
    functionsReached:
    - protozero::pbf_reader::next
    linkageType: ''
    returnType: bool
    signature: bool next()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::pbf_reader::next
      Src: /src/pdns/ext/protozero/include/protozero/pbf_message.hpp:132,1
    - Dst: pbf_tag_type
      Src: /src/pdns/ext/protozero/include/protozero/pbf_message.hpp:132,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - next_tag
    argTypes:
    - T
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 133
      start: 131
    functionDepth: 2
    functionLinenumber: 131
    functionLinenumberEnd: 133
    functionName: protozero::pbf_message::next
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/pbf_message.hpp
    functionUses: 5
    functionsReached:
    - pbf_tag_type
    - protozero::pbf_reader::next
    linkageType: ''
    returnType: bool
    signature: bool next(T next_tag)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::pbf_reader::next
      Src: /src/pdns/ext/protozero/include/protozero/pbf_message.hpp:164,1
    - Dst: pbf_tag_type
      Src: /src/pdns/ext/protozero/include/protozero/pbf_message.hpp:164,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - next_tag
    - type
    argTypes:
    - T
    - pbf_wire_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 165
      start: 163
    functionDepth: 2
    functionLinenumber: 163
    functionLinenumberEnd: 165
    functionName: protozero::pbf_message::next
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/pbf_message.hpp
    functionUses: 5
    functionsReached:
    - pbf_tag_type
    - protozero::pbf_reader::next
    linkageType: ''
    returnType: bool
    signature: bool next(T next_tag, pbf_wire_type type)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: T
      Src: /src/pdns/ext/protozero/include/protozero/pbf_message.hpp:177,1
    - Dst: protozero::pbf_reader::tag
      Src: /src/pdns/ext/protozero/include/protozero/pbf_message.hpp:177,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 178
      start: 176
    functionDepth: 1
    functionLinenumber: 176
    functionLinenumberEnd: 178
    functionName: protozero::pbf_message::tag
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/pbf_message.hpp
    functionUses: 4
    functionsReached:
    - protozero::pbf_reader::tag
    - T
    linkageType: ''
    returnType: T
    signature: T tag() const noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: std::forward<Args>
      Src: /src/pdns/ext/protozero/include/protozero/pbf_message.hpp:81,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 80
    functionDepth: 0
    functionLinenumber: 80
    functionLinenumberEnd: 82
    functionName: protozero::pbf_message::pbf_message
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/pbf_message.hpp
    functionUses: 0
    functionsReached:
    - std::forward<Args>
    linkageType: ''
    returnType: void
    signature: void pbf_message(Args&&... args) noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::pbf_reader::next
      Src: /src/pdns/ext/protozero/include/protozero/pbf_message.hpp:100,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 99
    functionDepth: 2
    functionLinenumber: 99
    functionLinenumberEnd: 101
    functionName: protozero::pbf_message::next
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/pbf_message.hpp
    functionUses: 5
    functionsReached:
    - protozero::pbf_reader::next
    linkageType: ''
    returnType: bool
    signature: bool next()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::pbf_reader::next
      Src: /src/pdns/ext/protozero/include/protozero/pbf_message.hpp:132,1
    - Dst: pbf_tag_type
      Src: /src/pdns/ext/protozero/include/protozero/pbf_message.hpp:132,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - next_tag
    argTypes:
    - T
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 133
      start: 131
    functionDepth: 2
    functionLinenumber: 131
    functionLinenumberEnd: 133
    functionName: protozero::pbf_message::next
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/pbf_message.hpp
    functionUses: 5
    functionsReached:
    - pbf_tag_type
    - protozero::pbf_reader::next
    linkageType: ''
    returnType: bool
    signature: bool next(T next_tag)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: protozero::pbf_reader::next
      Src: /src/pdns/ext/protozero/include/protozero/pbf_message.hpp:164,1
    - Dst: pbf_tag_type
      Src: /src/pdns/ext/protozero/include/protozero/pbf_message.hpp:164,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - next_tag
    - type
    argTypes:
    - T
    - pbf_wire_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 165
      start: 163
    functionDepth: 2
    functionLinenumber: 163
    functionLinenumberEnd: 165
    functionName: protozero::pbf_message::next
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/pbf_message.hpp
    functionUses: 5
    functionsReached:
    - pbf_tag_type
    - protozero::pbf_reader::next
    linkageType: ''
    returnType: bool
    signature: bool next(T next_tag, pbf_wire_type type)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: T
      Src: /src/pdns/ext/protozero/include/protozero/pbf_message.hpp:177,1
    - Dst: protozero::pbf_reader::tag
      Src: /src/pdns/ext/protozero/include/protozero/pbf_message.hpp:177,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 178
      start: 176
    functionDepth: 1
    functionLinenumber: 176
    functionLinenumberEnd: 178
    functionName: protozero::pbf_message::tag
    functionSourceFile: /src/pdns/ext/protozero/include/protozero/pbf_message.hpp
    functionUses: 4
    functionsReached:
    - protozero::pbf_reader::tag
    - T
    linkageType: ''
    returnType: T
    signature: T tag() const noexcept
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - X
    - ','
    - R
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5
      start: 4
    functionDepth: 0
    functionLinenumber: 4
    functionLinenumberEnd: 5
    functionName: ROTL
    functionSourceFile: /src/pdns/ext/ipcrypt/ipcrypt.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ROTL(X, R)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ROTL
      Src: /src/pdns/ext/ipcrypt/ipcrypt.c:11,1
    - Dst: ROTL
      Src: /src/pdns/ext/ipcrypt/ipcrypt.c:12,1
    - Dst: ROTL
      Src: /src/pdns/ext/ipcrypt/ipcrypt.c:15,1
    - Dst: ROTL
      Src: /src/pdns/ext/ipcrypt/ipcrypt.c:18,1
    - Dst: ROTL
      Src: /src/pdns/ext/ipcrypt/ipcrypt.c:19,1
    - Dst: ROTL
      Src: /src/pdns/ext/ipcrypt/ipcrypt.c:22,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 15
    argCount: 1
    argNames:
    - state
    argTypes:
    - unsigned char[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 23
      start: 6
    functionDepth: 0
    functionLinenumber: 6
    functionLinenumberEnd: 23
    functionName: arx_fwd
    functionSourceFile: /src/pdns/ext/ipcrypt/ipcrypt.c
    functionUses: 1
    functionsReached:
    - ROTL
    linkageType: ''
    returnType: void
    signature: void arx_fwd(unsigned char state[4])
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ROTL
      Src: /src/pdns/ext/ipcrypt/ipcrypt.c:28,1
    - Dst: ROTL
      Src: /src/pdns/ext/ipcrypt/ipcrypt.c:31,1
    - Dst: ROTL
      Src: /src/pdns/ext/ipcrypt/ipcrypt.c:32,1
    - Dst: ROTL
      Src: /src/pdns/ext/ipcrypt/ipcrypt.c:35,1
    - Dst: ROTL
      Src: /src/pdns/ext/ipcrypt/ipcrypt.c:38,1
    - Dst: ROTL
      Src: /src/pdns/ext/ipcrypt/ipcrypt.c:39,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 15
    argCount: 1
    argNames:
    - state
    argTypes:
    - unsigned char[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 25
    functionDepth: 0
    functionLinenumber: 25
    functionLinenumberEnd: 42
    functionName: arx_bwd
    functionSourceFile: /src/pdns/ext/ipcrypt/ipcrypt.c
    functionUses: 1
    functionsReached:
    - ROTL
    linkageType: ''
    returnType: void
    signature: void arx_bwd(unsigned char state[4])
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - out
    - x
    - y
    argTypes:
    - unsigned char*
    - unsigned char*
    - unsigned char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 44
    functionDepth: 0
    functionLinenumber: 44
    functionLinenumberEnd: 51
    functionName: xor4
    functionSourceFile: /src/pdns/ext/ipcrypt/ipcrypt.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void xor4(unsigned char *out, const unsigned char *x, const unsigned
      char *y)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: xor4
      Src: /src/pdns/ext/ipcrypt/ipcrypt.c:60,1
    - Dst: arx_fwd
      Src: /src/pdns/ext/ipcrypt/ipcrypt.c:61,1
    - Dst: xor4
      Src: /src/pdns/ext/ipcrypt/ipcrypt.c:62,1
    - Dst: arx_fwd
      Src: /src/pdns/ext/ipcrypt/ipcrypt.c:63,1
    - Dst: xor4
      Src: /src/pdns/ext/ipcrypt/ipcrypt.c:64,1
    - Dst: arx_fwd
      Src: /src/pdns/ext/ipcrypt/ipcrypt.c:65,1
    - Dst: xor4
      Src: /src/pdns/ext/ipcrypt/ipcrypt.c:66,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 3
    argNames:
    - out
    - in
    - key
    argTypes:
    - unsigned char[]
    - unsigned char[]
    - unsigned char[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 53
    functionDepth: 0
    functionLinenumber: 53
    functionLinenumberEnd: 69
    functionName: ipcrypt_encrypt
    functionSourceFile: /src/pdns/ext/ipcrypt/ipcrypt.c
    functionUses: 2
    functionsReached:
    - xor4
    - arx_fwd
    linkageType: ''
    returnType: int
    signature: "int ipcrypt_encrypt(unsigned char out[IPCRYPT_BYTES],\n                const
      unsigned char in[IPCRYPT_BYTES],\n                const unsigned char key[IPCRYPT_KEYBYTES])"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: xor4
      Src: /src/pdns/ext/ipcrypt/ipcrypt.c:78,1
    - Dst: arx_bwd
      Src: /src/pdns/ext/ipcrypt/ipcrypt.c:79,1
    - Dst: xor4
      Src: /src/pdns/ext/ipcrypt/ipcrypt.c:80,1
    - Dst: arx_bwd
      Src: /src/pdns/ext/ipcrypt/ipcrypt.c:81,1
    - Dst: xor4
      Src: /src/pdns/ext/ipcrypt/ipcrypt.c:82,1
    - Dst: arx_bwd
      Src: /src/pdns/ext/ipcrypt/ipcrypt.c:83,1
    - Dst: xor4
      Src: /src/pdns/ext/ipcrypt/ipcrypt.c:84,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 3
    argNames:
    - out
    - in
    - key
    argTypes:
    - unsigned char[]
    - unsigned char[]
    - unsigned char[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 71
    functionDepth: 0
    functionLinenumber: 71
    functionLinenumberEnd: 87
    functionName: ipcrypt_decrypt
    functionSourceFile: /src/pdns/ext/ipcrypt/ipcrypt.c
    functionUses: 2
    functionsReached:
    - xor4
    - arx_bwd
    linkageType: ''
    returnType: int
    signature: "int ipcrypt_decrypt(unsigned char out[IPCRYPT_BYTES],\n                const
      unsigned char in[IPCRYPT_BYTES],\n                const unsigned char key[IPCRYPT_KEYBYTES])"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - c
    - ctx
    argTypes:
    - struct cursor*
    - struct xdp_md*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 141
      start: 137
    functionDepth: 0
    functionLinenumber: 137
    functionLinenumberEnd: 141
    functionName: cursor_init
    functionSourceFile: /src/pdns/contrib/xdp.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void cursor_init(struct cursor *c, struct xdp_md *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - STRUCT
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 156
      start: 147
    functionDepth: 0
    functionLinenumber: 147
    functionLinenumberEnd: 156
    functionName: PARSE_FUNC_DECLARATION
    functionSourceFile: /src/pdns/contrib/xdp.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PARSE_FUNC_DECLARATION(STRUCT)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: parse_ethhdr
      Src: /src/pdns/contrib/xdp.h:172,1
    - Dst: bpf_htons
      Src: /src/pdns/contrib/xdp.h:176,1
    - Dst: bpf_htons
      Src: /src/pdns/contrib/xdp.h:177,1
    - Dst: parse_vlanhdr
      Src: /src/pdns/contrib/xdp.h:180,1
    - Dst: bpf_htons
      Src: /src/pdns/contrib/xdp.h:184,1
    - Dst: bpf_htons
      Src: /src/pdns/contrib/xdp.h:185,1
    - Dst: parse_vlanhdr
      Src: /src/pdns/contrib/xdp.h:186,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 15
    argCount: 2
    argNames:
    - c
    - eth_proto
    argTypes:
    - struct cursor*
    - uint16_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 193
      start: 168
    functionDepth: 0
    functionLinenumber: 168
    functionLinenumberEnd: 193
    functionName: parse_eth
    functionSourceFile: /src/pdns/contrib/xdp.h
    functionUses: 0
    functionsReached:
    - bpf_htons
    - parse_ethhdr
    - parse_vlanhdr
    linkageType: ''
    returnType: struct ethhdr
    signature: struct ethhdr *parse_eth(struct cursor *c, uint16_t *eth_proto)
Fuzzer filename: /src/pdns/pdns/fuzz_zoneparsertng.cc
Fuzzing method: LLVMFuzzerTestOneInput
included-header-files:
- boost/archive/binary_oarchive.hpp
- fstream
- editline/readline.h
- lazy_allocator.hh
- glob.h
- ipcipher.hh
- histogram.hh
- smmintrin.h
- rec-eventtrace.hh
- types.hpp
- secpoll-auth.hh
- secpoll.hh
- mtasker.hh
- uapi/linux/udp.h
- netinet/ip6.h
- netinet/if_ether.h
- sys/ioctl.h
- boost/iostreams/device/file.hpp
- iostream
- boost/iostreams/stream.hpp
- linux/if_link.h
- anadns.hh
- protozero/types.hpp
- boost/multi_index/key_extractors.hpp
- lua-recursor4-ffi.hh
- gssapi/gssapi_krb5.h
- chrono
- lua-base4.hh
- sys/socket.h
- net/if_arp.h
- webserver.hh
- sys/poll.h
- ext/arc4random/arc4random.hh
- lmdb-typed.hh
- sys/devpoll.h
- linux/udp.h
- sortlist.hh
- histog.hh
- buffer_string.hpp
- fcntl.h
- resolve-context.hh
- proxy-protocol.hh
- dnsdist-internal-queries.hh
- uuid-utils.hh
- pdns/uuid-utils.hh
- godbcbackend.hh
- boost/iostreams/stream_buffer.hpp
- gmysqlbackend.hh
- coprocess.hh
- dnsdist-session-cache.hh
- sql.h
- curl/curlver.h
- pdns/dnsseckeeper.hh
- boost/functional/hash.hpp
- pdns/dnsbackend.hh
- exceptions.hh
- dnsdist-udp.hh
- utility
- sys/wait.h
- systemd/sd-daemon.h
- dnsdist-query-count.hh
- pdns/auth-querycache.hh
- dnsproxy.hh
- dnsdist-lua-ffi.hh
- fstrm.h
- sys/mman.h
- regex.h
- dnsdist.hh
- dnsdist-lua.hh
- exception.hpp
- dnsdist-proxy-protocol.hh
- dnsdist-discovery.hh
- machine/endian.h
- lmdb.h
- net-snmp/agent/net-snmp-agent-includes.h
- dnsdist-backend.hh
- sys/resource.h
- aggressive_nsec.hh
- cstdint
- namespaces.hh
- protozero.hh
- pdns/auth-packetcache.hh
- cerrno
- boost/iostreams/device/back_inserter.hpp
- sodbc.hh
- sys/random.h
- ../../namespaces.hh
- ixfr.hh
- ws-auth.hh
- condition_variable
- pdns/lock.hh
- netinet/in.h
- ldap.h
- sys/event.h
- boost/array.hpp
- bpf/bpf.h
- dnsdist-backoff.hh
- semaphore.h
- thread
- cachecleaner.hh
- lua2backend.hh
- boost/multi_index/sequenced_index.hpp
- test-remotebackend-keys.hh
- utils.hh
- openssl/types.h
- dnsbackend.hh
- cassert
- dnsdist-prometheus.hh
- linux/if_xdp.h
- sys/capability.h
- pdns/dns_random.hh
- dnsdist-downstream-connection.hh
- ednscookies.hh
- cinttypes
- openssl/rand.h
- dnsdist-lua-response-actions-generated-body.hh
- validate-recursor.hh
- ../../dnsname.hh
- ostream
- pdns/ssqlite3.hh
- auth-catalogzone.hh
- boost/logic/tribool.hpp
- vector
- base64.hh
- ext/luawrapper/include/LuaContext.hpp
- cxxsettings-private.hh
- dnsdist-actions-factory-generated-body.hh
- fstrm_logger.hh
- openssl/sha.h
- boost/test/tools/old/interface.hpp
- dlfcn.h
- distributor.hh
- base32.hh
- netinet/tcp.h
- variant
- openssl/pkcs12.h
- boost/multi_index/ordered_index.hpp
- fstrm/tcp_writer.h
- openssl/kdf.h
- iomanip
- pdns/misc.hh
- queue
- dnsdist-opentelemetry.hh
- dnsdist-xsk.hh
- apidocfiles.h
- ldaputils.hh
- ../modules/geoipbackend/geoipinterface.hh
- dnsdist-protocols.hh
- pdns/zoneparser-tng.hh
- array
- doq.hh
- htmlfiles.h
- ratelimitedlog.hh
- dnsdist-rust-bridge-actions-generated.hh
- geoipbackend.hh
- pipebackend.hh
- dnsdist-mac-address.hh
- dnsdist-lbpolicies.hh
- boost/random/mersenne_twister.hpp
- p11-kit/p11-kit.h
- dnswriter.hh
- pdns/qtype.hh
- validate.hh
- sys/un.h
- svc-records.hh
- pdns/logger.hh
- noinitvector.hh
- catch2/benchmark/catch_chronometer.hpp
- openssl/obj_mac.h
- ixfrdist-stats.hh
- boost/multi_index/hashed_index.hpp
- ixfrutils.hh
- boost/algorithm/string/join.hpp
- bpf/libbpf.h
- rec-snmp.hh
- boost/container/static_vector.hpp
- libgen.h
- openssl/core.h
- typeinfo
- tcpreceiver.hh
- boost/algorithm/string.hpp
- ifaddrs.h
- lber.h
- atomic
- dnsdist-nghttp2.hh
- sanitizer/lsan_interface.h
- execinfo.h
- mplexer.hh
- includes.h
- sanitizer/tsan_interface.h
- csignal
- openssl/param_build.h
- dnsdist-ipcrypt2.hh
- xdp/xsk.h
- new
- pdns/sha.hh
- linux/ip.h
- channel.hh
- protozero-trace.hh
- misc/exception.hpp
- pbf_writer.hpp
- doh3.hh
- dnsdist-lua-inspection-ffi.h
- ws-api.hh
- openssl/ecdsa.h
- rust/misc.rs.h
- responsestats.hh
- sys/uio.h
- catch2/benchmark/catch_benchmark.hpp
- pdns/dynlistener.hh
- linux/rtnetlink.h
- unordered_set
- boost/serialization/string.hpp
- dnsparser.hh
- pdns/pdnsexception.hh
- net-snmp/types.h
- gpgsqlbackend.hh
- boost/uuid/uuid_io.hpp
- dnsdist-snmp.hh
- test-syncres_cc.hh
- deque
- catch2/catch_config.hpp
- boost/format/format_fwd.hpp
- pdns/backends/gsql/gsqlbackend.hh
- dnsdist-lua-ffi-interface.h
- sys/epoll.h
- ipcrypt.h
- ext/json11/json11.hpp
- dnsdist-dynblocks.hh
- xsk.hh
- dnsdist-web.hh
- termios.h
- sys/time.h
- gsqlite3backend.hh
- wmmintrin.h
- dnssecinfra.hh
- backends/gsql/ssql.hh
- tcpiohandler.hh
- threadname.hh
- rec-rust-lib/rust/web.rs.h
- valgrind/valgrind.h
- test-dnsdistnghttp2_common.hh
- dnsdist-edns.hh
- protozero/pbf_message.hpp
- dirent.h
- delaypipe.hh
- protozero/pbf_reader.hpp
- openssl/opensslv.h
- poll.h
- openssl/hmac.h
- limits.h
- boost/archive/binary_iarchive.hpp
- misc.hh
- burtle.hh
- cstring
- boost/dynamic_bitset.hpp
- stat_t.hh
- stdio.h
- ws-recursor.hh
- sys/eventfd.h
- sys/ethernet.h
- dnsdist-rust-bridge-selectors-generated.hh
- openssl/bio.h
- pdns/dnsname.hh
- pdns/iputils.hh
- lua-recursor4.hh
- net-snmp/utilities.h
- strings.h
- yahttp.hpp
- maxminddb.h
- sanitizer/common_interface_defs.h
- boost/assign/std/map.hpp
- doq-common.hh
- sys/syscall.h
- boost/multi_index/member.hpp
- pdns/dns.hh
- zmq.h
- net/sock.h
- sys/types.h
- tsigutils.hh
- rec-nsspeeds.hh
- rec-lua-conf.hh
- pdns/backends/gsql/ssql.hh
- lmdbbackend.hh
- dnsdist-logging.hh
- secpoll-recursor.hh
- bindparserclasses.hh
- boost/serialization/vector.hpp
- rcpgenerator.hh
- root-addresses.hh
- lua.hpp
- dnsdist-doh-common.hh
- ldapauthenticator_p.hh
- libkern/OSByteOrder.h
- boost/algorithm/string/erase.hpp
- zoneparser-tng.hh
- openssl/aes.h
- resolver.hh
- functional
- boost/format.hpp
- coverage.hh
- boost/integer/integer_log2.hpp
- nameserver.hh
- net/ethernet.h
- remote_logger_pool.hh
- dnsdist-dnsparser.hh
- ldapbackend.hh
- reczones-helpers.hh
- boost/program_options.hpp
- ednssubnet.hh
- dnsname.hh
- string_view
- pdns/dnspacket.hh
- net/if_ether.h
- set
- lmdb-safe.hh
- rec-oids-gen.h
- boost/mpl/transform.hpp
- tuple
- boost/algorithm/string/compare.hpp
- algorithm
- rpzloader.hh
- endian.h
- fstrm/unix_writer.h
- sqlite3.h
- boost/version.hpp
- ednsextendederror.hh
- boost/test/unit_test.hpp
- dnsdist-actions-factory-generated.hh
- quiche.h
- openssl/evp.h
- dnsdist-lua-network.hh
- stdexcept
- sys/stat.h
- dynhandler.hh
- dnsdist-rule-chains.hh
- arm_neon.h
- rec-rust-lib/rust/misc.rs.h
- dnsdist-console-completion.hh
- boost/algorithm/string/replace.hpp
- dnsdist-lua-hooks.hh
- syncres.hh
- circular_buffer.hh
- connection-management.hh
- boost/container/string.hpp
- buffer_tmpl.hpp
- boost/context/detail/fcontext.hpp
- gss_context.hh
- statnode.hh
- locale
- negcache.hh
- dnsdist-selectors-factory-generated.hh
- rec-taskqueue.hh
- pdns/lua-auth4.hh
- gettime.hh
- yahttp/router.hpp
- digests.hh
- sys/param.h
- gsqlbackend.hh
- resolv.h
- cstddef
- stdlib.h
- opensslsigners.hh
- boost/accumulators/accumulators.hpp
- boost/variant/variant.hpp
- snmp-agent.hh
- bits/types/struct_timespec.h
- spgsql.hh
- pbf_reader.hpp
- ednspadding.hh
- unordered_map
- openssl/pem.h
- boost/uuid/uuid_serialize.hpp
- yaml-cpp/yaml.h
- dnsrecords.hh
- linux/tcp.h
- boost/assign/std/vector.hpp
- dns_random.hh
- pdns/cdb.hh
- chacha_private.h
- rec-cookiestore.hh
- stack
- protozero/byteswap.hpp
- varint.hpp
- openssl/core_names.h
- net/if.h
- pdns/bindparserclasses.hh
- sys/select.h
- dnsdist-idstate.hh
- root-dnssec.hh
- dnsdist-rules.hh
- rec-web-stubs.hh
- cookie.hpp
- syslog.h
- uapi/linux/ip.h
- arguments.hh
- tcounters.hh
- openssl/ssl.h
- dnsdist-concurrent-connections.hh
- json11.hpp
- list
- openssl/bn.h
- random
- dnsdist-nghttp2-in.hh
- boost/uuid/uuid.hpp
- GeoIP.h
- basic_pbf_builder.hpp
- readline/readline.h
- logr.hh
- ../../logging.hh
- pdns/statbag.hh
- dnsdist-rules-factory.hh
- ssql.hh
- initializer_list
- ipcrypt2.h
- signal.h
- net-snmp/config_api.h
- protozero/pbf_writer.hpp
- boost/filesystem.hpp
- boost/multi_index/mem_fun.hpp
- openssl/rsa.h
- boost/uuid/uuid_generators.hpp
- rec-system-resolve.hh
- boost/function.hpp
- softaes/untrinsics.h
- arc4random.h
- pdns/auth-caches.hh
- logging.hh
- bind-dnssec.schema.sqlite3.sql.h
- boost/mpl/distance.hpp
- openssl/provider.h
- rec-rust-lib/rust/src/bridge.hh
- inflighter.cc
- dnsdist-svc.hh
- config.hpp
- data_view.hpp
- cxxsettings.hh
- dnsdist-crypto.hh
- ../../pdns/gettime.hh
- openssl/conf.h
- dnsdist-kvs.hh
- pthread.h
- boost/uuid/string_generator.hpp
- boost/multi_index_container.hpp
- ixfrdist-web.hh
- boost/multi_index/tag.hpp
- libssl.hh
- protozero-helpers.hh
- system_error
- iterators.hpp
- rec-zonetocache.hh
- boost/algorithm/string/predicate.hpp
- sys/signal.h
- pdns/namespaces.hh
- axfr-retriever.hh
- boost/tuple/tuple.hpp
- pdns/json.hh
- rec-snmp-gen.h
- rec-metrics-gen.h
- malloctrace.hh
- dnsdist-tcp-downstream.hh
- communicator.hh
- fstrm/iothr.h
- dnsdist-response-actions-factory-generated.hh
- pdns/sstuff.hh
- linux/ipv6.h
- dnsdist-carbon.hh
- dnsdist-random.hh
- boost/assign/list_inserter.hpp
- basic_pbf_writer.hpp
- boost/any.hpp
- ws2tcpip.h
- sqlext.h
- dnsdist-rust-bridge-actions-generated-body.hh
- sstream
- ext/probds/murmur3.h
- dnsdist-configuration-yaml-internal.hh
- boost/context/fcontext.hpp
- comment.hh
- openssl/ocsp.h
- boost/type_traits.hpp
- dnsdist-console.hh
- boost/utility.hpp
- limits
- cstdlib
- type_traits
- openssl/ec.h
- ext/lmdb-safe/lmdb-typed.hh
- openssl/x509v3.h
- pdns/auth-zonecache.hh
- re2/re2.h
- linux/types.h
- boost/accumulators/statistics.hpp
- catch2/catch_test_macros.hpp
- rec-protozero.hh
- net-snmp/net-snmp-config.h
- linux/if_ether.h
- mtasker_context.hh
- remote_logger.hh
- rec-responsestats.hh
- mutex
- boost/range/detail/common.hpp
- boost/variant.hpp
- stable-bloom.hh
- rec-main.hh
- sstuff.hh
- rec-tcpout.hh
- bpf-filter.hh
- openssl/err.h
- statbag.hh
- log.h
- stdint.h
- nghttp2/nghttp2.h
- string.h
- geoipinterface.hh
- yahttp/yahttp.hpp
- taskqueue.hh
- query-local-address.hh
- dnspacket.hh
- boost/circular_buffer.hpp
- dnsdist-ecs.hh
- port.h
- tmmintrin.h
- errno.h
- router.hpp
- ctime
- GeoIPCity.h
- dnsdist-lua-actions-generated-body.hh
- lock.hh
- exception
- dns.hh
- dnsdist-rings.hh
- pwd.h
- dnsdist-server-pool.hh
- cdb.h
- climits
- lua-auth4.hh
- dnsdist-resolver.hh
- arpa/inet.h
- curl/curl.h
- dnsdist-systemd.hh
- dnsdist-self-answers.hh
- arm64_neon.h
- smysql.hh
- ../../misc.hh
- openssl/params.h
- bridge.hh
- pdnsexception.hh
- dnsdist-configuration-yaml.hh
- future
- dnspcap.hh
- systemd/sd-journal.h
- boost/lockfree/spsc_queue.hpp
- dnsdist-response-actions-factory-generated-body.hh
- shuffle.hh
- unistd.h
- boost/accumulators/statistics/mean.hpp
- net-snmp/library/large_fd_set.h
- dnsdist-actions.hh
- capabilities.hh
- dnsdist-frontend.hh
- dnsdist-actions-factory.hh
- pdns/logr.hh
- netinet/ip.h
- getopt.h
- signingpipe.hh
- rec-xfr.hh
- auth-caches.hh
- winsock2.h
- remotebackend.hh
- zonemd.hh
- BOOST_AUTO_TEST_SUITE(test_arguments_cc)
- utility.hpp
- dnsdist-lua-selectors-generated-body.hh
- regex
- dnsdist-dynbpf.hh
- boost/accumulators/statistics/median.hpp
- boost/test/unit_test_suite.hpp
- pdns/base32.hh
- time.h
- dnscrypt.hh
- map
- stddef.h
- gssapi/gssapi.h
- boost/algorithm/string/trim.hpp
- pdns/dnsrecords.hh
- ext/ipcrypt/ipcrypt.h
- ssqlite3.hh
- version.hh
- memory
- readline/history.h
- arpa/nameser.h
- boost/scoped_ptr.hpp
- rec_metrics.hh
- packetcache.hh
- string
- openssl/engine.h
- tcpiohandler-mplexer.hh
- nod.hh
- sys/timerfd.h
- uapi/linux/ipv6.h
- reqresp.hpp
- iputils.hh
- credentials.hh
- minicurl.hh
- murmur3.h
- ext/libbpf/libbpf.h
- url.hpp
- sha.hh
- dnsdist-tcp-upstream.hh
- json.hh
- dolog.hh
- boost/algorithm/string/classification.hpp
- recpacketcache.hh
- dnsdist-cache.hh
- bitset
- boost/multi_index/identity.hpp
- dnsdist-async.hh
- ext/lmdb-safe/lmdb-safe.hh
- pthread_np.h
- boost/tokenizer.hpp
- pdns/dnssecinfra.hh
- boost/scoped_array.hpp
- auth-querycache.hh
- rust/lib.rs.h
- rec-tcounters.hh
- delaypipe.cc
- powerldap.hh
- views.hh
- numeric
- bindbackend2.hh
- sholder.hh
- recursor_cache.hh
- include/ipcrypt2.h
- rec_channel.hh
- lwres.hh
- dnsdist-healthchecks.hh
- dnssec.hh
- dnsdist-metrics.hh
- pdns/logging.hh
- auth-packetcache.hh
- intrin.h
- check-zone.hh
- dnsdist-configuration.hh
- dnsseckeeper.hh
- openssl/crypto.h
- qtype.hh
- yahttp-config.h
- sanitizer.hh
- dnsdist-tcp.hh
- netinet/in_systm.h
- net-snmp/definitions.h
- utility.hh
- ueberbackend.hh
- boost/assign/list_of.hpp
- sys/port_impl.h
- test-common.hh
- boost/serialization/utility.hpp
- logger.hh
- dnsdist-selectors-factory-generated-body.hh
- dnsdist-protobuf.hh
- boost/optional.hpp
- stubresolver.hh
- pubsuffix.hh
- pkcs11signers.hh
- linux/bpf.h
- cstdio
- protozero/pbf_builder.hpp
- cmath
- dnsdist-secpoll.hh
- shared_mutex
- dynlistener.hh
- math.h
- sodium.h
- sched.h
- inttypes.h
- sys/prctl.h
- dynmessenger.hh
- auth-main.hh
- cctype
- dnsdist-rust-bridge-selectors-generated-body.hh
- iterator
- rec-rust-lib/cxxsettings.hh
- rust/cxx.h
- netinet/udp.h
- ednsoptions.hh
- packethandler.hh
- tinydnsbackend.hh
- sys/endian.h
- netdb.h
- libpq-fe.h
- dnstap.hh
- tsigverifier.hh
- filesystem
- filterpo.hh
- pdns/arguments.hh
- lua2api2.hh
- optional
- pdns/utility.hh
- auth-zonecache.hh
- ldapauthenticator.hh
- cdb.hh
- mysql.h
- trusted-notification-proxy.hh
- grp.h
- krb5.h
- config.h
- xdp/libxdp.h
report: name
sources:
- function_names:
  - main
  source_file: /src/pdns/meson/pkcs11/p11_kit_module_for_name.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - main
  source_file: /src/pdns/meson/cxx-fs/cxx-fs.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - main
  source_file: /src/pdns/meson/sanitizers/address-sanitizer-fiber-switching/sanitizer_finish_switch_fiber_3ptrs.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - main
  source_file: /src/pdns/meson/sanitizers/address-sanitizer-fiber-switching/sanitizer_finish_switch_fiber_1ptr.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - main
  source_file: /src/pdns/meson/strerror/strerror_r.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - main
  source_file: /src/pdns/meson/atomics/atomic_add_fetch.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - main
  source_file: /src/pdns/meson/pthread-setname/pthread_setname_np_1arg.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - main
  source_file: /src/pdns/meson/pthread-setname/pthread_set_name_np_void_2args.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - main
  source_file: /src/pdns/meson/pthread-setname/pthread_setname_np_2args.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - main
  source_file: /src/pdns/meson/pthread-setname/pthread_set_name_np_2args.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - main
  source_file: /src/pdns/meson/pthread-setname/pthread_setname_np_3args.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - main
  source_file: /src/pdns/meson/timet-sign/timet_sign.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - main
  source_file: /src/pdns/meson/libcrypto/bn_new.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/pdns/pdns/capabilities.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/pdns/pdns/ws-api.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - operator<(const SuckRequest& b) const
  - NotificationQueue::add
  - NotificationQueue::add
  - NotificationQueue::removeIf
  - NotificationQueue::getOne
  - NotificationQueue::earliest
  - CommunicatorClass::CommunicatorClass
  - CommunicatorClass::setSLog
  - operator()(const DNSPacket& a, const DNSPacket& b) const
  - CommunicatorClass::RemoveSentinel
  - ~RemoveSentinel()
  - FindNS::lookup
  - FindNS::resolve_name
  source_file: /src/pdns/pdns/communicator.hh
  types:
    enum:
    - enumerators:
      - name: PdnsControl
      - name: Api
      - name: Notify
      - name: SerialRefresh
      - name: SignaturesRefresh
      item_type: enum
      name: RequestPriority
      pos:
        line_end: 56
        line_start: 49
        source_file: /src/pdns/pdns/communicator.hh
    preproc_defs: []
    structs:
    - fields:
      - name: domain
        type: ZoneName
      - name: primary
        type: ComboAddress
      - name: force
        type: bool
      - name: priorityAndOrder
        type: std::pair<RequestPriority, uint64_t>
      item_type: struct
      name: SuckRequest
      pos:
        line_end: 62
        line_start: 44
        source_file: /src/pdns/pdns/communicator.hh
    - fields: []
      item_type: struct
      name: IDTag
      pos:
        line_end: 66
        line_start: 64
        source_file: /src/pdns/pdns/communicator.hh
    - fields:
      - name: domain
        type: ZoneName
      - name: ip
        type: string
      - name: next
        type: time_t
      - name: attempts
        type: int
      - name: id
        type: uint16_t
      item_type: struct
      name: NotificationRequest
      pos:
        line_end: 146
        line_start: 139
        source_file: /src/pdns/pdns/communicator.hh
    - fields:
      - name: d_sorthelper
        type: uint64_t
      - name: d_suckdomains
        type: UniQueue
      - name: d_inprogress
        type: set<ZoneName>
      - name: d_tocheck
        type: set<DomainInfo>
      - name: d_potentialautoprimaries
        type: std::set<DNSPacket, cmp>
      - name: d_failedSecondaryRefresh
        type: map<ZoneName, pair<uint64_t, time_t>>
      item_type: struct
      name: Data
      pos:
        line_end: 238
        line_start: 217
        source_file: /src/pdns/pdns/communicator.hh
    - fields: []
      item_type: struct
      name: cmp
      pos:
        line_end: 230
        line_start: 224
        source_file: /src/pdns/pdns/communicator.hh
    - fields:
      - name: d_dn
        type: ZoneName
      - name: '* d_cc'
        type: CommunicatorClass
      item_type: struct
      name: RemoveSentinel
      pos:
        line_end: 258
        line_start: 242
        source_file: /src/pdns/pdns/communicator.hh
    typedefs: []
    union: []
- function_names:
  - makeEDNSPaddingOptString
  source_file: /src/pdns/pdns/ednspadding.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - testAny
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  source_file: /src/pdns/pdns/test-protozero-trace.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - arg
  - declareArguments
  - uptimeOfProcess
  - getSysUserTimeMsec
  - getTCPConnectionCount
  - getQCount
  - getLatency
  - getReceiveLatency
  - getCacheLatency
  - getBackendLatency
  - getSendLatency
  - declareStats
  - isGuarded
  - update_latencies
  - sendout
  - qthread
  - dummyThread
  - triggerLoadOfLibraries
  - mainthread
  - daemonize
  - takedown
  - writePid
  - DLCycleHandler
  - DLRestHandler
  - guardian
  - tbhandler
  - sigTermHandler
  - loggerBackend
  - setupLogging
  - main
  source_file: /src/pdns/pdns/auth-main.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs:
    - item_type: typedef
      name: DNSDistributor
      pos:
        line_end: 123
        line_start: 123
        source_file: /src/pdns/pdns/auth-main.cc
      type: Distributor
    union: []
- function_names:
  - EDNSCookiesOpt
  - size
  - isWellFormed
  - getServer
  - getClient
  source_file: /src/pdns/pdns/ednscookies.hh
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: EDNSCookieSecretSize
        type: size_t
      - name: EDNSCookieOptSize
        type: size_t
      - name: makeFromString(const std::string& option)
        type: bool
      - name: makeFromString(const char* option, unsigned int len)
        type: bool
      - name: isValid(const std::string& secret, const ComboAddress& source) const
        type: bool
      - name: makeClientCookie()
        type: void
      - name: makeServerCookie(const std::string& secret, const ComboAddress& source)
        type: bool
      - name: makeOptString() const
        type: std::string
      - name: toDisplayString() const
        type: std::string
      - name: shouldRefresh() const
        type: bool
      - name: client
        type: std::string
      - name: server
        type: std::string
      - name: getEDNSCookiesOptFromString(const char* option, unsigned int len)
        type: void
      item_type: struct
      name: EDNSCookiesOpt
      pos:
        line_end: 77
        line_start: 27
        source_file: /src/pdns/pdns/ednscookies.hh
    typedefs: []
    union: []
- function_names:
  - operator()(const shared_ptr<const DNSRecordContent>&a, const shared_ptr<const
    DNSRecordContent>& b) const
  source_file: /src/pdns/pdns/ixfrutils.hh
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields: []
      item_type: struct
      name: CIContentCompareStruct
      pos:
        line_end: 42
        line_start: 36
        source_file: /src/pdns/pdns/ixfrutils.hh
    typedefs:
    - item_type: typedef
      name: records_t
      pos:
        line_end: 57
        line_start: 45
        source_file: /src/pdns/pdns/ixfrutils.hh
      type: multi_index_container
    union: []
- function_names:
  - SSQLite3::db
  - SSQLite3::inTransaction
  source_file: /src/pdns/pdns/ssqlite3.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - BindDomainInfo::clear
  - operator<(const BindDomainInfo& b) const
  - BindParser::BindParser
  - ~BindParser()
  - '& getAlsoNotify()'
  source_file: /src/pdns/pdns/bindparserclasses.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - main
  source_file: /src/pdns/pdns/saxfr.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/pdns/pdns/ednspadding.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - RCode::to_s
  - RCode::to_short_s
  - RCode::from_short
  - ERCode::to_s
  - ERCode::to_short_s
  - ERCode::from_short
  - Opcode::to_s
  - Opcode::from_lowercase_string
  - hashQuestion
  - DNSResourceRecord::placeString
  source_file: /src/pdns/pdns/dns.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - UeberBackend::handle::setSLog
  source_file: /src/pdns/pdns/ueberbackend.hh
  types:
    enum:
    - enumerators:
      - name: Miss
        value: '-1'
      - name: Hit
        value: '1'
      - name: NegativeMatch
        value: '0'
      item_type: enum
      name: CacheResult
      pos:
        line_end: 187
        line_start: 182
        source_file: /src/pdns/pdns/ueberbackend.hh
    preproc_defs: []
    structs:
    - fields:
      - name: qname
        type: DNSName
      - name: zoneId
        type: domainid_t
      - name: qtype
        type: QType
      item_type: struct
      name: Question
      pos:
        line_end: 170
        line_start: 165
        source_file: /src/pdns/pdns/ueberbackend.hh
    typedefs: []
    union: []
- function_names:
  - createLogHistogram
  - writeLogHistogramFile
  - writeFullHistogramFile
  source_file: /src/pdns/pdns/histog.hh
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: percentile
        type: double
      - name: latLimit
        type: double
      - name: latAverage
        type: double
      - name: latMedian
        type: double
      - name: latStddev
        type: double
      - name: count
        type: uint64_t
      - name: cumulLatAverage
        type: double
      - name: cumulLatMedian
        type: double
      item_type: struct
      name: LogHistogramBin
      pos:
        line_end: 25
        line_start: 15
        source_file: /src/pdns/pdns/histog.hh
    typedefs: []
    union: []
- function_names:
  - getServerDetail
  - apiDiscovery
  - apiDiscoveryV1
  - apiServer
  - apiServerDetail
  - shouldBeRedacted
  - apiServerConfig
  - apiServerStatistics
  - apiNameToDNSName
  - apiNameToZoneName
  - apiZoneIdToName
  - encodeName
  - apiZoneNameToId
  - apiNameToId
  - apiCheckNameAllowedCharacters
  - apiCheckQNameAllowedCharacters
  source_file: /src/pdns/pdns/ws-api.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs:
    - item_type: typedef
      name: stat_items_t
      pos:
        line_end: 165
        line_start: 165
        source_file: /src/pdns/pdns/ws-api.cc
      type: map
    union: []
- function_names:
  - StatNode::print
  - StatNode::visit
  - StatNode::submit
  - adjustForSampling
  - StatNode::submit
  source_file: /src/pdns/pdns/statnode.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - usage
  - main
  source_file: /src/pdns/pdns/dnspcap2calidns.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - PKCS11DNSCryptoKeyEngine::getName
  - PKCS11DNSCryptoKeyEngine::fromPublicKeyString
  source_file: /src/pdns/pdns/pkcs11signers.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - UDPNameserver::canReusePort
  source_file: /src/pdns/pdns/nameserver.hh
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: SO_REUSEPORT
      pos:
        line_end: 75
        line_start: 74
        source_file: /src/pdns/pdns/nameserver.hh
      type_or_value: '15'
    structs: []
    typedefs: []
    union: []
- function_names:
  - arg
  - init_unit_test
  - main
  source_file: /src/pdns/pdns/testrunner.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - Logger::setFacility
  - Logger::setFlag
  - Logger::disableSyslog
  - Logger::setTimestamps
  - Logger::setPrefixed
  - Logger::resetFlags
  - '& operator<<(const QType& qtype)'
  - '& operator<<(const QClass& qclass)'
  - '& operator<<(const T& i)'
  - DLOG
  - DLOG
  - VLOG
  - VLOG_NO_PREFIX
  source_file: /src/pdns/pdns/logger.hh
  types:
    enum:
    - enumerators:
      - name: All
        value: '32767'
      - name: Critical
        value: LOG_CRIT
      - name: Error
        value: LOG_ERR
      - name: Warning
        value: LOG_WARNING
      - name: Alert
        value: LOG_ALERT
      - name: Notice
        value: LOG_NOTICE
      - name: Info
        value: LOG_INFO
      - name: Debug
        value: LOG_DEBUG
      - name: None
        value: '-1'
      item_type: enum
      name: Urgency
      pos:
        line_end: 53
        line_start: 42
        source_file: /src/pdns/pdns/logger.hh
    preproc_defs:
    - item_type: preproc_def
      name: g_log
      pos:
        line_end: 165
        line_start: 164
        source_file: /src/pdns/pdns/logger.hh
      type_or_value: getLogger()
    structs:
    - fields:
      - name: d_output
        type: string
      - name: d_urgency
        type: Urgency
      item_type: struct
      name: PerThread
      pos:
        line_end: 146
        line_start: 142
        source_file: /src/pdns/pdns/logger.hh
    - fields:
      - name: prefix
        type: string
      - name: start
        type: timeval
      - name: v
        type: std::variant<std::reference_wrapper<Logger>, std::reference_wrapper<ostringstream>>
      item_type: struct
      name: LogVariant
      pos:
        line_end: 182
        line_start: 176
        source_file: /src/pdns/pdns/logger.hh
    typedefs: []
    union: []
- function_names:
  - MallocTracer::makeBacktrace
  - malloc
  - free
  - MallocTracer::malloc
  - MallocTracer::free
  - MallocTracer::topAllocators
  - MallocTracer::topAllocatorsString
  - MallocTracer::clearAllocators
  source_file: /src/pdns/pdns/malloctrace.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - BINARY
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  source_file: /src/pdns/pdns/test-proxy_protocol_cc.cc
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: PROXYMAGIC
      pos:
        line_end: 20
        line_start: 19
        source_file: /src/pdns/pdns/test-proxy_protocol_cc.cc
      type_or_value: '"\x0D\x0A\x0D\x0A\x00\x0D\x0A\x51\x55\x49\x54\x0A"'
    - item_type: preproc_def
      name: PROXYMAGICLEN
      pos:
        line_end: 21
        line_start: 20
        source_file: /src/pdns/pdns/test-proxy_protocol_cc.cc
      type_or_value: sizeof(PROXYMAGIC)-1
    structs: []
    typedefs: []
    union: []
- function_names:
  - ReadWriteLock::ReadWriteLock
  - ~ReadWriteLock()
  - ReadWriteLock::ReadWriteLock
  - ReadWriteLock::ReadWriteLock
  - '& operator=(ReadWriteLock&&)'
  - '& operator=(const ReadWriteLock& rhs)'
  - '& getLock()'
  - ReadLock::ReadLock
  - ReadLock::ReadLock
  - ~ReadLock()
  - ReadLock::ReadLock
  - '& operator=(const ReadLock& rhs)'
  - '& operator=(ReadLock&&)'
  - ReadLock::ReadLock
  - ReadLock::ReadLock
  - WriteLock::WriteLock
  - WriteLock::WriteLock
  - ~WriteLock()
  - WriteLock::WriteLock
  - '& operator=(const WriteLock& rhs)'
  - '& operator=(WriteLock&&)'
  - WriteLock::WriteLock
  - WriteLock::WriteLock
  - TryReadLock::TryReadLock
  - TryReadLock::TryReadLock
  - ~TryReadLock()
  - TryReadLock::TryReadLock
  - TryReadLock::TryReadLock
  - '& operator=(const TryReadLock& rhs)'
  - '& operator=(TryReadLock&&)'
  - TryReadLock::gotIt
  - TryReadLock::TryReadLock
  - TryWriteLock::TryWriteLock
  - TryWriteLock::TryWriteLock
  - ~TryWriteLock()
  - TryWriteLock::TryWriteLock
  - TryWriteLock::TryWriteLock
  - '& operator=(const TryWriteLock& rhs)'
  - '& operator=(TryWriteLock&&)'
  - TryWriteLock::gotIt
  - TryWriteLock::TryWriteLock
  - LockGuardedHolder::LockGuardedHolder
  - '& operator*() const noexcept'
  - '* operator->() const noexcept'
  - LockGuardedTryHolder::LockGuardedTryHolder
  - '& operator*() const'
  - '* operator->() const'
  - operator bool() const noexcept
  - LockGuardedTryHolder::owns_lock
  - LockGuardedTryHolder::lock
  - LockGuarded::LockGuarded
  - LockGuarded::LockGuarded
  - LockGuarded::LockGuarded
  - LockGuarded::try_lock
  - LockGuarded::lock
  - LockGuarded::read_only_lock
  - RecursiveLockGuardedHolder::RecursiveLockGuardedHolder
  - '& operator*() const noexcept'
  - '* operator->() const noexcept'
  - RecursiveLockGuardedTryHolder::RecursiveLockGuardedTryHolder
  - '& operator*() const'
  - '* operator->() const'
  - operator bool() const noexcept
  - RecursiveLockGuardedTryHolder::owns_lock
  - RecursiveLockGuardedTryHolder::lock
  - RecursiveLockGuarded::RecursiveLockGuarded
  - RecursiveLockGuarded::RecursiveLockGuarded
  - RecursiveLockGuarded::RecursiveLockGuarded
  - RecursiveLockGuarded::try_lock
  - RecursiveLockGuarded::lock
  - RecursiveLockGuarded::read_only_lock
  - SharedLockGuardedHolder::SharedLockGuardedHolder
  - '& operator*() const noexcept'
  - '* operator->() const noexcept'
  - SharedLockGuardedTryHolder::SharedLockGuardedTryHolder
  - '& operator*() const'
  - '* operator->() const'
  - operator bool() const noexcept
  - SharedLockGuardedTryHolder::owns_lock
  - SharedLockGuardedNonExclusiveHolder::SharedLockGuardedNonExclusiveHolder
  - '& operator*() const noexcept'
  - '* operator->() const noexcept'
  - SharedLockGuardedNonExclusiveTryHolder::SharedLockGuardedNonExclusiveTryHolder
  - '& operator*() const'
  - '* operator->() const'
  - operator bool() const noexcept
  - SharedLockGuardedNonExclusiveTryHolder::owns_lock
  - SharedLockGuarded::SharedLockGuarded
  - SharedLockGuarded::SharedLockGuarded
  - SharedLockGuarded::SharedLockGuarded
  - SharedLockGuarded::try_write_lock
  - SharedLockGuarded::write_lock
  - SharedLockGuarded::try_read_lock
  - SharedLockGuarded::read_lock
  source_file: /src/pdns/pdns/lock.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  source_file: /src/pdns/pdns/test-credentials_cc.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - usage
  - main
  source_file: /src/pdns/pdns/notify.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - generateTSIGQuery
  - checkTSIG
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  source_file: /src/pdns/pdns/test-tsig.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - operator==(const ProxyProtocolValue& rhs) const
  source_file: /src/pdns/pdns/proxy-protocol.hh
  types:
    enum:
    - enumerators:
      - name: PP_TLV_ALPN
        value: '0x01'
      - name: PP_TLV_SSL
        value: '0x20'
      item_type: enum
      name: Types
      pos:
        line_end: 36
        line_start: 36
        source_file: /src/pdns/pdns/proxy-protocol.hh
    preproc_defs: []
    structs:
    - fields:
      - name: content
        type: std::string
      - name: type
        type: uint8_t
      item_type: struct
      name: ProxyProtocolValue
      pos:
        line_end: 37
        line_start: 26
        source_file: /src/pdns/pdns/proxy-protocol.hh
    typedefs: []
    union: []
- function_names:
  - ixfrdistStats::ixfrdistStats
  - ixfrdistStats::setSOASerial
  - ixfrdistStats::incrementSOAChecks
  - ixfrdistStats::incrementSOAChecksFailed
  - ixfrdistStats::incrementSOAinQueries
  - ixfrdistStats::incrementAXFRinQueries
  - ixfrdistStats::incrementIXFRinQueries
  - ixfrdistStats::incrementAXFRFailures
  - ixfrdistStats::incrementIXFRFailures
  - ixfrdistStats::registerDomain
  - ixfrdistStats::incrementUnknownDomainInQueries
  - ixfrdistStats::incrementNotImplemented
  - ixfrdistStats::getRegisteredDomain
  source_file: /src/pdns/pdns/ixfrdist-stats.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - RemoteLoggerPool::RemoteLoggerPool
  - RemoteLoggerPool::RemoteLoggerPool
  - '& operator=(const RemoteLoggerPool&)'
  - '& operator=(RemoteLoggerPool&&)'
  - RemoteLoggerPool::address
  - RemoteLoggerPool::name
  - RemoteLoggerPool::getStats
  source_file: /src/pdns/pdns/remote_logger_pool.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - treader
  - BOOST_AUTO_TEST_CASE
  source_file: /src/pdns/pdns/test-sholder_hh.cc
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: name
        type: string
      - name: number
        type: uint64_t
      item_type: struct
      name: TestObject
      pos:
        line_end: 16
        line_start: 12
        source_file: /src/pdns/pdns/test-sholder_hh.cc
    typedefs: []
    union: []
- function_names:
  - PacketCache::hashAfterQname
  - PacketCache::hashHeaderAndQName
  - PacketCache::canHashPacket
  - PacketCache::queryHeaderMatches
  - PacketCache::queryMatches
  source_file: /src/pdns/pdns/packetcache.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - BaseLua4::loadFile
  - BaseLua4::loadString
  - BaseLua4::includePath
  - BaseLua4::getFeatures
  - BaseLua4::prepareContext
  - BaseLua4::loadStream
  - BaseLua4::~BaseLua4()
  source_file: /src/pdns/pdns/lua-base4.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs:
    - item_type: typedef
      name: cas_t
      pos:
        line_end: 187
        line_start: 187
        source_file: /src/pdns/pdns/lua-base4.cc
      type: unordered_set<ComboAddress,ComboAddress::addressOnlyHash,ComboAddress::addressOnlyEqual>
    union: []
- function_names:
  - SensitiveData::SensitiveData
  - SensitiveData::SensitiveData
  - '& operator=(const SensitiveData&)'
  - '& getString() const'
  - '& getString()'
  - CredentialsHolder::CredentialsHolder
  - '& operator=(CredentialsHolder&&)'
  - CredentialsHolder::CredentialsHolder
  - '& operator=(const CredentialsHolder&)'
  - CredentialsHolder::wasHashed
  - CredentialsHolder::isHashed
  source_file: /src/pdns/pdns/credentials.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - DynMessenger::DynMessenger
  - '& operator=(const DynMessenger&)'
  source_file: /src/pdns/pdns/dynmessenger.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - AuthLua4::getLua
  - AuthLua4::postPrepareContext
  - AuthLua4::postLoad
  - AuthLua4::axfrfilter
  - AuthLua4::updatePolicy
  - AuthLua4::prequery
  - AuthLua4::~AuthLua4()
  source_file: /src/pdns/pdns/lua-auth4.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  source_file: /src/pdns/pdns/test-dns_cc.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - FDMultiplexer::getMultiplexerSilent
  - PollFDMultiplexer::PollFDMultiplexer
  - PollFDMultiplexer::getName
  - make
  - RegisterOurselves
  - convertEventKind
  - PollFDMultiplexer::addFD
  - PollFDMultiplexer::removeFD
  - PollFDMultiplexer::preparePollFD
  - PollFDMultiplexer::getAvailableFDs
  - PollFDMultiplexer::run
  - acceptData
  - main
  source_file: /src/pdns/pdns/pollmplexer.cc
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields: []
      item_type: struct
      name: RegisterOurselves
      pos:
        line_end: 60
        line_start: 54
        source_file: /src/pdns/pdns/pollmplexer.cc
    typedefs: []
    union: []
- function_names:
  - arg
  - YAML::encode
  - YAML::decode
  - YAML::encode
  - YAML::decode
  - YAML::encode
  - YAML::decode
  - YAML::encode
  - YAML::decode
  - YAML::encode
  - YAML::decode
  - YAML::encode
  - YAML::decode
  - doGetStats
  - handleSignal
  - usage
  - cleanUpDomain
  - getSOAFromRecords
  - makeIXFRDiff
  - getCurrentZoneInfo
  - updateCurrentZoneInfo
  - sendNotification
  - communicatorReceiveNotificationAnswers
  - communicatorSendNotifications
  - communicatorThread
  - updateThread
  - maybeHandleNotify
  - checkQuery
  - makeEmptyNoErrorPacket
  - makeSOAPacket
  - makeRefusedPacket
  - makeNotimpPacket
  - getSOAPacket
  - sendPacketOverTCP
  - addRecordToWriter
  - sendRecordsOverTCP
  - handleAXFR
  - handleIXFR
  - allowedByACL
  - handleUDPRequest
  - handleTCPRequest
  - tcpWorker
  - parseAndCheckConfig
  - parseConfiguration
  - main
  source_file: /src/pdns/pdns/ixfrdist.cc
  types:
    enum:
    - enumerators:
      - name: Unknown
      - name: RefusedQuery
      - name: RefusedOpcode
      - name: ValidQuery
      - name: EmptyNoError
      item_type: enum
      name: ResponseType
      pos:
        line_end: 616
        line_start: 610
        source_file: /src/pdns/pdns/ixfrdist.cc
    preproc_defs: []
    structs:
    - fields: []
      item_type: struct
      name: convert<ComboAddress>
      pos:
        line_end: 103
        line_start: 86
        source_file: /src/pdns/pdns/ixfrdist.cc
    - fields: []
      item_type: struct
      name: convert<ZoneName>
      pos:
        line_end: 123
        line_start: 106
        source_file: /src/pdns/pdns/ixfrdist.cc
    - fields: []
      item_type: struct
      name: convert<Netmask>
      pos:
        line_end: 143
        line_start: 126
        source_file: /src/pdns/pdns/ixfrdist.cc
    - fields: []
      item_type: struct
      name: convert<ComboAddress>
      pos:
        line_end: 103
        line_start: 86
        source_file: /src/pdns/pdns/ixfrdist.cc
    - fields: []
      item_type: struct
      name: convert<ZoneName>
      pos:
        line_end: 123
        line_start: 106
        source_file: /src/pdns/pdns/ixfrdist.cc
    - fields: []
      item_type: struct
      name: convert<Netmask>
      pos:
        line_end: 143
        line_start: 126
        source_file: /src/pdns/pdns/ixfrdist.cc
    - fields:
      - name: oldSOA
        type: shared_ptr<const SOARecordContent>
      - name: newSOA
        type: shared_ptr<const SOARecordContent>
      - name: removals
        type: vector<DNSRecord>
      - name: additions
        type: vector<DNSRecord>
      - name: oldSOATTL
        type: uint32_t
      - name: newSOATTL
        type: uint32_t
      item_type: struct
      name: ixfrdiff_t
      pos:
        line_end: 153
        line_start: 146
        source_file: /src/pdns/pdns/ixfrdist.cc
    - fields:
      - name: soa
        type: shared_ptr<const SOARecordContent>
      - name: latestAXFR
        type: records_t
      - name: ixfrDiffs
        type: vector<std::shared_ptr<ixfrdiff_t>>
      - name: soaTTL
        type: uint32_t
      item_type: struct
      name: ixfrinfo_t
      pos:
        line_end: 160
        line_start: 155
        source_file: /src/pdns/pdns/ixfrdist.cc
    - fields:
      - name: primaries
        type: set<ComboAddress>
      - name: notify
        type: std::set<ComboAddress>
      - name: maxSOARefresh
        type: uint32_t
      item_type: struct
      name: ixfrdistdomain_t
      pos:
        line_end: 167
        line_start: 163
        source_file: /src/pdns/pdns/ixfrdist.cc
    - fields:
      - name: listeningSockets
        type: set<int>
      - name: wsACL
        type: NetmaskGroup
      - name: wsAddr
        type: ComboAddress
      - name: wsLogLevel
        type: std::string
      - name: workDir
        type: std::string
      - name: '* userInfo'
        type: struct passwd
      - name: axfrMaxRecords
        type: uint32_t
      - name: keep
        type: uint16_t
      - name: axfrTimeout
        type: uint16_t
      - name: failedSOARetry
        type: uint16_t
      - name: tcpInThreads
        type: uint16_t
      - name: uid
        type: uid_t
      - name: gid
        type: gid_t
      - name: shouldExit
        type: bool
      item_type: struct
      name: IXFRDistConfiguration
      pos:
        line_end: 1489
        line_start: 1473
        source_file: /src/pdns/pdns/ixfrdist.cc
    typedefs: []
    union: []
- function_names:
  - arg
  - comboAddressVecToString
  - pdnsutilLoggerBackend
  - loadMainConfig
  - UtilBackend::UtilBackend
  - UtilBackend::UtilBackend
  - UtilBackend::UtilBackend
  - '& operator=(const UtilBackend&)'
  - '& operator=(UtilBackend&&)'
  - UtilBackend::~UtilBackend()
  - usage
  - formatRecord
  - rectifyZone
  - dbBench
  - rectifyAllZones
  - terminalSafe
  - areUnderscoresAllowed
  - checkZone
  - checkAllZones
  - increaseSerial
  - deleteZone
  - listKey
  - listKeys
  - listZone
  - listComments
  - read1char
  - clearZone
  - copyZoneContents
  - PDNSColors::PDNSColors
  - PDNSColors::red
  - PDNSColors::green
  - PDNSColors::bold
  - PDNSColors::rst
  - spawnEditor
  - fillTempZoneFile
  - parseZoneFile
  - isSameZoneSerial
  - increaseZoneSerial
  - editZone
  - ~deleteme()
  - deleteme
  - deleteme
  - deleteme
  - operator=(const deleteme &)
  - operator=(deleteme &&)
  - xcryptIP
  - zonemdVerifyFile
  - createZoneWithDefaults
  - loadZone
  - createZone
  - copyZone
  - addOrReplaceRecord
  - addAutoPrimary
  - removeAutoPrimary
  - listAutoPrimaries
  - deleteRRSet
  - listAllZones
  - listMemberZones
  - testAlgorithm
  - testAlgorithms
  - testSpeed
  - verifyCrypto
  - disableDNSSECOnZone
  - setZoneOptionsJson
  - setZoneOption
  - setZoneCatalog
  - setZoneAccount
  - setZoneKind
  - showZone
  - secureZone
  - testSchema
  - addOrSetMeta
  - lmdbGetBackendVersion
  - testAlgorithm
  - ipDecryptOrEncrypt
  - ipDecrypt
  - ipEncrypt
  - testAlgorithms
  - listAlgorithms
  - createBindDb
  - rawLuaFromContent
  - hashPassword
  - zonemdVerifyFile
  - testSchema
  - rectifyZone
  - rectifyAllZones
  - checkZone
  - benchDb
  - checkAllZones
  - listAllZones
  - listMemberZones
  - testSpeed
  - verifyCrypto
  - showZone
  - exportZoneDS
  - disableDNSSEC
  - activateZoneKey
  - deactivateZoneKey
  - publishZoneKey
  - unpublishZoneKey
  - checkZoneKey
  - addZoneKey
  - removeZoneKey
  - deleteZone
  - createZone
  - createSecondaryZone
  - changeSecondaryZonePrimary
  - addComment
  - listComments
  - addRecord
  - addAutoprimary
  - removeAutoprimary
  - listAutoprimaries
  - replaceRRSet
  - deleteRRSet
  - listZone
  - editZone
  - clearZone
  - listKeys
  - loadZone
  - secureZone
  - secureAllZones
  - setKind
  - setOptionsJson
  - setOption
  - setCatalog
  - setAccount
  - setNsec3
  - setPresigned
  - setPublishCDNSKey
  - setPublishCDs
  - setSignalingZone
  - unsetPresigned
  - unsetPublishCDNSKey
  - unsetPublishCDs
  - hashZoneRecord
  - unsetNSec3
  - exportZoneKey
  - exportZoneKeyPEM
  - increaseSerial
  - importZoneKeyPEM
  - importZoneKey
  - exportZoneDNSKey
  - generateZoneKey
  - generateTSIGKey
  - importTSIGKey
  - deleteTSIGKey
  - listTSIGKeys
  - activateTSIGKey
  - deactivateTSIGKey
  - getMeta
  - setMetaInternal
  - addMeta
  - setMeta
  - HSMAssign
  - HSMCreateKey
  - HSM
  - B2BMigrate
  - backendCmd
  - backendLookup
  - listView
  - listViews
  - viewAddZone
  - viewDelZone
  - listNetwork
  - setNetwork
  - displayCommandGroup
  - lowercase
  - parseCommandExact
  - parseCommand
  - tests
  - main
  source_file: /src/pdns/pdns/pdnsutil.cc
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: requiresInitialization
        type: bool
      - name: handler
        type: commandHandler
      - name: synopsis
        type: std::string_view
      - name: help
        type: std::string_view
      item_type: struct
      name: commandEntry
      pos:
        line_end: 193
        line_start: 184
        source_file: /src/pdns/pdns/pdnsutil.cc
    - fields:
      - name: d_name
        type: string
      item_type: struct
      name: deleteme
      pos:
        line_end: 2353
        line_start: 2345
        source_file: /src/pdns/pdns/pdnsutil.cc
    typedefs: []
    union: []
- function_names:
  - DNSResourceRecord::setContent
  - DNSResourceRecord::getZoneRepresentation
  - DNSResourceRecord::operator==(const DNSResourceRecord& rhs) const
  - ARecordContent::ARecordContent
  - ARecordContent::ARecordContent
  - AAAARecordContent::AAAARecordContent
  - ARecordContent::getCA
  - AAAARecordContent::getCA
  - ARecordContent::doRecordCheck
  - LUARecordContent::getCode
  - OPTRecordContent::getData
  - MXRecordContent::MXRecordContent
  - SRVRecordContent::SRVRecordContent
  - SOARecordContent::SOARecordContent
  - DSRecordContent::DSRecordContent
  - CDSRecordContent::CDSRecordContent
  - DLVRecordContent::DLVRecordContent
  - RRSIGRecordContent::RRSIGRecordContent
  - DNSKEYRecordContent::DNSKEYRecordContent
  - CDNSKEYRecordContent::CDNSKEYRecordContent
  - RKEYRecordContent::RKEYRecordContent
  - EUI48RecordContent::report
  - EUI48RecordContent::make
  - EUI48RecordContent::make
  - EUI48RecordContent::toPacket
  - EUI48RecordContent::getZoneRepresentation
  - EUI64RecordContent::report
  - EUI64RecordContent::make
  - EUI64RecordContent::make
  - EUI64RecordContent::toPacket
  - EUI64RecordContent::getZoneRepresentation
  - APLRecordContent::report
  - APLRecordContent::make
  - APLRecordContent::parseAPLElement
  - APLRecordContent::make
  - APLRecordContent::toPacket
  - APLRecordContent::getZoneRepresentation
  - SVCBBaseRecordContent::autoHint
  - SVCBBaseRecordContent::setHints
  - SVCBBaseRecordContent::removeParam
  - SVCBBaseRecordContent::hasParams
  - SVCBBaseRecordContent::hasParam
  - SVCBBaseRecordContent::getParam
  - SVCBBaseRecordContent::getParamIt
  - SVCBRecordContent::clone
  - HTTPSRecordContent::clone
  - HHITRecordContent::clone
  - BRIDRecordContent::clone
  - makeTag
  - DNSKEYRecordContent::getTag
  - getEDNSOpts
  - reportBasicTypes
  - reportOtherTypes
  - reportAllTypes
  - getAddr
  - checkHostnameCorrectness
  - EDNSOpts::getFirstOption
  - Reporter
  source_file: /src/pdns/pdns/dnsrecords.cc
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields: []
      item_type: struct
      name: ReportIsOnlyCallableByReportAllTypes
      pos:
        line_end: 1039
        line_start: 1037
        source_file: /src/pdns/pdns/dnsrecords.cc
    - fields: []
      item_type: struct
      name: Reporter
      pos:
        line_end: 1107
        line_start: 1101
        source_file: /src/pdns/pdns/dnsrecords.cc
    typedefs: []
    union: []
- function_names:
  - ChunkedSigningPipe::ChunkedSigningPipe
  - operator=(const ChunkedSigningPipe&)
  source_file: /src/pdns/pdns/signingpipe.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs:
    - item_type: typedef
      name: rrset_t
      pos:
        line_end: 39
        line_start: 39
        source_file: /src/pdns/pdns/signingpipe.hh
      type: vector
    - item_type: typedef
      name: chunk_t
      pos:
        line_end: 40
        line_start: 40
        source_file: /src/pdns/pdns/signingpipe.hh
      type: rrset_t
    union: []
- function_names:
  - arg
  - main
  source_file: /src/pdns/pdns/tsig-tests.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - main
  source_file: /src/pdns/pdns/standalone_fuzz_target_runner.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - Logging::Logger::getptr
  - Logging::Logger::info
  - Logging::Logger::logMessage
  - Logging::Logger::error
  - Logging::Logger::error
  - Logging::Logger::v
  - Logging::Logger::withValues
  - Logging::Logger::withName
  - Logging::Logger::create
  - Logging::Logger::create
  - Logging::Logger::Logger
  - Logging::Logger::Logger
  - Logging::Logger::Logger
  - Logger::~Logger()
  - Logging::Logger::getptr
  - Logging::Logger::info
  - Logging::Logger::logMessage
  - Logging::Logger::error
  - Logging::Logger::error
  - Logging::Logger::v
  - Logging::Logger::withValues
  - Logging::Logger::withName
  - Logging::Logger::create
  - Logging::Logger::create
  - Logging::Logger::Logger
  - Logging::Logger::Logger
  - Logging::Logger::Logger
  - Logger::~Logger()
  - Logging::toTimestampStringMilli
  source_file: /src/pdns/pdns/logging.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  source_file: /src/pdns/pdns/test-ipcrypt_cc.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - AuthPacketCache::AuthPacketCache
  - AuthPacketCache::createViewMap
  - AuthPacketCache::MapCombo::reserve(size_t numberOfEntries)
  - AuthPacketCache::get
  - AuthPacketCache::entryMatches
  - AuthPacketCache::insert
  - AuthPacketCache::getEntryLocked
  - AuthPacketCache::purge
  - AuthPacketCache::purgeExact
  - AuthPacketCache::purgeView
  - AuthPacketCache::purge
  - AuthPacketCache::purge
  - AuthPacketCache::cleanup
  - AuthPacketCache::cleanupIfNeeded
  source_file: /src/pdns/pdns/auth-packetcache.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - PacketHandler::numRunning
  source_file: /src/pdns/pdns/packethandler.hh
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: r
        type: std::unique_ptr<DNSPacket>
      - name: authSet
        type: set<ZoneName>
      - name: target
        type: DNSName
      - name: doSigs
        type: bool
      - name: noCache
        type: bool
      - name: retargeted
        type: bool
      item_type: struct
      name: queryState
      pos:
        line_end: 119
        line_start: 112
        source_file: /src/pdns/pdns/packethandler.hh
    typedefs: []
    union: []
- function_names: []
  source_file: /src/pdns/pdns/comment.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - dns_random
  - dns_random_uint32
  - dns_random_uint16
  - dns_random
  - pdns::min
  - pdns::max
  - operator()()
  - pdns::random_minimum_acceptable_value
  - pdns::min
  - pdns::max
  - operator()()
  - pdns::random_minimum_acceptable_value
  source_file: /src/pdns/pdns/dns_random.hh
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields: []
      item_type: struct
      name: dns_random_engine
      pos:
        line_end: 69
        line_start: 50
        source_file: /src/pdns/pdns/dns_random.hh
    - fields: []
      item_type: struct
      name: dns_random_engine
      pos:
        line_end: 69
        line_start: 50
        source_file: /src/pdns/pdns/dns_random.hh
    typedefs: []
    union: []
- function_names: []
  source_file: /src/pdns/pdns/auth-caches.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - arg
  - QuestionData
  - liveQuestions
  - LiveCounts
  - operator-(const LiveCounts& rhs)
  - visitor
  - operator-(const struct pdns_timeval& lhs, const struct pdns_timeval& rhs)
  - main
  source_file: /src/pdns/pdns/dnsscope.cc
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: IP_OFFMASK
      pos:
        line_end: 49
        line_start: 48
        source_file: /src/pdns/pdns/dnsscope.cc
      type_or_value: '0x1fff '
    structs:
    - fields:
      - name: d_qcount
        type: int
      - name: d_answercount
        type: int
      - name: d_firstquestiontime
        type: struct pdns_timeval
      item_type: struct
      name: QuestionData
      pos:
        line_end: 76
        line_start: 65
        source_file: /src/pdns/pdns/dnsscope.cc
    - fields:
      - name: questions
        type: unsigned int
      - name: answers
        type: unsigned int
      - name: outstanding
        type: unsigned int
      item_type: struct
      name: LiveCounts
      pos:
        line_end: 112
        line_start: 93
        source_file: /src/pdns/pdns/dnsscope.cc
    typedefs:
    - item_type: typedef
      name: statmap_t
      pos:
        line_end: 78
        line_start: 78
        source_file: /src/pdns/pdns/dnsscope.cc
      type: map
    - item_type: typedef
      name: cumul_t
      pos:
        line_end: 208
        line_start: 208
        source_file: /src/pdns/pdns/dnsscope.cc
      type: map
    - item_type: typedef
      name: rcodes_t
      pos:
        line_end: 225
        line_start: 225
        source_file: /src/pdns/pdns/dnsscope.cc
      type: map
    - item_type: typedef
      name: pcounts_t
      pos:
        line_end: 232
        line_start: 232
        source_file: /src/pdns/pdns/dnsscope.cc
      type: vector
    - item_type: typedef
      name: done_t
      pos:
        line_end: 471
        line_start: 471
        source_file: /src/pdns/pdns/dnsscope.cc
      type: map
    union: []
- function_names:
  - TypedQuery
  - SendReceive
  - send
  - receive
  - deliverTimeout
  - deliverAnswer
  - usage
  - main
  source_file: /src/pdns/pdns/dnsbulktest.cc
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: ips
        type: vector<ComboAddress>
      - name: rcode
        type: int
      - name: seenauthsoa
        type: bool
      item_type: struct
      name: DNSResult
      pos:
        line_end: 62
        line_start: 57
        source_file: /src/pdns/pdns/dnsbulktest.cc
    - fields:
      - name: name
        type: DNSName
      - name: type
        type: uint16_t
      item_type: struct
      name: TypedQuery
      pos:
        line_end: 69
        line_start: 64
        source_file: /src/pdns/pdns/dnsbulktest.cc
    - fields:
      - name: d_socket
        type: Socket
      - name: d_idqueue
        type: std::deque<uint16_t>
      - name: d_acc
        type: unique_ptr<acc_t>
      - name: s_probs
        type: std::array<double, 11>
      - name: d_errors
        type: unsigned int
      - name: d_nxdomains
        type: unsigned int
      - name: d_nodatas
        type: unsigned int
      - name: d_oks
        type: unsigned int
      - name: d_unknowns
        type: unsigned int
      - name: d_received
        type: unsigned int
      - name: d_receiveerrors
        type: unsigned int
      - name: d_senderrors
        type: unsigned int
      item_type: struct
      name: SendReceive
      pos:
        line_end: 219
        line_start: 71
        source_file: /src/pdns/pdns/dnsbulktest.cc
    typedefs: []
    union: []
- function_names: []
  source_file: /src/pdns/pdns/responsestats.hh
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: value
        type: pdns::stat_t
      item_type: struct
      name: Counter
      pos:
        line_end: 46
        line_start: 43
        source_file: /src/pdns/pdns/responsestats.hh
    typedefs: []
    union: []
- function_names:
  - EDNSCookiesOpt::EDNSCookiesOpt
  - EDNSCookiesOpt::EDNSCookiesOpt
  - EDNSCookiesOpt::makeFromString
  - EDNSCookiesOpt::makeFromString
  - EDNSCookiesOpt::makeOptString
  - EDNSCookiesOpt::toDisplayString
  - EDNSCookiesOpt::getEDNSCookiesOptFromString
  - cookieTSIsValid
  - EDNSCookiesOpt::isValid
  - EDNSCookiesOpt::shouldRefresh
  - EDNSCookiesOpt::makeClientCookie
  - EDNSCookiesOpt::makeServerCookie
  source_file: /src/pdns/pdns/ednscookies.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - pdns::ZoneMD::readRecords(ZoneParserTNG& zpt)
  - pdns::ZoneMD::readRecords(const vector<DNSRecord>& records)
  - pdns::ZoneMD::processRecord(const DNSRecord& record)
  - pdns::ZoneMD::readRecord(const DNSRecord& record)
  - pdns::ZoneMD::verify(bool& validationDone, bool& validationOK)
  source_file: /src/pdns/pdns/zonemd.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - isReleaseVersion
  - setSecPollToUnknownOnOK
  - processSecPoll
  source_file: /src/pdns/pdns/secpoll.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - makeUsec
  - BenchQuery
  - BenchQuery
  - doQuery
  - worker
  - usage
  - main
  source_file: /src/pdns/pdns/dnstcpbench.cc
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: qname
        type: DNSName
      - name: qtype
        type: uint16_t
      - name: udpUsec
        type: uint32_t
      - name: answerSecond
        type: time_t
      item_type: struct
      name: BenchQuery
      pos:
        line_end: 77
        line_start: 69
        source_file: /src/pdns/pdns/dnstcpbench.cc
    typedefs:
    - item_type: typedef
      name: acc_t
      pos:
        line_end: 297
        line_start: 292
        source_file: /src/pdns/pdns/dnstcpbench.cc
      type: accumulator_set
    - item_type: typedef
      name: counts_t
      pos:
        line_end: 301
        line_start: 301
        source_file: /src/pdns/pdns/dnstcpbench.cc
      type: map
    union: []
- function_names: []
  source_file: /src/pdns/pdns/query-local-address.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - Semaphore::Semaphore
  - Semaphore::post
  - Semaphore::wait
  - Semaphore::tryWait
  - Semaphore::getValue
  - Semaphore::~Semaphore()
  - Semaphore::Semaphore
  - Semaphore::post
  - Semaphore::wait
  - Semaphore::tryWait
  - Semaphore::getValue
  - Semaphore::~Semaphore()
  source_file: /src/pdns/pdns/unix_semaphore.cc
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: SEM_VALUE_MAX
      pos:
        line_end: 43
        line_start: 42
        source_file: /src/pdns/pdns/unix_semaphore.cc
      type_or_value: '32767'
    - item_type: preproc_def
      name: SEM_MAGIC
      pos:
        line_end: 44
        line_start: 43
        source_file: /src/pdns/pdns/unix_semaphore.cc
      type_or_value: ((uint32_t) 0x09fa4012)
    structs: []
    typedefs: []
    union: []
- function_names:
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - NMGOutputToSorted
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  source_file: /src/pdns/pdns/test-iputils_hh.cc
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: str
        type: std::string
      - name: port
        type: uint16_t
      - name: result
        type: std::string
      - name: ex
        type: bool
      item_type: struct
      name: "tests[] = {\n    { \"\", 0, \"\", true },\n    { \"1.2.3.a\", 53, \"\",
        true },\n    { \"1::g3\", 99, \"\", true },\n    { \"1.2.3.4\", 0, \"1.2.3.4:0\",
        false },\n    { \"1.2.3.4\", 999, \"1.2.3.4:999\", false },\n    { \"1::\",
        999, \"[1::]:999\", false },\n    { \"1::33:99\", 0, \"[1::33:99]\", false
        },\n    { \"[1::33]:99\", 0, \"[1::33]:99\", false },\n    { \"1:33::99\",
        0, \"1:33::99\", false },\n    { \"[1:33::]:99\", 0, \"[1:33::]:99\", false
        },\n    { \"2003:1234::f561\", 53, \"[2003:1234::f561]:53\", false },\n    {
        \"2003:1234::f561:53\", 54, \"[2003:1234::f561:53]:54\", false },\n  }"
      pos:
        line_end: 921
        line_start: 916
        source_file: /src/pdns/pdns/test-iputils_hh.cc
    - fields:
      - name: str
        type: std::string
      - name: unspecified
        type: bool
      item_type: struct
      name: TestParams
      pos:
        line_end: 952
        line_start: 948
        source_file: /src/pdns/pdns/test-iputils_hh.cc
    typedefs: []
    union: []
- function_names:
  - pdns::Bucket
  - pdns::Bucket
  - '& operator=(const Bucket& rhs)'
  - pdns::AtomicBucket
  - pdns::AtomicBucket
  - pdns::AtomicBucket
  - pdns::BaseHistogram::BaseHistogram
  - pdns::BaseHistogram::BaseHistogram
  - pdns::BaseHistogram::getName
  - pdns::BaseHistogram::getSum
  - '& getRawData() const'
  - pdns::BaseHistogram::getCount
  - pdns::BaseHistogram::getCumulativeBuckets
  - pdns::BaseHistogram::getCumulativeCounts
  - pdns::BaseHistogram::lessOrEqual
  - operator()(uint64_t d) const
  - '& operator+=(const BaseHistogram& rhs)'
  - pdns::BaseHistogram::to125
  - pdns::Bucket
  - pdns::Bucket
  - '& operator=(const Bucket& rhs)'
  - pdns::AtomicBucket
  - pdns::AtomicBucket
  - pdns::AtomicBucket
  - pdns::BaseHistogram::BaseHistogram
  - pdns::BaseHistogram::BaseHistogram
  - pdns::BaseHistogram::getName
  - pdns::BaseHistogram::getSum
  - '& getRawData() const'
  - pdns::BaseHistogram::getCount
  - pdns::BaseHistogram::getCumulativeBuckets
  - pdns::BaseHistogram::getCumulativeCounts
  - pdns::BaseHistogram::lessOrEqual
  - operator()(uint64_t d) const
  - '& operator+=(const BaseHistogram& rhs)'
  - pdns::BaseHistogram::to125
  source_file: /src/pdns/pdns/histogram.hh
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: d_name
        type: std::string
      - name: d_boundary
        type: uint64_t
      - name: d_count
        type: uint64_t
      item_type: struct
      name: Bucket
      pos:
        line_end: 52
        line_start: 36
        source_file: /src/pdns/pdns/histogram.hh
    - fields:
      - name: d_name
        type: std::string
      - name: d_boundary
        type: uint64_t
      - name: d_count
        type: stat_t
      item_type: struct
      name: AtomicBucket
      pos:
        line_end: 66
        line_start: 54
        source_file: /src/pdns/pdns/histogram.hh
    - fields:
      - name: d_name
        type: std::string
      - name: d_boundary
        type: uint64_t
      - name: d_count
        type: uint64_t
      item_type: struct
      name: Bucket
      pos:
        line_end: 52
        line_start: 36
        source_file: /src/pdns/pdns/histogram.hh
    - fields:
      - name: d_name
        type: std::string
      - name: d_boundary
        type: uint64_t
      - name: d_count
        type: stat_t
      item_type: struct
      name: AtomicBucket
      pos:
        line_end: 66
        line_start: 54
        source_file: /src/pdns/pdns/histogram.hh
    typedefs: []
    union: []
- function_names: []
  source_file: /src/pdns/pdns/stubresolver.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - pdns::views::UnsignedCharView::UnsignedCharView
  - pdns::views::UnsignedCharView::UnsignedCharView
  - '& at(size_type pos) const'
  - '& operator[](size_type pos) const'
  - pdns::views::UnsignedCharView::data
  - pdns::views::UnsignedCharView::size
  - pdns::views::UnsignedCharView::length
  - pdns::views::UnsignedCharView::UnsignedCharView
  - pdns::views::UnsignedCharView::UnsignedCharView
  - '& at(size_type pos) const'
  - '& operator[](size_type pos) const'
  - pdns::views::UnsignedCharView::data
  - pdns::views::UnsignedCharView::size
  - pdns::views::UnsignedCharView::length
  source_file: /src/pdns/pdns/views.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - purgeAuthCaches
  - purgeAuthCaches
  - purgeAuthCachesExact
  source_file: /src/pdns/pdns/auth-caches.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - P11KitAttribute::Init
  - P11KitAttribute::P11KitAttribute
  - P11KitAttribute::P11KitAttribute
  - P11KitAttribute::P11KitAttribute
  - P11KitAttribute::P11KitAttribute
  - P11KitAttribute::valueType
  - '&str() const'
  - P11KitAttribute::byte
  - P11KitAttribute::ulong
  - P11KitAttribute::setString
  - P11KitAttribute::setByte
  - P11KitAttribute::setByte
  - P11KitAttribute::setLong
  - P11KitAttribute::allocate
  - P11KitAttribute::commit
  - P11KitAttribute::wattr
  - P11KitAttribute::rattr
  - Pkcs11Slot::logError
  - Pkcs11Slot::Pkcs11Slot
  - Pkcs11Slot::Login
  - Pkcs11Slot::Relogin
  - Pkcs11Slot::LoggedIn
  - '& Session()'
  - Pkcs11Slot::f
  - Pkcs11Token::logError
  - Pkcs11Token::ecparam2bits
  - Pkcs11Token::Login
  - Pkcs11Token::LoggedIn
  - Pkcs11Token::LoadAttributes
  - Pkcs11Token::GenerateKeyPair
  - Pkcs11Token::Sign
  - Pkcs11Token::Verify
  - Pkcs11Token::Digest
  - Pkcs11Token::DigestInit
  - Pkcs11Token::DigestUpdate
  - Pkcs11Token::DigestFinal
  - Pkcs11Token::FindObjects2
  - Pkcs11Token::GetAttributeValue2
  - '& Modulus()'
  - '& Exponent()'
  - '& ECPoint()'
  - '& ECParameters()'
  - Pkcs11Token::KeyType
  - Pkcs11Token::Bits
  - Pkcs11Slot::HuntSlot
  - Pkcs11Slot::GetSlot
  - Pkcs11Token::GetToken
  - Pkcs11Token::Pkcs11Token
  - Pkcs11Token::~Pkcs11Token()
  - PKCS11ModuleSlotLogin
  - PKCS11DNSCryptoKeyEngine::PKCS11DNSCryptoKeyEngine
  - PKCS11DNSCryptoKeyEngine::~PKCS11DNSCryptoKeyEngine()
  - PKCS11DNSCryptoKeyEngine::PKCS11DNSCryptoKeyEngine
  - PKCS11DNSCryptoKeyEngine::create
  - PKCS11DNSCryptoKeyEngine::sign
  - PKCS11DNSCryptoKeyEngine::hash
  - PKCS11DNSCryptoKeyEngine::verify
  - PKCS11DNSCryptoKeyEngine::getPublicKeyString
  - PKCS11DNSCryptoKeyEngine::getBits
  - PKCS11DNSCryptoKeyEngine::convertToISCVector
  - PKCS11DNSCryptoKeyEngine::fromISCMap
  - PKCS11DNSCryptoKeyEngine::maker
  - LoaderStruct
  - ~LoaderStruct()
  - LoaderStruct
  - ~LoaderStruct()
  source_file: /src/pdns/pdns/pkcs11signers.cc
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields: []
      item_type: struct
      name: LoaderStruct
      pos:
        line_end: 1060
        line_start: 1043
        source_file: /src/pdns/pdns/pkcs11signers.cc
    - fields: []
      item_type: struct
      name: LoaderStruct
      pos:
        line_end: 1060
        line_start: 1043
        source_file: /src/pdns/pdns/pkcs11signers.cc
    typedefs: []
    union: []
- function_names:
  - PacketHandler::tkeyHandler
  source_file: /src/pdns/pdns/tkey.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - syslogFmt
  - handleOutsideUDPPacket
  - handleInsideUDPPacket
  - expireOldNotifications
  - daemonize
  - usage
  - main
  source_file: /src/pdns/pdns/nproxy.cc
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: source
        type: ComboAddress
      - name: resentTime
        type: time_t
      - name: domain
        type: DNSName
      - name: origID
        type: uint16_t
      - name: origSocket
        type: int
      item_type: struct
      name: NotificationInFlight
      pos:
        line_end: 65
        line_start: 58
        source_file: /src/pdns/pdns/nproxy.cc
    typedefs:
    - item_type: typedef
      name: nifs_t
      pos:
        line_end: 67
        line_start: 67
        source_file: /src/pdns/pdns/nproxy.cc
      type: map
    union: []
- function_names: []
  source_file: /src/pdns/pdns/secpoll.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/pdns/pdns/ws-auth.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - compilerVersion
  - productName
  - getPDNSVersion
  - productTypeApiType
  - getProductVersionLines
  - getProductVersion
  - getBuildConfiguration
  - double_escape
  - escape_quotes
  - fullVersionString
  - versionSetProduct
  - versionGetProduct
  source_file: /src/pdns/pdns/version.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - usage
  - main
  source_file: /src/pdns/pdns/dnsscan.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - LLVMFuzzerTestOneInput
  source_file: /src/pdns/pdns/fuzz_proxyprotocol.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - SvcParam::SvcParam
  - operator==(const SvcParamKey& key) const
  - SvcParam::getKey
  - SvcParam::getAutoHint
  - SvcParam::setAutoHint
  source_file: /src/pdns/pdns/svc-records.hh
  types:
    enum:
    - enumerators:
      - name: mandatory
        value: '0'
      - name: ipv4hint
        value: '4'
      - name: port
        value: '3'
      - name: alpn
        value: '1'
      - name: no_default_alpn
        value: '2'
      - name: ech
        value: '5'
      - name: ipv6hint
        value: '6'
      - name: dohpath
        value: '7'
      - name: ohttp
        value: '8'
      - name: tls_supported_groups
        value: '9'
      item_type: enum
      name: SvcParamKey
      pos:
        line_end: 46
        line_start: 30
        source_file: /src/pdns/pdns/svc-records.hh
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - DynListener::~DynListener()
  - DynListener::createSocketAndBind
  - DynListener::testLive
  - DynListener::listenOnUnixDomain
  - DynListener::listenOnTCP
  - DynListener::DynListener
  - DynListener::DynListener
  - DynListener::go
  - DynListener::getLine
  - DynListener::sendlines
  - DynListener::registerExitFunc
  - DynListener::registerFunc
  - DynListener::registerRestFunc
  - DynListener::theListener
  - DynListener::getHelp
  source_file: /src/pdns/pdns/dynlistener.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - LocalStateHolder::LocalStateHolder
  - '* operator->()'
  - '& operator*()'
  - '& get(bool allowedOutdated = false)'
  - LocalStateHolder::reset
  - GlobalStateHolder::GlobalStateHolder
  - GlobalStateHolder::getLocal
  - GlobalStateHolder::setState
  - GlobalStateHolder::setState
  - GlobalStateHolder::getCopy
  - GlobalStateHolder::modify
  - GlobalStateHolder::getGeneration
  - GlobalStateHolder::getState
  source_file: /src/pdns/pdns/sholder.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - ixfrdistStats::getStats
  source_file: /src/pdns/pdns/ixfrdist-stats.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/pdns/pdns/base64.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - openssl_pthreads_locking_callback
  - openssl_pthreads_id_callback
  - openssl_thread_setup
  - openssl_thread_cleanup
  - RSA_get0_key
  - RSA_set0_key
  - RSA_get0_factors
  - RSA_set0_factors
  - RSA_get0_crt_params
  - RSA_set0_crt_params
  - ECDSA_SIG_get0
  - ECDSA_SIG_set0
  - openssl_thread_setup
  - openssl_thread_cleanup
  - openssl_seed
  - mapToBN
  - OpenSSLRSADNSCryptoKeyEngine::getName
  - OpenSSLRSADNSCryptoKeyEngine::maker
  - OpenSSLRSADNSCryptoKeyEngine::OpenSSLRSADNSCryptoKeyEngine
  - OpenSSLRSADNSCryptoKeyEngine::getBits
  - OpenSSLRSADNSCryptoKeyEngine::create
  - OpenSSLRSADNSCryptoKeyEngine::createFromPEMFile
  - OpenSSLRSADNSCryptoKeyEngine::convertToPEMFile
  - OpenSSLRSADNSCryptoKeyEngine::getKeyParamModulus
  - OpenSSLRSADNSCryptoKeyEngine::getKeyParamPublicExponent
  - OpenSSLRSADNSCryptoKeyEngine::getKeyParamPrivateExponent
  - OpenSSLRSADNSCryptoKeyEngine::getKeyParamPrime1
  - OpenSSLRSADNSCryptoKeyEngine::getKeyParamPrime2
  - OpenSSLRSADNSCryptoKeyEngine::getKeyParamDmp1
  - OpenSSLRSADNSCryptoKeyEngine::getKeyParamDmq1
  - OpenSSLRSADNSCryptoKeyEngine::getKeyParamIqmp
  - OpenSSLRSADNSCryptoKeyEngine::makeKeyParams
  - OpenSSLRSADNSCryptoKeyEngine::convertToISCVector
  - OpenSSLRSADNSCryptoKeyEngine::hashSize
  - OpenSSLRSADNSCryptoKeyEngine::hasher
  - OpenSSLRSADNSCryptoKeyEngine::hash
  - OpenSSLRSADNSCryptoKeyEngine::hashSizeToKind
  - OpenSSLRSADNSCryptoKeyEngine::sign
  - OpenSSLRSADNSCryptoKeyEngine::verify
  - OpenSSLRSADNSCryptoKeyEngine::getPublicKeyString
  - OpenSSLRSADNSCryptoKeyEngine::fromISCMap
  - OpenSSLRSADNSCryptoKeyEngine::fromPublicKeyString
  - OpenSSLECDSADNSCryptoKeyEngine::getName
  - OpenSSLECDSADNSCryptoKeyEngine::maker
  - OpenSSLECDSADNSCryptoKeyEngine::getBits
  - OpenSSLECDSADNSCryptoKeyEngine::OpenSSLECDSADNSCryptoKeyEngine
  - OpenSSLECDSADNSCryptoKeyEngine::create
  - OpenSSLECDSADNSCryptoKeyEngine::createFromPEMFile
  - OpenSSLECDSADNSCryptoKeyEngine::convertToPEMFile
  - OpenSSLECDSADNSCryptoKeyEngine::getPrivateKey
  - OpenSSLECDSADNSCryptoKeyEngine::convertToISCVector
  - OpenSSLECDSADNSCryptoKeyEngine::hash
  - OpenSSLECDSADNSCryptoKeyEngine::hasher
  - OpenSSLECDSADNSCryptoKeyEngine::hashSize
  - OpenSSLECDSADNSCryptoKeyEngine::sign
  - OpenSSLECDSADNSCryptoKeyEngine::verify
  - OpenSSLECDSADNSCryptoKeyEngine::getPublicKeyString
  - OpenSSLECDSADNSCryptoKeyEngine::makeKeyParams
  - OpenSSLECDSADNSCryptoKeyEngine::fromISCMap
  - OpenSSLECDSADNSCryptoKeyEngine::checkKey
  - OpenSSLECDSADNSCryptoKeyEngine::fromPublicKeyString
  - OpenSSLEDDSADNSCryptoKeyEngine::getName
  - OpenSSLEDDSADNSCryptoKeyEngine::maker
  - OpenSSLEDDSADNSCryptoKeyEngine::OpenSSLEDDSADNSCryptoKeyEngine
  - OpenSSLEDDSADNSCryptoKeyEngine::getBits
  - OpenSSLEDDSADNSCryptoKeyEngine::checkKey
  - OpenSSLEDDSADNSCryptoKeyEngine::create
  - OpenSSLEDDSADNSCryptoKeyEngine::createFromPEMFile
  - OpenSSLEDDSADNSCryptoKeyEngine::convertToPEMFile
  - OpenSSLEDDSADNSCryptoKeyEngine::convertToISCVector
  - OpenSSLEDDSADNSCryptoKeyEngine::sign
  - OpenSSLEDDSADNSCryptoKeyEngine::verify
  - OpenSSLEDDSADNSCryptoKeyEngine::getPublicKeyString
  - OpenSSLEDDSADNSCryptoKeyEngine::fromISCMap
  - OpenSSLEDDSADNSCryptoKeyEngine::fromPublicKeyString
  - LoaderStruct
  - LoaderStruct
  source_file: /src/pdns/pdns/opensslsigners.cc
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields: []
      item_type: struct
      name: LoaderStruct
      pos:
        line_end: 2070
        line_start: 2051
        source_file: /src/pdns/pdns/opensslsigners.cc
    - fields: []
      item_type: struct
      name: LoaderStruct
      pos:
        line_end: 2070
        line_start: 2051
        source_file: /src/pdns/pdns/opensslsigners.cc
    typedefs: []
    union: []
- function_names:
  - GssName::GssName
  - GssName::GssName
  - GssName::setName
  - GssName::setName
  - ~GssName()
  - operator==(const GssName& rhs)
  - operator==(const GssName& /* rhs */)
  - GssName::match
  - GssName::match
  - GssName::valid
  - '& getLabel()'
  - GssContext::getErrorStrings
  source_file: /src/pdns/pdns/gss_context.hh
  types:
    enum:
    - enumerators:
      - name: GSS_CONTEXT_NO_ERROR
      - name: GSS_CONTEXT_UNSUPPORTED
      - name: GSS_CONTEXT_NOT_FOUND
      - name: GSS_CONTEXT_INVALID
      - name: GSS_CONTEXT_NOT_INITIALIZED
      - name: GSS_CONTEXT_EXPIRED
      - name: GSS_CONTEXT_ALREADY_INITIALIZED
      - name: GSS_CONTEXT_LIMIT_REACHED
      item_type: enum
      name: GssContextError
      pos:
        line_end: 50
        line_start: 40
        source_file: /src/pdns/pdns/gss_context.hh
    - enumerators:
      - name: GSS_CONTEXT_NONE
      - name: GSS_CONTEXT_INIT
      - name: GSS_CONTEXT_ACCEPT
      item_type: enum
      name: GssContextType
      pos:
        line_end: 58
        line_start: 53
        source_file: /src/pdns/pdns/gss_context.hh
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - lthread
  - BOOST_AUTO_TEST_CASE
  source_file: /src/pdns/pdns/test-lock_hh.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/pdns/pdns/opensslsigners.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - swapElements
  - QType::isSupportedType
  - QType::isMetadataType
  - QType::toString
  - QType::chartocode
  - '&QType::operator=(const char *p)'
  - '&QType::operator=(const string &s)'
  - QClass::QClass
  - QClass::toString
  source_file: /src/pdns/pdns/qtype.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - BOOST_AUTO_TEST_CASE
  source_file: /src/pdns/pdns/test-dnsparser_hh.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - pdns::GlobalCounters::subscribe
  - pdns::GlobalCounters::unsubscribe
  - pdns::GlobalCounters::reset
  - pdns::TLocalCounters::TLocalCounters
  - ~TLocalCounters()
  - pdns::TLocalCounters::TLocalCounters
  - pdns::TLocalCounters::TLocalCounters
  - '& operator=(const TLocalCounters&)'
  - '& operator=(TLocalCounters&&)'
  - pdns::TLocalCounters::at
  - pdns::TLocalCounters::snapAt
  - pdns::TLocalCounters::getSnap
  - pdns::TLocalCounters::updateSnap
  - pdns::TLocalCounters::updateSnap
  - pdns::GlobalCounters<Counters>::sum
  - pdns::GlobalCounters<Counters>::avg
  - pdns::GlobalCounters<Counters>::max
  - pdns::GlobalCounters<Counters>::aggregatedSnap
  - pdns::GlobalCounters::subscribe
  - pdns::GlobalCounters::unsubscribe
  - pdns::GlobalCounters::reset
  - pdns::TLocalCounters::TLocalCounters
  - ~TLocalCounters()
  - pdns::TLocalCounters::TLocalCounters
  - pdns::TLocalCounters::TLocalCounters
  - '& operator=(const TLocalCounters&)'
  - '& operator=(TLocalCounters&&)'
  - pdns::TLocalCounters::at
  - pdns::TLocalCounters::snapAt
  - pdns::TLocalCounters::getSnap
  - pdns::TLocalCounters::updateSnap
  - pdns::TLocalCounters::updateSnap
  - pdns::GlobalCounters<Counters>::sum
  - pdns::GlobalCounters<Counters>::avg
  - pdns::GlobalCounters<Counters>::max
  - pdns::GlobalCounters<Counters>::aggregatedSnap
  source_file: /src/pdns/pdns/tcounters.hh
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: d_instances
        type: std::set<TLocalCounters<Counters>*>
      - name: d_history
        type: Counters
      item_type: struct
      name: Guarded
      pos:
        line_end: 120
        line_start: 113
        source_file: /src/pdns/pdns/tcounters.hh
    - fields:
      - name: d_instances
        type: std::set<TLocalCounters<Counters>*>
      - name: d_history
        type: Counters
      item_type: struct
      name: Guarded
      pos:
        line_end: 120
        line_start: 113
        source_file: /src/pdns/pdns/tcounters.hh
    typedefs: []
    union: []
- function_names:
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  source_file: /src/pdns/pdns/test-digests_hh.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - DNSSEC::keyTypeToString
  - DNSSEC::shorthand2algorithm
  - DNSSEC::algorithm2name
  source_file: /src/pdns/pdns/dnssec.hh
  types:
    enum:
    - enumerators:
      - name: KSK
      - name: ZSK
      - name: CSK
      item_type: enum
      name: keytype_t
      pos:
        line_end: 34
        line_start: 29
        source_file: /src/pdns/pdns/dnssec.hh
    - enumerators:
      - name: RSAMD5
        value: '1'
      - name: DH
        value: '2'
      - name: DSA
        value: '3'
      - name: RSASHA1
        value: '5'
      - name: DSANSEC3SHA1
        value: '6'
      - name: RSASHA1NSEC3SHA1
        value: '7'
      - name: RSASHA256
        value: '8'
      - name: RSASHA512
        value: '10'
      - name: ECCGOST
        value: '12'
      - name: ECDSA256
        value: '13'
      - name: ED25519
        value: '15'
      - name: ED448
        value: '16'
      - name: ECDSA384
        value: '14'
      item_type: enum
      name: keyalgorithm_t
      pos:
        line_end: 50
        line_start: 35
        source_file: /src/pdns/pdns/dnssec.hh
    - enumerators:
      - name: DIGEST_SHA1
        value: '1'
      - name: DIGEST_SHA256
        value: '2'
      - name: DIGEST_GOST
        value: '3'
      - name: DIGEST_SHA384
        value: '4'
      item_type: enum
      name: dsdigestalgorithm_t
      pos:
        line_end: 58
        line_start: 52
        source_file: /src/pdns/pdns/dnssec.hh
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - getALPNVector
  - shouldDoVerboseLogging
  - shouldDoVerboseLogging
  - OpenSSLFrontendContext::OpenSSLFrontendContext
  - OpenSSLFrontendContext::cleanup
  - sni_server_name_callback
  - OpenSSLSession::OpenSSLSession
  - OpenSSLSession::getNative
  - handleIORequest
  - OpenSSLTLSConnection::OpenSSLTLSConnection
  - OpenSSLTLSConnection::OpenSSLTLSConnection
  - OpenSSLTLSConnection::getAsyncFDs
  - OpenSSLTLSConnection::convertIORequestToIOState
  - ''
  - tryConnect
  - connect
  - tryHandshake
  - doHandshake
  - tryWrite
  - tryRead
  - read
  - write
  - isUsable
  - close
  - getServerNameIndication
  - getNextProtocol
  - getVerifyResult
  - getTLSVersion
  - hasSessionBeenResumed
  - getSessions
  - setSession
  - addNewTicket
  - enableKTLS
  - isClient
  - generateConnectionIndexIfNeeded
  - getConnectionIndex
  - Private
  - createServerSideContext
  - createClientSideContext
  - OpenSSLTLSIOCtx
  - OpenSSLTLSIOCtx
  - OpenSSLTLSIOCtx
  - OpenSSLTLSIOCtx
  - '& operator=(const OpenSSLTLSIOCtx&)'
  - '& operator=(OpenSSLTLSIOCtx&&)'
  - ~OpenSSLTLSIOCtx() override
  - ticketKeyCb
  - ocspStaplingCb
  - newTicketFromServerCb
  - getOpenSSLContext
  - getConnection
  - getClientConnection
  - rotateTicketsKey
  - loadTicketsKeys
  - loadTicketsKey
  - getTicketsKeysCount
  - getName
  - isServerContext
  - alpnServerSelectCallback
  - safe_memory_lock
  - safe_memory_release
  - GnuTLSTicketsKey::GnuTLSTicketsKey
  - GnuTLSTicketsKey::GnuTLSTicketsKey
  - GnuTLSTicketsKey::GnuTLSTicketsKey
  - GnuTLSTicketsKey::content
  - ~GnuTLSTicketsKey()
  - '& getKey() const'
  - GnuTLSSession::GnuTLSSession
  - ~GnuTLSSession() override
  - '& getNative()'
  - GnuTLSConnection
  - GnuTLSConnection
  - newTicketFromServerCb
  - tryConnect
  - connect
  - doHandshake
  - tryHandshake
  - tryWrite
  - tryRead
  - read
  - write
  - isUsable
  - getServerNameIndication
  - getNextProtocol
  - getTLSVersion
  - getVerifyResult
  - hasSessionBeenResumed
  - getSessions
  - setSession
  - close
  - setALPNProtos
  - getAsyncFDs
  - GnuTLSIOCtx::GnuTLSIOCtx
  - GnuTLSIOCtx::GnuTLSIOCtx
  - ~GnuTLSIOCtx() override
  - GnuTLSIOCtx::getConnection
  - GnuTLSIOCtx::getPerThreadCredentials
  - GnuTLSIOCtx::getClientConnection
  - GnuTLSIOCtx::addTicketsKey
  - GnuTLSIOCtx::rotateTicketsKey
  - GnuTLSIOCtx::loadTicketsKey
  - GnuTLSIOCtx::loadTicketsKeys
  - GnuTLSIOCtx::getTicketsKeysCount
  - GnuTLSIOCtx::getName
  - TLSFrontend
  - getTLSContext
  source_file: /src/pdns/pdns/tcpiohandler.cc
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields: []
      item_type: struct
      name: Private
      pos:
        line_end: 698
        line_start: 695
        source_file: /src/pdns/pdns/tcpiohandler.cc
    typedefs: []
    union: []
- function_names:
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  source_file: /src/pdns/pdns/test-dnsparser_cc.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - makeTSIGKey
  source_file: /src/pdns/pdns/tsigutils.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  source_file: /src/pdns/pdns/test-trusted-notification-proxy_cc.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - pdns::trace::AnyValue::encode
  - pdns::trace::AnyValue::decode
  - pdns::trace::AnyValue::toLogString
  - pdns::trace::EntityRef::encode
  - pdns::trace::EntityRef::decode
  - pdns::trace::KeyValue::encode
  - pdns::trace::Resource::encode
  - pdns::trace::Resource::decode
  - pdns::trace::InstrumentationScope::encode
  - pdns::trace::InstrumentationScope::decode
  - pdns::trace::Status::encode
  - pdns::trace::Status::decode
  - Span::Event::encode(protozero::pbf_writer& writer) const
  - Span::Event::decode(protozero::pbf_reader& reader)
  - Span::Link::encode(protozero::pbf_writer& writer) const
  - Span::Link::decode(protozero::pbf_reader& reader)
  - pdns::trace::Span::encode
  - pdns::trace::Span::decode
  - pdns::trace::ScopeSpans::encode
  - pdns::trace::ScopeSpans::decode
  - pdns::trace::ResourceSpans::encode
  - pdns::trace::ResourceSpans::decode
  - pdns::trace::TracesData::encode
  - pdns::trace::TracesData::decode
  - pdns::trace::KeyValue::decode
  - pdns::trace::extractOTraceIDs
  - pdns::trace::extractOTraceIDs
  - pdns::trace::SpanID::toLogString
  - pdns::trace::TraceID::toLogString
  - pdns::trace::AnyValue::encode
  - pdns::trace::AnyValue::decode
  - pdns::trace::AnyValue::toLogString
  - pdns::trace::EntityRef::encode
  - pdns::trace::EntityRef::decode
  - pdns::trace::KeyValue::encode
  - pdns::trace::Resource::encode
  - pdns::trace::Resource::decode
  - pdns::trace::InstrumentationScope::encode
  - pdns::trace::InstrumentationScope::decode
  - pdns::trace::Status::encode
  - pdns::trace::Status::decode
  - Span::Event::encode(protozero::pbf_writer& writer) const
  - Span::Event::decode(protozero::pbf_reader& reader)
  - Span::Link::encode(protozero::pbf_writer& writer) const
  - Span::Link::decode(protozero::pbf_reader& reader)
  - pdns::trace::Span::encode
  - pdns::trace::Span::decode
  - pdns::trace::ScopeSpans::encode
  - pdns::trace::ScopeSpans::decode
  - pdns::trace::ResourceSpans::encode
  - pdns::trace::ResourceSpans::decode
  - pdns::trace::TracesData::encode
  - pdns::trace::TracesData::decode
  - pdns::trace::KeyValue::decode
  - pdns::trace::extractOTraceIDs
  - pdns::trace::extractOTraceIDs
  - pdns::trace::SpanID::toLogString
  - pdns::trace::TraceID::toLogString
  source_file: /src/pdns/pdns/protozero-trace.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - openssl_pthreads_locking_callback
  - openssl_pthreads_id_callback
  - openssl_thread_setup
  - openssl_thread_cleanup
  - registerOpenSSLUser
  - unregisterOpenSSLUser
  - libssl_load_provider
  - libssl_load_engine
  - libssl_get_ticket_key_callback_data
  - libssl_set_ticket_key_callback_data
  - libssl_ticket_key_callback
  - libssl_server_name_callback
  - libssl_info_callback
  - libssl_set_error_counters_callback
  - libssl_ocsp_stapling_callback
  - libssl_validate_ocsp_response
  - libssl_load_ocsp_responses
  - libssl_generate_ocsp_response
  - libssl_get_last_key_type
  - operator()(STACK_OF(GENERAL_NAME)* ptr) const noexcept
  - get_names_from_certificate
  - get_names_from_last_certificate
  - libssl_tls_version_from_string
  - libssl_tls_version_to_string
  - libssl_set_min_tls_version
  - OpenSSLTLSTicketKeysRing::OpenSSLTLSTicketKeysRing
  - OpenSSLTLSTicketKeysRing::~OpenSSLTLSTicketKeysRing()
  - OpenSSLTLSTicketKeysRing::addKey
  - OpenSSLTLSTicketKeysRing::getEncryptionKey
  - OpenSSLTLSTicketKeysRing::getDecryptionKey
  - OpenSSLTLSTicketKeysRing::getKeysCount
  - OpenSSLTLSTicketKeysRing::loadTicketsKeys
  - OpenSSLTLSTicketKeysRing::loadTicketsKey
  - OpenSSLTLSTicketKeysRing::rotateTicketsKey
  - OpenSSLTLSTicketKey::OpenSSLTLSTicketKey
  - OpenSSLTLSTicketKey::OpenSSLTLSTicketKey
  - OpenSSLTLSTicketKey::OpenSSLTLSTicketKey
  - OpenSSLTLSTicketKey::~OpenSSLTLSTicketKey()
  - OpenSSLTLSTicketKey::nameMatches
  - OpenSSLTLSTicketKey::content
  - OpenSSLTLSTicketKey::encrypt
  - OpenSSLTLSTicketKey::decrypt
  - getNewServerContext
  - mergeNewCertificateAndKey
  - libssl_init_server_context_no_sni
  - libssl_init_server_context
  - libssl_key_log_file_callback
  - libssl_set_key_log_file
  - libssl_set_alpn_select_callback
  - libssl_set_alpn_protos
  - libssl_get_error_string
  source_file: /src/pdns/pdns/libssl.cc
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: DNSDIST_ENABLE_LIBSSL_ENGINE
      pos:
        line_end: 17
        line_start: 16
        source_file: /src/pdns/pdns/libssl.cc
      type_or_value: '1'
    structs:
    - fields: []
      item_type: struct
      name: StackOfNamesDeleter
      pos:
        line_end: 554
        line_start: 549
        source_file: /src/pdns/pdns/libssl.cc
    typedefs: []
    union: []
- function_names:
  - TCPNameserver::go
  - readnWithTimeout
  - writenWithTimeout
  - TCPNameserver::sendPacket
  - TCPNameserver::getQuestion
  - maxConnectionDurationReached
  - TCPNameserver::decrementClientCount
  - TCPNameserver::doConnection
  - TCPNameserver::canDoAXFR
  - getFreshAXFRPacket
  - getFreshAXFRPacket
  - TCPNameserver::doAXFR
  - TCPNameserver::doIXFR
  - TCPNameserver::~TCPNameserver()
  - TCPNameserver::TCPNameserver
  - TCPNameserver::thread
  - TCPNameserver::numTCPConnections
  source_file: /src/pdns/pdns/tcpreceiver.cc
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: d_set
        type: NSECBitmap
      - name: d_ttl
        type: unsigned int
      - name: d_auth
        type: bool
      item_type: struct
      name: NSECXEntry
      pos:
        line_end: 626
        line_start: 621
        source_file: /src/pdns/pdns/tcpreceiver.cc
    - fields:
      - name: d_set
        type: NSECBitmap
      - name: d_ttl
        type: unsigned int
      - name: d_auth
        type: bool
      item_type: struct
      name: NSECXEntry
      pos:
        line_end: 626
        line_start: 621
        source_file: /src/pdns/pdns/tcpreceiver.cc
    typedefs: []
    union: []
- function_names:
  - testZoneMD
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  source_file: /src/pdns/pdns/test-zonemd_cc.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - ConcurrentConnectionManager::ConcurrentConnectionManager
  - ConcurrentConnectionManager::setMaxConcurrentConnections
  - ConcurrentConnectionManager::getMaxConcurrentConnections
  - ConcurrentConnectionManager::registerConnection
  - ConcurrentConnectionManager::releaseConnection
  source_file: /src/pdns/pdns/connection-management.hh
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: d_maxConcurrentConnections
        type: size_t
      - name: d_currentConnectionsCount
        type: size_t
      item_type: struct
      name: Data
      pos:
        line_end: 63
        line_start: 59
        source_file: /src/pdns/pdns/connection-management.hh
    typedefs: []
    union: []
- function_names:
  - CommunicatorClass::retrievalLoopThread
  - CommunicatorClass::loadArgsIntoSet
  - CommunicatorClass::go
  - CommunicatorClass::mainloop
  source_file: /src/pdns/pdns/communicator.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - FrameStreamLogger::FrameStreamLogger
  - FrameStreamLogger::FrameStreamLogger
  - '& operator=(const FrameStreamLogger&)'
  - '& operator=(FrameStreamLogger&&)'
  - FrameStreamLogger::address
  - FrameStreamLogger::name
  - FrameStreamLogger::toString
  - FrameStreamLogger::getStats
  - FrameStreamLogger::FrameStreamLogger
  - FrameStreamLogger::FrameStreamLogger
  - '& operator=(const FrameStreamLogger&)'
  - '& operator=(FrameStreamLogger&&)'
  source_file: /src/pdns/pdns/fstrm_logger.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - StatNode::Stat
  - '& operator+=(const Stat& rhs)'
  - StatNode::empty
  - StatNode::size
  source_file: /src/pdns/pdns/statnode.hh
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: queries
        type: uint64_t
      - name: noerrors
        type: uint64_t
      - name: nxdomains
        type: uint64_t
      - name: servfails
        type: uint64_t
      - name: drops
        type: uint64_t
      - name: bytes
        type: uint64_t
      - name: hits
        type: uint64_t
      - name: remotes
        type: remotes_t
      item_type: struct
      name: Stat
      pos:
        line_end: 57
        line_start: 30
        source_file: /src/pdns/pdns/statnode.hh
    typedefs: []
    union: []
- function_names:
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  source_file: /src/pdns/pdns/test-packetcache_hh.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/pdns/pdns/cdb.hh
  types:
    enum:
    - enumerators:
      - name: SearchSuffix
      - name: SearchKey
      - name: SearchAll
      item_type: enum
      name: SearchType
      pos:
        line_end: 52
        line_start: 52
        source_file: /src/pdns/pdns/cdb.hh
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/pdns/pdns/coverage.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  source_file: /src/pdns/pdns/test-dnsname_cc.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - NSECBitmapGenerator::NSECBitmapGenerator
  - NSECBitmapGenerator::set
  - NSECBitmapGenerator::finish
  - NSECBitmap::toPacket
  - NSECBitmap::fromPacket
  - NSECBitmap::getZoneRepresentation
  - NSECRecordContent::report
  - NSECRecordContent::make
  - NSECRecordContent::NSECRecordContent
  - NSECRecordContent::toPacket
  - NSECRecordContent::make
  - NSECRecordContent::getZoneRepresentation
  - NSEC3RecordContent::report
  - NSEC3RecordContent::make
  - NSEC3RecordContent::NSEC3RecordContent
  - NSEC3RecordContent::toPacket
  - NSEC3RecordContent::make
  - NSEC3RecordContent::getZoneRepresentation
  - NSEC3PARAMRecordContent::report
  - NSEC3PARAMRecordContent::make
  - NSEC3PARAMRecordContent::NSEC3PARAMRecordContent
  - NSEC3PARAMRecordContent::toPacket
  - NSEC3PARAMRecordContent::make
  - NSEC3PARAMRecordContent::getZoneRepresentation
  - CSYNCRecordContent::report
  - CSYNCRecordContent::make
  - CSYNCRecordContent::CSYNCRecordContent
  - CSYNCRecordContent::toPacket
  - CSYNCRecordContent::make
  - CSYNCRecordContent::getZoneRepresentation
  source_file: /src/pdns/pdns/nsecrecords.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - gettime
  - gettime
  source_file: /src/pdns/pdns/gettime.cc
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: CLOCK_MONOTONIC_RAW
      pos:
        line_end: 29
        line_start: 28
        source_file: /src/pdns/pdns/gettime.cc
      type_or_value: CLOCK_MONOTONIC
    structs: []
    typedefs: []
    union: []
- function_names:
  - JsonException::JsonException
  source_file: /src/pdns/pdns/json.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - stringtok
  - rfc1982LessThan
  - rfc1982LessThanOrEqual
  - vstringtok
  - writen2
  - stringerror
  - CPUTime::start
  - CPUTime::ndiff
  - DTime::DTime
  - DTime::DTime
  - '& operator=(const DTime &dt)'
  - DTime::udiffNoReset
  - DTime::setTimeval
  - DTime::getTimeval
  - DTime::time
  - DTime::set
  - DTime::udiff
  - toLowerInPlace
  - toLower
  - toLowerCanonic
  - toUpper
  - getTime
  - unixDie
  - makeFloat
  - uSec
  - operator<(const struct timeval& lhs, const struct timeval& rhs)
  - operator<=(const struct timeval& lhs, const struct timeval& rhs)
  - operator<(const struct timespec& lhs, const struct timespec& rhs)
  - pdns_ilexicographical_compare_three_way
  - pdns_ilexicographical_compare
  - pdns_iequals
  - pdns_iequals_ch
  - operator()(const string& a, const string& b) const
  - operator() (const std::string& lhs, const std::string& rhs) const
  - operator()(const pair<string, uint16_t>& a, const pair<string, uint16_t>& b) const
  - pdns_ci_find
  - isCanonical
  - toCanonic
  - replacing_insert
  - Regex::Regex
  - '& operator=(const Regex&)'
  - Regex::Regex
  - '& operator=(Regex&& rhs)'
  - ~Regex()
  - operator()(regex_t* ptr) const noexcept
  - SimpleMatch::SimpleMatch
  - SimpleMatch::match
  - SimpleMatch::match
  - SimpleMatch::match
  - SimpleMatch::match
  - defTer
  - valueOrEmpty
  - addS
  - addS
  - rplookup
  - pdns::checked_conv
  - pdns::checked_stoi
  - pdns::checked_stoi_nonzero
  - pdns::checked_stoi_into
  - pdns::checked_conv
  - pdns::checked_stoi
  - pdns::checked_stoi_nonzero
  - pdns::checked_stoi_into
  - FDWrapper
  - FDWrapper
  - FDWrapper
  - '& operator=(const FDWrapper& rhs)'
  - ~FDWrapper()
  - FDWrapper
  - '& operator=(FDWrapper&& rhs) noexcept'
  - getHandle
  - operator int() const
  - reset
  - release
  - operator()(FILE* filePtr) const noexcept
  - operator()(FILE* filePtr) const noexcept
  source_file: /src/pdns/pdns/misc.hh
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields: []
      item_type: struct
      name: CIStringCompare
      pos:
        line_end: 436
        line_start: 430
        source_file: /src/pdns/pdns/misc.hh
    - fields: []
      item_type: struct
      name: CIStringComparePOSIX
      pos:
        line_end: 456
        line_start: 438
        source_file: /src/pdns/pdns/misc.hh
    - fields: []
      item_type: struct
      name: CIStringPairCompare
      pos:
        line_end: 468
        line_start: 458
        source_file: /src/pdns/pdns/misc.hh
    - fields: []
      item_type: struct
      name: Deleter
      pos:
        line_end: 536
        line_start: 530
        source_file: /src/pdns/pdns/misc.hh
    - fields:
      - name: content[8]
        type: uint8_t
      item_type: struct
      name: NodeOrLocatorID
      pos:
        line_end: 851
        line_start: 851
        source_file: /src/pdns/pdns/misc.hh
    - fields:
      - name: d_fd
        type: int
      item_type: struct
      name: FDWrapper
      pos:
        line_end: 910
        line_start: 853
        source_file: /src/pdns/pdns/misc.hh
    - fields: []
      item_type: struct
      name: FilePtrDeleter
      pos:
        line_end: 928
        line_start: 916
        source_file: /src/pdns/pdns/misc.hh
    - fields: []
      item_type: struct
      name: FilePtrDeleter
      pos:
        line_end: 928
        line_start: 916
        source_file: /src/pdns/pdns/misc.hh
    typedefs:
    - item_type: typedef
      name: AtomicCounterInner
      pos:
        line_end: 426
        line_start: 426
        source_file: /src/pdns/pdns/misc.hh
      type: unsigned long
    - item_type: typedef
      name: AtomicCounter
      pos:
        line_end: 427
        line_start: 427
        source_file: /src/pdns/pdns/misc.hh
      type: atomic<AtomicCounterInner>
    union:
    - fields:
      - name: hdr
        type: struct cmsghdr
      - name: buf[256]
        type: char
      item_type: union
      name: cmsgbuf_aligned
      pos:
        line_end: 600
        line_start: 600
        source_file: /src/pdns/pdns/misc.hh
- function_names:
  - pdns::ProtoZero::Message::encodeComboAddress(const protozero::pbf_tag_type type,
    const ComboAddress& address)
  - pdns::ProtoZero::Message::encodeNetmask(const protozero::pbf_tag_type type, const
    Netmask& subnet, uint8_t mask)
  - pdns::ProtoZero::Message::encodeDNSName(protozero::pbf_writer& pbf, std::string&
    buffer, const protozero::pbf_tag_type type, const DNSName& name)
  - pdns::ProtoZero::Message::setRequest(const boost::uuids::uuid& uniqueId, const
    ComboAddress& requestor, const ComboAddress& local, const DNSName& qname, uint16_t
    qtype, uint16_t qclass, uint16_t qid, pdns::ProtoZero::Message::TransportProtocol
    proto, size_t len)
  - pdns::ProtoZero::Message::setResponse(const DNSName& qname, uint16_t qtype, uint16_t
    qclass)
  - pdns::ProtoZero::Message::addRRsFromPacket(const char* packet, const size_t len,
    bool includeCNAME)
  - pdns::ProtoZero::Message::addRR(const DNSName& name, uint16_t uType, uint16_t
    uClass, uint32_t uTTL, const std::string& blob)
  source_file: /src/pdns/pdns/protozero.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - nsec3Hash
  - proveOrDeny
  - usage
  - main
  source_file: /src/pdns/pdns/nsec3dig.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs:
    - item_type: typedef
      name: nsec3
      pos:
        line_end: 37
        line_start: 37
        source_file: /src/pdns/pdns/nsec3dig.cc
      type: pair<string,string>
    - item_type: typedef
      name: nsec3set
      pos:
        line_end: 38
        line_start: 38
        source_file: /src/pdns/pdns/nsec3dig.cc
      type: set
    - item_type: typedef
      name: nsec3types
      pos:
        line_end: 39
        line_start: 39
        source_file: /src/pdns/pdns/nsec3dig.cc
      type: map
    union: []
- function_names:
  - usage
  - main
  source_file: /src/pdns/pdns/dnspcap2protobuf.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - AuthQueryCache::size
  - AuthQueryCache::setMaxEntries
  - AuthQueryCache::setSLog
  - AuthQueryCache::MapCombo
  - ~MapCombo()
  - AuthQueryCache::MapCombo
  - '& operator=(const MapCombo &)'
  - '& getMap(const DNSName& qname)'
  source_file: /src/pdns/pdns/auth-querycache.hh
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: qname
        type: DNSName
      - name: drs
        type: vector<DNSZoneRecord>
      - name: ttd
        type: time_t
      - name: qtype
        type: uint16_t
      - name: zoneID
        type: domainid_t
      item_type: struct
      name: CacheEntry
      pos:
        line_end: 75
        line_start: 68
        source_file: /src/pdns/pdns/auth-querycache.hh
    - fields: []
      item_type: struct
      name: HashTag
      pos:
        line_end: 77
        line_start: 77
        source_file: /src/pdns/pdns/auth-querycache.hh
    - fields: []
      item_type: struct
      name: NameTag
      pos:
        line_end: 78
        line_start: 78
        source_file: /src/pdns/pdns/auth-querycache.hh
    - fields: []
      item_type: struct
      name: SequencedTag
      pos:
        line_end: 79
        line_start: 79
        source_file: /src/pdns/pdns/auth-querycache.hh
    - fields:
      - name: reserve(size_t numberOfEntries)
        type: void
      - name: d_map
        type: SharedLockGuarded<cmap_t>
      item_type: struct
      name: MapCombo
      pos:
        line_end: 105
        line_start: 95
        source_file: /src/pdns/pdns/auth-querycache.hh
    typedefs:
    - item_type: typedef
      name: cmap_t
      pos:
        line_end: 92
        line_start: 80
        source_file: /src/pdns/pdns/auth-querycache.hh
      type: multi_index_container
    union: []
- function_names:
  - ZoneParserTNG::disableGenerate
  - ZoneParserTNG::setMaxGenerateSteps
  - ZoneParserTNG::setMaxIncludes
  - ZoneParserTNG::setDefaultTTL
  - ZoneParserTNG::getFileset
  - ZoneParserTNG::filestate
  source_file: /src/pdns/pdns/zoneparser-tng.hh
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*d_fp'
        type: FILE
      - name: d_filename
        type: string
      - name: d_lineno
        type: int
      item_type: struct
      name: filestate
      pos:
        line_end: 73
        line_start: 67
        source_file: /src/pdns/pdns/zoneparser-tng.hh
    typedefs:
    - item_type: typedef
      name: exception
      pos:
        line_end: 38
        line_start: 38
        source_file: /src/pdns/pdns/zoneparser-tng.hh
      type: runtime_error
    - item_type: typedef
      name: parts_t
      pos:
        line_end: 39
        line_start: 39
        source_file: /src/pdns/pdns/zoneparser-tng.hh
      type: deque<pair<string::size_type, string::size_type> >
    union: []
- function_names:
  - printStatus
  - usage
  - turnQueryIntoResponse
  - tcpConnectionHandler
  - tcpAcceptor
  - main
  source_file: /src/pdns/pdns/dumresp.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - arg
  - usage
  - main
  source_file: /src/pdns/pdns/ixplore.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/pdns/pdns/base32.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - ArgvMap::begin
  - ArgvMap::end
  - '& ArgvMap::set(const string& var)'
  - ArgvMap::setDefault
  - ArgvMap::setDefaults
  - ArgvMap::mustDo
  - ArgvMap::list
  - '& ArgvMap::set(const string& var, const string& help)'
  - ArgvMap::setCmd
  - '& ArgvMap::setSwitch(const string& var, const string& help)'
  - ArgvMap::contains
  - ArgvMap::helpstring
  - ArgvMap::formatOne
  - ArgvMap::configstring
  - '& ArgvMap::operator[](const string& arg)'
  - ArgvMap::asMode
  - ArgvMap::asGid
  - ArgvMap::asUid
  - ArgvMap::asNum
  - ArgvMap::isEmpty
  - ArgvMap::asDouble
  - ArgvMap::ArgvMap
  - ArgvMap::parmIsset
  - ArgvMap::warnIfDeprecated
  - ArgvMap::isDeprecated
  - ArgvMap::parseOne
  - '& ArgvMap::getCommands()'
  - ArgvMap::parse
  - ArgvMap::preParse
  - ArgvMap::parseFile
  - ArgvMap::preParseFile
  - ArgvMap::file
  - ArgvMap::file
  - ArgvMap::gatherIncludes
  source_file: /src/pdns/pdns/arguments.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - init
  - LLVMFuzzerTestOneInput
  source_file: /src/pdns/pdns/fuzz_moadnsparser.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - ttl
  - usage
  - nameForClass
  - fillPacket
  - printReply
  - main
  source_file: /src/pdns/pdns/sdig.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/pdns/pdns/dynhandler.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - pdns::shuffle
  - shuffle
  - mapTypesToOrder
  - pdns::orderAndShuffle
  - pdns::dedupRecords
  source_file: /src/pdns/pdns/shuffle.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - main
  source_file: /src/pdns/pdns/kvresp.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/pdns/pdns/ednsextendederror.hh
  types:
    enum:
    - enumerators:
      - name: ForgedAnswer
        value: '4'
      - name: SignatureNotYetValid
        value: '8'
      - name: Censored
        value: '16'
      - name: NSECMissing
        value: '12'
      - name: NotAuthoritative
        value: '20'
      - name: InvalidData
        value: '24'
      - name: TooEarly
        value: '26'
      - name: UnsupportedDSDigestType
        value: '2'
      - name: StaleAnswer
        value: '3'
      - name: SignatureExpired
        value: '7'
      - name: Blocked
        value: '15'
      - name: NoZoneKeyBitSet
        value: '11'
      - name: StaleNXDOMAINAnswer
        value: '19'
      - name: NetworkError
        value: '23'
      - name: SignatureExpiredBeforeValid
        value: '25'
      - name: Synthesized
        value: '29'
      - name: UnsupportedDNSKEYAlgorithm
        value: '1'
      - name: DNSSECBogus
        value: '6'
      - name: RRSIGsMissing
        value: '10'
      - name: NotReady
        value: '14'
      - name: Prohibited
        value: '18'
      - name: NoReachableAuthority
        value: '22'
      - name: UnableToConformToPolicy
        value: '28'
      - name: Other
        value: '0'
      - name: DNSSECIndeterminate
        value: '5'
      - name: DNSKEYMissing
        value: '9'
      - name: Filtered
        value: '17'
      - name: CachedError
        value: '13'
      - name: NotSupported
        value: '21'
      - name: UnsupportedNSEC3IterationsValue
        value: '27'
      item_type: enum
      name: code
      pos:
        line_end: 60
        line_start: 28
        source_file: /src/pdns/pdns/ednsextendederror.hh
    preproc_defs: []
    structs:
    - fields:
      - name: infoCode
        type: uint16_t
      - name: extraText
        type: std::string
      item_type: struct
      name: EDNSExtendedError
      pos:
        line_end: 63
        line_start: 26
        source_file: /src/pdns/pdns/ednsextendederror.hh
    typedefs: []
    union: []
- function_names:
  - ~DevPollFDMultiplexer()
  - DevPollFDMultiplexer::getName
  - makeDevPoll
  - DevPollRegisterOurselves
  - DevPollFDMultiplexer::DevPollFDMultiplexer
  - convertEventKind
  - DevPollFDMultiplexer::addFD
  - DevPollFDMultiplexer::removeFD
  - DevPollFDMultiplexer::getAvailableFDs
  - DevPollFDMultiplexer::run
  - acceptData
  - main
  source_file: /src/pdns/pdns/devpollmplexer.cc
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields: []
      item_type: struct
      name: DevPollRegisterOurselves
      pos:
        line_end: 75
        line_start: 69
        source_file: /src/pdns/pdns/devpollmplexer.cc
    typedefs: []
    union: []
- function_names:
  - ~TLSSession()
  - ~TLSConnection()
  - TLSConnection::setUnknownTicketKey
  - TLSConnection::getUnknownTicketKey
  - TLSConnection::setResumedFromInactiveTicketKey
  - TLSConnection::getResumedFromInactiveTicketKey
  - TLSCtx::TLSCtx
  - ~TLSCtx()
  - TLSCtx::loadTicketsKeys
  - TLSCtx::loadTicketsKey
  - TLSCtx::handleTicketsKeyRotation
  - TLSCtx::getNextTicketsKeyRotation
  - TLSCtx::setTicketsKeyAddedHook
  - '& getTicketsKeyAddedHook()'
  - TLSCtx::hasTicketsKeyAddedHook
  - TLSFrontend::TLSFrontend
  - TLSFrontend::TLSFrontend
  - TLSFrontend::rotateTicketsKey
  - TLSFrontend::loadTicketsKeys
  - TLSFrontend::loadTicketsKey
  - TLSFrontend::getContext
  - TLSFrontend::setParent
  - TLSFrontend::cleanup
  - TLSFrontend::getTicketsKeysCount
  - TLSFrontend::timeToString
  - TLSFrontend::getTicketsKeyRotationDelay
  - TLSFrontend::getNextTicketsKeyRotation
  - TLSFrontend::getRequestedProvider
  - TLSFrontend::getEffectiveProvider
  - TCPIOHandler::TCPIOHandler
  - TCPIOHandler::TCPIOHandler
  - ~TCPIOHandler()
  - TCPIOHandler::close
  - TCPIOHandler::getDescriptor
  - TCPIOHandler::tryConnect
  - TCPIOHandler::connect
  - TCPIOHandler::tryHandshake
  - TCPIOHandler::read
  - TCPIOHandler::tryRead
  - TCPIOHandler::tryWrite
  - TCPIOHandler::write
  - TCPIOHandler::getServerNameIndication
  - TCPIOHandler::getNextProtocol
  - TCPIOHandler::getTLSVersion
  - TCPIOHandler::isTLS
  - TCPIOHandler::getVerifyResult
  - TCPIOHandler::hasTLSSessionBeenResumed
  - TCPIOHandler::getResumedFromInactiveTicketKey
  - TCPIOHandler::getUnknownTicketKey
  - TCPIOHandler::setTLSSession
  - TCPIOHandler::getTLSSessions
  - TCPIOHandler::isUsable
  - TCPIOHandler::getAsyncFDs
  source_file: /src/pdns/pdns/tcpiohandler.hh
  types:
    enum:
    - enumerators:
      - name: Done
      - name: Async
      - name: NeedWrite
      - name: NeedRead
      item_type: enum
      name: IOState
      pos:
        line_end: 12
        line_start: 12
        source_file: /src/pdns/pdns/tcpiohandler.hh
    - enumerators:
      - name: Unset
      - name: DoH
      - name: DoT
      item_type: enum
      name: ALPN
      pos:
        line_end: 144
        line_start: 144
        source_file: /src/pdns/pdns/tcpiohandler.hh
    preproc_defs: []
    structs:
    - fields:
      - name: d_provider
        type: std::string
      - name: d_ciphers
        type: std::string
      - name: d_ciphers13
        type: std::string
      - name: d_caStore
        type: std::string
      - name: d_keyLogFile
        type: std::string
      - name: d_client_certificate
        type: std::string
      - name: d_client_certificate_key
        type: std::string
      - name: d_client_certificate_password
        type: std::string
      - name: d_alpn
        type: TLSFrontend::ALPN
      - name: d_validateCertificates
        type: bool
      - name: d_releaseBuffers
        type: bool
      - name: d_enableRenegotiation
        type: bool
      - name: d_ktls
        type: bool
      item_type: struct
      name: TLSContextParameters
      pos:
        line_end: 608
        line_start: 593
        source_file: /src/pdns/pdns/tcpiohandler.hh
    typedefs: []
    union: []
- function_names:
  - TLSCertKeyPair
  source_file: /src/pdns/pdns/libssl.hh
  types:
    enum:
    - enumerators:
      - name: Unknown
      - name: TLS12
      - name: TLS11
      - name: TLS13
      - name: TLS10
      item_type: enum
      name: LibsslTLSVersion
      pos:
        line_end: 16
        line_start: 16
        source_file: /src/pdns/pdns/libssl.hh
    preproc_defs:
    - item_type: preproc_def
      name: TLS_TICKETS_KEY_NAME_SIZE
      pos:
        line_end: 81
        line_start: 80
        source_file: /src/pdns/pdns/libssl.hh
      type_or_value: (16)
    - item_type: preproc_def
      name: TLS_TICKETS_CIPHER_KEY_SIZE
      pos:
        line_end: 84
        line_start: 83
        source_file: /src/pdns/pdns/libssl.hh
      type_or_value: (32)
    - item_type: preproc_def
      name: TLS_TICKETS_CIPHER_ALGO
      pos:
        line_end: 85
        line_start: 84
        source_file: /src/pdns/pdns/libssl.hh
      type_or_value: (EVP_aes_256_cbc)
    - item_type: preproc_def
      name: TLS_TICKETS_MAC_KEY_SIZE
      pos:
        line_end: 88
        line_start: 87
        source_file: /src/pdns/pdns/libssl.hh
      type_or_value: (32)
    - item_type: preproc_def
      name: TLS_TICKETS_MAC_ALGO
      pos:
        line_end: 89
        line_start: 88
        source_file: /src/pdns/pdns/libssl.hh
      type_or_value: (EVP_sha256)
    structs:
    - fields:
      - name: d_cert
        type: std::string
      - name: d_key
        type: std::optional<std::string>
      - name: d_password
        type: std::optional<std::string>
      item_type: struct
      name: TLSCertKeyPair
      pos:
        line_end: 26
        line_start: 18
        source_file: /src/pdns/pdns/libssl.hh
    - fields:
      - name: d_dhKeyTooSmall
        type: std::atomic<uint64_t>
      - name: d_inappropriateFallBack
        type: std::atomic<uint64_t>
      - name: d_noSharedCipher
        type: std::atomic<uint64_t>
      - name: d_unknownCipherType
        type: std::atomic<uint64_t>
      - name: d_unknownKeyExchangeType
        type: std::atomic<uint64_t>
      - name: d_unknownProtocol
        type: std::atomic<uint64_t>
      - name: d_unsupportedEC
        type: std::atomic<uint64_t>
      - name: d_unsupportedProtocol
        type: std::atomic<uint64_t>
      item_type: struct
      name: TLSErrorCounters
      pos:
        line_end: 71
        line_start: 60
        source_file: /src/pdns/pdns/libssl.hh
    typedefs: []
    union: []
- function_names:
  - operator<(const DNSResourceRecord& other) const
  - dnsheader_aligned::isMemoryAligned
  - dnsheader_aligned::dnsheader_aligned
  - dnsheader_aligned::dnsheader_aligned
  - dnsheader_aligned::dnsheader_aligned
  - '& operator=(const dnsheader_aligned&)'
  - '& operator=(dnsheader_aligned&&)'
  - ~dnsheader_aligned()
  - dnsheader_aligned::get
  - '& operator*() const'
  - '* operator->() const'
  - getFlagsFromDNSHeader
  - getFlagsFromDNSHeader
  source_file: /src/pdns/pdns/dns.hh
  types:
    enum:
    - enumerators:
      - name: NoError
        value: '0'
      - name: ServFail
        value: '2'
      - name: NotImp
        value: '4'
      - name: FormErr
        value: '1'
      - name: NXDomain
        value: '3'
      - name: Refused
        value: '5'
      - name: YXDomain
        value: '6'
      - name: YXRRSet
        value: '7'
      - name: NXRRSet
        value: '8'
      - name: NotAuth
        value: '9'
      - name: NotZone
        value: '10'
      item_type: enum
      name: rcodes_
      pos:
        line_end: 36
        line_start: 36
        source_file: /src/pdns/pdns/dns.hh
    - enumerators:
      - name: BADVERS
        value: '16'
      - name: BADKEY
        value: '17'
      - name: BADSIG
        value: '16'
      - name: BADMODE
        value: '19'
      - name: BADTIME
        value: '18'
      - name: BADNAME
        value: '20'
      - name: BADALG
        value: '21'
      - name: BADTRUNC
        value: '22'
      - name: BADCOOKIE
        value: '23'
      item_type: enum
      name: rcodes_
      pos:
        line_end: 46
        line_start: 46
        source_file: /src/pdns/pdns/dns.hh
    - enumerators:
      - name: Query
        value: '0'
      - name: Notify
        value: '4'
      - name: Update
        value: '5'
      - name: Status
        value: '2'
      - name: IQuery
        value: '1'
      item_type: enum
      name: opcodes_
      pos:
        line_end: 55
        line_start: 55
        source_file: /src/pdns/pdns/dns.hh
    - enumerators:
      - name: QUESTION
        value: '0'
      - name: AUTHORITY
        value: '2'
      - name: ADDITIONAL
        value: '3'
      - name: ANSWER
        value: '1'
      item_type: enum
      name: Place
      pos:
        line_end: 79
        line_start: 73
        source_file: /src/pdns/pdns/dns.hh
    preproc_defs:
    - item_type: preproc_def
      name: GCCPACKATTRIBUTE
      pos:
        line_end: 121
        line_start: 120
        source_file: /src/pdns/pdns/dns.hh
      type_or_value: __attribute__((packed))
    - item_type: preproc_def
      name: DNS_TYPE_SIZE
      pos:
        line_end: 246
        line_start: 245
        source_file: /src/pdns/pdns/dns.hh
      type_or_value: (2)
    - item_type: preproc_def
      name: DNS_CLASS_SIZE
      pos:
        line_end: 247
        line_start: 246
        source_file: /src/pdns/pdns/dns.hh
      type_or_value: (2)
    - item_type: preproc_def
      name: DNS_TTL_SIZE
      pos:
        line_end: 248
        line_start: 247
        source_file: /src/pdns/pdns/dns.hh
      type_or_value: (4)
    - item_type: preproc_def
      name: DNS_RDLENGTH_SIZE
      pos:
        line_end: 249
        line_start: 248
        source_file: /src/pdns/pdns/dns.hh
      type_or_value: (2)
    - item_type: preproc_def
      name: EDNS_EXTENDED_RCODE_SIZE
      pos:
        line_end: 250
        line_start: 249
        source_file: /src/pdns/pdns/dns.hh
      type_or_value: (1)
    - item_type: preproc_def
      name: EDNS_VERSION_SIZE
      pos:
        line_end: 251
        line_start: 250
        source_file: /src/pdns/pdns/dns.hh
      type_or_value: (1)
    - item_type: preproc_def
      name: EDNS_OPTION_CODE_SIZE
      pos:
        line_end: 252
        line_start: 251
        source_file: /src/pdns/pdns/dns.hh
      type_or_value: (2)
    - item_type: preproc_def
      name: EDNS_OPTION_LENGTH_SIZE
      pos:
        line_end: 253
        line_start: 252
        source_file: /src/pdns/pdns/dns.hh
      type_or_value: (2)
    - item_type: preproc_def
      name: FLAGS_RD_OFFSET
      pos:
        line_end: 256
        line_start: 255
        source_file: /src/pdns/pdns/dns.hh
      type_or_value: (8)
    - item_type: preproc_def
      name: FLAGS_CD_OFFSET
      pos:
        line_end: 257
        line_start: 256
        source_file: /src/pdns/pdns/dns.hh
      type_or_value: (12)
    - item_type: preproc_def
      name: FLAGS_RD_OFFSET
      pos:
        line_end: 259
        line_start: 258
        source_file: /src/pdns/pdns/dns.hh
      type_or_value: (0)
    - item_type: preproc_def
      name: FLAGS_CD_OFFSET
      pos:
        line_end: 260
        line_start: 259
        source_file: /src/pdns/pdns/dns.hh
      type_or_value: (12)
    structs:
    - fields:
      - name: d_type
        type: uint16_t
      - name: d_class
        type: uint16_t
      - name: d_ttl
        type: uint32_t
      - name: d_clen
        type: uint16_t
      item_type: struct
      name: dnsrecordheader
      pos:
        line_end: 128
        line_start: 122
        source_file: /src/pdns/pdns/dns.hh
    - fields:
      - name: extRCode
        type: uint8_t
      - name: extFlags
        type: uint16_t
      item_type: struct
      name: EDNS0Record
      pos:
        line_end: 134
        line_start: 130
        source_file: /src/pdns/pdns/dns.hh
    - fields:
      - name: id
        type: uint16_t
      - name: qdcount
        type: uint16_t
      - name: ancount
        type: uint16_t
      - name: nscount
        type: uint16_t
      - name: arcount
        type: uint16_t
      item_type: struct
      name: dnsheader
      pos:
        line_end: 185
        line_start: 151
        source_file: /src/pdns/pdns/dns.hh
    - fields:
      - name: name
        type: DNSName
      - name: secret
        type: string
      item_type: struct
      name: TSIGTriplet
      pos:
        line_end: 268
        line_start: 264
        source_file: /src/pdns/pdns/dns.hh
    typedefs: []
    union: []
- function_names: []
  source_file: /src/pdns/pdns/gettime.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  source_file: /src/pdns/pdns/test-communicator_hh.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - CatalogInfo::parseJson
  - CatalogInfo::fromJson
  - CatalogInfo::toJson
  - CatalogInfo::updateCatalogHash
  - CatalogInfo::getCatalogVersionRecord
  - CatalogInfo::toDNSZoneRecords
  source_file: /src/pdns/pdns/auth-catalogzone.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - vStateIsBogus
  - operator()(const shared_ptr<const DNSKEYRecordContent>& lhs, const shared_ptr<const
    DNSKEYRecordContent>& rhs) const
  - pdns::validation::TooManySEC3IterationsException::TooManySEC3IterationsException
  - pdns::validation::TooManySEC3IterationsException::TooManySEC3IterationsException
  - isTypeDenied
  source_file: /src/pdns/pdns/validate.hh
  types:
    enum:
    - enumerators:
      - name: Secure
      - name: BogusInvalidDenial
      - name: BogusNoRRSIG
      - name: BogusSignatureExpired
      - name: BogusRevokedDNSKEY
      - name: Indeterminate
      - name: NTA
      - name: BogusUnableToGetDSs
      - name: BogusNoValidRRSIG
      - name: BogusUnsupportedDNSKEYAlgo
      - name: TA
      - name: BogusUnableToGetDNSKEYs
      - name: BogusUnsupportedDSDigestType
      - name: BogusMissingNegativeIndication
      - name: Insecure
      - name: BogusNoValidDNSKEY
      - name: BogusSelfSignedDS
      - name: BogusSignatureNotYetValid
      - name: BogusNoZoneKeyBitSet
      - name: BogusInvalidDNSKEYProtocol
      item_type: enum
      name: vState
      pos:
        line_end: 61
        line_start: 39
        source_file: /src/pdns/pdns/validate.hh
    - enumerators:
      - name: NODENIAL
      - name: NXDOMAIN
      - name: NXQTYPE
      - name: ENT
      - name: INCONCLUSIVE
      - name: INSECURE
      - name: OPTOUT
      item_type: enum
      name: dState
      pos:
        line_end: 78
        line_start: 69
        source_file: /src/pdns/pdns/validate.hh
    preproc_defs: []
    structs:
    - fields:
      - name: records
        type: sortedRecords_t
      - name: signatures
        type: vector<shared_ptr<const RRSIGRecordContent>>
      item_type: struct
      name: ContentSigPair
      pos:
        line_end: 88
        line_start: 83
        source_file: /src/pdns/pdns/validate.hh
    - fields: []
      item_type: struct
      name: sharedDNSKeyRecordContentCompare
      pos:
        line_end: 98
        line_start: 92
        source_file: /src/pdns/pdns/validate.hh
    - fields:
      - name: d_nsec3Cache
        type: Nsec3HashesCache
      - name: d_validationsCounter
        type: unsigned int
      - name: d_nsec3IterationsRemainingQuota
        type: unsigned int
      - name: d_limitHit
        type: bool
      item_type: struct
      name: ValidationContext
      pos:
        line_end: 112
        line_start: 106
        source_file: /src/pdns/pdns/validate.hh
    - fields:
      - name: d_nsec3Cache
        type: Nsec3HashesCache
      - name: d_validationsCounter
        type: unsigned int
      - name: d_nsec3IterationsRemainingQuota
        type: unsigned int
      - name: d_limitHit
        type: bool
      item_type: struct
      name: ValidationContext
      pos:
        line_end: 112
        line_start: 106
        source_file: /src/pdns/pdns/validate.hh
    typedefs: []
    union: []
- function_names:
  - BOOST_AUTO_TEST_CASE
  - threadQCMangler
  - threadQCReader
  - BOOST_AUTO_TEST_CASE
  - threadPCMangler
  - threadPCReader
  - BOOST_AUTO_TEST_CASE
  - cacheCleaner
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - feedPacketCache
  - slurpPacketCache
  - BOOST_AUTO_TEST_CASE
  - buildQuery
  - feedPacketCache2
  - queryPacketCache2
  - BOOST_AUTO_TEST_CASE
  source_file: /src/pdns/pdns/test-packetcache_cc.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - DNSCryptoKeyEngine::DNSCryptoKeyEngine
  - ~DNSCryptoKeyEngine()
  - DNSCryptoKeyEngine::createFromPEMFile
  - DNSCryptoKeyEngine::createFromPEMString
  - DNSCryptoKeyEngine::convertToPEMFile
  - DNSCryptoKeyEngine::convertToPEMString
  - DNSCryptoKeyEngine::hash
  - DNSCryptoKeyEngine::getAlgorithm
  - DNSCryptoKeyEngine::checkKey
  - '& getMakers()'
  - '& getAllMakers()'
  - getTag
  - '& getKey() const'
  - setKey
  - setKey
  - getFlags
  - getAlgorithm
  - operator()(const std::string& a, const std::string& b)
  - operator() (const shared_ptr<const DNSRecordContent>& a, const shared_ptr<const
    DNSRecordContent>& b) const
  source_file: /src/pdns/pdns/dnssecinfra.hh
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '& getDNSKEY() const'
        type: DNSKEYRecordContent
      - name: computeDNSKEY()
        type: void
      - name: d_dnskey
        type: DNSKEYRecordContent
      - name: d_key
        type: std::shared_ptr<DNSCryptoKeyEngine>
      - name: d_flags
        type: uint16_t
      - name: d_algorithm
        type: uint8_t
      item_type: struct
      name: DNSSECPrivateKey
      pos:
        line_end: 254
        line_start: 205
        source_file: /src/pdns/pdns/dnssecinfra.hh
    - fields: []
      item_type: struct
      name: CanonicalCompare
      pos:
        line_end: 271
        line_start: 258
        source_file: /src/pdns/pdns/dnssecinfra.hh
    - fields: []
      item_type: struct
      name: sharedDNSSECRecordCompare
      pos:
        line_end: 277
        line_start: 273
        source_file: /src/pdns/pdns/dnssecinfra.hh
    typedefs:
    - item_type: typedef
      name: sortedRecords_t
      pos:
        line_end: 279
        line_start: 279
        source_file: /src/pdns/pdns/dnssecinfra.hh
      type: set<std::shared_ptr<const DNSRecordContent>, sharedDNSSECRecordCompare>
    union: []
- function_names:
  - MallocTracer::getAllocs
  - MallocTracer::getAllocFlux
  - MallocTracer::getTotAllocated
  - MallocTracer::getNumOut
  source_file: /src/pdns/pdns/malloctrace.hh
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: count
        type: int
      - name: sizes
        type: std::map<unsigned int, unsigned int>
      item_type: struct
      name: AllocStats
      pos:
        line_end: 47
        line_start: 43
        source_file: /src/pdns/pdns/malloctrace.hh
    typedefs:
    - item_type: typedef
      name: allocators_t
      pos:
        line_end: 49
        line_start: 48
        source_file: /src/pdns/pdns/malloctrace.hh
      type: "vector<std::pair<MallocTracer::AllocStats, \n\t\t\t\tstd::vector<void*>
        > >"
    union: []
- function_names:
  - BOOST_AUTO_TEST_CASE
  - checkzone
  source_file: /src/pdns/pdns/test-bindparser_cc.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - writen2
  - readn2
  - readn2WithTimeout
  - writen2WithTimeout
  - pdns::getMessageFromErrno
  - pdns::OpenSSL::error(const std::string& errorMessage) -> std::runtime_error
  - pdns::OpenSSL::error(const std::string& componentName, const std::string& errorMessage)
    -> std::runtime_error
  - nowTime
  - waitForData
  - waitForData
  - waitForRWData
  - waitForRWData
  - waitForMultiData
  - humanDuration
  - unquotify
  - stripLine
  - urlEncode
  - getMaxHostNameSize
  - getHostname
  - getCarbonHostName
  - cleanSlashes
  - IpToU32
  - U32ToIP
  - makeHexDump
  - makeBytesFromHex
  - normalizeTV
  - operator+(const struct timeval& lhs, const struct timeval& rhs)
  - operator-(const struct timeval& lhs, const struct timeval& rhs)
  - splitField
  - logFacilityToLOG
  - logFacilityFromString
  - stripDot
  - makeIPv6sockaddr
  - makeIPv4sockaddr
  - makeUNsockaddr
  - stringfgets
  - readFileIfThere
  - Regex::Regex
  - Regex::match
  - Regex::match
  - addCMsgSrcAddr
  - getFilenumLimit
  - setFilenumLimit
  - setSocketTimestamps
  - setTCPNoDelay
  - setNonBlocking
  - setBlocking
  - setReuseAddr
  - setDscp
  - isNonBlocking
  - setReceiveSocketErrors
  - closesocket
  - setCloseOnExec
  - getMACAddress
  - getMACAddress
  - getMACAddress
  - udpErrorStats
  - udp6ErrorStats
  - tcpErrorStats
  - getCPUIOWait
  - getCPUSteal
  - getTSIGHashEnum
  - getTSIGAlgoName
  - getOpenFileDescriptors
  - getRealMemoryUsage
  - getSpecialMemoryUsage
  - getCPUTimeUser
  - getCPUTimeSystem
  - DiffTime
  - DiffTime
  - strToUID
  - strToGID
  - isSettingThreadCPUAffinitySupported
  - mapThreadToCPUList
  - getResolvers
  - getPipeBufferSize
  - setPipeBufferSize
  - reverseNameFromIP
  - makeLuaString
  - parseSVCBValueList
  - constantTimeStringEquals
  - operator()(DIR* dir) const noexcept
  - pdns::visit_directory
  - pdns::openFileForWriting
  - operator()(DIR* dir) const noexcept
  - pdns::visit_directory
  - pdns::openFileForWriting
  - timestamp
  source_file: /src/pdns/pdns/misc.cc
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: cpu_set_t
      pos:
        line_end: 1587
        line_start: 1586
        source_file: /src/pdns/pdns/misc.cc
      type_or_value: cpuset_t
    structs:
    - fields:
      - name: headermsg
        type: struct nlmsghdr
      - name: neighbormsg
        type: struct ndmsg
      item_type: struct
      name: request
      pos:
        line_end: 1080
        line_start: 1077
        source_file: /src/pdns/pdns/misc.cc
    - fields: []
      item_type: struct
      name: CloseDirDeleter
      pos:
        line_end: 1769
        line_start: 1764
        source_file: /src/pdns/pdns/misc.cc
    - fields: []
      item_type: struct
      name: CloseDirDeleter
      pos:
        line_end: 1769
        line_start: 1764
        source_file: /src/pdns/pdns/misc.cc
    typedefs: []
    union: []
- function_names: []
  source_file: /src/pdns/pdns/ixfr.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - includeboilerplate
  - '& getFlags() const'
  - '& getReplacement() const'
  - NAPTRRecordContent::sizeEstimate
  - operator==(const DNSRecordContent& rhs) const override
  - ARecordContent::sizeEstimate
  - operator==(const DNSRecordContent& rhs) const override
  - AAAARecordContent::sizeEstimate
  - operator==(const DNSRecordContent& rhs) const override
  - MXRecordContent::sizeEstimate
  - KXRecordContent::sizeEstimate
  - IPSECKEYRecordContent::sizeEstimate
  - DHCIDRecordContent::sizeEstimate
  - SRVRecordContent::sizeEstimate
  - TSIGRecordContent::TSIGRecordContent
  - TSIGRecordContent::sizeEstimate
  - TXTRecordContent::sizeEstimate
  - LUARecordContent::sizeEstimate
  - ENTRecordContent::sizeEstimate
  - '& getText() const'
  - SPFRecordContent::sizeEstimate
  - NSRecordContent::NSRecordContent
  - '& getNS() const'
  - operator==(const DNSRecordContent& rhs) const override
  - NSRecordContent::sizeEstimate
  - PTRRecordContent::PTRRecordContent
  - '& getContent() const'
  - PTRRecordContent::sizeEstimate
  - CNAMERecordContent::CNAMERecordContent
  - CNAMERecordContent::getTarget
  - CNAMERecordContent::sizeEstimate
  - '& getContent() const'
  - ALIASRecordContent::sizeEstimate
  - DNAMERecordContent::DNAMERecordContent
  - '& getTarget() const'
  - DNAMERecordContent::sizeEstimate
  - MBRecordContent::sizeEstimate
  - MGRecordContent::sizeEstimate
  - MRRecordContent::sizeEstimate
  - MINFORecordContent::sizeEstimate
  - OPTRecordContent::OPTRecordContent
  - OPTRecordContent::sizeEstimate
  - HINFORecordContent::sizeEstimate
  - RPRecordContent::sizeEstimate
  - operator<(const DNSKEYRecordContent& rhs) const
  - DNSKEYRecordContent::sizeEstimate
  - CDNSKEYRecordContent::sizeEstimate
  - operator==(const DNSRecordContent& rhs) const override
  - operator<(const DSRecordContent& rhs) const
  - DSRecordContent::sizeEstimate
  - CDSRecordContent::sizeEstimate
  - DLVRecordContent::sizeEstimate
  - SSHFPRecordContent::sizeEstimate
  - KEYRecordContent::sizeEstimate
  - AFSDBRecordContent::sizeEstimate
  - CERTRecordContent::sizeEstimate
  - TLSARecordContent::sizeEstimate
  - SMIMEARecordContent::sizeEstimate
  - OPENPGPKEYRecordContent::sizeEstimate
  - '& getTarget() const'
  - SVCBBaseRecordContent::getPriority
  - SVCBBaseRecordContent::sizeEstimate
  - DRIPBaseRecordContent::sizeEstimate
  - RRSIGRecordContent::sizeEstimate
  - RKEYRecordContent::sizeEstimate
  - SOARecordContent::sizeEstimate
  - ZONEMDRecordContent::sizeEstimate
  - NSECBitmap::NSECBitmap
  - NSECBitmap::NSECBitmap
  - '& operator=(const NSECBitmap& rhs)'
  - NSECBitmap::NSECBitmap
  - NSECBitmap::isSet
  - NSECBitmap::set
  - NSECBitmap::count
  - NSECBitmap::sizeEstimate
  - NSECBitmap::migrateToBitSet
  - NSECRecordContent::NSECRecordContent
  - NSECRecordContent::getType
  - NSECRecordContent::isSet
  - NSECRecordContent::set
  - NSECRecordContent::set
  - NSECRecordContent::numberOfTypesSet
  - NSECRecordContent::sizeEstimate
  - NSEC3RecordContent::NSEC3RecordContent
  - NSEC3RecordContent::getType
  - NSEC3RecordContent::isSet
  - NSEC3RecordContent::set
  - NSEC3RecordContent::set
  - NSEC3RecordContent::numberOfTypesSet
  - NSEC3RecordContent::isOptOut
  - NSEC3RecordContent::sizeEstimate
  - CSYNCRecordContent::CSYNCRecordContent
  - CSYNCRecordContent::getType
  - CSYNCRecordContent::set
  - CSYNCRecordContent::sizeEstimate
  - NSEC3PARAMRecordContent::NSEC3PARAMRecordContent
  - NSEC3PARAMRecordContent::getType
  - NSEC3PARAMRecordContent::sizeEstimate
  - LOCRecordContent::LOCRecordContent
  - LOCRecordContent::getType
  - LOCRecordContent::sizeEstimate
  - NIDRecordContent::sizeEstimate
  - L32RecordContent::sizeEstimate
  - L64RecordContent::sizeEstimate
  - LPRecordContent::sizeEstimate
  - WALLETRecordContent::sizeEstimate
  - EUI48RecordContent::EUI48RecordContent
  - EUI48RecordContent::getType
  - EUI48RecordContent::sizeEstimate
  - EUI64RecordContent::EUI64RecordContent
  - EUI64RecordContent::getType
  - EUI64RecordContent::sizeEstimate
  - APLRecordContent::APLRecordContent
  - APLRecordContent::sizeEstimate
  - TKEYRecordContent::TKEYRecordContent
  - TKEYRecordContent::sizeEstimate
  - URIRecordContent::sizeEstimate
  - CAARecordContent::sizeEstimate
  - RESINFORecordContent::sizeEstimate
  - getCombinedERCode
  source_file: /src/pdns/pdns/dnsrecords.hh
  types:
    enum:
    - enumerators:
      - name: DNSSECOK
        value: '32768'
      item_type: enum
      name: zFlags
      pos:
        line_end: 1347
        line_start: 1347
        source_file: /src/pdns/pdns/dnsrecords.hh
    preproc_defs:
    - item_type: preproc_def
      name: APL_FAMILY_IPV4
      pos:
        line_end: 1194
        line_start: 1193
        source_file: /src/pdns/pdns/dnsrecords.hh
      type_or_value: '1'
    - item_type: preproc_def
      name: APL_FAMILY_IPV6
      pos:
        line_end: 1195
        line_start: 1194
        source_file: /src/pdns/pdns/dnsrecords.hh
      type_or_value: '2'
    - item_type: preproc_def
      name: CONV
      pos:
        line_end: 1345
        line_start: 1330
        source_file: /src/pdns/pdns/dnsrecords.hh
      type_or_value: ";                                                                 \\\n
        \ if (conv.eof() == false) throw MOADNSException(\"When parsing \" #RNAME
        \" trailing data was not parsed: '\" + conv.getRemaining() + \"'\"); \\\n}
        \                                                                      \\\n"
    structs:
    - fields:
      - name: serial
        type: uint32_t
      - name: refresh
        type: uint32_t
      - name: retry
        type: uint32_t
      - name: expire
        type: uint32_t
      - name: minimum
        type: uint32_t
      item_type: struct
      name: soatimes
      pos:
        line_end: 768
        line_start: 761
        source_file: /src/pdns/pdns/dnsrecords.hh
    - fields:
      - name: d_family
        type: uint16_t
      - name: d_prefix
        type: uint8_t
      - name: d_n
        type: bool
      - name: d_afdlength
        type: unsigned int
      - name: d_ip
        type: "union u_d_ip {\n      uint8_t d_ip4[4];\n      uint8_t d_ip6[16];\n
          \ }"
      item_type: struct
      name: s_APLRDataElement
      pos:
        line_end: 1204
        line_start: 1195
        source_file: /src/pdns/pdns/dnsrecords.hh
    - fields:
      - name: d_options
        type: vector<pair<uint16_t, string> >
      - name: d_packetsize
        type: uint16_t
      - name: d_extFlags
        type: uint16_t
      - name: d_extRCode
        type: uint8_t
      - name: getFirstOption(uint16_t optionCode) const
        type: vector<pair<uint16_t, string>>::const_iterator
      item_type: struct
      name: EDNSOpts
      pos:
        line_end: 1358
        line_start: 1345
        source_file: /src/pdns/pdns/dnsrecords.hh
    typedefs: []
    union:
    - fields:
      - name: d_ip4[4]
        type: uint8_t
      - name: d_ip6[16]
        type: uint8_t
      item_type: union
      name: u_d_ip
      pos:
        line_end: 1203
        line_start: 1200
        source_file: /src/pdns/pdns/dnsrecords.hh
- function_names:
  - dropCapabilities
  - dropCapabilitiesAfterSwitchingIDs
  - keepCapabilitiesAfterSwitchingIDs
  source_file: /src/pdns/pdns/capabilities.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - pdns::parseTrustedNotificationProxy
  - pdns::isAddressTrustedNotificationProxy
  - pdns::parseTrustedNotificationProxy
  - pdns::isAddressTrustedNotificationProxy
  source_file: /src/pdns/pdns/trusted-notification-proxy.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - TSIGTCPVerifier::check
  source_file: /src/pdns/pdns/tsigverifier.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - makeIPCipherKey
  - encryptCA4
  - decryptCA4
  - encryptCA6
  - decryptCA6
  - encryptCA
  - decryptCA
  source_file: /src/pdns/pdns/ipcipher.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - FrameStreamLogger::FrameStreamLogger
  - FrameStreamLogger::cleanup
  - FrameStreamLogger::~FrameStreamLogger()
  - FrameStreamLogger::queueData
  source_file: /src/pdns/pdns/fstrm_logger.cc
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: name
        type: std::string
      - name: (*function)(struct fstrm_iothr_options*, const unsigned int)
        type: fstrm_res
      item_type: struct
      name: setters
      pos:
        line_end: 92
        line_start: 88
        source_file: /src/pdns/pdns/fstrm_logger.cc
    typedefs: []
    union: []
- function_names:
  - GenericDNSPacketWriter::xfrType
  - GenericDNSPacketWriter::xfrIP
  - GenericDNSPacketWriter::xfrIP6
  - GenericDNSPacketWriter::xfrCAWithoutPort
  - GenericDNSPacketWriter::xfrCAPort
  - GenericDNSPacketWriter::xfrTime
  - GenericDNSPacketWriter::setCanonic
  - GenericDNSPacketWriter::setLowercase
  - '& getContent()'
  - GenericDNSPacketWriter::eof
  - GenericDNSPacketWriter::getRemaining
  - GenericDNSPacketWriter::consumeRemaining
  source_file: /src/pdns/pdns/dnswriter.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - SNMPAgent::setCounter64Value
  - SNMPAgent::addSNMPTrapOID
  - SNMPAgent::sendTrap
  - SNMPAgent::handleTrapsEvent
  - SNMPAgent::handleSNMPQueryEvent
  - SNMPAgent::handleTrapsCB
  - SNMPAgent::handleSNMPQueryCB
  - SNMPAgent::worker
  - SNMPAgent::SNMPAgent
  source_file: /src/pdns/pdns/snmp-agent.cc
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: netsnmp_large_fd_set
      pos:
        line_end: 23
        line_start: 22
        source_file: /src/pdns/pdns/snmp-agent.cc
      type_or_value: fd_set
    - item_type: preproc_def
      name: snmp_read2
      pos:
        line_end: 24
        line_start: 23
        source_file: /src/pdns/pdns/snmp-agent.cc
      type_or_value: snmp_read
    - item_type: preproc_def
      name: snmp_select_info2
      pos:
        line_end: 25
        line_start: 24
        source_file: /src/pdns/pdns/snmp-agent.cc
      type_or_value: snmp_select_info
    - item_type: preproc_def
      name: NETSNMP_LARGE_FD_SET
      pos:
        line_end: 28
        line_start: 27
        source_file: /src/pdns/pdns/snmp-agent.cc
      type_or_value: FD_SET
    - item_type: preproc_def
      name: NETSNMP_LARGE_FD_CLR
      pos:
        line_end: 29
        line_start: 28
        source_file: /src/pdns/pdns/snmp-agent.cc
      type_or_value: FD_CLR
    - item_type: preproc_def
      name: NETSNMP_LARGE_FD_ZERO
      pos:
        line_end: 30
        line_start: 29
        source_file: /src/pdns/pdns/snmp-agent.cc
      type_or_value: FD_ZERO
    - item_type: preproc_def
      name: NETSNMP_LARGE_FD_ISSET
      pos:
        line_end: 31
        line_start: 30
        source_file: /src/pdns/pdns/snmp-agent.cc
      type_or_value: FD_ISSET
    structs: []
    typedefs: []
    union: []
- function_names:
  - Socket::Socket
  - '& operator=(const Socket&)'
  - Socket::Socket
  - Socket::Socket
  - Socket::Socket
  - '& operator=(Socket&& rhs) noexcept'
  - ~Socket()
  - Socket::accept
  - Socket::getRemote
  - Socket::acl
  - Socket::setNonBlocking
  - Socket::setBlocking
  - Socket::setReuseAddr
  - Socket::setFastOpenConnect
  - Socket::bind
  - Socket::connect
  - Socket::recvFrom
  - Socket::recvFromAsync
  - Socket::sendTo
  - Socket::send
  - Socket::sendTo
  - Socket::writen
  - Socket::tryWrite
  - Socket::write
  - Socket::writenWithTimeout
  - Socket::read
  - Socket::read
  - Socket::readWithTimeout
  - Socket::listen
  - Socket::getHandle
  - Socket::releaseHandle
  source_file: /src/pdns/pdns/sstuff.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/pdns/pdns/dnsproxy.hh
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: created
        type: time_t
      - name: anyLocal
        type: boost::optional<ComboAddress>
      - name: qname
        type: DNSName
      - name: complete
        type: std::unique_ptr<DNSPacket>
      - name: aname
        type: DNSName
      - name: anameScopeMask
        type: uint8_t
      - name: remote
        type: ComboAddress
      - name: id
        type: uint16_t
      - name: qtype
        type: uint16_t
      - name: outsock
        type: int
      item_type: struct
      name: ConntrackEntry
      pos:
        line_end: 72
        line_start: 60
        source_file: /src/pdns/pdns/dnsproxy.hh
    typedefs: []
    union: []
- function_names:
  - getRecordContent
  - addRecordToList
  source_file: /src/pdns/pdns/test-common.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - BaseLua4::BaseLua4
  source_file: /src/pdns/pdns/lua-base4.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs:
    - item_type: typedef
      name: in_t
      pos:
        line_end: 27
        line_start: 27
        source_file: /src/pdns/pdns/lua-base4.hh
      type: vector
    - item_type: typedef
      name: Features
      pos:
        line_end: 29
        line_start: 29
        source_file: /src/pdns/pdns/lua-base4.hh
      type: vector
    union: []
- function_names:
  - AuthPacketCache::size
  - AuthPacketCache::setMaxEntries
  - AuthPacketCache::setTTL
  - AuthPacketCache::enabled
  - AuthPacketCache::setSLog
  - AuthPacketCache::MapCombo
  - ~MapCombo()
  - AuthPacketCache::MapCombo
  - '& operator=(const MapCombo&)'
  - '& getMap(const std::unique_ptr<vector<MapCombo>>& map, const DNSName& name)'
  source_file: /src/pdns/pdns/auth-packetcache.hh
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: query
        type: string
      - name: value
        type: string
      - name: qname
        type: DNSName
      - name: created
        type: time_t
      - name: ttd
        type: time_t
      - name: hash
        type: uint32_t
      - name: qtype
        type: uint16_t
      - name: tcp
        type: bool
      item_type: struct
      name: CacheEntry
      pos:
        line_end: 110
        line_start: 99
        source_file: /src/pdns/pdns/auth-packetcache.hh
    - fields: []
      item_type: struct
      name: HashTag
      pos:
        line_end: 112
        line_start: 112
        source_file: /src/pdns/pdns/auth-packetcache.hh
    - fields: []
      item_type: struct
      name: NameTag
      pos:
        line_end: 113
        line_start: 113
        source_file: /src/pdns/pdns/auth-packetcache.hh
    - fields: []
      item_type: struct
      name: SequencedTag
      pos:
        line_end: 114
        line_start: 114
        source_file: /src/pdns/pdns/auth-packetcache.hh
    - fields:
      - name: reserve(size_t numberOfEntries)
        type: void
      - name: d_map
        type: SharedLockGuarded<cmap_t>
      item_type: struct
      name: MapCombo
      pos:
        line_end: 136
        line_start: 126
        source_file: /src/pdns/pdns/auth-packetcache.hh
    typedefs:
    - item_type: typedef
      name: cmap_t
      pos:
        line_end: 124
        line_start: 115
        source_file: /src/pdns/pdns/auth-packetcache.hh
      type: multi_index_container
    union: []
- function_names:
  - ZoneParserTNG::ZoneParserTNG
  - ZoneParserTNG::ZoneParserTNG
  - ZoneParserTNG::stackFile
  - ZoneParserTNG::~ZoneParserTNG()
  - makeString
  - isTimeSpec
  - ZoneParserTNG::makeTTLFromZone
  - ZoneParserTNG::getTemplateLine
  - chopComment
  - findAndElide
  - ZoneParserTNG::getZoneName
  - ZoneParserTNG::getLineOfFile
  - ZoneParserTNG::getLineNumAndFile
  - ZoneParserTNG::get
  - ZoneParserTNG::getLine
  source_file: /src/pdns/pdns/zoneparser-tng.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - UnknownRecordContent::UnknownRecordContent
  - UnknownRecordContent::getZoneRepresentation
  - UnknownRecordContent::toPacket
  - DNSRecordContent::deserialize
  - DNSRecordContent::make
  - DNSRecordContent::make
  - DNSRecordContent::make
  - DNSRecordContent::upgradeContent
  - '& DNSRecordContent::getTypemap()'
  - '& DNSRecordContent::getN2Typemap()'
  - '& DNSRecordContent::getT2Namemap()'
  - '& DNSRecordContent::getZmakermap()'
  - DNSRecordContent::isRegisteredType
  - DNSRecord::DNSRecord
  - DNSResourceRecord::fromWire
  - MOADNSParser::init
  - MOADNSParser::hasEDNS
  - PacketReader::getDnsrecordheader
  - PacketReader::copyRecord
  - PacketReader::copyRecord
  - PacketReader::xfrNodeOrLocatorID
  - PacketReader::xfr48BitInt
  - PacketReader::get32BitInt
  - PacketReader::get16BitInt
  - PacketReader::get8BitInt
  - PacketReader::getName
  - txtEscape
  - PacketReader::getText
  - PacketReader::getUnquotedText
  - PacketReader::xfrBlob
  - PacketReader::xfrBlobNoSpaces
  - PacketReader::xfrBlob
  - PacketReader::xfrSvcParamKeyVals
  - PacketReader::xfrHexBlob
  - simpleCompress
  - editDNSPacketTTL
  - checkIfPacketContainsRecords
  - rewritePacketWithoutRecordTypes
  - clearDNSPacketRecordTypes
  - clearDNSPacketRecordTypes
  - ageDNSPacket
  - ageDNSPacket
  - shuffleDNSPacket
  - getDNSPacketMinTTL
  - getDNSPacketLength
  - getRecordsOfTypeCount
  - getEDNSUDPPayloadSizeAndZ
  - visitDNSPacket
  source_file: /src/pdns/pdns/dnsparser.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs:
    - item_type: typedef
      name: parts_t
      pos:
        line_end: 779
        line_start: 779
        source_file: /src/pdns/pdns/dnsparser.cc
      type: vector
    union: []
- function_names:
  - PcapPacketReader::EofException::EofException
  - PcapPacketReader::checkedFread
  - PcapPacketWriter::setPPR
  source_file: /src/pdns/pdns/dnspcap.hh
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: magic
        type: uint32_t
      - name: version_major
        type: uint16_t
      - name: version_minor
        type: uint16_t
      - name: thiszone
        type: uint32_t
      - name: sigfigs
        type: uint32_t
      - name: snaplen
        type: uint32_t
      - name: linktype
        type: uint32_t
      item_type: struct
      name: pdns_pcap_file_header
      pos:
        line_end: 55
        line_start: 47
        source_file: /src/pdns/pdns/dnspcap.hh
    - fields:
      - name: tv_sec
        type: uint32_t
      - name: tv_usec
        type: uint32_t
      item_type: struct
      name: pdns_timeval
      pos:
        line_end: 62
        line_start: 58
        source_file: /src/pdns/pdns/dnspcap.hh
    - fields:
      - name: ts
        type: struct pdns_timeval
      - name: caplen
        type: uint32_t
      - name: len
        type: uint32_t
      item_type: struct
      name: pdns_pcap_pkthdr
      pos:
        line_end: 68
        line_start: 64
        source_file: /src/pdns/pdns/dnspcap.hh
    - fields:
      - name: lcc_pkttype
        type: uint16_t
      - name: lcc_hatype
        type: uint16_t
      - name: lcc_halen
        type: uint16_t
      - name: lcc_addr[8]
        type: uint8_t
      - name: lcc_protocol
        type: uint16_t
      item_type: struct
      name: pdns_lcc_header
      pos:
        line_end: 76
        line_start: 70
        source_file: /src/pdns/pdns/dnspcap.hh
    typedefs: []
    union: []
- function_names:
  - '& operator=(const MiniCurl&)'
  source_file: /src/pdns/pdns/minicurl.hh
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: CURL_STRICTER
      pos:
        line_end: 34
        line_start: 33
        source_file: /src/pdns/pdns/minicurl.hh
      type_or_value: '1'
    structs: []
    typedefs: []
    union: []
- function_names:
  - carbonDumpThread
  source_file: /src/pdns/pdns/auth-carbon.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - pdns::ZoneMD::ZoneMD
  - '& getDNSKEYs() const'
  - '& getRRSIGs(QType requestedType)'
  - pdns::ZoneMD::getZONEMDs
  - '& getNSECs() const'
  - '& getNSEC3s() const'
  - '& getNSEC3Label() const'
  - '& getNSEC3Params() const'
  - operator()(const RRSetKey_t& lhs, const RRSetKey_t& rhs) const
  - pdns::ZoneMD::ZoneMD
  - '& getDNSKEYs() const'
  - '& getRRSIGs(QType requestedType)'
  - pdns::ZoneMD::getZONEMDs
  - '& getNSECs() const'
  - '& getNSEC3s() const'
  - '& getNSEC3Label() const'
  - '& getNSEC3Params() const'
  - operator()(const RRSetKey_t& lhs, const RRSetKey_t& rhs) const
  source_file: /src/pdns/pdns/zonemd.hh
  types:
    enum:
    - enumerators:
      - name: Ignore
      - name: Require
      - name: Validate
      item_type: enum
      name: Config
      pos:
        line_end: 44
        line_start: 39
        source_file: /src/pdns/pdns/zonemd.hh
    - enumerators:
      - name: OK
      - name: NoValidationDone
      - name: ValidationFailure
      item_type: enum
      name: Result
      pos:
        line_end: 50
        line_start: 45
        source_file: /src/pdns/pdns/zonemd.hh
    - enumerators:
      - name: Ignore
      - name: Require
      - name: Validate
      item_type: enum
      name: Config
      pos:
        line_end: 44
        line_start: 39
        source_file: /src/pdns/pdns/zonemd.hh
    - enumerators:
      - name: OK
      - name: NoValidationDone
      - name: ValidationFailure
      item_type: enum
      name: Result
      pos:
        line_end: 50
        line_start: 45
        source_file: /src/pdns/pdns/zonemd.hh
    preproc_defs: []
    structs:
    - fields: []
      item_type: struct
      name: CanonRRSetKeyCompare
      pos:
        line_end: 123
        line_start: 114
        source_file: /src/pdns/pdns/zonemd.hh
    - fields:
      - name: record
        type: std::shared_ptr<const ZONEMDRecordContent>
      - name: duplicate
        type: bool
      item_type: struct
      name: ZoneMDAndDuplicateFlag
      pos:
        line_end: 131
        line_start: 127
        source_file: /src/pdns/pdns/zonemd.hh
    - fields: []
      item_type: struct
      name: CanonRRSetKeyCompare
      pos:
        line_end: 123
        line_start: 114
        source_file: /src/pdns/pdns/zonemd.hh
    - fields:
      - name: record
        type: std::shared_ptr<const ZONEMDRecordContent>
      - name: duplicate
        type: bool
      item_type: struct
      name: ZoneMDAndDuplicateFlag
      pos:
        line_end: 131
        line_start: 127
        source_file: /src/pdns/pdns/zonemd.hh
    typedefs: []
    union: []
- function_names:
  - SvcParam::keyFromString
  - SvcParam::keyFromString
  - SvcParam::keyToString
  - SvcParam::SvcParam
  - SvcParam::SvcParam
  - SvcParam::SvcParam
  - SvcParam::SvcParam
  - SvcParam::SvcParam
  - SvcParam::SvcParam
  - SvcParam::SvcParam
  - SvcParam::SvcParam
  - SvcParam::operator<(const SvcParam& other) const
  - SvcParam::operator==(const SvcParam& other) const
  - SvcParam::operator!=(const SvcParam& other) const
  - '& SvcParam::getIPHints() const'
  - SvcParam::getPort
  - '& SvcParam::getALPN() const'
  - '& SvcParam::getMandatory() const'
  - '& SvcParam::getECH() const'
  - '& SvcParam::getValue() const'
  - '& SvcParam::getTLSSupportedGroups() const'
  source_file: /src/pdns/pdns/svc-records.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - arg
  - pdnsControlLoggerBackend
  - main
  source_file: /src/pdns/pdns/dynloader.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/pdns/pdns/ipcipher.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  source_file: /src/pdns/pdns/test-ednscookie_cc.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - ~KqueueFDMultiplexer()
  - KqueueFDMultiplexer::getName
  - make
  - KqueueRegisterOurselves
  - KqueueFDMultiplexer::KqueueFDMultiplexer
  - convertEventKind
  - KqueueFDMultiplexer::addFD
  - KqueueFDMultiplexer::removeFD
  - KqueueFDMultiplexer::getAvailableFDs
  - KqueueFDMultiplexer::run
  - acceptData
  - main
  source_file: /src/pdns/pdns/kqueuemplexer.cc
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields: []
      item_type: struct
      name: KqueueRegisterOurselves
      pos:
        line_end: 75
        line_start: 69
        source_file: /src/pdns/pdns/kqueuemplexer.cc
    typedefs: []
    union: []
- function_names:
  - PDNSException::PDNSException
  - PDNSException::PDNSException
  - TimeoutException::TimeoutException
  - TimeoutException::TimeoutException
  source_file: /src/pdns/pdns/pdnsexception.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  source_file: /src/pdns/pdns/test-auth-zonecache_cc.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - precsize_aton
  - latlon2ul
  - LOCRecordContent::report
  - LOCRecordContent::make
  - LOCRecordContent::toPacket
  - LOCRecordContent::make
  - LOCRecordContent::LOCRecordContent
  - LOCRecordContent::getZoneRepresentation
  source_file: /src/pdns/pdns/sillyrecords.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - CircularWriteBuffer::hasRoomFor
  - CircularWriteBuffer::tooBig
  - CircularWriteBuffer::write
  - CircularWriteBuffer::flush
  - '& RemoteLoggerInterface::toErrorString(Result result)'
  - RemoteLogger::RemoteLogger
  - RemoteLogger::reconnect
  - RemoteLogger::queueData
  - RemoteLogger::maintenanceThread
  - RemoteLogger::~RemoteLogger()
  source_file: /src/pdns/pdns/remote_logger.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - pdns::channel::Sender::Sender
  - pdns::channel::Sender::Sender
  - pdns::channel::Sender::Sender
  - '& operator=(const Sender&)'
  - pdns::channel::Sender::Sender
  - '& operator=(Sender&&)'
  - ~Sender()
  - pdns::channel::Receiver::Receiver
  - pdns::channel::Receiver::Receiver
  - pdns::channel::Receiver::Receiver
  - '& operator=(const Receiver&)'
  - pdns::channel::Receiver::Receiver
  - '& operator=(Receiver&&)'
  - ~Receiver()
  - pdns::channel::Receiver::getDescriptor
  - pdns::channel::Receiver::isClosed
  - pdns::channel::Notifier::Notifier
  - pdns::channel::Notifier::Notifier
  - '& operator=(const Notifier&)'
  - pdns::channel::Notifier::Notifier
  - '& operator=(Notifier&&)'
  - ~Notifier()
  - pdns::channel::Waiter::Waiter
  - pdns::channel::Waiter::Waiter
  - '& operator=(const Waiter&)'
  - pdns::channel::Waiter::Waiter
  - '& operator=(Waiter&&)'
  - ~Waiter()
  - pdns::channel::Waiter::isClosed
  - pdns::channel::Sender<T, D>::send
  - pdns::channel::Sender<T, D>::close
  - pdns::channel::Receiver<T, D>::receive
  - pdns::channel::Receiver<T, D>::receive
  - pdns::channel::createObjectQueue
  - pdns::channel::Sender::Sender
  - pdns::channel::Sender::Sender
  - pdns::channel::Sender::Sender
  - '& operator=(const Sender&)'
  - pdns::channel::Sender::Sender
  - '& operator=(Sender&&)'
  - ~Sender()
  - pdns::channel::Receiver::Receiver
  - pdns::channel::Receiver::Receiver
  - pdns::channel::Receiver::Receiver
  - '& operator=(const Receiver&)'
  - pdns::channel::Receiver::Receiver
  - '& operator=(Receiver&&)'
  - ~Receiver()
  - pdns::channel::Receiver::getDescriptor
  - pdns::channel::Receiver::isClosed
  - pdns::channel::Notifier::Notifier
  - pdns::channel::Notifier::Notifier
  - '& operator=(const Notifier&)'
  - pdns::channel::Notifier::Notifier
  - '& operator=(Notifier&&)'
  - ~Notifier()
  - pdns::channel::Waiter::Waiter
  - pdns::channel::Waiter::Waiter
  - '& operator=(const Waiter&)'
  - pdns::channel::Waiter::Waiter
  - '& operator=(Waiter&&)'
  - ~Waiter()
  - pdns::channel::Waiter::isClosed
  - pdns::channel::Sender<T, D>::send
  - pdns::channel::Sender<T, D>::close
  - pdns::channel::Receiver<T, D>::receive
  - pdns::channel::Receiver<T, D>::receive
  - pdns::channel::createObjectQueue
  - pdns::channel::Sender::Sender
  - pdns::channel::Sender::Sender
  - pdns::channel::Sender::Sender
  - '& operator=(const Sender&)'
  - pdns::channel::Sender::Sender
  - '& operator=(Sender&&)'
  - ~Sender()
  - pdns::channel::Receiver::Receiver
  - pdns::channel::Receiver::Receiver
  - pdns::channel::Receiver::Receiver
  - '& operator=(const Receiver&)'
  - pdns::channel::Receiver::Receiver
  - '& operator=(Receiver&&)'
  - ~Receiver()
  - pdns::channel::Receiver::getDescriptor
  - pdns::channel::Receiver::isClosed
  - pdns::channel::Notifier::Notifier
  - pdns::channel::Notifier::Notifier
  - '& operator=(const Notifier&)'
  - pdns::channel::Notifier::Notifier
  - '& operator=(Notifier&&)'
  - ~Notifier()
  - pdns::channel::Waiter::Waiter
  - pdns::channel::Waiter::Waiter
  - '& operator=(const Waiter&)'
  - pdns::channel::Waiter::Waiter
  - '& operator=(Waiter&&)'
  - ~Waiter()
  - pdns::channel::Waiter::isClosed
  - pdns::channel::Sender<T, D>::send
  - pdns::channel::Sender<T, D>::close
  - pdns::channel::Receiver<T, D>::receive
  - pdns::channel::Receiver<T, D>::receive
  - pdns::channel::createObjectQueue
  - pdns::channel::Sender::Sender
  - pdns::channel::Sender::Sender
  - pdns::channel::Sender::Sender
  - '& operator=(const Sender&)'
  - pdns::channel::Sender::Sender
  - '& operator=(Sender&&)'
  - ~Sender()
  - pdns::channel::Receiver::Receiver
  - pdns::channel::Receiver::Receiver
  - pdns::channel::Receiver::Receiver
  - '& operator=(const Receiver&)'
  - pdns::channel::Receiver::Receiver
  - '& operator=(Receiver&&)'
  - ~Receiver()
  - pdns::channel::Receiver::getDescriptor
  - pdns::channel::Receiver::isClosed
  - pdns::channel::Notifier::Notifier
  - pdns::channel::Notifier::Notifier
  - '& operator=(const Notifier&)'
  - pdns::channel::Notifier::Notifier
  - '& operator=(Notifier&&)'
  - ~Notifier()
  - pdns::channel::Waiter::Waiter
  - pdns::channel::Waiter::Waiter
  - '& operator=(const Waiter&)'
  - pdns::channel::Waiter::Waiter
  - '& operator=(Waiter&&)'
  - ~Waiter()
  - pdns::channel::Waiter::isClosed
  - pdns::channel::Sender<T, D>::send
  - pdns::channel::Sender<T, D>::close
  - pdns::channel::Receiver<T, D>::receive
  - pdns::channel::Receiver<T, D>::receive
  - pdns::channel::createObjectQueue
  source_file: /src/pdns/pdns/channel.hh
  types:
    enum:
    - enumerators:
      - name: SenderNonBlocking
      - name: SenderBlocking
      item_type: enum
      name: SenderBlockingMode
      pos:
        line_end: 36
        line_start: 32
        source_file: /src/pdns/pdns/channel.hh
    - enumerators:
      - name: ReceiverNonBlocking
      - name: ReceiverBlocking
      item_type: enum
      name: ReceiverBlockingMode
      pos:
        line_end: 41
        line_start: 37
        source_file: /src/pdns/pdns/channel.hh
    - enumerators:
      - name: SenderNonBlocking
      - name: SenderBlocking
      item_type: enum
      name: SenderBlockingMode
      pos:
        line_end: 36
        line_start: 32
        source_file: /src/pdns/pdns/channel.hh
    - enumerators:
      - name: ReceiverNonBlocking
      - name: ReceiverBlocking
      item_type: enum
      name: ReceiverBlockingMode
      pos:
        line_end: 41
        line_start: 37
        source_file: /src/pdns/pdns/channel.hh
    - enumerators:
      - name: SenderNonBlocking
      - name: SenderBlocking
      item_type: enum
      name: SenderBlockingMode
      pos:
        line_end: 36
        line_start: 32
        source_file: /src/pdns/pdns/channel.hh
    - enumerators:
      - name: ReceiverNonBlocking
      - name: ReceiverBlocking
      item_type: enum
      name: ReceiverBlockingMode
      pos:
        line_end: 41
        line_start: 37
        source_file: /src/pdns/pdns/channel.hh
    - enumerators:
      - name: SenderNonBlocking
      - name: SenderBlocking
      item_type: enum
      name: SenderBlockingMode
      pos:
        line_end: 36
        line_start: 32
        source_file: /src/pdns/pdns/channel.hh
    - enumerators:
      - name: ReceiverNonBlocking
      - name: ReceiverBlocking
      item_type: enum
      name: ReceiverBlockingMode
      pos:
        line_end: 41
        line_start: 37
        source_file: /src/pdns/pdns/channel.hh
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - StatBag::StatBag
  - StatBag::exists
  - StatBag::directory
  - StatBag::getEntries
  - StatBag::getDescrip
  - StatBag::getStatType
  - StatBag::declare
  - StatBag::declare
  - StatBag::set
  - StatBag::read
  - StatBag::getValueStr
  - StatBag::getPointer
  - StatBag::~StatBag()
  - StatRing<T,Comp>::StatRing
  - StatRing<T,Comp>::account
  - StatRing<T,Comp>::getSize
  - StatRing<T,Comp>::getEntriesCount
  - StatRing<T,Comp>::resize
  - StatRing<T,Comp>::setHelp
  - StatRing<T,Comp>::getHelp
  - StatRing<T,Comp>::get
  - StatBag::registerRingStats
  - StatBag::declareRing
  - StatBag::declareComboRing
  - StatBag::declareDNSNameQTypeRing
  - StatBag::getRing
  - StatRing<T,Comp>::reset
  - StatBag::resetRing
  - StatBag::resizeRing
  - StatBag::getRingSize
  - StatBag::getRingEntriesCount
  - StatBag::getRingTitle
  - StatBag::listRings
  - StatBag::ringExists
  - StatBag::blacklist
  source_file: /src/pdns/pdns/statbag.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - localtime_format_YYYYMMDDSS
  - calculateEditSOA
  - calculateEditSOA
  - calculateIncreaseSOA
  - increaseSOARecord
  - makeIncreasedSOARecord
  - makeEditedDNSZRFromSOAData
  source_file: /src/pdns/pdns/serialtweaker.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - DNSCryptoKeyEngine::makeFromISCFile
  - DNSCryptoKeyEngine::makeFromISCString
  - DNSCryptoKeyEngine::makeFromPEMFile
  - DNSCryptoKeyEngine::makeFromPEMString
  - DNSCryptoKeyEngine::convertToISC
  - DNSCryptoKeyEngine::make
  - DNSCryptoKeyEngine::listAllAlgosWithBackend
  - DNSCryptoKeyEngine::listSupportedAlgoNames
  - DNSCryptoKeyEngine::report
  - DNSCryptoKeyEngine::testAll
  - DNSCryptoKeyEngine::testOne
  - ISCStringtoMap
  - DNSCryptoKeyEngine::testVerify
  - DNSCryptoKeyEngine::verifyOne
  - DNSCryptoKeyEngine::testMakers
  - DNSCryptoKeyEngine::makeFromPublicKeyString
  - getMessageForRRSET
  - DNSCryptoKeyEngine::isAlgorithmSwitchedOff
  - DNSCryptoKeyEngine::switchOffAlgorithm
  - DNSCryptoKeyEngine::isAlgorithmSupported
  - digestToAlgorithmNumber
  - DNSCryptoKeyEngine::isDigestSupported
  - makeDSFromDNSKey
  - makeDNSKEYFromDNSCryptoKeyEngine
  - getStartOfWeek
  - hashQNameWithSalt
  - hashQNameWithSalt
  - incrementHash
  - decrementHash
  - '& DNSSECPrivateKey::getDNSKEY() const'
  - DNSSECPrivateKey::computeDNSKEY
  - calculateHMAC
  - makeTSIGPayload
  - makeTSIGMessageFromTSIGPacket
  - addTSIG
  - validateTSIG
  source_file: /src/pdns/pdns/dnssecinfra.cc
  types:
    enum:
    - enumerators:
      - name: str
      - name: base64
      - name: numeric
      item_type: enum
      name: KeyTypes
      pos:
        line_end: 80
        line_start: 80
        source_file: /src/pdns/pdns/dnssecinfra.cc
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - IXFRDistWebServer::IXFRDistWebServer
  - IXFRDistWebServer::go
  - IXFRDistWebServer::getMetrics
  source_file: /src/pdns/pdns/ixfrdist-web.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - htobe16
  - htole16
  - be16toh
  - le16toh
  - htobe32
  - htole32
  - be32toh
  - le32toh
  - htobe64
  - htole64
  - be64toh
  - le64toh
  - htobe16
  - htole16
  - be16toh
  - le16toh
  - htobe32
  - htole32
  - be32toh
  - le32toh
  - htobe64
  - htole64
  - be64toh
  - le64toh
  - operator==(const ComboAddress& rhs) const
  - operator!=(const ComboAddress& rhs) const
  - operator<(const ComboAddress& rhs) const
  - operator>(const ComboAddress& rhs) const
  - operator()(const ComboAddress& address) const
  - operator()(const ComboAddress& address) const
  - operator()(const ComboAddress& lhs, const ComboAddress& rhs) const
  - operator()(const ComboAddress& lhs, const ComboAddress& rhs) const
  - getSocklen
  - ComboAddress
  - ComboAddress
  - ComboAddress
  - ComboAddress
  - setSockaddr
  - ComboAddress
  - isIPv6
  - isIPv4
  - isMappedIPv4
  - isUnspecified
  - mapToIPv4
  - toString
  - toStringNoInterface
  - toStringReversed
  - toStringWithPort
  - toStringWithPortExcept
  - toLogString
  - toStructuredLogString
  - toByteString
  - getNetworkOrderPort
  - getPort
  - setPort
  - reset
  - getBits
  - getBit
  - caContainerToString
  - getSocklen
  - SockaddrWrapper
  - SockaddrWrapper
  - SockaddrWrapper
  - SockaddrWrapper
  - SockaddrWrapper
  - setSockaddr
  - SockaddrWrapper
  - isIPv6
  - isIPv4
  - isUnixSocket
  - toString
  - toStringWithPort
  - reset
  - NetmaskException::NetmaskException
  - makeComboAddress
  - makeComboAddressFromRaw
  - makeComboAddressFromRaw
  - Netmask::Netmask
  - Netmask::Netmask
  - Netmask::Netmask
  - Netmask::Netmask
  - Netmask::setBits
  - Netmask::Netmask
  - Netmask::match
  - Netmask::match
  - Netmask::match
  - Netmask::match4
  - Netmask::toString
  - Netmask::toStringNoMask
  - Netmask::toByteString
  - '& getNetwork() const'
  - '& getMaskedNetwork() const'
  - Netmask::getBits
  - Netmask::isIPv6
  - Netmask::isIPv4
  - operator<(const Netmask& rhs) const
  - operator>(const Netmask& rhs) const
  - operator==(const Netmask& rhs) const
  - operator!=(const Netmask& rhs) const
  - Netmask::empty
  - Netmask::getNormalized
  - Netmask::getSuper
  - Netmask::getFullBits
  - Netmask::getBit
  - operator()(const Netmask& netmask) const
  - operator()(const Netmask& netmask) const
  - operator()(const Netmask& netmask) const
  - NetmaskTree::TreeNode::TreeNode
  - NetmaskTree::TreeNode::TreeNode
  - NetmaskTree::TreeNode::make_left
  - NetmaskTree::TreeNode::make_right
  - NetmaskTree::TreeNode::split
  - NetmaskTree::TreeNode::fork
  - NetmaskTree::TreeNode::traverse_l
  - NetmaskTree::TreeNode::traverse_lnr
  - NetmaskTree::TreeNode::traverse_lnr_assigned
  - NetmaskTree::cleanup_tree
  - NetmaskTree::copyTree
  - NetmaskTree::Iterator::Iterator
  - NetmaskTree::Iterator::Iterator
  - '& operator++()'
  - operator++(int)
  - operator*()
  - operator->()
  - operator==(const Iterator& rhs) const
  - operator!=(const Iterator& rhs) const
  - NetmaskTree::NetmaskTree
  - NetmaskTree::NetmaskTree
  - ~NetmaskTree()
  - '& operator=(const NetmaskTree& rhs)'
  - NetmaskTree::NetmaskTree
  - '& operator=(NetmaskTree&&) noexcept'
  - NetmaskTree::begin
  - NetmaskTree::end
  - NetmaskTree::begin
  - NetmaskTree::end
  - '& insert(const string& mask)'
  - '& insert(const key_type& key)'
  - NetmaskTree::insert_or_assign
  - NetmaskTree::insert_or_assign
  - NetmaskTree::has_key
  - NetmaskTree::lookup
  - NetmaskTree::lookup
  - NetmaskTree::erase
  - NetmaskTree::erase
  - NetmaskTree::empty
  - NetmaskTree::size
  - NetmaskTree::match
  - NetmaskTree::match
  - NetmaskTree::clear
  - NetmaskTree::swap
  - NetmaskTree::lookupImpl
  - NetmaskGroup::NetmaskGroup
  - NetmaskGroup::match
  - NetmaskGroup::match
  - NetmaskGroup::lookup
  - NetmaskGroup::lookup
  - NetmaskGroup::addMask
  - NetmaskGroup::addMask
  - NetmaskGroup::addMasks
  - NetmaskGroup::deleteMask
  - NetmaskGroup::deleteMasks
  - NetmaskGroup::deleteMask
  - NetmaskGroup::clear
  - NetmaskGroup::empty
  - NetmaskGroup::size
  - NetmaskGroup::toString
  - NetmaskGroup::toStringVector
  - NetmaskGroup::toMasks
  - SComboAddress
  - operator<(const SComboAddress& rhs) const
  - operator const ComboAddress&() const
  - NetworkError::NetworkError
  - NetworkError::NetworkError
  - AddressAndPortRange::AddressAndPortRange
  - AddressAndPortRange::AddressAndPortRange
  - AddressAndPortRange::getFullBits
  - AddressAndPortRange::getBits
  - AddressAndPortRange::getBit
  - AddressAndPortRange::isIPv4
  - AddressAndPortRange::isIPv6
  - AddressAndPortRange::getNormalized
  - AddressAndPortRange::getSuper
  - '& getNetwork() const'
  - AddressAndPortRange::toString
  - AddressAndPortRange::empty
  - operator==(const AddressAndPortRange& rhs) const
  - operator<(const AddressAndPortRange& rhs) const
  - operator>(const AddressAndPortRange& rhs) const
  - operator()(const AddressAndPortRange& apr) const
  source_file: /src/pdns/pdns/iputils.hh
  types:
    enum:
    - enumerators:
      - name: humanString
      - name: byteString
      item_type: enum
      name: stringType
      pos:
        line_end: 751
        line_start: 747
        source_file: /src/pdns/pdns/iputils.hh
    preproc_defs:
    - item_type: preproc_def
      name: CONNECTX_FASTOPEN
      pos:
        line_end: 57
        line_start: 56
        source_file: /src/pdns/pdns/iputils.hh
      type_or_value: '1'
    - item_type: preproc_def
      name: GEN_IP_PKTINFO
      pos:
        line_end: 2070
        line_start: 2069
        source_file: /src/pdns/pdns/iputils.hh
      type_or_value: IP_PKTINFO
    - item_type: preproc_def
      name: GEN_IP_PKTINFO
      pos:
        line_end: 2072
        line_start: 2071
        source_file: /src/pdns/pdns/iputils.hh
      type_or_value: IP_RECVDSTADDR
    structs:
    - fields: []
      item_type: struct
      name: addressPortOnlyHash
      pos:
        line_end: 148
        line_start: 133
        source_file: /src/pdns/pdns/iputils.hh
    - fields: []
      item_type: struct
      name: addressOnlyHash
      pos:
        line_end: 168
        line_start: 150
        source_file: /src/pdns/pdns/iputils.hh
    - fields: []
      item_type: struct
      name: addressOnlyLessThan
      pos:
        line_end: 185
        line_start: 170
        source_file: /src/pdns/pdns/iputils.hh
    - fields: []
      item_type: struct
      name: addressOnlyEqual
      pos:
        line_end: 199
        line_start: 187
        source_file: /src/pdns/pdns/iputils.hh
    - fields: []
      item_type: struct
      name: Hash
      pos:
        line_end: 963
        line_start: 957
        source_file: /src/pdns/pdns/iputils.hh
    - fields: []
      item_type: struct
      name: hash<Netmask>
      pos:
        line_end: 980
        line_start: 974
        source_file: /src/pdns/pdns/iputils.hh
    - fields: []
      item_type: struct
      name: hash<Netmask>
      pos:
        line_end: 980
        line_start: 974
        source_file: /src/pdns/pdns/iputils.hh
    - fields:
      - name: ca
        type: ComboAddress
      item_type: struct
      name: SComboAddress
      pos:
        line_end: 1859
        line_start: 1846
        source_file: /src/pdns/pdns/iputils.hh
    - fields: []
      item_type: struct
      name: hash
      pos:
        line_end: 2044
        line_start: 2034
        source_file: /src/pdns/pdns/iputils.hh
    typedefs: []
    union:
    - fields:
      - name: sin4
        type: sockaddr_in
      - name: sin6
        type: sockaddr_in6
      - name: truncate(unsigned int bits) noexcept
        type: void
      item_type: union
      name: ComboAddress
      pos:
        line_end: 505
        line_start: 90
        source_file: /src/pdns/pdns/iputils.hh
    - fields:
      - name: sin4
        type: sockaddr_in
      - name: sin6
        type: sockaddr_in6
      - name: sinun
        type: sockaddr_un
      item_type: union
      name: SockaddrWrapper
      pos:
        line_end: 633
        line_start: 507
        source_file: /src/pdns/pdns/iputils.hh
- function_names:
  - BOOST_AUTO_TEST_CASE
  source_file: /src/pdns/pdns/test-base32_cc.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs:
    - item_type: typedef
      name: case_t
      pos:
        line_end: 16
        line_start: 16
        source_file: /src/pdns/pdns/test-base32_cc.cc
      type: tuple<const std::string, const std::string>
    - item_type: typedef
      name: cases_t
      pos:
        line_end: 17
        line_start: 17
        source_file: /src/pdns/pdns/test-base32_cc.cc
      type: list<case_t>
    union: []
- function_names:
  - LLVMFuzzerTestOneInput
  source_file: /src/pdns/pdns/fuzz_dnslabeltext_parseRFC1035CharString.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  source_file: /src/pdns/pdns/test-nameserver_cc.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/pdns/pdns/trusted-notification-proxy.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - FDMultiplexerException::FDMultiplexerException
  - ~FDMultiplexer()
  - FDMultiplexer::InRun
  - FDMultiplexer::InRun
  - '& operator=(const InRun&)'
  - '& operator=(InRun&&)'
  - FDMultiplexer::InRun
  - ~InRun()
  - FDMultiplexer::addReadFD
  - FDMultiplexer::addWriteFD
  - FDMultiplexer::removeReadFD
  - FDMultiplexer::removeWriteFD
  - FDMultiplexer::setReadTTD
  - FDMultiplexer::setWriteTTD
  - FDMultiplexer::alterFDToRead
  - FDMultiplexer::alterFDToWrite
  - FDMultiplexer::getTimeouts
  - '& getMultiplexerMap()'
  - FDMultiplexer::getWatchedFDCount
  - FDMultiplexer::runForAllWatchedFDs
  - operator()(const struct timeval& lhs, const struct timeval& rhs) const
  - FDMultiplexer::accountingAddFD
  - FDMultiplexer::accountingRemoveFD
  - FDMultiplexer::alterFD
  source_file: /src/pdns/pdns/mplexer.hh
  types:
    enum:
    - enumerators:
      - name: Read
      - name: Both
      - name: Write
      item_type: enum
      name: EventKind
      pos:
        line_end: 60
        line_start: 55
        source_file: /src/pdns/pdns/mplexer.hh
    preproc_defs: []
    structs:
    - fields:
      - name: d_callback
        type: callbackfunc_t
      - name: d_parameter
        type: funcparam_t
      - name: d_ttd
        type: struct timeval
      - name: d_fd
        type: int
      item_type: struct
      name: Callback
      pos:
        line_end: 69
        line_start: 63
        source_file: /src/pdns/pdns/mplexer.hh
    - fields:
      - name: '& d_inrun'
        type: bool
      item_type: struct
      name: InRun
      pos:
        line_end: 99
        line_start: 80
        source_file: /src/pdns/pdns/mplexer.hh
    - fields: []
      item_type: struct
      name: FDBasedTag
      pos:
        line_end: 259
        line_start: 257
        source_file: /src/pdns/pdns/mplexer.hh
    - fields: []
      item_type: struct
      name: TTDOrderedTag
      pos:
        line_end: 262
        line_start: 260
        source_file: /src/pdns/pdns/mplexer.hh
    - fields: []
      item_type: struct
      name: ttd_compare
      pos:
        line_end: 282
        line_start: 263
        source_file: /src/pdns/pdns/mplexer.hh
    typedefs:
    - item_type: typedef
      name: funcparam_t
      pos:
        line_end: 53
        line_start: 53
        source_file: /src/pdns/pdns/mplexer.hh
      type: any
    - item_type: typedef
      name: callbackfunc_t
      pos:
        line_end: 54
        line_start: 54
        source_file: /src/pdns/pdns/mplexer.hh
      type: function<void(int, funcparam_t&)>
    - item_type: typedef
      name: '* getMultiplexer_t(unsigned int)'
      pos:
        line_end: 230
        line_start: 230
        source_file: /src/pdns/pdns/mplexer.hh
      type: FDMultiplexer
    - item_type: typedef
      name: FDMultiplexermap_t
      pos:
        line_end: 231
        line_start: 231
        source_file: /src/pdns/pdns/mplexer.hh
      type: multimap<int, getMultiplexer_t*>
    - item_type: typedef
      name: callbackmap_t
      pos:
        line_end: 292
        line_start: 284
        source_file: /src/pdns/pdns/mplexer.hh
      type: multi_index_container
    union: []
- function_names:
  - DLQuitPlease
  - DLQuitHandler
  - dokill
  - DLCurrentConfigHandler
  - DLRQuitHandler
  - DLPingHandler
  - DLShowHandler
  - setStatus
  - DLStatusHandler
  - DLUptimeHandler
  - DLPurgeHandler
  - DLCCHandler
  - DLQTypesHandler
  - DLRSizesHandler
  - DLRemotesHandler
  - DLSettingsHandler
  - DLVersionHandler
  - DLNotifyRetrieveHandler
  - DLNotifyHostHandler
  - DLNotifyHandler
  - DLRediscoverHandler
  - DLReloadHandler
  - DLListZones
  - DLFlushHandler
  - DLTokenLogin
  - DLSuckRequests
  source_file: /src/pdns/pdns/dynhandler.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs:
    - item_type: typedef
      name: respsizes_t
      pos:
        line_end: 204
        line_start: 204
        source_file: /src/pdns/pdns/dynhandler.cc
      type: map
    - item_type: typedef
      name: totals_t
      pos:
        line_end: 217
        line_start: 217
        source_file: /src/pdns/pdns/dynhandler.cc
      type: vector
    union: []
- function_names:
  - pdns_localtime_r
  - makeReport
  - usage
  - main
  source_file: /src/pdns/pdns/dnsgram.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs:
    - item_type: typedef
      name: queries_t
      pos:
        line_end: 145
        line_start: 145
        source_file: /src/pdns/pdns/dnsgram.cc
      type: set
    - item_type: typedef
      name: diff_t
      pos:
        line_end: 224
        line_start: 224
        source_file: /src/pdns/pdns/dnsgram.cc
      type: vector
    union: []
- function_names:
  - init
  - LLVMFuzzerTestOneInput
  source_file: /src/pdns/pdns/fuzz_zoneparsertng.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - ResolverException::ResolverException
  source_file: /src/pdns/pdns/resolver.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs:
    - item_type: typedef
      name: res_t
      pos:
        line_end: 58
        line_start: 58
        source_file: /src/pdns/pdns/resolver.hh
      type: vector
    union: []
- function_names:
  - encode_non_ascii
  - callback_simple
  - callback_tree
  - main
  source_file: /src/pdns/pdns/zone2ldap.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs:
    - item_type: typedef
      name: callback_t
      pos:
        line_end: 277
        line_start: 277
        source_file: /src/pdns/pdns/zone2ldap.cc
      type: function<void(unsigned int, const DNSName &, const string &, const string
        &, int)>
    union: []
- function_names:
  - ResponseStats::submitResponse
  source_file: /src/pdns/pdns/responsestats-auth.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - operator*(float fact, const struct timeval& rhs)
  - pleaseQuitHandler
  - DNSIDManager::DNSIDManager
  - DNSIDManager::peakID
  - DNSIDManager::getID
  - DNSIDManager::releaseID
  - QuestionData
  - WeOrigSlowQueriesDelta
  - compactAnswerSet
  - isRcodeOk
  - isRootReferral
  - accountFlightTime
  - countLessThan
  - emitFlightTimes
  - measureResultAndClean
  - receiveFromReference
  - pruneQids
  - printStats
  - houseKeeping
  - generateOptRR
  - addECSOption
  - checkIPTransparentUsability
  - sendPacketFromPR
  - catch
  - catch
  - usage
  - main
  source_file: /src/pdns/pdns/dnsreplay.cc
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields: []
      item_type: struct
      name: AssignedIDTag
      pos:
        line_end: 166
        line_start: 166
        source_file: /src/pdns/pdns/dnsreplay.cc
    - fields: []
      item_type: struct
      name: QuestionTag
      pos:
        line_end: 167
        line_start: 167
        source_file: /src/pdns/pdns/dnsreplay.cc
    - fields:
      - name: d_qi
        type: QuestionIdentifier
      - name: d_assignedID
        type: int
      - name: d_origAnswers
        type: MOADNSParser::answers_t
      - name: d_origRcode
        type: int
      - name: d_resentTime
        type: struct timeval
      - name: d_norecursionavailable
        type: bool
      - name: d_origlate
        type: bool
      item_type: struct
      name: QuestionData
      pos:
        line_end: 181
        line_start: 169
        source_file: /src/pdns/pdns/dnsreplay.cc
    typedefs:
    - item_type: typedef
      name: qids_t
      pos:
        line_end: 189
        line_start: 183
        source_file: /src/pdns/pdns/dnsreplay.cc
      type: multi_index_container
    - item_type: typedef
      name: qids_by_id_index_t
      pos:
        line_end: 411
        line_start: 411
        source_file: /src/pdns/pdns/dnsreplay.cc
      type: index<AssignedIDTag>::type
    union: []
- function_names:
  - pdns::hash
  - pdns::md5
  - pdns::sha1
  - pdns::hash
  - pdns::md5
  - pdns::sha1
  source_file: /src/pdns/pdns/digests.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - AuthZoneCache::size
  - AuthZoneCache::getRefreshInterval
  - AuthZoneCache::setRefreshInterval
  - AuthZoneCache::setSLog
  - AuthZoneCache::MapCombo
  - ~MapCombo()
  - AuthZoneCache::MapCombo
  - '& operator=(const MapCombo&)'
  - AuthZoneCache::getMapIndex
  - '& getMap(const ZoneName& qname)'
  source_file: /src/pdns/pdns/auth-zonecache.hh
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: zoneId
        type: domainid_t
      item_type: struct
      name: CacheValue
      pos:
        line_end: 92
        line_start: 89
        source_file: /src/pdns/pdns/auth-zonecache.hh
    - fields:
      - name: d_map
        type: SharedLockGuarded<cmap_t>
      item_type: struct
      name: MapCombo
      pos:
        line_end: 104
        line_start: 96
        source_file: /src/pdns/pdns/auth-zonecache.hh
    - fields:
      - name: d_pendingUpdates
        type: std::vector<std::tuple<ZoneName, domainid_t, bool>>
      - name: d_replacePending
        type: bool
      item_type: struct
      name: PendingData
      pos:
        line_end: 126
        line_start: 122
        source_file: /src/pdns/pdns/auth-zonecache.hh
    typedefs:
    - item_type: typedef
      name: cmap_t
      pos:
        line_end: 94
        line_start: 94
        source_file: /src/pdns/pdns/auth-zonecache.hh
      type: unordered_map<ZoneName, CacheValue, std::hash<ZoneName>>
    union: []
- function_names:
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  source_file: /src/pdns/pdns/test-sha_hh.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - LLVMFuzzerTestOneInput
  source_file: /src/pdns/pdns/fuzz_yahttp.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - ~EpollFDMultiplexer() override
  - EpollFDMultiplexer::getName
  - makeEpoll
  - EpollRegisterOurselves
  - EpollFDMultiplexer::EpollFDMultiplexer
  - convertEventKind
  - EpollFDMultiplexer::addFD
  - EpollFDMultiplexer::removeFD
  - EpollFDMultiplexer::alterFD
  - EpollFDMultiplexer::getAvailableFDs
  - EpollFDMultiplexer::run
  - acceptData
  - main
  source_file: /src/pdns/pdns/epollmplexer.cc
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields: []
      item_type: struct
      name: EpollRegisterOurselves
      pos:
        line_end: 74
        line_start: 68
        source_file: /src/pdns/pdns/epollmplexer.cc
    typedefs: []
    union: []
- function_names:
  - ~IPObfuscator()
  - IPSeqObfuscator::IPSeqObfuscator
  - IPSeqObfuscator::make
  - IPSeqObfuscator::obf4
  - IPSeqObfuscator::obf6
  - operator()(const struct in6_addr&a , const struct in6_addr&b) const
  - IPCipherObfuscator::IPCipherObfuscator
  - IPCipherObfuscator::make
  - IPCipherObfuscator::obf4
  - IPCipherObfuscator::obf6
  - usage
  - main
  - main
  source_file: /src/pdns/pdns/dnswasher.cc
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields: []
      item_type: struct
      name: cmp
      pos:
        line_end: 111
        line_start: 106
        source_file: /src/pdns/pdns/dnswasher.cc
    typedefs: []
    union: []
- function_names:
  - getEDNSExtendedErrorOptFromStringView
  - getEDNSExtendedErrorOptFromString
  - getEDNSExtendedErrorOptFromString
  - makeEDNSExtendedErrorOptString
  source_file: /src/pdns/pdns/ednsextendederror.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - BINARY
  - _CASE_L
  - CASE_L
  - CASE_S
  - BROKEN_CASE_L
  - BROKEN_CASE_S
  - REC_CHECK_EQUAL
  - REC_CHECK_MESSAGE
  - REC_FAIL_XSUCCESS
  - BOOST_AUTO_TEST_CASE
  - test_dnsrecords_cc_predicate
  - BOOST_AUTO_TEST_CASE
  - ZONE_CASE
  - WIRE_CASE
  - BROKEN_ZONE_CASE
  - BROKEN_WIRE_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_CHECK_THROW
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  source_file: /src/pdns/pdns/test-dnsrecords_cc.cc
  types:
    enum:
    - enumerators:
      - name: WORKING
      - name: BROKEN
      item_type: enum
      name: broken_marker
      pos:
        line_end: 21
        line_start: 18
        source_file: /src/pdns/pdns/test-dnsrecords_cc.cc
    - enumerators:
      - name: WORKING
      - name: BROKEN
      item_type: enum
      name: broken_marker
      pos:
        line_end: 21
        line_start: 18
        source_file: /src/pdns/pdns/test-dnsrecords_cc.cc
    - enumerators:
      - name: zone
      - name: wire
      item_type: enum
      name: case_type_t
      pos:
        line_end: 364
        line_start: 364
        source_file: /src/pdns/pdns/test-dnsrecords_cc.cc
    preproc_defs: []
    structs: []
    typedefs:
    - item_type: typedef
      name: case_t
      pos:
        line_end: 47
        line_start: 47
        source_file: /src/pdns/pdns/test-dnsrecords_cc.cc
      type: tuple<QType::typeenum, std::string, std::string, std::string, broken_marker>
    - item_type: typedef
      name: cases_t
      pos:
        line_end: 48
        line_start: 48
        source_file: /src/pdns/pdns/test-dnsrecords_cc.cc
      type: list<case_t>
    - item_type: typedef
      name: case_t
      pos:
        line_end: 367
        line_start: 367
        source_file: /src/pdns/pdns/test-dnsrecords_cc.cc
      type: tuple<const QType::typeenum, const std::string, case_type_t, broken_marker>
    - item_type: typedef
      name: cases_t
      pos:
        line_end: 368
        line_start: 368
        source_file: /src/pdns/pdns/test-dnsrecords_cc.cc
      type: list<case_t>
    union: []
- function_names:
  - getNextEDNSOption
  - getEDNSOption
  - slowParseEDNSOptions
  - getEDNSOptions
  - getEDNSOptionsFromContent
  - generateEDNSOption
  source_file: /src/pdns/pdns/ednsoptions.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - stripDotContent
  - sqlstr
  - startNewTransaction
  - emitDomain
  - emitRecord
  - arg
  - main
  source_file: /src/pdns/pdns/zone2sql.cc
  types:
    enum:
    - enumerators:
      - name: MYSQL
      - name: SQLITE
      - name: POSTGRES
      item_type: enum
      name: dbmode_t
      pos:
        line_end: 52
        line_start: 52
        source_file: /src/pdns/pdns/zone2sql.cc
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  source_file: /src/pdns/pdns/test-mplexer.cc
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: sockets[2]
        type: int
      item_type: struct
      name: socket_pair
      pos:
        line_end: 314
        line_start: 311
        source_file: /src/pdns/pdns/test-mplexer.cc
    typedefs: []
    union: []
- function_names:
  - pdns::ProtoZero::Message::Message
  - ~Message()
  - pdns::ProtoZero::Message::Message
  - pdns::ProtoZero::Message::Message
  - '& operator=(const Message&)'
  - '& operator=(Message&&)'
  - pdns::ProtoZero::Message::setType
  - pdns::ProtoZero::Message::setHTTPVersion
  - pdns::ProtoZero::Message::setMessageIdentity
  - pdns::ProtoZero::Message::setServerIdentity
  - pdns::ProtoZero::Message::setSocketFamily
  - pdns::ProtoZero::Message::setSocketProtocol
  - pdns::ProtoZero::Message::setFrom
  - pdns::ProtoZero::Message::setTo
  - pdns::ProtoZero::Message::setInBytes
  - pdns::ProtoZero::Message::setTime
  - pdns::ProtoZero::Message::setTime
  - pdns::ProtoZero::Message::setId
  - pdns::ProtoZero::Message::setQuestion
  - pdns::ProtoZero::Message::setMeta
  - pdns::ProtoZero::Message::setEDNSSubnet
  - pdns::ProtoZero::Message::setRequestorId
  - pdns::ProtoZero::Message::setInitialRequestID
  - pdns::ProtoZero::Message::setDeviceId
  - pdns::ProtoZero::Message::setNewlyObservedDomain
  - pdns::ProtoZero::Message::setDeviceName
  - pdns::ProtoZero::Message::setFromPort
  - pdns::ProtoZero::Message::setToPort
  - pdns::ProtoZero::Message::setWorkerId
  - pdns::ProtoZero::Message::setPacketCacheHit
  - pdns::ProtoZero::Message::setOutgoingQueries
  - pdns::ProtoZero::Message::setHeaderFlags
  - pdns::ProtoZero::Message::setEDNSVersion
  - pdns::ProtoZero::Message::setOpenTelemetryData
  - pdns::ProtoZero::Message::setEDE
  - pdns::ProtoZero::Message::setEDEText
  - pdns::ProtoZero::Message::setOpenTelemetryTraceID
  - pdns::ProtoZero::Message::startResponse
  - pdns::ProtoZero::Message::commitResponse
  - pdns::ProtoZero::Message::setResponseCode
  - pdns::ProtoZero::Message::setNetworkErrorResponseCode
  - pdns::ProtoZero::Message::setAppliedPolicy
  - pdns::ProtoZero::Message::addPolicyTags
  - pdns::ProtoZero::Message::addPolicyTag
  - pdns::ProtoZero::Message::setQueryTime
  - pdns::ProtoZero::Message::add_enum
  - pdns::ProtoZero::Message::add_bool
  - pdns::ProtoZero::Message::add_uint32
  - pdns::ProtoZero::Message::add_uint64
  - pdns::ProtoZero::Message::add_bytes
  - pdns::ProtoZero::Message::add_string
  - pdns::ProtoZero::Message::Message
  - ~Message()
  - pdns::ProtoZero::Message::Message
  - pdns::ProtoZero::Message::Message
  - '& operator=(const Message&)'
  - '& operator=(Message&&)'
  - pdns::ProtoZero::Message::setType
  - pdns::ProtoZero::Message::setHTTPVersion
  - pdns::ProtoZero::Message::setMessageIdentity
  - pdns::ProtoZero::Message::setServerIdentity
  - pdns::ProtoZero::Message::setSocketFamily
  - pdns::ProtoZero::Message::setSocketProtocol
  - pdns::ProtoZero::Message::setFrom
  - pdns::ProtoZero::Message::setTo
  - pdns::ProtoZero::Message::setInBytes
  - pdns::ProtoZero::Message::setTime
  - pdns::ProtoZero::Message::setTime
  - pdns::ProtoZero::Message::setId
  - pdns::ProtoZero::Message::setQuestion
  - pdns::ProtoZero::Message::setMeta
  - pdns::ProtoZero::Message::setEDNSSubnet
  - pdns::ProtoZero::Message::setRequestorId
  - pdns::ProtoZero::Message::setInitialRequestID
  - pdns::ProtoZero::Message::setDeviceId
  - pdns::ProtoZero::Message::setNewlyObservedDomain
  - pdns::ProtoZero::Message::setDeviceName
  - pdns::ProtoZero::Message::setFromPort
  - pdns::ProtoZero::Message::setToPort
  - pdns::ProtoZero::Message::setWorkerId
  - pdns::ProtoZero::Message::setPacketCacheHit
  - pdns::ProtoZero::Message::setOutgoingQueries
  - pdns::ProtoZero::Message::setHeaderFlags
  - pdns::ProtoZero::Message::setEDNSVersion
  - pdns::ProtoZero::Message::setOpenTelemetryData
  - pdns::ProtoZero::Message::setEDE
  - pdns::ProtoZero::Message::setEDEText
  - pdns::ProtoZero::Message::setOpenTelemetryTraceID
  - pdns::ProtoZero::Message::startResponse
  - pdns::ProtoZero::Message::commitResponse
  - pdns::ProtoZero::Message::setResponseCode
  - pdns::ProtoZero::Message::setNetworkErrorResponseCode
  - pdns::ProtoZero::Message::setAppliedPolicy
  - pdns::ProtoZero::Message::addPolicyTags
  - pdns::ProtoZero::Message::addPolicyTag
  - pdns::ProtoZero::Message::setQueryTime
  - pdns::ProtoZero::Message::add_enum
  - pdns::ProtoZero::Message::add_bool
  - pdns::ProtoZero::Message::add_uint32
  - pdns::ProtoZero::Message::add_uint64
  - pdns::ProtoZero::Message::add_bytes
  - pdns::ProtoZero::Message::add_string
  - pdns::ProtoZero::Message::Message
  - ~Message()
  - pdns::ProtoZero::Message::Message
  - pdns::ProtoZero::Message::Message
  - '& operator=(const Message&)'
  - '& operator=(Message&&)'
  - pdns::ProtoZero::Message::setType
  - pdns::ProtoZero::Message::setHTTPVersion
  - pdns::ProtoZero::Message::setMessageIdentity
  - pdns::ProtoZero::Message::setServerIdentity
  - pdns::ProtoZero::Message::setSocketFamily
  - pdns::ProtoZero::Message::setSocketProtocol
  - pdns::ProtoZero::Message::setFrom
  - pdns::ProtoZero::Message::setTo
  - pdns::ProtoZero::Message::setInBytes
  - pdns::ProtoZero::Message::setTime
  - pdns::ProtoZero::Message::setTime
  - pdns::ProtoZero::Message::setId
  - pdns::ProtoZero::Message::setQuestion
  - pdns::ProtoZero::Message::setMeta
  - pdns::ProtoZero::Message::setEDNSSubnet
  - pdns::ProtoZero::Message::setRequestorId
  - pdns::ProtoZero::Message::setInitialRequestID
  - pdns::ProtoZero::Message::setDeviceId
  - pdns::ProtoZero::Message::setNewlyObservedDomain
  - pdns::ProtoZero::Message::setDeviceName
  - pdns::ProtoZero::Message::setFromPort
  - pdns::ProtoZero::Message::setToPort
  - pdns::ProtoZero::Message::setWorkerId
  - pdns::ProtoZero::Message::setPacketCacheHit
  - pdns::ProtoZero::Message::setOutgoingQueries
  - pdns::ProtoZero::Message::setHeaderFlags
  - pdns::ProtoZero::Message::setEDNSVersion
  - pdns::ProtoZero::Message::setOpenTelemetryData
  - pdns::ProtoZero::Message::setEDE
  - pdns::ProtoZero::Message::setEDEText
  - pdns::ProtoZero::Message::setOpenTelemetryTraceID
  - pdns::ProtoZero::Message::startResponse
  - pdns::ProtoZero::Message::commitResponse
  - pdns::ProtoZero::Message::setResponseCode
  - pdns::ProtoZero::Message::setNetworkErrorResponseCode
  - pdns::ProtoZero::Message::setAppliedPolicy
  - pdns::ProtoZero::Message::addPolicyTags
  - pdns::ProtoZero::Message::addPolicyTag
  - pdns::ProtoZero::Message::setQueryTime
  - pdns::ProtoZero::Message::add_enum
  - pdns::ProtoZero::Message::add_bool
  - pdns::ProtoZero::Message::add_uint32
  - pdns::ProtoZero::Message::add_uint64
  - pdns::ProtoZero::Message::add_bytes
  - pdns::ProtoZero::Message::add_string
  - pdns::ProtoZero::Message::Message
  - ~Message()
  - pdns::ProtoZero::Message::Message
  - pdns::ProtoZero::Message::Message
  - '& operator=(const Message&)'
  - '& operator=(Message&&)'
  - pdns::ProtoZero::Message::setType
  - pdns::ProtoZero::Message::setHTTPVersion
  - pdns::ProtoZero::Message::setMessageIdentity
  - pdns::ProtoZero::Message::setServerIdentity
  - pdns::ProtoZero::Message::setSocketFamily
  - pdns::ProtoZero::Message::setSocketProtocol
  - pdns::ProtoZero::Message::setFrom
  - pdns::ProtoZero::Message::setTo
  - pdns::ProtoZero::Message::setInBytes
  - pdns::ProtoZero::Message::setTime
  - pdns::ProtoZero::Message::setTime
  - pdns::ProtoZero::Message::setId
  - pdns::ProtoZero::Message::setQuestion
  - pdns::ProtoZero::Message::setMeta
  - pdns::ProtoZero::Message::setEDNSSubnet
  - pdns::ProtoZero::Message::setRequestorId
  - pdns::ProtoZero::Message::setInitialRequestID
  - pdns::ProtoZero::Message::setDeviceId
  - pdns::ProtoZero::Message::setNewlyObservedDomain
  - pdns::ProtoZero::Message::setDeviceName
  - pdns::ProtoZero::Message::setFromPort
  - pdns::ProtoZero::Message::setToPort
  - pdns::ProtoZero::Message::setWorkerId
  - pdns::ProtoZero::Message::setPacketCacheHit
  - pdns::ProtoZero::Message::setOutgoingQueries
  - pdns::ProtoZero::Message::setHeaderFlags
  - pdns::ProtoZero::Message::setEDNSVersion
  - pdns::ProtoZero::Message::setOpenTelemetryData
  - pdns::ProtoZero::Message::setEDE
  - pdns::ProtoZero::Message::setEDEText
  - pdns::ProtoZero::Message::setOpenTelemetryTraceID
  - pdns::ProtoZero::Message::startResponse
  - pdns::ProtoZero::Message::commitResponse
  - pdns::ProtoZero::Message::setResponseCode
  - pdns::ProtoZero::Message::setNetworkErrorResponseCode
  - pdns::ProtoZero::Message::setAppliedPolicy
  - pdns::ProtoZero::Message::addPolicyTags
  - pdns::ProtoZero::Message::addPolicyTag
  - pdns::ProtoZero::Message::setQueryTime
  - pdns::ProtoZero::Message::add_enum
  - pdns::ProtoZero::Message::add_bool
  - pdns::ProtoZero::Message::add_uint32
  - pdns::ProtoZero::Message::add_uint64
  - pdns::ProtoZero::Message::add_bytes
  - pdns::ProtoZero::Message::add_string
  source_file: /src/pdns/pdns/protozero.hh
  types:
    enum:
    - enumerators:
      - name: stringVal
        value: '1'
      - name: intVal
        value: '2'
      item_type: enum
      name: MetaValueField
      pos:
        line_end: 44
        line_start: 40
        source_file: /src/pdns/pdns/protozero.hh
    - enumerators:
      - name: HTTP1
        value: '1'
      - name: HTTP2
        value: '2'
      - name: HTTP3
        value: '3'
      item_type: enum
      name: HTTPVersion
      pos:
        line_end: 50
        line_start: 45
        source_file: /src/pdns/pdns/protozero.hh
    - enumerators:
      - name: key
        value: '1'
      - name: value
        value: '2'
      item_type: enum
      name: MetaField
      pos:
        line_end: 55
        line_start: 51
        source_file: /src/pdns/pdns/protozero.hh
    - enumerators:
      - name: ts
        value: '1'
      - name: boolVal
        value: '4'
      - name: intVal
        value: '5'
      - name: event
        value: '2'
      - name: start
        value: '3'
      - name: stringVal
        value: '6'
      - name: bytesVal
        value: '7'
      - name: custom
        value: '8'
      item_type: enum
      name: Event
      pos:
        line_end: 66
        line_start: 56
        source_file: /src/pdns/pdns/protozero.hh
    - enumerators:
      - name: DNSQueryType
        value: '1'
      - name: DNSOutgoingQueryType
        value: '3'
      - name: DNSIncomingResponseType
        value: '4'
      - name: DNSResponseType
        value: '2'
      item_type: enum
      name: MessageType
      pos:
        line_end: 73
        line_start: 67
        source_file: /src/pdns/pdns/protozero.hh
    - enumerators:
      - name: socketProtocol
        value: '5'
      - name: timeSec
        value: '9'
      - name: deviceId
        value: '17'
      - name: response
        value: '13'
      - name: toPort
        value: '21'
      - name: workerId
        value: '25'
      - name: ednsVersion
        value: '29'
      - name: openTelemetryTraceID
        value: '33'
      - name: messageId
        value: '2'
      - name: from
        value: '6'
      - name: timeUsec
        value: '10'
      - name: newlyObservedDomain
        value: '18'
      - name: originalRequestorSubnet
        value: '14'
      - name: meta
        value: '22'
      - name: packetCacheHit
        value: '26'
      - name: openTelemetryData
        value: '30'
      - name: serverIdentity
        value: '3'
      - name: to
        value: '7'
      - name: id
        value: '11'
      - name: deviceName
        value: '19'
      - name: requestorId
        value: '15'
      - name: trace
        value: '23'
      - name: outgoingQueries
        value: '27'
      - name: ede
        value: '31'
      - name: type
        value: '1'
      - name: socketFamily
        value: '4'
      - name: inBytes
        value: '8'
      - name: initialRequestId
        value: '16'
      - name: question
        value: '12'
      - name: fromPort
        value: '20'
      - name: httpVersion
        value: '24'
      - name: headerFlags
        value: '28'
      - name: edeText
        value: '32'
      item_type: enum
      name: Field
      pos:
        line_end: 109
        line_start: 74
        source_file: /src/pdns/pdns/protozero.hh
    - enumerators:
      - name: qName
        value: '1'
      - name: qType
        value: '2'
      - name: qClass
        value: '3'
      item_type: enum
      name: QuestionField
      pos:
        line_end: 115
        line_start: 110
        source_file: /src/pdns/pdns/protozero.hh
    - enumerators:
      - name: rcode
        value: '1'
      - name: rrs
        value: '2'
      - name: appliedPolicy
        value: '3'
      - name: tags
        value: '4'
      - name: queryTimeSec
        value: '5'
      - name: queryTimeUsec
        value: '6'
      - name: appliedPolicyType
        value: '7'
      - name: appliedPolicyTrigger
        value: '8'
      - name: appliedPolicyHit
        value: '9'
      - name: appliedPolicyKind
        value: '10'
      - name: validationState
        value: '11'
      item_type: enum
      name: ResponseField
      pos:
        line_end: 129
        line_start: 116
        source_file: /src/pdns/pdns/protozero.hh
    - enumerators:
      - name: name
        value: '1'
      - name: rdata
        value: '5'
      - name: ttl
        value: '4'
      - name: type
        value: '2'
      - name: class_
        value: '3'
      - name: udr
        value: '6'
      item_type: enum
      name: RRField
      pos:
        line_end: 138
        line_start: 130
        source_file: /src/pdns/pdns/protozero.hh
    - enumerators:
      - name: UDP
        value: '1'
      - name: TCP
        value: '2'
      - name: DoT
        value: '3'
      - name: DoH
        value: '4'
      - name: DNSCryptUDP
        value: '5'
      - name: DNSCryptTCP
        value: '6'
      - name: DoQ
        value: '7'
      item_type: enum
      name: TransportProtocol
      pos:
        line_end: 148
        line_start: 139
        source_file: /src/pdns/pdns/protozero.hh
    - enumerators:
      - name: stringVal
        value: '1'
      - name: intVal
        value: '2'
      item_type: enum
      name: MetaValueField
      pos:
        line_end: 44
        line_start: 40
        source_file: /src/pdns/pdns/protozero.hh
    - enumerators:
      - name: HTTP1
        value: '1'
      - name: HTTP2
        value: '2'
      - name: HTTP3
        value: '3'
      item_type: enum
      name: HTTPVersion
      pos:
        line_end: 50
        line_start: 45
        source_file: /src/pdns/pdns/protozero.hh
    - enumerators:
      - name: key
        value: '1'
      - name: value
        value: '2'
      item_type: enum
      name: MetaField
      pos:
        line_end: 55
        line_start: 51
        source_file: /src/pdns/pdns/protozero.hh
    - enumerators:
      - name: ts
        value: '1'
      - name: boolVal
        value: '4'
      - name: intVal
        value: '5'
      - name: event
        value: '2'
      - name: start
        value: '3'
      - name: stringVal
        value: '6'
      - name: bytesVal
        value: '7'
      - name: custom
        value: '8'
      item_type: enum
      name: Event
      pos:
        line_end: 66
        line_start: 56
        source_file: /src/pdns/pdns/protozero.hh
    - enumerators:
      - name: DNSQueryType
        value: '1'
      - name: DNSOutgoingQueryType
        value: '3'
      - name: DNSIncomingResponseType
        value: '4'
      - name: DNSResponseType
        value: '2'
      item_type: enum
      name: MessageType
      pos:
        line_end: 73
        line_start: 67
        source_file: /src/pdns/pdns/protozero.hh
    - enumerators:
      - name: socketProtocol
        value: '5'
      - name: timeSec
        value: '9'
      - name: deviceId
        value: '17'
      - name: response
        value: '13'
      - name: toPort
        value: '21'
      - name: workerId
        value: '25'
      - name: ednsVersion
        value: '29'
      - name: openTelemetryTraceID
        value: '33'
      - name: messageId
        value: '2'
      - name: from
        value: '6'
      - name: timeUsec
        value: '10'
      - name: newlyObservedDomain
        value: '18'
      - name: originalRequestorSubnet
        value: '14'
      - name: meta
        value: '22'
      - name: packetCacheHit
        value: '26'
      - name: openTelemetryData
        value: '30'
      - name: serverIdentity
        value: '3'
      - name: to
        value: '7'
      - name: id
        value: '11'
      - name: deviceName
        value: '19'
      - name: requestorId
        value: '15'
      - name: trace
        value: '23'
      - name: outgoingQueries
        value: '27'
      - name: ede
        value: '31'
      - name: type
        value: '1'
      - name: socketFamily
        value: '4'
      - name: inBytes
        value: '8'
      - name: initialRequestId
        value: '16'
      - name: question
        value: '12'
      - name: fromPort
        value: '20'
      - name: httpVersion
        value: '24'
      - name: headerFlags
        value: '28'
      - name: edeText
        value: '32'
      item_type: enum
      name: Field
      pos:
        line_end: 109
        line_start: 74
        source_file: /src/pdns/pdns/protozero.hh
    - enumerators:
      - name: qName
        value: '1'
      - name: qType
        value: '2'
      - name: qClass
        value: '3'
      item_type: enum
      name: QuestionField
      pos:
        line_end: 115
        line_start: 110
        source_file: /src/pdns/pdns/protozero.hh
    - enumerators:
      - name: rcode
        value: '1'
      - name: rrs
        value: '2'
      - name: appliedPolicy
        value: '3'
      - name: tags
        value: '4'
      - name: queryTimeSec
        value: '5'
      - name: queryTimeUsec
        value: '6'
      - name: appliedPolicyType
        value: '7'
      - name: appliedPolicyTrigger
        value: '8'
      - name: appliedPolicyHit
        value: '9'
      - name: appliedPolicyKind
        value: '10'
      - name: validationState
        value: '11'
      item_type: enum
      name: ResponseField
      pos:
        line_end: 129
        line_start: 116
        source_file: /src/pdns/pdns/protozero.hh
    - enumerators:
      - name: name
        value: '1'
      - name: rdata
        value: '5'
      - name: ttl
        value: '4'
      - name: type
        value: '2'
      - name: class_
        value: '3'
      - name: udr
        value: '6'
      item_type: enum
      name: RRField
      pos:
        line_end: 138
        line_start: 130
        source_file: /src/pdns/pdns/protozero.hh
    - enumerators:
      - name: UDP
        value: '1'
      - name: TCP
        value: '2'
      - name: DoT
        value: '3'
      - name: DoH
        value: '4'
      - name: DNSCryptUDP
        value: '5'
      - name: DNSCryptTCP
        value: '6'
      - name: DoQ
        value: '7'
      item_type: enum
      name: TransportProtocol
      pos:
        line_end: 148
        line_start: 139
        source_file: /src/pdns/pdns/protozero.hh
    - enumerators:
      - name: stringVal
        value: '1'
      - name: intVal
        value: '2'
      item_type: enum
      name: MetaValueField
      pos:
        line_end: 44
        line_start: 40
        source_file: /src/pdns/pdns/protozero.hh
    - enumerators:
      - name: HTTP1
        value: '1'
      - name: HTTP2
        value: '2'
      - name: HTTP3
        value: '3'
      item_type: enum
      name: HTTPVersion
      pos:
        line_end: 50
        line_start: 45
        source_file: /src/pdns/pdns/protozero.hh
    - enumerators:
      - name: key
        value: '1'
      - name: value
        value: '2'
      item_type: enum
      name: MetaField
      pos:
        line_end: 55
        line_start: 51
        source_file: /src/pdns/pdns/protozero.hh
    - enumerators:
      - name: ts
        value: '1'
      - name: boolVal
        value: '4'
      - name: intVal
        value: '5'
      - name: event
        value: '2'
      - name: start
        value: '3'
      - name: stringVal
        value: '6'
      - name: bytesVal
        value: '7'
      - name: custom
        value: '8'
      item_type: enum
      name: Event
      pos:
        line_end: 66
        line_start: 56
        source_file: /src/pdns/pdns/protozero.hh
    - enumerators:
      - name: DNSQueryType
        value: '1'
      - name: DNSOutgoingQueryType
        value: '3'
      - name: DNSIncomingResponseType
        value: '4'
      - name: DNSResponseType
        value: '2'
      item_type: enum
      name: MessageType
      pos:
        line_end: 73
        line_start: 67
        source_file: /src/pdns/pdns/protozero.hh
    - enumerators:
      - name: socketProtocol
        value: '5'
      - name: timeSec
        value: '9'
      - name: deviceId
        value: '17'
      - name: response
        value: '13'
      - name: toPort
        value: '21'
      - name: workerId
        value: '25'
      - name: ednsVersion
        value: '29'
      - name: openTelemetryTraceID
        value: '33'
      - name: messageId
        value: '2'
      - name: from
        value: '6'
      - name: timeUsec
        value: '10'
      - name: newlyObservedDomain
        value: '18'
      - name: originalRequestorSubnet
        value: '14'
      - name: meta
        value: '22'
      - name: packetCacheHit
        value: '26'
      - name: openTelemetryData
        value: '30'
      - name: serverIdentity
        value: '3'
      - name: to
        value: '7'
      - name: id
        value: '11'
      - name: deviceName
        value: '19'
      - name: requestorId
        value: '15'
      - name: trace
        value: '23'
      - name: outgoingQueries
        value: '27'
      - name: ede
        value: '31'
      - name: type
        value: '1'
      - name: socketFamily
        value: '4'
      - name: inBytes
        value: '8'
      - name: initialRequestId
        value: '16'
      - name: question
        value: '12'
      - name: fromPort
        value: '20'
      - name: httpVersion
        value: '24'
      - name: headerFlags
        value: '28'
      - name: edeText
        value: '32'
      item_type: enum
      name: Field
      pos:
        line_end: 109
        line_start: 74
        source_file: /src/pdns/pdns/protozero.hh
    - enumerators:
      - name: qName
        value: '1'
      - name: qType
        value: '2'
      - name: qClass
        value: '3'
      item_type: enum
      name: QuestionField
      pos:
        line_end: 115
        line_start: 110
        source_file: /src/pdns/pdns/protozero.hh
    - enumerators:
      - name: rcode
        value: '1'
      - name: rrs
        value: '2'
      - name: appliedPolicy
        value: '3'
      - name: tags
        value: '4'
      - name: queryTimeSec
        value: '5'
      - name: queryTimeUsec
        value: '6'
      - name: appliedPolicyType
        value: '7'
      - name: appliedPolicyTrigger
        value: '8'
      - name: appliedPolicyHit
        value: '9'
      - name: appliedPolicyKind
        value: '10'
      - name: validationState
        value: '11'
      item_type: enum
      name: ResponseField
      pos:
        line_end: 129
        line_start: 116
        source_file: /src/pdns/pdns/protozero.hh
    - enumerators:
      - name: name
        value: '1'
      - name: rdata
        value: '5'
      - name: ttl
        value: '4'
      - name: type
        value: '2'
      - name: class_
        value: '3'
      - name: udr
        value: '6'
      item_type: enum
      name: RRField
      pos:
        line_end: 138
        line_start: 130
        source_file: /src/pdns/pdns/protozero.hh
    - enumerators:
      - name: UDP
        value: '1'
      - name: TCP
        value: '2'
      - name: DoT
        value: '3'
      - name: DoH
        value: '4'
      - name: DNSCryptUDP
        value: '5'
      - name: DNSCryptTCP
        value: '6'
      - name: DoQ
        value: '7'
      item_type: enum
      name: TransportProtocol
      pos:
        line_end: 148
        line_start: 139
        source_file: /src/pdns/pdns/protozero.hh
    - enumerators:
      - name: stringVal
        value: '1'
      - name: intVal
        value: '2'
      item_type: enum
      name: MetaValueField
      pos:
        line_end: 44
        line_start: 40
        source_file: /src/pdns/pdns/protozero.hh
    - enumerators:
      - name: HTTP1
        value: '1'
      - name: HTTP2
        value: '2'
      - name: HTTP3
        value: '3'
      item_type: enum
      name: HTTPVersion
      pos:
        line_end: 50
        line_start: 45
        source_file: /src/pdns/pdns/protozero.hh
    - enumerators:
      - name: key
        value: '1'
      - name: value
        value: '2'
      item_type: enum
      name: MetaField
      pos:
        line_end: 55
        line_start: 51
        source_file: /src/pdns/pdns/protozero.hh
    - enumerators:
      - name: ts
        value: '1'
      - name: boolVal
        value: '4'
      - name: intVal
        value: '5'
      - name: event
        value: '2'
      - name: start
        value: '3'
      - name: stringVal
        value: '6'
      - name: bytesVal
        value: '7'
      - name: custom
        value: '8'
      item_type: enum
      name: Event
      pos:
        line_end: 66
        line_start: 56
        source_file: /src/pdns/pdns/protozero.hh
    - enumerators:
      - name: DNSQueryType
        value: '1'
      - name: DNSOutgoingQueryType
        value: '3'
      - name: DNSIncomingResponseType
        value: '4'
      - name: DNSResponseType
        value: '2'
      item_type: enum
      name: MessageType
      pos:
        line_end: 73
        line_start: 67
        source_file: /src/pdns/pdns/protozero.hh
    - enumerators:
      - name: socketProtocol
        value: '5'
      - name: timeSec
        value: '9'
      - name: deviceId
        value: '17'
      - name: response
        value: '13'
      - name: toPort
        value: '21'
      - name: workerId
        value: '25'
      - name: ednsVersion
        value: '29'
      - name: openTelemetryTraceID
        value: '33'
      - name: messageId
        value: '2'
      - name: from
        value: '6'
      - name: timeUsec
        value: '10'
      - name: newlyObservedDomain
        value: '18'
      - name: originalRequestorSubnet
        value: '14'
      - name: meta
        value: '22'
      - name: packetCacheHit
        value: '26'
      - name: openTelemetryData
        value: '30'
      - name: serverIdentity
        value: '3'
      - name: to
        value: '7'
      - name: id
        value: '11'
      - name: deviceName
        value: '19'
      - name: requestorId
        value: '15'
      - name: trace
        value: '23'
      - name: outgoingQueries
        value: '27'
      - name: ede
        value: '31'
      - name: type
        value: '1'
      - name: socketFamily
        value: '4'
      - name: inBytes
        value: '8'
      - name: initialRequestId
        value: '16'
      - name: question
        value: '12'
      - name: fromPort
        value: '20'
      - name: httpVersion
        value: '24'
      - name: headerFlags
        value: '28'
      - name: edeText
        value: '32'
      item_type: enum
      name: Field
      pos:
        line_end: 109
        line_start: 74
        source_file: /src/pdns/pdns/protozero.hh
    - enumerators:
      - name: qName
        value: '1'
      - name: qType
        value: '2'
      - name: qClass
        value: '3'
      item_type: enum
      name: QuestionField
      pos:
        line_end: 115
        line_start: 110
        source_file: /src/pdns/pdns/protozero.hh
    - enumerators:
      - name: rcode
        value: '1'
      - name: rrs
        value: '2'
      - name: appliedPolicy
        value: '3'
      - name: tags
        value: '4'
      - name: queryTimeSec
        value: '5'
      - name: queryTimeUsec
        value: '6'
      - name: appliedPolicyType
        value: '7'
      - name: appliedPolicyTrigger
        value: '8'
      - name: appliedPolicyHit
        value: '9'
      - name: appliedPolicyKind
        value: '10'
      - name: validationState
        value: '11'
      item_type: enum
      name: ResponseField
      pos:
        line_end: 129
        line_start: 116
        source_file: /src/pdns/pdns/protozero.hh
    - enumerators:
      - name: name
        value: '1'
      - name: rdata
        value: '5'
      - name: ttl
        value: '4'
      - name: type
        value: '2'
      - name: class_
        value: '3'
      - name: udr
        value: '6'
      item_type: enum
      name: RRField
      pos:
        line_end: 138
        line_start: 130
        source_file: /src/pdns/pdns/protozero.hh
    - enumerators:
      - name: UDP
        value: '1'
      - name: TCP
        value: '2'
      - name: DoT
        value: '3'
      - name: DoH
        value: '4'
      - name: DNSCryptUDP
        value: '5'
      - name: DNSCryptTCP
        value: '6'
      - name: DoQ
        value: '7'
      item_type: enum
      name: TransportProtocol
      pos:
        line_end: 148
        line_start: 139
        source_file: /src/pdns/pdns/protozero.hh
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/pdns/pdns/circular_buffer.hh
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: BOOST_CB_DISABLE_DEBUG
      pos:
        line_end: 25
        line_start: 24
        source_file: /src/pdns/pdns/circular_buffer.hh
      type_or_value: '1'
    - item_type: preproc_def
      name: BOOST_CB_ENABLE_DEBUG
      pos:
        line_end: 29
        line_start: 28
        source_file: /src/pdns/pdns/circular_buffer.hh
      type_or_value: '0'
    structs: []
    typedefs: []
    union: []
- function_names:
  - dolog
  - dolog
  - dnsdist::logging::LoggingConfiguration::setSyslog
  - dnsdist::logging::LoggingConfiguration::setLogTimestamps
  - dnsdist::logging::LoggingConfiguration::setVerboseStream
  - dnsdist::logging::LoggingConfiguration::getSyslog
  - dnsdist::logging::LoggingConfiguration::getLogTimestamps
  - '& getVerboseStream()'
  - dnsdist::logging::LoggingConfiguration::setSyslog
  - dnsdist::logging::LoggingConfiguration::setLogTimestamps
  - dnsdist::logging::LoggingConfiguration::setVerboseStream
  - dnsdist::logging::LoggingConfiguration::getSyslog
  - dnsdist::logging::LoggingConfiguration::getLogTimestamps
  - '& getVerboseStream()'
  - setSyslogFacility
  - syslogLevelToStr
  - syslogLevelToStr
  - genlog
  - infolog
  - warnlog
  - errlog
  - infolog
  - warnlog
  - errlog
  source_file: /src/pdns/pdns/dolog.hh
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: vinfolog
      pos:
        line_end: 195
        line_start: 192
        source_file: /src/pdns/pdns/dolog.hh
      type_or_value: "if (dnsdist::configuration::getCurrentRuntimeConfiguration().d_verbose)
        \\\n  verboselog"
    - item_type: preproc_def
      name: vinfolog
      pos:
        line_end: 198
        line_start: 196
        source_file: /src/pdns/pdns/dolog.hh
      type_or_value: infolog
    - item_type: preproc_def
      name: vinfolog
      pos:
        line_end: 222
        line_start: 219
        source_file: /src/pdns/pdns/dolog.hh
      type_or_value: "if (false)     \\\n  infolog"
    structs: []
    typedefs: []
    union: []
- function_names:
  - TSIGTCPVerifier::TSIGTCPVerifier
  source_file: /src/pdns/pdns/tsigverifier.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - BOOST_AUTO_TEST_CASE
  source_file: /src/pdns/pdns/test-arguments_cc.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/pdns/pdns/sanitizer.hh
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: __SANITIZE_THREAD__
      pos:
        line_end: 29
        line_start: 28
        source_file: /src/pdns/pdns/sanitizer.hh
      type_or_value: '1'
    - item_type: preproc_def
      name: __SANITIZE_ADDRESS__
      pos:
        line_end: 32
        line_start: 31
        source_file: /src/pdns/pdns/sanitizer.hh
      type_or_value: '1'
    structs: []
    typedefs: []
    union: []
- function_names:
  - UDPNameserver::bindAddresses
  - AddressIsUs
  - UDPNameserver::UDPNameserver
  - UDPNameserver::send
  - UDPNameserver::receive
  source_file: /src/pdns/pdns/nameserver.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - resolversDefined
  - parseLocalResolvConf_locked
  - parseLocalResolvConf
  - stubParseResolveConf
  - stubDoResolve
  - stubDoResolve
  source_file: /src/pdns/pdns/stubresolver.cc
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: LOCAL_RESOLV_CONF_PATH
      pos:
        line_end: 21
        line_start: 20
        source_file: /src/pdns/pdns/stubresolver.cc
      type_or_value: '"/etc/resolv.conf"'
    - item_type: preproc_def
      name: LOCAL_RESOLV_CONF_MAX_CHECK_INTERVAL
      pos:
        line_end: 23
        line_start: 22
        source_file: /src/pdns/pdns/stubresolver.cc
      type_or_value: '60'
    structs: []
    typedefs: []
    union: []
- function_names:
  - RemoteLoggerPool::RemoteLoggerPool
  - RemoteLoggerPool::toString
  - RemoteLoggerPool::queueData
  source_file: /src/pdns/pdns/remote_logger_pool.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - BOOST_AUTO_TEST_CASE
  source_file: /src/pdns/pdns/test-dnsrecordcontent.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - pdns::sha1sum
  - pdns::sha256sum
  - pdns::sha384sum
  - pdns::sha512sum
  - pdns::SHADigest::SHADigest
  - pdns::SHADigest::mdctx
  - ~SHADigest()
  - pdns::SHADigest::process
  - pdns::SHADigest::digest
  - pdns::sha1sum
  - pdns::sha256sum
  - pdns::sha384sum
  - pdns::sha512sum
  - pdns::SHADigest::SHADigest
  - pdns::SHADigest::mdctx
  - ~SHADigest()
  - pdns::SHADigest::process
  - pdns::SHADigest::digest
  source_file: /src/pdns/pdns/sha.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - readn
  - readn
  - ChunkedSigningPipe::helperWorker
  - ChunkedSigningPipe::ChunkedSigningPipe
  - ChunkedSigningPipe::~ChunkedSigningPipe()
  - dedupLessThan
  - dedupEqual
  - dedupLessThan
  - dedupEqual
  - ChunkedSigningPipe::dedupRRSet
  - ChunkedSigningPipe::submit
  - ChunkedSigningPipe::waitForRW
  - ChunkedSigningPipe::addSignedToChunks
  - ChunkedSigningPipe::sendRRSetToWorker
  - ChunkedSigningPipe::getReady
  - ChunkedSigningPipe::worker
  - ChunkedSigningPipe::flushToSign
  - ChunkedSigningPipe::getChunk
  source_file: /src/pdns/pdns/signingpipe.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - humanTime
  - CommunicatorClass::addSuckRequest
  - catalogDiff
  - catalogProcess
  - CommunicatorClass::ixfrSuck
  - processRecordForZS
  - doAxfr
  - CommunicatorClass::suck
  - SecondarySenderReceiver
  - deliverTimeout
  - send
  - receive
  - deliverAnswer
  - CommunicatorClass::addSecondaryCheckRequest
  - CommunicatorClass::addTryAutoPrimaryRequest
  - CommunicatorClass::secondaryRefresh
  - CommunicatorClass::getSuckRequests
  - CommunicatorClass::getSuckRequestsWaiting
  - CommunicatorClass::markAsFailed
  source_file: /src/pdns/pdns/auth-secondarycommunicator.cc
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: domain
        type: DomainInfo
      - name: remote
        type: ComboAddress
      - name: isDnssecZone
        type: bool
      - name: isPresigned
        type: bool
      - name: isNSEC3
        type: bool
      - name: optOutFlag
        type: bool
      - name: ns3pr
        type: NSEC3PARAMRecordContent
      - name: isNarrow
        type: bool
      - name: soa_serial
        type: unsigned int
      - name: nsset
        type: set<DNSName>
      - name: numDeltas
        type: size_t
      - name: logPrefix
        type: string
      - name: slog
        type: std::shared_ptr<Logr::Logger>
      item_type: struct
      name: XFRContext
      pos:
        line_end: 101
        line_start: 82
        source_file: /src/pdns/pdns/auth-secondarycommunicator.cc
    - fields:
      - name: di
        type: DomainInfo
      - name: dnssecOk
        type: bool
      - name: localaddr
        type: ComboAddress
      - name: tsigkeyname
        type: DNSName
      - name: tsigsecret
        type: string
      item_type: struct
      name: DomainNotificationInfo
      pos:
        line_end: 1197
        line_start: 1190
        source_file: /src/pdns/pdns/auth-secondarycommunicator.cc
    - fields:
      - name: di
        type: DomainInfo
      - name: dnssecOk
        type: bool
      - name: localaddr
        type: ComboAddress
      - name: tsigkeyname
        type: DNSName
      - name: tsigsecret
        type: string
      item_type: struct
      name: DomainNotificationInfo
      pos:
        line_end: 1197
        line_start: 1190
        source_file: /src/pdns/pdns/auth-secondarycommunicator.cc
    - fields:
      - name: d_freshness
        type: map<uint32_t, Answer>
      - name: d_resolver
        type: Resolver
      item_type: struct
      name: SecondarySenderReceiver
      pos:
        line_end: 1249
        line_start: 1200
        source_file: /src/pdns/pdns/auth-secondarycommunicator.cc
    - fields:
      - name: theirSerial
        type: uint32_t
      - name: theirInception
        type: uint32_t
      - name: theirExpire
        type: uint32_t
      item_type: struct
      name: Answer
      pos:
        line_end: 1212
        line_start: 1207
        source_file: /src/pdns/pdns/auth-secondarycommunicator.cc
    typedefs: []
    union: []
- function_names:
  - QuestionIdentifier
  - operator<(const QuestionIdentifier& rhs) const
  - create
  - create
  - '& operator<<(ostream &s, const QuestionIdentifier& qi)'
  source_file: /src/pdns/pdns/anadns.hh
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: d_source
        type: ComboAddress
      - name: d_qname
        type: DNSName
      - name: d_qtype
        type: uint16_t
      - name: d_id
        type: uint16_t
      item_type: struct
      name: QuestionIdentifier
      pos:
        line_end: 72
        line_start: 29
        source_file: /src/pdns/pdns/anadns.hh
    typedefs: []
    union: []
- function_names:
  - DNSSECKeeper::doesDNSSEC
  - DNSSECKeeper::isSecuredZone
  - DNSSECKeeper::isMetadataOne
  - DNSSECKeeper::isPresigned
  - DNSSECKeeper::isSignalingZone
  - DNSSECKeeper::addKey
  - DNSSECKeeper::clearAllCaches
  - DNSSECKeeper::clearKeyCache
  - DNSSECKeeper::clearMetaCache
  - DNSSECKeeper::clearCaches
  - DNSSECKeeper::addKey
  - keyCompareByKindAndID
  - DNSSECKeeper::getKeyById
  - DNSSECKeeper::removeKey
  - DNSSECKeeper::deactivateKey
  - DNSSECKeeper::activateKey
  - DNSSECKeeper::unpublishKey
  - DNSSECKeeper::publishKey
  - DNSSECKeeper::getFromMetaOrDefault
  - DNSSECKeeper::getFromMeta
  - DNSSECKeeper::getFromMetaNoCache
  - DNSSECKeeper::getSoaEdit
  - DNSSECKeeper::dbdnssecCacheSizes
  - DNSSECKeeper::getNSEC3PARAM
  - DNSSECKeeper::checkNSEC3PARAM
  - DNSSECKeeper::setNSEC3PARAM
  - DNSSECKeeper::unsetNSEC3PARAM
  - DNSSECKeeper::setPresigned
  - DNSSECKeeper::unsetPresigned
  - DNSSECKeeper::setPublishCDS
  - DNSSECKeeper::getPublishCDS
  - DNSSECKeeper::unsetPublishCDS
  - DNSSECKeeper::setPublishCDNSKEY
  - DNSSECKeeper::getPublishCDNSKEY
  - DNSSECKeeper::unsetPublishCDNSKEY
  - DNSSECKeeper::getEntryPoints
  - DNSSECKeeper::getKeys
  - DNSSECKeeper::checkKeys
  - DNSSECKeeper::getPreRRSIGs
  - DNSSECKeeper::TSIGGrantsAccess
  - DNSSECKeeper::getTSIGForAccess
  - DNSSECKeeper::unSecureZone
  - DNSSECKeeper::rectifyZone
  - DNSSECKeeper::cleanup
  - DNSSECKeeper::setMaxEntries
  source_file: /src/pdns/pdns/dbdnsseckeeper.cc
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: ordername
        type: DNSName
      - name: auth
        type: bool
      - name: update
        type: bool
      item_type: struct
      name: RecordStatus
      pos:
        line_end: 723
        line_start: 718
        source_file: /src/pdns/pdns/dbdnsseckeeper.cc
    typedefs: []
    union: []
- function_names: []
  source_file: /src/pdns/pdns/dnstap.hh
  types:
    enum:
    - enumerators:
      - name: auth_query
        value: '1'
      - name: client_query
        value: '5'
      - name: resolver_response
        value: '4'
      - name: auth_response
        value: '2'
      - name: resolver_query
        value: '3'
      - name: client_response
        value: '6'
      - name: forwarder_query
        value: '7'
      - name: forwarded_response
        value: '8'
      - name: stub_query
        value: '9'
      - name: stub_response
        value: '10'
      - name: tool_response
        value: '12'
      - name: tool_query
        value: '11'
      item_type: enum
      name: MessageType
      pos:
        line_end: 51
        line_start: 37
        source_file: /src/pdns/pdns/dnstap.hh
    - enumerators:
      - name: DoUDP
        value: '1'
      - name: DoTCP
        value: '2'
      - name: DNSCryptUDP
        value: '5'
      - name: DoT
        value: '3'
      - name: DoH
        value: '4'
      - name: DNSCryptTCP
        value: '6'
      - name: DoQ
        value: '7'
      item_type: enum
      name: ProtocolType
      pos:
        line_end: 61
        line_start: 52
        source_file: /src/pdns/pdns/dnstap.hh
    - enumerators:
      - name: HTTP1
        value: '1'
      - name: HTTP3
        value: '3'
      - name: HTTP2
        value: '2'
      item_type: enum
      name: HttpProtocolType
      pos:
        line_end: 67
        line_start: 62
        source_file: /src/pdns/pdns/dnstap.hh
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/pdns/pdns/uuid-utils.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - ~PortsFDMultiplexer()
  - PortsFDMultiplexer::getName
  - makePorts
  - PortsRegisterOurselves
  - PortsFDMultiplexer::PortsFDMultiplexer
  - convertEventKind
  - PortsFDMultiplexer::addFD
  - PortsFDMultiplexer::removeFD
  - PortsFDMultiplexer::getAvailableFDs
  - PortsFDMultiplexer::run
  - acceptData
  - main
  source_file: /src/pdns/pdns/portsmplexer.cc
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields: []
      item_type: struct
      name: PortsRegisterOurselves
      pos:
        line_end: 52
        line_start: 46
        source_file: /src/pdns/pdns/portsmplexer.cc
    typedefs: []
    union: []
- function_names:
  - Inflighter::Inflighter
  - Inflighter::init
  - Inflighter::getTimeouts
  - Inflighter::getUnexpecteds
  - Inflighter<Container, SendReceive>::run
  - SendReceive
  - ~SendReceive()
  - send
  - receive
  - deliverAnswer
  - main
  source_file: /src/pdns/pdns/inflighter.cc
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields: []
      item_type: struct
      name: TimeTag
      pos:
        line_end: 41
        line_start: 41
        source_file: /src/pdns/pdns/inflighter.cc
    - fields:
      - name: iter
        type: typename Container::iterator
      - name: id
        type: typename SenderReceiver::Identifier
      - name: sentTime
        type: struct timeval
      item_type: struct
      name: TTDItem
      pos:
        line_end: 82
        line_start: 77
        source_file: /src/pdns/pdns/inflighter.cc
    - fields:
      - name: d_remote
        type: ComboAddress
      - name: d_socket
        type: int
      - name: d_id
        type: int
      item_type: struct
      name: SendReceive
      pos:
        line_end: 249
        line_start: 189
        source_file: /src/pdns/pdns/inflighter.cc
    typedefs:
    - item_type: typedef
      name: ttdwatch_t
      pos:
        line_end: 95
        line_start: 84
        source_file: /src/pdns/pdns/inflighter.cc
      type: multi_index_container
    - item_type: typedef
      name: waiters_by_ttd_index_t
      pos:
        line_end: 164
        line_start: 164
        source_file: /src/pdns/pdns/inflighter.cc
      type: typename ttdwatch_t::template index<TimeTag>::type
    - item_type: typedef
      name: Identifier
      pos:
        line_end: 191
        line_start: 191
        source_file: /src/pdns/pdns/inflighter.cc
      type: int
    - item_type: typedef
      name: Answer
      pos:
        line_end: 192
        line_start: 192
        source_file: /src/pdns/pdns/inflighter.cc
      type: int
    union: []
- function_names:
  - GenericDNSPacketWriter<Container>::GenericDNSPacketWriter
  - GenericDNSPacketWriter<Container>::getHeader
  - GenericDNSPacketWriter<Container>::startRecord
  - GenericDNSPacketWriter<Container>::addOpt
  - GenericDNSPacketWriter<Container>::xfr48BitInt
  - GenericDNSPacketWriter<Container>::xfrNodeOrLocatorID
  - GenericDNSPacketWriter<Container>::xfr32BitInt
  - GenericDNSPacketWriter<Container>::xfr16BitInt
  - GenericDNSPacketWriter<Container>::xfr8BitInt
  - GenericDNSPacketWriter<Container>::xfrText
  - GenericDNSPacketWriter<Container>::xfrUnquotedText
  - GenericDNSPacketWriter<Container>::lookupName
  - GenericDNSPacketWriter<Container>::xfrName
  - GenericDNSPacketWriter<Container>::xfrBlob
  - GenericDNSPacketWriter<Container>::xfrBlob
  - GenericDNSPacketWriter<Container>::xfrBlobNoSpaces
  - GenericDNSPacketWriter<Container>::xfrHexBlob
  - GenericDNSPacketWriter<Container>::xfrSvcParamKeyVals
  - GenericDNSPacketWriter<Container>::getRecordPayload
  - GenericDNSPacketWriter<Container>::getWireFormatContent
  - GenericDNSPacketWriter<Container>::size
  - GenericDNSPacketWriter<Container>::rollback
  - GenericDNSPacketWriter<Container>::truncate
  - GenericDNSPacketWriter<Container>::commit
  - GenericDNSPacketWriter<Container>::getSizeWithOpts
  source_file: /src/pdns/pdns/dnswriter.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  source_file: /src/pdns/pdns/test-dns_random_hh.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - HttpRequest::HttpRequest
  - HttpRequest::setSLog
  - HttpResponse::HttpResponse
  - HttpResponse::HttpResponse
  - HttpResponse::setSLog
  - HttpException::HttpException
  - HttpException::HttpException
  - HttpException::response
  - HttpBadRequestException::HttpBadRequestException
  - HttpBadRequestException::HttpBadRequestException
  - HttpUnauthorizedException::HttpUnauthorizedException
  - HttpForbiddenException::HttpForbiddenException
  - HttpForbiddenException::HttpForbiddenException
  - HttpNotFoundException::HttpNotFoundException
  - HttpNotFoundException::HttpNotFoundException
  - HttpMethodNotAllowedException::HttpMethodNotAllowedException
  - HttpMethodNotAllowedException::HttpMethodNotAllowedException
  - HttpConflictException::HttpConflictException
  - HttpConflictException::HttpConflictException
  - HttpInternalServerErrorException::HttpInternalServerErrorException
  - HttpInternalServerErrorException::HttpInternalServerErrorException
  - ApiException::ApiException
  - Server::Server
  - ~Server()
  - Server::accept
  - ~WebServer()
  - WebServer::setSLog
  - WebServer::setApiKey
  - WebServer::setPassword
  - WebServer::setMaxBodySize
  - WebServer::setConnectionTimeout
  - WebServer::setACL
  - WebServer::registerConnection
  - WebServer::releaseConnection
  - WebServer::setLogLevel
  - WebServer::setLogLevel
  - WebServer::getLogLevel
  - WebServer::setCrossOriginRequestHeader
  - WebServer::createServer
  source_file: /src/pdns/pdns/webserver.hh
  types:
    enum:
    - enumerators:
      - name: None
        value: '0'
      - name: Detailed
        value: '20'
      - name: Normal
        value: '10'
      item_type: enum
      name: LogLevel
      pos:
        line_end: 257
        line_start: 253
        source_file: /src/pdns/pdns/webserver.hh
    preproc_defs: []
    structs: []
    typedefs:
    - item_type: typedef
      name: HandlerFunction
      pos:
        line_end: 237
        line_start: 237
        source_file: /src/pdns/pdns/webserver.hh
      type: function<void(HttpRequest* req, HttpResponse* resp)>
    union: []
- function_names:
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  source_file: /src/pdns/pdns/test-ixfr_cc.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - Ewma::Ewma
  - Ewma::submit
  - Ewma::get10
  - Ewma::get5
  - Ewma::get1
  - Ewma::getMax
  - AuthWebServer::AuthWebServer
  - AuthWebServer::go
  - AuthWebServer::statThread
  - htmlescape
  - printtable
  - printvars
  - printargs
  - AuthWebServer::makePercentage
  - AuthWebServer::indexGET
  - AuthWebServer::indexPOST
  - makeRecordContent
  - makeApiRecordContent
  - makeBackendRecordContent
  - getZoneInfo
  - boolFromHttpRequest
  - fillZone
  - productServerStatisticsFetch
  - productServerStatisticsFetch
  - validateGatheredRRType
  - normalizeJsonString
  - gatherRecords
  - gatherComments
  - checkDefaultDNSSECAlgos
  - throwUnableToSecure
  - addDefaultDNSSECKeys
  - isZoneApiRectifyEnabled
  - extractDomainInfoFromDocument
  - extractJsonTSIGKeyIds
  - updateZoneSerial
  - updateDomainSettingsFromDocument
  - isValidMetadataKind
  - apiDocs
  - ZoneData::ZoneData
  - apiZoneMetadataGET
  - apiZoneMetadataPOST
  - apiZoneMetadataKindGET
  - apiZoneMetadataKindPUT
  - apiZoneMetadataKindDELETE
  - apiZoneCryptoKeysCheckKeyExists
  - getInquireKeyId
  - apiZoneCryptokeysExport
  - apiZoneCryptokeysGET
  - apiZoneCryptokeysPostProcessing
  - apiZoneCryptokeysDELETE
  - apiZoneCryptokeysPOST
  - apiZoneCryptokeysPUT
  - gatherRecordsFromZone
  - areUnderscoresAllowed
  - checkNewRecords
  - checkTSIGKey
  - makeJSONTSIGKey
  - makeJSONTSIGKey
  - apiServerTSIGKeysGET
  - apiServerTSIGKeysPOST
  - TSIGKeyData::TSIGKeyData
  - apiServerTSIGKeyDetailGET
  - apiServerTSIGKeyDetailPUT
  - apiServerTSIGKeyDetailDELETE
  - apiServerAutoprimaryDetailDELETE
  - apiServerAutoprimariesGET
  - apiServerAutoprimariesPOST
  - apiServerZonesPOST
  - apiServerZonesGET
  - apiServerZoneDetailPUT
  - apiServerZoneDetailDELETE
  - apiServerZoneDetailPATCH
  - apiServerZoneDetailGET
  - apiServerZoneExport
  - apiServerZoneAxfrRetrieve
  - apiServerZoneNotify
  - apiServerZoneRectify
  - validateChangeType
  - replaceZoneRecords
  - parseRecordNameAndType
  - applyDelete
  - applyReplace
  - applyPruneOrExtend
  - patchZone
  - apiServerSearchData
  - apiServerCacheFlush
  - '& operator<<(std::ostream& outStream, StatType statType)'
  - prometheusMetrics
  - jsonFillZoneNameArray
  - apiServerViewsAllGET
  - apiServerViewsGET
  - apiServerViewsPOST
  - apiServerViewsDELETE
  - apiServerNetworksGET
  - apiServerNetworksPUT
  - cssfunction
  - AuthWebServer::webThread
  source_file: /src/pdns/pdns/ws-auth.cc
  types:
    enum:
    - enumerators:
      - name: DELETE
      - name: EXTEND
      - name: REPLACE
      - name: PRUNE
      item_type: enum
      name: changeType
      pos:
        line_end: 2494
        line_start: 2488
        source_file: /src/pdns/pdns/ws-auth.cc
    - enumerators:
      - name: SUCCESS
      - name: NOP
      - name: ABORT
      item_type: enum
      name: applyResult
      pos:
        line_end: 2575
        line_start: 2570
        source_file: /src/pdns/pdns/ws-auth.cc
    - enumerators:
      - name: ALL
      - name: COMMENT
      - name: RECORD
      - name: ZONE
      item_type: enum
      name: ObjectType
      pos:
        line_end: 2917
        line_start: 2911
        source_file: /src/pdns/pdns/ws-auth.cc
    preproc_defs: []
    structs:
    - fields:
      - name: edit_done
        type: bool
      - name: edit_api_kind
        type: string
      - name: edit_kind
        type: string
      item_type: struct
      name: soaEditSettings
      pos:
        line_end: 2604
        line_start: 2599
        source_file: /src/pdns/pdns/ws-auth.cc
    typedefs: []
    union: []
- function_names:
  - sizeBounds
  - ResponseStats::ResponseStats
  - ResponseStats::submitResponse
  - ResponseStats::submitResponse
  - ResponseStats::getQTypeResponseCounts
  - ResponseStats::getSizeResponseCounts
  - ResponseStats::getRCodeResponseCounts
  - ResponseStats::getQTypeReport
  source_file: /src/pdns/pdns/responsestats.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - EDNSSubnetOpts::getFromString
  - EDNSSubnetOpts::getFromString
  - EDNSSubnetOpts::makeOptString
  source_file: /src/pdns/pdns/ednssubnet.cc
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: family
        type: uint16_t
      - name: sourcePrefixLength
        type: uint8_t
      - name: scopePrefixLength
        type: uint8_t
      item_type: struct
      name: EDNSSubnetOptsWire
      pos:
        line_end: 33
        line_start: 28
        source_file: /src/pdns/pdns/ednssubnet.cc
    - fields:
      - name: family
        type: uint16_t
      - name: sourcePrefixLength
        type: uint8_t
      - name: scopePrefixLength
        type: uint8_t
      item_type: struct
      name: EDNSSubnetOptsWire
      pos:
        line_end: 33
        line_start: 28
        source_file: /src/pdns/pdns/ednssubnet.cc
    typedefs: []
    union: []
- function_names:
  - operator<(const struct Entry& rhs) const
  - main
  source_file: /src/pdns/pdns/dnsdemog.cc
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: ip
        type: ComboAddress
      - name: port
        type: uint16_t
      - name: id
        type: uint16_t
      item_type: struct
      name: Entry
      pos:
        line_end: 48
        line_start: 38
        source_file: /src/pdns/pdns/dnsdemog.cc
    typedefs:
    - item_type: typedef
      name: emap_t
      pos:
        line_end: 51
        line_start: 51
        source_file: /src/pdns/pdns/dnsdemog.cc
      type: map
    union: []
- function_names:
  - getLogger
  - Logger::log
  - Logger::setLoglevel
  - Logger::toConsole
  - Logger::open
  - Logger::setName
  - Logger::Logger
  - '& Logger::operator<<(Urgency u)'
  - '& Logger::getPerThread()'
  - '& Logger::operator<<(const string& s)'
  - '& Logger::operator<<(const char* s)'
  - '& Logger::operator<<(ostream& (&)(ostream&))'
  - '& Logger::operator<<(const DNSName& d)'
  - '& Logger::operator<<(const ZoneName& zone)'
  - '& Logger::operator<<(const ComboAddress& ca)'
  - '& Logger::operator<<(const SockaddrWrapper& sockaddr)'
  - addTraceTS
  source_file: /src/pdns/pdns/logger.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - DomainInfo
  - operator<(const DomainInfo& rhs) const
  - getKindString
  - getKindString
  - stringToKind
  - isPrimaryType
  - isSecondaryType
  - isCatalogType
  - isPrimary
  - AutoPrimary
  - ~DNSBackend()
  - DNSBackend::replaceRRSet
  - DNSBackend::listSubZone
  - DNSBackend::isDnssecDomainMetadata
  - DNSBackend::getAllDomainMetadata
  - DNSBackend::getDomainMetadata
  - DNSBackend::getDomainMetadataOne
  - DNSBackend::setDomainMetadata
  - DNSBackend::setDomainMetadataOne
  - DNSBackend::getDomainKeys
  - DNSBackend::removeDomainKey
  - DNSBackend::addDomainKey
  - DNSBackend::activateDomainKey
  - DNSBackend::deactivateDomainKey
  - DNSBackend::publishDomainKey
  - DNSBackend::unpublishDomainKey
  - DNSBackend::setTSIGKey
  - DNSBackend::getTSIGKey
  - DNSBackend::getTSIGKeys
  - DNSBackend::deleteTSIGKey
  - DNSBackend::getBeforeAndAfterNamesAbsolute
  - DNSBackend::updateDNSSECOrderNameAndAuth
  - DNSBackend::updateEmptyNonTerminals
  - DNSBackend::doesDNSSEC
  - DNSBackend::listComments
  - DNSBackend::getComment
  - DNSBackend::feedComment
  - DNSBackend::replaceComments
  - DNSBackend::startTransaction
  - DNSBackend::commitTransaction
  - DNSBackend::abortTransaction
  - DNSBackend::inTransaction
  - DNSBackend::reload
  - DNSBackend::rediscover
  - DNSBackend::feedRecord
  - DNSBackend::feedEnts
  - DNSBackend::feedEnts3
  - DNSBackend::getDomainInfo
  - DNSBackend::getUnfreshSecondaryInfos
  - DNSBackend::alsoNotifies
  - DNSBackend::getUpdatedPrimaries
  - DNSBackend::getCatalogMembers
  - DNSBackend::setStale
  - DNSBackend::setFresh
  - DNSBackend::setNotified
  - DNSBackend::setPrimaries
  - DNSBackend::setKind
  - DNSBackend::setOptions
  - DNSBackend::setCatalog
  - DNSBackend::setAccount
  - DNSBackend::autoPrimaryAdd
  - DNSBackend::autoPrimaryRemove
  - DNSBackend::autoPrimariesList
  - DNSBackend::autoPrimaryBackend
  - DNSBackend::createDomain
  - DNSBackend::createSecondaryDomain
  - DNSBackend::deleteDomain
  - DNSBackend::directBackendCmd
  - DNSBackend::viewList
  - DNSBackend::viewListZones
  - DNSBackend::viewAddZone
  - DNSBackend::viewDelZone
  - DNSBackend::networkSet
  - DNSBackend::networkList
  - DNSBackend::hasCreatedLocalFiles
  - DNSBackend::rectifyZoneHook
  - '& getPrefix()'
  - DNSBackend::get_unsafe
  - DNSBackend::flush
  - BackendFactory::BackendFactory
  - ~BackendFactory()
  - BackendFactory::makeMetadataOnly
  - BackendFactory::declareArguments
  - DBException::DBException
  - SOAData
  - '& qname() const'
  - getNegativeTTL
  source_file: /src/pdns/pdns/dnsbackend.hh
  types:
    enum:
    - enumerators:
      - name: Primary
      - name: Producer
      - name: Secondary
      - name: Consumer
      - name: Native
      - name: All
      item_type: enum
      name: DomainKind
      pos:
        line_end: 86
        line_start: 78
        source_file: /src/pdns/pdns/dnsbackend.hh
    - enumerators:
      - name: CAP_DNSSEC
        value: 1 << 0
      - name: CAP_DIRECT
        value: 1 << 2
      - name: CAP_LIST
        value: 1 << 3
      - name: CAP_COMMENTS
        value: 1 << 1
      - name: CAP_CREATE
        value: 1 << 4
      - name: CAP_VIEWS
        value: 1 << 5
      - name: CAP_SEARCH
        value: 1 << 6
      item_type: enum
      name: Capabilities
      pos:
        line_end: 168
        line_start: 159
        source_file: /src/pdns/pdns/dnsbackend.hh
    preproc_defs: []
    structs:
    - fields:
      - name: zone
        type: ZoneName
      - name: catalog
        type: ZoneName
      - name: last_check
        type: time_t
      - name: options
        type: string
      - name: account
        type: string
      - name: primaries
        type: vector<ComboAddress>
      - name: '* backend'
        type: DNSBackend
      - name: id
        type: domainid_t
      - name: notified_serial
        type: uint32_t
      - name: receivedNotify
        type: bool
      - name: serial
        type: uint32_t
      - name: kind
        type: "enum DomainKind : uint8_t\n  {\n    Primary,\n    Secondary,\n    Native,\n
          \   Producer,\n    Consumer,\n    All\n  }"
      item_type: struct
      name: DomainInfo
      pos:
        line_end: 125
        line_start: 53
        source_file: /src/pdns/pdns/dnsbackend.hh
    - fields:
      - name: name
        type: DNSName
      - name: algorithm
        type: DNSName
      - name: key
        type: std::string
      item_type: struct
      name: TSIGKey
      pos:
        line_end: 132
        line_start: 127
        source_file: /src/pdns/pdns/dnsbackend.hh
    - fields:
      - name: ip
        type: std::string
      - name: nameserver
        type: std::string
      - name: account
        type: std::string
      item_type: struct
      name: AutoPrimary
      pos:
        line_end: 141
        line_start: 134
        source_file: /src/pdns/pdns/dnsbackend.hh
    - fields:
      - name: content
        type: std::string
      - name: id
        type: unsigned int
      - name: flags
        type: unsigned int
      - name: active
        type: bool
      - name: published
        type: bool
      item_type: struct
      name: KeyData
      pos:
        line_end: 240
        line_start: 233
        source_file: /src/pdns/pdns/dnsbackend.hh
    - fields:
      - name: nameserver
        type: DNSName
      - name: rname
        type: DNSName
      - name: ttl
        type: uint32_t
      - name: serial
        type: uint32_t
      - name: refresh
        type: uint32_t
      - name: retry
        type: uint32_t
      - name: expire
        type: uint32_t
      - name: minimum
        type: uint32_t
      - name: '* db'
        type: DNSBackend
      - name: domain_id
        type: domainid_t
      item_type: struct
      name: SOAData
      pos:
        line_end: 620
        line_start: 597
        source_file: /src/pdns/pdns/dnsbackend.hh
    typedefs: []
    union: []
- function_names:
  - doSecPoll
  source_file: /src/pdns/pdns/secpoll-auth.cc
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: PACKAGEVERSION
      pos:
        line_end: 21
        line_start: 20
        source_file: /src/pdns/pdns/secpoll-auth.cc
      type_or_value: getPDNSVersion()
    structs: []
    typedefs: []
    union: []
- function_names:
  - Fixture
  - addSignerParams
  - checkRR
  - test_generic_signer
  - BOOST_FIXTURE_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  source_file: /src/pdns/pdns/test-signers.cc
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: iscMap
        type: std::string
      - name: dsSHA1
        type: std::string
      - name: dsSHA256
        type: std::string
      - name: dsSHA384
        type: std::string
      - name: signature
        type: std::vector<uint8_t>
      - name: zoneRepresentation
        type: std::string
      - name: name
        type: std::string
      - name: rfcMsgDump
        type: std::string
      - name: rfcB64Signature
        type: std::string
      - name: bits
        type: int
      - name: flags
        type: uint16_t
      - name: rfcFlags
        type: uint16_t
      - name: algorithm
        type: uint8_t
      - name: isDeterministic
        type: bool
      - name: pem
        type: std::string
      item_type: struct
      name: SignerParams
      pos:
        line_end: 42
        line_start: 25
        source_file: /src/pdns/pdns/test-signers.cc
    - fields:
      - name: message
        type: std::string
      - name: signerParams
        type: std::unordered_map<uint8_t, struct SignerParams>
      item_type: struct
      name: Fixture
      pos:
        line_end: 334
        line_start: 298
        source_file: /src/pdns/pdns/test-signers.cc
    typedefs: []
    union: []
- function_names: []
  source_file: /src/pdns/pdns/namespaces.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - trySetThreadName
  - setThreadName
  source_file: /src/pdns/pdns/threadname.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - EDNSSubnetOpts::setSource
  - '& getSource() const'
  - EDNSSubnetOpts::getFamily
  - EDNSSubnetOpts::getSourcePrefixLength
  - EDNSSubnetOpts::setScopePrefixLength
  - EDNSSubnetOpts::getScopePrefixLength
  - EDNSSubnetOpts::getScope
  source_file: /src/pdns/pdns/ednssubnet.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/pdns/pdns/ednsoptions.hh
  types:
    enum:
    - enumerators:
      - name: NSID
        value: '3'
      - name: DAU
        value: '5'
      - name: ECS
        value: '8'
      - name: DHU
        value: '6'
      - name: N3U
        value: '7'
      - name: EXPIRE
        value: '9'
      - name: COOKIE
        value: '10'
      - name: TCPKEEPALIVE
        value: '11'
      - name: PADDING
        value: '12'
      - name: CHAIN
        value: '13'
      - name: KEYTAG
        value: '14'
      - name: EXTENDEDERROR
        value: '15'
      - name: TRACEPARENT
        value: '65500'
      item_type: enum
      name: EDNSOptionCodeEnum
      pos:
        line_end: 30
        line_start: 30
        source_file: /src/pdns/pdns/ednsoptions.hh
    preproc_defs: []
    structs:
    - fields: []
      item_type: struct
      name: EDNSOptionCode
      pos:
        line_end: 31
        line_start: 27
        source_file: /src/pdns/pdns/ednsoptions.hh
    - fields:
      - name: '* content'
        type: char
      - name: size
        type: uint16_t
      item_type: struct
      name: EDNSOptionViewValue
      pos:
        line_end: 40
        line_start: 36
        source_file: /src/pdns/pdns/ednsoptions.hh
    - fields:
      - name: values
        type: std::vector<EDNSOptionViewValue>
      item_type: struct
      name: EDNSOptionView
      pos:
        line_end: 45
        line_start: 42
        source_file: /src/pdns/pdns/ednsoptions.hh
    - fields:
      - name: values
        type: std::vector<std::string>
      item_type: struct
      name: EDNSOptionValues
      pos:
        line_end: 50
        line_start: 47
        source_file: /src/pdns/pdns/ednsoptions.hh
    typedefs: []
    union: []
- function_names:
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  source_file: /src/pdns/pdns/test-rcpgenerator_cc.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - ArgvMap::laxParse
  - ArgvMap::laxFile
  - ArgvMap::getHelp
  - ArgvMap::getDefault
  - ArgvMap::setSLog
  source_file: /src/pdns/pdns/arguments.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - threadMangler
  - threadMangler2
  - BOOST_AUTO_TEST_CASE
  source_file: /src/pdns/pdns/test-statbag_cc.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/pdns/pdns/root-dnssec.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  source_file: /src/pdns/pdns/test-svc_records_cc.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/pdns/pdns/ixfrdist-web.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/pdns/pdns/secpoll-auth.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - isAZoneKey
  - isRevokedKey
  - getByTag
  - isCoveredByNSEC3Hash
  - isCoveredByNSEC3Hash
  - isCoveredByNSEC
  - nsecProvesENT
  - getHashFromNSEC3
  - getHashFromNSEC3
  - denialProvesNoDelegation
  - isWildcardExpanded
  - isWildcardExpanded
  - isWildcardExpandedOntoItself
  - isWildcardExpandedOntoItself
  - getNSECOwnerName
  - isNSECAncestorDelegation
  - isNSEC3AncestorDelegation
  - provesNoDataWildCard
  - getClosestEncloserFromNSEC
  - provesNoWildCard
  - provesNSEC3NoWildCard
  - matchesNSEC
  - getNSEC3DenialProofWorstCaseIterationsCount
  - getDenial
  - isRRSIGNotExpired
  - isRRSIGIncepted
  - checkSignatureInceptionAndExpiry
  - checkSignatureWithKey
  - checkSignatureInceptionAndExpiry
  - checkSignatureWithKey
  - validateWithKeySet
  - getTrustAnchor
  - haveNegativeTrustAnchor
  - validateDNSKeysAgainstDS
  - isSupportedDS
  - getSigner
  - vStateToString
  - '& operator<<(std::ostream& ostr, const vState dstate)'
  - '& operator<<(std::ostream& ostr, const dState dstate)'
  - updateDNSSECValidationState
  source_file: /src/pdns/pdns/validate.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - pdns::channel::Notifier::Notifier
  - pdns::channel::Notifier::notify
  - pdns::channel::Waiter::Waiter
  - pdns::channel::Waiter::clear
  - pdns::channel::Waiter::getDescriptor
  - pdns::channel::createNotificationQueue
  - pdns::channel::Notifier::Notifier
  - pdns::channel::Notifier::notify
  - pdns::channel::Waiter::Waiter
  - pdns::channel::Waiter::clear
  - pdns::channel::Waiter::getDescriptor
  - pdns::channel::createNotificationQueue
  source_file: /src/pdns/pdns/channel.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - SendReceive
  - ~SendReceive()
  - send
  - receive
  - deliverTimeout
  - deliverAnswer
  - SendReceiveRes
  - ~SendReceiveRes()
  - send
  - receive
  - deliverTimeout
  - deliverAnswer
  - printStats
  - parseZone
  - resolveNS
  - readRESNames
  - main
  source_file: /src/pdns/pdns/comfun.cc
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: names
        type: set<DNSName>
      - name: count
        type: unsigned int
      - name: isPowerDNS
        type: bool
      item_type: struct
      name: namecount
      pos:
        line_end: 43
        line_start: 39
        source_file: /src/pdns/pdns/comfun.cc
    - fields:
      - name: content
        type: string
      - name: ttl
        type: int
      - name: qclass
        type: uint16_t
      item_type: struct
      name: DNSResult
      pos:
        line_end: 50
        line_start: 45
        source_file: /src/pdns/pdns/comfun.cc
    - fields:
      - name: a
        type: ComboAddress
      - name: nsnames
        type: set<DNSName>
      - name: qname
        type: DNSName
      - name: count
        type: unsigned int
      item_type: struct
      name: NSQuery
      pos:
        line_end: 58
        line_start: 52
        source_file: /src/pdns/pdns/comfun.cc
    - fields:
      - name: d_socket
        type: int
      - name: d_idqueue
        type: std::deque<uint16_t>
      - name: d_errors
        type: unsigned int
      - name: d_received
        type: unsigned int
      - name: '& d_res'
        type: map<ComboAddress, namecount, ComboAddress::addressOnlyLessThan>
      item_type: struct
      name: SendReceive
      pos:
        line_end: 182
        line_start: 60
        source_file: /src/pdns/pdns/comfun.cc
    - fields:
      - name: addrs
        type: vector<ComboAddress>
      - name: rcode
        type: uint16_t
      item_type: struct
      name: RESResult
      pos:
        line_end: 189
        line_start: 185
        source_file: /src/pdns/pdns/comfun.cc
    - fields:
      - name: d_socket
        type: int
      - name: d_idqueue
        type: std::deque<uint16_t>
      - name: '& d_out'
        type: map<DNSName, vector<ComboAddress>>
      - name: d_errors
        type: unsigned int
      - name: d_received
        type: unsigned int
      item_type: struct
      name: SendReceiveRes
      pos:
        line_end: 305
        line_start: 193
        source_file: /src/pdns/pdns/comfun.cc
    - fields:
      - name: count
        type: unsigned int
      - name: addrs
        type: vector<ComboAddress>
      item_type: struct
      name: NSCount
      pos:
        line_end: 440
        line_start: 436
        source_file: /src/pdns/pdns/comfun.cc
    typedefs:
    - item_type: typedef
      name: Identifier
      pos:
        line_end: 62
        line_start: 62
        source_file: /src/pdns/pdns/comfun.cc
      type: int
    - item_type: typedef
      name: Answer
      pos:
        line_end: 63
        line_start: 63
        source_file: /src/pdns/pdns/comfun.cc
      type: DNSResult
    - item_type: typedef
      name: RESQuery
      pos:
        line_end: 191
        line_start: 191
        source_file: /src/pdns/pdns/comfun.cc
      type: DNSName
    - item_type: typedef
      name: Identifier
      pos:
        line_end: 195
        line_start: 195
        source_file: /src/pdns/pdns/comfun.cc
      type: int
    - item_type: typedef
      name: Answer
      pos:
        line_end: 196
        line_start: 196
        source_file: /src/pdns/pdns/comfun.cc
      type: RESResult
    union: []
- function_names:
  - AuthZoneCache::AuthZoneCache
  - AuthZoneCache::getEntry
  - AuthZoneCache::getViewFromNetwork
  - AuthZoneCache::getVariantFromView
  - AuthZoneCache::setZoneVariant
  - AuthZoneCache::isEnabled
  - AuthZoneCache::clear
  - AuthZoneCache::replace
  - AuthZoneCache::replace
  - AuthZoneCache::replace
  - AuthZoneCache::add
  - AuthZoneCache::remove
  - AuthZoneCache::setReplacePending
  - AuthZoneCache::addToView
  - AuthZoneCache::removeFromView
  - AuthZoneCache::updateNetwork
  source_file: /src/pdns/pdns/auth-zonecache.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - SodiumED25519DNSCryptoKeyEngine::SodiumED25519DNSCryptoKeyEngine
  - SodiumED25519DNSCryptoKeyEngine::getName
  - SodiumED25519DNSCryptoKeyEngine::maker
  - SodiumED25519DNSCryptoKeyEngine::create
  - SodiumED25519DNSCryptoKeyEngine::createFromPEMFile
  - SodiumED25519DNSCryptoKeyEngine::convertToPEMFile
  - SodiumED25519DNSCryptoKeyEngine::getBits
  - SodiumED25519DNSCryptoKeyEngine::convertToISCVector
  - SodiumED25519DNSCryptoKeyEngine::fromISCMap
  - SodiumED25519DNSCryptoKeyEngine::getPublicKeyString
  - SodiumED25519DNSCryptoKeyEngine::fromPublicKeyString
  - SodiumED25519DNSCryptoKeyEngine::sign
  - SodiumED25519DNSCryptoKeyEngine::verify
  - LoaderSodiumStruct
  - LoaderSodiumStruct
  source_file: /src/pdns/pdns/sodiumsigners.cc
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields: []
      item_type: struct
      name: LoaderSodiumStruct
      pos:
        line_end: 214
        line_start: 208
        source_file: /src/pdns/pdns/sodiumsigners.cc
    - fields: []
      item_type: struct
      name: LoaderSodiumStruct
      pos:
        line_end: 214
        line_start: 208
        source_file: /src/pdns/pdns/sodiumsigners.cc
    typedefs: []
    union: []
- function_names:
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  source_file: /src/pdns/pdns/test-base64_cc.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - MOADNSException::MOADNSException
  - PacketReader::PacketReader
  - PacketReader::xfr32BitInt
  - PacketReader::xfrIP
  - PacketReader::xfrIP6
  - PacketReader::xfrCAWithoutPort
  - PacketReader::xfrCAPort
  - PacketReader::xfrTime
  - PacketReader::xfr16BitInt
  - PacketReader::xfrType
  - PacketReader::xfr8BitInt
  - PacketReader::xfrName
  - PacketReader::xfrText
  - PacketReader::xfrUnquotedText
  - PacketReader::eof
  - PacketReader::getRemaining
  - PacketReader::consumeRemaining
  - PacketReader::getPosition
  - PacketReader::skip
  - ~DNSRecordContent()
  - DNSRecordContent::serialize
  - operator==(const DNSRecordContent& rhs) const
  - DNSRecordContent::doRecordCheck
  - DNSRecordContent::regist
  - DNSRecordContent::isUnknownType
  - DNSRecordContent::TypeToNumber
  - DNSRecordContent::NumberToType
  - DNSRecordContent::lock
  - DNSRecord
  - DNSRecord
  - print
  - toString
  - setContent
  - setContent
  - '& getContent() const'
  - operator<(const DNSRecord& rhs) const
  - prettyCompare
  - operator==(const DNSRecord& rhs) const
  - sizeEstimate
  - operator<(const DNSZoneRecord& other) const
  - UnknownRecordContent::UnknownRecordContent
  - UnknownRecordContent::getType
  - '& getRawContent() const'
  - UnknownRecordContent::sizeEstimate
  - MOADNSParser::MOADNSParser
  - MOADNSParser::MOADNSParser
  - MOADNSParser::getTSIGPos
  - getRR
  - DNSPacketMangler::DNSPacketMangler
  - DNSPacketMangler::DNSPacketMangler
  - DNSPacketMangler::skipDomainName
  - DNSPacketMangler::skipBytes
  - DNSPacketMangler::rewindBytes
  - DNSPacketMangler::get32BitInt
  - DNSPacketMangler::get16BitInt
  - DNSPacketMangler::get8BitInt
  - DNSPacketMangler::skipRData
  - DNSPacketMangler::skipRDataAndReturnOffsets
  - DNSPacketMangler::decreaseAndSkip32BitInt
  - DNSPacketMangler::setAndSkip32BitInt
  - DNSPacketMangler::getOffset
  - DNSPacketMangler::swapInPlace
  - DNSPacketMangler::moveOffset
  - DNSPacketMangler::rewindOffset
  source_file: /src/pdns/pdns/dnsparser.hh
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: d_name
        type: DNSName
      - name: d_content
        type: std::shared_ptr<const DNSRecordContent>
      - name: d_type
        type: uint16_t
      - name: d_class
        type: uint16_t
      - name: d_ttl
        type: uint32_t
      - name: d_clen
        type: uint16_t
      - name: d_place
        type: DNSResourceRecord::Place
      item_type: struct
      name: DNSRecord
      pos:
        line_end: 470
        line_start: 334
        source_file: /src/pdns/pdns/dnsparser.hh
    - fields:
      - name: domain_id
        type: domainid_t
      - name: scopeMask
        type: uint8_t
      - name: signttl
        type: int
      - name: wildcardname
        type: DNSName
      - name: auth
        type: bool
      - name: disabled
        type: bool
      - name: dr
        type: DNSRecord
      item_type: struct
      name: DNSZoneRecord
      pos:
        line_end: 485
        line_start: 472
        source_file: /src/pdns/pdns/dnsparser.hh
    typedefs:
    - item_type: typedef
      name: makerfunc_t(const struct DNSRecord& dr, PacketReader& pr)
      pos:
        line_end: 266
        line_start: 266
        source_file: /src/pdns/pdns/dnsparser.hh
      type: shared_ptr<DNSRecordContent>
    - item_type: typedef
      name: zmakerfunc_t(const string& str)
      pos:
        line_end: 267
        line_start: 267
        source_file: /src/pdns/pdns/dnsparser.hh
      type: shared_ptr<DNSRecordContent>
    - item_type: typedef
      name: typemap_t
      pos:
        line_end: 323
        line_start: 323
        source_file: /src/pdns/pdns/dnsparser.hh
      type: map<std::pair<uint16_t, uint16_t>, makerfunc_t* >
    - item_type: typedef
      name: zmakermap_t
      pos:
        line_end: 324
        line_start: 324
        source_file: /src/pdns/pdns/dnsparser.hh
      type: map<std::pair<uint16_t, uint16_t>, zmakerfunc_t* >
    - item_type: typedef
      name: t2namemap_t
      pos:
        line_end: 325
        line_start: 325
        source_file: /src/pdns/pdns/dnsparser.hh
      type: map<std::pair<uint16_t, uint16_t>, string >
    - item_type: typedef
      name: n2typemap_t
      pos:
        line_end: 326
        line_start: 326
        source_file: /src/pdns/pdns/dnsparser.hh
      type: map<string, std::pair<uint16_t, uint16_t> >
    union: []
- function_names:
  - StatRing::StatRing
  - '& operator=(const StatRing&)'
  - '& operator=(StatRing&&)'
  - StatRing::StatRing
  - StatRing::popisort
  - StatBag::ringAccount
  - StatBag::ringAccount
  - StatBag::ringAccount
  - StatBag::doRings
  - StatBag::deposit
  - StatBag::inc
  source_file: /src/pdns/pdns/statbag.hh
  types:
    enum:
    - enumerators:
      - name: counter
        value: '1'
      - name: gauge
        value: '2'
      item_type: enum
      name: StatType
      pos:
        line_end: 64
        line_start: 61
        source_file: /src/pdns/pdns/statbag.hh
    preproc_defs: []
    structs: []
    typedefs:
    - item_type: typedef
      name: func_t
      pos:
        line_end: 75
        line_start: 75
        source_file: /src/pdns/pdns/statbag.hh
      type: function<uint64_t(const std::string&)>
    - item_type: typedef
      name: funcstats_t
      pos:
        line_end: 76
        line_start: 76
        source_file: /src/pdns/pdns/statbag.hh
      type: map
    union: []
- function_names:
  - DNSSECKeeper::DNSSECKeeper
  - DNSSECKeeper::DNSSECKeeper
  - ~DNSSECKeeper()
  - DNSSECKeeper::DNSSECKeeper
  - operator=(const DNSSECKeeper&)
  - DNSSECKeeper::startTransaction
  - DNSSECKeeper::commitTransaction
  - DNSSECKeeper::isStale
  - DNSSECKeeper::isStale
  source_file: /src/pdns/pdns/dnsseckeeper.hh
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: fname
        type: string
      - name: id
        type: unsigned int
      - name: active
        type: bool
      - name: keyType
        type: keytype_t
      - name: hasSEPBit
        type: bool
      - name: published
        type: bool
      item_type: struct
      name: KeyMetaData
      pos:
        line_end: 51
        line_start: 43
        source_file: /src/pdns/pdns/dnsseckeeper.hh
    - fields:
      - name: d_domain
        type: ZoneName
      - name: d_keys
        type: keys_t
      - name: d_ttd
        type: unsigned int
      item_type: struct
      name: KeyCacheEntry
      pos:
        line_end: 157
        line_start: 145
        source_file: /src/pdns/pdns/dnsseckeeper.hh
    - fields:
      - name: d_domain
        type: ZoneName
      - name: d_value
        type: METAValues
      - name: d_ttd
        type: time_t
      item_type: struct
      name: METACacheEntry
      pos:
        line_end: 169
        line_start: 159
        source_file: /src/pdns/pdns/dnsseckeeper.hh
    - fields: []
      item_type: struct
      name: KeyCacheTag
      pos:
        line_end: 171
        line_start: 171
        source_file: /src/pdns/pdns/dnsseckeeper.hh
    - fields: []
      item_type: struct
      name: CompositeTag
      pos:
        line_end: 172
        line_start: 172
        source_file: /src/pdns/pdns/dnsseckeeper.hh
    - fields: []
      item_type: struct
      name: SequencedTag
      pos:
        line_end: 173
        line_start: 173
        source_file: /src/pdns/pdns/dnsseckeeper.hh
    typedefs:
    - item_type: typedef
      name: keymeta_t
      pos:
        line_end: 52
        line_start: 52
        source_file: /src/pdns/pdns/dnsseckeeper.hh
      type: pair<DNSSECPrivateKey, KeyMetaData>
    - item_type: typedef
      name: keyset_t
      pos:
        line_end: 53
        line_start: 53
        source_file: /src/pdns/pdns/dnsseckeeper.hh
      type: vector<keymeta_t >
    - item_type: typedef
      name: METAValues
      pos:
        line_end: 139
        line_start: 139
        source_file: /src/pdns/pdns/dnsseckeeper.hh
      type: map<std::string, std::vector<std::string> >
    - item_type: typedef
      name: keys_t
      pos:
        line_end: 147
        line_start: 147
        source_file: /src/pdns/pdns/dnsseckeeper.hh
      type: vector
    - item_type: typedef
      name: keycache_t
      pos:
        line_end: 181
        line_start: 175
        source_file: /src/pdns/pdns/dnsseckeeper.hh
      type: multi_index_container
    - item_type: typedef
      name: metacache_t
      pos:
        line_end: 189
        line_start: 183
        source_file: /src/pdns/pdns/dnsseckeeper.hh
      type: multi_index_container
    union: []
- function_names:
  - '&& DnstapMessage::getBuffer()'
  - DnstapMessage::DnstapMessage
  - DnstapMessage::setExtra
  source_file: /src/pdns/pdns/dnstap.cc
  types:
    enum:
    - enumerators:
      - name: identity
        value: '1'
      - name: message
        value: '14'
      - name: extra
        value: '3'
      - name: type
        value: '15'
      - name: version
        value: '2'
      item_type: enum
      name: protozero::pbf_tag_type
      pos:
        line_end: 19
        line_start: 12
        source_file: /src/pdns/pdns/dnstap.cc
    - enumerators:
      - name: identity
        value: '1'
      - name: message
        value: '14'
      - name: extra
        value: '3'
      - name: type
        value: '15'
      - name: version
        value: '2'
      item_type: enum
      name: protozero::pbf_tag_type
      pos:
        line_end: 19
        line_start: 12
        source_file: /src/pdns/pdns/dnstap.cc
    - enumerators:
      - name: message
        value: '1'
      item_type: enum
      name: protozero::pbf_tag_type
      pos:
        line_end: 27
        line_start: 24
        source_file: /src/pdns/pdns/dnstap.cc
    - enumerators:
      - name: message
        value: '1'
      item_type: enum
      name: protozero::pbf_tag_type
      pos:
        line_end: 27
        line_start: 24
        source_file: /src/pdns/pdns/dnstap.cc
    - enumerators:
      - name: inet
        value: '1'
      - name: inet6
        value: '2'
      item_type: enum
      name: protozero::pbf_tag_type
      pos:
        line_end: 36
        line_start: 32
        source_file: /src/pdns/pdns/dnstap.cc
    - enumerators:
      - name: inet
        value: '1'
      - name: inet6
        value: '2'
      item_type: enum
      name: protozero::pbf_tag_type
      pos:
        line_end: 36
        line_start: 32
        source_file: /src/pdns/pdns/dnstap.cc
    - enumerators:
      - name: type
        value: '1'
      - name: query_address
        value: '4'
      - name: socket_protocol
        value: '3'
      - name: socket_family
        value: '2'
      - name: response_address
        value: '5'
      - name: query_port
        value: '6'
      - name: response_port
        value: '7'
      - name: query_time_sec
        value: '8'
      - name: query_time_nsec
        value: '9'
      - name: query_message
        value: '10'
      - name: response_time_sec
        value: '12'
      - name: policy
        value: '15'
      - name: query_zone
        value: '11'
      - name: response_time_nsec
        value: '13'
      - name: response_message
        value: '14'
      - name: http_protocol
        value: '16'
      item_type: enum
      name: protozero::pbf_tag_type
      pos:
        line_end: 59
        line_start: 41
        source_file: /src/pdns/pdns/dnstap.cc
    - enumerators:
      - name: type
        value: '1'
      - name: query_address
        value: '4'
      - name: socket_protocol
        value: '3'
      - name: socket_family
        value: '2'
      - name: response_address
        value: '5'
      - name: query_port
        value: '6'
      - name: response_port
        value: '7'
      - name: query_time_sec
        value: '8'
      - name: query_time_nsec
        value: '9'
      - name: query_message
        value: '10'
      - name: response_time_sec
        value: '12'
      - name: policy
        value: '15'
      - name: query_zone
        value: '11'
      - name: response_time_nsec
        value: '13'
      - name: response_message
        value: '14'
      - name: http_protocol
        value: '16'
      item_type: enum
      name: protozero::pbf_tag_type
      pos:
        line_end: 59
        line_start: 41
        source_file: /src/pdns/pdns/dnstap.cc
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - DynMessenger::DynMessenger
  - DynMessenger::DynMessenger
  - DynMessenger::~DynMessenger()
  - DynMessenger::send
  - DynMessenger::receive
  source_file: /src/pdns/pdns/dynmessenger.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - DynListener::getFunc
  source_file: /src/pdns/pdns/dynlistener.hh
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*func'
        type: g_funk_t
      - name: args
        type: string
      - name: usage
        type: string
      item_type: struct
      name: g_funkwithusage_t
      pos:
        line_end: 48
        line_start: 48
        source_file: /src/pdns/pdns/dynlistener.hh
    typedefs:
    - item_type: typedef
      name: g_funk_t(const vector<string> &parts, Utility::pid_t ppid, Logr::log_t
        slog)
      pos:
        line_end: 47
        line_start: 47
        source_file: /src/pdns/pdns/dynlistener.hh
      type: string
    - item_type: typedef
      name: g_funkdb_t
      pos:
        line_end: 49
        line_start: 49
        source_file: /src/pdns/pdns/dynlistener.hh
      type: map
    union: []
- function_names:
  - '& getTypeString(enum CatalogType type)'
  - CatalogInfo::CatalogInfo
  - CatalogInfo::CatalogInfo
  - CatalogInfo::setType
  - CatalogInfo::addGroup
  - CatalogInfo::getUnique
  - operator<(const CatalogInfo& rhs) const
  source_file: /src/pdns/pdns/auth-catalogzone.hh
  types:
    enum:
    - enumerators:
      - name: None
      - name: Consumer
      - name: Producer
      item_type: enum
      name: CatalogType
      pos:
        line_end: 40
        line_start: 35
        source_file: /src/pdns/pdns/auth-catalogzone.hh
    preproc_defs: []
    structs: []
    typedefs:
    - item_type: typedef
      name: CatalogHashMap
      pos:
        line_end: 30
        line_start: 30
        source_file: /src/pdns/pdns/auth-catalogzone.hh
      type: map
    union: []
- function_names:
  - makeSimpleHeader
  - makeLocalProxyHeader
  - makeProxyHeader
  - isProxyHeaderComplete
  - parseProxyHeader
  source_file: /src/pdns/pdns/proxy-protocol.cc
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: PROXYMAGIC
      pos:
        line_end: 27
        line_start: 26
        source_file: /src/pdns/pdns/proxy-protocol.cc
      type_or_value: '"\x0D\x0A\x0D\x0A\x00\x0D\x0A\x51\x55\x49\x54\x0A"'
    - item_type: preproc_def
      name: PROXYMAGICLEN
      pos:
        line_end: 28
        line_start: 27
        source_file: /src/pdns/pdns/proxy-protocol.cc
      type_or_value: sizeof(PROXYMAGIC)-1
    structs: []
    typedefs: []
    union: []
- function_names:
  - noinit_adaptor
  - noinit_adaptor
  - noinit_adaptor
  - construct
  - construct
  - destroy
  - "operator==(const noinit_adaptor<T>& lhs,\n                       const noinit_adaptor<U>&
    rhs) noexcept"
  - "operator!=(const noinit_adaptor<T>& lhs,\n                       const noinit_adaptor<U>&
    rhs) noexcept"
  - noinit_adapt
  source_file: /src/pdns/pdns/noinitvector.hh
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields: []
      item_type: struct
      name: noinit_adaptor
      pos:
        line_end: 43
        line_start: 13
        source_file: /src/pdns/pdns/noinitvector.hh
    - fields: []
      item_type: struct
      name: rebind
      pos:
        line_end: 19
        line_start: 16
        source_file: /src/pdns/pdns/noinitvector.hh
    typedefs:
    - item_type: typedef
      name: other
      pos:
        line_end: 18
        line_start: 17
        source_file: /src/pdns/pdns/noinitvector.hh
      type: noinit_adaptor
    union: []
- function_names:
  - AuthQueryCache::AuthQueryCache
  - AuthQueryCache::MapCombo::reserve(size_t numberOfEntries)
  - AuthQueryCache::getEntry
  - AuthQueryCache::insert
  - AuthQueryCache::getEntryLocked
  - AuthQueryCache::getCounts
  - AuthQueryCache::purge
  - AuthQueryCache::purgeExact
  - AuthQueryCache::purge
  - AuthQueryCache::cleanup
  - AuthQueryCache::cleanupIfNeeded
  source_file: /src/pdns/pdns/auth-querycache.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - getUniqueID
  - getUniqueID
  source_file: /src/pdns/pdns/uuid-utils.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/pdns/pdns/tsigutils.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - CircularWriteBuffer::CircularWriteBuffer
  - RemoteLoggerInterface::RemoteLoggerInterface
  - RemoteLoggerInterface::RemoteLoggerInterface
  - RemoteLoggerInterface::RemoteLoggerInterface
  - '& operator=(const RemoteLoggerInterface&)'
  - '& operator=(RemoteLoggerInterface&&)'
  - ~RemoteLoggerInterface()
  - RemoteLoggerInterface::logQueries
  - RemoteLoggerInterface::logResponses
  - RemoteLoggerInterface::logNODs
  - RemoteLoggerInterface::logUDRs
  - RemoteLoggerInterface::setLogQueries
  - RemoteLoggerInterface::setLogResponses
  - RemoteLoggerInterface::setLogNODs
  - RemoteLoggerInterface::setLogUDRs
  - '& operator+=(const Stats& rhs)'
  - RemoteLogger::RemoteLogger
  - RemoteLogger::RemoteLogger
  - '& operator=(const RemoteLogger&)'
  - '& operator=(RemoteLogger&&)'
  - RemoteLogger::address
  - RemoteLogger::maxSize
  - RemoteLogger::name
  - RemoteLogger::toString
  - RemoteLogger::getStats
  - RemoteLogger::stop
  source_file: /src/pdns/pdns/remote_logger.hh
  types:
    enum:
    - enumerators:
      - name: Queued
      - name: OtherError
      - name: PipeFull
      - name: TooLarge
      item_type: enum
      name: Result
      pos:
        line_end: 70
        line_start: 64
        source_file: /src/pdns/pdns/remote_logger.hh
    - enumerators:
      - name: Two
      - name: Four
      item_type: enum
      name: FrameSize
      pos:
        line_end: 131
        line_start: 127
        source_file: /src/pdns/pdns/remote_logger.hh
    preproc_defs: []
    structs:
    - fields:
      - name: d_queued
        type: uint64_t
      - name: d_pipeFull
        type: uint64_t
      - name: d_tooLarge
        type: uint64_t
      - name: d_otherError
        type: uint64_t
      item_type: struct
      name: Stats
      pos:
        line_end: 108
        line_start: 93
        source_file: /src/pdns/pdns/remote_logger.hh
    - fields:
      - name: d_writer
        type: CircularWriteBuffer
      - name: d_socket
        type: std::unique_ptr<Socket>
      - name: d_stats
        type: RemoteLoggerInterface::Stats
      item_type: struct
      name: RuntimeData
      pos:
        line_end: 182
        line_start: 177
        source_file: /src/pdns/pdns/remote_logger.hh
    typedefs: []
    union: []
- function_names:
  - SensitiveData::reallyClearContent
  - SensitiveData::SensitiveData
  - '& SensitiveData::operator=(SensitiveData&& rhs) noexcept'
  - SensitiveData::SensitiveData
  - SensitiveData::~SensitiveData()
  - SensitiveData::clear
  - hashPasswordInternal
  - generateRandomSalt
  - hashPassword
  - hashPassword
  - verifyPassword
  - parseHashed
  - verifyPassword
  - isPasswordHashed
  - CredentialsHolder::CredentialsHolder
  - CredentialsHolder::~CredentialsHolder()
  - CredentialsHolder::matches
  - CredentialsHolder::isHashingAvailable
  - CredentialsHolder::readFromTerminal
  source_file: /src/pdns/pdns/credentials.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - DNSPacket::DNSPacket
  - '& operator=(const DNSPacket &)'
  - DNSPacket::getLocal
  - DNSPacket::getSocket
  - DNSPacket::getEDNSVersion
  - DNSPacket::setEDNSRcode
  - DNSPacket::getEDNSRCode
  - DNSPacket::getHash
  - DNSPacket::setHash
  - '& getRRS()'
  source_file: /src/pdns/pdns/dnspacket.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - DNSPacket::DNSPacket
  - '& DNSPacket::getString(bool throwsOnTruncation)'
  - DNSPacket::getRemoteString
  - DNSPacket::getRemoteStringWithPort
  - DNSPacket::getRemote
  - DNSPacket::getInnerRemote
  - DNSPacket::getRemotePort
  - DNSPacket::setRcode
  - DNSPacket::setAnswer
  - DNSPacket::setA
  - DNSPacket::setID
  - DNSPacket::setRA
  - DNSPacket::setRD
  - DNSPacket::setOpcode
  - DNSPacket::clearRecords
  - DNSPacket::addRecord
  - DNSPacket::getAPRecords
  - DNSPacket::getServiceRecords
  - DNSPacket::getAnswerRecords
  - DNSPacket::setCompress
  - DNSPacket::couldBeCached
  - DNSPacket::getMinTTL
  - DNSPacket::isEmpty
  - DNSPacket::wrapup
  - DNSPacket::setQuestion
  - DNSPacket::replyPacket
  - DNSPacket::spoofQuestion
  - DNSPacket::noparse
  - DNSPacket::setTSIGDetails
  - DNSPacket::getTSIGDetails
  - DNSPacket::validateTSIG
  - DNSPacket::getTKEYRecord
  - DNSPacket::parse
  - DNSPacket::getMaxReplyLen
  - DNSPacket::setMaxReplyLen
  - DNSPacket::setRemote
  - DNSPacket::hasEDNSSubnet
  - DNSPacket::hasEDNS
  - DNSPacket::hasEDNSCookie
  - DNSPacket::hasWellFormedEDNSCookie
  - DNSPacket::hasValidEDNSCookie
  - DNSPacket::setRealRemote
  - DNSPacket::getRealRemote
  - DNSPacket::setSocket
  - DNSPacket::commitD
  - '& DNSPacket::getTSIGKeyname() const'
  - DNSPacket::cleanupGSS
  source_file: /src/pdns/pdns/dnspacket.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/pdns/pdns/axfr-retriever.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - processIXFRRecords
  - getIXFRDeltas
  source_file: /src/pdns/pdns/ixfr.cc
  types:
    enum:
    - enumerators:
      - name: Unknown
      - name: IXFR
      - name: AXFR
      item_type: enum
      name: transferStyle
      pos:
        line_end: 202
        line_start: 202
        source_file: /src/pdns/pdns/ixfr.cc
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - Semaphore::Semaphore
  - operator=(const Semaphore&)
  source_file: /src/pdns/pdns/utility.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs:
    - item_type: typedef
      name: uint8_t
      pos:
        line_end: 25
        line_start: 25
        source_file: /src/pdns/pdns/utility.hh
      type: unsigned char
    - item_type: typedef
      name: uint16_t
      pos:
        line_end: 26
        line_start: 26
        source_file: /src/pdns/pdns/utility.hh
      type: unsigned short int
    - item_type: typedef
      name: uint32_t
      pos:
        line_end: 27
        line_start: 27
        source_file: /src/pdns/pdns/utility.hh
      type: unsigned int
    - item_type: typedef
      name: uint64_t
      pos:
        line_end: 28
        line_start: 28
        source_file: /src/pdns/pdns/utility.hh
      type: unsigned long long
    - item_type: typedef
      name: sem_value_t
      pos:
        line_end: 49
        line_start: 49
        source_file: /src/pdns/pdns/utility.hh
      type: int
    - item_type: typedef
      name: iovec
      pos:
        line_end: 88
        line_start: 88
        source_file: /src/pdns/pdns/utility.hh
      type: iovec
    - item_type: typedef
      name: pid_t
      pos:
        line_end: 89
        line_start: 89
        source_file: /src/pdns/pdns/utility.hh
      type: pid_t
    - item_type: typedef
      name: sock_t
      pos:
        line_end: 90
        line_start: 90
        source_file: /src/pdns/pdns/utility.hh
      type: int
    - item_type: typedef
      name: socklen_t
      pos:
        line_end: 91
        line_start: 91
        source_file: /src/pdns/pdns/utility.hh
      type: socklen_t
    union: []
- function_names:
  - UeberBackend::loadmodule
  - UeberBackend::loadModules
  - UeberBackend::go
  - UeberBackend::getDomainInfo
  - UeberBackend::createDomain
  - UeberBackend::doesDNSSEC
  - UeberBackend::addDomainKey
  - UeberBackend::getDomainKeys
  - UeberBackend::getAllDomainMetadata
  - UeberBackend::getDomainMetadata
  - UeberBackend::getDomainMetadata
  - UeberBackend::setDomainMetadata
  - UeberBackend::setDomainMetadata
  - UeberBackend::activateDomainKey
  - UeberBackend::deactivateDomainKey
  - UeberBackend::publishDomainKey
  - UeberBackend::unpublishDomainKey
  - UeberBackend::removeDomainKey
  - UeberBackend::reload
  - UeberBackend::updateZoneCache
  - UeberBackend::rediscover
  - UeberBackend::getUnfreshSecondaryInfos
  - UeberBackend::getUpdatedPrimaries
  - UeberBackend::inTransaction
  - UeberBackend::fillSOAFromZoneRecord
  - UeberBackend::fillSOAFromCache
  - findBestMatchingBackend
  - foundTarget
  - UeberBackend::getAuth
  - UeberBackend::getSOAUncached
  - UeberBackend::autoPrimaryAdd
  - UeberBackend::autoPrimaryRemove
  - UeberBackend::autoPrimariesList
  - UeberBackend::autoPrimaryBackend
  - UeberBackend::UeberBackend
  - UeberBackend::cacheHas
  - UeberBackend::addNegCache
  - UeberBackend::addCache
  - UeberBackend::alsoNotifies
  - UeberBackend::~UeberBackend()
  - UeberBackend::lookup
  - UeberBackend::getAllDomains
  - UeberBackend::get
  - UeberBackend::lookupEnd
  - UeberBackend::setTSIGKey
  - UeberBackend::getTSIGKey
  - UeberBackend::getTSIGKeys
  - UeberBackend::deleteTSIGKey
  - UeberBackend::viewList
  - UeberBackend::viewListZones
  - UeberBackend::viewAddZone
  - UeberBackend::viewDelZone
  - UeberBackend::networkSet
  - UeberBackend::networkList
  - UeberBackend::searchRecords
  - UeberBackend::searchComments
  - UeberBackend::hasCreatedLocalFiles
  - UeberBackend::getCapabilities
  - UeberBackend::flush
  - UeberBackend::handle::handle()
  - UeberBackend::handle::~handle()
  - UeberBackend::handle::get(DNSZoneRecord& record)
  - UeberBackend::handle::lookupEnd() const
  source_file: /src/pdns/pdns/ueberbackend.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - ~SNMPAgent()
  - SNMPAgent::run
  source_file: /src/pdns/pdns/snmp-agent.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs:
    - item_type: typedef
      name: netsnmp_request_info
      pos:
        line_end: 10
        line_start: 10
        source_file: /src/pdns/pdns/snmp-agent.hh
      type: netsnmp_request_info_s
    - item_type: typedef
      name: netsnmp_variable_list
      pos:
        line_end: 11
        line_start: 11
        source_file: /src/pdns/pdns/snmp-agent.hh
      type: variable_list
    union: []
- function_names: []
  source_file: /src/pdns/pdns/shuffle.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - pdns::trace::encode
  - pdns::trace::encode
  - pdns::trace::encodeFixed
  - pdns::trace::encode
  - pdns::trace::encode
  - pdns::trace::encodeFixed
  - pdns::trace::encode
  - pdns::trace::encode
  - pdns::trace::encode
  - pdns::trace::encode
  - pdns::trace::encode
  - pdns::trace::decode
  - pdns::trace::encode
  - pdns::trace::encode
  - '& operator<<(std::ostream& ostrm, const AnyValue& val)'
  - pdns::trace::TraceID
  - pdns::trace::TraceID
  - '& operator<<(std::ostream& ostrm, const TraceID& val)'
  - pdns::trace::getRandomTraceID
  - pdns::trace::makeRandom
  - pdns::trace::clear
  - pdns::trace::SpanID
  - pdns::trace::SpanID
  - '& operator<<(std::ostream& ostrm, const SpanID& val)'
  - pdns::trace::getRandomSpanID
  - pdns::trace::makeRandom
  - pdns::trace::clear
  - pdns::trace::fill
  - pdns::trace::fill
  - pdns::trace::fill
  - pdns::trace::fill
  - pdns::trace::encode
  - pdns::trace::decodeTraceID
  - pdns::trace::encode
  - pdns::trace::decodeSpanID
  - pdns::trace::clear
  - pdns::trace::timestamp
  - pdns::trace::clear
  - pdns::trace::setIDsIfNotSet
  - pdns::trace::close
  - pdns::trace::clear
  - pdns::trace::close
  - pdns::trace::close
  - pdns::trace::close
  - pdns::trace::encode
  - pdns::trace::boilerPlate
  - pdns::trace::ArrayValue::decode
  - pdns::trace::KeyValueList::decode
  - pdns::trace::EDNSOTTraceRecord
  - pdns::trace::setVersion
  - pdns::trace::setReserved
  - pdns::trace::setTraceID
  - pdns::trace::setSpanID
  - pdns::trace::setFlags
  - pdns::trace::EDNSOTTraceRecordView
  - pdns::trace::getVersion
  - pdns::trace::getReserved
  - pdns::trace::getTraceID
  - pdns::trace::getSpanID
  - pdns::trace::getFlags
  - ArrayValue::operator==(const ArrayValue& rhs) const
  - KeyValueList::operator==(const KeyValueList& rhs) const
  - KeyValue::operator==(const KeyValue& rhs) const
  - pdns::trace::encode
  - pdns::trace::encode
  - pdns::trace::encodeFixed
  - pdns::trace::encode
  - pdns::trace::encode
  - pdns::trace::encodeFixed
  - pdns::trace::encode
  - pdns::trace::encode
  - pdns::trace::encode
  - pdns::trace::encode
  - pdns::trace::encode
  - pdns::trace::decode
  - pdns::trace::encode
  - pdns::trace::encode
  - '& operator<<(std::ostream& ostrm, const AnyValue& val)'
  - pdns::trace::TraceID
  - pdns::trace::TraceID
  - '& operator<<(std::ostream& ostrm, const TraceID& val)'
  - pdns::trace::getRandomTraceID
  - pdns::trace::makeRandom
  - pdns::trace::clear
  - pdns::trace::SpanID
  - pdns::trace::SpanID
  - '& operator<<(std::ostream& ostrm, const SpanID& val)'
  - pdns::trace::getRandomSpanID
  - pdns::trace::makeRandom
  - pdns::trace::clear
  - pdns::trace::fill
  - pdns::trace::fill
  - pdns::trace::fill
  - pdns::trace::fill
  - pdns::trace::encode
  - pdns::trace::decodeTraceID
  - pdns::trace::encode
  - pdns::trace::decodeSpanID
  - pdns::trace::clear
  - pdns::trace::timestamp
  - pdns::trace::clear
  - pdns::trace::setIDsIfNotSet
  - pdns::trace::close
  - pdns::trace::clear
  - pdns::trace::close
  - pdns::trace::close
  - pdns::trace::close
  - pdns::trace::encode
  - pdns::trace::boilerPlate
  - pdns::trace::ArrayValue::decode
  - pdns::trace::KeyValueList::decode
  - pdns::trace::EDNSOTTraceRecord
  - pdns::trace::setVersion
  - pdns::trace::setReserved
  - pdns::trace::setTraceID
  - pdns::trace::setSpanID
  - pdns::trace::setFlags
  - pdns::trace::EDNSOTTraceRecordView
  - pdns::trace::getVersion
  - pdns::trace::getReserved
  - pdns::trace::getTraceID
  - pdns::trace::getSpanID
  - pdns::trace::getFlags
  - ArrayValue::operator==(const ArrayValue& rhs) const
  - KeyValueList::operator==(const KeyValueList& rhs) const
  - KeyValue::operator==(const KeyValue& rhs) const
  source_file: /src/pdns/pdns/protozero-trace.hh
  types:
    enum:
    - enumerators:
      - name: STATUS_CODE_UNSET
        value: '0'
      - name: STATUS_CODE_ERROR
        value: '2'
      - name: STATUS_CODE_OK
        value: '1'
      item_type: enum
      name: StatusCode
      pos:
        line_end: 364
        line_start: 355
        source_file: /src/pdns/pdns/protozero-trace.hh
    - enumerators:
      - name: SPAN_KIND_UNSPECIFIED
        value: '0'
      - name: SPAN_KIND_PRODUCER
        value: '4'
      - name: SPAN_KIND_CLIENT
        value: '3'
      - name: SPAN_KIND_SERVER
        value: '2'
      - name: SPAN_KIND_INTERNAL
        value: '1'
      - name: SPAN_KINCONSUMER
        value: '5'
      item_type: enum
      name: SpanKind
      pos:
        line_end: 473
        line_start: 451
        source_file: /src/pdns/pdns/protozero-trace.hh
    - enumerators:
      - name: SPAN_FLAGS_DO_NOT_USE
        value: '0'
      - name: SPAN_FLAGS_CONTEXT_IS_REMOTE_MASK
        value: '0x00000200'
      - name: SPAN_FLAGS_CONTEXT_HAS_IS_REMOTE_MASK
        value: '0x00000100'
      - name: SPAN_FLAGS_TRACE_FLAGS_MASK
        value: '0x000000FF'
      item_type: enum
      name: SpanFlags
      pos:
        line_end: 660
        line_start: 647
        source_file: /src/pdns/pdns/protozero-trace.hh
    - enumerators:
      - name: STATUS_CODE_UNSET
        value: '0'
      - name: STATUS_CODE_ERROR
        value: '2'
      - name: STATUS_CODE_OK
        value: '1'
      item_type: enum
      name: StatusCode
      pos:
        line_end: 364
        line_start: 355
        source_file: /src/pdns/pdns/protozero-trace.hh
    - enumerators:
      - name: SPAN_KIND_UNSPECIFIED
        value: '0'
      - name: SPAN_KIND_PRODUCER
        value: '4'
      - name: SPAN_KIND_CLIENT
        value: '3'
      - name: SPAN_KIND_SERVER
        value: '2'
      - name: SPAN_KIND_INTERNAL
        value: '1'
      - name: SPAN_KINCONSUMER
        value: '5'
      item_type: enum
      name: SpanKind
      pos:
        line_end: 473
        line_start: 451
        source_file: /src/pdns/pdns/protozero-trace.hh
    - enumerators:
      - name: SPAN_FLAGS_DO_NOT_USE
        value: '0'
      - name: SPAN_FLAGS_CONTEXT_IS_REMOTE_MASK
        value: '0x00000200'
      - name: SPAN_FLAGS_CONTEXT_HAS_IS_REMOTE_MASK
        value: '0x00000100'
      - name: SPAN_FLAGS_TRACE_FLAGS_MASK
        value: '0x000000FF'
      item_type: enum
      name: SpanFlags
      pos:
        line_end: 660
        line_start: 647
        source_file: /src/pdns/pdns/protozero-trace.hh
    preproc_defs: []
    structs:
    - fields:
      - name: values
        type: std::vector<AnyValue>
      - name: decode(protozero::pbf_reader& reader)
        type: ArrayValue
      - name: operator==(const ArrayValue& rhs) const
        type: bool
      item_type: struct
      name: ArrayValue
      pos:
        line_end: 152
        line_start: 140
        source_file: /src/pdns/pdns/protozero-trace.hh
    - fields:
      - name: values
        type: std::vector<KeyValue>
      - name: decode(protozero::pbf_reader& reader)
        type: KeyValueList
      - name: operator==(const KeyValueList& rhs) const
        type: bool
      item_type: struct
      name: KeyValueList
      pos:
        line_end: 166
        line_start: 154
        source_file: /src/pdns/pdns/protozero-trace.hh
    - fields:
      - name: encode(protozero::pbf_writer& writer) const
        type: void
      - name: decode(protozero::pbf_reader& reader)
        type: AnyValue
      - name: toLogString() const
        type: std::string
      item_type: struct
      name: AnyValue
      pos:
        line_end: 178
        line_start: 169
        source_file: /src/pdns/pdns/protozero-trace.hh
    - fields:
      - name: schema_url
        type: std::string
      - name: type
        type: std::string
      - name: id_keys
        type: std::vector<std::string>
      - name: description_keys
        type: std::vector<std::string>
      - name: encode(protozero::pbf_writer& writer) const
        type: void
      - name: decode(protozero::pbf_reader& reader)
        type: EntityRef
      item_type: struct
      name: EntityRef
      pos:
        line_end: 189
        line_start: 180
        source_file: /src/pdns/pdns/protozero-trace.hh
    - fields:
      - name: key
        type: std::string
      - name: value
        type: AnyValue
      - name: encode(protozero::pbf_writer& writer) const
        type: void
      - name: decode(protozero::pbf_reader& reader)
        type: KeyValue
      - name: operator==(const KeyValue& rhs) const
        type: bool
      item_type: struct
      name: KeyValue
      pos:
        line_end: 199
        line_start: 191
        source_file: /src/pdns/pdns/protozero-trace.hh
    - fields:
      - name: attributes
        type: std::vector<KeyValue>
      - name: dropped_attributes_count
        type: uint32_t
      - name: entity_refs
        type: std::vector<EntityRef>
      - name: encode(protozero::pbf_writer& writer) const
        type: void
      - name: decode(protozero::pbf_reader& reader)
        type: Resource
      item_type: struct
      name: Resource
      pos:
        line_end: 209
        line_start: 201
        source_file: /src/pdns/pdns/protozero-trace.hh
    - fields:
      - name: name
        type: std::string
      - name: version
        type: std::string
      - name: attributes
        type: std::vector<KeyValue>
      - name: dropped_attributes_count
        type: uint32_t
      - name: encode(protozero::pbf_writer& writer) const
        type: void
      - name: decode(protozero::pbf_reader& reader)
        type: InstrumentationScope
      item_type: struct
      name: InstrumentationScope
      pos:
        line_end: 220
        line_start: 211
        source_file: /src/pdns/pdns/protozero-trace.hh
    - fields:
      - name: toLogString() const
        type: std::string
      item_type: struct
      name: TraceID
      pos:
        line_end: 254
        line_start: 222
        source_file: /src/pdns/pdns/protozero-trace.hh
    - fields:
      - name: toLogString() const
        type: std::string
      item_type: struct
      name: SpanID
      pos:
        line_end: 289
        line_start: 257
        source_file: /src/pdns/pdns/protozero-trace.hh
    - fields:
      - name: message
        type: std::string
      - name: code
        type: StatusCode
      - name: encode(protozero::pbf_writer& writer) const
        type: void
      - name: decode(protozero::pbf_reader& reader)
        type: Status
      item_type: struct
      name: Status
      pos:
        line_end: 376
        line_start: 348
        source_file: /src/pdns/pdns/protozero-trace.hh
    - fields:
      - name: trace_id
        type: TraceID
      - name: span_id
        type: SpanID
      - name: parent_span_id
        type: SpanID
      - name: start_time_unix_nano
        type: uint64_t
      item_type: struct
      name: InitialSpanInfo
      pos:
        line_end: 411
        line_start: 387
        source_file: /src/pdns/pdns/protozero-trace.hh
    - fields:
      - name: trace_id
        type: TraceID
      - name: span_id
        type: SpanID
      - name: trace_state
        type: std::string
      - name: parent_span_id
        type: SpanID
      - name: name
        type: std::string
      - name: kind
        type: SpanKind
      - name: start_time_unix_nano
        type: uint64_t
      - name: end_time_unix_nano
        type: uint64_t
      - name: attributes
        type: std::vector<KeyValue>
      - name: dropped_attributes_count
        type: uint32_t
      - name: events
        type: std::vector<Event>
      - name: dropped_events_count
        type: uint32_t
      - name: links
        type: std::vector<Link>
      - name: dropped_links_count
        type: uint32_t
      - name: status
        type: Status
      - name: flags
        type: uint32_t
      - name: encode(protozero::pbf_writer& writer) const
        type: void
      - name: decode(protozero::pbf_reader& reader)
        type: Span
      item_type: struct
      name: Span
      pos:
        line_end: 631
        line_start: 413
        source_file: /src/pdns/pdns/protozero-trace.hh
    - fields:
      - name: time_unix_nano
        type: uint64_t
      - name: name
        type: std::string
      - name: attributes
        type: std::vector<KeyValue>
      - name: dropped_attributes_count
        type: uint32_t
      - name: encode(protozero::pbf_writer& writer) const
        type: void
      - name: decode(protozero::pbf_reader& reader)
        type: Event
      item_type: struct
      name: Event
      pos:
        line_end: 529
        line_start: 512
        source_file: /src/pdns/pdns/protozero-trace.hh
    - fields:
      - name: trace_id
        type: TraceID
      - name: span_id
        type: SpanID
      - name: trace_state
        type: std::string
      - name: attributes
        type: std::vector<KeyValue>
      - name: dropped_attributes_count
        type: uint32_t
      - name: flags
        type: uint32_t
      - name: encode(protozero::pbf_writer& writer) const
        type: void
      - name: decode(protozero::pbf_reader& reader)
        type: Link
      item_type: struct
      name: Link
      pos:
        line_end: 577
        line_start: 540
        source_file: /src/pdns/pdns/protozero-trace.hh
    - fields:
      - name: scope
        type: InstrumentationScope
      - name: spans
        type: std::vector<Span>
      - name: schema_url
        type: std::string
      - name: encode(protozero::pbf_writer& writer) const
        type: void
      - name: decode(protozero::pbf_reader& reader)
        type: ScopeSpans
      item_type: struct
      name: ScopeSpans
      pos:
        line_end: 686
        line_start: 663
        source_file: /src/pdns/pdns/protozero-trace.hh
    - fields:
      - name: resource
        type: Resource
      - name: scope_spans
        type: std::vector<ScopeSpans>
      - name: schema_url
        type: std::string
      - name: encode(protozero::pbf_writer& writer) const
        type: void
      - name: decode(protozero::pbf_reader& reader)
        type: ResourceSpans
      item_type: struct
      name: ResourceSpans
      pos:
        line_end: 712
        line_start: 689
        source_file: /src/pdns/pdns/protozero-trace.hh
    - fields:
      - name: resource_spans
        type: std::vector<ResourceSpans>
      - name: encode(protozero::pbf_writer& writer) const
        type: void
      - name: decode(protozero::pbf_reader& reader)
        type: TracesData
      item_type: struct
      name: TracesData
      pos:
        line_end: 764
        line_start: 724
        source_file: /src/pdns/pdns/protozero-trace.hh
    - fields:
      - name: fullSize
        type: size_t
      - name: traceIDOffset
        type: size_t
      - name: spanIDOffset
        type: size_t
      - name: flagsOffset
        type: size_t
      - name: '* data'
        type: uint8_t
      item_type: struct
      name: EDNSOTTraceRecord
      pos:
        line_end: 810
        line_start: 776
        source_file: /src/pdns/pdns/protozero-trace.hh
    - fields:
      - name: '* const data'
        type: uint8_t
      - name: size
        type: size_t
      item_type: struct
      name: EDNSOTTraceRecordView
      pos:
        line_end: 863
        line_start: 812
        source_file: /src/pdns/pdns/protozero-trace.hh
    - fields:
      - name: values
        type: std::vector<AnyValue>
      - name: decode(protozero::pbf_reader& reader)
        type: ArrayValue
      - name: operator==(const ArrayValue& rhs) const
        type: bool
      item_type: struct
      name: ArrayValue
      pos:
        line_end: 152
        line_start: 140
        source_file: /src/pdns/pdns/protozero-trace.hh
    - fields:
      - name: values
        type: std::vector<KeyValue>
      - name: decode(protozero::pbf_reader& reader)
        type: KeyValueList
      - name: operator==(const KeyValueList& rhs) const
        type: bool
      item_type: struct
      name: KeyValueList
      pos:
        line_end: 166
        line_start: 154
        source_file: /src/pdns/pdns/protozero-trace.hh
    - fields:
      - name: encode(protozero::pbf_writer& writer) const
        type: void
      - name: decode(protozero::pbf_reader& reader)
        type: AnyValue
      - name: toLogString() const
        type: std::string
      item_type: struct
      name: AnyValue
      pos:
        line_end: 178
        line_start: 169
        source_file: /src/pdns/pdns/protozero-trace.hh
    - fields:
      - name: schema_url
        type: std::string
      - name: type
        type: std::string
      - name: id_keys
        type: std::vector<std::string>
      - name: description_keys
        type: std::vector<std::string>
      - name: encode(protozero::pbf_writer& writer) const
        type: void
      - name: decode(protozero::pbf_reader& reader)
        type: EntityRef
      item_type: struct
      name: EntityRef
      pos:
        line_end: 189
        line_start: 180
        source_file: /src/pdns/pdns/protozero-trace.hh
    - fields:
      - name: key
        type: std::string
      - name: value
        type: AnyValue
      - name: encode(protozero::pbf_writer& writer) const
        type: void
      - name: decode(protozero::pbf_reader& reader)
        type: KeyValue
      - name: operator==(const KeyValue& rhs) const
        type: bool
      item_type: struct
      name: KeyValue
      pos:
        line_end: 199
        line_start: 191
        source_file: /src/pdns/pdns/protozero-trace.hh
    - fields:
      - name: attributes
        type: std::vector<KeyValue>
      - name: dropped_attributes_count
        type: uint32_t
      - name: entity_refs
        type: std::vector<EntityRef>
      - name: encode(protozero::pbf_writer& writer) const
        type: void
      - name: decode(protozero::pbf_reader& reader)
        type: Resource
      item_type: struct
      name: Resource
      pos:
        line_end: 209
        line_start: 201
        source_file: /src/pdns/pdns/protozero-trace.hh
    - fields:
      - name: name
        type: std::string
      - name: version
        type: std::string
      - name: attributes
        type: std::vector<KeyValue>
      - name: dropped_attributes_count
        type: uint32_t
      - name: encode(protozero::pbf_writer& writer) const
        type: void
      - name: decode(protozero::pbf_reader& reader)
        type: InstrumentationScope
      item_type: struct
      name: InstrumentationScope
      pos:
        line_end: 220
        line_start: 211
        source_file: /src/pdns/pdns/protozero-trace.hh
    - fields:
      - name: toLogString() const
        type: std::string
      item_type: struct
      name: TraceID
      pos:
        line_end: 254
        line_start: 222
        source_file: /src/pdns/pdns/protozero-trace.hh
    - fields:
      - name: toLogString() const
        type: std::string
      item_type: struct
      name: SpanID
      pos:
        line_end: 289
        line_start: 257
        source_file: /src/pdns/pdns/protozero-trace.hh
    - fields:
      - name: message
        type: std::string
      - name: code
        type: StatusCode
      - name: encode(protozero::pbf_writer& writer) const
        type: void
      - name: decode(protozero::pbf_reader& reader)
        type: Status
      item_type: struct
      name: Status
      pos:
        line_end: 376
        line_start: 348
        source_file: /src/pdns/pdns/protozero-trace.hh
    - fields:
      - name: trace_id
        type: TraceID
      - name: span_id
        type: SpanID
      - name: parent_span_id
        type: SpanID
      - name: start_time_unix_nano
        type: uint64_t
      item_type: struct
      name: InitialSpanInfo
      pos:
        line_end: 411
        line_start: 387
        source_file: /src/pdns/pdns/protozero-trace.hh
    - fields:
      - name: trace_id
        type: TraceID
      - name: span_id
        type: SpanID
      - name: trace_state
        type: std::string
      - name: parent_span_id
        type: SpanID
      - name: name
        type: std::string
      - name: kind
        type: SpanKind
      - name: start_time_unix_nano
        type: uint64_t
      - name: end_time_unix_nano
        type: uint64_t
      - name: attributes
        type: std::vector<KeyValue>
      - name: dropped_attributes_count
        type: uint32_t
      - name: events
        type: std::vector<Event>
      - name: dropped_events_count
        type: uint32_t
      - name: links
        type: std::vector<Link>
      - name: dropped_links_count
        type: uint32_t
      - name: status
        type: Status
      - name: flags
        type: uint32_t
      - name: encode(protozero::pbf_writer& writer) const
        type: void
      - name: decode(protozero::pbf_reader& reader)
        type: Span
      item_type: struct
      name: Span
      pos:
        line_end: 631
        line_start: 413
        source_file: /src/pdns/pdns/protozero-trace.hh
    - fields:
      - name: time_unix_nano
        type: uint64_t
      - name: name
        type: std::string
      - name: attributes
        type: std::vector<KeyValue>
      - name: dropped_attributes_count
        type: uint32_t
      - name: encode(protozero::pbf_writer& writer) const
        type: void
      - name: decode(protozero::pbf_reader& reader)
        type: Event
      item_type: struct
      name: Event
      pos:
        line_end: 529
        line_start: 512
        source_file: /src/pdns/pdns/protozero-trace.hh
    - fields:
      - name: trace_id
        type: TraceID
      - name: span_id
        type: SpanID
      - name: trace_state
        type: std::string
      - name: attributes
        type: std::vector<KeyValue>
      - name: dropped_attributes_count
        type: uint32_t
      - name: flags
        type: uint32_t
      - name: encode(protozero::pbf_writer& writer) const
        type: void
      - name: decode(protozero::pbf_reader& reader)
        type: Link
      item_type: struct
      name: Link
      pos:
        line_end: 577
        line_start: 540
        source_file: /src/pdns/pdns/protozero-trace.hh
    - fields:
      - name: scope
        type: InstrumentationScope
      - name: spans
        type: std::vector<Span>
      - name: schema_url
        type: std::string
      - name: encode(protozero::pbf_writer& writer) const
        type: void
      - name: decode(protozero::pbf_reader& reader)
        type: ScopeSpans
      item_type: struct
      name: ScopeSpans
      pos:
        line_end: 686
        line_start: 663
        source_file: /src/pdns/pdns/protozero-trace.hh
    - fields:
      - name: resource
        type: Resource
      - name: scope_spans
        type: std::vector<ScopeSpans>
      - name: schema_url
        type: std::string
      - name: encode(protozero::pbf_writer& writer) const
        type: void
      - name: decode(protozero::pbf_reader& reader)
        type: ResourceSpans
      item_type: struct
      name: ResourceSpans
      pos:
        line_end: 712
        line_start: 689
        source_file: /src/pdns/pdns/protozero-trace.hh
    - fields:
      - name: resource_spans
        type: std::vector<ResourceSpans>
      - name: encode(protozero::pbf_writer& writer) const
        type: void
      - name: decode(protozero::pbf_reader& reader)
        type: TracesData
      item_type: struct
      name: TracesData
      pos:
        line_end: 764
        line_start: 724
        source_file: /src/pdns/pdns/protozero-trace.hh
    - fields:
      - name: fullSize
        type: size_t
      - name: traceIDOffset
        type: size_t
      - name: spanIDOffset
        type: size_t
      - name: flagsOffset
        type: size_t
      - name: '* data'
        type: uint8_t
      item_type: struct
      name: EDNSOTTraceRecord
      pos:
        line_end: 810
        line_start: 776
        source_file: /src/pdns/pdns/protozero-trace.hh
    - fields:
      - name: '* const data'
        type: uint8_t
      - name: size
        type: size_t
      item_type: struct
      name: EDNSOTTraceRecordView
      pos:
        line_end: 863
        line_start: 812
        source_file: /src/pdns/pdns/protozero-trace.hh
    typedefs: []
    union: []
- function_names:
  - emitRecord
  - arg
  - main
  source_file: /src/pdns/pdns/zone2json.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  source_file: /src/pdns/pdns/test-dnswriter_cc.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - AuthLua4::AuthLua4
  source_file: /src/pdns/pdns/lua-auth4.hh
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: qname
        type: DNSName
      - name: zonename
        type: DNSName
      - name: qtype
        type: uint16_t
      - name: local
        type: ComboAddress
      - name: realRemote
        type: Netmask
      - name: tsigName
        type: DNSName
      - name: peerPrincipal
        type: std::string
      item_type: struct
      name: UpdatePolicyQuery
      pos:
        line_end: 38
        line_start: 30
        source_file: /src/pdns/pdns/lua-auth4.hh
    typedefs:
    - item_type: typedef
      name: luacall_update_policy_t
      pos:
        line_end: 40
        line_start: 40
        source_file: /src/pdns/pdns/lua-auth4.hh
      type: function<bool(const UpdatePolicyQuery&)>
    - item_type: typedef
      name: luacall_axfr_filter_t
      pos:
        line_end: 41
        line_start: 41
        source_file: /src/pdns/pdns/lua-auth4.hh
      type: function<std::tuple<int, std::unordered_map<int, std::unordered_map<std::string,boost::variant<unsigned
        int,std::string> > > >(const ComboAddress&, const DNSName&, const DNSResourceRecord&)>
    - item_type: typedef
      name: luacall_prequery_t
      pos:
        line_end: 42
        line_start: 42
        source_file: /src/pdns/pdns/lua-auth4.hh
      type: function<bool(DNSPacket*)>
    union: []
- function_names:
  - LLVMFuzzerTestOneInput
  source_file: /src/pdns/pdns/fuzz_packetcache.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - '& operator<<(std::ostream &os, const DNSName& d)'
  - DNSName::throwSafeRangeError
  - DNSName::DNSName
  - DNSName::DNSName
  - checkLabelLength
  - DNSName::parsePacketUncompressed
  - DNSName::packetParser
  - DNSName::toString
  - DNSName::toString
  - DNSName::toLogString
  - DNSName::toDNSString
  - DNSName::toDNSStringLC
  - DNSName::wirelength
  - DNSName::isPartOf
  - DNSName::makeRelative
  - DNSName::makeUsRelative
  - DNSName::getCommonLabels
  - DNSName::labelReverse
  - DNSName::appendRawLabel
  - DNSName::appendRawLabel
  - DNSName::prependRawLabel
  - DNSName::slowCanonCompare_three_way
  - DNSName::canonCompare_three_way
  - DNSName::getRawLabels
  - DNSName::getRawLabel
  - DNSName::getLastLabel
  - DNSName::chopOff
  - DNSName::isWildcard
  - DNSName::isHostname
  - DNSName::countLabels
  - DNSName::trimToLabels
  - hash_value
  - DNSName::appendEscapedLabel
  - DNSName::has8bitBytes
  - DNSName::RawLabelsVisitor::RawLabelsVisitor(const DNSName::string_t& storage)
  - DNSName::getRawLabelsVisitor
  - DNSName::RawLabelsVisitor::front() const
  - DNSName::RawLabelsVisitor::back() const
  - DNSName::RawLabelsVisitor::pop_back()
  - DNSName::RawLabelsVisitor::empty() const
  - DNSName::matchesUncompressedName
  - '& operator<<(std::ostream &ostr, const ZoneName& zone)'
  - hash_value
  - DNSName::isPartOf
  - DNSName::makeRelative
  - DNSName::makeUsRelative
  - ZoneName::findVariantSeparator
  - ZoneName::ZoneName
  - ZoneName::ZoneName
  - ZoneName::setVariant
  - ZoneName::toLogString
  - ZoneName::toString
  - ZoneName::toStringNoDot
  - ZoneName::toStringRootDot
  - ZoneName::hash
  - ZoneName::operator<(const ZoneName& rhs)  const
  - ZoneName::canonCompare_three_way
  source_file: /src/pdns/pdns/dnsname.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - HttpRequest::json
  - HttpRequest::compareAuthorization
  - HttpRequest::compareHeader
  - HttpResponse::setPlainBody
  - HttpResponse::setYamlBody
  - HttpResponse::setJsonBody
  - HttpResponse::setJsonBody
  - HttpResponse::setErrorResult
  - HttpResponse::setSuccessResult
  - bareHandlerWrapper
  - WebServer::registerBareHandler
  - WebServer::apiWrapper
  - WebServer::registerApiHandler
  - WebServer::webWrapper
  - WebServer::registerWebHandler
  - WebServerConnectionThreadStart
  - setupAllowedContentType
  - WebServer::handleRequest
  - Logging::IterLoggable<YaHTTP::strstr_map_t::const_iterator>::to_string() const
  - WebServer::logRequest
  - WebServer::logResponse
  - ValidChars
  - validURLChars
  - WebServer::validURL
  - WebServer::serveConnection
  - WebServer::WebServer
  - WebServer::bind
  - WebServer::go
  source_file: /src/pdns/pdns/webserver.cc
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: set
        type: std::bitset<127>
      item_type: struct
      name: ValidChars
      pos:
        line_end: 480
        line_start: 471
        source_file: /src/pdns/pdns/webserver.cc
    typedefs: []
    union: []
- function_names: []
  source_file: /src/pdns/pdns/auth-main.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - rfc1982check
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  source_file: /src/pdns/pdns/test-misc_hh.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs:
    - item_type: typedef
      name: typedns_t
      pos:
        line_end: 26
        line_start: 26
        source_file: /src/pdns/pdns/test-misc_hh.cc
      type: pair
    - item_type: typedef
      name: case_t
      pos:
        line_end: 66
        line_start: 66
        source_file: /src/pdns/pdns/test-misc_hh.cc
      type: tuple<const std::string, const std::string, bool>
    - item_type: typedef
      name: cases_t
      pos:
        line_end: 67
        line_start: 67
        source_file: /src/pdns/pdns/test-misc_hh.cc
      type: list<case_t>
    - item_type: typedef
      name: case_t
      pos:
        line_end: 89
        line_start: 89
        source_file: /src/pdns/pdns/test-misc_hh.cc
      type: tuple<const std::string, const std::string, bool>
    - item_type: typedef
      name: cases_t
      pos:
        line_end: 90
        line_start: 90
        source_file: /src/pdns/pdns/test-misc_hh.cc
      type: list<case_t>
    union: []
- function_names:
  - QType::QType
  - operator uint16_t() const
  - QType::getCode
  - operator()(QType qtype) const noexcept
  - operator()(QType qtype) const noexcept
  - '& operator<<(std::ostream& stream, const QType& qtype)'
  - hash_value
  - QClass
  - operator uint16_t() const
  - getCode
  - '& operator<<(std::ostream& s, QClass qclass)'
  source_file: /src/pdns/pdns/qtype.hh
  types:
    enum:
    - enumerators:
      - name: SOA
        value: '6'
      - name: PTR
        value: '12'
      - name: TXT
        value: '16'
      - name: KEY
        value: '25'
      - name: NAPTR
        value: '35'
      - name: DNAME
        value: '39'
      - name: SSHFP
        value: '44'
      - name: RRSIG
        value: '46'
      - name: NSEC3
        value: '50'
      - name: RKEY
        value: '57'
      - name: L32
        value: '105'
      - name: SVCB
        value: '64'
      - name: EUI48
        value: '108'
      - name: BRID
        value: '68'
      - name: MAILB
        value: '253'
      - name: URI
        value: '256'
      - name: TSIG
        value: '250'
      - name: ENT
        value: '0'
      - name: CNAME
        value: '5'
      - name: MR
        value: '9'
      - name: MX
        value: '15'
      - name: SIG
        value: '24'
      - name: SRV
        value: '33'
      - name: A6
        value: '38'
      - name: DS
        value: '43'
      - name: DHCID
        value: '49'
      - name: SMIMEA
        value: '53'
      - name: ZONEMD
        value: '63'
      - name: HHIT
        value: '67'
      - name: WALLET
        value: '262'
      - name: CDNSKEY
        value: '60'
      - name: LP
        value: '107'
      - name: TKEY
        value: '249'
      - name: NID
        value: '104'
      - name: NS
        value: '2'
      - name: MG
        value: '8'
      - name: LOC
        value: '29'
      - name: AFSDB
        value: '18'
      - name: MINFO
        value: '14'
      - name: CERT
        value: '37'
      - name: APL
        value: '42'
      - name: DNSKEY
        value: '48'
      - name: TLSA
        value: '52'
      - name: CDS
        value: '59'
      - name: AXFR
        value: '252'
      - name: RESINFO
        value: '261'
      - name: ANY
        value: '255'
      - name: ALIAS
        value: '65401'
      - name: SPF
        value: '99'
      - name: CSYNC
        value: '62'
      - name: ADDR
        value: '65400'
      - name: HTTPS
        value: '65'
      - name: A
        value: '1'
      - name: MB
        value: '7'
      - name: HINFO
        value: '13'
      - name: AAAA
        value: '28'
      - name: RP
        value: '17'
      - name: KX
        value: '36'
      - name: OPT
        value: '41'
      - name: IPSECKEY
        value: '45'
      - name: NSEC
        value: '47'
      - name: NSEC3PARAM
        value: '51'
      - name: IXFR
        value: '251'
      - name: L64
        value: '106'
      - name: EUI64
        value: '109'
      - name: DLV
        value: '32769'
      - name: OPENPGPKEY
        value: '61'
      - name: CAA
        value: '257'
      - name: LUA
        value: '65402'
      - name: MAILA
        value: '254'
      item_type: enum
      name: typeenum
      pos:
        line_end: 151
        line_start: 78
        source_file: /src/pdns/pdns/qtype.hh
    preproc_defs: []
    structs:
    - fields: []
      item_type: struct
      name: hash<QType>
      pos:
        line_end: 174
        line_start: 170
        source_file: /src/pdns/pdns/qtype.hh
    - fields: []
      item_type: struct
      name: hash<QType>
      pos:
        line_end: 174
        line_start: 170
        source_file: /src/pdns/pdns/qtype.hh
    - fields:
      - name: toString() const
        type: std::string
      - name: IN
        type: QClass
      - name: CHAOS
        type: QClass
      - name: NONE
        type: QClass
      - name: ANY
        type: QClass
      - name: qclass
        type: uint16_t
      item_type: struct
      name: QClass
      pos:
        line_end: 208
        line_start: 187
        source_file: /src/pdns/pdns/qtype.hh
    typedefs: []
    union: []
- function_names: []
  source_file: /src/pdns/pdns/check-zone.hh
  types:
    enum:
    - enumerators:
      - name: RRSET_ALLOW_UNDERSCORES
        value: 1 << 0
      - name: RRSET_CHECK_TTL
        value: 1 << 1
      item_type: enum
      name: RRSetFlags
      pos:
        line_end: 40
        line_start: 36
        source_file: /src/pdns/pdns/check-zone.hh
    - enumerators:
      - name: RRSET_ALLOW_UNDERSCORES
        value: 1 << 0
      - name: RRSET_CHECK_TTL
        value: 1 << 1
      item_type: enum
      name: RRSetFlags
      pos:
        line_end: 40
        line_start: 36
        source_file: /src/pdns/pdns/check-zone.hh
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  source_file: /src/pdns/pdns/test-channel.cc
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: a
        type: uint64_t
      item_type: struct
      name: MyObject
      pos:
        line_end: 13
        line_start: 10
        source_file: /src/pdns/pdns/test-channel.cc
    typedefs: []
    union: []
- function_names:
  - SetupArgFixture
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  source_file: /src/pdns/pdns/test-lua_auth4_cc.cc
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields: []
      item_type: struct
      name: SetupArgFixture
      pos:
        line_end: 18
        line_start: 14
        source_file: /src/pdns/pdns/test-lua_auth4_cc.cc
    typedefs: []
    union: []
- function_names:
  - pdns::coverage::dumpCoverageData
  - pdns::coverage::dumpCoverageData
  source_file: /src/pdns/pdns/coverage.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - GssContext::getCounts
  - GssContext::supported
  - GssContext::GssContext
  - GssContext::GssContext
  - GssContext::setLocalPrincipal
  - GssContext::getLocalPrincipal
  - GssContext::setPeerPrincipal
  - GssContext::getPeerPrincipal
  - GssContext::generateLabel
  - GssContext::setLabel
  - GssContext::init
  - GssContext::accept
  - GssContext::destroy
  - GssContext::expired
  - GssContext::valid
  - GssContext::sign
  - GssContext::verify
  - GssContext::getError
  - GssCredential::GssCredential
  - ~GssCredential()
  - GssCredential::expired
  - GssCredential::renew
  - GssCredential::valid
  - GssSecContext::GssSecContext
  - ~GssSecContext()
  - doExpire
  - doExpireL
  - expire
  - GssContext::supported
  - GssContext::initialize
  - GssContext::GssContext
  - GssContext::GssContext
  - GssContext::generateLabel
  - GssContext::setLabel
  - GssContext::expired
  - GssContext::valid
  - GssContext::createOrReuseContext
  - GssContext::init
  - GssContext::accept
  - GssContext::sign
  - GssContext::verify
  - GssContext::destroy
  - GssContext::setLocalPrincipal
  - GssContext::getLocalPrincipal
  - GssContext::setPeerPrincipal
  - GssContext::getPeerPrincipal
  - GssContext::getCounts
  - GssContext::processError
  - gss_add_signature
  - gss_verify_signature
  source_file: /src/pdns/pdns/gss_context.cc
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: TSIG_GSS_EXPIRE_INTERVAL
      pos:
        line_end: 56
        line_start: 55
        source_file: /src/pdns/pdns/gss_context.cc
      type_or_value: '60'
    structs: []
    typedefs: []
    union: []
- function_names:
  - pdns::getQueryLocalAddress
  - pdns::getNonAnyQueryLocalAddress
  - pdns::parseQueryLocalAddress
  - pdns::isQueryLocalAddressFamilyEnabled
  - pdns::getQueryLocalAddress
  - pdns::getNonAnyQueryLocalAddress
  - pdns::parseQueryLocalAddress
  - pdns::isQueryLocalAddressFamilyEnabled
  source_file: /src/pdns/pdns/query-local-address.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - makeQuerySocket
  - Resolver::Resolver
  - Resolver::~Resolver()
  - Resolver::sendResolve
  - pdns::resolver::parseResult
  - pdns::resolver::parseResult
  - pdns::resolver::parseResult
  - pdns::resolver::parseResult
  - Resolver::tryGetSOASerial
  - Resolver::resolve
  - Resolver::resolve
  - Resolver::getSoaSerial
  source_file: /src/pdns/pdns/resolver.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - pdns::stat_t_trait::stat_t_trait
  - pdns::stat_t_trait::stat_t_trait
  - '& operator=(const base_t& value)'
  - ~stat_t_trait()
  - pdns::stat_t_trait::stat_t_trait
  - '& operator=(const stat_t_trait&)'
  - '& operator=(stat_t_trait&&)'
  - pdns::stat_t_trait::stat_t_trait
  - operator++(int)
  - operator++()
  - operator--(int)
  - operator--()
  - operator+=(base_t arg)
  - operator-=(base_t arg)
  - pdns::stat_t_trait::load
  - pdns::stat_t_trait::store
  - operator base_t() const
  - '& ref()'
  - '& ref() const'
  - pdns::stat_t_trait::stat_t_trait
  - pdns::stat_t_trait::stat_t_trait
  - '& operator=(const base_t& value)'
  - ~stat_t_trait()
  - pdns::stat_t_trait::stat_t_trait
  - '& operator=(const stat_t_trait&)'
  - '& operator=(stat_t_trait&&)'
  - pdns::stat_t_trait::stat_t_trait
  - operator++(int)
  - operator++()
  - operator--(int)
  - operator--()
  - operator+=(base_t arg)
  - operator-=(base_t arg)
  - pdns::stat_t_trait::load
  - pdns::stat_t_trait::store
  - operator base_t() const
  - '& ref()'
  - '& ref() const'
  source_file: /src/pdns/pdns/stat_t.hh
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: CPU_LEVEL1_DCACHE_LINESIZE
      pos:
        line_end: 27
        line_start: 26
        source_file: /src/pdns/pdns/stat_t.hh
      type_or_value: 64 // Until we know better via configure/getconf
    structs: []
    typedefs: []
    union: []
- function_names:
  - IsUpOracle::getOption
  - IsUpOracle::getOption
  - operator<(const CheckDesc& rhs) const
  - IsUpOracle::CheckState
  - IsUpOracle::IsUpOracle
  - ~IsUpOracle()
  - IsUpOracle::checkURL
  - IsUpOracle::checkTCP
  - IsUpOracle::checkThread
  - IsUpOracle::setStatus
  - IsUpOracle::setWeight
  - IsUpOracle::setDown
  - IsUpOracle::setUp
  - IsUpOracle::isUp
  - IsUpOracle::isUp
  - IsUpOracle::isUp
  - doCompare
  - doCompare
  - getGeo
  - pickRandom
  - pickHashed
  - pickWeightedRandom
  - pickWeightedHashed
  - pickWeightedNameHashed
  - pickRandomSample
  - getLatLon
  - getLatLon
  - pickclosest
  - lookup
  - getAuth
  - getOptionValue
  - useSelector
  - convComboAddressListToString
  - convComboAddressList
  - convMultiComboAddressList
  - convStringList
  - convIntStringPairList
  - EntryHashesHolder
  - hashesComputed
  - hash
  - cleanZoneHashes
  - getCHashedEntries
  - pickConsistentWeightedHashed
  - genericIfUp
  - lua_latlon
  - lua_latlonloc
  - lua_closestMagic
  - lua_latlonMagic
  - lua_createReverse
  - lua_createForward
  - lua_createForward6
  - lua_createReverse6
  - lua_filterForward
  - lua_ifportup
  - lua_ifurlextup
  - lua_ifurlup
  - lua_pickrandom
  - lua_pickselfweighted
  - lua_pickrandomsample
  - lua_pickhashed
  - lua_pickwrandom
  - lua_pickwhashed
  - lua_picknamehashed
  - lua_pickchashed
  - lua_pickclosest
  - lua_report
  - lua_geoiplookup
  - lua_asnum
  - lua_continent
  - lua_continentCode
  - lua_country
  - lua_countryCode
  - lua_region
  - lua_regionCode
  - lua_netmask
  - lua_view
  - lua_all
  - lua_dblookup
  - lua_include
  - setupLuaRecords
  - luaSynth
  source_file: /src/pdns/pdns/lua-record.cc
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: rem
        type: ComboAddress
      - name: url
        type: string
      - name: opts
        type: opts_t
      - name: slog
        type: std::shared_ptr<Logr::Logger>
      item_type: struct
      name: CheckDesc
      pos:
        line_end: 103
        line_start: 61
        source_file: /src/pdns/pdns/lua-record.cc
    - fields:
      - name: status
        type: std::atomic<bool>
      - name: weight
        type: std::atomic<int>
      - name: first
        type: std::atomic<bool>
      - name: failures
        type: std::atomic<unsigned int>
      - name: lastAccess
        type: std::atomic<time_t>
      - name: lastStatusUpdate
        type: std::atomic<time_t>
      item_type: struct
      name: CheckState
      pos:
        line_end: 119
        line_start: 104
        source_file: /src/pdns/pdns/lua-record.cc
    - fields:
      - name: bestwho
        type: ComboAddress
      - name: qname
        type: DNSName
      - name: zone_record
        type: DNSZoneRecord
      - name: zone
        type: DNSName
      - name: remote
        type: Netmask
      item_type: struct
      name: AuthLuaRecordContext
      pos:
        line_end: 782
        line_start: 775
        source_file: /src/pdns/pdns/lua-record.cc
    - fields:
      - name: weight
        type: std::atomic<size_t>
      - name: entry
        type: std::string
      - name: hashes
        type: SharedLockGuarded<std::vector<unsigned int>>
      - name: lastUsed
        type: std::atomic<time_t>
      item_type: struct
      name: EntryHashesHolder
      pos:
        line_end: 816
        line_start: 789
        source_file: /src/pdns/pdns/lua-record.cc
    typedefs:
    - item_type: typedef
      name: statuses_t
      pos:
        line_end: 307
        line_start: 307
        source_file: /src/pdns/pdns/lua-record.cc
      type: map
    union: []
- function_names:
  - ~Distributor()
  - SingleThreadDistributor::SingleThreadDistributor
  - operator=(const SingleThreadDistributor&)
  - SingleThreadDistributor::getQueueSize
  - SingleThreadDistributor::isOverloaded
  - MultiThreadDistributor::MultiThreadDistributor
  - operator=(const MultiThreadDistributor&)
  - MultiThreadDistributor::getQueueSize
  - MultiThreadDistributor::QuestionData
  - MultiThreadDistributor::isOverloaded
  - Distributor<Answer,Question,Backend>::Create
  - SingleThreadDistributor<Answer,Question,Backend>::SingleThreadDistributor
  - MultiThreadDistributor<Answer,Question,Backend>::MultiThreadDistributor
  - MultiThreadDistributor<Answer,Question,Backend>::distribute
  - SingleThreadDistributor<Answer,Question,Backend>::question
  - MultiThreadDistributor<Answer,Question,Backend>::question
  source_file: /src/pdns/pdns/distributor.hh
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: Q
        type: Question
      - name: callback
        type: callback_t
      - name: id
        type: int
      - name: start
        type: int
      item_type: struct
      name: QuestionData
      pos:
        line_end: 114
        line_start: 103
        source_file: /src/pdns/pdns/distributor.hh
    - fields: []
      item_type: struct
      name: DistributorFatal
      pos:
        line_end: 344
        line_start: 344
        source_file: /src/pdns/pdns/distributor.hh
    typedefs: []
    union: []
- function_names:
  - DNSProxy::DNSProxy
  - DNSProxy::go
  - DNSProxy::completePacket
  - DNSProxy::getID_locked
  - DNSProxy::mainloop
  - DNSProxy::~DNSProxy()
  source_file: /src/pdns/pdns/dnsproxy.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - DNSBackend::getAuth
  - DNSBackend::setArgPrefix
  - DNSBackend::mustDo
  - '& DNSBackend::getArg(const string& key)'
  - DNSBackend::getArgAsNum
  - DNSBackend::APILookup
  - DNSBackend::searchRecords
  - DNSBackend::searchComments
  - BackendFactory::declare
  - '& BackendFactory::getName() const'
  - BackendMakerClass::BackendMakerClass
  - BackendMakers
  - BackendMakerClass::report
  - BackendMakerClass::clear
  - BackendMakerClass::getModules
  - BackendMakerClass::load_all
  - BackendMakerClass::load
  - BackendMakerClass::launch
  - BackendMakerClass::numLauncheable
  - BackendMakerClass::all
  - DNSBackend::getSOA
  - DNSBackend::get
  - DNSBackend::lookupEnd
  - DNSBackend::getBeforeAndAfterNames
  - DNSBackend::getAllDomains
  - fillSOAData
  - makeSOAContent
  - fillSOAData
  source_file: /src/pdns/pdns/dnsbackend.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - arg
  - usage
  - main
  source_file: /src/pdns/pdns/stubquery.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - burtlemix
  - burtle
  - burtleCI
  - burtleCI
  source_file: /src/pdns/pdns/burtle.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - Logr::Loggable
  - Logr::Loggable
  - Logr::Loggable
  - '& operator=(const Loggable&)'
  - '& operator=(Loggable&&)'
  - ~Loggable()
  - Logr::Logger::Logger
  - Logr::Logger::Logger
  - Logr::Logger::Logger
  - '& operator=(const Logger&)'
  - '& operator=(Logger&&)'
  - ~Logger()
  - Logr::Logger::toString
  - Logr::Logger::info
  - Logr::Logger::error
  - Logr::Logger::error
  - Logr::Logger::withValues
  - Logr::Logger::mapArguments
  - Logr::Logger::mapArguments
  - Logr::Loggable
  - Logr::Loggable
  - Logr::Loggable
  - '& operator=(const Loggable&)'
  - '& operator=(Loggable&&)'
  - ~Loggable()
  - Logr::Logger::Logger
  - Logr::Logger::Logger
  - Logr::Logger::Logger
  - '& operator=(const Logger&)'
  - '& operator=(Logger&&)'
  - ~Logger()
  - Logr::Logger::toString
  - Logr::Logger::info
  - Logr::Logger::error
  - Logr::Logger::error
  - Logr::Logger::withValues
  - Logr::Logger::mapArguments
  - Logr::Logger::mapArguments
  source_file: /src/pdns/pdns/logr.hh
  types:
    enum:
    - enumerators:
      - name: Alert
        value: '1'
      - name: Error
        value: '3'
      - name: Warning
        value: '4'
      - name: Notice
        value: '5'
      - name: Critical
        value: '2'
      - name: Info
        value: '6'
      - name: Debug
        value: '7'
      item_type: enum
      name: Priority
      pos:
        line_end: 63
        line_start: 54
        source_file: /src/pdns/pdns/logr.hh
    - enumerators:
      - name: Alert
        value: '1'
      - name: Error
        value: '3'
      - name: Warning
        value: '4'
      - name: Notice
        value: '5'
      - name: Critical
        value: '2'
      - name: Info
        value: '6'
      - name: Debug
        value: '7'
      item_type: enum
      name: Priority
      pos:
        line_end: 63
        line_start: 54
        source_file: /src/pdns/pdns/logr.hh
    preproc_defs: []
    structs:
    - fields:
      - name: to_string() const
        type: std::string
      item_type: struct
      name: Loggable
      pos:
        line_end: 43
        line_start: 34
        source_file: /src/pdns/pdns/logr.hh
    - fields:
      - name: to_string() const
        type: std::string
      item_type: struct
      name: Loggable
      pos:
        line_end: 43
        line_start: 34
        source_file: /src/pdns/pdns/logr.hh
    typedefs: []
    union: []
- function_names:
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  source_file: /src/pdns/pdns/test-zoneparser_tng_cc.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - SimpleBackend::SimpleDNSRecord
  - SimpleBackend::SimpleDNSZone
  - SimpleBackend::SimpleMetaData
  - SimpleBackend::SimpleBackend
  - SimpleBackend::getCapabilities
  - SimpleBackend::findZone
  - SimpleBackend::lookup
  - SimpleBackend::get
  - SimpleBackend::list
  - SimpleBackend::getDomainMetadata
  - SimpleBackend::setDomainMetadata
  - SimpleBackendBestAuth::SimpleBackendBestAuth
  - SimpleBackendBestAuth::getAuth
  - SimpleBackendNoMeta::SimpleBackendNoMeta
  - SimpleBackendNoMeta::getDomainMetadata
  - SimpleBackendNoMeta::setDomainMetadata
  - SimpleBackendFactory::SimpleBackendFactory
  - SimpleBackendFactory::make
  - SimpleBackendBestAuthFactory::SimpleBackendBestAuthFactory
  - SimpleBackendBestAuthFactory::make
  - SimpleBackendNoMetaFactory::SimpleBackendNoMetaFactory
  - SimpleBackendNoMetaFactory::make
  - UeberBackendSetupArgFixture
  - testWithoutThenWithAuthCache
  - testWithoutThenWithZoneCache
  - getRecords
  - checkRecordExists
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  source_file: /src/pdns/pdns/test-ueberbackend_cc.cc
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: d_content
        type: std::string
      - name: d_name
        type: DNSName
      - name: d_ttl
        type: uint32_t
      - name: d_type
        type: uint16_t
      item_type: struct
      name: SimpleDNSRecord
      pos:
        line_end: 37
        line_start: 27
        source_file: /src/pdns/pdns/test-ueberbackend_cc.cc
    - fields:
      - name: d_records
        type: std::shared_ptr<RecordStorage>
      - name: d_name
        type: ZoneName
      - name: d_id
        type: domainid_t
      item_type: struct
      name: SimpleDNSZone
      pos:
        line_end: 63
        line_start: 55
        source_file: /src/pdns/pdns/test-ueberbackend_cc.cc
    - fields: []
      item_type: struct
      name: HashedNameTag
      pos:
        line_end: 65
        line_start: 65
        source_file: /src/pdns/pdns/test-ueberbackend_cc.cc
    - fields: []
      item_type: struct
      name: IDTag
      pos:
        line_end: 66
        line_start: 66
        source_file: /src/pdns/pdns/test-ueberbackend_cc.cc
    - fields:
      - name: d_name
        type: ZoneName
      - name: d_kind
        type: std::string
      - name: d_values
        type: std::vector<std::string>
      item_type: struct
      name: SimpleMetaData
      pos:
        line_end: 85
        line_start: 76
        source_file: /src/pdns/pdns/test-ueberbackend_cc.cc
    - fields: []
      item_type: struct
      name: OrderedNameKindTag
      pos:
        line_end: 87
        line_start: 87
        source_file: /src/pdns/pdns/test-ueberbackend_cc.cc
    - fields: []
      item_type: struct
      name: UeberBackendSetupArgFixture
      pos:
        line_end: 356
        line_start: 343
        source_file: /src/pdns/pdns/test-ueberbackend_cc.cc
    typedefs:
    - item_type: typedef
      name: RecordStorage
      pos:
        line_end: 53
        line_start: 41
        source_file: /src/pdns/pdns/test-ueberbackend_cc.cc
      type: multi_index_container
    - item_type: typedef
      name: ZoneStorage
      pos:
        line_end: 74
        line_start: 68
        source_file: /src/pdns/pdns/test-ueberbackend_cc.cc
      type: multi_index_container
    - item_type: typedef
      name: MetaDataStorage
      pos:
        line_end: 101
        line_start: 89
        source_file: /src/pdns/pdns/test-ueberbackend_cc.cc
      type: multi_index_container
    union: []
- function_names:
  - AXFRRetriever::AXFRRetriever
  - AXFRRetriever::~AXFRRetriever()
  - AXFRRetriever::getChunk
  - AXFRRetriever::timeoutReadn
  - AXFRRetriever::connect
  - AXFRRetriever::getLength
  source_file: /src/pdns/pdns/axfr-retriever.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - CDB::CDB
  - CDB::~CDB()
  - CDB::searchKey
  - CDB::searchSuffix
  - CDB::searchAll
  - CDB::moveToNext
  - CDB::readNext
  - CDB::findall
  - CDB::keyExists
  - CDB::findOne
  - CDBWriter::CDBWriter
  - CDBWriter::~CDBWriter()
  - CDBWriter::close
  - CDBWriter::addEntry
  source_file: /src/pdns/pdns/cdb.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - pruneCollection
  - moveCacheItemToFrontOrBack
  - moveCacheItemToFront
  - moveCacheItemToBack
  - pruneLockedCollectionsVector
  - pruneMutexCollectionsVector
  - purgeLockedCollectionsVector
  - purgeLockedCollectionsVector
  - purgeExactLockedCollection
  - lruReplacingInsert
  source_file: /src/pdns/pdns/cachecleaner.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - recvThread
  - getRandomAddressFromRange
  - replaceEDNSClientSubnet
  - replaceSourceIPInProxyProtocolPayload
  - sendPackets
  - usage
  - parseQueryFile
  - parseQueryFile
  - parse_options
  - main
  source_file: /src/pdns/pdns/calidns.cc
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: msgh
        type: struct msghdr
      - name: iov
        type: struct iovec
      - name: cbuf
        type: cmsgbuf_aligned
      item_type: struct
      name: Unit
      pos:
        line_end: 186
        line_start: 182
        source_file: /src/pdns/pdns/calidns.cc
    typedefs: []
    union: []
- function_names:
  - RecordTextException::RecordTextException
  - RecordTextReader::getRemaining
  - RecordTextReader::consumeRemaining
  - RecordTextWriter::eof
  - RecordTextWriter::getRemaining
  - RecordTextWriter::consumeRemaining
  source_file: /src/pdns/pdns/rcpgenerator.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - RecordTextReader::RecordTextReader
  - RecordTextReader::xfr48BitInt
  - RecordTextReader::xfrNodeOrLocatorID
  - RecordTextReader::xfr64BitInt
  - RecordTextReader::xfr32BitInt
  - RecordTextReader::xfrTime
  - RecordTextReader::xfrIP
  - RecordTextReader::xfrIP6
  - RecordTextReader::xfrCAWithoutPort
  - RecordTextReader::xfrCAPort
  - RecordTextReader::eof
  - RecordTextReader::xfr16BitInt
  - RecordTextReader::xfr8BitInt
  - RecordTextReader::xfrName
  - isbase64
  - RecordTextReader::xfrBlobNoSpaces
  - RecordTextReader::xfrBlob
  - RecordTextReader::xfrRFC1035CharString
  - RecordTextReader::xfrSVCBValueList
  - RecordTextReader::xfrSvcParamKeyVals
  - hextodec
  - HEXDecode
  - RecordTextReader::xfrHexBlob
  - RecordTextReader::xfrBase32HexBlob
  - RecordTextWriter::xfrBase32HexBlob
  - RecordTextReader::xfrText
  - RecordTextReader::xfrUnquotedText
  - RecordTextReader::xfrType
  - RecordTextReader::skipSpaces
  - RecordTextWriter::RecordTextWriter
  - RecordTextWriter::xfrNodeOrLocatorID
  - RecordTextWriter::xfr48BitInt
  - RecordTextWriter::xfr32BitInt
  - RecordTextWriter::xfrType
  - RecordTextWriter::xfrIP
  - RecordTextWriter::xfrIP6
  - RecordTextWriter::xfrCAWithoutPort
  - RecordTextWriter::xfrCAPort
  - RecordTextWriter::xfrTime
  - RecordTextWriter::xfr16BitInt
  - RecordTextWriter::xfr8BitInt
  - RecordTextWriter::xfrName
  - RecordTextWriter::xfrBlobNoSpaces
  - RecordTextWriter::xfrBlob
  - RecordTextWriter::xfrHexBlob
  - RecordTextWriter::xfrSVCBValueList
  - RecordTextWriter::xfrSvcParamKeyVals
  - RecordTextWriter::xfrText
  - RecordTextWriter::xfrUnquotedText
  - main
  source_file: /src/pdns/pdns/rcpgenerator.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - computeOrdername
  - checkUpdatePrerequisites
  - checkUpdatePrescan
  - mayPerformUpdate
  - performInsert
  - performDelete
  - updateENT
  - performUpdate
  - socketCleaner
  - forwardPacket
  - isUpdateAllowed
  - updatePrereqCheck323
  - updateRecords
  - PacketHandler::processUpdate
  - increaseSerial
  source_file: /src/pdns/pdns/rfc2136handler.cc
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: di
        type: DomainInfo
      - name: isPresigned
        type: bool
      - name: narrow
        type: bool
      - name: haveNSEC3
        type: bool
      - name: ns3pr
        type: NSEC3PARAMRecordContent
      - name: updatedSerial
        type: bool
      - name: msgPrefix
        type: std::string
      - name: slog
        type: std::shared_ptr<Logr::Logger>
      - name: sock
        type: int
      item_type: struct
      name: updateContext
      pos:
        line_end: 64
        line_start: 48
        source_file: /src/pdns/pdns/rfc2136handler.cc
    typedefs: []
    union: []
- function_names:
  - getLookupKeyFromMessage
  - getLookupKeyFromPublicKey
  - fillOutRRSIG
  - getRRSIGsForRRSET
  - addSignature
  - signatureCacheSize
  - rrsigncomp
  - getBestAuthFromSet
  - addRRSigs
  source_file: /src/pdns/pdns/dnssecsigner.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - PcapPacketReader::PcapPacketReader
  - PcapPacketReader::checkedFreadSize
  - PcapPacketReader::getUDPPacket
  - PcapPacketReader::getSource
  - PcapPacketReader::getDest
  - PcapPacketWriter::PcapPacketWriter
  - PcapPacketWriter::PcapPacketWriter
  - PcapPacketWriter::write
  source_file: /src/pdns/pdns/dnspcap.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/pdns/pdns/tcpreceiver.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - dns_isspace
  - dns_toupper
  - dns_tolower
  - DNSName::DNSName
  - '& operator=(const DNSName& rhs)'
  - '& operator=(DNSName&& rhs) noexcept'
  - DNSName::DNSName
  - DNSName::DNSName
  - operator!=(const DNSName& other) const
  - DNSName::toStringNoDot
  - DNSName::toStringRootDot
  - DNSName::makeLowerCase
  - DNSName::makeUsLowerCase
  - DNSName::empty
  - DNSName::isRoot
  - DNSName::hasLabels
  - DNSName::clear
  - DNSName::hash
  - '& operator+=(const DNSName& rhs)'
  - operator<(const DNSName& rhs)  const
  - operator()(const unsigned char& lhs, const unsigned char& rhs) const
  - DNSName::canonCompare
  - '& getStorage() const'
  - DNSName::sizeEstimate
  - operator()(const DNSName&a, const DNSName& b) const
  - operator+(const DNSName& lhs, const DNSName& rhs)
  - ZoneName::ZoneName
  - '& operator=(const ZoneName& rhs)'
  - '& operator=(ZoneName&& rhs) noexcept'
  - ZoneName::ZoneName
  - ZoneName::ZoneName
  - ZoneName::ZoneName
  - ZoneName::ZoneName
  - ZoneName::isPartOf
  - ZoneName::isPartOf
  - operator==(const ZoneName& rhs) const
  - operator!=(const ZoneName& rhs) const
  - ZoneName::toString
  - ZoneName::chopOff
  - ZoneName::makeLowerCase
  - ZoneName::makeUsLowerCase
  - ZoneName::empty
  - ZoneName::clear
  - ZoneName::trimToLabels
  - ZoneName::canonCompare
  - operator const DNSName&() const
  - operator DNSName&()
  - ZoneName::hasVariant
  - ZoneName::getVariant
  - operator () (const ZoneName& dn) const
  - operator () (const ZoneName& dn) const
  - operator()(const ZoneName& a, const ZoneName& b) const
  - SuffixMatchTree
  - SuffixMatchTree
  - '& operator=(const SuffixMatchTree &rhs)'
  - operator<(const SuffixMatchTree& rhs) const
  - operator<(const SuffixMatchTree& smt) const
  - operator<(const LightKey& lk) const
  - visit
  - add
  - add
  - remove
  - remove
  - lookup
  - getBestMatch
  - getNodes
  - getBestNode
  - getBestNode
  - getBestMatch
  - SuffixMatchNode
  - add
  - add
  - add
  - remove
  - remove
  - check
  - getBestMatch
  - toString
  - toVector
  - operator () (const DNSName& dn) const
  - operator () (const DNSName& dn) const
  - DNSName::operator==(const DNSName& rhs) const
  - toString
  source_file: /src/pdns/pdns/dnsname.hh
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields: []
      item_type: struct
      name: DNSNameCompare
      pos:
        line_end: 186
        line_start: 180
        source_file: /src/pdns/pdns/dnsname.hh
    - fields: []
      item_type: struct
      name: CanonDNSNameCompare
      pos:
        line_end: 264
        line_start: 258
        source_file: /src/pdns/pdns/dnsname.hh
    - fields: []
      item_type: struct
      name: hash<ZoneName>
      pos:
        line_end: 382
        line_start: 380
        source_file: /src/pdns/pdns/dnsname.hh
    - fields: []
      item_type: struct
      name: hash<ZoneName>
      pos:
        line_end: 382
        line_start: 380
        source_file: /src/pdns/pdns/dnsname.hh
    - fields: []
      item_type: struct
      name: CanonZoneNameCompare
      pos:
        line_end: 391
        line_start: 385
        source_file: /src/pdns/pdns/dnsname.hh
    - fields:
      - name: d_name
        type: std::string
      - name: children
        type: std::set<SuffixMatchTree, std::less<>>
      - name: endNode
        type: bool
      - name: d_value
        type: T
      item_type: struct
      name: SuffixMatchTree
      pos:
        line_end: 654
        line_start: 400
        source_file: /src/pdns/pdns/dnsname.hh
    - fields:
      - name: d_name
        type: std::string_view
      item_type: struct
      name: LightKey
      pos:
        line_end: 450
        line_start: 435
        source_file: /src/pdns/pdns/dnsname.hh
    - fields:
      - name: d_tree
        type: SuffixMatchTree<bool>
      - name: d_nodes
        type: std::set<DNSName>
      item_type: struct
      name: SuffixMatchNode
      pos:
        line_end: 739
        line_start: 658
        source_file: /src/pdns/pdns/dnsname.hh
    - fields: []
      item_type: struct
      name: hash<DNSName>
      pos:
        line_end: 746
        line_start: 744
        source_file: /src/pdns/pdns/dnsname.hh
    - fields: []
      item_type: struct
      name: hash<DNSName>
      pos:
        line_end: 746
        line_start: 744
        source_file: /src/pdns/pdns/dnsname.hh
    - fields: []
      item_type: struct
      name: DNSNameSet
      pos:
        line_end: 773
        line_start: 767
        source_file: /src/pdns/pdns/dnsname.hh
    typedefs:
    - item_type: typedef
      name: string_t
      pos:
        line_end: 197
        line_start: 197
        source_file: /src/pdns/pdns/dnsname.hh
      type: container::string
    union: []
- function_names:
  - Utility::timed_connect
  - Utility::setBindAny
  - Utility::inet_ntop
  - Utility::sleep
  - Utility::usleep
  - Utility::dropGroupPrivs
  - Utility::dropUserPrivs
  - Utility::getpid
  - Utility::gettimeofday
  - Utility::writev
  - isleap
  - Utility::timegm
  source_file: /src/pdns/pdns/unix_utility.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - BOOST_AUTO_TEST_CASE
  - increment
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  source_file: /src/pdns/pdns/test-luawrapper.cc
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: value
        type: int
      item_type: struct
      name: Object
      pos:
        line_end: 25
        line_start: 21
        source_file: /src/pdns/pdns/test-luawrapper.cc
    typedefs: []
    union: []
- function_names:
  - extract_bits
  - set_bits
  - unbase32hex
  - toBase32Hex
  - fromBase32Hex
  - main
  source_file: /src/pdns/pdns/base32.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - Logging::Loggable
  - Logging::to_string
  - Logging::IterLoggable
  - Logging::to_string
  - Logging::Loggable
  - Logging::to_string
  - Logging::IterLoggable
  - Logging::to_string
  - SLOG
  - SLOG
  - VERBOSESLOG
  - SLOG
  source_file: /src/pdns/pdns/logging.hh
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: name
        type: std::optional<std::string>
      - name: message
        type: std::string
      - name: error
        type: std::optional<std::string>
      - name: d_timestamp
        type: struct timeval
      - name: values
        type: std::map<std::string, std::string>
      - name: level
        type: size_t
      - name: d_priority
        type: Logr::Priority
      item_type: struct
      name: Entry
      pos:
        line_end: 47
        line_start: 38
        source_file: /src/pdns/pdns/logging.hh
    - fields: []
      item_type: struct
      name: is_to_string_available
      pos:
        line_end: 60
        line_start: 58
        source_file: /src/pdns/pdns/logging.hh
    - fields: []
      item_type: struct
      name: is_to_string_available<T, std::void_t<decltype(std::to_string(std::declval<T>()))>>
      pos:
        line_end: 66
        line_start: 64
        source_file: /src/pdns/pdns/logging.hh
    - fields: []
      item_type: struct
      name: is_toLogString_available
      pos:
        line_end: 72
        line_start: 70
        source_file: /src/pdns/pdns/logging.hh
    - fields: []
      item_type: struct
      name: is_toLogString_available<T, std::void_t<decltype(std::declval<T>().toLogString())>>
      pos:
        line_end: 77
        line_start: 75
        source_file: /src/pdns/pdns/logging.hh
    - fields: []
      item_type: struct
      name: is_toStructuredLogString_available
      pos:
        line_end: 82
        line_start: 80
        source_file: /src/pdns/pdns/logging.hh
    - fields: []
      item_type: struct
      name: is_toStructuredLogString_available<T, std::void_t<decltype(std::declval<T>().toStructuredLogString())>>
      pos:
        line_end: 87
        line_start: 85
        source_file: /src/pdns/pdns/logging.hh
    - fields: []
      item_type: struct
      name: is_toString_available
      pos:
        line_end: 92
        line_start: 90
        source_file: /src/pdns/pdns/logging.hh
    - fields: []
      item_type: struct
      name: is_toString_available<T, std::void_t<decltype(std::declval<T>().toString())>>
      pos:
        line_end: 97
        line_start: 95
        source_file: /src/pdns/pdns/logging.hh
    - fields:
      - name: '& _t'
        type: T
      item_type: struct
      name: Loggable
      pos:
        line_end: 132
        line_start: 102
        source_file: /src/pdns/pdns/logging.hh
    - fields:
      - name: '& _t1'
        type: T
      - name: '& _t2'
        type: T
      item_type: struct
      name: IterLoggable
      pos:
        line_end: 175
        line_start: 135
        source_file: /src/pdns/pdns/logging.hh
    - fields:
      - name: name
        type: std::optional<std::string>
      - name: message
        type: std::string
      - name: error
        type: std::optional<std::string>
      - name: d_timestamp
        type: struct timeval
      - name: values
        type: std::map<std::string, std::string>
      - name: level
        type: size_t
      - name: d_priority
        type: Logr::Priority
      item_type: struct
      name: Entry
      pos:
        line_end: 47
        line_start: 38
        source_file: /src/pdns/pdns/logging.hh
    - fields: []
      item_type: struct
      name: is_to_string_available
      pos:
        line_end: 60
        line_start: 58
        source_file: /src/pdns/pdns/logging.hh
    - fields: []
      item_type: struct
      name: is_to_string_available<T, std::void_t<decltype(std::to_string(std::declval<T>()))>>
      pos:
        line_end: 66
        line_start: 64
        source_file: /src/pdns/pdns/logging.hh
    - fields: []
      item_type: struct
      name: is_toLogString_available
      pos:
        line_end: 72
        line_start: 70
        source_file: /src/pdns/pdns/logging.hh
    - fields: []
      item_type: struct
      name: is_toLogString_available<T, std::void_t<decltype(std::declval<T>().toLogString())>>
      pos:
        line_end: 77
        line_start: 75
        source_file: /src/pdns/pdns/logging.hh
    - fields: []
      item_type: struct
      name: is_toStructuredLogString_available
      pos:
        line_end: 82
        line_start: 80
        source_file: /src/pdns/pdns/logging.hh
    - fields: []
      item_type: struct
      name: is_toStructuredLogString_available<T, std::void_t<decltype(std::declval<T>().toStructuredLogString())>>
      pos:
        line_end: 87
        line_start: 85
        source_file: /src/pdns/pdns/logging.hh
    - fields: []
      item_type: struct
      name: is_toString_available
      pos:
        line_end: 92
        line_start: 90
        source_file: /src/pdns/pdns/logging.hh
    - fields: []
      item_type: struct
      name: is_toString_available<T, std::void_t<decltype(std::declval<T>().toString())>>
      pos:
        line_end: 97
        line_start: 95
        source_file: /src/pdns/pdns/logging.hh
    - fields:
      - name: '& _t'
        type: T
      item_type: struct
      name: Loggable
      pos:
        line_end: 132
        line_start: 102
        source_file: /src/pdns/pdns/logging.hh
    - fields:
      - name: '& _t1'
        type: T
      - name: '& _t2'
        type: T
      item_type: struct
      name: IterLoggable
      pos:
        line_end: 175
        line_start: 135
        source_file: /src/pdns/pdns/logging.hh
    typedefs: []
    union: []
- function_names:
  - replyPacket
  - cleanupGSS
  - Backend
  - question
  - report
  - BOOST_AUTO_TEST_CASE
  - BackendSlow
  - question
  - report1
  - BOOST_AUTO_TEST_CASE
  - BackendDies
  - ~BackendDies()
  - question
  - report2
  - BOOST_AUTO_TEST_CASE
  source_file: /src/pdns/pdns/test-distributor_hh.cc
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: q
        type: int
      - name: d_dt
        type: DTime
      - name: qdomain
        type: DNSName
      - name: qtype
        type: QType
      item_type: struct
      name: Question
      pos:
        line_end: 30
        line_start: 19
        source_file: /src/pdns/pdns/test-distributor_hh.cc
    - fields: []
      item_type: struct
      name: Backend
      pos:
        line_end: 39
        line_start: 32
        source_file: /src/pdns/pdns/test-distributor_hh.cc
    - fields:
      - name: d_shouldSleep
        type: bool
      item_type: struct
      name: BackendSlow
      pos:
        line_end: 82
        line_start: 66
        source_file: /src/pdns/pdns/test-distributor_hh.cc
    - fields:
      - name: s_count
        type: std::atomic<int>
      - name: d_count
        type: int
      - name: d_ourcount
        type: int
      item_type: struct
      name: BackendDies
      pos:
        line_end: 145
        line_start: 124
        source_file: /src/pdns/pdns/test-distributor_hh.cc
    typedefs: []
    union: []
- function_names:
  - BOOST_AUTO_TEST_CASE
  source_file: /src/pdns/pdns/test-webserver_cc.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - B64Decode
  - Base64Encode
  - main
  source_file: /src/pdns/pdns/base64.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/pdns/pdns/version.hh
  types:
    enum:
    - enumerators:
      - name: ProductAuthoritative
      - name: ProductRecursor
      item_type: enum
      name: ProductType
      pos:
        line_end: 28
        line_start: 24
        source_file: /src/pdns/pdns/version.hh
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - intFromJsonInternal
  - intFromJson
  - intFromJson
  - uintFromJsonInternal
  - uintFromJson
  - uintFromJson
  - doubleFromJsonInternal
  - doubleFromJson
  - doubleFromJson
  - stringFromJson
  - boolFromJsonInternal
  - boolFromJson
  - boolFromJson
  source_file: /src/pdns/pdns/json.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/pdns/pdns/threadname.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - Check::validateViewName
  - Check::checkRRSet
  - Check::validateViewName
  - Check::checkRRSet
  source_file: /src/pdns/pdns/check-zone.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - DLOG
  - PacketHandler::PacketHandler
  - PacketHandler::getBackend
  - PacketHandler::~PacketHandler()
  - PacketHandler::addCDNSKEY
  - PacketHandler::addCDNSKEY
  - PacketHandler::addDNSKEY
  - PacketHandler::addCDS
  - PacketHandler::addCDS
  - PacketHandler::addNSEC3PARAM
  - PacketHandler::doChaosRequest
  - PacketHandler::getBestReferralNS
  - PacketHandler::getBestDNAMESynth
  - PacketHandler::getBestWildcard
  - PacketHandler::doAdditionalServiceProcessing
  - PacketHandler::doAdditionalProcessing
  - PacketHandler::getIPAddressFor
  - PacketHandler::emitNSEC
  - PacketHandler::emitNSEC3
  - PacketHandler::addNSECX
  - PacketHandler::getNSEC3Hashes
  - PacketHandler::addNSEC3
  - PacketHandler::addNSEC
  - PacketHandler::tryAutoPrimary
  - PacketHandler::tryAutoPrimarySynchronous
  - PacketHandler::processNotify
  - validDNSName
  - PacketHandler::question
  - PacketHandler::makeNXDomain
  - PacketHandler::makeNOError
  - PacketHandler::addDSforNS
  - PacketHandler::tryReferral
  - PacketHandler::completeANYRecords
  - PacketHandler::tryAuthSignal
  - PacketHandler::tryDNAME
  - PacketHandler::tryWildcard
  - fillProtoZeroMessageFromDNSPacket
  - mustSendProtoBuf
  - sendProtobuf
  - PacketHandler::doQuestion
  - PacketHandler::doQuestionInner
  - PacketHandler::opcodeQueryInner
  - PacketHandler::opcodeQueryInner2
  - PacketHandler::opcodeQuery
  - PacketHandler::opcodeNotify
  - PacketHandler::opcodeUpdate
  - PacketHandler::opcodeNotImplemented
  - PacketHandler::checkForCorrectTSIG
  - PacketHandler::doLuaRecords
  - PacketHandler::isPresigned
  - PacketHandler::isSecuredZone
  source_file: /src/pdns/pdns/packethandler.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - getCURLPtr
  - getCURLPtr
  - MiniCurl::init
  - MiniCurl::MiniCurl
  - MiniCurl::~MiniCurl()
  - MiniCurl::write_callback
  - MiniCurl::progress_callback
  - MiniCurl::progress_callback
  - extractHostFromURL
  - MiniCurl::setupURL
  - MiniCurl::getURL
  - MiniCurl::postURL
  - MiniCurl::clearHeaders
  - MiniCurl::clearHostsList
  - MiniCurl::setHeaders
  source_file: /src/pdns/pdns/minicurl.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - getSerialFromPrimary
  - getSerialFromDir
  - getSerialFromRecords
  - writeRecords
  - writeZoneToDisk
  - loadZoneFromDisk
  - loadSOAFromDisk
  source_file: /src/pdns/pdns/ixfrutils.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - alarmHandler
  - doRun
  - ARecordTest
  - getName
  - operator()() const
  - MakeStringFromCharStarTest
  - getName
  - operator()() const
  - getName
  - operator()() const
  - getName
  - operator()() const
  - getName
  - operator()() const
  - getName
  - operator()() const
  - getName
  - operator()() const
  - getName
  - operator()() const
  - getName
  - operator()() const
  - getName
  - operator()() const
  - getName
  - operator()() const
  - getName
  - operator()() const
  - getName
  - operator()() const
  - makeBigReferral
  - makeBigDNSPacketReferral
  - getName
  - operator()() const
  - A2RecordTest
  - getName
  - operator()() const
  - TXTRecordTest
  - getName
  - operator()() const
  - GenericRecordTest
  - getName
  - operator()() const
  - AAAARecordTest
  - getName
  - operator()() const
  - SOARecordTest
  - getName
  - operator()() const
  - makeEmptyQuery
  - makeTypicalReferral
  - getName
  - operator()() const
  - getName
  - operator()() const
  - getName
  - operator()() const
  - getName
  - operator()() const
  - getName
  - operator()() const
  - operator()(const pair<DNSName, QType>& a, const pair<DNSName, QType>& b) const
  - ParsePacketTest
  - getName
  - operator()() const
  - ParsePacketBareTest
  - getName
  - operator()() const
  - SimpleCompressTest
  - getName
  - operator()() const
  - getName
  - operator()() const
  - getName
  - operator()() const
  - getName
  - operator()() const
  - SuffixMatchNodeTest
  - getName
  - operator()() const
  - getName
  - operator()() const
  - getName
  - operator()() const
  - getName
  - operator()() const
  - getName
  - operator()() const
  - getName
  - operator()() const
  - getName
  - operator()() const
  - StatRingDNSNameQTypeToStringTest
  - getName
  - operator()() const
  - StatRingDNSNameQTypeTest
  - getName
  - operator()() const
  - getName
  - operator()() const
  - getName
  - operator()() const
  - NSEC3HashTest
  - getName
  - operator()() const
  - getName
  - operator()() const
  - ReadWriteLockSharedTest
  - getName
  - operator()() const
  - ReadWriteLockExclusiveTest
  - getName
  - operator()() const
  - ReadWriteLockExclusiveTryTest
  - getName
  - operator()() const
  - ReadWriteLockSharedTryTest
  - getName
  - operator()() const
  - CredentialsHashTest
  - getName
  - operator()() const
  - getName
  - operator()() const
  - CredentialsVerifyTest
  - getName
  - operator()() const
  - BurtleHashTest
  - getName
  - operator()() const
  - BurtleHashCITest
  - getName
  - operator()() const
  - SipHashTest
  - getName
  - operator()() const
  - DedupRecordsTest
  - getName
  - operator()() const
  - main
  source_file: /src/pdns/pdns/speedtest.cc
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: d_records
        type: int
      item_type: struct
      name: ARecordTest
      pos:
        line_end: 85
        line_start: 64
        source_file: /src/pdns/pdns/speedtest.cc
    - fields:
      - name: d_size
        type: int
      item_type: struct
      name: MakeStringFromCharStarTest
      pos:
        line_end: 103
        line_start: 88
        source_file: /src/pdns/pdns/speedtest.cc
    - fields: []
      item_type: struct
      name: GetTimeTest
      pos:
        line_end: 118
        line_start: 106
        source_file: /src/pdns/pdns/speedtest.cc
    - fields:
      - name: d_testlock
        type: std::mutex
      - name: d_value
        type: uint64_t
      item_type: struct
      name: GetLockUncontendedTest
      pos:
        line_end: 138
        line_start: 120
        source_file: /src/pdns/pdns/speedtest.cc
    - fields:
      - name: d_testlock
        type: std::mutex
      - name: d_value
        type: uint64_t
      item_type: struct
      name: GetUniqueLockUncontendedTest
      pos:
        line_end: 157
        line_start: 140
        source_file: /src/pdns/pdns/speedtest.cc
    - fields:
      - name: d_testlock
        type: std::mutex
      - name: d_value
        type: uint64_t
      item_type: struct
      name: GetLockGuardUncontendedTest
      pos:
        line_end: 176
        line_start: 159
        source_file: /src/pdns/pdns/speedtest.cc
    - fields:
      - name: d_value
        type: LockGuarded<uint64_t>
      item_type: struct
      name: GetLockGuardedUncontendedTest
      pos:
        line_end: 194
        line_start: 178
        source_file: /src/pdns/pdns/speedtest.cc
    - fields: []
      item_type: struct
      name: StaticMemberTest
      pos:
        line_end: 209
        line_start: 196
        source_file: /src/pdns/pdns/speedtest.cc
    - fields: []
      item_type: struct
      name: StringtokTest
      pos:
        line_end: 224
        line_start: 211
        source_file: /src/pdns/pdns/speedtest.cc
    - fields: []
      item_type: struct
      name: VStringtokTest
      pos:
        line_end: 239
        line_start: 226
        source_file: /src/pdns/pdns/speedtest.cc
    - fields: []
      item_type: struct
      name: StringAppendTest
      pos:
        line_end: 256
        line_start: 241
        source_file: /src/pdns/pdns/speedtest.cc
    - fields: []
      item_type: struct
      name: BoostStringAppendTest
      pos:
        line_end: 274
        line_start: 259
        source_file: /src/pdns/pdns/speedtest.cc
    - fields: []
      item_type: struct
      name: MakeARecordTest
      pos:
        line_end: 292
        line_start: 278
        source_file: /src/pdns/pdns/speedtest.cc
    - fields: []
      item_type: struct
      name: MakeARecordTestMM
      pos:
        line_end: 390
        line_start: 378
        source_file: /src/pdns/pdns/speedtest.cc
    - fields:
      - name: d_records
        type: int
      item_type: struct
      name: A2RecordTest
      pos:
        line_end: 416
        line_start: 393
        source_file: /src/pdns/pdns/speedtest.cc
    - fields:
      - name: d_records
        type: int
      item_type: struct
      name: TXTRecordTest
      pos:
        line_end: 440
        line_start: 419
        source_file: /src/pdns/pdns/speedtest.cc
    - fields:
      - name: d_records
        type: int
      - name: d_type
        type: uint16_t
      - name: d_content
        type: string
      item_type: struct
      name: GenericRecordTest
      pos:
        line_end: 469
        line_start: 443
        source_file: /src/pdns/pdns/speedtest.cc
    - fields:
      - name: d_records
        type: int
      item_type: struct
      name: AAAARecordTest
      pos:
        line_end: 493
        line_start: 472
        source_file: /src/pdns/pdns/speedtest.cc
    - fields:
      - name: d_records
        type: int
      item_type: struct
      name: SOARecordTest
      pos:
        line_end: 517
        line_start: 495
        source_file: /src/pdns/pdns/speedtest.cc
    - fields: []
      item_type: struct
      name: StackMallocTest
      pos:
        line_end: 565
        line_start: 552
        source_file: /src/pdns/pdns/speedtest.cc
    - fields: []
      item_type: struct
      name: EmptyQueryTest
      pos:
        line_end: 580
        line_start: 568
        source_file: /src/pdns/pdns/speedtest.cc
    - fields: []
      item_type: struct
      name: TypicalRefTest
      pos:
        line_end: 594
        line_start: 582
        source_file: /src/pdns/pdns/speedtest.cc
    - fields: []
      item_type: struct
      name: BigRefTest
      pos:
        line_end: 608
        line_start: 596
        source_file: /src/pdns/pdns/speedtest.cc
    - fields: []
      item_type: struct
      name: BigDNSPacketRefTest
      pos:
        line_end: 622
        line_start: 610
        source_file: /src/pdns/pdns/speedtest.cc
    - fields: []
      item_type: struct
      name: TCacheComp
      pos:
        line_end: 636
        line_start: 625
        source_file: /src/pdns/pdns/speedtest.cc
    - fields:
      - name: d_name
        type: DNSName
      - name: d_qtype
        type: QType
      - name: d_qname
        type: DNSName
      - name: d_ttd
        type: uint32_t
      item_type: struct
      name: NegCacheEntry
      pos:
        line_end: 644
        line_start: 638
        source_file: /src/pdns/pdns/speedtest.cc
    - fields:
      - name: '& d_packet'
        type: vector<uint8_t>
      - name: d_name
        type: std::string
      item_type: struct
      name: ParsePacketTest
      pos:
        line_end: 686
        line_start: 650
        source_file: /src/pdns/pdns/speedtest.cc
    - fields:
      - name: d_result
        type: vector<DNSResourceRecord>
      - name: d_aabit
        type: bool
      - name: d_rcode
        type: int
      item_type: struct
      name: lwr
      pos:
        line_end: 671
        line_start: 667
        source_file: /src/pdns/pdns/speedtest.cc
    - fields:
      - name: '& d_packet'
        type: vector<uint8_t>
      - name: d_name
        type: std::string
      item_type: struct
      name: ParsePacketBareTest
      pos:
        line_end: 705
        line_start: 688
        source_file: /src/pdns/pdns/speedtest.cc
    - fields:
      - name: d_name
        type: std::string
      item_type: struct
      name: SimpleCompressTest
      pos:
        line_end: 724
        line_start: 708
        source_file: /src/pdns/pdns/speedtest.cc
    - fields: []
      item_type: struct
      name: VectorExpandTest
      pos:
        line_end: 744
        line_start: 726
        source_file: /src/pdns/pdns/speedtest.cc
    - fields: []
      item_type: struct
      name: DNSNameParseTest
      pos:
        line_end: 758
        line_start: 746
        source_file: /src/pdns/pdns/speedtest.cc
    - fields: []
      item_type: struct
      name: DNSNameRootTest
      pos:
        line_end: 772
        line_start: 760
        source_file: /src/pdns/pdns/speedtest.cc
    - fields:
      - name: d_exist
        type: DNSName
      - name: d_does_not_exist
        type: DNSName
      - name: d_smn
        type: SuffixMatchNode
      item_type: struct
      name: SuffixMatchNodeTest
      pos:
        line_end: 800
        line_start: 774
        source_file: /src/pdns/pdns/speedtest.cc
    - fields: []
      item_type: struct
      name: IEqualsTest
      pos:
        line_end: 815
        line_start: 802
        source_file: /src/pdns/pdns/speedtest.cc
    - fields: []
      item_type: struct
      name: MyIEqualsTest
      pos:
        line_end: 830
        line_start: 817
        source_file: /src/pdns/pdns/speedtest.cc
    - fields: []
      item_type: struct
      name: StrcasecmpTest
      pos:
        line_end: 845
        line_start: 833
        source_file: /src/pdns/pdns/speedtest.cc
    - fields: []
      item_type: struct
      name: Base64EncodeTest
      pos:
        line_end: 860
        line_start: 848
        source_file: /src/pdns/pdns/speedtest.cc
    - fields: []
      item_type: struct
      name: B64DecodeTest
      pos:
        line_end: 875
        line_start: 863
        source_file: /src/pdns/pdns/speedtest.cc
    - fields: []
      item_type: struct
      name: NOPTest
      pos:
        line_end: 889
        line_start: 878
        source_file: /src/pdns/pdns/speedtest.cc
    - fields:
      - name: d_name
        type: DNSName
      - name: d_type
        type: QType
      item_type: struct
      name: StatRingDNSNameQTypeToStringTest
      pos:
        line_end: 903
        line_start: 891
        source_file: /src/pdns/pdns/speedtest.cc
    - fields:
      - name: d_name
        type: DNSName
      - name: d_type
        type: QType
      item_type: struct
      name: StatRingDNSNameQTypeTest
      pos:
        line_end: 917
        line_start: 905
        source_file: /src/pdns/pdns/speedtest.cc
    - fields: []
      item_type: struct
      name: NetmaskTreeTest
      pos:
        line_end: 931
        line_start: 920
        source_file: /src/pdns/pdns/speedtest.cc
    - fields: []
      item_type: struct
      name: UUIDGenTest
      pos:
        line_end: 940
        line_start: 933
        source_file: /src/pdns/pdns/speedtest.cc
    - fields:
      - name: d_iterations
        type: int
      - name: d_salt
        type: string
      - name: d_name
        type: DNSName
      item_type: struct
      name: NSEC3HashTest
      pos:
        line_end: 958
        line_start: 942
        source_file: /src/pdns/pdns/speedtest.cc
    - fields:
      - name: d_lock
        type: std::shared_mutex
      - name: d_value
        type: uint64_t
      item_type: struct
      name: SharedLockTest
      pos:
        line_end: 974
        line_start: 960
        source_file: /src/pdns/pdns/speedtest.cc
    - fields:
      - name: '& d_lock'
        type: ReadWriteLock
      item_type: struct
      name: ReadWriteLockSharedTest
      pos:
        line_end: 992
        line_start: 976
        source_file: /src/pdns/pdns/speedtest.cc
    - fields:
      - name: '& d_lock'
        type: ReadWriteLock
      item_type: struct
      name: ReadWriteLockExclusiveTest
      pos:
        line_end: 1010
        line_start: 994
        source_file: /src/pdns/pdns/speedtest.cc
    - fields:
      - name: '& d_lock'
        type: ReadWriteLock
      - name: d_contended
        type: bool
      item_type: struct
      name: ReadWriteLockExclusiveTryTest
      pos:
        line_end: 1037
        line_start: 1012
        source_file: /src/pdns/pdns/speedtest.cc
    - fields:
      - name: '& d_lock'
        type: ReadWriteLock
      - name: d_contended
        type: bool
      item_type: struct
      name: ReadWriteLockSharedTryTest
      pos:
        line_end: 1064
        line_start: 1039
        source_file: /src/pdns/pdns/speedtest.cc
    - fields:
      - name: d_password
        type: std::string
      item_type: struct
      name: CredentialsHashTest
      pos:
        line_end: 1082
        line_start: 1066
        source_file: /src/pdns/pdns/speedtest.cc
    - fields: []
      item_type: struct
      name: RndSpeedTest
      pos:
        line_end: 1095
        line_start: 1084
        source_file: /src/pdns/pdns/speedtest.cc
    - fields:
      - name: d_hashed
        type: std::string
      - name: d_password
        type: std::string
      item_type: struct
      name: CredentialsVerifyTest
      pos:
        line_end: 1116
        line_start: 1097
        source_file: /src/pdns/pdns/speedtest.cc
    - fields:
      - name: d_name
        type: string
      item_type: struct
      name: BurtleHashTest
      pos:
        line_end: 1134
        line_start: 1118
        source_file: /src/pdns/pdns/speedtest.cc
    - fields:
      - name: d_name
        type: string
      item_type: struct
      name: BurtleHashCITest
      pos:
        line_end: 1152
        line_start: 1136
        source_file: /src/pdns/pdns/speedtest.cc
    - fields:
      - name: d_name
        type: string
      - name: d_key[crypto_shorthash_KEYBYTES]
        type: unsigned char
      item_type: struct
      name: SipHashTest
      pos:
        line_end: 1177
        line_start: 1156
        source_file: /src/pdns/pdns/speedtest.cc
    - fields:
      - name: d_vec
        type: vector<DNSRecord>
      - name: d_howmany
        type: size_t
      - name: d_dedup
        type: bool
      - name: d_withdup
        type: bool
      item_type: struct
      name: DedupRecordsTest
      pos:
        line_end: 1219
        line_start: 1180
        source_file: /src/pdns/pdns/speedtest.cc
    typedefs:
    - item_type: typedef
      name: tcache_t
      pos:
        line_end: 664
        line_start: 664
        source_file: /src/pdns/pdns/speedtest.cc
      type: map
    union: []
- function_names:
  - CommunicatorClass::queueNotifyDomain
  - CommunicatorClass::notifyDomain
  - NotificationQueue::dump
  - CommunicatorClass::getUpdatedProducers
  - CommunicatorClass::primaryUpdateCheck
  - CommunicatorClass::doNotifications
  - CommunicatorClass::sendNotification
  - CommunicatorClass::drillHole
  - CommunicatorClass::justNotified
  - CommunicatorClass::makeNotifySockets
  - CommunicatorClass::notify
  source_file: /src/pdns/pdns/auth-primarycommunicator.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - RuntimeError
  - NetworkErr
  - SSocket
  - SConnect
  - SConnectWithTimeout
  - SBind
  - SAccept
  - SListen
  - SSetsockopt
  - setSocketIgnorePMTU
  - setSocketForcePMTU
  - setReusePort
  - HarvestTimestamp
  - HarvestDestinationAddress
  - IsAnyAddress
  - sendOnNBSocket
  - fillMSGHdr
  - ComboAddress::truncate
  - sendMsgWithOptions
  - isTCPSocketUsable
  - parseIPAndPort
  - setSocketBuffer
  - setSocketReceiveBuffer
  - setSocketSendBuffer
  - raiseSocketBufferToMax
  - raiseSocketReceiveBufferToMax
  - raiseSocketSendBufferToMax
  - getListOfNetworkInterfaces
  - getListOfAddressesOfNetworkInterface
  - getListOfAddressesOfNetworkInterface
  - convertNetmaskToBits
  - getListOfRangesOfNetworkInterface
  - getListOfRangesOfNetworkInterface
  source_file: /src/pdns/pdns/iputils.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - pdns_sqlite3_clear_bindings
  - SSQLite3ErrorString
  - SSQLite3Statement::SSQLite3Statement
  - SSQLite3Statement::SSQLite3Statement
  - SSQLite3Statement::SSQLite3Statement
  - '& operator=(const SSQLite3Statement&)'
  - '& operator=(SSQLite3Statement&&)'
  - SSQLite3Statement::name2idx
  - SSQLite3Statement::bind
  - SSQLite3Statement::bind
  - SSQLite3Statement::bind
  - SSQLite3Statement::bind
  - SSQLite3Statement::bind
  - SSQLite3Statement::bind
  - SSQLite3Statement::bind
  - SSQLite3Statement::bind
  - SSQLite3Statement::bindNull
  - SSQLite3Statement::execute
  - SSQLite3Statement::hasNextRow
  - SSQLite3Statement::nextRow
  - SSQLite3Statement::getResult
  - SSQLite3Statement::reset
  - ~SSQLite3Statement() override
  - '& getQuery() override'
  - SSQLite3Statement::prepareStatement
  - SSQLite3Statement::releaseStatement
  - SSQLite3::SSQLite3
  - SSQLite3::setLog
  - SSQLite3::~SSQLite3()
  - SSQLite3::prepare
  - SSQLite3::executeImpl
  - SSQLite3::execute
  - SSQLite3::busyHandler
  - SSQLite3::startTransaction
  - SSQLite3::rollback
  - SSQLite3::commit
  - SSQLite3::sPerrorException
  source_file: /src/pdns/pdns/ssqlite3.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.hh
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: d_addr
        type: ComboAddress
      - name: d_subjectName
        type: std::string
      - name: d_dohPath
        type: std::string
      - name: d_port
        type: uint16_t
      - name: d_protocol
        type: dnsdist::Protocol
      item_type: struct
      name: DiscoveredResolverConfig
      pos:
        line_end: 54
        line_start: 47
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.hh
    - fields:
      - name: d_ds
        type: std::shared_ptr<DownstreamState>
      - name: d_poolAfterUpgrade
        type: std::string
      - name: d_nextCheck
        type: time_t
      - name: d_interval
        type: uint32_t
      - name: d_dohKey
        type: uint16_t
      - name: keepAfterUpgrade
        type: bool
      item_type: struct
      name: UpgradeableBackend
      pos:
        line_end: 70
        line_start: 62
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.hh
    - fields:
      - name: d_addr
        type: ComboAddress
      - name: d_subjectName
        type: std::string
      - name: d_dohPath
        type: std::string
      - name: d_port
        type: uint16_t
      - name: d_protocol
        type: dnsdist::Protocol
      item_type: struct
      name: DiscoveredResolverConfig
      pos:
        line_end: 54
        line_start: 47
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.hh
    - fields:
      - name: d_ds
        type: std::shared_ptr<DownstreamState>
      - name: d_poolAfterUpgrade
        type: std::string
      - name: d_nextCheck
        type: time_t
      - name: d_interval
        type: uint32_t
      - name: d_dohKey
        type: uint16_t
      - name: keepAfterUpgrade
        type: bool
      item_type: struct
      name: UpgradeableBackend
      pos:
        line_end: 70
        line_start: 62
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.hh
    typedefs: []
    union: []
- function_names: []
  source_file: /src/pdns/pdns/dnsdistdist/dnsdist-query-count.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/pdns/pdns/dnsdistdist/capabilities.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - makeEDNSPaddingOptString
  source_file: /src/pdns/pdns/dnsdistdist/ednspadding.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - dnsdist::metrics::MutableCounter
  - dnsdist::metrics::MutableCounter
  - dnsdist::metrics::MutableCounter
  - '& operator=(const MutableCounter&)'
  - '& operator=(MutableCounter&& rhs) noexcept'
  - ~MutableCounter()
  - dnsdist::metrics::MutableGauge
  - dnsdist::metrics::MutableGauge
  - dnsdist::metrics::MutableGauge
  - '& operator=(const MutableGauge&)'
  - '& operator=(MutableGauge&& rhs) noexcept'
  - ~MutableGauge()
  - dnsdist::metrics::Stats::Stats
  - dnsdist::metrics::declareCustomMetric
  - dnsdist::metrics::prometheusLabelValueEscape
  - dnsdist::metrics::generateCombinationOfLabels
  - dnsdist::metrics::updateMetric
  - dnsdist::metrics::incrementCustomCounter
  - dnsdist::metrics::decrementCustomCounter
  - dnsdist::metrics::setCustomGauge
  - dnsdist::metrics::getCustomMetric
  - dnsdist::metrics::MutableCounter
  - dnsdist::metrics::MutableCounter
  - dnsdist::metrics::MutableCounter
  - '& operator=(const MutableCounter&)'
  - '& operator=(MutableCounter&& rhs) noexcept'
  - ~MutableCounter()
  - dnsdist::metrics::MutableGauge
  - dnsdist::metrics::MutableGauge
  - dnsdist::metrics::MutableGauge
  - '& operator=(const MutableGauge&)'
  - '& operator=(MutableGauge&& rhs) noexcept'
  - ~MutableGauge()
  - dnsdist::metrics::Stats::Stats
  - dnsdist::metrics::declareCustomMetric
  - dnsdist::metrics::prometheusLabelValueEscape
  - dnsdist::metrics::generateCombinationOfLabels
  - dnsdist::metrics::updateMetric
  - dnsdist::metrics::incrementCustomCounter
  - dnsdist::metrics::decrementCustomCounter
  - dnsdist::metrics::setCustomGauge
  - dnsdist::metrics::getCustomMetric
  source_file: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: d_value
        type: stat_t
      item_type: struct
      name: MutableCounter
      pos:
        line_end: 51
        line_start: 34
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc
    - fields:
      - name: d_value
        type: pdns::stat_double_t
      item_type: struct
      name: MutableGauge
      pos:
        line_end: 70
        line_start: 53
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc
    - fields:
      - name: d_value
        type: stat_t
      item_type: struct
      name: MutableCounter
      pos:
        line_end: 51
        line_start: 34
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc
    - fields:
      - name: d_value
        type: pdns::stat_double_t
      item_type: struct
      name: MutableGauge
      pos:
        line_end: 70
        line_start: 53
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.cc
    typedefs: []
    union: []
- function_names:
  - getLogger
  - dnsdist_ffi_dnsquestion_get_qtype
  - dnsdist_ffi_dnsquestion_get_qclass
  - dnsdist_ffi_dnsquestion_get_id
  - dnsdist_ffi_comboaddress_to_raw
  - dnsdist_ffi_dnsquestion_get_localaddr
  - dnsdist_ffi_dnsquestion_is_remote_v6
  - dnsdist_ffi_dnsquestion_get_remoteaddr
  - dnsdist_ffi_dnsquestion_get_mac_addr
  - dnsdist_ffi_dnsquestion_get_elapsed_us
  - checkDNSQuestionType
  - checkDNSResponseType
  - dnsdist_ffi_dnsquestion_get_masked_remoteaddr
  - dnsdist_ffi_dnsquestion_get_local_port
  - dnsdist_ffi_dnsquestion_get_remote_port
  - dnsdist_ffi_dnsquestion_get_incoming_interface
  - dnsdist_ffi_dnsquestion_get_qname_raw
  - dnsdist_ffi_dnsquestion_get_qname_hash
  - dnsdist_ffi_dnsquestion_get_rcode
  - dnsdist_ffi_dnsquestion_get_header
  - dnsdist_ffi_dnsquestion_get_data
  - dnsdist_ffi_dnsquestion_get_header_copy
  - dnsdist_ffi_dnsquestion_set_header
  - dnsdist_ffi_dnsquestion_get_len
  - dnsdist_ffi_dnsquestion_get_size
  - dnsdist_ffi_dnsquestion_set_size
  - dnsdist_ffi_dnsquestion_get_opcode
  - dnsdist_ffi_dnsquestion_get_tcp
  - dnsdist_ffi_dnsquestion_get_protocol
  - dnsdist_ffi_dnsquestion_get_skip_cache
  - dnsdist_ffi_dnsquestion_get_use_ecs
  - dnsdist_ffi_dnsquestion_get_ecs_override
  - dnsdist_ffi_dnsquestion_get_ecs_prefix_length
  - dnsdist_ffi_dnsquestion_is_temp_failure_ttl_set
  - dnsdist_ffi_dnsquestion_get_temp_failure_ttl
  - dnsdist_ffi_dnsquestion_get_do
  - dnsdist_ffi_dnsquestion_get_edns_version
  - dnsdist_ffi_dnsquestion_get_edns_extended_rcode
  - dnsdist_ffi_dnsquestion_get_sni
  - dnsdist_ffi_dnsquestion_get_tag
  - dnsdist_ffi_dnsquestion_get_tag_raw
  - dnsdist_ffi_dnsquestion_get_http_path
  - dnsdist_ffi_dnsquestion_get_http_query_string
  - dnsdist_ffi_dnsquestion_get_http_host
  - dnsdist_ffi_dnsquestion_get_http_scheme
  - fill_edns_option
  - dnsdist_ffi_dnsquestion_get_edns_options
  - dnsdist_ffi_dnsquestion_get_http_headers
  - dnsdist_ffi_dnsquestion_get_tag_array
  - dnsdist_ffi_dnsquestion_set_result
  - dnsdist_ffi_dnsquestion_set_http_response
  - dnsdist_ffi_dnsquestion_set_extended_dns_error
  - dnsdist_ffi_dnsquestion_add_extended_dns_error
  - dnsdist_ffi_dnsquestion_set_rcode
  - dnsdist_ffi_dnsquestion_set_len
  - dnsdist_ffi_dnsquestion_set_skip_cache
  - dnsdist_ffi_dnsquestion_set_use_ecs
  - dnsdist_ffi_dnsquestion_set_ecs_override
  - dnsdist_ffi_dnsquestion_set_ecs_prefix_length
  - dnsdist_ffi_dnsquestion_set_temp_failure_ttl
  - dnsdist_ffi_dnsquestion_unset_temp_failure_ttl
  - dnsdist_ffi_dnsquestion_set_tag
  - dnsdist_ffi_dnsquestion_unset_tag
  - dnsdist_ffi_dnsquestion_set_tag_raw
  - dnsdist_ffi_dnsquestion_set_requestor_id
  - dnsdist_ffi_dnsquestion_set_device_id
  - dnsdist_ffi_dnsquestion_set_device_name
  - dnsdist_ffi_dnsquestion_get_trailing_data
  - dnsdist_ffi_dnsquestion_set_trailing_data
  - dnsdist_ffi_dnsquestion_send_trap
  - dnsdist_ffi_dnsquestion_spoof_packet
  - dnsdist_ffi_dnsquestion_spoof_raw
  - dnsdist_ffi_dnsquestion_spoof_addrs
  - dnsdist_ffi_dnsquestion_set_max_returned_ttl
  - dnsdist_ffi_dnsquestion_set_restartable
  - dnsdist_ffi_servers_list_get_count
  - dnsdist_ffi_servers_list_get_server
  - dnsdist_ffi_servers_list_chashed
  - dnsdist_ffi_servers_list_whashed
  - dnsdist_ffi_server_get_outstanding
  - dnsdist_ffi_server_get_weight
  - dnsdist_ffi_server_get_order
  - dnsdist_ffi_server_get_latency
  - dnsdist_ffi_server_is_up
  - dnsdist_ffi_server_get_name
  - dnsdist_ffi_server_get_name_with_addr
  - dnsdist_ffi_dnsresponse_set_min_ttl
  - dnsdist_ffi_dnsresponse_set_max_ttl
  - dnsdist_ffi_dnsresponse_limit_ttl
  - dnsdist_ffi_dnsresponse_set_max_returned_ttl
  - dnsdist_ffi_dnsresponse_clear_records_type
  - dnsdist_ffi_dnsresponse_rebase
  - dnsdist_ffi_dnsresponse_get_stale_cache_hit
  - dnsdist_ffi_dnsresponse_get_restart_count
  - dnsdist_ffi_dnsquestion_set_async
  - dnsdist_ffi_dnsresponse_set_async
  - dnsdist_ffi_resume_from_async
  - dnsdist_ffi_set_rcode_from_async
  - setAlternateName
  - dnsdist_ffi_resume_from_async_with_alternate_name
  - dnsdist_ffi_dnsquestion_set_alternate_name
  - dnsdist_ffi_drop_from_async
  - dnsdist_ffi_set_answer_from_async
  - getLuaFFIWrappers
  - setupLuaLoadBalancingContext
  - setupLuaFFIPerThreadContext
  - dnsdist_ffi_generate_proxy_protocol_payload
  - dnsdist_ffi_dnsquestion_generate_proxy_protocol_payload
  - dnsdist_ffi_dnsquestion_add_proxy_protocol_values
  - dnsdist_ffi_dnsquestion_get_proxy_protocol_values
  - dnsdist_ffi_domain_list_get
  - dnsdist_ffi_domain_list_free
  - dnsdist_ffi_address_list_get
  - dnsdist_ffi_address_list_free
  - dnsdist_ffi_packetcache_get_domain_list_by_addr
  - dnsdist_ffi_packetcache_get_address_list_by_domain
  - dnsdist_ffi_ring_entry_is_response
  - dnsdist_ffi_ring_entry_get_age
  - dnsdist_ffi_ring_entry_get_name
  - dnsdist_ffi_ring_entry_get_type
  - dnsdist_ffi_ring_entry_get_requestor
  - dnsdist_ffi_ring_entry_get_backend
  - dnsdist_ffi_ring_entry_get_protocol
  - dnsdist_ffi_ring_entry_get_size
  - dnsdist_ffi_ring_entry_get_latency
  - dnsdist_ffi_ring_entry_get_id
  - dnsdist_ffi_ring_entry_get_rcode
  - dnsdist_ffi_ring_entry_get_aa
  - dnsdist_ffi_ring_entry_get_rd
  - dnsdist_ffi_ring_entry_get_tc
  - dnsdist_ffi_ring_entry_get_ancount
  - dnsdist_ffi_ring_entry_get_nscount
  - dnsdist_ffi_ring_entry_get_arcount
  - dnsdist_ffi_ring_entry_has_mac_address
  - dnsdist_ffi_ring_entry_get_mac_address
  - dnsdist_ffi_ring_entry_list_free
  - addRingEntryToList
  - dnsdist_ffi_ring_get_entries
  - dnsdist_ffi_ring_get_entries_by_addr
  - dnsdist_ffi_ring_get_entries_by_mac
  - dnsdist_ffi_network_endpoint_new
  - dnsdist_ffi_network_endpoint_is_valid
  - dnsdist_ffi_network_endpoint_send
  - dnsdist_ffi_network_endpoint_free
  - dnsdist_ffi_dnspacket_parse
  - dnsdist_ffi_dnspacket_get_qname_raw
  - dnsdist_ffi_dnspacket_get_qtype
  - dnsdist_ffi_dnspacket_get_qclass
  - dnsdist_ffi_dnspacket_get_records_count_in_section
  - dnsdist_ffi_dnspacket_get_record_name_raw
  - dnsdist_ffi_dnspacket_get_record_type
  - dnsdist_ffi_dnspacket_get_record_class
  - dnsdist_ffi_dnspacket_get_record_ttl
  - dnsdist_ffi_dnspacket_get_record_content_length
  - dnsdist_ffi_dnspacket_get_record_content_offset
  - dnsdist_ffi_dnspacket_get_name_at_offset_raw
  - dnsdist_ffi_dnspacket_parse_a_record
  - dnsdist_ffi_dnspacket_parse_aaaa_record
  - dnsdist_ffi_dnspacket_parse_address_record
  - dnsdist_ffi_dnspacket_parse_cname_record
  - dnsdist_ffi_dnspacket_free
  - dnsdist_ffi_metric_declare
  - dnsdist_ffi_metric_inc
  - dnsdist_ffi_metric_inc_by
  - dnsdist_ffi_metric_dec
  - dnsdist_ffi_metric_set
  - dnsdist_ffi_metric_get
  - dnsdist_ffi_network_message_get_payload
  - dnsdist_ffi_network_message_get_payload_size
  - dnsdist_ffi_network_message_get_endpoint_id
  - dnsdist_ffi_dynamic_blocks_add
  - dnsdist_ffi_dynamic_blocks_smt_add
  - dnsdist_ffi_dynamic_blocks_get_entries
  - dnsdist_ffi_dynamic_blocks_smt_get_entries
  - dnsdist_ffi_dynamic_blocks_list_get
  - dnsdist_ffi_dynamic_blocks_list_free
  - dnsdist_ffi_hash
  - dnsdist_ffi_svc_record_parameters_new
  - dnsdist_ffi_svc_record_parameters_set_port
  - dnsdist_ffi_svc_record_parameters_set_ech
  - dnsdist_ffi_svc_record_parameters_set_additional_param
  - dnsdist_ffi_svc_record_parameters_add_mandatory_param
  - dnsdist_ffi_svc_record_parameters_add_alpn
  - dnsdist_ffi_svc_record_parameters_add_ipv4_hint
  - dnsdist_ffi_svc_record_parameters_add_ipv6_hint
  - dnsdist_ffi_dnsquestion_generate_svc_response
  - dnsdist_ffi_svc_record_parameters_free
  - dnsdist_ffi_dnsquestion_meta_begin_key
  - dnsdist_ffi_dnsquestion_meta_add_str_value_to_key
  - dnsdist_ffi_dnsquestion_meta_add_int64_value_to_key
  - dnsdist_ffi_dnsquestion_meta_end_key
  - dnsdist_ffi_dnsresponse_meta_begin_key
  - dnsdist_ffi_dnsresponse_meta_add_str_value_to_key
  - dnsdist_ffi_dnsresponse_meta_add_int64_value_to_key
  - dnsdist_ffi_dnsresponse_meta_end_key
  source_file: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: d_domains
        type: std::vector<std::string>
      item_type: struct
      name: dnsdist_ffi_domain_list_t
      pos:
        line_end: 1407
        line_start: 1404
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    - fields:
      - name: d_addresses
        type: std::vector<std::string>
      item_type: struct
      name: dnsdist_ffi_address_list_t
      pos:
        line_end: 1411
        line_start: 1408
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    - fields:
      - name: d_entries
        type: std::vector<entry>
      item_type: struct
      name: dnsdist_ffi_ring_entry_list_t
      pos:
        line_end: 1568
        line_start: 1550
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    - fields:
      - name: qname
        type: std::string
      - name: requestor
        type: std::string
      - name: macAddr
        type: std::string
      - name: ds
        type: std::string
      - name: dh
        type: dnsheader
      - name: age
        type: double
      - name: latency
        type: unsigned int
      - name: size
        type: uint16_t
      - name: qtype
        type: uint16_t
      - name: protocol
        type: dnsdist::Protocol
      - name: isResponse
        type: bool
      item_type: struct
      name: entry
      pos:
        line_end: 1565
        line_start: 1552
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    - fields:
      - name: d_endpoint
        type: dnsdist::NetworkEndpoint
      item_type: struct
      name: dnsdist_ffi_network_endpoint_t
      pos:
        line_end: 1888
        line_start: 1885
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    - fields:
      - name: overlay
        type: dnsdist::DNSPacketOverlay
      item_type: struct
      name: dnsdist_ffi_dnspacket_t
      pos:
        line_end: 1930
        line_start: 1927
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    - fields:
      - name: d_entries
        type: std::vector<dnsdist_ffi_dynamic_block_entry_t>
      item_type: struct
      name: dnsdist_ffi_dynamic_blocks_list_t
      pos:
        line_end: 2340
        line_start: 2337
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    - fields:
      - name: parameters
        type: SVCRecordParameters
      item_type: struct
      name: dnsdist_ffi_svc_record_parameters
      pos:
        line_end: 2454
        line_start: 2451
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.cc
    typedefs: []
    union: []
- function_names:
  - EDNSCookiesOpt
  - size
  - isWellFormed
  - getServer
  - getClient
  source_file: /src/pdns/pdns/dnsdistdist/ednscookies.hh
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: EDNSCookieSecretSize
        type: size_t
      - name: EDNSCookieOptSize
        type: size_t
      - name: makeFromString(const std::string& option)
        type: bool
      - name: makeFromString(const char* option, unsigned int len)
        type: bool
      - name: isValid(const std::string& secret, const ComboAddress& source) const
        type: bool
      - name: makeClientCookie()
        type: void
      - name: makeServerCookie(const std::string& secret, const ComboAddress& source)
        type: bool
      - name: makeOptString() const
        type: std::string
      - name: toDisplayString() const
        type: std::string
      - name: shouldRefresh() const
        type: bool
      - name: client
        type: std::string
      - name: server
        type: std::string
      - name: getEDNSCookiesOptFromString(const char* option, unsigned int len)
        type: void
      item_type: struct
      name: EDNSCookiesOpt
      pos:
        line_end: 77
        line_start: 27
        source_file: /src/pdns/pdns/dnsdistdist/ednscookies.hh
    typedefs: []
    union: []
- function_names:
  - DoHConnectionToBackend::toString
  - DoHConnectionToBackend::getLogger
  - DoHConnectionToBackend::setHealthCheck
  - DoHConnectionToBackend::release
  - DoHConnectionToBackend::getUsageCount
  - DoHConnectionToBackend::getConcurrentStreamsCount
  - DoHConnectionToBackend::handleResponse
  - DoHConnectionToBackend::handleResponseError
  - DoHConnectionToBackend::handleIOError
  - DoHConnectionToBackend::handleTimeout
  - DoHConnectionToBackend::reachedMaxStreamID
  - DoHConnectionToBackend::reachedMaxConcurrentQueries
  - DoHConnectionToBackend::isIdle
  - DoHConnectionToBackend::queueQuery
  - DoHClientThreadData::DoHClientThreadData
  - DoHConnectionToBackend::handleReadableIOCallback
  - DoHConnectionToBackend::handleWritableIOCallback
  - DoHConnectionToBackend::stopIO
  - DoHConnectionToBackend::updateIO
  - DoHConnectionToBackend::watchForRemoteHostClosingConnection
  - DoHConnectionToBackend::send_callback
  - DoHConnectionToBackend::on_frame_recv_callback
  - DoHConnectionToBackend::on_data_chunk_recv_callback
  - DoHConnectionToBackend::on_stream_close_callback
  - DoHConnectionToBackend::on_header_callback
  - DoHConnectionToBackend::on_error_callback
  - DoHConnectionToBackend::DoHConnectionToBackend
  - handleCrossProtocolQuery
  - dohClientThread
  - DoHWorkerThread
  - DoHWorkerThread
  - DoHWorkerThread
  - '& operator=(DoHWorkerThread&& rhs) noexcept'
  - DoHWorkerThread
  - '& operator=(const DoHWorkerThread&)'
  - DoHClientCollection::DoHClientCollection
  - DoHClientCollection::passCrossProtocolQueryToThread
  - DoHClientCollection::addThread
  - initDoHWorkers
  - sendH2Query
  - clearH2Connections
  - handleH2Timeouts
  - setDoHDownstreamCleanupInterval
  - setDoHDownstreamMaxIdleTime
  - setDoHDownstreamMaxIdleConnectionsPerBackend
  source_file: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: d_sender
        type: pdns::channel::Sender<CrossProtocolQuery>
      item_type: struct
      name: DoHClientCollection::DoHWorkerThread
      pos:
        line_end: 998
        line_start: 981
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.cc
    typedefs: []
    union: []
- function_names:
  - handleDNSCryptQuery
  source_file: /src/pdns/pdns/dnsdistdist/dnsdist-dnscrypt.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - ConnectionToBackend::ConnectionToBackend
  - ConnectionToBackend::getHandle
  - ConnectionToBackend::isUsable
  - '& getDS() const'
  - '& getRemote() const'
  - '& getBackendName() const'
  - ConnectionToBackend::isFresh
  - ConnectionToBackend::setReused
  - ConnectionToBackend::disableFastOpen
  - ConnectionToBackend::isFastOpenEnabled
  - ConnectionToBackend::canBeReused
  - ConnectionToBackend::willBeReusable
  - ConnectionToBackend::stopIO
  - ConnectionToBackend::matches
  - ConnectionToBackend::getLastDataReceivedTime
  - ConnectionToBackend::getBackendHealthCheckTTD
  - ConnectionToBackend::getBackendReadTTD
  - ConnectionToBackend::getBackendWriteTTD
  - ConnectionToBackend::getBackendConnectTTD
  - TCPConnectionToBackend::TCPConnectionToBackend
  - TCPConnectionToBackend::isIdle
  - TCPConnectionToBackend::reachedMaxConcurrentQueries
  - TCPConnectionToBackend::toString
  - TCPConnectionToBackend::needProxyProtocolPayload
  source_file: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.hh
  types:
    enum:
    - enumerators:
      - name: idle
      - name: sendingQueryToBackend
      - name: waitingForResponseFromBackend
      - name: readingResponseSizeFromBackend
      - name: readingResponseFromBackend
      item_type: enum
      name: State
      pos:
        line_end: 280
        line_start: 273
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.hh
    - enumerators:
      - name: gaveUp
      - name: unexpectedQueryID
      - name: timeout
      item_type: enum
      name: FailureReason
      pos:
        line_end: 284
        line_start: 281
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.hh
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - setupLuaBindingsDNSCrypt
  source_file: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnscrypt.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/pdns/pdns/dnsdistdist/ednspadding.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - RCode::to_s
  - RCode::to_short_s
  - RCode::from_short
  - ERCode::to_s
  - ERCode::to_short_s
  - ERCode::from_short
  - Opcode::to_s
  - Opcode::from_lowercase_string
  - hashQuestion
  - DNSResourceRecord::placeString
  source_file: /src/pdns/pdns/dnsdistdist/dns.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - dnsdist::resolver::asynchronousResolver
  - dnsdist::resolver::asynchronousResolver
  source_file: /src/pdns/pdns/dnsdistdist/dnsdist-resolver.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - XskSocket::XskUmem
  - XskSocket::getFrameSize
  - '& getWorkerByDescriptor(int desc) const'
  - XskSocket::getWorkerByDestination
  - '& getDescriptors() const'
  - XskSocket::getSourceMACAddress
  - '& getInterfaceName() const'
  - XskSocket::pushDelayed
  - XskPacket::getSendTime
  - XskPacket::getFrameOffsetFrom
  source_file: /src/pdns/pdns/dnsdistdist/xsk.hh
  types:
    enum:
    - enumerators:
      - name: UPDATED
        value: 1 << 0
      - name: DELAY
        value: 1 << 1
      - name: REWRITTEN
        value: 1 << 2
      item_type: enum
      name: Flags
      pos:
        line_end: 203
        line_start: 192
        source_file: /src/pdns/pdns/dnsdistdist/xsk.hh
    - enumerators:
      - name: OutgoingOnly
      - name: Bidirectional
      item_type: enum
      name: Type
      pos:
        line_end: 293
        line_start: 289
        source_file: /src/pdns/pdns/dnsdistdist/xsk.hh
    preproc_defs: []
    structs:
    - fields:
      - name: '* umem'
        type: xsk_umem
      - name: '* bufBase'
        type: uint8_t
      - name: size
        type: size_t
      - name: umemInit(size_t memSize, xsk_ring_cons* completionQueue, xsk_ring_prod*
          fillQueue, xsk_umem_config* config)
        type: void
      item_type: struct
      name: XskUmem
      pos:
        line_end: 75
        line_start: 67
        source_file: /src/pdns/pdns/dnsdistdist/xsk.hh
    typedefs: []
    union: []
- function_names:
  - StatNode::print
  - StatNode::visit
  - StatNode::submit
  - adjustForSampling
  - StatNode::submit
  source_file: /src/pdns/pdns/dnsdistdist/statnode.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - ~Tracer()
  - pdns::trace::dnsdist::Tracer::Tracer
  - '& operator=(const Tracer)'
  - '& operator=(Tracer&&)'
  - pdns::trace::dnsdist::Tracer::Tracer
  - pdns::trace::dnsdist::Tracer::getTracer
  - pdns::trace::dnsdist::Tracer::Closer::Closer
  - pdns::trace::dnsdist::Tracer::Closer::Closer
  - ~Closer()
  - pdns::trace::dnsdist::Tracer::Closer::Closer
  - '& operator=(const Closer&)'
  - '& operator=([[maybe_unused]] Closer&& rhs) noexcept'
  - pdns::trace::dnsdist::Tracer::Closer::Closer
  - pdns::trace::dnsdist::Tracer::Tracer
  - ~Tracer()
  - pdns::trace::dnsdist::Tracer::Tracer
  - '& operator=(const Tracer)'
  - '& operator=(Tracer&&)'
  - pdns::trace::dnsdist::Tracer::Tracer
  - pdns::trace::dnsdist::Tracer::getTracer
  - pdns::trace::dnsdist::Tracer::Closer::Closer
  - pdns::trace::dnsdist::Tracer::Closer::Closer
  - ~Closer()
  - pdns::trace::dnsdist::Tracer::Closer::Closer
  - '& operator=(const Closer&)'
  - '& operator=([[maybe_unused]] Closer&& rhs) noexcept'
  - pdns::trace::dnsdist::Tracer::Closer::Closer
  - pdns::trace::dnsdist::Tracer::Tracer
  source_file: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.hh
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: name
        type: std::string
      - name: span_id
        type: SpanID
      - name: parent_span_id
        type: SpanID
      - name: start_time_unix_nano
        type: uint64_t
      - name: end_time_unix_nano
        type: uint64_t
      - name: attributes
        type: std::vector<pdns::trace::KeyValue>
      item_type: struct
      name: miniSpan
      pos:
        line_end: 326
        line_start: 318
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.hh
    - fields:
      - name: d_spans
        type: std::vector<miniSpan>
      - name: d_attributes
        type: std::vector<pdns::trace::KeyValue>
      - name: d_traceid
        type: TraceID
      - name: d_spanIDStack
        type: std::vector<SpanID>
      - name: d_oldAndNewRootSpanID
        type: "struct\n    {\n      SpanID oldID;\n      SpanID newID;\n    }"
      item_type: struct
      name: Data
      pos:
        line_end: 359
        line_start: 328
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.hh
    - fields:
      - name: name
        type: std::string
      - name: span_id
        type: SpanID
      - name: parent_span_id
        type: SpanID
      - name: start_time_unix_nano
        type: uint64_t
      - name: end_time_unix_nano
        type: uint64_t
      - name: attributes
        type: std::vector<pdns::trace::KeyValue>
      item_type: struct
      name: miniSpan
      pos:
        line_end: 326
        line_start: 318
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.hh
    - fields:
      - name: d_spans
        type: std::vector<miniSpan>
      - name: d_attributes
        type: std::vector<pdns::trace::KeyValue>
      - name: d_traceid
        type: TraceID
      - name: d_spanIDStack
        type: std::vector<SpanID>
      - name: d_oldAndNewRootSpanID
        type: "struct\n    {\n      SpanID oldID;\n      SpanID newID;\n    }"
      item_type: struct
      name: Data
      pos:
        line_end: 359
        line_start: 328
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.hh
    typedefs: []
    union: []
- function_names:
  - addMetaKeyAndValuesToProtobufContent
  - EDNSOptionViewsToValues
  - setupLuaBindingsDNSQuestion
  - AsynchronousObject::AsynchronousObject
  - AsynchronousObject::getDQ
  - AsynchronousObject::getDR
  - AsynchronousObject::resume
  - AsynchronousObject::drop
  - AsynchronousObject::setRCode
  source_file: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsquestion.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - main
  source_file: /src/pdns/pdns/dnsdistdist/testrunner.cc
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: BOOST_TEST_MODULE
      pos:
        line_end: 30
        line_start: 29
        source_file: /src/pdns/pdns/dnsdistdist/testrunner.cc
      type_or_value: unit
    structs: []
    typedefs: []
    union: []
- function_names:
  - DOHFrontend::rotateTicketsKey
  - DOHFrontend::loadTicketsKeys
  - DOHFrontend::loadTicketsKey
  - DOHFrontend::handleTicketsKeyRotation
  - DOHFrontend::getNextTicketsKeyRotation
  - DOHFrontend::getTicketsKeysCount
  - DOHFrontend::reloadCertificates
  - DOHFrontend::setup
  - dnsdist::doh::getPayloadFromPath
  - dnsdist::doh::getPayloadFromPath
  source_file: /src/pdns/pdns/dnsdistdist/dnsdist-doh-common.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - BINARY
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  source_file: /src/pdns/pdns/dnsdistdist/test-proxy_protocol_cc.cc
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: PROXYMAGIC
      pos:
        line_end: 20
        line_start: 19
        source_file: /src/pdns/pdns/dnsdistdist/test-proxy_protocol_cc.cc
      type_or_value: '"\x0D\x0A\x0D\x0A\x00\x0D\x0A\x51\x55\x49\x54\x0A"'
    - item_type: preproc_def
      name: PROXYMAGICLEN
      pos:
        line_end: 21
        line_start: 20
        source_file: /src/pdns/pdns/dnsdistdist/test-proxy_protocol_cc.cc
      type_or_value: sizeof(PROXYMAGIC)-1
    structs: []
    typedefs: []
    union: []
- function_names:
  - dnsdist::initRandom
  - dnsdist::getRandomValue
  - dnsdist::getRandomDNSID
  - dnsdist::initRandom
  - dnsdist::getRandomValue
  - dnsdist::getRandomDNSID
  source_file: /src/pdns/pdns/dnsdistdist/dnsdist-random.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - ReadWriteLock::ReadWriteLock
  - ~ReadWriteLock()
  - ReadWriteLock::ReadWriteLock
  - ReadWriteLock::ReadWriteLock
  - '& operator=(ReadWriteLock&&)'
  - '& operator=(const ReadWriteLock& rhs)'
  - '& getLock()'
  - ReadLock::ReadLock
  - ReadLock::ReadLock
  - ~ReadLock()
  - ReadLock::ReadLock
  - '& operator=(const ReadLock& rhs)'
  - '& operator=(ReadLock&&)'
  - ReadLock::ReadLock
  - ReadLock::ReadLock
  - WriteLock::WriteLock
  - WriteLock::WriteLock
  - ~WriteLock()
  - WriteLock::WriteLock
  - '& operator=(const WriteLock& rhs)'
  - '& operator=(WriteLock&&)'
  - WriteLock::WriteLock
  - WriteLock::WriteLock
  - TryReadLock::TryReadLock
  - TryReadLock::TryReadLock
  - ~TryReadLock()
  - TryReadLock::TryReadLock
  - TryReadLock::TryReadLock
  - '& operator=(const TryReadLock& rhs)'
  - '& operator=(TryReadLock&&)'
  - TryReadLock::gotIt
  - TryReadLock::TryReadLock
  - TryWriteLock::TryWriteLock
  - TryWriteLock::TryWriteLock
  - ~TryWriteLock()
  - TryWriteLock::TryWriteLock
  - TryWriteLock::TryWriteLock
  - '& operator=(const TryWriteLock& rhs)'
  - '& operator=(TryWriteLock&&)'
  - TryWriteLock::gotIt
  - TryWriteLock::TryWriteLock
  - LockGuardedHolder::LockGuardedHolder
  - '& operator*() const noexcept'
  - '* operator->() const noexcept'
  - LockGuardedTryHolder::LockGuardedTryHolder
  - '& operator*() const'
  - '* operator->() const'
  - operator bool() const noexcept
  - LockGuardedTryHolder::owns_lock
  - LockGuardedTryHolder::lock
  - LockGuarded::LockGuarded
  - LockGuarded::LockGuarded
  - LockGuarded::LockGuarded
  - LockGuarded::try_lock
  - LockGuarded::lock
  - LockGuarded::read_only_lock
  - RecursiveLockGuardedHolder::RecursiveLockGuardedHolder
  - '& operator*() const noexcept'
  - '* operator->() const noexcept'
  - RecursiveLockGuardedTryHolder::RecursiveLockGuardedTryHolder
  - '& operator*() const'
  - '* operator->() const'
  - operator bool() const noexcept
  - RecursiveLockGuardedTryHolder::owns_lock
  - RecursiveLockGuardedTryHolder::lock
  - RecursiveLockGuarded::RecursiveLockGuarded
  - RecursiveLockGuarded::RecursiveLockGuarded
  - RecursiveLockGuarded::RecursiveLockGuarded
  - RecursiveLockGuarded::try_lock
  - RecursiveLockGuarded::lock
  - RecursiveLockGuarded::read_only_lock
  - SharedLockGuardedHolder::SharedLockGuardedHolder
  - '& operator*() const noexcept'
  - '* operator->() const noexcept'
  - SharedLockGuardedTryHolder::SharedLockGuardedTryHolder
  - '& operator*() const'
  - '* operator->() const'
  - operator bool() const noexcept
  - SharedLockGuardedTryHolder::owns_lock
  - SharedLockGuardedNonExclusiveHolder::SharedLockGuardedNonExclusiveHolder
  - '& operator*() const noexcept'
  - '* operator->() const noexcept'
  - SharedLockGuardedNonExclusiveTryHolder::SharedLockGuardedNonExclusiveTryHolder
  - '& operator*() const'
  - '* operator->() const'
  - operator bool() const noexcept
  - SharedLockGuardedNonExclusiveTryHolder::owns_lock
  - SharedLockGuarded::SharedLockGuarded
  - SharedLockGuarded::SharedLockGuarded
  - SharedLockGuarded::SharedLockGuarded
  - SharedLockGuarded::try_write_lock
  - SharedLockGuarded::write_lock
  - SharedLockGuarded::try_read_lock
  - SharedLockGuarded::read_lock
  source_file: /src/pdns/pdns/dnsdistdist/lock.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - getLeastOutstanding
  - leastOutstanding
  - firstAvailable
  - getValRandom
  - valrandom
  - wrandom
  - whashedFromHash
  - whashed
  - chashedFromHash
  - chashed
  - roundrobin
  - orderedWrandUntag
  - getDownstreamCandidates
  - createPoolIfNotExists
  - setPoolPolicy
  - addServerToPool
  - removeServerFromPool
  - getPool
  - ServerPolicy::ServerPolicy
  - '& ServerPolicy::getPerThreadPolicy() const'
  - ServerPolicy::getSelectedBackend
  - dnsdist::lbpolicies::getBuiltInPolicies
  - dnsdist::lbpolicies::getBuiltInPolicies
  source_file: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: d_luaContext
        type: LuaContext
      - name: d_policies
        type: std::unordered_map<std::string, ffipolicyfunc_t>
      item_type: struct
      name: ServerPolicy::PerThreadState
      pos:
        line_end: 421
        line_start: 417
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.cc
    typedefs: []
    union: []
- function_names:
  - TCPClientThreadData::TCPClientThreadData
  - IncomingTCPConnectionState::IncomingTCPConnectionState
  - IncomingTCPConnectionState::IncomingTCPConnectionState
  - '& operator=(const IncomingTCPConnectionState& rhs)'
  - IncomingTCPConnectionState::active
  - IncomingTCPConnectionState::isProxyPayloadOutsideTLS
  - IncomingTCPConnectionState::forwardViaUDPFirst
  - IncomingTCPConnectionState::getDOHUnit
  - IncomingTCPConnectionState::restoreDOHUnit
  - IncomingTCPConnectionState::toString
  source_file: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-upstream.hh
  types:
    enum:
    - enumerators:
      - name: Forwarded
      - name: InvalidHeaders
      - name: TooSmall
      - name: SelfAnswered
      - name: Dropped
      - name: NoBackend
      - name: Asynchronous
      item_type: enum
      name: QueryProcessingResult
      pos:
        line_end: 35
        line_start: 26
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-upstream.hh
    - enumerators:
      - name: Reading
      - name: Error
      - name: Done
      item_type: enum
      name: ProxyProtocolResult
      pos:
        line_end: 41
        line_start: 36
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-upstream.hh
    - enumerators:
      - name: starting
      - name: readingProxyProtocolHeader
      - name: readingQuerySize
      - name: doingHandshake
      - name: waitingForQuery
      - name: readingQuery
      - name: sendingResponse
      - name: idle
      item_type: enum
      name: State
      pos:
        line_end: 157
        line_start: 147
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-upstream.hh
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  source_file: /src/pdns/pdns/dnsdistdist/test-credentials_cc.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - getNumberOfShards
  - getNumberOfQueryEntries
  - getNumberOfResponseEntries
  - insertQuery
  - insertResponse
  - clear
  - reset
  - shouldRecordQueries
  - shouldRecordResponses
  - getSamplingRate
  - adjustForSamplingRate
  - getShardId
  - '& getOneShard()'
  - insertQueryLocked
  - insertResponseLocked
  - shouldSkipQueryDueToSampling
  - shouldSkipResponseDueToSampling
  source_file: /src/pdns/pdns/dnsdistdist/dnsdist-rings.hh
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: getTopBandwidth(unsigned int numentries)
        type: std::unordered_map<int, vector<boost::variant<string, double>>>
      - name: numDistinctRequestors()
        type: size_t
      - name: init(const RingsConfiguration& config)
        type: void
      - name: loadFromFile(const std::string& filepath, const struct timespec& now)
        type: size_t
      - name: d_shards
        type: std::vector<std::unique_ptr<Shard>>
      - name: d_blockingQueryInserts
        type: pdns::stat_t
      - name: d_blockingResponseInserts
        type: pdns::stat_t
      - name: d_deferredQueryInserts
        type: pdns::stat_t
      - name: d_deferredResponseInserts
        type: pdns::stat_t
      item_type: struct
      name: Rings
      pos:
        line_end: 334
        line_start: 36
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-rings.hh
    - fields:
      - name: requestor
        type: ComboAddress
      - name: name
        type: DNSName
      - name: when
        type: struct timespec
      - name: dh
        type: struct dnsheader
      - name: size
        type: uint16_t
      - name: qtype
        type: uint16_t
      - name: protocol
        type: dnsdist::Protocol
      item_type: struct
      name: Query
      pos:
        line_end: 52
        line_start: 38
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-rings.hh
    - fields:
      - name: requestor
        type: ComboAddress
      - name: ds
        type: ComboAddress
      - name: name
        type: DNSName
      - name: when
        type: struct timespec
      - name: dh
        type: struct dnsheader
      - name: usec
        type: unsigned int
      - name: size
        type: uint16_t
      - name: qtype
        type: uint16_t
      - name: protocol
        type: dnsdist::Protocol
      - name: isACacheHit() const
        type: bool
      item_type: struct
      name: Response
      pos:
        line_end: 67
        line_start: 53
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-rings.hh
    - fields:
      - name: queryRing
        type: LockGuarded<boost::circular_buffer<Query>>
      - name: respRing
        type: LockGuarded<boost::circular_buffer<Response>>
      item_type: struct
      name: Shard
      pos:
        line_end: 73
        line_start: 69
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-rings.hh
    - fields:
      - name: capacity
        type: size_t
      - name: numberOfShards
        type: size_t
      - name: nbLockTries
        type: size_t
      - name: samplingRate
        type: size_t
      - name: recordQueries
        type: bool
      - name: recordResponses
        type: bool
      item_type: struct
      name: RingsConfiguration
      pos:
        line_end: 86
        line_start: 78
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-rings.hh
    typedefs: []
    union: []
- function_names:
  - operator==(const ProxyProtocolValue& rhs) const
  source_file: /src/pdns/pdns/dnsdistdist/proxy-protocol.hh
  types:
    enum:
    - enumerators:
      - name: PP_TLV_ALPN
        value: '0x01'
      - name: PP_TLV_SSL
        value: '0x20'
      item_type: enum
      name: Types
      pos:
        line_end: 36
        line_start: 36
        source_file: /src/pdns/pdns/dnsdistdist/proxy-protocol.hh
    preproc_defs: []
    structs:
    - fields:
      - name: content
        type: std::string
      - name: type
        type: uint8_t
      item_type: struct
      name: ProxyProtocolValue
      pos:
        line_end: 37
        line_start: 26
        source_file: /src/pdns/pdns/dnsdistdist/proxy-protocol.hh
    typedefs: []
    union: []
- function_names:
  - DelayPipe::tsdelta
  - operator()(const struct timespec& a, const struct timespec& b) const
  source_file: /src/pdns/pdns/dnsdistdist/delaypipe.hh
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: what
        type: T
      - name: when
        type: struct timespec
      item_type: struct
      name: Combo
      pos:
        line_end: 66
        line_start: 62
        source_file: /src/pdns/pdns/dnsdistdist/delaypipe.hh
    - fields: []
      item_type: struct
      name: tscomp
      pos:
        line_end: 80
        line_start: 74
        source_file: /src/pdns/pdns/dnsdistdist/delaypipe.hh
    typedefs: []
    union: []
- function_names:
  - dnsdist::edns::getExtendedDNSError
  - dnsdist::edns::addExtendedDNSError
  - dnsdist::edns::addEDNSPadding
  - dnsdist::edns::getExtendedDNSError
  - dnsdist::edns::addExtendedDNSError
  - dnsdist::edns::addEDNSPadding
  source_file: /src/pdns/pdns/dnsdistdist/dnsdist-edns.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - RemoteLoggerPool::RemoteLoggerPool
  - RemoteLoggerPool::RemoteLoggerPool
  - '& operator=(const RemoteLoggerPool&)'
  - '& operator=(RemoteLoggerPool&&)'
  - RemoteLoggerPool::address
  - RemoteLoggerPool::name
  - RemoteLoggerPool::getStats
  source_file: /src/pdns/pdns/dnsdistdist/remote_logger_pool.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - treader
  - BOOST_AUTO_TEST_CASE
  source_file: /src/pdns/pdns/dnsdistdist/test-sholder_hh.cc
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: name
        type: string
      - name: number
        type: uint64_t
      item_type: struct
      name: TestObject
      pos:
        line_end: 16
        line_start: 12
        source_file: /src/pdns/pdns/dnsdistdist/test-sholder_hh.cc
    typedefs: []
    union: []
- function_names:
  - PacketCache::hashAfterQname
  - PacketCache::hashHeaderAndQName
  - PacketCache::canHashPacket
  - PacketCache::queryHeaderMatches
  - PacketCache::queryMatches
  source_file: /src/pdns/pdns/dnsdistdist/packetcache.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - SensitiveData::SensitiveData
  - SensitiveData::SensitiveData
  - '& operator=(const SensitiveData&)'
  - '& getString() const'
  - '& getString()'
  - CredentialsHolder::CredentialsHolder
  - '& operator=(CredentialsHolder&&)'
  - CredentialsHolder::CredentialsHolder
  - '& operator=(const CredentialsHolder&)'
  - CredentialsHolder::wasHashed
  - CredentialsHolder::isHashed
  source_file: /src/pdns/pdns/dnsdistdist/credentials.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - dnsdist::getFrontends
  - dnsdist::getDNSCryptFrontends
  - dnsdist::getDoTFrontends
  - dnsdist::getDoHFrontends
  - dnsdist::getDoQFrontends
  - dnsdist::getDoH3Frontends
  - dnsdist::getFrontends
  - dnsdist::getDNSCryptFrontends
  - dnsdist::getDoTFrontends
  - dnsdist::getDoHFrontends
  - dnsdist::getDoQFrontends
  - dnsdist::getDoH3Frontends
  source_file: /src/pdns/pdns/dnsdistdist/dnsdist-frontend.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/pdns/pdns/dnsdistdist/bench-iputils.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  source_file: /src/pdns/pdns/dnsdistdist/test-dns_cc.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - FDMultiplexer::getMultiplexerSilent
  - PollFDMultiplexer::PollFDMultiplexer
  - PollFDMultiplexer::getName
  - make
  - RegisterOurselves
  - convertEventKind
  - PollFDMultiplexer::addFD
  - PollFDMultiplexer::removeFD
  - PollFDMultiplexer::preparePollFD
  - PollFDMultiplexer::getAvailableFDs
  - PollFDMultiplexer::run
  - acceptData
  - main
  source_file: /src/pdns/pdns/dnsdistdist/pollmplexer.cc
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields: []
      item_type: struct
      name: RegisterOurselves
      pos:
        line_end: 60
        line_start: 54
        source_file: /src/pdns/pdns/dnsdistdist/pollmplexer.cc
    typedefs: []
    union: []
- function_names:
  - dnsdist::logging::convertTime
  - dnsdist::logging::loggerSDBackend
  - dnsdist::logging::loggerJSONBackend
  - dnsdist::logging::loggerBackend
  - dnsdist::logging::setup
  - dnsdist::logging::getTopLogger
  - dnsdist::logging::doVerboseLogging
  - dnsdist::logging::doStructuredLogging
  - dnsdist::logging::convertTime
  - dnsdist::logging::loggerSDBackend
  - dnsdist::logging::loggerJSONBackend
  - dnsdist::logging::loggerBackend
  - dnsdist::logging::setup
  - dnsdist::logging::getTopLogger
  - dnsdist::logging::doVerboseLogging
  - dnsdist::logging::doStructuredLogging
  source_file: /src/pdns/pdns/dnsdistdist/dnsdist-logging.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/pdns/pdns/dnsdistdist/dnsdist-console.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - setupLuaBindingsPacketCache
  source_file: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-packetcache.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - setupLuaVars
  source_file: /src/pdns/pdns/dnsdistdist/dnsdist-lua-vars.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - main
  source_file: /src/pdns/pdns/dnsdistdist/standalone_fuzz_target_runner.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - Logging::Logger::getptr
  - Logging::Logger::info
  - Logging::Logger::logMessage
  - Logging::Logger::error
  - Logging::Logger::error
  - Logging::Logger::v
  - Logging::Logger::withValues
  - Logging::Logger::withName
  - Logging::Logger::create
  - Logging::Logger::create
  - Logging::Logger::Logger
  - Logging::Logger::Logger
  - Logging::Logger::Logger
  - Logger::~Logger()
  - Logging::Logger::getptr
  - Logging::Logger::info
  - Logging::Logger::logMessage
  - Logging::Logger::error
  - Logging::Logger::error
  - Logging::Logger::v
  - Logging::Logger::withValues
  - Logging::Logger::withName
  - Logging::Logger::create
  - Logging::Logger::create
  - Logging::Logger::Logger
  - Logging::Logger::Logger
  - Logging::Logger::Logger
  - Logger::~Logger()
  - Logging::toTimestampStringMilli
  source_file: /src/pdns/pdns/dnsdistdist/logging.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - oneDayFromNow
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  source_file: /src/pdns/pdns/dnsdistdist/test-dnscrypt_cc.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - ~DNSAction()
  - DNSAction::getStats
  - DNSAction::reload
  - ~DNSResponseAction()
  - DNSResponseAction::reload
  source_file: /src/pdns/pdns/dnsdistdist/dnsdist-actions.hh
  types:
    enum:
    - enumerators:
      - name: Drop
      - name: Nxdomain
      - name: Allow
      - name: Spoof
      - name: Refused
      - name: HeaderModify
      - name: Pool
      - name: Delay
      - name: Truncate
      - name: ServFail
      - name: NoOp
      - name: SpoofPacket
      - name: SetTag
      - name: SpoofRaw
      - name: None
      - name: NoRecurse
      item_type: enum
      name: Action
      pos:
        line_end: 60
        line_start: 42
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-actions.hh
    - enumerators:
      - name: Allow
      - name: Delay
      - name: Drop
      - name: ServFail
      - name: HeaderModify
      - name: Truncate
      - name: None
      item_type: enum
      name: Action
      pos:
        line_end: 88
        line_start: 79
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-actions.hh
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  source_file: /src/pdns/pdns/dnsdistdist/test-dnsdistsvc_cc.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/pdns/pdns/dnsdistdist/dnsdist-backend.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - dnsdist::crypto::authenticated::newKey
  - dnsdist::crypto::authenticated::isValidKey
  - dnsdist::crypto::authenticated::encryptSym
  - dnsdist::crypto::authenticated::decryptSym
  - dnsdist::crypto::authenticated::Nonce::init
  - dnsdist::crypto::authenticated::newKey
  - dnsdist::crypto::authenticated::isValidKey
  - dnsdist::crypto::authenticated::encryptSym
  - dnsdist::crypto::authenticated::decryptSym
  - dnsdist::crypto::authenticated::Nonce::init
  - dnsdist::crypto::authenticated::Nonce::merge
  - dnsdist::crypto::authenticated::Nonce::increment
  - dnsdist::crypto::authenticated::Nonce::init
  - dnsdist::crypto::authenticated::Nonce::merge
  - dnsdist::crypto::authenticated::Nonce::increment
  - dnsdist::crypto::authenticated::encryptSym
  - dnsdist::crypto::authenticated::decryptSym
  - dnsdist::crypto::authenticated::newKey
  - dnsdist::crypto::authenticated::isValidKey
  - dnsdist::crypto::authenticated::newKey
  - dnsdist::crypto::authenticated::isValidKey
  - dnsdist::crypto::authenticated::encryptSym
  - dnsdist::crypto::authenticated::decryptSym
  - dnsdist::crypto::authenticated::Nonce::init
  - dnsdist::crypto::authenticated::newKey
  - dnsdist::crypto::authenticated::isValidKey
  - dnsdist::crypto::authenticated::encryptSym
  - dnsdist::crypto::authenticated::decryptSym
  - dnsdist::crypto::authenticated::Nonce::init
  - dnsdist::crypto::authenticated::Nonce::merge
  - dnsdist::crypto::authenticated::Nonce::increment
  - dnsdist::crypto::authenticated::Nonce::init
  - dnsdist::crypto::authenticated::Nonce::merge
  - dnsdist::crypto::authenticated::Nonce::increment
  - dnsdist::crypto::authenticated::encryptSym
  - dnsdist::crypto::authenticated::decryptSym
  - dnsdist::crypto::authenticated::newKey
  - dnsdist::crypto::authenticated::isValidKey
  - anonpdns::B64Decode1
  - anonpdns::B64Encode1
  - anonpdns::B64Decode1
  - anonpdns::B64Encode1
  - B64Decode
  - Base64Encode
  source_file: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - DNSCryptPrivateKey::DNSCryptPrivateKey
  - DNSCryptPrivateKey::loadFromFile
  - DNSCryptPrivateKey::saveToFile
  - DNSCryptPrivateKey::~DNSCryptPrivateKey()
  - DNSCryptQuery::getVersion
  - DNSCryptQuery::~DNSCryptQuery()
  - DNSCryptQuery::computeSharedKey
  - DNSCryptQuery::~DNSCryptQuery()
  - DNSCryptContext::~DNSCryptContext()
  - DNSCryptContext::DNSCryptContext
  - DNSCryptContext::DNSCryptContext
  - DNSCryptContext::generateProviderKeys
  - DNSCryptContext::getProviderFingerprint
  - DNSCryptContext::setExchangeVersion
  - DNSCryptContext::getExchangeVersion
  - DNSCryptContext::getExchangeVersion
  - DNSCryptContext::generateCertificate
  - DNSCryptContext::loadCertFromFile
  - DNSCryptContext::saveCertFromFile
  - DNSCryptContext::generateResolverKeyPair
  - DNSCryptContext::computePublicKeyFromPrivate
  - DNSCryptContext::certificateDateToStr
  - DNSCryptContext::addNewCertificate
  - DNSCryptContext::addNewCertificate
  - DNSCryptContext::loadCertificatePair
  - DNSCryptContext::loadNewCertificate
  - DNSCryptContext::reloadCertificates
  - DNSCryptContext::getCertificates
  - DNSCryptContext::markActive
  - DNSCryptContext::markInactive
  - DNSCryptContext::removeInactiveCertificate
  - DNSCryptQuery::parsePlaintextQuery
  - DNSCryptContext::getCertificateResponse
  - DNSCryptContext::magicMatchesAPublicKey
  - DNSCryptQuery::isEncryptedQuery
  - DNSCryptQuery::getDecrypted
  - DNSCryptQuery::getCertificateResponse
  - DNSCryptQuery::parsePacket
  - DNSCryptQuery::fillServerNonce
  - DNSCryptQuery::computePaddingSize
  - DNSCryptQuery::encryptResponse
  - DNSCryptContext::encryptQuery
  - generateDNSCryptCertificate
  source_file: /src/pdns/pdns/dnsdistdist/dnscrypt.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.hh
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: server
        type: ComboAddress
      - name: namespace_name
        type: std::string
      - name: ourname
        type: std::optional<std::string>
      - name: instance_name
        type: std::string
      - name: interval
        type: unsigned int
      - name: getOurName() const
        type: std::string
      item_type: struct
      name: Endpoint
      pos:
        line_end: 44
        line_start: 35
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.hh
    - fields:
      - name: server
        type: ComboAddress
      - name: namespace_name
        type: std::string
      - name: ourname
        type: std::optional<std::string>
      - name: instance_name
        type: std::string
      - name: interval
        type: unsigned int
      - name: getOurName() const
        type: std::string
      item_type: struct
      name: Endpoint
      pos:
        line_end: 44
        line_start: 35
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.hh
    typedefs: []
    union: []
- function_names:
  - getProxyProtocolPayload
  - addProxyProtocol
  - addProxyProtocol
  - addProxyProtocol
  - addProxyProtocol
  - expectProxyProtocolFrom
  - handleProxyProtocol
  source_file: /src/pdns/pdns/dnsdistdist/dnsdist-proxy-protocol.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - DNSDistPacketCache::DNSDistPacketCache
  - DNSDistPacketCache::getClientSubnet
  - DNSDistPacketCache::cachedValueMatches
  - DNSDistPacketCache::insertLocked
  - DNSDistPacketCache::insert
  - DNSDistPacketCache::get
  - DNSDistPacketCache::purgeExpired
  - DNSDistPacketCache::expunge
  - DNSDistPacketCache::expungeByName
  - DNSDistPacketCache::expungeByName
  - DNSDistPacketCache::isFull
  - DNSDistPacketCache::getSize
  - DNSDistPacketCache::getMinTTL
  - DNSDistPacketCache::getKey
  - DNSDistPacketCache::getShardIndex
  - DNSDistPacketCache::toString
  - DNSDistPacketCache::getEntriesCount
  - DNSDistPacketCache::dump
  - DNSDistPacketCache::getDomainsContainingRecords
  - DNSDistPacketCache::getRecordsForDomain
  source_file: /src/pdns/pdns/dnsdistdist/dnsdist-cache.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - dns_random
  - dns_random_uint32
  - dns_random_uint16
  - dns_random
  - pdns::min
  - pdns::max
  - operator()()
  - pdns::random_minimum_acceptable_value
  - pdns::min
  - pdns::max
  - operator()()
  - pdns::random_minimum_acceptable_value
  source_file: /src/pdns/pdns/dnsdistdist/dns_random.hh
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields: []
      item_type: struct
      name: dns_random_engine
      pos:
        line_end: 69
        line_start: 50
        source_file: /src/pdns/pdns/dnsdistdist/dns_random.hh
    - fields: []
      item_type: struct
      name: dns_random_engine
      pos:
        line_end: 69
        line_start: 50
        source_file: /src/pdns/pdns/dnsdistdist/dns_random.hh
    typedefs: []
    union: []
- function_names:
  - dnsdist::rules::getResponseRuleChainDescriptions
  - dnsdist::rules::getRuleChainDescriptions
  - dnsdist::rules::getRuleChain
  - dnsdist::rules::getRuleChain
  - dnsdist::rules::getRuleChain
  - dnsdist::rules::getRuleChain
  - dnsdist::rules::getResponseRuleChain
  - dnsdist::rules::getResponseRuleChain
  - dnsdist::rules::add
  - dnsdist::rules::add
  - dnsdist::rules::getResponseRuleChainDescriptions
  - dnsdist::rules::getRuleChainDescriptions
  - dnsdist::rules::getRuleChain
  - dnsdist::rules::getRuleChain
  - dnsdist::rules::getRuleChain
  - dnsdist::rules::getRuleChain
  - dnsdist::rules::getResponseRuleChain
  - dnsdist::rules::getResponseRuleChain
  - dnsdist::rules::add
  - dnsdist::rules::add
  source_file: /src/pdns/pdns/dnsdistdist/dnsdist-rule-chains.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.hh
  types:
    enum:
    - enumerators:
      - name: Allowed
        value: '0'
      - name: Denied
        value: '1'
      - name: Restricted
        value: '2'
      item_type: enum
      name: NewConnectionResult
      pos:
        line_end: 35
        line_start: 30
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.hh
    - enumerators:
      - name: Allowed
        value: '0'
      - name: Denied
        value: '1'
      - name: Restricted
        value: '2'
      item_type: enum
      name: NewConnectionResult
      pos:
        line_end: 35
        line_start: 30
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.hh
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/pdns/pdns/dnsdistdist/bench-misc_hh.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - EDNSCookiesOpt::EDNSCookiesOpt
  - EDNSCookiesOpt::EDNSCookiesOpt
  - EDNSCookiesOpt::makeFromString
  - EDNSCookiesOpt::makeFromString
  - EDNSCookiesOpt::makeOptString
  - EDNSCookiesOpt::toDisplayString
  - EDNSCookiesOpt::getEDNSCookiesOptFromString
  - cookieTSIsValid
  - EDNSCookiesOpt::isValid
  - EDNSCookiesOpt::shouldRefresh
  - EDNSCookiesOpt::makeClientCookie
  - EDNSCookiesOpt::makeServerCookie
  source_file: /src/pdns/pdns/dnsdistdist/ednscookies.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - MockupConnection::MockupConnection
  - MockupConnection::canBeReused
  - MockupConnection::isUsable
  - MockupConnection::willBeReusable
  - MockupConnection::setReused
  - MockupConnection::getLastDataReceivedTime
  - MockupConnection::isIdle
  - MockupConnection::stopIO
  - MockupConnection::release
  - MockupConnection::getDS
  - BOOST_AUTO_TEST_CASE
  source_file: /src/pdns/pdns/dnsdistdist/test-dnsdist-connections-cache.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - DNSQuestion::getTrailingData
  - DNSQuestion::setTrailingData
  - DNSQuestion::editHeader
  - DNSQuestion::DNSQuestion
  - DNSQuestion::getThisLogger
  - DNSResponse::getThisLogger
  - DNSQuestion::getLogger
  - DNSQuestion::getLogger
  source_file: /src/pdns/pdns/dnsdistdist/dnsdist-dnsquestion.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - NMGOutputToSorted
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  source_file: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: str
        type: std::string
      - name: port
        type: uint16_t
      - name: result
        type: std::string
      - name: ex
        type: bool
      item_type: struct
      name: "tests[] = {\n    { \"\", 0, \"\", true },\n    { \"1.2.3.a\", 53, \"\",
        true },\n    { \"1::g3\", 99, \"\", true },\n    { \"1.2.3.4\", 0, \"1.2.3.4:0\",
        false },\n    { \"1.2.3.4\", 999, \"1.2.3.4:999\", false },\n    { \"1::\",
        999, \"[1::]:999\", false },\n    { \"1::33:99\", 0, \"[1::33:99]\", false
        },\n    { \"[1::33]:99\", 0, \"[1::33]:99\", false },\n    { \"1:33::99\",
        0, \"1:33::99\", false },\n    { \"[1:33::]:99\", 0, \"[1:33::]:99\", false
        },\n    { \"2003:1234::f561\", 53, \"[2003:1234::f561]:53\", false },\n    {
        \"2003:1234::f561:53\", 54, \"[2003:1234::f561:53]:54\", false },\n  }"
      pos:
        line_end: 921
        line_start: 916
        source_file: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc
    - fields:
      - name: str
        type: std::string
      - name: unspecified
        type: bool
      item_type: struct
      name: TestParams
      pos:
        line_end: 952
        line_start: 948
        source_file: /src/pdns/pdns/dnsdistdist/test-iputils_hh.cc
    typedefs: []
    union: []
- function_names:
  - DOHResponseMapEntry::DOHResponseMapEntry
  - DOHResponseMapEntry::matches
  - DOHResponseMapEntry::getStatusCode
  - '& getContent() const'
  - '& getHeaders() const'
  - DOHFrontend
  - DOHFrontend
  - ~DOHFrontend()
  - getTicketsKeyRotationDelay
  - isHTTPS
  - '& getLogger() const'
  - setup
  - reloadCertificates
  - rotateTicketsKey
  - loadTicketsKeys
  - loadTicketsKey
  - handleTicketsKeyRotation
  - getNextTicketsKeyRotation
  - getTicketsKeysCount
  - ~DOHUnitInterface()
  - getQuerySender
  - handleTimeout
  - handleUDPResponse
  - ~DOHUnitInterface()
  - handleTimeout
  - handleUDPResponse
  source_file: /src/pdns/pdns/dnsdistdist/dnsdist-doh-common.hh
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: d_dsc
        type: std::shared_ptr<DOHServerConfig>
      - name: d_responsesMap
        type: std::shared_ptr<std::vector<std::shared_ptr<DOHResponseMapEntry>>>
      - name: d_tlsContext
        type: std::shared_ptr<TLSFrontend>
      - name: d_logger
        type: std::shared_ptr<const Logr::Logger>
      - name: d_serverTokens
        type: std::string
      - name: d_customResponseHeaders
        type: std::unordered_map<std::string, std::string>
      - name: d_library
        type: std::string
      - name: d_idleTimeout
        type: uint32_t
      - name: d_urls
        type: std::set<std::string, std::less<>>
      - name: d_httpconnects
        type: pdns::stat_t
      - name: d_getqueries
        type: pdns::stat_t
      - name: d_postqueries
        type: pdns::stat_t
      - name: d_badrequests
        type: pdns::stat_t
      - name: d_errorresponses
        type: pdns::stat_t
      - name: d_redirectresponses
        type: pdns::stat_t
      - name: d_validresponses
        type: pdns::stat_t
      - name: d_http1Stats
        type: HTTPVersionStats
      - name: d_http2Stats
        type: HTTPVersionStats
      - name: d_sendCacheControlHeaders
        type: bool
      - name: d_trustForwardedForHeader
        type: bool
      - name: d_earlyACLDrop
        type: bool
      - name: d_exactPathMatching
        type: bool
      - name: d_keepIncomingHeaders
        type: bool
      item_type: struct
      name: DOHFrontend
      pos:
        line_end: 209
        line_start: 85
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-doh-common.hh
    - fields:
      - name: d_nbQueries
        type: pdns::stat_t
      - name: d_nb200Responses
        type: pdns::stat_t
      - name: d_nb400Responses
        type: pdns::stat_t
      - name: d_nb403Responses
        type: pdns::stat_t
      - name: d_nb500Responses
        type: pdns::stat_t
      - name: d_nb502Responses
        type: pdns::stat_t
      - name: d_nbOtherResponses
        type: pdns::stat_t
      item_type: struct
      name: HTTPVersionStats
      pos:
        line_end: 128
        line_start: 119
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-doh-common.hh
    - fields: []
      item_type: struct
      name: DOHUnitInterface
      pos:
        line_end: 236
        line_start: 218
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-doh-common.hh
    - fields:
      - name: getHTTPPath() const
        type: std::string
      - name: getHTTPQueryString() const
        type: std::string
      - name: '& getHTTPHost() const'
        type: std::string
      - name: '& getHTTPScheme() const'
        type: std::string
      - name: '& getHTTPHeaders() const'
        type: std::unordered_map<std::string, std::string>
      - name: getQuerySender() const
        type: std::shared_ptr<TCPQuerySender>
      - name: setHTTPResponse(uint16_t statusCode, PacketBuffer&& body, const std::string&
          contentType = "")
        type: void
      - name: handleTimeout()
        type: void
      - name: handleUDPResponse(PacketBuffer&& response, InternalQueryState&& state,
          const std::shared_ptr<DownstreamState>&)
        type: void
      - name: downstream
        type: std::shared_ptr<DownstreamState>
      item_type: struct
      name: DOHUnitInterface
      pos:
        line_end: 271
        line_start: 238
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-doh-common.hh
    typedefs: []
    union: []
- function_names:
  - ObjectPipe<T>::ObjectPipe
  - ObjectPipe<T>::close
  - ObjectPipe<T>::write
  - ObjectPipe<T>::readTimeout
  - DelayPipe<T>::DelayPipe
  - DelayPipe<T>::gettime
  - DelayPipe<T>::submit
  - DelayPipe<T>::~DelayPipe()
  - DelayPipe<T>::worker
  source_file: /src/pdns/pdns/dnsdistdist/delaypipe.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - dnsdist::NetworkListener::NetworkListener
  - dnsdist::NetworkListener::NetworkListener
  - '& operator=(const NetworkListener&)'
  - '& operator=(NetworkListener&&)'
  - dnsdist::NetworkListener::NetworkListener
  - dnsdist::NetworkListener::NetworkListener
  - '& operator=(const NetworkListener&)'
  - '& operator=(NetworkListener&&)'
  source_file: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.hh
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: d_mplexer
        type: std::unique_ptr<FDMultiplexer>
      - name: d_sockets
        type: std::unordered_map<std::string, Socket>
      - name: d_running
        type: std::atomic<bool>
      - name: d_exiting
        type: std::atomic<bool>
      item_type: struct
      name: ListenerData
      pos:
        line_end: 57
        line_start: 49
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.hh
    - fields:
      - name: d_cb
        type: NetworkDatagramCB
      - name: d_endpoint
        type: EndpointID
      item_type: struct
      name: CBData
      pos:
        line_end: 67
        line_start: 63
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.hh
    - fields:
      - name: d_mplexer
        type: std::unique_ptr<FDMultiplexer>
      - name: d_sockets
        type: std::unordered_map<std::string, Socket>
      - name: d_running
        type: std::atomic<bool>
      - name: d_exiting
        type: std::atomic<bool>
      item_type: struct
      name: ListenerData
      pos:
        line_end: 57
        line_start: 49
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.hh
    - fields:
      - name: d_cb
        type: NetworkDatagramCB
      - name: d_endpoint
        type: EndpointID
      item_type: struct
      name: CBData
      pos:
        line_end: 67
        line_start: 63
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.hh
    typedefs: []
    union: []
- function_names:
  - pdns::views::UnsignedCharView::UnsignedCharView
  - pdns::views::UnsignedCharView::UnsignedCharView
  - '& at(size_type pos) const'
  - '& operator[](size_type pos) const'
  - pdns::views::UnsignedCharView::data
  - pdns::views::UnsignedCharView::size
  - pdns::views::UnsignedCharView::length
  - pdns::views::UnsignedCharView::UnsignedCharView
  - pdns::views::UnsignedCharView::UnsignedCharView
  - '& at(size_type pos) const'
  - '& operator[](size_type pos) const'
  - pdns::views::UnsignedCharView::data
  - pdns::views::UnsignedCharView::size
  - pdns::views::UnsignedCharView::length
  source_file: /src/pdns/pdns/dnsdistdist/views.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - MetricDefinition
  - MetricDefinition
  - getMetricDetails
  - addMetricDefinition
  - getPrometheusStringMetricType
  source_file: /src/pdns/pdns/dnsdistdist/dnsdist-prometheus.hh
  types:
    enum:
    - enumerators:
      - name: counter
        value: '1'
      - name: gauge
        value: '2'
      item_type: enum
      name: PrometheusMetricType
      pos:
        line_end: 44
        line_start: 40
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-prometheus.hh
    preproc_defs: []
    structs:
    - fields:
      - name: '& name'
        type: std::string
      - name: '& type'
        type: std::string
      - name: '& description'
        type: std::string
      - name: '& customName'
        type: std::string
      item_type: struct
      name: PrometheusMetricDefinition
      pos:
        line_end: 35
        line_start: 29
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-prometheus.hh
    - fields:
      - name: '& name'
        type: std::string
      - name: '& type'
        type: std::string
      - name: '& description'
        type: std::string
      - name: '& customName'
        type: std::string
      item_type: struct
      name: PrometheusMetricDefinition
      pos:
        line_end: 35
        line_start: 29
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-prometheus.hh
    - fields:
      - name: description
        type: std::string
      - name: customName
        type: std::string
      - name: prometheusType
        type: PrometheusMetricType
      item_type: struct
      name: MetricDefinition
      pos:
        line_end: 62
        line_start: 47
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-prometheus.hh
    - fields:
      - name: metrics
        type: std::map<std::string, MetricDefinition>
      item_type: struct
      name: MetricDefinitionStorage
      pos:
        line_end: 110
        line_start: 64
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-prometheus.hh
    typedefs: []
    union: []
- function_names: []
  source_file: /src/pdns/pdns/dnsdistdist/dnsdist-lua-hooks.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - generateSVCPayload
  - generateSVCPayload
  - parseSVCParameters
  - dnsdist::svc::generateSVCResponse
  - dnsdist::svc::generateSVCResponse
  - dnsdist::svc::generateSVCResponse
  - dnsdist::svc::generateSVCResponse
  source_file: /src/pdns/pdns/dnsdistdist/dnsdist-svc.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - checkTraceparent
  - getPacket
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  source_file: /src/pdns/pdns/dnsdistdist/test-dnsdist-opentelemetry_cc.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  source_file: /src/pdns/pdns/dnsdistdist/test-dnsdist-ipcrypt2_cc.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  source_file: /src/pdns/pdns/dnsdistdist/test-connectionmanagement_hh.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - dnsdist::crypto::authenticated::Nonce
  - dnsdist::crypto::authenticated::Nonce
  - dnsdist::crypto::authenticated::Nonce
  - '& operator=(const Nonce&)'
  - '& operator=(Nonce&&)'
  - ~Nonce()
  - dnsdist::crypto::authenticated::getEncryptedSize
  - dnsdist::crypto::authenticated::Nonce
  - dnsdist::crypto::authenticated::Nonce
  - dnsdist::crypto::authenticated::Nonce
  - '& operator=(const Nonce&)'
  - '& operator=(Nonce&&)'
  - ~Nonce()
  - dnsdist::crypto::authenticated::getEncryptedSize
  source_file: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.hh
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: init()
        type: void
      - name: merge(const Nonce& lower, const Nonce& higher)
        type: void
      - name: increment()
        type: void
      item_type: struct
      name: Nonce
      pos:
        line_end: 54
        line_start: 33
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.hh
    - fields:
      - name: init()
        type: void
      - name: merge(const Nonce& lower, const Nonce& higher)
        type: void
      - name: increment()
        type: void
      item_type: struct
      name: Nonce
      pos:
        line_end: 54
        line_start: 33
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-crypto.hh
    typedefs: []
    union: []
- function_names:
  - dnsdist::lua::getFunctionFromLuaCode
  - dnsdist::lua::LuaServerPoolObject
  - dnsdist::lua::getFunctionFromLuaCode
  - dnsdist::lua::LuaServerPoolObject
  - getOptionalValue
  - getOptionalIntegerValue
  - checkAllParametersConsumed
  source_file: /src/pdns/pdns/dnsdistdist/dnsdist-lua.hh
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: poolName
        type: std::string
      item_type: struct
      name: LuaServerPoolObject
      pos:
        line_end: 98
        line_start: 90
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-lua.hh
    - fields:
      - name: poolName
        type: std::string
      item_type: struct
      name: LuaServerPoolObject
      pos:
        line_end: 98
        line_start: 90
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-lua.hh
    typedefs: []
    union: []
- function_names:
  - ConnectionToBackend::~ConnectionToBackend()
  - ConnectionToBackend::reconnect
  - TCPConnectionToBackend::~TCPConnectionToBackend()
  - TCPConnectionToBackend::release
  - getSerialFromRawSOAContent
  - getSerialFromIXFRQuery
  - editPayloadID
  - prepareQueryForSending
  - TCPConnectionToBackend::queueNextQuery
  - TCPConnectionToBackend::sendQuery
  - TCPConnectionToBackend::handleReconnectionAttempt
  - TCPConnectionToBackend::handleIO
  - TCPConnectionToBackend::handleIOCallback
  - TCPConnectionToBackend::queueQuery
  - TCPConnectionToBackend::handleTimeout
  - TCPConnectionToBackend::notifyAllQueriesFailed
  - TCPConnectionToBackend::handleResponse
  - TCPConnectionToBackend::getQueryIdFromResponse
  - TCPConnectionToBackend::setProxyProtocolValuesSent
  - TCPConnectionToBackend::matchesTLVs
  - TCPConnectionToBackend::isXFRFinished
  - TCPConnectionToBackend::reachedMaxStreamID
  - ConnectionToBackend::getLogger
  - TCPConnectionToBackend::getLogger
  - setTCPDownstreamMaxIdleConnectionsPerBackend
  - setTCPDownstreamCleanupInterval
  - setTCPDownstreamMaxIdleTime
  source_file: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc
  types:
    enum:
    - enumerators:
      - name: needProxy
      - name: proxySent
      item_type: enum
      name: ConnectionState
      pos:
        line_end: 238
        line_start: 234
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-tcp-downstream.cc
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  source_file: /src/pdns/pdns/dnsdistdist/test-dnsdistedns.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - makeRule
  - makeRuleID
  - parseRuleParams
  - rulesToString
  - showRules
  - removeRuleFromChain
  - rmRule
  - moveRuleToTop
  - mvRule
  - getTopRules
  - addRule
  - toLuaArray
  - getRuleFromSelector
  - qnameSuffixRule
  - qnameSuffixRule
  - setupLuaRuleChainsManagement
  - setupLuaSelectors
  source_file: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: packet
        type: PacketBuffer
      - name: ids
        type: InternalQueryState
      item_type: struct
      name: item
      pos:
        line_end: 509
        line_start: 505
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-lua-rules.cc
    typedefs: []
    union: []
- function_names:
  - DEBUGLOG
  - H3Connection::H3Connection
  - H3Connection::H3Connection
  - H3Connection::H3Connection
  - '& operator=(const H3Connection&)'
  - '& operator=(H3Connection&&)'
  - ~H3Connection()
  - H3Connection::getSNI
  - DOH3ServerConfig
  - DOH3ServerConfig
  - DOH3ServerConfig
  - '& operator=(const DOH3ServerConfig&)'
  - '& operator=(DOH3ServerConfig&&)'
  - ~DOH3ServerConfig()
  - DOH3Frontend::DOH3Frontend
  - DOH3Frontend::~DOH3Frontend()
  - DOH3TCPCrossQuerySender::DOH3TCPCrossQuerySender
  - DOH3TCPCrossQuerySender::active
  - DOH3TCPCrossQuerySender::handleResponse
  - DOH3TCPCrossQuerySender::handleXFRResponse
  - DOH3TCPCrossQuerySender::notifyIOError
  - DOH3CrossProtocolQuery::DOH3CrossProtocolQuery
  - DOH3CrossProtocolQuery::handleInternalError
  - DOH3CrossProtocolQuery::getTCPQuerySender
  - DOH3CrossProtocolQuery::getDQ
  - DOH3CrossProtocolQuery::getDR
  - '&& releaseDU()'
  - tryWriteResponse
  - addHeaderToList
  - h3_send_response
  - h3_send_response
  - handleResponse
  - DOH3Frontend::setup
  - DOH3Frontend::reloadCertificates
  - getConnection
  - sendBackDOH3Unit
  - createConnection
  - getDOH3CrossProtocolQueryFromDQ
  - processDOH3Query
  - doh3_dispatch_query
  - flushResponses
  - flushStalledResponses
  - processH3DataEvent
  - processH3Events
  - handleSocketReadable
  - doh3Thread
  - DOH3Unit::getHTTPPath
  - DOH3Unit::getHTTPQueryString
  - DOH3Unit::getHTTPHost
  - DOH3Unit::getHTTPScheme
  - '& DOH3Unit::getHTTPHeaders() const'
  - DOH3Unit::setHTTPResponse
  - DOH3Unit::getHTTPPath
  - DOH3Unit::getHTTPQueryString
  - DOH3Unit::getHTTPHost
  - DOH3Unit::getHTTPScheme
  - '& DOH3Unit::getHTTPHeaders() const'
  - DOH3Unit::setHTTPResponse
  source_file: /src/pdns/pdns/dnsdistdist/doh3.cc
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: d_connections
        type: ConnectionsMap
      - name: config
        type: QuicheConfig
      - name: http3config
        type: QuicheHTTP3Config
      - name: '* clientState'
        type: ClientState
      - name: df
        type: std::shared_ptr<DOH3Frontend>
      - name: d_responseSender
        type: pdns::channel::Sender<DOH3Unit>
      - name: d_responseReceiver
        type: pdns::channel::Receiver<DOH3Unit>
      item_type: struct
      name: DOH3ServerConfig
      pos:
        line_end: 122
        line_start: 96
        source_file: /src/pdns/pdns/dnsdistdist/doh3.cc
    typedefs: []
    union: []
- function_names: []
  source_file: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi-interface.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: optionCode
        type: uint16_t
      - name: len
        type: uint16_t
      - name: '* data'
        type: void
      item_type: struct
      name: dnsdist_ffi_ednsoption
      pos:
        line_end: 34
        line_start: 30
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi-interface.h
    - fields:
      - name: '* name'
        type: char
      - name: '* value'
        type: char
      item_type: struct
      name: dnsdist_ffi_http_header
      pos:
        line_end: 39
        line_start: 36
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi-interface.h
    - fields:
      - name: '* name'
        type: char
      - name: '* value'
        type: char
      item_type: struct
      name: dnsdist_ffi_tag
      pos:
        line_end: 44
        line_start: 41
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi-interface.h
    - fields:
      - name: '* value'
        type: char
      - name: size
        type: uint16_t
      item_type: struct
      name: dnsdist_ffi_raw_value
      pos:
        line_end: 49
        line_start: 46
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi-interface.h
    - fields:
      - name: '* value'
        type: char
      - name: size
        type: uint16_t
      - name: type
        type: uint8_t
      item_type: struct
      name: dnsdist_ffi_proxy_protocol_value
      pos:
        line_end: 183
        line_start: 179
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi-interface.h
    - fields:
      - name: '* key'
        type: char
      - name: '* reason'
        type: char
      - name: blockedQueries
        type: uint64_t
      - name: remainingTime
        type: uint64_t
      - name: action
        type: uint8_t
      - name: ebpf
        type: bool
      - name: warning
        type: bool
      item_type: struct
      name: dnsdist_ffi_dynamic_block_entry
      pos:
        line_end: 290
        line_start: 282
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi-interface.h
    typedefs:
    - item_type: typedef
      name: dnsdist_ffi_dnsquestion_t
      pos:
        line_end: 25
        line_start: 25
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi-interface.h
      type: dnsdist_ffi_dnsquestion_t
    - item_type: typedef
      name: dnsdist_ffi_dnsresponse_t
      pos:
        line_end: 26
        line_start: 26
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi-interface.h
      type: dnsdist_ffi_dnsresponse_t
    - item_type: typedef
      name: dnsdist_ffi_servers_list_t
      pos:
        line_end: 27
        line_start: 27
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi-interface.h
      type: dnsdist_ffi_servers_list_t
    - item_type: typedef
      name: dnsdist_ffi_server_t
      pos:
        line_end: 28
        line_start: 28
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi-interface.h
      type: dnsdist_ffi_server_t
    - item_type: typedef
      name: dnsdist_ffi_servers_list_t
      pos:
        line_end: 146
        line_start: 146
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi-interface.h
      type: dnsdist_ffi_servers_list_t
    - item_type: typedef
      name: dnsdist_ffi_server_t
      pos:
        line_end: 147
        line_start: 147
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi-interface.h
      type: dnsdist_ffi_server_t
    - item_type: typedef
      name: dnsdist_ffi_domain_list_t
      pos:
        line_end: 189
        line_start: 189
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi-interface.h
      type: dnsdist_ffi_domain_list_t
    - item_type: typedef
      name: dnsdist_ffi_address_list_t
      pos:
        line_end: 190
        line_start: 190
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi-interface.h
      type: dnsdist_ffi_address_list_t
    - item_type: typedef
      name: dnsdist_ffi_ring_entry_list_t
      pos:
        line_end: 201
        line_start: 201
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi-interface.h
      type: dnsdist_ffi_ring_entry_list_t
    - item_type: typedef
      name: dnsdist_ffi_network_endpoint_t
      pos:
        line_end: 229
        line_start: 229
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi-interface.h
      type: dnsdist_ffi_network_endpoint_t
    - item_type: typedef
      name: dnsdist_ffi_dnspacket_t
      pos:
        line_end: 236
        line_start: 236
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi-interface.h
      type: dnsdist_ffi_dnspacket_t
    - item_type: typedef
      name: dnsdist_ffi_network_message_t
      pos:
        line_end: 263
        line_start: 263
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi-interface.h
      type: dnsdist_ffi_network_message_t
    - item_type: typedef
      name: dnsdist_ffi_dynamic_blocks_list_t
      pos:
        line_end: 292
        line_start: 292
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi-interface.h
      type: dnsdist_ffi_dynamic_blocks_list_t
    - item_type: typedef
      name: dnsdist_ffi_svc_record_parameters
      pos:
        line_end: 301
        line_start: 301
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi-interface.h
      type: dnsdist_ffi_svc_record_parameters
    union: []
- function_names:
  - setupLuaWeb
  source_file: /src/pdns/pdns/dnsdistdist/dnsdist-lua-web.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - SvcParam::SvcParam
  - operator==(const SvcParamKey& key) const
  - SvcParam::getKey
  - SvcParam::getAutoHint
  - SvcParam::setAutoHint
  source_file: /src/pdns/pdns/dnsdistdist/svc-records.hh
  types:
    enum:
    - enumerators:
      - name: mandatory
        value: '0'
      - name: port
        value: '3'
      - name: alpn
        value: '1'
      - name: ipv4hint
        value: '4'
      - name: no_default_alpn
        value: '2'
      - name: ech
        value: '5'
      - name: ipv6hint
        value: '6'
      - name: dohpath
        value: '7'
      - name: ohttp
        value: '8'
      - name: tls_supported_groups
        value: '9'
      item_type: enum
      name: SvcParamKey
      pos:
        line_end: 46
        line_start: 30
        source_file: /src/pdns/pdns/dnsdistdist/svc-records.hh
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - LocalStateHolder::LocalStateHolder
  - '* operator->()'
  - '& operator*()'
  - '& get(bool allowedOutdated = false)'
  - LocalStateHolder::reset
  - GlobalStateHolder::GlobalStateHolder
  - GlobalStateHolder::getLocal
  - GlobalStateHolder::setState
  - GlobalStateHolder::setState
  - GlobalStateHolder::getCopy
  - GlobalStateHolder::modify
  - GlobalStateHolder::getGeneration
  - GlobalStateHolder::getState
  source_file: /src/pdns/pdns/dnsdistdist/sholder.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/pdns/pdns/dnsdistdist/base64.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - DownstreamState::passCrossProtocolQuery
  - DownstreamState::addXSKDestination
  - DownstreamState::removeXSKDestination
  - DownstreamState::reconnect
  - DownstreamState::waitUntilConnected
  - DownstreamState::stop
  - DownstreamState::hash
  - DownstreamState::setId
  - DownstreamState::setWeight
  - DownstreamState::DownstreamState
  - DownstreamState::start
  - DownstreamState::connectUDPSockets
  - DownstreamState::~DownstreamState()
  - DownstreamState::incCurrentConnectionsCount
  - DownstreamState::pickSocketForSending
  - DownstreamState::pickSocketsReadyForReceiving
  - isIDSExpired
  - DownstreamState::handleUDPTimeout
  - DownstreamState::reportResponse
  - DownstreamState::reportTimeoutOrError
  - DownstreamState::handleUDPTimeouts
  - DownstreamState::saveState
  - DownstreamState::restoreState
  - DownstreamState::getState
  - DownstreamState::healthCheckRequired
  - DownstreamState::getNextLazyHealthCheck
  - DownstreamState::updateNextLazyHealthCheck
  - DownstreamState::submitHealthCheckResult
  - DownstreamState::pickSourceAddressForSending
  - DownstreamState::registerXsk
  - DownstreamState::parseSourceParameter
  - DownstreamState::parseAvailabilityConfigFromStr
  - DownstreamState::getQPSLimit
  - DownstreamState::getLogger
  - ServerPool::countServers
  - ServerPool::poolLoad
  - ServerPool::hasAtLeastOneServerAvailable
  - '& ServerPool::getServers() const'
  - ServerPool::addServer
  - ServerPool::removeServer
  - ServerPool::updateConsistency
  - ServerPool::setZeroScope
  - ServerPool::setECS
  - ServerPool::shouldKeepStaleData
  - dnsdist::backend::registerNewBackend
  - dnsdist::backend::registerNewBackend
  source_file: /src/pdns/pdns/dnsdistdist/dnsdist-backend.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - swapElements
  - QType::isSupportedType
  - QType::isMetadataType
  - QType::toString
  - QType::chartocode
  - '&QType::operator=(const char *p)'
  - '&QType::operator=(const string &s)'
  - QClass::QClass
  - QClass::toString
  source_file: /src/pdns/pdns/dnsdistdist/qtype.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/pdns/pdns/dnsdistdist/dnsdist-configuration.hh
  types:
    enum:
    - enumerators:
      - name: Numeric
      - name: ISO8601
      item_type: enum
      name: TimeFormat
      pos:
        line_end: 59
        line_start: 55
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-configuration.hh
    - enumerators:
      - name: Numeric
      - name: ISO8601
      item_type: enum
      name: TimeFormat
      pos:
        line_end: 59
        line_start: 55
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-configuration.hh
    preproc_defs: []
    structs:
    - fields:
      - name: d_capabilitiesToRetain
        type: std::set<std::string>
      - name: d_tcpFastOpenKey
        type: std::vector<uint32_t>
      - name: d_frontends
        type: std::vector<std::shared_ptr<ClientState>>
      - name: d_snmpDaemonSocketPath
        type: std::string
      - name: d_loggingBackend
        type: std::string
      - name: d_weightedBalancingFactor
        type: double
      - name: d_consistentHashBalancingFactor
        type: double
      - name: d_outgoingDoHWorkers
        type: std::optional<uint64_t>
      - name: d_consoleMaxConcurrentConnections
        type: uint64_t
      - name: d_outgoingDoHMaxIdleTime
        type: uint64_t
      - name: d_outgoingTCPMaxIdleTime
        type: uint64_t
      - name: d_outgoingDoHCleanupInterval
        type: uint64_t
      - name: d_outgoingTCPCleanupInterval
        type: uint64_t
      - name: d_outgoingDoHMaxIdlePerBackend
        type: uint64_t
      - name: d_outgoingTCPMaxIdlePerBackend
        type: uint64_t
      - name: d_maxTCPClientThreads
        type: uint64_t
      - name: d_maxTCPConnectionsRatePerClient
        type: uint64_t
      - name: d_maxTLSResumedSessionsRatePerClient
        type: uint64_t
      - name: d_maxTLSNewSessionsRatePerClient
        type: uint64_t
      - name: d_tcpConnectionsRatePerClientInterval
        type: uint64_t
      - name: d_maxTCPConnectionsPerClient
        type: size_t
      - name: d_udpVectorSize
        type: size_t
      - name: d_ringsCapacity
        type: size_t
      - name: d_ringsNumberOfShards
        type: size_t
      - name: d_ringsNbLockTries
        type: size_t
      - name: d_ringsSamplingRate
        type: size_t
      - name: d_socketUDPSendBuffer
        type: uint32_t
      - name: d_socketUDPRecvBuffer
        type: uint32_t
      - name: d_hashPerturbation
        type: uint32_t
      - name: d_maxTCPReadIOsPerQuery
        type: uint32_t
      - name: d_tcpBanDurationForExceedingMaxReadIOsPerQuery
        type: uint32_t
      - name: d_tcpBanDurationForExceedingTCPTLSRate
        type: uint32_t
      - name: d_maxUDPOutstanding
        type: uint32_t
      - name: d_structuredLoggingTimeFormat
        type: TimeFormat
      - name: d_udpTimeout
        type: uint8_t
      - name: d_tcpConnectionsOverloadThreshold
        type: uint8_t
      - name: d_tcpConnectionsMaskV4
        type: uint8_t
      - name: d_tcpConnectionsMaskV6
        type: uint8_t
      - name: d_tcpConnectionsMaskV4Port
        type: uint8_t
      - name: d_randomizeUDPSocketsToBackend
        type: bool
      - name: d_randomizeIDsToBackend
        type: bool
      - name: d_ringsRecordQueries
        type: bool
      - name: d_ringsRecordResponses
        type: bool
      - name: d_snmpEnabled
        type: bool
      - name: d_snmpTrapsEnabled
        type: bool
      - name: d_structuredLogging
        type: bool
      - name: d_structuredLoggingUseServerID
        type: bool
      item_type: struct
      name: ImmutableConfiguration
      pos:
        line_end: 121
        line_start: 63
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-configuration.hh
    - fields:
      - name: d_ruleChains
        type: rules::RuleChains
      - name: d_backends
        type: servers_t
      - name: d_pools
        type: std::unordered_map<std::string, ServerPool>
      - name: d_webPassword
        type: std::shared_ptr<const CredentialsHolder>
      - name: d_webAPIKey
        type: std::shared_ptr<const CredentialsHolder>
      - name: d_webCustomHeaders
        type: std::optional<std::unordered_map<std::string, std::string>>
      - name: d_lbPolicy
        type: std::shared_ptr<ServerPolicy>
      - name: d_ACL
        type: NetmaskGroup
      - name: d_proxyProtocolACL
        type: NetmaskGroup
      - name: d_consoleACL
        type: NetmaskGroup
      - name: d_webServerACL
        type: NetmaskGroup
      - name: d_webServerAddresses
        type: std::set<ComboAddress>
      - name: d_queryCountConfig
        type: dnsdist::QueryCount::Configuration
      - name: d_consoleServerAddress
        type: ComboAddress
      - name: d_consoleKey
        type: std::string
      - name: d_secPollSuffix
        type: std::string
      - name: d_apiConfigDirectory
        type: std::string
      - name: d_server_id
        type: std::string
      - name: d_dynBlocksPurgeInterval
        type: uint64_t
      - name: d_maxTCPQueriesPerConn
        type: size_t
      - name: d_maxTCPConnectionDuration
        type: size_t
      - name: d_proxyProtocolMaximumSize
        type: size_t
      - name: d_staleCacheEntriesTTL
        type: uint32_t
      - name: d_secPollInterval
        type: uint32_t
      - name: d_consoleOutputMsgMaxSize
        type: uint32_t
      - name: d_payloadSizeSelfGenAnswers
        type: uint16_t
      - name: d_tcpRecvTimeout
        type: uint16_t
      - name: d_tcpSendTimeout
        type: uint16_t
      - name: d_ECSSourcePrefixV4
        type: uint16_t
      - name: d_ECSSourcePrefixV6
        type: uint16_t
      - name: d_cacheCleaningDelay
        type: uint16_t
      - name: d_cacheCleaningPercentage
        type: uint16_t
      - name: d_tlsSessionCacheCleanupDelay
        type: uint16_t
      - name: d_tlsSessionCacheSessionValidity
        type: uint16_t
      - name: d_tlsSessionCacheMaxSessionsPerBackend
        type: uint16_t
      - name: d_dynBlockAction
        type: DNSAction::Action
      - name: d_apiRequiresAuthentication
        type: bool
      - name: d_dashboardRequiresAuthentication
        type: bool
      - name: d_statsRequireAuthentication
        type: bool
      - name: d_prometheusAddInstanceLabel
        type: bool
      - name: d_truncateTC
        type: bool
      - name: d_fixupCase
        type: bool
      - name: d_queryCountEnabled
        type: bool
      - name: d_ecsOverride
        type: bool
      - name: d_verbose
        type: bool
      - name: d_verboseHealthChecks
        type: bool
      - name: d_apiReadWrite
        type: bool
      - name: d_roundrobinFailOnNoServer
        type: bool
      - name: d_servFailOnNoPolicy
        type: bool
      - name: d_allowEmptyResponse
        type: bool
      - name: d_dropEmptyQueries
        type: bool
      - name: d_consoleEnabled
        type: bool
      - name: d_logConsoleConnections
        type: bool
      - name: d_addEDNSToSelfGeneratedResponses
        type: bool
      - name: d_applyACLToProxiedClients
        type: bool
      - name: d_openTelemetryTracing
        type: bool
      - name: d_webServerAllowCrossOriginRequests
        type: bool
      item_type: struct
      name: RuntimeConfiguration
      pos:
        line_end: 188
        line_start: 125
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-configuration.hh
    - fields:
      - name: d_capabilitiesToRetain
        type: std::set<std::string>
      - name: d_tcpFastOpenKey
        type: std::vector<uint32_t>
      - name: d_frontends
        type: std::vector<std::shared_ptr<ClientState>>
      - name: d_snmpDaemonSocketPath
        type: std::string
      - name: d_loggingBackend
        type: std::string
      - name: d_weightedBalancingFactor
        type: double
      - name: d_consistentHashBalancingFactor
        type: double
      - name: d_outgoingDoHWorkers
        type: std::optional<uint64_t>
      - name: d_consoleMaxConcurrentConnections
        type: uint64_t
      - name: d_outgoingDoHMaxIdleTime
        type: uint64_t
      - name: d_outgoingTCPMaxIdleTime
        type: uint64_t
      - name: d_outgoingDoHCleanupInterval
        type: uint64_t
      - name: d_outgoingTCPCleanupInterval
        type: uint64_t
      - name: d_outgoingDoHMaxIdlePerBackend
        type: uint64_t
      - name: d_outgoingTCPMaxIdlePerBackend
        type: uint64_t
      - name: d_maxTCPClientThreads
        type: uint64_t
      - name: d_maxTCPConnectionsRatePerClient
        type: uint64_t
      - name: d_maxTLSResumedSessionsRatePerClient
        type: uint64_t
      - name: d_maxTLSNewSessionsRatePerClient
        type: uint64_t
      - name: d_tcpConnectionsRatePerClientInterval
        type: uint64_t
      - name: d_maxTCPConnectionsPerClient
        type: size_t
      - name: d_udpVectorSize
        type: size_t
      - name: d_ringsCapacity
        type: size_t
      - name: d_ringsNumberOfShards
        type: size_t
      - name: d_ringsNbLockTries
        type: size_t
      - name: d_ringsSamplingRate
        type: size_t
      - name: d_socketUDPSendBuffer
        type: uint32_t
      - name: d_socketUDPRecvBuffer
        type: uint32_t
      - name: d_hashPerturbation
        type: uint32_t
      - name: d_maxTCPReadIOsPerQuery
        type: uint32_t
      - name: d_tcpBanDurationForExceedingMaxReadIOsPerQuery
        type: uint32_t
      - name: d_tcpBanDurationForExceedingTCPTLSRate
        type: uint32_t
      - name: d_maxUDPOutstanding
        type: uint32_t
      - name: d_structuredLoggingTimeFormat
        type: TimeFormat
      - name: d_udpTimeout
        type: uint8_t
      - name: d_tcpConnectionsOverloadThreshold
        type: uint8_t
      - name: d_tcpConnectionsMaskV4
        type: uint8_t
      - name: d_tcpConnectionsMaskV6
        type: uint8_t
      - name: d_tcpConnectionsMaskV4Port
        type: uint8_t
      - name: d_randomizeUDPSocketsToBackend
        type: bool
      - name: d_randomizeIDsToBackend
        type: bool
      - name: d_ringsRecordQueries
        type: bool
      - name: d_ringsRecordResponses
        type: bool
      - name: d_snmpEnabled
        type: bool
      - name: d_snmpTrapsEnabled
        type: bool
      - name: d_structuredLogging
        type: bool
      - name: d_structuredLoggingUseServerID
        type: bool
      item_type: struct
      name: ImmutableConfiguration
      pos:
        line_end: 121
        line_start: 63
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-configuration.hh
    - fields:
      - name: d_ruleChains
        type: rules::RuleChains
      - name: d_backends
        type: servers_t
      - name: d_pools
        type: std::unordered_map<std::string, ServerPool>
      - name: d_webPassword
        type: std::shared_ptr<const CredentialsHolder>
      - name: d_webAPIKey
        type: std::shared_ptr<const CredentialsHolder>
      - name: d_webCustomHeaders
        type: std::optional<std::unordered_map<std::string, std::string>>
      - name: d_lbPolicy
        type: std::shared_ptr<ServerPolicy>
      - name: d_ACL
        type: NetmaskGroup
      - name: d_proxyProtocolACL
        type: NetmaskGroup
      - name: d_consoleACL
        type: NetmaskGroup
      - name: d_webServerACL
        type: NetmaskGroup
      - name: d_webServerAddresses
        type: std::set<ComboAddress>
      - name: d_queryCountConfig
        type: dnsdist::QueryCount::Configuration
      - name: d_consoleServerAddress
        type: ComboAddress
      - name: d_consoleKey
        type: std::string
      - name: d_secPollSuffix
        type: std::string
      - name: d_apiConfigDirectory
        type: std::string
      - name: d_server_id
        type: std::string
      - name: d_dynBlocksPurgeInterval
        type: uint64_t
      - name: d_maxTCPQueriesPerConn
        type: size_t
      - name: d_maxTCPConnectionDuration
        type: size_t
      - name: d_proxyProtocolMaximumSize
        type: size_t
      - name: d_staleCacheEntriesTTL
        type: uint32_t
      - name: d_secPollInterval
        type: uint32_t
      - name: d_consoleOutputMsgMaxSize
        type: uint32_t
      - name: d_payloadSizeSelfGenAnswers
        type: uint16_t
      - name: d_tcpRecvTimeout
        type: uint16_t
      - name: d_tcpSendTimeout
        type: uint16_t
      - name: d_ECSSourcePrefixV4
        type: uint16_t
      - name: d_ECSSourcePrefixV6
        type: uint16_t
      - name: d_cacheCleaningDelay
        type: uint16_t
      - name: d_cacheCleaningPercentage
        type: uint16_t
      - name: d_tlsSessionCacheCleanupDelay
        type: uint16_t
      - name: d_tlsSessionCacheSessionValidity
        type: uint16_t
      - name: d_tlsSessionCacheMaxSessionsPerBackend
        type: uint16_t
      - name: d_dynBlockAction
        type: DNSAction::Action
      - name: d_apiRequiresAuthentication
        type: bool
      - name: d_dashboardRequiresAuthentication
        type: bool
      - name: d_statsRequireAuthentication
        type: bool
      - name: d_prometheusAddInstanceLabel
        type: bool
      - name: d_truncateTC
        type: bool
      - name: d_fixupCase
        type: bool
      - name: d_queryCountEnabled
        type: bool
      - name: d_ecsOverride
        type: bool
      - name: d_verbose
        type: bool
      - name: d_verboseHealthChecks
        type: bool
      - name: d_apiReadWrite
        type: bool
      - name: d_roundrobinFailOnNoServer
        type: bool
      - name: d_servFailOnNoPolicy
        type: bool
      - name: d_allowEmptyResponse
        type: bool
      - name: d_dropEmptyQueries
        type: bool
      - name: d_consoleEnabled
        type: bool
      - name: d_logConsoleConnections
        type: bool
      - name: d_addEDNSToSelfGeneratedResponses
        type: bool
      - name: d_applyACLToProxiedClients
        type: bool
      - name: d_openTelemetryTracing
        type: bool
      - name: d_webServerAllowCrossOriginRequests
        type: bool
      item_type: struct
      name: RuntimeConfiguration
      pos:
        line_end: 188
        line_start: 125
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-configuration.hh
    typedefs: []
    union: []
- function_names:
  - dnsdist::metrics::updateLatencyHistogram
  - dnsdist::metrics::updateLatencyHistogram
  source_file: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.hh
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: responses
        type: stat_t
      - name: servfailResponses
        type: stat_t
      - name: queries
        type: stat_t
      - name: frontendNXDomain
        type: stat_t
      - name: frontendServFail
        type: stat_t
      - name: frontendNoError
        type: stat_t
      - name: nonCompliantQueries
        type: stat_t
      - name: nonCompliantResponses
        type: stat_t
      - name: rdQueries
        type: stat_t
      - name: emptyQueries
        type: stat_t
      - name: aclDrops
        type: stat_t
      - name: dynBlocked
        type: stat_t
      - name: ruleDrop
        type: stat_t
      - name: ruleNXDomain
        type: stat_t
      - name: ruleRefused
        type: stat_t
      - name: ruleServFail
        type: stat_t
      - name: ruleTruncated
        type: stat_t
      - name: selfAnswered
        type: stat_t
      - name: downstreamTimeouts
        type: stat_t
      - name: downstreamSendErrors
        type: stat_t
      - name: truncFail
        type: stat_t
      - name: noPolicy
        type: stat_t
      - name: cacheHits
        type: stat_t
      - name: cacheMisses
        type: stat_t
      - name: latency0_1
        type: stat_t
      - name: securityStatus
        type: stat_t
      - name: dohQueryPipeFull
        type: stat_t
      - name: dohResponsePipeFull
        type: stat_t
      - name: doqResponsePipeFull
        type: stat_t
      - name: doh3ResponsePipeFull
        type: stat_t
      - name: outgoingDoHQueryPipeFull
        type: stat_t
      - name: proxyProtocolInvalid
        type: stat_t
      - name: tcpQueryPipeFull
        type: stat_t
      - name: tcpCrossProtocolQueryPipeFull
        type: stat_t
      - name: tcpCrossProtocolResponsePipeFull
        type: stat_t
      - name: latencyAvg100
        type: pdns::stat_double_t
      - name: latencyTCPAvg100
        type: pdns::stat_double_t
      - name: latencyDoTAvg100
        type: pdns::stat_double_t
      - name: latencyDoHAvg100
        type: pdns::stat_double_t
      - name: latencyDoQAvg100
        type: pdns::stat_double_t
      - name: latencyDoH3Avg100
        type: pdns::stat_double_t
      - name: entries
        type: SharedLockGuarded<std::vector<EntryTriple>>
      item_type: struct
      name: Stats
      pos:
        line_end: 103
        line_start: 47
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.hh
    - fields:
      - name: d_name
        type: std::string
      - name: d_labels
        type: std::string
      - name: d_value
        type: entry_t
      item_type: struct
      name: EntryTriple
      pos:
        line_end: 100
        line_start: 95
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.hh
    - fields:
      - name: responses
        type: stat_t
      - name: servfailResponses
        type: stat_t
      - name: queries
        type: stat_t
      - name: frontendNXDomain
        type: stat_t
      - name: frontendServFail
        type: stat_t
      - name: frontendNoError
        type: stat_t
      - name: nonCompliantQueries
        type: stat_t
      - name: nonCompliantResponses
        type: stat_t
      - name: rdQueries
        type: stat_t
      - name: emptyQueries
        type: stat_t
      - name: aclDrops
        type: stat_t
      - name: dynBlocked
        type: stat_t
      - name: ruleDrop
        type: stat_t
      - name: ruleNXDomain
        type: stat_t
      - name: ruleRefused
        type: stat_t
      - name: ruleServFail
        type: stat_t
      - name: ruleTruncated
        type: stat_t
      - name: selfAnswered
        type: stat_t
      - name: downstreamTimeouts
        type: stat_t
      - name: downstreamSendErrors
        type: stat_t
      - name: truncFail
        type: stat_t
      - name: noPolicy
        type: stat_t
      - name: cacheHits
        type: stat_t
      - name: cacheMisses
        type: stat_t
      - name: latency0_1
        type: stat_t
      - name: securityStatus
        type: stat_t
      - name: dohQueryPipeFull
        type: stat_t
      - name: dohResponsePipeFull
        type: stat_t
      - name: doqResponsePipeFull
        type: stat_t
      - name: doh3ResponsePipeFull
        type: stat_t
      - name: outgoingDoHQueryPipeFull
        type: stat_t
      - name: proxyProtocolInvalid
        type: stat_t
      - name: tcpQueryPipeFull
        type: stat_t
      - name: tcpCrossProtocolQueryPipeFull
        type: stat_t
      - name: tcpCrossProtocolResponsePipeFull
        type: stat_t
      - name: latencyAvg100
        type: pdns::stat_double_t
      - name: latencyTCPAvg100
        type: pdns::stat_double_t
      - name: latencyDoTAvg100
        type: pdns::stat_double_t
      - name: latencyDoHAvg100
        type: pdns::stat_double_t
      - name: latencyDoQAvg100
        type: pdns::stat_double_t
      - name: latencyDoH3Avg100
        type: pdns::stat_double_t
      - name: entries
        type: SharedLockGuarded<std::vector<EntryTriple>>
      item_type: struct
      name: Stats
      pos:
        line_end: 103
        line_start: 47
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.hh
    - fields:
      - name: d_name
        type: std::string
      - name: d_labels
        type: std::string
      - name: d_value
        type: entry_t
      item_type: struct
      name: EntryTriple
      pos:
        line_end: 100
        line_start: 95
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-metrics.hh
    typedefs: []
    union: []
- function_names:
  - operator()(DNSQuestion* dnsquestion, std::string* ruleresult) const override
  - dnsdist::actions::DropAction::toString
  - operator()(DNSQuestion* dnsquestion, std::string* ruleresult) const override
  - dnsdist::actions::AllowAction::toString
  - operator()(DNSQuestion* dnsquestion, std::string* ruleresult) const override
  - dnsdist::actions::NoneAction::toString
  - dnsdist::actions::QPSAction::QPSAction
  - operator()(DNSQuestion* dnsquestion, std::string* ruleresult) const override
  - dnsdist::actions::QPSAction::toString
  - dnsdist::actions::DelayAction::DelayAction
  - operator()(DNSQuestion* dnsquestion, std::string* ruleresult) const override
  - dnsdist::actions::DelayAction::toString
  - dnsdist::actions::TeeAction::TeeAction
  - dnsdist::actions::TeeAction::TeeAction
  - '& operator=(TeeAction& other)'
  - '& operator=(TeeAction&& other)'
  - dnsdist::actions::TeeAction::TeeAction
  - TeeAction::~TeeAction()
  - TeeAction::operator()(DNSQuestion* dnsquestion, std::string* ruleresult) const
  - dnsdist::actions::TeeAction::toString
  - dnsdist::actions::TeeAction::getStats
  - dnsdist::actions::TeeAction::worker
  - dnsdist::actions::PoolAction::PoolAction
  - operator()(DNSQuestion* dnsquestion, std::string* ruleresult) const override
  - dnsdist::actions::PoolAction::toString
  - dnsdist::actions::QPSPoolAction::QPSPoolAction
  - operator()(DNSQuestion* dnsquestion, std::string* ruleresult) const override
  - dnsdist::actions::QPSPoolAction::toString
  - dnsdist::actions::RCodeAction::RCodeAction
  - operator()(DNSQuestion* dnsquestion, std::string* ruleresult) const override
  - dnsdist::actions::RCodeAction::toString
  - dnsdist::actions::ERCodeAction::ERCodeAction
  - operator()(DNSQuestion* dnsquestion, std::string* ruleresult) const override
  - dnsdist::actions::ERCodeAction::toString
  - dnsdist::actions::SpoofSVCAction::SpoofSVCAction
  - operator()(DNSQuestion* dnsquestion, std::string* ruleresult) const override
  - dnsdist::actions::SpoofSVCAction::toString
  - operator()(DNSQuestion* dnsquestion, std::string* ruleresult) const override
  - dnsdist::actions::TCAction::toString
  - operator()(DNSResponse* dnsResponse, std::string* ruleresult) const override
  - dnsdist::actions::TCResponseAction::toString
  - dnsdist::actions::LuaAction::LuaAction
  - operator()(DNSQuestion* dnsquestion, std::string* ruleresult) const override
  - dnsdist::actions::LuaAction::toString
  - dnsdist::actions::LuaResponseAction::LuaResponseAction
  - operator()(DNSResponse* response, std::string* ruleresult) const override
  - dnsdist::actions::LuaResponseAction::toString
  - dnsdist::actions::LuaFFIAction::LuaFFIAction
  - operator()(DNSQuestion* dnsquestion, std::string* ruleresult) const override
  - dnsdist::actions::LuaFFIAction::toString
  - dnsdist::actions::LuaFFIPerThreadAction::LuaFFIPerThreadAction
  - operator()(DNSQuestion* dnsquestion, std::string* ruleresult) const override
  - dnsdist::actions::LuaFFIPerThreadAction::toString
  - dnsdist::actions::LuaFFIResponseAction::LuaFFIResponseAction
  - operator()(DNSResponse* response, std::string* ruleresult) const override
  - dnsdist::actions::LuaFFIResponseAction::toString
  - dnsdist::actions::LuaFFIPerThreadResponseAction::LuaFFIPerThreadResponseAction
  - operator()(DNSResponse* response, std::string* ruleresult) const override
  - dnsdist::actions::LuaFFIPerThreadResponseAction::toString
  - dnsdist::actions::SpoofAction::SpoofAction
  - dnsdist::actions::SpoofAction::SpoofAction
  - dnsdist::actions::SpoofAction::SpoofAction
  - dnsdist::actions::SpoofAction::SpoofAction
  - dnsdist::actions::SpoofAction::toString
  - SpoofAction::operator()(DNSQuestion* dnsquestion, std::string* ruleresult) const
  - dnsdist::actions::SetMacAddrAction::SetMacAddrAction
  - operator()(DNSQuestion* dnsquestion, std::string* ruleresult) const override
  - dnsdist::actions::SetMacAddrAction::toString
  - dnsdist::actions::SetEDNSOptionAction::SetEDNSOptionAction
  - operator()(DNSQuestion* dnsquestion, std::string* ruleresult) const override
  - dnsdist::actions::SetEDNSOptionAction::toString
  - dnsdist::actions::SetEDNSOptionResponseAction::SetEDNSOptionResponseAction
  - operator()(DNSResponse* response, [[maybe_unused]] std::string* ruleresult) const
    override
  - dnsdist::actions::SetEDNSOptionResponseAction::toString
  - operator()(DNSQuestion* dnsquestion, std::string* ruleresult) const override
  - dnsdist::actions::SetNoRecurseAction::toString
  - dnsdist::actions::LogAction::LogAction
  - dnsdist::actions::LogAction::LogAction
  - operator()(DNSQuestion* dnsquestion, std::string* ruleresult) const override
  - dnsdist::actions::LogAction::toString
  - dnsdist::actions::LogAction::reload
  - dnsdist::actions::LogAction::reopenLogFile
  - dnsdist::actions::LogResponseAction::LogResponseAction
  - dnsdist::actions::LogResponseAction::LogResponseAction
  - operator()(DNSResponse* response, std::string* ruleresult) const override
  - dnsdist::actions::LogResponseAction::toString
  - dnsdist::actions::LogResponseAction::reload
  - dnsdist::actions::LogResponseAction::reopenLogFile
  - operator()(DNSQuestion* dnsquestion, std::string* ruleresult) const override
  - dnsdist::actions::SetDisableValidationAction::toString
  - operator()(DNSQuestion* dnsquestion, std::string* ruleresult) const override
  - dnsdist::actions::SetSkipCacheAction::toString
  - operator()(DNSResponse* response, std::string* ruleresult) const override
  - dnsdist::actions::SetSkipCacheResponseAction::toString
  - dnsdist::actions::SetTempFailureCacheTTLAction::SetTempFailureCacheTTLAction
  - operator()(DNSQuestion* dnsquestion, std::string* ruleresult) const override
  - dnsdist::actions::SetTempFailureCacheTTLAction::toString
  - dnsdist::actions::SetECSPrefixLengthAction::SetECSPrefixLengthAction
  - operator()(DNSQuestion* dnsquestion, std::string* ruleresult) const override
  - dnsdist::actions::SetECSPrefixLengthAction::toString
  - dnsdist::actions::SetECSOverrideAction::SetECSOverrideAction
  - operator()(DNSQuestion* dnsquestion, std::string* ruleresult) const override
  - dnsdist::actions::SetECSOverrideAction::toString
  - operator()(DNSQuestion* dnsquestion, std::string* ruleresult) const override
  - dnsdist::actions::SetDisableECSAction::toString
  - dnsdist::actions::SetECSAction::SetECSAction
  - dnsdist::actions::SetECSAction::SetECSAction
  - operator()(DNSQuestion* dnsquestion, std::string* ruleresult) const override
  - dnsdist::actions::SetECSAction::toString
  - dnsdist::actions::ProtocolToDNSTap
  - dnsdist::actions::remoteLoggerQueueData
  - dnsdist::actions::DnstapLogAction::DnstapLogAction
  - operator()(DNSQuestion* dnsquestion, std::string* ruleresult) const override
  - dnsdist::actions::DnstapLogAction::toString
  - dnsdist::actions::addMetaDataToProtobuf
  - dnsdist::actions::stripPrefix
  - dnsdist::actions::addTagsToProtobuf
  - dnsdist::actions::addExtendedDNSErrorToProtobuf
  - dnsdist::actions::addMetaDataToProtobuf
  - dnsdist::actions::stripPrefix
  - dnsdist::actions::addTagsToProtobuf
  - dnsdist::actions::addExtendedDNSErrorToProtobuf
  - dnsdist::actions::RemoteLogAction::RemoteLogAction
  - operator()(DNSQuestion* dnsquestion, std::string* ruleresult) const override
  - dnsdist::actions::RemoteLogAction::toString
  - dnsdist::actions::SetTraceAction::SetTraceAction
  - operator()([[maybe_unused]] DNSQuestion* dnsquestion, [[maybe_unused]] std::string*
    ruleresult) const override
  - dnsdist::actions::SetTraceAction::toString
  - dnsdist::actions::SNMPTrapAction::SNMPTrapAction
  - operator()(DNSQuestion* dnsquestion, std::string* ruleresult) const override
  - dnsdist::actions::SNMPTrapAction::toString
  - dnsdist::actions::SetTagAction::SetTagAction
  - operator()(DNSQuestion* dnsquestion, std::string* ruleresult) const override
  - dnsdist::actions::SetTagAction::toString
  - dnsdist::actions::UnsetTagAction::UnsetTagAction
  - operator()(DNSQuestion* dnsquestion, std::string* ruleresult) const override
  - dnsdist::actions::UnsetTagAction::toString
  - dnsdist::actions::DnstapLogResponseAction::DnstapLogResponseAction
  - operator()(DNSResponse* response, std::string* ruleresult) const override
  - dnsdist::actions::DnstapLogResponseAction::toString
  - dnsdist::actions::RemoteLogResponseAction::RemoteLogResponseAction
  - operator()(DNSResponse* response, std::string* ruleresult) const override
  - dnsdist::actions::RemoteLogResponseAction::toString
  - operator()(DNSResponse* response, std::string* ruleresult) const override
  - dnsdist::actions::DropResponseAction::toString
  - operator()(DNSResponse* response, std::string* ruleresult) const override
  - dnsdist::actions::AllowResponseAction::toString
  - dnsdist::actions::DelayResponseAction::DelayResponseAction
  - operator()(DNSResponse* response, std::string* ruleresult) const override
  - dnsdist::actions::DelayResponseAction::toString
  - dnsdist::actions::SNMPTrapResponseAction::SNMPTrapResponseAction
  - operator()(DNSResponse* response, std::string* ruleresult) const override
  - dnsdist::actions::SNMPTrapResponseAction::toString
  - dnsdist::actions::SetTagResponseAction::SetTagResponseAction
  - operator()(DNSResponse* response, std::string* ruleresult) const override
  - dnsdist::actions::SetTagResponseAction::toString
  - dnsdist::actions::UnsetTagResponseAction::UnsetTagResponseAction
  - operator()(DNSResponse* dnsresponse, std::string* ruleresult) const override
  - dnsdist::actions::UnsetTagResponseAction::toString
  - dnsdist::actions::ClearRecordTypesResponseAction::ClearRecordTypesResponseAction
  - operator()(DNSResponse* response, std::string* ruleresult) const override
  - dnsdist::actions::ClearRecordTypesResponseAction::toString
  - dnsdist::actions::ContinueAction::ContinueAction
  - operator()(DNSQuestion* dnsquestion, std::string* ruleresult) const override
  - dnsdist::actions::ContinueAction::toString
  - dnsdist::actions::HTTPStatusAction::HTTPStatusAction
  - operator()([[maybe_unused]] DNSQuestion* dnsquestion, std::string* ruleresult)
    const override
  - dnsdist::actions::HTTPStatusAction::toString
  - dnsdist::actions::KeyValueStoreLookupAction::KeyValueStoreLookupAction
  - operator()(DNSQuestion* dnsquestion, std::string* ruleresult) const override
  - dnsdist::actions::KeyValueStoreLookupAction::toString
  - dnsdist::actions::KeyValueStoreRangeLookupAction::KeyValueStoreRangeLookupAction
  - operator()(DNSQuestion* dnsquestion, std::string* ruleresult) const override
  - dnsdist::actions::KeyValueStoreRangeLookupAction::toString
  - dnsdist::actions::SetMaxReturnedTTLAction::SetMaxReturnedTTLAction
  - operator()(DNSQuestion* dnsquestion, std::string* ruleresult) const override
  - dnsdist::actions::SetMaxReturnedTTLAction::toString
  - dnsdist::actions::SetMaxReturnedTTLResponseAction::SetMaxReturnedTTLResponseAction
  - operator()(DNSResponse* response, std::string* ruleresult) const override
  - dnsdist::actions::SetMaxReturnedTTLResponseAction::toString
  - dnsdist::actions::NegativeAndSOAAction::NegativeAndSOAAction
  - operator()(DNSQuestion* dnsquestion, std::string* ruleresult) const override
  - dnsdist::actions::NegativeAndSOAAction::toString
  - dnsdist::actions::SetProxyProtocolValuesAction::SetProxyProtocolValuesAction
  - operator()(DNSQuestion* dnsquestion, std::string* ruleresult) const override
  - dnsdist::actions::SetProxyProtocolValuesAction::toString
  - dnsdist::actions::SetAdditionalProxyProtocolValueAction::SetAdditionalProxyProtocolValueAction
  - operator()(DNSQuestion* dnsquestion, std::string* ruleresult) const override
  - dnsdist::actions::SetAdditionalProxyProtocolValueAction::toString
  - dnsdist::actions::SetReducedTTLResponseAction::SetReducedTTLResponseAction
  - operator()(DNSResponse* response, std::string* ruleresult) const override
  - dnsdist::actions::SetReducedTTLResponseAction::toString
  - dnsdist::actions::SetExtendedDNSErrorAction::SetExtendedDNSErrorAction
  - operator()(DNSQuestion* dnsQuestion, std::string* ruleresult) const override
  - dnsdist::actions::SetExtendedDNSErrorAction::toString
  - dnsdist::actions::SetExtendedDNSErrorResponseAction::SetExtendedDNSErrorResponseAction
  - operator()(DNSResponse* dnsResponse, std::string* ruleresult) const override
  - dnsdist::actions::SetExtendedDNSErrorResponseAction::toString
  - dnsdist::actions::LimitTTLResponseAction::LimitTTLResponseAction
  - operator()(DNSResponse* dnsResponse, std::string* ruleresult) const override
  - dnsdist::actions::LimitTTLResponseAction::toString
  - dnsdist::actions::getLuaAction
  - dnsdist::actions::getLuaFFIAction
  - dnsdist::actions::getLuaResponseAction
  - dnsdist::actions::getLuaFFIResponseAction
  - dnsdist::actions::getSetTraceAction
  - dnsdist::actions::getRemoteLogAction
  - dnsdist::actions::getRemoteLogResponseAction
  - dnsdist::actions::getDnstapLogAction
  - dnsdist::actions::getDnstapLogResponseAction
  - dnsdist::actions::getKeyValueStoreLookupAction
  - dnsdist::actions::getKeyValueStoreRangeLookupAction
  - dnsdist::actions::getHTTPStatusAction
  - dnsdist::actions::getLimitTTLResponseAction
  - dnsdist::actions::getMinTTLResponseAction
  - dnsdist::actions::getClearRecordTypesResponseAction
  - dnsdist::actions::getContinueAction
  - dnsdist::actions::getNegativeAndSOAAction
  - dnsdist::actions::getRCodeAction
  - dnsdist::actions::getERCodeAction
  - dnsdist::actions::getSetECSAction
  - dnsdist::actions::getSetECSAction
  - dnsdist::actions::getSpoofAction
  - dnsdist::actions::getSpoofAction
  - dnsdist::actions::getSpoofAction
  - dnsdist::actions::getSpoofAction
  - dnsdist::actions::getSpoofSVCAction
  - dnsdist::actions::getSetMaxReturnedTTLAction
  - dnsdist::actions::getSetMaxReturnedTTLResponseAction
  - dnsdist::actions::getSetMaxTTLResponseAction
  - dnsdist::actions::getSetProxyProtocolValuesAction
  - dnsdist::actions::getTeeAction
  - operator()(DNSQuestion* dnsquestion, std::string* ruleresult) const override
  - dnsdist::actions::DropAction::toString
  - operator()(DNSQuestion* dnsquestion, std::string* ruleresult) const override
  - dnsdist::actions::AllowAction::toString
  - operator()(DNSQuestion* dnsquestion, std::string* ruleresult) const override
  - dnsdist::actions::NoneAction::toString
  - dnsdist::actions::QPSAction::QPSAction
  - operator()(DNSQuestion* dnsquestion, std::string* ruleresult) const override
  - dnsdist::actions::QPSAction::toString
  - dnsdist::actions::DelayAction::DelayAction
  - operator()(DNSQuestion* dnsquestion, std::string* ruleresult) const override
  - dnsdist::actions::DelayAction::toString
  - dnsdist::actions::TeeAction::TeeAction
  - dnsdist::actions::TeeAction::TeeAction
  - '& operator=(TeeAction& other)'
  - '& operator=(TeeAction&& other)'
  - dnsdist::actions::TeeAction::TeeAction
  - TeeAction::~TeeAction()
  - TeeAction::operator()(DNSQuestion* dnsquestion, std::string* ruleresult) const
  - dnsdist::actions::TeeAction::toString
  - dnsdist::actions::TeeAction::getStats
  - dnsdist::actions::TeeAction::worker
  - dnsdist::actions::PoolAction::PoolAction
  - operator()(DNSQuestion* dnsquestion, std::string* ruleresult) const override
  - dnsdist::actions::PoolAction::toString
  - dnsdist::actions::QPSPoolAction::QPSPoolAction
  - operator()(DNSQuestion* dnsquestion, std::string* ruleresult) const override
  - dnsdist::actions::QPSPoolAction::toString
  - dnsdist::actions::RCodeAction::RCodeAction
  - operator()(DNSQuestion* dnsquestion, std::string* ruleresult) const override
  - dnsdist::actions::RCodeAction::toString
  - dnsdist::actions::ERCodeAction::ERCodeAction
  - operator()(DNSQuestion* dnsquestion, std::string* ruleresult) const override
  - dnsdist::actions::ERCodeAction::toString
  - dnsdist::actions::SpoofSVCAction::SpoofSVCAction
  - operator()(DNSQuestion* dnsquestion, std::string* ruleresult) const override
  - dnsdist::actions::SpoofSVCAction::toString
  - operator()(DNSQuestion* dnsquestion, std::string* ruleresult) const override
  - dnsdist::actions::TCAction::toString
  - operator()(DNSResponse* dnsResponse, std::string* ruleresult) const override
  - dnsdist::actions::TCResponseAction::toString
  - dnsdist::actions::LuaAction::LuaAction
  - operator()(DNSQuestion* dnsquestion, std::string* ruleresult) const override
  - dnsdist::actions::LuaAction::toString
  - dnsdist::actions::LuaResponseAction::LuaResponseAction
  - operator()(DNSResponse* response, std::string* ruleresult) const override
  - dnsdist::actions::LuaResponseAction::toString
  - dnsdist::actions::LuaFFIAction::LuaFFIAction
  - operator()(DNSQuestion* dnsquestion, std::string* ruleresult) const override
  - dnsdist::actions::LuaFFIAction::toString
  - dnsdist::actions::LuaFFIPerThreadAction::LuaFFIPerThreadAction
  - operator()(DNSQuestion* dnsquestion, std::string* ruleresult) const override
  - dnsdist::actions::LuaFFIPerThreadAction::toString
  - dnsdist::actions::LuaFFIResponseAction::LuaFFIResponseAction
  - operator()(DNSResponse* response, std::string* ruleresult) const override
  - dnsdist::actions::LuaFFIResponseAction::toString
  - dnsdist::actions::LuaFFIPerThreadResponseAction::LuaFFIPerThreadResponseAction
  - operator()(DNSResponse* response, std::string* ruleresult) const override
  - dnsdist::actions::LuaFFIPerThreadResponseAction::toString
  - dnsdist::actions::SpoofAction::SpoofAction
  - dnsdist::actions::SpoofAction::SpoofAction
  - dnsdist::actions::SpoofAction::SpoofAction
  - dnsdist::actions::SpoofAction::SpoofAction
  - dnsdist::actions::SpoofAction::toString
  - SpoofAction::operator()(DNSQuestion* dnsquestion, std::string* ruleresult) const
  - dnsdist::actions::SetMacAddrAction::SetMacAddrAction
  - operator()(DNSQuestion* dnsquestion, std::string* ruleresult) const override
  - dnsdist::actions::SetMacAddrAction::toString
  - dnsdist::actions::SetEDNSOptionAction::SetEDNSOptionAction
  - operator()(DNSQuestion* dnsquestion, std::string* ruleresult) const override
  - dnsdist::actions::SetEDNSOptionAction::toString
  - dnsdist::actions::SetEDNSOptionResponseAction::SetEDNSOptionResponseAction
  - operator()(DNSResponse* response, [[maybe_unused]] std::string* ruleresult) const
    override
  - dnsdist::actions::SetEDNSOptionResponseAction::toString
  - operator()(DNSQuestion* dnsquestion, std::string* ruleresult) const override
  - dnsdist::actions::SetNoRecurseAction::toString
  - dnsdist::actions::LogAction::LogAction
  - dnsdist::actions::LogAction::LogAction
  - operator()(DNSQuestion* dnsquestion, std::string* ruleresult) const override
  - dnsdist::actions::LogAction::toString
  - dnsdist::actions::LogAction::reload
  - dnsdist::actions::LogAction::reopenLogFile
  - dnsdist::actions::LogResponseAction::LogResponseAction
  - dnsdist::actions::LogResponseAction::LogResponseAction
  - operator()(DNSResponse* response, std::string* ruleresult) const override
  - dnsdist::actions::LogResponseAction::toString
  - dnsdist::actions::LogResponseAction::reload
  - dnsdist::actions::LogResponseAction::reopenLogFile
  - operator()(DNSQuestion* dnsquestion, std::string* ruleresult) const override
  - dnsdist::actions::SetDisableValidationAction::toString
  - operator()(DNSQuestion* dnsquestion, std::string* ruleresult) const override
  - dnsdist::actions::SetSkipCacheAction::toString
  - operator()(DNSResponse* response, std::string* ruleresult) const override
  - dnsdist::actions::SetSkipCacheResponseAction::toString
  - dnsdist::actions::SetTempFailureCacheTTLAction::SetTempFailureCacheTTLAction
  - operator()(DNSQuestion* dnsquestion, std::string* ruleresult) const override
  - dnsdist::actions::SetTempFailureCacheTTLAction::toString
  - dnsdist::actions::SetECSPrefixLengthAction::SetECSPrefixLengthAction
  - operator()(DNSQuestion* dnsquestion, std::string* ruleresult) const override
  - dnsdist::actions::SetECSPrefixLengthAction::toString
  - dnsdist::actions::SetECSOverrideAction::SetECSOverrideAction
  - operator()(DNSQuestion* dnsquestion, std::string* ruleresult) const override
  - dnsdist::actions::SetECSOverrideAction::toString
  - operator()(DNSQuestion* dnsquestion, std::string* ruleresult) const override
  - dnsdist::actions::SetDisableECSAction::toString
  - dnsdist::actions::SetECSAction::SetECSAction
  - dnsdist::actions::SetECSAction::SetECSAction
  - operator()(DNSQuestion* dnsquestion, std::string* ruleresult) const override
  - dnsdist::actions::SetECSAction::toString
  - dnsdist::actions::ProtocolToDNSTap
  - dnsdist::actions::remoteLoggerQueueData
  - dnsdist::actions::DnstapLogAction::DnstapLogAction
  - operator()(DNSQuestion* dnsquestion, std::string* ruleresult) const override
  - dnsdist::actions::DnstapLogAction::toString
  - dnsdist::actions::addMetaDataToProtobuf
  - dnsdist::actions::stripPrefix
  - dnsdist::actions::addTagsToProtobuf
  - dnsdist::actions::addExtendedDNSErrorToProtobuf
  - dnsdist::actions::addMetaDataToProtobuf
  - dnsdist::actions::stripPrefix
  - dnsdist::actions::addTagsToProtobuf
  - dnsdist::actions::addExtendedDNSErrorToProtobuf
  - dnsdist::actions::RemoteLogAction::RemoteLogAction
  - operator()(DNSQuestion* dnsquestion, std::string* ruleresult) const override
  - dnsdist::actions::RemoteLogAction::toString
  - dnsdist::actions::SetTraceAction::SetTraceAction
  - operator()([[maybe_unused]] DNSQuestion* dnsquestion, [[maybe_unused]] std::string*
    ruleresult) const override
  - dnsdist::actions::SetTraceAction::toString
  - dnsdist::actions::SNMPTrapAction::SNMPTrapAction
  - operator()(DNSQuestion* dnsquestion, std::string* ruleresult) const override
  - dnsdist::actions::SNMPTrapAction::toString
  - dnsdist::actions::SetTagAction::SetTagAction
  - operator()(DNSQuestion* dnsquestion, std::string* ruleresult) const override
  - dnsdist::actions::SetTagAction::toString
  - dnsdist::actions::UnsetTagAction::UnsetTagAction
  - operator()(DNSQuestion* dnsquestion, std::string* ruleresult) const override
  - dnsdist::actions::UnsetTagAction::toString
  - dnsdist::actions::DnstapLogResponseAction::DnstapLogResponseAction
  - operator()(DNSResponse* response, std::string* ruleresult) const override
  - dnsdist::actions::DnstapLogResponseAction::toString
  - dnsdist::actions::RemoteLogResponseAction::RemoteLogResponseAction
  - operator()(DNSResponse* response, std::string* ruleresult) const override
  - dnsdist::actions::RemoteLogResponseAction::toString
  - operator()(DNSResponse* response, std::string* ruleresult) const override
  - dnsdist::actions::DropResponseAction::toString
  - operator()(DNSResponse* response, std::string* ruleresult) const override
  - dnsdist::actions::AllowResponseAction::toString
  - dnsdist::actions::DelayResponseAction::DelayResponseAction
  - operator()(DNSResponse* response, std::string* ruleresult) const override
  - dnsdist::actions::DelayResponseAction::toString
  - dnsdist::actions::SNMPTrapResponseAction::SNMPTrapResponseAction
  - operator()(DNSResponse* response, std::string* ruleresult) const override
  - dnsdist::actions::SNMPTrapResponseAction::toString
  - dnsdist::actions::SetTagResponseAction::SetTagResponseAction
  - operator()(DNSResponse* response, std::string* ruleresult) const override
  - dnsdist::actions::SetTagResponseAction::toString
  - dnsdist::actions::UnsetTagResponseAction::UnsetTagResponseAction
  - operator()(DNSResponse* dnsresponse, std::string* ruleresult) const override
  - dnsdist::actions::UnsetTagResponseAction::toString
  - dnsdist::actions::ClearRecordTypesResponseAction::ClearRecordTypesResponseAction
  - operator()(DNSResponse* response, std::string* ruleresult) const override
  - dnsdist::actions::ClearRecordTypesResponseAction::toString
  - dnsdist::actions::ContinueAction::ContinueAction
  - operator()(DNSQuestion* dnsquestion, std::string* ruleresult) const override
  - dnsdist::actions::ContinueAction::toString
  - dnsdist::actions::HTTPStatusAction::HTTPStatusAction
  - operator()([[maybe_unused]] DNSQuestion* dnsquestion, std::string* ruleresult)
    const override
  - dnsdist::actions::HTTPStatusAction::toString
  - dnsdist::actions::KeyValueStoreLookupAction::KeyValueStoreLookupAction
  - operator()(DNSQuestion* dnsquestion, std::string* ruleresult) const override
  - dnsdist::actions::KeyValueStoreLookupAction::toString
  - dnsdist::actions::KeyValueStoreRangeLookupAction::KeyValueStoreRangeLookupAction
  - operator()(DNSQuestion* dnsquestion, std::string* ruleresult) const override
  - dnsdist::actions::KeyValueStoreRangeLookupAction::toString
  - dnsdist::actions::SetMaxReturnedTTLAction::SetMaxReturnedTTLAction
  - operator()(DNSQuestion* dnsquestion, std::string* ruleresult) const override
  - dnsdist::actions::SetMaxReturnedTTLAction::toString
  - dnsdist::actions::SetMaxReturnedTTLResponseAction::SetMaxReturnedTTLResponseAction
  - operator()(DNSResponse* response, std::string* ruleresult) const override
  - dnsdist::actions::SetMaxReturnedTTLResponseAction::toString
  - dnsdist::actions::NegativeAndSOAAction::NegativeAndSOAAction
  - operator()(DNSQuestion* dnsquestion, std::string* ruleresult) const override
  - dnsdist::actions::NegativeAndSOAAction::toString
  - dnsdist::actions::SetProxyProtocolValuesAction::SetProxyProtocolValuesAction
  - operator()(DNSQuestion* dnsquestion, std::string* ruleresult) const override
  - dnsdist::actions::SetProxyProtocolValuesAction::toString
  - dnsdist::actions::SetAdditionalProxyProtocolValueAction::SetAdditionalProxyProtocolValueAction
  - operator()(DNSQuestion* dnsquestion, std::string* ruleresult) const override
  - dnsdist::actions::SetAdditionalProxyProtocolValueAction::toString
  - dnsdist::actions::SetReducedTTLResponseAction::SetReducedTTLResponseAction
  - operator()(DNSResponse* response, std::string* ruleresult) const override
  - dnsdist::actions::SetReducedTTLResponseAction::toString
  - dnsdist::actions::SetExtendedDNSErrorAction::SetExtendedDNSErrorAction
  - operator()(DNSQuestion* dnsQuestion, std::string* ruleresult) const override
  - dnsdist::actions::SetExtendedDNSErrorAction::toString
  - dnsdist::actions::SetExtendedDNSErrorResponseAction::SetExtendedDNSErrorResponseAction
  - operator()(DNSResponse* dnsResponse, std::string* ruleresult) const override
  - dnsdist::actions::SetExtendedDNSErrorResponseAction::toString
  - dnsdist::actions::LimitTTLResponseAction::LimitTTLResponseAction
  - operator()(DNSResponse* dnsResponse, std::string* ruleresult) const override
  - dnsdist::actions::LimitTTLResponseAction::toString
  - dnsdist::actions::getLuaAction
  - dnsdist::actions::getLuaFFIAction
  - dnsdist::actions::getLuaResponseAction
  - dnsdist::actions::getLuaFFIResponseAction
  - dnsdist::actions::getSetTraceAction
  - dnsdist::actions::getRemoteLogAction
  - dnsdist::actions::getRemoteLogResponseAction
  - dnsdist::actions::getDnstapLogAction
  - dnsdist::actions::getDnstapLogResponseAction
  - dnsdist::actions::getKeyValueStoreLookupAction
  - dnsdist::actions::getKeyValueStoreRangeLookupAction
  - dnsdist::actions::getHTTPStatusAction
  - dnsdist::actions::getLimitTTLResponseAction
  - dnsdist::actions::getMinTTLResponseAction
  - dnsdist::actions::getClearRecordTypesResponseAction
  - dnsdist::actions::getContinueAction
  - dnsdist::actions::getNegativeAndSOAAction
  - dnsdist::actions::getRCodeAction
  - dnsdist::actions::getERCodeAction
  - dnsdist::actions::getSetECSAction
  - dnsdist::actions::getSetECSAction
  - dnsdist::actions::getSpoofAction
  - dnsdist::actions::getSpoofAction
  - dnsdist::actions::getSpoofAction
  - dnsdist::actions::getSpoofAction
  - dnsdist::actions::getSpoofSVCAction
  - dnsdist::actions::getSetMaxReturnedTTLAction
  - dnsdist::actions::getSetMaxReturnedTTLResponseAction
  - dnsdist::actions::getSetMaxTTLResponseAction
  - dnsdist::actions::getSetProxyProtocolValuesAction
  - dnsdist::actions::getTeeAction
  source_file: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: d_luaContext
        type: LuaContext
      - name: d_func
        type: LuaActionFFIFunction
      - name: d_initialized
        type: bool
      item_type: struct
      name: PerThreadState
      pos:
        line_end: 728
        line_start: 723
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    - fields:
      - name: d_luaContext
        type: LuaContext
      - name: d_func
        type: LuaResponseActionFFIFunction
      - name: d_initialized
        type: bool
      item_type: struct
      name: PerThreadState
      pos:
        line_end: 851
        line_start: 846
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    - fields:
      - name: d_luaContext
        type: LuaContext
      - name: d_func
        type: LuaActionFFIFunction
      - name: d_initialized
        type: bool
      item_type: struct
      name: PerThreadState
      pos:
        line_end: 728
        line_start: 723
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    - fields:
      - name: d_luaContext
        type: LuaContext
      - name: d_func
        type: LuaResponseActionFFIFunction
      - name: d_initialized
        type: bool
      item_type: struct
      name: PerThreadState
      pos:
        line_end: 851
        line_start: 846
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.cc
    typedefs: []
    union: []
- function_names:
  - getALPNVector
  - shouldDoVerboseLogging
  - shouldDoVerboseLogging
  - OpenSSLFrontendContext::OpenSSLFrontendContext
  - OpenSSLFrontendContext::cleanup
  - sni_server_name_callback
  - OpenSSLSession::OpenSSLSession
  - OpenSSLSession::getNative
  - handleIORequest
  - OpenSSLTLSConnection::OpenSSLTLSConnection
  - OpenSSLTLSConnection::OpenSSLTLSConnection
  - OpenSSLTLSConnection::getAsyncFDs
  - OpenSSLTLSConnection::convertIORequestToIOState
  - ''
  - tryConnect
  - connect
  - tryHandshake
  - doHandshake
  - tryWrite
  - tryRead
  - read
  - write
  - isUsable
  - close
  - getServerNameIndication
  - getNextProtocol
  - getVerifyResult
  - getTLSVersion
  - hasSessionBeenResumed
  - getSessions
  - setSession
  - addNewTicket
  - enableKTLS
  - isClient
  - generateConnectionIndexIfNeeded
  - getConnectionIndex
  - Private
  - createServerSideContext
  - createClientSideContext
  - OpenSSLTLSIOCtx
  - OpenSSLTLSIOCtx
  - OpenSSLTLSIOCtx
  - OpenSSLTLSIOCtx
  - '& operator=(const OpenSSLTLSIOCtx&)'
  - '& operator=(OpenSSLTLSIOCtx&&)'
  - ~OpenSSLTLSIOCtx() override
  - ticketKeyCb
  - ocspStaplingCb
  - newTicketFromServerCb
  - getOpenSSLContext
  - getConnection
  - getClientConnection
  - rotateTicketsKey
  - loadTicketsKeys
  - loadTicketsKey
  - getTicketsKeysCount
  - getName
  - isServerContext
  - alpnServerSelectCallback
  - safe_memory_lock
  - safe_memory_release
  - GnuTLSTicketsKey::GnuTLSTicketsKey
  - GnuTLSTicketsKey::GnuTLSTicketsKey
  - GnuTLSTicketsKey::GnuTLSTicketsKey
  - GnuTLSTicketsKey::content
  - ~GnuTLSTicketsKey()
  - '& getKey() const'
  - GnuTLSSession::GnuTLSSession
  - ~GnuTLSSession() override
  - '& getNative()'
  - GnuTLSConnection
  - GnuTLSConnection
  - newTicketFromServerCb
  - tryConnect
  - connect
  - doHandshake
  - tryHandshake
  - tryWrite
  - tryRead
  - read
  - write
  - isUsable
  - getServerNameIndication
  - getNextProtocol
  - getTLSVersion
  - getVerifyResult
  - hasSessionBeenResumed
  - getSessions
  - setSession
  - close
  - setALPNProtos
  - getAsyncFDs
  - GnuTLSIOCtx::GnuTLSIOCtx
  - GnuTLSIOCtx::GnuTLSIOCtx
  - ~GnuTLSIOCtx() override
  - GnuTLSIOCtx::getConnection
  - GnuTLSIOCtx::getPerThreadCredentials
  - GnuTLSIOCtx::getClientConnection
  - GnuTLSIOCtx::addTicketsKey
  - GnuTLSIOCtx::rotateTicketsKey
  - GnuTLSIOCtx::loadTicketsKey
  - GnuTLSIOCtx::loadTicketsKeys
  - GnuTLSIOCtx::getTicketsKeysCount
  - GnuTLSIOCtx::getName
  - TLSFrontend
  - getTLSContext
  source_file: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields: []
      item_type: struct
      name: Private
      pos:
        line_end: 698
        line_start: 695
        source_file: /src/pdns/pdns/dnsdistdist/tcpiohandler.cc
    typedefs: []
    union: []
- function_names:
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  source_file: /src/pdns/pdns/dnsdistdist/test-dnsparser_cc.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - HealthCheckData
  - updateLatencyMetrics
  - getHealthCheckProtocol
  - getLoggerFromData
  - validateHealthCheckResponseWithCallback
  - handleResponse
  - HealthCheckQuerySender::HealthCheckQuerySender
  - HealthCheckQuerySender::HealthCheckQuerySender
  - HealthCheckQuerySender::HealthCheckQuerySender
  - '& operator=(const HealthCheckQuerySender&)'
  - '& operator=(HealthCheckQuerySender&&)'
  - ~HealthCheckQuerySender() override
  - HealthCheckQuerySender::active
  - HealthCheckQuerySender::handleResponse
  - HealthCheckQuerySender::handleXFRResponse
  - HealthCheckQuerySender::notifyIOError
  - healthCheckUDPCallback
  - healthCheckTCPCallback
  - queueHealthCheck
  - handleQueuedHealthChecks
  source_file: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc
  types:
    enum:
    - enumerators:
      - name: WritingQuery
      - name: ReadingResponse
      - name: ReadingResponseSize
      item_type: enum
      name: TCPState
      pos:
        line_end: 39
        line_start: 34
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc
    preproc_defs: []
    structs:
    - fields:
      - name: d_ds
        type: std::shared_ptr<DownstreamState>
      - name: '& d_mplexer'
        type: FDMultiplexer
      - name: d_tcpHandler
        type: std::unique_ptr<TCPIOHandler>
      - name: d_ioState
        type: std::unique_ptr<IOStateHandler>
      - name: d_buffer
        type: PacketBuffer
      - name: d_udpSocket
        type: Socket
      - name: d_checkName
        type: DNSName
      - name: d_elapsed
        type: StopWatch
      - name: d_ttd
        type: timeval
      - name: d_bufferPos
        type: size_t
      - name: d_checkType
        type: uint16_t
      - name: d_checkClass
        type: uint16_t
      - name: d_queryID
        type: uint16_t
      - name: d_tcpState
        type: TCPState
      - name: d_initial
        type: bool
      item_type: struct
      name: HealthCheckData
      pos:
        line_end: 61
        line_start: 32
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.cc
    typedefs: []
    union: []
- function_names:
  - dnsdist::getInternalQueryFromDQ
  - dnsdist::getInternalQueryFromDQ
  source_file: /src/pdns/pdns/dnsdistdist/dnsdist-internal-queries.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - pdns::trace::AnyValue::encode
  - pdns::trace::AnyValue::decode
  - pdns::trace::AnyValue::toLogString
  - pdns::trace::EntityRef::encode
  - pdns::trace::EntityRef::decode
  - pdns::trace::KeyValue::encode
  - pdns::trace::Resource::encode
  - pdns::trace::Resource::decode
  - pdns::trace::InstrumentationScope::encode
  - pdns::trace::InstrumentationScope::decode
  - pdns::trace::Status::encode
  - pdns::trace::Status::decode
  - Span::Event::encode(protozero::pbf_writer& writer) const
  - Span::Event::decode(protozero::pbf_reader& reader)
  - Span::Link::encode(protozero::pbf_writer& writer) const
  - Span::Link::decode(protozero::pbf_reader& reader)
  - pdns::trace::Span::encode
  - pdns::trace::Span::decode
  - pdns::trace::ScopeSpans::encode
  - pdns::trace::ScopeSpans::decode
  - pdns::trace::ResourceSpans::encode
  - pdns::trace::ResourceSpans::decode
  - pdns::trace::TracesData::encode
  - pdns::trace::TracesData::decode
  - pdns::trace::KeyValue::decode
  - pdns::trace::extractOTraceIDs
  - pdns::trace::extractOTraceIDs
  - pdns::trace::SpanID::toLogString
  - pdns::trace::TraceID::toLogString
  - pdns::trace::AnyValue::encode
  - pdns::trace::AnyValue::decode
  - pdns::trace::AnyValue::toLogString
  - pdns::trace::EntityRef::encode
  - pdns::trace::EntityRef::decode
  - pdns::trace::KeyValue::encode
  - pdns::trace::Resource::encode
  - pdns::trace::Resource::decode
  - pdns::trace::InstrumentationScope::encode
  - pdns::trace::InstrumentationScope::decode
  - pdns::trace::Status::encode
  - pdns::trace::Status::decode
  - Span::Event::encode(protozero::pbf_writer& writer) const
  - Span::Event::decode(protozero::pbf_reader& reader)
  - Span::Link::encode(protozero::pbf_writer& writer) const
  - Span::Link::decode(protozero::pbf_reader& reader)
  - pdns::trace::Span::encode
  - pdns::trace::Span::decode
  - pdns::trace::ScopeSpans::encode
  - pdns::trace::ScopeSpans::decode
  - pdns::trace::ResourceSpans::encode
  - pdns::trace::ResourceSpans::decode
  - pdns::trace::TracesData::encode
  - pdns::trace::TracesData::decode
  - pdns::trace::KeyValue::decode
  - pdns::trace::extractOTraceIDs
  - pdns::trace::extractOTraceIDs
  - pdns::trace::SpanID::toLogString
  - pdns::trace::TraceID::toLogString
  source_file: /src/pdns/pdns/dnsdistdist/protozero-trace.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - openssl_pthreads_locking_callback
  - openssl_pthreads_id_callback
  - openssl_thread_setup
  - openssl_thread_cleanup
  - registerOpenSSLUser
  - unregisterOpenSSLUser
  - libssl_load_provider
  - libssl_load_engine
  - libssl_get_ticket_key_callback_data
  - libssl_set_ticket_key_callback_data
  - libssl_ticket_key_callback
  - libssl_server_name_callback
  - libssl_info_callback
  - libssl_set_error_counters_callback
  - libssl_ocsp_stapling_callback
  - libssl_validate_ocsp_response
  - libssl_load_ocsp_responses
  - libssl_generate_ocsp_response
  - libssl_get_last_key_type
  - operator()(STACK_OF(GENERAL_NAME)* ptr) const noexcept
  - get_names_from_certificate
  - get_names_from_last_certificate
  - libssl_tls_version_from_string
  - libssl_tls_version_to_string
  - libssl_set_min_tls_version
  - OpenSSLTLSTicketKeysRing::OpenSSLTLSTicketKeysRing
  - OpenSSLTLSTicketKeysRing::~OpenSSLTLSTicketKeysRing()
  - OpenSSLTLSTicketKeysRing::addKey
  - OpenSSLTLSTicketKeysRing::getEncryptionKey
  - OpenSSLTLSTicketKeysRing::getDecryptionKey
  - OpenSSLTLSTicketKeysRing::getKeysCount
  - OpenSSLTLSTicketKeysRing::loadTicketsKeys
  - OpenSSLTLSTicketKeysRing::loadTicketsKey
  - OpenSSLTLSTicketKeysRing::rotateTicketsKey
  - OpenSSLTLSTicketKey::OpenSSLTLSTicketKey
  - OpenSSLTLSTicketKey::OpenSSLTLSTicketKey
  - OpenSSLTLSTicketKey::OpenSSLTLSTicketKey
  - OpenSSLTLSTicketKey::~OpenSSLTLSTicketKey()
  - OpenSSLTLSTicketKey::nameMatches
  - OpenSSLTLSTicketKey::content
  - OpenSSLTLSTicketKey::encrypt
  - OpenSSLTLSTicketKey::decrypt
  - getNewServerContext
  - mergeNewCertificateAndKey
  - libssl_init_server_context_no_sni
  - libssl_init_server_context
  - libssl_key_log_file_callback
  - libssl_set_key_log_file
  - libssl_set_alpn_select_callback
  - libssl_set_alpn_protos
  - libssl_get_error_string
  source_file: /src/pdns/pdns/dnsdistdist/libssl.cc
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: DNSDIST_ENABLE_LIBSSL_ENGINE
      pos:
        line_end: 17
        line_start: 16
        source_file: /src/pdns/pdns/dnsdistdist/libssl.cc
      type_or_value: '1'
    structs:
    - fields: []
      item_type: struct
      name: StackOfNamesDeleter
      pos:
        line_end: 554
        line_start: 549
        source_file: /src/pdns/pdns/dnsdistdist/libssl.cc
    typedefs: []
    union: []
- function_names: []
  source_file: /src/pdns/pdns/dnsdistdist/dnsdist-console-completion.hh
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: name
        type: std::string
      - name: function
        type: bool
      - name: parameters
        type: std::string
      - name: description
        type: std::string
      - name: toString() const
        type: std::string
      item_type: struct
      name: ConsoleKeyword
      pos:
        line_end: 39
        line_start: 31
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-console-completion.hh
    - fields:
      - name: name
        type: std::string
      - name: function
        type: bool
      - name: parameters
        type: std::string
      - name: description
        type: std::string
      - name: toString() const
        type: std::string
      item_type: struct
      name: ConsoleKeyword
      pos:
        line_end: 39
        line_start: 31
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-console-completion.hh
    typedefs: []
    union: []
- function_names:
  - DNSAction::typeFromString
  - DNSAction::typeToString
  source_file: /src/pdns/pdns/dnsdistdist/dnsdist-actions.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - DOH3Frontend
  - DOH3Frontend
  - '& operator=(const DOH3Frontend&)'
  - '& operator=(DOH3Frontend&&)'
  - '& getLogger()'
  - DOH3Unit
  - DOH3Unit
  - '& operator=(const DOH3Unit&)'
  - DOH3Frontend
  - setup
  source_file: /src/pdns/pdns/dnsdistdist/doh3.hh
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: setup()
        type: void
      - name: reloadCertificates()
        type: void
      - name: d_logger
        type: std::shared_ptr<const Logr::Logger>
      - name: d_responsesMap
        type: std::shared_ptr<std::vector<std::shared_ptr<DOHResponseMapEntry>>>
      - name: d_server_config
        type: std::unique_ptr<DOH3ServerConfig>
      - name: d_local
        type: ComboAddress
      - name: d_quicheParams
        type: dnsdist::doq::QuicheParams
      - name: d_doh3UnsupportedVersionErrors
        type: pdns::stat_t
      - name: d_doh3InvalidTokensReceived
        type: pdns::stat_t
      - name: d_validResponses
        type: pdns::stat_t
      - name: d_errorResponses
        type: pdns::stat_t
      item_type: struct
      name: DOH3Frontend
      pos:
        line_end: 86
        line_start: 52
        source_file: /src/pdns/pdns/dnsdistdist/doh3.hh
    - fields:
      - name: getHTTPPath() const
        type: std::string
      - name: getHTTPQueryString() const
        type: std::string
      - name: getHTTPHost() const
        type: std::string
      - name: getHTTPScheme() const
        type: std::string
      - name: '& getHTTPHeaders() const'
        type: dnsdist::doh3::h3_headers_t
      - name: setHTTPResponse(uint16_t statusCode, PacketBuffer&& body, const std::string&
          contentType = "")
        type: void
      - name: ids
        type: InternalQueryState
      - name: query
        type: PacketBuffer
      - name: response
        type: PacketBuffer
      - name: serverConnID
        type: PacketBuffer
      - name: headers
        type: dnsdist::doh3::h3_headers_t
      - name: downstream
        type: std::shared_ptr<DownstreamState>
      - name: sni
        type: std::shared_ptr<const std::string>
      - name: d_contentTypeOut
        type: std::string
      - name: '* dsc'
        type: DOH3ServerConfig
      - name: streamID
        type: uint64_t
      - name: proxyProtocolPayloadSize
        type: size_t
      - name: status_code
        type: uint16_t
      - name: tcp
        type: bool
      item_type: struct
      name: DOH3Unit
      pos:
        line_end: 120
        line_start: 88
        source_file: /src/pdns/pdns/dnsdistdist/doh3.hh
    - fields:
      - name: getHTTPPath() const
        type: std::string
      - name: getHTTPQueryString() const
        type: std::string
      - name: getHTTPHost() const
        type: std::string
      - name: getHTTPScheme() const
        type: std::string
      - name: '& getHTTPHeaders() const'
        type: dnsdist::doh3::h3_headers_t
      - name: setHTTPResponse(uint16_t, PacketBuffer&&, const std::string&)
        type: void
      item_type: struct
      name: DOH3Unit
      pos:
        line_end: 140
        line_start: 132
        source_file: /src/pdns/pdns/dnsdistdist/doh3.hh
    - fields: []
      item_type: struct
      name: DOH3Frontend
      pos:
        line_end: 148
        line_start: 142
        source_file: /src/pdns/pdns/dnsdistdist/doh3.hh
    typedefs: []
    union: []
- function_names:
  - dnsdist::xsk::XskResponderThread
  - dnsdist::xsk::XskIsQueryAcceptable
  - dnsdist::xsk::XskRouter
  - dnsdist::xsk::XskClientThread
  - dnsdist::xsk::getDestinationMap
  - dnsdist::xsk::addDestinationAddress
  - dnsdist::xsk::removeDestinationAddress
  - dnsdist::xsk::clearDestinationAddresses
  - dnsdist::xsk::XskResponderThread
  - dnsdist::xsk::XskIsQueryAcceptable
  - dnsdist::xsk::XskRouter
  - dnsdist::xsk::XskClientThread
  - dnsdist::xsk::getDestinationMap
  - dnsdist::xsk::addDestinationAddress
  - dnsdist::xsk::removeDestinationAddress
  - dnsdist::xsk::clearDestinationAddresses
  source_file: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - ConcurrentConnectionManager::ConcurrentConnectionManager
  - ConcurrentConnectionManager::setMaxConcurrentConnections
  - ConcurrentConnectionManager::getMaxConcurrentConnections
  - ConcurrentConnectionManager::registerConnection
  - ConcurrentConnectionManager::releaseConnection
  source_file: /src/pdns/pdns/dnsdistdist/connection-management.hh
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: d_maxConcurrentConnections
        type: size_t
      - name: d_currentConnectionsCount
        type: size_t
      item_type: struct
      name: Data
      pos:
        line_end: 63
        line_start: 59
        source_file: /src/pdns/pdns/dnsdistdist/connection-management.hh
    typedefs: []
    union: []
- function_names: []
  source_file: /src/pdns/pdns/dnsdistdist/bench-dnsdist-action-rcode.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - ConsoleConnection::ConsoleConnection
  - ConsoleConnection::ConsoleConnection
  - ConsoleConnection::ConsoleConnection
  - '& operator=(const ConsoleConnection&)'
  - '& operator=(ConsoleConnection&&)'
  - ~ConsoleConnection()
  - ConsoleConnection::getFD
  - '& getClient() const'
  - feedConfigDelta
  - dnsdist::console::getConfigurationDelta
  - dnsdist::console::getConfigurationDelta
  - historyFile
  - getMsgLen32
  - putMsgLen32
  - sendMessageToServer
  - dnsdist::console::doClient
  - dnsdist::console::getNextConsoleLine
  - dnsdist::console::getNextConsoleLine
  - dnsdist::console::doConsole
  - dnsdist::console::doClient
  - dnsdist::console::getNextConsoleLine
  - dnsdist::console::getNextConsoleLine
  - dnsdist::console::doConsole
  - dnsdist::console::clearHistory
  - dnsdist::console::controlClientThread
  - dnsdist::console::controlThread
  - dnsdist::console::clearHistory
  - dnsdist::console::controlClientThread
  - dnsdist::console::controlThread
  source_file: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc
  types:
    enum:
    - enumerators:
      - name: Valid
        value: '0'
      - name: TooLarge
      - name: ConnectionClosed
      item_type: enum
      name: ConsoleCommandResult
      pos:
        line_end: 144
        line_start: 139
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-console.cc
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - handleResponseSent
  - handleResponseSent
  - processResponse
  - processQuery
  - processRulesResult
  - processQueryAfterRules
  - processResponseAfterRules
  - applyRulesToResponse
  - handleTimeoutResponseRules
  - handleServerStateChange
  - sendUDPResponse
  - assignOutgoingUDPQueryToBackend
  - dnsdist::xsk::XskProcessQuery
  - dnsdist::xsk::XskProcessQuery
  - processResponderPacket
  - responderThread
  - checkQueryHeaders
  - checkDNSCryptQuery
  - responseContentMatches
  - UDPTCPCrossQuerySender::UDPTCPCrossQuerySender
  - UDPTCPCrossQuerySender::UDPTCPCrossQuerySender
  - '& operator=(const UDPTCPCrossQuerySender&)'
  - UDPTCPCrossQuerySender::UDPTCPCrossQuerySender
  - '& operator=(UDPTCPCrossQuerySender&&)'
  - ~UDPTCPCrossQuerySender() override
  - UDPTCPCrossQuerySender::active
  - UDPTCPCrossQuerySender::handleResponse
  - UDPTCPCrossQuerySender::handleXFRResponse
  - UDPTCPCrossQuerySender::notifyIOError
  - UDPCrossProtocolQuery::UDPCrossProtocolQuery
  - UDPCrossProtocolQuery::UDPCrossProtocolQuery
  - UDPCrossProtocolQuery::UDPCrossProtocolQuery
  - '& operator=(const UDPCrossProtocolQuery&)'
  - UDPCrossProtocolQuery::UDPCrossProtocolQuery
  - '& operator=(UDPCrossProtocolQuery&&)'
  - ~UDPCrossProtocolQuery() override
  - UDPCrossProtocolQuery::getTCPQuerySender
  - getUDPCrossProtocolQueryFromDQ
  source_file: /src/pdns/pdns/dnsdistdist/benchmarkrunner.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - test_packetcache_simple
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - threadMangler
  - threadReader
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - create_shuffle_response
  - test_packetcache_shuffle
  - BOOST_AUTO_TEST_CASE
  source_file: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc
  types:
    enum:
    - enumerators:
      - name: PACKET_CACHE_TEST_SIMPLE
      - name: PACKET_CACHE_TEST_CNAME
      - name: PACKET_CACHE_TEST_OTHER_QNAME_FOLLOWS
      - name: PACKET_CACHE_TEST_EDNS
      - name: PACKET_CACHE_TEST_OTHER_QTYPE_FOLLOWS
      item_type: enum
      name: PacketCacheShuffleTestType
      pos:
        line_end: 1375
        line_start: 1368
        source_file: /src/pdns/pdns/dnsdistdist/test-dnsdistpacketcache_cc.cc
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - initConfiguration
  - TestFixture
  - ~TestFixture()
  - TestFixture
  - TestFixture
  - '& operator=(const TestFixture&)'
  - '& operator=(TestFixture&&)'
  - BOOST_FIXTURE_TEST_CASE
  - BOOST_FIXTURE_TEST_CASE
  - BOOST_FIXTURE_TEST_CASE
  - BOOST_FIXTURE_TEST_CASE
  - BOOST_FIXTURE_TEST_CASE
  - BOOST_FIXTURE_TEST_CASE
  - BOOST_FIXTURE_TEST_CASE
  - BOOST_FIXTURE_TEST_CASE
  - BOOST_FIXTURE_TEST_CASE
  - BOOST_FIXTURE_TEST_CASE
  source_file: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields: []
      item_type: struct
      name: TestFixture
      pos:
        line_end: 62
        line_start: 48
        source_file: /src/pdns/pdns/dnsdistdist/test-dnsdist-concurrent-connections.cc
    typedefs: []
    union: []
- function_names:
  - DynBPFFilter::DynBPFFilter
  - ~DynBPFFilter()
  - DynBPFFilter::excludeRange
  - DynBPFFilter::includeRange
  - DynBPFFilter::BlockEntry
  source_file: /src/pdns/pdns/dnsdistdist/dnsdist-dynbpf.hh
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: d_addr
        type: ComboAddress
      - name: d_until
        type: struct timespec
      item_type: struct
      name: BlockEntry
      pos:
        line_end: 63
        line_start: 55
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-dynbpf.hh
    - fields:
      - name: d_entries
        type: container_t
      - name: d_bpf
        type: std::shared_ptr<BPFFilter>
      - name: d_excludedSubnets
        type: NetmaskGroup
      item_type: struct
      name: Data
      pos:
        line_end: 74
        line_start: 69
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-dynbpf.hh
    typedefs:
    - item_type: typedef
      name: container_t
      pos:
        line_end: 68
        line_start: 64
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-dynbpf.hh
      type: "multi_index_container<BlockEntry,\n                                       boost::multi_index::indexed_by<\n
        \                                        boost::multi_index::ordered_unique<boost::multi_index::member<BlockEntry,
        ComboAddress, &BlockEntry::d_addr>, ComboAddress::addressOnlyLessThan>,\n
        \                                        boost::multi_index::ordered_non_unique<boost::multi_index::member<BlockEntry,
        struct timespec, &BlockEntry::d_until>>>>"
    union: []
- function_names:
  - FrameStreamLogger::FrameStreamLogger
  - FrameStreamLogger::FrameStreamLogger
  - '& operator=(const FrameStreamLogger&)'
  - '& operator=(FrameStreamLogger&&)'
  - FrameStreamLogger::address
  - FrameStreamLogger::name
  - FrameStreamLogger::toString
  - FrameStreamLogger::getStats
  - FrameStreamLogger::FrameStreamLogger
  - FrameStreamLogger::FrameStreamLogger
  - '& operator=(const FrameStreamLogger&)'
  - '& operator=(FrameStreamLogger&&)'
  source_file: /src/pdns/pdns/dnsdistdist/fstrm_logger.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - StatNode::Stat
  - '& operator+=(const Stat& rhs)'
  - StatNode::empty
  - StatNode::size
  source_file: /src/pdns/pdns/dnsdistdist/statnode.hh
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: queries
        type: uint64_t
      - name: noerrors
        type: uint64_t
      - name: nxdomains
        type: uint64_t
      - name: servfails
        type: uint64_t
      - name: drops
        type: uint64_t
      - name: bytes
        type: uint64_t
      - name: hits
        type: uint64_t
      - name: remotes
        type: remotes_t
      item_type: struct
      name: Stat
      pos:
        line_end: 57
        line_start: 30
        source_file: /src/pdns/pdns/dnsdistdist/statnode.hh
    typedefs: []
    union: []
- function_names:
  - getCache
  - getECS
  - getZeroScope
  - isConsistent
  - isTCPOnly
  source_file: /src/pdns/pdns/dnsdistdist/dnsdist-server-pool.hh
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: setECS(bool useECS)
        type: void
      - name: setZeroScope(bool enabled)
        type: void
      - name: poolLoad() const
        type: size_t
      - name: countServers(bool upOnly) const
        type: size_t
      - name: hasAtLeastOneServerAvailable() const
        type: bool
      - name: shouldKeepStaleData() const
        type: bool
      - name: '& getServers() const'
        type: ServerPolicy::NumberedServerVector
      - name: addServer(std::shared_ptr<DownstreamState>& server)
        type: void
      - name: removeServer(std::shared_ptr<DownstreamState>& server)
        type: void
      - name: packetCache
        type: std::shared_ptr<DNSDistPacketCache>
      - name: policy
        type: std::shared_ptr<ServerPolicy>
      - name: updateConsistency()
        type: void
      - name: d_servers
        type: ServerPolicy::NumberedServerVector
      - name: d_useECS
        type: bool
      - name: d_zeroScope
        type: bool
      - name: d_tcpOnly
        type: bool
      - name: d_isConsistent
        type: bool
      item_type: struct
      name: ServerPool
      pos:
        line_end: 87
        line_start: 28
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-server-pool.hh
    typedefs: []
    union: []
- function_names: []
  source_file: /src/pdns/pdns/dnsdistdist/cdb.hh
  types:
    enum:
    - enumerators:
      - name: SearchSuffix
      - name: SearchKey
      - name: SearchAll
      item_type: enum
      name: SearchType
      pos:
        line_end: 52
        line_start: 52
        source_file: /src/pdns/pdns/dnsdistdist/cdb.hh
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/pdns/pdns/dnsdistdist/coverage.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/pdns/pdns/dnsdistdist/dnsdist-edns.hh
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: error
        type: EDNSExtendedError
      - name: clearExisting
        type: bool
      item_type: struct
      name: SetExtendedDNSErrorOperation
      pos:
        line_end: 36
        line_start: 32
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-edns.hh
    - fields:
      - name: error
        type: EDNSExtendedError
      - name: clearExisting
        type: bool
      item_type: struct
      name: SetExtendedDNSErrorOperation
      pos:
        line_end: 36
        line_start: 32
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-edns.hh
    typedefs: []
    union: []
- function_names:
  - MaxQPSIPRule::MaxQPSIPRule
  - MaxQPSIPRule::clear
  - MaxQPSIPRule::cleanup
  - MaxQPSIPRule::cleanupIfNeeded
  - MaxQPSIPRule::matches
  - MaxQPSIPRule::toString
  - MaxQPSIPRule::getEntriesCount
  - MaxQPSIPRule::getNumberOfShards
  - MaxQPSIPRule::Entry
  - MaxQPSRule::MaxQPSRule
  - MaxQPSRule::MaxQPSRule
  - MaxQPSRule::matches
  - MaxQPSRule::toString
  - NetmaskGroupRule::NetmaskGroupRule
  - NetmaskGroupRule::matches
  - NetmaskGroupRule::toString
  - TimedIPSetRule::IPv6
  - operator==(const IPv6& rhs) const
  - TimedIPSetRule::TimedIPSetRule
  - ~TimedIPSetRule()
  - TimedIPSetRule::matches
  - TimedIPSetRule::add
  - TimedIPSetRule::remove
  - TimedIPSetRule::clear
  - TimedIPSetRule::cleanup
  - TimedIPSetRule::toString
  - operator()(const IPv6& ip) const
  - AllRule::AllRule
  - AllRule::matches
  - AllRule::toString
  - DNSSECRule::DNSSECRule
  - DNSSECRule::matches
  - DNSSECRule::toString
  - AndRule::AndRule
  - AndRule::matches
  - AndRule::toString
  - OrRule::OrRule
  - OrRule::matches
  - OrRule::toString
  - RegexRule::RegexRule
  - RegexRule::matches
  - RegexRule::toString
  - RE2Rule::RE2Rule
  - RE2Rule::matches
  - RE2Rule::toString
  - RE2Rule::RE2Rule
  - RE2Rule::matches
  - RE2Rule::toString
  - SNIRule::SNIRule
  - SNIRule::matches
  - SNIRule::toString
  - SuffixMatchNodeRule::SuffixMatchNodeRule
  - SuffixMatchNodeRule::matches
  - SuffixMatchNodeRule::toString
  - QNameRule::QNameRule
  - QNameRule::matches
  - QNameRule::toString
  - QNameSetRule::QNameSetRule
  - QNameSetRule::matches
  - QNameSetRule::toString
  - QTypeRule::QTypeRule
  - QTypeRule::matches
  - QTypeRule::toString
  - QClassRule::QClassRule
  - QClassRule::matches
  - QClassRule::toString
  - OpcodeRule::OpcodeRule
  - OpcodeRule::matches
  - OpcodeRule::toString
  - DSTPortRule::DSTPortRule
  - DSTPortRule::matches
  - DSTPortRule::toString
  - TCPRule::TCPRule
  - TCPRule::matches
  - TCPRule::toString
  - NotRule::NotRule
  - NotRule::matches
  - NotRule::toString
  - RecordsCountRule::RecordsCountRule
  - RecordsCountRule::matches
  - RecordsCountRule::toString
  - RecordsTypeCountRule::RecordsTypeCountRule
  - RecordsTypeCountRule::matches
  - RecordsTypeCountRule::toString
  - TrailingDataRule::TrailingDataRule
  - TrailingDataRule::matches
  - TrailingDataRule::toString
  - QNameLabelsCountRule::QNameLabelsCountRule
  - QNameLabelsCountRule::matches
  - QNameLabelsCountRule::toString
  - QNameWireLengthRule::QNameWireLengthRule
  - QNameWireLengthRule::matches
  - QNameWireLengthRule::toString
  - RCodeRule::RCodeRule
  - RCodeRule::matches
  - RCodeRule::toString
  - ERCodeRule::ERCodeRule
  - ERCodeRule::matches
  - ERCodeRule::toString
  - EDNSVersionRule::EDNSVersionRule
  - EDNSVersionRule::matches
  - EDNSVersionRule::toString
  - EDNSOptionRule::EDNSOptionRule
  - EDNSOptionRule::matches
  - EDNSOptionRule::toString
  - RDRule::RDRule
  - RDRule::matches
  - RDRule::toString
  - ProbaRule::ProbaRule
  - ProbaRule::matches
  - ProbaRule::toString
  - TagRule::TagRule
  - TagRule::matches
  - TagRule::toString
  - PoolAvailableRule::PoolAvailableRule
  - PoolAvailableRule::matches
  - PoolAvailableRule::toString
  - PoolOutstandingRule::PoolOutstandingRule
  - PoolOutstandingRule::matches
  - PoolOutstandingRule::toString
  - KeyValueStoreLookupRule::KeyValueStoreLookupRule
  - KeyValueStoreLookupRule::matches
  - KeyValueStoreLookupRule::toString
  - KeyValueStoreRangeLookupRule::KeyValueStoreRangeLookupRule
  - KeyValueStoreRangeLookupRule::matches
  - KeyValueStoreRangeLookupRule::toString
  - LuaRule::LuaRule
  - LuaRule::matches
  - LuaRule::toString
  - LuaFFIRule::LuaFFIRule
  - LuaFFIRule::matches
  - LuaFFIRule::toString
  - LuaFFIPerThreadRule::LuaFFIPerThreadRule
  - LuaFFIPerThreadRule::matches
  - LuaFFIPerThreadRule::toString
  - ProxyProtocolValueRule::ProxyProtocolValueRule
  - ProxyProtocolValueRule::matches
  - ProxyProtocolValueRule::toString
  - PayloadSizeRule::PayloadSizeRule
  - PayloadSizeRule::matches
  - PayloadSizeRule::toString
  - IncomingProtocolRule::IncomingProtocolRule
  - IncomingProtocolRule::matches
  - IncomingProtocolRule::toString
  source_file: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh
  types:
    enum:
    - enumerators:
      - name: equal
      - name: smaller
      - name: greaterOrEqual
      - name: greater
      - name: smallerOrEqual
      item_type: enum
      name: Comparisons
      pos:
        line_end: 1453
        line_start: 1446
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh
    preproc_defs: []
    structs:
    - fields: []
      item_type: struct
      name: HashedTag
      pos:
        line_end: 168
        line_start: 166
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh
    - fields: []
      item_type: struct
      name: SequencedTag
      pos:
        line_end: 171
        line_start: 169
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh
    - fields:
      - name: d_limiter
        type: BasicQPSLimiter
      - name: d_addr
        type: ComboAddress
      item_type: struct
      name: Entry
      pos:
        line_end: 180
        line_start: 172
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh
    - fields:
      - name: a
        type: uint64_t
      item_type: struct
      name: IPv6
      pos:
        line_end: 273
        line_start: 261
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh
    - fields: []
      item_type: struct
      name: IPv6Hash
      pos:
        line_end: 393
        line_start: 385
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh
    - fields:
      - name: d_luaContext
        type: LuaContext
      - name: d_func
        type: dnsdist::selectors::LuaSelectorFFIFunction
      - name: d_initialized
        type: bool
      item_type: struct
      name: PerThreadState
      pos:
        line_end: 1400
        line_start: 1395
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-rules-factory.hh
    typedefs: []
    union: []
- function_names:
  - dnsdist::QueryCount::Configuration
  - dnsdist::QueryCount::Configuration
  source_file: /src/pdns/pdns/dnsdistdist/dnsdist-query-count.hh
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: d_filter
        type: Filter
      - name: d_enabled
        type: bool
      item_type: struct
      name: Configuration
      pos:
        line_end: 41
        line_start: 35
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-query-count.hh
    - fields:
      - name: d_filter
        type: Filter
      - name: d_enabled
        type: bool
      item_type: struct
      name: Configuration
      pos:
        line_end: 41
        line_start: 35
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-query-count.hh
    typedefs: []
    union: []
- function_names:
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  source_file: /src/pdns/pdns/dnsdistdist/test-dnsdistserverpool.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - gettime
  - gettime
  source_file: /src/pdns/pdns/dnsdistdist/gettime.cc
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: CLOCK_MONOTONIC_RAW
      pos:
        line_end: 29
        line_start: 28
        source_file: /src/pdns/pdns/dnsdistdist/gettime.cc
      type_or_value: CLOCK_MONOTONIC
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.hh
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: serial
        type: uint32_t
      - name: refresh
        type: uint32_t
      - name: retry
        type: uint32_t
      - name: expire
        type: uint32_t
      - name: minimum
        type: uint32_t
      item_type: struct
      name: SOAParams
      pos:
        line_end: 59
        line_start: 52
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.hh
    - fields:
      - name: metas
        type: std::vector<std::pair<std::string, ProtoBufMetaKey>>
      - name: tagsToExport
        type: std::optional<std::unordered_set<std::string>>
      - name: tagsPrefixesToExport
        type: std::unordered_set<std::string>
      - name: alterQueryFunc
        type: std::optional<ProtobufAlterFunction>
      - name: alterResponseFunc
        type: std::optional<ProtobufAlterResponseFunction>
      - name: logger
        type: std::shared_ptr<RemoteLoggerInterface>
      - name: serverID
        type: std::string
      - name: ipEncryptKey
        type: std::string
      - name: ipEncryptMethod
        type: std::string
      - name: exportExtendedErrorsToMeta
        type: std::optional<std::string>
      - name: includeCNAME
        type: bool
      - name: delay
        type: bool
      - name: useServerID
        type: bool
      - name: tagsExportKeyOnly
        type: bool
      - name: tagsStripPrefixes
        type: bool
      item_type: struct
      name: RemoteLogActionConfiguration
      pos:
        line_end: 123
        line_start: 106
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.hh
    - fields:
      - name: remote_loggers
        type: std::vector<std::shared_ptr<RemoteLoggerInterface>>
      - name: traceparentOptionCode
        type: std::uint16_t
      - name: value
        type: bool
      - name: useIncomingTraceparent
        type: bool
      - name: stripIncomingTraceparent
        type: bool
      - name: sendDownstreamTraceparent
        type: bool
      item_type: struct
      name: SetTraceActionConfiguration
      pos:
        line_end: 137
        line_start: 129
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.hh
    - fields:
      - name: serial
        type: uint32_t
      - name: refresh
        type: uint32_t
      - name: retry
        type: uint32_t
      - name: expire
        type: uint32_t
      - name: minimum
        type: uint32_t
      item_type: struct
      name: SOAParams
      pos:
        line_end: 59
        line_start: 52
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.hh
    - fields:
      - name: metas
        type: std::vector<std::pair<std::string, ProtoBufMetaKey>>
      - name: tagsToExport
        type: std::optional<std::unordered_set<std::string>>
      - name: tagsPrefixesToExport
        type: std::unordered_set<std::string>
      - name: alterQueryFunc
        type: std::optional<ProtobufAlterFunction>
      - name: alterResponseFunc
        type: std::optional<ProtobufAlterResponseFunction>
      - name: logger
        type: std::shared_ptr<RemoteLoggerInterface>
      - name: serverID
        type: std::string
      - name: ipEncryptKey
        type: std::string
      - name: ipEncryptMethod
        type: std::string
      - name: exportExtendedErrorsToMeta
        type: std::optional<std::string>
      - name: includeCNAME
        type: bool
      - name: delay
        type: bool
      - name: useServerID
        type: bool
      - name: tagsExportKeyOnly
        type: bool
      - name: tagsStripPrefixes
        type: bool
      item_type: struct
      name: RemoteLogActionConfiguration
      pos:
        line_end: 123
        line_start: 106
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.hh
    - fields:
      - name: remote_loggers
        type: std::vector<std::shared_ptr<RemoteLoggerInterface>>
      - name: traceparentOptionCode
        type: std::uint16_t
      - name: value
        type: bool
      - name: useIncomingTraceparent
        type: bool
      - name: stripIncomingTraceparent
        type: bool
      - name: sendDownstreamTraceparent
        type: bool
      item_type: struct
      name: SetTraceActionConfiguration
      pos:
        line_end: 137
        line_start: 129
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-actions-factory.hh
    typedefs: []
    union: []
- function_names: []
  source_file: /src/pdns/pdns/dnsdistdist/dnsdist-healthchecks.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - stringtok
  - rfc1982LessThan
  - rfc1982LessThanOrEqual
  - vstringtok
  - writen2
  - stringerror
  - CPUTime::start
  - CPUTime::ndiff
  - DTime::DTime
  - DTime::DTime
  - '& operator=(const DTime &dt)'
  - DTime::udiffNoReset
  - DTime::setTimeval
  - DTime::getTimeval
  - DTime::time
  - DTime::set
  - DTime::udiff
  - toLowerInPlace
  - toLower
  - toLowerCanonic
  - toUpper
  - getTime
  - unixDie
  - makeFloat
  - uSec
  - operator<(const struct timeval& lhs, const struct timeval& rhs)
  - operator<=(const struct timeval& lhs, const struct timeval& rhs)
  - operator<(const struct timespec& lhs, const struct timespec& rhs)
  - pdns_ilexicographical_compare_three_way
  - pdns_ilexicographical_compare
  - pdns_iequals
  - pdns_iequals_ch
  - operator()(const string& a, const string& b) const
  - operator() (const std::string& lhs, const std::string& rhs) const
  - operator()(const pair<string, uint16_t>& a, const pair<string, uint16_t>& b) const
  - pdns_ci_find
  - isCanonical
  - toCanonic
  - replacing_insert
  - Regex::Regex
  - '& operator=(const Regex&)'
  - Regex::Regex
  - '& operator=(Regex&& rhs)'
  - ~Regex()
  - operator()(regex_t* ptr) const noexcept
  - SimpleMatch::SimpleMatch
  - SimpleMatch::match
  - SimpleMatch::match
  - SimpleMatch::match
  - SimpleMatch::match
  - defTer
  - valueOrEmpty
  - addS
  - addS
  - rplookup
  - pdns::checked_conv
  - pdns::checked_stoi
  - pdns::checked_stoi_nonzero
  - pdns::checked_stoi_into
  - pdns::checked_conv
  - pdns::checked_stoi
  - pdns::checked_stoi_nonzero
  - pdns::checked_stoi_into
  - FDWrapper
  - FDWrapper
  - FDWrapper
  - '& operator=(const FDWrapper& rhs)'
  - ~FDWrapper()
  - FDWrapper
  - '& operator=(FDWrapper&& rhs) noexcept'
  - getHandle
  - operator int() const
  - reset
  - release
  - operator()(FILE* filePtr) const noexcept
  - operator()(FILE* filePtr) const noexcept
  source_file: /src/pdns/pdns/dnsdistdist/misc.hh
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields: []
      item_type: struct
      name: CIStringCompare
      pos:
        line_end: 436
        line_start: 430
        source_file: /src/pdns/pdns/dnsdistdist/misc.hh
    - fields: []
      item_type: struct
      name: CIStringComparePOSIX
      pos:
        line_end: 456
        line_start: 438
        source_file: /src/pdns/pdns/dnsdistdist/misc.hh
    - fields: []
      item_type: struct
      name: CIStringPairCompare
      pos:
        line_end: 468
        line_start: 458
        source_file: /src/pdns/pdns/dnsdistdist/misc.hh
    - fields: []
      item_type: struct
      name: Deleter
      pos:
        line_end: 536
        line_start: 530
        source_file: /src/pdns/pdns/dnsdistdist/misc.hh
    - fields:
      - name: content[8]
        type: uint8_t
      item_type: struct
      name: NodeOrLocatorID
      pos:
        line_end: 851
        line_start: 851
        source_file: /src/pdns/pdns/dnsdistdist/misc.hh
    - fields:
      - name: d_fd
        type: int
      item_type: struct
      name: FDWrapper
      pos:
        line_end: 910
        line_start: 853
        source_file: /src/pdns/pdns/dnsdistdist/misc.hh
    - fields: []
      item_type: struct
      name: FilePtrDeleter
      pos:
        line_end: 928
        line_start: 916
        source_file: /src/pdns/pdns/dnsdistdist/misc.hh
    - fields: []
      item_type: struct
      name: FilePtrDeleter
      pos:
        line_end: 928
        line_start: 916
        source_file: /src/pdns/pdns/dnsdistdist/misc.hh
    typedefs:
    - item_type: typedef
      name: AtomicCounterInner
      pos:
        line_end: 426
        line_start: 426
        source_file: /src/pdns/pdns/dnsdistdist/misc.hh
      type: unsigned long
    - item_type: typedef
      name: AtomicCounter
      pos:
        line_end: 427
        line_start: 427
        source_file: /src/pdns/pdns/dnsdistdist/misc.hh
      type: atomic<AtomicCounterInner>
    union:
    - fields:
      - name: hdr
        type: struct cmsghdr
      - name: buf[256]
        type: char
      item_type: union
      name: cmsgbuf_aligned
      pos:
        line_end: 600
        line_start: 600
        source_file: /src/pdns/pdns/dnsdistdist/misc.hh
- function_names:
  - ~MockTLSSession() override
  - BOOST_AUTO_TEST_CASE
  source_file: /src/pdns/pdns/dnsdistdist/test-dnsdist-session-cache.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - pdns::ProtoZero::Message::encodeComboAddress(const protozero::pbf_tag_type type,
    const ComboAddress& address)
  - pdns::ProtoZero::Message::encodeNetmask(const protozero::pbf_tag_type type, const
    Netmask& subnet, uint8_t mask)
  - pdns::ProtoZero::Message::encodeDNSName(protozero::pbf_writer& pbf, std::string&
    buffer, const protozero::pbf_tag_type type, const DNSName& name)
  - pdns::ProtoZero::Message::setRequest(const boost::uuids::uuid& uniqueId, const
    ComboAddress& requestor, const ComboAddress& local, const DNSName& qname, uint16_t
    qtype, uint16_t qclass, uint16_t qid, pdns::ProtoZero::Message::TransportProtocol
    proto, size_t len)
  - pdns::ProtoZero::Message::setResponse(const DNSName& qname, uint16_t qtype, uint16_t
    qclass)
  - pdns::ProtoZero::Message::addRRsFromPacket(const char* packet, const size_t len,
    bool includeCNAME)
  - pdns::ProtoZero::Message::addRR(const DNSName& name, uint16_t uType, uint16_t
    uClass, uint32_t uTTL, const std::string& blob)
  source_file: /src/pdns/pdns/dnsdistdist/protozero.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - ~IncomingHTTP2Connection()
  - IncomingHTTP2Connection::forwardViaUDPFirst
  source_file: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.hh
  types:
    enum:
    - enumerators:
      - name: Unknown
      - name: Unsupported
      - name: Get
      - name: Post
      item_type: enum
      name: Method
      pos:
        line_end: 43
        line_start: 37
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.hh
    - enumerators:
      - name: OK_200_VALUE
        value: '0'
      - name: SCHEME_NAME
      - name: PATH_NAME
      - name: CACHE_CONTROL_NAME
      - name: USER_AGENT_VALUE
      - name: ACCEPT_NAME
      - name: X_FORWARDED_PROTO_VALUE_DNS_OVER_TCP
      - name: COUNT
      - name: SCHEME_VALUE
      - name: CONTENT_LENGTH_NAME
      - name: CONTENT_TYPE_NAME
      - name: X_FORWARDED_PORT_NAME
      - name: ACCEPT_VALUE
      - name: X_FORWARDED_PROTO_VALUE_DNS_OVER_TLS
      - name: METHOD_NAME
      - name: AUTHORITY_NAME
      - name: STATUS_NAME
      - name: CONTENT_TYPE_VALUE
      - name: X_FORWARDED_PROTO_NAME
      - name: X_FORWARDED_PROTO_VALUE_DNS_OVER_HTTP
      - name: METHOD_VALUE
      - name: X_FORWARDED_FOR_NAME
      - name: LOCATION_NAME
      - name: USER_AGENT_NAME
      - name: X_FORWARDED_PROTO_VALUE_DNS_OVER_UDP
      - name: X_FORWARDED_PROTO_VALUE_DNS_OVER_HTTPS
      item_type: enum
      name: HeaderConstantIndexes
      pos:
        line_end: 159
        line_start: 131
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.hh
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/pdns/pdns/dnsdistdist/dnsdist-systemd.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/pdns/pdns/dnsdistdist/dnsdist-logging.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml-internal.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - DEBUGLOG
  - Connection::Connection
  - Connection::Connection
  - Connection::Connection
  - '& operator=(const Connection&)'
  - '& operator=(Connection&&)'
  - ~Connection()
  - Connection::getSNI
  - DOQServerConfig
  - DOQServerConfig
  - DOQServerConfig
  - '& operator=(const DOQServerConfig&)'
  - '& operator=(DOQServerConfig&&)'
  - ~DOQServerConfig()
  - DOQFrontend::DOQFrontend
  - DOQFrontend::~DOQFrontend()
  - DOQTCPCrossQuerySender::DOQTCPCrossQuerySender
  - DOQTCPCrossQuerySender::active
  - DOQTCPCrossQuerySender::handleResponse
  - DOQTCPCrossQuerySender::handleXFRResponse
  - DOQTCPCrossQuerySender::notifyIOError
  - DOQCrossProtocolQuery::DOQCrossProtocolQuery
  - DOQCrossProtocolQuery::handleInternalError
  - DOQCrossProtocolQuery::getTCPQuerySender
  - DOQCrossProtocolQuery::getDQ
  - DOQCrossProtocolQuery::getDR
  - '&& releaseDU()'
  - tryWriteResponse
  - handleResponse
  - DOQFrontend::setup
  - DOQFrontend::reloadCertificates
  - getConnection
  - sendBackDOQUnit
  - createConnection
  - getDOQCrossProtocolQueryFromDQ
  - processDOQQuery
  - doq_dispatch_query
  - flushResponses
  - flushStalledResponses
  - handleReadableStream
  - handleSocketReadable
  - doqThread
  source_file: /src/pdns/pdns/dnsdistdist/doq.cc
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: d_connections
        type: ConnectionsMap
      - name: config
        type: QuicheConfig
      - name: '* clientState'
        type: ClientState
      - name: df
        type: std::shared_ptr<DOQFrontend>
      - name: d_responseSender
        type: pdns::channel::Sender<DOQUnit>
      - name: d_responseReceiver
        type: pdns::channel::Receiver<DOQUnit>
      item_type: struct
      name: DOQServerConfig
      pos:
        line_end: 119
        line_start: 94
        source_file: /src/pdns/pdns/dnsdistdist/doq.cc
    typedefs: []
    union: []
- function_names: []
  source_file: /src/pdns/pdns/dnsdistdist/ednsextendederror.hh
  types:
    enum:
    - enumerators:
      - name: Other
        value: '0'
      - name: UnsupportedDNSKEYAlgorithm
        value: '1'
      - name: DNSSECIndeterminate
        value: '5'
      - name: DNSKEYMissing
        value: '9'
      - name: CachedError
        value: '13'
      - name: Filtered
        value: '17'
      - name: NotSupported
        value: '21'
      - name: SignatureExpiredBeforeValid
        value: '25'
      - name: Synthesized
        value: '29'
      - name: ForgedAnswer
        value: '4'
      - name: SignatureNotYetValid
        value: '8'
      - name: Censored
        value: '16'
      - name: NSECMissing
        value: '12'
      - name: NotAuthoritative
        value: '20'
      - name: InvalidData
        value: '24'
      - name: UnableToConformToPolicy
        value: '28'
      - name: StaleAnswer
        value: '3'
      - name: UnsupportedDSDigestType
        value: '2'
      - name: SignatureExpired
        value: '7'
      - name: NoZoneKeyBitSet
        value: '11'
      - name: Blocked
        value: '15'
      - name: StaleNXDOMAINAnswer
        value: '19'
      - name: NetworkError
        value: '23'
      - name: UnsupportedNSEC3IterationsValue
        value: '27'
      - name: DNSSECBogus
        value: '6'
      - name: RRSIGsMissing
        value: '10'
      - name: Prohibited
        value: '18'
      - name: NotReady
        value: '14'
      - name: NoReachableAuthority
        value: '22'
      - name: TooEarly
        value: '26'
      item_type: enum
      name: code
      pos:
        line_end: 60
        line_start: 28
        source_file: /src/pdns/pdns/dnsdistdist/ednsextendederror.hh
    preproc_defs: []
    structs:
    - fields:
      - name: infoCode
        type: uint16_t
      - name: extraText
        type: std::string
      item_type: struct
      name: EDNSExtendedError
      pos:
        line_end: 63
        line_start: 26
        source_file: /src/pdns/pdns/dnsdistdist/ednsextendederror.hh
    typedefs: []
    union: []
- function_names:
  - ~DevPollFDMultiplexer()
  - DevPollFDMultiplexer::getName
  - makeDevPoll
  - DevPollRegisterOurselves
  - DevPollFDMultiplexer::DevPollFDMultiplexer
  - convertEventKind
  - DevPollFDMultiplexer::addFD
  - DevPollFDMultiplexer::removeFD
  - DevPollFDMultiplexer::getAvailableFDs
  - DevPollFDMultiplexer::run
  - acceptData
  - main
  source_file: /src/pdns/pdns/dnsdistdist/devpollmplexer.cc
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields: []
      item_type: struct
      name: DevPollRegisterOurselves
      pos:
        line_end: 75
        line_start: 69
        source_file: /src/pdns/pdns/dnsdistdist/devpollmplexer.cc
    typedefs: []
    union: []
- function_names:
  - ~TLSSession()
  - ~TLSConnection()
  - TLSConnection::setUnknownTicketKey
  - TLSConnection::getUnknownTicketKey
  - TLSConnection::setResumedFromInactiveTicketKey
  - TLSConnection::getResumedFromInactiveTicketKey
  - TLSCtx::TLSCtx
  - ~TLSCtx()
  - TLSCtx::loadTicketsKeys
  - TLSCtx::loadTicketsKey
  - TLSCtx::handleTicketsKeyRotation
  - TLSCtx::getNextTicketsKeyRotation
  - TLSCtx::setTicketsKeyAddedHook
  - '& getTicketsKeyAddedHook()'
  - TLSCtx::hasTicketsKeyAddedHook
  - TLSFrontend::TLSFrontend
  - TLSFrontend::TLSFrontend
  - TLSFrontend::rotateTicketsKey
  - TLSFrontend::loadTicketsKeys
  - TLSFrontend::loadTicketsKey
  - TLSFrontend::getContext
  - TLSFrontend::setParent
  - TLSFrontend::cleanup
  - TLSFrontend::getTicketsKeysCount
  - TLSFrontend::timeToString
  - TLSFrontend::getTicketsKeyRotationDelay
  - TLSFrontend::getNextTicketsKeyRotation
  - TLSFrontend::getRequestedProvider
  - TLSFrontend::getEffectiveProvider
  - TCPIOHandler::TCPIOHandler
  - TCPIOHandler::TCPIOHandler
  - ~TCPIOHandler()
  - TCPIOHandler::close
  - TCPIOHandler::getDescriptor
  - TCPIOHandler::tryConnect
  - TCPIOHandler::connect
  - TCPIOHandler::tryHandshake
  - TCPIOHandler::read
  - TCPIOHandler::tryRead
  - TCPIOHandler::tryWrite
  - TCPIOHandler::write
  - TCPIOHandler::getServerNameIndication
  - TCPIOHandler::getNextProtocol
  - TCPIOHandler::getTLSVersion
  - TCPIOHandler::isTLS
  - TCPIOHandler::getVerifyResult
  - TCPIOHandler::hasTLSSessionBeenResumed
  - TCPIOHandler::getResumedFromInactiveTicketKey
  - TCPIOHandler::getUnknownTicketKey
  - TCPIOHandler::setTLSSession
  - TCPIOHandler::getTLSSessions
  - TCPIOHandler::isUsable
  - TCPIOHandler::getAsyncFDs
  source_file: /src/pdns/pdns/dnsdistdist/tcpiohandler.hh
  types:
    enum:
    - enumerators:
      - name: Done
      - name: NeedWrite
      - name: NeedRead
      - name: Async
      item_type: enum
      name: IOState
      pos:
        line_end: 12
        line_start: 12
        source_file: /src/pdns/pdns/dnsdistdist/tcpiohandler.hh
    - enumerators:
      - name: Unset
      - name: DoT
      - name: DoH
      item_type: enum
      name: ALPN
      pos:
        line_end: 144
        line_start: 144
        source_file: /src/pdns/pdns/dnsdistdist/tcpiohandler.hh
    preproc_defs: []
    structs:
    - fields:
      - name: d_provider
        type: std::string
      - name: d_ciphers
        type: std::string
      - name: d_ciphers13
        type: std::string
      - name: d_caStore
        type: std::string
      - name: d_keyLogFile
        type: std::string
      - name: d_client_certificate
        type: std::string
      - name: d_client_certificate_key
        type: std::string
      - name: d_client_certificate_password
        type: std::string
      - name: d_alpn
        type: TLSFrontend::ALPN
      - name: d_validateCertificates
        type: bool
      - name: d_releaseBuffers
        type: bool
      - name: d_enableRenegotiation
        type: bool
      - name: d_ktls
        type: bool
      item_type: struct
      name: TLSContextParameters
      pos:
        line_end: 608
        line_start: 593
        source_file: /src/pdns/pdns/dnsdistdist/tcpiohandler.hh
    typedefs: []
    union: []
- function_names:
  - TLSCertKeyPair
  source_file: /src/pdns/pdns/dnsdistdist/libssl.hh
  types:
    enum:
    - enumerators:
      - name: Unknown
      - name: TLS12
      - name: TLS10
      - name: TLS11
      - name: TLS13
      item_type: enum
      name: LibsslTLSVersion
      pos:
        line_end: 16
        line_start: 16
        source_file: /src/pdns/pdns/dnsdistdist/libssl.hh
    preproc_defs:
    - item_type: preproc_def
      name: TLS_TICKETS_KEY_NAME_SIZE
      pos:
        line_end: 81
        line_start: 80
        source_file: /src/pdns/pdns/dnsdistdist/libssl.hh
      type_or_value: (16)
    - item_type: preproc_def
      name: TLS_TICKETS_CIPHER_KEY_SIZE
      pos:
        line_end: 84
        line_start: 83
        source_file: /src/pdns/pdns/dnsdistdist/libssl.hh
      type_or_value: (32)
    - item_type: preproc_def
      name: TLS_TICKETS_CIPHER_ALGO
      pos:
        line_end: 85
        line_start: 84
        source_file: /src/pdns/pdns/dnsdistdist/libssl.hh
      type_or_value: (EVP_aes_256_cbc)
    - item_type: preproc_def
      name: TLS_TICKETS_MAC_KEY_SIZE
      pos:
        line_end: 88
        line_start: 87
        source_file: /src/pdns/pdns/dnsdistdist/libssl.hh
      type_or_value: (32)
    - item_type: preproc_def
      name: TLS_TICKETS_MAC_ALGO
      pos:
        line_end: 89
        line_start: 88
        source_file: /src/pdns/pdns/dnsdistdist/libssl.hh
      type_or_value: (EVP_sha256)
    structs:
    - fields:
      - name: d_cert
        type: std::string
      - name: d_key
        type: std::optional<std::string>
      - name: d_password
        type: std::optional<std::string>
      item_type: struct
      name: TLSCertKeyPair
      pos:
        line_end: 26
        line_start: 18
        source_file: /src/pdns/pdns/dnsdistdist/libssl.hh
    - fields:
      - name: d_dhKeyTooSmall
        type: std::atomic<uint64_t>
      - name: d_inappropriateFallBack
        type: std::atomic<uint64_t>
      - name: d_noSharedCipher
        type: std::atomic<uint64_t>
      - name: d_unknownCipherType
        type: std::atomic<uint64_t>
      - name: d_unknownKeyExchangeType
        type: std::atomic<uint64_t>
      - name: d_unknownProtocol
        type: std::atomic<uint64_t>
      - name: d_unsupportedEC
        type: std::atomic<uint64_t>
      - name: d_unsupportedProtocol
        type: std::atomic<uint64_t>
      item_type: struct
      name: TLSErrorCounters
      pos:
        line_end: 71
        line_start: 60
        source_file: /src/pdns/pdns/dnsdistdist/libssl.hh
    typedefs: []
    union: []
- function_names:
  - operator<(const DNSResourceRecord& other) const
  - dnsheader_aligned::isMemoryAligned
  - dnsheader_aligned::dnsheader_aligned
  - dnsheader_aligned::dnsheader_aligned
  - dnsheader_aligned::dnsheader_aligned
  - '& operator=(const dnsheader_aligned&)'
  - '& operator=(dnsheader_aligned&&)'
  - ~dnsheader_aligned()
  - dnsheader_aligned::get
  - '& operator*() const'
  - '* operator->() const'
  - getFlagsFromDNSHeader
  - getFlagsFromDNSHeader
  source_file: /src/pdns/pdns/dnsdistdist/dns.hh
  types:
    enum:
    - enumerators:
      - name: NoError
        value: '0'
      - name: NotImp
        value: '4'
      - name: FormErr
        value: '1'
      - name: ServFail
        value: '2'
      - name: NXDomain
        value: '3'
      - name: Refused
        value: '5'
      - name: YXDomain
        value: '6'
      - name: YXRRSet
        value: '7'
      - name: NXRRSet
        value: '8'
      - name: NotAuth
        value: '9'
      - name: NotZone
        value: '10'
      item_type: enum
      name: rcodes_
      pos:
        line_end: 36
        line_start: 36
        source_file: /src/pdns/pdns/dnsdistdist/dns.hh
    - enumerators:
      - name: BADVERS
        value: '16'
      - name: BADMODE
        value: '19'
      - name: BADTIME
        value: '18'
      - name: BADSIG
        value: '16'
      - name: BADKEY
        value: '17'
      - name: BADNAME
        value: '20'
      - name: BADALG
        value: '21'
      - name: BADTRUNC
        value: '22'
      - name: BADCOOKIE
        value: '23'
      item_type: enum
      name: rcodes_
      pos:
        line_end: 46
        line_start: 46
        source_file: /src/pdns/pdns/dnsdistdist/dns.hh
    - enumerators:
      - name: Query
        value: '0'
      - name: Update
        value: '5'
      - name: IQuery
        value: '1'
      - name: Status
        value: '2'
      - name: Notify
        value: '4'
      item_type: enum
      name: opcodes_
      pos:
        line_end: 55
        line_start: 55
        source_file: /src/pdns/pdns/dnsdistdist/dns.hh
    - enumerators:
      - name: QUESTION
        value: '0'
      - name: ADDITIONAL
        value: '3'
      - name: ANSWER
        value: '1'
      - name: AUTHORITY
        value: '2'
      item_type: enum
      name: Place
      pos:
        line_end: 79
        line_start: 73
        source_file: /src/pdns/pdns/dnsdistdist/dns.hh
    preproc_defs:
    - item_type: preproc_def
      name: GCCPACKATTRIBUTE
      pos:
        line_end: 121
        line_start: 120
        source_file: /src/pdns/pdns/dnsdistdist/dns.hh
      type_or_value: __attribute__((packed))
    - item_type: preproc_def
      name: DNS_TYPE_SIZE
      pos:
        line_end: 246
        line_start: 245
        source_file: /src/pdns/pdns/dnsdistdist/dns.hh
      type_or_value: (2)
    - item_type: preproc_def
      name: DNS_CLASS_SIZE
      pos:
        line_end: 247
        line_start: 246
        source_file: /src/pdns/pdns/dnsdistdist/dns.hh
      type_or_value: (2)
    - item_type: preproc_def
      name: DNS_TTL_SIZE
      pos:
        line_end: 248
        line_start: 247
        source_file: /src/pdns/pdns/dnsdistdist/dns.hh
      type_or_value: (4)
    - item_type: preproc_def
      name: DNS_RDLENGTH_SIZE
      pos:
        line_end: 249
        line_start: 248
        source_file: /src/pdns/pdns/dnsdistdist/dns.hh
      type_or_value: (2)
    - item_type: preproc_def
      name: EDNS_EXTENDED_RCODE_SIZE
      pos:
        line_end: 250
        line_start: 249
        source_file: /src/pdns/pdns/dnsdistdist/dns.hh
      type_or_value: (1)
    - item_type: preproc_def
      name: EDNS_VERSION_SIZE
      pos:
        line_end: 251
        line_start: 250
        source_file: /src/pdns/pdns/dnsdistdist/dns.hh
      type_or_value: (1)
    - item_type: preproc_def
      name: EDNS_OPTION_CODE_SIZE
      pos:
        line_end: 252
        line_start: 251
        source_file: /src/pdns/pdns/dnsdistdist/dns.hh
      type_or_value: (2)
    - item_type: preproc_def
      name: EDNS_OPTION_LENGTH_SIZE
      pos:
        line_end: 253
        line_start: 252
        source_file: /src/pdns/pdns/dnsdistdist/dns.hh
      type_or_value: (2)
    - item_type: preproc_def
      name: FLAGS_RD_OFFSET
      pos:
        line_end: 256
        line_start: 255
        source_file: /src/pdns/pdns/dnsdistdist/dns.hh
      type_or_value: (8)
    - item_type: preproc_def
      name: FLAGS_CD_OFFSET
      pos:
        line_end: 257
        line_start: 256
        source_file: /src/pdns/pdns/dnsdistdist/dns.hh
      type_or_value: (12)
    - item_type: preproc_def
      name: FLAGS_RD_OFFSET
      pos:
        line_end: 259
        line_start: 258
        source_file: /src/pdns/pdns/dnsdistdist/dns.hh
      type_or_value: (0)
    - item_type: preproc_def
      name: FLAGS_CD_OFFSET
      pos:
        line_end: 260
        line_start: 259
        source_file: /src/pdns/pdns/dnsdistdist/dns.hh
      type_or_value: (12)
    structs:
    - fields:
      - name: d_type
        type: uint16_t
      - name: d_class
        type: uint16_t
      - name: d_ttl
        type: uint32_t
      - name: d_clen
        type: uint16_t
      item_type: struct
      name: dnsrecordheader
      pos:
        line_end: 128
        line_start: 122
        source_file: /src/pdns/pdns/dnsdistdist/dns.hh
    - fields:
      - name: extRCode
        type: uint8_t
      - name: extFlags
        type: uint16_t
      item_type: struct
      name: EDNS0Record
      pos:
        line_end: 134
        line_start: 130
        source_file: /src/pdns/pdns/dnsdistdist/dns.hh
    - fields:
      - name: id
        type: uint16_t
      - name: qdcount
        type: uint16_t
      - name: ancount
        type: uint16_t
      - name: nscount
        type: uint16_t
      - name: arcount
        type: uint16_t
      item_type: struct
      name: dnsheader
      pos:
        line_end: 185
        line_start: 151
        source_file: /src/pdns/pdns/dnsdistdist/dns.hh
    - fields:
      - name: name
        type: DNSName
      - name: secret
        type: string
      item_type: struct
      name: TSIGTriplet
      pos:
        line_end: 268
        line_start: 264
        source_file: /src/pdns/pdns/dnsdistdist/dns.hh
    typedefs: []
    union: []
- function_names: []
  source_file: /src/pdns/pdns/dnsdistdist/gettime.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - getFirstTXTAnswer
  - getSecPollStatus
  - dnsdist::secpoll::doSecPoll
  - dnsdist::secpoll::doSecPoll
  source_file: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: PACKAGEVERSION
      pos:
        line_end: 43
        line_start: 42
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-secpoll.cc
      type_or_value: PACKAGE_VERSION
    structs: []
    typedefs: []
    union: []
- function_names:
  - IncomingDoHCrossProtocolContext::IncomingDoHCrossProtocolContext
  - IncomingDoHCrossProtocolContext::getHTTPPath
  - IncomingDoHCrossProtocolContext::getHTTPScheme
  - IncomingDoHCrossProtocolContext::getHTTPHost
  - IncomingDoHCrossProtocolContext::getHTTPQueryString
  - IncomingDoHCrossProtocolContext::getHTTPHeaders
  - IncomingDoHCrossProtocolContext::handleResponse
  - IncomingDoHCrossProtocolContext::handleTimeout
  - ~IncomingDoHCrossProtocolContext() override
  - IncomingDoHCrossProtocolContext::IncomingDoHCrossProtocolContext
  - IncomingDoHCrossProtocolContext::IncomingDoHCrossProtocolContext
  - IncomingDoHCrossProtocolContext::IncomingDoHCrossProtocolContext
  - '& operator=(const IncomingDoHCrossProtocolContext&)'
  - '& operator=(IncomingDoHCrossProtocolContext&&)'
  - ~IncomingDoHCrossProtocolContext() override
  - IncomingDoHCrossProtocolContext::getHTTPPath
  - '& getHTTPScheme() const override'
  - '& getHTTPHost() const override'
  - IncomingDoHCrossProtocolContext::getHTTPQueryString
  - '& getHTTPHeaders() const override'
  - IncomingDoHCrossProtocolContext::getQuerySender
  - IncomingDoHCrossProtocolContext::setHTTPResponse
  - IncomingDoHCrossProtocolContext::handleUDPResponse
  - IncomingDoHCrossProtocolContext::handleTimeout
  - IncomingHTTP2Connection::handleResponse
  - IncomingHTTP2Connection::getDOHUnit
  - IncomingHTTP2Connection::restoreDOHUnit
  - IncomingHTTP2Connection::IncomingHTTP2Connection
  - addDateHeader
  - IncomingHTTP2Connection::checkALPN
  - IncomingHTTP2Connection::handleConnectionReady
  - IncomingHTTP2Connection::hasPendingWrite
  - IncomingHTTP2Connection::handleHandshake
  - ReadFunctionGuard::ReadFunctionGuard
  - ReadFunctionGuard::ReadFunctionGuard
  - ReadFunctionGuard::ReadFunctionGuard
  - '& operator=(ReadFunctionGuard&&)'
  - '& operator=(const ReadFunctionGuard&)'
  - ~ReadFunctionGuard()
  - IncomingHTTP2Connection::handleIO
  - IncomingHTTP2Connection::writeToSocket
  - IncomingHTTP2Connection::send_callback
  - addHeader
  - NGHTTP2Headers::addStaticHeader
  - NGHTTP2Headers::addCustomDynamicHeader
  - NGHTTP2Headers::addDynamicHeader
  - IncomingHTTP2Connection::getStreamContext
  - IncomingHTTP2Connection::sendResponse
  - IncomingHTTP2Connection::notifyIOError
  - IncomingHTTP2Connection::sendResponse
  - processForwardedForHeader
  - IncomingHTTP2Connection::handleIncomingQuery
  - IncomingHTTP2Connection::on_frame_recv_callback
  - IncomingHTTP2Connection::on_stream_close_callback
  - IncomingHTTP2Connection::on_begin_headers_callback
  - getLengthOfPathWithoutParameters
  - IncomingHTTP2Connection::on_header_callback
  - IncomingHTTP2Connection::on_data_chunk_recv_callback
  - IncomingHTTP2Connection::on_error_callback
  - IncomingHTTP2Connection::readHTTPData
  - IncomingHTTP2Connection::handleReadableIOCallback
  - IncomingHTTP2Connection::handleWritableIOCallback
  - IncomingHTTP2Connection::stopIO
  - IncomingHTTP2Connection::getConcurrentStreamsCount
  - IncomingHTTP2Connection::getIdleClientReadTTD
  - IncomingHTTP2Connection::updateIO
  - IncomingHTTP2Connection::updateIO
  - IncomingHTTP2Connection::handleIOError
  - IncomingHTTP2Connection::active
  source_file: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2-in.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - checkParameterBound
  - getRequiredRuleParameter
  - getOptionalRuleParameter
  - TestMaxQPSIPRule::TestMaxQPSIPRule
  - TestMaxQPSIPRule::matches
  - TestMaxQPSIPRule::toString
  - buildSelector
  - getDQ
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  source_file: /src/pdns/pdns/dnsdistdist/test-dnsdistrules_cc.cc
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: name
        type: std::string
      - name: value
        type: std::variant<unsigned int, std::string>
      item_type: struct
      name: RuleParameter
      pos:
        line_end: 25
        line_start: 21
        source_file: /src/pdns/pdns/dnsdistdist/test-dnsdistrules_cc.cc
    typedefs: []
    union: []
- function_names:
  - setupConfigurationItems
  source_file: /src/pdns/pdns/dnsdistdist/dnsdist-lua-configuration-items.cc
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: mutator
        type: std::function<void(dnsdist::configuration::RuntimeConfiguration& config,
          bool newValue)>
      item_type: struct
      name: BooleanConfigurationItems
      pos:
        line_end: 35
        line_start: 32
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-lua-configuration-items.cc
    - fields:
      - name: mutator
        type: std::function<void(dnsdist::configuration::RuntimeConfiguration& config,
          uint64_t value)>
      - name: maximumValue
        type: uint64_t
      item_type: struct
      name: UnsignedIntegerConfigurationItems
      pos:
        line_end: 41
        line_start: 37
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-lua-configuration-items.cc
    - fields:
      - name: mutator
        type: std::function<void(dnsdist::configuration::RuntimeConfiguration& config,
          const std::string& value)>
      item_type: struct
      name: StringConfigurationItems
      pos:
        line_end: 46
        line_start: 43
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-lua-configuration-items.cc
    - fields:
      - name: mutator
        type: std::function<void(dnsdist::configuration::ImmutableConfiguration& config,
          bool newValue)>
      item_type: struct
      name: BooleanImmutableConfigurationItems
      pos:
        line_end: 51
        line_start: 48
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-lua-configuration-items.cc
    - fields:
      - name: mutator
        type: std::function<void(dnsdist::configuration::ImmutableConfiguration& config,
          uint64_t value)>
      - name: maximumValue
        type: uint64_t
      item_type: struct
      name: UnsignedIntegerImmutableConfigurationItems
      pos:
        line_end: 56
        line_start: 52
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-lua-configuration-items.cc
    - fields:
      - name: mutator
        type: std::function<void(dnsdist::configuration::ImmutableConfiguration& config,
          double value)>
      - name: minimumValue
        type: double
      item_type: struct
      name: DoubleImmutableConfigurationItems
      pos:
        line_end: 62
        line_start: 58
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-lua-configuration-items.cc
    typedefs: []
    union: []
- function_names: []
  source_file: /src/pdns/pdns/dnsdistdist/dnsdist-random.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - writen2
  - readn2
  - readn2WithTimeout
  - writen2WithTimeout
  - pdns::getMessageFromErrno
  - pdns::OpenSSL::error(const std::string& errorMessage) -> std::runtime_error
  - pdns::OpenSSL::error(const std::string& componentName, const std::string& errorMessage)
    -> std::runtime_error
  - nowTime
  - waitForData
  - waitForData
  - waitForRWData
  - waitForRWData
  - waitForMultiData
  - humanDuration
  - unquotify
  - stripLine
  - urlEncode
  - getMaxHostNameSize
  - getHostname
  - getCarbonHostName
  - cleanSlashes
  - IpToU32
  - U32ToIP
  - makeHexDump
  - makeBytesFromHex
  - normalizeTV
  - operator+(const struct timeval& lhs, const struct timeval& rhs)
  - operator-(const struct timeval& lhs, const struct timeval& rhs)
  - splitField
  - logFacilityToLOG
  - logFacilityFromString
  - stripDot
  - makeIPv6sockaddr
  - makeIPv4sockaddr
  - makeUNsockaddr
  - stringfgets
  - readFileIfThere
  - Regex::Regex
  - Regex::match
  - Regex::match
  - addCMsgSrcAddr
  - getFilenumLimit
  - setFilenumLimit
  - setSocketTimestamps
  - setTCPNoDelay
  - setNonBlocking
  - setBlocking
  - setReuseAddr
  - setDscp
  - isNonBlocking
  - setReceiveSocketErrors
  - closesocket
  - setCloseOnExec
  - getMACAddress
  - getMACAddress
  - getMACAddress
  - udpErrorStats
  - udp6ErrorStats
  - tcpErrorStats
  - getCPUIOWait
  - getCPUSteal
  - getTSIGHashEnum
  - getTSIGAlgoName
  - getOpenFileDescriptors
  - getRealMemoryUsage
  - getSpecialMemoryUsage
  - getCPUTimeUser
  - getCPUTimeSystem
  - DiffTime
  - DiffTime
  - strToUID
  - strToGID
  - isSettingThreadCPUAffinitySupported
  - mapThreadToCPUList
  - getResolvers
  - getPipeBufferSize
  - setPipeBufferSize
  - reverseNameFromIP
  - makeLuaString
  - parseSVCBValueList
  - constantTimeStringEquals
  - operator()(DIR* dir) const noexcept
  - pdns::visit_directory
  - pdns::openFileForWriting
  - operator()(DIR* dir) const noexcept
  - pdns::visit_directory
  - pdns::openFileForWriting
  - timestamp
  source_file: /src/pdns/pdns/dnsdistdist/misc.cc
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: cpu_set_t
      pos:
        line_end: 1587
        line_start: 1586
        source_file: /src/pdns/pdns/dnsdistdist/misc.cc
      type_or_value: cpuset_t
    structs:
    - fields:
      - name: headermsg
        type: struct nlmsghdr
      - name: neighbormsg
        type: struct ndmsg
      item_type: struct
      name: request
      pos:
        line_end: 1080
        line_start: 1077
        source_file: /src/pdns/pdns/dnsdistdist/misc.cc
    - fields: []
      item_type: struct
      name: CloseDirDeleter
      pos:
        line_end: 1769
        line_start: 1764
        source_file: /src/pdns/pdns/dnsdistdist/misc.cc
    - fields: []
      item_type: struct
      name: CloseDirDeleter
      pos:
        line_end: 1769
        line_start: 1764
        source_file: /src/pdns/pdns/dnsdistdist/misc.cc
    typedefs: []
    union: []
- function_names:
  - pdns::ipcrypt2::IPCrypt2::IPCrypt2
  - IPCrypt2::~IPCrypt2()
  - pdns::ipcrypt2::IPCrypt2::encrypt
  - pdns::ipcrypt2::IPCrypt2::IPCrypt2
  - IPCrypt2::~IPCrypt2()
  - pdns::ipcrypt2::IPCrypt2::encrypt
  source_file: /src/pdns/pdns/dnsdistdist/dnsdist-ipcrypt2.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - dropCapabilities
  - dropCapabilitiesAfterSwitchingIDs
  - keepCapabilitiesAfterSwitchingIDs
  source_file: /src/pdns/pdns/dnsdistdist/capabilities.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - dnsdist::DNSPacketOverlay::DNSPacketOverlay
  - dnsdist::changeNameInDNSPacket
  - dnsdist::PacketMangling::editDNSHeaderFromPacket
  - dnsdist::PacketMangling::editDNSHeaderFromRawPacket
  - dnsdist::PacketMangling::restrictDNSPacketTTLs
  - dnsdist::PacketMangling::editDNSHeaderFromPacket
  - dnsdist::PacketMangling::editDNSHeaderFromRawPacket
  - dnsdist::PacketMangling::restrictDNSPacketTTLs
  - dnsdist::RecordParsers::parseARecord
  - dnsdist::RecordParsers::parseAAAARecord
  - dnsdist::RecordParsers::parseAddressRecord
  - dnsdist::RecordParsers::parseCNAMERecord
  - dnsdist::RecordParsers::parseARecord
  - dnsdist::RecordParsers::parseAAAARecord
  - dnsdist::RecordParsers::parseAddressRecord
  - dnsdist::RecordParsers::parseCNAMERecord
  - dnsdist::setResponseHeadersFromConfig
  - dnsdist::DNSPacketOverlay::DNSPacketOverlay
  - dnsdist::changeNameInDNSPacket
  - dnsdist::PacketMangling::editDNSHeaderFromPacket
  - dnsdist::PacketMangling::editDNSHeaderFromRawPacket
  - dnsdist::PacketMangling::restrictDNSPacketTTLs
  - dnsdist::PacketMangling::editDNSHeaderFromPacket
  - dnsdist::PacketMangling::editDNSHeaderFromRawPacket
  - dnsdist::PacketMangling::restrictDNSPacketTTLs
  - dnsdist::RecordParsers::parseARecord
  - dnsdist::RecordParsers::parseAAAARecord
  - dnsdist::RecordParsers::parseAddressRecord
  - dnsdist::RecordParsers::parseCNAMERecord
  - dnsdist::RecordParsers::parseARecord
  - dnsdist::RecordParsers::parseAAAARecord
  - dnsdist::RecordParsers::parseAddressRecord
  - dnsdist::RecordParsers::parseCNAMERecord
  - dnsdist::setResponseHeadersFromConfig
  source_file: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - makeIPCipherKey
  - encryptCA4
  - decryptCA4
  - encryptCA6
  - decryptCA6
  - encryptCA
  - decryptCA
  source_file: /src/pdns/pdns/dnsdistdist/ipcipher.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - FrameStreamLogger::FrameStreamLogger
  - FrameStreamLogger::cleanup
  - FrameStreamLogger::~FrameStreamLogger()
  - FrameStreamLogger::queueData
  source_file: /src/pdns/pdns/dnsdistdist/fstrm_logger.cc
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: name
        type: std::string
      - name: (*function)(struct fstrm_iothr_options*, const unsigned int)
        type: fstrm_res
      item_type: struct
      name: setters
      pos:
        line_end: 92
        line_start: 88
        source_file: /src/pdns/pdns/dnsdistdist/fstrm_logger.cc
    typedefs: []
    union: []
- function_names:
  - GenericDNSPacketWriter::xfrType
  - GenericDNSPacketWriter::xfrIP
  - GenericDNSPacketWriter::xfrIP6
  - GenericDNSPacketWriter::xfrCAWithoutPort
  - GenericDNSPacketWriter::xfrCAPort
  - GenericDNSPacketWriter::xfrTime
  - GenericDNSPacketWriter::setCanonic
  - GenericDNSPacketWriter::setLowercase
  - '& getContent()'
  - GenericDNSPacketWriter::eof
  - GenericDNSPacketWriter::getRemaining
  - GenericDNSPacketWriter::consumeRemaining
  source_file: /src/pdns/pdns/dnsdistdist/dnswriter.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - SNMPAgent::setCounter64Value
  - SNMPAgent::addSNMPTrapOID
  - SNMPAgent::sendTrap
  - SNMPAgent::handleTrapsEvent
  - SNMPAgent::handleSNMPQueryEvent
  - SNMPAgent::handleTrapsCB
  - SNMPAgent::handleSNMPQueryCB
  - SNMPAgent::worker
  - SNMPAgent::SNMPAgent
  source_file: /src/pdns/pdns/dnsdistdist/snmp-agent.cc
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: netsnmp_large_fd_set
      pos:
        line_end: 23
        line_start: 22
        source_file: /src/pdns/pdns/dnsdistdist/snmp-agent.cc
      type_or_value: fd_set
    - item_type: preproc_def
      name: snmp_read2
      pos:
        line_end: 24
        line_start: 23
        source_file: /src/pdns/pdns/dnsdistdist/snmp-agent.cc
      type_or_value: snmp_read
    - item_type: preproc_def
      name: snmp_select_info2
      pos:
        line_end: 25
        line_start: 24
        source_file: /src/pdns/pdns/dnsdistdist/snmp-agent.cc
      type_or_value: snmp_select_info
    - item_type: preproc_def
      name: NETSNMP_LARGE_FD_SET
      pos:
        line_end: 28
        line_start: 27
        source_file: /src/pdns/pdns/dnsdistdist/snmp-agent.cc
      type_or_value: FD_SET
    - item_type: preproc_def
      name: NETSNMP_LARGE_FD_CLR
      pos:
        line_end: 29
        line_start: 28
        source_file: /src/pdns/pdns/dnsdistdist/snmp-agent.cc
      type_or_value: FD_CLR
    - item_type: preproc_def
      name: NETSNMP_LARGE_FD_ZERO
      pos:
        line_end: 30
        line_start: 29
        source_file: /src/pdns/pdns/dnsdistdist/snmp-agent.cc
      type_or_value: FD_ZERO
    - item_type: preproc_def
      name: NETSNMP_LARGE_FD_ISSET
      pos:
        line_end: 31
        line_start: 30
        source_file: /src/pdns/pdns/dnsdistdist/snmp-agent.cc
      type_or_value: FD_ISSET
    structs: []
    typedefs: []
    union: []
- function_names:
  - Socket::Socket
  - '& operator=(const Socket&)'
  - Socket::Socket
  - Socket::Socket
  - Socket::Socket
  - '& operator=(Socket&& rhs) noexcept'
  - ~Socket()
  - Socket::accept
  - Socket::getRemote
  - Socket::acl
  - Socket::setNonBlocking
  - Socket::setBlocking
  - Socket::setReuseAddr
  - Socket::setFastOpenConnect
  - Socket::bind
  - Socket::connect
  - Socket::recvFrom
  - Socket::recvFromAsync
  - Socket::sendTo
  - Socket::send
  - Socket::sendTo
  - Socket::writen
  - Socket::tryWrite
  - Socket::write
  - Socket::writenWithTimeout
  - Socket::read
  - Socket::read
  - Socket::readWithTimeout
  - Socket::listen
  - Socket::getHandle
  - Socket::releaseHandle
  source_file: /src/pdns/pdns/dnsdistdist/sstuff.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - dnsdist::getStartTime
  - dnsdist::isStillValid
  - dnsdist::getRange
  - dnsdist::getShardID
  - dnsdist::checkTCPConnectionsRate
  - dnsdist::IncomingConcurrentTCPConnectionsManager::cleanup
  - dnsdist::IncomingConcurrentTCPConnectionsManager::clear
  - dnsdist::IncomingConcurrentTCPConnectionsManager::getNumberOfEntries
  - dnsdist::getCurrentClientActivity
  - dnsdist::IncomingConcurrentTCPConnectionsManager::accountNewTCPConnection
  - dnsdist::IncomingConcurrentTCPConnectionsManager::isClientOverThreshold
  - dnsdist::IncomingConcurrentTCPConnectionsManager::banClientFor
  - dnsdist::editEntryIfPresent
  - dnsdist::IncomingConcurrentTCPConnectionsManager::accountClosedTCPConnection
  - dnsdist::IncomingConcurrentTCPConnectionsManager::accountTLSNewSession
  - dnsdist::IncomingConcurrentTCPConnectionsManager::accountTLSResumedSession
  - dnsdist::getStartTime
  - dnsdist::isStillValid
  - dnsdist::getRange
  - dnsdist::getShardID
  - dnsdist::checkTCPConnectionsRate
  - dnsdist::IncomingConcurrentTCPConnectionsManager::cleanup
  - dnsdist::IncomingConcurrentTCPConnectionsManager::clear
  - dnsdist::IncomingConcurrentTCPConnectionsManager::getNumberOfEntries
  - dnsdist::getCurrentClientActivity
  - dnsdist::IncomingConcurrentTCPConnectionsManager::accountNewTCPConnection
  - dnsdist::IncomingConcurrentTCPConnectionsManager::isClientOverThreshold
  - dnsdist::IncomingConcurrentTCPConnectionsManager::banClientFor
  - dnsdist::editEntryIfPresent
  - dnsdist::IncomingConcurrentTCPConnectionsManager::accountClosedTCPConnection
  - dnsdist::IncomingConcurrentTCPConnectionsManager::accountTLSNewSession
  - dnsdist::IncomingConcurrentTCPConnectionsManager::accountTLSResumedSession
  source_file: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: tcpConnections
        type: uint64_t
      - name: tlsNewSessions
        type: uint64_t
      - name: tlsResumedSessions
        type: uint64_t
      - name: bucketEndTime
        type: time_t
      item_type: struct
      name: ClientActivity
      pos:
        line_end: 58
        line_start: 42
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc
    - fields:
      - name: d_activity
        type: boost::circular_buffer<ClientActivity>
      - name: d_addr
        type: AddressAndPortRange
      - name: d_concurrentConnections
        type: uint64_t
      - name: d_bannedUntil
        type: time_t
      - name: d_lastSeen
        type: time_t
      item_type: struct
      name: ClientEntry
      pos:
        line_end: 68
        line_start: 60
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc
    - fields: []
      item_type: struct
      name: TimeTag
      pos:
        line_end: 72
        line_start: 70
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc
    - fields: []
      item_type: struct
      name: AddressTag
      pos:
        line_end: 75
        line_start: 73
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc
    - fields:
      - name: tcpConnections
        type: uint64_t
      - name: tlsNewSessions
        type: uint64_t
      - name: tlsResumedSessions
        type: uint64_t
      - name: bucketEndTime
        type: time_t
      item_type: struct
      name: ClientActivity
      pos:
        line_end: 58
        line_start: 42
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc
    - fields:
      - name: d_activity
        type: boost::circular_buffer<ClientActivity>
      - name: d_addr
        type: AddressAndPortRange
      - name: d_concurrentConnections
        type: uint64_t
      - name: d_bannedUntil
        type: time_t
      - name: d_lastSeen
        type: time_t
      item_type: struct
      name: ClientEntry
      pos:
        line_end: 68
        line_start: 60
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc
    - fields: []
      item_type: struct
      name: TimeTag
      pos:
        line_end: 72
        line_start: 70
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc
    - fields: []
      item_type: struct
      name: AddressTag
      pos:
        line_end: 75
        line_start: 73
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-concurrent-connections.cc
    typedefs: []
    union: []
- function_names:
  - ExpectedStep
  - '& operator<<(std::ostream& outs, ExpectedStep::ExpectedRequest step)'
  - DOHConnection::DOHConnection
  - DOHConnection::submitIncoming
  - DOHConnection::send_callback
  - DOHConnection::on_frame_recv_callback
  - DOHConnection::on_data_chunk_recv_callback
  - DOHConnection::on_header_callback
  - DOHConnection::on_stream_close_callback
  - MockupTLSConnection::MockupTLSConnection
  - MockupTLSConnection::MockupTLSConnection
  - MockupTLSConnection::MockupTLSConnection
  - '& operator=(const MockupTLSConnection&)'
  - '& operator=(MockupTLSConnection&&)'
  - ~MockupTLSConnection() override
  - MockupTLSConnection::tryHandshake
  - MockupTLSConnection::tryWrite
  - MockupTLSConnection::tryRead
  - MockupTLSConnection::tryConnect
  - MockupTLSConnection::close
  - MockupTLSConnection::isUsable
  - MockupTLSConnection::getServerNameIndication
  - MockupTLSConnection::getNextProtocol
  - MockupTLSConnection::getTLSVersion
  - MockupTLSConnection::getVerifyResult
  - MockupTLSConnection::hasSessionBeenResumed
  - MockupTLSConnection::getSessions
  - MockupTLSConnection::setSession
  - MockupTLSConnection::getAsyncFDs
  - MockupTLSConnection::doHandshake
  - MockupTLSConnection::connect
  - MockupTLSConnection::read
  - MockupTLSConnection::write
  - MockupTLSConnection::getStep
  - TestFixture
  - TestFixture
  - TestFixture
  - '& operator=(const TestFixture&)'
  - '& operator=(TestFixture&&)'
  - ~TestFixture()
  - reset
  - BOOST_FIXTURE_TEST_CASE
  - BOOST_FIXTURE_TEST_CASE
  - BOOST_FIXTURE_TEST_CASE
  source_file: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc
  types:
    enum:
    - enumerators:
      - name: handshakeClient
      - name: writeToClient
      - name: closeClient
      - name: readFromClient
      item_type: enum
      name: ExpectedRequest
      pos:
        line_end: 50
        line_start: 44
        source_file: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc
    preproc_defs: []
    structs:
    - fields:
      - name: cb
        type: std::function<void(int descriptor)>
      - name: request
        type: ExpectedRequest
      - name: nextState
        type: IOState
      - name: bytes
        type: size_t
      item_type: struct
      name: ExpectedStep
      pos:
        line_end: 61
        line_start: 41
        source_file: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc
    - fields:
      - name: d_proxyProtocolPayload
        type: PacketBuffer
      - name: d_queries
        type: std::vector<PacketBuffer>
      - name: d_responses
        type: std::vector<PacketBuffer>
      - name: d_responseCodes
        type: std::vector<uint16_t>
      item_type: struct
      name: ExpectedData
      pos:
        line_end: 69
        line_start: 63
        source_file: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc
    - fields: []
      item_type: struct
      name: TestFixture
      pos:
        line_end: 509
        line_start: 483
        source_file: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2-in_cc.cc
    typedefs: []
    union: []
- function_names:
  - dnsdist::ServiceDiscovery::addUpgradeableServer
  - dnsdist::parseSVCParams
  - dnsdist::handleSVCResult
  - dnsdist::ServiceDiscovery::getDiscoveredConfig
  - dnsdist::checkBackendUsability
  - dnsdist::ServiceDiscovery::tryToUpgradeBackend
  - dnsdist::ServiceDiscovery::worker
  - dnsdist::ServiceDiscovery::run
  - dnsdist::ServiceDiscovery::addUpgradeableServer
  - dnsdist::parseSVCParams
  - dnsdist::handleSVCResult
  - dnsdist::ServiceDiscovery::getDiscoveredConfig
  - dnsdist::checkBackendUsability
  - dnsdist::ServiceDiscovery::tryToUpgradeBackend
  - dnsdist::ServiceDiscovery::worker
  - dnsdist::ServiceDiscovery::run
  source_file: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: target
        type: DNSName
      - name: params
        type: std::set<SvcParam>
      - name: hints
        type: std::vector<ComboAddress>
      item_type: struct
      name: DesignatedResolvers
      pos:
        line_end: 50
        line_start: 45
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc
    - fields:
      - name: target
        type: DNSName
      - name: params
        type: std::set<SvcParam>
      - name: hints
        type: std::vector<ComboAddress>
      item_type: struct
      name: DesignatedResolvers
      pos:
        line_end: 50
        line_start: 45
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-discovery.cc
    typedefs: []
    union: []
- function_names:
  - UnknownRecordContent::UnknownRecordContent
  - UnknownRecordContent::getZoneRepresentation
  - UnknownRecordContent::toPacket
  - DNSRecordContent::deserialize
  - DNSRecordContent::make
  - DNSRecordContent::make
  - DNSRecordContent::make
  - DNSRecordContent::upgradeContent
  - '& DNSRecordContent::getTypemap()'
  - '& DNSRecordContent::getN2Typemap()'
  - '& DNSRecordContent::getT2Namemap()'
  - '& DNSRecordContent::getZmakermap()'
  - DNSRecordContent::isRegisteredType
  - DNSRecord::DNSRecord
  - DNSResourceRecord::fromWire
  - MOADNSParser::init
  - MOADNSParser::hasEDNS
  - PacketReader::getDnsrecordheader
  - PacketReader::copyRecord
  - PacketReader::copyRecord
  - PacketReader::xfrNodeOrLocatorID
  - PacketReader::xfr48BitInt
  - PacketReader::get32BitInt
  - PacketReader::get16BitInt
  - PacketReader::get8BitInt
  - PacketReader::getName
  - txtEscape
  - PacketReader::getText
  - PacketReader::getUnquotedText
  - PacketReader::xfrBlob
  - PacketReader::xfrBlobNoSpaces
  - PacketReader::xfrBlob
  - PacketReader::xfrSvcParamKeyVals
  - PacketReader::xfrHexBlob
  - simpleCompress
  - editDNSPacketTTL
  - checkIfPacketContainsRecords
  - rewritePacketWithoutRecordTypes
  - clearDNSPacketRecordTypes
  - clearDNSPacketRecordTypes
  - ageDNSPacket
  - ageDNSPacket
  - shuffleDNSPacket
  - getDNSPacketMinTTL
  - getDNSPacketLength
  - getRecordsOfTypeCount
  - getEDNSUDPPayloadSizeAndZ
  - visitDNSPacket
  source_file: /src/pdns/pdns/dnsdistdist/dnsparser.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs:
    - item_type: typedef
      name: parts_t
      pos:
        line_end: 779
        line_start: 779
        source_file: /src/pdns/pdns/dnsdistdist/dnsparser.cc
      type: vector
    union: []
- function_names:
  - checkDNSCryptQuery
  - checkQueryHeaders
  - uptimeOfProcess
  - handleResponseSent
  - handleResponseSent
  - processQuery
  - responseContentMatches
  - processResponse
  - ExpectedStep
  - '& operator<<(std::ostream& os, const ExpectedStep::ExpectedRequest d)'
  - MockupTLSConnection::MockupTLSConnection
  - ~MockupTLSConnection()
  - MockupTLSConnection::tryHandshake
  - MockupTLSConnection::tryWrite
  - MockupTLSConnection::tryRead
  - MockupTLSConnection::tryConnect
  - MockupTLSConnection::close
  - MockupTLSConnection::isUsable
  - MockupTLSConnection::getServerNameIndication
  - MockupTLSConnection::getNextProtocol
  - MockupTLSConnection::getTLSVersion
  - MockupTLSConnection::getVerifyResult
  - MockupTLSConnection::hasSessionBeenResumed
  - MockupTLSConnection::getSessions
  - MockupTLSConnection::getAsyncFDs
  - MockupTLSConnection::setSession
  - MockupTLSConnection::doHandshake
  - MockupTLSConnection::connect
  - MockupTLSConnection::read
  - MockupTLSConnection::write
  - MockupTLSConnection::getStep
  - ~MockupTLSCtx()
  - MockupTLSCtx::getConnection
  - MockupTLSCtx::getClientConnection
  - MockupTLSCtx::rotateTicketsKey
  - MockupTLSCtx::getTicketsKeysCount
  - MockupTLSCtx::getName
  - MockupFDMultiplexer::MockupFDMultiplexer
  - ~MockupFDMultiplexer()
  - MockupFDMultiplexer::run
  - MockupFDMultiplexer::getAvailableFDs
  - MockupFDMultiplexer::addFD
  - MockupFDMultiplexer::removeFD
  - MockupFDMultiplexer::getName
  - MockupFDMultiplexer::setReady
  - MockupFDMultiplexer::setNotReady
  - isIPv6Supported
  - getBackendAddress
  - appendPayloadEditingID
  - prependPayloadEditingID
  - TestFixture
  - TestFixture
  - TestFixture
  - '& operator=(const TestFixture&)'
  - '& operator=(TestFixture&&)'
  - ~TestFixture()
  - reset
  - testInit
  - TEST_INIT
  - BOOST_FIXTURE_TEST_CASE
  - BOOST_FIXTURE_TEST_CASE
  - BOOST_FIXTURE_TEST_CASE
  - BOOST_FIXTURE_TEST_CASE
  - BOOST_FIXTURE_TEST_CASE
  - BOOST_FIXTURE_TEST_CASE
  source_file: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc
  types:
    enum:
    - enumerators:
      - name: handshakeClient
      - name: readFromClient
      - name: connectToBackend
      - name: closeClient
      - name: writeToClient
      - name: readFromBackend
      - name: writeToBackend
      - name: closeBackend
      item_type: enum
      name: ExpectedRequest
      pos:
        line_end: 135
        line_start: 125
        source_file: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc
    preproc_defs: []
    structs:
    - fields:
      - name: cb
        type: std::function<void(int descriptor)>
      - name: request
        type: ExpectedRequest
      - name: nextState
        type: IOState
      - name: bytes
        type: size_t
      item_type: struct
      name: ExpectedStep
      pos:
        line_end: 146
        line_start: 122
        source_file: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc
    - fields: []
      item_type: struct
      name: TestFixture
      pos:
        line_end: 543
        line_start: 511
        source_file: /src/pdns/pdns/dnsdistdist/test-dnsdisttcp_cc.cc
    typedefs: []
    union: []
- function_names: []
  source_file: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - dnsdist::webserver::getConfig
  - dnsdist::webserver::WebClientConnection::WebClientConnection
  - dnsdist::webserver::WebClientConnection::WebClientConnection
  - dnsdist::webserver::WebClientConnection::WebClientConnection
  - '& operator=(const WebClientConnection&)'
  - '& operator=(WebClientConnection&& rhs) noexcept'
  - ~WebClientConnection()
  - '& getSocket() const'
  - '& getClient() const'
  - '& getLogger() const'
  - dnsdist::webserver::addMetricDefinition
  - dnsdist::webserver::apiWriteConfigFile
  - dnsdist::webserver::apiSaveACL
  - dnsdist::webserver::checkAPIKey
  - dnsdist::webserver::checkWebPassword
  - dnsdist::webserver::isAnAPIRequest
  - dnsdist::webserver::isAnAPIRequestAllowedWithWebAuth
  - dnsdist::webserver::isAStatsRequest
  - dnsdist::webserver::handleAuthorization
  - dnsdist::webserver::isMethodAllowed
  - dnsdist::webserver::isClientAllowedByACL
  - dnsdist::webserver::handleCORS
  - dnsdist::webserver::addSecurityHeaders
  - dnsdist::webserver::addCustomHeaders
  - dnsdist::webserver::someResponseRulesToJson
  - dnsdist::webserver::addRulesToPrometheusOutput
  - dnsdist::webserver::addHistogramToPrometheusOutput
  - dnsdist::webserver::handlePrometheus
  - dnsdist::webserver::addStatsToJSONObject
  - dnsdist::webserver::handleJSONStats
  - dnsdist::webserver::addServerToJSON
  - dnsdist::webserver::handleStats
  - dnsdist::webserver::handlePoolStats
  - dnsdist::webserver::handleStatsOnly
  - dnsdist::webserver::handleConfigDump
  - dnsdist::webserver::handleAllowFrom
  - dnsdist::webserver::handleCacheManagement
  - dnsdist::webserver::addRingEntryToList
  - dnsdist::webserver::handleRings
  - dnsdist::webserver::registerWebHandler
  - dnsdist::webserver::registerWebHandler
  - dnsdist::webserver::clearWebHandlers
  - dnsdist::webserver::redirectToIndex
  - dnsdist::webserver::handleBuiltInFiles
  - dnsdist::webserver::registerBuiltInWebHandlers
  - dnsdist::webserver::connectionThread
  - dnsdist::webserver::setMaxConcurrentConnections
  - dnsdist::webserver::WebserverThread
  - dnsdist::webserver::getConfig
  - dnsdist::webserver::WebClientConnection::WebClientConnection
  - dnsdist::webserver::WebClientConnection::WebClientConnection
  - dnsdist::webserver::WebClientConnection::WebClientConnection
  - '& operator=(const WebClientConnection&)'
  - '& operator=(WebClientConnection&& rhs) noexcept'
  - ~WebClientConnection()
  - '& getSocket() const'
  - '& getClient() const'
  - '& getLogger() const'
  - dnsdist::webserver::addMetricDefinition
  - dnsdist::webserver::apiWriteConfigFile
  - dnsdist::webserver::apiSaveACL
  - dnsdist::webserver::checkAPIKey
  - dnsdist::webserver::checkWebPassword
  - dnsdist::webserver::isAnAPIRequest
  - dnsdist::webserver::isAnAPIRequestAllowedWithWebAuth
  - dnsdist::webserver::isAStatsRequest
  - dnsdist::webserver::handleAuthorization
  - dnsdist::webserver::isMethodAllowed
  - dnsdist::webserver::isClientAllowedByACL
  - dnsdist::webserver::handleCORS
  - dnsdist::webserver::addSecurityHeaders
  - dnsdist::webserver::addCustomHeaders
  - dnsdist::webserver::someResponseRulesToJson
  - dnsdist::webserver::addRulesToPrometheusOutput
  - dnsdist::webserver::addHistogramToPrometheusOutput
  - dnsdist::webserver::handlePrometheus
  - dnsdist::webserver::addStatsToJSONObject
  - dnsdist::webserver::handleJSONStats
  - dnsdist::webserver::addServerToJSON
  - dnsdist::webserver::handleStats
  - dnsdist::webserver::handlePoolStats
  - dnsdist::webserver::handleStatsOnly
  - dnsdist::webserver::handleConfigDump
  - dnsdist::webserver::handleAllowFrom
  - dnsdist::webserver::handleCacheManagement
  - dnsdist::webserver::addRingEntryToList
  - dnsdist::webserver::handleRings
  - dnsdist::webserver::registerWebHandler
  - dnsdist::webserver::registerWebHandler
  - dnsdist::webserver::clearWebHandlers
  - dnsdist::webserver::redirectToIndex
  - dnsdist::webserver::handleBuiltInFiles
  - dnsdist::webserver::registerBuiltInWebHandlers
  - dnsdist::webserver::connectionThread
  - dnsdist::webserver::setMaxConcurrentConnections
  - dnsdist::webserver::WebserverThread
  source_file: /src/pdns/pdns/dnsdistdist/dnsdist-web.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - dnsdist::lua::hooks::runMaintenanceHooks
  - dnsdist::lua::hooks::addMaintenanceCallback
  - dnsdist::lua::hooks::clearMaintenanceHooks
  - dnsdist::lua::hooks::runExitCallbacks
  - dnsdist::lua::hooks::addExitCallback
  - dnsdist::lua::hooks::clearExitCallbacks
  - dnsdist::lua::hooks::setTicketsKeyAddedHook
  - dnsdist::lua::hooks::runServerStateChangeHooks
  - dnsdist::lua::hooks::addServerStateChangeCallback
  - dnsdist::lua::hooks::clearServerStateChangeCallbacks
  - dnsdist::lua::hooks::setupLuaHooks
  - dnsdist::lua::hooks::runMaintenanceHooks
  - dnsdist::lua::hooks::addMaintenanceCallback
  - dnsdist::lua::hooks::clearMaintenanceHooks
  - dnsdist::lua::hooks::runExitCallbacks
  - dnsdist::lua::hooks::addExitCallback
  - dnsdist::lua::hooks::clearExitCallbacks
  - dnsdist::lua::hooks::setTicketsKeyAddedHook
  - dnsdist::lua::hooks::runServerStateChangeHooks
  - dnsdist::lua::hooks::addServerStateChangeCallback
  - dnsdist::lua::hooks::clearServerStateChangeCallbacks
  - dnsdist::lua::hooks::setupLuaHooks
  source_file: /src/pdns/pdns/dnsdistdist/dnsdist-lua-hooks.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - dnsdist::configuration::getCurrentRuntimeConfigurationInternal
  - dnsdist::configuration::getCurrentRuntimeConfiguration
  - dnsdist::configuration::refreshLocalRuntimeConfiguration
  - dnsdist::configuration::updateRuntimeConfiguration
  - dnsdist::configuration::updateImmutableConfiguration
  - dnsdist::configuration::getImmutableConfiguration
  - dnsdist::configuration::isImmutableConfigurationDone
  - dnsdist::configuration::setImmutableConfigurationDone
  - dnsdist::configuration::getCurrentRuntimeConfigurationInternal
  - dnsdist::configuration::getCurrentRuntimeConfiguration
  - dnsdist::configuration::refreshLocalRuntimeConfiguration
  - dnsdist::configuration::updateRuntimeConfiguration
  - dnsdist::configuration::updateImmutableConfiguration
  - dnsdist::configuration::getImmutableConfiguration
  - dnsdist::configuration::isImmutableConfigurationDone
  - dnsdist::configuration::setImmutableConfigurationDone
  source_file: /src/pdns/pdns/dnsdistdist/dnsdist-configuration.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - SvcParam::keyFromString
  - SvcParam::keyFromString
  - SvcParam::keyToString
  - SvcParam::SvcParam
  - SvcParam::SvcParam
  - SvcParam::SvcParam
  - SvcParam::SvcParam
  - SvcParam::SvcParam
  - SvcParam::SvcParam
  - SvcParam::SvcParam
  - SvcParam::SvcParam
  - SvcParam::operator<(const SvcParam& other) const
  - SvcParam::operator==(const SvcParam& other) const
  - SvcParam::operator!=(const SvcParam& other) const
  - '& SvcParam::getIPHints() const'
  - SvcParam::getPort
  - '& SvcParam::getALPN() const'
  - '& SvcParam::getMandatory() const'
  - '& SvcParam::getECH() const'
  - '& SvcParam::getValue() const'
  - '& SvcParam::getTLSSupportedGroups() const'
  source_file: /src/pdns/pdns/dnsdistdist/svc-records.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/pdns/pdns/dnsdistdist/ipcipher.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - ~KqueueFDMultiplexer()
  - KqueueFDMultiplexer::getName
  - make
  - KqueueRegisterOurselves
  - KqueueFDMultiplexer::KqueueFDMultiplexer
  - convertEventKind
  - KqueueFDMultiplexer::addFD
  - KqueueFDMultiplexer::removeFD
  - KqueueFDMultiplexer::getAvailableFDs
  - KqueueFDMultiplexer::run
  - acceptData
  - main
  source_file: /src/pdns/pdns/dnsdistdist/kqueuemplexer.cc
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields: []
      item_type: struct
      name: KqueueRegisterOurselves
      pos:
        line_end: 75
        line_start: 69
        source_file: /src/pdns/pdns/dnsdistdist/kqueuemplexer.cc
    typedefs: []
    union: []
- function_names:
  - PDNSException::PDNSException
  - PDNSException::PDNSException
  - TimeoutException::TimeoutException
  - TimeoutException::TimeoutException
  source_file: /src/pdns/pdns/dnsdistdist/pdnsexception.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - CircularWriteBuffer::hasRoomFor
  - CircularWriteBuffer::tooBig
  - CircularWriteBuffer::write
  - CircularWriteBuffer::flush
  - '& RemoteLoggerInterface::toErrorString(Result result)'
  - RemoteLogger::RemoteLogger
  - RemoteLogger::reconnect
  - RemoteLogger::queueData
  - RemoteLogger::maintenanceThread
  - RemoteLogger::~RemoteLogger()
  source_file: /src/pdns/pdns/dnsdistdist/remote_logger.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - dnsdist::doOneCarbonExport
  - dnsdist::carbonHandler
  - dnsdist::Carbon::newEndpoint
  - dnsdist::Carbon::run
  - Carbon::Endpoint::getOurName() const
  - dnsdist::doOneCarbonExport
  - dnsdist::carbonHandler
  - dnsdist::Carbon::newEndpoint
  - dnsdist::Carbon::run
  - Carbon::Endpoint::getOurName() const
  - uptimeOfProcess
  source_file: /src/pdns/pdns/dnsdistdist/dnsdist-carbon.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - DNSDistProtoBufMessage::DNSDistProtoBufMessage
  - DNSDistProtoBufMessage::DNSDistProtoBufMessage
  - DNSDistProtoBufMessage::PBQuestion
  source_file: /src/pdns/pdns/dnsdistdist/dnsdist-protobuf.hh
  types:
    enum:
    - enumerators:
      - name: SNI
      - name: Pool
      - name: B64Content
      - name: DoHHeader
      - name: DoHHost
      - name: DoHPath
      - name: DoHQueryString
      - name: DoHScheme
      - name: ProxyProtocolValue
      - name: ProxyProtocolValues
      - name: Tags
      - name: Tag
      item_type: enum
      name: Type
      pos:
        line_end: 134
        line_start: 120
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-protobuf.hh
    preproc_defs: []
    structs:
    - fields:
      - name: d_name
        type: DNSName
      - name: d_data
        type: std::string
      - name: d_ttl
        type: uint32_t
      - name: d_type
        type: uint16_t
      - name: d_class
        type: uint16_t
      item_type: struct
      name: PBRecord
      pos:
        line_end: 75
        line_start: 68
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-protobuf.hh
    - fields:
      - name: d_name
        type: DNSName
      - name: d_type
        type: uint16_t
      - name: d_class
        type: uint16_t
      item_type: struct
      name: PBQuestion
      pos:
        line_end: 86
        line_start: 76
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-protobuf.hh
    - fields:
      - name: d_strings
        type: std::unordered_set<std::string>
      - name: d_integers
        type: std::unordered_set<int64_t>
      item_type: struct
      name: MetaValue
      pos:
        line_end: 94
        line_start: 90
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-protobuf.hh
    - fields:
      - name: d_name
        type: std::string
      - name: d_type
        type: Type
      - name: d_func
        type: std::function<std::vector<std::string>(const DNSQuestion&, const std::string&,
          uint8_t)>
      - name: d_prefix
        type: bool
      - name: d_caseSensitive
        type: bool
      - name: d_numeric
        type: bool
      item_type: struct
      name: KeyTypeDescription
      pos:
        line_end: 147
        line_start: 136
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-protobuf.hh
    - fields: []
      item_type: struct
      name: NameTag
      pos:
        line_end: 151
        line_start: 149
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-protobuf.hh
    - fields: []
      item_type: struct
      name: TypeTag
      pos:
        line_end: 154
        line_start: 152
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-protobuf.hh
    typedefs: []
    union: []
- function_names:
  - Rings::init
  - Rings::numDistinctRequestors
  - Rings::getTopBandwidth
  - Rings::loadFromFile
  - Rings::Response::isACacheHit() const
  source_file: /src/pdns/pdns/dnsdistdist/dnsdist-rings.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - KeyValueLookupKeySourceIP::getKeys
  - KeyValueLookupKeySuffix::getKeys
  - LMDBKVStore::getLogger
  - LMDBKVStore::getValue
  - LMDBKVStore::keyExists
  - LMDBKVStore::getRangeValue
  - CDBKVStore::getLogger
  - CDBKVStore::CDBKVStore
  - CDBKVStore::~CDBKVStore()
  - CDBKVStore::reload
  - CDBKVStore::reload
  - CDBKVStore::refreshDBIfNeeded
  - CDBKVStore::getValue
  - CDBKVStore::keyExists
  source_file: /src/pdns/pdns/dnsdistdist/dnsdist-kvs.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - pdns::channel::Sender::Sender
  - pdns::channel::Sender::Sender
  - pdns::channel::Sender::Sender
  - '& operator=(const Sender&)'
  - pdns::channel::Sender::Sender
  - '& operator=(Sender&&)'
  - ~Sender()
  - pdns::channel::Receiver::Receiver
  - pdns::channel::Receiver::Receiver
  - pdns::channel::Receiver::Receiver
  - '& operator=(const Receiver&)'
  - pdns::channel::Receiver::Receiver
  - '& operator=(Receiver&&)'
  - ~Receiver()
  - pdns::channel::Receiver::getDescriptor
  - pdns::channel::Receiver::isClosed
  - pdns::channel::Notifier::Notifier
  - pdns::channel::Notifier::Notifier
  - '& operator=(const Notifier&)'
  - pdns::channel::Notifier::Notifier
  - '& operator=(Notifier&&)'
  - ~Notifier()
  - pdns::channel::Waiter::Waiter
  - pdns::channel::Waiter::Waiter
  - '& operator=(const Waiter&)'
  - pdns::channel::Waiter::Waiter
  - '& operator=(Waiter&&)'
  - ~Waiter()
  - pdns::channel::Waiter::isClosed
  - pdns::channel::Sender<T, D>::send
  - pdns::channel::Sender<T, D>::close
  - pdns::channel::Receiver<T, D>::receive
  - pdns::channel::Receiver<T, D>::receive
  - pdns::channel::createObjectQueue
  - pdns::channel::Sender::Sender
  - pdns::channel::Sender::Sender
  - pdns::channel::Sender::Sender
  - '& operator=(const Sender&)'
  - pdns::channel::Sender::Sender
  - '& operator=(Sender&&)'
  - ~Sender()
  - pdns::channel::Receiver::Receiver
  - pdns::channel::Receiver::Receiver
  - pdns::channel::Receiver::Receiver
  - '& operator=(const Receiver&)'
  - pdns::channel::Receiver::Receiver
  - '& operator=(Receiver&&)'
  - ~Receiver()
  - pdns::channel::Receiver::getDescriptor
  - pdns::channel::Receiver::isClosed
  - pdns::channel::Notifier::Notifier
  - pdns::channel::Notifier::Notifier
  - '& operator=(const Notifier&)'
  - pdns::channel::Notifier::Notifier
  - '& operator=(Notifier&&)'
  - ~Notifier()
  - pdns::channel::Waiter::Waiter
  - pdns::channel::Waiter::Waiter
  - '& operator=(const Waiter&)'
  - pdns::channel::Waiter::Waiter
  - '& operator=(Waiter&&)'
  - ~Waiter()
  - pdns::channel::Waiter::isClosed
  - pdns::channel::Sender<T, D>::send
  - pdns::channel::Sender<T, D>::close
  - pdns::channel::Receiver<T, D>::receive
  - pdns::channel::Receiver<T, D>::receive
  - pdns::channel::createObjectQueue
  - pdns::channel::Sender::Sender
  - pdns::channel::Sender::Sender
  - pdns::channel::Sender::Sender
  - '& operator=(const Sender&)'
  - pdns::channel::Sender::Sender
  - '& operator=(Sender&&)'
  - ~Sender()
  - pdns::channel::Receiver::Receiver
  - pdns::channel::Receiver::Receiver
  - pdns::channel::Receiver::Receiver
  - '& operator=(const Receiver&)'
  - pdns::channel::Receiver::Receiver
  - '& operator=(Receiver&&)'
  - ~Receiver()
  - pdns::channel::Receiver::getDescriptor
  - pdns::channel::Receiver::isClosed
  - pdns::channel::Notifier::Notifier
  - pdns::channel::Notifier::Notifier
  - '& operator=(const Notifier&)'
  - pdns::channel::Notifier::Notifier
  - '& operator=(Notifier&&)'
  - ~Notifier()
  - pdns::channel::Waiter::Waiter
  - pdns::channel::Waiter::Waiter
  - '& operator=(const Waiter&)'
  - pdns::channel::Waiter::Waiter
  - '& operator=(Waiter&&)'
  - ~Waiter()
  - pdns::channel::Waiter::isClosed
  - pdns::channel::Sender<T, D>::send
  - pdns::channel::Sender<T, D>::close
  - pdns::channel::Receiver<T, D>::receive
  - pdns::channel::Receiver<T, D>::receive
  - pdns::channel::createObjectQueue
  - pdns::channel::Sender::Sender
  - pdns::channel::Sender::Sender
  - pdns::channel::Sender::Sender
  - '& operator=(const Sender&)'
  - pdns::channel::Sender::Sender
  - '& operator=(Sender&&)'
  - ~Sender()
  - pdns::channel::Receiver::Receiver
  - pdns::channel::Receiver::Receiver
  - pdns::channel::Receiver::Receiver
  - '& operator=(const Receiver&)'
  - pdns::channel::Receiver::Receiver
  - '& operator=(Receiver&&)'
  - ~Receiver()
  - pdns::channel::Receiver::getDescriptor
  - pdns::channel::Receiver::isClosed
  - pdns::channel::Notifier::Notifier
  - pdns::channel::Notifier::Notifier
  - '& operator=(const Notifier&)'
  - pdns::channel::Notifier::Notifier
  - '& operator=(Notifier&&)'
  - ~Notifier()
  - pdns::channel::Waiter::Waiter
  - pdns::channel::Waiter::Waiter
  - '& operator=(const Waiter&)'
  - pdns::channel::Waiter::Waiter
  - '& operator=(Waiter&&)'
  - ~Waiter()
  - pdns::channel::Waiter::isClosed
  - pdns::channel::Sender<T, D>::send
  - pdns::channel::Sender<T, D>::close
  - pdns::channel::Receiver<T, D>::receive
  - pdns::channel::Receiver<T, D>::receive
  - pdns::channel::createObjectQueue
  source_file: /src/pdns/pdns/dnsdistdist/channel.hh
  types:
    enum:
    - enumerators:
      - name: SenderNonBlocking
      - name: SenderBlocking
      item_type: enum
      name: SenderBlockingMode
      pos:
        line_end: 36
        line_start: 32
        source_file: /src/pdns/pdns/dnsdistdist/channel.hh
    - enumerators:
      - name: ReceiverNonBlocking
      - name: ReceiverBlocking
      item_type: enum
      name: ReceiverBlockingMode
      pos:
        line_end: 41
        line_start: 37
        source_file: /src/pdns/pdns/dnsdistdist/channel.hh
    - enumerators:
      - name: SenderNonBlocking
      - name: SenderBlocking
      item_type: enum
      name: SenderBlockingMode
      pos:
        line_end: 36
        line_start: 32
        source_file: /src/pdns/pdns/dnsdistdist/channel.hh
    - enumerators:
      - name: ReceiverNonBlocking
      - name: ReceiverBlocking
      item_type: enum
      name: ReceiverBlockingMode
      pos:
        line_end: 41
        line_start: 37
        source_file: /src/pdns/pdns/dnsdistdist/channel.hh
    - enumerators:
      - name: SenderNonBlocking
      - name: SenderBlocking
      item_type: enum
      name: SenderBlockingMode
      pos:
        line_end: 36
        line_start: 32
        source_file: /src/pdns/pdns/dnsdistdist/channel.hh
    - enumerators:
      - name: ReceiverNonBlocking
      - name: ReceiverBlocking
      item_type: enum
      name: ReceiverBlockingMode
      pos:
        line_end: 41
        line_start: 37
        source_file: /src/pdns/pdns/dnsdistdist/channel.hh
    - enumerators:
      - name: SenderNonBlocking
      - name: SenderBlocking
      item_type: enum
      name: SenderBlockingMode
      pos:
        line_end: 36
        line_start: 32
        source_file: /src/pdns/pdns/dnsdistdist/channel.hh
    - enumerators:
      - name: ReceiverNonBlocking
      - name: ReceiverBlocking
      item_type: enum
      name: ReceiverBlockingMode
      pos:
        line_end: 41
        line_start: 37
        source_file: /src/pdns/pdns/dnsdistdist/channel.hh
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - DynBlockRulesGroup::apply
  - DynBlockRulesGroup::applySMT
  - DynBlockRulesGroup::checkIfQueryTypeMatches
  - DynBlockRulesGroup::checkIfResponseCodeMatches
  - getActualAction
  - dnsdist::DynamicBlocks::addOrRefreshBlock
  - dnsdist::DynamicBlocks::addOrRefreshBlockSMT
  - dnsdist::DynamicBlocks::addOrRefreshBlock
  - dnsdist::DynamicBlocks::addOrRefreshBlockSMT
  - DynBlockRulesGroup::addOrRefreshBlock
  - DynBlockRulesGroup::addOrRefreshBlockSMT
  - DynBlockRulesGroup::processQueryRules
  - DynBlockRulesGroup::processResponseRules
  - DynBlockMaintenance::purgeExpired
  - DynBlockMaintenance::getTopNetmasks
  - DynBlockMaintenance::getTopSuffixes
  - DynBlockMaintenance::collectMetrics
  - DynBlockMaintenance::generateMetrics
  - DynBlockMaintenance::run
  - DynBlockMaintenance::getHitsForTopNetmasks
  - DynBlockMaintenance::getHitsForTopSuffixes
  - DynBlockRulesGroup::DynBlockRule::toString() const
  - DynBlockRulesGroup::DynBlockRule::matches(const struct timespec& when)
  - DynBlockRulesGroup::DynBlockRule::rateExceeded(uint32_t count, const struct timespec&
    now) const
  - DynBlockRulesGroup::DynBlockRule::warningRateExceeded(uint32_t count, const struct
    timespec& now) const
  - DynBlockRulesGroup::DynBlockRatioRule::ratioExceeded(uint32_t total, uint32_t
    count) const
  - DynBlockRulesGroup::DynBlockRatioRule::warningRatioExceeded(uint32_t total, uint32_t
    count) const
  - DynBlockRulesGroup::DynBlockRatioRule::toString() const
  - DynBlockRulesGroup::DynBlockCacheMissRatioRule::checkGlobalCacheHitRatio() const
  - DynBlockRulesGroup::DynBlockCacheMissRatioRule::ratioExceeded(uint32_t total,
    uint32_t count) const
  - DynBlockRulesGroup::DynBlockCacheMissRatioRule::warningRatioExceeded(uint32_t
    total, uint32_t count) const
  - DynBlockRulesGroup::DynBlockCacheMissRatioRule::toString() const
  - DynBlockRulesGroup::DynBlockAllowedRCodesRatioRule::isRCodeAllowed(uint8_t rcode)
    const
  - DynBlockRulesGroup::DynBlockAllowedRCodesRatioRule::toString() const
  - dnsdist::DynamicBlocks::getClientAddressDynamicRules
  - dnsdist::DynamicBlocks::getClientAddressDynamicRulesCopy
  - dnsdist::DynamicBlocks::getSuffixDynamicRules
  - dnsdist::DynamicBlocks::getSuffixDynamicRulesCopy
  - dnsdist::DynamicBlocks::setClientAddressDynamicRules
  - dnsdist::DynamicBlocks::setSuffixDynamicRules
  - dnsdist::DynamicBlocks::clearClientAddressDynamicRules
  - dnsdist::DynamicBlocks::clearSuffixDynamicRules
  - dnsdist::DynamicBlocks::registerGroup
  - dnsdist::DynamicBlocks::runRegisteredGroups
  - dnsdist::DynamicBlocks::getClientAddressDynamicRules
  - dnsdist::DynamicBlocks::getClientAddressDynamicRulesCopy
  - dnsdist::DynamicBlocks::getSuffixDynamicRules
  - dnsdist::DynamicBlocks::getSuffixDynamicRulesCopy
  - dnsdist::DynamicBlocks::setClientAddressDynamicRules
  - dnsdist::DynamicBlocks::setSuffixDynamicRules
  - dnsdist::DynamicBlocks::clearClientAddressDynamicRules
  - dnsdist::DynamicBlocks::clearSuffixDynamicRules
  - dnsdist::DynamicBlocks::registerGroup
  - dnsdist::DynamicBlocks::runRegisteredGroups
  source_file: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: sum
        type: size_t
      - name: lastSeenValue
        type: uint32_t
      item_type: struct
      name: DynBlockEntryStat
      pos:
        line_end: 646
        line_start: 642
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.cc
    typedefs: []
    union: []
- function_names:
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - operator()()
  - BOOST_AUTO_TEST_CASE
  - operator()()
  source_file: /src/pdns/pdns/dnsdistdist/test-delaypipe_hh.cc
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: i
        type: int
      item_type: struct
      name: Work
      pos:
        line_end: 41
        line_start: 34
        source_file: /src/pdns/pdns/dnsdistdist/test-delaypipe_hh.cc
    - fields:
      - name: i
        type: int
      item_type: struct
      name: Work
      pos:
        line_end: 70
        line_start: 63
        source_file: /src/pdns/pdns/dnsdistdist/test-delaypipe_hh.cc
    typedefs: []
    union: []
- function_names:
  - htobe16
  - htole16
  - be16toh
  - le16toh
  - htobe32
  - htole32
  - be32toh
  - le32toh
  - htobe64
  - htole64
  - be64toh
  - le64toh
  - htobe16
  - htole16
  - be16toh
  - le16toh
  - htobe32
  - htole32
  - be32toh
  - le32toh
  - htobe64
  - htole64
  - be64toh
  - le64toh
  - operator==(const ComboAddress& rhs) const
  - operator!=(const ComboAddress& rhs) const
  - operator<(const ComboAddress& rhs) const
  - operator>(const ComboAddress& rhs) const
  - operator()(const ComboAddress& address) const
  - operator()(const ComboAddress& address) const
  - operator()(const ComboAddress& lhs, const ComboAddress& rhs) const
  - operator()(const ComboAddress& lhs, const ComboAddress& rhs) const
  - getSocklen
  - ComboAddress
  - ComboAddress
  - ComboAddress
  - ComboAddress
  - setSockaddr
  - ComboAddress
  - isIPv6
  - isIPv4
  - isMappedIPv4
  - isUnspecified
  - mapToIPv4
  - toString
  - toStringNoInterface
  - toStringReversed
  - toStringWithPort
  - toStringWithPortExcept
  - toLogString
  - toStructuredLogString
  - toByteString
  - getNetworkOrderPort
  - getPort
  - setPort
  - reset
  - getBits
  - getBit
  - caContainerToString
  - getSocklen
  - SockaddrWrapper
  - SockaddrWrapper
  - SockaddrWrapper
  - SockaddrWrapper
  - SockaddrWrapper
  - setSockaddr
  - SockaddrWrapper
  - isIPv6
  - isIPv4
  - isUnixSocket
  - toString
  - toStringWithPort
  - reset
  - NetmaskException::NetmaskException
  - makeComboAddress
  - makeComboAddressFromRaw
  - makeComboAddressFromRaw
  - Netmask::Netmask
  - Netmask::Netmask
  - Netmask::Netmask
  - Netmask::Netmask
  - Netmask::setBits
  - Netmask::Netmask
  - Netmask::match
  - Netmask::match
  - Netmask::match
  - Netmask::match4
  - Netmask::toString
  - Netmask::toStringNoMask
  - Netmask::toByteString
  - '& getNetwork() const'
  - '& getMaskedNetwork() const'
  - Netmask::getBits
  - Netmask::isIPv6
  - Netmask::isIPv4
  - operator<(const Netmask& rhs) const
  - operator>(const Netmask& rhs) const
  - operator==(const Netmask& rhs) const
  - operator!=(const Netmask& rhs) const
  - Netmask::empty
  - Netmask::getNormalized
  - Netmask::getSuper
  - Netmask::getFullBits
  - Netmask::getBit
  - operator()(const Netmask& netmask) const
  - operator()(const Netmask& netmask) const
  - operator()(const Netmask& netmask) const
  - NetmaskTree::TreeNode::TreeNode
  - NetmaskTree::TreeNode::TreeNode
  - NetmaskTree::TreeNode::make_left
  - NetmaskTree::TreeNode::make_right
  - NetmaskTree::TreeNode::split
  - NetmaskTree::TreeNode::fork
  - NetmaskTree::TreeNode::traverse_l
  - NetmaskTree::TreeNode::traverse_lnr
  - NetmaskTree::TreeNode::traverse_lnr_assigned
  - NetmaskTree::cleanup_tree
  - NetmaskTree::copyTree
  - NetmaskTree::Iterator::Iterator
  - NetmaskTree::Iterator::Iterator
  - '& operator++()'
  - operator++(int)
  - operator*()
  - operator->()
  - operator==(const Iterator& rhs) const
  - operator!=(const Iterator& rhs) const
  - NetmaskTree::NetmaskTree
  - NetmaskTree::NetmaskTree
  - ~NetmaskTree()
  - '& operator=(const NetmaskTree& rhs)'
  - NetmaskTree::NetmaskTree
  - '& operator=(NetmaskTree&&) noexcept'
  - NetmaskTree::begin
  - NetmaskTree::end
  - NetmaskTree::begin
  - NetmaskTree::end
  - '& insert(const string& mask)'
  - '& insert(const key_type& key)'
  - NetmaskTree::insert_or_assign
  - NetmaskTree::insert_or_assign
  - NetmaskTree::has_key
  - NetmaskTree::lookup
  - NetmaskTree::lookup
  - NetmaskTree::erase
  - NetmaskTree::erase
  - NetmaskTree::empty
  - NetmaskTree::size
  - NetmaskTree::match
  - NetmaskTree::match
  - NetmaskTree::clear
  - NetmaskTree::swap
  - NetmaskTree::lookupImpl
  - NetmaskGroup::NetmaskGroup
  - NetmaskGroup::match
  - NetmaskGroup::match
  - NetmaskGroup::lookup
  - NetmaskGroup::lookup
  - NetmaskGroup::addMask
  - NetmaskGroup::addMask
  - NetmaskGroup::addMasks
  - NetmaskGroup::deleteMask
  - NetmaskGroup::deleteMasks
  - NetmaskGroup::deleteMask
  - NetmaskGroup::clear
  - NetmaskGroup::empty
  - NetmaskGroup::size
  - NetmaskGroup::toString
  - NetmaskGroup::toStringVector
  - NetmaskGroup::toMasks
  - SComboAddress
  - operator<(const SComboAddress& rhs) const
  - operator const ComboAddress&() const
  - NetworkError::NetworkError
  - NetworkError::NetworkError
  - AddressAndPortRange::AddressAndPortRange
  - AddressAndPortRange::AddressAndPortRange
  - AddressAndPortRange::getFullBits
  - AddressAndPortRange::getBits
  - AddressAndPortRange::getBit
  - AddressAndPortRange::isIPv4
  - AddressAndPortRange::isIPv6
  - AddressAndPortRange::getNormalized
  - AddressAndPortRange::getSuper
  - '& getNetwork() const'
  - AddressAndPortRange::toString
  - AddressAndPortRange::empty
  - operator==(const AddressAndPortRange& rhs) const
  - operator<(const AddressAndPortRange& rhs) const
  - operator>(const AddressAndPortRange& rhs) const
  - operator()(const AddressAndPortRange& apr) const
  source_file: /src/pdns/pdns/dnsdistdist/iputils.hh
  types:
    enum:
    - enumerators:
      - name: humanString
      - name: byteString
      item_type: enum
      name: stringType
      pos:
        line_end: 751
        line_start: 747
        source_file: /src/pdns/pdns/dnsdistdist/iputils.hh
    preproc_defs:
    - item_type: preproc_def
      name: CONNECTX_FASTOPEN
      pos:
        line_end: 57
        line_start: 56
        source_file: /src/pdns/pdns/dnsdistdist/iputils.hh
      type_or_value: '1'
    - item_type: preproc_def
      name: GEN_IP_PKTINFO
      pos:
        line_end: 2070
        line_start: 2069
        source_file: /src/pdns/pdns/dnsdistdist/iputils.hh
      type_or_value: IP_PKTINFO
    - item_type: preproc_def
      name: GEN_IP_PKTINFO
      pos:
        line_end: 2072
        line_start: 2071
        source_file: /src/pdns/pdns/dnsdistdist/iputils.hh
      type_or_value: IP_RECVDSTADDR
    structs:
    - fields: []
      item_type: struct
      name: addressPortOnlyHash
      pos:
        line_end: 148
        line_start: 133
        source_file: /src/pdns/pdns/dnsdistdist/iputils.hh
    - fields: []
      item_type: struct
      name: addressOnlyHash
      pos:
        line_end: 168
        line_start: 150
        source_file: /src/pdns/pdns/dnsdistdist/iputils.hh
    - fields: []
      item_type: struct
      name: addressOnlyLessThan
      pos:
        line_end: 185
        line_start: 170
        source_file: /src/pdns/pdns/dnsdistdist/iputils.hh
    - fields: []
      item_type: struct
      name: addressOnlyEqual
      pos:
        line_end: 199
        line_start: 187
        source_file: /src/pdns/pdns/dnsdistdist/iputils.hh
    - fields: []
      item_type: struct
      name: Hash
      pos:
        line_end: 963
        line_start: 957
        source_file: /src/pdns/pdns/dnsdistdist/iputils.hh
    - fields: []
      item_type: struct
      name: hash<Netmask>
      pos:
        line_end: 980
        line_start: 974
        source_file: /src/pdns/pdns/dnsdistdist/iputils.hh
    - fields: []
      item_type: struct
      name: hash<Netmask>
      pos:
        line_end: 980
        line_start: 974
        source_file: /src/pdns/pdns/dnsdistdist/iputils.hh
    - fields:
      - name: ca
        type: ComboAddress
      item_type: struct
      name: SComboAddress
      pos:
        line_end: 1859
        line_start: 1846
        source_file: /src/pdns/pdns/dnsdistdist/iputils.hh
    - fields: []
      item_type: struct
      name: hash
      pos:
        line_end: 2044
        line_start: 2034
        source_file: /src/pdns/pdns/dnsdistdist/iputils.hh
    typedefs: []
    union:
    - fields:
      - name: sin4
        type: sockaddr_in
      - name: sin6
        type: sockaddr_in6
      - name: truncate(unsigned int bits) noexcept
        type: void
      item_type: union
      name: ComboAddress
      pos:
        line_end: 505
        line_start: 90
        source_file: /src/pdns/pdns/dnsdistdist/iputils.hh
    - fields:
      - name: sin4
        type: sockaddr_in
      - name: sin6
        type: sockaddr_in6
      - name: sinun
        type: sockaddr_un
      item_type: union
      name: SockaddrWrapper
      pos:
        line_end: 633
        line_start: 507
        source_file: /src/pdns/pdns/dnsdistdist/iputils.hh
- function_names:
  - DNSDistProtoBufMessage::DNSDistProtoBufMessage
  - DNSDistProtoBufMessage::DNSDistProtoBufMessage
  - DNSDistProtoBufMessage::setServerIdentity
  - DNSDistProtoBufMessage::setRequestor
  - DNSDistProtoBufMessage::setResponder
  - DNSDistProtoBufMessage::setRequestorPort
  - DNSDistProtoBufMessage::setResponderPort
  - DNSDistProtoBufMessage::setResponseCode
  - DNSDistProtoBufMessage::setType
  - DNSDistProtoBufMessage::setBytes
  - DNSDistProtoBufMessage::setTime
  - DNSDistProtoBufMessage::setQueryTime
  - DNSDistProtoBufMessage::setQuestion
  - DNSDistProtoBufMessage::setEDNSSubnet
  - DNSDistProtoBufMessage::addTag
  - DNSDistProtoBufMessage::addMeta
  - DNSDistProtoBufMessage::addRR
  - DNSDistProtoBufMessage::serialize
  - ProtoBufMetaKey::ProtoBufMetaKey
  - ProtoBufMetaKey::getValues
  - '& ProtoBufMetaKey::getName() const'
  source_file: /src/pdns/pdns/dnsdistdist/dnsdist-protobuf.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - FDMultiplexerException::FDMultiplexerException
  - ~FDMultiplexer()
  - FDMultiplexer::InRun
  - FDMultiplexer::InRun
  - '& operator=(const InRun&)'
  - '& operator=(InRun&&)'
  - FDMultiplexer::InRun
  - ~InRun()
  - FDMultiplexer::addReadFD
  - FDMultiplexer::addWriteFD
  - FDMultiplexer::removeReadFD
  - FDMultiplexer::removeWriteFD
  - FDMultiplexer::setReadTTD
  - FDMultiplexer::setWriteTTD
  - FDMultiplexer::alterFDToRead
  - FDMultiplexer::alterFDToWrite
  - FDMultiplexer::getTimeouts
  - '& getMultiplexerMap()'
  - FDMultiplexer::getWatchedFDCount
  - FDMultiplexer::runForAllWatchedFDs
  - operator()(const struct timeval& lhs, const struct timeval& rhs) const
  - FDMultiplexer::accountingAddFD
  - FDMultiplexer::accountingRemoveFD
  - FDMultiplexer::alterFD
  source_file: /src/pdns/pdns/dnsdistdist/mplexer.hh
  types:
    enum:
    - enumerators:
      - name: Read
      - name: Both
      - name: Write
      item_type: enum
      name: EventKind
      pos:
        line_end: 60
        line_start: 55
        source_file: /src/pdns/pdns/dnsdistdist/mplexer.hh
    preproc_defs: []
    structs:
    - fields:
      - name: d_callback
        type: callbackfunc_t
      - name: d_parameter
        type: funcparam_t
      - name: d_ttd
        type: struct timeval
      - name: d_fd
        type: int
      item_type: struct
      name: Callback
      pos:
        line_end: 69
        line_start: 63
        source_file: /src/pdns/pdns/dnsdistdist/mplexer.hh
    - fields:
      - name: '& d_inrun'
        type: bool
      item_type: struct
      name: InRun
      pos:
        line_end: 99
        line_start: 80
        source_file: /src/pdns/pdns/dnsdistdist/mplexer.hh
    - fields: []
      item_type: struct
      name: FDBasedTag
      pos:
        line_end: 259
        line_start: 257
        source_file: /src/pdns/pdns/dnsdistdist/mplexer.hh
    - fields: []
      item_type: struct
      name: TTDOrderedTag
      pos:
        line_end: 262
        line_start: 260
        source_file: /src/pdns/pdns/dnsdistdist/mplexer.hh
    - fields: []
      item_type: struct
      name: ttd_compare
      pos:
        line_end: 282
        line_start: 263
        source_file: /src/pdns/pdns/dnsdistdist/mplexer.hh
    typedefs:
    - item_type: typedef
      name: funcparam_t
      pos:
        line_end: 53
        line_start: 53
        source_file: /src/pdns/pdns/dnsdistdist/mplexer.hh
      type: any
    - item_type: typedef
      name: callbackfunc_t
      pos:
        line_end: 54
        line_start: 54
        source_file: /src/pdns/pdns/dnsdistdist/mplexer.hh
      type: function<void(int, funcparam_t&)>
    - item_type: typedef
      name: '* getMultiplexer_t(unsigned int)'
      pos:
        line_end: 230
        line_start: 230
        source_file: /src/pdns/pdns/dnsdistdist/mplexer.hh
      type: FDMultiplexer
    - item_type: typedef
      name: FDMultiplexermap_t
      pos:
        line_end: 231
        line_start: 231
        source_file: /src/pdns/pdns/dnsdistdist/mplexer.hh
      type: multimap<int, getMultiplexer_t*>
    - item_type: typedef
      name: callbackmap_t
      pos:
        line_end: 292
        line_start: 284
        source_file: /src/pdns/pdns/dnsdistdist/mplexer.hh
      type: multi_index_container
    union: []
- function_names:
  - dnsdist::webserver::addMetricDefinition(const dnsdist::prometheus::PrometheusMetricDefinition&
    def)
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  source_file: /src/pdns/pdns/dnsdistdist/test-dnsdist-lua-ffi.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - addRingEntryToList
  - setupLuaBindingsRings
  source_file: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-rings.cc
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: qname
        type: DNSName
      - name: requestor
        type: ComboAddress
      - name: ds
        type: ComboAddress
      - name: when
        type: struct timespec
      - name: macAddr
        type: std::string
      - name: dh
        type: struct dnsheader
      - name: usec
        type: unsigned int
      - name: size
        type: unsigned int
      - name: qtype
        type: uint16_t
      - name: protocol
        type: dnsdist::Protocol
      - name: isResponse
        type: bool
      item_type: struct
      name: LuaRingEntry
      pos:
        line_end: 39
        line_start: 26
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-rings.cc
    typedefs: []
    union: []
- function_names:
  - DOQFrontend
  - DOQFrontend
  - '& operator=(const DOQFrontend&)'
  - '& operator=(DOQFrontend&&)'
  - '& getLogger()'
  - DOQUnit
  - DOQUnit
  - '& operator=(const DOQUnit&)'
  - DOQFrontend
  - setup
  source_file: /src/pdns/pdns/dnsdistdist/doq.hh
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: setup()
        type: void
      - name: reloadCertificates()
        type: void
      - name: d_logger
        type: std::shared_ptr<const Logr::Logger>
      - name: d_server_config
        type: std::unique_ptr<DOQServerConfig>
      - name: d_quicheParams
        type: dnsdist::doq::QuicheParams
      - name: d_local
        type: ComboAddress
      - name: d_doqUnsupportedVersionErrors
        type: pdns::stat_t
      - name: d_doqInvalidTokensReceived
        type: pdns::stat_t
      - name: d_validResponses
        type: pdns::stat_t
      - name: d_errorResponses
        type: pdns::stat_t
      item_type: struct
      name: DOQFrontend
      pos:
        line_end: 74
        line_start: 41
        source_file: /src/pdns/pdns/dnsdistdist/doq.hh
    - fields:
      - name: ids
        type: InternalQueryState
      - name: query
        type: PacketBuffer
      - name: response
        type: PacketBuffer
      - name: serverConnID
        type: PacketBuffer
      - name: downstream
        type: std::shared_ptr<DownstreamState>
      - name: sni
        type: std::shared_ptr<const std::string>
      - name: '* dsc'
        type: DOQServerConfig
      - name: streamID
        type: uint64_t
      - name: proxyProtocolPayloadSize
        type: size_t
      - name: tcp
        type: bool
      item_type: struct
      name: DOQUnit
      pos:
        line_end: 98
        line_start: 76
        source_file: /src/pdns/pdns/dnsdistdist/doq.hh
    - fields: []
      item_type: struct
      name: DOQUnit
      pos:
        line_end: 112
        line_start: 110
        source_file: /src/pdns/pdns/dnsdistdist/doq.hh
    - fields: []
      item_type: struct
      name: DOQFrontend
      pos:
        line_end: 122
        line_start: 114
        source_file: /src/pdns/pdns/dnsdistdist/doq.hh
    typedefs: []
    union: []
- function_names:
  - InternalQueryState::partialCloneForXFR
  - InternalQueryState::~InternalQueryState()
  - InternalQueryState::getCloser
  - InternalQueryState::getCloser
  - InternalQueryState::getCloser
  - InternalQueryState::getRulesCloser
  - InternalQueryState::getLogger
  source_file: /src/pdns/pdns/dnsdistdist/dnsdist-idstate.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/pdns/pdns/dnsdistdist/dnsdist-web.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - TLSFrontend::setupTLS
  - DNSDistSNMPAgent::sendDNSTrap
  - setLuaNoSideEffect
  - setupDoTProtocolNegotiation
  - responderThread
  - getDQ
  - benchPolicy
  - resetLuaContext
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  source_file: /src/pdns/pdns/dnsdistdist/test-dnsdistlbpolicies_cc.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  source_file: /src/pdns/pdns/dnsdistdist/test-dnsdistbackend_cc.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - ~EpollFDMultiplexer() override
  - EpollFDMultiplexer::getName
  - makeEpoll
  - EpollRegisterOurselves
  - EpollFDMultiplexer::EpollFDMultiplexer
  - convertEventKind
  - EpollFDMultiplexer::addFD
  - EpollFDMultiplexer::removeFD
  - EpollFDMultiplexer::alterFD
  - EpollFDMultiplexer::getAvailableFDs
  - EpollFDMultiplexer::run
  - acceptData
  - main
  source_file: /src/pdns/pdns/dnsdistdist/epollmplexer.cc
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields: []
      item_type: struct
      name: EpollRegisterOurselves
      pos:
        line_end: 74
        line_start: 68
        source_file: /src/pdns/pdns/dnsdistdist/epollmplexer.cc
    typedefs: []
    union: []
- function_names:
  - getEDNSExtendedErrorOptFromStringView
  - getEDNSExtendedErrorOptFromString
  - getEDNSExtendedErrorOptFromString
  - makeEDNSExtendedErrorOptString
  source_file: /src/pdns/pdns/dnsdistdist/ednsextendederror.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - DNSQuestion
  - '& operator=(const DNSQuestion&)'
  - DNSQuestion
  - ~DNSQuestion()
  - '& getData() const'
  - '& getMutableData()'
  - getHeader
  - getMutableHeader
  - hasRoomFor
  - getMaximumSize
  - getProtocol
  - overTCP
  - setTag
  - setTag
  - setTag
  - unsetTag
  - getTag
  - '& getQueryRealTime() const'
  - isAsynchronous
  - getIncomingTCPState
  - getFrontend
  - DNSResponse
  - DNSResponse
  - '& operator=(const DNSResponse&)'
  - DNSResponse
  - BasicQPSLimiter::BasicQPSLimiter
  - ~BasicQPSLimiter()
  - BasicQPSLimiter::check
  - BasicQPSLimiter::checkOnly
  - BasicQPSLimiter::addHit
  - BasicQPSLimiter::seenSince
  - QPSLimiter::QPSLimiter
  - QPSLimiter::getRate
  - QPSLimiter::check
  - QPSLimiter::checkOnly
  - QPSLimiter::addHit
  - ClientState
  - getSocket
  - isUDP
  - isTCP
  - isDoH
  - hasTLS
  - getTLSFrontend
  - getProtocol
  - getType
  - detachFilter
  - attachFilter
  - detachFilter
  - attachFilter
  - updateTCPMetrics
  - DownstreamState
  - DownstreamState
  - '& operator=(const DownstreamState&)'
  - '& operator=(DownstreamState&&)'
  - BaseConfig
  - BaseConfig
  - Config
  - Config
  - Config
  - DownstreamState
  - updateStatisticsInfo
  - isUp
  - setUp
  - setUpStatus
  - setDown
  - setAuto
  - setActiveAuto
  - setLazyAuto
  - '& getName() const'
  - '& getNameWithAddr() const'
  - setName
  - getStatus
  - isStopped
  - '& getID() const'
  - updateTCPMetrics
  - updateTCPLatency
  - incQueriesCount
  - doHealthcheckOverTCP
  - isTCPOnly
  - isDoH
  - getProtocol
  - getRelevantLatencyUsec
  source_file: /src/pdns/pdns/dnsdistdist/dnsdist.hh
  types:
    enum:
    - enumerators:
      - name: Up
      - name: Down
      - name: Auto
      item_type: enum
      name: Availability
      pos:
        line_end: 559
        line_start: 554
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist.hh
    - enumerators:
      - name: Active
      - name: Lazy
      item_type: enum
      name: HealthCheckMode
      pos:
        line_end: 564
        line_start: 560
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist.hh
    - enumerators:
      - name: TimeoutOnly
      - name: TimeoutOrServFail
      item_type: enum
      name: LazyHealthCheckMode
      pos:
        line_end: 569
        line_start: 565
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist.hh
    - enumerators:
      - name: Healthy
        value: '0'
      - name: PotentialFailure
      - name: Failed
      item_type: enum
      name: LazyStatus
      pos:
        line_end: 746
        line_start: 741
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist.hh
    - enumerators:
      - name: EDNS_HEADER_FLAG_NONE
        value: '0'
      - name: EDNS_HEADER_FLAG_DO
        value: '32768'
      item_type: enum
      name: ednsHeaderFlags
      pos:
        line_end: 981
        line_start: 977
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist.hh
    - enumerators:
      - name: Drop
      - name: Asynchronous
      - name: SendAnswer
      - name: PassToBackend
      item_type: enum
      name: ProcessQueryResult
      pos:
        line_end: 1007
        line_start: 1001
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist.hh
    preproc_defs: []
    structs:
    - fields:
      - name: getTrailingData() const
        type: std::string
      - name: setTrailingData(const std::string&)
        type: bool
      - name: editHeader(const std::function<bool(dnsheader&)>& editFunction)
        type: bool
      - name: getLogger(std::shared_ptr<const Logr::Logger> parent = nullptr) const
        type: std::shared_ptr<const Logr::Logger>
      - name: getLogger(std::shared_ptr<const Logr::Logger> parent = nullptr)
        type: std::shared_ptr<const Logr::Logger>
      - name: getThisLogger(std::shared_ptr<const Logr::Logger> parent) const
        type: std::shared_ptr<const Logr::Logger>
      - name: '& data'
        type: PacketBuffer
      - name: d_logger
        type: std::shared_ptr<const Logr::Logger>
      - name: '& ids'
        type: InternalQueryState
      - name: ecs
        type: std::unique_ptr<Netmask>
      - name: sni
        type: std::string
      - name: d_incomingTCPState
        type: std::shared_ptr<IncomingTCPConnectionState>
      - name: proxyProtocolValues
        type: std::unique_ptr<std::vector<ProxyProtocolValue>>
      - name: ecsPrefixLength
        type: uint16_t
      - name: ednsRCode
        type: uint8_t
      - name: ecsOverride
        type: bool
      - name: useECS
        type: bool
      - name: asynchronous
        type: bool
      - name: d_selfGeneratedHandledEDNS
        type: bool
      item_type: struct
      name: DNSQuestion
      pos:
        line_end: 210
        line_start: 63
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist.hh
    - fields:
      - name: '& d_downstream'
        type: std::shared_ptr<DownstreamState>
      - name: getThisLogger(std::shared_ptr<const Logr::Logger> parent) const override
        type: std::shared_ptr<const Logr::Logger>
      item_type: struct
      name: DNSResponse
      pos:
        line_end: 226
        line_start: 214
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist.hh
    - fields:
      - name: queries
        type: stat_t
      - name: nonCompliantQueries
        type: stat_t
      - name: responses
        type: stat_t
      - name: tcpDiedReadingQuery
        type: stat_t
      - name: tcpDiedSendingResponse
        type: stat_t
      - name: tcpGaveUp
        type: stat_t
      - name: tcpClientTimeouts
        type: stat_t
      - name: tcpDownstreamTimeouts
        type: stat_t
      - name: tcpCurrentConnections
        type: stat_t
      - name: tcpMaxConcurrentConnections
        type: stat_t
      - name: tlsNewSessions
        type: stat_t
      - name: tlsResumptions
        type: stat_t
      - name: tlsUnknownTicketKey
        type: stat_t
      - name: tlsInactiveTicketKey
        type: stat_t
      - name: tls10queries
        type: stat_t
      - name: tls11queries
        type: stat_t
      - name: tls12queries
        type: stat_t
      - name: tls13queries
        type: stat_t
      - name: tlsUnknownqueries
        type: stat_t
      - name: tcpAvgIOsPerConnection
        type: pdns::stat_double_t
      - name: tcpAvgQueriesPerConnection
        type: pdns::stat_double_t
      - name: tcpAvgConnectionDuration
        type: pdns::stat_double_t
      - name: cpus
        type: std::set<int>
      - name: interface
        type: std::string
      - name: local
        type: ComboAddress
      - name: d_additionalAddresses
        type: std::vector<std::pair<ComboAddress, int>>
      - name: dnscryptCtx
        type: std::shared_ptr<DNSCryptContext>
      - name: tlsFrontend
        type: std::shared_ptr<TLSFrontend>
      - name: dohFrontend
        type: std::shared_ptr<DOHFrontend>
      - name: doqFrontend
        type: std::shared_ptr<DOQFrontend>
      - name: doh3Frontend
        type: std::shared_ptr<DOH3Frontend>
      - name: d_filter
        type: std::shared_ptr<BPFFilter>
      - name: xskInfo
        type: std::shared_ptr<XskWorker>
      - name: xskInfoResponder
        type: std::shared_ptr<XskWorker>
      - name: d_maxInFlightQueriesPerConn
        type: size_t
      - name: d_tcpConcurrentConnectionsLimit
        type: size_t
      - name: udpFD
        type: int
      - name: tcpFD
        type: int
      - name: tcpListenQueueSize
        type: int
      - name: fastOpenQueueSize
        type: int
      - name: muted
        type: bool
      - name: tcp
        type: bool
      - name: reuseport
        type: bool
      - name: d_enableProxyProtocol
        type: bool
      - name: d_padResponses
        type: bool
      - name: ready
        type: bool
      item_type: struct
      name: ClientState
      pos:
        line_end: 539
        line_start: 339
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist.hh
    - fields:
      - name: d_config
        type: Config
      - name: d_healthCheckMetrics
        type: HealthCheckMetrics
      - name: sendErrors
        type: stat_t
      - name: outstanding
        type: stat_t
      - name: reuseds
        type: stat_t
      - name: queries
        type: stat_t
      - name: responses
        type: stat_t
      - name: nonCompliantResponses
        type: stat_t
      - name: prev
        type: "struct\n  {\n    stat_t sendErrors{0};\n    stat_t reuseds{0};\n    stat_t
          queries{0};\n  }"
      - name: tcpDiedSendingQuery
        type: stat_t
      - name: tcpDiedReadingResponse
        type: stat_t
      - name: tcpGaveUp
        type: stat_t
      - name: tcpReadTimeouts
        type: stat_t
      - name: tcpWriteTimeouts
        type: stat_t
      - name: tcpConnectTimeouts
        type: stat_t
      - name: tcpCurrentConnections
        type: stat_t
      - name: tcpMaxConcurrentConnections
        type: stat_t
      - name: tcpTooManyConcurrentConnections
        type: stat_t
      - name: tcpReusedConnections
        type: stat_t
      - name: tcpNewConnections
        type: stat_t
      - name: tlsResumptions
        type: stat_t
      - name: tcpAvgQueriesPerConnection
        type: pdns::stat_double_t
      - name: tcpAvgConnectionDuration
        type: pdns::stat_double_t
      - name: queryLoad
        type: pdns::stat_double_t
      - name: dropRate
        type: pdns::stat_double_t
      - name: hashes
        type: SharedLockGuarded<std::vector<unsigned int>>
      - name: mplexer
        type: LockGuarded<std::unique_ptr<FDMultiplexer>>
      - name: d_idStatesMap
        type: LockGuarded<std::map<uint16_t, IDState>>
      - name: idStates
        type: vector<IDState>
      - name: d_lazyHealthCheckStats
        type: LockGuarded<LazyHealthCheckStats>
      - name: d_tlsCtx
        type: std::shared_ptr<TLSCtx>
      - name: sockets
        type: std::vector<int>
      - name: sw
        type: StopWatch
      - name: d_qpsLimiter
        type: std::optional<QPSLimiter>
      - name: d_healthCheckLatencyHisto
        type: HealthCheckLatencyHisto
      - name: idOffset
        type: std::atomic<uint64_t>
      - name: d_healthCheckLatency
        type: std::atomic<double>
      - name: socketsOffset
        type: size_t
      - name: latencyUsec
        type: double
      - name: latencyUsecTCP
        type: double
      - name: d_nextCheck
        type: unsigned int
      - name: currentCheckFailures
        type: uint16_t
      - name: hashesComputed
        type: std::atomic<bool>
      - name: connected
        type: std::atomic<bool>
      - name: upStatus
        type: std::atomic<bool>
      - name: handleUDPTimeout(IDState& ids)
        type: void
      - name: updateNextLazyHealthCheck(LazyHealthCheckStats& stats, bool checkScheduled,
          std::optional<time_t> currentTime = std::nullopt)
        type: void
      - name: connectUDPSockets()
        type: void
      - name: connectLock
        type: std::mutex
      - name: d_connectedWait
        type: std::condition_variable
      - name: threadStarted
        type: std::atomic_flag
      - name: consecutiveSuccessfulChecks
        type: uint8_t
      - name: d_stopped
        type: bool
      - name: parseSourceParameter(const std::string& source, Config& config)
        type: bool
      - name: parseAvailabilityConfigFromStr(DownstreamState::Config& config, const
          std::string& str)
        type: bool
      - name: start()
        type: void
      - name: healthCheckRequired(std::optional<time_t> currentTime = std::nullopt)
        type: bool
      - name: reconnect(bool initialAttempt = false)
        type: bool
      - name: waitUntilConnected()
        type: void
      - name: hash()
        type: void
      - name: setId(const boost::uuids::uuid& newId)
        type: void
      - name: setWeight(int newWeight)
        type: void
      - name: stop()
        type: void
      - name: incCurrentConnectionsCount()
        type: void
      - name: passCrossProtocolQuery(std::unique_ptr<CrossProtocolQuery>&& cpq)
        type: bool
      - name: pickSocketForSending()
        type: int
      - name: pickSocketsReadyForReceiving(std::vector<int>& ready)
        type: void
      - name: handleUDPTimeouts()
        type: void
      - name: reportTimeoutOrError()
        type: void
      - name: reportResponse(uint8_t rcode)
        type: void
      - name: submitHealthCheckResult(bool initial, bool newResult)
        type: void
      - name: getNextLazyHealthCheck()
        type: time_t
      - name: saveState(InternalQueryState&&)
        type: uint16_t
      - name: restoreState(uint16_t id, InternalQueryState&&)
        type: void
      - name: getState(uint16_t id)
        type: std::optional<InternalQueryState>
      - name: getQPSLimit() const
        type: unsigned int
      - name: getLogger() const
        type: std::shared_ptr<const Logr::Logger>
      item_type: struct
      name: DownstreamState
      pos:
        line_end: 973
        line_start: 544
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist.hh
    - fields:
      - name: d_tlsParams
        type: TLSContextParameters
      - name: pools
        type: set<string>
      - name: d_cpus
        type: std::set<int>
      - name: d_healthCheckGenerationFunction
        type: HealthCheckQueryGenerator
      - name: d_healthCheckResponseValidationCallback
        type: HealthCheckResponseValidator
      - name: id
        type: std::optional<boost::uuids::uuid>
      - name: checkName
        type: DNSName
      - name: remote
        type: ComboAddress
      - name: sourceAddr
        type: ComboAddress
      - name: sourceItfName
        type: std::string
      - name: d_tlsSubjectName
        type: std::string
      - name: d_dohPath
        type: std::string
      - name: name
        type: std::string
      - name: nameWithAddr
        type: std::string
      - name: d_numberOfSockets
        type: size_t
      - name: d_maxInFlightQueriesPerConn
        type: size_t
      - name: d_maxUDPOutstanding
        type: size_t
      - name: d_tcpConcurrentConnectionsLimit
        type: size_t
      - name: order
        type: int
      - name: d_weight
        type: int
      - name: tcpConnectTimeout
        type: int
      - name: tcpRecvTimeout
        type: int
      - name: tcpSendTimeout
        type: int
      - name: d_qpsLimit
        type: int
      - name: sourceItf
        type: unsigned int
      - name: checkType
        type: QType
      - name: checkClass
        type: uint16_t
      - name: d_retries
        type: uint16_t
      - name: d_lazyHealthCheckSampleSize
        type: uint16_t
      - name: d_lazyHealthCheckMinSampleCount
        type: uint16_t
      - name: d_lazyHealthCheckFailedInterval
        type: uint16_t
      - name: d_lazyHealthCheckMaxBackOff
        type: uint16_t
      - name: d_lazyHealthCheckThreshold
        type: uint8_t
      - name: d_lazyHealthCheckMode
        type: LazyHealthCheckMode
      - name: udpTimeout
        type: uint8_t
      - name: dscp
        type: uint8_t
      - name: d_availability
        type: Availability
      - name: d_healthCheckMode
        type: HealthCheckMode
      - name: d_tlsSubjectIsAddr
        type: bool
      - name: mustResolve
        type: bool
      - name: useECS
        type: bool
      - name: useProxyProtocol
        type: bool
      - name: d_proxyProtocolAdvertiseTLS
        type: bool
      - name: setCD
        type: bool
      - name: disableZeroScope
        type: bool
      - name: tcpFastOpen
        type: bool
      - name: ipBindAddrNoPort
        type: bool
      - name: reconnectOnUp
        type: bool
      - name: d_tcpCheck
        type: bool
      - name: d_tcpOnly
        type: bool
      - name: d_addXForwardedHeaders
        type: bool
      - name: d_lazyHealthCheckUseExponentialBackOff
        type: bool
      - name: d_upgradeToLazyHealthChecks
        type: bool
      item_type: struct
      name: BaseConfig
      pos:
        line_end: 638
        line_start: 571
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist.hh
    - fields:
      - name: checkInterval
        type: std::atomic<unsigned int>
      - name: checkTimeout
        type: std::atomic<uint16_t>
      - name: maxCheckFailures
        type: std::atomic<uint8_t>
      - name: minRiseSuccesses
        type: std::atomic<uint8_t>
      item_type: struct
      name: Config
      pos:
        line_end: 663
        line_start: 640
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist.hh
    - fields:
      - name: d_failures
        type: stat_t
      - name: d_timeOuts
        type: stat_t
      - name: d_parseErrors
        type: stat_t
      - name: d_networkErrors
        type: stat_t
      - name: d_mismatchErrors
        type: stat_t
      - name: d_invalidResponseErrors
        type: stat_t
      item_type: struct
      name: HealthCheckMetrics
      pos:
        line_end: 673
        line_start: 665
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist.hh
    - fields:
      - name: latency0_1
        type: stat_t
      - name: latency1_10
        type: stat_t
      - name: latency10_50
        type: stat_t
      - name: latency50_100
        type: stat_t
      - name: latency100_1000
        type: stat_t
      - name: latencySlow
        type: stat_t
      - name: latencySum
        type: stat_t
      - name: latencyCount
        type: stat_t
      item_type: struct
      name: HealthCheckLatencyHisto
      pos:
        line_end: 685
        line_start: 675
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist.hh
    - fields:
      - name: d_lastResults
        type: boost::circular_buffer<bool>
      - name: d_nextCheck
        type: time_t
      - name: d_status
        type: LazyStatus
      item_type: struct
      name: LazyHealthCheckStats
      pos:
        line_end: 748
        line_start: 737
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist.hh
    typedefs: []
    union: []
- function_names:
  - TLSSessionCache::cleanup
  - TLSSessionCache::putSessions
  - TLSSessionCache::getSession
  - TLSSessionCache::getSize
  source_file: /src/pdns/pdns/dnsdistdist/dnsdist-session-cache.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/pdns/pdns/dnsdistdist/dnsdist-resolver.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - getNextEDNSOption
  - getEDNSOption
  - slowParseEDNSOptions
  - getEDNSOptions
  - getEDNSOptionsFromContent
  - generateEDNSOption
  source_file: /src/pdns/pdns/dnsdistdist/ednsoptions.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - processQueryAfterRules
  - processResponseAfterRules
  - applyRulesToResponse
  - handleTimeoutResponseRules
  - handleServerStateChange
  - sendUDPResponse
  - assignOutgoingUDPQueryToBackend
  - dnsdist::getInternalQueryFromDQ
  - dnsdist::getInternalQueryFromDQ
  - DNSDistSNMPAgent::sendBackendStatusChangeTrap
  - dnsdist::xsk::XskProcessQuery
  - dnsdist::xsk::XskProcessQuery
  - processResponderPacket
  - validateQuery
  - validateECS
  - validateResponse
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - turnIntoResponse
  - getZ
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  source_file: /src/pdns/pdns/dnsdistdist/test-dnsdist_cc.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  source_file: /src/pdns/pdns/dnsdistdist/test-mplexer.cc
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: sockets[2]
        type: int
      item_type: struct
      name: socket_pair
      pos:
        line_end: 314
        line_start: 311
        source_file: /src/pdns/pdns/dnsdistdist/test-mplexer.cc
    typedefs: []
    union: []
- function_names:
  - TestFixture
  - ~TestFixture()
  - TestFixtureWithSampling
  - ~TestFixtureWithSampling()
  - BOOST_FIXTURE_TEST_CASE
  - BOOST_FIXTURE_TEST_CASE
  - BOOST_FIXTURE_TEST_CASE
  - BOOST_FIXTURE_TEST_CASE
  - BOOST_FIXTURE_TEST_CASE
  - BOOST_FIXTURE_TEST_CASE
  - BOOST_FIXTURE_TEST_CASE
  - BOOST_FIXTURE_TEST_CASE
  - BOOST_FIXTURE_TEST_CASE
  - BOOST_FIXTURE_TEST_CASE
  - BOOST_FIXTURE_TEST_CASE
  - BOOST_FIXTURE_TEST_CASE
  - BOOST_FIXTURE_TEST_CASE
  - BOOST_FIXTURE_TEST_CASE
  - BOOST_FIXTURE_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  source_file: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields: []
      item_type: struct
      name: TestFixture
      pos:
        line_end: 36
        line_start: 21
        source_file: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc
    - fields: []
      item_type: struct
      name: TestFixtureWithSampling
      pos:
        line_end: 56
        line_start: 40
        source_file: /src/pdns/pdns/dnsdistdist/test-dnsdistdynblocks_hh.cc
    typedefs: []
    union: []
- function_names:
  - DynBPFFilter::block
  - DynBPFFilter::purgeExpired
  - DynBPFFilter::getAddrStats
  source_file: /src/pdns/pdns/dnsdistdist/dnsdist-dynbpf.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - pdns::ProtoZero::Message::Message
  - ~Message()
  - pdns::ProtoZero::Message::Message
  - pdns::ProtoZero::Message::Message
  - '& operator=(const Message&)'
  - '& operator=(Message&&)'
  - pdns::ProtoZero::Message::setType
  - pdns::ProtoZero::Message::setHTTPVersion
  - pdns::ProtoZero::Message::setMessageIdentity
  - pdns::ProtoZero::Message::setServerIdentity
  - pdns::ProtoZero::Message::setSocketFamily
  - pdns::ProtoZero::Message::setSocketProtocol
  - pdns::ProtoZero::Message::setFrom
  - pdns::ProtoZero::Message::setTo
  - pdns::ProtoZero::Message::setInBytes
  - pdns::ProtoZero::Message::setTime
  - pdns::ProtoZero::Message::setTime
  - pdns::ProtoZero::Message::setId
  - pdns::ProtoZero::Message::setQuestion
  - pdns::ProtoZero::Message::setMeta
  - pdns::ProtoZero::Message::setEDNSSubnet
  - pdns::ProtoZero::Message::setRequestorId
  - pdns::ProtoZero::Message::setInitialRequestID
  - pdns::ProtoZero::Message::setDeviceId
  - pdns::ProtoZero::Message::setNewlyObservedDomain
  - pdns::ProtoZero::Message::setDeviceName
  - pdns::ProtoZero::Message::setFromPort
  - pdns::ProtoZero::Message::setToPort
  - pdns::ProtoZero::Message::setWorkerId
  - pdns::ProtoZero::Message::setPacketCacheHit
  - pdns::ProtoZero::Message::setOutgoingQueries
  - pdns::ProtoZero::Message::setHeaderFlags
  - pdns::ProtoZero::Message::setEDNSVersion
  - pdns::ProtoZero::Message::setOpenTelemetryData
  - pdns::ProtoZero::Message::setEDE
  - pdns::ProtoZero::Message::setEDEText
  - pdns::ProtoZero::Message::setOpenTelemetryTraceID
  - pdns::ProtoZero::Message::startResponse
  - pdns::ProtoZero::Message::commitResponse
  - pdns::ProtoZero::Message::setResponseCode
  - pdns::ProtoZero::Message::setNetworkErrorResponseCode
  - pdns::ProtoZero::Message::setAppliedPolicy
  - pdns::ProtoZero::Message::addPolicyTags
  - pdns::ProtoZero::Message::addPolicyTag
  - pdns::ProtoZero::Message::setQueryTime
  - pdns::ProtoZero::Message::add_enum
  - pdns::ProtoZero::Message::add_bool
  - pdns::ProtoZero::Message::add_uint32
  - pdns::ProtoZero::Message::add_uint64
  - pdns::ProtoZero::Message::add_bytes
  - pdns::ProtoZero::Message::add_string
  - pdns::ProtoZero::Message::Message
  - ~Message()
  - pdns::ProtoZero::Message::Message
  - pdns::ProtoZero::Message::Message
  - '& operator=(const Message&)'
  - '& operator=(Message&&)'
  - pdns::ProtoZero::Message::setType
  - pdns::ProtoZero::Message::setHTTPVersion
  - pdns::ProtoZero::Message::setMessageIdentity
  - pdns::ProtoZero::Message::setServerIdentity
  - pdns::ProtoZero::Message::setSocketFamily
  - pdns::ProtoZero::Message::setSocketProtocol
  - pdns::ProtoZero::Message::setFrom
  - pdns::ProtoZero::Message::setTo
  - pdns::ProtoZero::Message::setInBytes
  - pdns::ProtoZero::Message::setTime
  - pdns::ProtoZero::Message::setTime
  - pdns::ProtoZero::Message::setId
  - pdns::ProtoZero::Message::setQuestion
  - pdns::ProtoZero::Message::setMeta
  - pdns::ProtoZero::Message::setEDNSSubnet
  - pdns::ProtoZero::Message::setRequestorId
  - pdns::ProtoZero::Message::setInitialRequestID
  - pdns::ProtoZero::Message::setDeviceId
  - pdns::ProtoZero::Message::setNewlyObservedDomain
  - pdns::ProtoZero::Message::setDeviceName
  - pdns::ProtoZero::Message::setFromPort
  - pdns::ProtoZero::Message::setToPort
  - pdns::ProtoZero::Message::setWorkerId
  - pdns::ProtoZero::Message::setPacketCacheHit
  - pdns::ProtoZero::Message::setOutgoingQueries
  - pdns::ProtoZero::Message::setHeaderFlags
  - pdns::ProtoZero::Message::setEDNSVersion
  - pdns::ProtoZero::Message::setOpenTelemetryData
  - pdns::ProtoZero::Message::setEDE
  - pdns::ProtoZero::Message::setEDEText
  - pdns::ProtoZero::Message::setOpenTelemetryTraceID
  - pdns::ProtoZero::Message::startResponse
  - pdns::ProtoZero::Message::commitResponse
  - pdns::ProtoZero::Message::setResponseCode
  - pdns::ProtoZero::Message::setNetworkErrorResponseCode
  - pdns::ProtoZero::Message::setAppliedPolicy
  - pdns::ProtoZero::Message::addPolicyTags
  - pdns::ProtoZero::Message::addPolicyTag
  - pdns::ProtoZero::Message::setQueryTime
  - pdns::ProtoZero::Message::add_enum
  - pdns::ProtoZero::Message::add_bool
  - pdns::ProtoZero::Message::add_uint32
  - pdns::ProtoZero::Message::add_uint64
  - pdns::ProtoZero::Message::add_bytes
  - pdns::ProtoZero::Message::add_string
  - pdns::ProtoZero::Message::Message
  - ~Message()
  - pdns::ProtoZero::Message::Message
  - pdns::ProtoZero::Message::Message
  - '& operator=(const Message&)'
  - '& operator=(Message&&)'
  - pdns::ProtoZero::Message::setType
  - pdns::ProtoZero::Message::setHTTPVersion
  - pdns::ProtoZero::Message::setMessageIdentity
  - pdns::ProtoZero::Message::setServerIdentity
  - pdns::ProtoZero::Message::setSocketFamily
  - pdns::ProtoZero::Message::setSocketProtocol
  - pdns::ProtoZero::Message::setFrom
  - pdns::ProtoZero::Message::setTo
  - pdns::ProtoZero::Message::setInBytes
  - pdns::ProtoZero::Message::setTime
  - pdns::ProtoZero::Message::setTime
  - pdns::ProtoZero::Message::setId
  - pdns::ProtoZero::Message::setQuestion
  - pdns::ProtoZero::Message::setMeta
  - pdns::ProtoZero::Message::setEDNSSubnet
  - pdns::ProtoZero::Message::setRequestorId
  - pdns::ProtoZero::Message::setInitialRequestID
  - pdns::ProtoZero::Message::setDeviceId
  - pdns::ProtoZero::Message::setNewlyObservedDomain
  - pdns::ProtoZero::Message::setDeviceName
  - pdns::ProtoZero::Message::setFromPort
  - pdns::ProtoZero::Message::setToPort
  - pdns::ProtoZero::Message::setWorkerId
  - pdns::ProtoZero::Message::setPacketCacheHit
  - pdns::ProtoZero::Message::setOutgoingQueries
  - pdns::ProtoZero::Message::setHeaderFlags
  - pdns::ProtoZero::Message::setEDNSVersion
  - pdns::ProtoZero::Message::setOpenTelemetryData
  - pdns::ProtoZero::Message::setEDE
  - pdns::ProtoZero::Message::setEDEText
  - pdns::ProtoZero::Message::setOpenTelemetryTraceID
  - pdns::ProtoZero::Message::startResponse
  - pdns::ProtoZero::Message::commitResponse
  - pdns::ProtoZero::Message::setResponseCode
  - pdns::ProtoZero::Message::setNetworkErrorResponseCode
  - pdns::ProtoZero::Message::setAppliedPolicy
  - pdns::ProtoZero::Message::addPolicyTags
  - pdns::ProtoZero::Message::addPolicyTag
  - pdns::ProtoZero::Message::setQueryTime
  - pdns::ProtoZero::Message::add_enum
  - pdns::ProtoZero::Message::add_bool
  - pdns::ProtoZero::Message::add_uint32
  - pdns::ProtoZero::Message::add_uint64
  - pdns::ProtoZero::Message::add_bytes
  - pdns::ProtoZero::Message::add_string
  - pdns::ProtoZero::Message::Message
  - ~Message()
  - pdns::ProtoZero::Message::Message
  - pdns::ProtoZero::Message::Message
  - '& operator=(const Message&)'
  - '& operator=(Message&&)'
  - pdns::ProtoZero::Message::setType
  - pdns::ProtoZero::Message::setHTTPVersion
  - pdns::ProtoZero::Message::setMessageIdentity
  - pdns::ProtoZero::Message::setServerIdentity
  - pdns::ProtoZero::Message::setSocketFamily
  - pdns::ProtoZero::Message::setSocketProtocol
  - pdns::ProtoZero::Message::setFrom
  - pdns::ProtoZero::Message::setTo
  - pdns::ProtoZero::Message::setInBytes
  - pdns::ProtoZero::Message::setTime
  - pdns::ProtoZero::Message::setTime
  - pdns::ProtoZero::Message::setId
  - pdns::ProtoZero::Message::setQuestion
  - pdns::ProtoZero::Message::setMeta
  - pdns::ProtoZero::Message::setEDNSSubnet
  - pdns::ProtoZero::Message::setRequestorId
  - pdns::ProtoZero::Message::setInitialRequestID
  - pdns::ProtoZero::Message::setDeviceId
  - pdns::ProtoZero::Message::setNewlyObservedDomain
  - pdns::ProtoZero::Message::setDeviceName
  - pdns::ProtoZero::Message::setFromPort
  - pdns::ProtoZero::Message::setToPort
  - pdns::ProtoZero::Message::setWorkerId
  - pdns::ProtoZero::Message::setPacketCacheHit
  - pdns::ProtoZero::Message::setOutgoingQueries
  - pdns::ProtoZero::Message::setHeaderFlags
  - pdns::ProtoZero::Message::setEDNSVersion
  - pdns::ProtoZero::Message::setOpenTelemetryData
  - pdns::ProtoZero::Message::setEDE
  - pdns::ProtoZero::Message::setEDEText
  - pdns::ProtoZero::Message::setOpenTelemetryTraceID
  - pdns::ProtoZero::Message::startResponse
  - pdns::ProtoZero::Message::commitResponse
  - pdns::ProtoZero::Message::setResponseCode
  - pdns::ProtoZero::Message::setNetworkErrorResponseCode
  - pdns::ProtoZero::Message::setAppliedPolicy
  - pdns::ProtoZero::Message::addPolicyTags
  - pdns::ProtoZero::Message::addPolicyTag
  - pdns::ProtoZero::Message::setQueryTime
  - pdns::ProtoZero::Message::add_enum
  - pdns::ProtoZero::Message::add_bool
  - pdns::ProtoZero::Message::add_uint32
  - pdns::ProtoZero::Message::add_uint64
  - pdns::ProtoZero::Message::add_bytes
  - pdns::ProtoZero::Message::add_string
  source_file: /src/pdns/pdns/dnsdistdist/protozero.hh
  types:
    enum:
    - enumerators:
      - name: stringVal
        value: '1'
      - name: intVal
        value: '2'
      item_type: enum
      name: MetaValueField
      pos:
        line_end: 44
        line_start: 40
        source_file: /src/pdns/pdns/dnsdistdist/protozero.hh
    - enumerators:
      - name: HTTP1
        value: '1'
      - name: HTTP3
        value: '3'
      - name: HTTP2
        value: '2'
      item_type: enum
      name: HTTPVersion
      pos:
        line_end: 50
        line_start: 45
        source_file: /src/pdns/pdns/dnsdistdist/protozero.hh
    - enumerators:
      - name: key
        value: '1'
      - name: value
        value: '2'
      item_type: enum
      name: MetaField
      pos:
        line_end: 55
        line_start: 51
        source_file: /src/pdns/pdns/dnsdistdist/protozero.hh
    - enumerators:
      - name: ts
        value: '1'
      - name: event
        value: '2'
      - name: start
        value: '3'
      - name: boolVal
        value: '4'
      - name: intVal
        value: '5'
      - name: stringVal
        value: '6'
      - name: bytesVal
        value: '7'
      - name: custom
        value: '8'
      item_type: enum
      name: Event
      pos:
        line_end: 66
        line_start: 56
        source_file: /src/pdns/pdns/dnsdistdist/protozero.hh
    - enumerators:
      - name: DNSQueryType
        value: '1'
      - name: DNSResponseType
        value: '2'
      - name: DNSOutgoingQueryType
        value: '3'
      - name: DNSIncomingResponseType
        value: '4'
      item_type: enum
      name: MessageType
      pos:
        line_end: 73
        line_start: 67
        source_file: /src/pdns/pdns/dnsdistdist/protozero.hh
    - enumerators:
      - name: socketProtocol
        value: '5'
      - name: timeSec
        value: '9'
      - name: response
        value: '13'
      - name: deviceId
        value: '17'
      - name: trace
        value: '23'
      - name: outgoingQueries
        value: '27'
      - name: ede
        value: '31'
      - name: messageId
        value: '2'
      - name: from
        value: '6'
      - name: timeUsec
        value: '10'
      - name: originalRequestorSubnet
        value: '14'
      - name: newlyObservedDomain
        value: '18'
      - name: fromPort
        value: '20'
      - name: httpVersion
        value: '24'
      - name: headerFlags
        value: '28'
      - name: edeText
        value: '32'
      - name: serverIdentity
        value: '3'
      - name: to
        value: '7'
      - name: requestorId
        value: '15'
      - name: deviceName
        value: '19'
      - name: id
        value: '11'
      - name: toPort
        value: '21'
      - name: workerId
        value: '25'
      - name: ednsVersion
        value: '29'
      - name: openTelemetryTraceID
        value: '33'
      - name: type
        value: '1'
      - name: socketFamily
        value: '4'
      - name: inBytes
        value: '8'
      - name: initialRequestId
        value: '16'
      - name: question
        value: '12'
      - name: meta
        value: '22'
      - name: packetCacheHit
        value: '26'
      - name: openTelemetryData
        value: '30'
      item_type: enum
      name: Field
      pos:
        line_end: 109
        line_start: 74
        source_file: /src/pdns/pdns/dnsdistdist/protozero.hh
    - enumerators:
      - name: qName
        value: '1'
      - name: qClass
        value: '3'
      - name: qType
        value: '2'
      item_type: enum
      name: QuestionField
      pos:
        line_end: 115
        line_start: 110
        source_file: /src/pdns/pdns/dnsdistdist/protozero.hh
    - enumerators:
      - name: rcode
        value: '1'
      - name: appliedPolicy
        value: '3'
      - name: rrs
        value: '2'
      - name: queryTimeSec
        value: '5'
      - name: tags
        value: '4'
      - name: queryTimeUsec
        value: '6'
      - name: appliedPolicyType
        value: '7'
      - name: appliedPolicyTrigger
        value: '8'
      - name: appliedPolicyHit
        value: '9'
      - name: appliedPolicyKind
        value: '10'
      - name: validationState
        value: '11'
      item_type: enum
      name: ResponseField
      pos:
        line_end: 129
        line_start: 116
        source_file: /src/pdns/pdns/dnsdistdist/protozero.hh
    - enumerators:
      - name: name
        value: '1'
      - name: type
        value: '2'
      - name: class_
        value: '3'
      - name: ttl
        value: '4'
      - name: rdata
        value: '5'
      - name: udr
        value: '6'
      item_type: enum
      name: RRField
      pos:
        line_end: 138
        line_start: 130
        source_file: /src/pdns/pdns/dnsdistdist/protozero.hh
    - enumerators:
      - name: UDP
        value: '1'
      - name: DoH
        value: '4'
      - name: DNSCryptUDP
        value: '5'
      - name: DoT
        value: '3'
      - name: TCP
        value: '2'
      - name: DNSCryptTCP
        value: '6'
      - name: DoQ
        value: '7'
      item_type: enum
      name: TransportProtocol
      pos:
        line_end: 148
        line_start: 139
        source_file: /src/pdns/pdns/dnsdistdist/protozero.hh
    - enumerators:
      - name: stringVal
        value: '1'
      - name: intVal
        value: '2'
      item_type: enum
      name: MetaValueField
      pos:
        line_end: 44
        line_start: 40
        source_file: /src/pdns/pdns/dnsdistdist/protozero.hh
    - enumerators:
      - name: HTTP1
        value: '1'
      - name: HTTP3
        value: '3'
      - name: HTTP2
        value: '2'
      item_type: enum
      name: HTTPVersion
      pos:
        line_end: 50
        line_start: 45
        source_file: /src/pdns/pdns/dnsdistdist/protozero.hh
    - enumerators:
      - name: key
        value: '1'
      - name: value
        value: '2'
      item_type: enum
      name: MetaField
      pos:
        line_end: 55
        line_start: 51
        source_file: /src/pdns/pdns/dnsdistdist/protozero.hh
    - enumerators:
      - name: ts
        value: '1'
      - name: event
        value: '2'
      - name: start
        value: '3'
      - name: boolVal
        value: '4'
      - name: intVal
        value: '5'
      - name: stringVal
        value: '6'
      - name: bytesVal
        value: '7'
      - name: custom
        value: '8'
      item_type: enum
      name: Event
      pos:
        line_end: 66
        line_start: 56
        source_file: /src/pdns/pdns/dnsdistdist/protozero.hh
    - enumerators:
      - name: DNSQueryType
        value: '1'
      - name: DNSResponseType
        value: '2'
      - name: DNSOutgoingQueryType
        value: '3'
      - name: DNSIncomingResponseType
        value: '4'
      item_type: enum
      name: MessageType
      pos:
        line_end: 73
        line_start: 67
        source_file: /src/pdns/pdns/dnsdistdist/protozero.hh
    - enumerators:
      - name: socketProtocol
        value: '5'
      - name: timeSec
        value: '9'
      - name: response
        value: '13'
      - name: deviceId
        value: '17'
      - name: trace
        value: '23'
      - name: outgoingQueries
        value: '27'
      - name: ede
        value: '31'
      - name: messageId
        value: '2'
      - name: from
        value: '6'
      - name: timeUsec
        value: '10'
      - name: originalRequestorSubnet
        value: '14'
      - name: newlyObservedDomain
        value: '18'
      - name: fromPort
        value: '20'
      - name: httpVersion
        value: '24'
      - name: headerFlags
        value: '28'
      - name: edeText
        value: '32'
      - name: serverIdentity
        value: '3'
      - name: to
        value: '7'
      - name: requestorId
        value: '15'
      - name: deviceName
        value: '19'
      - name: id
        value: '11'
      - name: toPort
        value: '21'
      - name: workerId
        value: '25'
      - name: ednsVersion
        value: '29'
      - name: openTelemetryTraceID
        value: '33'
      - name: type
        value: '1'
      - name: socketFamily
        value: '4'
      - name: inBytes
        value: '8'
      - name: initialRequestId
        value: '16'
      - name: question
        value: '12'
      - name: meta
        value: '22'
      - name: packetCacheHit
        value: '26'
      - name: openTelemetryData
        value: '30'
      item_type: enum
      name: Field
      pos:
        line_end: 109
        line_start: 74
        source_file: /src/pdns/pdns/dnsdistdist/protozero.hh
    - enumerators:
      - name: qName
        value: '1'
      - name: qClass
        value: '3'
      - name: qType
        value: '2'
      item_type: enum
      name: QuestionField
      pos:
        line_end: 115
        line_start: 110
        source_file: /src/pdns/pdns/dnsdistdist/protozero.hh
    - enumerators:
      - name: rcode
        value: '1'
      - name: appliedPolicy
        value: '3'
      - name: rrs
        value: '2'
      - name: queryTimeSec
        value: '5'
      - name: tags
        value: '4'
      - name: queryTimeUsec
        value: '6'
      - name: appliedPolicyType
        value: '7'
      - name: appliedPolicyTrigger
        value: '8'
      - name: appliedPolicyHit
        value: '9'
      - name: appliedPolicyKind
        value: '10'
      - name: validationState
        value: '11'
      item_type: enum
      name: ResponseField
      pos:
        line_end: 129
        line_start: 116
        source_file: /src/pdns/pdns/dnsdistdist/protozero.hh
    - enumerators:
      - name: name
        value: '1'
      - name: type
        value: '2'
      - name: class_
        value: '3'
      - name: ttl
        value: '4'
      - name: rdata
        value: '5'
      - name: udr
        value: '6'
      item_type: enum
      name: RRField
      pos:
        line_end: 138
        line_start: 130
        source_file: /src/pdns/pdns/dnsdistdist/protozero.hh
    - enumerators:
      - name: UDP
        value: '1'
      - name: DoH
        value: '4'
      - name: DNSCryptUDP
        value: '5'
      - name: DoT
        value: '3'
      - name: TCP
        value: '2'
      - name: DNSCryptTCP
        value: '6'
      - name: DoQ
        value: '7'
      item_type: enum
      name: TransportProtocol
      pos:
        line_end: 148
        line_start: 139
        source_file: /src/pdns/pdns/dnsdistdist/protozero.hh
    - enumerators:
      - name: stringVal
        value: '1'
      - name: intVal
        value: '2'
      item_type: enum
      name: MetaValueField
      pos:
        line_end: 44
        line_start: 40
        source_file: /src/pdns/pdns/dnsdistdist/protozero.hh
    - enumerators:
      - name: HTTP1
        value: '1'
      - name: HTTP3
        value: '3'
      - name: HTTP2
        value: '2'
      item_type: enum
      name: HTTPVersion
      pos:
        line_end: 50
        line_start: 45
        source_file: /src/pdns/pdns/dnsdistdist/protozero.hh
    - enumerators:
      - name: key
        value: '1'
      - name: value
        value: '2'
      item_type: enum
      name: MetaField
      pos:
        line_end: 55
        line_start: 51
        source_file: /src/pdns/pdns/dnsdistdist/protozero.hh
    - enumerators:
      - name: ts
        value: '1'
      - name: event
        value: '2'
      - name: start
        value: '3'
      - name: boolVal
        value: '4'
      - name: intVal
        value: '5'
      - name: stringVal
        value: '6'
      - name: bytesVal
        value: '7'
      - name: custom
        value: '8'
      item_type: enum
      name: Event
      pos:
        line_end: 66
        line_start: 56
        source_file: /src/pdns/pdns/dnsdistdist/protozero.hh
    - enumerators:
      - name: DNSQueryType
        value: '1'
      - name: DNSResponseType
        value: '2'
      - name: DNSOutgoingQueryType
        value: '3'
      - name: DNSIncomingResponseType
        value: '4'
      item_type: enum
      name: MessageType
      pos:
        line_end: 73
        line_start: 67
        source_file: /src/pdns/pdns/dnsdistdist/protozero.hh
    - enumerators:
      - name: socketProtocol
        value: '5'
      - name: timeSec
        value: '9'
      - name: response
        value: '13'
      - name: deviceId
        value: '17'
      - name: trace
        value: '23'
      - name: outgoingQueries
        value: '27'
      - name: ede
        value: '31'
      - name: messageId
        value: '2'
      - name: from
        value: '6'
      - name: timeUsec
        value: '10'
      - name: originalRequestorSubnet
        value: '14'
      - name: newlyObservedDomain
        value: '18'
      - name: fromPort
        value: '20'
      - name: httpVersion
        value: '24'
      - name: headerFlags
        value: '28'
      - name: edeText
        value: '32'
      - name: serverIdentity
        value: '3'
      - name: to
        value: '7'
      - name: requestorId
        value: '15'
      - name: deviceName
        value: '19'
      - name: id
        value: '11'
      - name: toPort
        value: '21'
      - name: workerId
        value: '25'
      - name: ednsVersion
        value: '29'
      - name: openTelemetryTraceID
        value: '33'
      - name: type
        value: '1'
      - name: socketFamily
        value: '4'
      - name: inBytes
        value: '8'
      - name: initialRequestId
        value: '16'
      - name: question
        value: '12'
      - name: meta
        value: '22'
      - name: packetCacheHit
        value: '26'
      - name: openTelemetryData
        value: '30'
      item_type: enum
      name: Field
      pos:
        line_end: 109
        line_start: 74
        source_file: /src/pdns/pdns/dnsdistdist/protozero.hh
    - enumerators:
      - name: qName
        value: '1'
      - name: qClass
        value: '3'
      - name: qType
        value: '2'
      item_type: enum
      name: QuestionField
      pos:
        line_end: 115
        line_start: 110
        source_file: /src/pdns/pdns/dnsdistdist/protozero.hh
    - enumerators:
      - name: rcode
        value: '1'
      - name: appliedPolicy
        value: '3'
      - name: rrs
        value: '2'
      - name: queryTimeSec
        value: '5'
      - name: tags
        value: '4'
      - name: queryTimeUsec
        value: '6'
      - name: appliedPolicyType
        value: '7'
      - name: appliedPolicyTrigger
        value: '8'
      - name: appliedPolicyHit
        value: '9'
      - name: appliedPolicyKind
        value: '10'
      - name: validationState
        value: '11'
      item_type: enum
      name: ResponseField
      pos:
        line_end: 129
        line_start: 116
        source_file: /src/pdns/pdns/dnsdistdist/protozero.hh
    - enumerators:
      - name: name
        value: '1'
      - name: type
        value: '2'
      - name: class_
        value: '3'
      - name: ttl
        value: '4'
      - name: rdata
        value: '5'
      - name: udr
        value: '6'
      item_type: enum
      name: RRField
      pos:
        line_end: 138
        line_start: 130
        source_file: /src/pdns/pdns/dnsdistdist/protozero.hh
    - enumerators:
      - name: UDP
        value: '1'
      - name: DoH
        value: '4'
      - name: DNSCryptUDP
        value: '5'
      - name: DoT
        value: '3'
      - name: TCP
        value: '2'
      - name: DNSCryptTCP
        value: '6'
      - name: DoQ
        value: '7'
      item_type: enum
      name: TransportProtocol
      pos:
        line_end: 148
        line_start: 139
        source_file: /src/pdns/pdns/dnsdistdist/protozero.hh
    - enumerators:
      - name: stringVal
        value: '1'
      - name: intVal
        value: '2'
      item_type: enum
      name: MetaValueField
      pos:
        line_end: 44
        line_start: 40
        source_file: /src/pdns/pdns/dnsdistdist/protozero.hh
    - enumerators:
      - name: HTTP1
        value: '1'
      - name: HTTP3
        value: '3'
      - name: HTTP2
        value: '2'
      item_type: enum
      name: HTTPVersion
      pos:
        line_end: 50
        line_start: 45
        source_file: /src/pdns/pdns/dnsdistdist/protozero.hh
    - enumerators:
      - name: key
        value: '1'
      - name: value
        value: '2'
      item_type: enum
      name: MetaField
      pos:
        line_end: 55
        line_start: 51
        source_file: /src/pdns/pdns/dnsdistdist/protozero.hh
    - enumerators:
      - name: ts
        value: '1'
      - name: event
        value: '2'
      - name: start
        value: '3'
      - name: boolVal
        value: '4'
      - name: intVal
        value: '5'
      - name: stringVal
        value: '6'
      - name: bytesVal
        value: '7'
      - name: custom
        value: '8'
      item_type: enum
      name: Event
      pos:
        line_end: 66
        line_start: 56
        source_file: /src/pdns/pdns/dnsdistdist/protozero.hh
    - enumerators:
      - name: DNSQueryType
        value: '1'
      - name: DNSResponseType
        value: '2'
      - name: DNSOutgoingQueryType
        value: '3'
      - name: DNSIncomingResponseType
        value: '4'
      item_type: enum
      name: MessageType
      pos:
        line_end: 73
        line_start: 67
        source_file: /src/pdns/pdns/dnsdistdist/protozero.hh
    - enumerators:
      - name: socketProtocol
        value: '5'
      - name: timeSec
        value: '9'
      - name: response
        value: '13'
      - name: deviceId
        value: '17'
      - name: trace
        value: '23'
      - name: outgoingQueries
        value: '27'
      - name: ede
        value: '31'
      - name: messageId
        value: '2'
      - name: from
        value: '6'
      - name: timeUsec
        value: '10'
      - name: originalRequestorSubnet
        value: '14'
      - name: newlyObservedDomain
        value: '18'
      - name: fromPort
        value: '20'
      - name: httpVersion
        value: '24'
      - name: headerFlags
        value: '28'
      - name: edeText
        value: '32'
      - name: serverIdentity
        value: '3'
      - name: to
        value: '7'
      - name: requestorId
        value: '15'
      - name: deviceName
        value: '19'
      - name: id
        value: '11'
      - name: toPort
        value: '21'
      - name: workerId
        value: '25'
      - name: ednsVersion
        value: '29'
      - name: openTelemetryTraceID
        value: '33'
      - name: type
        value: '1'
      - name: socketFamily
        value: '4'
      - name: inBytes
        value: '8'
      - name: initialRequestId
        value: '16'
      - name: question
        value: '12'
      - name: meta
        value: '22'
      - name: packetCacheHit
        value: '26'
      - name: openTelemetryData
        value: '30'
      item_type: enum
      name: Field
      pos:
        line_end: 109
        line_start: 74
        source_file: /src/pdns/pdns/dnsdistdist/protozero.hh
    - enumerators:
      - name: qName
        value: '1'
      - name: qClass
        value: '3'
      - name: qType
        value: '2'
      item_type: enum
      name: QuestionField
      pos:
        line_end: 115
        line_start: 110
        source_file: /src/pdns/pdns/dnsdistdist/protozero.hh
    - enumerators:
      - name: rcode
        value: '1'
      - name: appliedPolicy
        value: '3'
      - name: rrs
        value: '2'
      - name: queryTimeSec
        value: '5'
      - name: tags
        value: '4'
      - name: queryTimeUsec
        value: '6'
      - name: appliedPolicyType
        value: '7'
      - name: appliedPolicyTrigger
        value: '8'
      - name: appliedPolicyHit
        value: '9'
      - name: appliedPolicyKind
        value: '10'
      - name: validationState
        value: '11'
      item_type: enum
      name: ResponseField
      pos:
        line_end: 129
        line_start: 116
        source_file: /src/pdns/pdns/dnsdistdist/protozero.hh
    - enumerators:
      - name: name
        value: '1'
      - name: type
        value: '2'
      - name: class_
        value: '3'
      - name: ttl
        value: '4'
      - name: rdata
        value: '5'
      - name: udr
        value: '6'
      item_type: enum
      name: RRField
      pos:
        line_end: 138
        line_start: 130
        source_file: /src/pdns/pdns/dnsdistdist/protozero.hh
    - enumerators:
      - name: UDP
        value: '1'
      - name: DoH
        value: '4'
      - name: DNSCryptUDP
        value: '5'
      - name: DoT
        value: '3'
      - name: TCP
        value: '2'
      - name: DNSCryptTCP
        value: '6'
      - name: DoQ
        value: '7'
      item_type: enum
      name: TransportProtocol
      pos:
        line_end: 148
        line_start: 139
        source_file: /src/pdns/pdns/dnsdistdist/protozero.hh
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - handleCounter64Stats
  - registerCounter64Stat
  - handleFloatStats
  - registerFloatStat
  - handleGauge64Stats
  - registerGauge64Stat
  - backendStatTable_get_next_data_point
  - backendStatTable_get_first_data_point
  - backendStatTable_handler
  - DNSDistSNMPAgent::sendBackendStatusChangeTrap
  - DNSDistSNMPAgent::sendCustomTrap
  - DNSDistSNMPAgent::sendDNSTrap
  - DNSDistSNMPAgent::DNSDistSNMPAgent
  source_file: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: DNSDIST_OID
      pos:
        line_end: 19
        line_start: 18
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc
      type_or_value: 1, 3, 6, 1, 4, 1, 43315, 3
    - item_type: preproc_def
      name: DNSDIST_STATS_OID
      pos:
        line_end: 20
        line_start: 19
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc
      type_or_value: DNSDIST_OID, 1
    - item_type: preproc_def
      name: DNSDIST_STATS_TABLE_OID
      pos:
        line_end: 21
        line_start: 20
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc
      type_or_value: DNSDIST_OID, 2
    - item_type: preproc_def
      name: DNSDIST_TRAPS_OID
      pos:
        line_end: 22
        line_start: 21
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc
      type_or_value: DNSDIST_OID, 10, 0
    - item_type: preproc_def
      name: DNSDIST_TRAP_OBJECTS_OID
      pos:
        line_end: 23
        line_start: 22
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-snmp.cc
      type_or_value: DNSDIST_OID, 11
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/pdns/pdns/dnsdistdist/circular_buffer.hh
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: BOOST_CB_DISABLE_DEBUG
      pos:
        line_end: 25
        line_start: 24
        source_file: /src/pdns/pdns/dnsdistdist/circular_buffer.hh
      type_or_value: '1'
    - item_type: preproc_def
      name: BOOST_CB_ENABLE_DEBUG
      pos:
        line_end: 29
        line_start: 28
        source_file: /src/pdns/pdns/dnsdistdist/circular_buffer.hh
      type_or_value: '0'
    structs: []
    typedefs: []
    union: []
- function_names:
  - dolog
  - dolog
  - dnsdist::logging::LoggingConfiguration::setSyslog
  - dnsdist::logging::LoggingConfiguration::setLogTimestamps
  - dnsdist::logging::LoggingConfiguration::setVerboseStream
  - dnsdist::logging::LoggingConfiguration::getSyslog
  - dnsdist::logging::LoggingConfiguration::getLogTimestamps
  - '& getVerboseStream()'
  - dnsdist::logging::LoggingConfiguration::setSyslog
  - dnsdist::logging::LoggingConfiguration::setLogTimestamps
  - dnsdist::logging::LoggingConfiguration::setVerboseStream
  - dnsdist::logging::LoggingConfiguration::getSyslog
  - dnsdist::logging::LoggingConfiguration::getLogTimestamps
  - '& getVerboseStream()'
  - setSyslogFacility
  - syslogLevelToStr
  - syslogLevelToStr
  - genlog
  - infolog
  - warnlog
  - errlog
  - infolog
  - warnlog
  - errlog
  source_file: /src/pdns/pdns/dnsdistdist/dolog.hh
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: vinfolog
      pos:
        line_end: 195
        line_start: 192
        source_file: /src/pdns/pdns/dnsdistdist/dolog.hh
      type_or_value: "if (dnsdist::configuration::getCurrentRuntimeConfiguration().d_verbose)
        \\\n  verboselog"
    - item_type: preproc_def
      name: vinfolog
      pos:
        line_end: 198
        line_start: 196
        source_file: /src/pdns/pdns/dnsdistdist/dolog.hh
      type_or_value: infolog
    - item_type: preproc_def
      name: vinfolog
      pos:
        line_end: 222
        line_start: 219
        source_file: /src/pdns/pdns/dnsdistdist/dolog.hh
      type_or_value: "if (false)     \\\n  infolog"
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/pdns/pdns/dnsdistdist/sanitizer.hh
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: __SANITIZE_THREAD__
      pos:
        line_end: 29
        line_start: 28
        source_file: /src/pdns/pdns/dnsdistdist/sanitizer.hh
      type_or_value: '1'
    - item_type: preproc_def
      name: __SANITIZE_ADDRESS__
      pos:
        line_end: 32
        line_start: 31
        source_file: /src/pdns/pdns/dnsdistdist/sanitizer.hh
      type_or_value: '1'
    structs: []
    typedefs: []
    union: []
- function_names:
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  source_file: /src/pdns/pdns/dnsdistdist/test-dnsdist-dnsparser.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - RemoteLoggerPool::RemoteLoggerPool
  - RemoteLoggerPool::toString
  - RemoteLoggerPool::queueData
  source_file: /src/pdns/pdns/dnsdistdist/remote_logger_pool.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - sendfromto
  - truncateTC
  - operator()() const
  - doLatencyStats
  - responseContentMatches
  - restoreFlags
  - fixUpQueryTurnedResponse
  - fixUpResponse
  - encryptResponse
  - applyRulesToResponse
  - processResponseAfterRules
  - processResponse
  - getInitialUDPPacketBufferSize
  - getMaximumIncomingPacketSize
  - sendUDPResponse
  - handleResponseSent
  - handleResponseSent
  - handleResponseTC4UDPClient
  - handleResponseForUDPClient
  - processResponderPacket
  - responderThread
  - spoofResponseFromString
  - spoofPacketFromString
  - processRulesResult
  - applyRulesChainToQuery
  - applyRulesToQuery
  - udpClientSendRequestToBackend
  - isUDPQueryAcceptable
  - checkDNSCryptQuery
  - checkQueryHeaders
  - queueResponse
  - prepareOutgoingResponse
  - handleQueryTurnedIntoSelfAnsweredResponse
  - selectBackendForOutgoingQuery
  - processQueryAfterRules
  - handleTimeoutResponseRules
  - handleServerStateChange
  - UDPTCPCrossQuerySender::UDPTCPCrossQuerySender
  - UDPTCPCrossQuerySender::UDPTCPCrossQuerySender
  - '& operator=(const UDPTCPCrossQuerySender&)'
  - UDPTCPCrossQuerySender::UDPTCPCrossQuerySender
  - '& operator=(UDPTCPCrossQuerySender&&)'
  - ~UDPTCPCrossQuerySender() override
  - UDPTCPCrossQuerySender::active
  - UDPTCPCrossQuerySender::handleResponse
  - UDPTCPCrossQuerySender::handleXFRResponse
  - UDPTCPCrossQuerySender::notifyIOError
  - UDPCrossProtocolQuery::UDPCrossProtocolQuery
  - UDPCrossProtocolQuery::UDPCrossProtocolQuery
  - '& operator=(const UDPCrossProtocolQuery&)'
  - UDPCrossProtocolQuery::UDPCrossProtocolQuery
  - '& operator=(UDPCrossProtocolQuery&&)'
  - ~UDPCrossProtocolQuery() override
  - UDPCrossProtocolQuery::getTCPQuerySender
  - getUDPCrossProtocolQueryFromDQ
  - processQuery
  - assignOutgoingUDPQueryToBackend
  - processUDPQuery
  - dnsdist::xsk::XskProcessQuery
  - dnsdist::xsk::XskProcessQuery
  - MultipleMessagesUDPClientThread
  - udpClientThread
  - maintThread
  - dynBlockMaintenanceThread
  - secPollThread
  - checkExiting
  - healthChecksThread
  - bindAny
  - dropGroupPrivs
  - dropUserPrivs
  - checkFileDescriptorsLimits
  - setupLocalSocket
  - setUpLocalBind
  - usage
  - cleanupLuaObjects
  - doExitNicely
  - sigTermHandler
  - reportFeatures
  - double_escape
  - escape_quotes
  - parseParameters
  - setupPools
  - dropPrivileges
  - initFrontends
  - dnsdist::startFrontends
  - dnsdist::startFrontends
  - initListeningSockets
  - lookForTentativeConfigurationFileWithExtension
  - loadConfigurationFromFile
  - main
  source_file: /src/pdns/pdns/dnsdistdist/dnsdist.cc
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: fd
        type: int
      - name: packet
        type: PacketBuffer
      - name: destination
        type: ComboAddress
      - name: origDest
        type: ComboAddress
      item_type: struct
      name: DelayedPacket
      pos:
        line_end: 200
        line_start: 190
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist.cc
    - fields:
      - name: msg_hdr
        type: msghdr
      - name: msg_len
        type: unsigned int
      item_type: struct
      name: mmsghdr
      pos:
        line_end: 1415
        line_start: 1411
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist.cc
    - fields:
      - name: packet
        type: PacketBuffer
      - name: remote
        type: ComboAddress
      - name: dest
        type: ComboAddress
      - name: iov
        type: iovec
      - name: cbuf
        type: cmsgbuf_aligned
      item_type: struct
      name: MMReceiver
      pos:
        line_end: 2247
        line_start: 2239
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist.cc
    - fields:
      - name: '* cs'
        type: ClientState
      - name: maxIncomingPacketSize
        type: size_t
      - name: socket
        type: int
      item_type: struct
      name: UDPStateParam
      pos:
        line_end: 2374
        line_start: 2369
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist.cc
    - fields:
      - name: locals
        type: vector<string>
      - name: remotes
        type: vector<string>
      - name: command
        type: string
      - name: config
        type: string
      - name: uid
        type: string
      - name: gid
        type: string
      - name: structuredLoggingBackend
        type: string
      - name: checkConfig
        type: bool
      - name: beClient
        type: bool
      - name: beSupervised
        type: bool
      - name: useStructuredLogging
        type: bool
      item_type: struct
      name: CommandLineParameters
      pos:
        line_end: 2967
        line_start: 2954
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist.cc
    - fields:
      - name: d_consoleSocket
        type: Socket
      - name: d_webServerSockets
        type: std::vector<std::pair<ComboAddress, Socket>>
      item_type: struct
      name: ListeningSockets
      pos:
        line_end: 3516
        line_start: 3512
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist.cc
    typedefs: []
    union: []
- function_names:
  - getGenResponses
  - filterScore
  - statNodeRespRing
  - getRespRing
  - exceedRespGen
  - exceedQueryGen
  - exceedRCode
  - exceedRespByterate
  - parseGrepQParams
  - ringEntryMatches
  - parseDynamicActionOptionalParameters
  - setupLuaInspection
  source_file: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: netmask
        type: std::optional<Netmask>
      - name: name
        type: std::optional<DNSName>
      - name: msec
        type: std::optional<unsigned int>
      - name: outputFile
        type: pdns::UniqueFilePtr
      item_type: struct
      name: GrepQParams
      pos:
        line_end: 269
        line_start: 263
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection.cc
    typedefs: []
    union: []
- function_names: []
  source_file: /src/pdns/pdns/dnsdistdist/dnstap.hh
  types:
    enum:
    - enumerators:
      - name: auth_query
        value: '1'
      - name: auth_response
        value: '2'
      - name: resolver_query
        value: '3'
      - name: client_query
        value: '5'
      - name: resolver_response
        value: '4'
      - name: client_response
        value: '6'
      - name: forwarder_query
        value: '7'
      - name: forwarded_response
        value: '8'
      - name: stub_query
        value: '9'
      - name: stub_response
        value: '10'
      - name: tool_query
        value: '11'
      - name: tool_response
        value: '12'
      item_type: enum
      name: MessageType
      pos:
        line_end: 51
        line_start: 37
        source_file: /src/pdns/pdns/dnsdistdist/dnstap.hh
    - enumerators:
      - name: DoUDP
        value: '1'
      - name: DNSCryptUDP
        value: '5'
      - name: DoH
        value: '4'
      - name: DoT
        value: '3'
      - name: DoTCP
        value: '2'
      - name: DNSCryptTCP
        value: '6'
      - name: DoQ
        value: '7'
      item_type: enum
      name: ProtocolType
      pos:
        line_end: 61
        line_start: 52
        source_file: /src/pdns/pdns/dnsdistdist/dnstap.hh
    - enumerators:
      - name: HTTP1
        value: '1'
      - name: HTTP3
        value: '3'
      - name: HTTP2
        value: '2'
      item_type: enum
      name: HttpProtocolType
      pos:
        line_end: 67
        line_start: 62
        source_file: /src/pdns/pdns/dnsdistdist/dnstap.hh
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/pdns/pdns/dnsdistdist/uuid-utils.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - dnsdist::console::completion::dnsdist_completion_generator
  - dnsdist::console::completion::dnsdist_completion_callback
  - dnsdist::console::completion::initializeConsoleKeywords
  - dnsdist::console::completion::getConsoleKeywords
  - dnsdist::console::completion::ConsoleKeyword::toString
  - dnsdist::console::completion::setupCompletion
  - dnsdist::console::completion::dnsdist_completion_generator
  - dnsdist::console::completion::dnsdist_completion_callback
  - dnsdist::console::completion::initializeConsoleKeywords
  - dnsdist::console::completion::getConsoleKeywords
  - dnsdist::console::completion::ConsoleKeyword::toString
  - dnsdist::console::completion::setupCompletion
  source_file: /src/pdns/pdns/dnsdistdist/dnsdist-console-completion.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - ~PortsFDMultiplexer()
  - PortsFDMultiplexer::getName
  - makePorts
  - PortsRegisterOurselves
  - PortsFDMultiplexer::PortsFDMultiplexer
  - convertEventKind
  - PortsFDMultiplexer::addFD
  - PortsFDMultiplexer::removeFD
  - PortsFDMultiplexer::getAvailableFDs
  - PortsFDMultiplexer::run
  - acceptData
  - main
  source_file: /src/pdns/pdns/dnsdistdist/portsmplexer.cc
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields: []
      item_type: struct
      name: PortsRegisterOurselves
      pos:
        line_end: 52
        line_start: 46
        source_file: /src/pdns/pdns/dnsdistdist/portsmplexer.cc
    typedefs: []
    union: []
- function_names:
  - GenericDNSPacketWriter<Container>::GenericDNSPacketWriter
  - GenericDNSPacketWriter<Container>::getHeader
  - GenericDNSPacketWriter<Container>::startRecord
  - GenericDNSPacketWriter<Container>::addOpt
  - GenericDNSPacketWriter<Container>::xfr48BitInt
  - GenericDNSPacketWriter<Container>::xfrNodeOrLocatorID
  - GenericDNSPacketWriter<Container>::xfr32BitInt
  - GenericDNSPacketWriter<Container>::xfr16BitInt
  - GenericDNSPacketWriter<Container>::xfr8BitInt
  - GenericDNSPacketWriter<Container>::xfrText
  - GenericDNSPacketWriter<Container>::xfrUnquotedText
  - GenericDNSPacketWriter<Container>::lookupName
  - GenericDNSPacketWriter<Container>::xfrName
  - GenericDNSPacketWriter<Container>::xfrBlob
  - GenericDNSPacketWriter<Container>::xfrBlob
  - GenericDNSPacketWriter<Container>::xfrBlobNoSpaces
  - GenericDNSPacketWriter<Container>::xfrHexBlob
  - GenericDNSPacketWriter<Container>::xfrSvcParamKeyVals
  - GenericDNSPacketWriter<Container>::getRecordPayload
  - GenericDNSPacketWriter<Container>::getWireFormatContent
  - GenericDNSPacketWriter<Container>::size
  - GenericDNSPacketWriter<Container>::rollback
  - GenericDNSPacketWriter<Container>::truncate
  - GenericDNSPacketWriter<Container>::commit
  - GenericDNSPacketWriter<Container>::getSizeWithOpts
  source_file: /src/pdns/pdns/dnsdistdist/dnswriter.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - DNSDistPacketCache::getHits
  - DNSDistPacketCache::getMisses
  - DNSDistPacketCache::getDeferredLookups
  - DNSDistPacketCache::getDeferredInserts
  - DNSDistPacketCache::getLookupCollisions
  - DNSDistPacketCache::getInsertCollisions
  - DNSDistPacketCache::getMaxEntries
  - DNSDistPacketCache::getTTLTooShorts
  - DNSDistPacketCache::getCleanupCount
  - DNSDistPacketCache::isECSParsingEnabled
  - DNSDistPacketCache::keepStaleData
  - DNSDistPacketCache::getMaximumEntrySize
  - DNSDistPacketCache::getTTD
  - DNSDistPacketCache::CacheShard::CacheShard
  - DNSDistPacketCache::CacheShard::CacheShard
  - DNSDistPacketCache::CacheShard::CacheShard
  - '& operator=(CacheShard&& /* old */) noexcept'
  - '& operator=(const CacheShard& /* old */)'
  - ~CacheShard()
  - DNSDistPacketCache::CacheShard::setSize
  source_file: /src/pdns/pdns/dnsdistdist/dnsdist-cache.hh
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: d_optionsToSkip
        type: std::unordered_set<uint16_t>
      - name: d_payloadRanks
        type: std::vector<uint16_t>
      - name: d_maxEntries
        type: size_t
      - name: d_maximumEntrySize
        type: size_t
      - name: d_maxTTL
        type: uint32_t
      - name: d_minTTL
        type: uint32_t
      - name: d_tempFailureTTL
        type: uint32_t
      - name: d_maxNegativeTTL
        type: uint32_t
      - name: d_truncatedTTL
        type: uint32_t
      - name: d_staleTTL
        type: uint32_t
      - name: d_shardCount
        type: uint32_t
      - name: d_dontAge
        type: bool
      - name: d_deferrableInsertLock
        type: bool
      - name: d_parseECS
        type: bool
      - name: d_keepStaleData
        type: bool
      - name: d_shuffle
        type: bool
      item_type: struct
      name: CacheSettings
      pos:
        line_end: 55
        line_start: 37
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-cache.hh
    - fields:
      - name: value
        type: std::string
      - name: qname
        type: DNSName
      - name: subnet
        type: std::optional<Netmask>
      - name: qtype
        type: uint16_t
      - name: qclass
        type: uint16_t
      - name: queryFlags
        type: uint16_t
      - name: added
        type: time_t
      - name: validity
        type: time_t
      - name: len
        type: uint16_t
      - name: receivedOverUDP
        type: bool
      - name: dnssecOK
        type: bool
      item_type: struct
      name: CacheValue
      pos:
        line_end: 114
        line_start: 100
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-cache.hh
    typedefs: []
    union: []
- function_names:
  - EDNSSubnetOpts::getFromString
  - EDNSSubnetOpts::getFromString
  - EDNSSubnetOpts::makeOptString
  source_file: /src/pdns/pdns/dnsdistdist/ednssubnet.cc
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: family
        type: uint16_t
      - name: sourcePrefixLength
        type: uint8_t
      - name: scopePrefixLength
        type: uint8_t
      item_type: struct
      name: EDNSSubnetOptsWire
      pos:
        line_end: 33
        line_start: 28
        source_file: /src/pdns/pdns/dnsdistdist/ednssubnet.cc
    - fields:
      - name: family
        type: uint16_t
      - name: sourcePrefixLength
        type: uint8_t
      - name: scopePrefixLength
        type: uint8_t
      item_type: struct
      name: EDNSSubnetOptsWire
      pos:
        line_end: 33
        line_start: 28
        source_file: /src/pdns/pdns/dnsdistdist/ednssubnet.cc
    typedefs: []
    union: []
- function_names:
  - parseResponseConfig
  - convertLuaArrayToRegular
  - setupLuaActions
  source_file: /src/pdns/pdns/dnsdistdist/dnsdist-lua-actions.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - checkUmemIntegrity
  - checkUmemIntegrity
  - XskSocket::isPowOfTwo
  - XskSocket::firstTimeout
  - XskSocket::XskSocket
  - getDestinationMap
  - XskSocket::clearDestinationMap
  - XskSocket::addDestinationAddress
  - XskSocket::removeDestinationAddress
  - XskSocket::fillFq
  - XskSocket::wait
  - XskSocket::frameOffset
  - XskSocket::xskFd
  - XskSocket::send
  - XskSocket::recv
  - XskSocket::pickUpReadyPacket
  - XskSocket::recycle
  - XskSocket::XskUmem::umemInit(size_t memSize, xsk_ring_cons* completionQueue, xsk_ring_prod*
    fillQueue, xsk_umem_config* config)
  - XskSocket::getMetrics
  - XskSocket::getXDPMode
  - XskSocket::markAsFree
  - XskSocket::XskUmem::~XskUmem()
  - XskPacket::getL4HeaderOffset
  - XskPacket::getDataOffset
  - XskPacket::getDataSize
  - XskPacket::getEthernetHeader
  - XskPacket::setEthernetHeader
  - XskPacket::getIPv4Header
  - XskPacket::setIPv4Header
  - XskPacket::getIPv6Header
  - XskPacket::setIPv6Header
  - XskPacket::getUDPHeader
  - XskPacket::setUDPHeader
  - XskPacket::parse
  - XskPacket::getDataLen
  - XskPacket::getFrameLen
  - XskPacket::getCapacity
  - XskPacket::changeDirectAndUpdateChecksum
  - XskPacket::rewriteIpv4Header
  - XskPacket::rewriteIpv6Header
  - XskPacket::isIPV6
  - XskPacket::XskPacket
  - XskPacket::clonePacketBuffer
  - XskPacket::setPayload
  - XskPacket::addDelay
  - operator<(const XskPacket& lhs, const XskPacket& rhs) noexcept
  - '& XskPacket::getFromAddr() const noexcept'
  - '& XskPacket::getToAddr() const noexcept'
  - XskWorker::notify
  - XskWorker::XskWorker
  - XskWorker::pushToProcessingQueue
  - XskWorker::pushToSendQueue
  - XskPacket::getPayloadData
  - XskPacket::setAddr
  - XskPacket::rewrite
  - XskPacket::ipv4Checksum
  - XskPacket::tcp_udp_v4_checksum
  - XskPacket::tcp_udp_v6_checksum
  - XskPacket::ip_checksum_partial
  - XskPacket::ip_checksum_fold
  - XskPacket::tcp_udp_v4_header_checksum_partial
  - XskPacket::tcp_udp_v6_header_checksum_partial
  - XskPacket::setHeader
  - XskPacket::cloneHeaderToPacketBuffer
  - XskWorker::createEventfd
  - XskWorker::waitForXskSocket
  - XskWorker::notifyXskSocket
  - XskWorker::create
  - XskSocket::addWorker
  - XskSocket::addWorkerRoute
  - XskSocket::removeWorkerRoute
  - XskWorker::setUmemBufBase
  - XskWorker::frameOffset
  - XskWorker::notifyWorker
  - XskWorker::hasIncomingFrames
  - XskWorker::processIncomingFrames
  - XskWorker::processOutgoingFrames
  - XskSocket::getMACFromIfName
  - XskSocket::timeDifference
  - XskWorker::cleanWorkerNotification
  - XskWorker::cleanSocketNotification
  - getPollFdsForWorker
  - XskWorker::getEmptyFrame
  - XskWorker::markAsFree
  - XskPacket::getFlags
  - XskPacket::updatePacket
  source_file: /src/pdns/pdns/dnsdistdist/xsk.cc
  types:
    enum:
    - enumerators:
      - name: Free
      - name: FillQueue
      - name: TXQueue
      - name: Received
      item_type: enum
      name: Status
      pos:
        line_end: 80
        line_start: 74
        source_file: /src/pdns/pdns/dnsdistdist/xsk.cc
    - enumerators:
      - name: Free
      - name: FillQueue
      - name: TXQueue
      - name: Received
      item_type: enum
      name: Status
      pos:
        line_end: 80
        line_start: 74
        source_file: /src/pdns/pdns/dnsdistdist/xsk.cc
    preproc_defs:
    - item_type: preproc_def
      name: packed_attribute
      pos:
        line_end: 1053
        line_start: 1052
        source_file: /src/pdns/pdns/dnsdistdist/xsk.cc
      type_or_value: __attribute__((packed))
    - item_type: preproc_def
      name: packed_attribute
      pos:
        line_end: 1055
        line_start: 1054
        source_file: /src/pdns/pdns/dnsdistdist/xsk.cc
      type_or_value: __packed
    structs:
    - fields:
      - name: status
        type: Status
      item_type: struct
      name: UmemEntryStatus
      pos:
        line_end: 82
        line_start: 72
        source_file: /src/pdns/pdns/dnsdistdist/xsk.cc
    - fields:
      - name: status
        type: Status
      item_type: struct
      name: UmemEntryStatus
      pos:
        line_end: 82
        line_start: 72
        source_file: /src/pdns/pdns/dnsdistdist/xsk.cc
    - fields:
      - name: addr
        type: uint32_t
      - name: port
        type: uint16_t
      item_type: struct
      name: IPv4AndPort
      pos:
        line_end: 198
        line_start: 194
        source_file: /src/pdns/pdns/dnsdistdist/xsk.cc
    - fields:
      - name: addr
        type: struct in6_addr
      - name: port
        type: uint16_t
      item_type: struct
      name: IPv6AndPort
      pos:
        line_end: 203
        line_start: 199
        source_file: /src/pdns/pdns/dnsdistdist/xsk.cc
    - fields:
      - name: src_ip
        type: __be32
      - name: dst_ip
        type: __be32
      - name: mbz
        type: __uint8_t
      - name: protocol
        type: __uint8_t
      - name: length
        type: __be16
      item_type: struct
      name: header
      pos:
        line_end: 1067
        line_start: 1060
        source_file: /src/pdns/pdns/dnsdistdist/xsk.cc
    - fields: []
      item_type: struct
      name: ipv4_pseudo_header_t
      pos:
        line_end: 1078
        line_start: 1069
        source_file: /src/pdns/pdns/dnsdistdist/xsk.cc
    - fields:
      - name: src_ip
        type: struct in6_addr
      - name: dst_ip
        type: struct in6_addr
      - name: length
        type: __be32
      - name: mbz[3]
        type: __uint8_t
      - name: next_header
        type: __uint8_t
      item_type: struct
      name: header
      pos:
        line_end: 1101
        line_start: 1093
        source_file: /src/pdns/pdns/dnsdistdist/xsk.cc
    - fields: []
      item_type: struct
      name: ipv6_pseudo_header_t
      pos:
        line_end: 1112
        line_start: 1103
        source_file: /src/pdns/pdns/dnsdistdist/xsk.cc
    typedefs: []
    union: []
- function_names: []
  source_file: /src/pdns/pdns/dnsdistdist/namespaces.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - push
  - dnsdist_ffi_dnsquestion_t
  - push
  - dnsdist_ffi_dnsresponse_t
  - push
  - dnsdist_ffi_server_t
  - push
  - dnsdist_ffi_servers_list_t
  - push
  - dnsdist_ffi_network_message_t
  source_file: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.hh
  types:
    enum:
    - enumerators:
      - name: Question
        value: '0xaa55aa55'
      - name: Response
        value: '0x55aa55aa'
      item_type: enum
      name: ObjectType
      pos:
        line_end: 53
        line_start: 49
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.hh
    - enumerators:
      - name: Question
        value: '0xaa55aa55'
      - name: Response
        value: '0x55aa55aa'
      item_type: enum
      name: ObjectType
      pos:
        line_end: 53
        line_start: 49
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.hh
    preproc_defs: []
    structs:
    - fields:
      - name: minSize
        type: int
      - name: maxSize
        type: int
      item_type: struct
      name: LuaContext::Pusher<dnsdist_ffi_dnsquestion_t*>
      pos:
        line_end: 45
        line_start: 35
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.hh
    - fields:
      - name: '* dq'
        type: DNSQuestion
      - name: objectType
        type: dnsdist::lua::ffi::ObjectType
      - name: maskedRemote
        type: ComboAddress
      - name: trailingData
        type: std::string
      - name: result
        type: std::optional<std::string>
      - name: httpPath
        type: std::optional<std::string>
      - name: httpQueryString
        type: std::optional<std::string>
      - name: httpHost
        type: std::optional<std::string>
      - name: httpScheme
        type: std::optional<std::string>
      - name: ednsOptionsVect
        type: std::unique_ptr<std::vector<dnsdist_ffi_ednsoption_t>>
      - name: httpHeadersVect
        type: std::unique_ptr<std::vector<dnsdist_ffi_http_header_t>>
      - name: tagsVect
        type: std::unique_ptr<std::vector<dnsdist_ffi_tag_t>>
      - name: proxyProtocolValuesVect
        type: std::unique_ptr<std::vector<dnsdist_ffi_proxy_protocol_value_t>>
      - name: httpHeaders
        type: std::unique_ptr<std::unordered_map<std::string, std::string>>
      item_type: struct
      name: dnsdist_ffi_dnsquestion_t
      pos:
        line_end: 84
        line_start: 56
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.hh
    - fields:
      - name: minSize
        type: int
      - name: maxSize
        type: int
      item_type: struct
      name: LuaContext::Pusher<dnsdist_ffi_dnsresponse_t*>
      pos:
        line_end: 98
        line_start: 88
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.hh
    - fields:
      - name: '* dr'
        type: DNSResponse
      - name: objectType
        type: dnsdist::lua::ffi::ObjectType
      - name: result
        type: std::optional<std::string>
      item_type: struct
      name: dnsdist_ffi_dnsresponse_t
      pos:
        line_end: 117
        line_start: 100
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.hh
    - fields:
      - name: minSize
        type: int
      - name: maxSize
        type: int
      item_type: struct
      name: LuaContext::Pusher<dnsdist_ffi_server_t*>
      pos:
        line_end: 131
        line_start: 121
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.hh
    - fields:
      - name: '& server'
        type: std::shared_ptr<DownstreamState>
      item_type: struct
      name: dnsdist_ffi_server_t
      pos:
        line_end: 141
        line_start: 133
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.hh
    - fields:
      - name: minSize
        type: int
      - name: maxSize
        type: int
      item_type: struct
      name: LuaContext::Pusher<dnsdist_ffi_servers_list_t*>
      pos:
        line_end: 155
        line_start: 145
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.hh
    - fields:
      - name: ffiServers
        type: std::vector<dnsdist_ffi_server_t>
      - name: '& servers'
        type: ServerPolicy::NumberedServerVector
      item_type: struct
      name: dnsdist_ffi_servers_list_t
      pos:
        line_end: 170
        line_start: 157
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.hh
    - fields:
      - name: minSize
        type: int
      - name: maxSize
        type: int
      item_type: struct
      name: LuaContext::Pusher<dnsdist_ffi_network_message_t*>
      pos:
        line_end: 184
        line_start: 174
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.hh
    - fields:
      - name: '& payload'
        type: std::string
      - name: '& from'
        type: std::string
      - name: endpointID
        type: uint16_t
      item_type: struct
      name: dnsdist_ffi_network_message_t
      pos:
        line_end: 196
        line_start: 186
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-lua-ffi.hh
    typedefs: []
    union: []
- function_names:
  - trySetThreadName
  - setThreadName
  source_file: /src/pdns/pdns/dnsdistdist/threadname.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - EDNSSubnetOpts::setSource
  - '& getSource() const'
  - EDNSSubnetOpts::getFamily
  - EDNSSubnetOpts::getSourcePrefixLength
  - EDNSSubnetOpts::setScopePrefixLength
  - EDNSSubnetOpts::getScopePrefixLength
  - EDNSSubnetOpts::getScope
  source_file: /src/pdns/pdns/dnsdistdist/ednssubnet.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - ConnectionInfo
  - ConnectionInfo
  - ConnectionInfo
  - ConnectionInfo
  - '& operator=(const ConnectionInfo& rhs)'
  - '& operator=(ConnectionInfo&& rhs) noexcept'
  - ~ConnectionInfo()
  - InternalQuery::InternalQuery
  - InternalQuery::InternalQuery
  - InternalQuery::InternalQuery
  - '& operator=(InternalQuery&& rhs)'
  - InternalQuery::InternalQuery
  - '& operator=(const InternalQuery& rhs)'
  - InternalQuery::isXFR
  - TCPResponse
  - TCPResponse
  - TCPResponse
  - isAsync
  - ~TCPQuerySender()
  - TCPQuerySender::releaseConnection
  - CrossProtocolQuery
  - CrossProtocolQuery
  - CrossProtocolQuery
  - ~CrossProtocolQuery()
  - getDQ
  - getDR
  - TCPClientCollection::passConnectionToThread
  - TCPClientCollection::passCrossProtocolQueryToThread
  - TCPClientCollection::hasReachedMaxThreads
  - TCPClientCollection::getThreadsCount
  - TCPClientCollection::getQueuedCount
  - TCPClientCollection::decrementQueuedCount
  - TCPClientCollection::TCPWorkerThread
  - TCPClientCollection::TCPWorkerThread
  - TCPClientCollection::TCPWorkerThread
  - '& operator=(TCPWorkerThread&& rhs)'
  - TCPClientCollection::TCPWorkerThread
  - '& operator=(const TCPWorkerThread&)'
  - dnsdist::tcp::HandlingIOGuard::HandlingIOGuard
  - dnsdist::tcp::HandlingIOGuard::HandlingIOGuard
  - dnsdist::tcp::HandlingIOGuard::HandlingIOGuard
  - '& operator=(const HandlingIOGuard& rhs)'
  - '& operator=(HandlingIOGuard&&)'
  - ~HandlingIOGuard()
  - dnsdist::tcp::HandlingIOGuard::HandlingIOGuard
  - dnsdist::tcp::HandlingIOGuard::HandlingIOGuard
  - dnsdist::tcp::HandlingIOGuard::HandlingIOGuard
  - '& operator=(const HandlingIOGuard& rhs)'
  - '& operator=(HandlingIOGuard&&)'
  - ~HandlingIOGuard()
  source_file: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.hh
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: remote
        type: ComboAddress
      - name: '* cs'
        type: ClientState
      - name: fd
        type: int
      - name: d_restricted
        type: bool
      item_type: struct
      name: ConnectionInfo
      pos:
        line_end: 77
        line_start: 30
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.hh
    - fields:
      - name: d_connection
        type: std::shared_ptr<ConnectionToBackend>
      - name: d_ds
        type: std::shared_ptr<DownstreamState>
      - name: d_cleartextDH
        type: dnsheader
      - name: d_async
        type: bool
      item_type: struct
      name: TCPResponse
      pos:
        line_end: 159
        line_start: 118
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.hh
    - fields:
      - name: getTCPQuerySender()
        type: std::shared_ptr<TCPQuerySender>
      - name: query
        type: InternalQuery
      - name: downstream
        type: std::shared_ptr<DownstreamState>
      - name: d_isResponse
        type: bool
      item_type: struct
      name: CrossProtocolQuery
      pos:
        line_end: 217
        line_start: 184
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.hh
    - fields:
      - name: d_querySender
        type: pdns::channel::Sender<ConnectionInfo>
      - name: d_crossProtocolQuerySender
        type: pdns::channel::Sender<CrossProtocolQuery>
      item_type: struct
      name: TCPWorkerThread
      pos:
        line_end: 300
        line_start: 282
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.hh
    typedefs: []
    union: []
- function_names: []
  source_file: /src/pdns/pdns/dnsdistdist/ednsoptions.hh
  types:
    enum:
    - enumerators:
      - name: NSID
        value: '3'
      - name: DAU
        value: '5'
      - name: N3U
        value: '7'
      - name: DHU
        value: '6'
      - name: ECS
        value: '8'
      - name: EXPIRE
        value: '9'
      - name: COOKIE
        value: '10'
      - name: TCPKEEPALIVE
        value: '11'
      - name: PADDING
        value: '12'
      - name: CHAIN
        value: '13'
      - name: EXTENDEDERROR
        value: '15'
      - name: KEYTAG
        value: '14'
      - name: TRACEPARENT
        value: '65500'
      item_type: enum
      name: EDNSOptionCodeEnum
      pos:
        line_end: 30
        line_start: 30
        source_file: /src/pdns/pdns/dnsdistdist/ednsoptions.hh
    preproc_defs: []
    structs:
    - fields: []
      item_type: struct
      name: EDNSOptionCode
      pos:
        line_end: 31
        line_start: 27
        source_file: /src/pdns/pdns/dnsdistdist/ednsoptions.hh
    - fields:
      - name: '* content'
        type: char
      - name: size
        type: uint16_t
      item_type: struct
      name: EDNSOptionViewValue
      pos:
        line_end: 40
        line_start: 36
        source_file: /src/pdns/pdns/dnsdistdist/ednsoptions.hh
    - fields:
      - name: values
        type: std::vector<EDNSOptionViewValue>
      item_type: struct
      name: EDNSOptionView
      pos:
        line_end: 45
        line_start: 42
        source_file: /src/pdns/pdns/dnsdistdist/ednsoptions.hh
    - fields:
      - name: values
        type: std::vector<std::string>
      item_type: struct
      name: EDNSOptionValues
      pos:
        line_end: 50
        line_start: 47
        source_file: /src/pdns/pdns/dnsdistdist/ednsoptions.hh
    typedefs: []
    union: []
- function_names:
  - ServerPolicy::ServerPolicy
  - ServerPolicy::ServerPolicy
  - ServerPolicy::ServerPolicy
  - ServerPolicy::SelectedBackend::SelectedBackend
  - ServerPolicy::SelectedBackend::setSelected
  - operator bool() const noexcept
  - '* operator->() const'
  - '& get() const'
  - '& getName() const'
  - ServerPolicy::toString
  source_file: /src/pdns/pdns/dnsdistdist/dnsdist-lbpolicies.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - setupLuaBindingsKVS
  source_file: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-kvs.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - setupLuaBindingsLogging
  - setupLuaBindings
  source_file: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - pdns::channel::Notifier::Notifier
  - pdns::channel::Notifier::notify
  - pdns::channel::Waiter::Waiter
  - pdns::channel::Waiter::clear
  - pdns::channel::Waiter::getDescriptor
  - pdns::channel::createNotificationQueue
  - pdns::channel::Notifier::Notifier
  - pdns::channel::Notifier::notify
  - pdns::channel::Waiter::Waiter
  - pdns::channel::Waiter::clear
  - pdns::channel::Waiter::getDescriptor
  - pdns::channel::createNotificationQueue
  source_file: /src/pdns/pdns/dnsdistdist/channel.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - setLuaNoSideEffect
  - setLuaSideEffect
  - getLuaNoSideEffect
  - resetLuaSideEffect
  - getLogger
  - parseLocalBindVars
  - parseXskVars
  - loadTLSCertificateAndKeys
  - parseTLSConfig
  - checkParameterBound
  - LuaThread
  - checkConfigurationTime
  - handleNewServerHealthCheckParameters
  - handleNewServerSourceParameter
  - setupLuaConfig
  - dnsdist::lua::setupLuaBindingsOnly
  - dnsdist::lua::setupLuaConfigurationOptions
  - dnsdist::lua::setupLua
  - dnsdist::lua::setupLuaBindingsOnly
  - dnsdist::lua::setupLuaConfigurationOptions
  - dnsdist::lua::setupLua
  - dnsdist::configuration::lua::loadLuaConfigurationFile
  - dnsdist::configuration::lua::loadLuaConfigurationFile
  source_file: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs:
    - item_type: typedef
      name: showserversopts_t
      pos:
        line_end: 971
        line_start: 971
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc
      type: LuaAssociativeTable
    - item_type: typedef
      name: tlscertificateopts_t
      pos:
        line_end: 2221
        line_start: 2221
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-lua.cc
      type: unordered_map<std::string, std::string>
    union: []
- function_names: []
  source_file: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - DummyQuerySender::active
  - DummyQuerySender::handleResponse
  - DummyQuerySender::handleXFRResponse
  - DummyQuerySender::notifyIOError
  - DummyCrossProtocolQuery
  - getTCPQuerySender
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  source_file: /src/pdns/pdns/dnsdistdist/test-dnsdistasync.cc
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: d_sender
        type: std::shared_ptr<DummyQuerySender>
      item_type: struct
      name: DummyCrossProtocolQuery
      pos:
        line_end: 71
        line_start: 57
        source_file: /src/pdns/pdns/dnsdistdist/test-dnsdistasync.cc
    typedefs: []
    union: []
- function_names:
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  source_file: /src/pdns/pdns/dnsdistdist/test-base64_cc.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - ~DNSRule()
  source_file: /src/pdns/pdns/dnsdistdist/dnsdist-rules.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - BPFFilter::toString
  - BPFFilter::BPFFilter
  - BPFFilter::BPFFilter
  - '& operator=(const BPFFilter&)'
  - '& operator=(BPFFilter&&)'
  - BPFFilter::Map
  - BPFFilter::CIDR4
  - BPFFilter::CIDR4
  - BPFFilter::CIDR6
  - BPFFilter::CIDR6
  source_file: /src/pdns/pdns/dnsdistdist/bpf-filter.hh
  types:
    enum:
    - enumerators:
      - name: IPv4
      - name: CIDR4
      - name: Filters
      - name: QNames
      - name: IPv6
      - name: CIDR6
      item_type: enum
      name: MapType
      pos:
        line_end: 42
        line_start: 34
        source_file: /src/pdns/pdns/dnsdistdist/bpf-filter.hh
    - enumerators:
      - name: Legacy
        value: '0'
      - name: WithActions
        value: '1'
      item_type: enum
      name: MapFormat
      pos:
        line_end: 48
        line_start: 44
        source_file: /src/pdns/pdns/dnsdistdist/bpf-filter.hh
    - enumerators:
      - name: Pass
        value: '0'
      - name: Drop
        value: '1'
      - name: Truncate
        value: '2'
      item_type: enum
      name: MatchAction
      pos:
        line_end: 55
        line_start: 50
        source_file: /src/pdns/pdns/dnsdistdist/bpf-filter.hh
    preproc_defs: []
    structs:
    - fields:
      - name: d_pinnedPath
        type: std::string
      - name: d_maxItems
        type: uint32_t
      - name: d_type
        type: MapType
      item_type: struct
      name: MapConfiguration
      pos:
        line_end: 74
        line_start: 69
        source_file: /src/pdns/pdns/dnsdistdist/bpf-filter.hh
    - fields:
      - name: counter
        type: uint64_t
      - name: action
        type: BPFFilter::MatchAction
      item_type: struct
      name: CounterAndActionValue
      pos:
        line_end: 80
        line_start: 76
        source_file: /src/pdns/pdns/dnsdistdist/bpf-filter.hh
    - fields:
      - name: d_config
        type: MapConfiguration
      - name: d_count
        type: uint32_t
      - name: d_fd
        type: FDWrapper
      item_type: struct
      name: Map
      pos:
        line_end: 117
        line_start: 108
        source_file: /src/pdns/pdns/dnsdistdist/bpf-filter.hh
    - fields:
      - name: d_v4
        type: Map
      - name: d_v6
        type: Map
      - name: d_cidr4
        type: Map
      - name: d_cidr6
        type: Map
      - name: d_qnames
        type: Map
      - name: d_filters
        type: Map
      item_type: struct
      name: Maps
      pos:
        line_end: 130
        line_start: 119
        source_file: /src/pdns/pdns/dnsdistdist/bpf-filter.hh
    - fields:
      - name: cidr
        type: uint32_t
      - name: addr
        type: struct in_addr
      item_type: struct
      name: CIDR4
      pos:
        line_end: 151
        line_start: 138
        source_file: /src/pdns/pdns/dnsdistdist/bpf-filter.hh
    - fields:
      - name: cidr
        type: uint32_t
      - name: addr
        type: struct in6_addr
      item_type: struct
      name: CIDR6
      pos:
        line_end: 165
        line_start: 152
        source_file: /src/pdns/pdns/dnsdistdist/bpf-filter.hh
    typedefs: []
    union: []
- function_names:
  - NetworkListener::ListenerData::ListenerData()
  - dnsdist::NetworkListener::NetworkListener
  - NetworkListener::~NetworkListener()
  - dnsdist::NetworkListener::readCB
  - dnsdist::NetworkListener::addUnixListeningEndpoint
  - dnsdist::NetworkListener::runOnce
  - dnsdist::NetworkListener::runOnce
  - dnsdist::NetworkListener::mainThread
  - dnsdist::NetworkListener::start
  - dnsdist::NetworkEndpoint::NetworkEndpoint
  - dnsdist::NetworkEndpoint::send
  - NetworkListener::ListenerData::ListenerData()
  - dnsdist::NetworkListener::NetworkListener
  - NetworkListener::~NetworkListener()
  - dnsdist::NetworkListener::readCB
  - dnsdist::NetworkListener::addUnixListeningEndpoint
  - dnsdist::NetworkListener::runOnce
  - dnsdist::NetworkListener::runOnce
  - dnsdist::NetworkListener::mainThread
  - dnsdist::NetworkListener::start
  - dnsdist::NetworkEndpoint::NetworkEndpoint
  - dnsdist::NetworkEndpoint::send
  source_file: /src/pdns/pdns/dnsdistdist/dnsdist-lua-network.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - DEBUGLOG
  - dnsdist::doq::mintToken
  - dnsdist::doq::fillRandom
  - dnsdist::doq::getCID
  - dnsdist::doq::validateToken
  - dnsdist::doq::sendFromTo
  - dnsdist::doq::handleStatelessRetry
  - dnsdist::doq::handleVersionNegotiation
  - dnsdist::doq::flushEgress
  - dnsdist::doq::configureQuiche
  - dnsdist::doq::recvAsync
  - dnsdist::doq::getSNIFromQuicheConnection
  - dnsdist::doq::mintToken
  - dnsdist::doq::fillRandom
  - dnsdist::doq::getCID
  - dnsdist::doq::validateToken
  - dnsdist::doq::sendFromTo
  - dnsdist::doq::handleStatelessRetry
  - dnsdist::doq::handleVersionNegotiation
  - dnsdist::doq::flushEgress
  - dnsdist::doq::configureQuiche
  - dnsdist::doq::recvAsync
  - dnsdist::doq::getSNIFromQuicheConnection
  source_file: /src/pdns/pdns/dnsdistdist/doq-common.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - MOADNSException::MOADNSException
  - PacketReader::PacketReader
  - PacketReader::xfr32BitInt
  - PacketReader::xfrIP
  - PacketReader::xfrIP6
  - PacketReader::xfrCAWithoutPort
  - PacketReader::xfrCAPort
  - PacketReader::xfrTime
  - PacketReader::xfr16BitInt
  - PacketReader::xfrType
  - PacketReader::xfr8BitInt
  - PacketReader::xfrName
  - PacketReader::xfrText
  - PacketReader::xfrUnquotedText
  - PacketReader::eof
  - PacketReader::getRemaining
  - PacketReader::consumeRemaining
  - PacketReader::getPosition
  - PacketReader::skip
  - ~DNSRecordContent()
  - DNSRecordContent::serialize
  - operator==(const DNSRecordContent& rhs) const
  - DNSRecordContent::doRecordCheck
  - DNSRecordContent::regist
  - DNSRecordContent::isUnknownType
  - DNSRecordContent::TypeToNumber
  - DNSRecordContent::NumberToType
  - DNSRecordContent::lock
  - DNSRecord
  - DNSRecord
  - print
  - toString
  - setContent
  - setContent
  - '& getContent() const'
  - operator<(const DNSRecord& rhs) const
  - prettyCompare
  - operator==(const DNSRecord& rhs) const
  - sizeEstimate
  - operator<(const DNSZoneRecord& other) const
  - UnknownRecordContent::UnknownRecordContent
  - UnknownRecordContent::getType
  - '& getRawContent() const'
  - UnknownRecordContent::sizeEstimate
  - MOADNSParser::MOADNSParser
  - MOADNSParser::MOADNSParser
  - MOADNSParser::getTSIGPos
  - getRR
  - DNSPacketMangler::DNSPacketMangler
  - DNSPacketMangler::DNSPacketMangler
  - DNSPacketMangler::skipDomainName
  - DNSPacketMangler::skipBytes
  - DNSPacketMangler::rewindBytes
  - DNSPacketMangler::get32BitInt
  - DNSPacketMangler::get16BitInt
  - DNSPacketMangler::get8BitInt
  - DNSPacketMangler::skipRData
  - DNSPacketMangler::skipRDataAndReturnOffsets
  - DNSPacketMangler::decreaseAndSkip32BitInt
  - DNSPacketMangler::setAndSkip32BitInt
  - DNSPacketMangler::getOffset
  - DNSPacketMangler::swapInPlace
  - DNSPacketMangler::moveOffset
  - DNSPacketMangler::rewindOffset
  source_file: /src/pdns/pdns/dnsdistdist/dnsparser.hh
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: d_name
        type: DNSName
      - name: d_content
        type: std::shared_ptr<const DNSRecordContent>
      - name: d_type
        type: uint16_t
      - name: d_class
        type: uint16_t
      - name: d_ttl
        type: uint32_t
      - name: d_clen
        type: uint16_t
      - name: d_place
        type: DNSResourceRecord::Place
      item_type: struct
      name: DNSRecord
      pos:
        line_end: 470
        line_start: 334
        source_file: /src/pdns/pdns/dnsdistdist/dnsparser.hh
    - fields:
      - name: domain_id
        type: domainid_t
      - name: scopeMask
        type: uint8_t
      - name: signttl
        type: int
      - name: wildcardname
        type: DNSName
      - name: auth
        type: bool
      - name: disabled
        type: bool
      - name: dr
        type: DNSRecord
      item_type: struct
      name: DNSZoneRecord
      pos:
        line_end: 485
        line_start: 472
        source_file: /src/pdns/pdns/dnsdistdist/dnsparser.hh
    typedefs:
    - item_type: typedef
      name: makerfunc_t(const struct DNSRecord& dr, PacketReader& pr)
      pos:
        line_end: 266
        line_start: 266
        source_file: /src/pdns/pdns/dnsdistdist/dnsparser.hh
      type: shared_ptr<DNSRecordContent>
    - item_type: typedef
      name: zmakerfunc_t(const string& str)
      pos:
        line_end: 267
        line_start: 267
        source_file: /src/pdns/pdns/dnsdistdist/dnsparser.hh
      type: shared_ptr<DNSRecordContent>
    - item_type: typedef
      name: typemap_t
      pos:
        line_end: 323
        line_start: 323
        source_file: /src/pdns/pdns/dnsdistdist/dnsparser.hh
      type: map<std::pair<uint16_t, uint16_t>, makerfunc_t* >
    - item_type: typedef
      name: zmakermap_t
      pos:
        line_end: 324
        line_start: 324
        source_file: /src/pdns/pdns/dnsdistdist/dnsparser.hh
      type: map<std::pair<uint16_t, uint16_t>, zmakerfunc_t* >
    - item_type: typedef
      name: t2namemap_t
      pos:
        line_end: 325
        line_start: 325
        source_file: /src/pdns/pdns/dnsdistdist/dnsparser.hh
      type: map<std::pair<uint16_t, uint16_t>, string >
    - item_type: typedef
      name: n2typemap_t
      pos:
        line_end: 326
        line_start: 326
        source_file: /src/pdns/pdns/dnsdistdist/dnsparser.hh
      type: map<string, std::pair<uint16_t, uint16_t> >
    union: []
- function_names: []
  source_file: /src/pdns/pdns/dnsdistdist/dnsdist-frontend.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - DEBUGLOG
  - IOStateHandler::IOStateHandler
  - IOStateHandler::IOStateHandler
  - ~IOStateHandler()
  - IOStateHandler::isWaitingForRead
  - IOStateHandler::isWaitingForWrite
  - IOStateHandler::setSocket
  - IOStateHandler::reset
  - IOStateHandler::getState
  - IOStateHandler::add
  - IOStateHandler::update
  - IOStateGuard::IOStateGuard
  - ~IOStateGuard()
  - IOStateGuard::release
  source_file: /src/pdns/pdns/dnsdistdist/tcpiohandler-mplexer.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - '&& DnstapMessage::getBuffer()'
  - DnstapMessage::DnstapMessage
  - DnstapMessage::setExtra
  source_file: /src/pdns/pdns/dnsdistdist/dnstap.cc
  types:
    enum:
    - enumerators:
      - name: identity
        value: '1'
      - name: version
        value: '2'
      - name: message
        value: '14'
      - name: extra
        value: '3'
      - name: type
        value: '15'
      item_type: enum
      name: protozero::pbf_tag_type
      pos:
        line_end: 19
        line_start: 12
        source_file: /src/pdns/pdns/dnsdistdist/dnstap.cc
    - enumerators:
      - name: identity
        value: '1'
      - name: version
        value: '2'
      - name: message
        value: '14'
      - name: extra
        value: '3'
      - name: type
        value: '15'
      item_type: enum
      name: protozero::pbf_tag_type
      pos:
        line_end: 19
        line_start: 12
        source_file: /src/pdns/pdns/dnsdistdist/dnstap.cc
    - enumerators:
      - name: message
        value: '1'
      item_type: enum
      name: protozero::pbf_tag_type
      pos:
        line_end: 27
        line_start: 24
        source_file: /src/pdns/pdns/dnsdistdist/dnstap.cc
    - enumerators:
      - name: message
        value: '1'
      item_type: enum
      name: protozero::pbf_tag_type
      pos:
        line_end: 27
        line_start: 24
        source_file: /src/pdns/pdns/dnsdistdist/dnstap.cc
    - enumerators:
      - name: inet
        value: '1'
      - name: inet6
        value: '2'
      item_type: enum
      name: protozero::pbf_tag_type
      pos:
        line_end: 36
        line_start: 32
        source_file: /src/pdns/pdns/dnsdistdist/dnstap.cc
    - enumerators:
      - name: inet
        value: '1'
      - name: inet6
        value: '2'
      item_type: enum
      name: protozero::pbf_tag_type
      pos:
        line_end: 36
        line_start: 32
        source_file: /src/pdns/pdns/dnsdistdist/dnstap.cc
    - enumerators:
      - name: type
        value: '1'
      - name: response_address
        value: '5'
      - name: socket_family
        value: '2'
      - name: socket_protocol
        value: '3'
      - name: query_address
        value: '4'
      - name: query_port
        value: '6'
      - name: response_port
        value: '7'
      - name: query_time_sec
        value: '8'
      - name: query_time_nsec
        value: '9'
      - name: query_message
        value: '10'
      - name: policy
        value: '15'
      - name: response_time_nsec
        value: '13'
      - name: query_zone
        value: '11'
      - name: http_protocol
        value: '16'
      - name: response_message
        value: '14'
      - name: response_time_sec
        value: '12'
      item_type: enum
      name: protozero::pbf_tag_type
      pos:
        line_end: 59
        line_start: 41
        source_file: /src/pdns/pdns/dnsdistdist/dnstap.cc
    - enumerators:
      - name: type
        value: '1'
      - name: response_address
        value: '5'
      - name: socket_family
        value: '2'
      - name: socket_protocol
        value: '3'
      - name: query_address
        value: '4'
      - name: query_port
        value: '6'
      - name: response_port
        value: '7'
      - name: query_time_sec
        value: '8'
      - name: query_time_nsec
        value: '9'
      - name: query_message
        value: '10'
      - name: policy
        value: '15'
      - name: response_time_nsec
        value: '13'
      - name: query_zone
        value: '11'
      - name: http_protocol
        value: '16'
      - name: response_message
        value: '14'
      - name: response_time_sec
        value: '12'
      item_type: enum
      name: protozero::pbf_tag_type
      pos:
        line_end: 59
        line_start: 41
        source_file: /src/pdns/pdns/dnsdistdist/dnstap.cc
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - dnsdist::configuration::yaml::registerType
  - dnsdist::configuration::yaml::getRegisteredTypeByName
  - dnsdist::configuration::yaml::getRegisteredTypeByName
  - dnsdist::configuration::yaml::checkedConversionFromStr
  - dnsdist::configuration::yaml::checkedConversionFromStr
  - dnsdist::configuration::yaml::getOptionalLuaFunction
  - dnsdist::configuration::yaml::rustStringWithEscapedRawContentToString
  - dnsdist::configuration::yaml::strToRCode
  - dnsdist::configuration::yaml::strToQType
  - dnsdist::configuration::yaml::strToOpcode
  - dnsdist::configuration::yaml::loadContentFromConfigurationFile
  - dnsdist::configuration::yaml::getLuaFunctionFromConfiguration
  - dnsdist::configuration::yaml::getCPUPiningFromStr
  - dnsdist::configuration::yaml::getTLSConfigFromRustIncomingTLS
  - dnsdist::configuration::yaml::validateTLSConfiguration
  - dnsdist::configuration::yaml::handleTLSConfiguration
  - dnsdist::configuration::yaml::createBackendFromConfiguration
  - dnsdist::configuration::yaml::loadRulesConfiguration
  - dnsdist::configuration::yaml::loadDynamicBlockConfiguration
  - dnsdist::configuration::yaml::handleAdditionalAddressesForFrontend
  - dnsdist::configuration::yaml::loadBinds
  - dnsdist::configuration::yaml::loadWebServer
  - dnsdist::configuration::yaml::loadCustomPolicies
  - dnsdist::configuration::yaml::handleOpenSSLSettings
  - dnsdist::configuration::yaml::handleLoggingConfiguration
  - dnsdist::configuration::yaml::handleConsoleConfiguration
  - dnsdist::configuration::yaml::handlePacketCacheConfiguration
  - dnsdist::configuration::yaml::handleEBPFConfiguration
  - dnsdist::configuration::yaml::handleCarbonConfiguration
  - dnsdist::configuration::yaml::loadConfigurationFromFile
  - dnsdist::configuration::yaml::addLuaBindingsForYAMLObjects
  - dnsdist::configuration::yaml::registerType
  - dnsdist::configuration::yaml::getRegisteredTypeByName
  - dnsdist::configuration::yaml::getRegisteredTypeByName
  - dnsdist::configuration::yaml::checkedConversionFromStr
  - dnsdist::configuration::yaml::checkedConversionFromStr
  - dnsdist::configuration::yaml::getOptionalLuaFunction
  - dnsdist::configuration::yaml::rustStringWithEscapedRawContentToString
  - dnsdist::configuration::yaml::strToRCode
  - dnsdist::configuration::yaml::strToQType
  - dnsdist::configuration::yaml::strToOpcode
  - dnsdist::configuration::yaml::loadContentFromConfigurationFile
  - dnsdist::configuration::yaml::getLuaFunctionFromConfiguration
  - dnsdist::configuration::yaml::getCPUPiningFromStr
  - dnsdist::configuration::yaml::getTLSConfigFromRustIncomingTLS
  - dnsdist::configuration::yaml::validateTLSConfiguration
  - dnsdist::configuration::yaml::handleTLSConfiguration
  - dnsdist::configuration::yaml::createBackendFromConfiguration
  - dnsdist::configuration::yaml::loadRulesConfiguration
  - dnsdist::configuration::yaml::loadDynamicBlockConfiguration
  - dnsdist::configuration::yaml::handleAdditionalAddressesForFrontend
  - dnsdist::configuration::yaml::loadBinds
  - dnsdist::configuration::yaml::loadWebServer
  - dnsdist::configuration::yaml::loadCustomPolicies
  - dnsdist::configuration::yaml::handleOpenSSLSettings
  - dnsdist::configuration::yaml::handleLoggingConfiguration
  - dnsdist::configuration::yaml::handleConsoleConfiguration
  - dnsdist::configuration::yaml::handlePacketCacheConfiguration
  - dnsdist::configuration::yaml::handleEBPFConfiguration
  - dnsdist::configuration::yaml::handleCarbonConfiguration
  - dnsdist::configuration::yaml::loadConfigurationFromFile
  - dnsdist::configuration::yaml::addLuaBindingsForYAMLObjects
  - dnsdist::rust::settings::newDNSSelector
  - dnsdist::rust::settings::newDNSActionWrapper
  - dnsdist::rust::settings::newDNSResponseActionWrapper
  - dnsdist::rust::settings::convertResponseConfig
  - dnsdist::rust::settings::convertSOAParams
  - dnsdist::rust::settings::convertSVCRecordParameters
  - dnsdist::rust::settings::getLuaAction
  - dnsdist::rust::settings::getLuaFFIAction
  - dnsdist::rust::settings::getContinueAction
  - dnsdist::rust::settings::getSetProxyProtocolValuesAction
  - dnsdist::rust::settings::getSpoofPacketAction
  - dnsdist::rust::settings::getSpoofAction
  - dnsdist::rust::settings::getSpoofCNAMEAction
  - dnsdist::rust::settings::getSpoofRawAction
  - dnsdist::rust::settings::getLuaResponseAction
  - dnsdist::rust::settings::getLuaFFIResponseAction
  - dnsdist::rust::settings::getClearRecordTypesResponseAction
  - dnsdist::rust::settings::getLimitTTLResponseAction
  - dnsdist::rust::settings::getSetMinTTLResponseAction
  - dnsdist::rust::settings::getSetMaxTTLResponseAction
  - dnsdist::rust::settings::getQNameSuffixSelector
  - dnsdist::rust::settings::getQNameSetSelector
  - dnsdist::rust::settings::getQNameSelector
  - dnsdist::rust::settings::getNetmaskGroupSelector
  - dnsdist::rust::settings::getKeyValueStoreLookupAction
  - dnsdist::rust::settings::getKeyValueStoreRangeLookupAction
  - dnsdist::rust::settings::getKeyValueStoreLookupSelector
  - dnsdist::rust::settings::getKeyValueStoreRangeLookupSelector
  - dnsdist::rust::settings::getTimedIPSetSelector
  - dnsdist::rust::settings::getDnstapLogAction
  - dnsdist::rust::settings::getDnstapLogResponseAction
  - dnsdist::rust::settings::getSetTraceAction
  - dnsdist::rust::settings::getRemoteLogAction
  - dnsdist::rust::settings::getRemoteLogResponseAction
  - dnsdist::rust::settings::registerProtobufLogger
  - dnsdist::rust::settings::registerDnstapLogger
  - dnsdist::rust::settings::registerKVSObjects
  - dnsdist::rust::settings::registerNMGObjects
  - dnsdist::rust::settings::registerTimedIPSetObjects
  - dnsdist::rust::settings::getLuaSelector
  - dnsdist::rust::settings::getLuaFFISelector
  - dnsdist::rust::settings::getAndSelector
  - dnsdist::rust::settings::getOrSelector
  - dnsdist::rust::settings::getNotSelector
  - dnsdist::rust::settings::getByNameSelector
  - dnsdist::rust::settings::newDNSSelector
  - dnsdist::rust::settings::newDNSActionWrapper
  - dnsdist::rust::settings::newDNSResponseActionWrapper
  - dnsdist::rust::settings::convertResponseConfig
  - dnsdist::rust::settings::convertSOAParams
  - dnsdist::rust::settings::convertSVCRecordParameters
  - dnsdist::rust::settings::getLuaAction
  - dnsdist::rust::settings::getLuaFFIAction
  - dnsdist::rust::settings::getContinueAction
  - dnsdist::rust::settings::getSetProxyProtocolValuesAction
  - dnsdist::rust::settings::getSpoofPacketAction
  - dnsdist::rust::settings::getSpoofAction
  - dnsdist::rust::settings::getSpoofCNAMEAction
  - dnsdist::rust::settings::getSpoofRawAction
  - dnsdist::rust::settings::getLuaResponseAction
  - dnsdist::rust::settings::getLuaFFIResponseAction
  - dnsdist::rust::settings::getClearRecordTypesResponseAction
  - dnsdist::rust::settings::getLimitTTLResponseAction
  - dnsdist::rust::settings::getSetMinTTLResponseAction
  - dnsdist::rust::settings::getSetMaxTTLResponseAction
  - dnsdist::rust::settings::getQNameSuffixSelector
  - dnsdist::rust::settings::getQNameSetSelector
  - dnsdist::rust::settings::getQNameSelector
  - dnsdist::rust::settings::getNetmaskGroupSelector
  - dnsdist::rust::settings::getKeyValueStoreLookupAction
  - dnsdist::rust::settings::getKeyValueStoreRangeLookupAction
  - dnsdist::rust::settings::getKeyValueStoreLookupSelector
  - dnsdist::rust::settings::getKeyValueStoreRangeLookupSelector
  - dnsdist::rust::settings::getTimedIPSetSelector
  - dnsdist::rust::settings::getDnstapLogAction
  - dnsdist::rust::settings::getDnstapLogResponseAction
  - dnsdist::rust::settings::getSetTraceAction
  - dnsdist::rust::settings::getRemoteLogAction
  - dnsdist::rust::settings::getRemoteLogResponseAction
  - dnsdist::rust::settings::registerProtobufLogger
  - dnsdist::rust::settings::registerDnstapLogger
  - dnsdist::rust::settings::registerKVSObjects
  - dnsdist::rust::settings::registerNMGObjects
  - dnsdist::rust::settings::registerTimedIPSetObjects
  - dnsdist::rust::settings::getLuaSelector
  - dnsdist::rust::settings::getLuaFFISelector
  - dnsdist::rust::settings::getAndSelector
  - dnsdist::rust::settings::getOrSelector
  - dnsdist::rust::settings::getNotSelector
  - dnsdist::rust::settings::getByNameSelector
  source_file: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: logger
        type: std::shared_ptr<const Logr::Logger>
      item_type: struct
      name: Context
      pos:
        line_end: 66
        line_start: 63
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc
    - fields:
      - name: logger
        type: std::shared_ptr<const Logr::Logger>
      item_type: struct
      name: Context
      pos:
        line_end: 66
        line_start: 63
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-configuration-yaml.cc
    typedefs: []
    union: []
- function_names:
  - makeSimpleHeader
  - makeLocalProxyHeader
  - makeProxyHeader
  - isProxyHeaderComplete
  - parseProxyHeader
  source_file: /src/pdns/pdns/dnsdistdist/proxy-protocol.cc
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: PROXYMAGIC
      pos:
        line_end: 27
        line_start: 26
        source_file: /src/pdns/pdns/dnsdistdist/proxy-protocol.cc
      type_or_value: '"\x0D\x0A\x0D\x0A\x00\x0D\x0A\x51\x55\x49\x54\x0A"'
    - item_type: preproc_def
      name: PROXYMAGICLEN
      pos:
        line_end: 28
        line_start: 27
        source_file: /src/pdns/pdns/dnsdistdist/proxy-protocol.cc
      type_or_value: sizeof(PROXYMAGIC)-1
    structs: []
    typedefs: []
    union: []
- function_names:
  - noinit_adaptor
  - noinit_adaptor
  - noinit_adaptor
  - construct
  - construct
  - destroy
  - "operator==(const noinit_adaptor<T>& lhs,\n                       const noinit_adaptor<U>&
    rhs) noexcept"
  - "operator!=(const noinit_adaptor<T>& lhs,\n                       const noinit_adaptor<U>&
    rhs) noexcept"
  - noinit_adapt
  source_file: /src/pdns/pdns/dnsdistdist/noinitvector.hh
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields: []
      item_type: struct
      name: noinit_adaptor
      pos:
        line_end: 43
        line_start: 13
        source_file: /src/pdns/pdns/dnsdistdist/noinitvector.hh
    - fields: []
      item_type: struct
      name: rebind
      pos:
        line_end: 19
        line_start: 16
        source_file: /src/pdns/pdns/dnsdistdist/noinitvector.hh
    typedefs:
    - item_type: typedef
      name: other
      pos:
        line_end: 18
        line_start: 17
        source_file: /src/pdns/pdns/dnsdistdist/noinitvector.hh
      type: noinit_adaptor
    union: []
- function_names:
  - getUniqueID
  - getUniqueID
  source_file: /src/pdns/pdns/dnsdistdist/uuid-utils.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - CircularWriteBuffer::CircularWriteBuffer
  - RemoteLoggerInterface::RemoteLoggerInterface
  - RemoteLoggerInterface::RemoteLoggerInterface
  - RemoteLoggerInterface::RemoteLoggerInterface
  - '& operator=(const RemoteLoggerInterface&)'
  - '& operator=(RemoteLoggerInterface&&)'
  - ~RemoteLoggerInterface()
  - RemoteLoggerInterface::logQueries
  - RemoteLoggerInterface::logResponses
  - RemoteLoggerInterface::logNODs
  - RemoteLoggerInterface::logUDRs
  - RemoteLoggerInterface::setLogQueries
  - RemoteLoggerInterface::setLogResponses
  - RemoteLoggerInterface::setLogNODs
  - RemoteLoggerInterface::setLogUDRs
  - '& operator+=(const Stats& rhs)'
  - RemoteLogger::RemoteLogger
  - RemoteLogger::RemoteLogger
  - '& operator=(const RemoteLogger&)'
  - '& operator=(RemoteLogger&&)'
  - RemoteLogger::address
  - RemoteLogger::maxSize
  - RemoteLogger::name
  - RemoteLogger::toString
  - RemoteLogger::getStats
  - RemoteLogger::stop
  source_file: /src/pdns/pdns/dnsdistdist/remote_logger.hh
  types:
    enum:
    - enumerators:
      - name: Queued
      - name: OtherError
      - name: TooLarge
      - name: PipeFull
      item_type: enum
      name: Result
      pos:
        line_end: 70
        line_start: 64
        source_file: /src/pdns/pdns/dnsdistdist/remote_logger.hh
    - enumerators:
      - name: Two
      - name: Four
      item_type: enum
      name: FrameSize
      pos:
        line_end: 131
        line_start: 127
        source_file: /src/pdns/pdns/dnsdistdist/remote_logger.hh
    preproc_defs: []
    structs:
    - fields:
      - name: d_queued
        type: uint64_t
      - name: d_pipeFull
        type: uint64_t
      - name: d_tooLarge
        type: uint64_t
      - name: d_otherError
        type: uint64_t
      item_type: struct
      name: Stats
      pos:
        line_end: 108
        line_start: 93
        source_file: /src/pdns/pdns/dnsdistdist/remote_logger.hh
    - fields:
      - name: d_writer
        type: CircularWriteBuffer
      - name: d_socket
        type: std::unique_ptr<Socket>
      - name: d_stats
        type: RemoteLoggerInterface::Stats
      item_type: struct
      name: RuntimeData
      pos:
        line_end: 182
        line_start: 177
        source_file: /src/pdns/pdns/dnsdistdist/remote_logger.hh
    typedefs: []
    union: []
- function_names:
  - SensitiveData::reallyClearContent
  - SensitiveData::SensitiveData
  - '& SensitiveData::operator=(SensitiveData&& rhs) noexcept'
  - SensitiveData::SensitiveData
  - SensitiveData::~SensitiveData()
  - SensitiveData::clear
  - hashPasswordInternal
  - generateRandomSalt
  - hashPassword
  - hashPassword
  - verifyPassword
  - parseHashed
  - verifyPassword
  - isPasswordHashed
  - CredentialsHolder::CredentialsHolder
  - CredentialsHolder::~CredentialsHolder()
  - CredentialsHolder::matches
  - CredentialsHolder::isHashingAvailable
  - CredentialsHolder::readFromTerminal
  source_file: /src/pdns/pdns/dnsdistdist/credentials.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - ~SNMPAgent()
  - SNMPAgent::run
  source_file: /src/pdns/pdns/dnsdistdist/snmp-agent.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs:
    - item_type: typedef
      name: netsnmp_request_info
      pos:
        line_end: 10
        line_start: 10
        source_file: /src/pdns/pdns/dnsdistdist/snmp-agent.hh
      type: netsnmp_request_info_s
    - item_type: typedef
      name: netsnmp_variable_list
      pos:
        line_end: 11
        line_start: 11
        source_file: /src/pdns/pdns/dnsdistdist/snmp-agent.hh
      type: variable_list
    union: []
- function_names: []
  source_file: /src/pdns/pdns/dnsdistdist/bench-dnsdist-rings_cc.cc
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: maxEntries
        type: size_t
      - name: numberOfShards
        type: size_t
      - name: nbLockTries
        type: size_t
      item_type: struct
      name: ringInfo
      pos:
        line_end: 34
        line_start: 29
        source_file: /src/pdns/pdns/dnsdistdist/bench-dnsdist-rings_cc.cc
    typedefs: []
    union: []
- function_names:
  - pdns::trace::encode
  - pdns::trace::encode
  - pdns::trace::encodeFixed
  - pdns::trace::encode
  - pdns::trace::encode
  - pdns::trace::encodeFixed
  - pdns::trace::encode
  - pdns::trace::encode
  - pdns::trace::encode
  - pdns::trace::encode
  - pdns::trace::encode
  - pdns::trace::decode
  - pdns::trace::encode
  - pdns::trace::encode
  - '& operator<<(std::ostream& ostrm, const AnyValue& val)'
  - pdns::trace::TraceID
  - pdns::trace::TraceID
  - '& operator<<(std::ostream& ostrm, const TraceID& val)'
  - pdns::trace::getRandomTraceID
  - pdns::trace::makeRandom
  - pdns::trace::clear
  - pdns::trace::SpanID
  - pdns::trace::SpanID
  - '& operator<<(std::ostream& ostrm, const SpanID& val)'
  - pdns::trace::getRandomSpanID
  - pdns::trace::makeRandom
  - pdns::trace::clear
  - pdns::trace::fill
  - pdns::trace::fill
  - pdns::trace::fill
  - pdns::trace::fill
  - pdns::trace::encode
  - pdns::trace::decodeTraceID
  - pdns::trace::encode
  - pdns::trace::decodeSpanID
  - pdns::trace::clear
  - pdns::trace::timestamp
  - pdns::trace::clear
  - pdns::trace::setIDsIfNotSet
  - pdns::trace::close
  - pdns::trace::clear
  - pdns::trace::close
  - pdns::trace::close
  - pdns::trace::close
  - pdns::trace::encode
  - pdns::trace::boilerPlate
  - pdns::trace::ArrayValue::decode
  - pdns::trace::KeyValueList::decode
  - pdns::trace::EDNSOTTraceRecord
  - pdns::trace::setVersion
  - pdns::trace::setReserved
  - pdns::trace::setTraceID
  - pdns::trace::setSpanID
  - pdns::trace::setFlags
  - pdns::trace::EDNSOTTraceRecordView
  - pdns::trace::getVersion
  - pdns::trace::getReserved
  - pdns::trace::getTraceID
  - pdns::trace::getSpanID
  - pdns::trace::getFlags
  - ArrayValue::operator==(const ArrayValue& rhs) const
  - KeyValueList::operator==(const KeyValueList& rhs) const
  - KeyValue::operator==(const KeyValue& rhs) const
  - pdns::trace::encode
  - pdns::trace::encode
  - pdns::trace::encodeFixed
  - pdns::trace::encode
  - pdns::trace::encode
  - pdns::trace::encodeFixed
  - pdns::trace::encode
  - pdns::trace::encode
  - pdns::trace::encode
  - pdns::trace::encode
  - pdns::trace::encode
  - pdns::trace::decode
  - pdns::trace::encode
  - pdns::trace::encode
  - '& operator<<(std::ostream& ostrm, const AnyValue& val)'
  - pdns::trace::TraceID
  - pdns::trace::TraceID
  - '& operator<<(std::ostream& ostrm, const TraceID& val)'
  - pdns::trace::getRandomTraceID
  - pdns::trace::makeRandom
  - pdns::trace::clear
  - pdns::trace::SpanID
  - pdns::trace::SpanID
  - '& operator<<(std::ostream& ostrm, const SpanID& val)'
  - pdns::trace::getRandomSpanID
  - pdns::trace::makeRandom
  - pdns::trace::clear
  - pdns::trace::fill
  - pdns::trace::fill
  - pdns::trace::fill
  - pdns::trace::fill
  - pdns::trace::encode
  - pdns::trace::decodeTraceID
  - pdns::trace::encode
  - pdns::trace::decodeSpanID
  - pdns::trace::clear
  - pdns::trace::timestamp
  - pdns::trace::clear
  - pdns::trace::setIDsIfNotSet
  - pdns::trace::close
  - pdns::trace::clear
  - pdns::trace::close
  - pdns::trace::close
  - pdns::trace::close
  - pdns::trace::encode
  - pdns::trace::boilerPlate
  - pdns::trace::ArrayValue::decode
  - pdns::trace::KeyValueList::decode
  - pdns::trace::EDNSOTTraceRecord
  - pdns::trace::setVersion
  - pdns::trace::setReserved
  - pdns::trace::setTraceID
  - pdns::trace::setSpanID
  - pdns::trace::setFlags
  - pdns::trace::EDNSOTTraceRecordView
  - pdns::trace::getVersion
  - pdns::trace::getReserved
  - pdns::trace::getTraceID
  - pdns::trace::getSpanID
  - pdns::trace::getFlags
  - ArrayValue::operator==(const ArrayValue& rhs) const
  - KeyValueList::operator==(const KeyValueList& rhs) const
  - KeyValue::operator==(const KeyValue& rhs) const
  source_file: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
  types:
    enum:
    - enumerators:
      - name: STATUS_CODE_UNSET
        value: '0'
      - name: STATUS_CODE_OK
        value: '1'
      - name: STATUS_CODE_ERROR
        value: '2'
      item_type: enum
      name: StatusCode
      pos:
        line_end: 364
        line_start: 355
        source_file: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    - enumerators:
      - name: SPAN_KIND_UNSPECIFIED
        value: '0'
      - name: SPAN_KIND_SERVER
        value: '2'
      - name: SPAN_KIND_INTERNAL
        value: '1'
      - name: SPAN_KIND_CLIENT
        value: '3'
      - name: SPAN_KIND_PRODUCER
        value: '4'
      - name: SPAN_KINCONSUMER
        value: '5'
      item_type: enum
      name: SpanKind
      pos:
        line_end: 473
        line_start: 451
        source_file: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    - enumerators:
      - name: SPAN_FLAGS_DO_NOT_USE
        value: '0'
      - name: SPAN_FLAGS_CONTEXT_HAS_IS_REMOTE_MASK
        value: '0x00000100'
      - name: SPAN_FLAGS_TRACE_FLAGS_MASK
        value: '0x000000FF'
      - name: SPAN_FLAGS_CONTEXT_IS_REMOTE_MASK
        value: '0x00000200'
      item_type: enum
      name: SpanFlags
      pos:
        line_end: 660
        line_start: 647
        source_file: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    - enumerators:
      - name: STATUS_CODE_UNSET
        value: '0'
      - name: STATUS_CODE_OK
        value: '1'
      - name: STATUS_CODE_ERROR
        value: '2'
      item_type: enum
      name: StatusCode
      pos:
        line_end: 364
        line_start: 355
        source_file: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    - enumerators:
      - name: SPAN_KIND_UNSPECIFIED
        value: '0'
      - name: SPAN_KIND_SERVER
        value: '2'
      - name: SPAN_KIND_INTERNAL
        value: '1'
      - name: SPAN_KIND_CLIENT
        value: '3'
      - name: SPAN_KIND_PRODUCER
        value: '4'
      - name: SPAN_KINCONSUMER
        value: '5'
      item_type: enum
      name: SpanKind
      pos:
        line_end: 473
        line_start: 451
        source_file: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    - enumerators:
      - name: SPAN_FLAGS_DO_NOT_USE
        value: '0'
      - name: SPAN_FLAGS_CONTEXT_HAS_IS_REMOTE_MASK
        value: '0x00000100'
      - name: SPAN_FLAGS_TRACE_FLAGS_MASK
        value: '0x000000FF'
      - name: SPAN_FLAGS_CONTEXT_IS_REMOTE_MASK
        value: '0x00000200'
      item_type: enum
      name: SpanFlags
      pos:
        line_end: 660
        line_start: 647
        source_file: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    preproc_defs: []
    structs:
    - fields:
      - name: values
        type: std::vector<AnyValue>
      - name: decode(protozero::pbf_reader& reader)
        type: ArrayValue
      - name: operator==(const ArrayValue& rhs) const
        type: bool
      item_type: struct
      name: ArrayValue
      pos:
        line_end: 152
        line_start: 140
        source_file: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    - fields:
      - name: values
        type: std::vector<KeyValue>
      - name: decode(protozero::pbf_reader& reader)
        type: KeyValueList
      - name: operator==(const KeyValueList& rhs) const
        type: bool
      item_type: struct
      name: KeyValueList
      pos:
        line_end: 166
        line_start: 154
        source_file: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    - fields:
      - name: encode(protozero::pbf_writer& writer) const
        type: void
      - name: decode(protozero::pbf_reader& reader)
        type: AnyValue
      - name: toLogString() const
        type: std::string
      item_type: struct
      name: AnyValue
      pos:
        line_end: 178
        line_start: 169
        source_file: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    - fields:
      - name: schema_url
        type: std::string
      - name: type
        type: std::string
      - name: id_keys
        type: std::vector<std::string>
      - name: description_keys
        type: std::vector<std::string>
      - name: encode(protozero::pbf_writer& writer) const
        type: void
      - name: decode(protozero::pbf_reader& reader)
        type: EntityRef
      item_type: struct
      name: EntityRef
      pos:
        line_end: 189
        line_start: 180
        source_file: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    - fields:
      - name: key
        type: std::string
      - name: value
        type: AnyValue
      - name: encode(protozero::pbf_writer& writer) const
        type: void
      - name: decode(protozero::pbf_reader& reader)
        type: KeyValue
      - name: operator==(const KeyValue& rhs) const
        type: bool
      item_type: struct
      name: KeyValue
      pos:
        line_end: 199
        line_start: 191
        source_file: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    - fields:
      - name: attributes
        type: std::vector<KeyValue>
      - name: dropped_attributes_count
        type: uint32_t
      - name: entity_refs
        type: std::vector<EntityRef>
      - name: encode(protozero::pbf_writer& writer) const
        type: void
      - name: decode(protozero::pbf_reader& reader)
        type: Resource
      item_type: struct
      name: Resource
      pos:
        line_end: 209
        line_start: 201
        source_file: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    - fields:
      - name: name
        type: std::string
      - name: version
        type: std::string
      - name: attributes
        type: std::vector<KeyValue>
      - name: dropped_attributes_count
        type: uint32_t
      - name: encode(protozero::pbf_writer& writer) const
        type: void
      - name: decode(protozero::pbf_reader& reader)
        type: InstrumentationScope
      item_type: struct
      name: InstrumentationScope
      pos:
        line_end: 220
        line_start: 211
        source_file: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    - fields:
      - name: toLogString() const
        type: std::string
      item_type: struct
      name: TraceID
      pos:
        line_end: 254
        line_start: 222
        source_file: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    - fields:
      - name: toLogString() const
        type: std::string
      item_type: struct
      name: SpanID
      pos:
        line_end: 289
        line_start: 257
        source_file: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    - fields:
      - name: message
        type: std::string
      - name: code
        type: StatusCode
      - name: encode(protozero::pbf_writer& writer) const
        type: void
      - name: decode(protozero::pbf_reader& reader)
        type: Status
      item_type: struct
      name: Status
      pos:
        line_end: 376
        line_start: 348
        source_file: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    - fields:
      - name: trace_id
        type: TraceID
      - name: span_id
        type: SpanID
      - name: parent_span_id
        type: SpanID
      - name: start_time_unix_nano
        type: uint64_t
      item_type: struct
      name: InitialSpanInfo
      pos:
        line_end: 411
        line_start: 387
        source_file: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    - fields:
      - name: trace_id
        type: TraceID
      - name: span_id
        type: SpanID
      - name: trace_state
        type: std::string
      - name: parent_span_id
        type: SpanID
      - name: name
        type: std::string
      - name: kind
        type: SpanKind
      - name: start_time_unix_nano
        type: uint64_t
      - name: end_time_unix_nano
        type: uint64_t
      - name: attributes
        type: std::vector<KeyValue>
      - name: dropped_attributes_count
        type: uint32_t
      - name: events
        type: std::vector<Event>
      - name: dropped_events_count
        type: uint32_t
      - name: links
        type: std::vector<Link>
      - name: dropped_links_count
        type: uint32_t
      - name: status
        type: Status
      - name: flags
        type: uint32_t
      - name: encode(protozero::pbf_writer& writer) const
        type: void
      - name: decode(protozero::pbf_reader& reader)
        type: Span
      item_type: struct
      name: Span
      pos:
        line_end: 631
        line_start: 413
        source_file: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    - fields:
      - name: time_unix_nano
        type: uint64_t
      - name: name
        type: std::string
      - name: attributes
        type: std::vector<KeyValue>
      - name: dropped_attributes_count
        type: uint32_t
      - name: encode(protozero::pbf_writer& writer) const
        type: void
      - name: decode(protozero::pbf_reader& reader)
        type: Event
      item_type: struct
      name: Event
      pos:
        line_end: 529
        line_start: 512
        source_file: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    - fields:
      - name: trace_id
        type: TraceID
      - name: span_id
        type: SpanID
      - name: trace_state
        type: std::string
      - name: attributes
        type: std::vector<KeyValue>
      - name: dropped_attributes_count
        type: uint32_t
      - name: flags
        type: uint32_t
      - name: encode(protozero::pbf_writer& writer) const
        type: void
      - name: decode(protozero::pbf_reader& reader)
        type: Link
      item_type: struct
      name: Link
      pos:
        line_end: 577
        line_start: 540
        source_file: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    - fields:
      - name: scope
        type: InstrumentationScope
      - name: spans
        type: std::vector<Span>
      - name: schema_url
        type: std::string
      - name: encode(protozero::pbf_writer& writer) const
        type: void
      - name: decode(protozero::pbf_reader& reader)
        type: ScopeSpans
      item_type: struct
      name: ScopeSpans
      pos:
        line_end: 686
        line_start: 663
        source_file: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    - fields:
      - name: resource
        type: Resource
      - name: scope_spans
        type: std::vector<ScopeSpans>
      - name: schema_url
        type: std::string
      - name: encode(protozero::pbf_writer& writer) const
        type: void
      - name: decode(protozero::pbf_reader& reader)
        type: ResourceSpans
      item_type: struct
      name: ResourceSpans
      pos:
        line_end: 712
        line_start: 689
        source_file: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    - fields:
      - name: resource_spans
        type: std::vector<ResourceSpans>
      - name: encode(protozero::pbf_writer& writer) const
        type: void
      - name: decode(protozero::pbf_reader& reader)
        type: TracesData
      item_type: struct
      name: TracesData
      pos:
        line_end: 764
        line_start: 724
        source_file: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    - fields:
      - name: fullSize
        type: size_t
      - name: traceIDOffset
        type: size_t
      - name: spanIDOffset
        type: size_t
      - name: flagsOffset
        type: size_t
      - name: '* data'
        type: uint8_t
      item_type: struct
      name: EDNSOTTraceRecord
      pos:
        line_end: 810
        line_start: 776
        source_file: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    - fields:
      - name: '* const data'
        type: uint8_t
      - name: size
        type: size_t
      item_type: struct
      name: EDNSOTTraceRecordView
      pos:
        line_end: 863
        line_start: 812
        source_file: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    - fields:
      - name: values
        type: std::vector<AnyValue>
      - name: decode(protozero::pbf_reader& reader)
        type: ArrayValue
      - name: operator==(const ArrayValue& rhs) const
        type: bool
      item_type: struct
      name: ArrayValue
      pos:
        line_end: 152
        line_start: 140
        source_file: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    - fields:
      - name: values
        type: std::vector<KeyValue>
      - name: decode(protozero::pbf_reader& reader)
        type: KeyValueList
      - name: operator==(const KeyValueList& rhs) const
        type: bool
      item_type: struct
      name: KeyValueList
      pos:
        line_end: 166
        line_start: 154
        source_file: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    - fields:
      - name: encode(protozero::pbf_writer& writer) const
        type: void
      - name: decode(protozero::pbf_reader& reader)
        type: AnyValue
      - name: toLogString() const
        type: std::string
      item_type: struct
      name: AnyValue
      pos:
        line_end: 178
        line_start: 169
        source_file: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    - fields:
      - name: schema_url
        type: std::string
      - name: type
        type: std::string
      - name: id_keys
        type: std::vector<std::string>
      - name: description_keys
        type: std::vector<std::string>
      - name: encode(protozero::pbf_writer& writer) const
        type: void
      - name: decode(protozero::pbf_reader& reader)
        type: EntityRef
      item_type: struct
      name: EntityRef
      pos:
        line_end: 189
        line_start: 180
        source_file: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    - fields:
      - name: key
        type: std::string
      - name: value
        type: AnyValue
      - name: encode(protozero::pbf_writer& writer) const
        type: void
      - name: decode(protozero::pbf_reader& reader)
        type: KeyValue
      - name: operator==(const KeyValue& rhs) const
        type: bool
      item_type: struct
      name: KeyValue
      pos:
        line_end: 199
        line_start: 191
        source_file: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    - fields:
      - name: attributes
        type: std::vector<KeyValue>
      - name: dropped_attributes_count
        type: uint32_t
      - name: entity_refs
        type: std::vector<EntityRef>
      - name: encode(protozero::pbf_writer& writer) const
        type: void
      - name: decode(protozero::pbf_reader& reader)
        type: Resource
      item_type: struct
      name: Resource
      pos:
        line_end: 209
        line_start: 201
        source_file: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    - fields:
      - name: name
        type: std::string
      - name: version
        type: std::string
      - name: attributes
        type: std::vector<KeyValue>
      - name: dropped_attributes_count
        type: uint32_t
      - name: encode(protozero::pbf_writer& writer) const
        type: void
      - name: decode(protozero::pbf_reader& reader)
        type: InstrumentationScope
      item_type: struct
      name: InstrumentationScope
      pos:
        line_end: 220
        line_start: 211
        source_file: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    - fields:
      - name: toLogString() const
        type: std::string
      item_type: struct
      name: TraceID
      pos:
        line_end: 254
        line_start: 222
        source_file: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    - fields:
      - name: toLogString() const
        type: std::string
      item_type: struct
      name: SpanID
      pos:
        line_end: 289
        line_start: 257
        source_file: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    - fields:
      - name: message
        type: std::string
      - name: code
        type: StatusCode
      - name: encode(protozero::pbf_writer& writer) const
        type: void
      - name: decode(protozero::pbf_reader& reader)
        type: Status
      item_type: struct
      name: Status
      pos:
        line_end: 376
        line_start: 348
        source_file: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    - fields:
      - name: trace_id
        type: TraceID
      - name: span_id
        type: SpanID
      - name: parent_span_id
        type: SpanID
      - name: start_time_unix_nano
        type: uint64_t
      item_type: struct
      name: InitialSpanInfo
      pos:
        line_end: 411
        line_start: 387
        source_file: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    - fields:
      - name: trace_id
        type: TraceID
      - name: span_id
        type: SpanID
      - name: trace_state
        type: std::string
      - name: parent_span_id
        type: SpanID
      - name: name
        type: std::string
      - name: kind
        type: SpanKind
      - name: start_time_unix_nano
        type: uint64_t
      - name: end_time_unix_nano
        type: uint64_t
      - name: attributes
        type: std::vector<KeyValue>
      - name: dropped_attributes_count
        type: uint32_t
      - name: events
        type: std::vector<Event>
      - name: dropped_events_count
        type: uint32_t
      - name: links
        type: std::vector<Link>
      - name: dropped_links_count
        type: uint32_t
      - name: status
        type: Status
      - name: flags
        type: uint32_t
      - name: encode(protozero::pbf_writer& writer) const
        type: void
      - name: decode(protozero::pbf_reader& reader)
        type: Span
      item_type: struct
      name: Span
      pos:
        line_end: 631
        line_start: 413
        source_file: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    - fields:
      - name: time_unix_nano
        type: uint64_t
      - name: name
        type: std::string
      - name: attributes
        type: std::vector<KeyValue>
      - name: dropped_attributes_count
        type: uint32_t
      - name: encode(protozero::pbf_writer& writer) const
        type: void
      - name: decode(protozero::pbf_reader& reader)
        type: Event
      item_type: struct
      name: Event
      pos:
        line_end: 529
        line_start: 512
        source_file: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    - fields:
      - name: trace_id
        type: TraceID
      - name: span_id
        type: SpanID
      - name: trace_state
        type: std::string
      - name: attributes
        type: std::vector<KeyValue>
      - name: dropped_attributes_count
        type: uint32_t
      - name: flags
        type: uint32_t
      - name: encode(protozero::pbf_writer& writer) const
        type: void
      - name: decode(protozero::pbf_reader& reader)
        type: Link
      item_type: struct
      name: Link
      pos:
        line_end: 577
        line_start: 540
        source_file: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    - fields:
      - name: scope
        type: InstrumentationScope
      - name: spans
        type: std::vector<Span>
      - name: schema_url
        type: std::string
      - name: encode(protozero::pbf_writer& writer) const
        type: void
      - name: decode(protozero::pbf_reader& reader)
        type: ScopeSpans
      item_type: struct
      name: ScopeSpans
      pos:
        line_end: 686
        line_start: 663
        source_file: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    - fields:
      - name: resource
        type: Resource
      - name: scope_spans
        type: std::vector<ScopeSpans>
      - name: schema_url
        type: std::string
      - name: encode(protozero::pbf_writer& writer) const
        type: void
      - name: decode(protozero::pbf_reader& reader)
        type: ResourceSpans
      item_type: struct
      name: ResourceSpans
      pos:
        line_end: 712
        line_start: 689
        source_file: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    - fields:
      - name: resource_spans
        type: std::vector<ResourceSpans>
      - name: encode(protozero::pbf_writer& writer) const
        type: void
      - name: decode(protozero::pbf_reader& reader)
        type: TracesData
      item_type: struct
      name: TracesData
      pos:
        line_end: 764
        line_start: 724
        source_file: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    - fields:
      - name: fullSize
        type: size_t
      - name: traceIDOffset
        type: size_t
      - name: spanIDOffset
        type: size_t
      - name: flagsOffset
        type: size_t
      - name: '* data'
        type: uint8_t
      item_type: struct
      name: EDNSOTTraceRecord
      pos:
        line_end: 810
        line_start: 776
        source_file: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    - fields:
      - name: '* const data'
        type: uint8_t
      - name: size
        type: size_t
      item_type: struct
      name: EDNSOTTraceRecordView
      pos:
        line_end: 863
        line_start: 812
        source_file: /src/pdns/pdns/dnsdistdist/protozero-trace.hh
    typedefs: []
    union: []
- function_names: []
  source_file: /src/pdns/pdns/dnsdistdist/dnsdist-proxy-protocol.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/pdns/pdns/dnsdistdist/dnsdist-xsk.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/pdns/pdns/dnsdistdist/dnsdist-rule-chains.hh
  types:
    enum:
    - enumerators:
      - name: Rules
        value: '0'
      - name: CacheMissRules
        value: '1'
      item_type: enum
      name: RuleChain
      pos:
        line_end: 48
        line_start: 44
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-rule-chains.hh
    - enumerators:
      - name: ResponseRules
        value: '0'
      - name: XFRResponseRules
        value: '4'
      - name: SelfAnsweredResponseRules
        value: '3'
      - name: CacheInsertedResponseRules
        value: '2'
      - name: CacheHitResponseRules
        value: '1'
      - name: TimeoutResponseRules
        value: '5'
      item_type: enum
      name: ResponseRuleChain
      pos:
        line_end: 75
        line_start: 67
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-rule-chains.hh
    - enumerators:
      - name: Rules
        value: '0'
      - name: CacheMissRules
        value: '1'
      item_type: enum
      name: RuleChain
      pos:
        line_end: 48
        line_start: 44
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-rule-chains.hh
    - enumerators:
      - name: ResponseRules
        value: '0'
      - name: XFRResponseRules
        value: '4'
      - name: SelfAnsweredResponseRules
        value: '3'
      - name: CacheInsertedResponseRules
        value: '2'
      - name: CacheHitResponseRules
        value: '1'
      - name: TimeoutResponseRules
        value: '5'
      item_type: enum
      name: ResponseRuleChain
      pos:
        line_end: 75
        line_start: 67
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-rule-chains.hh
    preproc_defs: []
    structs:
    - fields:
      - name: d_rule
        type: std::shared_ptr<DNSRule>
      - name: d_action
        type: std::shared_ptr<DNSAction>
      - name: d_name
        type: std::string
      - name: d_id
        type: boost::uuids::uuid
      - name: d_creationOrder
        type: uint64_t
      item_type: struct
      name: RuleAction
      pos:
        line_end: 42
        line_start: 35
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-rule-chains.hh
    - fields:
      - name: prefix
        type: std::string
      - name: description
        type: std::string
      - name: metricName
        type: std::string
      - name: identifier
        type: RuleChain
      item_type: struct
      name: RuleChainDescription
      pos:
        line_end: 56
        line_start: 50
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-rule-chains.hh
    - fields:
      - name: d_rule
        type: std::shared_ptr<DNSRule>
      - name: d_action
        type: std::shared_ptr<DNSResponseAction>
      - name: d_name
        type: std::string
      - name: d_id
        type: boost::uuids::uuid
      - name: d_creationOrder
        type: uint64_t
      item_type: struct
      name: ResponseRuleAction
      pos:
        line_end: 65
        line_start: 58
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-rule-chains.hh
    - fields:
      - name: prefix
        type: std::string
      - name: description
        type: std::string
      - name: metricName
        type: std::string
      - name: identifier
        type: ResponseRuleChain
      item_type: struct
      name: ResponseRuleChainDescription
      pos:
        line_end: 83
        line_start: 77
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-rule-chains.hh
    - fields:
      - name: d_ruleActions
        type: std::vector<RuleAction>
      - name: d_cacheMissRuleActions
        type: std::vector<RuleAction>
      - name: d_respruleactions
        type: std::vector<ResponseRuleAction>
      - name: d_cachehitrespruleactions
        type: std::vector<ResponseRuleAction>
      - name: d_selfansweredrespruleactions
        type: std::vector<ResponseRuleAction>
      - name: d_cacheInsertedRespRuleActions
        type: std::vector<ResponseRuleAction>
      - name: d_XFRRespRuleActions
        type: std::vector<ResponseRuleAction>
      - name: d_TimeoutRespRuleActions
        type: std::vector<ResponseRuleAction>
      item_type: struct
      name: RuleChains
      pos:
        line_end: 95
        line_start: 85
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-rule-chains.hh
    - fields:
      - name: d_rule
        type: std::shared_ptr<DNSRule>
      - name: d_action
        type: std::shared_ptr<DNSAction>
      - name: d_name
        type: std::string
      - name: d_id
        type: boost::uuids::uuid
      - name: d_creationOrder
        type: uint64_t
      item_type: struct
      name: RuleAction
      pos:
        line_end: 42
        line_start: 35
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-rule-chains.hh
    - fields:
      - name: prefix
        type: std::string
      - name: description
        type: std::string
      - name: metricName
        type: std::string
      - name: identifier
        type: RuleChain
      item_type: struct
      name: RuleChainDescription
      pos:
        line_end: 56
        line_start: 50
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-rule-chains.hh
    - fields:
      - name: d_rule
        type: std::shared_ptr<DNSRule>
      - name: d_action
        type: std::shared_ptr<DNSResponseAction>
      - name: d_name
        type: std::string
      - name: d_id
        type: boost::uuids::uuid
      - name: d_creationOrder
        type: uint64_t
      item_type: struct
      name: ResponseRuleAction
      pos:
        line_end: 65
        line_start: 58
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-rule-chains.hh
    - fields:
      - name: prefix
        type: std::string
      - name: description
        type: std::string
      - name: metricName
        type: std::string
      - name: identifier
        type: ResponseRuleChain
      item_type: struct
      name: ResponseRuleChainDescription
      pos:
        line_end: 83
        line_start: 77
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-rule-chains.hh
    - fields:
      - name: d_ruleActions
        type: std::vector<RuleAction>
      - name: d_cacheMissRuleActions
        type: std::vector<RuleAction>
      - name: d_respruleactions
        type: std::vector<ResponseRuleAction>
      - name: d_cachehitrespruleactions
        type: std::vector<ResponseRuleAction>
      - name: d_selfansweredrespruleactions
        type: std::vector<ResponseRuleAction>
      - name: d_cacheInsertedRespRuleActions
        type: std::vector<ResponseRuleAction>
      - name: d_XFRRespRuleActions
        type: std::vector<ResponseRuleAction>
      - name: d_TimeoutRespRuleActions
        type: std::vector<ResponseRuleAction>
      item_type: struct
      name: RuleChains
      pos:
        line_end: 95
        line_start: 85
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-rule-chains.hh
    typedefs: []
    union: []
- function_names:
  - BOOST_AUTO_TEST_CASE
  source_file: /src/pdns/pdns/dnsdistdist/test-dnsdistbackoff.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - pdns::trace::dnsdist::Tracer::getTracesData
  - pdns::trace::dnsdist::Tracer::getOTProtobuf
  - pdns::trace::dnsdist::Tracer::addSpan
  - pdns::trace::dnsdist::Tracer::addSpan
  - pdns::trace::dnsdist::Tracer::setTraceID
  - pdns::trace::dnsdist::Tracer::setRootSpanID
  - pdns::trace::dnsdist::Tracer::setTraceAttribute
  - pdns::trace::dnsdist::Tracer::closeSpan
  - pdns::trace::dnsdist::Tracer::setRootSpanAttribute
  - pdns::trace::dnsdist::Tracer::setSpanAttribute
  - pdns::trace::dnsdist::Tracer::getRootSpanID
  - pdns::trace::dnsdist::Tracer::getLastSpanID
  - pdns::trace::dnsdist::Tracer::getLastSpanIDForName
  - pdns::trace::dnsdist::Tracer::getTraceID
  - pdns::trace::dnsdist::Tracer::getCloser
  - pdns::trace::dnsdist::Tracer::openSpan
  - pdns::trace::dnsdist::Tracer::openSpan
  - Tracer::Closer::getSpanID() const
  - Tracer::Closer::setAttribute([[maybe_unused]] const std::string& key, [[maybe_unused]]
    const AnyValue& value)
  - pdns::trace::dnsdist::makeEDNSTraceParentOption
  - pdns::trace::dnsdist::addTraceparentEdnsOptionToPacketBuffer
  - pdns::trace::dnsdist::Tracer::getTracesData
  - pdns::trace::dnsdist::Tracer::getOTProtobuf
  - pdns::trace::dnsdist::Tracer::addSpan
  - pdns::trace::dnsdist::Tracer::addSpan
  - pdns::trace::dnsdist::Tracer::setTraceID
  - pdns::trace::dnsdist::Tracer::setRootSpanID
  - pdns::trace::dnsdist::Tracer::setTraceAttribute
  - pdns::trace::dnsdist::Tracer::closeSpan
  - pdns::trace::dnsdist::Tracer::setRootSpanAttribute
  - pdns::trace::dnsdist::Tracer::setSpanAttribute
  - pdns::trace::dnsdist::Tracer::getRootSpanID
  - pdns::trace::dnsdist::Tracer::getLastSpanID
  - pdns::trace::dnsdist::Tracer::getLastSpanIDForName
  - pdns::trace::dnsdist::Tracer::getTraceID
  - pdns::trace::dnsdist::Tracer::getCloser
  - pdns::trace::dnsdist::Tracer::openSpan
  - pdns::trace::dnsdist::Tracer::openSpan
  - Tracer::Closer::getSpanID() const
  - Tracer::Closer::setAttribute([[maybe_unused]] const std::string& key, [[maybe_unused]]
    const AnyValue& value)
  - pdns::trace::dnsdist::makeEDNSTraceParentOption
  - pdns::trace::dnsdist::addTraceparentEdnsOptionToPacketBuffer
  source_file: /src/pdns/pdns/dnsdistdist/dnsdist-opentelemetry.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - dnsdist::udp::contextToStr
  - dnsdist::udp::setUDPSocketBufferSizes
  - dnsdist::udp::contextToStr
  - dnsdist::udp::setUDPSocketBufferSizes
  source_file: /src/pdns/pdns/dnsdistdist/dnsdist-udp.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - '& operator<<(std::ostream &os, const DNSName& d)'
  - DNSName::throwSafeRangeError
  - DNSName::DNSName
  - DNSName::DNSName
  - checkLabelLength
  - DNSName::parsePacketUncompressed
  - DNSName::packetParser
  - DNSName::toString
  - DNSName::toString
  - DNSName::toLogString
  - DNSName::toDNSString
  - DNSName::toDNSStringLC
  - DNSName::wirelength
  - DNSName::isPartOf
  - DNSName::makeRelative
  - DNSName::makeUsRelative
  - DNSName::getCommonLabels
  - DNSName::labelReverse
  - DNSName::appendRawLabel
  - DNSName::appendRawLabel
  - DNSName::prependRawLabel
  - DNSName::slowCanonCompare_three_way
  - DNSName::canonCompare_three_way
  - DNSName::getRawLabels
  - DNSName::getRawLabel
  - DNSName::getLastLabel
  - DNSName::chopOff
  - DNSName::isWildcard
  - DNSName::isHostname
  - DNSName::countLabels
  - DNSName::trimToLabels
  - hash_value
  - DNSName::appendEscapedLabel
  - DNSName::has8bitBytes
  - DNSName::RawLabelsVisitor::RawLabelsVisitor(const DNSName::string_t& storage)
  - DNSName::getRawLabelsVisitor
  - DNSName::RawLabelsVisitor::front() const
  - DNSName::RawLabelsVisitor::back() const
  - DNSName::RawLabelsVisitor::pop_back()
  - DNSName::RawLabelsVisitor::empty() const
  - DNSName::matchesUncompressedName
  - '& operator<<(std::ostream &ostr, const ZoneName& zone)'
  - hash_value
  - DNSName::isPartOf
  - DNSName::makeRelative
  - DNSName::makeUsRelative
  - ZoneName::findVariantSeparator
  - ZoneName::ZoneName
  - ZoneName::ZoneName
  - ZoneName::setVariant
  - ZoneName::toLogString
  - ZoneName::toString
  - ZoneName::toStringNoDot
  - ZoneName::toStringRootDot
  - ZoneName::hash
  - ZoneName::operator<(const ZoneName& rhs)  const
  - ZoneName::canonCompare_three_way
  source_file: /src/pdns/pdns/dnsdistdist/dnsname.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - setupLuaBindingsDNSParser
  source_file: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-dnsparser.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - DoHClientCollection::getThreadsCount
  source_file: /src/pdns/pdns/dnsdistdist/dnsdist-nghttp2.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - ~KeyValueLookupKey()
  - KeyValueLookupKeySourceIP::KeyValueLookupKeySourceIP
  - KeyValueLookupKeySourceIP::getKeys
  - KeyValueLookupKeySourceIP::toString
  - KeyValueLookupKeyQName::KeyValueLookupKeyQName
  - KeyValueLookupKeyQName::getKeys
  - KeyValueLookupKeyQName::getKeys
  - KeyValueLookupKeyQName::toString
  - KeyValueLookupKeySuffix::KeyValueLookupKeySuffix
  - KeyValueLookupKeySuffix::getKeys
  - KeyValueLookupKeySuffix::toString
  - KeyValueLookupKeyTag::KeyValueLookupKeyTag
  - KeyValueLookupKeyTag::getKeys
  - KeyValueLookupKeyTag::toString
  - ~KeyValueStore()
  - KeyValueStore::getRangeValue
  - KeyValueStore::reload
  - LMDBKVStore::LMDBKVStore
  source_file: /src/pdns/pdns/dnsdistdist/dnsdist-kvs.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - QType::QType
  - operator uint16_t() const
  - QType::getCode
  - operator()(QType qtype) const noexcept
  - operator()(QType qtype) const noexcept
  - '& operator<<(std::ostream& stream, const QType& qtype)'
  - hash_value
  - QClass
  - operator uint16_t() const
  - getCode
  - '& operator<<(std::ostream& s, QClass qclass)'
  source_file: /src/pdns/pdns/dnsdistdist/qtype.hh
  types:
    enum:
    - enumerators:
      - name: NS
        value: '2'
      - name: MG
        value: '8'
      - name: KEY
        value: '25'
      - name: TXT
        value: '16'
      - name: NAPTR
        value: '35'
      - name: DNAME
        value: '39'
      - name: SSHFP
        value: '44'
      - name: DNSKEY
        value: '48'
      - name: TLSA
        value: '52'
      - name: CDNSKEY
        value: '60'
      - name: NID
        value: '104'
      - name: TKEY
        value: '249'
      - name: EUI48
        value: '108'
      - name: LUA
        value: '65402'
      - name: WALLET
        value: '262'
      - name: EUI64
        value: '109'
      - name: ZONEMD
        value: '63'
      - name: A
        value: '1'
      - name: MB
        value: '7'
      - name: SIG
        value: '24'
      - name: MX
        value: '15'
      - name: SRV
        value: '33'
      - name: A6
        value: '38'
      - name: DS
        value: '43'
      - name: NSEC
        value: '47'
      - name: NSEC3PARAM
        value: '51'
      - name: CDS
        value: '59'
      - name: CSYNC
        value: '62'
      - name: MAILB
        value: '253'
      - name: SPF
        value: '99'
      - name: SMIMEA
        value: '53'
      - name: AXFR
        value: '252'
      - name: ALIAS
        value: '65401'
      - name: BRID
        value: '68'
      - name: RESINFO
        value: '261'
      - name: SOA
        value: '6'
      - name: PTR
        value: '12'
      - name: MINFO
        value: '14'
      - name: LOC
        value: '29'
      - name: AFSDB
        value: '18'
      - name: CERT
        value: '37'
      - name: APL
        value: '42'
      - name: RRSIG
        value: '46'
      - name: NSEC3
        value: '50'
      - name: RKEY
        value: '57'
      - name: LP
        value: '107'
      - name: CAA
        value: '257'
      - name: OPENPGPKEY
        value: '61'
      - name: DLV
        value: '32769'
      - name: L64
        value: '106'
      - name: MAILA
        value: '254'
      - name: IXFR
        value: '251'
      - name: HHIT
        value: '67'
      - name: ENT
        value: '0'
      - name: CNAME
        value: '5'
      - name: MR
        value: '9'
      - name: HINFO
        value: '13'
      - name: RP
        value: '17'
      - name: AAAA
        value: '28'
      - name: KX
        value: '36'
      - name: OPT
        value: '41'
      - name: IPSECKEY
        value: '45'
      - name: DHCID
        value: '49'
      - name: HTTPS
        value: '65'
      - name: TSIG
        value: '250'
      - name: ADDR
        value: '65400'
      - name: URI
        value: '256'
      - name: SVCB
        value: '64'
      - name: ANY
        value: '255'
      - name: L32
        value: '105'
      item_type: enum
      name: typeenum
      pos:
        line_end: 151
        line_start: 78
        source_file: /src/pdns/pdns/dnsdistdist/qtype.hh
    preproc_defs: []
    structs:
    - fields: []
      item_type: struct
      name: hash<QType>
      pos:
        line_end: 174
        line_start: 170
        source_file: /src/pdns/pdns/dnsdistdist/qtype.hh
    - fields: []
      item_type: struct
      name: hash<QType>
      pos:
        line_end: 174
        line_start: 170
        source_file: /src/pdns/pdns/dnsdistdist/qtype.hh
    - fields:
      - name: toString() const
        type: std::string
      - name: IN
        type: QClass
      - name: CHAOS
        type: QClass
      - name: NONE
        type: QClass
      - name: ANY
        type: QClass
      - name: qclass
        type: uint16_t
      item_type: struct
      name: QClass
      pos:
        line_end: 208
        line_start: 187
        source_file: /src/pdns/pdns/dnsdistdist/qtype.hh
    typedefs: []
    union: []
- function_names:
  - LLVMFuzzerTestOneInput
  source_file: /src/pdns/pdns/dnsdistdist/fuzz_dnsdistcache.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - SVCRecordParameters
  source_file: /src/pdns/pdns/dnsdistdist/dnsdist-svc.hh
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: mandatoryParams
        type: std::set<uint16_t>
      - name: alpns
        type: std::vector<std::string>
      - name: ipv4hints
        type: std::vector<ComboAddress>
      - name: ipv6hints
        type: std::vector<ComboAddress>
      - name: additionalParams
        type: std::vector<std::pair<uint16_t, std::string>>
      - name: ech
        type: std::string
      - name: target
        type: DNSName
      - name: port
        type: std::optional<uint16_t>
      - name: priority
        type: uint16_t
      - name: noDefaultAlpn
        type: bool
      item_type: struct
      name: SVCRecordParameters
      pos:
        line_end: 49
        line_start: 33
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-svc.hh
    typedefs: []
    union: []
- function_names:
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  source_file: /src/pdns/pdns/dnsdistdist/test-channel.cc
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: a
        type: uint64_t
      item_type: struct
      name: MyObject
      pos:
        line_end: 13
        line_start: 10
        source_file: /src/pdns/pdns/dnsdistdist/test-channel.cc
    typedefs: []
    union: []
- function_names:
  - dnsdist::Protocol::Protocol
  - Protocol::operator==(Protocol::typeenum type) const
  - Protocol::operator!=(Protocol::typeenum type) const
  - Protocol::operator==(const Protocol& rhs) const
  - Protocol::operator!=(const Protocol& rhs) const
  - '& Protocol::toString() const'
  - '& Protocol::toPrettyString() const'
  - dnsdist::Protocol::isUDP
  - dnsdist::Protocol::isEncrypted
  - dnsdist::Protocol::toNumber
  - dnsdist::Protocol::Protocol
  - Protocol::operator==(Protocol::typeenum type) const
  - Protocol::operator!=(Protocol::typeenum type) const
  - Protocol::operator==(const Protocol& rhs) const
  - Protocol::operator!=(const Protocol& rhs) const
  - '& Protocol::toString() const'
  - '& Protocol::toPrettyString() const'
  - dnsdist::Protocol::isUDP
  - dnsdist::Protocol::isEncrypted
  - dnsdist::Protocol::toNumber
  source_file: /src/pdns/pdns/dnsdistdist/dnsdist-protocols.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - pdns::coverage::dumpCoverageData
  - pdns::coverage::dumpCoverageData
  source_file: /src/pdns/pdns/dnsdistdist/coverage.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - HTTPHeaderRule::HTTPHeaderRule
  - HTTPHeaderRule::matches
  - HTTPHeaderRule::toString
  - HTTPPathRule::HTTPPathRule
  - HTTPPathRule::matches
  - HTTPPathRule::toString
  - HTTPPathRegexRule::HTTPPathRegexRule
  - HTTPPathRegexRule::matches
  - HTTPPathRegexRule::toString
  - dnsdist::selectors::getQClassSelector
  - dnsdist::selectors::getQTypeSelector
  - dnsdist::selectors::getQNameSuffixSelector
  - dnsdist::selectors::getQNameSetSelector
  - dnsdist::selectors::getQNameSelector
  - dnsdist::selectors::getNetmaskGroupSelector
  - dnsdist::selectors::getKeyValueStoreLookupSelector
  - dnsdist::selectors::getKeyValueStoreRangeLookupSelector
  - dnsdist::selectors::getAndSelector
  - dnsdist::selectors::getOrSelector
  - dnsdist::selectors::getNotSelector
  - dnsdist::selectors::getLuaSelector
  - dnsdist::selectors::getLuaFFISelector
  - dnsdist::selectors::getQClassSelector
  - dnsdist::selectors::getQTypeSelector
  - dnsdist::selectors::getQNameSuffixSelector
  - dnsdist::selectors::getQNameSetSelector
  - dnsdist::selectors::getQNameSelector
  - dnsdist::selectors::getNetmaskGroupSelector
  - dnsdist::selectors::getKeyValueStoreLookupSelector
  - dnsdist::selectors::getKeyValueStoreRangeLookupSelector
  - dnsdist::selectors::getAndSelector
  - dnsdist::selectors::getOrSelector
  - dnsdist::selectors::getNotSelector
  - dnsdist::selectors::getLuaSelector
  - dnsdist::selectors::getLuaFFISelector
  source_file: /src/pdns/pdns/dnsdistdist/dnsdist-rules.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - doKVSChecks
  - doKVSRangeChecks
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  source_file: /src/pdns/pdns/dnsdistdist/test-dnsdistkvs_cc.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.hh
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: d_name
        type: DNSName
      - name: d_ttl
        type: uint32_t
      - name: d_type
        type: uint16_t
      - name: d_class
        type: uint16_t
      - name: d_contentLength
        type: uint16_t
      - name: d_contentOffset
        type: uint16_t
      - name: d_place
        type: DNSResourceRecord::Place
      item_type: struct
      name: Record
      pos:
        line_end: 42
        line_start: 33
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.hh
    - fields:
      - name: setAA
        type: std::optional<bool>
      - name: setAD
        type: std::optional<bool>
      - name: setRA
        type: std::optional<bool>
      - name: ttl
        type: uint32_t
      item_type: struct
      name: ResponseConfig
      pos:
        line_end: 79
        line_start: 73
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.hh
    - fields:
      - name: d_name
        type: DNSName
      - name: d_ttl
        type: uint32_t
      - name: d_type
        type: uint16_t
      - name: d_class
        type: uint16_t
      - name: d_contentLength
        type: uint16_t
      - name: d_contentOffset
        type: uint16_t
      - name: d_place
        type: DNSResourceRecord::Place
      item_type: struct
      name: Record
      pos:
        line_end: 42
        line_start: 33
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.hh
    - fields:
      - name: setAA
        type: std::optional<bool>
      - name: setAD
        type: std::optional<bool>
      - name: setRA
        type: std::optional<bool>
      - name: ttl
        type: uint32_t
      item_type: struct
      name: ResponseConfig
      pos:
        line_end: 79
        line_start: 73
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-dnsparser.hh
    typedefs: []
    union: []
- function_names: []
  source_file: /src/pdns/pdns/dnsdistdist/dnsdist-internal-queries.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - dnsdist::Protocol::Protocol
  - dnsdist::Protocol::Protocol
  source_file: /src/pdns/pdns/dnsdistdist/dnsdist-protocols.hh
  types:
    enum:
    - enumerators:
      - name: DoUDP
        value: '0'
      - name: DoT
      - name: DNSCryptTCP
      - name: DoTCP
      - name: DNSCryptUDP
      - name: DoH
      - name: DoQ
      - name: DoH3
      item_type: enum
      name: typeenum
      pos:
        line_end: 42
        line_start: 32
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-protocols.hh
    - enumerators:
      - name: DoUDP
        value: '0'
      - name: DoT
      - name: DNSCryptTCP
      - name: DoTCP
      - name: DNSCryptUDP
      - name: DoH
      - name: DoQ
      - name: DoH3
      item_type: enum
      name: typeenum
      pos:
        line_end: 42
        line_start: 32
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-protocols.hh
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - pdns::ipcrypt2::IPCrypt2::IPCrypt2
  - '& operator=(IPCrypt2&& rhs)'
  - pdns::ipcrypt2::IPCrypt2::IPCrypt2
  - '& operator=(const IPCrypt2& orig)'
  - pdns::ipcrypt2::IPCrypt2::IPCrypt2
  - '& operator=(IPCrypt2&& rhs)'
  - pdns::ipcrypt2::IPCrypt2::IPCrypt2
  - '& operator=(const IPCrypt2& orig)'
  source_file: /src/pdns/pdns/dnsdistdist/dnsdist-ipcrypt2.hh
  types:
    enum:
    - enumerators:
      - name: deterministic
      - name: pfx
      - name: ndx
      - name: nd
      item_type: enum
      name: IPCryptMethod
      pos:
        line_end: 41
        line_start: 35
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-ipcrypt2.hh
    - enumerators:
      - name: deterministic
      - name: pfx
      - name: ndx
      - name: nd
      item_type: enum
      name: IPCryptMethod
      pos:
        line_end: 41
        line_start: 35
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-ipcrypt2.hh
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - dnsdist::self_answers::addRecordHeader
  - dnsdist::self_answers::getEDNSStatusInQuery
  - dnsdist::self_answers::generateAnswerFromCNAME
  - dnsdist::self_answers::generateAnswerFromIPAddresses
  - dnsdist::self_answers::generateAnswerFromRDataEntries
  - dnsdist::self_answers::generateAnswerFromRawPacket
  - dnsdist::self_answers::removeRecordsAndSetRCode
  - dnsdist::self_answers::addRecordHeader
  - dnsdist::self_answers::getEDNSStatusInQuery
  - dnsdist::self_answers::generateAnswerFromCNAME
  - dnsdist::self_answers::generateAnswerFromIPAddresses
  - dnsdist::self_answers::generateAnswerFromRDataEntries
  - dnsdist::self_answers::generateAnswerFromRawPacket
  - dnsdist::self_answers::removeRecordsAndSetRCode
  source_file: /src/pdns/pdns/dnsdistdist/dnsdist-self-answers.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - setupLuaBindingsNetwork
  source_file: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-network.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - pdns::stat_t_trait::stat_t_trait
  - pdns::stat_t_trait::stat_t_trait
  - '& operator=(const base_t& value)'
  - ~stat_t_trait()
  - pdns::stat_t_trait::stat_t_trait
  - '& operator=(const stat_t_trait&)'
  - '& operator=(stat_t_trait&&)'
  - pdns::stat_t_trait::stat_t_trait
  - operator++(int)
  - operator++()
  - operator--(int)
  - operator--()
  - operator+=(base_t arg)
  - operator-=(base_t arg)
  - pdns::stat_t_trait::load
  - pdns::stat_t_trait::store
  - operator base_t() const
  - '& ref()'
  - '& ref() const'
  - pdns::stat_t_trait::stat_t_trait
  - pdns::stat_t_trait::stat_t_trait
  - '& operator=(const base_t& value)'
  - ~stat_t_trait()
  - pdns::stat_t_trait::stat_t_trait
  - '& operator=(const stat_t_trait&)'
  - '& operator=(stat_t_trait&&)'
  - pdns::stat_t_trait::stat_t_trait
  - operator++(int)
  - operator++()
  - operator--(int)
  - operator--()
  - operator+=(base_t arg)
  - operator-=(base_t arg)
  - pdns::stat_t_trait::load
  - pdns::stat_t_trait::store
  - operator base_t() const
  - '& ref()'
  - '& ref() const'
  source_file: /src/pdns/pdns/dnsdistdist/stat_t.hh
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: CPU_LEVEL1_DCACHE_LINESIZE
      pos:
        line_end: 27
        line_start: 26
        source_file: /src/pdns/pdns/dnsdistdist/stat_t.hh
      type_or_value: 64 // Until we know better via configure/getconf
    structs: []
    typedefs: []
    union: []
- function_names:
  - ExponentialBackOffTimer::ExponentialBackOffTimer
  - ExponentialBackOffTimer::get
  source_file: /src/pdns/pdns/dnsdistdist/dnsdist-backoff.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/pdns/pdns/dnsdistdist/dnsdist-mac-address.hh
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: ca
        type: ComboAddress
      - name: mac
        type: MacAddress
      - name: ttd
        type: time_t
      - name: found
        type: bool
      item_type: struct
      name: Entry
      pos:
        line_end: 43
        line_start: 37
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-mac-address.hh
    - fields:
      - name: ca
        type: ComboAddress
      - name: mac
        type: MacAddress
      - name: ttd
        type: time_t
      - name: found
        type: bool
      item_type: struct
      name: Entry
      pos:
        line_end: 43
        line_start: 37
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-mac-address.hh
    typedefs: []
    union: []
- function_names:
  - burtlemix
  - burtle
  - burtleCI
  - burtleCI
  source_file: /src/pdns/pdns/dnsdistdist/burtle.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - parseFSTRMOptions
  - setupLuaBindingsProtoBuf
  - setupLuaBindingsProtoBuf
  source_file: /src/pdns/pdns/dnsdistdist/dnsdist-lua-bindings-protobuf.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - DNSCryptQuery::DNSCryptQuery
  - DNSCryptCert::getSerial
  - DNSCryptCert::getTSStart
  - DNSCryptCert::getTSEnd
  - DNSCryptCert::isValid
  - DNSCryptQuery::DNSCryptQuery
  - DNSCryptQuery::isValid
  - '& getQName() const'
  - DNSCryptQuery::getID
  - '& getClientMagic() const'
  - DNSCryptQuery::isEncrypted
  - DNSCryptQuery::setCertificatePair
  - '& getProviderName() const'
  source_file: /src/pdns/pdns/dnsdistdist/dnscrypt.hh
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: DNSCRYPT_MAX_RESPONSE_PADDING_AND_MAC_SIZE
      pos:
        line_end: 30
        line_start: 29
        source_file: /src/pdns/pdns/dnsdistdist/dnscrypt.hh
      type_or_value: (0)
    - item_type: preproc_def
      name: DNSCRYPT_PROVIDER_PUBLIC_KEY_SIZE
      pos:
        line_end: 59
        line_start: 58
        source_file: /src/pdns/pdns/dnsdistdist/dnscrypt.hh
      type_or_value: (crypto_sign_ed25519_PUBLICKEYBYTES)
    - item_type: preproc_def
      name: DNSCRYPT_PROVIDER_PRIVATE_KEY_SIZE
      pos:
        line_end: 60
        line_start: 59
        source_file: /src/pdns/pdns/dnsdistdist/dnscrypt.hh
      type_or_value: (crypto_sign_ed25519_SECRETKEYBYTES)
    - item_type: preproc_def
      name: DNSCRYPT_SIGNATURE_SIZE
      pos:
        line_end: 61
        line_start: 60
        source_file: /src/pdns/pdns/dnsdistdist/dnscrypt.hh
      type_or_value: (crypto_sign_ed25519_BYTES)
    - item_type: preproc_def
      name: DNSCRYPT_PUBLIC_KEY_SIZE
      pos:
        line_end: 63
        line_start: 62
        source_file: /src/pdns/pdns/dnsdistdist/dnscrypt.hh
      type_or_value: (crypto_box_curve25519xsalsa20poly1305_PUBLICKEYBYTES)
    - item_type: preproc_def
      name: DNSCRYPT_PRIVATE_KEY_SIZE
      pos:
        line_end: 64
        line_start: 63
        source_file: /src/pdns/pdns/dnsdistdist/dnscrypt.hh
      type_or_value: (crypto_box_curve25519xsalsa20poly1305_SECRETKEYBYTES)
    - item_type: preproc_def
      name: DNSCRYPT_NONCE_SIZE
      pos:
        line_end: 65
        line_start: 64
        source_file: /src/pdns/pdns/dnsdistdist/dnscrypt.hh
      type_or_value: (crypto_box_curve25519xsalsa20poly1305_NONCEBYTES)
    - item_type: preproc_def
      name: DNSCRYPT_BEFORENM_SIZE
      pos:
        line_end: 66
        line_start: 65
        source_file: /src/pdns/pdns/dnsdistdist/dnscrypt.hh
      type_or_value: (crypto_box_curve25519xsalsa20poly1305_BEFORENMBYTES)
    - item_type: preproc_def
      name: DNSCRYPT_MAC_SIZE
      pos:
        line_end: 67
        line_start: 66
        source_file: /src/pdns/pdns/dnsdistdist/dnscrypt.hh
      type_or_value: (crypto_box_curve25519xsalsa20poly1305_MACBYTES)
    - item_type: preproc_def
      name: DNSCRYPT_CERT_MAGIC_SIZE
      pos:
        line_end: 77
        line_start: 76
        source_file: /src/pdns/pdns/dnsdistdist/dnscrypt.hh
      type_or_value: (4)
    - item_type: preproc_def
      name: DNSCRYPT_CERT_MAGIC_VALUE
      pos:
        line_end: 79
        line_start: 77
        source_file: /src/pdns/pdns/dnsdistdist/dnscrypt.hh
      type_or_value: '{0x44, 0x4e, 0x53, 0x43}'
    - item_type: preproc_def
      name: DNSCRYPT_CERT_PROTOCOL_MINOR_VERSION_VALUE
      pos:
        line_end: 81
        line_start: 79
        source_file: /src/pdns/pdns/dnsdistdist/dnscrypt.hh
      type_or_value: '{0x00, 0x00}'
    - item_type: preproc_def
      name: DNSCRYPT_CLIENT_MAGIC_SIZE
      pos:
        line_end: 82
        line_start: 81
        source_file: /src/pdns/pdns/dnsdistdist/dnscrypt.hh
      type_or_value: (8)
    - item_type: preproc_def
      name: DNSCRYPT_RESOLVER_MAGIC
      pos:
        line_end: 84
        line_start: 82
        source_file: /src/pdns/pdns/dnsdistdist/dnscrypt.hh
      type_or_value: '{0x72, 0x36, 0x66, 0x6e, 0x76, 0x57, 0x6a, 0x38}'
    - item_type: preproc_def
      name: DNSCRYPT_RESOLVER_MAGIC_SIZE
      pos:
        line_end: 85
        line_start: 84
        source_file: /src/pdns/pdns/dnsdistdist/dnscrypt.hh
      type_or_value: (8)
    - item_type: preproc_def
      name: DNSCRYPT_PADDED_BLOCK_SIZE
      pos:
        line_end: 86
        line_start: 85
        source_file: /src/pdns/pdns/dnsdistdist/dnscrypt.hh
      type_or_value: (64)
    - item_type: preproc_def
      name: DNSCRYPT_MAX_TCP_PADDING_SIZE
      pos:
        line_end: 87
        line_start: 86
        source_file: /src/pdns/pdns/dnsdistdist/dnscrypt.hh
      type_or_value: (256)
    - item_type: preproc_def
      name: DNSCRYPT_MAX_RESPONSE_PADDING_SIZE
      pos:
        line_end: 88
        line_start: 87
        source_file: /src/pdns/pdns/dnsdistdist/dnscrypt.hh
      type_or_value: (256)
    - item_type: preproc_def
      name: DNSCRYPT_MAX_RESPONSE_PADDING_AND_MAC_SIZE
      pos:
        line_end: 89
        line_start: 88
        source_file: /src/pdns/pdns/dnsdistdist/dnscrypt.hh
      type_or_value: (DNSCRYPT_MAX_RESPONSE_PADDING_SIZE + DNSCRYPT_MAC_SIZE)
    - item_type: preproc_def
      name: DNSCRYPT_CERTIFICATE_RESPONSE_TTL
      pos:
        line_end: 92
        line_start: 91
        source_file: /src/pdns/pdns/dnsdistdist/dnscrypt.hh
      type_or_value: (3600)
    - item_type: preproc_def
      name: DNSCRYPT_CERT_ES_VERSION1_VALUE
      pos:
        line_end: 97
        line_start: 95
        source_file: /src/pdns/pdns/dnsdistdist/dnscrypt.hh
      type_or_value: '{0x00, 0x01}'
    - item_type: preproc_def
      name: DNSCRYPT_CERT_ES_VERSION2_VALUE
      pos:
        line_end: 99
        line_start: 97
        source_file: /src/pdns/pdns/dnsdistdist/dnscrypt.hh
      type_or_value: '{0x00, 0x02}'
    structs:
    - fields:
      - name: resolverPK
        type: ResolverPublicKeyType
      - name: clientMagic
        type: ClientMagicType
      - name: serial
        type: uint32_t
      - name: tsStart
        type: uint32_t
      - name: tsEnd
        type: uint32_t
      item_type: struct
      name: DNSCryptCertSignedData
      pos:
        line_end: 112
        line_start: 102
        source_file: /src/pdns/pdns/dnsdistdist/dnscrypt.hh
    - fields:
      - name: clientMagic
        type: DNSCryptClientMagicType
      - name: clientPK
        type: DNSCryptPublicKeyType
      - name: clientNonce
        type: DNSCryptClientNonceType
      item_type: struct
      name: DNSCryptQueryHeader
      pos:
        line_end: 160
        line_start: 155
        source_file: /src/pdns/pdns/dnsdistdist/dnscrypt.hh
    - fields:
      - name: resolverMagic[DNSCRYPT_RESOLVER_MAGIC_SIZE]
        type: unsigned char
      - name: nonce
        type: DNSCryptNonceType
      item_type: struct
      name: DNSCryptResponseHeader
      pos:
        line_end: 170
        line_start: 165
        source_file: /src/pdns/pdns/dnsdistdist/dnscrypt.hh
    - fields:
      - name: publicKey
        type: PublicKeyType
      - name: cert
        type: DNSCryptCert
      - name: privateKey
        type: DNSCryptPrivateKey
      - name: active
        type: bool
      item_type: struct
      name: DNSCryptCertificatePair
      pos:
        line_end: 200
        line_start: 193
        source_file: /src/pdns/pdns/dnsdistdist/dnscrypt.hh
    - fields:
      - name: cert
        type: std::string
      - name: key
        type: std::string
      item_type: struct
      name: CertKeyPaths
      pos:
        line_end: 300
        line_start: 296
        source_file: /src/pdns/pdns/dnsdistdist/dnscrypt.hh
    typedefs: []
    union: []
- function_names:
  - Logr::Loggable
  - Logr::Loggable
  - Logr::Loggable
  - '& operator=(const Loggable&)'
  - '& operator=(Loggable&&)'
  - ~Loggable()
  - Logr::Logger::Logger
  - Logr::Logger::Logger
  - Logr::Logger::Logger
  - '& operator=(const Logger&)'
  - '& operator=(Logger&&)'
  - ~Logger()
  - Logr::Logger::toString
  - Logr::Logger::info
  - Logr::Logger::error
  - Logr::Logger::error
  - Logr::Logger::withValues
  - Logr::Logger::mapArguments
  - Logr::Logger::mapArguments
  - Logr::Loggable
  - Logr::Loggable
  - Logr::Loggable
  - '& operator=(const Loggable&)'
  - '& operator=(Loggable&&)'
  - ~Loggable()
  - Logr::Logger::Logger
  - Logr::Logger::Logger
  - Logr::Logger::Logger
  - '& operator=(const Logger&)'
  - '& operator=(Logger&&)'
  - ~Logger()
  - Logr::Logger::toString
  - Logr::Logger::info
  - Logr::Logger::error
  - Logr::Logger::error
  - Logr::Logger::withValues
  - Logr::Logger::mapArguments
  - Logr::Logger::mapArguments
  source_file: /src/pdns/pdns/dnsdistdist/logr.hh
  types:
    enum:
    - enumerators:
      - name: Alert
        value: '1'
      - name: Warning
        value: '4'
      - name: Notice
        value: '5'
      - name: Error
        value: '3'
      - name: Critical
        value: '2'
      - name: Info
        value: '6'
      - name: Debug
        value: '7'
      item_type: enum
      name: Priority
      pos:
        line_end: 63
        line_start: 54
        source_file: /src/pdns/pdns/dnsdistdist/logr.hh
    - enumerators:
      - name: Alert
        value: '1'
      - name: Warning
        value: '4'
      - name: Notice
        value: '5'
      - name: Error
        value: '3'
      - name: Critical
        value: '2'
      - name: Info
        value: '6'
      - name: Debug
        value: '7'
      item_type: enum
      name: Priority
      pos:
        line_end: 63
        line_start: 54
        source_file: /src/pdns/pdns/dnsdistdist/logr.hh
    preproc_defs: []
    structs:
    - fields:
      - name: to_string() const
        type: std::string
      item_type: struct
      name: Loggable
      pos:
        line_end: 43
        line_start: 34
        source_file: /src/pdns/pdns/dnsdistdist/logr.hh
    - fields:
      - name: to_string() const
        type: std::string
      item_type: struct
      name: Loggable
      pos:
        line_end: 43
        line_start: 34
        source_file: /src/pdns/pdns/dnsdistdist/logr.hh
    typedefs: []
    union: []
- function_names: []
  source_file: /src/pdns/pdns/dnsdistdist/dnsdist-session-cache.hh
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: d_sessions
        type: std::deque<std::unique_ptr<TLSSession>>
      - name: d_lastUsed
        type: time_t
      item_type: struct
      name: BackendEntry
      pos:
        line_end: 43
        line_start: 39
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-session-cache.hh
    - fields:
      - name: d_sessions
        type: std::map<boost::uuids::uuid, BackendEntry>
      - name: d_nextCleanup
        type: time_t
      item_type: struct
      name: CacheData
      pos:
        line_end: 50
        line_start: 45
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-session-cache.hh
    typedefs: []
    union: []
- function_names:
  - StopWatch
  - start
  - set
  - udiff
  - udiffAndSet
  - getStartTime
  - getCurrentTime
  - '& getTracer()'
  - InternalQueryState
  - InternalQueryState
  - '& operator=(InternalQueryState&& rhs)'
  - InternalQueryState
  - '& operator=(const InternalQueryState& orig)'
  - isXSK
  - rulesAppliedToQuerySetter
  - ~rulesAppliedToQuerySetter()
  - IDState
  - IDState
  - IDState
  - '& operator=(IDState&& rhs) noexcept'
  - isInUse
  - StateGuard::StateGuard
  - ~StateGuard()
  - StateGuard::StateGuard
  - StateGuard::StateGuard
  - '& operator=(const StateGuard&)'
  - '& operator=(StateGuard&&)'
  - acquire
  - release
  source_file: /src/pdns/pdns/dnsdistdist/dnsdist-idstate.hh
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: d_start
        type: struct timespec
      - name: d_needRealTime
        type: bool
      item_type: struct
      name: StopWatch
      pos:
        line_end: 111
        line_start: 61
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-idstate.hh
    - fields:
      - name: getCloser([[maybe_unused]] const std::string_view& name, [[maybe_unused]]
          const SpanID& parentSpanID)
        type: std::optional<pdns::trace::dnsdist::Tracer::Closer>
      - name: getCloser([[maybe_unused]] const std::string_view& name, [[maybe_unused]]
          const std::string_view& parentSpanName)
        type: std::optional<pdns::trace::dnsdist::Tracer::Closer>
      - name: getCloser([[maybe_unused]] const std::string_view& name)
        type: std::optional<pdns::trace::dnsdist::Tracer::Closer>
      - name: getRulesCloser([[maybe_unused]] const std::string_view& ruleName, [[maybe_unused]]
          const std::string& ruleType)
        type: std::optional<pdns::trace::dnsdist::Tracer::Closer>
      - name: partialCloneForXFR() const
        type: InternalQueryState
      - name: getLogger(std::shared_ptr<const Logr::Logger> parent = nullptr) const
        type: std::shared_ptr<const Logr::Logger>
      - name: subnet
        type: std::optional<Netmask>
      - name: poolName
        type: std::string
      - name: origRemote
        type: ComboAddress
      - name: origDest
        type: ComboAddress
      - name: hopRemote
        type: ComboAddress
      - name: hopLocal
        type: ComboAddress
      - name: qname
        type: DNSName
      - name: queryRealTime
        type: StopWatch
      - name: d_OTTracer
        type: std::shared_ptr<pdns::trace::dnsdist::Tracer>
      - name: packetCache
        type: std::shared_ptr<DNSDistPacketCache>
      - name: dnsCryptQuery
        type: std::unique_ptr<DNSCryptQuery>
      - name: qTag
        type: std::unique_ptr<QTag>
      - name: d_packet
        type: std::unique_ptr<PacketBuffer>
      - name: d_protoBufData
        type: std::unique_ptr<ProtoBufData>
      - name: d_extendedErrors
        type: std::unique_ptr<std::vector<dnsdist::edns::SetExtendedDNSErrorOperation>>
      - name: tempFailureTTL
        type: std::optional<uint32_t>
      - name: '* cs'
        type: ClientState
      - name: du
        type: std::unique_ptr<DOHUnitInterface>
      - name: d_proxyProtocolPayloadSize
        type: size_t
      - name: doqu
        type: std::unique_ptr<DOQUnit>
      - name: doh3u
        type: std::unique_ptr<DOH3Unit>
      - name: d_streamID
        type: int32_t
      - name: cacheKey
        type: uint32_t
      - name: cacheKeyNoECS
        type: uint32_t
      - name: cacheKeyTCP
        type: uint32_t
      - name: ttlCap
        type: uint32_t
      - name: backendFD
        type: int
      - name: delayMsec
        type: int
      - name: qtype
        type: uint16_t
      - name: qclass
        type: uint16_t
      - name: origID
        type: uint16_t
      - name: origFlags
        type: uint16_t
      - name: cacheFlags
        type: uint16_t
      - name: udpPayloadSize
        type: uint16_t
      - name: sendTraceParentToDownstreamID
        type: uint16_t
      - name: dnssecOK
        type: std::optional<bool>
      - name: protocol
        type: dnsdist::Protocol
      - name: restartCount
        type: uint8_t
      - name: ednsAdded
        type: bool
      - name: ecsAdded
        type: bool
      - name: skipCache
        type: bool
      - name: useZeroScope
        type: bool
      - name: forwardedOverUDP
        type: bool
      - name: selfGenerated
        type: bool
      - name: cacheHit
        type: bool
      - name: staleCacheHit
        type: bool
      - name: tracingEnabled
        type: bool
      - name: rulesAppliedToQuery
        type: bool
      item_type: struct
      name: InternalQueryState
      pos:
        line_end: 266
        line_start: 115
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-idstate.hh
    - fields:
      - name: uniqueId
        type: std::optional<boost::uuids::uuid>
      - name: d_deviceName
        type: std::string
      - name: d_deviceID
        type: std::string
      - name: d_requestorID
        type: std::string
      item_type: struct
      name: ProtoBufData
      pos:
        line_end: 123
        line_start: 117
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-idstate.hh
    - fields:
      - name: '& d_rulesAppliedToQuery'
        type: bool
      item_type: struct
      name: rulesAppliedToQuerySetter
      pos:
        line_end: 265
        line_start: 251
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-idstate.hh
    - fields:
      - name: internal
        type: InternalQueryState
      - name: age
        type: std::atomic<uint16_t>
      - name: inUse
        type: std::atomic<bool>
      - name: locked
        type: std::atomic<bool>
      item_type: struct
      name: IDState
      pos:
        line_end: 361
        line_start: 268
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-idstate.hh
    typedefs: []
    union: []
- function_names:
  - running_in_service_mgr
  source_file: /src/pdns/pdns/dnsdistdist/dnsdist-systemd.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - dnsdist_ffi_stat_node_get_queries_count
  - dnsdist_ffi_stat_node_get_noerrors_count
  - dnsdist_ffi_stat_node_get_nxdomains_count
  - dnsdist_ffi_stat_node_get_servfails_count
  - dnsdist_ffi_stat_node_get_drops_count
  - dnsdist_ffi_stat_node_get_bytes
  - dnsdist_ffi_stat_node_get_hits
  - dnsdist_ffi_stat_node_get_labels_count
  - dnsdist_ffi_stat_node_get_full_name_raw
  - dnsdist_ffi_stat_node_get_children_count
  - dnsdist_ffi_stat_node_get_children_queries_count
  - dnsdist_ffi_stat_node_get_children_noerrors_count
  - dnsdist_ffi_stat_node_get_children_nxdomains_count
  - dnsdist_ffi_stat_node_get_children_servfails_count
  - dnsdist_ffi_stat_node_get_children_drops_count
  - dnsdist_ffi_stat_node_get_children_bytes_count
  - dnsdist_ffi_stat_node_get_children_hits
  - dnsdist_ffi_state_node_set_reason
  - dnsdist_ffi_state_node_set_action
  source_file: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection-ffi.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/pdns/pdns/dnsdistdist/dnsdist-udp.hh
  types:
    enum:
    - enumerators:
      - name: Frontend
      - name: Backend
      item_type: enum
      name: Context
      pos:
        line_end: 33
        line_start: 29
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-udp.hh
    - enumerators:
      - name: Frontend
      - name: Backend
      item_type: enum
      name: Context
      pos:
        line_end: 33
        line_start: 29
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-udp.hh
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/pdns/pdns/dnsdistdist/dnsdist-rust-bridge.hh
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: d_rule
        type: std::shared_ptr<DNSRule>
      - name: d_name
        type: std::string
      item_type: struct
      name: DNSSelector
      pos:
        line_end: 18
        line_start: 14
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-rust-bridge.hh
    - fields:
      - name: d_action
        type: std::shared_ptr<DNSAction>
      - name: d_name
        type: std::string
      item_type: struct
      name: DNSActionWrapper
      pos:
        line_end: 24
        line_start: 20
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-rust-bridge.hh
    - fields:
      - name: d_action
        type: std::shared_ptr<DNSResponseAction>
      - name: d_name
        type: std::string
      item_type: struct
      name: DNSResponseActionWrapper
      pos:
        line_end: 30
        line_start: 26
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-rust-bridge.hh
    - fields:
      - name: d_rule
        type: std::shared_ptr<DNSRule>
      - name: d_name
        type: std::string
      item_type: struct
      name: DNSSelector
      pos:
        line_end: 18
        line_start: 14
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-rust-bridge.hh
    - fields:
      - name: d_action
        type: std::shared_ptr<DNSAction>
      - name: d_name
        type: std::string
      item_type: struct
      name: DNSActionWrapper
      pos:
        line_end: 24
        line_start: 20
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-rust-bridge.hh
    - fields:
      - name: d_action
        type: std::shared_ptr<DNSResponseAction>
      - name: d_name
        type: std::string
      item_type: struct
      name: DNSResponseActionWrapper
      pos:
        line_end: 30
        line_start: 26
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-rust-bridge.hh
    typedefs: []
    union: []
- function_names:
  - ~MockupTLSCtx()
  - MockupTLSCtx::getConnection
  - MockupTLSCtx::getClientConnection
  - MockupTLSCtx::rotateTicketsKey
  - MockupTLSCtx::getTicketsKeysCount
  - MockupTLSCtx::getName
  - MockupFDMultiplexer::MockupFDMultiplexer
  - ~MockupFDMultiplexer()
  - MockupFDMultiplexer::run
  - MockupFDMultiplexer::getAvailableFDs
  - MockupFDMultiplexer::addFD
  - MockupFDMultiplexer::removeFD
  - MockupFDMultiplexer::getName
  - MockupFDMultiplexer::setReady
  - MockupFDMultiplexer::setNotReady
  - isIPv6Supported
  - getBackendAddress
  source_file: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_common.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - AsynchronousHolder::Data::Data(bool failOpen)
  - dnsdist::AsynchronousHolder::AsynchronousHolder
  - AsynchronousHolder::~AsynchronousHolder()
  - dnsdist::AsynchronousHolder::notify
  - dnsdist::AsynchronousHolder::wait
  - dnsdist::AsynchronousHolder::stop
  - dnsdist::AsynchronousHolder::mainThread
  - dnsdist::AsynchronousHolder::push
  - dnsdist::AsynchronousHolder::get
  - dnsdist::AsynchronousHolder::pickupExpired
  - dnsdist::AsynchronousHolder::getNextTTD
  - dnsdist::AsynchronousHolder::empty
  - dnsdist::resumeResponse
  - dnsdist::queueQueryResumptionEvent
  - dnsdist::handleQueuedAsynchronousEvents
  - dnsdist::resumeQuery
  - dnsdist::suspendQuery
  - dnsdist::suspendResponse
  - AsynchronousHolder::Data::Data(bool failOpen)
  - dnsdist::AsynchronousHolder::AsynchronousHolder
  - AsynchronousHolder::~AsynchronousHolder()
  - dnsdist::AsynchronousHolder::notify
  - dnsdist::AsynchronousHolder::wait
  - dnsdist::AsynchronousHolder::stop
  - dnsdist::AsynchronousHolder::mainThread
  - dnsdist::AsynchronousHolder::push
  - dnsdist::AsynchronousHolder::get
  - dnsdist::AsynchronousHolder::pickupExpired
  - dnsdist::AsynchronousHolder::getNextTTD
  - dnsdist::AsynchronousHolder::empty
  - dnsdist::resumeResponse
  - dnsdist::queueQueryResumptionEvent
  - dnsdist::handleQueuedAsynchronousEvents
  - dnsdist::resumeQuery
  - dnsdist::suspendQuery
  - dnsdist::suspendResponse
  source_file: /src/pdns/pdns/dnsdistdist/dnsdist-async.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - dnsdist::AsynchronousHolder::Data
  - dnsdist::AsynchronousHolder::Data
  - '& operator=(const Data&)'
  - '& operator=(Data&&)'
  - ~Data()
  - dnsdist::AsynchronousHolder::Data
  - dnsdist::AsynchronousHolder::Data
  - '& operator=(const Data&)'
  - '& operator=(Data&&)'
  - ~Data()
  source_file: /src/pdns/pdns/dnsdistdist/dnsdist-async.hh
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields: []
      item_type: struct
      name: TTDTag
      pos:
        line_end: 47
        line_start: 45
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-async.hh
    - fields: []
      item_type: struct
      name: IDTag
      pos:
        line_end: 50
        line_start: 48
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-async.hh
    - fields:
      - name: d_query
        type: std::unique_ptr<CrossProtocolQuery>
      - name: d_ttd
        type: struct timeval
      - name: d_asyncID
        type: uint16_t
      - name: d_queryID
        type: uint16_t
      item_type: struct
      name: Entry
      pos:
        line_end: 59
        line_start: 52
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-async.hh
    - fields:
      - name: d_content
        type: LockGuarded<content_t>
      - name: d_notifier
        type: pdns::channel::Notifier
      - name: d_waiter
        type: pdns::channel::Waiter
      - name: d_failOpen
        type: bool
      - name: d_done
        type: bool
      item_type: struct
      name: Data
      pos:
        line_end: 89
        line_start: 75
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-async.hh
    - fields: []
      item_type: struct
      name: TTDTag
      pos:
        line_end: 47
        line_start: 45
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-async.hh
    - fields: []
      item_type: struct
      name: IDTag
      pos:
        line_end: 50
        line_start: 48
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-async.hh
    - fields:
      - name: d_query
        type: std::unique_ptr<CrossProtocolQuery>
      - name: d_ttd
        type: struct timeval
      - name: d_asyncID
        type: uint16_t
      - name: d_queryID
        type: uint16_t
      item_type: struct
      name: Entry
      pos:
        line_end: 59
        line_start: 52
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-async.hh
    - fields:
      - name: d_content
        type: LockGuarded<content_t>
      - name: d_notifier
        type: pdns::channel::Notifier
      - name: d_waiter
        type: pdns::channel::Waiter
      - name: d_failOpen
        type: bool
      - name: d_done
        type: bool
      item_type: struct
      name: Data
      pos:
        line_end: 89
        line_start: 75
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-async.hh
    typedefs: []
    union: []
- function_names:
  - CDB::CDB
  - CDB::~CDB()
  - CDB::searchKey
  - CDB::searchSuffix
  - CDB::searchAll
  - CDB::moveToNext
  - CDB::readNext
  - CDB::findall
  - CDB::keyExists
  - CDB::findOne
  - CDBWriter::CDBWriter
  - CDBWriter::~CDBWriter()
  - CDBWriter::close
  - CDBWriter::addEntry
  source_file: /src/pdns/pdns/dnsdistdist/cdb.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - pruneCollection
  - moveCacheItemToFrontOrBack
  - moveCacheItemToFront
  - moveCacheItemToBack
  - pruneLockedCollectionsVector
  - pruneMutexCollectionsVector
  - purgeLockedCollectionsVector
  - purgeLockedCollectionsVector
  - purgeExactLockedCollection
  - lruReplacingInsert
  source_file: /src/pdns/pdns/dnsdistdist/cachecleaner.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/pdns/pdns/dnsdistdist/bench-dnsdist-opentelemetry_cc.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - IncomingTCPConnectionState::~IncomingTCPConnectionState()
  - IncomingTCPConnectionState::getProtocol
  - IncomingTCPConnectionState::clearAllDownstreamConnections
  - getOwnedDownstreamConnection
  - IncomingTCPConnectionState::isNearTCPLimits
  - IncomingTCPConnectionState::getDownstreamConnection
  - TCPClientCollection::TCPClientCollection
  - TCPClientCollection::addTCPClientThread
  - sendQueuedResponses
  - IncomingTCPConnectionState::handleResponseSent
  - prependSizeToTCPQuery
  - IncomingTCPConnectionState::canAcceptNewQueries
  - IncomingTCPConnectionState::resetForNewQuery
  - IncomingTCPConnectionState::getClientReadTTD
  - IncomingTCPConnectionState::getClientWriteTTD
  - IncomingTCPConnectionState::maxConnectionDurationReached
  - IncomingTCPConnectionState::registerOwnedDownstreamConnection
  - IncomingTCPConnectionState::clearOwnedDownstreamConnections
  - IncomingTCPConnectionState::sendResponse
  - IncomingTCPConnectionState::terminateClientConnection
  - IncomingTCPConnectionState::queueResponse
  - IncomingTCPConnectionState::handleAsyncReady
  - IncomingTCPConnectionState::updateIOForAsync
  - IncomingTCPConnectionState::updateIO
  - IncomingTCPConnectionState::handleResponse
  - TCPCrossProtocolResponse
  - TCPCrossProtocolResponse
  - '& operator=(const TCPCrossProtocolResponse&)'
  - TCPCrossProtocolResponse
  - '& operator=(TCPCrossProtocolResponse&&)'
  - ~TCPCrossProtocolResponse()
  - TCPCrossProtocolQuery::TCPCrossProtocolQuery
  - TCPCrossProtocolQuery::TCPCrossProtocolQuery
  - '& operator=(const TCPCrossProtocolQuery&)'
  - TCPCrossProtocolQuery::TCPCrossProtocolQuery
  - '& operator=(TCPCrossProtocolQuery&&)'
  - ~TCPCrossProtocolQuery() override
  - TCPCrossProtocolQuery::getTCPQuerySender
  - TCPCrossProtocolQuery::getDQ
  - TCPCrossProtocolQuery::getDR
  - IncomingTCPConnectionState::getCrossProtocolQuery
  - getTCPCrossProtocolQueryFromDQ
  - IncomingTCPConnectionState::handleCrossProtocolResponse
  - IncomingTCPConnectionState::handleQuery
  - IncomingTCPConnectionState::handleIOCallback
  - IncomingTCPConnectionState::handleHandshakeDone
  - IncomingTCPConnectionState::handleProxyProtocolPayload
  - IncomingTCPConnectionState::handleHandshake
  - IncomingTCPConnectionState::handleIncomingQueryReceived
  - IncomingTCPConnectionState::handleExceptionDuringIO
  - IncomingTCPConnectionState::readIncomingQuery
  - IncomingTCPConnectionState::handleIO
  - IncomingTCPConnectionState::notifyIOError
  - processXFRResponse
  - IncomingTCPConnectionState::handleXFRResponse
  - IncomingTCPConnectionState::handleTimeout
  - IncomingTCPConnectionState::getLogger
  - handleIncomingTCPQuery
  - handleCrossProtocolQuery
  - handleCrossProtocolResponse
  - scanForTimeouts
  - dumpTCPStates
  - tcpClientThread
  - acceptNewConnection
  - tcpAcceptorThread
  source_file: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: d_response
        type: TCPResponse
      - name: d_state
        type: std::shared_ptr<IncomingTCPConnectionState>
      - name: d_now
        type: struct timeval
      item_type: struct
      name: TCPCrossProtocolResponse
      pos:
        line_end: 701
        line_start: 686
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc
    - fields:
      - name: '& clientState'
        type: ClientState
      - name: local
        type: ComboAddress
      - name: socket
        type: int
      item_type: struct
      name: TCPAcceptorParam
      pos:
        line_end: 1593
        line_start: 1587
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-tcp.cc
    typedefs: []
    union: []
- function_names: []
  source_file: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection-ffi.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs:
    - item_type: typedef
      name: dnsdist_ffi_stat_node_t
      pos:
        line_end: 22
        line_start: 22
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-lua-inspection-ffi.h
      type: dnsdist_ffi_stat_node_t
    union: []
- function_names:
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  source_file: /src/pdns/pdns/dnsdistdist/test-dnsdist-xsk.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/pdns/pdns/dnsdistdist/bench-dnsdist-dnsparser_cc.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - getQuery
  - getResponse
  - BENCHMARK
  - BENCHMARK
  source_file: /src/pdns/pdns/dnsdistdist/bench-dnsdist-cache.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - rewriteResponseWithoutEDNS
  - addOrReplaceEDNSOption
  - slowRewriteEDNSOptionInQueryWithRecords
  - locateEDNSOptRR
  - dnsdist::getEDNSOptionsStart
  - dnsdist::getEDNSOptionsStart
  - generateECSOption
  - generateOptRR
  - replaceEDNSClientSubnetOption
  - parseEDNSOptions
  - addECSToExistingOPT
  - addEDNSWithECS
  - handleEDNSClientSubnet
  - handleEDNSClientSubnet
  - removeEDNSOptionFromOptions
  - removeEDNSOptionFromOPT
  - isEDNSOptionInOpt
  - rewriteResponseWithoutEDNSOption
  - addEDNS
  - setNegativeAndAdditionalSOA
  - addEDNSToQueryTurnedResponse
  - dnsdist::getEDNSRecordPosition
  - dnsdist::getEDNSZ
  - dnsdist::getEDNSVersion
  - dnsdist::getEDNSExtendedRCode
  - dnsdist::getEDNSRecordPosition
  - dnsdist::getEDNSZ
  - dnsdist::getEDNSVersion
  - dnsdist::getEDNSExtendedRCode
  - queryHasEDNS
  - getEDNS0Record
  - setEDNSOption
  - setEDNSOption
  - dnsdist::setInternalQueryRCode
  - dnsdist::setInternalQueryRCode
  source_file: /src/pdns/pdns/dnsdistdist/dnsdist-ecs.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - dnsdist::MacAddressesCache::get
  - dnsdist::MacAddressesCache::get
  source_file: /src/pdns/pdns/dnsdistdist/dnsdist-mac-address.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - push
  - dnsdist_ffi_stat_node_t
  - DynBlock
  - DynBlock
  - DynBlock
  - DynBlock
  - '& operator=(const DynBlock& rhs)'
  - '& operator=(DynBlock&& rhs)'
  - DynBlockRulesGroup::DynBlockRule
  - DynBlockRulesGroup::DynBlockRule
  - DynBlockRulesGroup::isEnabled
  - DynBlockRulesGroup::DynBlockRatioRule
  - DynBlockRulesGroup::DynBlockRatioRule
  - DynBlockRulesGroup::DynBlockAllowedRCodesRatioRule
  - DynBlockRulesGroup::DynBlockAllowedRCodesRatioRule
  - DynBlockRulesGroup::DynBlockCacheMissRatioRule
  - DynBlockRulesGroup::DynBlockCacheMissRatioRule
  - DynBlockRulesGroup::DynBlockRulesGroup
  - DynBlockRulesGroup::setQueryRate
  - DynBlockRulesGroup::setResponseByteRate
  - DynBlockRulesGroup::setRCodeRate
  - DynBlockRulesGroup::setRCodeRatio
  - DynBlockRulesGroup::setAllowedRCodesRatio
  - DynBlockRulesGroup::setQTypeRate
  - DynBlockRulesGroup::setCacheMissRatio
  - DynBlockRulesGroup::setSuffixMatchRule
  - DynBlockRulesGroup::setSuffixMatchRuleFFI
  - DynBlockRulesGroup::setNewBlockHook
  - DynBlockRulesGroup::setMasks
  - DynBlockRulesGroup::apply
  - DynBlockRulesGroup::excludeRange
  - DynBlockRulesGroup::excludeRange
  - DynBlockRulesGroup::includeRange
  - DynBlockRulesGroup::includeRange
  - DynBlockRulesGroup::removeRange
  - DynBlockRulesGroup::removeRange
  - DynBlockRulesGroup::excludeDomain
  - DynBlockRulesGroup::toString
  - DynBlockRulesGroup::setQuiet
  - DynBlockRulesGroup::addBlock
  - DynBlockRulesGroup::handleWarning
  - DynBlockRulesGroup::hasQueryRules
  - DynBlockRulesGroup::hasResponseRules
  - DynBlockRulesGroup::hasSuffixMatchRules
  - DynBlockRulesGroup::hasRules
  source_file: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.hh
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: minSize
        type: int
      - name: maxSize
        type: int
      item_type: struct
      name: LuaContext::Pusher<dnsdist_ffi_stat_node_t*>
      pos:
        line_end: 50
        line_start: 40
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.hh
    - fields:
      - name: d_reason
        type: std::optional<std::string>
      - name: d_action
        type: std::optional<DNSAction::Action>
      item_type: struct
      name: SMTBlockParameters
      pos:
        line_end: 58
        line_start: 54
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.hh
    - fields:
      - name: fullname
        type: std::string
      - name: '& node'
        type: StatNode
      - name: '& self'
        type: StatNode::Stat
      - name: '& children'
        type: StatNode::Stat
      - name: '& d_blockParameters'
        type: SMTBlockParameters
      item_type: struct
      name: dnsdist_ffi_stat_node_t
      pos:
        line_end: 72
        line_start: 60
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.hh
    - fields:
      - name: reason
        type: string
      - name: domain
        type: DNSName
      - name: until
        type: timespec
      - name: tagSettings
        type: std::shared_ptr<TagSettings>
      - name: blocks
        type: std::atomic<uint32_t>
      - name: action
        type: DNSAction::Action
      - name: warning
        type: bool
      - name: bpf
        type: bool
      item_type: struct
      name: DynBlock
      pos:
        line_end: 139
        line_start: 74
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.hh
    - fields:
      - name: d_name
        type: std::string
      - name: d_value
        type: std::string
      item_type: struct
      name: TagSettings
      pos:
        line_end: 129
        line_start: 125
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.hh
    - fields:
      - name: matches(const struct timespec& when)
        type: bool
      - name: rateExceeded(uint32_t count, const struct timespec& now) const
        type: bool
      - name: warningRateExceeded(uint32_t count, const struct timespec& now) const
        type: bool
      - name: toString() const
        type: std::string
      - name: d_blockReason
        type: std::string
      - name: d_tagSettings
        type: std::shared_ptr<DynBlock::TagSettings>
      - name: d_cutOff
        type: struct timespec
      - name: d_minTime
        type: struct timespec
      - name: d_blockDuration
        type: uint32_t
      - name: d_rate
        type: uint32_t
      - name: d_warningRate
        type: uint32_t
      - name: d_seconds
        type: uint32_t
      - name: d_action
        type: DNSAction::Action
      - name: d_enabled
        type: bool
      item_type: struct
      name: DynBlockRule
      pos:
        line_end: 177
        line_start: 148
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.hh
    - fields:
      - name: ratioExceeded(uint32_t total, uint32_t count) const
        type: bool
      - name: warningRatioExceeded(uint32_t total, uint32_t count) const
        type: bool
      - name: toString() const
        type: std::string
      - name: d_minimumNumberOfResponses
        type: size_t
      - name: d_ratio
        type: double
      - name: d_warningRatio
        type: double
      item_type: struct
      name: DynBlockRatioRule
      pos:
        line_end: 194
        line_start: 179
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.hh
    - fields:
      - name: isRCodeAllowed(uint8_t rcode) const
        type: bool
      - name: toString() const
        type: std::string
      - name: d_allowedRCodes
        type: std::unordered_set<uint8_t>
      item_type: struct
      name: DynBlockAllowedRCodesRatioRule
      pos:
        line_end: 207
        line_start: 196
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.hh
    - fields:
      - name: checkGlobalCacheHitRatio() const
        type: bool
      - name: ratioExceeded(uint32_t total, uint32_t count) const
        type: bool
      - name: warningRatioExceeded(uint32_t total, uint32_t count) const
        type: bool
      - name: toString() const
        type: std::string
      - name: d_minimumGlobalCacheHitRatio
        type: double
      item_type: struct
      name: DynBlockCacheMissRatioRule
      pos:
        line_end: 223
        line_start: 209
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.hh
    - fields:
      - name: d_rcodeCounts
        type: std::map<uint8_t, uint64_t>
      - name: d_qtypeCounts
        type: std::map<uint16_t, uint64_t>
      - name: queries
        type: uint64_t
      - name: responses
        type: uint64_t
      - name: respBytes
        type: uint64_t
      - name: cacheMisses
        type: uint64_t
      - name: notAllowedRCodes
        type: uint64_t
      item_type: struct
      name: Counts
      pos:
        line_end: 235
        line_start: 226
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.hh
    - fields:
      - name: nmgData
        type: std::map<std::string, std::list<std::pair<AddressAndPortRange, uint32_t>>>
      - name: smtData
        type: std::map<std::string, std::list<std::pair<DNSName, uint32_t>>>
      item_type: struct
      name: MetricsSnapshot
      pos:
        line_end: 462
        line_start: 458
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.hh
    - fields:
      - name: topNMGsByReason
        type: std::map<std::string, std::list<std::pair<AddressAndPortRange, uint32_t>>>
      - name: topSMTsByReason
        type: std::map<std::string, std::list<std::pair<DNSName, uint32_t>>>
      item_type: struct
      name: Tops
      pos:
        line_end: 468
        line_start: 464
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-dynblocks.hh
    typedefs: []
    union: []
- function_names:
  - dns_isspace
  - dns_toupper
  - dns_tolower
  - DNSName::DNSName
  - '& operator=(const DNSName& rhs)'
  - '& operator=(DNSName&& rhs) noexcept'
  - DNSName::DNSName
  - DNSName::DNSName
  - operator!=(const DNSName& other) const
  - DNSName::toStringNoDot
  - DNSName::toStringRootDot
  - DNSName::makeLowerCase
  - DNSName::makeUsLowerCase
  - DNSName::empty
  - DNSName::isRoot
  - DNSName::hasLabels
  - DNSName::clear
  - DNSName::hash
  - '& operator+=(const DNSName& rhs)'
  - operator<(const DNSName& rhs)  const
  - operator()(const unsigned char& lhs, const unsigned char& rhs) const
  - DNSName::canonCompare
  - '& getStorage() const'
  - DNSName::sizeEstimate
  - operator()(const DNSName&a, const DNSName& b) const
  - operator+(const DNSName& lhs, const DNSName& rhs)
  - ZoneName::ZoneName
  - '& operator=(const ZoneName& rhs)'
  - '& operator=(ZoneName&& rhs) noexcept'
  - ZoneName::ZoneName
  - ZoneName::ZoneName
  - ZoneName::ZoneName
  - ZoneName::ZoneName
  - ZoneName::isPartOf
  - ZoneName::isPartOf
  - operator==(const ZoneName& rhs) const
  - operator!=(const ZoneName& rhs) const
  - ZoneName::toString
  - ZoneName::chopOff
  - ZoneName::makeLowerCase
  - ZoneName::makeUsLowerCase
  - ZoneName::empty
  - ZoneName::clear
  - ZoneName::trimToLabels
  - ZoneName::canonCompare
  - operator const DNSName&() const
  - operator DNSName&()
  - ZoneName::hasVariant
  - ZoneName::getVariant
  - operator () (const ZoneName& dn) const
  - operator () (const ZoneName& dn) const
  - operator()(const ZoneName& a, const ZoneName& b) const
  - SuffixMatchTree
  - SuffixMatchTree
  - '& operator=(const SuffixMatchTree &rhs)'
  - operator<(const SuffixMatchTree& rhs) const
  - operator<(const SuffixMatchTree& smt) const
  - operator<(const LightKey& lk) const
  - visit
  - add
  - add
  - remove
  - remove
  - lookup
  - getBestMatch
  - getNodes
  - getBestNode
  - getBestNode
  - getBestMatch
  - SuffixMatchNode
  - add
  - add
  - add
  - remove
  - remove
  - check
  - getBestMatch
  - toString
  - toVector
  - operator () (const DNSName& dn) const
  - operator () (const DNSName& dn) const
  - DNSName::operator==(const DNSName& rhs) const
  - toString
  source_file: /src/pdns/pdns/dnsdistdist/dnsname.hh
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields: []
      item_type: struct
      name: DNSNameCompare
      pos:
        line_end: 186
        line_start: 180
        source_file: /src/pdns/pdns/dnsdistdist/dnsname.hh
    - fields: []
      item_type: struct
      name: CanonDNSNameCompare
      pos:
        line_end: 264
        line_start: 258
        source_file: /src/pdns/pdns/dnsdistdist/dnsname.hh
    - fields: []
      item_type: struct
      name: hash<ZoneName>
      pos:
        line_end: 382
        line_start: 380
        source_file: /src/pdns/pdns/dnsdistdist/dnsname.hh
    - fields: []
      item_type: struct
      name: hash<ZoneName>
      pos:
        line_end: 382
        line_start: 380
        source_file: /src/pdns/pdns/dnsdistdist/dnsname.hh
    - fields: []
      item_type: struct
      name: CanonZoneNameCompare
      pos:
        line_end: 391
        line_start: 385
        source_file: /src/pdns/pdns/dnsdistdist/dnsname.hh
    - fields:
      - name: d_name
        type: std::string
      - name: children
        type: std::set<SuffixMatchTree, std::less<>>
      - name: endNode
        type: bool
      - name: d_value
        type: T
      item_type: struct
      name: SuffixMatchTree
      pos:
        line_end: 654
        line_start: 400
        source_file: /src/pdns/pdns/dnsdistdist/dnsname.hh
    - fields:
      - name: d_name
        type: std::string_view
      item_type: struct
      name: LightKey
      pos:
        line_end: 450
        line_start: 435
        source_file: /src/pdns/pdns/dnsdistdist/dnsname.hh
    - fields:
      - name: d_tree
        type: SuffixMatchTree<bool>
      - name: d_nodes
        type: std::set<DNSName>
      item_type: struct
      name: SuffixMatchNode
      pos:
        line_end: 739
        line_start: 658
        source_file: /src/pdns/pdns/dnsdistdist/dnsname.hh
    - fields: []
      item_type: struct
      name: hash<DNSName>
      pos:
        line_end: 746
        line_start: 744
        source_file: /src/pdns/pdns/dnsdistdist/dnsname.hh
    - fields: []
      item_type: struct
      name: hash<DNSName>
      pos:
        line_end: 746
        line_start: 744
        source_file: /src/pdns/pdns/dnsdistdist/dnsname.hh
    - fields: []
      item_type: struct
      name: DNSNameSet
      pos:
        line_end: 773
        line_start: 767
        source_file: /src/pdns/pdns/dnsdistdist/dnsname.hh
    typedefs:
    - item_type: typedef
      name: string_t
      pos:
        line_end: 197
        line_start: 197
        source_file: /src/pdns/pdns/dnsdistdist/dnsname.hh
      type: container::string
    union: []
- function_names:
  - BOOST_AUTO_TEST_CASE
  - increment
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  source_file: /src/pdns/pdns/dnsdistdist/test-luawrapper.cc
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: value
        type: int
      item_type: struct
      name: Object
      pos:
        line_end: 25
        line_start: 21
        source_file: /src/pdns/pdns/dnsdistdist/test-luawrapper.cc
    typedefs: []
    union: []
- function_names:
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  source_file: /src/pdns/pdns/dnsdistdist/test-dnsdistluanetwork.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - Logging::Loggable
  - Logging::to_string
  - Logging::IterLoggable
  - Logging::to_string
  - Logging::Loggable
  - Logging::to_string
  - Logging::IterLoggable
  - Logging::to_string
  - SLOG
  - SLOG
  - VERBOSESLOG
  - SLOG
  source_file: /src/pdns/pdns/dnsdistdist/logging.hh
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: name
        type: std::optional<std::string>
      - name: message
        type: std::string
      - name: error
        type: std::optional<std::string>
      - name: d_timestamp
        type: struct timeval
      - name: values
        type: std::map<std::string, std::string>
      - name: level
        type: size_t
      - name: d_priority
        type: Logr::Priority
      item_type: struct
      name: Entry
      pos:
        line_end: 47
        line_start: 38
        source_file: /src/pdns/pdns/dnsdistdist/logging.hh
    - fields: []
      item_type: struct
      name: is_to_string_available
      pos:
        line_end: 60
        line_start: 58
        source_file: /src/pdns/pdns/dnsdistdist/logging.hh
    - fields: []
      item_type: struct
      name: is_to_string_available<T, std::void_t<decltype(std::to_string(std::declval<T>()))>>
      pos:
        line_end: 66
        line_start: 64
        source_file: /src/pdns/pdns/dnsdistdist/logging.hh
    - fields: []
      item_type: struct
      name: is_toLogString_available
      pos:
        line_end: 72
        line_start: 70
        source_file: /src/pdns/pdns/dnsdistdist/logging.hh
    - fields: []
      item_type: struct
      name: is_toLogString_available<T, std::void_t<decltype(std::declval<T>().toLogString())>>
      pos:
        line_end: 77
        line_start: 75
        source_file: /src/pdns/pdns/dnsdistdist/logging.hh
    - fields: []
      item_type: struct
      name: is_toStructuredLogString_available
      pos:
        line_end: 82
        line_start: 80
        source_file: /src/pdns/pdns/dnsdistdist/logging.hh
    - fields: []
      item_type: struct
      name: is_toStructuredLogString_available<T, std::void_t<decltype(std::declval<T>().toStructuredLogString())>>
      pos:
        line_end: 87
        line_start: 85
        source_file: /src/pdns/pdns/dnsdistdist/logging.hh
    - fields: []
      item_type: struct
      name: is_toString_available
      pos:
        line_end: 92
        line_start: 90
        source_file: /src/pdns/pdns/dnsdistdist/logging.hh
    - fields: []
      item_type: struct
      name: is_toString_available<T, std::void_t<decltype(std::declval<T>().toString())>>
      pos:
        line_end: 97
        line_start: 95
        source_file: /src/pdns/pdns/dnsdistdist/logging.hh
    - fields:
      - name: '& _t'
        type: T
      item_type: struct
      name: Loggable
      pos:
        line_end: 132
        line_start: 102
        source_file: /src/pdns/pdns/dnsdistdist/logging.hh
    - fields:
      - name: '& _t1'
        type: T
      - name: '& _t2'
        type: T
      item_type: struct
      name: IterLoggable
      pos:
        line_end: 175
        line_start: 135
        source_file: /src/pdns/pdns/dnsdistdist/logging.hh
    - fields:
      - name: name
        type: std::optional<std::string>
      - name: message
        type: std::string
      - name: error
        type: std::optional<std::string>
      - name: d_timestamp
        type: struct timeval
      - name: values
        type: std::map<std::string, std::string>
      - name: level
        type: size_t
      - name: d_priority
        type: Logr::Priority
      item_type: struct
      name: Entry
      pos:
        line_end: 47
        line_start: 38
        source_file: /src/pdns/pdns/dnsdistdist/logging.hh
    - fields: []
      item_type: struct
      name: is_to_string_available
      pos:
        line_end: 60
        line_start: 58
        source_file: /src/pdns/pdns/dnsdistdist/logging.hh
    - fields: []
      item_type: struct
      name: is_to_string_available<T, std::void_t<decltype(std::to_string(std::declval<T>()))>>
      pos:
        line_end: 66
        line_start: 64
        source_file: /src/pdns/pdns/dnsdistdist/logging.hh
    - fields: []
      item_type: struct
      name: is_toLogString_available
      pos:
        line_end: 72
        line_start: 70
        source_file: /src/pdns/pdns/dnsdistdist/logging.hh
    - fields: []
      item_type: struct
      name: is_toLogString_available<T, std::void_t<decltype(std::declval<T>().toLogString())>>
      pos:
        line_end: 77
        line_start: 75
        source_file: /src/pdns/pdns/dnsdistdist/logging.hh
    - fields: []
      item_type: struct
      name: is_toStructuredLogString_available
      pos:
        line_end: 82
        line_start: 80
        source_file: /src/pdns/pdns/dnsdistdist/logging.hh
    - fields: []
      item_type: struct
      name: is_toStructuredLogString_available<T, std::void_t<decltype(std::declval<T>().toStructuredLogString())>>
      pos:
        line_end: 87
        line_start: 85
        source_file: /src/pdns/pdns/dnsdistdist/logging.hh
    - fields: []
      item_type: struct
      name: is_toString_available
      pos:
        line_end: 92
        line_start: 90
        source_file: /src/pdns/pdns/dnsdistdist/logging.hh
    - fields: []
      item_type: struct
      name: is_toString_available<T, std::void_t<decltype(std::declval<T>().toString())>>
      pos:
        line_end: 97
        line_start: 95
        source_file: /src/pdns/pdns/dnsdistdist/logging.hh
    - fields:
      - name: '& _t'
        type: T
      item_type: struct
      name: Loggable
      pos:
        line_end: 132
        line_start: 102
        source_file: /src/pdns/pdns/dnsdistdist/logging.hh
    - fields:
      - name: '& _t1'
        type: T
      - name: '& _t2'
        type: T
      item_type: struct
      name: IterLoggable
      pos:
        line_end: 175
        line_start: 135
        source_file: /src/pdns/pdns/dnsdistdist/logging.hh
    typedefs: []
    union: []
- function_names:
  - DownstreamConnectionsManager::setMaxIdleConnectionsPerDownstream
  - DownstreamConnectionsManager::setCleanupInterval
  - DownstreamConnectionsManager::setMaxIdleTime
  - DownstreamConnectionsManager::getConnectionToDownstream
  - DownstreamConnectionsManager::cleanupClosedConnections
  - DownstreamConnectionsManager::clear
  - DownstreamConnectionsManager::count
  - DownstreamConnectionsManager::getActiveCount
  - DownstreamConnectionsManager::getIdleCount
  - DownstreamConnectionsManager::removeDownstreamConnection
  - DownstreamConnectionsManager::moveToIdle
  - DownstreamConnectionsManager::cleanUpList
  - DownstreamConnectionsManager::findUsableConnectionInList
  - DownstreamConnectionsManager::isConnectionUsable
  source_file: /src/pdns/pdns/dnsdistdist/dnsdist-downstream-connection.hh
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields: []
      item_type: struct
      name: SequencedTag
      pos:
        line_end: 15
        line_start: 13
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-downstream-connection.hh
    - fields: []
      item_type: struct
      name: OrderedTag
      pos:
        line_end: 18
        line_start: 16
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-downstream-connection.hh
    - fields:
      - name: d_actives
        type: list_t
      - name: d_idles
        type: list_t
      item_type: struct
      name: ConnectionLists
      pos:
        line_end: 32
        line_start: 28
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-downstream-connection.hh
    typedefs:
    - item_type: typedef
      name: list_t
      pos:
        line_end: 27
        line_start: 20
        source_file: /src/pdns/pdns/dnsdistdist/dnsdist-downstream-connection.hh
      type: multi_index_container
    union: []
- function_names:
  - ExpectedStep
  - '& operator<<(std::ostream& os, const ExpectedStep::ExpectedRequest d)'
  - DOHConnection::DOHConnection
  - DOHConnection::submitIncoming
  - DOHConnection::submitResponse
  - DOHConnection::submitError
  - DOHConnection::submitGoAway
  - DOHConnection::send_callback
  - DOHConnection::on_frame_recv_callback
  - DOHConnection::on_data_chunk_recv_callback
  - DOHConnection::on_stream_close_callback
  - MockupTLSConnection::MockupTLSConnection
  - ~MockupTLSConnection()
  - MockupTLSConnection::tryHandshake
  - MockupTLSConnection::tryWrite
  - MockupTLSConnection::tryRead
  - MockupTLSConnection::tryConnect
  - MockupTLSConnection::close
  - MockupTLSConnection::isUsable
  - MockupTLSConnection::getServerNameIndication
  - MockupTLSConnection::getNextProtocol
  - MockupTLSConnection::getTLSVersion
  - MockupTLSConnection::getVerifyResult
  - MockupTLSConnection::hasSessionBeenResumed
  - MockupTLSConnection::getSessions
  - MockupTLSConnection::setSession
  - MockupTLSConnection::getAsyncFDs
  - MockupTLSConnection::doHandshake
  - MockupTLSConnection::connect
  - MockupTLSConnection::read
  - MockupTLSConnection::write
  - MockupTLSConnection::getStep
  - MockupQuerySender::active
  - MockupQuerySender::handleResponse
  - MockupQuerySender::handleXFRResponse
  - MockupQuerySender::notifyIOError
  - TestFixture
  - ~TestFixture()
  - BOOST_FIXTURE_TEST_CASE
  - BOOST_FIXTURE_TEST_CASE
  - BOOST_FIXTURE_TEST_CASE
  - BOOST_FIXTURE_TEST_CASE
  - BOOST_FIXTURE_TEST_CASE
  - BOOST_FIXTURE_TEST_CASE
  - BOOST_FIXTURE_TEST_CASE
  - BOOST_FIXTURE_TEST_CASE
  - BOOST_FIXTURE_TEST_CASE
  - BOOST_FIXTURE_TEST_CASE
  - BOOST_FIXTURE_TEST_CASE
  - BOOST_FIXTURE_TEST_CASE
  - BOOST_FIXTURE_TEST_CASE
  - BOOST_FIXTURE_TEST_CASE
  source_file: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc
  types:
    enum:
    - enumerators:
      - name: handshakeClient
      - name: writeToClient
      - name: readFromClient
      - name: closeClient
      - name: connectToBackend
      - name: readFromBackend
      - name: writeToBackend
      - name: closeBackend
      item_type: enum
      name: ExpectedRequest
      pos:
        line_end: 54
        line_start: 44
        source_file: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc
    preproc_defs: []
    structs:
    - fields:
      - name: cb
        type: std::function<void(int descriptor)>
      - name: request
        type: ExpectedRequest
      - name: nextState
        type: IOState
      - name: bytes
        type: size_t
      item_type: struct
      name: ExpectedStep
      pos:
        line_end: 65
        line_start: 41
        source_file: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc
    - fields:
      - name: d_query
        type: PacketBuffer
      - name: d_response
        type: PacketBuffer
      item_type: struct
      name: ExpectedData
      pos:
        line_end: 71
        line_start: 67
        source_file: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc
    - fields: []
      item_type: struct
      name: TestFixture
      pos:
        line_end: 581
        line_start: 566
        source_file: /src/pdns/pdns/dnsdistdist/test-dnsdistnghttp2_cc.cc
    typedefs: []
    union: []
- function_names: []
  source_file: /src/pdns/pdns/dnsdistdist/doq-common.hh
  types:
    enum:
    - enumerators:
      - name: DOQ_NO_ERROR
        value: '0'
      - name: DOQ_EXCESSIVE_LOAD
        value: '4'
      - name: DOQ_REQUEST_CANCELLED
        value: '3'
      - name: DOQ_PROTOCOL_ERROR
        value: '2'
      - name: DOQ_INTERNAL_ERROR
        value: '1'
      - name: DOQ_UNSPECIFIED_ERROR
        value: '5'
      item_type: enum
      name: DOQ_Error_Codes
      pos:
        line_end: 65
        line_start: 57
        source_file: /src/pdns/pdns/dnsdistdist/doq-common.hh
    - enumerators:
      - name: QUIC_PACKET_TYPE_INITIAL
        value: '1'
      - name: QUIC_PACKET_TYPE_ZERO_RTT
        value: '4'
      - name: QUIC_PACKET_TYPE_HANDSHAKE
        value: '3'
      - name: QUIC_PACKET_TYPE_RETRY
        value: '2'
      - name: QUIC_PACKET_TYPE_SHORT
        value: '5'
      - name: QUIC_PACKET_TYPE_VERSION_NEGOTIATION
        value: '6'
      item_type: enum
      name: DOQ_Packet_Types
      pos:
        line_end: 76
        line_start: 68
        source_file: /src/pdns/pdns/dnsdistdist/doq-common.hh
    - enumerators:
      - name: DOQ_NO_ERROR
        value: '0'
      - name: DOQ_EXCESSIVE_LOAD
        value: '4'
      - name: DOQ_REQUEST_CANCELLED
        value: '3'
      - name: DOQ_PROTOCOL_ERROR
        value: '2'
      - name: DOQ_INTERNAL_ERROR
        value: '1'
      - name: DOQ_UNSPECIFIED_ERROR
        value: '5'
      item_type: enum
      name: DOQ_Error_Codes
      pos:
        line_end: 65
        line_start: 57
        source_file: /src/pdns/pdns/dnsdistdist/doq-common.hh
    - enumerators:
      - name: QUIC_PACKET_TYPE_INITIAL
        value: '1'
      - name: QUIC_PACKET_TYPE_ZERO_RTT
        value: '4'
      - name: QUIC_PACKET_TYPE_HANDSHAKE
        value: '3'
      - name: QUIC_PACKET_TYPE_RETRY
        value: '2'
      - name: QUIC_PACKET_TYPE_SHORT
        value: '5'
      - name: QUIC_PACKET_TYPE_VERSION_NEGOTIATION
        value: '6'
      item_type: enum
      name: DOQ_Packet_Types
      pos:
        line_end: 76
        line_start: 68
        source_file: /src/pdns/pdns/dnsdistdist/doq-common.hh
    preproc_defs: []
    structs:
    - fields:
      - name: d_tlsConfig
        type: TLSConfig
      - name: d_keyLogFile
        type: std::string
      - name: d_idleTimeout
        type: uint64_t
      - name: d_maxInFlight
        type: uint64_t
      - name: d_ccAlgo
        type: std::string
      - name: d_alpn
        type: std::string
      item_type: struct
      name: QuicheParams
      pos:
        line_end: 54
        line_start: 46
        source_file: /src/pdns/pdns/dnsdistdist/doq-common.hh
    - fields:
      - name: d_tlsConfig
        type: TLSConfig
      - name: d_keyLogFile
        type: std::string
      - name: d_idleTimeout
        type: uint64_t
      - name: d_maxInFlight
        type: uint64_t
      - name: d_ccAlgo
        type: std::string
      - name: d_alpn
        type: std::string
      item_type: struct
      name: QuicheParams
      pos:
        line_end: 54
        line_start: 46
        source_file: /src/pdns/pdns/dnsdistdist/doq-common.hh
    typedefs: []
    union: []
- function_names: []
  source_file: /src/pdns/pdns/dnsdistdist/threadname.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - ptr_to_u64
  - bpf_pin_map
  - bpf_load_pinned_map
  - bpf_check_map_sizes
  - bpf_create_map
  - bpf_update_elem
  - bpf_lookup_elem
  - bpf_delete_elem
  - bpf_get_next_key
  - bpf_prog_load
  - BPFFilter::Map::Map(BPFFilter::MapConfiguration config, BPFFilter::MapFormat format)
  - loadProgram
  - BPFFilter::BPFFilter
  - BPFFilter::addSocket
  - BPFFilter::removeSocket
  - BPFFilter::block
  - BPFFilter::unblock
  - BPFFilter::addRangeRule
  - BPFFilter::rmRangeRule
  - BPFFilter::block
  - BPFFilter::unblock
  - BPFFilter::getAddrStats
  - BPFFilter::getRangeRule
  - BPFFilter::getQNameStats
  - BPFFilter::getHits
  - BPFFilter::BPFFilter
  - BPFFilter::addSocket
  - BPFFilter::removeSocket
  - BPFFilter::block
  - BPFFilter::unblock
  - BPFFilter::block
  - BPFFilter::unblock
  - BPFFilter::addRangeRule
  - BPFFilter::rmRangeRule
  - BPFFilter::getRangeRule
  - BPFFilter::getAddrStats
  - BPFFilter::getQNameStats
  - BPFFilter::getHits
  - BPFFilter::supportsMatchAction
  - BPFFilter::isExternal
  source_file: /src/pdns/pdns/dnsdistdist/bpf-filter.cc
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: src[16]
        type: uint8_t
      item_type: struct
      name: KeyV6
      pos:
        line_end: 178
        line_start: 175
        source_file: /src/pdns/pdns/dnsdistdist/bpf-filter.cc
    - fields:
      - name: qname[255]
        type: uint8_t
      item_type: struct
      name: QNameKey
      pos:
        line_end: 183
        line_start: 180
        source_file: /src/pdns/pdns/dnsdistdist/bpf-filter.cc
    - fields:
      - name: qname[255]
        type: uint8_t
      - name: qtype
        type: uint16_t
      item_type: struct
      name: QNameAndQTypeKey
      pos:
        line_end: 189
        line_start: 185
        source_file: /src/pdns/pdns/dnsdistdist/bpf-filter.cc
    - fields:
      - name: counter
        type: uint64_t
      - name: qtype
        type: uint16_t
      item_type: struct
      name: QNameValue
      pos:
        line_end: 195
        line_start: 191
        source_file: /src/pdns/pdns/dnsdistdist/bpf-filter.cc
    typedefs: []
    union: []
- function_names:
  - checkQuery
  - checkResponse
  - test_ring
  - BOOST_AUTO_TEST_CASE
  - ringReaderThread
  - ringWriterThread
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  source_file: /src/pdns/pdns/dnsdistdist/test-dnsdistrings_cc.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - dnsdist::logging::logTime
  - dnsdist::logging::logTime
  source_file: /src/pdns/pdns/dnsdistdist/dolog.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - RuntimeError
  - NetworkErr
  - SSocket
  - SConnect
  - SConnectWithTimeout
  - SBind
  - SAccept
  - SListen
  - SSetsockopt
  - setSocketIgnorePMTU
  - setSocketForcePMTU
  - setReusePort
  - HarvestTimestamp
  - HarvestDestinationAddress
  - IsAnyAddress
  - sendOnNBSocket
  - fillMSGHdr
  - ComboAddress::truncate
  - sendMsgWithOptions
  - isTCPSocketUsable
  - parseIPAndPort
  - setSocketBuffer
  - setSocketReceiveBuffer
  - setSocketSendBuffer
  - raiseSocketBufferToMax
  - raiseSocketReceiveBufferToMax
  - raiseSocketSendBufferToMax
  - getListOfNetworkInterfaces
  - getListOfAddressesOfNetworkInterface
  - getListOfAddressesOfNetworkInterface
  - convertNetmaskToBits
  - getListOfRangesOfNetworkInterface
  - getListOfRangesOfNetworkInterface
  source_file: /src/pdns/pdns/dnsdistdist/iputils.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - LLVMFuzzerTestOneInput
  source_file: /src/pdns/pdns/dnsdistdist/fuzz_xsk.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - main
  source_file: /src/pdns/pdns/dnsdistdist/meson/libcrypto/bn_new.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/pdns/pdns/dnsdistdist/dnsdist-rust-lib/dnsdist-configuration-yaml-items-pre-in.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - BPF_ALU64_REG
  - BPF_ALU32_REG
  - BPF_ALU64_IMM
  - BPF_ALU32_IMM
  - BPF_MOV64_REG
  - BPF_MOV32_REG
  - BPF_MOV64_IMM
  - BPF_LD_IMM64
  - BPF_LD_MAP_FD
  - BPF_LD_ABS
  - BPF_LDX_MEM
  - BPF_STX_MEM
  - BPF_ST_MEM
  - BPF_JMP_REG
  - BPF_JMP_IMM
  - BPF_RAW_INSN
  - BPF_EXIT_INSN
  source_file: /src/pdns/pdns/dnsdistdist/ext/libbpf/libbpf.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: LOG_BUF_SIZE
      pos:
        line_end: 12
        line_start: 11
        source_file: /src/pdns/pdns/dnsdistdist/ext/libbpf/libbpf.h
      type_or_value: '65536'
    - item_type: preproc_def
      name: dst_reg
      pos:
        line_end: 95
        line_start: 82
        source_file: /src/pdns/pdns/dnsdistdist/ext/libbpf/libbpf.h
      type_or_value: "= 0,\t\t\t\t\t\\\n\t\t.src_reg = 0,\t\t\t\t\t\\\n\t\t.off   =
        0,\t\t\t\t\t\\\n\t\t.imm   = (__s32)(((__u64) (IMM)) >> 32) })"
    - item_type: preproc_def
      name: BPF_PSEUDO_MAP_FD
      pos:
        line_end: 98
        line_start: 97
        source_file: /src/pdns/pdns/dnsdistdist/ext/libbpf/libbpf.h
      type_or_value: '1'
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/pdns/pdns/dnsdistdist/ext/arc4random/arc4random.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - fatal
  source_file: /src/pdns/pdns/dnsdistdist/ext/arc4random/log.h
  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/pdns/pdns/dnsdistdist/ext/arc4random/chacha_private.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: input[16]
        type: u32
      item_type: struct
      name: chacha_ctx
      pos:
        line_end: 16
        line_start: 13
        source_file: /src/pdns/pdns/dnsdistdist/ext/arc4random/chacha_private.h
    typedefs:
    - item_type: typedef
      name: u8
      pos:
        line_end: 10
        line_start: 10
        source_file: /src/pdns/pdns/dnsdistdist/ext/arc4random/chacha_private.h
      type: unsigned char
    - item_type: typedef
      name: u32
      pos:
        line_end: 11
        line_start: 11
        source_file: /src/pdns/pdns/dnsdistdist/ext/arc4random/chacha_private.h
      type: unsigned int
    union: []
- function_names:
  - seed_from_prngd
  source_file: /src/pdns/pdns/dnsdistdist/ext/arc4random/includes.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - arc4random_uniform
  source_file: /src/pdns/pdns/dnsdistdist/ext/arc4random/arc4random_uniform.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - _ssh_compat_getentropy
  source_file: /src/pdns/pdns/dnsdistdist/ext/arc4random/bsd-getentropy.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: SSH_RANDOM_DEV
      pos:
        line_end: 22
        line_start: 21
        source_file: /src/pdns/pdns/dnsdistdist/ext/arc4random/bsd-getentropy.c
      type_or_value: '"/dev/urandom"'
    structs: []
    typedefs: []
    union: []
- function_names:
  - explicit_bzero
  - explicit_bzero
  - explicit_bzero
  source_file: /src/pdns/pdns/dnsdistdist/ext/arc4random/explicit_bzero.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - getentropy
  - minimum
  - _rs_init
  - _rs_stir
  - _rs_stir_if_needed
  - _rs_rekey
  - _rs_random_buf
  - _rs_random_u32
  - arc4random
  - arc4random_buf
  - arc4random_buf
  source_file: /src/pdns/pdns/dnsdistdist/ext/arc4random/arc4random.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: inline
      pos:
        line_end: 64
        line_start: 63
        source_file: /src/pdns/pdns/dnsdistdist/ext/arc4random/arc4random.c
      type_or_value: __inline
    - item_type: preproc_def
      name: KEYSZ
      pos:
        line_end: 69
        line_start: 68
        source_file: /src/pdns/pdns/dnsdistdist/ext/arc4random/arc4random.c
      type_or_value: '32'
    - item_type: preproc_def
      name: IVSZ
      pos:
        line_end: 70
        line_start: 69
        source_file: /src/pdns/pdns/dnsdistdist/ext/arc4random/arc4random.c
      type_or_value: '8'
    - item_type: preproc_def
      name: BLOCKSZ
      pos:
        line_end: 71
        line_start: 70
        source_file: /src/pdns/pdns/dnsdistdist/ext/arc4random/arc4random.c
      type_or_value: '64'
    - item_type: preproc_def
      name: RSBUFSZ
      pos:
        line_end: 72
        line_start: 71
        source_file: /src/pdns/pdns/dnsdistdist/ext/arc4random/arc4random.c
      type_or_value: (16*BLOCKSZ)
    - item_type: preproc_def
      name: REKEY_BASE
      pos:
        line_end: 74
        line_start: 73
        source_file: /src/pdns/pdns/dnsdistdist/ext/arc4random/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: 79
        line_start: 76
        source_file: /src/pdns/pdns/dnsdistdist/ext/arc4random/arc4random.c
    - fields:
      - name: rs_chacha
        type: chacha_ctx
      - name: rs_buf[RSBUFSZ]
        type: u_char
      item_type: struct
      name: _rsx
      pos:
        line_end: 85
        line_start: 82
        source_file: /src/pdns/pdns/dnsdistdist/ext/arc4random/arc4random.c
    typedefs: []
    union: []
- function_names:
  - _ARC4_LOCK
  - _ARC4_UNLOCK
  - _getentropy_fail
  - _rs_forkhandler
  - _rs_forkdetect
  - _rs_allocate
  source_file: /src/pdns/pdns/dnsdistdist/ext/arc4random/arc4random.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - YaHTTP::URL::parseSchema
  - YaHTTP::URL::parseHost
  - YaHTTP::URL::parseUserPass
  - YaHTTP::URL::parsePath
  - YaHTTP::URL::parseParameters
  - YaHTTP::URL::parseAnchor
  - YaHTTP::URL::initialize
  - YaHTTP::URL::to_string
  - YaHTTP::URL::URL
  - YaHTTP::URL::URL
  - YaHTTP::URL::URL
  - YaHTTP::URL::parse
  - '& operator<<(std::ostream& os, const URL& url)'
  - YaHTTP::URL::parseSchema
  - YaHTTP::URL::parseHost
  - YaHTTP::URL::parseUserPass
  - YaHTTP::URL::parsePath
  - YaHTTP::URL::parseParameters
  - YaHTTP::URL::parseAnchor
  - YaHTTP::URL::initialize
  - YaHTTP::URL::to_string
  - YaHTTP::URL::URL
  - YaHTTP::URL::URL
  - YaHTTP::URL::URL
  - YaHTTP::URL::parse
  - '& operator<<(std::ostream& os, const URL& url)'
  source_file: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/url.hpp
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: YAHTTP_MAX_URL_LENGTH
      pos:
        line_end: 8
        line_start: 7
        source_file: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/url.hpp
      type_or_value: '2048'
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/yahttp.hpp
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - YaHTTP::Cookie::Cookie
  - YaHTTP::Cookie::Cookie
  - '& operator=(const Cookie &rhs)'
  - YaHTTP::Cookie::str
  - YaHTTP::CookieJar::CookieJar
  - YaHTTP::CookieJar::CookieJar
  - '& operator=(const CookieJar & rhs)'
  - YaHTTP::CookieJar::clear
  - YaHTTP::CookieJar::keyValuePair
  - YaHTTP::CookieJar::parseCookieHeader
  - YaHTTP::CookieJar::parseSetCookieHeader
  - YaHTTP::Cookie::Cookie
  - YaHTTP::Cookie::Cookie
  - '& operator=(const Cookie &rhs)'
  - YaHTTP::Cookie::str
  - YaHTTP::CookieJar::CookieJar
  - YaHTTP::CookieJar::CookieJar
  - '& operator=(const CookieJar & rhs)'
  - YaHTTP::CookieJar::clear
  - YaHTTP::CookieJar::keyValuePair
  - YaHTTP::CookieJar::parseCookieHeader
  - YaHTTP::CookieJar::parseSetCookieHeader
  source_file: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/cookie.hpp
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - operator() (const std::string& lhs, const std::string& rhs) const
  - DateTime
  - initialize
  - setLocal
  - setGm
  - fromLocaltime
  - fromGmtime
  - fromTm
  - validate
  - rfc_str
  - cookie_str
  - parseCookie
  - unixtime
  - Utility::decodeURL
  - Utility::encodeURL
  - Utility::encodeURL
  - Utility::status2text
  - Utility::parseUrlParameters
  - Utility::iequals
  - Utility::iequals
  - Utility::trimLeft
  - Utility::trimRight
  - Utility::trim
  - Utility::camelizeHeader
  source_file: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: YAHTTP_MAX_REQUEST_LINE_SIZE
      pos:
        line_end: 4
        line_start: 3
        source_file: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp
      type_or_value: '8192'
    - item_type: preproc_def
      name: YAHTTP_MAX_REQUEST_FIELDS
      pos:
        line_end: 8
        line_start: 7
        source_file: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp
      type_or_value: '100'
    structs:
    - fields: []
      item_type: struct
      name: ASCIICINullSafeComparator
      pos:
        line_end: 35
        line_start: 24
        source_file: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp
    typedefs:
    - item_type: typedef
      name: strstr_map_t
      pos:
        line_end: 37
        line_start: 37
        source_file: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/utility.hpp
      type: map<std::string,std::string,ASCIICINullSafeComparator>
    union: []
- function_names: []
  source_file: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/yahttp-config.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - YaHTTP::Router::Router
  - YaHTTP::Router::Map
  - YaHTTP::Router::Get
  - YaHTTP::Router::Post
  - YaHTTP::Router::Put
  - YaHTTP::Router::Patch
  - YaHTTP::Router::Delete
  - YaHTTP::Router::Any
  - YaHTTP::Router::Match
  - YaHTTP::Router::Route
  - YaHTTP::Router::PrintRoutes
  - YaHTTP::Router::URLFor
  - '& GetRoutes()'
  - YaHTTP::Router::Clear
  - YaHTTP::Router::Router
  - YaHTTP::Router::Map
  - YaHTTP::Router::Get
  - YaHTTP::Router::Post
  - YaHTTP::Router::Put
  - YaHTTP::Router::Patch
  - YaHTTP::Router::Delete
  - YaHTTP::Router::Any
  - YaHTTP::Router::Match
  - YaHTTP::Router::Route
  - YaHTTP::Router::PrintRoutes
  - YaHTTP::Router::URLFor
  - '& GetRoutes()'
  - YaHTTP::Router::Clear
  source_file: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.hpp
  types:
    enum:
    - enumerators:
      - name: RouteFound
        value: '1'
      - name: RouteNotFound
        value: '0'
      - name: RouteNoMethod
        value: '-1'
      item_type: enum
      name: RoutingResult
      pos:
        line_end: 31
        line_start: 27
        source_file: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.hpp
    - enumerators:
      - name: RouteFound
        value: '1'
      - name: RouteNotFound
        value: '0'
      - name: RouteNoMethod
        value: '-1'
      item_type: enum
      name: RoutingResult
      pos:
        line_end: 31
        line_start: 27
        source_file: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.hpp
    preproc_defs:
    - item_type: preproc_def
      name: IGNORE
      pos:
        line_end: 9
        line_start: 8
        source_file: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.hpp
      type_or_value: std::ignore
    - item_type: preproc_def
      name: IGNORE
      pos:
        line_end: 15
        line_start: 14
        source_file: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.hpp
      type_or_value: boost::tuples::ignore
    structs: []
    typedefs:
    - item_type: typedef
      name: THandlerFunction
      pos:
        line_end: 33
        line_start: 33
        source_file: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.hpp
      type: function <void(Request* req, Response* resp)>
    - item_type: typedef
      name: TRoute
      pos:
        line_end: 34
        line_start: 34
        source_file: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.hpp
      type: tuple<std::string, std::string, THandlerFunction, std::string>
    - item_type: typedef
      name: TRouteList
      pos:
        line_end: 35
        line_start: 35
        source_file: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.hpp
      type: vector<TRoute>
    - item_type: typedef
      name: TDelim
      pos:
        line_end: 36
        line_start: 36
        source_file: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.hpp
      type: tuple<int,int>
    - item_type: typedef
      name: THandlerFunction
      pos:
        line_end: 33
        line_start: 33
        source_file: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.hpp
      type: function <void(Request* req, Response* resp)>
    - item_type: typedef
      name: TRoute
      pos:
        line_end: 34
        line_start: 34
        source_file: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.hpp
      type: tuple<std::string, std::string, THandlerFunction, std::string>
    - item_type: typedef
      name: TRouteList
      pos:
        line_end: 35
        line_start: 35
        source_file: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.hpp
      type: vector<TRoute>
    - item_type: typedef
      name: TDelim
      pos:
        line_end: 36
        line_start: 36
        source_file: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.hpp
      type: tuple<int,int>
    union: []
- function_names:
  - YaHTTP::isspace
  - YaHTTP::isspace
  - YaHTTP::isxdigit
  - YaHTTP::isxdigit
  - YaHTTP::isdigit
  - YaHTTP::isdigit
  - YaHTTP::isalnum
  - YaHTTP::isalnum
  - YaHTTP::AsyncLoader<T>::feed
  - YaHTTP::HTTPBase::write
  - '& operator<<(std::ostream& os, const Response &resp)'
  - '& operator>>(std::istream& is, Response &resp)'
  - '& operator<<(std::ostream& os, const Request &req)'
  - '& operator>>(std::istream& is, Request &req)'
  - YaHTTP::isspace
  - YaHTTP::isspace
  - YaHTTP::isxdigit
  - YaHTTP::isxdigit
  - YaHTTP::isdigit
  - YaHTTP::isdigit
  - YaHTTP::isalnum
  - YaHTTP::isalnum
  - YaHTTP::AsyncLoader<T>::feed
  - YaHTTP::HTTPBase::write
  - '& operator<<(std::ostream& os, const Response &resp)'
  - '& operator>>(std::istream& is, Response &resp)'
  - '& operator<<(std::ostream& os, const Request &req)'
  - '& operator>>(std::istream& is, Request &req)'
  source_file: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.cpp
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - YaHTTP::Error::Error
  - YaHTTP::Error::Error
  - ~Error() throw()
  - YaHTTP::Error::what
  - YaHTTP::ParseError::ParseError
  - YaHTTP::ParseError::ParseError
  - YaHTTP::Error::Error
  - YaHTTP::Error::Error
  - ~Error() throw()
  - YaHTTP::Error::what
  - YaHTTP::ParseError::ParseError
  - YaHTTP::ParseError::ParseError
  source_file: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/exception.hpp
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - YaHTTP::Router::map
  - YaHTTP::Router::match
  - YaHTTP::Router::route
  - YaHTTP::Router::printRoutes
  - YaHTTP::Router::urlFor
  - YaHTTP::Router::map
  - YaHTTP::Router::match
  - YaHTTP::Router::route
  - YaHTTP::Router::printRoutes
  - YaHTTP::Router::urlFor
  source_file: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/router.cpp
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - YaHTTP::HTTPBase::SendBodyRender::SendBodyRender
  - operator()(const HTTPBase *doc, std::ostream& os, bool chunked) const
  - YaHTTP::HTTPBase::SendFileRender::SendFileRender
  - operator()(const HTTPBase *doc __attribute__((unused)), std::ostream& os, bool
    chunked) const
  - YaHTTP::HTTPBase::HTTPBase
  - ~HTTPBase()
  - YaHTTP::HTTPBase::initialize
  - YaHTTP::HTTPBase::HTTPBase
  - '& operator=(const HTTPBase& rhs)'
  - '& GET()'
  - '& POST()'
  - '& COOKIES()'
  - YaHTTP::HTTPBase::versionStr
  - YaHTTP::HTTPBase::str
  - YaHTTP::Response::Response
  - YaHTTP::Response::Response
  - '& operator=(const HTTPBase& rhs) override'
  - YaHTTP::Response::initialize
  - YaHTTP::Response::initialize
  - YaHTTP::Request::Request
  - YaHTTP::Request::Request
  - '& operator=(const HTTPBase& rhs) override'
  - YaHTTP::Request::initialize
  - YaHTTP::Request::initialize
  - YaHTTP::Request::setup
  - YaHTTP::Request::preparePost
  - YaHTTP::AsyncLoader::initialize
  - YaHTTP::AsyncLoader::ready
  - YaHTTP::AsyncLoader::finalize
  - YaHTTP::HTTPBase::SendBodyRender::SendBodyRender
  - operator()(const HTTPBase *doc, std::ostream& os, bool chunked) const
  - YaHTTP::HTTPBase::SendFileRender::SendFileRender
  - operator()(const HTTPBase *doc __attribute__((unused)), std::ostream& os, bool
    chunked) const
  - YaHTTP::HTTPBase::HTTPBase
  - ~HTTPBase()
  - YaHTTP::HTTPBase::initialize
  - YaHTTP::HTTPBase::HTTPBase
  - '& operator=(const HTTPBase& rhs)'
  - '& GET()'
  - '& POST()'
  - '& COOKIES()'
  - YaHTTP::HTTPBase::versionStr
  - YaHTTP::HTTPBase::str
  - YaHTTP::Response::Response
  - YaHTTP::Response::Response
  - '& operator=(const HTTPBase& rhs) override'
  - YaHTTP::Response::initialize
  - YaHTTP::Response::initialize
  - YaHTTP::Request::Request
  - YaHTTP::Request::Request
  - '& operator=(const HTTPBase& rhs) override'
  - YaHTTP::Request::initialize
  - YaHTTP::Request::initialize
  - YaHTTP::Request::setup
  - YaHTTP::Request::preparePost
  - YaHTTP::AsyncLoader::initialize
  - YaHTTP::AsyncLoader::ready
  - YaHTTP::AsyncLoader::finalize
  source_file: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: YAHTTP_MAX_HEADER_SIZE
      pos:
        line_end: 24
        line_start: 23
        source_file: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp
      type_or_value: (100 * 1024)
    - item_type: preproc_def
      name: YAHTTP_MAX_REQUEST_SIZE
      pos:
        line_end: 28
        line_start: 27
        source_file: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp
      type_or_value: '2097152'
    - item_type: preproc_def
      name: YAHTTP_MAX_RESPONSE_SIZE
      pos:
        line_end: 32
        line_start: 31
        source_file: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp
      type_or_value: '2097152'
    - item_type: preproc_def
      name: YAHTTP_TYPE_REQUEST
      pos:
        line_end: 35
        line_start: 34
        source_file: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp
      type_or_value: '1'
    - item_type: preproc_def
      name: YAHTTP_TYPE_RESPONSE
      pos:
        line_end: 36
        line_start: 35
        source_file: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp
      type_or_value: '2'
    structs: []
    typedefs:
    - item_type: typedef
      name: strcookie_map_t
      pos:
        line_end: 38
        line_start: 38
        source_file: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp
      type: map<std::string,Cookie,ASCIICINullSafeComparator>
    - item_type: typedef
      name: strcookie_map_t
      pos:
        line_end: 38
        line_start: 38
        source_file: /src/pdns/pdns/dnsdistdist/ext/yahttp/yahttp/reqresp.hpp
      type: map<std::string,Cookie,ASCIICINullSafeComparator>
    union: []
- function_names:
  - COMPILER_ASSERT
  - LOAD128
  - STORE128
  - AES_XENCRYPT
  - AES_XENCRYPTLAST
  - AES_XDECRYPT
  - AES_XDECRYPTLAST
  - XOR128
  - XOR128_3
  - SET64x2
  - BYTESHL128
  - SHUFFLE32x4_3333
  - RKINVERT
  - TWEAK_EXPAND
  - SHL1_128
  - AES_KEYGEN
  - LOAD128
  - STORE128
  - AES_ENCRYPT
  - AES_ENCRYPTLAST
  - AES_DECRYPT
  - AES_DECRYPTLAST
  - AES_KEYGEN
  - XOR128
  - XOR128_3
  - SET64x2
  - BYTESHL128
  - SHUFFLE32x4_3333
  - RKINVERT
  - TWEAK_EXPAND
  - SHL1_128
  - expand_key
  - EXPAND_KEY
  - aes_encrypt
  - aes_decrypt
  - aes_encrypt_with_tweak
  - aes_decrypt_with_tweak
  - aes_xex_tweak
  - aes_xex_encrypt
  - aes_ndx_decrypt
  - bin2hex
  - hex2bin
  - ipcrypt_zeroize
  - ipcrypt_key_from_hex
  - ipcrypt_ndip_from_hex
  - ipcrypt_ndx_ndip_from_hex
  - ipcrypt_str_to_ip16
  - ipcrypt_ip16_to_str
  - ipcrypt_sockaddr_to_ip16
  - ipcrypt_ip16_to_sockaddr
  - ipcrypt_init
  - ipcrypt_deinit
  - ipcrypt_pfx_init
  - ipcrypt_pfx_deinit
  - ipcrypt_is_mapped_ipv4
  - ipcrypt_pfx_pad_prefix
  - ipcrypt_pfx_get_bit
  - ipcrypt_pfx_set_bit
  - ipcrypt_pfx_shift_left
  - ipcrypt_pfx_encrypt_ip16
  - ipcrypt_pfx_decrypt_ip16
  - ipcrypt_pfx_encrypt_ip_str
  - ipcrypt_pfx_decrypt_ip_str
  - ipcrypt_ndx_init
  - ipcrypt_ndx_deinit
  - ipcrypt_encrypt_ip16
  - ipcrypt_decrypt_ip16
  - ipcrypt_encrypt_ip_str
  - ipcrypt_decrypt_ip_str
  - ipcrypt_nd_encrypt_ip16
  - ipcrypt_nd_decrypt_ip16
  - ipcrypt_nd_encrypt_ip_str
  - ipcrypt_nd_decrypt_ip_str
  - ipcrypt_ndx_encrypt_ip16
  - ipcrypt_ndx_decrypt_ip16
  - ipcrypt_ndx_encrypt_ip_str
  - ipcrypt_ndx_decrypt_ip_str
  source_file: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: ROUNDS
      pos:
        line_end: 51
        line_start: 50
        source_file: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c
      type_or_value: '10'
    - item_type: preproc_def
      name: HAVE_EXPLICIT_BZERO
      pos:
        line_end: 63
        line_start: 62
        source_file: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c
      type_or_value: '1'
    - item_type: preproc_def
      name: HAVE_EXPLICIT_BZERO
      pos:
        line_end: 66
        line_start: 65
        source_file: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c
      type_or_value: '1'
    - item_type: preproc_def
      name: __ARM_FEATURE_CRYPTO
      pos:
        line_end: 73
        line_start: 72
        source_file: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c
      type_or_value: '1'
    - item_type: preproc_def
      name: __ARM_FEATURE_AES
      pos:
        line_end: 76
        line_start: 75
        source_file: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c
      type_or_value: '1'
    structs:
    - fields:
      - name: rkeys
        type: KeySchedule
      item_type: struct
      name: AesState
      pos:
        line_end: 327
        line_start: 325
        source_file: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c
    - fields:
      - name: tkeys
        type: KeySchedule
      - name: rkeys
        type: KeySchedule
      item_type: struct
      name: NDXState
      pos:
        line_end: 335
        line_start: 332
        source_file: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c
    - fields:
      - name: k1keys
        type: KeySchedule
      - name: k2keys
        type: KeySchedule
      item_type: struct
      name: PFXState
      pos:
        line_end: 343
        line_start: 340
        source_file: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c
    typedefs:
    - item_type: typedef
      name: BlockVec
      pos:
        line_end: 100
        line_start: 100
        source_file: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c
      type: uint64x2_t
    - item_type: typedef
      name: BlockVec
      pos:
        line_end: 236
        line_start: 236
        source_file: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c
      type: __m128i
    - item_type: typedef
      name: KeySchedule[1 + ROUNDS]
      pos:
        line_end: 315
        line_start: 315
        source_file: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c
      type: BlockVec
    - item_type: typedef
      name: InvKeySchedule[ROUNDS - 1]
      pos:
        line_end: 320
        line_start: 320
        source_file: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/ipcrypt2.c
      type: BlockVec
    union: []
- function_names: []
  source_file: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/include/ipcrypt2.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: IPCRYPT_KEYBYTES
      pos:
        line_end: 21
        line_start: 20
        source_file: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/include/ipcrypt2.h
      type_or_value: 16U
    - item_type: preproc_def
      name: IPCRYPT_TWEAKBYTES
      pos:
        line_end: 24
        line_start: 23
        source_file: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/include/ipcrypt2.h
      type_or_value: 8U
    - item_type: preproc_def
      name: IPCRYPT_MAX_IP_STR_BYTES
      pos:
        line_end: 27
        line_start: 26
        source_file: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/include/ipcrypt2.h
      type_or_value: 46U
    - item_type: preproc_def
      name: IPCRYPT_NDIP_BYTES
      pos:
        line_end: 30
        line_start: 29
        source_file: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/include/ipcrypt2.h
      type_or_value: 24U
    - item_type: preproc_def
      name: IPCRYPT_NDIP_STR_BYTES
      pos:
        line_end: 33
        line_start: 32
        source_file: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/include/ipcrypt2.h
      type_or_value: (48U + 1U)
    - item_type: preproc_def
      name: IPCRYPT_NDX_KEYBYTES
      pos:
        line_end: 36
        line_start: 35
        source_file: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/include/ipcrypt2.h
      type_or_value: 32U
    - item_type: preproc_def
      name: IPCRYPT_NDX_TWEAKBYTES
      pos:
        line_end: 39
        line_start: 38
        source_file: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/include/ipcrypt2.h
      type_or_value: 16U
    - item_type: preproc_def
      name: IPCRYPT_NDX_NDIP_BYTES
      pos:
        line_end: 42
        line_start: 41
        source_file: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/include/ipcrypt2.h
      type_or_value: 32U
    - item_type: preproc_def
      name: IPCRYPT_NDX_NDIP_STR_BYTES
      pos:
        line_end: 45
        line_start: 44
        source_file: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/include/ipcrypt2.h
      type_or_value: (64U + 1U)
    - item_type: preproc_def
      name: IPCRYPT_PFX_KEYBYTES
      pos:
        line_end: 48
        line_start: 47
        source_file: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/include/ipcrypt2.h
      type_or_value: 32U
    structs:
    - fields:
      - name: opaque[16U * 11]
        type: uint8_t
      item_type: struct
      name: IPCrypt
      pos:
        line_end: 119
        line_start: 117
        source_file: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/include/ipcrypt2.h
    - fields:
      - name: opaque[16U * 11 * 2]
        type: uint8_t
      item_type: struct
      name: IPCryptPFX
      pos:
        line_end: 211
        line_start: 209
        source_file: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/include/ipcrypt2.h
    - fields:
      - name: opaque[16U * 11 * 2]
        type: uint8_t
      item_type: struct
      name: IPCryptNDX
      pos:
        line_end: 276
        line_start: 274
        source_file: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/include/ipcrypt2.h
    typedefs: []
    union: []
- function_names:
  - __has_attribute
  - untrinsics_sbox
  - untrinsics_inv_sbox
  - untrinsics_sbox
  - untrinsics_inv_sbox
  - untrinsics_xtime
  - untrinsics_mul2
  - untrinsics_mul3
  - untrinsics_mul9
  - untrinsics_mul0b
  - untrinsics_mul0d
  - untrinsics_mul0e
  - untrinsics_sub_shiftrows
  - untrinsics_invsub_shiftrows
  - untrinsics_mixcolumns
  - untrinsics_inv_mixcolumns
  - untrinsics_rot_word
  - untrinsics_sub_word
  - untrinsics_copy
  - _mm_aesenc_si128
  - _mm_aesenclast_si128
  - _mm_aesdec_si128
  - _mm_aesdeclast_si128
  - _mm_aesimc_si128
  - _mm_aeskeygenassist_si128
  - _mm_clmulepi64_si128
  - _mm_loadu_si128
  - _mm_storeu_si128
  - _mm_xor_si128
  - _mm_or_si128
  - _mm_and_si128
  - _mm_set_epi64x
  - _mm_slli_si128
  - _mm_srli_si128
  - _MM_SHUFFLE
  - _mm_shuffle_epi32
  - _mm_shuffle_epi8
  - _mm_loadu_si64
  - _mm_setr_epi8
  - _mm_setr_epi32
  - _mm_srli_epi32
  - _mm_slli_epi32
  - _mm_srli_epi16
  - _mm_slli_epi16
  - _mm_srli_epi64
  - _mm_slli_epi64
  - _mm_setzero_si128
  - _mm_set1_epi8
  - _mm_add_epi8
  - _mm_sub_epi8
  - _mm_add_epi64
  - _mm_sub_epi64
  - _mm_cmpeq_epi8
  - _mm_test_all_zeros
  - _mm_testz_si128
  - _mm_test_all_ones
  source_file: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/softaes/untrinsics.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: __untrinsics__
      pos:
        line_end: 11
        line_start: 10
        source_file: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/softaes/untrinsics.h
      type_or_value: '1'
    structs: []
    typedefs: []
    union:
    - fields:
      - name: b[16]
        type: uint8_t
      - name: w[4]
        type: uint32_t
      - name: q[2]
        type: uint64_t
      item_type: union
      name: __m128i
      pos:
        line_end: 26
        line_start: 22
        source_file: /src/pdns/pdns/dnsdistdist/ext/ipcrypt2/softaes/untrinsics.h
- function_names:
  - operator==(NullStruct /*unused*/) const
  - operator<(NullStruct /*unused*/) const
  - json11::dump
  - json11::dump
  - json11::dump
  - json11::dump
  - json11::dump
  - json11::dump
  - json11::dump
  - json11::Json::dump
  - json11::Value::Value
  - json11::Value::Value
  - json11::Value::type
  - json11::Value::equals
  - json11::Value::less
  - json11::Value::dump
  - json11::JsonDouble::number_value
  - json11::JsonDouble::int_value
  - json11::JsonDouble::equals
  - json11::JsonDouble::less
  - json11::JsonDouble::JsonDouble
  - json11::JsonInt::number_value
  - json11::JsonInt::int_value
  - json11::JsonInt::equals
  - json11::JsonInt::less
  - json11::JsonInt::JsonInt
  - json11::JsonBoolean::bool_value
  - json11::JsonBoolean::JsonBoolean
  - '&string_value() const override'
  - json11::JsonString::JsonString
  - json11::JsonString::JsonString
  - '&array_items() const override'
  - json11::JsonArray::JsonArray
  - json11::JsonArray::JsonArray
  - '&object_items() const override'
  - json11::JsonObject::JsonObject
  - json11::JsonObject::JsonObject
  - json11::JsonNull::JsonNull
  - json11::Statics
  - json11::statics
  - json11::static_null
  - json11::Json::Json
  - json11::Json::Json
  - json11::Json::Json
  - json11::Json::Json
  - json11::Json::Json
  - json11::Json::Json
  - json11::Json::Json
  - json11::Json::Json
  - json11::Json::Json
  - json11::Json::Json
  - json11::Json::Json
  - json11::Json::Json
  - json11::Json::type
  - json11::Json::number_value
  - json11::Json::int_value
  - json11::Json::bool_value
  - '& Json::string_value()               const'
  - '& Json::array_items()          const'
  - '& Json::object_items()    const'
  - '& Json::operator[] (size_t i)          const'
  - '& Json::operator[] (const string &key) const'
  - json11::JsonValue::number_value
  - json11::JsonValue::int_value
  - json11::JsonValue::bool_value
  - '&            JsonValue::string_value()              const'
  - '&      JsonValue::array_items()               const'
  - '& JsonValue::object_items()              const'
  - '&              JsonValue::operator[] (size_t)         const'
  - '&              JsonValue::operator[] (const string &) const'
  - '& JsonObject::operator[] (const string &key) const'
  - '& JsonArray::operator[] (size_t i) const'
  - Json::operator== (const Json &other) const
  - Json::operator< (const Json &other) const
  - json11::esc
  - json11::in_range
  - json11::fail
  - json11::fail
  - json11::consume_whitespace
  - json11::consume_comment
  - json11::consume_garbage
  - json11::get_next_token
  - json11::encode_utf8
  - json11::parse_string
  - json11::parse_number
  - json11::expect
  - json11::parse_json
  - json11::fail
  - json11::fail
  - json11::consume_whitespace
  - json11::consume_comment
  - json11::consume_garbage
  - json11::get_next_token
  - json11::encode_utf8
  - json11::parse_string
  - json11::parse_number
  - json11::expect
  - json11::parse_json
  - json11::Json::parse
  - json11::Json::parse_multi
  - json11::Json::has_shape
  - operator==(NullStruct /*unused*/) const
  - operator<(NullStruct /*unused*/) const
  - json11::dump
  - json11::dump
  - json11::dump
  - json11::dump
  - json11::dump
  - json11::dump
  - json11::dump
  - json11::Json::dump
  - json11::Value::Value
  - json11::Value::Value
  - json11::Value::type
  - json11::Value::equals
  - json11::Value::less
  - json11::Value::dump
  - json11::JsonDouble::number_value
  - json11::JsonDouble::int_value
  - json11::JsonDouble::equals
  - json11::JsonDouble::less
  - json11::JsonDouble::JsonDouble
  - json11::JsonInt::number_value
  - json11::JsonInt::int_value
  - json11::JsonInt::equals
  - json11::JsonInt::less
  - json11::JsonInt::JsonInt
  - json11::JsonBoolean::bool_value
  - json11::JsonBoolean::JsonBoolean
  - '&string_value() const override'
  - json11::JsonString::JsonString
  - json11::JsonString::JsonString
  - '&array_items() const override'
  - json11::JsonArray::JsonArray
  - json11::JsonArray::JsonArray
  - '&object_items() const override'
  - json11::JsonObject::JsonObject
  - json11::JsonObject::JsonObject
  - json11::JsonNull::JsonNull
  - json11::Statics
  - json11::statics
  - json11::static_null
  - json11::Json::Json
  - json11::Json::Json
  - json11::Json::Json
  - json11::Json::Json
  - json11::Json::Json
  - json11::Json::Json
  - json11::Json::Json
  - json11::Json::Json
  - json11::Json::Json
  - json11::Json::Json
  - json11::Json::Json
  - json11::Json::Json
  - json11::Json::type
  - json11::Json::number_value
  - json11::Json::int_value
  - json11::Json::bool_value
  - '& Json::string_value()               const'
  - '& Json::array_items()          const'
  - '& Json::object_items()    const'
  - '& Json::operator[] (size_t i)          const'
  - '& Json::operator[] (const string &key) const'
  - json11::JsonValue::number_value
  - json11::JsonValue::int_value
  - json11::JsonValue::bool_value
  - '&            JsonValue::string_value()              const'
  - '&      JsonValue::array_items()               const'
  - '& JsonValue::object_items()              const'
  - '&              JsonValue::operator[] (size_t)         const'
  - '&              JsonValue::operator[] (const string &) const'
  - '& JsonObject::operator[] (const string &key) const'
  - '& JsonArray::operator[] (size_t i) const'
  - Json::operator== (const Json &other) const
  - Json::operator< (const Json &other) const
  - json11::esc
  - json11::in_range
  - json11::fail
  - json11::fail
  - json11::consume_whitespace
  - json11::consume_comment
  - json11::consume_garbage
  - json11::get_next_token
  - json11::encode_utf8
  - json11::parse_string
  - json11::parse_number
  - json11::expect
  - json11::parse_json
  - json11::fail
  - json11::fail
  - json11::consume_whitespace
  - json11::consume_comment
  - json11::consume_garbage
  - json11::get_next_token
  - json11::encode_utf8
  - json11::parse_string
  - json11::parse_number
  - json11::expect
  - json11::parse_json
  - json11::Json::parse
  - json11::Json::parse_multi
  - json11::Json::has_shape
  source_file: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields: []
      item_type: struct
      name: NullStruct
      pos:
        line_end: 48
        line_start: 45
        source_file: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    - fields:
      - name: 'null'
        type: std::shared_ptr<JsonValue>
      - name: t
        type: std::shared_ptr<JsonValue>
      - name: f
        type: std::shared_ptr<JsonValue>
      - name: empty_string
        type: string
      - name: empty_vector
        type: vector<Json>
      - name: empty_map
        type: map<string, Json>
      item_type: struct
      name: Statics
      pos:
        line_end: 237
        line_start: 229
        source_file: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    - fields:
      - name: '&str'
        type: string
      - name: i
        type: size_t
      - name: '&err'
        type: string
      - name: failed
        type: bool
      - name: strategy
        type: JsonParse
      item_type: struct
      name: JsonParser
      pos:
        line_end: 739
        line_start: 352
        source_file: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    - fields:
      - name: '&str'
        type: string
      - name: i
        type: size_t
      - name: '&err'
        type: string
      - name: failed
        type: bool
      - name: strategy
        type: JsonParse
      item_type: struct
      name: JsonParser
      pos:
        line_end: 739
        line_start: 352
        source_file: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    - fields: []
      item_type: struct
      name: NullStruct
      pos:
        line_end: 48
        line_start: 45
        source_file: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    - fields:
      - name: 'null'
        type: std::shared_ptr<JsonValue>
      - name: t
        type: std::shared_ptr<JsonValue>
      - name: f
        type: std::shared_ptr<JsonValue>
      - name: empty_string
        type: string
      - name: empty_vector
        type: vector<Json>
      - name: empty_map
        type: map<string, Json>
      item_type: struct
      name: Statics
      pos:
        line_end: 237
        line_start: 229
        source_file: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    - fields:
      - name: '&str'
        type: string
      - name: i
        type: size_t
      - name: '&err'
        type: string
      - name: failed
        type: bool
      - name: strategy
        type: JsonParse
      item_type: struct
      name: JsonParser
      pos:
        line_end: 739
        line_start: 352
        source_file: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    - fields:
      - name: '&str'
        type: string
      - name: i
        type: size_t
      - name: '&err'
        type: string
      - name: failed
        type: bool
      - name: strategy
        type: JsonParse
      item_type: struct
      name: JsonParser
      pos:
        line_end: 739
        line_start: 352
        source_file: /src/pdns/pdns/dnsdistdist/ext/json11/json11.cpp
    typedefs: []
    union: []
- function_names:
  - json11::Json::Json
  - json11::Json::Json
  - json11::Json::Json
  - json11::Json::Json
  - json11::Json::is_null
  - json11::Json::is_number
  - json11::Json::is_bool
  - json11::Json::is_string
  - json11::Json::is_array
  - json11::Json::is_object
  - json11::Json::dump
  - json11::Json::parse
  - json11::Json::parse_multi
  - operator!= (const Json &rhs) const
  - operator<= (const Json &rhs) const
  - operator>  (const Json &rhs) const
  - operator>= (const Json &rhs) const
  - ~JsonValue()
  - json11::Json::Json
  - json11::Json::Json
  - json11::Json::Json
  - json11::Json::Json
  - json11::Json::is_null
  - json11::Json::is_number
  - json11::Json::is_bool
  - json11::Json::is_string
  - json11::Json::is_array
  - json11::Json::is_object
  - json11::Json::dump
  - json11::Json::parse
  - json11::Json::parse_multi
  - operator!= (const Json &rhs) const
  - operator<= (const Json &rhs) const
  - operator>  (const Json &rhs) const
  - operator>= (const Json &rhs) const
  - ~JsonValue()
  source_file: /src/pdns/pdns/dnsdistdist/ext/json11/json11.hpp
  types:
    enum:
    - enumerators:
      - name: STANDARD
      - name: COMMENTS
      item_type: enum
      name: JsonParse
      pos:
        line_end: 74
        line_start: 72
        source_file: /src/pdns/pdns/dnsdistdist/ext/json11/json11.hpp
    - enumerators:
      - name: NUL
      - name: NUMBER
      - name: BOOL
      - name: STRING
      - name: ARRAY
      - name: OBJECT
      item_type: enum
      name: Type
      pos:
        line_end: 83
        line_start: 81
        source_file: /src/pdns/pdns/dnsdistdist/ext/json11/json11.hpp
    - enumerators:
      - name: STANDARD
      - name: COMMENTS
      item_type: enum
      name: JsonParse
      pos:
        line_end: 74
        line_start: 72
        source_file: /src/pdns/pdns/dnsdistdist/ext/json11/json11.hpp
    - enumerators:
      - name: NUL
      - name: NUMBER
      - name: BOOL
      - name: STRING
      - name: ARRAY
      - name: OBJECT
      item_type: enum
      name: Type
      pos:
        line_end: 83
        line_start: 81
        source_file: /src/pdns/pdns/dnsdistdist/ext/json11/json11.hpp
    preproc_defs:
    - item_type: preproc_def
      name: noexcept
      pos:
        line_end: 62
        line_start: 61
        source_file: /src/pdns/pdns/dnsdistdist/ext/json11/json11.hpp
      type_or_value: throw()
    - item_type: preproc_def
      name: snprintf
      pos:
        line_end: 66
        line_start: 65
        source_file: /src/pdns/pdns/dnsdistdist/ext/json11/json11.hpp
      type_or_value: _snprintf_s
    structs: []
    typedefs:
    - item_type: typedef
      name: array
      pos:
        line_end: 86
        line_start: 86
        source_file: /src/pdns/pdns/dnsdistdist/ext/json11/json11.hpp
      type: vector<Json>
    - item_type: typedef
      name: object
      pos:
        line_end: 87
        line_start: 87
        source_file: /src/pdns/pdns/dnsdistdist/ext/json11/json11.hpp
      type: map<std::string, Json>
    - item_type: typedef
      name: shape
      pos:
        line_end: 203
        line_start: 203
        source_file: /src/pdns/pdns/dnsdistdist/ext/json11/json11.hpp
      type: initializer_list<std::pair<std::string, Type>>
    - item_type: typedef
      name: array
      pos:
        line_end: 86
        line_start: 86
        source_file: /src/pdns/pdns/dnsdistdist/ext/json11/json11.hpp
      type: vector<Json>
    - item_type: typedef
      name: object
      pos:
        line_end: 87
        line_start: 87
        source_file: /src/pdns/pdns/dnsdistdist/ext/json11/json11.hpp
      type: map<std::string, Json>
    - item_type: typedef
      name: shape
      pos:
        line_end: 203
        line_start: 203
        source_file: /src/pdns/pdns/dnsdistdist/ext/json11/json11.hpp
      type: initializer_list<std::pair<std::string, Type>>
    union: []
- function_names:
  - LuaContext
  - writeGlobalEq
  - LuaContext
  - '& operator=(LuaContext&& s) noexcept'
  - LuaContext
  - '& operator=(const LuaContext&)'
  - ~LuaContext() noexcept
  - ExecutionErrorException::ExecutionErrorException
  - SyntaxErrorException::SyntaxErrorException
  - WrongTypeException::WrongTypeException
  - LuaObject
  - LuaObject
  - ThreadID
  - ThreadID
  - '& operator=(ThreadID&& o)'
  - executeCode
  - executeCode
  - executeCode
  - executeCode
  - executeCode
  - executeCode
  - executeCode
  - executeCode
  - executeCode
  - executeCode
  - executeCode
  - executeCode
  - registerFunction
  - registerFunction
  - registerFunction
  - registerEqFunction
  - registerEqFunction
  - registerEqFunction
  - registerToStringFunction
  - registerToStringFunction
  - registerToStringFunction
  - unregisterFunction
  - registerMember
  - registerMember
  - registerMember
  - registerMember
  - registerMember
  - registerMember
  - registerMember
  - registerMember
  - registerMember
  - createThread
  - destroyThread
  - readVariable
  - readVariable
  - readVariable
  - readVariable
  - writeVariable
  - writeFunction
  - writeFunction
  - PushedObject
  - ~PushedObject()
  - '& operator=(const PushedObject&)'
  - PushedObject
  - '& operator=(PushedObject&& other)'
  - PushedObject
  - operator+(PushedObject&& other) &&
  - operator+=(PushedObject&& other)
  - getState
  - getNum
  - release
  - pop
  - pop
  - lookIntoStackTop
  - lookIntoStackTop
  - lookIntoStackTop
  - setTable
  - setTable
  - setTable
  - setTable
  - setTable
  - setTable
  - setTable
  - setTable
  - setTable
  - setTable
  - setTable
  - setTable
  - setTable
  - setTable
  - setTable
  - setTable
  - readTopAndPop
  - checkTypeRegistration
  - luaError
  - registerFunctionImpl
  - registerFunctionImpl
  - registerFunctionImpl
  - registerFunctionImpl
  - registerFunctionImpl
  - registerFunctionImpl
  - registerMemberImpl
  - registerMemberImpl
  - registerMemberImpl
  - registerMemberImpl
  - registerMemberImpl
  - registerMemberImpl
  - registerMemberImpl
  - registerMemberImpl
  - load
  - Reader
  - read
  - load
  - call
  - gettraceback
  - callRaw
  - push
  - push
  - read
  - test
  - readIntoFunction
  - readIntoFunction
  - readIntoFunction
  - ValueInRegistry
  - ~ValueInRegistry()
  - pop
  - ValueInRegistry
  - '& operator=(const ValueInRegistry&)'
  - "operator()(TParams&&... params)\n            -> decltype(function(param, std::forward<TParams>(params)...))"
  - "LuaContext::readTopAndPop<void>(lua_State* /*state*/, PushedObject /*obj*/)\n
    \   -> void"
  - operator()(TParams&&... params) const
  - LuaContext::LuaFunctionCaller<TRetValue (TParams...)>::LuaFunctionCaller
  - push
  - push
  - push
  - push
  - push
  - push
  - push
  - push
  - push
  - push
  - push
  - push
  - push
  - push
  - push
  - push
  - push
  - push
  - push
  - push
  - push
  - callback
  - callback2
  - callback2
  - push
  - push
  - push
  - push
  - operator()(TType value) noexcept
  - VariantWriter
  - push
  - push
  - push
  - push
  - push
  - push2
  - push2
  - push2
  - push2
  - read
  - read
  - read
  - read
  - read
  - read
  - read
  - read
  - read
  - read
  - read
  - read
  - read
  - read
  - read
  - read
  - read
  - variantRead
  - read
  - read
  - read
  - read
  source_file: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
  types:
    enum:
    - enumerators:
      - name: Globals
      item_type: enum
      name: Globals_t
      pos:
        line_end: 103
        line_start: 103
        source_file: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    - enumerators:
      - name: EmptyArray
      item_type: enum
      name: EmptyArray_t
      pos:
        line_end: 280
        line_start: 280
        source_file: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    - enumerators:
      - name: Metatable
      item_type: enum
      name: Metatable_t
      pos:
        line_end: 285
        line_start: 285
        source_file: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    - enumerators:
      - name: Registry
      item_type: enum
      name: RegistryTag
      pos:
        line_end: 838
        line_start: 838
        source_file: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    preproc_defs:
    - item_type: preproc_def
      name: __SANITIZE_THREAD__
      pos:
        line_end: 66
        line_start: 65
        source_file: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
      type_or_value: '1'
    - item_type: preproc_def
      name: ATTR_UNUSED
      pos:
        line_end: 75
        line_start: 74
        source_file: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
      type_or_value: __attribute__((unused))
    - item_type: preproc_def
      name: LUACONTEXT_GLOBAL_EQ
      pos:
        line_end: 80
        line_start: 79
        source_file: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
      type_or_value: '"e5ddced079fc405aa4937b386ca387d2"'
    - item_type: preproc_def
      name: LUACONTEXT_DEBUG_TRACEBACK
      pos:
        line_end: 81
        line_start: 80
        source_file: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
      type_or_value: '"8d143f0add7ad7fa323d0d1d12f3f114" // I would prefer a lightuserdata
        in the registry index'
    - item_type: preproc_def
      name: EQ_FUNCTION_NAME
      pos:
        line_end: 82
        line_start: 81
        source_file: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
      type_or_value: '"__eq"'
    - item_type: preproc_def
      name: TOSTRING_FUNCTION_NAME
      pos:
        line_end: 83
        line_start: 82
        source_file: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
      type_or_value: '"__tostring"'
    structs:
    - fields:
      - name: objectInRegistry
        type: std::shared_ptr<LuaContext::ValueInRegistry>
      item_type: struct
      name: LuaObject
      pos:
        line_end: 262
        line_start: 256
        source_file: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    - fields:
      - name: '* state'
        type: lua_State
      - name: threadInRegistry
        type: std::unique_ptr<ValueInRegistry>
      item_type: struct
      name: ThreadID
      pos:
        line_end: 275
        line_start: 267
        source_file: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    - fields:
      - name: '* state'
        type: lua_State
      - name: num
        type: int
      item_type: struct
      name: PushedObject
      pos:
        line_end: 827
        line_start: 805
        source_file: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    - fields: []
      item_type: struct
      name: tag
      pos:
        line_end: 835
        line_start: 835
        source_file: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    - fields:
      - name: '&           stream'
        type: std::istream
      - name: buffer
        type: std::array<char,512>
      item_type: struct
      name: Reader
      pos:
        line_end: 1381
        line_start: 1365
        source_file: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    - fields:
      - name: minSize
        type: int
      - name: maxSize
        type: int
      item_type: struct
      name: Pusher
      pos:
        line_end: 1737
        line_start: 1543
        source_file: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    - fields: []
      item_type: struct
      name: Reader
      pos:
        line_end: 1798
        line_start: 1764
        source_file: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    - fields:
      - name: '* lua'
        type: lua_State
      item_type: struct
      name: ValueInRegistry
      pos:
        line_end: 1876
        line_start: 1846
        source_file: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    - fields:
      - name: function
        type: TFunctionObject
      - name: param
        type: TFirstParamType
      item_type: struct
      name: Binder
      pos:
        line_end: 1890
        line_start: 1880
        source_file: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    - fields: []
      item_type: struct
      name: RemoveMemberPointerFunction
      pos:
        line_end: 1900
        line_start: 1900
        source_file: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    - fields: []
      item_type: struct
      name: FunctionTypeDetector
      pos:
        line_end: 1904
        line_start: 1904
        source_file: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    - fields: []
      item_type: struct
      name: FunctionArgumentsCounter
      pos:
        line_end: 1909
        line_start: 1909
        source_file: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    - fields: []
      item_type: struct
      name: IsOptional
      pos:
        line_end: 1913
        line_start: 1913
        source_file: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    - fields: []
      item_type: struct
      name: LuaContext::Tupleizer
      pos:
        line_end: 1936
        line_start: 1936
        source_file: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    - fields: []
      item_type: struct
      name: LuaContext::Tupleizer<std::tuple<Args...>>
      pos:
        line_end: 1938
        line_start: 1938
        source_file: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    - fields: []
      item_type: struct
      name: LuaContext::Tupleizer<void>
      pos:
        line_end: 1940
        line_start: 1940
        source_file: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    - fields: []
      item_type: struct
      name: LuaContext::FunctionTypeDetector<TRetValue (TParameters...)>
      pos:
        line_end: 1944
        line_start: 1944
        source_file: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    - fields: []
      item_type: struct
      name: LuaContext::FunctionTypeDetector<TObjectType*>
      pos:
        line_end: 1946
        line_start: 1946
        source_file: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    - fields: []
      item_type: struct
      name: LuaContext::RemoveMemberPointerFunction<TRetValue (TType::*)(TParameters...)>
      pos:
        line_end: 1950
        line_start: 1950
        source_file: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    - fields: []
      item_type: struct
      name: LuaContext::RemoveMemberPointerFunction<TRetValue (TType::*)(TParameters...)
        const>
      pos:
        line_end: 1952
        line_start: 1952
        source_file: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    - fields: []
      item_type: struct
      name: LuaContext::RemoveMemberPointerFunction<TRetValue (TType::*)(TParameters...)
        volatile>
      pos:
        line_end: 1954
        line_start: 1954
        source_file: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    - fields:
      - name: size
        type: int
      item_type: struct
      name: LuaContext::PusherTotalMinSize<TFirst, TTypes...>
      pos:
        line_end: 1960
        line_start: 1960
        source_file: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    - fields:
      - name: size
        type: int
      item_type: struct
      name: LuaContext::PusherTotalMinSize<>
      pos:
        line_end: 1962
        line_start: 1962
        source_file: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    - fields:
      - name: size
        type: int
      item_type: struct
      name: LuaContext::PusherTotalMaxSize<TFirst, TTypes...>
      pos:
        line_end: 1966
        line_start: 1966
        source_file: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    - fields:
      - name: size
        type: int
      item_type: struct
      name: LuaContext::PusherTotalMaxSize<>
      pos:
        line_end: 1968
        line_start: 1968
        source_file: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    - fields:
      - name: size
        type: int
      item_type: struct
      name: LuaContext::PusherMinSize<TFirst, TSecond, TTypes...>
      pos:
        line_end: 1979
        line_start: 1972
        source_file: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    - fields:
      - name: size
        type: int
      item_type: struct
      name: LuaContext::PusherMinSize<TFirst>
      pos:
        line_end: 1982
        line_start: 1982
        source_file: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    - fields:
      - name: size
        type: int
      item_type: struct
      name: LuaContext::PusherMaxSize<TFirst, TTypes...>
      pos:
        line_end: 1986
        line_start: 1986
        source_file: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    - fields:
      - name: size
        type: int
      item_type: struct
      name: LuaContext::PusherMaxSize<>
      pos:
        line_end: 1988
        line_start: 1988
        source_file: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    - fields:
      - name: min
        type: int
      - name: max
        type: int
      item_type: struct
      name: LuaContext::FunctionArgumentsCounter<TFirst, TParams...>
      pos:
        line_end: 1997
        line_start: 1992
        source_file: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    - fields:
      - name: min
        type: int
      - name: max
        type: int
      item_type: struct
      name: LuaContext::FunctionArgumentsCounter<>
      pos:
        line_end: 2002
        line_start: 1999
        source_file: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    - fields: []
      item_type: struct
      name: LuaContext::IsOptional<boost::optional<T>>
      pos:
        line_end: 2006
        line_start: 2006
        source_file: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    - fields: []
      item_type: struct
      name: LuaContext::IsOptional<std::optional<T>>
      pos:
        line_end: 2009
        line_start: 2009
        source_file: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    - fields:
      - name: minSize
        type: int
      - name: maxSize
        type: int
      item_type: struct
      name: LuaContext::Pusher<LuaContext::LuaObject>
      pos:
        line_end: 2058
        line_start: 2045
        source_file: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    - fields:
      - name: minSize
        type: int
      - name: maxSize
        type: int
      item_type: struct
      name: LuaContext::Pusher<bool>
      pos:
        line_end: 2070
        line_start: 2062
        source_file: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    - fields:
      - name: minSize
        type: int
      - name: maxSize
        type: int
      item_type: struct
      name: LuaContext::Pusher<std::string>
      pos:
        line_end: 2082
        line_start: 2074
        source_file: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    - fields:
      - name: minSize
        type: int
      - name: maxSize
        type: int
      item_type: struct
      name: LuaContext::Pusher<const char*>
      pos:
        line_end: 2094
        line_start: 2086
        source_file: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    - fields:
      - name: minSize
        type: int
      - name: maxSize
        type: int
      item_type: struct
      name: LuaContext::Pusher<const char[N]>
      pos:
        line_end: 2106
        line_start: 2098
        source_file: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    - fields:
      - name: minSize
        type: int
      - name: maxSize
        type: int
      item_type: struct
      name: LuaContext::Pusher<T, typename std::enable_if<std::is_floating_point<T>::value>::type>
      pos:
        line_end: 2118
        line_start: 2110
        source_file: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    - fields:
      - name: minSize
        type: int
      - name: maxSize
        type: int
      item_type: struct
      name: LuaContext::Pusher<T, typename std::enable_if<std::is_integral<T>::value>::type>
      pos:
        line_end: 2130
        line_start: 2122
        source_file: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    - fields:
      - name: minSize
        type: int
      - name: maxSize
        type: int
      item_type: struct
      name: LuaContext::Pusher<std::nullptr_t>
      pos:
        line_end: 2142
        line_start: 2134
        source_file: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    - fields:
      - name: minSize
        type: int
      - name: maxSize
        type: int
      item_type: struct
      name: LuaContext::Pusher<LuaContext::EmptyArray_t>
      pos:
        line_end: 2154
        line_start: 2146
        source_file: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    - fields:
      - name: minSize
        type: int
      - name: maxSize
        type: int
      item_type: struct
      name: LuaContext::Pusher<const std::type_info*>
      pos:
        line_end: 2166
        line_start: 2158
        source_file: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    - fields:
      - name: minSize
        type: int
      - name: maxSize
        type: int
      item_type: struct
      name: LuaContext::Pusher<LuaContext::ThreadID>
      pos:
        line_end: 2178
        line_start: 2170
        source_file: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    - fields:
      - name: minSize
        type: int
      - name: maxSize
        type: int
      item_type: struct
      name: LuaContext::Pusher<std::map<TKey,TValue>>
      pos:
        line_end: 2197
        line_start: 2182
        source_file: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    - fields:
      - name: minSize
        type: int
      - name: maxSize
        type: int
      item_type: struct
      name: LuaContext::Pusher<std::unordered_map<TKey,TValue,THash,TKeyEqual>>
      pos:
        line_end: 2216
        line_start: 2201
        source_file: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    - fields:
      - name: minSize
        type: int
      - name: maxSize
        type: int
      item_type: struct
      name: LuaContext::Pusher<std::vector<std::pair<TType1,TType2>>>
      pos:
        line_end: 2235
        line_start: 2220
        source_file: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    - fields:
      - name: minSize
        type: int
      - name: maxSize
        type: int
      item_type: struct
      name: LuaContext::Pusher<std::vector<TType>>
      pos:
        line_end: 2253
        line_start: 2239
        source_file: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    - fields:
      - name: minSize
        type: int
      - name: maxSize
        type: int
      item_type: struct
      name: LuaContext::Pusher<std::unique_ptr<TType>>
      pos:
        line_end: 2264
        line_start: 2257
        source_file: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    - fields:
      - name: minSize
        type: int
      - name: maxSize
        type: int
      item_type: struct
      name: LuaContext::Pusher<TEnum, typename std::enable_if<std::is_enum<TEnum>::value>::type>
      pos:
        line_end: 2284
        line_start: 2268
        source_file: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    - fields:
      - name: minSize
        type: int
      - name: maxSize
        type: int
      item_type: struct
      name: LuaContext::Pusher<TReturnType (TParameters...)>
      pos:
        line_end: 2487
        line_start: 2289
        source_file: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    - fields:
      - name: minSize
        type: int
      - name: maxSize
        type: int
      item_type: struct
      name: LuaContext::Pusher<TReturnType (*)(TParameters...)>
      pos:
        line_end: 2503
        line_start: 2491
        source_file: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    - fields:
      - name: minSize
        type: int
      - name: maxSize
        type: int
      item_type: struct
      name: LuaContext::Pusher<TReturnType (&)(TParameters...)>
      pos:
        line_end: 2519
        line_start: 2507
        source_file: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    - fields:
      - name: minSize
        type: int
      - name: maxSize
        type: int
      item_type: struct
      name: LuaContext::Pusher<std::function<TReturnType (TParameters...)>>
      pos:
        line_end: 2534
        line_start: 2523
        source_file: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    - fields:
      - name: minSize
        type: int
      - name: maxSize
        type: int
      item_type: struct
      name: LuaContext::Pusher<boost::variant<TTypes...>>
      pos:
        line_end: 2562
        line_start: 2538
        source_file: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    - fields:
      - name: '* state'
        type: lua_State
      - name: '& obj'
        type: PushedObject
      item_type: struct
      name: VariantWriter
      pos:
        line_end: 2561
        line_start: 2551
        source_file: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    - fields:
      - name: minSize
        type: int
      - name: maxSize
        type: int
      item_type: struct
      name: LuaContext::Pusher<std::variant<TTypes...>>
      pos:
        line_end: 2580
        line_start: 2567
        source_file: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    - fields:
      - name: minSize
        type: int
      - name: maxSize
        type: int
      item_type: struct
      name: LuaContext::Pusher<boost::optional<TType>>
      pos:
        line_end: 2600
        line_start: 2585
        source_file: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    - fields:
      - name: minSize
        type: int
      - name: maxSize
        type: int
      item_type: struct
      name: LuaContext::Pusher<std::optional<TType>>
      pos:
        line_end: 2620
        line_start: 2605
        source_file: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    - fields:
      - name: minSize
        type: int
      - name: maxSize
        type: int
      item_type: struct
      name: LuaContext::Pusher<std::tuple<TTypes...>>
      pos:
        line_end: 2662
        line_start: 2625
        source_file: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    - fields: []
      item_type: struct
      name: LuaContext::Reader<LuaContext::LuaObject>
      pos:
        line_end: 2679
        line_start: 2671
        source_file: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    - fields: []
      item_type: struct
      name: LuaContext::Reader<std::nullptr_t>
      pos:
        line_end: 2692
        line_start: 2683
        source_file: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    - fields: []
      item_type: struct
      name: "LuaContext::Reader<\n            TType,\n            typename std::enable_if<std::is_integral<TType>::value>::type\n
        \       >"
      pos:
        line_end: 2720
        line_start: 2696
        source_file: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    - fields: []
      item_type: struct
      name: "LuaContext::Reader<\n            TType,\n            typename std::enable_if<std::is_floating_point<TType>::value>::type\n
        \       >"
      pos:
        line_end: 2748
        line_start: 2724
        source_file: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    - fields: []
      item_type: struct
      name: LuaContext::Reader<bool>
      pos:
        line_end: 2761
        line_start: 2752
        source_file: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    - fields: []
      item_type: struct
      name: LuaContext::Reader<std::string>
      pos:
        line_end: 2788
        line_start: 2767
        source_file: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    - fields: []
      item_type: struct
      name: "LuaContext::Reader<\n            TType,\n            typename std::enable_if<std::is_enum<TType>::value>::type\n
        \       >"
      pos:
        line_end: 2804
        line_start: 2792
        source_file: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    - fields: []
      item_type: struct
      name: LuaContext::Reader<LuaContext::LuaFunctionCaller<TRetValue (TParameters...)>>
      pos:
        line_end: 2820
        line_start: 2808
        source_file: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    - fields: []
      item_type: struct
      name: LuaContext::Reader<std::function<TRetValue (TParameters...)>>
      pos:
        line_end: 2837
        line_start: 2824
        source_file: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    - fields: []
      item_type: struct
      name: LuaContext::Reader<std::vector<std::pair<TType1,TType2>>>
      pos:
        line_end: 2875
        line_start: 2841
        source_file: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    - fields: []
      item_type: struct
      name: LuaContext::Reader<std::map<TKey,TValue>>
      pos:
        line_end: 2913
        line_start: 2879
        source_file: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    - fields: []
      item_type: struct
      name: LuaContext::Reader<std::unordered_map<TKey,TValue,THash,TKeyEqual>>
      pos:
        line_end: 2951
        line_start: 2917
        source_file: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    - fields: []
      item_type: struct
      name: LuaContext::Reader<boost::optional<TType>>
      pos:
        line_end: 2970
        line_start: 2959
        source_file: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    - fields: []
      item_type: struct
      name: LuaContext::Reader<std::optional<TType>>
      pos:
        line_end: 2988
        line_start: 2975
        source_file: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    - fields: []
      item_type: struct
      name: LuaContext::Reader<boost::variant<TTypes...>>
      pos:
        line_end: 3037
        line_start: 2994
        source_file: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    - fields: []
      item_type: struct
      name: VariantReader
      pos:
        line_end: 3014
        line_start: 3002
        source_file: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    - fields: []
      item_type: struct
      name: VariantReader<TIterBegin, TIterEnd, typename std::enable_if<boost::mpl::distance<TIterBegin,
        TIterEnd>::type::value == 0>::type>
      pos:
        line_end: 3025
        line_start: 3018
        source_file: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    - fields: []
      item_type: struct
      name: LuaContext::Reader<std::variant<TTypes...>>
      pos:
        line_end: 3072
        line_start: 3042
        source_file: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    - fields: []
      item_type: struct
      name: LuaContext::Reader<std::tuple<>>
      pos:
        line_end: 3086
        line_start: 3079
        source_file: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    - fields: []
      item_type: struct
      name: "LuaContext::Reader<std::tuple<TFirst, TOthers...>,\n        typename
        std::enable_if<!LuaContext::IsOptional<TFirst>::value>::type       // TODO:
        replace by std::is_default_constructible when it works on every compiler\n
        \   >"
      pos:
        line_end: 3112
        line_start: 3089
        source_file: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    - fields: []
      item_type: struct
      name: "LuaContext::Reader<std::tuple<TFirst, TOthers...>,\n        typename
        std::enable_if<LuaContext::IsOptional<TFirst>::value>::type        // TODO:
        replace by std::is_default_constructible when it works on every compiler\n
        \   >"
      pos:
        line_end: 3140
        line_start: 3115
        source_file: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
    typedefs:
    - item_type: typedef
      name: RealDataType
      pos:
        line_end: 761
        line_start: 760
        source_file: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
      type: typename std::decay<typename std::tuple_element<sizeof...(TData) - 1,std::tuple<TData...>>::type>::type
    - item_type: typedef
      name: RealDataType
      pos:
        line_end: 786
        line_start: 785
        source_file: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
      type: typename std::decay<typename std::tuple_element<sizeof...(TData) - 1,std::tuple<TData...>>::type>::type
    - item_type: typedef
      name: DetectedFunctionType
      pos:
        line_end: 788
        line_start: 787
        source_file: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
      type: typename FunctionTypeDetector<RealDataType>::type
    - item_type: typedef
      name: RealReturnType
      pos:
        line_end: 1433
        line_start: 1432
        source_file: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
      type: typename Tupleizer<TReturnType>::type
    - item_type: typedef
      name: ReturnType
      pos:
        line_end: 1766
        line_start: 1765
        source_file: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
      type: typename std::conditional<std::is_pointer<TType>::value, TType, TType&>::type
    - item_type: typedef
      name: type
      pos:
        line_end: 1900
        line_start: 1900
        source_file: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
      type: void
    - item_type: typedef
      name: type
      pos:
        line_end: 1904
        line_start: 1904
        source_file: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
      type: typename RemoveMemberPointerFunction<decltype(&std::decay<TObjectType>::type::operator())>::type
    - item_type: typedef
      name: type
      pos:
        line_end: 1936
        line_start: 1936
        source_file: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
      type: tuple<T>
    - item_type: typedef
      name: type
      pos:
        line_end: 1938
        line_start: 1938
        source_file: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
      type: tuple<Args...>
    - item_type: typedef
      name: type
      pos:
        line_end: 1940
        line_start: 1940
        source_file: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
      type: tuple<>
    - item_type: typedef
      name: type(TParameters...)
      pos:
        line_end: 1944
        line_start: 1944
        source_file: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
      type: TRetValue
    - item_type: typedef
      name: type
      pos:
        line_end: 1946
        line_start: 1946
        source_file: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
      type: typename FunctionTypeDetector<TObjectType>::type
    - item_type: typedef
      name: type(TParameters...)
      pos:
        line_end: 1950
        line_start: 1950
        source_file: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
      type: TRetValue
    - item_type: typedef
      name: type(TParameters...)
      pos:
        line_end: 1952
        line_start: 1952
        source_file: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
      type: TRetValue
    - item_type: typedef
      name: type(TParameters...)
      pos:
        line_end: 1954
        line_start: 1954
        source_file: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
      type: TRetValue
    - item_type: typedef
      name: SubType
      pos:
        line_end: 1994
        line_start: 1993
        source_file: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
      type: FunctionArgumentsCounter
    - item_type: typedef
      name: RealType
      pos:
        line_end: 2271
        line_start: 2270
        source_file: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
      type: typename std::underlying_type<TEnum>::type
    - item_type: typedef
      name: RealType
      pos:
        line_end: 2275
        line_start: 2274
        source_file: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
      type: unsigned long
    - item_type: typedef
      name: LocalFunctionArgumentsCounter
      pos:
        line_end: 2296
        line_start: 2295
        source_file: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
      type: FunctionArgumentsCounter
    - item_type: typedef
      name: P
      pos:
        line_end: 2476
        line_start: 2475
        source_file: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
      type: Pusher
    - item_type: typedef
      name: SubPusher
      pos:
        line_end: 2495
        line_start: 2494
        source_file: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
      type: Pusher
    - item_type: typedef
      name: SubPusher
      pos:
        line_end: 2511
        line_start: 2510
        source_file: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
      type: Pusher
    - item_type: typedef
      name: SubPusher
      pos:
        line_end: 2527
        line_start: 2526
        source_file: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
      type: Pusher
    - item_type: typedef
      name: UnderlyingPusher
      pos:
        line_end: 2587
        line_start: 2586
        source_file: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
      type: Pusher
    - item_type: typedef
      name: UnderlyingPusher
      pos:
        line_end: 2607
        line_start: 2606
        source_file: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
      type: Pusher
    - item_type: typedef
      name: ElemType
      pos:
        line_end: 2641
        line_start: 2641
        source_file: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
      type: typename std::tuple_element<N,std::tuple<TTypes...>>::type
    - item_type: typedef
      name: ElemType
      pos:
        line_end: 2649
        line_start: 2649
        source_file: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
      type: typename std::tuple_element<N,std::tuple<TTypes...>>::type
    - item_type: typedef
      name: ReturnType
      pos:
        line_end: 2811
        line_start: 2810
        source_file: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
      type: LuaFunctionCaller
    - item_type: typedef
      name: ReturnType
      pos:
        line_end: 2997
        line_start: 2996
        source_file: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
      type: variant<TTypes...>
    - item_type: typedef
      name: MainVariantReader
      pos:
        line_end: 3029
        line_start: 3028
        source_file: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
      type: VariantReader
    - item_type: typedef
      name: ReturnType
      pos:
        line_end: 3096
        line_start: 3095
        source_file: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
      type: tuple<TFirst, TOthers...>
    - item_type: typedef
      name: ReturnType
      pos:
        line_end: 3122
        line_start: 3121
        source_file: /src/pdns/pdns/dnsdistdist/ext/luawrapper/include/LuaContext.hpp
      type: tuple<TFirst, TOthers...>
    union: []
- function_names:
  - LMDBLS::LSassertFixedHeaderSize
  - LMDBLS::LScheckHeaderAndGetSize
  - LMDBLS::LScheckHeaderAndGetSize
  - LMDBLS::LSisDeleted
  - LMDBLS::LSgetTimestamp
  - LMDBLS::LSassertFixedHeaderSize
  - LMDBLS::LScheckHeaderAndGetSize
  - LMDBLS::LScheckHeaderAndGetSize
  - LMDBLS::LSisDeleted
  - LMDBLS::LSgetTimestamp
  - MDBDbi::MDBDbi
  - MDBDbi::mdb_dbi_open
  - MDBEnv::MDBEnv
  - MDBEnv::incRWTX
  - MDBEnv::decRWTX
  - MDBEnv::getRWTX
  - getMDBEnv
  - MDBEnv::openDB
  - MDBRWTransactionImpl::MDBRWTransactionImpl
  - MDBRWTransactionImpl::openRWTransaction
  - MDBRWTransactionImpl::MDBRWTransactionImpl
  - MDBRWTransactionImpl::~MDBRWTransactionImpl()
  - MDBRWTransactionImpl::commit
  - MDBRWTransactionImpl::abort
  - MDBROTransactionImpl::MDBROTransactionImpl
  - MDBROTransactionImpl::openROTransaction
  - MDBROTransactionImpl::closeROCursors
  - MDBROTransactionImpl::MDBROTransactionImpl
  - MDBROTransactionImpl::~MDBROTransactionImpl()
  - MDBROTransactionImpl::abort
  - MDBROTransactionImpl::commit
  - MDBRWTransactionImpl::clear
  - MDBRWTransactionImpl::getRWCursor
  - MDBRWTransactionImpl::getCursor
  - MDBRWTransactionImpl::getRWTransaction
  - MDBRWTransactionImpl::getROTransaction
  - MDBEnv::getROTransaction
  - MDBEnv::getRWTransaction
  - MDBRWTransactionImpl::closeRWCursors
  - MDBROTransactionImpl::getCursor
  - MDBROTransactionImpl::getROCursor
  source_file: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: wp
        type: weak_ptr<MDBEnv>
      - name: flags
        type: int
      item_type: struct
      name: Value
      pos:
        line_end: 183
        line_start: 179
        source_file: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.cc
    typedefs: []
    union: []
- function_names:
  - MDBError
  - MDBDbi::MDBDbi
  - operator const MDB_dbi&() const
  - ~MDBEnv()
  - operator MDB_env*& ()
  - LMDBLS::LSheader::pdns_bswap64
  - LMDBLS::LSheader::LSheader
  - LMDBLS::LSheader::toString
  - LMDBLS::LSheader::getTimestamp
  - LMDBLS::LSheader::pdns_bswap64
  - LMDBLS::LSheader::LSheader
  - LMDBLS::LSheader::toString
  - LMDBLS::LSheader::getTimestamp
  - hostToNetworkByteOrder
  - networkToHostByteOrder
  - operator MDB_val&()
  - MDBOutVal::get
  - MDBOutVal::getNoStripHeader
  - MDBOutVal::get<std::string>() const
  - MDBOutVal::get<std::string_view>() const
  - MDBOutVal::get<std::string>() const
  - MDBOutVal::get<std::string_view>() const
  - MDBOutVal::getNoStripHeader<std::string>() const
  - MDBOutVal::getNoStripHeader<std::string_view>() const
  - MDBInVal::MDBInVal
  - MDBInVal::MDBInVal
  - MDBInVal::MDBInVal
  - MDBInVal::MDBInVal
  - MDBInVal::MDBInVal
  - MDBInVal::fromStruct
  - operator MDB_val&()
  - MDBInVal::MDBInVal
  - MDBInVal::get<std::string>() const
  - MDBROTransactionImpl::MDBROTransactionImpl
  - '&operator=(const MDBROTransactionImpl& src)'
  - MDBROTransactionImpl::MDBROTransactionImpl
  - '&operator=(MDBROTransactionImpl &&rhs)'
  - MDBROTransactionImpl::get
  - MDBROTransactionImpl::get
  - MDBROTransactionImpl::openDB
  - operator MDB_txn*()
  - operator bool() const
  - '&environment()'
  - MDBGenCursor::MDBGenCursor
  - MDBGenCursor::MDBGenCursor
  - MDBGenCursor::move_from
  - MDBGenCursor::MDBGenCursor
  - MDBGenCursor::MDBGenCursor
  - '&operator=(const MDBGenCursor &src)'
  - '&operator=(MDBGenCursor &&src) noexcept'
  - ~MDBGenCursor()
  - MDBGenCursor::skipDeleted
  - MDBGenCursor::get
  - MDBGenCursor::find
  - MDBGenCursor::prefix
  - MDBGenCursor::lower_bound
  - MDBGenCursor::_lower_bound
  - MDBGenCursor::nextprev
  - MDBGenCursor::next
  - MDBGenCursor::prev
  - MDBGenCursor::currentlast
  - MDBGenCursor::current
  - MDBGenCursor::last
  - MDBGenCursor::first
  - operator MDB_cursor*()
  - operator bool() const
  - MDBGenCursor::close
  - MDBROCursor::MDBROCursor
  - MDBROCursor::MDBROCursor
  - MDBROCursor::MDBROCursor
  - '& operator=(const MDBROCursor& src)'
  - '& operator=(MDBROCursor&& src)'
  - ~MDBROCursor()
  - MDBRWTransactionImpl::closeRORWCursors
  - MDBRWTransactionImpl::MDBRWTransactionImpl
  - MDBRWTransactionImpl::MDBRWTransactionImpl
  - '& operator=(const MDBRWTransactionImpl& rhs)'
  - '& operator=(MDBRWTransactionImpl&& rhs)'
  - MDBRWTransactionImpl::put_raw
  - MDBRWTransactionImpl::put
  - MDBRWTransactionImpl::put_header_in_place
  - MDBRWTransactionImpl::stringWithEmptyHeader
  - MDBRWTransactionImpl::put
  - MDBRWTransactionImpl::del
  - MDBRWTransactionImpl::get
  - MDBRWTransactionImpl::openDB
  - MDBRWCursor::MDBRWCursor
  - MDBRWCursor::MDBRWCursor
  - MDBRWCursor::MDBRWCursor
  - '&operator=(const MDBRWCursor &src)'
  - '&operator=(MDBRWCursor &&src)'
  - ~MDBRWCursor()
  - MDBRWCursor::put_raw
  - MDBRWCursor::put
  - MDBRWCursor::put_header_in_place
  - MDBRWCursor::put
  - MDBRWCursor::del
  source_file: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: StringView
      pos:
        line_end: 32
        line_start: 31
        source_file: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh
      type_or_value: string_view
    - item_type: preproc_def
      name: StringView
      pos:
        line_end: 34
        line_start: 33
        source_file: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh
      type_or_value: string
    structs:
    - fields:
      - name: d_mdbval
        type: MDB_val
      item_type: struct
      name: MDBOutVal
      pos:
        line_end: 222
        line_start: 206
        source_file: /src/pdns/pdns/dnsdistdist/ext/lmdb-safe/lmdb-safe.hh
    typedefs: []
    union: []
- function_names: []
  source_file: /src/pdns/pdns/dnsdistdist/ext/ipcrypt/ipcrypt.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: IPCRYPT_BYTES
      pos:
        line_end: 5
        line_start: 4
        source_file: /src/pdns/pdns/dnsdistdist/ext/ipcrypt/ipcrypt.h
      type_or_value: '4'
    - item_type: preproc_def
      name: IPCRYPT_KEYBYTES
      pos:
        line_end: 6
        line_start: 5
        source_file: /src/pdns/pdns/dnsdistdist/ext/ipcrypt/ipcrypt.h
      type_or_value: '16'
    structs: []
    typedefs: []
    union: []
- function_names:
  - ROTL
  - arx_fwd
  - arx_bwd
  - xor4
  - ipcrypt_encrypt
  - ipcrypt_decrypt
  source_file: /src/pdns/pdns/dnsdistdist/ext/ipcrypt/ipcrypt.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - SyncRes::AuthDomain::isAuth
  - SyncRes::AuthDomain::isForward
  - SyncRes::AuthDomain::shouldRecurse
  - '& getName() const'
  - SyncRes::setDefaultLogMode
  - SyncRes::addDontQuery
  - SyncRes::addDontQuery
  - SyncRes::clearDontQuery
  - SyncRes::addEDNSLocalSubnet
  - SyncRes::addEDNSRemoteSubnet
  - SyncRes::addEDNSDomain
  - SyncRes::clearEDNSLocalSubnets
  - SyncRes::clearEDNSRemoteSubnets
  - SyncRes::clearEDNSDomains
  - SyncRes::EDNSStatus
  - SyncRes::toString
  - SyncRes::setDomainMap
  - SyncRes::getDomainMap
  - SyncRes::setECSScopeZeroAddress
  - SyncRes::clearECSStats
  - SyncRes::setId
  - SyncRes::setId
  - SyncRes::setLogMode
  - SyncRes::doLog
  - SyncRes::setCacheOnly
  - SyncRes::setRefreshAlmostExpired
  - SyncRes::setQNameMinimization
  - SyncRes::setQMFallbackMode
  - SyncRes::getQMFallbackMode
  - SyncRes::setDoEDNS0
  - SyncRes::setDoDNSSEC
  - SyncRes::setDNSSECValidationRequested
  - SyncRes::isDNSSECValidationRequested
  - SyncRes::shouldValidate
  - SyncRes::setWantsRPZ
  - SyncRes::getWantsRPZ
  - SyncRes::getTrace
  - SyncRes::getQNameMinimization
  - SyncRes::setLuaEngine
  - SyncRes::wasVariable
  - SyncRes::wasOutOfBand
  - SyncRes::getNow
  - SyncRes::setNow
  - SyncRes::setInitialRequestId
  - SyncRes::setOutgoingProtobufServers
  - SyncRes::setFrameStreamServers
  - SyncRes::setAsyncCallback
  - SyncRes::getValidationState
  - SyncRes::getDNSSECLimitHit
  - SyncRes::setQueryReceivedOverTCP
  - SyncRes::isUnsupported
  - SyncRes::eventTraceEnabled
  - SyncRes::eventTraceEnabledOnly
  - operator<(const GetBestNSAnswer& bestAnswer) const
  - SyncRes::setUpdatingRootNS
  - SyncRes::getPrefix
  - PacketID
  - operator<(const PacketID& /* b */) const
  - '& operator<<(ostream& ostr, const PacketID& pid)'
  - '& operator<<(ostream& ostr, const shared_ptr<PacketID>& pid)'
  - operator()(const std::shared_ptr<PacketID>& lhs, const std::shared_ptr<PacketID>&
    rhs) const
  - operator()(const std::shared_ptr<PacketID>& lhs, const std::shared_ptr<PacketID>&
    rhs) const
  - TCPConnection::TCPConnection
  - '& operator=(const TCPConnection&)'
  - TCPConnection::TCPConnection
  - '& operator=(TCPConnection&&)'
  - TCPConnection::getFD
  - TCPConnection::setDropOnIdle
  - TCPConnection::isDropOnIdle
  - TCPConnection::getCurrentConnections
  - ImmediateServFailException::ImmediateServFailException
  - '& operator+=(const ThreadTimes& rhs)'
  source_file: /src/pdns/pdns/recursordist/syncres.hh
  types:
    enum:
    - enumerators:
      - name: LogNone
      - name: Log
      - name: Store
      item_type: enum
      name: LogMode
      pos:
        line_end: 88
        line_start: 83
        source_file: /src/pdns/pdns/recursordist/syncres.hh
    - enumerators:
      - name: 'No'
      - name: 'Yes'
      - name: DNSSEC
      item_type: enum
      name: HardenNXD
      pos:
        line_end: 96
        line_start: 91
        source_file: /src/pdns/pdns/recursordist/syncres.hh
    - enumerators:
      - name: EDNSOK
        value: '0'
      - name: NOEDNS
        value: '2'
      - name: EDNSIGNORANT
        value: '1'
      item_type: enum
      name: EDNSMode
      pos:
        line_end: 238
        line_start: 233
        source_file: /src/pdns/pdns/recursordist/syncres.hh
    - enumerators:
      - name: None
      - name: ServerDown
      - name: PermanentError
      - name: Timeout
      - name: ParseError
      - name: RCodeServFail
      - name: RCodeRefused
      - name: RCodeOther
      - name: TCPTruncate
      - name: Lame
      item_type: enum
      name: ThrottleReason
      pos:
        line_end: 274
        line_start: 262
        source_file: /src/pdns/pdns/recursordist/syncres.hh
    - enumerators:
      - name: DontStop
      - name: Stop
      - name: Stopped
      item_type: enum
      name: StopAtDelegation
      pos:
        line_end: 641
        line_start: 636
        source_file: /src/pdns/pdns/recursordist/syncres.hh
    - enumerators:
      - name: DoingRead
      - name: DoingWrite
      item_type: enum
      name: TCPAction
      pos:
        line_end: 784
        line_start: 780
        source_file: /src/pdns/pdns/recursordist/syncres.hh
    - enumerators:
      - name: PROXYPROTOCOLHEADER
      - name: BYTE1
      - name: DONE
      - name: GETQUESTION
      - name: BYTE0
      item_type: enum
      name: stateenum
      pos:
        line_end: 916
        line_start: 909
        source_file: /src/pdns/pdns/recursordist/syncres.hh
    preproc_defs: []
    structs:
    - fields:
      - name: extendedError
        type: std::optional<EDNSExtendedError>
      - name: state
        type: vState
      item_type: struct
      name: Context
      pos:
        line_end: 102
        line_start: 98
        source_file: /src/pdns/pdns/recursordist/syncres.hh
    - fields:
      - name: domainmap
        type: std::shared_ptr<domainmap_t>
      item_type: struct
      name: ThreadLocalStorage
      pos:
        line_end: 155
        line_start: 152
        source_file: /src/pdns/pdns/recursordist/syncres.hh
    - fields:
      - name: address
        type: ComboAddress
      - name: ttd
        type: time_t
      - name: mode
        type: "enum EDNSMode : uint8_t\n    {\n      EDNSOK = 0,\n      EDNSIGNORANT
          = 1,\n      NOEDNS = 2\n    }"
      item_type: struct
      name: EDNSStatus
      pos:
        line_end: 249
        line_start: 227
        source_file: /src/pdns/pdns/recursordist/syncres.hh
    - fields:
      - name: qname
        type: DNSName
      - name: bestns
        type: set<pair<DNSName, DNSName>>
      - name: qtype
        type: uint8_t
      item_type: struct
      name: GetBestNSAnswer
      pos:
        line_end: 633
        line_start: 624
        source_file: /src/pdns/pdns/recursordist/syncres.hh
    - fields:
      - name: remote
        type: ComboAddress
      - name: domain
        type: DNSName
      - name: inMSG
        type: PacketBuffer
      - name: outMSG
        type: PacketBuffer
      - name: authReqChain
        type: chain_t
      - name: tcphandler
        type: shared_ptr<TCPIOHandler>
      - name: creationTime
        type: timeval
      - name: ecsSubnet
        type: std::optional<Netmask>
      - name: inPos
        type: string::size_type
      - name: inWanted
        type: size_t
      - name: outPos
        type: string::size_type
      - name: nearMisses
        type: uint32_t
      - name: fd
        type: int
      - name: tcpsock
        type: int
      - name: closed
        type: bool
      - name: inIncompleteOkay
        type: bool
      - name: id
        type: uint16_t
      - name: type
        type: uint16_t
      - name: highState
        type: TCPAction
      - name: lowState
        type: IOState
      item_type: struct
      name: PacketID
      pos:
        line_end: 822
        line_start: 786
        source_file: /src/pdns/pdns/recursordist/syncres.hh
    - fields: []
      item_type: struct
      name: PacketIDCompare
      pos:
        line_end: 852
        line_start: 839
        source_file: /src/pdns/pdns/recursordist/syncres.hh
    - fields: []
      item_type: struct
      name: PacketIDBirthdayCompare
      pos:
        line_end: 866
        line_start: 854
        source_file: /src/pdns/pdns/recursordist/syncres.hh
    - fields:
      - name: record_count
        type: int
      - name: negative_record_count
        type: int
      - name: packet_count
        type: int
      item_type: struct
      name: WipeCacheResult
      pos:
        line_end: 989
        line_start: 984
        source_file: /src/pdns/pdns/recursordist/syncres.hh
    - fields:
      - name: msec
        type: uint64_t
      - name: times
        type: vector<uint64_t>
      item_type: struct
      name: ThreadTimes
      pos:
        line_end: 1004
        line_start: 995
        source_file: /src/pdns/pdns/recursordist/syncres.hh
    typedefs: []
    union: []
- function_names:
  - PrefixDashNumberCompare::prefixAndTrailingNum
  - PrefixDashNumberCompare::operator()(const std::string& lhs, const std::string&
    rhs) const
  - isStatDisabled
  - disableStat
  - disableStats
  - addGetStat
  - addGetStat
  - addGetStat
  - getPrometheusName
  - getDynMetric
  - get
  - getStatByName
  - getAllStatsMap
  - getAllStats
  - doGet
  - doGetParameter
  - doGetDefaultParameter
  - getfd
  - dumpAggressiveNSECCache
  - pleaseDumpCookiesMap
  - pleaseDumpEDNSMap
  - pleaseDumpNSSpeeds
  - pleaseDumpThrottleMap
  - pleaseDumpFailedServers
  - pleaseDumpSavedParentNSSets
  - pleaseDumpNonResolvingNS
  - pleaseDumpDoTProbeMap
  - doDumpToFile
  - doDumpCache
  - doDumpRPZ
  - doWipeCache
  - setBothYamlAndOldStyleInt
  - doSetCarbonServer
  - doSetDnssecLogBogus
  - doAddNTA
  - doClearNTA
  - getNTAs
  - doAddTA
  - doClearTA
  - getTAs
  - setMinimumTTL
  - setMinimumECSTTL
  - setMaxCacheEntries
  - setMaxPacketCacheEntries
  - setAggrNSECCacheSize
  - getSysTimeMsec
  - getUserTimeMsec
  - pleaseGetThreadCPUMsec
  - doGetThreadCPUMsec
  - pleaseGetProxyMappingStats
  - pleaseGetRemoteLoggerStats
  - doGetProxyMappingStats
  - pleaseGetOutgoingRemoteLoggerStats
  - pleaseGetFramestreamLoggerStats
  - pleaseGetNODFramestreamLoggerStats
  - remoteLoggerStats
  - getRemoteLoggerStats
  - pleaseGetCurrentQueries
  - doCurrentQueries
  - getNegCacheSize
  - pleaseGetConcurrentQueries
  - getConcurrentQueries
  - doGetCacheSize
  - doGetCacheBytes
  - doGetMallocated
  - toStatsMap
  - toStatsMap
  - toAuthRCodeStatsMap
  - toCPUStatsMap
  - toRPZStatsMap
  - toProxyMappingStatsMap
  - toRemoteLoggerStatsMap
  - registerAllStats1
  - registerAllStats
  - clearLuaScript
  - doExitGeneric
  - doExit
  - doExitNicely
  - pleaseGetQueryRing
  - pleaseGetServfailQueryRing
  - pleaseGetBogusQueryRing
  - pleaseGetRemotes
  - pleaseGetServfailRemotes
  - pleaseGetBogusRemotes
  - pleaseGetLargeAnswerRemotes
  - pleaseGetTimeouts
  - doGenericTopRemotes
  - getRegisteredName
  - nopFilter
  - doGenericTopQueries
  - nopFunction
  - getDontThrottleNames
  - getDontThrottleNetmasks
  - addDontThrottleNames
  - addDontThrottleNetmasks
  - clearDontThrottleNames
  - clearDontThrottleNetmasks
  - setEventTracing
  - pleaseSupplantProxyMapping
  - pleaseSupplantOTConditions
  - updateOTConditions
  - help
  - activateLua
  - luaconfig
  - luaconfig1
  - reloadACLs
  - reloadZoneConfigurationWithSysResolveReset
  - RecursorControlParser::getAnswer
  source_file: /src/pdns/pdns/recursordist/rec_channel_rec.cc
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: d_ptr
        type: std::unique_ptr<std::atomic<unsigned long>>
      - name: d_prometheusName
        type: std::string
      - name: d_prometheusType
        type: std::optional<PrometheusMetricType>
      - name: d_prometheusDescr
        type: std::optional<string>
      item_type: struct
      name: dynmetrics
      pos:
        line_end: 111
        line_start: 105
        source_file: /src/pdns/pdns/recursordist/rec_channel_rec.cc
    typedefs: []
    union:
    - fields:
      - name: hdr
        type: struct cmsghdr
      - name: buf
        type: std::array<unsigned char, CMSG_SPACE(sizeof(int))>
      item_type: union
      name: cmsgbuf
      pos:
        line_end: 393
        line_start: 389
        source_file: /src/pdns/pdns/recursordist/rec_channel_rec.cc
- function_names: []
  source_file: /src/pdns/pdns/recursordist/capabilities.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/pdns/pdns/recursordist/ws-api.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - makeEDNSPaddingOptString
  source_file: /src/pdns/pdns/recursordist/ednspadding.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - testAny
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  source_file: /src/pdns/pdns/recursordist/test-protozero-trace.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - doSomething
  - BOOST_AUTO_TEST_CASE
  - operator<(const MTKey& /* b */) const
  - operator()(const std::shared_ptr<MTKey>& lhs, const std::shared_ptr<MTKey>& rhs)
    const
  - doSomethingKey
  - BOOST_AUTO_TEST_CASE
  - doAlmostStackoverflow
  - BOOST_AUTO_TEST_CASE
  - willThrow
  - BOOST_AUTO_TEST_CASE
  source_file: /src/pdns/pdns/recursordist/test-mtasker.cc
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: key
        type: int
      - name: ptr
        type: shared_ptr<int>
      item_type: struct
      name: MTKey
      pos:
        line_end: 60
        line_start: 50
        source_file: /src/pdns/pdns/recursordist/test-mtasker.cc
    - fields: []
      item_type: struct
      name: MTKeyCompare
      pos:
        line_end: 68
        line_start: 62
        source_file: /src/pdns/pdns/recursordist/test-mtasker.cc
    typedefs: []
    union: []
- function_names:
  - BOOST_AUTO_TEST_CASE
  - makeFile
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  source_file: /src/pdns/pdns/recursordist/test-rpzloader_cc.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - EDNSCookiesOpt
  - size
  - isWellFormed
  - getServer
  - getClient
  source_file: /src/pdns/pdns/recursordist/ednscookies.hh
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: EDNSCookieSecretSize
        type: size_t
      - name: EDNSCookieOptSize
        type: size_t
      - name: makeFromString(const std::string& option)
        type: bool
      - name: makeFromString(const char* option, unsigned int len)
        type: bool
      - name: isValid(const std::string& secret, const ComboAddress& source) const
        type: bool
      - name: makeClientCookie()
        type: void
      - name: makeServerCookie(const std::string& secret, const ComboAddress& source)
        type: bool
      - name: makeOptString() const
        type: std::string
      - name: toDisplayString() const
        type: std::string
      - name: shouldRefresh() const
        type: bool
      - name: client
        type: std::string
      - name: server
        type: std::string
      - name: getEDNSCookiesOptFromString(const char* option, unsigned int len)
        type: void
      item_type: struct
      name: EDNSCookiesOpt
      pos:
        line_end: 77
        line_start: 27
        source_file: /src/pdns/pdns/recursordist/ednscookies.hh
    typedefs: []
    union: []
- function_names:
  - bf::stableBF::stableBF
  - bf::stableBF::stableBF
  - bf::stableBF::add
  - bf::stableBF::test
  - bf::stableBF::testAndAdd
  - bf::stableBF::dump
  - bf::stableBF::restore
  - bf::stableBF::charPtr
  - bf::stableBF::charPtr
  - bf::stableBF::optimalK
  - bf::stableBF::decrement
  - bf::stableBF::swap
  - bf::stableBF::hash
  - bf::stableBF::stableBF
  - bf::stableBF::stableBF
  - bf::stableBF::add
  - bf::stableBF::test
  - bf::stableBF::testAndAdd
  - bf::stableBF::dump
  - bf::stableBF::restore
  - bf::stableBF::charPtr
  - bf::stableBF::charPtr
  - bf::stableBF::optimalK
  - bf::stableBF::decrement
  - bf::stableBF::swap
  - bf::stableBF::hash
  source_file: /src/pdns/pdns/recursordist/stable-bloom.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - PersistentSBF::remove_tmp_files
  - PersistentSBF::init
  - PersistentSBF::setCacheDir
  - PersistentSBF::snapshotCurrent
  - NODDB::housekeepingThread
  - NODDB::isNewDomain
  - NODDB::isNewDomain
  - NODDB::isNewDomainWithParent
  - NODDB::isNewDomainWithParent
  - NODDB::addDomain
  - NODDB::addDomain
  - UniqueResponseDB::isUniqueResponse
  - UniqueResponseDB::addResponse
  - UniqueResponseDB::housekeepingThread
  source_file: /src/pdns/pdns/recursordist/nod.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/pdns/pdns/recursordist/ednspadding.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - RCode::to_s
  - RCode::to_short_s
  - RCode::from_short
  - ERCode::to_s
  - ERCode::to_short_s
  - ERCode::from_short
  - Opcode::to_s
  - Opcode::from_lowercase_string
  - hashQuestion
  - DNSResourceRecord::placeString
  source_file: /src/pdns/pdns/recursordist/dns.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - toString
  - getSupport
  - setSupport
  - supported
  source_file: /src/pdns/pdns/recursordist/rec-cookiestore.hh
  types:
    enum:
    - enumerators:
      - name: Unsupported
      - name: Supported
      - name: Probing
      item_type: enum
      name: Support
      pos:
        line_end: 58
        line_start: 53
        source_file: /src/pdns/pdns/recursordist/rec-cookiestore.hh
    preproc_defs: []
    structs:
    - fields:
      - name: d_address
        type: ComboAddress
      - name: d_localaddress
        type: ComboAddress
      - name: d_cookie
        type: EDNSCookiesOpt
      - name: d_lastused
        type: time_t
      - name: d_support
        type: Support
      item_type: struct
      name: CookieEntry
      pos:
        line_end: 94
        line_start: 51
        source_file: /src/pdns/pdns/recursordist/rec-cookiestore.hh
    typedefs: []
    union: []
- function_names:
  - getServerDetail
  - apiDiscovery
  - apiDiscoveryV1
  - apiServer
  - apiServerDetail
  - shouldBeRedacted
  - apiServerConfig
  - apiServerStatistics
  - apiNameToDNSName
  - apiNameToZoneName
  - apiZoneIdToName
  - encodeName
  - apiZoneNameToId
  - apiNameToId
  - apiCheckNameAllowedCharacters
  - apiCheckQNameAllowedCharacters
  source_file: /src/pdns/pdns/recursordist/ws-api.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs:
    - item_type: typedef
      name: stat_items_t
      pos:
        line_end: 165
        line_start: 165
        source_file: /src/pdns/pdns/recursordist/ws-api.cc
      type: map
    union: []
- function_names:
  - loggerBackend
  - init_unit_test
  - main
  source_file: /src/pdns/pdns/recursordist/testrunner.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/pdns/pdns/recursordist/validate-recursor.hh
  types:
    enum:
    - enumerators:
      - name: 'Off'
      - name: Process
      - name: ValidateForLog
      - name: ProcessNoValidate
      - name: ValidateAll
      item_type: enum
      name: DNSSECMode
      pos:
        line_end: 40
        line_start: 33
        source_file: /src/pdns/pdns/recursordist/validate-recursor.hh
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - Logger::setFacility
  - Logger::setFlag
  - Logger::disableSyslog
  - Logger::setTimestamps
  - Logger::setPrefixed
  - Logger::resetFlags
  - '& operator<<(const QType& qtype)'
  - '& operator<<(const QClass& qclass)'
  - '& operator<<(const T& i)'
  - DLOG
  - DLOG
  - VLOG
  - VLOG_NO_PREFIX
  source_file: /src/pdns/pdns/recursordist/logger.hh
  types:
    enum:
    - enumerators:
      - name: All
        value: '32767'
      - name: Warning
        value: LOG_WARNING
      - name: Critical
        value: LOG_CRIT
      - name: Alert
        value: LOG_ALERT
      - name: Error
        value: LOG_ERR
      - name: Notice
        value: LOG_NOTICE
      - name: Info
        value: LOG_INFO
      - name: Debug
        value: LOG_DEBUG
      - name: None
        value: '-1'
      item_type: enum
      name: Urgency
      pos:
        line_end: 53
        line_start: 42
        source_file: /src/pdns/pdns/recursordist/logger.hh
    preproc_defs:
    - item_type: preproc_def
      name: g_log
      pos:
        line_end: 165
        line_start: 164
        source_file: /src/pdns/pdns/recursordist/logger.hh
      type_or_value: getLogger()
    structs:
    - fields:
      - name: d_output
        type: string
      - name: d_urgency
        type: Urgency
      item_type: struct
      name: PerThread
      pos:
        line_end: 146
        line_start: 142
        source_file: /src/pdns/pdns/recursordist/logger.hh
    - fields:
      - name: prefix
        type: string
      - name: start
        type: timeval
      - name: v
        type: std::variant<std::reference_wrapper<Logger>, std::reference_wrapper<ostringstream>>
      item_type: struct
      name: LogVariant
      pos:
        line_end: 182
        line_start: 176
        source_file: /src/pdns/pdns/recursordist/logger.hh
    typedefs: []
    union: []
- function_names:
  - MallocTracer::makeBacktrace
  - malloc
  - free
  - MallocTracer::malloc
  - MallocTracer::free
  - MallocTracer::topAllocators
  - MallocTracer::topAllocatorsString
  - MallocTracer::clearAllocators
  source_file: /src/pdns/pdns/recursordist/malloctrace.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - checkBasicMessage1
  - checkBasicMessage2
  - checkBasicMessage3
  - checkBasicMessage4
  - checkBasicMessage5
  - BOOST_AUTO_TEST_CASE
  source_file: /src/pdns/pdns/recursordist/test-secpoll_cc.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - ReadWriteLock::ReadWriteLock
  - ~ReadWriteLock()
  - ReadWriteLock::ReadWriteLock
  - ReadWriteLock::ReadWriteLock
  - '& operator=(ReadWriteLock&&)'
  - '& operator=(const ReadWriteLock& rhs)'
  - '& getLock()'
  - ReadLock::ReadLock
  - ReadLock::ReadLock
  - ~ReadLock()
  - ReadLock::ReadLock
  - '& operator=(const ReadLock& rhs)'
  - '& operator=(ReadLock&&)'
  - ReadLock::ReadLock
  - ReadLock::ReadLock
  - WriteLock::WriteLock
  - WriteLock::WriteLock
  - ~WriteLock()
  - WriteLock::WriteLock
  - '& operator=(const WriteLock& rhs)'
  - '& operator=(WriteLock&&)'
  - WriteLock::WriteLock
  - WriteLock::WriteLock
  - TryReadLock::TryReadLock
  - TryReadLock::TryReadLock
  - ~TryReadLock()
  - TryReadLock::TryReadLock
  - TryReadLock::TryReadLock
  - '& operator=(const TryReadLock& rhs)'
  - '& operator=(TryReadLock&&)'
  - TryReadLock::gotIt
  - TryReadLock::TryReadLock
  - TryWriteLock::TryWriteLock
  - TryWriteLock::TryWriteLock
  - ~TryWriteLock()
  - TryWriteLock::TryWriteLock
  - TryWriteLock::TryWriteLock
  - '& operator=(const TryWriteLock& rhs)'
  - '& operator=(TryWriteLock&&)'
  - TryWriteLock::gotIt
  - TryWriteLock::TryWriteLock
  - LockGuardedHolder::LockGuardedHolder
  - '& operator*() const noexcept'
  - '* operator->() const noexcept'
  - LockGuardedTryHolder::LockGuardedTryHolder
  - '& operator*() const'
  - '* operator->() const'
  - operator bool() const noexcept
  - LockGuardedTryHolder::owns_lock
  - LockGuardedTryHolder::lock
  - LockGuarded::LockGuarded
  - LockGuarded::LockGuarded
  - LockGuarded::LockGuarded
  - LockGuarded::try_lock
  - LockGuarded::lock
  - LockGuarded::read_only_lock
  - RecursiveLockGuardedHolder::RecursiveLockGuardedHolder
  - '& operator*() const noexcept'
  - '* operator->() const noexcept'
  - RecursiveLockGuardedTryHolder::RecursiveLockGuardedTryHolder
  - '& operator*() const'
  - '* operator->() const'
  - operator bool() const noexcept
  - RecursiveLockGuardedTryHolder::owns_lock
  - RecursiveLockGuardedTryHolder::lock
  - RecursiveLockGuarded::RecursiveLockGuarded
  - RecursiveLockGuarded::RecursiveLockGuarded
  - RecursiveLockGuarded::RecursiveLockGuarded
  - RecursiveLockGuarded::try_lock
  - RecursiveLockGuarded::lock
  - RecursiveLockGuarded::read_only_lock
  - SharedLockGuardedHolder::SharedLockGuardedHolder
  - '& operator*() const noexcept'
  - '* operator->() const noexcept'
  - SharedLockGuardedTryHolder::SharedLockGuardedTryHolder
  - '& operator*() const'
  - '* operator->() const'
  - operator bool() const noexcept
  - SharedLockGuardedTryHolder::owns_lock
  - SharedLockGuardedNonExclusiveHolder::SharedLockGuardedNonExclusiveHolder
  - '& operator*() const noexcept'
  - '* operator->() const noexcept'
  - SharedLockGuardedNonExclusiveTryHolder::SharedLockGuardedNonExclusiveTryHolder
  - '& operator*() const'
  - '* operator->() const'
  - operator bool() const noexcept
  - SharedLockGuardedNonExclusiveTryHolder::owns_lock
  - SharedLockGuarded::SharedLockGuarded
  - SharedLockGuarded::SharedLockGuarded
  - SharedLockGuarded::SharedLockGuarded
  - SharedLockGuarded::try_write_lock
  - SharedLockGuarded::write_lock
  - SharedLockGuarded::try_read_lock
  - SharedLockGuarded::read_lock
  source_file: /src/pdns/pdns/recursordist/lock.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/pdns/pdns/recursordist/rpzloader.hh
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: zoneXFRParams
        type: ZoneXFRParams
      - name: defpol
        type: std::optional<DNSFilterEngine::Policy>
      - name: defcontent
        type: std::string
      - name: defpolOverrideLocal
        type: bool
      - name: maxTTL
        type: uint32_t
      - name: seedFileName
        type: std::string
      - name: dumpZoneFileName
        type: std::string
      - name: polName
        type: std::string
      - name: tags
        type: std::set<std::string>
      - name: extendedErrorCode
        type: uint32_t
      - name: extendedErrorExtra
        type: std::string
      - name: includeSOA
        type: bool
      - name: ignoreDuplicates
        type: bool
      - name: wipePacketCache
        type: bool
      item_type: struct
      name: RPZTrackerParams
      pos:
        line_end: 46
        line_start: 30
        source_file: /src/pdns/pdns/recursordist/rpzloader.hh
    - fields:
      - name: d_failedTransfers
        type: std::atomic<uint64_t>
      - name: d_successfulTransfers
        type: std::atomic<uint64_t>
      - name: d_fullTransfers
        type: std::atomic<uint64_t>
      - name: d_numberOfRecords
        type: std::atomic<uint64_t>
      - name: d_lastUpdate
        type: std::atomic<time_t>
      - name: d_serial
        type: std::atomic<uint32_t>
      item_type: struct
      name: rpzStats
      pos:
        line_end: 59
        line_start: 51
        source_file: /src/pdns/pdns/recursordist/rpzloader.hh
    typedefs: []
    union: []
- function_names: []
  source_file: /src/pdns/pdns/recursordist/rec-snmp.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  source_file: /src/pdns/pdns/recursordist/test-credentials_cc.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - generateTSIGQuery
  - checkTSIG
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  source_file: /src/pdns/pdns/recursordist/test-tsig.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - operator==(const ProxyProtocolValue& rhs) const
  source_file: /src/pdns/pdns/recursordist/proxy-protocol.hh
  types:
    enum:
    - enumerators:
      - name: PP_TLV_ALPN
        value: '0x01'
      - name: PP_TLV_SSL
        value: '0x20'
      item_type: enum
      name: Types
      pos:
        line_end: 36
        line_start: 36
        source_file: /src/pdns/pdns/recursordist/proxy-protocol.hh
    preproc_defs: []
    structs:
    - fields:
      - name: content
        type: std::string
      - name: type
        type: uint8_t
      item_type: struct
      name: ProxyProtocolValue
      pos:
        line_end: 37
        line_start: 26
        source_file: /src/pdns/pdns/recursordist/proxy-protocol.hh
    typedefs: []
    union: []
- function_names: []
  source_file: /src/pdns/pdns/recursordist/rec-lua-conf.hh
  types:
    enum:
    - enumerators:
      - name: All
      - name: Hashed
      - name: FirstAvailable
      - name: RoundRobin
      item_type: enum
      name: Strategy
      pos:
        line_end: 41
        line_start: 35
        source_file: /src/pdns/pdns/recursordist/rec-lua-conf.hh
    - enumerators:
      - name: Ignore
      - name: CacheOnly
      - name: ResolveDeferred
      - name: ResolveImmediately
      - name: CacheOnlyRequireAuth
      item_type: enum
      name: AdditionalMode
      pos:
        line_end: 96
        line_start: 89
        source_file: /src/pdns/pdns/recursordist/rec-lua-conf.hh
    preproc_defs: []
    structs:
    - fields:
      - name: strategyNames
        type: std::array<std::string, 4>
      - name: strategyFromString(const std::string& str)
        type: Strategy
      - name: toString(Strategy strategy)
        type: std::string
      - name: exportTypes
        type: std::set<uint16_t>
      - name: servers
        type: std::vector<ComboAddress>
      - name: maxQueuedEntries
        type: uint64_t
      - name: timeout
        type: uint16_t
      - name: reconnectWaitTime
        type: uint16_t
      - name: strategy
        type: Strategy
      - name: asyncConnect
        type: bool
      - name: enabled
        type: bool
      - name: logQueries
        type: bool
      - name: logResponses
        type: bool
      - name: taggedOnly
        type: bool
      - name: logMappedFrom
        type: bool
      - name: frame4
        type: bool
      item_type: struct
      name: ProtobufExportConfig
      pos:
        line_end: 59
        line_start: 33
        source_file: /src/pdns/pdns/recursordist/rec-lua-conf.hh
    - fields:
      - name: servers
        type: std::vector<string>
      - name: enabled
        type: bool
      - name: logQueries
        type: bool
      - name: logResponses
        type: bool
      - name: logNODs
        type: bool
      - name: logUDRs
        type: bool
      - name: bufferHint
        type: unsigned
      - name: flushTimeout
        type: unsigned
      - name: inputQueueSize
        type: unsigned
      - name: outputQueueSize
        type: unsigned
      - name: queueNotifyThreshold
        type: unsigned
      - name: reopenInterval
        type: unsigned
      item_type: struct
      name: FrameStreamExportConfig
      pos:
        line_end: 78
        line_start: 64
        source_file: /src/pdns/pdns/recursordist/rec-lua-conf.hh
    - fields:
      - name: interval
        type: uint32_t
      - name: fname
        type: std::string
      item_type: struct
      name: TrustAnchorFileInfo
      pos:
        line_end: 87
        line_start: 83
        source_file: /src/pdns/pdns/recursordist/rec-lua-conf.hh
    - fields:
      - name: netmaskMatches
        type: uint64_t
      - name: suffixMatches
        type: uint64_t
      item_type: struct
      name: ProxyMappingCounts
      pos:
        line_end: 102
        line_start: 98
        source_file: /src/pdns/pdns/recursordist/rec-lua-conf.hh
    - fields:
      - name: address
        type: ComboAddress
      - name: suffixMatchNode
        type: std::optional<SuffixMatchNode>
      - name: stats
        type: ProxyMappingCounts
      item_type: struct
      name: ProxyByTableValue
      pos:
        line_end: 109
        line_start: 104
        source_file: /src/pdns/pdns/recursordist/rec-lua-conf.hh
    - fields:
      - name: d_qnames
        type: std::optional<SuffixMatchNode>
      - name: d_qtypes
        type: std::optional<std::unordered_set<QType>>
      - name: d_qid
        type: std::optional<uint16_t>
      - name: d_edns_option_required
        type: bool
      - name: d_traceid_only
        type: bool
      item_type: struct
      name: OpenTelemetryTraceCondition
      pos:
        line_end: 120
        line_start: 113
        source_file: /src/pdns/pdns/recursordist/rec-lua-conf.hh
    typedefs: []
    union: []
- function_names:
  - DecayingEwmaCollection::submit
  - DecayingEwmaCollection::get
  - DecayingEwmaCollection::peek
  - DecayingEwmaCollection::last
  - DecayingEwmaCollection::DecayingEwmaCollection
  - DecayingEwmaCollection::submit
  - DecayingEwmaCollection::getFactor
  - DecayingEwmaCollection::stale
  - DecayingEwmaCollection::purge
  - DecayingEwmaCollection::insert
  - '& find_or_enter(const DNSName& name, const struct timeval& now)'
  - '& find_or_enter(const DNSName& name)'
  - nsspeeds_t::fastest
  source_file: /src/pdns/pdns/recursordist/rec-nsspeeds.hh
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: d_val
        type: float
      - name: d_last
        type: int
      item_type: struct
      name: DecayingEwma
      pos:
        line_end: 77
        line_start: 43
        source_file: /src/pdns/pdns/recursordist/rec-nsspeeds.hh
    typedefs: []
    union: []
- function_names:
  - push
  - push
  - RecursorLua4::RecursorLua4
  - RecursorLua4::RecursorLua4
  - RecursorLua4::RecursorLua4
  - '& operator=(const RecursorLua4&)'
  - '& operator=(RecursorLua4&&)'
  - RecursorLua4::DNSQuestion
  - RecursorLua4::PolicyEvent
  - RecursorLua4::FFIParams
  - RecursorLua4::needDQ
  - RecursorLua4::PostResolveFFIHandle
  - RecursorLua4::hasGettagFunc
  - RecursorLua4::hasGettagFFIFunc
  - RecursorLua4::hasPostResolveFFIfunc
  source_file: /src/pdns/pdns/recursordist/lua-recursor4.hh
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: minSize
        type: int
      - name: maxSize
        type: int
      item_type: struct
      name: LuaContext::Pusher<pdns_ffi_param*>
      pos:
        line_end: 51
        line_start: 41
        source_file: /src/pdns/pdns/recursordist/lua-recursor4.hh
    - fields:
      - name: minSize
        type: int
      - name: maxSize
        type: int
      item_type: struct
      name: LuaContext::Pusher<pdns_postresolve_ffi_handle*>
      pos:
        line_end: 65
        line_start: 55
        source_file: /src/pdns/pdns/recursordist/lua-recursor4.hh
    - fields:
      - name: stringVal
        type: std::unordered_set<std::string>
      - name: intVal
        type: std::unordered_set<int64_t>
      item_type: struct
      name: MetaValue
      pos:
        line_end: 85
        line_start: 81
        source_file: /src/pdns/pdns/recursordist/lua-recursor4.hh
    - fields:
      - name: '& qname'
        type: DNSName
      - name: '& interface_local'
        type: ComboAddress
      - name: '& interface_remote'
        type: ComboAddress
      - name: '& local'
        type: ComboAddress
      - name: '& remote'
        type: ComboAddress
      - name: '* fromAuthIP'
        type: ComboAddress
      - name: '* dh'
        type: struct dnsheader
      - name: '* ednsOptions'
        type: std::vector<pair<uint16_t, string>>
      - name: '* ednsFlags'
        type: uint16_t
      - name: '* currentRecords'
        type: vector<DNSRecord>
      - name: '* appliedPolicy'
        type: DNSFilterEngine::Policy
      - name: '* policyTags'
        type: std::unordered_set<std::string>
      - name: '* proxyProtocolValues'
        type: std::vector<ProxyProtocolValue>
      - name: '* discardedPolicies'
        type: std::unordered_map<std::string, bool>
      - name: '* extendedErrorExtra'
        type: std::string
      - name: '* extendedErrorCode'
        type: std::optional<uint16_t>
      - name: requestorId
        type: std::string
      - name: deviceId
        type: std::string
      - name: deviceName
        type: std::string
      - name: '& variable'
        type: bool
      - name: '& wantsRPZ'
        type: bool
      - name: '& logResponse'
        type: bool
      - name: '& addPaddingToResponse'
        type: bool
      - name: meta
        type: std::map<std::string, MetaValue>
      - name: queryTime
        type: struct timeval
      - name: records
        type: vector<DNSRecord>
      - name: followupFunction
        type: string
      - name: followupPrefix
        type: string
      - name: udpQuery
        type: string
      - name: udpAnswer
        type: string
      - name: udpCallback
        type: string
      - name: data
        type: LuaContext::LuaObject
      - name: followupName
        type: DNSName
      - name: udpQueryDest
        type: ComboAddress
      - name: tag
        type: unsigned int
      - name: rcode
        type: int
      - name: qtype
        type: uint16_t
      - name: isTcp
        type: bool
      - name: validationState
        type: vState
      - name: addAnswer(uint16_t type, const std::string& content, std::optional<int>
          ttl, OptDNSNameOrString name)
        type: void
      - name: addRecord(uint16_t type, const std::string& content, DNSResourceRecord::Place
          place, std::optional<int> ttl, OptDNSNameOrString name)
        type: void
      - name: getRecords() const
        type: vector<pair<int, DNSRecord>>
      - name: getDH() const
        type: std::optional<dnsheader>
      - name: getEDNSOptions() const
        type: vector<pair<uint16_t, string>>
      - name: getEDNSOption(uint16_t code) const
        type: std::optional<string>
      - name: getEDNSSubnet() const
        type: std::optional<Netmask>
      - name: getProxyProtocolValues() const
        type: std::vector<std::pair<int, ProxyProtocolValue>>
      - name: getEDNSFlags() const
        type: vector<string>
      - name: getEDNSFlag(const string& flag) const
        type: bool
      - name: setRecords(const vector<pair<int, DNSRecord>>& arg)
        type: void
      item_type: struct
      name: DNSQuestion
      pos:
        line_end: 150
        line_start: 86
        source_file: /src/pdns/pdns/recursordist/lua-recursor4.hh
    - fields:
      - name: '& qname'
        type: DNSName
      - name: qtype
        type: QType
      - name: '& remote'
        type: ComboAddress
      - name: isTcp
        type: bool
      - name: '* appliedPolicy'
        type: DNSFilterEngine::Policy
      - name: '* policyTags'
        type: std::unordered_set<std::string>
      - name: '* discardedPolicies'
        type: std::unordered_map<std::string, bool>
      item_type: struct
      name: PolicyEvent
      pos:
        line_end: 165
        line_start: 152
        source_file: /src/pdns/pdns/recursordist/lua-recursor4.hh
    - fields:
      - name: '& data'
        type: LuaContext::LuaObject
      - name: '& qname'
        type: DNSName
      - name: '& interface_local'
        type: ComboAddress
      - name: '& interface_remote'
        type: ComboAddress
      - name: '& local'
        type: ComboAddress
      - name: '& remote'
        type: ComboAddress
      - name: '& ednssubnet'
        type: Netmask
      - name: '& policyTags'
        type: std::unordered_set<std::string>
      - name: '& records'
        type: std::vector<DNSRecord>
      - name: '& ednsOptions'
        type: EDNSOptionViewMap
      - name: '& proxyProtocolValues'
        type: std::vector<ProxyProtocolValue>
      - name: '& requestorId'
        type: std::string
      - name: '& deviceId'
        type: std::string
      - name: '& deviceName'
        type: std::string
      - name: '& routingTag'
        type: std::string
      - name: '& extendedErrorExtra'
        type: std::string
      - name: '& rcode'
        type: std::optional<int>
      - name: '& extendedErrorCode'
        type: std::optional<uint16_t>
      - name: '& ttlCap'
        type: uint32_t
      - name: '& variable'
        type: bool
      - name: '& logQuery'
        type: bool
      - name: '& logResponse'
        type: bool
      - name: '& followCNAMERecords'
        type: bool
      - name: '& disablePadding'
        type: bool
      - name: tag
        type: unsigned int
      - name: qtype
        type: uint16_t
      - name: tcp
        type: bool
      - name: '& meta'
        type: std::map<std::string, MetaValue>
      item_type: struct
      name: FFIParams
      pos:
        line_end: 206
        line_start: 167
        source_file: /src/pdns/pdns/recursordist/lua-recursor4.hh
    - fields:
      - name: '& d_dq'
        type: DNSQuestion
      - name: d_ret
        type: bool
      item_type: struct
      name: PostResolveFFIHandle
      pos:
        line_end: 238
        line_start: 230
        source_file: /src/pdns/pdns/recursordist/lua-recursor4.hh
    typedefs: []
    union: []
- function_names:
  - treader
  - BOOST_AUTO_TEST_CASE
  source_file: /src/pdns/pdns/recursordist/test-sholder_hh.cc
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: name
        type: string
      - name: number
        type: uint64_t
      item_type: struct
      name: TestObject
      pos:
        line_end: 16
        line_start: 12
        source_file: /src/pdns/pdns/recursordist/test-sholder_hh.cc
    typedefs: []
    union: []
- function_names:
  - PacketCache::hashAfterQname
  - PacketCache::hashHeaderAndQName
  - PacketCache::canHashPacket
  - PacketCache::queryHeaderMatches
  - PacketCache::queryMatches
  source_file: /src/pdns/pdns/recursordist/packetcache.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - BaseLua4::loadFile
  - BaseLua4::loadString
  - BaseLua4::includePath
  - BaseLua4::getFeatures
  - BaseLua4::prepareContext
  - BaseLua4::loadStream
  - BaseLua4::~BaseLua4()
  source_file: /src/pdns/pdns/recursordist/lua-base4.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs:
    - item_type: typedef
      name: cas_t
      pos:
        line_end: 187
        line_start: 187
        source_file: /src/pdns/pdns/recursordist/lua-base4.cc
      type: unordered_set<ComboAddress,ComboAddress::addressOnlyHash,ComboAddress::addressOnlyEqual>
    union: []
- function_names:
  - RecursorPacketCache::RecursorPacketCache
  - RecursorPacketCache::getResponsePacket
  - RecursorPacketCache::getResponsePacket
  - RecursorPacketCache::setMaxSize
  - RecursorPacketCache::Entry
  - RecursorPacketCache::isStale
  - RecursorPacketCache::getOrigTTL
  - RecursorPacketCache::MapCombo
  - ~MapCombo()
  - RecursorPacketCache::MapCombo
  - RecursorPacketCache::MapCombo
  - '& operator=(const MapCombo&)'
  - '& operator=(MapCombo&&)'
  - RecursorPacketCache::invalidate
  - RecursorPacketCache::preRemoval
  - RecursorPacketCache::lock
  - RecursorPacketCache::getEntriesCount
  - RecursorPacketCache::incEntriesCount
  - RecursorPacketCache::decEntriesCount
  - RecursorPacketCache::combine
  - '& getMap(unsigned int tag, uint32_t hash, bool tcp)'
  - '& getMap(unsigned int tag, uint32_t hash, bool tcp) const'
  source_file: /src/pdns/pdns/recursordist/recpacketcache.hh
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: d_message
        type: std::string
      - name: d_response
        type: std::string
      - name: d_tagged
        type: bool
      item_type: struct
      name: PBData
      pos:
        line_end: 55
        line_start: 50
        source_file: /src/pdns/pdns/recursordist/recpacketcache.hh
    - fields:
      - name: d_name
        type: DNSName
      - name: d_packet
        type: std::string
      - name: d_query
        type: std::string
      - name: d_pbdata
        type: OptPBData
      - name: d_ttd
        type: time_t
      - name: d_creation
        type: time_t
      - name: d_qhash
        type: uint32_t
      - name: d_tag
        type: uint32_t
      - name: d_type
        type: uint16_t
      - name: d_class
        type: uint16_t
      - name: d_vstate
        type: vState
      - name: d_submitted
        type: bool
      - name: d_tcp
        type: bool
      - name: operator<(const struct Entry& rhs) const
        type: bool
      item_type: struct
      name: Entry
      pos:
        line_end: 148
        line_start: 105
        source_file: /src/pdns/pdns/recursordist/recpacketcache.hh
    - fields: []
      item_type: struct
      name: HashTag
      pos:
        line_end: 152
        line_start: 150
        source_file: /src/pdns/pdns/recursordist/recpacketcache.hh
    - fields: []
      item_type: struct
      name: NameTag
      pos:
        line_end: 155
        line_start: 153
        source_file: /src/pdns/pdns/recursordist/recpacketcache.hh
    - fields: []
      item_type: struct
      name: SequencedTag
      pos:
        line_end: 158
        line_start: 156
        source_file: /src/pdns/pdns/recursordist/recpacketcache.hh
    - fields:
      - name: d_content
        type: LockGuarded<LockedContent>
      - name: d_entriesCount
        type: pdns::stat_t
      item_type: struct
      name: MapCombo
      pos:
        line_end: 218
        line_start: 168
        source_file: /src/pdns/pdns/recursordist/recpacketcache.hh
    - fields:
      - name: d_map
        type: packetCache_t
      - name: d_shardSize
        type: size_t
      - name: d_hits
        type: uint64_t
      - name: d_misses
        type: uint64_t
      - name: d_contended_count
        type: uint64_t
      - name: d_acquired_count
        type: uint64_t
      item_type: struct
      name: LockedContent
      pos:
        line_end: 187
        line_start: 177
        source_file: /src/pdns/pdns/recursordist/recpacketcache.hh
    typedefs: []
    union: []
- function_names:
  - RecursorPacketCache::setShardSizes
  - RecursorPacketCache::size
  - RecursorPacketCache::bytes
  - RecursorPacketCache::getHits
  - RecursorPacketCache::getMisses
  - RecursorPacketCache::stats
  - RecursorPacketCache::doWipePacketCache
  - RecursorPacketCache::doWipePacketCache
  - RecursorPacketCache::qrMatch
  - RecursorPacketCache::checkResponseMatches
  - RecursorPacketCache::getResponsePacket
  - RecursorPacketCache::getResponsePacket
  - RecursorPacketCache::insertResponsePacket
  - RecursorPacketCache::doPruneTo
  - RecursorPacketCache::doDump
  source_file: /src/pdns/pdns/recursordist/recpacketcache.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - SensitiveData::SensitiveData
  - SensitiveData::SensitiveData
  - '& operator=(const SensitiveData&)'
  - '& getString() const'
  - '& getString()'
  - CredentialsHolder::CredentialsHolder
  - '& operator=(CredentialsHolder&&)'
  - CredentialsHolder::CredentialsHolder
  - '& operator=(const CredentialsHolder&)'
  - CredentialsHolder::wasHashed
  - CredentialsHolder::isHashed
  source_file: /src/pdns/pdns/recursordist/credentials.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - FDMultiplexer::getMultiplexerSilent
  - PollFDMultiplexer::PollFDMultiplexer
  - PollFDMultiplexer::getName
  - make
  - RegisterOurselves
  - convertEventKind
  - PollFDMultiplexer::addFD
  - PollFDMultiplexer::removeFD
  - PollFDMultiplexer::preparePollFD
  - PollFDMultiplexer::getAvailableFDs
  - PollFDMultiplexer::run
  - acceptData
  - main
  source_file: /src/pdns/pdns/recursordist/pollmplexer.cc
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields: []
      item_type: struct
      name: RegisterOurselves
      pos:
        line_end: 60
        line_start: 54
        source_file: /src/pdns/pdns/recursordist/pollmplexer.cc
    typedefs: []
    union: []
- function_names:
  - parseCPUMap
  - setCPUMap
  - RecThreadInfo::start
  - RecThreadInfo::runThreads
  - RecThreadInfo::makeThreadPipes
  - arg
  - getMultiplexer
  - startProtobufServers
  - checkProtobufExport
  - checkOutgoingProtobufExport
  - protobufLog
  - protobufLogQuery
  - protobufLogResponse
  - protobufLogResponse
  - startFrameStreamServers
  - asyncFrameStreamLoggersCleanup
  - checkFrameStreamExport
  - makeControlChannelSocket
  - writePid
  - checkSocketDir
  - setupNODThread
  - parseIgnorelist
  - parseIgnorelistFile
  - setupNODGlobal
  - daemonize
  - termIntHandler
  - usr1Handler
  - usr2Handler
  - checkLinuxIPv6Limits
  - checkOrFixLinuxMapCountLimits
  - checkOrFixFDS
  - loggerSDBackend
  - loggerJSONBackend
  - loggerBackend
  - ratePercentage
  - doStats
  - parseACL
  - pleaseSupplantAllowFrom
  - pleaseSupplantAllowNotifyFrom
  - pleaseSupplantAllowNotifyFor
  - pleaseSupplantProxyProtocolSettings
  - parseACLs
  - broadcastFunction
  - voider
  - '& operator+=(vector<ComboAddress>& lhs, const vector<ComboAddress>& rhs)'
  - '& operator+=(vector<pair<DNSName, uint16_t>>& lhs, const vector<pair<DNSName,
    uint16_t>>& rhs)'
  - '& operator+=(ProxyMappingStats_t& lhs, const ProxyMappingStats_t& rhs)'
  - '& operator+=(RemoteLoggerStats_t& lhs, const RemoteLoggerStats_t& rhs)'
  - broadcastAccFunction
  - initNet
  - initDNSSEC
  - initDontQuery
  - initSyncRes
  - initDistribution
  - initForks
  - initPorts
  - initSNMP
  - initControl
  - initSuffixMatchNodes
  - initCarbon
  - initDNS64
  - serviceMain
  - handlePipeRequest
  - handleRCC
  - PeriodicTask::PeriodicTask
  - PeriodicTask::runIfDue
  - PeriodicTask::getPeriod
  - PeriodicTask::setPeriod
  - PeriodicTask::updateLastRun
  - PeriodicTask::hasRun
  - houseKeepingWork
  - houseKeeping
  - runLuaMaintenance
  - recLoop
  - recursorThread
  - doYamlConfig
  - doConfig
  - runStartStopLua
  - handleRuntimeDefaults
  - setupLogging
  - main
  - doReloadLuaScript
  - doQueueReloadLuaScript
  - pleaseUseNewTraceRegex
  - doTraceRegex
  - wipeCaches
  - startLuaConfigDelayedThreads
  - pleaseInitPolCounts
  - activateRPZFile
  - activateRPZPrimary
  - activateRPZs
  - activateForwardingCatalogZones
  - activateLuaConfig
  source_file: /src/pdns/pdns/recursordist/rec-main.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - DNSResourceRecord::setContent
  - DNSResourceRecord::getZoneRepresentation
  - DNSResourceRecord::operator==(const DNSResourceRecord& rhs) const
  - ARecordContent::ARecordContent
  - ARecordContent::ARecordContent
  - AAAARecordContent::AAAARecordContent
  - ARecordContent::getCA
  - AAAARecordContent::getCA
  - ARecordContent::doRecordCheck
  - LUARecordContent::getCode
  - OPTRecordContent::getData
  - MXRecordContent::MXRecordContent
  - SRVRecordContent::SRVRecordContent
  - SOARecordContent::SOARecordContent
  - DSRecordContent::DSRecordContent
  - CDSRecordContent::CDSRecordContent
  - DLVRecordContent::DLVRecordContent
  - RRSIGRecordContent::RRSIGRecordContent
  - DNSKEYRecordContent::DNSKEYRecordContent
  - CDNSKEYRecordContent::CDNSKEYRecordContent
  - RKEYRecordContent::RKEYRecordContent
  - EUI48RecordContent::report
  - EUI48RecordContent::make
  - EUI48RecordContent::make
  - EUI48RecordContent::toPacket
  - EUI48RecordContent::getZoneRepresentation
  - EUI64RecordContent::report
  - EUI64RecordContent::make
  - EUI64RecordContent::make
  - EUI64RecordContent::toPacket
  - EUI64RecordContent::getZoneRepresentation
  - APLRecordContent::report
  - APLRecordContent::make
  - APLRecordContent::parseAPLElement
  - APLRecordContent::make
  - APLRecordContent::toPacket
  - APLRecordContent::getZoneRepresentation
  - SVCBBaseRecordContent::autoHint
  - SVCBBaseRecordContent::setHints
  - SVCBBaseRecordContent::removeParam
  - SVCBBaseRecordContent::hasParams
  - SVCBBaseRecordContent::hasParam
  - SVCBBaseRecordContent::getParam
  - SVCBBaseRecordContent::getParamIt
  - SVCBRecordContent::clone
  - HTTPSRecordContent::clone
  - HHITRecordContent::clone
  - BRIDRecordContent::clone
  - makeTag
  - DNSKEYRecordContent::getTag
  - getEDNSOpts
  - reportBasicTypes
  - reportOtherTypes
  - reportAllTypes
  - getAddr
  - checkHostnameCorrectness
  - EDNSOpts::getFirstOption
  - Reporter
  source_file: /src/pdns/pdns/recursordist/dnsrecords.cc
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields: []
      item_type: struct
      name: ReportIsOnlyCallableByReportAllTypes
      pos:
        line_end: 1039
        line_start: 1037
        source_file: /src/pdns/pdns/recursordist/dnsrecords.cc
    - fields: []
      item_type: struct
      name: Reporter
      pos:
        line_end: 1107
        line_start: 1101
        source_file: /src/pdns/pdns/recursordist/dnsrecords.cc
    typedefs: []
    union: []
- function_names:
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - createPID
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  source_file: /src/pdns/pdns/recursordist/test-syncres_cc10.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - NameEntry
  - addValue
  - RecEventTrace::convertToOT
  source_file: /src/pdns/pdns/recursordist/rec-eventtrace.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - Logging::Logger::getptr
  - Logging::Logger::info
  - Logging::Logger::logMessage
  - Logging::Logger::error
  - Logging::Logger::error
  - Logging::Logger::v
  - Logging::Logger::withValues
  - Logging::Logger::withName
  - Logging::Logger::create
  - Logging::Logger::create
  - Logging::Logger::Logger
  - Logging::Logger::Logger
  - Logging::Logger::Logger
  - Logger::~Logger()
  - Logging::Logger::getptr
  - Logging::Logger::info
  - Logging::Logger::logMessage
  - Logging::Logger::error
  - Logging::Logger::error
  - Logging::Logger::v
  - Logging::Logger::withValues
  - Logging::Logger::withName
  - Logging::Logger::create
  - Logging::Logger::create
  - Logging::Logger::Logger
  - Logging::Logger::Logger
  - Logging::Logger::Logger
  - Logger::~Logger()
  - Logging::toTimestampStringMilli
  source_file: /src/pdns/pdns/recursordist/logging.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - putIntoCache
  - parseHintFile
  - determineReachable
  - readHintsIntoCache
  - putDefaultHintsIntoCache
  - makeSOAAndNSNodes
  - addToDomainMap
  - makeNameToIPZone
  - makeIPToNamesZone
  - makePartialIPZone
  - makePartialIP6Zone
  - addForwardAndReverseLookupEntries
  - parseEtcHostsLine
  source_file: /src/pdns/pdns/recursordist/reczones-helpers.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/pdns/pdns/recursordist/comment.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - RecursorLua4::DNSQuestion::getDH() const
  - RecursorLua4::DNSQuestion::getEDNSFlags() const
  - RecursorLua4::DNSQuestion::getEDNSFlag(const string& flag) const
  - RecursorLua4::DNSQuestion::getEDNSOptions() const
  - RecursorLua4::DNSQuestion::getEDNSOption(uint16_t code) const
  - RecursorLua4::DNSQuestion::getEDNSSubnet() const
  - RecursorLua4::DNSQuestion::getProxyProtocolValues() const
  - RecursorLua4::DNSQuestion::getRecords() const
  - RecursorLua4::DNSQuestion::setRecords(const vector<pair<int, DNSRecord>>& arg)
  - RecursorLua4::DNSQuestion::addRecord(uint16_t type, const std::string& content,
    DNSResourceRecord::Place place, std::optional<int> ttl, RecursorLua4::DNSQuestion::OptDNSNameOrString
    name)
  - RecursorLua4::DNSQuestion::addAnswer(uint16_t type, const std::string& content,
    std::optional<int> ttl, OptDNSNameOrString name)
  - inc
  - incBy
  - get
  - set
  - RecursorLua4::postPrepareContext
  - RecursorLua4::postLoad
  - RecursorLua4::getFeatures
  - RecursorLua4::runStartStopFunction
  - warnDrop
  - RecursorLua4::maintenance
  - RecursorLua4::prerpz
  - RecursorLua4::preresolve
  - RecursorLua4::nxdomain
  - RecursorLua4::nodata
  - RecursorLua4::postresolve
  - RecursorLua4::preoutquery
  - RecursorLua4::ipfilter
  - RecursorLua4::policyHitEventFilter
  - RecursorLua4::gettag
  - pdns_ffi_param
  - RecursorLua4::gettag_ffi
  - RecursorLua4::genhook
  - RecursorLua4::~RecursorLua4()
  - pdns_ffi_param_get_qname
  - pdns_ffi_param_get_qname_raw
  - pdns_ffi_param_get_qtype
  - pdns_ffi_param_get_remote
  - pdns_ffi_comboaddress_to_raw
  - pdns_ffi_param_get_remote_raw
  - pdns_ffi_param_get_remote_port
  - pdns_ffi_param_get_local
  - pdns_ffi_param_get_local_raw
  - pdns_ffi_param_get_local_port
  - pdns_ffi_param_get_interface_remote
  - pdns_ffi_param_get_interface_remote_raw
  - pdns_ffi_param_get_interface_remote_port
  - pdns_ffi_param_get_interface_local
  - pdns_ffi_param_get_interface_local_raw
  - pdns_ffi_param_get_interface_local_port
  - pdns_ffi_param_get_edns_cs
  - pdns_ffi_param_get_edns_cs_raw
  - pdns_ffi_param_get_edns_cs_source_mask
  - fill_edns_option
  - pdns_ffi_param_get_edns_options
  - pdns_ffi_param_get_edns_options_by_code
  - pdns_ffi_param_get_proxy_protocol_values
  - pdns_ffi_param_set_tag
  - pdns_ffi_param_add_policytag
  - pdns_ffi_param_set_requestorid
  - pdns_ffi_param_set_devicename
  - pdns_ffi_param_set_deviceid
  - pdns_ffi_param_set_routingtag
  - pdns_ffi_param_set_variable
  - pdns_ffi_param_set_ttl_cap
  - pdns_ffi_param_set_log_query
  - pdns_ffi_param_set_log_response
  - pdns_ffi_param_set_rcode
  - pdns_ffi_param_set_follow_cname_records
  - pdns_ffi_param_set_extended_error_code
  - pdns_ffi_param_set_extended_error_extra
  - pdns_ffi_param_add_record
  - pdns_ffi_param_set_padding_disabled
  - pdns_ffi_param_add_meta_single_string_kv
  - pdns_ffi_param_add_meta_single_int64_kv
  - pdns_postresolve_ffi_handle
  - insert
  - '& getHandle() const'
  - RecursorLua4::postresolve_ffi
  - pdns_postresolve_ffi_handle_get_qname
  - pdns_postresolve_ffi_handle_get_qname_raw
  - pdns_postresolve_ffi_handle_get_qtype
  - pdns_postresolve_ffi_handle_get_rcode
  - pdns_postresolve_ffi_handle_set_rcode
  - pdns_postresolve_ffi_handle_get_appliedpolicy_kind
  - pdns_postresolve_ffi_handle_set_appliedpolicy_kind
  - pdns_postresolve_ffi_handle_get_record
  - pdns_postresolve_ffi_handle_set_record
  - pdns_postresolve_ffi_handle_clear_records
  - pdns_postresolve_ffi_handle_add_record
  - pdns_postresolve_ffi_handle_get_authip
  - pdns_postresolve_ffi_handle_get_authip_raw
  source_file: /src/pdns/pdns/recursordist/lua-recursor4.cc
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '* ptr'
        type: std::atomic<unsigned long>
      item_type: struct
      name: DynMetric
      pos:
        line_end: 167
        line_start: 160
        source_file: /src/pdns/pdns/recursordist/lua-recursor4.cc
    - fields:
      - name: '& params'
        type: RecursorLua4::FFIParams
      - name: qnameStr
        type: std::unique_ptr<std::string>
      - name: localStr
        type: std::unique_ptr<std::string>
      - name: remoteStr
        type: std::unique_ptr<std::string>
      - name: interfaceLocalStr
        type: std::unique_ptr<std::string>
      - name: interfaceRemoteStr
        type: std::unique_ptr<std::string>
      - name: ednssubnetStr
        type: std::unique_ptr<std::string>
      - name: ednsOptionsVect
        type: std::vector<pdns_ednsoption_t>
      - name: proxyProtocolValuesVect
        type: std::vector<pdns_proxyprotocol_value_t>
      item_type: struct
      name: pdns_ffi_param
      pos:
        line_end: 801
        line_start: 784
        source_file: /src/pdns/pdns/recursordist/lua-recursor4.cc
    - fields:
      - name: '& handle'
        type: RecursorLua4::PostResolveFFIHandle
      - name: pool
        type: std::unordered_set<std::string>
      item_type: struct
      name: pdns_postresolve_ffi_handle
      pos:
        line_end: 1233
        line_start: 1211
        source_file: /src/pdns/pdns/recursordist/lua-recursor4.cc
    typedefs: []
    union: []
- function_names:
  - dns_random
  - dns_random_uint32
  - dns_random_uint16
  - dns_random
  - pdns::min
  - pdns::max
  - operator()()
  - pdns::random_minimum_acceptable_value
  - pdns::min
  - pdns::max
  - operator()()
  - pdns::random_minimum_acceptable_value
  source_file: /src/pdns/pdns/recursordist/dns_random.hh
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields: []
      item_type: struct
      name: dns_random_engine
      pos:
        line_end: 69
        line_start: 50
        source_file: /src/pdns/pdns/recursordist/dns_random.hh
    - fields: []
      item_type: struct
      name: dns_random_engine
      pos:
        line_end: 69
        line_start: 50
        source_file: /src/pdns/pdns/recursordist/dns_random.hh
    typedefs: []
    union: []
- function_names:
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  source_file: /src/pdns/pdns/recursordist/test-rec-taskqueue.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  source_file: /src/pdns/pdns/recursordist/test-recpacketcache_cc.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - EDNSCookiesOpt::EDNSCookiesOpt
  - EDNSCookiesOpt::EDNSCookiesOpt
  - EDNSCookiesOpt::makeFromString
  - EDNSCookiesOpt::makeFromString
  - EDNSCookiesOpt::makeOptString
  - EDNSCookiesOpt::toDisplayString
  - EDNSCookiesOpt::getEDNSCookiesOptFromString
  - cookieTSIsValid
  - EDNSCookiesOpt::isValid
  - EDNSCookiesOpt::shouldRefresh
  - EDNSCookiesOpt::makeClientCookie
  - EDNSCookiesOpt::makeServerCookie
  source_file: /src/pdns/pdns/recursordist/ednscookies.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - pdns::ZoneMD::readRecords(ZoneParserTNG& zpt)
  - pdns::ZoneMD::readRecords(const vector<DNSRecord>& records)
  - pdns::ZoneMD::processRecord(const DNSRecord& record)
  - pdns::ZoneMD::readRecord(const DNSRecord& record)
  - pdns::ZoneMD::verify(bool& validationDone, bool& validationOK)
  source_file: /src/pdns/pdns/recursordist/zonemd.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/pdns/pdns/recursordist/reczones-helpers.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - isReleaseVersion
  - setSecPollToUnknownOnOK
  - processSecPoll
  source_file: /src/pdns/pdns/recursordist/secpoll.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/pdns/pdns/recursordist/query-local-address.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - NMGOutputToSorted
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  source_file: /src/pdns/pdns/recursordist/test-iputils_hh.cc
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: str
        type: std::string
      - name: port
        type: uint16_t
      - name: result
        type: std::string
      - name: ex
        type: bool
      item_type: struct
      name: "tests[] = {\n    { \"\", 0, \"\", true },\n    { \"1.2.3.a\", 53, \"\",
        true },\n    { \"1::g3\", 99, \"\", true },\n    { \"1.2.3.4\", 0, \"1.2.3.4:0\",
        false },\n    { \"1.2.3.4\", 999, \"1.2.3.4:999\", false },\n    { \"1::\",
        999, \"[1::]:999\", false },\n    { \"1::33:99\", 0, \"[1::33:99]\", false
        },\n    { \"[1::33]:99\", 0, \"[1::33]:99\", false },\n    { \"1:33::99\",
        0, \"1:33::99\", false },\n    { \"[1:33::]:99\", 0, \"[1:33::]:99\", false
        },\n    { \"2003:1234::f561\", 53, \"[2003:1234::f561]:53\", false },\n    {
        \"2003:1234::f561:53\", 54, \"[2003:1234::f561:53]:54\", false },\n  }"
      pos:
        line_end: 921
        line_start: 916
        source_file: /src/pdns/pdns/recursordist/test-iputils_hh.cc
    - fields:
      - name: str
        type: std::string
      - name: unspecified
        type: bool
      item_type: struct
      name: TestParams
      pos:
        line_end: 952
        line_start: 948
        source_file: /src/pdns/pdns/recursordist/test-iputils_hh.cc
    typedefs: []
    union: []
- function_names:
  - pdns::Bucket
  - pdns::Bucket
  - '& operator=(const Bucket& rhs)'
  - pdns::AtomicBucket
  - pdns::AtomicBucket
  - pdns::AtomicBucket
  - pdns::BaseHistogram::BaseHistogram
  - pdns::BaseHistogram::BaseHistogram
  - pdns::BaseHistogram::getName
  - pdns::BaseHistogram::getSum
  - '& getRawData() const'
  - pdns::BaseHistogram::getCount
  - pdns::BaseHistogram::getCumulativeBuckets
  - pdns::BaseHistogram::getCumulativeCounts
  - pdns::BaseHistogram::lessOrEqual
  - operator()(uint64_t d) const
  - '& operator+=(const BaseHistogram& rhs)'
  - pdns::BaseHistogram::to125
  - pdns::Bucket
  - pdns::Bucket
  - '& operator=(const Bucket& rhs)'
  - pdns::AtomicBucket
  - pdns::AtomicBucket
  - pdns::AtomicBucket
  - pdns::BaseHistogram::BaseHistogram
  - pdns::BaseHistogram::BaseHistogram
  - pdns::BaseHistogram::getName
  - pdns::BaseHistogram::getSum
  - '& getRawData() const'
  - pdns::BaseHistogram::getCount
  - pdns::BaseHistogram::getCumulativeBuckets
  - pdns::BaseHistogram::getCumulativeCounts
  - pdns::BaseHistogram::lessOrEqual
  - operator()(uint64_t d) const
  - '& operator+=(const BaseHistogram& rhs)'
  - pdns::BaseHistogram::to125
  source_file: /src/pdns/pdns/recursordist/histogram.hh
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: d_name
        type: std::string
      - name: d_boundary
        type: uint64_t
      - name: d_count
        type: uint64_t
      item_type: struct
      name: Bucket
      pos:
        line_end: 52
        line_start: 36
        source_file: /src/pdns/pdns/recursordist/histogram.hh
    - fields:
      - name: d_name
        type: std::string
      - name: d_boundary
        type: uint64_t
      - name: d_count
        type: stat_t
      item_type: struct
      name: AtomicBucket
      pos:
        line_end: 66
        line_start: 54
        source_file: /src/pdns/pdns/recursordist/histogram.hh
    - fields:
      - name: d_name
        type: std::string
      - name: d_boundary
        type: uint64_t
      - name: d_count
        type: uint64_t
      item_type: struct
      name: Bucket
      pos:
        line_end: 52
        line_start: 36
        source_file: /src/pdns/pdns/recursordist/histogram.hh
    - fields:
      - name: d_name
        type: std::string
      - name: d_boundary
        type: uint64_t
      - name: d_count
        type: stat_t
      item_type: struct
      name: AtomicBucket
      pos:
        line_end: 66
        line_start: 54
        source_file: /src/pdns/pdns/recursordist/histogram.hh
    typedefs: []
    union: []
- function_names:
  - pdns::views::UnsignedCharView::UnsignedCharView
  - pdns::views::UnsignedCharView::UnsignedCharView
  - '& at(size_type pos) const'
  - '& operator[](size_type pos) const'
  - pdns::views::UnsignedCharView::data
  - pdns::views::UnsignedCharView::size
  - pdns::views::UnsignedCharView::length
  - pdns::views::UnsignedCharView::UnsignedCharView
  - pdns::views::UnsignedCharView::UnsignedCharView
  - '& at(size_type pos) const'
  - '& operator[](size_type pos) const'
  - pdns::views::UnsignedCharView::data
  - pdns::views::UnsignedCharView::size
  - pdns::views::UnsignedCharView::length
  source_file: /src/pdns/pdns/recursordist/views.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - test_edns_formerr_fallback_f
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  source_file: /src/pdns/pdns/recursordist/test-syncres_cc1.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/pdns/pdns/recursordist/secpoll-recursor.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/pdns/pdns/recursordist/secpoll.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - resolve
  - resolve
  - serverID
  - resolve
  - resolve
  - serverID
  - pdns::RecResolve::setInstanceParameters(std::string serverID, time_t ttl, time_t
    interval, bool selfResolveCheck, const std::function<void()>& callback)
  - '& pdns::RecResolve::getInstance()'
  - pdns::RecResolve::RecResolve(time_t ttl, time_t interval, bool selfResolveCheck,
    const std::function<void()>& callback)
  - pdns::RecResolve::~RecResolve()
  - pdns::RecResolve::stopRefresher()
  - pdns::RecResolve::startRefresher()
  - pdns::RecResolve::lookupAndRegister(const std::string& name, time_t now)
  - pdns::RecResolve::lookup(const std::string& name)
  - pdns::RecResolve::wipe(const string& name)
  - pdns::RecResolve::refresh(time_t now)
  - pdns::RecResolve::Refresher::Refresher(time_t interval, const std::function<void()>&
    callback, bool selfResolveCheck, pdns::RecResolve& res)
  - pdns::RecResolve::Refresher::~Refresher()
  - pdns::RecResolve::Refresher::refreshLoop()
  - pdns::RecResolve::Refresher::finish()
  - pdns::RecResolve::Refresher::start()
  - pdns::RecResolve::Refresher::trigger()
  - pdns::fromNameOrIP
  source_file: /src/pdns/pdns/recursordist/rec-system-resolve.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - compilerVersion
  - productName
  - getPDNSVersion
  - productTypeApiType
  - getProductVersionLines
  - getProductVersion
  - getBuildConfiguration
  - double_escape
  - escape_quotes
  - fullVersionString
  - versionSetProduct
  - versionGetProduct
  source_file: /src/pdns/pdns/recursordist/version.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - SortListOrderCmp
  - '& getTree() const'
  source_file: /src/pdns/pdns/recursordist/sortlist.hh
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: d_orders
        type: NetmaskTree<int>
      item_type: struct
      name: SortListOrder
      pos:
        line_end: 29
        line_start: 26
        source_file: /src/pdns/pdns/recursordist/sortlist.hh
    - fields:
      - name: operator()(const DNSRecord& lhs, const DNSRecord& rhs) const
        type: bool
      - name: d_slo
        type: SortListOrder
      item_type: struct
      name: SortListOrderCmp
      pos:
        line_end: 37
        line_start: 31
        source_file: /src/pdns/pdns/recursordist/sortlist.hh
    typedefs: []
    union: []
- function_names:
  - BOOST_AUTO_TEST_CASE
  source_file: /src/pdns/pdns/recursordist/test-histogram_hh.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - SvcParam::SvcParam
  - operator==(const SvcParamKey& key) const
  - SvcParam::getKey
  - SvcParam::getAutoHint
  - SvcParam::setAutoHint
  source_file: /src/pdns/pdns/recursordist/svc-records.hh
  types:
    enum:
    - enumerators:
      - name: mandatory
        value: '0'
      - name: no_default_alpn
        value: '2'
      - name: port
        value: '3'
      - name: alpn
        value: '1'
      - name: ipv4hint
        value: '4'
      - name: ech
        value: '5'
      - name: ipv6hint
        value: '6'
      - name: dohpath
        value: '7'
      - name: ohttp
        value: '8'
      - name: tls_supported_groups
        value: '9'
      item_type: enum
      name: SvcParamKey
      pos:
        line_end: 46
        line_start: 30
        source_file: /src/pdns/pdns/recursordist/svc-records.hh
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - pdns::RateLimitedLog::RateLimitedLog
  - pdns::RateLimitedLog::log
  - pdns::RateLimitedLog::log
  - pdns::RateLimitedLog::log
  - pdns::RateLimitedLog::doLog
  - pdns::RateLimitedLog::RateLimitedLog
  - pdns::RateLimitedLog::log
  - pdns::RateLimitedLog::log
  - pdns::RateLimitedLog::log
  - pdns::RateLimitedLog::doLog
  source_file: /src/pdns/pdns/recursordist/ratelimitedlog.hh
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: d_last
        type: time_t
      - name: d_count
        type: uint32_t
      item_type: struct
      name: LockedObject
      pos:
        line_end: 88
        line_start: 84
        source_file: /src/pdns/pdns/recursordist/ratelimitedlog.hh
    - fields:
      - name: d_last
        type: time_t
      - name: d_count
        type: uint32_t
      item_type: struct
      name: LockedObject
      pos:
        line_end: 88
        line_start: 84
        source_file: /src/pdns/pdns/recursordist/ratelimitedlog.hh
    typedefs: []
    union: []
- function_names:
  - LocalStateHolder::LocalStateHolder
  - '* operator->()'
  - '& operator*()'
  - '& get(bool allowedOutdated = false)'
  - LocalStateHolder::reset
  - GlobalStateHolder::GlobalStateHolder
  - GlobalStateHolder::getLocal
  - GlobalStateHolder::setState
  - GlobalStateHolder::setState
  - GlobalStateHolder::getCopy
  - GlobalStateHolder::modify
  - GlobalStateHolder::getGeneration
  - GlobalStateHolder::getState
  source_file: /src/pdns/pdns/recursordist/sholder.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/pdns/pdns/recursordist/base64.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - LuaConfigItems::LuaConfigItems
  - operator==(const ProtobufExportConfig& configA, const ProtobufExportConfig& configB)
  - operator!=(const ProtobufExportConfig& configA, const ProtobufExportConfig& configB)
  - operator==(const FrameStreamExportConfig& configA, const FrameStreamExportConfig&
    configB)
  - operator!=(const FrameStreamExportConfig& configA, const FrameStreamExportConfig&
    configB)
  - parseRPZParameters
  - ProtobufExportConfig::strategyFromString
  - ProtobufExportConfig::toString
  - parseProtobufOptions
  - parseFrameStreamOptions
  - rpzPrimary
  - RecLuaConfigContext::RecLuaConfigContext
  - RecLuaConfigContext::postPrepareContext
  - RecLuaConfigContext::postLoad
  - '* operator->()'
  - loadRecursorLuaConfig
  source_file: /src/pdns/pdns/recursordist/rec-lua-conf.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/pdns/pdns/recursordist/rec-taskqueue.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - openssl_pthreads_locking_callback
  - openssl_pthreads_id_callback
  - openssl_thread_setup
  - openssl_thread_cleanup
  - RSA_get0_key
  - RSA_set0_key
  - RSA_get0_factors
  - RSA_set0_factors
  - RSA_get0_crt_params
  - RSA_set0_crt_params
  - ECDSA_SIG_get0
  - ECDSA_SIG_set0
  - openssl_thread_setup
  - openssl_thread_cleanup
  - openssl_seed
  - mapToBN
  - OpenSSLRSADNSCryptoKeyEngine::getName
  - OpenSSLRSADNSCryptoKeyEngine::maker
  - OpenSSLRSADNSCryptoKeyEngine::OpenSSLRSADNSCryptoKeyEngine
  - OpenSSLRSADNSCryptoKeyEngine::getBits
  - OpenSSLRSADNSCryptoKeyEngine::create
  - OpenSSLRSADNSCryptoKeyEngine::createFromPEMFile
  - OpenSSLRSADNSCryptoKeyEngine::convertToPEMFile
  - OpenSSLRSADNSCryptoKeyEngine::getKeyParamModulus
  - OpenSSLRSADNSCryptoKeyEngine::getKeyParamPublicExponent
  - OpenSSLRSADNSCryptoKeyEngine::getKeyParamPrivateExponent
  - OpenSSLRSADNSCryptoKeyEngine::getKeyParamPrime1
  - OpenSSLRSADNSCryptoKeyEngine::getKeyParamPrime2
  - OpenSSLRSADNSCryptoKeyEngine::getKeyParamDmp1
  - OpenSSLRSADNSCryptoKeyEngine::getKeyParamDmq1
  - OpenSSLRSADNSCryptoKeyEngine::getKeyParamIqmp
  - OpenSSLRSADNSCryptoKeyEngine::makeKeyParams
  - OpenSSLRSADNSCryptoKeyEngine::convertToISCVector
  - OpenSSLRSADNSCryptoKeyEngine::hashSize
  - OpenSSLRSADNSCryptoKeyEngine::hasher
  - OpenSSLRSADNSCryptoKeyEngine::hash
  - OpenSSLRSADNSCryptoKeyEngine::hashSizeToKind
  - OpenSSLRSADNSCryptoKeyEngine::sign
  - OpenSSLRSADNSCryptoKeyEngine::verify
  - OpenSSLRSADNSCryptoKeyEngine::getPublicKeyString
  - OpenSSLRSADNSCryptoKeyEngine::fromISCMap
  - OpenSSLRSADNSCryptoKeyEngine::fromPublicKeyString
  - OpenSSLECDSADNSCryptoKeyEngine::getName
  - OpenSSLECDSADNSCryptoKeyEngine::maker
  - OpenSSLECDSADNSCryptoKeyEngine::getBits
  - OpenSSLECDSADNSCryptoKeyEngine::OpenSSLECDSADNSCryptoKeyEngine
  - OpenSSLECDSADNSCryptoKeyEngine::create
  - OpenSSLECDSADNSCryptoKeyEngine::createFromPEMFile
  - OpenSSLECDSADNSCryptoKeyEngine::convertToPEMFile
  - OpenSSLECDSADNSCryptoKeyEngine::getPrivateKey
  - OpenSSLECDSADNSCryptoKeyEngine::convertToISCVector
  - OpenSSLECDSADNSCryptoKeyEngine::hash
  - OpenSSLECDSADNSCryptoKeyEngine::hasher
  - OpenSSLECDSADNSCryptoKeyEngine::hashSize
  - OpenSSLECDSADNSCryptoKeyEngine::sign
  - OpenSSLECDSADNSCryptoKeyEngine::verify
  - OpenSSLECDSADNSCryptoKeyEngine::getPublicKeyString
  - OpenSSLECDSADNSCryptoKeyEngine::makeKeyParams
  - OpenSSLECDSADNSCryptoKeyEngine::fromISCMap
  - OpenSSLECDSADNSCryptoKeyEngine::checkKey
  - OpenSSLECDSADNSCryptoKeyEngine::fromPublicKeyString
  - OpenSSLEDDSADNSCryptoKeyEngine::getName
  - OpenSSLEDDSADNSCryptoKeyEngine::maker
  - OpenSSLEDDSADNSCryptoKeyEngine::OpenSSLEDDSADNSCryptoKeyEngine
  - OpenSSLEDDSADNSCryptoKeyEngine::getBits
  - OpenSSLEDDSADNSCryptoKeyEngine::checkKey
  - OpenSSLEDDSADNSCryptoKeyEngine::create
  - OpenSSLEDDSADNSCryptoKeyEngine::createFromPEMFile
  - OpenSSLEDDSADNSCryptoKeyEngine::convertToPEMFile
  - OpenSSLEDDSADNSCryptoKeyEngine::convertToISCVector
  - OpenSSLEDDSADNSCryptoKeyEngine::sign
  - OpenSSLEDDSADNSCryptoKeyEngine::verify
  - OpenSSLEDDSADNSCryptoKeyEngine::getPublicKeyString
  - OpenSSLEDDSADNSCryptoKeyEngine::fromISCMap
  - OpenSSLEDDSADNSCryptoKeyEngine::fromPublicKeyString
  - LoaderStruct
  - LoaderStruct
  source_file: /src/pdns/pdns/recursordist/opensslsigners.cc
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields: []
      item_type: struct
      name: LoaderStruct
      pos:
        line_end: 2070
        line_start: 2051
        source_file: /src/pdns/pdns/recursordist/opensslsigners.cc
    - fields: []
      item_type: struct
      name: LoaderStruct
      pos:
        line_end: 2070
        line_start: 2051
        source_file: /src/pdns/pdns/recursordist/opensslsigners.cc
    typedefs: []
    union: []
- function_names:
  - GssName::GssName
  - GssName::GssName
  - GssName::setName
  - GssName::setName
  - ~GssName()
  - operator==(const GssName& rhs)
  - operator==(const GssName& /* rhs */)
  - GssName::match
  - GssName::match
  - GssName::valid
  - '& getLabel()'
  - GssContext::getErrorStrings
  source_file: /src/pdns/pdns/recursordist/gss_context.hh
  types:
    enum:
    - enumerators:
      - name: GSS_CONTEXT_NO_ERROR
      - name: GSS_CONTEXT_UNSUPPORTED
      - name: GSS_CONTEXT_NOT_FOUND
      - name: GSS_CONTEXT_INVALID
      - name: GSS_CONTEXT_NOT_INITIALIZED
      - name: GSS_CONTEXT_EXPIRED
      - name: GSS_CONTEXT_ALREADY_INITIALIZED
      - name: GSS_CONTEXT_LIMIT_REACHED
      item_type: enum
      name: GssContextError
      pos:
        line_end: 50
        line_start: 40
        source_file: /src/pdns/pdns/recursordist/gss_context.hh
    - enumerators:
      - name: GSS_CONTEXT_NONE
      - name: GSS_CONTEXT_ACCEPT
      - name: GSS_CONTEXT_INIT
      item_type: enum
      name: GssContextType
      pos:
        line_end: 58
        line_start: 53
        source_file: /src/pdns/pdns/recursordist/gss_context.hh
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - initPublicSuffixList
  - initPublicSuffixList
  source_file: /src/pdns/pdns/recursordist/pubsuffixloader.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/pdns/pdns/recursordist/opensslsigners.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - swapElements
  - QType::isSupportedType
  - QType::isMetadataType
  - QType::toString
  - QType::chartocode
  - '&QType::operator=(const char *p)'
  - '&QType::operator=(const string &s)'
  - QClass::QClass
  - QClass::toString
  source_file: /src/pdns/pdns/recursordist/qtype.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - BOOST_AUTO_TEST_CASE
  source_file: /src/pdns/pdns/recursordist/test-dnsparser_hh.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - encodeComboAddress
  - decodeComboAddress
  - encodeNetmask
  - decodeNetmask
  source_file: /src/pdns/pdns/recursordist/protozero-helpers.hh
  types:
    enum:
    - enumerators:
      - name: required_uint32_port
        value: '1'
      - name: required_bytes_address
        value: '2'
      item_type: enum
      name: PBComboAddress
      pos:
        line_end: 32
        line_start: 28
        source_file: /src/pdns/pdns/recursordist/protozero-helpers.hh
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - pdns::GlobalCounters::subscribe
  - pdns::GlobalCounters::unsubscribe
  - pdns::GlobalCounters::reset
  - pdns::TLocalCounters::TLocalCounters
  - ~TLocalCounters()
  - pdns::TLocalCounters::TLocalCounters
  - pdns::TLocalCounters::TLocalCounters
  - '& operator=(const TLocalCounters&)'
  - '& operator=(TLocalCounters&&)'
  - pdns::TLocalCounters::at
  - pdns::TLocalCounters::snapAt
  - pdns::TLocalCounters::getSnap
  - pdns::TLocalCounters::updateSnap
  - pdns::TLocalCounters::updateSnap
  - pdns::GlobalCounters<Counters>::sum
  - pdns::GlobalCounters<Counters>::avg
  - pdns::GlobalCounters<Counters>::max
  - pdns::GlobalCounters<Counters>::aggregatedSnap
  - pdns::GlobalCounters::subscribe
  - pdns::GlobalCounters::unsubscribe
  - pdns::GlobalCounters::reset
  - pdns::TLocalCounters::TLocalCounters
  - ~TLocalCounters()
  - pdns::TLocalCounters::TLocalCounters
  - pdns::TLocalCounters::TLocalCounters
  - '& operator=(const TLocalCounters&)'
  - '& operator=(TLocalCounters&&)'
  - pdns::TLocalCounters::at
  - pdns::TLocalCounters::snapAt
  - pdns::TLocalCounters::getSnap
  - pdns::TLocalCounters::updateSnap
  - pdns::TLocalCounters::updateSnap
  - pdns::GlobalCounters<Counters>::sum
  - pdns::GlobalCounters<Counters>::avg
  - pdns::GlobalCounters<Counters>::max
  - pdns::GlobalCounters<Counters>::aggregatedSnap
  source_file: /src/pdns/pdns/recursordist/tcounters.hh
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: d_instances
        type: std::set<TLocalCounters<Counters>*>
      - name: d_history
        type: Counters
      item_type: struct
      name: Guarded
      pos:
        line_end: 120
        line_start: 113
        source_file: /src/pdns/pdns/recursordist/tcounters.hh
    - fields:
      - name: d_instances
        type: std::set<TLocalCounters<Counters>*>
      - name: d_history
        type: Counters
      item_type: struct
      name: Guarded
      pos:
        line_end: 120
        line_start: 113
        source_file: /src/pdns/pdns/recursordist/tcounters.hh
    typedefs: []
    union: []
- function_names:
  - primeHints
  - convertServersForAD
  - pleaseUseNewSDomainsMap
  - reloadZoneConfiguration
  - readAuthZoneData
  - processForwardZones
  - processApiZonesFile
  - processForwardZonesFile
  - processExportEtcHosts
  - processServeRFC1918
  - processServeRFC6303
  - processAllowNotifyFor
  - processAllowNotifyForFile
  - parseZoneConfiguration
  source_file: /src/pdns/pdns/recursordist/reczones.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - DNSSEC::keyTypeToString
  - DNSSEC::shorthand2algorithm
  - DNSSEC::algorithm2name
  source_file: /src/pdns/pdns/recursordist/dnssec.hh
  types:
    enum:
    - enumerators:
      - name: KSK
      - name: CSK
      - name: ZSK
      item_type: enum
      name: keytype_t
      pos:
        line_end: 34
        line_start: 29
        source_file: /src/pdns/pdns/recursordist/dnssec.hh
    - enumerators:
      - name: RSAMD5
        value: '1'
      - name: DSANSEC3SHA1
        value: '6'
      - name: RSASHA1
        value: '5'
      - name: DSA
        value: '3'
      - name: DH
        value: '2'
      - name: RSASHA1NSEC3SHA1
        value: '7'
      - name: RSASHA256
        value: '8'
      - name: RSASHA512
        value: '10'
      - name: ECCGOST
        value: '12'
      - name: ECDSA256
        value: '13'
      - name: ECDSA384
        value: '14'
      - name: ED448
        value: '16'
      - name: ED25519
        value: '15'
      item_type: enum
      name: keyalgorithm_t
      pos:
        line_end: 50
        line_start: 35
        source_file: /src/pdns/pdns/recursordist/dnssec.hh
    - enumerators:
      - name: DIGEST_SHA1
        value: '1'
      - name: DIGEST_SHA384
        value: '4'
      - name: DIGEST_GOST
        value: '3'
      - name: DIGEST_SHA256
        value: '2'
      item_type: enum
      name: dsdigestalgorithm_t
      pos:
        line_end: 58
        line_start: 52
        source_file: /src/pdns/pdns/recursordist/dnssec.hh
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - getALPNVector
  - shouldDoVerboseLogging
  - shouldDoVerboseLogging
  - OpenSSLFrontendContext::OpenSSLFrontendContext
  - OpenSSLFrontendContext::cleanup
  - sni_server_name_callback
  - OpenSSLSession::OpenSSLSession
  - OpenSSLSession::getNative
  - handleIORequest
  - OpenSSLTLSConnection::OpenSSLTLSConnection
  - OpenSSLTLSConnection::OpenSSLTLSConnection
  - OpenSSLTLSConnection::getAsyncFDs
  - OpenSSLTLSConnection::convertIORequestToIOState
  - ''
  - tryConnect
  - connect
  - tryHandshake
  - doHandshake
  - tryWrite
  - tryRead
  - read
  - write
  - isUsable
  - close
  - getServerNameIndication
  - getNextProtocol
  - getVerifyResult
  - getTLSVersion
  - hasSessionBeenResumed
  - getSessions
  - setSession
  - addNewTicket
  - enableKTLS
  - isClient
  - generateConnectionIndexIfNeeded
  - getConnectionIndex
  - Private
  - createServerSideContext
  - createClientSideContext
  - OpenSSLTLSIOCtx
  - OpenSSLTLSIOCtx
  - OpenSSLTLSIOCtx
  - OpenSSLTLSIOCtx
  - '& operator=(const OpenSSLTLSIOCtx&)'
  - '& operator=(OpenSSLTLSIOCtx&&)'
  - ~OpenSSLTLSIOCtx() override
  - ticketKeyCb
  - ocspStaplingCb
  - newTicketFromServerCb
  - getOpenSSLContext
  - getConnection
  - getClientConnection
  - rotateTicketsKey
  - loadTicketsKeys
  - loadTicketsKey
  - getTicketsKeysCount
  - getName
  - isServerContext
  - alpnServerSelectCallback
  - safe_memory_lock
  - safe_memory_release
  - GnuTLSTicketsKey::GnuTLSTicketsKey
  - GnuTLSTicketsKey::GnuTLSTicketsKey
  - GnuTLSTicketsKey::GnuTLSTicketsKey
  - GnuTLSTicketsKey::content
  - ~GnuTLSTicketsKey()
  - '& getKey() const'
  - GnuTLSSession::GnuTLSSession
  - ~GnuTLSSession() override
  - '& getNative()'
  - GnuTLSConnection
  - GnuTLSConnection
  - newTicketFromServerCb
  - tryConnect
  - connect
  - doHandshake
  - tryHandshake
  - tryWrite
  - tryRead
  - read
  - write
  - isUsable
  - getServerNameIndication
  - getNextProtocol
  - getTLSVersion
  - getVerifyResult
  - hasSessionBeenResumed
  - getSessions
  - setSession
  - close
  - setALPNProtos
  - getAsyncFDs
  - GnuTLSIOCtx::GnuTLSIOCtx
  - GnuTLSIOCtx::GnuTLSIOCtx
  - ~GnuTLSIOCtx() override
  - GnuTLSIOCtx::getConnection
  - GnuTLSIOCtx::getPerThreadCredentials
  - GnuTLSIOCtx::getClientConnection
  - GnuTLSIOCtx::addTicketsKey
  - GnuTLSIOCtx::rotateTicketsKey
  - GnuTLSIOCtx::loadTicketsKey
  - GnuTLSIOCtx::loadTicketsKeys
  - GnuTLSIOCtx::getTicketsKeysCount
  - GnuTLSIOCtx::getName
  - TLSFrontend
  - getTLSContext
  source_file: /src/pdns/pdns/recursordist/tcpiohandler.cc
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields: []
      item_type: struct
      name: Private
      pos:
        line_end: 698
        line_start: 695
        source_file: /src/pdns/pdns/recursordist/tcpiohandler.cc
    typedefs: []
    union: []
- function_names:
  - RecursorControlChannel::RecursorControlChannel
  - RecursorControlChannel::RecursorControlChannel
  - '& operator=(const RecursorControlChannel&)'
  - '& operator=(RecursorControlChannel&&)'
  - '& operator+=(const Answer& rhs)'
  - RecursorControlChannel::getDescriptor
  - RecursorControlParser::RecursorControlParser
  - RecursorControlParser::nop
  source_file: /src/pdns/pdns/recursordist/rec_channel.hh
  types:
    enum:
    - enumerators:
      - name: API
      - name: SNMP
      - name: RecControl
      - name: Carbon
      item_type: enum
      name: StatComponent
      pos:
        line_end: 101
        line_start: 95
        source_file: /src/pdns/pdns/recursordist/rec_channel.hh
    preproc_defs: []
    structs:
    - fields:
      - name: d_ret
        type: int
      - name: d_str
        type: std::string
      item_type: struct
      name: Answer
      pos:
        line_end: 68
        line_start: 56
        source_file: /src/pdns/pdns/recursordist/rec_channel.hh
    - fields:
      - name: d_prometheusName
        type: std::string
      - name: d_value
        type: std::string
      - name: d_prometheusType
        type: std::optional<PrometheusMetricType>
      - name: d_prometheusDescr
        type: std::optional<std::string>
      item_type: struct
      name: StatsMapEntry
      pos:
        line_end: 109
        line_start: 103
        source_file: /src/pdns/pdns/recursordist/rec_channel.hh
    - fields:
      - name: hostname
        type: std::string
      - name: instance_name
        type: std::string
      - name: namespace_name
        type: std::string
      - name: servers
        type: std::vector<std::string>
      item_type: struct
      name: CarbonConfig
      pos:
        line_end: 130
        line_start: 124
        source_file: /src/pdns/pdns/recursordist/rec_channel.hh
    typedefs: []
    union: []
- function_names:
  - pdns::trace::AnyValue::encode
  - pdns::trace::AnyValue::decode
  - pdns::trace::AnyValue::toLogString
  - pdns::trace::EntityRef::encode
  - pdns::trace::EntityRef::decode
  - pdns::trace::KeyValue::encode
  - pdns::trace::Resource::encode
  - pdns::trace::Resource::decode
  - pdns::trace::InstrumentationScope::encode
  - pdns::trace::InstrumentationScope::decode
  - pdns::trace::Status::encode
  - pdns::trace::Status::decode
  - Span::Event::encode(protozero::pbf_writer& writer) const
  - Span::Event::decode(protozero::pbf_reader& reader)
  - Span::Link::encode(protozero::pbf_writer& writer) const
  - Span::Link::decode(protozero::pbf_reader& reader)
  - pdns::trace::Span::encode
  - pdns::trace::Span::decode
  - pdns::trace::ScopeSpans::encode
  - pdns::trace::ScopeSpans::decode
  - pdns::trace::ResourceSpans::encode
  - pdns::trace::ResourceSpans::decode
  - pdns::trace::TracesData::encode
  - pdns::trace::TracesData::decode
  - pdns::trace::KeyValue::decode
  - pdns::trace::extractOTraceIDs
  - pdns::trace::extractOTraceIDs
  - pdns::trace::SpanID::toLogString
  - pdns::trace::TraceID::toLogString
  - pdns::trace::AnyValue::encode
  - pdns::trace::AnyValue::decode
  - pdns::trace::AnyValue::toLogString
  - pdns::trace::EntityRef::encode
  - pdns::trace::EntityRef::decode
  - pdns::trace::KeyValue::encode
  - pdns::trace::Resource::encode
  - pdns::trace::Resource::decode
  - pdns::trace::InstrumentationScope::encode
  - pdns::trace::InstrumentationScope::decode
  - pdns::trace::Status::encode
  - pdns::trace::Status::decode
  - Span::Event::encode(protozero::pbf_writer& writer) const
  - Span::Event::decode(protozero::pbf_reader& reader)
  - Span::Link::encode(protozero::pbf_writer& writer) const
  - Span::Link::decode(protozero::pbf_reader& reader)
  - pdns::trace::Span::encode
  - pdns::trace::Span::decode
  - pdns::trace::ScopeSpans::encode
  - pdns::trace::ScopeSpans::decode
  - pdns::trace::ResourceSpans::encode
  - pdns::trace::ResourceSpans::decode
  - pdns::trace::TracesData::encode
  - pdns::trace::TracesData::decode
  - pdns::trace::KeyValue::decode
  - pdns::trace::extractOTraceIDs
  - pdns::trace::extractOTraceIDs
  - pdns::trace::SpanID::toLogString
  - pdns::trace::TraceID::toLogString
  source_file: /src/pdns/pdns/recursordist/protozero-trace.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - TCPLOG
  - TCPLOG
  - TCPConnection::TCPConnection
  - TCPConnection::~TCPConnection()
  - terminateTCPConnection
  - sendErrorOverTCP
  - finishTCPReply
  - RunningTCPQuestionGuard::RunningTCPQuestionGuard
  - RunningTCPQuestionGuard::RunningTCPQuestionGuard
  - '& operator=(const RunningTCPQuestionGuard&)'
  - '& operator=(RunningTCPQuestionGuard&&)'
  - RunningTCPQuestionGuard::RunningTCPQuestionGuard
  - ~RunningTCPQuestionGuard()
  - RunningTCPQuestionGuard::keep
  - RunningTCPQuestionGuard::handleTCPReadResult
  - handleNotify
  - doProtobufLogQuery
  - doProcessTCPQuestion
  - handleRunningTCPQuestion
  - handleNewTCPQuestion
  - TCPIOHandlerStateChange
  - TCPIOHandlerIO
  - checkFastOpenSysctl
  - checkTFOconnect
  - asendtcp
  - arecvtcp
  - makeTCPServerSockets
  source_file: /src/pdns/pdns/recursordist/rec-tcp.cc
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: REC_DEBUG_TCP
      pos:
        line_end: 75
        line_start: 74
        source_file: /src/pdns/pdns/recursordist/rec-tcp.cc
      type_or_value: 0 // NOLINT(cppcoreguidelines-macro-usage)
    structs: []
    typedefs: []
    union: []
- function_names:
  - openssl_pthreads_locking_callback
  - openssl_pthreads_id_callback
  - openssl_thread_setup
  - openssl_thread_cleanup
  - registerOpenSSLUser
  - unregisterOpenSSLUser
  - libssl_load_provider
  - libssl_load_engine
  - libssl_get_ticket_key_callback_data
  - libssl_set_ticket_key_callback_data
  - libssl_ticket_key_callback
  - libssl_server_name_callback
  - libssl_info_callback
  - libssl_set_error_counters_callback
  - libssl_ocsp_stapling_callback
  - libssl_validate_ocsp_response
  - libssl_load_ocsp_responses
  - libssl_generate_ocsp_response
  - libssl_get_last_key_type
  - operator()(STACK_OF(GENERAL_NAME)* ptr) const noexcept
  - get_names_from_certificate
  - get_names_from_last_certificate
  - libssl_tls_version_from_string
  - libssl_tls_version_to_string
  - libssl_set_min_tls_version
  - OpenSSLTLSTicketKeysRing::OpenSSLTLSTicketKeysRing
  - OpenSSLTLSTicketKeysRing::~OpenSSLTLSTicketKeysRing()
  - OpenSSLTLSTicketKeysRing::addKey
  - OpenSSLTLSTicketKeysRing::getEncryptionKey
  - OpenSSLTLSTicketKeysRing::getDecryptionKey
  - OpenSSLTLSTicketKeysRing::getKeysCount
  - OpenSSLTLSTicketKeysRing::loadTicketsKeys
  - OpenSSLTLSTicketKeysRing::loadTicketsKey
  - OpenSSLTLSTicketKeysRing::rotateTicketsKey
  - OpenSSLTLSTicketKey::OpenSSLTLSTicketKey
  - OpenSSLTLSTicketKey::OpenSSLTLSTicketKey
  - OpenSSLTLSTicketKey::OpenSSLTLSTicketKey
  - OpenSSLTLSTicketKey::~OpenSSLTLSTicketKey()
  - OpenSSLTLSTicketKey::nameMatches
  - OpenSSLTLSTicketKey::content
  - OpenSSLTLSTicketKey::encrypt
  - OpenSSLTLSTicketKey::decrypt
  - getNewServerContext
  - mergeNewCertificateAndKey
  - libssl_init_server_context_no_sni
  - libssl_init_server_context
  - libssl_key_log_file_callback
  - libssl_set_key_log_file
  - libssl_set_alpn_select_callback
  - libssl_set_alpn_protos
  - libssl_get_error_string
  source_file: /src/pdns/pdns/recursordist/libssl.cc
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: DNSDIST_ENABLE_LIBSSL_ENGINE
      pos:
        line_end: 17
        line_start: 16
        source_file: /src/pdns/pdns/recursordist/libssl.cc
      type_or_value: '1'
    structs:
    - fields: []
      item_type: struct
      name: StackOfNamesDeleter
      pos:
        line_end: 554
        line_start: 549
        source_file: /src/pdns/pdns/recursordist/libssl.cc
    typedefs: []
    union: []
- function_names:
  - NegCache::NegCache
  - NegCache::size
  - NegCache::NegCacheEntry::sizeEstimate() const
  - NegCache::getRootNXTrust
  - NegCache::updateStaleEntry
  - NegCache::get
  - NegCache::add
  - NegCache::updateValidationStatus
  - NegCache::count
  - NegCache::count
  - NegCache::wipe
  - NegCache::wipeTyped
  - NegCache::clear
  - NegCache::prune
  - NegCache::doDump
  source_file: /src/pdns/pdns/recursordist/negcache.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - FrameStreamLogger::FrameStreamLogger
  - FrameStreamLogger::FrameStreamLogger
  - '& operator=(const FrameStreamLogger&)'
  - '& operator=(FrameStreamLogger&&)'
  - FrameStreamLogger::address
  - FrameStreamLogger::name
  - FrameStreamLogger::toString
  - FrameStreamLogger::getStats
  - FrameStreamLogger::FrameStreamLogger
  - FrameStreamLogger::FrameStreamLogger
  - '& operator=(const FrameStreamLogger&)'
  - '& operator=(FrameStreamLogger&&)'
  source_file: /src/pdns/pdns/recursordist/fstrm_logger.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - handleCounter64Stats
  - handleDisabledCounter64Stats
  - registerCounter64Stat
  - RecursorSNMPAgent::sendCustomTrap
  - RecursorSNMPAgent::RecursorSNMPAgent
  source_file: /src/pdns/pdns/recursordist/rec-snmp.cc
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: RECURSOR_OID
      pos:
        line_end: 40
        line_start: 39
        source_file: /src/pdns/pdns/recursordist/rec-snmp.cc
      type_or_value: 1, 3, 6, 1, 4, 1, 43315, 2
    - item_type: preproc_def
      name: RECURSOR_STATS_OID
      pos:
        line_end: 41
        line_start: 40
        source_file: /src/pdns/pdns/recursordist/rec-snmp.cc
      type_or_value: RECURSOR_OID, 1
    - item_type: preproc_def
      name: RECURSOR_TRAPS_OID
      pos:
        line_end: 42
        line_start: 41
        source_file: /src/pdns/pdns/recursordist/rec-snmp.cc
      type_or_value: RECURSOR_OID, 10, 0
    - item_type: preproc_def
      name: RECURSOR_TRAP_OBJECTS_OID
      pos:
        line_end: 43
        line_start: 42
        source_file: /src/pdns/pdns/recursordist/rec-snmp.cc
      type_or_value: RECURSOR_OID, 11
    structs: []
    typedefs: []
    union: []
- function_names:
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  source_file: /src/pdns/pdns/recursordist/test-packetcache_hh.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/pdns/pdns/recursordist/coverage.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  source_file: /src/pdns/pdns/recursordist/test-dnsname_cc.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  source_file: /src/pdns/pdns/recursordist/test-filterpo_cc.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - getAlignmentPadding
  - allocate
  - deallocate
  - construct
  - construct
  - operator==(lazy_allocator<T> const&, lazy_allocator<T> const&) noexcept
  - operator!=(lazy_allocator<T> const&, lazy_allocator<T> const&) noexcept
  source_file: /src/pdns/pdns/recursordist/lazy_allocator.hh
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: PDNS_MAP_STACK
      pos:
        line_end: 32
        line_start: 31
        source_file: /src/pdns/pdns/recursordist/lazy_allocator.hh
      type_or_value: MAP_STACK
    - item_type: preproc_def
      name: PDNS_MAP_STACK
      pos:
        line_end: 34
        line_start: 33
        source_file: /src/pdns/pdns/recursordist/lazy_allocator.hh
      type_or_value: '0'
    structs:
    - fields: []
      item_type: struct
      name: lazy_allocator
      pos:
        line_end: 146
        line_start: 37
        source_file: /src/pdns/pdns/recursordist/lazy_allocator.hh
    typedefs: []
    union: []
- function_names:
  - NSECBitmapGenerator::NSECBitmapGenerator
  - NSECBitmapGenerator::set
  - NSECBitmapGenerator::finish
  - NSECBitmap::toPacket
  - NSECBitmap::fromPacket
  - NSECBitmap::getZoneRepresentation
  - NSECRecordContent::report
  - NSECRecordContent::make
  - NSECRecordContent::NSECRecordContent
  - NSECRecordContent::toPacket
  - NSECRecordContent::make
  - NSECRecordContent::getZoneRepresentation
  - NSEC3RecordContent::report
  - NSEC3RecordContent::make
  - NSEC3RecordContent::NSEC3RecordContent
  - NSEC3RecordContent::toPacket
  - NSEC3RecordContent::make
  - NSEC3RecordContent::getZoneRepresentation
  - NSEC3PARAMRecordContent::report
  - NSEC3PARAMRecordContent::make
  - NSEC3PARAMRecordContent::NSEC3PARAMRecordContent
  - NSEC3PARAMRecordContent::toPacket
  - NSEC3PARAMRecordContent::make
  - NSEC3PARAMRecordContent::getZoneRepresentation
  - CSYNCRecordContent::report
  - CSYNCRecordContent::make
  - CSYNCRecordContent::CSYNCRecordContent
  - CSYNCRecordContent::toPacket
  - CSYNCRecordContent::make
  - CSYNCRecordContent::getZoneRepresentation
  source_file: /src/pdns/pdns/recursordist/nsecrecords.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - gettime
  - gettime
  source_file: /src/pdns/pdns/recursordist/gettime.cc
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: CLOCK_MONOTONIC_RAW
      pos:
        line_end: 29
        line_start: 28
        source_file: /src/pdns/pdns/recursordist/gettime.cc
      type_or_value: CLOCK_MONOTONIC
    structs: []
    typedefs: []
    union: []
- function_names:
  - JsonException::JsonException
  source_file: /src/pdns/pdns/recursordist/json.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - stringtok
  - rfc1982LessThan
  - rfc1982LessThanOrEqual
  - vstringtok
  - writen2
  - stringerror
  - CPUTime::start
  - CPUTime::ndiff
  - DTime::DTime
  - DTime::DTime
  - '& operator=(const DTime &dt)'
  - DTime::udiffNoReset
  - DTime::setTimeval
  - DTime::getTimeval
  - DTime::time
  - DTime::set
  - DTime::udiff
  - toLowerInPlace
  - toLower
  - toLowerCanonic
  - toUpper
  - getTime
  - unixDie
  - makeFloat
  - uSec
  - operator<(const struct timeval& lhs, const struct timeval& rhs)
  - operator<=(const struct timeval& lhs, const struct timeval& rhs)
  - operator<(const struct timespec& lhs, const struct timespec& rhs)
  - pdns_ilexicographical_compare_three_way
  - pdns_ilexicographical_compare
  - pdns_iequals
  - pdns_iequals_ch
  - operator()(const string& a, const string& b) const
  - operator() (const std::string& lhs, const std::string& rhs) const
  - operator()(const pair<string, uint16_t>& a, const pair<string, uint16_t>& b) const
  - pdns_ci_find
  - isCanonical
  - toCanonic
  - replacing_insert
  - Regex::Regex
  - '& operator=(const Regex&)'
  - Regex::Regex
  - '& operator=(Regex&& rhs)'
  - ~Regex()
  - operator()(regex_t* ptr) const noexcept
  - SimpleMatch::SimpleMatch
  - SimpleMatch::match
  - SimpleMatch::match
  - SimpleMatch::match
  - SimpleMatch::match
  - defTer
  - valueOrEmpty
  - addS
  - addS
  - rplookup
  - pdns::checked_conv
  - pdns::checked_stoi
  - pdns::checked_stoi_nonzero
  - pdns::checked_stoi_into
  - pdns::checked_conv
  - pdns::checked_stoi
  - pdns::checked_stoi_nonzero
  - pdns::checked_stoi_into
  - FDWrapper
  - FDWrapper
  - FDWrapper
  - '& operator=(const FDWrapper& rhs)'
  - ~FDWrapper()
  - FDWrapper
  - '& operator=(FDWrapper&& rhs) noexcept'
  - getHandle
  - operator int() const
  - reset
  - release
  - operator()(FILE* filePtr) const noexcept
  - operator()(FILE* filePtr) const noexcept
  source_file: /src/pdns/pdns/recursordist/misc.hh
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields: []
      item_type: struct
      name: CIStringCompare
      pos:
        line_end: 436
        line_start: 430
        source_file: /src/pdns/pdns/recursordist/misc.hh
    - fields: []
      item_type: struct
      name: CIStringComparePOSIX
      pos:
        line_end: 456
        line_start: 438
        source_file: /src/pdns/pdns/recursordist/misc.hh
    - fields: []
      item_type: struct
      name: CIStringPairCompare
      pos:
        line_end: 468
        line_start: 458
        source_file: /src/pdns/pdns/recursordist/misc.hh
    - fields: []
      item_type: struct
      name: Deleter
      pos:
        line_end: 536
        line_start: 530
        source_file: /src/pdns/pdns/recursordist/misc.hh
    - fields:
      - name: content[8]
        type: uint8_t
      item_type: struct
      name: NodeOrLocatorID
      pos:
        line_end: 851
        line_start: 851
        source_file: /src/pdns/pdns/recursordist/misc.hh
    - fields:
      - name: d_fd
        type: int
      item_type: struct
      name: FDWrapper
      pos:
        line_end: 910
        line_start: 853
        source_file: /src/pdns/pdns/recursordist/misc.hh
    - fields: []
      item_type: struct
      name: FilePtrDeleter
      pos:
        line_end: 928
        line_start: 916
        source_file: /src/pdns/pdns/recursordist/misc.hh
    - fields: []
      item_type: struct
      name: FilePtrDeleter
      pos:
        line_end: 928
        line_start: 916
        source_file: /src/pdns/pdns/recursordist/misc.hh
    typedefs:
    - item_type: typedef
      name: AtomicCounterInner
      pos:
        line_end: 426
        line_start: 426
        source_file: /src/pdns/pdns/recursordist/misc.hh
      type: unsigned long
    - item_type: typedef
      name: AtomicCounter
      pos:
        line_end: 427
        line_start: 427
        source_file: /src/pdns/pdns/recursordist/misc.hh
      type: atomic<AtomicCounterInner>
    union:
    - fields:
      - name: hdr
        type: struct cmsghdr
      - name: buf[256]
        type: char
      item_type: union
      name: cmsgbuf_aligned
      pos:
        line_end: 600
        line_start: 600
        source_file: /src/pdns/pdns/recursordist/misc.hh
- function_names:
  - pdns::ProtoZero::Message::encodeComboAddress(const protozero::pbf_tag_type type,
    const ComboAddress& address)
  - pdns::ProtoZero::Message::encodeNetmask(const protozero::pbf_tag_type type, const
    Netmask& subnet, uint8_t mask)
  - pdns::ProtoZero::Message::encodeDNSName(protozero::pbf_writer& pbf, std::string&
    buffer, const protozero::pbf_tag_type type, const DNSName& name)
  - pdns::ProtoZero::Message::setRequest(const boost::uuids::uuid& uniqueId, const
    ComboAddress& requestor, const ComboAddress& local, const DNSName& qname, uint16_t
    qtype, uint16_t qclass, uint16_t qid, pdns::ProtoZero::Message::TransportProtocol
    proto, size_t len)
  - pdns::ProtoZero::Message::setResponse(const DNSName& qname, uint16_t qtype, uint16_t
    qclass)
  - pdns::ProtoZero::Message::addRRsFromPacket(const char* packet, const size_t len,
    bool includeCNAME)
  - pdns::ProtoZero::Message::addRR(const DNSName& name, uint16_t uType, uint16_t
    uClass, uint32_t uTTL, const std::string& blob)
  source_file: /src/pdns/pdns/recursordist/protozero.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - '& Counters::merge(const Counters& data)'
  - rec::Counters::toString
  - '& Counters::merge(const Counters& data)'
  - rec::Counters::toString
  - atomicThread
  - tcounterThread
  - main
  source_file: /src/pdns/pdns/recursordist/rec-tcounters.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - ZoneParserTNG::disableGenerate
  - ZoneParserTNG::setMaxGenerateSteps
  - ZoneParserTNG::setMaxIncludes
  - ZoneParserTNG::setDefaultTTL
  - ZoneParserTNG::getFileset
  - ZoneParserTNG::filestate
  source_file: /src/pdns/pdns/recursordist/zoneparser-tng.hh
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*d_fp'
        type: FILE
      - name: d_filename
        type: string
      - name: d_lineno
        type: int
      item_type: struct
      name: filestate
      pos:
        line_end: 73
        line_start: 67
        source_file: /src/pdns/pdns/recursordist/zoneparser-tng.hh
    typedefs:
    - item_type: typedef
      name: exception
      pos:
        line_end: 38
        line_start: 38
        source_file: /src/pdns/pdns/recursordist/zoneparser-tng.hh
      type: runtime_error
    - item_type: typedef
      name: parts_t
      pos:
        line_end: 39
        line_start: 39
        source_file: /src/pdns/pdns/recursordist/zoneparser-tng.hh
      type: deque<pair<string::size_type, string::size_type> >
    union: []
- function_names:
  - ResolveContext
  - ~ResolveContext()
  - ResolveContext
  - '& operator=(const ResolveContext&)'
  - ResolveContext
  - '& operator=(ResolveContext&&)'
  source_file: /src/pdns/pdns/recursordist/resolve-context.hh
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: d_initialRequestId
        type: boost::optional<const boost::uuids::uuid&>
      - name: d_nsName
        type: DNSName
      - name: d_auth
        type: DNSName
      item_type: struct
      name: ResolveContext
      pos:
        line_end: 46
        line_start: 31
        source_file: /src/pdns/pdns/recursordist/resolve-context.hh
    typedefs: []
    union: []
- function_names: []
  source_file: /src/pdns/pdns/recursordist/test-syncres_cc.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs:
    - item_type: typedef
      name: testkeysset_t
      pos:
        line_end: 48
        line_start: 48
        source_file: /src/pdns/pdns/recursordist/test-syncres_cc.hh
      type: unordered_map<DNSName, std::pair<DNSSECPrivateKey, DSRecordContent>>
    union: []
- function_names: []
  source_file: /src/pdns/pdns/recursordist/base32.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - ArgvMap::begin
  - ArgvMap::end
  - '& ArgvMap::set(const string& var)'
  - ArgvMap::setDefault
  - ArgvMap::setDefaults
  - ArgvMap::mustDo
  - ArgvMap::list
  - '& ArgvMap::set(const string& var, const string& help)'
  - ArgvMap::setCmd
  - '& ArgvMap::setSwitch(const string& var, const string& help)'
  - ArgvMap::contains
  - ArgvMap::helpstring
  - ArgvMap::formatOne
  - ArgvMap::configstring
  - '& ArgvMap::operator[](const string& arg)'
  - ArgvMap::asMode
  - ArgvMap::asGid
  - ArgvMap::asUid
  - ArgvMap::asNum
  - ArgvMap::isEmpty
  - ArgvMap::asDouble
  - ArgvMap::ArgvMap
  - ArgvMap::parmIsset
  - ArgvMap::warnIfDeprecated
  - ArgvMap::isDeprecated
  - ArgvMap::parseOne
  - '& ArgvMap::getCommands()'
  - ArgvMap::parse
  - ArgvMap::preParse
  - ArgvMap::parseFile
  - ArgvMap::preParseFile
  - ArgvMap::file
  - ArgvMap::file
  - ArgvMap::gatherIncludes
  source_file: /src/pdns/pdns/recursordist/arguments.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - pdns::shuffle
  - shuffle
  - mapTypesToOrder
  - pdns::orderAndShuffle
  - pdns::dedupRecords
  source_file: /src/pdns/pdns/recursordist/shuffle.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/pdns/pdns/recursordist/ednsextendederror.hh
  types:
    enum:
    - enumerators:
      - name: Other
        value: '0'
      - name: StaleAnswer
        value: '3'
      - name: SignatureExpired
        value: '7'
      - name: NoZoneKeyBitSet
        value: '11'
      - name: Blocked
        value: '15'
      - name: NotSupported
        value: '21'
      - name: SignatureExpiredBeforeValid
        value: '25'
      - name: Synthesized
        value: '29'
      - name: ForgedAnswer
        value: '4'
      - name: SignatureNotYetValid
        value: '8'
      - name: Censored
        value: '16'
      - name: NSECMissing
        value: '12'
      - name: Prohibited
        value: '18'
      - name: NoReachableAuthority
        value: '22'
      - name: TooEarly
        value: '26'
      - name: UnsupportedDSDigestType
        value: '2'
      - name: UnsupportedDNSKEYAlgorithm
        value: '1'
      - name: DNSSECIndeterminate
        value: '5'
      - name: DNSKEYMissing
        value: '9'
      - name: Filtered
        value: '17'
      - name: CachedError
        value: '13'
      - name: StaleNXDOMAINAnswer
        value: '19'
      - name: NetworkError
        value: '23'
      - name: UnsupportedNSEC3IterationsValue
        value: '27'
      - name: DNSSECBogus
        value: '6'
      - name: NotReady
        value: '14'
      - name: RRSIGsMissing
        value: '10'
      - name: NotAuthoritative
        value: '20'
      - name: InvalidData
        value: '24'
      - name: UnableToConformToPolicy
        value: '28'
      item_type: enum
      name: code
      pos:
        line_end: 60
        line_start: 28
        source_file: /src/pdns/pdns/recursordist/ednsextendederror.hh
    preproc_defs: []
    structs:
    - fields:
      - name: infoCode
        type: uint16_t
      - name: extraText
        type: std::string
      item_type: struct
      name: EDNSExtendedError
      pos:
        line_end: 63
        line_start: 26
        source_file: /src/pdns/pdns/recursordist/ednsextendederror.hh
    typedefs: []
    union: []
- function_names:
  - ~DevPollFDMultiplexer()
  - DevPollFDMultiplexer::getName
  - makeDevPoll
  - DevPollRegisterOurselves
  - DevPollFDMultiplexer::DevPollFDMultiplexer
  - convertEventKind
  - DevPollFDMultiplexer::addFD
  - DevPollFDMultiplexer::removeFD
  - DevPollFDMultiplexer::getAvailableFDs
  - DevPollFDMultiplexer::run
  - acceptData
  - main
  source_file: /src/pdns/pdns/recursordist/devpollmplexer.cc
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields: []
      item_type: struct
      name: DevPollRegisterOurselves
      pos:
        line_end: 75
        line_start: 69
        source_file: /src/pdns/pdns/recursordist/devpollmplexer.cc
    typedefs: []
    union: []
- function_names:
  - ~TLSSession()
  - ~TLSConnection()
  - TLSConnection::setUnknownTicketKey
  - TLSConnection::getUnknownTicketKey
  - TLSConnection::setResumedFromInactiveTicketKey
  - TLSConnection::getResumedFromInactiveTicketKey
  - TLSCtx::TLSCtx
  - ~TLSCtx()
  - TLSCtx::loadTicketsKeys
  - TLSCtx::loadTicketsKey
  - TLSCtx::handleTicketsKeyRotation
  - TLSCtx::getNextTicketsKeyRotation
  - TLSCtx::setTicketsKeyAddedHook
  - '& getTicketsKeyAddedHook()'
  - TLSCtx::hasTicketsKeyAddedHook
  - TLSFrontend::TLSFrontend
  - TLSFrontend::TLSFrontend
  - TLSFrontend::rotateTicketsKey
  - TLSFrontend::loadTicketsKeys
  - TLSFrontend::loadTicketsKey
  - TLSFrontend::getContext
  - TLSFrontend::setParent
  - TLSFrontend::cleanup
  - TLSFrontend::getTicketsKeysCount
  - TLSFrontend::timeToString
  - TLSFrontend::getTicketsKeyRotationDelay
  - TLSFrontend::getNextTicketsKeyRotation
  - TLSFrontend::getRequestedProvider
  - TLSFrontend::getEffectiveProvider
  - TCPIOHandler::TCPIOHandler
  - TCPIOHandler::TCPIOHandler
  - ~TCPIOHandler()
  - TCPIOHandler::close
  - TCPIOHandler::getDescriptor
  - TCPIOHandler::tryConnect
  - TCPIOHandler::connect
  - TCPIOHandler::tryHandshake
  - TCPIOHandler::read
  - TCPIOHandler::tryRead
  - TCPIOHandler::tryWrite
  - TCPIOHandler::write
  - TCPIOHandler::getServerNameIndication
  - TCPIOHandler::getNextProtocol
  - TCPIOHandler::getTLSVersion
  - TCPIOHandler::isTLS
  - TCPIOHandler::getVerifyResult
  - TCPIOHandler::hasTLSSessionBeenResumed
  - TCPIOHandler::getResumedFromInactiveTicketKey
  - TCPIOHandler::getUnknownTicketKey
  - TCPIOHandler::setTLSSession
  - TCPIOHandler::getTLSSessions
  - TCPIOHandler::isUsable
  - TCPIOHandler::getAsyncFDs
  source_file: /src/pdns/pdns/recursordist/tcpiohandler.hh
  types:
    enum:
    - enumerators:
      - name: Done
      - name: Async
      - name: NeedRead
      - name: NeedWrite
      item_type: enum
      name: IOState
      pos:
        line_end: 12
        line_start: 12
        source_file: /src/pdns/pdns/recursordist/tcpiohandler.hh
    - enumerators:
      - name: Unset
      - name: DoH
      - name: DoT
      item_type: enum
      name: ALPN
      pos:
        line_end: 144
        line_start: 144
        source_file: /src/pdns/pdns/recursordist/tcpiohandler.hh
    preproc_defs: []
    structs:
    - fields:
      - name: d_provider
        type: std::string
      - name: d_ciphers
        type: std::string
      - name: d_ciphers13
        type: std::string
      - name: d_caStore
        type: std::string
      - name: d_keyLogFile
        type: std::string
      - name: d_client_certificate
        type: std::string
      - name: d_client_certificate_key
        type: std::string
      - name: d_client_certificate_password
        type: std::string
      - name: d_alpn
        type: TLSFrontend::ALPN
      - name: d_validateCertificates
        type: bool
      - name: d_releaseBuffers
        type: bool
      - name: d_enableRenegotiation
        type: bool
      - name: d_ktls
        type: bool
      item_type: struct
      name: TLSContextParameters
      pos:
        line_end: 608
        line_start: 593
        source_file: /src/pdns/pdns/recursordist/tcpiohandler.hh
    typedefs: []
    union: []
- function_names:
  - TLSCertKeyPair
  source_file: /src/pdns/pdns/recursordist/libssl.hh
  types:
    enum:
    - enumerators:
      - name: Unknown
      - name: TLS10
      - name: TLS13
      - name: TLS12
      - name: TLS11
      item_type: enum
      name: LibsslTLSVersion
      pos:
        line_end: 16
        line_start: 16
        source_file: /src/pdns/pdns/recursordist/libssl.hh
    preproc_defs:
    - item_type: preproc_def
      name: TLS_TICKETS_KEY_NAME_SIZE
      pos:
        line_end: 81
        line_start: 80
        source_file: /src/pdns/pdns/recursordist/libssl.hh
      type_or_value: (16)
    - item_type: preproc_def
      name: TLS_TICKETS_CIPHER_KEY_SIZE
      pos:
        line_end: 84
        line_start: 83
        source_file: /src/pdns/pdns/recursordist/libssl.hh
      type_or_value: (32)
    - item_type: preproc_def
      name: TLS_TICKETS_CIPHER_ALGO
      pos:
        line_end: 85
        line_start: 84
        source_file: /src/pdns/pdns/recursordist/libssl.hh
      type_or_value: (EVP_aes_256_cbc)
    - item_type: preproc_def
      name: TLS_TICKETS_MAC_KEY_SIZE
      pos:
        line_end: 88
        line_start: 87
        source_file: /src/pdns/pdns/recursordist/libssl.hh
      type_or_value: (32)
    - item_type: preproc_def
      name: TLS_TICKETS_MAC_ALGO
      pos:
        line_end: 89
        line_start: 88
        source_file: /src/pdns/pdns/recursordist/libssl.hh
      type_or_value: (EVP_sha256)
    structs:
    - fields:
      - name: d_cert
        type: std::string
      - name: d_key
        type: std::optional<std::string>
      - name: d_password
        type: std::optional<std::string>
      item_type: struct
      name: TLSCertKeyPair
      pos:
        line_end: 26
        line_start: 18
        source_file: /src/pdns/pdns/recursordist/libssl.hh
    - fields:
      - name: d_dhKeyTooSmall
        type: std::atomic<uint64_t>
      - name: d_inappropriateFallBack
        type: std::atomic<uint64_t>
      - name: d_noSharedCipher
        type: std::atomic<uint64_t>
      - name: d_unknownCipherType
        type: std::atomic<uint64_t>
      - name: d_unknownKeyExchangeType
        type: std::atomic<uint64_t>
      - name: d_unknownProtocol
        type: std::atomic<uint64_t>
      - name: d_unsupportedEC
        type: std::atomic<uint64_t>
      - name: d_unsupportedProtocol
        type: std::atomic<uint64_t>
      item_type: struct
      name: TLSErrorCounters
      pos:
        line_end: 71
        line_start: 60
        source_file: /src/pdns/pdns/recursordist/libssl.hh
    typedefs: []
    union: []
- function_names:
  - validate
  - CatalogZone::add
  - CatalogZone::remove
  - CatalogZone::registerForwarders
  - CatalogZone::versionCheck
  - CatalogZone::dupsCheck
  - loadZoneFromServer
  - FWCatZoneXFR::preloadZoneFile
  - FWCatZoneXFR::zoneTrackerIteration
  - FWCatZoneXFR::zoneXFRTracker
  source_file: /src/pdns/pdns/recursordist/rec-xfr.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - operator<(const DNSResourceRecord& other) const
  - dnsheader_aligned::isMemoryAligned
  - dnsheader_aligned::dnsheader_aligned
  - dnsheader_aligned::dnsheader_aligned
  - dnsheader_aligned::dnsheader_aligned
  - '& operator=(const dnsheader_aligned&)'
  - '& operator=(dnsheader_aligned&&)'
  - ~dnsheader_aligned()
  - dnsheader_aligned::get
  - '& operator*() const'
  - '* operator->() const'
  - getFlagsFromDNSHeader
  - getFlagsFromDNSHeader
  source_file: /src/pdns/pdns/recursordist/dns.hh
  types:
    enum:
    - enumerators:
      - name: NoError
        value: '0'
      - name: ServFail
        value: '2'
      - name: NXDomain
        value: '3'
      - name: FormErr
        value: '1'
      - name: NotImp
        value: '4'
      - name: Refused
        value: '5'
      - name: YXDomain
        value: '6'
      - name: YXRRSet
        value: '7'
      - name: NXRRSet
        value: '8'
      - name: NotAuth
        value: '9'
      - name: NotZone
        value: '10'
      item_type: enum
      name: rcodes_
      pos:
        line_end: 36
        line_start: 36
        source_file: /src/pdns/pdns/recursordist/dns.hh
    - enumerators:
      - name: BADVERS
        value: '16'
      - name: BADMODE
        value: '19'
      - name: BADTIME
        value: '18'
      - name: BADKEY
        value: '17'
      - name: BADSIG
        value: '16'
      - name: BADNAME
        value: '20'
      - name: BADALG
        value: '21'
      - name: BADTRUNC
        value: '22'
      - name: BADCOOKIE
        value: '23'
      item_type: enum
      name: rcodes_
      pos:
        line_end: 46
        line_start: 46
        source_file: /src/pdns/pdns/recursordist/dns.hh
    - enumerators:
      - name: Query
        value: '0'
      - name: Notify
        value: '4'
      - name: IQuery
        value: '1'
      - name: Status
        value: '2'
      - name: Update
        value: '5'
      item_type: enum
      name: opcodes_
      pos:
        line_end: 55
        line_start: 55
        source_file: /src/pdns/pdns/recursordist/dns.hh
    - enumerators:
      - name: QUESTION
        value: '0'
      - name: ANSWER
        value: '1'
      - name: ADDITIONAL
        value: '3'
      - name: AUTHORITY
        value: '2'
      item_type: enum
      name: Place
      pos:
        line_end: 79
        line_start: 73
        source_file: /src/pdns/pdns/recursordist/dns.hh
    preproc_defs:
    - item_type: preproc_def
      name: GCCPACKATTRIBUTE
      pos:
        line_end: 121
        line_start: 120
        source_file: /src/pdns/pdns/recursordist/dns.hh
      type_or_value: __attribute__((packed))
    - item_type: preproc_def
      name: DNS_TYPE_SIZE
      pos:
        line_end: 246
        line_start: 245
        source_file: /src/pdns/pdns/recursordist/dns.hh
      type_or_value: (2)
    - item_type: preproc_def
      name: DNS_CLASS_SIZE
      pos:
        line_end: 247
        line_start: 246
        source_file: /src/pdns/pdns/recursordist/dns.hh
      type_or_value: (2)
    - item_type: preproc_def
      name: DNS_TTL_SIZE
      pos:
        line_end: 248
        line_start: 247
        source_file: /src/pdns/pdns/recursordist/dns.hh
      type_or_value: (4)
    - item_type: preproc_def
      name: DNS_RDLENGTH_SIZE
      pos:
        line_end: 249
        line_start: 248
        source_file: /src/pdns/pdns/recursordist/dns.hh
      type_or_value: (2)
    - item_type: preproc_def
      name: EDNS_EXTENDED_RCODE_SIZE
      pos:
        line_end: 250
        line_start: 249
        source_file: /src/pdns/pdns/recursordist/dns.hh
      type_or_value: (1)
    - item_type: preproc_def
      name: EDNS_VERSION_SIZE
      pos:
        line_end: 251
        line_start: 250
        source_file: /src/pdns/pdns/recursordist/dns.hh
      type_or_value: (1)
    - item_type: preproc_def
      name: EDNS_OPTION_CODE_SIZE
      pos:
        line_end: 252
        line_start: 251
        source_file: /src/pdns/pdns/recursordist/dns.hh
      type_or_value: (2)
    - item_type: preproc_def
      name: EDNS_OPTION_LENGTH_SIZE
      pos:
        line_end: 253
        line_start: 252
        source_file: /src/pdns/pdns/recursordist/dns.hh
      type_or_value: (2)
    - item_type: preproc_def
      name: FLAGS_RD_OFFSET
      pos:
        line_end: 256
        line_start: 255
        source_file: /src/pdns/pdns/recursordist/dns.hh
      type_or_value: (8)
    - item_type: preproc_def
      name: FLAGS_CD_OFFSET
      pos:
        line_end: 257
        line_start: 256
        source_file: /src/pdns/pdns/recursordist/dns.hh
      type_or_value: (12)
    - item_type: preproc_def
      name: FLAGS_RD_OFFSET
      pos:
        line_end: 259
        line_start: 258
        source_file: /src/pdns/pdns/recursordist/dns.hh
      type_or_value: (0)
    - item_type: preproc_def
      name: FLAGS_CD_OFFSET
      pos:
        line_end: 260
        line_start: 259
        source_file: /src/pdns/pdns/recursordist/dns.hh
      type_or_value: (12)
    structs:
    - fields:
      - name: d_type
        type: uint16_t
      - name: d_class
        type: uint16_t
      - name: d_ttl
        type: uint32_t
      - name: d_clen
        type: uint16_t
      item_type: struct
      name: dnsrecordheader
      pos:
        line_end: 128
        line_start: 122
        source_file: /src/pdns/pdns/recursordist/dns.hh
    - fields:
      - name: extRCode
        type: uint8_t
      - name: extFlags
        type: uint16_t
      item_type: struct
      name: EDNS0Record
      pos:
        line_end: 134
        line_start: 130
        source_file: /src/pdns/pdns/recursordist/dns.hh
    - fields:
      - name: id
        type: uint16_t
      - name: qdcount
        type: uint16_t
      - name: ancount
        type: uint16_t
      - name: nscount
        type: uint16_t
      - name: arcount
        type: uint16_t
      item_type: struct
      name: dnsheader
      pos:
        line_end: 185
        line_start: 151
        source_file: /src/pdns/pdns/recursordist/dns.hh
    - fields:
      - name: name
        type: DNSName
      - name: secret
        type: string
      item_type: struct
      name: TSIGTriplet
      pos:
        line_end: 268
        line_start: 264
        source_file: /src/pdns/pdns/recursordist/dns.hh
    typedefs: []
    union: []
- function_names:
  - pdns::ProtoZero::RecMessage::addRR(const DNSRecord& record, const std::set<uint16_t>&
    exportTypes, [[maybe_unused]] std::optional<bool> udr, size_t limit)
  - pdns::ProtoZero::RecMessage::clearUDR(std::string& str)
  - pdns::ProtoZero::RecMessage::addEvents(const RecEventTrace& trace)
  source_file: /src/pdns/pdns/recursordist/rec-protozero.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - CookieStore::prune
  - CookieStore::dump
  source_file: /src/pdns/pdns/recursordist/rec-cookiestore.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/pdns/pdns/recursordist/gettime.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - vStateIsBogus
  - operator()(const shared_ptr<const DNSKEYRecordContent>& lhs, const shared_ptr<const
    DNSKEYRecordContent>& rhs) const
  - pdns::validation::TooManySEC3IterationsException::TooManySEC3IterationsException
  - pdns::validation::TooManySEC3IterationsException::TooManySEC3IterationsException
  - isTypeDenied
  source_file: /src/pdns/pdns/recursordist/validate.hh
  types:
    enum:
    - enumerators:
      - name: Indeterminate
      - name: NTA
      - name: BogusUnableToGetDSs
      - name: BogusNoValidRRSIG
      - name: BogusUnsupportedDNSKEYAlgo
      - name: BogusNoZoneKeyBitSet
      - name: Secure
      - name: BogusInvalidDenial
      - name: BogusNoRRSIG
      - name: BogusSignatureExpired
      - name: Insecure
      - name: BogusNoValidDNSKEY
      - name: BogusSelfSignedDS
      - name: BogusSignatureNotYetValid
      - name: BogusInvalidDNSKEYProtocol
      - name: TA
      - name: BogusUnableToGetDNSKEYs
      - name: BogusMissingNegativeIndication
      - name: BogusUnsupportedDSDigestType
      - name: BogusRevokedDNSKEY
      item_type: enum
      name: vState
      pos:
        line_end: 61
        line_start: 39
        source_file: /src/pdns/pdns/recursordist/validate.hh
    - enumerators:
      - name: NODENIAL
      - name: NXQTYPE
      - name: NXDOMAIN
      - name: INCONCLUSIVE
      - name: ENT
      - name: INSECURE
      - name: OPTOUT
      item_type: enum
      name: dState
      pos:
        line_end: 78
        line_start: 69
        source_file: /src/pdns/pdns/recursordist/validate.hh
    preproc_defs: []
    structs:
    - fields:
      - name: records
        type: sortedRecords_t
      - name: signatures
        type: vector<shared_ptr<const RRSIGRecordContent>>
      item_type: struct
      name: ContentSigPair
      pos:
        line_end: 88
        line_start: 83
        source_file: /src/pdns/pdns/recursordist/validate.hh
    - fields: []
      item_type: struct
      name: sharedDNSKeyRecordContentCompare
      pos:
        line_end: 98
        line_start: 92
        source_file: /src/pdns/pdns/recursordist/validate.hh
    - fields:
      - name: d_nsec3Cache
        type: Nsec3HashesCache
      - name: d_validationsCounter
        type: unsigned int
      - name: d_nsec3IterationsRemainingQuota
        type: unsigned int
      - name: d_limitHit
        type: bool
      item_type: struct
      name: ValidationContext
      pos:
        line_end: 112
        line_start: 106
        source_file: /src/pdns/pdns/recursordist/validate.hh
    - fields:
      - name: d_nsec3Cache
        type: Nsec3HashesCache
      - name: d_validationsCounter
        type: unsigned int
      - name: d_nsec3IterationsRemainingQuota
        type: unsigned int
      - name: d_limitHit
        type: bool
      item_type: struct
      name: ValidationContext
      pos:
        line_end: 112
        line_start: 106
        source_file: /src/pdns/pdns/recursordist/validate.hh
    typedefs: []
    union: []
- function_names:
  - DNSCryptoKeyEngine::DNSCryptoKeyEngine
  - ~DNSCryptoKeyEngine()
  - DNSCryptoKeyEngine::createFromPEMFile
  - DNSCryptoKeyEngine::createFromPEMString
  - DNSCryptoKeyEngine::convertToPEMFile
  - DNSCryptoKeyEngine::convertToPEMString
  - DNSCryptoKeyEngine::hash
  - DNSCryptoKeyEngine::getAlgorithm
  - DNSCryptoKeyEngine::checkKey
  - '& getMakers()'
  - '& getAllMakers()'
  - getTag
  - '& getKey() const'
  - setKey
  - setKey
  - getFlags
  - getAlgorithm
  - operator()(const std::string& a, const std::string& b)
  - operator() (const shared_ptr<const DNSRecordContent>& a, const shared_ptr<const
    DNSRecordContent>& b) const
  source_file: /src/pdns/pdns/recursordist/dnssecinfra.hh
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '& getDNSKEY() const'
        type: DNSKEYRecordContent
      - name: computeDNSKEY()
        type: void
      - name: d_dnskey
        type: DNSKEYRecordContent
      - name: d_key
        type: std::shared_ptr<DNSCryptoKeyEngine>
      - name: d_flags
        type: uint16_t
      - name: d_algorithm
        type: uint8_t
      item_type: struct
      name: DNSSECPrivateKey
      pos:
        line_end: 254
        line_start: 205
        source_file: /src/pdns/pdns/recursordist/dnssecinfra.hh
    - fields: []
      item_type: struct
      name: CanonicalCompare
      pos:
        line_end: 271
        line_start: 258
        source_file: /src/pdns/pdns/recursordist/dnssecinfra.hh
    - fields: []
      item_type: struct
      name: sharedDNSSECRecordCompare
      pos:
        line_end: 277
        line_start: 273
        source_file: /src/pdns/pdns/recursordist/dnssecinfra.hh
    typedefs:
    - item_type: typedef
      name: sortedRecords_t
      pos:
        line_end: 279
        line_start: 279
        source_file: /src/pdns/pdns/recursordist/dnssecinfra.hh
      type: set<std::shared_ptr<const DNSRecordContent>, sharedDNSSECRecordCompare>
    union: []
- function_names:
  - MallocTracer::getAllocs
  - MallocTracer::getAllocFlux
  - MallocTracer::getTotAllocated
  - MallocTracer::getNumOut
  source_file: /src/pdns/pdns/recursordist/malloctrace.hh
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: count
        type: int
      - name: sizes
        type: std::map<unsigned int, unsigned int>
      item_type: struct
      name: AllocStats
      pos:
        line_end: 47
        line_start: 43
        source_file: /src/pdns/pdns/recursordist/malloctrace.hh
    typedefs:
    - item_type: typedef
      name: allocators_t
      pos:
        line_end: 49
        line_start: 48
        source_file: /src/pdns/pdns/recursordist/malloctrace.hh
      type: "vector<std::pair<MallocTracer::AllocStats, \n\t\t\t\tstd::vector<void*>
        > >"
    union: []
- function_names:
  - writen2
  - readn2
  - readn2WithTimeout
  - writen2WithTimeout
  - pdns::getMessageFromErrno
  - pdns::OpenSSL::error(const std::string& errorMessage) -> std::runtime_error
  - pdns::OpenSSL::error(const std::string& componentName, const std::string& errorMessage)
    -> std::runtime_error
  - nowTime
  - waitForData
  - waitForData
  - waitForRWData
  - waitForRWData
  - waitForMultiData
  - humanDuration
  - unquotify
  - stripLine
  - urlEncode
  - getMaxHostNameSize
  - getHostname
  - getCarbonHostName
  - cleanSlashes
  - IpToU32
  - U32ToIP
  - makeHexDump
  - makeBytesFromHex
  - normalizeTV
  - operator+(const struct timeval& lhs, const struct timeval& rhs)
  - operator-(const struct timeval& lhs, const struct timeval& rhs)
  - splitField
  - logFacilityToLOG
  - logFacilityFromString
  - stripDot
  - makeIPv6sockaddr
  - makeIPv4sockaddr
  - makeUNsockaddr
  - stringfgets
  - readFileIfThere
  - Regex::Regex
  - Regex::match
  - Regex::match
  - addCMsgSrcAddr
  - getFilenumLimit
  - setFilenumLimit
  - setSocketTimestamps
  - setTCPNoDelay
  - setNonBlocking
  - setBlocking
  - setReuseAddr
  - setDscp
  - isNonBlocking
  - setReceiveSocketErrors
  - closesocket
  - setCloseOnExec
  - getMACAddress
  - getMACAddress
  - getMACAddress
  - udpErrorStats
  - udp6ErrorStats
  - tcpErrorStats
  - getCPUIOWait
  - getCPUSteal
  - getTSIGHashEnum
  - getTSIGAlgoName
  - getOpenFileDescriptors
  - getRealMemoryUsage
  - getSpecialMemoryUsage
  - getCPUTimeUser
  - getCPUTimeSystem
  - DiffTime
  - DiffTime
  - strToUID
  - strToGID
  - isSettingThreadCPUAffinitySupported
  - mapThreadToCPUList
  - getResolvers
  - getPipeBufferSize
  - setPipeBufferSize
  - reverseNameFromIP
  - makeLuaString
  - parseSVCBValueList
  - constantTimeStringEquals
  - operator()(DIR* dir) const noexcept
  - pdns::visit_directory
  - pdns::openFileForWriting
  - operator()(DIR* dir) const noexcept
  - pdns::visit_directory
  - pdns::openFileForWriting
  - timestamp
  source_file: /src/pdns/pdns/recursordist/misc.cc
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: cpu_set_t
      pos:
        line_end: 1587
        line_start: 1586
        source_file: /src/pdns/pdns/recursordist/misc.cc
      type_or_value: cpuset_t
    structs:
    - fields:
      - name: headermsg
        type: struct nlmsghdr
      - name: neighbormsg
        type: struct ndmsg
      item_type: struct
      name: request
      pos:
        line_end: 1080
        line_start: 1077
        source_file: /src/pdns/pdns/recursordist/misc.cc
    - fields: []
      item_type: struct
      name: CloseDirDeleter
      pos:
        line_end: 1769
        line_start: 1764
        source_file: /src/pdns/pdns/recursordist/misc.cc
    - fields: []
      item_type: struct
      name: CloseDirDeleter
      pos:
        line_end: 1769
        line_start: 1764
        source_file: /src/pdns/pdns/recursordist/misc.cc
    typedefs: []
    union: []
- function_names: []
  source_file: /src/pdns/pdns/recursordist/ixfr.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - includeboilerplate
  - '& getFlags() const'
  - '& getReplacement() const'
  - NAPTRRecordContent::sizeEstimate
  - operator==(const DNSRecordContent& rhs) const override
  - ARecordContent::sizeEstimate
  - operator==(const DNSRecordContent& rhs) const override
  - AAAARecordContent::sizeEstimate
  - operator==(const DNSRecordContent& rhs) const override
  - MXRecordContent::sizeEstimate
  - KXRecordContent::sizeEstimate
  - IPSECKEYRecordContent::sizeEstimate
  - DHCIDRecordContent::sizeEstimate
  - SRVRecordContent::sizeEstimate
  - TSIGRecordContent::TSIGRecordContent
  - TSIGRecordContent::sizeEstimate
  - TXTRecordContent::sizeEstimate
  - LUARecordContent::sizeEstimate
  - ENTRecordContent::sizeEstimate
  - '& getText() const'
  - SPFRecordContent::sizeEstimate
  - NSRecordContent::NSRecordContent
  - '& getNS() const'
  - operator==(const DNSRecordContent& rhs) const override
  - NSRecordContent::sizeEstimate
  - PTRRecordContent::PTRRecordContent
  - '& getContent() const'
  - PTRRecordContent::sizeEstimate
  - CNAMERecordContent::CNAMERecordContent
  - CNAMERecordContent::getTarget
  - CNAMERecordContent::sizeEstimate
  - '& getContent() const'
  - ALIASRecordContent::sizeEstimate
  - DNAMERecordContent::DNAMERecordContent
  - '& getTarget() const'
  - DNAMERecordContent::sizeEstimate
  - MBRecordContent::sizeEstimate
  - MGRecordContent::sizeEstimate
  - MRRecordContent::sizeEstimate
  - MINFORecordContent::sizeEstimate
  - OPTRecordContent::OPTRecordContent
  - OPTRecordContent::sizeEstimate
  - HINFORecordContent::sizeEstimate
  - RPRecordContent::sizeEstimate
  - operator<(const DNSKEYRecordContent& rhs) const
  - DNSKEYRecordContent::sizeEstimate
  - CDNSKEYRecordContent::sizeEstimate
  - operator==(const DNSRecordContent& rhs) const override
  - operator<(const DSRecordContent& rhs) const
  - DSRecordContent::sizeEstimate
  - CDSRecordContent::sizeEstimate
  - DLVRecordContent::sizeEstimate
  - SSHFPRecordContent::sizeEstimate
  - KEYRecordContent::sizeEstimate
  - AFSDBRecordContent::sizeEstimate
  - CERTRecordContent::sizeEstimate
  - TLSARecordContent::sizeEstimate
  - SMIMEARecordContent::sizeEstimate
  - OPENPGPKEYRecordContent::sizeEstimate
  - '& getTarget() const'
  - SVCBBaseRecordContent::getPriority
  - SVCBBaseRecordContent::sizeEstimate
  - DRIPBaseRecordContent::sizeEstimate
  - RRSIGRecordContent::sizeEstimate
  - RKEYRecordContent::sizeEstimate
  - SOARecordContent::sizeEstimate
  - ZONEMDRecordContent::sizeEstimate
  - NSECBitmap::NSECBitmap
  - NSECBitmap::NSECBitmap
  - '& operator=(const NSECBitmap& rhs)'
  - NSECBitmap::NSECBitmap
  - NSECBitmap::isSet
  - NSECBitmap::set
  - NSECBitmap::count
  - NSECBitmap::sizeEstimate
  - NSECBitmap::migrateToBitSet
  - NSECRecordContent::NSECRecordContent
  - NSECRecordContent::getType
  - NSECRecordContent::isSet
  - NSECRecordContent::set
  - NSECRecordContent::set
  - NSECRecordContent::numberOfTypesSet
  - NSECRecordContent::sizeEstimate
  - NSEC3RecordContent::NSEC3RecordContent
  - NSEC3RecordContent::getType
  - NSEC3RecordContent::isSet
  - NSEC3RecordContent::set
  - NSEC3RecordContent::set
  - NSEC3RecordContent::numberOfTypesSet
  - NSEC3RecordContent::isOptOut
  - NSEC3RecordContent::sizeEstimate
  - CSYNCRecordContent::CSYNCRecordContent
  - CSYNCRecordContent::getType
  - CSYNCRecordContent::set
  - CSYNCRecordContent::sizeEstimate
  - NSEC3PARAMRecordContent::NSEC3PARAMRecordContent
  - NSEC3PARAMRecordContent::getType
  - NSEC3PARAMRecordContent::sizeEstimate
  - LOCRecordContent::LOCRecordContent
  - LOCRecordContent::getType
  - LOCRecordContent::sizeEstimate
  - NIDRecordContent::sizeEstimate
  - L32RecordContent::sizeEstimate
  - L64RecordContent::sizeEstimate
  - LPRecordContent::sizeEstimate
  - WALLETRecordContent::sizeEstimate
  - EUI48RecordContent::EUI48RecordContent
  - EUI48RecordContent::getType
  - EUI48RecordContent::sizeEstimate
  - EUI64RecordContent::EUI64RecordContent
  - EUI64RecordContent::getType
  - EUI64RecordContent::sizeEstimate
  - APLRecordContent::APLRecordContent
  - APLRecordContent::sizeEstimate
  - TKEYRecordContent::TKEYRecordContent
  - TKEYRecordContent::sizeEstimate
  - URIRecordContent::sizeEstimate
  - CAARecordContent::sizeEstimate
  - RESINFORecordContent::sizeEstimate
  - getCombinedERCode
  source_file: /src/pdns/pdns/recursordist/dnsrecords.hh
  types:
    enum:
    - enumerators:
      - name: DNSSECOK
        value: '32768'
      item_type: enum
      name: zFlags
      pos:
        line_end: 1347
        line_start: 1347
        source_file: /src/pdns/pdns/recursordist/dnsrecords.hh
    preproc_defs:
    - item_type: preproc_def
      name: APL_FAMILY_IPV4
      pos:
        line_end: 1194
        line_start: 1193
        source_file: /src/pdns/pdns/recursordist/dnsrecords.hh
      type_or_value: '1'
    - item_type: preproc_def
      name: APL_FAMILY_IPV6
      pos:
        line_end: 1195
        line_start: 1194
        source_file: /src/pdns/pdns/recursordist/dnsrecords.hh
      type_or_value: '2'
    - item_type: preproc_def
      name: CONV
      pos:
        line_end: 1345
        line_start: 1330
        source_file: /src/pdns/pdns/recursordist/dnsrecords.hh
      type_or_value: ";                                                                 \\\n
        \ if (conv.eof() == false) throw MOADNSException(\"When parsing \" #RNAME
        \" trailing data was not parsed: '\" + conv.getRemaining() + \"'\"); \\\n}
        \                                                                      \\\n"
    structs:
    - fields:
      - name: serial
        type: uint32_t
      - name: refresh
        type: uint32_t
      - name: retry
        type: uint32_t
      - name: expire
        type: uint32_t
      - name: minimum
        type: uint32_t
      item_type: struct
      name: soatimes
      pos:
        line_end: 768
        line_start: 761
        source_file: /src/pdns/pdns/recursordist/dnsrecords.hh
    - fields:
      - name: d_family
        type: uint16_t
      - name: d_prefix
        type: uint8_t
      - name: d_n
        type: bool
      - name: d_afdlength
        type: unsigned int
      - name: d_ip
        type: "union u_d_ip {\n      uint8_t d_ip4[4];\n      uint8_t d_ip6[16];\n
          \ }"
      item_type: struct
      name: s_APLRDataElement
      pos:
        line_end: 1204
        line_start: 1195
        source_file: /src/pdns/pdns/recursordist/dnsrecords.hh
    - fields:
      - name: d_options
        type: vector<pair<uint16_t, string> >
      - name: d_packetsize
        type: uint16_t
      - name: d_extFlags
        type: uint16_t
      - name: d_extRCode
        type: uint8_t
      - name: getFirstOption(uint16_t optionCode) const
        type: vector<pair<uint16_t, string>>::const_iterator
      item_type: struct
      name: EDNSOpts
      pos:
        line_end: 1358
        line_start: 1345
        source_file: /src/pdns/pdns/recursordist/dnsrecords.hh
    typedefs: []
    union:
    - fields:
      - name: d_ip4[4]
        type: uint8_t
      - name: d_ip6[16]
        type: uint8_t
      item_type: union
      name: u_d_ip
      pos:
        line_end: 1203
        line_start: 1200
        source_file: /src/pdns/pdns/recursordist/dnsrecords.hh
- function_names:
  - dropCapabilities
  - dropCapabilitiesAfterSwitchingIDs
  - keepCapabilitiesAfterSwitchingIDs
  source_file: /src/pdns/pdns/recursordist/capabilities.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - TSIGTCPVerifier::check
  source_file: /src/pdns/pdns/recursordist/tsigverifier.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - FrameStreamLogger::FrameStreamLogger
  - FrameStreamLogger::cleanup
  - FrameStreamLogger::~FrameStreamLogger()
  - FrameStreamLogger::queueData
  source_file: /src/pdns/pdns/recursordist/fstrm_logger.cc
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: name
        type: std::string
      - name: (*function)(struct fstrm_iothr_options*, const unsigned int)
        type: fstrm_res
      item_type: struct
      name: setters
      pos:
        line_end: 92
        line_start: 88
        source_file: /src/pdns/pdns/recursordist/fstrm_logger.cc
    typedefs: []
    union: []
- function_names:
  - pdns::ProtoZero::RecMessage::RecMessage
  - pdns::ProtoZero::RecMessage::RecMessage
  - pdns::ProtoZero::RecMessage::RecMessage
  - pdns::ProtoZero::RecMessage::RecMessage
  - pdns::ProtoZero::RecMessage::RecMessage
  - pdns::ProtoZero::RecMessage::RecMessage
  - '& operator=(const Message&)'
  - '& operator=(Message&&)'
  - pdns::ProtoZero::RecMessage::reserve
  - '& getMessageBuf() const'
  - '& getResponseBuf() const'
  - pdns::ProtoZero::RecMessage::size
  - '&& finishAndMoveBuf()'
  - pdns::ProtoZero::RecMessage::setAppliedPolicyType
  - pdns::ProtoZero::RecMessage::setAppliedPolicyTrigger
  - pdns::ProtoZero::RecMessage::setAppliedPolicyHit
  - pdns::ProtoZero::RecMessage::setAppliedPolicyKind
  - pdns::ProtoZero::RecMessage::setValidationState
  - pdns::ProtoZero::RecMessage::RecMessage
  - pdns::ProtoZero::RecMessage::RecMessage
  - pdns::ProtoZero::RecMessage::RecMessage
  - pdns::ProtoZero::RecMessage::RecMessage
  - pdns::ProtoZero::RecMessage::RecMessage
  - pdns::ProtoZero::RecMessage::RecMessage
  - '& operator=(const Message&)'
  - '& operator=(Message&&)'
  - pdns::ProtoZero::RecMessage::reserve
  - '& getMessageBuf() const'
  - '& getResponseBuf() const'
  - pdns::ProtoZero::RecMessage::size
  - '&& finishAndMoveBuf()'
  - pdns::ProtoZero::RecMessage::setAppliedPolicyType
  - pdns::ProtoZero::RecMessage::setAppliedPolicyTrigger
  - pdns::ProtoZero::RecMessage::setAppliedPolicyHit
  - pdns::ProtoZero::RecMessage::setAppliedPolicyKind
  - pdns::ProtoZero::RecMessage::setValidationState
  - pdns::ProtoZero::RecMessage::RecMessage
  - pdns::ProtoZero::RecMessage::RecMessage
  - pdns::ProtoZero::RecMessage::RecMessage
  - pdns::ProtoZero::RecMessage::RecMessage
  - pdns::ProtoZero::RecMessage::RecMessage
  - pdns::ProtoZero::RecMessage::RecMessage
  - '& operator=(const Message&)'
  - '& operator=(Message&&)'
  - pdns::ProtoZero::RecMessage::reserve
  - '& getMessageBuf() const'
  - '& getResponseBuf() const'
  - pdns::ProtoZero::RecMessage::size
  - '&& finishAndMoveBuf()'
  - pdns::ProtoZero::RecMessage::setAppliedPolicyType
  - pdns::ProtoZero::RecMessage::setAppliedPolicyTrigger
  - pdns::ProtoZero::RecMessage::setAppliedPolicyHit
  - pdns::ProtoZero::RecMessage::setAppliedPolicyKind
  - pdns::ProtoZero::RecMessage::setValidationState
  - pdns::ProtoZero::RecMessage::RecMessage
  - pdns::ProtoZero::RecMessage::RecMessage
  - pdns::ProtoZero::RecMessage::RecMessage
  - pdns::ProtoZero::RecMessage::RecMessage
  - pdns::ProtoZero::RecMessage::RecMessage
  - pdns::ProtoZero::RecMessage::RecMessage
  - '& operator=(const Message&)'
  - '& operator=(Message&&)'
  - pdns::ProtoZero::RecMessage::reserve
  - '& getMessageBuf() const'
  - '& getResponseBuf() const'
  - pdns::ProtoZero::RecMessage::size
  - '&& finishAndMoveBuf()'
  - pdns::ProtoZero::RecMessage::setAppliedPolicyType
  - pdns::ProtoZero::RecMessage::setAppliedPolicyTrigger
  - pdns::ProtoZero::RecMessage::setAppliedPolicyHit
  - pdns::ProtoZero::RecMessage::setAppliedPolicyKind
  - pdns::ProtoZero::RecMessage::setValidationState
  source_file: /src/pdns/pdns/recursordist/rec-protozero.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - UDPClientSocks::getSocket
  - UDPClientSocks::returnSocket
  - UDPClientSocks::makeClientSocket
  - handleGenUDPQueryResponse
  - GenUDPQueryResponse
  - authWaitTimeMSec
  - asendto
  - arecvfrom
  - updateResponseStats
  - handleRPZCustom
  - addRecordToPacket
  - RunningResolveGuard::RunningResolveGuard
  - RunningResolveGuard::RunningResolveGuard
  - '& operator=(const RunningResolveGuard&)'
  - '& operator=(RunningResolveGuard&&)'
  - RunningResolveGuard::RunningResolveGuard
  - ~RunningResolveGuard()
  - RunningResolveGuard::setHandled
  - RunningResolveGuard::setDropOnIdle
  - handlePolicyHit
  - nodCheckNewDomain
  - sendNODLookup
  - udrCheckUniqueDNSRecord
  - followCNAMERecords
  - getFakeAAAARecords
  - parseNibble
  - getFakePTRRecords
  - dns64Candidate
  - isAllowNotifyForZone
  - isEnabledForNODs
  - isEnabledForUDRs
  - dumpTrace
  - capPacketCacheTTL
  - addPolicyTagsToPBMessageIfNeeded
  - startDoResolve
  - getQNameAndSubnet
  - checkForCacheHit
  - pleaseWipeCaches
  - requestWipeCaches
  - expectProxyProtocol
  - matchOTConditions
  - matchOTConditions
  - doProcessUDPQuestion
  - handleNewUDPQuestion
  - makeUDPServerSockets
  - trySendingQueryToWorker
  - getWorkerLoad
  - selectWorker
  - distributeAsyncFunction
  - doResends
  - mthreadSleep
  - checkIncomingECSSource
  - handleUDPServerResponse
  source_file: /src/pdns/pdns/recursordist/pdns_recursor.cc
  types:
    enum:
    - enumerators:
      - name: NoAction
      - name: Drop
      - name: HaveAnswer
      item_type: enum
      name: PolicyResult
      pos:
        line_end: 535
        line_start: 530
        source_file: /src/pdns/pdns/recursordist/pdns_recursor.cc
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - GenericDNSPacketWriter::xfrType
  - GenericDNSPacketWriter::xfrIP
  - GenericDNSPacketWriter::xfrIP6
  - GenericDNSPacketWriter::xfrCAWithoutPort
  - GenericDNSPacketWriter::xfrCAPort
  - GenericDNSPacketWriter::xfrTime
  - GenericDNSPacketWriter::setCanonic
  - GenericDNSPacketWriter::setLowercase
  - '& getContent()'
  - GenericDNSPacketWriter::eof
  - GenericDNSPacketWriter::getRemaining
  - GenericDNSPacketWriter::consumeRemaining
  source_file: /src/pdns/pdns/recursordist/dnswriter.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - SNMPAgent::setCounter64Value
  - SNMPAgent::addSNMPTrapOID
  - SNMPAgent::sendTrap
  - SNMPAgent::handleTrapsEvent
  - SNMPAgent::handleSNMPQueryEvent
  - SNMPAgent::handleTrapsCB
  - SNMPAgent::handleSNMPQueryCB
  - SNMPAgent::worker
  - SNMPAgent::SNMPAgent
  source_file: /src/pdns/pdns/recursordist/snmp-agent.cc
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: netsnmp_large_fd_set
      pos:
        line_end: 23
        line_start: 22
        source_file: /src/pdns/pdns/recursordist/snmp-agent.cc
      type_or_value: fd_set
    - item_type: preproc_def
      name: snmp_read2
      pos:
        line_end: 24
        line_start: 23
        source_file: /src/pdns/pdns/recursordist/snmp-agent.cc
      type_or_value: snmp_read
    - item_type: preproc_def
      name: snmp_select_info2
      pos:
        line_end: 25
        line_start: 24
        source_file: /src/pdns/pdns/recursordist/snmp-agent.cc
      type_or_value: snmp_select_info
    - item_type: preproc_def
      name: NETSNMP_LARGE_FD_SET
      pos:
        line_end: 28
        line_start: 27
        source_file: /src/pdns/pdns/recursordist/snmp-agent.cc
      type_or_value: FD_SET
    - item_type: preproc_def
      name: NETSNMP_LARGE_FD_CLR
      pos:
        line_end: 29
        line_start: 28
        source_file: /src/pdns/pdns/recursordist/snmp-agent.cc
      type_or_value: FD_CLR
    - item_type: preproc_def
      name: NETSNMP_LARGE_FD_ZERO
      pos:
        line_end: 30
        line_start: 29
        source_file: /src/pdns/pdns/recursordist/snmp-agent.cc
      type_or_value: FD_ZERO
    - item_type: preproc_def
      name: NETSNMP_LARGE_FD_ISSET
      pos:
        line_end: 31
        line_start: 30
        source_file: /src/pdns/pdns/recursordist/snmp-agent.cc
      type_or_value: FD_ISSET
    structs: []
    typedefs: []
    union: []
- function_names:
  - Socket::Socket
  - '& operator=(const Socket&)'
  - Socket::Socket
  - Socket::Socket
  - Socket::Socket
  - '& operator=(Socket&& rhs) noexcept'
  - ~Socket()
  - Socket::accept
  - Socket::getRemote
  - Socket::acl
  - Socket::setNonBlocking
  - Socket::setBlocking
  - Socket::setReuseAddr
  - Socket::setFastOpenConnect
  - Socket::bind
  - Socket::connect
  - Socket::recvFrom
  - Socket::recvFromAsync
  - Socket::sendTo
  - Socket::send
  - Socket::sendTo
  - Socket::writen
  - Socket::tryWrite
  - Socket::write
  - Socket::writenWithTimeout
  - Socket::read
  - Socket::read
  - Socket::readWithTimeout
  - Socket::listen
  - Socket::getHandle
  - Socket::releaseHandle
  source_file: /src/pdns/pdns/recursordist/sstuff.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - getRecordContent
  - addRecordToList
  source_file: /src/pdns/pdns/recursordist/test-common.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - makeLocalhostRootDRC
  - makeLocalhostDRC
  - makePtrDRC
  - addDomainMapFixtureEntry
  - addDomainMapFixtureEntry
  - populateDomainMapFixture
  - Fixture
  - sortDomainMap
  - printDomainMap
  - getDomainMapFixture
  - getDomainMapFixtureWithSearchSuffix
  - BOOST_FIXTURE_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  source_file: /src/pdns/pdns/recursordist/test-reczones-helpers.cc
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: domainMapFixture
        type: SyncRes::domainmap_t
      - name: domainMapFixtureWithSearchSuffix
        type: SyncRes::domainmap_t
      item_type: struct
      name: Fixture
      pos:
        line_end: 211
        line_start: 26
        source_file: /src/pdns/pdns/recursordist/test-reczones-helpers.cc
    typedefs: []
    union: []
- function_names:
  - BaseLua4::BaseLua4
  source_file: /src/pdns/pdns/recursordist/lua-base4.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs:
    - item_type: typedef
      name: in_t
      pos:
        line_end: 27
        line_start: 27
        source_file: /src/pdns/pdns/recursordist/lua-base4.hh
      type: vector
    - item_type: typedef
      name: Features
      pos:
        line_end: 29
        line_start: 29
        source_file: /src/pdns/pdns/recursordist/lua-base4.hh
      type: vector
    union: []
- function_names:
  - ZoneParserTNG::ZoneParserTNG
  - ZoneParserTNG::ZoneParserTNG
  - ZoneParserTNG::stackFile
  - ZoneParserTNG::~ZoneParserTNG()
  - makeString
  - isTimeSpec
  - ZoneParserTNG::makeTTLFromZone
  - ZoneParserTNG::getTemplateLine
  - chopComment
  - findAndElide
  - ZoneParserTNG::getZoneName
  - ZoneParserTNG::getLineOfFile
  - ZoneParserTNG::getLineNumAndFile
  - ZoneParserTNG::get
  - ZoneParserTNG::getLine
  source_file: /src/pdns/pdns/recursordist/zoneparser-tng.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - fails_t::value_t
  - fails_t::getMapCopy
  - fails_t::value
  - fails_t::incr
  - fails_t::clear
  - fails_t::clear
  - fails_t::size
  - fails_t::prune
  - SyncRes::getNSSpeedTable
  - SyncRes::putIntoNSSpeedTable
  - Throttle::Throttle
  - ~Throttle()
  - Throttle::Throttle
  - '& operator=(const Throttle&)'
  - '& operator=(Throttle&&)'
  - Throttle::Throttle
  - Throttle::entry_t
  - Throttle::shouldThrottle
  - Throttle::throttle
  - Throttle::size
  - Throttle::getThrottleMap
  - Throttle::clear
  - Throttle::clear
  - Throttle::prune
  - Throttle::toString
  - SavedParentEntry
  - SavedParentNSSet::prune
  - SavedParentNSSet::inc
  - SavedParentNSSet::getMapCopy
  - DoTStatus
  - toString
  - prune
  - LOG
  - SyncRes::LogObject
  - pushResolveIfNotInNegCache
  - fmtfloat
  - accountAuthLatency
  - SyncRes::SyncRes
  - SyncRes::resolveAdditionals
  - SyncRes::addAdditionals
  - SyncRes::addAdditionals
  - SyncRes::beginResolve
  - SyncRes::doSpecialNamesResolve
  - SyncRes::AuthDomain::addSOA(std::vector<DNSRecord>& records) const
  - SyncRes::AuthDomain::operator==(const AuthDomain& rhs) const
  - "SyncRes::AuthDomain::print(const std::string& indent,\n                                                     const
    std::string& indentLevel) const"
  - SyncRes::AuthDomain::getRecords(const DNSName& qname, const QType qtype, std::vector<DNSRecord>&
    records) const
  - SyncRes::doOOBResolve
  - SyncRes::doOOBResolve
  - SyncRes::isRecursiveForwardOrAuth
  - SyncRes::isRecursiveForward
  - SyncRes::isForwardOrAuth
  - isoDateTimeMillis
  - getMap
  - setMode
  - prune
  - SyncRes::getEDNSStatus
  - SyncRes::getEDNSStatusesSize
  - SyncRes::clearEDNSStatuses
  - SyncRes::pruneEDNSStatuses
  - SyncRes::doEDNSDump
  - SyncRes::pruneNSSpeeds
  - SyncRes::getNSSpeedsSize
  - SyncRes::submitNSSpeed
  - SyncRes::clearNSSpeeds
  - SyncRes::getNSSpeed
  - SyncRes::doDumpNSSpeeds
  - SyncRes::getThrottledServersSize
  - SyncRes::pruneThrottledServers
  - SyncRes::clearThrottle
  - SyncRes::isThrottled
  - SyncRes::isThrottled
  - SyncRes::unThrottle
  - SyncRes::doThrottle
  - SyncRes::doThrottle
  - SyncRes::doDumpThrottleMap
  - SyncRes::getFailedServersSize
  - SyncRes::clearFailedServers
  - SyncRes::pruneFailedServers
  - SyncRes::getServerFailsCount
  - SyncRes::doDumpFailedServers
  - SyncRes::getNonResolvingNSSize
  - SyncRes::clearNonResolvingNS
  - SyncRes::pruneNonResolving
  - SyncRes::doDumpNonResolvingNS
  - SyncRes::clearSaveParentsNSSets
  - SyncRes::getSaveParentsNSSetsSize
  - SyncRes::pruneSaveParentsNSSets
  - SyncRes::doDumpSavedParentNSSets
  - SyncRes::pruneDoTProbeMap
  - SyncRes::doDumpDoTProbeMap
  - SyncRes::asyncresolveWrapper
  - qmStepLen
  - resToString
  - SyncRes::doResolve
  - SyncRes::getAdjustedRecursionBound
  - haveFinalAnswer
  - SyncRes::doResolveNoQNameMinimization
  - ipv6First
  - speedOrderCA
  - operator()(const ComboAddress& lhs, const ComboAddress& rhs) const
  - SyncRes::selectNSOnSpeed
  - collectAddresses
  - SyncRes::getAddrs
  - SyncRes::canUseRecords
  - SyncRes::getBestNSFromCache
  - SyncRes::getBestAuthZone
  - SyncRes::getBestNSNamesFromCache
  - SyncRes::updateValidationStatusInCache
  - scanForCNAMELoop
  - SyncRes::doCNAMECacheCheck
  - operator<(const CacheKey& rhs) const
  - operator<(const CacheKey& rhs) const
  - reapRecordsFromNegCacheEntryForValidation
  - negativeCacheEntryHasSOA
  - reapRecordsForValidation
  - reapSignaturesForValidation
  - addTTLModifiedRecords
  - SyncRes::computeNegCacheValidationStatus
  - SyncRes::doCacheCheck
  - SyncRes::moreSpecificThan
  - operator()(const std::pair<DNSName, float>& lhs, const std::pair<DNSName, float>&
    rhs) const
  - SyncRes::shuffleInSpeedOrder
  - SyncRes::shuffleForwardSpeed
  - getRRSIGTTL
  - harvestNXRecords
  - harvestCSPFromNE
  - addNXNSECS
  - rpzHitShouldReplaceContent
  - removeConflictingRecord
  - SyncRes::handlePolicyHit
  - SyncRes::nameserversBlockedByRPZ
  - SyncRes::nameserverIPBlockedByRPZ
  - shouldNotThrottle
  - SyncRes::retrieveAddressesForNS
  - SyncRes::checkMaxQperQ
  - SyncRes::throttledOrBlocked
  - SyncRes::validationEnabled
  - SyncRes::computeLowestTTD
  - SyncRes::updateValidationState
  - SyncRes::getTA
  - SyncRes::countSupportedDS
  - SyncRes::initZoneCutsFromTA
  - SyncRes::getDSRecords
  - SyncRes::getValidationStatus
  - SyncRes::validateDNSKeys
  - SyncRes::getDNSKeys
  - SyncRes::validateRecordsWithSigs
  - SyncRes::fixupAnswer
  - allowAdditionalEntry
  - isRedirection
  - sanitizeCNAMEChain
  - SyncRes::sanitizeRecords
  - SyncRes::sanitizeRecordsPass2
  - SyncRes::rememberParentSetIfNeeded
  - SyncRes::updateCacheFromRecords
  - SyncRes::updateDenialValidationState
  - SyncRes::getDenialValidationState
  - SyncRes::checkWildcardProof
  - SyncRes::processRecords
  - submitTryDotTask
  - shouldDoDoT
  - updateDoTStatus
  - SyncRes::tryDoT
  - SyncRes::ednsStats
  - SyncRes::updateQueryCounts
  - SyncRes::incTimeoutStats
  - SyncRes::checkTotalTime
  - SyncRes::doResolveAtThisIP
  - SyncRes::handleNewTarget
  - SyncRes::processAnswer
  - SyncRes::doDoTtoAuth
  - SyncRes::doResolveAt
  - SyncRes::setQuerySource
  - SyncRes::setQuerySource
  - SyncRes::getEDNSSubnetMask
  - SyncRes::parseEDNSSubnetAllowlist
  - SyncRes::parseEDNSSubnetAddFor
  - directResolve
  - directResolve
  - SyncRes::getRootNS
  - SyncRes::answerIsNOData
  source_file: /src/pdns/pdns/recursordist/syncres.cc
  types:
    enum:
    - enumerators:
      - name: Unknown
      - name: Bad
      - name: Busy
      - name: Good
      item_type: enum
      name: Status
      pos:
        line_end: 313
        line_start: 307
        source_file: /src/pdns/pdns/recursordist/syncres.cc
    preproc_defs: []
    structs:
    - fields:
      - name: key
        type: T
      - name: value
        type: counter_t
      - name: last
        type: time_t
      item_type: struct
      name: value_t
      pos:
        line_end: 60
        line_start: 53
        source_file: /src/pdns/pdns/recursordist/syncres.cc
    - fields:
      - name: thing
        type: Key
      - name: ttd
        type: time_t
      - name: count
        type: unsigned int
      - name: reason
        type: Reason
      item_type: struct
      name: entry_t
      pos:
        line_end: 157
        line_start: 147
        source_file: /src/pdns/pdns/recursordist/syncres.cc
    - fields:
      - name: d_domain
        type: DNSName
      - name: d_nsAddresses
        type: map<DNSName, vector<ComboAddress>>
      - name: d_ttd
        type: time_t
      - name: d_count
        type: uint64_t
      item_type: struct
      name: SavedParentEntry
      pos:
        line_end: 258
        line_start: 248
        source_file: /src/pdns/pdns/recursordist/syncres.cc
    - fields:
      - name: d_address
        type: ComboAddress
      - name: d_auth
        type: DNSName
      - name: d_ttd
        type: time_t
      - name: d_count
        type: uint64_t
      - name: d_status
        type: Status
      item_type: struct
      name: DoTStatus
      pos:
        line_end: 325
        line_start: 301
        source_file: /src/pdns/pdns/recursordist/syncres.cc
    - fields:
      - name: d_map
        type: "multi_index_container<DoTStatus,\n                        indexed_by<\n
          \                         ordered_unique<tag<ComboAddress>, member<DoTStatus,
          const ComboAddress, &DoTStatus::d_address>>,\n                          ordered_non_unique<tag<time_t>,
          member<DoTStatus, time_t, &DoTStatus::d_ttd>>>>"
      - name: d_numBusy
        type: uint64_t
      item_type: struct
      name: DoTMap
      pos:
        line_end: 341
        line_start: 327
        source_file: /src/pdns/pdns/recursordist/syncres.cc
    - fields:
      - name: Expire
        type: time_t
      item_type: struct
      name: ednsstatus_t
      pos:
        line_end: 1044
        line_start: 1019
        source_file: /src/pdns/pdns/recursordist/syncres.cc
    - fields:
      - name: '& d_speeds'
        type: std::map<ComboAddress, float>
      item_type: struct
      name: speedOrderCA
      pos:
        line_end: 2077
        line_start: 2068
        source_file: /src/pdns/pdns/recursordist/syncres.cc
    - fields:
      - name: records
        type: vector<DNSRecord>
      - name: signatures
        type: MemRecursorCache::SigRecsVec
      - name: d_ttl_time
        type: time_t
      - name: signaturesTTL
        type: uint32_t
      item_type: struct
      name: CacheEntry
      pos:
        line_end: 2707
        line_start: 2701
        source_file: /src/pdns/pdns/recursordist/syncres.cc
    - fields:
      - name: name
        type: DNSName
      - name: type
        type: QType
      - name: place
        type: DNSResourceRecord::Place
      item_type: struct
      name: CacheKey
      pos:
        line_end: 2717
        line_start: 2708
        source_file: /src/pdns/pdns/recursordist/syncres.cc
    - fields:
      - name: records
        type: vector<DNSRecord>
      - name: signatures
        type: MemRecursorCache::SigRecsVec
      - name: d_ttl_time
        type: time_t
      - name: signaturesTTL
        type: uint32_t
      item_type: struct
      name: CacheEntry
      pos:
        line_end: 2707
        line_start: 2701
        source_file: /src/pdns/pdns/recursordist/syncres.cc
    - fields:
      - name: name
        type: DNSName
      - name: type
        type: QType
      - name: place
        type: DNSResourceRecord::Place
      item_type: struct
      name: CacheKey
      pos:
        line_end: 2717
        line_start: 2708
        source_file: /src/pdns/pdns/recursordist/syncres.cc
    - fields: []
      item_type: struct
      name: speedOrder
      pos:
        line_end: 3078
        line_start: 3072
        source_file: /src/pdns/pdns/recursordist/syncres.cc
    typedefs:
    - item_type: typedef
      name: res_t
      pos:
        line_end: 2135
        line_start: 2135
        source_file: /src/pdns/pdns/recursordist/syncres.cc
      type: vector
    - item_type: typedef
      name: ret_t
      pos:
        line_end: 2136
        line_start: 2136
        source_file: /src/pdns/pdns/recursordist/syncres.cc
      type: vector
    - item_type: typedef
      name: remoteIPs_t
      pos:
        line_end: 5987
        line_start: 5987
        source_file: /src/pdns/pdns/recursordist/syncres.cc
      type: vector
    union: []
- function_names:
  - UnknownRecordContent::UnknownRecordContent
  - UnknownRecordContent::getZoneRepresentation
  - UnknownRecordContent::toPacket
  - DNSRecordContent::deserialize
  - DNSRecordContent::make
  - DNSRecordContent::make
  - DNSRecordContent::make
  - DNSRecordContent::upgradeContent
  - '& DNSRecordContent::getTypemap()'
  - '& DNSRecordContent::getN2Typemap()'
  - '& DNSRecordContent::getT2Namemap()'
  - '& DNSRecordContent::getZmakermap()'
  - DNSRecordContent::isRegisteredType
  - DNSRecord::DNSRecord
  - DNSResourceRecord::fromWire
  - MOADNSParser::init
  - MOADNSParser::hasEDNS
  - PacketReader::getDnsrecordheader
  - PacketReader::copyRecord
  - PacketReader::copyRecord
  - PacketReader::xfrNodeOrLocatorID
  - PacketReader::xfr48BitInt
  - PacketReader::get32BitInt
  - PacketReader::get16BitInt
  - PacketReader::get8BitInt
  - PacketReader::getName
  - txtEscape
  - PacketReader::getText
  - PacketReader::getUnquotedText
  - PacketReader::xfrBlob
  - PacketReader::xfrBlobNoSpaces
  - PacketReader::xfrBlob
  - PacketReader::xfrSvcParamKeyVals
  - PacketReader::xfrHexBlob
  - simpleCompress
  - editDNSPacketTTL
  - checkIfPacketContainsRecords
  - rewritePacketWithoutRecordTypes
  - clearDNSPacketRecordTypes
  - clearDNSPacketRecordTypes
  - ageDNSPacket
  - ageDNSPacket
  - shuffleDNSPacket
  - getDNSPacketMinTTL
  - getDNSPacketLength
  - getRecordsOfTypeCount
  - getEDNSUDPPayloadSizeAndZ
  - visitDNSPacket
  source_file: /src/pdns/pdns/recursordist/dnsparser.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs:
    - item_type: typedef
      name: parts_t
      pos:
        line_end: 779
        line_start: 779
        source_file: /src/pdns/pdns/recursordist/dnsparser.cc
      type: vector
    union: []
- function_names:
  - ZoneXFR::notifyZoneTracker
  - ZoneXFR::insertZoneTracker
  - ZoneXFR::clearZoneTracker
  source_file: /src/pdns/pdns/recursordist/rec-xfrtracker.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - MemRecursorCache::resetStaticsForTests
  - MemRecursorCache::MemRecursorCache
  - MemRecursorCache::size
  - MemRecursorCache::stats
  - MemRecursorCache::ecsIndexSize
  - MemRecursorCache::CacheEntry::authRecsSizeEstimate() const
  - MemRecursorCache::CacheEntry::sigRecsSizeEstimate() const
  - MemRecursorCache::CacheEntry::sizeEstimate() const
  - MemRecursorCache::bytes
  - updateDNSSECValidationStateFromCache
  - ptrAssign
  - MemRecursorCache::handleHit
  - pushRefreshTask
  - MemRecursorCache::updateStaleEntry
  - MemRecursorCache::handleServeStaleBookkeeping
  - MemRecursorCache::getEntryUsingECSIndex
  - MemRecursorCache::getEntries
  - MemRecursorCache::entryMatches
  - MemRecursorCache::fakeTTD
  - MemRecursorCache::get
  - MemRecursorCache::CacheEntry::shouldReplace(time_t now, bool auth, vState state,
    bool refresh)
  - MemRecursorCache::replace
  - MemRecursorCache::replace
  - MemRecursorCache::doWipeCache
  - MemRecursorCache::doAgeCache
  - MemRecursorCache::updateValidationStatus
  - MemRecursorCache::doDump
  - MemRecursorCache::doPrune
  - MemRecursorCache::getRecordSet
  - MemRecursorCache::getRecordSets
  - putAuthRecord
  - MemRecursorCache::putRecordSet
  - MemRecursorCache::putRecordSets
  source_file: /src/pdns/pdns/recursordist/recursor_cache.cc
  types:
    enum:
    - enumerators:
      - name: required_string_version
        value: '1'
      - name: required_int64_time
        value: '4'
      - name: required_string_type
        value: '5'
      - name: required_uint64_protocolVersion
        value: '3'
      - name: required_string_identity
        value: '2'
      - name: repeated_message_cacheEntry
        value: '6'
      item_type: enum
      name: PBCacheDump
      pos:
        line_end: 995
        line_start: 987
        source_file: /src/pdns/pdns/recursordist/recursor_cache.cc
    - enumerators:
      - name: repeated_bytes_record
        value: '1'
      - name: required_bytes_name
        value: '4'
      - name: repeated_message_authRecord
        value: '3'
      - name: required_bytes_authZone
        value: '5'
      - name: repeated_bytes_sig
        value: '2'
      - name: required_message_from
        value: '6'
      - name: optional_bytes_netmask
        value: '7'
      - name: optional_bytes_rtag
        value: '8'
      - name: required_uint32_state
        value: '9'
      - name: required_int64_ttd
        value: '10'
      - name: required_uint32_servedStale
        value: '12'
      - name: required_bool_submitted
        value: '15'
      - name: required_bool_tooBig
        value: '16'
      - name: optional_bool_tcp
        value: '17'
      - name: required_uint32_qtype
        value: '13'
      - name: required_uint32_orig_ttl
        value: '11'
      - name: required_bool_auth
        value: '14'
      item_type: enum
      name: PBCacheEntry
      pos:
        line_end: 1016
        line_start: 997
        source_file: /src/pdns/pdns/recursordist/recursor_cache.cc
    - enumerators:
      - name: required_bytes_name
        value: '1'
      - name: required_uint32_ttl
        value: '5'
      - name: required_uint32_type
        value: '3'
      - name: required_bytes_rdata
        value: '2'
      - name: required_uint32_class
        value: '4'
      - name: required_uint32_place
        value: '6'
      - name: required_uint32_clen
        value: '7'
      item_type: enum
      name: PBAuthRecord
      pos:
        line_end: 1027
        line_start: 1018
        source_file: /src/pdns/pdns/recursordist/recursor_cache.cc
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - '& operator=(const MiniCurl&)'
  source_file: /src/pdns/pdns/recursordist/minicurl.hh
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: CURL_STRICTER
      pos:
        line_end: 34
        line_start: 33
        source_file: /src/pdns/pdns/recursordist/minicurl.hh
      type_or_value: '1'
    structs: []
    typedefs: []
    union: []
- function_names:
  - pdns::ZoneMD::ZoneMD
  - '& getDNSKEYs() const'
  - '& getRRSIGs(QType requestedType)'
  - pdns::ZoneMD::getZONEMDs
  - '& getNSECs() const'
  - '& getNSEC3s() const'
  - '& getNSEC3Label() const'
  - '& getNSEC3Params() const'
  - operator()(const RRSetKey_t& lhs, const RRSetKey_t& rhs) const
  - pdns::ZoneMD::ZoneMD
  - '& getDNSKEYs() const'
  - '& getRRSIGs(QType requestedType)'
  - pdns::ZoneMD::getZONEMDs
  - '& getNSECs() const'
  - '& getNSEC3s() const'
  - '& getNSEC3Label() const'
  - '& getNSEC3Params() const'
  - operator()(const RRSetKey_t& lhs, const RRSetKey_t& rhs) const
  source_file: /src/pdns/pdns/recursordist/zonemd.hh
  types:
    enum:
    - enumerators:
      - name: Ignore
      - name: Validate
      - name: Require
      item_type: enum
      name: Config
      pos:
        line_end: 44
        line_start: 39
        source_file: /src/pdns/pdns/recursordist/zonemd.hh
    - enumerators:
      - name: OK
      - name: ValidationFailure
      - name: NoValidationDone
      item_type: enum
      name: Result
      pos:
        line_end: 50
        line_start: 45
        source_file: /src/pdns/pdns/recursordist/zonemd.hh
    - enumerators:
      - name: Ignore
      - name: Validate
      - name: Require
      item_type: enum
      name: Config
      pos:
        line_end: 44
        line_start: 39
        source_file: /src/pdns/pdns/recursordist/zonemd.hh
    - enumerators:
      - name: OK
      - name: ValidationFailure
      - name: NoValidationDone
      item_type: enum
      name: Result
      pos:
        line_end: 50
        line_start: 45
        source_file: /src/pdns/pdns/recursordist/zonemd.hh
    preproc_defs: []
    structs:
    - fields: []
      item_type: struct
      name: CanonRRSetKeyCompare
      pos:
        line_end: 123
        line_start: 114
        source_file: /src/pdns/pdns/recursordist/zonemd.hh
    - fields:
      - name: record
        type: std::shared_ptr<const ZONEMDRecordContent>
      - name: duplicate
        type: bool
      item_type: struct
      name: ZoneMDAndDuplicateFlag
      pos:
        line_end: 131
        line_start: 127
        source_file: /src/pdns/pdns/recursordist/zonemd.hh
    - fields: []
      item_type: struct
      name: CanonRRSetKeyCompare
      pos:
        line_end: 123
        line_start: 114
        source_file: /src/pdns/pdns/recursordist/zonemd.hh
    - fields:
      - name: record
        type: std::shared_ptr<const ZONEMDRecordContent>
      - name: duplicate
        type: bool
      item_type: struct
      name: ZoneMDAndDuplicateFlag
      pos:
        line_end: 131
        line_start: 127
        source_file: /src/pdns/pdns/recursordist/zonemd.hh
    typedefs: []
    union: []
- function_names:
  - SvcParam::keyFromString
  - SvcParam::keyFromString
  - SvcParam::keyToString
  - SvcParam::SvcParam
  - SvcParam::SvcParam
  - SvcParam::SvcParam
  - SvcParam::SvcParam
  - SvcParam::SvcParam
  - SvcParam::SvcParam
  - SvcParam::SvcParam
  - SvcParam::SvcParam
  - SvcParam::operator<(const SvcParam& other) const
  - SvcParam::operator==(const SvcParam& other) const
  - SvcParam::operator!=(const SvcParam& other) const
  - '& SvcParam::getIPHints() const'
  - SvcParam::getPort
  - '& SvcParam::getALPN() const'
  - '& SvcParam::getMandatory() const'
  - '& SvcParam::getECH() const'
  - '& SvcParam::getValue() const'
  - '& SvcParam::getTLSSupportedGroups() const'
  source_file: /src/pdns/pdns/recursordist/svc-records.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  source_file: /src/pdns/pdns/recursordist/test-ednscookie_cc.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - ~KqueueFDMultiplexer()
  - KqueueFDMultiplexer::getName
  - make
  - KqueueRegisterOurselves
  - KqueueFDMultiplexer::KqueueFDMultiplexer
  - convertEventKind
  - KqueueFDMultiplexer::addFD
  - KqueueFDMultiplexer::removeFD
  - KqueueFDMultiplexer::getAvailableFDs
  - KqueueFDMultiplexer::run
  - acceptData
  - main
  source_file: /src/pdns/pdns/recursordist/kqueuemplexer.cc
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields: []
      item_type: struct
      name: KqueueRegisterOurselves
      pos:
        line_end: 75
        line_start: 69
        source_file: /src/pdns/pdns/recursordist/kqueuemplexer.cc
    typedefs: []
    union: []
- function_names:
  - PDNSException::PDNSException
  - PDNSException::PDNSException
  - TimeoutException::TimeoutException
  - TimeoutException::TimeoutException
  source_file: /src/pdns/pdns/recursordist/pdnsexception.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - TCPOutConnectionManager::toString
  - TCPOutConnectionManager::size
  - TCPOutConnectionManager::getSize
  source_file: /src/pdns/pdns/recursordist/rec-tcpout.hh
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: d_handler
        type: std::shared_ptr<TCPIOHandler>
      - name: d_local
        type: std::optional<ComboAddress>
      - name: d_last_used
        type: timeval
      - name: d_numqueries
        type: size_t
      - name: d_verboseLogging
        type: bool
      item_type: struct
      name: Connection
      pos:
        line_end: 59
        line_start: 44
        source_file: /src/pdns/pdns/recursordist/rec-tcpout.hh
    typedefs: []
    union: []
- function_names:
  - precsize_aton
  - latlon2ul
  - LOCRecordContent::report
  - LOCRecordContent::make
  - LOCRecordContent::toPacket
  - LOCRecordContent::make
  - LOCRecordContent::LOCRecordContent
  - LOCRecordContent::getZoneRepresentation
  source_file: /src/pdns/pdns/recursordist/sillyrecords.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - AsyncServer::AsyncServer
  - AsyncWebServer::AsyncWebServer
  - AsyncWebServer::createServer
  source_file: /src/pdns/pdns/recursordist/ws-recursor.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - zonemdTest
  - BOOST_AUTO_TEST_CASE
  - zonemdGenericTest
  - BOOST_AUTO_TEST_CASE
  source_file: /src/pdns/pdns/recursordist/test-rec-zonetocache.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - CircularWriteBuffer::hasRoomFor
  - CircularWriteBuffer::tooBig
  - CircularWriteBuffer::write
  - CircularWriteBuffer::flush
  - '& RemoteLoggerInterface::toErrorString(Result result)'
  - RemoteLogger::RemoteLogger
  - RemoteLogger::reconnect
  - RemoteLogger::queueData
  - RemoteLogger::maintenanceThread
  - RemoteLogger::~RemoteLogger()
  source_file: /src/pdns/pdns/recursordist/remote_logger.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - AggressiveNSECCache::getBestZone
  - AggressiveNSECCache::getZone
  - AggressiveNSECCache::updateEntriesCount
  - AggressiveNSECCache::removeZoneInfo
  - AggressiveNSECCache::prune
  - isMinimallyCoveringNSEC
  - commonPrefixIsLong
  - AggressiveNSECCache::ZoneEntry::CacheEntry::sizeEstimate() const
  - AggressiveNSECCache::isSmallCoveringNSEC3
  - AggressiveNSECCache::insertNSEC
  - AggressiveNSECCache::getNSECBefore
  - AggressiveNSECCache::getNSEC3
  - addToRRSet
  - addRecordToRRSet
  - AggressiveNSECCache::synthesizeFromNSEC3Wildcard
  - AggressiveNSECCache::synthesizeFromNSECWildcard
  - AggressiveNSECCache::getNSEC3Denial
  - AggressiveNSECCache::getDenial
  - '& AggressiveNSECCache::ZoneEntry::getZoneTypeAsString(ZoneEntry::ZoneDenialType
    type)'
  - AggressiveNSECCache::dumpToFile
  source_file: /src/pdns/pdns/recursordist/aggressive_nsec.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - pdns::channel::Sender::Sender
  - pdns::channel::Sender::Sender
  - pdns::channel::Sender::Sender
  - '& operator=(const Sender&)'
  - pdns::channel::Sender::Sender
  - '& operator=(Sender&&)'
  - ~Sender()
  - pdns::channel::Receiver::Receiver
  - pdns::channel::Receiver::Receiver
  - pdns::channel::Receiver::Receiver
  - '& operator=(const Receiver&)'
  - pdns::channel::Receiver::Receiver
  - '& operator=(Receiver&&)'
  - ~Receiver()
  - pdns::channel::Receiver::getDescriptor
  - pdns::channel::Receiver::isClosed
  - pdns::channel::Notifier::Notifier
  - pdns::channel::Notifier::Notifier
  - '& operator=(const Notifier&)'
  - pdns::channel::Notifier::Notifier
  - '& operator=(Notifier&&)'
  - ~Notifier()
  - pdns::channel::Waiter::Waiter
  - pdns::channel::Waiter::Waiter
  - '& operator=(const Waiter&)'
  - pdns::channel::Waiter::Waiter
  - '& operator=(Waiter&&)'
  - ~Waiter()
  - pdns::channel::Waiter::isClosed
  - pdns::channel::Sender<T, D>::send
  - pdns::channel::Sender<T, D>::close
  - pdns::channel::Receiver<T, D>::receive
  - pdns::channel::Receiver<T, D>::receive
  - pdns::channel::createObjectQueue
  - pdns::channel::Sender::Sender
  - pdns::channel::Sender::Sender
  - pdns::channel::Sender::Sender
  - '& operator=(const Sender&)'
  - pdns::channel::Sender::Sender
  - '& operator=(Sender&&)'
  - ~Sender()
  - pdns::channel::Receiver::Receiver
  - pdns::channel::Receiver::Receiver
  - pdns::channel::Receiver::Receiver
  - '& operator=(const Receiver&)'
  - pdns::channel::Receiver::Receiver
  - '& operator=(Receiver&&)'
  - ~Receiver()
  - pdns::channel::Receiver::getDescriptor
  - pdns::channel::Receiver::isClosed
  - pdns::channel::Notifier::Notifier
  - pdns::channel::Notifier::Notifier
  - '& operator=(const Notifier&)'
  - pdns::channel::Notifier::Notifier
  - '& operator=(Notifier&&)'
  - ~Notifier()
  - pdns::channel::Waiter::Waiter
  - pdns::channel::Waiter::Waiter
  - '& operator=(const Waiter&)'
  - pdns::channel::Waiter::Waiter
  - '& operator=(Waiter&&)'
  - ~Waiter()
  - pdns::channel::Waiter::isClosed
  - pdns::channel::Sender<T, D>::send
  - pdns::channel::Sender<T, D>::close
  - pdns::channel::Receiver<T, D>::receive
  - pdns::channel::Receiver<T, D>::receive
  - pdns::channel::createObjectQueue
  - pdns::channel::Sender::Sender
  - pdns::channel::Sender::Sender
  - pdns::channel::Sender::Sender
  - '& operator=(const Sender&)'
  - pdns::channel::Sender::Sender
  - '& operator=(Sender&&)'
  - ~Sender()
  - pdns::channel::Receiver::Receiver
  - pdns::channel::Receiver::Receiver
  - pdns::channel::Receiver::Receiver
  - '& operator=(const Receiver&)'
  - pdns::channel::Receiver::Receiver
  - '& operator=(Receiver&&)'
  - ~Receiver()
  - pdns::channel::Receiver::getDescriptor
  - pdns::channel::Receiver::isClosed
  - pdns::channel::Notifier::Notifier
  - pdns::channel::Notifier::Notifier
  - '& operator=(const Notifier&)'
  - pdns::channel::Notifier::Notifier
  - '& operator=(Notifier&&)'
  - ~Notifier()
  - pdns::channel::Waiter::Waiter
  - pdns::channel::Waiter::Waiter
  - '& operator=(const Waiter&)'
  - pdns::channel::Waiter::Waiter
  - '& operator=(Waiter&&)'
  - ~Waiter()
  - pdns::channel::Waiter::isClosed
  - pdns::channel::Sender<T, D>::send
  - pdns::channel::Sender<T, D>::close
  - pdns::channel::Receiver<T, D>::receive
  - pdns::channel::Receiver<T, D>::receive
  - pdns::channel::createObjectQueue
  - pdns::channel::Sender::Sender
  - pdns::channel::Sender::Sender
  - pdns::channel::Sender::Sender
  - '& operator=(const Sender&)'
  - pdns::channel::Sender::Sender
  - '& operator=(Sender&&)'
  - ~Sender()
  - pdns::channel::Receiver::Receiver
  - pdns::channel::Receiver::Receiver
  - pdns::channel::Receiver::Receiver
  - '& operator=(const Receiver&)'
  - pdns::channel::Receiver::Receiver
  - '& operator=(Receiver&&)'
  - ~Receiver()
  - pdns::channel::Receiver::getDescriptor
  - pdns::channel::Receiver::isClosed
  - pdns::channel::Notifier::Notifier
  - pdns::channel::Notifier::Notifier
  - '& operator=(const Notifier&)'
  - pdns::channel::Notifier::Notifier
  - '& operator=(Notifier&&)'
  - ~Notifier()
  - pdns::channel::Waiter::Waiter
  - pdns::channel::Waiter::Waiter
  - '& operator=(const Waiter&)'
  - pdns::channel::Waiter::Waiter
  - '& operator=(Waiter&&)'
  - ~Waiter()
  - pdns::channel::Waiter::isClosed
  - pdns::channel::Sender<T, D>::send
  - pdns::channel::Sender<T, D>::close
  - pdns::channel::Receiver<T, D>::receive
  - pdns::channel::Receiver<T, D>::receive
  - pdns::channel::createObjectQueue
  source_file: /src/pdns/pdns/recursordist/channel.hh
  types:
    enum:
    - enumerators:
      - name: SenderNonBlocking
      - name: SenderBlocking
      item_type: enum
      name: SenderBlockingMode
      pos:
        line_end: 36
        line_start: 32
        source_file: /src/pdns/pdns/recursordist/channel.hh
    - enumerators:
      - name: ReceiverNonBlocking
      - name: ReceiverBlocking
      item_type: enum
      name: ReceiverBlockingMode
      pos:
        line_end: 41
        line_start: 37
        source_file: /src/pdns/pdns/recursordist/channel.hh
    - enumerators:
      - name: SenderNonBlocking
      - name: SenderBlocking
      item_type: enum
      name: SenderBlockingMode
      pos:
        line_end: 36
        line_start: 32
        source_file: /src/pdns/pdns/recursordist/channel.hh
    - enumerators:
      - name: ReceiverNonBlocking
      - name: ReceiverBlocking
      item_type: enum
      name: ReceiverBlockingMode
      pos:
        line_end: 41
        line_start: 37
        source_file: /src/pdns/pdns/recursordist/channel.hh
    - enumerators:
      - name: SenderNonBlocking
      - name: SenderBlocking
      item_type: enum
      name: SenderBlockingMode
      pos:
        line_end: 36
        line_start: 32
        source_file: /src/pdns/pdns/recursordist/channel.hh
    - enumerators:
      - name: ReceiverNonBlocking
      - name: ReceiverBlocking
      item_type: enum
      name: ReceiverBlockingMode
      pos:
        line_end: 41
        line_start: 37
        source_file: /src/pdns/pdns/recursordist/channel.hh
    - enumerators:
      - name: SenderNonBlocking
      - name: SenderBlocking
      item_type: enum
      name: SenderBlockingMode
      pos:
        line_end: 36
        line_start: 32
        source_file: /src/pdns/pdns/recursordist/channel.hh
    - enumerators:
      - name: ReceiverNonBlocking
      - name: ReceiverBlocking
      item_type: enum
      name: ReceiverBlockingMode
      pos:
        line_end: 41
        line_start: 37
        source_file: /src/pdns/pdns/recursordist/channel.hh
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - RecEventTrace::RecEventTrace
  - RecEventTrace::RecEventTrace
  - RecEventTrace::RecEventTrace
  - '& operator=(const RecEventTrace& old)'
  - '& operator=(RecEventTrace&& old) noexcept'
  - ~RecEventTrace()
  - RecEventTrace::toString
  - RecEventTrace::toString
  - RecEventTrace::Entry
  - RecEventTrace::Entry
  - RecEventTrace::toString
  - RecEventTrace::setEnabled
  - RecEventTrace::enabled
  - RecEventTrace::add
  - RecEventTrace::add
  - RecEventTrace::add
  - RecEventTrace::add
  - RecEventTrace::add
  - RecEventTrace::setValueName
  - RecEventTrace::addExtraValues
  - RecEventTrace::clear
  - RecEventTrace::reset
  - RecEventTrace::toString
  - '& getEvents() const'
  - RecEventTrace::setParent
  - RecEventTrace::getThisOTTraceEnabled
  - RecEventTrace::setThisOTTraceEnabled
  - RecEventTrace::EventScope::EventScope
  - RecEventTrace::EventScope::close
  - ~EventScope()
  - RecEventTrace::EventScope::EventScope
  - RecEventTrace::EventScope::EventScope
  - '& operator=(const EventScope&)'
  - '& operator=(EventScope&&)'
  source_file: /src/pdns/pdns/recursordist/rec-eventtrace.hh
  types:
    enum:
    - enumerators:
      - name: PCacheCheck
        value: '2'
      - name: LuaGetTag
        value: '101'
      - name: LuaPreResolve
        value: '105'
      - name: LuaNXDomain
        value: '109'
      - name: ProcessUDP
        value: '122'
      - name: CustomEvent
        value: '0'
      - name: AnswerSent
        value: '3'
      - name: LuaGetTagFFI
        value: '102'
      - name: ProcessTCP
        value: '123'
      - name: LuaPreOutQuery
        value: '106'
      - name: LuaPostResolveFFI
        value: '110'
      - name: SyncRes
        value: '100'
      - name: LuaIPFilter
        value: '103'
      - name: LuaPostResolve
        value: '107'
      - name: AuthRequest
        value: '120'
      - name: ReqRecv
        value: '1'
      - name: LuaPreRPZ
        value: '104'
      - name: LuaNoData
        value: '108'
      - name: PacketParse
        value: '121'
      item_type: enum
      name: EventType
      pos:
        line_end: 61
        line_start: 34
        source_file: /src/pdns/pdns/recursordist/rec-eventtrace.hh
    - enumerators:
      - name: Disabled
      - name: Enabled
      - name: Invalid
      item_type: enum
      name: Status
      pos:
        line_end: 369
        line_start: 364
        source_file: /src/pdns/pdns/recursordist/rec-eventtrace.hh
    preproc_defs: []
    structs:
    - fields:
      - name: d_value
        type: Value_t
      - name: d_extraValues
        type: std::vector<std::pair<string, Value_t>>
      - name: d_custom
        type: std::string
      - name: d_valueName
        type: std::string
      - name: d_ts
        type: int64_t
      - name: d_parent
        type: size_t
      - name: d_matching
        type: size_t
      - name: d_event
        type: EventType
      - name: d_start
        type: bool
      item_type: struct
      name: Entry
      pos:
        line_end: 169
        line_start: 136
        source_file: /src/pdns/pdns/recursordist/rec-eventtrace.hh
    typedefs: []
    union: []
- function_names:
  - do_test_referral_depth
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  source_file: /src/pdns/pdns/recursordist/test-syncres_cc2.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - DNSCryptoKeyEngine::makeFromISCFile
  - DNSCryptoKeyEngine::makeFromISCString
  - DNSCryptoKeyEngine::makeFromPEMFile
  - DNSCryptoKeyEngine::makeFromPEMString
  - DNSCryptoKeyEngine::convertToISC
  - DNSCryptoKeyEngine::make
  - DNSCryptoKeyEngine::listAllAlgosWithBackend
  - DNSCryptoKeyEngine::listSupportedAlgoNames
  - DNSCryptoKeyEngine::report
  - DNSCryptoKeyEngine::testAll
  - DNSCryptoKeyEngine::testOne
  - ISCStringtoMap
  - DNSCryptoKeyEngine::testVerify
  - DNSCryptoKeyEngine::verifyOne
  - DNSCryptoKeyEngine::testMakers
  - DNSCryptoKeyEngine::makeFromPublicKeyString
  - getMessageForRRSET
  - DNSCryptoKeyEngine::isAlgorithmSwitchedOff
  - DNSCryptoKeyEngine::switchOffAlgorithm
  - DNSCryptoKeyEngine::isAlgorithmSupported
  - digestToAlgorithmNumber
  - DNSCryptoKeyEngine::isDigestSupported
  - makeDSFromDNSKey
  - makeDNSKEYFromDNSCryptoKeyEngine
  - getStartOfWeek
  - hashQNameWithSalt
  - hashQNameWithSalt
  - incrementHash
  - decrementHash
  - '& DNSSECPrivateKey::getDNSKEY() const'
  - DNSSECPrivateKey::computeDNSKEY
  - calculateHMAC
  - makeTSIGPayload
  - makeTSIGMessageFromTSIGPacket
  - addTSIG
  - validateTSIG
  source_file: /src/pdns/pdns/recursordist/dnssecinfra.cc
  types:
    enum:
    - enumerators:
      - name: str
      - name: numeric
      - name: base64
      item_type: enum
      name: KeyTypes
      pos:
        line_end: 80
        line_start: 80
        source_file: /src/pdns/pdns/recursordist/dnssecinfra.cc
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - doCarbonDump
  source_file: /src/pdns/pdns/recursordist/rec-carbon.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - htobe16
  - htole16
  - be16toh
  - le16toh
  - htobe32
  - htole32
  - be32toh
  - le32toh
  - htobe64
  - htole64
  - be64toh
  - le64toh
  - htobe16
  - htole16
  - be16toh
  - le16toh
  - htobe32
  - htole32
  - be32toh
  - le32toh
  - htobe64
  - htole64
  - be64toh
  - le64toh
  - operator==(const ComboAddress& rhs) const
  - operator!=(const ComboAddress& rhs) const
  - operator<(const ComboAddress& rhs) const
  - operator>(const ComboAddress& rhs) const
  - operator()(const ComboAddress& address) const
  - operator()(const ComboAddress& address) const
  - operator()(const ComboAddress& lhs, const ComboAddress& rhs) const
  - operator()(const ComboAddress& lhs, const ComboAddress& rhs) const
  - getSocklen
  - ComboAddress
  - ComboAddress
  - ComboAddress
  - ComboAddress
  - setSockaddr
  - ComboAddress
  - isIPv6
  - isIPv4
  - isMappedIPv4
  - isUnspecified
  - mapToIPv4
  - toString
  - toStringNoInterface
  - toStringReversed
  - toStringWithPort
  - toStringWithPortExcept
  - toLogString
  - toStructuredLogString
  - toByteString
  - getNetworkOrderPort
  - getPort
  - setPort
  - reset
  - getBits
  - getBit
  - caContainerToString
  - getSocklen
  - SockaddrWrapper
  - SockaddrWrapper
  - SockaddrWrapper
  - SockaddrWrapper
  - SockaddrWrapper
  - setSockaddr
  - SockaddrWrapper
  - isIPv6
  - isIPv4
  - isUnixSocket
  - toString
  - toStringWithPort
  - reset
  - NetmaskException::NetmaskException
  - makeComboAddress
  - makeComboAddressFromRaw
  - makeComboAddressFromRaw
  - Netmask::Netmask
  - Netmask::Netmask
  - Netmask::Netmask
  - Netmask::Netmask
  - Netmask::setBits
  - Netmask::Netmask
  - Netmask::match
  - Netmask::match
  - Netmask::match
  - Netmask::match4
  - Netmask::toString
  - Netmask::toStringNoMask
  - Netmask::toByteString
  - '& getNetwork() const'
  - '& getMaskedNetwork() const'
  - Netmask::getBits
  - Netmask::isIPv6
  - Netmask::isIPv4
  - operator<(const Netmask& rhs) const
  - operator>(const Netmask& rhs) const
  - operator==(const Netmask& rhs) const
  - operator!=(const Netmask& rhs) const
  - Netmask::empty
  - Netmask::getNormalized
  - Netmask::getSuper
  - Netmask::getFullBits
  - Netmask::getBit
  - operator()(const Netmask& netmask) const
  - operator()(const Netmask& netmask) const
  - operator()(const Netmask& netmask) const
  - NetmaskTree::TreeNode::TreeNode
  - NetmaskTree::TreeNode::TreeNode
  - NetmaskTree::TreeNode::make_left
  - NetmaskTree::TreeNode::make_right
  - NetmaskTree::TreeNode::split
  - NetmaskTree::TreeNode::fork
  - NetmaskTree::TreeNode::traverse_l
  - NetmaskTree::TreeNode::traverse_lnr
  - NetmaskTree::TreeNode::traverse_lnr_assigned
  - NetmaskTree::cleanup_tree
  - NetmaskTree::copyTree
  - NetmaskTree::Iterator::Iterator
  - NetmaskTree::Iterator::Iterator
  - '& operator++()'
  - operator++(int)
  - operator*()
  - operator->()
  - operator==(const Iterator& rhs) const
  - operator!=(const Iterator& rhs) const
  - NetmaskTree::NetmaskTree
  - NetmaskTree::NetmaskTree
  - ~NetmaskTree()
  - '& operator=(const NetmaskTree& rhs)'
  - NetmaskTree::NetmaskTree
  - '& operator=(NetmaskTree&&) noexcept'
  - NetmaskTree::begin
  - NetmaskTree::end
  - NetmaskTree::begin
  - NetmaskTree::end
  - '& insert(const string& mask)'
  - '& insert(const key_type& key)'
  - NetmaskTree::insert_or_assign
  - NetmaskTree::insert_or_assign
  - NetmaskTree::has_key
  - NetmaskTree::lookup
  - NetmaskTree::lookup
  - NetmaskTree::erase
  - NetmaskTree::erase
  - NetmaskTree::empty
  - NetmaskTree::size
  - NetmaskTree::match
  - NetmaskTree::match
  - NetmaskTree::clear
  - NetmaskTree::swap
  - NetmaskTree::lookupImpl
  - NetmaskGroup::NetmaskGroup
  - NetmaskGroup::match
  - NetmaskGroup::match
  - NetmaskGroup::lookup
  - NetmaskGroup::lookup
  - NetmaskGroup::addMask
  - NetmaskGroup::addMask
  - NetmaskGroup::addMasks
  - NetmaskGroup::deleteMask
  - NetmaskGroup::deleteMasks
  - NetmaskGroup::deleteMask
  - NetmaskGroup::clear
  - NetmaskGroup::empty
  - NetmaskGroup::size
  - NetmaskGroup::toString
  - NetmaskGroup::toStringVector
  - NetmaskGroup::toMasks
  - SComboAddress
  - operator<(const SComboAddress& rhs) const
  - operator const ComboAddress&() const
  - NetworkError::NetworkError
  - NetworkError::NetworkError
  - AddressAndPortRange::AddressAndPortRange
  - AddressAndPortRange::AddressAndPortRange
  - AddressAndPortRange::getFullBits
  - AddressAndPortRange::getBits
  - AddressAndPortRange::getBit
  - AddressAndPortRange::isIPv4
  - AddressAndPortRange::isIPv6
  - AddressAndPortRange::getNormalized
  - AddressAndPortRange::getSuper
  - '& getNetwork() const'
  - AddressAndPortRange::toString
  - AddressAndPortRange::empty
  - operator==(const AddressAndPortRange& rhs) const
  - operator<(const AddressAndPortRange& rhs) const
  - operator>(const AddressAndPortRange& rhs) const
  - operator()(const AddressAndPortRange& apr) const
  source_file: /src/pdns/pdns/recursordist/iputils.hh
  types:
    enum:
    - enumerators:
      - name: humanString
      - name: byteString
      item_type: enum
      name: stringType
      pos:
        line_end: 751
        line_start: 747
        source_file: /src/pdns/pdns/recursordist/iputils.hh
    preproc_defs:
    - item_type: preproc_def
      name: CONNECTX_FASTOPEN
      pos:
        line_end: 57
        line_start: 56
        source_file: /src/pdns/pdns/recursordist/iputils.hh
      type_or_value: '1'
    - item_type: preproc_def
      name: GEN_IP_PKTINFO
      pos:
        line_end: 2070
        line_start: 2069
        source_file: /src/pdns/pdns/recursordist/iputils.hh
      type_or_value: IP_PKTINFO
    - item_type: preproc_def
      name: GEN_IP_PKTINFO
      pos:
        line_end: 2072
        line_start: 2071
        source_file: /src/pdns/pdns/recursordist/iputils.hh
      type_or_value: IP_RECVDSTADDR
    structs:
    - fields: []
      item_type: struct
      name: addressPortOnlyHash
      pos:
        line_end: 148
        line_start: 133
        source_file: /src/pdns/pdns/recursordist/iputils.hh
    - fields: []
      item_type: struct
      name: addressOnlyHash
      pos:
        line_end: 168
        line_start: 150
        source_file: /src/pdns/pdns/recursordist/iputils.hh
    - fields: []
      item_type: struct
      name: addressOnlyLessThan
      pos:
        line_end: 185
        line_start: 170
        source_file: /src/pdns/pdns/recursordist/iputils.hh
    - fields: []
      item_type: struct
      name: addressOnlyEqual
      pos:
        line_end: 199
        line_start: 187
        source_file: /src/pdns/pdns/recursordist/iputils.hh
    - fields: []
      item_type: struct
      name: Hash
      pos:
        line_end: 963
        line_start: 957
        source_file: /src/pdns/pdns/recursordist/iputils.hh
    - fields: []
      item_type: struct
      name: hash<Netmask>
      pos:
        line_end: 980
        line_start: 974
        source_file: /src/pdns/pdns/recursordist/iputils.hh
    - fields: []
      item_type: struct
      name: hash<Netmask>
      pos:
        line_end: 980
        line_start: 974
        source_file: /src/pdns/pdns/recursordist/iputils.hh
    - fields:
      - name: ca
        type: ComboAddress
      item_type: struct
      name: SComboAddress
      pos:
        line_end: 1859
        line_start: 1846
        source_file: /src/pdns/pdns/recursordist/iputils.hh
    - fields: []
      item_type: struct
      name: hash
      pos:
        line_end: 2044
        line_start: 2034
        source_file: /src/pdns/pdns/recursordist/iputils.hh
    typedefs: []
    union:
    - fields:
      - name: sin4
        type: sockaddr_in
      - name: sin6
        type: sockaddr_in6
      - name: truncate(unsigned int bits) noexcept
        type: void
      item_type: union
      name: ComboAddress
      pos:
        line_end: 505
        line_start: 90
        source_file: /src/pdns/pdns/recursordist/iputils.hh
    - fields:
      - name: sin4
        type: sockaddr_in
      - name: sin6
        type: sockaddr_in6
      - name: sinun
        type: sockaddr_un
      item_type: union
      name: SockaddrWrapper
      pos:
        line_end: 633
        line_start: 507
        source_file: /src/pdns/pdns/recursordist/iputils.hh
- function_names:
  - BOOST_AUTO_TEST_CASE
  source_file: /src/pdns/pdns/recursordist/test-base32_cc.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs:
    - item_type: typedef
      name: case_t
      pos:
        line_end: 16
        line_start: 16
        source_file: /src/pdns/pdns/recursordist/test-base32_cc.cc
      type: tuple<const std::string, const std::string>
    - item_type: typedef
      name: cases_t
      pos:
        line_end: 17
        line_start: 17
        source_file: /src/pdns/pdns/recursordist/test-base32_cc.cc
      type: list<case_t>
    union: []
- function_names:
  - sizeEstimate
  - NegCache::isStale
  - NegCache::isEntryUsable
  - NegCache::MapCombo
  - NegCache::MapCombo
  - '& operator=(const MapCombo&)'
  - ~MapCombo()
  - NegCache::MapCombo
  - '& operator=(MapCombo&&)'
  - NegCache::invalidate
  - NegCache::preRemoval
  - NegCache::lock
  - NegCache::getEntriesCount
  - NegCache::incEntriesCount
  - NegCache::decEntriesCount
  - NegCache::clearEntriesCount
  - '& getMap(const DNSName& qname)'
  - '& getMap(const DNSName& qname) const'
  source_file: /src/pdns/pdns/recursordist/negcache.hh
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: records
        type: vector<DNSRecord>
      - name: signatures
        type: vector<DNSRecord>
      item_type: struct
      name: recordsAndSignatures
      pos:
        line_end: 61
        line_start: 45
        source_file: /src/pdns/pdns/recursordist/negcache.hh
    - fields:
      - name: authoritySOA
        type: recordsAndSignatures
      - name: DNSSECRecords
        type: recordsAndSignatures
      - name: d_name
        type: DNSName
      - name: d_auth
        type: DNSName
      - name: d_ttd
        type: time_t
      - name: d_orig_ttl
        type: uint32_t
      - name: d_servedStale
        type: uint16_t
      - name: d_validationState
        type: vState
      - name: d_qtype
        type: QType
      - name: sizeEstimate() const
        type: size_t
      item_type: struct
      name: NegCacheEntry
      pos:
        line_end: 102
        line_start: 75
        source_file: /src/pdns/pdns/recursordist/negcache.hh
    - fields: []
      item_type: struct
      name: CompositeKey
      pos:
        line_end: 120
        line_start: 118
        source_file: /src/pdns/pdns/recursordist/negcache.hh
    - fields: []
      item_type: struct
      name: SequenceTag
      pos:
        line_end: 123
        line_start: 121
        source_file: /src/pdns/pdns/recursordist/negcache.hh
    - fields:
      - name: d_content
        type: LockGuarded<LockedContent>
      - name: d_entriesCount
        type: pdns::stat_t
      item_type: struct
      name: MapCombo
      pos:
        line_end: 191
        line_start: 140
        source_file: /src/pdns/pdns/recursordist/negcache.hh
    - fields:
      - name: d_map
        type: negcache_t
      - name: d_contended_count
        type: uint64_t
      - name: d_acquired_count
        type: uint64_t
      item_type: struct
      name: LockedContent
      pos:
        line_end: 155
        line_start: 148
        source_file: /src/pdns/pdns/recursordist/negcache.hh
    typedefs: []
    union: []
- function_names:
  - FDMultiplexerException::FDMultiplexerException
  - ~FDMultiplexer()
  - FDMultiplexer::InRun
  - FDMultiplexer::InRun
  - '& operator=(const InRun&)'
  - '& operator=(InRun&&)'
  - FDMultiplexer::InRun
  - ~InRun()
  - FDMultiplexer::addReadFD
  - FDMultiplexer::addWriteFD
  - FDMultiplexer::removeReadFD
  - FDMultiplexer::removeWriteFD
  - FDMultiplexer::setReadTTD
  - FDMultiplexer::setWriteTTD
  - FDMultiplexer::alterFDToRead
  - FDMultiplexer::alterFDToWrite
  - FDMultiplexer::getTimeouts
  - '& getMultiplexerMap()'
  - FDMultiplexer::getWatchedFDCount
  - FDMultiplexer::runForAllWatchedFDs
  - operator()(const struct timeval& lhs, const struct timeval& rhs) const
  - FDMultiplexer::accountingAddFD
  - FDMultiplexer::accountingRemoveFD
  - FDMultiplexer::alterFD
  source_file: /src/pdns/pdns/recursordist/mplexer.hh
  types:
    enum:
    - enumerators:
      - name: Read
      - name: Both
      - name: Write
      item_type: enum
      name: EventKind
      pos:
        line_end: 60
        line_start: 55
        source_file: /src/pdns/pdns/recursordist/mplexer.hh
    preproc_defs: []
    structs:
    - fields:
      - name: d_callback
        type: callbackfunc_t
      - name: d_parameter
        type: funcparam_t
      - name: d_ttd
        type: struct timeval
      - name: d_fd
        type: int
      item_type: struct
      name: Callback
      pos:
        line_end: 69
        line_start: 63
        source_file: /src/pdns/pdns/recursordist/mplexer.hh
    - fields:
      - name: '& d_inrun'
        type: bool
      item_type: struct
      name: InRun
      pos:
        line_end: 99
        line_start: 80
        source_file: /src/pdns/pdns/recursordist/mplexer.hh
    - fields: []
      item_type: struct
      name: FDBasedTag
      pos:
        line_end: 259
        line_start: 257
        source_file: /src/pdns/pdns/recursordist/mplexer.hh
    - fields: []
      item_type: struct
      name: TTDOrderedTag
      pos:
        line_end: 262
        line_start: 260
        source_file: /src/pdns/pdns/recursordist/mplexer.hh
    - fields: []
      item_type: struct
      name: ttd_compare
      pos:
        line_end: 282
        line_start: 263
        source_file: /src/pdns/pdns/recursordist/mplexer.hh
    typedefs:
    - item_type: typedef
      name: funcparam_t
      pos:
        line_end: 53
        line_start: 53
        source_file: /src/pdns/pdns/recursordist/mplexer.hh
      type: any
    - item_type: typedef
      name: callbackfunc_t
      pos:
        line_end: 54
        line_start: 54
        source_file: /src/pdns/pdns/recursordist/mplexer.hh
      type: function<void(int, funcparam_t&)>
    - item_type: typedef
      name: '* getMultiplexer_t(unsigned int)'
      pos:
        line_end: 230
        line_start: 230
        source_file: /src/pdns/pdns/recursordist/mplexer.hh
      type: FDMultiplexer
    - item_type: typedef
      name: FDMultiplexermap_t
      pos:
        line_end: 231
        line_start: 231
        source_file: /src/pdns/pdns/recursordist/mplexer.hh
      type: multimap<int, getMultiplexer_t*>
    - item_type: typedef
      name: callbackmap_t
      pos:
        line_end: 292
        line_start: 284
        source_file: /src/pdns/pdns/recursordist/mplexer.hh
      type: multi_index_container
    union: []
- function_names:
  - ResolverException::ResolverException
  source_file: /src/pdns/pdns/recursordist/resolver.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs:
    - item_type: typedef
      name: res_t
      pos:
        line_end: 58
        line_start: 58
        source_file: /src/pdns/pdns/recursordist/resolver.hh
      type: vector
    union: []
- function_names:
  - MTasker::MTasker
  - '& getWaiters() const'
  - MTasker::getEvents
  - MTasker::noProcesses
  - MTasker::numProcesses
  - MTasker::getTid
  - MTasker::getMaxStackUsage
  - MTasker::getUsec
  - MTasker::initMainStackBounds
  - MTasker<EventKey, EventVal, Cmp>::nextWaiterDelayUsec
  - MTasker<EventKey, EventVal, Cmp>::waitEvent
  - MTasker<Key, Val, Cmp>::yield
  - MTasker<EventKey, EventVal, Cmp>::sendEvent
  - MTasker<Key, Val, Cmp>::getUContext
  - MTasker<Key, Val, Cmp>::makeThread
  - MTasker<Key, Val, Cmp>::schedule
  source_file: /src/pdns/pdns/recursordist/mtasker.hh
  types:
    enum:
    - enumerators:
      - name: Error
        value: '-1'
      - name: TimeOut
        value: '0'
      - name: Answer
        value: '1'
      item_type: enum
      name: waitstatusenum
      pos:
        line_end: 187
        line_start: 182
        source_file: /src/pdns/pdns/recursordist/mtasker.hh
    preproc_defs: []
    structs:
    - fields:
      - name: key
        type: EventKey
      - name: context
        type: std::shared_ptr<pdns_ucontext_t>
      - name: ttd
        type: struct timeval
      - name: tid
        type: int
      item_type: struct
      name: Waiter
      pos:
        line_end: 54
        line_start: 48
        source_file: /src/pdns/pdns/recursordist/mtasker.hh
    - fields: []
      item_type: struct
      name: KeyTag
      pos:
        line_end: 57
        line_start: 55
        source_file: /src/pdns/pdns/recursordist/mtasker.hh
    - fields:
      - name: context
        type: std::shared_ptr<pdns_ucontext_t>
      - name: start
        type: std::function<void(void)>
      - name: '* startOfStack'
        type: char
      - name: '* highestStackSeen'
        type: char
      item_type: struct
      name: ThreadInfo
      pos:
        line_end: 168
        line_start: 158
        source_file: /src/pdns/pdns/recursordist/mtasker.hh
    typedefs: []
    union: []
- function_names:
  - DNSComboWriter
  - DNSComboWriter
  - setRemote
  - setSource
  - setMappedSource
  - setLocal
  - setDestination
  - setSocket
  - getMT
  - sendResponseOverTCP
  - '& self()'
  - '& info(unsigned int index)'
  - '& infos()'
  - isDistributor
  - isHandler
  - isWorker
  - isListener
  - isTCPListener
  - isTaskThread
  - setHandler
  - setWorker
  - setListener
  - setTCPListener
  - setTaskThread
  - thread_local_id
  - is_thread_inited
  - id
  - setThreadId
  - getName
  - numHandlers
  - numTaskThreads
  - numUDPWorkers
  - numTCPWorkers
  - numDistributors
  - weDistributeQueries
  - setWeDistributeQueries
  - setNumUDPWorkerThreads
  - setNumTCPWorkerThreads
  - setNumDistributorThreads
  - numRecursorThreads
  - setExitCode
  - '& getTCPSockets()'
  - setTCPSockets
  - '& getDeferredAdds()'
  - '& getPipes() const'
  - getNumberOfDistributedQueries
  - incNumberOfDistributedQueries
  - getMT
  - setMT
  - joinThread0
  - resize
  source_file: /src/pdns/pdns/recursordist/rec-main.hh
  types:
    enum:
    - enumerators:
      - name: Always
      - name: PaddedQueries
      item_type: enum
      name: PaddingMode
      pos:
        line_end: 170
        line_start: 166
        source_file: /src/pdns/pdns/recursordist/rec-main.hh
    preproc_defs: []
    structs:
    - fields:
      - name: d_proxyProtocolValues
        type: std::vector<ProxyProtocolValue>
      - name: d_mdp
        type: MOADNSParser
      - name: d_now
        type: struct timeval
      - name: d_remote
        type: ComboAddress
      - name: d_source
        type: ComboAddress
      - name: d_local
        type: ComboAddress
      - name: d_destination
        type: ComboAddress
      - name: d_mappedSource
        type: ComboAddress
      - name: d_eventTrace
        type: RecEventTrace
      - name: d_otTrace
        type: pdns::trace::InitialSpanInfo
      - name: d_uuid
        type: boost::uuids::uuid
      - name: d_requestorId
        type: string
      - name: d_deviceId
        type: string
      - name: d_deviceName
        type: string
      - name: d_kernelTimestamp
        type: struct timeval
      - name: d_query
        type: std::string
      - name: d_policyTags
        type: std::unordered_set<std::string>
      - name: d_gettagPolicyTags
        type: std::unordered_set<std::string>
      - name: d_routingTag
        type: std::string
      - name: d_records
        type: std::vector<DNSRecord>
      - name: d_luaContext
        type: shared_ptr<RecursorLua4>
      - name: d_data
        type: LuaContext::LuaObject
      - name: d_ednssubnet
        type: EDNSSubnetOpts
      - name: d_tcpConnection
        type: shared_ptr<TCPConnection>
      - name: d_extendedErrorCode
        type: std::optional<uint16_t>
      - name: d_extendedErrorExtra
        type: string
      - name: d_rcode
        type: std::optional<int>
      - name: d_socket
        type: int
      - name: d_tag
        type: unsigned int
      - name: d_qhash
        type: uint32_t
      - name: d_ttlCap
        type: uint32_t
      - name: d_variable
        type: bool
      - name: d_ecsFound
        type: bool
      - name: d_ecsParsed
        type: bool
      - name: d_followCNAMERecords
        type: bool
      - name: d_logResponse
        type: bool
      - name: d_tcp
        type: bool
      - name: d_responsePaddingDisabled
        type: bool
      - name: d_meta
        type: std::map<std::string, RecursorLua4::MetaValue>
      item_type: struct
      name: DNSComboWriter
      pos:
        line_end: 135
        line_start: 46
        source_file: /src/pdns/pdns/recursordist/rec-main.hh
    - fields:
      - name: mutex
        type: std::mutex
      - name: condVar
        type: std::condition_variable
      - name: done
        type: std::atomic<bool>
      item_type: struct
      name: DoneRunning
      pos:
        line_end: 146
        line_start: 141
        source_file: /src/pdns/pdns/recursordist/rec-main.hh
    - fields:
      - name: servers
        type: std::shared_ptr<std::vector<std::unique_ptr<RemoteLogger>>>
      - name: generation
        type: uint64_t
      - name: config
        type: ProtobufExportConfig
      - name: roundRobinCounter
        type: size_t
      item_type: struct
      name: ProtobufServersInfo
      pos:
        line_end: 252
        line_start: 246
        source_file: /src/pdns/pdns/recursordist/rec-main.hh
    - fields:
      - name: servers
        type: std::shared_ptr<std::vector<std::unique_ptr<FrameStreamLogger>>>
      - name: generation
        type: uint64_t
      - name: config
        type: FrameStreamExportConfig
      item_type: struct
      name: FrameStreamServersInfo
      pos:
        line_end: 262
        line_start: 257
        source_file: /src/pdns/pdns/recursordist/rec-main.hh
    - fields:
      - name: runThreads(Logr::log_t)
        type: int
      - name: makeThreadPipes(Logr::log_t)
        type: void
      - name: TID_NOT_INITED
        type: unsigned int
      - name: tcpSockets
        type: std::set<int>
      - name: deferredAdds
        type: deferredAdd_t
      - name: pipes
        type: struct ThreadPipeSet
      - name: '* mt'
        type: MT_t
      - name: numberOfDistributedQueries
        type: uint64_t
      - name: start(unsigned int tid, const string& tname, const std::map<unsigned
          int, std::set<int>>& cpusMap, Logr::log_t)
        type: void
      - name: name
        type: std::string
      - name: thread
        type: std::thread
      - name: exitCode
        type: int
      - name: d_myid
        type: unsigned int
      - name: handler
        type: bool
      - name: listener
        type: bool
      - name: tcplistener
        type: bool
      - name: worker
        type: bool
      - name: taskThread
        type: bool
      - name: t_id
        type: unsigned int
      - name: s_threadInfos
        type: std::vector<RecThreadInfo>
      - name: s_weDistributeQueries
        type: bool
      - name: s_numDistributorThreads
        type: unsigned int
      - name: s_numUDPWorkerThreads
        type: unsigned int
      - name: s_numTCPWorkerThreads
        type: unsigned int
      item_type: struct
      name: RecThreadInfo
      pos:
        line_end: 591
        line_start: 316
        source_file: /src/pdns/pdns/recursordist/rec-main.hh
    - fields:
      - name: writeToThread
        type: int
      - name: readToThread
        type: int
      - name: writeFromThread
        type: int
      - name: readFromThread
        type: int
      - name: writeQueriesToThread
        type: int
      - name: readQueriesToThread
        type: int
      item_type: struct
      name: ThreadPipeSet
      pos:
        line_end: 326
        line_start: 318
        source_file: /src/pdns/pdns/recursordist/rec-main.hh
    - fields:
      - name: func
        type: pipefunc_t
      - name: wantAnswer
        type: bool
      item_type: struct
      name: ThreadMSG
      pos:
        line_end: 597
        line_start: 593
        source_file: /src/pdns/pdns/recursordist/rec-main.hh
    typedefs: []
    union: []
- function_names:
  - ~EpollFDMultiplexer() override
  - EpollFDMultiplexer::getName
  - makeEpoll
  - EpollRegisterOurselves
  - EpollFDMultiplexer::EpollFDMultiplexer
  - convertEventKind
  - EpollFDMultiplexer::addFD
  - EpollFDMultiplexer::removeFD
  - EpollFDMultiplexer::alterFD
  - EpollFDMultiplexer::getAvailableFDs
  - EpollFDMultiplexer::run
  - acceptData
  - main
  source_file: /src/pdns/pdns/recursordist/epollmplexer.cc
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields: []
      item_type: struct
      name: EpollRegisterOurselves
      pos:
        line_end: 74
        line_start: 68
        source_file: /src/pdns/pdns/recursordist/epollmplexer.cc
    typedefs: []
    union: []
- function_names:
  - getEDNSExtendedErrorOptFromStringView
  - getEDNSExtendedErrorOptFromString
  - getEDNSExtendedErrorOptFromString
  - makeEDNSExtendedErrorOptString
  source_file: /src/pdns/pdns/recursordist/ednsextendederror.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - test_no_data_f
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  source_file: /src/pdns/pdns/recursordist/test-syncres_cc3.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - BINARY
  - _CASE_L
  - CASE_L
  - CASE_S
  - BROKEN_CASE_L
  - BROKEN_CASE_S
  - REC_CHECK_EQUAL
  - REC_CHECK_MESSAGE
  - REC_FAIL_XSUCCESS
  - BOOST_AUTO_TEST_CASE
  - test_dnsrecords_cc_predicate
  - BOOST_AUTO_TEST_CASE
  - ZONE_CASE
  - WIRE_CASE
  - BROKEN_ZONE_CASE
  - BROKEN_WIRE_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_CHECK_THROW
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  source_file: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc
  types:
    enum:
    - enumerators:
      - name: WORKING
      - name: BROKEN
      item_type: enum
      name: broken_marker
      pos:
        line_end: 21
        line_start: 18
        source_file: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc
    - enumerators:
      - name: WORKING
      - name: BROKEN
      item_type: enum
      name: broken_marker
      pos:
        line_end: 21
        line_start: 18
        source_file: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc
    - enumerators:
      - name: zone
      - name: wire
      item_type: enum
      name: case_type_t
      pos:
        line_end: 364
        line_start: 364
        source_file: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc
    preproc_defs: []
    structs: []
    typedefs:
    - item_type: typedef
      name: case_t
      pos:
        line_end: 47
        line_start: 47
        source_file: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc
      type: tuple<QType::typeenum, std::string, std::string, std::string, broken_marker>
    - item_type: typedef
      name: cases_t
      pos:
        line_end: 48
        line_start: 48
        source_file: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc
      type: list<case_t>
    - item_type: typedef
      name: case_t
      pos:
        line_end: 367
        line_start: 367
        source_file: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc
      type: tuple<const QType::typeenum, const std::string, case_type_t, broken_marker>
    - item_type: typedef
      name: cases_t
      pos:
        line_end: 368
        line_start: 368
        source_file: /src/pdns/pdns/recursordist/test-dnsrecords_cc.cc
      type: list<case_t>
    union: []
- function_names:
  - MemRecursorCache::getCacheHits
  - MemRecursorCache::getCacheMisses
  - MemRecursorCache::incCacheHits
  - MemRecursorCache::incCacheMisses
  - MemRecursorCache::CacheEntry
  - MemRecursorCache::isStale
  - MemRecursorCache::isEntryUsable
  - MemRecursorCache::ECSIndexEntry::ECSIndexEntry
  - MemRecursorCache::ECSIndexEntry::lookupBestMatch
  - MemRecursorCache::ECSIndexEntry::addMask
  - MemRecursorCache::ECSIndexEntry::removeNetmask
  - MemRecursorCache::ECSIndexEntry::isEmpty
  - MemRecursorCache::MapCombo
  - ~MapCombo()
  - MemRecursorCache::MapCombo
  - '& operator=(const MapCombo&)'
  - MemRecursorCache::MapCombo
  - '& operator=(MapCombo&&)'
  - MemRecursorCache::invalidate
  - MemRecursorCache::preRemoval
  - MemRecursorCache::lock
  - MemRecursorCache::getEntriesCount
  - MemRecursorCache::incEntriesCount
  - MemRecursorCache::decEntriesCount
  - MemRecursorCache::clearEntriesCount
  - '& getMap(const DNSName& qname)'
  source_file: /src/pdns/pdns/recursordist/recursor_cache.hh
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: d_address
        type: ComboAddress
      - name: d_tcp
        type: bool
      item_type: struct
      name: Extra
      pos:
        line_end: 104
        line_start: 100
        source_file: /src/pdns/pdns/recursordist/recursor_cache.hh
    - fields:
      - name: shouldReplace(time_t now, bool auth, vState state, bool refresh)
        type: bool
      - name: sizeEstimate() const
        type: size_t
      - name: authRecsSizeEstimate() const
        type: size_t
      - name: sigRecsSizeEstimate() const
        type: size_t
      - name: d_rtag
        type: OptTag
      - name: d_netmask
        type: Netmask
      - name: d_from
        type: ComboAddress
      - name: d_records
        type: records_t
      - name: d_qname
        type: DNSName
      - name: d_authZone
        type: DNSName
      - name: d_signatures
        type: SigRecs
      - name: d_authorityRecs
        type: AuthRecs
      - name: d_ttd
        type: time_t
      - name: d_orig_ttl
        type: uint32_t
      - name: d_servedStale
        type: uint16_t
      - name: d_qtype
        type: QType
      - name: d_state
        type: vState
      - name: d_auth
        type: bool
      - name: d_submitted
        type: bool
      - name: d_tooBig
        type: bool
      - name: d_tcp
        type: bool
      item_type: struct
      name: CacheEntry
      pos:
        line_end: 191
        line_start: 140
        source_file: /src/pdns/pdns/recursordist/recursor_cache.hh
    - fields: []
      item_type: struct
      name: HashedTag
      pos:
        line_end: 250
        line_start: 248
        source_file: /src/pdns/pdns/recursordist/recursor_cache.hh
    - fields: []
      item_type: struct
      name: SequencedTag
      pos:
        line_end: 253
        line_start: 251
        source_file: /src/pdns/pdns/recursordist/recursor_cache.hh
    - fields: []
      item_type: struct
      name: NameAndRTagOnlyHashedTag
      pos:
        line_end: 256
        line_start: 254
        source_file: /src/pdns/pdns/recursordist/recursor_cache.hh
    - fields: []
      item_type: struct
      name: OrderedTag
      pos:
        line_end: 259
        line_start: 257
        source_file: /src/pdns/pdns/recursordist/recursor_cache.hh
    - fields:
      - name: d_content
        type: LockGuarded<LockedContent>
      - name: d_entriesCount
        type: pdns::stat_t
      item_type: struct
      name: MapCombo
      pos:
        line_end: 375
        line_start: 299
        source_file: /src/pdns/pdns/recursordist/recursor_cache.hh
    - fields:
      - name: d_map
        type: cache_t
      - name: d_ecsIndex
        type: ecsIndex_t
      - name: d_cachedqname
        type: DNSName
      - name: d_cachedrtag
        type: OptTag
      - name: d_cachecache
        type: Entries
      - name: d_contended_count
        type: uint64_t
      - name: d_acquired_count
        type: uint64_t
      - name: d_cachecachevalid
        type: bool
      item_type: struct
      name: LockedContent
      pos:
        line_end: 339
        line_start: 308
        source_file: /src/pdns/pdns/recursordist/recursor_cache.hh
    typedefs: []
    union: []
- function_names:
  - simple
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - alarmHandler
  - doRun
  - getName
  - operator()() const
  - getName
  - operator()() const
  - BOOST_AUTO_TEST_CASE
  source_file: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields: []
      item_type: struct
      name: NOPTest
      pos:
        line_end: 1490
        line_start: 1480
        source_file: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc
    - fields: []
      item_type: struct
      name: RecordsSpeedTest
      pos:
        line_end: 1567
        line_start: 1492
        source_file: /src/pdns/pdns/recursordist/test-recursorcache_cc.cc
    typedefs: []
    union: []
- function_names: []
  source_file: /src/pdns/pdns/recursordist/rec-zonetocache.hh
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: d_zone
        type: std::string
      - name: d_method
        type: std::string
      - name: d_sources
        type: vector<std::string>
      - name: d_local
        type: ComboAddress
      - name: d_tt
        type: TSIGTriplet
      - name: d_maxReceivedBytes
        type: size_t
      - name: d_retryOnError
        type: time_t
      - name: d_refreshPeriod
        type: time_t
      - name: d_timeout
        type: uint32_t
      - name: d_zonemd
        type: pdns::ZoneMD::Config
      - name: d_dnssec
        type: pdns::ZoneMD::Config
      item_type: struct
      name: Config
      pos:
        line_end: 45
        line_start: 32
        source_file: /src/pdns/pdns/recursordist/rec-zonetocache.hh
    - fields:
      - name: d_lastrun
        type: time_t
      - name: d_waittime
        type: time_t
      - name: d_generation
        type: uint64_t
      item_type: struct
      name: State
      pos:
        line_end: 52
        line_start: 47
        source_file: /src/pdns/pdns/recursordist/rec-zonetocache.hh
    typedefs: []
    union: []
- function_names:
  - getNextEDNSOption
  - getEDNSOption
  - slowParseEDNSOptions
  - getEDNSOptions
  - getEDNSOptionsFromContent
  - generateEDNSOption
  source_file: /src/pdns/pdns/recursordist/ednsoptions.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - pdns::rust::web::rec::A
  - pdns::rust::web::rec::A
  source_file: /src/pdns/pdns/recursordist/rec-web-stubs.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  source_file: /src/pdns/pdns/recursordist/test-mplexer.cc
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: sockets[2]
        type: int
      item_type: struct
      name: socket_pair
      pos:
        line_end: 314
        line_start: 311
        source_file: /src/pdns/pdns/recursordist/test-mplexer.cc
    typedefs: []
    union: []
- function_names:
  - pdns::ProtoZero::Message::Message
  - ~Message()
  - pdns::ProtoZero::Message::Message
  - pdns::ProtoZero::Message::Message
  - '& operator=(const Message&)'
  - '& operator=(Message&&)'
  - pdns::ProtoZero::Message::setType
  - pdns::ProtoZero::Message::setHTTPVersion
  - pdns::ProtoZero::Message::setMessageIdentity
  - pdns::ProtoZero::Message::setServerIdentity
  - pdns::ProtoZero::Message::setSocketFamily
  - pdns::ProtoZero::Message::setSocketProtocol
  - pdns::ProtoZero::Message::setFrom
  - pdns::ProtoZero::Message::setTo
  - pdns::ProtoZero::Message::setInBytes
  - pdns::ProtoZero::Message::setTime
  - pdns::ProtoZero::Message::setTime
  - pdns::ProtoZero::Message::setId
  - pdns::ProtoZero::Message::setQuestion
  - pdns::ProtoZero::Message::setMeta
  - pdns::ProtoZero::Message::setEDNSSubnet
  - pdns::ProtoZero::Message::setRequestorId
  - pdns::ProtoZero::Message::setInitialRequestID
  - pdns::ProtoZero::Message::setDeviceId
  - pdns::ProtoZero::Message::setNewlyObservedDomain
  - pdns::ProtoZero::Message::setDeviceName
  - pdns::ProtoZero::Message::setFromPort
  - pdns::ProtoZero::Message::setToPort
  - pdns::ProtoZero::Message::setWorkerId
  - pdns::ProtoZero::Message::setPacketCacheHit
  - pdns::ProtoZero::Message::setOutgoingQueries
  - pdns::ProtoZero::Message::setHeaderFlags
  - pdns::ProtoZero::Message::setEDNSVersion
  - pdns::ProtoZero::Message::setOpenTelemetryData
  - pdns::ProtoZero::Message::setEDE
  - pdns::ProtoZero::Message::setEDEText
  - pdns::ProtoZero::Message::setOpenTelemetryTraceID
  - pdns::ProtoZero::Message::startResponse
  - pdns::ProtoZero::Message::commitResponse
  - pdns::ProtoZero::Message::setResponseCode
  - pdns::ProtoZero::Message::setNetworkErrorResponseCode
  - pdns::ProtoZero::Message::setAppliedPolicy
  - pdns::ProtoZero::Message::addPolicyTags
  - pdns::ProtoZero::Message::addPolicyTag
  - pdns::ProtoZero::Message::setQueryTime
  - pdns::ProtoZero::Message::add_enum
  - pdns::ProtoZero::Message::add_bool
  - pdns::ProtoZero::Message::add_uint32
  - pdns::ProtoZero::Message::add_uint64
  - pdns::ProtoZero::Message::add_bytes
  - pdns::ProtoZero::Message::add_string
  - pdns::ProtoZero::Message::Message
  - ~Message()
  - pdns::ProtoZero::Message::Message
  - pdns::ProtoZero::Message::Message
  - '& operator=(const Message&)'
  - '& operator=(Message&&)'
  - pdns::ProtoZero::Message::setType
  - pdns::ProtoZero::Message::setHTTPVersion
  - pdns::ProtoZero::Message::setMessageIdentity
  - pdns::ProtoZero::Message::setServerIdentity
  - pdns::ProtoZero::Message::setSocketFamily
  - pdns::ProtoZero::Message::setSocketProtocol
  - pdns::ProtoZero::Message::setFrom
  - pdns::ProtoZero::Message::setTo
  - pdns::ProtoZero::Message::setInBytes
  - pdns::ProtoZero::Message::setTime
  - pdns::ProtoZero::Message::setTime
  - pdns::ProtoZero::Message::setId
  - pdns::ProtoZero::Message::setQuestion
  - pdns::ProtoZero::Message::setMeta
  - pdns::ProtoZero::Message::setEDNSSubnet
  - pdns::ProtoZero::Message::setRequestorId
  - pdns::ProtoZero::Message::setInitialRequestID
  - pdns::ProtoZero::Message::setDeviceId
  - pdns::ProtoZero::Message::setNewlyObservedDomain
  - pdns::ProtoZero::Message::setDeviceName
  - pdns::ProtoZero::Message::setFromPort
  - pdns::ProtoZero::Message::setToPort
  - pdns::ProtoZero::Message::setWorkerId
  - pdns::ProtoZero::Message::setPacketCacheHit
  - pdns::ProtoZero::Message::setOutgoingQueries
  - pdns::ProtoZero::Message::setHeaderFlags
  - pdns::ProtoZero::Message::setEDNSVersion
  - pdns::ProtoZero::Message::setOpenTelemetryData
  - pdns::ProtoZero::Message::setEDE
  - pdns::ProtoZero::Message::setEDEText
  - pdns::ProtoZero::Message::setOpenTelemetryTraceID
  - pdns::ProtoZero::Message::startResponse
  - pdns::ProtoZero::Message::commitResponse
  - pdns::ProtoZero::Message::setResponseCode
  - pdns::ProtoZero::Message::setNetworkErrorResponseCode
  - pdns::ProtoZero::Message::setAppliedPolicy
  - pdns::ProtoZero::Message::addPolicyTags
  - pdns::ProtoZero::Message::addPolicyTag
  - pdns::ProtoZero::Message::setQueryTime
  - pdns::ProtoZero::Message::add_enum
  - pdns::ProtoZero::Message::add_bool
  - pdns::ProtoZero::Message::add_uint32
  - pdns::ProtoZero::Message::add_uint64
  - pdns::ProtoZero::Message::add_bytes
  - pdns::ProtoZero::Message::add_string
  - pdns::ProtoZero::Message::Message
  - ~Message()
  - pdns::ProtoZero::Message::Message
  - pdns::ProtoZero::Message::Message
  - '& operator=(const Message&)'
  - '& operator=(Message&&)'
  - pdns::ProtoZero::Message::setType
  - pdns::ProtoZero::Message::setHTTPVersion
  - pdns::ProtoZero::Message::setMessageIdentity
  - pdns::ProtoZero::Message::setServerIdentity
  - pdns::ProtoZero::Message::setSocketFamily
  - pdns::ProtoZero::Message::setSocketProtocol
  - pdns::ProtoZero::Message::setFrom
  - pdns::ProtoZero::Message::setTo
  - pdns::ProtoZero::Message::setInBytes
  - pdns::ProtoZero::Message::setTime
  - pdns::ProtoZero::Message::setTime
  - pdns::ProtoZero::Message::setId
  - pdns::ProtoZero::Message::setQuestion
  - pdns::ProtoZero::Message::setMeta
  - pdns::ProtoZero::Message::setEDNSSubnet
  - pdns::ProtoZero::Message::setRequestorId
  - pdns::ProtoZero::Message::setInitialRequestID
  - pdns::ProtoZero::Message::setDeviceId
  - pdns::ProtoZero::Message::setNewlyObservedDomain
  - pdns::ProtoZero::Message::setDeviceName
  - pdns::ProtoZero::Message::setFromPort
  - pdns::ProtoZero::Message::setToPort
  - pdns::ProtoZero::Message::setWorkerId
  - pdns::ProtoZero::Message::setPacketCacheHit
  - pdns::ProtoZero::Message::setOutgoingQueries
  - pdns::ProtoZero::Message::setHeaderFlags
  - pdns::ProtoZero::Message::setEDNSVersion
  - pdns::ProtoZero::Message::setOpenTelemetryData
  - pdns::ProtoZero::Message::setEDE
  - pdns::ProtoZero::Message::setEDEText
  - pdns::ProtoZero::Message::setOpenTelemetryTraceID
  - pdns::ProtoZero::Message::startResponse
  - pdns::ProtoZero::Message::commitResponse
  - pdns::ProtoZero::Message::setResponseCode
  - pdns::ProtoZero::Message::setNetworkErrorResponseCode
  - pdns::ProtoZero::Message::setAppliedPolicy
  - pdns::ProtoZero::Message::addPolicyTags
  - pdns::ProtoZero::Message::addPolicyTag
  - pdns::ProtoZero::Message::setQueryTime
  - pdns::ProtoZero::Message::add_enum
  - pdns::ProtoZero::Message::add_bool
  - pdns::ProtoZero::Message::add_uint32
  - pdns::ProtoZero::Message::add_uint64
  - pdns::ProtoZero::Message::add_bytes
  - pdns::ProtoZero::Message::add_string
  - pdns::ProtoZero::Message::Message
  - ~Message()
  - pdns::ProtoZero::Message::Message
  - pdns::ProtoZero::Message::Message
  - '& operator=(const Message&)'
  - '& operator=(Message&&)'
  - pdns::ProtoZero::Message::setType
  - pdns::ProtoZero::Message::setHTTPVersion
  - pdns::ProtoZero::Message::setMessageIdentity
  - pdns::ProtoZero::Message::setServerIdentity
  - pdns::ProtoZero::Message::setSocketFamily
  - pdns::ProtoZero::Message::setSocketProtocol
  - pdns::ProtoZero::Message::setFrom
  - pdns::ProtoZero::Message::setTo
  - pdns::ProtoZero::Message::setInBytes
  - pdns::ProtoZero::Message::setTime
  - pdns::ProtoZero::Message::setTime
  - pdns::ProtoZero::Message::setId
  - pdns::ProtoZero::Message::setQuestion
  - pdns::ProtoZero::Message::setMeta
  - pdns::ProtoZero::Message::setEDNSSubnet
  - pdns::ProtoZero::Message::setRequestorId
  - pdns::ProtoZero::Message::setInitialRequestID
  - pdns::ProtoZero::Message::setDeviceId
  - pdns::ProtoZero::Message::setNewlyObservedDomain
  - pdns::ProtoZero::Message::setDeviceName
  - pdns::ProtoZero::Message::setFromPort
  - pdns::ProtoZero::Message::setToPort
  - pdns::ProtoZero::Message::setWorkerId
  - pdns::ProtoZero::Message::setPacketCacheHit
  - pdns::ProtoZero::Message::setOutgoingQueries
  - pdns::ProtoZero::Message::setHeaderFlags
  - pdns::ProtoZero::Message::setEDNSVersion
  - pdns::ProtoZero::Message::setOpenTelemetryData
  - pdns::ProtoZero::Message::setEDE
  - pdns::ProtoZero::Message::setEDEText
  - pdns::ProtoZero::Message::setOpenTelemetryTraceID
  - pdns::ProtoZero::Message::startResponse
  - pdns::ProtoZero::Message::commitResponse
  - pdns::ProtoZero::Message::setResponseCode
  - pdns::ProtoZero::Message::setNetworkErrorResponseCode
  - pdns::ProtoZero::Message::setAppliedPolicy
  - pdns::ProtoZero::Message::addPolicyTags
  - pdns::ProtoZero::Message::addPolicyTag
  - pdns::ProtoZero::Message::setQueryTime
  - pdns::ProtoZero::Message::add_enum
  - pdns::ProtoZero::Message::add_bool
  - pdns::ProtoZero::Message::add_uint32
  - pdns::ProtoZero::Message::add_uint64
  - pdns::ProtoZero::Message::add_bytes
  - pdns::ProtoZero::Message::add_string
  source_file: /src/pdns/pdns/recursordist/protozero.hh
  types:
    enum:
    - enumerators:
      - name: stringVal
        value: '1'
      - name: intVal
        value: '2'
      item_type: enum
      name: MetaValueField
      pos:
        line_end: 44
        line_start: 40
        source_file: /src/pdns/pdns/recursordist/protozero.hh
    - enumerators:
      - name: HTTP1
        value: '1'
      - name: HTTP2
        value: '2'
      - name: HTTP3
        value: '3'
      item_type: enum
      name: HTTPVersion
      pos:
        line_end: 50
        line_start: 45
        source_file: /src/pdns/pdns/recursordist/protozero.hh
    - enumerators:
      - name: key
        value: '1'
      - name: value
        value: '2'
      item_type: enum
      name: MetaField
      pos:
        line_end: 55
        line_start: 51
        source_file: /src/pdns/pdns/recursordist/protozero.hh
    - enumerators:
      - name: ts
        value: '1'
      - name: start
        value: '3'
      - name: boolVal
        value: '4'
      - name: intVal
        value: '5'
      - name: event
        value: '2'
      - name: stringVal
        value: '6'
      - name: bytesVal
        value: '7'
      - name: custom
        value: '8'
      item_type: enum
      name: Event
      pos:
        line_end: 66
        line_start: 56
        source_file: /src/pdns/pdns/recursordist/protozero.hh
    - enumerators:
      - name: DNSQueryType
        value: '1'
      - name: DNSResponseType
        value: '2'
      - name: DNSIncomingResponseType
        value: '4'
      - name: DNSOutgoingQueryType
        value: '3'
      item_type: enum
      name: MessageType
      pos:
        line_end: 73
        line_start: 67
        source_file: /src/pdns/pdns/recursordist/protozero.hh
    - enumerators:
      - name: type
        value: '1'
      - name: socketFamily
        value: '4'
      - name: inBytes
        value: '8'
      - name: question
        value: '12'
      - name: initialRequestId
        value: '16'
      - name: fromPort
        value: '20'
      - name: httpVersion
        value: '24'
      - name: headerFlags
        value: '28'
      - name: edeText
        value: '32'
      - name: socketProtocol
        value: '5'
      - name: timeSec
        value: '9'
      - name: response
        value: '13'
      - name: deviceId
        value: '17'
      - name: toPort
        value: '21'
      - name: workerId
        value: '25'
      - name: ednsVersion
        value: '29'
      - name: messageId
        value: '2'
      - name: from
        value: '6'
      - name: timeUsec
        value: '10'
      - name: newlyObservedDomain
        value: '18'
      - name: originalRequestorSubnet
        value: '14'
      - name: meta
        value: '22'
      - name: packetCacheHit
        value: '26'
      - name: openTelemetryData
        value: '30'
      - name: serverIdentity
        value: '3'
      - name: to
        value: '7'
      - name: deviceName
        value: '19'
      - name: id
        value: '11'
      - name: requestorId
        value: '15'
      - name: trace
        value: '23'
      - name: outgoingQueries
        value: '27'
      - name: ede
        value: '31'
      - name: openTelemetryTraceID
        value: '33'
      item_type: enum
      name: Field
      pos:
        line_end: 109
        line_start: 74
        source_file: /src/pdns/pdns/recursordist/protozero.hh
    - enumerators:
      - name: qName
        value: '1'
      - name: qType
        value: '2'
      - name: qClass
        value: '3'
      item_type: enum
      name: QuestionField
      pos:
        line_end: 115
        line_start: 110
        source_file: /src/pdns/pdns/recursordist/protozero.hh
    - enumerators:
      - name: rcode
        value: '1'
      - name: rrs
        value: '2'
      - name: appliedPolicy
        value: '3'
      - name: queryTimeSec
        value: '5'
      - name: tags
        value: '4'
      - name: queryTimeUsec
        value: '6'
      - name: appliedPolicyType
        value: '7'
      - name: appliedPolicyTrigger
        value: '8'
      - name: appliedPolicyHit
        value: '9'
      - name: appliedPolicyKind
        value: '10'
      - name: validationState
        value: '11'
      item_type: enum
      name: ResponseField
      pos:
        line_end: 129
        line_start: 116
        source_file: /src/pdns/pdns/recursordist/protozero.hh
    - enumerators:
      - name: name
        value: '1'
      - name: class_
        value: '3'
      - name: ttl
        value: '4'
      - name: rdata
        value: '5'
      - name: type
        value: '2'
      - name: udr
        value: '6'
      item_type: enum
      name: RRField
      pos:
        line_end: 138
        line_start: 130
        source_file: /src/pdns/pdns/recursordist/protozero.hh
    - enumerators:
      - name: UDP
        value: '1'
      - name: DoT
        value: '3'
      - name: DoH
        value: '4'
      - name: TCP
        value: '2'
      - name: DNSCryptUDP
        value: '5'
      - name: DNSCryptTCP
        value: '6'
      - name: DoQ
        value: '7'
      item_type: enum
      name: TransportProtocol
      pos:
        line_end: 148
        line_start: 139
        source_file: /src/pdns/pdns/recursordist/protozero.hh
    - enumerators:
      - name: stringVal
        value: '1'
      - name: intVal
        value: '2'
      item_type: enum
      name: MetaValueField
      pos:
        line_end: 44
        line_start: 40
        source_file: /src/pdns/pdns/recursordist/protozero.hh
    - enumerators:
      - name: HTTP1
        value: '1'
      - name: HTTP2
        value: '2'
      - name: HTTP3
        value: '3'
      item_type: enum
      name: HTTPVersion
      pos:
        line_end: 50
        line_start: 45
        source_file: /src/pdns/pdns/recursordist/protozero.hh
    - enumerators:
      - name: key
        value: '1'
      - name: value
        value: '2'
      item_type: enum
      name: MetaField
      pos:
        line_end: 55
        line_start: 51
        source_file: /src/pdns/pdns/recursordist/protozero.hh
    - enumerators:
      - name: ts
        value: '1'
      - name: start
        value: '3'
      - name: boolVal
        value: '4'
      - name: intVal
        value: '5'
      - name: event
        value: '2'
      - name: stringVal
        value: '6'
      - name: bytesVal
        value: '7'
      - name: custom
        value: '8'
      item_type: enum
      name: Event
      pos:
        line_end: 66
        line_start: 56
        source_file: /src/pdns/pdns/recursordist/protozero.hh
    - enumerators:
      - name: DNSQueryType
        value: '1'
      - name: DNSResponseType
        value: '2'
      - name: DNSIncomingResponseType
        value: '4'
      - name: DNSOutgoingQueryType
        value: '3'
      item_type: enum
      name: MessageType
      pos:
        line_end: 73
        line_start: 67
        source_file: /src/pdns/pdns/recursordist/protozero.hh
    - enumerators:
      - name: type
        value: '1'
      - name: socketFamily
        value: '4'
      - name: inBytes
        value: '8'
      - name: question
        value: '12'
      - name: initialRequestId
        value: '16'
      - name: fromPort
        value: '20'
      - name: httpVersion
        value: '24'
      - name: headerFlags
        value: '28'
      - name: edeText
        value: '32'
      - name: socketProtocol
        value: '5'
      - name: timeSec
        value: '9'
      - name: response
        value: '13'
      - name: deviceId
        value: '17'
      - name: toPort
        value: '21'
      - name: workerId
        value: '25'
      - name: ednsVersion
        value: '29'
      - name: messageId
        value: '2'
      - name: from
        value: '6'
      - name: timeUsec
        value: '10'
      - name: newlyObservedDomain
        value: '18'
      - name: originalRequestorSubnet
        value: '14'
      - name: meta
        value: '22'
      - name: packetCacheHit
        value: '26'
      - name: openTelemetryData
        value: '30'
      - name: serverIdentity
        value: '3'
      - name: to
        value: '7'
      - name: deviceName
        value: '19'
      - name: id
        value: '11'
      - name: requestorId
        value: '15'
      - name: trace
        value: '23'
      - name: outgoingQueries
        value: '27'
      - name: ede
        value: '31'
      - name: openTelemetryTraceID
        value: '33'
      item_type: enum
      name: Field
      pos:
        line_end: 109
        line_start: 74
        source_file: /src/pdns/pdns/recursordist/protozero.hh
    - enumerators:
      - name: qName
        value: '1'
      - name: qType
        value: '2'
      - name: qClass
        value: '3'
      item_type: enum
      name: QuestionField
      pos:
        line_end: 115
        line_start: 110
        source_file: /src/pdns/pdns/recursordist/protozero.hh
    - enumerators:
      - name: rcode
        value: '1'
      - name: rrs
        value: '2'
      - name: appliedPolicy
        value: '3'
      - name: queryTimeSec
        value: '5'
      - name: tags
        value: '4'
      - name: queryTimeUsec
        value: '6'
      - name: appliedPolicyType
        value: '7'
      - name: appliedPolicyTrigger
        value: '8'
      - name: appliedPolicyHit
        value: '9'
      - name: appliedPolicyKind
        value: '10'
      - name: validationState
        value: '11'
      item_type: enum
      name: ResponseField
      pos:
        line_end: 129
        line_start: 116
        source_file: /src/pdns/pdns/recursordist/protozero.hh
    - enumerators:
      - name: name
        value: '1'
      - name: class_
        value: '3'
      - name: ttl
        value: '4'
      - name: rdata
        value: '5'
      - name: type
        value: '2'
      - name: udr
        value: '6'
      item_type: enum
      name: RRField
      pos:
        line_end: 138
        line_start: 130
        source_file: /src/pdns/pdns/recursordist/protozero.hh
    - enumerators:
      - name: UDP
        value: '1'
      - name: DoT
        value: '3'
      - name: DoH
        value: '4'
      - name: TCP
        value: '2'
      - name: DNSCryptUDP
        value: '5'
      - name: DNSCryptTCP
        value: '6'
      - name: DoQ
        value: '7'
      item_type: enum
      name: TransportProtocol
      pos:
        line_end: 148
        line_start: 139
        source_file: /src/pdns/pdns/recursordist/protozero.hh
    - enumerators:
      - name: stringVal
        value: '1'
      - name: intVal
        value: '2'
      item_type: enum
      name: MetaValueField
      pos:
        line_end: 44
        line_start: 40
        source_file: /src/pdns/pdns/recursordist/protozero.hh
    - enumerators:
      - name: HTTP1
        value: '1'
      - name: HTTP2
        value: '2'
      - name: HTTP3
        value: '3'
      item_type: enum
      name: HTTPVersion
      pos:
        line_end: 50
        line_start: 45
        source_file: /src/pdns/pdns/recursordist/protozero.hh
    - enumerators:
      - name: key
        value: '1'
      - name: value
        value: '2'
      item_type: enum
      name: MetaField
      pos:
        line_end: 55
        line_start: 51
        source_file: /src/pdns/pdns/recursordist/protozero.hh
    - enumerators:
      - name: ts
        value: '1'
      - name: start
        value: '3'
      - name: boolVal
        value: '4'
      - name: intVal
        value: '5'
      - name: event
        value: '2'
      - name: stringVal
        value: '6'
      - name: bytesVal
        value: '7'
      - name: custom
        value: '8'
      item_type: enum
      name: Event
      pos:
        line_end: 66
        line_start: 56
        source_file: /src/pdns/pdns/recursordist/protozero.hh
    - enumerators:
      - name: DNSQueryType
        value: '1'
      - name: DNSResponseType
        value: '2'
      - name: DNSIncomingResponseType
        value: '4'
      - name: DNSOutgoingQueryType
        value: '3'
      item_type: enum
      name: MessageType
      pos:
        line_end: 73
        line_start: 67
        source_file: /src/pdns/pdns/recursordist/protozero.hh
    - enumerators:
      - name: type
        value: '1'
      - name: socketFamily
        value: '4'
      - name: inBytes
        value: '8'
      - name: question
        value: '12'
      - name: initialRequestId
        value: '16'
      - name: fromPort
        value: '20'
      - name: httpVersion
        value: '24'
      - name: headerFlags
        value: '28'
      - name: edeText
        value: '32'
      - name: socketProtocol
        value: '5'
      - name: timeSec
        value: '9'
      - name: response
        value: '13'
      - name: deviceId
        value: '17'
      - name: toPort
        value: '21'
      - name: workerId
        value: '25'
      - name: ednsVersion
        value: '29'
      - name: messageId
        value: '2'
      - name: from
        value: '6'
      - name: timeUsec
        value: '10'
      - name: newlyObservedDomain
        value: '18'
      - name: originalRequestorSubnet
        value: '14'
      - name: meta
        value: '22'
      - name: packetCacheHit
        value: '26'
      - name: openTelemetryData
        value: '30'
      - name: serverIdentity
        value: '3'
      - name: to
        value: '7'
      - name: deviceName
        value: '19'
      - name: id
        value: '11'
      - name: requestorId
        value: '15'
      - name: trace
        value: '23'
      - name: outgoingQueries
        value: '27'
      - name: ede
        value: '31'
      - name: openTelemetryTraceID
        value: '33'
      item_type: enum
      name: Field
      pos:
        line_end: 109
        line_start: 74
        source_file: /src/pdns/pdns/recursordist/protozero.hh
    - enumerators:
      - name: qName
        value: '1'
      - name: qType
        value: '2'
      - name: qClass
        value: '3'
      item_type: enum
      name: QuestionField
      pos:
        line_end: 115
        line_start: 110
        source_file: /src/pdns/pdns/recursordist/protozero.hh
    - enumerators:
      - name: rcode
        value: '1'
      - name: rrs
        value: '2'
      - name: appliedPolicy
        value: '3'
      - name: queryTimeSec
        value: '5'
      - name: tags
        value: '4'
      - name: queryTimeUsec
        value: '6'
      - name: appliedPolicyType
        value: '7'
      - name: appliedPolicyTrigger
        value: '8'
      - name: appliedPolicyHit
        value: '9'
      - name: appliedPolicyKind
        value: '10'
      - name: validationState
        value: '11'
      item_type: enum
      name: ResponseField
      pos:
        line_end: 129
        line_start: 116
        source_file: /src/pdns/pdns/recursordist/protozero.hh
    - enumerators:
      - name: name
        value: '1'
      - name: class_
        value: '3'
      - name: ttl
        value: '4'
      - name: rdata
        value: '5'
      - name: type
        value: '2'
      - name: udr
        value: '6'
      item_type: enum
      name: RRField
      pos:
        line_end: 138
        line_start: 130
        source_file: /src/pdns/pdns/recursordist/protozero.hh
    - enumerators:
      - name: UDP
        value: '1'
      - name: DoT
        value: '3'
      - name: DoH
        value: '4'
      - name: TCP
        value: '2'
      - name: DNSCryptUDP
        value: '5'
      - name: DNSCryptTCP
        value: '6'
      - name: DoQ
        value: '7'
      item_type: enum
      name: TransportProtocol
      pos:
        line_end: 148
        line_start: 139
        source_file: /src/pdns/pdns/recursordist/protozero.hh
    - enumerators:
      - name: stringVal
        value: '1'
      - name: intVal
        value: '2'
      item_type: enum
      name: MetaValueField
      pos:
        line_end: 44
        line_start: 40
        source_file: /src/pdns/pdns/recursordist/protozero.hh
    - enumerators:
      - name: HTTP1
        value: '1'
      - name: HTTP2
        value: '2'
      - name: HTTP3
        value: '3'
      item_type: enum
      name: HTTPVersion
      pos:
        line_end: 50
        line_start: 45
        source_file: /src/pdns/pdns/recursordist/protozero.hh
    - enumerators:
      - name: key
        value: '1'
      - name: value
        value: '2'
      item_type: enum
      name: MetaField
      pos:
        line_end: 55
        line_start: 51
        source_file: /src/pdns/pdns/recursordist/protozero.hh
    - enumerators:
      - name: ts
        value: '1'
      - name: start
        value: '3'
      - name: boolVal
        value: '4'
      - name: intVal
        value: '5'
      - name: event
        value: '2'
      - name: stringVal
        value: '6'
      - name: bytesVal
        value: '7'
      - name: custom
        value: '8'
      item_type: enum
      name: Event
      pos:
        line_end: 66
        line_start: 56
        source_file: /src/pdns/pdns/recursordist/protozero.hh
    - enumerators:
      - name: DNSQueryType
        value: '1'
      - name: DNSResponseType
        value: '2'
      - name: DNSIncomingResponseType
        value: '4'
      - name: DNSOutgoingQueryType
        value: '3'
      item_type: enum
      name: MessageType
      pos:
        line_end: 73
        line_start: 67
        source_file: /src/pdns/pdns/recursordist/protozero.hh
    - enumerators:
      - name: type
        value: '1'
      - name: socketFamily
        value: '4'
      - name: inBytes
        value: '8'
      - name: question
        value: '12'
      - name: initialRequestId
        value: '16'
      - name: fromPort
        value: '20'
      - name: httpVersion
        value: '24'
      - name: headerFlags
        value: '28'
      - name: edeText
        value: '32'
      - name: socketProtocol
        value: '5'
      - name: timeSec
        value: '9'
      - name: response
        value: '13'
      - name: deviceId
        value: '17'
      - name: toPort
        value: '21'
      - name: workerId
        value: '25'
      - name: ednsVersion
        value: '29'
      - name: messageId
        value: '2'
      - name: from
        value: '6'
      - name: timeUsec
        value: '10'
      - name: newlyObservedDomain
        value: '18'
      - name: originalRequestorSubnet
        value: '14'
      - name: meta
        value: '22'
      - name: packetCacheHit
        value: '26'
      - name: openTelemetryData
        value: '30'
      - name: serverIdentity
        value: '3'
      - name: to
        value: '7'
      - name: deviceName
        value: '19'
      - name: id
        value: '11'
      - name: requestorId
        value: '15'
      - name: trace
        value: '23'
      - name: outgoingQueries
        value: '27'
      - name: ede
        value: '31'
      - name: openTelemetryTraceID
        value: '33'
      item_type: enum
      name: Field
      pos:
        line_end: 109
        line_start: 74
        source_file: /src/pdns/pdns/recursordist/protozero.hh
    - enumerators:
      - name: qName
        value: '1'
      - name: qType
        value: '2'
      - name: qClass
        value: '3'
      item_type: enum
      name: QuestionField
      pos:
        line_end: 115
        line_start: 110
        source_file: /src/pdns/pdns/recursordist/protozero.hh
    - enumerators:
      - name: rcode
        value: '1'
      - name: rrs
        value: '2'
      - name: appliedPolicy
        value: '3'
      - name: queryTimeSec
        value: '5'
      - name: tags
        value: '4'
      - name: queryTimeUsec
        value: '6'
      - name: appliedPolicyType
        value: '7'
      - name: appliedPolicyTrigger
        value: '8'
      - name: appliedPolicyHit
        value: '9'
      - name: appliedPolicyKind
        value: '10'
      - name: validationState
        value: '11'
      item_type: enum
      name: ResponseField
      pos:
        line_end: 129
        line_start: 116
        source_file: /src/pdns/pdns/recursordist/protozero.hh
    - enumerators:
      - name: name
        value: '1'
      - name: class_
        value: '3'
      - name: ttl
        value: '4'
      - name: rdata
        value: '5'
      - name: type
        value: '2'
      - name: udr
        value: '6'
      item_type: enum
      name: RRField
      pos:
        line_end: 138
        line_start: 130
        source_file: /src/pdns/pdns/recursordist/protozero.hh
    - enumerators:
      - name: UDP
        value: '1'
      - name: DoT
        value: '3'
      - name: DoH
        value: '4'
      - name: TCP
        value: '2'
      - name: DNSCryptUDP
        value: '5'
      - name: DNSCryptTCP
        value: '6'
      - name: DoQ
        value: '7'
      item_type: enum
      name: TransportProtocol
      pos:
        line_end: 148
        line_start: 139
        source_file: /src/pdns/pdns/recursordist/protozero.hh
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - sizeBounds
  - RecResponseStats::RecResponseStats
  - '& RecResponseStats::operator+=(const RecResponseStats& rhs)'
  - RecResponseStats::getQTypeResponseCounts
  - RecResponseStats::getSizeResponseCounts
  - RecResponseStats::getRCodeResponseCounts
  - RecResponseStats::getQTypeReport
  source_file: /src/pdns/pdns/recursordist/rec-responsestats.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - enableOutgoingCookies
  - addCookiesUnsupported
  - clearCookies
  - pruneCookies
  - dumpCookies
  - remoteLoggerQueueData
  - isEnabledForQueries
  - logFstreamQuery
  - isEnabledForResponses
  - logFstreamResponse
  - logOutgoingQuery
  - logIncomingResponse
  - tcpconnect
  - tcpsendrecv
  - addPadding
  - outgoingCookie
  - incomingCookie
  - asyncresolve
  - asyncresolve
  source_file: /src/pdns/pdns/recursordist/lwres.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - rec::add
  - rec::addToRollingAvg
  - '& operator+=(const RCodeCounters& rhs)'
  - '& operator+=(const DNSSECCounters& rhs)'
  - '& at(vState index)'
  - '& operator+=(const PolicyCounters& rhs)'
  - '& at(DNSFilterEngine::PolicyKind index)'
  - '& operator+=(const PolicyNameCounters& rhs)'
  - rec::Counters
  - '& at(Counter index)'
  - '& at(DoubleWAvgCounter index)'
  - '& at(RCode /*unused*/)'
  - '& at(ResponseStats /*unused*/)'
  - '& at(Histogram index)'
  - '& at(DNSSECHistogram index)'
  - '& at(PolicyHistogram /* unused */)'
  - '& at(PolicyNameHits /*unused*/)'
  - rec::add
  - rec::addToRollingAvg
  - '& operator+=(const RCodeCounters& rhs)'
  - '& operator+=(const DNSSECCounters& rhs)'
  - '& at(vState index)'
  - '& operator+=(const PolicyCounters& rhs)'
  - '& at(DNSFilterEngine::PolicyKind index)'
  - '& operator+=(const PolicyNameCounters& rhs)'
  - rec::Counters
  - '& at(Counter index)'
  - '& at(DoubleWAvgCounter index)'
  - '& at(RCode /*unused*/)'
  - '& at(ResponseStats /*unused*/)'
  - '& at(Histogram index)'
  - '& at(DNSSECHistogram index)'
  - '& at(PolicyHistogram /* unused */)'
  - '& at(PolicyNameHits /*unused*/)'
  source_file: /src/pdns/pdns/recursordist/rec-tcounters.hh
  types:
    enum:
    - enumerators:
      - name: throttledqueries
      - name: outqueries
      - name: servFails
      - name: ipv6qcounter
      - name: tcpClientOverflow
      - name: serverParseError
      - name: unexpectedCount
      - name: overCapacityDrops
      - name: ednsPingMatches
      - name: noPacketError
      - name: dnssecAuthenticDataQueries
      - name: maxMThreadStackUsage
      - name: cookieMalformed
      - name: chainLimits
      - name: cookieMatched
      - name: cookieNotInReply
      - name: numberOfCounters
      - name: dns64prefixanswers
      - name: cookieMismatchedOverUDP
      - name: outgoing6timeouts
      - name: authzonequeries
      - name: unauthorizedTCP
      - name: unreachables
      - name: qcounter
      - name: zoneDisallowedNotify
      - name: tcpOverflow
      - name: queryPipeFullDrops
      - name: resourceLimits
      - name: nsSetInvalidations
      - name: dnssecQueries
      - name: nodCount
      - name: maxChainWeight
      - name: ednsPingMismatches
      - name: cookieProbeSupported
      - name: rebalancedQueries
      - name: variableResponses
      - name: outgoingtimeouts
      - name: outgoing4timeouts
      - name: qnameminfallbacksuccess
      - name: dotoutqueries
      - name: noErrors
      - name: unauthorizedUDP
      - name: truncatedDrops
      - name: spoofCount
      - name: chainResends
      - name: noPingOutQueries
      - name: nodLookupsDroppedOversize
      - name: maintenanceCalls
      - name: cookieMismatchedOverTCP
      - name: dnssecCheckDisabledQueries
      - name: emptyQueriesCount
      - name: ecsMissingCount
      - name: noEdnsOutQueries
      - name: maxChainLength
      - name: dontqueries
      - name: tcpoutqueries
      - name: nxDomains
      - name: tcpqcounter
      - name: sourceDisallowedNotify
      - name: policyDrops
      - name: clientParseError
      - name: tooOldDrops
      - name: caseMismatchCount
      - name: ipv6queries
      - name: dnssecValidations
      - name: cookieRetry
      - name: cookieProbeUnsupported
      - name: ignoredCount
      - name: udrCount
      - name: maintenanceUsec
      - name: proxyProtocolInvalidCount
      item_type: enum
      name: Counter
      pos:
        line_end: 111
        line_start: 37
        source_file: /src/pdns/pdns/recursordist/rec-tcounters.hh
    - enumerators:
      - name: avgLatencyUsec
      - name: numberOfCounters
      - name: avgLatencyOursUsec
      item_type: enum
      name: DoubleWAvgCounter
      pos:
        line_end: 119
        line_start: 114
        source_file: /src/pdns/pdns/recursordist/rec-tcounters.hh
    - enumerators:
      - name: auth
      - name: numberOfCounters
      item_type: enum
      name: RCode
      pos:
        line_end: 126
        line_start: 122
        source_file: /src/pdns/pdns/recursordist/rec-tcounters.hh
    - enumerators:
      - name: responseStats
      - name: numberOfCounters
      item_type: enum
      name: ResponseStats
      pos:
        line_end: 133
        line_start: 129
        source_file: /src/pdns/pdns/recursordist/rec-tcounters.hh
    - enumerators:
      - name: answers
      - name: cumulativeAnswers
      - name: ourtime
      - name: auth6Answers
      - name: auth4Answers
      - name: cumulativeAuth4Answers
      - name: cumulativeAuth6Answers
      - name: numberOfCounters
      item_type: enum
      name: Histogram
      pos:
        line_end: 147
        line_start: 136
        source_file: /src/pdns/pdns/recursordist/rec-tcounters.hh
    - enumerators:
      - name: dnssec
      - name: xdnssec
      - name: numberOfCounters
      item_type: enum
      name: DNSSECHistogram
      pos:
        line_end: 156
        line_start: 150
        source_file: /src/pdns/pdns/recursordist/rec-tcounters.hh
    - enumerators:
      - name: policy
      - name: numberOfCounters
      item_type: enum
      name: PolicyHistogram
      pos:
        line_end: 164
        line_start: 159
        source_file: /src/pdns/pdns/recursordist/rec-tcounters.hh
    - enumerators:
      - name: policyName
      - name: numberOfCounters
      item_type: enum
      name: PolicyNameHits
      pos:
        line_end: 171
        line_start: 166
        source_file: /src/pdns/pdns/recursordist/rec-tcounters.hh
    - enumerators:
      - name: throttledqueries
      - name: outqueries
      - name: servFails
      - name: ipv6qcounter
      - name: tcpClientOverflow
      - name: serverParseError
      - name: unexpectedCount
      - name: overCapacityDrops
      - name: ednsPingMatches
      - name: noPacketError
      - name: dnssecAuthenticDataQueries
      - name: maxMThreadStackUsage
      - name: cookieMalformed
      - name: chainLimits
      - name: cookieMatched
      - name: cookieNotInReply
      - name: numberOfCounters
      - name: dns64prefixanswers
      - name: cookieMismatchedOverUDP
      - name: outgoing6timeouts
      - name: authzonequeries
      - name: unauthorizedTCP
      - name: unreachables
      - name: qcounter
      - name: zoneDisallowedNotify
      - name: tcpOverflow
      - name: queryPipeFullDrops
      - name: resourceLimits
      - name: nsSetInvalidations
      - name: dnssecQueries
      - name: nodCount
      - name: maxChainWeight
      - name: ednsPingMismatches
      - name: cookieProbeSupported
      - name: rebalancedQueries
      - name: variableResponses
      - name: outgoingtimeouts
      - name: outgoing4timeouts
      - name: qnameminfallbacksuccess
      - name: dotoutqueries
      - name: noErrors
      - name: unauthorizedUDP
      - name: truncatedDrops
      - name: spoofCount
      - name: chainResends
      - name: noPingOutQueries
      - name: nodLookupsDroppedOversize
      - name: maintenanceCalls
      - name: cookieMismatchedOverTCP
      - name: dnssecCheckDisabledQueries
      - name: emptyQueriesCount
      - name: ecsMissingCount
      - name: noEdnsOutQueries
      - name: maxChainLength
      - name: dontqueries
      - name: tcpoutqueries
      - name: nxDomains
      - name: tcpqcounter
      - name: sourceDisallowedNotify
      - name: policyDrops
      - name: clientParseError
      - name: tooOldDrops
      - name: caseMismatchCount
      - name: ipv6queries
      - name: dnssecValidations
      - name: cookieRetry
      - name: cookieProbeUnsupported
      - name: ignoredCount
      - name: udrCount
      - name: maintenanceUsec
      - name: proxyProtocolInvalidCount
      item_type: enum
      name: Counter
      pos:
        line_end: 111
        line_start: 37
        source_file: /src/pdns/pdns/recursordist/rec-tcounters.hh
    - enumerators:
      - name: avgLatencyUsec
      - name: numberOfCounters
      - name: avgLatencyOursUsec
      item_type: enum
      name: DoubleWAvgCounter
      pos:
        line_end: 119
        line_start: 114
        source_file: /src/pdns/pdns/recursordist/rec-tcounters.hh
    - enumerators:
      - name: auth
      - name: numberOfCounters
      item_type: enum
      name: RCode
      pos:
        line_end: 126
        line_start: 122
        source_file: /src/pdns/pdns/recursordist/rec-tcounters.hh
    - enumerators:
      - name: responseStats
      - name: numberOfCounters
      item_type: enum
      name: ResponseStats
      pos:
        line_end: 133
        line_start: 129
        source_file: /src/pdns/pdns/recursordist/rec-tcounters.hh
    - enumerators:
      - name: answers
      - name: cumulativeAnswers
      - name: ourtime
      - name: auth6Answers
      - name: auth4Answers
      - name: cumulativeAuth4Answers
      - name: cumulativeAuth6Answers
      - name: numberOfCounters
      item_type: enum
      name: Histogram
      pos:
        line_end: 147
        line_start: 136
        source_file: /src/pdns/pdns/recursordist/rec-tcounters.hh
    - enumerators:
      - name: dnssec
      - name: xdnssec
      - name: numberOfCounters
      item_type: enum
      name: DNSSECHistogram
      pos:
        line_end: 156
        line_start: 150
        source_file: /src/pdns/pdns/recursordist/rec-tcounters.hh
    - enumerators:
      - name: policy
      - name: numberOfCounters
      item_type: enum
      name: PolicyHistogram
      pos:
        line_end: 164
        line_start: 159
        source_file: /src/pdns/pdns/recursordist/rec-tcounters.hh
    - enumerators:
      - name: policyName
      - name: numberOfCounters
      item_type: enum
      name: PolicyNameHits
      pos:
        line_end: 171
        line_start: 166
        source_file: /src/pdns/pdns/recursordist/rec-tcounters.hh
    preproc_defs: []
    structs:
    - fields:
      - name: uint64Count
        type: std::array<uint64_t, static_cast<size_t>(Counter::numberOfCounters)>
      - name: doubleWAvg
        type: std::array<WeightedAverage, static_cast<size_t>(DoubleWAvgCounter::numberOfCounters)>
      - name: auth
        type: RCodeCounters
      - name: histograms
        type: std::array<pdns::Histogram, static_cast<size_t>(Histogram::numberOfCounters)>
      - name: responseStats
        type: RecResponseStats
      - name: dnssecCounters
        type: std::array<DNSSECCounters, static_cast<size_t>(DNSSECHistogram::numberOfCounters)>
      - name: policyCounters
        type: PolicyCounters
      - name: policyNameHits
        type: PolicyNameCounters
      - name: '& merge(const Counters& data)'
        type: Counters
      - name: toString() const
        type: std::string
      item_type: struct
      name: Counters
      pos:
        line_end: 336
        line_start: 173
        source_file: /src/pdns/pdns/recursordist/rec-tcounters.hh
    - fields:
      - name: avg
        type: double
      - name: weight
        type: uint64_t
      item_type: struct
      name: WeightedAverage
      pos:
        line_end: 193
        line_start: 178
        source_file: /src/pdns/pdns/recursordist/rec-tcounters.hh
    - fields:
      - name: numberOfRCodes
        type: size_t
      - name: rcodeCounters
        type: std::array<uint64_t, numberOfRCodes>
      item_type: struct
      name: RCodeCounters
      pos:
        line_end: 208
        line_start: 197
        source_file: /src/pdns/pdns/recursordist/rec-tcounters.hh
    - fields:
      - name: counts
        type: std::array<uint64_t, static_cast<size_t>(vState::BogusInvalidDNSKEYProtocol)
          + 1>
      item_type: struct
      name: DNSSECCounters
      pos:
        line_end: 239
        line_start: 225
        source_file: /src/pdns/pdns/recursordist/rec-tcounters.hh
    - fields:
      - name: counts
        type: std::array<uint64_t, static_cast<size_t>(DNSFilterEngine::PolicyKind::Custom)
          + 1>
      item_type: struct
      name: PolicyCounters
      pos:
        line_end: 257
        line_start: 243
        source_file: /src/pdns/pdns/recursordist/rec-tcounters.hh
    - fields:
      - name: counts
        type: std::unordered_map<std::string, uint64_t>
      item_type: struct
      name: PolicyNameCounters
      pos:
        line_end: 271
        line_start: 261
        source_file: /src/pdns/pdns/recursordist/rec-tcounters.hh
    - fields:
      - name: uint64Count
        type: std::array<uint64_t, static_cast<size_t>(Counter::numberOfCounters)>
      - name: doubleWAvg
        type: std::array<WeightedAverage, static_cast<size_t>(DoubleWAvgCounter::numberOfCounters)>
      - name: auth
        type: RCodeCounters
      - name: histograms
        type: std::array<pdns::Histogram, static_cast<size_t>(Histogram::numberOfCounters)>
      - name: responseStats
        type: RecResponseStats
      - name: dnssecCounters
        type: std::array<DNSSECCounters, static_cast<size_t>(DNSSECHistogram::numberOfCounters)>
      - name: policyCounters
        type: PolicyCounters
      - name: policyNameHits
        type: PolicyNameCounters
      - name: '& merge(const Counters& data)'
        type: Counters
      - name: toString() const
        type: std::string
      item_type: struct
      name: Counters
      pos:
        line_end: 336
        line_start: 173
        source_file: /src/pdns/pdns/recursordist/rec-tcounters.hh
    - fields:
      - name: avg
        type: double
      - name: weight
        type: uint64_t
      item_type: struct
      name: WeightedAverage
      pos:
        line_end: 193
        line_start: 178
        source_file: /src/pdns/pdns/recursordist/rec-tcounters.hh
    - fields:
      - name: numberOfRCodes
        type: size_t
      - name: rcodeCounters
        type: std::array<uint64_t, numberOfRCodes>
      item_type: struct
      name: RCodeCounters
      pos:
        line_end: 208
        line_start: 197
        source_file: /src/pdns/pdns/recursordist/rec-tcounters.hh
    - fields:
      - name: counts
        type: std::array<uint64_t, static_cast<size_t>(vState::BogusInvalidDNSKEYProtocol)
          + 1>
      item_type: struct
      name: DNSSECCounters
      pos:
        line_end: 239
        line_start: 225
        source_file: /src/pdns/pdns/recursordist/rec-tcounters.hh
    - fields:
      - name: counts
        type: std::array<uint64_t, static_cast<size_t>(DNSFilterEngine::PolicyKind::Custom)
          + 1>
      item_type: struct
      name: PolicyCounters
      pos:
        line_end: 257
        line_start: 243
        source_file: /src/pdns/pdns/recursordist/rec-tcounters.hh
    - fields:
      - name: counts
        type: std::unordered_map<std::string, uint64_t>
      item_type: struct
      name: PolicyNameCounters
      pos:
        line_end: 271
        line_start: 261
        source_file: /src/pdns/pdns/recursordist/rec-tcounters.hh
    typedefs: []
    union: []
- function_names: []
  source_file: /src/pdns/pdns/recursordist/circular_buffer.hh
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: BOOST_CB_DISABLE_DEBUG
      pos:
        line_end: 25
        line_start: 24
        source_file: /src/pdns/pdns/recursordist/circular_buffer.hh
      type_or_value: '1'
    - item_type: preproc_def
      name: BOOST_CB_ENABLE_DEBUG
      pos:
        line_end: 29
        line_start: 28
        source_file: /src/pdns/pdns/recursordist/circular_buffer.hh
      type_or_value: '0'
    structs: []
    typedefs: []
    union: []
- function_names:
  - dolog
  - dolog
  - dnsdist::logging::LoggingConfiguration::setSyslog
  - dnsdist::logging::LoggingConfiguration::setLogTimestamps
  - dnsdist::logging::LoggingConfiguration::setVerboseStream
  - dnsdist::logging::LoggingConfiguration::getSyslog
  - dnsdist::logging::LoggingConfiguration::getLogTimestamps
  - '& getVerboseStream()'
  - dnsdist::logging::LoggingConfiguration::setSyslog
  - dnsdist::logging::LoggingConfiguration::setLogTimestamps
  - dnsdist::logging::LoggingConfiguration::setVerboseStream
  - dnsdist::logging::LoggingConfiguration::getSyslog
  - dnsdist::logging::LoggingConfiguration::getLogTimestamps
  - '& getVerboseStream()'
  - setSyslogFacility
  - syslogLevelToStr
  - syslogLevelToStr
  - genlog
  - infolog
  - warnlog
  - errlog
  - infolog
  - warnlog
  - errlog
  source_file: /src/pdns/pdns/recursordist/dolog.hh
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: vinfolog
      pos:
        line_end: 195
        line_start: 192
        source_file: /src/pdns/pdns/recursordist/dolog.hh
      type_or_value: "if (dnsdist::configuration::getCurrentRuntimeConfiguration().d_verbose)
        \\\n  verboselog"
    - item_type: preproc_def
      name: vinfolog
      pos:
        line_end: 198
        line_start: 196
        source_file: /src/pdns/pdns/recursordist/dolog.hh
      type_or_value: infolog
    - item_type: preproc_def
      name: vinfolog
      pos:
        line_end: 222
        line_start: 219
        source_file: /src/pdns/pdns/recursordist/dolog.hh
      type_or_value: "if (false)     \\\n  infolog"
    structs: []
    typedefs: []
    union: []
- function_names:
  - TSIGTCPVerifier::TSIGTCPVerifier
  source_file: /src/pdns/pdns/recursordist/tsigverifier.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - BOOST_AUTO_TEST_CASE
  source_file: /src/pdns/pdns/recursordist/test-arguments_cc.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/pdns/pdns/recursordist/sanitizer.hh
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: __SANITIZE_THREAD__
      pos:
        line_end: 29
        line_start: 28
        source_file: /src/pdns/pdns/recursordist/sanitizer.hh
      type_or_value: '1'
    - item_type: preproc_def
      name: __SANITIZE_ADDRESS__
      pos:
        line_end: 32
        line_start: 31
        source_file: /src/pdns/pdns/recursordist/sanitizer.hh
      type_or_value: '1'
    structs: []
    typedefs: []
    union: []
- function_names:
  - arg
  - initArguments
  - showLuaYAML
  - showIncludeYAML
  - showForwardFileYAML
  - showAllowYAML
  - showYAML
  - recControlLoggerBackend
  - main
  source_file: /src/pdns/pdns/recursordist/rec_control.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - BOOST_AUTO_TEST_CASE
  source_file: /src/pdns/pdns/recursordist/test-dnsrecordcontent.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - pdns::sha1sum
  - pdns::sha256sum
  - pdns::sha384sum
  - pdns::sha512sum
  - pdns::SHADigest::SHADigest
  - pdns::SHADigest::mdctx
  - ~SHADigest()
  - pdns::SHADigest::process
  - pdns::SHADigest::digest
  - pdns::sha1sum
  - pdns::sha256sum
  - pdns::sha384sum
  - pdns::sha512sum
  - pdns::SHADigest::SHADigest
  - pdns::SHADigest::mdctx
  - ~SHADigest()
  - pdns::SHADigest::process
  - pdns::SHADigest::digest
  source_file: /src/pdns/pdns/recursordist/sha.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/pdns/pdns/recursordist/dnstap.hh
  types:
    enum:
    - enumerators:
      - name: auth_query
        value: '1'
      - name: resolver_query
        value: '3'
      - name: resolver_response
        value: '4'
      - name: auth_response
        value: '2'
      - name: client_query
        value: '5'
      - name: client_response
        value: '6'
      - name: forwarder_query
        value: '7'
      - name: forwarded_response
        value: '8'
      - name: stub_query
        value: '9'
      - name: stub_response
        value: '10'
      - name: tool_query
        value: '11'
      - name: tool_response
        value: '12'
      item_type: enum
      name: MessageType
      pos:
        line_end: 51
        line_start: 37
        source_file: /src/pdns/pdns/recursordist/dnstap.hh
    - enumerators:
      - name: DoUDP
        value: '1'
      - name: DoT
        value: '3'
      - name: DNSCryptUDP
        value: '5'
      - name: DoH
        value: '4'
      - name: DoTCP
        value: '2'
      - name: DNSCryptTCP
        value: '6'
      - name: DoQ
        value: '7'
      item_type: enum
      name: ProtocolType
      pos:
        line_end: 61
        line_start: 52
        source_file: /src/pdns/pdns/recursordist/dnstap.hh
    - enumerators:
      - name: HTTP1
        value: '1'
      - name: HTTP3
        value: '3'
      - name: HTTP2
        value: '2'
      item_type: enum
      name: HttpProtocolType
      pos:
        line_end: 67
        line_start: 62
        source_file: /src/pdns/pdns/recursordist/dnstap.hh
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/pdns/pdns/recursordist/uuid-utils.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - ~PortsFDMultiplexer()
  - PortsFDMultiplexer::getName
  - makePorts
  - PortsRegisterOurselves
  - PortsFDMultiplexer::PortsFDMultiplexer
  - convertEventKind
  - PortsFDMultiplexer::addFD
  - PortsFDMultiplexer::removeFD
  - PortsFDMultiplexer::getAvailableFDs
  - PortsFDMultiplexer::run
  - acceptData
  - main
  source_file: /src/pdns/pdns/recursordist/portsmplexer.cc
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields: []
      item_type: struct
      name: PortsRegisterOurselves
      pos:
        line_end: 52
        line_start: 46
        source_file: /src/pdns/pdns/recursordist/portsmplexer.cc
    typedefs: []
    union: []
- function_names:
  - GenericDNSPacketWriter<Container>::GenericDNSPacketWriter
  - GenericDNSPacketWriter<Container>::getHeader
  - GenericDNSPacketWriter<Container>::startRecord
  - GenericDNSPacketWriter<Container>::addOpt
  - GenericDNSPacketWriter<Container>::xfr48BitInt
  - GenericDNSPacketWriter<Container>::xfrNodeOrLocatorID
  - GenericDNSPacketWriter<Container>::xfr32BitInt
  - GenericDNSPacketWriter<Container>::xfr16BitInt
  - GenericDNSPacketWriter<Container>::xfr8BitInt
  - GenericDNSPacketWriter<Container>::xfrText
  - GenericDNSPacketWriter<Container>::xfrUnquotedText
  - GenericDNSPacketWriter<Container>::lookupName
  - GenericDNSPacketWriter<Container>::xfrName
  - GenericDNSPacketWriter<Container>::xfrBlob
  - GenericDNSPacketWriter<Container>::xfrBlob
  - GenericDNSPacketWriter<Container>::xfrBlobNoSpaces
  - GenericDNSPacketWriter<Container>::xfrHexBlob
  - GenericDNSPacketWriter<Container>::xfrSvcParamKeyVals
  - GenericDNSPacketWriter<Container>::getRecordPayload
  - GenericDNSPacketWriter<Container>::getWireFormatContent
  - GenericDNSPacketWriter<Container>::size
  - GenericDNSPacketWriter<Container>::rollback
  - GenericDNSPacketWriter<Container>::truncate
  - GenericDNSPacketWriter<Container>::commit
  - GenericDNSPacketWriter<Container>::getSizeWithOpts
  source_file: /src/pdns/pdns/recursordist/dnswriter.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  source_file: /src/pdns/pdns/recursordist/test-dns_random_hh.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - HttpRequest::HttpRequest
  - HttpRequest::setSLog
  - HttpResponse::HttpResponse
  - HttpResponse::HttpResponse
  - HttpResponse::setSLog
  - HttpException::HttpException
  - HttpException::HttpException
  - HttpException::response
  - HttpBadRequestException::HttpBadRequestException
  - HttpBadRequestException::HttpBadRequestException
  - HttpUnauthorizedException::HttpUnauthorizedException
  - HttpForbiddenException::HttpForbiddenException
  - HttpForbiddenException::HttpForbiddenException
  - HttpNotFoundException::HttpNotFoundException
  - HttpNotFoundException::HttpNotFoundException
  - HttpMethodNotAllowedException::HttpMethodNotAllowedException
  - HttpMethodNotAllowedException::HttpMethodNotAllowedException
  - HttpConflictException::HttpConflictException
  - HttpConflictException::HttpConflictException
  - HttpInternalServerErrorException::HttpInternalServerErrorException
  - HttpInternalServerErrorException::HttpInternalServerErrorException
  - ApiException::ApiException
  - Server::Server
  - ~Server()
  - Server::accept
  - ~WebServer()
  - WebServer::setSLog
  - WebServer::setApiKey
  - WebServer::setPassword
  - WebServer::setMaxBodySize
  - WebServer::setConnectionTimeout
  - WebServer::setACL
  - WebServer::registerConnection
  - WebServer::releaseConnection
  - WebServer::setLogLevel
  - WebServer::setLogLevel
  - WebServer::getLogLevel
  - WebServer::setCrossOriginRequestHeader
  - WebServer::createServer
  source_file: /src/pdns/pdns/recursordist/webserver.hh
  types:
    enum:
    - enumerators:
      - name: None
        value: '0'
      - name: Normal
        value: '10'
      - name: Detailed
        value: '20'
      item_type: enum
      name: LogLevel
      pos:
        line_end: 257
        line_start: 253
        source_file: /src/pdns/pdns/recursordist/webserver.hh
    preproc_defs: []
    structs: []
    typedefs:
    - item_type: typedef
      name: HandlerFunction
      pos:
        line_end: 237
        line_start: 237
        source_file: /src/pdns/pdns/recursordist/webserver.hh
      type: function<void(HttpRequest* req, HttpResponse* resp)>
    union: []
- function_names:
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  source_file: /src/pdns/pdns/recursordist/test-ixfr_cc.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - EDNSSubnetOpts::getFromString
  - EDNSSubnetOpts::getFromString
  - EDNSSubnetOpts::makeOptString
  source_file: /src/pdns/pdns/recursordist/ednssubnet.cc
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: family
        type: uint16_t
      - name: sourcePrefixLength
        type: uint8_t
      - name: scopePrefixLength
        type: uint8_t
      item_type: struct
      name: EDNSSubnetOptsWire
      pos:
        line_end: 33
        line_start: 28
        source_file: /src/pdns/pdns/recursordist/ednssubnet.cc
    - fields:
      - name: family
        type: uint16_t
      - name: sourcePrefixLength
        type: uint8_t
      - name: scopePrefixLength
        type: uint8_t
      item_type: struct
      name: EDNSSubnetOptsWire
      pos:
        line_end: 33
        line_start: 28
        source_file: /src/pdns/pdns/recursordist/ednssubnet.cc
    typedefs: []
    union: []
- function_names:
  - getLogger
  - Logger::log
  - Logger::setLoglevel
  - Logger::toConsole
  - Logger::open
  - Logger::setName
  - Logger::Logger
  - '& Logger::operator<<(Urgency u)'
  - '& Logger::getPerThread()'
  - '& Logger::operator<<(const string& s)'
  - '& Logger::operator<<(const char* s)'
  - '& Logger::operator<<(ostream& (&)(ostream&))'
  - '& Logger::operator<<(const DNSName& d)'
  - '& Logger::operator<<(const ZoneName& zone)'
  - '& Logger::operator<<(const ComboAddress& ca)'
  - '& Logger::operator<<(const SockaddrWrapper& sockaddr)'
  - addTraceTS
  source_file: /src/pdns/pdns/recursordist/logger.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - DomainInfo
  - operator<(const DomainInfo& rhs) const
  - getKindString
  - getKindString
  - stringToKind
  - isPrimaryType
  - isSecondaryType
  - isCatalogType
  - isPrimary
  - AutoPrimary
  - ~DNSBackend()
  - DNSBackend::replaceRRSet
  - DNSBackend::listSubZone
  - DNSBackend::isDnssecDomainMetadata
  - DNSBackend::getAllDomainMetadata
  - DNSBackend::getDomainMetadata
  - DNSBackend::getDomainMetadataOne
  - DNSBackend::setDomainMetadata
  - DNSBackend::setDomainMetadataOne
  - DNSBackend::getDomainKeys
  - DNSBackend::removeDomainKey
  - DNSBackend::addDomainKey
  - DNSBackend::activateDomainKey
  - DNSBackend::deactivateDomainKey
  - DNSBackend::publishDomainKey
  - DNSBackend::unpublishDomainKey
  - DNSBackend::setTSIGKey
  - DNSBackend::getTSIGKey
  - DNSBackend::getTSIGKeys
  - DNSBackend::deleteTSIGKey
  - DNSBackend::getBeforeAndAfterNamesAbsolute
  - DNSBackend::updateDNSSECOrderNameAndAuth
  - DNSBackend::updateEmptyNonTerminals
  - DNSBackend::doesDNSSEC
  - DNSBackend::listComments
  - DNSBackend::getComment
  - DNSBackend::feedComment
  - DNSBackend::replaceComments
  - DNSBackend::startTransaction
  - DNSBackend::commitTransaction
  - DNSBackend::abortTransaction
  - DNSBackend::inTransaction
  - DNSBackend::reload
  - DNSBackend::rediscover
  - DNSBackend::feedRecord
  - DNSBackend::feedEnts
  - DNSBackend::feedEnts3
  - DNSBackend::getDomainInfo
  - DNSBackend::getUnfreshSecondaryInfos
  - DNSBackend::alsoNotifies
  - DNSBackend::getUpdatedPrimaries
  - DNSBackend::getCatalogMembers
  - DNSBackend::setStale
  - DNSBackend::setFresh
  - DNSBackend::setNotified
  - DNSBackend::setPrimaries
  - DNSBackend::setKind
  - DNSBackend::setOptions
  - DNSBackend::setCatalog
  - DNSBackend::setAccount
  - DNSBackend::autoPrimaryAdd
  - DNSBackend::autoPrimaryRemove
  - DNSBackend::autoPrimariesList
  - DNSBackend::autoPrimaryBackend
  - DNSBackend::createDomain
  - DNSBackend::createSecondaryDomain
  - DNSBackend::deleteDomain
  - DNSBackend::directBackendCmd
  - DNSBackend::viewList
  - DNSBackend::viewListZones
  - DNSBackend::viewAddZone
  - DNSBackend::viewDelZone
  - DNSBackend::networkSet
  - DNSBackend::networkList
  - DNSBackend::hasCreatedLocalFiles
  - DNSBackend::rectifyZoneHook
  - '& getPrefix()'
  - DNSBackend::get_unsafe
  - DNSBackend::flush
  - BackendFactory::BackendFactory
  - ~BackendFactory()
  - BackendFactory::makeMetadataOnly
  - BackendFactory::declareArguments
  - DBException::DBException
  - SOAData
  - '& qname() const'
  - getNegativeTTL
  source_file: /src/pdns/pdns/recursordist/dnsbackend.hh
  types:
    enum:
    - enumerators:
      - name: Primary
      - name: Producer
      - name: Native
      - name: Secondary
      - name: Consumer
      - name: All
      item_type: enum
      name: DomainKind
      pos:
        line_end: 86
        line_start: 78
        source_file: /src/pdns/pdns/recursordist/dnsbackend.hh
    - enumerators:
      - name: CAP_DNSSEC
        value: 1 << 0
      - name: CAP_CREATE
        value: 1 << 4
      - name: CAP_DIRECT
        value: 1 << 2
      - name: CAP_COMMENTS
        value: 1 << 1
      - name: CAP_LIST
        value: 1 << 3
      - name: CAP_VIEWS
        value: 1 << 5
      - name: CAP_SEARCH
        value: 1 << 6
      item_type: enum
      name: Capabilities
      pos:
        line_end: 168
        line_start: 159
        source_file: /src/pdns/pdns/recursordist/dnsbackend.hh
    preproc_defs: []
    structs:
    - fields:
      - name: zone
        type: ZoneName
      - name: catalog
        type: ZoneName
      - name: last_check
        type: time_t
      - name: options
        type: string
      - name: account
        type: string
      - name: primaries
        type: vector<ComboAddress>
      - name: '* backend'
        type: DNSBackend
      - name: id
        type: domainid_t
      - name: notified_serial
        type: uint32_t
      - name: receivedNotify
        type: bool
      - name: serial
        type: uint32_t
      - name: kind
        type: "enum DomainKind : uint8_t\n  {\n    Primary,\n    Secondary,\n    Native,\n
          \   Producer,\n    Consumer,\n    All\n  }"
      item_type: struct
      name: DomainInfo
      pos:
        line_end: 125
        line_start: 53
        source_file: /src/pdns/pdns/recursordist/dnsbackend.hh
    - fields:
      - name: name
        type: DNSName
      - name: algorithm
        type: DNSName
      - name: key
        type: std::string
      item_type: struct
      name: TSIGKey
      pos:
        line_end: 132
        line_start: 127
        source_file: /src/pdns/pdns/recursordist/dnsbackend.hh
    - fields:
      - name: ip
        type: std::string
      - name: nameserver
        type: std::string
      - name: account
        type: std::string
      item_type: struct
      name: AutoPrimary
      pos:
        line_end: 141
        line_start: 134
        source_file: /src/pdns/pdns/recursordist/dnsbackend.hh
    - fields:
      - name: content
        type: std::string
      - name: id
        type: unsigned int
      - name: flags
        type: unsigned int
      - name: active
        type: bool
      - name: published
        type: bool
      item_type: struct
      name: KeyData
      pos:
        line_end: 240
        line_start: 233
        source_file: /src/pdns/pdns/recursordist/dnsbackend.hh
    - fields:
      - name: nameserver
        type: DNSName
      - name: rname
        type: DNSName
      - name: ttl
        type: uint32_t
      - name: serial
        type: uint32_t
      - name: refresh
        type: uint32_t
      - name: retry
        type: uint32_t
      - name: expire
        type: uint32_t
      - name: minimum
        type: uint32_t
      - name: '* db'
        type: DNSBackend
      - name: domain_id
        type: domainid_t
      item_type: struct
      name: SOAData
      pos:
        line_end: 620
        line_start: 597
        source_file: /src/pdns/pdns/recursordist/dnsbackend.hh
    typedefs: []
    union: []
- function_names:
  - Fixture
  - addSignerParams
  - checkRR
  - test_generic_signer
  - BOOST_FIXTURE_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  source_file: /src/pdns/pdns/recursordist/test-signers.cc
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: iscMap
        type: std::string
      - name: dsSHA1
        type: std::string
      - name: dsSHA256
        type: std::string
      - name: dsSHA384
        type: std::string
      - name: signature
        type: std::vector<uint8_t>
      - name: zoneRepresentation
        type: std::string
      - name: name
        type: std::string
      - name: rfcMsgDump
        type: std::string
      - name: rfcB64Signature
        type: std::string
      - name: bits
        type: int
      - name: flags
        type: uint16_t
      - name: rfcFlags
        type: uint16_t
      - name: algorithm
        type: uint8_t
      - name: isDeterministic
        type: bool
      - name: pem
        type: std::string
      item_type: struct
      name: SignerParams
      pos:
        line_end: 42
        line_start: 25
        source_file: /src/pdns/pdns/recursordist/test-signers.cc
    - fields:
      - name: message
        type: std::string
      - name: signerParams
        type: std::unordered_map<uint8_t, struct SignerParams>
      item_type: struct
      name: Fixture
      pos:
        line_end: 334
        line_start: 298
        source_file: /src/pdns/pdns/recursordist/test-signers.cc
    typedefs: []
    union: []
- function_names:
  - arg
  - BaseLua4::~BaseLua4()
  - BaseLua4::getFeatures
  - BaseLua4::prepareContext
  - RecursorLua4::preoutquery
  - RecursorLua4::policyHitEventFilter
  - RecursorLua4::~RecursorLua4()
  - RecursorLua4::postPrepareContext
  - RecursorLua4::postLoad
  - RecursorLua4::getFeatures
  - asyncresolve
  - primeHints
  - initSR
  - initSR
  - setDNSSECValidation
  - setLWResult
  - addRecordToLW
  - addRecordToLW
  - isRootServer
  - computeRRSIG
  - addRRSIG
  - addDNSKEY
  - addDS
  - addNSECRecordToLW
  - addNSEC3RecordToLW
  - addNSEC3UnhashedRecordToLW
  - addNSEC3NoDataNarrowRecordToLW
  - addNSEC3NarrowRecordToLW
  - generateKeyMaterial
  - generateKeyMaterial
  - genericDSAndDNSKEYHandler
  - basicRecordsForQnameMinimization
  source_file: /src/pdns/pdns/recursordist/test-syncres_cc.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs:
    - item_type: typedef
      name: testkeysset_t
      pos:
        line_end: 320
        line_start: 320
        source_file: /src/pdns/pdns/recursordist/test-syncres_cc.cc
      type: unordered_map<DNSName, std::pair<DNSSECPrivateKey, DSRecordContent>>
    union: []
- function_names: []
  source_file: /src/pdns/pdns/recursordist/namespaces.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - trySetThreadName
  - setThreadName
  source_file: /src/pdns/pdns/recursordist/threadname.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - EDNSSubnetOpts::setSource
  - '& getSource() const'
  - EDNSSubnetOpts::getFamily
  - EDNSSubnetOpts::getSourcePrefixLength
  - EDNSSubnetOpts::setScopePrefixLength
  - EDNSSubnetOpts::getScopePrefixLength
  - EDNSSubnetOpts::getScope
  source_file: /src/pdns/pdns/recursordist/ednssubnet.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - MetricDefinition
  - MetricDefinition
  - MetricDefinitionStorage::getMetricDetails
  - MetricDefinitionStorage::getPrometheusStringMetricType
  source_file: /src/pdns/pdns/recursordist/rec_metrics.hh
  types:
    enum:
    - enumerators:
      - name: counter
      - name: gauge
      - name: multicounter
      - name: histogram
      item_type: enum
      name: PrometheusMetricType
      pos:
        line_end: 34
        line_start: 28
        source_file: /src/pdns/pdns/recursordist/rec_metrics.hh
    preproc_defs: []
    structs:
    - fields:
      - name: d_description
        type: std::string
      - name: d_prometheusType
        type: PrometheusMetricType
      item_type: struct
      name: MetricDefinition
      pos:
        line_end: 50
        line_start: 37
        source_file: /src/pdns/pdns/recursordist/rec_metrics.hh
    typedefs: []
    union: []
- function_names: []
  source_file: /src/pdns/pdns/recursordist/ednsoptions.hh
  types:
    enum:
    - enumerators:
      - name: NSID
        value: '3'
      - name: ECS
        value: '8'
      - name: DAU
        value: '5'
      - name: N3U
        value: '7'
      - name: DHU
        value: '6'
      - name: EXPIRE
        value: '9'
      - name: COOKIE
        value: '10'
      - name: TCPKEEPALIVE
        value: '11'
      - name: PADDING
        value: '12'
      - name: CHAIN
        value: '13'
      - name: KEYTAG
        value: '14'
      - name: TRACEPARENT
        value: '65500'
      - name: EXTENDEDERROR
        value: '15'
      item_type: enum
      name: EDNSOptionCodeEnum
      pos:
        line_end: 30
        line_start: 30
        source_file: /src/pdns/pdns/recursordist/ednsoptions.hh
    preproc_defs: []
    structs:
    - fields: []
      item_type: struct
      name: EDNSOptionCode
      pos:
        line_end: 31
        line_start: 27
        source_file: /src/pdns/pdns/recursordist/ednsoptions.hh
    - fields:
      - name: '* content'
        type: char
      - name: size
        type: uint16_t
      item_type: struct
      name: EDNSOptionViewValue
      pos:
        line_end: 40
        line_start: 36
        source_file: /src/pdns/pdns/recursordist/ednsoptions.hh
    - fields:
      - name: values
        type: std::vector<EDNSOptionViewValue>
      item_type: struct
      name: EDNSOptionView
      pos:
        line_end: 45
        line_start: 42
        source_file: /src/pdns/pdns/recursordist/ednsoptions.hh
    - fields:
      - name: values
        type: std::vector<std::string>
      item_type: struct
      name: EDNSOptionValues
      pos:
        line_end: 50
        line_start: 47
        source_file: /src/pdns/pdns/recursordist/ednsoptions.hh
    typedefs: []
    union: []
- function_names:
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - getDenialWrapper
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  source_file: /src/pdns/pdns/recursordist/test-aggressive_nsec_cc.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  source_file: /src/pdns/pdns/recursordist/test-rcpgenerator_cc.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - ArgvMap::laxParse
  - ArgvMap::laxFile
  - ArgvMap::getHelp
  - ArgvMap::getDefault
  - ArgvMap::setSLog
  source_file: /src/pdns/pdns/recursordist/arguments.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/pdns/pdns/recursordist/root-dnssec.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - isAZoneKey
  - isRevokedKey
  - getByTag
  - isCoveredByNSEC3Hash
  - isCoveredByNSEC3Hash
  - isCoveredByNSEC
  - nsecProvesENT
  - getHashFromNSEC3
  - getHashFromNSEC3
  - denialProvesNoDelegation
  - isWildcardExpanded
  - isWildcardExpanded
  - isWildcardExpandedOntoItself
  - isWildcardExpandedOntoItself
  - getNSECOwnerName
  - isNSECAncestorDelegation
  - isNSEC3AncestorDelegation
  - provesNoDataWildCard
  - getClosestEncloserFromNSEC
  - provesNoWildCard
  - provesNSEC3NoWildCard
  - matchesNSEC
  - getNSEC3DenialProofWorstCaseIterationsCount
  - getDenial
  - isRRSIGNotExpired
  - isRRSIGIncepted
  - checkSignatureInceptionAndExpiry
  - checkSignatureWithKey
  - checkSignatureInceptionAndExpiry
  - checkSignatureWithKey
  - validateWithKeySet
  - getTrustAnchor
  - haveNegativeTrustAnchor
  - validateDNSKeysAgainstDS
  - isSupportedDS
  - getSigner
  - vStateToString
  - '& operator<<(std::ostream& ostr, const vState dstate)'
  - '& operator<<(std::ostream& ostr, const dState dstate)'
  - updateDNSSECValidationState
  source_file: /src/pdns/pdns/recursordist/validate.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - pdns::channel::Notifier::Notifier
  - pdns::channel::Notifier::notify
  - pdns::channel::Waiter::Waiter
  - pdns::channel::Waiter::clear
  - pdns::channel::Waiter::getDescriptor
  - pdns::channel::createNotificationQueue
  - pdns::channel::Notifier::Notifier
  - pdns::channel::Notifier::notify
  - pdns::channel::Waiter::Waiter
  - pdns::channel::Waiter::clear
  - pdns::channel::Waiter::getDescriptor
  - pdns::channel::createNotificationQueue
  source_file: /src/pdns/pdns/recursordist/channel.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - BOOST_AUTO_TEST_CASE
  source_file: /src/pdns/pdns/recursordist/test-shuffle_cc.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - SodiumED25519DNSCryptoKeyEngine::SodiumED25519DNSCryptoKeyEngine
  - SodiumED25519DNSCryptoKeyEngine::getName
  - SodiumED25519DNSCryptoKeyEngine::maker
  - SodiumED25519DNSCryptoKeyEngine::create
  - SodiumED25519DNSCryptoKeyEngine::createFromPEMFile
  - SodiumED25519DNSCryptoKeyEngine::convertToPEMFile
  - SodiumED25519DNSCryptoKeyEngine::getBits
  - SodiumED25519DNSCryptoKeyEngine::convertToISCVector
  - SodiumED25519DNSCryptoKeyEngine::fromISCMap
  - SodiumED25519DNSCryptoKeyEngine::getPublicKeyString
  - SodiumED25519DNSCryptoKeyEngine::fromPublicKeyString
  - SodiumED25519DNSCryptoKeyEngine::sign
  - SodiumED25519DNSCryptoKeyEngine::verify
  - LoaderSodiumStruct
  - LoaderSodiumStruct
  source_file: /src/pdns/pdns/recursordist/sodiumsigners.cc
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields: []
      item_type: struct
      name: LoaderSodiumStruct
      pos:
        line_end: 214
        line_start: 208
        source_file: /src/pdns/pdns/recursordist/sodiumsigners.cc
    - fields: []
      item_type: struct
      name: LoaderSodiumStruct
      pos:
        line_end: 214
        line_start: 208
        source_file: /src/pdns/pdns/recursordist/sodiumsigners.cc
    typedefs: []
    union: []
- function_names:
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  source_file: /src/pdns/pdns/recursordist/test-base64_cc.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - MOADNSException::MOADNSException
  - PacketReader::PacketReader
  - PacketReader::xfr32BitInt
  - PacketReader::xfrIP
  - PacketReader::xfrIP6
  - PacketReader::xfrCAWithoutPort
  - PacketReader::xfrCAPort
  - PacketReader::xfrTime
  - PacketReader::xfr16BitInt
  - PacketReader::xfrType
  - PacketReader::xfr8BitInt
  - PacketReader::xfrName
  - PacketReader::xfrText
  - PacketReader::xfrUnquotedText
  - PacketReader::eof
  - PacketReader::getRemaining
  - PacketReader::consumeRemaining
  - PacketReader::getPosition
  - PacketReader::skip
  - ~DNSRecordContent()
  - DNSRecordContent::serialize
  - operator==(const DNSRecordContent& rhs) const
  - DNSRecordContent::doRecordCheck
  - DNSRecordContent::regist
  - DNSRecordContent::isUnknownType
  - DNSRecordContent::TypeToNumber
  - DNSRecordContent::NumberToType
  - DNSRecordContent::lock
  - DNSRecord
  - DNSRecord
  - print
  - toString
  - setContent
  - setContent
  - '& getContent() const'
  - operator<(const DNSRecord& rhs) const
  - prettyCompare
  - operator==(const DNSRecord& rhs) const
  - sizeEstimate
  - operator<(const DNSZoneRecord& other) const
  - UnknownRecordContent::UnknownRecordContent
  - UnknownRecordContent::getType
  - '& getRawContent() const'
  - UnknownRecordContent::sizeEstimate
  - MOADNSParser::MOADNSParser
  - MOADNSParser::MOADNSParser
  - MOADNSParser::getTSIGPos
  - getRR
  - DNSPacketMangler::DNSPacketMangler
  - DNSPacketMangler::DNSPacketMangler
  - DNSPacketMangler::skipDomainName
  - DNSPacketMangler::skipBytes
  - DNSPacketMangler::rewindBytes
  - DNSPacketMangler::get32BitInt
  - DNSPacketMangler::get16BitInt
  - DNSPacketMangler::get8BitInt
  - DNSPacketMangler::skipRData
  - DNSPacketMangler::skipRDataAndReturnOffsets
  - DNSPacketMangler::decreaseAndSkip32BitInt
  - DNSPacketMangler::setAndSkip32BitInt
  - DNSPacketMangler::getOffset
  - DNSPacketMangler::swapInPlace
  - DNSPacketMangler::moveOffset
  - DNSPacketMangler::rewindOffset
  source_file: /src/pdns/pdns/recursordist/dnsparser.hh
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: d_name
        type: DNSName
      - name: d_content
        type: std::shared_ptr<const DNSRecordContent>
      - name: d_type
        type: uint16_t
      - name: d_class
        type: uint16_t
      - name: d_ttl
        type: uint32_t
      - name: d_clen
        type: uint16_t
      - name: d_place
        type: DNSResourceRecord::Place
      item_type: struct
      name: DNSRecord
      pos:
        line_end: 470
        line_start: 334
        source_file: /src/pdns/pdns/recursordist/dnsparser.hh
    - fields:
      - name: domain_id
        type: domainid_t
      - name: scopeMask
        type: uint8_t
      - name: signttl
        type: int
      - name: wildcardname
        type: DNSName
      - name: auth
        type: bool
      - name: disabled
        type: bool
      - name: dr
        type: DNSRecord
      item_type: struct
      name: DNSZoneRecord
      pos:
        line_end: 485
        line_start: 472
        source_file: /src/pdns/pdns/recursordist/dnsparser.hh
    typedefs:
    - item_type: typedef
      name: makerfunc_t(const struct DNSRecord& dr, PacketReader& pr)
      pos:
        line_end: 266
        line_start: 266
        source_file: /src/pdns/pdns/recursordist/dnsparser.hh
      type: shared_ptr<DNSRecordContent>
    - item_type: typedef
      name: zmakerfunc_t(const string& str)
      pos:
        line_end: 267
        line_start: 267
        source_file: /src/pdns/pdns/recursordist/dnsparser.hh
      type: shared_ptr<DNSRecordContent>
    - item_type: typedef
      name: typemap_t
      pos:
        line_end: 323
        line_start: 323
        source_file: /src/pdns/pdns/recursordist/dnsparser.hh
      type: map<std::pair<uint16_t, uint16_t>, makerfunc_t* >
    - item_type: typedef
      name: zmakermap_t
      pos:
        line_end: 324
        line_start: 324
        source_file: /src/pdns/pdns/recursordist/dnsparser.hh
      type: map<std::pair<uint16_t, uint16_t>, zmakerfunc_t* >
    - item_type: typedef
      name: t2namemap_t
      pos:
        line_end: 325
        line_start: 325
        source_file: /src/pdns/pdns/recursordist/dnsparser.hh
      type: map<std::pair<uint16_t, uint16_t>, string >
    - item_type: typedef
      name: n2typemap_t
      pos:
        line_end: 326
        line_start: 326
        source_file: /src/pdns/pdns/recursordist/dnsparser.hh
      type: map<string, std::pair<uint16_t, uint16_t> >
    union: []
- function_names:
  - AggressiveNSECCache::AggressiveNSECCache
  - AggressiveNSECCache::setMaxEntries
  - AggressiveNSECCache::nsec3Disabled
  - AggressiveNSECCache::getEntriesCount
  - AggressiveNSECCache::getNSECHits
  - AggressiveNSECCache::getNSEC3Hits
  - AggressiveNSECCache::getNSECWildcardHits
  - AggressiveNSECCache::getNSEC3WildcardHits
  - AggressiveNSECCache::ZoneEntry
  source_file: /src/pdns/pdns/recursordist/aggressive_nsec.hh
  types:
    enum:
    - enumerators:
      - name: Unknown
        value: '0'
      - name: NSEC
        value: '1'
      - name: NSEC3
        value: '2'
      item_type: enum
      name: ZoneDenialType
      pos:
        line_end: 137
        line_start: 132
        source_file: /src/pdns/pdns/recursordist/aggressive_nsec.hh
    preproc_defs: []
    structs:
    - fields:
      - name: '& getZoneTypeAsString(ZoneDenialType type)'
        type: std::string
      - name: d_entries
        type: cache_t
      - name: d_zone
        type: DNSName
      - name: d_salt
        type: std::string
      - name: d_iterations
        type: uint16_t
      - name: d_denialType
        type: ZoneDenialType
      item_type: struct
      name: ZoneEntry
      pos:
        line_end: 156
        line_start: 101
        source_file: /src/pdns/pdns/recursordist/aggressive_nsec.hh
    - fields: []
      item_type: struct
      name: HashedTag
      pos:
        line_end: 110
        line_start: 108
        source_file: /src/pdns/pdns/recursordist/aggressive_nsec.hh
    - fields: []
      item_type: struct
      name: SequencedTag
      pos:
        line_end: 113
        line_start: 111
        source_file: /src/pdns/pdns/recursordist/aggressive_nsec.hh
    - fields: []
      item_type: struct
      name: OrderedTag
      pos:
        line_end: 116
        line_start: 114
        source_file: /src/pdns/pdns/recursordist/aggressive_nsec.hh
    - fields:
      - name: d_record
        type: std::shared_ptr<const DNSRecordContent>
      - name: d_signatures
        type: std::vector<std::shared_ptr<const RRSIGRecordContent>>
      - name: d_owner
        type: DNSName
      - name: d_next
        type: DNSName
      - name: d_qname
        type: DNSName
      - name: d_ttd
        type: time_t
      - name: d_qtype
        type: QType
      - name: sizeEstimate() const
        type: size_t
      item_type: struct
      name: CacheEntry
      pos:
        line_end: 130
        line_start: 118
        source_file: /src/pdns/pdns/recursordist/aggressive_nsec.hh
    typedefs: []
    union: []
- function_names: []
  source_file: /src/pdns/pdns/recursordist/lua-recursor4-ffi.hh
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: optionCode
        type: uint16_t
      - name: len
        type: uint16_t
      - name: '* data'
        type: void
      item_type: struct
      name: pdns_ednsoption
      pos:
        line_end: 31
        line_start: 26
        source_file: /src/pdns/pdns/recursordist/lua-recursor4-ffi.hh
    - fields:
      - name: type
        type: uint8_t
      - name: len
        type: uint16_t
      - name: '* data'
        type: void
      item_type: struct
      name: pdns_proxyprotocol_value
      pos:
        line_end: 38
        line_start: 33
        source_file: /src/pdns/pdns/recursordist/lua-recursor4-ffi.hh
    - fields:
      - name: '* name'
        type: char
      - name: name_len
        type: size_t
      - name: '* content'
        type: char
      - name: content_len
        type: size_t
      - name: ttl
        type: uint32_t
      - name: place
        type: pdns_record_place_t
      - name: type
        type: uint16_t
      item_type: struct
      name: pdns_ffi_record
      pos:
        line_end: 67
        line_start: 58
        source_file: /src/pdns/pdns/recursordist/lua-recursor4-ffi.hh
    typedefs:
    - item_type: typedef
      name: pdns_ffi_param_t
      pos:
        line_end: 24
        line_start: 24
        source_file: /src/pdns/pdns/recursordist/lua-recursor4-ffi.hh
      type: pdns_ffi_param
    - item_type: typedef
      name: pdns_postresolve_ffi_handle_t
      pos:
        line_end: 122
        line_start: 122
        source_file: /src/pdns/pdns/recursordist/lua-recursor4-ffi.hh
      type: pdns_postresolve_ffi_handle
    union: []
- function_names:
  - '&& DnstapMessage::getBuffer()'
  - DnstapMessage::DnstapMessage
  - DnstapMessage::setExtra
  source_file: /src/pdns/pdns/recursordist/dnstap.cc
  types:
    enum:
    - enumerators:
      - name: identity
        value: '1'
      - name: version
        value: '2'
      - name: type
        value: '15'
      - name: message
        value: '14'
      - name: extra
        value: '3'
      item_type: enum
      name: protozero::pbf_tag_type
      pos:
        line_end: 19
        line_start: 12
        source_file: /src/pdns/pdns/recursordist/dnstap.cc
    - enumerators:
      - name: identity
        value: '1'
      - name: version
        value: '2'
      - name: type
        value: '15'
      - name: message
        value: '14'
      - name: extra
        value: '3'
      item_type: enum
      name: protozero::pbf_tag_type
      pos:
        line_end: 19
        line_start: 12
        source_file: /src/pdns/pdns/recursordist/dnstap.cc
    - enumerators:
      - name: message
        value: '1'
      item_type: enum
      name: protozero::pbf_tag_type
      pos:
        line_end: 27
        line_start: 24
        source_file: /src/pdns/pdns/recursordist/dnstap.cc
    - enumerators:
      - name: message
        value: '1'
      item_type: enum
      name: protozero::pbf_tag_type
      pos:
        line_end: 27
        line_start: 24
        source_file: /src/pdns/pdns/recursordist/dnstap.cc
    - enumerators:
      - name: inet
        value: '1'
      - name: inet6
        value: '2'
      item_type: enum
      name: protozero::pbf_tag_type
      pos:
        line_end: 36
        line_start: 32
        source_file: /src/pdns/pdns/recursordist/dnstap.cc
    - enumerators:
      - name: inet
        value: '1'
      - name: inet6
        value: '2'
      item_type: enum
      name: protozero::pbf_tag_type
      pos:
        line_end: 36
        line_start: 32
        source_file: /src/pdns/pdns/recursordist/dnstap.cc
    - enumerators:
      - name: type
        value: '1'
      - name: socket_family
        value: '2'
      - name: response_address
        value: '5'
      - name: query_address
        value: '4'
      - name: socket_protocol
        value: '3'
      - name: query_port
        value: '6'
      - name: response_port
        value: '7'
      - name: query_time_sec
        value: '8'
      - name: query_time_nsec
        value: '9'
      - name: query_message
        value: '10'
      - name: response_time_nsec
        value: '13'
      - name: policy
        value: '15'
      - name: response_time_sec
        value: '12'
      - name: response_message
        value: '14'
      - name: http_protocol
        value: '16'
      - name: query_zone
        value: '11'
      item_type: enum
      name: protozero::pbf_tag_type
      pos:
        line_end: 59
        line_start: 41
        source_file: /src/pdns/pdns/recursordist/dnstap.cc
    - enumerators:
      - name: type
        value: '1'
      - name: socket_family
        value: '2'
      - name: response_address
        value: '5'
      - name: query_address
        value: '4'
      - name: socket_protocol
        value: '3'
      - name: query_port
        value: '6'
      - name: response_port
        value: '7'
      - name: query_time_sec
        value: '8'
      - name: query_time_nsec
        value: '9'
      - name: query_message
        value: '10'
      - name: response_time_nsec
        value: '13'
      - name: policy
        value: '15'
      - name: response_time_sec
        value: '12'
      - name: response_message
        value: '14'
      - name: http_protocol
        value: '16'
      - name: query_zone
        value: '11'
      item_type: enum
      name: protozero::pbf_tag_type
      pos:
        line_end: 59
        line_start: 41
        source_file: /src/pdns/pdns/recursordist/dnstap.cc
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - ZoneData
  - ZoneData::isRRSetAuth
  - ZoneData::parseDRForCache
  - ZoneData::getByAXFR
  - getLinesFromFile
  - getURL
  - ZoneData::processLines
  - ZoneData::dnssecValidate
  - ZoneData::ZoneToCache
  - RecZoneToCache::maintainStates
  - RecZoneToCache::ZoneToCache
  source_file: /src/pdns/pdns/recursordist/rec-zonetocache.cc
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: d_all
        type: std::map<pair<DNSName, QType>, vector<DNSRecord>>
      - name: d_sigs
        type: std::map<pair<DNSName, QType>, vector<shared_ptr<const RRSIGRecordContent>>>
      - name: d_delegations
        type: std::set<DNSName>
      - name: d_log
        type: std::shared_ptr<Logr::Logger>
      - name: d_zone
        type: DNSName
      - name: d_now
        type: time_t
      - name: isRRSetAuth(const DNSName& qname, QType qtype) const
        type: bool
      - name: parseDRForCache(DNSRecord& resourceRecord)
        type: void
      - name: getByAXFR(const RecZoneToCache::Config& config, pdns::ZoneMD& zonemd)
        type: pdns::ZoneMD::Result
      - name: processLines(const std::vector<std::string>& lines, const RecZoneToCache::Config&
          config, pdns::ZoneMD& zonemd)
        type: pdns::ZoneMD::Result
      - name: ZoneToCache(const RecZoneToCache::Config& config)
        type: void
      - name: dnssecValidate(pdns::ZoneMD& zonemd, size_t& zonemdCount) const
        type: vState
      item_type: struct
      name: ZoneData
      pos:
        line_end: 65
        line_start: 40
        source_file: /src/pdns/pdns/recursordist/rec-zonetocache.cc
    typedefs: []
    union: []
- function_names: []
  source_file: /src/pdns/pdns/recursordist/root-addresses.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - '& getTypeString(enum CatalogType type)'
  - CatalogInfo::CatalogInfo
  - CatalogInfo::CatalogInfo
  - CatalogInfo::setType
  - CatalogInfo::addGroup
  - CatalogInfo::getUnique
  - operator<(const CatalogInfo& rhs) const
  source_file: /src/pdns/pdns/recursordist/auth-catalogzone.hh
  types:
    enum:
    - enumerators:
      - name: None
      - name: Producer
      - name: Consumer
      item_type: enum
      name: CatalogType
      pos:
        line_end: 40
        line_start: 35
        source_file: /src/pdns/pdns/recursordist/auth-catalogzone.hh
    preproc_defs: []
    structs: []
    typedefs:
    - item_type: typedef
      name: CatalogHashMap
      pos:
        line_end: 30
        line_start: 30
        source_file: /src/pdns/pdns/recursordist/auth-catalogzone.hh
      type: map
    union: []
- function_names: []
  source_file: /src/pdns/pdns/recursordist/pubsuffix.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - makeSimpleHeader
  - makeLocalProxyHeader
  - makeProxyHeader
  - isProxyHeaderComplete
  - parseProxyHeader
  source_file: /src/pdns/pdns/recursordist/proxy-protocol.cc
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: PROXYMAGIC
      pos:
        line_end: 27
        line_start: 26
        source_file: /src/pdns/pdns/recursordist/proxy-protocol.cc
      type_or_value: '"\x0D\x0A\x0D\x0A\x00\x0D\x0A\x51\x55\x49\x54\x0A"'
    - item_type: preproc_def
      name: PROXYMAGICLEN
      pos:
        line_end: 28
        line_start: 27
        source_file: /src/pdns/pdns/recursordist/proxy-protocol.cc
      type_or_value: sizeof(PROXYMAGIC)-1
    structs: []
    typedefs: []
    union: []
- function_names:
  - noinit_adaptor
  - noinit_adaptor
  - noinit_adaptor
  - construct
  - construct
  - destroy
  - "operator==(const noinit_adaptor<T>& lhs,\n                       const noinit_adaptor<U>&
    rhs) noexcept"
  - "operator!=(const noinit_adaptor<T>& lhs,\n                       const noinit_adaptor<U>&
    rhs) noexcept"
  - noinit_adapt
  source_file: /src/pdns/pdns/recursordist/noinitvector.hh
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields: []
      item_type: struct
      name: noinit_adaptor
      pos:
        line_end: 43
        line_start: 13
        source_file: /src/pdns/pdns/recursordist/noinitvector.hh
    - fields: []
      item_type: struct
      name: rebind
      pos:
        line_end: 19
        line_start: 16
        source_file: /src/pdns/pdns/recursordist/noinitvector.hh
    typedefs:
    - item_type: typedef
      name: other
      pos:
        line_end: 18
        line_start: 17
        source_file: /src/pdns/pdns/recursordist/noinitvector.hh
      type: noinit_adaptor
    union: []
- function_names:
  - getUniqueID
  - getUniqueID
  source_file: /src/pdns/pdns/recursordist/uuid-utils.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - CircularWriteBuffer::CircularWriteBuffer
  - RemoteLoggerInterface::RemoteLoggerInterface
  - RemoteLoggerInterface::RemoteLoggerInterface
  - RemoteLoggerInterface::RemoteLoggerInterface
  - '& operator=(const RemoteLoggerInterface&)'
  - '& operator=(RemoteLoggerInterface&&)'
  - ~RemoteLoggerInterface()
  - RemoteLoggerInterface::logQueries
  - RemoteLoggerInterface::logResponses
  - RemoteLoggerInterface::logNODs
  - RemoteLoggerInterface::logUDRs
  - RemoteLoggerInterface::setLogQueries
  - RemoteLoggerInterface::setLogResponses
  - RemoteLoggerInterface::setLogNODs
  - RemoteLoggerInterface::setLogUDRs
  - '& operator+=(const Stats& rhs)'
  - RemoteLogger::RemoteLogger
  - RemoteLogger::RemoteLogger
  - '& operator=(const RemoteLogger&)'
  - '& operator=(RemoteLogger&&)'
  - RemoteLogger::address
  - RemoteLogger::maxSize
  - RemoteLogger::name
  - RemoteLogger::toString
  - RemoteLogger::getStats
  - RemoteLogger::stop
  source_file: /src/pdns/pdns/recursordist/remote_logger.hh
  types:
    enum:
    - enumerators:
      - name: Queued
      - name: PipeFull
      - name: TooLarge
      - name: OtherError
      item_type: enum
      name: Result
      pos:
        line_end: 70
        line_start: 64
        source_file: /src/pdns/pdns/recursordist/remote_logger.hh
    - enumerators:
      - name: Two
      - name: Four
      item_type: enum
      name: FrameSize
      pos:
        line_end: 131
        line_start: 127
        source_file: /src/pdns/pdns/recursordist/remote_logger.hh
    preproc_defs: []
    structs:
    - fields:
      - name: d_queued
        type: uint64_t
      - name: d_pipeFull
        type: uint64_t
      - name: d_tooLarge
        type: uint64_t
      - name: d_otherError
        type: uint64_t
      item_type: struct
      name: Stats
      pos:
        line_end: 108
        line_start: 93
        source_file: /src/pdns/pdns/recursordist/remote_logger.hh
    - fields:
      - name: d_writer
        type: CircularWriteBuffer
      - name: d_socket
        type: std::unique_ptr<Socket>
      - name: d_stats
        type: RemoteLoggerInterface::Stats
      item_type: struct
      name: RuntimeData
      pos:
        line_end: 182
        line_start: 177
        source_file: /src/pdns/pdns/recursordist/remote_logger.hh
    typedefs: []
    union: []
- function_names:
  - SensitiveData::reallyClearContent
  - SensitiveData::SensitiveData
  - '& SensitiveData::operator=(SensitiveData&& rhs) noexcept'
  - SensitiveData::SensitiveData
  - SensitiveData::~SensitiveData()
  - SensitiveData::clear
  - hashPasswordInternal
  - generateRandomSalt
  - hashPassword
  - hashPassword
  - verifyPassword
  - parseHashed
  - verifyPassword
  - isPasswordHashed
  - CredentialsHolder::CredentialsHolder
  - CredentialsHolder::~CredentialsHolder()
  - CredentialsHolder::matches
  - CredentialsHolder::isHashingAvailable
  - CredentialsHolder::readFromTerminal
  source_file: /src/pdns/pdns/recursordist/credentials.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  source_file: /src/pdns/pdns/recursordist/test-syncres_cc6.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - DNSPacket::DNSPacket
  - '& operator=(const DNSPacket &)'
  - DNSPacket::getLocal
  - DNSPacket::getSocket
  - DNSPacket::getEDNSVersion
  - DNSPacket::setEDNSRcode
  - DNSPacket::getEDNSRCode
  - DNSPacket::getHash
  - DNSPacket::setHash
  - '& getRRS()'
  source_file: /src/pdns/pdns/recursordist/dnspacket.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - pdns::RecResolve::Refresher::Refresher
  - pdns::RecResolve::Refresher::Refresher
  - '& operator=(const Refresher&)'
  - '& operator=(Refresher&&)'
  - pdns::RecResolve::Refresher::Refresher
  - pdns::RecResolve::Refresher::Refresher
  - '& operator=(const Refresher&)'
  - '& operator=(Refresher&&)'
  source_file: /src/pdns/pdns/recursordist/rec-system-resolve.hh
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: d_address
        type: ComboAddress
      - name: d_ttd
        type: time_t
      item_type: struct
      name: AddressData
      pos:
        line_end: 103
        line_start: 99
        source_file: /src/pdns/pdns/recursordist/rec-system-resolve.hh
    - fields:
      - name: d_map
        type: std::map<std::string, AddressData>
      item_type: struct
      name: ResolveData
      pos:
        line_end: 107
        line_start: 104
        source_file: /src/pdns/pdns/recursordist/rec-system-resolve.hh
    - fields:
      - name: d_address
        type: ComboAddress
      - name: d_ttd
        type: time_t
      item_type: struct
      name: AddressData
      pos:
        line_end: 103
        line_start: 99
        source_file: /src/pdns/pdns/recursordist/rec-system-resolve.hh
    - fields:
      - name: d_map
        type: std::map<std::string, AddressData>
      item_type: struct
      name: ResolveData
      pos:
        line_end: 107
        line_start: 104
        source_file: /src/pdns/pdns/recursordist/rec-system-resolve.hh
    typedefs: []
    union: []
- function_names: []
  source_file: /src/pdns/pdns/recursordist/axfr-retriever.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - CatalogZone::setRefresh
  - CatalogZone::getRefresh
  - CatalogZone::setSerial
  - CatalogZone::setName
  - '& getName() const'
  - CatalogZone::clear
  - ZoneXFR::ZoneWaiter
  - ZoneXFR::ZoneXFR
  - FWCatZoneXFR::FWCatZoneXFR
  source_file: /src/pdns/pdns/recursordist/rec-xfr.hh
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: name
        type: std::string
      - name: primaries
        type: std::vector<std::string>
      - name: localAddress
        type: ComboAddress
      - name: soaRecordContent
        type: std::shared_ptr<const SOARecordContent>
      - name: tsigtriplet
        type: TSIGTriplet
      - name: maxReceivedMBytes
        type: size_t
      - name: zoneSizeHint
        type: size_t
      - name: zoneIdx
        type: size_t
      - name: refreshFromConf
        type: uint32_t
      - name: xfrTimeout
        type: uint16_t
      item_type: struct
      name: ZoneXFRParams
      pos:
        line_end: 53
        line_start: 41
        source_file: /src/pdns/pdns/recursordist/rec-xfr.hh
    - fields:
      - name: d_params
        type: ZoneXFRParams
      - name: d_defaults
        type: std::map<std::string, pdns::rust::settings::rec::FCZDefault>
      - name: d_catz
        type: std::shared_ptr<CatalogZone>
      item_type: struct
      name: FWCatalogZone
      pos:
        line_end: 100
        line_start: 95
        source_file: /src/pdns/pdns/recursordist/rec-xfr.hh
    - fields:
      - name: id
        type: std::thread::id
      - name: mutex
        type: std::mutex
      - name: condVar
        type: std::condition_variable
      - name: stop
        type: std::atomic<bool>
      item_type: struct
      name: ZoneWaiter
      pos:
        line_end: 115
        line_start: 107
        source_file: /src/pdns/pdns/recursordist/rec-xfr.hh
    typedefs: []
    union: []
- function_names:
  - BOOST_AUTO_TEST_CASE
  - testFixedPointInTime
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - dnssec_secure_servfail_dnskey
  - BOOST_AUTO_TEST_CASE
  - dnssec_secure_servfail_dnskey_insecure
  - BOOST_AUTO_TEST_CASE
  source_file: /src/pdns/pdns/recursordist/test-syncres_cc5.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - processIXFRRecords
  - getIXFRDeltas
  source_file: /src/pdns/pdns/recursordist/ixfr.cc
  types:
    enum:
    - enumerators:
      - name: Unknown
      - name: AXFR
      - name: IXFR
      item_type: enum
      name: transferStyle
      pos:
        line_end: 202
        line_start: 202
        source_file: /src/pdns/pdns/recursordist/ixfr.cc
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - RecursorControlChannel::RecursorControlChannel
  - RecursorControlChannel::~RecursorControlChannel()
  - RecursorControlChannel::listen
  - RecursorControlChannel::connect
  - sendfd
  - RecursorControlChannel::send
  - waitForRead
  - getArgMax
  - RecursorControlChannel::recv
  source_file: /src/pdns/pdns/recursordist/rec_channel.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union:
    - fields:
      - name: hdr
        type: struct cmsghdr
      - name: buf
        type: std::array<unsigned char, CMSG_SPACE(sizeof(int))>
      item_type: union
      name: cmsgbuf{}
      pos:
        line_end: 132
        line_start: 128
        source_file: /src/pdns/pdns/recursordist/rec_channel.cc
- function_names:
  - Semaphore::Semaphore
  - operator=(const Semaphore&)
  source_file: /src/pdns/pdns/recursordist/utility.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs:
    - item_type: typedef
      name: uint8_t
      pos:
        line_end: 25
        line_start: 25
        source_file: /src/pdns/pdns/recursordist/utility.hh
      type: unsigned char
    - item_type: typedef
      name: uint16_t
      pos:
        line_end: 26
        line_start: 26
        source_file: /src/pdns/pdns/recursordist/utility.hh
      type: unsigned short int
    - item_type: typedef
      name: uint32_t
      pos:
        line_end: 27
        line_start: 27
        source_file: /src/pdns/pdns/recursordist/utility.hh
      type: unsigned int
    - item_type: typedef
      name: uint64_t
      pos:
        line_end: 28
        line_start: 28
        source_file: /src/pdns/pdns/recursordist/utility.hh
      type: unsigned long long
    - item_type: typedef
      name: sem_value_t
      pos:
        line_end: 49
        line_start: 49
        source_file: /src/pdns/pdns/recursordist/utility.hh
      type: int
    - item_type: typedef
      name: iovec
      pos:
        line_end: 88
        line_start: 88
        source_file: /src/pdns/pdns/recursordist/utility.hh
      type: iovec
    - item_type: typedef
      name: pid_t
      pos:
        line_end: 89
        line_start: 89
        source_file: /src/pdns/pdns/recursordist/utility.hh
      type: pid_t
    - item_type: typedef
      name: sock_t
      pos:
        line_end: 90
        line_start: 90
        source_file: /src/pdns/pdns/recursordist/utility.hh
      type: int
    - item_type: typedef
      name: socklen_t
      pos:
        line_end: 91
        line_start: 91
        source_file: /src/pdns/pdns/recursordist/utility.hh
      type: socklen_t
    union: []
- function_names:
  - ~SNMPAgent()
  - SNMPAgent::run
  source_file: /src/pdns/pdns/recursordist/snmp-agent.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs:
    - item_type: typedef
      name: netsnmp_request_info
      pos:
        line_end: 10
        line_start: 10
        source_file: /src/pdns/pdns/recursordist/snmp-agent.hh
      type: netsnmp_request_info_s
    - item_type: typedef
      name: netsnmp_variable_list
      pos:
        line_end: 11
        line_start: 11
        source_file: /src/pdns/pdns/recursordist/snmp-agent.hh
      type: variable_list
    union: []
- function_names: []
  source_file: /src/pdns/pdns/recursordist/shuffle.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - pdns::trace::encode
  - pdns::trace::encode
  - pdns::trace::encodeFixed
  - pdns::trace::encode
  - pdns::trace::encode
  - pdns::trace::encodeFixed
  - pdns::trace::encode
  - pdns::trace::encode
  - pdns::trace::encode
  - pdns::trace::encode
  - pdns::trace::encode
  - pdns::trace::decode
  - pdns::trace::encode
  - pdns::trace::encode
  - '& operator<<(std::ostream& ostrm, const AnyValue& val)'
  - pdns::trace::TraceID
  - pdns::trace::TraceID
  - '& operator<<(std::ostream& ostrm, const TraceID& val)'
  - pdns::trace::getRandomTraceID
  - pdns::trace::makeRandom
  - pdns::trace::clear
  - pdns::trace::SpanID
  - pdns::trace::SpanID
  - '& operator<<(std::ostream& ostrm, const SpanID& val)'
  - pdns::trace::getRandomSpanID
  - pdns::trace::makeRandom
  - pdns::trace::clear
  - pdns::trace::fill
  - pdns::trace::fill
  - pdns::trace::fill
  - pdns::trace::fill
  - pdns::trace::encode
  - pdns::trace::decodeTraceID
  - pdns::trace::encode
  - pdns::trace::decodeSpanID
  - pdns::trace::clear
  - pdns::trace::timestamp
  - pdns::trace::clear
  - pdns::trace::setIDsIfNotSet
  - pdns::trace::close
  - pdns::trace::clear
  - pdns::trace::close
  - pdns::trace::close
  - pdns::trace::close
  - pdns::trace::encode
  - pdns::trace::boilerPlate
  - pdns::trace::ArrayValue::decode
  - pdns::trace::KeyValueList::decode
  - pdns::trace::EDNSOTTraceRecord
  - pdns::trace::setVersion
  - pdns::trace::setReserved
  - pdns::trace::setTraceID
  - pdns::trace::setSpanID
  - pdns::trace::setFlags
  - pdns::trace::EDNSOTTraceRecordView
  - pdns::trace::getVersion
  - pdns::trace::getReserved
  - pdns::trace::getTraceID
  - pdns::trace::getSpanID
  - pdns::trace::getFlags
  - ArrayValue::operator==(const ArrayValue& rhs) const
  - KeyValueList::operator==(const KeyValueList& rhs) const
  - KeyValue::operator==(const KeyValue& rhs) const
  - pdns::trace::encode
  - pdns::trace::encode
  - pdns::trace::encodeFixed
  - pdns::trace::encode
  - pdns::trace::encode
  - pdns::trace::encodeFixed
  - pdns::trace::encode
  - pdns::trace::encode
  - pdns::trace::encode
  - pdns::trace::encode
  - pdns::trace::encode
  - pdns::trace::decode
  - pdns::trace::encode
  - pdns::trace::encode
  - '& operator<<(std::ostream& ostrm, const AnyValue& val)'
  - pdns::trace::TraceID
  - pdns::trace::TraceID
  - '& operator<<(std::ostream& ostrm, const TraceID& val)'
  - pdns::trace::getRandomTraceID
  - pdns::trace::makeRandom
  - pdns::trace::clear
  - pdns::trace::SpanID
  - pdns::trace::SpanID
  - '& operator<<(std::ostream& ostrm, const SpanID& val)'
  - pdns::trace::getRandomSpanID
  - pdns::trace::makeRandom
  - pdns::trace::clear
  - pdns::trace::fill
  - pdns::trace::fill
  - pdns::trace::fill
  - pdns::trace::fill
  - pdns::trace::encode
  - pdns::trace::decodeTraceID
  - pdns::trace::encode
  - pdns::trace::decodeSpanID
  - pdns::trace::clear
  - pdns::trace::timestamp
  - pdns::trace::clear
  - pdns::trace::setIDsIfNotSet
  - pdns::trace::close
  - pdns::trace::clear
  - pdns::trace::close
  - pdns::trace::close
  - pdns::trace::close
  - pdns::trace::encode
  - pdns::trace::boilerPlate
  - pdns::trace::ArrayValue::decode
  - pdns::trace::KeyValueList::decode
  - pdns::trace::EDNSOTTraceRecord
  - pdns::trace::setVersion
  - pdns::trace::setReserved
  - pdns::trace::setTraceID
  - pdns::trace::setSpanID
  - pdns::trace::setFlags
  - pdns::trace::EDNSOTTraceRecordView
  - pdns::trace::getVersion
  - pdns::trace::getReserved
  - pdns::trace::getTraceID
  - pdns::trace::getSpanID
  - pdns::trace::getFlags
  - ArrayValue::operator==(const ArrayValue& rhs) const
  - KeyValueList::operator==(const KeyValueList& rhs) const
  - KeyValue::operator==(const KeyValue& rhs) const
  source_file: /src/pdns/pdns/recursordist/protozero-trace.hh
  types:
    enum:
    - enumerators:
      - name: STATUS_CODE_UNSET
        value: '0'
      - name: STATUS_CODE_OK
        value: '1'
      - name: STATUS_CODE_ERROR
        value: '2'
      item_type: enum
      name: StatusCode
      pos:
        line_end: 364
        line_start: 355
        source_file: /src/pdns/pdns/recursordist/protozero-trace.hh
    - enumerators:
      - name: SPAN_KIND_UNSPECIFIED
        value: '0'
      - name: SPAN_KIND_CLIENT
        value: '3'
      - name: SPAN_KIND_SERVER
        value: '2'
      - name: SPAN_KIND_INTERNAL
        value: '1'
      - name: SPAN_KIND_PRODUCER
        value: '4'
      - name: SPAN_KINCONSUMER
        value: '5'
      item_type: enum
      name: SpanKind
      pos:
        line_end: 473
        line_start: 451
        source_file: /src/pdns/pdns/recursordist/protozero-trace.hh
    - enumerators:
      - name: SPAN_FLAGS_DO_NOT_USE
        value: '0'
      - name: SPAN_FLAGS_CONTEXT_IS_REMOTE_MASK
        value: '0x00000200'
      - name: SPAN_FLAGS_CONTEXT_HAS_IS_REMOTE_MASK
        value: '0x00000100'
      - name: SPAN_FLAGS_TRACE_FLAGS_MASK
        value: '0x000000FF'
      item_type: enum
      name: SpanFlags
      pos:
        line_end: 660
        line_start: 647
        source_file: /src/pdns/pdns/recursordist/protozero-trace.hh
    - enumerators:
      - name: STATUS_CODE_UNSET
        value: '0'
      - name: STATUS_CODE_OK
        value: '1'
      - name: STATUS_CODE_ERROR
        value: '2'
      item_type: enum
      name: StatusCode
      pos:
        line_end: 364
        line_start: 355
        source_file: /src/pdns/pdns/recursordist/protozero-trace.hh
    - enumerators:
      - name: SPAN_KIND_UNSPECIFIED
        value: '0'
      - name: SPAN_KIND_CLIENT
        value: '3'
      - name: SPAN_KIND_SERVER
        value: '2'
      - name: SPAN_KIND_INTERNAL
        value: '1'
      - name: SPAN_KIND_PRODUCER
        value: '4'
      - name: SPAN_KINCONSUMER
        value: '5'
      item_type: enum
      name: SpanKind
      pos:
        line_end: 473
        line_start: 451
        source_file: /src/pdns/pdns/recursordist/protozero-trace.hh
    - enumerators:
      - name: SPAN_FLAGS_DO_NOT_USE
        value: '0'
      - name: SPAN_FLAGS_CONTEXT_IS_REMOTE_MASK
        value: '0x00000200'
      - name: SPAN_FLAGS_CONTEXT_HAS_IS_REMOTE_MASK
        value: '0x00000100'
      - name: SPAN_FLAGS_TRACE_FLAGS_MASK
        value: '0x000000FF'
      item_type: enum
      name: SpanFlags
      pos:
        line_end: 660
        line_start: 647
        source_file: /src/pdns/pdns/recursordist/protozero-trace.hh
    preproc_defs: []
    structs:
    - fields:
      - name: values
        type: std::vector<AnyValue>
      - name: decode(protozero::pbf_reader& reader)
        type: ArrayValue
      - name: operator==(const ArrayValue& rhs) const
        type: bool
      item_type: struct
      name: ArrayValue
      pos:
        line_end: 152
        line_start: 140
        source_file: /src/pdns/pdns/recursordist/protozero-trace.hh
    - fields:
      - name: values
        type: std::vector<KeyValue>
      - name: decode(protozero::pbf_reader& reader)
        type: KeyValueList
      - name: operator==(const KeyValueList& rhs) const
        type: bool
      item_type: struct
      name: KeyValueList
      pos:
        line_end: 166
        line_start: 154
        source_file: /src/pdns/pdns/recursordist/protozero-trace.hh
    - fields:
      - name: encode(protozero::pbf_writer& writer) const
        type: void
      - name: decode(protozero::pbf_reader& reader)
        type: AnyValue
      - name: toLogString() const
        type: std::string
      item_type: struct
      name: AnyValue
      pos:
        line_end: 178
        line_start: 169
        source_file: /src/pdns/pdns/recursordist/protozero-trace.hh
    - fields:
      - name: schema_url
        type: std::string
      - name: type
        type: std::string
      - name: id_keys
        type: std::vector<std::string>
      - name: description_keys
        type: std::vector<std::string>
      - name: encode(protozero::pbf_writer& writer) const
        type: void
      - name: decode(protozero::pbf_reader& reader)
        type: EntityRef
      item_type: struct
      name: EntityRef
      pos:
        line_end: 189
        line_start: 180
        source_file: /src/pdns/pdns/recursordist/protozero-trace.hh
    - fields:
      - name: key
        type: std::string
      - name: value
        type: AnyValue
      - name: encode(protozero::pbf_writer& writer) const
        type: void
      - name: decode(protozero::pbf_reader& reader)
        type: KeyValue
      - name: operator==(const KeyValue& rhs) const
        type: bool
      item_type: struct
      name: KeyValue
      pos:
        line_end: 199
        line_start: 191
        source_file: /src/pdns/pdns/recursordist/protozero-trace.hh
    - fields:
      - name: attributes
        type: std::vector<KeyValue>
      - name: dropped_attributes_count
        type: uint32_t
      - name: entity_refs
        type: std::vector<EntityRef>
      - name: encode(protozero::pbf_writer& writer) const
        type: void
      - name: decode(protozero::pbf_reader& reader)
        type: Resource
      item_type: struct
      name: Resource
      pos:
        line_end: 209
        line_start: 201
        source_file: /src/pdns/pdns/recursordist/protozero-trace.hh
    - fields:
      - name: name
        type: std::string
      - name: version
        type: std::string
      - name: attributes
        type: std::vector<KeyValue>
      - name: dropped_attributes_count
        type: uint32_t
      - name: encode(protozero::pbf_writer& writer) const
        type: void
      - name: decode(protozero::pbf_reader& reader)
        type: InstrumentationScope
      item_type: struct
      name: InstrumentationScope
      pos:
        line_end: 220
        line_start: 211
        source_file: /src/pdns/pdns/recursordist/protozero-trace.hh
    - fields:
      - name: toLogString() const
        type: std::string
      item_type: struct
      name: TraceID
      pos:
        line_end: 254
        line_start: 222
        source_file: /src/pdns/pdns/recursordist/protozero-trace.hh
    - fields:
      - name: toLogString() const
        type: std::string
      item_type: struct
      name: SpanID
      pos:
        line_end: 289
        line_start: 257
        source_file: /src/pdns/pdns/recursordist/protozero-trace.hh
    - fields:
      - name: message
        type: std::string
      - name: code
        type: StatusCode
      - name: encode(protozero::pbf_writer& writer) const
        type: void
      - name: decode(protozero::pbf_reader& reader)
        type: Status
      item_type: struct
      name: Status
      pos:
        line_end: 376
        line_start: 348
        source_file: /src/pdns/pdns/recursordist/protozero-trace.hh
    - fields:
      - name: trace_id
        type: TraceID
      - name: span_id
        type: SpanID
      - name: parent_span_id
        type: SpanID
      - name: start_time_unix_nano
        type: uint64_t
      item_type: struct
      name: InitialSpanInfo
      pos:
        line_end: 411
        line_start: 387
        source_file: /src/pdns/pdns/recursordist/protozero-trace.hh
    - fields:
      - name: trace_id
        type: TraceID
      - name: span_id
        type: SpanID
      - name: trace_state
        type: std::string
      - name: parent_span_id
        type: SpanID
      - name: name
        type: std::string
      - name: kind
        type: SpanKind
      - name: start_time_unix_nano
        type: uint64_t
      - name: end_time_unix_nano
        type: uint64_t
      - name: attributes
        type: std::vector<KeyValue>
      - name: dropped_attributes_count
        type: uint32_t
      - name: events
        type: std::vector<Event>
      - name: dropped_events_count
        type: uint32_t
      - name: links
        type: std::vector<Link>
      - name: dropped_links_count
        type: uint32_t
      - name: status
        type: Status
      - name: flags
        type: uint32_t
      - name: encode(protozero::pbf_writer& writer) const
        type: void
      - name: decode(protozero::pbf_reader& reader)
        type: Span
      item_type: struct
      name: Span
      pos:
        line_end: 631
        line_start: 413
        source_file: /src/pdns/pdns/recursordist/protozero-trace.hh
    - fields:
      - name: time_unix_nano
        type: uint64_t
      - name: name
        type: std::string
      - name: attributes
        type: std::vector<KeyValue>
      - name: dropped_attributes_count
        type: uint32_t
      - name: encode(protozero::pbf_writer& writer) const
        type: void
      - name: decode(protozero::pbf_reader& reader)
        type: Event
      item_type: struct
      name: Event
      pos:
        line_end: 529
        line_start: 512
        source_file: /src/pdns/pdns/recursordist/protozero-trace.hh
    - fields:
      - name: trace_id
        type: TraceID
      - name: span_id
        type: SpanID
      - name: trace_state
        type: std::string
      - name: attributes
        type: std::vector<KeyValue>
      - name: dropped_attributes_count
        type: uint32_t
      - name: flags
        type: uint32_t
      - name: encode(protozero::pbf_writer& writer) const
        type: void
      - name: decode(protozero::pbf_reader& reader)
        type: Link
      item_type: struct
      name: Link
      pos:
        line_end: 577
        line_start: 540
        source_file: /src/pdns/pdns/recursordist/protozero-trace.hh
    - fields:
      - name: scope
        type: InstrumentationScope
      - name: spans
        type: std::vector<Span>
      - name: schema_url
        type: std::string
      - name: encode(protozero::pbf_writer& writer) const
        type: void
      - name: decode(protozero::pbf_reader& reader)
        type: ScopeSpans
      item_type: struct
      name: ScopeSpans
      pos:
        line_end: 686
        line_start: 663
        source_file: /src/pdns/pdns/recursordist/protozero-trace.hh
    - fields:
      - name: resource
        type: Resource
      - name: scope_spans
        type: std::vector<ScopeSpans>
      - name: schema_url
        type: std::string
      - name: encode(protozero::pbf_writer& writer) const
        type: void
      - name: decode(protozero::pbf_reader& reader)
        type: ResourceSpans
      item_type: struct
      name: ResourceSpans
      pos:
        line_end: 712
        line_start: 689
        source_file: /src/pdns/pdns/recursordist/protozero-trace.hh
    - fields:
      - name: resource_spans
        type: std::vector<ResourceSpans>
      - name: encode(protozero::pbf_writer& writer) const
        type: void
      - name: decode(protozero::pbf_reader& reader)
        type: TracesData
      item_type: struct
      name: TracesData
      pos:
        line_end: 764
        line_start: 724
        source_file: /src/pdns/pdns/recursordist/protozero-trace.hh
    - fields:
      - name: fullSize
        type: size_t
      - name: traceIDOffset
        type: size_t
      - name: spanIDOffset
        type: size_t
      - name: flagsOffset
        type: size_t
      - name: '* data'
        type: uint8_t
      item_type: struct
      name: EDNSOTTraceRecord
      pos:
        line_end: 810
        line_start: 776
        source_file: /src/pdns/pdns/recursordist/protozero-trace.hh
    - fields:
      - name: '* const data'
        type: uint8_t
      - name: size
        type: size_t
      item_type: struct
      name: EDNSOTTraceRecordView
      pos:
        line_end: 863
        line_start: 812
        source_file: /src/pdns/pdns/recursordist/protozero-trace.hh
    - fields:
      - name: values
        type: std::vector<AnyValue>
      - name: decode(protozero::pbf_reader& reader)
        type: ArrayValue
      - name: operator==(const ArrayValue& rhs) const
        type: bool
      item_type: struct
      name: ArrayValue
      pos:
        line_end: 152
        line_start: 140
        source_file: /src/pdns/pdns/recursordist/protozero-trace.hh
    - fields:
      - name: values
        type: std::vector<KeyValue>
      - name: decode(protozero::pbf_reader& reader)
        type: KeyValueList
      - name: operator==(const KeyValueList& rhs) const
        type: bool
      item_type: struct
      name: KeyValueList
      pos:
        line_end: 166
        line_start: 154
        source_file: /src/pdns/pdns/recursordist/protozero-trace.hh
    - fields:
      - name: encode(protozero::pbf_writer& writer) const
        type: void
      - name: decode(protozero::pbf_reader& reader)
        type: AnyValue
      - name: toLogString() const
        type: std::string
      item_type: struct
      name: AnyValue
      pos:
        line_end: 178
        line_start: 169
        source_file: /src/pdns/pdns/recursordist/protozero-trace.hh
    - fields:
      - name: schema_url
        type: std::string
      - name: type
        type: std::string
      - name: id_keys
        type: std::vector<std::string>
      - name: description_keys
        type: std::vector<std::string>
      - name: encode(protozero::pbf_writer& writer) const
        type: void
      - name: decode(protozero::pbf_reader& reader)
        type: EntityRef
      item_type: struct
      name: EntityRef
      pos:
        line_end: 189
        line_start: 180
        source_file: /src/pdns/pdns/recursordist/protozero-trace.hh
    - fields:
      - name: key
        type: std::string
      - name: value
        type: AnyValue
      - name: encode(protozero::pbf_writer& writer) const
        type: void
      - name: decode(protozero::pbf_reader& reader)
        type: KeyValue
      - name: operator==(const KeyValue& rhs) const
        type: bool
      item_type: struct
      name: KeyValue
      pos:
        line_end: 199
        line_start: 191
        source_file: /src/pdns/pdns/recursordist/protozero-trace.hh
    - fields:
      - name: attributes
        type: std::vector<KeyValue>
      - name: dropped_attributes_count
        type: uint32_t
      - name: entity_refs
        type: std::vector<EntityRef>
      - name: encode(protozero::pbf_writer& writer) const
        type: void
      - name: decode(protozero::pbf_reader& reader)
        type: Resource
      item_type: struct
      name: Resource
      pos:
        line_end: 209
        line_start: 201
        source_file: /src/pdns/pdns/recursordist/protozero-trace.hh
    - fields:
      - name: name
        type: std::string
      - name: version
        type: std::string
      - name: attributes
        type: std::vector<KeyValue>
      - name: dropped_attributes_count
        type: uint32_t
      - name: encode(protozero::pbf_writer& writer) const
        type: void
      - name: decode(protozero::pbf_reader& reader)
        type: InstrumentationScope
      item_type: struct
      name: InstrumentationScope
      pos:
        line_end: 220
        line_start: 211
        source_file: /src/pdns/pdns/recursordist/protozero-trace.hh
    - fields:
      - name: toLogString() const
        type: std::string
      item_type: struct
      name: TraceID
      pos:
        line_end: 254
        line_start: 222
        source_file: /src/pdns/pdns/recursordist/protozero-trace.hh
    - fields:
      - name: toLogString() const
        type: std::string
      item_type: struct
      name: SpanID
      pos:
        line_end: 289
        line_start: 257
        source_file: /src/pdns/pdns/recursordist/protozero-trace.hh
    - fields:
      - name: message
        type: std::string
      - name: code
        type: StatusCode
      - name: encode(protozero::pbf_writer& writer) const
        type: void
      - name: decode(protozero::pbf_reader& reader)
        type: Status
      item_type: struct
      name: Status
      pos:
        line_end: 376
        line_start: 348
        source_file: /src/pdns/pdns/recursordist/protozero-trace.hh
    - fields:
      - name: trace_id
        type: TraceID
      - name: span_id
        type: SpanID
      - name: parent_span_id
        type: SpanID
      - name: start_time_unix_nano
        type: uint64_t
      item_type: struct
      name: InitialSpanInfo
      pos:
        line_end: 411
        line_start: 387
        source_file: /src/pdns/pdns/recursordist/protozero-trace.hh
    - fields:
      - name: trace_id
        type: TraceID
      - name: span_id
        type: SpanID
      - name: trace_state
        type: std::string
      - name: parent_span_id
        type: SpanID
      - name: name
        type: std::string
      - name: kind
        type: SpanKind
      - name: start_time_unix_nano
        type: uint64_t
      - name: end_time_unix_nano
        type: uint64_t
      - name: attributes
        type: std::vector<KeyValue>
      - name: dropped_attributes_count
        type: uint32_t
      - name: events
        type: std::vector<Event>
      - name: dropped_events_count
        type: uint32_t
      - name: links
        type: std::vector<Link>
      - name: dropped_links_count
        type: uint32_t
      - name: status
        type: Status
      - name: flags
        type: uint32_t
      - name: encode(protozero::pbf_writer& writer) const
        type: void
      - name: decode(protozero::pbf_reader& reader)
        type: Span
      item_type: struct
      name: Span
      pos:
        line_end: 631
        line_start: 413
        source_file: /src/pdns/pdns/recursordist/protozero-trace.hh
    - fields:
      - name: time_unix_nano
        type: uint64_t
      - name: name
        type: std::string
      - name: attributes
        type: std::vector<KeyValue>
      - name: dropped_attributes_count
        type: uint32_t
      - name: encode(protozero::pbf_writer& writer) const
        type: void
      - name: decode(protozero::pbf_reader& reader)
        type: Event
      item_type: struct
      name: Event
      pos:
        line_end: 529
        line_start: 512
        source_file: /src/pdns/pdns/recursordist/protozero-trace.hh
    - fields:
      - name: trace_id
        type: TraceID
      - name: span_id
        type: SpanID
      - name: trace_state
        type: std::string
      - name: attributes
        type: std::vector<KeyValue>
      - name: dropped_attributes_count
        type: uint32_t
      - name: flags
        type: uint32_t
      - name: encode(protozero::pbf_writer& writer) const
        type: void
      - name: decode(protozero::pbf_reader& reader)
        type: Link
      item_type: struct
      name: Link
      pos:
        line_end: 577
        line_start: 540
        source_file: /src/pdns/pdns/recursordist/protozero-trace.hh
    - fields:
      - name: scope
        type: InstrumentationScope
      - name: spans
        type: std::vector<Span>
      - name: schema_url
        type: std::string
      - name: encode(protozero::pbf_writer& writer) const
        type: void
      - name: decode(protozero::pbf_reader& reader)
        type: ScopeSpans
      item_type: struct
      name: ScopeSpans
      pos:
        line_end: 686
        line_start: 663
        source_file: /src/pdns/pdns/recursordist/protozero-trace.hh
    - fields:
      - name: resource
        type: Resource
      - name: scope_spans
        type: std::vector<ScopeSpans>
      - name: schema_url
        type: std::string
      - name: encode(protozero::pbf_writer& writer) const
        type: void
      - name: decode(protozero::pbf_reader& reader)
        type: ResourceSpans
      item_type: struct
      name: ResourceSpans
      pos:
        line_end: 712
        line_start: 689
        source_file: /src/pdns/pdns/recursordist/protozero-trace.hh
    - fields:
      - name: resource_spans
        type: std::vector<ResourceSpans>
      - name: encode(protozero::pbf_writer& writer) const
        type: void
      - name: decode(protozero::pbf_reader& reader)
        type: TracesData
      item_type: struct
      name: TracesData
      pos:
        line_end: 764
        line_start: 724
        source_file: /src/pdns/pdns/recursordist/protozero-trace.hh
    - fields:
      - name: fullSize
        type: size_t
      - name: traceIDOffset
        type: size_t
      - name: spanIDOffset
        type: size_t
      - name: flagsOffset
        type: size_t
      - name: '* data'
        type: uint8_t
      item_type: struct
      name: EDNSOTTraceRecord
      pos:
        line_end: 810
        line_start: 776
        source_file: /src/pdns/pdns/recursordist/protozero-trace.hh
    - fields:
      - name: '* const data'
        type: uint8_t
      - name: size
        type: size_t
      item_type: struct
      name: EDNSOTTraceRecordView
      pos:
        line_end: 863
        line_start: 812
        source_file: /src/pdns/pdns/recursordist/protozero-trace.hh
    typedefs: []
    union: []
- function_names:
  - '& operator<<(std::ostream &os, const DNSName& d)'
  - DNSName::throwSafeRangeError
  - DNSName::DNSName
  - DNSName::DNSName
  - checkLabelLength
  - DNSName::parsePacketUncompressed
  - DNSName::packetParser
  - DNSName::toString
  - DNSName::toString
  - DNSName::toLogString
  - DNSName::toDNSString
  - DNSName::toDNSStringLC
  - DNSName::wirelength
  - DNSName::isPartOf
  - DNSName::makeRelative
  - DNSName::makeUsRelative
  - DNSName::getCommonLabels
  - DNSName::labelReverse
  - DNSName::appendRawLabel
  - DNSName::appendRawLabel
  - DNSName::prependRawLabel
  - DNSName::slowCanonCompare_three_way
  - DNSName::canonCompare_three_way
  - DNSName::getRawLabels
  - DNSName::getRawLabel
  - DNSName::getLastLabel
  - DNSName::chopOff
  - DNSName::isWildcard
  - DNSName::isHostname
  - DNSName::countLabels
  - DNSName::trimToLabels
  - hash_value
  - DNSName::appendEscapedLabel
  - DNSName::has8bitBytes
  - DNSName::RawLabelsVisitor::RawLabelsVisitor(const DNSName::string_t& storage)
  - DNSName::getRawLabelsVisitor
  - DNSName::RawLabelsVisitor::front() const
  - DNSName::RawLabelsVisitor::back() const
  - DNSName::RawLabelsVisitor::pop_back()
  - DNSName::RawLabelsVisitor::empty() const
  - DNSName::matchesUncompressedName
  - '& operator<<(std::ostream &ostr, const ZoneName& zone)'
  - hash_value
  - DNSName::isPartOf
  - DNSName::makeRelative
  - DNSName::makeUsRelative
  - ZoneName::findVariantSeparator
  - ZoneName::ZoneName
  - ZoneName::ZoneName
  - ZoneName::setVariant
  - ZoneName::toLogString
  - ZoneName::toString
  - ZoneName::toStringNoDot
  - ZoneName::toStringRootDot
  - ZoneName::hash
  - ZoneName::operator<(const ZoneName& rhs)  const
  - ZoneName::canonCompare_three_way
  source_file: /src/pdns/pdns/recursordist/dnsname.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - HttpRequest::json
  - HttpRequest::compareAuthorization
  - HttpRequest::compareHeader
  - HttpResponse::setPlainBody
  - HttpResponse::setYamlBody
  - HttpResponse::setJsonBody
  - HttpResponse::setJsonBody
  - HttpResponse::setErrorResult
  - HttpResponse::setSuccessResult
  - bareHandlerWrapper
  - WebServer::registerBareHandler
  - WebServer::apiWrapper
  - WebServer::registerApiHandler
  - WebServer::webWrapper
  - WebServer::registerWebHandler
  - WebServerConnectionThreadStart
  - setupAllowedContentType
  - WebServer::handleRequest
  - Logging::IterLoggable<YaHTTP::strstr_map_t::const_iterator>::to_string() const
  - WebServer::logRequest
  - WebServer::logResponse
  - ValidChars
  - validURLChars
  - WebServer::validURL
  - WebServer::serveConnection
  - WebServer::WebServer
  - WebServer::bind
  - WebServer::go
  source_file: /src/pdns/pdns/recursordist/webserver.cc
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: set
        type: std::bitset<127>
      item_type: struct
      name: ValidChars
      pos:
        line_end: 480
        line_start: 471
        source_file: /src/pdns/pdns/recursordist/webserver.cc
    typedefs: []
    union: []
- function_names:
  - productServerStatisticsFetch
  - productServerStatisticsFetch
  - checkApiDirSet
  - apiWriteConfigFile
  - apiServerConfigACLGET
  - apiServerConfigACLPUT
  - apiServerConfigAllowFromGET
  - apiServerConfigAllowNotifyFromGET
  - apiServerConfigAllowFromPUT
  - apiServerConfigAllowNotifyFromPUT
  - isAllowedNotify
  - fillZone
  - doCreateZone
  - doDeleteZone
  - apiServerZonesPOST
  - apiServerZonesGET
  - findZoneById
  - apiServerZoneDetailPUT
  - apiServerZoneDetailDELETE
  - apiServerZoneDetailGET
  - apiServerSearchData
  - apiServerCacheFlush
  - apiServerRPZStats
  - apiServerOTConditionsGET
  - fillOTCondition
  - apiServerOTConditionDetailGET
  - apiServerOTConditionDetailDELETE
  - apiServerOTConditionDetailPOST
  - prometheusMetrics
  - serveStuff
  - validatePrometheusMetrics
  - RecursorWebServer::RecursorWebServer
  - jsonstat
  - AsyncServerNewConnectionMT
  - AsyncServer::asyncWaitForConnections
  - AsyncServer::newConnection
  - AsyncWebServer::serveConnection
  - AsyncWebServer::go
  - serveRustWeb
  - fromCxxToRust
  - rustWrapper
  - WRAPPER
  - WRAPPER
  source_file: /src/pdns/pdns/recursordist/ws-recursor.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs:
    - item_type: typedef
      name: query_t
      pos:
        line_end: 914
        line_start: 914
        source_file: /src/pdns/pdns/recursordist/ws-recursor.cc
      type: pair
    - item_type: typedef
      name: counts_t
      pos:
        line_end: 928
        line_start: 928
        source_file: /src/pdns/pdns/recursordist/ws-recursor.cc
      type: map
    - item_type: typedef
      name: rcounts_t
      pos:
        line_end: 939
        line_start: 939
        source_file: /src/pdns/pdns/recursordist/ws-recursor.cc
      type: multimap<int, query_t>
    - item_type: typedef
      name: counts_t
      pos:
        line_end: 981
        line_start: 981
        source_file: /src/pdns/pdns/recursordist/ws-recursor.cc
      type: map
    - item_type: typedef
      name: rcounts_t
      pos:
        line_end: 987
        line_start: 987
        source_file: /src/pdns/pdns/recursordist/ws-recursor.cc
      type: multimap<int, ComboAddress>
    union: []
- function_names:
  - pdns_exception
  - BOOST_AUTO_TEST_CASE
  source_file: /src/pdns/pdns/recursordist/test-nod_cc.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - rfc1982check
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  source_file: /src/pdns/pdns/recursordist/test-misc_hh.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs:
    - item_type: typedef
      name: typedns_t
      pos:
        line_end: 26
        line_start: 26
        source_file: /src/pdns/pdns/recursordist/test-misc_hh.cc
      type: pair
    - item_type: typedef
      name: case_t
      pos:
        line_end: 66
        line_start: 66
        source_file: /src/pdns/pdns/recursordist/test-misc_hh.cc
      type: tuple<const std::string, const std::string, bool>
    - item_type: typedef
      name: cases_t
      pos:
        line_end: 67
        line_start: 67
        source_file: /src/pdns/pdns/recursordist/test-misc_hh.cc
      type: list<case_t>
    - item_type: typedef
      name: case_t
      pos:
        line_end: 89
        line_start: 89
        source_file: /src/pdns/pdns/recursordist/test-misc_hh.cc
      type: tuple<const std::string, const std::string, bool>
    - item_type: typedef
      name: cases_t
      pos:
        line_end: 90
        line_start: 90
        source_file: /src/pdns/pdns/recursordist/test-misc_hh.cc
      type: list<case_t>
    union: []
- function_names:
  - LWResException::LWResException
  - LWResult::isLimitError
  source_file: /src/pdns/pdns/recursordist/lwres.hh
  types:
    enum:
    - enumerators:
      - name: Timeout
        value: '0'
      - name: Spoofed
        value: '4'
      - name: Success
        value: '1'
      - name: OSLimitError
        value: '3'
      - name: PermanentError
        value: '2'
      - name: ChainLimitError
        value: '5'
      - name: ECSMissing
        value: '6'
      - name: BadCookie
        value: '7'
      - name: BindError
        value: '8'
      item_type: enum
      name: Result
      pos:
        line_end: 64
        line_start: 53
        source_file: /src/pdns/pdns/recursordist/lwres.hh
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - QType::QType
  - operator uint16_t() const
  - QType::getCode
  - operator()(QType qtype) const noexcept
  - operator()(QType qtype) const noexcept
  - '& operator<<(std::ostream& stream, const QType& qtype)'
  - hash_value
  - QClass
  - operator uint16_t() const
  - getCode
  - '& operator<<(std::ostream& s, QClass qclass)'
  source_file: /src/pdns/pdns/recursordist/qtype.hh
  types:
    enum:
    - enumerators:
      - name: SOA
        value: '6'
      - name: PTR
        value: '12'
      - name: TXT
        value: '16'
      - name: KEY
        value: '25'
      - name: NAPTR
        value: '35'
      - name: DNAME
        value: '39'
      - name: SSHFP
        value: '44'
      - name: DNSKEY
        value: '48'
      - name: TLSA
        value: '52'
      - name: CDNSKEY
        value: '60'
      - name: IXFR
        value: '251'
      - name: MAILA
        value: '254'
      - name: DLV
        value: '32769'
      - name: CAA
        value: '257'
      - name: SVCB
        value: '64'
      - name: LUA
        value: '65402'
      - name: L32
        value: '105'
      - name: BRID
        value: '68'
      - name: A
        value: '1'
      - name: MB
        value: '7'
      - name: HINFO
        value: '13'
      - name: RP
        value: '17'
      - name: AAAA
        value: '28'
      - name: KX
        value: '36'
      - name: OPT
        value: '41'
      - name: IPSECKEY
        value: '45'
      - name: DHCID
        value: '49'
      - name: SMIMEA
        value: '53'
      - name: RESINFO
        value: '261'
      - name: ADDR
        value: '65400'
      - name: HTTPS
        value: '65'
      - name: WALLET
        value: '262'
      - name: L64
        value: '106'
      - name: SPF
        value: '99'
      - name: EUI64
        value: '109'
      - name: NS
        value: '2'
      - name: MG
        value: '8'
      - name: AFSDB
        value: '18'
      - name: LOC
        value: '29'
      - name: MINFO
        value: '14'
      - name: CERT
        value: '37'
      - name: APL
        value: '42'
      - name: RRSIG
        value: '46'
      - name: NSEC3
        value: '50'
      - name: RKEY
        value: '57'
      - name: HHIT
        value: '67'
      - name: LP
        value: '107'
      - name: NID
        value: '104'
      - name: AXFR
        value: '252'
      - name: OPENPGPKEY
        value: '61'
      - name: TKEY
        value: '249'
      - name: ANY
        value: '255'
      - name: ALIAS
        value: '65401'
      - name: ENT
        value: '0'
      - name: CNAME
        value: '5'
      - name: MR
        value: '9'
      - name: MX
        value: '15'
      - name: SIG
        value: '24'
      - name: SRV
        value: '33'
      - name: A6
        value: '38'
      - name: DS
        value: '43'
      - name: NSEC
        value: '47'
      - name: NSEC3PARAM
        value: '51'
      - name: CDS
        value: '59'
      - name: EUI48
        value: '108'
      - name: MAILB
        value: '253'
      - name: CSYNC
        value: '62'
      - name: TSIG
        value: '250'
      - name: URI
        value: '256'
      - name: ZONEMD
        value: '63'
      item_type: enum
      name: typeenum
      pos:
        line_end: 151
        line_start: 78
        source_file: /src/pdns/pdns/recursordist/qtype.hh
    preproc_defs: []
    structs:
    - fields: []
      item_type: struct
      name: hash<QType>
      pos:
        line_end: 174
        line_start: 170
        source_file: /src/pdns/pdns/recursordist/qtype.hh
    - fields: []
      item_type: struct
      name: hash<QType>
      pos:
        line_end: 174
        line_start: 170
        source_file: /src/pdns/pdns/recursordist/qtype.hh
    - fields:
      - name: toString() const
        type: std::string
      - name: IN
        type: QClass
      - name: CHAOS
        type: QClass
      - name: NONE
        type: QClass
      - name: ANY
        type: QClass
      - name: qclass
        type: uint16_t
      item_type: struct
      name: QClass
      pos:
        line_end: 208
        line_start: 187
        source_file: /src/pdns/pdns/recursordist/qtype.hh
    typedefs: []
    union: []
- function_names:
  - DNSFilterEngine::Policy
  - DNSFilterEngine::Policy
  - ~Policy()
  - DNSFilterEngine::Policy
  - '& operator=(const Policy& rhs)'
  - DNSFilterEngine::Policy
  - '& operator=(Policy&&)'
  - operator==(const Policy& rhs) const
  - '& getName() const'
  - DNSFilterEngine::setName
  - '& getTags() const'
  - DNSFilterEngine::getPriority
  - DNSFilterEngine::policyOverridesGettag
  - DNSFilterEngine::getSOA
  - DNSFilterEngine::includeSOA
  - DNSFilterEngine::wasHit
  - DNSFilterEngine::addSOAtoRPZResult
  - DNSFilterEngine::setCustom
  - DNSFilterEngine::customRecordsSize
  - DNSFilterEngine::setHitData
  - DNSFilterEngine::getTrigger
  - DNSFilterEngine::getHit
  - DNSFilterEngine::Zone::Zone
  - DNSFilterEngine::Zone::Zone
  - '& operator=(const Zone&)'
  - '& operator=(Zone&&)'
  - DNSFilterEngine::Zone::Zone
  - ~Zone()
  - DNSFilterEngine::Zone::clear
  - DNSFilterEngine::Zone::reserve
  - DNSFilterEngine::Zone::setName
  - DNSFilterEngine::Zone::setDomain
  - DNSFilterEngine::Zone::setSerial
  - DNSFilterEngine::Zone::setRefresh
  - DNSFilterEngine::Zone::setTags
  - DNSFilterEngine::Zone::setTags
  - DNSFilterEngine::Zone::setPolicyOverridesGettag
  - DNSFilterEngine::Zone::setExtendedErrorCode
  - DNSFilterEngine::Zone::setExtendedErrorExtra
  - DNSFilterEngine::Zone::setSOA
  - '& getName() const'
  - DNSFilterEngine::Zone::getQNames
  - DNSFilterEngine::Zone::getDomain
  - DNSFilterEngine::Zone::getRefresh
  - DNSFilterEngine::Zone::getSerial
  - '& getSOA() const'
  - DNSFilterEngine::Zone::size
  - DNSFilterEngine::Zone::setIncludeSOA
  - DNSFilterEngine::Zone::setIgnoreDuplicates
  - DNSFilterEngine::Zone::hasClientPolicies
  - DNSFilterEngine::Zone::hasQNamePolicies
  - DNSFilterEngine::Zone::hasNSPolicies
  - DNSFilterEngine::Zone::hasNSIPPolicies
  - DNSFilterEngine::Zone::hasResponsePolicies
  - DNSFilterEngine::Zone::getPriority
  - DNSFilterEngine::Zone::setPriority
  - DNSFilterEngine::clear
  - DNSFilterEngine::clearZones
  - DNSFilterEngine::getZone
  - DNSFilterEngine::getZone
  - DNSFilterEngine::addZone
  - DNSFilterEngine::setZone
  - DNSFilterEngine::getQueryPolicy
  - DNSFilterEngine::getClientPolicy
  - DNSFilterEngine::getProcessingPolicy
  - DNSFilterEngine::getProcessingPolicy
  - DNSFilterEngine::getPostPolicy
  - DNSFilterEngine::size
  source_file: /src/pdns/pdns/recursordist/filterpo.hh
  types:
    enum:
    - enumerators:
      - name: NoAction
      - name: Truncate
      - name: NODATA
      - name: NXDOMAIN
      - name: Drop
      - name: Custom
      item_type: enum
      name: PolicyKind
      pos:
        line_end: 77
        line_start: 69
        source_file: /src/pdns/pdns/recursordist/filterpo.hh
    - enumerators:
      - name: None
      - name: ClientIP
      - name: NSDName
      - name: ResponseIP
      - name: QName
      - name: NSIP
      item_type: enum
      name: PolicyType
      pos:
        line_end: 86
        line_start: 78
        source_file: /src/pdns/pdns/recursordist/filterpo.hh
    preproc_defs: []
    structs:
    - fields:
      - name: d_tags
        type: std::unordered_set<std::string>
      - name: d_name
        type: std::string
      - name: d_extendedErrorExtra
        type: std::string
      - name: d_soa
        type: DNSRecord
      - name: d_extendedErrorCode
        type: std::optional<uint16_t>
      - name: d_priority
        type: Priority
      - name: d_policyOverridesGettag
        type: bool
      - name: d_includeSOA
        type: bool
      - name: d_ignoreDuplicates
        type: bool
      item_type: struct
      name: PolicyZoneData
      pos:
        line_end: 105
        line_start: 93
        source_file: /src/pdns/pdns/recursordist/filterpo.hh
    - fields:
      - name: getLogString() const
        type: std::string
      - name: info(Logr::Priority prio, const std::shared_ptr<Logr::Logger>& log)
          const
        type: void
      - name: getCustomRecords(const DNSName& qname, uint16_t qtype) const
        type: std::vector<DNSRecord>
      - name: getRecords(const DNSName& qname) const
        type: std::vector<DNSRecord>
      - name: d_zoneData
        type: std::shared_ptr<PolicyZoneData>
      - name: d_custom
        type: std::unique_ptr<CustomData>
      - name: d_hitdata
        type: std::unique_ptr<HitData>
      - name: d_ttl
        type: int32_t
      - name: d_kind
        type: PolicyKind
      - name: d_type
        type: PolicyType
      - name: getRecordFromCustom(const DNSName& qname, const std::shared_ptr<const
          DNSRecordContent>& custom) const
        type: DNSRecord
      item_type: struct
      name: Policy
      pos:
        line_end: 295
        line_start: 107
        source_file: /src/pdns/pdns/recursordist/filterpo.hh
    - fields:
      - name: d_trigger
        type: DNSName
      - name: d_hit
        type: string
      item_type: struct
      name: HitData
      pos:
        line_end: 248
        line_start: 244
        source_file: /src/pdns/pdns/recursordist/filterpo.hh
    typedefs: []
    union: []
- function_names:
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  source_file: /src/pdns/pdns/recursordist/test-settings.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - doSecPoll
  source_file: /src/pdns/pdns/recursordist/secpoll-recursor.cc
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: PACKAGEVERSION
      pos:
        line_end: 14
        line_start: 13
        source_file: /src/pdns/pdns/recursordist/secpoll-recursor.cc
      type_or_value: getPDNSVersion()
    structs: []
    typedefs: []
    union: []
- function_names:
  - BOOST_AUTO_TEST_CASE
  source_file: /src/pdns/pdns/recursordist/test-rec-system-resolve.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - jump_fcontext
  - threadWrapper
  - threadWrapper
  - pdns_ucontext_t::pdns_ucontext_t
  - pdns_ucontext_t::~pdns_ucontext_t()
  - pdns_ucontext_t::~pdns_ucontext_t()
  - pdns_makecontext
  source_file: /src/pdns/pdns/recursordist/mtasker_context.cc
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: CET_ENDBR
      pos:
        line_end: 40
        line_start: 39
        source_file: /src/pdns/pdns/recursordist/mtasker_context.cc
      type_or_value: __asm("endbr64")
    structs:
    - fields:
      - name: '* self'
        type: pdns_ucontext_t
      - name: '* work'
        type: std::function<void(void)>
      item_type: struct
      name: args_t
      pos:
        line_end: 111
        line_start: 104
        source_file: /src/pdns/pdns/recursordist/mtasker_context.cc
    typedefs: []
    union: []
- function_names:
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  source_file: /src/pdns/pdns/recursordist/test-syncres_cc7.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - getRawQueryWithECSAndCookie
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - checkECSOptionValidity
  - BOOST_AUTO_TEST_CASE
  - checkExtendedErrorOptionValidity
  - BOOST_AUTO_TEST_CASE
  source_file: /src/pdns/pdns/recursordist/test-ednsoptions_cc.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - operator<(const ResolveTask& task) const
  - pdns::TaskQueue::empty
  - pdns::TaskQueue::size
  - pdns::TaskQueue::getPushes
  - pdns::TaskQueue::getExpired
  - pdns::TaskQueue::incExpired
  - pdns::TaskQueue::clear
  - operator<(const ResolveTask& task) const
  - pdns::TaskQueue::empty
  - pdns::TaskQueue::size
  - pdns::TaskQueue::getPushes
  - pdns::TaskQueue::getExpired
  - pdns::TaskQueue::incExpired
  - pdns::TaskQueue::clear
  source_file: /src/pdns/pdns/recursordist/taskqueue.hh
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: d_qname
        type: DNSName
      - name: d_qtype
        type: uint16_t
      - name: d_deadline
        type: time_t
      - name: d_refreshMode
        type: bool
      - name: d_func
        type: TaskFunction
      - name: d_ip
        type: ComboAddress
      - name: d_nsname
        type: DNSName
      - name: d_netmask
        type: Netmask
      - name: run(bool logErrors) const
        type: bool
      item_type: struct
      name: ResolveTask
      pos:
        line_end: 71
        line_start: 48
        source_file: /src/pdns/pdns/recursordist/taskqueue.hh
    - fields: []
      item_type: struct
      name: HashTag
      pos:
        line_end: 112
        line_start: 110
        source_file: /src/pdns/pdns/recursordist/taskqueue.hh
    - fields: []
      item_type: struct
      name: SequencedTag
      pos:
        line_end: 116
        line_start: 114
        source_file: /src/pdns/pdns/recursordist/taskqueue.hh
    - fields:
      - name: d_qname
        type: DNSName
      - name: d_qtype
        type: uint16_t
      - name: d_deadline
        type: time_t
      - name: d_refreshMode
        type: bool
      - name: d_func
        type: TaskFunction
      - name: d_ip
        type: ComboAddress
      - name: d_nsname
        type: DNSName
      - name: d_netmask
        type: Netmask
      - name: run(bool logErrors) const
        type: bool
      item_type: struct
      name: ResolveTask
      pos:
        line_end: 71
        line_start: 48
        source_file: /src/pdns/pdns/recursordist/taskqueue.hh
    - fields: []
      item_type: struct
      name: HashTag
      pos:
        line_end: 112
        line_start: 110
        source_file: /src/pdns/pdns/recursordist/taskqueue.hh
    - fields: []
      item_type: struct
      name: SequencedTag
      pos:
        line_end: 116
        line_start: 114
        source_file: /src/pdns/pdns/recursordist/taskqueue.hh
    typedefs: []
    union: []
- function_names:
  - pdns::coverage::dumpCoverageData
  - pdns::coverage::dumpCoverageData
  source_file: /src/pdns/pdns/recursordist/coverage.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - GssContext::getCounts
  - GssContext::supported
  - GssContext::GssContext
  - GssContext::GssContext
  - GssContext::setLocalPrincipal
  - GssContext::getLocalPrincipal
  - GssContext::setPeerPrincipal
  - GssContext::getPeerPrincipal
  - GssContext::generateLabel
  - GssContext::setLabel
  - GssContext::init
  - GssContext::accept
  - GssContext::destroy
  - GssContext::expired
  - GssContext::valid
  - GssContext::sign
  - GssContext::verify
  - GssContext::getError
  - GssCredential::GssCredential
  - ~GssCredential()
  - GssCredential::expired
  - GssCredential::renew
  - GssCredential::valid
  - GssSecContext::GssSecContext
  - ~GssSecContext()
  - doExpire
  - doExpireL
  - expire
  - GssContext::supported
  - GssContext::initialize
  - GssContext::GssContext
  - GssContext::GssContext
  - GssContext::generateLabel
  - GssContext::setLabel
  - GssContext::expired
  - GssContext::valid
  - GssContext::createOrReuseContext
  - GssContext::init
  - GssContext::accept
  - GssContext::sign
  - GssContext::verify
  - GssContext::destroy
  - GssContext::setLocalPrincipal
  - GssContext::getLocalPrincipal
  - GssContext::setPeerPrincipal
  - GssContext::getPeerPrincipal
  - GssContext::getCounts
  - GssContext::processError
  - gss_add_signature
  - gss_verify_signature
  source_file: /src/pdns/pdns/recursordist/gss_context.cc
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: TSIG_GSS_EXPIRE_INTERVAL
      pos:
        line_end: 56
        line_start: 55
        source_file: /src/pdns/pdns/recursordist/gss_context.cc
      type_or_value: '60'
    structs: []
    typedefs: []
    union: []
- function_names:
  - TCPOutConnectionManager::cleanup
  - TCPOutConnectionManager::store
  - TCPOutConnectionManager::get
  - TCPOutConnectionManager::setupOutgoingTLSConfigTables
  - TCPOutConnectionManager::getTLSContext
  - getCurrentIdleTCPConnections
  source_file: /src/pdns/pdns/recursordist/rec-tcpout.cc
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: d_suffixToConfig
        type: SuffixMatchTree<pdns::rust::settings::rec::OutgoingTLSConfiguration>
      - name: d_netmaskToConfig
        type: NetmaskTree<pdns::rust::settings::rec::OutgoingTLSConfiguration>
      - name: d_TLSContexts
        type: std::map<std::string, std::shared_ptr<TLSCtx>>
      item_type: struct
      name: OutgoingTLSConfigTable
      pos:
        line_end: 91
        line_start: 86
        source_file: /src/pdns/pdns/recursordist/rec-tcpout.cc
    typedefs: []
    union: []
- function_names:
  - genRecsAndSigs
  - genNegCacheEntry
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  source_file: /src/pdns/pdns/recursordist/test-negcache_cc.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - pdns::getQueryLocalAddress
  - pdns::getNonAnyQueryLocalAddress
  - pdns::parseQueryLocalAddress
  - pdns::isQueryLocalAddressFamilyEnabled
  - pdns::getQueryLocalAddress
  - pdns::getNonAnyQueryLocalAddress
  - pdns::parseQueryLocalAddress
  - pdns::isQueryLocalAddressFamilyEnabled
  source_file: /src/pdns/pdns/recursordist/query-local-address.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - TimedSet::TimedSet
  - TimedSet::purge
  - TimedSet::insert
  - TimedSet::clear
  - TimedSet::Entry
  - resolveInternal
  - resolveForceNoQM
  - resolve
  - tryDoT
  - runTasks
  - runTaskOnce
  - pushAlmostExpiredTask
  - pushResolveTask
  - pushTryDoTTask
  - getTaskPushes
  - getTaskExpired
  - getTaskSize
  - taskQueueClear
  - taskQueuePop
  - getAlmostExpiredTasksPushed
  - getAlmostExpiredTasksRun
  - getAlmostExpiredTaskExceptions
  - getResolveTasksPushed
  - getResolveTasksRun
  - getResolveTaskExceptions
  - taskQTypeIsSupported
  source_file: /src/pdns/pdns/recursordist/rec-taskqueue.cc
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: d_task
        type: pdns::ResolveTask
      - name: d_ttd
        type: time_t
      item_type: struct
      name: Entry
      pos:
        line_end: 86
        line_start: 80
        source_file: /src/pdns/pdns/recursordist/rec-taskqueue.cc
    - fields:
      - name: queue
        type: pdns::TaskQueue
      - name: rateLimitSet
        type: TimedSet
      item_type: struct
      name: Queue
      pos:
        line_end: 103
        line_start: 99
        source_file: /src/pdns/pdns/recursordist/rec-taskqueue.cc
    - fields:
      - name: pushed
        type: pdns::stat_t
      - name: run
        type: pdns::stat_t
      - name: exceptions
        type: pdns::stat_t
      item_type: struct
      name: taskstats
      pos:
        line_end: 111
        line_start: 106
        source_file: /src/pdns/pdns/recursordist/rec-taskqueue.cc
    typedefs: []
    union: []
- function_names:
  - makeQuerySocket
  - Resolver::Resolver
  - Resolver::~Resolver()
  - Resolver::sendResolve
  - pdns::resolver::parseResult
  - pdns::resolver::parseResult
  - pdns::resolver::parseResult
  - pdns::resolver::parseResult
  - Resolver::tryGetSOASerial
  - Resolver::resolve
  - Resolver::resolve
  - Resolver::getSoaSerial
  source_file: /src/pdns/pdns/recursordist/resolver.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - RecResponseStats::submitResponse
  source_file: /src/pdns/pdns/recursordist/rec-responsestats.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - pdns::stat_t_trait::stat_t_trait
  - pdns::stat_t_trait::stat_t_trait
  - '& operator=(const base_t& value)'
  - ~stat_t_trait()
  - pdns::stat_t_trait::stat_t_trait
  - '& operator=(const stat_t_trait&)'
  - '& operator=(stat_t_trait&&)'
  - pdns::stat_t_trait::stat_t_trait
  - operator++(int)
  - operator++()
  - operator--(int)
  - operator--()
  - operator+=(base_t arg)
  - operator-=(base_t arg)
  - pdns::stat_t_trait::load
  - pdns::stat_t_trait::store
  - operator base_t() const
  - '& ref()'
  - '& ref() const'
  - pdns::stat_t_trait::stat_t_trait
  - pdns::stat_t_trait::stat_t_trait
  - '& operator=(const base_t& value)'
  - ~stat_t_trait()
  - pdns::stat_t_trait::stat_t_trait
  - '& operator=(const stat_t_trait&)'
  - '& operator=(stat_t_trait&&)'
  - pdns::stat_t_trait::stat_t_trait
  - operator++(int)
  - operator++()
  - operator--(int)
  - operator--()
  - operator+=(base_t arg)
  - operator-=(base_t arg)
  - pdns::stat_t_trait::load
  - pdns::stat_t_trait::store
  - operator base_t() const
  - '& ref()'
  - '& ref() const'
  source_file: /src/pdns/pdns/recursordist/stat_t.hh
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: CPU_LEVEL1_DCACHE_LINESIZE
      pos:
        line_end: 27
        line_start: 26
        source_file: /src/pdns/pdns/recursordist/stat_t.hh
      type_or_value: 64 // Until we know better via configure/getconf
    structs: []
    typedefs: []
    union: []
- function_names:
  - checkDNSSECDisabled
  - warnIfDNSSECDisabled
  - increaseDNSSECStateCounter
  - increaseXDNSSECStateCounter
  - updateTrustAnchorsFromFile
  source_file: /src/pdns/pdns/recursordist/validate-recursor.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - burtlemix
  - burtle
  - burtleCI
  - burtleCI
  source_file: /src/pdns/pdns/recursordist/burtle.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - Logr::Loggable
  - Logr::Loggable
  - Logr::Loggable
  - '& operator=(const Loggable&)'
  - '& operator=(Loggable&&)'
  - ~Loggable()
  - Logr::Logger::Logger
  - Logr::Logger::Logger
  - Logr::Logger::Logger
  - '& operator=(const Logger&)'
  - '& operator=(Logger&&)'
  - ~Logger()
  - Logr::Logger::toString
  - Logr::Logger::info
  - Logr::Logger::error
  - Logr::Logger::error
  - Logr::Logger::withValues
  - Logr::Logger::mapArguments
  - Logr::Logger::mapArguments
  - Logr::Loggable
  - Logr::Loggable
  - Logr::Loggable
  - '& operator=(const Loggable&)'
  - '& operator=(Loggable&&)'
  - ~Loggable()
  - Logr::Logger::Logger
  - Logr::Logger::Logger
  - Logr::Logger::Logger
  - '& operator=(const Logger&)'
  - '& operator=(Logger&&)'
  - ~Logger()
  - Logr::Logger::toString
  - Logr::Logger::info
  - Logr::Logger::error
  - Logr::Logger::error
  - Logr::Logger::withValues
  - Logr::Logger::mapArguments
  - Logr::Logger::mapArguments
  source_file: /src/pdns/pdns/recursordist/logr.hh
  types:
    enum:
    - enumerators:
      - name: Alert
        value: '1'
      - name: Error
        value: '3'
      - name: Critical
        value: '2'
      - name: Notice
        value: '5'
      - name: Warning
        value: '4'
      - name: Info
        value: '6'
      - name: Debug
        value: '7'
      item_type: enum
      name: Priority
      pos:
        line_end: 63
        line_start: 54
        source_file: /src/pdns/pdns/recursordist/logr.hh
    - enumerators:
      - name: Alert
        value: '1'
      - name: Error
        value: '3'
      - name: Critical
        value: '2'
      - name: Notice
        value: '5'
      - name: Warning
        value: '4'
      - name: Info
        value: '6'
      - name: Debug
        value: '7'
      item_type: enum
      name: Priority
      pos:
        line_end: 63
        line_start: 54
        source_file: /src/pdns/pdns/recursordist/logr.hh
    preproc_defs: []
    structs:
    - fields:
      - name: to_string() const
        type: std::string
      item_type: struct
      name: Loggable
      pos:
        line_end: 43
        line_start: 34
        source_file: /src/pdns/pdns/recursordist/logr.hh
    - fields:
      - name: to_string() const
        type: std::string
      item_type: struct
      name: Loggable
      pos:
        line_end: 43
        line_start: 34
        source_file: /src/pdns/pdns/recursordist/logr.hh
    typedefs: []
    union: []
- function_names:
  - getDenial
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  source_file: /src/pdns/pdns/recursordist/test-syncres_cc8.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - nsspeeds_t::getPBEntry
  - nsspeeds_t::getPB
  - nsspeeds_t::putPBEntry
  - nsspeeds_t::putPB
  source_file: /src/pdns/pdns/recursordist/rec-nsspeeds.cc
  types:
    enum:
    - enumerators:
      - name: required_string_version
        value: '1'
      - name: required_uint64_protocolVersion
        value: '3'
      - name: required_string_identity
        value: '2'
      - name: required_string_type
        value: '5'
      - name: required_int64_time
        value: '4'
      - name: repeated_message_nsspeedEntry
        value: '6'
      item_type: enum
      name: PBNSSpeedDump
      pos:
        line_end: 39
        line_start: 31
        source_file: /src/pdns/pdns/recursordist/rec-nsspeeds.cc
    - enumerators:
      - name: required_bytes_name
        value: '1'
      - name: required_int64_lastgetus
        value: '3'
      - name: required_int64_lastgets
        value: '2'
      - name: repeated_message_map
        value: '4'
      item_type: enum
      name: PBNSSpeedEntry
      pos:
        line_end: 47
        line_start: 41
        source_file: /src/pdns/pdns/recursordist/rec-nsspeeds.cc
    - enumerators:
      - name: required_bytes_address
        value: '1'
      - name: required_int32_last
        value: '3'
      - name: required_float_val
        value: '2'
      item_type: enum
      name: PBNSSpeedMap
      pos:
        line_end: 54
        line_start: 49
        source_file: /src/pdns/pdns/recursordist/rec-nsspeeds.cc
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - makeNetmaskFromRPZ
  - RPZRecordToPolicy
  - loadRPZFromServer
  - getRPZZoneStats
  - incRPZFailedTransfers
  - setRPZZoneNewState
  - loadRPZFromFile
  - operator()(const string* name) const noexcept
  - dumpZoneToDisk
  - preloadRPZFIle
  - RPZTrackerIteration
  - RPZIXFRTracker
  source_file: /src/pdns/pdns/recursordist/rpzloader.cc
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields: []
      item_type: struct
      name: FilenameDeleter
      pos:
        line_end: 403
        line_start: 392
        source_file: /src/pdns/pdns/recursordist/rpzloader.cc
    typedefs: []
    union: []
- function_names:
  - AXFRRetriever::AXFRRetriever
  - AXFRRetriever::~AXFRRetriever()
  - AXFRRetriever::getChunk
  - AXFRRetriever::timeoutReadn
  - AXFRRetriever::connect
  - AXFRRetriever::getLength
  source_file: /src/pdns/pdns/recursordist/axfr-retriever.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - pruneCollection
  - moveCacheItemToFrontOrBack
  - moveCacheItemToFront
  - moveCacheItemToBack
  - pruneLockedCollectionsVector
  - pruneMutexCollectionsVector
  - purgeLockedCollectionsVector
  - purgeLockedCollectionsVector
  - purgeExactLockedCollection
  - lruReplacingInsert
  source_file: /src/pdns/pdns/recursordist/cachecleaner.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - RecordTextException::RecordTextException
  - RecordTextReader::getRemaining
  - RecordTextReader::consumeRemaining
  - RecordTextWriter::eof
  - RecordTextWriter::getRemaining
  - RecordTextWriter::consumeRemaining
  source_file: /src/pdns/pdns/recursordist/rcpgenerator.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  source_file: /src/pdns/pdns/recursordist/test-rec-tcounters_cc.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - RecordTextReader::RecordTextReader
  - RecordTextReader::xfr48BitInt
  - RecordTextReader::xfrNodeOrLocatorID
  - RecordTextReader::xfr64BitInt
  - RecordTextReader::xfr32BitInt
  - RecordTextReader::xfrTime
  - RecordTextReader::xfrIP
  - RecordTextReader::xfrIP6
  - RecordTextReader::xfrCAWithoutPort
  - RecordTextReader::xfrCAPort
  - RecordTextReader::eof
  - RecordTextReader::xfr16BitInt
  - RecordTextReader::xfr8BitInt
  - RecordTextReader::xfrName
  - isbase64
  - RecordTextReader::xfrBlobNoSpaces
  - RecordTextReader::xfrBlob
  - RecordTextReader::xfrRFC1035CharString
  - RecordTextReader::xfrSVCBValueList
  - RecordTextReader::xfrSvcParamKeyVals
  - hextodec
  - HEXDecode
  - RecordTextReader::xfrHexBlob
  - RecordTextReader::xfrBase32HexBlob
  - RecordTextWriter::xfrBase32HexBlob
  - RecordTextReader::xfrText
  - RecordTextReader::xfrUnquotedText
  - RecordTextReader::xfrType
  - RecordTextReader::skipSpaces
  - RecordTextWriter::RecordTextWriter
  - RecordTextWriter::xfrNodeOrLocatorID
  - RecordTextWriter::xfr48BitInt
  - RecordTextWriter::xfr32BitInt
  - RecordTextWriter::xfrType
  - RecordTextWriter::xfrIP
  - RecordTextWriter::xfrIP6
  - RecordTextWriter::xfrCAWithoutPort
  - RecordTextWriter::xfrCAPort
  - RecordTextWriter::xfrTime
  - RecordTextWriter::xfr16BitInt
  - RecordTextWriter::xfr8BitInt
  - RecordTextWriter::xfrName
  - RecordTextWriter::xfrBlobNoSpaces
  - RecordTextWriter::xfrBlob
  - RecordTextWriter::xfrHexBlob
  - RecordTextWriter::xfrSVCBValueList
  - RecordTextWriter::xfrSvcParamKeyVals
  - RecordTextWriter::xfrText
  - RecordTextWriter::xfrUnquotedText
  - main
  source_file: /src/pdns/pdns/recursordist/rcpgenerator.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  source_file: /src/pdns/pdns/recursordist/test-syncres_cc9.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - SortList::clear
  - SortList::getMaxOrder
  - SortList::addEntry
  - SortList::getOrderCmp
  - SortListOrderCmp::operator()(const DNSRecord& lhs, const DNSRecord& rhs) const
  source_file: /src/pdns/pdns/recursordist/sortlist.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - dns_isspace
  - dns_toupper
  - dns_tolower
  - DNSName::DNSName
  - '& operator=(const DNSName& rhs)'
  - '& operator=(DNSName&& rhs) noexcept'
  - DNSName::DNSName
  - DNSName::DNSName
  - operator!=(const DNSName& other) const
  - DNSName::toStringNoDot
  - DNSName::toStringRootDot
  - DNSName::makeLowerCase
  - DNSName::makeUsLowerCase
  - DNSName::empty
  - DNSName::isRoot
  - DNSName::hasLabels
  - DNSName::clear
  - DNSName::hash
  - '& operator+=(const DNSName& rhs)'
  - operator<(const DNSName& rhs)  const
  - operator()(const unsigned char& lhs, const unsigned char& rhs) const
  - DNSName::canonCompare
  - '& getStorage() const'
  - DNSName::sizeEstimate
  - operator()(const DNSName&a, const DNSName& b) const
  - operator+(const DNSName& lhs, const DNSName& rhs)
  - ZoneName::ZoneName
  - '& operator=(const ZoneName& rhs)'
  - '& operator=(ZoneName&& rhs) noexcept'
  - ZoneName::ZoneName
  - ZoneName::ZoneName
  - ZoneName::ZoneName
  - ZoneName::ZoneName
  - ZoneName::isPartOf
  - ZoneName::isPartOf
  - operator==(const ZoneName& rhs) const
  - operator!=(const ZoneName& rhs) const
  - ZoneName::toString
  - ZoneName::chopOff
  - ZoneName::makeLowerCase
  - ZoneName::makeUsLowerCase
  - ZoneName::empty
  - ZoneName::clear
  - ZoneName::trimToLabels
  - ZoneName::canonCompare
  - operator const DNSName&() const
  - operator DNSName&()
  - ZoneName::hasVariant
  - ZoneName::getVariant
  - operator () (const ZoneName& dn) const
  - operator () (const ZoneName& dn) const
  - operator()(const ZoneName& a, const ZoneName& b) const
  - SuffixMatchTree
  - SuffixMatchTree
  - '& operator=(const SuffixMatchTree &rhs)'
  - operator<(const SuffixMatchTree& rhs) const
  - operator<(const SuffixMatchTree& smt) const
  - operator<(const LightKey& lk) const
  - visit
  - add
  - add
  - remove
  - remove
  - lookup
  - getBestMatch
  - getNodes
  - getBestNode
  - getBestNode
  - getBestMatch
  - SuffixMatchNode
  - add
  - add
  - add
  - remove
  - remove
  - check
  - getBestMatch
  - toString
  - toVector
  - operator () (const DNSName& dn) const
  - operator () (const DNSName& dn) const
  - DNSName::operator==(const DNSName& rhs) const
  - toString
  source_file: /src/pdns/pdns/recursordist/dnsname.hh
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields: []
      item_type: struct
      name: DNSNameCompare
      pos:
        line_end: 186
        line_start: 180
        source_file: /src/pdns/pdns/recursordist/dnsname.hh
    - fields: []
      item_type: struct
      name: CanonDNSNameCompare
      pos:
        line_end: 264
        line_start: 258
        source_file: /src/pdns/pdns/recursordist/dnsname.hh
    - fields: []
      item_type: struct
      name: hash<ZoneName>
      pos:
        line_end: 382
        line_start: 380
        source_file: /src/pdns/pdns/recursordist/dnsname.hh
    - fields: []
      item_type: struct
      name: hash<ZoneName>
      pos:
        line_end: 382
        line_start: 380
        source_file: /src/pdns/pdns/recursordist/dnsname.hh
    - fields: []
      item_type: struct
      name: CanonZoneNameCompare
      pos:
        line_end: 391
        line_start: 385
        source_file: /src/pdns/pdns/recursordist/dnsname.hh
    - fields:
      - name: d_name
        type: std::string
      - name: children
        type: std::set<SuffixMatchTree, std::less<>>
      - name: endNode
        type: bool
      - name: d_value
        type: T
      item_type: struct
      name: SuffixMatchTree
      pos:
        line_end: 654
        line_start: 400
        source_file: /src/pdns/pdns/recursordist/dnsname.hh
    - fields:
      - name: d_name
        type: std::string_view
      item_type: struct
      name: LightKey
      pos:
        line_end: 450
        line_start: 435
        source_file: /src/pdns/pdns/recursordist/dnsname.hh
    - fields:
      - name: d_tree
        type: SuffixMatchTree<bool>
      - name: d_nodes
        type: std::set<DNSName>
      item_type: struct
      name: SuffixMatchNode
      pos:
        line_end: 739
        line_start: 658
        source_file: /src/pdns/pdns/recursordist/dnsname.hh
    - fields: []
      item_type: struct
      name: hash<DNSName>
      pos:
        line_end: 746
        line_start: 744
        source_file: /src/pdns/pdns/recursordist/dnsname.hh
    - fields: []
      item_type: struct
      name: hash<DNSName>
      pos:
        line_end: 746
        line_start: 744
        source_file: /src/pdns/pdns/recursordist/dnsname.hh
    - fields: []
      item_type: struct
      name: DNSNameSet
      pos:
        line_end: 773
        line_start: 767
        source_file: /src/pdns/pdns/recursordist/dnsname.hh
    typedefs:
    - item_type: typedef
      name: string_t
      pos:
        line_end: 197
        line_start: 197
        source_file: /src/pdns/pdns/recursordist/dnsname.hh
      type: container::string
    union: []
- function_names:
  - Utility::timed_connect
  - Utility::setBindAny
  - Utility::inet_ntop
  - Utility::sleep
  - Utility::usleep
  - Utility::dropGroupPrivs
  - Utility::dropUserPrivs
  - Utility::getpid
  - Utility::gettimeofday
  - Utility::writev
  - isleap
  - Utility::timegm
  source_file: /src/pdns/pdns/recursordist/unix_utility.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - BOOST_AUTO_TEST_CASE
  - increment
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  source_file: /src/pdns/pdns/recursordist/test-luawrapper.cc
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: value
        type: int
      item_type: struct
      name: Object
      pos:
        line_end: 25
        line_start: 21
        source_file: /src/pdns/pdns/recursordist/test-luawrapper.cc
    typedefs: []
    union: []
- function_names:
  - extract_bits
  - set_bits
  - unbase32hex
  - toBase32Hex
  - fromBase32Hex
  - main
  source_file: /src/pdns/pdns/recursordist/base32.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - Logging::Loggable
  - Logging::to_string
  - Logging::IterLoggable
  - Logging::to_string
  - Logging::Loggable
  - Logging::to_string
  - Logging::IterLoggable
  - Logging::to_string
  - SLOG
  - SLOG
  - VERBOSESLOG
  - SLOG
  source_file: /src/pdns/pdns/recursordist/logging.hh
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: name
        type: std::optional<std::string>
      - name: message
        type: std::string
      - name: error
        type: std::optional<std::string>
      - name: d_timestamp
        type: struct timeval
      - name: values
        type: std::map<std::string, std::string>
      - name: level
        type: size_t
      - name: d_priority
        type: Logr::Priority
      item_type: struct
      name: Entry
      pos:
        line_end: 47
        line_start: 38
        source_file: /src/pdns/pdns/recursordist/logging.hh
    - fields: []
      item_type: struct
      name: is_to_string_available
      pos:
        line_end: 60
        line_start: 58
        source_file: /src/pdns/pdns/recursordist/logging.hh
    - fields: []
      item_type: struct
      name: is_to_string_available<T, std::void_t<decltype(std::to_string(std::declval<T>()))>>
      pos:
        line_end: 66
        line_start: 64
        source_file: /src/pdns/pdns/recursordist/logging.hh
    - fields: []
      item_type: struct
      name: is_toLogString_available
      pos:
        line_end: 72
        line_start: 70
        source_file: /src/pdns/pdns/recursordist/logging.hh
    - fields: []
      item_type: struct
      name: is_toLogString_available<T, std::void_t<decltype(std::declval<T>().toLogString())>>
      pos:
        line_end: 77
        line_start: 75
        source_file: /src/pdns/pdns/recursordist/logging.hh
    - fields: []
      item_type: struct
      name: is_toStructuredLogString_available
      pos:
        line_end: 82
        line_start: 80
        source_file: /src/pdns/pdns/recursordist/logging.hh
    - fields: []
      item_type: struct
      name: is_toStructuredLogString_available<T, std::void_t<decltype(std::declval<T>().toStructuredLogString())>>
      pos:
        line_end: 87
        line_start: 85
        source_file: /src/pdns/pdns/recursordist/logging.hh
    - fields: []
      item_type: struct
      name: is_toString_available
      pos:
        line_end: 92
        line_start: 90
        source_file: /src/pdns/pdns/recursordist/logging.hh
    - fields: []
      item_type: struct
      name: is_toString_available<T, std::void_t<decltype(std::declval<T>().toString())>>
      pos:
        line_end: 97
        line_start: 95
        source_file: /src/pdns/pdns/recursordist/logging.hh
    - fields:
      - name: '& _t'
        type: T
      item_type: struct
      name: Loggable
      pos:
        line_end: 132
        line_start: 102
        source_file: /src/pdns/pdns/recursordist/logging.hh
    - fields:
      - name: '& _t1'
        type: T
      - name: '& _t2'
        type: T
      item_type: struct
      name: IterLoggable
      pos:
        line_end: 175
        line_start: 135
        source_file: /src/pdns/pdns/recursordist/logging.hh
    - fields:
      - name: name
        type: std::optional<std::string>
      - name: message
        type: std::string
      - name: error
        type: std::optional<std::string>
      - name: d_timestamp
        type: struct timeval
      - name: values
        type: std::map<std::string, std::string>
      - name: level
        type: size_t
      - name: d_priority
        type: Logr::Priority
      item_type: struct
      name: Entry
      pos:
        line_end: 47
        line_start: 38
        source_file: /src/pdns/pdns/recursordist/logging.hh
    - fields: []
      item_type: struct
      name: is_to_string_available
      pos:
        line_end: 60
        line_start: 58
        source_file: /src/pdns/pdns/recursordist/logging.hh
    - fields: []
      item_type: struct
      name: is_to_string_available<T, std::void_t<decltype(std::to_string(std::declval<T>()))>>
      pos:
        line_end: 66
        line_start: 64
        source_file: /src/pdns/pdns/recursordist/logging.hh
    - fields: []
      item_type: struct
      name: is_toLogString_available
      pos:
        line_end: 72
        line_start: 70
        source_file: /src/pdns/pdns/recursordist/logging.hh
    - fields: []
      item_type: struct
      name: is_toLogString_available<T, std::void_t<decltype(std::declval<T>().toLogString())>>
      pos:
        line_end: 77
        line_start: 75
        source_file: /src/pdns/pdns/recursordist/logging.hh
    - fields: []
      item_type: struct
      name: is_toStructuredLogString_available
      pos:
        line_end: 82
        line_start: 80
        source_file: /src/pdns/pdns/recursordist/logging.hh
    - fields: []
      item_type: struct
      name: is_toStructuredLogString_available<T, std::void_t<decltype(std::declval<T>().toStructuredLogString())>>
      pos:
        line_end: 87
        line_start: 85
        source_file: /src/pdns/pdns/recursordist/logging.hh
    - fields: []
      item_type: struct
      name: is_toString_available
      pos:
        line_end: 92
        line_start: 90
        source_file: /src/pdns/pdns/recursordist/logging.hh
    - fields: []
      item_type: struct
      name: is_toString_available<T, std::void_t<decltype(std::declval<T>().toString())>>
      pos:
        line_end: 97
        line_start: 95
        source_file: /src/pdns/pdns/recursordist/logging.hh
    - fields:
      - name: '& _t'
        type: T
      item_type: struct
      name: Loggable
      pos:
        line_end: 132
        line_start: 102
        source_file: /src/pdns/pdns/recursordist/logging.hh
    - fields:
      - name: '& _t1'
        type: T
      - name: '& _t2'
        type: T
      item_type: struct
      name: IterLoggable
      pos:
        line_end: 175
        line_start: 135
        source_file: /src/pdns/pdns/recursordist/logging.hh
    typedefs: []
    union: []
- function_names:
  - pdns::TaskQueue::push
  - pdns::TaskQueue::pop
  - pdns::ResolveTask::run
  - pdns::TaskQueue::push
  - pdns::TaskQueue::pop
  - pdns::ResolveTask::run
  - boost::hash_value
  - boost::hash_value
  source_file: /src/pdns/pdns/recursordist/taskqueue.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - nod::PersistentSBF::PersistentSBF
  - nod::PersistentSBF::PersistentSBF
  - nod::PersistentSBF::setPrefix
  - nod::PersistentSBF::add
  - nod::PersistentSBF::test
  - nod::PersistentSBF::testAndAdd
  - nod::NODDB::NODDB
  - nod::NODDB::NODDB
  - nod::NODDB::init
  - nod::NODDB::setSnapshotInterval
  - nod::NODDB::setCacheDir
  - nod::NODDB::snapshotCurrent
  - nod::UniqueResponseDB::UniqueResponseDB
  - nod::UniqueResponseDB::UniqueResponseDB
  - nod::UniqueResponseDB::init
  - nod::UniqueResponseDB::setSnapshotInterval
  - nod::UniqueResponseDB::setCacheDir
  - nod::UniqueResponseDB::snapshotCurrent
  - nod::PersistentSBF::PersistentSBF
  - nod::PersistentSBF::PersistentSBF
  - nod::PersistentSBF::setPrefix
  - nod::PersistentSBF::add
  - nod::PersistentSBF::test
  - nod::PersistentSBF::testAndAdd
  - nod::NODDB::NODDB
  - nod::NODDB::NODDB
  - nod::NODDB::init
  - nod::NODDB::setSnapshotInterval
  - nod::NODDB::setCacheDir
  - nod::NODDB::snapshotCurrent
  - nod::UniqueResponseDB::UniqueResponseDB
  - nod::UniqueResponseDB::UniqueResponseDB
  - nod::UniqueResponseDB::init
  - nod::UniqueResponseDB::setSnapshotInterval
  - nod::UniqueResponseDB::setCacheDir
  - nod::UniqueResponseDB::snapshotCurrent
  source_file: /src/pdns/pdns/recursordist/nod.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - B64Decode
  - Base64Encode
  - main
  source_file: /src/pdns/pdns/recursordist/base64.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - pdns_ucontext_t
  - '& operator=(pdns_ucontext_t const&)'
  - pdns_ucontext_t
  - '& operator=(pdns_ucontext_t&&)'
  - notifyStackSwitch
  - notifyStackSwitch
  - notifyStackSwitchToKernel
  - notifyStackSwitchDone
  source_file: /src/pdns/pdns/recursordist/mtasker_context.hh
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '* uc_mcontext'
        type: void
      - name: '* uc_link'
        type: pdns_ucontext_t
      - name: uc_stack
        type: std::vector<char, lazy_allocator<char>>
      - name: exception
        type: std::exception_ptr
      item_type: struct
      name: pdns_ucontext_t
      pos:
        line_end: 43
        line_start: 27
        source_file: /src/pdns/pdns/recursordist/mtasker_context.hh
    typedefs: []
    union: []
- function_names: []
  source_file: /src/pdns/pdns/recursordist/version.hh
  types:
    enum:
    - enumerators:
      - name: ProductAuthoritative
      - name: ProductRecursor
      item_type: enum
      name: ProductType
      pos:
        line_end: 28
        line_start: 24
        source_file: /src/pdns/pdns/recursordist/version.hh
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - intFromJsonInternal
  - intFromJson
  - intFromJson
  - uintFromJsonInternal
  - uintFromJson
  - uintFromJson
  - doubleFromJsonInternal
  - doubleFromJson
  - doubleFromJson
  - stringFromJson
  - boolFromJsonInternal
  - boolFromJson
  - boolFromJson
  source_file: /src/pdns/pdns/recursordist/json.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/pdns/pdns/recursordist/threadname.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - getCURLPtr
  - getCURLPtr
  - MiniCurl::init
  - MiniCurl::MiniCurl
  - MiniCurl::~MiniCurl()
  - MiniCurl::write_callback
  - MiniCurl::progress_callback
  - MiniCurl::progress_callback
  - extractHostFromURL
  - MiniCurl::setupURL
  - MiniCurl::getURL
  - MiniCurl::postURL
  - MiniCurl::clearHeaders
  - MiniCurl::clearHostsList
  - MiniCurl::setHeaders
  source_file: /src/pdns/pdns/recursordist/minicurl.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - DNSFilterEngine::DNSFilterEngine
  - DNSFilterEngine::Zone::findExactQNamePolicy(const DNSName& qname, DNSFilterEngine::Policy&
    pol) const
  - DNSFilterEngine::Zone::findExactNSPolicy(const DNSName& qname, DNSFilterEngine::Policy&
    pol) const
  - DNSFilterEngine::Zone::findNSIPPolicy(const ComboAddress& addr, DNSFilterEngine::Policy&
    pol) const
  - DNSFilterEngine::Zone::findResponsePolicy(const ComboAddress& addr, DNSFilterEngine::Policy&
    pol) const
  - DNSFilterEngine::Zone::findClientPolicy(const ComboAddress& addr, DNSFilterEngine::Policy&
    pol) const
  - DNSFilterEngine::Zone::findNamedPolicy(const std::unordered_map<DNSName, DNSFilterEngine::Policy>&
    polmap, const DNSName& qname, DNSFilterEngine::Policy& pol)
  - DNSFilterEngine::Zone::findExactNamedPolicy(const std::unordered_map<DNSName,
    DNSFilterEngine::Policy>& polmap, const DNSName& qname, DNSFilterEngine::Policy&
    pol)
  - DNSFilterEngine::getProcessingPolicy
  - DNSFilterEngine::getProcessingPolicy
  - DNSFilterEngine::getClientPolicy
  - DNSFilterEngine::getQueryPolicy
  - DNSFilterEngine::getPostPolicy
  - DNSFilterEngine::getPostPolicy
  - DNSFilterEngine::assureZones
  - addCustom
  - DNSFilterEngine::Zone::addNameTrigger(std::unordered_map<DNSName, Policy>& map,
    const DNSName& n, Policy&& pol, bool ignoreDuplicate, PolicyType ptype)
  - DNSFilterEngine::Zone::addNetmaskTrigger(NetmaskTree<Policy>& nmt, const Netmask&
    netmask, Policy&& pol, bool ignoreDuplicate, PolicyType ptype)
  - DNSFilterEngine::Zone::rmNameTrigger(std::unordered_map<DNSName, Policy>& map,
    const DNSName& name, const Policy& pol)
  - DNSFilterEngine::Zone::rmNetmaskTrigger(NetmaskTree<Policy>& nmt, const Netmask&
    netmask, const Policy& pol)
  - DNSFilterEngine::Zone::addClientTrigger(const Netmask& netmask, Policy&& pol,
    bool ignoreDuplicate)
  - DNSFilterEngine::Zone::addResponseTrigger(const Netmask& netmask, Policy&& pol,
    bool ignoreDuplicate)
  - DNSFilterEngine::Zone::addQNameTrigger(const DNSName& dnsname, Policy&& pol, bool
    ignoreDuplicate)
  - DNSFilterEngine::Zone::addNSTrigger(const DNSName& dnsname, Policy&& pol, bool
    ignoreDuplicate)
  - DNSFilterEngine::Zone::addNSIPTrigger(const Netmask& netmask, Policy&& pol, bool
    ignoreDuplicate)
  - DNSFilterEngine::Zone::rmClientTrigger(const Netmask& netmask, const Policy& pol)
  - DNSFilterEngine::Zone::rmResponseTrigger(const Netmask& netmask, const Policy&
    pol)
  - DNSFilterEngine::Zone::rmQNameTrigger(const DNSName& dnsname, const Policy& pol)
  - DNSFilterEngine::Zone::rmNSTrigger(const DNSName& dnsname, const Policy& pol)
  - DNSFilterEngine::Zone::rmNSIPTrigger(const Netmask& netmask, const Policy& pol)
  - DNSFilterEngine::Policy::getLogString() const
  - DNSFilterEngine::Policy::info(Logr::Priority prio, const std::shared_ptr<Logr::Logger>&
    log) const
  - DNSFilterEngine::Policy::getRecordFromCustom(const DNSName& qname, const std::shared_ptr<const
    DNSRecordContent>& custom) const
  - DNSFilterEngine::Policy::getCustomRecords(const DNSName& qname, uint16_t qtype)
    const
  - DNSFilterEngine::getKindToString
  - DNSFilterEngine::getTypeToString
  - DNSFilterEngine::Policy::getRecords(const DNSName& qname) const
  - DNSFilterEngine::Zone::dumpNamedPolicy(FILE* filePtr, const DNSName& name, const
    Policy& pol)
  - DNSFilterEngine::Zone::maskToRPZ(const Netmask& netmask)
  - DNSFilterEngine::Zone::dumpAddrPolicy(FILE* filePtr, const Netmask& netmask, const
    DNSName& name, const Policy& pol)
  - DNSFilterEngine::Zone::dump(FILE* filePtr) const
  - mergePolicyTags
  source_file: /src/pdns/pdns/recursordist/filterpo.cc
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: base
        type: int
      item_type: struct
      name: best = {-1, 0}
      pos:
        line_end: 741
        line_start: 738
        source_file: /src/pdns/pdns/recursordist/filterpo.cc
    typedefs: []
    union: []
- function_names:
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  source_file: /src/pdns/pdns/recursordist/test-syncres_cc4.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - RuntimeError
  - NetworkErr
  - SSocket
  - SConnect
  - SConnectWithTimeout
  - SBind
  - SAccept
  - SListen
  - SSetsockopt
  - setSocketIgnorePMTU
  - setSocketForcePMTU
  - setReusePort
  - HarvestTimestamp
  - HarvestDestinationAddress
  - IsAnyAddress
  - sendOnNBSocket
  - fillMSGHdr
  - ComboAddress::truncate
  - sendMsgWithOptions
  - isTCPSocketUsable
  - parseIPAndPort
  - setSocketBuffer
  - setSocketReceiveBuffer
  - setSocketSendBuffer
  - raiseSocketBufferToMax
  - raiseSocketReceiveBufferToMax
  - raiseSocketSendBufferToMax
  - getListOfNetworkInterfaces
  - getListOfAddressesOfNetworkInterface
  - getListOfAddressesOfNetworkInterface
  - convertNetmaskToBits
  - getListOfRangesOfNetworkInterface
  - getListOfRangesOfNetworkInterface
  source_file: /src/pdns/pdns/recursordist/iputils.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - pdns::settings::rec::getStrings(const std::string& name)
  - pdns::settings::rec::getForwardZones(const string& name)
  - pdns::settings::rec::getAuthZones(const string& name)
  - pdns::settings::rec::oldStyleForwardsFileToBridgeStruct(const std::string& file,
    ::rust::Vec<ForwardZone>& vec)
  - pdns::settings::rec::oldStyleAllowFileToBridgeStruct(const std::string& file,
    ::rust::Vec<::rust::String>& vec)
  - mergeYamlSubFile
  - possiblyConvertACLFile
  - fileCopy
  - possiblyConvertForwardsAndAuths
  - pdns::settings::rec::processAPIDir(const string& includeDirOnCommandLine, pdns::rust::settings::rec::Recursorsettings&
    settings, Logr::log_t log)
  - addToAllowNotifyFor
  - pdns::settings::rec::readYamlSettings(const std::string& configname, const std::string&
    includeDirOnCommandLine, Recursorsettings& settings, std::string& msg, Logr::log_t
    log)
  - pdns::settings::rec::readYamlAllowFromFile(const std::string& filename, ::rust::Vec<::rust::String>&
    vec, Logr::log_t log)
  - pdns::settings::rec::readYamlForwardZonesFile(const std::string& filename, ::rust::Vec<pdns::rust::settings::rec::ForwardZone>&
    vec, Logr::log_t log)
  - pdns::settings::rec::readYamlAllowNotifyForFile(const std::string& filename, ::rust::Vec<::rust::String>&
    vec, Logr::log_t log)
  - pdns::settings::rec::to_arg(const AuthZone& authzone)
  - pdns::settings::rec::to_arg(const ForwardZone& forwardzone)
  - pdns::settings::rec::setArgsForZoneRelatedSettings(Recursorsettings& settings)
  - pdns::settings::rec::setArgsForACLRelatedSettings(Recursorsettings& settings)
  - pdns::settings::rec::to_yaml(uint64_t& field, const std::string& val)
  - pdns::settings::rec::to_yaml(double& field, const std::string& val)
  - pdns::settings::rec::to_yaml(::rust::Vec<AuthZone>& field, const std::string&
    val)
  - pdns::settings::rec::to_yaml(::rust::Vec<ForwardZone>& field, const std::string&
    val, bool recurse)
  - simpleRustType
  - processLine
  - pdns::settings::rec::oldStyleSettingsFileToYaml(const string& fname, bool mainFile)
  - pdns::settings::rec::defaultsToYaml(bool postProcess)
  - fromLuaToRust
  - fromLuaToRust
  - fromLuaToRust
  - fromLuaToRust
  - assign
  - assign
  - cvt
  - fromLuaToRust
  - cvt
  - fromLuaToRust
  - cvt
  - cvtAdditional
  - cvtZoneMDConfig
  - fromLuaToRust
  - fromLuaToRust
  - fromLuaToRust
  - fromLuaToRust
  - fromLuaToRust
  - fromLuaToRust
  - fromLuaToRust
  - assign
  - assign
  - cvt
  - fromLuaToRust
  - cvt
  - fromLuaToRust
  - cvt
  - cvtAdditional
  - cvtZoneMDConfig
  - fromLuaToRust
  - fromLuaToRust
  - fromLuaToRust
  - pdns::settings::rec::fromLuaConfigToBridgeStruct(LuaConfigItems& luaConfig, const
    ProxyMapping& proxyMapping, pdns::rust::settings::rec::Recursorsettings& settings)
  - fromRustToLuaConfig
  - fromRustToLuaConfig
  - fromRustToLuaConfig
  - fromRustToLuaConfig
  - cvtKind
  - fromRustToLuaConfig
  - fromRustToLuaConfig
  - fromRustToLuaConfig
  - fromRustToLuaConfig
  - fromRustToLuaConfig
  - fromRustToLuaConfig
  - fromRustToOTTraceConditions
  - fromRustToLuaConfig
  - fromRustToLuaConfig
  - fromRustToLuaConfig
  - fromRustToLuaConfig
  - cvtKind
  - fromRustToLuaConfig
  - fromRustToLuaConfig
  - fromRustToLuaConfig
  - fromRustToLuaConfig
  - fromRustToLuaConfig
  - fromRustToLuaConfig
  - fromRustToOTTraceConditions
  - pdns::settings::rec::fromBridgeStructToLuaConfig(const pdns::rust::settings::rec::Recursorsettings&
    settings, LuaConfigItems& luaConfig, ProxyMapping& proxyMapping, OpenTelemetryTraceConditions&
    conditions)
  - pdns::settings::rec::luaItemSet(const pdns::rust::settings::rec::Recursorsettings&
    settings)
  - pdns::settings::rec::tryReadYAML(const string& yamlconfigname, bool setGlobals,
    bool& yamlSettings, bool& luaSettingsInYAML, rust::settings::rec::Recursorsettings&
    settings, Logr::log_t startupLog, Logr::Priority level)
  - pdns::rust::misc::Wrapper<M>::Wrapper
  - Wrapper<M>::~Wrapper()
  - '& Wrapper<M>::get() const'
  - pdns::rust::misc::qTypeStringToCode
  - pdns::rust::misc::isValidHostname
  - pdns::rust::misc::comboaddress
  - pdns::rust::misc::matches
  - pdns::rust::misc::log
  - pdns::rust::misc::error
  - pdns::rust::misc::withValue
  - pdns::rust::misc::getUUID
  - pdns::rust::misc::Wrapper<M>::Wrapper
  - Wrapper<M>::~Wrapper()
  - '& Wrapper<M>::get() const'
  - pdns::rust::misc::qTypeStringToCode
  - pdns::rust::misc::isValidHostname
  - pdns::rust::misc::comboaddress
  - pdns::rust::misc::matches
  - pdns::rust::misc::log
  - pdns::rust::misc::error
  - pdns::rust::misc::withValue
  - pdns::rust::misc::getUUID
  source_file: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsupport.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - pdns::settings::rec::to_arg
  - pdns::settings::rec::to_arg
  - pdns::settings::rec::to_arg
  - pdns::settings::rec::to_arg
  - pdns::settings::rec::to_arg
  - pdns::settings::rec::to_yaml
  - pdns::settings::rec::to_yaml
  - pdns::settings::rec::to_yaml
  - pdns::settings::rec::to_arg
  - pdns::settings::rec::to_arg
  - pdns::settings::rec::to_arg
  - pdns::settings::rec::to_arg
  - pdns::settings::rec::to_arg
  - pdns::settings::rec::to_yaml
  - pdns::settings::rec::to_yaml
  - pdns::settings::rec::to_yaml
  source_file: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsettings-private.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsettings.hh
  types:
    enum:
    - enumerators:
      - name: OK
      - name: PresentButFailed
      - name: CannotOpen
      item_type: enum
      name: YamlSettingsStatus
      pos:
        line_end: 37
        line_start: 32
        source_file: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsettings.hh
    - enumerators:
      - name: OK
      - name: PresentButFailed
      - name: CannotOpen
      item_type: enum
      name: YamlSettingsStatus
      pos:
        line_end: 37
        line_start: 32
        source_file: /src/pdns/pdns/recursordist/rec-rust-lib/cxxsettings.hh
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - pdns::rust::misc::Wrapper::Wrapper
  - pdns::rust::misc::Wrapper::Wrapper
  - pdns::rust::misc::Wrapper::Wrapper
  - '& operator=(const Wrapper&)'
  - '& operator=(Wrapper&&)'
  - pdns::rust::misc::Wrapper::Wrapper
  - pdns::rust::misc::Wrapper::Wrapper
  - pdns::rust::misc::Wrapper::Wrapper
  - '& operator=(const Wrapper&)'
  - '& operator=(Wrapper&&)'
  source_file: /src/pdns/pdns/recursordist/rec-rust-lib/rust/src/bridge.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/pdns/pdns/recursordist/ext/arc4random/arc4random.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - fatal
  source_file: /src/pdns/pdns/recursordist/ext/arc4random/log.h
  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/pdns/pdns/recursordist/ext/arc4random/chacha_private.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: input[16]
        type: u32
      item_type: struct
      name: chacha_ctx
      pos:
        line_end: 16
        line_start: 13
        source_file: /src/pdns/pdns/recursordist/ext/arc4random/chacha_private.h
    typedefs:
    - item_type: typedef
      name: u8
      pos:
        line_end: 10
        line_start: 10
        source_file: /src/pdns/pdns/recursordist/ext/arc4random/chacha_private.h
      type: unsigned char
    - item_type: typedef
      name: u32
      pos:
        line_end: 11
        line_start: 11
        source_file: /src/pdns/pdns/recursordist/ext/arc4random/chacha_private.h
      type: unsigned int
    union: []
- function_names:
  - seed_from_prngd
  source_file: /src/pdns/pdns/recursordist/ext/arc4random/includes.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - arc4random_uniform
  source_file: /src/pdns/pdns/recursordist/ext/arc4random/arc4random_uniform.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - _ssh_compat_getentropy
  source_file: /src/pdns/pdns/recursordist/ext/arc4random/bsd-getentropy.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: SSH_RANDOM_DEV
      pos:
        line_end: 22
        line_start: 21
        source_file: /src/pdns/pdns/recursordist/ext/arc4random/bsd-getentropy.c
      type_or_value: '"/dev/urandom"'
    structs: []
    typedefs: []
    union: []
- function_names:
  - explicit_bzero
  - explicit_bzero
  - explicit_bzero
  source_file: /src/pdns/pdns/recursordist/ext/arc4random/explicit_bzero.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - getentropy
  - minimum
  - _rs_init
  - _rs_stir
  - _rs_stir_if_needed
  - _rs_rekey
  - _rs_random_buf
  - _rs_random_u32
  - arc4random
  - arc4random_buf
  - arc4random_buf
  source_file: /src/pdns/pdns/recursordist/ext/arc4random/arc4random.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: inline
      pos:
        line_end: 64
        line_start: 63
        source_file: /src/pdns/pdns/recursordist/ext/arc4random/arc4random.c
      type_or_value: __inline
    - item_type: preproc_def
      name: KEYSZ
      pos:
        line_end: 69
        line_start: 68
        source_file: /src/pdns/pdns/recursordist/ext/arc4random/arc4random.c
      type_or_value: '32'
    - item_type: preproc_def
      name: IVSZ
      pos:
        line_end: 70
        line_start: 69
        source_file: /src/pdns/pdns/recursordist/ext/arc4random/arc4random.c
      type_or_value: '8'
    - item_type: preproc_def
      name: BLOCKSZ
      pos:
        line_end: 71
        line_start: 70
        source_file: /src/pdns/pdns/recursordist/ext/arc4random/arc4random.c
      type_or_value: '64'
    - item_type: preproc_def
      name: RSBUFSZ
      pos:
        line_end: 72
        line_start: 71
        source_file: /src/pdns/pdns/recursordist/ext/arc4random/arc4random.c
      type_or_value: (16*BLOCKSZ)
    - item_type: preproc_def
      name: REKEY_BASE
      pos:
        line_end: 74
        line_start: 73
        source_file: /src/pdns/pdns/recursordist/ext/arc4random/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: 79
        line_start: 76
        source_file: /src/pdns/pdns/recursordist/ext/arc4random/arc4random.c
    - fields:
      - name: rs_chacha
        type: chacha_ctx
      - name: rs_buf[RSBUFSZ]
        type: u_char
      item_type: struct
      name: _rsx
      pos:
        line_end: 85
        line_start: 82
        source_file: /src/pdns/pdns/recursordist/ext/arc4random/arc4random.c
    typedefs: []
    union: []
- function_names:
  - _ARC4_LOCK
  - _ARC4_UNLOCK
  - _getentropy_fail
  - _rs_forkhandler
  - _rs_forkdetect
  - _rs_allocate
  source_file: /src/pdns/pdns/recursordist/ext/arc4random/arc4random.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - YaHTTP::URL::parseSchema
  - YaHTTP::URL::parseHost
  - YaHTTP::URL::parseUserPass
  - YaHTTP::URL::parsePath
  - YaHTTP::URL::parseParameters
  - YaHTTP::URL::parseAnchor
  - YaHTTP::URL::initialize
  - YaHTTP::URL::to_string
  - YaHTTP::URL::URL
  - YaHTTP::URL::URL
  - YaHTTP::URL::URL
  - YaHTTP::URL::parse
  - '& operator<<(std::ostream& os, const URL& url)'
  - YaHTTP::URL::parseSchema
  - YaHTTP::URL::parseHost
  - YaHTTP::URL::parseUserPass
  - YaHTTP::URL::parsePath
  - YaHTTP::URL::parseParameters
  - YaHTTP::URL::parseAnchor
  - YaHTTP::URL::initialize
  - YaHTTP::URL::to_string
  - YaHTTP::URL::URL
  - YaHTTP::URL::URL
  - YaHTTP::URL::URL
  - YaHTTP::URL::parse
  - '& operator<<(std::ostream& os, const URL& url)'
  source_file: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/url.hpp
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: YAHTTP_MAX_URL_LENGTH
      pos:
        line_end: 8
        line_start: 7
        source_file: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/url.hpp
      type_or_value: '2048'
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/yahttp.hpp
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - YaHTTP::Cookie::Cookie
  - YaHTTP::Cookie::Cookie
  - '& operator=(const Cookie &rhs)'
  - YaHTTP::Cookie::str
  - YaHTTP::CookieJar::CookieJar
  - YaHTTP::CookieJar::CookieJar
  - '& operator=(const CookieJar & rhs)'
  - YaHTTP::CookieJar::clear
  - YaHTTP::CookieJar::keyValuePair
  - YaHTTP::CookieJar::parseCookieHeader
  - YaHTTP::CookieJar::parseSetCookieHeader
  - YaHTTP::Cookie::Cookie
  - YaHTTP::Cookie::Cookie
  - '& operator=(const Cookie &rhs)'
  - YaHTTP::Cookie::str
  - YaHTTP::CookieJar::CookieJar
  - YaHTTP::CookieJar::CookieJar
  - '& operator=(const CookieJar & rhs)'
  - YaHTTP::CookieJar::clear
  - YaHTTP::CookieJar::keyValuePair
  - YaHTTP::CookieJar::parseCookieHeader
  - YaHTTP::CookieJar::parseSetCookieHeader
  source_file: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/cookie.hpp
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - operator() (const std::string& lhs, const std::string& rhs) const
  - DateTime
  - initialize
  - setLocal
  - setGm
  - fromLocaltime
  - fromGmtime
  - fromTm
  - validate
  - rfc_str
  - cookie_str
  - parseCookie
  - unixtime
  - Utility::decodeURL
  - Utility::encodeURL
  - Utility::encodeURL
  - Utility::status2text
  - Utility::parseUrlParameters
  - Utility::iequals
  - Utility::iequals
  - Utility::trimLeft
  - Utility::trimRight
  - Utility::trim
  - Utility::camelizeHeader
  source_file: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: YAHTTP_MAX_REQUEST_LINE_SIZE
      pos:
        line_end: 4
        line_start: 3
        source_file: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp
      type_or_value: '8192'
    - item_type: preproc_def
      name: YAHTTP_MAX_REQUEST_FIELDS
      pos:
        line_end: 8
        line_start: 7
        source_file: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp
      type_or_value: '100'
    structs:
    - fields: []
      item_type: struct
      name: ASCIICINullSafeComparator
      pos:
        line_end: 35
        line_start: 24
        source_file: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp
    typedefs:
    - item_type: typedef
      name: strstr_map_t
      pos:
        line_end: 37
        line_start: 37
        source_file: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/utility.hpp
      type: map<std::string,std::string,ASCIICINullSafeComparator>
    union: []
- function_names: []
  source_file: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/yahttp-config.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - YaHTTP::Router::Router
  - YaHTTP::Router::Map
  - YaHTTP::Router::Get
  - YaHTTP::Router::Post
  - YaHTTP::Router::Put
  - YaHTTP::Router::Patch
  - YaHTTP::Router::Delete
  - YaHTTP::Router::Any
  - YaHTTP::Router::Match
  - YaHTTP::Router::Route
  - YaHTTP::Router::PrintRoutes
  - YaHTTP::Router::URLFor
  - '& GetRoutes()'
  - YaHTTP::Router::Clear
  - YaHTTP::Router::Router
  - YaHTTP::Router::Map
  - YaHTTP::Router::Get
  - YaHTTP::Router::Post
  - YaHTTP::Router::Put
  - YaHTTP::Router::Patch
  - YaHTTP::Router::Delete
  - YaHTTP::Router::Any
  - YaHTTP::Router::Match
  - YaHTTP::Router::Route
  - YaHTTP::Router::PrintRoutes
  - YaHTTP::Router::URLFor
  - '& GetRoutes()'
  - YaHTTP::Router::Clear
  source_file: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.hpp
  types:
    enum:
    - enumerators:
      - name: RouteFound
        value: '1'
      - name: RouteNotFound
        value: '0'
      - name: RouteNoMethod
        value: '-1'
      item_type: enum
      name: RoutingResult
      pos:
        line_end: 31
        line_start: 27
        source_file: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.hpp
    - enumerators:
      - name: RouteFound
        value: '1'
      - name: RouteNotFound
        value: '0'
      - name: RouteNoMethod
        value: '-1'
      item_type: enum
      name: RoutingResult
      pos:
        line_end: 31
        line_start: 27
        source_file: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.hpp
    preproc_defs:
    - item_type: preproc_def
      name: IGNORE
      pos:
        line_end: 9
        line_start: 8
        source_file: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.hpp
      type_or_value: std::ignore
    - item_type: preproc_def
      name: IGNORE
      pos:
        line_end: 15
        line_start: 14
        source_file: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.hpp
      type_or_value: boost::tuples::ignore
    structs: []
    typedefs:
    - item_type: typedef
      name: THandlerFunction
      pos:
        line_end: 33
        line_start: 33
        source_file: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.hpp
      type: function <void(Request* req, Response* resp)>
    - item_type: typedef
      name: TRoute
      pos:
        line_end: 34
        line_start: 34
        source_file: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.hpp
      type: tuple<std::string, std::string, THandlerFunction, std::string>
    - item_type: typedef
      name: TRouteList
      pos:
        line_end: 35
        line_start: 35
        source_file: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.hpp
      type: vector<TRoute>
    - item_type: typedef
      name: TDelim
      pos:
        line_end: 36
        line_start: 36
        source_file: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.hpp
      type: tuple<int,int>
    - item_type: typedef
      name: THandlerFunction
      pos:
        line_end: 33
        line_start: 33
        source_file: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.hpp
      type: function <void(Request* req, Response* resp)>
    - item_type: typedef
      name: TRoute
      pos:
        line_end: 34
        line_start: 34
        source_file: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.hpp
      type: tuple<std::string, std::string, THandlerFunction, std::string>
    - item_type: typedef
      name: TRouteList
      pos:
        line_end: 35
        line_start: 35
        source_file: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.hpp
      type: vector<TRoute>
    - item_type: typedef
      name: TDelim
      pos:
        line_end: 36
        line_start: 36
        source_file: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.hpp
      type: tuple<int,int>
    union: []
- function_names:
  - YaHTTP::isspace
  - YaHTTP::isspace
  - YaHTTP::isxdigit
  - YaHTTP::isxdigit
  - YaHTTP::isdigit
  - YaHTTP::isdigit
  - YaHTTP::isalnum
  - YaHTTP::isalnum
  - YaHTTP::AsyncLoader<T>::feed
  - YaHTTP::HTTPBase::write
  - '& operator<<(std::ostream& os, const Response &resp)'
  - '& operator>>(std::istream& is, Response &resp)'
  - '& operator<<(std::ostream& os, const Request &req)'
  - '& operator>>(std::istream& is, Request &req)'
  - YaHTTP::isspace
  - YaHTTP::isspace
  - YaHTTP::isxdigit
  - YaHTTP::isxdigit
  - YaHTTP::isdigit
  - YaHTTP::isdigit
  - YaHTTP::isalnum
  - YaHTTP::isalnum
  - YaHTTP::AsyncLoader<T>::feed
  - YaHTTP::HTTPBase::write
  - '& operator<<(std::ostream& os, const Response &resp)'
  - '& operator>>(std::istream& is, Response &resp)'
  - '& operator<<(std::ostream& os, const Request &req)'
  - '& operator>>(std::istream& is, Request &req)'
  source_file: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.cpp
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - YaHTTP::Error::Error
  - YaHTTP::Error::Error
  - ~Error() throw()
  - YaHTTP::Error::what
  - YaHTTP::ParseError::ParseError
  - YaHTTP::ParseError::ParseError
  - YaHTTP::Error::Error
  - YaHTTP::Error::Error
  - ~Error() throw()
  - YaHTTP::Error::what
  - YaHTTP::ParseError::ParseError
  - YaHTTP::ParseError::ParseError
  source_file: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/exception.hpp
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - YaHTTP::Router::map
  - YaHTTP::Router::match
  - YaHTTP::Router::route
  - YaHTTP::Router::printRoutes
  - YaHTTP::Router::urlFor
  - YaHTTP::Router::map
  - YaHTTP::Router::match
  - YaHTTP::Router::route
  - YaHTTP::Router::printRoutes
  - YaHTTP::Router::urlFor
  source_file: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/router.cpp
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - YaHTTP::HTTPBase::SendBodyRender::SendBodyRender
  - operator()(const HTTPBase *doc, std::ostream& os, bool chunked) const
  - YaHTTP::HTTPBase::SendFileRender::SendFileRender
  - operator()(const HTTPBase *doc __attribute__((unused)), std::ostream& os, bool
    chunked) const
  - YaHTTP::HTTPBase::HTTPBase
  - ~HTTPBase()
  - YaHTTP::HTTPBase::initialize
  - YaHTTP::HTTPBase::HTTPBase
  - '& operator=(const HTTPBase& rhs)'
  - '& GET()'
  - '& POST()'
  - '& COOKIES()'
  - YaHTTP::HTTPBase::versionStr
  - YaHTTP::HTTPBase::str
  - YaHTTP::Response::Response
  - YaHTTP::Response::Response
  - '& operator=(const HTTPBase& rhs) override'
  - YaHTTP::Response::initialize
  - YaHTTP::Response::initialize
  - YaHTTP::Request::Request
  - YaHTTP::Request::Request
  - '& operator=(const HTTPBase& rhs) override'
  - YaHTTP::Request::initialize
  - YaHTTP::Request::initialize
  - YaHTTP::Request::setup
  - YaHTTP::Request::preparePost
  - YaHTTP::AsyncLoader::initialize
  - YaHTTP::AsyncLoader::ready
  - YaHTTP::AsyncLoader::finalize
  - YaHTTP::HTTPBase::SendBodyRender::SendBodyRender
  - operator()(const HTTPBase *doc, std::ostream& os, bool chunked) const
  - YaHTTP::HTTPBase::SendFileRender::SendFileRender
  - operator()(const HTTPBase *doc __attribute__((unused)), std::ostream& os, bool
    chunked) const
  - YaHTTP::HTTPBase::HTTPBase
  - ~HTTPBase()
  - YaHTTP::HTTPBase::initialize
  - YaHTTP::HTTPBase::HTTPBase
  - '& operator=(const HTTPBase& rhs)'
  - '& GET()'
  - '& POST()'
  - '& COOKIES()'
  - YaHTTP::HTTPBase::versionStr
  - YaHTTP::HTTPBase::str
  - YaHTTP::Response::Response
  - YaHTTP::Response::Response
  - '& operator=(const HTTPBase& rhs) override'
  - YaHTTP::Response::initialize
  - YaHTTP::Response::initialize
  - YaHTTP::Request::Request
  - YaHTTP::Request::Request
  - '& operator=(const HTTPBase& rhs) override'
  - YaHTTP::Request::initialize
  - YaHTTP::Request::initialize
  - YaHTTP::Request::setup
  - YaHTTP::Request::preparePost
  - YaHTTP::AsyncLoader::initialize
  - YaHTTP::AsyncLoader::ready
  - YaHTTP::AsyncLoader::finalize
  source_file: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: YAHTTP_MAX_HEADER_SIZE
      pos:
        line_end: 24
        line_start: 23
        source_file: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp
      type_or_value: (100 * 1024)
    - item_type: preproc_def
      name: YAHTTP_MAX_REQUEST_SIZE
      pos:
        line_end: 28
        line_start: 27
        source_file: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp
      type_or_value: '2097152'
    - item_type: preproc_def
      name: YAHTTP_MAX_RESPONSE_SIZE
      pos:
        line_end: 32
        line_start: 31
        source_file: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp
      type_or_value: '2097152'
    - item_type: preproc_def
      name: YAHTTP_TYPE_REQUEST
      pos:
        line_end: 35
        line_start: 34
        source_file: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp
      type_or_value: '1'
    - item_type: preproc_def
      name: YAHTTP_TYPE_RESPONSE
      pos:
        line_end: 36
        line_start: 35
        source_file: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp
      type_or_value: '2'
    structs: []
    typedefs:
    - item_type: typedef
      name: strcookie_map_t
      pos:
        line_end: 38
        line_start: 38
        source_file: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp
      type: map<std::string,Cookie,ASCIICINullSafeComparator>
    - item_type: typedef
      name: strcookie_map_t
      pos:
        line_end: 38
        line_start: 38
        source_file: /src/pdns/pdns/recursordist/ext/yahttp/yahttp/reqresp.hpp
      type: map<std::string,Cookie,ASCIICINullSafeComparator>
    union: []
- function_names:
  - operator==(NullStruct /*unused*/) const
  - operator<(NullStruct /*unused*/) const
  - json11::dump
  - json11::dump
  - json11::dump
  - json11::dump
  - json11::dump
  - json11::dump
  - json11::dump
  - json11::Json::dump
  - json11::Value::Value
  - json11::Value::Value
  - json11::Value::type
  - json11::Value::equals
  - json11::Value::less
  - json11::Value::dump
  - json11::JsonDouble::number_value
  - json11::JsonDouble::int_value
  - json11::JsonDouble::equals
  - json11::JsonDouble::less
  - json11::JsonDouble::JsonDouble
  - json11::JsonInt::number_value
  - json11::JsonInt::int_value
  - json11::JsonInt::equals
  - json11::JsonInt::less
  - json11::JsonInt::JsonInt
  - json11::JsonBoolean::bool_value
  - json11::JsonBoolean::JsonBoolean
  - '&string_value() const override'
  - json11::JsonString::JsonString
  - json11::JsonString::JsonString
  - '&array_items() const override'
  - json11::JsonArray::JsonArray
  - json11::JsonArray::JsonArray
  - '&object_items() const override'
  - json11::JsonObject::JsonObject
  - json11::JsonObject::JsonObject
  - json11::JsonNull::JsonNull
  - json11::Statics
  - json11::statics
  - json11::static_null
  - json11::Json::Json
  - json11::Json::Json
  - json11::Json::Json
  - json11::Json::Json
  - json11::Json::Json
  - json11::Json::Json
  - json11::Json::Json
  - json11::Json::Json
  - json11::Json::Json
  - json11::Json::Json
  - json11::Json::Json
  - json11::Json::Json
  - json11::Json::type
  - json11::Json::number_value
  - json11::Json::int_value
  - json11::Json::bool_value
  - '& Json::string_value()               const'
  - '& Json::array_items()          const'
  - '& Json::object_items()    const'
  - '& Json::operator[] (size_t i)          const'
  - '& Json::operator[] (const string &key) const'
  - json11::JsonValue::number_value
  - json11::JsonValue::int_value
  - json11::JsonValue::bool_value
  - '&            JsonValue::string_value()              const'
  - '&      JsonValue::array_items()               const'
  - '& JsonValue::object_items()              const'
  - '&              JsonValue::operator[] (size_t)         const'
  - '&              JsonValue::operator[] (const string &) const'
  - '& JsonObject::operator[] (const string &key) const'
  - '& JsonArray::operator[] (size_t i) const'
  - Json::operator== (const Json &other) const
  - Json::operator< (const Json &other) const
  - json11::esc
  - json11::in_range
  - json11::fail
  - json11::fail
  - json11::consume_whitespace
  - json11::consume_comment
  - json11::consume_garbage
  - json11::get_next_token
  - json11::encode_utf8
  - json11::parse_string
  - json11::parse_number
  - json11::expect
  - json11::parse_json
  - json11::fail
  - json11::fail
  - json11::consume_whitespace
  - json11::consume_comment
  - json11::consume_garbage
  - json11::get_next_token
  - json11::encode_utf8
  - json11::parse_string
  - json11::parse_number
  - json11::expect
  - json11::parse_json
  - json11::Json::parse
  - json11::Json::parse_multi
  - json11::Json::has_shape
  - operator==(NullStruct /*unused*/) const
  - operator<(NullStruct /*unused*/) const
  - json11::dump
  - json11::dump
  - json11::dump
  - json11::dump
  - json11::dump
  - json11::dump
  - json11::dump
  - json11::Json::dump
  - json11::Value::Value
  - json11::Value::Value
  - json11::Value::type
  - json11::Value::equals
  - json11::Value::less
  - json11::Value::dump
  - json11::JsonDouble::number_value
  - json11::JsonDouble::int_value
  - json11::JsonDouble::equals
  - json11::JsonDouble::less
  - json11::JsonDouble::JsonDouble
  - json11::JsonInt::number_value
  - json11::JsonInt::int_value
  - json11::JsonInt::equals
  - json11::JsonInt::less
  - json11::JsonInt::JsonInt
  - json11::JsonBoolean::bool_value
  - json11::JsonBoolean::JsonBoolean
  - '&string_value() const override'
  - json11::JsonString::JsonString
  - json11::JsonString::JsonString
  - '&array_items() const override'
  - json11::JsonArray::JsonArray
  - json11::JsonArray::JsonArray
  - '&object_items() const override'
  - json11::JsonObject::JsonObject
  - json11::JsonObject::JsonObject
  - json11::JsonNull::JsonNull
  - json11::Statics
  - json11::statics
  - json11::static_null
  - json11::Json::Json
  - json11::Json::Json
  - json11::Json::Json
  - json11::Json::Json
  - json11::Json::Json
  - json11::Json::Json
  - json11::Json::Json
  - json11::Json::Json
  - json11::Json::Json
  - json11::Json::Json
  - json11::Json::Json
  - json11::Json::Json
  - json11::Json::type
  - json11::Json::number_value
  - json11::Json::int_value
  - json11::Json::bool_value
  - '& Json::string_value()               const'
  - '& Json::array_items()          const'
  - '& Json::object_items()    const'
  - '& Json::operator[] (size_t i)          const'
  - '& Json::operator[] (const string &key) const'
  - json11::JsonValue::number_value
  - json11::JsonValue::int_value
  - json11::JsonValue::bool_value
  - '&            JsonValue::string_value()              const'
  - '&      JsonValue::array_items()               const'
  - '& JsonValue::object_items()              const'
  - '&              JsonValue::operator[] (size_t)         const'
  - '&              JsonValue::operator[] (const string &) const'
  - '& JsonObject::operator[] (const string &key) const'
  - '& JsonArray::operator[] (size_t i) const'
  - Json::operator== (const Json &other) const
  - Json::operator< (const Json &other) const
  - json11::esc
  - json11::in_range
  - json11::fail
  - json11::fail
  - json11::consume_whitespace
  - json11::consume_comment
  - json11::consume_garbage
  - json11::get_next_token
  - json11::encode_utf8
  - json11::parse_string
  - json11::parse_number
  - json11::expect
  - json11::parse_json
  - json11::fail
  - json11::fail
  - json11::consume_whitespace
  - json11::consume_comment
  - json11::consume_garbage
  - json11::get_next_token
  - json11::encode_utf8
  - json11::parse_string
  - json11::parse_number
  - json11::expect
  - json11::parse_json
  - json11::Json::parse
  - json11::Json::parse_multi
  - json11::Json::has_shape
  source_file: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields: []
      item_type: struct
      name: NullStruct
      pos:
        line_end: 48
        line_start: 45
        source_file: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    - fields:
      - name: 'null'
        type: std::shared_ptr<JsonValue>
      - name: t
        type: std::shared_ptr<JsonValue>
      - name: f
        type: std::shared_ptr<JsonValue>
      - name: empty_string
        type: string
      - name: empty_vector
        type: vector<Json>
      - name: empty_map
        type: map<string, Json>
      item_type: struct
      name: Statics
      pos:
        line_end: 237
        line_start: 229
        source_file: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    - fields:
      - name: '&str'
        type: string
      - name: i
        type: size_t
      - name: '&err'
        type: string
      - name: failed
        type: bool
      - name: strategy
        type: JsonParse
      item_type: struct
      name: JsonParser
      pos:
        line_end: 739
        line_start: 352
        source_file: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    - fields:
      - name: '&str'
        type: string
      - name: i
        type: size_t
      - name: '&err'
        type: string
      - name: failed
        type: bool
      - name: strategy
        type: JsonParse
      item_type: struct
      name: JsonParser
      pos:
        line_end: 739
        line_start: 352
        source_file: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    - fields: []
      item_type: struct
      name: NullStruct
      pos:
        line_end: 48
        line_start: 45
        source_file: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    - fields:
      - name: 'null'
        type: std::shared_ptr<JsonValue>
      - name: t
        type: std::shared_ptr<JsonValue>
      - name: f
        type: std::shared_ptr<JsonValue>
      - name: empty_string
        type: string
      - name: empty_vector
        type: vector<Json>
      - name: empty_map
        type: map<string, Json>
      item_type: struct
      name: Statics
      pos:
        line_end: 237
        line_start: 229
        source_file: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    - fields:
      - name: '&str'
        type: string
      - name: i
        type: size_t
      - name: '&err'
        type: string
      - name: failed
        type: bool
      - name: strategy
        type: JsonParse
      item_type: struct
      name: JsonParser
      pos:
        line_end: 739
        line_start: 352
        source_file: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    - fields:
      - name: '&str'
        type: string
      - name: i
        type: size_t
      - name: '&err'
        type: string
      - name: failed
        type: bool
      - name: strategy
        type: JsonParse
      item_type: struct
      name: JsonParser
      pos:
        line_end: 739
        line_start: 352
        source_file: /src/pdns/pdns/recursordist/ext/json11/json11.cpp
    typedefs: []
    union: []
- function_names:
  - json11::Json::Json
  - json11::Json::Json
  - json11::Json::Json
  - json11::Json::Json
  - json11::Json::is_null
  - json11::Json::is_number
  - json11::Json::is_bool
  - json11::Json::is_string
  - json11::Json::is_array
  - json11::Json::is_object
  - json11::Json::dump
  - json11::Json::parse
  - json11::Json::parse_multi
  - operator!= (const Json &rhs) const
  - operator<= (const Json &rhs) const
  - operator>  (const Json &rhs) const
  - operator>= (const Json &rhs) const
  - ~JsonValue()
  - json11::Json::Json
  - json11::Json::Json
  - json11::Json::Json
  - json11::Json::Json
  - json11::Json::is_null
  - json11::Json::is_number
  - json11::Json::is_bool
  - json11::Json::is_string
  - json11::Json::is_array
  - json11::Json::is_object
  - json11::Json::dump
  - json11::Json::parse
  - json11::Json::parse_multi
  - operator!= (const Json &rhs) const
  - operator<= (const Json &rhs) const
  - operator>  (const Json &rhs) const
  - operator>= (const Json &rhs) const
  - ~JsonValue()
  source_file: /src/pdns/pdns/recursordist/ext/json11/json11.hpp
  types:
    enum:
    - enumerators:
      - name: STANDARD
      - name: COMMENTS
      item_type: enum
      name: JsonParse
      pos:
        line_end: 74
        line_start: 72
        source_file: /src/pdns/pdns/recursordist/ext/json11/json11.hpp
    - enumerators:
      - name: NUL
      - name: ARRAY
      - name: NUMBER
      - name: STRING
      - name: BOOL
      - name: OBJECT
      item_type: enum
      name: Type
      pos:
        line_end: 83
        line_start: 81
        source_file: /src/pdns/pdns/recursordist/ext/json11/json11.hpp
    - enumerators:
      - name: STANDARD
      - name: COMMENTS
      item_type: enum
      name: JsonParse
      pos:
        line_end: 74
        line_start: 72
        source_file: /src/pdns/pdns/recursordist/ext/json11/json11.hpp
    - enumerators:
      - name: NUL
      - name: ARRAY
      - name: NUMBER
      - name: STRING
      - name: BOOL
      - name: OBJECT
      item_type: enum
      name: Type
      pos:
        line_end: 83
        line_start: 81
        source_file: /src/pdns/pdns/recursordist/ext/json11/json11.hpp
    preproc_defs:
    - item_type: preproc_def
      name: noexcept
      pos:
        line_end: 62
        line_start: 61
        source_file: /src/pdns/pdns/recursordist/ext/json11/json11.hpp
      type_or_value: throw()
    - item_type: preproc_def
      name: snprintf
      pos:
        line_end: 66
        line_start: 65
        source_file: /src/pdns/pdns/recursordist/ext/json11/json11.hpp
      type_or_value: _snprintf_s
    structs: []
    typedefs:
    - item_type: typedef
      name: array
      pos:
        line_end: 86
        line_start: 86
        source_file: /src/pdns/pdns/recursordist/ext/json11/json11.hpp
      type: vector<Json>
    - item_type: typedef
      name: object
      pos:
        line_end: 87
        line_start: 87
        source_file: /src/pdns/pdns/recursordist/ext/json11/json11.hpp
      type: map<std::string, Json>
    - item_type: typedef
      name: shape
      pos:
        line_end: 203
        line_start: 203
        source_file: /src/pdns/pdns/recursordist/ext/json11/json11.hpp
      type: initializer_list<std::pair<std::string, Type>>
    - item_type: typedef
      name: array
      pos:
        line_end: 86
        line_start: 86
        source_file: /src/pdns/pdns/recursordist/ext/json11/json11.hpp
      type: vector<Json>
    - item_type: typedef
      name: object
      pos:
        line_end: 87
        line_start: 87
        source_file: /src/pdns/pdns/recursordist/ext/json11/json11.hpp
      type: map<std::string, Json>
    - item_type: typedef
      name: shape
      pos:
        line_end: 203
        line_start: 203
        source_file: /src/pdns/pdns/recursordist/ext/json11/json11.hpp
      type: initializer_list<std::pair<std::string, Type>>
    union: []
- function_names:
  - rotl32
  - ROTL32
  - BIG_CONSTANT
  - BYTESWAP
  - BYTESWAP
  - BYTESWAP
  - BYTESWAP
  - getblock
  source_file: /src/pdns/pdns/recursordist/ext/probds/murmur3.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: FORCE_INLINE
      pos:
        line_end: 33
        line_start: 32
        source_file: /src/pdns/pdns/recursordist/ext/probds/murmur3.h
      type_or_value: __attribute__((always_inline))
    structs: []
    typedefs:
    - item_type: typedef
      name: uint8_t
      pos:
        line_end: 20
        line_start: 20
        source_file: /src/pdns/pdns/recursordist/ext/probds/murmur3.h
      type: unsigned char
    - item_type: typedef
      name: uint32_t
      pos:
        line_end: 21
        line_start: 21
        source_file: /src/pdns/pdns/recursordist/ext/probds/murmur3.h
      type: unsigned long
    - item_type: typedef
      name: uint64_t
      pos:
        line_end: 22
        line_start: 22
        source_file: /src/pdns/pdns/recursordist/ext/probds/murmur3.h
      type: unsigned __int64
    union: []
- function_names:
  - fmix32
  - MurmurHash3_x86_32
  source_file: /src/pdns/pdns/recursordist/ext/probds/murmur3.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - SSqlException::SSqlException
  - SSqlException::txtReason
  - SSqlStatement::bind
  - SSqlStatement::bind
  - SSql::setLog
  - SSql::isConnectionUsable
  - ~SSql()
  source_file: /src/pdns/pdns/backends/gsql/ssql.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - ~GSQLBackend() override
  - GSQLBackend::setDB
  - GSQLBackend::allocateStatements
  - GSQLBackend::freeStatements
  - GSQLBackend::isConnectionUsable
  - GSQLBackend::reconnectIfNeeded
  - GSQLBackend::reconnect
  - GSQLBackend::inTransaction
  source_file: /src/pdns/pdns/backends/gsql/gsqlbackend.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - ASSERT_ROW_COLUMNS
  - GSQLBackend::GSQLBackend
  - GSQLBackend::setNotified
  - GSQLBackend::setLastCheck
  - GSQLBackend::setStale
  - GSQLBackend::setFresh
  - GSQLBackend::setPrimaries
  - GSQLBackend::setKind
  - GSQLBackend::setOptions
  - GSQLBackend::setCatalog
  - GSQLBackend::setAccount
  - GSQLBackend::getDomainInfo
  - GSQLBackend::getUnfreshSecondaryInfos
  - GSQLBackend::getUpdatedPrimaries
  - GSQLBackend::getCatalogMembers
  - GSQLBackend::updateDNSSECOrderNameAndAuth
  - GSQLBackend::updateEmptyNonTerminals
  - GSQLBackend::getCapabilities
  - GSQLBackend::getBeforeAndAfterNamesAbsolute
  - GSQLBackend::addDomainKey
  - GSQLBackend::activateDomainKey
  - GSQLBackend::deactivateDomainKey
  - GSQLBackend::publishDomainKey
  - GSQLBackend::unpublishDomainKey
  - GSQLBackend::removeDomainKey
  - GSQLBackend::getTSIGKey
  - GSQLBackend::setTSIGKey
  - GSQLBackend::deleteTSIGKey
  - GSQLBackend::getTSIGKeys
  - GSQLBackend::getDomainKeys
  - GSQLBackend::getAllDomainMetadata
  - GSQLBackend::getDomainMetadata
  - GSQLBackend::setDomainMetadata
  - GSQLBackend::lookup
  - GSQLBackend::APILookup
  - GSQLBackend::list
  - GSQLBackend::listSubZone
  - GSQLBackend::get
  - GSQLBackend::get_unsafe
  - GSQLBackend::autoPrimaryAdd
  - GSQLBackend::autoPrimaryRemove
  - GSQLBackend::autoPrimariesList
  - GSQLBackend::autoPrimaryBackend
  - GSQLBackend::createDomain
  - GSQLBackend::createSecondaryDomain
  - GSQLBackend::deleteDomain
  - GSQLBackend::getAllDomains
  - GSQLBackend::replaceRRSet
  - GSQLBackend::feedRecord
  - GSQLBackend::feedEnts
  - GSQLBackend::feedEnts3
  - GSQLBackend::startTransaction
  - GSQLBackend::commitTransaction
  - GSQLBackend::abortTransaction
  - GSQLBackend::listComments
  - GSQLBackend::getComment
  - GSQLBackend::feedComment
  - GSQLBackend::replaceComments
  - GSQLBackend::directBackendCmd
  - GSQLBackend::pattern2SQLPattern
  - GSQLBackend::searchRecords
  - GSQLBackend::searchComments
  - GSQLBackend::extractRecord
  - GSQLBackend::extractRecord_unsafe
  - GSQLBackend::extractComment
  - SSqlStatement::~SSqlStatement()
  source_file: /src/pdns/pdns/backends/gsql/gsqlbackend.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - gSQLite3Backend::gSQLite3Backend
  - gSQLite3Factory::gSQLite3Factory
  - gSQLite3Factory::declareArguments
  - gSQLite3Factory::make
  - gSQLite3Loader::gSQLite3Loader
  source_file: /src/pdns/modules/gsqlite3backend/gsqlite3backend.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/pdns/modules/gsqlite3backend/gsqlite3backend.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - keyConv
  - keyConv
  - LMDBBackend::lookup
  - LMDBBackend::APILookup
  - LMDBBackend::getDomainMetadata
  - operator()(uint32_t id, const DNSName& t, uint16_t qtype)
  - operator()(uint32_t id, const DNSName& t)
  - operator()(uint32_t id)
  - operator()(const DNSResourceRecord& rr)
  - LMDBBackend::getDomainID
  - LMDBBackend::getQName
  - LMDBBackend::getQType
  - LMDBBackend::LMDBResourceRecord::LMDBResourceRecord
  - LMDBBackend::LMDBResourceRecord::LMDBResourceRecord
  - LMDBBackend::RecordsROTransaction
  - LMDBBackend::RecordsRWTransaction
  - LMDBBackend::reset
  source_file: /src/pdns/modules/lmdbbackend/lmdbbackend.hh
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields: []
      item_type: struct
      name: compoundOrdername
      pos:
        line_end: 254
        line_start: 187
        source_file: /src/pdns/modules/lmdbbackend/lmdbbackend.hh
    - fields:
      - name: domain
        type: ZoneName
      - name: key
        type: string
      - name: value
        type: string
      item_type: struct
      name: DomainMeta
      pos:
        line_end: 262
        line_start: 257
        source_file: /src/pdns/modules/lmdbbackend/lmdbbackend.hh
    - fields:
      - name: domain
        type: ZoneName
      - name: content
        type: std::string
      - name: flags
        type: unsigned int
      - name: active
        type: bool
      - name: published
        type: bool
      item_type: struct
      name: KeyDataDB
      pos:
        line_end: 270
        line_start: 263
        source_file: /src/pdns/modules/lmdbbackend/lmdbbackend.hh
    - fields:
      - name: last_check
        type: time_t
      - name: notified_serial
        type: uint32_t
      item_type: struct
      name: TransientDomainInfo
      pos:
        line_end: 278
        line_start: 274
        source_file: /src/pdns/modules/lmdbbackend/lmdbbackend.hh
    - fields:
      - name: env
        type: shared_ptr<MDBEnv>
      - name: rdbi
        type: MDBDbi
      - name: cdbi
        type: MDBDbi
      item_type: struct
      name: RecordsDB
      pos:
        line_end: 317
        line_start: 312
        source_file: /src/pdns/modules/lmdbbackend/lmdbbackend.hh
    - fields:
      - name: db
        type: shared_ptr<RecordsDB>
      - name: txn
        type: MDBROTransaction
      item_type: struct
      name: RecordsROTransaction
      pos:
        line_end: 326
        line_start: 319
        source_file: /src/pdns/modules/lmdbbackend/lmdbbackend.hh
    - fields:
      - name: db
        type: shared_ptr<RecordsDB>
      - name: txn
        type: MDBRWTransaction
      item_type: struct
      name: RecordsRWTransaction
      pos:
        line_end: 334
        line_start: 327
        source_file: /src/pdns/modules/lmdbbackend/lmdbbackend.hh
    typedefs:
    - item_type: typedef
      name: tdomains_t
      pos:
        line_end: 294
        line_start: 292
        source_file: /src/pdns/modules/lmdbbackend/lmdbbackend.hh
      type: TypedDBI
    - item_type: typedef
      name: tmeta_t
      pos:
        line_end: 298
        line_start: 296
        source_file: /src/pdns/modules/lmdbbackend/lmdbbackend.hh
      type: TypedDBI
    - item_type: typedef
      name: tkdb_t
      pos:
        line_end: 302
        line_start: 300
        source_file: /src/pdns/modules/lmdbbackend/lmdbbackend.hh
      type: TypedDBI
    - item_type: typedef
      name: ttsig_t
      pos:
        line_end: 306
        line_start: 304
        source_file: /src/pdns/modules/lmdbbackend/lmdbbackend.hh
      type: TypedDBI
    union: []
- function_names:
  - LMDBBackend::getSchemaVersionAndShards
  - copyDBIAndAddLSHeader
  - copyTypedDBI
  - copyIndexDBI
  - copyDBIAndAddLSHeader
  - copyTypedDBI
  - copyIndexDBI
  - LMDBBackend::upgradeToSchemav5
  - LMDBBackend::upgradeToSchemav6
  - LMDBBackend::TransientDomainInfoCache::get(domainid_t domainid, TransientDomainInfo&
    data) const
  - LMDBBackend::TransientDomainInfoCache::remove(domainid_t domainid)
  - LMDBBackend::TransientDomainInfoCache::update(domainid_t domainid, const TransientDomainInfo&
    data)
  - LMDBBackend::TransientDomainInfoCache::pop(domainid_t& domainid, TransientDomainInfo&
    data)
  - LMDBBackend::LMDBBackend
  - LMDBBackend::~LMDBBackend()
  - LMDBBackend::openAllTheDatabases
  - LMDBBackend::getCapabilities
  - boost::serialization::save
  - boost::serialization::load
  - boost::serialization::save
  - boost::serialization::load
  - boost::serialization::save
  - boost::serialization::load
  - boost::serialization::serialize
  - boost::serialization::serialize
  - boost::serialization::save
  - boost::serialization::load
  - boost::serialization::serialize
  - boost::serialization::save
  - boost::serialization::load
  - boost::serialization::save
  - boost::serialization::load
  - boost::serialization::save
  - boost::serialization::load
  - boost::serialization::serialize
  - boost::serialization::serialize
  - boost::serialization::save
  - boost::serialization::load
  - boost::serialization::serialize
  - boost::serialization::save
  - boost::serialization::load
  - boost::serialization::save
  - boost::serialization::load
  - boost::serialization::save
  - boost::serialization::load
  - boost::serialization::serialize
  - boost::serialization::serialize
  - boost::serialization::save
  - boost::serialization::load
  - boost::serialization::serialize
  - boost::serialization::save
  - boost::serialization::load
  - boost::serialization::save
  - boost::serialization::load
  - boost::serialization::save
  - boost::serialization::load
  - boost::serialization::serialize
  - boost::serialization::serialize
  - boost::serialization::save
  - boost::serialization::load
  - boost::serialization::serialize
  - serializeToBuffer
  - serializeToBuffer
  - deserializeRRFromBuffer
  - deserializeFromBuffer
  - deserializeMultipleFromBuffer
  - serializeContent
  - LMDBBackend::serializeComment
  - deserializeContentZR
  - peekAtHasOrderName
  - peekAtAuth
  - peekAtTtl
  - LMDBBackend::deleteDomainRecords
  - LMDBBackend::findDomain
  - LMDBBackend::findDomain
  - LMDBBackend::consolidateDomainInfo
  - LMDBBackend::writeTransientDomainInfo
  - LMDBBackend::writeDomainInfo
  - LMDBBackend::startTransaction
  - LMDBBackend::commitTransaction
  - LMDBBackend::abortTransaction
  - LMDBBackend::deleteNSEC3RecordPair
  - LMDBBackend::writeNSEC3RecordPair
  - LMDBBackend::hasOrphanedNSEC3Record
  - LMDBBackend::feedRecord
  - LMDBBackend::feedComment
  - LMDBBackend::feedEnts
  - LMDBBackend::feedEnts3
  - LMDBBackend::replaceRRSet
  - LMDBBackend::replaceComments
  - keyUnconv
  - makeBadDataExceptionMessage
  - LMDBBackend::viewList
  - LMDBBackend::viewListZones
  - LMDBBackend::viewAddZone
  - LMDBBackend::viewDelZone
  - LMDBBackend::networkSet
  - LMDBBackend::networkList
  - LMDBBackend::getRecordsRWTransaction
  - LMDBBackend::getRecordsROTransaction
  - LMDBBackend::deleteDomain
  - LMDBBackend::listComments
  - LMDBBackend::list
  - LMDBBackend::listSubZone
  - LMDBBackend::lookupInternal
  - LMDBBackend::lookupStart
  - LMDBBackend::getInternal
  - LMDBBackend::getComment
  - LMDBBackend::get
  - LMDBBackend::get
  - LMDBBackend::lookupEnd
  - LMDBBackend::getSerial
  - LMDBBackend::getDomainInfo
  - LMDBBackend::genChangeDomain
  - LMDBBackend::genChangeDomain
  - LMDBBackend::genChangeTransientDomain
  - LMDBBackend::setKind
  - LMDBBackend::setAccount
  - LMDBBackend::setPrimaries
  - LMDBBackend::createDomain
  - LMDBBackend::getAllDomainsFiltered
  - LMDBBackend::getAllDomains
  - LMDBBackend::getUnfreshSecondaryInfos
  - LMDBBackend::setStale
  - LMDBBackend::setFresh
  - LMDBBackend::setLastCheckTime
  - LMDBBackend::getUpdatedPrimaries
  - LMDBBackend::setNotified
  - getCatalogMembersReturnFalseException::getCatalogMembersReturnFalseException
  - LMDBBackend::getCatalogMembers
  - LMDBBackend::setOptions
  - LMDBBackend::setCatalog
  - LMDBBackend::getAllDomainMetadata
  - LMDBBackend::setDomainMetadata
  - LMDBBackend::getDomainKeys
  - LMDBBackend::removeDomainKey
  - LMDBBackend::addDomainKey
  - LMDBBackend::activateDomainKey
  - LMDBBackend::deactivateDomainKey
  - LMDBBackend::publishDomainKey
  - LMDBBackend::unpublishDomainKey
  - LMDBBackend::isNSEC3BackRecord
  - LMDBBackend::getAfterForward
  - LMDBBackend::getAfterForwardFromStart
  - LMDBBackend::getBeforeAndAfterNamesAbsolute
  - LMDBBackend::isValidAuthRecord
  - LMDBBackend::getBeforeAndAfterNames
  - LMDBBackend::updateDNSSECOrderNameAndAuth
  - LMDBBackend::updateEmptyNonTerminals
  - LMDBBackend::getTSIGKey
  - LMDBBackend::setTSIGKey
  - LMDBBackend::deleteTSIGKey
  - LMDBBackend::getTSIGKeys
  - LMDBBackend::directBackendCmd
  - LMDBBackend::directBackendCmd_list
  - LMDBBackend::hasCreatedLocalFiles
  - LMDBBackend::rectifyZoneHook
  - LMDBBackend::flush
  - LMDBFactory::LMDBFactory
  - LMDBFactory::declareArguments
  - LMDBFactory::make
  - LMDBLoader::LMDBLoader
  source_file: /src/pdns/modules/lmdbbackend/lmdbbackend.cc
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: StringView
      pos:
        line_end: 1288
        line_start: 1287
        source_file: /src/pdns/modules/lmdbbackend/lmdbbackend.cc
      type_or_value: string_view
    - item_type: preproc_def
      name: StringView
      pos:
        line_end: 1290
        line_start: 1289
        source_file: /src/pdns/modules/lmdbbackend/lmdbbackend.cc
      type_or_value: string
    structs: []
    typedefs: []
    union: []
- function_names:
  - operator<(const TinyDomainInfo& tdi) const
  - TDI_SerialModifier
  - operator()(TinyDomainInfo& tdi)
  - TinyDNSBackend::getCapabilities
  source_file: /src/pdns/modules/tinydnsbackend/tinydnsbackend.hh
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: id
        type: domainid_t
      - name: notified_serial
        type: uint32_t
      - name: zone
        type: ZoneName
      item_type: struct
      name: TinyDomainInfo
      pos:
        line_end: 48
        line_start: 38
        source_file: /src/pdns/modules/tinydnsbackend/tinydnsbackend.hh
    - fields:
      - name: d_newSerial
        type: int
      item_type: struct
      name: TDI_SerialModifier
      pos:
        line_end: 62
        line_start: 50
        source_file: /src/pdns/modules/tinydnsbackend/tinydnsbackend.hh
    - fields: []
      item_type: struct
      name: tag_zone
      pos:
        line_end: 85
        line_start: 83
        source_file: /src/pdns/modules/tinydnsbackend/tinydnsbackend.hh
    - fields: []
      item_type: struct
      name: tag_domainid
      pos:
        line_end: 88
        line_start: 86
        source_file: /src/pdns/modules/tinydnsbackend/tinydnsbackend.hh
    typedefs:
    - item_type: typedef
      name: TDI_t
      pos:
        line_end: 94
        line_start: 89
        source_file: /src/pdns/modules/tinydnsbackend/tinydnsbackend.hh
      type: multi_index_container
    - item_type: typedef
      name: TDI_suffix_t
      pos:
        line_end: 95
        line_start: 95
        source_file: /src/pdns/modules/tinydnsbackend/tinydnsbackend.hh
      type: map
    - item_type: typedef
      name: TDIByZone_t
      pos:
        line_end: 96
        line_start: 96
        source_file: /src/pdns/modules/tinydnsbackend/tinydnsbackend.hh
      type: index<tag_zone>::type
    - item_type: typedef
      name: TDIById_t
      pos:
        line_end: 97
        line_start: 97
        source_file: /src/pdns/modules/tinydnsbackend/tinydnsbackend.hh
      type: index<tag_domainid>::type
    union: []
- function_names:
  - TinyDNSBackend::getLocations
  - TinyDNSBackend::TinyDNSBackend
  - TinyDNSBackend::updateState
  - TinyDNSBackend::getUpdatedPrimaries
  - TinyDNSBackend::setNotified
  - TinyDNSBackend::getAllDomains_locked
  - TinyDNSBackend::getAllDomains
  - TinyDNSBackend::getDomainInfo
  - TinyDNSBackend::list
  - TinyDNSBackend::lookup
  - TinyDNSBackend::get
  - TinyDNSFactory::TinyDNSFactory
  - TinyDNSFactory::declareArguments
  - TinyDNSFactory::make
  - TinyDNSLoader::TinyDNSLoader
  source_file: /src/pdns/modules/tinydnsbackend/tinydnsbackend.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/pdns/modules/godbcbackend/godbcbackend.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - realTestResult
  - SODBCStatement::SODBCStatement
  - SODBCStatement::bind
  - SODBCStatement::bind
  - SODBCStatement::bind
  - SODBCStatement::bind
  - SODBCStatement::bind
  - SODBCStatement::bind
  - SODBCStatement::bind
  - SODBCStatement::bind
  - SODBCStatement::bind
  - SODBCStatement::bindNull
  - SODBCStatement::execute
  - SODBCStatement::hasNextRow
  - SODBCStatement::getResult
  - SODBCStatement::reset
  - '& getQuery() override'
  - ~SODBCStatement() override
  - SODBCStatement::testResult
  - SODBCStatement::releaseStatement
  - SODBCStatement::prepareStatement
  - SODBCStatement::nextRow
  - SODBC::SODBC
  - SODBC::~SODBC()
  - SODBC::execute
  - SODBC::setLog
  - SODBC::sPerrorException
  - SODBC::prepare
  - SODBC::startTransaction
  - SODBC::commit
  - SODBC::rollback
  - SODBC::testResult
  source_file: /src/pdns/modules/godbcbackend/sodbc.cc
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: ParameterValuePtr
        type: SQLPOINTER
      - name: '* LenPtr'
        type: SQLLEN
      - name: ParameterType
        type: SQLSMALLINT
      - name: ValueType
        type: SQLSMALLINT
      item_type: struct
      name: ODBCParam
      pos:
        line_end: 88
        line_start: 82
        source_file: /src/pdns/modules/godbcbackend/sodbc.cc
    - fields:
      - name: m_type
        type: SQLSMALLINT
      - name: m_size
        type: SQLULEN
      - name: m_pData
        type: SQLPOINTER
      - name: m_canBeNull
        type: bool
      item_type: struct
      name: column_t
      pos:
        line_end: 368
        line_start: 362
        source_file: /src/pdns/modules/godbcbackend/sodbc.cc
    typedefs: []
    union: []
- function_names: []
  source_file: /src/pdns/modules/godbcbackend/sodbc.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - gODBCBackend::gODBCBackend
  - gODBCFactory::gODBCFactory
  - gODBCFactory::declareArguments
  - gODBCFactory::make
  - gODBCLoader::gODBCLoader
  source_file: /src/pdns/modules/godbcbackend/godbcbackend.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - Lua2BackendAPIv2::Lua2BackendAPIv2
  - Lua2BackendAPIv2::postPrepareContext
  - Lua2BackendAPIv2::postLoad
  - Lua2BackendAPIv2::getCapabilities
  - Lua2BackendAPIv2::parseLookup
  - Lua2BackendAPIv2::list
  - Lua2BackendAPIv2::lookup
  - Lua2BackendAPIv2::get
  - Lua2BackendAPIv2::directBackendCmd
  - Lua2BackendAPIv2::setNotified
  - Lua2BackendAPIv2::parseDomainInfo
  - Lua2BackendAPIv2::getDomainInfo
  - Lua2BackendAPIv2::getAllDomains
  - Lua2BackendAPIv2::getAllDomainMetadata
  - Lua2BackendAPIv2::getDomainMetadata
  - Lua2BackendAPIv2::getDomainKeys
  - Lua2BackendAPIv2::getBeforeAndAfterNamesAbsolute
  source_file: /src/pdns/modules/lua2backend/lua2api2.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs:
    - item_type: typedef
      name: init_call_t
      pos:
        line_end: 31
        line_start: 31
        source_file: /src/pdns/modules/lua2backend/lua2api2.hh
      type: function<void()>
    - item_type: typedef
      name: deinit_call_t
      pos:
        line_end: 32
        line_start: 32
        source_file: /src/pdns/modules/lua2backend/lua2api2.hh
      type: function<void()>
    - item_type: typedef
      name: lookup_context_t
      pos:
        line_end: 34
        line_start: 34
        source_file: /src/pdns/modules/lua2backend/lua2api2.hh
      type: vector<std::pair<string, string>>
    - item_type: typedef
      name: lookup_result_t
      pos:
        line_end: 36
        line_start: 36
        source_file: /src/pdns/modules/lua2backend/lua2api2.hh
      type: vector<std::pair<int, std::vector<std::pair<string, boost::variant<bool,
        int, DNSName, string, QType>>>>>
    - item_type: typedef
      name: lookup_call_t
      pos:
        line_end: 37
        line_start: 37
        source_file: /src/pdns/modules/lua2backend/lua2api2.hh
      type: function<lookup_result_t(const QType& qtype, const DNSName& qname, domainid_t
        domain_id, const lookup_context_t& ctx)>
    - item_type: typedef
      name: list_result_t
      pos:
        line_end: 39
        line_start: 39
        source_file: /src/pdns/modules/lua2backend/lua2api2.hh
      type: variant<bool, lookup_result_t>
    - item_type: typedef
      name: list_call_t
      pos:
        line_end: 40
        line_start: 40
        source_file: /src/pdns/modules/lua2backend/lua2api2.hh
      type: function<list_result_t(const DNSName& qname, domainid_t domain_id)>
    - item_type: typedef
      name: domaininfo_result_t
      pos:
        line_end: 42
        line_start: 42
        source_file: /src/pdns/modules/lua2backend/lua2api2.hh
      type: vector
    - item_type: typedef
      name: get_domaininfo_result_t
      pos:
        line_end: 43
        line_start: 43
        source_file: /src/pdns/modules/lua2backend/lua2api2.hh
      type: variant<bool, domaininfo_result_t>
    - item_type: typedef
      name: get_all_domains_result_t
      pos:
        line_end: 44
        line_start: 44
        source_file: /src/pdns/modules/lua2backend/lua2api2.hh
      type: vector
    - item_type: typedef
      name: get_domaininfo_call_t
      pos:
        line_end: 45
        line_start: 45
        source_file: /src/pdns/modules/lua2backend/lua2api2.hh
      type: function<get_domaininfo_result_t(const DNSName& domain)>
    - item_type: typedef
      name: get_all_domains_call_t
      pos:
        line_end: 46
        line_start: 46
        source_file: /src/pdns/modules/lua2backend/lua2api2.hh
      type: function<get_all_domains_result_t()>
    - item_type: typedef
      name: domain_metadata_result_t
      pos:
        line_end: 48
        line_start: 48
        source_file: /src/pdns/modules/lua2backend/lua2api2.hh
      type: vector
    - item_type: typedef
      name: get_domain_metadata_result_t
      pos:
        line_end: 49
        line_start: 49
        source_file: /src/pdns/modules/lua2backend/lua2api2.hh
      type: variant<bool, domain_metadata_result_t>
    - item_type: typedef
      name: get_all_domain_metadata_result_t
      pos:
        line_end: 50
        line_start: 50
        source_file: /src/pdns/modules/lua2backend/lua2api2.hh
      type: variant<bool, vector<pair<string, domain_metadata_result_t>>>
    - item_type: typedef
      name: get_domain_metadata_call_t
      pos:
        line_end: 51
        line_start: 51
        source_file: /src/pdns/modules/lua2backend/lua2api2.hh
      type: function<get_domain_metadata_result_t(const DNSName& domain, const string&
        kind)>
    - item_type: typedef
      name: get_all_domain_metadata_call_t
      pos:
        line_end: 52
        line_start: 52
        source_file: /src/pdns/modules/lua2backend/lua2api2.hh
      type: function<get_all_domain_metadata_result_t(const DNSName& domain)>
    - item_type: typedef
      name: keydata_result_t
      pos:
        line_end: 54
        line_start: 54
        source_file: /src/pdns/modules/lua2backend/lua2api2.hh
      type: vector
    - item_type: typedef
      name: get_domain_keys_result_t
      pos:
        line_end: 55
        line_start: 55
        source_file: /src/pdns/modules/lua2backend/lua2api2.hh
      type: variant<bool, vector<pair<int, keydata_result_t>>>
    - item_type: typedef
      name: get_domain_keys_call_t
      pos:
        line_end: 56
        line_start: 56
        source_file: /src/pdns/modules/lua2backend/lua2api2.hh
      type: function<get_domain_keys_result_t(const DNSName& domain)>
    - item_type: typedef
      name: before_and_after_names_result_t
      pos:
        line_end: 58
        line_start: 58
        source_file: /src/pdns/modules/lua2backend/lua2api2.hh
      type: vector<std::pair<string, boost::variant<string, DNSName>>>
    - item_type: typedef
      name: get_before_and_after_names_absolute_result_t
      pos:
        line_end: 59
        line_start: 59
        source_file: /src/pdns/modules/lua2backend/lua2api2.hh
      type: variant<bool, before_and_after_names_result_t>
    - item_type: typedef
      name: get_before_and_after_names_absolute_call_t
      pos:
        line_end: 60
        line_start: 60
        source_file: /src/pdns/modules/lua2backend/lua2api2.hh
      type: function<get_before_and_after_names_absolute_result_t(domainid_t id, const
        DNSName& qname)>
    - item_type: typedef
      name: set_notified_call_t
      pos:
        line_end: 62
        line_start: 62
        source_file: /src/pdns/modules/lua2backend/lua2api2.hh
      type: function<void(domainid_t, long)>
    - item_type: typedef
      name: direct_backend_cmd_call_t
      pos:
        line_end: 64
        line_start: 64
        source_file: /src/pdns/modules/lua2backend/lua2api2.hh
      type: function<string(const string& cmd)>
    union: []
- function_names:
  - Lua2BackendAPIv2::~Lua2BackendAPIv2()
  source_file: /src/pdns/modules/lua2backend/lua2api2.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/pdns/modules/lua2backend/lua2backend.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - Lua2Factory::Lua2Factory
  - Lua2Factory::declareArguments
  - Lua2Factory::make
  - Lua2Loader::Lua2Loader
  source_file: /src/pdns/modules/lua2backend/lua2backend.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - GeoIPInterfaceMMDB::GeoIPInterfaceMMDB
  - GeoIPInterfaceMMDB::queryCountry
  - GeoIPInterfaceMMDB::queryCountryV6
  - GeoIPInterfaceMMDB::queryCountry2
  - GeoIPInterfaceMMDB::queryCountry2V6
  - GeoIPInterfaceMMDB::queryContinent
  - GeoIPInterfaceMMDB::queryContinentV6
  - GeoIPInterfaceMMDB::queryName
  - GeoIPInterfaceMMDB::queryNameV6
  - GeoIPInterfaceMMDB::queryASnum
  - GeoIPInterfaceMMDB::queryASnumV6
  - GeoIPInterfaceMMDB::queryRegion
  - GeoIPInterfaceMMDB::queryRegionV6
  - GeoIPInterfaceMMDB::queryCity
  - GeoIPInterfaceMMDB::queryCityV6
  - GeoIPInterfaceMMDB::queryLocation
  - GeoIPInterfaceMMDB::queryLocationV6
  - ~GeoIPInterfaceMMDB() override
  - GeoIPInterfaceMMDB::mmdbLookup
  - GeoIPInterface::makeMMDBInterface
  - GeoIPInterface::makeMMDBInterface
  source_file: /src/pdns/modules/geoipbackend/geoipinterface-mmdb.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - operator()(DIR* dirPtr) const noexcept
  - GeoIPBackend::GeoIPBackend
  - validateMappingLookupFormats
  - makeDNSResourceRecord
  - GeoIPBackend::setupNetmasks
  - GeoIPBackend::loadDomain
  - GeoIPBackend::loadDomainsFromDirectory
  - GeoIPBackend::initialize
  - GeoIPBackend::~GeoIPBackend()
  - GeoIPBackend::lookup_static
  - GeoIPBackend::lookup
  - GeoIPBackend::get
  - GeoIPBackend::lookupEnd
  - queryGeoIP
  - getGeoForLua
  - queryGeoLocation
  - GeoIPBackend::format2str
  - GeoIPBackend::reload
  - GeoIPBackend::rediscover
  - GeoIPBackend::getDomainInfo
  - GeoIPBackend::getAllDomains
  - GeoIPBackend::getAllDomainMetadata
  - GeoIPBackend::getDomainMetadata
  - GeoIPBackend::getDomainKeys
  - GeoIPBackend::removeDomainKey
  - GeoIPBackend::addDomainKey
  - GeoIPBackend::activateDomainKey
  - GeoIPBackend::deactivateDomainKey
  - GeoIPBackend::publishDomainKey
  - GeoIPBackend::unpublishDomainKey
  - GeoIPBackend::hasDNSSECkey
  - GeoIPFactory::GeoIPFactory
  - GeoIPFactory::declareArguments
  - GeoIPFactory::make
  - GeoIPLoader::GeoIPLoader
  source_file: /src/pdns/modules/geoipbackend/geoipbackend.cc
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: weight
        type: int
      - name: has_weight
        type: bool
      item_type: struct
      name: GeoIPDNSResourceRecord
      pos:
        line_end: 49
        line_start: 45
        source_file: /src/pdns/modules/geoipbackend/geoipbackend.cc
    - fields:
      - name: masks
        type: NetmaskTree<vector<string>>
      - name: netmask4
        type: unsigned int
      - name: netmask6
        type: unsigned int
      item_type: struct
      name: GeoIPService
      pos:
        line_end: 56
        line_start: 51
        source_file: /src/pdns/modules/geoipbackend/geoipbackend.cc
    - fields:
      - name: id
        type: domainid_t
      - name: domain
        type: ZoneName
      - name: ttl
        type: int
      - name: services
        type: map<DNSName, GeoIPService>
      - name: records
        type: map<DNSName, vector<GeoIPDNSResourceRecord>>
      - name: mapping_lookup_formats
        type: vector<string>
      - name: custom_mapping
        type: map<std::string, std::string>
      item_type: struct
      name: GeoIPDomain
      pos:
        line_end: 67
        line_start: 58
        source_file: /src/pdns/modules/geoipbackend/geoipbackend.cc
    - fields: []
      item_type: struct
      name: DirPtrDeleter
      pos:
        line_end: 94
        line_start: 81
        source_file: /src/pdns/modules/geoipbackend/geoipbackend.cc
    typedefs: []
    union: []
- function_names:
  - GeoIPInterface::makeInterface
  source_file: /src/pdns/modules/geoipbackend/geoipinterface.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - GeoIPBackend::getCapabilities
  - GeoIPBackend::list
  source_file: /src/pdns/modules/geoipbackend/geoipbackend.hh
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: netmask
        type: int
      item_type: struct
      name: GeoIPNetmask
      pos:
        line_end: 49
        line_start: 46
        source_file: /src/pdns/modules/geoipbackend/geoipbackend.hh
    typedefs: []
    union: []
- function_names:
  - ~GeoIPInterface()
  source_file: /src/pdns/modules/geoipbackend/geoipinterface.hh
  types:
    enum:
    - enumerators:
      - name: ASn
      - name: City
      - name: Continent
      - name: Country
      - name: Country2
      - name: Name
      - name: Region
      - name: Location
      item_type: enum
      name: GeoIPQueryAttribute
      pos:
        line_end: 39
        line_start: 29
        source_file: /src/pdns/modules/geoipbackend/geoipinterface.hh
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - operator()(GeoIP* ptr)
  - operator()(GeoIPRecord* ptr)
  - operator()(GeoIPRegion* ptr)
  - GeoIPInterfaceDAT::GeoIPInterfaceDAT
  - GeoIPInterfaceDAT::queryCountry
  - GeoIPInterfaceDAT::queryCountryV6
  - GeoIPInterfaceDAT::queryCountry2
  - GeoIPInterfaceDAT::queryCountry2V6
  - GeoIPInterfaceDAT::queryContinent
  - GeoIPInterfaceDAT::queryContinentV6
  - GeoIPInterfaceDAT::queryName
  - GeoIPInterfaceDAT::queryNameV6
  - GeoIPInterfaceDAT::queryASnum
  - GeoIPInterfaceDAT::queryASnumV6
  - GeoIPInterfaceDAT::queryRegion
  - GeoIPInterfaceDAT::queryRegionV6
  - GeoIPInterfaceDAT::queryCity
  - GeoIPInterfaceDAT::queryCityV6
  - GeoIPInterfaceDAT::queryLocationV6
  - GeoIPInterfaceDAT::queryLocation
  - ~GeoIPInterfaceDAT() override
  - GeoIPInterface::makeDATInterface
  - GeoIPInterface::makeDATInterface
  source_file: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields: []
      item_type: struct
      name: geoip_deleter
      pos:
        line_end: 38
        line_start: 30
        source_file: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc
    - fields: []
      item_type: struct
      name: geoiprecord_deleter
      pos:
        line_end: 48
        line_start: 40
        source_file: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc
    - fields: []
      item_type: struct
      name: geoipregion_deleter
      pos:
        line_end: 58
        line_start: 50
        source_file: /src/pdns/modules/geoipbackend/geoipinterface-dat.cc
    typedefs: []
    union: []
- function_names:
  - gMySQLBackend::gMySQLBackend
  - gMySQLBackend::reconnect
  - gMySQLFactory::gMySQLFactory
  - gMySQLFactory::declareArguments
  - gMySQLFactory::make
  - gMySQLLoader::gMySQLLoader
  source_file: /src/pdns/modules/gmysqlbackend/gmysqlbackend.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/pdns/modules/gmysqlbackend/smysql.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - ~MySQLThreadCloser()
  - MySQLThreadCloser::enable
  - SMySQLStatement::SMySQLStatement
  - SMySQLStatement::bind
  - SMySQLStatement::bind
  - SMySQLStatement::bind
  - SMySQLStatement::bind
  - SMySQLStatement::bind
  - SMySQLStatement::bind
  - SMySQLStatement::bind
  - SMySQLStatement::bind
  - SMySQLStatement::bindNull
  - SMySQLStatement::execute
  - SMySQLStatement::hasNextRow
  - SMySQLStatement::nextRow
  - SMySQLStatement::getResult
  - SMySQLStatement::reset
  - '& getQuery() override'
  - ~SMySQLStatement() override
  - SMySQLStatement::prepareStatement
  - SMySQLStatement::releaseStatement
  - SMySQL::connect
  - SMySQL::SMySQL
  - SMySQL::setLog
  - SMySQL::~SMySQL()
  - SMySQL::sPerrorException
  - SMySQL::prepare
  - SMySQL::execute
  - SMySQL::startTransaction
  - SMySQL::commit
  - SMySQL::rollback
  - SMySQL::isConnectionUsable
  source_file: /src/pdns/modules/gmysqlbackend/smysql.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs:
    - item_type: typedef
      name: my_bool
      pos:
        line_end: 37
        line_start: 37
        source_file: /src/pdns/modules/gmysqlbackend/smysql.cc
      type: bool
    union: []
- function_names: []
  source_file: /src/pdns/modules/gmysqlbackend/gmysqlbackend.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - arg
  - RemotebackendSetup
  - ~RemotebackendSetup()
  source_file: /src/pdns/modules/remotebackend/test-remotebackend-unix.cc
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: BOOST_TEST_MODULE
      pos:
        line_end: 27
        line_start: 26
        source_file: /src/pdns/modules/remotebackend/test-remotebackend-unix.cc
      type_or_value: unit
    structs:
    - fields: []
      item_type: struct
      name: RemotebackendSetup
      pos:
        line_end: 88
        line_start: 67
        source_file: /src/pdns/modules/remotebackend/test-remotebackend-unix.cc
    typedefs: []
    union: []
- function_names:
  - ZeroMQConnector::ZeroMQConnector
  - ZeroMQConnector::~ZeroMQConnector()
  - ZeroMQConnector::send_message
  - ZeroMQConnector::recv_message
  source_file: /src/pdns/modules/remotebackend/zmqconnector.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - arg
  - RemotebackendSetup
  - ~RemotebackendSetup()
  source_file: /src/pdns/modules/remotebackend/test-remotebackend-pipe.cc
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: BOOST_TEST_MODULE
      pos:
        line_end: 27
        line_start: 26
        source_file: /src/pdns/modules/remotebackend/test-remotebackend-pipe.cc
      type_or_value: unit
    structs:
    - fields: []
      item_type: struct
      name: RemotebackendSetup
      pos:
        line_end: 88
        line_start: 67
        source_file: /src/pdns/modules/remotebackend/test-remotebackend-pipe.cc
    typedefs: []
    union: []
- function_names:
  - arg
  - RemotebackendSetup
  - ~RemotebackendSetup()
  source_file: /src/pdns/modules/remotebackend/test-remotebackend-http.cc
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: BOOST_TEST_MODULE
      pos:
        line_end: 63
        line_start: 62
        source_file: /src/pdns/modules/remotebackend/test-remotebackend-http.cc
      type_or_value: unit
    structs:
    - fields: []
      item_type: struct
      name: RemotebackendSetup
      pos:
        line_end: 89
        line_start: 69
        source_file: /src/pdns/modules/remotebackend/test-remotebackend-http.cc
    typedefs: []
    union: []
- function_names:
  - Connector::send
  - Connector::recv
  - RemoteBackend::RemoteBackend
  - RemoteBackend::~RemoteBackend()
  - RemoteBackend::send
  - RemoteBackend::recv
  - RemoteBackend::build
  - RemoteBackend::lookup
  - RemoteBackend::APILookup
  - RemoteBackend::list
  - RemoteBackend::get
  - RemoteBackend::getBeforeAndAfterNamesAbsolute
  - RemoteBackend::getAllDomainMetadata
  - RemoteBackend::getDomainMetadata
  - RemoteBackend::setDomainMetadata
  - RemoteBackend::getDomainKeys
  - RemoteBackend::removeDomainKey
  - RemoteBackend::addDomainKey
  - RemoteBackend::activateDomainKey
  - RemoteBackend::deactivateDomainKey
  - RemoteBackend::publishDomainKey
  - RemoteBackend::unpublishDomainKey
  - RemoteBackend::getCapabilities
  - RemoteBackend::getTSIGKey
  - RemoteBackend::setTSIGKey
  - RemoteBackend::deleteTSIGKey
  - RemoteBackend::getTSIGKeys
  - RemoteBackend::parseDomainInfo
  - RemoteBackend::getDomainInfo
  - RemoteBackend::setNotified
  - RemoteBackend::autoPrimaryBackend
  - RemoteBackend::createSecondaryDomain
  - RemoteBackend::replaceRRSet
  - RemoteBackend::feedRecord
  - RemoteBackend::feedEnts
  - RemoteBackend::feedEnts3
  - RemoteBackend::startTransaction
  - RemoteBackend::commitTransaction
  - RemoteBackend::abortTransaction
  - RemoteBackend::directBackendCmd
  - RemoteBackend::searchRecords
  - RemoteBackend::searchComments
  - RemoteBackend::getAllDomains
  - RemoteBackend::getUpdatedPrimaries
  - RemoteBackend::getUnfreshSecondaryInfos
  - RemoteBackend::setStale
  - RemoteBackend::setFresh
  - RemoteBackendFactory::RemoteBackendFactory
  - RemoteBackendFactory::declareArguments
  - RemoteBackendFactory::make
  - RemoteLoader::RemoteLoader
  source_file: /src/pdns/modules/remotebackend/remotebackend.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - arg
  - RemotebackendSetup
  - ~RemotebackendSetup()
  source_file: /src/pdns/modules/remotebackend/test-remotebackend-json.cc
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: BOOST_TEST_MODULE
      pos:
        line_end: 61
        line_start: 60
        source_file: /src/pdns/modules/remotebackend/test-remotebackend-json.cc
      type_or_value: unit
    structs:
    - fields: []
      item_type: struct
      name: RemotebackendSetup
      pos:
        line_end: 87
        line_start: 67
        source_file: /src/pdns/modules/remotebackend/test-remotebackend-json.cc
    typedefs: []
    union: []
- function_names:
  - zmq_msg_send
  - zmq_msg_recv
  - ~Connector()
  - Connector::asString
  - RemoteBackend::asString
  - RemoteBackend::asBool
  source_file: /src/pdns/modules/remotebackend/remotebackend.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  - BOOST_AUTO_TEST_CASE
  source_file: /src/pdns/modules/remotebackend/test-remotebackend.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/pdns/modules/remotebackend/test-remotebackend-keys.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - arg
  - RemotebackendSetup
  - ~RemotebackendSetup()
  - main
  source_file: /src/pdns/modules/remotebackend/test-remotebackend-zeromq.cc
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: BOOST_TEST_MODULE
      pos:
        line_end: 27
        line_start: 26
        source_file: /src/pdns/modules/remotebackend/test-remotebackend-zeromq.cc
      type_or_value: unit
    structs:
    - fields: []
      item_type: struct
      name: RemotebackendSetup
      pos:
        line_end: 90
        line_start: 69
        source_file: /src/pdns/modules/remotebackend/test-remotebackend-zeromq.cc
    typedefs: []
    union: []
- function_names:
  - PipeConnector::PipeConnector
  - PipeConnector::~PipeConnector()
  - PipeConnector::launch
  - PipeConnector::send_message
  - PipeConnector::recv_message
  - PipeConnector::checkStatus
  source_file: /src/pdns/modules/remotebackend/pipeconnector.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - arg
  - RemotebackendSetup
  - ~RemotebackendSetup()
  source_file: /src/pdns/modules/remotebackend/test-remotebackend-post.cc
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: BOOST_TEST_MODULE
      pos:
        line_end: 61
        line_start: 60
        source_file: /src/pdns/modules/remotebackend/test-remotebackend-post.cc
      type_or_value: unit
    structs:
    - fields: []
      item_type: struct
      name: RemotebackendSetup
      pos:
        line_end: 87
        line_start: 67
        source_file: /src/pdns/modules/remotebackend/test-remotebackend-post.cc
    typedefs: []
    union: []
- function_names:
  - UnixsocketConnector::UnixsocketConnector
  - UnixsocketConnector::~UnixsocketConnector()
  - UnixsocketConnector::send_message
  - UnixsocketConnector::recv_message
  - UnixsocketConnector::read
  - UnixsocketConnector::write
  - UnixsocketConnector::reconnect
  source_file: /src/pdns/modules/remotebackend/unixconnector.cc
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: UNIX_PATH_MAX
      pos:
        line_end: 30
        line_start: 29
        source_file: /src/pdns/modules/remotebackend/unixconnector.cc
      type_or_value: '108'
    structs: []
    typedefs: []
    union: []
- function_names:
  - HTTPConnector::HTTPConnector
  - HTTPConnector::~HTTPConnector()
  - HTTPConnector::addUrlComponent
  - HTTPConnector::buildMemberListArgs
  - HTTPConnector::restful_requestbuilder
  - HTTPConnector::post_requestbuilder
  - HTTPConnector::send_message
  - HTTPConnector::recv_message
  source_file: /src/pdns/modules/remotebackend/httpconnector.cc
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: UNIX_PATH_MAX
      pos:
        line_end: 34
        line_start: 33
        source_file: /src/pdns/modules/remotebackend/httpconnector.cc
      type_or_value: '108'
    structs: []
    typedefs: []
    union: []
- function_names:
  - gPgSQLBackend::gPgSQLBackend
  - gPgSQLBackend::reconnect
  - gPgSQLBackend::inTransaction
  - gPgSQLFactory::gPgSQLFactory
  - gPgSQLFactory::declareArguments
  - gPgSQLFactory::make
  - gPgSQLLoader::gPgSQLLoader
  source_file: /src/pdns/modules/gpgsqlbackend/gpgsqlbackend.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - SPgSQLStatement::SPgSQLStatement
  - SPgSQLStatement::bind
  - SPgSQLStatement::bind
  - SPgSQLStatement::bind
  - SPgSQLStatement::bind
  - SPgSQLStatement::bind
  - SPgSQLStatement::bind
  - SPgSQLStatement::bind
  - SPgSQLStatement::bind
  - SPgSQLStatement::bindNull
  - SPgSQLStatement::execute
  - SPgSQLStatement::nextResult
  - SPgSQLStatement::hasNextRow
  - SPgSQLStatement::nextRow
  - SPgSQLStatement::getResult
  - SPgSQLStatement::reset
  - '& getQuery() override'
  - ~SPgSQLStatement() override
  - SPgSQLStatement::d_db
  - SPgSQLStatement::releaseStatement
  - SPgSQLStatement::prepareStatement
  - SPgSQLStatement::allocate
  - escapeForPQparam
  - SPgSQL::SPgSQL
  - SPgSQL::setLog
  - SPgSQL::~SPgSQL()
  - SPgSQL::sPerrorException
  - SPgSQL::execute
  - SPgSQL::prepare
  - SPgSQL::startTransaction
  - SPgSQL::commit
  - SPgSQL::rollback
  - SPgSQL::isConnectionUsable
  - SPgSQL::reconnect
  source_file: /src/pdns/modules/gpgsqlbackend/spgsql.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/pdns/modules/gpgsqlbackend/gpgsqlbackend.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - SPgSQL::db
  - SPgSQL::in_trx
  - SPgSQL::usePrepared
  source_file: /src/pdns/modules/gpgsqlbackend/spgsql.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - ~LdapAuthenticator()
  source_file: /src/pdns/modules/ldapbackend/ldapauthenticator.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - LdapBackend::getUpdatedPrimaries
  - LdapBackend::setNotified
  source_file: /src/pdns/modules/ldapbackend/primary.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - LDAPException::LDAPException
  - LDAPTimeout::LDAPTimeout
  - LDAPNoConnection::LDAPNoConnection
  - LDAPNoSuchObject::LDAPNoSuchObject
  source_file: /src/pdns/modules/ldapbackend/exceptions.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - LdapBackend::DNSResult
  - LdapBackend::getCapabilities
  source_file: /src/pdns/modules/ldapbackend/ldapbackend.hh
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: qtype
        type: QType
      - name: qname
        type: DNSName
      - name: ttl
        type: uint32_t
      - name: lastmod
        type: time_t
      - name: value
        type: std::string
      - name: auth
        type: bool
      - name: ordername
        type: std::string
      item_type: struct
      name: DNSResult
      pos:
        line_end: 75
        line_start: 61
        source_file: /src/pdns/modules/ldapbackend/ldapbackend.hh
    typedefs: []
    union: []
- function_names:
  - LdapSimpleAuthenticator::LdapSimpleAuthenticator
  - LdapSimpleAuthenticator::authenticate
  - LdapSimpleAuthenticator::getError
  - LdapSimpleAuthenticator::fillLastError
  - ldapGssapiAuthenticatorSaslInteractCallback
  - LdapGssapiAuthenticator::LdapGssapiAuthenticator
  - LdapGssapiAuthenticator::~LdapGssapiAuthenticator()
  - LdapGssapiAuthenticator::authenticate
  - LdapGssapiAuthenticator::getError
  - LdapGssapiAuthenticator::attemptAuth
  - LdapGssapiAuthenticator::updateTgt
  source_file: /src/pdns/modules/ldapbackend/ldapauthenticator.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - ldapSetOption
  - ldapGetOption
  - ldapGetError
  - ldapWaitResult
  source_file: /src/pdns/modules/ldapbackend/ldaputils.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/pdns/modules/ldapbackend/ldaputils.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - PowerLDAP::SearchResult::SearchResult(int msgid, LDAP* ld)
  - PowerLDAP::SearchResult::~SearchResult()
  - PowerLDAP::SearchResult::getNext(PowerLDAP::sentry_t& entry, bool dn, int /* timeout
    */)
  - PowerLDAP::SearchResult::getAll(PowerLDAP::sresult_t& results, bool dn, int timeout)
  - PowerLDAP::PowerLDAP
  - PowerLDAP::ensureConnect
  - PowerLDAP::~PowerLDAP()
  - PowerLDAP::connect
  - PowerLDAP::setOption
  - PowerLDAP::getOption
  - PowerLDAP::bind
  - PowerLDAP::modify
  - PowerLDAP::search
  - PowerLDAP::waitResult
  - PowerLDAP::getSearchEntry
  - PowerLDAP::getError
  - PowerLDAP::escape
  source_file: /src/pdns/modules/ldapbackend/powerldap.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/pdns/modules/ldapbackend/ldapauthenticator_p.hh
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: mech
        type: std::string
      - name: realm
        type: std::string
      - name: authcid
        type: std::string
      - name: authzid
        type: std::string
      item_type: struct
      name: SaslDefaults
      pos:
        line_end: 58
        line_start: 52
        source_file: /src/pdns/modules/ldapbackend/ldapauthenticator_p.hh
    typedefs: []
    union: []
- function_names:
  - ptr2ip4
  - ptr2ip6
  - ip2ptr4
  - ip2ptr6
  - strbind
  - str2tstamp
  source_file: /src/pdns/modules/ldapbackend/utils.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - LdapBackend::LdapBackend
  - LdapBackend::~LdapBackend()
  - LdapBackend::reconnect
  - LdapBackend::extract_common_attributes
  - LdapBackend::extract_entry_results
  - LdapFactory::LdapFactory
  - LdapFactory::declareArguments
  - LdapFactory::make
  - LdapLoader::LdapLoader
  source_file: /src/pdns/modules/ldapbackend/ldapbackend.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - LdapBackend::list
  - LdapBackend::list_simple
  - LdapBackend::list_strict
  - LdapBackend::lookup
  - LdapBackend::lookup_simple
  - LdapBackend::lookup_strict
  - LdapBackend::lookup_tree
  - LdapBackend::get
  - LdapBackend::lookupEnd
  - LdapBackend::getDomainInfo
  source_file: /src/pdns/modules/ldapbackend/native.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - PowerLDAP::SearchResult::SearchResult
  - '& operator=(const SearchResult& other)'
  source_file: /src/pdns/modules/ldapbackend/powerldap.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs:
    - item_type: typedef
      name: sentry_t
      pos:
        line_end: 55
        line_start: 55
        source_file: /src/pdns/modules/ldapbackend/powerldap.hh
      type: map
    - item_type: typedef
      name: sresult_t
      pos:
        line_end: 56
        line_start: 56
        source_file: /src/pdns/modules/ldapbackend/powerldap.hh
      type: vector
    - item_type: typedef
      name: Ptr
      pos:
        line_end: 65
        line_start: 65
        source_file: /src/pdns/modules/ldapbackend/powerldap.hh
      type: unique_ptr<SearchResult>
    union: []
- function_names:
  - operator<(const Bind2DNSRecord& rhs) const
  - operator()(const DNSName& a, const Bind2DNSRecord& b) const
  - operator()(const Bind2DNSRecord& a, const DNSName& b) const
  - operator()(const Bind2DNSRecord& a, const Bind2DNSRecord& b) const
  - LookButDontTouch::LookButDontTouch
  - LookButDontTouch::LookButDontTouch
  - LookButDontTouch::get
  - LookButDontTouch::getEntriesCount
  - BB2DomainInfo::getCheckInterval
  - '& main_filename() const'
  - Bind2Backend::handle::handle
  - Bind2Backend::handle::handle
  - '& operator=(const handle&)'
  - Bind2Backend::handle::setSLog
  source_file: /src/pdns/modules/bindbackend/bindbackend2.hh
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: qname
        type: DNSName
      - name: content
        type: string
      - name: nsec3hash
        type: string
      - name: ttl
        type: uint32_t
      - name: qtype
        type: uint16_t
      - name: auth
        type: bool
      item_type: struct
      name: Bind2DNSRecord
      pos:
        line_end: 71
        line_start: 54
        source_file: /src/pdns/modules/bindbackend/bindbackend2.hh
    - fields: []
      item_type: struct
      name: Bind2DNSCompare
      pos:
        line_end: 89
        line_start: 73
        source_file: /src/pdns/modules/bindbackend/bindbackend2.hh
    - fields: []
      item_type: struct
      name: NSEC3Tag
      pos:
        line_end: 93
        line_start: 91
        source_file: /src/pdns/modules/bindbackend/bindbackend2.hh
    - fields: []
      item_type: struct
      name: UnorderedNameTag
      pos:
        line_end: 96
        line_start: 94
        source_file: /src/pdns/modules/bindbackend/bindbackend2.hh
    - fields: []
      item_type: struct
      name: NameTag
      pos:
        line_end: 178
        line_start: 176
        source_file: /src/pdns/modules/bindbackend/bindbackend2.hh
    typedefs:
    - item_type: typedef
      name: recordstorage_t
      pos:
        line_end: 104
        line_start: 98
        source_file: /src/pdns/modules/bindbackend/bindbackend2.hh
      type: multi_index_container
    - item_type: typedef
      name: state_t
      pos:
        line_end: 229
        line_start: 226
        source_file: /src/pdns/modules/bindbackend/bindbackend2.hh
      type: multi_index_container
    union: []
- function_names:
  - Bind2Backend::setupDNSSEC
  - Bind2Backend::getCapabilities
  - Bind2Backend::getNSEC3PARAM
  - Bind2Backend::getNSEC3PARAMuncached
  - Bind2Backend::getAllDomainMetadata
  - Bind2Backend::getDomainMetadata
  - Bind2Backend::setDomainMetadata
  - Bind2Backend::getDomainKeys
  - Bind2Backend::removeDomainKey
  - Bind2Backend::addDomainKey
  - Bind2Backend::activateDomainKey
  - Bind2Backend::deactivateDomainKey
  - Bind2Backend::publishDomainKey
  - Bind2Backend::unpublishDomainKey
  - Bind2Backend::getTSIGKey
  - Bind2Backend::setTSIGKey
  - Bind2Backend::deleteTSIGKey
  - Bind2Backend::getTSIGKeys
  - Bind2Backend::setupStatements
  - Bind2Backend::freeStatements
  - ASSERT_ROW_COLUMNS
  - Bind2Backend::setupDNSSEC
  - Bind2Backend::setupStatements
  - Bind2Backend::freeStatements
  - Bind2Backend::getCapabilities
  - Bind2Backend::getNSEC3PARAM
  - Bind2Backend::getNSEC3PARAMuncached
  - Bind2Backend::getAllDomainMetadata
  - Bind2Backend::getDomainMetadata
  - Bind2Backend::setDomainMetadata
  - Bind2Backend::getDomainKeys
  - Bind2Backend::removeDomainKey
  - Bind2Backend::addDomainKey
  - Bind2Backend::activateDomainKey
  - Bind2Backend::deactivateDomainKey
  - Bind2Backend::publishDomainKey
  - Bind2Backend::unpublishDomainKey
  - Bind2Backend::getTSIGKey
  - Bind2Backend::setTSIGKey
  - Bind2Backend::deleteTSIGKey
  - Bind2Backend::getTSIGKeys
  source_file: /src/pdns/modules/bindbackend/binddnssec.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - BB2DomainInfo::BB2DomainInfo
  - BB2DomainInfo::setCheckInterval
  - BB2DomainInfo::current
  - BB2DomainInfo::getCtime
  - BB2DomainInfo::updateCtime
  - Bind2Backend::safeGetBBDomainInfo
  - Bind2Backend::safeGetBBDomainInfo
  - Bind2Backend::safeRemoveBBDomainInfo
  - Bind2Backend::safePutBBDomainInfo
  - Bind2Backend::setNotified
  - Bind2Backend::setLastCheck
  - Bind2Backend::setStale
  - Bind2Backend::setFresh
  - Bind2Backend::startTransaction
  - Bind2Backend::commitTransaction
  - Bind2Backend::abortTransaction
  - endsOn
  - stripDomainSuffix
  - bindEscape
  - Bind2Backend::feedRecord
  - Bind2Backend::getUpdatedPrimaries
  - Bind2Backend::getAllDomains
  - Bind2Backend::getUnfreshSecondaryInfos
  - Bind2Backend::getDomainInfo
  - Bind2Backend::alsoNotifies
  - Bind2Backend::parseZoneFile
  - Bind2Backend::insertRecord
  - Bind2Backend::DLReloadNowHandler
  - Bind2Backend::DLDomStatusHandler
  - printDomainExtendedStatus
  - Bind2Backend::DLDomExtendedStatusHandler
  - Bind2Backend::DLListRejectsHandler
  - Bind2Backend::DLAddDomainHandler
  - Bind2Backend::Bind2Backend
  - Bind2Backend::~Bind2Backend()
  - Bind2Backend::rediscover
  - Bind2Backend::reload
  - Bind2Backend::fixupOrderAndAuth
  - Bind2Backend::doEmptyNonTerminals
  - Bind2Backend::loadConfig
  - Bind2Backend::queueReloadAndStore
  - Bind2Backend::findBeforeAndAfterUnhashed
  - Bind2Backend::getBeforeAndAfterNamesAbsolute
  - Bind2Backend::lookup
  - Bind2Backend::get
  - Bind2Backend::lookupEnd
  - Bind2Backend::handle::get(DNSResourceRecord& r)
  - Bind2Backend::handle::reset()
  - Bind2Backend::handle::get_normal(DNSResourceRecord& r)
  - Bind2Backend::list
  - Bind2Backend::handle::get_list(DNSResourceRecord& r)
  - Bind2Backend::autoPrimariesList
  - Bind2Backend::autoPrimaryBackend
  - Bind2Backend::createDomainEntry
  - Bind2Backend::createSecondaryDomain
  - Bind2Backend::searchRecords
  - Bind2Factory::Bind2Factory
  - Bind2Factory::declareArguments
  - Bind2Factory::make
  - Bind2Factory::makeMetadataOnly
  - Bind2Factory::assertEmptySuffix
  - Bind2Loader::Bind2Loader
  source_file: /src/pdns/modules/bindbackend/bindbackend2.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - CoWrapper::CoWrapper
  - CoWrapper::~CoWrapper()
  - CoWrapper::launch
  - CoWrapper::send
  - CoWrapper::receive
  - PipeBackend::PipeBackend
  - PipeBackend::launch
  - PipeBackend::cleanup
  - PipeBackend::lookup
  - PipeBackend::list
  - PipeBackend::directBackendCmd
  - PipeBackend::~PipeBackend()
  - PipeBackend::throwTooShortDataError
  - PipeBackend::get
  - PipeFactory::PipeFactory
  - PipeFactory::declareArguments
  - PipeFactory::make
  - PipeLoader::PipeLoader
  source_file: /src/pdns/modules/pipebackend/pipebackend.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - PipeBackend::getCapabilities
  source_file: /src/pdns/modules/pipebackend/pipebackend.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - ~CoRemote()
  source_file: /src/pdns/modules/pipebackend/coprocess.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - CoProcess::CoProcess
  - CoProcess::launch
  - CoProcess::~CoProcess()
  - CoProcess::checkStatus
  - CoProcess::send
  - CoProcess::receive
  - CoProcess::sendReceive
  - UnixRemote::UnixRemote
  - UnixRemote::send
  - UnixRemote::receive
  - UnixRemote::sendReceive
  - isUnixSocket
  - main
  source_file: /src/pdns/modules/pipebackend/coprocess.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - BPF_ALU64_REG
  - BPF_ALU32_REG
  - BPF_ALU64_IMM
  - BPF_ALU32_IMM
  - BPF_MOV64_REG
  - BPF_MOV32_REG
  - BPF_MOV64_IMM
  - BPF_LD_IMM64
  - BPF_LD_MAP_FD
  - BPF_LD_ABS
  - BPF_LDX_MEM
  - BPF_STX_MEM
  - BPF_ST_MEM
  - BPF_JMP_REG
  - BPF_JMP_IMM
  - BPF_RAW_INSN
  - BPF_EXIT_INSN
  source_file: /src/pdns/ext/libbpf/libbpf.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: LOG_BUF_SIZE
      pos:
        line_end: 12
        line_start: 11
        source_file: /src/pdns/ext/libbpf/libbpf.h
      type_or_value: '65536'
    - item_type: preproc_def
      name: dst_reg
      pos:
        line_end: 95
        line_start: 82
        source_file: /src/pdns/ext/libbpf/libbpf.h
      type_or_value: "= 0,\t\t\t\t\t\\\n\t\t.src_reg = 0,\t\t\t\t\t\\\n\t\t.off   =
        0,\t\t\t\t\t\\\n\t\t.imm   = (__s32)(((__u64) (IMM)) >> 32) })"
    - item_type: preproc_def
      name: BPF_PSEUDO_MAP_FD
      pos:
        line_end: 98
        line_start: 97
        source_file: /src/pdns/ext/libbpf/libbpf.h
      type_or_value: '1'
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/pdns/ext/arc4random/arc4random.hh
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - fatal
  source_file: /src/pdns/ext/arc4random/log.h
  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/pdns/ext/arc4random/chacha_private.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: input[16]
        type: u32
      item_type: struct
      name: chacha_ctx
      pos:
        line_end: 16
        line_start: 13
        source_file: /src/pdns/ext/arc4random/chacha_private.h
    typedefs:
    - item_type: typedef
      name: u8
      pos:
        line_end: 10
        line_start: 10
        source_file: /src/pdns/ext/arc4random/chacha_private.h
      type: unsigned char
    - item_type: typedef
      name: u32
      pos:
        line_end: 11
        line_start: 11
        source_file: /src/pdns/ext/arc4random/chacha_private.h
      type: unsigned int
    union: []
- function_names:
  - seed_from_prngd
  source_file: /src/pdns/ext/arc4random/includes.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - arc4random_uniform
  source_file: /src/pdns/ext/arc4random/arc4random_uniform.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - _ssh_compat_getentropy
  source_file: /src/pdns/ext/arc4random/bsd-getentropy.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: SSH_RANDOM_DEV
      pos:
        line_end: 22
        line_start: 21
        source_file: /src/pdns/ext/arc4random/bsd-getentropy.c
      type_or_value: '"/dev/urandom"'
    structs: []
    typedefs: []
    union: []
- function_names:
  - explicit_bzero
  - explicit_bzero
  - explicit_bzero
  source_file: /src/pdns/ext/arc4random/explicit_bzero.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - getentropy
  - minimum
  - _rs_init
  - _rs_stir
  - _rs_stir_if_needed
  - _rs_rekey
  - _rs_random_buf
  - _rs_random_u32
  - arc4random
  - arc4random_buf
  - arc4random_buf
  source_file: /src/pdns/ext/arc4random/arc4random.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: inline
      pos:
        line_end: 64
        line_start: 63
        source_file: /src/pdns/ext/arc4random/arc4random.c
      type_or_value: __inline
    - item_type: preproc_def
      name: KEYSZ
      pos:
        line_end: 69
        line_start: 68
        source_file: /src/pdns/ext/arc4random/arc4random.c
      type_or_value: '32'
    - item_type: preproc_def
      name: IVSZ
      pos:
        line_end: 70
        line_start: 69
        source_file: /src/pdns/ext/arc4random/arc4random.c
      type_or_value: '8'
    - item_type: preproc_def
      name: BLOCKSZ
      pos:
        line_end: 71
        line_start: 70
        source_file: /src/pdns/ext/arc4random/arc4random.c
      type_or_value: '64'
    - item_type: preproc_def
      name: RSBUFSZ
      pos:
        line_end: 72
        line_start: 71
        source_file: /src/pdns/ext/arc4random/arc4random.c
      type_or_value: (16*BLOCKSZ)
    - item_type: preproc_def
      name: REKEY_BASE
      pos:
        line_end: 74
        line_start: 73
        source_file: /src/pdns/ext/arc4random/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: 79
        line_start: 76
        source_file: /src/pdns/ext/arc4random/arc4random.c
    - fields:
      - name: rs_chacha
        type: chacha_ctx
      - name: rs_buf[RSBUFSZ]
        type: u_char
      item_type: struct
      name: _rsx
      pos:
        line_end: 85
        line_start: 82
        source_file: /src/pdns/ext/arc4random/arc4random.c
    typedefs: []
    union: []
- function_names:
  - _ARC4_LOCK
  - _ARC4_UNLOCK
  - _getentropy_fail
  - _rs_forkhandler
  - _rs_forkdetect
  - _rs_allocate
  source_file: /src/pdns/ext/arc4random/arc4random.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - YaHTTP::URL::parseSchema
  - YaHTTP::URL::parseHost
  - YaHTTP::URL::parseUserPass
  - YaHTTP::URL::parsePath
  - YaHTTP::URL::parseParameters
  - YaHTTP::URL::parseAnchor
  - YaHTTP::URL::initialize
  - YaHTTP::URL::to_string
  - YaHTTP::URL::URL
  - YaHTTP::URL::URL
  - YaHTTP::URL::URL
  - YaHTTP::URL::parse
  - '& operator<<(std::ostream& os, const URL& url)'
  - YaHTTP::URL::parseSchema
  - YaHTTP::URL::parseHost
  - YaHTTP::URL::parseUserPass
  - YaHTTP::URL::parsePath
  - YaHTTP::URL::parseParameters
  - YaHTTP::URL::parseAnchor
  - YaHTTP::URL::initialize
  - YaHTTP::URL::to_string
  - YaHTTP::URL::URL
  - YaHTTP::URL::URL
  - YaHTTP::URL::URL
  - YaHTTP::URL::parse
  - '& operator<<(std::ostream& os, const URL& url)'
  source_file: /src/pdns/ext/yahttp/yahttp/url.hpp
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: YAHTTP_MAX_URL_LENGTH
      pos:
        line_end: 8
        line_start: 7
        source_file: /src/pdns/ext/yahttp/yahttp/url.hpp
      type_or_value: '2048'
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/pdns/ext/yahttp/yahttp/yahttp.hpp
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - YaHTTP::Cookie::Cookie
  - YaHTTP::Cookie::Cookie
  - '& operator=(const Cookie &rhs)'
  - YaHTTP::Cookie::str
  - YaHTTP::CookieJar::CookieJar
  - YaHTTP::CookieJar::CookieJar
  - '& operator=(const CookieJar & rhs)'
  - YaHTTP::CookieJar::clear
  - YaHTTP::CookieJar::keyValuePair
  - YaHTTP::CookieJar::parseCookieHeader
  - YaHTTP::CookieJar::parseSetCookieHeader
  - YaHTTP::Cookie::Cookie
  - YaHTTP::Cookie::Cookie
  - '& operator=(const Cookie &rhs)'
  - YaHTTP::Cookie::str
  - YaHTTP::CookieJar::CookieJar
  - YaHTTP::CookieJar::CookieJar
  - '& operator=(const CookieJar & rhs)'
  - YaHTTP::CookieJar::clear
  - YaHTTP::CookieJar::keyValuePair
  - YaHTTP::CookieJar::parseCookieHeader
  - YaHTTP::CookieJar::parseSetCookieHeader
  source_file: /src/pdns/ext/yahttp/yahttp/cookie.hpp
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - operator() (const std::string& lhs, const std::string& rhs) const
  - DateTime
  - initialize
  - setLocal
  - setGm
  - fromLocaltime
  - fromGmtime
  - fromTm
  - validate
  - rfc_str
  - cookie_str
  - parseCookie
  - unixtime
  - Utility::decodeURL
  - Utility::encodeURL
  - Utility::encodeURL
  - Utility::status2text
  - Utility::parseUrlParameters
  - Utility::iequals
  - Utility::iequals
  - Utility::trimLeft
  - Utility::trimRight
  - Utility::trim
  - Utility::camelizeHeader
  source_file: /src/pdns/ext/yahttp/yahttp/utility.hpp
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: YAHTTP_MAX_REQUEST_LINE_SIZE
      pos:
        line_end: 4
        line_start: 3
        source_file: /src/pdns/ext/yahttp/yahttp/utility.hpp
      type_or_value: '8192'
    - item_type: preproc_def
      name: YAHTTP_MAX_REQUEST_FIELDS
      pos:
        line_end: 8
        line_start: 7
        source_file: /src/pdns/ext/yahttp/yahttp/utility.hpp
      type_or_value: '100'
    structs:
    - fields: []
      item_type: struct
      name: ASCIICINullSafeComparator
      pos:
        line_end: 35
        line_start: 24
        source_file: /src/pdns/ext/yahttp/yahttp/utility.hpp
    typedefs:
    - item_type: typedef
      name: strstr_map_t
      pos:
        line_end: 37
        line_start: 37
        source_file: /src/pdns/ext/yahttp/yahttp/utility.hpp
      type: map<std::string,std::string,ASCIICINullSafeComparator>
    union: []
- function_names: []
  source_file: /src/pdns/ext/yahttp/yahttp/yahttp-config.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - YaHTTP::Router::Router
  - YaHTTP::Router::Map
  - YaHTTP::Router::Get
  - YaHTTP::Router::Post
  - YaHTTP::Router::Put
  - YaHTTP::Router::Patch
  - YaHTTP::Router::Delete
  - YaHTTP::Router::Any
  - YaHTTP::Router::Match
  - YaHTTP::Router::Route
  - YaHTTP::Router::PrintRoutes
  - YaHTTP::Router::URLFor
  - '& GetRoutes()'
  - YaHTTP::Router::Clear
  - YaHTTP::Router::Router
  - YaHTTP::Router::Map
  - YaHTTP::Router::Get
  - YaHTTP::Router::Post
  - YaHTTP::Router::Put
  - YaHTTP::Router::Patch
  - YaHTTP::Router::Delete
  - YaHTTP::Router::Any
  - YaHTTP::Router::Match
  - YaHTTP::Router::Route
  - YaHTTP::Router::PrintRoutes
  - YaHTTP::Router::URLFor
  - '& GetRoutes()'
  - YaHTTP::Router::Clear
  source_file: /src/pdns/ext/yahttp/yahttp/router.hpp
  types:
    enum:
    - enumerators:
      - name: RouteFound
        value: '1'
      - name: RouteNoMethod
        value: '-1'
      - name: RouteNotFound
        value: '0'
      item_type: enum
      name: RoutingResult
      pos:
        line_end: 31
        line_start: 27
        source_file: /src/pdns/ext/yahttp/yahttp/router.hpp
    - enumerators:
      - name: RouteFound
        value: '1'
      - name: RouteNoMethod
        value: '-1'
      - name: RouteNotFound
        value: '0'
      item_type: enum
      name: RoutingResult
      pos:
        line_end: 31
        line_start: 27
        source_file: /src/pdns/ext/yahttp/yahttp/router.hpp
    preproc_defs:
    - item_type: preproc_def
      name: IGNORE
      pos:
        line_end: 9
        line_start: 8
        source_file: /src/pdns/ext/yahttp/yahttp/router.hpp
      type_or_value: std::ignore
    - item_type: preproc_def
      name: IGNORE
      pos:
        line_end: 15
        line_start: 14
        source_file: /src/pdns/ext/yahttp/yahttp/router.hpp
      type_or_value: boost::tuples::ignore
    structs: []
    typedefs:
    - item_type: typedef
      name: THandlerFunction
      pos:
        line_end: 33
        line_start: 33
        source_file: /src/pdns/ext/yahttp/yahttp/router.hpp
      type: function <void(Request* req, Response* resp)>
    - item_type: typedef
      name: TRoute
      pos:
        line_end: 34
        line_start: 34
        source_file: /src/pdns/ext/yahttp/yahttp/router.hpp
      type: tuple<std::string, std::string, THandlerFunction, std::string>
    - item_type: typedef
      name: TRouteList
      pos:
        line_end: 35
        line_start: 35
        source_file: /src/pdns/ext/yahttp/yahttp/router.hpp
      type: vector<TRoute>
    - item_type: typedef
      name: TDelim
      pos:
        line_end: 36
        line_start: 36
        source_file: /src/pdns/ext/yahttp/yahttp/router.hpp
      type: tuple<int,int>
    - item_type: typedef
      name: THandlerFunction
      pos:
        line_end: 33
        line_start: 33
        source_file: /src/pdns/ext/yahttp/yahttp/router.hpp
      type: function <void(Request* req, Response* resp)>
    - item_type: typedef
      name: TRoute
      pos:
        line_end: 34
        line_start: 34
        source_file: /src/pdns/ext/yahttp/yahttp/router.hpp
      type: tuple<std::string, std::string, THandlerFunction, std::string>
    - item_type: typedef
      name: TRouteList
      pos:
        line_end: 35
        line_start: 35
        source_file: /src/pdns/ext/yahttp/yahttp/router.hpp
      type: vector<TRoute>
    - item_type: typedef
      name: TDelim
      pos:
        line_end: 36
        line_start: 36
        source_file: /src/pdns/ext/yahttp/yahttp/router.hpp
      type: tuple<int,int>
    union: []
- function_names:
  - YaHTTP::isspace
  - YaHTTP::isspace
  - YaHTTP::isxdigit
  - YaHTTP::isxdigit
  - YaHTTP::isdigit
  - YaHTTP::isdigit
  - YaHTTP::isalnum
  - YaHTTP::isalnum
  - YaHTTP::AsyncLoader<T>::feed
  - YaHTTP::HTTPBase::write
  - '& operator<<(std::ostream& os, const Response &resp)'
  - '& operator>>(std::istream& is, Response &resp)'
  - '& operator<<(std::ostream& os, const Request &req)'
  - '& operator>>(std::istream& is, Request &req)'
  - YaHTTP::isspace
  - YaHTTP::isspace
  - YaHTTP::isxdigit
  - YaHTTP::isxdigit
  - YaHTTP::isdigit
  - YaHTTP::isdigit
  - YaHTTP::isalnum
  - YaHTTP::isalnum
  - YaHTTP::AsyncLoader<T>::feed
  - YaHTTP::HTTPBase::write
  - '& operator<<(std::ostream& os, const Response &resp)'
  - '& operator>>(std::istream& is, Response &resp)'
  - '& operator<<(std::ostream& os, const Request &req)'
  - '& operator>>(std::istream& is, Request &req)'
  source_file: /src/pdns/ext/yahttp/yahttp/reqresp.cpp
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - YaHTTP::Error::Error
  - YaHTTP::Error::Error
  - ~Error() throw()
  - YaHTTP::Error::what
  - YaHTTP::ParseError::ParseError
  - YaHTTP::ParseError::ParseError
  - YaHTTP::Error::Error
  - YaHTTP::Error::Error
  - ~Error() throw()
  - YaHTTP::Error::what
  - YaHTTP::ParseError::ParseError
  - YaHTTP::ParseError::ParseError
  source_file: /src/pdns/ext/yahttp/yahttp/exception.hpp
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - YaHTTP::Router::map
  - YaHTTP::Router::match
  - YaHTTP::Router::route
  - YaHTTP::Router::printRoutes
  - YaHTTP::Router::urlFor
  - YaHTTP::Router::map
  - YaHTTP::Router::match
  - YaHTTP::Router::route
  - YaHTTP::Router::printRoutes
  - YaHTTP::Router::urlFor
  source_file: /src/pdns/ext/yahttp/yahttp/router.cpp
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - YaHTTP::HTTPBase::SendBodyRender::SendBodyRender
  - operator()(const HTTPBase *doc, std::ostream& os, bool chunked) const
  - YaHTTP::HTTPBase::SendFileRender::SendFileRender
  - operator()(const HTTPBase *doc __attribute__((unused)), std::ostream& os, bool
    chunked) const
  - YaHTTP::HTTPBase::HTTPBase
  - ~HTTPBase()
  - YaHTTP::HTTPBase::initialize
  - YaHTTP::HTTPBase::HTTPBase
  - '& operator=(const HTTPBase& rhs)'
  - '& GET()'
  - '& POST()'
  - '& COOKIES()'
  - YaHTTP::HTTPBase::versionStr
  - YaHTTP::HTTPBase::str
  - YaHTTP::Response::Response
  - YaHTTP::Response::Response
  - '& operator=(const HTTPBase& rhs) override'
  - YaHTTP::Response::initialize
  - YaHTTP::Response::initialize
  - YaHTTP::Request::Request
  - YaHTTP::Request::Request
  - '& operator=(const HTTPBase& rhs) override'
  - YaHTTP::Request::initialize
  - YaHTTP::Request::initialize
  - YaHTTP::Request::setup
  - YaHTTP::Request::preparePost
  - YaHTTP::AsyncLoader::initialize
  - YaHTTP::AsyncLoader::ready
  - YaHTTP::AsyncLoader::finalize
  - YaHTTP::HTTPBase::SendBodyRender::SendBodyRender
  - operator()(const HTTPBase *doc, std::ostream& os, bool chunked) const
  - YaHTTP::HTTPBase::SendFileRender::SendFileRender
  - operator()(const HTTPBase *doc __attribute__((unused)), std::ostream& os, bool
    chunked) const
  - YaHTTP::HTTPBase::HTTPBase
  - ~HTTPBase()
  - YaHTTP::HTTPBase::initialize
  - YaHTTP::HTTPBase::HTTPBase
  - '& operator=(const HTTPBase& rhs)'
  - '& GET()'
  - '& POST()'
  - '& COOKIES()'
  - YaHTTP::HTTPBase::versionStr
  - YaHTTP::HTTPBase::str
  - YaHTTP::Response::Response
  - YaHTTP::Response::Response
  - '& operator=(const HTTPBase& rhs) override'
  - YaHTTP::Response::initialize
  - YaHTTP::Response::initialize
  - YaHTTP::Request::Request
  - YaHTTP::Request::Request
  - '& operator=(const HTTPBase& rhs) override'
  - YaHTTP::Request::initialize
  - YaHTTP::Request::initialize
  - YaHTTP::Request::setup
  - YaHTTP::Request::preparePost
  - YaHTTP::AsyncLoader::initialize
  - YaHTTP::AsyncLoader::ready
  - YaHTTP::AsyncLoader::finalize
  source_file: /src/pdns/ext/yahttp/yahttp/reqresp.hpp
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: YAHTTP_MAX_HEADER_SIZE
      pos:
        line_end: 24
        line_start: 23
        source_file: /src/pdns/ext/yahttp/yahttp/reqresp.hpp
      type_or_value: (100 * 1024)
    - item_type: preproc_def
      name: YAHTTP_MAX_REQUEST_SIZE
      pos:
        line_end: 28
        line_start: 27
        source_file: /src/pdns/ext/yahttp/yahttp/reqresp.hpp
      type_or_value: '2097152'
    - item_type: preproc_def
      name: YAHTTP_MAX_RESPONSE_SIZE
      pos:
        line_end: 32
        line_start: 31
        source_file: /src/pdns/ext/yahttp/yahttp/reqresp.hpp
      type_or_value: '2097152'
    - item_type: preproc_def
      name: YAHTTP_TYPE_REQUEST
      pos:
        line_end: 35
        line_start: 34
        source_file: /src/pdns/ext/yahttp/yahttp/reqresp.hpp
      type_or_value: '1'
    - item_type: preproc_def
      name: YAHTTP_TYPE_RESPONSE
      pos:
        line_end: 36
        line_start: 35
        source_file: /src/pdns/ext/yahttp/yahttp/reqresp.hpp
      type_or_value: '2'
    structs: []
    typedefs:
    - item_type: typedef
      name: strcookie_map_t
      pos:
        line_end: 38
        line_start: 38
        source_file: /src/pdns/ext/yahttp/yahttp/reqresp.hpp
      type: map<std::string,Cookie,ASCIICINullSafeComparator>
    - item_type: typedef
      name: strcookie_map_t
      pos:
        line_end: 38
        line_start: 38
        source_file: /src/pdns/ext/yahttp/yahttp/reqresp.hpp
      type: map<std::string,Cookie,ASCIICINullSafeComparator>
    union: []
- function_names:
  - COMPILER_ASSERT
  - LOAD128
  - STORE128
  - AES_XENCRYPT
  - AES_XENCRYPTLAST
  - AES_XDECRYPT
  - AES_XDECRYPTLAST
  - XOR128
  - XOR128_3
  - SET64x2
  - BYTESHL128
  - SHUFFLE32x4_3333
  - RKINVERT
  - TWEAK_EXPAND
  - SHL1_128
  - AES_KEYGEN
  - LOAD128
  - STORE128
  - AES_ENCRYPT
  - AES_ENCRYPTLAST
  - AES_DECRYPT
  - AES_DECRYPTLAST
  - AES_KEYGEN
  - XOR128
  - XOR128_3
  - SET64x2
  - BYTESHL128
  - SHUFFLE32x4_3333
  - RKINVERT
  - TWEAK_EXPAND
  - SHL1_128
  - expand_key
  - EXPAND_KEY
  - aes_encrypt
  - aes_decrypt
  - aes_encrypt_with_tweak
  - aes_decrypt_with_tweak
  - aes_xex_tweak
  - aes_xex_encrypt
  - aes_ndx_decrypt
  - bin2hex
  - hex2bin
  - ipcrypt_zeroize
  - ipcrypt_key_from_hex
  - ipcrypt_ndip_from_hex
  - ipcrypt_ndx_ndip_from_hex
  - ipcrypt_str_to_ip16
  - ipcrypt_ip16_to_str
  - ipcrypt_sockaddr_to_ip16
  - ipcrypt_ip16_to_sockaddr
  - ipcrypt_init
  - ipcrypt_deinit
  - ipcrypt_pfx_init
  - ipcrypt_pfx_deinit
  - ipcrypt_is_mapped_ipv4
  - ipcrypt_pfx_pad_prefix
  - ipcrypt_pfx_get_bit
  - ipcrypt_pfx_set_bit
  - ipcrypt_pfx_shift_left
  - ipcrypt_pfx_encrypt_ip16
  - ipcrypt_pfx_decrypt_ip16
  - ipcrypt_pfx_encrypt_ip_str
  - ipcrypt_pfx_decrypt_ip_str
  - ipcrypt_ndx_init
  - ipcrypt_ndx_deinit
  - ipcrypt_encrypt_ip16
  - ipcrypt_decrypt_ip16
  - ipcrypt_encrypt_ip_str
  - ipcrypt_decrypt_ip_str
  - ipcrypt_nd_encrypt_ip16
  - ipcrypt_nd_decrypt_ip16
  - ipcrypt_nd_encrypt_ip_str
  - ipcrypt_nd_decrypt_ip_str
  - ipcrypt_ndx_encrypt_ip16
  - ipcrypt_ndx_decrypt_ip16
  - ipcrypt_ndx_encrypt_ip_str
  - ipcrypt_ndx_decrypt_ip_str
  source_file: /src/pdns/ext/ipcrypt2/ipcrypt2.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: ROUNDS
      pos:
        line_end: 51
        line_start: 50
        source_file: /src/pdns/ext/ipcrypt2/ipcrypt2.c
      type_or_value: '10'
    - item_type: preproc_def
      name: HAVE_EXPLICIT_BZERO
      pos:
        line_end: 63
        line_start: 62
        source_file: /src/pdns/ext/ipcrypt2/ipcrypt2.c
      type_or_value: '1'
    - item_type: preproc_def
      name: HAVE_EXPLICIT_BZERO
      pos:
        line_end: 66
        line_start: 65
        source_file: /src/pdns/ext/ipcrypt2/ipcrypt2.c
      type_or_value: '1'
    - item_type: preproc_def
      name: __ARM_FEATURE_CRYPTO
      pos:
        line_end: 73
        line_start: 72
        source_file: /src/pdns/ext/ipcrypt2/ipcrypt2.c
      type_or_value: '1'
    - item_type: preproc_def
      name: __ARM_FEATURE_AES
      pos:
        line_end: 76
        line_start: 75
        source_file: /src/pdns/ext/ipcrypt2/ipcrypt2.c
      type_or_value: '1'
    structs:
    - fields:
      - name: rkeys
        type: KeySchedule
      item_type: struct
      name: AesState
      pos:
        line_end: 327
        line_start: 325
        source_file: /src/pdns/ext/ipcrypt2/ipcrypt2.c
    - fields:
      - name: tkeys
        type: KeySchedule
      - name: rkeys
        type: KeySchedule
      item_type: struct
      name: NDXState
      pos:
        line_end: 335
        line_start: 332
        source_file: /src/pdns/ext/ipcrypt2/ipcrypt2.c
    - fields:
      - name: k1keys
        type: KeySchedule
      - name: k2keys
        type: KeySchedule
      item_type: struct
      name: PFXState
      pos:
        line_end: 343
        line_start: 340
        source_file: /src/pdns/ext/ipcrypt2/ipcrypt2.c
    typedefs:
    - item_type: typedef
      name: BlockVec
      pos:
        line_end: 100
        line_start: 100
        source_file: /src/pdns/ext/ipcrypt2/ipcrypt2.c
      type: uint64x2_t
    - item_type: typedef
      name: BlockVec
      pos:
        line_end: 236
        line_start: 236
        source_file: /src/pdns/ext/ipcrypt2/ipcrypt2.c
      type: __m128i
    - item_type: typedef
      name: KeySchedule[1 + ROUNDS]
      pos:
        line_end: 315
        line_start: 315
        source_file: /src/pdns/ext/ipcrypt2/ipcrypt2.c
      type: BlockVec
    - item_type: typedef
      name: InvKeySchedule[ROUNDS - 1]
      pos:
        line_end: 320
        line_start: 320
        source_file: /src/pdns/ext/ipcrypt2/ipcrypt2.c
      type: BlockVec
    union: []
- function_names: []
  source_file: /src/pdns/ext/ipcrypt2/include/ipcrypt2.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: IPCRYPT_KEYBYTES
      pos:
        line_end: 21
        line_start: 20
        source_file: /src/pdns/ext/ipcrypt2/include/ipcrypt2.h
      type_or_value: 16U
    - item_type: preproc_def
      name: IPCRYPT_TWEAKBYTES
      pos:
        line_end: 24
        line_start: 23
        source_file: /src/pdns/ext/ipcrypt2/include/ipcrypt2.h
      type_or_value: 8U
    - item_type: preproc_def
      name: IPCRYPT_MAX_IP_STR_BYTES
      pos:
        line_end: 27
        line_start: 26
        source_file: /src/pdns/ext/ipcrypt2/include/ipcrypt2.h
      type_or_value: 46U
    - item_type: preproc_def
      name: IPCRYPT_NDIP_BYTES
      pos:
        line_end: 30
        line_start: 29
        source_file: /src/pdns/ext/ipcrypt2/include/ipcrypt2.h
      type_or_value: 24U
    - item_type: preproc_def
      name: IPCRYPT_NDIP_STR_BYTES
      pos:
        line_end: 33
        line_start: 32
        source_file: /src/pdns/ext/ipcrypt2/include/ipcrypt2.h
      type_or_value: (48U + 1U)
    - item_type: preproc_def
      name: IPCRYPT_NDX_KEYBYTES
      pos:
        line_end: 36
        line_start: 35
        source_file: /src/pdns/ext/ipcrypt2/include/ipcrypt2.h
      type_or_value: 32U
    - item_type: preproc_def
      name: IPCRYPT_NDX_TWEAKBYTES
      pos:
        line_end: 39
        line_start: 38
        source_file: /src/pdns/ext/ipcrypt2/include/ipcrypt2.h
      type_or_value: 16U
    - item_type: preproc_def
      name: IPCRYPT_NDX_NDIP_BYTES
      pos:
        line_end: 42
        line_start: 41
        source_file: /src/pdns/ext/ipcrypt2/include/ipcrypt2.h
      type_or_value: 32U
    - item_type: preproc_def
      name: IPCRYPT_NDX_NDIP_STR_BYTES
      pos:
        line_end: 45
        line_start: 44
        source_file: /src/pdns/ext/ipcrypt2/include/ipcrypt2.h
      type_or_value: (64U + 1U)
    - item_type: preproc_def
      name: IPCRYPT_PFX_KEYBYTES
      pos:
        line_end: 48
        line_start: 47
        source_file: /src/pdns/ext/ipcrypt2/include/ipcrypt2.h
      type_or_value: 32U
    structs:
    - fields:
      - name: opaque[16U * 11]
        type: uint8_t
      item_type: struct
      name: IPCrypt
      pos:
        line_end: 119
        line_start: 117
        source_file: /src/pdns/ext/ipcrypt2/include/ipcrypt2.h
    - fields:
      - name: opaque[16U * 11 * 2]
        type: uint8_t
      item_type: struct
      name: IPCryptPFX
      pos:
        line_end: 211
        line_start: 209
        source_file: /src/pdns/ext/ipcrypt2/include/ipcrypt2.h
    - fields:
      - name: opaque[16U * 11 * 2]
        type: uint8_t
      item_type: struct
      name: IPCryptNDX
      pos:
        line_end: 276
        line_start: 274
        source_file: /src/pdns/ext/ipcrypt2/include/ipcrypt2.h
    typedefs: []
    union: []
- function_names:
  - __has_attribute
  - untrinsics_sbox
  - untrinsics_inv_sbox
  - untrinsics_sbox
  - untrinsics_inv_sbox
  - untrinsics_xtime
  - untrinsics_mul2
  - untrinsics_mul3
  - untrinsics_mul9
  - untrinsics_mul0b
  - untrinsics_mul0d
  - untrinsics_mul0e
  - untrinsics_sub_shiftrows
  - untrinsics_invsub_shiftrows
  - untrinsics_mixcolumns
  - untrinsics_inv_mixcolumns
  - untrinsics_rot_word
  - untrinsics_sub_word
  - untrinsics_copy
  - _mm_aesenc_si128
  - _mm_aesenclast_si128
  - _mm_aesdec_si128
  - _mm_aesdeclast_si128
  - _mm_aesimc_si128
  - _mm_aeskeygenassist_si128
  - _mm_clmulepi64_si128
  - _mm_loadu_si128
  - _mm_storeu_si128
  - _mm_xor_si128
  - _mm_or_si128
  - _mm_and_si128
  - _mm_set_epi64x
  - _mm_slli_si128
  - _mm_srli_si128
  - _MM_SHUFFLE
  - _mm_shuffle_epi32
  - _mm_shuffle_epi8
  - _mm_loadu_si64
  - _mm_setr_epi8
  - _mm_setr_epi32
  - _mm_srli_epi32
  - _mm_slli_epi32
  - _mm_srli_epi16
  - _mm_slli_epi16
  - _mm_srli_epi64
  - _mm_slli_epi64
  - _mm_setzero_si128
  - _mm_set1_epi8
  - _mm_add_epi8
  - _mm_sub_epi8
  - _mm_add_epi64
  - _mm_sub_epi64
  - _mm_cmpeq_epi8
  - _mm_test_all_zeros
  - _mm_testz_si128
  - _mm_test_all_ones
  source_file: /src/pdns/ext/ipcrypt2/softaes/untrinsics.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: __untrinsics__
      pos:
        line_end: 11
        line_start: 10
        source_file: /src/pdns/ext/ipcrypt2/softaes/untrinsics.h
      type_or_value: '1'
    structs: []
    typedefs: []
    union:
    - fields:
      - name: b[16]
        type: uint8_t
      - name: w[4]
        type: uint32_t
      - name: q[2]
        type: uint64_t
      item_type: union
      name: __m128i
      pos:
        line_end: 26
        line_start: 22
        source_file: /src/pdns/ext/ipcrypt2/softaes/untrinsics.h
- function_names:
  - operator==(NullStruct /*unused*/) const
  - operator<(NullStruct /*unused*/) const
  - json11::dump
  - json11::dump
  - json11::dump
  - json11::dump
  - json11::dump
  - json11::dump
  - json11::dump
  - json11::Json::dump
  - json11::Value::Value
  - json11::Value::Value
  - json11::Value::type
  - json11::Value::equals
  - json11::Value::less
  - json11::Value::dump
  - json11::JsonDouble::number_value
  - json11::JsonDouble::int_value
  - json11::JsonDouble::equals
  - json11::JsonDouble::less
  - json11::JsonDouble::JsonDouble
  - json11::JsonInt::number_value
  - json11::JsonInt::int_value
  - json11::JsonInt::equals
  - json11::JsonInt::less
  - json11::JsonInt::JsonInt
  - json11::JsonBoolean::bool_value
  - json11::JsonBoolean::JsonBoolean
  - '&string_value() const override'
  - json11::JsonString::JsonString
  - json11::JsonString::JsonString
  - '&array_items() const override'
  - json11::JsonArray::JsonArray
  - json11::JsonArray::JsonArray
  - '&object_items() const override'
  - json11::JsonObject::JsonObject
  - json11::JsonObject::JsonObject
  - json11::JsonNull::JsonNull
  - json11::Statics
  - json11::statics
  - json11::static_null
  - json11::Json::Json
  - json11::Json::Json
  - json11::Json::Json
  - json11::Json::Json
  - json11::Json::Json
  - json11::Json::Json
  - json11::Json::Json
  - json11::Json::Json
  - json11::Json::Json
  - json11::Json::Json
  - json11::Json::Json
  - json11::Json::Json
  - json11::Json::type
  - json11::Json::number_value
  - json11::Json::int_value
  - json11::Json::bool_value
  - '& Json::string_value()               const'
  - '& Json::array_items()          const'
  - '& Json::object_items()    const'
  - '& Json::operator[] (size_t i)          const'
  - '& Json::operator[] (const string &key) const'
  - json11::JsonValue::number_value
  - json11::JsonValue::int_value
  - json11::JsonValue::bool_value
  - '&            JsonValue::string_value()              const'
  - '&      JsonValue::array_items()               const'
  - '& JsonValue::object_items()              const'
  - '&              JsonValue::operator[] (size_t)         const'
  - '&              JsonValue::operator[] (const string &) const'
  - '& JsonObject::operator[] (const string &key) const'
  - '& JsonArray::operator[] (size_t i) const'
  - Json::operator== (const Json &other) const
  - Json::operator< (const Json &other) const
  - json11::esc
  - json11::in_range
  - json11::fail
  - json11::fail
  - json11::consume_whitespace
  - json11::consume_comment
  - json11::consume_garbage
  - json11::get_next_token
  - json11::encode_utf8
  - json11::parse_string
  - json11::parse_number
  - json11::expect
  - json11::parse_json
  - json11::fail
  - json11::fail
  - json11::consume_whitespace
  - json11::consume_comment
  - json11::consume_garbage
  - json11::get_next_token
  - json11::encode_utf8
  - json11::parse_string
  - json11::parse_number
  - json11::expect
  - json11::parse_json
  - json11::Json::parse
  - json11::Json::parse_multi
  - json11::Json::has_shape
  - operator==(NullStruct /*unused*/) const
  - operator<(NullStruct /*unused*/) const
  - json11::dump
  - json11::dump
  - json11::dump
  - json11::dump
  - json11::dump
  - json11::dump
  - json11::dump
  - json11::Json::dump
  - json11::Value::Value
  - json11::Value::Value
  - json11::Value::type
  - json11::Value::equals
  - json11::Value::less
  - json11::Value::dump
  - json11::JsonDouble::number_value
  - json11::JsonDouble::int_value
  - json11::JsonDouble::equals
  - json11::JsonDouble::less
  - json11::JsonDouble::JsonDouble
  - json11::JsonInt::number_value
  - json11::JsonInt::int_value
  - json11::JsonInt::equals
  - json11::JsonInt::less
  - json11::JsonInt::JsonInt
  - json11::JsonBoolean::bool_value
  - json11::JsonBoolean::JsonBoolean
  - '&string_value() const override'
  - json11::JsonString::JsonString
  - json11::JsonString::JsonString
  - '&array_items() const override'
  - json11::JsonArray::JsonArray
  - json11::JsonArray::JsonArray
  - '&object_items() const override'
  - json11::JsonObject::JsonObject
  - json11::JsonObject::JsonObject
  - json11::JsonNull::JsonNull
  - json11::Statics
  - json11::statics
  - json11::static_null
  - json11::Json::Json
  - json11::Json::Json
  - json11::Json::Json
  - json11::Json::Json
  - json11::Json::Json
  - json11::Json::Json
  - json11::Json::Json
  - json11::Json::Json
  - json11::Json::Json
  - json11::Json::Json
  - json11::Json::Json
  - json11::Json::Json
  - json11::Json::type
  - json11::Json::number_value
  - json11::Json::int_value
  - json11::Json::bool_value
  - '& Json::string_value()               const'
  - '& Json::array_items()          const'
  - '& Json::object_items()    const'
  - '& Json::operator[] (size_t i)          const'
  - '& Json::operator[] (const string &key) const'
  - json11::JsonValue::number_value
  - json11::JsonValue::int_value
  - json11::JsonValue::bool_value
  - '&            JsonValue::string_value()              const'
  - '&      JsonValue::array_items()               const'
  - '& JsonValue::object_items()              const'
  - '&              JsonValue::operator[] (size_t)         const'
  - '&              JsonValue::operator[] (const string &) const'
  - '& JsonObject::operator[] (const string &key) const'
  - '& JsonArray::operator[] (size_t i) const'
  - Json::operator== (const Json &other) const
  - Json::operator< (const Json &other) const
  - json11::esc
  - json11::in_range
  - json11::fail
  - json11::fail
  - json11::consume_whitespace
  - json11::consume_comment
  - json11::consume_garbage
  - json11::get_next_token
  - json11::encode_utf8
  - json11::parse_string
  - json11::parse_number
  - json11::expect
  - json11::parse_json
  - json11::fail
  - json11::fail
  - json11::consume_whitespace
  - json11::consume_comment
  - json11::consume_garbage
  - json11::get_next_token
  - json11::encode_utf8
  - json11::parse_string
  - json11::parse_number
  - json11::expect
  - json11::parse_json
  - json11::Json::parse
  - json11::Json::parse_multi
  - json11::Json::has_shape
  source_file: /src/pdns/ext/json11/json11.cpp
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields: []
      item_type: struct
      name: NullStruct
      pos:
        line_end: 48
        line_start: 45
        source_file: /src/pdns/ext/json11/json11.cpp
    - fields:
      - name: 'null'
        type: std::shared_ptr<JsonValue>
      - name: t
        type: std::shared_ptr<JsonValue>
      - name: f
        type: std::shared_ptr<JsonValue>
      - name: empty_string
        type: string
      - name: empty_vector
        type: vector<Json>
      - name: empty_map
        type: map<string, Json>
      item_type: struct
      name: Statics
      pos:
        line_end: 237
        line_start: 229
        source_file: /src/pdns/ext/json11/json11.cpp
    - fields:
      - name: '&str'
        type: string
      - name: i
        type: size_t
      - name: '&err'
        type: string
      - name: failed
        type: bool
      - name: strategy
        type: JsonParse
      item_type: struct
      name: JsonParser
      pos:
        line_end: 739
        line_start: 352
        source_file: /src/pdns/ext/json11/json11.cpp
    - fields:
      - name: '&str'
        type: string
      - name: i
        type: size_t
      - name: '&err'
        type: string
      - name: failed
        type: bool
      - name: strategy
        type: JsonParse
      item_type: struct
      name: JsonParser
      pos:
        line_end: 739
        line_start: 352
        source_file: /src/pdns/ext/json11/json11.cpp
    - fields: []
      item_type: struct
      name: NullStruct
      pos:
        line_end: 48
        line_start: 45
        source_file: /src/pdns/ext/json11/json11.cpp
    - fields:
      - name: 'null'
        type: std::shared_ptr<JsonValue>
      - name: t
        type: std::shared_ptr<JsonValue>
      - name: f
        type: std::shared_ptr<JsonValue>
      - name: empty_string
        type: string
      - name: empty_vector
        type: vector<Json>
      - name: empty_map
        type: map<string, Json>
      item_type: struct
      name: Statics
      pos:
        line_end: 237
        line_start: 229
        source_file: /src/pdns/ext/json11/json11.cpp
    - fields:
      - name: '&str'
        type: string
      - name: i
        type: size_t
      - name: '&err'
        type: string
      - name: failed
        type: bool
      - name: strategy
        type: JsonParse
      item_type: struct
      name: JsonParser
      pos:
        line_end: 739
        line_start: 352
        source_file: /src/pdns/ext/json11/json11.cpp
    - fields:
      - name: '&str'
        type: string
      - name: i
        type: size_t
      - name: '&err'
        type: string
      - name: failed
        type: bool
      - name: strategy
        type: JsonParse
      item_type: struct
      name: JsonParser
      pos:
        line_end: 739
        line_start: 352
        source_file: /src/pdns/ext/json11/json11.cpp
    typedefs: []
    union: []
- function_names:
  - json11::Json::Json
  - json11::Json::Json
  - json11::Json::Json
  - json11::Json::Json
  - json11::Json::is_null
  - json11::Json::is_number
  - json11::Json::is_bool
  - json11::Json::is_string
  - json11::Json::is_array
  - json11::Json::is_object
  - json11::Json::dump
  - json11::Json::parse
  - json11::Json::parse_multi
  - operator!= (const Json &rhs) const
  - operator<= (const Json &rhs) const
  - operator>  (const Json &rhs) const
  - operator>= (const Json &rhs) const
  - ~JsonValue()
  - json11::Json::Json
  - json11::Json::Json
  - json11::Json::Json
  - json11::Json::Json
  - json11::Json::is_null
  - json11::Json::is_number
  - json11::Json::is_bool
  - json11::Json::is_string
  - json11::Json::is_array
  - json11::Json::is_object
  - json11::Json::dump
  - json11::Json::parse
  - json11::Json::parse_multi
  - operator!= (const Json &rhs) const
  - operator<= (const Json &rhs) const
  - operator>  (const Json &rhs) const
  - operator>= (const Json &rhs) const
  - ~JsonValue()
  source_file: /src/pdns/ext/json11/json11.hpp
  types:
    enum:
    - enumerators:
      - name: STANDARD
      - name: COMMENTS
      item_type: enum
      name: JsonParse
      pos:
        line_end: 74
        line_start: 72
        source_file: /src/pdns/ext/json11/json11.hpp
    - enumerators:
      - name: NUL
      - name: NUMBER
      - name: BOOL
      - name: STRING
      - name: ARRAY
      - name: OBJECT
      item_type: enum
      name: Type
      pos:
        line_end: 83
        line_start: 81
        source_file: /src/pdns/ext/json11/json11.hpp
    - enumerators:
      - name: STANDARD
      - name: COMMENTS
      item_type: enum
      name: JsonParse
      pos:
        line_end: 74
        line_start: 72
        source_file: /src/pdns/ext/json11/json11.hpp
    - enumerators:
      - name: NUL
      - name: NUMBER
      - name: BOOL
      - name: STRING
      - name: ARRAY
      - name: OBJECT
      item_type: enum
      name: Type
      pos:
        line_end: 83
        line_start: 81
        source_file: /src/pdns/ext/json11/json11.hpp
    preproc_defs:
    - item_type: preproc_def
      name: noexcept
      pos:
        line_end: 62
        line_start: 61
        source_file: /src/pdns/ext/json11/json11.hpp
      type_or_value: throw()
    - item_type: preproc_def
      name: snprintf
      pos:
        line_end: 66
        line_start: 65
        source_file: /src/pdns/ext/json11/json11.hpp
      type_or_value: _snprintf_s
    structs: []
    typedefs:
    - item_type: typedef
      name: array
      pos:
        line_end: 86
        line_start: 86
        source_file: /src/pdns/ext/json11/json11.hpp
      type: vector<Json>
    - item_type: typedef
      name: object
      pos:
        line_end: 87
        line_start: 87
        source_file: /src/pdns/ext/json11/json11.hpp
      type: map<std::string, Json>
    - item_type: typedef
      name: shape
      pos:
        line_end: 203
        line_start: 203
        source_file: /src/pdns/ext/json11/json11.hpp
      type: initializer_list<std::pair<std::string, Type>>
    - item_type: typedef
      name: array
      pos:
        line_end: 86
        line_start: 86
        source_file: /src/pdns/ext/json11/json11.hpp
      type: vector<Json>
    - item_type: typedef
      name: object
      pos:
        line_end: 87
        line_start: 87
        source_file: /src/pdns/ext/json11/json11.hpp
      type: map<std::string, Json>
    - item_type: typedef
      name: shape
      pos:
        line_end: 203
        line_start: 203
        source_file: /src/pdns/ext/json11/json11.hpp
      type: initializer_list<std::pair<std::string, Type>>
    union: []
- function_names:
  - rotl32
  - ROTL32
  - BIG_CONSTANT
  - BYTESWAP
  - BYTESWAP
  - BYTESWAP
  - BYTESWAP
  - getblock
  source_file: /src/pdns/ext/probds/murmur3.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: FORCE_INLINE
      pos:
        line_end: 33
        line_start: 32
        source_file: /src/pdns/ext/probds/murmur3.h
      type_or_value: __attribute__((always_inline))
    structs: []
    typedefs:
    - item_type: typedef
      name: uint8_t
      pos:
        line_end: 20
        line_start: 20
        source_file: /src/pdns/ext/probds/murmur3.h
      type: unsigned char
    - item_type: typedef
      name: uint32_t
      pos:
        line_end: 21
        line_start: 21
        source_file: /src/pdns/ext/probds/murmur3.h
      type: unsigned long
    - item_type: typedef
      name: uint64_t
      pos:
        line_end: 22
        line_start: 22
        source_file: /src/pdns/ext/probds/murmur3.h
      type: unsigned __int64
    union: []
- function_names:
  - fmix32
  - MurmurHash3_x86_32
  source_file: /src/pdns/ext/probds/murmur3.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - LuaContext
  - writeGlobalEq
  - LuaContext
  - '& operator=(LuaContext&& s) noexcept'
  - LuaContext
  - '& operator=(const LuaContext&)'
  - ~LuaContext() noexcept
  - ExecutionErrorException::ExecutionErrorException
  - SyntaxErrorException::SyntaxErrorException
  - WrongTypeException::WrongTypeException
  - LuaObject
  - LuaObject
  - ThreadID
  - ThreadID
  - '& operator=(ThreadID&& o)'
  - executeCode
  - executeCode
  - executeCode
  - executeCode
  - executeCode
  - executeCode
  - executeCode
  - executeCode
  - executeCode
  - executeCode
  - executeCode
  - executeCode
  - registerFunction
  - registerFunction
  - registerFunction
  - registerEqFunction
  - registerEqFunction
  - registerEqFunction
  - registerToStringFunction
  - registerToStringFunction
  - registerToStringFunction
  - unregisterFunction
  - registerMember
  - registerMember
  - registerMember
  - registerMember
  - registerMember
  - registerMember
  - registerMember
  - registerMember
  - registerMember
  - createThread
  - destroyThread
  - readVariable
  - readVariable
  - readVariable
  - readVariable
  - writeVariable
  - writeFunction
  - writeFunction
  - PushedObject
  - ~PushedObject()
  - '& operator=(const PushedObject&)'
  - PushedObject
  - '& operator=(PushedObject&& other)'
  - PushedObject
  - operator+(PushedObject&& other) &&
  - operator+=(PushedObject&& other)
  - getState
  - getNum
  - release
  - pop
  - pop
  - lookIntoStackTop
  - lookIntoStackTop
  - lookIntoStackTop
  - setTable
  - setTable
  - setTable
  - setTable
  - setTable
  - setTable
  - setTable
  - setTable
  - setTable
  - setTable
  - setTable
  - setTable
  - setTable
  - setTable
  - setTable
  - setTable
  - readTopAndPop
  - checkTypeRegistration
  - luaError
  - registerFunctionImpl
  - registerFunctionImpl
  - registerFunctionImpl
  - registerFunctionImpl
  - registerFunctionImpl
  - registerFunctionImpl
  - registerMemberImpl
  - registerMemberImpl
  - registerMemberImpl
  - registerMemberImpl
  - registerMemberImpl
  - registerMemberImpl
  - registerMemberImpl
  - registerMemberImpl
  - load
  - Reader
  - read
  - load
  - call
  - gettraceback
  - callRaw
  - push
  - push
  - read
  - test
  - readIntoFunction
  - readIntoFunction
  - readIntoFunction
  - ValueInRegistry
  - ~ValueInRegistry()
  - pop
  - ValueInRegistry
  - '& operator=(const ValueInRegistry&)'
  - "operator()(TParams&&... params)\n            -> decltype(function(param, std::forward<TParams>(params)...))"
  - "LuaContext::readTopAndPop<void>(lua_State* /*state*/, PushedObject /*obj*/)\n
    \   -> void"
  - operator()(TParams&&... params) const
  - LuaContext::LuaFunctionCaller<TRetValue (TParams...)>::LuaFunctionCaller
  - push
  - push
  - push
  - push
  - push
  - push
  - push
  - push
  - push
  - push
  - push
  - push
  - push
  - push
  - push
  - push
  - push
  - push
  - push
  - push
  - push
  - callback
  - callback2
  - callback2
  - push
  - push
  - push
  - push
  - operator()(TType value) noexcept
  - VariantWriter
  - push
  - push
  - push
  - push
  - push
  - push2
  - push2
  - push2
  - push2
  - read
  - read
  - read
  - read
  - read
  - read
  - read
  - read
  - read
  - read
  - read
  - read
  - read
  - read
  - read
  - read
  - read
  - variantRead
  - read
  - read
  - read
  - read
  source_file: /src/pdns/ext/luawrapper/include/LuaContext.hpp
  types:
    enum:
    - enumerators:
      - name: Globals
      item_type: enum
      name: Globals_t
      pos:
        line_end: 103
        line_start: 103
        source_file: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    - enumerators:
      - name: EmptyArray
      item_type: enum
      name: EmptyArray_t
      pos:
        line_end: 280
        line_start: 280
        source_file: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    - enumerators:
      - name: Metatable
      item_type: enum
      name: Metatable_t
      pos:
        line_end: 285
        line_start: 285
        source_file: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    - enumerators:
      - name: Registry
      item_type: enum
      name: RegistryTag
      pos:
        line_end: 838
        line_start: 838
        source_file: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    preproc_defs:
    - item_type: preproc_def
      name: __SANITIZE_THREAD__
      pos:
        line_end: 66
        line_start: 65
        source_file: /src/pdns/ext/luawrapper/include/LuaContext.hpp
      type_or_value: '1'
    - item_type: preproc_def
      name: ATTR_UNUSED
      pos:
        line_end: 75
        line_start: 74
        source_file: /src/pdns/ext/luawrapper/include/LuaContext.hpp
      type_or_value: __attribute__((unused))
    - item_type: preproc_def
      name: LUACONTEXT_GLOBAL_EQ
      pos:
        line_end: 80
        line_start: 79
        source_file: /src/pdns/ext/luawrapper/include/LuaContext.hpp
      type_or_value: '"e5ddced079fc405aa4937b386ca387d2"'
    - item_type: preproc_def
      name: LUACONTEXT_DEBUG_TRACEBACK
      pos:
        line_end: 81
        line_start: 80
        source_file: /src/pdns/ext/luawrapper/include/LuaContext.hpp
      type_or_value: '"8d143f0add7ad7fa323d0d1d12f3f114" // I would prefer a lightuserdata
        in the registry index'
    - item_type: preproc_def
      name: EQ_FUNCTION_NAME
      pos:
        line_end: 82
        line_start: 81
        source_file: /src/pdns/ext/luawrapper/include/LuaContext.hpp
      type_or_value: '"__eq"'
    - item_type: preproc_def
      name: TOSTRING_FUNCTION_NAME
      pos:
        line_end: 83
        line_start: 82
        source_file: /src/pdns/ext/luawrapper/include/LuaContext.hpp
      type_or_value: '"__tostring"'
    structs:
    - fields:
      - name: objectInRegistry
        type: std::shared_ptr<LuaContext::ValueInRegistry>
      item_type: struct
      name: LuaObject
      pos:
        line_end: 262
        line_start: 256
        source_file: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    - fields:
      - name: '* state'
        type: lua_State
      - name: threadInRegistry
        type: std::unique_ptr<ValueInRegistry>
      item_type: struct
      name: ThreadID
      pos:
        line_end: 275
        line_start: 267
        source_file: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    - fields:
      - name: '* state'
        type: lua_State
      - name: num
        type: int
      item_type: struct
      name: PushedObject
      pos:
        line_end: 827
        line_start: 805
        source_file: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    - fields: []
      item_type: struct
      name: tag
      pos:
        line_end: 835
        line_start: 835
        source_file: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    - fields:
      - name: '&           stream'
        type: std::istream
      - name: buffer
        type: std::array<char,512>
      item_type: struct
      name: Reader
      pos:
        line_end: 1381
        line_start: 1365
        source_file: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    - fields:
      - name: minSize
        type: int
      - name: maxSize
        type: int
      item_type: struct
      name: Pusher
      pos:
        line_end: 1737
        line_start: 1543
        source_file: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    - fields: []
      item_type: struct
      name: Reader
      pos:
        line_end: 1798
        line_start: 1764
        source_file: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    - fields:
      - name: '* lua'
        type: lua_State
      item_type: struct
      name: ValueInRegistry
      pos:
        line_end: 1876
        line_start: 1846
        source_file: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    - fields:
      - name: function
        type: TFunctionObject
      - name: param
        type: TFirstParamType
      item_type: struct
      name: Binder
      pos:
        line_end: 1890
        line_start: 1880
        source_file: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    - fields: []
      item_type: struct
      name: RemoveMemberPointerFunction
      pos:
        line_end: 1900
        line_start: 1900
        source_file: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    - fields: []
      item_type: struct
      name: FunctionTypeDetector
      pos:
        line_end: 1904
        line_start: 1904
        source_file: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    - fields: []
      item_type: struct
      name: FunctionArgumentsCounter
      pos:
        line_end: 1909
        line_start: 1909
        source_file: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    - fields: []
      item_type: struct
      name: IsOptional
      pos:
        line_end: 1913
        line_start: 1913
        source_file: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    - fields: []
      item_type: struct
      name: LuaContext::Tupleizer
      pos:
        line_end: 1936
        line_start: 1936
        source_file: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    - fields: []
      item_type: struct
      name: LuaContext::Tupleizer<std::tuple<Args...>>
      pos:
        line_end: 1938
        line_start: 1938
        source_file: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    - fields: []
      item_type: struct
      name: LuaContext::Tupleizer<void>
      pos:
        line_end: 1940
        line_start: 1940
        source_file: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    - fields: []
      item_type: struct
      name: LuaContext::FunctionTypeDetector<TRetValue (TParameters...)>
      pos:
        line_end: 1944
        line_start: 1944
        source_file: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    - fields: []
      item_type: struct
      name: LuaContext::FunctionTypeDetector<TObjectType*>
      pos:
        line_end: 1946
        line_start: 1946
        source_file: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    - fields: []
      item_type: struct
      name: LuaContext::RemoveMemberPointerFunction<TRetValue (TType::*)(TParameters...)>
      pos:
        line_end: 1950
        line_start: 1950
        source_file: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    - fields: []
      item_type: struct
      name: LuaContext::RemoveMemberPointerFunction<TRetValue (TType::*)(TParameters...)
        const>
      pos:
        line_end: 1952
        line_start: 1952
        source_file: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    - fields: []
      item_type: struct
      name: LuaContext::RemoveMemberPointerFunction<TRetValue (TType::*)(TParameters...)
        volatile>
      pos:
        line_end: 1954
        line_start: 1954
        source_file: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    - fields:
      - name: size
        type: int
      item_type: struct
      name: LuaContext::PusherTotalMinSize<TFirst, TTypes...>
      pos:
        line_end: 1960
        line_start: 1960
        source_file: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    - fields:
      - name: size
        type: int
      item_type: struct
      name: LuaContext::PusherTotalMinSize<>
      pos:
        line_end: 1962
        line_start: 1962
        source_file: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    - fields:
      - name: size
        type: int
      item_type: struct
      name: LuaContext::PusherTotalMaxSize<TFirst, TTypes...>
      pos:
        line_end: 1966
        line_start: 1966
        source_file: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    - fields:
      - name: size
        type: int
      item_type: struct
      name: LuaContext::PusherTotalMaxSize<>
      pos:
        line_end: 1968
        line_start: 1968
        source_file: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    - fields:
      - name: size
        type: int
      item_type: struct
      name: LuaContext::PusherMinSize<TFirst, TSecond, TTypes...>
      pos:
        line_end: 1979
        line_start: 1972
        source_file: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    - fields:
      - name: size
        type: int
      item_type: struct
      name: LuaContext::PusherMinSize<TFirst>
      pos:
        line_end: 1982
        line_start: 1982
        source_file: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    - fields:
      - name: size
        type: int
      item_type: struct
      name: LuaContext::PusherMaxSize<TFirst, TTypes...>
      pos:
        line_end: 1986
        line_start: 1986
        source_file: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    - fields:
      - name: size
        type: int
      item_type: struct
      name: LuaContext::PusherMaxSize<>
      pos:
        line_end: 1988
        line_start: 1988
        source_file: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    - fields:
      - name: min
        type: int
      - name: max
        type: int
      item_type: struct
      name: LuaContext::FunctionArgumentsCounter<TFirst, TParams...>
      pos:
        line_end: 1997
        line_start: 1992
        source_file: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    - fields:
      - name: min
        type: int
      - name: max
        type: int
      item_type: struct
      name: LuaContext::FunctionArgumentsCounter<>
      pos:
        line_end: 2002
        line_start: 1999
        source_file: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    - fields: []
      item_type: struct
      name: LuaContext::IsOptional<boost::optional<T>>
      pos:
        line_end: 2006
        line_start: 2006
        source_file: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    - fields: []
      item_type: struct
      name: LuaContext::IsOptional<std::optional<T>>
      pos:
        line_end: 2009
        line_start: 2009
        source_file: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    - fields:
      - name: minSize
        type: int
      - name: maxSize
        type: int
      item_type: struct
      name: LuaContext::Pusher<LuaContext::LuaObject>
      pos:
        line_end: 2058
        line_start: 2045
        source_file: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    - fields:
      - name: minSize
        type: int
      - name: maxSize
        type: int
      item_type: struct
      name: LuaContext::Pusher<bool>
      pos:
        line_end: 2070
        line_start: 2062
        source_file: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    - fields:
      - name: minSize
        type: int
      - name: maxSize
        type: int
      item_type: struct
      name: LuaContext::Pusher<std::string>
      pos:
        line_end: 2082
        line_start: 2074
        source_file: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    - fields:
      - name: minSize
        type: int
      - name: maxSize
        type: int
      item_type: struct
      name: LuaContext::Pusher<const char*>
      pos:
        line_end: 2094
        line_start: 2086
        source_file: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    - fields:
      - name: minSize
        type: int
      - name: maxSize
        type: int
      item_type: struct
      name: LuaContext::Pusher<const char[N]>
      pos:
        line_end: 2106
        line_start: 2098
        source_file: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    - fields:
      - name: minSize
        type: int
      - name: maxSize
        type: int
      item_type: struct
      name: LuaContext::Pusher<T, typename std::enable_if<std::is_floating_point<T>::value>::type>
      pos:
        line_end: 2118
        line_start: 2110
        source_file: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    - fields:
      - name: minSize
        type: int
      - name: maxSize
        type: int
      item_type: struct
      name: LuaContext::Pusher<T, typename std::enable_if<std::is_integral<T>::value>::type>
      pos:
        line_end: 2130
        line_start: 2122
        source_file: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    - fields:
      - name: minSize
        type: int
      - name: maxSize
        type: int
      item_type: struct
      name: LuaContext::Pusher<std::nullptr_t>
      pos:
        line_end: 2142
        line_start: 2134
        source_file: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    - fields:
      - name: minSize
        type: int
      - name: maxSize
        type: int
      item_type: struct
      name: LuaContext::Pusher<LuaContext::EmptyArray_t>
      pos:
        line_end: 2154
        line_start: 2146
        source_file: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    - fields:
      - name: minSize
        type: int
      - name: maxSize
        type: int
      item_type: struct
      name: LuaContext::Pusher<const std::type_info*>
      pos:
        line_end: 2166
        line_start: 2158
        source_file: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    - fields:
      - name: minSize
        type: int
      - name: maxSize
        type: int
      item_type: struct
      name: LuaContext::Pusher<LuaContext::ThreadID>
      pos:
        line_end: 2178
        line_start: 2170
        source_file: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    - fields:
      - name: minSize
        type: int
      - name: maxSize
        type: int
      item_type: struct
      name: LuaContext::Pusher<std::map<TKey,TValue>>
      pos:
        line_end: 2197
        line_start: 2182
        source_file: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    - fields:
      - name: minSize
        type: int
      - name: maxSize
        type: int
      item_type: struct
      name: LuaContext::Pusher<std::unordered_map<TKey,TValue,THash,TKeyEqual>>
      pos:
        line_end: 2216
        line_start: 2201
        source_file: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    - fields:
      - name: minSize
        type: int
      - name: maxSize
        type: int
      item_type: struct
      name: LuaContext::Pusher<std::vector<std::pair<TType1,TType2>>>
      pos:
        line_end: 2235
        line_start: 2220
        source_file: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    - fields:
      - name: minSize
        type: int
      - name: maxSize
        type: int
      item_type: struct
      name: LuaContext::Pusher<std::vector<TType>>
      pos:
        line_end: 2253
        line_start: 2239
        source_file: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    - fields:
      - name: minSize
        type: int
      - name: maxSize
        type: int
      item_type: struct
      name: LuaContext::Pusher<std::unique_ptr<TType>>
      pos:
        line_end: 2264
        line_start: 2257
        source_file: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    - fields:
      - name: minSize
        type: int
      - name: maxSize
        type: int
      item_type: struct
      name: LuaContext::Pusher<TEnum, typename std::enable_if<std::is_enum<TEnum>::value>::type>
      pos:
        line_end: 2284
        line_start: 2268
        source_file: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    - fields:
      - name: minSize
        type: int
      - name: maxSize
        type: int
      item_type: struct
      name: LuaContext::Pusher<TReturnType (TParameters...)>
      pos:
        line_end: 2487
        line_start: 2289
        source_file: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    - fields:
      - name: minSize
        type: int
      - name: maxSize
        type: int
      item_type: struct
      name: LuaContext::Pusher<TReturnType (*)(TParameters...)>
      pos:
        line_end: 2503
        line_start: 2491
        source_file: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    - fields:
      - name: minSize
        type: int
      - name: maxSize
        type: int
      item_type: struct
      name: LuaContext::Pusher<TReturnType (&)(TParameters...)>
      pos:
        line_end: 2519
        line_start: 2507
        source_file: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    - fields:
      - name: minSize
        type: int
      - name: maxSize
        type: int
      item_type: struct
      name: LuaContext::Pusher<std::function<TReturnType (TParameters...)>>
      pos:
        line_end: 2534
        line_start: 2523
        source_file: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    - fields:
      - name: minSize
        type: int
      - name: maxSize
        type: int
      item_type: struct
      name: LuaContext::Pusher<boost::variant<TTypes...>>
      pos:
        line_end: 2562
        line_start: 2538
        source_file: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    - fields:
      - name: '* state'
        type: lua_State
      - name: '& obj'
        type: PushedObject
      item_type: struct
      name: VariantWriter
      pos:
        line_end: 2561
        line_start: 2551
        source_file: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    - fields:
      - name: minSize
        type: int
      - name: maxSize
        type: int
      item_type: struct
      name: LuaContext::Pusher<std::variant<TTypes...>>
      pos:
        line_end: 2580
        line_start: 2567
        source_file: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    - fields:
      - name: minSize
        type: int
      - name: maxSize
        type: int
      item_type: struct
      name: LuaContext::Pusher<boost::optional<TType>>
      pos:
        line_end: 2600
        line_start: 2585
        source_file: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    - fields:
      - name: minSize
        type: int
      - name: maxSize
        type: int
      item_type: struct
      name: LuaContext::Pusher<std::optional<TType>>
      pos:
        line_end: 2620
        line_start: 2605
        source_file: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    - fields:
      - name: minSize
        type: int
      - name: maxSize
        type: int
      item_type: struct
      name: LuaContext::Pusher<std::tuple<TTypes...>>
      pos:
        line_end: 2662
        line_start: 2625
        source_file: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    - fields: []
      item_type: struct
      name: LuaContext::Reader<LuaContext::LuaObject>
      pos:
        line_end: 2679
        line_start: 2671
        source_file: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    - fields: []
      item_type: struct
      name: LuaContext::Reader<std::nullptr_t>
      pos:
        line_end: 2692
        line_start: 2683
        source_file: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    - fields: []
      item_type: struct
      name: "LuaContext::Reader<\n            TType,\n            typename std::enable_if<std::is_integral<TType>::value>::type\n
        \       >"
      pos:
        line_end: 2720
        line_start: 2696
        source_file: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    - fields: []
      item_type: struct
      name: "LuaContext::Reader<\n            TType,\n            typename std::enable_if<std::is_floating_point<TType>::value>::type\n
        \       >"
      pos:
        line_end: 2748
        line_start: 2724
        source_file: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    - fields: []
      item_type: struct
      name: LuaContext::Reader<bool>
      pos:
        line_end: 2761
        line_start: 2752
        source_file: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    - fields: []
      item_type: struct
      name: LuaContext::Reader<std::string>
      pos:
        line_end: 2788
        line_start: 2767
        source_file: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    - fields: []
      item_type: struct
      name: "LuaContext::Reader<\n            TType,\n            typename std::enable_if<std::is_enum<TType>::value>::type\n
        \       >"
      pos:
        line_end: 2804
        line_start: 2792
        source_file: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    - fields: []
      item_type: struct
      name: LuaContext::Reader<LuaContext::LuaFunctionCaller<TRetValue (TParameters...)>>
      pos:
        line_end: 2820
        line_start: 2808
        source_file: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    - fields: []
      item_type: struct
      name: LuaContext::Reader<std::function<TRetValue (TParameters...)>>
      pos:
        line_end: 2837
        line_start: 2824
        source_file: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    - fields: []
      item_type: struct
      name: LuaContext::Reader<std::vector<std::pair<TType1,TType2>>>
      pos:
        line_end: 2875
        line_start: 2841
        source_file: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    - fields: []
      item_type: struct
      name: LuaContext::Reader<std::map<TKey,TValue>>
      pos:
        line_end: 2913
        line_start: 2879
        source_file: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    - fields: []
      item_type: struct
      name: LuaContext::Reader<std::unordered_map<TKey,TValue,THash,TKeyEqual>>
      pos:
        line_end: 2951
        line_start: 2917
        source_file: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    - fields: []
      item_type: struct
      name: LuaContext::Reader<boost::optional<TType>>
      pos:
        line_end: 2970
        line_start: 2959
        source_file: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    - fields: []
      item_type: struct
      name: LuaContext::Reader<std::optional<TType>>
      pos:
        line_end: 2988
        line_start: 2975
        source_file: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    - fields: []
      item_type: struct
      name: LuaContext::Reader<boost::variant<TTypes...>>
      pos:
        line_end: 3037
        line_start: 2994
        source_file: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    - fields: []
      item_type: struct
      name: VariantReader
      pos:
        line_end: 3014
        line_start: 3002
        source_file: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    - fields: []
      item_type: struct
      name: VariantReader<TIterBegin, TIterEnd, typename std::enable_if<boost::mpl::distance<TIterBegin,
        TIterEnd>::type::value == 0>::type>
      pos:
        line_end: 3025
        line_start: 3018
        source_file: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    - fields: []
      item_type: struct
      name: LuaContext::Reader<std::variant<TTypes...>>
      pos:
        line_end: 3072
        line_start: 3042
        source_file: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    - fields: []
      item_type: struct
      name: LuaContext::Reader<std::tuple<>>
      pos:
        line_end: 3086
        line_start: 3079
        source_file: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    - fields: []
      item_type: struct
      name: "LuaContext::Reader<std::tuple<TFirst, TOthers...>,\n        typename
        std::enable_if<!LuaContext::IsOptional<TFirst>::value>::type       // TODO:
        replace by std::is_default_constructible when it works on every compiler\n
        \   >"
      pos:
        line_end: 3112
        line_start: 3089
        source_file: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    - fields: []
      item_type: struct
      name: "LuaContext::Reader<std::tuple<TFirst, TOthers...>,\n        typename
        std::enable_if<LuaContext::IsOptional<TFirst>::value>::type        // TODO:
        replace by std::is_default_constructible when it works on every compiler\n
        \   >"
      pos:
        line_end: 3140
        line_start: 3115
        source_file: /src/pdns/ext/luawrapper/include/LuaContext.hpp
    typedefs:
    - item_type: typedef
      name: RealDataType
      pos:
        line_end: 761
        line_start: 760
        source_file: /src/pdns/ext/luawrapper/include/LuaContext.hpp
      type: typename std::decay<typename std::tuple_element<sizeof...(TData) - 1,std::tuple<TData...>>::type>::type
    - item_type: typedef
      name: RealDataType
      pos:
        line_end: 786
        line_start: 785
        source_file: /src/pdns/ext/luawrapper/include/LuaContext.hpp
      type: typename std::decay<typename std::tuple_element<sizeof...(TData) - 1,std::tuple<TData...>>::type>::type
    - item_type: typedef
      name: DetectedFunctionType
      pos:
        line_end: 788
        line_start: 787
        source_file: /src/pdns/ext/luawrapper/include/LuaContext.hpp
      type: typename FunctionTypeDetector<RealDataType>::type
    - item_type: typedef
      name: RealReturnType
      pos:
        line_end: 1433
        line_start: 1432
        source_file: /src/pdns/ext/luawrapper/include/LuaContext.hpp
      type: typename Tupleizer<TReturnType>::type
    - item_type: typedef
      name: ReturnType
      pos:
        line_end: 1766
        line_start: 1765
        source_file: /src/pdns/ext/luawrapper/include/LuaContext.hpp
      type: typename std::conditional<std::is_pointer<TType>::value, TType, TType&>::type
    - item_type: typedef
      name: type
      pos:
        line_end: 1900
        line_start: 1900
        source_file: /src/pdns/ext/luawrapper/include/LuaContext.hpp
      type: void
    - item_type: typedef
      name: type
      pos:
        line_end: 1904
        line_start: 1904
        source_file: /src/pdns/ext/luawrapper/include/LuaContext.hpp
      type: typename RemoveMemberPointerFunction<decltype(&std::decay<TObjectType>::type::operator())>::type
    - item_type: typedef
      name: type
      pos:
        line_end: 1936
        line_start: 1936
        source_file: /src/pdns/ext/luawrapper/include/LuaContext.hpp
      type: tuple<T>
    - item_type: typedef
      name: type
      pos:
        line_end: 1938
        line_start: 1938
        source_file: /src/pdns/ext/luawrapper/include/LuaContext.hpp
      type: tuple<Args...>
    - item_type: typedef
      name: type
      pos:
        line_end: 1940
        line_start: 1940
        source_file: /src/pdns/ext/luawrapper/include/LuaContext.hpp
      type: tuple<>
    - item_type: typedef
      name: type(TParameters...)
      pos:
        line_end: 1944
        line_start: 1944
        source_file: /src/pdns/ext/luawrapper/include/LuaContext.hpp
      type: TRetValue
    - item_type: typedef
      name: type
      pos:
        line_end: 1946
        line_start: 1946
        source_file: /src/pdns/ext/luawrapper/include/LuaContext.hpp
      type: typename FunctionTypeDetector<TObjectType>::type
    - item_type: typedef
      name: type(TParameters...)
      pos:
        line_end: 1950
        line_start: 1950
        source_file: /src/pdns/ext/luawrapper/include/LuaContext.hpp
      type: TRetValue
    - item_type: typedef
      name: type(TParameters...)
      pos:
        line_end: 1952
        line_start: 1952
        source_file: /src/pdns/ext/luawrapper/include/LuaContext.hpp
      type: TRetValue
    - item_type: typedef
      name: type(TParameters...)
      pos:
        line_end: 1954
        line_start: 1954
        source_file: /src/pdns/ext/luawrapper/include/LuaContext.hpp
      type: TRetValue
    - item_type: typedef
      name: SubType
      pos:
        line_end: 1994
        line_start: 1993
        source_file: /src/pdns/ext/luawrapper/include/LuaContext.hpp
      type: FunctionArgumentsCounter
    - item_type: typedef
      name: RealType
      pos:
        line_end: 2271
        line_start: 2270
        source_file: /src/pdns/ext/luawrapper/include/LuaContext.hpp
      type: typename std::underlying_type<TEnum>::type
    - item_type: typedef
      name: RealType
      pos:
        line_end: 2275
        line_start: 2274
        source_file: /src/pdns/ext/luawrapper/include/LuaContext.hpp
      type: unsigned long
    - item_type: typedef
      name: LocalFunctionArgumentsCounter
      pos:
        line_end: 2296
        line_start: 2295
        source_file: /src/pdns/ext/luawrapper/include/LuaContext.hpp
      type: FunctionArgumentsCounter
    - item_type: typedef
      name: P
      pos:
        line_end: 2476
        line_start: 2475
        source_file: /src/pdns/ext/luawrapper/include/LuaContext.hpp
      type: Pusher
    - item_type: typedef
      name: SubPusher
      pos:
        line_end: 2495
        line_start: 2494
        source_file: /src/pdns/ext/luawrapper/include/LuaContext.hpp
      type: Pusher
    - item_type: typedef
      name: SubPusher
      pos:
        line_end: 2511
        line_start: 2510
        source_file: /src/pdns/ext/luawrapper/include/LuaContext.hpp
      type: Pusher
    - item_type: typedef
      name: SubPusher
      pos:
        line_end: 2527
        line_start: 2526
        source_file: /src/pdns/ext/luawrapper/include/LuaContext.hpp
      type: Pusher
    - item_type: typedef
      name: UnderlyingPusher
      pos:
        line_end: 2587
        line_start: 2586
        source_file: /src/pdns/ext/luawrapper/include/LuaContext.hpp
      type: Pusher
    - item_type: typedef
      name: UnderlyingPusher
      pos:
        line_end: 2607
        line_start: 2606
        source_file: /src/pdns/ext/luawrapper/include/LuaContext.hpp
      type: Pusher
    - item_type: typedef
      name: ElemType
      pos:
        line_end: 2641
        line_start: 2641
        source_file: /src/pdns/ext/luawrapper/include/LuaContext.hpp
      type: typename std::tuple_element<N,std::tuple<TTypes...>>::type
    - item_type: typedef
      name: ElemType
      pos:
        line_end: 2649
        line_start: 2649
        source_file: /src/pdns/ext/luawrapper/include/LuaContext.hpp
      type: typename std::tuple_element<N,std::tuple<TTypes...>>::type
    - item_type: typedef
      name: ReturnType
      pos:
        line_end: 2811
        line_start: 2810
        source_file: /src/pdns/ext/luawrapper/include/LuaContext.hpp
      type: LuaFunctionCaller
    - item_type: typedef
      name: ReturnType
      pos:
        line_end: 2997
        line_start: 2996
        source_file: /src/pdns/ext/luawrapper/include/LuaContext.hpp
      type: variant<TTypes...>
    - item_type: typedef
      name: MainVariantReader
      pos:
        line_end: 3029
        line_start: 3028
        source_file: /src/pdns/ext/luawrapper/include/LuaContext.hpp
      type: VariantReader
    - item_type: typedef
      name: ReturnType
      pos:
        line_end: 3096
        line_start: 3095
        source_file: /src/pdns/ext/luawrapper/include/LuaContext.hpp
      type: tuple<TFirst, TOthers...>
    - item_type: typedef
      name: ReturnType
      pos:
        line_end: 3122
        line_start: 3121
        source_file: /src/pdns/ext/luawrapper/include/LuaContext.hpp
      type: tuple<TFirst, TOthers...>
    union: []
- function_names:
  - LMDBLS::LSassertFixedHeaderSize
  - LMDBLS::LScheckHeaderAndGetSize
  - LMDBLS::LScheckHeaderAndGetSize
  - LMDBLS::LSisDeleted
  - LMDBLS::LSgetTimestamp
  - LMDBLS::LSassertFixedHeaderSize
  - LMDBLS::LScheckHeaderAndGetSize
  - LMDBLS::LScheckHeaderAndGetSize
  - LMDBLS::LSisDeleted
  - LMDBLS::LSgetTimestamp
  - MDBDbi::MDBDbi
  - MDBDbi::mdb_dbi_open
  - MDBEnv::MDBEnv
  - MDBEnv::incRWTX
  - MDBEnv::decRWTX
  - MDBEnv::getRWTX
  - getMDBEnv
  - MDBEnv::openDB
  - MDBRWTransactionImpl::MDBRWTransactionImpl
  - MDBRWTransactionImpl::openRWTransaction
  - MDBRWTransactionImpl::MDBRWTransactionImpl
  - MDBRWTransactionImpl::~MDBRWTransactionImpl()
  - MDBRWTransactionImpl::commit
  - MDBRWTransactionImpl::abort
  - MDBROTransactionImpl::MDBROTransactionImpl
  - MDBROTransactionImpl::openROTransaction
  - MDBROTransactionImpl::closeROCursors
  - MDBROTransactionImpl::MDBROTransactionImpl
  - MDBROTransactionImpl::~MDBROTransactionImpl()
  - MDBROTransactionImpl::abort
  - MDBROTransactionImpl::commit
  - MDBRWTransactionImpl::clear
  - MDBRWTransactionImpl::getRWCursor
  - MDBRWTransactionImpl::getCursor
  - MDBRWTransactionImpl::getRWTransaction
  - MDBRWTransactionImpl::getROTransaction
  - MDBEnv::getROTransaction
  - MDBEnv::getRWTransaction
  - MDBRWTransactionImpl::closeRWCursors
  - MDBROTransactionImpl::getCursor
  - MDBROTransactionImpl::getROCursor
  source_file: /src/pdns/ext/lmdb-safe/lmdb-safe.cc
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: wp
        type: weak_ptr<MDBEnv>
      - name: flags
        type: int
      item_type: struct
      name: Value
      pos:
        line_end: 183
        line_start: 179
        source_file: /src/pdns/ext/lmdb-safe/lmdb-safe.cc
    typedefs: []
    union: []
- function_names:
  - MDBError
  - MDBDbi::MDBDbi
  - operator const MDB_dbi&() const
  - ~MDBEnv()
  - operator MDB_env*& ()
  - LMDBLS::LSheader::pdns_bswap64
  - LMDBLS::LSheader::LSheader
  - LMDBLS::LSheader::toString
  - LMDBLS::LSheader::getTimestamp
  - LMDBLS::LSheader::pdns_bswap64
  - LMDBLS::LSheader::LSheader
  - LMDBLS::LSheader::toString
  - LMDBLS::LSheader::getTimestamp
  - hostToNetworkByteOrder
  - networkToHostByteOrder
  - operator MDB_val&()
  - MDBOutVal::get
  - MDBOutVal::getNoStripHeader
  - MDBOutVal::get<std::string>() const
  - MDBOutVal::get<std::string_view>() const
  - MDBOutVal::get<std::string>() const
  - MDBOutVal::get<std::string_view>() const
  - MDBOutVal::getNoStripHeader<std::string>() const
  - MDBOutVal::getNoStripHeader<std::string_view>() const
  - MDBInVal::MDBInVal
  - MDBInVal::MDBInVal
  - MDBInVal::MDBInVal
  - MDBInVal::MDBInVal
  - MDBInVal::MDBInVal
  - MDBInVal::fromStruct
  - operator MDB_val&()
  - MDBInVal::MDBInVal
  - MDBInVal::get<std::string>() const
  - MDBROTransactionImpl::MDBROTransactionImpl
  - '&operator=(const MDBROTransactionImpl& src)'
  - MDBROTransactionImpl::MDBROTransactionImpl
  - '&operator=(MDBROTransactionImpl &&rhs)'
  - MDBROTransactionImpl::get
  - MDBROTransactionImpl::get
  - MDBROTransactionImpl::openDB
  - operator MDB_txn*()
  - operator bool() const
  - '&environment()'
  - MDBGenCursor::MDBGenCursor
  - MDBGenCursor::MDBGenCursor
  - MDBGenCursor::move_from
  - MDBGenCursor::MDBGenCursor
  - MDBGenCursor::MDBGenCursor
  - '&operator=(const MDBGenCursor &src)'
  - '&operator=(MDBGenCursor &&src) noexcept'
  - ~MDBGenCursor()
  - MDBGenCursor::skipDeleted
  - MDBGenCursor::get
  - MDBGenCursor::find
  - MDBGenCursor::prefix
  - MDBGenCursor::lower_bound
  - MDBGenCursor::_lower_bound
  - MDBGenCursor::nextprev
  - MDBGenCursor::next
  - MDBGenCursor::prev
  - MDBGenCursor::currentlast
  - MDBGenCursor::current
  - MDBGenCursor::last
  - MDBGenCursor::first
  - operator MDB_cursor*()
  - operator bool() const
  - MDBGenCursor::close
  - MDBROCursor::MDBROCursor
  - MDBROCursor::MDBROCursor
  - MDBROCursor::MDBROCursor
  - '& operator=(const MDBROCursor& src)'
  - '& operator=(MDBROCursor&& src)'
  - ~MDBROCursor()
  - MDBRWTransactionImpl::closeRORWCursors
  - MDBRWTransactionImpl::MDBRWTransactionImpl
  - MDBRWTransactionImpl::MDBRWTransactionImpl
  - '& operator=(const MDBRWTransactionImpl& rhs)'
  - '& operator=(MDBRWTransactionImpl&& rhs)'
  - MDBRWTransactionImpl::put_raw
  - MDBRWTransactionImpl::put
  - MDBRWTransactionImpl::put_header_in_place
  - MDBRWTransactionImpl::stringWithEmptyHeader
  - MDBRWTransactionImpl::put
  - MDBRWTransactionImpl::del
  - MDBRWTransactionImpl::get
  - MDBRWTransactionImpl::openDB
  - MDBRWCursor::MDBRWCursor
  - MDBRWCursor::MDBRWCursor
  - MDBRWCursor::MDBRWCursor
  - '&operator=(const MDBRWCursor &src)'
  - '&operator=(MDBRWCursor &&src)'
  - ~MDBRWCursor()
  - MDBRWCursor::put_raw
  - MDBRWCursor::put
  - MDBRWCursor::put_header_in_place
  - MDBRWCursor::put
  - MDBRWCursor::del
  source_file: /src/pdns/ext/lmdb-safe/lmdb-safe.hh
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: StringView
      pos:
        line_end: 32
        line_start: 31
        source_file: /src/pdns/ext/lmdb-safe/lmdb-safe.hh
      type_or_value: string_view
    - item_type: preproc_def
      name: StringView
      pos:
        line_end: 34
        line_start: 33
        source_file: /src/pdns/ext/lmdb-safe/lmdb-safe.hh
      type_or_value: string
    structs:
    - fields:
      - name: d_mdbval
        type: MDB_val
      item_type: struct
      name: MDBOutVal
      pos:
        line_end: 222
        line_start: 206
        source_file: /src/pdns/ext/lmdb-safe/lmdb-safe.hh
    typedefs: []
    union: []
- function_names:
  - serializeToBuffer
  - deserializeFromBuffer
  - keyConv
  - keyConv
  - getKeyFromCombinedKey
  - getIDFromCombinedKey
  - makeCombinedKey
  - getKeyFromCombinedKey
  - getIDFromCombinedKey
  - makeCombinedKey
  - LMDBIndexOps
  - put
  - del
  - openDB
  - index_on
  - getMember
  - index_on_function
  - getMember
  - put
  - del
  - openDB
  - TypedDBI::openDB
  - TypedDBI::TypedDBI
  - TypedDBI::ReadonlyOperations
  - TypedDBI::get2
  - TypedDBI::get
  - TypedDBI::get
  - TypedDBI::iter_t
  - TypedDBI::iter_t
  - TypedDBI::del
  - operator!=(const eiter_t& /* rhs */) const
  - operator==(const eiter_t& /* rhs */) const
  - '& operator*()'
  - '* operator->()'
  - '& genoperator(MDB_cursor_op operation)'
  - '& operator++()'
  - TypedDBI::getID
  - '& getKey()'
  - TypedDBI::genbegin
  - TypedDBI::begin
  - TypedDBI::rbegin
  - TypedDBI::begin
  - TypedDBI::end
  - TypedDBI::genfind
  - TypedDBI::find
  - TypedDBI::lower_bound
  - TypedDBI::equal_range
  - TypedDBI::prefix_range
  - TypedDBI::get_multi
  - TypedDBI::ROTransaction::ROTransaction
  - TypedDBI::ROTransaction::ROTransaction
  - TypedDBI::ROTransaction::ROTransaction
  - TypedDBI::ROTransaction::getTransactionHandle
  - TypedDBI::RWTransaction::insert
  - TypedDBI::RWTransaction::RWTransaction
  - TypedDBI::RWTransaction::RWTransaction
  - TypedDBI::RWTransaction::RWTransaction
  - TypedDBI::RWTransaction::put
  - TypedDBI::RWTransaction::modify
  - TypedDBI::RWTransaction::del
  - TypedDBI::RWTransaction::clear
  - TypedDBI::RWTransaction::commit
  - TypedDBI::RWTransaction::abort
  - TypedDBI::RWTransaction::getTransactionHandle
  - TypedDBI::RWTransaction::clear
  - TypedDBI::RWTransaction::clearIndex
  - TypedDBI::getRWTransaction
  - TypedDBI::getROTransaction
  - TypedDBI::getRWTransaction
  - TypedDBI::getROTransaction
  - TypedDBI::getEnv
  source_file: /src/pdns/ext/lmdb-safe/lmdb-typed.hh
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: d_idx
        type: MDBDbi
      - name: '* d_parent'
        type: Parent
      item_type: struct
      name: LMDBIndexOps
      pos:
        line_end: 168
        line_start: 140
        source_file: /src/pdns/ext/lmdb-safe/lmdb-typed.hh
    - fields: []
      item_type: struct
      name: index_on
      pos:
        line_end: 184
        line_start: 173
        source_file: /src/pdns/ext/lmdb-safe/lmdb-typed.hh
    - fields: []
      item_type: struct
      name: index_on_function
      pos:
        line_end: 200
        line_start: 188
        source_file: /src/pdns/ext/lmdb-safe/lmdb-typed.hh
    - fields: []
      item_type: struct
      name: nullindex_t
      pos:
        line_end: 217
        line_start: 203
        source_file: /src/pdns/ext/lmdb-safe/lmdb-typed.hh
    - fields:
      - name: '& d_parent'
        type: Parent
      item_type: struct
      name: ReadonlyOperations
      pos:
        line_end: 704
        line_start: 248
        source_file: /src/pdns/ext/lmdb-safe/lmdb-typed.hh
    - fields: []
      item_type: struct
      name: eiter_t
      pos:
        line_end: 339
        line_start: 338
        source_file: /src/pdns/ext/lmdb-safe/lmdb-typed.hh
    - fields:
      - name: '* d_parent'
        type: Parent
      - name: d_cursor
        type: typename Parent::cursor_t
      - name: d_key
        type: MDBOutVal
      - name: d_data
        type: MDBOutVal
      - name: d_id
        type: MDBOutVal
      - name: d_on_index
        type: bool
      - name: d_one_key
        type: bool
      - name: d_prefix
        type: std::string
      - name: d_end
        type: bool
      - name: d_t
        type: T
      item_type: struct
      name: iter_t
      pos:
        line_end: 525
        line_start: 346
        source_file: /src/pdns/ext/lmdb-safe/lmdb-typed.hh
    typedefs: []
    union: []
- function_names:
  - MDBGetMaxID
  - MDBGetRandomID
  source_file: /src/pdns/ext/lmdb-safe/lmdb-typed.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - protozero::size
  - protozero::append
  - protozero::append_zeros
  - protozero::resize
  - protozero::reserve_additional
  - protozero::erase_range
  - protozero::at_pos
  - protozero::push_back
  - protozero::size
  - protozero::append
  - protozero::append_zeros
  - protozero::resize
  - protozero::reserve_additional
  - protozero::erase_range
  - protozero::at_pos
  - protozero::push_back
  source_file: /src/pdns/ext/protozero/include/protozero/buffer_vector.hpp
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields: []
      item_type: struct
      name: buffer_customization<std::vector<char>>
      pos:
        line_end: 72
        line_start: 32
        source_file: /src/pdns/ext/protozero/include/protozero/buffer_vector.hpp
    - fields: []
      item_type: struct
      name: buffer_customization<std::vector<char>>
      pos:
        line_end: 72
        line_start: 32
        source_file: /src/pdns/ext/protozero/include/protozero/buffer_vector.hpp
    typedefs: []
    union: []
- function_names:
  - protozero::iterator_range::iterator_range
  - protozero::iterator_range::iterator_range
  - protozero::iterator_range::begin
  - protozero::iterator_range::end
  - protozero::iterator_range::cbegin
  - protozero::iterator_range::cend
  - protozero::iterator_range::empty
  - protozero::iterator_range::size
  - protozero::iterator_range::front
  - protozero::iterator_range::drop_front
  - protozero::iterator_range::swap
  - protozero::swap
  - protozero::const_fixed_iterator::const_fixed_iterator
  - protozero::const_fixed_iterator::const_fixed_iterator
  - protozero::const_fixed_iterator::const_fixed_iterator
  - protozero::const_fixed_iterator::const_fixed_iterator
  - '& operator=(const const_fixed_iterator&) noexcept'
  - '& operator=(const_fixed_iterator&&) noexcept'
  - ~const_fixed_iterator() noexcept
  - operator*() const noexcept
  - '& operator++() noexcept'
  - operator++(int) noexcept
  - '& operator--() noexcept'
  - operator--(int) noexcept
  - operator==(const_fixed_iterator lhs, const_fixed_iterator rhs) noexcept
  - operator!=(const_fixed_iterator lhs, const_fixed_iterator rhs) noexcept
  - operator<(const_fixed_iterator lhs, const_fixed_iterator rhs) noexcept
  - operator>(const_fixed_iterator lhs, const_fixed_iterator rhs) noexcept
  - operator<=(const_fixed_iterator lhs, const_fixed_iterator rhs) noexcept
  - operator>=(const_fixed_iterator lhs, const_fixed_iterator rhs) noexcept
  - '& operator+=(difference_type val) noexcept'
  - operator+(const_fixed_iterator lhs, difference_type rhs) noexcept
  - operator+(difference_type lhs, const_fixed_iterator rhs) noexcept
  - '& operator-=(difference_type val) noexcept'
  - operator-(const_fixed_iterator lhs, difference_type rhs) noexcept
  - operator-(const_fixed_iterator lhs, const_fixed_iterator rhs) noexcept
  - operator[](difference_type n) const noexcept
  - protozero::const_varint_iterator::distance
  - protozero::const_varint_iterator::const_varint_iterator
  - protozero::const_varint_iterator::const_varint_iterator
  - protozero::const_varint_iterator::const_varint_iterator
  - protozero::const_varint_iterator::const_varint_iterator
  - '& operator=(const const_varint_iterator&) noexcept'
  - '& operator=(const_varint_iterator&&) noexcept'
  - ~const_varint_iterator() noexcept
  - operator*() const
  - '& operator++()'
  - operator++(int)
  - operator==(const const_varint_iterator& rhs) const noexcept
  - operator!=(const const_varint_iterator& rhs) const noexcept
  - protozero::const_svarint_iterator::const_svarint_iterator
  - protozero::const_svarint_iterator::const_svarint_iterator
  - protozero::const_svarint_iterator::const_svarint_iterator
  - protozero::const_svarint_iterator::const_svarint_iterator
  - '& operator=(const const_svarint_iterator&)'
  - '& operator=(const_svarint_iterator&&) noexcept'
  - ~const_svarint_iterator()
  - operator*() const
  - '& operator++()'
  - operator++(int)
  - protozero::iterator_range::iterator_range
  - protozero::iterator_range::iterator_range
  - protozero::iterator_range::begin
  - protozero::iterator_range::end
  - protozero::iterator_range::cbegin
  - protozero::iterator_range::cend
  - protozero::iterator_range::empty
  - protozero::iterator_range::size
  - protozero::iterator_range::front
  - protozero::iterator_range::drop_front
  - protozero::iterator_range::swap
  - protozero::swap
  - protozero::const_fixed_iterator::const_fixed_iterator
  - protozero::const_fixed_iterator::const_fixed_iterator
  - protozero::const_fixed_iterator::const_fixed_iterator
  - protozero::const_fixed_iterator::const_fixed_iterator
  - '& operator=(const const_fixed_iterator&) noexcept'
  - '& operator=(const_fixed_iterator&&) noexcept'
  - ~const_fixed_iterator() noexcept
  - operator*() const noexcept
  - '& operator++() noexcept'
  - operator++(int) noexcept
  - '& operator--() noexcept'
  - operator--(int) noexcept
  - operator==(const_fixed_iterator lhs, const_fixed_iterator rhs) noexcept
  - operator!=(const_fixed_iterator lhs, const_fixed_iterator rhs) noexcept
  - operator<(const_fixed_iterator lhs, const_fixed_iterator rhs) noexcept
  - operator>(const_fixed_iterator lhs, const_fixed_iterator rhs) noexcept
  - operator<=(const_fixed_iterator lhs, const_fixed_iterator rhs) noexcept
  - operator>=(const_fixed_iterator lhs, const_fixed_iterator rhs) noexcept
  - '& operator+=(difference_type val) noexcept'
  - operator+(const_fixed_iterator lhs, difference_type rhs) noexcept
  - operator+(difference_type lhs, const_fixed_iterator rhs) noexcept
  - '& operator-=(difference_type val) noexcept'
  - operator-(const_fixed_iterator lhs, difference_type rhs) noexcept
  - operator-(const_fixed_iterator lhs, const_fixed_iterator rhs) noexcept
  - operator[](difference_type n) const noexcept
  - protozero::const_varint_iterator::distance
  - protozero::const_varint_iterator::const_varint_iterator
  - protozero::const_varint_iterator::const_varint_iterator
  - protozero::const_varint_iterator::const_varint_iterator
  - protozero::const_varint_iterator::const_varint_iterator
  - '& operator=(const const_varint_iterator&) noexcept'
  - '& operator=(const_varint_iterator&&) noexcept'
  - ~const_varint_iterator() noexcept
  - operator*() const
  - '& operator++()'
  - operator++(int)
  - operator==(const const_varint_iterator& rhs) const noexcept
  - operator!=(const const_varint_iterator& rhs) const noexcept
  - protozero::const_svarint_iterator::const_svarint_iterator
  - protozero::const_svarint_iterator::const_svarint_iterator
  - protozero::const_svarint_iterator::const_svarint_iterator
  - protozero::const_svarint_iterator::const_svarint_iterator
  - '& operator=(const const_svarint_iterator&)'
  - '& operator=(const_svarint_iterator&&) noexcept'
  - ~const_svarint_iterator()
  - operator*() const
  - '& operator++()'
  - operator++(int)
  - std::distance
  - std::distance
  - std::distance
  - std::distance
  - std::distance
  - std::distance
  - std::distance
  - std::distance
  - std::distance
  - std::distance
  - std::distance
  - std::distance
  source_file: /src/pdns/ext/protozero/include/protozero/iterators.hpp
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/pdns/ext/protozero/include/protozero/pbf_writer.hpp
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - protozero::size
  - protozero::append
  - protozero::append_zeros
  - protozero::resize
  - protozero::reserve_additional
  - protozero::erase_range
  - protozero::at_pos
  - protozero::push_back
  - protozero::size
  - protozero::append
  - protozero::append_zeros
  - protozero::resize
  - protozero::reserve_additional
  - protozero::erase_range
  - protozero::at_pos
  - protozero::push_back
  source_file: /src/pdns/ext/protozero/include/protozero/buffer_string.hpp
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields: []
      item_type: struct
      name: buffer_customization<std::string>
      pos:
        line_end: 72
        line_start: 32
        source_file: /src/pdns/ext/protozero/include/protozero/buffer_string.hpp
    - fields: []
      item_type: struct
      name: buffer_customization<std::string>
      pos:
        line_end: 72
        line_start: 32
        source_file: /src/pdns/ext/protozero/include/protozero/buffer_string.hpp
    typedefs: []
    union: []
- function_names:
  - protozero::basic_pbf_builder::basic_pbf_builder
  - protozero::basic_pbf_builder::basic_pbf_builder
  - protozero::basic_pbf_builder::basic_pbf_builder
  - PROTOZERO_WRITER_WRAP_ADD_SCALAR
  - protozero::basic_pbf_builder::add_bytes
  - protozero::basic_pbf_builder::add_bytes
  - protozero::basic_pbf_builder::add_bytes
  - protozero::basic_pbf_builder::add_bytes
  - protozero::basic_pbf_builder::add_bytes_vectored
  - protozero::basic_pbf_builder::add_string
  - protozero::basic_pbf_builder::add_string
  - protozero::basic_pbf_builder::add_string
  - protozero::basic_pbf_builder::add_string
  - protozero::basic_pbf_builder::add_message
  - protozero::basic_pbf_builder::add_message
  - protozero::basic_pbf_builder::add_message
  - PROTOZERO_WRITER_WRAP_ADD_PACKED
  - protozero::basic_pbf_builder::basic_pbf_builder
  - protozero::basic_pbf_builder::basic_pbf_builder
  - protozero::basic_pbf_builder::basic_pbf_builder
  - PROTOZERO_WRITER_WRAP_ADD_SCALAR
  - protozero::basic_pbf_builder::add_bytes
  - protozero::basic_pbf_builder::add_bytes
  - protozero::basic_pbf_builder::add_bytes
  - protozero::basic_pbf_builder::add_bytes
  - protozero::basic_pbf_builder::add_bytes_vectored
  - protozero::basic_pbf_builder::add_string
  - protozero::basic_pbf_builder::add_string
  - protozero::basic_pbf_builder::add_string
  - protozero::basic_pbf_builder::add_string
  - protozero::basic_pbf_builder::add_message
  - protozero::basic_pbf_builder::add_message
  - protozero::basic_pbf_builder::add_message
  - PROTOZERO_WRITER_WRAP_ADD_PACKED
  source_file: /src/pdns/ext/protozero/include/protozero/basic_pbf_builder.hpp
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - protozero::fixed_size_buffer_adaptor::fixed_size_buffer_adaptor
  - protozero::fixed_size_buffer_adaptor::fixed_size_buffer_adaptor
  - protozero::fixed_size_buffer_adaptor::data
  - protozero::fixed_size_buffer_adaptor::data
  - protozero::fixed_size_buffer_adaptor::capacity
  - protozero::fixed_size_buffer_adaptor::size
  - protozero::fixed_size_buffer_adaptor::begin
  - protozero::fixed_size_buffer_adaptor::begin
  - protozero::fixed_size_buffer_adaptor::cbegin
  - protozero::fixed_size_buffer_adaptor::end
  - protozero::fixed_size_buffer_adaptor::end
  - protozero::fixed_size_buffer_adaptor::cend
  - protozero::fixed_size_buffer_adaptor::append
  - protozero::fixed_size_buffer_adaptor::append_zeros
  - protozero::fixed_size_buffer_adaptor::resize
  - protozero::fixed_size_buffer_adaptor::erase_range
  - protozero::fixed_size_buffer_adaptor::at_pos
  - protozero::fixed_size_buffer_adaptor::push_back
  - protozero::size
  - protozero::append
  - protozero::append_zeros
  - protozero::resize
  - protozero::reserve_additional
  - protozero::erase_range
  - protozero::at_pos
  - protozero::push_back
  - protozero::fixed_size_buffer_adaptor::fixed_size_buffer_adaptor
  - protozero::fixed_size_buffer_adaptor::fixed_size_buffer_adaptor
  - protozero::fixed_size_buffer_adaptor::data
  - protozero::fixed_size_buffer_adaptor::data
  - protozero::fixed_size_buffer_adaptor::capacity
  - protozero::fixed_size_buffer_adaptor::size
  - protozero::fixed_size_buffer_adaptor::begin
  - protozero::fixed_size_buffer_adaptor::begin
  - protozero::fixed_size_buffer_adaptor::cbegin
  - protozero::fixed_size_buffer_adaptor::end
  - protozero::fixed_size_buffer_adaptor::end
  - protozero::fixed_size_buffer_adaptor::cend
  - protozero::fixed_size_buffer_adaptor::append
  - protozero::fixed_size_buffer_adaptor::append_zeros
  - protozero::fixed_size_buffer_adaptor::resize
  - protozero::fixed_size_buffer_adaptor::erase_range
  - protozero::fixed_size_buffer_adaptor::at_pos
  - protozero::fixed_size_buffer_adaptor::push_back
  - protozero::size
  - protozero::append
  - protozero::append_zeros
  - protozero::resize
  - protozero::reserve_additional
  - protozero::erase_range
  - protozero::at_pos
  - protozero::push_back
  source_file: /src/pdns/ext/protozero/include/protozero/buffer_fixed.hpp
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields: []
      item_type: struct
      name: buffer_customization<fixed_size_buffer_adaptor>
      pos:
        line_end: 216
        line_start: 182
        source_file: /src/pdns/ext/protozero/include/protozero/buffer_fixed.hpp
    - fields: []
      item_type: struct
      name: buffer_customization<fixed_size_buffer_adaptor>
      pos:
        line_end: 216
        line_start: 182
        source_file: /src/pdns/ext/protozero/include/protozero/buffer_fixed.hpp
    typedefs: []
    union: []
- function_names:
  - protozero::basic_pbf_writer::add_varint
  - protozero::basic_pbf_writer::add_field
  - protozero::basic_pbf_writer::add_tagged_varint
  - protozero::basic_pbf_writer::add_fixed
  - protozero::basic_pbf_writer::add_packed_fixed
  - protozero::basic_pbf_writer::add_packed_fixed
  - protozero::basic_pbf_writer::add_packed_varint
  - protozero::basic_pbf_writer::add_packed_svarint
  - protozero::basic_pbf_writer::open_submessage
  - protozero::basic_pbf_writer::rollback_submessage
  - protozero::basic_pbf_writer::commit_submessage
  - protozero::basic_pbf_writer::close_submessage
  - protozero::basic_pbf_writer::add_length_varint
  - protozero::basic_pbf_writer::basic_pbf_writer
  - protozero::basic_pbf_writer::basic_pbf_writer
  - protozero::basic_pbf_writer::basic_pbf_writer
  - protozero::basic_pbf_writer::basic_pbf_writer
  - '& operator=(const basic_pbf_writer&)'
  - protozero::basic_pbf_writer::basic_pbf_writer
  - '& operator=(basic_pbf_writer&& other) noexcept'
  - ~basic_pbf_writer() noexcept
  - protozero::basic_pbf_writer::valid
  - protozero::basic_pbf_writer::swap
  - protozero::basic_pbf_writer::reserve
  - protozero::basic_pbf_writer::commit
  - protozero::basic_pbf_writer::rollback
  - protozero::basic_pbf_writer::add_bool
  - protozero::basic_pbf_writer::add_enum
  - protozero::basic_pbf_writer::add_int32
  - protozero::basic_pbf_writer::add_sint32
  - protozero::basic_pbf_writer::add_uint32
  - protozero::basic_pbf_writer::add_int64
  - protozero::basic_pbf_writer::add_sint64
  - protozero::basic_pbf_writer::add_uint64
  - protozero::basic_pbf_writer::add_fixed32
  - protozero::basic_pbf_writer::add_sfixed32
  - protozero::basic_pbf_writer::add_fixed64
  - protozero::basic_pbf_writer::add_sfixed64
  - protozero::basic_pbf_writer::add_float
  - protozero::basic_pbf_writer::add_double
  - protozero::basic_pbf_writer::add_bytes
  - protozero::basic_pbf_writer::add_bytes
  - protozero::basic_pbf_writer::add_bytes
  - protozero::basic_pbf_writer::add_bytes
  - protozero::basic_pbf_writer::add_bytes_vectored
  - protozero::basic_pbf_writer::add_string
  - protozero::basic_pbf_writer::add_string
  - protozero::basic_pbf_writer::add_string
  - protozero::basic_pbf_writer::add_string
  - protozero::basic_pbf_writer::add_message
  - protozero::basic_pbf_writer::add_message
  - protozero::basic_pbf_writer::add_message
  - protozero::basic_pbf_writer::add_packed_bool
  - protozero::basic_pbf_writer::add_packed_enum
  - protozero::basic_pbf_writer::add_packed_int32
  - protozero::basic_pbf_writer::add_packed_sint32
  - protozero::basic_pbf_writer::add_packed_uint32
  - protozero::basic_pbf_writer::add_packed_int64
  - protozero::basic_pbf_writer::add_packed_sint64
  - protozero::basic_pbf_writer::add_packed_uint64
  - protozero::basic_pbf_writer::add_packed_fixed
  - protozero::basic_pbf_writer::add_packed_fixed
  - protozero::basic_pbf_writer::add_packed_fixed32
  - protozero::basic_pbf_writer::add_packed_fixed
  - protozero::basic_pbf_writer::add_packed_sfixed32
  - protozero::basic_pbf_writer::add_packed_fixed
  - protozero::basic_pbf_writer::add_packed_fixed64
  - protozero::basic_pbf_writer::add_packed_fixed
  - protozero::basic_pbf_writer::add_packed_sfixed64
  - protozero::basic_pbf_writer::add_packed_fixed
  - protozero::basic_pbf_writer::add_packed_float
  - protozero::basic_pbf_writer::add_packed_fixed
  - protozero::basic_pbf_writer::add_packed_double
  - protozero::basic_pbf_writer::add_packed_fixed
  - protozero::swap
  - protozero::detail::packed_field::packed_field
  - '& operator=(const packed_field&)'
  - protozero::detail::packed_field::packed_field
  - '& operator=(packed_field&&) noexcept'
  - protozero::detail::packed_field::packed_field
  - protozero::detail::packed_field::packed_field
  - protozero::detail::packed_field::packed_field
  - ~packed_field() noexcept
  - protozero::detail::packed_field::valid
  - protozero::detail::packed_field::commit
  - protozero::detail::packed_field::rollback
  - '& writer() noexcept'
  - protozero::detail::packed_field_fixed::packed_field_fixed
  - protozero::detail::packed_field_fixed::packed_field_fixed
  - protozero::detail::packed_field_fixed::packed_field_fixed
  - protozero::detail::packed_field_fixed::add_element
  - protozero::detail::packed_field_varint::packed_field_varint
  - protozero::detail::packed_field_varint::packed_field_varint
  - protozero::detail::packed_field_varint::add_element
  - protozero::detail::packed_field_svarint::packed_field_svarint
  - protozero::detail::packed_field_svarint::packed_field_svarint
  - protozero::detail::packed_field_svarint::add_element
  - protozero::detail::packed_field::packed_field
  - '& operator=(const packed_field&)'
  - protozero::detail::packed_field::packed_field
  - '& operator=(packed_field&&) noexcept'
  - protozero::detail::packed_field::packed_field
  - protozero::detail::packed_field::packed_field
  - protozero::detail::packed_field::packed_field
  - ~packed_field() noexcept
  - protozero::detail::packed_field::valid
  - protozero::detail::packed_field::commit
  - protozero::detail::packed_field::rollback
  - '& writer() noexcept'
  - protozero::detail::packed_field_fixed::packed_field_fixed
  - protozero::detail::packed_field_fixed::packed_field_fixed
  - protozero::detail::packed_field_fixed::packed_field_fixed
  - protozero::detail::packed_field_fixed::add_element
  - protozero::detail::packed_field_varint::packed_field_varint
  - protozero::detail::packed_field_varint::packed_field_varint
  - protozero::detail::packed_field_varint::add_element
  - protozero::detail::packed_field_svarint::packed_field_svarint
  - protozero::detail::packed_field_svarint::packed_field_svarint
  - protozero::detail::packed_field_svarint::add_element
  - protozero::basic_pbf_writer::add_varint
  - protozero::basic_pbf_writer::add_field
  - protozero::basic_pbf_writer::add_tagged_varint
  - protozero::basic_pbf_writer::add_fixed
  - protozero::basic_pbf_writer::add_packed_fixed
  - protozero::basic_pbf_writer::add_packed_fixed
  - protozero::basic_pbf_writer::add_packed_varint
  - protozero::basic_pbf_writer::add_packed_svarint
  - protozero::basic_pbf_writer::open_submessage
  - protozero::basic_pbf_writer::rollback_submessage
  - protozero::basic_pbf_writer::commit_submessage
  - protozero::basic_pbf_writer::close_submessage
  - protozero::basic_pbf_writer::add_length_varint
  - protozero::basic_pbf_writer::basic_pbf_writer
  - protozero::basic_pbf_writer::basic_pbf_writer
  - protozero::basic_pbf_writer::basic_pbf_writer
  - protozero::basic_pbf_writer::basic_pbf_writer
  - '& operator=(const basic_pbf_writer&)'
  - protozero::basic_pbf_writer::basic_pbf_writer
  - '& operator=(basic_pbf_writer&& other) noexcept'
  - ~basic_pbf_writer() noexcept
  - protozero::basic_pbf_writer::valid
  - protozero::basic_pbf_writer::swap
  - protozero::basic_pbf_writer::reserve
  - protozero::basic_pbf_writer::commit
  - protozero::basic_pbf_writer::rollback
  - protozero::basic_pbf_writer::add_bool
  - protozero::basic_pbf_writer::add_enum
  - protozero::basic_pbf_writer::add_int32
  - protozero::basic_pbf_writer::add_sint32
  - protozero::basic_pbf_writer::add_uint32
  - protozero::basic_pbf_writer::add_int64
  - protozero::basic_pbf_writer::add_sint64
  - protozero::basic_pbf_writer::add_uint64
  - protozero::basic_pbf_writer::add_fixed32
  - protozero::basic_pbf_writer::add_sfixed32
  - protozero::basic_pbf_writer::add_fixed64
  - protozero::basic_pbf_writer::add_sfixed64
  - protozero::basic_pbf_writer::add_float
  - protozero::basic_pbf_writer::add_double
  - protozero::basic_pbf_writer::add_bytes
  - protozero::basic_pbf_writer::add_bytes
  - protozero::basic_pbf_writer::add_bytes
  - protozero::basic_pbf_writer::add_bytes
  - protozero::basic_pbf_writer::add_bytes_vectored
  - protozero::basic_pbf_writer::add_string
  - protozero::basic_pbf_writer::add_string
  - protozero::basic_pbf_writer::add_string
  - protozero::basic_pbf_writer::add_string
  - protozero::basic_pbf_writer::add_message
  - protozero::basic_pbf_writer::add_message
  - protozero::basic_pbf_writer::add_message
  - protozero::basic_pbf_writer::add_packed_bool
  - protozero::basic_pbf_writer::add_packed_enum
  - protozero::basic_pbf_writer::add_packed_int32
  - protozero::basic_pbf_writer::add_packed_sint32
  - protozero::basic_pbf_writer::add_packed_uint32
  - protozero::basic_pbf_writer::add_packed_int64
  - protozero::basic_pbf_writer::add_packed_sint64
  - protozero::basic_pbf_writer::add_packed_uint64
  - protozero::basic_pbf_writer::add_packed_fixed
  - protozero::basic_pbf_writer::add_packed_fixed
  - protozero::basic_pbf_writer::add_packed_fixed32
  - protozero::basic_pbf_writer::add_packed_fixed
  - protozero::basic_pbf_writer::add_packed_sfixed32
  - protozero::basic_pbf_writer::add_packed_fixed
  - protozero::basic_pbf_writer::add_packed_fixed64
  - protozero::basic_pbf_writer::add_packed_fixed
  - protozero::basic_pbf_writer::add_packed_sfixed64
  - protozero::basic_pbf_writer::add_packed_fixed
  - protozero::basic_pbf_writer::add_packed_float
  - protozero::basic_pbf_writer::add_packed_fixed
  - protozero::basic_pbf_writer::add_packed_double
  - protozero::basic_pbf_writer::add_packed_fixed
  - protozero::swap
  - protozero::detail::packed_field::packed_field
  - '& operator=(const packed_field&)'
  - protozero::detail::packed_field::packed_field
  - '& operator=(packed_field&&) noexcept'
  - protozero::detail::packed_field::packed_field
  - protozero::detail::packed_field::packed_field
  - protozero::detail::packed_field::packed_field
  - ~packed_field() noexcept
  - protozero::detail::packed_field::valid
  - protozero::detail::packed_field::commit
  - protozero::detail::packed_field::rollback
  - '& writer() noexcept'
  - protozero::detail::packed_field_fixed::packed_field_fixed
  - protozero::detail::packed_field_fixed::packed_field_fixed
  - protozero::detail::packed_field_fixed::packed_field_fixed
  - protozero::detail::packed_field_fixed::add_element
  - protozero::detail::packed_field_varint::packed_field_varint
  - protozero::detail::packed_field_varint::packed_field_varint
  - protozero::detail::packed_field_varint::add_element
  - protozero::detail::packed_field_svarint::packed_field_svarint
  - protozero::detail::packed_field_svarint::packed_field_svarint
  - protozero::detail::packed_field_svarint::add_element
  - protozero::detail::packed_field::packed_field
  - '& operator=(const packed_field&)'
  - protozero::detail::packed_field::packed_field
  - '& operator=(packed_field&&) noexcept'
  - protozero::detail::packed_field::packed_field
  - protozero::detail::packed_field::packed_field
  - protozero::detail::packed_field::packed_field
  - ~packed_field() noexcept
  - protozero::detail::packed_field::valid
  - protozero::detail::packed_field::commit
  - protozero::detail::packed_field::rollback
  - '& writer() noexcept'
  - protozero::detail::packed_field_fixed::packed_field_fixed
  - protozero::detail::packed_field_fixed::packed_field_fixed
  - protozero::detail::packed_field_fixed::packed_field_fixed
  - protozero::detail::packed_field_fixed::add_element
  - protozero::detail::packed_field_varint::packed_field_varint
  - protozero::detail::packed_field_varint::packed_field_varint
  - protozero::detail::packed_field_varint::add_element
  - protozero::detail::packed_field_svarint::packed_field_svarint
  - protozero::detail::packed_field_svarint::packed_field_svarint
  - protozero::detail::packed_field_svarint::add_element
  source_file: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
  types:
    enum:
    - enumerators:
      - name: size_is_known
        value: std::numeric_limits<std::size_t>::max()
      item_type: enum
      name: std::size_t
      pos:
        line_end: 172
        line_start: 170
        source_file: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    - enumerators:
      - name: size_is_known
        value: std::numeric_limits<std::size_t>::max()
      item_type: enum
      name: std::size_t
      pos:
        line_end: 172
        line_start: 170
        source_file: /src/pdns/ext/protozero/include/protozero/basic_pbf_writer.hpp
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - protozero::detail::decode_varint_impl
  - protozero::detail::decode_varint_impl
  - protozero::decode_varint
  - protozero::skip_varint
  - protozero::write_varint
  - protozero::add_varint_to_buffer
  - protozero::add_varint_to_buffer
  - protozero::length_of_varint
  - protozero::encode_zigzag32
  - protozero::encode_zigzag64
  - protozero::decode_zigzag32
  - protozero::decode_zigzag64
  - protozero::detail::decode_varint_impl
  - protozero::detail::decode_varint_impl
  - protozero::decode_varint
  - protozero::skip_varint
  - protozero::write_varint
  - protozero::add_varint_to_buffer
  - protozero::add_varint_to_buffer
  - protozero::length_of_varint
  - protozero::encode_zigzag32
  - protozero::encode_zigzag64
  - protozero::decode_zigzag32
  - protozero::decode_zigzag64
  source_file: /src/pdns/ext/protozero/include/protozero/varint.hpp
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/pdns/ext/protozero/include/protozero/pbf_builder.hpp
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/pdns/ext/protozero/include/protozero/buffer_tmpl.hpp
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: size(const std::string* buffer)
        type: std::size_t
      - name: append(std::string* buffer, const char* data, std::size_t count)
        type: void
      - name: append_zeros(std::string* buffer, std::size_t count)
        type: void
      - name: resize(std::string* buffer, std::size_t size)
        type: void
      - name: reserve_additional(std::string* buffer, std::size_t size)
        type: void
      - name: erase_range(std::string* buffer, std::size_t from, std::size_t to)
        type: void
      - name: '* at_pos(std::string* buffer, std::size_t pos)'
        type: char
      - name: push_back(std::string* buffer, char ch)
        type: void
      item_type: struct
      name: buffer_customization
      pos:
        line_end: 107
        line_start: 28
        source_file: /src/pdns/ext/protozero/include/protozero/buffer_tmpl.hpp
    - fields:
      - name: size(const std::string* buffer)
        type: std::size_t
      - name: append(std::string* buffer, const char* data, std::size_t count)
        type: void
      - name: append_zeros(std::string* buffer, std::size_t count)
        type: void
      - name: resize(std::string* buffer, std::size_t size)
        type: void
      - name: reserve_additional(std::string* buffer, std::size_t size)
        type: void
      - name: erase_range(std::string* buffer, std::size_t from, std::size_t to)
        type: void
      - name: '* at_pos(std::string* buffer, std::size_t pos)'
        type: char
      - name: push_back(std::string* buffer, char ch)
        type: void
      item_type: struct
      name: buffer_customization
      pos:
        line_end: 107
        line_start: 28
        source_file: /src/pdns/ext/protozero/include/protozero/buffer_tmpl.hpp
    typedefs: []
    union: []
- function_names:
  - protozero::data_view::data_view
  - protozero::data_view::data_view
  - protozero::data_view::data_view
  - protozero::data_view::data_view
  - protozero::data_view::swap
  - protozero::data_view::data
  - protozero::data_view::size
  - protozero::data_view::empty
  - protozero::data_view::to_string
  - operator std::string() const
  - protozero::data_view::compare
  - protozero::swap
  - operator==(const data_view lhs, const data_view rhs) noexcept
  - operator!=(const data_view lhs, const data_view rhs) noexcept
  - operator<(const data_view lhs, const data_view rhs) noexcept
  - operator<=(const data_view lhs, const data_view rhs) noexcept
  - operator>(const data_view lhs, const data_view rhs) noexcept
  - operator>=(const data_view lhs, const data_view rhs) noexcept
  - protozero::data_view::data_view
  - protozero::data_view::data_view
  - protozero::data_view::data_view
  - protozero::data_view::data_view
  - protozero::data_view::swap
  - protozero::data_view::data
  - protozero::data_view::size
  - protozero::data_view::empty
  - protozero::data_view::to_string
  - operator std::string() const
  - protozero::data_view::compare
  - protozero::swap
  - operator==(const data_view lhs, const data_view rhs) noexcept
  - operator!=(const data_view lhs, const data_view rhs) noexcept
  - operator<(const data_view lhs, const data_view rhs) noexcept
  - operator<=(const data_view lhs, const data_view rhs) noexcept
  - operator>(const data_view lhs, const data_view rhs) noexcept
  - operator>=(const data_view lhs, const data_view rhs) noexcept
  source_file: /src/pdns/ext/protozero/include/protozero/data_view.hpp
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - protozero::detail::byteswap_impl
  - protozero::detail::byteswap_impl
  - protozero::detail::byteswap_impl
  - protozero::detail::byteswap_impl
  - protozero::byteswap_inplace
  - protozero::byteswap_inplace
  - protozero::byteswap_inplace
  - protozero::byteswap_inplace
  - protozero::byteswap_inplace
  - protozero::byteswap_inplace
  - protozero::detail::byteswap_impl
  - protozero::detail::byteswap_impl
  - protozero::detail::byteswap_impl
  - protozero::detail::byteswap_impl
  - protozero::byteswap_inplace
  - protozero::byteswap_inplace
  - protozero::byteswap_inplace
  - protozero::byteswap_inplace
  - protozero::byteswap_inplace
  - protozero::byteswap_inplace
  source_file: /src/pdns/ext/protozero/include/protozero/byteswap.hpp
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/pdns/ext/protozero/include/protozero/version.hpp
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: PROTOZERO_VERSION_MAJOR
      pos:
        line_end: 20
        line_start: 19
        source_file: /src/pdns/ext/protozero/include/protozero/version.hpp
      type_or_value: '1'
    - item_type: preproc_def
      name: PROTOZERO_VERSION_MINOR
      pos:
        line_end: 23
        line_start: 22
        source_file: /src/pdns/ext/protozero/include/protozero/version.hpp
      type_or_value: '8'
    - item_type: preproc_def
      name: PROTOZERO_VERSION_PATCH
      pos:
        line_end: 26
        line_start: 25
        source_file: /src/pdns/ext/protozero/include/protozero/version.hpp
      type_or_value: '0'
    - item_type: preproc_def
      name: PROTOZERO_VERSION_CODE
      pos:
        line_end: 29
        line_start: 28
        source_file: /src/pdns/ext/protozero/include/protozero/version.hpp
      type_or_value: (PROTOZERO_VERSION_MAJOR * 10000 + PROTOZERO_VERSION_MINOR *
        100 + PROTOZERO_VERSION_PATCH)
    - item_type: preproc_def
      name: PROTOZERO_VERSION_STRING
      pos:
        line_end: 32
        line_start: 31
        source_file: /src/pdns/ext/protozero/include/protozero/version.hpp
      type_or_value: '"1.8.0"'
    structs: []
    typedefs: []
    union: []
- function_names:
  - protozero::tag_and_type
  - protozero::tag_and_type
  source_file: /src/pdns/ext/protozero/include/protozero/types.hpp
  types:
    enum:
    - enumerators:
      - name: varint
        value: '0'
      - name: length_delimited
        value: '2'
      - name: fixed64
        value: '1'
      - name: fixed32
        value: '5'
      - name: unknown
        value: '99'
      item_type: enum
      name: pbf_wire_type
      pos:
        line_end: 45
        line_start: 39
        source_file: /src/pdns/ext/protozero/include/protozero/types.hpp
    - enumerators:
      - name: varint
        value: '0'
      - name: length_delimited
        value: '2'
      - name: fixed64
        value: '1'
      - name: fixed32
        value: '5'
      - name: unknown
        value: '99'
      item_type: enum
      name: pbf_wire_type
      pos:
        line_end: 45
        line_start: 39
        source_file: /src/pdns/ext/protozero/include/protozero/types.hpp
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - protozero::pbf_reader::get_fixed
  - protozero::pbf_reader::packed_fixed
  - protozero::pbf_reader::get_varint
  - protozero::pbf_reader::get_svarint
  - protozero::pbf_reader::get_length
  - protozero::pbf_reader::skip_bytes
  - protozero::pbf_reader::get_len_and_skip
  - protozero::pbf_reader::get_packed
  - protozero::pbf_reader::pbf_reader
  - protozero::pbf_reader::pbf_reader
  - protozero::pbf_reader::pbf_reader
  - protozero::pbf_reader::pbf_reader
  - protozero::pbf_reader::pbf_reader
  - protozero::pbf_reader::pbf_reader
  - protozero::pbf_reader::pbf_reader
  - '& operator=(const pbf_reader& other) noexcept'
  - '& operator=(pbf_reader&& other) noexcept'
  - ~pbf_reader()
  - protozero::pbf_reader::swap
  - operator bool() const noexcept
  - protozero::pbf_reader::data
  - protozero::pbf_reader::length
  - protozero::pbf_reader::next
  - protozero::pbf_reader::next
  - protozero::pbf_reader::next
  - protozero::pbf_reader::tag
  - protozero::pbf_reader::wire_type
  - protozero::pbf_reader::tag_and_type
  - protozero::pbf_reader::has_wire_type
  - protozero::pbf_reader::skip
  - protozero::pbf_reader::get_bool
  - protozero::pbf_reader::get_enum
  - protozero::pbf_reader::get_int32
  - protozero::pbf_reader::get_sint32
  - protozero::pbf_reader::get_uint32
  - protozero::pbf_reader::get_int64
  - protozero::pbf_reader::get_sint64
  - protozero::pbf_reader::get_uint64
  - protozero::pbf_reader::get_fixed32
  - protozero::pbf_reader::get_sfixed32
  - protozero::pbf_reader::get_fixed64
  - protozero::pbf_reader::get_sfixed64
  - protozero::pbf_reader::get_float
  - protozero::pbf_reader::get_double
  - protozero::pbf_reader::get_view
  - protozero::pbf_reader::get_data
  - protozero::pbf_reader::get_bytes
  - protozero::pbf_reader::get_string
  - protozero::pbf_reader::get_message
  - protozero::pbf_reader::get_packed_bool
  - protozero::pbf_reader::get_packed_enum
  - protozero::pbf_reader::get_packed_int32
  - protozero::pbf_reader::get_packed_sint32
  - protozero::pbf_reader::get_packed_uint32
  - protozero::pbf_reader::get_packed_int64
  - protozero::pbf_reader::get_packed_sint64
  - protozero::pbf_reader::get_packed_uint64
  - protozero::pbf_reader::get_packed_fixed32
  - protozero::pbf_reader::get_packed_sfixed32
  - protozero::pbf_reader::get_packed_fixed64
  - protozero::pbf_reader::get_packed_sfixed64
  - protozero::pbf_reader::get_packed_float
  - protozero::pbf_reader::get_packed_double
  - protozero::swap
  - protozero::pbf_reader::get_fixed
  - protozero::pbf_reader::packed_fixed
  - protozero::pbf_reader::get_varint
  - protozero::pbf_reader::get_svarint
  - protozero::pbf_reader::get_length
  - protozero::pbf_reader::skip_bytes
  - protozero::pbf_reader::get_len_and_skip
  - protozero::pbf_reader::get_packed
  - protozero::pbf_reader::pbf_reader
  - protozero::pbf_reader::pbf_reader
  - protozero::pbf_reader::pbf_reader
  - protozero::pbf_reader::pbf_reader
  - protozero::pbf_reader::pbf_reader
  - protozero::pbf_reader::pbf_reader
  - protozero::pbf_reader::pbf_reader
  - '& operator=(const pbf_reader& other) noexcept'
  - '& operator=(pbf_reader&& other) noexcept'
  - ~pbf_reader()
  - protozero::pbf_reader::swap
  - operator bool() const noexcept
  - protozero::pbf_reader::data
  - protozero::pbf_reader::length
  - protozero::pbf_reader::next
  - protozero::pbf_reader::next
  - protozero::pbf_reader::next
  - protozero::pbf_reader::tag
  - protozero::pbf_reader::wire_type
  - protozero::pbf_reader::tag_and_type
  - protozero::pbf_reader::has_wire_type
  - protozero::pbf_reader::skip
  - protozero::pbf_reader::get_bool
  - protozero::pbf_reader::get_enum
  - protozero::pbf_reader::get_int32
  - protozero::pbf_reader::get_sint32
  - protozero::pbf_reader::get_uint32
  - protozero::pbf_reader::get_int64
  - protozero::pbf_reader::get_sint64
  - protozero::pbf_reader::get_uint64
  - protozero::pbf_reader::get_fixed32
  - protozero::pbf_reader::get_sfixed32
  - protozero::pbf_reader::get_fixed64
  - protozero::pbf_reader::get_sfixed64
  - protozero::pbf_reader::get_float
  - protozero::pbf_reader::get_double
  - protozero::pbf_reader::get_view
  - protozero::pbf_reader::get_data
  - protozero::pbf_reader::get_bytes
  - protozero::pbf_reader::get_string
  - protozero::pbf_reader::get_message
  - protozero::pbf_reader::get_packed_bool
  - protozero::pbf_reader::get_packed_enum
  - protozero::pbf_reader::get_packed_int32
  - protozero::pbf_reader::get_packed_sint32
  - protozero::pbf_reader::get_packed_uint32
  - protozero::pbf_reader::get_packed_int64
  - protozero::pbf_reader::get_packed_sint64
  - protozero::pbf_reader::get_packed_uint64
  - protozero::pbf_reader::get_packed_fixed32
  - protozero::pbf_reader::get_packed_sfixed32
  - protozero::pbf_reader::get_packed_fixed64
  - protozero::pbf_reader::get_packed_sfixed64
  - protozero::pbf_reader::get_packed_float
  - protozero::pbf_reader::get_packed_double
  - protozero::swap
  source_file: /src/pdns/ext/protozero/include/protozero/pbf_reader.hpp
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - protozero_assert
  source_file: /src/pdns/ext/protozero/include/protozero/config.hpp
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: PROTOZERO_LITTLE_ENDIAN
      pos:
        line_end: 29
        line_start: 28
        source_file: /src/pdns/ext/protozero/include/protozero/config.hpp
      type_or_value: '1234'
    - item_type: preproc_def
      name: PROTOZERO_BIG_ENDIAN
      pos:
        line_end: 30
        line_start: 29
        source_file: /src/pdns/ext/protozero/include/protozero/config.hpp
      type_or_value: '4321'
    - item_type: preproc_def
      name: PROTOZERO_BYTE_ORDER
      pos:
        line_end: 35
        line_start: 34
        source_file: /src/pdns/ext/protozero/include/protozero/config.hpp
      type_or_value: PROTOZERO_LITTLE_ENDIAN
    - item_type: preproc_def
      name: PROTOZERO_BYTE_ORDER
      pos:
        line_end: 38
        line_start: 37
        source_file: /src/pdns/ext/protozero/include/protozero/config.hpp
      type_or_value: PROTOZERO_BIG_ENDIAN
    - item_type: preproc_def
      name: PROTOZERO_BYTE_ORDER
      pos:
        line_end: 43
        line_start: 42
        source_file: /src/pdns/ext/protozero/include/protozero/config.hpp
      type_or_value: PROTOZERO_LITTLE_ENDIAN
    structs: []
    typedefs: []
    union: []
- function_names:
  - protozero::what
  - protozero::what
  - protozero::what
  - protozero::what
  - protozero::what
  - protozero::what
  - protozero::what
  - protozero::what
  - protozero::what
  - protozero::what
  - protozero::what
  - protozero::what
  source_file: /src/pdns/ext/protozero/include/protozero/exception.hpp
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields: []
      item_type: struct
      name: exception
      pos:
        line_end: 34
        line_start: 29
        source_file: /src/pdns/ext/protozero/include/protozero/exception.hpp
    - fields: []
      item_type: struct
      name: varint_too_long_exception
      pos:
        line_end: 45
        line_start: 40
        source_file: /src/pdns/ext/protozero/include/protozero/exception.hpp
    - fields: []
      item_type: struct
      name: unknown_pbf_wire_type_exception
      pos:
        line_end: 56
        line_start: 51
        source_file: /src/pdns/ext/protozero/include/protozero/exception.hpp
    - fields: []
      item_type: struct
      name: end_of_buffer_exception
      pos:
        line_end: 71
        line_start: 66
        source_file: /src/pdns/ext/protozero/include/protozero/exception.hpp
    - fields: []
      item_type: struct
      name: invalid_tag_exception
      pos:
        line_end: 84
        line_start: 79
        source_file: /src/pdns/ext/protozero/include/protozero/exception.hpp
    - fields: []
      item_type: struct
      name: invalid_length_exception
      pos:
        line_end: 96
        line_start: 91
        source_file: /src/pdns/ext/protozero/include/protozero/exception.hpp
    - fields: []
      item_type: struct
      name: exception
      pos:
        line_end: 34
        line_start: 29
        source_file: /src/pdns/ext/protozero/include/protozero/exception.hpp
    - fields: []
      item_type: struct
      name: varint_too_long_exception
      pos:
        line_end: 45
        line_start: 40
        source_file: /src/pdns/ext/protozero/include/protozero/exception.hpp
    - fields: []
      item_type: struct
      name: unknown_pbf_wire_type_exception
      pos:
        line_end: 56
        line_start: 51
        source_file: /src/pdns/ext/protozero/include/protozero/exception.hpp
    - fields: []
      item_type: struct
      name: end_of_buffer_exception
      pos:
        line_end: 71
        line_start: 66
        source_file: /src/pdns/ext/protozero/include/protozero/exception.hpp
    - fields: []
      item_type: struct
      name: invalid_tag_exception
      pos:
        line_end: 84
        line_start: 79
        source_file: /src/pdns/ext/protozero/include/protozero/exception.hpp
    - fields: []
      item_type: struct
      name: invalid_length_exception
      pos:
        line_end: 96
        line_start: 91
        source_file: /src/pdns/ext/protozero/include/protozero/exception.hpp
    typedefs: []
    union: []
- function_names:
  - protozero::pbf_message::pbf_message
  - protozero::pbf_message::next
  - protozero::pbf_message::next
  - protozero::pbf_message::next
  - protozero::pbf_message::tag
  - protozero::pbf_message::pbf_message
  - protozero::pbf_message::next
  - protozero::pbf_message::next
  - protozero::pbf_message::next
  - protozero::pbf_message::tag
  source_file: /src/pdns/ext/protozero/include/protozero/pbf_message.hpp
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/pdns/ext/ipcrypt/ipcrypt.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: IPCRYPT_BYTES
      pos:
        line_end: 5
        line_start: 4
        source_file: /src/pdns/ext/ipcrypt/ipcrypt.h
      type_or_value: '4'
    - item_type: preproc_def
      name: IPCRYPT_KEYBYTES
      pos:
        line_end: 6
        line_start: 5
        source_file: /src/pdns/ext/ipcrypt/ipcrypt.h
      type_or_value: '16'
    structs: []
    typedefs: []
    union: []
- function_names:
  - ROTL
  - arx_fwd
  - arx_bwd
  - xor4
  - ipcrypt_encrypt
  - ipcrypt_decrypt
  source_file: /src/pdns/ext/ipcrypt/ipcrypt.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - cursor_init
  - PARSE_FUNC_DECLARATION
  - parse_eth
  source_file: /src/pdns/contrib/xdp.h
  types:
    enum:
    - enumerators:
      - name: PASS
        value: '0'
      - name: TC
        value: '2'
      - name: DROP
        value: '1'
      item_type: enum
      name: dns_action
      pos:
        line_end: 97
        line_start: 93
        source_file: /src/pdns/contrib/xdp.h
    preproc_defs:
    - item_type: preproc_def
      name: DNS_PORT
      pos:
        line_end: 9
        line_start: 8
        source_file: /src/pdns/contrib/xdp.h
      type_or_value: '53'
    - item_type: preproc_def
      name: memcpy
      pos:
        line_end: 17
        line_start: 16
        source_file: /src/pdns/contrib/xdp.h
      type_or_value: __builtin_memcpy
    structs:
    - fields:
      - name: '*pos'
        type: void
      - name: '*end'
        type: void
      item_type: struct
      name: cursor
      pos:
        line_end: 25
        line_start: 22
        source_file: /src/pdns/contrib/xdp.h
    - fields:
      - name: tci
        type: uint16_t
      - name: encap_proto
        type: uint16_t
      item_type: struct
      name: vlanhdr
      pos:
        line_end: 34
        line_start: 31
        source_file: /src/pdns/contrib/xdp.h
    - fields:
      - name: id
        type: uint16_t
      - name: flags
        type: "union {\n  \tstruct {\n#if BYTE_ORDER == LITTLE_ENDIAN\n  \t\tuint8_t
          \ rd     : 1;\n  \t\tuint8_t  tc     : 1;\n  \t\tuint8_t  aa     : 1;\n
          \ \t\tuint8_t  opcode : 4;\n  \t\tuint8_t  qr     : 1;\n\n  \t\tuint8_t
          \ rcode  : 4;\n  \t\tuint8_t  cd     : 1;\n  \t\tuint8_t  ad     : 1;\n
          \ \t\tuint8_t  z      : 1;\n  \t\tuint8_t  ra     : 1;\n#elif BYTE_ORDER
          == BIG_ENDIAN || BYTE_ORDER == PDP_ENDIAN\n  \t\tuint8_t  qr     : 1;\n
          \ \t\tuint8_t  opcode : 4;\n  \t\tuint8_t  aa     : 1;\n  \t\tuint8_t  tc
          \    : 1;\n  \t\tuint8_t  rd     : 1;\n\n  \t\tuint8_t  ra     : 1;\n  \t\tuint8_t
          \ z      : 1;\n  \t\tuint8_t  ad     : 1;\n  \t\tuint8_t  cd     : 1;\n
          \ \t\tuint8_t  rcode  : 4;\n#endif\n  \t}        as_bits_and_pieces;\n  \tuint16_t
          as_value;\n  }"
      - name: qdcount
        type: uint16_t
      - name: ancount
        type: uint16_t
      - name: nscount
        type: uint16_t
      - name: arcount
        type: uint16_t
      item_type: struct
      name: dnshdr
      pos:
        line_end: 76
        line_start: 40
        source_file: /src/pdns/contrib/xdp.h
    - fields:
      - name: qname[255]
        type: uint8_t
      - name: qtype
        type: uint16_t
      item_type: struct
      name: dns_qname
      pos:
        line_end: 85
        line_start: 81
        source_file: /src/pdns/contrib/xdp.h
    - fields:
      - name: cidr
        type: uint32_t
      - name: addr
        type: uint32_t
      item_type: struct
      name: CIDR4
      pos:
        line_end: 103
        line_start: 99
        source_file: /src/pdns/contrib/xdp.h
    - fields:
      - name: cidr
        type: uint32_t
      - name: addr
        type: struct in6_addr
      item_type: struct
      name: CIDR6
      pos:
        line_end: 108
        line_start: 104
        source_file: /src/pdns/contrib/xdp.h
    - fields:
      - name: addr
        type: uint32_t
      - name: port
        type: uint16_t
      item_type: struct
      name: IPv4AndPort
      pos:
        line_end: 114
        line_start: 110
        source_file: /src/pdns/contrib/xdp.h
    - fields:
      - name: addr
        type: struct in6_addr
      - name: port
        type: uint16_t
      item_type: struct
      name: IPv6AndPort
      pos:
        line_end: 120
        line_start: 116
        source_file: /src/pdns/contrib/xdp.h
    - fields:
      - name: counter
        type: uint64_t
      - name: action
        type: enum dns_action
      item_type: struct
      name: map_value
      pos:
        line_end: 129
        line_start: 125
        source_file: /src/pdns/contrib/xdp.h
    typedefs:
    - item_type: typedef
      name: uint8_t
      pos:
        line_end: 12
        line_start: 12
        source_file: /src/pdns/contrib/xdp.h
      type: __u8
    - item_type: typedef
      name: uint16_t
      pos:
        line_end: 13
        line_start: 13
        source_file: /src/pdns/contrib/xdp.h
      type: __u16
    - item_type: typedef
      name: uint32_t
      pos:
        line_end: 14
        line_start: 14
        source_file: /src/pdns/contrib/xdp.h
      type: __u32
    - item_type: typedef
      name: uint64_t
      pos:
        line_end: 15
        line_start: 15
        source_file: /src/pdns/contrib/xdp.h
      type: __u64
    union: []
